=0;){if(M in E){k=E[M].line,A===0&&(A=E[M].lineStart);break}(c.charAt(M)===`\n`||c.charAt(M)==="\\r"&&c.charAt(M+1)!==`\n`)&&(L++,A===0&&(A=M+1)),M--}var U=k+L,te=p-A;return E[p]={line:U,lineStart:A},{offset:p,line:U+1,column:te+1}}function j(c){if(!I(c))throw new Error("not a parser: "+c)}function Y(c,p){return typeof c=="string"?c.charAt(p):c[p]}function ee(c){if(typeof c!="number")throw new Error("not a number: "+c)}function ae(c){if(typeof c!="function")throw new Error("not a function: "+c)}function O(c){if(typeof c!="string")throw new Error("not a string: "+c)}var $=2,Q=3,ue=8,De=5*ue,Re=4*ue,Qt=" ";function Mt(c,p){return new Array(p+1).join(c)}function _t(c,p,E){var k=p-c.length;return k<=0?c:Mt(E,k)+c}function Ae(c,p,E,k){return{from:c-p>0?c-p:0,to:c+E>k?k:c+E}}function Bt(c,p){var E,k,L,A,M,U=p.index,te=U.offset,Ee=1;if(te===c.length)return"Got the end of the input";if(y(c)){var me=te-te%ue,dt=te-me,ve=Ae(me,De,Re+ue,c.length),ht=a(function(le){return a(function(en){return _t(en.toString(16),2,"0")},le)},function(le,en){var tn=le.length,Rt=[],nn=0;if(tn<=en)return[le.slice()];for(var rn=0;rn=4&&(E+=1),Ee=2,L=a(function(le){return le.length<=4?le.join(" "):le.slice(0,4).join(" ")+" "+le.slice(4).join(" ")},ht),(M=(8*(A.to>0?A.to-1:A.to)).toString(16).length)<2&&(M=2)}else{var Xt=c.split(/\\r\\n|[\\n\\r\\u2028\\u2029]/);E=U.column-1,k=U.line-1,A=Ae(k,$,Q,Xt.length),L=Xt.slice(A.from,A.to),M=A.to.toString().length}var ll=k-A.from;return y(c)&&(M=(8*(A.to>0?A.to-1:A.to)).toString(16).length)<2&&(M=2),o(function(le,en,tn){var Rt,nn=tn===ll,rn=nn?"> ":Qt;return Rt=y(c)?_t((8*(A.from+tn)).toString(16),M,"0"):_t((A.from+tn+1).toString(),M," "),[].concat(le,[rn+Rt+" | "+en],nn?[Qt+Mt(" ",M)+" | "+_t("",E," ")+Mt("^",Ee)]:[])},[],L).join(`\n`)}function So(c,p){return[`\n`,"-- PARSING FAILED "+Mt("-",50),`\n\n`,Bt(c,p),`\n\n`,(E=p.expected,E.length===1?`Expected:\n\n`+E[0]:`Expected one of the following: \n\n`+E.join(", ")),`\n`].join("");var E}function ko(c){return c.flags!==void 0?c.flags:[c.global?"g":"",c.ignoreCase?"i":"",c.multiline?"m":"",c.unicode?"u":"",c.sticky?"y":""].join("")}function Br(){for(var c=[].slice.call(arguments),p=c.length,E=0;E=2?ee(p):p=0;var E=function(L){return RegExp("^(?:"+L.source+")",ko(L))}(c),k=""+c;return r(function(L,A){var M=E.exec(L.slice(A));if(M){if(0<=p&&p<=M.length){var U=M[0],te=M[p];return w(A+U.length,te)}return v(A,"valid match group (0 to "+M.length+") in "+k)}return v(A,k)})}function $t(c){return r(function(p,E){return w(E,c)})}function $r(c){return r(function(p,E){return v(E,c)})}function Rr(c){if(I(c))return r(function(p,E){var k=c._(p,E);return k.index=E,k.value="",k});if(typeof c=="string")return Rr(Bn(c));if(c instanceof RegExp)return Rr(ft(c));throw new Error("not a string, regexp, or parser: "+c)}function vo(c){return j(c),r(function(p,E){var k=c._(p,E),L=p.slice(E,k.index);return k.status?v(E,\'not "\'+L+\'"\'):w(E,null)})}function jr(c){return ae(c),r(function(p,E){var k=Y(p,E);return E
=c.length?v(p,"any character/byte"):w(p+1,Y(c,p))}),tl=r(function(c,p){return w(c.length,c.slice(p))}),Ws=r(function(c,p){return p=0}).desc(p)},r.optWhitespace=ol,r.Parser=r,r.range=function(c,p){return jr(function(E){return c<=E&&E<=p}).desc(c+"-"+p)},r.regex=ft,r.regexp=ft,r.sepBy=Co,r.sepBy1=Us,r.seq=Br,r.seqMap=Pt,r.seqObj=function(){for(var c,p={},E=0,k=(c=arguments,Array.prototype.slice.call(c)),L=k.length,A=0;A255)throw new Error("Value specified to byte constructor ("+c+"=0x"+c.toString(16)+") is larger in value than a single byte.");var p=(c>15?"0x":"0x0")+c.toString(16);return r(function(E,k){var L=Y(E,k);return L===c?w(k+1,L):v(k,p)})},buffer:function(c){return m("buffer",c).map(function(p){return Buffer.from(p)})},encodedString:function(c,p){return m("string",p).map(function(E){return E.toString(c)})},uintBE:b,uint8BE:b(1),uint16BE:b(2),uint32BE:b(4),uintLE:g,uint8LE:g(1),uint16LE:g(2),uint32LE:g(4),intBE:D,int8BE:D(1),int16BE:D(2),int32BE:D(4),intLE:T,int8LE:T(1),int16LE:T(2),int32LE:T(4),floatBE:m("floatBE",4).map(function(c){return c.readFloatBE(0)}),floatLE:m("floatLE",4).map(function(c){return c.readFloatLE(0)}),doubleBE:m("doubleBE",8).map(function(c){return c.readDoubleBE(0)}),doubleLE:m("doubleLE",8).map(function(c){return c.readDoubleLE(0)})},n.exports=r}])})});var Ru=_o(Ne=>{"use strict";var Sf=Ne&&Ne.__extends||function(){var n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,s){r.__proto__=s}||function(r,s){for(var i in s)Object.prototype.hasOwnProperty.call(s,i)&&(r[i]=s[i])},n(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");n(e,t);function r(){this.constructor=e}e.prototype=t===null?Object.create(t):(r.prototype=t.prototype,new r)}}();Object.defineProperty(Ne,"__esModule",{value:!0});Ne.EmptyBTree=Ne.asSet=Ne.simpleComparator=Ne.defaultComparator=void 0;function Bu(n,e){if(Number.isFinite(n)&&Number.isFinite(e))return n-e;var t=typeof n,r=typeof e;if(t!==r)return te?1:n===e?0:Number.isNaN(n)?Number.isNaN(e)?0:-1:Number.isNaN(e)?1:Array.isArray(n)?0:Number.NaN}Ne.defaultComparator=Bu;function kf(n,e){return n>e?1:n=4?Math.min(r,256):32,this._compare=t||Bu,e&&this.setPairs(e)}return Object.defineProperty(n.prototype,"size",{get:function(){return this._size},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"length",{get:function(){return this._size},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"isEmpty",{get:function(){return this._size===0},enumerable:!1,configurable:!0}),n.prototype.clear=function(){this._root=fo,this._size=0},n.prototype.forEach=function(e,t){var r=this;return t!==void 0&&(e=e.bind(t)),this.forEachPair(function(s,i){return e(i,s,r)})},n.prototype.forEachPair=function(e,t){var r=this.minKey(),s=this.maxKey();return this.forRange(r,s,!0,e,t)},n.prototype.get=function(e,t){return this._root.get(e,t,this)},n.prototype.set=function(e,t,r){this._root.isShared&&(this._root=this._root.clone());var s=this._root.set(e,t,r,this);return s===!0||s===!1?s:(this._root=new vf([this._root,s]),!0)},n.prototype.has=function(e){return this.forRange(e,e,!0,void 0)!==0},n.prototype.delete=function(e){return this.editRange(e,e,!0,Mu)!==0},n.prototype.with=function(e,t,r){var s=this.clone();return s.set(e,t,r)||r?s:this},n.prototype.withPairs=function(e,t){var r=this.clone();return r.setPairs(e,t)!==0||t?r:this},n.prototype.withKeys=function(e,t){for(var r=this.clone(),s=!1,i=0;i=s.length){a=3;continue e}if(++i[l]0;l--)s[l-1]=s[l][i[l]].children,i[l-1]=0;o=s[0][i[0]],u=-1,a=t!==void 0?1:0;continue;case 3:return{done:!0,value:void 0}}})},n.prototype.entriesReversed=function(e,t,r){if(e===void 0&&(e=this.maxKey(),r=void 0,e===void 0))return An();var s=this.findPath(e)||this.findPath(this.maxKey()),i=s.nodequeue,o=s.nodeindex,a=s.leaf;Le(!i[0]||a===i[0][o[0]],"wat!");var u=a.indexOf(e,0,this._compare);!r&&u=0)return{done:!1,value:[a.keys[u],a.values[u]]};l=2;continue;case 1:if(--u>=0)return t[0]=a.keys[u],t[1]=a.values[u],{done:!1,value:t};l=2;case 2:for(var f=-1;;){if(++f>=i.length){l=3;continue e}if(--o[f]>=0)break}for(;f>0;f--)i[f-1]=i[f][o[f]].children,o[f-1]=i[f-1].length-1;a=i[0][o[0]],u=a.keys.length,l=t!==void 0?1:0;continue;case 3:return{done:!0,value:void 0}}})},n.prototype.findPath=function(e){var t=this._root,r,s;if(t.isLeaf)r=_u,s=_u;else{r=[],s=[];for(var i=0;!t.isLeaf;i++){if(r[i]=t.children,s[i]=e===void 0?0:t.indexOf(e,0,this._compare),s[i]>=r[i].length)return;t=r[i][s[i]]}r.reverse(),s.reverse()}return{nodequeue:r,nodeindex:s,leaf:t}},n.prototype.diffAgainst=function(e,t,r,s){if(e._compare!==this._compare)throw new Error("Tree comparators are not the same.");if(this.isEmpty||e.isEmpty)return this.isEmpty&&e.isEmpty?void 0:this.isEmpty?r===void 0?void 0:n.stepToEnd(n.makeDiffCursor(e),r):t===void 0?void 0:n.stepToEnd(n.makeDiffCursor(this),t);for(var i=this._compare,o=n.makeDiffCursor(this),a=n.makeDiffCursor(e),u=!0,l=!0,f=n.compare(o,a,i);u&&l;){var d=n.compare(o,a,i),m=o.leaf,h=o.internalSpine,b=o.levelIndices,g=a.leaf,D=a.internalSpine,T=a.levelIndices;if(m||g){if(f!==0){if(d===0){if(m&&g&&s){var I=m.values[b[b.length-1]],N=g.values[T[T.length-1]];if(!Object.is(I,N)){var y=s(o.currentKey,I,N);if(y&&y.break)return y.break}}}else if(d>0){if(g&&r){var w=g.values[T[T.length-1]],y=r(a.currentKey,w);if(y&&y.break)return y.break}}else if(t&&m&&f!==0){var I=m.values[b[b.length-1]],y=t(o.currentKey,I);if(y&&y.break)return y.break}}}else if(!m&&!g&&d===0){var v=h.length-1,x=D.length-1,C=h[v][b[v]],V=D[x][T[x]];if(V===C){f=0,u=n.step(o,!0),l=n.step(a,!0);continue}}f=d,d<0?u=n.step(o):l=n.step(a)}if(u&&t)return n.finishCursorWalk(o,a,i,t);if(l&&r)return n.finishCursorWalk(a,o,i,r)},n.finishCursorWalk=function(e,t,r,s){var i=n.compare(e,t,r);if(i===0){if(!n.step(e))return}else i<0&&Le(!1,"cursor walk terminated early");return n.stepToEnd(e,s)},n.stepToEnd=function(e,t){for(var r=!0;r;){var s=e.leaf,i=e.levelIndices,o=e.currentKey;if(s){var a=s.values[i[i.length-1]],u=t(o,a);if(u&&u.break)return u.break}r=n.step(e)}},n.makeDiffCursor=function(e){var t=e._root,r=e.height;return{height:r,internalSpine:[[t]],levelIndices:[0],leaf:void 0,currentKey:t.maxKey()}},n.step=function(e,t){var r=e.internalSpine,s=e.levelIndices,i=e.leaf;if(t===!0||i){var o=s.length;if(t===!0||s[o-1]===0){var a=r.length;if(a===0)return!1;for(var u=a-1,l=u;l>=0;){if(s[l]>0)return ls?xf:void 0}),i},n.prototype.setPairs=function(e,t){for(var r=0,s=0;s>1;i0)o=a;else{if(u===0)return a;if(e===e)return s.length;throw new Error("BTree: NaN was used as a key")}a=i+o>>1}return a^t},n.prototype.minKey=function(){return this.keys[0]},n.prototype.minPair=function(e){if(this.keys.length!==0)return e[0]=this.keys[0],e[1]=this.values[0],e},n.prototype.maxPair=function(e){if(this.keys.length!==0){var t=this.keys.length-1;return e[0]=this.keys[t],e[1]=this.values[t],e}},n.prototype.clone=function(){var e=this.values;return new n(this.keys.slice(0),e===pe?e:e.slice(0))},n.prototype.greedyClone=function(e){return this.isShared&&!e?this:this.clone()},n.prototype.get=function(e,t,r){var s=this.indexOf(e,-1,r._compare);return s<0?t:this.values[s]},n.prototype.getPairOrNextLower=function(e,t,r,s){var i=this.indexOf(e,-1,t),o=i<0?~i-1:r?i:i-1;if(o>=0)return s[0]=this.keys[o],s[1]=this.values[o],s},n.prototype.getPairOrNextHigher=function(e,t,r,s){var i=this.indexOf(e,-1,t),o=i<0?~i:r?i:i+1,a=this.keys;if(o0,"empty leaf at depth",e,"and baseIndex",r),s},n.prototype.set=function(e,t,r,s){var i=this.indexOf(e,-1,s._compare);if(i<0){if(i=~i,s._size++,this.keys.lengththis.keys.length&&(i-=this.keys.length,a=o),a.insertInLeaf(i,e,t,s),o}else return r!==!1&&(t!==void 0&&this.reifyValues(),this.keys[i]=e,this.values[i]=t),!1},n.prototype.reifyValues=function(){return this.values===pe?this.values=this.values.slice(0,this.keys.length):this.values},n.prototype.insertInLeaf=function(e,t,r,s){if(this.keys.splice(e,0,t),this.values===pe){for(;pe.length>1,t=this.keys.splice(e),r=this.values===pe?pe:this.values.splice(e);return new n(t,r)},n.prototype.forRange=function(e,t,r,s,i,o,a){var u=i._compare,l,f;if(t===e){if(!r||(f=(l=this.indexOf(e,-1,u))+1,l<0))return o}else l=this.indexOf(e,0,u),f=this.indexOf(t,-1,u),f<0?f=~f:r===!0&&f++;var d=this.keys,m=this.values;if(a!==void 0)for(var h=l;h=a.length)return this.maxPair(i);var u=a[o].getPairOrNextLower(t,r,s,i);return u===void 0&&o>0?a[o-1].maxPair(i):u},e.prototype.getPairOrNextHigher=function(t,r,s,i){var o=this.indexOf(t,0,r),a=this.children,u=a.length;if(!(o>=u)){var l=a[o].getPairOrNextHigher(t,r,s,i);return l===void 0&&o1||t>0,"internal node has length",i,"at depth",t,"baseIndex",s);for(var a=0,u=this.children,l=this.keys,f=0,d=0;d=f,"wtf",s),Le(d===0||u[d-1].constructor===u[d].constructor,"type mismatch, baseIndex:",s),u[d].maxKey()!=l[d]&&Le(!1,"keys[",d,"] =",l[d],"is wrong, should be ",u[d].maxKey(),"at depth",t,"baseIndex",s),d===0||r._compare(l[d-1],l[d])<0||Le(!1,"sort violation at depth",t,"index",d,"keys",l[d-1],l[d]);var m=f===0;return(m||f>r.maxNodeSize*o)&&Le(!1,m?"too few":"too many","children (",f,a,") at depth",t,"maxNodeSize:",r.maxNodeSize,"children.length:",o,"baseIndex:",s),a},e.prototype.set=function(t,r,s,i){var o=this.children,a=i._maxNodeSize,u=i._compare,l=Math.min(this.indexOf(t,0,u),o.length-1),f=o[l];if(f.isShared&&(o[l]=f=f.clone()),f.keys.length>=a){var d;l>0&&(d=o[l-1]).keys.length0&&(b=h,l-=this.keys.length),b.insert(l+1,m),h},e.prototype.insert=function(t,r){this.children.splice(t,0,r),this.keys.splice(t,0,r.maxKey())},e.prototype.splitOffRightSide=function(){var t=this.children.length>>1;return new e(this.children.splice(t),this.keys.splice(t))},e.prototype.takeFromRight=function(t){this.keys.push(t.keys.shift()),this.children.push(t.children.shift())},e.prototype.takeFromLeft=function(t){this.keys.unshift(t.keys.pop()),this.children.unshift(t.children.pop())},e.prototype.forRange=function(t,r,s,i,o,a,u){var l=o._compare,f=this.keys,d=this.children,m=this.indexOf(t,0,l),h=m,b=Math.min(r===t?m:this.indexOf(r,0,l),f.length-1);if(i){if(h<=b)try{for(;h<=b;h++){d[h].isShared&&(d[h]=d[h].clone());var g=d[h].forRange(t,r,s,i,o,a,u);if(f[h]=d[h].maxKey(),typeof g!="number")return g;a=g}}finally{var D=o._maxNodeSize>>1;for(m>0&&m--,h=b;h>=m;h--)d[h].keys.length<=D&&(d[h].keys.length!==0?this.tryMerge(h,o._maxNodeSize):(f.splice(h,1),d.splice(h,1)));d.length!==0&&d[0].keys.length===0&&Le(!1,"emptiness bug")}}else for(;h<=b;h++){var g=d[h].forRange(t,r,s,i,o,a,u);if(typeof g!="number")return g;a=g}return a},e.prototype.tryMerge=function(t,r){var s=this.children;return t>=0&&t+1{let i=[e(s),s];return r&&t(r[0],i[0])===r[0]?r:i},null)[1]}function Ro(n,e){return e.reduce((t,r)=>(t[r]=n[r],t),{})}function kt(n,e){return Object.prototype.hasOwnProperty.call(n,e)}function nt(n,e,t){return rr(n)&&n>=e&&n<=t}function bl(n,e){return n-e*Math.floor(n/e)}function re(n,e=2){let t=n<0,r;return t?r="-"+(""+-n).padStart(e,"0"):r=(""+n).padStart(e,"0"),r}function Dt(n){if(!(W(n)||n===null||n===""))return parseInt(n,10)}function Ct(n){if(!(W(n)||n===null||n===""))return parseFloat(n)}function sr(n){if(!(W(n)||n===null||n==="")){let e=parseFloat("0."+n)*1e3;return Math.floor(e)}}function an(n,e,t=!1){let r=10**e;return(t?Math.trunc:Math.round)(n*r)/r}function jt(n){return n%4===0&&(n%100!==0||n%400===0)}function qt(n){return jt(n)?366:365}function un(n,e){let t=bl(e-1,12)+1,r=n+(e-t)/12;return t===2?jt(r)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][t-1]}function ir(n){let e=Date.UTC(n.year,n.month-1,n.day,n.hour,n.minute,n.second,n.millisecond);return n.year<100&&n.year>=0&&(e=new Date(e),e.setUTCFullYear(e.getUTCFullYear()-1900)),+e}function ln(n){let e=(n+Math.floor(n/4)-Math.floor(n/100)+Math.floor(n/400))%7,t=n-1,r=(t+Math.floor(t/4)-Math.floor(t/100)+Math.floor(t/400))%7;return e===4||r===3?53:52}function or(n){return n>99?n:n>60?1900+n:2e3+n}function Jr(n,e,t,r=null){let s=new Date(n),i={hourCycle:"h23",year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"};r&&(i.timeZone=r);let o=R({timeZoneName:e},i),a=new Intl.DateTimeFormat(t,o).formatToParts(s).find(u=>u.type.toLowerCase()==="timezonename");return a?a.value:null}function Vt(n,e){let t=parseInt(n,10);Number.isNaN(t)&&(t=0);let r=parseInt(e,10)||0,s=t<0||Object.is(t,-0)?-r:r;return t*60+s}function ei(n){let e=Number(n);if(typeof n=="boolean"||n===""||Number.isNaN(e))throw new fe(`Invalid unit value ${n}`);return e}function cn(n,e){let t={};for(let r in n)if(kt(n,r)){let s=n[r];if(s==null)continue;t[e(r)]=ei(s)}return t}function vt(n,e){let t=Math.trunc(Math.abs(n/60)),r=Math.trunc(Math.abs(n%60)),s=n>=0?"+":"-";switch(e){case"short":return`${s}${re(t,2)}:${re(r,2)}`;case"narrow":return`${s}${t}${r>0?`:${r}`:""}`;case"techie":return`${s}${re(t,2)}${re(r,2)}`;default:throw new RangeError(`Value format ${e} is out of range for property format`)}}function ar(n){return Ro(n,["hour","minute","second","millisecond"])}var ti=/[A-Za-z_+-]{1,256}(?::?\\/[A-Za-z0-9_+-]{1,256}(?:\\/[A-Za-z0-9_+-]{1,256})?)?/;var Fl=["January","February","March","April","May","June","July","August","September","October","November","December"],ni=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],El=["J","F","M","A","M","J","J","A","S","O","N","D"];function ri(n){switch(n){case"narrow":return[...El];case"short":return[...ni];case"long":return[...Fl];case"numeric":return["1","2","3","4","5","6","7","8","9","10","11","12"];case"2-digit":return["01","02","03","04","05","06","07","08","09","10","11","12"];default:return null}}var si=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],ii=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],wl=["M","T","W","T","F","S","S"];function oi(n){switch(n){case"narrow":return[...wl];case"short":return[...ii];case"long":return[...si];case"numeric":return["1","2","3","4","5","6","7"];default:return null}}var ai=["AM","PM"],Tl=["Before Christ","Anno Domini"],Sl=["BC","AD"],kl=["B","A"];function ui(n){switch(n){case"narrow":return[...kl];case"short":return[...Sl];case"long":return[...Tl];default:return null}}function jo(n){return ai[n.hour<12?0:1]}function qo(n,e){return oi(e)[n.weekday-1]}function Vo(n,e){return ri(e)[n.month-1]}function Uo(n,e){return ui(e)[n.year<0?0:1]}function Ko(n,e,t="always",r=!1){let s={years:["year","yr."],quarters:["quarter","qtr."],months:["month","mo."],weeks:["week","wk."],days:["day","day","days"],hours:["hour","hr."],minutes:["minute","min."],seconds:["second","sec."]},i=["hours","minutes","seconds"].indexOf(n)===-1;if(t==="auto"&&i){let d=n==="days";switch(e){case 1:return d?"tomorrow":`next ${s[n][0]}`;case-1:return d?"yesterday":`last ${s[n][0]}`;case 0:return d?"today":`this ${s[n][0]}`;default:}}let o=Object.is(e,-0)||e<0,a=Math.abs(e),u=a===1,l=s[n],f=r?u?l[1]:l[2]||l[1]:u?s[n][0]:n;return o?`${a} ${f} ago`:`in ${a} ${f}`}function Wo(n,e){let t="";for(let r of n)r.literal?t+=r.val:t+=e(r.val);return t}var Cl={D:on,DD:$n,DDD:Rn,DDDD:jn,t:qn,tt:Vn,ttt:Un,tttt:Kn,T:Wn,TT:Hn,TTT:Jn,TTTT:zn,f:Yn,ff:Zn,fff:Xn,ffff:tr,F:Gn,FF:Qn,FFF:er,FFFF:nr},we=class n{static create(e,t={}){return new n(e,t)}static parseFormat(e){let t=null,r="",s=!1,i=[];for(let o=0;o0&&i.push({literal:s,val:r}),t=null,r="",s=!s):s||a===t?r+=a:(r.length>0&&i.push({literal:!1,val:r}),r=a,t=a)}return r.length>0&&i.push({literal:s,val:r}),i}static macroTokenToFormatOpts(e){return Cl[e]}constructor(e,t){this.opts=t,this.loc=e,this.systemLoc=null}formatWithSystemDefault(e,t){return this.systemLoc===null&&(this.systemLoc=this.loc.redefaultToSystem()),this.systemLoc.dtFormatter(e,R(R({},this.opts),t)).format()}formatDateTime(e,t={}){return this.loc.dtFormatter(e,R(R({},this.opts),t)).format()}formatDateTimeParts(e,t={}){return this.loc.dtFormatter(e,R(R({},this.opts),t)).formatToParts()}resolvedOptions(e,t={}){return this.loc.dtFormatter(e,R(R({},this.opts),t)).resolvedOptions()}num(e,t=0){if(this.opts.forceSimple)return re(e,t);let r=R({},this.opts);return t>0&&(r.padTo=t),this.loc.numberFormatter(r).format(e)}formatDateTimeFromString(e,t){let r=this.loc.listingMode()==="en",s=this.loc.outputCalendar&&this.loc.outputCalendar!=="gregory",i=(h,b)=>this.loc.extract(e,h,b),o=h=>e.isOffsetFixed&&e.offset===0&&h.allowZ?"Z":e.isValid?e.zone.formatOffset(e.ts,h.format):"",a=()=>r?jo(e):i({hour:"numeric",hourCycle:"h12"},"dayperiod"),u=(h,b)=>r?Vo(e,h):i(b?{month:h}:{month:h,day:"numeric"},"month"),l=(h,b)=>r?qo(e,h):i(b?{weekday:h}:{weekday:h,month:"long",day:"numeric"},"weekday"),f=h=>{let b=n.macroTokenToFormatOpts(h);return b?this.formatWithSystemDefault(e,b):h},d=h=>r?Uo(e,h):i({era:h},"era"),m=h=>{switch(h){case"S":return this.num(e.millisecond);case"u":case"SSS":return this.num(e.millisecond,3);case"s":return this.num(e.second);case"ss":return this.num(e.second,2);case"uu":return this.num(Math.floor(e.millisecond/10),2);case"uuu":return this.num(Math.floor(e.millisecond/100));case"m":return this.num(e.minute);case"mm":return this.num(e.minute,2);case"h":return this.num(e.hour%12===0?12:e.hour%12);case"hh":return this.num(e.hour%12===0?12:e.hour%12,2);case"H":return this.num(e.hour);case"HH":return this.num(e.hour,2);case"Z":return o({format:"narrow",allowZ:this.opts.allowZ});case"ZZ":return o({format:"short",allowZ:this.opts.allowZ});case"ZZZ":return o({format:"techie",allowZ:this.opts.allowZ});case"ZZZZ":return e.zone.offsetName(e.ts,{format:"short",locale:this.loc.locale});case"ZZZZZ":return e.zone.offsetName(e.ts,{format:"long",locale:this.loc.locale});case"z":return e.zoneName;case"a":return a();case"d":return s?i({day:"numeric"},"day"):this.num(e.day);case"dd":return s?i({day:"2-digit"},"day"):this.num(e.day,2);case"c":return this.num(e.weekday);case"ccc":return l("short",!0);case"cccc":return l("long",!0);case"ccccc":return l("narrow",!0);case"E":return this.num(e.weekday);case"EEE":return l("short",!1);case"EEEE":return l("long",!1);case"EEEEE":return l("narrow",!1);case"L":return s?i({month:"numeric",day:"numeric"},"month"):this.num(e.month);case"LL":return s?i({month:"2-digit",day:"numeric"},"month"):this.num(e.month,2);case"LLL":return u("short",!0);case"LLLL":return u("long",!0);case"LLLLL":return u("narrow",!0);case"M":return s?i({month:"numeric"},"month"):this.num(e.month);case"MM":return s?i({month:"2-digit"},"month"):this.num(e.month,2);case"MMM":return u("short",!1);case"MMMM":return u("long",!1);case"MMMMM":return u("narrow",!1);case"y":return s?i({year:"numeric"},"year"):this.num(e.year);case"yy":return s?i({year:"2-digit"},"year"):this.num(e.year.toString().slice(-2),2);case"yyyy":return s?i({year:"numeric"},"year"):this.num(e.year,4);case"yyyyyy":return s?i({year:"numeric"},"year"):this.num(e.year,6);case"G":return d("short");case"GG":return d("long");case"GGGGG":return d("narrow");case"kk":return this.num(e.weekYear.toString().slice(-2),2);case"kkkk":return this.num(e.weekYear,4);case"W":return this.num(e.weekNumber);case"WW":return this.num(e.weekNumber,2);case"o":return this.num(e.ordinal);case"ooo":return this.num(e.ordinal,3);case"q":return this.num(e.quarter);case"qq":return this.num(e.quarter,2);case"X":return this.num(Math.floor(e.ts/1e3));case"x":return this.num(e.ts);default:return f(h)}};return Wo(n.parseFormat(t),m)}formatDurationFromString(e,t){let r=u=>{switch(u[0]){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":return"hour";case"d":return"day";case"w":return"week";case"M":return"month";case"y":return"year";default:return null}},s=u=>l=>{let f=r(l);return f?this.num(u.get(f),l.length):l},i=n.parseFormat(t),o=i.reduce((u,{literal:l,val:f})=>l?u:u.concat(f),[]),a=e.shiftTo(...o.map(r).filter(u=>u));return Wo(i,s(a))}};var de=class{constructor(e,t){this.reason=e,this.explanation=t}toMessage(){return this.explanation?`${this.reason}: ${this.explanation}`:this.reason}};var ke=class{get type(){throw new je}get name(){throw new je}get ianaName(){return this.name}get isUniversal(){throw new je}offsetName(e,t){throw new je}formatOffset(e,t){throw new je}offset(e){throw new je}equals(e){throw new je}get isValid(){throw new je}};var ci=null,fn=class n extends ke{static get instance(){return ci===null&&(ci=new n),ci}get type(){return"system"}get name(){return new Intl.DateTimeFormat().resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(e,{format:t,locale:r}){return Jr(e,t,r)}formatOffset(e,t){return vt(this.offset(e),t)}offset(e){return-new Date(e).getTimezoneOffset()}equals(e){return e.type==="system"}get isValid(){return!0}};var Yr={};function vl(n){return Yr[n]||(Yr[n]=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:n,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",era:"short"})),Yr[n]}var xl={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};function Ol(n,e){let t=n.format(e).replace(/\\u200E/g,""),r=/(\\d+)\\/(\\d+)\\/(\\d+) (AD|BC),? (\\d+):(\\d+):(\\d+)/.exec(t),[,s,i,o,a,u,l,f]=r;return[o,s,i,a,u,l,f]}function Il(n,e){let t=n.formatToParts(e),r=[];for(let s=0;s=0?b:1e3+b,(m-h)/(60*1e3)}equals(e){return e.type==="iana"&&e.name===this.name}get isValid(){return this.valid}};var fi=null,he=class n extends ke{static get utcInstance(){return fi===null&&(fi=new n(0)),fi}static instance(e){return e===0?n.utcInstance:new n(e)}static parseSpecifier(e){if(e){let t=e.match(/^utc(?:([+-]\\d{1,2})(?::(\\d{2}))?)?$/i);if(t)return new n(Vt(t[1],t[2]))}return null}constructor(e){super(),this.fixed=e}get type(){return"fixed"}get name(){return this.fixed===0?"UTC":`UTC${vt(this.fixed,"narrow")}`}get ianaName(){return this.fixed===0?"Etc/UTC":`Etc/GMT${vt(-this.fixed,"narrow")}`}offsetName(){return this.name}formatOffset(e,t){return vt(this.fixed,t)}get isUniversal(){return!0}offset(){return this.fixed}equals(e){return e.type==="fixed"&&e.fixed===this.fixed}get isValid(){return!0}};var dn=class extends ke{constructor(e){super(),this.zoneName=e}get type(){return"invalid"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(){return null}formatOffset(){return""}offset(){return NaN}equals(){return!1}get isValid(){return!1}};function Ve(n,e){let t;if(W(n)||n===null)return e;if(n instanceof ke)return n;if(Bo(n)){let r=n.toLowerCase();return r==="local"||r==="system"?e:r==="utc"||r==="gmt"?he.utcInstance:he.parseSpecifier(r)||ge.create(n)}else return tt(n)?he.instance(n):typeof n=="object"&&n.offset&&typeof n.offset=="number"?n:new dn(n)}var Ho=()=>Date.now(),Jo="system",zo=null,Yo=null,Go=null,Zo,X=class{static get now(){return Ho}static set now(e){Ho=e}static set defaultZone(e){Jo=e}static get defaultZone(){return Ve(Jo,fn.instance)}static get defaultLocale(){return zo}static set defaultLocale(e){zo=e}static get defaultNumberingSystem(){return Yo}static set defaultNumberingSystem(e){Yo=e}static get defaultOutputCalendar(){return Go}static set defaultOutputCalendar(e){Go=e}static get throwOnInvalid(){return Zo}static set throwOnInvalid(e){Zo=e}static resetCaches(){ne.resetCache(),ge.resetCache()}};var Qo={};function Ll(n,e={}){let t=JSON.stringify([n,e]),r=Qo[t];return r||(r=new Intl.ListFormat(n,e),Qo[t]=r),r}var di={};function hi(n,e={}){let t=JSON.stringify([n,e]),r=di[t];return r||(r=new Intl.DateTimeFormat(n,e),di[t]=r),r}var mi={};function Nl(n,e={}){let t=JSON.stringify([n,e]),r=mi[t];return r||(r=new Intl.NumberFormat(n,e),mi[t]=r),r}var pi={};function Al(n,e={}){let o=e,{base:t}=o,r=Ys(o,["base"]),s=JSON.stringify([n,r]),i=pi[s];return i||(i=new Intl.RelativeTimeFormat(n,e),pi[s]=i),i}var ur=null;function Ml(){return ur||(ur=new Intl.DateTimeFormat().resolvedOptions().locale,ur)}function _l(n){let e=n.indexOf("-u-");if(e===-1)return[n];{let t,r=n.substring(0,e);try{t=hi(n).resolvedOptions()}catch(o){t=hi(r).resolvedOptions()}let{numberingSystem:s,calendar:i}=t;return[r,s,i]}}function Bl(n,e,t){return(t||e)&&(n+="-u",t&&(n+=`-ca-${t}`),e&&(n+=`-nu-${e}`)),n}function Pl(n){let e=[];for(let t=1;t<=12;t++){let r=q.utc(2016,t,1);e.push(n(r))}return e}function $l(n){let e=[];for(let t=1;t<=7;t++){let r=q.utc(2016,11,13+t);e.push(n(r))}return e}function Gr(n,e,t,r,s){let i=n.listingMode(t);return i==="error"?null:i==="en"?r(e):s(e)}function Rl(n){return n.numberingSystem&&n.numberingSystem!=="latn"?!1:n.numberingSystem==="latn"||!n.locale||n.locale.startsWith("en")||new Intl.DateTimeFormat(n.intl).resolvedOptions().numberingSystem==="latn"}var Di=class{constructor(e,t,r){this.padTo=r.padTo||0,this.floor=r.floor||!1;let a=r,{padTo:s,floor:i}=a,o=Ys(a,["padTo","floor"]);if(!t||Object.keys(o).length>0){let u=R({useGrouping:!1},r);r.padTo>0&&(u.minimumIntegerDigits=r.padTo),this.inf=Nl(e,u)}}format(e){if(this.inf){let t=this.floor?Math.floor(e):e;return this.inf.format(t)}else{let t=this.floor?Math.floor(e):an(e,3);return re(t,this.padTo)}}},yi=class{constructor(e,t,r){this.opts=r;let s;if(e.zone.isUniversal){let o=-1*(e.offset/60),a=o>=0?`Etc/GMT+${o}`:`Etc/GMT${o}`;e.offset!==0&&ge.create(a).valid?(s=a,this.dt=e):(s="UTC",r.timeZoneName?this.dt=e:this.dt=e.offset===0?e:q.fromMillis(e.ts+e.offset*60*1e3))}else e.zone.type==="system"?this.dt=e:(this.dt=e,s=e.zone.name);let i=R({},this.opts);s&&(i.timeZone=s),this.dtf=hi(t,i)}format(){return this.dtf.format(this.dt.toJSDate())}formatToParts(){return this.dtf.formatToParts(this.dt.toJSDate())}resolvedOptions(){return this.dtf.resolvedOptions()}},gi=class{constructor(e,t,r){this.opts=R({style:"long"},r),!t&&Hr()&&(this.rtf=Al(e,r))}format(e,t){return this.rtf?this.rtf.format(e,t):Ko(t,e,this.opts.numeric,this.opts.style!=="long")}formatToParts(e,t){return this.rtf?this.rtf.formatToParts(e,t):[]}},ne=class n{static fromOpts(e){return n.create(e.locale,e.numberingSystem,e.outputCalendar,e.defaultToEN)}static create(e,t,r,s=!1){let i=e||X.defaultLocale,o=i||(s?"en-US":Ml()),a=t||X.defaultNumberingSystem,u=r||X.defaultOutputCalendar;return new n(o,a,u,i)}static resetCache(){ur=null,di={},mi={},pi={}}static fromObject({locale:e,numberingSystem:t,outputCalendar:r}={}){return n.create(e,t,r)}constructor(e,t,r,s){let[i,o,a]=_l(e);this.locale=i,this.numberingSystem=t||o||null,this.outputCalendar=r||a||null,this.intl=Bl(this.locale,this.numberingSystem,this.outputCalendar),this.weekdaysCache={format:{},standalone:{}},this.monthsCache={format:{},standalone:{}},this.meridiemCache=null,this.eraCache={},this.specifiedLocale=s,this.fastNumbersCached=null}get fastNumbers(){return this.fastNumbersCached==null&&(this.fastNumbersCached=Rl(this)),this.fastNumbersCached}listingMode(){let e=this.isEnglish(),t=(this.numberingSystem===null||this.numberingSystem==="latn")&&(this.outputCalendar===null||this.outputCalendar==="gregory");return e&&t?"en":"intl"}clone(e){return!e||Object.getOwnPropertyNames(e).length===0?this:n.create(e.locale||this.specifiedLocale,e.numberingSystem||this.numberingSystem,e.outputCalendar||this.outputCalendar,e.defaultToEN||!1)}redefaultToEN(e={}){return this.clone(ye(R({},e),{defaultToEN:!0}))}redefaultToSystem(e={}){return this.clone(ye(R({},e),{defaultToEN:!1}))}months(e,t=!1,r=!0){return Gr(this,e,r,ri,()=>{let s=t?{month:e,day:"numeric"}:{month:e},i=t?"format":"standalone";return this.monthsCache[i][e]||(this.monthsCache[i][e]=Pl(o=>this.extract(o,s,"month"))),this.monthsCache[i][e]})}weekdays(e,t=!1,r=!0){return Gr(this,e,r,oi,()=>{let s=t?{weekday:e,year:"numeric",month:"long",day:"numeric"}:{weekday:e},i=t?"format":"standalone";return this.weekdaysCache[i][e]||(this.weekdaysCache[i][e]=$l(o=>this.extract(o,s,"weekday"))),this.weekdaysCache[i][e]})}meridiems(e=!0){return Gr(this,void 0,e,()=>ai,()=>{if(!this.meridiemCache){let t={hour:"numeric",hourCycle:"h12"};this.meridiemCache=[q.utc(2016,11,13,9),q.utc(2016,11,13,19)].map(r=>this.extract(r,t,"dayperiod"))}return this.meridiemCache})}eras(e,t=!0){return Gr(this,e,t,ui,()=>{let r={era:e};return this.eraCache[e]||(this.eraCache[e]=[q.utc(-40,1,1),q.utc(2017,1,1)].map(s=>this.extract(s,r,"era"))),this.eraCache[e]})}extract(e,t,r){let s=this.dtFormatter(e,t),i=s.formatToParts(),o=i.find(a=>a.type.toLowerCase()===r);return o?o.value:null}numberFormatter(e={}){return new Di(this.intl,e.forceSimple||this.fastNumbers,e)}dtFormatter(e,t={}){return new yi(e,this.intl,t)}relFormatter(e={}){return new gi(this.intl,this.isEnglish(),e)}listFormatter(e={}){return Ll(this.intl,e)}isEnglish(){return this.locale==="en"||this.locale.toLowerCase()==="en-us"||new Intl.DateTimeFormat(this.intl).resolvedOptions().locale.startsWith("en-us")}equals(e){return this.locale===e.locale&&this.numberingSystem===e.numberingSystem&&this.outputCalendar===e.outputCalendar}};function mn(...n){let e=n.reduce((t,r)=>t+r.source,"");return RegExp(`^${e}$`)}function pn(...n){return e=>n.reduce(([t,r,s],i)=>{let[o,a,u]=i(e,s);return[R(R({},t),o),a||r,u]},[{},null,1]).slice(0,2)}function Dn(n,...e){if(n==null)return[null,null];for(let[t,r]of e){let s=t.exec(n);if(s)return r(s)}return[null,null]}function ea(...n){return(e,t)=>{let r={},s;for(s=0;sh!==void 0&&(b||h&&f)?-h:h;return[{years:m(Ct(t)),months:m(Ct(r)),weeks:m(Ct(s)),days:m(Ct(i)),hours:m(Ct(o)),minutes:m(Ct(a)),seconds:m(Ct(u),u==="-0"),milliseconds:m(sr(l),d)}]}var Ql={GMT:0,EDT:-4*60,EST:-5*60,CDT:-5*60,CST:-6*60,MDT:-6*60,MST:-7*60,PDT:-7*60,PST:-8*60};function Ei(n,e,t,r,s,i,o){let a={year:e.length===2?or(Dt(e)):Dt(e),month:ni.indexOf(t)+1,day:Dt(r),hour:Dt(s),minute:Dt(i)};return o&&(a.second=Dt(o)),n&&(a.weekday=n.length>3?si.indexOf(n)+1:ii.indexOf(n)+1),a}var Xl=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|(?:([+-]\\d\\d)(\\d\\d)))$/;function ec(n){let[,e,t,r,s,i,o,a,u,l,f,d]=n,m=Ei(e,s,r,t,i,o,a),h;return u?h=Ql[u]:l?h=0:h=Vt(f,d),[m,new he(h)]}function tc(n){return n.replace(/\\([^()]*\\)|[\\n\\t]/g," ").replace(/(\\s\\s+)/g," ").trim()}var nc=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\\d\\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\\d{4}) (\\d\\d):(\\d\\d):(\\d\\d) GMT$/,rc=/^(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\\d\\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\\d\\d) (\\d\\d):(\\d\\d):(\\d\\d) GMT$/,sc=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \\d|\\d\\d) (\\d\\d):(\\d\\d):(\\d\\d) (\\d{4})$/;function Xo(n){let[,e,t,r,s,i,o,a]=n;return[Ei(e,s,r,t,i,o,a),he.utcInstance]}function ic(n){let[,e,t,r,s,i,o,a]=n;return[Ei(e,a,t,r,s,i,o),he.utcInstance]}var oc=mn(ql,Fi),ac=mn(Vl,Fi),uc=mn(Ul,Fi),lc=mn(na),sa=pn(zl,yn,lr,cr),cc=pn(Kl,yn,lr,cr),fc=pn(Wl,yn,lr,cr),dc=pn(yn,lr,cr);function ia(n){return Dn(n,[oc,sa],[ac,cc],[uc,fc],[lc,dc])}function oa(n){return Dn(tc(n),[Xl,ec])}function aa(n){return Dn(n,[nc,Xo],[rc,Xo],[sc,ic])}function ua(n){return Dn(n,[Gl,Zl])}var hc=pn(yn);function la(n){return Dn(n,[Yl,hc])}var mc=mn(Hl,Jl),pc=mn(ra),Dc=pn(yn,lr,cr);function ca(n){return Dn(n,[mc,sa],[pc,Dc])}var yc="Invalid Duration",fa={weeks:{days:7,hours:7*24,minutes:7*24*60,seconds:7*24*60*60,milliseconds:7*24*60*60*1e3},days:{hours:24,minutes:24*60,seconds:24*60*60,milliseconds:24*60*60*1e3},hours:{minutes:60,seconds:60*60,milliseconds:60*60*1e3},minutes:{seconds:60,milliseconds:60*1e3},seconds:{milliseconds:1e3}},gc=R({years:{quarters:4,months:12,weeks:52,days:365,hours:365*24,minutes:365*24*60,seconds:365*24*60*60,milliseconds:365*24*60*60*1e3},quarters:{months:3,weeks:13,days:91,hours:91*24,minutes:91*24*60,seconds:91*24*60*60,milliseconds:91*24*60*60*1e3},months:{weeks:4,days:30,hours:30*24,minutes:30*24*60,seconds:30*24*60*60,milliseconds:30*24*60*60*1e3}},fa),Me=146097/400,gn=146097/4800,bc=R({years:{quarters:4,months:12,weeks:Me/7,days:Me,hours:Me*24,minutes:Me*24*60,seconds:Me*24*60*60,milliseconds:Me*24*60*60*1e3},quarters:{months:3,weeks:Me/28,days:Me/4,hours:Me*24/4,minutes:Me*24*60/4,seconds:Me*24*60*60/4,milliseconds:Me*24*60*60*1e3/4},months:{weeks:gn/7,days:gn,hours:gn*24,minutes:gn*24*60,seconds:gn*24*60*60,milliseconds:gn*24*60*60*1e3}},fa),Kt=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],Fc=Kt.slice(0).reverse();function Ut(n,e,t=!1){let r={values:t?e.values:R(R({},n.values),e.values||{}),loc:n.loc.clone(e.loc),conversionAccuracy:e.conversionAccuracy||n.conversionAccuracy};return new B(r)}function Ec(n){return n<0?Math.floor(n):Math.ceil(n)}function da(n,e,t,r,s){let i=n[s][t],o=e[t]/i,a=Math.sign(o)===Math.sign(r[s]),u=!a&&r[s]!==0&&Math.abs(o)<=1?Ec(o):Math.trunc(o);r[s]+=u,e[t]-=u*i}function wc(n,e){Fc.reduce((t,r)=>W(e[r])?t:(t&&da(n,e,t,e,r),r),null)}var B=class n{constructor(e){let t=e.conversionAccuracy==="longterm"||!1;this.values=e.values,this.loc=e.loc||ne.create(),this.conversionAccuracy=t?"longterm":"casual",this.invalid=e.invalid||null,this.matrix=t?bc:gc,this.isLuxonDuration=!0}static fromMillis(e,t){return n.fromObject({milliseconds:e},t)}static fromObject(e,t={}){if(e==null||typeof e!="object")throw new fe(`Duration.fromObject: argument expected to be an object, got ${e===null?"null":typeof e}`);return new n({values:cn(e,n.normalizeUnit),loc:ne.fromObject(t),conversionAccuracy:t.conversionAccuracy})}static fromDurationLike(e){if(tt(e))return n.fromMillis(e);if(n.isDuration(e))return e;if(typeof e=="object")return n.fromObject(e);throw new fe(`Unknown duration argument ${e} of type ${typeof e}`)}static fromISO(e,t){let[r]=ua(e);return r?n.fromObject(r,t):n.invalid("unparsable",`the input "${e}" can\'t be parsed as ISO 8601`)}static fromISOTime(e,t){let[r]=la(e);return r?n.fromObject(r,t):n.invalid("unparsable",`the input "${e}" can\'t be parsed as ISO 8601`)}static invalid(e,t=null){if(!e)throw new fe("need to specify a reason the Duration is invalid");let r=e instanceof de?e:new de(e,t);if(X.throwOnInvalid)throw new Wr(r);return new n({invalid:r})}static normalizeUnit(e){let t={year:"years",years:"years",quarter:"quarters",quarters:"quarters",month:"months",months:"months",week:"weeks",weeks:"weeks",day:"days",days:"days",hour:"hours",hours:"hours",minute:"minutes",minutes:"minutes",second:"seconds",seconds:"seconds",millisecond:"milliseconds",milliseconds:"milliseconds"}[e&&e.toLowerCase()];if(!t)throw new sn(e);return t}static isDuration(e){return e&&e.isLuxonDuration||!1}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}toFormat(e,t={}){let r=ye(R({},t),{floor:t.round!==!1&&t.floor!==!1});return this.isValid?we.create(this.loc,r).formatDurationFromString(this,e):yc}toHuman(e={}){let t=Kt.map(r=>{let s=this.values[r];return W(s)?null:this.loc.numberFormatter(ye(R({style:"unit",unitDisplay:"long"},e),{unit:r.slice(0,-1)})).format(s)}).filter(r=>r);return this.loc.listFormatter(R({type:"conjunction",style:e.listStyle||"narrow"},e)).format(t)}toObject(){return this.isValid?R({},this.values):{}}toISO(){if(!this.isValid)return null;let e="P";return this.years!==0&&(e+=this.years+"Y"),(this.months!==0||this.quarters!==0)&&(e+=this.months+this.quarters*3+"M"),this.weeks!==0&&(e+=this.weeks+"W"),this.days!==0&&(e+=this.days+"D"),(this.hours!==0||this.minutes!==0||this.seconds!==0||this.milliseconds!==0)&&(e+="T"),this.hours!==0&&(e+=this.hours+"H"),this.minutes!==0&&(e+=this.minutes+"M"),(this.seconds!==0||this.milliseconds!==0)&&(e+=an(this.seconds+this.milliseconds/1e3,3)+"S"),e==="P"&&(e+="T0S"),e}toISOTime(e={}){if(!this.isValid)return null;let t=this.toMillis();if(t<0||t>=864e5)return null;e=R({suppressMilliseconds:!1,suppressSeconds:!1,includePrefix:!1,format:"extended"},e);let r=this.shiftTo("hours","minutes","seconds","milliseconds"),s=e.format==="basic"?"hhmm":"hh:mm";(!e.suppressSeconds||r.seconds!==0||r.milliseconds!==0)&&(s+=e.format==="basic"?"ss":":ss",(!e.suppressMilliseconds||r.milliseconds!==0)&&(s+=".SSS"));let i=r.toFormat(s);return e.includePrefix&&(i="T"+i),i}toJSON(){return this.toISO()}toString(){return this.toISO()}toMillis(){return this.as("milliseconds")}valueOf(){return this.toMillis()}plus(e){if(!this.isValid)return this;let t=n.fromDurationLike(e),r={};for(let s of Kt)(kt(t.values,s)||kt(this.values,s))&&(r[s]=t.get(s)+this.get(s));return Ut(this,{values:r},!0)}minus(e){if(!this.isValid)return this;let t=n.fromDurationLike(e);return this.plus(t.negate())}mapUnits(e){if(!this.isValid)return this;let t={};for(let r of Object.keys(this.values))t[r]=ei(e(this.values[r],r));return Ut(this,{values:t},!0)}get(e){return this[n.normalizeUnit(e)]}set(e){if(!this.isValid)return this;let t=R(R({},this.values),cn(e,n.normalizeUnit));return Ut(this,{values:t})}reconfigure({locale:e,numberingSystem:t,conversionAccuracy:r}={}){let s=this.loc.clone({locale:e,numberingSystem:t}),i={loc:s};return r&&(i.conversionAccuracy=r),Ut(this,i)}as(e){return this.isValid?this.shiftTo(e).get(e):NaN}normalize(){if(!this.isValid)return this;let e=this.toObject();return wc(this.matrix,e),Ut(this,{values:e},!0)}shiftTo(...e){if(!this.isValid)return this;if(e.length===0)return this;e=e.map(o=>n.normalizeUnit(o));let t={},r={},s=this.toObject(),i;for(let o of Kt)if(e.indexOf(o)>=0){i=o;let a=0;for(let l in r)a+=this.matrix[l][o]*r[l],r[l]=0;tt(s[o])&&(a+=s[o]);let u=Math.trunc(a);t[o]=u,r[o]=(a*1e3-u*1e3)/1e3;for(let l in s)Kt.indexOf(l)>Kt.indexOf(o)&&da(this.matrix,s,l,t,o)}else tt(s[o])&&(r[o]=s[o]);for(let o in r)r[o]!==0&&(t[i]+=o===i?r[o]:r[o]/this.matrix[i][o]);return Ut(this,{values:t},!0).normalize()}negate(){if(!this.isValid)return this;let e={};for(let t of Object.keys(this.values))e[t]=this.values[t]===0?0:-this.values[t];return Ut(this,{values:e},!0)}get years(){return this.isValid?this.values.years||0:NaN}get quarters(){return this.isValid?this.values.quarters||0:NaN}get months(){return this.isValid?this.values.months||0:NaN}get weeks(){return this.isValid?this.values.weeks||0:NaN}get days(){return this.isValid?this.values.days||0:NaN}get hours(){return this.isValid?this.values.hours||0:NaN}get minutes(){return this.isValid?this.values.minutes||0:NaN}get seconds(){return this.isValid?this.values.seconds||0:NaN}get milliseconds(){return this.isValid?this.values.milliseconds||0:NaN}get isValid(){return this.invalid===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}equals(e){if(!this.isValid||!e.isValid||!this.loc.equals(e.loc))return!1;function t(r,s){return r===void 0||r===0?s===void 0||s===0:r===s}for(let r of Kt)if(!t(this.values[r],e.values[r]))return!1;return!0}};var fr="Invalid Interval";function Tc(n,e){return!n||!n.isValid?yt.invalid("missing or invalid start"):!e||!e.isValid?yt.invalid("missing or invalid end"):ee:!1}isBefore(e){return this.isValid?this.e<=e:!1}contains(e){return this.isValid?this.s<=e&&this.e>e:!1}set({start:e,end:t}={}){return this.isValid?n.fromDateTimes(e||this.s,t||this.e):this}splitAt(...e){if(!this.isValid)return[];let t=e.map(bn).filter(o=>this.contains(o)).sort(),r=[],{s}=this,i=0;for(;s+this.e?this.e:o;r.push(n.fromDateTimes(s,a)),s=a,i+=1}return r}splitBy(e){let t=B.fromDurationLike(e);if(!this.isValid||!t.isValid||t.as("milliseconds")===0)return[];let{s:r}=this,s=1,i,o=[];for(;ru*s));i=+a>+this.e?this.e:a,o.push(n.fromDateTimes(r,i)),r=i,s+=1}return o}divideEqually(e){return this.isValid?this.splitBy(this.length()/e).slice(0,e):[]}overlaps(e){return this.e>e.s&&this.s=e.e:!1}equals(e){return!this.isValid||!e.isValid?!1:this.s.equals(e.s)&&this.e.equals(e.e)}intersection(e){if(!this.isValid)return this;let t=this.s>e.s?this.s:e.s,r=this.e=r?null:n.fromDateTimes(t,r)}union(e){if(!this.isValid)return this;let t=this.se.e?this.e:e.e;return n.fromDateTimes(t,r)}static merge(e){let[t,r]=e.sort((s,i)=>s.s-i.s).reduce(([s,i],o)=>i?i.overlaps(o)||i.abutsStart(o)?[s,i.union(o)]:[s.concat([i]),o]:[s,o],[[],null]);return r&&t.push(r),t}static xor(e){let t=null,r=0,s=[],i=e.map(u=>[{time:u.s,type:"s"},{time:u.e,type:"e"}]),o=Array.prototype.concat(...i),a=o.sort((u,l)=>u.time-l.time);for(let u of a)r+=u.type==="s"?1:-1,r===1?t=u.time:(t&&+t!=+u.time&&s.push(n.fromDateTimes(t,u.time)),t=null);return n.merge(s)}difference(...e){return n.xor([this].concat(e)).map(t=>this.intersection(t)).filter(t=>t&&!t.isEmpty())}toString(){return this.isValid?`[${this.s.toISO()} \\u2013 ${this.e.toISO()})`:fr}toISO(e){return this.isValid?`${this.s.toISO(e)}/${this.e.toISO(e)}`:fr}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:fr}toISOTime(e){return this.isValid?`${this.s.toISOTime(e)}/${this.e.toISOTime(e)}`:fr}toFormat(e,{separator:t=" \\u2013 "}={}){return this.isValid?`${this.s.toFormat(e)}${t}${this.e.toFormat(e)}`:fr}toDuration(e,t){return this.isValid?this.e.diff(this.s,e,t):B.invalid(this.invalidReason)}mapEndpoints(e){return n.fromDateTimes(e(this.s),e(this.e))}};var gt=class{static hasDST(e=X.defaultZone){let t=q.now().setZone(e).set({month:12});return!e.isUniversal&&t.offset!==t.set({month:6}).offset}static isValidIANAZone(e){return ge.isValidZone(e)}static normalizeZone(e){return Ve(e,X.defaultZone)}static months(e="long",{locale:t=null,numberingSystem:r=null,locObj:s=null,outputCalendar:i="gregory"}={}){return(s||ne.create(t,r,i)).months(e)}static monthsFormat(e="long",{locale:t=null,numberingSystem:r=null,locObj:s=null,outputCalendar:i="gregory"}={}){return(s||ne.create(t,r,i)).months(e,!0)}static weekdays(e="long",{locale:t=null,numberingSystem:r=null,locObj:s=null}={}){return(s||ne.create(t,r,null)).weekdays(e)}static weekdaysFormat(e="long",{locale:t=null,numberingSystem:r=null,locObj:s=null}={}){return(s||ne.create(t,r,null)).weekdays(e,!0)}static meridiems({locale:e=null}={}){return ne.create(e).meridiems()}static eras(e="short",{locale:t=null}={}){return ne.create(t,null,"gregory").eras(e)}static features(){return{relative:Hr()}}};function ha(n,e){let t=s=>s.toUTC(0,{keepLocalTime:!0}).startOf("day").valueOf(),r=t(e)-t(n);return Math.floor(B.fromMillis(r).as("days"))}function Sc(n,e,t){let r=[["years",(a,u)=>u.year-a.year],["quarters",(a,u)=>u.quarter-a.quarter],["months",(a,u)=>u.month-a.month+(u.year-a.year)*12],["weeks",(a,u)=>{let l=ha(a,u);return(l-l%7)/7}],["days",ha]],s={},i,o;for(let[a,u]of r)if(t.indexOf(a)>=0){i=a;let l=u(n,e);o=n.plus({[a]:l}),o>e?(n=n.plus({[a]:l-1}),l-=1):n=o,s[a]=l}return[n,s,o,i]}function ma(n,e,t,r){let[s,i,o,a]=Sc(n,e,t),u=e-s,l=t.filter(d=>["hours","minutes","seconds","milliseconds"].indexOf(d)>=0);l.length===0&&(o0?B.fromMillis(u,r).shiftTo(...l).plus(f):f}var wi={arab:"[\\u0660-\\u0669]",arabext:"[\\u06F0-\\u06F9]",bali:"[\\u1B50-\\u1B59]",beng:"[\\u09E6-\\u09EF]",deva:"[\\u0966-\\u096F]",fullwide:"[\\uFF10-\\uFF19]",gujr:"[\\u0AE6-\\u0AEF]",hanidec:"[\\u3007|\\u4E00|\\u4E8C|\\u4E09|\\u56DB|\\u4E94|\\u516D|\\u4E03|\\u516B|\\u4E5D]",khmr:"[\\u17E0-\\u17E9]",knda:"[\\u0CE6-\\u0CEF]",laoo:"[\\u0ED0-\\u0ED9]",limb:"[\\u1946-\\u194F]",mlym:"[\\u0D66-\\u0D6F]",mong:"[\\u1810-\\u1819]",mymr:"[\\u1040-\\u1049]",orya:"[\\u0B66-\\u0B6F]",tamldec:"[\\u0BE6-\\u0BEF]",telu:"[\\u0C66-\\u0C6F]",thai:"[\\u0E50-\\u0E59]",tibt:"[\\u0F20-\\u0F29]",latn:"\\\\d"},pa={arab:[1632,1641],arabext:[1776,1785],bali:[6992,7001],beng:[2534,2543],deva:[2406,2415],fullwide:[65296,65303],gujr:[2790,2799],khmr:[6112,6121],knda:[3302,3311],laoo:[3792,3801],limb:[6470,6479],mlym:[3430,3439],mong:[6160,6169],mymr:[4160,4169],orya:[2918,2927],tamldec:[3046,3055],telu:[3174,3183],thai:[3664,3673],tibt:[3872,3881]},kc=wi.hanidec.replace(/[\\[|\\]]/g,"").split("");function Da(n){let e=parseInt(n,10);if(isNaN(e)){e="";for(let t=0;t=i&&r<=o&&(e+=r-i)}}return parseInt(e,10)}else return e}function _e({numberingSystem:n},e=""){return new RegExp(`${wi[n||"latn"]}${e}`)}var Cc="missing Intl.DateTimeFormat.formatToParts support";function G(n,e=t=>t){return{regex:n,deser:([t])=>e(Da(t))}}var vc="\\xA0",ba=`[ ${vc}]`,Fa=new RegExp(ba,"g");function xc(n){return n.replace(/\\./g,"\\\\.?").replace(Fa,ba)}function ya(n){return n.replace(/\\./g,"").replace(Fa," ").toLowerCase()}function Ue(n,e){return n===null?null:{regex:RegExp(n.map(xc).join("|")),deser:([t])=>n.findIndex(r=>ya(t)===ya(r))+e}}function ga(n,e){return{regex:n,deser:([,t,r])=>Vt(t,r),groups:e}}function Ti(n){return{regex:n,deser:([e])=>e}}function Oc(n){return n.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g,"\\\\$&")}function Ic(n,e){let t=_e(e),r=_e(e,"{2}"),s=_e(e,"{3}"),i=_e(e,"{4}"),o=_e(e,"{6}"),a=_e(e,"{1,2}"),u=_e(e,"{1,3}"),l=_e(e,"{1,6}"),f=_e(e,"{1,9}"),d=_e(e,"{2,4}"),m=_e(e,"{4,6}"),h=D=>({regex:RegExp(Oc(D.val)),deser:([T])=>T,literal:!0}),g=(D=>{if(n.literal)return h(D);switch(D.val){case"G":return Ue(e.eras("short",!1),0);case"GG":return Ue(e.eras("long",!1),0);case"y":return G(l);case"yy":return G(d,or);case"yyyy":return G(i);case"yyyyy":return G(m);case"yyyyyy":return G(o);case"M":return G(a);case"MM":return G(r);case"MMM":return Ue(e.months("short",!0,!1),1);case"MMMM":return Ue(e.months("long",!0,!1),1);case"L":return G(a);case"LL":return G(r);case"LLL":return Ue(e.months("short",!1,!1),1);case"LLLL":return Ue(e.months("long",!1,!1),1);case"d":return G(a);case"dd":return G(r);case"o":return G(u);case"ooo":return G(s);case"HH":return G(r);case"H":return G(a);case"hh":return G(r);case"h":return G(a);case"mm":return G(r);case"m":return G(a);case"q":return G(a);case"qq":return G(r);case"s":return G(a);case"ss":return G(r);case"S":return G(u);case"SSS":return G(s);case"u":return Ti(f);case"uu":return Ti(a);case"uuu":return G(t);case"a":return Ue(e.meridiems(),0);case"kkkk":return G(i);case"kk":return G(d,or);case"W":return G(a);case"WW":return G(r);case"E":case"c":return G(t);case"EEE":return Ue(e.weekdays("short",!1,!1),1);case"EEEE":return Ue(e.weekdays("long",!1,!1),1);case"ccc":return Ue(e.weekdays("short",!0,!1),1);case"cccc":return Ue(e.weekdays("long",!0,!1),1);case"Z":case"ZZ":return ga(new RegExp(`([+-]${a.source})(?::(${r.source}))?`),2);case"ZZZ":return ga(new RegExp(`([+-]${a.source})(${r.source})?`),2);case"z":return Ti(/[a-z_+-/]{1,256}?/i);default:return h(D)}})(n)||{invalidReason:Cc};return g.token=n,g}var Lc={year:{"2-digit":"yy",numeric:"yyyyy"},month:{numeric:"M","2-digit":"MM",short:"MMM",long:"MMMM"},day:{numeric:"d","2-digit":"dd"},weekday:{short:"EEE",long:"EEEE"},dayperiod:"a",dayPeriod:"a",hour:{numeric:"h","2-digit":"hh"},minute:{numeric:"m","2-digit":"mm"},second:{numeric:"s","2-digit":"ss"}};function Nc(n,e,t){let{type:r,value:s}=n;if(r==="literal")return{literal:!0,val:s};let i=t[r],o=Lc[r];if(typeof o=="object"&&(o=o[i]),o)return{literal:!1,val:o}}function Ac(n){return[`^${n.map(t=>t.regex).reduce((t,r)=>`${t}(${r.source})`,"")}$`,n]}function Mc(n,e,t){let r=n.match(e);if(r){let s={},i=1;for(let o in t)if(kt(t,o)){let a=t[o],u=a.groups?a.groups+1:1;!a.literal&&a.token&&(s[a.token.val[0]]=a.deser(r.slice(i,i+u))),i+=u}return[r,s]}else return[r,{}]}function _c(n){let e=i=>{switch(i){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":case"H":return"hour";case"d":return"day";case"o":return"ordinal";case"L":case"M":return"month";case"y":return"year";case"E":case"c":return"weekday";case"W":return"weekNumber";case"k":return"weekYear";case"q":return"quarter";default:return null}},t=null,r;return W(n.z)||(t=ge.create(n.z)),W(n.Z)||(t||(t=new he(n.Z)),r=n.Z),W(n.q)||(n.M=(n.q-1)*3+1),W(n.h)||(n.h<12&&n.a===1?n.h+=12:n.h===12&&n.a===0&&(n.h=0)),n.G===0&&n.y&&(n.y=-n.y),W(n.u)||(n.S=sr(n.u)),[Object.keys(n).reduce((i,o)=>{let a=e(o);return a&&(i[a]=n[o]),i},{}),t,r]}var Si=null;function Bc(){return Si||(Si=q.fromMillis(1555555555555)),Si}function Pc(n,e){if(n.literal)return n;let t=we.macroTokenToFormatOpts(n.val);if(!t)return n;let i=we.create(e,t).formatDateTimeParts(Bc()).map(o=>Nc(o,e,t));return i.includes(void 0)?n:i}function $c(n,e){return Array.prototype.concat(...n.map(t=>Pc(t,e)))}function ki(n,e,t){let r=$c(we.parseFormat(t),n),s=r.map(o=>Ic(o,n)),i=s.find(o=>o.invalidReason);if(i)return{input:e,tokens:r,invalidReason:i.invalidReason};{let[o,a]=Ac(s),u=RegExp(o,"i"),[l,f]=Mc(e,u,a),[d,m,h]=f?_c(f):[null,null,void 0];if(kt(f,"a")&&kt(f,"H"))throw new pt("Can\'t include meridiem when specifying 24-hour format");return{input:e,tokens:r,regex:u,rawMatches:l,matches:f,result:d,zone:m,specificOffset:h}}}function Ea(n,e,t){let{result:r,zone:s,specificOffset:i,invalidReason:o}=ki(n,e,t);return[r,s,i,o]}var wa=[0,31,59,90,120,151,181,212,243,273,304,334],Ta=[0,31,60,91,121,152,182,213,244,274,305,335];function Be(n,e){return new de("unit out of range",`you specified ${e} (of type ${typeof e}) as a ${n}, which is invalid`)}function Sa(n,e,t){let r=new Date(Date.UTC(n,e-1,t));n<100&&n>=0&&r.setUTCFullYear(r.getUTCFullYear()-1900);let s=r.getUTCDay();return s===0?7:s}function ka(n,e,t){return t+(jt(n)?Ta:wa)[e-1]}function Ca(n,e){let t=jt(n)?Ta:wa,r=t.findIndex(i=>iln(e)?(a=e+1,o=1):a=e,R({weekYear:a,weekNumber:o,weekday:i},ar(n))}function Ci(n){let{weekYear:e,weekNumber:t,weekday:r}=n,s=Sa(e,1,4),i=qt(e),o=t*7+r-s-3,a;o<1?(a=e-1,o+=qt(a)):o>i?(a=e+1,o-=qt(e)):a=e;let{month:u,day:l}=Ca(a,o);return R({year:a,month:u,day:l},ar(n))}function Qr(n){let{year:e,month:t,day:r}=n,s=ka(e,t,r);return R({year:e,ordinal:s},ar(n))}function vi(n){let{year:e,ordinal:t}=n,{month:r,day:s}=Ca(e,t);return R({year:e,month:r,day:s},ar(n))}function va(n){let e=rr(n.weekYear),t=nt(n.weekNumber,1,ln(n.weekYear)),r=nt(n.weekday,1,7);return e?t?r?!1:Be("weekday",n.weekday):Be("week",n.week):Be("weekYear",n.weekYear)}function xa(n){let e=rr(n.year),t=nt(n.ordinal,1,qt(n.year));return e?t?!1:Be("ordinal",n.ordinal):Be("year",n.year)}function xi(n){let e=rr(n.year),t=nt(n.month,1,12),r=nt(n.day,1,un(n.year,n.month));return e?t?r?!1:Be("day",n.day):Be("month",n.month):Be("year",n.year)}function Oi(n){let{hour:e,minute:t,second:r,millisecond:s}=n,i=nt(e,0,23)||e===24&&t===0&&r===0&&s===0,o=nt(t,0,59),a=nt(r,0,59),u=nt(s,0,999);return i?o?a?u?!1:Be("millisecond",s):Be("second",r):Be("minute",t):Be("hour",e)}var Ii="Invalid DateTime",Oa=864e13;function Xr(n){return new de("unsupported zone",`the zone "${n.name}" is not supported`)}function Li(n){return n.weekData===null&&(n.weekData=Zr(n.c)),n.weekData}function dr(n,e){let t={ts:n.ts,zone:n.zone,c:n.c,o:n.o,loc:n.loc,invalid:n.invalid};return new q(ye(R(R({},t),e),{old:t}))}function Pa(n,e,t){let r=n-e*60*1e3,s=t.offset(r);if(e===s)return[r,e];r-=(s-e)*60*1e3;let i=t.offset(r);return s===i?[r,s]:[n-Math.min(s,i)*60*1e3,Math.max(s,i)]}function Ia(n,e){n+=e*60*1e3;let t=new Date(n);return{year:t.getUTCFullYear(),month:t.getUTCMonth()+1,day:t.getUTCDate(),hour:t.getUTCHours(),minute:t.getUTCMinutes(),second:t.getUTCSeconds(),millisecond:t.getUTCMilliseconds()}}function ts(n,e,t){return Pa(ir(n),e,t)}function La(n,e){let t=n.o,r=n.c.year+Math.trunc(e.years),s=n.c.month+Math.trunc(e.months)+Math.trunc(e.quarters)*3,i=ye(R({},n.c),{year:r,month:s,day:Math.min(n.c.day,un(r,s))+Math.trunc(e.days)+Math.trunc(e.weeks)*7}),o=B.fromObject({years:e.years-Math.trunc(e.years),quarters:e.quarters-Math.trunc(e.quarters),months:e.months-Math.trunc(e.months),weeks:e.weeks-Math.trunc(e.weeks),days:e.days-Math.trunc(e.days),hours:e.hours,minutes:e.minutes,seconds:e.seconds,milliseconds:e.milliseconds}).as("milliseconds"),a=ir(i),[u,l]=Pa(a,t,n.zone);return o!==0&&(u+=o,l=n.zone.offset(u)),{ts:u,o:l}}function hr(n,e,t,r,s,i){let{setZone:o,zone:a}=t;if(n&&Object.keys(n).length!==0){let u=e||a,l=q.fromObject(n,ye(R({},t),{zone:u,specificOffset:i}));return o?l:l.setZone(a)}else return q.invalid(new de("unparsable",`the input "${s}" can\'t be parsed as ${r}`))}function es(n,e,t=!0){return n.isValid?we.create(ne.create("en-US"),{allowZ:t,forceSimple:!0}).formatDateTimeFromString(n,e):null}function Ni(n,e){let t=n.c.year>9999||n.c.year<0,r="";return t&&n.c.year>=0&&(r+="+"),r+=re(n.c.year,t?6:4),e?(r+="-",r+=re(n.c.month),r+="-",r+=re(n.c.day)):(r+=re(n.c.month),r+=re(n.c.day)),r}function Na(n,e,t,r,s,i){let o=re(n.c.hour);return e?(o+=":",o+=re(n.c.minute),(n.c.second!==0||!t)&&(o+=":")):o+=re(n.c.minute),(n.c.second!==0||!t)&&(o+=re(n.c.second),(n.c.millisecond!==0||!r)&&(o+=".",o+=re(n.c.millisecond,3))),s&&(n.isOffsetFixed&&n.offset===0&&!i?o+="Z":n.o<0?(o+="-",o+=re(Math.trunc(-n.o/60)),o+=":",o+=re(Math.trunc(-n.o%60))):(o+="+",o+=re(Math.trunc(n.o/60)),o+=":",o+=re(Math.trunc(n.o%60)))),i&&(o+="["+n.zone.ianaName+"]"),o}var $a={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},Rc={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},jc={ordinal:1,hour:0,minute:0,second:0,millisecond:0},Ra=["year","month","day","hour","minute","second","millisecond"],qc=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],Vc=["year","ordinal","hour","minute","second","millisecond"];function Aa(n){let e={year:"year",years:"year",month:"month",months:"month",day:"day",days:"day",hour:"hour",hours:"hour",minute:"minute",minutes:"minute",quarter:"quarter",quarters:"quarter",second:"second",seconds:"second",millisecond:"millisecond",milliseconds:"millisecond",weekday:"weekday",weekdays:"weekday",weeknumber:"weekNumber",weeksnumber:"weekNumber",weeknumbers:"weekNumber",weekyear:"weekYear",weekyears:"weekYear",ordinal:"ordinal"}[n.toLowerCase()];if(!e)throw new sn(n);return e}function Ma(n,e){let t=Ve(e.zone,X.defaultZone),r=ne.fromObject(e),s=X.now(),i,o;if(W(n.year))i=s;else{for(let l of Ra)W(n[l])&&(n[l]=$a[l]);let a=xi(n)||Oi(n);if(a)return q.invalid(a);let u=t.offset(s);[i,o]=ts(n,u,t)}return new q({ts:i,zone:t,loc:r,o})}function _a(n,e,t){let r=W(t.round)?!0:t.round,s=(o,a)=>(o=an(o,r||t.calendary?0:2,!0),e.loc.clone(t).relFormatter(t).format(o,a)),i=o=>t.calendary?e.hasSame(n,o)?0:e.startOf(o).diff(n.startOf(o),o).get(o):e.diff(n,o).get(o);if(t.unit)return s(i(t.unit),t.unit);for(let o of t.units){let a=i(o);if(Math.abs(a)>=1)return s(a,o)}return s(n>e?-0:0,t.units[t.units.length-1])}function Ba(n){let e={},t;return n.length>0&&typeof n[n.length-1]=="object"?(e=n[n.length-1],t=Array.from(n).slice(0,n.length-1)):t=Array.from(n),[e,t]}var q=class n{constructor(e){let t=e.zone||X.defaultZone,r=e.invalid||(Number.isNaN(e.ts)?new de("invalid input"):null)||(t.isValid?null:Xr(t));this.ts=W(e.ts)?X.now():e.ts;let s=null,i=null;if(!r)if(e.old&&e.old.ts===this.ts&&e.old.zone.equals(t))[s,i]=[e.old.c,e.old.o];else{let a=t.offset(this.ts);s=Ia(this.ts,a),r=Number.isNaN(s.year)?new de("invalid input"):null,s=r?null:s,i=r?null:a}this._zone=t,this.loc=e.loc||ne.create(),this.invalid=r,this.weekData=null,this.c=s,this.o=i,this.isLuxonDateTime=!0}static now(){return new n({})}static local(){let[e,t]=Ba(arguments),[r,s,i,o,a,u,l]=t;return Ma({year:r,month:s,day:i,hour:o,minute:a,second:u,millisecond:l},e)}static utc(){let[e,t]=Ba(arguments),[r,s,i,o,a,u,l]=t;return e.zone=he.utcInstance,Ma({year:r,month:s,day:i,hour:o,minute:a,second:u,millisecond:l},e)}static fromJSDate(e,t={}){let r=Po(e)?e.valueOf():NaN;if(Number.isNaN(r))return n.invalid("invalid input");let s=Ve(t.zone,X.defaultZone);return s.isValid?new n({ts:r,zone:s,loc:ne.fromObject(t)}):n.invalid(Xr(s))}static fromMillis(e,t={}){if(tt(e))return e<-Oa||e>Oa?n.invalid("Timestamp out of range"):new n({ts:e,zone:Ve(t.zone,X.defaultZone),loc:ne.fromObject(t)});throw new fe(`fromMillis requires a numerical input, but received a ${typeof e} with value ${e}`)}static fromSeconds(e,t={}){if(tt(e))return new n({ts:e*1e3,zone:Ve(t.zone,X.defaultZone),loc:ne.fromObject(t)});throw new fe("fromSeconds requires a numerical input")}static fromObject(e,t={}){e=e||{};let r=Ve(t.zone,X.defaultZone);if(!r.isValid)return n.invalid(Xr(r));let s=X.now(),i=W(t.specificOffset)?r.offset(s):t.specificOffset,o=cn(e,Aa),a=!W(o.ordinal),u=!W(o.year),l=!W(o.month)||!W(o.day),f=u||l,d=o.weekYear||o.weekNumber,m=ne.fromObject(t);if((f||a)&&d)throw new pt("Can\'t mix weekYear/weekNumber units with year/month/day or ordinals");if(l&&a)throw new pt("Can\'t mix ordinal dates with month/day");let h=d||o.weekday&&!f,b,g,D=Ia(s,i);h?(b=qc,g=Rc,D=Zr(D)):a?(b=Vc,g=jc,D=Qr(D)):(b=Ra,g=$a);let T=!1;for(let C of b){let V=o[C];W(V)?T?o[C]=g[C]:o[C]=D[C]:T=!0}let I=h?va(o):a?xa(o):xi(o),N=I||Oi(o);if(N)return n.invalid(N);let y=h?Ci(o):a?vi(o):o,[w,v]=ts(y,i,r),x=new n({ts:w,zone:r,o:v,loc:m});return o.weekday&&f&&e.weekday!==x.weekday?n.invalid("mismatched weekday",`you can\'t specify both a weekday of ${o.weekday} and a date of ${x.toISO()}`):x}static fromISO(e,t={}){let[r,s]=ia(e);return hr(r,s,t,"ISO 8601",e)}static fromRFC2822(e,t={}){let[r,s]=oa(e);return hr(r,s,t,"RFC 2822",e)}static fromHTTP(e,t={}){let[r,s]=aa(e);return hr(r,s,t,"HTTP",t)}static fromFormat(e,t,r={}){if(W(e)||W(t))throw new fe("fromFormat requires an input string and a format");let{locale:s=null,numberingSystem:i=null}=r,o=ne.fromOpts({locale:s,numberingSystem:i,defaultToEN:!0}),[a,u,l,f]=Ea(o,e,t);return f?n.invalid(f):hr(a,u,r,`format ${t}`,e,l)}static fromString(e,t,r={}){return n.fromFormat(e,t,r)}static fromSQL(e,t={}){let[r,s]=ca(e);return hr(r,s,t,"SQL",e)}static invalid(e,t=null){if(!e)throw new fe("need to specify a reason the DateTime is invalid");let r=e instanceof de?e:new de(e,t);if(X.throwOnInvalid)throw new Ur(r);return new n({invalid:r})}static isDateTime(e){return e&&e.isLuxonDateTime||!1}get(e){return this[e]}get isValid(){return this.invalid===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}get outputCalendar(){return this.isValid?this.loc.outputCalendar:null}get zone(){return this._zone}get zoneName(){return this.isValid?this.zone.name:null}get year(){return this.isValid?this.c.year:NaN}get quarter(){return this.isValid?Math.ceil(this.c.month/3):NaN}get month(){return this.isValid?this.c.month:NaN}get day(){return this.isValid?this.c.day:NaN}get hour(){return this.isValid?this.c.hour:NaN}get minute(){return this.isValid?this.c.minute:NaN}get second(){return this.isValid?this.c.second:NaN}get millisecond(){return this.isValid?this.c.millisecond:NaN}get weekYear(){return this.isValid?Li(this).weekYear:NaN}get weekNumber(){return this.isValid?Li(this).weekNumber:NaN}get weekday(){return this.isValid?Li(this).weekday:NaN}get ordinal(){return this.isValid?Qr(this.c).ordinal:NaN}get monthShort(){return this.isValid?gt.months("short",{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?gt.months("long",{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?gt.weekdays("short",{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?gt.weekdays("long",{locObj:this.loc})[this.weekday-1]:null}get offset(){return this.isValid?+this.o:NaN}get offsetNameShort(){return this.isValid?this.zone.offsetName(this.ts,{format:"short",locale:this.locale}):null}get offsetNameLong(){return this.isValid?this.zone.offsetName(this.ts,{format:"long",locale:this.locale}):null}get isOffsetFixed(){return this.isValid?this.zone.isUniversal:null}get isInDST(){return this.isOffsetFixed?!1:this.offset>this.set({month:1,day:1}).offset||this.offset>this.set({month:5}).offset}get isInLeapYear(){return jt(this.year)}get daysInMonth(){return un(this.year,this.month)}get daysInYear(){return this.isValid?qt(this.year):NaN}get weeksInWeekYear(){return this.isValid?ln(this.weekYear):NaN}resolvedLocaleOptions(e={}){let{locale:t,numberingSystem:r,calendar:s}=we.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:t,numberingSystem:r,outputCalendar:s}}toUTC(e=0,t={}){return this.setZone(he.instance(e),t)}toLocal(){return this.setZone(X.defaultZone)}setZone(e,{keepLocalTime:t=!1,keepCalendarTime:r=!1}={}){if(e=Ve(e,X.defaultZone),e.equals(this.zone))return this;if(e.isValid){let s=this.ts;if(t||r){let i=e.offset(this.ts),o=this.toObject();[s]=ts(o,i,e)}return dr(this,{ts:s,zone:e})}else return n.invalid(Xr(e))}reconfigure({locale:e,numberingSystem:t,outputCalendar:r}={}){let s=this.loc.clone({locale:e,numberingSystem:t,outputCalendar:r});return dr(this,{loc:s})}setLocale(e){return this.reconfigure({locale:e})}set(e){if(!this.isValid)return this;let t=cn(e,Aa),r=!W(t.weekYear)||!W(t.weekNumber)||!W(t.weekday),s=!W(t.ordinal),i=!W(t.year),o=!W(t.month)||!W(t.day),a=i||o,u=t.weekYear||t.weekNumber;if((a||s)&&u)throw new pt("Can\'t mix weekYear/weekNumber units with year/month/day or ordinals");if(o&&s)throw new pt("Can\'t mix ordinal dates with month/day");let l;r?l=Ci(R(R({},Zr(this.c)),t)):W(t.ordinal)?(l=R(R({},this.toObject()),t),W(t.day)&&(l.day=Math.min(un(l.year,l.month),l.day))):l=vi(R(R({},Qr(this.c)),t));let[f,d]=ts(l,this.o,this.zone);return dr(this,{ts:f,o:d})}plus(e){if(!this.isValid)return this;let t=B.fromDurationLike(e);return dr(this,La(this,t))}minus(e){if(!this.isValid)return this;let t=B.fromDurationLike(e).negate();return dr(this,La(this,t))}startOf(e){if(!this.isValid)return this;let t={},r=B.normalizeUnit(e);switch(r){case"years":t.month=1;case"quarters":case"months":t.day=1;case"weeks":case"days":t.hour=0;case"hours":t.minute=0;case"minutes":t.second=0;case"seconds":t.millisecond=0;break;case"milliseconds":break}if(r==="weeks"&&(t.weekday=1),r==="quarters"){let s=Math.ceil(this.month/3);t.month=(s-1)*3+1}return this.set(t)}endOf(e){return this.isValid?this.plus({[e]:1}).startOf(e).minus(1):this}toFormat(e,t={}){return this.isValid?we.create(this.loc.redefaultToEN(t)).formatDateTimeFromString(this,e):Ii}toLocaleString(e=on,t={}){return this.isValid?we.create(this.loc.clone(t),e).formatDateTime(this):Ii}toLocaleParts(e={}){return this.isValid?we.create(this.loc.clone(e),e).formatDateTimeParts(this):[]}toISO({format:e="extended",suppressSeconds:t=!1,suppressMilliseconds:r=!1,includeOffset:s=!0,extendedZone:i=!1}={}){if(!this.isValid)return null;let o=e==="extended",a=Ni(this,o);return a+="T",a+=Na(this,o,t,r,s,i),a}toISODate({format:e="extended"}={}){return this.isValid?Ni(this,e==="extended"):null}toISOWeekDate(){return es(this,"kkkk-\'W\'WW-c")}toISOTime({suppressMilliseconds:e=!1,suppressSeconds:t=!1,includeOffset:r=!0,includePrefix:s=!1,extendedZone:i=!1,format:o="extended"}={}){return this.isValid?(s?"T":"")+Na(this,o==="extended",t,e,r,i):null}toRFC2822(){return es(this,"EEE, dd LLL yyyy HH:mm:ss ZZZ",!1)}toHTTP(){return es(this.toUTC(),"EEE, dd LLL yyyy HH:mm:ss \'GMT\'")}toSQLDate(){return this.isValid?Ni(this,!0):null}toSQLTime({includeOffset:e=!0,includeZone:t=!1,includeOffsetSpace:r=!0}={}){let s="HH:mm:ss.SSS";return(t||e)&&(r&&(s+=" "),t?s+="z":e&&(s+="ZZ")),es(this,s,!0)}toSQL(e={}){return this.isValid?`${this.toSQLDate()} ${this.toSQLTime(e)}`:null}toString(){return this.isValid?this.toISO():Ii}valueOf(){return this.toMillis()}toMillis(){return this.isValid?this.ts:NaN}toSeconds(){return this.isValid?this.ts/1e3:NaN}toUnixInteger(){return this.isValid?Math.floor(this.ts/1e3):NaN}toJSON(){return this.toISO()}toBSON(){return this.toJSDate()}toObject(e={}){if(!this.isValid)return{};let t=R({},this.c);return e.includeConfig&&(t.outputCalendar=this.outputCalendar,t.numberingSystem=this.loc.numberingSystem,t.locale=this.loc.locale),t}toJSDate(){return new Date(this.isValid?this.ts:NaN)}diff(e,t="milliseconds",r={}){if(!this.isValid||!e.isValid)return B.invalid("created by diffing an invalid DateTime");let s=R({locale:this.locale,numberingSystem:this.numberingSystem},r),i=$o(t).map(B.normalizeUnit),o=e.valueOf()>this.valueOf(),a=o?this:e,u=o?e:this,l=ma(a,u,i,s);return o?l.negate():l}diffNow(e="milliseconds",t={}){return this.diff(n.now(),e,t)}until(e){return this.isValid?yt.fromDateTimes(this,e):this}hasSame(e,t){if(!this.isValid)return!1;let r=e.valueOf(),s=this.setZone(e.zone,{keepLocalTime:!0});return s.startOf(t)<=r&&r<=s.endOf(t)}equals(e){return this.isValid&&e.isValid&&this.valueOf()===e.valueOf()&&this.zone.equals(e.zone)&&this.loc.equals(e.loc)}toRelative(e={}){if(!this.isValid)return null;let t=e.base||n.fromObject({},{zone:this.zone}),r=e.padding?thist.valueOf(),Math.min)}static max(...e){if(!e.every(n.isDateTime))throw new fe("max requires all arguments be DateTimes");return Xs(e,t=>t.valueOf(),Math.max)}static fromFormatExplain(e,t,r={}){let{locale:s=null,numberingSystem:i=null}=r,o=ne.fromOpts({locale:s,numberingSystem:i,defaultToEN:!0});return ki(o,e,t)}static fromStringExplain(e,t,r={}){return n.fromFormatExplain(e,t,r)}static get DATE_SHORT(){return on}static get DATE_MED(){return $n}static get DATE_MED_WITH_WEEKDAY(){return Gs}static get DATE_FULL(){return Rn}static get DATE_HUGE(){return jn}static get TIME_SIMPLE(){return qn}static get TIME_WITH_SECONDS(){return Vn}static get TIME_WITH_SHORT_OFFSET(){return Un}static get TIME_WITH_LONG_OFFSET(){return Kn}static get TIME_24_SIMPLE(){return Wn}static get TIME_24_WITH_SECONDS(){return Hn}static get TIME_24_WITH_SHORT_OFFSET(){return Jn}static get TIME_24_WITH_LONG_OFFSET(){return zn}static get DATETIME_SHORT(){return Yn}static get DATETIME_SHORT_WITH_SECONDS(){return Gn}static get DATETIME_MED(){return Zn}static get DATETIME_MED_WITH_SECONDS(){return Qn}static get DATETIME_MED_WITH_WEEKDAY(){return Zs}static get DATETIME_FULL(){return Xn}static get DATETIME_FULL_WITH_SECONDS(){return er}static get DATETIME_HUGE(){return tr}static get DATETIME_HUGE_WITH_SECONDS(){return nr}};function bn(n){if(q.isDateTime(n))return n;if(n&&n.valueOf&&tt(n.valueOf()))return q.fromJSDate(n);if(n&&typeof n=="object")return q.fromObject(n);throw new fe(`Unknown datetime argument: ${n}, of type ${typeof n}`)}var bt=Vr(ns());var Fn=()=>/[#*0-9]\\uFE0F?\\u20E3|[\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u23CF\\u23ED-\\u23EF\\u23F1\\u23F2\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB\\u25FC\\u25FE\\u2600-\\u2604\\u260E\\u2611\\u2614\\u2615\\u2618\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u2648-\\u2653\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u267F\\u2692\\u2694-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A7\\u26AA\\u26B0\\u26B1\\u26BD\\u26BE\\u26C4\\u26C8\\u26CF\\u26D1\\u26E9\\u26F0-\\u26F5\\u26F7\\u26F8\\u26FA\\u2702\\u2708\\u2709\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2733\\u2734\\u2744\\u2747\\u2757\\u2763\\u27A1\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B55\\u3030\\u303D\\u3297\\u3299]\\uFE0F?|[\\u261D\\u270C\\u270D](?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?|[\\u270A\\u270B](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u2693\\u26A1\\u26AB\\u26C5\\u26CE\\u26D4\\u26EA\\u26FD\\u2705\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2795-\\u2797\\u27B0\\u27BF\\u2B50]|\\u26D3\\uFE0F?(?:\\u200D\\uD83D\\uDCA5)?|\\u26F9(?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\u2764\\uFE0F?(?:\\u200D(?:\\uD83D\\uDD25|\\uD83E\\uDE79))?|\\uD83C(?:[\\uDC04\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDE02\\uDE37\\uDF21\\uDF24-\\uDF2C\\uDF36\\uDF7D\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E\\uDF9F\\uDFCD\\uDFCE\\uDFD4-\\uDFDF\\uDFF5\\uDFF7]\\uFE0F?|[\\uDF85\\uDFC2\\uDFC7](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDFC4\\uDFCA](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDFCB\\uDFCC](?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF43\\uDF45-\\uDF4A\\uDF4C-\\uDF7C\\uDF7E-\\uDF84\\uDF86-\\uDF93\\uDFA0-\\uDFC1\\uDFC5\\uDFC6\\uDFC8\\uDFC9\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF8-\\uDFFF]|\\uDDE6\\uD83C[\\uDDE8-\\uDDEC\\uDDEE\\uDDF1\\uDDF2\\uDDF4\\uDDF6-\\uDDFA\\uDDFC\\uDDFD\\uDDFF]|\\uDDE7\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEF\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9\\uDDFB\\uDDFC\\uDDFE\\uDDFF]|\\uDDE8\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDEE\\uDDF0-\\uDDF7\\uDDFA-\\uDDFF]|\\uDDE9\\uD83C[\\uDDEA\\uDDEC\\uDDEF\\uDDF0\\uDDF2\\uDDF4\\uDDFF]|\\uDDEA\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDED\\uDDF7-\\uDDFA]|\\uDDEB\\uD83C[\\uDDEE-\\uDDF0\\uDDF2\\uDDF4\\uDDF7]|\\uDDEC\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEE\\uDDF1-\\uDDF3\\uDDF5-\\uDDFA\\uDDFC\\uDDFE]|\\uDDED\\uD83C[\\uDDF0\\uDDF2\\uDDF3\\uDDF7\\uDDF9\\uDDFA]|\\uDDEE\\uD83C[\\uDDE8-\\uDDEA\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9]|\\uDDEF\\uD83C[\\uDDEA\\uDDF2\\uDDF4\\uDDF5]|\\uDDF0\\uD83C[\\uDDEA\\uDDEC-\\uDDEE\\uDDF2\\uDDF3\\uDDF5\\uDDF7\\uDDFC\\uDDFE\\uDDFF]|\\uDDF1\\uD83C[\\uDDE6-\\uDDE8\\uDDEE\\uDDF0\\uDDF7-\\uDDFB\\uDDFE]|\\uDDF2\\uD83C[\\uDDE6\\uDDE8-\\uDDED\\uDDF0-\\uDDFF]|\\uDDF3\\uD83C[\\uDDE6\\uDDE8\\uDDEA-\\uDDEC\\uDDEE\\uDDF1\\uDDF4\\uDDF5\\uDDF7\\uDDFA\\uDDFF]|\\uDDF4\\uD83C\\uDDF2|\\uDDF5\\uD83C[\\uDDE6\\uDDEA-\\uDDED\\uDDF0-\\uDDF3\\uDDF7-\\uDDF9\\uDDFC\\uDDFE]|\\uDDF6\\uD83C\\uDDE6|\\uDDF7\\uD83C[\\uDDEA\\uDDF4\\uDDF8\\uDDFA\\uDDFC]|\\uDDF8\\uD83C[\\uDDE6-\\uDDEA\\uDDEC-\\uDDF4\\uDDF7-\\uDDF9\\uDDFB\\uDDFD-\\uDDFF]|\\uDDF9\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDED\\uDDEF-\\uDDF4\\uDDF7\\uDDF9\\uDDFB\\uDDFC\\uDDFF]|\\uDDFA\\uD83C[\\uDDE6\\uDDEC\\uDDF2\\uDDF3\\uDDF8\\uDDFE\\uDDFF]|\\uDDFB\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDEE\\uDDF3\\uDDFA]|\\uDDFC\\uD83C[\\uDDEB\\uDDF8]|\\uDDFD\\uD83C\\uDDF0|\\uDDFE\\uD83C[\\uDDEA\\uDDF9]|\\uDDFF\\uD83C[\\uDDE6\\uDDF2\\uDDFC]|\\uDF44(?:\\u200D\\uD83D\\uDFEB)?|\\uDF4B(?:\\u200D\\uD83D\\uDFE9)?|\\uDFC3(?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D(?:[\\u2640\\u2642]\\uFE0F?(?:\\u200D\\u27A1\\uFE0F?)?|\\u27A1\\uFE0F?))?|\\uDFF3\\uFE0F?(?:\\u200D(?:\\u26A7\\uFE0F?|\\uD83C\\uDF08))?|\\uDFF4(?:\\u200D\\u2620\\uFE0F?|\\uDB40\\uDC67\\uDB40\\uDC62\\uDB40(?:\\uDC65\\uDB40\\uDC6E\\uDB40\\uDC67|\\uDC73\\uDB40\\uDC63\\uDB40\\uDC74|\\uDC77\\uDB40\\uDC6C\\uDB40\\uDC73)\\uDB40\\uDC7F)?)|\\uD83D(?:[\\uDC3F\\uDCFD\\uDD49\\uDD4A\\uDD6F\\uDD70\\uDD73\\uDD76-\\uDD79\\uDD87\\uDD8A-\\uDD8D\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA\\uDECB\\uDECD-\\uDECF\\uDEE0-\\uDEE5\\uDEE9\\uDEF0\\uDEF3]\\uFE0F?|[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDC8F\\uDC91\\uDCAA\\uDD7A\\uDD95\\uDD96\\uDE4C\\uDE4F\\uDEC0\\uDECC](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4\\uDEB5](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDD74\\uDD90](?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?|[\\uDC00-\\uDC07\\uDC09-\\uDC14\\uDC16-\\uDC25\\uDC27-\\uDC3A\\uDC3C-\\uDC3E\\uDC40\\uDC44\\uDC45\\uDC51-\\uDC65\\uDC6A\\uDC79-\\uDC7B\\uDC7D-\\uDC80\\uDC84\\uDC88-\\uDC8E\\uDC90\\uDC92-\\uDCA9\\uDCAB-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDDA4\\uDDFB-\\uDE2D\\uDE2F-\\uDE34\\uDE37-\\uDE41\\uDE43\\uDE44\\uDE48-\\uDE4A\\uDE80-\\uDEA2\\uDEA4-\\uDEB3\\uDEB7-\\uDEBF\\uDEC1-\\uDEC5\\uDED0-\\uDED2\\uDED5-\\uDED7\\uDEDC-\\uDEDF\\uDEEB\\uDEEC\\uDEF4-\\uDEFC\\uDFE0-\\uDFEB\\uDFF0]|\\uDC08(?:\\u200D\\u2B1B)?|\\uDC15(?:\\u200D\\uD83E\\uDDBA)?|\\uDC26(?:\\u200D(?:\\u2B1B|\\uD83D\\uDD25))?|\\uDC3B(?:\\u200D\\u2744\\uFE0F?)?|\\uDC41\\uFE0F?(?:\\u200D\\uD83D\\uDDE8\\uFE0F?)?|\\uDC68(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDC68\\uDC69]\\u200D\\uD83D(?:\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?)|[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?)|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFC-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFE])))?))?|\\uDC69(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?[\\uDC68\\uDC69]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?|\\uDC69\\u200D\\uD83D(?:\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?))|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFC-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB-\\uDFFE])))?))?|\\uDC6F(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\uDD75(?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\uDE2E(?:\\u200D\\uD83D\\uDCA8)?|\\uDE35(?:\\u200D\\uD83D\\uDCAB)?|\\uDE36(?:\\u200D\\uD83C\\uDF2B\\uFE0F?)?|\\uDE42(?:\\u200D[\\u2194\\u2195]\\uFE0F?)?|\\uDEB6(?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D(?:[\\u2640\\u2642]\\uFE0F?(?:\\u200D\\u27A1\\uFE0F?)?|\\u27A1\\uFE0F?))?)|\\uD83E(?:[\\uDD0C\\uDD0F\\uDD18-\\uDD1F\\uDD30-\\uDD34\\uDD36\\uDD77\\uDDB5\\uDDB6\\uDDBB\\uDDD2\\uDDD3\\uDDD5\\uDEC3-\\uDEC5\\uDEF0\\uDEF2-\\uDEF8](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD\\uDDCF\\uDDD4\\uDDD6-\\uDDDD](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDDDE\\uDDDF](?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDD0D\\uDD0E\\uDD10-\\uDD17\\uDD20-\\uDD25\\uDD27-\\uDD2F\\uDD3A\\uDD3F-\\uDD45\\uDD47-\\uDD76\\uDD78-\\uDDB4\\uDDB7\\uDDBA\\uDDBC-\\uDDCC\\uDDD0\\uDDE0-\\uDDFF\\uDE70-\\uDE7C\\uDE80-\\uDE89\\uDE8F-\\uDEC2\\uDEC6\\uDECE-\\uDEDC\\uDEDF-\\uDEE9]|\\uDD3C(?:\\u200D[\\u2640\\u2642]\\uFE0F?|\\uD83C[\\uDFFB-\\uDFFF])?|\\uDDCE(?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D(?:[\\u2640\\u2642]\\uFE0F?(?:\\u200D\\u27A1\\uFE0F?)?|\\u27A1\\uFE0F?))?|\\uDDD1(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1|\\uDDD1\\u200D\\uD83E\\uDDD2(?:\\u200D\\uD83E\\uDDD2)?|\\uDDD2(?:\\u200D\\uD83E\\uDDD2)?))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFC-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFD-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFD\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFE]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?))?|\\uDEF1(?:\\uD83C(?:\\uDFFB(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFC-\\uDFFF])?|\\uDFFC(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])?|\\uDFFD(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])?|\\uDFFE(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])?|\\uDFFF(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB-\\uDFFE])?))?)/g;function Mi(n){return n==null?n:n.shiftTo("years","months","weeks","days","hours","minutes","seconds","milliseconds").normalize()}function ja(n,e,t,r){return n.second==0&&n.minute==0&&n.hour==0?n.toLocal().toFormat(e,{locale:r}):n.toLocal().toFormat(t,{locale:r})}function qa(n){n=Mi(n);let e="";return n.years&&(e+=`${n.years} years, `),n.months&&(e+=`${n.months} months, `),n.weeks&&(e+=`${n.weeks} weeks, `),n.days&&(e+=`${n.days} days, `),n.hours&&(e+=`${n.hours} hours, `),n.minutes&&(e+=`${n.minutes} minutes, `),n.seconds&&(e+=`${Math.round(n.seconds)} seconds, `),n.milliseconds&&(e+=`${Math.round(n.milliseconds)} ms, `),e.endsWith(", ")&&(e=e.substring(0,e.length-2)),e}function En(n){return n.includes("/")&&(n=n.substring(n.lastIndexOf("/")+1)),n.endsWith(".md")&&(n=n.substring(0,n.length-3)),n}function Va(n){return n.includes(".")?n.substring(n.lastIndexOf(".")+1):""}var Uc=bt.alt(bt.regex(new RegExp(Fn(),"")),bt.regex(/[0-9\\p{Letter}_-]+/u),bt.whitespace.map(n=>" "),bt.any.map(n=>" ")).many().map(n=>n.join("").split(/\\s+/).join(" ").trim());function Ua(n){return Uc.tryParse(n)}var Oe=class n{static file(e,t=!1,r){return new n({path:e,embed:t,display:r,subpath:void 0,type:"file"})}static infer(e,t=!1,r){if(e.includes("#^")){let s=e.split("#^");return n.block(s[0],s[1],t,r)}else if(e.includes("#")){let s=e.split("#");return n.header(s[0],s[1],t,r)}else return n.file(e,t,r)}static header(e,t,r,s){return new n({path:e,embed:r,display:s,subpath:Ua(t),type:"header"})}static block(e,t,r,s){return new n({path:e,embed:r,display:s,subpath:t,type:"block"})}static fromObject(e){return new n(e)}static parseInner(e){let[t,r]=Kc(e);return n.infer(t,!1,r)}constructor(e){Object.assign(this,e)}withPath(e){return new n(Object.assign({},this,{path:e}))}withDisplay(e){return new n(Object.assign({},this,{display:e}))}withEmbed(e){return this.embed==e?this:new n(Object.assign({},this,{embed:e}))}withHeader(e){return n.header(this.path,e,this.embed,this.display)}withBlock(e){return n.block(this.path,e,this.embed,this.display)}equals(e){return e==null||e==null?!1:this.path==e.path&&this.type==e.type&&this.subpath==e.subpath}toString(){return this.markdown()}toObject(){return{path:this.path,type:this.type,subpath:this.subpath,display:this.display,embed:this.embed}}toFile(){return n.file(this.path,this.embed,this.display)}toEmbed(){return this.withEmbed(!0)}fromEmbed(){return this.withEmbed(!1)}markdown(){let e=(this.embed?"!":"")+"[["+this.obsidianLink();return e+="|",e+=this.displayOrDefault(),e+="]]",e}displayOrDefault(){if(this.display)return this.display;{let e=En(this.path);return(this.type=="header"||this.type=="block")&&(e+=" > "+this.subpath),e}}obsidianLink(){var t,r;let e=this.path.replace("|","\\\\|");return this.type=="header"?e+"#"+((t=this.subpath)==null?void 0:t.replace("|","\\\\|")):this.type=="block"?e+"#^"+((r=this.subpath)==null?void 0:r.replace("|","\\\\|")):e}fileName(){return En(this.path)}};function Kc(n){let e=-1;for(;(e=n.indexOf("|",e+1))>=0;)if(!(e>0&&n[e-1]=="\\\\"))return[n.substring(0,e).replace(/\\\\\\|/g,"|"),n.substring(e+1)];return[n.replace(/\\\\\\|/g,"|"),void 0]}var rs=Symbol.for("yaml.alias"),ss=Symbol.for("yaml.document"),Ke=Symbol.for("yaml.map"),_i=Symbol.for("yaml.pair"),Ie=Symbol.for("yaml.scalar"),Ft=Symbol.for("yaml.seq"),Te=Symbol.for("yaml.node.type"),We=n=>!!n&&typeof n=="object"&&n[Te]===rs,rt=n=>!!n&&typeof n=="object"&&n[Te]===ss,He=n=>!!n&&typeof n=="object"&&n[Te]===Ke,H=n=>!!n&&typeof n=="object"&&n[Te]===_i,K=n=>!!n&&typeof n=="object"&&n[Te]===Ie,Je=n=>!!n&&typeof n=="object"&&n[Te]===Ft;function Z(n){if(n&&typeof n=="object")switch(n[Te]){case Ke:case Ft:return!0}return!1}function J(n){if(n&&typeof n=="object")switch(n[Te]){case rs:case Ke:case Ie:case Ft:return!0}return!1}var Ka=n=>(K(n)||Z(n))&&!!n.anchor;var Ce=Symbol("break visit"),Wa=Symbol("skip children"),st=Symbol("remove node");function ze(n,e){let t=Ha(e);rt(n)?wn(null,n.contents,t,Object.freeze([n]))===st&&(n.contents=null):wn(null,n,t,Object.freeze([]))}ze.BREAK=Ce;ze.SKIP=Wa;ze.REMOVE=st;function wn(n,e,t,r){let s=Ja(n,e,t,r);if(J(s)||H(s))return za(n,r,s),wn(n,s,t,r);if(typeof s!="symbol"){if(Z(e)){r=Object.freeze(r.concat(e));for(let i=0;in.replace(/[!,[\\]{}]/g,e=>Wc[e]),it=class n{constructor(e,t){this.docStart=null,this.docEnd=!1,this.yaml=Object.assign({},n.defaultYaml,e),this.tags=Object.assign({},n.defaultTags,t)}clone(){let e=new n(this.yaml,this.tags);return e.docStart=this.docStart,e}atDocument(){let e=new n(this.yaml,this.tags);switch(this.yaml.version){case"1.1":this.atNextDocument=!0;break;case"1.2":this.atNextDocument=!1,this.yaml={explicit:n.defaultYaml.explicit,version:"1.2"},this.tags=Object.assign({},n.defaultTags);break}return e}add(e,t){this.atNextDocument&&(this.yaml={explicit:n.defaultYaml.explicit,version:"1.1"},this.tags=Object.assign({},n.defaultTags),this.atNextDocument=!1);let r=e.trim().split(/[ \\t]+/),s=r.shift();switch(s){case"%TAG":{if(r.length!==2&&(t(0,"%TAG directive should contain exactly two parts"),r.length<2))return!1;let[i,o]=r;return this.tags[i]=o,!0}case"%YAML":{if(this.yaml.explicit=!0,r.length!==1)return t(0,"%YAML directive should contain exactly one part"),!1;let[i]=r;if(i==="1.1"||i==="1.2")return this.yaml.version=i,!0;{let o=/^\\d+\\.\\d+$/.test(i);return t(6,`Unsupported YAML version ${i}`,o),!1}}default:return t(0,`Unknown directive ${s}`,!0),!1}}tagName(e,t){if(e==="!")return"!";if(e[0]!=="!")return t(`Not a valid tag: ${e}`),null;if(e[1]==="<"){let o=e.slice(2,-1);return o==="!"||o==="!!"?(t(`Verbatim tags aren\'t resolved, so ${e} is invalid.`),null):(e[e.length-1]!==">"&&t("Verbatim tags must end with a >"),o)}let[,r,s]=e.match(new RegExp("^(.*!)([^!]*)$","s"));s||t(`The ${e} tag has no suffix`);let i=this.tags[r];if(i)try{return i+decodeURIComponent(s)}catch(o){return t(String(o)),null}return r==="!"?e:(t(`Could not resolve tag: ${e}`),null)}tagString(e){for(let[t,r]of Object.entries(this.tags))if(e.startsWith(r))return t+Hc(e.substring(r.length));return e[0]==="!"?e:`!<${e}>`}toString(e){let t=this.yaml.explicit?[`%YAML ${this.yaml.version||"1.2"}`]:[],r=Object.entries(this.tags),s;if(e&&r.length>0&&J(e.contents)){let i={};ze(e.contents,(o,a)=>{J(a)&&a.tag&&(i[a.tag]=!0)}),s=Object.keys(i)}else s=[];for(let[i,o]of r)i==="!!"&&o==="tag:yaml.org,2002:"||(!e||s.some(a=>a.startsWith(o)))&&t.push(`%TAG ${i} ${o}`);return t.join(`\n`)}};it.defaultYaml={explicit:!1,version:"1.2"};it.defaultTags={"!!":"tag:yaml.org,2002:"};function os(n){if(/[\\x00-\\x19\\s,[\\]{}]/.test(n)){let t=`Anchor must not contain whitespace or control characters: ${JSON.stringify(n)}`;throw new Error(t)}return!0}function Bi(n){let e=new Set;return ze(n,{Value(t,r){r.anchor&&e.add(r.anchor)}}),e}function Pi(n,e){for(let t=1;;++t){let r=`${n}${t}`;if(!e.has(r))return r}}function Ya(n,e){let t=[],r=new Map,s=null;return{onAnchor:i=>{t.push(i),s||(s=Bi(n));let o=Pi(e,s);return s.add(o),o},setAnchors:()=>{for(let i of t){let o=r.get(i);if(typeof o=="object"&&o.anchor&&(K(o.node)||Z(o.node)))o.node.anchor=o.anchor;else{let a=new Error("Failed to resolve repeated object (this should not happen)");throw a.source=i,a}}},sourceObjects:r}}function xt(n,e,t,r){if(r&&typeof r=="object")if(Array.isArray(r))for(let s=0,i=r.length;sce(r,String(s),t));if(n&&typeof n.toJSON=="function"){if(!t||!Ka(n))return n.toJSON(e,t);let r={aliasCount:0,count:1,res:void 0};t.anchors.set(n,r),t.onCreate=i=>{r.res=i,delete t.onCreate};let s=n.toJSON(e,t);return t.onCreate&&t.onCreate(s),s}return typeof n=="bigint"&&!(t!=null&&t.keep)?Number(n):n}var Ot=class{constructor(e){Object.defineProperty(this,Te,{value:e})}clone(){let e=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return this.range&&(e.range=this.range.slice()),e}toJS(e,{mapAsMap:t,maxAliasCount:r,onAnchor:s,reviver:i}={}){if(!rt(e))throw new TypeError("A document argument is required");let o={anchors:new Map,doc:e,keep:!0,mapAsMap:t===!0,mapKeyWarned:!1,maxAliasCount:typeof r=="number"?r:100},a=ce(this,"",o);if(typeof s=="function")for(let{count:u,res:l}of o.anchors.values())s(l,u);return typeof i=="function"?xt(i,{"":a},"",a):a}};var Et=class extends Ot{constructor(e){super(rs),this.source=e,Object.defineProperty(this,"tag",{set(){throw new Error("Alias nodes cannot have tags")}})}resolve(e){let t;return ze(e,{Node:(r,s)=>{if(s===this)return ze.BREAK;s.anchor===this.source&&(t=s)}}),t}toJSON(e,t){if(!t)return{source:this.source};let{anchors:r,doc:s,maxAliasCount:i}=t,o=this.resolve(s);if(!o){let u=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw new ReferenceError(u)}let a=r.get(o);if(a||(ce(o,null,t),a=r.get(o)),!a||a.res===void 0){let u="This should not happen: Alias anchor was not resolved?";throw new ReferenceError(u)}if(i>=0&&(a.count+=1,a.aliasCount===0&&(a.aliasCount=as(s,o,r)),a.count*a.aliasCount>i)){let u="Excessive alias count indicates a resource exhaustion attack";throw new ReferenceError(u)}return a.res}toString(e,t,r){let s=`*${this.source}`;if(e){if(os(this.source),e.options.verifyAliasOrder&&!e.anchors.has(this.source)){let i=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw new Error(i)}if(e.implicitKey)return`${s} `}return s}};function as(n,e,t){if(We(e)){let r=e.resolve(n),s=t&&r&&t.get(r);return s?s.count*s.aliasCount:0}else if(Z(e)){let r=0;for(let s of e.items){let i=as(n,s,t);i>r&&(r=i)}return r}else if(H(e)){let r=as(n,e.key,t),s=as(n,e.value,t);return Math.max(r,s)}return 1}var us=n=>!n||typeof n!="function"&&typeof n!="object",P=class extends Ot{constructor(e){super(Ie),this.value=e}toJSON(e,t){return t!=null&&t.keep?this.value:ce(this.value,e,t)}toString(){return String(this.value)}};P.BLOCK_FOLDED="BLOCK_FOLDED";P.BLOCK_LITERAL="BLOCK_LITERAL";P.PLAIN="PLAIN";P.QUOTE_DOUBLE="QUOTE_DOUBLE";P.QUOTE_SINGLE="QUOTE_SINGLE";var Jc="tag:yaml.org,2002:";function zc(n,e,t){var r;if(e){let s=t.filter(o=>o.tag===e),i=(r=s.find(o=>!o.format))!=null?r:s[0];if(!i)throw new Error(`Tag ${e} not found`);return i}return t.find(s=>{var i;return((i=s.identify)==null?void 0:i.call(s,n))&&!s.format})}function wt(n,e,t){var d,m,h;if(rt(n)&&(n=n.contents),J(n))return n;if(H(n)){let b=(m=(d=t.schema[Ke]).createNode)==null?void 0:m.call(d,t.schema,null,t);return b.items.push(n),b}(n instanceof String||n instanceof Number||n instanceof Boolean||typeof BigInt!="undefined"&&n instanceof BigInt)&&(n=n.valueOf());let{aliasDuplicateObjects:r,onAnchor:s,onTagObj:i,schema:o,sourceObjects:a}=t,u;if(r&&n&&typeof n=="object"){if(u=a.get(n),u)return u.anchor||(u.anchor=s(n)),new Et(u.anchor);u={anchor:null,node:null},a.set(n,u)}e!=null&&e.startsWith("!!")&&(e=Jc+e.slice(2));let l=zc(n,e,o.tags);if(!l){if(n&&typeof n.toJSON=="function"&&(n=n.toJSON()),!n||typeof n!="object"){let b=new P(n);return u&&(u.node=b),b}l=n instanceof Map?o[Ke]:Symbol.iterator in Object(n)?o[Ft]:o[Ke]}i&&(i(l),delete t.onTagObj);let f=l!=null&&l.createNode?l.createNode(t.schema,n,t):typeof((h=l==null?void 0:l.nodeClass)==null?void 0:h.from)=="function"?l.nodeClass.from(t.schema,n,t):new P(n);return e?f.tag=e:l.default||(f.tag=l.tag),u&&(u.node=f),f}function pr(n,e,t){let r=t;for(let s=e.length-1;s>=0;--s){let i=e[s];if(typeof i=="number"&&Number.isInteger(i)&&i>=0){let o=[];o[i]=r,r=o}else r=new Map([[i,r]])}return wt(r,void 0,{aliasDuplicateObjects:!1,keepUndefined:!1,onAnchor:()=>{throw new Error("This should not happen, please report a bug.")},schema:n,sourceObjects:new Map})}var kn=n=>n==null||typeof n=="object"&&!!n[Symbol.iterator]().next().done,Sn=class extends Ot{constructor(e,t){super(e),Object.defineProperty(this,"schema",{value:t,configurable:!0,enumerable:!1,writable:!0})}clone(e){let t=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return e&&(t.schema=e),t.items=t.items.map(r=>J(r)||H(r)?r.clone(e):r),this.range&&(t.range=this.range.slice()),t}addIn(e,t){if(kn(e))this.add(t);else{let[r,...s]=e,i=this.get(r,!0);if(Z(i))i.addIn(s,t);else if(i===void 0&&this.schema)this.set(r,pr(this.schema,s,t));else throw new Error(`Expected YAML collection at ${r}. Remaining path: ${s}`)}}deleteIn(e){let[t,...r]=e;if(r.length===0)return this.delete(t);let s=this.get(t,!0);if(Z(s))return s.deleteIn(r);throw new Error(`Expected YAML collection at ${t}. Remaining path: ${r}`)}getIn(e,t){let[r,...s]=e,i=this.get(r,!0);return s.length===0?!t&&K(i)?i.value:i:Z(i)?i.getIn(s,t):void 0}hasAllNullValues(e){return this.items.every(t=>{if(!H(t))return!1;let r=t.value;return r==null||e&&K(r)&&r.value==null&&!r.commentBefore&&!r.comment&&!r.tag})}hasIn(e){let[t,...r]=e;if(r.length===0)return this.has(t);let s=this.get(t,!0);return Z(s)?s.hasIn(r):!1}setIn(e,t){let[r,...s]=e;if(s.length===0)this.set(r,t);else{let i=this.get(r,!0);if(Z(i))i.setIn(s,t);else if(i===void 0&&this.schema)this.set(r,pr(this.schema,s,t));else throw new Error(`Expected YAML collection at ${r}. Remaining path: ${s}`)}}};var Ga=n=>n.replace(/^(?!$)(?: $)?/gm,"#");function Pe(n,e){return/^\\n+$/.test(n)?n.substring(1):e?n.replace(/^(?! *$)/gm,e):n}var ot=(n,e,t)=>n.endsWith(`\n`)?Pe(t,e):t.includes(`\n`)?`\n`+Pe(t,e):(n.endsWith(" ")?"":" ")+t;var $i="flow",ls="block",Dr="quoted";function yr(n,e,t="flow",{indentAtStart:r,lineWidth:s=80,minContentWidth:i=20,onFold:o,onOverflow:a}={}){if(!s||s<0)return n;ss-Math.max(2,i)?l.push(0):d=s-r);let m,h,b=!1,g=-1,D=-1,T=-1;t===ls&&(g=Za(n,g,e.length),g!==-1&&(d=g+u));for(let N;N=n[g+=1];){if(t===Dr&&N==="\\\\"){switch(D=g,n[g+1]){case"x":g+=3;break;case"u":g+=5;break;case"U":g+=9;break;default:g+=1}T=g}if(N===`\n`)t===ls&&(g=Za(n,g,e.length)),d=g+e.length+u,m=void 0;else{if(N===" "&&h&&h!==" "&&h!==`\n`&&h!==" "){let y=n[g+1];y&&y!==" "&&y!==`\n`&&y!==" "&&(m=g)}if(g>=d)if(m)l.push(m),d=m+u,m=void 0;else if(t===Dr){for(;h===" "||h===" ";)h=N,N=n[g+=1],b=!0;let y=g>T+1?g-2:D-1;if(f[y])return n;l.push(y),f[y]=!0,d=y+u,m=void 0}else b=!0}h=N}if(b&&a&&a(),l.length===0)return n;o&&o();let I=n.slice(0,l[0]);for(let N=0;N({indentAtStart:e?n.indent.length:n.indentAtStart,lineWidth:n.options.lineWidth,minContentWidth:n.options.minContentWidth}),ds=n=>/^(%|---|\\.\\.\\.)/m.test(n);function Yc(n,e,t){if(!e||e<0)return!1;let r=e-t,s=n.length;if(s<=r)return!1;for(let i=0,o=0;ir)return!0;if(o=i+1,s-o<=r)return!1}return!0}function gr(n,e){let t=JSON.stringify(n);if(e.options.doubleQuotedAsJSON)return t;let{implicitKey:r}=e,s=e.options.doubleQuotedMinMultiLineLength,i=e.indent||(ds(n)?" ":""),o="",a=0;for(let u=0,l=t[u];l;l=t[++u])if(l===" "&&t[u+1]==="\\\\"&&t[u+2]==="n"&&(o+=t.slice(a,u)+"\\\\ ",u+=1,a=u,l="\\\\"),l==="\\\\")switch(t[u+1]){case"u":{o+=t.slice(a,u);let f=t.substr(u+2,4);switch(f){case"0000":o+="\\\\0";break;case"0007":o+="\\\\a";break;case"000b":o+="\\\\v";break;case"001b":o+="\\\\e";break;case"0085":o+="\\\\N";break;case"00a0":o+="\\\\_";break;case"2028":o+="\\\\L";break;case"2029":o+="\\\\P";break;default:f.substr(0,2)==="00"?o+="\\\\x"+f.substr(2):o+=t.substr(u,6)}u+=5,a=u+1}break;case"n":if(r||t[u+2]===\'"\'||t.length\n`;let d,m;for(m=t.length;m>0;--m){let v=t[m-1];if(v!==`\n`&&v!==" "&&v!==" ")break}let h=t.substring(m),b=h.indexOf(`\n`);b===-1?d="-":t===h||b!==h.length-1?(d="+",i&&i()):d="",h&&(t=t.slice(0,-h.length),h[h.length-1]===`\n`&&(h=h.slice(0,-1)),h=h.replace(ji,`$&${l}`));let g=!1,D,T=-1;for(D=0;D")+(g?l?"2":"1":"")+d;if(n&&(y+=" "+a(n.replace(/ ?[\\r\\n]+/g," ")),s&&s()),f)return t=t.replace(/\\n+/g,`$&${l}`),`${y}\n${l}${I}${t}${h}`;t=t.replace(/\\n+/g,`\n$&`).replace(/(?:^|\\n)([\\t ].*)(?:([\\n\\t ]*)\\n(?![\\n\\t ]))?/g,"$1$2").replace(/\\n+/g,`$&${l}`);let w=yr(`${I}${t}${h}`,l,ls,fs(r,!0));return`${y}\n${l}${w}`}function Gc(n,e,t,r){let{type:s,value:i}=n,{actualString:o,implicitKey:a,indent:u,indentStep:l,inFlow:f}=e;if(a&&i.includes(`\n`)||f&&/[[\\]{},]/.test(i))return Cn(i,e);if(!i||/^[\\n\\t ,[\\]{}#&*!|>\'"%@`]|^[?-]$|^[?-][ \\t]|[\\n:][ \\t]|[ \\t]\\n|[\\n\\t ]#|[\\n\\t :]$/.test(i))return a||f||!i.includes(`\n`)?Cn(i,e):cs(n,e,t,r);if(!a&&!f&&s!==P.PLAIN&&i.includes(`\n`))return cs(n,e,t,r);if(ds(i)){if(u==="")return e.forceBlockIndent=!0,cs(n,e,t,r);if(a&&u===l)return Cn(i,e)}let d=i.replace(/\\n+/g,`$&\n${u}`);if(o){let m=g=>{var D;return g.default&&g.tag!=="tag:yaml.org,2002:str"&&((D=g.test)==null?void 0:D.test(d))},{compat:h,tags:b}=e.doc.schema;if(b.some(m)||h!=null&&h.some(m))return Cn(i,e)}return a?d:yr(d,u,$i,fs(e,!1))}function Wt(n,e,t,r){let{implicitKey:s,inFlow:i}=e,o=typeof n.value=="string"?n:Object.assign({},n,{value:String(n.value)}),{type:a}=n;a!==P.QUOTE_DOUBLE&&/[\\x00-\\x08\\x0b-\\x1f\\x7f-\\x9f\\u{D800}-\\u{DFFF}]/u.test(o.value)&&(a=P.QUOTE_DOUBLE);let u=f=>{switch(f){case P.BLOCK_FOLDED:case P.BLOCK_LITERAL:return s||i?Cn(o.value,e):cs(o,e,t,r);case P.QUOTE_DOUBLE:return gr(o.value,e);case P.QUOTE_SINGLE:return Ri(o.value,e);case P.PLAIN:return Gc(o,e,t,r);default:return null}},l=u(a);if(l===null){let{defaultKeyType:f,defaultStringType:d}=e.options,m=s&&f||d;if(l=u(m),l===null)throw new Error(`Unsupported default string type ${m}`)}return l}function hs(n,e){let t=Object.assign({blockQuote:!0,commentString:Ga,defaultKeyType:null,defaultStringType:"PLAIN",directives:null,doubleQuotedAsJSON:!1,doubleQuotedMinMultiLineLength:40,falseStr:"false",flowCollectionPadding:!0,indentSeq:!0,lineWidth:80,minContentWidth:20,nullStr:"null",simpleKeys:!1,singleQuote:null,trueStr:"true",verifyAliasOrder:!0},n.schema.toStringOptions,e),r;switch(t.collectionStyle){case"block":r=!1;break;case"flow":r=!0;break;default:r=null}return{anchors:new Set,doc:n,flowCollectionPadding:t.flowCollectionPadding?" ":"",indent:"",indentStep:typeof t.indent=="number"?" ".repeat(t.indent):" ",inFlow:r,options:t}}function Zc(n,e){var s,i,o,a;if(e.tag){let u=n.filter(l=>l.tag===e.tag);if(u.length>0)return(s=u.find(l=>l.format===e.format))!=null?s:u[0]}let t,r;if(K(e)){r=e.value;let u=n.filter(l=>{var f;return(f=l.identify)==null?void 0:f.call(l,r)});if(u.length>1){let l=u.filter(f=>f.test);l.length>0&&(u=l)}t=(i=u.find(l=>l.format===e.format))!=null?i:u.find(l=>!l.format)}else r=e,t=n.find(u=>u.nodeClass&&r instanceof u.nodeClass);if(!t){let u=(a=(o=r==null?void 0:r.constructor)==null?void 0:o.name)!=null?a:typeof r;throw new Error(`Tag not resolved for ${u} value`)}return t}function Qc(n,e,{anchors:t,doc:r}){if(!r.directives)return"";let s=[],i=(K(n)||Z(n))&&n.anchor;i&&os(i)&&(t.add(i),s.push(`&${i}`));let o=n.tag?n.tag:e.default?null:e.tag;return o&&s.push(r.directives.tagString(o)),s.join(" ")}function Tt(n,e,t,r){var u,l;if(H(n))return n.toString(e,t,r);if(We(n)){if(e.doc.directives)return n.toString(e);if((u=e.resolvedAliases)!=null&&u.has(n))throw new TypeError("Cannot stringify circular structure without alias nodes");e.resolvedAliases?e.resolvedAliases.add(n):e.resolvedAliases=new Set([n]),n=n.resolve(e.doc)}let s,i=J(n)?n:e.doc.createNode(n,{onTagObj:f=>s=f});s||(s=Zc(e.doc.schema.tags,i));let o=Qc(i,s,e);o.length>0&&(e.indentAtStart=((l=e.indentAtStart)!=null?l:0)+o.length+1);let a=typeof s.stringify=="function"?s.stringify(i,e,t,r):K(i)?Wt(i,e,t,r):i.toString(e,t,r);return o?K(i)||a[0]==="{"||a[0]==="["?`${o} ${a}`:`${o}\n${e.indent}${a}`:a}function Qa({key:n,value:e},t,r,s){var x,C;let{allNullValues:i,doc:o,indent:a,indentStep:u,options:{commentString:l,indentSeq:f,simpleKeys:d}}=t,m=J(n)&&n.comment||null;if(d){if(m)throw new Error("With simple keys, key nodes cannot have comments");if(Z(n)||!J(n)&&typeof n=="object"){let V="With simple keys, collection cannot be used as a key value";throw new Error(V)}}let h=!d&&(!n||m&&e==null&&!t.inFlow||Z(n)||(K(n)?n.type===P.BLOCK_FOLDED||n.type===P.BLOCK_LITERAL:typeof n=="object"));t=Object.assign({},t,{allNullValues:!1,implicitKey:!h&&(d||!i),indent:a+u});let b=!1,g=!1,D=Tt(n,t,()=>b=!0,()=>g=!0);if(!h&&!t.inFlow&&D.length>1024){if(d)throw new Error("With simple keys, single line scalar must not span more than 1024 characters");h=!0}if(t.inFlow){if(i||e==null)return b&&r&&r(),D===""?"?":h?`? ${D}`:D}else if(i&&!d||e==null&&h)return D=`? ${D}`,m&&!b?D+=ot(D,t.indent,l(m)):g&&s&&s(),D;b&&(m=null),h?(m&&(D+=ot(D,t.indent,l(m))),D=`? ${D}\n${a}:`):(D=`${D}:`,m&&(D+=ot(D,t.indent,l(m))));let T,I,N;J(e)?(T=!!e.spaceBefore,I=e.commentBefore,N=e.comment):(T=!1,I=null,N=null,e&&typeof e=="object"&&(e=o.createNode(e))),t.implicitKey=!1,!h&&!m&&K(e)&&(t.indentAtStart=D.length+1),g=!1,!f&&u.length>=2&&!t.inFlow&&!h&&Je(e)&&!e.flow&&!e.tag&&!e.anchor&&(t.indent=t.indent.substring(2));let y=!1,w=Tt(e,t,()=>y=!0,()=>g=!0),v=" ";if(m||T||I){if(v=T?`\n`:"",I){let V=l(I);v+=`\n${Pe(V,t.indent)}`}w===""&&!t.inFlow?v===`\n`&&(v=`\n\n`):v+=`\n${t.indent}`}else if(!h&&Z(e)){let V=w[0],j=w.indexOf(`\n`),Y=j!==-1,ee=(C=(x=t.inFlow)!=null?x:e.flow)!=null?C:e.items.length===0;if(Y||!ee){let ae=!1;if(Y&&(V==="&"||V==="!")){let O=w.indexOf(" ");V==="&"&&O!==-1&&On===ps||typeof n=="symbol"&&n.description===ps,default:"key",tag:"tag:yaml.org,2002:merge",test:/^<<$/,resolve:()=>Object.assign(new P(Symbol(ps)),{addToJSMap:Vi}),stringify:()=>ps},Xa=(n,e)=>(Ye.identify(e)||K(e)&&(!e.type||e.type===P.PLAIN)&&Ye.identify(e.value))&&(n==null?void 0:n.doc.schema.tags.some(t=>t.tag===Ye.tag&&t.default));function Vi(n,e,t){if(t=n&&We(t)?t.resolve(n.doc):t,Je(t))for(let r of t.items)qi(n,e,r);else if(Array.isArray(t))for(let r of t)qi(n,e,r);else qi(n,e,t)}function qi(n,e,t){let r=n&&We(t)?t.resolve(n.doc):t;if(!He(r))throw new Error("Merge sources must be maps or map aliases");let s=r.toJSON(null,n,Map);for(let[i,o]of s)e instanceof Map?e.has(i)||e.set(i,o):e instanceof Set?e.add(i):Object.prototype.hasOwnProperty.call(e,i)||Object.defineProperty(e,i,{value:o,writable:!0,enumerable:!0,configurable:!0});return e}function Ds(n,e,{key:t,value:r}){if(J(t)&&t.addToJSMap)t.addToJSMap(n,e,r);else if(Xa(n,t))Vi(n,e,r);else{let s=ce(t,"",n);if(e instanceof Map)e.set(s,ce(r,s,n));else if(e instanceof Set)e.add(s);else{let i=Xc(t,s,n),o=ce(r,i,n);i in e?Object.defineProperty(e,i,{value:o,writable:!0,enumerable:!0,configurable:!0}):e[i]=o}}return e}function Xc(n,e,t){if(e===null)return"";if(typeof e!="object")return String(e);if(J(n)&&(t!=null&&t.doc)){let r=hs(t.doc,{});r.anchors=new Set;for(let i of t.anchors.keys())r.anchors.add(i.anchor);r.inFlow=!0,r.inStringifyKey=!0;let s=n.toString(r);if(!t.mapKeyWarned){let i=JSON.stringify(s);i.length>40&&(i=i.substring(0,36)+\'..."\'),ms(t.doc.options.logLevel,`Keys with collection values will be stringified due to JS Object restrictions: ${i}. Set mapAsMap: true to use object keys.`),t.mapKeyWarned=!0}return s}return JSON.stringify(e)}function vn(n,e,t){let r=wt(n,void 0,t),s=wt(e,void 0,t);return new ie(r,s)}var ie=class n{constructor(e,t=null){Object.defineProperty(this,Te,{value:_i}),this.key=e,this.value=t}clone(e){let{key:t,value:r}=this;return J(t)&&(t=t.clone(e)),J(r)&&(r=r.clone(e)),new n(t,r)}toJSON(e,t){let r=t!=null&&t.mapAsMap?new Map:{};return Ds(t,r,this)}toString(e,t,r){return e!=null&&e.doc?Qa(this,e,t,r):JSON.stringify(this)}};function gs(n,e,t){var i;return(((i=e.inFlow)!=null?i:n.flow)?tf:ef)(n,e,t)}function ef({comment:n,items:e},t,{blockItemPrefix:r,flowChars:s,itemIndent:i,onChompKeep:o,onComment:a}){let{indent:u,options:{commentString:l}}=t,f=Object.assign({},t,{indent:i,type:null}),d=!1,m=[];for(let b=0;bD=null,()=>d=!0);D&&(T+=ot(T,i,l(D))),d&&D&&(d=!1),m.push(r+T)}let h;if(m.length===0)h=s.start+s.end;else{h=m[0];for(let b=1;bD=null);bf||T.includes(`\n`))&&(l=!0),d.push(T),f=d.length}let{start:m,end:h}=t;if(d.length===0)return m+h;if(!l){let b=d.reduce((g,D)=>g+D.length+2,2);l=e.options.lineWidth>0&&b>e.options.lineWidth}if(l){let b=m;for(let g of d)b+=g?`\n${i}${s}${g}`:`\n`;return`${b}\n${s}${h}`}else return`${m}${o}${d.join(" ")}${o}${h}`}function ys({indent:n,options:{commentString:e}},t,r,s){if(r&&s&&(r=r.replace(/^\\n+/,"")),r){let i=Pe(e(r),n);t.push(i.trimStart())}}function It(n,e){let t=K(e)?e.value:e;for(let r of n)if(H(r)&&(r.key===e||r.key===t||K(r.key)&&r.key.value===t))return r}var oe=class extends Sn{static get tagName(){return"tag:yaml.org,2002:map"}constructor(e){super(Ke,e),this.items=[]}static from(e,t,r){let{keepUndefined:s,replacer:i}=r,o=new this(e),a=(u,l)=>{if(typeof i=="function")l=i.call(t,u,l);else if(Array.isArray(i)&&!i.includes(u))return;(l!==void 0||s)&&o.items.push(vn(u,l,r))};if(t instanceof Map)for(let[u,l]of t)a(u,l);else if(t&&typeof t=="object")for(let u of Object.keys(t))a(u,t[u]);return typeof e.sortMapEntries=="function"&&o.items.sort(e.sortMapEntries),o}add(e,t){var o;let r;H(e)?r=e:!e||typeof e!="object"||!("key"in e)?r=new ie(e,e==null?void 0:e.value):r=new ie(e.key,e.value);let s=It(this.items,r.key),i=(o=this.schema)==null?void 0:o.sortMapEntries;if(s){if(!t)throw new Error(`Key ${r.key} already set`);K(s.value)&&us(r.value)?s.value.value=r.value:s.value=r.value}else if(i){let a=this.items.findIndex(u=>i(r,u)<0);a===-1?this.items.push(r):this.items.splice(a,0,r)}else this.items.push(r)}delete(e){let t=It(this.items,e);return t?this.items.splice(this.items.indexOf(t),1).length>0:!1}get(e,t){var i;let r=It(this.items,e),s=r==null?void 0:r.value;return(i=!t&&K(s)?s.value:s)!=null?i:void 0}has(e){return!!It(this.items,e)}set(e,t){this.add(new ie(e,t),!0)}toJSON(e,t,r){let s=r?new r:t!=null&&t.mapAsMap?new Map:{};t!=null&&t.onCreate&&t.onCreate(s);for(let i of this.items)Ds(t,s,i);return s}toString(e,t,r){if(!e)return JSON.stringify(this);for(let s of this.items)if(!H(s))throw new Error(`Map items must all be pairs; found ${JSON.stringify(s)} instead`);return!e.allNullValues&&this.hasAllNullValues(!1)&&(e=Object.assign({},e,{allNullValues:!0})),gs(this,e,{blockItemPrefix:"",flowChars:{start:"{",end:"}"},itemIndent:e.indent||"",onChompKeep:r,onComment:t})}};var Ge={collection:"map",default:!0,nodeClass:oe,tag:"tag:yaml.org,2002:map",resolve(n,e){return He(n)||e("Expected a mapping for this tag"),n},createNode:(n,e,t)=>oe.from(n,e,t)};var be=class extends Sn{static get tagName(){return"tag:yaml.org,2002:seq"}constructor(e){super(Ft,e),this.items=[]}add(e){this.items.push(e)}delete(e){let t=bs(e);return typeof t!="number"?!1:this.items.splice(t,1).length>0}get(e,t){let r=bs(e);if(typeof r!="number")return;let s=this.items[r];return!t&&K(s)?s.value:s}has(e){let t=bs(e);return typeof t=="number"&&t=0?e:null}var Ze={collection:"seq",default:!0,nodeClass:be,tag:"tag:yaml.org,2002:seq",resolve(n,e){return Je(n)||e("Expected a sequence for this tag"),n},createNode:(n,e,t)=>be.from(n,e,t)};var Lt={identify:n=>typeof n=="string",default:!0,tag:"tag:yaml.org,2002:str",resolve:n=>n,stringify(n,e,t,r){return e=Object.assign({actualString:!0},e),Wt(n,e,t,r)}};var Ht={identify:n=>n==null,createNode:()=>new P(null),default:!0,tag:"tag:yaml.org,2002:null",test:/^(?:~|[Nn]ull|NULL)?$/,resolve:()=>new P(null),stringify:({source:n},e)=>typeof n=="string"&&Ht.test.test(n)?n:e.options.nullStr};var br={identify:n=>typeof n=="boolean",default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:[Tt]rue|TRUE|[Ff]alse|FALSE)$/,resolve:n=>new P(n[0]==="t"||n[0]==="T"),stringify({source:n,value:e},t){if(n&&br.test.test(n)){let r=n[0]==="t"||n[0]==="T";if(e===r)return n}return e?t.options.trueStr:t.options.falseStr}};function Fe({format:n,minFractionDigits:e,tag:t,value:r}){if(typeof r=="bigint")return String(r);let s=typeof r=="number"?r:Number(r);if(!isFinite(s))return isNaN(s)?".nan":s<0?"-.inf":".inf";let i=JSON.stringify(r);if(!n&&e&&(!t||t==="tag:yaml.org,2002:float")&&/^\\d/.test(i)){let o=i.indexOf(".");o<0&&(o=i.length,i+=".");let a=e-(i.length-o-1);for(;a-- >0;)i+="0"}return i}var Fs={identify:n=>typeof n=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^(?:[-+]?\\.(?:inf|Inf|INF)|\\.nan|\\.NaN|\\.NAN)$/,resolve:n=>n.slice(-3).toLowerCase()==="nan"?NaN:n[0]==="-"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,stringify:Fe},Es={identify:n=>typeof n=="number",default:!0,tag:"tag:yaml.org,2002:float",format:"EXP",test:/^[-+]?(?:\\.[0-9]+|[0-9]+(?:\\.[0-9]*)?)[eE][-+]?[0-9]+$/,resolve:n=>parseFloat(n),stringify(n){let e=Number(n.value);return isFinite(e)?e.toExponential():Fe(n)}},ws={identify:n=>typeof n=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^[-+]?(?:\\.[0-9]+|[0-9]+\\.[0-9]*)$/,resolve(n){let e=new P(parseFloat(n)),t=n.indexOf(".");return t!==-1&&n[n.length-1]==="0"&&(e.minFractionDigits=n.length-t-1),e},stringify:Fe};var Ts=n=>typeof n=="bigint"||Number.isInteger(n),Ui=(n,e,t,{intAsBigInt:r})=>r?BigInt(n):parseInt(n.substring(e),t);function eu(n,e,t){let{value:r}=n;return Ts(r)&&r>=0?t+r.toString(e):Fe(n)}var Ss={identify:n=>Ts(n)&&n>=0,default:!0,tag:"tag:yaml.org,2002:int",format:"OCT",test:/^0o[0-7]+$/,resolve:(n,e,t)=>Ui(n,2,8,t),stringify:n=>eu(n,8,"0o")},ks={identify:Ts,default:!0,tag:"tag:yaml.org,2002:int",test:/^[-+]?[0-9]+$/,resolve:(n,e,t)=>Ui(n,0,10,t),stringify:Fe},Cs={identify:n=>Ts(n)&&n>=0,default:!0,tag:"tag:yaml.org,2002:int",format:"HEX",test:/^0x[0-9a-fA-F]+$/,resolve:(n,e,t)=>Ui(n,2,16,t),stringify:n=>eu(n,16,"0x")};var tu=[Ge,Ze,Lt,Ht,br,Ss,ks,Cs,Fs,Es,ws];function nu(n){return typeof n=="bigint"||Number.isInteger(n)}var vs=({value:n})=>JSON.stringify(n),nf=[{identify:n=>typeof n=="string",default:!0,tag:"tag:yaml.org,2002:str",resolve:n=>n,stringify:vs},{identify:n=>n==null,createNode:()=>new P(null),default:!0,tag:"tag:yaml.org,2002:null",test:/^null$/,resolve:()=>null,stringify:vs},{identify:n=>typeof n=="boolean",default:!0,tag:"tag:yaml.org,2002:bool",test:/^true|false$/,resolve:n=>n==="true",stringify:vs},{identify:nu,default:!0,tag:"tag:yaml.org,2002:int",test:/^-?(?:0|[1-9][0-9]*)$/,resolve:(n,e,{intAsBigInt:t})=>t?BigInt(n):parseInt(n,10),stringify:({value:n})=>nu(n)?n.toString():JSON.stringify(n)},{identify:n=>typeof n=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^-?(?:0|[1-9][0-9]*)(?:\\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$/,resolve:n=>parseFloat(n),stringify:vs}],rf={default:!0,tag:"",test:/^/,resolve(n,e){return e(`Unresolved plain scalar ${JSON.stringify(n)}`),n}},ru=[Ge,Ze].concat(nf,rf);var Fr={identify:n=>n instanceof Uint8Array,default:!1,tag:"tag:yaml.org,2002:binary",resolve(n,e){if(typeof Buffer=="function")return Buffer.from(n,"base64");if(typeof atob=="function"){let t=atob(n.replace(/[\\n\\r]/g,"")),r=new Uint8Array(t.length);for(let s=0;s1&&e("Each pair must have its own sequence indicator");let i=s.items[0]||new ie(new P(null));if(s.commentBefore&&(i.key.commentBefore=i.key.commentBefore?`${s.commentBefore}\n${i.key.commentBefore}`:s.commentBefore),s.comment){let o=(t=i.value)!=null?t:i.key;o.comment=o.comment?`${s.comment}\n${o.comment}`:s.comment}s=i}n.items[r]=H(s)?s:new ie(s)}}else e("Expected a sequence for this tag");return n}function Wi(n,e,t){let{replacer:r}=t,s=new be(n);s.tag="tag:yaml.org,2002:pairs";let i=0;if(e&&Symbol.iterator in Object(e))for(let o of e){typeof r=="function"&&(o=r.call(e,String(i++),o));let a,u;if(Array.isArray(o))if(o.length===2)a=o[0],u=o[1];else throw new TypeError(`Expected [key, value] tuple: ${o}`);else if(o&&o instanceof Object){let l=Object.keys(o);if(l.length===1)a=l[0],u=o[a];else throw new TypeError(`Expected tuple with one key, not ${l.length} keys`)}else a=o;s.items.push(vn(a,u,t))}return s}var Er={collection:"seq",default:!1,tag:"tag:yaml.org,2002:pairs",resolve:Ki,createNode:Wi};var xn=class n extends be{constructor(){super(),this.add=oe.prototype.add.bind(this),this.delete=oe.prototype.delete.bind(this),this.get=oe.prototype.get.bind(this),this.has=oe.prototype.has.bind(this),this.set=oe.prototype.set.bind(this),this.tag=n.tag}toJSON(e,t){if(!t)return super.toJSON(e);let r=new Map;t!=null&&t.onCreate&&t.onCreate(r);for(let s of this.items){let i,o;if(H(s)?(i=ce(s.key,"",t),o=ce(s.value,i,t)):i=ce(s,"",t),r.has(i))throw new Error("Ordered maps must not include duplicate keys");r.set(i,o)}return r}static from(e,t,r){let s=Wi(e,t,r),i=new this;return i.items=s.items,i}};xn.tag="tag:yaml.org,2002:omap";var wr={collection:"seq",identify:n=>n instanceof Map,nodeClass:xn,default:!1,tag:"tag:yaml.org,2002:omap",resolve(n,e){let t=Ki(n,e),r=[];for(let{key:s}of t.items)K(s)&&(r.includes(s.value)?e(`Ordered maps must not include duplicate keys: ${s.value}`):r.push(s.value));return Object.assign(new xn,t)},createNode:(n,e,t)=>xn.from(n,e,t)};function su({value:n,source:e},t){return e&&(n?Hi:Ji).test.test(e)?e:n?t.options.trueStr:t.options.falseStr}var Hi={identify:n=>n===!0,default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:Y|y|[Yy]es|YES|[Tt]rue|TRUE|[Oo]n|ON)$/,resolve:()=>new P(!0),stringify:su},Ji={identify:n=>n===!1,default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:N|n|[Nn]o|NO|[Ff]alse|FALSE|[Oo]ff|OFF)$/,resolve:()=>new P(!1),stringify:su};var iu={identify:n=>typeof n=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^(?:[-+]?\\.(?:inf|Inf|INF)|\\.nan|\\.NaN|\\.NAN)$/,resolve:n=>n.slice(-3).toLowerCase()==="nan"?NaN:n[0]==="-"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,stringify:Fe},ou={identify:n=>typeof n=="number",default:!0,tag:"tag:yaml.org,2002:float",format:"EXP",test:/^[-+]?(?:[0-9][0-9_]*)?(?:\\.[0-9_]*)?[eE][-+]?[0-9]+$/,resolve:n=>parseFloat(n.replace(/_/g,"")),stringify(n){let e=Number(n.value);return isFinite(e)?e.toExponential():Fe(n)}},au={identify:n=>typeof n=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^[-+]?(?:[0-9][0-9_]*)?\\.[0-9_]*$/,resolve(n){let e=new P(parseFloat(n.replace(/_/g,""))),t=n.indexOf(".");if(t!==-1){let r=n.substring(t+1).replace(/_/g,"");r[r.length-1]==="0"&&(e.minFractionDigits=r.length)}return e},stringify:Fe};var Tr=n=>typeof n=="bigint"||Number.isInteger(n);function xs(n,e,t,{intAsBigInt:r}){let s=n[0];if((s==="-"||s==="+")&&(e+=1),n=n.substring(e).replace(/_/g,""),r){switch(t){case 2:n=`0b${n}`;break;case 8:n=`0o${n}`;break;case 16:n=`0x${n}`;break}let o=BigInt(n);return s==="-"?BigInt(-1)*o:o}let i=parseInt(n,t);return s==="-"?-1*i:i}function zi(n,e,t){let{value:r}=n;if(Tr(r)){let s=r.toString(e);return r<0?"-"+t+s.substr(1):t+s}return Fe(n)}var uu={identify:Tr,default:!0,tag:"tag:yaml.org,2002:int",format:"BIN",test:/^[-+]?0b[0-1_]+$/,resolve:(n,e,t)=>xs(n,2,2,t),stringify:n=>zi(n,2,"0b")},lu={identify:Tr,default:!0,tag:"tag:yaml.org,2002:int",format:"OCT",test:/^[-+]?0[0-7_]+$/,resolve:(n,e,t)=>xs(n,1,8,t),stringify:n=>zi(n,8,"0")},cu={identify:Tr,default:!0,tag:"tag:yaml.org,2002:int",test:/^[-+]?[0-9][0-9_]*$/,resolve:(n,e,t)=>xs(n,0,10,t),stringify:Fe},fu={identify:Tr,default:!0,tag:"tag:yaml.org,2002:int",format:"HEX",test:/^[-+]?0x[0-9a-fA-F_]+$/,resolve:(n,e,t)=>xs(n,2,16,t),stringify:n=>zi(n,16,"0x")};var On=class n extends oe{constructor(e){super(e),this.tag=n.tag}add(e){let t;H(e)?t=e:e&&typeof e=="object"&&"key"in e&&"value"in e&&e.value===null?t=new ie(e.key,null):t=new ie(e,null),It(this.items,t.key)||this.items.push(t)}get(e,t){let r=It(this.items,e);return!t&&H(r)?K(r.key)?r.key.value:r.key:r}set(e,t){if(typeof t!="boolean")throw new Error(`Expected boolean value for set(key, value) in a YAML set, not ${typeof t}`);let r=It(this.items,e);r&&!t?this.items.splice(this.items.indexOf(r),1):!r&&t&&this.items.push(new ie(e))}toJSON(e,t){return super.toJSON(e,t,Set)}toString(e,t,r){if(!e)return JSON.stringify(this);if(this.hasAllNullValues(!0))return super.toString(Object.assign({},e,{allNullValues:!0}),t,r);throw new Error("Set items must all have null values")}static from(e,t,r){let{replacer:s}=r,i=new this(e);if(t&&Symbol.iterator in Object(t))for(let o of t)typeof s=="function"&&(o=s.call(t,o,o)),i.items.push(vn(o,null,r));return i}};On.tag="tag:yaml.org,2002:set";var Sr={collection:"map",identify:n=>n instanceof Set,nodeClass:On,default:!1,tag:"tag:yaml.org,2002:set",createNode:(n,e,t)=>On.from(n,e,t),resolve(n,e){if(He(n)){if(n.hasAllNullValues(!0))return Object.assign(new On,n);e("Set items must all have null values")}else e("Expected a mapping for this tag");return n}};function Yi(n,e){let t=n[0],r=t==="-"||t==="+"?n.substring(1):n,s=o=>e?BigInt(o):Number(o),i=r.replace(/_/g,"").split(":").reduce((o,a)=>o*s(60)+s(a),s(0));return t==="-"?s(-1)*i:i}function du(n){let{value:e}=n,t=o=>o;if(typeof e=="bigint")t=o=>BigInt(o);else if(isNaN(e)||!isFinite(e))return Fe(n);let r="";e<0&&(r="-",e*=t(-1));let s=t(60),i=[e%s];return e<60?i.unshift(0):(e=(e-i[0])/s,i.unshift(e%s),e>=60&&(e=(e-i[0])/s,i.unshift(e))),r+i.map(o=>String(o).padStart(2,"0")).join(":").replace(/000000\\d*$/,"")}var Os={identify:n=>typeof n=="bigint"||Number.isInteger(n),default:!0,tag:"tag:yaml.org,2002:int",format:"TIME",test:/^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+$/,resolve:(n,e,{intAsBigInt:t})=>Yi(n,t),stringify:du},Is={identify:n=>typeof n=="number",default:!0,tag:"tag:yaml.org,2002:float",format:"TIME",test:/^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*$/,resolve:n=>Yi(n,!1),stringify:du},In={identify:n=>n instanceof Date,default:!0,tag:"tag:yaml.org,2002:timestamp",test:RegExp("^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})(?:(?:t|T|[ \\\\t]+)([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}(\\\\.[0-9]+)?)(?:[ \\\\t]*(Z|[-+][012]?[0-9](?::[0-9]{2})?))?)?$"),resolve(n){let e=n.match(In.test);if(!e)throw new Error("!!timestamp expects a date, starting with yyyy-mm-dd");let[,t,r,s,i,o,a]=e.map(Number),u=e[7]?Number((e[7]+"00").substr(1,3)):0,l=Date.UTC(t,r-1,s,i||0,o||0,a||0,u),f=e[8];if(f&&f!=="Z"){let d=Yi(f,!1);Math.abs(d)<30&&(d*=60),l-=6e4*d}return new Date(l)},stringify:({value:n})=>n.toISOString().replace(/((T00:00)?:00)?\\.000Z$/,"")};var Gi=[Ge,Ze,Lt,Ht,Hi,Ji,uu,lu,cu,fu,iu,ou,au,Fr,Ye,wr,Er,Sr,Os,Is,In];var hu=new Map([["core",tu],["failsafe",[Ge,Ze,Lt]],["json",ru],["yaml11",Gi],["yaml-1.1",Gi]]),mu={binary:Fr,bool:br,float:ws,floatExp:Es,floatNaN:Fs,floatTime:Is,int:ks,intHex:Cs,intOct:Ss,intTime:Os,map:Ge,merge:Ye,null:Ht,omap:wr,pairs:Er,seq:Ze,set:Sr,timestamp:In},pu={"tag:yaml.org,2002:binary":Fr,"tag:yaml.org,2002:merge":Ye,"tag:yaml.org,2002:omap":wr,"tag:yaml.org,2002:pairs":Er,"tag:yaml.org,2002:set":Sr,"tag:yaml.org,2002:timestamp":In};function Ls(n,e,t){let r=hu.get(e);if(r&&!n)return t&&!r.includes(Ye)?r.concat(Ye):r.slice();let s=r;if(!s)if(Array.isArray(n))s=[];else{let i=Array.from(hu.keys()).filter(o=>o!=="yaml11").map(o=>JSON.stringify(o)).join(", ");throw new Error(`Unknown schema "${e}"; use one of ${i} or define customTags array`)}if(Array.isArray(n))for(let i of n)s=s.concat(i);else typeof n=="function"&&(s=n(s.slice()));return t&&(s=s.concat(Ye)),s.reduce((i,o)=>{let a=typeof o=="string"?mu[o]:o;if(!a){let u=JSON.stringify(o),l=Object.keys(mu).map(f=>JSON.stringify(f)).join(", ");throw new Error(`Unknown custom tag ${u}; use one of ${l}`)}return i.includes(a)||i.push(a),i},[])}var sf=(n,e)=>n.keye.key?1:0,kr=class n{constructor({compat:e,customTags:t,merge:r,resolveKnownTags:s,schema:i,sortMapEntries:o,toStringDefaults:a}){this.compat=Array.isArray(e)?Ls(e,"compat"):e?Ls(null,e):null,this.name=typeof i=="string"&&i||"core",this.knownTags=s?pu:{},this.tags=Ls(t,this.name,r),this.toStringOptions=a!=null?a:null,Object.defineProperty(this,Ke,{value:Ge}),Object.defineProperty(this,Ie,{value:Lt}),Object.defineProperty(this,Ft,{value:Ze}),this.sortMapEntries=typeof o=="function"?o:o===!0?sf:null}clone(){let e=Object.create(n.prototype,Object.getOwnPropertyDescriptors(this));return e.tags=this.tags.slice(),e}};function Du(n,e){var u;let t=[],r=e.directives===!0;if(e.directives!==!1&&n.directives){let l=n.directives.toString(n);l?(t.push(l),r=!0):n.directives.docStart&&(r=!0)}r&&t.push("---");let s=hs(n,e),{commentString:i}=s.options;if(n.commentBefore){t.length!==1&&t.unshift("");let l=i(n.commentBefore);t.unshift(Pe(l,""))}let o=!1,a=null;if(n.contents){if(J(n.contents)){if(n.contents.spaceBefore&&r&&t.push(""),n.contents.commentBefore){let d=i(n.contents.commentBefore);t.push(Pe(d,""))}s.forceBlockIndent=!!n.comment,a=n.contents.comment}let l=a?void 0:()=>o=!0,f=Tt(n.contents,s,()=>a=null,l);a&&(f+=ot(f,"",i(a))),(f[0]==="|"||f[0]===">")&&t[t.length-1]==="---"?t[t.length-1]=`--- ${f}`:t.push(f)}else t.push(Tt(n.contents,s));if((u=n.directives)!=null&&u.docEnd)if(n.comment){let l=i(n.comment);l.includes(`\n`)?(t.push("..."),t.push(Pe(l,""))):t.push(`... ${l}`)}else t.push("...");else{let l=n.comment;l&&o&&(l=l.replace(/^\\n+/,"")),l&&((!o||a)&&t[t.length-1]!==""&&t.push(""),t.push(Pe(i(l),"")))}return t.join(`\n`)+`\n`}var Nt=class n{constructor(e,t,r){this.commentBefore=null,this.comment=null,this.errors=[],this.warnings=[],Object.defineProperty(this,Te,{value:ss});let s=null;typeof t=="function"||Array.isArray(t)?s=t:r===void 0&&t&&(r=t,t=void 0);let i=Object.assign({intAsBigInt:!1,keepSourceTokens:!1,logLevel:"warn",prettyErrors:!0,strict:!0,stringKeys:!1,uniqueKeys:!0,version:"1.2"},r);this.options=i;let{version:o}=i;r!=null&&r._directives?(this.directives=r._directives.atDocument(),this.directives.yaml.explicit&&(o=this.directives.yaml.version)):this.directives=new it({version:o}),this.setSchema(o,r),this.contents=e===void 0?null:this.createNode(e,s,r)}clone(){let e=Object.create(n.prototype,{[Te]:{value:ss}});return e.commentBefore=this.commentBefore,e.comment=this.comment,e.errors=this.errors.slice(),e.warnings=this.warnings.slice(),e.options=Object.assign({},this.options),this.directives&&(e.directives=this.directives.clone()),e.schema=this.schema.clone(),e.contents=J(this.contents)?this.contents.clone(e.schema):this.contents,this.range&&(e.range=this.range.slice()),e}add(e){Ln(this.contents)&&this.contents.add(e)}addIn(e,t){Ln(this.contents)&&this.contents.addIn(e,t)}createAlias(e,t){if(!e.anchor){let r=Bi(this);e.anchor=!t||r.has(t)?Pi(t||"a",r):t}return new Et(e.anchor)}createNode(e,t,r){let s;if(typeof t=="function")e=t.call({"":e},"",e),s=t;else if(Array.isArray(t)){let D=I=>typeof I=="number"||I instanceof String||I instanceof Number,T=t.filter(D).map(String);T.length>0&&(t=t.concat(T)),s=t}else r===void 0&&t&&(r=t,t=void 0);let{aliasDuplicateObjects:i,anchorPrefix:o,flow:a,keepUndefined:u,onTagObj:l,tag:f}=r!=null?r:{},{onAnchor:d,setAnchors:m,sourceObjects:h}=Ya(this,o||"a"),b={aliasDuplicateObjects:i!=null?i:!0,keepUndefined:u!=null?u:!1,onAnchor:d,onTagObj:l,replacer:s,schema:this.schema,sourceObjects:h},g=wt(e,f,b);return a&&Z(g)&&(g.flow=!0),m(),g}createPair(e,t,r={}){let s=this.createNode(e,null,r),i=this.createNode(t,null,r);return new ie(s,i)}delete(e){return Ln(this.contents)?this.contents.delete(e):!1}deleteIn(e){return kn(e)?this.contents==null?!1:(this.contents=null,!0):Ln(this.contents)?this.contents.deleteIn(e):!1}get(e,t){return Z(this.contents)?this.contents.get(e,t):void 0}getIn(e,t){return kn(e)?!t&&K(this.contents)?this.contents.value:this.contents:Z(this.contents)?this.contents.getIn(e,t):void 0}has(e){return Z(this.contents)?this.contents.has(e):!1}hasIn(e){return kn(e)?this.contents!==void 0:Z(this.contents)?this.contents.hasIn(e):!1}set(e,t){this.contents==null?this.contents=pr(this.schema,[e],t):Ln(this.contents)&&this.contents.set(e,t)}setIn(e,t){kn(e)?this.contents=t:this.contents==null?this.contents=pr(this.schema,Array.from(e),t):Ln(this.contents)&&this.contents.setIn(e,t)}setSchema(e,t={}){typeof e=="number"&&(e=String(e));let r;switch(e){case"1.1":this.directives?this.directives.yaml.version="1.1":this.directives=new it({version:"1.1"}),r={resolveKnownTags:!1,schema:"yaml-1.1"};break;case"1.2":case"next":this.directives?this.directives.yaml.version=e:this.directives=new it({version:e}),r={resolveKnownTags:!0,schema:"core"};break;case null:this.directives&&delete this.directives,r=null;break;default:{let s=JSON.stringify(e);throw new Error(`Expected \'1.1\', \'1.2\' or null as first argument, but found: ${s}`)}}if(t.schema instanceof Object)this.schema=t.schema;else if(r)this.schema=new kr(Object.assign(r,t));else throw new Error("With a null YAML version, the { schema: Schema } option is required")}toJS({json:e,jsonArg:t,mapAsMap:r,maxAliasCount:s,onAnchor:i,reviver:o}={}){let a={anchors:new Map,doc:this,keep:!e,mapAsMap:r===!0,mapKeyWarned:!1,maxAliasCount:typeof s=="number"?s:100},u=ce(this.contents,t!=null?t:"",a);if(typeof i=="function")for(let{count:l,res:f}of a.anchors.values())i(f,l);return typeof o=="function"?xt(o,{"":u},"",u):u}toJSON(e,t){return this.toJS({json:!0,jsonArg:e,mapAsMap:!1,onAnchor:t})}toString(e={}){if(this.errors.length>0)throw new Error("Document with errors cannot be stringified");if("indent"in e&&(!Number.isInteger(e.indent)||Number(e.indent)<=0)){let t=JSON.stringify(e.indent);throw new Error(`"indent" option must be a positive integer, not ${t}`)}return Du(this,e)}};function Ln(n){if(Z(n))return!0;throw new Error("Expected a YAML collection as document contents")}var Cr=class extends Error{constructor(e,t,r,s){super(),this.name=e,this.code=r,this.message=s,this.pos=t}},Qe=class extends Cr{constructor(e,t,r){super("YAMLParseError",e,t,r)}},vr=class extends Cr{constructor(e,t,r){super("YAMLWarning",e,t,r)}},Zi=(n,e)=>t=>{if(t.pos[0]===-1)return;t.linePos=t.pos.map(a=>e.linePos(a));let{line:r,col:s}=t.linePos[0];t.message+=` at line ${r}, column ${s}`;let i=s-1,o=n.substring(e.lineStarts[r-1],e.lineStarts[r]).replace(/[\\n\\r]+$/,"");if(i>=60&&o.length>80){let a=Math.min(i-39,o.length-79);o="\\u2026"+o.substring(a),i-=a-1}if(o.length>80&&(o=o.substring(0,79)+"\\u2026"),r>1&&/^ *$/.test(o.substring(0,i))){let a=n.substring(e.lineStarts[r-2],e.lineStarts[r-1]);a.length>80&&(a=a.substring(0,79)+`\\u2026\n`),o=a+o}if(/[^ ]/.test(o)){let a=1,u=t.linePos[1];u&&u.line===r&&u.col>s&&(a=Math.max(1,Math.min(u.col-s,80-i)));let l=" ".repeat(i)+"^".repeat(a);t.message+=`:\n\n${o}\n${l}\n`}};function at(n,{flow:e,indicator:t,next:r,offset:s,onError:i,parentIndent:o,startOnNewline:a}){let u=!1,l=a,f=a,d="",m="",h=!1,b=!1,g=null,D=null,T=null,I=null,N=null,y=null,w=null;for(let C of n)switch(b&&(C.type!=="space"&&C.type!=="newline"&&C.type!=="comma"&&i(C.offset,"MISSING_CHAR","Tags and anchors must be separated from the next token by white space"),b=!1),g&&(l&&C.type!=="comment"&&C.type!=="newline"&&i(g,"TAB_AS_INDENT","Tabs are not allowed as indentation"),g=null),C.type){case"space":!e&&(t!=="doc-start"||(r==null?void 0:r.type)!=="flow-collection")&&C.source.includes(" ")&&(g=C),f=!0;break;case"comment":{f||i(C,"MISSING_CHAR","Comments must be separated from other tokens by white space characters");let V=C.source.substring(1)||" ";d?d+=m+V:d=V,m="",l=!1;break}case"newline":l?d?d+=C.source:u=!0:m+=C.source,l=!0,h=!0,(D||T)&&(I=C),f=!0;break;case"anchor":D&&i(C,"MULTIPLE_ANCHORS","A node can have at most one anchor"),C.source.endsWith(":")&&i(C.offset+C.source.length-1,"BAD_ALIAS","Anchor ending in : is ambiguous",!0),D=C,w===null&&(w=C.offset),l=!1,f=!1,b=!0;break;case"tag":{T&&i(C,"MULTIPLE_TAGS","A node can have at most one tag"),T=C,w===null&&(w=C.offset),l=!1,f=!1,b=!0;break}case t:(D||T)&&i(C,"BAD_PROP_ORDER",`Anchors and tags must be after the ${C.source} indicator`),y&&i(C,"UNEXPECTED_TOKEN",`Unexpected ${C.source} in ${e!=null?e:"collection"}`),y=C,l=t==="seq-item-ind"||t==="explicit-key-ind",f=!1;break;case"comma":if(e){N&&i(C,"UNEXPECTED_TOKEN",`Unexpected , in ${e}`),N=C,l=!1,f=!1;break}default:i(C,"UNEXPECTED_TOKEN",`Unexpected ${C.type} token`),l=!1,f=!1}let v=n[n.length-1],x=v?v.offset+v.source.length:s;return b&&r&&r.type!=="space"&&r.type!=="newline"&&r.type!=="comma"&&(r.type!=="scalar"||r.source!=="")&&i(r.offset,"MISSING_CHAR","Tags and anchors must be separated from the next token by white space"),g&&(l&&g.indent<=o||(r==null?void 0:r.type)==="block-map"||(r==null?void 0:r.type)==="block-seq")&&i(g,"TAB_AS_INDENT","Tabs are not allowed as indentation"),{comma:N,found:y,spaceBefore:u,comment:d,hasNewline:h,anchor:D,tag:T,newlineAfterProp:I,end:x,start:w!=null?w:x}}function At(n){if(!n)return null;switch(n.type){case"alias":case"scalar":case"double-quoted-scalar":case"single-quoted-scalar":if(n.source.includes(`\n`))return!0;if(n.end){for(let e of n.end)if(e.type==="newline")return!0}return!1;case"flow-collection":for(let e of n.items){for(let t of e.start)if(t.type==="newline")return!0;if(e.sep){for(let t of e.sep)if(t.type==="newline")return!0}if(At(e.key)||At(e.value))return!0}return!1;default:return!0}}function xr(n,e,t){if((e==null?void 0:e.type)==="flow-collection"){let r=e.end[0];r.indent===n&&(r.source==="]"||r.source==="}")&&At(e)&&t(r,"BAD_INDENT","Flow end indicator should be more indented than parent",!0)}}function Ns(n,e,t){let{uniqueKeys:r}=n.options;if(r===!1)return!1;let s=typeof r=="function"?r:(i,o)=>i===o||K(i)&&K(o)&&i.value===o.value;return e.some(i=>s(i.key,t))}var yu="All mapping items must start at the same column";function gu({composeNode:n,composeEmptyNode:e},t,r,s,i){var f,d;let o=(f=i==null?void 0:i.nodeClass)!=null?f:oe,a=new o(t.schema);t.atRoot&&(t.atRoot=!1);let u=r.offset,l=null;for(let m of r.items){let{start:h,key:b,sep:g,value:D}=m,T=at(h,{indicator:"explicit-key-ind",next:b!=null?b:g==null?void 0:g[0],offset:u,onError:s,parentIndent:r.indent,startOnNewline:!0}),I=!T.found;if(I){if(b&&(b.type==="block-seq"?s(u,"BLOCK_AS_IMPLICIT_KEY","A block sequence may not be used as an implicit map key"):"indent"in b&&b.indent!==r.indent&&s(u,"BAD_INDENT",yu)),!T.anchor&&!T.tag&&!g){l=T.end,T.comment&&(a.comment?a.comment+=`\n`+T.comment:a.comment=T.comment);continue}(T.newlineAfterProp||At(b))&&s(b!=null?b:h[h.length-1],"MULTILINE_IMPLICIT_KEY","Implicit keys need to be on a single line")}else((d=T.found)==null?void 0:d.indent)!==r.indent&&s(u,"BAD_INDENT",yu);t.atKey=!0;let N=T.end,y=b?n(t,b,T,s):e(t,N,h,null,T,s);t.schema.compat&&xr(r.indent,b,s),t.atKey=!1,Ns(t,a.items,y)&&s(N,"DUPLICATE_KEY","Map keys must be unique");let w=at(g!=null?g:[],{indicator:"map-value-ind",next:D,offset:y.range[2],onError:s,parentIndent:r.indent,startOnNewline:!b||b.type==="block-scalar"});if(u=w.end,w.found){I&&((D==null?void 0:D.type)==="block-map"&&!w.hasNewline&&s(u,"BLOCK_AS_IMPLICIT_KEY","Nested mappings are not allowed in compact mappings"),t.options.strict&&T.startn&&(n.type==="block-map"||n.type==="block-seq");function Fu({composeNode:n,composeEmptyNode:e},t,r,s,i){var D,T;let o=r.start.source==="{",a=o?"flow map":"flow sequence",u=(D=i==null?void 0:i.nodeClass)!=null?D:o?oe:be,l=new u(t.schema);l.flow=!0;let f=t.atRoot;f&&(t.atRoot=!1),t.atKey&&(t.atKey=!1);let d=r.offset+r.start.source.length;for(let I=0;I0){let I=ut(b,g,t.options.strict,s);I.comment&&(l.comment?l.comment+=`\n`+I.comment:l.comment=I.comment),l.range=[r.offset,g,I.offset]}else l.range=[r.offset,g,g];return l}function eo(n,e,t,r,s,i){let o=t.type==="block-map"?gu(n,e,t,r,i):t.type==="block-seq"?bu(n,e,t,r,i):Fu(n,e,t,r,i),a=o.constructor;return s==="!"||s===a.tagName?(o.tag=a.tagName,o):(s&&(o.tag=s),o)}function Eu(n,e,t,r,s){var m,h;let i=r.tag,o=i?e.directives.tagName(i.source,b=>s(i,"TAG_RESOLVE_FAILED",b)):null;if(t.type==="block-seq"){let{anchor:b,newlineAfterProp:g}=r,D=b&&i?b.offset>i.offset?b:i:b!=null?b:i;D&&(!g||g.offsetb.tag===o&&b.collection===a);if(!u){let b=e.schema.knownTags[o];if(b&&b.collection===a)e.schema.tags.push(Object.assign({},b,{default:!1})),u=b;else return b!=null&&b.collection?s(i,"BAD_COLLECTION_TYPE",`${b.tag} used for ${a} collection, but expects ${b.collection}`,!0):s(i,"TAG_RESOLVE_FAILED",`Unresolved tag: ${o}`,!0),eo(n,e,t,s,o)}let l=eo(n,e,t,s,o,u),f=(h=(m=u.resolve)==null?void 0:m.call(u,l,b=>s(i,"TAG_RESOLVE_FAILED",b),e.options))!=null?h:l,d=J(f)?f:new P(f);return d.range=l.range,d.tag=o,u!=null&&u.format&&(d.format=u.format),d}function to(n,e,t){let r=e.offset,s=of(e,n.options.strict,t);if(!s)return{value:"",type:null,comment:"",range:[r,r,r]};let i=s.mode===">"?P.BLOCK_FOLDED:P.BLOCK_LITERAL,o=e.source?af(e.source):[],a=o.length;for(let g=o.length-1;g>=0;--g){let D=o[g][1];if(D===""||D==="\\r")a=g;else break}if(a===0){let g=s.chomp==="+"&&o.length>0?`\n`.repeat(Math.max(1,o.length-1)):"",D=r+s.length;return e.source&&(D+=e.source.length),{value:g,type:i,comment:s.comment,range:[r,D,D]}}let u=e.indent+s.indent,l=e.offset+s.length,f=0;for(let g=0;gu&&(u=D.length);else{D.length=a;--g)o[g][0].length>u&&(a=g+1);let d="",m="",h=!1;for(let g=0;gu||T[0]===" "?(m===" "?m=`\n`:!h&&m===`\n`&&(m=`\n\n`),d+=m+D.slice(u)+T,m=`\n`,h=!0):T===""?m===`\n`?d+=`\n`:m=`\n`:(d+=m+T,m=" ",h=!1)}switch(s.chomp){case"-":break;case"+":for(let g=a;gt(r+m,h,b);switch(s){case"scalar":a=P.PLAIN,u=uf(i,l);break;case"single-quoted-scalar":a=P.QUOTE_SINGLE,u=lf(i,l);break;case"double-quoted-scalar":a=P.QUOTE_DOUBLE,u=cf(i,l);break;default:return t(n,"UNEXPECTED_TOKEN",`Expected a flow scalar value, but found: ${s}`),{value:"",type:null,comment:"",range:[r,r+i.length,r+i.length]}}let f=r+i.length,d=ut(o,f,e,t);return{value:u,type:a,comment:d.comment,range:[r,f,d.offset]}}function uf(n,e){let t="";switch(n[0]){case" ":t="a tab character";break;case",":t="flow indicator character ,";break;case"%":t="directive indicator character %";break;case"|":case">":{t=`block scalar indicator ${n[0]}`;break}case"@":case"`":{t=`reserved character ${n[0]}`;break}}return t&&e(0,"BAD_SCALAR_START",`Plain value cannot start with ${t}`),wu(n)}function lf(n,e){return(n[n.length-1]!=="\'"||n.length===1)&&e(n.length,"MISSING_CHAR","Missing closing \'quote"),wu(n.slice(1,-1)).replace(/\'\'/g,"\'")}function wu(n){var u;let e,t;try{e=new RegExp(`(.*?)(?i?n.slice(i,r+1):s)}else t+=s}return(n[n.length-1]!==\'"\'||n.length===1)&&e(n.length,"MISSING_CHAR",\'Missing closing "quote\'),t}function ff(n,e){let t="",r=n[e+1];for(;(r===" "||r===" "||r===`\n`||r==="\\r")&&!(r==="\\r"&&n[e+2]!==`\n`);)r===`\n`&&(t+=`\n`),e+=1,r=n[e+1];return t||(t=" "),{fold:t,offset:e}}var df={0:"\\0",a:"\\x07",b:"\\b",e:"\\x1B",f:"\\f",n:`\n`,r:"\\r",t:" ",v:"\\v",N:"\\x85",_:"\\xA0",L:"\\u2028",P:"\\u2029"," ":" ",\'"\':\'"\',"/":"/","\\\\":"\\\\"," ":" "};function hf(n,e,t,r){let s=n.substr(e,t),o=s.length===t&&/^[0-9a-fA-F]+$/.test(s)?parseInt(s,16):NaN;if(isNaN(o)){let a=n.substr(e-2,t+2);return r(e-2,"BAD_DQ_ESCAPE",`Invalid escape sequence ${a}`),a}return String.fromCodePoint(o)}function ro(n,e,t,r){let{value:s,type:i,comment:o,range:a}=e.type==="block-scalar"?to(n,e,r):no(e,n.options.strict,r),u=t?n.directives.tagName(t.source,d=>r(t,"TAG_RESOLVE_FAILED",d)):null,l;n.options.stringKeys&&n.atKey?l=n.schema[Ie]:u?l=mf(n.schema,s,u,t,r):e.type==="scalar"?l=pf(n,s,e,r):l=n.schema[Ie];let f;try{let d=l.resolve(s,m=>r(t!=null?t:e,"TAG_RESOLVE_FAILED",m),n.options);f=K(d)?d:new P(d)}catch(d){let m=d instanceof Error?d.message:String(d);r(t!=null?t:e,"TAG_RESOLVE_FAILED",m),f=new P(s)}return f.range=a,f.source=s,i&&(f.type=i),u&&(f.tag=u),l.format&&(f.format=l.format),o&&(f.comment=o),f}function mf(n,e,t,r,s){var a;if(t==="!")return n[Ie];let i=[];for(let u of n.tags)if(!u.collection&&u.tag===t)if(u.default&&u.test)i.push(u);else return u;for(let u of i)if((a=u.test)!=null&&a.test(e))return u;let o=n.knownTags[t];return o&&!o.collection?(n.tags.push(Object.assign({},o,{default:!1,test:void 0})),o):(s(r,"TAG_RESOLVE_FAILED",`Unresolved tag: ${t}`,t!=="tag:yaml.org,2002:str"),n[Ie])}function pf({atKey:n,directives:e,schema:t},r,s,i){var a;let o=t.tags.find(u=>{var l;return(u.default===!0||n&&u.default==="key")&&((l=u.test)==null?void 0:l.test(r))})||t[Ie];if(t.compat){let u=(a=t.compat.find(l=>{var f;return l.default&&((f=l.test)==null?void 0:f.test(r))}))!=null?a:t[Ie];if(o.tag!==u.tag){let l=e.tagString(o.tag),f=e.tagString(u.tag),d=`Value may be parsed as either ${l} or ${f}`;i(s,"TAG_RESOLVE_FAILED",d,!0)}}return o}function Tu(n,e,t){if(e){t===null&&(t=e.length);for(let r=t-1;r>=0;--r){let s=e[r];switch(s.type){case"space":case"comment":case"newline":n-=s.source.length;continue}for(s=e[++r];(s==null?void 0:s.type)==="space";)n+=s.source.length,s=e[++r];break}}return n}var Df={composeNode:so,composeEmptyNode:As};function so(n,e,t,r){let s=n.atKey,{spaceBefore:i,comment:o,anchor:a,tag:u}=t,l,f=!0;switch(e.type){case"alias":l=yf(n,e,r),(a||u)&&r(e,"ALIAS_PROPS","An alias node must not specify any properties");break;case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":case"block-scalar":l=ro(n,e,u,r),a&&(l.anchor=a.source.substring(1));break;case"block-map":case"block-seq":case"flow-collection":l=Eu(Df,n,e,t,r),a&&(l.anchor=a.source.substring(1));break;default:{let d=e.type==="error"?e.message:`Unsupported token (type: ${e.type})`;r(e,"UNEXPECTED_TOKEN",d),l=As(n,e.offset,void 0,null,t,r),f=!1}}return a&&l.anchor===""&&r(a,"BAD_ALIAS","Anchor cannot be an empty string"),s&&n.options.stringKeys&&(!K(l)||typeof l.value!="string"||l.tag&&l.tag!=="tag:yaml.org,2002:str")&&r(u!=null?u:e,"NON_STRING_KEY","With stringKeys, all keys must be strings"),i&&(l.spaceBefore=!0),o&&(e.type==="scalar"&&e.source===""?l.comment=o:l.commentBefore=o),n.options.keepSourceTokens&&f&&(l.srcToken=e),l}function As(n,e,t,r,{spaceBefore:s,comment:i,anchor:o,tag:a,end:u},l){let f={type:"scalar",offset:Tu(e,t,r),indent:-1,source:""},d=ro(n,f,a,l);return o&&(d.anchor=o.source.substring(1),d.anchor===""&&l(o,"BAD_ALIAS","Anchor cannot be an empty string")),s&&(d.spaceBefore=!0),i&&(d.comment=i,d.range[2]=u),d}function yf({options:n},{offset:e,source:t,end:r},s){let i=new Et(t.substring(1));i.source===""&&s(e,"BAD_ALIAS","Alias cannot be an empty string"),i.source.endsWith(":")&&s(e+t.length-1,"BAD_ALIAS","Alias ending in : is ambiguous",!0);let o=e+t.length,a=ut(r,o,n.strict,s);return i.range=[e,o,a.offset],a.comment&&(i.comment=a.comment),i}function Su(n,e,{offset:t,start:r,value:s,end:i},o){let a=Object.assign({_directives:e},n),u=new Nt(void 0,a),l={atKey:!1,atRoot:!0,directives:u.directives,options:u.options,schema:u.schema},f=at(r,{indicator:"doc-start",next:s!=null?s:i==null?void 0:i[0],offset:t,onError:o,parentIndent:0,startOnNewline:!0});f.found&&(u.directives.docStart=!0,s&&(s.type==="block-map"||s.type==="block-seq")&&!f.hasNewline&&o(f.end,"MISSING_CHAR","Block collection cannot start on same line with directives-end marker")),u.contents=s?so(l,s,f,o):As(l,f.end,r,null,f,o);let d=u.contents.range[2],m=ut(i,d,!1,o);return m.comment&&(u.comment=m.comment),u.range=[t,d,m.offset],u}function Or(n){if(typeof n=="number")return[n,n+1];if(Array.isArray(n))return n.length===2?n:[n[0],n[1]];let{offset:e,source:t}=n;return[e,e+(typeof t=="string"?t.length:1)]}function ku(n){var s;let e="",t=!1,r=!1;for(let i=0;i{let o=Or(t);i?this.warnings.push(new vr(o,r,s)):this.errors.push(new Qe(o,r,s))},this.directives=new it({version:e.version||"1.2"}),this.options=e}decorate(e,t){let{comment:r,afterEmptyLine:s}=ku(this.prelude);if(r){let i=e.contents;if(t)e.comment=e.comment?`${e.comment}\n${r}`:r;else if(s||e.directives.docStart||!i)e.commentBefore=r;else if(Z(i)&&!i.flow&&i.items.length>0){let o=i.items[0];H(o)&&(o=o.key);let a=o.commentBefore;o.commentBefore=a?`${r}\n${a}`:r}else{let o=i.commentBefore;i.commentBefore=o?`${r}\n${o}`:r}}t?(Array.prototype.push.apply(e.errors,this.errors),Array.prototype.push.apply(e.warnings,this.warnings)):(e.errors=this.errors,e.warnings=this.warnings),this.prelude=[],this.errors=[],this.warnings=[]}streamInfo(){return{comment:ku(this.prelude).comment,directives:this.directives,errors:this.errors,warnings:this.warnings}}*compose(e,t=!1,r=-1){for(let s of e)yield*S(this.next(s));yield*S(this.end(t,r))}*next(e){switch(e.type){case"directive":this.directives.add(e.source,(t,r,s)=>{let i=Or(e);i[0]+=t,this.onError(i,"BAD_DIRECTIVE",r,s)}),this.prelude.push(e.source),this.atDirectives=!0;break;case"document":{let t=Su(this.options,this.directives,e,this.onError);this.atDirectives&&!t.directives.docStart&&this.onError(e,"MISSING_CHAR","Missing directives-end/doc-start indicator line"),this.decorate(t,!1),this.doc&&(yield this.doc),this.doc=t,this.atDirectives=!1;break}case"byte-order-mark":case"space":break;case"comment":case"newline":this.prelude.push(e.source);break;case"error":{let t=e.source?`${e.message}: ${JSON.stringify(e.source)}`:e.message,r=new Qe(Or(e),"UNEXPECTED_TOKEN",t);this.atDirectives||!this.doc?this.errors.push(r):this.doc.errors.push(r);break}case"doc-end":{if(!this.doc){let r="Unexpected doc-end without preceding document";this.errors.push(new Qe(Or(e),"UNEXPECTED_TOKEN",r));break}this.doc.directives.docEnd=!0;let t=ut(e.end,e.offset+e.source.length,this.doc.options.strict,this.onError);if(this.decorate(this.doc,!0),t.comment){let r=this.doc.comment;this.doc.comment=r?`${r}\n${t.comment}`:t.comment}this.doc.range[2]=t.offset;break}default:this.errors.push(new Qe(Or(e),"UNEXPECTED_TOKEN",`Unsupported token ${e.type}`))}}*end(e=!1,t=-1){if(this.doc)this.decorate(this.doc,!0),yield this.doc,this.doc=null;else if(e){let r=Object.assign({_directives:this.directives},this.options),s=new Nt(void 0,r);this.atDirectives&&this.onError(t,"MISSING_CHAR","Missing directives-end indicator line"),s.range=[0,t,t],this.decorate(s,!1),yield s}}};var io=Symbol("break visit"),gf=Symbol("skip children"),Cu=Symbol("remove item");function Jt(n,e){"type"in n&&n.type==="document"&&(n={start:n.start,value:n.value}),vu(Object.freeze([]),n,e)}Jt.BREAK=io;Jt.SKIP=gf;Jt.REMOVE=Cu;Jt.itemAtPath=(n,e)=>{let t=n;for(let[r,s]of e){let i=t==null?void 0:t[r];if(i&&"items"in i)t=i.items[s];else return}return t};Jt.parentCollection=(n,e)=>{let t=Jt.itemAtPath(n,e.slice(0,-1)),r=e[e.length-1][0],s=t==null?void 0:t[r];if(s&&"items"in s)return s;throw new Error("Parent collection not found")};function vu(n,e,t){let r=t(e,n);if(typeof r=="symbol")return r;for(let s of["key","value"]){let i=e[s];if(i&&"items"in i){for(let o=0;o":return"block-scalar-header"}return null}function Xe(n){switch(n){case void 0:case" ":case`\n`:case"\\r":case" ":return!0;default:return!1}}var Ou=new Set("0123456789ABCDEFabcdef"),Ff=new Set("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-#;/?:@&=+$_.!~*\'()"),_s=new Set(",[]{}"),Ef=new Set(` ,[]{}\n\\r `),lo=n=>!n||Ef.has(n),Lr=class{constructor(){this.atEnd=!1,this.blockScalarIndent=-1,this.blockScalarKeep=!1,this.buffer="",this.flowKey=!1,this.flowLevel=0,this.indentNext=0,this.indentValue=0,this.lineEndPos=null,this.next=null,this.pos=0}*lex(e,t=!1){var s;if(e){if(typeof e!="string")throw TypeError("source is not a string");this.buffer=this.buffer?this.buffer+e:e,this.lineEndPos=null}this.atEnd=!t;let r=(s=this.next)!=null?s:"stream";for(;r&&(t||this.hasChars(1));)r=yield*S(this.parseNext(r))}atLineEnd(){let e=this.pos,t=this.buffer[e];for(;t===" "||t===" ";)t=this.buffer[++e];return!t||t==="#"||t===`\n`?!0:t==="\\r"?this.buffer[e+1]===`\n`:!1}charAt(e){return this.buffer[this.pos+e]}continueScalar(e){let t=this.buffer[e];if(this.indentNext>0){let r=0;for(;t===" ";)t=this.buffer[++r+e];if(t==="\\r"){let s=this.buffer[r+e+1];if(s===`\n`||!s&&!this.atEnd)return e+r+1}return t===`\n`||r>=this.indentNext||!t&&!this.atEnd?e+r:-1}if(t==="-"||t==="."){let r=this.buffer.substr(e,3);if((r==="---"||r==="...")&&Xe(this.buffer[e+3]))return-1}return e}getLine(){let e=this.lineEndPos;return(typeof e!="number"||e!==-1&ðis.indentValue&&!Xe(this.charAt(1))&&(this.indentNext=this.indentValue),yield*S(this.parseBlockStart())}*parseBlockStart(){let[e,t]=this.peek(2);if(!t&&!this.atEnd)return this.setNext("block-start");if((e==="-"||e==="?"||e===":")&&Xe(t)){let r=(yield*S(this.pushCount(1)))+(yield*S(this.pushSpaces(!0)));return this.indentNext=this.indentValue+1,this.indentValue+=r,yield*S(this.parseBlockStart())}return"doc"}*parseDocument(){yield*S(this.pushSpaces(!0));let e=this.getLine();if(e===null)return this.setNext("doc");let t=yield*S(this.pushIndicators());switch(e[t]){case"#":yield*S(this.pushCount(e.length-t));case void 0:return yield*S(this.pushNewline()),yield*S(this.parseLineStart());case"{":case"[":return yield*S(this.pushCount(1)),this.flowKey=!1,this.flowLevel=1,"flow";case"}":case"]":return yield*S(this.pushCount(1)),"doc";case"*":return yield*S(this.pushUntil(lo)),"doc";case\'"\':case"\'":return yield*S(this.parseQuotedScalar());case"|":case">":return t+=yield*S(this.parseBlockScalarHeader()),t+=yield*S(this.pushSpaces(!0)),yield*S(this.pushCount(e.length-t)),yield*S(this.pushNewline()),yield*S(this.parseBlockScalar());default:return yield*S(this.parsePlainScalar())}}*parseFlowCollection(){let e,t,r=-1;do e=yield*S(this.pushNewline()),e>0?(t=yield*S(this.pushSpaces(!1)),this.indentValue=r=t):t=0,t+=yield*S(this.pushSpaces(!0));while(e+t>0);let s=this.getLine();if(s===null)return this.setNext("flow");if((r!==-1&&r"0"&&t<="9")this.blockScalarIndent=Number(t)-1;else if(t!=="-")break}return yield*S(this.pushUntil(t=>Xe(t)||t==="#"))}*parseBlockScalar(){let e=this.pos-1,t=0,r;e:for(let i=this.pos;r=this.buffer[i];++i)switch(r){case" ":t+=1;break;case`\n`:e=i,t=0;break;case"\\r":{let o=this.buffer[i+1];if(!o&&!this.atEnd)return this.setNext("block-scalar");if(o===`\n`)break}default:break e}if(!r&&!this.atEnd)return this.setNext("block-scalar");if(t>=this.indentNext){this.blockScalarIndent===-1?this.indentNext=t:this.indentNext=this.blockScalarIndent+(this.indentNext===0?1:this.indentNext);do{let i=this.continueScalar(e+1);if(i===-1)break;e=this.buffer.indexOf(`\n`,i)}while(e!==-1);if(e===-1){if(!this.atEnd)return this.setNext("block-scalar");e=this.buffer.length}}let s=e+1;for(r=this.buffer[s];r===" ";)r=this.buffer[++s];if(r===" "){for(;r===" "||r===" "||r==="\\r"||r===`\n`;)r=this.buffer[++s];e=s-1}else if(!this.blockScalarKeep)do{let i=e-1,o=this.buffer[i];o==="\\r"&&(o=this.buffer[--i]);let a=i;for(;o===" ";)o=this.buffer[--i];if(o===`\n`&&i>=this.pos&&i+1+t>a)e=i;else break}while(!0);return yield Ms,yield*S(this.pushToIndex(e+1,!0)),yield*S(this.parseLineStart())}*parsePlainScalar(){let e=this.flowLevel>0,t=this.pos-1,r=this.pos-1,s;for(;s=this.buffer[++r];)if(s===":"){let i=this.buffer[r+1];if(Xe(i)||e&&_s.has(i))break;t=r}else if(Xe(s)){let i=this.buffer[r+1];if(s==="\\r"&&(i===`\n`?(r+=1,s=`\n`,i=this.buffer[r+1]):t=r),i==="#"||e&&_s.has(i))break;if(s===`\n`){let o=this.continueScalar(r+1);if(o===-1)break;r=Math.max(r,o-2)}}else{if(e&&_s.has(s))break;t=r}return!s&&!this.atEnd?this.setNext("plain-scalar"):(yield Ms,yield*S(this.pushToIndex(t+1,!0)),e?"flow":"doc")}*pushCount(e){return e>0?(yield this.buffer.substr(this.pos,e),this.pos+=e,e):0}*pushToIndex(e,t){let r=this.buffer.slice(this.pos,e);return r?(yield r,this.pos+=r.length,r.length):(t&&(yield""),0)}*pushIndicators(){switch(this.charAt(0)){case"!":return(yield*S(this.pushTag()))+(yield*S(this.pushSpaces(!0)))+(yield*S(this.pushIndicators()));case"&":return(yield*S(this.pushUntil(lo)))+(yield*S(this.pushSpaces(!0)))+(yield*S(this.pushIndicators()));case"-":case"?":case":":{let e=this.flowLevel>0,t=this.charAt(1);if(Xe(t)||e&&_s.has(t))return e?this.flowKey&&(this.flowKey=!1):this.indentNext=this.indentValue+1,(yield*S(this.pushCount(1)))+(yield*S(this.pushSpaces(!0)))+(yield*S(this.pushIndicators()))}}return 0}*pushTag(){if(this.charAt(1)==="<"){let e=this.pos+2,t=this.buffer[e];for(;!Xe(t)&&t!==">";)t=this.buffer[++e];return yield*S(this.pushToIndex(t===">"?e+1:e,!1))}else{let e=this.pos+1,t=this.buffer[e];for(;t;)if(Ff.has(t))t=this.buffer[++e];else if(t==="%"&&Ou.has(this.buffer[e+1])&&Ou.has(this.buffer[e+2]))t=this.buffer[e+=3];else break;return yield*S(this.pushToIndex(e,!1))}}*pushNewline(){let e=this.buffer[this.pos];return e===`\n`?yield*S(this.pushCount(1)):e==="\\r"&&this.charAt(1)===`\n`?yield*S(this.pushCount(2)):0}*pushSpaces(e){let t=this.pos-1,r;do r=this.buffer[++t];while(r===" "||e&&r===" ");let s=t-this.pos;return s>0&&(yield this.buffer.substr(this.pos,s),this.pos=t),s}*pushUntil(e){let t=this.pos,r=this.buffer[t];for(;!e(r);)r=this.buffer[++t];return yield*S(this.pushToIndex(t,!1))}};var Nr=class{constructor(){this.lineStarts=[],this.addNewLine=e=>this.lineStarts.push(e),this.linePos=e=>{let t=0,r=this.lineStarts.length;for(;t>1;this.lineStarts[i]=0;)switch(n[e].type){case"doc-start":case"explicit-key-ind":case"map-value-ind":case"seq-item-ind":case"newline":break e}for(;((t=n[++e])==null?void 0:t.type)==="space";);return n.splice(e,n.length)}function Lu(n){if(n.start.type==="flow-seq-start")for(let e of n.items)e.sep&&!e.value&&!zt(e.start,"explicit-key-ind")&&!zt(e.sep,"map-value-ind")&&(e.key&&(e.value=e.key),delete e.key,Nu(e.value)?e.value.end?Array.prototype.push.apply(e.value.end,e.sep):e.value.end=e.sep:Array.prototype.push.apply(e.start,e.sep),delete e.sep)}var Ar=class{constructor(e){this.atNewLine=!0,this.atScalar=!1,this.indent=0,this.offset=0,this.onKeyLine=!1,this.stack=[],this.source="",this.type="",this.lexer=new Lr,this.onNewLine=e}*parse(e,t=!1){this.onNewLine&&this.offset===0&&this.onNewLine(0);for(let r of this.lexer.lex(e,t))yield*S(this.next(r));t||(yield*S(this.end()))}*next(e){if(this.source=e,this.atScalar){this.atScalar=!1,yield*S(this.step()),this.offset+=e.length;return}let t=xu(e);if(t)if(t==="scalar")this.atNewLine=!1,this.atScalar=!0,this.type="scalar";else{switch(this.type=t,yield*S(this.step()),t){case"newline":this.atNewLine=!0,this.indent=0,this.onNewLine&&this.onNewLine(this.offset+e.length);break;case"space":this.atNewLine&&e[0]===" "&&(this.indent+=e.length);break;case"explicit-key-ind":case"map-value-ind":case"seq-item-ind":this.atNewLine&&(this.indent+=e.length);break;case"doc-mode":case"flow-error-end":return;default:this.atNewLine=!1}this.offset+=e.length}else{let r=`Not a YAML token: ${e}`;yield*S(this.pop({type:"error",offset:this.offset,message:r,source:e})),this.offset+=e.length}}*end(){for(;this.stack.length>0;)yield*S(this.pop())}get sourceToken(){return{type:this.type,offset:this.offset,indent:this.indent,source:this.source}}*step(){let e=this.peek(1);if(this.type==="doc-end"&&(!e||e.type!=="doc-end")){for(;this.stack.length>0;)yield*S(this.pop());this.stack.push({type:"doc-end",offset:this.offset,source:this.source});return}if(!e)return yield*S(this.stream());switch(e.type){case"document":return yield*S(this.document(e));case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return yield*S(this.scalar(e));case"block-scalar":return yield*S(this.blockScalar(e));case"block-map":return yield*S(this.blockMap(e));case"block-seq":return yield*S(this.blockSequence(e));case"flow-collection":return yield*S(this.flowCollection(e));case"doc-end":return yield*S(this.documentEnd(e))}yield*S(this.pop())}peek(e){return this.stack[this.stack.length-e]}*pop(e){let t=e!=null?e:this.stack.pop();if(!t)yield{type:"error",offset:this.offset,source:"",message:"Tried to pop an empty stack"};else if(this.stack.length===0)yield t;else{let r=this.peek(1);switch(t.type==="block-scalar"?t.indent="indent"in r?r.indent:0:t.type==="flow-collection"&&r.type==="document"&&(t.indent=0),t.type==="flow-collection"&&Lu(t),r.type){case"document":r.value=t;break;case"block-scalar":r.props.push(t);break;case"block-map":{let s=r.items[r.items.length-1];if(s.value){r.items.push({start:[],key:t,sep:[]}),this.onKeyLine=!0;return}else if(s.sep)s.value=t;else{Object.assign(s,{key:t,sep:[]}),this.onKeyLine=!s.explicitKey;return}break}case"block-seq":{let s=r.items[r.items.length-1];s.value?r.items.push({start:[],value:t}):s.value=t;break}case"flow-collection":{let s=r.items[r.items.length-1];!s||s.value?r.items.push({start:[],key:t,sep:[]}):s.sep?s.value=t:Object.assign(s,{key:t,sep:[]});return}default:yield*S(this.pop()),yield*S(this.pop(t))}if((r.type==="document"||r.type==="block-map"||r.type==="block-seq")&&(t.type==="block-map"||t.type==="block-seq")){let s=t.items[t.items.length-1];s&&!s.sep&&!s.value&&s.start.length>0&&Iu(s.start)===-1&&(t.indent===0||s.start.every(i=>i.type!=="comment"||i.indent=e.indent){let s=!this.onKeyLine&&this.indent===e.indent,i=s&&(t.sep||t.explicitKey)&&this.type!=="seq-item-ind",o=[];if(i&&t.sep&&!t.value){let a=[];for(let u=0;ue.indent&&(a.length=0);break;default:a.length=0}}a.length>=2&&(o=t.sep.splice(a[1]))}switch(this.type){case"anchor":case"tag":i||t.value?(o.push(this.sourceToken),e.items.push({start:o}),this.onKeyLine=!0):t.sep?t.sep.push(this.sourceToken):t.start.push(this.sourceToken);return;case"explicit-key-ind":!t.sep&&!t.explicitKey?(t.start.push(this.sourceToken),t.explicitKey=!0):i||t.value?(o.push(this.sourceToken),e.items.push({start:o,explicitKey:!0})):this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken],explicitKey:!0}]}),this.onKeyLine=!0;return;case"map-value-ind":if(t.explicitKey)if(t.sep)if(t.value)e.items.push({start:[],key:null,sep:[this.sourceToken]});else if(zt(t.sep,"map-value-ind"))this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:o,key:null,sep:[this.sourceToken]}]});else if(Nu(t.key)&&!zt(t.sep,"newline")){let a=Nn(t.start),u=t.key,l=t.sep;l.push(this.sourceToken),delete t.key,delete t.sep,this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:a,key:u,sep:l}]})}else o.length>0?t.sep=t.sep.concat(o,this.sourceToken):t.sep.push(this.sourceToken);else if(zt(t.start,"newline"))Object.assign(t,{key:null,sep:[this.sourceToken]});else{let a=Nn(t.start);this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:a,key:null,sep:[this.sourceToken]}]})}else t.sep?t.value||i?e.items.push({start:o,key:null,sep:[this.sourceToken]}):zt(t.sep,"map-value-ind")?this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:[],key:null,sep:[this.sourceToken]}]}):t.sep.push(this.sourceToken):Object.assign(t,{key:null,sep:[this.sourceToken]});this.onKeyLine=!0;return;case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":{let a=this.flowScalar(this.type);i||t.value?(e.items.push({start:o,key:a,sep:[]}),this.onKeyLine=!0):t.sep?this.stack.push(a):(Object.assign(t,{key:a,sep:[]}),this.onKeyLine=!0);return}default:{let a=this.startBlockValue(e);if(a){s&&a.type!=="block-seq"&&e.items.push({start:o}),this.stack.push(a);return}}}}yield*S(this.pop()),yield*S(this.step())}*blockSequence(e){var r;let t=e.items[e.items.length-1];switch(this.type){case"newline":if(t.value){let s="end"in t.value?t.value.end:void 0,i=Array.isArray(s)?s[s.length-1]:void 0;(i==null?void 0:i.type)==="comment"?s==null||s.push(this.sourceToken):e.items.push({start:[this.sourceToken]})}else t.start.push(this.sourceToken);return;case"space":case"comment":if(t.value)e.items.push({start:[this.sourceToken]});else{if(this.atIndentedComment(t.start,e.indent)){let s=e.items[e.items.length-2],i=(r=s==null?void 0:s.value)==null?void 0:r.end;if(Array.isArray(i)){Array.prototype.push.apply(i,t.start),i.push(this.sourceToken),e.items.pop();return}}t.start.push(this.sourceToken)}return;case"anchor":case"tag":if(t.value||this.indent<=e.indent)break;t.start.push(this.sourceToken);return;case"seq-item-ind":if(this.indent!==e.indent)break;t.value||zt(t.start,"seq-item-ind")?e.items.push({start:[this.sourceToken]}):t.start.push(this.sourceToken);return}if(this.indent>e.indent){let s=this.startBlockValue(e);if(s){this.stack.push(s);return}}yield*S(this.pop()),yield*S(this.step())}*flowCollection(e){let t=e.items[e.items.length-1];if(this.type==="flow-error-end"){let r;do yield*S(this.pop()),r=this.peek(1);while(r&&r.type==="flow-collection")}else if(e.end.length===0){switch(this.type){case"comma":case"explicit-key-ind":!t||t.sep?e.items.push({start:[this.sourceToken]}):t.start.push(this.sourceToken);return;case"map-value-ind":!t||t.value?e.items.push({start:[],key:null,sep:[this.sourceToken]}):t.sep?t.sep.push(this.sourceToken):Object.assign(t,{key:null,sep:[this.sourceToken]});return;case"space":case"comment":case"newline":case"anchor":case"tag":!t||t.value?e.items.push({start:[this.sourceToken]}):t.sep?t.sep.push(this.sourceToken):t.start.push(this.sourceToken);return;case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":{let s=this.flowScalar(this.type);!t||t.value?e.items.push({start:[],key:s,sep:[]}):t.sep?this.stack.push(s):Object.assign(t,{key:s,sep:[]});return}case"flow-map-end":case"flow-seq-end":e.end.push(this.sourceToken);return}let r=this.startBlockValue(e);r?this.stack.push(r):(yield*S(this.pop()),yield*S(this.step()))}else{let r=this.peek(2);if(r.type==="block-map"&&(this.type==="map-value-ind"&&r.indent===e.indent||this.type==="newline"&&!r.items[r.items.length-1].sep))yield*S(this.pop()),yield*S(this.step());else if(this.type==="map-value-ind"&&r.type!=="flow-collection"){let s=Bs(r),i=Nn(s);Lu(e);let o=e.end.splice(1,e.end.length);o.push(this.sourceToken);let a={type:"block-map",offset:e.offset,indent:e.indent,items:[{start:i,key:e,sep:o}]};this.onKeyLine=!0,this.stack[this.stack.length-1]=a}else yield*S(this.lineEnd(e))}}flowScalar(e){if(this.onNewLine){let t=this.source.indexOf(`\n`)+1;for(;t!==0;)this.onNewLine(this.offset+t),t=this.source.indexOf(`\n`,t)+1}return{type:e,offset:this.offset,indent:this.indent,source:this.source}}startBlockValue(e){switch(this.type){case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return this.flowScalar(this.type);case"block-scalar-header":return{type:"block-scalar",offset:this.offset,indent:this.indent,props:[this.sourceToken],source:""};case"flow-map-start":case"flow-seq-start":return{type:"flow-collection",offset:this.offset,indent:this.indent,start:this.sourceToken,items:[],end:[]};case"seq-item-ind":return{type:"block-seq",offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken]}]};case"explicit-key-ind":{this.onKeyLine=!0;let t=Bs(e),r=Nn(t);return r.push(this.sourceToken),{type:"block-map",offset:this.offset,indent:this.indent,items:[{start:r,explicitKey:!0}]}}case"map-value-ind":{this.onKeyLine=!0;let t=Bs(e),r=Nn(t);return{type:"block-map",offset:this.offset,indent:this.indent,items:[{start:r,key:null,sep:[this.sourceToken]}]}}}return null}atIndentedComment(e,t){return this.type!=="comment"||this.indent<=t?!1:e.every(r=>r.type==="newline"||r.type==="space")}*documentEnd(e){this.type!=="doc-mode"&&(e.end?e.end.push(this.sourceToken):e.end=[this.sourceToken],this.type==="newline"&&(yield*S(this.pop())))}*lineEnd(e){switch(this.type){case"comma":case"doc-start":case"doc-end":case"flow-seq-end":case"flow-map-end":case"map-value-ind":yield*S(this.pop()),yield*S(this.step());break;case"newline":this.onKeyLine=!1;case"space":case"comment":default:e.end?e.end.push(this.sourceToken):e.end=[this.sourceToken],this.type==="newline"&&(yield*S(this.pop()))}}};function wf(n){let e=n.prettyErrors!==!1;return{lineCounter:n.lineCounter||e&&new Nr||null,prettyErrors:e}}function Au(n,e={}){let{lineCounter:t,prettyErrors:r}=wf(e),s=new Ar(t==null?void 0:t.addNewLine),i=new Ir(e),o=null;for(let a of i.compose(s.parse(n),!0,n.length))if(!o)o=a;else if(o.options.logLevel!=="silent"){o.errors.push(new Qe(a.range.slice(0,2),"MULTIPLE_DOCS","Source contains multiple documents; please use YAML.parseAllDocuments()"));break}return r&&t&&(o.errors.forEach(Zi(n,t)),o.warnings.forEach(Zi(n,t))),o}function co(n,e,t){let r;typeof e=="function"?r=e:t===void 0&&e&&typeof e=="object"&&(t=e);let s=Au(n,t);if(!s)return null;if(s.warnings.forEach(i=>ms(s.options.logLevel,i)),s.errors.length>0){if(s.options.logLevel!=="silent")throw s.errors[0];s.errors=[]}return s.toJS(Object.assign({reviver:r},t))}var js=Vr(Ru());var F=Vr(ns());var et;(N=>{N.DEFAULT_TO_STRING={nullRepresentation:"-",dateFormat:"MMMM dd, yyyy",dateTimeFormat:"h:mm a - MMMM dd, yyyy"};function e(y,w=N.DEFAULT_TO_STRING,v=!1){let x=t(y);if(!x)return w.nullRepresentation;switch(x.type){case"null":return w.nullRepresentation;case"string":return x.value;case"number":case"boolean":return""+x.value;case"link":return x.value.markdown();case"function":return"";case"array":let C="";return v&&(C+="["),C+=x.value.map(V=>e(V,w,!0)).join(", "),v&&(C+="]"),C;case"object":return"{ "+Object.entries(x.value).map(V=>V[0]+": "+e(V[1],w,!0)).join(", ")+" }";case"date":return ja(x.value,w.dateFormat,w.dateTimeFormat);case"duration":return qa(x.value)}}N.toString=e;function t(y){return h(y)?{type:"null",value:y}:f(y)?{type:"number",value:y}:l(y)?{type:"string",value:y}:g(y)?{type:"boolean",value:y}:m(y)?{type:"duration",value:y}:d(y)?{type:"date",value:y}:b(y)?{type:"array",value:y}:D(y)?{type:"link",value:y}:I(y)?{type:"function",value:y}:T(y)?{type:"object",value:y}:void 0}N.wrapValue=t;function r(y,w){if(T(y)){let v={};for(let[x,C]of Object.entries(y))v[x]=r(C,w);return v}else if(b(y)){let v=[];for(let x of y)v.push(r(x,w));return v}else return w(y)}N.mapLeaves=r;function s(y,w){return i(y,w)==0}N.equals=s;function i(y,w,v){var V,j;if(y===w||(y===void 0&&(y=null),w===void 0&&(w=null),y===null&&w===null))return 0;if(y===null)return-1;if(w===null)return 1;let x=t(y),C=t(w);if(x===void 0&&C===void 0)return 0;if(x===void 0)return-1;if(C===void 0)return 1;if(x.type!=C.type)return x.type.localeCompare(C.type);if(x.value===C.value)return 0;switch(x.type){case"string":return x.value.localeCompare(C.value);case"number":return x.valueAe,O=ae(Y.path).localeCompare(ae(ee.path));if(O!=0)return O;let $=Y.type.localeCompare(ee.type);return $!=0?$:Y.subpath&&!ee.subpath?1:!Y.subpath&&ee.subpath?-1:!Y.subpath&&!ee.subpath?0:((V=Y.subpath)!=null?V:"").localeCompare((j=ee.subpath)!=null?j:"");case"date":return x.value0;case"boolean":return w.value;case"link":return!!w.value.path;case"date":return w.value.toMillis()!=0;case"duration":return w.value.as("seconds")!=0;case"object":return Object.keys(w.value).length>0;case"array":return w.value.length>0;case"null":return!1;case"function":return!0}}N.isTruthy=a;function u(y){if(y==null)return y;if(N.isArray(y))return[].concat(y.map(w=>u(w)));if(N.isObject(y)){let w={};for(let[v,x]of Object.entries(y))w[v]=u(x);return w}else return y}N.deepCopy=u;function l(y){return typeof y=="string"}N.isString=l;function f(y){return typeof y=="number"}N.isNumber=f;function d(y){return y instanceof q}N.isDate=d;function m(y){return y instanceof B}N.isDuration=m;function h(y){return y==null}N.isNull=h;function b(y){return Array.isArray(y)}N.isArray=b;function g(y){return typeof y=="boolean"}N.isBoolean=g;function D(y){return y instanceof Oe}N.isLink=D;function T(y){return y!==void 0&&typeof y=="object"&&!b(y)&&!m(y)&&!d(y)&&!D(y)&&!h(y)}N.isObject=T;function I(y){return typeof y=="function"}N.isFunction=I})(et||(et={}));var ju;(i=>{function n(o){return et.isObject(o)&&Object.keys(o).length==2&&"key"in o&&"rows"in o}i.isElementGroup=n;function e(o){for(let a of o)if(!n(a))return!1;return!0}i.isGrouping=e;function t(o){for(let a of o)if(n(a))return!1;return!0}i.isLeaf=t;function r(o){if(n(o))return r(o.rows);if(e(o)){let a=0;for(let u of o)a+=r(u.rows);return a}else return o.length}i.count=r;function s(o,a,u){if(u<=a)return[];if(t(o))return o.slice(a,u);let l=0,f=0;for(;l=o.length)return[];let d=[];for(;l{function n(u){return new ho(u)}a.success=n;function e(u){return new mo(u)}a.failure=e;function t(u,l,f){return u.successful?l.successful?f(u.value,l.value):e(l.error):e(u.error)}a.flatMap2=t;function r(u,l,f){return t(u,l,(d,m)=>n(f(d,m)))}a.map2=r;function s(u,l){let f=[];for(let d of u){let m=l(d);if(!m.successful)return m.cast();f.push(m.value)}return a.success(f)}a.mapAll=s;function i(u){try{return a.success(u())}catch(l){return a.failure(l)}}a.trying=i;async function o(u){try{return a.success(await u)}catch(l){return a.failure(l)}}a.async=o})(Se||(Se={}));var Yt;(N=>{N.EVERYTHING={type:"everything"},N.NOTHING={type:"nothing"},N.EMPTY_SET=new Set;function r(y){return y.size==0?N.NOTHING:{type:"atom",value:y}}N.atom=r;function s(y){return y?N.EVERYTHING:N.NOTHING}N.constant=s;function i(y){return y!==void 0?r(y):N.NOTHING}N.nullableAtom=i;function o(y){return y.size==0?N.EVERYTHING:{type:"negated",value:y}}N.negated=o;function a(y){switch(y.type){case"everything":return N.NOTHING;case"nothing":return N.EVERYTHING;case"atom":return o(y.value);case"negated":return r(y.value)}}N.negate=a;function u(y){switch(y.type){case"everything":return!1;case"negated":return!1;case"atom":return y.value.size==0;case"nothing":return!0}}N.empty=u;function l(y,w){switch(y.type){case"everything":return w;case"nothing":return N.EMPTY_SET;case"atom":return y.value;case"negated":return I(w,y.value)}}N.resolve=l;function f(y){return d(y,w=>w)}N.intersect=f;function d(y,w){return m(y,v=>Se.success(w(v))).orElseThrow()}N.lazyIntersect=d;function m(y,w){let v=[],x=[];for(let C of y){let V=w(C);if(!V.successful)return V.cast();let j=V.value;if(j!==void 0){if(u(j))return Se.success(N.NOTHING);j.type!=="everything"&&(j.type=="atom"?v.push(j.value):j.type=="negated"&&x.push(j.value))}}return v.length==0&&x.length==0?Se.success(N.EVERYTHING):v.length>0&&x.length==0?Se.success(r(D(v))):v.length==0&&x.length>0?Se.success(o(T(x))):Se.success(N.atom(I(D(v),T(x))))}N.lazyFailableIntersection=m;function h(y){return b(y,w=>w)}N.union=h;function b(y,w){return g(y,v=>Se.success(w(v))).orElseThrow()}N.lazyUnion=b;function g(y,w){let v=[],x=[];for(let C of y){let V=w(C);if(!V.successful)return V.cast();let j=V.value;if(j!==void 0){if(j.type==="everything")return Se.success(N.EVERYTHING);u(j)||(j.type=="atom"?v.push(j.value):j.type=="negated"&&x.push(j.value))}}return v.length==0&&x.length==0?Se.success(N.NOTHING):v.length>0&&x.length==0?Se.success(N.atom(T(v))):v.length==0&&x.length>0?Se.success(N.negated(D(x))):Se.success(o(I(D(x),T(v))))}N.lazyFailableUnion=g;function D(y){if(y.length==0)return new Set;if(y.length==1)return y[0];let w=[].concat(y).sort((v,x)=>v.size-x.size);for(;w.length>1;){let v=new Set,x=w.pop();for(let C of w[0])x.has(C)&&v.add(C);w[0]=v}return w[0]}N.setIntersect=D;function T(y){if(y.length==0)return new Set;if(y.length==1)return y[0];let w=new Set;for(let v of y)for(let x of v)w.add(x);return w}N.setUnion=T;function I(y,w){if(y.size>w.size){let v=new Set(y);for(let x of w)v.delete(x);return v}else{let v=new Set;for(let x of y)w.has(x)||v.add(x);return v}}N.setIntersectNegation=I})(Yt||(Yt={}));var se;(g=>{g.ROW="$row";function e(D){return{type:"variable",name:D}}g.variable=e;function t(D){return{type:"literal",value:D}}g.literal=t;function r(D,T,I){return{type:"binaryop",left:D,op:T,right:I}}g.binaryOp=r;function s(D,T){return{type:"binaryop",left:D,right:T,op:"index"}}g.index=s;function i(D){let T=D.split("."),I=g.variable(T[0]);for(let N=1;N"||D==">="||D=="!="||D=="="}g.isCompareOp=d;function m(D,T=new Set([g.ROW])){switch(D.type){case"binaryop":return D.op==="index"&&D.left.type=="variable"&&D.left.name==g.ROW&&D.right.type=="literal"&&et.isString(D.right.value)?T.has(D.right.value)?new Set:new Set([D.right.value]):Yt.setUnion([m(D.left,T),m(D.right,T)]);case"function":return Yt.setUnion(D.arguments.map(N=>m(N,T)));case"lambda":let I=T!=null?T:new Set;for(let N of D.arguments)I.add(N);return m(D.value,I);case"list":return Yt.setUnion(D.values.map(N=>m(N,T)));case"negated":return m(D.child,T);case"object":return Yt.setUnion(Object.values(D.values).map(N=>m(N,T)));case"variable":return T&&T.has(D.name)?new Set:new Set([D.name]);case"literal":return new Set}}g.unboundVariables=m;function h(D){switch(D.type){case"binaryop":return D.op==="index"?`${h(D.left)}[${h(D.right)}]`:`${h(D.left)} ${D.op} ${h(D.right)}`;case"function":return`${h(D.func)}(${D.arguments.map(h).join(", ")})`;case"lambda":return`(${D.arguments.join(", ")}) => ${h(D.value)}`;case"list":return`[${D.values.map(h).join(", ")}]`;case"negated":return`!${h(D.child)}`;case"object":return`{${Object.entries(D.values).map(([I,N])=>`${I}: ${h(N)}`).join(", ")}}`;case"variable":return D.name;case"literal":let T=et.wrapValue(D.value);if(!T)return"null";switch(T.type){case"string":return`"${T.value}"`;default:return et.toString(T.value)}}}g.toString=h,g.NULL=g.literal(null)})(se||(se={}));var z=F.createLanguage({number:n=>F.regexp(/-?[0-9]+(\\.[0-9]+)?/).map(e=>Number.parseFloat(e)).desc("number"),string:n=>F.string(\'"\').then(F.alt(n.escapeCharacter,F.noneOf(\'"\\\\\')).atLeast(0).map(e=>e.join(""))).skip(F.string(\'"\')).desc("string"),escapeCharacter:n=>F.string("\\\\").then(F.any).map(e=>e===\'"\'?\'"\':e==="\\\\"?"\\\\":"\\\\"+e),bool:n=>F.regexp(/true|false|True|False/).map(e=>e.toLowerCase()=="true").desc("boolean"),tag:n=>F.seqMap(F.string("#"),F.alt(F.regexp(/[^\\u2000-\\u206F\\u2E00-\\u2E7F\'!"#$%&()*+,.:;<=>?@^`{|}~\\[\\]\\\\\\s]/).desc("text")).many(),(e,t)=>e+t.join("")).desc("tag"),identifier:n=>F.seqMap(F.alt(F.regexp(/[\\p{Letter}$]/u),F.regexp(qu).desc("text")),F.alt(F.regexp(/[0-9\\p{Letter}$_-]/u),F.regexp(qu).desc("text")).many(),(e,t)=>e+t.join("")).desc("variable"),link:n=>F.regexp(/\\[\\[([^\\[\\]]*?)\\]\\]/u,1).map(e=>Oe.parseInner(e)).desc("file link"),embedLink:n=>F.seqMap(F.string("!").atMost(1),n.link,(e,t)=>(e.length>0&&(t.embed=!0),t)).desc("file link"),binaryPlusMinus:n=>F.regexp(/\\+|-/).map(e=>e).desc("\'+\' or \'-\'"),binaryMulDiv:n=>F.regexp(/\\*|\\/|%/).map(e=>e).desc("\'*\' or \'/\' or \'%\'"),binaryCompareOp:n=>F.regexp(/>=|<=|!=|>|<|=/).map(e=>e).desc("\'>=\' or \'<=\' or \'!=\' or \'=\' or \'>\' or \'<\'"),binaryAndOp:n=>F.regexp(/and|&/i).map(e=>"&").desc("\'and\'"),binaryOrOp:n=>F.regexp(/or|\\|/i).map(e=>"|").desc("\'or\'"),rootDate:n=>F.seqMap(F.regexp(/\\d{4}/),F.string("-"),F.regexp(/\\d{2}/),(e,t,r)=>q.fromObject({year:Number.parseInt(e),month:Number.parseInt(r)})).desc("date in format YYYY-MM[-DDTHH-MM-SS.MS]"),dateShorthand:n=>F.alt(...Object.keys(Uu).sort((e,t)=>t.length-e.length).map(F.string)),date:n=>Of(n.rootDate,e=>F.seqMap(F.string("-"),F.regexp(/\\d{2}/),(t,r)=>e.set({day:Number.parseInt(r)})),e=>F.seqMap(F.string("T"),F.regexp(/\\d{2}/),(t,r)=>e.set({hour:Number.parseInt(r)})),e=>F.seqMap(F.string(":"),F.regexp(/\\d{2}/),(t,r)=>e.set({minute:Number.parseInt(r)})),e=>F.seqMap(F.string(":"),F.regexp(/\\d{2}/),(t,r)=>e.set({second:Number.parseInt(r)})),e=>F.alt(F.seqMap(F.string("."),F.regexp(/\\d{3}/),(t,r)=>e.set({millisecond:Number.parseInt(r)})),F.succeed(e)),e=>F.alt(F.seqMap(F.string("+").or(F.string("-")),F.regexp(/\\d{1,2}(:\\d{2})?/),(t,r)=>e.setZone("UTC"+t+r,{keepLocalTime:!0})),F.seqMap(F.string("Z"),()=>e.setZone("utc",{keepLocalTime:!0})),F.seqMap(F.string("["),F.regexp(/[0-9A-Za-z+-\\/]+/u),F.string("]"),(t,r,s)=>e.setZone(r,{keepLocalTime:!0})))).assert(e=>e.isValid,"valid date").desc("date in format YYYY-MM[-DDTHH-MM-SS.MS]"),datePlus:n=>F.alt(n.dateShorthand.map(e=>Uu[e]()),n.date).desc("date in format YYYY-MM[-DDTHH-MM-SS.MS] or in shorthand"),durationType:n=>F.alt(...Object.keys(Vu).sort((e,t)=>t.length-e.length).map(F.string)),duration:n=>F.seqMap(n.number,F.optWhitespace,n.durationType,(e,t,r)=>Vu[r].mapUnits(s=>s*e)).sepBy1(F.string(",").trim(F.optWhitespace).or(F.optWhitespace)).map(e=>e.reduce((t,r)=>t.plus(r))).desc("duration like 4hr2min"),rawNull:n=>F.string("null"),atomInlineField:n=>F.alt(n.date,n.duration.map(e=>Mi(e)),n.string,n.tag,n.embedLink,n.bool,n.number,n.rawNull),inlineFieldList:n=>n.atomInlineField.sepBy(F.string(",").trim(F.optWhitespace).lookahead(n.atomInlineField)),inlineField:n=>F.alt(F.seqMap(n.atomInlineField,F.string(",").trim(F.optWhitespace),n.inlineFieldList,(e,t,r)=>[e].concat(r)),n.atomInlineField)}),qu=new RegExp(Fn(),""),Vu={year:B.fromObject({years:1}),years:B.fromObject({years:1}),yr:B.fromObject({years:1}),yrs:B.fromObject({years:1}),month:B.fromObject({months:1}),months:B.fromObject({months:1}),mo:B.fromObject({months:1}),mos:B.fromObject({months:1}),week:B.fromObject({weeks:1}),weeks:B.fromObject({weeks:1}),wk:B.fromObject({weeks:1}),wks:B.fromObject({weeks:1}),w:B.fromObject({weeks:1}),day:B.fromObject({days:1}),days:B.fromObject({days:1}),d:B.fromObject({days:1}),hour:B.fromObject({hours:1}),hours:B.fromObject({hours:1}),hr:B.fromObject({hours:1}),hrs:B.fromObject({hours:1}),h:B.fromObject({hours:1}),minute:B.fromObject({minutes:1}),minutes:B.fromObject({minutes:1}),min:B.fromObject({minutes:1}),mins:B.fromObject({minutes:1}),m:B.fromObject({minutes:1}),second:B.fromObject({seconds:1}),seconds:B.fromObject({seconds:1}),sec:B.fromObject({seconds:1}),secs:B.fromObject({seconds:1}),s:B.fromObject({seconds:1})},Uu={now:()=>q.local(),today:()=>q.local().startOf("day"),yesterday:()=>q.local().startOf("day").minus(B.fromObject({days:1})),tomorrow:()=>q.local().startOf("day").plus(B.fromObject({days:1})),sow:()=>q.local().startOf("week"),"start-of-week":()=>q.local().startOf("week"),eow:()=>q.local().endOf("week"),"end-of-week":()=>q.local().endOf("week"),soy:()=>q.local().startOf("year"),"start-of-year":()=>q.local().startOf("year"),eoy:()=>q.local().endOf("year"),"end-of-year":()=>q.local().endOf("year"),som:()=>q.local().startOf("month"),"start-of-month":()=>q.local().startOf("month"),eom:()=>q.local().endOf("month"),"end-of-month":()=>q.local().endOf("month")},Ku=F.createLanguage({variable:n=>z.identifier.map(se.variable).desc("variable"),number:n=>z.number.map(se.literal).desc("number"),string:n=>z.string.map(se.literal).desc("string"),bool:n=>z.bool.map(se.literal).desc("boolean"),date:n=>St("date",z.datePlus).map(([e,t])=>se.literal(t)).desc("date"),duration:n=>St("dur",z.duration).map(([e,t])=>se.literal(t)).desc("duration"),null:n=>z.rawNull.map(e=>se.NULL),link:n=>z.link.map(se.literal),list:n=>n.expression.sepBy(F.string(",").trim(F.optWhitespace)).wrap(F.string("[").skip(F.optWhitespace),F.optWhitespace.then(F.string("]"))).map(e=>se.list(e)).desc("list"),object:n=>F.seqMap(z.identifier.or(z.string),F.string(":").trim(F.optWhitespace),n.expression,(e,t,r)=>({name:e,value:r})).sepBy(F.string(",").trim(F.optWhitespace)).wrap(F.string("{").skip(F.optWhitespace),F.optWhitespace.then(F.string("}"))).map(e=>{let t={};for(let r of e)t[r.name]=r.value;return se.object(t)}).desc("object (\'{ a: 1, b: 2 }\')"),atom:n=>F.alt(z.embedLink.map(e=>se.literal(e)),n.negated,n.link,n.list,n.object,n.lambda,n.parens,n.bool,n.number,n.string,n.date,n.duration,n.null,n.variable),index:n=>F.seqMap(n.atom,F.alt(n.dotPostfix,n.indexPostfix,n.functionPostfix).many(),(e,t)=>{let r=e;for(let s of t)switch(s.type){case"dot":r=se.index(r,se.literal(s.expr));break;case"index":r=se.index(r,s.expr);break;case"function":r=se.func(r,s.exprs);break}return r}),negated:n=>F.seqMap(F.string("!"),n.index,(e,t)=>se.negate(t)).desc("negated field"),parens:n=>n.expression.trim(F.optWhitespace).wrap(F.string("("),F.string(")")),lambda:n=>F.seqMap(z.identifier.sepBy(F.string(",").trim(F.optWhitespace)).wrap(F.string("(").trim(F.optWhitespace),F.string(")").trim(F.optWhitespace)),F.string("=>").trim(F.optWhitespace),n.expression,(e,t,r)=>({type:"lambda",arguments:e,value:r})),dotPostfix:n=>F.seqMap(F.string("."),z.identifier,(e,t)=>({type:"dot",expr:t})),indexPostfix:n=>F.seqMap(F.string("["),F.optWhitespace,n.expression,F.optWhitespace,F.string("]"),(e,t,r,s,i)=>({type:"index",expr:r})),functionPostfix:n=>F.seqMap(F.string("("),F.optWhitespace,n.expression.sepBy(F.string(",").trim(F.optWhitespace)),F.optWhitespace,F.string(")"),(e,t,r,s,i)=>({type:"function",exprs:r})),binaryMulDiv:n=>Mn(n.index,z.binaryMulDiv,se.binaryOp),binaryPlusMinus:n=>Mn(n.binaryMulDiv,z.binaryPlusMinus,se.binaryOp),binaryCompare:n=>Mn(n.binaryPlusMinus,z.binaryCompareOp,se.binaryOp),binaryBoolean:n=>Mn(n.binaryCompare,z.binaryAndOp.or(z.binaryOrOp),se.binaryOp),binaryOp:n=>n.binaryBoolean,expression:n=>n.binaryOp}),lb=F.createLanguage({queryTag:n=>z.tag.map(e=>({type:"tagged",value:e})),queryId:n=>St("id",z.string).map(([e,t])=>({type:"id",value:t})),queryType:n=>F.string("@").then(z.identifier).map(e=>({type:"typed",value:e})),queryPath:n=>St(F.regexp(/e?path/i).desc("[e]path"),z.string).map(([e,t])=>({type:"path",value:t,exact:e.toLowerCase()==="epath"})),queryParentOf:n=>St(F.regexp(/parentof|supertree/i).desc("parentof"),n.query).map(([e,t])=>({type:"parent-of",children:t,inclusive:e.toLowerCase()==="supertree"})),queryChildOf:n=>St(F.regexp(/childof|subtree/i).desc("childof"),n.query).map(([e,t])=>({type:"child-of",parents:t,inclusive:e.toLowerCase()==="subtree"})),querySimpleLinked:n=>z.link.map(e=>({type:"linked",source:{type:"link",value:e},direction:"incoming"})),queryLinked:n=>St(F.regexp(/linksto|linkedfrom|connected/i).desc("connected"),n.query).map(([e,t])=>({type:"linked",source:t,direction:e.toLowerCase()=="linksto"?"incoming":e.toLowerCase()=="linkedfrom"?"outgoing":"both"})),queryExists:n=>St(F.regexp(/exists/i).desc("exists"),z.identifier.or(z.string)).map(([e,t])=>({type:"field",value:t})),queryQuotedExpression:n=>St(F.regexp(/expr/i).desc("expr"),Ku.expression).map(([e,t])=>({type:"expression",expression:t})),queryRawExpression:n=>Ku.binaryCompare.map(e=>({type:"expression",expression:e})),queryParens:n=>n.query.trim(F.optWhitespace).wrap(F.string("("),F.string(")")),queryNegate:n=>F.string("!").skip(F.optWhitespace).then(n.queryAtom).map(e=>({type:"not",element:e})),queryAtom:n=>F.alt(n.queryParens,n.queryNegate,n.querySimpleLinked,n.queryTag,n.queryType,n.queryId,n.queryExists,n.queryChildOf,n.queryParentOf,n.queryLinked,n.queryPath,n.queryQuotedExpression,n.queryRawExpression),queryAnds:n=>Mn(n.queryAtom,z.binaryAndOp,(e,t,r)=>({type:"and",elements:[e,r]})),queryOrs:n=>Mn(n.queryAnds,z.binaryOrOp,(e,t,r)=>({type:"or",elements:[e,r]})),query:n=>n.queryOrs.trim(F.optWhitespace)});function Mn(n,e,t){return F.seqMap(n,F.seq(F.optWhitespace,e,F.optWhitespace,n).many(),(r,s)=>{if(s.length==0)return r;let i=t(r,s[0][1],s[0][3]);for(let o=1;o[r,s])}function Of(n,...e){return F.custom((t,r)=>(s,i)=>{let o=n._(s,i);if(!o.status)return o;for(let a of e){let u=a(o.value)._(s,o.index);if(!u.status)return o;o=u}return o})}var Zt=Vr(ns());function Gt(n,e){let t={};for(let[r,s]of Object.entries(n))t[r]=e(s);return t}var _n;(r=>{r.NOOP_NORMALIZER=s=>s;function e(s){let i=et.wrapValue(s);if(!i)return null;switch(i==null?void 0:i.type){case"array":return i.value.map(r.json);case"object":return Gt(i.value,r.json);case"date":return{$_type:"date",value:i.value.toISO({includeOffset:!0})};case"link":return{$_type:"link",value:i.value.toObject()};case"duration":return{$_type:"duration",value:i.value.toISO()};case"boolean":case"number":case"string":return i.value;case"function":case"null":return null}}r.json=e;function t(s,i=r.NOOP_NORMALIZER){if(s==null)return null;if(Array.isArray(s))return i(s.map(o=>r.value(o,i)));if(typeof s=="object"){if(!("$_type"in s))return Gt(s,a=>r.value(a,i));let o=s.$_type;switch(o){case"date":return i(q.fromISO(s.value,{setZone:!0}));case"duration":return i(B.fromISO(s.value));case"link":return i(Oe.fromObject(s.value));default:throw new Error(`Unrecognized serialized type \'${o}\'!`)}}return i(s)}r.value=t})(_n||(_n={}));function Wu(n){return Object.assign({},n,{value:_n.json(n.value)})}function $s(n,e){return Array.isArray(n)?n.map(t=>$s(t,e)):{key:n.key,raw:n.value,value:Nf(n.value),position:{line:e,start:n.start,startValue:n.startValue,end:n.end},wrapping:n.wrapping}}var Ps=Object.freeze({"[":"]","(":")"});function If(n,e,t,r){let s=0,i=!1;for(let o=e;o=0;){let o=Lf(n,i);if(!o){i=n.indexOf(s,i+1);continue}t.push(o),i=n.indexOf(s,o.end)}}e&&(t=t.concat(qf(n))),t.sort((s,i)=>s.start-i.start);let r=[];for(let s=0;sn.join("")),Mf=Zt.regexp(/[^0-9\\w\\p{Letter}]*/u).then(Af).skip(Zt.regexp(/[_\\*~`]*/u));function zu(n){let e=Hu(n,0);if(!e)return;let t=Mf.parse(e.key);if(t.status)return{key:t.value,value:n.substring(e.valueIndex).trim(),start:0,startValue:e.valueIndex,end:n.length}}var _f=/\\u{2795}\\s*(\\d{4}-\\d{2}-\\d{2})/u,Bf=/(?:\\u{1F4C5}|\\u{1F4C6}|\\u{1F5D3}\\u{FE0F}?)\\s*(\\d{4}-\\d{2}-\\d{2})/u,Pf=/\\u{2705}\\s*(\\d{4}-\\d{2}-\\d{2})/u,$f=/[\\u{23F3}\\u{231B}]\\s*(\\d{4}-\\d{2}-\\d{2})/u,Rf=/\\u{1F6EB}\\s*(\\d{4}-\\d{2}-\\d{2})/u,jf=[{regex:_f,key:"created"},{regex:Rf,key:"start"},{regex:$f,key:"scheduled"},{regex:Bf,key:"due"},{regex:Pf,key:"completion"}];function qf(n){let e=[];for(let{regex:t,key:r}of jf){let s=t.exec(n);s&&e.push({key:r,value:s[1],start:s.index,startValue:s.index+1,end:s.index+s[0].length,wrapping:"emoji-shorthand"})}return e}var Rs;(t=>{function n(r){let s=et.wrapValue(e);if(!s)return null;switch(s.type){case"string":case"boolean":case"null":case"number":return s.value;case"array":return s.value.map(n);case"date":return s.value.toISO();case"duration":return s.value.toHuman();case"function":return null;case"link":return s.value.markdown();case"object":return Gt(s.value,n)}}t.yaml=n;function e(r){if(r==null)return null;if(typeof r=="object")if(Array.isArray(r)){let s=[];for(let i of r)s.push(e(i));return s}else{if(r instanceof Date)return q.fromJSDate(r);{let s=r,i={};for(let o in s)i[o]=e(s[o]);return i}}else{if(typeof r=="number")return r;if(typeof r=="boolean")return r;if(typeof r=="string"){let s=z.date.parse(r);if(s.status)return s.value;let i=z.duration.parse(r);if(i.status)return i.value;let o=z.link.parse(r);return o.status?o.value:r}}return null}t.literal=e})(Rs||(Rs={}));var Vf=/```yaml:data/i,Uf=/^(?:```|~~~)(.*)$/im,Kf=/^[\\s>]*(\\d+\\.|\\d+\\)|\\*|-|\\+)\\s*(\\[.{0,1}\\])?\\s*(.*)$/mu;function Zu(n,e,t,r){let{lines:s,metadata:i,frontmatter:o,sections:a}=Fo(n,e,t);return new po(n,r,s.length,i,a,o).build()}function Fo(n,e,t){var b,g,D,T,I,N,y,w,v,x,C,V,j,Y,ee,ae;let r=t.frontmatter?Gu(t.frontmatter):void 0,s=e.split(/\\r\\n|\\r|\\n/),i=new $e,o=[],a=(b=t.headings)!=null?b:[];a.sort((O,$)=>O.position.start.line-$.position.start.line);let u=new js.default(void 0,(O,$)=>O-$);for(let O=0;O0&&!Yu(s,0,O.start)){let $=new _r(0,O.start,En(n),1,0);u.set(0,$)}}let l=new js.default(void 0,(O,$)=>O-$),f=1;for(let O of t.sections||[]){if(O.type==="heading")continue;let $=O.position.start.line,Q=O.position.end.line+1,ue=s[$];if(O.type==="list")l.set($,new Do($,Q,f++,O.id));else if(O.type=="code"&&Vf.test(ue)){let De=s.slice($+1,Q-1).join(`\n`).replace(/\\t/gm," "),Re=Gu(co(De));l.set($,new yo($,Q,f++,Re,O.id))}else if(O.type==="code"){let De=ue.match(Uf);if(!De)l.set($,new qs($,Q,f++,[],"indent",$,Q,O.id));else{let Re=De.length>1&&De[1]?De[1].split(","):[];l.set($,new qs($,Q,f++,Re,"fenced",$+1,Q-1,O.id))}}else l.set($,new go($,Q,f++,O.type,O.id))}for(let O of l.values())(D=ct(O.start,u))==null||D.block(O);let d=/^[\\t\\f\\v ]*[\\-+\\*]\\s(\\[.\\]\\s)?/,m=/^(>?\\s?)*(\\t|\\s)*/g,h=new js.default(void 0,(O,$)=>O-$);for(let O of t.listItems||[]){let Q=s[O.position.start.line].match(Kf),ue,De;Q&&(ue=Q[1],De=Q[3]);let Re=new bo(O.position.start.line,O.position.end.line+1,O.parent,ue,O.id,O.task,De);h.set(Re.start,Re)}for(let O of h.values())if(O.parentLine<0){let $=l.get(-O.parentLine);if(!$||$.type!=="list")continue;$.items.push(O)}else(T=h.get(O.parentLine))==null||T.elements.push(O);for(let O of(I=t.tags)!=null?I:[]){let $=O.tag.startsWith("#")?O.tag:"#"+O.tag,Q=O.position.start.line;i.tag($),(N=ct(Q,u))==null||N.metadata.tag($),(y=ct(Q,l))==null||y.metadata.tag($),(w=ct(Q,h))==null||w.metadata.tag($)}if(t.frontmatter)for(let O of Wf(t.frontmatter)){let $=O.startsWith("#")?O:"#"+O;i.tag($)}for(let O of(v=t.links)!=null?v:[]){let $=Oe.infer(O.link),Q=O.position.start.line;i.link($),(x=ct(Q,u))==null||x.metadata.link($),(C=ct(Q,l))==null||C.metadata.link($),(V=ct(Q,h))==null||V.metadata.link($)}for(let O of(j=t.frontmatterLinks)!=null?j:[])i.link(Oe.infer(O.link,!1,O.displayText));for(let O of Eo(s)){let $=O.position.line;i.inlineField(O),(Y=ct($,u))==null||Y.metadata.inlineField(O),(ee=ct($,l))==null||ee.metadata.inlineField(O),(ae=ct($,h))==null||ae.metadata.inlineField(O)}return o.push(...u.values()),{lines:s,frontmatter:r,metadata:i,sections:o}}function Yu(n,e,t){for(let r=e;r32768||!t.includes("::"))continue;let r=Ju(t);if(r.length>0)for(let s of r)yield $s(s,e);else{let s=zu(t);s&&(yield $s(s,e))}}}function Gu(n){let e={};for(let t of Object.keys(n)){let r=n[t];e[t.toLowerCase()]={key:t,value:_n.json(Rs.literal(r)),raw:r}}return e}function ct(n,e){var r;let t=(r=e.getPairOrNextLower(n))==null?void 0:r[1];if(t&&t.end>=n)return t}function Wf(n){return Object.keys(n).filter(t=>t.toLowerCase()=="tags"||t.toLowerCase()=="tag").map(t=>Qu(n[t],/[,\\s]+/)).reduce((t,r)=>t.concat(r),[]).map(t=>t.startsWith("#")?t:"#"+t)}function Qu(n,e){return n==null||n==null?[]:Array.isArray(n)?n.filter(t=>!!t).map(t=>Qu(t,e)).reduce((t,r)=>t.concat(r),[]):(""+n).split(e).filter(t=>!!t).map(t=>t.trim()).filter(t=>t.length>0)}var $e=class{constructor(){this.tags=new Set;this.links=[];this.inlineFields={}}tag(e){this.tags.add(e)}link(e){this.links.find(t=>t.equals(e))||this.links.push(e)}inlineField(e){let t=e.key.toLowerCase();Object.keys(this.inlineFields).some(r=>r.toLowerCase()==t)||(this.inlineFields[t]=e)}finishTags(){return Array.from(this.tags)}finishLinks(){return this.links.map(e=>e.toObject())}finishInlineFields(){return Gt(this.inlineFields,Wu)}},po=class{constructor(e,t,r,s,i,o){this.path=e;this.stats=t;this.length=r;this.metadata=s;this.sections=i;this.frontmatter=o}build(){return{$path:this.path,$ctime:this.stats.ctime,$mtime:this.stats.mtime,$size:this.stats.size,$extension:Va(this.path),$position:{start:0,end:this.length},$tags:this.metadata.finishTags(),$links:this.metadata.finishLinks(),$infields:this.metadata.finishInlineFields(),$sections:this.sections.map(e=>e.build()),$frontmatter:this.frontmatter}}},_r=class{constructor(e,t,r,s,i){this.start=e;this.end=t;this.title=r;this.level=s;this.ordinal=i;this.blocks=[];this.metadata=new $e}block(e){this.blocks.push(e)}build(){return{$title:this.title,$ordinal:this.ordinal,$level:this.level,$tags:this.metadata.finishTags(),$infields:this.metadata.finishInlineFields(),$links:this.metadata.finishLinks(),$position:{start:this.start,end:this.end},$blocks:this.blocks.map(e=>e.build())}}},Do=class{constructor(e,t,r,s){this.start=e;this.end=t;this.ordinal=r;this.blockId=s;this.type="list";this.metadata=new $e;this.items=[]}build(){return{$ordinal:this.ordinal,$position:{start:this.start,end:this.end},$infields:this.metadata.finishInlineFields(),$tags:this.metadata.finishTags(),$links:this.metadata.finishLinks(),$type:"list",$blockId:this.blockId,$elements:this.items.map(e=>e.build())}}},qs=class{constructor(e,t,r,s,i,o,a,u){this.start=e;this.end=t;this.ordinal=r;this.languages=s;this.style=i;this.contentStart=o;this.contentEnd=a;this.blockId=u;this.type="codeblock";this.metadata=new $e}build(){return{$type:"codeblock",$ordinal:this.ordinal,$position:{start:this.start,end:this.end},$infields:this.metadata.finishInlineFields(),$tags:this.metadata.finishTags(),$links:this.metadata.finishLinks(),$blockId:this.blockId,$languages:this.languages,$style:this.style,$contentPosition:{start:this.contentStart,end:this.contentEnd}}}},yo=class{constructor(e,t,r,s,i){this.start=e;this.end=t;this.ordinal=r;this.data=s;this.blockId=i;this.type="datablock";this.metadata=new $e}build(){return{$type:"datablock",$ordinal:this.ordinal,$position:{start:this.start,end:this.end},$infields:this.metadata.finishInlineFields(),$tags:this.metadata.finishTags(),$links:this.metadata.finishLinks(),$blockId:this.blockId,$data:this.data}}},go=class{constructor(e,t,r,s,i){this.start=e;this.end=t;this.ordinal=r;this.type=s;this.blockId=i;this.metadata=new $e}build(){return{$type:this.type,$ordinal:this.ordinal,$position:{start:this.start,end:this.end},$infields:this.metadata.finishInlineFields(),$tags:this.metadata.finishTags(),$links:this.metadata.finishLinks(),$blockId:this.blockId}}},bo=class{constructor(e,t,r,s,i,o,a){this.start=e;this.end=t;this.parentLine=r;this.symbol=s;this.blockId=i;this.status=o;this.text=a;this.metadata=new $e;this.elements=[]}build(){return{$parentLine:this.parentLine,$position:{start:this.start,end:this.end},$blockId:this.blockId,$elements:this.elements.map(e=>e.build()),$type:this.status?"task":"list",$infields:this.metadata.finishInlineFields(),$tags:this.metadata.finishTags(),$links:this.metadata.finishLinks(),$status:this.status,$symbol:this.symbol,$text:this.text}}};function Xu(n,e,t,r){var o;let s=new To(n,r),i=JSON.parse(e);for(let a of i.nodes)if(a.type!="group")if(a.type=="text"){let{frontmatter:u,metadata:l,lines:f,sections:d}=Fo(n,a.text,t.caches[a.id]),m=new Vs(n,a.id,a,u);d.forEach(h=>m.section(h)),s.card(m);for(let h in l.tags)s.metadata.tag(h);for(let h of(o=l.links)!=null?o:[])s.metadata.link(h);for(let h of Eo(f))s.metadata.inlineField(h)}else{let u=new Vs(n,a.id,a);s.card(u)}return s.build()}var wo=class{constructor(e,t,r){this.path=e;this.id=t;this.nodeJson=r;this.metadata=new $e}build(){return{$file:this.path,$id:this.id,$position:{x:this.nodeJson.x,y:this.nodeJson.y},$dimensions:{width:this.nodeJson.width,height:this.nodeJson.height},$color:this.nodeJson.color,$link:Oe.file(this.path).withBlock(this.id).toObject()}}},Vs=class extends wo{constructor(t,r,s,i){super(t,r,s);this.path=t;this.id=r;this.nodeJson=s;this.frontmatter=i;this.sections=[]}section(t){return this.sections.push(t),t}build(){switch(this.nodeJson.type){case"text":return ye(R({},super.build()),{$infields:this.metadata.finishInlineFields(),$frontmatter:this.frontmatter,$sections:this.sections.map(t=>t.build()),$tags:this.metadata.finishTags(),$links:this.metadata.finishLinks(),$type:"text-card",$color:this.nodeJson.color});case"file":return ye(R({},super.build()),{$linkedFile:this.nodeJson.file});case"link":return ye(R({},super.build()),{$url:this.nodeJson.url})}}},To=class{constructor(e,t){this.path=e;this.stats=t;this.cards=[];this.metadata=new $e}card(e){return this.cards.push(e),e}build(){return{$cards:this.cards.map(e=>e.build()),$ctime:this.stats.ctime,$mtime:this.stats.mtime,$infields:this.metadata.finishInlineFields(),$links:this.metadata.finishLinks(),$tags:this.metadata.finishTags(),$path:this.path,$size:this.stats.size}}};onmessage=async n=>{try{let e=n.data;if(e.type==="markdown"){let t=Zu(e.path,e.contents,e.metadata,e.stat);postMessage({type:"markdown",result:t})}else if(e.type==="canvas"){let t=Xu(e.path,e.contents,e.index,e.stat);postMessage({type:"canvas",result:t})}else postMessage({$error:"Unsupported import method."})}catch(e){console.error(`Datacore Indexer failed to index ${n.data.path}: ${e}`),postMessage({$error:e.message})}};\n//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vcGFyc2ltbW9uL2J1aWxkL3BhcnNpbW1vbi51bWQubWluLmpzIiwgIi4uLy4uL3NvcnRlZC1idHJlZS9iK3RyZWUuanMiLCAiLi4vLi4vbHV4b24vc3JjL2Vycm9ycy5qcyIsICIuLi8uLi9sdXhvbi9zcmMvaW1wbC9mb3JtYXRzLmpzIiwgIi4uLy4uL2x1eG9uL3NyYy9pbXBsL3V0aWwuanMiLCAiLi4vLi4vbHV4b24vc3JjL2ltcGwvZW5nbGlzaC5qcyIsICIuLi8uLi9sdXhvbi9zcmMvaW1wbC9mb3JtYXR0ZXIuanMiLCAiLi4vLi4vbHV4b24vc3JjL2ltcGwvaW52YWxpZC5qcyIsICIuLi8uLi9sdXhvbi9zcmMvem9uZS5qcyIsICIuLi8uLi9sdXhvbi9zcmMvem9uZXMvc3lzdGVtWm9uZS5qcyIsICIuLi8uLi9sdXhvbi9zcmMvem9uZXMvSUFOQVpvbmUuanMiLCAiLi4vLi4vbHV4b24vc3JjL3pvbmVzL2ZpeGVkT2Zmc2V0Wm9uZS5qcyIsICIuLi8uLi9sdXhvbi9zcmMvem9uZXMvaW52YWxpZFpvbmUuanMiLCAiLi4vLi4vbHV4b24vc3JjL2ltcGwvem9uZVV0aWwuanMiLCAiLi4vLi4vbHV4b24vc3JjL3NldHRpbmdzLmpzIiwgIi4uLy4uL2x1eG9uL3NyYy9pbXBsL2xvY2FsZS5qcyIsICIuLi8uLi9sdXhvbi9zcmMvaW1wbC9yZWdleFBhcnNlci5qcyIsICIuLi8uLi9sdXhvbi9zcmMvZHVyYXRpb24uanMiLCAiLi4vLi4vbHV4b24vc3JjL2ludGVydmFsLmpzIiwgIi4uLy4uL2x1eG9uL3NyYy9pbmZvLmpzIiwgIi4uLy4uL2x1eG9uL3NyYy9pbXBsL2RpZmYuanMiLCAiLi4vLi4vbHV4b24vc3JjL2ltcGwvZGlnaXRzLmpzIiwgIi4uLy4uL2x1eG9uL3NyYy9pbXBsL3Rva2VuUGFyc2VyLmpzIiwgIi4uLy4uL2x1eG9uL3NyYy9pbXBsL2NvbnZlcnNpb25zLmpzIiwgIi4uLy4uL2x1eG9uL3NyYy9kYXRldGltZS5qcyIsICIuLi8uLi8uLi9zcmMvdXRpbHMvbm9ybWFsaXplcnMudHMiLCAiLi4vLi4vZW1vamktcmVnZXgvaW5kZXgubWpzIiwgIi4uLy4uLy4uL3NyYy9leHByZXNzaW9uL2xpbmsudHMiLCAiLi4vLi4veWFtbC9icm93c2VyL2Rpc3Qvbm9kZXMvaWRlbnRpdHkuanMiLCAiLi4vLi4veWFtbC9icm93c2VyL2Rpc3QvdmlzaXQuanMiLCAiLi4vLi4veWFtbC9icm93c2VyL2Rpc3QvZG9jL2RpcmVjdGl2ZXMuanMiLCAiLi4vLi4veWFtbC9icm93c2VyL2Rpc3QvZG9jL2FuY2hvcnMuanMiLCAiLi4vLi4veWFtbC9icm93c2VyL2Rpc3QvZG9jL2FwcGx5UmV2aXZlci5qcyIsICIuLi8uLi95YW1sL2Jyb3dzZXIvZGlzdC9ub2Rlcy90b0pTLmpzIiwgIi4uLy4uL3lhbWwvYnJvd3Nlci9kaXN0L25vZGVzL05vZGUuanMiLCAiLi4vLi4veWFtbC9icm93c2VyL2Rpc3Qvbm9kZXMvQWxpYXMuanMiLCAiLi4vLi4veWFtbC9icm93c2VyL2Rpc3Qvbm9kZXMvU2NhbGFyLmpzIiwgIi4uLy4uL3lhbWwvYnJvd3Nlci9kaXN0L2RvYy9jcmVhdGVOb2RlLmpzIiwgIi4uLy4uL3lhbWwvYnJvd3Nlci9kaXN0L25vZGVzL0NvbGxlY3Rpb24uanMiLCAiLi4vLi4veWFtbC9icm93c2VyL2Rpc3Qvc3RyaW5naWZ5L3N0cmluZ2lmeUNvbW1lbnQuanMiLCAiLi4vLi4veWFtbC9icm93c2VyL2Rpc3Qvc3RyaW5naWZ5L2ZvbGRGbG93TGluZXMuanMiLCAiLi4vLi4veWFtbC9icm93c2VyL2Rpc3Qvc3RyaW5naWZ5L3N0cmluZ2lmeVN0cmluZy5qcyIsICIuLi8uLi95YW1sL2Jyb3dzZXIvZGlzdC9zdHJpbmdpZnkvc3RyaW5naWZ5LmpzIiwgIi4uLy4uL3lhbWwvYnJvd3Nlci9kaXN0L3N0cmluZ2lmeS9zdHJpbmdpZnlQYWlyLmpzIiwgIi4uLy4uL3lhbWwvYnJvd3Nlci9kaXN0L2xvZy5qcyIsICIuLi8uLi95YW1sL2Jyb3dzZXIvZGlzdC9zY2hlbWEveWFtbC0xLjEvbWVyZ2UuanMiLCAiLi4vLi4veWFtbC9icm93c2VyL2Rpc3Qvbm9kZXMvYWRkUGFpclRvSlNNYXAuanMiLCAiLi4vLi4veWFtbC9icm93c2VyL2Rpc3Qvbm9kZXMvUGFpci5qcyIsICIuLi8uLi95YW1sL2Jyb3dzZXIvZGlzdC9zdHJpbmdpZnkvc3RyaW5naWZ5Q29sbGVjdGlvbi5qcyIsICIuLi8uLi95YW1sL2Jyb3dzZXIvZGlzdC9ub2Rlcy9ZQU1MTWFwLmpzIiwgIi4uLy4uL3lhbWwvYnJvd3Nlci9kaXN0L3NjaGVtYS9jb21tb24vbWFwLmpzIiwgIi4uLy4uL3lhbWwvYnJvd3Nlci9kaXN0L25vZGVzL1lBTUxTZXEuanMiLCAiLi4vLi4veWFtbC9icm93c2VyL2Rpc3Qvc2NoZW1hL2NvbW1vbi9zZXEuanMiLCAiLi4vLi4veWFtbC9icm93c2VyL2Rpc3Qvc2NoZW1hL2NvbW1vbi9zdHJpbmcuanMiLCAiLi4vLi4veWFtbC9icm93c2VyL2Rpc3Qvc2NoZW1hL2NvbW1vbi9udWxsLmpzIiwgIi4uLy4uL3lhbWwvYnJvd3Nlci9kaXN0L3NjaGVtYS9jb3JlL2Jvb2wuanMiLCAiLi4vLi4veWFtbC9icm93c2VyL2Rpc3Qvc3RyaW5naWZ5L3N0cmluZ2lmeU51bWJlci5qcyIsICIuLi8uLi95YW1sL2Jyb3dzZXIvZGlzdC9zY2hlbWEvY29yZS9mbG9hdC5qcyIsICIuLi8uLi95YW1sL2Jyb3dzZXIvZGlzdC9zY2hlbWEvY29yZS9pbnQuanMiLCAiLi4vLi4veWFtbC9icm93c2VyL2Rpc3Qvc2NoZW1hL2NvcmUvc2NoZW1hLmpzIiwgIi4uLy4uL3lhbWwvYnJvd3Nlci9kaXN0L3NjaGVtYS9qc29uL3NjaGVtYS5qcyIsICIuLi8uLi95YW1sL2Jyb3dzZXIvZGlzdC9zY2hlbWEveWFtbC0xLjEvYmluYXJ5LmpzIiwgIi4uLy4uL3lhbWwvYnJvd3Nlci9kaXN0L3NjaGVtYS95YW1sLTEuMS9wYWlycy5qcyIsICIuLi8uLi95YW1sL2Jyb3dzZXIvZGlzdC9zY2hlbWEveWFtbC0xLjEvb21hcC5qcyIsICIuLi8uLi95YW1sL2Jyb3dzZXIvZGlzdC9zY2hlbWEveWFtbC0xLjEvYm9vbC5qcyIsICIuLi8uLi95YW1sL2Jyb3dzZXIvZGlzdC9zY2hlbWEveWFtbC0xLjEvZmxvYXQuanMiLCAiLi4vLi4veWFtbC9icm93c2VyL2Rpc3Qvc2NoZW1hL3lhbWwtMS4xL2ludC5qcyIsICIuLi8uLi95YW1sL2Jyb3dzZXIvZGlzdC9zY2hlbWEveWFtbC0xLjEvc2V0LmpzIiwgIi4uLy4uL3lhbWwvYnJvd3Nlci9kaXN0L3NjaGVtYS95YW1sLTEuMS90aW1lc3RhbXAuanMiLCAiLi4vLi4veWFtbC9icm93c2VyL2Rpc3Qvc2NoZW1hL3lhbWwtMS4xL3NjaGVtYS5qcyIsICIuLi8uLi95YW1sL2Jyb3dzZXIvZGlzdC9zY2hlbWEvdGFncy5qcyIsICIuLi8uLi95YW1sL2Jyb3dzZXIvZGlzdC9zY2hlbWEvU2NoZW1hLmpzIiwgIi4uLy4uL3lhbWwvYnJvd3Nlci9kaXN0L3N0cmluZ2lmeS9zdHJpbmdpZnlEb2N1bWVudC5qcyIsICIuLi8uLi95YW1sL2Jyb3dzZXIvZGlzdC9kb2MvRG9jdW1lbnQuanMiLCAiLi4vLi4veWFtbC9icm93c2VyL2Rpc3QvZXJyb3JzLmpzIiwgIi4uLy4uL3lhbWwvYnJvd3Nlci9kaXN0L2NvbXBvc2UvcmVzb2x2ZS1wcm9wcy5qcyIsICIuLi8uLi95YW1sL2Jyb3dzZXIvZGlzdC9jb21wb3NlL3V0aWwtY29udGFpbnMtbmV3bGluZS5qcyIsICIuLi8uLi95YW1sL2Jyb3dzZXIvZGlzdC9jb21wb3NlL3V0aWwtZmxvdy1pbmRlbnQtY2hlY2suanMiLCAiLi4vLi4veWFtbC9icm93c2VyL2Rpc3QvY29tcG9zZS91dGlsLW1hcC1pbmNsdWRlcy5qcyIsICIuLi8uLi95YW1sL2Jyb3dzZXIvZGlzdC9jb21wb3NlL3Jlc29sdmUtYmxvY2stbWFwLmpzIiwgIi4uLy4uL3lhbWwvYnJvd3Nlci9kaXN0L2NvbXBvc2UvcmVzb2x2ZS1ibG9jay1zZXEuanMiLCAiLi4vLi4veWFtbC9icm93c2VyL2Rpc3QvY29tcG9zZS9yZXNvbHZlLWVuZC5qcyIsICIuLi8uLi95YW1sL2Jyb3dzZXIvZGlzdC9jb21wb3NlL3Jlc29sdmUtZmxvdy1jb2xsZWN0aW9uLmpzIiwgIi4uLy4uL3lhbWwvYnJvd3Nlci9kaXN0L2NvbXBvc2UvY29tcG9zZS1jb2xsZWN0aW9uLmpzIiwgIi4uLy4uL3lhbWwvYnJvd3Nlci9kaXN0L2NvbXBvc2UvcmVzb2x2ZS1ibG9jay1zY2FsYXIuanMiLCAiLi4vLi4veWFtbC9icm93c2VyL2Rpc3QvY29tcG9zZS9yZXNvbHZlLWZsb3ctc2NhbGFyLmpzIiwgIi4uLy4uL3lhbWwvYnJvd3Nlci9kaXN0L2NvbXBvc2UvY29tcG9zZS1zY2FsYXIuanMiLCAiLi4vLi4veWFtbC9icm93c2VyL2Rpc3QvY29tcG9zZS91dGlsLWVtcHR5LXNjYWxhci1wb3NpdGlvbi5qcyIsICIuLi8uLi95YW1sL2Jyb3dzZXIvZGlzdC9jb21wb3NlL2NvbXBvc2Utbm9kZS5qcyIsICIuLi8uLi95YW1sL2Jyb3dzZXIvZGlzdC9jb21wb3NlL2NvbXBvc2UtZG9jLmpzIiwgIi4uLy4uL3lhbWwvYnJvd3Nlci9kaXN0L2NvbXBvc2UvY29tcG9zZXIuanMiLCAiLi4vLi4veWFtbC9icm93c2VyL2Rpc3QvcGFyc2UvY3N0LXZpc2l0LmpzIiwgIi4uLy4uL3lhbWwvYnJvd3Nlci9kaXN0L3BhcnNlL2NzdC5qcyIsICIuLi8uLi95YW1sL2Jyb3dzZXIvZGlzdC9wYXJzZS9sZXhlci5qcyIsICIuLi8uLi95YW1sL2Jyb3dzZXIvZGlzdC9wYXJzZS9saW5lLWNvdW50ZXIuanMiLCAiLi4vLi4veWFtbC9icm93c2VyL2Rpc3QvcGFyc2UvcGFyc2VyLmpzIiwgIi4uLy4uL3lhbWwvYnJvd3Nlci9kaXN0L3B1YmxpYy1hcGkuanMiLCAiLi4vLi4vLi4vc3JjL2luZGV4L2ltcG9ydC9tYXJrZG93bi50cyIsICIuLi8uLi8uLi9zcmMvZXhwcmVzc2lvbi9wYXJzZXIudHMiLCAiLi4vLi4vLi4vc3JjL2V4cHJlc3Npb24vbGl0ZXJhbC50cyIsICIuLi8uLi8uLi9zcmMvYXBpL3Jlc3VsdC50cyIsICIuLi8uLi8uLi9zcmMvZXhwcmVzc2lvbi9maWx0ZXJzLnRzIiwgIi4uLy4uLy4uL3NyYy9leHByZXNzaW9uL2V4cHJlc3Npb24udHMiLCAiLi4vLi4vLi4vc3JjL2luZGV4L2ltcG9ydC9pbmxpbmUtZmllbGQudHMiLCAiLi4vLi4vLi4vc3JjL3V0aWxzL2RhdGEudHMiLCAiLi4vLi4vLi4vc3JjL2luZGV4L3R5cGVzL2pzb24vY29tbW9uLnRzIiwgIi4uLy4uLy4uL3NyYy9pbmRleC90eXBlcy95YW1sLnRzIiwgIi4uLy4uLy4uL3NyYy9pbmRleC9pbXBvcnQvY2FudmFzLnRzIiwgIi4uLy4uLy4uL3NyYy9pbmRleC93ZWItd29ya2VyL2ltcG9ydGVyLndvcmtlci50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiIWZ1bmN0aW9uKG4sdCl7XCJvYmplY3RcIj09dHlwZW9mIGV4cG9ydHMmJlwib2JqZWN0XCI9PXR5cGVvZiBtb2R1bGU/bW9kdWxlLmV4cG9ydHM9dCgpOlwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoW10sdCk6XCJvYmplY3RcIj09dHlwZW9mIGV4cG9ydHM/ZXhwb3J0cy5QYXJzaW1tb249dCgpOm4uUGFyc2ltbW9uPXQoKX0oXCJ1bmRlZmluZWRcIiE9dHlwZW9mIHNlbGY/c2VsZjp0aGlzLGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciB0PXt9O2Z1bmN0aW9uIHIoZSl7aWYodFtlXSlyZXR1cm4gdFtlXS5leHBvcnRzO3ZhciB1PXRbZV09e2k6ZSxsOiExLGV4cG9ydHM6e319O3JldHVybiBuW2VdLmNhbGwodS5leHBvcnRzLHUsdS5leHBvcnRzLHIpLHUubD0hMCx1LmV4cG9ydHN9cmV0dXJuIHIubT1uLHIuYz10LHIuZD1mdW5jdGlvbihuLHQsZSl7ci5vKG4sdCl8fE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLHQse2NvbmZpZ3VyYWJsZTohMSxlbnVtZXJhYmxlOiEwLGdldDplfSl9LHIucj1mdW5jdGlvbihuKXtPYmplY3QuZGVmaW5lUHJvcGVydHkobixcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KX0sci5uPWZ1bmN0aW9uKG4pe3ZhciB0PW4mJm4uX19lc01vZHVsZT9mdW5jdGlvbigpe3JldHVybiBuLmRlZmF1bHR9OmZ1bmN0aW9uKCl7cmV0dXJuIG59O3JldHVybiByLmQodCxcImFcIix0KSx0fSxyLm89ZnVuY3Rpb24obix0KXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4sdCl9LHIucD1cIlwiLHIoci5zPTApfShbZnVuY3Rpb24obix0LHIpe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIGUobil7aWYoISh0aGlzIGluc3RhbmNlb2YgZSkpcmV0dXJuIG5ldyBlKG4pO3RoaXMuXz1ufXZhciB1PWUucHJvdG90eXBlO2Z1bmN0aW9uIG8obix0KXtmb3IodmFyIHI9MDtyPG47cisrKXQocil9ZnVuY3Rpb24gaShuLHQscil7cmV0dXJuIGZ1bmN0aW9uKG4sdCl7byh0Lmxlbmd0aCxmdW5jdGlvbihyKXtuKHRbcl0scix0KX0pfShmdW5jdGlvbihyLGUsdSl7dD1uKHQscixlLHUpfSxyKSx0fWZ1bmN0aW9uIGEobix0KXtyZXR1cm4gaShmdW5jdGlvbih0LHIsZSx1KXtyZXR1cm4gdC5jb25jYXQoW24ocixlLHUpXSl9LFtdLHQpfWZ1bmN0aW9uIGYobix0KXt2YXIgcj17djowLGJ1Zjp0fTtyZXR1cm4gbyhuLGZ1bmN0aW9uKCl7dmFyIG47cj17djpyLnY8PDF8KG49ci5idWYsblswXT4+NyksYnVmOmZ1bmN0aW9uKG4pe3ZhciB0PWkoZnVuY3Rpb24obix0LHIsZSl7cmV0dXJuIG4uY29uY2F0KHI9PT1lLmxlbmd0aC0xP0J1ZmZlci5mcm9tKFt0LDBdKS5yZWFkVUludDE2QkUoMCk6ZS5yZWFkVUludDE2QkUocikpfSxbXSxuKTtyZXR1cm4gQnVmZmVyLmZyb20oYShmdW5jdGlvbihuKXtyZXR1cm4objw8MSY2NTUzNSk+Pjh9LHQpKX0oci5idWYpfX0pLHJ9ZnVuY3Rpb24gYygpe3JldHVyblwidW5kZWZpbmVkXCIhPXR5cGVvZiBCdWZmZXJ9ZnVuY3Rpb24gcygpe2lmKCFjKCkpdGhyb3cgbmV3IEVycm9yKFwiQnVmZmVyIGdsb2JhbCBkb2VzIG5vdCBleGlzdDsgcGxlYXNlIHVzZSB3ZWJwYWNrIGlmIHlvdSBuZWVkIHRvIHBhcnNlIEJ1ZmZlcnMgaW4gdGhlIGJyb3dzZXIuXCIpfWZ1bmN0aW9uIGwobil7cygpO3ZhciB0PWkoZnVuY3Rpb24obix0KXtyZXR1cm4gbit0fSwwLG4pO2lmKHQlOCE9MCl0aHJvdyBuZXcgRXJyb3IoXCJUaGUgYml0cyBbXCIrbi5qb2luKFwiLCBcIikrXCJdIGFkZCB1cCB0byBcIit0K1wiIHdoaWNoIGlzIG5vdCBhbiBldmVuIG51bWJlciBvZiBieXRlczsgdGhlIHRvdGFsIHNob3VsZCBiZSBkaXZpc2libGUgYnkgOFwiKTt2YXIgcix1PXQvOCxvPShyPWZ1bmN0aW9uKG4pe3JldHVybiBuPjQ4fSxpKGZ1bmN0aW9uKG4sdCl7cmV0dXJuIG58fChyKHQpP3Q6bil9LG51bGwsbikpO2lmKG8pdGhyb3cgbmV3IEVycm9yKG8rXCIgYml0IHJhbmdlIHJlcXVlc3RlZCBleGNlZWRzIDQ4IGJpdCAoNiBieXRlKSBOdW1iZXIgbWF4LlwiKTtyZXR1cm4gbmV3IGUoZnVuY3Rpb24odCxyKXt2YXIgZT11K3I7cmV0dXJuIGU+dC5sZW5ndGg/eChyLHUudG9TdHJpbmcoKStcIiBieXRlc1wiKTpiKGUsaShmdW5jdGlvbihuLHQpe3ZhciByPWYodCxuLmJ1Zik7cmV0dXJue2NvbGw6bi5jb2xsLmNvbmNhdChyLnYpLGJ1ZjpyLmJ1Zn19LHtjb2xsOltdLGJ1Zjp0LnNsaWNlKHIsZSl9LG4pLmNvbGwpfSl9ZnVuY3Rpb24gaChuLHQpe3JldHVybiBuZXcgZShmdW5jdGlvbihyLGUpe3JldHVybiBzKCksZSt0PnIubGVuZ3RoP3goZSx0K1wiIGJ5dGVzIGZvciBcIituKTpiKGUrdCxyLnNsaWNlKGUsZSt0KSl9KX1mdW5jdGlvbiBwKG4sdCl7aWYoXCJudW1iZXJcIiE9dHlwZW9mKHI9dCl8fE1hdGguZmxvb3IocikhPT1yfHx0PDB8fHQ+Nil0aHJvdyBuZXcgRXJyb3IobitcIiByZXF1aXJlcyBpbnRlZ2VyIGxlbmd0aCBpbiByYW5nZSBbMCwgNl0uXCIpO3ZhciByfWZ1bmN0aW9uIGQobil7cmV0dXJuIHAoXCJ1aW50QkVcIixuKSxoKFwidWludEJFKFwiK24rXCIpXCIsbikubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LnJlYWRVSW50QkUoMCxuKX0pfWZ1bmN0aW9uIHYobil7cmV0dXJuIHAoXCJ1aW50TEVcIixuKSxoKFwidWludExFKFwiK24rXCIpXCIsbikubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LnJlYWRVSW50TEUoMCxuKX0pfWZ1bmN0aW9uIGcobil7cmV0dXJuIHAoXCJpbnRCRVwiLG4pLGgoXCJpbnRCRShcIituK1wiKVwiLG4pLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5yZWFkSW50QkUoMCxuKX0pfWZ1bmN0aW9uIG0obil7cmV0dXJuIHAoXCJpbnRMRVwiLG4pLGgoXCJpbnRMRShcIituK1wiKVwiLG4pLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5yZWFkSW50TEUoMCxuKX0pfWZ1bmN0aW9uIHkobil7cmV0dXJuIG4gaW5zdGFuY2VvZiBlfWZ1bmN0aW9uIEUobil7cmV0dXJuXCJbb2JqZWN0IEFycmF5XVwiPT09e30udG9TdHJpbmcuY2FsbChuKX1mdW5jdGlvbiB3KG4pe3JldHVybiBjKCkmJkJ1ZmZlci5pc0J1ZmZlcihuKX1mdW5jdGlvbiBiKG4sdCl7cmV0dXJue3N0YXR1czohMCxpbmRleDpuLHZhbHVlOnQsZnVydGhlc3Q6LTEsZXhwZWN0ZWQ6W119fWZ1bmN0aW9uIHgobix0KXtyZXR1cm4gRSh0KXx8KHQ9W3RdKSx7c3RhdHVzOiExLGluZGV4Oi0xLHZhbHVlOm51bGwsZnVydGhlc3Q6bixleHBlY3RlZDp0fX1mdW5jdGlvbiBCKG4sdCl7aWYoIXQpcmV0dXJuIG47aWYobi5mdXJ0aGVzdD50LmZ1cnRoZXN0KXJldHVybiBuO3ZhciByPW4uZnVydGhlc3Q9PT10LmZ1cnRoZXN0P2Z1bmN0aW9uKG4sdCl7aWYoZnVuY3Rpb24oKXtpZih2b2lkIDAhPT1lLl9zdXBwb3J0c1NldClyZXR1cm4gZS5fc3VwcG9ydHNTZXQ7dmFyIG49XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFNldDtyZXR1cm4gZS5fc3VwcG9ydHNTZXQ9bixufSgpJiZBcnJheS5mcm9tKXtmb3IodmFyIHI9bmV3IFNldChuKSx1PTA7dTx0Lmxlbmd0aDt1Kyspci5hZGQodFt1XSk7dmFyIG89QXJyYXkuZnJvbShyKTtyZXR1cm4gby5zb3J0KCksb31mb3IodmFyIGk9e30sYT0wO2E8bi5sZW5ndGg7YSsrKWlbblthXV09ITA7Zm9yKHZhciBmPTA7Zjx0Lmxlbmd0aDtmKyspaVt0W2ZdXT0hMDt2YXIgYz1bXTtmb3IodmFyIHMgaW4gaSkoe30pLmhhc093blByb3BlcnR5LmNhbGwoaSxzKSYmYy5wdXNoKHMpO3JldHVybiBjLnNvcnQoKSxjfShuLmV4cGVjdGVkLHQuZXhwZWN0ZWQpOnQuZXhwZWN0ZWQ7cmV0dXJue3N0YXR1czpuLnN0YXR1cyxpbmRleDpuLmluZGV4LHZhbHVlOm4udmFsdWUsZnVydGhlc3Q6dC5mdXJ0aGVzdCxleHBlY3RlZDpyfX12YXIgaj17fTtmdW5jdGlvbiBTKG4sdCl7aWYodyhuKSlyZXR1cm57b2Zmc2V0OnQsbGluZTotMSxjb2x1bW46LTF9O24gaW4ganx8KGpbbl09e30pO2Zvcih2YXIgcj1qW25dLGU9MCx1PTAsbz0wLGk9dDtpPj0wOyl7aWYoaSBpbiByKXtlPXJbaV0ubGluZSwwPT09byYmKG89cltpXS5saW5lU3RhcnQpO2JyZWFrfShcIlxcblwiPT09bi5jaGFyQXQoaSl8fFwiXFxyXCI9PT1uLmNoYXJBdChpKSYmXCJcXG5cIiE9PW4uY2hhckF0KGkrMSkpJiYodSsrLDA9PT1vJiYobz1pKzEpKSxpLS19dmFyIGE9ZSt1LGY9dC1vO3JldHVybiByW3RdPXtsaW5lOmEsbGluZVN0YXJ0Om99LHtvZmZzZXQ6dCxsaW5lOmErMSxjb2x1bW46ZisxfX1mdW5jdGlvbiBfKG4pe2lmKCF5KG4pKXRocm93IG5ldyBFcnJvcihcIm5vdCBhIHBhcnNlcjogXCIrbil9ZnVuY3Rpb24gTChuLHQpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiBuP24uY2hhckF0KHQpOm5bdF19ZnVuY3Rpb24gTyhuKXtpZihcIm51bWJlclwiIT10eXBlb2Ygbil0aHJvdyBuZXcgRXJyb3IoXCJub3QgYSBudW1iZXI6IFwiK24pfWZ1bmN0aW9uIGsobil7aWYoXCJmdW5jdGlvblwiIT10eXBlb2Ygbil0aHJvdyBuZXcgRXJyb3IoXCJub3QgYSBmdW5jdGlvbjogXCIrbil9ZnVuY3Rpb24gUChuKXtpZihcInN0cmluZ1wiIT10eXBlb2Ygbil0aHJvdyBuZXcgRXJyb3IoXCJub3QgYSBzdHJpbmc6IFwiK24pfXZhciBxPTIsQT0zLEk9OCxGPTUqSSxNPTQqSSx6PVwiICBcIjtmdW5jdGlvbiBSKG4sdCl7cmV0dXJuIG5ldyBBcnJheSh0KzEpLmpvaW4obil9ZnVuY3Rpb24gVShuLHQscil7dmFyIGU9dC1uLmxlbmd0aDtyZXR1cm4gZTw9MD9uOlIocixlKStufWZ1bmN0aW9uIFcobix0LHIsZSl7cmV0dXJue2Zyb206bi10PjA/bi10OjAsdG86bityPmU/ZTpuK3J9fWZ1bmN0aW9uIEQobix0KXt2YXIgcixlLHUsbyxmLGM9dC5pbmRleCxzPWMub2Zmc2V0LGw9MTtpZihzPT09bi5sZW5ndGgpcmV0dXJuXCJHb3QgdGhlIGVuZCBvZiB0aGUgaW5wdXRcIjtpZih3KG4pKXt2YXIgaD1zLXMlSSxwPXMtaCxkPVcoaCxGLE0rSSxuLmxlbmd0aCksdj1hKGZ1bmN0aW9uKG4pe3JldHVybiBhKGZ1bmN0aW9uKG4pe3JldHVybiBVKG4udG9TdHJpbmcoMTYpLDIsXCIwXCIpfSxuKX0sZnVuY3Rpb24obix0KXt2YXIgcj1uLmxlbmd0aCxlPVtdLHU9MDtpZihyPD10KXJldHVybltuLnNsaWNlKCldO2Zvcih2YXIgbz0wO288cjtvKyspZVt1XXx8ZS5wdXNoKFtdKSxlW3VdLnB1c2gobltvXSksKG8rMSkldD09MCYmdSsrO3JldHVybiBlfShuLnNsaWNlKGQuZnJvbSxkLnRvKS50b0pTT04oKS5kYXRhLEkpKTtvPWZ1bmN0aW9uKG4pe3JldHVybiAwPT09bi5mcm9tJiYxPT09bi50bz97ZnJvbTpuLmZyb20sdG86bi50b306e2Zyb206bi5mcm9tL0ksdG86TWF0aC5mbG9vcihuLnRvL0kpfX0oZCksZT1oL0kscj0zKnAscD49NCYmKHIrPTEpLGw9Mix1PWEoZnVuY3Rpb24obil7cmV0dXJuIG4ubGVuZ3RoPD00P24uam9pbihcIiBcIik6bi5zbGljZSgwLDQpLmpvaW4oXCIgXCIpK1wiICBcIituLnNsaWNlKDQpLmpvaW4oXCIgXCIpfSx2KSwoZj0oOCooby50bz4wP28udG8tMTpvLnRvKSkudG9TdHJpbmcoMTYpLmxlbmd0aCk8MiYmKGY9Mil9ZWxzZXt2YXIgZz1uLnNwbGl0KC9cXHJcXG58W1xcblxcclxcdTIwMjhcXHUyMDI5XS8pO3I9Yy5jb2x1bW4tMSxlPWMubGluZS0xLG89VyhlLHEsQSxnLmxlbmd0aCksdT1nLnNsaWNlKG8uZnJvbSxvLnRvKSxmPW8udG8udG9TdHJpbmcoKS5sZW5ndGh9dmFyIG09ZS1vLmZyb207cmV0dXJuIHcobikmJihmPSg4KihvLnRvPjA/by50by0xOm8udG8pKS50b1N0cmluZygxNikubGVuZ3RoKTwyJiYoZj0yKSxpKGZ1bmN0aW9uKHQsZSx1KXt2YXIgaSxhPXU9PT1tLGM9YT9cIj4gXCI6ejtyZXR1cm4gaT13KG4pP1UoKDgqKG8uZnJvbSt1KSkudG9TdHJpbmcoMTYpLGYsXCIwXCIpOlUoKG8uZnJvbSt1KzEpLnRvU3RyaW5nKCksZixcIiBcIiksW10uY29uY2F0KHQsW2MraStcIiB8IFwiK2VdLGE/W3orUihcIiBcIixmKStcIiB8IFwiK1UoXCJcIixyLFwiIFwiKStSKFwiXlwiLGwpXTpbXSl9LFtdLHUpLmpvaW4oXCJcXG5cIil9ZnVuY3Rpb24gTihuLHQpe3JldHVybltcIlxcblwiLFwiLS0gUEFSU0lORyBGQUlMRUQgXCIrUihcIi1cIiw1MCksXCJcXG5cXG5cIixEKG4sdCksXCJcXG5cXG5cIiwocj10LmV4cGVjdGVkLDE9PT1yLmxlbmd0aD9cIkV4cGVjdGVkOlxcblxcblwiK3JbMF06XCJFeHBlY3RlZCBvbmUgb2YgdGhlIGZvbGxvd2luZzogXFxuXFxuXCIrci5qb2luKFwiLCBcIikpLFwiXFxuXCJdLmpvaW4oXCJcIik7dmFyIHJ9ZnVuY3Rpb24gRyhuKXtyZXR1cm4gdm9pZCAwIT09bi5mbGFncz9uLmZsYWdzOltuLmdsb2JhbD9cImdcIjpcIlwiLG4uaWdub3JlQ2FzZT9cImlcIjpcIlwiLG4ubXVsdGlsaW5lP1wibVwiOlwiXCIsbi51bmljb2RlP1widVwiOlwiXCIsbi5zdGlja3k/XCJ5XCI6XCJcIl0uam9pbihcIlwiKX1mdW5jdGlvbiBDKCl7Zm9yKHZhciBuPVtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKSx0PW4ubGVuZ3RoLHI9MDtyPHQ7cis9MSlfKG5bcl0pO3JldHVybiBlKGZ1bmN0aW9uKHIsZSl7Zm9yKHZhciB1LG89bmV3IEFycmF5KHQpLGk9MDtpPHQ7aSs9MSl7aWYoISh1PUIobltpXS5fKHIsZSksdSkpLnN0YXR1cylyZXR1cm4gdTtvW2ldPXUudmFsdWUsZT11LmluZGV4fXJldHVybiBCKGIoZSxvKSx1KX0pfWZ1bmN0aW9uIEooKXt2YXIgbj1bXS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7aWYoMD09PW4ubGVuZ3RoKXRocm93IG5ldyBFcnJvcihcInNlcU1hcCBuZWVkcyBhdCBsZWFzdCBvbmUgYXJndW1lbnRcIik7dmFyIHQ9bi5wb3AoKTtyZXR1cm4gayh0KSxDLmFwcGx5KG51bGwsbikubWFwKGZ1bmN0aW9uKG4pe3JldHVybiB0LmFwcGx5KG51bGwsbil9KX1mdW5jdGlvbiBUKCl7dmFyIG49W10uc2xpY2UuY2FsbChhcmd1bWVudHMpLHQ9bi5sZW5ndGg7aWYoMD09PXQpcmV0dXJuIFkoXCJ6ZXJvIGFsdGVybmF0ZXNcIik7Zm9yKHZhciByPTA7cjx0O3IrPTEpXyhuW3JdKTtyZXR1cm4gZShmdW5jdGlvbih0LHIpe2Zvcih2YXIgZSx1PTA7dTxuLmxlbmd0aDt1Kz0xKWlmKChlPUIoblt1XS5fKHQsciksZSkpLnN0YXR1cylyZXR1cm4gZTtyZXR1cm4gZX0pfWZ1bmN0aW9uIFYobix0KXtyZXR1cm4gSChuLHQpLm9yKFgoW10pKX1mdW5jdGlvbiBIKG4sdCl7cmV0dXJuIF8obiksXyh0KSxKKG4sdC50aGVuKG4pLm1hbnkoKSxmdW5jdGlvbihuLHQpe3JldHVybltuXS5jb25jYXQodCl9KX1mdW5jdGlvbiBLKG4pe1Aobik7dmFyIHQ9XCInXCIrbitcIidcIjtyZXR1cm4gZShmdW5jdGlvbihyLGUpe3ZhciB1PWUrbi5sZW5ndGgsbz1yLnNsaWNlKGUsdSk7cmV0dXJuIG89PT1uP2IodSxvKTp4KGUsdCl9KX1mdW5jdGlvbiBRKG4sdCl7IWZ1bmN0aW9uKG4pe2lmKCEobiBpbnN0YW5jZW9mIFJlZ0V4cCkpdGhyb3cgbmV3IEVycm9yKFwibm90IGEgcmVnZXhwOiBcIituKTtmb3IodmFyIHQ9RyhuKSxyPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBlPXQuY2hhckF0KHIpO2lmKFwiaVwiIT09ZSYmXCJtXCIhPT1lJiZcInVcIiE9PWUmJlwic1wiIT09ZSl0aHJvdyBuZXcgRXJyb3IoJ3Vuc3VwcG9ydGVkIHJlZ2V4cCBmbGFnIFwiJytlKydcIjogJytuKX19KG4pLGFyZ3VtZW50cy5sZW5ndGg+PTI/Tyh0KTp0PTA7dmFyIHI9ZnVuY3Rpb24obil7cmV0dXJuIFJlZ0V4cChcIl4oPzpcIituLnNvdXJjZStcIilcIixHKG4pKX0obiksdT1cIlwiK247cmV0dXJuIGUoZnVuY3Rpb24obixlKXt2YXIgbz1yLmV4ZWMobi5zbGljZShlKSk7aWYobyl7aWYoMDw9dCYmdDw9by5sZW5ndGgpe3ZhciBpPW9bMF0sYT1vW3RdO3JldHVybiBiKGUraS5sZW5ndGgsYSl9cmV0dXJuIHgoZSxcInZhbGlkIG1hdGNoIGdyb3VwICgwIHRvIFwiK28ubGVuZ3RoK1wiKSBpbiBcIit1KX1yZXR1cm4geChlLHUpfSl9ZnVuY3Rpb24gWChuKXtyZXR1cm4gZShmdW5jdGlvbih0LHIpe3JldHVybiBiKHIsbil9KX1mdW5jdGlvbiBZKG4pe3JldHVybiBlKGZ1bmN0aW9uKHQscil7cmV0dXJuIHgocixuKX0pfWZ1bmN0aW9uIFoobil7aWYoeShuKSlyZXR1cm4gZShmdW5jdGlvbih0LHIpe3ZhciBlPW4uXyh0LHIpO3JldHVybiBlLmluZGV4PXIsZS52YWx1ZT1cIlwiLGV9KTtpZihcInN0cmluZ1wiPT10eXBlb2YgbilyZXR1cm4gWihLKG4pKTtpZihuIGluc3RhbmNlb2YgUmVnRXhwKXJldHVybiBaKFEobikpO3Rocm93IG5ldyBFcnJvcihcIm5vdCBhIHN0cmluZywgcmVnZXhwLCBvciBwYXJzZXI6IFwiK24pfWZ1bmN0aW9uICQobil7cmV0dXJuIF8obiksZShmdW5jdGlvbih0LHIpe3ZhciBlPW4uXyh0LHIpLHU9dC5zbGljZShyLGUuaW5kZXgpO3JldHVybiBlLnN0YXR1cz94KHIsJ25vdCBcIicrdSsnXCInKTpiKHIsbnVsbCl9KX1mdW5jdGlvbiBubihuKXtyZXR1cm4gayhuKSxlKGZ1bmN0aW9uKHQscil7dmFyIGU9TCh0LHIpO3JldHVybiByPHQubGVuZ3RoJiZuKGUpP2IocisxLGUpOngocixcImEgY2hhcmFjdGVyL2J5dGUgbWF0Y2hpbmcgXCIrbil9KX1mdW5jdGlvbiB0bihuLHQpe2FyZ3VtZW50cy5sZW5ndGg8MiYmKHQ9bixuPXZvaWQgMCk7dmFyIHI9ZShmdW5jdGlvbihuLGUpe3JldHVybiByLl89dCgpLl8sci5fKG4sZSl9KTtyZXR1cm4gbj9yLmRlc2Mobik6cn1mdW5jdGlvbiBybigpe3JldHVybiBZKFwiZmFudGFzeS1sYW5kL2VtcHR5XCIpfXUucGFyc2U9ZnVuY3Rpb24obil7aWYoXCJzdHJpbmdcIiE9dHlwZW9mIG4mJiF3KG4pKXRocm93IG5ldyBFcnJvcihcIi5wYXJzZSBtdXN0IGJlIGNhbGxlZCB3aXRoIGEgc3RyaW5nIG9yIEJ1ZmZlciBhcyBpdHMgYXJndW1lbnRcIik7dmFyIHQscj10aGlzLnNraXAoYW4pLl8obiwwKTtyZXR1cm4gdD1yLnN0YXR1cz97c3RhdHVzOiEwLHZhbHVlOnIudmFsdWV9OntzdGF0dXM6ITEsaW5kZXg6UyhuLHIuZnVydGhlc3QpLGV4cGVjdGVkOnIuZXhwZWN0ZWR9LGRlbGV0ZSBqW25dLHR9LHUudHJ5UGFyc2U9ZnVuY3Rpb24obil7dmFyIHQ9dGhpcy5wYXJzZShuKTtpZih0LnN0YXR1cylyZXR1cm4gdC52YWx1ZTt2YXIgcj1OKG4sdCksZT1uZXcgRXJyb3Iocik7dGhyb3cgZS50eXBlPVwiUGFyc2ltbW9uRXJyb3JcIixlLnJlc3VsdD10LGV9LHUuYXNzZXJ0PWZ1bmN0aW9uKG4sdCl7cmV0dXJuIHRoaXMuY2hhaW4oZnVuY3Rpb24ocil7cmV0dXJuIG4ocik/WChyKTpZKHQpfSl9LHUub3I9ZnVuY3Rpb24obil7cmV0dXJuIFQodGhpcyxuKX0sdS50cmltPWZ1bmN0aW9uKG4pe3JldHVybiB0aGlzLndyYXAobixuKX0sdS53cmFwPWZ1bmN0aW9uKG4sdCl7cmV0dXJuIEoobix0aGlzLHQsZnVuY3Rpb24obix0KXtyZXR1cm4gdH0pfSx1LnRocnU9ZnVuY3Rpb24obil7cmV0dXJuIG4odGhpcyl9LHUudGhlbj1mdW5jdGlvbihuKXtyZXR1cm4gXyhuKSxDKHRoaXMsbikubWFwKGZ1bmN0aW9uKG4pe3JldHVybiBuWzFdfSl9LHUubWFueT1mdW5jdGlvbigpe3ZhciBuPXRoaXM7cmV0dXJuIGUoZnVuY3Rpb24odCxyKXtmb3IodmFyIGU9W10sdT12b2lkIDA7Oyl7aWYoISh1PUIobi5fKHQsciksdSkpLnN0YXR1cylyZXR1cm4gQihiKHIsZSksdSk7aWYocj09PXUuaW5kZXgpdGhyb3cgbmV3IEVycm9yKFwiaW5maW5pdGUgbG9vcCBkZXRlY3RlZCBpbiAubWFueSgpIHBhcnNlciAtLS0gY2FsbGluZyAubWFueSgpIG9uIGEgcGFyc2VyIHdoaWNoIGNhbiBhY2NlcHQgemVybyBjaGFyYWN0ZXJzIGlzIHVzdWFsbHkgdGhlIGNhdXNlXCIpO3I9dS5pbmRleCxlLnB1c2godS52YWx1ZSl9fSl9LHUudGllV2l0aD1mdW5jdGlvbihuKXtyZXR1cm4gUChuKSx0aGlzLm1hcChmdW5jdGlvbih0KXtpZihmdW5jdGlvbihuKXtpZighRShuKSl0aHJvdyBuZXcgRXJyb3IoXCJub3QgYW4gYXJyYXk6IFwiK24pfSh0KSx0Lmxlbmd0aCl7UCh0WzBdKTtmb3IodmFyIHI9dFswXSxlPTE7ZTx0Lmxlbmd0aDtlKyspUCh0W2VdKSxyKz1uK3RbZV07cmV0dXJuIHJ9cmV0dXJuXCJcIn0pfSx1LnRpZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRpZVdpdGgoXCJcIil9LHUudGltZXM9ZnVuY3Rpb24obix0KXt2YXIgcj10aGlzO3JldHVybiBhcmd1bWVudHMubGVuZ3RoPDImJih0PW4pLE8obiksTyh0KSxlKGZ1bmN0aW9uKGUsdSl7Zm9yKHZhciBvPVtdLGk9dm9pZCAwLGE9dm9pZCAwLGY9MDtmPG47Zis9MSl7aWYoYT1CKGk9ci5fKGUsdSksYSksIWkuc3RhdHVzKXJldHVybiBhO3U9aS5pbmRleCxvLnB1c2goaS52YWx1ZSl9Zm9yKDtmPHQmJihhPUIoaT1yLl8oZSx1KSxhKSxpLnN0YXR1cyk7Zis9MSl1PWkuaW5kZXgsby5wdXNoKGkudmFsdWUpO3JldHVybiBCKGIodSxvKSxhKX0pfSx1LnJlc3VsdD1mdW5jdGlvbihuKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gbn0pfSx1LmF0TW9zdD1mdW5jdGlvbihuKXtyZXR1cm4gdGhpcy50aW1lcygwLG4pfSx1LmF0TGVhc3Q9ZnVuY3Rpb24obil7cmV0dXJuIEoodGhpcy50aW1lcyhuKSx0aGlzLm1hbnkoKSxmdW5jdGlvbihuLHQpe3JldHVybiBuLmNvbmNhdCh0KX0pfSx1Lm1hcD1mdW5jdGlvbihuKXtrKG4pO3ZhciB0PXRoaXM7cmV0dXJuIGUoZnVuY3Rpb24ocixlKXt2YXIgdT10Ll8ocixlKTtyZXR1cm4gdS5zdGF0dXM/QihiKHUuaW5kZXgsbih1LnZhbHVlKSksdSk6dX0pfSx1LmNvbnRyYW1hcD1mdW5jdGlvbihuKXtrKG4pO3ZhciB0PXRoaXM7cmV0dXJuIGUoZnVuY3Rpb24ocixlKXt2YXIgdT10LnBhcnNlKG4oci5zbGljZShlKSkpO3JldHVybiB1LnN0YXR1cz9iKGUrci5sZW5ndGgsdS52YWx1ZSk6dX0pfSx1LnByb21hcD1mdW5jdGlvbihuLHQpe3JldHVybiBrKG4pLGsodCksdGhpcy5jb250cmFtYXAobikubWFwKHQpfSx1LnNraXA9ZnVuY3Rpb24obil7cmV0dXJuIEModGhpcyxuKS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIG5bMF19KX0sdS5tYXJrPWZ1bmN0aW9uKCl7cmV0dXJuIEooZW4sdGhpcyxlbixmdW5jdGlvbihuLHQscil7cmV0dXJue3N0YXJ0Om4sdmFsdWU6dCxlbmQ6cn19KX0sdS5ub2RlPWZ1bmN0aW9uKG4pe3JldHVybiBKKGVuLHRoaXMsZW4sZnVuY3Rpb24odCxyLGUpe3JldHVybntuYW1lOm4sdmFsdWU6cixzdGFydDp0LGVuZDplfX0pfSx1LnNlcEJ5PWZ1bmN0aW9uKG4pe3JldHVybiBWKHRoaXMsbil9LHUuc2VwQnkxPWZ1bmN0aW9uKG4pe3JldHVybiBIKHRoaXMsbil9LHUubG9va2FoZWFkPWZ1bmN0aW9uKG4pe3JldHVybiB0aGlzLnNraXAoWihuKSl9LHUubm90Rm9sbG93ZWRCeT1mdW5jdGlvbihuKXtyZXR1cm4gdGhpcy5za2lwKCQobikpfSx1LmRlc2M9ZnVuY3Rpb24obil7RShuKXx8KG49W25dKTt2YXIgdD10aGlzO3JldHVybiBlKGZ1bmN0aW9uKHIsZSl7dmFyIHU9dC5fKHIsZSk7cmV0dXJuIHUuc3RhdHVzfHwodS5leHBlY3RlZD1uKSx1fSl9LHUuZmFsbGJhY2s9ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMub3IoWChuKSl9LHUuYXA9ZnVuY3Rpb24obil7cmV0dXJuIEoobix0aGlzLGZ1bmN0aW9uKG4sdCl7cmV0dXJuIG4odCl9KX0sdS5jaGFpbj1mdW5jdGlvbihuKXt2YXIgdD10aGlzO3JldHVybiBlKGZ1bmN0aW9uKHIsZSl7dmFyIHU9dC5fKHIsZSk7cmV0dXJuIHUuc3RhdHVzP0Iobih1LnZhbHVlKS5fKHIsdS5pbmRleCksdSk6dX0pfSx1LmNvbmNhdD11Lm9yLHUuZW1wdHk9cm4sdS5vZj1YLHVbXCJmYW50YXN5LWxhbmQvYXBcIl09dS5hcCx1W1wiZmFudGFzeS1sYW5kL2NoYWluXCJdPXUuY2hhaW4sdVtcImZhbnRhc3ktbGFuZC9jb25jYXRcIl09dS5jb25jYXQsdVtcImZhbnRhc3ktbGFuZC9lbXB0eVwiXT11LmVtcHR5LHVbXCJmYW50YXN5LWxhbmQvb2ZcIl09dS5vZix1W1wiZmFudGFzeS1sYW5kL21hcFwiXT11Lm1hcDt2YXIgZW49ZShmdW5jdGlvbihuLHQpe3JldHVybiBiKHQsUyhuLHQpKX0pLHVuPWUoZnVuY3Rpb24obix0KXtyZXR1cm4gdD49bi5sZW5ndGg/eCh0LFwiYW55IGNoYXJhY3Rlci9ieXRlXCIpOmIodCsxLEwobix0KSl9KSxvbj1lKGZ1bmN0aW9uKG4sdCl7cmV0dXJuIGIobi5sZW5ndGgsbi5zbGljZSh0KSl9KSxhbj1lKGZ1bmN0aW9uKG4sdCl7cmV0dXJuIHQ8bi5sZW5ndGg/eCh0LFwiRU9GXCIpOmIodCxudWxsKX0pLGZuPVEoL1swLTldLykuZGVzYyhcImEgZGlnaXRcIiksY249USgvWzAtOV0qLykuZGVzYyhcIm9wdGlvbmFsIGRpZ2l0c1wiKSxzbj1RKC9bYS16XS9pKS5kZXNjKFwiYSBsZXR0ZXJcIiksbG49USgvW2Etel0qL2kpLmRlc2MoXCJvcHRpb25hbCBsZXR0ZXJzXCIpLGhuPVEoL1xccyovKS5kZXNjKFwib3B0aW9uYWwgd2hpdGVzcGFjZVwiKSxwbj1RKC9cXHMrLykuZGVzYyhcIndoaXRlc3BhY2VcIiksZG49SyhcIlxcclwiKSx2bj1LKFwiXFxuXCIpLGduPUsoXCJcXHJcXG5cIiksbW49VChnbix2bixkbikuZGVzYyhcIm5ld2xpbmVcIikseW49VChtbixhbik7ZS5hbGw9b24sZS5hbHQ9VCxlLmFueT11bixlLmNyPWRuLGUuY3JlYXRlTGFuZ3VhZ2U9ZnVuY3Rpb24obil7dmFyIHQ9e307Zm9yKHZhciByIGluIG4pKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJmZ1bmN0aW9uKHIpe3Rbcl09dG4oZnVuY3Rpb24oKXtyZXR1cm4gbltyXSh0KX0pfShyKTtyZXR1cm4gdH0sZS5jcmxmPWduLGUuY3VzdG9tPWZ1bmN0aW9uKG4pe3JldHVybiBlKG4oYix4KSl9LGUuZGlnaXQ9Zm4sZS5kaWdpdHM9Y24sZS5lbXB0eT1ybixlLmVuZD15bixlLmVvZj1hbixlLmZhaWw9WSxlLmZvcm1hdEVycm9yPU4sZS5pbmRleD1lbixlLmlzUGFyc2VyPXksZS5sYXp5PXRuLGUubGV0dGVyPXNuLGUubGV0dGVycz1sbixlLmxmPXZuLGUubG9va2FoZWFkPVosZS5tYWtlRmFpbHVyZT14LGUubWFrZVN1Y2Nlc3M9YixlLm5ld2xpbmU9bW4sZS5ub25lT2Y9ZnVuY3Rpb24obil7cmV0dXJuIG5uKGZ1bmN0aW9uKHQpe3JldHVybiBuLmluZGV4T2YodCk8MH0pLmRlc2MoXCJub25lIG9mICdcIituK1wiJ1wiKX0sZS5ub3RGb2xsb3dlZEJ5PSQsZS5vZj1YLGUub25lT2Y9ZnVuY3Rpb24obil7Zm9yKHZhciB0PW4uc3BsaXQoXCJcIikscj0wO3I8dC5sZW5ndGg7cisrKXRbcl09XCInXCIrdFtyXStcIidcIjtyZXR1cm4gbm4oZnVuY3Rpb24odCl7cmV0dXJuIG4uaW5kZXhPZih0KT49MH0pLmRlc2ModCl9LGUub3B0V2hpdGVzcGFjZT1obixlLlBhcnNlcj1lLGUucmFuZ2U9ZnVuY3Rpb24obix0KXtyZXR1cm4gbm4oZnVuY3Rpb24ocil7cmV0dXJuIG48PXImJnI8PXR9KS5kZXNjKG4rXCItXCIrdCl9LGUucmVnZXg9USxlLnJlZ2V4cD1RLGUuc2VwQnk9VixlLnNlcEJ5MT1ILGUuc2VxPUMsZS5zZXFNYXA9SixlLnNlcU9iaj1mdW5jdGlvbigpe2Zvcih2YXIgbix0PXt9LHI9MCx1PShuPWFyZ3VtZW50cyxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChuKSksbz11Lmxlbmd0aCxpPTA7aTxvO2krPTEpe3ZhciBhPXVbaV07aWYoIXkoYSkpe2lmKEUoYSkmJjI9PT1hLmxlbmd0aCYmXCJzdHJpbmdcIj09dHlwZW9mIGFbMF0mJnkoYVsxXSkpe3ZhciBmPWFbMF07aWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsZikpdGhyb3cgbmV3IEVycm9yKFwic2VxT2JqOiBkdXBsaWNhdGUga2V5IFwiK2YpO3RbZl09ITAscisrO2NvbnRpbnVlfXRocm93IG5ldyBFcnJvcihcInNlcU9iaiBhcmd1bWVudHMgbXVzdCBiZSBwYXJzZXJzIG9yIFtzdHJpbmcsIHBhcnNlcl0gYXJyYXkgcGFpcnMuXCIpfX1pZigwPT09cil0aHJvdyBuZXcgRXJyb3IoXCJzZXFPYmogZXhwZWN0cyBhdCBsZWFzdCBvbmUgbmFtZWQgcGFyc2VyLCBmb3VuZCB6ZXJvXCIpO3JldHVybiBlKGZ1bmN0aW9uKG4sdCl7Zm9yKHZhciByLGU9e30saT0wO2k8bztpKz0xKXt2YXIgYSxmO2lmKEUodVtpXSk/KGE9dVtpXVswXSxmPXVbaV1bMV0pOihhPW51bGwsZj11W2ldKSwhKHI9QihmLl8obix0KSxyKSkuc3RhdHVzKXJldHVybiByO2EmJihlW2FdPXIudmFsdWUpLHQ9ci5pbmRleH1yZXR1cm4gQihiKHQsZSkscil9KX0sZS5zdHJpbmc9SyxlLnN1Y2NlZWQ9WCxlLnRha2VXaGlsZT1mdW5jdGlvbihuKXtyZXR1cm4gayhuKSxlKGZ1bmN0aW9uKHQscil7Zm9yKHZhciBlPXI7ZTx0Lmxlbmd0aCYmbihMKHQsZSkpOyllKys7cmV0dXJuIGIoZSx0LnNsaWNlKHIsZSkpfSl9LGUudGVzdD1ubixlLndoaXRlc3BhY2U9cG4sZVtcImZhbnRhc3ktbGFuZC9lbXB0eVwiXT1ybixlW1wiZmFudGFzeS1sYW5kL29mXCJdPVgsZS5CaW5hcnk9e2JpdFNlcTpsLGJpdFNlcU9iajpmdW5jdGlvbihuKXtzKCk7dmFyIHQ9e30scj0wLGU9YShmdW5jdGlvbihuKXtpZihFKG4pKXt2YXIgZT1uO2lmKDIhPT1lLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoXCJbXCIrZS5qb2luKFwiLCBcIikrXCJdIHNob3VsZCBiZSBsZW5ndGggMiwgZ290IGxlbmd0aCBcIitlLmxlbmd0aCk7aWYoUChlWzBdKSxPKGVbMV0pLE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LGVbMF0pKXRocm93IG5ldyBFcnJvcihcImR1cGxpY2F0ZSBrZXkgaW4gYml0U2VxT2JqOiBcIitlWzBdKTtyZXR1cm4gdFtlWzBdXT0hMCxyKyssZX1yZXR1cm4gTyhuKSxbbnVsbCxuXX0sbik7aWYocjwxKXRocm93IG5ldyBFcnJvcihcImJpdFNlcU9iaiBleHBlY3RzIGF0IGxlYXN0IG9uZSBuYW1lZCBwYWlyLCBnb3QgW1wiK24uam9pbihcIiwgXCIpK1wiXVwiKTt2YXIgdT1hKGZ1bmN0aW9uKG4pe3JldHVybiBuWzBdfSxlKTtyZXR1cm4gbChhKGZ1bmN0aW9uKG4pe3JldHVybiBuWzFdfSxlKSkubWFwKGZ1bmN0aW9uKG4pe3JldHVybiBpKGZ1bmN0aW9uKG4sdCl7cmV0dXJuIG51bGwhPT10WzBdJiYoblt0WzBdXT10WzFdKSxufSx7fSxhKGZ1bmN0aW9uKHQscil7cmV0dXJuW3QsbltyXV19LHUpKX0pfSxieXRlOmZ1bmN0aW9uKG4pe2lmKHMoKSxPKG4pLG4+MjU1KXRocm93IG5ldyBFcnJvcihcIlZhbHVlIHNwZWNpZmllZCB0byBieXRlIGNvbnN0cnVjdG9yIChcIituK1wiPTB4XCIrbi50b1N0cmluZygxNikrXCIpIGlzIGxhcmdlciBpbiB2YWx1ZSB0aGFuIGEgc2luZ2xlIGJ5dGUuXCIpO3ZhciB0PShuPjE1P1wiMHhcIjpcIjB4MFwiKStuLnRvU3RyaW5nKDE2KTtyZXR1cm4gZShmdW5jdGlvbihyLGUpe3ZhciB1PUwocixlKTtyZXR1cm4gdT09PW4/YihlKzEsdSk6eChlLHQpfSl9LGJ1ZmZlcjpmdW5jdGlvbihuKXtyZXR1cm4gaChcImJ1ZmZlclwiLG4pLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gQnVmZmVyLmZyb20obil9KX0sZW5jb2RlZFN0cmluZzpmdW5jdGlvbihuLHQpe3JldHVybiBoKFwic3RyaW5nXCIsdCkubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LnRvU3RyaW5nKG4pfSl9LHVpbnRCRTpkLHVpbnQ4QkU6ZCgxKSx1aW50MTZCRTpkKDIpLHVpbnQzMkJFOmQoNCksdWludExFOnYsdWludDhMRTp2KDEpLHVpbnQxNkxFOnYoMiksdWludDMyTEU6dig0KSxpbnRCRTpnLGludDhCRTpnKDEpLGludDE2QkU6ZygyKSxpbnQzMkJFOmcoNCksaW50TEU6bSxpbnQ4TEU6bSgxKSxpbnQxNkxFOm0oMiksaW50MzJMRTptKDQpLGZsb2F0QkU6aChcImZsb2F0QkVcIiw0KS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIG4ucmVhZEZsb2F0QkUoMCl9KSxmbG9hdExFOmgoXCJmbG9hdExFXCIsNCkubWFwKGZ1bmN0aW9uKG4pe3JldHVybiBuLnJlYWRGbG9hdExFKDApfSksZG91YmxlQkU6aChcImRvdWJsZUJFXCIsOCkubWFwKGZ1bmN0aW9uKG4pe3JldHVybiBuLnJlYWREb3VibGVCRSgwKX0pLGRvdWJsZUxFOmgoXCJkb3VibGVMRVwiLDgpLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gbi5yZWFkRG91YmxlTEUoMCl9KX0sbi5leHBvcnRzPWV9XSl9KTsiLCAiXCJ1c2Ugc3RyaWN0XCI7XHJcbnZhciBfX2V4dGVuZHMgPSAodGhpcyAmJiB0aGlzLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHtcclxuICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHtcclxuICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XHJcbiAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcclxuICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsIHApKSBkW3BdID0gYltwXTsgfTtcclxuICAgICAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTtcclxuICAgIH07XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHtcclxuICAgICAgICBpZiAodHlwZW9mIGIgIT09IFwiZnVuY3Rpb25cIiAmJiBiICE9PSBudWxsKVxyXG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIiArIFN0cmluZyhiKSArIFwiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7XHJcbiAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcclxuICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cclxuICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XHJcbiAgICB9O1xyXG59KSgpO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbmV4cG9ydHMuRW1wdHlCVHJlZSA9IGV4cG9ydHMuYXNTZXQgPSBleHBvcnRzLnNpbXBsZUNvbXBhcmF0b3IgPSBleHBvcnRzLmRlZmF1bHRDb21wYXJhdG9yID0gdm9pZCAwO1xyXG4vKipcclxuICogQ29tcGFyZXMgRGVmYXVsdENvbXBhcmFibGVzIHRvIGZvcm0gYSBzdHJpY3QgcGFydGlhbCBvcmRlcmluZy5cclxuICpcclxuICogSGFuZGxlcyArLy0wIGFuZCBOYU4gbGlrZSBNYXA6IE5hTiBpcyBlcXVhbCB0byBOYU4sIGFuZCAtMCBpcyBlcXVhbCB0byArMC5cclxuICpcclxuICogQXJyYXlzIGFyZSBjb21wYXJlZCB1c2luZyAnPCcgYW5kICc+Jywgd2hpY2ggbWF5IGNhdXNlIHVuZXhwZWN0ZWQgZXF1YWxpdHk6XHJcbiAqIGZvciBleGFtcGxlIFsxXSB3aWxsIGJlIGNvbnNpZGVyZWQgZXF1YWwgdG8gWycxJ10uXHJcbiAqXHJcbiAqIFR3byBvYmplY3RzIHdpdGggZXF1YWwgdmFsdWVPZiBjb21wYXJlIHRoZSBzYW1lLCBidXQgY29tcGFyZSB1bmVxdWFsIHRvXHJcbiAqIHByaW1pdGl2ZXMgdGhhdCBoYXZlIHRoZSBzYW1lIHZhbHVlLlxyXG4gKi9cclxuZnVuY3Rpb24gZGVmYXVsdENvbXBhcmF0b3IoYSwgYikge1xyXG4gICAgLy8gU3BlY2lhbCBjYXNlIGZpbml0ZSBudW1iZXJzIGZpcnN0IGZvciBwZXJmb3JtYW5jZS5cclxuICAgIC8vIE5vdGUgdGhhdCB0aGUgdHJpY2sgb2YgdXNpbmcgJ2EgLSBiJyBhbmQgY2hlY2tpbmcgZm9yIE5hTiB0byBkZXRlY3Qgbm9uLW51bWJlcnNcclxuICAgIC8vIGRvZXMgbm90IHdvcmsgaWYgdGhlIHN0cmluZ3MgYXJlIG51bWVyaWMgKGV4OiBcIjVcIikuIFRoaXMgd291bGQgbGVhZGluZyBtb3N0IFxyXG4gICAgLy8gY29tcGFyaXNvbiBmdW5jdGlvbnMgdXNpbmcgdGhhdCBhcHByb2FjaCB0byBmYWlsIHRvIGhhdmUgdHJhbnNpdGl2aXR5LlxyXG4gICAgaWYgKE51bWJlci5pc0Zpbml0ZShhKSAmJiBOdW1iZXIuaXNGaW5pdGUoYikpIHtcclxuICAgICAgICByZXR1cm4gYSAtIGI7XHJcbiAgICB9XHJcbiAgICAvLyBUaGUgZGVmYXVsdCA8IGFuZCA+IG9wZXJhdG9ycyBhcmUgbm90IHRvdGFsbHkgb3JkZXJlZC4gVG8gYWxsb3cgdHlwZXMgdG8gYmUgbWl4ZWRcclxuICAgIC8vIGluIGEgc2luZ2xlIGNvbGxlY3Rpb24sIGNvbXBhcmUgdHlwZXMgYW5kIG9yZGVyIHZhbHVlcyBvZiBkaWZmZXJlbnQgdHlwZXMgYnkgdHlwZS5cclxuICAgIHZhciB0YSA9IHR5cGVvZiBhO1xyXG4gICAgdmFyIHRiID0gdHlwZW9mIGI7XHJcbiAgICBpZiAodGEgIT09IHRiKSB7XHJcbiAgICAgICAgcmV0dXJuIHRhIDwgdGIgPyAtMSA6IDE7XHJcbiAgICB9XHJcbiAgICBpZiAodGEgPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgLy8gc3RhbmRhcmRpemVkIEphdmFTY3JpcHQgYnVnOiBudWxsIGlzIG5vdCBhbiBvYmplY3QsIGJ1dCB0eXBlb2Ygc2F5cyBpdCBpc1xyXG4gICAgICAgIGlmIChhID09PSBudWxsKVxyXG4gICAgICAgICAgICByZXR1cm4gYiA9PT0gbnVsbCA/IDAgOiAtMTtcclxuICAgICAgICBlbHNlIGlmIChiID09PSBudWxsKVxyXG4gICAgICAgICAgICByZXR1cm4gMTtcclxuICAgICAgICBhID0gYS52YWx1ZU9mKCk7XHJcbiAgICAgICAgYiA9IGIudmFsdWVPZigpO1xyXG4gICAgICAgIHRhID0gdHlwZW9mIGE7XHJcbiAgICAgICAgdGIgPSB0eXBlb2YgYjtcclxuICAgICAgICAvLyBEZWFsIHdpdGggdGhlIHR3byB2YWx1ZU9mKClzIHByb2R1Y2luZyBkaWZmZXJlbnQgdHlwZXNcclxuICAgICAgICBpZiAodGEgIT09IHRiKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0YSA8IHRiID8gLTEgOiAxO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIGEgYW5kIGIgYXJlIG5vdyB0aGUgc2FtZSB0eXBlLCBhbmQgd2lsbCBiZSBhIG51bWJlciwgc3RyaW5nIG9yIGFycmF5IFxyXG4gICAgLy8gKHdoaWNoIHdlIGFzc3VtZSBob2xkcyBudW1iZXJzIG9yIHN0cmluZ3MpLCBvciBzb21ldGhpbmcgdW5zdXBwb3J0ZWQuXHJcbiAgICBpZiAoYSA8IGIpXHJcbiAgICAgICAgcmV0dXJuIC0xO1xyXG4gICAgaWYgKGEgPiBiKVxyXG4gICAgICAgIHJldHVybiAxO1xyXG4gICAgaWYgKGEgPT09IGIpXHJcbiAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAvLyBPcmRlciBOYU4gbGVzcyB0aGFuIG90aGVyIG51bWJlcnNcclxuICAgIGlmIChOdW1iZXIuaXNOYU4oYSkpXHJcbiAgICAgICAgcmV0dXJuIE51bWJlci5pc05hTihiKSA/IDAgOiAtMTtcclxuICAgIGVsc2UgaWYgKE51bWJlci5pc05hTihiKSlcclxuICAgICAgICByZXR1cm4gMTtcclxuICAgIC8vIFRoaXMgY291bGQgYmUgdHdvIG9iamVjdHMgKGUuZy4gWzddIGFuZCBbJzcnXSkgdGhhdCBhcmVuJ3Qgb3JkZXJlZFxyXG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkoYSkgPyAwIDogTnVtYmVyLk5hTjtcclxufVxyXG5leHBvcnRzLmRlZmF1bHRDb21wYXJhdG9yID0gZGVmYXVsdENvbXBhcmF0b3I7XHJcbjtcclxuZnVuY3Rpb24gc2ltcGxlQ29tcGFyYXRvcihhLCBiKSB7XHJcbiAgICByZXR1cm4gYSA+IGIgPyAxIDogYSA8IGIgPyAtMSA6IDA7XHJcbn1cclxuZXhwb3J0cy5zaW1wbGVDb21wYXJhdG9yID0gc2ltcGxlQ29tcGFyYXRvcjtcclxuO1xyXG4vKipcclxuICogQSByZWFzb25hYmx5IGZhc3QgY29sbGVjdGlvbiBvZiBrZXktdmFsdWUgcGFpcnMgd2l0aCBhIHBvd2VyZnVsIEFQSS5cclxuICogTGFyZ2VseSBjb21wYXRpYmxlIHdpdGggdGhlIHN0YW5kYXJkIE1hcC4gQlRyZWUgaXMgYSBCKyB0cmVlIGRhdGEgc3RydWN0dXJlLFxyXG4gKiBzbyB0aGUgY29sbGVjdGlvbiBpcyBzb3J0ZWQgYnkga2V5LlxyXG4gKlxyXG4gKiBCKyB0cmVlcyB0ZW5kIHRvIHVzZSBtZW1vcnkgbW9yZSBlZmZpY2llbnRseSB0aGFuIGhhc2h0YWJsZXMgc3VjaCBhcyB0aGVcclxuICogc3RhbmRhcmQgTWFwLCBlc3BlY2lhbGx5IHdoZW4gdGhlIGNvbGxlY3Rpb24gY29udGFpbnMgYSBsYXJnZSBudW1iZXIgb2ZcclxuICogaXRlbXMuIEhvd2V2ZXIsIG1haW50YWluaW5nIHRoZSBzb3J0IG9yZGVyIG1ha2VzIHRoZW0gbW9kZXN0bHkgc2xvd2VyOlxyXG4gKiBPKGxvZyBzaXplKSByYXRoZXIgdGhhbiBPKDEpLiBUaGlzIEIrIHRyZWUgaW1wbGVtZW50YXRpb24gc3VwcG9ydHMgTygxKVxyXG4gKiBmYXN0IGNsb25pbmcuIEl0IGFsc28gc3VwcG9ydHMgZnJlZXplKCksIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGVuc3VyZSB0aGF0XHJcbiAqIGEgQlRyZWUgaXMgbm90IGNoYW5nZWQgYWNjaWRlbnRhbGx5LlxyXG4gKlxyXG4gKiBDb25mdXNpbmdseSwgdGhlIEVTNiBNYXAuZm9yRWFjaChjKSBtZXRob2QgY2FsbHMgYyh2YWx1ZSxrZXkpIGluc3RlYWQgb2ZcclxuICogYyhrZXksdmFsdWUpLCBpbiBjb250cmFzdCB0byBvdGhlciBtZXRob2RzIHN1Y2ggYXMgc2V0KCkgYW5kIGVudHJpZXMoKVxyXG4gKiB3aGljaCBwdXQgdGhlIGtleSBmaXJzdC4gSSBjYW4gb25seSBhc3N1bWUgdGhhdCB0aGUgb3JkZXIgd2FzIHJldmVyc2VkIG9uXHJcbiAqIHRoZSB0aGVvcnkgdGhhdCB1c2VycyB3b3VsZCB1c3VhbGx5IHdhbnQgdG8gZXhhbWluZSB2YWx1ZXMgYW5kIGlnbm9yZSBrZXlzLlxyXG4gKiBCVHJlZSdzIGZvckVhY2goKSB0aGVyZWZvcmUgd29ya3MgdGhlIHNhbWUgd2F5LCBidXQgYSBzZWNvbmQgbWV0aG9kXHJcbiAqIGAuZm9yRWFjaFBhaXIoKGtleSx2YWx1ZSk9PnsuLi59KWAgaXMgcHJvdmlkZWQgd2hpY2ggc2VuZHMgeW91IHRoZSBrZXlcclxuICogZmlyc3QgYW5kIHRoZSB2YWx1ZSBzZWNvbmQ7IHRoaXMgbWV0aG9kIGlzIHNsaWdodGx5IGZhc3RlciBiZWNhdXNlIGl0IGlzXHJcbiAqIHRoZSBcIm5hdGl2ZVwiIGZvci1lYWNoIG1ldGhvZCBmb3IgdGhpcyBjbGFzcy5cclxuICpcclxuICogT3V0IG9mIHRoZSBib3gsIEJUcmVlIHN1cHBvcnRzIGtleXMgdGhhdCBhcmUgbnVtYmVycywgc3RyaW5ncywgYXJyYXlzIG9mXHJcbiAqIG51bWJlcnMvc3RyaW5ncywgRGF0ZSwgYW5kIG9iamVjdHMgdGhhdCBoYXZlIGEgdmFsdWVPZigpIG1ldGhvZCByZXR1cm5pbmcgYVxyXG4gKiBudW1iZXIgb3Igc3RyaW5nLiBPdGhlciBkYXRhIHR5cGVzLCBzdWNoIGFzIGFycmF5cyBvZiBEYXRlIG9yIGN1c3RvbVxyXG4gKiBvYmplY3RzLCByZXF1aXJlIGEgY3VzdG9tIGNvbXBhcmF0b3IsIHdoaWNoIHlvdSBtdXN0IHBhc3MgYXMgdGhlIHNlY29uZFxyXG4gKiBhcmd1bWVudCB0byB0aGUgY29uc3RydWN0b3IgKHRoZSBmaXJzdCBhcmd1bWVudCBpcyBhbiBvcHRpb25hbCBsaXN0IG9mXHJcbiAqIGluaXRpYWwgaXRlbXMpLiBTeW1ib2xzIGNhbm5vdCBiZSB1c2VkIGFzIGtleXMgYmVjYXVzZSB0aGV5IGFyZSB1bm9yZGVyZWRcclxuICogKG9uZSBTeW1ib2wgaXMgbmV2ZXIgXCJncmVhdGVyXCIgb3IgXCJsZXNzXCIgdGhhbiBhbm90aGVyKS5cclxuICpcclxuICogQGV4YW1wbGVcclxuICogR2l2ZW4gYSB7bmFtZTogc3RyaW5nLCBhZ2U6IG51bWJlcn0gb2JqZWN0LCB5b3UgY2FuIGNyZWF0ZSBhIHRyZWUgc29ydGVkIGJ5XHJcbiAqIG5hbWUgYW5kIHRoZW4gYnkgYWdlIGxpa2UgdGhpczpcclxuICpcclxuICogICAgIHZhciB0cmVlID0gbmV3IEJUcmVlKHVuZGVmaW5lZCwgKGEsIGIpID0+IHtcclxuICogICAgICAgaWYgKGEubmFtZSA+IGIubmFtZSlcclxuICogICAgICAgICByZXR1cm4gMTsgLy8gUmV0dXJuIGEgbnVtYmVyID4wIHdoZW4gYSA+IGJcclxuICogICAgICAgZWxzZSBpZiAoYS5uYW1lIDwgYi5uYW1lKVxyXG4gKiAgICAgICAgIHJldHVybiAtMTsgLy8gUmV0dXJuIGEgbnVtYmVyIDwwIHdoZW4gYSA8IGJcclxuICogICAgICAgZWxzZSAvLyBuYW1lcyBhcmUgZXF1YWwgKG9yIGluY29tcGFyYWJsZSlcclxuICogICAgICAgICByZXR1cm4gYS5hZ2UgLSBiLmFnZTsgLy8gUmV0dXJuID4wIHdoZW4gYS5hZ2UgPiBiLmFnZVxyXG4gKiAgICAgfSk7XHJcbiAqXHJcbiAqICAgICB0cmVlLnNldCh7bmFtZTpcIkJpbGxcIiwgYWdlOjE3fSwgXCJoYXBweVwiKTtcclxuICogICAgIHRyZWUuc2V0KHtuYW1lOlwiRnJhblwiLCBhZ2U6NDB9LCBcImJ1c3kgJiBzdHJlc3NlZFwiKTtcclxuICogICAgIHRyZWUuc2V0KHtuYW1lOlwiQmlsbFwiLCBhZ2U6NTV9LCBcInJlY2VudGx5IGxhaWQgb2ZmXCIpO1xyXG4gKiAgICAgdHJlZS5mb3JFYWNoUGFpcigoaywgdikgPT4ge1xyXG4gKiAgICAgICBjb25zb2xlLmxvZyhgTmFtZTogJHtrLm5hbWV9IEFnZTogJHtrLmFnZX0gU3RhdHVzOiAke3Z9YCk7XHJcbiAqICAgICB9KTtcclxuICpcclxuICogQGRlc2NyaXB0aW9uXHJcbiAqIFRoZSBcInJhbmdlXCIgbWV0aG9kcyAoYGZvckVhY2gsIGZvclJhbmdlLCBlZGl0UmFuZ2VgKSB3aWxsIHJldHVybiB0aGUgbnVtYmVyXHJcbiAqIG9mIGVsZW1lbnRzIHRoYXQgd2VyZSBzY2FubmVkLiBJbiBhZGRpdGlvbiwgdGhlIGNhbGxiYWNrIGNhbiByZXR1cm4ge2JyZWFrOlJ9XHJcbiAqIHRvIHN0b3AgZWFybHkgYW5kIHJldHVybiBSIGZyb20gdGhlIG91dGVyIGZ1bmN0aW9uLlxyXG4gKlxyXG4gKiAtIFRPRE86IFRlc3QgcGVyZm9ybWFuY2Ugb2YgcHJlYWxsb2NhdGluZyB2YWx1ZXMgYXJyYXkgYXQgbWF4IHNpemVcclxuICogLSBUT0RPOiBBZGQgZmFzdCBpbml0aWFsaXphdGlvbiB3aGVuIGEgc29ydGVkIGFycmF5IGlzIHByb3ZpZGVkIHRvIGNvbnN0cnVjdG9yXHJcbiAqXHJcbiAqIEZvciBtb3JlIGRvY3VtZW50YXRpb24gc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9xd2VydGllL2J0cmVlLXR5cGVzY3JpcHRcclxuICpcclxuICogQXJlIHlvdSBhIEMjIGRldmVsb3Blcj8gWW91IG1pZ2h0IGxpa2UgdGhlIHNpbWlsYXIgZGF0YSBzdHJ1Y3R1cmVzIEkgbWFkZSBmb3IgQyM6XHJcbiAqIEJEaWN0aW9uYXJ5LCBCTGlzdCwgZXRjLiBTZWUgaHR0cDovL2NvcmUubG95Yy5uZXQvY29sbGVjdGlvbnMvXHJcbiAqXHJcbiAqIEBhdXRob3IgRGF2aWQgUGllcGdyYXNzXHJcbiAqL1xyXG52YXIgQlRyZWUgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XHJcbiAgICAvKipcclxuICAgICAqIEluaXRpYWxpemVzIGFuIGVtcHR5IEIrIHRyZWUuXHJcbiAgICAgKiBAcGFyYW0gY29tcGFyZSBDdXN0b20gZnVuY3Rpb24gdG8gY29tcGFyZSBwYWlycyBvZiBlbGVtZW50cyBpbiB0aGUgdHJlZS5cclxuICAgICAqICAgSWYgbm90IHNwZWNpZmllZCwgZGVmYXVsdENvbXBhcmF0b3Igd2lsbCBiZSB1c2VkIHdoaWNoIGlzIHZhbGlkIGFzIGxvbmcgYXMgSyBleHRlbmRzIERlZmF1bHRDb21wYXJhYmxlLlxyXG4gICAgICogQHBhcmFtIGVudHJpZXMgQSBzZXQgb2Yga2V5LXZhbHVlIHBhaXJzIHRvIGluaXRpYWxpemUgdGhlIHRyZWVcclxuICAgICAqIEBwYXJhbSBtYXhOb2RlU2l6ZSBCcmFuY2hpbmcgZmFjdG9yIChtYXhpbXVtIGl0ZW1zIG9yIGNoaWxkcmVuIHBlciBub2RlKVxyXG4gICAgICogICBNdXN0IGJlIGluIHJhbmdlIDQuLjI1Ni4gSWYgdW5kZWZpbmVkIG9yIDw0IHRoZW4gZGVmYXVsdCBpcyB1c2VkOyBpZiA+MjU2IHRoZW4gMjU2LlxyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiBCVHJlZShlbnRyaWVzLCBjb21wYXJlLCBtYXhOb2RlU2l6ZSkge1xyXG4gICAgICAgIHRoaXMuX3Jvb3QgPSBFbXB0eUxlYWY7XHJcbiAgICAgICAgdGhpcy5fc2l6ZSA9IDA7XHJcbiAgICAgICAgdGhpcy5fbWF4Tm9kZVNpemUgPSBtYXhOb2RlU2l6ZSA+PSA0ID8gTWF0aC5taW4obWF4Tm9kZVNpemUsIDI1NikgOiAzMjtcclxuICAgICAgICB0aGlzLl9jb21wYXJlID0gY29tcGFyZSB8fCBkZWZhdWx0Q29tcGFyYXRvcjtcclxuICAgICAgICBpZiAoZW50cmllcylcclxuICAgICAgICAgICAgdGhpcy5zZXRQYWlycyhlbnRyaWVzKTtcclxuICAgIH1cclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShCVHJlZS5wcm90b3R5cGUsIFwic2l6ZVwiLCB7XHJcbiAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuICAgICAgICAvLyBFUzYgTWFwPEssVj4gbWV0aG9kcyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG4gICAgICAgIC8qKiBHZXRzIHRoZSBudW1iZXIgb2Yga2V5LXZhbHVlIHBhaXJzIGluIHRoZSB0cmVlLiAqL1xyXG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5fc2l6ZTsgfSxcclxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcclxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcclxuICAgIH0pO1xyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEJUcmVlLnByb3RvdHlwZSwgXCJsZW5ndGhcIiwge1xyXG4gICAgICAgIC8qKiBHZXRzIHRoZSBudW1iZXIgb2Yga2V5LXZhbHVlIHBhaXJzIGluIHRoZSB0cmVlLiAqL1xyXG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5fc2l6ZTsgfSxcclxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcclxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcclxuICAgIH0pO1xyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEJUcmVlLnByb3RvdHlwZSwgXCJpc0VtcHR5XCIsIHtcclxuICAgICAgICAvKiogUmV0dXJucyB0cnVlIGlmZiB0aGUgdHJlZSBjb250YWlucyBubyBrZXktdmFsdWUgcGFpcnMuICovXHJcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLl9zaXplID09PSAwOyB9LFxyXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxyXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxyXG4gICAgfSk7XHJcbiAgICAvKiogUmVsZWFzZXMgdGhlIHRyZWUgc28gdGhhdCBpdHMgc2l6ZSBpcyAwLiAqL1xyXG4gICAgQlRyZWUucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHRoaXMuX3Jvb3QgPSBFbXB0eUxlYWY7XHJcbiAgICAgICAgdGhpcy5fc2l6ZSA9IDA7XHJcbiAgICB9O1xyXG4gICAgLyoqIFJ1bnMgYSBmdW5jdGlvbiBmb3IgZWFjaCBrZXktdmFsdWUgcGFpciwgaW4gb3JkZXIgZnJvbSBzbWFsbGVzdCB0b1xyXG4gICAgICogIGxhcmdlc3Qga2V5LiBGb3IgY29tcGF0aWJpbGl0eSB3aXRoIEVTNiBNYXAsIHRoZSBhcmd1bWVudCBvcmRlciB0b1xyXG4gICAgICogIHRoZSBjYWxsYmFjayBpcyBiYWNrd2FyZHM6IHZhbHVlIGZpcnN0LCB0aGVuIGtleS4gQ2FsbCBmb3JFYWNoUGFpclxyXG4gICAgICogIGluc3RlYWQgdG8gcmVjZWl2ZSB0aGUga2V5IGFzIHRoZSBmaXJzdCBhcmd1bWVudC5cclxuICAgICAqIEBwYXJhbSB0aGlzQXJnIElmIHByb3ZpZGVkLCB0aGlzIHBhcmFtZXRlciBpcyBhc3NpZ25lZCBhcyB0aGUgYHRoaXNgXHJcbiAgICAgKiAgICAgICAgdmFsdWUgZm9yIGVhY2ggY2FsbGJhY2suXHJcbiAgICAgKiBAcmV0dXJucyB0aGUgbnVtYmVyIG9mIHZhbHVlcyB0aGF0IHdlcmUgc2VudCB0byB0aGUgY2FsbGJhY2ssXHJcbiAgICAgKiAgICAgICAgb3IgdGhlIFIgdmFsdWUgaWYgdGhlIGNhbGxiYWNrIHJldHVybmVkIHticmVhazpSfS4gKi9cclxuICAgIEJUcmVlLnByb3RvdHlwZS5mb3JFYWNoID0gZnVuY3Rpb24gKGNhbGxiYWNrLCB0aGlzQXJnKSB7XHJcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcclxuICAgICAgICBpZiAodGhpc0FyZyAhPT0gdW5kZWZpbmVkKVxyXG4gICAgICAgICAgICBjYWxsYmFjayA9IGNhbGxiYWNrLmJpbmQodGhpc0FyZyk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9yRWFjaFBhaXIoZnVuY3Rpb24gKGssIHYpIHsgcmV0dXJuIGNhbGxiYWNrKHYsIGssIF90aGlzKTsgfSk7XHJcbiAgICB9O1xyXG4gICAgLyoqIFJ1bnMgYSBmdW5jdGlvbiBmb3IgZWFjaCBrZXktdmFsdWUgcGFpciwgaW4gb3JkZXIgZnJvbSBzbWFsbGVzdCB0b1xyXG4gICAgICogIGxhcmdlc3Qga2V5LiBUaGUgY2FsbGJhY2sgY2FuIHJldHVybiB7YnJlYWs6Un0gKHdoZXJlIFIgaXMgYW55IHZhbHVlXHJcbiAgICAgKiAgZXhjZXB0IHVuZGVmaW5lZCkgdG8gc3RvcCBpbW1lZGlhdGVseSBhbmQgcmV0dXJuIFIgZnJvbSBmb3JFYWNoUGFpci5cclxuICAgICAqIEBwYXJhbSBvbkZvdW5kIEEgZnVuY3Rpb24gdGhhdCBpcyBjYWxsZWQgZm9yIGVhY2gga2V5LXZhbHVlIHBhaXIuIFRoaXNcclxuICAgICAqICAgICAgICBmdW5jdGlvbiBjYW4gcmV0dXJuIHticmVhazpSfSB0byBzdG9wIGVhcmx5IHdpdGggcmVzdWx0IFIuXHJcbiAgICAgKiAgICAgICAgVGhlIHJlYXNvbiB0aGF0IHlvdSBtdXN0IHJldHVybiB7YnJlYWs6Un0gaW5zdGVhZCBvZiBzaW1wbHkgUlxyXG4gICAgICogICAgICAgIGl0c2VsZiBpcyBmb3IgY29uc2lzdGVuY3kgd2l0aCBlZGl0UmFuZ2UoKSwgd2hpY2ggYWxsb3dzXHJcbiAgICAgKiAgICAgICAgbXVsdGlwbGUgYWN0aW9ucywgbm90IGp1c3QgYnJlYWtpbmcuXHJcbiAgICAgKiBAcGFyYW0gaW5pdGlhbENvdW50ZXIgVGhpcyBpcyB0aGUgdmFsdWUgb2YgdGhlIHRoaXJkIGFyZ3VtZW50IG9mXHJcbiAgICAgKiAgICAgICAgYG9uRm91bmRgIHRoZSBmaXJzdCB0aW1lIGl0IGlzIGNhbGxlZC4gVGhlIGNvdW50ZXIgaW5jcmVhc2VzXHJcbiAgICAgKiAgICAgICAgYnkgb25lIGVhY2ggdGltZSBgb25Gb3VuZGAgaXMgY2FsbGVkLiBEZWZhdWx0IHZhbHVlOiAwXHJcbiAgICAgKiBAcmV0dXJucyB0aGUgbnVtYmVyIG9mIHBhaXJzIHNlbnQgdG8gdGhlIGNhbGxiYWNrIChwbHVzIGluaXRpYWxDb3VudGVyLFxyXG4gICAgICogICAgICAgIGlmIHlvdSBwcm92aWRlZCBvbmUpLiBJZiB0aGUgY2FsbGJhY2sgcmV0dXJuZWQge2JyZWFrOlJ9IHRoZW5cclxuICAgICAqICAgICAgICB0aGUgUiB2YWx1ZSBpcyByZXR1cm5lZCBpbnN0ZWFkLiAqL1xyXG4gICAgQlRyZWUucHJvdG90eXBlLmZvckVhY2hQYWlyID0gZnVuY3Rpb24gKGNhbGxiYWNrLCBpbml0aWFsQ291bnRlcikge1xyXG4gICAgICAgIHZhciBsb3cgPSB0aGlzLm1pbktleSgpLCBoaWdoID0gdGhpcy5tYXhLZXkoKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5mb3JSYW5nZShsb3csIGhpZ2gsIHRydWUsIGNhbGxiYWNrLCBpbml0aWFsQ291bnRlcik7XHJcbiAgICB9O1xyXG4gICAgLyoqXHJcbiAgICAgKiBGaW5kcyBhIHBhaXIgaW4gdGhlIHRyZWUgYW5kIHJldHVybnMgdGhlIGFzc29jaWF0ZWQgdmFsdWUuXHJcbiAgICAgKiBAcGFyYW0gZGVmYXVsdFZhbHVlIGEgdmFsdWUgdG8gcmV0dXJuIGlmIHRoZSBrZXkgd2FzIG5vdCBmb3VuZC5cclxuICAgICAqIEByZXR1cm5zIHRoZSB2YWx1ZSwgb3IgZGVmYXVsdFZhbHVlIGlmIHRoZSBrZXkgd2FzIG5vdCBmb3VuZC5cclxuICAgICAqIEBkZXNjcmlwdGlvbiBDb21wdXRhdGlvbmFsIGNvbXBsZXhpdHk6IE8obG9nIHNpemUpXHJcbiAgICAgKi9cclxuICAgIEJUcmVlLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAoa2V5LCBkZWZhdWx0VmFsdWUpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fcm9vdC5nZXQoa2V5LCBkZWZhdWx0VmFsdWUsIHRoaXMpO1xyXG4gICAgfTtcclxuICAgIC8qKlxyXG4gICAgICogQWRkcyBvciBvdmVyd3JpdGVzIGEga2V5LXZhbHVlIHBhaXIgaW4gdGhlIEIrIHRyZWUuXHJcbiAgICAgKiBAcGFyYW0ga2V5IHRoZSBrZXkgaXMgdXNlZCB0byBkZXRlcm1pbmUgdGhlIHNvcnQgb3JkZXIgb2ZcclxuICAgICAqICAgICAgICBkYXRhIGluIHRoZSB0cmVlLlxyXG4gICAgICogQHBhcmFtIHZhbHVlIGRhdGEgdG8gYXNzb2NpYXRlIHdpdGggdGhlIGtleSAob3B0aW9uYWwpXHJcbiAgICAgKiBAcGFyYW0gb3ZlcndyaXRlIFdoZXRoZXIgdG8gb3ZlcndyaXRlIGFuIGV4aXN0aW5nIGtleS12YWx1ZSBwYWlyXHJcbiAgICAgKiAgICAgICAgKGRlZmF1bHQ6IHRydWUpLiBJZiB0aGlzIGlzIGZhbHNlIGFuZCB0aGVyZSBpcyBhbiBleGlzdGluZ1xyXG4gICAgICogICAgICAgIGtleS12YWx1ZSBwYWlyIHRoZW4gdGhpcyBtZXRob2QgaGFzIG5vIGVmZmVjdC5cclxuICAgICAqIEByZXR1cm5zIHRydWUgaWYgYSBuZXcga2V5LXZhbHVlIHBhaXIgd2FzIGFkZGVkLlxyXG4gICAgICogQGRlc2NyaXB0aW9uIENvbXB1dGF0aW9uYWwgY29tcGxleGl0eTogTyhsb2cgc2l6ZSlcclxuICAgICAqIE5vdGU6IHdoZW4gb3ZlcndyaXRpbmcgYSBwcmV2aW91cyBlbnRyeSwgdGhlIGtleSBpcyB1cGRhdGVkXHJcbiAgICAgKiBhcyB3ZWxsIGFzIHRoZSB2YWx1ZS4gVGhpcyBoYXMgbm8gZWZmZWN0IHVubGVzcyB0aGUgbmV3IGtleVxyXG4gICAgICogaGFzIGRhdGEgdGhhdCBkb2VzIG5vdCBhZmZlY3QgaXRzIHNvcnQgb3JkZXIuXHJcbiAgICAgKi9cclxuICAgIEJUcmVlLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbiAoa2V5LCB2YWx1ZSwgb3ZlcndyaXRlKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX3Jvb3QuaXNTaGFyZWQpXHJcbiAgICAgICAgICAgIHRoaXMuX3Jvb3QgPSB0aGlzLl9yb290LmNsb25lKCk7XHJcbiAgICAgICAgdmFyIHJlc3VsdCA9IHRoaXMuX3Jvb3Quc2V0KGtleSwgdmFsdWUsIG92ZXJ3cml0ZSwgdGhpcyk7XHJcbiAgICAgICAgaWYgKHJlc3VsdCA9PT0gdHJ1ZSB8fCByZXN1bHQgPT09IGZhbHNlKVxyXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgIC8vIFJvb3Qgbm9kZSBoYXMgc3BsaXQsIHNvIGNyZWF0ZSBhIG5ldyByb290IG5vZGUuXHJcbiAgICAgICAgdGhpcy5fcm9vdCA9IG5ldyBCTm9kZUludGVybmFsKFt0aGlzLl9yb290LCByZXN1bHRdKTtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH07XHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUga2V5IGV4aXN0cyBpbiB0aGUgQisgdHJlZSwgZmFsc2UgaWYgbm90LlxyXG4gICAgICogVXNlIGdldCgpIGZvciBiZXN0IHBlcmZvcm1hbmNlOyB1c2UgaGFzKCkgaWYgeW91IG5lZWQgdG9cclxuICAgICAqIGRpc3Rpbmd1aXNoIGJldHdlZW4gXCJ1bmRlZmluZWQgdmFsdWVcIiBhbmQgXCJrZXkgbm90IHByZXNlbnRcIi5cclxuICAgICAqIEBwYXJhbSBrZXkgS2V5IHRvIGRldGVjdFxyXG4gICAgICogQGRlc2NyaXB0aW9uIENvbXB1dGF0aW9uYWwgY29tcGxleGl0eTogTyhsb2cgc2l6ZSlcclxuICAgICAqL1xyXG4gICAgQlRyZWUucHJvdG90eXBlLmhhcyA9IGZ1bmN0aW9uIChrZXkpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5mb3JSYW5nZShrZXksIGtleSwgdHJ1ZSwgdW5kZWZpbmVkKSAhPT0gMDtcclxuICAgIH07XHJcbiAgICAvKipcclxuICAgICAqIFJlbW92ZXMgYSBzaW5nbGUga2V5LXZhbHVlIHBhaXIgZnJvbSB0aGUgQisgdHJlZS5cclxuICAgICAqIEBwYXJhbSBrZXkgS2V5IHRvIGZpbmRcclxuICAgICAqIEByZXR1cm5zIHRydWUgaWYgYSBwYWlyIHdhcyBmb3VuZCBhbmQgcmVtb3ZlZCwgZmFsc2Ugb3RoZXJ3aXNlLlxyXG4gICAgICogQGRlc2NyaXB0aW9uIENvbXB1dGF0aW9uYWwgY29tcGxleGl0eTogTyhsb2cgc2l6ZSlcclxuICAgICAqL1xyXG4gICAgQlRyZWUucHJvdG90eXBlLmRlbGV0ZSA9IGZ1bmN0aW9uIChrZXkpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5lZGl0UmFuZ2Uoa2V5LCBrZXksIHRydWUsIERlbGV0ZVJhbmdlKSAhPT0gMDtcclxuICAgIH07XHJcbiAgICBCVHJlZS5wcm90b3R5cGUud2l0aCA9IGZ1bmN0aW9uIChrZXksIHZhbHVlLCBvdmVyd3JpdGUpIHtcclxuICAgICAgICB2YXIgbnUgPSB0aGlzLmNsb25lKCk7XHJcbiAgICAgICAgcmV0dXJuIG51LnNldChrZXksIHZhbHVlLCBvdmVyd3JpdGUpIHx8IG92ZXJ3cml0ZSA/IG51IDogdGhpcztcclxuICAgIH07XHJcbiAgICAvKiogUmV0dXJucyBhIGNvcHkgb2YgdGhlIHRyZWUgd2l0aCB0aGUgc3BlY2lmaWVkIGtleS12YWx1ZSBwYWlycyBzZXQuICovXHJcbiAgICBCVHJlZS5wcm90b3R5cGUud2l0aFBhaXJzID0gZnVuY3Rpb24gKHBhaXJzLCBvdmVyd3JpdGUpIHtcclxuICAgICAgICB2YXIgbnUgPSB0aGlzLmNsb25lKCk7XHJcbiAgICAgICAgcmV0dXJuIG51LnNldFBhaXJzKHBhaXJzLCBvdmVyd3JpdGUpICE9PSAwIHx8IG92ZXJ3cml0ZSA/IG51IDogdGhpcztcclxuICAgIH07XHJcbiAgICAvKiogUmV0dXJucyBhIGNvcHkgb2YgdGhlIHRyZWUgd2l0aCB0aGUgc3BlY2lmaWVkIGtleXMgcHJlc2VudC5cclxuICAgICAqICBAcGFyYW0ga2V5cyBUaGUga2V5cyB0byBhZGQuIElmIGEga2V5IGlzIGFscmVhZHkgcHJlc2VudCBpbiB0aGUgdHJlZSxcclxuICAgICAqICAgICAgICAgbmVpdGhlciB0aGUgZXhpc3Rpbmcga2V5IG5vciB0aGUgZXhpc3RpbmcgdmFsdWUgaXMgbW9kaWZpZWQuXHJcbiAgICAgKiAgQHBhcmFtIHJldHVyblRoaXNJZlVuY2hhbmdlZCBpZiB0cnVlLCByZXR1cm5zIHRoaXMgaWYgYWxsIGtleXMgYWxyZWFkeVxyXG4gICAgICogIGV4aXN0ZWQuIFBlcmZvcm1hbmNlIG5vdGU6IGR1ZSB0byB0aGUgYXJjaGl0ZWN0dXJlIG9mIHRoaXMgY2xhc3MsIGFsbFxyXG4gICAgICogIG5vZGUocykgbGVhZGluZyB0byBleGlzdGluZyBrZXlzIGFyZSBjbG9uZWQgZXZlbiBpZiB0aGUgY29sbGVjdGlvbiBpc1xyXG4gICAgICogIHVsdGltYXRlbHkgdW5jaGFuZ2VkLlxyXG4gICAgKi9cclxuICAgIEJUcmVlLnByb3RvdHlwZS53aXRoS2V5cyA9IGZ1bmN0aW9uIChrZXlzLCByZXR1cm5UaGlzSWZVbmNoYW5nZWQpIHtcclxuICAgICAgICB2YXIgbnUgPSB0aGlzLmNsb25lKCksIGNoYW5nZWQgPSBmYWxzZTtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspXHJcbiAgICAgICAgICAgIGNoYW5nZWQgPSBudS5zZXQoa2V5c1tpXSwgdW5kZWZpbmVkLCBmYWxzZSkgfHwgY2hhbmdlZDtcclxuICAgICAgICByZXR1cm4gcmV0dXJuVGhpc0lmVW5jaGFuZ2VkICYmICFjaGFuZ2VkID8gdGhpcyA6IG51O1xyXG4gICAgfTtcclxuICAgIC8qKiBSZXR1cm5zIGEgY29weSBvZiB0aGUgdHJlZSB3aXRoIHRoZSBzcGVjaWZpZWQga2V5IHJlbW92ZWQuXHJcbiAgICAgKiBAcGFyYW0gcmV0dXJuVGhpc0lmVW5jaGFuZ2VkIGlmIHRydWUsIHJldHVybnMgdGhpcyBpZiB0aGUga2V5IGRpZG4ndCBleGlzdC5cclxuICAgICAqICBQZXJmb3JtYW5jZSBub3RlOiBkdWUgdG8gdGhlIGFyY2hpdGVjdHVyZSBvZiB0aGlzIGNsYXNzLCBub2RlKHMpIGxlYWRpbmdcclxuICAgICAqICB0byB3aGVyZSB0aGUga2V5IHdvdWxkIGhhdmUgYmVlbiBzdG9yZWQgYXJlIGNsb25lZCBldmVuIHdoZW4gdGhlIGtleVxyXG4gICAgICogIHR1cm5zIG91dCBub3QgdG8gZXhpc3QgYW5kIHRoZSBjb2xsZWN0aW9uIGlzIHVuY2hhbmdlZC5cclxuICAgICAqL1xyXG4gICAgQlRyZWUucHJvdG90eXBlLndpdGhvdXQgPSBmdW5jdGlvbiAoa2V5LCByZXR1cm5UaGlzSWZVbmNoYW5nZWQpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy53aXRob3V0UmFuZ2Uoa2V5LCBrZXksIHRydWUsIHJldHVyblRoaXNJZlVuY2hhbmdlZCk7XHJcbiAgICB9O1xyXG4gICAgLyoqIFJldHVybnMgYSBjb3B5IG9mIHRoZSB0cmVlIHdpdGggdGhlIHNwZWNpZmllZCBrZXlzIHJlbW92ZWQuXHJcbiAgICAgKiBAcGFyYW0gcmV0dXJuVGhpc0lmVW5jaGFuZ2VkIGlmIHRydWUsIHJldHVybnMgdGhpcyBpZiBub25lIG9mIHRoZSBrZXlzXHJcbiAgICAgKiAgZXhpc3RlZC4gUGVyZm9ybWFuY2Ugbm90ZTogZHVlIHRvIHRoZSBhcmNoaXRlY3R1cmUgb2YgdGhpcyBjbGFzcyxcclxuICAgICAqICBub2RlKHMpIGxlYWRpbmcgdG8gd2hlcmUgdGhlIGtleSB3b3VsZCBoYXZlIGJlZW4gc3RvcmVkIGFyZSBjbG9uZWRcclxuICAgICAqICBldmVuIHdoZW4gdGhlIGtleSB0dXJucyBvdXQgbm90IHRvIGV4aXN0LlxyXG4gICAgICovXHJcbiAgICBCVHJlZS5wcm90b3R5cGUud2l0aG91dEtleXMgPSBmdW5jdGlvbiAoa2V5cywgcmV0dXJuVGhpc0lmVW5jaGFuZ2VkKSB7XHJcbiAgICAgICAgdmFyIG51ID0gdGhpcy5jbG9uZSgpO1xyXG4gICAgICAgIHJldHVybiBudS5kZWxldGVLZXlzKGtleXMpIHx8ICFyZXR1cm5UaGlzSWZVbmNoYW5nZWQgPyBudSA6IHRoaXM7XHJcbiAgICB9O1xyXG4gICAgLyoqIFJldHVybnMgYSBjb3B5IG9mIHRoZSB0cmVlIHdpdGggdGhlIHNwZWNpZmllZCByYW5nZSBvZiBrZXlzIHJlbW92ZWQuICovXHJcbiAgICBCVHJlZS5wcm90b3R5cGUud2l0aG91dFJhbmdlID0gZnVuY3Rpb24gKGxvdywgaGlnaCwgaW5jbHVkZUhpZ2gsIHJldHVyblRoaXNJZlVuY2hhbmdlZCkge1xyXG4gICAgICAgIHZhciBudSA9IHRoaXMuY2xvbmUoKTtcclxuICAgICAgICBpZiAobnUuZGVsZXRlUmFuZ2UobG93LCBoaWdoLCBpbmNsdWRlSGlnaCkgPT09IDAgJiYgcmV0dXJuVGhpc0lmVW5jaGFuZ2VkKVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcztcclxuICAgICAgICByZXR1cm4gbnU7XHJcbiAgICB9O1xyXG4gICAgLyoqIFJldHVybnMgYSBjb3B5IG9mIHRoZSB0cmVlIHdpdGggcGFpcnMgcmVtb3ZlZCB3aGVuZXZlciB0aGUgY2FsbGJhY2tcclxuICAgICAqICBmdW5jdGlvbiByZXR1cm5zIGZhbHNlLiBgd2hlcmUoKWAgaXMgYSBzeW5vbnltIGZvciB0aGlzIG1ldGhvZC4gKi9cclxuICAgIEJUcmVlLnByb3RvdHlwZS5maWx0ZXIgPSBmdW5jdGlvbiAoY2FsbGJhY2ssIHJldHVyblRoaXNJZlVuY2hhbmdlZCkge1xyXG4gICAgICAgIHZhciBudSA9IHRoaXMuZ3JlZWR5Q2xvbmUoKTtcclxuICAgICAgICB2YXIgZGVsO1xyXG4gICAgICAgIG51LmVkaXRBbGwoZnVuY3Rpb24gKGssIHYsIGkpIHtcclxuICAgICAgICAgICAgaWYgKCFjYWxsYmFjayhrLCB2LCBpKSlcclxuICAgICAgICAgICAgICAgIHJldHVybiBkZWwgPSBEZWxldGU7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKCFkZWwgJiYgcmV0dXJuVGhpc0lmVW5jaGFuZ2VkKVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcztcclxuICAgICAgICByZXR1cm4gbnU7XHJcbiAgICB9O1xyXG4gICAgLyoqIFJldHVybnMgYSBjb3B5IG9mIHRoZSB0cmVlIHdpdGggYWxsIHZhbHVlcyBhbHRlcmVkIGJ5IGEgY2FsbGJhY2sgZnVuY3Rpb24uICovXHJcbiAgICBCVHJlZS5wcm90b3R5cGUubWFwVmFsdWVzID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7XHJcbiAgICAgICAgdmFyIHRtcCA9IHt9O1xyXG4gICAgICAgIHZhciBudSA9IHRoaXMuZ3JlZWR5Q2xvbmUoKTtcclxuICAgICAgICBudS5lZGl0QWxsKGZ1bmN0aW9uIChrLCB2LCBpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0bXAudmFsdWUgPSBjYWxsYmFjayh2LCBrLCBpKSwgdG1wO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBudTtcclxuICAgIH07XHJcbiAgICBCVHJlZS5wcm90b3R5cGUucmVkdWNlID0gZnVuY3Rpb24gKGNhbGxiYWNrLCBpbml0aWFsVmFsdWUpIHtcclxuICAgICAgICB2YXIgaSA9IDAsIHAgPSBpbml0aWFsVmFsdWU7XHJcbiAgICAgICAgdmFyIGl0ID0gdGhpcy5lbnRyaWVzKHRoaXMubWluS2V5KCksIFJldXNlZEFycmF5KSwgbmV4dDtcclxuICAgICAgICB3aGlsZSAoIShuZXh0ID0gaXQubmV4dCgpKS5kb25lKVxyXG4gICAgICAgICAgICBwID0gY2FsbGJhY2socCwgbmV4dC52YWx1ZSwgaSsrLCB0aGlzKTtcclxuICAgICAgICByZXR1cm4gcDtcclxuICAgIH07XHJcbiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG4gICAgLy8gSXRlcmF0b3IgbWV0aG9kcyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuICAgIC8qKiBSZXR1cm5zIGFuIGl0ZXJhdG9yIHRoYXQgcHJvdmlkZXMgaXRlbXMgaW4gb3JkZXIgKGFzY2VuZGluZyBvcmRlciBpZlxyXG4gICAgICogIHRoZSBjb2xsZWN0aW9uJ3MgY29tcGFyYXRvciB1c2VzIGFzY2VuZGluZyBvcmRlciwgYXMgaXMgdGhlIGRlZmF1bHQuKVxyXG4gICAgICogIEBwYXJhbSBsb3dlc3RLZXkgRmlyc3Qga2V5IHRvIGJlIGl0ZXJhdGVkLCBvciB1bmRlZmluZWQgdG8gc3RhcnQgYXRcclxuICAgICAqICAgICAgICAgbWluS2V5KCkuIElmIHRoZSBzcGVjaWZpZWQga2V5IGRvZXNuJ3QgZXhpc3QgdGhlbiBpdGVyYXRpb25cclxuICAgICAqICAgICAgICAgc3RhcnRzIGF0IHRoZSBuZXh0IGhpZ2hlciBrZXkgKGFjY29yZGluZyB0byB0aGUgY29tcGFyYXRvcikuXHJcbiAgICAgKiAgQHBhcmFtIHJldXNlZEFycmF5IE9wdGlvbmFsIGFycmF5IHVzZWQgcmVwZWF0ZWRseSB0byBzdG9yZSBrZXktdmFsdWVcclxuICAgICAqICAgICAgICAgcGFpcnMsIHRvIGF2b2lkIGNyZWF0aW5nIGEgbmV3IGFycmF5IG9uIGV2ZXJ5IGl0ZXJhdGlvbi5cclxuICAgICAqL1xyXG4gICAgQlRyZWUucHJvdG90eXBlLmVudHJpZXMgPSBmdW5jdGlvbiAobG93ZXN0S2V5LCByZXVzZWRBcnJheSkge1xyXG4gICAgICAgIHZhciBpbmZvID0gdGhpcy5maW5kUGF0aChsb3dlc3RLZXkpO1xyXG4gICAgICAgIGlmIChpbmZvID09PSB1bmRlZmluZWQpXHJcbiAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcigpO1xyXG4gICAgICAgIHZhciBub2RlcXVldWUgPSBpbmZvLm5vZGVxdWV1ZSwgbm9kZWluZGV4ID0gaW5mby5ub2RlaW5kZXgsIGxlYWYgPSBpbmZvLmxlYWY7XHJcbiAgICAgICAgdmFyIHN0YXRlID0gcmV1c2VkQXJyYXkgIT09IHVuZGVmaW5lZCA/IDEgOiAwO1xyXG4gICAgICAgIHZhciBpID0gKGxvd2VzdEtleSA9PT0gdW5kZWZpbmVkID8gLTEgOiBsZWFmLmluZGV4T2YobG93ZXN0S2V5LCAwLCB0aGlzLl9jb21wYXJlKSAtIDEpO1xyXG4gICAgICAgIHJldHVybiBpdGVyYXRvcihmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGp1bXA6IGZvciAoOzspIHtcclxuICAgICAgICAgICAgICAgIHN3aXRjaCAoc3RhdGUpIHtcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgrK2kgPCBsZWFmLmtleXMubGVuZ3RoKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgZG9uZTogZmFsc2UsIHZhbHVlOiBbbGVhZi5rZXlzW2ldLCBsZWFmLnZhbHVlc1tpXV0gfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSAyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgrK2kgPCBsZWFmLmtleXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXVzZWRBcnJheVswXSA9IGxlYWYua2V5c1tpXSwgcmV1c2VkQXJyYXlbMV0gPSBsZWFmLnZhbHVlc1tpXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGRvbmU6IGZhbHNlLCB2YWx1ZTogcmV1c2VkQXJyYXkgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IDI7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBBZHZhbmNlIHRvIHRoZSBuZXh0IGxlYWYgbm9kZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBsZXZlbCA9IC0xOzspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgrK2xldmVsID49IG5vZGVxdWV1ZS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IDM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUganVtcDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgrK25vZGVpbmRleFtsZXZlbF0gPCBub2RlcXVldWVbbGV2ZWxdLmxlbmd0aClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgbGV2ZWwgPiAwOyBsZXZlbC0tKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlcXVldWVbbGV2ZWwgLSAxXSA9IG5vZGVxdWV1ZVtsZXZlbF1bbm9kZWluZGV4W2xldmVsXV0uY2hpbGRyZW47XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlaW5kZXhbbGV2ZWwgLSAxXSA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgbGVhZiA9IG5vZGVxdWV1ZVswXVtub2RlaW5kZXhbMF1dO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpID0gLTE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gcmV1c2VkQXJyYXkgIT09IHVuZGVmaW5lZCA/IDEgOiAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGRvbmU6IHRydWUsIHZhbHVlOiB1bmRlZmluZWQgfTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfTtcclxuICAgIC8qKiBSZXR1cm5zIGFuIGl0ZXJhdG9yIHRoYXQgcHJvdmlkZXMgaXRlbXMgaW4gcmV2ZXJzZWQgb3JkZXIuXHJcbiAgICAgKiAgQHBhcmFtIGhpZ2hlc3RLZXkgS2V5IGF0IHdoaWNoIHRvIHN0YXJ0IGl0ZXJhdGluZywgb3IgdW5kZWZpbmVkIHRvXHJcbiAgICAgKiAgICAgICAgIHN0YXJ0IGF0IG1heEtleSgpLiBJZiB0aGUgc3BlY2lmaWVkIGtleSBkb2Vzbid0IGV4aXN0IHRoZW4gaXRlcmF0aW9uXHJcbiAgICAgKiAgICAgICAgIHN0YXJ0cyBhdCB0aGUgbmV4dCBsb3dlciBrZXkgKGFjY29yZGluZyB0byB0aGUgY29tcGFyYXRvcikuXHJcbiAgICAgKiAgQHBhcmFtIHJldXNlZEFycmF5IE9wdGlvbmFsIGFycmF5IHVzZWQgcmVwZWF0ZWRseSB0byBzdG9yZSBrZXktdmFsdWVcclxuICAgICAqICAgICAgICAgcGFpcnMsIHRvIGF2b2lkIGNyZWF0aW5nIGEgbmV3IGFycmF5IG9uIGV2ZXJ5IGl0ZXJhdGlvbi5cclxuICAgICAqICBAcGFyYW0gc2tpcEhpZ2hlc3QgSWZmIHRoaXMgZmxhZyBpcyB0cnVlIGFuZCB0aGUgaGlnaGVzdEtleSBleGlzdHMgaW4gdGhlXHJcbiAgICAgKiAgICAgICAgIGNvbGxlY3Rpb24sIHRoZSBwYWlyIG1hdGNoaW5nIGhpZ2hlc3RLZXkgaXMgc2tpcHBlZCwgbm90IGl0ZXJhdGVkLlxyXG4gICAgICovXHJcbiAgICBCVHJlZS5wcm90b3R5cGUuZW50cmllc1JldmVyc2VkID0gZnVuY3Rpb24gKGhpZ2hlc3RLZXksIHJldXNlZEFycmF5LCBza2lwSGlnaGVzdCkge1xyXG4gICAgICAgIGlmIChoaWdoZXN0S2V5ID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgaGlnaGVzdEtleSA9IHRoaXMubWF4S2V5KCk7XHJcbiAgICAgICAgICAgIHNraXBIaWdoZXN0ID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICBpZiAoaGlnaGVzdEtleSA9PT0gdW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yKCk7IC8vIGNvbGxlY3Rpb24gaXMgZW1wdHlcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIF9hID0gdGhpcy5maW5kUGF0aChoaWdoZXN0S2V5KSB8fCB0aGlzLmZpbmRQYXRoKHRoaXMubWF4S2V5KCkpLCBub2RlcXVldWUgPSBfYS5ub2RlcXVldWUsIG5vZGVpbmRleCA9IF9hLm5vZGVpbmRleCwgbGVhZiA9IF9hLmxlYWY7XHJcbiAgICAgICAgY2hlY2soIW5vZGVxdWV1ZVswXSB8fCBsZWFmID09PSBub2RlcXVldWVbMF1bbm9kZWluZGV4WzBdXSwgXCJ3YXQhXCIpO1xyXG4gICAgICAgIHZhciBpID0gbGVhZi5pbmRleE9mKGhpZ2hlc3RLZXksIDAsIHRoaXMuX2NvbXBhcmUpO1xyXG4gICAgICAgIGlmICghc2tpcEhpZ2hlc3QgJiYgaSA8IGxlYWYua2V5cy5sZW5ndGggJiYgdGhpcy5fY29tcGFyZShsZWFmLmtleXNbaV0sIGhpZ2hlc3RLZXkpIDw9IDApXHJcbiAgICAgICAgICAgIGkrKztcclxuICAgICAgICB2YXIgc3RhdGUgPSByZXVzZWRBcnJheSAhPT0gdW5kZWZpbmVkID8gMSA6IDA7XHJcbiAgICAgICAgcmV0dXJuIGl0ZXJhdG9yKGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAganVtcDogZm9yICg7Oykge1xyXG4gICAgICAgICAgICAgICAgc3dpdGNoIChzdGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKC0taSA+PSAwKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgZG9uZTogZmFsc2UsIHZhbHVlOiBbbGVhZi5rZXlzW2ldLCBsZWFmLnZhbHVlc1tpXV0gfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSAyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgtLWkgPj0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV1c2VkQXJyYXlbMF0gPSBsZWFmLmtleXNbaV0sIHJldXNlZEFycmF5WzFdID0gbGVhZi52YWx1ZXNbaV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBkb25lOiBmYWxzZSwgdmFsdWU6IHJldXNlZEFycmF5IH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSAyO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQWR2YW5jZSB0byB0aGUgbmV4dCBsZWFmIG5vZGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbGV2ZWwgPSAtMTs7KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKytsZXZlbCA+PSBub2RlcXVldWUubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSAzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlIGp1bXA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoLS1ub2RlaW5kZXhbbGV2ZWxdID49IDApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IGxldmVsID4gMDsgbGV2ZWwtLSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZXF1ZXVlW2xldmVsIC0gMV0gPSBub2RlcXVldWVbbGV2ZWxdW25vZGVpbmRleFtsZXZlbF1dLmNoaWxkcmVuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZWluZGV4W2xldmVsIC0gMV0gPSBub2RlcXVldWVbbGV2ZWwgLSAxXS5sZW5ndGggLSAxO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxlYWYgPSBub2RlcXVldWVbMF1bbm9kZWluZGV4WzBdXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGxlYWYua2V5cy5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gcmV1c2VkQXJyYXkgIT09IHVuZGVmaW5lZCA/IDEgOiAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGRvbmU6IHRydWUsIHZhbHVlOiB1bmRlZmluZWQgfTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfTtcclxuICAgIC8qIFVzZWQgYnkgZW50cmllcygpIGFuZCBlbnRyaWVzUmV2ZXJzZWQoKSB0byBwcmVwYXJlIHRvIHN0YXJ0IGl0ZXJhdGluZy5cclxuICAgICAqIEl0IGRldmVsb3BzIGEgXCJub2RlIHF1ZXVlXCIgZm9yIGVhY2ggbm9uLWxlYWYgbGV2ZWwgb2YgdGhlIHRyZWUuXHJcbiAgICAgKiBMZXZlbHMgYXJlIG51bWJlcmVkIFwiYm90dG9tLXVwXCIgc28gdGhhdCBsZXZlbCAwIGlzIGEgbGlzdCBvZiBsZWFmXHJcbiAgICAgKiBub2RlcyBmcm9tIGEgbG93LWxldmVsIG5vbi1sZWFmIG5vZGUuIFRoZSBxdWV1ZSBhdCBhIGdpdmVuIGxldmVsIExcclxuICAgICAqIGNvbnNpc3RzIG9mIG5vZGVxdWV1ZVtMXSB3aGljaCBpcyB0aGUgY2hpbGRyZW4gb2YgYSBCTm9kZUludGVybmFsLFxyXG4gICAgICogYW5kIG5vZGVpbmRleFtMXSwgdGhlIGN1cnJlbnQgaW5kZXggd2l0aGluIHRoYXQgY2hpbGQgbGlzdCwgc3VjaFxyXG4gICAgICogc3VjaCB0aGF0IG5vZGVxdWV1ZVtMLTFdID09PSBub2RlcXVldWVbTF1bbm9kZWluZGV4W0xdXS5jaGlsZHJlbi5cclxuICAgICAqIChIb3dldmVyIGluc2lkZSB0aGlzIGZ1bmN0aW9uIHRoZSBvcmRlciBpcyByZXZlcnNlZC4pXHJcbiAgICAgKi9cclxuICAgIEJUcmVlLnByb3RvdHlwZS5maW5kUGF0aCA9IGZ1bmN0aW9uIChrZXkpIHtcclxuICAgICAgICB2YXIgbmV4dG5vZGUgPSB0aGlzLl9yb290O1xyXG4gICAgICAgIHZhciBub2RlcXVldWUsIG5vZGVpbmRleDtcclxuICAgICAgICBpZiAobmV4dG5vZGUuaXNMZWFmKSB7XHJcbiAgICAgICAgICAgIG5vZGVxdWV1ZSA9IEVtcHR5QXJyYXksIG5vZGVpbmRleCA9IEVtcHR5QXJyYXk7IC8vIGF2b2lkIGFsbG9jYXRpb25zXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBub2RlcXVldWUgPSBbXSwgbm9kZWluZGV4ID0gW107XHJcbiAgICAgICAgICAgIGZvciAodmFyIGQgPSAwOyAhbmV4dG5vZGUuaXNMZWFmOyBkKyspIHtcclxuICAgICAgICAgICAgICAgIG5vZGVxdWV1ZVtkXSA9IG5leHRub2RlLmNoaWxkcmVuO1xyXG4gICAgICAgICAgICAgICAgbm9kZWluZGV4W2RdID0ga2V5ID09PSB1bmRlZmluZWQgPyAwIDogbmV4dG5vZGUuaW5kZXhPZihrZXksIDAsIHRoaXMuX2NvbXBhcmUpO1xyXG4gICAgICAgICAgICAgICAgaWYgKG5vZGVpbmRleFtkXSA+PSBub2RlcXVldWVbZF0ubGVuZ3RoKVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjsgLy8gZmlyc3Qga2V5ID4gbWF4S2V5KClcclxuICAgICAgICAgICAgICAgIG5leHRub2RlID0gbm9kZXF1ZXVlW2RdW25vZGVpbmRleFtkXV07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbm9kZXF1ZXVlLnJldmVyc2UoKTtcclxuICAgICAgICAgICAgbm9kZWluZGV4LnJldmVyc2UoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHsgbm9kZXF1ZXVlOiBub2RlcXVldWUsIG5vZGVpbmRleDogbm9kZWluZGV4LCBsZWFmOiBuZXh0bm9kZSB9O1xyXG4gICAgfTtcclxuICAgIC8qKlxyXG4gICAgICogQ29tcHV0ZXMgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gYHRoaXNgIGFuZCBgb3RoZXJgLlxyXG4gICAgICogRm9yIGVmZmljaWVuY3ksIHRoZSBkaWZmIGlzIHJldHVybmVkIHZpYSBpbnZvY2F0aW9ucyBvZiBzdXBwbGllZCBoYW5kbGVycy5cclxuICAgICAqIFRoZSBjb21wdXRhdGlvbiBpcyBvcHRpbWl6ZWQgZm9yIHRoZSBjYXNlIGluIHdoaWNoIHRoZSB0d28gdHJlZXMgaGF2ZSBsYXJnZSBhbW91bnRzXHJcbiAgICAgKiBvZiBzaGFyZWQgZGF0YSAob2J0YWluZWQgYnkgY2FsbGluZyB0aGUgYGNsb25lYCBvciBgd2l0aGAgQVBJcykgYW5kIHdpbGwgYXZvaWRcclxuICAgICAqIGFueSBpdGVyYXRpb24gb2Ygc2hhcmVkIHN0YXRlLlxyXG4gICAgICogVGhlIGhhbmRsZXJzIGNhbiBjYXVzZSBjb21wdXRhdGlvbiB0byBlYXJseSBleGl0IGJ5IHJldHVybmluZyB7YnJlYWs6IFJ9LlxyXG4gICAgICogTmVpdGhlciBvZiB0aGUgY29sbGVjdGlvbnMgc2hvdWxkIGJlIGNoYW5nZWQgZHVyaW5nIHRoZSBjb21wYXJpc29uIHByb2Nlc3MgKGluIHlvdXIgY2FsbGJhY2tzKSwgYXMgdGhpcyBtZXRob2QgYXNzdW1lcyB0aGV5IHdpbGwgbm90IGJlIG11dGF0ZWQuXHJcbiAgICAgKiBAcGFyYW0gb3RoZXIgVGhlIHRyZWUgdG8gY29tcHV0ZSBhIGRpZmYgYWdhaW5zdC5cclxuICAgICAqIEBwYXJhbSBvbmx5VGhpcyBDYWxsYmFjayBpbnZva2VkIGZvciBhbGwga2V5cyBvbmx5IHByZXNlbnQgaW4gYHRoaXNgLlxyXG4gICAgICogQHBhcmFtIG9ubHlPdGhlciBDYWxsYmFjayBpbnZva2VkIGZvciBhbGwga2V5cyBvbmx5IHByZXNlbnQgaW4gYG90aGVyYC5cclxuICAgICAqIEBwYXJhbSBkaWZmZXJlbnQgQ2FsbGJhY2sgaW52b2tlZCBmb3IgYWxsIGtleXMgd2l0aCBkaWZmZXJpbmcgdmFsdWVzLlxyXG4gICAgICovXHJcbiAgICBCVHJlZS5wcm90b3R5cGUuZGlmZkFnYWluc3QgPSBmdW5jdGlvbiAob3RoZXIsIG9ubHlUaGlzLCBvbmx5T3RoZXIsIGRpZmZlcmVudCkge1xyXG4gICAgICAgIGlmIChvdGhlci5fY29tcGFyZSAhPT0gdGhpcy5fY29tcGFyZSkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUcmVlIGNvbXBhcmF0b3JzIGFyZSBub3QgdGhlIHNhbWUuXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5pc0VtcHR5IHx8IG90aGVyLmlzRW1wdHkpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuaXNFbXB0eSAmJiBvdGhlci5pc0VtcHR5KVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgLy8gSWYgb25lIHRyZWUgaXMgZW1wdHksIGV2ZXJ5dGhpbmcgd2lsbCBiZSBhbiBvbmx5VGhpcy9vbmx5T3RoZXIuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLmlzRW1wdHkpXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gb25seU90aGVyID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBCVHJlZS5zdGVwVG9FbmQoQlRyZWUubWFrZURpZmZDdXJzb3Iob3RoZXIpLCBvbmx5T3RoZXIpO1xyXG4gICAgICAgICAgICByZXR1cm4gb25seVRoaXMgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IEJUcmVlLnN0ZXBUb0VuZChCVHJlZS5tYWtlRGlmZkN1cnNvcih0aGlzKSwgb25seVRoaXMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBDdXJzb3ItYmFzZWQgZGlmZiBhbGdvcml0aG0gaXMgYXMgZm9sbG93czpcclxuICAgICAgICAvLyAtIFVudGlsIG5laXRoZXIgY3Vyc29yIGhhcyBuYXZpZ2F0ZWQgdG8gdGhlIGVuZCBvZiB0aGUgdHJlZSwgZG8gdGhlIGZvbGxvd2luZzpcclxuICAgICAgICAvLyAgLSBJZiB0aGUgYHRoaXNgIGN1cnNvciBpcyBcImJlaGluZFwiIHRoZSBgb3RoZXJgIGN1cnNvciAoc3RyaWN0bHkgPCwgdmlhIGNvbXBhcmUpLCBhZHZhbmNlIGl0LlxyXG4gICAgICAgIC8vICAtIE90aGVyd2lzZSwgYWR2YW5jZSB0aGUgYG90aGVyYCBjdXJzb3IuXHJcbiAgICAgICAgLy8gIC0gQW55IHRpbWUgYSBjdXJzb3IgaXMgc3RlcHBlZCwgcGVyZm9ybSB0aGUgZm9sbG93aW5nOlxyXG4gICAgICAgIC8vICAgIC0gSWYgZWl0aGVyIGN1cnNvciBwb2ludHMgdG8gYSBrZXkvdmFsdWUgcGFpcjpcclxuICAgICAgICAvLyAgICAgIC0gSWYgdGhpc0N1cnNvciA9PT0gb3RoZXJDdXJzb3IgYW5kIHRoZSB2YWx1ZXMgZGlmZmVyLCBpdCBpcyBhIERpZmZlcmVudC5cclxuICAgICAgICAvLyAgICAgIC0gSWYgdGhpc0N1cnNvciA+IG90aGVyQ3Vyc29yIGFuZCBvdGhlckN1cnNvciBpcyBhdCBhIGtleS92YWx1ZSBwYWlyLCBpdCBpcyBhbiBPbmx5T3RoZXIuXHJcbiAgICAgICAgLy8gICAgICAtIElmIHRoaXNDdXJzb3IgPCBvdGhlckN1cnNvciBhbmQgdGhpc0N1cnNvciBpcyBhdCBhIGtleS92YWx1ZSBwYWlyLCBpdCBpcyBhbiBPbmx5VGhpcyBhcyBsb25nIGFzIHRoZSBtb3N0IHJlY2VudCBcclxuICAgICAgICAvLyAgICAgICAgY3Vyc29yIHN0ZXAgd2FzICpub3QqIG90aGVyQ3Vyc29yIGFkdmFuY2luZyBmcm9tIGEgdGllLiBUaGUgZXh0cmEgY29uZGl0aW9uIGF2b2lkcyBlcnJvbmVvdXMgT25seU90aGVyIGNhbGxzIFxyXG4gICAgICAgIC8vICAgICAgICB0aGF0IHdvdWxkIG9jY3VyIGR1ZSB0byBvdGhlckN1cnNvciBiZWluZyB0aGUgXCJsZWFkZXJcIi5cclxuICAgICAgICAvLyAgICAtIE90aGVyd2lzZSwgaWYgYm90aCBjdXJzb3JzIHBvaW50IHRvIG5vZGVzLCBjb21wYXJlIHRoZW0uIElmIHRoZXkgYXJlIGVxdWFsIGJ5IHJlZmVyZW5jZSAoc2hhcmVkKSwgc2tpcFxyXG4gICAgICAgIC8vICAgICAgYm90aCBjdXJzb3JzIHRvIHRoZSBuZXh0IG5vZGUgaW4gdGhlIHdhbGsuXHJcbiAgICAgICAgLy8gLSBPbmNlIG9uZSBjdXJzb3IgaGFzIGZpbmlzaGVkIHN0ZXBwaW5nLCBhbnkgcmVtYWluaW5nIHN0ZXBzIChpZiBhbnkpIGFyZSB0YWtlbiBhbmQga2V5L3ZhbHVlIHBhaXJzIGFyZSBsb2dnZWRcclxuICAgICAgICAvLyAgIGFzIE9ubHlPdGhlciAoaWYgb3RoZXJDdXJzb3IgaXMgc3RlcHBpbmcpIG9yIE9ubHlUaGlzIChpZiB0aGlzQ3Vyc29yIGlzIHN0ZXBwaW5nKS5cclxuICAgICAgICAvLyBUaGlzIGFsZ29yaXRobSBnaXZlcyB0aGUgY3JpdGljYWwgZ3VhcmFudGVlIHRoYXQgYWxsIGxvY2F0aW9ucyAoYm90aCBub2RlcyBhbmQga2V5L3ZhbHVlIHBhaXJzKSBpbiBib3RoIHRyZWVzIHRoYXQgXHJcbiAgICAgICAgLy8gYXJlIGlkZW50aWNhbCBieSB2YWx1ZSAoYW5kIHBvc3NpYmx5IGJ5IHJlZmVyZW5jZSkgd2lsbCBiZSB2aXNpdGVkICphdCB0aGUgc2FtZSB0aW1lKiBieSB0aGUgY3Vyc29ycy5cclxuICAgICAgICAvLyBUaGlzIHJlbW92ZXMgdGhlIHBvc3NpYmlsaXR5IG9mIGVtaXR0aW5nIGluY29ycmVjdCBkaWZmcywgYXMgd2VsbCBhcyBhbGxvd2luZyBmb3Igc2tpcHBpbmcgc2hhcmVkIG5vZGVzLlxyXG4gICAgICAgIHZhciBfY29tcGFyZSA9IHRoaXMuX2NvbXBhcmU7XHJcbiAgICAgICAgdmFyIHRoaXNDdXJzb3IgPSBCVHJlZS5tYWtlRGlmZkN1cnNvcih0aGlzKTtcclxuICAgICAgICB2YXIgb3RoZXJDdXJzb3IgPSBCVHJlZS5tYWtlRGlmZkN1cnNvcihvdGhlcik7XHJcbiAgICAgICAgLy8gSXQgZG9lc24ndCBtYXR0ZXIgaG93IHRoaXNTdGVwcGVkTGFzdCBpcyBpbml0aWFsaXplZC5cclxuICAgICAgICAvLyBTdGVwIG9yZGVyIGlzIG9ubHkgdXNlZCB3aGVuIGVpdGhlciBjdXJzb3IgaXMgYXQgYSBsZWFmLCBhbmQgY3Vyc29ycyBhbHdheXMgc3RhcnQgYXQgYSBub2RlLlxyXG4gICAgICAgIHZhciB0aGlzU3VjY2VzcyA9IHRydWUsIG90aGVyU3VjY2VzcyA9IHRydWUsIHByZXZDdXJzb3JPcmRlciA9IEJUcmVlLmNvbXBhcmUodGhpc0N1cnNvciwgb3RoZXJDdXJzb3IsIF9jb21wYXJlKTtcclxuICAgICAgICB3aGlsZSAodGhpc1N1Y2Nlc3MgJiYgb3RoZXJTdWNjZXNzKSB7XHJcbiAgICAgICAgICAgIHZhciBjdXJzb3JPcmRlciA9IEJUcmVlLmNvbXBhcmUodGhpc0N1cnNvciwgb3RoZXJDdXJzb3IsIF9jb21wYXJlKTtcclxuICAgICAgICAgICAgdmFyIHRoaXNMZWFmID0gdGhpc0N1cnNvci5sZWFmLCB0aGlzSW50ZXJuYWxTcGluZSA9IHRoaXNDdXJzb3IuaW50ZXJuYWxTcGluZSwgdGhpc0xldmVsSW5kaWNlcyA9IHRoaXNDdXJzb3IubGV2ZWxJbmRpY2VzO1xyXG4gICAgICAgICAgICB2YXIgb3RoZXJMZWFmID0gb3RoZXJDdXJzb3IubGVhZiwgb3RoZXJJbnRlcm5hbFNwaW5lID0gb3RoZXJDdXJzb3IuaW50ZXJuYWxTcGluZSwgb3RoZXJMZXZlbEluZGljZXMgPSBvdGhlckN1cnNvci5sZXZlbEluZGljZXM7XHJcbiAgICAgICAgICAgIGlmICh0aGlzTGVhZiB8fCBvdGhlckxlYWYpIHtcclxuICAgICAgICAgICAgICAgIC8vIElmIHRoZSBjdXJzb3JzIHdlcmUgYXQgdGhlIHNhbWUgbG9jYXRpb24gbGFzdCBzdGVwLCB0aGVuIHRoZXJlIGlzIG5vIHdvcmsgdG8gYmUgZG9uZS5cclxuICAgICAgICAgICAgICAgIGlmIChwcmV2Q3Vyc29yT3JkZXIgIT09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY3Vyc29yT3JkZXIgPT09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXNMZWFmICYmIG90aGVyTGVhZiAmJiBkaWZmZXJlbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVxdWFsIGtleXMsIGNoZWNrIGZvciBtb2RpZmljYXRpb25zXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdmFsVGhpcyA9IHRoaXNMZWFmLnZhbHVlc1t0aGlzTGV2ZWxJbmRpY2VzW3RoaXNMZXZlbEluZGljZXMubGVuZ3RoIC0gMV1dO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHZhbE90aGVyID0gb3RoZXJMZWFmLnZhbHVlc1tvdGhlckxldmVsSW5kaWNlc1tvdGhlckxldmVsSW5kaWNlcy5sZW5ndGggLSAxXV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIU9iamVjdC5pcyh2YWxUaGlzLCB2YWxPdGhlcikpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gZGlmZmVyZW50KHRoaXNDdXJzb3IuY3VycmVudEtleSwgdmFsVGhpcywgdmFsT3RoZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgJiYgcmVzdWx0LmJyZWFrKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LmJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGN1cnNvck9yZGVyID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGlzIGlzIHRoZSBjYXNlLCB3ZSBrbm93IHRoYXQgZWl0aGVyOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAxLiBvdGhlckN1cnNvciBzdGVwcGVkIGxhc3QgZnJvbSBhIHN0YXJ0aW5nIHBvc2l0aW9uIHRoYXQgdHJhaWxlZCB0aGlzQ3Vyc29yLCBhbmQgaXMgc3RpbGwgYmVoaW5kLCBvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAyLiB0aGlzQ3Vyc29yIHN0ZXBwZWQgbGFzdCBhbmQgbGVhcGZyb2dnZWQgb3RoZXJDdXJzb3JcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gRWl0aGVyIG9mIHRoZXNlIGNhc2VzIGlzIGFuIFwib25seSBvdGhlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvdGhlckxlYWYgJiYgb25seU90aGVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgb3RoZXJWYWwgPSBvdGhlckxlYWYudmFsdWVzW290aGVyTGV2ZWxJbmRpY2VzW290aGVyTGV2ZWxJbmRpY2VzLmxlbmd0aCAtIDFdXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSBvbmx5T3RoZXIob3RoZXJDdXJzb3IuY3VycmVudEtleSwgb3RoZXJWYWwpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCAmJiByZXN1bHQuYnJlYWspXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5icmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChvbmx5VGhpcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpc0xlYWYgJiYgcHJldkN1cnNvck9yZGVyICE9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdmFsVGhpcyA9IHRoaXNMZWFmLnZhbHVlc1t0aGlzTGV2ZWxJbmRpY2VzW3RoaXNMZXZlbEluZGljZXMubGVuZ3RoIC0gMV1dO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IG9ubHlUaGlzKHRoaXNDdXJzb3IuY3VycmVudEtleSwgdmFsVGhpcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICYmIHJlc3VsdC5icmVhaylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LmJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKCF0aGlzTGVhZiAmJiAhb3RoZXJMZWFmICYmIGN1cnNvck9yZGVyID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgbGFzdFRoaXMgPSB0aGlzSW50ZXJuYWxTcGluZS5sZW5ndGggLSAxO1xyXG4gICAgICAgICAgICAgICAgdmFyIGxhc3RPdGhlciA9IG90aGVySW50ZXJuYWxTcGluZS5sZW5ndGggLSAxO1xyXG4gICAgICAgICAgICAgICAgdmFyIG5vZGVUaGlzID0gdGhpc0ludGVybmFsU3BpbmVbbGFzdFRoaXNdW3RoaXNMZXZlbEluZGljZXNbbGFzdFRoaXNdXTtcclxuICAgICAgICAgICAgICAgIHZhciBub2RlT3RoZXIgPSBvdGhlckludGVybmFsU3BpbmVbbGFzdE90aGVyXVtvdGhlckxldmVsSW5kaWNlc1tsYXN0T3RoZXJdXTtcclxuICAgICAgICAgICAgICAgIGlmIChub2RlT3RoZXIgPT09IG5vZGVUaGlzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJldkN1cnNvck9yZGVyID0gMDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzU3VjY2VzcyA9IEJUcmVlLnN0ZXAodGhpc0N1cnNvciwgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgb3RoZXJTdWNjZXNzID0gQlRyZWUuc3RlcChvdGhlckN1cnNvciwgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcHJldkN1cnNvck9yZGVyID0gY3Vyc29yT3JkZXI7XHJcbiAgICAgICAgICAgIGlmIChjdXJzb3JPcmRlciA8IDApIHtcclxuICAgICAgICAgICAgICAgIHRoaXNTdWNjZXNzID0gQlRyZWUuc3RlcCh0aGlzQ3Vyc29yKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIG90aGVyU3VjY2VzcyA9IEJUcmVlLnN0ZXAob3RoZXJDdXJzb3IpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzU3VjY2VzcyAmJiBvbmx5VGhpcylcclxuICAgICAgICAgICAgcmV0dXJuIEJUcmVlLmZpbmlzaEN1cnNvcldhbGsodGhpc0N1cnNvciwgb3RoZXJDdXJzb3IsIF9jb21wYXJlLCBvbmx5VGhpcyk7XHJcbiAgICAgICAgaWYgKG90aGVyU3VjY2VzcyAmJiBvbmx5T3RoZXIpXHJcbiAgICAgICAgICAgIHJldHVybiBCVHJlZS5maW5pc2hDdXJzb3JXYWxrKG90aGVyQ3Vyc29yLCB0aGlzQ3Vyc29yLCBfY29tcGFyZSwgb25seU90aGVyKTtcclxuICAgIH07XHJcbiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuICAgIC8vIEhlbHBlciBtZXRob2RzIGZvciBkaWZmQWdhaW5zdCAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG4gICAgQlRyZWUuZmluaXNoQ3Vyc29yV2FsayA9IGZ1bmN0aW9uIChjdXJzb3IsIGN1cnNvckZpbmlzaGVkLCBjb21wYXJlS2V5cywgY2FsbGJhY2spIHtcclxuICAgICAgICB2YXIgY29tcGFyZWQgPSBCVHJlZS5jb21wYXJlKGN1cnNvciwgY3Vyc29yRmluaXNoZWQsIGNvbXBhcmVLZXlzKTtcclxuICAgICAgICBpZiAoY29tcGFyZWQgPT09IDApIHtcclxuICAgICAgICAgICAgaWYgKCFCVHJlZS5zdGVwKGN1cnNvcikpXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChjb21wYXJlZCA8IDApIHtcclxuICAgICAgICAgICAgY2hlY2soZmFsc2UsIFwiY3Vyc29yIHdhbGsgdGVybWluYXRlZCBlYXJseVwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIEJUcmVlLnN0ZXBUb0VuZChjdXJzb3IsIGNhbGxiYWNrKTtcclxuICAgIH07XHJcbiAgICBCVHJlZS5zdGVwVG9FbmQgPSBmdW5jdGlvbiAoY3Vyc29yLCBjYWxsYmFjaykge1xyXG4gICAgICAgIHZhciBjYW5TdGVwID0gdHJ1ZTtcclxuICAgICAgICB3aGlsZSAoY2FuU3RlcCkge1xyXG4gICAgICAgICAgICB2YXIgbGVhZiA9IGN1cnNvci5sZWFmLCBsZXZlbEluZGljZXMgPSBjdXJzb3IubGV2ZWxJbmRpY2VzLCBjdXJyZW50S2V5ID0gY3Vyc29yLmN1cnJlbnRLZXk7XHJcbiAgICAgICAgICAgIGlmIChsZWFmKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgdmFsdWUgPSBsZWFmLnZhbHVlc1tsZXZlbEluZGljZXNbbGV2ZWxJbmRpY2VzLmxlbmd0aCAtIDFdXTtcclxuICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSBjYWxsYmFjayhjdXJyZW50S2V5LCB2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICYmIHJlc3VsdC5icmVhaylcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LmJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhblN0ZXAgPSBCVHJlZS5zdGVwKGN1cnNvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICB9O1xyXG4gICAgQlRyZWUubWFrZURpZmZDdXJzb3IgPSBmdW5jdGlvbiAodHJlZSkge1xyXG4gICAgICAgIHZhciBfcm9vdCA9IHRyZWUuX3Jvb3QsIGhlaWdodCA9IHRyZWUuaGVpZ2h0O1xyXG4gICAgICAgIHJldHVybiB7IGhlaWdodDogaGVpZ2h0LCBpbnRlcm5hbFNwaW5lOiBbW19yb290XV0sIGxldmVsSW5kaWNlczogWzBdLCBsZWFmOiB1bmRlZmluZWQsIGN1cnJlbnRLZXk6IF9yb290Lm1heEtleSgpIH07XHJcbiAgICB9O1xyXG4gICAgLyoqXHJcbiAgICAgKiBBZHZhbmNlcyB0aGUgY3Vyc29yIHRvIHRoZSBuZXh0IHN0ZXAgaW4gdGhlIHdhbGsgb2YgaXRzIHRyZWUuXHJcbiAgICAgKiBDdXJzb3JzIGFyZSB3YWxrZWQgYmFja3dhcmRzIGluIHNvcnQgb3JkZXIsIGFzIHRoaXMgYWxsb3dzIHRoZW0gdG8gbGV2ZXJhZ2UgbWF4S2V5KCkgaW4gb3JkZXIgdG8gYmUgY29tcGFyZWQgaW4gTygxKS5cclxuICAgICAqIEBwYXJhbSBjdXJzb3IgVGhlIGN1cnNvciB0byBzdGVwXHJcbiAgICAgKiBAcGFyYW0gc3RlcFRvTm9kZSBJZiB0cnVlLCB0aGUgY3Vyc29yIHdpbGwgYmUgYWR2YW5jZWQgdG8gdGhlIG5leHQgbm9kZSAoc2tpcHBpbmcgdmFsdWVzKVxyXG4gICAgICogQHJldHVybnMgdHJ1ZSBpZiB0aGUgc3RlcCB3YXMgY29tcGxldGVkIGFuZCBmYWxzZSBpZiB0aGUgc3RlcCB3b3VsZCBoYXZlIGNhdXNlZCB0aGUgY3Vyc29yIHRvIG1vdmUgYmV5b25kIHRoZSBlbmQgb2YgdGhlIHRyZWUuXHJcbiAgICAgKi9cclxuICAgIEJUcmVlLnN0ZXAgPSBmdW5jdGlvbiAoY3Vyc29yLCBzdGVwVG9Ob2RlKSB7XHJcbiAgICAgICAgdmFyIGludGVybmFsU3BpbmUgPSBjdXJzb3IuaW50ZXJuYWxTcGluZSwgbGV2ZWxJbmRpY2VzID0gY3Vyc29yLmxldmVsSW5kaWNlcywgbGVhZiA9IGN1cnNvci5sZWFmO1xyXG4gICAgICAgIGlmIChzdGVwVG9Ob2RlID09PSB0cnVlIHx8IGxlYWYpIHtcclxuICAgICAgICAgICAgdmFyIGxldmVsc0xlbmd0aCA9IGxldmVsSW5kaWNlcy5sZW5ndGg7XHJcbiAgICAgICAgICAgIC8vIFN0ZXAgdG8gdGhlIG5leHQgbm9kZSBvbmx5IGlmOlxyXG4gICAgICAgICAgICAvLyAtIFdlIGFyZSBleHBsaWNpdGx5IGRpcmVjdGVkIHRvIHZpYSBzdGVwVG9Ob2RlLCBvclxyXG4gICAgICAgICAgICAvLyAtIFRoZXJlIGFyZSBubyBrZXkvdmFsdWUgcGFpcnMgbGVmdCB0byBzdGVwIHRvIGluIHRoaXMgbGVhZlxyXG4gICAgICAgICAgICBpZiAoc3RlcFRvTm9kZSA9PT0gdHJ1ZSB8fCBsZXZlbEluZGljZXNbbGV2ZWxzTGVuZ3RoIC0gMV0gPT09IDApIHtcclxuICAgICAgICAgICAgICAgIHZhciBzcGluZUxlbmd0aCA9IGludGVybmFsU3BpbmUubGVuZ3RoO1xyXG4gICAgICAgICAgICAgICAgLy8gUm9vdCBpcyBsZWFmXHJcbiAgICAgICAgICAgICAgICBpZiAoc3BpbmVMZW5ndGggPT09IDApXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgLy8gV2FsayBiYWNrIHVwIHRoZSB0cmVlIHVudGlsIHdlIGZpbmQgYSBuZXcgc3VidHJlZSB0byBkZXNjZW5kIGludG9cclxuICAgICAgICAgICAgICAgIHZhciBub2RlTGV2ZWxJbmRleCA9IHNwaW5lTGVuZ3RoIC0gMTtcclxuICAgICAgICAgICAgICAgIHZhciBsZXZlbEluZGV4V2Fsa0JhY2sgPSBub2RlTGV2ZWxJbmRleDtcclxuICAgICAgICAgICAgICAgIHdoaWxlIChsZXZlbEluZGV4V2Fsa0JhY2sgPj0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChsZXZlbEluZGljZXNbbGV2ZWxJbmRleFdhbGtCYWNrXSA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxldmVsSW5kZXhXYWxrQmFjayA8IGxldmVsc0xlbmd0aCAtIDEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlbW92ZSBsZWFmIHN0YXRlIGZyb20gY3Vyc29yXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJzb3IubGVhZiA9IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsSW5kaWNlcy5wb3AoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB3ZSB3YWxrZWQgdXB3YXJkcyBwYXN0IGFueSBpbnRlcm5hbCBub2RlLCBzbGljZSB0aGVtIG91dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobGV2ZWxJbmRleFdhbGtCYWNrIDwgbm9kZUxldmVsSW5kZXgpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJzb3IuaW50ZXJuYWxTcGluZSA9IGludGVybmFsU3BpbmUuc2xpY2UoMCwgbGV2ZWxJbmRleFdhbGtCYWNrICsgMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1vdmUgdG8gbmV3IGludGVybmFsIG5vZGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgY3Vyc29yLmN1cnJlbnRLZXkgPSBpbnRlcm5hbFNwaW5lW2xldmVsSW5kZXhXYWxrQmFja11bLS1sZXZlbEluZGljZXNbbGV2ZWxJbmRleFdhbGtCYWNrXV0ubWF4S2V5KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBsZXZlbEluZGV4V2Fsa0JhY2stLTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIEN1cnNvciBpcyBpbiB0aGUgZmFyIGxlZnQgbGVhZiBvZiB0aGUgdHJlZSwgbm8gbW9yZSBub2RlcyB0byBlbnVtZXJhdGVcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIE1vdmUgdG8gbmV3IGxlYWYgdmFsdWVcclxuICAgICAgICAgICAgICAgIHZhciB2YWx1ZUluZGV4ID0gLS1sZXZlbEluZGljZXNbbGV2ZWxzTGVuZ3RoIC0gMV07XHJcbiAgICAgICAgICAgICAgICBjdXJzb3IuY3VycmVudEtleSA9IGxlYWYua2V5c1t2YWx1ZUluZGV4XTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgeyAvLyBDdXJzb3IgZG9lcyBub3QgcG9pbnQgdG8gYSB2YWx1ZSBpbiBhIGxlYWYsIHNvIG1vdmUgZG93bndhcmRzXHJcbiAgICAgICAgICAgIHZhciBuZXh0TGV2ZWwgPSBpbnRlcm5hbFNwaW5lLmxlbmd0aDtcclxuICAgICAgICAgICAgdmFyIGN1cnJlbnRMZXZlbCA9IG5leHRMZXZlbCAtIDE7XHJcbiAgICAgICAgICAgIHZhciBub2RlID0gaW50ZXJuYWxTcGluZVtjdXJyZW50TGV2ZWxdW2xldmVsSW5kaWNlc1tjdXJyZW50TGV2ZWxdXTtcclxuICAgICAgICAgICAgaWYgKG5vZGUuaXNMZWFmKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBFbnRlcmluZyBpbnRvIGEgbGVhZi4gU2V0IHRoZSBjdXJzb3IgdG8gcG9pbnQgYXQgdGhlIGxhc3Qga2V5L3ZhbHVlIHBhaXIuXHJcbiAgICAgICAgICAgICAgICBjdXJzb3IubGVhZiA9IG5vZGU7XHJcbiAgICAgICAgICAgICAgICB2YXIgdmFsdWVJbmRleCA9IGxldmVsSW5kaWNlc1tuZXh0TGV2ZWxdID0gbm9kZS52YWx1ZXMubGVuZ3RoIC0gMTtcclxuICAgICAgICAgICAgICAgIGN1cnNvci5jdXJyZW50S2V5ID0gbm9kZS5rZXlzW3ZhbHVlSW5kZXhdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdmFyIGNoaWxkcmVuID0gbm9kZS5jaGlsZHJlbjtcclxuICAgICAgICAgICAgICAgIGludGVybmFsU3BpbmVbbmV4dExldmVsXSA9IGNoaWxkcmVuO1xyXG4gICAgICAgICAgICAgICAgdmFyIGNoaWxkSW5kZXggPSBjaGlsZHJlbi5sZW5ndGggLSAxO1xyXG4gICAgICAgICAgICAgICAgbGV2ZWxJbmRpY2VzW25leHRMZXZlbF0gPSBjaGlsZEluZGV4O1xyXG4gICAgICAgICAgICAgICAgY3Vyc29yLmN1cnJlbnRLZXkgPSBjaGlsZHJlbltjaGlsZEluZGV4XS5tYXhLZXkoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgLyoqXHJcbiAgICAgKiBDb21wYXJlcyB0aGUgdHdvIGN1cnNvcnMuIFJldHVybnMgYSB2YWx1ZSBpbmRpY2F0aW5nIHdoaWNoIGN1cnNvciBpcyBhaGVhZCBpbiBhIHdhbGsuXHJcbiAgICAgKiBOb3RlIHRoYXQgY3Vyc29ycyBhcmUgYWR2YW5jZWQgaW4gcmV2ZXJzZSBzb3J0aW5nIG9yZGVyLlxyXG4gICAgICovXHJcbiAgICBCVHJlZS5jb21wYXJlID0gZnVuY3Rpb24gKGN1cnNvckEsIGN1cnNvckIsIGNvbXBhcmVLZXlzKSB7XHJcbiAgICAgICAgdmFyIGhlaWdodEEgPSBjdXJzb3JBLmhlaWdodCwgY3VycmVudEtleUEgPSBjdXJzb3JBLmN1cnJlbnRLZXksIGxldmVsSW5kaWNlc0EgPSBjdXJzb3JBLmxldmVsSW5kaWNlcztcclxuICAgICAgICB2YXIgaGVpZ2h0QiA9IGN1cnNvckIuaGVpZ2h0LCBjdXJyZW50S2V5QiA9IGN1cnNvckIuY3VycmVudEtleSwgbGV2ZWxJbmRpY2VzQiA9IGN1cnNvckIubGV2ZWxJbmRpY2VzO1xyXG4gICAgICAgIC8vIFJldmVyc2UgdGhlIGNvbXBhcmlzb24gb3JkZXIsIGFzIGN1cnNvcnMgYXJlIGFkdmFuY2VkIGluIHJldmVyc2Ugc29ydGluZyBvcmRlclxyXG4gICAgICAgIHZhciBrZXlDb21wYXJpc29uID0gY29tcGFyZUtleXMoY3VycmVudEtleUIsIGN1cnJlbnRLZXlBKTtcclxuICAgICAgICBpZiAoa2V5Q29tcGFyaXNvbiAhPT0gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4ga2V5Q29tcGFyaXNvbjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gTm9ybWFsaXplIGRlcHRoIHZhbHVlcyByZWxhdGl2ZSB0byB0aGUgc2hvcnRlc3QgdHJlZS5cclxuICAgICAgICAvLyBUaGlzIGVuc3VyZXMgdGhhdCBjb25jdXJyZW50IGN1cnNvciB3YWxrcyBvZiB0cmVlcyBvZiBkaWZmZXJpbmcgaGVpZ2h0cyBjYW4gcmVsaWFibHkgbGFuZCBvbiBzaGFyZWQgbm9kZXMgYXQgdGhlIHNhbWUgdGltZS5cclxuICAgICAgICAvLyBUbyBhY2NvbXBsaXNoIHRoaXMsIGEgY3Vyc29yIHRoYXQgaXMgb24gYW4gaW50ZXJuYWwgbm9kZSBhdCBkZXB0aCBEMSB3aXRoIG1heEtleSBYIGlzIGNvbnNpZGVyZWQgXCJiZWhpbmRcIiBhIGN1cnNvciBvbiBhblxyXG4gICAgICAgIC8vIGludGVybmFsIG5vZGUgYXQgZGVwdGggRDIgd2l0aCBtYXhLZXkgWSwgd2hlbiBEMSA8IEQyLiBUaHVzLCBhbHdheXMgd2Fsa2luZyB0aGUgY3Vyc29yIHRoYXQgaXMgXCJiZWhpbmRcIiB3aWxsIGFsbG93IHRoZSBjdXJzb3JcclxuICAgICAgICAvLyBhdCBzaGFsbG93ZXIgZGVwdGggKGJ1dCBlcXVhbCBtYXhLZXkpIHRvIFwiY2F0Y2ggdXBcIiBhbmQgbGFuZCBvbiBzaGFyZWQgbm9kZXMuXHJcbiAgICAgICAgdmFyIGhlaWdodE1pbiA9IGhlaWdodEEgPCBoZWlnaHRCID8gaGVpZ2h0QSA6IGhlaWdodEI7XHJcbiAgICAgICAgdmFyIGRlcHRoQU5vcm1hbGl6ZWQgPSBsZXZlbEluZGljZXNBLmxlbmd0aCAtIChoZWlnaHRBIC0gaGVpZ2h0TWluKTtcclxuICAgICAgICB2YXIgZGVwdGhCTm9ybWFsaXplZCA9IGxldmVsSW5kaWNlc0IubGVuZ3RoIC0gKGhlaWdodEIgLSBoZWlnaHRNaW4pO1xyXG4gICAgICAgIHJldHVybiBkZXB0aEFOb3JtYWxpemVkIC0gZGVwdGhCTm9ybWFsaXplZDtcclxuICAgIH07XHJcbiAgICAvLyBFbmQgb2YgaGVscGVyIG1ldGhvZHMgZm9yIGRpZmZBZ2FpbnN0IC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG4gICAgLyoqIFJldHVybnMgYSBuZXcgaXRlcmF0b3IgZm9yIGl0ZXJhdGluZyB0aGUga2V5cyBvZiBlYWNoIHBhaXIgaW4gYXNjZW5kaW5nIG9yZGVyLlxyXG4gICAgICogIEBwYXJhbSBmaXJzdEtleTogTWluaW11bSBrZXkgdG8gaW5jbHVkZSBpbiB0aGUgb3V0cHV0LiAqL1xyXG4gICAgQlRyZWUucHJvdG90eXBlLmtleXMgPSBmdW5jdGlvbiAoZmlyc3RLZXkpIHtcclxuICAgICAgICB2YXIgaXQgPSB0aGlzLmVudHJpZXMoZmlyc3RLZXksIFJldXNlZEFycmF5KTtcclxuICAgICAgICByZXR1cm4gaXRlcmF0b3IoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICB2YXIgbiA9IGl0Lm5leHQoKTtcclxuICAgICAgICAgICAgaWYgKG4udmFsdWUpXHJcbiAgICAgICAgICAgICAgICBuLnZhbHVlID0gbi52YWx1ZVswXTtcclxuICAgICAgICAgICAgcmV0dXJuIG47XHJcbiAgICAgICAgfSk7XHJcbiAgICB9O1xyXG4gICAgLyoqIFJldHVybnMgYSBuZXcgaXRlcmF0b3IgZm9yIGl0ZXJhdGluZyB0aGUgdmFsdWVzIG9mIGVhY2ggcGFpciBpbiBvcmRlciBieSBrZXkuXHJcbiAgICAgKiAgQHBhcmFtIGZpcnN0S2V5OiBNaW5pbXVtIGtleSB3aG9zZSBhc3NvY2lhdGVkIHZhbHVlIGlzIGluY2x1ZGVkIGluIHRoZSBvdXRwdXQuICovXHJcbiAgICBCVHJlZS5wcm90b3R5cGUudmFsdWVzID0gZnVuY3Rpb24gKGZpcnN0S2V5KSB7XHJcbiAgICAgICAgdmFyIGl0ID0gdGhpcy5lbnRyaWVzKGZpcnN0S2V5LCBSZXVzZWRBcnJheSk7XHJcbiAgICAgICAgcmV0dXJuIGl0ZXJhdG9yKGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgdmFyIG4gPSBpdC5uZXh0KCk7XHJcbiAgICAgICAgICAgIGlmIChuLnZhbHVlKVxyXG4gICAgICAgICAgICAgICAgbi52YWx1ZSA9IG4udmFsdWVbMV07XHJcbiAgICAgICAgICAgIHJldHVybiBuO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfTtcclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShCVHJlZS5wcm90b3R5cGUsIFwibWF4Tm9kZVNpemVcIiwge1xyXG4gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbiAgICAgICAgLy8gQWRkaXRpb25hbCBtZXRob2RzIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuICAgICAgICAvKiogUmV0dXJucyB0aGUgbWF4aW11bSBudW1iZXIgb2YgY2hpbGRyZW4vdmFsdWVzIGJlZm9yZSBub2RlcyB3aWxsIHNwbGl0LiAqL1xyXG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fbWF4Tm9kZVNpemU7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcclxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcclxuICAgIH0pO1xyXG4gICAgLyoqIEdldHMgdGhlIGxvd2VzdCBrZXkgaW4gdGhlIHRyZWUuIENvbXBsZXhpdHk6IE8obG9nIHNpemUpICovXHJcbiAgICBCVHJlZS5wcm90b3R5cGUubWluS2V5ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5fcm9vdC5taW5LZXkoKTsgfTtcclxuICAgIC8qKiBHZXRzIHRoZSBoaWdoZXN0IGtleSBpbiB0aGUgdHJlZS4gQ29tcGxleGl0eTogTygxKSAqL1xyXG4gICAgQlRyZWUucHJvdG90eXBlLm1heEtleSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuX3Jvb3QubWF4S2V5KCk7IH07XHJcbiAgICAvKiogUXVpY2tseSBjbG9uZXMgdGhlIHRyZWUgYnkgbWFya2luZyB0aGUgcm9vdCBub2RlIGFzIHNoYXJlZC5cclxuICAgICAqICBCb3RoIGNvcGllcyByZW1haW4gZWRpdGFibGUuIFdoZW4geW91IG1vZGlmeSBlaXRoZXIgY29weSwgYW55XHJcbiAgICAgKiAgbm9kZXMgdGhhdCBhcmUgc2hhcmVkIChvciBwb3RlbnRpYWxseSBzaGFyZWQpIGJldHdlZW4gdGhlIHR3b1xyXG4gICAgICogIGNvcGllcyBhcmUgY2xvbmVkIHNvIHRoYXQgdGhlIGNoYW5nZXMgZG8gbm90IGFmZmVjdCBvdGhlciBjb3BpZXMuXHJcbiAgICAgKiAgVGhpcyBpcyBrbm93biBhcyBjb3B5LW9uLXdyaXRlIGJlaGF2aW9yLCBvciBcImxhenkgY29weWluZ1wiLiAqL1xyXG4gICAgQlRyZWUucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHRoaXMuX3Jvb3QuaXNTaGFyZWQgPSB0cnVlO1xyXG4gICAgICAgIHZhciByZXN1bHQgPSBuZXcgQlRyZWUodW5kZWZpbmVkLCB0aGlzLl9jb21wYXJlLCB0aGlzLl9tYXhOb2RlU2l6ZSk7XHJcbiAgICAgICAgcmVzdWx0Ll9yb290ID0gdGhpcy5fcm9vdDtcclxuICAgICAgICByZXN1bHQuX3NpemUgPSB0aGlzLl9zaXplO1xyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9O1xyXG4gICAgLyoqIFBlcmZvcm1zIGEgZ3JlZWR5IGNsb25lLCBpbW1lZGlhdGVseSBkdXBsaWNhdGluZyBhbnkgbm9kZXMgdGhhdCBhcmVcclxuICAgICAqICBub3QgY3VycmVudGx5IG1hcmtlZCBhcyBzaGFyZWQsIGluIG9yZGVyIHRvIGF2b2lkIG1hcmtpbmcgYW55XHJcbiAgICAgKiAgYWRkaXRpb25hbCBub2RlcyBhcyBzaGFyZWQuXHJcbiAgICAgKiAgQHBhcmFtIGZvcmNlIENsb25lIGFsbCBub2RlcywgZXZlbiBzaGFyZWQgb25lcy5cclxuICAgICAqL1xyXG4gICAgQlRyZWUucHJvdG90eXBlLmdyZWVkeUNsb25lID0gZnVuY3Rpb24gKGZvcmNlKSB7XHJcbiAgICAgICAgdmFyIHJlc3VsdCA9IG5ldyBCVHJlZSh1bmRlZmluZWQsIHRoaXMuX2NvbXBhcmUsIHRoaXMuX21heE5vZGVTaXplKTtcclxuICAgICAgICByZXN1bHQuX3Jvb3QgPSB0aGlzLl9yb290LmdyZWVkeUNsb25lKGZvcmNlKTtcclxuICAgICAgICByZXN1bHQuX3NpemUgPSB0aGlzLl9zaXplO1xyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9O1xyXG4gICAgLyoqIEdldHMgYW4gYXJyYXkgZmlsbGVkIHdpdGggdGhlIGNvbnRlbnRzIG9mIHRoZSB0cmVlLCBzb3J0ZWQgYnkga2V5ICovXHJcbiAgICBCVHJlZS5wcm90b3R5cGUudG9BcnJheSA9IGZ1bmN0aW9uIChtYXhMZW5ndGgpIHtcclxuICAgICAgICBpZiAobWF4TGVuZ3RoID09PSB2b2lkIDApIHsgbWF4TGVuZ3RoID0gMHg3RkZGRkZGRjsgfVxyXG4gICAgICAgIHZhciBtaW4gPSB0aGlzLm1pbktleSgpLCBtYXggPSB0aGlzLm1heEtleSgpO1xyXG4gICAgICAgIGlmIChtaW4gIT09IHVuZGVmaW5lZClcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0UmFuZ2UobWluLCBtYXgsIHRydWUsIG1heExlbmd0aCk7XHJcbiAgICAgICAgcmV0dXJuIFtdO1xyXG4gICAgfTtcclxuICAgIC8qKiBHZXRzIGFuIGFycmF5IG9mIGFsbCBrZXlzLCBzb3J0ZWQgKi9cclxuICAgIEJUcmVlLnByb3RvdHlwZS5rZXlzQXJyYXkgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdmFyIHJlc3VsdHMgPSBbXTtcclxuICAgICAgICB0aGlzLl9yb290LmZvclJhbmdlKHRoaXMubWluS2V5KCksIHRoaXMubWF4S2V5KCksIHRydWUsIGZhbHNlLCB0aGlzLCAwLCBmdW5jdGlvbiAoaywgdikgeyByZXN1bHRzLnB1c2goayk7IH0pO1xyXG4gICAgICAgIHJldHVybiByZXN1bHRzO1xyXG4gICAgfTtcclxuICAgIC8qKiBHZXRzIGFuIGFycmF5IG9mIGFsbCB2YWx1ZXMsIHNvcnRlZCBieSBrZXkgKi9cclxuICAgIEJUcmVlLnByb3RvdHlwZS52YWx1ZXNBcnJheSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB2YXIgcmVzdWx0cyA9IFtdO1xyXG4gICAgICAgIHRoaXMuX3Jvb3QuZm9yUmFuZ2UodGhpcy5taW5LZXkoKSwgdGhpcy5tYXhLZXkoKSwgdHJ1ZSwgZmFsc2UsIHRoaXMsIDAsIGZ1bmN0aW9uIChrLCB2KSB7IHJlc3VsdHMucHVzaCh2KTsgfSk7XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdHM7XHJcbiAgICB9O1xyXG4gICAgLyoqIEdldHMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSB0cmVlJ3MgZGF0YSBiYXNlZCBvbiB0b0FycmF5KCkuICovXHJcbiAgICBCVHJlZS5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudG9BcnJheSgpLnRvU3RyaW5nKCk7XHJcbiAgICB9O1xyXG4gICAgLyoqIFN0b3JlcyBhIGtleS12YWx1ZSBwYWlyIG9ubHkgaWYgdGhlIGtleSBkb2Vzbid0IGFscmVhZHkgZXhpc3QgaW4gdGhlIHRyZWUuXHJcbiAgICAgKiBAcmV0dXJucyB0cnVlIGlmIGEgbmV3IGtleSB3YXMgYWRkZWRcclxuICAgICovXHJcbiAgICBCVHJlZS5wcm90b3R5cGUuc2V0SWZOb3RQcmVzZW50ID0gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXQoa2V5LCB2YWx1ZSwgZmFsc2UpO1xyXG4gICAgfTtcclxuICAgIC8qKiBSZXR1cm5zIHRoZSBuZXh0IHBhaXIgd2hvc2Uga2V5IGlzIGxhcmdlciB0aGFuIHRoZSBzcGVjaWZpZWQga2V5IChvciB1bmRlZmluZWQgaWYgdGhlcmUgaXMgbm9uZSkuXHJcbiAgICAgKiBJZiBrZXkgPT09IHVuZGVmaW5lZCwgdGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBsb3dlc3QgcGFpci5cclxuICAgICAqIEBwYXJhbSBrZXkgVGhlIGtleSB0byBzZWFyY2ggZm9yLlxyXG4gICAgICogQHBhcmFtIHJldXNlZEFycmF5IE9wdGlvbmFsIGFycmF5IHVzZWQgcmVwZWF0ZWRseSB0byBzdG9yZSBrZXktdmFsdWUgcGFpcnMsIHRvXHJcbiAgICAgKiBhdm9pZCBjcmVhdGluZyBhIG5ldyBhcnJheSBvbiBldmVyeSBpdGVyYXRpb24uXHJcbiAgICAgKi9cclxuICAgIEJUcmVlLnByb3RvdHlwZS5uZXh0SGlnaGVyUGFpciA9IGZ1bmN0aW9uIChrZXksIHJldXNlZEFycmF5KSB7XHJcbiAgICAgICAgcmV1c2VkQXJyYXkgPSByZXVzZWRBcnJheSB8fCBbXTtcclxuICAgICAgICBpZiAoa2V5ID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3Jvb3QubWluUGFpcihyZXVzZWRBcnJheSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLl9yb290LmdldFBhaXJPck5leHRIaWdoZXIoa2V5LCB0aGlzLl9jb21wYXJlLCBmYWxzZSwgcmV1c2VkQXJyYXkpO1xyXG4gICAgfTtcclxuICAgIC8qKiBSZXR1cm5zIHRoZSBuZXh0IGtleSBsYXJnZXIgdGhhbiB0aGUgc3BlY2lmaWVkIGtleSwgb3IgdW5kZWZpbmVkIGlmIHRoZXJlIGlzIG5vbmUuXHJcbiAgICAgKiAgQWxzbywgbmV4dEhpZ2hlcktleSh1bmRlZmluZWQpIHJldHVybnMgdGhlIGxvd2VzdCBrZXkuXHJcbiAgICAgKi9cclxuICAgIEJUcmVlLnByb3RvdHlwZS5uZXh0SGlnaGVyS2V5ID0gZnVuY3Rpb24gKGtleSkge1xyXG4gICAgICAgIHZhciBwID0gdGhpcy5uZXh0SGlnaGVyUGFpcihrZXksIFJldXNlZEFycmF5KTtcclxuICAgICAgICByZXR1cm4gcCAmJiBwWzBdO1xyXG4gICAgfTtcclxuICAgIC8qKiBSZXR1cm5zIHRoZSBuZXh0IHBhaXIgd2hvc2Uga2V5IGlzIHNtYWxsZXIgdGhhbiB0aGUgc3BlY2lmaWVkIGtleSAob3IgdW5kZWZpbmVkIGlmIHRoZXJlIGlzIG5vbmUpLlxyXG4gICAgICogIElmIGtleSA9PT0gdW5kZWZpbmVkLCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIGhpZ2hlc3QgcGFpci5cclxuICAgICAqIEBwYXJhbSBrZXkgVGhlIGtleSB0byBzZWFyY2ggZm9yLlxyXG4gICAgICogQHBhcmFtIHJldXNlZEFycmF5IE9wdGlvbmFsIGFycmF5IHVzZWQgcmVwZWF0ZWRseSB0byBzdG9yZSBrZXktdmFsdWUgcGFpcnMsIHRvXHJcbiAgICAgKiAgICAgICAgYXZvaWQgY3JlYXRpbmcgYSBuZXcgYXJyYXkgZWFjaCB0aW1lIHlvdSBjYWxsIHRoaXMgbWV0aG9kLlxyXG4gICAgICovXHJcbiAgICBCVHJlZS5wcm90b3R5cGUubmV4dExvd2VyUGFpciA9IGZ1bmN0aW9uIChrZXksIHJldXNlZEFycmF5KSB7XHJcbiAgICAgICAgcmV1c2VkQXJyYXkgPSByZXVzZWRBcnJheSB8fCBbXTtcclxuICAgICAgICBpZiAoa2V5ID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3Jvb3QubWF4UGFpcihyZXVzZWRBcnJheSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLl9yb290LmdldFBhaXJPck5leHRMb3dlcihrZXksIHRoaXMuX2NvbXBhcmUsIGZhbHNlLCByZXVzZWRBcnJheSk7XHJcbiAgICB9O1xyXG4gICAgLyoqIFJldHVybnMgdGhlIG5leHQga2V5IHNtYWxsZXIgdGhhbiB0aGUgc3BlY2lmaWVkIGtleSwgb3IgdW5kZWZpbmVkIGlmIHRoZXJlIGlzIG5vbmUuXHJcbiAgICAgKiAgQWxzbywgbmV4dExvd2VyS2V5KHVuZGVmaW5lZCkgcmV0dXJucyB0aGUgaGlnaGVzdCBrZXkuXHJcbiAgICAgKi9cclxuICAgIEJUcmVlLnByb3RvdHlwZS5uZXh0TG93ZXJLZXkgPSBmdW5jdGlvbiAoa2V5KSB7XHJcbiAgICAgICAgdmFyIHAgPSB0aGlzLm5leHRMb3dlclBhaXIoa2V5LCBSZXVzZWRBcnJheSk7XHJcbiAgICAgICAgcmV0dXJuIHAgJiYgcFswXTtcclxuICAgIH07XHJcbiAgICAvKiogUmV0dXJucyB0aGUga2V5LXZhbHVlIHBhaXIgYXNzb2NpYXRlZCB3aXRoIHRoZSBzdXBwbGllZCBrZXkgaWYgaXQgZXhpc3RzXHJcbiAgICAgKiAgb3IgdGhlIHBhaXIgYXNzb2NpYXRlZCB3aXRoIHRoZSBuZXh0IGxvd2VyIHBhaXIgb3RoZXJ3aXNlLiBJZiB0aGVyZSBpcyBub1xyXG4gICAgICogIG5leHQgbG93ZXIgcGFpciwgdW5kZWZpbmVkIGlzIHJldHVybmVkLlxyXG4gICAgICogQHBhcmFtIGtleSBUaGUga2V5IHRvIHNlYXJjaCBmb3IuXHJcbiAgICAgKiBAcGFyYW0gcmV1c2VkQXJyYXkgT3B0aW9uYWwgYXJyYXkgdXNlZCByZXBlYXRlZGx5IHRvIHN0b3JlIGtleS12YWx1ZSBwYWlycywgdG9cclxuICAgICAqICAgICAgICBhdm9pZCBjcmVhdGluZyBhIG5ldyBhcnJheSBlYWNoIHRpbWUgeW91IGNhbGwgdGhpcyBtZXRob2QuXHJcbiAgICAgKiAqL1xyXG4gICAgQlRyZWUucHJvdG90eXBlLmdldFBhaXJPck5leHRMb3dlciA9IGZ1bmN0aW9uIChrZXksIHJldXNlZEFycmF5KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jvb3QuZ2V0UGFpck9yTmV4dExvd2VyKGtleSwgdGhpcy5fY29tcGFyZSwgdHJ1ZSwgcmV1c2VkQXJyYXkgfHwgW10pO1xyXG4gICAgfTtcclxuICAgIC8qKiBSZXR1cm5zIHRoZSBrZXktdmFsdWUgcGFpciBhc3NvY2lhdGVkIHdpdGggdGhlIHN1cHBsaWVkIGtleSBpZiBpdCBleGlzdHNcclxuICAgICAqICBvciB0aGUgcGFpciBhc3NvY2lhdGVkIHdpdGggdGhlIG5leHQgbG93ZXIgcGFpciBvdGhlcndpc2UuIElmIHRoZXJlIGlzIG5vXHJcbiAgICAgKiAgbmV4dCBsb3dlciBwYWlyLCB1bmRlZmluZWQgaXMgcmV0dXJuZWQuXHJcbiAgICAgKiBAcGFyYW0ga2V5IFRoZSBrZXkgdG8gc2VhcmNoIGZvci5cclxuICAgICAqIEBwYXJhbSByZXVzZWRBcnJheSBPcHRpb25hbCBhcnJheSB1c2VkIHJlcGVhdGVkbHkgdG8gc3RvcmUga2V5LXZhbHVlIHBhaXJzLCB0b1xyXG4gICAgICogICAgICAgIGF2b2lkIGNyZWF0aW5nIGEgbmV3IGFycmF5IGVhY2ggdGltZSB5b3UgY2FsbCB0aGlzIG1ldGhvZC5cclxuICAgICAqICovXHJcbiAgICBCVHJlZS5wcm90b3R5cGUuZ2V0UGFpck9yTmV4dEhpZ2hlciA9IGZ1bmN0aW9uIChrZXksIHJldXNlZEFycmF5KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jvb3QuZ2V0UGFpck9yTmV4dEhpZ2hlcihrZXksIHRoaXMuX2NvbXBhcmUsIHRydWUsIHJldXNlZEFycmF5IHx8IFtdKTtcclxuICAgIH07XHJcbiAgICAvKiogRWRpdHMgdGhlIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCBhIGtleSBpbiB0aGUgdHJlZSwgaWYgaXQgYWxyZWFkeSBleGlzdHMuXHJcbiAgICAgKiBAcmV0dXJucyB0cnVlIGlmIHRoZSBrZXkgZXhpc3RlZCwgZmFsc2UgaWYgbm90LlxyXG4gICAgKi9cclxuICAgIEJUcmVlLnByb3RvdHlwZS5jaGFuZ2VJZlByZXNlbnQgPSBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmVkaXRSYW5nZShrZXksIGtleSwgdHJ1ZSwgZnVuY3Rpb24gKGssIHYpIHsgcmV0dXJuICh7IHZhbHVlOiB2YWx1ZSB9KTsgfSkgIT09IDA7XHJcbiAgICB9O1xyXG4gICAgLyoqXHJcbiAgICAgKiBCdWlsZHMgYW4gYXJyYXkgb2YgcGFpcnMgZnJvbSB0aGUgc3BlY2lmaWVkIHJhbmdlIG9mIGtleXMsIHNvcnRlZCBieSBrZXkuXHJcbiAgICAgKiBFYWNoIHJldHVybmVkIHBhaXIgaXMgYWxzbyBhbiBhcnJheTogcGFpclswXSBpcyB0aGUga2V5LCBwYWlyWzFdIGlzIHRoZSB2YWx1ZS5cclxuICAgICAqIEBwYXJhbSBsb3cgVGhlIGZpcnN0IGtleSBpbiB0aGUgYXJyYXkgd2lsbCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gYGxvd2AuXHJcbiAgICAgKiBAcGFyYW0gaGlnaCBUaGlzIG1ldGhvZCByZXR1cm5zIHdoZW4gYSBrZXkgbGFyZ2VyIHRoYW4gdGhpcyBpcyByZWFjaGVkLlxyXG4gICAgICogQHBhcmFtIGluY2x1ZGVIaWdoIElmIHRoZSBgaGlnaGAga2V5IGlzIHByZXNlbnQsIGl0cyBwYWlyIHdpbGwgYmUgaW5jbHVkZWRcclxuICAgICAqICAgICAgICBpbiB0aGUgb3V0cHV0IGlmIGFuZCBvbmx5IGlmIHRoaXMgcGFyYW1ldGVyIGlzIHRydWUuIE5vdGU6IGlmIHRoZVxyXG4gICAgICogICAgICAgIGBsb3dgIGtleSBpcyBwcmVzZW50LCBpdCBpcyBhbHdheXMgaW5jbHVkZWQgaW4gdGhlIG91dHB1dC5cclxuICAgICAqIEBwYXJhbSBtYXhMZW5ndGggTGVuZ3RoIGxpbWl0LiBnZXRSYW5nZSB3aWxsIHN0b3Agc2Nhbm5pbmcgdGhlIHRyZWUgd2hlblxyXG4gICAgICogICAgICAgICAgICAgICAgICB0aGUgYXJyYXkgcmVhY2hlcyB0aGlzIHNpemUuXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gQ29tcHV0YXRpb25hbCBjb21wbGV4aXR5OiBPKHJlc3VsdC5sZW5ndGggKyBsb2cgc2l6ZSlcclxuICAgICAqL1xyXG4gICAgQlRyZWUucHJvdG90eXBlLmdldFJhbmdlID0gZnVuY3Rpb24gKGxvdywgaGlnaCwgaW5jbHVkZUhpZ2gsIG1heExlbmd0aCkge1xyXG4gICAgICAgIGlmIChtYXhMZW5ndGggPT09IHZvaWQgMCkgeyBtYXhMZW5ndGggPSAweDNGRkZGRkY7IH1cclxuICAgICAgICB2YXIgcmVzdWx0cyA9IFtdO1xyXG4gICAgICAgIHRoaXMuX3Jvb3QuZm9yUmFuZ2UobG93LCBoaWdoLCBpbmNsdWRlSGlnaCwgZmFsc2UsIHRoaXMsIDAsIGZ1bmN0aW9uIChrLCB2KSB7XHJcbiAgICAgICAgICAgIHJlc3VsdHMucHVzaChbaywgdl0pO1xyXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0cy5sZW5ndGggPiBtYXhMZW5ndGggPyBCcmVhayA6IHVuZGVmaW5lZDtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gcmVzdWx0cztcclxuICAgIH07XHJcbiAgICAvKiogQWRkcyBhbGwgcGFpcnMgZnJvbSBhIGxpc3Qgb2Yga2V5LXZhbHVlIHBhaXJzLlxyXG4gICAgICogQHBhcmFtIHBhaXJzIFBhaXJzIHRvIGFkZCB0byB0aGlzIHRyZWUuIElmIHRoZXJlIGFyZSBkdXBsaWNhdGUga2V5cyxcclxuICAgICAqICAgICAgICBsYXRlciBwYWlycyBjdXJyZW50bHkgb3ZlcndyaXRlIGVhcmxpZXIgb25lcyAoZS5nLiBbWzAsMV0sWzAsN11dXHJcbiAgICAgKiAgICAgICAgYXNzb2NpYXRlcyAwIHdpdGggNy4pXHJcbiAgICAgKiBAcGFyYW0gb3ZlcndyaXRlIFdoZXRoZXIgdG8gb3ZlcndyaXRlIHBhaXJzIHRoYXQgYWxyZWFkeSBleGlzdCAoaWYgZmFsc2UsXHJcbiAgICAgKiAgICAgICAgcGFpcnNbaV0gaXMgaWdub3JlZCB3aGVuIHRoZSBrZXkgcGFpcnNbaV1bMF0gYWxyZWFkeSBleGlzdHMuKVxyXG4gICAgICogQHJldHVybnMgVGhlIG51bWJlciBvZiBwYWlycyBhZGRlZCB0byB0aGUgY29sbGVjdGlvbi5cclxuICAgICAqIEBkZXNjcmlwdGlvbiBDb21wdXRhdGlvbmFsIGNvbXBsZXhpdHk6IE8ocGFpcnMubGVuZ3RoICogbG9nKHNpemUgKyBwYWlycy5sZW5ndGgpKVxyXG4gICAgICovXHJcbiAgICBCVHJlZS5wcm90b3R5cGUuc2V0UGFpcnMgPSBmdW5jdGlvbiAocGFpcnMsIG92ZXJ3cml0ZSkge1xyXG4gICAgICAgIHZhciBhZGRlZCA9IDA7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYWlycy5sZW5ndGg7IGkrKylcclxuICAgICAgICAgICAgaWYgKHRoaXMuc2V0KHBhaXJzW2ldWzBdLCBwYWlyc1tpXVsxXSwgb3ZlcndyaXRlKSlcclxuICAgICAgICAgICAgICAgIGFkZGVkKys7XHJcbiAgICAgICAgcmV0dXJuIGFkZGVkO1xyXG4gICAgfTtcclxuICAgIC8qKlxyXG4gICAgICogU2NhbnMgdGhlIHNwZWNpZmllZCByYW5nZSBvZiBrZXlzLCBpbiBhc2NlbmRpbmcgb3JkZXIgYnkga2V5LlxyXG4gICAgICogTm90ZTogdGhlIGNhbGxiYWNrIGBvbkZvdW5kYCBtdXN0IG5vdCBpbnNlcnQgb3IgcmVtb3ZlIGl0ZW1zIGluIHRoZVxyXG4gICAgICogY29sbGVjdGlvbi4gRG9pbmcgc28gbWF5IGNhdXNlIGluY29ycmVjdCBkYXRhIHRvIGJlIHNlbnQgdG8gdGhlXHJcbiAgICAgKiBjYWxsYmFjayBhZnRlcndhcmQuXHJcbiAgICAgKiBAcGFyYW0gbG93IFRoZSBmaXJzdCBrZXkgc2Nhbm5lZCB3aWxsIGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBgbG93YC5cclxuICAgICAqIEBwYXJhbSBoaWdoIFNjYW5uaW5nIHN0b3BzIHdoZW4gYSBrZXkgbGFyZ2VyIHRoYW4gdGhpcyBpcyByZWFjaGVkLlxyXG4gICAgICogQHBhcmFtIGluY2x1ZGVIaWdoIElmIHRoZSBgaGlnaGAga2V5IGlzIHByZXNlbnQsIGBvbkZvdW5kYCBpcyBjYWxsZWQgZm9yXHJcbiAgICAgKiAgICAgICAgdGhhdCBmaW5hbCBwYWlyIGlmIGFuZCBvbmx5IGlmIHRoaXMgcGFyYW1ldGVyIGlzIHRydWUuXHJcbiAgICAgKiBAcGFyYW0gb25Gb3VuZCBBIGZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIGZvciBlYWNoIGtleS12YWx1ZSBwYWlyLiBUaGlzXHJcbiAgICAgKiAgICAgICAgZnVuY3Rpb24gY2FuIHJldHVybiB7YnJlYWs6Un0gdG8gc3RvcCBlYXJseSB3aXRoIHJlc3VsdCBSLlxyXG4gICAgICogQHBhcmFtIGluaXRpYWxDb3VudGVyIEluaXRpYWwgdGhpcmQgYXJndW1lbnQgb2Ygb25Gb3VuZC4gVGhpcyB2YWx1ZVxyXG4gICAgICogICAgICAgIGluY3JlYXNlcyBieSBvbmUgZWFjaCB0aW1lIGBvbkZvdW5kYCBpcyBjYWxsZWQuIERlZmF1bHQ6IDBcclxuICAgICAqIEByZXR1cm5zIFRoZSBudW1iZXIgb2YgdmFsdWVzIGZvdW5kLCBvciBSIGlmIHRoZSBjYWxsYmFjayByZXR1cm5lZFxyXG4gICAgICogICAgICAgIGB7YnJlYWs6Un1gIHRvIHN0b3AgZWFybHkuXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gQ29tcHV0YXRpb25hbCBjb21wbGV4aXR5OiBPKG51bWJlciBvZiBpdGVtcyBzY2FubmVkICsgbG9nIHNpemUpXHJcbiAgICAgKi9cclxuICAgIEJUcmVlLnByb3RvdHlwZS5mb3JSYW5nZSA9IGZ1bmN0aW9uIChsb3csIGhpZ2gsIGluY2x1ZGVIaWdoLCBvbkZvdW5kLCBpbml0aWFsQ291bnRlcikge1xyXG4gICAgICAgIHZhciByID0gdGhpcy5fcm9vdC5mb3JSYW5nZShsb3csIGhpZ2gsIGluY2x1ZGVIaWdoLCBmYWxzZSwgdGhpcywgaW5pdGlhbENvdW50ZXIgfHwgMCwgb25Gb3VuZCk7XHJcbiAgICAgICAgcmV0dXJuIHR5cGVvZiByID09PSBcIm51bWJlclwiID8gciA6IHIuYnJlYWs7XHJcbiAgICB9O1xyXG4gICAgLyoqXHJcbiAgICAgKiBTY2FucyBhbmQgcG90ZW50aWFsbHkgbW9kaWZpZXMgdmFsdWVzIGZvciBhIHN1YnNlcXVlbmNlIG9mIGtleXMuXHJcbiAgICAgKiBOb3RlOiB0aGUgY2FsbGJhY2sgYG9uRm91bmRgIHNob3VsZCBpZGVhbGx5IGJlIGEgcHVyZSBmdW5jdGlvbi5cclxuICAgICAqICAgU3BlY2ZpY2FsbHksIGl0IG11c3Qgbm90IGluc2VydCBpdGVtcywgY2FsbCBjbG9uZSgpLCBvciBjaGFuZ2VcclxuICAgICAqICAgdGhlIGNvbGxlY3Rpb24gZXhjZXB0IHZpYSByZXR1cm4gdmFsdWU7IG91dC1vZi1iYW5kIGVkaXRpbmcgbWF5XHJcbiAgICAgKiAgIGNhdXNlIGFuIGV4Y2VwdGlvbiBvciBtYXkgY2F1c2UgaW5jb3JyZWN0IGRhdGEgdG8gYmUgc2VudCB0b1xyXG4gICAgICogICB0aGUgY2FsbGJhY2sgKGR1cGxpY2F0ZSBvciBtaXNzZWQgaXRlbXMpLiBJdCBtdXN0IG5vdCBjYXVzZSBhXHJcbiAgICAgKiAgIGNsb25lKCkgb2YgdGhlIGNvbGxlY3Rpb24sIG90aGVyd2lzZSB0aGUgY2xvbmUgY291bGQgYmUgbW9kaWZpZWRcclxuICAgICAqICAgYnkgY2hhbmdlcyByZXF1ZXN0ZWQgYnkgdGhlIGNhbGxiYWNrLlxyXG4gICAgICogQHBhcmFtIGxvdyBUaGUgZmlyc3Qga2V5IHNjYW5uZWQgd2lsbCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gYGxvd2AuXHJcbiAgICAgKiBAcGFyYW0gaGlnaCBTY2FubmluZyBzdG9wcyB3aGVuIGEga2V5IGxhcmdlciB0aGFuIHRoaXMgaXMgcmVhY2hlZC5cclxuICAgICAqIEBwYXJhbSBpbmNsdWRlSGlnaCBJZiB0aGUgYGhpZ2hgIGtleSBpcyBwcmVzZW50LCBgb25Gb3VuZGAgaXMgY2FsbGVkIGZvclxyXG4gICAgICogICAgICAgIHRoYXQgZmluYWwgcGFpciBpZiBhbmQgb25seSBpZiB0aGlzIHBhcmFtZXRlciBpcyB0cnVlLlxyXG4gICAgICogQHBhcmFtIG9uRm91bmQgQSBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCBmb3IgZWFjaCBrZXktdmFsdWUgcGFpci4gVGhpc1xyXG4gICAgICogICAgICAgIGZ1bmN0aW9uIGNhbiByZXR1cm4gYHt2YWx1ZTp2fWAgdG8gY2hhbmdlIHRoZSB2YWx1ZSBhc3NvY2lhdGVkXHJcbiAgICAgKiAgICAgICAgd2l0aCB0aGUgY3VycmVudCBrZXksIGB7ZGVsZXRlOnRydWV9YCB0byBkZWxldGUgdGhlIGN1cnJlbnQgcGFpcixcclxuICAgICAqICAgICAgICBge2JyZWFrOlJ9YCB0byBzdG9wIGVhcmx5IHdpdGggcmVzdWx0IFIsIG9yIGl0IGNhbiByZXR1cm4gbm90aGluZ1xyXG4gICAgICogICAgICAgICh1bmRlZmluZWQgb3Ige30pIHRvIGNhdXNlIG5vIGVmZmVjdCBhbmQgY29udGludWUgaXRlcmF0aW5nLlxyXG4gICAgICogICAgICAgIGB7YnJlYWs6Un1gIGNhbiBiZSBjb21iaW5lZCB3aXRoIG9uZSBvZiB0aGUgb3RoZXIgdHdvIGNvbW1hbmRzLlxyXG4gICAgICogICAgICAgIFRoZSB0aGlyZCBhcmd1bWVudCBgY291bnRlcmAgaXMgdGhlIG51bWJlciBvZiBpdGVtcyBpdGVyYXRlZFxyXG4gICAgICogICAgICAgIHByZXZpb3VzbHk7IGl0IGVxdWFscyAwIHdoZW4gYG9uRm91bmRgIGlzIGNhbGxlZCB0aGUgZmlyc3QgdGltZS5cclxuICAgICAqIEByZXR1cm5zIFRoZSBudW1iZXIgb2YgdmFsdWVzIHNjYW5uZWQsIG9yIFIgaWYgdGhlIGNhbGxiYWNrIHJldHVybmVkXHJcbiAgICAgKiAgICAgICAgYHticmVhazpSfWAgdG8gc3RvcCBlYXJseS5cclxuICAgICAqIEBkZXNjcmlwdGlvblxyXG4gICAgICogICBDb21wdXRhdGlvbmFsIGNvbXBsZXhpdHk6IE8obnVtYmVyIG9mIGl0ZW1zIHNjYW5uZWQgKyBsb2cgc2l6ZSlcclxuICAgICAqICAgTm90ZTogaWYgdGhlIHRyZWUgaGFzIGJlZW4gY2xvbmVkIHdpdGggY2xvbmUoKSwgYW55IHNoYXJlZFxyXG4gICAgICogICBub2RlcyBhcmUgY29waWVkIGJlZm9yZSBgb25Gb3VuZGAgaXMgY2FsbGVkLiBUaGlzIHRha2VzIE8obikgdGltZVxyXG4gICAgICogICB3aGVyZSBuIGlzIHByb3BvcnRpb25hbCB0byB0aGUgYW1vdW50IG9mIHNoYXJlZCBkYXRhIHNjYW5uZWQuXHJcbiAgICAgKi9cclxuICAgIEJUcmVlLnByb3RvdHlwZS5lZGl0UmFuZ2UgPSBmdW5jdGlvbiAobG93LCBoaWdoLCBpbmNsdWRlSGlnaCwgb25Gb3VuZCwgaW5pdGlhbENvdW50ZXIpIHtcclxuICAgICAgICB2YXIgcm9vdCA9IHRoaXMuX3Jvb3Q7XHJcbiAgICAgICAgaWYgKHJvb3QuaXNTaGFyZWQpXHJcbiAgICAgICAgICAgIHRoaXMuX3Jvb3QgPSByb290ID0gcm9vdC5jbG9uZSgpO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHZhciByID0gcm9vdC5mb3JSYW5nZShsb3csIGhpZ2gsIGluY2x1ZGVIaWdoLCB0cnVlLCB0aGlzLCBpbml0aWFsQ291bnRlciB8fCAwLCBvbkZvdW5kKTtcclxuICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiByID09PSBcIm51bWJlclwiID8gciA6IHIuYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZpbmFsbHkge1xyXG4gICAgICAgICAgICB2YXIgaXNTaGFyZWQgPSB2b2lkIDA7XHJcbiAgICAgICAgICAgIHdoaWxlIChyb290LmtleXMubGVuZ3RoIDw9IDEgJiYgIXJvb3QuaXNMZWFmKSB7XHJcbiAgICAgICAgICAgICAgICBpc1NoYXJlZCB8fCAoaXNTaGFyZWQgPSByb290LmlzU2hhcmVkKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3Jvb3QgPSByb290ID0gcm9vdC5rZXlzLmxlbmd0aCA9PT0gMCA/IEVtcHR5TGVhZiA6XHJcbiAgICAgICAgICAgICAgICAgICAgcm9vdC5jaGlsZHJlblswXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBJZiBhbnkgYW5jZXN0b3Igb2YgdGhlIG5ldyByb290IHdhcyBzaGFyZWQsIHRoZSBuZXcgcm9vdCBtdXN0IGFsc28gYmUgc2hhcmVkXHJcbiAgICAgICAgICAgIGlmIChpc1NoYXJlZCkge1xyXG4gICAgICAgICAgICAgICAgcm9vdC5pc1NoYXJlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgLyoqIFNhbWUgYXMgYGVkaXRSYW5nZWAgZXhjZXB0IHRoYXQgdGhlIGNhbGxiYWNrIGlzIGNhbGxlZCBmb3IgYWxsIHBhaXJzLiAqL1xyXG4gICAgQlRyZWUucHJvdG90eXBlLmVkaXRBbGwgPSBmdW5jdGlvbiAob25Gb3VuZCwgaW5pdGlhbENvdW50ZXIpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5lZGl0UmFuZ2UodGhpcy5taW5LZXkoKSwgdGhpcy5tYXhLZXkoKSwgdHJ1ZSwgb25Gb3VuZCwgaW5pdGlhbENvdW50ZXIpO1xyXG4gICAgfTtcclxuICAgIC8qKlxyXG4gICAgICogUmVtb3ZlcyBhIHJhbmdlIG9mIGtleS12YWx1ZSBwYWlycyBmcm9tIHRoZSBCKyB0cmVlLlxyXG4gICAgICogQHBhcmFtIGxvdyBUaGUgZmlyc3Qga2V5IHNjYW5uZWQgd2lsbCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gYGxvd2AuXHJcbiAgICAgKiBAcGFyYW0gaGlnaCBTY2FubmluZyBzdG9wcyB3aGVuIGEga2V5IGxhcmdlciB0aGFuIHRoaXMgaXMgcmVhY2hlZC5cclxuICAgICAqIEBwYXJhbSBpbmNsdWRlSGlnaCBTcGVjaWZpZXMgd2hldGhlciB0aGUgYGhpZ2hgIGtleSwgaWYgcHJlc2VudCwgaXMgZGVsZXRlZC5cclxuICAgICAqIEByZXR1cm5zIFRoZSBudW1iZXIgb2Yga2V5LXZhbHVlIHBhaXJzIHRoYXQgd2VyZSBkZWxldGVkLlxyXG4gICAgICogQGRlc2NyaXB0aW9uIENvbXB1dGF0aW9uYWwgY29tcGxleGl0eTogTyhsb2cgc2l6ZSArIG51bWJlciBvZiBpdGVtcyBkZWxldGVkKVxyXG4gICAgICovXHJcbiAgICBCVHJlZS5wcm90b3R5cGUuZGVsZXRlUmFuZ2UgPSBmdW5jdGlvbiAobG93LCBoaWdoLCBpbmNsdWRlSGlnaCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmVkaXRSYW5nZShsb3csIGhpZ2gsIGluY2x1ZGVIaWdoLCBEZWxldGVSYW5nZSk7XHJcbiAgICB9O1xyXG4gICAgLyoqIERlbGV0ZXMgYSBzZXJpZXMgb2Yga2V5cyBmcm9tIHRoZSBjb2xsZWN0aW9uLiAqL1xyXG4gICAgQlRyZWUucHJvdG90eXBlLmRlbGV0ZUtleXMgPSBmdW5jdGlvbiAoa2V5cykge1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCByID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspXHJcbiAgICAgICAgICAgIGlmICh0aGlzLmRlbGV0ZShrZXlzW2ldKSlcclxuICAgICAgICAgICAgICAgIHIrKztcclxuICAgICAgICByZXR1cm4gcjtcclxuICAgIH07XHJcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoQlRyZWUucHJvdG90eXBlLCBcImhlaWdodFwiLCB7XHJcbiAgICAgICAgLyoqIEdldHMgdGhlIGhlaWdodCBvZiB0aGUgdHJlZTogdGhlIG51bWJlciBvZiBpbnRlcm5hbCBub2RlcyBiZXR3ZWVuIHRoZVxyXG4gICAgICAgICAqICBCVHJlZSBvYmplY3QgYW5kIGl0cyBsZWFmIG5vZGVzICh6ZXJvIGlmIHRoZXJlIGFyZSBubyBpbnRlcm5hbCBub2RlcykuICovXHJcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIHZhciBub2RlID0gdGhpcy5fcm9vdDtcclxuICAgICAgICAgICAgdmFyIGhlaWdodCA9IC0xO1xyXG4gICAgICAgICAgICB3aGlsZSAobm9kZSkge1xyXG4gICAgICAgICAgICAgICAgaGVpZ2h0Kys7XHJcbiAgICAgICAgICAgICAgICBub2RlID0gbm9kZS5pc0xlYWYgPyB1bmRlZmluZWQgOiBub2RlLmNoaWxkcmVuWzBdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBoZWlnaHQ7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcclxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcclxuICAgIH0pO1xyXG4gICAgLyoqIE1ha2VzIHRoZSBvYmplY3QgcmVhZC1vbmx5IHRvIGVuc3VyZSBpdCBpcyBub3QgYWNjaWRlbnRhbGx5IG1vZGlmaWVkLlxyXG4gICAgICogIEZyZWV6aW5nIGRvZXMgbm90IGhhdmUgdG8gYmUgcGVybWFuZW50OyB1bmZyZWV6ZSgpIHJldmVyc2VzIHRoZSBlZmZlY3QuXHJcbiAgICAgKiAgVGhpcyBpcyBhY2NvbXBsaXNoZWQgYnkgcmVwbGFjaW5nIG11dGF0b3IgZnVuY3Rpb25zIHdpdGggYSBmdW5jdGlvblxyXG4gICAgICogIHRoYXQgdGhyb3dzIGFuIEVycm9yLiBDb21wYXJlZCB0byB1c2luZyBhIHByb3BlcnR5IChlLmcuIHRoaXMuaXNGcm96ZW4pXHJcbiAgICAgKiAgdGhpcyBpbXBsZW1lbnRhdGlvbiBnaXZlcyBiZXR0ZXIgcGVyZm9ybWFuY2UgaW4gbm9uLWZyb3plbiBCVHJlZXMuXHJcbiAgICAgKi9cclxuICAgIEJUcmVlLnByb3RvdHlwZS5mcmVlemUgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdmFyIHQgPSB0aGlzO1xyXG4gICAgICAgIC8vIE5vdGU6IGFsbCBvdGhlciBtdXRhdG9ycyB1bHRpbWF0ZWx5IGNhbGwgc2V0KCkgb3IgZWRpdFJhbmdlKCkgXHJcbiAgICAgICAgLy8gICAgICAgc28gd2UgZG9uJ3QgbmVlZCB0byBvdmVycmlkZSB0aG9zZSBvdGhlcnMuXHJcbiAgICAgICAgdC5jbGVhciA9IHQuc2V0ID0gdC5lZGl0UmFuZ2UgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkF0dGVtcHRlZCB0byBtb2RpZnkgYSBmcm96ZW4gQlRyZWVcIik7XHJcbiAgICAgICAgfTtcclxuICAgIH07XHJcbiAgICAvKiogRW5zdXJlcyBtdXRhdGlvbnMgYXJlIGFsbG93ZWQsIHJldmVyc2luZyB0aGUgZWZmZWN0IG9mIGZyZWV6ZSgpLiAqL1xyXG4gICAgQlRyZWUucHJvdG90eXBlLnVuZnJlZXplID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIC8vIEB0cy1pZ25vcmUgXCJUaGUgb3BlcmFuZCBvZiBhICdkZWxldGUnIG9wZXJhdG9yIG11c3QgYmUgb3B0aW9uYWwuXCJcclxuICAgICAgICAvLyAgICAgICAgICAgICh3cm9uZzogZGVsZXRlIGRvZXMgbm90IGFmZmVjdCB0aGUgcHJvdG90eXBlLilcclxuICAgICAgICBkZWxldGUgdGhpcy5jbGVhcjtcclxuICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgZGVsZXRlIHRoaXMuc2V0O1xyXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICBkZWxldGUgdGhpcy5lZGl0UmFuZ2U7XHJcbiAgICB9O1xyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEJUcmVlLnByb3RvdHlwZSwgXCJpc0Zyb3plblwiLCB7XHJcbiAgICAgICAgLyoqIFJldHVybnMgdHJ1ZSBpZiB0aGUgdHJlZSBhcHBlYXJzIHRvIGJlIGZyb3plbi4gKi9cclxuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaGFzT3duUHJvcGVydHkoJ2VkaXRSYW5nZScpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXHJcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXHJcbiAgICB9KTtcclxuICAgIC8qKiBTY2FucyB0aGUgdHJlZSBmb3Igc2lnbnMgb2Ygc2VyaW91cyBidWdzIChlLmcuIHRoaXMuc2l6ZSBkb2Vzbid0IG1hdGNoXHJcbiAgICAgKiAgbnVtYmVyIG9mIGVsZW1lbnRzLCBpbnRlcm5hbCBub2RlcyBub3QgY2FjaGluZyBtYXggZWxlbWVudCBwcm9wZXJseS4uLilcclxuICAgICAqICBDb21wdXRhdGlvbmFsIGNvbXBsZXhpdHk6IE8obnVtYmVyIG9mIG5vZGVzKSwgaS5lLiBPKHNpemUpLiBUaGlzIG1ldGhvZFxyXG4gICAgICogIHNraXBzIHRoZSBtb3N0IGV4cGVuc2l2ZSB0ZXN0IC0gd2hldGhlciBhbGwga2V5cyBhcmUgc29ydGVkIC0gYnV0IGl0XHJcbiAgICAgKiAgZG9lcyBjaGVjayB0aGF0IG1heEtleSgpIG9mIHRoZSBjaGlsZHJlbiBvZiBpbnRlcm5hbCBub2RlcyBhcmUgc29ydGVkLiAqL1xyXG4gICAgQlRyZWUucHJvdG90eXBlLmNoZWNrVmFsaWQgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdmFyIHNpemUgPSB0aGlzLl9yb290LmNoZWNrVmFsaWQoMCwgdGhpcywgMCk7XHJcbiAgICAgICAgY2hlY2soc2l6ZSA9PT0gdGhpcy5zaXplLCBcInNpemUgbWlzbWF0Y2g6IGNvdW50ZWQgXCIsIHNpemUsIFwiYnV0IHN0b3JlZFwiLCB0aGlzLnNpemUpO1xyXG4gICAgfTtcclxuICAgIHJldHVybiBCVHJlZTtcclxufSgpKTtcclxuZXhwb3J0cy5kZWZhdWx0ID0gQlRyZWU7XHJcbi8qKiBBIFR5cGVTY3JpcHQgaGVscGVyIGZ1bmN0aW9uIHRoYXQgc2ltcGx5IHJldHVybnMgaXRzIGFyZ3VtZW50LCB0eXBlZCBhc1xyXG4gKiAgYElTb3J0ZWRTZXQ8Sz5gIGlmIHRoZSBCVHJlZSBpbXBsZW1lbnRzIGl0LCBhcyBpdCBkb2VzIGlmIGBWIGV4dGVuZHMgdW5kZWZpbmVkYC5cclxuICogIElmIGBWYCBjYW5ub3QgYmUgYHVuZGVmaW5lZGAsIGl0IHJldHVybnMgYHVua25vd25gIGluc3RlYWQuIE9yIGF0IGxlYXN0LCB0aGF0XHJcbiAqICB3YXMgdGhlIGludGVudGlvbiwgYnV0IFR5cGVTY3JpcHQgaXMgYWN0aW5nIHdlaXJkIGFuZCBtYXkgcmV0dXJuIGBJU29ydGVkU2V0PEs+YFxyXG4gKiAgZXZlbiBpZiBgVmAgY2FuJ3QgYmUgYHVuZGVmaW5lZGAgKGRpc2N1c3Npb246IGJ0cmVlLXR5cGVzY3JpcHQgaXNzdWUgIzE0KSAqL1xyXG5mdW5jdGlvbiBhc1NldChidHJlZSkge1xyXG4gICAgcmV0dXJuIGJ0cmVlO1xyXG59XHJcbmV4cG9ydHMuYXNTZXQgPSBhc1NldDtcclxuaWYgKFN5bWJvbCAmJiBTeW1ib2wuaXRlcmF0b3IpIC8vIGl0ZXJhdG9yIGlzIGVxdWl2YWxlbnQgdG8gZW50cmllcygpXHJcbiAgICBCVHJlZS5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXSA9IEJUcmVlLnByb3RvdHlwZS5lbnRyaWVzO1xyXG5CVHJlZS5wcm90b3R5cGUud2hlcmUgPSBCVHJlZS5wcm90b3R5cGUuZmlsdGVyO1xyXG5CVHJlZS5wcm90b3R5cGUuc2V0UmFuZ2UgPSBCVHJlZS5wcm90b3R5cGUuc2V0UGFpcnM7XHJcbkJUcmVlLnByb3RvdHlwZS5hZGQgPSBCVHJlZS5wcm90b3R5cGUuc2V0OyAvLyBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIElTZXRTaW5rPEs+XHJcbmZ1bmN0aW9uIGl0ZXJhdG9yKG5leHQpIHtcclxuICAgIGlmIChuZXh0ID09PSB2b2lkIDApIHsgbmV4dCA9IChmdW5jdGlvbiAoKSB7IHJldHVybiAoeyBkb25lOiB0cnVlLCB2YWx1ZTogdW5kZWZpbmVkIH0pOyB9KTsgfVxyXG4gICAgdmFyIHJlc3VsdCA9IHsgbmV4dDogbmV4dCB9O1xyXG4gICAgaWYgKFN5bWJvbCAmJiBTeW1ib2wuaXRlcmF0b3IpXHJcbiAgICAgICAgcmVzdWx0W1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9O1xyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxufVxyXG4vKiogTGVhZiBub2RlIC8gYmFzZSBjbGFzcy4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXHJcbnZhciBCTm9kZSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcclxuICAgIGZ1bmN0aW9uIEJOb2RlKGtleXMsIHZhbHVlcykge1xyXG4gICAgICAgIGlmIChrZXlzID09PSB2b2lkIDApIHsga2V5cyA9IFtdOyB9XHJcbiAgICAgICAgdGhpcy5rZXlzID0ga2V5cztcclxuICAgICAgICB0aGlzLnZhbHVlcyA9IHZhbHVlcyB8fCB1bmRlZlZhbHM7XHJcbiAgICAgICAgdGhpcy5pc1NoYXJlZCA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShCTm9kZS5wcm90b3R5cGUsIFwiaXNMZWFmXCIsIHtcclxuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuY2hpbGRyZW4gPT09IHVuZGVmaW5lZDsgfSxcclxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcclxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcclxuICAgIH0pO1xyXG4gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbiAgICAvLyBTaGFyZWQgbWV0aG9kcyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuICAgIEJOb2RlLnByb3RvdHlwZS5tYXhLZXkgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMua2V5c1t0aGlzLmtleXMubGVuZ3RoIC0gMV07XHJcbiAgICB9O1xyXG4gICAgLy8gSWYga2V5IG5vdCBmb3VuZCwgcmV0dXJucyBpXmZhaWxYb3Igd2hlcmUgaSBpcyB0aGUgaW5zZXJ0aW9uIGluZGV4LlxyXG4gICAgLy8gQ2FsbGVycyB0aGF0IGRvbid0IGNhcmUgd2hldGhlciB0aGVyZSB3YXMgYSBtYXRjaCB3aWxsIHNldCBmYWlsWG9yPTAuXHJcbiAgICBCTm9kZS5wcm90b3R5cGUuaW5kZXhPZiA9IGZ1bmN0aW9uIChrZXksIGZhaWxYb3IsIGNtcCkge1xyXG4gICAgICAgIHZhciBrZXlzID0gdGhpcy5rZXlzO1xyXG4gICAgICAgIHZhciBsbyA9IDAsIGhpID0ga2V5cy5sZW5ndGgsIG1pZCA9IGhpID4+IDE7XHJcbiAgICAgICAgd2hpbGUgKGxvIDwgaGkpIHtcclxuICAgICAgICAgICAgdmFyIGMgPSBjbXAoa2V5c1ttaWRdLCBrZXkpO1xyXG4gICAgICAgICAgICBpZiAoYyA8IDApXHJcbiAgICAgICAgICAgICAgICBsbyA9IG1pZCArIDE7XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGMgPiAwKSAvLyBrZXkgPCBrZXlzW21pZF1cclxuICAgICAgICAgICAgICAgIGhpID0gbWlkO1xyXG4gICAgICAgICAgICBlbHNlIGlmIChjID09PSAwKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG1pZDtcclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvLyBjIGlzIE5hTiBvciBvdGhlcndpc2UgaW52YWxpZFxyXG4gICAgICAgICAgICAgICAgaWYgKGtleSA9PT0ga2V5KSAvLyBhdCBsZWFzdCB0aGUgc2VhcmNoIGtleSBpcyBub3QgTmFOXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGtleXMubGVuZ3RoO1xyXG4gICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkJUcmVlOiBOYU4gd2FzIHVzZWQgYXMgYSBrZXlcIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbWlkID0gKGxvICsgaGkpID4+IDE7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBtaWQgXiBmYWlsWG9yO1xyXG4gICAgICAgIC8vIFVucm9sbGVkIHZlcnNpb246IGJlbmNobWFya3Mgc2hvdyBzYW1lIHNwZWVkLCBub3Qgd29ydGggdXNpbmdcclxuICAgICAgICAvKnZhciBpID0gMSwgYzogbnVtYmVyID0gMCwgc3VtID0gMDtcclxuICAgICAgICBpZiAoa2V5cy5sZW5ndGggPj0gNCkge1xyXG4gICAgICAgICAgaSA9IDM7XHJcbiAgICAgICAgICBpZiAoa2V5cy5sZW5ndGggPj0gOCkge1xyXG4gICAgICAgICAgICBpID0gNztcclxuICAgICAgICAgICAgaWYgKGtleXMubGVuZ3RoID49IDE2KSB7XHJcbiAgICAgICAgICAgICAgaSA9IDE1O1xyXG4gICAgICAgICAgICAgIGlmIChrZXlzLmxlbmd0aCA+PSAzMikge1xyXG4gICAgICAgICAgICAgICAgaSA9IDMxO1xyXG4gICAgICAgICAgICAgICAgaWYgKGtleXMubGVuZ3RoID49IDY0KSB7XHJcbiAgICAgICAgICAgICAgICAgIGkgPSAxMjc7XHJcbiAgICAgICAgICAgICAgICAgIGkgKz0gKGMgPSBpIDwga2V5cy5sZW5ndGggPyBjbXAoa2V5c1tpXSwga2V5KSA6IDEpIDwgMCA/IDY0IDogLTY0O1xyXG4gICAgICAgICAgICAgICAgICBzdW0gKz0gYztcclxuICAgICAgICAgICAgICAgICAgaSArPSAoYyA9IGkgPCBrZXlzLmxlbmd0aCA/IGNtcChrZXlzW2ldLCBrZXkpIDogMSkgPCAwID8gMzIgOiAtMzI7XHJcbiAgICAgICAgICAgICAgICAgIHN1bSArPSBjO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaSArPSAoYyA9IGkgPCBrZXlzLmxlbmd0aCA/IGNtcChrZXlzW2ldLCBrZXkpIDogMSkgPCAwID8gMTYgOiAtMTY7XHJcbiAgICAgICAgICAgICAgICBzdW0gKz0gYztcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaSArPSAoYyA9IGkgPCBrZXlzLmxlbmd0aCA/IGNtcChrZXlzW2ldLCBrZXkpIDogMSkgPCAwID8gOCA6IC04O1xyXG4gICAgICAgICAgICAgIHN1bSArPSBjO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGkgKz0gKGMgPSBpIDwga2V5cy5sZW5ndGggPyBjbXAoa2V5c1tpXSwga2V5KSA6IDEpIDwgMCA/IDQgOiAtNDtcclxuICAgICAgICAgICAgc3VtICs9IGM7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpICs9IChjID0gaSA8IGtleXMubGVuZ3RoID8gY21wKGtleXNbaV0sIGtleSkgOiAxKSA8IDAgPyAyIDogLTI7XHJcbiAgICAgICAgICBzdW0gKz0gYztcclxuICAgICAgICB9XHJcbiAgICAgICAgaSArPSAoYyA9IGkgPCBrZXlzLmxlbmd0aCA/IGNtcChrZXlzW2ldLCBrZXkpIDogMSkgPCAwID8gMSA6IC0xO1xyXG4gICAgICAgIGMgPSBpIDwga2V5cy5sZW5ndGggPyBjbXAoa2V5c1tpXSwga2V5KSA6IDE7XHJcbiAgICAgICAgc3VtICs9IGM7XHJcbiAgICAgICAgaWYgKGMgPCAwKSB7XHJcbiAgICAgICAgICArK2k7XHJcbiAgICAgICAgICBjID0gaSA8IGtleXMubGVuZ3RoID8gY21wKGtleXNbaV0sIGtleSkgOiAxO1xyXG4gICAgICAgICAgc3VtICs9IGM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChzdW0gIT09IHN1bSkge1xyXG4gICAgICAgICAgaWYgKGtleSA9PT0ga2V5KSAvLyBhdCBsZWFzdCB0aGUgc2VhcmNoIGtleSBpcyBub3QgTmFOXHJcbiAgICAgICAgICAgIHJldHVybiBrZXlzLmxlbmd0aCBeIGZhaWxYb3I7XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkJUcmVlOiBOYU4gd2FzIHVzZWQgYXMgYSBrZXlcIik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBjID09PSAwID8gaSA6IGkgXiBmYWlsWG9yOyovXHJcbiAgICB9O1xyXG4gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuICAgIC8vIExlYWYgTm9kZTogbWlzYyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbiAgICBCTm9kZS5wcm90b3R5cGUubWluS2V5ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmtleXNbMF07XHJcbiAgICB9O1xyXG4gICAgQk5vZGUucHJvdG90eXBlLm1pblBhaXIgPSBmdW5jdGlvbiAocmV1c2VkQXJyYXkpIHtcclxuICAgICAgICBpZiAodGhpcy5rZXlzLmxlbmd0aCA9PT0gMClcclxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgICAgICByZXVzZWRBcnJheVswXSA9IHRoaXMua2V5c1swXTtcclxuICAgICAgICByZXVzZWRBcnJheVsxXSA9IHRoaXMudmFsdWVzWzBdO1xyXG4gICAgICAgIHJldHVybiByZXVzZWRBcnJheTtcclxuICAgIH07XHJcbiAgICBCTm9kZS5wcm90b3R5cGUubWF4UGFpciA9IGZ1bmN0aW9uIChyZXVzZWRBcnJheSkge1xyXG4gICAgICAgIGlmICh0aGlzLmtleXMubGVuZ3RoID09PSAwKVxyXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgIHZhciBsYXN0SW5kZXggPSB0aGlzLmtleXMubGVuZ3RoIC0gMTtcclxuICAgICAgICByZXVzZWRBcnJheVswXSA9IHRoaXMua2V5c1tsYXN0SW5kZXhdO1xyXG4gICAgICAgIHJldXNlZEFycmF5WzFdID0gdGhpcy52YWx1ZXNbbGFzdEluZGV4XTtcclxuICAgICAgICByZXR1cm4gcmV1c2VkQXJyYXk7XHJcbiAgICB9O1xyXG4gICAgQk5vZGUucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHZhciB2ID0gdGhpcy52YWx1ZXM7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBCTm9kZSh0aGlzLmtleXMuc2xpY2UoMCksIHYgPT09IHVuZGVmVmFscyA/IHYgOiB2LnNsaWNlKDApKTtcclxuICAgIH07XHJcbiAgICBCTm9kZS5wcm90b3R5cGUuZ3JlZWR5Q2xvbmUgPSBmdW5jdGlvbiAoZm9yY2UpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pc1NoYXJlZCAmJiAhZm9yY2UgPyB0aGlzIDogdGhpcy5jbG9uZSgpO1xyXG4gICAgfTtcclxuICAgIEJOb2RlLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAoa2V5LCBkZWZhdWx0VmFsdWUsIHRyZWUpIHtcclxuICAgICAgICB2YXIgaSA9IHRoaXMuaW5kZXhPZihrZXksIC0xLCB0cmVlLl9jb21wYXJlKTtcclxuICAgICAgICByZXR1cm4gaSA8IDAgPyBkZWZhdWx0VmFsdWUgOiB0aGlzLnZhbHVlc1tpXTtcclxuICAgIH07XHJcbiAgICBCTm9kZS5wcm90b3R5cGUuZ2V0UGFpck9yTmV4dExvd2VyID0gZnVuY3Rpb24gKGtleSwgY29tcGFyZSwgaW5jbHVzaXZlLCByZXVzZWRBcnJheSkge1xyXG4gICAgICAgIHZhciBpID0gdGhpcy5pbmRleE9mKGtleSwgLTEsIGNvbXBhcmUpO1xyXG4gICAgICAgIHZhciBpbmRleE9yTG93ZXIgPSBpIDwgMCA/IH5pIC0gMSA6IChpbmNsdXNpdmUgPyBpIDogaSAtIDEpO1xyXG4gICAgICAgIGlmIChpbmRleE9yTG93ZXIgPj0gMCkge1xyXG4gICAgICAgICAgICByZXVzZWRBcnJheVswXSA9IHRoaXMua2V5c1tpbmRleE9yTG93ZXJdO1xyXG4gICAgICAgICAgICByZXVzZWRBcnJheVsxXSA9IHRoaXMudmFsdWVzW2luZGV4T3JMb3dlcl07XHJcbiAgICAgICAgICAgIHJldHVybiByZXVzZWRBcnJheTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIH07XHJcbiAgICBCTm9kZS5wcm90b3R5cGUuZ2V0UGFpck9yTmV4dEhpZ2hlciA9IGZ1bmN0aW9uIChrZXksIGNvbXBhcmUsIGluY2x1c2l2ZSwgcmV1c2VkQXJyYXkpIHtcclxuICAgICAgICB2YXIgaSA9IHRoaXMuaW5kZXhPZihrZXksIC0xLCBjb21wYXJlKTtcclxuICAgICAgICB2YXIgaW5kZXhPckxvd2VyID0gaSA8IDAgPyB+aSA6IChpbmNsdXNpdmUgPyBpIDogaSArIDEpO1xyXG4gICAgICAgIHZhciBrZXlzID0gdGhpcy5rZXlzO1xyXG4gICAgICAgIGlmIChpbmRleE9yTG93ZXIgPCBrZXlzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICByZXVzZWRBcnJheVswXSA9IGtleXNbaW5kZXhPckxvd2VyXTtcclxuICAgICAgICAgICAgcmV1c2VkQXJyYXlbMV0gPSB0aGlzLnZhbHVlc1tpbmRleE9yTG93ZXJdO1xyXG4gICAgICAgICAgICByZXR1cm4gcmV1c2VkQXJyYXk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICB9O1xyXG4gICAgQk5vZGUucHJvdG90eXBlLmNoZWNrVmFsaWQgPSBmdW5jdGlvbiAoZGVwdGgsIHRyZWUsIGJhc2VJbmRleCkge1xyXG4gICAgICAgIHZhciBrTCA9IHRoaXMua2V5cy5sZW5ndGgsIHZMID0gdGhpcy52YWx1ZXMubGVuZ3RoO1xyXG4gICAgICAgIGNoZWNrKHRoaXMudmFsdWVzID09PSB1bmRlZlZhbHMgPyBrTCA8PSB2TCA6IGtMID09PSB2TCwgXCJrZXlzL3ZhbHVlcyBsZW5ndGggbWlzbWF0Y2g6IGRlcHRoXCIsIGRlcHRoLCBcIndpdGggbGVuZ3Roc1wiLCBrTCwgdkwsIFwiYW5kIGJhc2VJbmRleFwiLCBiYXNlSW5kZXgpO1xyXG4gICAgICAgIC8vIE5vdGU6IHdlIGRvbid0IGNoZWNrIGZvciBcIm5vZGUgdG9vIHNtYWxsXCIgYmVjYXVzZSBzb21ldGltZXMgYSBub2RlXHJcbiAgICAgICAgLy8gY2FuIGxlZ2l0aW1hdGVseSBoYXZlIHNpemUgMS4gVGhpcyBvY2N1cnMgaWYgdGhlcmUgaXMgYSBiYXRjaCBcclxuICAgICAgICAvLyBkZWxldGlvbiwgbGVhdmluZyBhIG5vZGUgb2Ygc2l6ZSAxLCBhbmQgdGhlIHNpYmxpbmdzIGFyZSBmdWxsIHNvXHJcbiAgICAgICAgLy8gaXQgY2FuJ3QgYmUgbWVyZ2VkIHdpdGggYWRqYWNlbnQgbm9kZXMuIEhvd2V2ZXIsIHRoZSBwYXJlbnQgd2lsbFxyXG4gICAgICAgIC8vIHZlcmlmeSB0aGF0IHRoZSBhdmVyYWdlIG5vZGUgc2l6ZSBpcyBhdCBsZWFzdCBoYWxmIG9mIHRoZSBtYXhpbXVtLlxyXG4gICAgICAgIGNoZWNrKGRlcHRoID09IDAgfHwga0wgPiAwLCBcImVtcHR5IGxlYWYgYXQgZGVwdGhcIiwgZGVwdGgsIFwiYW5kIGJhc2VJbmRleFwiLCBiYXNlSW5kZXgpO1xyXG4gICAgICAgIHJldHVybiBrTDtcclxuICAgIH07XHJcbiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG4gICAgLy8gTGVhZiBOb2RlOiBzZXQgJiBub2RlIHNwbGl0dGluZyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuICAgIEJOb2RlLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbiAoa2V5LCB2YWx1ZSwgb3ZlcndyaXRlLCB0cmVlKSB7XHJcbiAgICAgICAgdmFyIGkgPSB0aGlzLmluZGV4T2Yoa2V5LCAtMSwgdHJlZS5fY29tcGFyZSk7XHJcbiAgICAgICAgaWYgKGkgPCAwKSB7XHJcbiAgICAgICAgICAgIC8vIGtleSBkb2VzIG5vdCBleGlzdCB5ZXRcclxuICAgICAgICAgICAgaSA9IH5pO1xyXG4gICAgICAgICAgICB0cmVlLl9zaXplKys7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmtleXMubGVuZ3RoIDwgdHJlZS5fbWF4Tm9kZVNpemUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmluc2VydEluTGVhZihpLCBrZXksIHZhbHVlLCB0cmVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIFRoaXMgbGVhZiBub2RlIGlzIGZ1bGwgYW5kIG11c3Qgc3BsaXRcclxuICAgICAgICAgICAgICAgIHZhciBuZXdSaWdodFNpYmxpbmcgPSB0aGlzLnNwbGl0T2ZmUmlnaHRTaWRlKCksIHRhcmdldCA9IHRoaXM7XHJcbiAgICAgICAgICAgICAgICBpZiAoaSA+IHRoaXMua2V5cy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICBpIC09IHRoaXMua2V5cy5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0ID0gbmV3UmlnaHRTaWJsaW5nO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGFyZ2V0Lmluc2VydEluTGVhZihpLCBrZXksIHZhbHVlLCB0cmVlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBuZXdSaWdodFNpYmxpbmc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIEtleSBhbHJlYWR5IGV4aXN0c1xyXG4gICAgICAgICAgICBpZiAob3ZlcndyaXRlICE9PSBmYWxzZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWlmeVZhbHVlcygpO1xyXG4gICAgICAgICAgICAgICAgLy8gdXN1YWxseSB0aGlzIGlzIGEgbm8tb3AsIGJ1dCBzb21lIHVzZXJzIG1heSB3aXNoIHRvIGVkaXQgdGhlIGtleVxyXG4gICAgICAgICAgICAgICAgdGhpcy5rZXlzW2ldID0ga2V5O1xyXG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZXNbaV0gPSB2YWx1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIEJOb2RlLnByb3RvdHlwZS5yZWlmeVZhbHVlcyA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBpZiAodGhpcy52YWx1ZXMgPT09IHVuZGVmVmFscylcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVzID0gdGhpcy52YWx1ZXMuc2xpY2UoMCwgdGhpcy5rZXlzLmxlbmd0aCk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVzO1xyXG4gICAgfTtcclxuICAgIEJOb2RlLnByb3RvdHlwZS5pbnNlcnRJbkxlYWYgPSBmdW5jdGlvbiAoaSwga2V5LCB2YWx1ZSwgdHJlZSkge1xyXG4gICAgICAgIHRoaXMua2V5cy5zcGxpY2UoaSwgMCwga2V5KTtcclxuICAgICAgICBpZiAodGhpcy52YWx1ZXMgPT09IHVuZGVmVmFscykge1xyXG4gICAgICAgICAgICB3aGlsZSAodW5kZWZWYWxzLmxlbmd0aCA8IHRyZWUuX21heE5vZGVTaXplKVxyXG4gICAgICAgICAgICAgICAgdW5kZWZWYWxzLnB1c2godW5kZWZpbmVkKTtcclxuICAgICAgICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZXMgPSB1bmRlZlZhbHMuc2xpY2UoMCwgdGhpcy5rZXlzLmxlbmd0aCAtIDEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMudmFsdWVzLnNwbGljZShpLCAwLCB2YWx1ZSk7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9O1xyXG4gICAgQk5vZGUucHJvdG90eXBlLnRha2VGcm9tUmlnaHQgPSBmdW5jdGlvbiAocmhzKSB7XHJcbiAgICAgICAgLy8gUmVtaW5kZXI6IHBhcmVudCBub2RlIG11c3QgdXBkYXRlIGl0cyBjb3B5IG9mIGtleSBmb3IgdGhpcyBub2RlXHJcbiAgICAgICAgLy8gYXNzZXJ0OiBuZWl0aGVyIG5vZGUgaXMgc2hhcmVkXHJcbiAgICAgICAgLy8gYXNzZXJ0IHJocy5rZXlzLmxlbmd0aCA+IChtYXhOb2RlU2l6ZS8yICYmIHRoaXMua2V5cy5sZW5ndGg8bWF4Tm9kZVNpemUpXHJcbiAgICAgICAgdmFyIHYgPSB0aGlzLnZhbHVlcztcclxuICAgICAgICBpZiAocmhzLnZhbHVlcyA9PT0gdW5kZWZWYWxzKSB7XHJcbiAgICAgICAgICAgIGlmICh2ICE9PSB1bmRlZlZhbHMpXHJcbiAgICAgICAgICAgICAgICB2LnB1c2godW5kZWZpbmVkKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHYgPSB0aGlzLnJlaWZ5VmFsdWVzKCk7XHJcbiAgICAgICAgICAgIHYucHVzaChyaHMudmFsdWVzLnNoaWZ0KCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmtleXMucHVzaChyaHMua2V5cy5zaGlmdCgpKTtcclxuICAgIH07XHJcbiAgICBCTm9kZS5wcm90b3R5cGUudGFrZUZyb21MZWZ0ID0gZnVuY3Rpb24gKGxocykge1xyXG4gICAgICAgIC8vIFJlbWluZGVyOiBwYXJlbnQgbm9kZSBtdXN0IHVwZGF0ZSBpdHMgY29weSBvZiBrZXkgZm9yIHRoaXMgbm9kZVxyXG4gICAgICAgIC8vIGFzc2VydDogbmVpdGhlciBub2RlIGlzIHNoYXJlZFxyXG4gICAgICAgIC8vIGFzc2VydCByaHMua2V5cy5sZW5ndGggPiAobWF4Tm9kZVNpemUvMiAmJiB0aGlzLmtleXMubGVuZ3RoPG1heE5vZGVTaXplKVxyXG4gICAgICAgIHZhciB2ID0gdGhpcy52YWx1ZXM7XHJcbiAgICAgICAgaWYgKGxocy52YWx1ZXMgPT09IHVuZGVmVmFscykge1xyXG4gICAgICAgICAgICBpZiAodiAhPT0gdW5kZWZWYWxzKVxyXG4gICAgICAgICAgICAgICAgdi51bnNoaWZ0KHVuZGVmaW5lZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB2ID0gdGhpcy5yZWlmeVZhbHVlcygpO1xyXG4gICAgICAgICAgICB2LnVuc2hpZnQobGhzLnZhbHVlcy5wb3AoKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMua2V5cy51bnNoaWZ0KGxocy5rZXlzLnBvcCgpKTtcclxuICAgIH07XHJcbiAgICBCTm9kZS5wcm90b3R5cGUuc3BsaXRPZmZSaWdodFNpZGUgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgLy8gUmVtaW5kZXI6IHBhcmVudCBub2RlIG11c3QgdXBkYXRlIGl0cyBjb3B5IG9mIGtleSBmb3IgdGhpcyBub2RlXHJcbiAgICAgICAgdmFyIGhhbGYgPSB0aGlzLmtleXMubGVuZ3RoID4+IDEsIGtleXMgPSB0aGlzLmtleXMuc3BsaWNlKGhhbGYpO1xyXG4gICAgICAgIHZhciB2YWx1ZXMgPSB0aGlzLnZhbHVlcyA9PT0gdW5kZWZWYWxzID8gdW5kZWZWYWxzIDogdGhpcy52YWx1ZXMuc3BsaWNlKGhhbGYpO1xyXG4gICAgICAgIHJldHVybiBuZXcgQk5vZGUoa2V5cywgdmFsdWVzKTtcclxuICAgIH07XHJcbiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG4gICAgLy8gTGVhZiBOb2RlOiBzY2FubmluZyAmIGRlbGV0aW9ucyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuICAgIEJOb2RlLnByb3RvdHlwZS5mb3JSYW5nZSA9IGZ1bmN0aW9uIChsb3csIGhpZ2gsIGluY2x1ZGVIaWdoLCBlZGl0TW9kZSwgdHJlZSwgY291bnQsIG9uRm91bmQpIHtcclxuICAgICAgICB2YXIgY21wID0gdHJlZS5fY29tcGFyZTtcclxuICAgICAgICB2YXIgaUxvdywgaUhpZ2g7XHJcbiAgICAgICAgaWYgKGhpZ2ggPT09IGxvdykge1xyXG4gICAgICAgICAgICBpZiAoIWluY2x1ZGVIaWdoKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvdW50O1xyXG4gICAgICAgICAgICBpSGlnaCA9IChpTG93ID0gdGhpcy5pbmRleE9mKGxvdywgLTEsIGNtcCkpICsgMTtcclxuICAgICAgICAgICAgaWYgKGlMb3cgPCAwKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvdW50O1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaUxvdyA9IHRoaXMuaW5kZXhPZihsb3csIDAsIGNtcCk7XHJcbiAgICAgICAgICAgIGlIaWdoID0gdGhpcy5pbmRleE9mKGhpZ2gsIC0xLCBjbXApO1xyXG4gICAgICAgICAgICBpZiAoaUhpZ2ggPCAwKVxyXG4gICAgICAgICAgICAgICAgaUhpZ2ggPSB+aUhpZ2g7XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGluY2x1ZGVIaWdoID09PSB0cnVlKVxyXG4gICAgICAgICAgICAgICAgaUhpZ2grKztcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIGtleXMgPSB0aGlzLmtleXMsIHZhbHVlcyA9IHRoaXMudmFsdWVzO1xyXG4gICAgICAgIGlmIChvbkZvdW5kICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IGlMb3c7IGkgPCBpSGlnaDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIga2V5ID0ga2V5c1tpXTtcclxuICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSBvbkZvdW5kKGtleSwgdmFsdWVzW2ldLCBjb3VudCsrKTtcclxuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChlZGl0TW9kZSA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoa2V5ICE9PSBrZXlzW2ldIHx8IHRoaXMuaXNTaGFyZWQgPT09IHRydWUpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJCVHJlZSBpbGxlZ2FsbHkgY2hhbmdlZCBvciBjbG9uZWQgaW4gZWRpdFJhbmdlXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0LmRlbGV0ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5rZXlzLnNwbGljZShpLCAxKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnZhbHVlcyAhPT0gdW5kZWZWYWxzKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWVzLnNwbGljZShpLCAxKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyZWUuX3NpemUtLTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGktLTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlIaWdoLS07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAocmVzdWx0Lmhhc093blByb3BlcnR5KCd2YWx1ZScpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXNbaV0gPSByZXN1bHQudmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5icmVhayAhPT0gdW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgICAgY291bnQgKz0gaUhpZ2ggLSBpTG93O1xyXG4gICAgICAgIHJldHVybiBjb3VudDtcclxuICAgIH07XHJcbiAgICAvKiogQWRkcyBlbnRpcmUgY29udGVudHMgb2YgcmlnaHQtaGFuZCBzaWJsaW5nIChyaHMgaXMgbGVmdCB1bmNoYW5nZWQpICovXHJcbiAgICBCTm9kZS5wcm90b3R5cGUubWVyZ2VTaWJsaW5nID0gZnVuY3Rpb24gKHJocywgXykge1xyXG4gICAgICAgIHRoaXMua2V5cy5wdXNoLmFwcGx5KHRoaXMua2V5cywgcmhzLmtleXMpO1xyXG4gICAgICAgIGlmICh0aGlzLnZhbHVlcyA9PT0gdW5kZWZWYWxzKSB7XHJcbiAgICAgICAgICAgIGlmIChyaHMudmFsdWVzID09PSB1bmRlZlZhbHMpXHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIHRoaXMudmFsdWVzID0gdGhpcy52YWx1ZXMuc2xpY2UoMCwgdGhpcy5rZXlzLmxlbmd0aCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMudmFsdWVzLnB1c2guYXBwbHkodGhpcy52YWx1ZXMsIHJocy5yZWlmeVZhbHVlcygpKTtcclxuICAgIH07XHJcbiAgICByZXR1cm4gQk5vZGU7XHJcbn0oKSk7XHJcbi8qKiBJbnRlcm5hbCBub2RlIChub24tbGVhZiBub2RlKSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cclxudmFyIEJOb2RlSW50ZXJuYWwgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XHJcbiAgICBfX2V4dGVuZHMoQk5vZGVJbnRlcm5hbCwgX3N1cGVyKTtcclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBkb2VzIG5vdCBtYXJrIGBjaGlsZHJlbmAgYXMgc2hhcmVkLCBzbyBpdCBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGNhbGxlclxyXG4gICAgICogdG8gZW5zdXJlIGNoaWxkcmVuIGFyZSBlaXRoZXIgbWFya2VkIHNoYXJlZCwgb3IgYXJlbid0IGluY2x1ZGVkIGluIGFub3RoZXIgdHJlZS5cclxuICAgICAqL1xyXG4gICAgZnVuY3Rpb24gQk5vZGVJbnRlcm5hbChjaGlsZHJlbiwga2V5cykge1xyXG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XHJcbiAgICAgICAgaWYgKCFrZXlzKSB7XHJcbiAgICAgICAgICAgIGtleXMgPSBbXTtcclxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKylcclxuICAgICAgICAgICAgICAgIGtleXNbaV0gPSBjaGlsZHJlbltpXS5tYXhLZXkoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBrZXlzKSB8fCB0aGlzO1xyXG4gICAgICAgIF90aGlzLmNoaWxkcmVuID0gY2hpbGRyZW47XHJcbiAgICAgICAgcmV0dXJuIF90aGlzO1xyXG4gICAgfVxyXG4gICAgQk5vZGVJbnRlcm5hbC5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdmFyIGNoaWxkcmVuID0gdGhpcy5jaGlsZHJlbi5zbGljZSgwKTtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKVxyXG4gICAgICAgICAgICBjaGlsZHJlbltpXS5pc1NoYXJlZCA9IHRydWU7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBCTm9kZUludGVybmFsKGNoaWxkcmVuLCB0aGlzLmtleXMuc2xpY2UoMCkpO1xyXG4gICAgfTtcclxuICAgIEJOb2RlSW50ZXJuYWwucHJvdG90eXBlLmdyZWVkeUNsb25lID0gZnVuY3Rpb24gKGZvcmNlKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNTaGFyZWQgJiYgIWZvcmNlKVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcztcclxuICAgICAgICB2YXIgbnUgPSBuZXcgQk5vZGVJbnRlcm5hbCh0aGlzLmNoaWxkcmVuLnNsaWNlKDApLCB0aGlzLmtleXMuc2xpY2UoMCkpO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnUuY2hpbGRyZW4ubGVuZ3RoOyBpKyspXHJcbiAgICAgICAgICAgIG51LmNoaWxkcmVuW2ldID0gbnUuY2hpbGRyZW5baV0uZ3JlZWR5Q2xvbmUoZm9yY2UpO1xyXG4gICAgICAgIHJldHVybiBudTtcclxuICAgIH07XHJcbiAgICBCTm9kZUludGVybmFsLnByb3RvdHlwZS5taW5LZXkgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hpbGRyZW5bMF0ubWluS2V5KCk7XHJcbiAgICB9O1xyXG4gICAgQk5vZGVJbnRlcm5hbC5wcm90b3R5cGUubWluUGFpciA9IGZ1bmN0aW9uIChyZXVzZWRBcnJheSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNoaWxkcmVuWzBdLm1pblBhaXIocmV1c2VkQXJyYXkpO1xyXG4gICAgfTtcclxuICAgIEJOb2RlSW50ZXJuYWwucHJvdG90eXBlLm1heFBhaXIgPSBmdW5jdGlvbiAocmV1c2VkQXJyYXkpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jaGlsZHJlblt0aGlzLmNoaWxkcmVuLmxlbmd0aCAtIDFdLm1heFBhaXIocmV1c2VkQXJyYXkpO1xyXG4gICAgfTtcclxuICAgIEJOb2RlSW50ZXJuYWwucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIChrZXksIGRlZmF1bHRWYWx1ZSwgdHJlZSkge1xyXG4gICAgICAgIHZhciBpID0gdGhpcy5pbmRleE9mKGtleSwgMCwgdHJlZS5fY29tcGFyZSksIGNoaWxkcmVuID0gdGhpcy5jaGlsZHJlbjtcclxuICAgICAgICByZXR1cm4gaSA8IGNoaWxkcmVuLmxlbmd0aCA/IGNoaWxkcmVuW2ldLmdldChrZXksIGRlZmF1bHRWYWx1ZSwgdHJlZSkgOiB1bmRlZmluZWQ7XHJcbiAgICB9O1xyXG4gICAgQk5vZGVJbnRlcm5hbC5wcm90b3R5cGUuZ2V0UGFpck9yTmV4dExvd2VyID0gZnVuY3Rpb24gKGtleSwgY29tcGFyZSwgaW5jbHVzaXZlLCByZXVzZWRBcnJheSkge1xyXG4gICAgICAgIHZhciBpID0gdGhpcy5pbmRleE9mKGtleSwgMCwgY29tcGFyZSksIGNoaWxkcmVuID0gdGhpcy5jaGlsZHJlbjtcclxuICAgICAgICBpZiAoaSA+PSBjaGlsZHJlbi5sZW5ndGgpXHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm1heFBhaXIocmV1c2VkQXJyYXkpO1xyXG4gICAgICAgIHZhciByZXN1bHQgPSBjaGlsZHJlbltpXS5nZXRQYWlyT3JOZXh0TG93ZXIoa2V5LCBjb21wYXJlLCBpbmNsdXNpdmUsIHJldXNlZEFycmF5KTtcclxuICAgICAgICBpZiAocmVzdWx0ID09PSB1bmRlZmluZWQgJiYgaSA+IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIGNoaWxkcmVuW2kgLSAxXS5tYXhQYWlyKHJldXNlZEFycmF5KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH07XHJcbiAgICBCTm9kZUludGVybmFsLnByb3RvdHlwZS5nZXRQYWlyT3JOZXh0SGlnaGVyID0gZnVuY3Rpb24gKGtleSwgY29tcGFyZSwgaW5jbHVzaXZlLCByZXVzZWRBcnJheSkge1xyXG4gICAgICAgIHZhciBpID0gdGhpcy5pbmRleE9mKGtleSwgMCwgY29tcGFyZSksIGNoaWxkcmVuID0gdGhpcy5jaGlsZHJlbiwgbGVuZ3RoID0gY2hpbGRyZW4ubGVuZ3RoO1xyXG4gICAgICAgIGlmIChpID49IGxlbmd0aClcclxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgICAgICB2YXIgcmVzdWx0ID0gY2hpbGRyZW5baV0uZ2V0UGFpck9yTmV4dEhpZ2hlcihrZXksIGNvbXBhcmUsIGluY2x1c2l2ZSwgcmV1c2VkQXJyYXkpO1xyXG4gICAgICAgIGlmIChyZXN1bHQgPT09IHVuZGVmaW5lZCAmJiBpIDwgbGVuZ3RoIC0gMSkge1xyXG4gICAgICAgICAgICByZXR1cm4gY2hpbGRyZW5baSArIDFdLm1pblBhaXIocmV1c2VkQXJyYXkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfTtcclxuICAgIEJOb2RlSW50ZXJuYWwucHJvdG90eXBlLmNoZWNrVmFsaWQgPSBmdW5jdGlvbiAoZGVwdGgsIHRyZWUsIGJhc2VJbmRleCkge1xyXG4gICAgICAgIHZhciBrTCA9IHRoaXMua2V5cy5sZW5ndGgsIGNMID0gdGhpcy5jaGlsZHJlbi5sZW5ndGg7XHJcbiAgICAgICAgY2hlY2soa0wgPT09IGNMLCBcImtleXMvY2hpbGRyZW4gbGVuZ3RoIG1pc21hdGNoOiBkZXB0aFwiLCBkZXB0aCwgXCJsZW5ndGhzXCIsIGtMLCBjTCwgXCJiYXNlSW5kZXhcIiwgYmFzZUluZGV4KTtcclxuICAgICAgICBjaGVjayhrTCA+IDEgfHwgZGVwdGggPiAwLCBcImludGVybmFsIG5vZGUgaGFzIGxlbmd0aFwiLCBrTCwgXCJhdCBkZXB0aFwiLCBkZXB0aCwgXCJiYXNlSW5kZXhcIiwgYmFzZUluZGV4KTtcclxuICAgICAgICB2YXIgc2l6ZSA9IDAsIGMgPSB0aGlzLmNoaWxkcmVuLCBrID0gdGhpcy5rZXlzLCBjaGlsZFNpemUgPSAwO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY0w7IGkrKykge1xyXG4gICAgICAgICAgICBzaXplICs9IGNbaV0uY2hlY2tWYWxpZChkZXB0aCArIDEsIHRyZWUsIGJhc2VJbmRleCArIHNpemUpO1xyXG4gICAgICAgICAgICBjaGlsZFNpemUgKz0gY1tpXS5rZXlzLmxlbmd0aDtcclxuICAgICAgICAgICAgY2hlY2soc2l6ZSA+PSBjaGlsZFNpemUsIFwid3RmXCIsIGJhc2VJbmRleCk7IC8vIG5vIHdheSB0aGlzIHdpbGwgZXZlciBmYWlsXHJcbiAgICAgICAgICAgIGNoZWNrKGkgPT09IDAgfHwgY1tpIC0gMV0uY29uc3RydWN0b3IgPT09IGNbaV0uY29uc3RydWN0b3IsIFwidHlwZSBtaXNtYXRjaCwgYmFzZUluZGV4OlwiLCBiYXNlSW5kZXgpO1xyXG4gICAgICAgICAgICBpZiAoY1tpXS5tYXhLZXkoKSAhPSBrW2ldKVxyXG4gICAgICAgICAgICAgICAgY2hlY2soZmFsc2UsIFwia2V5c1tcIiwgaSwgXCJdID1cIiwga1tpXSwgXCJpcyB3cm9uZywgc2hvdWxkIGJlIFwiLCBjW2ldLm1heEtleSgpLCBcImF0IGRlcHRoXCIsIGRlcHRoLCBcImJhc2VJbmRleFwiLCBiYXNlSW5kZXgpO1xyXG4gICAgICAgICAgICBpZiAoIShpID09PSAwIHx8IHRyZWUuX2NvbXBhcmUoa1tpIC0gMV0sIGtbaV0pIDwgMCkpXHJcbiAgICAgICAgICAgICAgICBjaGVjayhmYWxzZSwgXCJzb3J0IHZpb2xhdGlvbiBhdCBkZXB0aFwiLCBkZXB0aCwgXCJpbmRleFwiLCBpLCBcImtleXNcIiwga1tpIC0gMV0sIGtbaV0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyAyMDIwLzA4OiBCVHJlZSBkb2Vzbid0IGFsd2F5cyBhdm9pZCBncm9zc2x5IHVuZGVyc2l6ZWQgbm9kZXMsXHJcbiAgICAgICAgLy8gYnV0IEFGQUlLIHN1Y2ggbm9kZXMgYXJlIHByZXR0eSBoYXJtbGVzcywgc28gYWNjZXB0IHRoZW0uXHJcbiAgICAgICAgdmFyIHRvb2ZldyA9IGNoaWxkU2l6ZSA9PT0gMDsgLy8gY2hpbGRTaXplIDwgKHRyZWUubWF4Tm9kZVNpemUgPj4gMSkqY0w7XHJcbiAgICAgICAgaWYgKHRvb2ZldyB8fCBjaGlsZFNpemUgPiB0cmVlLm1heE5vZGVTaXplICogY0wpXHJcbiAgICAgICAgICAgIGNoZWNrKGZhbHNlLCB0b29mZXcgPyBcInRvbyBmZXdcIiA6IFwidG9vIG1hbnlcIiwgXCJjaGlsZHJlbiAoXCIsIGNoaWxkU2l6ZSwgc2l6ZSwgXCIpIGF0IGRlcHRoXCIsIGRlcHRoLCBcIm1heE5vZGVTaXplOlwiLCB0cmVlLm1heE5vZGVTaXplLCBcImNoaWxkcmVuLmxlbmd0aDpcIiwgY0wsIFwiYmFzZUluZGV4OlwiLCBiYXNlSW5kZXgpO1xyXG4gICAgICAgIHJldHVybiBzaXplO1xyXG4gICAgfTtcclxuICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbiAgICAvLyBJbnRlcm5hbCBOb2RlOiBzZXQgJiBub2RlIHNwbGl0dGluZyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG4gICAgQk5vZGVJbnRlcm5hbC5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24gKGtleSwgdmFsdWUsIG92ZXJ3cml0ZSwgdHJlZSkge1xyXG4gICAgICAgIHZhciBjID0gdGhpcy5jaGlsZHJlbiwgbWF4ID0gdHJlZS5fbWF4Tm9kZVNpemUsIGNtcCA9IHRyZWUuX2NvbXBhcmU7XHJcbiAgICAgICAgdmFyIGkgPSBNYXRoLm1pbih0aGlzLmluZGV4T2Yoa2V5LCAwLCBjbXApLCBjLmxlbmd0aCAtIDEpLCBjaGlsZCA9IGNbaV07XHJcbiAgICAgICAgaWYgKGNoaWxkLmlzU2hhcmVkKVxyXG4gICAgICAgICAgICBjW2ldID0gY2hpbGQgPSBjaGlsZC5jbG9uZSgpO1xyXG4gICAgICAgIGlmIChjaGlsZC5rZXlzLmxlbmd0aCA+PSBtYXgpIHtcclxuICAgICAgICAgICAgLy8gY2hpbGQgaXMgZnVsbDsgaW5zZXJ0aW5nIGFueXRoaW5nIGVsc2Ugd2lsbCBjYXVzZSBhIHNwbGl0LlxyXG4gICAgICAgICAgICAvLyBTaGlmdGluZyBhbiBpdGVtIHRvIHRoZSBsZWZ0IG9yIHJpZ2h0IHNpYmxpbmcgbWF5IGF2b2lkIGEgc3BsaXQuXHJcbiAgICAgICAgICAgIC8vIFdlIGNhbiBkbyBhIHNoaWZ0IGlmIHRoZSBhZGphY2VudCBub2RlIGlzIG5vdCBmdWxsIGFuZCBpZiB0aGVcclxuICAgICAgICAgICAgLy8gY3VycmVudCBrZXkgY2FuIHN0aWxsIGJlIHBsYWNlZCBpbiB0aGUgc2FtZSBub2RlIGFmdGVyIHRoZSBzaGlmdC5cclxuICAgICAgICAgICAgdmFyIG90aGVyO1xyXG4gICAgICAgICAgICBpZiAoaSA+IDAgJiYgKG90aGVyID0gY1tpIC0gMV0pLmtleXMubGVuZ3RoIDwgbWF4ICYmIGNtcChjaGlsZC5rZXlzWzBdLCBrZXkpIDwgMCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKG90aGVyLmlzU2hhcmVkKVxyXG4gICAgICAgICAgICAgICAgICAgIGNbaSAtIDFdID0gb3RoZXIgPSBvdGhlci5jbG9uZSgpO1xyXG4gICAgICAgICAgICAgICAgb3RoZXIudGFrZUZyb21SaWdodChjaGlsZCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmtleXNbaSAtIDFdID0gb3RoZXIubWF4S2V5KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoKG90aGVyID0gY1tpICsgMV0pICE9PSB1bmRlZmluZWQgJiYgb3RoZXIua2V5cy5sZW5ndGggPCBtYXggJiYgY21wKGNoaWxkLm1heEtleSgpLCBrZXkpIDwgMCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKG90aGVyLmlzU2hhcmVkKVxyXG4gICAgICAgICAgICAgICAgICAgIGNbaSArIDFdID0gb3RoZXIgPSBvdGhlci5jbG9uZSgpO1xyXG4gICAgICAgICAgICAgICAgb3RoZXIudGFrZUZyb21MZWZ0KGNoaWxkKTtcclxuICAgICAgICAgICAgICAgIHRoaXMua2V5c1tpXSA9IGNbaV0ubWF4S2V5KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIHJlc3VsdCA9IGNoaWxkLnNldChrZXksIHZhbHVlLCBvdmVyd3JpdGUsIHRyZWUpO1xyXG4gICAgICAgIGlmIChyZXN1bHQgPT09IGZhbHNlKVxyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5rZXlzW2ldID0gY2hpbGQubWF4S2V5KCk7XHJcbiAgICAgICAgaWYgKHJlc3VsdCA9PT0gdHJ1ZSlcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgLy8gVGhlIGNoaWxkIGhhcyBzcGxpdCBhbmQgYHJlc3VsdGAgaXMgYSBuZXcgcmlnaHQgY2hpbGQuLi4gZG9lcyBpdCBmaXQ/XHJcbiAgICAgICAgaWYgKHRoaXMua2V5cy5sZW5ndGggPCBtYXgpIHsgLy8geWVzXHJcbiAgICAgICAgICAgIHRoaXMuaW5zZXJ0KGkgKyAxLCByZXN1bHQpO1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7IC8vIG5vLCB3ZSBtdXN0IHNwbGl0IGFsc29cclxuICAgICAgICAgICAgdmFyIG5ld1JpZ2h0U2libGluZyA9IHRoaXMuc3BsaXRPZmZSaWdodFNpZGUoKSwgdGFyZ2V0ID0gdGhpcztcclxuICAgICAgICAgICAgaWYgKGNtcChyZXN1bHQubWF4S2V5KCksIHRoaXMubWF4S2V5KCkpID4gMCkge1xyXG4gICAgICAgICAgICAgICAgdGFyZ2V0ID0gbmV3UmlnaHRTaWJsaW5nO1xyXG4gICAgICAgICAgICAgICAgaSAtPSB0aGlzLmtleXMubGVuZ3RoO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRhcmdldC5pbnNlcnQoaSArIDEsIHJlc3VsdCk7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXdSaWdodFNpYmxpbmc7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIC8qKlxyXG4gICAgICogSW5zZXJ0cyBgY2hpbGRgIGF0IGluZGV4IGBpYC5cclxuICAgICAqIFRoaXMgZG9lcyBub3QgbWFyayBgY2hpbGRgIGFzIHNoYXJlZCwgc28gaXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBjYWxsZXJcclxuICAgICAqIHRvIGVuc3VyZSB0aGF0IGVpdGhlciBjaGlsZCBpcyBtYXJrZWQgc2hhcmVkLCBvciBpdCBpcyBub3QgaW5jbHVkZWQgaW4gYW5vdGhlciB0cmVlLlxyXG4gICAgICovXHJcbiAgICBCTm9kZUludGVybmFsLnByb3RvdHlwZS5pbnNlcnQgPSBmdW5jdGlvbiAoaSwgY2hpbGQpIHtcclxuICAgICAgICB0aGlzLmNoaWxkcmVuLnNwbGljZShpLCAwLCBjaGlsZCk7XHJcbiAgICAgICAgdGhpcy5rZXlzLnNwbGljZShpLCAwLCBjaGlsZC5tYXhLZXkoKSk7XHJcbiAgICB9O1xyXG4gICAgLyoqXHJcbiAgICAgKiBTcGxpdCB0aGlzIG5vZGUuXHJcbiAgICAgKiBNb2RpZmllcyB0aGlzIHRvIHJlbW92ZSB0aGUgc2Vjb25kIGhhbGYgb2YgdGhlIGl0ZW1zLCByZXR1cm5pbmcgYSBzZXBhcmF0ZSBub2RlIGNvbnRhaW5pbmcgdGhlbS5cclxuICAgICAqL1xyXG4gICAgQk5vZGVJbnRlcm5hbC5wcm90b3R5cGUuc3BsaXRPZmZSaWdodFNpZGUgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgLy8gYXNzZXJ0ICF0aGlzLmlzU2hhcmVkO1xyXG4gICAgICAgIHZhciBoYWxmID0gdGhpcy5jaGlsZHJlbi5sZW5ndGggPj4gMTtcclxuICAgICAgICByZXR1cm4gbmV3IEJOb2RlSW50ZXJuYWwodGhpcy5jaGlsZHJlbi5zcGxpY2UoaGFsZiksIHRoaXMua2V5cy5zcGxpY2UoaGFsZikpO1xyXG4gICAgfTtcclxuICAgIEJOb2RlSW50ZXJuYWwucHJvdG90eXBlLnRha2VGcm9tUmlnaHQgPSBmdW5jdGlvbiAocmhzKSB7XHJcbiAgICAgICAgLy8gUmVtaW5kZXI6IHBhcmVudCBub2RlIG11c3QgdXBkYXRlIGl0cyBjb3B5IG9mIGtleSBmb3IgdGhpcyBub2RlXHJcbiAgICAgICAgLy8gYXNzZXJ0OiBuZWl0aGVyIG5vZGUgaXMgc2hhcmVkXHJcbiAgICAgICAgLy8gYXNzZXJ0IHJocy5rZXlzLmxlbmd0aCA+IChtYXhOb2RlU2l6ZS8yICYmIHRoaXMua2V5cy5sZW5ndGg8bWF4Tm9kZVNpemUpXHJcbiAgICAgICAgdGhpcy5rZXlzLnB1c2gocmhzLmtleXMuc2hpZnQoKSk7XHJcbiAgICAgICAgdGhpcy5jaGlsZHJlbi5wdXNoKHJocy5jaGlsZHJlbi5zaGlmdCgpKTtcclxuICAgIH07XHJcbiAgICBCTm9kZUludGVybmFsLnByb3RvdHlwZS50YWtlRnJvbUxlZnQgPSBmdW5jdGlvbiAobGhzKSB7XHJcbiAgICAgICAgLy8gUmVtaW5kZXI6IHBhcmVudCBub2RlIG11c3QgdXBkYXRlIGl0cyBjb3B5IG9mIGtleSBmb3IgdGhpcyBub2RlXHJcbiAgICAgICAgLy8gYXNzZXJ0OiBuZWl0aGVyIG5vZGUgaXMgc2hhcmVkXHJcbiAgICAgICAgLy8gYXNzZXJ0IHJocy5rZXlzLmxlbmd0aCA+IChtYXhOb2RlU2l6ZS8yICYmIHRoaXMua2V5cy5sZW5ndGg8bWF4Tm9kZVNpemUpXHJcbiAgICAgICAgdGhpcy5rZXlzLnVuc2hpZnQobGhzLmtleXMucG9wKCkpO1xyXG4gICAgICAgIHRoaXMuY2hpbGRyZW4udW5zaGlmdChsaHMuY2hpbGRyZW4ucG9wKCkpO1xyXG4gICAgfTtcclxuICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbiAgICAvLyBJbnRlcm5hbCBOb2RlOiBzY2FubmluZyAmIGRlbGV0aW9ucyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG4gICAgLy8gTm90ZTogYGNvdW50YCBpcyB0aGUgbmV4dCB2YWx1ZSBvZiB0aGUgdGhpcmQgYXJndW1lbnQgdG8gYG9uRm91bmRgLiBcclxuICAgIC8vICAgICAgIEEgbGVhZiBub2RlJ3MgYGZvclJhbmdlYCBmdW5jdGlvbiByZXR1cm5zIGEgbmV3IHZhbHVlIGZvciB0aGlzIGNvdW50ZXIsXHJcbiAgICAvLyAgICAgICB1bmxlc3MgdGhlIG9wZXJhdGlvbiBpcyB0byBzdG9wIGVhcmx5LlxyXG4gICAgQk5vZGVJbnRlcm5hbC5wcm90b3R5cGUuZm9yUmFuZ2UgPSBmdW5jdGlvbiAobG93LCBoaWdoLCBpbmNsdWRlSGlnaCwgZWRpdE1vZGUsIHRyZWUsIGNvdW50LCBvbkZvdW5kKSB7XHJcbiAgICAgICAgdmFyIGNtcCA9IHRyZWUuX2NvbXBhcmU7XHJcbiAgICAgICAgdmFyIGtleXMgPSB0aGlzLmtleXMsIGNoaWxkcmVuID0gdGhpcy5jaGlsZHJlbjtcclxuICAgICAgICB2YXIgaUxvdyA9IHRoaXMuaW5kZXhPZihsb3csIDAsIGNtcCksIGkgPSBpTG93O1xyXG4gICAgICAgIHZhciBpSGlnaCA9IE1hdGgubWluKGhpZ2ggPT09IGxvdyA/IGlMb3cgOiB0aGlzLmluZGV4T2YoaGlnaCwgMCwgY21wKSwga2V5cy5sZW5ndGggLSAxKTtcclxuICAgICAgICBpZiAoIWVkaXRNb2RlKSB7XHJcbiAgICAgICAgICAgIC8vIFNpbXBsZSBjYXNlXHJcbiAgICAgICAgICAgIGZvciAoOyBpIDw9IGlIaWdoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSBjaGlsZHJlbltpXS5mb3JSYW5nZShsb3csIGhpZ2gsIGluY2x1ZGVIaWdoLCBlZGl0TW9kZSwgdHJlZSwgY291bnQsIG9uRm91bmQpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiByZXN1bHQgIT09ICdudW1iZXInKVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgICAgICAgICBjb3VudCA9IHJlc3VsdDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChpIDw9IGlIaWdoKSB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKDsgaSA8PSBpSGlnaDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkcmVuW2ldLmlzU2hhcmVkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbltpXSA9IGNoaWxkcmVuW2ldLmNsb25lKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGNoaWxkcmVuW2ldLmZvclJhbmdlKGxvdywgaGlnaCwgaW5jbHVkZUhpZ2gsIGVkaXRNb2RlLCB0cmVlLCBjb3VudCwgb25Gb3VuZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gTm90ZTogaWYgY2hpbGRyZW5baV0gaXMgZW1wdHkgdGhlbiBrZXlzW2ldPXVuZGVmaW5lZC5cclxuICAgICAgICAgICAgICAgICAgICAvLyAgICAgICBUaGlzIGlzIGFuIGludmFsaWQgc3RhdGUsIGJ1dCBpdCBpcyBmaXhlZCBiZWxvdy5cclxuICAgICAgICAgICAgICAgICAgICBrZXlzW2ldID0gY2hpbGRyZW5baV0ubWF4S2V5KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiByZXN1bHQgIT09ICdudW1iZXInKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgICAgICAgICAgICAgIGNvdW50ID0gcmVzdWx0O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGZpbmFsbHkge1xyXG4gICAgICAgICAgICAgICAgLy8gRGVsZXRpb25zIG1heSBoYXZlIG9jY3VycmVkLCBzbyBsb29rIGZvciBvcHBvcnR1bml0aWVzIHRvIG1lcmdlIG5vZGVzLlxyXG4gICAgICAgICAgICAgICAgdmFyIGhhbGYgPSB0cmVlLl9tYXhOb2RlU2l6ZSA+PiAxO1xyXG4gICAgICAgICAgICAgICAgaWYgKGlMb3cgPiAwKVxyXG4gICAgICAgICAgICAgICAgICAgIGlMb3ctLTtcclxuICAgICAgICAgICAgICAgIGZvciAoaSA9IGlIaWdoOyBpID49IGlMb3c7IGktLSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZHJlbltpXS5rZXlzLmxlbmd0aCA8PSBoYWxmKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZHJlbltpXS5rZXlzLmxlbmd0aCAhPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50cnlNZXJnZShpLCB0cmVlLl9tYXhOb2RlU2l6ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7IC8vIGNoaWxkIGlzIGVtcHR5ISBkZWxldGUgaXQhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlzLnNwbGljZShpLCAxKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuLnNwbGljZShpLCAxKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChjaGlsZHJlbi5sZW5ndGggIT09IDAgJiYgY2hpbGRyZW5bMF0ua2V5cy5sZW5ndGggPT09IDApXHJcbiAgICAgICAgICAgICAgICAgICAgY2hlY2soZmFsc2UsIFwiZW1wdGluZXNzIGJ1Z1wiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gY291bnQ7XHJcbiAgICB9O1xyXG4gICAgLyoqIE1lcmdlcyBjaGlsZCBpIHdpdGggY2hpbGQgaSsxIGlmIHRoZWlyIGNvbWJpbmVkIHNpemUgaXMgbm90IHRvbyBsYXJnZSAqL1xyXG4gICAgQk5vZGVJbnRlcm5hbC5wcm90b3R5cGUudHJ5TWVyZ2UgPSBmdW5jdGlvbiAoaSwgbWF4U2l6ZSkge1xyXG4gICAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuY2hpbGRyZW47XHJcbiAgICAgICAgaWYgKGkgPj0gMCAmJiBpICsgMSA8IGNoaWxkcmVuLmxlbmd0aCkge1xyXG4gICAgICAgICAgICBpZiAoY2hpbGRyZW5baV0ua2V5cy5sZW5ndGggKyBjaGlsZHJlbltpICsgMV0ua2V5cy5sZW5ndGggPD0gbWF4U2l6ZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGNoaWxkcmVuW2ldLmlzU2hhcmVkKSAvLyBjbG9uZWQgYWxyZWFkeSBVTkxFU1MgaSBpcyBvdXRzaWRlIHNjYW4gcmFuZ2VcclxuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbltpXSA9IGNoaWxkcmVuW2ldLmNsb25lKCk7XHJcbiAgICAgICAgICAgICAgICBjaGlsZHJlbltpXS5tZXJnZVNpYmxpbmcoY2hpbGRyZW5baSArIDFdLCBtYXhTaXplKTtcclxuICAgICAgICAgICAgICAgIGNoaWxkcmVuLnNwbGljZShpICsgMSwgMSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmtleXMuc3BsaWNlKGkgKyAxLCAxKTtcclxuICAgICAgICAgICAgICAgIHRoaXMua2V5c1tpXSA9IGNoaWxkcmVuW2ldLm1heEtleSgpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfTtcclxuICAgIC8qKlxyXG4gICAgICogTW92ZSBjaGlsZHJlbiBmcm9tIGByaHNgIGludG8gdGhpcy5cclxuICAgICAqIGByaHNgIG11c3QgYmUgcGFydCBvZiB0aGlzIHRyZWUsIGFuZCBiZSByZW1vdmVkIGZyb20gaXQgYWZ0ZXIgdGhpcyBjYWxsXHJcbiAgICAgKiAob3RoZXJ3aXNlIGlzU2hhcmVkIGZvciBpdHMgY2hpbGRyZW4gY291bGQgYmUgaW5jb3JyZWN0KS5cclxuICAgICAqL1xyXG4gICAgQk5vZGVJbnRlcm5hbC5wcm90b3R5cGUubWVyZ2VTaWJsaW5nID0gZnVuY3Rpb24gKHJocywgbWF4Tm9kZVNpemUpIHtcclxuICAgICAgICAvLyBhc3NlcnQgIXRoaXMuaXNTaGFyZWQ7XHJcbiAgICAgICAgdmFyIG9sZExlbmd0aCA9IHRoaXMua2V5cy5sZW5ndGg7XHJcbiAgICAgICAgdGhpcy5rZXlzLnB1c2guYXBwbHkodGhpcy5rZXlzLCByaHMua2V5cyk7XHJcbiAgICAgICAgdmFyIHJoc0NoaWxkcmVuID0gcmhzLmNoaWxkcmVuO1xyXG4gICAgICAgIHRoaXMuY2hpbGRyZW4ucHVzaC5hcHBseSh0aGlzLmNoaWxkcmVuLCByaHNDaGlsZHJlbik7XHJcbiAgICAgICAgaWYgKHJocy5pc1NoYXJlZCAmJiAhdGhpcy5pc1NoYXJlZCkge1xyXG4gICAgICAgICAgICAvLyBBbGwgY2hpbGRyZW4gb2YgYSBzaGFyZWQgbm9kZSBhcmUgaW1wbGljaXRseSBzaGFyZWQsIGFuZCBzaW5jZSB0aGVpciBuZXdcclxuICAgICAgICAgICAgLy8gcGFyZW50IGlzIG5vdCBzaGFyZWQsIHRoZXkgbXVzdCBub3cgYmUgZXhwbGljaXRseSBtYXJrZWQgYXMgc2hhcmVkLlxyXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJoc0NoaWxkcmVuLmxlbmd0aDsgaSsrKVxyXG4gICAgICAgICAgICAgICAgcmhzQ2hpbGRyZW5baV0uaXNTaGFyZWQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBJZiBvdXIgY2hpbGRyZW4gYXJlIHRoZW1zZWx2ZXMgYWxtb3N0IGVtcHR5IGR1ZSB0byBhIG1hc3MtZGVsZXRlLFxyXG4gICAgICAgIC8vIHRoZXkgbWF5IG5lZWQgdG8gYmUgbWVyZ2VkIHRvbyAoYnV0IG9ubHkgdGhlIG9sZExlbmd0aC0xIGFuZCBpdHNcclxuICAgICAgICAvLyByaWdodCBzaWJsaW5nIHNob3VsZCBuZWVkIHRoaXMpLlxyXG4gICAgICAgIHRoaXMudHJ5TWVyZ2Uob2xkTGVuZ3RoIC0gMSwgbWF4Tm9kZVNpemUpO1xyXG4gICAgfTtcclxuICAgIHJldHVybiBCTm9kZUludGVybmFsO1xyXG59KEJOb2RlKSk7XHJcbi8vIE9wdGltaXphdGlvbjogdGhpcyBhcnJheSBvZiBgdW5kZWZpbmVkYHMgaXMgdXNlZCBpbnN0ZWFkIG9mIGEgbm9ybWFsXHJcbi8vIGFycmF5IG9mIHZhbHVlcyBpbiBub2RlcyB3aGVyZSBgdW5kZWZpbmVkYCBpcyB0aGUgb25seSB2YWx1ZS5cclxuLy8gSXRzIGxlbmd0aCBpcyBleHRlbmRlZCB0byBtYXggbm9kZSBzaXplIG9uIGZpcnN0IHVzZTsgc2luY2UgaXQgY2FuXHJcbi8vIGJlIHNoYXJlZCBiZXR3ZWVuIHRyZWVzIHdpdGggZGlmZmVyZW50IG1heGltdW1zLCBpdHMgbGVuZ3RoIGNhbiBvbmx5XHJcbi8vIGluY3JlYXNlLCBuZXZlciBkZWNyZWFzZS4gSXRzIHR5cGUgc2hvdWxkIGJlIHVuZGVmaW5lZFtdIGJ1dCBzdHJhbmdlbHlcclxuLy8gVHlwZVNjcmlwdCB3b24ndCBhbGxvdyB0aGUgY29tcGFyaXNvbiBWW10gPT09IHVuZGVmaW5lZFtdLiBUbyBwcmV2ZW50XHJcbi8vIHVzZXJzIGZyb20gbWFraW5nIHRoaXMgYXJyYXkgdG9vIGxhcmdlLCBCVHJlZSBoYXMgYSBtYXhpbXVtIG5vZGUgc2l6ZS5cclxuLy9cclxuLy8gRkFROiB1bmRlZlZhbHNbaV0gaXMgYWxyZWFkeSB1bmRlZmluZWQsIHNvIHdoeSBpbmNyZWFzZSB0aGUgYXJyYXkgc2l6ZT9cclxuLy8gUmVhZGluZyBvdXRzaWRlIHRoZSBib3VuZHMgb2YgYW4gYXJyYXkgaXMgcmVsYXRpdmVseSBzbG93IGJlY2F1c2UgaXRcclxuLy8gaGFzIHRoZSBzaWRlIGVmZmVjdCBvZiBzY2FubmluZyB0aGUgcHJvdG90eXBlIGNoYWluLlxyXG52YXIgdW5kZWZWYWxzID0gW107XHJcbnZhciBEZWxldGUgPSB7IGRlbGV0ZTogdHJ1ZSB9LCBEZWxldGVSYW5nZSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIERlbGV0ZTsgfTtcclxudmFyIEJyZWFrID0geyBicmVhazogdHJ1ZSB9O1xyXG52YXIgRW1wdHlMZWFmID0gKGZ1bmN0aW9uICgpIHtcclxuICAgIHZhciBuID0gbmV3IEJOb2RlKCk7XHJcbiAgICBuLmlzU2hhcmVkID0gdHJ1ZTtcclxuICAgIHJldHVybiBuO1xyXG59KSgpO1xyXG52YXIgRW1wdHlBcnJheSA9IFtdO1xyXG52YXIgUmV1c2VkQXJyYXkgPSBbXTsgLy8gYXNzdW1lZCB0aHJlYWQtbG9jYWxcclxuZnVuY3Rpb24gY2hlY2soZmFjdCkge1xyXG4gICAgdmFyIGFyZ3MgPSBbXTtcclxuICAgIGZvciAodmFyIF9pID0gMTsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XHJcbiAgICAgICAgYXJnc1tfaSAtIDFdID0gYXJndW1lbnRzW19pXTtcclxuICAgIH1cclxuICAgIGlmICghZmFjdCkge1xyXG4gICAgICAgIGFyZ3MudW5zaGlmdCgnQisgdHJlZScpOyAvLyBhdCBiZWdpbm5pbmcgb2YgbWVzc2FnZVxyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihhcmdzLmpvaW4oJyAnKSk7XHJcbiAgICB9XHJcbn1cclxuLyoqIEEgQlRyZWUgZnJvemVuIGluIHRoZSBlbXB0eSBzdGF0ZS4gKi9cclxuZXhwb3J0cy5FbXB0eUJUcmVlID0gKGZ1bmN0aW9uICgpIHsgdmFyIHQgPSBuZXcgQlRyZWUoKTsgdC5mcmVlemUoKTsgcmV0dXJuIHQ7IH0pKCk7XHJcbiIsICIvLyB0aGVzZSBhcmVuJ3QgcmVhbGx5IHByaXZhdGUsIGJ1dCBub3IgYXJlIHRoZXkgcmVhbGx5IHVzZWZ1bCB0byBkb2N1bWVudFxuXG4vKipcbiAqIEBwcml2YXRlXG4gKi9cbmNsYXNzIEx1eG9uRXJyb3IgZXh0ZW5kcyBFcnJvciB7fVxuXG4vKipcbiAqIEBwcml2YXRlXG4gKi9cbmV4cG9ydCBjbGFzcyBJbnZhbGlkRGF0ZVRpbWVFcnJvciBleHRlbmRzIEx1eG9uRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihyZWFzb24pIHtcbiAgICBzdXBlcihgSW52YWxpZCBEYXRlVGltZTogJHtyZWFzb24udG9NZXNzYWdlKCl9YCk7XG4gIH1cbn1cblxuLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5leHBvcnQgY2xhc3MgSW52YWxpZEludGVydmFsRXJyb3IgZXh0ZW5kcyBMdXhvbkVycm9yIHtcbiAgY29uc3RydWN0b3IocmVhc29uKSB7XG4gICAgc3VwZXIoYEludmFsaWQgSW50ZXJ2YWw6ICR7cmVhc29uLnRvTWVzc2FnZSgpfWApO1xuICB9XG59XG5cbi8qKlxuICogQHByaXZhdGVcbiAqL1xuZXhwb3J0IGNsYXNzIEludmFsaWREdXJhdGlvbkVycm9yIGV4dGVuZHMgTHV4b25FcnJvciB7XG4gIGNvbnN0cnVjdG9yKHJlYXNvbikge1xuICAgIHN1cGVyKGBJbnZhbGlkIER1cmF0aW9uOiAke3JlYXNvbi50b01lc3NhZ2UoKX1gKTtcbiAgfVxufVxuXG4vKipcbiAqIEBwcml2YXRlXG4gKi9cbmV4cG9ydCBjbGFzcyBDb25mbGljdGluZ1NwZWNpZmljYXRpb25FcnJvciBleHRlbmRzIEx1eG9uRXJyb3Ige31cblxuLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5leHBvcnQgY2xhc3MgSW52YWxpZFVuaXRFcnJvciBleHRlbmRzIEx1eG9uRXJyb3Ige1xuICBjb25zdHJ1Y3Rvcih1bml0KSB7XG4gICAgc3VwZXIoYEludmFsaWQgdW5pdCAke3VuaXR9YCk7XG4gIH1cbn1cblxuLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5leHBvcnQgY2xhc3MgSW52YWxpZEFyZ3VtZW50RXJyb3IgZXh0ZW5kcyBMdXhvbkVycm9yIHt9XG5cbi8qKlxuICogQHByaXZhdGVcbiAqL1xuZXhwb3J0IGNsYXNzIFpvbmVJc0Fic3RyYWN0RXJyb3IgZXh0ZW5kcyBMdXhvbkVycm9yIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoXCJab25lIGlzIGFuIGFic3RyYWN0IGNsYXNzXCIpO1xuICB9XG59XG4iLCAiLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5cbmNvbnN0IG4gPSBcIm51bWVyaWNcIixcbiAgcyA9IFwic2hvcnRcIixcbiAgbCA9IFwibG9uZ1wiO1xuXG5leHBvcnQgY29uc3QgREFURV9TSE9SVCA9IHtcbiAgeWVhcjogbixcbiAgbW9udGg6IG4sXG4gIGRheTogbixcbn07XG5cbmV4cG9ydCBjb25zdCBEQVRFX01FRCA9IHtcbiAgeWVhcjogbixcbiAgbW9udGg6IHMsXG4gIGRheTogbixcbn07XG5cbmV4cG9ydCBjb25zdCBEQVRFX01FRF9XSVRIX1dFRUtEQVkgPSB7XG4gIHllYXI6IG4sXG4gIG1vbnRoOiBzLFxuICBkYXk6IG4sXG4gIHdlZWtkYXk6IHMsXG59O1xuXG5leHBvcnQgY29uc3QgREFURV9GVUxMID0ge1xuICB5ZWFyOiBuLFxuICBtb250aDogbCxcbiAgZGF5OiBuLFxufTtcblxuZXhwb3J0IGNvbnN0IERBVEVfSFVHRSA9IHtcbiAgeWVhcjogbixcbiAgbW9udGg6IGwsXG4gIGRheTogbixcbiAgd2Vla2RheTogbCxcbn07XG5cbmV4cG9ydCBjb25zdCBUSU1FX1NJTVBMRSA9IHtcbiAgaG91cjogbixcbiAgbWludXRlOiBuLFxufTtcblxuZXhwb3J0IGNvbnN0IFRJTUVfV0lUSF9TRUNPTkRTID0ge1xuICBob3VyOiBuLFxuICBtaW51dGU6IG4sXG4gIHNlY29uZDogbixcbn07XG5cbmV4cG9ydCBjb25zdCBUSU1FX1dJVEhfU0hPUlRfT0ZGU0VUID0ge1xuICBob3VyOiBuLFxuICBtaW51dGU6IG4sXG4gIHNlY29uZDogbixcbiAgdGltZVpvbmVOYW1lOiBzLFxufTtcblxuZXhwb3J0IGNvbnN0IFRJTUVfV0lUSF9MT05HX09GRlNFVCA9IHtcbiAgaG91cjogbixcbiAgbWludXRlOiBuLFxuICBzZWNvbmQ6IG4sXG4gIHRpbWVab25lTmFtZTogbCxcbn07XG5cbmV4cG9ydCBjb25zdCBUSU1FXzI0X1NJTVBMRSA9IHtcbiAgaG91cjogbixcbiAgbWludXRlOiBuLFxuICBob3VyQ3ljbGU6IFwiaDIzXCIsXG59O1xuXG5leHBvcnQgY29uc3QgVElNRV8yNF9XSVRIX1NFQ09ORFMgPSB7XG4gIGhvdXI6IG4sXG4gIG1pbnV0ZTogbixcbiAgc2Vjb25kOiBuLFxuICBob3VyQ3ljbGU6IFwiaDIzXCIsXG59O1xuXG5leHBvcnQgY29uc3QgVElNRV8yNF9XSVRIX1NIT1JUX09GRlNFVCA9IHtcbiAgaG91cjogbixcbiAgbWludXRlOiBuLFxuICBzZWNvbmQ6IG4sXG4gIGhvdXJDeWNsZTogXCJoMjNcIixcbiAgdGltZVpvbmVOYW1lOiBzLFxufTtcblxuZXhwb3J0IGNvbnN0IFRJTUVfMjRfV0lUSF9MT05HX09GRlNFVCA9IHtcbiAgaG91cjogbixcbiAgbWludXRlOiBuLFxuICBzZWNvbmQ6IG4sXG4gIGhvdXJDeWNsZTogXCJoMjNcIixcbiAgdGltZVpvbmVOYW1lOiBsLFxufTtcblxuZXhwb3J0IGNvbnN0IERBVEVUSU1FX1NIT1JUID0ge1xuICB5ZWFyOiBuLFxuICBtb250aDogbixcbiAgZGF5OiBuLFxuICBob3VyOiBuLFxuICBtaW51dGU6IG4sXG59O1xuXG5leHBvcnQgY29uc3QgREFURVRJTUVfU0hPUlRfV0lUSF9TRUNPTkRTID0ge1xuICB5ZWFyOiBuLFxuICBtb250aDogbixcbiAgZGF5OiBuLFxuICBob3VyOiBuLFxuICBtaW51dGU6IG4sXG4gIHNlY29uZDogbixcbn07XG5cbmV4cG9ydCBjb25zdCBEQVRFVElNRV9NRUQgPSB7XG4gIHllYXI6IG4sXG4gIG1vbnRoOiBzLFxuICBkYXk6IG4sXG4gIGhvdXI6IG4sXG4gIG1pbnV0ZTogbixcbn07XG5cbmV4cG9ydCBjb25zdCBEQVRFVElNRV9NRURfV0lUSF9TRUNPTkRTID0ge1xuICB5ZWFyOiBuLFxuICBtb250aDogcyxcbiAgZGF5OiBuLFxuICBob3VyOiBuLFxuICBtaW51dGU6IG4sXG4gIHNlY29uZDogbixcbn07XG5cbmV4cG9ydCBjb25zdCBEQVRFVElNRV9NRURfV0lUSF9XRUVLREFZID0ge1xuICB5ZWFyOiBuLFxuICBtb250aDogcyxcbiAgZGF5OiBuLFxuICB3ZWVrZGF5OiBzLFxuICBob3VyOiBuLFxuICBtaW51dGU6IG4sXG59O1xuXG5leHBvcnQgY29uc3QgREFURVRJTUVfRlVMTCA9IHtcbiAgeWVhcjogbixcbiAgbW9udGg6IGwsXG4gIGRheTogbixcbiAgaG91cjogbixcbiAgbWludXRlOiBuLFxuICB0aW1lWm9uZU5hbWU6IHMsXG59O1xuXG5leHBvcnQgY29uc3QgREFURVRJTUVfRlVMTF9XSVRIX1NFQ09ORFMgPSB7XG4gIHllYXI6IG4sXG4gIG1vbnRoOiBsLFxuICBkYXk6IG4sXG4gIGhvdXI6IG4sXG4gIG1pbnV0ZTogbixcbiAgc2Vjb25kOiBuLFxuICB0aW1lWm9uZU5hbWU6IHMsXG59O1xuXG5leHBvcnQgY29uc3QgREFURVRJTUVfSFVHRSA9IHtcbiAgeWVhcjogbixcbiAgbW9udGg6IGwsXG4gIGRheTogbixcbiAgd2Vla2RheTogbCxcbiAgaG91cjogbixcbiAgbWludXRlOiBuLFxuICB0aW1lWm9uZU5hbWU6IGwsXG59O1xuXG5leHBvcnQgY29uc3QgREFURVRJTUVfSFVHRV9XSVRIX1NFQ09ORFMgPSB7XG4gIHllYXI6IG4sXG4gIG1vbnRoOiBsLFxuICBkYXk6IG4sXG4gIHdlZWtkYXk6IGwsXG4gIGhvdXI6IG4sXG4gIG1pbnV0ZTogbixcbiAgc2Vjb25kOiBuLFxuICB0aW1lWm9uZU5hbWU6IGwsXG59O1xuIiwgIi8qXG4gIFRoaXMgaXMganVzdCBhIGp1bmsgZHJhd2VyLCBjb250YWluaW5nIGFueXRoaW5nIHVzZWQgYWNyb3NzIG11bHRpcGxlIGNsYXNzZXMuXG4gIEJlY2F1c2UgTHV4b24gaXMgc21hbGwoaXNoKSwgdGhpcyBzaG91bGQgc3RheSBzbWFsbCBhbmQgd2Ugd29uJ3Qgd29ycnkgYWJvdXQgc3BsaXR0aW5nXG4gIGl0IHVwIGludG8sIHNheSwgcGFyc2luZ1V0aWwuanMgYW5kIGJhc2ljVXRpbC5qcyBhbmQgc28gb24uIEJ1dCB0aGV5IGFyZSBkaXZpZGVkIHVwIGJ5IGZlYXR1cmUgYXJlYS5cbiovXG5cbmltcG9ydCB7IEludmFsaWRBcmd1bWVudEVycm9yIH0gZnJvbSBcIi4uL2Vycm9ycy5qc1wiO1xuXG4vKipcbiAqIEBwcml2YXRlXG4gKi9cblxuLy8gVFlQRVNcblxuZXhwb3J0IGZ1bmN0aW9uIGlzVW5kZWZpbmVkKG8pIHtcbiAgcmV0dXJuIHR5cGVvZiBvID09PSBcInVuZGVmaW5lZFwiO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOdW1iZXIobykge1xuICByZXR1cm4gdHlwZW9mIG8gPT09IFwibnVtYmVyXCI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0ludGVnZXIobykge1xuICByZXR1cm4gdHlwZW9mIG8gPT09IFwibnVtYmVyXCIgJiYgbyAlIDEgPT09IDA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1N0cmluZyhvKSB7XG4gIHJldHVybiB0eXBlb2YgbyA9PT0gXCJzdHJpbmdcIjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRGF0ZShvKSB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobykgPT09IFwiW29iamVjdCBEYXRlXVwiO1xufVxuXG4vLyBDQVBBQklMSVRJRVNcblxuZXhwb3J0IGZ1bmN0aW9uIGhhc1JlbGF0aXZlKCkge1xuICB0cnkge1xuICAgIHJldHVybiB0eXBlb2YgSW50bCAhPT0gXCJ1bmRlZmluZWRcIiAmJiAhIUludGwuUmVsYXRpdmVUaW1lRm9ybWF0O1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8vIE9CSkVDVFMgQU5EIEFSUkFZU1xuXG5leHBvcnQgZnVuY3Rpb24gbWF5YmVBcnJheSh0aGluZykge1xuICByZXR1cm4gQXJyYXkuaXNBcnJheSh0aGluZykgPyB0aGluZyA6IFt0aGluZ107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiZXN0QnkoYXJyLCBieSwgY29tcGFyZSkge1xuICBpZiAoYXJyLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgcmV0dXJuIGFyci5yZWR1Y2UoKGJlc3QsIG5leHQpID0+IHtcbiAgICBjb25zdCBwYWlyID0gW2J5KG5leHQpLCBuZXh0XTtcbiAgICBpZiAoIWJlc3QpIHtcbiAgICAgIHJldHVybiBwYWlyO1xuICAgIH0gZWxzZSBpZiAoY29tcGFyZShiZXN0WzBdLCBwYWlyWzBdKSA9PT0gYmVzdFswXSkge1xuICAgICAgcmV0dXJuIGJlc3Q7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBwYWlyO1xuICAgIH1cbiAgfSwgbnVsbClbMV07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwaWNrKG9iaiwga2V5cykge1xuICByZXR1cm4ga2V5cy5yZWR1Y2UoKGEsIGspID0+IHtcbiAgICBhW2tdID0gb2JqW2tdO1xuICAgIHJldHVybiBhO1xuICB9LCB7fSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYXNPd25Qcm9wZXJ0eShvYmosIHByb3ApIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApO1xufVxuXG4vLyBOVU1CRVJTIEFORCBTVFJJTkdTXG5cbmV4cG9ydCBmdW5jdGlvbiBpbnRlZ2VyQmV0d2Vlbih0aGluZywgYm90dG9tLCB0b3ApIHtcbiAgcmV0dXJuIGlzSW50ZWdlcih0aGluZykgJiYgdGhpbmcgPj0gYm90dG9tICYmIHRoaW5nIDw9IHRvcDtcbn1cblxuLy8geCAlIG4gYnV0IHRha2VzIHRoZSBzaWduIG9mIG4gaW5zdGVhZCBvZiB4XG5leHBvcnQgZnVuY3Rpb24gZmxvb3JNb2QoeCwgbikge1xuICByZXR1cm4geCAtIG4gKiBNYXRoLmZsb29yKHggLyBuKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhZFN0YXJ0KGlucHV0LCBuID0gMikge1xuICBjb25zdCBpc05lZyA9IGlucHV0IDwgMDtcbiAgbGV0IHBhZGRlZDtcbiAgaWYgKGlzTmVnKSB7XG4gICAgcGFkZGVkID0gXCItXCIgKyAoXCJcIiArIC1pbnB1dCkucGFkU3RhcnQobiwgXCIwXCIpO1xuICB9IGVsc2Uge1xuICAgIHBhZGRlZCA9IChcIlwiICsgaW5wdXQpLnBhZFN0YXJ0KG4sIFwiMFwiKTtcbiAgfVxuICByZXR1cm4gcGFkZGVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VJbnRlZ2VyKHN0cmluZykge1xuICBpZiAoaXNVbmRlZmluZWQoc3RyaW5nKSB8fCBzdHJpbmcgPT09IG51bGwgfHwgc3RyaW5nID09PSBcIlwiKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gcGFyc2VJbnQoc3RyaW5nLCAxMCk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlRmxvYXRpbmcoc3RyaW5nKSB7XG4gIGlmIChpc1VuZGVmaW5lZChzdHJpbmcpIHx8IHN0cmluZyA9PT0gbnVsbCB8fCBzdHJpbmcgPT09IFwiXCIpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBwYXJzZUZsb2F0KHN0cmluZyk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlTWlsbGlzKGZyYWN0aW9uKSB7XG4gIC8vIFJldHVybiB1bmRlZmluZWQgKGluc3RlYWQgb2YgMCkgaW4gdGhlc2UgY2FzZXMsIHdoZXJlIGZyYWN0aW9uIGlzIG5vdCBzZXRcbiAgaWYgKGlzVW5kZWZpbmVkKGZyYWN0aW9uKSB8fCBmcmFjdGlvbiA9PT0gbnVsbCB8fCBmcmFjdGlvbiA9PT0gXCJcIikge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgZiA9IHBhcnNlRmxvYXQoXCIwLlwiICsgZnJhY3Rpb24pICogMTAwMDtcbiAgICByZXR1cm4gTWF0aC5mbG9vcihmKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcm91bmRUbyhudW1iZXIsIGRpZ2l0cywgdG93YXJkWmVybyA9IGZhbHNlKSB7XG4gIGNvbnN0IGZhY3RvciA9IDEwICoqIGRpZ2l0cyxcbiAgICByb3VuZGVyID0gdG93YXJkWmVybyA/IE1hdGgudHJ1bmMgOiBNYXRoLnJvdW5kO1xuICByZXR1cm4gcm91bmRlcihudW1iZXIgKiBmYWN0b3IpIC8gZmFjdG9yO1xufVxuXG4vLyBEQVRFIEJBU0lDU1xuXG5leHBvcnQgZnVuY3Rpb24gaXNMZWFwWWVhcih5ZWFyKSB7XG4gIHJldHVybiB5ZWFyICUgNCA9PT0gMCAmJiAoeWVhciAlIDEwMCAhPT0gMCB8fCB5ZWFyICUgNDAwID09PSAwKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRheXNJblllYXIoeWVhcikge1xuICByZXR1cm4gaXNMZWFwWWVhcih5ZWFyKSA/IDM2NiA6IDM2NTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRheXNJbk1vbnRoKHllYXIsIG1vbnRoKSB7XG4gIGNvbnN0IG1vZE1vbnRoID0gZmxvb3JNb2QobW9udGggLSAxLCAxMikgKyAxLFxuICAgIG1vZFllYXIgPSB5ZWFyICsgKG1vbnRoIC0gbW9kTW9udGgpIC8gMTI7XG5cbiAgaWYgKG1vZE1vbnRoID09PSAyKSB7XG4gICAgcmV0dXJuIGlzTGVhcFllYXIobW9kWWVhcikgPyAyOSA6IDI4O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBbMzEsIG51bGwsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzEsIDMwLCAzMSwgMzAsIDMxXVttb2RNb250aCAtIDFdO1xuICB9XG59XG5cbi8vIGNvdmVydCBhIGNhbGVuZGFyIG9iamVjdCB0byBhIGxvY2FsIHRpbWVzdGFtcCAoZXBvY2gsIGJ1dCB3aXRoIHRoZSBvZmZzZXQgYmFrZWQgaW4pXG5leHBvcnQgZnVuY3Rpb24gb2JqVG9Mb2NhbFRTKG9iaikge1xuICBsZXQgZCA9IERhdGUuVVRDKFxuICAgIG9iai55ZWFyLFxuICAgIG9iai5tb250aCAtIDEsXG4gICAgb2JqLmRheSxcbiAgICBvYmouaG91cixcbiAgICBvYmoubWludXRlLFxuICAgIG9iai5zZWNvbmQsXG4gICAgb2JqLm1pbGxpc2Vjb25kXG4gICk7XG5cbiAgLy8gZm9yIGxlZ2FjeSByZWFzb25zLCB5ZWFycyBiZXR3ZWVuIDAgYW5kIDk5IGFyZSBpbnRlcnByZXRlZCBhcyAxOVhYOyByZXZlcnQgdGhhdFxuICBpZiAob2JqLnllYXIgPCAxMDAgJiYgb2JqLnllYXIgPj0gMCkge1xuICAgIGQgPSBuZXcgRGF0ZShkKTtcbiAgICBkLnNldFVUQ0Z1bGxZZWFyKGQuZ2V0VVRDRnVsbFllYXIoKSAtIDE5MDApO1xuICB9XG4gIHJldHVybiArZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlZWtzSW5XZWVrWWVhcih3ZWVrWWVhcikge1xuICBjb25zdCBwMSA9XG4gICAgICAod2Vla1llYXIgK1xuICAgICAgICBNYXRoLmZsb29yKHdlZWtZZWFyIC8gNCkgLVxuICAgICAgICBNYXRoLmZsb29yKHdlZWtZZWFyIC8gMTAwKSArXG4gICAgICAgIE1hdGguZmxvb3Iod2Vla1llYXIgLyA0MDApKSAlXG4gICAgICA3LFxuICAgIGxhc3QgPSB3ZWVrWWVhciAtIDEsXG4gICAgcDIgPSAobGFzdCArIE1hdGguZmxvb3IobGFzdCAvIDQpIC0gTWF0aC5mbG9vcihsYXN0IC8gMTAwKSArIE1hdGguZmxvb3IobGFzdCAvIDQwMCkpICUgNztcbiAgcmV0dXJuIHAxID09PSA0IHx8IHAyID09PSAzID8gNTMgOiA1Mjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVudHJ1bmNhdGVZZWFyKHllYXIpIHtcbiAgaWYgKHllYXIgPiA5OSkge1xuICAgIHJldHVybiB5ZWFyO1xuICB9IGVsc2UgcmV0dXJuIHllYXIgPiA2MCA/IDE5MDAgKyB5ZWFyIDogMjAwMCArIHllYXI7XG59XG5cbi8vIFBBUlNJTkdcblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlWm9uZUluZm8odHMsIG9mZnNldEZvcm1hdCwgbG9jYWxlLCB0aW1lWm9uZSA9IG51bGwpIHtcbiAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHRzKSxcbiAgICBpbnRsT3B0cyA9IHtcbiAgICAgIGhvdXJDeWNsZTogXCJoMjNcIixcbiAgICAgIHllYXI6IFwibnVtZXJpY1wiLFxuICAgICAgbW9udGg6IFwiMi1kaWdpdFwiLFxuICAgICAgZGF5OiBcIjItZGlnaXRcIixcbiAgICAgIGhvdXI6IFwiMi1kaWdpdFwiLFxuICAgICAgbWludXRlOiBcIjItZGlnaXRcIixcbiAgICB9O1xuXG4gIGlmICh0aW1lWm9uZSkge1xuICAgIGludGxPcHRzLnRpbWVab25lID0gdGltZVpvbmU7XG4gIH1cblxuICBjb25zdCBtb2RpZmllZCA9IHsgdGltZVpvbmVOYW1lOiBvZmZzZXRGb3JtYXQsIC4uLmludGxPcHRzIH07XG5cbiAgY29uc3QgcGFyc2VkID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCBtb2RpZmllZClcbiAgICAuZm9ybWF0VG9QYXJ0cyhkYXRlKVxuICAgIC5maW5kKChtKSA9PiBtLnR5cGUudG9Mb3dlckNhc2UoKSA9PT0gXCJ0aW1lem9uZW5hbWVcIik7XG4gIHJldHVybiBwYXJzZWQgPyBwYXJzZWQudmFsdWUgOiBudWxsO1xufVxuXG4vLyBzaWduZWRPZmZzZXQoJy01JywgJzMwJykgLT4gLTMzMFxuZXhwb3J0IGZ1bmN0aW9uIHNpZ25lZE9mZnNldChvZmZIb3VyU3RyLCBvZmZNaW51dGVTdHIpIHtcbiAgbGV0IG9mZkhvdXIgPSBwYXJzZUludChvZmZIb3VyU3RyLCAxMCk7XG5cbiAgLy8gZG9uJ3QgfHwgdGhpcyBiZWNhdXNlIHdlIHdhbnQgdG8gcHJlc2VydmUgLTBcbiAgaWYgKE51bWJlci5pc05hTihvZmZIb3VyKSkge1xuICAgIG9mZkhvdXIgPSAwO1xuICB9XG5cbiAgY29uc3Qgb2ZmTWluID0gcGFyc2VJbnQob2ZmTWludXRlU3RyLCAxMCkgfHwgMCxcbiAgICBvZmZNaW5TaWduZWQgPSBvZmZIb3VyIDwgMCB8fCBPYmplY3QuaXMob2ZmSG91ciwgLTApID8gLW9mZk1pbiA6IG9mZk1pbjtcbiAgcmV0dXJuIG9mZkhvdXIgKiA2MCArIG9mZk1pblNpZ25lZDtcbn1cblxuLy8gQ09FUkNJT05cblxuZXhwb3J0IGZ1bmN0aW9uIGFzTnVtYmVyKHZhbHVlKSB7XG4gIGNvbnN0IG51bWVyaWNWYWx1ZSA9IE51bWJlcih2YWx1ZSk7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09IFwiYm9vbGVhblwiIHx8IHZhbHVlID09PSBcIlwiIHx8IE51bWJlci5pc05hTihudW1lcmljVmFsdWUpKVxuICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcihgSW52YWxpZCB1bml0IHZhbHVlICR7dmFsdWV9YCk7XG4gIHJldHVybiBudW1lcmljVmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVPYmplY3Qob2JqLCBub3JtYWxpemVyKSB7XG4gIGNvbnN0IG5vcm1hbGl6ZWQgPSB7fTtcbiAgZm9yIChjb25zdCB1IGluIG9iaikge1xuICAgIGlmIChoYXNPd25Qcm9wZXJ0eShvYmosIHUpKSB7XG4gICAgICBjb25zdCB2ID0gb2JqW3VdO1xuICAgICAgaWYgKHYgPT09IHVuZGVmaW5lZCB8fCB2ID09PSBudWxsKSBjb250aW51ZTtcbiAgICAgIG5vcm1hbGl6ZWRbbm9ybWFsaXplcih1KV0gPSBhc051bWJlcih2KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG5vcm1hbGl6ZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRPZmZzZXQob2Zmc2V0LCBmb3JtYXQpIHtcbiAgY29uc3QgaG91cnMgPSBNYXRoLnRydW5jKE1hdGguYWJzKG9mZnNldCAvIDYwKSksXG4gICAgbWludXRlcyA9IE1hdGgudHJ1bmMoTWF0aC5hYnMob2Zmc2V0ICUgNjApKSxcbiAgICBzaWduID0gb2Zmc2V0ID49IDAgPyBcIitcIiA6IFwiLVwiO1xuXG4gIHN3aXRjaCAoZm9ybWF0KSB7XG4gICAgY2FzZSBcInNob3J0XCI6XG4gICAgICByZXR1cm4gYCR7c2lnbn0ke3BhZFN0YXJ0KGhvdXJzLCAyKX06JHtwYWRTdGFydChtaW51dGVzLCAyKX1gO1xuICAgIGNhc2UgXCJuYXJyb3dcIjpcbiAgICAgIHJldHVybiBgJHtzaWdufSR7aG91cnN9JHttaW51dGVzID4gMCA/IGA6JHttaW51dGVzfWAgOiBcIlwifWA7XG4gICAgY2FzZSBcInRlY2hpZVwiOlxuICAgICAgcmV0dXJuIGAke3NpZ259JHtwYWRTdGFydChob3VycywgMil9JHtwYWRTdGFydChtaW51dGVzLCAyKX1gO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihgVmFsdWUgZm9ybWF0ICR7Zm9ybWF0fSBpcyBvdXQgb2YgcmFuZ2UgZm9yIHByb3BlcnR5IGZvcm1hdGApO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0aW1lT2JqZWN0KG9iaikge1xuICByZXR1cm4gcGljayhvYmosIFtcImhvdXJcIiwgXCJtaW51dGVcIiwgXCJzZWNvbmRcIiwgXCJtaWxsaXNlY29uZFwiXSk7XG59XG5cbmV4cG9ydCBjb25zdCBpYW5hUmVnZXggPVxuICAvW0EtWmEtel8rLV17MSwyNTZ9KD86Oj9cXC9bQS1aYS16MC05XystXXsxLDI1Nn0oPzpcXC9bQS1aYS16MC05XystXXsxLDI1Nn0pPyk/LztcbiIsICJpbXBvcnQgKiBhcyBGb3JtYXRzIGZyb20gXCIuL2Zvcm1hdHMuanNcIjtcbmltcG9ydCB7IHBpY2sgfSBmcm9tIFwiLi91dGlsLmpzXCI7XG5cbmZ1bmN0aW9uIHN0cmluZ2lmeShvYmopIHtcbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KG9iaiwgT2JqZWN0LmtleXMob2JqKS5zb3J0KCkpO1xufVxuXG4vKipcbiAqIEBwcml2YXRlXG4gKi9cblxuZXhwb3J0IGNvbnN0IG1vbnRoc0xvbmcgPSBbXG4gIFwiSmFudWFyeVwiLFxuICBcIkZlYnJ1YXJ5XCIsXG4gIFwiTWFyY2hcIixcbiAgXCJBcHJpbFwiLFxuICBcIk1heVwiLFxuICBcIkp1bmVcIixcbiAgXCJKdWx5XCIsXG4gIFwiQXVndXN0XCIsXG4gIFwiU2VwdGVtYmVyXCIsXG4gIFwiT2N0b2JlclwiLFxuICBcIk5vdmVtYmVyXCIsXG4gIFwiRGVjZW1iZXJcIixcbl07XG5cbmV4cG9ydCBjb25zdCBtb250aHNTaG9ydCA9IFtcbiAgXCJKYW5cIixcbiAgXCJGZWJcIixcbiAgXCJNYXJcIixcbiAgXCJBcHJcIixcbiAgXCJNYXlcIixcbiAgXCJKdW5cIixcbiAgXCJKdWxcIixcbiAgXCJBdWdcIixcbiAgXCJTZXBcIixcbiAgXCJPY3RcIixcbiAgXCJOb3ZcIixcbiAgXCJEZWNcIixcbl07XG5cbmV4cG9ydCBjb25zdCBtb250aHNOYXJyb3cgPSBbXCJKXCIsIFwiRlwiLCBcIk1cIiwgXCJBXCIsIFwiTVwiLCBcIkpcIiwgXCJKXCIsIFwiQVwiLCBcIlNcIiwgXCJPXCIsIFwiTlwiLCBcIkRcIl07XG5cbmV4cG9ydCBmdW5jdGlvbiBtb250aHMobGVuZ3RoKSB7XG4gIHN3aXRjaCAobGVuZ3RoKSB7XG4gICAgY2FzZSBcIm5hcnJvd1wiOlxuICAgICAgcmV0dXJuIFsuLi5tb250aHNOYXJyb3ddO1xuICAgIGNhc2UgXCJzaG9ydFwiOlxuICAgICAgcmV0dXJuIFsuLi5tb250aHNTaG9ydF07XG4gICAgY2FzZSBcImxvbmdcIjpcbiAgICAgIHJldHVybiBbLi4ubW9udGhzTG9uZ107XG4gICAgY2FzZSBcIm51bWVyaWNcIjpcbiAgICAgIHJldHVybiBbXCIxXCIsIFwiMlwiLCBcIjNcIiwgXCI0XCIsIFwiNVwiLCBcIjZcIiwgXCI3XCIsIFwiOFwiLCBcIjlcIiwgXCIxMFwiLCBcIjExXCIsIFwiMTJcIl07XG4gICAgY2FzZSBcIjItZGlnaXRcIjpcbiAgICAgIHJldHVybiBbXCIwMVwiLCBcIjAyXCIsIFwiMDNcIiwgXCIwNFwiLCBcIjA1XCIsIFwiMDZcIiwgXCIwN1wiLCBcIjA4XCIsIFwiMDlcIiwgXCIxMFwiLCBcIjExXCIsIFwiMTJcIl07XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCB3ZWVrZGF5c0xvbmcgPSBbXG4gIFwiTW9uZGF5XCIsXG4gIFwiVHVlc2RheVwiLFxuICBcIldlZG5lc2RheVwiLFxuICBcIlRodXJzZGF5XCIsXG4gIFwiRnJpZGF5XCIsXG4gIFwiU2F0dXJkYXlcIixcbiAgXCJTdW5kYXlcIixcbl07XG5cbmV4cG9ydCBjb25zdCB3ZWVrZGF5c1Nob3J0ID0gW1wiTW9uXCIsIFwiVHVlXCIsIFwiV2VkXCIsIFwiVGh1XCIsIFwiRnJpXCIsIFwiU2F0XCIsIFwiU3VuXCJdO1xuXG5leHBvcnQgY29uc3Qgd2Vla2RheXNOYXJyb3cgPSBbXCJNXCIsIFwiVFwiLCBcIldcIiwgXCJUXCIsIFwiRlwiLCBcIlNcIiwgXCJTXCJdO1xuXG5leHBvcnQgZnVuY3Rpb24gd2Vla2RheXMobGVuZ3RoKSB7XG4gIHN3aXRjaCAobGVuZ3RoKSB7XG4gICAgY2FzZSBcIm5hcnJvd1wiOlxuICAgICAgcmV0dXJuIFsuLi53ZWVrZGF5c05hcnJvd107XG4gICAgY2FzZSBcInNob3J0XCI6XG4gICAgICByZXR1cm4gWy4uLndlZWtkYXlzU2hvcnRdO1xuICAgIGNhc2UgXCJsb25nXCI6XG4gICAgICByZXR1cm4gWy4uLndlZWtkYXlzTG9uZ107XG4gICAgY2FzZSBcIm51bWVyaWNcIjpcbiAgICAgIHJldHVybiBbXCIxXCIsIFwiMlwiLCBcIjNcIiwgXCI0XCIsIFwiNVwiLCBcIjZcIiwgXCI3XCJdO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgbWVyaWRpZW1zID0gW1wiQU1cIiwgXCJQTVwiXTtcblxuZXhwb3J0IGNvbnN0IGVyYXNMb25nID0gW1wiQmVmb3JlIENocmlzdFwiLCBcIkFubm8gRG9taW5pXCJdO1xuXG5leHBvcnQgY29uc3QgZXJhc1Nob3J0ID0gW1wiQkNcIiwgXCJBRFwiXTtcblxuZXhwb3J0IGNvbnN0IGVyYXNOYXJyb3cgPSBbXCJCXCIsIFwiQVwiXTtcblxuZXhwb3J0IGZ1bmN0aW9uIGVyYXMobGVuZ3RoKSB7XG4gIHN3aXRjaCAobGVuZ3RoKSB7XG4gICAgY2FzZSBcIm5hcnJvd1wiOlxuICAgICAgcmV0dXJuIFsuLi5lcmFzTmFycm93XTtcbiAgICBjYXNlIFwic2hvcnRcIjpcbiAgICAgIHJldHVybiBbLi4uZXJhc1Nob3J0XTtcbiAgICBjYXNlIFwibG9uZ1wiOlxuICAgICAgcmV0dXJuIFsuLi5lcmFzTG9uZ107XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXJpZGllbUZvckRhdGVUaW1lKGR0KSB7XG4gIHJldHVybiBtZXJpZGllbXNbZHQuaG91ciA8IDEyID8gMCA6IDFdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd2Vla2RheUZvckRhdGVUaW1lKGR0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIHdlZWtkYXlzKGxlbmd0aClbZHQud2Vla2RheSAtIDFdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbW9udGhGb3JEYXRlVGltZShkdCwgbGVuZ3RoKSB7XG4gIHJldHVybiBtb250aHMobGVuZ3RoKVtkdC5tb250aCAtIDFdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXJhRm9yRGF0ZVRpbWUoZHQsIGxlbmd0aCkge1xuICByZXR1cm4gZXJhcyhsZW5ndGgpW2R0LnllYXIgPCAwID8gMCA6IDFdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0UmVsYXRpdmVUaW1lKHVuaXQsIGNvdW50LCBudW1lcmljID0gXCJhbHdheXNcIiwgbmFycm93ID0gZmFsc2UpIHtcbiAgY29uc3QgdW5pdHMgPSB7XG4gICAgeWVhcnM6IFtcInllYXJcIiwgXCJ5ci5cIl0sXG4gICAgcXVhcnRlcnM6IFtcInF1YXJ0ZXJcIiwgXCJxdHIuXCJdLFxuICAgIG1vbnRoczogW1wibW9udGhcIiwgXCJtby5cIl0sXG4gICAgd2Vla3M6IFtcIndlZWtcIiwgXCJ3ay5cIl0sXG4gICAgZGF5czogW1wiZGF5XCIsIFwiZGF5XCIsIFwiZGF5c1wiXSxcbiAgICBob3VyczogW1wiaG91clwiLCBcImhyLlwiXSxcbiAgICBtaW51dGVzOiBbXCJtaW51dGVcIiwgXCJtaW4uXCJdLFxuICAgIHNlY29uZHM6IFtcInNlY29uZFwiLCBcInNlYy5cIl0sXG4gIH07XG5cbiAgY29uc3QgbGFzdGFibGUgPSBbXCJob3Vyc1wiLCBcIm1pbnV0ZXNcIiwgXCJzZWNvbmRzXCJdLmluZGV4T2YodW5pdCkgPT09IC0xO1xuXG4gIGlmIChudW1lcmljID09PSBcImF1dG9cIiAmJiBsYXN0YWJsZSkge1xuICAgIGNvbnN0IGlzRGF5ID0gdW5pdCA9PT0gXCJkYXlzXCI7XG4gICAgc3dpdGNoIChjb3VudCkge1xuICAgICAgY2FzZSAxOlxuICAgICAgICByZXR1cm4gaXNEYXkgPyBcInRvbW9ycm93XCIgOiBgbmV4dCAke3VuaXRzW3VuaXRdWzBdfWA7XG4gICAgICBjYXNlIC0xOlxuICAgICAgICByZXR1cm4gaXNEYXkgPyBcInllc3RlcmRheVwiIDogYGxhc3QgJHt1bml0c1t1bml0XVswXX1gO1xuICAgICAgY2FzZSAwOlxuICAgICAgICByZXR1cm4gaXNEYXkgPyBcInRvZGF5XCIgOiBgdGhpcyAke3VuaXRzW3VuaXRdWzBdfWA7XG4gICAgICBkZWZhdWx0OiAvLyBmYWxsIHRocm91Z2hcbiAgICB9XG4gIH1cblxuICBjb25zdCBpc0luUGFzdCA9IE9iamVjdC5pcyhjb3VudCwgLTApIHx8IGNvdW50IDwgMCxcbiAgICBmbXRWYWx1ZSA9IE1hdGguYWJzKGNvdW50KSxcbiAgICBzaW5ndWxhciA9IGZtdFZhbHVlID09PSAxLFxuICAgIGxpbFVuaXRzID0gdW5pdHNbdW5pdF0sXG4gICAgZm10VW5pdCA9IG5hcnJvd1xuICAgICAgPyBzaW5ndWxhclxuICAgICAgICA/IGxpbFVuaXRzWzFdXG4gICAgICAgIDogbGlsVW5pdHNbMl0gfHwgbGlsVW5pdHNbMV1cbiAgICAgIDogc2luZ3VsYXJcbiAgICAgID8gdW5pdHNbdW5pdF1bMF1cbiAgICAgIDogdW5pdDtcbiAgcmV0dXJuIGlzSW5QYXN0ID8gYCR7Zm10VmFsdWV9ICR7Zm10VW5pdH0gYWdvYCA6IGBpbiAke2ZtdFZhbHVlfSAke2ZtdFVuaXR9YDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdFN0cmluZyhrbm93bkZvcm1hdCkge1xuICAvLyB0aGVzZSBhbGwgaGF2ZSB0aGUgb2Zmc2V0cyByZW1vdmVkIGJlY2F1c2Ugd2UgZG9uJ3QgaGF2ZSBhY2Nlc3MgdG8gdGhlbVxuICAvLyB3aXRob3V0IGFsbCB0aGUgaW50bCBzdHVmZiB0aGlzIGlzIGJhY2tmaWxsaW5nXG4gIGNvbnN0IGZpbHRlcmVkID0gcGljayhrbm93bkZvcm1hdCwgW1xuICAgICAgXCJ3ZWVrZGF5XCIsXG4gICAgICBcImVyYVwiLFxuICAgICAgXCJ5ZWFyXCIsXG4gICAgICBcIm1vbnRoXCIsXG4gICAgICBcImRheVwiLFxuICAgICAgXCJob3VyXCIsXG4gICAgICBcIm1pbnV0ZVwiLFxuICAgICAgXCJzZWNvbmRcIixcbiAgICAgIFwidGltZVpvbmVOYW1lXCIsXG4gICAgICBcImhvdXJDeWNsZVwiLFxuICAgIF0pLFxuICAgIGtleSA9IHN0cmluZ2lmeShmaWx0ZXJlZCksXG4gICAgZGF0ZVRpbWVIdWdlID0gXCJFRUVFLCBMTExMIGQsIHl5eXksIGg6bW0gYVwiO1xuICBzd2l0Y2ggKGtleSkge1xuICAgIGNhc2Ugc3RyaW5naWZ5KEZvcm1hdHMuREFURV9TSE9SVCk6XG4gICAgICByZXR1cm4gXCJNL2QveXl5eVwiO1xuICAgIGNhc2Ugc3RyaW5naWZ5KEZvcm1hdHMuREFURV9NRUQpOlxuICAgICAgcmV0dXJuIFwiTExMIGQsIHl5eXlcIjtcbiAgICBjYXNlIHN0cmluZ2lmeShGb3JtYXRzLkRBVEVfTUVEX1dJVEhfV0VFS0RBWSk6XG4gICAgICByZXR1cm4gXCJFRUUsIExMTCBkLCB5eXl5XCI7XG4gICAgY2FzZSBzdHJpbmdpZnkoRm9ybWF0cy5EQVRFX0ZVTEwpOlxuICAgICAgcmV0dXJuIFwiTExMTCBkLCB5eXl5XCI7XG4gICAgY2FzZSBzdHJpbmdpZnkoRm9ybWF0cy5EQVRFX0hVR0UpOlxuICAgICAgcmV0dXJuIFwiRUVFRSwgTExMTCBkLCB5eXl5XCI7XG4gICAgY2FzZSBzdHJpbmdpZnkoRm9ybWF0cy5USU1FX1NJTVBMRSk6XG4gICAgICByZXR1cm4gXCJoOm1tIGFcIjtcbiAgICBjYXNlIHN0cmluZ2lmeShGb3JtYXRzLlRJTUVfV0lUSF9TRUNPTkRTKTpcbiAgICAgIHJldHVybiBcImg6bW06c3MgYVwiO1xuICAgIGNhc2Ugc3RyaW5naWZ5KEZvcm1hdHMuVElNRV9XSVRIX1NIT1JUX09GRlNFVCk6XG4gICAgICByZXR1cm4gXCJoOm1tIGFcIjtcbiAgICBjYXNlIHN0cmluZ2lmeShGb3JtYXRzLlRJTUVfV0lUSF9MT05HX09GRlNFVCk6XG4gICAgICByZXR1cm4gXCJoOm1tIGFcIjtcbiAgICBjYXNlIHN0cmluZ2lmeShGb3JtYXRzLlRJTUVfMjRfU0lNUExFKTpcbiAgICAgIHJldHVybiBcIkhIOm1tXCI7XG4gICAgY2FzZSBzdHJpbmdpZnkoRm9ybWF0cy5USU1FXzI0X1dJVEhfU0VDT05EUyk6XG4gICAgICByZXR1cm4gXCJISDptbTpzc1wiO1xuICAgIGNhc2Ugc3RyaW5naWZ5KEZvcm1hdHMuVElNRV8yNF9XSVRIX1NIT1JUX09GRlNFVCk6XG4gICAgICByZXR1cm4gXCJISDptbVwiO1xuICAgIGNhc2Ugc3RyaW5naWZ5KEZvcm1hdHMuVElNRV8yNF9XSVRIX0xPTkdfT0ZGU0VUKTpcbiAgICAgIHJldHVybiBcIkhIOm1tXCI7XG4gICAgY2FzZSBzdHJpbmdpZnkoRm9ybWF0cy5EQVRFVElNRV9TSE9SVCk6XG4gICAgICByZXR1cm4gXCJNL2QveXl5eSwgaDptbSBhXCI7XG4gICAgY2FzZSBzdHJpbmdpZnkoRm9ybWF0cy5EQVRFVElNRV9NRUQpOlxuICAgICAgcmV0dXJuIFwiTExMIGQsIHl5eXksIGg6bW0gYVwiO1xuICAgIGNhc2Ugc3RyaW5naWZ5KEZvcm1hdHMuREFURVRJTUVfRlVMTCk6XG4gICAgICByZXR1cm4gXCJMTExMIGQsIHl5eXksIGg6bW0gYVwiO1xuICAgIGNhc2Ugc3RyaW5naWZ5KEZvcm1hdHMuREFURVRJTUVfSFVHRSk6XG4gICAgICByZXR1cm4gZGF0ZVRpbWVIdWdlO1xuICAgIGNhc2Ugc3RyaW5naWZ5KEZvcm1hdHMuREFURVRJTUVfU0hPUlRfV0lUSF9TRUNPTkRTKTpcbiAgICAgIHJldHVybiBcIk0vZC95eXl5LCBoOm1tOnNzIGFcIjtcbiAgICBjYXNlIHN0cmluZ2lmeShGb3JtYXRzLkRBVEVUSU1FX01FRF9XSVRIX1NFQ09ORFMpOlxuICAgICAgcmV0dXJuIFwiTExMIGQsIHl5eXksIGg6bW06c3MgYVwiO1xuICAgIGNhc2Ugc3RyaW5naWZ5KEZvcm1hdHMuREFURVRJTUVfTUVEX1dJVEhfV0VFS0RBWSk6XG4gICAgICByZXR1cm4gXCJFRUUsIGQgTExMIHl5eXksIGg6bW0gYVwiO1xuICAgIGNhc2Ugc3RyaW5naWZ5KEZvcm1hdHMuREFURVRJTUVfRlVMTF9XSVRIX1NFQ09ORFMpOlxuICAgICAgcmV0dXJuIFwiTExMTCBkLCB5eXl5LCBoOm1tOnNzIGFcIjtcbiAgICBjYXNlIHN0cmluZ2lmeShGb3JtYXRzLkRBVEVUSU1FX0hVR0VfV0lUSF9TRUNPTkRTKTpcbiAgICAgIHJldHVybiBcIkVFRUUsIExMTEwgZCwgeXl5eSwgaDptbTpzcyBhXCI7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBkYXRlVGltZUh1Z2U7XG4gIH1cbn1cbiIsICJpbXBvcnQgKiBhcyBFbmdsaXNoIGZyb20gXCIuL2VuZ2xpc2guanNcIjtcbmltcG9ydCAqIGFzIEZvcm1hdHMgZnJvbSBcIi4vZm9ybWF0cy5qc1wiO1xuaW1wb3J0IHsgcGFkU3RhcnQgfSBmcm9tIFwiLi91dGlsLmpzXCI7XG5cbmZ1bmN0aW9uIHN0cmluZ2lmeVRva2VucyhzcGxpdHMsIHRva2VuVG9TdHJpbmcpIHtcbiAgbGV0IHMgPSBcIlwiO1xuICBmb3IgKGNvbnN0IHRva2VuIG9mIHNwbGl0cykge1xuICAgIGlmICh0b2tlbi5saXRlcmFsKSB7XG4gICAgICBzICs9IHRva2VuLnZhbDtcbiAgICB9IGVsc2Uge1xuICAgICAgcyArPSB0b2tlblRvU3RyaW5nKHRva2VuLnZhbCk7XG4gICAgfVxuICB9XG4gIHJldHVybiBzO1xufVxuXG5jb25zdCBtYWNyb1Rva2VuVG9Gb3JtYXRPcHRzID0ge1xuICBEOiBGb3JtYXRzLkRBVEVfU0hPUlQsXG4gIEREOiBGb3JtYXRzLkRBVEVfTUVELFxuICBEREQ6IEZvcm1hdHMuREFURV9GVUxMLFxuICBEREREOiBGb3JtYXRzLkRBVEVfSFVHRSxcbiAgdDogRm9ybWF0cy5USU1FX1NJTVBMRSxcbiAgdHQ6IEZvcm1hdHMuVElNRV9XSVRIX1NFQ09ORFMsXG4gIHR0dDogRm9ybWF0cy5USU1FX1dJVEhfU0hPUlRfT0ZGU0VULFxuICB0dHR0OiBGb3JtYXRzLlRJTUVfV0lUSF9MT05HX09GRlNFVCxcbiAgVDogRm9ybWF0cy5USU1FXzI0X1NJTVBMRSxcbiAgVFQ6IEZvcm1hdHMuVElNRV8yNF9XSVRIX1NFQ09ORFMsXG4gIFRUVDogRm9ybWF0cy5USU1FXzI0X1dJVEhfU0hPUlRfT0ZGU0VULFxuICBUVFRUOiBGb3JtYXRzLlRJTUVfMjRfV0lUSF9MT05HX09GRlNFVCxcbiAgZjogRm9ybWF0cy5EQVRFVElNRV9TSE9SVCxcbiAgZmY6IEZvcm1hdHMuREFURVRJTUVfTUVELFxuICBmZmY6IEZvcm1hdHMuREFURVRJTUVfRlVMTCxcbiAgZmZmZjogRm9ybWF0cy5EQVRFVElNRV9IVUdFLFxuICBGOiBGb3JtYXRzLkRBVEVUSU1FX1NIT1JUX1dJVEhfU0VDT05EUyxcbiAgRkY6IEZvcm1hdHMuREFURVRJTUVfTUVEX1dJVEhfU0VDT05EUyxcbiAgRkZGOiBGb3JtYXRzLkRBVEVUSU1FX0ZVTExfV0lUSF9TRUNPTkRTLFxuICBGRkZGOiBGb3JtYXRzLkRBVEVUSU1FX0hVR0VfV0lUSF9TRUNPTkRTLFxufTtcblxuLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZvcm1hdHRlciB7XG4gIHN0YXRpYyBjcmVhdGUobG9jYWxlLCBvcHRzID0ge30pIHtcbiAgICByZXR1cm4gbmV3IEZvcm1hdHRlcihsb2NhbGUsIG9wdHMpO1xuICB9XG5cbiAgc3RhdGljIHBhcnNlRm9ybWF0KGZtdCkge1xuICAgIGxldCBjdXJyZW50ID0gbnVsbCxcbiAgICAgIGN1cnJlbnRGdWxsID0gXCJcIixcbiAgICAgIGJyYWNrZXRlZCA9IGZhbHNlO1xuICAgIGNvbnN0IHNwbGl0cyA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZm10Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBjID0gZm10LmNoYXJBdChpKTtcbiAgICAgIGlmIChjID09PSBcIidcIikge1xuICAgICAgICBpZiAoY3VycmVudEZ1bGwubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHNwbGl0cy5wdXNoKHsgbGl0ZXJhbDogYnJhY2tldGVkLCB2YWw6IGN1cnJlbnRGdWxsIH0pO1xuICAgICAgICB9XG4gICAgICAgIGN1cnJlbnQgPSBudWxsO1xuICAgICAgICBjdXJyZW50RnVsbCA9IFwiXCI7XG4gICAgICAgIGJyYWNrZXRlZCA9ICFicmFja2V0ZWQ7XG4gICAgICB9IGVsc2UgaWYgKGJyYWNrZXRlZCkge1xuICAgICAgICBjdXJyZW50RnVsbCArPSBjO1xuICAgICAgfSBlbHNlIGlmIChjID09PSBjdXJyZW50KSB7XG4gICAgICAgIGN1cnJlbnRGdWxsICs9IGM7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoY3VycmVudEZ1bGwubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHNwbGl0cy5wdXNoKHsgbGl0ZXJhbDogZmFsc2UsIHZhbDogY3VycmVudEZ1bGwgfSk7XG4gICAgICAgIH1cbiAgICAgICAgY3VycmVudEZ1bGwgPSBjO1xuICAgICAgICBjdXJyZW50ID0gYztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY3VycmVudEZ1bGwubGVuZ3RoID4gMCkge1xuICAgICAgc3BsaXRzLnB1c2goeyBsaXRlcmFsOiBicmFja2V0ZWQsIHZhbDogY3VycmVudEZ1bGwgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNwbGl0cztcbiAgfVxuXG4gIHN0YXRpYyBtYWNyb1Rva2VuVG9Gb3JtYXRPcHRzKHRva2VuKSB7XG4gICAgcmV0dXJuIG1hY3JvVG9rZW5Ub0Zvcm1hdE9wdHNbdG9rZW5dO1xuICB9XG5cbiAgY29uc3RydWN0b3IobG9jYWxlLCBmb3JtYXRPcHRzKSB7XG4gICAgdGhpcy5vcHRzID0gZm9ybWF0T3B0cztcbiAgICB0aGlzLmxvYyA9IGxvY2FsZTtcbiAgICB0aGlzLnN5c3RlbUxvYyA9IG51bGw7XG4gIH1cblxuICBmb3JtYXRXaXRoU3lzdGVtRGVmYXVsdChkdCwgb3B0cykge1xuICAgIGlmICh0aGlzLnN5c3RlbUxvYyA9PT0gbnVsbCkge1xuICAgICAgdGhpcy5zeXN0ZW1Mb2MgPSB0aGlzLmxvYy5yZWRlZmF1bHRUb1N5c3RlbSgpO1xuICAgIH1cbiAgICBjb25zdCBkZiA9IHRoaXMuc3lzdGVtTG9jLmR0Rm9ybWF0dGVyKGR0LCB7IC4uLnRoaXMub3B0cywgLi4ub3B0cyB9KTtcbiAgICByZXR1cm4gZGYuZm9ybWF0KCk7XG4gIH1cblxuICBmb3JtYXREYXRlVGltZShkdCwgb3B0cyA9IHt9KSB7XG4gICAgY29uc3QgZGYgPSB0aGlzLmxvYy5kdEZvcm1hdHRlcihkdCwgeyAuLi50aGlzLm9wdHMsIC4uLm9wdHMgfSk7XG4gICAgcmV0dXJuIGRmLmZvcm1hdCgpO1xuICB9XG5cbiAgZm9ybWF0RGF0ZVRpbWVQYXJ0cyhkdCwgb3B0cyA9IHt9KSB7XG4gICAgY29uc3QgZGYgPSB0aGlzLmxvYy5kdEZvcm1hdHRlcihkdCwgeyAuLi50aGlzLm9wdHMsIC4uLm9wdHMgfSk7XG4gICAgcmV0dXJuIGRmLmZvcm1hdFRvUGFydHMoKTtcbiAgfVxuXG4gIHJlc29sdmVkT3B0aW9ucyhkdCwgb3B0cyA9IHt9KSB7XG4gICAgY29uc3QgZGYgPSB0aGlzLmxvYy5kdEZvcm1hdHRlcihkdCwgeyAuLi50aGlzLm9wdHMsIC4uLm9wdHMgfSk7XG4gICAgcmV0dXJuIGRmLnJlc29sdmVkT3B0aW9ucygpO1xuICB9XG5cbiAgbnVtKG4sIHAgPSAwKSB7XG4gICAgLy8gd2UgZ2V0IHNvbWUgcGVyZiBvdXQgb2YgZG9pbmcgdGhpcyBoZXJlLCBhbm5veWluZ2x5XG4gICAgaWYgKHRoaXMub3B0cy5mb3JjZVNpbXBsZSkge1xuICAgICAgcmV0dXJuIHBhZFN0YXJ0KG4sIHApO1xuICAgIH1cblxuICAgIGNvbnN0IG9wdHMgPSB7IC4uLnRoaXMub3B0cyB9O1xuXG4gICAgaWYgKHAgPiAwKSB7XG4gICAgICBvcHRzLnBhZFRvID0gcDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5sb2MubnVtYmVyRm9ybWF0dGVyKG9wdHMpLmZvcm1hdChuKTtcbiAgfVxuXG4gIGZvcm1hdERhdGVUaW1lRnJvbVN0cmluZyhkdCwgZm10KSB7XG4gICAgY29uc3Qga25vd25FbmdsaXNoID0gdGhpcy5sb2MubGlzdGluZ01vZGUoKSA9PT0gXCJlblwiLFxuICAgICAgdXNlRGF0ZVRpbWVGb3JtYXR0ZXIgPSB0aGlzLmxvYy5vdXRwdXRDYWxlbmRhciAmJiB0aGlzLmxvYy5vdXRwdXRDYWxlbmRhciAhPT0gXCJncmVnb3J5XCIsXG4gICAgICBzdHJpbmcgPSAob3B0cywgZXh0cmFjdCkgPT4gdGhpcy5sb2MuZXh0cmFjdChkdCwgb3B0cywgZXh0cmFjdCksXG4gICAgICBmb3JtYXRPZmZzZXQgPSAob3B0cykgPT4ge1xuICAgICAgICBpZiAoZHQuaXNPZmZzZXRGaXhlZCAmJiBkdC5vZmZzZXQgPT09IDAgJiYgb3B0cy5hbGxvd1opIHtcbiAgICAgICAgICByZXR1cm4gXCJaXCI7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZHQuaXNWYWxpZCA/IGR0LnpvbmUuZm9ybWF0T2Zmc2V0KGR0LnRzLCBvcHRzLmZvcm1hdCkgOiBcIlwiO1xuICAgICAgfSxcbiAgICAgIG1lcmlkaWVtID0gKCkgPT5cbiAgICAgICAga25vd25FbmdsaXNoXG4gICAgICAgICAgPyBFbmdsaXNoLm1lcmlkaWVtRm9yRGF0ZVRpbWUoZHQpXG4gICAgICAgICAgOiBzdHJpbmcoeyBob3VyOiBcIm51bWVyaWNcIiwgaG91ckN5Y2xlOiBcImgxMlwiIH0sIFwiZGF5cGVyaW9kXCIpLFxuICAgICAgbW9udGggPSAobGVuZ3RoLCBzdGFuZGFsb25lKSA9PlxuICAgICAgICBrbm93bkVuZ2xpc2hcbiAgICAgICAgICA/IEVuZ2xpc2gubW9udGhGb3JEYXRlVGltZShkdCwgbGVuZ3RoKVxuICAgICAgICAgIDogc3RyaW5nKHN0YW5kYWxvbmUgPyB7IG1vbnRoOiBsZW5ndGggfSA6IHsgbW9udGg6IGxlbmd0aCwgZGF5OiBcIm51bWVyaWNcIiB9LCBcIm1vbnRoXCIpLFxuICAgICAgd2Vla2RheSA9IChsZW5ndGgsIHN0YW5kYWxvbmUpID0+XG4gICAgICAgIGtub3duRW5nbGlzaFxuICAgICAgICAgID8gRW5nbGlzaC53ZWVrZGF5Rm9yRGF0ZVRpbWUoZHQsIGxlbmd0aClcbiAgICAgICAgICA6IHN0cmluZyhcbiAgICAgICAgICAgICAgc3RhbmRhbG9uZSA/IHsgd2Vla2RheTogbGVuZ3RoIH0gOiB7IHdlZWtkYXk6IGxlbmd0aCwgbW9udGg6IFwibG9uZ1wiLCBkYXk6IFwibnVtZXJpY1wiIH0sXG4gICAgICAgICAgICAgIFwid2Vla2RheVwiXG4gICAgICAgICAgICApLFxuICAgICAgbWF5YmVNYWNybyA9ICh0b2tlbikgPT4ge1xuICAgICAgICBjb25zdCBmb3JtYXRPcHRzID0gRm9ybWF0dGVyLm1hY3JvVG9rZW5Ub0Zvcm1hdE9wdHModG9rZW4pO1xuICAgICAgICBpZiAoZm9ybWF0T3B0cykge1xuICAgICAgICAgIHJldHVybiB0aGlzLmZvcm1hdFdpdGhTeXN0ZW1EZWZhdWx0KGR0LCBmb3JtYXRPcHRzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdG9rZW47XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBlcmEgPSAobGVuZ3RoKSA9PlxuICAgICAgICBrbm93bkVuZ2xpc2ggPyBFbmdsaXNoLmVyYUZvckRhdGVUaW1lKGR0LCBsZW5ndGgpIDogc3RyaW5nKHsgZXJhOiBsZW5ndGggfSwgXCJlcmFcIiksXG4gICAgICB0b2tlblRvU3RyaW5nID0gKHRva2VuKSA9PiB7XG4gICAgICAgIC8vIFdoZXJlIHBvc3NpYmxlOiBodHRwOi8vY2xkci51bmljb2RlLm9yZy90cmFuc2xhdGlvbi9kYXRlLXRpbWUtMS9kYXRlLXRpbWUjVE9DLVN0YW5kYWxvbmUtdnMuLUZvcm1hdC1TdHlsZXNcbiAgICAgICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgICAgIC8vIG1zXG4gICAgICAgICAgY2FzZSBcIlNcIjpcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5taWxsaXNlY29uZCk7XG4gICAgICAgICAgY2FzZSBcInVcIjpcbiAgICAgICAgICAvLyBmYWxscyB0aHJvdWdoXG4gICAgICAgICAgY2FzZSBcIlNTU1wiOlxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0Lm1pbGxpc2Vjb25kLCAzKTtcbiAgICAgICAgICAvLyBzZWNvbmRzXG4gICAgICAgICAgY2FzZSBcInNcIjpcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5zZWNvbmQpO1xuICAgICAgICAgIGNhc2UgXCJzc1wiOlxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LnNlY29uZCwgMik7XG4gICAgICAgICAgLy8gZnJhY3Rpb25hbCBzZWNvbmRzXG4gICAgICAgICAgY2FzZSBcInV1XCI6XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oTWF0aC5mbG9vcihkdC5taWxsaXNlY29uZCAvIDEwKSwgMik7XG4gICAgICAgICAgY2FzZSBcInV1dVwiOlxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKE1hdGguZmxvb3IoZHQubWlsbGlzZWNvbmQgLyAxMDApKTtcbiAgICAgICAgICAvLyBtaW51dGVzXG4gICAgICAgICAgY2FzZSBcIm1cIjpcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5taW51dGUpO1xuICAgICAgICAgIGNhc2UgXCJtbVwiOlxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0Lm1pbnV0ZSwgMik7XG4gICAgICAgICAgLy8gaG91cnNcbiAgICAgICAgICBjYXNlIFwiaFwiOlxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LmhvdXIgJSAxMiA9PT0gMCA/IDEyIDogZHQuaG91ciAlIDEyKTtcbiAgICAgICAgICBjYXNlIFwiaGhcIjpcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5ob3VyICUgMTIgPT09IDAgPyAxMiA6IGR0LmhvdXIgJSAxMiwgMik7XG4gICAgICAgICAgY2FzZSBcIkhcIjpcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5ob3VyKTtcbiAgICAgICAgICBjYXNlIFwiSEhcIjpcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5ob3VyLCAyKTtcbiAgICAgICAgICAvLyBvZmZzZXRcbiAgICAgICAgICBjYXNlIFwiWlwiOlxuICAgICAgICAgICAgLy8gbGlrZSArNlxuICAgICAgICAgICAgcmV0dXJuIGZvcm1hdE9mZnNldCh7IGZvcm1hdDogXCJuYXJyb3dcIiwgYWxsb3daOiB0aGlzLm9wdHMuYWxsb3daIH0pO1xuICAgICAgICAgIGNhc2UgXCJaWlwiOlxuICAgICAgICAgICAgLy8gbGlrZSArMDY6MDBcbiAgICAgICAgICAgIHJldHVybiBmb3JtYXRPZmZzZXQoeyBmb3JtYXQ6IFwic2hvcnRcIiwgYWxsb3daOiB0aGlzLm9wdHMuYWxsb3daIH0pO1xuICAgICAgICAgIGNhc2UgXCJaWlpcIjpcbiAgICAgICAgICAgIC8vIGxpa2UgKzA2MDBcbiAgICAgICAgICAgIHJldHVybiBmb3JtYXRPZmZzZXQoeyBmb3JtYXQ6IFwidGVjaGllXCIsIGFsbG93WjogdGhpcy5vcHRzLmFsbG93WiB9KTtcbiAgICAgICAgICBjYXNlIFwiWlpaWlwiOlxuICAgICAgICAgICAgLy8gbGlrZSBFU1RcbiAgICAgICAgICAgIHJldHVybiBkdC56b25lLm9mZnNldE5hbWUoZHQudHMsIHsgZm9ybWF0OiBcInNob3J0XCIsIGxvY2FsZTogdGhpcy5sb2MubG9jYWxlIH0pO1xuICAgICAgICAgIGNhc2UgXCJaWlpaWlwiOlxuICAgICAgICAgICAgLy8gbGlrZSBFYXN0ZXJuIFN0YW5kYXJkIFRpbWVcbiAgICAgICAgICAgIHJldHVybiBkdC56b25lLm9mZnNldE5hbWUoZHQudHMsIHsgZm9ybWF0OiBcImxvbmdcIiwgbG9jYWxlOiB0aGlzLmxvYy5sb2NhbGUgfSk7XG4gICAgICAgICAgLy8gem9uZVxuICAgICAgICAgIGNhc2UgXCJ6XCI6XG4gICAgICAgICAgICAvLyBsaWtlIEFtZXJpY2EvTmV3X1lvcmtcbiAgICAgICAgICAgIHJldHVybiBkdC56b25lTmFtZTtcbiAgICAgICAgICAvLyBtZXJpZGllbXNcbiAgICAgICAgICBjYXNlIFwiYVwiOlxuICAgICAgICAgICAgcmV0dXJuIG1lcmlkaWVtKCk7XG4gICAgICAgICAgLy8gZGF0ZXNcbiAgICAgICAgICBjYXNlIFwiZFwiOlxuICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyID8gc3RyaW5nKHsgZGF5OiBcIm51bWVyaWNcIiB9LCBcImRheVwiKSA6IHRoaXMubnVtKGR0LmRheSk7XG4gICAgICAgICAgY2FzZSBcImRkXCI6XG4gICAgICAgICAgICByZXR1cm4gdXNlRGF0ZVRpbWVGb3JtYXR0ZXIgPyBzdHJpbmcoeyBkYXk6IFwiMi1kaWdpdFwiIH0sIFwiZGF5XCIpIDogdGhpcy5udW0oZHQuZGF5LCAyKTtcbiAgICAgICAgICAvLyB3ZWVrZGF5cyAtIHN0YW5kYWxvbmVcbiAgICAgICAgICBjYXNlIFwiY1wiOlxuICAgICAgICAgICAgLy8gbGlrZSAxXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQud2Vla2RheSk7XG4gICAgICAgICAgY2FzZSBcImNjY1wiOlxuICAgICAgICAgICAgLy8gbGlrZSAnVHVlcydcbiAgICAgICAgICAgIHJldHVybiB3ZWVrZGF5KFwic2hvcnRcIiwgdHJ1ZSk7XG4gICAgICAgICAgY2FzZSBcImNjY2NcIjpcbiAgICAgICAgICAgIC8vIGxpa2UgJ1R1ZXNkYXknXG4gICAgICAgICAgICByZXR1cm4gd2Vla2RheShcImxvbmdcIiwgdHJ1ZSk7XG4gICAgICAgICAgY2FzZSBcImNjY2NjXCI6XG4gICAgICAgICAgICAvLyBsaWtlICdUJ1xuICAgICAgICAgICAgcmV0dXJuIHdlZWtkYXkoXCJuYXJyb3dcIiwgdHJ1ZSk7XG4gICAgICAgICAgLy8gd2Vla2RheXMgLSBmb3JtYXRcbiAgICAgICAgICBjYXNlIFwiRVwiOlxuICAgICAgICAgICAgLy8gbGlrZSAxXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQud2Vla2RheSk7XG4gICAgICAgICAgY2FzZSBcIkVFRVwiOlxuICAgICAgICAgICAgLy8gbGlrZSAnVHVlcydcbiAgICAgICAgICAgIHJldHVybiB3ZWVrZGF5KFwic2hvcnRcIiwgZmFsc2UpO1xuICAgICAgICAgIGNhc2UgXCJFRUVFXCI6XG4gICAgICAgICAgICAvLyBsaWtlICdUdWVzZGF5J1xuICAgICAgICAgICAgcmV0dXJuIHdlZWtkYXkoXCJsb25nXCIsIGZhbHNlKTtcbiAgICAgICAgICBjYXNlIFwiRUVFRUVcIjpcbiAgICAgICAgICAgIC8vIGxpa2UgJ1QnXG4gICAgICAgICAgICByZXR1cm4gd2Vla2RheShcIm5hcnJvd1wiLCBmYWxzZSk7XG4gICAgICAgICAgLy8gbW9udGhzIC0gc3RhbmRhbG9uZVxuICAgICAgICAgIGNhc2UgXCJMXCI6XG4gICAgICAgICAgICAvLyBsaWtlIDFcbiAgICAgICAgICAgIHJldHVybiB1c2VEYXRlVGltZUZvcm1hdHRlclxuICAgICAgICAgICAgICA/IHN0cmluZyh7IG1vbnRoOiBcIm51bWVyaWNcIiwgZGF5OiBcIm51bWVyaWNcIiB9LCBcIm1vbnRoXCIpXG4gICAgICAgICAgICAgIDogdGhpcy5udW0oZHQubW9udGgpO1xuICAgICAgICAgIGNhc2UgXCJMTFwiOlxuICAgICAgICAgICAgLy8gbGlrZSAwMSwgZG9lc24ndCBzZWVtIHRvIHdvcmtcbiAgICAgICAgICAgIHJldHVybiB1c2VEYXRlVGltZUZvcm1hdHRlclxuICAgICAgICAgICAgICA/IHN0cmluZyh7IG1vbnRoOiBcIjItZGlnaXRcIiwgZGF5OiBcIm51bWVyaWNcIiB9LCBcIm1vbnRoXCIpXG4gICAgICAgICAgICAgIDogdGhpcy5udW0oZHQubW9udGgsIDIpO1xuICAgICAgICAgIGNhc2UgXCJMTExcIjpcbiAgICAgICAgICAgIC8vIGxpa2UgSmFuXG4gICAgICAgICAgICByZXR1cm4gbW9udGgoXCJzaG9ydFwiLCB0cnVlKTtcbiAgICAgICAgICBjYXNlIFwiTExMTFwiOlxuICAgICAgICAgICAgLy8gbGlrZSBKYW51YXJ5XG4gICAgICAgICAgICByZXR1cm4gbW9udGgoXCJsb25nXCIsIHRydWUpO1xuICAgICAgICAgIGNhc2UgXCJMTExMTFwiOlxuICAgICAgICAgICAgLy8gbGlrZSBKXG4gICAgICAgICAgICByZXR1cm4gbW9udGgoXCJuYXJyb3dcIiwgdHJ1ZSk7XG4gICAgICAgICAgLy8gbW9udGhzIC0gZm9ybWF0XG4gICAgICAgICAgY2FzZSBcIk1cIjpcbiAgICAgICAgICAgIC8vIGxpa2UgMVxuICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyXG4gICAgICAgICAgICAgID8gc3RyaW5nKHsgbW9udGg6IFwibnVtZXJpY1wiIH0sIFwibW9udGhcIilcbiAgICAgICAgICAgICAgOiB0aGlzLm51bShkdC5tb250aCk7XG4gICAgICAgICAgY2FzZSBcIk1NXCI6XG4gICAgICAgICAgICAvLyBsaWtlIDAxXG4gICAgICAgICAgICByZXR1cm4gdXNlRGF0ZVRpbWVGb3JtYXR0ZXJcbiAgICAgICAgICAgICAgPyBzdHJpbmcoeyBtb250aDogXCIyLWRpZ2l0XCIgfSwgXCJtb250aFwiKVxuICAgICAgICAgICAgICA6IHRoaXMubnVtKGR0Lm1vbnRoLCAyKTtcbiAgICAgICAgICBjYXNlIFwiTU1NXCI6XG4gICAgICAgICAgICAvLyBsaWtlIEphblxuICAgICAgICAgICAgcmV0dXJuIG1vbnRoKFwic2hvcnRcIiwgZmFsc2UpO1xuICAgICAgICAgIGNhc2UgXCJNTU1NXCI6XG4gICAgICAgICAgICAvLyBsaWtlIEphbnVhcnlcbiAgICAgICAgICAgIHJldHVybiBtb250aChcImxvbmdcIiwgZmFsc2UpO1xuICAgICAgICAgIGNhc2UgXCJNTU1NTVwiOlxuICAgICAgICAgICAgLy8gbGlrZSBKXG4gICAgICAgICAgICByZXR1cm4gbW9udGgoXCJuYXJyb3dcIiwgZmFsc2UpO1xuICAgICAgICAgIC8vIHllYXJzXG4gICAgICAgICAgY2FzZSBcInlcIjpcbiAgICAgICAgICAgIC8vIGxpa2UgMjAxNFxuICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyID8gc3RyaW5nKHsgeWVhcjogXCJudW1lcmljXCIgfSwgXCJ5ZWFyXCIpIDogdGhpcy5udW0oZHQueWVhcik7XG4gICAgICAgICAgY2FzZSBcInl5XCI6XG4gICAgICAgICAgICAvLyBsaWtlIDE0XG4gICAgICAgICAgICByZXR1cm4gdXNlRGF0ZVRpbWVGb3JtYXR0ZXJcbiAgICAgICAgICAgICAgPyBzdHJpbmcoeyB5ZWFyOiBcIjItZGlnaXRcIiB9LCBcInllYXJcIilcbiAgICAgICAgICAgICAgOiB0aGlzLm51bShkdC55ZWFyLnRvU3RyaW5nKCkuc2xpY2UoLTIpLCAyKTtcbiAgICAgICAgICBjYXNlIFwieXl5eVwiOlxuICAgICAgICAgICAgLy8gbGlrZSAwMDEyXG4gICAgICAgICAgICByZXR1cm4gdXNlRGF0ZVRpbWVGb3JtYXR0ZXJcbiAgICAgICAgICAgICAgPyBzdHJpbmcoeyB5ZWFyOiBcIm51bWVyaWNcIiB9LCBcInllYXJcIilcbiAgICAgICAgICAgICAgOiB0aGlzLm51bShkdC55ZWFyLCA0KTtcbiAgICAgICAgICBjYXNlIFwieXl5eXl5XCI6XG4gICAgICAgICAgICAvLyBsaWtlIDAwMDAxMlxuICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyXG4gICAgICAgICAgICAgID8gc3RyaW5nKHsgeWVhcjogXCJudW1lcmljXCIgfSwgXCJ5ZWFyXCIpXG4gICAgICAgICAgICAgIDogdGhpcy5udW0oZHQueWVhciwgNik7XG4gICAgICAgICAgLy8gZXJhc1xuICAgICAgICAgIGNhc2UgXCJHXCI6XG4gICAgICAgICAgICAvLyBsaWtlIEFEXG4gICAgICAgICAgICByZXR1cm4gZXJhKFwic2hvcnRcIik7XG4gICAgICAgICAgY2FzZSBcIkdHXCI6XG4gICAgICAgICAgICAvLyBsaWtlIEFubm8gRG9taW5pXG4gICAgICAgICAgICByZXR1cm4gZXJhKFwibG9uZ1wiKTtcbiAgICAgICAgICBjYXNlIFwiR0dHR0dcIjpcbiAgICAgICAgICAgIHJldHVybiBlcmEoXCJuYXJyb3dcIik7XG4gICAgICAgICAgY2FzZSBcImtrXCI6XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQud2Vla1llYXIudG9TdHJpbmcoKS5zbGljZSgtMiksIDIpO1xuICAgICAgICAgIGNhc2UgXCJra2trXCI6XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQud2Vla1llYXIsIDQpO1xuICAgICAgICAgIGNhc2UgXCJXXCI6XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQud2Vla051bWJlcik7XG4gICAgICAgICAgY2FzZSBcIldXXCI6XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQud2Vla051bWJlciwgMik7XG4gICAgICAgICAgY2FzZSBcIm9cIjpcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5vcmRpbmFsKTtcbiAgICAgICAgICBjYXNlIFwib29vXCI6XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQub3JkaW5hbCwgMyk7XG4gICAgICAgICAgY2FzZSBcInFcIjpcbiAgICAgICAgICAgIC8vIGxpa2UgMVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LnF1YXJ0ZXIpO1xuICAgICAgICAgIGNhc2UgXCJxcVwiOlxuICAgICAgICAgICAgLy8gbGlrZSAwMVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LnF1YXJ0ZXIsIDIpO1xuICAgICAgICAgIGNhc2UgXCJYXCI6XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oTWF0aC5mbG9vcihkdC50cyAvIDEwMDApKTtcbiAgICAgICAgICBjYXNlIFwieFwiOlxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LnRzKTtcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIG1heWJlTWFjcm8odG9rZW4pO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgcmV0dXJuIHN0cmluZ2lmeVRva2VucyhGb3JtYXR0ZXIucGFyc2VGb3JtYXQoZm10KSwgdG9rZW5Ub1N0cmluZyk7XG4gIH1cblxuICBmb3JtYXREdXJhdGlvbkZyb21TdHJpbmcoZHVyLCBmbXQpIHtcbiAgICBjb25zdCB0b2tlblRvRmllbGQgPSAodG9rZW4pID0+IHtcbiAgICAgICAgc3dpdGNoICh0b2tlblswXSkge1xuICAgICAgICAgIGNhc2UgXCJTXCI6XG4gICAgICAgICAgICByZXR1cm4gXCJtaWxsaXNlY29uZFwiO1xuICAgICAgICAgIGNhc2UgXCJzXCI6XG4gICAgICAgICAgICByZXR1cm4gXCJzZWNvbmRcIjtcbiAgICAgICAgICBjYXNlIFwibVwiOlxuICAgICAgICAgICAgcmV0dXJuIFwibWludXRlXCI7XG4gICAgICAgICAgY2FzZSBcImhcIjpcbiAgICAgICAgICAgIHJldHVybiBcImhvdXJcIjtcbiAgICAgICAgICBjYXNlIFwiZFwiOlxuICAgICAgICAgICAgcmV0dXJuIFwiZGF5XCI7XG4gICAgICAgICAgY2FzZSBcIndcIjpcbiAgICAgICAgICAgIHJldHVybiBcIndlZWtcIjtcbiAgICAgICAgICBjYXNlIFwiTVwiOlxuICAgICAgICAgICAgcmV0dXJuIFwibW9udGhcIjtcbiAgICAgICAgICBjYXNlIFwieVwiOlxuICAgICAgICAgICAgcmV0dXJuIFwieWVhclwiO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHRva2VuVG9TdHJpbmcgPSAobGlsZHVyKSA9PiAodG9rZW4pID0+IHtcbiAgICAgICAgY29uc3QgbWFwcGVkID0gdG9rZW5Ub0ZpZWxkKHRva2VuKTtcbiAgICAgICAgaWYgKG1hcHBlZCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLm51bShsaWxkdXIuZ2V0KG1hcHBlZCksIHRva2VuLmxlbmd0aCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRva2VuO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgdG9rZW5zID0gRm9ybWF0dGVyLnBhcnNlRm9ybWF0KGZtdCksXG4gICAgICByZWFsVG9rZW5zID0gdG9rZW5zLnJlZHVjZShcbiAgICAgICAgKGZvdW5kLCB7IGxpdGVyYWwsIHZhbCB9KSA9PiAobGl0ZXJhbCA/IGZvdW5kIDogZm91bmQuY29uY2F0KHZhbCkpLFxuICAgICAgICBbXVxuICAgICAgKSxcbiAgICAgIGNvbGxhcHNlZCA9IGR1ci5zaGlmdFRvKC4uLnJlYWxUb2tlbnMubWFwKHRva2VuVG9GaWVsZCkuZmlsdGVyKCh0KSA9PiB0KSk7XG4gICAgcmV0dXJuIHN0cmluZ2lmeVRva2Vucyh0b2tlbnMsIHRva2VuVG9TdHJpbmcoY29sbGFwc2VkKSk7XG4gIH1cbn1cbiIsICJleHBvcnQgZGVmYXVsdCBjbGFzcyBJbnZhbGlkIHtcbiAgY29uc3RydWN0b3IocmVhc29uLCBleHBsYW5hdGlvbikge1xuICAgIHRoaXMucmVhc29uID0gcmVhc29uO1xuICAgIHRoaXMuZXhwbGFuYXRpb24gPSBleHBsYW5hdGlvbjtcbiAgfVxuXG4gIHRvTWVzc2FnZSgpIHtcbiAgICBpZiAodGhpcy5leHBsYW5hdGlvbikge1xuICAgICAgcmV0dXJuIGAke3RoaXMucmVhc29ufTogJHt0aGlzLmV4cGxhbmF0aW9ufWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLnJlYXNvbjtcbiAgICB9XG4gIH1cbn1cbiIsICJpbXBvcnQgeyBab25lSXNBYnN0cmFjdEVycm9yIH0gZnJvbSBcIi4vZXJyb3JzLmpzXCI7XG5cbi8qKlxuICogQGludGVyZmFjZVxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBab25lIHtcbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHpvbmVcbiAgICogQGFic3RyYWN0XG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBnZXQgdHlwZSgpIHtcbiAgICB0aHJvdyBuZXcgWm9uZUlzQWJzdHJhY3RFcnJvcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoaXMgem9uZS5cbiAgICogQGFic3RyYWN0XG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBnZXQgbmFtZSgpIHtcbiAgICB0aHJvdyBuZXcgWm9uZUlzQWJzdHJhY3RFcnJvcigpO1xuICB9XG5cbiAgZ2V0IGlhbmFOYW1lKCkge1xuICAgIHJldHVybiB0aGlzLm5hbWU7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB3aGV0aGVyIHRoZSBvZmZzZXQgaXMga25vd24gdG8gYmUgZml4ZWQgZm9yIHRoZSB3aG9sZSB5ZWFyLlxuICAgKiBAYWJzdHJhY3RcbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqL1xuICBnZXQgaXNVbml2ZXJzYWwoKSB7XG4gICAgdGhyb3cgbmV3IFpvbmVJc0Fic3RyYWN0RXJyb3IoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBvZmZzZXQncyBjb21tb24gbmFtZSAoc3VjaCBhcyBFU1QpIGF0IHRoZSBzcGVjaWZpZWQgdGltZXN0YW1wXG4gICAqIEBhYnN0cmFjdFxuICAgKiBAcGFyYW0ge251bWJlcn0gdHMgLSBFcG9jaCBtaWxsaXNlY29uZHMgZm9yIHdoaWNoIHRvIGdldCB0aGUgbmFtZVxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIE9wdGlvbnMgdG8gYWZmZWN0IHRoZSBmb3JtYXRcbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMuZm9ybWF0IC0gV2hhdCBzdHlsZSBvZiBvZmZzZXQgdG8gcmV0dXJuLiBBY2NlcHRzICdsb25nJyBvciAnc2hvcnQnLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5sb2NhbGUgLSBXaGF0IGxvY2FsZSB0byByZXR1cm4gdGhlIG9mZnNldCBuYW1lIGluLlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9XG4gICAqL1xuICBvZmZzZXROYW1lKHRzLCBvcHRzKSB7XG4gICAgdGhyb3cgbmV3IFpvbmVJc0Fic3RyYWN0RXJyb3IoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBvZmZzZXQncyB2YWx1ZSBhcyBhIHN0cmluZ1xuICAgKiBAYWJzdHJhY3RcbiAgICogQHBhcmFtIHtudW1iZXJ9IHRzIC0gRXBvY2ggbWlsbGlzZWNvbmRzIGZvciB3aGljaCB0byBnZXQgdGhlIG9mZnNldFxuICAgKiBAcGFyYW0ge3N0cmluZ30gZm9ybWF0IC0gV2hhdCBzdHlsZSBvZiBvZmZzZXQgdG8gcmV0dXJuLlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgQWNjZXB0cyAnbmFycm93JywgJ3Nob3J0Jywgb3IgJ3RlY2hpZScuIFJldHVybmluZyAnKzYnLCAnKzA2OjAwJywgb3IgJyswNjAwJyByZXNwZWN0aXZlbHlcbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgZm9ybWF0T2Zmc2V0KHRzLCBmb3JtYXQpIHtcbiAgICB0aHJvdyBuZXcgWm9uZUlzQWJzdHJhY3RFcnJvcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgb2Zmc2V0IGluIG1pbnV0ZXMgZm9yIHRoaXMgem9uZSBhdCB0aGUgc3BlY2lmaWVkIHRpbWVzdGFtcC5cbiAgICogQGFic3RyYWN0XG4gICAqIEBwYXJhbSB7bnVtYmVyfSB0cyAtIEVwb2NoIG1pbGxpc2Vjb25kcyBmb3Igd2hpY2ggdG8gY29tcHV0ZSB0aGUgb2Zmc2V0XG4gICAqIEByZXR1cm4ge251bWJlcn1cbiAgICovXG4gIG9mZnNldCh0cykge1xuICAgIHRocm93IG5ldyBab25lSXNBYnN0cmFjdEVycm9yKCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBab25lIGlzIGVxdWFsIHRvIGFub3RoZXIgem9uZVxuICAgKiBAYWJzdHJhY3RcbiAgICogQHBhcmFtIHtab25lfSBvdGhlclpvbmUgLSB0aGUgem9uZSB0byBjb21wYXJlXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqL1xuICBlcXVhbHMob3RoZXJab25lKSB7XG4gICAgdGhyb3cgbmV3IFpvbmVJc0Fic3RyYWN0RXJyb3IoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gd2hldGhlciB0aGlzIFpvbmUgaXMgdmFsaWQuXG4gICAqIEBhYnN0cmFjdFxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICovXG4gIGdldCBpc1ZhbGlkKCkge1xuICAgIHRocm93IG5ldyBab25lSXNBYnN0cmFjdEVycm9yKCk7XG4gIH1cbn1cbiIsICJpbXBvcnQgeyBmb3JtYXRPZmZzZXQsIHBhcnNlWm9uZUluZm8gfSBmcm9tIFwiLi4vaW1wbC91dGlsLmpzXCI7XG5pbXBvcnQgWm9uZSBmcm9tIFwiLi4vem9uZS5qc1wiO1xuXG5sZXQgc2luZ2xldG9uID0gbnVsbDtcblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBsb2NhbCB6b25lIGZvciB0aGlzIEphdmFTY3JpcHQgZW52aXJvbm1lbnQuXG4gKiBAaW1wbGVtZW50cyB7Wm9uZX1cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3lzdGVtWm9uZSBleHRlbmRzIFpvbmUge1xuICAvKipcbiAgICogR2V0IGEgc2luZ2xldG9uIGluc3RhbmNlIG9mIHRoZSBsb2NhbCB6b25lXG4gICAqIEByZXR1cm4ge1N5c3RlbVpvbmV9XG4gICAqL1xuICBzdGF0aWMgZ2V0IGluc3RhbmNlKCkge1xuICAgIGlmIChzaW5nbGV0b24gPT09IG51bGwpIHtcbiAgICAgIHNpbmdsZXRvbiA9IG5ldyBTeXN0ZW1ab25lKCk7XG4gICAgfVxuICAgIHJldHVybiBzaW5nbGV0b247XG4gIH1cblxuICAvKiogQG92ZXJyaWRlICoqL1xuICBnZXQgdHlwZSgpIHtcbiAgICByZXR1cm4gXCJzeXN0ZW1cIjtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIGdldCBuYW1lKCkge1xuICAgIHJldHVybiBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCgpLnJlc29sdmVkT3B0aW9ucygpLnRpbWVab25lO1xuICB9XG5cbiAgLyoqIEBvdmVycmlkZSAqKi9cbiAgZ2V0IGlzVW5pdmVyc2FsKCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIG9mZnNldE5hbWUodHMsIHsgZm9ybWF0LCBsb2NhbGUgfSkge1xuICAgIHJldHVybiBwYXJzZVpvbmVJbmZvKHRzLCBmb3JtYXQsIGxvY2FsZSk7XG4gIH1cblxuICAvKiogQG92ZXJyaWRlICoqL1xuICBmb3JtYXRPZmZzZXQodHMsIGZvcm1hdCkge1xuICAgIHJldHVybiBmb3JtYXRPZmZzZXQodGhpcy5vZmZzZXQodHMpLCBmb3JtYXQpO1xuICB9XG5cbiAgLyoqIEBvdmVycmlkZSAqKi9cbiAgb2Zmc2V0KHRzKSB7XG4gICAgcmV0dXJuIC1uZXcgRGF0ZSh0cykuZ2V0VGltZXpvbmVPZmZzZXQoKTtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIGVxdWFscyhvdGhlclpvbmUpIHtcbiAgICByZXR1cm4gb3RoZXJab25lLnR5cGUgPT09IFwic3lzdGVtXCI7XG4gIH1cblxuICAvKiogQG92ZXJyaWRlICoqL1xuICBnZXQgaXNWYWxpZCgpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuIiwgImltcG9ydCB7IGZvcm1hdE9mZnNldCwgcGFyc2Vab25lSW5mbywgaXNVbmRlZmluZWQsIG9ialRvTG9jYWxUUyB9IGZyb20gXCIuLi9pbXBsL3V0aWwuanNcIjtcbmltcG9ydCBab25lIGZyb20gXCIuLi96b25lLmpzXCI7XG5cbmxldCBkdGZDYWNoZSA9IHt9O1xuZnVuY3Rpb24gbWFrZURURih6b25lKSB7XG4gIGlmICghZHRmQ2FjaGVbem9uZV0pIHtcbiAgICBkdGZDYWNoZVt6b25lXSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KFwiZW4tVVNcIiwge1xuICAgICAgaG91cjEyOiBmYWxzZSxcbiAgICAgIHRpbWVab25lOiB6b25lLFxuICAgICAgeWVhcjogXCJudW1lcmljXCIsXG4gICAgICBtb250aDogXCIyLWRpZ2l0XCIsXG4gICAgICBkYXk6IFwiMi1kaWdpdFwiLFxuICAgICAgaG91cjogXCIyLWRpZ2l0XCIsXG4gICAgICBtaW51dGU6IFwiMi1kaWdpdFwiLFxuICAgICAgc2Vjb25kOiBcIjItZGlnaXRcIixcbiAgICAgIGVyYTogXCJzaG9ydFwiLFxuICAgIH0pO1xuICB9XG4gIHJldHVybiBkdGZDYWNoZVt6b25lXTtcbn1cblxuY29uc3QgdHlwZVRvUG9zID0ge1xuICB5ZWFyOiAwLFxuICBtb250aDogMSxcbiAgZGF5OiAyLFxuICBlcmE6IDMsXG4gIGhvdXI6IDQsXG4gIG1pbnV0ZTogNSxcbiAgc2Vjb25kOiA2LFxufTtcblxuZnVuY3Rpb24gaGFja3lPZmZzZXQoZHRmLCBkYXRlKSB7XG4gIGNvbnN0IGZvcm1hdHRlZCA9IGR0Zi5mb3JtYXQoZGF0ZSkucmVwbGFjZSgvXFx1MjAwRS9nLCBcIlwiKSxcbiAgICBwYXJzZWQgPSAvKFxcZCspXFwvKFxcZCspXFwvKFxcZCspIChBRHxCQyksPyAoXFxkKyk6KFxcZCspOihcXGQrKS8uZXhlYyhmb3JtYXR0ZWQpLFxuICAgIFssIGZNb250aCwgZkRheSwgZlllYXIsIGZhZE9yQmMsIGZIb3VyLCBmTWludXRlLCBmU2Vjb25kXSA9IHBhcnNlZDtcbiAgcmV0dXJuIFtmWWVhciwgZk1vbnRoLCBmRGF5LCBmYWRPckJjLCBmSG91ciwgZk1pbnV0ZSwgZlNlY29uZF07XG59XG5cbmZ1bmN0aW9uIHBhcnRzT2Zmc2V0KGR0ZiwgZGF0ZSkge1xuICBjb25zdCBmb3JtYXR0ZWQgPSBkdGYuZm9ybWF0VG9QYXJ0cyhkYXRlKTtcbiAgY29uc3QgZmlsbGVkID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZm9ybWF0dGVkLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgeyB0eXBlLCB2YWx1ZSB9ID0gZm9ybWF0dGVkW2ldO1xuICAgIGNvbnN0IHBvcyA9IHR5cGVUb1Bvc1t0eXBlXTtcblxuICAgIGlmICh0eXBlID09PSBcImVyYVwiKSB7XG4gICAgICBmaWxsZWRbcG9zXSA9IHZhbHVlO1xuICAgIH0gZWxzZSBpZiAoIWlzVW5kZWZpbmVkKHBvcykpIHtcbiAgICAgIGZpbGxlZFtwb3NdID0gcGFyc2VJbnQodmFsdWUsIDEwKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZpbGxlZDtcbn1cblxubGV0IGlhbmFab25lQ2FjaGUgPSB7fTtcbi8qKlxuICogQSB6b25lIGlkZW50aWZpZWQgYnkgYW4gSUFOQSBpZGVudGlmaWVyLCBsaWtlIEFtZXJpY2EvTmV3X1lvcmtcbiAqIEBpbXBsZW1lbnRzIHtab25lfVxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBJQU5BWm9uZSBleHRlbmRzIFpvbmUge1xuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBab25lIG5hbWVcbiAgICogQHJldHVybiB7SUFOQVpvbmV9XG4gICAqL1xuICBzdGF0aWMgY3JlYXRlKG5hbWUpIHtcbiAgICBpZiAoIWlhbmFab25lQ2FjaGVbbmFtZV0pIHtcbiAgICAgIGlhbmFab25lQ2FjaGVbbmFtZV0gPSBuZXcgSUFOQVpvbmUobmFtZSk7XG4gICAgfVxuICAgIHJldHVybiBpYW5hWm9uZUNhY2hlW25hbWVdO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0IGxvY2FsIGNhY2hlcy4gU2hvdWxkIG9ubHkgYmUgbmVjZXNzYXJ5IGluIHRlc3Rpbmcgc2NlbmFyaW9zLlxuICAgKiBAcmV0dXJuIHt2b2lkfVxuICAgKi9cbiAgc3RhdGljIHJlc2V0Q2FjaGUoKSB7XG4gICAgaWFuYVpvbmVDYWNoZSA9IHt9O1xuICAgIGR0ZkNhY2hlID0ge307XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB3aGV0aGVyIHRoZSBwcm92aWRlZCBzdHJpbmcgaXMgYSB2YWxpZCBzcGVjaWZpZXIuIFRoaXMgb25seSBjaGVja3MgdGhlIHN0cmluZydzIGZvcm1hdCwgbm90IHRoYXQgdGhlIHNwZWNpZmllciBpZGVudGlmaWVzIGEga25vd24gem9uZTsgc2VlIGlzVmFsaWRab25lIGZvciB0aGF0LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcyAtIFRoZSBzdHJpbmcgdG8gY2hlY2sgdmFsaWRpdHkgb25cbiAgICogQGV4YW1wbGUgSUFOQVpvbmUuaXNWYWxpZFNwZWNpZmllcihcIkFtZXJpY2EvTmV3X1lvcmtcIikgLy89PiB0cnVlXG4gICAqIEBleGFtcGxlIElBTkFab25lLmlzVmFsaWRTcGVjaWZpZXIoXCJTcG9ydH5+YmxvcnBcIikgLy89PiBmYWxzZVxuICAgKiBAZGVwcmVjYXRlZCBUaGlzIG1ldGhvZCByZXR1cm5zIGZhbHNlIGZvciBzb21lIHZhbGlkIElBTkEgbmFtZXMuIFVzZSBpc1ZhbGlkWm9uZSBpbnN0ZWFkLlxuICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgKi9cbiAgc3RhdGljIGlzVmFsaWRTcGVjaWZpZXIocykge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWRab25lKHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgd2hldGhlciB0aGUgcHJvdmlkZWQgc3RyaW5nIGlkZW50aWZpZXMgYSByZWFsIHpvbmVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHpvbmUgLSBUaGUgc3RyaW5nIHRvIGNoZWNrXG4gICAqIEBleGFtcGxlIElBTkFab25lLmlzVmFsaWRab25lKFwiQW1lcmljYS9OZXdfWW9ya1wiKSAvLz0+IHRydWVcbiAgICogQGV4YW1wbGUgSUFOQVpvbmUuaXNWYWxpZFpvbmUoXCJGYW50YXNpYS9DYXN0bGVcIikgLy89PiBmYWxzZVxuICAgKiBAZXhhbXBsZSBJQU5BWm9uZS5pc1ZhbGlkWm9uZShcIlNwb3J0fn5ibG9ycFwiKSAvLz0+IGZhbHNlXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqL1xuICBzdGF0aWMgaXNWYWxpZFpvbmUoem9uZSkge1xuICAgIGlmICghem9uZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoXCJlbi1VU1wiLCB7IHRpbWVab25lOiB6b25lIH0pLmZvcm1hdCgpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKG5hbWUpIHtcbiAgICBzdXBlcigpO1xuICAgIC8qKiBAcHJpdmF0ZSAqKi9cbiAgICB0aGlzLnpvbmVOYW1lID0gbmFtZTtcbiAgICAvKiogQHByaXZhdGUgKiovXG4gICAgdGhpcy52YWxpZCA9IElBTkFab25lLmlzVmFsaWRab25lKG5hbWUpO1xuICB9XG5cbiAgLyoqIEBvdmVycmlkZSAqKi9cbiAgZ2V0IHR5cGUoKSB7XG4gICAgcmV0dXJuIFwiaWFuYVwiO1xuICB9XG5cbiAgLyoqIEBvdmVycmlkZSAqKi9cbiAgZ2V0IG5hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuem9uZU5hbWU7XG4gIH1cblxuICAvKiogQG92ZXJyaWRlICoqL1xuICBnZXQgaXNVbml2ZXJzYWwoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqIEBvdmVycmlkZSAqKi9cbiAgb2Zmc2V0TmFtZSh0cywgeyBmb3JtYXQsIGxvY2FsZSB9KSB7XG4gICAgcmV0dXJuIHBhcnNlWm9uZUluZm8odHMsIGZvcm1hdCwgbG9jYWxlLCB0aGlzLm5hbWUpO1xuICB9XG5cbiAgLyoqIEBvdmVycmlkZSAqKi9cbiAgZm9ybWF0T2Zmc2V0KHRzLCBmb3JtYXQpIHtcbiAgICByZXR1cm4gZm9ybWF0T2Zmc2V0KHRoaXMub2Zmc2V0KHRzKSwgZm9ybWF0KTtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIG9mZnNldCh0cykge1xuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh0cyk7XG5cbiAgICBpZiAoaXNOYU4oZGF0ZSkpIHJldHVybiBOYU47XG5cbiAgICBjb25zdCBkdGYgPSBtYWtlRFRGKHRoaXMubmFtZSk7XG4gICAgbGV0IFt5ZWFyLCBtb250aCwgZGF5LCBhZE9yQmMsIGhvdXIsIG1pbnV0ZSwgc2Vjb25kXSA9IGR0Zi5mb3JtYXRUb1BhcnRzXG4gICAgICA/IHBhcnRzT2Zmc2V0KGR0ZiwgZGF0ZSlcbiAgICAgIDogaGFja3lPZmZzZXQoZHRmLCBkYXRlKTtcblxuICAgIGlmIChhZE9yQmMgPT09IFwiQkNcIikge1xuICAgICAgeWVhciA9IC1NYXRoLmFicyh5ZWFyKSArIDE7XG4gICAgfVxuXG4gICAgLy8gYmVjYXVzZSB3ZSdyZSB1c2luZyBob3VyMTIgYW5kIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTEwMjU1NjQmY2FuPTImcT0lMjIyNCUzQTAwJTIyJTIwZGF0ZXRpbWVmb3JtYXRcbiAgICBjb25zdCBhZGp1c3RlZEhvdXIgPSBob3VyID09PSAyNCA/IDAgOiBob3VyO1xuXG4gICAgY29uc3QgYXNVVEMgPSBvYmpUb0xvY2FsVFMoe1xuICAgICAgeWVhcixcbiAgICAgIG1vbnRoLFxuICAgICAgZGF5LFxuICAgICAgaG91cjogYWRqdXN0ZWRIb3VyLFxuICAgICAgbWludXRlLFxuICAgICAgc2Vjb25kLFxuICAgICAgbWlsbGlzZWNvbmQ6IDAsXG4gICAgfSk7XG5cbiAgICBsZXQgYXNUUyA9ICtkYXRlO1xuICAgIGNvbnN0IG92ZXIgPSBhc1RTICUgMTAwMDtcbiAgICBhc1RTIC09IG92ZXIgPj0gMCA/IG92ZXIgOiAxMDAwICsgb3ZlcjtcbiAgICByZXR1cm4gKGFzVVRDIC0gYXNUUykgLyAoNjAgKiAxMDAwKTtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIGVxdWFscyhvdGhlclpvbmUpIHtcbiAgICByZXR1cm4gb3RoZXJab25lLnR5cGUgPT09IFwiaWFuYVwiICYmIG90aGVyWm9uZS5uYW1lID09PSB0aGlzLm5hbWU7XG4gIH1cblxuICAvKiogQG92ZXJyaWRlICoqL1xuICBnZXQgaXNWYWxpZCgpIHtcbiAgICByZXR1cm4gdGhpcy52YWxpZDtcbiAgfVxufVxuIiwgImltcG9ydCB7IGZvcm1hdE9mZnNldCwgc2lnbmVkT2Zmc2V0IH0gZnJvbSBcIi4uL2ltcGwvdXRpbC5qc1wiO1xuaW1wb3J0IFpvbmUgZnJvbSBcIi4uL3pvbmUuanNcIjtcblxubGV0IHNpbmdsZXRvbiA9IG51bGw7XG5cbi8qKlxuICogQSB6b25lIHdpdGggYSBmaXhlZCBvZmZzZXQgKG1lYW5pbmcgbm8gRFNUKVxuICogQGltcGxlbWVudHMge1pvbmV9XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZpeGVkT2Zmc2V0Wm9uZSBleHRlbmRzIFpvbmUge1xuICAvKipcbiAgICogR2V0IGEgc2luZ2xldG9uIGluc3RhbmNlIG9mIFVUQ1xuICAgKiBAcmV0dXJuIHtGaXhlZE9mZnNldFpvbmV9XG4gICAqL1xuICBzdGF0aWMgZ2V0IHV0Y0luc3RhbmNlKCkge1xuICAgIGlmIChzaW5nbGV0b24gPT09IG51bGwpIHtcbiAgICAgIHNpbmdsZXRvbiA9IG5ldyBGaXhlZE9mZnNldFpvbmUoMCk7XG4gICAgfVxuICAgIHJldHVybiBzaW5nbGV0b247XG4gIH1cblxuICAvKipcbiAgICogR2V0IGFuIGluc3RhbmNlIHdpdGggYSBzcGVjaWZpZWQgb2Zmc2V0XG4gICAqIEBwYXJhbSB7bnVtYmVyfSBvZmZzZXQgLSBUaGUgb2Zmc2V0IGluIG1pbnV0ZXNcbiAgICogQHJldHVybiB7Rml4ZWRPZmZzZXRab25lfVxuICAgKi9cbiAgc3RhdGljIGluc3RhbmNlKG9mZnNldCkge1xuICAgIHJldHVybiBvZmZzZXQgPT09IDAgPyBGaXhlZE9mZnNldFpvbmUudXRjSW5zdGFuY2UgOiBuZXcgRml4ZWRPZmZzZXRab25lKG9mZnNldCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGFuIGluc3RhbmNlIG9mIEZpeGVkT2Zmc2V0Wm9uZSBmcm9tIGEgVVRDIG9mZnNldCBzdHJpbmcsIGxpa2UgXCJVVEMrNlwiXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzIC0gVGhlIG9mZnNldCBzdHJpbmcgdG8gcGFyc2VcbiAgICogQGV4YW1wbGUgRml4ZWRPZmZzZXRab25lLnBhcnNlU3BlY2lmaWVyKFwiVVRDKzZcIilcbiAgICogQGV4YW1wbGUgRml4ZWRPZmZzZXRab25lLnBhcnNlU3BlY2lmaWVyKFwiVVRDKzA2XCIpXG4gICAqIEBleGFtcGxlIEZpeGVkT2Zmc2V0Wm9uZS5wYXJzZVNwZWNpZmllcihcIlVUQy02OjAwXCIpXG4gICAqIEByZXR1cm4ge0ZpeGVkT2Zmc2V0Wm9uZX1cbiAgICovXG4gIHN0YXRpYyBwYXJzZVNwZWNpZmllcihzKSB7XG4gICAgaWYgKHMpIHtcbiAgICAgIGNvbnN0IHIgPSBzLm1hdGNoKC9edXRjKD86KFsrLV1cXGR7MSwyfSkoPzo6KFxcZHsyfSkpPyk/JC9pKTtcbiAgICAgIGlmIChyKSB7XG4gICAgICAgIHJldHVybiBuZXcgRml4ZWRPZmZzZXRab25lKHNpZ25lZE9mZnNldChyWzFdLCByWzJdKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3RydWN0b3Iob2Zmc2V0KSB7XG4gICAgc3VwZXIoKTtcbiAgICAvKiogQHByaXZhdGUgKiovXG4gICAgdGhpcy5maXhlZCA9IG9mZnNldDtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIGdldCB0eXBlKCkge1xuICAgIHJldHVybiBcImZpeGVkXCI7XG4gIH1cblxuICAvKiogQG92ZXJyaWRlICoqL1xuICBnZXQgbmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5maXhlZCA9PT0gMCA/IFwiVVRDXCIgOiBgVVRDJHtmb3JtYXRPZmZzZXQodGhpcy5maXhlZCwgXCJuYXJyb3dcIil9YDtcbiAgfVxuXG4gIGdldCBpYW5hTmFtZSgpIHtcbiAgICBpZiAodGhpcy5maXhlZCA9PT0gMCkge1xuICAgICAgcmV0dXJuIFwiRXRjL1VUQ1wiO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYEV0Yy9HTVQke2Zvcm1hdE9mZnNldCgtdGhpcy5maXhlZCwgXCJuYXJyb3dcIil9YDtcbiAgICB9XG4gIH1cblxuICAvKiogQG92ZXJyaWRlICoqL1xuICBvZmZzZXROYW1lKCkge1xuICAgIHJldHVybiB0aGlzLm5hbWU7XG4gIH1cblxuICAvKiogQG92ZXJyaWRlICoqL1xuICBmb3JtYXRPZmZzZXQodHMsIGZvcm1hdCkge1xuICAgIHJldHVybiBmb3JtYXRPZmZzZXQodGhpcy5maXhlZCwgZm9ybWF0KTtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIGdldCBpc1VuaXZlcnNhbCgpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIG9mZnNldCgpIHtcbiAgICByZXR1cm4gdGhpcy5maXhlZDtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIGVxdWFscyhvdGhlclpvbmUpIHtcbiAgICByZXR1cm4gb3RoZXJab25lLnR5cGUgPT09IFwiZml4ZWRcIiAmJiBvdGhlclpvbmUuZml4ZWQgPT09IHRoaXMuZml4ZWQ7XG4gIH1cblxuICAvKiogQG92ZXJyaWRlICoqL1xuICBnZXQgaXNWYWxpZCgpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuIiwgImltcG9ydCBab25lIGZyb20gXCIuLi96b25lLmpzXCI7XG5cbi8qKlxuICogQSB6b25lIHRoYXQgZmFpbGVkIHRvIHBhcnNlLiBZb3Ugc2hvdWxkIG5ldmVyIG5lZWQgdG8gaW5zdGFudGlhdGUgdGhpcy5cbiAqIEBpbXBsZW1lbnRzIHtab25lfVxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBJbnZhbGlkWm9uZSBleHRlbmRzIFpvbmUge1xuICBjb25zdHJ1Y3Rvcih6b25lTmFtZSkge1xuICAgIHN1cGVyKCk7XG4gICAgLyoqICBAcHJpdmF0ZSAqL1xuICAgIHRoaXMuem9uZU5hbWUgPSB6b25lTmFtZTtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIGdldCB0eXBlKCkge1xuICAgIHJldHVybiBcImludmFsaWRcIjtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIGdldCBuYW1lKCkge1xuICAgIHJldHVybiB0aGlzLnpvbmVOYW1lO1xuICB9XG5cbiAgLyoqIEBvdmVycmlkZSAqKi9cbiAgZ2V0IGlzVW5pdmVyc2FsKCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIG9mZnNldE5hbWUoKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvKiogQG92ZXJyaWRlICoqL1xuICBmb3JtYXRPZmZzZXQoKSB7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICAvKiogQG92ZXJyaWRlICoqL1xuICBvZmZzZXQoKSB7XG4gICAgcmV0dXJuIE5hTjtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIGVxdWFscygpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKiogQG92ZXJyaWRlICoqL1xuICBnZXQgaXNWYWxpZCgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiIsICIvKipcbiAqIEBwcml2YXRlXG4gKi9cblxuaW1wb3J0IFpvbmUgZnJvbSBcIi4uL3pvbmUuanNcIjtcbmltcG9ydCBJQU5BWm9uZSBmcm9tIFwiLi4vem9uZXMvSUFOQVpvbmUuanNcIjtcbmltcG9ydCBGaXhlZE9mZnNldFpvbmUgZnJvbSBcIi4uL3pvbmVzL2ZpeGVkT2Zmc2V0Wm9uZS5qc1wiO1xuaW1wb3J0IEludmFsaWRab25lIGZyb20gXCIuLi96b25lcy9pbnZhbGlkWm9uZS5qc1wiO1xuXG5pbXBvcnQgeyBpc1VuZGVmaW5lZCwgaXNTdHJpbmcsIGlzTnVtYmVyIH0gZnJvbSBcIi4vdXRpbC5qc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplWm9uZShpbnB1dCwgZGVmYXVsdFpvbmUpIHtcbiAgbGV0IG9mZnNldDtcbiAgaWYgKGlzVW5kZWZpbmVkKGlucHV0KSB8fCBpbnB1dCA9PT0gbnVsbCkge1xuICAgIHJldHVybiBkZWZhdWx0Wm9uZTtcbiAgfSBlbHNlIGlmIChpbnB1dCBpbnN0YW5jZW9mIFpvbmUpIHtcbiAgICByZXR1cm4gaW5wdXQ7XG4gIH0gZWxzZSBpZiAoaXNTdHJpbmcoaW5wdXQpKSB7XG4gICAgY29uc3QgbG93ZXJlZCA9IGlucHV0LnRvTG93ZXJDYXNlKCk7XG4gICAgaWYgKGxvd2VyZWQgPT09IFwibG9jYWxcIiB8fCBsb3dlcmVkID09PSBcInN5c3RlbVwiKSByZXR1cm4gZGVmYXVsdFpvbmU7XG4gICAgZWxzZSBpZiAobG93ZXJlZCA9PT0gXCJ1dGNcIiB8fCBsb3dlcmVkID09PSBcImdtdFwiKSByZXR1cm4gRml4ZWRPZmZzZXRab25lLnV0Y0luc3RhbmNlO1xuICAgIGVsc2UgcmV0dXJuIEZpeGVkT2Zmc2V0Wm9uZS5wYXJzZVNwZWNpZmllcihsb3dlcmVkKSB8fCBJQU5BWm9uZS5jcmVhdGUoaW5wdXQpO1xuICB9IGVsc2UgaWYgKGlzTnVtYmVyKGlucHV0KSkge1xuICAgIHJldHVybiBGaXhlZE9mZnNldFpvbmUuaW5zdGFuY2UoaW5wdXQpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBpbnB1dCA9PT0gXCJvYmplY3RcIiAmJiBpbnB1dC5vZmZzZXQgJiYgdHlwZW9mIGlucHV0Lm9mZnNldCA9PT0gXCJudW1iZXJcIikge1xuICAgIC8vIFRoaXMgaXMgZHVtYiwgYnV0IHRoZSBpbnN0YW5jZW9mIGNoZWNrIGFib3ZlIGRvZXNuJ3Qgc2VlbSB0byByZWFsbHkgd29ya1xuICAgIC8vIHNvIHdlJ3JlIGR1Y2sgY2hlY2tpbmcgaXRcbiAgICByZXR1cm4gaW5wdXQ7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG5ldyBJbnZhbGlkWm9uZShpbnB1dCk7XG4gIH1cbn1cbiIsICJpbXBvcnQgU3lzdGVtWm9uZSBmcm9tIFwiLi96b25lcy9zeXN0ZW1ab25lLmpzXCI7XG5pbXBvcnQgSUFOQVpvbmUgZnJvbSBcIi4vem9uZXMvSUFOQVpvbmUuanNcIjtcbmltcG9ydCBMb2NhbGUgZnJvbSBcIi4vaW1wbC9sb2NhbGUuanNcIjtcblxuaW1wb3J0IHsgbm9ybWFsaXplWm9uZSB9IGZyb20gXCIuL2ltcGwvem9uZVV0aWwuanNcIjtcblxubGV0IG5vdyA9ICgpID0+IERhdGUubm93KCksXG4gIGRlZmF1bHRab25lID0gXCJzeXN0ZW1cIixcbiAgZGVmYXVsdExvY2FsZSA9IG51bGwsXG4gIGRlZmF1bHROdW1iZXJpbmdTeXN0ZW0gPSBudWxsLFxuICBkZWZhdWx0T3V0cHV0Q2FsZW5kYXIgPSBudWxsLFxuICB0aHJvd09uSW52YWxpZDtcblxuLyoqXG4gKiBTZXR0aW5ncyBjb250YWlucyBzdGF0aWMgZ2V0dGVycyBhbmQgc2V0dGVycyB0aGF0IGNvbnRyb2wgTHV4b24ncyBvdmVyYWxsIGJlaGF2aW9yLiBMdXhvbiBpcyBhIHNpbXBsZSBsaWJyYXJ5IHdpdGggZmV3IG9wdGlvbnMsIGJ1dCB0aGUgb25lcyBpdCBkb2VzIGhhdmUgbGl2ZSBoZXJlLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTZXR0aW5ncyB7XG4gIC8qKlxuICAgKiBHZXQgdGhlIGNhbGxiYWNrIGZvciByZXR1cm5pbmcgdGhlIGN1cnJlbnQgdGltZXN0YW1wLlxuICAgKiBAdHlwZSB7ZnVuY3Rpb259XG4gICAqL1xuICBzdGF0aWMgZ2V0IG5vdygpIHtcbiAgICByZXR1cm4gbm93O1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgY2FsbGJhY2sgZm9yIHJldHVybmluZyB0aGUgY3VycmVudCB0aW1lc3RhbXAuXG4gICAqIFRoZSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIGEgbnVtYmVyLCB3aGljaCB3aWxsIGJlIGludGVycHJldGVkIGFzIGFuIEVwb2NoIG1pbGxpc2Vjb25kIGNvdW50XG4gICAqIEB0eXBlIHtmdW5jdGlvbn1cbiAgICogQGV4YW1wbGUgU2V0dGluZ3Mubm93ID0gKCkgPT4gRGF0ZS5ub3coKSArIDMwMDAgLy8gcHJldGVuZCBpdCBpcyAzIHNlY29uZHMgaW4gdGhlIGZ1dHVyZVxuICAgKiBAZXhhbXBsZSBTZXR0aW5ncy5ub3cgPSAoKSA9PiAwIC8vIGFsd2F5cyBwcmV0ZW5kIGl0J3MgSmFuIDEsIDE5NzAgYXQgbWlkbmlnaHQgaW4gVVRDIHRpbWVcbiAgICovXG4gIHN0YXRpYyBzZXQgbm93KG4pIHtcbiAgICBub3cgPSBuO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgZGVmYXVsdCB0aW1lIHpvbmUgdG8gY3JlYXRlIERhdGVUaW1lcyBpbi4gRG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGluc3RhbmNlcy5cbiAgICogVXNlIHRoZSB2YWx1ZSBcInN5c3RlbVwiIHRvIHJlc2V0IHRoaXMgdmFsdWUgdG8gdGhlIHN5c3RlbSdzIHRpbWUgem9uZS5cbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIHN0YXRpYyBzZXQgZGVmYXVsdFpvbmUoem9uZSkge1xuICAgIGRlZmF1bHRab25lID0gem9uZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGRlZmF1bHQgdGltZSB6b25lIG9iamVjdCBjdXJyZW50bHkgdXNlZCB0byBjcmVhdGUgRGF0ZVRpbWVzLiBEb2VzIG5vdCBhZmZlY3QgZXhpc3RpbmcgaW5zdGFuY2VzLlxuICAgKiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyB0aGUgc3lzdGVtJ3MgdGltZSB6b25lICh0aGUgb25lIHNldCBvbiB0aGUgbWFjaGluZSB0aGF0IHJ1bnMgdGhpcyBjb2RlKS5cbiAgICogQHR5cGUge1pvbmV9XG4gICAqL1xuICBzdGF0aWMgZ2V0IGRlZmF1bHRab25lKCkge1xuICAgIHJldHVybiBub3JtYWxpemVab25lKGRlZmF1bHRab25lLCBTeXN0ZW1ab25lLmluc3RhbmNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGRlZmF1bHQgbG9jYWxlIHRvIGNyZWF0ZSBEYXRlVGltZXMgd2l0aC4gRG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGluc3RhbmNlcy5cbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIHN0YXRpYyBnZXQgZGVmYXVsdExvY2FsZSgpIHtcbiAgICByZXR1cm4gZGVmYXVsdExvY2FsZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGRlZmF1bHQgbG9jYWxlIHRvIGNyZWF0ZSBEYXRlVGltZXMgd2l0aC4gRG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGluc3RhbmNlcy5cbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIHN0YXRpYyBzZXQgZGVmYXVsdExvY2FsZShsb2NhbGUpIHtcbiAgICBkZWZhdWx0TG9jYWxlID0gbG9jYWxlO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZGVmYXVsdCBudW1iZXJpbmcgc3lzdGVtIHRvIGNyZWF0ZSBEYXRlVGltZXMgd2l0aC4gRG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGluc3RhbmNlcy5cbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIHN0YXRpYyBnZXQgZGVmYXVsdE51bWJlcmluZ1N5c3RlbSgpIHtcbiAgICByZXR1cm4gZGVmYXVsdE51bWJlcmluZ1N5c3RlbTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGRlZmF1bHQgbnVtYmVyaW5nIHN5c3RlbSB0byBjcmVhdGUgRGF0ZVRpbWVzIHdpdGguIERvZXMgbm90IGFmZmVjdCBleGlzdGluZyBpbnN0YW5jZXMuXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBzdGF0aWMgc2V0IGRlZmF1bHROdW1iZXJpbmdTeXN0ZW0obnVtYmVyaW5nU3lzdGVtKSB7XG4gICAgZGVmYXVsdE51bWJlcmluZ1N5c3RlbSA9IG51bWJlcmluZ1N5c3RlbTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGRlZmF1bHQgb3V0cHV0IGNhbGVuZGFyIHRvIGNyZWF0ZSBEYXRlVGltZXMgd2l0aC4gRG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGluc3RhbmNlcy5cbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIHN0YXRpYyBnZXQgZGVmYXVsdE91dHB1dENhbGVuZGFyKCkge1xuICAgIHJldHVybiBkZWZhdWx0T3V0cHV0Q2FsZW5kYXI7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBkZWZhdWx0IG91dHB1dCBjYWxlbmRhciB0byBjcmVhdGUgRGF0ZVRpbWVzIHdpdGguIERvZXMgbm90IGFmZmVjdCBleGlzdGluZyBpbnN0YW5jZXMuXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBzdGF0aWMgc2V0IGRlZmF1bHRPdXRwdXRDYWxlbmRhcihvdXRwdXRDYWxlbmRhcikge1xuICAgIGRlZmF1bHRPdXRwdXRDYWxlbmRhciA9IG91dHB1dENhbGVuZGFyO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB3aGV0aGVyIEx1eG9uIHdpbGwgdGhyb3cgd2hlbiBpdCBlbmNvdW50ZXJzIGludmFsaWQgRGF0ZVRpbWVzLCBEdXJhdGlvbnMsIG9yIEludGVydmFsc1xuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICovXG4gIHN0YXRpYyBnZXQgdGhyb3dPbkludmFsaWQoKSB7XG4gICAgcmV0dXJuIHRocm93T25JbnZhbGlkO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB3aGV0aGVyIEx1eG9uIHdpbGwgdGhyb3cgd2hlbiBpdCBlbmNvdW50ZXJzIGludmFsaWQgRGF0ZVRpbWVzLCBEdXJhdGlvbnMsIG9yIEludGVydmFsc1xuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICovXG4gIHN0YXRpYyBzZXQgdGhyb3dPbkludmFsaWQodCkge1xuICAgIHRocm93T25JbnZhbGlkID0gdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldCBMdXhvbidzIGdsb2JhbCBjYWNoZXMuIFNob3VsZCBvbmx5IGJlIG5lY2Vzc2FyeSBpbiB0ZXN0aW5nIHNjZW5hcmlvcy5cbiAgICogQHJldHVybiB7dm9pZH1cbiAgICovXG4gIHN0YXRpYyByZXNldENhY2hlcygpIHtcbiAgICBMb2NhbGUucmVzZXRDYWNoZSgpO1xuICAgIElBTkFab25lLnJlc2V0Q2FjaGUoKTtcbiAgfVxufVxuIiwgImltcG9ydCB7IHBhZFN0YXJ0LCByb3VuZFRvLCBoYXNSZWxhdGl2ZSB9IGZyb20gXCIuL3V0aWwuanNcIjtcbmltcG9ydCAqIGFzIEVuZ2xpc2ggZnJvbSBcIi4vZW5nbGlzaC5qc1wiO1xuaW1wb3J0IFNldHRpbmdzIGZyb20gXCIuLi9zZXR0aW5ncy5qc1wiO1xuaW1wb3J0IERhdGVUaW1lIGZyb20gXCIuLi9kYXRldGltZS5qc1wiO1xuaW1wb3J0IElBTkFab25lIGZyb20gXCIuLi96b25lcy9JQU5BWm9uZS5qc1wiO1xuXG4vLyB0b2RvIC0gcmVtYXAgY2FjaGluZ1xuXG5sZXQgaW50bExGQ2FjaGUgPSB7fTtcbmZ1bmN0aW9uIGdldENhY2hlZExGKGxvY1N0cmluZywgb3B0cyA9IHt9KSB7XG4gIGNvbnN0IGtleSA9IEpTT04uc3RyaW5naWZ5KFtsb2NTdHJpbmcsIG9wdHNdKTtcbiAgbGV0IGR0ZiA9IGludGxMRkNhY2hlW2tleV07XG4gIGlmICghZHRmKSB7XG4gICAgZHRmID0gbmV3IEludGwuTGlzdEZvcm1hdChsb2NTdHJpbmcsIG9wdHMpO1xuICAgIGludGxMRkNhY2hlW2tleV0gPSBkdGY7XG4gIH1cbiAgcmV0dXJuIGR0Zjtcbn1cblxubGV0IGludGxEVENhY2hlID0ge307XG5mdW5jdGlvbiBnZXRDYWNoZWREVEYobG9jU3RyaW5nLCBvcHRzID0ge30pIHtcbiAgY29uc3Qga2V5ID0gSlNPTi5zdHJpbmdpZnkoW2xvY1N0cmluZywgb3B0c10pO1xuICBsZXQgZHRmID0gaW50bERUQ2FjaGVba2V5XTtcbiAgaWYgKCFkdGYpIHtcbiAgICBkdGYgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsb2NTdHJpbmcsIG9wdHMpO1xuICAgIGludGxEVENhY2hlW2tleV0gPSBkdGY7XG4gIH1cbiAgcmV0dXJuIGR0Zjtcbn1cblxubGV0IGludGxOdW1DYWNoZSA9IHt9O1xuZnVuY3Rpb24gZ2V0Q2FjaGVkSU5GKGxvY1N0cmluZywgb3B0cyA9IHt9KSB7XG4gIGNvbnN0IGtleSA9IEpTT04uc3RyaW5naWZ5KFtsb2NTdHJpbmcsIG9wdHNdKTtcbiAgbGV0IGluZiA9IGludGxOdW1DYWNoZVtrZXldO1xuICBpZiAoIWluZikge1xuICAgIGluZiA9IG5ldyBJbnRsLk51bWJlckZvcm1hdChsb2NTdHJpbmcsIG9wdHMpO1xuICAgIGludGxOdW1DYWNoZVtrZXldID0gaW5mO1xuICB9XG4gIHJldHVybiBpbmY7XG59XG5cbmxldCBpbnRsUmVsQ2FjaGUgPSB7fTtcbmZ1bmN0aW9uIGdldENhY2hlZFJURihsb2NTdHJpbmcsIG9wdHMgPSB7fSkge1xuICBjb25zdCB7IGJhc2UsIC4uLmNhY2hlS2V5T3B0cyB9ID0gb3B0czsgLy8gZXhjbHVkZSBgYmFzZWAgZnJvbSB0aGUgb3B0aW9uc1xuICBjb25zdCBrZXkgPSBKU09OLnN0cmluZ2lmeShbbG9jU3RyaW5nLCBjYWNoZUtleU9wdHNdKTtcbiAgbGV0IGluZiA9IGludGxSZWxDYWNoZVtrZXldO1xuICBpZiAoIWluZikge1xuICAgIGluZiA9IG5ldyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdChsb2NTdHJpbmcsIG9wdHMpO1xuICAgIGludGxSZWxDYWNoZVtrZXldID0gaW5mO1xuICB9XG4gIHJldHVybiBpbmY7XG59XG5cbmxldCBzeXNMb2NhbGVDYWNoZSA9IG51bGw7XG5mdW5jdGlvbiBzeXN0ZW1Mb2NhbGUoKSB7XG4gIGlmIChzeXNMb2NhbGVDYWNoZSkge1xuICAgIHJldHVybiBzeXNMb2NhbGVDYWNoZTtcbiAgfSBlbHNlIHtcbiAgICBzeXNMb2NhbGVDYWNoZSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KCkucmVzb2x2ZWRPcHRpb25zKCkubG9jYWxlO1xuICAgIHJldHVybiBzeXNMb2NhbGVDYWNoZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBwYXJzZUxvY2FsZVN0cmluZyhsb2NhbGVTdHIpIHtcbiAgLy8gSSByZWFsbHkgd2FudCB0byBhdm9pZCB3cml0aW5nIGEgQkNQIDQ3IHBhcnNlclxuICAvLyBzZWUsIGUuZy4gaHR0cHM6Ly9naXRodWIuY29tL3dvb29ybS9iY3AtNDdcbiAgLy8gSW5zdGVhZCwgd2UnbGwgZG8gdGhpczpcblxuICAvLyBhKSBpZiB0aGUgc3RyaW5nIGhhcyBubyAtdSBleHRlbnNpb25zLCBqdXN0IGxlYXZlIGl0IGFsb25lXG4gIC8vIGIpIGlmIGl0IGRvZXMsIHVzZSBJbnRsIHRvIHJlc29sdmUgZXZlcnl0aGluZ1xuICAvLyBjKSBpZiBJbnRsIGZhaWxzLCB0cnkgYWdhaW4gd2l0aG91dCB0aGUgLXVcblxuICBjb25zdCB1SW5kZXggPSBsb2NhbGVTdHIuaW5kZXhPZihcIi11LVwiKTtcbiAgaWYgKHVJbmRleCA9PT0gLTEpIHtcbiAgICByZXR1cm4gW2xvY2FsZVN0cl07XG4gIH0gZWxzZSB7XG4gICAgbGV0IG9wdGlvbnM7XG4gICAgY29uc3Qgc21hbGxlciA9IGxvY2FsZVN0ci5zdWJzdHJpbmcoMCwgdUluZGV4KTtcbiAgICB0cnkge1xuICAgICAgb3B0aW9ucyA9IGdldENhY2hlZERURihsb2NhbGVTdHIpLnJlc29sdmVkT3B0aW9ucygpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIG9wdGlvbnMgPSBnZXRDYWNoZWREVEYoc21hbGxlcikucmVzb2x2ZWRPcHRpb25zKCk7XG4gICAgfVxuXG4gICAgY29uc3QgeyBudW1iZXJpbmdTeXN0ZW0sIGNhbGVuZGFyIH0gPSBvcHRpb25zO1xuICAgIC8vIHJldHVybiB0aGUgc21hbGxlciBvbmUgc28gdGhhdCB3ZSBjYW4gYXBwZW5kIHRoZSBjYWxlbmRhciBhbmQgbnVtYmVyaW5nIG92ZXJyaWRlcyB0byBpdFxuICAgIHJldHVybiBbc21hbGxlciwgbnVtYmVyaW5nU3lzdGVtLCBjYWxlbmRhcl07XG4gIH1cbn1cblxuZnVuY3Rpb24gaW50bENvbmZpZ1N0cmluZyhsb2NhbGVTdHIsIG51bWJlcmluZ1N5c3RlbSwgb3V0cHV0Q2FsZW5kYXIpIHtcbiAgaWYgKG91dHB1dENhbGVuZGFyIHx8IG51bWJlcmluZ1N5c3RlbSkge1xuICAgIGxvY2FsZVN0ciArPSBcIi11XCI7XG5cbiAgICBpZiAob3V0cHV0Q2FsZW5kYXIpIHtcbiAgICAgIGxvY2FsZVN0ciArPSBgLWNhLSR7b3V0cHV0Q2FsZW5kYXJ9YDtcbiAgICB9XG5cbiAgICBpZiAobnVtYmVyaW5nU3lzdGVtKSB7XG4gICAgICBsb2NhbGVTdHIgKz0gYC1udS0ke251bWJlcmluZ1N5c3RlbX1gO1xuICAgIH1cbiAgICByZXR1cm4gbG9jYWxlU3RyO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBsb2NhbGVTdHI7XG4gIH1cbn1cblxuZnVuY3Rpb24gbWFwTW9udGhzKGYpIHtcbiAgY29uc3QgbXMgPSBbXTtcbiAgZm9yIChsZXQgaSA9IDE7IGkgPD0gMTI7IGkrKykge1xuICAgIGNvbnN0IGR0ID0gRGF0ZVRpbWUudXRjKDIwMTYsIGksIDEpO1xuICAgIG1zLnB1c2goZihkdCkpO1xuICB9XG4gIHJldHVybiBtcztcbn1cblxuZnVuY3Rpb24gbWFwV2Vla2RheXMoZikge1xuICBjb25zdCBtcyA9IFtdO1xuICBmb3IgKGxldCBpID0gMTsgaSA8PSA3OyBpKyspIHtcbiAgICBjb25zdCBkdCA9IERhdGVUaW1lLnV0YygyMDE2LCAxMSwgMTMgKyBpKTtcbiAgICBtcy5wdXNoKGYoZHQpKTtcbiAgfVxuICByZXR1cm4gbXM7XG59XG5cbmZ1bmN0aW9uIGxpc3RTdHVmZihsb2MsIGxlbmd0aCwgZGVmYXVsdE9LLCBlbmdsaXNoRm4sIGludGxGbikge1xuICBjb25zdCBtb2RlID0gbG9jLmxpc3RpbmdNb2RlKGRlZmF1bHRPSyk7XG5cbiAgaWYgKG1vZGUgPT09IFwiZXJyb3JcIikge1xuICAgIHJldHVybiBudWxsO1xuICB9IGVsc2UgaWYgKG1vZGUgPT09IFwiZW5cIikge1xuICAgIHJldHVybiBlbmdsaXNoRm4obGVuZ3RoKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gaW50bEZuKGxlbmd0aCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gc3VwcG9ydHNGYXN0TnVtYmVycyhsb2MpIHtcbiAgaWYgKGxvYy5udW1iZXJpbmdTeXN0ZW0gJiYgbG9jLm51bWJlcmluZ1N5c3RlbSAhPT0gXCJsYXRuXCIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIChcbiAgICAgIGxvYy5udW1iZXJpbmdTeXN0ZW0gPT09IFwibGF0blwiIHx8XG4gICAgICAhbG9jLmxvY2FsZSB8fFxuICAgICAgbG9jLmxvY2FsZS5zdGFydHNXaXRoKFwiZW5cIikgfHxcbiAgICAgIG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvYy5pbnRsKS5yZXNvbHZlZE9wdGlvbnMoKS5udW1iZXJpbmdTeXN0ZW0gPT09IFwibGF0blwiXG4gICAgKTtcbiAgfVxufVxuXG4vKipcbiAqIEBwcml2YXRlXG4gKi9cblxuY2xhc3MgUG9seU51bWJlckZvcm1hdHRlciB7XG4gIGNvbnN0cnVjdG9yKGludGwsIGZvcmNlU2ltcGxlLCBvcHRzKSB7XG4gICAgdGhpcy5wYWRUbyA9IG9wdHMucGFkVG8gfHwgMDtcbiAgICB0aGlzLmZsb29yID0gb3B0cy5mbG9vciB8fCBmYWxzZTtcblxuICAgIGNvbnN0IHsgcGFkVG8sIGZsb29yLCAuLi5vdGhlck9wdHMgfSA9IG9wdHM7XG5cbiAgICBpZiAoIWZvcmNlU2ltcGxlIHx8IE9iamVjdC5rZXlzKG90aGVyT3B0cykubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgaW50bE9wdHMgPSB7IHVzZUdyb3VwaW5nOiBmYWxzZSwgLi4ub3B0cyB9O1xuICAgICAgaWYgKG9wdHMucGFkVG8gPiAwKSBpbnRsT3B0cy5taW5pbXVtSW50ZWdlckRpZ2l0cyA9IG9wdHMucGFkVG87XG4gICAgICB0aGlzLmluZiA9IGdldENhY2hlZElORihpbnRsLCBpbnRsT3B0cyk7XG4gICAgfVxuICB9XG5cbiAgZm9ybWF0KGkpIHtcbiAgICBpZiAodGhpcy5pbmYpIHtcbiAgICAgIGNvbnN0IGZpeGVkID0gdGhpcy5mbG9vciA/IE1hdGguZmxvb3IoaSkgOiBpO1xuICAgICAgcmV0dXJuIHRoaXMuaW5mLmZvcm1hdChmaXhlZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHRvIG1hdGNoIHRoZSBicm93c2VyJ3MgbnVtYmVyZm9ybWF0dGVyIGRlZmF1bHRzXG4gICAgICBjb25zdCBmaXhlZCA9IHRoaXMuZmxvb3IgPyBNYXRoLmZsb29yKGkpIDogcm91bmRUbyhpLCAzKTtcbiAgICAgIHJldHVybiBwYWRTdGFydChmaXhlZCwgdGhpcy5wYWRUbyk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQHByaXZhdGVcbiAqL1xuXG5jbGFzcyBQb2x5RGF0ZUZvcm1hdHRlciB7XG4gIGNvbnN0cnVjdG9yKGR0LCBpbnRsLCBvcHRzKSB7XG4gICAgdGhpcy5vcHRzID0gb3B0cztcblxuICAgIGxldCB6O1xuICAgIGlmIChkdC56b25lLmlzVW5pdmVyc2FsKSB7XG4gICAgICAvLyBVVEMtOCBvciBFdGMvVVRDLTggYXJlIG5vdCBwYXJ0IG9mIHR6ZGF0YSwgb25seSBFdGMvR01UKzggYW5kIHRoZSBsaWtlLlxuICAgICAgLy8gVGhhdCBpcyB3aHkgZml4ZWQtb2Zmc2V0IFRaIGlzIHNldCB0byB0aGF0IHVubGVzcyBpdCBpczpcbiAgICAgIC8vIDEuIFJlcHJlc2VudGluZyBvZmZzZXQgMCB3aGVuIFVUQyBpcyB1c2VkIHRvIG1haW50YWluIHByZXZpb3VzIGJlaGF2aW9yIGFuZCBkb2VzIG5vdCBiZWNvbWUgR01ULlxuICAgICAgLy8gMi4gVW5zdXBwb3J0ZWQgYnkgdGhlIGJyb3dzZXI6XG4gICAgICAvLyAgICAtIHNvbWUgZG8gbm90IHN1cHBvcnQgRXRjL1xuICAgICAgLy8gICAgLSA8IEV0Yy9HTVQtMTQsID4gRXRjL0dNVCsxMiwgYW5kIDMwLW1pbnV0ZSBvciA0NS1taW51dGUgb2Zmc2V0cyBhcmUgbm90IHBhcnQgb2YgdHpkYXRhXG4gICAgICBjb25zdCBnbXRPZmZzZXQgPSAtMSAqIChkdC5vZmZzZXQgLyA2MCk7XG4gICAgICBjb25zdCBvZmZzZXRaID0gZ210T2Zmc2V0ID49IDAgPyBgRXRjL0dNVCske2dtdE9mZnNldH1gIDogYEV0Yy9HTVQke2dtdE9mZnNldH1gO1xuICAgICAgaWYgKGR0Lm9mZnNldCAhPT0gMCAmJiBJQU5BWm9uZS5jcmVhdGUob2Zmc2V0WikudmFsaWQpIHtcbiAgICAgICAgeiA9IG9mZnNldFo7XG4gICAgICAgIHRoaXMuZHQgPSBkdDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIE5vdCBhbGwgZml4ZWQtb2Zmc2V0IHpvbmVzIGxpa2UgRXRjLys0OjMwIGFyZSBwcmVzZW50IGluIHR6ZGF0YS5cbiAgICAgICAgLy8gU28gd2UgaGF2ZSB0byBtYWtlIGRvLiBUd28gY2FzZXM6XG4gICAgICAgIC8vIDEuIFRoZSBmb3JtYXQgb3B0aW9ucyB0ZWxsIHVzIHRvIHNob3cgdGhlIHpvbmUuIFdlIGNhbid0IGRvIHRoYXQsIHNvIHRoZSBiZXN0XG4gICAgICAgIC8vIHdlIGNhbiBkbyBpcyBmb3JtYXQgdGhlIGRhdGUgaW4gVVRDLlxuICAgICAgICAvLyAyLiBUaGUgZm9ybWF0IG9wdGlvbnMgZG9uJ3QgdGVsbCB1cyB0byBzaG93IHRoZSB6b25lLiBUaGVuIHdlIGNhbiBhZGp1c3QgdGhlbVxuICAgICAgICAvLyB0aGUgdGltZSBhbmQgdGVsbCB0aGUgZm9ybWF0dGVyIHRvIHNob3cgaXQgdG8gdXMgaW4gVVRDLCBzbyB0aGF0IHRoZSB0aW1lIGlzIHJpZ2h0XG4gICAgICAgIC8vIGFuZCB0aGUgYmFkIHpvbmUgZG9lc24ndCBzaG93IHVwLlxuICAgICAgICB6ID0gXCJVVENcIjtcbiAgICAgICAgaWYgKG9wdHMudGltZVpvbmVOYW1lKSB7XG4gICAgICAgICAgdGhpcy5kdCA9IGR0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZHQgPSBkdC5vZmZzZXQgPT09IDAgPyBkdCA6IERhdGVUaW1lLmZyb21NaWxsaXMoZHQudHMgKyBkdC5vZmZzZXQgKiA2MCAqIDEwMDApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChkdC56b25lLnR5cGUgPT09IFwic3lzdGVtXCIpIHtcbiAgICAgIHRoaXMuZHQgPSBkdDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kdCA9IGR0O1xuICAgICAgeiA9IGR0LnpvbmUubmFtZTtcbiAgICB9XG5cbiAgICBjb25zdCBpbnRsT3B0cyA9IHsgLi4udGhpcy5vcHRzIH07XG4gICAgaWYgKHopIHtcbiAgICAgIGludGxPcHRzLnRpbWVab25lID0gejtcbiAgICB9XG4gICAgdGhpcy5kdGYgPSBnZXRDYWNoZWREVEYoaW50bCwgaW50bE9wdHMpO1xuICB9XG5cbiAgZm9ybWF0KCkge1xuICAgIHJldHVybiB0aGlzLmR0Zi5mb3JtYXQodGhpcy5kdC50b0pTRGF0ZSgpKTtcbiAgfVxuXG4gIGZvcm1hdFRvUGFydHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZHRmLmZvcm1hdFRvUGFydHModGhpcy5kdC50b0pTRGF0ZSgpKTtcbiAgfVxuXG4gIHJlc29sdmVkT3B0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5kdGYucmVzb2x2ZWRPcHRpb25zKCk7XG4gIH1cbn1cblxuLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5jbGFzcyBQb2x5UmVsRm9ybWF0dGVyIHtcbiAgY29uc3RydWN0b3IoaW50bCwgaXNFbmdsaXNoLCBvcHRzKSB7XG4gICAgdGhpcy5vcHRzID0geyBzdHlsZTogXCJsb25nXCIsIC4uLm9wdHMgfTtcbiAgICBpZiAoIWlzRW5nbGlzaCAmJiBoYXNSZWxhdGl2ZSgpKSB7XG4gICAgICB0aGlzLnJ0ZiA9IGdldENhY2hlZFJURihpbnRsLCBvcHRzKTtcbiAgICB9XG4gIH1cblxuICBmb3JtYXQoY291bnQsIHVuaXQpIHtcbiAgICBpZiAodGhpcy5ydGYpIHtcbiAgICAgIHJldHVybiB0aGlzLnJ0Zi5mb3JtYXQoY291bnQsIHVuaXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gRW5nbGlzaC5mb3JtYXRSZWxhdGl2ZVRpbWUodW5pdCwgY291bnQsIHRoaXMub3B0cy5udW1lcmljLCB0aGlzLm9wdHMuc3R5bGUgIT09IFwibG9uZ1wiKTtcbiAgICB9XG4gIH1cblxuICBmb3JtYXRUb1BhcnRzKGNvdW50LCB1bml0KSB7XG4gICAgaWYgKHRoaXMucnRmKSB7XG4gICAgICByZXR1cm4gdGhpcy5ydGYuZm9ybWF0VG9QYXJ0cyhjb3VudCwgdW5pdCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExvY2FsZSB7XG4gIHN0YXRpYyBmcm9tT3B0cyhvcHRzKSB7XG4gICAgcmV0dXJuIExvY2FsZS5jcmVhdGUob3B0cy5sb2NhbGUsIG9wdHMubnVtYmVyaW5nU3lzdGVtLCBvcHRzLm91dHB1dENhbGVuZGFyLCBvcHRzLmRlZmF1bHRUb0VOKTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGUobG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG91dHB1dENhbGVuZGFyLCBkZWZhdWx0VG9FTiA9IGZhbHNlKSB7XG4gICAgY29uc3Qgc3BlY2lmaWVkTG9jYWxlID0gbG9jYWxlIHx8IFNldHRpbmdzLmRlZmF1bHRMb2NhbGU7XG4gICAgLy8gdGhlIHN5c3RlbSBsb2NhbGUgaXMgdXNlZnVsIGZvciBodW1hbiByZWFkYWJsZSBzdHJpbmdzIGJ1dCBhbm5veWluZyBmb3IgcGFyc2luZy9mb3JtYXR0aW5nIGtub3duIGZvcm1hdHNcbiAgICBjb25zdCBsb2NhbGVSID0gc3BlY2lmaWVkTG9jYWxlIHx8IChkZWZhdWx0VG9FTiA/IFwiZW4tVVNcIiA6IHN5c3RlbUxvY2FsZSgpKTtcbiAgICBjb25zdCBudW1iZXJpbmdTeXN0ZW1SID0gbnVtYmVyaW5nU3lzdGVtIHx8IFNldHRpbmdzLmRlZmF1bHROdW1iZXJpbmdTeXN0ZW07XG4gICAgY29uc3Qgb3V0cHV0Q2FsZW5kYXJSID0gb3V0cHV0Q2FsZW5kYXIgfHwgU2V0dGluZ3MuZGVmYXVsdE91dHB1dENhbGVuZGFyO1xuICAgIHJldHVybiBuZXcgTG9jYWxlKGxvY2FsZVIsIG51bWJlcmluZ1N5c3RlbVIsIG91dHB1dENhbGVuZGFyUiwgc3BlY2lmaWVkTG9jYWxlKTtcbiAgfVxuXG4gIHN0YXRpYyByZXNldENhY2hlKCkge1xuICAgIHN5c0xvY2FsZUNhY2hlID0gbnVsbDtcbiAgICBpbnRsRFRDYWNoZSA9IHt9O1xuICAgIGludGxOdW1DYWNoZSA9IHt9O1xuICAgIGludGxSZWxDYWNoZSA9IHt9O1xuICB9XG5cbiAgc3RhdGljIGZyb21PYmplY3QoeyBsb2NhbGUsIG51bWJlcmluZ1N5c3RlbSwgb3V0cHV0Q2FsZW5kYXIgfSA9IHt9KSB7XG4gICAgcmV0dXJuIExvY2FsZS5jcmVhdGUobG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG91dHB1dENhbGVuZGFyKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKGxvY2FsZSwgbnVtYmVyaW5nLCBvdXRwdXRDYWxlbmRhciwgc3BlY2lmaWVkTG9jYWxlKSB7XG4gICAgY29uc3QgW3BhcnNlZExvY2FsZSwgcGFyc2VkTnVtYmVyaW5nU3lzdGVtLCBwYXJzZWRPdXRwdXRDYWxlbmRhcl0gPSBwYXJzZUxvY2FsZVN0cmluZyhsb2NhbGUpO1xuXG4gICAgdGhpcy5sb2NhbGUgPSBwYXJzZWRMb2NhbGU7XG4gICAgdGhpcy5udW1iZXJpbmdTeXN0ZW0gPSBudW1iZXJpbmcgfHwgcGFyc2VkTnVtYmVyaW5nU3lzdGVtIHx8IG51bGw7XG4gICAgdGhpcy5vdXRwdXRDYWxlbmRhciA9IG91dHB1dENhbGVuZGFyIHx8IHBhcnNlZE91dHB1dENhbGVuZGFyIHx8IG51bGw7XG4gICAgdGhpcy5pbnRsID0gaW50bENvbmZpZ1N0cmluZyh0aGlzLmxvY2FsZSwgdGhpcy5udW1iZXJpbmdTeXN0ZW0sIHRoaXMub3V0cHV0Q2FsZW5kYXIpO1xuXG4gICAgdGhpcy53ZWVrZGF5c0NhY2hlID0geyBmb3JtYXQ6IHt9LCBzdGFuZGFsb25lOiB7fSB9O1xuICAgIHRoaXMubW9udGhzQ2FjaGUgPSB7IGZvcm1hdDoge30sIHN0YW5kYWxvbmU6IHt9IH07XG4gICAgdGhpcy5tZXJpZGllbUNhY2hlID0gbnVsbDtcbiAgICB0aGlzLmVyYUNhY2hlID0ge307XG5cbiAgICB0aGlzLnNwZWNpZmllZExvY2FsZSA9IHNwZWNpZmllZExvY2FsZTtcbiAgICB0aGlzLmZhc3ROdW1iZXJzQ2FjaGVkID0gbnVsbDtcbiAgfVxuXG4gIGdldCBmYXN0TnVtYmVycygpIHtcbiAgICBpZiAodGhpcy5mYXN0TnVtYmVyc0NhY2hlZCA9PSBudWxsKSB7XG4gICAgICB0aGlzLmZhc3ROdW1iZXJzQ2FjaGVkID0gc3VwcG9ydHNGYXN0TnVtYmVycyh0aGlzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5mYXN0TnVtYmVyc0NhY2hlZDtcbiAgfVxuXG4gIGxpc3RpbmdNb2RlKCkge1xuICAgIGNvbnN0IGlzQWN0dWFsbHlFbiA9IHRoaXMuaXNFbmdsaXNoKCk7XG4gICAgY29uc3QgaGFzTm9XZWlyZG5lc3MgPVxuICAgICAgKHRoaXMubnVtYmVyaW5nU3lzdGVtID09PSBudWxsIHx8IHRoaXMubnVtYmVyaW5nU3lzdGVtID09PSBcImxhdG5cIikgJiZcbiAgICAgICh0aGlzLm91dHB1dENhbGVuZGFyID09PSBudWxsIHx8IHRoaXMub3V0cHV0Q2FsZW5kYXIgPT09IFwiZ3JlZ29yeVwiKTtcbiAgICByZXR1cm4gaXNBY3R1YWxseUVuICYmIGhhc05vV2VpcmRuZXNzID8gXCJlblwiIDogXCJpbnRsXCI7XG4gIH1cblxuICBjbG9uZShhbHRzKSB7XG4gICAgaWYgKCFhbHRzIHx8IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGFsdHMpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBMb2NhbGUuY3JlYXRlKFxuICAgICAgICBhbHRzLmxvY2FsZSB8fCB0aGlzLnNwZWNpZmllZExvY2FsZSxcbiAgICAgICAgYWx0cy5udW1iZXJpbmdTeXN0ZW0gfHwgdGhpcy5udW1iZXJpbmdTeXN0ZW0sXG4gICAgICAgIGFsdHMub3V0cHV0Q2FsZW5kYXIgfHwgdGhpcy5vdXRwdXRDYWxlbmRhcixcbiAgICAgICAgYWx0cy5kZWZhdWx0VG9FTiB8fCBmYWxzZVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICByZWRlZmF1bHRUb0VOKGFsdHMgPSB7fSkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKHsgLi4uYWx0cywgZGVmYXVsdFRvRU46IHRydWUgfSk7XG4gIH1cblxuICByZWRlZmF1bHRUb1N5c3RlbShhbHRzID0ge30pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSh7IC4uLmFsdHMsIGRlZmF1bHRUb0VOOiBmYWxzZSB9KTtcbiAgfVxuXG4gIG1vbnRocyhsZW5ndGgsIGZvcm1hdCA9IGZhbHNlLCBkZWZhdWx0T0sgPSB0cnVlKSB7XG4gICAgcmV0dXJuIGxpc3RTdHVmZih0aGlzLCBsZW5ndGgsIGRlZmF1bHRPSywgRW5nbGlzaC5tb250aHMsICgpID0+IHtcbiAgICAgIGNvbnN0IGludGwgPSBmb3JtYXQgPyB7IG1vbnRoOiBsZW5ndGgsIGRheTogXCJudW1lcmljXCIgfSA6IHsgbW9udGg6IGxlbmd0aCB9LFxuICAgICAgICBmb3JtYXRTdHIgPSBmb3JtYXQgPyBcImZvcm1hdFwiIDogXCJzdGFuZGFsb25lXCI7XG4gICAgICBpZiAoIXRoaXMubW9udGhzQ2FjaGVbZm9ybWF0U3RyXVtsZW5ndGhdKSB7XG4gICAgICAgIHRoaXMubW9udGhzQ2FjaGVbZm9ybWF0U3RyXVtsZW5ndGhdID0gbWFwTW9udGhzKChkdCkgPT4gdGhpcy5leHRyYWN0KGR0LCBpbnRsLCBcIm1vbnRoXCIpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLm1vbnRoc0NhY2hlW2Zvcm1hdFN0cl1bbGVuZ3RoXTtcbiAgICB9KTtcbiAgfVxuXG4gIHdlZWtkYXlzKGxlbmd0aCwgZm9ybWF0ID0gZmFsc2UsIGRlZmF1bHRPSyA9IHRydWUpIHtcbiAgICByZXR1cm4gbGlzdFN0dWZmKHRoaXMsIGxlbmd0aCwgZGVmYXVsdE9LLCBFbmdsaXNoLndlZWtkYXlzLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbnRsID0gZm9ybWF0XG4gICAgICAgICAgPyB7IHdlZWtkYXk6IGxlbmd0aCwgeWVhcjogXCJudW1lcmljXCIsIG1vbnRoOiBcImxvbmdcIiwgZGF5OiBcIm51bWVyaWNcIiB9XG4gICAgICAgICAgOiB7IHdlZWtkYXk6IGxlbmd0aCB9LFxuICAgICAgICBmb3JtYXRTdHIgPSBmb3JtYXQgPyBcImZvcm1hdFwiIDogXCJzdGFuZGFsb25lXCI7XG4gICAgICBpZiAoIXRoaXMud2Vla2RheXNDYWNoZVtmb3JtYXRTdHJdW2xlbmd0aF0pIHtcbiAgICAgICAgdGhpcy53ZWVrZGF5c0NhY2hlW2Zvcm1hdFN0cl1bbGVuZ3RoXSA9IG1hcFdlZWtkYXlzKChkdCkgPT5cbiAgICAgICAgICB0aGlzLmV4dHJhY3QoZHQsIGludGwsIFwid2Vla2RheVwiKVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMud2Vla2RheXNDYWNoZVtmb3JtYXRTdHJdW2xlbmd0aF07XG4gICAgfSk7XG4gIH1cblxuICBtZXJpZGllbXMoZGVmYXVsdE9LID0gdHJ1ZSkge1xuICAgIHJldHVybiBsaXN0U3R1ZmYoXG4gICAgICB0aGlzLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgZGVmYXVsdE9LLFxuICAgICAgKCkgPT4gRW5nbGlzaC5tZXJpZGllbXMsXG4gICAgICAoKSA9PiB7XG4gICAgICAgIC8vIEluIHRoZW9yeSB0aGVyZSBjb3VsZCBiZSBhcmliaXRyYXJ5IGRheSBwZXJpb2RzLiBXZSdyZSBnb25uYSBhc3N1bWUgdGhlcmUgYXJlIGV4YWN0bHkgdHdvXG4gICAgICAgIC8vIGZvciBBTSBhbmQgUE0uIFRoaXMgaXMgcHJvYmFibHkgd3JvbmcsIGJ1dCBpdCdzIG1ha2VzIHBhcnNpbmcgd2F5IGVhc2llci5cbiAgICAgICAgaWYgKCF0aGlzLm1lcmlkaWVtQ2FjaGUpIHtcbiAgICAgICAgICBjb25zdCBpbnRsID0geyBob3VyOiBcIm51bWVyaWNcIiwgaG91ckN5Y2xlOiBcImgxMlwiIH07XG4gICAgICAgICAgdGhpcy5tZXJpZGllbUNhY2hlID0gW0RhdGVUaW1lLnV0YygyMDE2LCAxMSwgMTMsIDkpLCBEYXRlVGltZS51dGMoMjAxNiwgMTEsIDEzLCAxOSldLm1hcChcbiAgICAgICAgICAgIChkdCkgPT4gdGhpcy5leHRyYWN0KGR0LCBpbnRsLCBcImRheXBlcmlvZFwiKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5tZXJpZGllbUNhY2hlO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBlcmFzKGxlbmd0aCwgZGVmYXVsdE9LID0gdHJ1ZSkge1xuICAgIHJldHVybiBsaXN0U3R1ZmYodGhpcywgbGVuZ3RoLCBkZWZhdWx0T0ssIEVuZ2xpc2guZXJhcywgKCkgPT4ge1xuICAgICAgY29uc3QgaW50bCA9IHsgZXJhOiBsZW5ndGggfTtcblxuICAgICAgLy8gVGhpcyBpcyBwcm9ibGVtYXRpYy4gRGlmZmVyZW50IGNhbGVuZGFycyBhcmUgZ29pbmcgdG8gZGVmaW5lIGVyYXMgdG90YWxseSBkaWZmZXJlbnRseS4gV2hhdCBJIG5lZWQgaXMgdGhlIG1pbmltdW0gc2V0IG9mIGRhdGVzXG4gICAgICAvLyB0byBkZWZpbml0ZWx5IGVudW1lcmF0ZSB0aGVtLlxuICAgICAgaWYgKCF0aGlzLmVyYUNhY2hlW2xlbmd0aF0pIHtcbiAgICAgICAgdGhpcy5lcmFDYWNoZVtsZW5ndGhdID0gW0RhdGVUaW1lLnV0YygtNDAsIDEsIDEpLCBEYXRlVGltZS51dGMoMjAxNywgMSwgMSldLm1hcCgoZHQpID0+XG4gICAgICAgICAgdGhpcy5leHRyYWN0KGR0LCBpbnRsLCBcImVyYVwiKVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5lcmFDYWNoZVtsZW5ndGhdO1xuICAgIH0pO1xuICB9XG5cbiAgZXh0cmFjdChkdCwgaW50bE9wdHMsIGZpZWxkKSB7XG4gICAgY29uc3QgZGYgPSB0aGlzLmR0Rm9ybWF0dGVyKGR0LCBpbnRsT3B0cyksXG4gICAgICByZXN1bHRzID0gZGYuZm9ybWF0VG9QYXJ0cygpLFxuICAgICAgbWF0Y2hpbmcgPSByZXN1bHRzLmZpbmQoKG0pID0+IG0udHlwZS50b0xvd2VyQ2FzZSgpID09PSBmaWVsZCk7XG4gICAgcmV0dXJuIG1hdGNoaW5nID8gbWF0Y2hpbmcudmFsdWUgOiBudWxsO1xuICB9XG5cbiAgbnVtYmVyRm9ybWF0dGVyKG9wdHMgPSB7fSkge1xuICAgIC8vIHRoaXMgZm9yY2VzaW1wbGUgb3B0aW9uIGlzIG5ldmVyIHVzZWQgKHRoZSBvbmx5IGNhbGxlciBzaG9ydC1jaXJjdWl0cyBvbiBpdCwgYnV0IGl0IHNlZW1zIHNhZmVyIHRvIGxlYXZlKVxuICAgIC8vIChpbiBjb250cmFzdCwgdGhlIHJlc3Qgb2YgdGhlIGNvbmRpdGlvbiBpcyB1c2VkIGhlYXZpbHkpXG4gICAgcmV0dXJuIG5ldyBQb2x5TnVtYmVyRm9ybWF0dGVyKHRoaXMuaW50bCwgb3B0cy5mb3JjZVNpbXBsZSB8fCB0aGlzLmZhc3ROdW1iZXJzLCBvcHRzKTtcbiAgfVxuXG4gIGR0Rm9ybWF0dGVyKGR0LCBpbnRsT3B0cyA9IHt9KSB7XG4gICAgcmV0dXJuIG5ldyBQb2x5RGF0ZUZvcm1hdHRlcihkdCwgdGhpcy5pbnRsLCBpbnRsT3B0cyk7XG4gIH1cblxuICByZWxGb3JtYXR0ZXIob3B0cyA9IHt9KSB7XG4gICAgcmV0dXJuIG5ldyBQb2x5UmVsRm9ybWF0dGVyKHRoaXMuaW50bCwgdGhpcy5pc0VuZ2xpc2goKSwgb3B0cyk7XG4gIH1cblxuICBsaXN0Rm9ybWF0dGVyKG9wdHMgPSB7fSkge1xuICAgIHJldHVybiBnZXRDYWNoZWRMRih0aGlzLmludGwsIG9wdHMpO1xuICB9XG5cbiAgaXNFbmdsaXNoKCkge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmxvY2FsZSA9PT0gXCJlblwiIHx8XG4gICAgICB0aGlzLmxvY2FsZS50b0xvd2VyQ2FzZSgpID09PSBcImVuLXVzXCIgfHxcbiAgICAgIG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KHRoaXMuaW50bCkucmVzb2x2ZWRPcHRpb25zKCkubG9jYWxlLnN0YXJ0c1dpdGgoXCJlbi11c1wiKVxuICAgICk7XG4gIH1cblxuICBlcXVhbHMob3RoZXIpIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5sb2NhbGUgPT09IG90aGVyLmxvY2FsZSAmJlxuICAgICAgdGhpcy5udW1iZXJpbmdTeXN0ZW0gPT09IG90aGVyLm51bWJlcmluZ1N5c3RlbSAmJlxuICAgICAgdGhpcy5vdXRwdXRDYWxlbmRhciA9PT0gb3RoZXIub3V0cHV0Q2FsZW5kYXJcbiAgICApO1xuICB9XG59XG4iLCAiaW1wb3J0IHtcbiAgdW50cnVuY2F0ZVllYXIsXG4gIHNpZ25lZE9mZnNldCxcbiAgcGFyc2VJbnRlZ2VyLFxuICBwYXJzZU1pbGxpcyxcbiAgaWFuYVJlZ2V4LFxuICBpc1VuZGVmaW5lZCxcbiAgcGFyc2VGbG9hdGluZ1xufSBmcm9tIFwiLi91dGlsLmpzXCI7XG5pbXBvcnQgKiBhcyBFbmdsaXNoIGZyb20gXCIuL2VuZ2xpc2guanNcIjtcbmltcG9ydCBGaXhlZE9mZnNldFpvbmUgZnJvbSBcIi4uL3pvbmVzL2ZpeGVkT2Zmc2V0Wm9uZS5qc1wiO1xuaW1wb3J0IElBTkFab25lIGZyb20gXCIuLi96b25lcy9JQU5BWm9uZS5qc1wiO1xuXG4vKlxuICogVGhpcyBmaWxlIGhhbmRsZXMgcGFyc2luZyBmb3Igd2VsbC1zcGVjaWZpZWQgZm9ybWF0cy4gSGVyZSdzIGhvdyBpdCB3b3JrczpcbiAqIFR3byB0aGluZ3MgZ28gaW50byBwYXJzaW5nOiBhIHJlZ2V4IHRvIG1hdGNoIHdpdGggYW5kIGFuIGV4dHJhY3RvciB0byB0YWtlIGFwYXJ0IHRoZSBncm91cHMgaW4gdGhlIG1hdGNoLlxuICogQW4gZXh0cmFjdG9yIGlzIGp1c3QgYSBmdW5jdGlvbiB0aGF0IHRha2VzIGEgcmVnZXggbWF0Y2ggYXJyYXkgYW5kIHJldHVybnMgYSB7IHllYXI6IC4uLiwgbW9udGg6IC4uLiB9IG9iamVjdFxuICogcGFyc2UoKSBkb2VzIHRoZSB3b3JrIG9mIGV4ZWN1dGluZyB0aGUgcmVnZXggYW5kIGFwcGx5aW5nIHRoZSBleHRyYWN0b3IuIEl0IHRha2VzIG11bHRpcGxlIHJlZ2V4L2V4dHJhY3RvciBwYWlycyB0byB0cnkgaW4gc2VxdWVuY2UuXG4gKiBFeHRyYWN0b3JzIGNhbiB0YWtlIGEgXCJjdXJzb3JcIiByZXByZXNlbnRpbmcgdGhlIG9mZnNldCBpbiB0aGUgbWF0Y2ggdG8gbG9vayBhdC4gVGhpcyBtYWtlcyBpdCBlYXN5IHRvIGNvbWJpbmUgZXh0cmFjdG9ycy5cbiAqIGNvbWJpbmVFeHRyYWN0b3JzKCkgZG9lcyB0aGUgd29yayBvZiBjb21iaW5pbmcgdGhlbSwga2VlcGluZyB0cmFjayBvZiB0aGUgY3Vyc29yIHRocm91Z2ggbXVsdGlwbGUgZXh0cmFjdGlvbnMuXG4gKiBTb21lIGV4dHJhY3Rpb25zIGFyZSBzdXBlciBkdW1iIGFuZCBzaW1wbGVQYXJzZSBhbmQgZnJvbVN0cmluZ3MgaGVscCBEUlkgdGhlbS5cbiAqL1xuXG5mdW5jdGlvbiBjb21iaW5lUmVnZXhlcyguLi5yZWdleGVzKSB7XG4gIGNvbnN0IGZ1bGwgPSByZWdleGVzLnJlZHVjZSgoZiwgcikgPT4gZiArIHIuc291cmNlLCBcIlwiKTtcbiAgcmV0dXJuIFJlZ0V4cChgXiR7ZnVsbH0kYCk7XG59XG5cbmZ1bmN0aW9uIGNvbWJpbmVFeHRyYWN0b3JzKC4uLmV4dHJhY3RvcnMpIHtcbiAgcmV0dXJuIG0gPT5cbiAgICBleHRyYWN0b3JzXG4gICAgICAucmVkdWNlKFxuICAgICAgICAoW21lcmdlZFZhbHMsIG1lcmdlZFpvbmUsIGN1cnNvcl0sIGV4KSA9PiB7XG4gICAgICAgICAgY29uc3QgW3ZhbCwgem9uZSwgbmV4dF0gPSBleChtLCBjdXJzb3IpO1xuICAgICAgICAgIHJldHVybiBbeyAuLi5tZXJnZWRWYWxzLCAuLi52YWwgfSwgem9uZSB8fCBtZXJnZWRab25lLCBuZXh0XTtcbiAgICAgICAgfSxcbiAgICAgICAgW3t9LCBudWxsLCAxXVxuICAgICAgKVxuICAgICAgLnNsaWNlKDAsIDIpO1xufVxuXG5mdW5jdGlvbiBwYXJzZShzLCAuLi5wYXR0ZXJucykge1xuICBpZiAocyA9PSBudWxsKSB7XG4gICAgcmV0dXJuIFtudWxsLCBudWxsXTtcbiAgfVxuXG4gIGZvciAoY29uc3QgW3JlZ2V4LCBleHRyYWN0b3JdIG9mIHBhdHRlcm5zKSB7XG4gICAgY29uc3QgbSA9IHJlZ2V4LmV4ZWMocyk7XG4gICAgaWYgKG0pIHtcbiAgICAgIHJldHVybiBleHRyYWN0b3IobSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBbbnVsbCwgbnVsbF07XG59XG5cbmZ1bmN0aW9uIHNpbXBsZVBhcnNlKC4uLmtleXMpIHtcbiAgcmV0dXJuIChtYXRjaCwgY3Vyc29yKSA9PiB7XG4gICAgY29uc3QgcmV0ID0ge307XG4gICAgbGV0IGk7XG5cbiAgICBmb3IgKGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgcmV0W2tleXNbaV1dID0gcGFyc2VJbnRlZ2VyKG1hdGNoW2N1cnNvciArIGldKTtcbiAgICB9XG4gICAgcmV0dXJuIFtyZXQsIG51bGwsIGN1cnNvciArIGldO1xuICB9O1xufVxuXG4vLyBJU08gYW5kIFNRTCBwYXJzaW5nXG5jb25zdCBvZmZzZXRSZWdleCA9IC8oPzooWil8KFsrLV1cXGRcXGQpKD86Oj8oXFxkXFxkKSk/KS87XG5jb25zdCBpc29FeHRlbmRlZFpvbmUgPSBgKD86JHtvZmZzZXRSZWdleC5zb3VyY2V9Pyg/OlxcXFxbKCR7aWFuYVJlZ2V4LnNvdXJjZX0pXFxcXF0pPyk/YDtcbmNvbnN0IGlzb1RpbWVCYXNlUmVnZXggPSAvKFxcZFxcZCkoPzo6PyhcXGRcXGQpKD86Oj8oXFxkXFxkKSg/OlsuLF0oXFxkezEsMzB9KSk/KT8pPy87XG5jb25zdCBpc29UaW1lUmVnZXggPSBSZWdFeHAoYCR7aXNvVGltZUJhc2VSZWdleC5zb3VyY2V9JHtpc29FeHRlbmRlZFpvbmV9YCk7XG5jb25zdCBpc29UaW1lRXh0ZW5zaW9uUmVnZXggPSBSZWdFeHAoYCg/OlQke2lzb1RpbWVSZWdleC5zb3VyY2V9KT9gKTtcbmNvbnN0IGlzb1ltZFJlZ2V4ID0gLyhbKy1dXFxkezZ9fFxcZHs0fSkoPzotPyhcXGRcXGQpKD86LT8oXFxkXFxkKSk/KT8vO1xuY29uc3QgaXNvV2Vla1JlZ2V4ID0gLyhcXGR7NH0pLT9XKFxcZFxcZCkoPzotPyhcXGQpKT8vO1xuY29uc3QgaXNvT3JkaW5hbFJlZ2V4ID0gLyhcXGR7NH0pLT8oXFxkezN9KS87XG5jb25zdCBleHRyYWN0SVNPV2Vla0RhdGEgPSBzaW1wbGVQYXJzZShcIndlZWtZZWFyXCIsIFwid2Vla051bWJlclwiLCBcIndlZWtEYXlcIik7XG5jb25zdCBleHRyYWN0SVNPT3JkaW5hbERhdGEgPSBzaW1wbGVQYXJzZShcInllYXJcIiwgXCJvcmRpbmFsXCIpO1xuY29uc3Qgc3FsWW1kUmVnZXggPSAvKFxcZHs0fSktKFxcZFxcZCktKFxcZFxcZCkvOyAvLyBkdW1iZWQtZG93biB2ZXJzaW9uIG9mIHRoZSBJU08gb25lXG5jb25zdCBzcWxUaW1lUmVnZXggPSBSZWdFeHAoXG4gIGAke2lzb1RpbWVCYXNlUmVnZXguc291cmNlfSA/KD86JHtvZmZzZXRSZWdleC5zb3VyY2V9fCgke2lhbmFSZWdleC5zb3VyY2V9KSk/YFxuKTtcbmNvbnN0IHNxbFRpbWVFeHRlbnNpb25SZWdleCA9IFJlZ0V4cChgKD86ICR7c3FsVGltZVJlZ2V4LnNvdXJjZX0pP2ApO1xuXG5mdW5jdGlvbiBpbnQobWF0Y2gsIHBvcywgZmFsbGJhY2spIHtcbiAgY29uc3QgbSA9IG1hdGNoW3Bvc107XG4gIHJldHVybiBpc1VuZGVmaW5lZChtKSA/IGZhbGxiYWNrIDogcGFyc2VJbnRlZ2VyKG0pO1xufVxuXG5mdW5jdGlvbiBleHRyYWN0SVNPWW1kKG1hdGNoLCBjdXJzb3IpIHtcbiAgY29uc3QgaXRlbSA9IHtcbiAgICB5ZWFyOiBpbnQobWF0Y2gsIGN1cnNvciksXG4gICAgbW9udGg6IGludChtYXRjaCwgY3Vyc29yICsgMSwgMSksXG4gICAgZGF5OiBpbnQobWF0Y2gsIGN1cnNvciArIDIsIDEpXG4gIH07XG5cbiAgcmV0dXJuIFtpdGVtLCBudWxsLCBjdXJzb3IgKyAzXTtcbn1cblxuZnVuY3Rpb24gZXh0cmFjdElTT1RpbWUobWF0Y2gsIGN1cnNvcikge1xuICBjb25zdCBpdGVtID0ge1xuICAgIGhvdXJzOiBpbnQobWF0Y2gsIGN1cnNvciwgMCksXG4gICAgbWludXRlczogaW50KG1hdGNoLCBjdXJzb3IgKyAxLCAwKSxcbiAgICBzZWNvbmRzOiBpbnQobWF0Y2gsIGN1cnNvciArIDIsIDApLFxuICAgIG1pbGxpc2Vjb25kczogcGFyc2VNaWxsaXMobWF0Y2hbY3Vyc29yICsgM10pXG4gIH07XG5cbiAgcmV0dXJuIFtpdGVtLCBudWxsLCBjdXJzb3IgKyA0XTtcbn1cblxuZnVuY3Rpb24gZXh0cmFjdElTT09mZnNldChtYXRjaCwgY3Vyc29yKSB7XG4gIGNvbnN0IGxvY2FsID0gIW1hdGNoW2N1cnNvcl0gJiYgIW1hdGNoW2N1cnNvciArIDFdLFxuICAgIGZ1bGxPZmZzZXQgPSBzaWduZWRPZmZzZXQobWF0Y2hbY3Vyc29yICsgMV0sIG1hdGNoW2N1cnNvciArIDJdKSxcbiAgICB6b25lID0gbG9jYWwgPyBudWxsIDogRml4ZWRPZmZzZXRab25lLmluc3RhbmNlKGZ1bGxPZmZzZXQpO1xuICByZXR1cm4gW3t9LCB6b25lLCBjdXJzb3IgKyAzXTtcbn1cblxuZnVuY3Rpb24gZXh0cmFjdElBTkFab25lKG1hdGNoLCBjdXJzb3IpIHtcbiAgY29uc3Qgem9uZSA9IG1hdGNoW2N1cnNvcl0gPyBJQU5BWm9uZS5jcmVhdGUobWF0Y2hbY3Vyc29yXSkgOiBudWxsO1xuICByZXR1cm4gW3t9LCB6b25lLCBjdXJzb3IgKyAxXTtcbn1cblxuLy8gSVNPIHRpbWUgcGFyc2luZ1xuXG5jb25zdCBpc29UaW1lT25seSA9IFJlZ0V4cChgXlQ/JHtpc29UaW1lQmFzZVJlZ2V4LnNvdXJjZX0kYCk7XG5cbi8vIElTTyBkdXJhdGlvbiBwYXJzaW5nXG5cbmNvbnN0IGlzb0R1cmF0aW9uID0gL14tP1AoPzooPzooLT9cXGR7MSwyMH0oPzpcXC5cXGR7MSwyMH0pPylZKT8oPzooLT9cXGR7MSwyMH0oPzpcXC5cXGR7MSwyMH0pPylNKT8oPzooLT9cXGR7MSwyMH0oPzpcXC5cXGR7MSwyMH0pPylXKT8oPzooLT9cXGR7MSwyMH0oPzpcXC5cXGR7MSwyMH0pPylEKT8oPzpUKD86KC0/XFxkezEsMjB9KD86XFwuXFxkezEsMjB9KT8pSCk/KD86KC0/XFxkezEsMjB9KD86XFwuXFxkezEsMjB9KT8pTSk/KD86KC0/XFxkezEsMjB9KSg/OlsuLF0oLT9cXGR7MSwyMH0pKT9TKT8pPykkLztcblxuZnVuY3Rpb24gZXh0cmFjdElTT0R1cmF0aW9uKG1hdGNoKSB7XG4gIGNvbnN0IFtcbiAgICBzLFxuICAgIHllYXJTdHIsXG4gICAgbW9udGhTdHIsXG4gICAgd2Vla1N0cixcbiAgICBkYXlTdHIsXG4gICAgaG91clN0cixcbiAgICBtaW51dGVTdHIsXG4gICAgc2Vjb25kU3RyLFxuICAgIG1pbGxpc2Vjb25kc1N0clxuICBdID0gbWF0Y2g7XG5cbiAgY29uc3QgaGFzTmVnYXRpdmVQcmVmaXggPSBzWzBdID09PSBcIi1cIjtcbiAgY29uc3QgbmVnYXRpdmVTZWNvbmRzID0gc2Vjb25kU3RyICYmIHNlY29uZFN0clswXSA9PT0gXCItXCI7XG5cbiAgY29uc3QgbWF5YmVOZWdhdGUgPSAobnVtLCBmb3JjZSA9IGZhbHNlKSA9PlxuICAgIG51bSAhPT0gdW5kZWZpbmVkICYmIChmb3JjZSB8fCAobnVtICYmIGhhc05lZ2F0aXZlUHJlZml4KSkgPyAtbnVtIDogbnVtO1xuXG4gIHJldHVybiBbXG4gICAge1xuICAgICAgeWVhcnM6IG1heWJlTmVnYXRlKHBhcnNlRmxvYXRpbmcoeWVhclN0cikpLFxuICAgICAgbW9udGhzOiBtYXliZU5lZ2F0ZShwYXJzZUZsb2F0aW5nKG1vbnRoU3RyKSksXG4gICAgICB3ZWVrczogbWF5YmVOZWdhdGUocGFyc2VGbG9hdGluZyh3ZWVrU3RyKSksXG4gICAgICBkYXlzOiBtYXliZU5lZ2F0ZShwYXJzZUZsb2F0aW5nKGRheVN0cikpLFxuICAgICAgaG91cnM6IG1heWJlTmVnYXRlKHBhcnNlRmxvYXRpbmcoaG91clN0cikpLFxuICAgICAgbWludXRlczogbWF5YmVOZWdhdGUocGFyc2VGbG9hdGluZyhtaW51dGVTdHIpKSxcbiAgICAgIHNlY29uZHM6IG1heWJlTmVnYXRlKHBhcnNlRmxvYXRpbmcoc2Vjb25kU3RyKSwgc2Vjb25kU3RyID09PSBcIi0wXCIpLFxuICAgICAgbWlsbGlzZWNvbmRzOiBtYXliZU5lZ2F0ZShwYXJzZU1pbGxpcyhtaWxsaXNlY29uZHNTdHIpLCBuZWdhdGl2ZVNlY29uZHMpXG4gICAgfVxuICBdO1xufVxuXG4vLyBUaGVzZSBhcmUgYSBsaXR0bGUgYnJhaW5kZWFkLiBFRFQgKnNob3VsZCogdGVsbCB1cyB0aGF0IHdlJ3JlIGluLCBzYXksIEFtZXJpY2EvTmV3X1lvcmtcbi8vIGFuZCBub3QganVzdCB0aGF0IHdlJ3JlIGluIC0yNDAgKnJpZ2h0IG5vdyouIEJ1dCBzaW5jZSBJIGRvbid0IHRoaW5rIHRoZXNlIGFyZSB1c2VkIHRoYXQgb2Z0ZW5cbi8vIEknbSBqdXN0IGdvaW5nIHRvIGlnbm9yZSB0aGF0XG5jb25zdCBvYnNPZmZzZXRzID0ge1xuICBHTVQ6IDAsXG4gIEVEVDogLTQgKiA2MCxcbiAgRVNUOiAtNSAqIDYwLFxuICBDRFQ6IC01ICogNjAsXG4gIENTVDogLTYgKiA2MCxcbiAgTURUOiAtNiAqIDYwLFxuICBNU1Q6IC03ICogNjAsXG4gIFBEVDogLTcgKiA2MCxcbiAgUFNUOiAtOCAqIDYwXG59O1xuXG5mdW5jdGlvbiBmcm9tU3RyaW5ncyh3ZWVrZGF5U3RyLCB5ZWFyU3RyLCBtb250aFN0ciwgZGF5U3RyLCBob3VyU3RyLCBtaW51dGVTdHIsIHNlY29uZFN0cikge1xuICBjb25zdCByZXN1bHQgPSB7XG4gICAgeWVhcjogeWVhclN0ci5sZW5ndGggPT09IDIgPyB1bnRydW5jYXRlWWVhcihwYXJzZUludGVnZXIoeWVhclN0cikpIDogcGFyc2VJbnRlZ2VyKHllYXJTdHIpLFxuICAgIG1vbnRoOiBFbmdsaXNoLm1vbnRoc1Nob3J0LmluZGV4T2YobW9udGhTdHIpICsgMSxcbiAgICBkYXk6IHBhcnNlSW50ZWdlcihkYXlTdHIpLFxuICAgIGhvdXI6IHBhcnNlSW50ZWdlcihob3VyU3RyKSxcbiAgICBtaW51dGU6IHBhcnNlSW50ZWdlcihtaW51dGVTdHIpXG4gIH07XG5cbiAgaWYgKHNlY29uZFN0cikgcmVzdWx0LnNlY29uZCA9IHBhcnNlSW50ZWdlcihzZWNvbmRTdHIpO1xuICBpZiAod2Vla2RheVN0cikge1xuICAgIHJlc3VsdC53ZWVrZGF5ID1cbiAgICAgIHdlZWtkYXlTdHIubGVuZ3RoID4gM1xuICAgICAgICA/IEVuZ2xpc2gud2Vla2RheXNMb25nLmluZGV4T2Yod2Vla2RheVN0cikgKyAxXG4gICAgICAgIDogRW5nbGlzaC53ZWVrZGF5c1Nob3J0LmluZGV4T2Yod2Vla2RheVN0cikgKyAxO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLy8gUkZDIDI4MjIvNTMyMlxuY29uc3QgcmZjMjgyMiA9IC9eKD86KE1vbnxUdWV8V2VkfFRodXxGcml8U2F0fFN1biksXFxzKT8oXFxkezEsMn0pXFxzKEphbnxGZWJ8TWFyfEFwcnxNYXl8SnVufEp1bHxBdWd8U2VwfE9jdHxOb3Z8RGVjKVxccyhcXGR7Miw0fSlcXHMoXFxkXFxkKTooXFxkXFxkKSg/OjooXFxkXFxkKSk/XFxzKD86KFVUfEdNVHxbRUNNUF1bU0RdVCl8KFtael0pfCg/OihbKy1dXFxkXFxkKShcXGRcXGQpKSkkLztcblxuZnVuY3Rpb24gZXh0cmFjdFJGQzI4MjIobWF0Y2gpIHtcbiAgY29uc3QgW1xuICAgICAgLFxuICAgICAgd2Vla2RheVN0cixcbiAgICAgIGRheVN0cixcbiAgICAgIG1vbnRoU3RyLFxuICAgICAgeWVhclN0cixcbiAgICAgIGhvdXJTdHIsXG4gICAgICBtaW51dGVTdHIsXG4gICAgICBzZWNvbmRTdHIsXG4gICAgICBvYnNPZmZzZXQsXG4gICAgICBtaWxPZmZzZXQsXG4gICAgICBvZmZIb3VyU3RyLFxuICAgICAgb2ZmTWludXRlU3RyXG4gICAgXSA9IG1hdGNoLFxuICAgIHJlc3VsdCA9IGZyb21TdHJpbmdzKHdlZWtkYXlTdHIsIHllYXJTdHIsIG1vbnRoU3RyLCBkYXlTdHIsIGhvdXJTdHIsIG1pbnV0ZVN0ciwgc2Vjb25kU3RyKTtcblxuICBsZXQgb2Zmc2V0O1xuICBpZiAob2JzT2Zmc2V0KSB7XG4gICAgb2Zmc2V0ID0gb2JzT2Zmc2V0c1tvYnNPZmZzZXRdO1xuICB9IGVsc2UgaWYgKG1pbE9mZnNldCkge1xuICAgIG9mZnNldCA9IDA7XG4gIH0gZWxzZSB7XG4gICAgb2Zmc2V0ID0gc2lnbmVkT2Zmc2V0KG9mZkhvdXJTdHIsIG9mZk1pbnV0ZVN0cik7XG4gIH1cblxuICByZXR1cm4gW3Jlc3VsdCwgbmV3IEZpeGVkT2Zmc2V0Wm9uZShvZmZzZXQpXTtcbn1cblxuZnVuY3Rpb24gcHJlcHJvY2Vzc1JGQzI4MjIocykge1xuICAvLyBSZW1vdmUgY29tbWVudHMgYW5kIGZvbGRpbmcgd2hpdGVzcGFjZSBhbmQgcmVwbGFjZSBtdWx0aXBsZS1zcGFjZXMgd2l0aCBhIHNpbmdsZSBzcGFjZVxuICByZXR1cm4gc1xuICAgIC5yZXBsYWNlKC9cXChbXigpXSpcXCl8W1xcblxcdF0vZywgXCIgXCIpXG4gICAgLnJlcGxhY2UoLyhcXHNcXHMrKS9nLCBcIiBcIilcbiAgICAudHJpbSgpO1xufVxuXG4vLyBodHRwIGRhdGVcblxuY29uc3QgcmZjMTEyMyA9IC9eKE1vbnxUdWV8V2VkfFRodXxGcml8U2F0fFN1biksIChcXGRcXGQpIChKYW58RmVifE1hcnxBcHJ8TWF5fEp1bnxKdWx8QXVnfFNlcHxPY3R8Tm92fERlYykgKFxcZHs0fSkgKFxcZFxcZCk6KFxcZFxcZCk6KFxcZFxcZCkgR01UJC8sXG4gIHJmYzg1MCA9IC9eKE1vbmRheXxUdWVzZGF5fFdlZG5lc2RheXxUaHVyc2RheXxGcmlkYXl8U2F0dXJkYXl8U3VuZGF5KSwgKFxcZFxcZCktKEphbnxGZWJ8TWFyfEFwcnxNYXl8SnVufEp1bHxBdWd8U2VwfE9jdHxOb3Z8RGVjKS0oXFxkXFxkKSAoXFxkXFxkKTooXFxkXFxkKTooXFxkXFxkKSBHTVQkLyxcbiAgYXNjaWkgPSAvXihNb258VHVlfFdlZHxUaHV8RnJpfFNhdHxTdW4pIChKYW58RmVifE1hcnxBcHJ8TWF5fEp1bnxKdWx8QXVnfFNlcHxPY3R8Tm92fERlYykgKCBcXGR8XFxkXFxkKSAoXFxkXFxkKTooXFxkXFxkKTooXFxkXFxkKSAoXFxkezR9KSQvO1xuXG5mdW5jdGlvbiBleHRyYWN0UkZDMTEyM09yODUwKG1hdGNoKSB7XG4gIGNvbnN0IFssIHdlZWtkYXlTdHIsIGRheVN0ciwgbW9udGhTdHIsIHllYXJTdHIsIGhvdXJTdHIsIG1pbnV0ZVN0ciwgc2Vjb25kU3RyXSA9IG1hdGNoLFxuICAgIHJlc3VsdCA9IGZyb21TdHJpbmdzKHdlZWtkYXlTdHIsIHllYXJTdHIsIG1vbnRoU3RyLCBkYXlTdHIsIGhvdXJTdHIsIG1pbnV0ZVN0ciwgc2Vjb25kU3RyKTtcbiAgcmV0dXJuIFtyZXN1bHQsIEZpeGVkT2Zmc2V0Wm9uZS51dGNJbnN0YW5jZV07XG59XG5cbmZ1bmN0aW9uIGV4dHJhY3RBU0NJSShtYXRjaCkge1xuICBjb25zdCBbLCB3ZWVrZGF5U3RyLCBtb250aFN0ciwgZGF5U3RyLCBob3VyU3RyLCBtaW51dGVTdHIsIHNlY29uZFN0ciwgeWVhclN0cl0gPSBtYXRjaCxcbiAgICByZXN1bHQgPSBmcm9tU3RyaW5ncyh3ZWVrZGF5U3RyLCB5ZWFyU3RyLCBtb250aFN0ciwgZGF5U3RyLCBob3VyU3RyLCBtaW51dGVTdHIsIHNlY29uZFN0cik7XG4gIHJldHVybiBbcmVzdWx0LCBGaXhlZE9mZnNldFpvbmUudXRjSW5zdGFuY2VdO1xufVxuXG5jb25zdCBpc29ZbWRXaXRoVGltZUV4dGVuc2lvblJlZ2V4ID0gY29tYmluZVJlZ2V4ZXMoaXNvWW1kUmVnZXgsIGlzb1RpbWVFeHRlbnNpb25SZWdleCk7XG5jb25zdCBpc29XZWVrV2l0aFRpbWVFeHRlbnNpb25SZWdleCA9IGNvbWJpbmVSZWdleGVzKGlzb1dlZWtSZWdleCwgaXNvVGltZUV4dGVuc2lvblJlZ2V4KTtcbmNvbnN0IGlzb09yZGluYWxXaXRoVGltZUV4dGVuc2lvblJlZ2V4ID0gY29tYmluZVJlZ2V4ZXMoaXNvT3JkaW5hbFJlZ2V4LCBpc29UaW1lRXh0ZW5zaW9uUmVnZXgpO1xuY29uc3QgaXNvVGltZUNvbWJpbmVkUmVnZXggPSBjb21iaW5lUmVnZXhlcyhpc29UaW1lUmVnZXgpO1xuXG5jb25zdCBleHRyYWN0SVNPWW1kVGltZUFuZE9mZnNldCA9IGNvbWJpbmVFeHRyYWN0b3JzKFxuICBleHRyYWN0SVNPWW1kLFxuICBleHRyYWN0SVNPVGltZSxcbiAgZXh0cmFjdElTT09mZnNldCxcbiAgZXh0cmFjdElBTkFab25lXG4pO1xuY29uc3QgZXh0cmFjdElTT1dlZWtUaW1lQW5kT2Zmc2V0ID0gY29tYmluZUV4dHJhY3RvcnMoXG4gIGV4dHJhY3RJU09XZWVrRGF0YSxcbiAgZXh0cmFjdElTT1RpbWUsXG4gIGV4dHJhY3RJU09PZmZzZXQsXG4gIGV4dHJhY3RJQU5BWm9uZVxuKTtcbmNvbnN0IGV4dHJhY3RJU09PcmRpbmFsRGF0ZUFuZFRpbWUgPSBjb21iaW5lRXh0cmFjdG9ycyhcbiAgZXh0cmFjdElTT09yZGluYWxEYXRhLFxuICBleHRyYWN0SVNPVGltZSxcbiAgZXh0cmFjdElTT09mZnNldCxcbiAgZXh0cmFjdElBTkFab25lXG4pO1xuY29uc3QgZXh0cmFjdElTT1RpbWVBbmRPZmZzZXQgPSBjb21iaW5lRXh0cmFjdG9ycyhcbiAgZXh0cmFjdElTT1RpbWUsXG4gIGV4dHJhY3RJU09PZmZzZXQsXG4gIGV4dHJhY3RJQU5BWm9uZVxuKTtcblxuLypcbiAqIEBwcml2YXRlXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlSVNPRGF0ZShzKSB7XG4gIHJldHVybiBwYXJzZShcbiAgICBzLFxuICAgIFtpc29ZbWRXaXRoVGltZUV4dGVuc2lvblJlZ2V4LCBleHRyYWN0SVNPWW1kVGltZUFuZE9mZnNldF0sXG4gICAgW2lzb1dlZWtXaXRoVGltZUV4dGVuc2lvblJlZ2V4LCBleHRyYWN0SVNPV2Vla1RpbWVBbmRPZmZzZXRdLFxuICAgIFtpc29PcmRpbmFsV2l0aFRpbWVFeHRlbnNpb25SZWdleCwgZXh0cmFjdElTT09yZGluYWxEYXRlQW5kVGltZV0sXG4gICAgW2lzb1RpbWVDb21iaW5lZFJlZ2V4LCBleHRyYWN0SVNPVGltZUFuZE9mZnNldF1cbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUkZDMjgyMkRhdGUocykge1xuICByZXR1cm4gcGFyc2UocHJlcHJvY2Vzc1JGQzI4MjIocyksIFtyZmMyODIyLCBleHRyYWN0UkZDMjgyMl0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VIVFRQRGF0ZShzKSB7XG4gIHJldHVybiBwYXJzZShcbiAgICBzLFxuICAgIFtyZmMxMTIzLCBleHRyYWN0UkZDMTEyM09yODUwXSxcbiAgICBbcmZjODUwLCBleHRyYWN0UkZDMTEyM09yODUwXSxcbiAgICBbYXNjaWksIGV4dHJhY3RBU0NJSV1cbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlSVNPRHVyYXRpb24ocykge1xuICByZXR1cm4gcGFyc2UocywgW2lzb0R1cmF0aW9uLCBleHRyYWN0SVNPRHVyYXRpb25dKTtcbn1cblxuY29uc3QgZXh0cmFjdElTT1RpbWVPbmx5ID0gY29tYmluZUV4dHJhY3RvcnMoZXh0cmFjdElTT1RpbWUpO1xuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VJU09UaW1lT25seShzKSB7XG4gIHJldHVybiBwYXJzZShzLCBbaXNvVGltZU9ubHksIGV4dHJhY3RJU09UaW1lT25seV0pO1xufVxuXG5jb25zdCBzcWxZbWRXaXRoVGltZUV4dGVuc2lvblJlZ2V4ID0gY29tYmluZVJlZ2V4ZXMoc3FsWW1kUmVnZXgsIHNxbFRpbWVFeHRlbnNpb25SZWdleCk7XG5jb25zdCBzcWxUaW1lQ29tYmluZWRSZWdleCA9IGNvbWJpbmVSZWdleGVzKHNxbFRpbWVSZWdleCk7XG5cbmNvbnN0IGV4dHJhY3RJU09UaW1lT2Zmc2V0QW5kSUFOQVpvbmUgPSBjb21iaW5lRXh0cmFjdG9ycyhcbiAgZXh0cmFjdElTT1RpbWUsXG4gIGV4dHJhY3RJU09PZmZzZXQsXG4gIGV4dHJhY3RJQU5BWm9uZVxuKTtcblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlU1FMKHMpIHtcbiAgcmV0dXJuIHBhcnNlKFxuICAgIHMsXG4gICAgW3NxbFltZFdpdGhUaW1lRXh0ZW5zaW9uUmVnZXgsIGV4dHJhY3RJU09ZbWRUaW1lQW5kT2Zmc2V0XSxcbiAgICBbc3FsVGltZUNvbWJpbmVkUmVnZXgsIGV4dHJhY3RJU09UaW1lT2Zmc2V0QW5kSUFOQVpvbmVdXG4gICk7XG59XG4iLCAiaW1wb3J0IHsgSW52YWxpZEFyZ3VtZW50RXJyb3IsIEludmFsaWREdXJhdGlvbkVycm9yLCBJbnZhbGlkVW5pdEVycm9yIH0gZnJvbSBcIi4vZXJyb3JzLmpzXCI7XG5pbXBvcnQgRm9ybWF0dGVyIGZyb20gXCIuL2ltcGwvZm9ybWF0dGVyLmpzXCI7XG5pbXBvcnQgSW52YWxpZCBmcm9tIFwiLi9pbXBsL2ludmFsaWQuanNcIjtcbmltcG9ydCBMb2NhbGUgZnJvbSBcIi4vaW1wbC9sb2NhbGUuanNcIjtcbmltcG9ydCB7IHBhcnNlSVNPRHVyYXRpb24sIHBhcnNlSVNPVGltZU9ubHkgfSBmcm9tIFwiLi9pbXBsL3JlZ2V4UGFyc2VyLmpzXCI7XG5pbXBvcnQge1xuICBhc051bWJlcixcbiAgaGFzT3duUHJvcGVydHksXG4gIGlzTnVtYmVyLFxuICBpc1VuZGVmaW5lZCxcbiAgbm9ybWFsaXplT2JqZWN0LFxuICByb3VuZFRvLFxufSBmcm9tIFwiLi9pbXBsL3V0aWwuanNcIjtcbmltcG9ydCBTZXR0aW5ncyBmcm9tIFwiLi9zZXR0aW5ncy5qc1wiO1xuXG5jb25zdCBJTlZBTElEID0gXCJJbnZhbGlkIER1cmF0aW9uXCI7XG5cbi8vIHVuaXQgY29udmVyc2lvbiBjb25zdGFudHNcbmV4cG9ydCBjb25zdCBsb3dPcmRlck1hdHJpeCA9IHtcbiAgICB3ZWVrczoge1xuICAgICAgZGF5czogNyxcbiAgICAgIGhvdXJzOiA3ICogMjQsXG4gICAgICBtaW51dGVzOiA3ICogMjQgKiA2MCxcbiAgICAgIHNlY29uZHM6IDcgKiAyNCAqIDYwICogNjAsXG4gICAgICBtaWxsaXNlY29uZHM6IDcgKiAyNCAqIDYwICogNjAgKiAxMDAwLFxuICAgIH0sXG4gICAgZGF5czoge1xuICAgICAgaG91cnM6IDI0LFxuICAgICAgbWludXRlczogMjQgKiA2MCxcbiAgICAgIHNlY29uZHM6IDI0ICogNjAgKiA2MCxcbiAgICAgIG1pbGxpc2Vjb25kczogMjQgKiA2MCAqIDYwICogMTAwMCxcbiAgICB9LFxuICAgIGhvdXJzOiB7IG1pbnV0ZXM6IDYwLCBzZWNvbmRzOiA2MCAqIDYwLCBtaWxsaXNlY29uZHM6IDYwICogNjAgKiAxMDAwIH0sXG4gICAgbWludXRlczogeyBzZWNvbmRzOiA2MCwgbWlsbGlzZWNvbmRzOiA2MCAqIDEwMDAgfSxcbiAgICBzZWNvbmRzOiB7IG1pbGxpc2Vjb25kczogMTAwMCB9LFxuICB9LFxuICBjYXN1YWxNYXRyaXggPSB7XG4gICAgeWVhcnM6IHtcbiAgICAgIHF1YXJ0ZXJzOiA0LFxuICAgICAgbW9udGhzOiAxMixcbiAgICAgIHdlZWtzOiA1MixcbiAgICAgIGRheXM6IDM2NSxcbiAgICAgIGhvdXJzOiAzNjUgKiAyNCxcbiAgICAgIG1pbnV0ZXM6IDM2NSAqIDI0ICogNjAsXG4gICAgICBzZWNvbmRzOiAzNjUgKiAyNCAqIDYwICogNjAsXG4gICAgICBtaWxsaXNlY29uZHM6IDM2NSAqIDI0ICogNjAgKiA2MCAqIDEwMDAsXG4gICAgfSxcbiAgICBxdWFydGVyczoge1xuICAgICAgbW9udGhzOiAzLFxuICAgICAgd2Vla3M6IDEzLFxuICAgICAgZGF5czogOTEsXG4gICAgICBob3VyczogOTEgKiAyNCxcbiAgICAgIG1pbnV0ZXM6IDkxICogMjQgKiA2MCxcbiAgICAgIHNlY29uZHM6IDkxICogMjQgKiA2MCAqIDYwLFxuICAgICAgbWlsbGlzZWNvbmRzOiA5MSAqIDI0ICogNjAgKiA2MCAqIDEwMDAsXG4gICAgfSxcbiAgICBtb250aHM6IHtcbiAgICAgIHdlZWtzOiA0LFxuICAgICAgZGF5czogMzAsXG4gICAgICBob3VyczogMzAgKiAyNCxcbiAgICAgIG1pbnV0ZXM6IDMwICogMjQgKiA2MCxcbiAgICAgIHNlY29uZHM6IDMwICogMjQgKiA2MCAqIDYwLFxuICAgICAgbWlsbGlzZWNvbmRzOiAzMCAqIDI0ICogNjAgKiA2MCAqIDEwMDAsXG4gICAgfSxcblxuICAgIC4uLmxvd09yZGVyTWF0cml4LFxuICB9LFxuICBkYXlzSW5ZZWFyQWNjdXJhdGUgPSAxNDYwOTcuMCAvIDQwMCxcbiAgZGF5c0luTW9udGhBY2N1cmF0ZSA9IDE0NjA5Ny4wIC8gNDgwMCxcbiAgYWNjdXJhdGVNYXRyaXggPSB7XG4gICAgeWVhcnM6IHtcbiAgICAgIHF1YXJ0ZXJzOiA0LFxuICAgICAgbW9udGhzOiAxMixcbiAgICAgIHdlZWtzOiBkYXlzSW5ZZWFyQWNjdXJhdGUgLyA3LFxuICAgICAgZGF5czogZGF5c0luWWVhckFjY3VyYXRlLFxuICAgICAgaG91cnM6IGRheXNJblllYXJBY2N1cmF0ZSAqIDI0LFxuICAgICAgbWludXRlczogZGF5c0luWWVhckFjY3VyYXRlICogMjQgKiA2MCxcbiAgICAgIHNlY29uZHM6IGRheXNJblllYXJBY2N1cmF0ZSAqIDI0ICogNjAgKiA2MCxcbiAgICAgIG1pbGxpc2Vjb25kczogZGF5c0luWWVhckFjY3VyYXRlICogMjQgKiA2MCAqIDYwICogMTAwMCxcbiAgICB9LFxuICAgIHF1YXJ0ZXJzOiB7XG4gICAgICBtb250aHM6IDMsXG4gICAgICB3ZWVrczogZGF5c0luWWVhckFjY3VyYXRlIC8gMjgsXG4gICAgICBkYXlzOiBkYXlzSW5ZZWFyQWNjdXJhdGUgLyA0LFxuICAgICAgaG91cnM6IChkYXlzSW5ZZWFyQWNjdXJhdGUgKiAyNCkgLyA0LFxuICAgICAgbWludXRlczogKGRheXNJblllYXJBY2N1cmF0ZSAqIDI0ICogNjApIC8gNCxcbiAgICAgIHNlY29uZHM6IChkYXlzSW5ZZWFyQWNjdXJhdGUgKiAyNCAqIDYwICogNjApIC8gNCxcbiAgICAgIG1pbGxpc2Vjb25kczogKGRheXNJblllYXJBY2N1cmF0ZSAqIDI0ICogNjAgKiA2MCAqIDEwMDApIC8gNCxcbiAgICB9LFxuICAgIG1vbnRoczoge1xuICAgICAgd2Vla3M6IGRheXNJbk1vbnRoQWNjdXJhdGUgLyA3LFxuICAgICAgZGF5czogZGF5c0luTW9udGhBY2N1cmF0ZSxcbiAgICAgIGhvdXJzOiBkYXlzSW5Nb250aEFjY3VyYXRlICogMjQsXG4gICAgICBtaW51dGVzOiBkYXlzSW5Nb250aEFjY3VyYXRlICogMjQgKiA2MCxcbiAgICAgIHNlY29uZHM6IGRheXNJbk1vbnRoQWNjdXJhdGUgKiAyNCAqIDYwICogNjAsXG4gICAgICBtaWxsaXNlY29uZHM6IGRheXNJbk1vbnRoQWNjdXJhdGUgKiAyNCAqIDYwICogNjAgKiAxMDAwLFxuICAgIH0sXG4gICAgLi4ubG93T3JkZXJNYXRyaXgsXG4gIH07XG5cbi8vIHVuaXRzIG9yZGVyZWQgYnkgc2l6ZVxuY29uc3Qgb3JkZXJlZFVuaXRzID0gW1xuICBcInllYXJzXCIsXG4gIFwicXVhcnRlcnNcIixcbiAgXCJtb250aHNcIixcbiAgXCJ3ZWVrc1wiLFxuICBcImRheXNcIixcbiAgXCJob3Vyc1wiLFxuICBcIm1pbnV0ZXNcIixcbiAgXCJzZWNvbmRzXCIsXG4gIFwibWlsbGlzZWNvbmRzXCIsXG5dO1xuXG5jb25zdCByZXZlcnNlVW5pdHMgPSBvcmRlcmVkVW5pdHMuc2xpY2UoMCkucmV2ZXJzZSgpO1xuXG4vLyBjbG9uZSByZWFsbHkgbWVhbnMgXCJjcmVhdGUgYW5vdGhlciBpbnN0YW5jZSBqdXN0IGxpa2UgdGhpcyBvbmUsIGJ1dCB3aXRoIHRoZXNlIGNoYW5nZXNcIlxuZnVuY3Rpb24gY2xvbmUoZHVyLCBhbHRzLCBjbGVhciA9IGZhbHNlKSB7XG4gIC8vIGRlZXAgbWVyZ2UgZm9yIHZhbHNcbiAgY29uc3QgY29uZiA9IHtcbiAgICB2YWx1ZXM6IGNsZWFyID8gYWx0cy52YWx1ZXMgOiB7IC4uLmR1ci52YWx1ZXMsIC4uLihhbHRzLnZhbHVlcyB8fCB7fSkgfSxcbiAgICBsb2M6IGR1ci5sb2MuY2xvbmUoYWx0cy5sb2MpLFxuICAgIGNvbnZlcnNpb25BY2N1cmFjeTogYWx0cy5jb252ZXJzaW9uQWNjdXJhY3kgfHwgZHVyLmNvbnZlcnNpb25BY2N1cmFjeSxcbiAgfTtcbiAgcmV0dXJuIG5ldyBEdXJhdGlvbihjb25mKTtcbn1cblxuZnVuY3Rpb24gYW50aVRydW5jKG4pIHtcbiAgcmV0dXJuIG4gPCAwID8gTWF0aC5mbG9vcihuKSA6IE1hdGguY2VpbChuKTtcbn1cblxuLy8gTkI6IG11dGF0ZXMgcGFyYW1ldGVyc1xuZnVuY3Rpb24gY29udmVydChtYXRyaXgsIGZyb21NYXAsIGZyb21Vbml0LCB0b01hcCwgdG9Vbml0KSB7XG4gIGNvbnN0IGNvbnYgPSBtYXRyaXhbdG9Vbml0XVtmcm9tVW5pdF0sXG4gICAgcmF3ID0gZnJvbU1hcFtmcm9tVW5pdF0gLyBjb252LFxuICAgIHNhbWVTaWduID0gTWF0aC5zaWduKHJhdykgPT09IE1hdGguc2lnbih0b01hcFt0b1VuaXRdKSxcbiAgICAvLyBvaywgc28gdGhpcyBpcyB3aWxkLCBidXQgc2VlIHRoZSBtYXRyaXggaW4gdGhlIHRlc3RzXG4gICAgYWRkZWQgPVxuICAgICAgIXNhbWVTaWduICYmIHRvTWFwW3RvVW5pdF0gIT09IDAgJiYgTWF0aC5hYnMocmF3KSA8PSAxID8gYW50aVRydW5jKHJhdykgOiBNYXRoLnRydW5jKHJhdyk7XG4gIHRvTWFwW3RvVW5pdF0gKz0gYWRkZWQ7XG4gIGZyb21NYXBbZnJvbVVuaXRdIC09IGFkZGVkICogY29udjtcbn1cblxuLy8gTkI6IG11dGF0ZXMgcGFyYW1ldGVyc1xuZnVuY3Rpb24gbm9ybWFsaXplVmFsdWVzKG1hdHJpeCwgdmFscykge1xuICByZXZlcnNlVW5pdHMucmVkdWNlKChwcmV2aW91cywgY3VycmVudCkgPT4ge1xuICAgIGlmICghaXNVbmRlZmluZWQodmFsc1tjdXJyZW50XSkpIHtcbiAgICAgIGlmIChwcmV2aW91cykge1xuICAgICAgICBjb252ZXJ0KG1hdHJpeCwgdmFscywgcHJldmlvdXMsIHZhbHMsIGN1cnJlbnQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGN1cnJlbnQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBwcmV2aW91cztcbiAgICB9XG4gIH0sIG51bGwpO1xufVxuXG4vKipcbiAqIEEgRHVyYXRpb24gb2JqZWN0IHJlcHJlc2VudHMgYSBwZXJpb2Qgb2YgdGltZSwgbGlrZSBcIjIgbW9udGhzXCIgb3IgXCIxIGRheSwgMSBob3VyXCIuIENvbmNlcHR1YWxseSwgaXQncyBqdXN0IGEgbWFwIG9mIHVuaXRzIHRvIHRoZWlyIHF1YW50aXRpZXMsIGFjY29tcGFuaWVkIGJ5IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIGFuZCBtZXRob2RzIGZvciBjcmVhdGluZywgcGFyc2luZywgaW50ZXJyb2dhdGluZywgdHJhbnNmb3JtaW5nLCBhbmQgZm9ybWF0dGluZyB0aGVtLiBUaGV5IGNhbiBiZSB1c2VkIG9uIHRoZWlyIG93biBvciBpbiBjb25qdW5jdGlvbiB3aXRoIG90aGVyIEx1eG9uIHR5cGVzOyBmb3IgZXhhbXBsZSwgeW91IGNhbiB1c2Uge0BsaW5rIERhdGVUaW1lI3BsdXN9IHRvIGFkZCBhIER1cmF0aW9uIG9iamVjdCB0byBhIERhdGVUaW1lLCBwcm9kdWNpbmcgYW5vdGhlciBEYXRlVGltZS5cbiAqXG4gKiBIZXJlIGlzIGEgYnJpZWYgb3ZlcnZpZXcgb2YgY29tbW9ubHkgdXNlZCBtZXRob2RzIGFuZCBnZXR0ZXJzIGluIER1cmF0aW9uOlxuICpcbiAqICogKipDcmVhdGlvbioqIFRvIGNyZWF0ZSBhIER1cmF0aW9uLCB1c2Uge0BsaW5rIER1cmF0aW9uI2Zyb21NaWxsaXN9LCB7QGxpbmsgRHVyYXRpb24jZnJvbU9iamVjdH0sIG9yIHtAbGluayBEdXJhdGlvbiNmcm9tSVNPfS5cbiAqICogKipVbml0IHZhbHVlcyoqIFNlZSB0aGUge0BsaW5rIER1cmF0aW9uI3llYXJzfSwge0BsaW5rIER1cmF0aW9uI21vbnRoc30sIHtAbGluayBEdXJhdGlvbiN3ZWVrc30sIHtAbGluayBEdXJhdGlvbiNkYXlzfSwge0BsaW5rIER1cmF0aW9uI2hvdXJzfSwge0BsaW5rIER1cmF0aW9uI21pbnV0ZXN9LCB7QGxpbmsgRHVyYXRpb24jc2Vjb25kc30sIHtAbGluayBEdXJhdGlvbiNtaWxsaXNlY29uZHN9IGFjY2Vzc29ycy5cbiAqICogKipDb25maWd1cmF0aW9uKiogU2VlICB7QGxpbmsgRHVyYXRpb24jbG9jYWxlfSBhbmQge0BsaW5rIER1cmF0aW9uI251bWJlcmluZ1N5c3RlbX0gYWNjZXNzb3JzLlxuICogKiAqKlRyYW5zZm9ybWF0aW9uKiogVG8gY3JlYXRlIG5ldyBEdXJhdGlvbnMgb3V0IG9mIG9sZCBvbmVzIHVzZSB7QGxpbmsgRHVyYXRpb24jcGx1c30sIHtAbGluayBEdXJhdGlvbiNtaW51c30sIHtAbGluayBEdXJhdGlvbiNub3JtYWxpemV9LCB7QGxpbmsgRHVyYXRpb24jc2V0fSwge0BsaW5rIER1cmF0aW9uI3JlY29uZmlndXJlfSwge0BsaW5rIER1cmF0aW9uI3NoaWZ0VG99LCBhbmQge0BsaW5rIER1cmF0aW9uI25lZ2F0ZX0uXG4gKiAqICoqT3V0cHV0KiogVG8gY29udmVydCB0aGUgRHVyYXRpb24gaW50byBvdGhlciByZXByZXNlbnRhdGlvbnMsIHNlZSB7QGxpbmsgRHVyYXRpb24jYXN9LCB7QGxpbmsgRHVyYXRpb24jdG9JU099LCB7QGxpbmsgRHVyYXRpb24jdG9Gb3JtYXR9LCBhbmQge0BsaW5rIER1cmF0aW9uI3RvSlNPTn1cbiAqXG4gKiBUaGVyZSdzIGFyZSBtb3JlIG1ldGhvZHMgZG9jdW1lbnRlZCBiZWxvdy4gSW4gYWRkaXRpb24sIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHN1YnRsZXIgdG9waWNzIGxpa2UgaW50ZXJuYXRpb25hbGl6YXRpb24gYW5kIHZhbGlkaXR5LCBzZWUgdGhlIGV4dGVybmFsIGRvY3VtZW50YXRpb24uXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIER1cmF0aW9uIHtcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihjb25maWcpIHtcbiAgICBjb25zdCBhY2N1cmF0ZSA9IGNvbmZpZy5jb252ZXJzaW9uQWNjdXJhY3kgPT09IFwibG9uZ3Rlcm1cIiB8fCBmYWxzZTtcbiAgICAvKipcbiAgICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICAgKi9cbiAgICB0aGlzLnZhbHVlcyA9IGNvbmZpZy52YWx1ZXM7XG4gICAgLyoqXG4gICAgICogQGFjY2VzcyBwcml2YXRlXG4gICAgICovXG4gICAgdGhpcy5sb2MgPSBjb25maWcubG9jIHx8IExvY2FsZS5jcmVhdGUoKTtcbiAgICAvKipcbiAgICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICAgKi9cbiAgICB0aGlzLmNvbnZlcnNpb25BY2N1cmFjeSA9IGFjY3VyYXRlID8gXCJsb25ndGVybVwiIDogXCJjYXN1YWxcIjtcbiAgICAvKipcbiAgICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICAgKi9cbiAgICB0aGlzLmludmFsaWQgPSBjb25maWcuaW52YWxpZCB8fCBudWxsO1xuICAgIC8qKlxuICAgICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAgICAqL1xuICAgIHRoaXMubWF0cml4ID0gYWNjdXJhdGUgPyBhY2N1cmF0ZU1hdHJpeCA6IGNhc3VhbE1hdHJpeDtcbiAgICAvKipcbiAgICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICAgKi9cbiAgICB0aGlzLmlzTHV4b25EdXJhdGlvbiA9IHRydWU7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIER1cmF0aW9uIGZyb20gYSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzLlxuICAgKiBAcGFyYW0ge251bWJlcn0gY291bnQgb2YgbWlsbGlzZWNvbmRzXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucyBmb3IgcGFyc2luZ1xuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlPSdlbi1VUyddIC0gdGhlIGxvY2FsZSB0byB1c2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMubnVtYmVyaW5nU3lzdGVtIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0gdG8gdXNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5jb252ZXJzaW9uQWNjdXJhY3k9J2Nhc3VhbCddIC0gdGhlIGNvbnZlcnNpb24gc3lzdGVtIHRvIHVzZVxuICAgKiBAcmV0dXJuIHtEdXJhdGlvbn1cbiAgICovXG4gIHN0YXRpYyBmcm9tTWlsbGlzKGNvdW50LCBvcHRzKSB7XG4gICAgcmV0dXJuIER1cmF0aW9uLmZyb21PYmplY3QoeyBtaWxsaXNlY29uZHM6IGNvdW50IH0sIG9wdHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIER1cmF0aW9uIGZyb20gYSBKYXZhU2NyaXB0IG9iamVjdCB3aXRoIGtleXMgbGlrZSAneWVhcnMnIGFuZCAnaG91cnMnLlxuICAgKiBJZiB0aGlzIG9iamVjdCBpcyBlbXB0eSB0aGVuIGEgemVybyBtaWxsaXNlY29uZHMgZHVyYXRpb24gaXMgcmV0dXJuZWQuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvYmogLSB0aGUgb2JqZWN0IHRvIGNyZWF0ZSB0aGUgRGF0ZVRpbWUgZnJvbVxuICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLnllYXJzXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoucXVhcnRlcnNcbiAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5tb250aHNcbiAgICogQHBhcmFtIHtudW1iZXJ9IG9iai53ZWVrc1xuICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLmRheXNcbiAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5ob3Vyc1xuICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLm1pbnV0ZXNcbiAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5zZWNvbmRzXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoubWlsbGlzZWNvbmRzXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0cz1bXV0gLSBvcHRpb25zIGZvciBjcmVhdGluZyB0aGlzIER1cmF0aW9uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGU9J2VuLVVTJ10gLSB0aGUgbG9jYWxlIHRvIHVzZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5udW1iZXJpbmdTeXN0ZW0gLSB0aGUgbnVtYmVyaW5nIHN5c3RlbSB0byB1c2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmNvbnZlcnNpb25BY2N1cmFjeT0nY2FzdWFsJ10gLSB0aGUgY29udmVyc2lvbiBzeXN0ZW0gdG8gdXNlXG4gICAqIEByZXR1cm4ge0R1cmF0aW9ufVxuICAgKi9cbiAgc3RhdGljIGZyb21PYmplY3Qob2JqLCBvcHRzID0ge30pIHtcbiAgICBpZiAob2JqID09IG51bGwgfHwgdHlwZW9mIG9iaiAhPT0gXCJvYmplY3RcIikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKFxuICAgICAgICBgRHVyYXRpb24uZnJvbU9iamVjdDogYXJndW1lbnQgZXhwZWN0ZWQgdG8gYmUgYW4gb2JqZWN0LCBnb3QgJHtcbiAgICAgICAgICBvYmogPT09IG51bGwgPyBcIm51bGxcIiA6IHR5cGVvZiBvYmpcbiAgICAgICAgfWBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBEdXJhdGlvbih7XG4gICAgICB2YWx1ZXM6IG5vcm1hbGl6ZU9iamVjdChvYmosIER1cmF0aW9uLm5vcm1hbGl6ZVVuaXQpLFxuICAgICAgbG9jOiBMb2NhbGUuZnJvbU9iamVjdChvcHRzKSxcbiAgICAgIGNvbnZlcnNpb25BY2N1cmFjeTogb3B0cy5jb252ZXJzaW9uQWNjdXJhY3ksXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgRHVyYXRpb24gZnJvbSBEdXJhdGlvbkxpa2UuXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0IHwgbnVtYmVyIHwgRHVyYXRpb259IGR1cmF0aW9uTGlrZVxuICAgKiBPbmUgb2Y6XG4gICAqIC0gb2JqZWN0IHdpdGgga2V5cyBsaWtlICd5ZWFycycgYW5kICdob3VycycuXG4gICAqIC0gbnVtYmVyIHJlcHJlc2VudGluZyBtaWxsaXNlY29uZHNcbiAgICogLSBEdXJhdGlvbiBpbnN0YW5jZVxuICAgKiBAcmV0dXJuIHtEdXJhdGlvbn1cbiAgICovXG4gIHN0YXRpYyBmcm9tRHVyYXRpb25MaWtlKGR1cmF0aW9uTGlrZSkge1xuICAgIGlmIChpc051bWJlcihkdXJhdGlvbkxpa2UpKSB7XG4gICAgICByZXR1cm4gRHVyYXRpb24uZnJvbU1pbGxpcyhkdXJhdGlvbkxpa2UpO1xuICAgIH0gZWxzZSBpZiAoRHVyYXRpb24uaXNEdXJhdGlvbihkdXJhdGlvbkxpa2UpKSB7XG4gICAgICByZXR1cm4gZHVyYXRpb25MaWtlO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGR1cmF0aW9uTGlrZSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgcmV0dXJuIER1cmF0aW9uLmZyb21PYmplY3QoZHVyYXRpb25MaWtlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKFxuICAgICAgICBgVW5rbm93biBkdXJhdGlvbiBhcmd1bWVudCAke2R1cmF0aW9uTGlrZX0gb2YgdHlwZSAke3R5cGVvZiBkdXJhdGlvbkxpa2V9YFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgRHVyYXRpb24gZnJvbSBhbiBJU08gODYwMSBkdXJhdGlvbiBzdHJpbmcuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IC0gdGV4dCB0byBwYXJzZVxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgZm9yIHBhcnNpbmdcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT0nZW4tVVMnXSAtIHRoZSBsb2NhbGUgdG8gdXNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHVzZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuY29udmVyc2lvbkFjY3VyYWN5PSdjYXN1YWwnXSAtIHRoZSBjb252ZXJzaW9uIHN5c3RlbSB0byB1c2VcbiAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMSNEdXJhdGlvbnNcbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbUlTTygnUDNZNk0xVzREVDEySDMwTTVTJykudG9PYmplY3QoKSAvLz0+IHsgeWVhcnM6IDMsIG1vbnRoczogNiwgd2Vla3M6IDEsIGRheXM6IDQsIGhvdXJzOiAxMiwgbWludXRlczogMzAsIHNlY29uZHM6IDUgfVxuICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tSVNPKCdQVDIzSCcpLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAyMyB9XG4gICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21JU08oJ1A1WTNNJykudG9PYmplY3QoKSAvLz0+IHsgeWVhcnM6IDUsIG1vbnRoczogMyB9XG4gICAqIEByZXR1cm4ge0R1cmF0aW9ufVxuICAgKi9cbiAgc3RhdGljIGZyb21JU08odGV4dCwgb3B0cykge1xuICAgIGNvbnN0IFtwYXJzZWRdID0gcGFyc2VJU09EdXJhdGlvbih0ZXh0KTtcbiAgICBpZiAocGFyc2VkKSB7XG4gICAgICByZXR1cm4gRHVyYXRpb24uZnJvbU9iamVjdChwYXJzZWQsIG9wdHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gRHVyYXRpb24uaW52YWxpZChcInVucGFyc2FibGVcIiwgYHRoZSBpbnB1dCBcIiR7dGV4dH1cIiBjYW4ndCBiZSBwYXJzZWQgYXMgSVNPIDg2MDFgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgRHVyYXRpb24gZnJvbSBhbiBJU08gODYwMSB0aW1lIHN0cmluZy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSB0ZXh0IHRvIHBhcnNlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucyBmb3IgcGFyc2luZ1xuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlPSdlbi1VUyddIC0gdGhlIGxvY2FsZSB0byB1c2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMubnVtYmVyaW5nU3lzdGVtIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0gdG8gdXNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5jb252ZXJzaW9uQWNjdXJhY3k9J2Nhc3VhbCddIC0gdGhlIGNvbnZlcnNpb24gc3lzdGVtIHRvIHVzZVxuICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT184NjAxI1RpbWVzXG4gICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21JU09UaW1lKCcxMToyMjozMy40NDQnKS50b09iamVjdCgpIC8vPT4geyBob3VyczogMTEsIG1pbnV0ZXM6IDIyLCBzZWNvbmRzOiAzMywgbWlsbGlzZWNvbmRzOiA0NDQgfVxuICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tSVNPVGltZSgnMTE6MDAnKS50b09iamVjdCgpIC8vPT4geyBob3VyczogMTEsIG1pbnV0ZXM6IDAsIHNlY29uZHM6IDAgfVxuICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tSVNPVGltZSgnVDExOjAwJykudG9PYmplY3QoKSAvLz0+IHsgaG91cnM6IDExLCBtaW51dGVzOiAwLCBzZWNvbmRzOiAwIH1cbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbUlTT1RpbWUoJzExMDAnKS50b09iamVjdCgpIC8vPT4geyBob3VyczogMTEsIG1pbnV0ZXM6IDAsIHNlY29uZHM6IDAgfVxuICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tSVNPVGltZSgnVDExMDAnKS50b09iamVjdCgpIC8vPT4geyBob3VyczogMTEsIG1pbnV0ZXM6IDAsIHNlY29uZHM6IDAgfVxuICAgKiBAcmV0dXJuIHtEdXJhdGlvbn1cbiAgICovXG4gIHN0YXRpYyBmcm9tSVNPVGltZSh0ZXh0LCBvcHRzKSB7XG4gICAgY29uc3QgW3BhcnNlZF0gPSBwYXJzZUlTT1RpbWVPbmx5KHRleHQpO1xuICAgIGlmIChwYXJzZWQpIHtcbiAgICAgIHJldHVybiBEdXJhdGlvbi5mcm9tT2JqZWN0KHBhcnNlZCwgb3B0cyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBEdXJhdGlvbi5pbnZhbGlkKFwidW5wYXJzYWJsZVwiLCBgdGhlIGlucHV0IFwiJHt0ZXh0fVwiIGNhbid0IGJlIHBhcnNlZCBhcyBJU08gODYwMWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYW4gaW52YWxpZCBEdXJhdGlvbi5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHJlYXNvbiAtIHNpbXBsZSBzdHJpbmcgb2Ygd2h5IHRoaXMgZGF0ZXRpbWUgaXMgaW52YWxpZC4gU2hvdWxkIG5vdCBjb250YWluIHBhcmFtZXRlcnMgb3IgYW55dGhpbmcgZWxzZSBkYXRhLWRlcGVuZGVudFxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2V4cGxhbmF0aW9uPW51bGxdIC0gbG9uZ2VyIGV4cGxhbmF0aW9uLCBtYXkgaW5jbHVkZSBwYXJhbWV0ZXJzIGFuZCBvdGhlciB1c2VmdWwgZGVidWdnaW5nIGluZm9ybWF0aW9uXG4gICAqIEByZXR1cm4ge0R1cmF0aW9ufVxuICAgKi9cbiAgc3RhdGljIGludmFsaWQocmVhc29uLCBleHBsYW5hdGlvbiA9IG51bGwpIHtcbiAgICBpZiAoIXJlYXNvbikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKFwibmVlZCB0byBzcGVjaWZ5IGEgcmVhc29uIHRoZSBEdXJhdGlvbiBpcyBpbnZhbGlkXCIpO1xuICAgIH1cblxuICAgIGNvbnN0IGludmFsaWQgPSByZWFzb24gaW5zdGFuY2VvZiBJbnZhbGlkID8gcmVhc29uIDogbmV3IEludmFsaWQocmVhc29uLCBleHBsYW5hdGlvbik7XG5cbiAgICBpZiAoU2V0dGluZ3MudGhyb3dPbkludmFsaWQpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkRHVyYXRpb25FcnJvcihpbnZhbGlkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5ldyBEdXJhdGlvbih7IGludmFsaWQgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBzdGF0aWMgbm9ybWFsaXplVW5pdCh1bml0KSB7XG4gICAgY29uc3Qgbm9ybWFsaXplZCA9IHtcbiAgICAgIHllYXI6IFwieWVhcnNcIixcbiAgICAgIHllYXJzOiBcInllYXJzXCIsXG4gICAgICBxdWFydGVyOiBcInF1YXJ0ZXJzXCIsXG4gICAgICBxdWFydGVyczogXCJxdWFydGVyc1wiLFxuICAgICAgbW9udGg6IFwibW9udGhzXCIsXG4gICAgICBtb250aHM6IFwibW9udGhzXCIsXG4gICAgICB3ZWVrOiBcIndlZWtzXCIsXG4gICAgICB3ZWVrczogXCJ3ZWVrc1wiLFxuICAgICAgZGF5OiBcImRheXNcIixcbiAgICAgIGRheXM6IFwiZGF5c1wiLFxuICAgICAgaG91cjogXCJob3Vyc1wiLFxuICAgICAgaG91cnM6IFwiaG91cnNcIixcbiAgICAgIG1pbnV0ZTogXCJtaW51dGVzXCIsXG4gICAgICBtaW51dGVzOiBcIm1pbnV0ZXNcIixcbiAgICAgIHNlY29uZDogXCJzZWNvbmRzXCIsXG4gICAgICBzZWNvbmRzOiBcInNlY29uZHNcIixcbiAgICAgIG1pbGxpc2Vjb25kOiBcIm1pbGxpc2Vjb25kc1wiLFxuICAgICAgbWlsbGlzZWNvbmRzOiBcIm1pbGxpc2Vjb25kc1wiLFxuICAgIH1bdW5pdCA/IHVuaXQudG9Mb3dlckNhc2UoKSA6IHVuaXRdO1xuXG4gICAgaWYgKCFub3JtYWxpemVkKSB0aHJvdyBuZXcgSW52YWxpZFVuaXRFcnJvcih1bml0KTtcblxuICAgIHJldHVybiBub3JtYWxpemVkO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGFuIG9iamVjdCBpcyBhIER1cmF0aW9uLiBXb3JrcyBhY3Jvc3MgY29udGV4dCBib3VuZGFyaWVzXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBvXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqL1xuICBzdGF0aWMgaXNEdXJhdGlvbihvKSB7XG4gICAgcmV0dXJuIChvICYmIG8uaXNMdXhvbkR1cmF0aW9uKSB8fCBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgIHRoZSBsb2NhbGUgb2YgYSBEdXJhdGlvbiwgc3VjaCAnZW4tR0InXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBnZXQgbG9jYWxlKCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmxvYy5sb2NhbGUgOiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgbnVtYmVyaW5nIHN5c3RlbSBvZiBhIER1cmF0aW9uLCBzdWNoICdiZW5nJy4gVGhlIG51bWJlcmluZyBzeXN0ZW0gaXMgdXNlZCB3aGVuIGZvcm1hdHRpbmcgdGhlIER1cmF0aW9uXG4gICAqXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBnZXQgbnVtYmVyaW5nU3lzdGVtKCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmxvYy5udW1iZXJpbmdTeXN0ZW0gOiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEdXJhdGlvbiBmb3JtYXR0ZWQgYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQgZm9ybWF0IHN0cmluZy4gWW91IG1heSB1c2UgdGhlc2UgdG9rZW5zOlxuICAgKiAqIGBTYCBmb3IgbWlsbGlzZWNvbmRzXG4gICAqICogYHNgIGZvciBzZWNvbmRzXG4gICAqICogYG1gIGZvciBtaW51dGVzXG4gICAqICogYGhgIGZvciBob3Vyc1xuICAgKiAqIGBkYCBmb3IgZGF5c1xuICAgKiAqIGB3YCBmb3Igd2Vla3NcbiAgICogKiBgTWAgZm9yIG1vbnRoc1xuICAgKiAqIGB5YCBmb3IgeWVhcnNcbiAgICogTm90ZXM6XG4gICAqICogQWRkIHBhZGRpbmcgYnkgcmVwZWF0aW5nIHRoZSB0b2tlbiwgZS5nLiBcInl5XCIgcGFkcyB0aGUgeWVhcnMgdG8gdHdvIGRpZ2l0cywgXCJoaGhoXCIgcGFkcyB0aGUgaG91cnMgb3V0IHRvIGZvdXIgZGlnaXRzXG4gICAqICogVG9rZW5zIGNhbiBiZSBlc2NhcGVkIGJ5IHdyYXBwaW5nIHdpdGggc2luZ2xlIHF1b3Rlcy5cbiAgICogKiBUaGUgZHVyYXRpb24gd2lsbCBiZSBjb252ZXJ0ZWQgdG8gdGhlIHNldCBvZiB1bml0cyBpbiB0aGUgZm9ybWF0IHN0cmluZyB1c2luZyB7QGxpbmsgRHVyYXRpb24jc2hpZnRUb30gYW5kIHRoZSBEdXJhdGlvbnMncyBjb252ZXJzaW9uIGFjY3VyYWN5IHNldHRpbmcuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmbXQgLSB0aGUgZm9ybWF0IHN0cmluZ1xuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnNcbiAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5mbG9vcj10cnVlXSAtIGZsb29yIG51bWVyaWNhbCB2YWx1ZXNcbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IHllYXJzOiAxLCBkYXlzOiA2LCBzZWNvbmRzOiAyIH0pLnRvRm9ybWF0KFwieSBkIHNcIikgLy89PiBcIjEgNiAyXCJcbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IHllYXJzOiAxLCBkYXlzOiA2LCBzZWNvbmRzOiAyIH0pLnRvRm9ybWF0KFwieXkgZGQgc3NzXCIpIC8vPT4gXCIwMSAwNiAwMDJcIlxuICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgeWVhcnM6IDEsIGRheXM6IDYsIHNlY29uZHM6IDIgfSkudG9Gb3JtYXQoXCJNIFNcIikgLy89PiBcIjEyIDUxODQwMjAwMFwiXG4gICAqIEByZXR1cm4ge3N0cmluZ31cbiAgICovXG4gIHRvRm9ybWF0KGZtdCwgb3B0cyA9IHt9KSB7XG4gICAgLy8gcmV2ZXJzZS1jb21wYXQgc2luY2UgMS4yOyB3ZSBhbHdheXMgcm91bmQgZG93biBub3csIG5ldmVyIHVwLCBhbmQgd2UgZG8gaXQgYnkgZGVmYXVsdFxuICAgIGNvbnN0IGZtdE9wdHMgPSB7XG4gICAgICAuLi5vcHRzLFxuICAgICAgZmxvb3I6IG9wdHMucm91bmQgIT09IGZhbHNlICYmIG9wdHMuZmxvb3IgIT09IGZhbHNlLFxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZFxuICAgICAgPyBGb3JtYXR0ZXIuY3JlYXRlKHRoaXMubG9jLCBmbXRPcHRzKS5mb3JtYXREdXJhdGlvbkZyb21TdHJpbmcodGhpcywgZm10KVxuICAgICAgOiBJTlZBTElEO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBEdXJhdGlvbiB3aXRoIGFsbCB1bml0cyBpbmNsdWRlZC5cbiAgICogVG8gbW9kaWZ5IGl0cyBiZWhhdmlvciB1c2UgdGhlIGBsaXN0U3R5bGVgIGFuZCBhbnkgSW50bC5OdW1iZXJGb3JtYXQgb3B0aW9uLCB0aG91Z2ggYHVuaXREaXNwbGF5YCBpcyBlc3BlY2lhbGx5IHJlbGV2YW50LlxuICAgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0ludGwvTnVtYmVyRm9ybWF0XG4gICAqIEBwYXJhbSBvcHRzIC0gT24gb3B0aW9uIG9iamVjdCB0byBvdmVycmlkZSB0aGUgZm9ybWF0dGluZy4gQWNjZXB0cyB0aGUgc2FtZSBrZXlzIGFzIHRoZSBvcHRpb25zIHBhcmFtZXRlciBvZiB0aGUgbmF0aXZlIGBJbnQuTnVtYmVyRm9ybWF0YCBjb25zdHJ1Y3RvciwgYXMgd2VsbCBhcyBgbGlzdFN0eWxlYC5cbiAgICogQGV4YW1wbGVcbiAgICogYGBganNcbiAgICogdmFyIGR1ciA9IER1cmF0aW9uLmZyb21PYmplY3QoeyBkYXlzOiAxLCBob3VyczogNSwgbWludXRlczogNiB9KVxuICAgKiBkdXIudG9IdW1hbigpIC8vPT4gJzEgZGF5LCA1IGhvdXJzLCA2IG1pbnV0ZXMnXG4gICAqIGR1ci50b0h1bWFuKHsgbGlzdFN0eWxlOiBcImxvbmdcIiB9KSAvLz0+ICcxIGRheSwgNSBob3VycywgYW5kIDYgbWludXRlcydcbiAgICogZHVyLnRvSHVtYW4oeyB1bml0RGlzcGxheTogXCJzaG9ydFwiIH0pIC8vPT4gJzEgZGF5LCA1IGhyLCA2IG1pbidcbiAgICogYGBgXG4gICAqL1xuICB0b0h1bWFuKG9wdHMgPSB7fSkge1xuICAgIGNvbnN0IGwgPSBvcmRlcmVkVW5pdHNcbiAgICAgIC5tYXAoKHVuaXQpID0+IHtcbiAgICAgICAgY29uc3QgdmFsID0gdGhpcy52YWx1ZXNbdW5pdF07XG4gICAgICAgIGlmIChpc1VuZGVmaW5lZCh2YWwpKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMubG9jXG4gICAgICAgICAgLm51bWJlckZvcm1hdHRlcih7IHN0eWxlOiBcInVuaXRcIiwgdW5pdERpc3BsYXk6IFwibG9uZ1wiLCAuLi5vcHRzLCB1bml0OiB1bml0LnNsaWNlKDAsIC0xKSB9KVxuICAgICAgICAgIC5mb3JtYXQodmFsKTtcbiAgICAgIH0pXG4gICAgICAuZmlsdGVyKChuKSA9PiBuKTtcblxuICAgIHJldHVybiB0aGlzLmxvY1xuICAgICAgLmxpc3RGb3JtYXR0ZXIoeyB0eXBlOiBcImNvbmp1bmN0aW9uXCIsIHN0eWxlOiBvcHRzLmxpc3RTdHlsZSB8fCBcIm5hcnJvd1wiLCAuLi5vcHRzIH0pXG4gICAgICAuZm9ybWF0KGwpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBKYXZhU2NyaXB0IG9iamVjdCB3aXRoIHRoaXMgRHVyYXRpb24ncyB2YWx1ZXMuXG4gICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyB5ZWFyczogMSwgZGF5czogNiwgc2Vjb25kczogMiB9KS50b09iamVjdCgpIC8vPT4geyB5ZWFyczogMSwgZGF5czogNiwgc2Vjb25kczogMiB9XG4gICAqIEByZXR1cm4ge09iamVjdH1cbiAgICovXG4gIHRvT2JqZWN0KCkge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4ge307XG4gICAgcmV0dXJuIHsgLi4udGhpcy52YWx1ZXMgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIElTTyA4NjAxLWNvbXBsaWFudCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEdXJhdGlvbi5cbiAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMSNEdXJhdGlvbnNcbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IHllYXJzOiAzLCBzZWNvbmRzOiA0NSB9KS50b0lTTygpIC8vPT4gJ1AzWVQ0NVMnXG4gICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBtb250aHM6IDQsIHNlY29uZHM6IDQ1IH0pLnRvSVNPKCkgLy89PiAnUDRNVDQ1UydcbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IG1vbnRoczogNSB9KS50b0lTTygpIC8vPT4gJ1A1TSdcbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IG1pbnV0ZXM6IDUgfSkudG9JU08oKSAvLz0+ICdQVDVNJ1xuICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgbWlsbGlzZWNvbmRzOiA2IH0pLnRvSVNPKCkgLy89PiAnUFQwLjAwNlMnXG4gICAqIEByZXR1cm4ge3N0cmluZ31cbiAgICovXG4gIHRvSVNPKCkge1xuICAgIC8vIHdlIGNvdWxkIHVzZSB0aGUgZm9ybWF0dGVyLCBidXQgdGhpcyBpcyBhbiBlYXNpZXIgd2F5IHRvIGdldCB0aGUgbWluaW11bSBzdHJpbmdcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIG51bGw7XG5cbiAgICBsZXQgcyA9IFwiUFwiO1xuICAgIGlmICh0aGlzLnllYXJzICE9PSAwKSBzICs9IHRoaXMueWVhcnMgKyBcIllcIjtcbiAgICBpZiAodGhpcy5tb250aHMgIT09IDAgfHwgdGhpcy5xdWFydGVycyAhPT0gMCkgcyArPSB0aGlzLm1vbnRocyArIHRoaXMucXVhcnRlcnMgKiAzICsgXCJNXCI7XG4gICAgaWYgKHRoaXMud2Vla3MgIT09IDApIHMgKz0gdGhpcy53ZWVrcyArIFwiV1wiO1xuICAgIGlmICh0aGlzLmRheXMgIT09IDApIHMgKz0gdGhpcy5kYXlzICsgXCJEXCI7XG4gICAgaWYgKHRoaXMuaG91cnMgIT09IDAgfHwgdGhpcy5taW51dGVzICE9PSAwIHx8IHRoaXMuc2Vjb25kcyAhPT0gMCB8fCB0aGlzLm1pbGxpc2Vjb25kcyAhPT0gMClcbiAgICAgIHMgKz0gXCJUXCI7XG4gICAgaWYgKHRoaXMuaG91cnMgIT09IDApIHMgKz0gdGhpcy5ob3VycyArIFwiSFwiO1xuICAgIGlmICh0aGlzLm1pbnV0ZXMgIT09IDApIHMgKz0gdGhpcy5taW51dGVzICsgXCJNXCI7XG4gICAgaWYgKHRoaXMuc2Vjb25kcyAhPT0gMCB8fCB0aGlzLm1pbGxpc2Vjb25kcyAhPT0gMClcbiAgICAgIC8vIHRoaXMgd2lsbCBoYW5kbGUgXCJmbG9hdGluZyBwb2ludCBtYWRuZXNzXCIgYnkgcmVtb3ZpbmcgZXh0cmEgZGVjaW1hbCBwbGFjZXNcbiAgICAgIC8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzU4ODAwNC9pcy1mbG9hdGluZy1wb2ludC1tYXRoLWJyb2tlblxuICAgICAgcyArPSByb3VuZFRvKHRoaXMuc2Vjb25kcyArIHRoaXMubWlsbGlzZWNvbmRzIC8gMTAwMCwgMykgKyBcIlNcIjtcbiAgICBpZiAocyA9PT0gXCJQXCIpIHMgKz0gXCJUMFNcIjtcbiAgICByZXR1cm4gcztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIElTTyA4NjAxLWNvbXBsaWFudCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEdXJhdGlvbiwgZm9ybWF0dGVkIGFzIGEgdGltZSBvZiBkYXkuXG4gICAqIE5vdGUgdGhhdCB0aGlzIHdpbGwgcmV0dXJuIG51bGwgaWYgdGhlIGR1cmF0aW9uIGlzIGludmFsaWQsIG5lZ2F0aXZlLCBvciBlcXVhbCB0byBvciBncmVhdGVyIHRoYW4gMjQgaG91cnMuXG4gICAqIEBzZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPXzg2MDEjVGltZXNcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuc3VwcHJlc3NNaWxsaXNlY29uZHM9ZmFsc2VdIC0gZXhjbHVkZSBtaWxsaXNlY29uZHMgZnJvbSB0aGUgZm9ybWF0IGlmIHRoZXkncmUgMFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLnN1cHByZXNzU2Vjb25kcz1mYWxzZV0gLSBleGNsdWRlIHNlY29uZHMgZnJvbSB0aGUgZm9ybWF0IGlmIHRoZXkncmUgMFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmluY2x1ZGVQcmVmaXg9ZmFsc2VdIC0gaW5jbHVkZSB0aGUgYFRgIHByZWZpeFxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuZm9ybWF0PSdleHRlbmRlZCddIC0gY2hvb3NlIGJldHdlZW4gdGhlIGJhc2ljIGFuZCBleHRlbmRlZCBmb3JtYXRcbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxMSB9KS50b0lTT1RpbWUoKSAvLz0+ICcxMTowMDowMC4wMDAnXG4gICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMTEgfSkudG9JU09UaW1lKHsgc3VwcHJlc3NNaWxsaXNlY29uZHM6IHRydWUgfSkgLy89PiAnMTE6MDA6MDAnXG4gICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMTEgfSkudG9JU09UaW1lKHsgc3VwcHJlc3NTZWNvbmRzOiB0cnVlIH0pIC8vPT4gJzExOjAwJ1xuICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDExIH0pLnRvSVNPVGltZSh7IGluY2x1ZGVQcmVmaXg6IHRydWUgfSkgLy89PiAnVDExOjAwOjAwLjAwMCdcbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxMSB9KS50b0lTT1RpbWUoeyBmb3JtYXQ6ICdiYXNpYycgfSkgLy89PiAnMTEwMDAwLjAwMCdcbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgdG9JU09UaW1lKG9wdHMgPSB7fSkge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gbnVsbDtcblxuICAgIGNvbnN0IG1pbGxpcyA9IHRoaXMudG9NaWxsaXMoKTtcbiAgICBpZiAobWlsbGlzIDwgMCB8fCBtaWxsaXMgPj0gODY0MDAwMDApIHJldHVybiBudWxsO1xuXG4gICAgb3B0cyA9IHtcbiAgICAgIHN1cHByZXNzTWlsbGlzZWNvbmRzOiBmYWxzZSxcbiAgICAgIHN1cHByZXNzU2Vjb25kczogZmFsc2UsXG4gICAgICBpbmNsdWRlUHJlZml4OiBmYWxzZSxcbiAgICAgIGZvcm1hdDogXCJleHRlbmRlZFwiLFxuICAgICAgLi4ub3B0cyxcbiAgICB9O1xuXG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLnNoaWZ0VG8oXCJob3Vyc1wiLCBcIm1pbnV0ZXNcIiwgXCJzZWNvbmRzXCIsIFwibWlsbGlzZWNvbmRzXCIpO1xuXG4gICAgbGV0IGZtdCA9IG9wdHMuZm9ybWF0ID09PSBcImJhc2ljXCIgPyBcImhobW1cIiA6IFwiaGg6bW1cIjtcblxuICAgIGlmICghb3B0cy5zdXBwcmVzc1NlY29uZHMgfHwgdmFsdWUuc2Vjb25kcyAhPT0gMCB8fCB2YWx1ZS5taWxsaXNlY29uZHMgIT09IDApIHtcbiAgICAgIGZtdCArPSBvcHRzLmZvcm1hdCA9PT0gXCJiYXNpY1wiID8gXCJzc1wiIDogXCI6c3NcIjtcbiAgICAgIGlmICghb3B0cy5zdXBwcmVzc01pbGxpc2Vjb25kcyB8fCB2YWx1ZS5taWxsaXNlY29uZHMgIT09IDApIHtcbiAgICAgICAgZm10ICs9IFwiLlNTU1wiO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBzdHIgPSB2YWx1ZS50b0Zvcm1hdChmbXQpO1xuXG4gICAgaWYgKG9wdHMuaW5jbHVkZVByZWZpeCkge1xuICAgICAgc3RyID0gXCJUXCIgKyBzdHI7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0cjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIElTTyA4NjAxIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRHVyYXRpb24gYXBwcm9wcmlhdGUgZm9yIHVzZSBpbiBKU09OLlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9XG4gICAqL1xuICB0b0pTT04oKSB7XG4gICAgcmV0dXJuIHRoaXMudG9JU08oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIElTTyA4NjAxIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRHVyYXRpb24gYXBwcm9wcmlhdGUgZm9yIHVzZSBpbiBkZWJ1Z2dpbmcuXG4gICAqIEByZXR1cm4ge3N0cmluZ31cbiAgICovXG4gIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLnRvSVNPKCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBtaWxsaXNlY29uZHMgdmFsdWUgb2YgdGhpcyBEdXJhdGlvbi5cbiAgICogQHJldHVybiB7bnVtYmVyfVxuICAgKi9cbiAgdG9NaWxsaXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuYXMoXCJtaWxsaXNlY29uZHNcIik7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBtaWxsaXNlY29uZHMgdmFsdWUgb2YgdGhpcyBEdXJhdGlvbi4gQWxpYXMgb2Yge0BsaW5rIHRvTWlsbGlzfVxuICAgKiBAcmV0dXJuIHtudW1iZXJ9XG4gICAqL1xuICB2YWx1ZU9mKCkge1xuICAgIHJldHVybiB0aGlzLnRvTWlsbGlzKCk7XG4gIH1cblxuICAvKipcbiAgICogTWFrZSB0aGlzIER1cmF0aW9uIGxvbmdlciBieSB0aGUgc3BlY2lmaWVkIGFtb3VudC4gUmV0dXJuIGEgbmV3bHktY29uc3RydWN0ZWQgRHVyYXRpb24uXG4gICAqIEBwYXJhbSB7RHVyYXRpb258T2JqZWN0fG51bWJlcn0gZHVyYXRpb24gLSBUaGUgYW1vdW50IHRvIGFkZC4gRWl0aGVyIGEgTHV4b24gRHVyYXRpb24sIGEgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcywgdGhlIG9iamVjdCBhcmd1bWVudCB0byBEdXJhdGlvbi5mcm9tT2JqZWN0KClcbiAgICogQHJldHVybiB7RHVyYXRpb259XG4gICAqL1xuICBwbHVzKGR1cmF0aW9uKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzO1xuXG4gICAgY29uc3QgZHVyID0gRHVyYXRpb24uZnJvbUR1cmF0aW9uTGlrZShkdXJhdGlvbiksXG4gICAgICByZXN1bHQgPSB7fTtcblxuICAgIGZvciAoY29uc3QgayBvZiBvcmRlcmVkVW5pdHMpIHtcbiAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eShkdXIudmFsdWVzLCBrKSB8fCBoYXNPd25Qcm9wZXJ0eSh0aGlzLnZhbHVlcywgaykpIHtcbiAgICAgICAgcmVzdWx0W2tdID0gZHVyLmdldChrKSArIHRoaXMuZ2V0KGspO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjbG9uZSh0aGlzLCB7IHZhbHVlczogcmVzdWx0IH0sIHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ha2UgdGhpcyBEdXJhdGlvbiBzaG9ydGVyIGJ5IHRoZSBzcGVjaWZpZWQgYW1vdW50LiBSZXR1cm4gYSBuZXdseS1jb25zdHJ1Y3RlZCBEdXJhdGlvbi5cbiAgICogQHBhcmFtIHtEdXJhdGlvbnxPYmplY3R8bnVtYmVyfSBkdXJhdGlvbiAtIFRoZSBhbW91bnQgdG8gc3VidHJhY3QuIEVpdGhlciBhIEx1eG9uIER1cmF0aW9uLCBhIG51bWJlciBvZiBtaWxsaXNlY29uZHMsIHRoZSBvYmplY3QgYXJndW1lbnQgdG8gRHVyYXRpb24uZnJvbU9iamVjdCgpXG4gICAqIEByZXR1cm4ge0R1cmF0aW9ufVxuICAgKi9cbiAgbWludXMoZHVyYXRpb24pIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7XG5cbiAgICBjb25zdCBkdXIgPSBEdXJhdGlvbi5mcm9tRHVyYXRpb25MaWtlKGR1cmF0aW9uKTtcbiAgICByZXR1cm4gdGhpcy5wbHVzKGR1ci5uZWdhdGUoKSk7XG4gIH1cblxuICAvKipcbiAgICogU2NhbGUgdGhpcyBEdXJhdGlvbiBieSB0aGUgc3BlY2lmaWVkIGFtb3VudC4gUmV0dXJuIGEgbmV3bHktY29uc3RydWN0ZWQgRHVyYXRpb24uXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGZuIC0gVGhlIGZ1bmN0aW9uIHRvIGFwcGx5IHRvIGVhY2ggdW5pdC4gQXJpdHkgaXMgMSBvciAyOiB0aGUgdmFsdWUgb2YgdGhlIHVuaXQgYW5kLCBvcHRpb25hbGx5LCB0aGUgdW5pdCBuYW1lLiBNdXN0IHJldHVybiBhIG51bWJlci5cbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxLCBtaW51dGVzOiAzMCB9KS5tYXBVbml0cyh4ID0+IHggKiAyKSAvLz0+IHsgaG91cnM6IDIsIG1pbnV0ZXM6IDYwIH1cbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxLCBtaW51dGVzOiAzMCB9KS5tYXBVbml0cygoeCwgdSkgPT4gdSA9PT0gXCJob3VyXCIgPyB4ICogMiA6IHgpIC8vPT4geyBob3VyczogMiwgbWludXRlczogMzAgfVxuICAgKiBAcmV0dXJuIHtEdXJhdGlvbn1cbiAgICovXG4gIG1hcFVuaXRzKGZuKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzO1xuICAgIGNvbnN0IHJlc3VsdCA9IHt9O1xuICAgIGZvciAoY29uc3QgayBvZiBPYmplY3Qua2V5cyh0aGlzLnZhbHVlcykpIHtcbiAgICAgIHJlc3VsdFtrXSA9IGFzTnVtYmVyKGZuKHRoaXMudmFsdWVzW2tdLCBrKSk7XG4gICAgfVxuICAgIHJldHVybiBjbG9uZSh0aGlzLCB7IHZhbHVlczogcmVzdWx0IH0sIHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgdmFsdWUgb2YgdW5pdC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHVuaXQgLSBhIHVuaXQgc3VjaCBhcyAnbWludXRlJyBvciAnZGF5J1xuICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHt5ZWFyczogMiwgZGF5czogM30pLmdldCgneWVhcnMnKSAvLz0+IDJcbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7eWVhcnM6IDIsIGRheXM6IDN9KS5nZXQoJ21vbnRocycpIC8vPT4gMFxuICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHt5ZWFyczogMiwgZGF5czogM30pLmdldCgnZGF5cycpIC8vPT4gM1xuICAgKiBAcmV0dXJuIHtudW1iZXJ9XG4gICAqL1xuICBnZXQodW5pdCkge1xuICAgIHJldHVybiB0aGlzW0R1cmF0aW9uLm5vcm1hbGl6ZVVuaXQodW5pdCldO1xuICB9XG5cbiAgLyoqXG4gICAqIFwiU2V0XCIgdGhlIHZhbHVlcyBvZiBzcGVjaWZpZWQgdW5pdHMuIFJldHVybiBhIG5ld2x5LWNvbnN0cnVjdGVkIER1cmF0aW9uLlxuICAgKiBAcGFyYW0ge09iamVjdH0gdmFsdWVzIC0gYSBtYXBwaW5nIG9mIHVuaXRzIHRvIG51bWJlcnNcbiAgICogQGV4YW1wbGUgZHVyLnNldCh7IHllYXJzOiAyMDE3IH0pXG4gICAqIEBleGFtcGxlIGR1ci5zZXQoeyBob3VyczogOCwgbWludXRlczogMzAgfSlcbiAgICogQHJldHVybiB7RHVyYXRpb259XG4gICAqL1xuICBzZXQodmFsdWVzKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzO1xuXG4gICAgY29uc3QgbWl4ZWQgPSB7IC4uLnRoaXMudmFsdWVzLCAuLi5ub3JtYWxpemVPYmplY3QodmFsdWVzLCBEdXJhdGlvbi5ub3JtYWxpemVVbml0KSB9O1xuICAgIHJldHVybiBjbG9uZSh0aGlzLCB7IHZhbHVlczogbWl4ZWQgfSk7XG4gIH1cblxuICAvKipcbiAgICogXCJTZXRcIiB0aGUgbG9jYWxlIGFuZC9vciBudW1iZXJpbmdTeXN0ZW0uICBSZXR1cm5zIGEgbmV3bHktY29uc3RydWN0ZWQgRHVyYXRpb24uXG4gICAqIEBleGFtcGxlIGR1ci5yZWNvbmZpZ3VyZSh7IGxvY2FsZTogJ2VuLUdCJyB9KVxuICAgKiBAcmV0dXJuIHtEdXJhdGlvbn1cbiAgICovXG4gIHJlY29uZmlndXJlKHsgbG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIGNvbnZlcnNpb25BY2N1cmFjeSB9ID0ge30pIHtcbiAgICBjb25zdCBsb2MgPSB0aGlzLmxvYy5jbG9uZSh7IGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtIH0pLFxuICAgICAgb3B0cyA9IHsgbG9jIH07XG5cbiAgICBpZiAoY29udmVyc2lvbkFjY3VyYWN5KSB7XG4gICAgICBvcHRzLmNvbnZlcnNpb25BY2N1cmFjeSA9IGNvbnZlcnNpb25BY2N1cmFjeTtcbiAgICB9XG5cbiAgICByZXR1cm4gY2xvbmUodGhpcywgb3B0cyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRoZSBsZW5ndGggb2YgdGhlIGR1cmF0aW9uIGluIHRoZSBzcGVjaWZpZWQgdW5pdC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHVuaXQgLSBhIHVuaXQgc3VjaCBhcyAnbWludXRlcycgb3IgJ2RheXMnXG4gICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3Qoe3llYXJzOiAxfSkuYXMoJ2RheXMnKSAvLz0+IDM2NVxuICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHt5ZWFyczogMX0pLmFzKCdtb250aHMnKSAvLz0+IDEyXG4gICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3Qoe2hvdXJzOiA2MH0pLmFzKCdkYXlzJykgLy89PiAyLjVcbiAgICogQHJldHVybiB7bnVtYmVyfVxuICAgKi9cbiAgYXModW5pdCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnNoaWZ0VG8odW5pdCkuZ2V0KHVuaXQpIDogTmFOO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZHVjZSB0aGlzIER1cmF0aW9uIHRvIGl0cyBjYW5vbmljYWwgcmVwcmVzZW50YXRpb24gaW4gaXRzIGN1cnJlbnQgdW5pdHMuXG4gICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyB5ZWFyczogMiwgZGF5czogNTAwMCB9KS5ub3JtYWxpemUoKS50b09iamVjdCgpIC8vPT4geyB5ZWFyczogMTUsIGRheXM6IDI1NSB9XG4gICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMTIsIG1pbnV0ZXM6IC00NSB9KS5ub3JtYWxpemUoKS50b09iamVjdCgpIC8vPT4geyBob3VyczogMTEsIG1pbnV0ZXM6IDE1IH1cbiAgICogQHJldHVybiB7RHVyYXRpb259XG4gICAqL1xuICBub3JtYWxpemUoKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzO1xuICAgIGNvbnN0IHZhbHMgPSB0aGlzLnRvT2JqZWN0KCk7XG4gICAgbm9ybWFsaXplVmFsdWVzKHRoaXMubWF0cml4LCB2YWxzKTtcbiAgICByZXR1cm4gY2xvbmUodGhpcywgeyB2YWx1ZXM6IHZhbHMgfSwgdHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCB0aGlzIER1cmF0aW9uIGludG8gaXRzIHJlcHJlc2VudGF0aW9uIGluIGEgZGlmZmVyZW50IHNldCBvZiB1bml0cy5cbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxLCBzZWNvbmRzOiAzMCB9KS5zaGlmdFRvKCdtaW51dGVzJywgJ21pbGxpc2Vjb25kcycpLnRvT2JqZWN0KCkgLy89PiB7IG1pbnV0ZXM6IDYwLCBtaWxsaXNlY29uZHM6IDMwMDAwIH1cbiAgICogQHJldHVybiB7RHVyYXRpb259XG4gICAqL1xuICBzaGlmdFRvKC4uLnVuaXRzKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzO1xuXG4gICAgaWYgKHVuaXRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgdW5pdHMgPSB1bml0cy5tYXAoKHUpID0+IER1cmF0aW9uLm5vcm1hbGl6ZVVuaXQodSkpO1xuXG4gICAgY29uc3QgYnVpbHQgPSB7fSxcbiAgICAgIGFjY3VtdWxhdGVkID0ge30sXG4gICAgICB2YWxzID0gdGhpcy50b09iamVjdCgpO1xuICAgIGxldCBsYXN0VW5pdDtcblxuICAgIGZvciAoY29uc3QgayBvZiBvcmRlcmVkVW5pdHMpIHtcbiAgICAgIGlmICh1bml0cy5pbmRleE9mKGspID49IDApIHtcbiAgICAgICAgbGFzdFVuaXQgPSBrO1xuXG4gICAgICAgIGxldCBvd24gPSAwO1xuXG4gICAgICAgIC8vIGFueXRoaW5nIHdlIGhhdmVuJ3QgYm9pbGVkIGRvd24geWV0IHNob3VsZCBnZXQgYm9pbGVkIHRvIHRoaXMgdW5pdFxuICAgICAgICBmb3IgKGNvbnN0IGFrIGluIGFjY3VtdWxhdGVkKSB7XG4gICAgICAgICAgb3duICs9IHRoaXMubWF0cml4W2FrXVtrXSAqIGFjY3VtdWxhdGVkW2FrXTtcbiAgICAgICAgICBhY2N1bXVsYXRlZFtha10gPSAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gcGx1cyBhbnl0aGluZyB0aGF0J3MgYWxyZWFkeSBpbiB0aGlzIHVuaXRcbiAgICAgICAgaWYgKGlzTnVtYmVyKHZhbHNba10pKSB7XG4gICAgICAgICAgb3duICs9IHZhbHNba107XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpID0gTWF0aC50cnVuYyhvd24pO1xuICAgICAgICBidWlsdFtrXSA9IGk7XG4gICAgICAgIGFjY3VtdWxhdGVkW2tdID0gKG93biAqIDEwMDAgLSBpICogMTAwMCkgLyAxMDAwO1xuXG4gICAgICAgIC8vIHBsdXMgYW55dGhpbmcgZnVydGhlciBkb3duIHRoZSBjaGFpbiB0aGF0IHNob3VsZCBiZSByb2xsZWQgdXAgaW4gdG8gdGhpc1xuICAgICAgICBmb3IgKGNvbnN0IGRvd24gaW4gdmFscykge1xuICAgICAgICAgIGlmIChvcmRlcmVkVW5pdHMuaW5kZXhPZihkb3duKSA+IG9yZGVyZWRVbml0cy5pbmRleE9mKGspKSB7XG4gICAgICAgICAgICBjb252ZXJ0KHRoaXMubWF0cml4LCB2YWxzLCBkb3duLCBidWlsdCwgayk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIG90aGVyd2lzZSwga2VlcCBpdCBpbiB0aGUgd2luZ3MgdG8gYm9pbCBpdCBsYXRlclxuICAgICAgfSBlbHNlIGlmIChpc051bWJlcih2YWxzW2tdKSkge1xuICAgICAgICBhY2N1bXVsYXRlZFtrXSA9IHZhbHNba107XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gYW55dGhpbmcgbGVmdG92ZXIgYmVjb21lcyB0aGUgZGVjaW1hbCBmb3IgdGhlIGxhc3QgdW5pdFxuICAgIC8vIGxhc3RVbml0IG11c3QgYmUgZGVmaW5lZCBzaW5jZSB1bml0cyBpcyBub3QgZW1wdHlcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBhY2N1bXVsYXRlZCkge1xuICAgICAgaWYgKGFjY3VtdWxhdGVkW2tleV0gIT09IDApIHtcbiAgICAgICAgYnVpbHRbbGFzdFVuaXRdICs9XG4gICAgICAgICAga2V5ID09PSBsYXN0VW5pdCA/IGFjY3VtdWxhdGVkW2tleV0gOiBhY2N1bXVsYXRlZFtrZXldIC8gdGhpcy5tYXRyaXhbbGFzdFVuaXRdW2tleV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGNsb25lKHRoaXMsIHsgdmFsdWVzOiBidWlsdCB9LCB0cnVlKS5ub3JtYWxpemUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIG5lZ2F0aXZlIG9mIHRoaXMgRHVyYXRpb24uXG4gICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMSwgc2Vjb25kczogMzAgfSkubmVnYXRlKCkudG9PYmplY3QoKSAvLz0+IHsgaG91cnM6IC0xLCBzZWNvbmRzOiAtMzAgfVxuICAgKiBAcmV0dXJuIHtEdXJhdGlvbn1cbiAgICovXG4gIG5lZ2F0ZSgpIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7XG4gICAgY29uc3QgbmVnYXRlZCA9IHt9O1xuICAgIGZvciAoY29uc3QgayBvZiBPYmplY3Qua2V5cyh0aGlzLnZhbHVlcykpIHtcbiAgICAgIG5lZ2F0ZWRba10gPSB0aGlzLnZhbHVlc1trXSA9PT0gMCA/IDAgOiAtdGhpcy52YWx1ZXNba107XG4gICAgfVxuICAgIHJldHVybiBjbG9uZSh0aGlzLCB7IHZhbHVlczogbmVnYXRlZCB9LCB0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHllYXJzLlxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKi9cbiAgZ2V0IHllYXJzKCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnZhbHVlcy55ZWFycyB8fCAwIDogTmFOO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgcXVhcnRlcnMuXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqL1xuICBnZXQgcXVhcnRlcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudmFsdWVzLnF1YXJ0ZXJzIHx8IDAgOiBOYU47XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBtb250aHMuXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqL1xuICBnZXQgbW9udGhzKCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnZhbHVlcy5tb250aHMgfHwgMCA6IE5hTjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHdlZWtzXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqL1xuICBnZXQgd2Vla3MoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudmFsdWVzLndlZWtzIHx8IDAgOiBOYU47XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBkYXlzLlxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKi9cbiAgZ2V0IGRheXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudmFsdWVzLmRheXMgfHwgMCA6IE5hTjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGhvdXJzLlxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKi9cbiAgZ2V0IGhvdXJzKCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnZhbHVlcy5ob3VycyB8fCAwIDogTmFOO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgbWludXRlcy5cbiAgICogQHR5cGUge251bWJlcn1cbiAgICovXG4gIGdldCBtaW51dGVzKCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnZhbHVlcy5taW51dGVzIHx8IDAgOiBOYU47XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBzZWNvbmRzLlxuICAgKiBAcmV0dXJuIHtudW1iZXJ9XG4gICAqL1xuICBnZXQgc2Vjb25kcygpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy52YWx1ZXMuc2Vjb25kcyB8fCAwIDogTmFOO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgbWlsbGlzZWNvbmRzLlxuICAgKiBAcmV0dXJuIHtudW1iZXJ9XG4gICAqL1xuICBnZXQgbWlsbGlzZWNvbmRzKCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnZhbHVlcy5taWxsaXNlY29uZHMgfHwgMCA6IE5hTjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIER1cmF0aW9uIGlzIGludmFsaWQuIEludmFsaWQgZHVyYXRpb25zIGFyZSByZXR1cm5lZCBieSBkaWZmIG9wZXJhdGlvbnNcbiAgICogb24gaW52YWxpZCBEYXRlVGltZXMgb3IgSW50ZXJ2YWxzLlxuICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgKi9cbiAgZ2V0IGlzVmFsaWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW52YWxpZCA9PT0gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIGVycm9yIGNvZGUgaWYgdGhpcyBEdXJhdGlvbiBiZWNhbWUgaW52YWxpZCwgb3IgbnVsbCBpZiB0aGUgRHVyYXRpb24gaXMgdmFsaWRcbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgZ2V0IGludmFsaWRSZWFzb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuaW52YWxpZCA/IHRoaXMuaW52YWxpZC5yZWFzb24gOiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gZXhwbGFuYXRpb24gb2Ygd2h5IHRoaXMgRHVyYXRpb24gYmVjYW1lIGludmFsaWQsIG9yIG51bGwgaWYgdGhlIER1cmF0aW9uIGlzIHZhbGlkXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBnZXQgaW52YWxpZEV4cGxhbmF0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLmludmFsaWQgPyB0aGlzLmludmFsaWQuZXhwbGFuYXRpb24gOiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEVxdWFsaXR5IGNoZWNrXG4gICAqIFR3byBEdXJhdGlvbnMgYXJlIGVxdWFsIGlmZiB0aGV5IGhhdmUgdGhlIHNhbWUgdW5pdHMgYW5kIHRoZSBzYW1lIHZhbHVlcyBmb3IgZWFjaCB1bml0LlxuICAgKiBAcGFyYW0ge0R1cmF0aW9ufSBvdGhlclxuICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgKi9cbiAgZXF1YWxzKG90aGVyKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQgfHwgIW90aGVyLmlzVmFsaWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMubG9jLmVxdWFscyhvdGhlci5sb2MpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZXEodjEsIHYyKSB7XG4gICAgICAvLyBDb25zaWRlciAwIGFuZCB1bmRlZmluZWQgYXMgZXF1YWxcbiAgICAgIGlmICh2MSA9PT0gdW5kZWZpbmVkIHx8IHYxID09PSAwKSByZXR1cm4gdjIgPT09IHVuZGVmaW5lZCB8fCB2MiA9PT0gMDtcbiAgICAgIHJldHVybiB2MSA9PT0gdjI7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCB1IG9mIG9yZGVyZWRVbml0cykge1xuICAgICAgaWYgKCFlcSh0aGlzLnZhbHVlc1t1XSwgb3RoZXIudmFsdWVzW3VdKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG4iLCAiaW1wb3J0IERhdGVUaW1lLCB7IGZyaWVuZGx5RGF0ZVRpbWUgfSBmcm9tIFwiLi9kYXRldGltZS5qc1wiO1xuaW1wb3J0IER1cmF0aW9uIGZyb20gXCIuL2R1cmF0aW9uLmpzXCI7XG5pbXBvcnQgU2V0dGluZ3MgZnJvbSBcIi4vc2V0dGluZ3MuanNcIjtcbmltcG9ydCB7IEludmFsaWRBcmd1bWVudEVycm9yLCBJbnZhbGlkSW50ZXJ2YWxFcnJvciB9IGZyb20gXCIuL2Vycm9ycy5qc1wiO1xuaW1wb3J0IEludmFsaWQgZnJvbSBcIi4vaW1wbC9pbnZhbGlkLmpzXCI7XG5cbmNvbnN0IElOVkFMSUQgPSBcIkludmFsaWQgSW50ZXJ2YWxcIjtcblxuLy8gY2hlY2tzIGlmIHRoZSBzdGFydCBpcyBlcXVhbCB0byBvciBiZWZvcmUgdGhlIGVuZFxuZnVuY3Rpb24gdmFsaWRhdGVTdGFydEVuZChzdGFydCwgZW5kKSB7XG4gIGlmICghc3RhcnQgfHwgIXN0YXJ0LmlzVmFsaWQpIHtcbiAgICByZXR1cm4gSW50ZXJ2YWwuaW52YWxpZChcIm1pc3Npbmcgb3IgaW52YWxpZCBzdGFydFwiKTtcbiAgfSBlbHNlIGlmICghZW5kIHx8ICFlbmQuaXNWYWxpZCkge1xuICAgIHJldHVybiBJbnRlcnZhbC5pbnZhbGlkKFwibWlzc2luZyBvciBpbnZhbGlkIGVuZFwiKTtcbiAgfSBlbHNlIGlmIChlbmQgPCBzdGFydCkge1xuICAgIHJldHVybiBJbnRlcnZhbC5pbnZhbGlkKFxuICAgICAgXCJlbmQgYmVmb3JlIHN0YXJ0XCIsXG4gICAgICBgVGhlIGVuZCBvZiBhbiBpbnRlcnZhbCBtdXN0IGJlIGFmdGVyIGl0cyBzdGFydCwgYnV0IHlvdSBoYWQgc3RhcnQ9JHtzdGFydC50b0lTTygpfSBhbmQgZW5kPSR7ZW5kLnRvSVNPKCl9YFxuICAgICk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuLyoqXG4gKiBBbiBJbnRlcnZhbCBvYmplY3QgcmVwcmVzZW50cyBhIGhhbGYtb3BlbiBpbnRlcnZhbCBvZiB0aW1lLCB3aGVyZSBlYWNoIGVuZHBvaW50IGlzIGEge0BsaW5rIERhdGVUaW1lfS4gQ29uY2VwdHVhbGx5LCBpdCdzIGEgY29udGFpbmVyIGZvciB0aG9zZSB0d28gZW5kcG9pbnRzLCBhY2NvbXBhbmllZCBieSBtZXRob2RzIGZvciBjcmVhdGluZywgcGFyc2luZywgaW50ZXJyb2dhdGluZywgY29tcGFyaW5nLCB0cmFuc2Zvcm1pbmcsIGFuZCBmb3JtYXR0aW5nIHRoZW0uXG4gKlxuICogSGVyZSBpcyBhIGJyaWVmIG92ZXJ2aWV3IG9mIHRoZSBtb3N0IGNvbW1vbmx5IHVzZWQgbWV0aG9kcyBhbmQgZ2V0dGVycyBpbiBJbnRlcnZhbDpcbiAqXG4gKiAqICoqQ3JlYXRpb24qKiBUbyBjcmVhdGUgYW4gSW50ZXJ2YWwsIHVzZSB7QGxpbmsgSW50ZXJ2YWwjZnJvbURhdGVUaW1lc30sIHtAbGluayBJbnRlcnZhbCNhZnRlcn0sIHtAbGluayBJbnRlcnZhbCNiZWZvcmV9LCBvciB7QGxpbmsgSW50ZXJ2YWwjZnJvbUlTT30uXG4gKiAqICoqQWNjZXNzb3JzKiogVXNlIHtAbGluayBJbnRlcnZhbCNzdGFydH0gYW5kIHtAbGluayBJbnRlcnZhbCNlbmR9IHRvIGdldCB0aGUgc3RhcnQgYW5kIGVuZC5cbiAqICogKipJbnRlcnJvZ2F0aW9uKiogVG8gYW5hbHl6ZSB0aGUgSW50ZXJ2YWwsIHVzZSB7QGxpbmsgSW50ZXJ2YWwjY291bnR9LCB7QGxpbmsgSW50ZXJ2YWwjbGVuZ3RofSwge0BsaW5rIEludGVydmFsI2hhc1NhbWV9LCB7QGxpbmsgSW50ZXJ2YWwjY29udGFpbnN9LCB7QGxpbmsgSW50ZXJ2YWwjaXNBZnRlcn0sIG9yIHtAbGluayBJbnRlcnZhbCNpc0JlZm9yZX0uXG4gKiAqICoqVHJhbnNmb3JtYXRpb24qKiBUbyBjcmVhdGUgb3RoZXIgSW50ZXJ2YWxzIG91dCBvZiB0aGlzIG9uZSwgdXNlIHtAbGluayBJbnRlcnZhbCNzZXR9LCB7QGxpbmsgSW50ZXJ2YWwjc3BsaXRBdH0sIHtAbGluayBJbnRlcnZhbCNzcGxpdEJ5fSwge0BsaW5rIEludGVydmFsI2RpdmlkZUVxdWFsbHl9LCB7QGxpbmsgSW50ZXJ2YWwjbWVyZ2V9LCB7QGxpbmsgSW50ZXJ2YWwjeG9yfSwge0BsaW5rIEludGVydmFsI3VuaW9ufSwge0BsaW5rIEludGVydmFsI2ludGVyc2VjdGlvbn0sIG9yIHtAbGluayBJbnRlcnZhbCNkaWZmZXJlbmNlfS5cbiAqICogKipDb21wYXJpc29uKiogVG8gY29tcGFyZSB0aGlzIEludGVydmFsIHRvIGFub3RoZXIgb25lLCB1c2Uge0BsaW5rIEludGVydmFsI2VxdWFsc30sIHtAbGluayBJbnRlcnZhbCNvdmVybGFwc30sIHtAbGluayBJbnRlcnZhbCNhYnV0c1N0YXJ0fSwge0BsaW5rIEludGVydmFsI2FidXRzRW5kfSwge0BsaW5rIEludGVydmFsI2VuZ3VsZnN9XG4gKiAqICoqT3V0cHV0KiogVG8gY29udmVydCB0aGUgSW50ZXJ2YWwgaW50byBvdGhlciByZXByZXNlbnRhdGlvbnMsIHNlZSB7QGxpbmsgSW50ZXJ2YWwjdG9TdHJpbmd9LCB7QGxpbmsgSW50ZXJ2YWwjdG9JU099LCB7QGxpbmsgSW50ZXJ2YWwjdG9JU09EYXRlfSwge0BsaW5rIEludGVydmFsI3RvSVNPVGltZX0sIHtAbGluayBJbnRlcnZhbCN0b0Zvcm1hdH0sIGFuZCB7QGxpbmsgSW50ZXJ2YWwjdG9EdXJhdGlvbn0uXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEludGVydmFsIHtcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihjb25maWcpIHtcbiAgICAvKipcbiAgICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICAgKi9cbiAgICB0aGlzLnMgPSBjb25maWcuc3RhcnQ7XG4gICAgLyoqXG4gICAgICogQGFjY2VzcyBwcml2YXRlXG4gICAgICovXG4gICAgdGhpcy5lID0gY29uZmlnLmVuZDtcbiAgICAvKipcbiAgICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICAgKi9cbiAgICB0aGlzLmludmFsaWQgPSBjb25maWcuaW52YWxpZCB8fCBudWxsO1xuICAgIC8qKlxuICAgICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAgICAqL1xuICAgIHRoaXMuaXNMdXhvbkludGVydmFsID0gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYW4gaW52YWxpZCBJbnRlcnZhbC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHJlYXNvbiAtIHNpbXBsZSBzdHJpbmcgb2Ygd2h5IHRoaXMgSW50ZXJ2YWwgaXMgaW52YWxpZC4gU2hvdWxkIG5vdCBjb250YWluIHBhcmFtZXRlcnMgb3IgYW55dGhpbmcgZWxzZSBkYXRhLWRlcGVuZGVudFxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2V4cGxhbmF0aW9uPW51bGxdIC0gbG9uZ2VyIGV4cGxhbmF0aW9uLCBtYXkgaW5jbHVkZSBwYXJhbWV0ZXJzIGFuZCBvdGhlciB1c2VmdWwgZGVidWdnaW5nIGluZm9ybWF0aW9uXG4gICAqIEByZXR1cm4ge0ludGVydmFsfVxuICAgKi9cbiAgc3RhdGljIGludmFsaWQocmVhc29uLCBleHBsYW5hdGlvbiA9IG51bGwpIHtcbiAgICBpZiAoIXJlYXNvbikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKFwibmVlZCB0byBzcGVjaWZ5IGEgcmVhc29uIHRoZSBJbnRlcnZhbCBpcyBpbnZhbGlkXCIpO1xuICAgIH1cblxuICAgIGNvbnN0IGludmFsaWQgPSByZWFzb24gaW5zdGFuY2VvZiBJbnZhbGlkID8gcmVhc29uIDogbmV3IEludmFsaWQocmVhc29uLCBleHBsYW5hdGlvbik7XG5cbiAgICBpZiAoU2V0dGluZ3MudGhyb3dPbkludmFsaWQpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkSW50ZXJ2YWxFcnJvcihpbnZhbGlkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5ldyBJbnRlcnZhbCh7IGludmFsaWQgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhbiBJbnRlcnZhbCBmcm9tIGEgc3RhcnQgRGF0ZVRpbWUgYW5kIGFuIGVuZCBEYXRlVGltZS4gSW5jbHVzaXZlIG9mIHRoZSBzdGFydCBidXQgbm90IHRoZSBlbmQuXG4gICAqIEBwYXJhbSB7RGF0ZVRpbWV8RGF0ZXxPYmplY3R9IHN0YXJ0XG4gICAqIEBwYXJhbSB7RGF0ZVRpbWV8RGF0ZXxPYmplY3R9IGVuZFxuICAgKiBAcmV0dXJuIHtJbnRlcnZhbH1cbiAgICovXG4gIHN0YXRpYyBmcm9tRGF0ZVRpbWVzKHN0YXJ0LCBlbmQpIHtcbiAgICBjb25zdCBidWlsdFN0YXJ0ID0gZnJpZW5kbHlEYXRlVGltZShzdGFydCksXG4gICAgICBidWlsdEVuZCA9IGZyaWVuZGx5RGF0ZVRpbWUoZW5kKTtcblxuICAgIGNvbnN0IHZhbGlkYXRlRXJyb3IgPSB2YWxpZGF0ZVN0YXJ0RW5kKGJ1aWx0U3RhcnQsIGJ1aWx0RW5kKTtcblxuICAgIGlmICh2YWxpZGF0ZUVycm9yID09IG51bGwpIHtcbiAgICAgIHJldHVybiBuZXcgSW50ZXJ2YWwoe1xuICAgICAgICBzdGFydDogYnVpbHRTdGFydCxcbiAgICAgICAgZW5kOiBidWlsdEVuZCxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdmFsaWRhdGVFcnJvcjtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGFuIEludGVydmFsIGZyb20gYSBzdGFydCBEYXRlVGltZSBhbmQgYSBEdXJhdGlvbiB0byBleHRlbmQgdG8uXG4gICAqIEBwYXJhbSB7RGF0ZVRpbWV8RGF0ZXxPYmplY3R9IHN0YXJ0XG4gICAqIEBwYXJhbSB7RHVyYXRpb258T2JqZWN0fG51bWJlcn0gZHVyYXRpb24gLSB0aGUgbGVuZ3RoIG9mIHRoZSBJbnRlcnZhbC5cbiAgICogQHJldHVybiB7SW50ZXJ2YWx9XG4gICAqL1xuICBzdGF0aWMgYWZ0ZXIoc3RhcnQsIGR1cmF0aW9uKSB7XG4gICAgY29uc3QgZHVyID0gRHVyYXRpb24uZnJvbUR1cmF0aW9uTGlrZShkdXJhdGlvbiksXG4gICAgICBkdCA9IGZyaWVuZGx5RGF0ZVRpbWUoc3RhcnQpO1xuICAgIHJldHVybiBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKGR0LCBkdC5wbHVzKGR1cikpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhbiBJbnRlcnZhbCBmcm9tIGFuIGVuZCBEYXRlVGltZSBhbmQgYSBEdXJhdGlvbiB0byBleHRlbmQgYmFja3dhcmRzIHRvLlxuICAgKiBAcGFyYW0ge0RhdGVUaW1lfERhdGV8T2JqZWN0fSBlbmRcbiAgICogQHBhcmFtIHtEdXJhdGlvbnxPYmplY3R8bnVtYmVyfSBkdXJhdGlvbiAtIHRoZSBsZW5ndGggb2YgdGhlIEludGVydmFsLlxuICAgKiBAcmV0dXJuIHtJbnRlcnZhbH1cbiAgICovXG4gIHN0YXRpYyBiZWZvcmUoZW5kLCBkdXJhdGlvbikge1xuICAgIGNvbnN0IGR1ciA9IER1cmF0aW9uLmZyb21EdXJhdGlvbkxpa2UoZHVyYXRpb24pLFxuICAgICAgZHQgPSBmcmllbmRseURhdGVUaW1lKGVuZCk7XG4gICAgcmV0dXJuIEludGVydmFsLmZyb21EYXRlVGltZXMoZHQubWludXMoZHVyKSwgZHQpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhbiBJbnRlcnZhbCBmcm9tIGFuIElTTyA4NjAxIHN0cmluZy5cbiAgICogQWNjZXB0cyBgPHN0YXJ0Pi88ZW5kPmAsIGA8c3RhcnQ+LzxkdXJhdGlvbj5gLCBhbmQgYDxkdXJhdGlvbj4vPGVuZD5gIGZvcm1hdHMuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IC0gdGhlIElTTyBzdHJpbmcgdG8gcGFyc2VcbiAgICogQHBhcmFtIHtPYmplY3R9IFtvcHRzXSAtIG9wdGlvbnMgdG8gcGFzcyB7QGxpbmsgRGF0ZVRpbWUjZnJvbUlTT30gYW5kIG9wdGlvbmFsbHkge0BsaW5rIER1cmF0aW9uI2Zyb21JU099XG4gICAqIEBzZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPXzg2MDEjVGltZV9pbnRlcnZhbHNcbiAgICogQHJldHVybiB7SW50ZXJ2YWx9XG4gICAqL1xuICBzdGF0aWMgZnJvbUlTTyh0ZXh0LCBvcHRzKSB7XG4gICAgY29uc3QgW3MsIGVdID0gKHRleHQgfHwgXCJcIikuc3BsaXQoXCIvXCIsIDIpO1xuICAgIGlmIChzICYmIGUpIHtcbiAgICAgIGxldCBzdGFydCwgc3RhcnRJc1ZhbGlkO1xuICAgICAgdHJ5IHtcbiAgICAgICAgc3RhcnQgPSBEYXRlVGltZS5mcm9tSVNPKHMsIG9wdHMpO1xuICAgICAgICBzdGFydElzVmFsaWQgPSBzdGFydC5pc1ZhbGlkO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBzdGFydElzVmFsaWQgPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgbGV0IGVuZCwgZW5kSXNWYWxpZDtcbiAgICAgIHRyeSB7XG4gICAgICAgIGVuZCA9IERhdGVUaW1lLmZyb21JU08oZSwgb3B0cyk7XG4gICAgICAgIGVuZElzVmFsaWQgPSBlbmQuaXNWYWxpZDtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgZW5kSXNWYWxpZCA9IGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBpZiAoc3RhcnRJc1ZhbGlkICYmIGVuZElzVmFsaWQpIHtcbiAgICAgICAgcmV0dXJuIEludGVydmFsLmZyb21EYXRlVGltZXMoc3RhcnQsIGVuZCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChzdGFydElzVmFsaWQpIHtcbiAgICAgICAgY29uc3QgZHVyID0gRHVyYXRpb24uZnJvbUlTTyhlLCBvcHRzKTtcbiAgICAgICAgaWYgKGR1ci5pc1ZhbGlkKSB7XG4gICAgICAgICAgcmV0dXJuIEludGVydmFsLmFmdGVyKHN0YXJ0LCBkdXIpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGVuZElzVmFsaWQpIHtcbiAgICAgICAgY29uc3QgZHVyID0gRHVyYXRpb24uZnJvbUlTTyhzLCBvcHRzKTtcbiAgICAgICAgaWYgKGR1ci5pc1ZhbGlkKSB7XG4gICAgICAgICAgcmV0dXJuIEludGVydmFsLmJlZm9yZShlbmQsIGR1cik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIEludGVydmFsLmludmFsaWQoXCJ1bnBhcnNhYmxlXCIsIGB0aGUgaW5wdXQgXCIke3RleHR9XCIgY2FuJ3QgYmUgcGFyc2VkIGFzIElTTyA4NjAxYCk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgYW4gb2JqZWN0IGlzIGFuIEludGVydmFsLiBXb3JrcyBhY3Jvc3MgY29udGV4dCBib3VuZGFyaWVzXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBvXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqL1xuICBzdGF0aWMgaXNJbnRlcnZhbChvKSB7XG4gICAgcmV0dXJuIChvICYmIG8uaXNMdXhvbkludGVydmFsKSB8fCBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBzdGFydCBvZiB0aGUgSW50ZXJ2YWxcbiAgICogQHR5cGUge0RhdGVUaW1lfVxuICAgKi9cbiAgZ2V0IHN0YXJ0KCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnMgOiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGVuZCBvZiB0aGUgSW50ZXJ2YWxcbiAgICogQHR5cGUge0RhdGVUaW1lfVxuICAgKi9cbiAgZ2V0IGVuZCgpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5lIDogbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCdzIGVuZCBpcyBhdCBsZWFzdCBpdHMgc3RhcnQsIG1lYW5pbmcgdGhhdCB0aGUgSW50ZXJ2YWwgaXNuJ3QgJ2JhY2t3YXJkcycuXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKi9cbiAgZ2V0IGlzVmFsaWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW52YWxpZFJlYXNvbiA9PT0gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIGVycm9yIGNvZGUgaWYgdGhpcyBJbnRlcnZhbCBpcyBpbnZhbGlkLCBvciBudWxsIGlmIHRoZSBJbnRlcnZhbCBpcyB2YWxpZFxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKi9cbiAgZ2V0IGludmFsaWRSZWFzb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuaW52YWxpZCA/IHRoaXMuaW52YWxpZC5yZWFzb24gOiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gZXhwbGFuYXRpb24gb2Ygd2h5IHRoaXMgSW50ZXJ2YWwgYmVjYW1lIGludmFsaWQsIG9yIG51bGwgaWYgdGhlIEludGVydmFsIGlzIHZhbGlkXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBnZXQgaW52YWxpZEV4cGxhbmF0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLmludmFsaWQgPyB0aGlzLmludmFsaWQuZXhwbGFuYXRpb24gOiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGxlbmd0aCBvZiB0aGUgSW50ZXJ2YWwgaW4gdGhlIHNwZWNpZmllZCB1bml0LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdW5pdCAtIHRoZSB1bml0IChzdWNoIGFzICdob3Vycycgb3IgJ2RheXMnKSB0byByZXR1cm4gdGhlIGxlbmd0aCBpbi5cbiAgICogQHJldHVybiB7bnVtYmVyfVxuICAgKi9cbiAgbGVuZ3RoKHVuaXQgPSBcIm1pbGxpc2Vjb25kc1wiKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudG9EdXJhdGlvbiguLi5bdW5pdF0pLmdldCh1bml0KSA6IE5hTjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBjb3VudCBvZiBtaW51dGVzLCBob3VycywgZGF5cywgbW9udGhzLCBvciB5ZWFycyBpbmNsdWRlZCBpbiB0aGUgSW50ZXJ2YWwsIGV2ZW4gaW4gcGFydC5cbiAgICogVW5saWtlIHtAbGluayBJbnRlcnZhbCNsZW5ndGh9IHRoaXMgY291bnRzIHNlY3Rpb25zIG9mIHRoZSBjYWxlbmRhciwgbm90IHBlcmlvZHMgb2YgdGltZSwgZS5nLiBzcGVjaWZ5aW5nICdkYXknXG4gICAqIGFza3MgJ3doYXQgZGF0ZXMgYXJlIGluY2x1ZGVkIGluIHRoaXMgaW50ZXJ2YWw/Jywgbm90ICdob3cgbWFueSBkYXlzIGxvbmcgaXMgdGhpcyBpbnRlcnZhbD8nXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbdW5pdD0nbWlsbGlzZWNvbmRzJ10gLSB0aGUgdW5pdCBvZiB0aW1lIHRvIGNvdW50LlxuICAgKiBAcmV0dXJuIHtudW1iZXJ9XG4gICAqL1xuICBjb3VudCh1bml0ID0gXCJtaWxsaXNlY29uZHNcIikge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gTmFOO1xuICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5zdGFydC5zdGFydE9mKHVuaXQpLFxuICAgICAgZW5kID0gdGhpcy5lbmQuc3RhcnRPZih1bml0KTtcbiAgICByZXR1cm4gTWF0aC5mbG9vcihlbmQuZGlmZihzdGFydCwgdW5pdCkuZ2V0KHVuaXQpKSArIDE7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB3aGV0aGVyIHRoaXMgSW50ZXJ2YWwncyBzdGFydCBhbmQgZW5kIGFyZSBib3RoIGluIHRoZSBzYW1lIHVuaXQgb2YgdGltZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gdW5pdCAtIHRoZSB1bml0IG9mIHRpbWUgdG8gY2hlY2sgc2FtZW5lc3Mgb25cbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICovXG4gIGhhc1NhbWUodW5pdCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmlzRW1wdHkoKSB8fCB0aGlzLmUubWludXMoMSkuaGFzU2FtZSh0aGlzLnMsIHVuaXQpIDogZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCBoYXMgdGhlIHNhbWUgc3RhcnQgYW5kIGVuZCBEYXRlVGltZXMuXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqL1xuICBpc0VtcHR5KCkge1xuICAgIHJldHVybiB0aGlzLnMudmFsdWVPZigpID09PSB0aGlzLmUudmFsdWVPZigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB3aGV0aGVyIHRoaXMgSW50ZXJ2YWwncyBzdGFydCBpcyBhZnRlciB0aGUgc3BlY2lmaWVkIERhdGVUaW1lLlxuICAgKiBAcGFyYW0ge0RhdGVUaW1lfSBkYXRlVGltZVxuICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgKi9cbiAgaXNBZnRlcihkYXRlVGltZSkge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRoaXMucyA+IGRhdGVUaW1lO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB3aGV0aGVyIHRoaXMgSW50ZXJ2YWwncyBlbmQgaXMgYmVmb3JlIHRoZSBzcGVjaWZpZWQgRGF0ZVRpbWUuXG4gICAqIEBwYXJhbSB7RGF0ZVRpbWV9IGRhdGVUaW1lXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqL1xuICBpc0JlZm9yZShkYXRlVGltZSkge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRoaXMuZSA8PSBkYXRlVGltZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gd2hldGhlciB0aGlzIEludGVydmFsIGNvbnRhaW5zIHRoZSBzcGVjaWZpZWQgRGF0ZVRpbWUuXG4gICAqIEBwYXJhbSB7RGF0ZVRpbWV9IGRhdGVUaW1lXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqL1xuICBjb250YWlucyhkYXRlVGltZSkge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRoaXMucyA8PSBkYXRlVGltZSAmJiB0aGlzLmUgPiBkYXRlVGltZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBcIlNldHNcIiB0aGUgc3RhcnQgYW5kL29yIGVuZCBkYXRlcy4gUmV0dXJucyBhIG5ld2x5LWNvbnN0cnVjdGVkIEludGVydmFsLlxuICAgKiBAcGFyYW0ge09iamVjdH0gdmFsdWVzIC0gdGhlIHZhbHVlcyB0byBzZXRcbiAgICogQHBhcmFtIHtEYXRlVGltZX0gdmFsdWVzLnN0YXJ0IC0gdGhlIHN0YXJ0aW5nIERhdGVUaW1lXG4gICAqIEBwYXJhbSB7RGF0ZVRpbWV9IHZhbHVlcy5lbmQgLSB0aGUgZW5kaW5nIERhdGVUaW1lXG4gICAqIEByZXR1cm4ge0ludGVydmFsfVxuICAgKi9cbiAgc2V0KHsgc3RhcnQsIGVuZCB9ID0ge30pIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7XG4gICAgcmV0dXJuIEludGVydmFsLmZyb21EYXRlVGltZXMoc3RhcnQgfHwgdGhpcy5zLCBlbmQgfHwgdGhpcy5lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGxpdCB0aGlzIEludGVydmFsIGF0IGVhY2ggb2YgdGhlIHNwZWNpZmllZCBEYXRlVGltZXNcbiAgICogQHBhcmFtIHsuLi5EYXRlVGltZX0gZGF0ZVRpbWVzIC0gdGhlIHVuaXQgb2YgdGltZSB0byBjb3VudC5cbiAgICogQHJldHVybiB7QXJyYXl9XG4gICAqL1xuICBzcGxpdEF0KC4uLmRhdGVUaW1lcykge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gW107XG4gICAgY29uc3Qgc29ydGVkID0gZGF0ZVRpbWVzXG4gICAgICAgIC5tYXAoZnJpZW5kbHlEYXRlVGltZSlcbiAgICAgICAgLmZpbHRlcigoZCkgPT4gdGhpcy5jb250YWlucyhkKSlcbiAgICAgICAgLnNvcnQoKSxcbiAgICAgIHJlc3VsdHMgPSBbXTtcbiAgICBsZXQgeyBzIH0gPSB0aGlzLFxuICAgICAgaSA9IDA7XG5cbiAgICB3aGlsZSAocyA8IHRoaXMuZSkge1xuICAgICAgY29uc3QgYWRkZWQgPSBzb3J0ZWRbaV0gfHwgdGhpcy5lLFxuICAgICAgICBuZXh0ID0gK2FkZGVkID4gK3RoaXMuZSA/IHRoaXMuZSA6IGFkZGVkO1xuICAgICAgcmVzdWx0cy5wdXNoKEludGVydmFsLmZyb21EYXRlVGltZXMocywgbmV4dCkpO1xuICAgICAgcyA9IG5leHQ7XG4gICAgICBpICs9IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdHM7XG4gIH1cblxuICAvKipcbiAgICogU3BsaXQgdGhpcyBJbnRlcnZhbCBpbnRvIHNtYWxsZXIgSW50ZXJ2YWxzLCBlYWNoIG9mIHRoZSBzcGVjaWZpZWQgbGVuZ3RoLlxuICAgKiBMZWZ0IG92ZXIgdGltZSBpcyBncm91cGVkIGludG8gYSBzbWFsbGVyIGludGVydmFsXG4gICAqIEBwYXJhbSB7RHVyYXRpb258T2JqZWN0fG51bWJlcn0gZHVyYXRpb24gLSBUaGUgbGVuZ3RoIG9mIGVhY2ggcmVzdWx0aW5nIGludGVydmFsLlxuICAgKiBAcmV0dXJuIHtBcnJheX1cbiAgICovXG4gIHNwbGl0QnkoZHVyYXRpb24pIHtcbiAgICBjb25zdCBkdXIgPSBEdXJhdGlvbi5mcm9tRHVyYXRpb25MaWtlKGR1cmF0aW9uKTtcblxuICAgIGlmICghdGhpcy5pc1ZhbGlkIHx8ICFkdXIuaXNWYWxpZCB8fCBkdXIuYXMoXCJtaWxsaXNlY29uZHNcIikgPT09IDApIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBsZXQgeyBzIH0gPSB0aGlzLFxuICAgICAgaWR4ID0gMSxcbiAgICAgIG5leHQ7XG5cbiAgICBjb25zdCByZXN1bHRzID0gW107XG4gICAgd2hpbGUgKHMgPCB0aGlzLmUpIHtcbiAgICAgIGNvbnN0IGFkZGVkID0gdGhpcy5zdGFydC5wbHVzKGR1ci5tYXBVbml0cygoeCkgPT4geCAqIGlkeCkpO1xuICAgICAgbmV4dCA9ICthZGRlZCA+ICt0aGlzLmUgPyB0aGlzLmUgOiBhZGRlZDtcbiAgICAgIHJlc3VsdHMucHVzaChJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKHMsIG5leHQpKTtcbiAgICAgIHMgPSBuZXh0O1xuICAgICAgaWR4ICs9IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdHM7XG4gIH1cblxuICAvKipcbiAgICogU3BsaXQgdGhpcyBJbnRlcnZhbCBpbnRvIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIHNtYWxsZXIgaW50ZXJ2YWxzLlxuICAgKiBAcGFyYW0ge251bWJlcn0gbnVtYmVyT2ZQYXJ0cyAtIFRoZSBudW1iZXIgb2YgSW50ZXJ2YWxzIHRvIGRpdmlkZSB0aGUgSW50ZXJ2YWwgaW50by5cbiAgICogQHJldHVybiB7QXJyYXl9XG4gICAqL1xuICBkaXZpZGVFcXVhbGx5KG51bWJlck9mUGFydHMpIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIFtdO1xuICAgIHJldHVybiB0aGlzLnNwbGl0QnkodGhpcy5sZW5ndGgoKSAvIG51bWJlck9mUGFydHMpLnNsaWNlKDAsIG51bWJlck9mUGFydHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB3aGV0aGVyIHRoaXMgSW50ZXJ2YWwgb3ZlcmxhcHMgd2l0aCB0aGUgc3BlY2lmaWVkIEludGVydmFsXG4gICAqIEBwYXJhbSB7SW50ZXJ2YWx9IG90aGVyXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqL1xuICBvdmVybGFwcyhvdGhlcikge1xuICAgIHJldHVybiB0aGlzLmUgPiBvdGhlci5zICYmIHRoaXMucyA8IG90aGVyLmU7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCdzIGVuZCBpcyBhZGphY2VudCB0byB0aGUgc3BlY2lmaWVkIEludGVydmFsJ3Mgc3RhcnQuXG4gICAqIEBwYXJhbSB7SW50ZXJ2YWx9IG90aGVyXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqL1xuICBhYnV0c1N0YXJ0KG90aGVyKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gK3RoaXMuZSA9PT0gK290aGVyLnM7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCdzIHN0YXJ0IGlzIGFkamFjZW50IHRvIHRoZSBzcGVjaWZpZWQgSW50ZXJ2YWwncyBlbmQuXG4gICAqIEBwYXJhbSB7SW50ZXJ2YWx9IG90aGVyXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqL1xuICBhYnV0c0VuZChvdGhlcikge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuICtvdGhlci5lID09PSArdGhpcy5zO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB3aGV0aGVyIHRoaXMgSW50ZXJ2YWwgZW5ndWxmcyB0aGUgc3RhcnQgYW5kIGVuZCBvZiB0aGUgc3BlY2lmaWVkIEludGVydmFsLlxuICAgKiBAcGFyYW0ge0ludGVydmFsfSBvdGhlclxuICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgKi9cbiAgZW5ndWxmcyhvdGhlcikge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRoaXMucyA8PSBvdGhlci5zICYmIHRoaXMuZSA+PSBvdGhlci5lO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB3aGV0aGVyIHRoaXMgSW50ZXJ2YWwgaGFzIHRoZSBzYW1lIHN0YXJ0IGFuZCBlbmQgYXMgdGhlIHNwZWNpZmllZCBJbnRlcnZhbC5cbiAgICogQHBhcmFtIHtJbnRlcnZhbH0gb3RoZXJcbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICovXG4gIGVxdWFscyhvdGhlcikge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkIHx8ICFvdGhlci5pc1ZhbGlkKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMucy5lcXVhbHMob3RoZXIucykgJiYgdGhpcy5lLmVxdWFscyhvdGhlci5lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYW4gSW50ZXJ2YWwgcmVwcmVzZW50aW5nIHRoZSBpbnRlcnNlY3Rpb24gb2YgdGhpcyBJbnRlcnZhbCBhbmQgdGhlIHNwZWNpZmllZCBJbnRlcnZhbC5cbiAgICogU3BlY2lmaWNhbGx5LCB0aGUgcmVzdWx0aW5nIEludGVydmFsIGhhcyB0aGUgbWF4aW11bSBzdGFydCB0aW1lIGFuZCB0aGUgbWluaW11bSBlbmQgdGltZSBvZiB0aGUgdHdvIEludGVydmFscy5cbiAgICogUmV0dXJucyBudWxsIGlmIHRoZSBpbnRlcnNlY3Rpb24gaXMgZW1wdHksIG1lYW5pbmcsIHRoZSBpbnRlcnZhbHMgZG9uJ3QgaW50ZXJzZWN0LlxuICAgKiBAcGFyYW0ge0ludGVydmFsfSBvdGhlclxuICAgKiBAcmV0dXJuIHtJbnRlcnZhbH1cbiAgICovXG4gIGludGVyc2VjdGlvbihvdGhlcikge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpcztcbiAgICBjb25zdCBzID0gdGhpcy5zID4gb3RoZXIucyA/IHRoaXMucyA6IG90aGVyLnMsXG4gICAgICBlID0gdGhpcy5lIDwgb3RoZXIuZSA/IHRoaXMuZSA6IG90aGVyLmU7XG5cbiAgICBpZiAocyA+PSBlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIEludGVydmFsLmZyb21EYXRlVGltZXMocywgZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhbiBJbnRlcnZhbCByZXByZXNlbnRpbmcgdGhlIHVuaW9uIG9mIHRoaXMgSW50ZXJ2YWwgYW5kIHRoZSBzcGVjaWZpZWQgSW50ZXJ2YWwuXG4gICAqIFNwZWNpZmljYWxseSwgdGhlIHJlc3VsdGluZyBJbnRlcnZhbCBoYXMgdGhlIG1pbmltdW0gc3RhcnQgdGltZSBhbmQgdGhlIG1heGltdW0gZW5kIHRpbWUgb2YgdGhlIHR3byBJbnRlcnZhbHMuXG4gICAqIEBwYXJhbSB7SW50ZXJ2YWx9IG90aGVyXG4gICAqIEByZXR1cm4ge0ludGVydmFsfVxuICAgKi9cbiAgdW5pb24ob3RoZXIpIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7XG4gICAgY29uc3QgcyA9IHRoaXMucyA8IG90aGVyLnMgPyB0aGlzLnMgOiBvdGhlci5zLFxuICAgICAgZSA9IHRoaXMuZSA+IG90aGVyLmUgPyB0aGlzLmUgOiBvdGhlci5lO1xuICAgIHJldHVybiBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKHMsIGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1lcmdlIGFuIGFycmF5IG9mIEludGVydmFscyBpbnRvIGEgZXF1aXZhbGVudCBtaW5pbWFsIHNldCBvZiBJbnRlcnZhbHMuXG4gICAqIENvbWJpbmVzIG92ZXJsYXBwaW5nIGFuZCBhZGphY2VudCBJbnRlcnZhbHMuXG4gICAqIEBwYXJhbSB7QXJyYXl9IGludGVydmFsc1xuICAgKiBAcmV0dXJuIHtBcnJheX1cbiAgICovXG4gIHN0YXRpYyBtZXJnZShpbnRlcnZhbHMpIHtcbiAgICBjb25zdCBbZm91bmQsIGZpbmFsXSA9IGludGVydmFsc1xuICAgICAgLnNvcnQoKGEsIGIpID0+IGEucyAtIGIucylcbiAgICAgIC5yZWR1Y2UoXG4gICAgICAgIChbc29mYXIsIGN1cnJlbnRdLCBpdGVtKSA9PiB7XG4gICAgICAgICAgaWYgKCFjdXJyZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gW3NvZmFyLCBpdGVtXTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGN1cnJlbnQub3ZlcmxhcHMoaXRlbSkgfHwgY3VycmVudC5hYnV0c1N0YXJ0KGl0ZW0pKSB7XG4gICAgICAgICAgICByZXR1cm4gW3NvZmFyLCBjdXJyZW50LnVuaW9uKGl0ZW0pXTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIFtzb2Zhci5jb25jYXQoW2N1cnJlbnRdKSwgaXRlbV07XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBbW10sIG51bGxdXG4gICAgICApO1xuICAgIGlmIChmaW5hbCkge1xuICAgICAgZm91bmQucHVzaChmaW5hbCk7XG4gICAgfVxuICAgIHJldHVybiBmb3VuZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYW4gYXJyYXkgb2YgSW50ZXJ2YWxzIHJlcHJlc2VudGluZyB0aGUgc3BhbnMgb2YgdGltZSB0aGF0IG9ubHkgYXBwZWFyIGluIG9uZSBvZiB0aGUgc3BlY2lmaWVkIEludGVydmFscy5cbiAgICogQHBhcmFtIHtBcnJheX0gaW50ZXJ2YWxzXG4gICAqIEByZXR1cm4ge0FycmF5fVxuICAgKi9cbiAgc3RhdGljIHhvcihpbnRlcnZhbHMpIHtcbiAgICBsZXQgc3RhcnQgPSBudWxsLFxuICAgICAgY3VycmVudENvdW50ID0gMDtcbiAgICBjb25zdCByZXN1bHRzID0gW10sXG4gICAgICBlbmRzID0gaW50ZXJ2YWxzLm1hcCgoaSkgPT4gW1xuICAgICAgICB7IHRpbWU6IGkucywgdHlwZTogXCJzXCIgfSxcbiAgICAgICAgeyB0aW1lOiBpLmUsIHR5cGU6IFwiZVwiIH0sXG4gICAgICBdKSxcbiAgICAgIGZsYXR0ZW5lZCA9IEFycmF5LnByb3RvdHlwZS5jb25jYXQoLi4uZW5kcyksXG4gICAgICBhcnIgPSBmbGF0dGVuZWQuc29ydCgoYSwgYikgPT4gYS50aW1lIC0gYi50aW1lKTtcblxuICAgIGZvciAoY29uc3QgaSBvZiBhcnIpIHtcbiAgICAgIGN1cnJlbnRDb3VudCArPSBpLnR5cGUgPT09IFwic1wiID8gMSA6IC0xO1xuXG4gICAgICBpZiAoY3VycmVudENvdW50ID09PSAxKSB7XG4gICAgICAgIHN0YXJ0ID0gaS50aW1lO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHN0YXJ0ICYmICtzdGFydCAhPT0gK2kudGltZSkge1xuICAgICAgICAgIHJlc3VsdHMucHVzaChJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKHN0YXJ0LCBpLnRpbWUpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN0YXJ0ID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gSW50ZXJ2YWwubWVyZ2UocmVzdWx0cyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGFuIEludGVydmFsIHJlcHJlc2VudGluZyB0aGUgc3BhbiBvZiB0aW1lIGluIHRoaXMgSW50ZXJ2YWwgdGhhdCBkb2Vzbid0IG92ZXJsYXAgd2l0aCBhbnkgb2YgdGhlIHNwZWNpZmllZCBJbnRlcnZhbHMuXG4gICAqIEBwYXJhbSB7Li4uSW50ZXJ2YWx9IGludGVydmFsc1xuICAgKiBAcmV0dXJuIHtBcnJheX1cbiAgICovXG4gIGRpZmZlcmVuY2UoLi4uaW50ZXJ2YWxzKSB7XG4gICAgcmV0dXJuIEludGVydmFsLnhvcihbdGhpc10uY29uY2F0KGludGVydmFscykpXG4gICAgICAubWFwKChpKSA9PiB0aGlzLmludGVyc2VjdGlvbihpKSlcbiAgICAgIC5maWx0ZXIoKGkpID0+IGkgJiYgIWkuaXNFbXB0eSgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgSW50ZXJ2YWwgYXBwcm9wcmlhdGUgZm9yIGRlYnVnZ2luZy5cbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgdG9TdHJpbmcoKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBJTlZBTElEO1xuICAgIHJldHVybiBgWyR7dGhpcy5zLnRvSVNPKCl9IFx1MjAxMyAke3RoaXMuZS50b0lTTygpfSlgO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gSVNPIDg2MDEtY29tcGxpYW50IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIEludGVydmFsLlxuICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT184NjAxI1RpbWVfaW50ZXJ2YWxzXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gVGhlIHNhbWUgb3B0aW9ucyBhcyB7QGxpbmsgRGF0ZVRpbWUjdG9JU099XG4gICAqIEByZXR1cm4ge3N0cmluZ31cbiAgICovXG4gIHRvSVNPKG9wdHMpIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIElOVkFMSUQ7XG4gICAgcmV0dXJuIGAke3RoaXMucy50b0lTTyhvcHRzKX0vJHt0aGlzLmUudG9JU08ob3B0cyl9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIElTTyA4NjAxLWNvbXBsaWFudCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgZGF0ZSBvZiB0aGlzIEludGVydmFsLlxuICAgKiBUaGUgdGltZSBjb21wb25lbnRzIGFyZSBpZ25vcmVkLlxuICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT184NjAxI1RpbWVfaW50ZXJ2YWxzXG4gICAqIEByZXR1cm4ge3N0cmluZ31cbiAgICovXG4gIHRvSVNPRGF0ZSgpIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIElOVkFMSUQ7XG4gICAgcmV0dXJuIGAke3RoaXMucy50b0lTT0RhdGUoKX0vJHt0aGlzLmUudG9JU09EYXRlKCl9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIElTTyA4NjAxLWNvbXBsaWFudCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGltZSBvZiB0aGlzIEludGVydmFsLlxuICAgKiBUaGUgZGF0ZSBjb21wb25lbnRzIGFyZSBpZ25vcmVkLlxuICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT184NjAxI1RpbWVfaW50ZXJ2YWxzXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gVGhlIHNhbWUgb3B0aW9ucyBhcyB7QGxpbmsgRGF0ZVRpbWUjdG9JU099XG4gICAqIEByZXR1cm4ge3N0cmluZ31cbiAgICovXG4gIHRvSVNPVGltZShvcHRzKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBJTlZBTElEO1xuICAgIHJldHVybiBgJHt0aGlzLnMudG9JU09UaW1lKG9wdHMpfS8ke3RoaXMuZS50b0lTT1RpbWUob3B0cyl9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgSW50ZXJ2YWwgZm9ybWF0dGVkIGFjY29yZGluZyB0byB0aGUgc3BlY2lmaWVkIGZvcm1hdCBzdHJpbmcuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBkYXRlRm9ybWF0IC0gdGhlIGZvcm1hdCBzdHJpbmcuIFRoaXMgc3RyaW5nIGZvcm1hdHMgdGhlIHN0YXJ0IGFuZCBlbmQgdGltZS4gU2VlIHtAbGluayBEYXRlVGltZSN0b0Zvcm1hdH0gZm9yIGRldGFpbHMuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9uc1xuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuc2VwYXJhdG9yID0gICcgXHUyMDEzICddIC0gYSBzZXBhcmF0b3IgdG8gcGxhY2UgYmV0d2VlbiB0aGUgc3RhcnQgYW5kIGVuZCByZXByZXNlbnRhdGlvbnNcbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgdG9Gb3JtYXQoZGF0ZUZvcm1hdCwgeyBzZXBhcmF0b3IgPSBcIiBcdTIwMTMgXCIgfSA9IHt9KSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBJTlZBTElEO1xuICAgIHJldHVybiBgJHt0aGlzLnMudG9Gb3JtYXQoZGF0ZUZvcm1hdCl9JHtzZXBhcmF0b3J9JHt0aGlzLmUudG9Gb3JtYXQoZGF0ZUZvcm1hdCl9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSBEdXJhdGlvbiByZXByZXNlbnRpbmcgdGhlIHRpbWUgc3Bhbm5lZCBieSB0aGlzIGludGVydmFsLlxuICAgKiBAcGFyYW0ge3N0cmluZ3xzdHJpbmdbXX0gW3VuaXQ9WydtaWxsaXNlY29uZHMnXV0gLSB0aGUgdW5pdCBvciB1bml0cyAoc3VjaCBhcyAnaG91cnMnIG9yICdkYXlzJykgdG8gaW5jbHVkZSBpbiB0aGUgZHVyYXRpb24uXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucyB0aGF0IGFmZmVjdCB0aGUgY3JlYXRpb24gb2YgdGhlIER1cmF0aW9uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5jb252ZXJzaW9uQWNjdXJhY3k9J2Nhc3VhbCddIC0gdGhlIGNvbnZlcnNpb24gc3lzdGVtIHRvIHVzZVxuICAgKiBAZXhhbXBsZSBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKGR0MSwgZHQyKS50b0R1cmF0aW9uKCkudG9PYmplY3QoKSAvLz0+IHsgbWlsbGlzZWNvbmRzOiA4ODQ4OTI1NyB9XG4gICAqIEBleGFtcGxlIEludGVydmFsLmZyb21EYXRlVGltZXMoZHQxLCBkdDIpLnRvRHVyYXRpb24oJ2RheXMnKS50b09iamVjdCgpIC8vPT4geyBkYXlzOiAxLjAyNDE4MTIxNTI3Nzc3NzggfVxuICAgKiBAZXhhbXBsZSBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKGR0MSwgZHQyKS50b0R1cmF0aW9uKFsnaG91cnMnLCAnbWludXRlcyddKS50b09iamVjdCgpIC8vPT4geyBob3VyczogMjQsIG1pbnV0ZXM6IDM0LjgyMDk1IH1cbiAgICogQGV4YW1wbGUgSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhkdDEsIGR0MikudG9EdXJhdGlvbihbJ2hvdXJzJywgJ21pbnV0ZXMnLCAnc2Vjb25kcyddKS50b09iamVjdCgpIC8vPT4geyBob3VyczogMjQsIG1pbnV0ZXM6IDM0LCBzZWNvbmRzOiA0OS4yNTcgfVxuICAgKiBAZXhhbXBsZSBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKGR0MSwgZHQyKS50b0R1cmF0aW9uKCdzZWNvbmRzJykudG9PYmplY3QoKSAvLz0+IHsgc2Vjb25kczogODg0ODkuMjU3IH1cbiAgICogQHJldHVybiB7RHVyYXRpb259XG4gICAqL1xuICB0b0R1cmF0aW9uKHVuaXQsIG9wdHMpIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkge1xuICAgICAgcmV0dXJuIER1cmF0aW9uLmludmFsaWQodGhpcy5pbnZhbGlkUmVhc29uKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZS5kaWZmKHRoaXMucywgdW5pdCwgb3B0cyk7XG4gIH1cblxuICAvKipcbiAgICogUnVuIG1hcEZuIG9uIHRoZSBpbnRlcnZhbCBzdGFydCBhbmQgZW5kLCByZXR1cm5pbmcgYSBuZXcgSW50ZXJ2YWwgZnJvbSB0aGUgcmVzdWx0aW5nIERhdGVUaW1lc1xuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBtYXBGblxuICAgKiBAcmV0dXJuIHtJbnRlcnZhbH1cbiAgICogQGV4YW1wbGUgSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhkdDEsIGR0MikubWFwRW5kcG9pbnRzKGVuZHBvaW50ID0+IGVuZHBvaW50LnRvVVRDKCkpXG4gICAqIEBleGFtcGxlIEludGVydmFsLmZyb21EYXRlVGltZXMoZHQxLCBkdDIpLm1hcEVuZHBvaW50cyhlbmRwb2ludCA9PiBlbmRwb2ludC5wbHVzKHsgaG91cnM6IDIgfSkpXG4gICAqL1xuICBtYXBFbmRwb2ludHMobWFwRm4pIHtcbiAgICByZXR1cm4gSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhtYXBGbih0aGlzLnMpLCBtYXBGbih0aGlzLmUpKTtcbiAgfVxufVxuIiwgImltcG9ydCBEYXRlVGltZSBmcm9tIFwiLi9kYXRldGltZS5qc1wiO1xuaW1wb3J0IFNldHRpbmdzIGZyb20gXCIuL3NldHRpbmdzLmpzXCI7XG5pbXBvcnQgTG9jYWxlIGZyb20gXCIuL2ltcGwvbG9jYWxlLmpzXCI7XG5pbXBvcnQgSUFOQVpvbmUgZnJvbSBcIi4vem9uZXMvSUFOQVpvbmUuanNcIjtcbmltcG9ydCB7IG5vcm1hbGl6ZVpvbmUgfSBmcm9tIFwiLi9pbXBsL3pvbmVVdGlsLmpzXCI7XG5cbmltcG9ydCB7IGhhc1JlbGF0aXZlIH0gZnJvbSBcIi4vaW1wbC91dGlsLmpzXCI7XG5cbi8qKlxuICogVGhlIEluZm8gY2xhc3MgY29udGFpbnMgc3RhdGljIG1ldGhvZHMgZm9yIHJldHJpZXZpbmcgZ2VuZXJhbCB0aW1lIGFuZCBkYXRlIHJlbGF0ZWQgZGF0YS4gRm9yIGV4YW1wbGUsIGl0IGhhcyBtZXRob2RzIGZvciBmaW5kaW5nIG91dCBpZiBhIHRpbWUgem9uZSBoYXMgYSBEU1QsIGZvciBsaXN0aW5nIHRoZSBtb250aHMgaW4gYW55IHN1cHBvcnRlZCBsb2NhbGUsIGFuZCBmb3IgZGlzY292ZXJpbmcgd2hpY2ggb2YgTHV4b24gZmVhdHVyZXMgYXJlIGF2YWlsYWJsZSBpbiB0aGUgY3VycmVudCBlbnZpcm9ubWVudC5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSW5mbyB7XG4gIC8qKlxuICAgKiBSZXR1cm4gd2hldGhlciB0aGUgc3BlY2lmaWVkIHpvbmUgY29udGFpbnMgYSBEU1QuXG4gICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFt6b25lPSdsb2NhbCddIC0gWm9uZSB0byBjaGVjay4gRGVmYXVsdHMgdG8gdGhlIGVudmlyb25tZW50J3MgbG9jYWwgem9uZS5cbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICovXG4gIHN0YXRpYyBoYXNEU1Qoem9uZSA9IFNldHRpbmdzLmRlZmF1bHRab25lKSB7XG4gICAgY29uc3QgcHJvdG8gPSBEYXRlVGltZS5ub3coKS5zZXRab25lKHpvbmUpLnNldCh7IG1vbnRoOiAxMiB9KTtcblxuICAgIHJldHVybiAhem9uZS5pc1VuaXZlcnNhbCAmJiBwcm90by5vZmZzZXQgIT09IHByb3RvLnNldCh7IG1vbnRoOiA2IH0pLm9mZnNldDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gd2hldGhlciB0aGUgc3BlY2lmaWVkIHpvbmUgaXMgYSB2YWxpZCBJQU5BIHNwZWNpZmllci5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHpvbmUgLSBab25lIHRvIGNoZWNrXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqL1xuICBzdGF0aWMgaXNWYWxpZElBTkFab25lKHpvbmUpIHtcbiAgICByZXR1cm4gSUFOQVpvbmUuaXNWYWxpZFpvbmUoem9uZSk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgdGhlIGlucHV0IGludG8gYSB7QGxpbmsgWm9uZX0gaW5zdGFuY2UuXG4gICAqXG4gICAqICogSWYgYGlucHV0YCBpcyBhbHJlYWR5IGEgWm9uZSBpbnN0YW5jZSwgaXQgaXMgcmV0dXJuZWQgdW5jaGFuZ2VkLlxuICAgKiAqIElmIGBpbnB1dGAgaXMgYSBzdHJpbmcgY29udGFpbmluZyBhIHZhbGlkIHRpbWUgem9uZSBuYW1lLCBhIFpvbmUgaW5zdGFuY2VcbiAgICogICB3aXRoIHRoYXQgbmFtZSBpcyByZXR1cm5lZC5cbiAgICogKiBJZiBgaW5wdXRgIGlzIGEgc3RyaW5nIHRoYXQgZG9lc24ndCByZWZlciB0byBhIGtub3duIHRpbWUgem9uZSwgYSBab25lXG4gICAqICAgaW5zdGFuY2Ugd2l0aCB7QGxpbmsgWm9uZSNpc1ZhbGlkfSA9PSBmYWxzZSBpcyByZXR1cm5lZC5cbiAgICogKiBJZiBgaW5wdXQgaXMgYSBudW1iZXIsIGEgWm9uZSBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgZml4ZWQgb2Zmc2V0XG4gICAqICAgaW4gbWludXRlcyBpcyByZXR1cm5lZC5cbiAgICogKiBJZiBgaW5wdXRgIGlzIGBudWxsYCBvciBgdW5kZWZpbmVkYCwgdGhlIGRlZmF1bHQgem9uZSBpcyByZXR1cm5lZC5cbiAgICogQHBhcmFtIHtzdHJpbmd8Wm9uZXxudW1iZXJ9IFtpbnB1dF0gLSB0aGUgdmFsdWUgdG8gYmUgY29udmVydGVkXG4gICAqIEByZXR1cm4ge1pvbmV9XG4gICAqL1xuICBzdGF0aWMgbm9ybWFsaXplWm9uZShpbnB1dCkge1xuICAgIHJldHVybiBub3JtYWxpemVab25lKGlucHV0LCBTZXR0aW5ncy5kZWZhdWx0Wm9uZSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGFuIGFycmF5IG9mIHN0YW5kYWxvbmUgbW9udGggbmFtZXMuXG4gICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvRGF0ZVRpbWVGb3JtYXRcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtsZW5ndGg9J2xvbmcnXSAtIHRoZSBsZW5ndGggb2YgdGhlIG1vbnRoIHJlcHJlc2VudGF0aW9uLCBzdWNoIGFzIFwibnVtZXJpY1wiLCBcIjItZGlnaXRcIiwgXCJuYXJyb3dcIiwgXCJzaG9ydFwiLCBcImxvbmdcIlxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnNcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZV0gLSB0aGUgbG9jYWxlIGNvZGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLm51bWJlcmluZ1N5c3RlbT1udWxsXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NPYmo9bnVsbF0gLSBhbiBleGlzdGluZyBsb2NhbGUgb2JqZWN0IHRvIHVzZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMub3V0cHV0Q2FsZW5kYXI9J2dyZWdvcnknXSAtIHRoZSBjYWxlbmRhclxuICAgKiBAZXhhbXBsZSBJbmZvLm1vbnRocygpWzBdIC8vPT4gJ0phbnVhcnknXG4gICAqIEBleGFtcGxlIEluZm8ubW9udGhzKCdzaG9ydCcpWzBdIC8vPT4gJ0phbidcbiAgICogQGV4YW1wbGUgSW5mby5tb250aHMoJ251bWVyaWMnKVswXSAvLz0+ICcxJ1xuICAgKiBAZXhhbXBsZSBJbmZvLm1vbnRocygnc2hvcnQnLCB7IGxvY2FsZTogJ2ZyLUNBJyB9IClbMF0gLy89PiAnamFudi4nXG4gICAqIEBleGFtcGxlIEluZm8ubW9udGhzKCdudW1lcmljJywgeyBsb2NhbGU6ICdhcicgfSlbMF0gLy89PiAnXHUwNjYxJ1xuICAgKiBAZXhhbXBsZSBJbmZvLm1vbnRocygnbG9uZycsIHsgb3V0cHV0Q2FsZW5kYXI6ICdpc2xhbWljJyB9KVswXSAvLz0+ICdSYWJpXHUwMkJCIEknXG4gICAqIEByZXR1cm4ge0FycmF5fVxuICAgKi9cbiAgc3RhdGljIG1vbnRocyhcbiAgICBsZW5ndGggPSBcImxvbmdcIixcbiAgICB7IGxvY2FsZSA9IG51bGwsIG51bWJlcmluZ1N5c3RlbSA9IG51bGwsIGxvY09iaiA9IG51bGwsIG91dHB1dENhbGVuZGFyID0gXCJncmVnb3J5XCIgfSA9IHt9XG4gICkge1xuICAgIHJldHVybiAobG9jT2JqIHx8IExvY2FsZS5jcmVhdGUobG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG91dHB1dENhbGVuZGFyKSkubW9udGhzKGxlbmd0aCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGFuIGFycmF5IG9mIGZvcm1hdCBtb250aCBuYW1lcy5cbiAgICogRm9ybWF0IG1vbnRocyBkaWZmZXIgZnJvbSBzdGFuZGFsb25lIG1vbnRocyBpbiB0aGF0IHRoZXkncmUgbWVhbnQgdG8gYXBwZWFyIG5leHQgdG8gdGhlIGRheSBvZiB0aGUgbW9udGguIEluIHNvbWUgbGFuZ3VhZ2VzLCB0aGF0XG4gICAqIGNoYW5nZXMgdGhlIHN0cmluZy5cbiAgICogU2VlIHtAbGluayBJbmZvI21vbnRoc31cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtsZW5ndGg9J2xvbmcnXSAtIHRoZSBsZW5ndGggb2YgdGhlIG1vbnRoIHJlcHJlc2VudGF0aW9uLCBzdWNoIGFzIFwibnVtZXJpY1wiLCBcIjItZGlnaXRcIiwgXCJuYXJyb3dcIiwgXCJzaG9ydFwiLCBcImxvbmdcIlxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnNcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZV0gLSB0aGUgbG9jYWxlIGNvZGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLm51bWJlcmluZ1N5c3RlbT1udWxsXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NPYmo9bnVsbF0gLSBhbiBleGlzdGluZyBsb2NhbGUgb2JqZWN0IHRvIHVzZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMub3V0cHV0Q2FsZW5kYXI9J2dyZWdvcnknXSAtIHRoZSBjYWxlbmRhclxuICAgKiBAcmV0dXJuIHtBcnJheX1cbiAgICovXG4gIHN0YXRpYyBtb250aHNGb3JtYXQoXG4gICAgbGVuZ3RoID0gXCJsb25nXCIsXG4gICAgeyBsb2NhbGUgPSBudWxsLCBudW1iZXJpbmdTeXN0ZW0gPSBudWxsLCBsb2NPYmogPSBudWxsLCBvdXRwdXRDYWxlbmRhciA9IFwiZ3JlZ29yeVwiIH0gPSB7fVxuICApIHtcbiAgICByZXR1cm4gKGxvY09iaiB8fCBMb2NhbGUuY3JlYXRlKGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtLCBvdXRwdXRDYWxlbmRhcikpLm1vbnRocyhsZW5ndGgsIHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhbiBhcnJheSBvZiBzdGFuZGFsb25lIHdlZWsgbmFtZXMuXG4gICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvRGF0ZVRpbWVGb3JtYXRcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtsZW5ndGg9J2xvbmcnXSAtIHRoZSBsZW5ndGggb2YgdGhlIHdlZWtkYXkgcmVwcmVzZW50YXRpb24sIHN1Y2ggYXMgXCJuYXJyb3dcIiwgXCJzaG9ydFwiLCBcImxvbmdcIi5cbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGVdIC0gdGhlIGxvY2FsZSBjb2RlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5udW1iZXJpbmdTeXN0ZW09bnVsbF0gLSB0aGUgbnVtYmVyaW5nIHN5c3RlbVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jT2JqPW51bGxdIC0gYW4gZXhpc3RpbmcgbG9jYWxlIG9iamVjdCB0byB1c2VcbiAgICogQGV4YW1wbGUgSW5mby53ZWVrZGF5cygpWzBdIC8vPT4gJ01vbmRheSdcbiAgICogQGV4YW1wbGUgSW5mby53ZWVrZGF5cygnc2hvcnQnKVswXSAvLz0+ICdNb24nXG4gICAqIEBleGFtcGxlIEluZm8ud2Vla2RheXMoJ3Nob3J0JywgeyBsb2NhbGU6ICdmci1DQScgfSlbMF0gLy89PiAnbHVuLidcbiAgICogQGV4YW1wbGUgSW5mby53ZWVrZGF5cygnc2hvcnQnLCB7IGxvY2FsZTogJ2FyJyB9KVswXSAvLz0+ICdcdTA2MjdcdTA2NDRcdTA2MjdcdTA2MkJcdTA2NDZcdTA2NEFcdTA2NDYnXG4gICAqIEByZXR1cm4ge0FycmF5fVxuICAgKi9cbiAgc3RhdGljIHdlZWtkYXlzKGxlbmd0aCA9IFwibG9uZ1wiLCB7IGxvY2FsZSA9IG51bGwsIG51bWJlcmluZ1N5c3RlbSA9IG51bGwsIGxvY09iaiA9IG51bGwgfSA9IHt9KSB7XG4gICAgcmV0dXJuIChsb2NPYmogfHwgTG9jYWxlLmNyZWF0ZShsb2NhbGUsIG51bWJlcmluZ1N5c3RlbSwgbnVsbCkpLndlZWtkYXlzKGxlbmd0aCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGFuIGFycmF5IG9mIGZvcm1hdCB3ZWVrIG5hbWVzLlxuICAgKiBGb3JtYXQgd2Vla2RheXMgZGlmZmVyIGZyb20gc3RhbmRhbG9uZSB3ZWVrZGF5cyBpbiB0aGF0IHRoZXkncmUgbWVhbnQgdG8gYXBwZWFyIG5leHQgdG8gbW9yZSBkYXRlIGluZm9ybWF0aW9uLiBJbiBzb21lIGxhbmd1YWdlcywgdGhhdFxuICAgKiBjaGFuZ2VzIHRoZSBzdHJpbmcuXG4gICAqIFNlZSB7QGxpbmsgSW5mbyN3ZWVrZGF5c31cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtsZW5ndGg9J2xvbmcnXSAtIHRoZSBsZW5ndGggb2YgdGhlIG1vbnRoIHJlcHJlc2VudGF0aW9uLCBzdWNoIGFzIFwibmFycm93XCIsIFwic2hvcnRcIiwgXCJsb25nXCIuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9uc1xuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlPW51bGxdIC0gdGhlIGxvY2FsZSBjb2RlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5udW1iZXJpbmdTeXN0ZW09bnVsbF0gLSB0aGUgbnVtYmVyaW5nIHN5c3RlbVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jT2JqPW51bGxdIC0gYW4gZXhpc3RpbmcgbG9jYWxlIG9iamVjdCB0byB1c2VcbiAgICogQHJldHVybiB7QXJyYXl9XG4gICAqL1xuICBzdGF0aWMgd2Vla2RheXNGb3JtYXQoXG4gICAgbGVuZ3RoID0gXCJsb25nXCIsXG4gICAgeyBsb2NhbGUgPSBudWxsLCBudW1iZXJpbmdTeXN0ZW0gPSBudWxsLCBsb2NPYmogPSBudWxsIH0gPSB7fVxuICApIHtcbiAgICByZXR1cm4gKGxvY09iaiB8fCBMb2NhbGUuY3JlYXRlKGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtLCBudWxsKSkud2Vla2RheXMobGVuZ3RoLCB0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYW4gYXJyYXkgb2YgbWVyaWRpZW1zLlxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnNcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZV0gLSB0aGUgbG9jYWxlIGNvZGVcbiAgICogQGV4YW1wbGUgSW5mby5tZXJpZGllbXMoKSAvLz0+IFsgJ0FNJywgJ1BNJyBdXG4gICAqIEBleGFtcGxlIEluZm8ubWVyaWRpZW1zKHsgbG9jYWxlOiAnbXknIH0pIC8vPT4gWyAnXHUxMDE0XHUxMDM2XHUxMDE0XHUxMDAwXHUxMDNBJywgJ1x1MTAwQVx1MTAxNFx1MTAzMScgXVxuICAgKiBAcmV0dXJuIHtBcnJheX1cbiAgICovXG4gIHN0YXRpYyBtZXJpZGllbXMoeyBsb2NhbGUgPSBudWxsIH0gPSB7fSkge1xuICAgIHJldHVybiBMb2NhbGUuY3JlYXRlKGxvY2FsZSkubWVyaWRpZW1zKCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGFuIGFycmF5IG9mIGVyYXMsIHN1Y2ggYXMgWydCQycsICdBRCddLiBUaGUgbG9jYWxlIGNhbiBiZSBzcGVjaWZpZWQsIGJ1dCB0aGUgY2FsZW5kYXIgc3lzdGVtIGlzIGFsd2F5cyBHcmVnb3JpYW4uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbbGVuZ3RoPSdzaG9ydCddIC0gdGhlIGxlbmd0aCBvZiB0aGUgZXJhIHJlcHJlc2VudGF0aW9uLCBzdWNoIGFzIFwic2hvcnRcIiBvciBcImxvbmdcIi5cbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGVdIC0gdGhlIGxvY2FsZSBjb2RlXG4gICAqIEBleGFtcGxlIEluZm8uZXJhcygpIC8vPT4gWyAnQkMnLCAnQUQnIF1cbiAgICogQGV4YW1wbGUgSW5mby5lcmFzKCdsb25nJykgLy89PiBbICdCZWZvcmUgQ2hyaXN0JywgJ0Fubm8gRG9taW5pJyBdXG4gICAqIEBleGFtcGxlIEluZm8uZXJhcygnbG9uZycsIHsgbG9jYWxlOiAnZnInIH0pIC8vPT4gWyAnYXZhbnQgSlx1MDBFOXN1cy1DaHJpc3QnLCAnYXByXHUwMEU4cyBKXHUwMEU5c3VzLUNocmlzdCcgXVxuICAgKiBAcmV0dXJuIHtBcnJheX1cbiAgICovXG4gIHN0YXRpYyBlcmFzKGxlbmd0aCA9IFwic2hvcnRcIiwgeyBsb2NhbGUgPSBudWxsIH0gPSB7fSkge1xuICAgIHJldHVybiBMb2NhbGUuY3JlYXRlKGxvY2FsZSwgbnVsbCwgXCJncmVnb3J5XCIpLmVyYXMobGVuZ3RoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIHNldCBvZiBhdmFpbGFibGUgZmVhdHVyZXMgaW4gdGhpcyBlbnZpcm9ubWVudC5cbiAgICogU29tZSBmZWF0dXJlcyBvZiBMdXhvbiBhcmUgbm90IGF2YWlsYWJsZSBpbiBhbGwgZW52aXJvbm1lbnRzLiBGb3IgZXhhbXBsZSwgb24gb2xkZXIgYnJvd3NlcnMsIHJlbGF0aXZlIHRpbWUgZm9ybWF0dGluZyBzdXBwb3J0IGlzIG5vdCBhdmFpbGFibGUuIFVzZSB0aGlzIGZ1bmN0aW9uIHRvIGZpZ3VyZSBvdXQgaWYgdGhhdCdzIHRoZSBjYXNlLlxuICAgKiBLZXlzOlxuICAgKiAqIGByZWxhdGl2ZWA6IHdoZXRoZXIgdGhpcyBlbnZpcm9ubWVudCBzdXBwb3J0cyByZWxhdGl2ZSB0aW1lIGZvcm1hdHRpbmdcbiAgICogQGV4YW1wbGUgSW5mby5mZWF0dXJlcygpIC8vPT4geyByZWxhdGl2ZTogZmFsc2UgfVxuICAgKiBAcmV0dXJuIHtPYmplY3R9XG4gICAqL1xuICBzdGF0aWMgZmVhdHVyZXMoKSB7XG4gICAgcmV0dXJuIHsgcmVsYXRpdmU6IGhhc1JlbGF0aXZlKCkgfTtcbiAgfVxufVxuIiwgImltcG9ydCBEdXJhdGlvbiBmcm9tIFwiLi4vZHVyYXRpb24uanNcIjtcblxuZnVuY3Rpb24gZGF5RGlmZihlYXJsaWVyLCBsYXRlcikge1xuICBjb25zdCB1dGNEYXlTdGFydCA9IChkdCkgPT4gZHQudG9VVEMoMCwgeyBrZWVwTG9jYWxUaW1lOiB0cnVlIH0pLnN0YXJ0T2YoXCJkYXlcIikudmFsdWVPZigpLFxuICAgIG1zID0gdXRjRGF5U3RhcnQobGF0ZXIpIC0gdXRjRGF5U3RhcnQoZWFybGllcik7XG4gIHJldHVybiBNYXRoLmZsb29yKER1cmF0aW9uLmZyb21NaWxsaXMobXMpLmFzKFwiZGF5c1wiKSk7XG59XG5cbmZ1bmN0aW9uIGhpZ2hPcmRlckRpZmZzKGN1cnNvciwgbGF0ZXIsIHVuaXRzKSB7XG4gIGNvbnN0IGRpZmZlcnMgPSBbXG4gICAgW1wieWVhcnNcIiwgKGEsIGIpID0+IGIueWVhciAtIGEueWVhcl0sXG4gICAgW1wicXVhcnRlcnNcIiwgKGEsIGIpID0+IGIucXVhcnRlciAtIGEucXVhcnRlcl0sXG4gICAgW1wibW9udGhzXCIsIChhLCBiKSA9PiBiLm1vbnRoIC0gYS5tb250aCArIChiLnllYXIgLSBhLnllYXIpICogMTJdLFxuICAgIFtcbiAgICAgIFwid2Vla3NcIixcbiAgICAgIChhLCBiKSA9PiB7XG4gICAgICAgIGNvbnN0IGRheXMgPSBkYXlEaWZmKGEsIGIpO1xuICAgICAgICByZXR1cm4gKGRheXMgLSAoZGF5cyAlIDcpKSAvIDc7XG4gICAgICB9LFxuICAgIF0sXG4gICAgW1wiZGF5c1wiLCBkYXlEaWZmXSxcbiAgXTtcblxuICBjb25zdCByZXN1bHRzID0ge307XG4gIGxldCBsb3dlc3RPcmRlciwgaGlnaFdhdGVyO1xuXG4gIGZvciAoY29uc3QgW3VuaXQsIGRpZmZlcl0gb2YgZGlmZmVycykge1xuICAgIGlmICh1bml0cy5pbmRleE9mKHVuaXQpID49IDApIHtcbiAgICAgIGxvd2VzdE9yZGVyID0gdW5pdDtcblxuICAgICAgbGV0IGRlbHRhID0gZGlmZmVyKGN1cnNvciwgbGF0ZXIpO1xuICAgICAgaGlnaFdhdGVyID0gY3Vyc29yLnBsdXMoeyBbdW5pdF06IGRlbHRhIH0pO1xuXG4gICAgICBpZiAoaGlnaFdhdGVyID4gbGF0ZXIpIHtcbiAgICAgICAgY3Vyc29yID0gY3Vyc29yLnBsdXMoeyBbdW5pdF06IGRlbHRhIC0gMSB9KTtcbiAgICAgICAgZGVsdGEgLT0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGN1cnNvciA9IGhpZ2hXYXRlcjtcbiAgICAgIH1cblxuICAgICAgcmVzdWx0c1t1bml0XSA9IGRlbHRhO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBbY3Vyc29yLCByZXN1bHRzLCBoaWdoV2F0ZXIsIGxvd2VzdE9yZGVyXTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKGVhcmxpZXIsIGxhdGVyLCB1bml0cywgb3B0cykge1xuICBsZXQgW2N1cnNvciwgcmVzdWx0cywgaGlnaFdhdGVyLCBsb3dlc3RPcmRlcl0gPSBoaWdoT3JkZXJEaWZmcyhlYXJsaWVyLCBsYXRlciwgdW5pdHMpO1xuXG4gIGNvbnN0IHJlbWFpbmluZ01pbGxpcyA9IGxhdGVyIC0gY3Vyc29yO1xuXG4gIGNvbnN0IGxvd2VyT3JkZXJVbml0cyA9IHVuaXRzLmZpbHRlcihcbiAgICAodSkgPT4gW1wiaG91cnNcIiwgXCJtaW51dGVzXCIsIFwic2Vjb25kc1wiLCBcIm1pbGxpc2Vjb25kc1wiXS5pbmRleE9mKHUpID49IDBcbiAgKTtcblxuICBpZiAobG93ZXJPcmRlclVuaXRzLmxlbmd0aCA9PT0gMCkge1xuICAgIGlmIChoaWdoV2F0ZXIgPCBsYXRlcikge1xuICAgICAgaGlnaFdhdGVyID0gY3Vyc29yLnBsdXMoeyBbbG93ZXN0T3JkZXJdOiAxIH0pO1xuICAgIH1cblxuICAgIGlmIChoaWdoV2F0ZXIgIT09IGN1cnNvcikge1xuICAgICAgcmVzdWx0c1tsb3dlc3RPcmRlcl0gPSAocmVzdWx0c1tsb3dlc3RPcmRlcl0gfHwgMCkgKyByZW1haW5pbmdNaWxsaXMgLyAoaGlnaFdhdGVyIC0gY3Vyc29yKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBkdXJhdGlvbiA9IER1cmF0aW9uLmZyb21PYmplY3QocmVzdWx0cywgb3B0cyk7XG5cbiAgaWYgKGxvd2VyT3JkZXJVbml0cy5sZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIER1cmF0aW9uLmZyb21NaWxsaXMocmVtYWluaW5nTWlsbGlzLCBvcHRzKVxuICAgICAgLnNoaWZ0VG8oLi4ubG93ZXJPcmRlclVuaXRzKVxuICAgICAgLnBsdXMoZHVyYXRpb24pO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBkdXJhdGlvbjtcbiAgfVxufVxuIiwgImNvbnN0IG51bWJlcmluZ1N5c3RlbXMgPSB7XG4gIGFyYWI6IFwiW1xcdTA2NjAtXFx1MDY2OV1cIixcbiAgYXJhYmV4dDogXCJbXFx1MDZGMC1cXHUwNkY5XVwiLFxuICBiYWxpOiBcIltcXHUxQjUwLVxcdTFCNTldXCIsXG4gIGJlbmc6IFwiW1xcdTA5RTYtXFx1MDlFRl1cIixcbiAgZGV2YTogXCJbXFx1MDk2Ni1cXHUwOTZGXVwiLFxuICBmdWxsd2lkZTogXCJbXFx1RkYxMC1cXHVGRjE5XVwiLFxuICBndWpyOiBcIltcXHUwQUU2LVxcdTBBRUZdXCIsXG4gIGhhbmlkZWM6IFwiW1x1MzAwN3xcdTRFMDB8XHU0RThDfFx1NEUwOXxcdTU2REJ8XHU0RTk0fFx1NTE2RHxcdTRFMDN8XHU1MTZCfFx1NEU1RF1cIixcbiAga2htcjogXCJbXFx1MTdFMC1cXHUxN0U5XVwiLFxuICBrbmRhOiBcIltcXHUwQ0U2LVxcdTBDRUZdXCIsXG4gIGxhb286IFwiW1xcdTBFRDAtXFx1MEVEOV1cIixcbiAgbGltYjogXCJbXFx1MTk0Ni1cXHUxOTRGXVwiLFxuICBtbHltOiBcIltcXHUwRDY2LVxcdTBENkZdXCIsXG4gIG1vbmc6IFwiW1xcdTE4MTAtXFx1MTgxOV1cIixcbiAgbXltcjogXCJbXFx1MTA0MC1cXHUxMDQ5XVwiLFxuICBvcnlhOiBcIltcXHUwQjY2LVxcdTBCNkZdXCIsXG4gIHRhbWxkZWM6IFwiW1xcdTBCRTYtXFx1MEJFRl1cIixcbiAgdGVsdTogXCJbXFx1MEM2Ni1cXHUwQzZGXVwiLFxuICB0aGFpOiBcIltcXHUwRTUwLVxcdTBFNTldXCIsXG4gIHRpYnQ6IFwiW1xcdTBGMjAtXFx1MEYyOV1cIixcbiAgbGF0bjogXCJcXFxcZFwiLFxufTtcblxuY29uc3QgbnVtYmVyaW5nU3lzdGVtc1VURjE2ID0ge1xuICBhcmFiOiBbMTYzMiwgMTY0MV0sXG4gIGFyYWJleHQ6IFsxNzc2LCAxNzg1XSxcbiAgYmFsaTogWzY5OTIsIDcwMDFdLFxuICBiZW5nOiBbMjUzNCwgMjU0M10sXG4gIGRldmE6IFsyNDA2LCAyNDE1XSxcbiAgZnVsbHdpZGU6IFs2NTI5NiwgNjUzMDNdLFxuICBndWpyOiBbMjc5MCwgMjc5OV0sXG4gIGtobXI6IFs2MTEyLCA2MTIxXSxcbiAga25kYTogWzMzMDIsIDMzMTFdLFxuICBsYW9vOiBbMzc5MiwgMzgwMV0sXG4gIGxpbWI6IFs2NDcwLCA2NDc5XSxcbiAgbWx5bTogWzM0MzAsIDM0MzldLFxuICBtb25nOiBbNjE2MCwgNjE2OV0sXG4gIG15bXI6IFs0MTYwLCA0MTY5XSxcbiAgb3J5YTogWzI5MTgsIDI5MjddLFxuICB0YW1sZGVjOiBbMzA0NiwgMzA1NV0sXG4gIHRlbHU6IFszMTc0LCAzMTgzXSxcbiAgdGhhaTogWzM2NjQsIDM2NzNdLFxuICB0aWJ0OiBbMzg3MiwgMzg4MV0sXG59O1xuXG5jb25zdCBoYW5pZGVjQ2hhcnMgPSBudW1iZXJpbmdTeXN0ZW1zLmhhbmlkZWMucmVwbGFjZSgvW1xcW3xcXF1dL2csIFwiXCIpLnNwbGl0KFwiXCIpO1xuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VEaWdpdHMoc3RyKSB7XG4gIGxldCB2YWx1ZSA9IHBhcnNlSW50KHN0ciwgMTApO1xuICBpZiAoaXNOYU4odmFsdWUpKSB7XG4gICAgdmFsdWUgPSBcIlwiO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBjb2RlID0gc3RyLmNoYXJDb2RlQXQoaSk7XG5cbiAgICAgIGlmIChzdHJbaV0uc2VhcmNoKG51bWJlcmluZ1N5c3RlbXMuaGFuaWRlYykgIT09IC0xKSB7XG4gICAgICAgIHZhbHVlICs9IGhhbmlkZWNDaGFycy5pbmRleE9mKHN0cltpXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBudW1iZXJpbmdTeXN0ZW1zVVRGMTYpIHtcbiAgICAgICAgICBjb25zdCBbbWluLCBtYXhdID0gbnVtYmVyaW5nU3lzdGVtc1VURjE2W2tleV07XG4gICAgICAgICAgaWYgKGNvZGUgPj0gbWluICYmIGNvZGUgPD0gbWF4KSB7XG4gICAgICAgICAgICB2YWx1ZSArPSBjb2RlIC0gbWluO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcGFyc2VJbnQodmFsdWUsIDEwKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpZ2l0UmVnZXgoeyBudW1iZXJpbmdTeXN0ZW0gfSwgYXBwZW5kID0gXCJcIikge1xuICByZXR1cm4gbmV3IFJlZ0V4cChgJHtudW1iZXJpbmdTeXN0ZW1zW251bWJlcmluZ1N5c3RlbSB8fCBcImxhdG5cIl19JHthcHBlbmR9YCk7XG59XG4iLCAiaW1wb3J0IHsgcGFyc2VNaWxsaXMsIGlzVW5kZWZpbmVkLCB1bnRydW5jYXRlWWVhciwgc2lnbmVkT2Zmc2V0LCBoYXNPd25Qcm9wZXJ0eSB9IGZyb20gXCIuL3V0aWwuanNcIjtcbmltcG9ydCBGb3JtYXR0ZXIgZnJvbSBcIi4vZm9ybWF0dGVyLmpzXCI7XG5pbXBvcnQgRml4ZWRPZmZzZXRab25lIGZyb20gXCIuLi96b25lcy9maXhlZE9mZnNldFpvbmUuanNcIjtcbmltcG9ydCBJQU5BWm9uZSBmcm9tIFwiLi4vem9uZXMvSUFOQVpvbmUuanNcIjtcbmltcG9ydCBEYXRlVGltZSBmcm9tIFwiLi4vZGF0ZXRpbWUuanNcIjtcbmltcG9ydCB7IGRpZ2l0UmVnZXgsIHBhcnNlRGlnaXRzIH0gZnJvbSBcIi4vZGlnaXRzLmpzXCI7XG5pbXBvcnQgeyBDb25mbGljdGluZ1NwZWNpZmljYXRpb25FcnJvciB9IGZyb20gXCIuLi9lcnJvcnMuanNcIjtcblxuY29uc3QgTUlTU0lOR19GVFAgPSBcIm1pc3NpbmcgSW50bC5EYXRlVGltZUZvcm1hdC5mb3JtYXRUb1BhcnRzIHN1cHBvcnRcIjtcblxuZnVuY3Rpb24gaW50VW5pdChyZWdleCwgcG9zdCA9IChpKSA9PiBpKSB7XG4gIHJldHVybiB7IHJlZ2V4LCBkZXNlcjogKFtzXSkgPT4gcG9zdChwYXJzZURpZ2l0cyhzKSkgfTtcbn1cblxuY29uc3QgTkJTUCA9IFN0cmluZy5mcm9tQ2hhckNvZGUoMTYwKTtcbmNvbnN0IHNwYWNlT3JOQlNQID0gYFsgJHtOQlNQfV1gO1xuY29uc3Qgc3BhY2VPck5CU1BSZWdFeHAgPSBuZXcgUmVnRXhwKHNwYWNlT3JOQlNQLCBcImdcIik7XG5cbmZ1bmN0aW9uIGZpeExpc3RSZWdleChzKSB7XG4gIC8vIG1ha2UgZG90cyBvcHRpb25hbCBhbmQgYWxzbyBtYWtlIHRoZW0gbGl0ZXJhbFxuICAvLyBtYWtlIHNwYWNlIGFuZCBub24gYnJlYWthYmxlIHNwYWNlIGNoYXJhY3RlcnMgaW50ZXJjaGFuZ2VhYmxlXG4gIHJldHVybiBzLnJlcGxhY2UoL1xcLi9nLCBcIlxcXFwuP1wiKS5yZXBsYWNlKHNwYWNlT3JOQlNQUmVnRXhwLCBzcGFjZU9yTkJTUCk7XG59XG5cbmZ1bmN0aW9uIHN0cmlwSW5zZW5zaXRpdml0aWVzKHMpIHtcbiAgcmV0dXJuIHNcbiAgICAucmVwbGFjZSgvXFwuL2csIFwiXCIpIC8vIGlnbm9yZSBkb3RzIHRoYXQgd2VyZSBtYWRlIG9wdGlvbmFsXG4gICAgLnJlcGxhY2Uoc3BhY2VPck5CU1BSZWdFeHAsIFwiIFwiKSAvLyBpbnRlcmNoYW5nZSBzcGFjZSBhbmQgbmJzcFxuICAgIC50b0xvd2VyQ2FzZSgpO1xufVxuXG5mdW5jdGlvbiBvbmVPZihzdHJpbmdzLCBzdGFydEluZGV4KSB7XG4gIGlmIChzdHJpbmdzID09PSBudWxsKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHJlZ2V4OiBSZWdFeHAoc3RyaW5ncy5tYXAoZml4TGlzdFJlZ2V4KS5qb2luKFwifFwiKSksXG4gICAgICBkZXNlcjogKFtzXSkgPT5cbiAgICAgICAgc3RyaW5ncy5maW5kSW5kZXgoKGkpID0+IHN0cmlwSW5zZW5zaXRpdml0aWVzKHMpID09PSBzdHJpcEluc2Vuc2l0aXZpdGllcyhpKSkgKyBzdGFydEluZGV4LFxuICAgIH07XG4gIH1cbn1cblxuZnVuY3Rpb24gb2Zmc2V0KHJlZ2V4LCBncm91cHMpIHtcbiAgcmV0dXJuIHsgcmVnZXgsIGRlc2VyOiAoWywgaCwgbV0pID0+IHNpZ25lZE9mZnNldChoLCBtKSwgZ3JvdXBzIH07XG59XG5cbmZ1bmN0aW9uIHNpbXBsZShyZWdleCkge1xuICByZXR1cm4geyByZWdleCwgZGVzZXI6IChbc10pID0+IHMgfTtcbn1cblxuZnVuY3Rpb24gZXNjYXBlVG9rZW4odmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlLnJlcGxhY2UoL1tcXC1cXFtcXF17fSgpKis/LixcXFxcXFxeJHwjXFxzXS9nLCBcIlxcXFwkJlwiKTtcbn1cblxuZnVuY3Rpb24gdW5pdEZvclRva2VuKHRva2VuLCBsb2MpIHtcbiAgY29uc3Qgb25lID0gZGlnaXRSZWdleChsb2MpLFxuICAgIHR3byA9IGRpZ2l0UmVnZXgobG9jLCBcInsyfVwiKSxcbiAgICB0aHJlZSA9IGRpZ2l0UmVnZXgobG9jLCBcInszfVwiKSxcbiAgICBmb3VyID0gZGlnaXRSZWdleChsb2MsIFwiezR9XCIpLFxuICAgIHNpeCA9IGRpZ2l0UmVnZXgobG9jLCBcIns2fVwiKSxcbiAgICBvbmVPclR3byA9IGRpZ2l0UmVnZXgobG9jLCBcInsxLDJ9XCIpLFxuICAgIG9uZVRvVGhyZWUgPSBkaWdpdFJlZ2V4KGxvYywgXCJ7MSwzfVwiKSxcbiAgICBvbmVUb1NpeCA9IGRpZ2l0UmVnZXgobG9jLCBcInsxLDZ9XCIpLFxuICAgIG9uZVRvTmluZSA9IGRpZ2l0UmVnZXgobG9jLCBcInsxLDl9XCIpLFxuICAgIHR3b1RvRm91ciA9IGRpZ2l0UmVnZXgobG9jLCBcInsyLDR9XCIpLFxuICAgIGZvdXJUb1NpeCA9IGRpZ2l0UmVnZXgobG9jLCBcIns0LDZ9XCIpLFxuICAgIGxpdGVyYWwgPSAodCkgPT4gKHsgcmVnZXg6IFJlZ0V4cChlc2NhcGVUb2tlbih0LnZhbCkpLCBkZXNlcjogKFtzXSkgPT4gcywgbGl0ZXJhbDogdHJ1ZSB9KSxcbiAgICB1bml0YXRlID0gKHQpID0+IHtcbiAgICAgIGlmICh0b2tlbi5saXRlcmFsKSB7XG4gICAgICAgIHJldHVybiBsaXRlcmFsKHQpO1xuICAgICAgfVxuICAgICAgc3dpdGNoICh0LnZhbCkge1xuICAgICAgICAvLyBlcmFcbiAgICAgICAgY2FzZSBcIkdcIjpcbiAgICAgICAgICByZXR1cm4gb25lT2YobG9jLmVyYXMoXCJzaG9ydFwiLCBmYWxzZSksIDApO1xuICAgICAgICBjYXNlIFwiR0dcIjpcbiAgICAgICAgICByZXR1cm4gb25lT2YobG9jLmVyYXMoXCJsb25nXCIsIGZhbHNlKSwgMCk7XG4gICAgICAgIC8vIHllYXJzXG4gICAgICAgIGNhc2UgXCJ5XCI6XG4gICAgICAgICAgcmV0dXJuIGludFVuaXQob25lVG9TaXgpO1xuICAgICAgICBjYXNlIFwieXlcIjpcbiAgICAgICAgICByZXR1cm4gaW50VW5pdCh0d29Ub0ZvdXIsIHVudHJ1bmNhdGVZZWFyKTtcbiAgICAgICAgY2FzZSBcInl5eXlcIjpcbiAgICAgICAgICByZXR1cm4gaW50VW5pdChmb3VyKTtcbiAgICAgICAgY2FzZSBcInl5eXl5XCI6XG4gICAgICAgICAgcmV0dXJuIGludFVuaXQoZm91clRvU2l4KTtcbiAgICAgICAgY2FzZSBcInl5eXl5eVwiOlxuICAgICAgICAgIHJldHVybiBpbnRVbml0KHNpeCk7XG4gICAgICAgIC8vIG1vbnRoc1xuICAgICAgICBjYXNlIFwiTVwiOlxuICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZU9yVHdvKTtcbiAgICAgICAgY2FzZSBcIk1NXCI6XG4gICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvKTtcbiAgICAgICAgY2FzZSBcIk1NTVwiOlxuICAgICAgICAgIHJldHVybiBvbmVPZihsb2MubW9udGhzKFwic2hvcnRcIiwgdHJ1ZSwgZmFsc2UpLCAxKTtcbiAgICAgICAgY2FzZSBcIk1NTU1cIjpcbiAgICAgICAgICByZXR1cm4gb25lT2YobG9jLm1vbnRocyhcImxvbmdcIiwgdHJ1ZSwgZmFsc2UpLCAxKTtcbiAgICAgICAgY2FzZSBcIkxcIjpcbiAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVPclR3byk7XG4gICAgICAgIGNhc2UgXCJMTFwiOlxuICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3byk7XG4gICAgICAgIGNhc2UgXCJMTExcIjpcbiAgICAgICAgICByZXR1cm4gb25lT2YobG9jLm1vbnRocyhcInNob3J0XCIsIGZhbHNlLCBmYWxzZSksIDEpO1xuICAgICAgICBjYXNlIFwiTExMTFwiOlxuICAgICAgICAgIHJldHVybiBvbmVPZihsb2MubW9udGhzKFwibG9uZ1wiLCBmYWxzZSwgZmFsc2UpLCAxKTtcbiAgICAgICAgLy8gZGF0ZXNcbiAgICAgICAgY2FzZSBcImRcIjpcbiAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVPclR3byk7XG4gICAgICAgIGNhc2UgXCJkZFwiOlxuICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3byk7XG4gICAgICAgIC8vIG9yZGluYWxzXG4gICAgICAgIGNhc2UgXCJvXCI6XG4gICAgICAgICAgcmV0dXJuIGludFVuaXQob25lVG9UaHJlZSk7XG4gICAgICAgIGNhc2UgXCJvb29cIjpcbiAgICAgICAgICByZXR1cm4gaW50VW5pdCh0aHJlZSk7XG4gICAgICAgIC8vIHRpbWVcbiAgICAgICAgY2FzZSBcIkhIXCI6XG4gICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvKTtcbiAgICAgICAgY2FzZSBcIkhcIjpcbiAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVPclR3byk7XG4gICAgICAgIGNhc2UgXCJoaFwiOlxuICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3byk7XG4gICAgICAgIGNhc2UgXCJoXCI6XG4gICAgICAgICAgcmV0dXJuIGludFVuaXQob25lT3JUd28pO1xuICAgICAgICBjYXNlIFwibW1cIjpcbiAgICAgICAgICByZXR1cm4gaW50VW5pdCh0d28pO1xuICAgICAgICBjYXNlIFwibVwiOlxuICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZU9yVHdvKTtcbiAgICAgICAgY2FzZSBcInFcIjpcbiAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVPclR3byk7XG4gICAgICAgIGNhc2UgXCJxcVwiOlxuICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3byk7XG4gICAgICAgIGNhc2UgXCJzXCI6XG4gICAgICAgICAgcmV0dXJuIGludFVuaXQob25lT3JUd28pO1xuICAgICAgICBjYXNlIFwic3NcIjpcbiAgICAgICAgICByZXR1cm4gaW50VW5pdCh0d28pO1xuICAgICAgICBjYXNlIFwiU1wiOlxuICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZVRvVGhyZWUpO1xuICAgICAgICBjYXNlIFwiU1NTXCI6XG4gICAgICAgICAgcmV0dXJuIGludFVuaXQodGhyZWUpO1xuICAgICAgICBjYXNlIFwidVwiOlxuICAgICAgICAgIHJldHVybiBzaW1wbGUob25lVG9OaW5lKTtcbiAgICAgICAgY2FzZSBcInV1XCI6XG4gICAgICAgICAgcmV0dXJuIHNpbXBsZShvbmVPclR3byk7XG4gICAgICAgIGNhc2UgXCJ1dXVcIjpcbiAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmUpO1xuICAgICAgICAvLyBtZXJpZGllbVxuICAgICAgICBjYXNlIFwiYVwiOlxuICAgICAgICAgIHJldHVybiBvbmVPZihsb2MubWVyaWRpZW1zKCksIDApO1xuICAgICAgICAvLyB3ZWVrWWVhciAoaylcbiAgICAgICAgY2FzZSBcImtra2tcIjpcbiAgICAgICAgICByZXR1cm4gaW50VW5pdChmb3VyKTtcbiAgICAgICAgY2FzZSBcImtrXCI6XG4gICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvVG9Gb3VyLCB1bnRydW5jYXRlWWVhcik7XG4gICAgICAgIC8vIHdlZWtOdW1iZXIgKFcpXG4gICAgICAgIGNhc2UgXCJXXCI6XG4gICAgICAgICAgcmV0dXJuIGludFVuaXQob25lT3JUd28pO1xuICAgICAgICBjYXNlIFwiV1dcIjpcbiAgICAgICAgICByZXR1cm4gaW50VW5pdCh0d28pO1xuICAgICAgICAvLyB3ZWVrZGF5c1xuICAgICAgICBjYXNlIFwiRVwiOlxuICAgICAgICBjYXNlIFwiY1wiOlxuICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZSk7XG4gICAgICAgIGNhc2UgXCJFRUVcIjpcbiAgICAgICAgICByZXR1cm4gb25lT2YobG9jLndlZWtkYXlzKFwic2hvcnRcIiwgZmFsc2UsIGZhbHNlKSwgMSk7XG4gICAgICAgIGNhc2UgXCJFRUVFXCI6XG4gICAgICAgICAgcmV0dXJuIG9uZU9mKGxvYy53ZWVrZGF5cyhcImxvbmdcIiwgZmFsc2UsIGZhbHNlKSwgMSk7XG4gICAgICAgIGNhc2UgXCJjY2NcIjpcbiAgICAgICAgICByZXR1cm4gb25lT2YobG9jLndlZWtkYXlzKFwic2hvcnRcIiwgdHJ1ZSwgZmFsc2UpLCAxKTtcbiAgICAgICAgY2FzZSBcImNjY2NcIjpcbiAgICAgICAgICByZXR1cm4gb25lT2YobG9jLndlZWtkYXlzKFwibG9uZ1wiLCB0cnVlLCBmYWxzZSksIDEpO1xuICAgICAgICAvLyBvZmZzZXQvem9uZVxuICAgICAgICBjYXNlIFwiWlwiOlxuICAgICAgICBjYXNlIFwiWlpcIjpcbiAgICAgICAgICByZXR1cm4gb2Zmc2V0KG5ldyBSZWdFeHAoYChbKy1dJHtvbmVPclR3by5zb3VyY2V9KSg/OjooJHt0d28uc291cmNlfSkpP2ApLCAyKTtcbiAgICAgICAgY2FzZSBcIlpaWlwiOlxuICAgICAgICAgIHJldHVybiBvZmZzZXQobmV3IFJlZ0V4cChgKFsrLV0ke29uZU9yVHdvLnNvdXJjZX0pKCR7dHdvLnNvdXJjZX0pP2ApLCAyKTtcbiAgICAgICAgLy8gd2UgZG9uJ3Qgc3VwcG9ydCBaWlpaIChQU1QpIG9yIFpaWlpaIChQYWNpZmljIFN0YW5kYXJkIFRpbWUpIGluIHBhcnNpbmdcbiAgICAgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCBoYXZlIGFueSB3YXkgdG8gZmlndXJlIG91dCB3aGF0IHRoZXkgYXJlXG4gICAgICAgIGNhc2UgXCJ6XCI6XG4gICAgICAgICAgcmV0dXJuIHNpbXBsZSgvW2Etel8rLS9dezEsMjU2fT8vaSk7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIGxpdGVyYWwodCk7XG4gICAgICB9XG4gICAgfTtcblxuICBjb25zdCB1bml0ID0gdW5pdGF0ZSh0b2tlbikgfHwge1xuICAgIGludmFsaWRSZWFzb246IE1JU1NJTkdfRlRQLFxuICB9O1xuXG4gIHVuaXQudG9rZW4gPSB0b2tlbjtcblxuICByZXR1cm4gdW5pdDtcbn1cblxuY29uc3QgcGFydFR5cGVTdHlsZVRvVG9rZW5WYWwgPSB7XG4gIHllYXI6IHtcbiAgICBcIjItZGlnaXRcIjogXCJ5eVwiLFxuICAgIG51bWVyaWM6IFwieXl5eXlcIixcbiAgfSxcbiAgbW9udGg6IHtcbiAgICBudW1lcmljOiBcIk1cIixcbiAgICBcIjItZGlnaXRcIjogXCJNTVwiLFxuICAgIHNob3J0OiBcIk1NTVwiLFxuICAgIGxvbmc6IFwiTU1NTVwiLFxuICB9LFxuICBkYXk6IHtcbiAgICBudW1lcmljOiBcImRcIixcbiAgICBcIjItZGlnaXRcIjogXCJkZFwiLFxuICB9LFxuICB3ZWVrZGF5OiB7XG4gICAgc2hvcnQ6IFwiRUVFXCIsXG4gICAgbG9uZzogXCJFRUVFXCIsXG4gIH0sXG4gIGRheXBlcmlvZDogXCJhXCIsXG4gIGRheVBlcmlvZDogXCJhXCIsXG4gIGhvdXI6IHtcbiAgICBudW1lcmljOiBcImhcIixcbiAgICBcIjItZGlnaXRcIjogXCJoaFwiLFxuICB9LFxuICBtaW51dGU6IHtcbiAgICBudW1lcmljOiBcIm1cIixcbiAgICBcIjItZGlnaXRcIjogXCJtbVwiLFxuICB9LFxuICBzZWNvbmQ6IHtcbiAgICBudW1lcmljOiBcInNcIixcbiAgICBcIjItZGlnaXRcIjogXCJzc1wiLFxuICB9LFxufTtcblxuZnVuY3Rpb24gdG9rZW5Gb3JQYXJ0KHBhcnQsIGxvY2FsZSwgZm9ybWF0T3B0cykge1xuICBjb25zdCB7IHR5cGUsIHZhbHVlIH0gPSBwYXJ0O1xuXG4gIGlmICh0eXBlID09PSBcImxpdGVyYWxcIikge1xuICAgIHJldHVybiB7XG4gICAgICBsaXRlcmFsOiB0cnVlLFxuICAgICAgdmFsOiB2YWx1ZSxcbiAgICB9O1xuICB9XG5cbiAgY29uc3Qgc3R5bGUgPSBmb3JtYXRPcHRzW3R5cGVdO1xuXG4gIGxldCB2YWwgPSBwYXJ0VHlwZVN0eWxlVG9Ub2tlblZhbFt0eXBlXTtcbiAgaWYgKHR5cGVvZiB2YWwgPT09IFwib2JqZWN0XCIpIHtcbiAgICB2YWwgPSB2YWxbc3R5bGVdO1xuICB9XG5cbiAgaWYgKHZhbCkge1xuICAgIHJldHVybiB7XG4gICAgICBsaXRlcmFsOiBmYWxzZSxcbiAgICAgIHZhbCxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gYnVpbGRSZWdleCh1bml0cykge1xuICBjb25zdCByZSA9IHVuaXRzLm1hcCgodSkgPT4gdS5yZWdleCkucmVkdWNlKChmLCByKSA9PiBgJHtmfSgke3Iuc291cmNlfSlgLCBcIlwiKTtcbiAgcmV0dXJuIFtgXiR7cmV9JGAsIHVuaXRzXTtcbn1cblxuZnVuY3Rpb24gbWF0Y2goaW5wdXQsIHJlZ2V4LCBoYW5kbGVycykge1xuICBjb25zdCBtYXRjaGVzID0gaW5wdXQubWF0Y2gocmVnZXgpO1xuXG4gIGlmIChtYXRjaGVzKSB7XG4gICAgY29uc3QgYWxsID0ge307XG4gICAgbGV0IG1hdGNoSW5kZXggPSAxO1xuICAgIGZvciAoY29uc3QgaSBpbiBoYW5kbGVycykge1xuICAgICAgaWYgKGhhc093blByb3BlcnR5KGhhbmRsZXJzLCBpKSkge1xuICAgICAgICBjb25zdCBoID0gaGFuZGxlcnNbaV0sXG4gICAgICAgICAgZ3JvdXBzID0gaC5ncm91cHMgPyBoLmdyb3VwcyArIDEgOiAxO1xuICAgICAgICBpZiAoIWgubGl0ZXJhbCAmJiBoLnRva2VuKSB7XG4gICAgICAgICAgYWxsW2gudG9rZW4udmFsWzBdXSA9IGguZGVzZXIobWF0Y2hlcy5zbGljZShtYXRjaEluZGV4LCBtYXRjaEluZGV4ICsgZ3JvdXBzKSk7XG4gICAgICAgIH1cbiAgICAgICAgbWF0Y2hJbmRleCArPSBncm91cHM7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBbbWF0Y2hlcywgYWxsXTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gW21hdGNoZXMsIHt9XTtcbiAgfVxufVxuXG5mdW5jdGlvbiBkYXRlVGltZUZyb21NYXRjaGVzKG1hdGNoZXMpIHtcbiAgY29uc3QgdG9GaWVsZCA9ICh0b2tlbikgPT4ge1xuICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgIGNhc2UgXCJTXCI6XG4gICAgICAgIHJldHVybiBcIm1pbGxpc2Vjb25kXCI7XG4gICAgICBjYXNlIFwic1wiOlxuICAgICAgICByZXR1cm4gXCJzZWNvbmRcIjtcbiAgICAgIGNhc2UgXCJtXCI6XG4gICAgICAgIHJldHVybiBcIm1pbnV0ZVwiO1xuICAgICAgY2FzZSBcImhcIjpcbiAgICAgIGNhc2UgXCJIXCI6XG4gICAgICAgIHJldHVybiBcImhvdXJcIjtcbiAgICAgIGNhc2UgXCJkXCI6XG4gICAgICAgIHJldHVybiBcImRheVwiO1xuICAgICAgY2FzZSBcIm9cIjpcbiAgICAgICAgcmV0dXJuIFwib3JkaW5hbFwiO1xuICAgICAgY2FzZSBcIkxcIjpcbiAgICAgIGNhc2UgXCJNXCI6XG4gICAgICAgIHJldHVybiBcIm1vbnRoXCI7XG4gICAgICBjYXNlIFwieVwiOlxuICAgICAgICByZXR1cm4gXCJ5ZWFyXCI7XG4gICAgICBjYXNlIFwiRVwiOlxuICAgICAgY2FzZSBcImNcIjpcbiAgICAgICAgcmV0dXJuIFwid2Vla2RheVwiO1xuICAgICAgY2FzZSBcIldcIjpcbiAgICAgICAgcmV0dXJuIFwid2Vla051bWJlclwiO1xuICAgICAgY2FzZSBcImtcIjpcbiAgICAgICAgcmV0dXJuIFwid2Vla1llYXJcIjtcbiAgICAgIGNhc2UgXCJxXCI6XG4gICAgICAgIHJldHVybiBcInF1YXJ0ZXJcIjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfTtcblxuICBsZXQgem9uZSA9IG51bGw7XG4gIGxldCBzcGVjaWZpY09mZnNldDtcbiAgaWYgKCFpc1VuZGVmaW5lZChtYXRjaGVzLnopKSB7XG4gICAgem9uZSA9IElBTkFab25lLmNyZWF0ZShtYXRjaGVzLnopO1xuICB9XG5cbiAgaWYgKCFpc1VuZGVmaW5lZChtYXRjaGVzLlopKSB7XG4gICAgaWYgKCF6b25lKSB7XG4gICAgICB6b25lID0gbmV3IEZpeGVkT2Zmc2V0Wm9uZShtYXRjaGVzLlopO1xuICAgIH1cbiAgICBzcGVjaWZpY09mZnNldCA9IG1hdGNoZXMuWjtcbiAgfVxuXG4gIGlmICghaXNVbmRlZmluZWQobWF0Y2hlcy5xKSkge1xuICAgIG1hdGNoZXMuTSA9IChtYXRjaGVzLnEgLSAxKSAqIDMgKyAxO1xuICB9XG5cbiAgaWYgKCFpc1VuZGVmaW5lZChtYXRjaGVzLmgpKSB7XG4gICAgaWYgKG1hdGNoZXMuaCA8IDEyICYmIG1hdGNoZXMuYSA9PT0gMSkge1xuICAgICAgbWF0Y2hlcy5oICs9IDEyO1xuICAgIH0gZWxzZSBpZiAobWF0Y2hlcy5oID09PSAxMiAmJiBtYXRjaGVzLmEgPT09IDApIHtcbiAgICAgIG1hdGNoZXMuaCA9IDA7XG4gICAgfVxuICB9XG5cbiAgaWYgKG1hdGNoZXMuRyA9PT0gMCAmJiBtYXRjaGVzLnkpIHtcbiAgICBtYXRjaGVzLnkgPSAtbWF0Y2hlcy55O1xuICB9XG5cbiAgaWYgKCFpc1VuZGVmaW5lZChtYXRjaGVzLnUpKSB7XG4gICAgbWF0Y2hlcy5TID0gcGFyc2VNaWxsaXMobWF0Y2hlcy51KTtcbiAgfVxuXG4gIGNvbnN0IHZhbHMgPSBPYmplY3Qua2V5cyhtYXRjaGVzKS5yZWR1Y2UoKHIsIGspID0+IHtcbiAgICBjb25zdCBmID0gdG9GaWVsZChrKTtcbiAgICBpZiAoZikge1xuICAgICAgcltmXSA9IG1hdGNoZXNba107XG4gICAgfVxuXG4gICAgcmV0dXJuIHI7XG4gIH0sIHt9KTtcblxuICByZXR1cm4gW3ZhbHMsIHpvbmUsIHNwZWNpZmljT2Zmc2V0XTtcbn1cblxubGV0IGR1bW15RGF0ZVRpbWVDYWNoZSA9IG51bGw7XG5cbmZ1bmN0aW9uIGdldER1bW15RGF0ZVRpbWUoKSB7XG4gIGlmICghZHVtbXlEYXRlVGltZUNhY2hlKSB7XG4gICAgZHVtbXlEYXRlVGltZUNhY2hlID0gRGF0ZVRpbWUuZnJvbU1pbGxpcygxNTU1NTU1NTU1NTU1KTtcbiAgfVxuXG4gIHJldHVybiBkdW1teURhdGVUaW1lQ2FjaGU7XG59XG5cbmZ1bmN0aW9uIG1heWJlRXhwYW5kTWFjcm9Ub2tlbih0b2tlbiwgbG9jYWxlKSB7XG4gIGlmICh0b2tlbi5saXRlcmFsKSB7XG4gICAgcmV0dXJuIHRva2VuO1xuICB9XG5cbiAgY29uc3QgZm9ybWF0T3B0cyA9IEZvcm1hdHRlci5tYWNyb1Rva2VuVG9Gb3JtYXRPcHRzKHRva2VuLnZhbCk7XG5cbiAgaWYgKCFmb3JtYXRPcHRzKSB7XG4gICAgcmV0dXJuIHRva2VuO1xuICB9XG5cbiAgY29uc3QgZm9ybWF0dGVyID0gRm9ybWF0dGVyLmNyZWF0ZShsb2NhbGUsIGZvcm1hdE9wdHMpO1xuICBjb25zdCBwYXJ0cyA9IGZvcm1hdHRlci5mb3JtYXREYXRlVGltZVBhcnRzKGdldER1bW15RGF0ZVRpbWUoKSk7XG5cbiAgY29uc3QgdG9rZW5zID0gcGFydHMubWFwKChwKSA9PiB0b2tlbkZvclBhcnQocCwgbG9jYWxlLCBmb3JtYXRPcHRzKSk7XG5cbiAgaWYgKHRva2Vucy5pbmNsdWRlcyh1bmRlZmluZWQpKSB7XG4gICAgcmV0dXJuIHRva2VuO1xuICB9XG5cbiAgcmV0dXJuIHRva2Vucztcbn1cblxuZnVuY3Rpb24gZXhwYW5kTWFjcm9Ub2tlbnModG9rZW5zLCBsb2NhbGUpIHtcbiAgcmV0dXJuIEFycmF5LnByb3RvdHlwZS5jb25jYXQoLi4udG9rZW5zLm1hcCgodCkgPT4gbWF5YmVFeHBhbmRNYWNyb1Rva2VuKHQsIGxvY2FsZSkpKTtcbn1cblxuLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBleHBsYWluRnJvbVRva2Vucyhsb2NhbGUsIGlucHV0LCBmb3JtYXQpIHtcbiAgY29uc3QgdG9rZW5zID0gZXhwYW5kTWFjcm9Ub2tlbnMoRm9ybWF0dGVyLnBhcnNlRm9ybWF0KGZvcm1hdCksIGxvY2FsZSksXG4gICAgdW5pdHMgPSB0b2tlbnMubWFwKCh0KSA9PiB1bml0Rm9yVG9rZW4odCwgbG9jYWxlKSksXG4gICAgZGlzcXVhbGlmeWluZ1VuaXQgPSB1bml0cy5maW5kKCh0KSA9PiB0LmludmFsaWRSZWFzb24pO1xuXG4gIGlmIChkaXNxdWFsaWZ5aW5nVW5pdCkge1xuICAgIHJldHVybiB7IGlucHV0LCB0b2tlbnMsIGludmFsaWRSZWFzb246IGRpc3F1YWxpZnlpbmdVbml0LmludmFsaWRSZWFzb24gfTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBbcmVnZXhTdHJpbmcsIGhhbmRsZXJzXSA9IGJ1aWxkUmVnZXgodW5pdHMpLFxuICAgICAgcmVnZXggPSBSZWdFeHAocmVnZXhTdHJpbmcsIFwiaVwiKSxcbiAgICAgIFtyYXdNYXRjaGVzLCBtYXRjaGVzXSA9IG1hdGNoKGlucHV0LCByZWdleCwgaGFuZGxlcnMpLFxuICAgICAgW3Jlc3VsdCwgem9uZSwgc3BlY2lmaWNPZmZzZXRdID0gbWF0Y2hlc1xuICAgICAgICA/IGRhdGVUaW1lRnJvbU1hdGNoZXMobWF0Y2hlcylcbiAgICAgICAgOiBbbnVsbCwgbnVsbCwgdW5kZWZpbmVkXTtcbiAgICBpZiAoaGFzT3duUHJvcGVydHkobWF0Y2hlcywgXCJhXCIpICYmIGhhc093blByb3BlcnR5KG1hdGNoZXMsIFwiSFwiKSkge1xuICAgICAgdGhyb3cgbmV3IENvbmZsaWN0aW5nU3BlY2lmaWNhdGlvbkVycm9yKFxuICAgICAgICBcIkNhbid0IGluY2x1ZGUgbWVyaWRpZW0gd2hlbiBzcGVjaWZ5aW5nIDI0LWhvdXIgZm9ybWF0XCJcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB7IGlucHV0LCB0b2tlbnMsIHJlZ2V4LCByYXdNYXRjaGVzLCBtYXRjaGVzLCByZXN1bHQsIHpvbmUsIHNwZWNpZmljT2Zmc2V0IH07XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlRnJvbVRva2Vucyhsb2NhbGUsIGlucHV0LCBmb3JtYXQpIHtcbiAgY29uc3QgeyByZXN1bHQsIHpvbmUsIHNwZWNpZmljT2Zmc2V0LCBpbnZhbGlkUmVhc29uIH0gPSBleHBsYWluRnJvbVRva2Vucyhsb2NhbGUsIGlucHV0LCBmb3JtYXQpO1xuICByZXR1cm4gW3Jlc3VsdCwgem9uZSwgc3BlY2lmaWNPZmZzZXQsIGludmFsaWRSZWFzb25dO1xufVxuIiwgImltcG9ydCB7XG4gIGludGVnZXJCZXR3ZWVuLFxuICBpc0xlYXBZZWFyLFxuICB0aW1lT2JqZWN0LFxuICBkYXlzSW5ZZWFyLFxuICBkYXlzSW5Nb250aCxcbiAgd2Vla3NJbldlZWtZZWFyLFxuICBpc0ludGVnZXIsXG59IGZyb20gXCIuL3V0aWwuanNcIjtcbmltcG9ydCBJbnZhbGlkIGZyb20gXCIuL2ludmFsaWQuanNcIjtcblxuY29uc3Qgbm9uTGVhcExhZGRlciA9IFswLCAzMSwgNTksIDkwLCAxMjAsIDE1MSwgMTgxLCAyMTIsIDI0MywgMjczLCAzMDQsIDMzNF0sXG4gIGxlYXBMYWRkZXIgPSBbMCwgMzEsIDYwLCA5MSwgMTIxLCAxNTIsIDE4MiwgMjEzLCAyNDQsIDI3NCwgMzA1LCAzMzVdO1xuXG5mdW5jdGlvbiB1bml0T3V0T2ZSYW5nZSh1bml0LCB2YWx1ZSkge1xuICByZXR1cm4gbmV3IEludmFsaWQoXG4gICAgXCJ1bml0IG91dCBvZiByYW5nZVwiLFxuICAgIGB5b3Ugc3BlY2lmaWVkICR7dmFsdWV9IChvZiB0eXBlICR7dHlwZW9mIHZhbHVlfSkgYXMgYSAke3VuaXR9LCB3aGljaCBpcyBpbnZhbGlkYFxuICApO1xufVxuXG5mdW5jdGlvbiBkYXlPZldlZWsoeWVhciwgbW9udGgsIGRheSkge1xuICBjb25zdCBkID0gbmV3IERhdGUoRGF0ZS5VVEMoeWVhciwgbW9udGggLSAxLCBkYXkpKTtcblxuICBpZiAoeWVhciA8IDEwMCAmJiB5ZWFyID49IDApIHtcbiAgICBkLnNldFVUQ0Z1bGxZZWFyKGQuZ2V0VVRDRnVsbFllYXIoKSAtIDE5MDApO1xuICB9XG5cbiAgY29uc3QganMgPSBkLmdldFVUQ0RheSgpO1xuXG4gIHJldHVybiBqcyA9PT0gMCA/IDcgOiBqcztcbn1cblxuZnVuY3Rpb24gY29tcHV0ZU9yZGluYWwoeWVhciwgbW9udGgsIGRheSkge1xuICByZXR1cm4gZGF5ICsgKGlzTGVhcFllYXIoeWVhcikgPyBsZWFwTGFkZGVyIDogbm9uTGVhcExhZGRlcilbbW9udGggLSAxXTtcbn1cblxuZnVuY3Rpb24gdW5jb21wdXRlT3JkaW5hbCh5ZWFyLCBvcmRpbmFsKSB7XG4gIGNvbnN0IHRhYmxlID0gaXNMZWFwWWVhcih5ZWFyKSA/IGxlYXBMYWRkZXIgOiBub25MZWFwTGFkZGVyLFxuICAgIG1vbnRoMCA9IHRhYmxlLmZpbmRJbmRleCgoaSkgPT4gaSA8IG9yZGluYWwpLFxuICAgIGRheSA9IG9yZGluYWwgLSB0YWJsZVttb250aDBdO1xuICByZXR1cm4geyBtb250aDogbW9udGgwICsgMSwgZGF5IH07XG59XG5cbi8qKlxuICogQHByaXZhdGVcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZ3JlZ29yaWFuVG9XZWVrKGdyZWdPYmopIHtcbiAgY29uc3QgeyB5ZWFyLCBtb250aCwgZGF5IH0gPSBncmVnT2JqLFxuICAgIG9yZGluYWwgPSBjb21wdXRlT3JkaW5hbCh5ZWFyLCBtb250aCwgZGF5KSxcbiAgICB3ZWVrZGF5ID0gZGF5T2ZXZWVrKHllYXIsIG1vbnRoLCBkYXkpO1xuXG4gIGxldCB3ZWVrTnVtYmVyID0gTWF0aC5mbG9vcigob3JkaW5hbCAtIHdlZWtkYXkgKyAxMCkgLyA3KSxcbiAgICB3ZWVrWWVhcjtcblxuICBpZiAod2Vla051bWJlciA8IDEpIHtcbiAgICB3ZWVrWWVhciA9IHllYXIgLSAxO1xuICAgIHdlZWtOdW1iZXIgPSB3ZWVrc0luV2Vla1llYXIod2Vla1llYXIpO1xuICB9IGVsc2UgaWYgKHdlZWtOdW1iZXIgPiB3ZWVrc0luV2Vla1llYXIoeWVhcikpIHtcbiAgICB3ZWVrWWVhciA9IHllYXIgKyAxO1xuICAgIHdlZWtOdW1iZXIgPSAxO1xuICB9IGVsc2Uge1xuICAgIHdlZWtZZWFyID0geWVhcjtcbiAgfVxuXG4gIHJldHVybiB7IHdlZWtZZWFyLCB3ZWVrTnVtYmVyLCB3ZWVrZGF5LCAuLi50aW1lT2JqZWN0KGdyZWdPYmopIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3ZWVrVG9HcmVnb3JpYW4od2Vla0RhdGEpIHtcbiAgY29uc3QgeyB3ZWVrWWVhciwgd2Vla051bWJlciwgd2Vla2RheSB9ID0gd2Vla0RhdGEsXG4gICAgd2Vla2RheU9mSmFuNCA9IGRheU9mV2Vlayh3ZWVrWWVhciwgMSwgNCksXG4gICAgeWVhckluRGF5cyA9IGRheXNJblllYXIod2Vla1llYXIpO1xuXG4gIGxldCBvcmRpbmFsID0gd2Vla051bWJlciAqIDcgKyB3ZWVrZGF5IC0gd2Vla2RheU9mSmFuNCAtIDMsXG4gICAgeWVhcjtcblxuICBpZiAob3JkaW5hbCA8IDEpIHtcbiAgICB5ZWFyID0gd2Vla1llYXIgLSAxO1xuICAgIG9yZGluYWwgKz0gZGF5c0luWWVhcih5ZWFyKTtcbiAgfSBlbHNlIGlmIChvcmRpbmFsID4geWVhckluRGF5cykge1xuICAgIHllYXIgPSB3ZWVrWWVhciArIDE7XG4gICAgb3JkaW5hbCAtPSBkYXlzSW5ZZWFyKHdlZWtZZWFyKTtcbiAgfSBlbHNlIHtcbiAgICB5ZWFyID0gd2Vla1llYXI7XG4gIH1cblxuICBjb25zdCB7IG1vbnRoLCBkYXkgfSA9IHVuY29tcHV0ZU9yZGluYWwoeWVhciwgb3JkaW5hbCk7XG4gIHJldHVybiB7IHllYXIsIG1vbnRoLCBkYXksIC4uLnRpbWVPYmplY3Qod2Vla0RhdGEpIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBncmVnb3JpYW5Ub09yZGluYWwoZ3JlZ0RhdGEpIHtcbiAgY29uc3QgeyB5ZWFyLCBtb250aCwgZGF5IH0gPSBncmVnRGF0YTtcbiAgY29uc3Qgb3JkaW5hbCA9IGNvbXB1dGVPcmRpbmFsKHllYXIsIG1vbnRoLCBkYXkpO1xuICByZXR1cm4geyB5ZWFyLCBvcmRpbmFsLCAuLi50aW1lT2JqZWN0KGdyZWdEYXRhKSB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gb3JkaW5hbFRvR3JlZ29yaWFuKG9yZGluYWxEYXRhKSB7XG4gIGNvbnN0IHsgeWVhciwgb3JkaW5hbCB9ID0gb3JkaW5hbERhdGE7XG4gIGNvbnN0IHsgbW9udGgsIGRheSB9ID0gdW5jb21wdXRlT3JkaW5hbCh5ZWFyLCBvcmRpbmFsKTtcbiAgcmV0dXJuIHsgeWVhciwgbW9udGgsIGRheSwgLi4udGltZU9iamVjdChvcmRpbmFsRGF0YSkgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhhc0ludmFsaWRXZWVrRGF0YShvYmopIHtcbiAgY29uc3QgdmFsaWRZZWFyID0gaXNJbnRlZ2VyKG9iai53ZWVrWWVhciksXG4gICAgdmFsaWRXZWVrID0gaW50ZWdlckJldHdlZW4ob2JqLndlZWtOdW1iZXIsIDEsIHdlZWtzSW5XZWVrWWVhcihvYmoud2Vla1llYXIpKSxcbiAgICB2YWxpZFdlZWtkYXkgPSBpbnRlZ2VyQmV0d2VlbihvYmoud2Vla2RheSwgMSwgNyk7XG5cbiAgaWYgKCF2YWxpZFllYXIpIHtcbiAgICByZXR1cm4gdW5pdE91dE9mUmFuZ2UoXCJ3ZWVrWWVhclwiLCBvYmoud2Vla1llYXIpO1xuICB9IGVsc2UgaWYgKCF2YWxpZFdlZWspIHtcbiAgICByZXR1cm4gdW5pdE91dE9mUmFuZ2UoXCJ3ZWVrXCIsIG9iai53ZWVrKTtcbiAgfSBlbHNlIGlmICghdmFsaWRXZWVrZGF5KSB7XG4gICAgcmV0dXJuIHVuaXRPdXRPZlJhbmdlKFwid2Vla2RheVwiLCBvYmoud2Vla2RheSk7XG4gIH0gZWxzZSByZXR1cm4gZmFsc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYXNJbnZhbGlkT3JkaW5hbERhdGEob2JqKSB7XG4gIGNvbnN0IHZhbGlkWWVhciA9IGlzSW50ZWdlcihvYmoueWVhciksXG4gICAgdmFsaWRPcmRpbmFsID0gaW50ZWdlckJldHdlZW4ob2JqLm9yZGluYWwsIDEsIGRheXNJblllYXIob2JqLnllYXIpKTtcblxuICBpZiAoIXZhbGlkWWVhcikge1xuICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZShcInllYXJcIiwgb2JqLnllYXIpO1xuICB9IGVsc2UgaWYgKCF2YWxpZE9yZGluYWwpIHtcbiAgICByZXR1cm4gdW5pdE91dE9mUmFuZ2UoXCJvcmRpbmFsXCIsIG9iai5vcmRpbmFsKTtcbiAgfSBlbHNlIHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhhc0ludmFsaWRHcmVnb3JpYW5EYXRhKG9iaikge1xuICBjb25zdCB2YWxpZFllYXIgPSBpc0ludGVnZXIob2JqLnllYXIpLFxuICAgIHZhbGlkTW9udGggPSBpbnRlZ2VyQmV0d2VlbihvYmoubW9udGgsIDEsIDEyKSxcbiAgICB2YWxpZERheSA9IGludGVnZXJCZXR3ZWVuKG9iai5kYXksIDEsIGRheXNJbk1vbnRoKG9iai55ZWFyLCBvYmoubW9udGgpKTtcblxuICBpZiAoIXZhbGlkWWVhcikge1xuICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZShcInllYXJcIiwgb2JqLnllYXIpO1xuICB9IGVsc2UgaWYgKCF2YWxpZE1vbnRoKSB7XG4gICAgcmV0dXJuIHVuaXRPdXRPZlJhbmdlKFwibW9udGhcIiwgb2JqLm1vbnRoKTtcbiAgfSBlbHNlIGlmICghdmFsaWREYXkpIHtcbiAgICByZXR1cm4gdW5pdE91dE9mUmFuZ2UoXCJkYXlcIiwgb2JqLmRheSk7XG4gIH0gZWxzZSByZXR1cm4gZmFsc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYXNJbnZhbGlkVGltZURhdGEob2JqKSB7XG4gIGNvbnN0IHsgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pbGxpc2Vjb25kIH0gPSBvYmo7XG4gIGNvbnN0IHZhbGlkSG91ciA9XG4gICAgICBpbnRlZ2VyQmV0d2Vlbihob3VyLCAwLCAyMykgfHxcbiAgICAgIChob3VyID09PSAyNCAmJiBtaW51dGUgPT09IDAgJiYgc2Vjb25kID09PSAwICYmIG1pbGxpc2Vjb25kID09PSAwKSxcbiAgICB2YWxpZE1pbnV0ZSA9IGludGVnZXJCZXR3ZWVuKG1pbnV0ZSwgMCwgNTkpLFxuICAgIHZhbGlkU2Vjb25kID0gaW50ZWdlckJldHdlZW4oc2Vjb25kLCAwLCA1OSksXG4gICAgdmFsaWRNaWxsaXNlY29uZCA9IGludGVnZXJCZXR3ZWVuKG1pbGxpc2Vjb25kLCAwLCA5OTkpO1xuXG4gIGlmICghdmFsaWRIb3VyKSB7XG4gICAgcmV0dXJuIHVuaXRPdXRPZlJhbmdlKFwiaG91clwiLCBob3VyKTtcbiAgfSBlbHNlIGlmICghdmFsaWRNaW51dGUpIHtcbiAgICByZXR1cm4gdW5pdE91dE9mUmFuZ2UoXCJtaW51dGVcIiwgbWludXRlKTtcbiAgfSBlbHNlIGlmICghdmFsaWRTZWNvbmQpIHtcbiAgICByZXR1cm4gdW5pdE91dE9mUmFuZ2UoXCJzZWNvbmRcIiwgc2Vjb25kKTtcbiAgfSBlbHNlIGlmICghdmFsaWRNaWxsaXNlY29uZCkge1xuICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZShcIm1pbGxpc2Vjb25kXCIsIG1pbGxpc2Vjb25kKTtcbiAgfSBlbHNlIHJldHVybiBmYWxzZTtcbn1cbiIsICJpbXBvcnQgRHVyYXRpb24gZnJvbSBcIi4vZHVyYXRpb24uanNcIjtcbmltcG9ydCBJbnRlcnZhbCBmcm9tIFwiLi9pbnRlcnZhbC5qc1wiO1xuaW1wb3J0IFNldHRpbmdzIGZyb20gXCIuL3NldHRpbmdzLmpzXCI7XG5pbXBvcnQgSW5mbyBmcm9tIFwiLi9pbmZvLmpzXCI7XG5pbXBvcnQgRm9ybWF0dGVyIGZyb20gXCIuL2ltcGwvZm9ybWF0dGVyLmpzXCI7XG5pbXBvcnQgRml4ZWRPZmZzZXRab25lIGZyb20gXCIuL3pvbmVzL2ZpeGVkT2Zmc2V0Wm9uZS5qc1wiO1xuaW1wb3J0IExvY2FsZSBmcm9tIFwiLi9pbXBsL2xvY2FsZS5qc1wiO1xuaW1wb3J0IHtcbiAgaXNVbmRlZmluZWQsXG4gIG1heWJlQXJyYXksXG4gIGlzRGF0ZSxcbiAgaXNOdW1iZXIsXG4gIGJlc3RCeSxcbiAgZGF5c0luTW9udGgsXG4gIGRheXNJblllYXIsXG4gIGlzTGVhcFllYXIsXG4gIHdlZWtzSW5XZWVrWWVhcixcbiAgbm9ybWFsaXplT2JqZWN0LFxuICByb3VuZFRvLFxuICBvYmpUb0xvY2FsVFMsXG4gIHBhZFN0YXJ0LFxufSBmcm9tIFwiLi9pbXBsL3V0aWwuanNcIjtcbmltcG9ydCB7IG5vcm1hbGl6ZVpvbmUgfSBmcm9tIFwiLi9pbXBsL3pvbmVVdGlsLmpzXCI7XG5pbXBvcnQgZGlmZiBmcm9tIFwiLi9pbXBsL2RpZmYuanNcIjtcbmltcG9ydCB7IHBhcnNlUkZDMjgyMkRhdGUsIHBhcnNlSVNPRGF0ZSwgcGFyc2VIVFRQRGF0ZSwgcGFyc2VTUUwgfSBmcm9tIFwiLi9pbXBsL3JlZ2V4UGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBwYXJzZUZyb21Ub2tlbnMsIGV4cGxhaW5Gcm9tVG9rZW5zIH0gZnJvbSBcIi4vaW1wbC90b2tlblBhcnNlci5qc1wiO1xuaW1wb3J0IHtcbiAgZ3JlZ29yaWFuVG9XZWVrLFxuICB3ZWVrVG9HcmVnb3JpYW4sXG4gIGdyZWdvcmlhblRvT3JkaW5hbCxcbiAgb3JkaW5hbFRvR3JlZ29yaWFuLFxuICBoYXNJbnZhbGlkR3JlZ29yaWFuRGF0YSxcbiAgaGFzSW52YWxpZFdlZWtEYXRhLFxuICBoYXNJbnZhbGlkT3JkaW5hbERhdGEsXG4gIGhhc0ludmFsaWRUaW1lRGF0YSxcbn0gZnJvbSBcIi4vaW1wbC9jb252ZXJzaW9ucy5qc1wiO1xuaW1wb3J0ICogYXMgRm9ybWF0cyBmcm9tIFwiLi9pbXBsL2Zvcm1hdHMuanNcIjtcbmltcG9ydCB7XG4gIEludmFsaWRBcmd1bWVudEVycm9yLFxuICBDb25mbGljdGluZ1NwZWNpZmljYXRpb25FcnJvcixcbiAgSW52YWxpZFVuaXRFcnJvcixcbiAgSW52YWxpZERhdGVUaW1lRXJyb3IsXG59IGZyb20gXCIuL2Vycm9ycy5qc1wiO1xuaW1wb3J0IEludmFsaWQgZnJvbSBcIi4vaW1wbC9pbnZhbGlkLmpzXCI7XG5cbmNvbnN0IElOVkFMSUQgPSBcIkludmFsaWQgRGF0ZVRpbWVcIjtcbmNvbnN0IE1BWF9EQVRFID0gOC42NGUxNTtcblxuZnVuY3Rpb24gdW5zdXBwb3J0ZWRab25lKHpvbmUpIHtcbiAgcmV0dXJuIG5ldyBJbnZhbGlkKFwidW5zdXBwb3J0ZWQgem9uZVwiLCBgdGhlIHpvbmUgXCIke3pvbmUubmFtZX1cIiBpcyBub3Qgc3VwcG9ydGVkYCk7XG59XG5cbi8vIHdlIGNhY2hlIHdlZWsgZGF0YSBvbiB0aGUgRFQgb2JqZWN0IGFuZCB0aGlzIGludGVybWVkaWF0ZXMgdGhlIGNhY2hlXG5mdW5jdGlvbiBwb3NzaWJseUNhY2hlZFdlZWtEYXRhKGR0KSB7XG4gIGlmIChkdC53ZWVrRGF0YSA9PT0gbnVsbCkge1xuICAgIGR0LndlZWtEYXRhID0gZ3JlZ29yaWFuVG9XZWVrKGR0LmMpO1xuICB9XG4gIHJldHVybiBkdC53ZWVrRGF0YTtcbn1cblxuLy8gY2xvbmUgcmVhbGx5IG1lYW5zLCBcIm1ha2UgYSBuZXcgb2JqZWN0IHdpdGggdGhlc2UgbW9kaWZpY2F0aW9uc1wiLiBhbGwgXCJzZXR0ZXJzXCIgcmVhbGx5IHVzZSB0aGlzXG4vLyB0byBjcmVhdGUgYSBuZXcgb2JqZWN0IHdoaWxlIG9ubHkgY2hhbmdpbmcgc29tZSBvZiB0aGUgcHJvcGVydGllc1xuZnVuY3Rpb24gY2xvbmUoaW5zdCwgYWx0cykge1xuICBjb25zdCBjdXJyZW50ID0ge1xuICAgIHRzOiBpbnN0LnRzLFxuICAgIHpvbmU6IGluc3Quem9uZSxcbiAgICBjOiBpbnN0LmMsXG4gICAgbzogaW5zdC5vLFxuICAgIGxvYzogaW5zdC5sb2MsXG4gICAgaW52YWxpZDogaW5zdC5pbnZhbGlkLFxuICB9O1xuICByZXR1cm4gbmV3IERhdGVUaW1lKHsgLi4uY3VycmVudCwgLi4uYWx0cywgb2xkOiBjdXJyZW50IH0pO1xufVxuXG4vLyBmaW5kIHRoZSByaWdodCBvZmZzZXQgYSBnaXZlbiBsb2NhbCB0aW1lLiBUaGUgbyBpbnB1dCBpcyBvdXIgZ3Vlc3MsIHdoaWNoIGRldGVybWluZXMgd2hpY2hcbi8vIG9mZnNldCB3ZSdsbCBwaWNrIGluIGFtYmlndW91cyBjYXNlcyAoZS5nLiB0aGVyZSBhcmUgdHdvIDMgQU1zIGIvYyBGYWxsYmFjayBEU1QpXG5mdW5jdGlvbiBmaXhPZmZzZXQobG9jYWxUUywgbywgdHopIHtcbiAgLy8gT3VyIFVUQyB0aW1lIGlzIGp1c3QgYSBndWVzcyBiZWNhdXNlIG91ciBvZmZzZXQgaXMganVzdCBhIGd1ZXNzXG4gIGxldCB1dGNHdWVzcyA9IGxvY2FsVFMgLSBvICogNjAgKiAxMDAwO1xuXG4gIC8vIFRlc3Qgd2hldGhlciB0aGUgem9uZSBtYXRjaGVzIHRoZSBvZmZzZXQgZm9yIHRoaXMgdHNcbiAgY29uc3QgbzIgPSB0ei5vZmZzZXQodXRjR3Vlc3MpO1xuXG4gIC8vIElmIHNvLCBvZmZzZXQgZGlkbid0IGNoYW5nZSBhbmQgd2UncmUgZG9uZVxuICBpZiAobyA9PT0gbzIpIHtcbiAgICByZXR1cm4gW3V0Y0d1ZXNzLCBvXTtcbiAgfVxuXG4gIC8vIElmIG5vdCwgY2hhbmdlIHRoZSB0cyBieSB0aGUgZGlmZmVyZW5jZSBpbiB0aGUgb2Zmc2V0XG4gIHV0Y0d1ZXNzIC09IChvMiAtIG8pICogNjAgKiAxMDAwO1xuXG4gIC8vIElmIHRoYXQgZ2l2ZXMgdXMgdGhlIGxvY2FsIHRpbWUgd2Ugd2FudCwgd2UncmUgZG9uZVxuICBjb25zdCBvMyA9IHR6Lm9mZnNldCh1dGNHdWVzcyk7XG4gIGlmIChvMiA9PT0gbzMpIHtcbiAgICByZXR1cm4gW3V0Y0d1ZXNzLCBvMl07XG4gIH1cblxuICAvLyBJZiBpdCdzIGRpZmZlcmVudCwgd2UncmUgaW4gYSBob2xlIHRpbWUuIFRoZSBvZmZzZXQgaGFzIGNoYW5nZWQsIGJ1dCB0aGUgd2UgZG9uJ3QgYWRqdXN0IHRoZSB0aW1lXG4gIHJldHVybiBbbG9jYWxUUyAtIE1hdGgubWluKG8yLCBvMykgKiA2MCAqIDEwMDAsIE1hdGgubWF4KG8yLCBvMyldO1xufVxuXG4vLyBjb252ZXJ0IGFuIGVwb2NoIHRpbWVzdGFtcCBpbnRvIGEgY2FsZW5kYXIgb2JqZWN0IHdpdGggdGhlIGdpdmVuIG9mZnNldFxuZnVuY3Rpb24gdHNUb09iaih0cywgb2Zmc2V0KSB7XG4gIHRzICs9IG9mZnNldCAqIDYwICogMTAwMDtcblxuICBjb25zdCBkID0gbmV3IERhdGUodHMpO1xuXG4gIHJldHVybiB7XG4gICAgeWVhcjogZC5nZXRVVENGdWxsWWVhcigpLFxuICAgIG1vbnRoOiBkLmdldFVUQ01vbnRoKCkgKyAxLFxuICAgIGRheTogZC5nZXRVVENEYXRlKCksXG4gICAgaG91cjogZC5nZXRVVENIb3VycygpLFxuICAgIG1pbnV0ZTogZC5nZXRVVENNaW51dGVzKCksXG4gICAgc2Vjb25kOiBkLmdldFVUQ1NlY29uZHMoKSxcbiAgICBtaWxsaXNlY29uZDogZC5nZXRVVENNaWxsaXNlY29uZHMoKSxcbiAgfTtcbn1cblxuLy8gY29udmVydCBhIGNhbGVuZGFyIG9iamVjdCB0byBhIGVwb2NoIHRpbWVzdGFtcFxuZnVuY3Rpb24gb2JqVG9UUyhvYmosIG9mZnNldCwgem9uZSkge1xuICByZXR1cm4gZml4T2Zmc2V0KG9ialRvTG9jYWxUUyhvYmopLCBvZmZzZXQsIHpvbmUpO1xufVxuXG4vLyBjcmVhdGUgYSBuZXcgRFQgaW5zdGFuY2UgYnkgYWRkaW5nIGEgZHVyYXRpb24sIGFkanVzdGluZyBmb3IgRFNUc1xuZnVuY3Rpb24gYWRqdXN0VGltZShpbnN0LCBkdXIpIHtcbiAgY29uc3Qgb1ByZSA9IGluc3QubyxcbiAgICB5ZWFyID0gaW5zdC5jLnllYXIgKyBNYXRoLnRydW5jKGR1ci55ZWFycyksXG4gICAgbW9udGggPSBpbnN0LmMubW9udGggKyBNYXRoLnRydW5jKGR1ci5tb250aHMpICsgTWF0aC50cnVuYyhkdXIucXVhcnRlcnMpICogMyxcbiAgICBjID0ge1xuICAgICAgLi4uaW5zdC5jLFxuICAgICAgeWVhcixcbiAgICAgIG1vbnRoLFxuICAgICAgZGF5OlxuICAgICAgICBNYXRoLm1pbihpbnN0LmMuZGF5LCBkYXlzSW5Nb250aCh5ZWFyLCBtb250aCkpICtcbiAgICAgICAgTWF0aC50cnVuYyhkdXIuZGF5cykgK1xuICAgICAgICBNYXRoLnRydW5jKGR1ci53ZWVrcykgKiA3LFxuICAgIH0sXG4gICAgbWlsbGlzVG9BZGQgPSBEdXJhdGlvbi5mcm9tT2JqZWN0KHtcbiAgICAgIHllYXJzOiBkdXIueWVhcnMgLSBNYXRoLnRydW5jKGR1ci55ZWFycyksXG4gICAgICBxdWFydGVyczogZHVyLnF1YXJ0ZXJzIC0gTWF0aC50cnVuYyhkdXIucXVhcnRlcnMpLFxuICAgICAgbW9udGhzOiBkdXIubW9udGhzIC0gTWF0aC50cnVuYyhkdXIubW9udGhzKSxcbiAgICAgIHdlZWtzOiBkdXIud2Vla3MgLSBNYXRoLnRydW5jKGR1ci53ZWVrcyksXG4gICAgICBkYXlzOiBkdXIuZGF5cyAtIE1hdGgudHJ1bmMoZHVyLmRheXMpLFxuICAgICAgaG91cnM6IGR1ci5ob3VycyxcbiAgICAgIG1pbnV0ZXM6IGR1ci5taW51dGVzLFxuICAgICAgc2Vjb25kczogZHVyLnNlY29uZHMsXG4gICAgICBtaWxsaXNlY29uZHM6IGR1ci5taWxsaXNlY29uZHMsXG4gICAgfSkuYXMoXCJtaWxsaXNlY29uZHNcIiksXG4gICAgbG9jYWxUUyA9IG9ialRvTG9jYWxUUyhjKTtcblxuICBsZXQgW3RzLCBvXSA9IGZpeE9mZnNldChsb2NhbFRTLCBvUHJlLCBpbnN0LnpvbmUpO1xuXG4gIGlmIChtaWxsaXNUb0FkZCAhPT0gMCkge1xuICAgIHRzICs9IG1pbGxpc1RvQWRkO1xuICAgIC8vIHRoYXQgY291bGQgaGF2ZSBjaGFuZ2VkIHRoZSBvZmZzZXQgYnkgZ29pbmcgb3ZlciBhIERTVCwgYnV0IHdlIHdhbnQgdG8ga2VlcCB0aGUgdHMgdGhlIHNhbWVcbiAgICBvID0gaW5zdC56b25lLm9mZnNldCh0cyk7XG4gIH1cblxuICByZXR1cm4geyB0cywgbyB9O1xufVxuXG4vLyBoZWxwZXIgdXNlZnVsIGluIHR1cm5pbmcgdGhlIHJlc3VsdHMgb2YgcGFyc2luZyBpbnRvIHJlYWwgZGF0ZXNcbi8vIGJ5IGhhbmRsaW5nIHRoZSB6b25lIG9wdGlvbnNcbmZ1bmN0aW9uIHBhcnNlRGF0YVRvRGF0ZVRpbWUocGFyc2VkLCBwYXJzZWRab25lLCBvcHRzLCBmb3JtYXQsIHRleHQsIHNwZWNpZmljT2Zmc2V0KSB7XG4gIGNvbnN0IHsgc2V0Wm9uZSwgem9uZSB9ID0gb3B0cztcbiAgaWYgKHBhcnNlZCAmJiBPYmplY3Qua2V5cyhwYXJzZWQpLmxlbmd0aCAhPT0gMCkge1xuICAgIGNvbnN0IGludGVycHJldGF0aW9uWm9uZSA9IHBhcnNlZFpvbmUgfHwgem9uZSxcbiAgICAgIGluc3QgPSBEYXRlVGltZS5mcm9tT2JqZWN0KHBhcnNlZCwge1xuICAgICAgICAuLi5vcHRzLFxuICAgICAgICB6b25lOiBpbnRlcnByZXRhdGlvblpvbmUsXG4gICAgICAgIHNwZWNpZmljT2Zmc2V0LFxuICAgICAgfSk7XG4gICAgcmV0dXJuIHNldFpvbmUgPyBpbnN0IDogaW5zdC5zZXRab25lKHpvbmUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBEYXRlVGltZS5pbnZhbGlkKFxuICAgICAgbmV3IEludmFsaWQoXCJ1bnBhcnNhYmxlXCIsIGB0aGUgaW5wdXQgXCIke3RleHR9XCIgY2FuJ3QgYmUgcGFyc2VkIGFzICR7Zm9ybWF0fWApXG4gICAgKTtcbiAgfVxufVxuXG4vLyBpZiB5b3Ugd2FudCB0byBvdXRwdXQgYSB0ZWNobmljYWwgZm9ybWF0IChlLmcuIFJGQyAyODIyKSwgdGhpcyBoZWxwZXJcbi8vIGhlbHBzIGhhbmRsZSB0aGUgZGV0YWlsc1xuZnVuY3Rpb24gdG9UZWNoRm9ybWF0KGR0LCBmb3JtYXQsIGFsbG93WiA9IHRydWUpIHtcbiAgcmV0dXJuIGR0LmlzVmFsaWRcbiAgICA/IEZvcm1hdHRlci5jcmVhdGUoTG9jYWxlLmNyZWF0ZShcImVuLVVTXCIpLCB7XG4gICAgICAgIGFsbG93WixcbiAgICAgICAgZm9yY2VTaW1wbGU6IHRydWUsXG4gICAgICB9KS5mb3JtYXREYXRlVGltZUZyb21TdHJpbmcoZHQsIGZvcm1hdClcbiAgICA6IG51bGw7XG59XG5cbmZ1bmN0aW9uIHRvSVNPRGF0ZShvLCBleHRlbmRlZCkge1xuICBjb25zdCBsb25nRm9ybWF0ID0gby5jLnllYXIgPiA5OTk5IHx8IG8uYy55ZWFyIDwgMDtcbiAgbGV0IGMgPSBcIlwiO1xuICBpZiAobG9uZ0Zvcm1hdCAmJiBvLmMueWVhciA+PSAwKSBjICs9IFwiK1wiO1xuICBjICs9IHBhZFN0YXJ0KG8uYy55ZWFyLCBsb25nRm9ybWF0ID8gNiA6IDQpO1xuXG4gIGlmIChleHRlbmRlZCkge1xuICAgIGMgKz0gXCItXCI7XG4gICAgYyArPSBwYWRTdGFydChvLmMubW9udGgpO1xuICAgIGMgKz0gXCItXCI7XG4gICAgYyArPSBwYWRTdGFydChvLmMuZGF5KTtcbiAgfSBlbHNlIHtcbiAgICBjICs9IHBhZFN0YXJ0KG8uYy5tb250aCk7XG4gICAgYyArPSBwYWRTdGFydChvLmMuZGF5KTtcbiAgfVxuICByZXR1cm4gYztcbn1cblxuZnVuY3Rpb24gdG9JU09UaW1lKFxuICBvLFxuICBleHRlbmRlZCxcbiAgc3VwcHJlc3NTZWNvbmRzLFxuICBzdXBwcmVzc01pbGxpc2Vjb25kcyxcbiAgaW5jbHVkZU9mZnNldCxcbiAgZXh0ZW5kZWRab25lXG4pIHtcbiAgbGV0IGMgPSBwYWRTdGFydChvLmMuaG91cik7XG4gIGlmIChleHRlbmRlZCkge1xuICAgIGMgKz0gXCI6XCI7XG4gICAgYyArPSBwYWRTdGFydChvLmMubWludXRlKTtcbiAgICBpZiAoby5jLnNlY29uZCAhPT0gMCB8fCAhc3VwcHJlc3NTZWNvbmRzKSB7XG4gICAgICBjICs9IFwiOlwiO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBjICs9IHBhZFN0YXJ0KG8uYy5taW51dGUpO1xuICB9XG5cbiAgaWYgKG8uYy5zZWNvbmQgIT09IDAgfHwgIXN1cHByZXNzU2Vjb25kcykge1xuICAgIGMgKz0gcGFkU3RhcnQoby5jLnNlY29uZCk7XG5cbiAgICBpZiAoby5jLm1pbGxpc2Vjb25kICE9PSAwIHx8ICFzdXBwcmVzc01pbGxpc2Vjb25kcykge1xuICAgICAgYyArPSBcIi5cIjtcbiAgICAgIGMgKz0gcGFkU3RhcnQoby5jLm1pbGxpc2Vjb25kLCAzKTtcbiAgICB9XG4gIH1cblxuICBpZiAoaW5jbHVkZU9mZnNldCkge1xuICAgIGlmIChvLmlzT2Zmc2V0Rml4ZWQgJiYgby5vZmZzZXQgPT09IDAgJiYgIWV4dGVuZGVkWm9uZSkge1xuICAgICAgYyArPSBcIlpcIjtcbiAgICB9IGVsc2UgaWYgKG8ubyA8IDApIHtcbiAgICAgIGMgKz0gXCItXCI7XG4gICAgICBjICs9IHBhZFN0YXJ0KE1hdGgudHJ1bmMoLW8ubyAvIDYwKSk7XG4gICAgICBjICs9IFwiOlwiO1xuICAgICAgYyArPSBwYWRTdGFydChNYXRoLnRydW5jKC1vLm8gJSA2MCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjICs9IFwiK1wiO1xuICAgICAgYyArPSBwYWRTdGFydChNYXRoLnRydW5jKG8ubyAvIDYwKSk7XG4gICAgICBjICs9IFwiOlwiO1xuICAgICAgYyArPSBwYWRTdGFydChNYXRoLnRydW5jKG8ubyAlIDYwKSk7XG4gICAgfVxuICB9XG5cbiAgaWYgKGV4dGVuZGVkWm9uZSkge1xuICAgIGMgKz0gXCJbXCIgKyBvLnpvbmUuaWFuYU5hbWUgKyBcIl1cIjtcbiAgfVxuICByZXR1cm4gYztcbn1cblxuLy8gZGVmYXVsdHMgZm9yIHVuc3BlY2lmaWVkIHVuaXRzIGluIHRoZSBzdXBwb3J0ZWQgY2FsZW5kYXJzXG5jb25zdCBkZWZhdWx0VW5pdFZhbHVlcyA9IHtcbiAgICBtb250aDogMSxcbiAgICBkYXk6IDEsXG4gICAgaG91cjogMCxcbiAgICBtaW51dGU6IDAsXG4gICAgc2Vjb25kOiAwLFxuICAgIG1pbGxpc2Vjb25kOiAwLFxuICB9LFxuICBkZWZhdWx0V2Vla1VuaXRWYWx1ZXMgPSB7XG4gICAgd2Vla051bWJlcjogMSxcbiAgICB3ZWVrZGF5OiAxLFxuICAgIGhvdXI6IDAsXG4gICAgbWludXRlOiAwLFxuICAgIHNlY29uZDogMCxcbiAgICBtaWxsaXNlY29uZDogMCxcbiAgfSxcbiAgZGVmYXVsdE9yZGluYWxVbml0VmFsdWVzID0ge1xuICAgIG9yZGluYWw6IDEsXG4gICAgaG91cjogMCxcbiAgICBtaW51dGU6IDAsXG4gICAgc2Vjb25kOiAwLFxuICAgIG1pbGxpc2Vjb25kOiAwLFxuICB9O1xuXG4vLyBVbml0cyBpbiB0aGUgc3VwcG9ydGVkIGNhbGVuZGFycywgc29ydGVkIGJ5IGJpZ25lc3NcbmNvbnN0IG9yZGVyZWRVbml0cyA9IFtcInllYXJcIiwgXCJtb250aFwiLCBcImRheVwiLCBcImhvdXJcIiwgXCJtaW51dGVcIiwgXCJzZWNvbmRcIiwgXCJtaWxsaXNlY29uZFwiXSxcbiAgb3JkZXJlZFdlZWtVbml0cyA9IFtcbiAgICBcIndlZWtZZWFyXCIsXG4gICAgXCJ3ZWVrTnVtYmVyXCIsXG4gICAgXCJ3ZWVrZGF5XCIsXG4gICAgXCJob3VyXCIsXG4gICAgXCJtaW51dGVcIixcbiAgICBcInNlY29uZFwiLFxuICAgIFwibWlsbGlzZWNvbmRcIixcbiAgXSxcbiAgb3JkZXJlZE9yZGluYWxVbml0cyA9IFtcInllYXJcIiwgXCJvcmRpbmFsXCIsIFwiaG91clwiLCBcIm1pbnV0ZVwiLCBcInNlY29uZFwiLCBcIm1pbGxpc2Vjb25kXCJdO1xuXG4vLyBzdGFuZGFyZGl6ZSBjYXNlIGFuZCBwbHVyYWxpdHkgaW4gdW5pdHNcbmZ1bmN0aW9uIG5vcm1hbGl6ZVVuaXQodW5pdCkge1xuICBjb25zdCBub3JtYWxpemVkID0ge1xuICAgIHllYXI6IFwieWVhclwiLFxuICAgIHllYXJzOiBcInllYXJcIixcbiAgICBtb250aDogXCJtb250aFwiLFxuICAgIG1vbnRoczogXCJtb250aFwiLFxuICAgIGRheTogXCJkYXlcIixcbiAgICBkYXlzOiBcImRheVwiLFxuICAgIGhvdXI6IFwiaG91clwiLFxuICAgIGhvdXJzOiBcImhvdXJcIixcbiAgICBtaW51dGU6IFwibWludXRlXCIsXG4gICAgbWludXRlczogXCJtaW51dGVcIixcbiAgICBxdWFydGVyOiBcInF1YXJ0ZXJcIixcbiAgICBxdWFydGVyczogXCJxdWFydGVyXCIsXG4gICAgc2Vjb25kOiBcInNlY29uZFwiLFxuICAgIHNlY29uZHM6IFwic2Vjb25kXCIsXG4gICAgbWlsbGlzZWNvbmQ6IFwibWlsbGlzZWNvbmRcIixcbiAgICBtaWxsaXNlY29uZHM6IFwibWlsbGlzZWNvbmRcIixcbiAgICB3ZWVrZGF5OiBcIndlZWtkYXlcIixcbiAgICB3ZWVrZGF5czogXCJ3ZWVrZGF5XCIsXG4gICAgd2Vla251bWJlcjogXCJ3ZWVrTnVtYmVyXCIsXG4gICAgd2Vla3NudW1iZXI6IFwid2Vla051bWJlclwiLFxuICAgIHdlZWtudW1iZXJzOiBcIndlZWtOdW1iZXJcIixcbiAgICB3ZWVreWVhcjogXCJ3ZWVrWWVhclwiLFxuICAgIHdlZWt5ZWFyczogXCJ3ZWVrWWVhclwiLFxuICAgIG9yZGluYWw6IFwib3JkaW5hbFwiLFxuICB9W3VuaXQudG9Mb3dlckNhc2UoKV07XG5cbiAgaWYgKCFub3JtYWxpemVkKSB0aHJvdyBuZXcgSW52YWxpZFVuaXRFcnJvcih1bml0KTtcblxuICByZXR1cm4gbm9ybWFsaXplZDtcbn1cblxuLy8gdGhpcyBpcyBhIGR1bWJlZCBkb3duIHZlcnNpb24gb2YgZnJvbU9iamVjdCgpIHRoYXQgcnVucyBhYm91dCA2MCUgZmFzdGVyXG4vLyBidXQgZG9lc24ndCBkbyBhbnkgdmFsaWRhdGlvbiwgbWFrZXMgYSBidW5jaCBvZiBhc3N1bXB0aW9ucyBhYm91dCB3aGF0IHVuaXRzXG4vLyBhcmUgcHJlc2VudCwgYW5kIHNvIG9uLlxuZnVuY3Rpb24gcXVpY2tEVChvYmosIG9wdHMpIHtcbiAgY29uc3Qgem9uZSA9IG5vcm1hbGl6ZVpvbmUob3B0cy56b25lLCBTZXR0aW5ncy5kZWZhdWx0Wm9uZSksXG4gICAgbG9jID0gTG9jYWxlLmZyb21PYmplY3Qob3B0cyksXG4gICAgdHNOb3cgPSBTZXR0aW5ncy5ub3coKTtcblxuICBsZXQgdHMsIG87XG5cbiAgLy8gYXNzdW1lIHdlIGhhdmUgdGhlIGhpZ2hlci1vcmRlciB1bml0c1xuICBpZiAoIWlzVW5kZWZpbmVkKG9iai55ZWFyKSkge1xuICAgIGZvciAoY29uc3QgdSBvZiBvcmRlcmVkVW5pdHMpIHtcbiAgICAgIGlmIChpc1VuZGVmaW5lZChvYmpbdV0pKSB7XG4gICAgICAgIG9ialt1XSA9IGRlZmF1bHRVbml0VmFsdWVzW3VdO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGludmFsaWQgPSBoYXNJbnZhbGlkR3JlZ29yaWFuRGF0YShvYmopIHx8IGhhc0ludmFsaWRUaW1lRGF0YShvYmopO1xuICAgIGlmIChpbnZhbGlkKSB7XG4gICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZChpbnZhbGlkKTtcbiAgICB9XG5cbiAgICBjb25zdCBvZmZzZXRQcm92aXMgPSB6b25lLm9mZnNldCh0c05vdyk7XG4gICAgW3RzLCBvXSA9IG9ialRvVFMob2JqLCBvZmZzZXRQcm92aXMsIHpvbmUpO1xuICB9IGVsc2Uge1xuICAgIHRzID0gdHNOb3c7XG4gIH1cblxuICByZXR1cm4gbmV3IERhdGVUaW1lKHsgdHMsIHpvbmUsIGxvYywgbyB9KTtcbn1cblxuZnVuY3Rpb24gZGlmZlJlbGF0aXZlKHN0YXJ0LCBlbmQsIG9wdHMpIHtcbiAgY29uc3Qgcm91bmQgPSBpc1VuZGVmaW5lZChvcHRzLnJvdW5kKSA/IHRydWUgOiBvcHRzLnJvdW5kLFxuICAgIGZvcm1hdCA9IChjLCB1bml0KSA9PiB7XG4gICAgICBjID0gcm91bmRUbyhjLCByb3VuZCB8fCBvcHRzLmNhbGVuZGFyeSA/IDAgOiAyLCB0cnVlKTtcbiAgICAgIGNvbnN0IGZvcm1hdHRlciA9IGVuZC5sb2MuY2xvbmUob3B0cykucmVsRm9ybWF0dGVyKG9wdHMpO1xuICAgICAgcmV0dXJuIGZvcm1hdHRlci5mb3JtYXQoYywgdW5pdCk7XG4gICAgfSxcbiAgICBkaWZmZXIgPSAodW5pdCkgPT4ge1xuICAgICAgaWYgKG9wdHMuY2FsZW5kYXJ5KSB7XG4gICAgICAgIGlmICghZW5kLmhhc1NhbWUoc3RhcnQsIHVuaXQpKSB7XG4gICAgICAgICAgcmV0dXJuIGVuZC5zdGFydE9mKHVuaXQpLmRpZmYoc3RhcnQuc3RhcnRPZih1bml0KSwgdW5pdCkuZ2V0KHVuaXQpO1xuICAgICAgICB9IGVsc2UgcmV0dXJuIDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZW5kLmRpZmYoc3RhcnQsIHVuaXQpLmdldCh1bml0KTtcbiAgICAgIH1cbiAgICB9O1xuXG4gIGlmIChvcHRzLnVuaXQpIHtcbiAgICByZXR1cm4gZm9ybWF0KGRpZmZlcihvcHRzLnVuaXQpLCBvcHRzLnVuaXQpO1xuICB9XG5cbiAgZm9yIChjb25zdCB1bml0IG9mIG9wdHMudW5pdHMpIHtcbiAgICBjb25zdCBjb3VudCA9IGRpZmZlcih1bml0KTtcbiAgICBpZiAoTWF0aC5hYnMoY291bnQpID49IDEpIHtcbiAgICAgIHJldHVybiBmb3JtYXQoY291bnQsIHVuaXQpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZm9ybWF0KHN0YXJ0ID4gZW5kID8gLTAgOiAwLCBvcHRzLnVuaXRzW29wdHMudW5pdHMubGVuZ3RoIC0gMV0pO1xufVxuXG5mdW5jdGlvbiBsYXN0T3B0cyhhcmdMaXN0KSB7XG4gIGxldCBvcHRzID0ge30sXG4gICAgYXJncztcbiAgaWYgKGFyZ0xpc3QubGVuZ3RoID4gMCAmJiB0eXBlb2YgYXJnTGlzdFthcmdMaXN0Lmxlbmd0aCAtIDFdID09PSBcIm9iamVjdFwiKSB7XG4gICAgb3B0cyA9IGFyZ0xpc3RbYXJnTGlzdC5sZW5ndGggLSAxXTtcbiAgICBhcmdzID0gQXJyYXkuZnJvbShhcmdMaXN0KS5zbGljZSgwLCBhcmdMaXN0Lmxlbmd0aCAtIDEpO1xuICB9IGVsc2Uge1xuICAgIGFyZ3MgPSBBcnJheS5mcm9tKGFyZ0xpc3QpO1xuICB9XG4gIHJldHVybiBbb3B0cywgYXJnc107XG59XG5cbi8qKlxuICogQSBEYXRlVGltZSBpcyBhbiBpbW11dGFibGUgZGF0YSBzdHJ1Y3R1cmUgcmVwcmVzZW50aW5nIGEgc3BlY2lmaWMgZGF0ZSBhbmQgdGltZSBhbmQgYWNjb21wYW55aW5nIG1ldGhvZHMuIEl0IGNvbnRhaW5zIGNsYXNzIGFuZCBpbnN0YW5jZSBtZXRob2RzIGZvciBjcmVhdGluZywgcGFyc2luZywgaW50ZXJyb2dhdGluZywgdHJhbnNmb3JtaW5nLCBhbmQgZm9ybWF0dGluZyB0aGVtLlxuICpcbiAqIEEgRGF0ZVRpbWUgY29tcHJpc2VzIG9mOlxuICogKiBBIHRpbWVzdGFtcC4gRWFjaCBEYXRlVGltZSBpbnN0YW5jZSByZWZlcnMgdG8gYSBzcGVjaWZpYyBtaWxsaXNlY29uZCBvZiB0aGUgVW5peCBlcG9jaC5cbiAqICogQSB0aW1lIHpvbmUuIEVhY2ggaW5zdGFuY2UgaXMgY29uc2lkZXJlZCBpbiB0aGUgY29udGV4dCBvZiBhIHNwZWNpZmljIHpvbmUgKGJ5IGRlZmF1bHQgdGhlIGxvY2FsIHN5c3RlbSdzIHpvbmUpLlxuICogKiBDb25maWd1cmF0aW9uIHByb3BlcnRpZXMgdGhhdCBlZmZlY3QgaG93IG91dHB1dCBzdHJpbmdzIGFyZSBmb3JtYXR0ZWQsIHN1Y2ggYXMgYGxvY2FsZWAsIGBudW1iZXJpbmdTeXN0ZW1gLCBhbmQgYG91dHB1dENhbGVuZGFyYC5cbiAqXG4gKiBIZXJlIGlzIGEgYnJpZWYgb3ZlcnZpZXcgb2YgdGhlIG1vc3QgY29tbW9ubHkgdXNlZCBmdW5jdGlvbmFsaXR5IGl0IHByb3ZpZGVzOlxuICpcbiAqICogKipDcmVhdGlvbioqOiBUbyBjcmVhdGUgYSBEYXRlVGltZSBmcm9tIGl0cyBjb21wb25lbnRzLCB1c2Ugb25lIG9mIGl0cyBmYWN0b3J5IGNsYXNzIG1ldGhvZHM6IHtAbGluayBEYXRlVGltZSNsb2NhbH0sIHtAbGluayBEYXRlVGltZSN1dGN9LCBhbmQgKG1vc3QgZmxleGlibHkpIHtAbGluayBEYXRlVGltZSNmcm9tT2JqZWN0fS4gVG8gY3JlYXRlIG9uZSBmcm9tIGEgc3RhbmRhcmQgc3RyaW5nIGZvcm1hdCwgdXNlIHtAbGluayBEYXRlVGltZSNmcm9tSVNPfSwge0BsaW5rIERhdGVUaW1lI2Zyb21IVFRQfSwgYW5kIHtAbGluayBEYXRlVGltZSNmcm9tUkZDMjgyMn0uIFRvIGNyZWF0ZSBvbmUgZnJvbSBhIGN1c3RvbSBzdHJpbmcgZm9ybWF0LCB1c2Uge0BsaW5rIERhdGVUaW1lI2Zyb21Gb3JtYXR9LiBUbyBjcmVhdGUgb25lIGZyb20gYSBuYXRpdmUgSlMgZGF0ZSwgdXNlIHtAbGluayBEYXRlVGltZSNmcm9tSlNEYXRlfS5cbiAqICogKipHcmVnb3JpYW4gY2FsZW5kYXIgYW5kIHRpbWUqKjogVG8gZXhhbWluZSB0aGUgR3JlZ29yaWFuIHByb3BlcnRpZXMgb2YgYSBEYXRlVGltZSBpbmRpdmlkdWFsbHkgKGkuZSBhcyBvcHBvc2VkIHRvIGNvbGxlY3RpdmVseSB0aHJvdWdoIHtAbGluayBEYXRlVGltZSN0b09iamVjdH0pLCB1c2UgdGhlIHtAbGluayBEYXRlVGltZSN5ZWFyfSwge0BsaW5rIERhdGVUaW1lI21vbnRofSxcbiAqIHtAbGluayBEYXRlVGltZSNkYXl9LCB7QGxpbmsgRGF0ZVRpbWUjaG91cn0sIHtAbGluayBEYXRlVGltZSNtaW51dGV9LCB7QGxpbmsgRGF0ZVRpbWUjc2Vjb25kfSwge0BsaW5rIERhdGVUaW1lI21pbGxpc2Vjb25kfSBhY2Nlc3NvcnMuXG4gKiAqICoqV2VlayBjYWxlbmRhcioqOiBGb3IgSVNPIHdlZWsgY2FsZW5kYXIgYXR0cmlidXRlcywgc2VlIHRoZSB7QGxpbmsgRGF0ZVRpbWUjd2Vla1llYXJ9LCB7QGxpbmsgRGF0ZVRpbWUjd2Vla051bWJlcn0sIGFuZCB7QGxpbmsgRGF0ZVRpbWUjd2Vla2RheX0gYWNjZXNzb3JzLlxuICogKiAqKkNvbmZpZ3VyYXRpb24qKiBTZWUgdGhlIHtAbGluayBEYXRlVGltZSNsb2NhbGV9IGFuZCB7QGxpbmsgRGF0ZVRpbWUjbnVtYmVyaW5nU3lzdGVtfSBhY2Nlc3NvcnMuXG4gKiAqICoqVHJhbnNmb3JtYXRpb24qKjogVG8gdHJhbnNmb3JtIHRoZSBEYXRlVGltZSBpbnRvIG90aGVyIERhdGVUaW1lcywgdXNlIHtAbGluayBEYXRlVGltZSNzZXR9LCB7QGxpbmsgRGF0ZVRpbWUjcmVjb25maWd1cmV9LCB7QGxpbmsgRGF0ZVRpbWUjc2V0Wm9uZX0sIHtAbGluayBEYXRlVGltZSNzZXRMb2NhbGV9LCB7QGxpbmsgRGF0ZVRpbWUucGx1c30sIHtAbGluayBEYXRlVGltZSNtaW51c30sIHtAbGluayBEYXRlVGltZSNlbmRPZn0sIHtAbGluayBEYXRlVGltZSNzdGFydE9mfSwge0BsaW5rIERhdGVUaW1lI3RvVVRDfSwgYW5kIHtAbGluayBEYXRlVGltZSN0b0xvY2FsfS5cbiAqICogKipPdXRwdXQqKjogVG8gY29udmVydCB0aGUgRGF0ZVRpbWUgdG8gb3RoZXIgcmVwcmVzZW50YXRpb25zLCB1c2UgdGhlIHtAbGluayBEYXRlVGltZSN0b1JlbGF0aXZlfSwge0BsaW5rIERhdGVUaW1lI3RvUmVsYXRpdmVDYWxlbmRhcn0sIHtAbGluayBEYXRlVGltZSN0b0pTT059LCB7QGxpbmsgRGF0ZVRpbWUjdG9JU099LCB7QGxpbmsgRGF0ZVRpbWUjdG9IVFRQfSwge0BsaW5rIERhdGVUaW1lI3RvT2JqZWN0fSwge0BsaW5rIERhdGVUaW1lI3RvUkZDMjgyMn0sIHtAbGluayBEYXRlVGltZSN0b1N0cmluZ30sIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30sIHtAbGluayBEYXRlVGltZSN0b0Zvcm1hdH0sIHtAbGluayBEYXRlVGltZSN0b01pbGxpc30gYW5kIHtAbGluayBEYXRlVGltZSN0b0pTRGF0ZX0uXG4gKlxuICogVGhlcmUncyBwbGVudHkgb3RoZXJzIGRvY3VtZW50ZWQgYmVsb3cuIEluIGFkZGl0aW9uLCBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBzdWJ0bGVyIHRvcGljcyBsaWtlIGludGVybmF0aW9uYWxpemF0aW9uLCB0aW1lIHpvbmVzLCBhbHRlcm5hdGl2ZSBjYWxlbmRhcnMsIHZhbGlkaXR5LCBhbmQgc28gb24sIHNlZSB0aGUgZXh0ZXJuYWwgZG9jdW1lbnRhdGlvbi5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGF0ZVRpbWUge1xuICAvKipcbiAgICogQGFjY2VzcyBwcml2YXRlXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihjb25maWcpIHtcbiAgICBjb25zdCB6b25lID0gY29uZmlnLnpvbmUgfHwgU2V0dGluZ3MuZGVmYXVsdFpvbmU7XG5cbiAgICBsZXQgaW52YWxpZCA9XG4gICAgICBjb25maWcuaW52YWxpZCB8fFxuICAgICAgKE51bWJlci5pc05hTihjb25maWcudHMpID8gbmV3IEludmFsaWQoXCJpbnZhbGlkIGlucHV0XCIpIDogbnVsbCkgfHxcbiAgICAgICghem9uZS5pc1ZhbGlkID8gdW5zdXBwb3J0ZWRab25lKHpvbmUpIDogbnVsbCk7XG4gICAgLyoqXG4gICAgICogQGFjY2VzcyBwcml2YXRlXG4gICAgICovXG4gICAgdGhpcy50cyA9IGlzVW5kZWZpbmVkKGNvbmZpZy50cykgPyBTZXR0aW5ncy5ub3coKSA6IGNvbmZpZy50cztcblxuICAgIGxldCBjID0gbnVsbCxcbiAgICAgIG8gPSBudWxsO1xuICAgIGlmICghaW52YWxpZCkge1xuICAgICAgY29uc3QgdW5jaGFuZ2VkID0gY29uZmlnLm9sZCAmJiBjb25maWcub2xkLnRzID09PSB0aGlzLnRzICYmIGNvbmZpZy5vbGQuem9uZS5lcXVhbHMoem9uZSk7XG5cbiAgICAgIGlmICh1bmNoYW5nZWQpIHtcbiAgICAgICAgW2MsIG9dID0gW2NvbmZpZy5vbGQuYywgY29uZmlnLm9sZC5vXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IG90ID0gem9uZS5vZmZzZXQodGhpcy50cyk7XG4gICAgICAgIGMgPSB0c1RvT2JqKHRoaXMudHMsIG90KTtcbiAgICAgICAgaW52YWxpZCA9IE51bWJlci5pc05hTihjLnllYXIpID8gbmV3IEludmFsaWQoXCJpbnZhbGlkIGlucHV0XCIpIDogbnVsbDtcbiAgICAgICAgYyA9IGludmFsaWQgPyBudWxsIDogYztcbiAgICAgICAgbyA9IGludmFsaWQgPyBudWxsIDogb3Q7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGFjY2VzcyBwcml2YXRlXG4gICAgICovXG4gICAgdGhpcy5fem9uZSA9IHpvbmU7XG4gICAgLyoqXG4gICAgICogQGFjY2VzcyBwcml2YXRlXG4gICAgICovXG4gICAgdGhpcy5sb2MgPSBjb25maWcubG9jIHx8IExvY2FsZS5jcmVhdGUoKTtcbiAgICAvKipcbiAgICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICAgKi9cbiAgICB0aGlzLmludmFsaWQgPSBpbnZhbGlkO1xuICAgIC8qKlxuICAgICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAgICAqL1xuICAgIHRoaXMud2Vla0RhdGEgPSBudWxsO1xuICAgIC8qKlxuICAgICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAgICAqL1xuICAgIHRoaXMuYyA9IGM7XG4gICAgLyoqXG4gICAgICogQGFjY2VzcyBwcml2YXRlXG4gICAgICovXG4gICAgdGhpcy5vID0gbztcbiAgICAvKipcbiAgICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICAgKi9cbiAgICB0aGlzLmlzTHV4b25EYXRlVGltZSA9IHRydWU7XG4gIH1cblxuICAvLyBDT05TVFJVQ1RcblxuICAvKipcbiAgICogQ3JlYXRlIGEgRGF0ZVRpbWUgZm9yIHRoZSBjdXJyZW50IGluc3RhbnQsIGluIHRoZSBzeXN0ZW0ncyB0aW1lIHpvbmUuXG4gICAqXG4gICAqIFVzZSBTZXR0aW5ncyB0byBvdmVycmlkZSB0aGVzZSBkZWZhdWx0IHZhbHVlcyBpZiBuZWVkZWQuXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvSVNPKCkgLy9+PiBub3cgaW4gdGhlIElTTyBmb3JtYXRcbiAgICogQHJldHVybiB7RGF0ZVRpbWV9XG4gICAqL1xuICBzdGF0aWMgbm93KCkge1xuICAgIHJldHVybiBuZXcgRGF0ZVRpbWUoe30pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIGxvY2FsIERhdGVUaW1lXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbeWVhcl0gLSBUaGUgY2FsZW5kYXIgeWVhci4gSWYgb21pdHRlZCAoYXMgaW4sIGNhbGwgYGxvY2FsKClgIHdpdGggbm8gYXJndW1lbnRzKSwgdGhlIGN1cnJlbnQgdGltZSB3aWxsIGJlIHVzZWRcbiAgICogQHBhcmFtIHtudW1iZXJ9IFttb250aD0xXSAtIFRoZSBtb250aCwgMS1pbmRleGVkXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbZGF5PTFdIC0gVGhlIGRheSBvZiB0aGUgbW9udGgsIDEtaW5kZXhlZFxuICAgKiBAcGFyYW0ge251bWJlcn0gW2hvdXI9MF0gLSBUaGUgaG91ciBvZiB0aGUgZGF5LCBpbiAyNC1ob3VyIHRpbWVcbiAgICogQHBhcmFtIHtudW1iZXJ9IFttaW51dGU9MF0gLSBUaGUgbWludXRlIG9mIHRoZSBob3VyLCBtZWFuaW5nIGEgbnVtYmVyIGJldHdlZW4gMCBhbmQgNTlcbiAgICogQHBhcmFtIHtudW1iZXJ9IFtzZWNvbmQ9MF0gLSBUaGUgc2Vjb25kIG9mIHRoZSBtaW51dGUsIG1lYW5pbmcgYSBudW1iZXIgYmV0d2VlbiAwIGFuZCA1OVxuICAgKiBAcGFyYW0ge251bWJlcn0gW21pbGxpc2Vjb25kPTBdIC0gVGhlIG1pbGxpc2Vjb25kIG9mIHRoZSBzZWNvbmQsIG1lYW5pbmcgYSBudW1iZXIgYmV0d2VlbiAwIGFuZCA5OTlcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL34+IG5vd1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCh7IHpvbmU6IFwiQW1lcmljYS9OZXdfWW9ya1wiIH0pICAgICAgLy9+PiBub3csIGluIFVTIGVhc3QgY29hc3QgdGltZVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vfj4gMjAxNy0wMS0wMVQwMDowMDowMFxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAzKSAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vfj4gMjAxNy0wMy0wMVQwMDowMDowMFxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAzLCAxMiwgeyBsb2NhbGU6IFwiZnJcIiB9KSAgICAgLy9+PiAyMDE3LTAzLTEyVDAwOjAwOjAwLCB3aXRoIGEgRnJlbmNoIGxvY2FsZVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAzLCAxMiwgNSkgICAgICAgICAgICAgICAgICAgIC8vfj4gMjAxNy0wMy0xMlQwNTowMDowMFxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAzLCAxMiwgNSwgeyB6b25lOiBcInV0Y1wiIH0pICAgLy9+PiAyMDE3LTAzLTEyVDA1OjAwOjAwLCBpbiBVVENcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgMywgMTIsIDUsIDQ1KSAgICAgICAgICAgICAgICAvL34+IDIwMTctMDMtMTJUMDU6NDU6MDBcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgMywgMTIsIDUsIDQ1LCAxMCkgICAgICAgICAgICAvL34+IDIwMTctMDMtMTJUMDU6NDU6MTBcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgMywgMTIsIDUsIDQ1LCAxMCwgNzY1KSAgICAgICAvL34+IDIwMTctMDMtMTJUMDU6NDU6MTAuNzY1XG4gICAqIEByZXR1cm4ge0RhdGVUaW1lfVxuICAgKi9cbiAgc3RhdGljIGxvY2FsKCkge1xuICAgIGNvbnN0IFtvcHRzLCBhcmdzXSA9IGxhc3RPcHRzKGFyZ3VtZW50cyksXG4gICAgICBbeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pbGxpc2Vjb25kXSA9IGFyZ3M7XG4gICAgcmV0dXJuIHF1aWNrRFQoeyB5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCwgbWlsbGlzZWNvbmQgfSwgb3B0cyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgRGF0ZVRpbWUgaW4gVVRDXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbeWVhcl0gLSBUaGUgY2FsZW5kYXIgeWVhci4gSWYgb21pdHRlZCAoYXMgaW4sIGNhbGwgYHV0YygpYCB3aXRoIG5vIGFyZ3VtZW50cyksIHRoZSBjdXJyZW50IHRpbWUgd2lsbCBiZSB1c2VkXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbbW9udGg9MV0gLSBUaGUgbW9udGgsIDEtaW5kZXhlZFxuICAgKiBAcGFyYW0ge251bWJlcn0gW2RheT0xXSAtIFRoZSBkYXkgb2YgdGhlIG1vbnRoXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbaG91cj0wXSAtIFRoZSBob3VyIG9mIHRoZSBkYXksIGluIDI0LWhvdXIgdGltZVxuICAgKiBAcGFyYW0ge251bWJlcn0gW21pbnV0ZT0wXSAtIFRoZSBtaW51dGUgb2YgdGhlIGhvdXIsIG1lYW5pbmcgYSBudW1iZXIgYmV0d2VlbiAwIGFuZCA1OVxuICAgKiBAcGFyYW0ge251bWJlcn0gW3NlY29uZD0wXSAtIFRoZSBzZWNvbmQgb2YgdGhlIG1pbnV0ZSwgbWVhbmluZyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDU5XG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbbWlsbGlzZWNvbmQ9MF0gLSBUaGUgbWlsbGlzZWNvbmQgb2YgdGhlIHNlY29uZCwgbWVhbmluZyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDk5OVxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIERhdGVUaW1lXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5sb2NhbGVdIC0gYSBsb2NhbGUgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLm91dHB1dENhbGVuZGFyXSAtIHRoZSBvdXRwdXQgY2FsZW5kYXIgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLm51bWJlcmluZ1N5c3RlbV0gLSB0aGUgbnVtYmVyaW5nIHN5c3RlbSB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL34+IG5vd1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMjAxNykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL34+IDIwMTctMDEtMDFUMDA6MDA6MDBaXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygyMDE3LCAzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vfj4gMjAxNy0wMy0wMVQwMDowMDowMFpcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDAwOjAwOjAwWlxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMjAxNywgMywgMTIsIDUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL34+IDIwMTctMDMtMTJUMDU6MDA6MDBaXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygyMDE3LCAzLCAxMiwgNSwgNDUpICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vfj4gMjAxNy0wMy0xMlQwNTo0NTowMFpcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyLCA1LCA0NSwgeyBsb2NhbGU6IFwiZnJcIiB9KSAgICAgICAgICAvL34+IDIwMTctMDMtMTJUMDU6NDU6MDBaIHdpdGggYSBGcmVuY2ggbG9jYWxlXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygyMDE3LCAzLCAxMiwgNSwgNDUsIDEwKSAgICAgICAgICAgICAgICAgICAgICAgIC8vfj4gMjAxNy0wMy0xMlQwNTo0NToxMFpcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyLCA1LCA0NSwgMTAsIDc2NSwgeyBsb2NhbGU6IFwiZnJcIiB9KSAvL34+IDIwMTctMDMtMTJUMDU6NDU6MTAuNzY1WiB3aXRoIGEgRnJlbmNoIGxvY2FsZVxuICAgKiBAcmV0dXJuIHtEYXRlVGltZX1cbiAgICovXG4gIHN0YXRpYyB1dGMoKSB7XG4gICAgY29uc3QgW29wdHMsIGFyZ3NdID0gbGFzdE9wdHMoYXJndW1lbnRzKSxcbiAgICAgIFt5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCwgbWlsbGlzZWNvbmRdID0gYXJncztcblxuICAgIG9wdHMuem9uZSA9IEZpeGVkT2Zmc2V0Wm9uZS51dGNJbnN0YW5jZTtcbiAgICByZXR1cm4gcXVpY2tEVCh7IHllYXIsIG1vbnRoLCBkYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWxsaXNlY29uZCB9LCBvcHRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGEgSmF2YVNjcmlwdCBEYXRlIG9iamVjdC4gVXNlcyB0aGUgZGVmYXVsdCB6b25lLlxuICAgKiBAcGFyYW0ge0RhdGV9IGRhdGUgLSBhIEphdmFTY3JpcHQgRGF0ZSBvYmplY3RcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBEYXRlVGltZVxuICAgKiBAcGFyYW0ge3N0cmluZ3xab25lfSBbb3B0aW9ucy56b25lPSdsb2NhbCddIC0gdGhlIHpvbmUgdG8gcGxhY2UgdGhlIERhdGVUaW1lIGludG9cbiAgICogQHJldHVybiB7RGF0ZVRpbWV9XG4gICAqL1xuICBzdGF0aWMgZnJvbUpTRGF0ZShkYXRlLCBvcHRpb25zID0ge30pIHtcbiAgICBjb25zdCB0cyA9IGlzRGF0ZShkYXRlKSA/IGRhdGUudmFsdWVPZigpIDogTmFOO1xuICAgIGlmIChOdW1iZXIuaXNOYU4odHMpKSB7XG4gICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZChcImludmFsaWQgaW5wdXRcIik7XG4gICAgfVxuXG4gICAgY29uc3Qgem9uZVRvVXNlID0gbm9ybWFsaXplWm9uZShvcHRpb25zLnpvbmUsIFNldHRpbmdzLmRlZmF1bHRab25lKTtcbiAgICBpZiAoIXpvbmVUb1VzZS5pc1ZhbGlkKSB7XG4gICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZCh1bnN1cHBvcnRlZFpvbmUoem9uZVRvVXNlKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBEYXRlVGltZSh7XG4gICAgICB0czogdHMsXG4gICAgICB6b25lOiB6b25lVG9Vc2UsXG4gICAgICBsb2M6IExvY2FsZS5mcm9tT2JqZWN0KG9wdGlvbnMpLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIERhdGVUaW1lIGZyb20gYSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHNpbmNlIHRoZSBlcG9jaCAobWVhbmluZyBzaW5jZSAxIEphbnVhcnkgMTk3MCAwMDowMDowMCBVVEMpLiBVc2VzIHRoZSBkZWZhdWx0IHpvbmUuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBtaWxsaXNlY29uZHMgLSBhIG51bWJlciBvZiBtaWxsaXNlY29uZHMgc2luY2UgMTk3MCBVVENcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBEYXRlVGltZVxuICAgKiBAcGFyYW0ge3N0cmluZ3xab25lfSBbb3B0aW9ucy56b25lPSdsb2NhbCddIC0gdGhlIHpvbmUgdG8gcGxhY2UgdGhlIERhdGVUaW1lIGludG9cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLmxvY2FsZV0gLSBhIGxvY2FsZSB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5vdXRwdXRDYWxlbmRhciAtIHRoZSBvdXRwdXQgY2FsZW5kYXIgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMubnVtYmVyaW5nU3lzdGVtIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0gdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2VcbiAgICogQHJldHVybiB7RGF0ZVRpbWV9XG4gICAqL1xuICBzdGF0aWMgZnJvbU1pbGxpcyhtaWxsaXNlY29uZHMsIG9wdGlvbnMgPSB7fSkge1xuICAgIGlmICghaXNOdW1iZXIobWlsbGlzZWNvbmRzKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKFxuICAgICAgICBgZnJvbU1pbGxpcyByZXF1aXJlcyBhIG51bWVyaWNhbCBpbnB1dCwgYnV0IHJlY2VpdmVkIGEgJHt0eXBlb2YgbWlsbGlzZWNvbmRzfSB3aXRoIHZhbHVlICR7bWlsbGlzZWNvbmRzfWBcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmIChtaWxsaXNlY29uZHMgPCAtTUFYX0RBVEUgfHwgbWlsbGlzZWNvbmRzID4gTUFYX0RBVEUpIHtcbiAgICAgIC8vIHRoaXMgaXNuJ3QgcGVyZmVjdCBiZWNhdXNlIGJlY2F1c2Ugd2UgY2FuIHN0aWxsIGVuZCB1cCBvdXQgb2YgcmFuZ2UgYmVjYXVzZSBvZiBhZGRpdGlvbmFsIHNoaWZ0aW5nLCBidXQgaXQncyBhIHN0YXJ0XG4gICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZChcIlRpbWVzdGFtcCBvdXQgb2YgcmFuZ2VcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBuZXcgRGF0ZVRpbWUoe1xuICAgICAgICB0czogbWlsbGlzZWNvbmRzLFxuICAgICAgICB6b25lOiBub3JtYWxpemVab25lKG9wdGlvbnMuem9uZSwgU2V0dGluZ3MuZGVmYXVsdFpvbmUpLFxuICAgICAgICBsb2M6IExvY2FsZS5mcm9tT2JqZWN0KG9wdGlvbnMpLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIERhdGVUaW1lIGZyb20gYSBudW1iZXIgb2Ygc2Vjb25kcyBzaW5jZSB0aGUgZXBvY2ggKG1lYW5pbmcgc2luY2UgMSBKYW51YXJ5IDE5NzAgMDA6MDA6MDAgVVRDKS4gVXNlcyB0aGUgZGVmYXVsdCB6b25lLlxuICAgKiBAcGFyYW0ge251bWJlcn0gc2Vjb25kcyAtIGEgbnVtYmVyIG9mIHNlY29uZHMgc2luY2UgMTk3MCBVVENcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBEYXRlVGltZVxuICAgKiBAcGFyYW0ge3N0cmluZ3xab25lfSBbb3B0aW9ucy56b25lPSdsb2NhbCddIC0gdGhlIHpvbmUgdG8gcGxhY2UgdGhlIERhdGVUaW1lIGludG9cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLmxvY2FsZV0gLSBhIGxvY2FsZSB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5vdXRwdXRDYWxlbmRhciAtIHRoZSBvdXRwdXQgY2FsZW5kYXIgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMubnVtYmVyaW5nU3lzdGVtIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0gdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2VcbiAgICogQHJldHVybiB7RGF0ZVRpbWV9XG4gICAqL1xuICBzdGF0aWMgZnJvbVNlY29uZHMoc2Vjb25kcywgb3B0aW9ucyA9IHt9KSB7XG4gICAgaWYgKCFpc051bWJlcihzZWNvbmRzKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKFwiZnJvbVNlY29uZHMgcmVxdWlyZXMgYSBudW1lcmljYWwgaW5wdXRcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBuZXcgRGF0ZVRpbWUoe1xuICAgICAgICB0czogc2Vjb25kcyAqIDEwMDAsXG4gICAgICAgIHpvbmU6IG5vcm1hbGl6ZVpvbmUob3B0aW9ucy56b25lLCBTZXR0aW5ncy5kZWZhdWx0Wm9uZSksXG4gICAgICAgIGxvYzogTG9jYWxlLmZyb21PYmplY3Qob3B0aW9ucyksXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgRGF0ZVRpbWUgZnJvbSBhIEphdmFTY3JpcHQgb2JqZWN0IHdpdGgga2V5cyBsaWtlICd5ZWFyJyBhbmQgJ2hvdXInIHdpdGggcmVhc29uYWJsZSBkZWZhdWx0cy5cbiAgICogQHBhcmFtIHtPYmplY3R9IG9iaiAtIHRoZSBvYmplY3QgdG8gY3JlYXRlIHRoZSBEYXRlVGltZSBmcm9tXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoueWVhciAtIGEgeWVhciwgc3VjaCBhcyAxOTg3XG4gICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoubW9udGggLSBhIG1vbnRoLCAxLTEyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBvYmouZGF5IC0gYSBkYXkgb2YgdGhlIG1vbnRoLCAxLTMxLCBkZXBlbmRpbmcgb24gdGhlIG1vbnRoXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoub3JkaW5hbCAtIGRheSBvZiB0aGUgeWVhciwgMS0zNjUgb3IgMzY2XG4gICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoud2Vla1llYXIgLSBhbiBJU08gd2VlayB5ZWFyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoud2Vla051bWJlciAtIGFuIElTTyB3ZWVrIG51bWJlciwgYmV0d2VlbiAxIGFuZCA1MiBvciA1MywgZGVwZW5kaW5nIG9uIHRoZSB5ZWFyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoud2Vla2RheSAtIGFuIElTTyB3ZWVrZGF5LCAxLTcsIHdoZXJlIDEgaXMgTW9uZGF5IGFuZCA3IGlzIFN1bmRheVxuICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLmhvdXIgLSBob3VyIG9mIHRoZSBkYXksIDAtMjNcbiAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5taW51dGUgLSBtaW51dGUgb2YgdGhlIGhvdXIsIDAtNTlcbiAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5zZWNvbmQgLSBzZWNvbmQgb2YgdGhlIG1pbnV0ZSwgMC01OVxuICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLm1pbGxpc2Vjb25kIC0gbWlsbGlzZWNvbmQgb2YgdGhlIHNlY29uZCwgMC05OTlcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIGZvciBjcmVhdGluZyB0aGlzIERhdGVUaW1lXG4gICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRzLnpvbmU9J2xvY2FsJ10gLSBpbnRlcnByZXQgdGhlIG51bWJlcnMgaW4gdGhlIGNvbnRleHQgb2YgYSBwYXJ0aWN1bGFyIHpvbmUuIENhbiB0YWtlIGFueSB2YWx1ZSB0YWtlbiBhcyB0aGUgZmlyc3QgYXJndW1lbnQgdG8gc2V0Wm9uZSgpXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGU9J3N5c3RlbSdzIGxvY2FsZSddIC0gYSBsb2NhbGUgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMub3V0cHV0Q2FsZW5kYXIgLSB0aGUgb3V0cHV0IGNhbGVuZGFyIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21PYmplY3QoeyB5ZWFyOiAxOTgyLCBtb250aDogNSwgZGF5OiAyNX0pLnRvSVNPRGF0ZSgpIC8vPT4gJzE5ODItMDUtMjUnXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21PYmplY3QoeyB5ZWFyOiAxOTgyIH0pLnRvSVNPRGF0ZSgpIC8vPT4gJzE5ODItMDEtMDEnXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21PYmplY3QoeyBob3VyOiAxMCwgbWludXRlOiAyNiwgc2Vjb25kOiA2IH0pIC8vfj4gdG9kYXkgYXQgMTA6MjY6MDZcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbU9iamVjdCh7IGhvdXI6IDEwLCBtaW51dGU6IDI2LCBzZWNvbmQ6IDYgfSwgeyB6b25lOiAndXRjJyB9KSxcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbU9iamVjdCh7IGhvdXI6IDEwLCBtaW51dGU6IDI2LCBzZWNvbmQ6IDYgfSwgeyB6b25lOiAnbG9jYWwnIH0pXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21PYmplY3QoeyBob3VyOiAxMCwgbWludXRlOiAyNiwgc2Vjb25kOiA2IH0sIHsgem9uZTogJ0FtZXJpY2EvTmV3X1lvcmsnIH0pXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21PYmplY3QoeyB3ZWVrWWVhcjogMjAxNiwgd2Vla051bWJlcjogMiwgd2Vla2RheTogMyB9KS50b0lTT0RhdGUoKSAvLz0+ICcyMDE2LTAxLTEzJ1xuICAgKiBAcmV0dXJuIHtEYXRlVGltZX1cbiAgICovXG4gIHN0YXRpYyBmcm9tT2JqZWN0KG9iaiwgb3B0cyA9IHt9KSB7XG4gICAgb2JqID0gb2JqIHx8IHt9O1xuICAgIGNvbnN0IHpvbmVUb1VzZSA9IG5vcm1hbGl6ZVpvbmUob3B0cy56b25lLCBTZXR0aW5ncy5kZWZhdWx0Wm9uZSk7XG4gICAgaWYgKCF6b25lVG9Vc2UuaXNWYWxpZCkge1xuICAgICAgcmV0dXJuIERhdGVUaW1lLmludmFsaWQodW5zdXBwb3J0ZWRab25lKHpvbmVUb1VzZSkpO1xuICAgIH1cblxuICAgIGNvbnN0IHRzTm93ID0gU2V0dGluZ3Mubm93KCksXG4gICAgICBvZmZzZXRQcm92aXMgPSAhaXNVbmRlZmluZWQob3B0cy5zcGVjaWZpY09mZnNldClcbiAgICAgICAgPyBvcHRzLnNwZWNpZmljT2Zmc2V0XG4gICAgICAgIDogem9uZVRvVXNlLm9mZnNldCh0c05vdyksXG4gICAgICBub3JtYWxpemVkID0gbm9ybWFsaXplT2JqZWN0KG9iaiwgbm9ybWFsaXplVW5pdCksXG4gICAgICBjb250YWluc09yZGluYWwgPSAhaXNVbmRlZmluZWQobm9ybWFsaXplZC5vcmRpbmFsKSxcbiAgICAgIGNvbnRhaW5zR3JlZ29yWWVhciA9ICFpc1VuZGVmaW5lZChub3JtYWxpemVkLnllYXIpLFxuICAgICAgY29udGFpbnNHcmVnb3JNRCA9ICFpc1VuZGVmaW5lZChub3JtYWxpemVkLm1vbnRoKSB8fCAhaXNVbmRlZmluZWQobm9ybWFsaXplZC5kYXkpLFxuICAgICAgY29udGFpbnNHcmVnb3IgPSBjb250YWluc0dyZWdvclllYXIgfHwgY29udGFpbnNHcmVnb3JNRCxcbiAgICAgIGRlZmluaXRlV2Vla0RlZiA9IG5vcm1hbGl6ZWQud2Vla1llYXIgfHwgbm9ybWFsaXplZC53ZWVrTnVtYmVyLFxuICAgICAgbG9jID0gTG9jYWxlLmZyb21PYmplY3Qob3B0cyk7XG5cbiAgICAvLyBjYXNlczpcbiAgICAvLyBqdXN0IGEgd2Vla2RheSAtPiB0aGlzIHdlZWsncyBpbnN0YW5jZSBvZiB0aGF0IHdlZWtkYXksIG5vIHdvcnJpZXNcbiAgICAvLyAoZ3JlZ29yaWFuIGRhdGEgb3Igb3JkaW5hbCkgKyAod2Vla1llYXIgb3Igd2Vla051bWJlcikgLT4gZXJyb3JcbiAgICAvLyAoZ3JlZ29yaWFuIG1vbnRoIG9yIGRheSkgKyBvcmRpbmFsIC0+IGVycm9yXG4gICAgLy8gb3RoZXJ3aXNlIGp1c3QgdXNlIHdlZWtzIG9yIG9yZGluYWxzIG9yIGdyZWdvcmlhbiwgZGVwZW5kaW5nIG9uIHdoYXQncyBzcGVjaWZpZWRcblxuICAgIGlmICgoY29udGFpbnNHcmVnb3IgfHwgY29udGFpbnNPcmRpbmFsKSAmJiBkZWZpbml0ZVdlZWtEZWYpIHtcbiAgICAgIHRocm93IG5ldyBDb25mbGljdGluZ1NwZWNpZmljYXRpb25FcnJvcihcbiAgICAgICAgXCJDYW4ndCBtaXggd2Vla1llYXIvd2Vla051bWJlciB1bml0cyB3aXRoIHllYXIvbW9udGgvZGF5IG9yIG9yZGluYWxzXCJcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKGNvbnRhaW5zR3JlZ29yTUQgJiYgY29udGFpbnNPcmRpbmFsKSB7XG4gICAgICB0aHJvdyBuZXcgQ29uZmxpY3RpbmdTcGVjaWZpY2F0aW9uRXJyb3IoXCJDYW4ndCBtaXggb3JkaW5hbCBkYXRlcyB3aXRoIG1vbnRoL2RheVwiKTtcbiAgICB9XG5cbiAgICBjb25zdCB1c2VXZWVrRGF0YSA9IGRlZmluaXRlV2Vla0RlZiB8fCAobm9ybWFsaXplZC53ZWVrZGF5ICYmICFjb250YWluc0dyZWdvcik7XG5cbiAgICAvLyBjb25maWd1cmUgb3Vyc2VsdmVzIHRvIGRlYWwgd2l0aCBncmVnb3JpYW4gZGF0ZXMgb3Igd2VlayBzdHVmZlxuICAgIGxldCB1bml0cyxcbiAgICAgIGRlZmF1bHRWYWx1ZXMsXG4gICAgICBvYmpOb3cgPSB0c1RvT2JqKHRzTm93LCBvZmZzZXRQcm92aXMpO1xuICAgIGlmICh1c2VXZWVrRGF0YSkge1xuICAgICAgdW5pdHMgPSBvcmRlcmVkV2Vla1VuaXRzO1xuICAgICAgZGVmYXVsdFZhbHVlcyA9IGRlZmF1bHRXZWVrVW5pdFZhbHVlcztcbiAgICAgIG9iak5vdyA9IGdyZWdvcmlhblRvV2VlayhvYmpOb3cpO1xuICAgIH0gZWxzZSBpZiAoY29udGFpbnNPcmRpbmFsKSB7XG4gICAgICB1bml0cyA9IG9yZGVyZWRPcmRpbmFsVW5pdHM7XG4gICAgICBkZWZhdWx0VmFsdWVzID0gZGVmYXVsdE9yZGluYWxVbml0VmFsdWVzO1xuICAgICAgb2JqTm93ID0gZ3JlZ29yaWFuVG9PcmRpbmFsKG9iak5vdyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHVuaXRzID0gb3JkZXJlZFVuaXRzO1xuICAgICAgZGVmYXVsdFZhbHVlcyA9IGRlZmF1bHRVbml0VmFsdWVzO1xuICAgIH1cblxuICAgIC8vIHNldCBkZWZhdWx0IHZhbHVlcyBmb3IgbWlzc2luZyBzdHVmZlxuICAgIGxldCBmb3VuZEZpcnN0ID0gZmFsc2U7XG4gICAgZm9yIChjb25zdCB1IG9mIHVuaXRzKSB7XG4gICAgICBjb25zdCB2ID0gbm9ybWFsaXplZFt1XTtcbiAgICAgIGlmICghaXNVbmRlZmluZWQodikpIHtcbiAgICAgICAgZm91bmRGaXJzdCA9IHRydWU7XG4gICAgICB9IGVsc2UgaWYgKGZvdW5kRmlyc3QpIHtcbiAgICAgICAgbm9ybWFsaXplZFt1XSA9IGRlZmF1bHRWYWx1ZXNbdV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBub3JtYWxpemVkW3VdID0gb2JqTm93W3VdO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIG1ha2Ugc3VyZSB0aGUgdmFsdWVzIHdlIGhhdmUgYXJlIGluIHJhbmdlXG4gICAgY29uc3QgaGlnaGVyT3JkZXJJbnZhbGlkID0gdXNlV2Vla0RhdGFcbiAgICAgICAgPyBoYXNJbnZhbGlkV2Vla0RhdGEobm9ybWFsaXplZClcbiAgICAgICAgOiBjb250YWluc09yZGluYWxcbiAgICAgICAgPyBoYXNJbnZhbGlkT3JkaW5hbERhdGEobm9ybWFsaXplZClcbiAgICAgICAgOiBoYXNJbnZhbGlkR3JlZ29yaWFuRGF0YShub3JtYWxpemVkKSxcbiAgICAgIGludmFsaWQgPSBoaWdoZXJPcmRlckludmFsaWQgfHwgaGFzSW52YWxpZFRpbWVEYXRhKG5vcm1hbGl6ZWQpO1xuXG4gICAgaWYgKGludmFsaWQpIHtcbiAgICAgIHJldHVybiBEYXRlVGltZS5pbnZhbGlkKGludmFsaWQpO1xuICAgIH1cblxuICAgIC8vIGNvbXB1dGUgdGhlIGFjdHVhbCB0aW1lXG4gICAgY29uc3QgZ3JlZ29yaWFuID0gdXNlV2Vla0RhdGFcbiAgICAgICAgPyB3ZWVrVG9HcmVnb3JpYW4obm9ybWFsaXplZClcbiAgICAgICAgOiBjb250YWluc09yZGluYWxcbiAgICAgICAgPyBvcmRpbmFsVG9HcmVnb3JpYW4obm9ybWFsaXplZClcbiAgICAgICAgOiBub3JtYWxpemVkLFxuICAgICAgW3RzRmluYWwsIG9mZnNldEZpbmFsXSA9IG9ialRvVFMoZ3JlZ29yaWFuLCBvZmZzZXRQcm92aXMsIHpvbmVUb1VzZSksXG4gICAgICBpbnN0ID0gbmV3IERhdGVUaW1lKHtcbiAgICAgICAgdHM6IHRzRmluYWwsXG4gICAgICAgIHpvbmU6IHpvbmVUb1VzZSxcbiAgICAgICAgbzogb2Zmc2V0RmluYWwsXG4gICAgICAgIGxvYyxcbiAgICAgIH0pO1xuXG4gICAgLy8gZ3JlZ29yaWFuIGRhdGEgKyB3ZWVrZGF5IHNlcnZlcyBvbmx5IHRvIHZhbGlkYXRlXG4gICAgaWYgKG5vcm1hbGl6ZWQud2Vla2RheSAmJiBjb250YWluc0dyZWdvciAmJiBvYmoud2Vla2RheSAhPT0gaW5zdC53ZWVrZGF5KSB7XG4gICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZChcbiAgICAgICAgXCJtaXNtYXRjaGVkIHdlZWtkYXlcIixcbiAgICAgICAgYHlvdSBjYW4ndCBzcGVjaWZ5IGJvdGggYSB3ZWVrZGF5IG9mICR7bm9ybWFsaXplZC53ZWVrZGF5fSBhbmQgYSBkYXRlIG9mICR7aW5zdC50b0lTTygpfWBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGluc3Q7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgRGF0ZVRpbWUgZnJvbSBhbiBJU08gODYwMSBzdHJpbmdcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSB0aGUgSVNPIHN0cmluZ1xuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgdG8gYWZmZWN0IHRoZSBjcmVhdGlvblxuICAgKiBAcGFyYW0ge3N0cmluZ3xab25lfSBbb3B0cy56b25lPSdsb2NhbCddIC0gdXNlIHRoaXMgem9uZSBpZiBubyBvZmZzZXQgaXMgc3BlY2lmaWVkIGluIHRoZSBpbnB1dCBzdHJpbmcgaXRzZWxmLiBXaWxsIGFsc28gY29udmVydCB0aGUgdGltZSB0byB0aGlzIHpvbmVcbiAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zZXRab25lPWZhbHNlXSAtIG92ZXJyaWRlIHRoZSB6b25lIHdpdGggYSBmaXhlZC1vZmZzZXQgem9uZSBzcGVjaWZpZWQgaW4gdGhlIHN0cmluZyBpdHNlbGYsIGlmIGl0IHNwZWNpZmllcyBvbmVcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT0nc3lzdGVtJ3MgbG9jYWxlJ10gLSBhIGxvY2FsZSB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMub3V0cHV0Q2FsZW5kYXJdIC0gdGhlIG91dHB1dCBjYWxlbmRhciB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubnVtYmVyaW5nU3lzdGVtXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21JU08oJzIwMTYtMDUtMjVUMDk6MDg6MzQuMTIzJylcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbUlTTygnMjAxNi0wNS0yNVQwOTowODozNC4xMjMrMDY6MDAnKVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tSVNPKCcyMDE2LTA1LTI1VDA5OjA4OjM0LjEyMyswNjowMCcsIHtzZXRab25lOiB0cnVlfSlcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbUlTTygnMjAxNi0wNS0yNVQwOTowODozNC4xMjMnLCB7em9uZTogJ3V0Yyd9KVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tSVNPKCcyMDE2LVcwNS00JylcbiAgICogQHJldHVybiB7RGF0ZVRpbWV9XG4gICAqL1xuICBzdGF0aWMgZnJvbUlTTyh0ZXh0LCBvcHRzID0ge30pIHtcbiAgICBjb25zdCBbdmFscywgcGFyc2VkWm9uZV0gPSBwYXJzZUlTT0RhdGUodGV4dCk7XG4gICAgcmV0dXJuIHBhcnNlRGF0YVRvRGF0ZVRpbWUodmFscywgcGFyc2VkWm9uZSwgb3B0cywgXCJJU08gODYwMVwiLCB0ZXh0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGFuIFJGQyAyODIyIHN0cmluZ1xuICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAtIHRoZSBSRkMgMjgyMiBzdHJpbmdcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRvIGFmZmVjdCB0aGUgY3JlYXRpb25cbiAgICogQHBhcmFtIHtzdHJpbmd8Wm9uZX0gW29wdHMuem9uZT0nbG9jYWwnXSAtIGNvbnZlcnQgdGhlIHRpbWUgdG8gdGhpcyB6b25lLiBTaW5jZSB0aGUgb2Zmc2V0IGlzIGFsd2F5cyBzcGVjaWZpZWQgaW4gdGhlIHN0cmluZyBpdHNlbGYsIHRoaXMgaGFzIG5vIGVmZmVjdCBvbiB0aGUgaW50ZXJwcmV0YXRpb24gb2Ygc3RyaW5nLCBtZXJlbHkgdGhlIHpvbmUgdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpcyBleHByZXNzZWQgaW4uXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuc2V0Wm9uZT1mYWxzZV0gLSBvdmVycmlkZSB0aGUgem9uZSB3aXRoIGEgZml4ZWQtb2Zmc2V0IHpvbmUgc3BlY2lmaWVkIGluIHRoZSBzdHJpbmcgaXRzZWxmLCBpZiBpdCBzcGVjaWZpZXMgb25lXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGU9J3N5c3RlbSdzIGxvY2FsZSddIC0gYSBsb2NhbGUgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMub3V0cHV0Q2FsZW5kYXIgLSB0aGUgb3V0cHV0IGNhbGVuZGFyIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21SRkMyODIyKCcyNSBOb3YgMjAxNiAxMzoyMzoxMiBHTVQnKVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tUkZDMjgyMignRnJpLCAyNSBOb3YgMjAxNiAxMzoyMzoxMiArMDYwMCcpXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21SRkMyODIyKCcyNSBOb3YgMjAxNiAxMzoyMyBaJylcbiAgICogQHJldHVybiB7RGF0ZVRpbWV9XG4gICAqL1xuICBzdGF0aWMgZnJvbVJGQzI4MjIodGV4dCwgb3B0cyA9IHt9KSB7XG4gICAgY29uc3QgW3ZhbHMsIHBhcnNlZFpvbmVdID0gcGFyc2VSRkMyODIyRGF0ZSh0ZXh0KTtcbiAgICByZXR1cm4gcGFyc2VEYXRhVG9EYXRlVGltZSh2YWxzLCBwYXJzZWRab25lLCBvcHRzLCBcIlJGQyAyODIyXCIsIHRleHQpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIERhdGVUaW1lIGZyb20gYW4gSFRUUCBoZWFkZXIgZGF0ZVxuICAgKiBAc2VlIGh0dHBzOi8vd3d3LnczLm9yZy9Qcm90b2NvbHMvcmZjMjYxNi9yZmMyNjE2LXNlYzMuaHRtbCNzZWMzLjMuMVxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAtIHRoZSBIVFRQIGhlYWRlciBkYXRlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucyB0byBhZmZlY3QgdGhlIGNyZWF0aW9uXG4gICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRzLnpvbmU9J2xvY2FsJ10gLSBjb252ZXJ0IHRoZSB0aW1lIHRvIHRoaXMgem9uZS4gU2luY2UgSFRUUCBkYXRlcyBhcmUgYWx3YXlzIGluIFVUQywgdGhpcyBoYXMgbm8gZWZmZWN0IG9uIHRoZSBpbnRlcnByZXRhdGlvbiBvZiBzdHJpbmcsIG1lcmVseSB0aGUgem9uZSB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGlzIGV4cHJlc3NlZCBpbi5cbiAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zZXRab25lPWZhbHNlXSAtIG92ZXJyaWRlIHRoZSB6b25lIHdpdGggdGhlIGZpeGVkLW9mZnNldCB6b25lIHNwZWNpZmllZCBpbiB0aGUgc3RyaW5nLiBGb3IgSFRUUCBkYXRlcywgdGhpcyBpcyBhbHdheXMgVVRDLCBzbyB0aGlzIG9wdGlvbiBpcyBlcXVpdmFsZW50IHRvIHNldHRpbmcgdGhlIGB6b25lYCBvcHRpb24gdG8gJ3V0YycsIGJ1dCB0aGlzIG9wdGlvbiBpcyBpbmNsdWRlZCBmb3IgY29uc2lzdGVuY3kgd2l0aCBzaW1pbGFyIG1ldGhvZHMuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGU9J3N5c3RlbSdzIGxvY2FsZSddIC0gYSBsb2NhbGUgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMub3V0cHV0Q2FsZW5kYXIgLSB0aGUgb3V0cHV0IGNhbGVuZGFyIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21IVFRQKCdTdW4sIDA2IE5vdiAxOTk0IDA4OjQ5OjM3IEdNVCcpXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21IVFRQKCdTdW5kYXksIDA2LU5vdi05NCAwODo0OTozNyBHTVQnKVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tSFRUUCgnU3VuIE5vdiAgNiAwODo0OTozNyAxOTk0JylcbiAgICogQHJldHVybiB7RGF0ZVRpbWV9XG4gICAqL1xuICBzdGF0aWMgZnJvbUhUVFAodGV4dCwgb3B0cyA9IHt9KSB7XG4gICAgY29uc3QgW3ZhbHMsIHBhcnNlZFpvbmVdID0gcGFyc2VIVFRQRGF0ZSh0ZXh0KTtcbiAgICByZXR1cm4gcGFyc2VEYXRhVG9EYXRlVGltZSh2YWxzLCBwYXJzZWRab25lLCBvcHRzLCBcIkhUVFBcIiwgb3B0cyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgRGF0ZVRpbWUgZnJvbSBhbiBpbnB1dCBzdHJpbmcgYW5kIGZvcm1hdCBzdHJpbmcuXG4gICAqIERlZmF1bHRzIHRvIGVuLVVTIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWQsIHJlZ2FyZGxlc3Mgb2YgdGhlIHN5c3RlbSdzIGxvY2FsZS4gRm9yIGEgdGFibGUgb2YgdG9rZW5zIGFuZCB0aGVpciBpbnRlcnByZXRhdGlvbnMsIHNlZSBbaGVyZV0oaHR0cHM6Ly9tb21lbnQuZ2l0aHViLmlvL2x1eG9uLyMvcGFyc2luZz9pZD10YWJsZS1vZi10b2tlbnMpLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAtIHRoZSBzdHJpbmcgdG8gcGFyc2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IGZtdCAtIHRoZSBmb3JtYXQgdGhlIHN0cmluZyBpcyBleHBlY3RlZCB0byBiZSBpbiAoc2VlIHRoZSBsaW5rIGJlbG93IGZvciB0aGUgZm9ybWF0cylcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRvIGFmZmVjdCB0aGUgY3JlYXRpb25cbiAgICogQHBhcmFtIHtzdHJpbmd8Wm9uZX0gW29wdHMuem9uZT0nbG9jYWwnXSAtIHVzZSB0aGlzIHpvbmUgaWYgbm8gb2Zmc2V0IGlzIHNwZWNpZmllZCBpbiB0aGUgaW5wdXQgc3RyaW5nIGl0c2VsZi4gV2lsbCBhbHNvIGNvbnZlcnQgdGhlIERhdGVUaW1lIHRvIHRoaXMgem9uZVxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLnNldFpvbmU9ZmFsc2VdIC0gb3ZlcnJpZGUgdGhlIHpvbmUgd2l0aCBhIHpvbmUgc3BlY2lmaWVkIGluIHRoZSBzdHJpbmcgaXRzZWxmLCBpZiBpdCBzcGVjaWZpZXMgb25lXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGU9J2VuLVVTJ10gLSBhIGxvY2FsZSBzdHJpbmcgdG8gdXNlIHdoZW4gcGFyc2luZy4gV2lsbCBhbHNvIHNldCB0aGUgRGF0ZVRpbWUgdG8gdGhpcyBsb2NhbGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMubnVtYmVyaW5nU3lzdGVtIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0gdG8gdXNlIHdoZW4gcGFyc2luZy4gV2lsbCBhbHNvIHNldCB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIHRvIHRoaXMgbnVtYmVyaW5nIHN5c3RlbVxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5vdXRwdXRDYWxlbmRhciAtIHRoZSBvdXRwdXQgY2FsZW5kYXIgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2VcbiAgICogQHJldHVybiB7RGF0ZVRpbWV9XG4gICAqL1xuICBzdGF0aWMgZnJvbUZvcm1hdCh0ZXh0LCBmbXQsIG9wdHMgPSB7fSkge1xuICAgIGlmIChpc1VuZGVmaW5lZCh0ZXh0KSB8fCBpc1VuZGVmaW5lZChmbXQpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoXCJmcm9tRm9ybWF0IHJlcXVpcmVzIGFuIGlucHV0IHN0cmluZyBhbmQgYSBmb3JtYXRcIik7XG4gICAgfVxuXG4gICAgY29uc3QgeyBsb2NhbGUgPSBudWxsLCBudW1iZXJpbmdTeXN0ZW0gPSBudWxsIH0gPSBvcHRzLFxuICAgICAgbG9jYWxlVG9Vc2UgPSBMb2NhbGUuZnJvbU9wdHMoe1xuICAgICAgICBsb2NhbGUsXG4gICAgICAgIG51bWJlcmluZ1N5c3RlbSxcbiAgICAgICAgZGVmYXVsdFRvRU46IHRydWUsXG4gICAgICB9KSxcbiAgICAgIFt2YWxzLCBwYXJzZWRab25lLCBzcGVjaWZpY09mZnNldCwgaW52YWxpZF0gPSBwYXJzZUZyb21Ub2tlbnMobG9jYWxlVG9Vc2UsIHRleHQsIGZtdCk7XG4gICAgaWYgKGludmFsaWQpIHtcbiAgICAgIHJldHVybiBEYXRlVGltZS5pbnZhbGlkKGludmFsaWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcGFyc2VEYXRhVG9EYXRlVGltZSh2YWxzLCBwYXJzZWRab25lLCBvcHRzLCBgZm9ybWF0ICR7Zm10fWAsIHRleHQsIHNwZWNpZmljT2Zmc2V0KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGZyb21Gb3JtYXQgaW5zdGVhZFxuICAgKi9cbiAgc3RhdGljIGZyb21TdHJpbmcodGV4dCwgZm10LCBvcHRzID0ge30pIHtcbiAgICByZXR1cm4gRGF0ZVRpbWUuZnJvbUZvcm1hdCh0ZXh0LCBmbXQsIG9wdHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIERhdGVUaW1lIGZyb20gYSBTUUwgZGF0ZSwgdGltZSwgb3IgZGF0ZXRpbWVcbiAgICogRGVmYXVsdHMgdG8gZW4tVVMgaWYgbm8gbG9jYWxlIGhhcyBiZWVuIHNwZWNpZmllZCwgcmVnYXJkbGVzcyBvZiB0aGUgc3lzdGVtJ3MgbG9jYWxlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IC0gdGhlIHN0cmluZyB0byBwYXJzZVxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgdG8gYWZmZWN0IHRoZSBjcmVhdGlvblxuICAgKiBAcGFyYW0ge3N0cmluZ3xab25lfSBbb3B0cy56b25lPSdsb2NhbCddIC0gdXNlIHRoaXMgem9uZSBpZiBubyBvZmZzZXQgaXMgc3BlY2lmaWVkIGluIHRoZSBpbnB1dCBzdHJpbmcgaXRzZWxmLiBXaWxsIGFsc28gY29udmVydCB0aGUgRGF0ZVRpbWUgdG8gdGhpcyB6b25lXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuc2V0Wm9uZT1mYWxzZV0gLSBvdmVycmlkZSB0aGUgem9uZSB3aXRoIGEgem9uZSBzcGVjaWZpZWQgaW4gdGhlIHN0cmluZyBpdHNlbGYsIGlmIGl0IHNwZWNpZmllcyBvbmVcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT0nZW4tVVMnXSAtIGEgbG9jYWxlIHN0cmluZyB0byB1c2Ugd2hlbiBwYXJzaW5nLiBXaWxsIGFsc28gc2V0IHRoZSBEYXRlVGltZSB0byB0aGlzIGxvY2FsZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5udW1iZXJpbmdTeXN0ZW0gLSB0aGUgbnVtYmVyaW5nIHN5c3RlbSB0byB1c2Ugd2hlbiBwYXJzaW5nLiBXaWxsIGFsc28gc2V0IHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgdG8gdGhpcyBudW1iZXJpbmcgc3lzdGVtXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm91dHB1dENhbGVuZGFyIC0gdGhlIG91dHB1dCBjYWxlbmRhciB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tU1FMKCcyMDE3LTA1LTE1JylcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVNRTCgnMjAxNy0wNS0xNSAwOToxMjozNCcpXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21TUUwoJzIwMTctMDUtMTUgMDk6MTI6MzQuMzQyJylcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVNRTCgnMjAxNy0wNS0xNSAwOToxMjozNC4zNDIrMDY6MDAnKVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tU1FMKCcyMDE3LTA1LTE1IDA5OjEyOjM0LjM0MiBBbWVyaWNhL0xvc19BbmdlbGVzJylcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVNRTCgnMjAxNy0wNS0xNSAwOToxMjozNC4zNDIgQW1lcmljYS9Mb3NfQW5nZWxlcycsIHsgc2V0Wm9uZTogdHJ1ZSB9KVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tU1FMKCcyMDE3LTA1LTE1IDA5OjEyOjM0LjM0MicsIHsgem9uZTogJ0FtZXJpY2EvTG9zX0FuZ2VsZXMnIH0pXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21TUUwoJzA5OjEyOjM0LjM0MicpXG4gICAqIEByZXR1cm4ge0RhdGVUaW1lfVxuICAgKi9cbiAgc3RhdGljIGZyb21TUUwodGV4dCwgb3B0cyA9IHt9KSB7XG4gICAgY29uc3QgW3ZhbHMsIHBhcnNlZFpvbmVdID0gcGFyc2VTUUwodGV4dCk7XG4gICAgcmV0dXJuIHBhcnNlRGF0YVRvRGF0ZVRpbWUodmFscywgcGFyc2VkWm9uZSwgb3B0cywgXCJTUUxcIiwgdGV4dCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGFuIGludmFsaWQgRGF0ZVRpbWUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSByZWFzb24gLSBzaW1wbGUgc3RyaW5nIG9mIHdoeSB0aGlzIERhdGVUaW1lIGlzIGludmFsaWQuIFNob3VsZCBub3QgY29udGFpbiBwYXJhbWV0ZXJzIG9yIGFueXRoaW5nIGVsc2UgZGF0YS1kZXBlbmRlbnRcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtleHBsYW5hdGlvbj1udWxsXSAtIGxvbmdlciBleHBsYW5hdGlvbiwgbWF5IGluY2x1ZGUgcGFyYW1ldGVycyBhbmQgb3RoZXIgdXNlZnVsIGRlYnVnZ2luZyBpbmZvcm1hdGlvblxuICAgKiBAcmV0dXJuIHtEYXRlVGltZX1cbiAgICovXG4gIHN0YXRpYyBpbnZhbGlkKHJlYXNvbiwgZXhwbGFuYXRpb24gPSBudWxsKSB7XG4gICAgaWYgKCFyZWFzb24pIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcihcIm5lZWQgdG8gc3BlY2lmeSBhIHJlYXNvbiB0aGUgRGF0ZVRpbWUgaXMgaW52YWxpZFwiKTtcbiAgICB9XG5cbiAgICBjb25zdCBpbnZhbGlkID0gcmVhc29uIGluc3RhbmNlb2YgSW52YWxpZCA/IHJlYXNvbiA6IG5ldyBJbnZhbGlkKHJlYXNvbiwgZXhwbGFuYXRpb24pO1xuXG4gICAgaWYgKFNldHRpbmdzLnRocm93T25JbnZhbGlkKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZERhdGVUaW1lRXJyb3IoaW52YWxpZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBuZXcgRGF0ZVRpbWUoeyBpbnZhbGlkIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhbiBvYmplY3QgaXMgYW4gaW5zdGFuY2Ugb2YgRGF0ZVRpbWUuIFdvcmtzIGFjcm9zcyBjb250ZXh0IGJvdW5kYXJpZXNcbiAgICogQHBhcmFtIHtvYmplY3R9IG9cbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICovXG4gIHN0YXRpYyBpc0RhdGVUaW1lKG8pIHtcbiAgICByZXR1cm4gKG8gJiYgby5pc0x1eG9uRGF0ZVRpbWUpIHx8IGZhbHNlO1xuICB9XG5cbiAgLy8gSU5GT1xuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHZhbHVlIG9mIHVuaXQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB1bml0IC0gYSB1bml0IHN1Y2ggYXMgJ21pbnV0ZScgb3IgJ2RheSdcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNywgNCkuZ2V0KCdtb250aCcpOyAvLz0+IDdcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNywgNCkuZ2V0KCdkYXknKTsgLy89PiA0XG4gICAqIEByZXR1cm4ge251bWJlcn1cbiAgICovXG4gIGdldCh1bml0KSB7XG4gICAgcmV0dXJuIHRoaXNbdW5pdF07XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB3aGV0aGVyIHRoZSBEYXRlVGltZSBpcyB2YWxpZC4gSW52YWxpZCBEYXRlVGltZXMgb2NjdXIgd2hlbjpcbiAgICogKiBUaGUgRGF0ZVRpbWUgd2FzIGNyZWF0ZWQgZnJvbSBpbnZhbGlkIGNhbGVuZGFyIGluZm9ybWF0aW9uLCBzdWNoIGFzIHRoZSAxM3RoIG1vbnRoIG9yIEZlYnJ1YXJ5IDMwXG4gICAqICogVGhlIERhdGVUaW1lIHdhcyBjcmVhdGVkIGJ5IGFuIG9wZXJhdGlvbiBvbiBhbm90aGVyIGludmFsaWQgZGF0ZVxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICovXG4gIGdldCBpc1ZhbGlkKCkge1xuICAgIHJldHVybiB0aGlzLmludmFsaWQgPT09IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBlcnJvciBjb2RlIGlmIHRoaXMgRGF0ZVRpbWUgaXMgaW52YWxpZCwgb3IgbnVsbCBpZiB0aGUgRGF0ZVRpbWUgaXMgdmFsaWRcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIGdldCBpbnZhbGlkUmVhc29uKCkge1xuICAgIHJldHVybiB0aGlzLmludmFsaWQgPyB0aGlzLmludmFsaWQucmVhc29uIDogbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIGV4cGxhbmF0aW9uIG9mIHdoeSB0aGlzIERhdGVUaW1lIGJlY2FtZSBpbnZhbGlkLCBvciBudWxsIGlmIHRoZSBEYXRlVGltZSBpcyB2YWxpZFxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKi9cbiAgZ2V0IGludmFsaWRFeHBsYW5hdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5pbnZhbGlkID8gdGhpcy5pbnZhbGlkLmV4cGxhbmF0aW9uIDogbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGxvY2FsZSBvZiBhIERhdGVUaW1lLCBzdWNoICdlbi1HQicuIFRoZSBsb2NhbGUgaXMgdXNlZCB3aGVuIGZvcm1hdHRpbmcgdGhlIERhdGVUaW1lXG4gICAqXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBnZXQgbG9jYWxlKCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmxvYy5sb2NhbGUgOiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgbnVtYmVyaW5nIHN5c3RlbSBvZiBhIERhdGVUaW1lLCBzdWNoICdiZW5nJy4gVGhlIG51bWJlcmluZyBzeXN0ZW0gaXMgdXNlZCB3aGVuIGZvcm1hdHRpbmcgdGhlIERhdGVUaW1lXG4gICAqXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBnZXQgbnVtYmVyaW5nU3lzdGVtKCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmxvYy5udW1iZXJpbmdTeXN0ZW0gOiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgb3V0cHV0IGNhbGVuZGFyIG9mIGEgRGF0ZVRpbWUsIHN1Y2ggJ2lzbGFtaWMnLiBUaGUgb3V0cHV0IGNhbGVuZGFyIGlzIHVzZWQgd2hlbiBmb3JtYXR0aW5nIHRoZSBEYXRlVGltZVxuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKi9cbiAgZ2V0IG91dHB1dENhbGVuZGFyKCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmxvYy5vdXRwdXRDYWxlbmRhciA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSB0aW1lIHpvbmUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgRGF0ZVRpbWUuXG4gICAqIEB0eXBlIHtab25lfVxuICAgKi9cbiAgZ2V0IHpvbmUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3pvbmU7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBuYW1lIG9mIHRoZSB0aW1lIHpvbmUuXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBnZXQgem9uZU5hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMuem9uZS5uYW1lIDogbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHllYXJcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUpLnllYXIgLy89PiAyMDE3XG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqL1xuICBnZXQgeWVhcigpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5jLnllYXIgOiBOYU47XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBxdWFydGVyXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS5xdWFydGVyIC8vPT4gMlxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKi9cbiAgZ2V0IHF1YXJ0ZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IE1hdGguY2VpbCh0aGlzLmMubW9udGggLyAzKSA6IE5hTjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIG1vbnRoICgxLTEyKS5cbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUpLm1vbnRoIC8vPT4gNVxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKi9cbiAgZ2V0IG1vbnRoKCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmMubW9udGggOiBOYU47XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBkYXkgb2YgdGhlIG1vbnRoICgxLTMwaXNoKS5cbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUpLmRheSAvLz0+IDI1XG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqL1xuICBnZXQgZGF5KCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmMuZGF5IDogTmFOO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgaG91ciBvZiB0aGUgZGF5ICgwLTIzKS5cbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUsIDkpLmhvdXIgLy89PiA5XG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqL1xuICBnZXQgaG91cigpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5jLmhvdXIgOiBOYU47XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBtaW51dGUgb2YgdGhlIGhvdXIgKDAtNTkpLlxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCA1LCAyNSwgOSwgMzApLm1pbnV0ZSAvLz0+IDMwXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqL1xuICBnZXQgbWludXRlKCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmMubWludXRlIDogTmFOO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgc2Vjb25kIG9mIHRoZSBtaW51dGUgKDAtNTkpLlxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCA1LCAyNSwgOSwgMzAsIDUyKS5zZWNvbmQgLy89PiA1MlxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKi9cbiAgZ2V0IHNlY29uZCgpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5jLnNlY29uZCA6IE5hTjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIG1pbGxpc2Vjb25kIG9mIHRoZSBzZWNvbmQgKDAtOTk5KS5cbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUsIDksIDMwLCA1MiwgNjU0KS5taWxsaXNlY29uZCAvLz0+IDY1NFxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKi9cbiAgZ2V0IG1pbGxpc2Vjb25kKCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmMubWlsbGlzZWNvbmQgOiBOYU47XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSB3ZWVrIHllYXJcbiAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDEyLCAzMSkud2Vla1llYXIgLy89PiAyMDE1XG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqL1xuICBnZXQgd2Vla1llYXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHBvc3NpYmx5Q2FjaGVkV2Vla0RhdGEodGhpcykud2Vla1llYXIgOiBOYU47XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSB3ZWVrIG51bWJlciBvZiB0aGUgd2VlayB5ZWFyICgxLTUyaXNoKS5cbiAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS53ZWVrTnVtYmVyIC8vPT4gMjFcbiAgICogQHR5cGUge251bWJlcn1cbiAgICovXG4gIGdldCB3ZWVrTnVtYmVyKCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBwb3NzaWJseUNhY2hlZFdlZWtEYXRhKHRoaXMpLndlZWtOdW1iZXIgOiBOYU47XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBkYXkgb2YgdGhlIHdlZWsuXG4gICAqIDEgaXMgTW9uZGF5IGFuZCA3IGlzIFN1bmRheVxuICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGVcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMTEsIDMxKS53ZWVrZGF5IC8vPT4gNFxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKi9cbiAgZ2V0IHdlZWtkYXkoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHBvc3NpYmx5Q2FjaGVkV2Vla0RhdGEodGhpcykud2Vla2RheSA6IE5hTjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIG9yZGluYWwgKG1lYW5pbmcgdGhlIGRheSBvZiB0aGUgeWVhcilcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUpLm9yZGluYWwgLy89PiAxNDVcbiAgICogQHR5cGUge251bWJlcnxEYXRlVGltZX1cbiAgICovXG4gIGdldCBvcmRpbmFsKCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBncmVnb3JpYW5Ub09yZGluYWwodGhpcy5jKS5vcmRpbmFsIDogTmFOO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgaHVtYW4gcmVhZGFibGUgc2hvcnQgbW9udGggbmFtZSwgc3VjaCBhcyAnT2N0Jy5cbiAgICogRGVmYXVsdHMgdG8gdGhlIHN5c3RlbSdzIGxvY2FsZSBpZiBubyBsb2NhbGUgaGFzIGJlZW4gc3BlY2lmaWVkXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDEwLCAzMCkubW9udGhTaG9ydCAvLz0+IE9jdFxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKi9cbiAgZ2V0IG1vbnRoU2hvcnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IEluZm8ubW9udGhzKFwic2hvcnRcIiwgeyBsb2NPYmo6IHRoaXMubG9jIH0pW3RoaXMubW9udGggLSAxXSA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBodW1hbiByZWFkYWJsZSBsb25nIG1vbnRoIG5hbWUsIHN1Y2ggYXMgJ09jdG9iZXInLlxuICAgKiBEZWZhdWx0cyB0byB0aGUgc3lzdGVtJ3MgbG9jYWxlIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWRcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgMTAsIDMwKS5tb250aExvbmcgLy89PiBPY3RvYmVyXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBnZXQgbW9udGhMb25nKCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBJbmZvLm1vbnRocyhcImxvbmdcIiwgeyBsb2NPYmo6IHRoaXMubG9jIH0pW3RoaXMubW9udGggLSAxXSA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBodW1hbiByZWFkYWJsZSBzaG9ydCB3ZWVrZGF5LCBzdWNoIGFzICdNb24nLlxuICAgKiBEZWZhdWx0cyB0byB0aGUgc3lzdGVtJ3MgbG9jYWxlIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWRcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgMTAsIDMwKS53ZWVrZGF5U2hvcnQgLy89PiBNb25cbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIGdldCB3ZWVrZGF5U2hvcnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IEluZm8ud2Vla2RheXMoXCJzaG9ydFwiLCB7IGxvY09iajogdGhpcy5sb2MgfSlbdGhpcy53ZWVrZGF5IC0gMV0gOiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgaHVtYW4gcmVhZGFibGUgbG9uZyB3ZWVrZGF5LCBzdWNoIGFzICdNb25kYXknLlxuICAgKiBEZWZhdWx0cyB0byB0aGUgc3lzdGVtJ3MgbG9jYWxlIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWRcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgMTAsIDMwKS53ZWVrZGF5TG9uZyAvLz0+IE1vbmRheVxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKi9cbiAgZ2V0IHdlZWtkYXlMb25nKCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBJbmZvLndlZWtkYXlzKFwibG9uZ1wiLCB7IGxvY09iajogdGhpcy5sb2MgfSlbdGhpcy53ZWVrZGF5IC0gMV0gOiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgVVRDIG9mZnNldCBvZiB0aGlzIERhdGVUaW1lIGluIG1pbnV0ZXNcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkub2Zmc2V0IC8vPT4gLTI0MFxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoKS5vZmZzZXQgLy89PiAwXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqL1xuICBnZXQgb2Zmc2V0KCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyArdGhpcy5vIDogTmFOO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgc2hvcnQgaHVtYW4gbmFtZSBmb3IgdGhlIHpvbmUncyBjdXJyZW50IG9mZnNldCwgZm9yIGV4YW1wbGUgXCJFU1RcIiBvciBcIkVEVFwiLlxuICAgKiBEZWZhdWx0cyB0byB0aGUgc3lzdGVtJ3MgbG9jYWxlIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWRcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIGdldCBvZmZzZXROYW1lU2hvcnQoKSB7XG4gICAgaWYgKHRoaXMuaXNWYWxpZCkge1xuICAgICAgcmV0dXJuIHRoaXMuem9uZS5vZmZzZXROYW1lKHRoaXMudHMsIHtcbiAgICAgICAgZm9ybWF0OiBcInNob3J0XCIsXG4gICAgICAgIGxvY2FsZTogdGhpcy5sb2NhbGUsXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgbG9uZyBodW1hbiBuYW1lIGZvciB0aGUgem9uZSdzIGN1cnJlbnQgb2Zmc2V0LCBmb3IgZXhhbXBsZSBcIkVhc3Rlcm4gU3RhbmRhcmQgVGltZVwiIG9yIFwiRWFzdGVybiBEYXlsaWdodCBUaW1lXCIuXG4gICAqIERlZmF1bHRzIHRvIHRoZSBzeXN0ZW0ncyBsb2NhbGUgaWYgbm8gbG9jYWxlIGhhcyBiZWVuIHNwZWNpZmllZFxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKi9cbiAgZ2V0IG9mZnNldE5hbWVMb25nKCkge1xuICAgIGlmICh0aGlzLmlzVmFsaWQpIHtcbiAgICAgIHJldHVybiB0aGlzLnpvbmUub2Zmc2V0TmFtZSh0aGlzLnRzLCB7XG4gICAgICAgIGZvcm1hdDogXCJsb25nXCIsXG4gICAgICAgIGxvY2FsZTogdGhpcy5sb2NhbGUsXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB3aGV0aGVyIHRoaXMgem9uZSdzIG9mZnNldCBldmVyIGNoYW5nZXMsIGFzIGluIGEgRFNULlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICovXG4gIGdldCBpc09mZnNldEZpeGVkKCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnpvbmUuaXNVbml2ZXJzYWwgOiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB3aGV0aGVyIHRoZSBEYXRlVGltZSBpcyBpbiBhIERTVC5cbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqL1xuICBnZXQgaXNJbkRTVCgpIHtcbiAgICBpZiAodGhpcy5pc09mZnNldEZpeGVkKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIHRoaXMub2Zmc2V0ID4gdGhpcy5zZXQoeyBtb250aDogMSwgZGF5OiAxIH0pLm9mZnNldCB8fFxuICAgICAgICB0aGlzLm9mZnNldCA+IHRoaXMuc2V0KHsgbW9udGg6IDUgfSkub2Zmc2V0XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRydWUgaWYgdGhpcyBEYXRlVGltZSBpcyBpbiBhIGxlYXAgeWVhciwgZmFsc2Ugb3RoZXJ3aXNlXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTYpLmlzSW5MZWFwWWVhciAvLz0+IHRydWVcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxMykuaXNJbkxlYXBZZWFyIC8vPT4gZmFsc2VcbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqL1xuICBnZXQgaXNJbkxlYXBZZWFyKCkge1xuICAgIHJldHVybiBpc0xlYXBZZWFyKHRoaXMueWVhcik7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIGRheXMgaW4gdGhpcyBEYXRlVGltZSdzIG1vbnRoXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTYsIDIpLmRheXNJbk1vbnRoIC8vPT4gMjlcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNiwgMykuZGF5c0luTW9udGggLy89PiAzMVxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKi9cbiAgZ2V0IGRheXNJbk1vbnRoKCkge1xuICAgIHJldHVybiBkYXlzSW5Nb250aCh0aGlzLnllYXIsIHRoaXMubW9udGgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIG51bWJlciBvZiBkYXlzIGluIHRoaXMgRGF0ZVRpbWUncyB5ZWFyXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTYpLmRheXNJblllYXIgLy89PiAzNjZcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxMykuZGF5c0luWWVhciAvLz0+IDM2NVxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKi9cbiAgZ2V0IGRheXNJblllYXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IGRheXNJblllYXIodGhpcy55ZWFyKSA6IE5hTjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2Ygd2Vla3MgaW4gdGhpcyBEYXRlVGltZSdzIHllYXJcbiAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMDQpLndlZWtzSW5XZWVrWWVhciAvLz0+IDUzXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTMpLndlZWtzSW5XZWVrWWVhciAvLz0+IDUyXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqL1xuICBnZXQgd2Vla3NJbldlZWtZZWFyKCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB3ZWVrc0luV2Vla1llYXIodGhpcy53ZWVrWWVhcikgOiBOYU47XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgcmVzb2x2ZWQgSW50bCBvcHRpb25zIGZvciB0aGlzIERhdGVUaW1lLlxuICAgKiBUaGlzIGlzIHVzZWZ1bCBpbiB1bmRlcnN0YW5kaW5nIHRoZSBiZWhhdmlvciBvZiBmb3JtYXR0aW5nIG1ldGhvZHNcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSB0aGUgc2FtZSBvcHRpb25zIGFzIHRvTG9jYWxlU3RyaW5nXG4gICAqIEByZXR1cm4ge09iamVjdH1cbiAgICovXG4gIHJlc29sdmVkTG9jYWxlT3B0aW9ucyhvcHRzID0ge30pIHtcbiAgICBjb25zdCB7IGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtLCBjYWxlbmRhciB9ID0gRm9ybWF0dGVyLmNyZWF0ZShcbiAgICAgIHRoaXMubG9jLmNsb25lKG9wdHMpLFxuICAgICAgb3B0c1xuICAgICkucmVzb2x2ZWRPcHRpb25zKHRoaXMpO1xuICAgIHJldHVybiB7IGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtLCBvdXRwdXRDYWxlbmRhcjogY2FsZW5kYXIgfTtcbiAgfVxuXG4gIC8vIFRSQU5TRk9STVxuXG4gIC8qKlxuICAgKiBcIlNldFwiIHRoZSBEYXRlVGltZSdzIHpvbmUgdG8gVVRDLiBSZXR1cm5zIGEgbmV3bHktY29uc3RydWN0ZWQgRGF0ZVRpbWUuXG4gICAqXG4gICAqIEVxdWl2YWxlbnQgdG8ge0BsaW5rIERhdGVUaW1lI3NldFpvbmV9KCd1dGMnKVxuICAgKiBAcGFyYW0ge251bWJlcn0gW29mZnNldD0wXSAtIG9wdGlvbmFsbHksIGFuIG9mZnNldCBmcm9tIFVUQyBpbiBtaW51dGVzXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0cz17fV0gLSBvcHRpb25zIHRvIHBhc3MgdG8gYHNldFpvbmUoKWBcbiAgICogQHJldHVybiB7RGF0ZVRpbWV9XG4gICAqL1xuICB0b1VUQyhvZmZzZXQgPSAwLCBvcHRzID0ge30pIHtcbiAgICByZXR1cm4gdGhpcy5zZXRab25lKEZpeGVkT2Zmc2V0Wm9uZS5pbnN0YW5jZShvZmZzZXQpLCBvcHRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBcIlNldFwiIHRoZSBEYXRlVGltZSdzIHpvbmUgdG8gdGhlIGhvc3QncyBsb2NhbCB6b25lLiBSZXR1cm5zIGEgbmV3bHktY29uc3RydWN0ZWQgRGF0ZVRpbWUuXG4gICAqXG4gICAqIEVxdWl2YWxlbnQgdG8gYHNldFpvbmUoJ2xvY2FsJylgXG4gICAqIEByZXR1cm4ge0RhdGVUaW1lfVxuICAgKi9cbiAgdG9Mb2NhbCgpIHtcbiAgICByZXR1cm4gdGhpcy5zZXRab25lKFNldHRpbmdzLmRlZmF1bHRab25lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBcIlNldFwiIHRoZSBEYXRlVGltZSdzIHpvbmUgdG8gc3BlY2lmaWVkIHpvbmUuIFJldHVybnMgYSBuZXdseS1jb25zdHJ1Y3RlZCBEYXRlVGltZS5cbiAgICpcbiAgICogQnkgZGVmYXVsdCwgdGhlIHNldHRlciBrZWVwcyB0aGUgdW5kZXJseWluZyB0aW1lIHRoZSBzYW1lIChhcyBpbiwgdGhlIHNhbWUgdGltZXN0YW1wKSwgYnV0IHRoZSBuZXcgaW5zdGFuY2Ugd2lsbCByZXBvcnQgZGlmZmVyZW50IGxvY2FsIHRpbWVzIGFuZCBjb25zaWRlciBEU1RzIHdoZW4gbWFraW5nIGNvbXB1dGF0aW9ucywgYXMgd2l0aCB7QGxpbmsgRGF0ZVRpbWUjcGx1c30uIFlvdSBtYXkgd2lzaCB0byB1c2Uge0BsaW5rIERhdGVUaW1lI3RvTG9jYWx9IGFuZCB7QGxpbmsgRGF0ZVRpbWUjdG9VVEN9IHdoaWNoIHByb3ZpZGUgc2ltcGxlIGNvbnZlbmllbmNlIHdyYXBwZXJzIGZvciBjb21tb25seSB1c2VkIHpvbmVzLlxuICAgKiBAcGFyYW0ge3N0cmluZ3xab25lfSBbem9uZT0nbG9jYWwnXSAtIGEgem9uZSBpZGVudGlmaWVyLiBBcyBhIHN0cmluZywgdGhhdCBjYW4gYmUgYW55IElBTkEgem9uZSBzdXBwb3J0ZWQgYnkgdGhlIGhvc3QgZW52aXJvbm1lbnQsIG9yIGEgZml4ZWQtb2Zmc2V0IG5hbWUgb2YgdGhlIGZvcm0gJ1VUQyszJywgb3IgdGhlIHN0cmluZ3MgJ2xvY2FsJyBvciAndXRjJy4gWW91IG1heSBhbHNvIHN1cHBseSBhbiBpbnN0YW5jZSBvZiBhIHtAbGluayBEYXRlVGltZSNab25lfSBjbGFzcy5cbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMua2VlcExvY2FsVGltZT1mYWxzZV0gLSBJZiB0cnVlLCBhZGp1c3QgdGhlIHVuZGVybHlpbmcgdGltZSBzbyB0aGF0IHRoZSBsb2NhbCB0aW1lIHN0YXlzIHRoZSBzYW1lLCBidXQgaW4gdGhlIHRhcmdldCB6b25lLiBZb3Ugc2hvdWxkIHJhcmVseSBuZWVkIHRoaXMuXG4gICAqIEByZXR1cm4ge0RhdGVUaW1lfVxuICAgKi9cbiAgc2V0Wm9uZSh6b25lLCB7IGtlZXBMb2NhbFRpbWUgPSBmYWxzZSwga2VlcENhbGVuZGFyVGltZSA9IGZhbHNlIH0gPSB7fSkge1xuICAgIHpvbmUgPSBub3JtYWxpemVab25lKHpvbmUsIFNldHRpbmdzLmRlZmF1bHRab25lKTtcbiAgICBpZiAoem9uZS5lcXVhbHModGhpcy56b25lKSkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSBlbHNlIGlmICghem9uZS5pc1ZhbGlkKSB7XG4gICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZCh1bnN1cHBvcnRlZFpvbmUoem9uZSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgbmV3VFMgPSB0aGlzLnRzO1xuICAgICAgaWYgKGtlZXBMb2NhbFRpbWUgfHwga2VlcENhbGVuZGFyVGltZSkge1xuICAgICAgICBjb25zdCBvZmZzZXRHdWVzcyA9IHpvbmUub2Zmc2V0KHRoaXMudHMpO1xuICAgICAgICBjb25zdCBhc09iaiA9IHRoaXMudG9PYmplY3QoKTtcbiAgICAgICAgW25ld1RTXSA9IG9ialRvVFMoYXNPYmosIG9mZnNldEd1ZXNzLCB6b25lKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjbG9uZSh0aGlzLCB7IHRzOiBuZXdUUywgem9uZSB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogXCJTZXRcIiB0aGUgbG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG9yIG91dHB1dENhbGVuZGFyLiBSZXR1cm5zIGEgbmV3bHktY29uc3RydWN0ZWQgRGF0ZVRpbWUuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wZXJ0aWVzIC0gdGhlIHByb3BlcnRpZXMgdG8gc2V0XG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS5yZWNvbmZpZ3VyZSh7IGxvY2FsZTogJ2VuLUdCJyB9KVxuICAgKiBAcmV0dXJuIHtEYXRlVGltZX1cbiAgICovXG4gIHJlY29uZmlndXJlKHsgbG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG91dHB1dENhbGVuZGFyIH0gPSB7fSkge1xuICAgIGNvbnN0IGxvYyA9IHRoaXMubG9jLmNsb25lKHsgbG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG91dHB1dENhbGVuZGFyIH0pO1xuICAgIHJldHVybiBjbG9uZSh0aGlzLCB7IGxvYyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBcIlNldFwiIHRoZSBsb2NhbGUuIFJldHVybnMgYSBuZXdseS1jb25zdHJ1Y3RlZCBEYXRlVGltZS5cbiAgICogSnVzdCBhIGNvbnZlbmllbnQgYWxpYXMgZm9yIHJlY29uZmlndXJlKHsgbG9jYWxlIH0pXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS5zZXRMb2NhbGUoJ2VuLUdCJylcbiAgICogQHJldHVybiB7RGF0ZVRpbWV9XG4gICAqL1xuICBzZXRMb2NhbGUobG9jYWxlKSB7XG4gICAgcmV0dXJuIHRoaXMucmVjb25maWd1cmUoeyBsb2NhbGUgfSk7XG4gIH1cblxuICAvKipcbiAgICogXCJTZXRcIiB0aGUgdmFsdWVzIG9mIHNwZWNpZmllZCB1bml0cy4gUmV0dXJucyBhIG5ld2x5LWNvbnN0cnVjdGVkIERhdGVUaW1lLlxuICAgKiBZb3UgY2FuIG9ubHkgc2V0IHVuaXRzIHdpdGggdGhpcyBtZXRob2Q7IGZvciBcInNldHRpbmdcIiBtZXRhZGF0YSwgc2VlIHtAbGluayBEYXRlVGltZSNyZWNvbmZpZ3VyZX0gYW5kIHtAbGluayBEYXRlVGltZSNzZXRab25lfS5cbiAgICogQHBhcmFtIHtPYmplY3R9IHZhbHVlcyAtIGEgbWFwcGluZyBvZiB1bml0cyB0byBudW1iZXJzXG4gICAqIEBleGFtcGxlIGR0LnNldCh7IHllYXI6IDIwMTcgfSlcbiAgICogQGV4YW1wbGUgZHQuc2V0KHsgaG91cjogOCwgbWludXRlOiAzMCB9KVxuICAgKiBAZXhhbXBsZSBkdC5zZXQoeyB3ZWVrZGF5OiA1IH0pXG4gICAqIEBleGFtcGxlIGR0LnNldCh7IHllYXI6IDIwMDUsIG9yZGluYWw6IDIzNCB9KVxuICAgKiBAcmV0dXJuIHtEYXRlVGltZX1cbiAgICovXG4gIHNldCh2YWx1ZXMpIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7XG5cbiAgICBjb25zdCBub3JtYWxpemVkID0gbm9ybWFsaXplT2JqZWN0KHZhbHVlcywgbm9ybWFsaXplVW5pdCksXG4gICAgICBzZXR0aW5nV2Vla1N0dWZmID1cbiAgICAgICAgIWlzVW5kZWZpbmVkKG5vcm1hbGl6ZWQud2Vla1llYXIpIHx8XG4gICAgICAgICFpc1VuZGVmaW5lZChub3JtYWxpemVkLndlZWtOdW1iZXIpIHx8XG4gICAgICAgICFpc1VuZGVmaW5lZChub3JtYWxpemVkLndlZWtkYXkpLFxuICAgICAgY29udGFpbnNPcmRpbmFsID0gIWlzVW5kZWZpbmVkKG5vcm1hbGl6ZWQub3JkaW5hbCksXG4gICAgICBjb250YWluc0dyZWdvclllYXIgPSAhaXNVbmRlZmluZWQobm9ybWFsaXplZC55ZWFyKSxcbiAgICAgIGNvbnRhaW5zR3JlZ29yTUQgPSAhaXNVbmRlZmluZWQobm9ybWFsaXplZC5tb250aCkgfHwgIWlzVW5kZWZpbmVkKG5vcm1hbGl6ZWQuZGF5KSxcbiAgICAgIGNvbnRhaW5zR3JlZ29yID0gY29udGFpbnNHcmVnb3JZZWFyIHx8IGNvbnRhaW5zR3JlZ29yTUQsXG4gICAgICBkZWZpbml0ZVdlZWtEZWYgPSBub3JtYWxpemVkLndlZWtZZWFyIHx8IG5vcm1hbGl6ZWQud2Vla051bWJlcjtcblxuICAgIGlmICgoY29udGFpbnNHcmVnb3IgfHwgY29udGFpbnNPcmRpbmFsKSAmJiBkZWZpbml0ZVdlZWtEZWYpIHtcbiAgICAgIHRocm93IG5ldyBDb25mbGljdGluZ1NwZWNpZmljYXRpb25FcnJvcihcbiAgICAgICAgXCJDYW4ndCBtaXggd2Vla1llYXIvd2Vla051bWJlciB1bml0cyB3aXRoIHllYXIvbW9udGgvZGF5IG9yIG9yZGluYWxzXCJcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKGNvbnRhaW5zR3JlZ29yTUQgJiYgY29udGFpbnNPcmRpbmFsKSB7XG4gICAgICB0aHJvdyBuZXcgQ29uZmxpY3RpbmdTcGVjaWZpY2F0aW9uRXJyb3IoXCJDYW4ndCBtaXggb3JkaW5hbCBkYXRlcyB3aXRoIG1vbnRoL2RheVwiKTtcbiAgICB9XG5cbiAgICBsZXQgbWl4ZWQ7XG4gICAgaWYgKHNldHRpbmdXZWVrU3R1ZmYpIHtcbiAgICAgIG1peGVkID0gd2Vla1RvR3JlZ29yaWFuKHsgLi4uZ3JlZ29yaWFuVG9XZWVrKHRoaXMuYyksIC4uLm5vcm1hbGl6ZWQgfSk7XG4gICAgfSBlbHNlIGlmICghaXNVbmRlZmluZWQobm9ybWFsaXplZC5vcmRpbmFsKSkge1xuICAgICAgbWl4ZWQgPSBvcmRpbmFsVG9HcmVnb3JpYW4oeyAuLi5ncmVnb3JpYW5Ub09yZGluYWwodGhpcy5jKSwgLi4ubm9ybWFsaXplZCB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgbWl4ZWQgPSB7IC4uLnRoaXMudG9PYmplY3QoKSwgLi4ubm9ybWFsaXplZCB9O1xuXG4gICAgICAvLyBpZiB3ZSBkaWRuJ3Qgc2V0IHRoZSBkYXkgYnV0IHdlIGVuZGVkIHVwIG9uIGFuIG92ZXJmbG93IGRhdGUsXG4gICAgICAvLyB1c2UgdGhlIGxhc3QgZGF5IG9mIHRoZSByaWdodCBtb250aFxuICAgICAgaWYgKGlzVW5kZWZpbmVkKG5vcm1hbGl6ZWQuZGF5KSkge1xuICAgICAgICBtaXhlZC5kYXkgPSBNYXRoLm1pbihkYXlzSW5Nb250aChtaXhlZC55ZWFyLCBtaXhlZC5tb250aCksIG1peGVkLmRheSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgW3RzLCBvXSA9IG9ialRvVFMobWl4ZWQsIHRoaXMubywgdGhpcy56b25lKTtcbiAgICByZXR1cm4gY2xvbmUodGhpcywgeyB0cywgbyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBwZXJpb2Qgb2YgdGltZSB0byB0aGlzIERhdGVUaW1lIGFuZCByZXR1cm4gdGhlIHJlc3VsdGluZyBEYXRlVGltZVxuICAgKlxuICAgKiBBZGRpbmcgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMsIG9yIG1pbGxpc2Vjb25kcyBpbmNyZWFzZXMgdGhlIHRpbWVzdGFtcCBieSB0aGUgcmlnaHQgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcy4gQWRkaW5nIGRheXMsIG1vbnRocywgb3IgeWVhcnMgc2hpZnRzIHRoZSBjYWxlbmRhciwgYWNjb3VudGluZyBmb3IgRFNUcyBhbmQgbGVhcCB5ZWFycyBhbG9uZyB0aGUgd2F5LiBUaHVzLCBgZHQucGx1cyh7IGhvdXJzOiAyNCB9KWAgbWF5IHJlc3VsdCBpbiBhIGRpZmZlcmVudCB0aW1lIHRoYW4gYGR0LnBsdXMoeyBkYXlzOiAxIH0pYCBpZiB0aGVyZSdzIGEgRFNUIHNoaWZ0IGluIGJldHdlZW4uXG4gICAqIEBwYXJhbSB7RHVyYXRpb258T2JqZWN0fG51bWJlcn0gZHVyYXRpb24gLSBUaGUgYW1vdW50IHRvIGFkZC4gRWl0aGVyIGEgTHV4b24gRHVyYXRpb24sIGEgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcywgdGhlIG9iamVjdCBhcmd1bWVudCB0byBEdXJhdGlvbi5mcm9tT2JqZWN0KClcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkucGx1cygxMjMpIC8vfj4gaW4gMTIzIG1pbGxpc2Vjb25kc1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5wbHVzKHsgbWludXRlczogMTUgfSkgLy9+PiBpbiAxNSBtaW51dGVzXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnBsdXMoeyBkYXlzOiAxIH0pIC8vfj4gdGhpcyB0aW1lIHRvbW9ycm93XG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnBsdXMoeyBkYXlzOiAtMSB9KSAvL34+IHRoaXMgdGltZSB5ZXN0ZXJkYXlcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkucGx1cyh7IGhvdXJzOiAzLCBtaW51dGVzOiAxMyB9KSAvL34+IGluIDMgaHIsIDEzIG1pblxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5wbHVzKER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMywgbWludXRlczogMTMgfSkpIC8vfj4gaW4gMyBociwgMTMgbWluXG4gICAqIEByZXR1cm4ge0RhdGVUaW1lfVxuICAgKi9cbiAgcGx1cyhkdXJhdGlvbikge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpcztcbiAgICBjb25zdCBkdXIgPSBEdXJhdGlvbi5mcm9tRHVyYXRpb25MaWtlKGR1cmF0aW9uKTtcbiAgICByZXR1cm4gY2xvbmUodGhpcywgYWRqdXN0VGltZSh0aGlzLCBkdXIpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdWJ0cmFjdCBhIHBlcmlvZCBvZiB0aW1lIHRvIHRoaXMgRGF0ZVRpbWUgYW5kIHJldHVybiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lXG4gICAqIFNlZSB7QGxpbmsgRGF0ZVRpbWUjcGx1c31cbiAgICogQHBhcmFtIHtEdXJhdGlvbnxPYmplY3R8bnVtYmVyfSBkdXJhdGlvbiAtIFRoZSBhbW91bnQgdG8gc3VidHJhY3QuIEVpdGhlciBhIEx1eG9uIER1cmF0aW9uLCBhIG51bWJlciBvZiBtaWxsaXNlY29uZHMsIHRoZSBvYmplY3QgYXJndW1lbnQgdG8gRHVyYXRpb24uZnJvbU9iamVjdCgpXG4gICBAcmV0dXJuIHtEYXRlVGltZX1cbiAgICovXG4gIG1pbnVzKGR1cmF0aW9uKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzO1xuICAgIGNvbnN0IGR1ciA9IER1cmF0aW9uLmZyb21EdXJhdGlvbkxpa2UoZHVyYXRpb24pLm5lZ2F0ZSgpO1xuICAgIHJldHVybiBjbG9uZSh0aGlzLCBhZGp1c3RUaW1lKHRoaXMsIGR1cikpO1xuICB9XG5cbiAgLyoqXG4gICAqIFwiU2V0XCIgdGhpcyBEYXRlVGltZSB0byB0aGUgYmVnaW5uaW5nIG9mIGEgdW5pdCBvZiB0aW1lLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdW5pdCAtIFRoZSB1bml0IHRvIGdvIHRvIHRoZSBiZWdpbm5pbmcgb2YuIENhbiBiZSAneWVhcicsICdxdWFydGVyJywgJ21vbnRoJywgJ3dlZWsnLCAnZGF5JywgJ2hvdXInLCAnbWludXRlJywgJ3NlY29uZCcsIG9yICdtaWxsaXNlY29uZCcuXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDMsIDMpLnN0YXJ0T2YoJ21vbnRoJykudG9JU09EYXRlKCk7IC8vPT4gJzIwMTQtMDMtMDEnXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDMsIDMpLnN0YXJ0T2YoJ3llYXInKS50b0lTT0RhdGUoKTsgLy89PiAnMjAxNC0wMS0wMSdcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMywgMykuc3RhcnRPZignd2VlaycpLnRvSVNPRGF0ZSgpOyAvLz0+ICcyMDE0LTAzLTAzJywgd2Vla3MgYWx3YXlzIHN0YXJ0IG9uIE1vbmRheXNcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMywgMywgNSwgMzApLnN0YXJ0T2YoJ2RheScpLnRvSVNPVGltZSgpOyAvLz0+ICcwMDowMC4wMDAtMDU6MDAnXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDMsIDMsIDUsIDMwKS5zdGFydE9mKCdob3VyJykudG9JU09UaW1lKCk7IC8vPT4gJzA1OjAwOjAwLjAwMC0wNTowMCdcbiAgICogQHJldHVybiB7RGF0ZVRpbWV9XG4gICAqL1xuICBzdGFydE9mKHVuaXQpIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7XG4gICAgY29uc3QgbyA9IHt9LFxuICAgICAgbm9ybWFsaXplZFVuaXQgPSBEdXJhdGlvbi5ub3JtYWxpemVVbml0KHVuaXQpO1xuICAgIHN3aXRjaCAobm9ybWFsaXplZFVuaXQpIHtcbiAgICAgIGNhc2UgXCJ5ZWFyc1wiOlxuICAgICAgICBvLm1vbnRoID0gMTtcbiAgICAgIC8vIGZhbGxzIHRocm91Z2hcbiAgICAgIGNhc2UgXCJxdWFydGVyc1wiOlxuICAgICAgY2FzZSBcIm1vbnRoc1wiOlxuICAgICAgICBvLmRheSA9IDE7XG4gICAgICAvLyBmYWxscyB0aHJvdWdoXG4gICAgICBjYXNlIFwid2Vla3NcIjpcbiAgICAgIGNhc2UgXCJkYXlzXCI6XG4gICAgICAgIG8uaG91ciA9IDA7XG4gICAgICAvLyBmYWxscyB0aHJvdWdoXG4gICAgICBjYXNlIFwiaG91cnNcIjpcbiAgICAgICAgby5taW51dGUgPSAwO1xuICAgICAgLy8gZmFsbHMgdGhyb3VnaFxuICAgICAgY2FzZSBcIm1pbnV0ZXNcIjpcbiAgICAgICAgby5zZWNvbmQgPSAwO1xuICAgICAgLy8gZmFsbHMgdGhyb3VnaFxuICAgICAgY2FzZSBcInNlY29uZHNcIjpcbiAgICAgICAgby5taWxsaXNlY29uZCA9IDA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIm1pbGxpc2Vjb25kc1wiOlxuICAgICAgICBicmVhaztcbiAgICAgIC8vIG5vIGRlZmF1bHQsIGludmFsaWQgdW5pdHMgdGhyb3cgaW4gbm9ybWFsaXplVW5pdCgpXG4gICAgfVxuXG4gICAgaWYgKG5vcm1hbGl6ZWRVbml0ID09PSBcIndlZWtzXCIpIHtcbiAgICAgIG8ud2Vla2RheSA9IDE7XG4gICAgfVxuXG4gICAgaWYgKG5vcm1hbGl6ZWRVbml0ID09PSBcInF1YXJ0ZXJzXCIpIHtcbiAgICAgIGNvbnN0IHEgPSBNYXRoLmNlaWwodGhpcy5tb250aCAvIDMpO1xuICAgICAgby5tb250aCA9IChxIC0gMSkgKiAzICsgMTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zZXQobyk7XG4gIH1cblxuICAvKipcbiAgICogXCJTZXRcIiB0aGlzIERhdGVUaW1lIHRvIHRoZSBlbmQgKG1lYW5pbmcgdGhlIGxhc3QgbWlsbGlzZWNvbmQpIG9mIGEgdW5pdCBvZiB0aW1lXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB1bml0IC0gVGhlIHVuaXQgdG8gZ28gdG8gdGhlIGVuZCBvZi4gQ2FuIGJlICd5ZWFyJywgJ3F1YXJ0ZXInLCAnbW9udGgnLCAnd2VlaycsICdkYXknLCAnaG91cicsICdtaW51dGUnLCAnc2Vjb25kJywgb3IgJ21pbGxpc2Vjb25kJy5cbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMywgMykuZW5kT2YoJ21vbnRoJykudG9JU08oKTsgLy89PiAnMjAxNC0wMy0zMVQyMzo1OTo1OS45OTktMDU6MDAnXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDMsIDMpLmVuZE9mKCd5ZWFyJykudG9JU08oKTsgLy89PiAnMjAxNC0xMi0zMVQyMzo1OTo1OS45OTktMDU6MDAnXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDMsIDMpLmVuZE9mKCd3ZWVrJykudG9JU08oKTsgLy8gPT4gJzIwMTQtMDMtMDlUMjM6NTk6NTkuOTk5LTA1OjAwJywgd2Vla3Mgc3RhcnQgb24gTW9uZGF5c1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAzLCAzLCA1LCAzMCkuZW5kT2YoJ2RheScpLnRvSVNPKCk7IC8vPT4gJzIwMTQtMDMtMDNUMjM6NTk6NTkuOTk5LTA1OjAwJ1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAzLCAzLCA1LCAzMCkuZW5kT2YoJ2hvdXInKS50b0lTTygpOyAvLz0+ICcyMDE0LTAzLTAzVDA1OjU5OjU5Ljk5OS0wNTowMCdcbiAgICogQHJldHVybiB7RGF0ZVRpbWV9XG4gICAqL1xuICBlbmRPZih1bml0KSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZFxuICAgICAgPyB0aGlzLnBsdXMoeyBbdW5pdF06IDEgfSlcbiAgICAgICAgICAuc3RhcnRPZih1bml0KVxuICAgICAgICAgIC5taW51cygxKVxuICAgICAgOiB0aGlzO1xuICB9XG5cbiAgLy8gT1VUUFVUXG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZSBmb3JtYXR0ZWQgYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQgZm9ybWF0IHN0cmluZy5cbiAgICogKipZb3UgbWF5IG5vdCB3YW50IHRoaXMuKiogU2VlIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9yIGEgbW9yZSBmbGV4aWJsZSBmb3JtYXR0aW5nIHRvb2wuIEZvciBhIHRhYmxlIG9mIHRva2VucyBhbmQgdGhlaXIgaW50ZXJwcmV0YXRpb25zLCBzZWUgW2hlcmVdKGh0dHBzOi8vbW9tZW50LmdpdGh1Yi5pby9sdXhvbi8jL2Zvcm1hdHRpbmc/aWQ9dGFibGUtb2YtdG9rZW5zKS5cbiAgICogRGVmYXVsdHMgdG8gZW4tVVMgaWYgbm8gbG9jYWxlIGhhcyBiZWVuIHNwZWNpZmllZCwgcmVnYXJkbGVzcyBvZiB0aGUgc3lzdGVtJ3MgbG9jYWxlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZm10IC0gdGhlIGZvcm1hdCBzdHJpbmdcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRzIHRvIG92ZXJyaWRlIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgb24gdGhpcyBEYXRlVGltZVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0Zvcm1hdCgneXl5eSBMTEwgZGQnKSAvLz0+ICcyMDE3IEFwciAyMidcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkuc2V0TG9jYWxlKCdmcicpLnRvRm9ybWF0KCd5eXl5IExMTCBkZCcpIC8vPT4gJzIwMTcgYXZyLiAyMidcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9Gb3JtYXQoJ3l5eXkgTExMIGRkJywgeyBsb2NhbGU6IFwiZnJcIiB9KSAvLz0+ICcyMDE3IGF2ci4gMjInXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvRm9ybWF0KFwiSEggJ2hvdXJzIGFuZCcgbW0gJ21pbnV0ZXMnXCIpIC8vPT4gJzIwIGhvdXJzIGFuZCA1NSBtaW51dGVzJ1xuICAgKiBAcmV0dXJuIHtzdHJpbmd9XG4gICAqL1xuICB0b0Zvcm1hdChmbXQsIG9wdHMgPSB7fSkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWRcbiAgICAgID8gRm9ybWF0dGVyLmNyZWF0ZSh0aGlzLmxvYy5yZWRlZmF1bHRUb0VOKG9wdHMpKS5mb3JtYXREYXRlVGltZUZyb21TdHJpbmcodGhpcywgZm10KVxuICAgICAgOiBJTlZBTElEO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBsb2NhbGl6ZWQgc3RyaW5nIHJlcHJlc2VudGluZyB0aGlzIGRhdGUuIEFjY2VwdHMgdGhlIHNhbWUgb3B0aW9ucyBhcyB0aGUgSW50bC5EYXRlVGltZUZvcm1hdCBjb25zdHJ1Y3RvciBhbmQgYW55IHByZXNldHMgZGVmaW5lZCBieSBMdXhvbiwgc3VjaCBhcyBgRGF0ZVRpbWUuREFURV9GVUxMYCBvciBgRGF0ZVRpbWUuVElNRV9TSU1QTEVgLlxuICAgKiBUaGUgZXhhY3QgYmVoYXZpb3Igb2YgdGhpcyBtZXRob2QgaXMgYnJvd3Nlci1zcGVjaWZpYywgYnV0IGluIGdlbmVyYWwgaXQgd2lsbCByZXR1cm4gYW4gYXBwcm9wcmlhdGUgcmVwcmVzZW50YXRpb25cbiAgICogb2YgdGhlIERhdGVUaW1lIGluIHRoZSBhc3NpZ25lZCBsb2NhbGUuXG4gICAqIERlZmF1bHRzIHRvIHRoZSBzeXN0ZW0ncyBsb2NhbGUgaWYgbm8gbG9jYWxlIGhhcyBiZWVuIHNwZWNpZmllZFxuICAgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0RhdGVUaW1lRm9ybWF0XG4gICAqIEBwYXJhbSBmb3JtYXRPcHRzIHtPYmplY3R9IC0gSW50bC5EYXRlVGltZUZvcm1hdCBjb25zdHJ1Y3RvciBvcHRpb25zIGFuZCBjb25maWd1cmF0aW9uIG9wdGlvbnNcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRzIHRvIG92ZXJyaWRlIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgb24gdGhpcyBEYXRlVGltZVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0xvY2FsZVN0cmluZygpOyAvLz0+IDQvMjAvMjAxN1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5zZXRMb2NhbGUoJ2VuLWdiJykudG9Mb2NhbGVTdHJpbmcoKTsgLy89PiAnMjAvMDQvMjAxNydcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9Mb2NhbGVTdHJpbmcoeyBsb2NhbGU6ICdlbi1nYicgfSk7IC8vPT4gJzIwLzA0LzIwMTcnXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvTG9jYWxlU3RyaW5nKERhdGVUaW1lLkRBVEVfRlVMTCk7IC8vPT4gJ0FwcmlsIDIwLCAyMDE3J1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0xvY2FsZVN0cmluZyhEYXRlVGltZS5USU1FX1NJTVBMRSk7IC8vPT4gJzExOjMyIEFNJ1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0xvY2FsZVN0cmluZyhEYXRlVGltZS5EQVRFVElNRV9TSE9SVCk7IC8vPT4gJzQvMjAvMjAxNywgMTE6MzIgQU0nXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvTG9jYWxlU3RyaW5nKHsgd2Vla2RheTogJ2xvbmcnLCBtb250aDogJ2xvbmcnLCBkYXk6ICcyLWRpZ2l0JyB9KTsgLy89PiAnVGh1cnNkYXksIEFwcmlsIDIwJ1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0xvY2FsZVN0cmluZyh7IHdlZWtkYXk6ICdzaG9ydCcsIG1vbnRoOiAnc2hvcnQnLCBkYXk6ICcyLWRpZ2l0JywgaG91cjogJzItZGlnaXQnLCBtaW51dGU6ICcyLWRpZ2l0JyB9KTsgLy89PiAnVGh1LCBBcHIgMjAsIDExOjI3IEFNJ1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0xvY2FsZVN0cmluZyh7IGhvdXI6ICcyLWRpZ2l0JywgbWludXRlOiAnMi1kaWdpdCcsIGhvdXJDeWNsZTogJ2gyMycgfSk7IC8vPT4gJzExOjMyJ1xuICAgKiBAcmV0dXJuIHtzdHJpbmd9XG4gICAqL1xuICB0b0xvY2FsZVN0cmluZyhmb3JtYXRPcHRzID0gRm9ybWF0cy5EQVRFX1NIT1JULCBvcHRzID0ge30pIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkXG4gICAgICA/IEZvcm1hdHRlci5jcmVhdGUodGhpcy5sb2MuY2xvbmUob3B0cyksIGZvcm1hdE9wdHMpLmZvcm1hdERhdGVUaW1lKHRoaXMpXG4gICAgICA6IElOVkFMSUQ7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBhcnJheSBvZiBmb3JtYXQgXCJwYXJ0c1wiLCBtZWFuaW5nIGluZGl2aWR1YWwgdG9rZW5zIGFsb25nIHdpdGggbWV0YWRhdGEuIFRoaXMgaXMgYWxsb3dzIGNhbGxlcnMgdG8gcG9zdC1wcm9jZXNzIGluZGl2aWR1YWwgc2VjdGlvbnMgb2YgdGhlIGZvcm1hdHRlZCBvdXRwdXQuXG4gICAqIERlZmF1bHRzIHRvIHRoZSBzeXN0ZW0ncyBsb2NhbGUgaWYgbm8gbG9jYWxlIGhhcyBiZWVuIHNwZWNpZmllZFxuICAgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0RhdGVUaW1lRm9ybWF0L2Zvcm1hdFRvUGFydHNcbiAgICogQHBhcmFtIG9wdHMge09iamVjdH0gLSBJbnRsLkRhdGVUaW1lRm9ybWF0IGNvbnN0cnVjdG9yIG9wdGlvbnMsIHNhbWUgYXMgYHRvTG9jYWxlU3RyaW5nYC5cbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9Mb2NhbGVQYXJ0cygpOyAvLz0+IFtcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vPT4gICB7IHR5cGU6ICdkYXknLCB2YWx1ZTogJzI1JyB9LFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy89PiAgIHsgdHlwZTogJ2xpdGVyYWwnLCB2YWx1ZTogJy8nIH0sXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLz0+ICAgeyB0eXBlOiAnbW9udGgnLCB2YWx1ZTogJzA1JyB9LFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy89PiAgIHsgdHlwZTogJ2xpdGVyYWwnLCB2YWx1ZTogJy8nIH0sXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLz0+ICAgeyB0eXBlOiAneWVhcicsIHZhbHVlOiAnMTk4MicgfVxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy89PiBdXG4gICAqL1xuICB0b0xvY2FsZVBhcnRzKG9wdHMgPSB7fSkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWRcbiAgICAgID8gRm9ybWF0dGVyLmNyZWF0ZSh0aGlzLmxvYy5jbG9uZShvcHRzKSwgb3B0cykuZm9ybWF0RGF0ZVRpbWVQYXJ0cyh0aGlzKVxuICAgICAgOiBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIElTTyA4NjAxLWNvbXBsaWFudCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZVxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnNcbiAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zdXBwcmVzc01pbGxpc2Vjb25kcz1mYWxzZV0gLSBleGNsdWRlIG1pbGxpc2Vjb25kcyBmcm9tIHRoZSBmb3JtYXQgaWYgdGhleSdyZSAwXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuc3VwcHJlc3NTZWNvbmRzPWZhbHNlXSAtIGV4Y2x1ZGUgc2Vjb25kcyBmcm9tIHRoZSBmb3JtYXQgaWYgdGhleSdyZSAwXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuaW5jbHVkZU9mZnNldD10cnVlXSAtIGluY2x1ZGUgdGhlIG9mZnNldCwgc3VjaCBhcyAnWicgb3IgJy0wNDowMCdcbiAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5leHRlbmRlZFpvbmU9dHJ1ZV0gLSBhZGQgdGhlIHRpbWUgem9uZSBmb3JtYXQgZXh0ZW5zaW9uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5mb3JtYXQ9J2V4dGVuZGVkJ10gLSBjaG9vc2UgYmV0d2VlbiB0aGUgYmFzaWMgYW5kIGV4dGVuZGVkIGZvcm1hdFxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMTk4MywgNSwgMjUpLnRvSVNPKCkgLy89PiAnMTk4Mi0wNS0yNVQwMDowMDowMC4wMDBaJ1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0lTTygpIC8vPT4gJzIwMTctMDQtMjJUMjA6NDc6MDUuMzM1LTA0OjAwJ1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0lTTyh7IGluY2x1ZGVPZmZzZXQ6IGZhbHNlIH0pIC8vPT4gJzIwMTctMDQtMjJUMjA6NDc6MDUuMzM1J1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0lTTyh7IGZvcm1hdDogJ2Jhc2ljJyB9KSAvLz0+ICcyMDE3MDQyMlQyMDQ3MDUuMzM1LTA0MDAnXG4gICAqIEByZXR1cm4ge3N0cmluZ31cbiAgICovXG4gIHRvSVNPKHtcbiAgICBmb3JtYXQgPSBcImV4dGVuZGVkXCIsXG4gICAgc3VwcHJlc3NTZWNvbmRzID0gZmFsc2UsXG4gICAgc3VwcHJlc3NNaWxsaXNlY29uZHMgPSBmYWxzZSxcbiAgICBpbmNsdWRlT2Zmc2V0ID0gdHJ1ZSxcbiAgICBleHRlbmRlZFpvbmUgPSBmYWxzZSxcbiAgfSA9IHt9KSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGV4dCA9IGZvcm1hdCA9PT0gXCJleHRlbmRlZFwiO1xuXG4gICAgbGV0IGMgPSB0b0lTT0RhdGUodGhpcywgZXh0KTtcbiAgICBjICs9IFwiVFwiO1xuICAgIGMgKz0gdG9JU09UaW1lKHRoaXMsIGV4dCwgc3VwcHJlc3NTZWNvbmRzLCBzdXBwcmVzc01pbGxpc2Vjb25kcywgaW5jbHVkZU9mZnNldCwgZXh0ZW5kZWRab25lKTtcbiAgICByZXR1cm4gYztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIElTTyA4NjAxLWNvbXBsaWFudCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZSdzIGRhdGUgY29tcG9uZW50XG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9uc1xuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuZm9ybWF0PSdleHRlbmRlZCddIC0gY2hvb3NlIGJldHdlZW4gdGhlIGJhc2ljIGFuZCBleHRlbmRlZCBmb3JtYXRcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDE5ODIsIDUsIDI1KS50b0lTT0RhdGUoKSAvLz0+ICcxOTgyLTA1LTI1J1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMTk4MiwgNSwgMjUpLnRvSVNPRGF0ZSh7IGZvcm1hdDogJ2Jhc2ljJyB9KSAvLz0+ICcxOTgyMDUyNSdcbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgdG9JU09EYXRlKHsgZm9ybWF0ID0gXCJleHRlbmRlZFwiIH0gPSB7fSkge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gdG9JU09EYXRlKHRoaXMsIGZvcm1hdCA9PT0gXCJleHRlbmRlZFwiKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIElTTyA4NjAxLWNvbXBsaWFudCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZSdzIHdlZWsgZGF0ZVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMTk4MiwgNSwgMjUpLnRvSVNPV2Vla0RhdGUoKSAvLz0+ICcxOTgyLVcyMS0yJ1xuICAgKiBAcmV0dXJuIHtzdHJpbmd9XG4gICAqL1xuICB0b0lTT1dlZWtEYXRlKCkge1xuICAgIHJldHVybiB0b1RlY2hGb3JtYXQodGhpcywgXCJra2trLSdXJ1dXLWNcIik7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBJU08gODYwMS1jb21wbGlhbnQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRGF0ZVRpbWUncyB0aW1lIGNvbXBvbmVudFxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnNcbiAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zdXBwcmVzc01pbGxpc2Vjb25kcz1mYWxzZV0gLSBleGNsdWRlIG1pbGxpc2Vjb25kcyBmcm9tIHRoZSBmb3JtYXQgaWYgdGhleSdyZSAwXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuc3VwcHJlc3NTZWNvbmRzPWZhbHNlXSAtIGV4Y2x1ZGUgc2Vjb25kcyBmcm9tIHRoZSBmb3JtYXQgaWYgdGhleSdyZSAwXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuaW5jbHVkZU9mZnNldD10cnVlXSAtIGluY2x1ZGUgdGhlIG9mZnNldCwgc3VjaCBhcyAnWicgb3IgJy0wNDowMCdcbiAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5leHRlbmRlZFpvbmU9dHJ1ZV0gLSBhZGQgdGhlIHRpbWUgem9uZSBmb3JtYXQgZXh0ZW5zaW9uXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuaW5jbHVkZVByZWZpeD1mYWxzZV0gLSBpbmNsdWRlIHRoZSBgVGAgcHJlZml4XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5mb3JtYXQ9J2V4dGVuZGVkJ10gLSBjaG9vc2UgYmV0d2VlbiB0aGUgYmFzaWMgYW5kIGV4dGVuZGVkIGZvcm1hdFxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoKS5zZXQoeyBob3VyOiA3LCBtaW51dGU6IDM0IH0pLnRvSVNPVGltZSgpIC8vPT4gJzA3OjM0OjE5LjM2MVonXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygpLnNldCh7IGhvdXI6IDcsIG1pbnV0ZTogMzQsIHNlY29uZHM6IDAsIG1pbGxpc2Vjb25kczogMCB9KS50b0lTT1RpbWUoeyBzdXBwcmVzc1NlY29uZHM6IHRydWUgfSkgLy89PiAnMDc6MzRaJ1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoKS5zZXQoeyBob3VyOiA3LCBtaW51dGU6IDM0IH0pLnRvSVNPVGltZSh7IGZvcm1hdDogJ2Jhc2ljJyB9KSAvLz0+ICcwNzM0MTkuMzYxWidcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKCkuc2V0KHsgaG91cjogNywgbWludXRlOiAzNCB9KS50b0lTT1RpbWUoeyBpbmNsdWRlUHJlZml4OiB0cnVlIH0pIC8vPT4gJ1QwNzozNDoxOS4zNjFaJ1xuICAgKiBAcmV0dXJuIHtzdHJpbmd9XG4gICAqL1xuICB0b0lTT1RpbWUoe1xuICAgIHN1cHByZXNzTWlsbGlzZWNvbmRzID0gZmFsc2UsXG4gICAgc3VwcHJlc3NTZWNvbmRzID0gZmFsc2UsXG4gICAgaW5jbHVkZU9mZnNldCA9IHRydWUsXG4gICAgaW5jbHVkZVByZWZpeCA9IGZhbHNlLFxuICAgIGV4dGVuZGVkWm9uZSA9IGZhbHNlLFxuICAgIGZvcm1hdCA9IFwiZXh0ZW5kZWRcIixcbiAgfSA9IHt9KSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGxldCBjID0gaW5jbHVkZVByZWZpeCA/IFwiVFwiIDogXCJcIjtcbiAgICByZXR1cm4gKFxuICAgICAgYyArXG4gICAgICB0b0lTT1RpbWUoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIGZvcm1hdCA9PT0gXCJleHRlbmRlZFwiLFxuICAgICAgICBzdXBwcmVzc1NlY29uZHMsXG4gICAgICAgIHN1cHByZXNzTWlsbGlzZWNvbmRzLFxuICAgICAgICBpbmNsdWRlT2Zmc2V0LFxuICAgICAgICBleHRlbmRlZFpvbmVcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gUkZDIDI4MjItY29tcGF0aWJsZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMjAxNCwgNywgMTMpLnRvUkZDMjgyMigpIC8vPT4gJ1N1biwgMTMgSnVsIDIwMTQgMDA6MDA6MDAgKzAwMDAnXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDcsIDEzKS50b1JGQzI4MjIoKSAvLz0+ICdTdW4sIDEzIEp1bCAyMDE0IDAwOjAwOjAwIC0wNDAwJ1xuICAgKiBAcmV0dXJuIHtzdHJpbmd9XG4gICAqL1xuICB0b1JGQzI4MjIoKSB7XG4gICAgcmV0dXJuIHRvVGVjaEZvcm1hdCh0aGlzLCBcIkVFRSwgZGQgTExMIHl5eXkgSEg6bW06c3MgWlpaXCIsIGZhbHNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRGF0ZVRpbWUgYXBwcm9wcmlhdGUgZm9yIHVzZSBpbiBIVFRQIGhlYWRlcnMuIFRoZSBvdXRwdXQgaXMgYWx3YXlzIGV4cHJlc3NlZCBpbiBHTVQuXG4gICAqIFNwZWNpZmljYWxseSwgdGhlIHN0cmluZyBjb25mb3JtcyB0byBSRkMgMTEyMy5cbiAgICogQHNlZSBodHRwczovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWMzLmh0bWwjc2VjMy4zLjFcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTQsIDcsIDEzKS50b0hUVFAoKSAvLz0+ICdTdW4sIDEzIEp1bCAyMDE0IDAwOjAwOjAwIEdNVCdcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTQsIDcsIDEzLCAxOSkudG9IVFRQKCkgLy89PiAnU3VuLCAxMyBKdWwgMjAxNCAxOTowMDowMCBHTVQnXG4gICAqIEByZXR1cm4ge3N0cmluZ31cbiAgICovXG4gIHRvSFRUUCgpIHtcbiAgICByZXR1cm4gdG9UZWNoRm9ybWF0KHRoaXMudG9VVEMoKSwgXCJFRUUsIGRkIExMTCB5eXl5IEhIOm1tOnNzICdHTVQnXCIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZSBhcHByb3ByaWF0ZSBmb3IgdXNlIGluIFNRTCBEYXRlXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygyMDE0LCA3LCAxMykudG9TUUxEYXRlKCkgLy89PiAnMjAxNC0wNy0xMydcbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgdG9TUUxEYXRlKCkge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIHRvSVNPRGF0ZSh0aGlzLCB0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRGF0ZVRpbWUgYXBwcm9wcmlhdGUgZm9yIHVzZSBpbiBTUUwgVGltZVxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnNcbiAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5pbmNsdWRlWm9uZT1mYWxzZV0gLSBpbmNsdWRlIHRoZSB6b25lLCBzdWNoIGFzICdBbWVyaWNhL05ld19Zb3JrJy4gT3ZlcnJpZGVzIGluY2x1ZGVPZmZzZXQuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuaW5jbHVkZU9mZnNldD10cnVlXSAtIGluY2x1ZGUgdGhlIG9mZnNldCwgc3VjaCBhcyAnWicgb3IgJy0wNDowMCdcbiAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5pbmNsdWRlT2Zmc2V0U3BhY2U9dHJ1ZV0gLSBpbmNsdWRlIHRoZSBzcGFjZSBiZXR3ZWVuIHRoZSB0aW1lIGFuZCB0aGUgb2Zmc2V0LCBzdWNoIGFzICcwNToxNToxNi4zNDUgLTA0OjAwJ1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoKS50b1NRTCgpIC8vPT4gJzA1OjE1OjE2LjM0NSdcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9TUUwoKSAvLz0+ICcwNToxNToxNi4zNDUgLTA0OjAwJ1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b1NRTCh7IGluY2x1ZGVPZmZzZXQ6IGZhbHNlIH0pIC8vPT4gJzA1OjE1OjE2LjM0NSdcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9TUUwoeyBpbmNsdWRlWm9uZTogZmFsc2UgfSkgLy89PiAnMDU6MTU6MTYuMzQ1IEFtZXJpY2EvTmV3X1lvcmsnXG4gICAqIEByZXR1cm4ge3N0cmluZ31cbiAgICovXG4gIHRvU1FMVGltZSh7IGluY2x1ZGVPZmZzZXQgPSB0cnVlLCBpbmNsdWRlWm9uZSA9IGZhbHNlLCBpbmNsdWRlT2Zmc2V0U3BhY2UgPSB0cnVlIH0gPSB7fSkge1xuICAgIGxldCBmbXQgPSBcIkhIOm1tOnNzLlNTU1wiO1xuXG4gICAgaWYgKGluY2x1ZGVab25lIHx8IGluY2x1ZGVPZmZzZXQpIHtcbiAgICAgIGlmIChpbmNsdWRlT2Zmc2V0U3BhY2UpIHtcbiAgICAgICAgZm10ICs9IFwiIFwiO1xuICAgICAgfVxuICAgICAgaWYgKGluY2x1ZGVab25lKSB7XG4gICAgICAgIGZtdCArPSBcInpcIjtcbiAgICAgIH0gZWxzZSBpZiAoaW5jbHVkZU9mZnNldCkge1xuICAgICAgICBmbXQgKz0gXCJaWlwiO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0b1RlY2hGb3JtYXQodGhpcywgZm10LCB0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRGF0ZVRpbWUgYXBwcm9wcmlhdGUgZm9yIHVzZSBpbiBTUUwgRGF0ZVRpbWVcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuaW5jbHVkZVpvbmU9ZmFsc2VdIC0gaW5jbHVkZSB0aGUgem9uZSwgc3VjaCBhcyAnQW1lcmljYS9OZXdfWW9yaycuIE92ZXJyaWRlcyBpbmNsdWRlT2Zmc2V0LlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmluY2x1ZGVPZmZzZXQ9dHJ1ZV0gLSBpbmNsdWRlIHRoZSBvZmZzZXQsIHN1Y2ggYXMgJ1onIG9yICctMDQ6MDAnXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuaW5jbHVkZU9mZnNldFNwYWNlPXRydWVdIC0gaW5jbHVkZSB0aGUgc3BhY2UgYmV0d2VlbiB0aGUgdGltZSBhbmQgdGhlIG9mZnNldCwgc3VjaCBhcyAnMDU6MTU6MTYuMzQ1IC0wNDowMCdcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTQsIDcsIDEzKS50b1NRTCgpIC8vPT4gJzIwMTQtMDctMTMgMDA6MDA6MDAuMDAwIFonXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDcsIDEzKS50b1NRTCgpIC8vPT4gJzIwMTQtMDctMTMgMDA6MDA6MDAuMDAwIC0wNDowMCdcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgNywgMTMpLnRvU1FMKHsgaW5jbHVkZU9mZnNldDogZmFsc2UgfSkgLy89PiAnMjAxNC0wNy0xMyAwMDowMDowMC4wMDAnXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDcsIDEzKS50b1NRTCh7IGluY2x1ZGVab25lOiB0cnVlIH0pIC8vPT4gJzIwMTQtMDctMTMgMDA6MDA6MDAuMDAwIEFtZXJpY2EvTmV3X1lvcmsnXG4gICAqIEByZXR1cm4ge3N0cmluZ31cbiAgICovXG4gIHRvU1FMKG9wdHMgPSB7fSkge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gYCR7dGhpcy50b1NRTERhdGUoKX0gJHt0aGlzLnRvU1FMVGltZShvcHRzKX1gO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZSBhcHByb3ByaWF0ZSBmb3IgZGVidWdnaW5nXG4gICAqIEByZXR1cm4ge3N0cmluZ31cbiAgICovXG4gIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnRvSVNPKCkgOiBJTlZBTElEO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGVwb2NoIG1pbGxpc2Vjb25kcyBvZiB0aGlzIERhdGVUaW1lLiBBbGlhcyBvZiB7QGxpbmsgRGF0ZVRpbWUjdG9NaWxsaXN9XG4gICAqIEByZXR1cm4ge251bWJlcn1cbiAgICovXG4gIHZhbHVlT2YoKSB7XG4gICAgcmV0dXJuIHRoaXMudG9NaWxsaXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBlcG9jaCBtaWxsaXNlY29uZHMgb2YgdGhpcyBEYXRlVGltZS5cbiAgICogQHJldHVybiB7bnVtYmVyfVxuICAgKi9cbiAgdG9NaWxsaXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudHMgOiBOYU47XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgZXBvY2ggc2Vjb25kcyBvZiB0aGlzIERhdGVUaW1lLlxuICAgKiBAcmV0dXJuIHtudW1iZXJ9XG4gICAqL1xuICB0b1NlY29uZHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudHMgLyAxMDAwIDogTmFOO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGVwb2NoIHNlY29uZHMgKGFzIGEgd2hvbGUgbnVtYmVyKSBvZiB0aGlzIERhdGVUaW1lLlxuICAgKiBAcmV0dXJuIHtudW1iZXJ9XG4gICAqL1xuICB0b1VuaXhJbnRlZ2VyKCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBNYXRoLmZsb29yKHRoaXMudHMgLyAxMDAwKSA6IE5hTjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIElTTyA4NjAxIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRGF0ZVRpbWUgYXBwcm9wcmlhdGUgZm9yIHVzZSBpbiBKU09OLlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9XG4gICAqL1xuICB0b0pTT04oKSB7XG4gICAgcmV0dXJuIHRoaXMudG9JU08oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgQlNPTiBzZXJpYWxpemFibGUgZXF1aXZhbGVudCB0byB0aGlzIERhdGVUaW1lLlxuICAgKiBAcmV0dXJuIHtEYXRlfVxuICAgKi9cbiAgdG9CU09OKCkge1xuICAgIHJldHVybiB0aGlzLnRvSlNEYXRlKCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIEphdmFTY3JpcHQgb2JqZWN0IHdpdGggdGhpcyBEYXRlVGltZSdzIHllYXIsIG1vbnRoLCBkYXksIGFuZCBzbyBvbi5cbiAgICogQHBhcmFtIG9wdHMgLSBvcHRpb25zIGZvciBnZW5lcmF0aW5nIHRoZSBvYmplY3RcbiAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5pbmNsdWRlQ29uZmlnPWZhbHNlXSAtIGluY2x1ZGUgY29uZmlndXJhdGlvbiBhdHRyaWJ1dGVzIGluIHRoZSBvdXRwdXRcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9PYmplY3QoKSAvLz0+IHsgeWVhcjogMjAxNywgbW9udGg6IDQsIGRheTogMjIsIGhvdXI6IDIwLCBtaW51dGU6IDQ5LCBzZWNvbmQ6IDQyLCBtaWxsaXNlY29uZDogMjY4IH1cbiAgICogQHJldHVybiB7T2JqZWN0fVxuICAgKi9cbiAgdG9PYmplY3Qob3B0cyA9IHt9KSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB7fTtcblxuICAgIGNvbnN0IGJhc2UgPSB7IC4uLnRoaXMuYyB9O1xuXG4gICAgaWYgKG9wdHMuaW5jbHVkZUNvbmZpZykge1xuICAgICAgYmFzZS5vdXRwdXRDYWxlbmRhciA9IHRoaXMub3V0cHV0Q2FsZW5kYXI7XG4gICAgICBiYXNlLm51bWJlcmluZ1N5c3RlbSA9IHRoaXMubG9jLm51bWJlcmluZ1N5c3RlbTtcbiAgICAgIGJhc2UubG9jYWxlID0gdGhpcy5sb2MubG9jYWxlO1xuICAgIH1cbiAgICByZXR1cm4gYmFzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgSmF2YVNjcmlwdCBEYXRlIGVxdWl2YWxlbnQgdG8gdGhpcyBEYXRlVGltZS5cbiAgICogQHJldHVybiB7RGF0ZX1cbiAgICovXG4gIHRvSlNEYXRlKCkge1xuICAgIHJldHVybiBuZXcgRGF0ZSh0aGlzLmlzVmFsaWQgPyB0aGlzLnRzIDogTmFOKTtcbiAgfVxuXG4gIC8vIENPTVBBUkVcblxuICAvKipcbiAgICogUmV0dXJuIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdHdvIERhdGVUaW1lcyBhcyBhIER1cmF0aW9uLlxuICAgKiBAcGFyYW0ge0RhdGVUaW1lfSBvdGhlckRhdGVUaW1lIC0gdGhlIERhdGVUaW1lIHRvIGNvbXBhcmUgdGhpcyBvbmUgdG9cbiAgICogQHBhcmFtIHtzdHJpbmd8c3RyaW5nW119IFt1bml0PVsnbWlsbGlzZWNvbmRzJ11dIC0gdGhlIHVuaXQgb3IgYXJyYXkgb2YgdW5pdHMgKHN1Y2ggYXMgJ2hvdXJzJyBvciAnZGF5cycpIHRvIGluY2x1ZGUgaW4gdGhlIGR1cmF0aW9uLlxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgdGhhdCBhZmZlY3QgdGhlIGNyZWF0aW9uIG9mIHRoZSBEdXJhdGlvblxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuY29udmVyc2lvbkFjY3VyYWN5PSdjYXN1YWwnXSAtIHRoZSBjb252ZXJzaW9uIHN5c3RlbSB0byB1c2VcbiAgICogQGV4YW1wbGVcbiAgICogdmFyIGkxID0gRGF0ZVRpbWUuZnJvbUlTTygnMTk4Mi0wNS0yNVQwOTo0NScpLFxuICAgKiAgICAgaTIgPSBEYXRlVGltZS5mcm9tSVNPKCcxOTgzLTEwLTE0VDEwOjMwJyk7XG4gICAqIGkyLmRpZmYoaTEpLnRvT2JqZWN0KCkgLy89PiB7IG1pbGxpc2Vjb25kczogNDM4MDc1MDAwMDAgfVxuICAgKiBpMi5kaWZmKGkxLCAnaG91cnMnKS50b09iamVjdCgpIC8vPT4geyBob3VyczogMTIxNjguNzUgfVxuICAgKiBpMi5kaWZmKGkxLCBbJ21vbnRocycsICdkYXlzJ10pLnRvT2JqZWN0KCkgLy89PiB7IG1vbnRoczogMTYsIGRheXM6IDE5LjAzMTI1IH1cbiAgICogaTIuZGlmZihpMSwgWydtb250aHMnLCAnZGF5cycsICdob3VycyddKS50b09iamVjdCgpIC8vPT4geyBtb250aHM6IDE2LCBkYXlzOiAxOSwgaG91cnM6IDAuNzUgfVxuICAgKiBAcmV0dXJuIHtEdXJhdGlvbn1cbiAgICovXG4gIGRpZmYob3RoZXJEYXRlVGltZSwgdW5pdCA9IFwibWlsbGlzZWNvbmRzXCIsIG9wdHMgPSB7fSkge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkIHx8ICFvdGhlckRhdGVUaW1lLmlzVmFsaWQpIHtcbiAgICAgIHJldHVybiBEdXJhdGlvbi5pbnZhbGlkKFwiY3JlYXRlZCBieSBkaWZmaW5nIGFuIGludmFsaWQgRGF0ZVRpbWVcIik7XG4gICAgfVxuXG4gICAgY29uc3QgZHVyT3B0cyA9IHsgbG9jYWxlOiB0aGlzLmxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtOiB0aGlzLm51bWJlcmluZ1N5c3RlbSwgLi4ub3B0cyB9O1xuXG4gICAgY29uc3QgdW5pdHMgPSBtYXliZUFycmF5KHVuaXQpLm1hcChEdXJhdGlvbi5ub3JtYWxpemVVbml0KSxcbiAgICAgIG90aGVySXNMYXRlciA9IG90aGVyRGF0ZVRpbWUudmFsdWVPZigpID4gdGhpcy52YWx1ZU9mKCksXG4gICAgICBlYXJsaWVyID0gb3RoZXJJc0xhdGVyID8gdGhpcyA6IG90aGVyRGF0ZVRpbWUsXG4gICAgICBsYXRlciA9IG90aGVySXNMYXRlciA/IG90aGVyRGF0ZVRpbWUgOiB0aGlzLFxuICAgICAgZGlmZmVkID0gZGlmZihlYXJsaWVyLCBsYXRlciwgdW5pdHMsIGR1ck9wdHMpO1xuXG4gICAgcmV0dXJuIG90aGVySXNMYXRlciA/IGRpZmZlZC5uZWdhdGUoKSA6IGRpZmZlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGlzIERhdGVUaW1lIGFuZCByaWdodCBub3cuXG4gICAqIFNlZSB7QGxpbmsgRGF0ZVRpbWUjZGlmZn1cbiAgICogQHBhcmFtIHtzdHJpbmd8c3RyaW5nW119IFt1bml0PVsnbWlsbGlzZWNvbmRzJ11dIC0gdGhlIHVuaXQgb3IgdW5pdHMgdW5pdHMgKHN1Y2ggYXMgJ2hvdXJzJyBvciAnZGF5cycpIHRvIGluY2x1ZGUgaW4gdGhlIGR1cmF0aW9uXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucyB0aGF0IGFmZmVjdCB0aGUgY3JlYXRpb24gb2YgdGhlIER1cmF0aW9uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5jb252ZXJzaW9uQWNjdXJhY3k9J2Nhc3VhbCddIC0gdGhlIGNvbnZlcnNpb24gc3lzdGVtIHRvIHVzZVxuICAgKiBAcmV0dXJuIHtEdXJhdGlvbn1cbiAgICovXG4gIGRpZmZOb3codW5pdCA9IFwibWlsbGlzZWNvbmRzXCIsIG9wdHMgPSB7fSkge1xuICAgIHJldHVybiB0aGlzLmRpZmYoRGF0ZVRpbWUubm93KCksIHVuaXQsIG9wdHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhbiBJbnRlcnZhbCBzcGFubmluZyBiZXR3ZWVuIHRoaXMgRGF0ZVRpbWUgYW5kIGFub3RoZXIgRGF0ZVRpbWVcbiAgICogQHBhcmFtIHtEYXRlVGltZX0gb3RoZXJEYXRlVGltZSAtIHRoZSBvdGhlciBlbmQgcG9pbnQgb2YgdGhlIEludGVydmFsXG4gICAqIEByZXR1cm4ge0ludGVydmFsfVxuICAgKi9cbiAgdW50aWwob3RoZXJEYXRlVGltZSkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKHRoaXMsIG90aGVyRGF0ZVRpbWUpIDogdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gd2hldGhlciB0aGlzIERhdGVUaW1lIGlzIGluIHRoZSBzYW1lIHVuaXQgb2YgdGltZSBhcyBhbm90aGVyIERhdGVUaW1lLlxuICAgKiBIaWdoZXItb3JkZXIgdW5pdHMgbXVzdCBhbHNvIGJlIGlkZW50aWNhbCBmb3IgdGhpcyBmdW5jdGlvbiB0byByZXR1cm4gYHRydWVgLlxuICAgKiBOb3RlIHRoYXQgdGltZSB6b25lcyBhcmUgKippZ25vcmVkKiogaW4gdGhpcyBjb21wYXJpc29uLCB3aGljaCBjb21wYXJlcyB0aGUgKipsb2NhbCoqIGNhbGVuZGFyIHRpbWUuIFVzZSB7QGxpbmsgRGF0ZVRpbWUjc2V0Wm9uZX0gdG8gY29udmVydCBvbmUgb2YgdGhlIGRhdGVzIGlmIG5lZWRlZC5cbiAgICogQHBhcmFtIHtEYXRlVGltZX0gb3RoZXJEYXRlVGltZSAtIHRoZSBvdGhlciBEYXRlVGltZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gdW5pdCAtIHRoZSB1bml0IG9mIHRpbWUgdG8gY2hlY2sgc2FtZW5lc3Mgb25cbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkuaGFzU2FtZShvdGhlckRULCAnZGF5Jyk7IC8vfj4gdHJ1ZSBpZiBvdGhlckRUIGlzIGluIHRoZSBzYW1lIGN1cnJlbnQgY2FsZW5kYXIgZGF5XG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqL1xuICBoYXNTYW1lKG90aGVyRGF0ZVRpbWUsIHVuaXQpIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgY29uc3QgaW5wdXRNcyA9IG90aGVyRGF0ZVRpbWUudmFsdWVPZigpO1xuICAgIGNvbnN0IGFkanVzdGVkVG9ab25lID0gdGhpcy5zZXRab25lKG90aGVyRGF0ZVRpbWUuem9uZSwgeyBrZWVwTG9jYWxUaW1lOiB0cnVlIH0pO1xuICAgIHJldHVybiBhZGp1c3RlZFRvWm9uZS5zdGFydE9mKHVuaXQpIDw9IGlucHV0TXMgJiYgaW5wdXRNcyA8PSBhZGp1c3RlZFRvWm9uZS5lbmRPZih1bml0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFcXVhbGl0eSBjaGVja1xuICAgKiBUd28gRGF0ZVRpbWVzIGFyZSBlcXVhbCBpZmYgdGhleSByZXByZXNlbnQgdGhlIHNhbWUgbWlsbGlzZWNvbmQsIGhhdmUgdGhlIHNhbWUgem9uZSBhbmQgbG9jYXRpb24sIGFuZCBhcmUgYm90aCB2YWxpZC5cbiAgICogVG8gY29tcGFyZSBqdXN0IHRoZSBtaWxsaXNlY29uZCB2YWx1ZXMsIHVzZSBgK2R0MSA9PT0gK2R0MmAuXG4gICAqIEBwYXJhbSB7RGF0ZVRpbWV9IG90aGVyIC0gdGhlIG90aGVyIERhdGVUaW1lXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqL1xuICBlcXVhbHMob3RoZXIpIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5pc1ZhbGlkICYmXG4gICAgICBvdGhlci5pc1ZhbGlkICYmXG4gICAgICB0aGlzLnZhbHVlT2YoKSA9PT0gb3RoZXIudmFsdWVPZigpICYmXG4gICAgICB0aGlzLnpvbmUuZXF1YWxzKG90aGVyLnpvbmUpICYmXG4gICAgICB0aGlzLmxvYy5lcXVhbHMob3RoZXIubG9jKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIHRoaXMgdGltZSByZWxhdGl2ZSB0byBub3csIHN1Y2ggYXMgXCJpbiB0d28gZGF5c1wiLiBDYW4gb25seSBpbnRlcm5hdGlvbmFsaXplIGlmIHlvdXJcbiAgICogcGxhdGZvcm0gc3VwcG9ydHMgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQuIFJvdW5kcyBkb3duIGJ5IGRlZmF1bHQuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gb3B0aW9ucyB0aGF0IGFmZmVjdCB0aGUgb3V0cHV0XG4gICAqIEBwYXJhbSB7RGF0ZVRpbWV9IFtvcHRpb25zLmJhc2U9RGF0ZVRpbWUubm93KCldIC0gdGhlIERhdGVUaW1lIHRvIHVzZSBhcyB0aGUgYmFzaXMgdG8gd2hpY2ggdGhpcyB0aW1lIGlzIGNvbXBhcmVkLiBEZWZhdWx0cyB0byBub3cuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5zdHlsZT1cImxvbmdcIl0gLSB0aGUgc3R5bGUgb2YgdW5pdHMsIG11c3QgYmUgXCJsb25nXCIsIFwic2hvcnRcIiwgb3IgXCJuYXJyb3dcIlxuICAgKiBAcGFyYW0ge3N0cmluZ3xzdHJpbmdbXX0gb3B0aW9ucy51bml0IC0gdXNlIGEgc3BlY2lmaWMgdW5pdCBvciBhcnJheSBvZiB1bml0czsgaWYgb21pdHRlZCwgb3IgYW4gYXJyYXksIHRoZSBtZXRob2Qgd2lsbCBwaWNrIHRoZSBiZXN0IHVuaXQuIFVzZSBhbiBhcnJheSBvciBvbmUgb2YgXCJ5ZWFyc1wiLCBcInF1YXJ0ZXJzXCIsIFwibW9udGhzXCIsIFwid2Vla3NcIiwgXCJkYXlzXCIsIFwiaG91cnNcIiwgXCJtaW51dGVzXCIsIG9yIFwic2Vjb25kc1wiXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMucm91bmQ9dHJ1ZV0gLSB3aGV0aGVyIHRvIHJvdW5kIHRoZSBudW1iZXJzIGluIHRoZSBvdXRwdXQuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbb3B0aW9ucy5wYWRkaW5nPTBdIC0gcGFkZGluZyBpbiBtaWxsaXNlY29uZHMuIFRoaXMgYWxsb3dzIHlvdSB0byByb3VuZCB1cCB0aGUgcmVzdWx0IGlmIGl0IGZpdHMgaW5zaWRlIHRoZSB0aHJlc2hvbGQuIERvbid0IHVzZSBpbiBjb21iaW5hdGlvbiB3aXRoIHtyb3VuZDogZmFsc2V9IGJlY2F1c2UgdGhlIGRlY2ltYWwgb3V0cHV0IHdpbGwgaW5jbHVkZSB0aGUgcGFkZGluZy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMubG9jYWxlIC0gb3ZlcnJpZGUgdGhlIGxvY2FsZSBvZiB0aGlzIERhdGVUaW1lXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLm51bWJlcmluZ1N5c3RlbSAtIG92ZXJyaWRlIHRoZSBudW1iZXJpbmdTeXN0ZW0gb2YgdGhpcyBEYXRlVGltZS4gVGhlIEludGwgc3lzdGVtIG1heSBjaG9vc2Ugbm90IHRvIGhvbm9yIHRoaXNcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkucGx1cyh7IGRheXM6IDEgfSkudG9SZWxhdGl2ZSgpIC8vPT4gXCJpbiAxIGRheVwiXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnNldExvY2FsZShcImVzXCIpLnRvUmVsYXRpdmUoeyBkYXlzOiAxIH0pIC8vPT4gXCJkZW50cm8gZGUgMSBkXHUwMEVEYVwiXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnBsdXMoeyBkYXlzOiAxIH0pLnRvUmVsYXRpdmUoeyBsb2NhbGU6IFwiZnJcIiB9KSAvLz0+IFwiZGFucyAyMyBoZXVyZXNcIlxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5taW51cyh7IGRheXM6IDIgfSkudG9SZWxhdGl2ZSgpIC8vPT4gXCIyIGRheXMgYWdvXCJcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkubWludXMoeyBkYXlzOiAyIH0pLnRvUmVsYXRpdmUoeyB1bml0OiBcImhvdXJzXCIgfSkgLy89PiBcIjQ4IGhvdXJzIGFnb1wiXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLm1pbnVzKHsgaG91cnM6IDM2IH0pLnRvUmVsYXRpdmUoeyByb3VuZDogZmFsc2UgfSkgLy89PiBcIjEuNSBkYXlzIGFnb1wiXG4gICAqL1xuICB0b1JlbGF0aXZlKG9wdGlvbnMgPSB7fSkge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCBiYXNlID0gb3B0aW9ucy5iYXNlIHx8IERhdGVUaW1lLmZyb21PYmplY3Qoe30sIHsgem9uZTogdGhpcy56b25lIH0pLFxuICAgICAgcGFkZGluZyA9IG9wdGlvbnMucGFkZGluZyA/ICh0aGlzIDwgYmFzZSA/IC1vcHRpb25zLnBhZGRpbmcgOiBvcHRpb25zLnBhZGRpbmcpIDogMDtcbiAgICBsZXQgdW5pdHMgPSBbXCJ5ZWFyc1wiLCBcIm1vbnRoc1wiLCBcImRheXNcIiwgXCJob3Vyc1wiLCBcIm1pbnV0ZXNcIiwgXCJzZWNvbmRzXCJdO1xuICAgIGxldCB1bml0ID0gb3B0aW9ucy51bml0O1xuICAgIGlmIChBcnJheS5pc0FycmF5KG9wdGlvbnMudW5pdCkpIHtcbiAgICAgIHVuaXRzID0gb3B0aW9ucy51bml0O1xuICAgICAgdW5pdCA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIGRpZmZSZWxhdGl2ZShiYXNlLCB0aGlzLnBsdXMocGFkZGluZyksIHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBudW1lcmljOiBcImFsd2F5c1wiLFxuICAgICAgdW5pdHMsXG4gICAgICB1bml0LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBkYXRlIHJlbGF0aXZlIHRvIHRvZGF5LCBzdWNoIGFzIFwieWVzdGVyZGF5XCIgb3IgXCJuZXh0IG1vbnRoXCIuXG4gICAqIE9ubHkgaW50ZXJuYXRpb25hbGl6ZXMgb24gcGxhdGZvcm1zIHRoYXQgc3VwcG9ydHMgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gb3B0aW9ucyB0aGF0IGFmZmVjdCB0aGUgb3V0cHV0XG4gICAqIEBwYXJhbSB7RGF0ZVRpbWV9IFtvcHRpb25zLmJhc2U9RGF0ZVRpbWUubm93KCldIC0gdGhlIERhdGVUaW1lIHRvIHVzZSBhcyB0aGUgYmFzaXMgdG8gd2hpY2ggdGhpcyB0aW1lIGlzIGNvbXBhcmVkLiBEZWZhdWx0cyB0byBub3cuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLmxvY2FsZSAtIG92ZXJyaWRlIHRoZSBsb2NhbGUgb2YgdGhpcyBEYXRlVGltZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy51bml0IC0gdXNlIGEgc3BlY2lmaWMgdW5pdDsgaWYgb21pdHRlZCwgdGhlIG1ldGhvZCB3aWxsIHBpY2sgdGhlIHVuaXQuIFVzZSBvbmUgb2YgXCJ5ZWFyc1wiLCBcInF1YXJ0ZXJzXCIsIFwibW9udGhzXCIsIFwid2Vla3NcIiwgb3IgXCJkYXlzXCJcbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMubnVtYmVyaW5nU3lzdGVtIC0gb3ZlcnJpZGUgdGhlIG51bWJlcmluZ1N5c3RlbSBvZiB0aGlzIERhdGVUaW1lLiBUaGUgSW50bCBzeXN0ZW0gbWF5IGNob29zZSBub3QgdG8gaG9ub3IgdGhpc1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5wbHVzKHsgZGF5czogMSB9KS50b1JlbGF0aXZlQ2FsZW5kYXIoKSAvLz0+IFwidG9tb3Jyb3dcIlxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5zZXRMb2NhbGUoXCJlc1wiKS5wbHVzKHsgZGF5czogMSB9KS50b1JlbGF0aXZlKCkgLy89PiBcIlwibWFcdTAwRjFhbmFcIlxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5wbHVzKHsgZGF5czogMSB9KS50b1JlbGF0aXZlQ2FsZW5kYXIoeyBsb2NhbGU6IFwiZnJcIiB9KSAvLz0+IFwiZGVtYWluXCJcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkubWludXMoeyBkYXlzOiAyIH0pLnRvUmVsYXRpdmVDYWxlbmRhcigpIC8vPT4gXCIyIGRheXMgYWdvXCJcbiAgICovXG4gIHRvUmVsYXRpdmVDYWxlbmRhcihvcHRpb25zID0ge30pIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIG51bGw7XG5cbiAgICByZXR1cm4gZGlmZlJlbGF0aXZlKG9wdGlvbnMuYmFzZSB8fCBEYXRlVGltZS5mcm9tT2JqZWN0KHt9LCB7IHpvbmU6IHRoaXMuem9uZSB9KSwgdGhpcywge1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIG51bWVyaWM6IFwiYXV0b1wiLFxuICAgICAgdW5pdHM6IFtcInllYXJzXCIsIFwibW9udGhzXCIsIFwiZGF5c1wiXSxcbiAgICAgIGNhbGVuZGFyeTogdHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIG1pbiBvZiBzZXZlcmFsIGRhdGUgdGltZXNcbiAgICogQHBhcmFtIHsuLi5EYXRlVGltZX0gZGF0ZVRpbWVzIC0gdGhlIERhdGVUaW1lcyBmcm9tIHdoaWNoIHRvIGNob29zZSB0aGUgbWluaW11bVxuICAgKiBAcmV0dXJuIHtEYXRlVGltZX0gdGhlIG1pbiBEYXRlVGltZSwgb3IgdW5kZWZpbmVkIGlmIGNhbGxlZCB3aXRoIG5vIGFyZ3VtZW50XG4gICAqL1xuICBzdGF0aWMgbWluKC4uLmRhdGVUaW1lcykge1xuICAgIGlmICghZGF0ZVRpbWVzLmV2ZXJ5KERhdGVUaW1lLmlzRGF0ZVRpbWUpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoXCJtaW4gcmVxdWlyZXMgYWxsIGFyZ3VtZW50cyBiZSBEYXRlVGltZXNcIik7XG4gICAgfVxuICAgIHJldHVybiBiZXN0QnkoZGF0ZVRpbWVzLCAoaSkgPT4gaS52YWx1ZU9mKCksIE1hdGgubWluKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIG1heCBvZiBzZXZlcmFsIGRhdGUgdGltZXNcbiAgICogQHBhcmFtIHsuLi5EYXRlVGltZX0gZGF0ZVRpbWVzIC0gdGhlIERhdGVUaW1lcyBmcm9tIHdoaWNoIHRvIGNob29zZSB0aGUgbWF4aW11bVxuICAgKiBAcmV0dXJuIHtEYXRlVGltZX0gdGhlIG1heCBEYXRlVGltZSwgb3IgdW5kZWZpbmVkIGlmIGNhbGxlZCB3aXRoIG5vIGFyZ3VtZW50XG4gICAqL1xuICBzdGF0aWMgbWF4KC4uLmRhdGVUaW1lcykge1xuICAgIGlmICghZGF0ZVRpbWVzLmV2ZXJ5KERhdGVUaW1lLmlzRGF0ZVRpbWUpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoXCJtYXggcmVxdWlyZXMgYWxsIGFyZ3VtZW50cyBiZSBEYXRlVGltZXNcIik7XG4gICAgfVxuICAgIHJldHVybiBiZXN0QnkoZGF0ZVRpbWVzLCAoaSkgPT4gaS52YWx1ZU9mKCksIE1hdGgubWF4KTtcbiAgfVxuXG4gIC8vIE1JU0NcblxuICAvKipcbiAgICogRXhwbGFpbiBob3cgYSBzdHJpbmcgd291bGQgYmUgcGFyc2VkIGJ5IGZyb21Gb3JtYXQoKVxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAtIHRoZSBzdHJpbmcgdG8gcGFyc2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IGZtdCAtIHRoZSBmb3JtYXQgdGhlIHN0cmluZyBpcyBleHBlY3RlZCB0byBiZSBpbiAoc2VlIGRlc2NyaXB0aW9uKVxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIG9wdGlvbnMgdGFrZW4gYnkgZnJvbUZvcm1hdCgpXG4gICAqIEByZXR1cm4ge09iamVjdH1cbiAgICovXG4gIHN0YXRpYyBmcm9tRm9ybWF0RXhwbGFpbih0ZXh0LCBmbXQsIG9wdGlvbnMgPSB7fSkge1xuICAgIGNvbnN0IHsgbG9jYWxlID0gbnVsbCwgbnVtYmVyaW5nU3lzdGVtID0gbnVsbCB9ID0gb3B0aW9ucyxcbiAgICAgIGxvY2FsZVRvVXNlID0gTG9jYWxlLmZyb21PcHRzKHtcbiAgICAgICAgbG9jYWxlLFxuICAgICAgICBudW1iZXJpbmdTeXN0ZW0sXG4gICAgICAgIGRlZmF1bHRUb0VOOiB0cnVlLFxuICAgICAgfSk7XG4gICAgcmV0dXJuIGV4cGxhaW5Gcm9tVG9rZW5zKGxvY2FsZVRvVXNlLCB0ZXh0LCBmbXQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHVzZSBmcm9tRm9ybWF0RXhwbGFpbiBpbnN0ZWFkXG4gICAqL1xuICBzdGF0aWMgZnJvbVN0cmluZ0V4cGxhaW4odGV4dCwgZm10LCBvcHRpb25zID0ge30pIHtcbiAgICByZXR1cm4gRGF0ZVRpbWUuZnJvbUZvcm1hdEV4cGxhaW4odGV4dCwgZm10LCBvcHRpb25zKTtcbiAgfVxuXG4gIC8vIEZPUk1BVCBQUkVTRVRTXG5cbiAgLyoqXG4gICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgMTAvMTQvMTk4M1xuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgc3RhdGljIGdldCBEQVRFX1NIT1JUKCkge1xuICAgIHJldHVybiBGb3JtYXRzLkRBVEVfU0hPUlQ7XG4gIH1cblxuICAvKipcbiAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnT2N0IDE0LCAxOTgzJ1xuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgc3RhdGljIGdldCBEQVRFX01FRCgpIHtcbiAgICByZXR1cm4gRm9ybWF0cy5EQVRFX01FRDtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdGcmksIE9jdCAxNCwgMTk4MydcbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHN0YXRpYyBnZXQgREFURV9NRURfV0lUSF9XRUVLREFZKCkge1xuICAgIHJldHVybiBGb3JtYXRzLkRBVEVfTUVEX1dJVEhfV0VFS0RBWTtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdPY3RvYmVyIDE0LCAxOTgzJ1xuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgc3RhdGljIGdldCBEQVRFX0ZVTEwoKSB7XG4gICAgcmV0dXJuIEZvcm1hdHMuREFURV9GVUxMO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJ1R1ZXNkYXksIE9jdG9iZXIgMTQsIDE5ODMnXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICBzdGF0aWMgZ2V0IERBVEVfSFVHRSgpIHtcbiAgICByZXR1cm4gRm9ybWF0cy5EQVRFX0hVR0U7XG4gIH1cblxuICAvKipcbiAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnMDk6MzAgQU0nLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy5cbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHN0YXRpYyBnZXQgVElNRV9TSU1QTEUoKSB7XG4gICAgcmV0dXJuIEZvcm1hdHMuVElNRV9TSU1QTEU7XG4gIH1cblxuICAvKipcbiAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnMDk6MzA6MjMgQU0nLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy5cbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHN0YXRpYyBnZXQgVElNRV9XSVRIX1NFQ09ORFMoKSB7XG4gICAgcmV0dXJuIEZvcm1hdHMuVElNRV9XSVRIX1NFQ09ORFM7XG4gIH1cblxuICAvKipcbiAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnMDk6MzA6MjMgQU0gRURUJy4gT25seSAxMi1ob3VyIGlmIHRoZSBsb2NhbGUgaXMuXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICBzdGF0aWMgZ2V0IFRJTUVfV0lUSF9TSE9SVF9PRkZTRVQoKSB7XG4gICAgcmV0dXJuIEZvcm1hdHMuVElNRV9XSVRIX1NIT1JUX09GRlNFVDtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICcwOTozMDoyMyBBTSBFYXN0ZXJuIERheWxpZ2h0IFRpbWUnLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy5cbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHN0YXRpYyBnZXQgVElNRV9XSVRIX0xPTkdfT0ZGU0VUKCkge1xuICAgIHJldHVybiBGb3JtYXRzLlRJTUVfV0lUSF9MT05HX09GRlNFVDtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICcwOTozMCcsIGFsd2F5cyAyNC1ob3VyLlxuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgc3RhdGljIGdldCBUSU1FXzI0X1NJTVBMRSgpIHtcbiAgICByZXR1cm4gRm9ybWF0cy5USU1FXzI0X1NJTVBMRTtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICcwOTozMDoyMycsIGFsd2F5cyAyNC1ob3VyLlxuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgc3RhdGljIGdldCBUSU1FXzI0X1dJVEhfU0VDT05EUygpIHtcbiAgICByZXR1cm4gRm9ybWF0cy5USU1FXzI0X1dJVEhfU0VDT05EUztcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICcwOTozMDoyMyBFRFQnLCBhbHdheXMgMjQtaG91ci5cbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHN0YXRpYyBnZXQgVElNRV8yNF9XSVRIX1NIT1JUX09GRlNFVCgpIHtcbiAgICByZXR1cm4gRm9ybWF0cy5USU1FXzI0X1dJVEhfU0hPUlRfT0ZGU0VUO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJzA5OjMwOjIzIEVhc3Rlcm4gRGF5bGlnaHQgVGltZScsIGFsd2F5cyAyNC1ob3VyLlxuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgc3RhdGljIGdldCBUSU1FXzI0X1dJVEhfTE9OR19PRkZTRVQoKSB7XG4gICAgcmV0dXJuIEZvcm1hdHMuVElNRV8yNF9XSVRIX0xPTkdfT0ZGU0VUO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJzEwLzE0LzE5ODMsIDk6MzAgQU0nLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy5cbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHN0YXRpYyBnZXQgREFURVRJTUVfU0hPUlQoKSB7XG4gICAgcmV0dXJuIEZvcm1hdHMuREFURVRJTUVfU0hPUlQ7XG4gIH1cblxuICAvKipcbiAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnMTAvMTQvMTk4MywgOTozMDozMyBBTScuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLlxuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgc3RhdGljIGdldCBEQVRFVElNRV9TSE9SVF9XSVRIX1NFQ09ORFMoKSB7XG4gICAgcmV0dXJuIEZvcm1hdHMuREFURVRJTUVfU0hPUlRfV0lUSF9TRUNPTkRTO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJ09jdCAxNCwgMTk4MywgOTozMCBBTScuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLlxuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgc3RhdGljIGdldCBEQVRFVElNRV9NRUQoKSB7XG4gICAgcmV0dXJuIEZvcm1hdHMuREFURVRJTUVfTUVEO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJ09jdCAxNCwgMTk4MywgOTozMDozMyBBTScuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLlxuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgc3RhdGljIGdldCBEQVRFVElNRV9NRURfV0lUSF9TRUNPTkRTKCkge1xuICAgIHJldHVybiBGb3JtYXRzLkRBVEVUSU1FX01FRF9XSVRIX1NFQ09ORFM7XG4gIH1cblxuICAvKipcbiAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnRnJpLCAxNCBPY3QgMTk4MywgOTozMCBBTScuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLlxuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgc3RhdGljIGdldCBEQVRFVElNRV9NRURfV0lUSF9XRUVLREFZKCkge1xuICAgIHJldHVybiBGb3JtYXRzLkRBVEVUSU1FX01FRF9XSVRIX1dFRUtEQVk7XG4gIH1cblxuICAvKipcbiAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnT2N0b2JlciAxNCwgMTk4MywgOTozMCBBTSBFRFQnLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy5cbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHN0YXRpYyBnZXQgREFURVRJTUVfRlVMTCgpIHtcbiAgICByZXR1cm4gRm9ybWF0cy5EQVRFVElNRV9GVUxMO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJ09jdG9iZXIgMTQsIDE5ODMsIDk6MzA6MzMgQU0gRURUJy4gT25seSAxMi1ob3VyIGlmIHRoZSBsb2NhbGUgaXMuXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICBzdGF0aWMgZ2V0IERBVEVUSU1FX0ZVTExfV0lUSF9TRUNPTkRTKCkge1xuICAgIHJldHVybiBGb3JtYXRzLkRBVEVUSU1FX0ZVTExfV0lUSF9TRUNPTkRTO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJ0ZyaWRheSwgT2N0b2JlciAxNCwgMTk4MywgOTozMCBBTSBFYXN0ZXJuIERheWxpZ2h0IFRpbWUnLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy5cbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHN0YXRpYyBnZXQgREFURVRJTUVfSFVHRSgpIHtcbiAgICByZXR1cm4gRm9ybWF0cy5EQVRFVElNRV9IVUdFO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJ0ZyaWRheSwgT2N0b2JlciAxNCwgMTk4MywgOTozMDozMyBBTSBFYXN0ZXJuIERheWxpZ2h0IFRpbWUnLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy5cbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHN0YXRpYyBnZXQgREFURVRJTUVfSFVHRV9XSVRIX1NFQ09ORFMoKSB7XG4gICAgcmV0dXJuIEZvcm1hdHMuREFURVRJTUVfSFVHRV9XSVRIX1NFQ09ORFM7XG4gIH1cbn1cblxuLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZnJpZW5kbHlEYXRlVGltZShkYXRlVGltZWlzaCkge1xuICBpZiAoRGF0ZVRpbWUuaXNEYXRlVGltZShkYXRlVGltZWlzaCkpIHtcbiAgICByZXR1cm4gZGF0ZVRpbWVpc2g7XG4gIH0gZWxzZSBpZiAoZGF0ZVRpbWVpc2ggJiYgZGF0ZVRpbWVpc2gudmFsdWVPZiAmJiBpc051bWJlcihkYXRlVGltZWlzaC52YWx1ZU9mKCkpKSB7XG4gICAgcmV0dXJuIERhdGVUaW1lLmZyb21KU0RhdGUoZGF0ZVRpbWVpc2gpO1xuICB9IGVsc2UgaWYgKGRhdGVUaW1laXNoICYmIHR5cGVvZiBkYXRlVGltZWlzaCA9PT0gXCJvYmplY3RcIikge1xuICAgIHJldHVybiBEYXRlVGltZS5mcm9tT2JqZWN0KGRhdGVUaW1laXNoKTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoXG4gICAgICBgVW5rbm93biBkYXRldGltZSBhcmd1bWVudDogJHtkYXRlVGltZWlzaH0sIG9mIHR5cGUgJHt0eXBlb2YgZGF0ZVRpbWVpc2h9YFxuICAgICk7XG4gIH1cbn1cbiIsICJpbXBvcnQgeyBEYXRlVGltZSwgRHVyYXRpb24gfSBmcm9tIFwibHV4b25cIjtcbmltcG9ydCAqIGFzIFAgZnJvbSBcInBhcnNpbW1vblwiO1xuaW1wb3J0IGVtb2ppUmVnZXggZnJvbSBcImVtb2ppLXJlZ2V4XCI7XG5pbXBvcnQgeyBMaW5rIH0gZnJvbSBcImV4cHJlc3Npb24vbGlua1wiO1xuXG4vKiogVGVzdC1lbnZpcm9ubWVudC1mcmllbmRseSBmdW5jdGlvbiB3aGljaCBmZXRjaGVzIHRoZSBjdXJyZW50IHN5c3RlbSBsb2NhbGUuICovXG5leHBvcnQgZnVuY3Rpb24gY3VycmVudExvY2FsZSgpOiBzdHJpbmcge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSBcInVuZGVmaW5lZFwiKSByZXR1cm4gXCJlbi1VU1wiO1xuICAgIHJldHVybiB3aW5kb3cubmF2aWdhdG9yLmxhbmd1YWdlO1xufVxuXG4vLyBEYXRlL1RpbWUgUmVuZGVyaW5nXG5cbi8qKiBOb3JtYWxpemUgYSBkdXJhdGlvbiB0byBhbGwgb2YgdGhlIHByb3BlciB1bml0cy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVEdXJhdGlvbihkdXI6IER1cmF0aW9uKSB7XG4gICAgaWYgKGR1ciA9PT0gdW5kZWZpbmVkIHx8IGR1ciA9PT0gbnVsbCkgcmV0dXJuIGR1cjtcblxuICAgIHJldHVybiBkdXIuc2hpZnRUbyhcInllYXJzXCIsIFwibW9udGhzXCIsIFwid2Vla3NcIiwgXCJkYXlzXCIsIFwiaG91cnNcIiwgXCJtaW51dGVzXCIsIFwic2Vjb25kc1wiLCBcIm1pbGxpc2Vjb25kc1wiKS5ub3JtYWxpemUoKTtcbn1cblxuLyoqIFN0cmlwIHRoZSB0aW1lIGNvbXBvbmVudHMgb2YgYSBkYXRlIHRpbWUgb2JqZWN0LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0cmlwVGltZShkdDogRGF0ZVRpbWUpOiBEYXRlVGltZSB7XG4gICAgaWYgKGR0ID09PSBudWxsIHx8IGR0ID09PSB1bmRlZmluZWQpIHJldHVybiBkdDtcblxuICAgIHJldHVybiBEYXRlVGltZS5mcm9tT2JqZWN0KHtcbiAgICAgICAgeWVhcjogZHQueWVhcixcbiAgICAgICAgbW9udGg6IGR0Lm1vbnRoLFxuICAgICAgICBkYXk6IGR0LmRheSxcbiAgICB9KTtcbn1cblxuLyoqIFRyeSB0byBleHRyYWN0IGEgWVlZWU1NREQgZGF0ZSBmcm9tIGEgc3RyaW5nLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3REYXRlKHN0cjogc3RyaW5nKTogRGF0ZVRpbWUgfCB1bmRlZmluZWQge1xuICAgIGxldCBkYXRlTWF0Y2ggPSAvKFxcZHs0fSktKFxcZHsyfSktKFxcZHsyfSkvLmV4ZWMoc3RyKTtcbiAgICBpZiAoIWRhdGVNYXRjaCkgZGF0ZU1hdGNoID0gLyhcXGR7NH0pKFxcZHsyfSkoXFxkezJ9KS8uZXhlYyhzdHIpO1xuICAgIGlmIChkYXRlTWF0Y2gpIHtcbiAgICAgICAgbGV0IHllYXIgPSBOdW1iZXIucGFyc2VJbnQoZGF0ZU1hdGNoWzFdKTtcbiAgICAgICAgbGV0IG1vbnRoID0gTnVtYmVyLnBhcnNlSW50KGRhdGVNYXRjaFsyXSk7XG4gICAgICAgIGxldCBkYXkgPSBOdW1iZXIucGFyc2VJbnQoZGF0ZU1hdGNoWzNdKTtcbiAgICAgICAgcmV0dXJuIERhdGVUaW1lLmZyb21PYmplY3QoeyB5ZWFyLCBtb250aCwgZGF5IH0pO1xuICAgIH1cblxuICAgIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbi8qKiBSZW5kZXIgYSBEYXRlVGltZSBpbiBhIG1pbmltYWwgZm9ybWF0IHRvIHNhdmUgc3BhY2UuICovXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyTWluaW1hbERhdGUodGltZTogRGF0ZVRpbWUsIGRhdGVGb3JtYXQ6IHN0cmluZywgZGF0ZVRpbWVGb3JtYXQ6IHN0cmluZywgbG9jYWxlPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAvLyBJZiB0aGVyZSBpcyBubyByZWxldmFudCB0aW1lIHNwZWNpZmllZCwgZmFsbCBiYWNrIHRvIGp1c3QgcmVuZGVyaW5nIHRoZSBkYXRlLlxuICAgIGlmICh0aW1lLnNlY29uZCA9PSAwICYmIHRpbWUubWludXRlID09IDAgJiYgdGltZS5ob3VyID09IDApIHtcbiAgICAgICAgcmV0dXJuIHRpbWUudG9Mb2NhbCgpLnRvRm9ybWF0KGRhdGVGb3JtYXQsIHsgbG9jYWxlIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB0aW1lLnRvTG9jYWwoKS50b0Zvcm1hdChkYXRlVGltZUZvcm1hdCwgeyBsb2NhbGUgfSk7XG59XG5cbi8qKiBSZW5kZXIgYSBkdXJhdGlvbiBpbiBhIG1pbmltYWwgZm9ybWF0IHRvIHNhdmUgc3BhY2UuICovXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyTWluaW1hbER1cmF0aW9uKGR1cjogRHVyYXRpb24pOiBzdHJpbmcge1xuICAgIGR1ciA9IG5vcm1hbGl6ZUR1cmF0aW9uKGR1cik7XG5cbiAgICAvLyBUT0RPOiBMdXhvbiBkb2VzIG5vdCBoYXZlIG11bHRpLWxpbmd1YWwvbG9jYWxlLWF3YXJlIGR1cmF0aW9uIHJlbmRlcmluZy5cbiAgICBsZXQgcmVzdWx0ID0gXCJcIjtcbiAgICBpZiAoZHVyLnllYXJzKSByZXN1bHQgKz0gYCR7ZHVyLnllYXJzfSB5ZWFycywgYDtcbiAgICBpZiAoZHVyLm1vbnRocykgcmVzdWx0ICs9IGAke2R1ci5tb250aHN9IG1vbnRocywgYDtcbiAgICBpZiAoZHVyLndlZWtzKSByZXN1bHQgKz0gYCR7ZHVyLndlZWtzfSB3ZWVrcywgYDtcbiAgICBpZiAoZHVyLmRheXMpIHJlc3VsdCArPSBgJHtkdXIuZGF5c30gZGF5cywgYDtcbiAgICBpZiAoZHVyLmhvdXJzKSByZXN1bHQgKz0gYCR7ZHVyLmhvdXJzfSBob3VycywgYDtcbiAgICBpZiAoZHVyLm1pbnV0ZXMpIHJlc3VsdCArPSBgJHtkdXIubWludXRlc30gbWludXRlcywgYDtcbiAgICBpZiAoZHVyLnNlY29uZHMpIHJlc3VsdCArPSBgJHtNYXRoLnJvdW5kKGR1ci5zZWNvbmRzKX0gc2Vjb25kcywgYDtcbiAgICBpZiAoZHVyLm1pbGxpc2Vjb25kcykgcmVzdWx0ICs9IGAke01hdGgucm91bmQoZHVyLm1pbGxpc2Vjb25kcyl9IG1zLCBgO1xuXG4gICAgaWYgKHJlc3VsdC5lbmRzV2l0aChcIiwgXCIpKSByZXN1bHQgPSByZXN1bHQuc3Vic3RyaW5nKDAsIHJlc3VsdC5sZW5ndGggLSAyKTtcbiAgICByZXR1cm4gcmVzdWx0O1xufVxuXG4vLyBQYXRoIHV0aWxpdGllcy5cblxuLyoqIEdldCB0aGUgZm9sZGVyIGNvbnRhaW5pbmcgdGhlIGdpdmVuIHBhdGggKGkuZS4sIGxpa2UgY29tcHV0aW5nICdwYXRoLy4uJykuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGFyZW50Rm9sZGVyKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHBhdGguc3BsaXQoXCIvXCIpLnNsaWNlKDAsIC0xKS5qb2luKFwiL1wiKTtcbn1cblxuLyoqIEdldCB0aGUgZmlsZSBuYW1lIGZvciB0aGUgZmlsZSByZWZlcmVuY2VkIGluIHRoZSBnaXZlbiBwYXRoLCBieSBzdHJpcHBpbmcgdGhlIHBhcmVudCBmb2xkZXJzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEZpbGVOYW1lKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHBhdGguaW5jbHVkZXMoXCIvXCIpID8gcGF0aC5zdWJzdHJpbmcocGF0aC5sYXN0SW5kZXhPZihcIi9cIikgKyAxKSA6IHBhdGg7XG59XG5cbi8qKiBHZXQgdGhlIFwidGl0bGVcIiBmb3IgYSBmaWxlLCBieSBzdHJpcHBpbmcgb3RoZXIgcGFydHMgb2YgdGhlIHBhdGggYXMgd2VsbCBhcyB0aGUgZXh0ZW5zaW9uLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEZpbGVUaXRsZShwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmIChwYXRoLmluY2x1ZGVzKFwiL1wiKSkgcGF0aCA9IHBhdGguc3Vic3RyaW5nKHBhdGgubGFzdEluZGV4T2YoXCIvXCIpICsgMSk7XG4gICAgaWYgKHBhdGguZW5kc1dpdGgoXCIubWRcIikpIHBhdGggPSBwYXRoLnN1YnN0cmluZygwLCBwYXRoLmxlbmd0aCAtIDMpO1xuICAgIHJldHVybiBwYXRoO1xufVxuXG4vKiogR2V0IHRoZSBleHRlbnNpb24gb2YgYSBmaWxlIGZyb20gdGhlIGZpbGUgcGF0aC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRFeHRlbnNpb24ocGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIXBhdGguaW5jbHVkZXMoXCIuXCIpKSByZXR1cm4gXCJcIjtcbiAgICByZXR1cm4gcGF0aC5zdWJzdHJpbmcocGF0aC5sYXN0SW5kZXhPZihcIi5cIikgKyAxKTtcbn1cblxuLy8gVGFnIGV4dHJhY3Rpb24uXG5cbi8qKiBQYXJzZSBhbGwgc3VidGFncyBvdXQgb2YgdGhlIGdpdmVuIHRhZy4gSS5lLiwgI2hlbGxvL2kvYW0gd291bGQgeWllbGQgWyNoZWxsby9pL2FtLCAjaGVsbG8vaSwgI2hlbGxvXS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0U3VidGFncyh0YWdzOiBzdHJpbmcgfCBJdGVyYWJsZTxzdHJpbmc+KTogc3RyaW5nW10ge1xuICAgIGxldCByZXN1bHQgPSBbXTtcbiAgICBmb3IgKGxldCB0YWcgb2YgdHlwZW9mIHRhZ3MgPT09IFwic3RyaW5nXCIgPyBbdGFnc10gOiB0YWdzKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKHRhZyk7XG4gICAgICAgIHdoaWxlICh0YWcuaW5jbHVkZXMoXCIvXCIpKSB7XG4gICAgICAgICAgICB0YWcgPSB0YWcuc3Vic3RyaW5nKDAsIHRhZy5sYXN0SW5kZXhPZihcIi9cIikpO1xuICAgICAgICAgICAgcmVzdWx0LnB1c2godGFnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKiBTcGxpdCBlYWNoIGJsb2NrIGFuZCBzZWN0aW9uIGxpbmsgaW50byB0aGUgb3JpZ2luYWwgbGluayBhbmQgYSBjb3JyZXNwb25kaW5nIGZpbGUgbGluay4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0RmlsZUxpbmtzKGVsaW5rczogTGlua1tdKTogTGlua1tdIHtcbiAgICBjb25zdCByZXN1bHQ6IExpbmtbXSA9IFtdO1xuICAgIGZvciAoY29uc3QgbGluayBvZiBlbGlua3MpIHtcbiAgICAgICAgcmVzdWx0LnB1c2gobGluayk7XG5cbiAgICAgICAgY29uc3QgZmlsZUxpbmsgPSBsaW5rLnRvRmlsZSgpO1xuICAgICAgICBpZiAobGluay50eXBlICE9IFwiZmlsZVwiICYmICFyZXN1bHQuZmluZCgoZXhpc3RpbmcpID0+IGV4aXN0aW5nLmVxdWFscyhmaWxlTGluaykpKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaChmaWxlTGluayk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuXG4vLyBTdHJpbmcgZXNjYXBpbmcgYW5kIGNhbm9uaWNhbGl6YXRpb24uXG5cbi8qKlxuICogRXNjYXBlIHJlZ2V4IGNoYXJhY3RlcnMgaW4gYSBzdHJpbmcuXG4gKiBTZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9HdWlkZS9SZWd1bGFyX0V4cHJlc3Npb25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXNjYXBlUmVnZXgoc3RyOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gc3RyLnJlcGxhY2UoL1suKis/XiR7fSgpfFtcXF1cXFxcXS9nLCBcIlxcXFwkJlwiKTtcbn1cblxuY29uc3QgSEVBREVSX0NBTk9OSUNBTElaRVI6IFAuUGFyc2VyPHN0cmluZz4gPSBQLmFsdChcbiAgICBQLnJlZ2V4KG5ldyBSZWdFeHAoZW1vamlSZWdleCgpLCBcIlwiKSksXG4gICAgUC5yZWdleCgvWzAtOVxccHtMZXR0ZXJ9Xy1dKy91KSxcbiAgICBQLndoaXRlc3BhY2UubWFwKChfKSA9PiBcIiBcIiksXG4gICAgUC5hbnkubWFwKChfKSA9PiBcIiBcIilcbilcbiAgICAubWFueSgpXG4gICAgLm1hcCgocmVzdWx0KSA9PiB7XG4gICAgICAgIHJldHVybiByZXN1bHQuam9pbihcIlwiKS5zcGxpdCgvXFxzKy8pLmpvaW4oXCIgXCIpLnRyaW0oKTtcbiAgICB9KTtcblxuLyoqXG4gKiBOb3JtYWxpemVzIHRoZSB0ZXh0IGluIGEgaGVhZGVyIHRvIGJlIHNvbWV0aGluZyB0aGF0IGlzIGFjdHVhbGx5IGxpbmthYmxlIHRvLiBUaGlzIG1pbWljc1xuICogaG93IE9ic2lkaWFuIGRvZXMgaXQncyBub3JtYWxpemF0aW9uLCBjb2xsYXBzaW5nIHJlcGVhdGVkIHNwYWNlcyBhbmQgc3RyaXBwaW5nIG91dCBjb250cm9sIGNoYXJhY3RlcnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVIZWFkZXJGb3JMaW5rKGhlYWRlcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gSEVBREVSX0NBTk9OSUNBTElaRVIudHJ5UGFyc2UoaGVhZGVyKTtcbn1cblxuLy8gRmFzdCBleHRyYWN0aW9uIG9mIGxpbmUgcmFuZ2VzIGZyb20gbGFyZ2UgcGllY2VzIG9mIHRleHQuXG5cbi8qKiBVcGRhdGUgdGhlIGxpbmUgcmFuZ2UgZnJvbSBbc3RhcnQsIGVuZCkgd2l0aCB0aGUgZ2l2ZW4gZnVuY3Rpb24uICovXG5leHBvcnQgZnVuY3Rpb24gbGluZVJlcGxhY2UodGV4dDogc3RyaW5nLCBzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlciwgZnVuYzogKGxpbmU6IHN0cmluZykgPT4gc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBbZGF0YSwgb2Zmc2V0XSA9IGxpbmVTcGFuKHRleHQsIHN0YXJ0LCBlbmQpO1xuICAgIGlmICghb2Zmc2V0KSByZXR1cm4gdGV4dDtcblxuICAgIHJldHVybiAoXG4gICAgICAgIGRhdGEuc3Vic3RyaW5nKDAsIG9mZnNldC5zdGFydCkgKyBmdW5jKGRhdGEuc3Vic3RyaW5nKG9mZnNldC5zdGFydCwgb2Zmc2V0LmVuZCkpICsgZGF0YS5zdWJzdHJpbmcob2Zmc2V0LmVuZClcbiAgICApO1xufVxuXG4vKiogRXh0cmFjdCB0aGUgbGluZXMgaW4gdGhlIHJhbmdlIFtzdGFydCwgZW5kKSwgYXMgd2VsbCBhcyB0aGUgYWN0dWFsIG9mZnNldHMgb2YgdGhlIHN0YXJ0IGFuZCBlbmQuICovXG5leHBvcnQgZnVuY3Rpb24gbGluZVNwYW4oXG4gICAgdGV4dDogc3RyaW5nLFxuICAgIHN0YXJ0OiBudW1iZXIsXG4gICAgZW5kOiBudW1iZXJcbik6IFtzdHJpbmcsIHsgc3RhcnQ6IG51bWJlcjsgZW5kOiBudW1iZXIgfSB8IHVuZGVmaW5lZF0ge1xuICAgIHN0YXJ0ID0gTWF0aC5tYXgoc3RhcnQsIDApO1xuICAgIGVuZCA9IE1hdGgubWF4KGVuZCwgMCk7XG5cbiAgICBpZiAoc3RhcnQgPj0gZW5kKSByZXR1cm4gW1wiXCIsIHVuZGVmaW5lZF07XG5cbiAgICAvLyBTdGFydCBieSBmaW5kaW5nIHRoZSBzdGFydGluZyBsaW5lIG9mZnNldC5cbiAgICBjb25zdCBzdGFydE9mZnNldCA9IHNraXBOZXdsaW5lcyh0ZXh0LCAwLCBzdGFydCk7XG4gICAgaWYgKHN0YXJ0T2Zmc2V0ID09IC0xKSByZXR1cm4gW1wiXCIsIHVuZGVmaW5lZF07XG5cbiAgICBjb25zdCBlbmRPZmZzZXQgPSBza2lwTmV3bGluZXModGV4dCwgc3RhcnRPZmZzZXQsIGVuZCAtIHN0YXJ0KTtcbiAgICBpZiAoZW5kT2Zmc2V0ID09IC0xKSByZXR1cm4gW3RleHQuc3Vic3RyaW5nKHN0YXJ0T2Zmc2V0KSwgeyBzdGFydDogc3RhcnRPZmZzZXQsIGVuZDogdGV4dC5sZW5ndGggfV07XG4gICAgZWxzZSByZXR1cm4gW3RleHQuc3Vic3RyaW5nKHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQgLSAxKSwgeyBzdGFydDogc3RhcnRPZmZzZXQsIGVuZDogZW5kT2Zmc2V0IC0gMSB9XTtcbn1cblxuLyoqIEV4dHJhY3QgdGhlIGxpbmVzIGluIHRoZSByYW5nZSBbc3RhcnQsIGVuZCkuIFN0YXJ0IGlzIGluY2x1c2l2ZSwgZW5kIGlzIGV4Y2x1c2l2ZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsaW5lUmFuZ2UodGV4dDogc3RyaW5nLCBzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIGxpbmVTcGFuKHRleHQsIHN0YXJ0LCBlbmQpWzBdO1xufVxuXG4vKiogU2tpcCB7Y291bnR9IHRvdGFsIG5ld2xpbmVzLCByZXR1cm5pbmcgdGhlIHN0YXJ0IG9mIHRoZSBsaW5lIHtjb3VudH0gbGluZXMgYWZ0ZXIgdGhlIGN1cnJlbnQgbGluZS4gSWYgY291bnQgaXMgMCwgdGhlIGluaXRpYWwgb2Zmc2V0IGlzIHJldHVybmVkLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNraXBOZXdsaW5lcyh0ZXh0OiBzdHJpbmcsIHN0YXJ0OiBudW1iZXIsIGNvdW50OiBudW1iZXIpOiBudW1iZXIge1xuICAgIGlmIChjb3VudCA9PSAwKSByZXR1cm4gc3RhcnQ7XG5cbiAgICBsZXQgcG9zaXRpb24gPSBzdGFydDtcbiAgICB3aGlsZSAoY291bnQgPiAwKSB7XG4gICAgICAgIHBvc2l0aW9uID0gdGV4dC5pbmRleE9mKFwiXFxuXCIsIHBvc2l0aW9uKTtcbiAgICAgICAgaWYgKHBvc2l0aW9uID09IC0xKSByZXR1cm4gLTE7XG5cbiAgICAgICAgY291bnQtLTtcbiAgICAgICAgcG9zaXRpb24gKz0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gcG9zaXRpb247XG59XG4iLCAiZXhwb3J0IGRlZmF1bHQgKCkgPT4ge1xuXHQvLyBodHRwczovL210aHMuYmUvZW1vamlcblx0cmV0dXJuIC9bIyowLTldXFx1RkUwRj9cXHUyMEUzfFtcXHhBOVxceEFFXFx1MjAzQ1xcdTIwNDlcXHUyMTIyXFx1MjEzOVxcdTIxOTQtXFx1MjE5OVxcdTIxQTlcXHUyMUFBXFx1MjMxQVxcdTIzMUJcXHUyMzI4XFx1MjNDRlxcdTIzRUQtXFx1MjNFRlxcdTIzRjFcXHUyM0YyXFx1MjNGOC1cXHUyM0ZBXFx1MjRDMlxcdTI1QUFcXHUyNUFCXFx1MjVCNlxcdTI1QzBcXHUyNUZCXFx1MjVGQ1xcdTI1RkVcXHUyNjAwLVxcdTI2MDRcXHUyNjBFXFx1MjYxMVxcdTI2MTRcXHUyNjE1XFx1MjYxOFxcdTI2MjBcXHUyNjIyXFx1MjYyM1xcdTI2MjZcXHUyNjJBXFx1MjYyRVxcdTI2MkZcXHUyNjM4LVxcdTI2M0FcXHUyNjQwXFx1MjY0MlxcdTI2NDgtXFx1MjY1M1xcdTI2NUZcXHUyNjYwXFx1MjY2M1xcdTI2NjVcXHUyNjY2XFx1MjY2OFxcdTI2N0JcXHUyNjdFXFx1MjY3RlxcdTI2OTJcXHUyNjk0LVxcdTI2OTdcXHUyNjk5XFx1MjY5QlxcdTI2OUNcXHUyNkEwXFx1MjZBN1xcdTI2QUFcXHUyNkIwXFx1MjZCMVxcdTI2QkRcXHUyNkJFXFx1MjZDNFxcdTI2QzhcXHUyNkNGXFx1MjZEMVxcdTI2RTlcXHUyNkYwLVxcdTI2RjVcXHUyNkY3XFx1MjZGOFxcdTI2RkFcXHUyNzAyXFx1MjcwOFxcdTI3MDlcXHUyNzBGXFx1MjcxMlxcdTI3MTRcXHUyNzE2XFx1MjcxRFxcdTI3MjFcXHUyNzMzXFx1MjczNFxcdTI3NDRcXHUyNzQ3XFx1Mjc1N1xcdTI3NjNcXHUyN0ExXFx1MjkzNFxcdTI5MzVcXHUyQjA1LVxcdTJCMDdcXHUyQjFCXFx1MkIxQ1xcdTJCNTVcXHUzMDMwXFx1MzAzRFxcdTMyOTdcXHUzMjk5XVxcdUZFMEY/fFtcXHUyNjFEXFx1MjcwQ1xcdTI3MERdKD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdfFxcdUZFMEYpP3xbXFx1MjcwQVxcdTI3MEJdKD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKT98W1xcdTIzRTktXFx1MjNFQ1xcdTIzRjBcXHUyM0YzXFx1MjVGRFxcdTI2OTNcXHUyNkExXFx1MjZBQlxcdTI2QzVcXHUyNkNFXFx1MjZENFxcdTI2RUFcXHUyNkZEXFx1MjcwNVxcdTI3MjhcXHUyNzRDXFx1Mjc0RVxcdTI3NTMtXFx1Mjc1NVxcdTI3OTUtXFx1Mjc5N1xcdTI3QjBcXHUyN0JGXFx1MkI1MF18XFx1MjZEM1xcdUZFMEY/KD86XFx1MjAwRFxcdUQ4M0RcXHVEQ0E1KT98XFx1MjZGOSg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXXxcXHVGRTBGKT8oPzpcXHUyMDBEW1xcdTI2NDBcXHUyNjQyXVxcdUZFMEY/KT98XFx1Mjc2NFxcdUZFMEY/KD86XFx1MjAwRCg/OlxcdUQ4M0RcXHVERDI1fFxcdUQ4M0VcXHVERTc5KSk/fFxcdUQ4M0MoPzpbXFx1REMwNFxcdURENzBcXHVERDcxXFx1REQ3RVxcdUREN0ZcXHVERTAyXFx1REUzN1xcdURGMjFcXHVERjI0LVxcdURGMkNcXHVERjM2XFx1REY3RFxcdURGOTZcXHVERjk3XFx1REY5OS1cXHVERjlCXFx1REY5RVxcdURGOUZcXHVERkNEXFx1REZDRVxcdURGRDQtXFx1REZERlxcdURGRjVcXHVERkY3XVxcdUZFMEY/fFtcXHVERjg1XFx1REZDMlxcdURGQzddKD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKT98W1xcdURGQzRcXHVERkNBXSg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSk/KD86XFx1MjAwRFtcXHUyNjQwXFx1MjY0Ml1cXHVGRTBGPyk/fFtcXHVERkNCXFx1REZDQ10oPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl18XFx1RkUwRik/KD86XFx1MjAwRFtcXHUyNjQwXFx1MjY0Ml1cXHVGRTBGPyk/fFtcXHVEQ0NGXFx1REQ4RVxcdUREOTEtXFx1REQ5QVxcdURFMDFcXHVERTFBXFx1REUyRlxcdURFMzItXFx1REUzNlxcdURFMzgtXFx1REUzQVxcdURFNTBcXHVERTUxXFx1REYwMC1cXHVERjIwXFx1REYyRC1cXHVERjM1XFx1REYzNy1cXHVERjQzXFx1REY0NS1cXHVERjRBXFx1REY0Qy1cXHVERjdDXFx1REY3RS1cXHVERjg0XFx1REY4Ni1cXHVERjkzXFx1REZBMC1cXHVERkMxXFx1REZDNVxcdURGQzZcXHVERkM4XFx1REZDOVxcdURGQ0YtXFx1REZEM1xcdURGRTAtXFx1REZGMFxcdURGRjgtXFx1REZGRl18XFx1RERFNlxcdUQ4M0NbXFx1RERFOC1cXHVEREVDXFx1RERFRVxcdURERjFcXHVEREYyXFx1RERGNFxcdURERjYtXFx1RERGQVxcdURERkNcXHVEREZEXFx1RERGRl18XFx1RERFN1xcdUQ4M0NbXFx1RERFNlxcdURERTdcXHVEREU5LVxcdURERUZcXHVEREYxLVxcdURERjRcXHVEREY2LVxcdURERjlcXHVEREZCXFx1RERGQ1xcdURERkVcXHVEREZGXXxcXHVEREU4XFx1RDgzQ1tcXHVEREU2XFx1RERFOFxcdURERTlcXHVEREVCLVxcdURERUVcXHVEREYwLVxcdURERjdcXHVEREZBLVxcdURERkZdfFxcdURERTlcXHVEODNDW1xcdURERUFcXHVEREVDXFx1RERFRlxcdURERjBcXHVEREYyXFx1RERGNFxcdURERkZdfFxcdURERUFcXHVEODNDW1xcdURERTZcXHVEREU4XFx1RERFQVxcdURERUNcXHVEREVEXFx1RERGNy1cXHVEREZBXXxcXHVEREVCXFx1RDgzQ1tcXHVEREVFLVxcdURERjBcXHVEREYyXFx1RERGNFxcdURERjddfFxcdURERUNcXHVEODNDW1xcdURERTZcXHVEREU3XFx1RERFOS1cXHVEREVFXFx1RERGMS1cXHVEREYzXFx1RERGNS1cXHVEREZBXFx1RERGQ1xcdURERkVdfFxcdURERURcXHVEODNDW1xcdURERjBcXHVEREYyXFx1RERGM1xcdURERjdcXHVEREY5XFx1RERGQV18XFx1RERFRVxcdUQ4M0NbXFx1RERFOC1cXHVEREVBXFx1RERGMS1cXHVEREY0XFx1RERGNi1cXHVEREY5XXxcXHVEREVGXFx1RDgzQ1tcXHVEREVBXFx1RERGMlxcdURERjRcXHVEREY1XXxcXHVEREYwXFx1RDgzQ1tcXHVEREVBXFx1RERFQy1cXHVEREVFXFx1RERGMlxcdURERjNcXHVEREY1XFx1RERGN1xcdURERkNcXHVEREZFXFx1RERGRl18XFx1RERGMVxcdUQ4M0NbXFx1RERFNi1cXHVEREU4XFx1RERFRVxcdURERjBcXHVEREY3LVxcdURERkJcXHVEREZFXXxcXHVEREYyXFx1RDgzQ1tcXHVEREU2XFx1RERFOC1cXHVEREVEXFx1RERGMC1cXHVEREZGXXxcXHVEREYzXFx1RDgzQ1tcXHVEREU2XFx1RERFOFxcdURERUEtXFx1RERFQ1xcdURERUVcXHVEREYxXFx1RERGNFxcdURERjVcXHVEREY3XFx1RERGQVxcdURERkZdfFxcdURERjRcXHVEODNDXFx1RERGMnxcXHVEREY1XFx1RDgzQ1tcXHVEREU2XFx1RERFQS1cXHVEREVEXFx1RERGMC1cXHVEREYzXFx1RERGNy1cXHVEREY5XFx1RERGQ1xcdURERkVdfFxcdURERjZcXHVEODNDXFx1RERFNnxcXHVEREY3XFx1RDgzQ1tcXHVEREVBXFx1RERGNFxcdURERjhcXHVEREZBXFx1RERGQ118XFx1RERGOFxcdUQ4M0NbXFx1RERFNi1cXHVEREVBXFx1RERFQy1cXHVEREY0XFx1RERGNy1cXHVEREY5XFx1RERGQlxcdURERkQtXFx1RERGRl18XFx1RERGOVxcdUQ4M0NbXFx1RERFNlxcdURERThcXHVEREU5XFx1RERFQi1cXHVEREVEXFx1RERFRi1cXHVEREY0XFx1RERGN1xcdURERjlcXHVEREZCXFx1RERGQ1xcdURERkZdfFxcdURERkFcXHVEODNDW1xcdURERTZcXHVEREVDXFx1RERGMlxcdURERjNcXHVEREY4XFx1RERGRVxcdURERkZdfFxcdURERkJcXHVEODNDW1xcdURERTZcXHVEREU4XFx1RERFQVxcdURERUNcXHVEREVFXFx1RERGM1xcdURERkFdfFxcdURERkNcXHVEODNDW1xcdURERUJcXHVEREY4XXxcXHVEREZEXFx1RDgzQ1xcdURERjB8XFx1RERGRVxcdUQ4M0NbXFx1RERFQVxcdURERjldfFxcdURERkZcXHVEODNDW1xcdURERTZcXHVEREYyXFx1RERGQ118XFx1REY0NCg/OlxcdTIwMERcXHVEODNEXFx1REZFQik/fFxcdURGNEIoPzpcXHUyMDBEXFx1RDgzRFxcdURGRTkpP3xcXHVERkMzKD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKT8oPzpcXHUyMDBEKD86W1xcdTI2NDBcXHUyNjQyXVxcdUZFMEY/KD86XFx1MjAwRFxcdTI3QTFcXHVGRTBGPyk/fFxcdTI3QTFcXHVGRTBGPykpP3xcXHVERkYzXFx1RkUwRj8oPzpcXHUyMDBEKD86XFx1MjZBN1xcdUZFMEY/fFxcdUQ4M0NcXHVERjA4KSk/fFxcdURGRjQoPzpcXHUyMDBEXFx1MjYyMFxcdUZFMEY/fFxcdURCNDBcXHVEQzY3XFx1REI0MFxcdURDNjJcXHVEQjQwKD86XFx1REM2NVxcdURCNDBcXHVEQzZFXFx1REI0MFxcdURDNjd8XFx1REM3M1xcdURCNDBcXHVEQzYzXFx1REI0MFxcdURDNzR8XFx1REM3N1xcdURCNDBcXHVEQzZDXFx1REI0MFxcdURDNzMpXFx1REI0MFxcdURDN0YpPyl8XFx1RDgzRCg/OltcXHVEQzNGXFx1RENGRFxcdURENDlcXHVERDRBXFx1REQ2RlxcdURENzBcXHVERDczXFx1REQ3Ni1cXHVERDc5XFx1REQ4N1xcdUREOEEtXFx1REQ4RFxcdUREQTVcXHVEREE4XFx1RERCMVxcdUREQjJcXHVEREJDXFx1RERDMi1cXHVEREM0XFx1REREMS1cXHVEREQzXFx1REREQy1cXHVERERFXFx1RERFMVxcdURERTNcXHVEREU4XFx1RERFRlxcdURERjNcXHVEREZBXFx1REVDQlxcdURFQ0QtXFx1REVDRlxcdURFRTAtXFx1REVFNVxcdURFRTlcXHVERUYwXFx1REVGM11cXHVGRTBGP3xbXFx1REM0MlxcdURDNDNcXHVEQzQ2LVxcdURDNTBcXHVEQzY2XFx1REM2N1xcdURDNkItXFx1REM2RFxcdURDNzJcXHVEQzc0LVxcdURDNzZcXHVEQzc4XFx1REM3Q1xcdURDODNcXHVEQzg1XFx1REM4RlxcdURDOTFcXHVEQ0FBXFx1REQ3QVxcdUREOTVcXHVERDk2XFx1REU0Q1xcdURFNEZcXHVERUMwXFx1REVDQ10oPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pP3xbXFx1REM2RVxcdURDNzBcXHVEQzcxXFx1REM3M1xcdURDNzdcXHVEQzgxXFx1REM4MlxcdURDODZcXHVEQzg3XFx1REU0NS1cXHVERTQ3XFx1REU0QlxcdURFNERcXHVERTRFXFx1REVBM1xcdURFQjRcXHVERUI1XSg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSk/KD86XFx1MjAwRFtcXHUyNjQwXFx1MjY0Ml1cXHVGRTBGPyk/fFtcXHVERDc0XFx1REQ5MF0oPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl18XFx1RkUwRik/fFtcXHVEQzAwLVxcdURDMDdcXHVEQzA5LVxcdURDMTRcXHVEQzE2LVxcdURDMjVcXHVEQzI3LVxcdURDM0FcXHVEQzNDLVxcdURDM0VcXHVEQzQwXFx1REM0NFxcdURDNDVcXHVEQzUxLVxcdURDNjVcXHVEQzZBXFx1REM3OS1cXHVEQzdCXFx1REM3RC1cXHVEQzgwXFx1REM4NFxcdURDODgtXFx1REM4RVxcdURDOTBcXHVEQzkyLVxcdURDQTlcXHVEQ0FCLVxcdURDRkNcXHVEQ0ZGLVxcdUREM0RcXHVERDRCLVxcdURENEVcXHVERDUwLVxcdURENjdcXHVEREE0XFx1RERGQi1cXHVERTJEXFx1REUyRi1cXHVERTM0XFx1REUzNy1cXHVERTQxXFx1REU0M1xcdURFNDRcXHVERTQ4LVxcdURFNEFcXHVERTgwLVxcdURFQTJcXHVERUE0LVxcdURFQjNcXHVERUI3LVxcdURFQkZcXHVERUMxLVxcdURFQzVcXHVERUQwLVxcdURFRDJcXHVERUQ1LVxcdURFRDdcXHVERURDLVxcdURFREZcXHVERUVCXFx1REVFQ1xcdURFRjQtXFx1REVGQ1xcdURGRTAtXFx1REZFQlxcdURGRjBdfFxcdURDMDgoPzpcXHUyMDBEXFx1MkIxQik/fFxcdURDMTUoPzpcXHUyMDBEXFx1RDgzRVxcdUREQkEpP3xcXHVEQzI2KD86XFx1MjAwRCg/OlxcdTJCMUJ8XFx1RDgzRFxcdUREMjUpKT98XFx1REMzQig/OlxcdTIwMERcXHUyNzQ0XFx1RkUwRj8pP3xcXHVEQzQxXFx1RkUwRj8oPzpcXHUyMDBEXFx1RDgzRFxcdURERThcXHVGRTBGPyk/fFxcdURDNjgoPzpcXHUyMDBEKD86W1xcdTI2OTVcXHUyNjk2XFx1MjcwOF1cXHVGRTBGP3xcXHUyNzY0XFx1RkUwRj9cXHUyMDBEXFx1RDgzRCg/OlxcdURDOEJcXHUyMDBEXFx1RDgzRCk/XFx1REM2OHxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEKD86W1xcdURDNjhcXHVEQzY5XVxcdTIwMERcXHVEODNEKD86XFx1REM2Nig/OlxcdTIwMERcXHVEODNEXFx1REM2Nik/fFxcdURDNjcoPzpcXHUyMDBEXFx1RDgzRFtcXHVEQzY2XFx1REM2N10pPyl8W1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1REM2Nig/OlxcdTIwMERcXHVEODNEXFx1REM2Nik/fFxcdURDNjcoPzpcXHUyMDBEXFx1RDgzRFtcXHVEQzY2XFx1REM2N10pPyl8XFx1RDgzRSg/OltcXHVEREFGXFx1RERCQ1xcdUREQkRdKD86XFx1MjAwRFxcdTI3QTFcXHVGRTBGPyk/fFtcXHVEREIwLVxcdUREQjNdKSl8XFx1RDgzQyg/OlxcdURGRkIoPzpcXHUyMDBEKD86W1xcdTI2OTVcXHUyNjk2XFx1MjcwOF1cXHVGRTBGP3xcXHUyNzY0XFx1RkUwRj9cXHUyMDBEXFx1RDgzRCg/OlxcdURDOEJcXHUyMDBEXFx1RDgzRCk/XFx1REM2OFxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXXxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRSg/OltcXHVEREFGXFx1RERCQ1xcdUREQkRdKD86XFx1MjAwRFxcdTI3QTFcXHVGRTBGPyk/fFtcXHVEREIwLVxcdUREQjNdfFxcdUREMURcXHUyMDBEXFx1RDgzRFxcdURDNjhcXHVEODNDW1xcdURGRkMtXFx1REZGRl0pKSk/fFxcdURGRkMoPzpcXHUyMDBEKD86W1xcdTI2OTVcXHUyNjk2XFx1MjcwOF1cXHVGRTBGP3xcXHUyNzY0XFx1RkUwRj9cXHUyMDBEXFx1RDgzRCg/OlxcdURDOEJcXHUyMDBEXFx1RDgzRCk/XFx1REM2OFxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXXxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRSg/OltcXHVEREFGXFx1RERCQ1xcdUREQkRdKD86XFx1MjAwRFxcdTI3QTFcXHVGRTBGPyk/fFtcXHVEREIwLVxcdUREQjNdfFxcdUREMURcXHUyMDBEXFx1RDgzRFxcdURDNjhcXHVEODNDW1xcdURGRkJcXHVERkZELVxcdURGRkZdKSkpP3xcXHVERkZEKD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRFxcdUQ4M0QoPzpcXHVEQzhCXFx1MjAwRFxcdUQ4M0QpP1xcdURDNjhcXHVEODNDW1xcdURGRkItXFx1REZGRl18XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0UoPzpbXFx1RERBRlxcdUREQkNcXHVEREJEXSg/OlxcdTIwMERcXHUyN0ExXFx1RkUwRj8pP3xbXFx1RERCMC1cXHVEREIzXXxcXHVERDFEXFx1MjAwRFxcdUQ4M0RcXHVEQzY4XFx1RDgzQ1tcXHVERkZCXFx1REZGQ1xcdURGRkVcXHVERkZGXSkpKT98XFx1REZGRSg/OlxcdTIwMEQoPzpbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XVxcdUZFMEY/fFxcdTI3NjRcXHVGRTBGP1xcdTIwMERcXHVEODNEKD86XFx1REM4QlxcdTIwMERcXHVEODNEKT9cXHVEQzY4XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFKD86W1xcdUREQUZcXHVEREJDXFx1RERCRF0oPzpcXHUyMDBEXFx1MjdBMVxcdUZFMEY/KT98W1xcdUREQjAtXFx1RERCM118XFx1REQxRFxcdTIwMERcXHVEODNEXFx1REM2OFxcdUQ4M0NbXFx1REZGQi1cXHVERkZEXFx1REZGRl0pKSk/fFxcdURGRkYoPzpcXHUyMDBEKD86W1xcdTI2OTVcXHUyNjk2XFx1MjcwOF1cXHVGRTBGP3xcXHUyNzY0XFx1RkUwRj9cXHUyMDBEXFx1RDgzRCg/OlxcdURDOEJcXHUyMDBEXFx1RDgzRCk/XFx1REM2OFxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXXxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRSg/OltcXHVEREFGXFx1RERCQ1xcdUREQkRdKD86XFx1MjAwRFxcdTI3QTFcXHVGRTBGPyk/fFtcXHVEREIwLVxcdUREQjNdfFxcdUREMURcXHUyMDBEXFx1RDgzRFxcdURDNjhcXHVEODNDW1xcdURGRkItXFx1REZGRV0pKSk/KSk/fFxcdURDNjkoPzpcXHUyMDBEKD86W1xcdTI2OTVcXHUyNjk2XFx1MjcwOF1cXHVGRTBGP3xcXHUyNzY0XFx1RkUwRj9cXHUyMDBEXFx1RDgzRCg/OlxcdURDOEJcXHUyMDBEXFx1RDgzRCk/W1xcdURDNjhcXHVEQzY5XXxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEKD86W1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1REM2Nig/OlxcdTIwMERcXHVEODNEXFx1REM2Nik/fFxcdURDNjcoPzpcXHUyMDBEXFx1RDgzRFtcXHVEQzY2XFx1REM2N10pP3xcXHVEQzY5XFx1MjAwRFxcdUQ4M0QoPzpcXHVEQzY2KD86XFx1MjAwRFxcdUQ4M0RcXHVEQzY2KT98XFx1REM2Nyg/OlxcdTIwMERcXHVEODNEW1xcdURDNjZcXHVEQzY3XSk/KSl8XFx1RDgzRSg/OltcXHVEREFGXFx1RERCQ1xcdUREQkRdKD86XFx1MjAwRFxcdTI3QTFcXHVGRTBGPyk/fFtcXHVEREIwLVxcdUREQjNdKSl8XFx1RDgzQyg/OlxcdURGRkIoPzpcXHUyMDBEKD86W1xcdTI2OTVcXHUyNjk2XFx1MjcwOF1cXHVGRTBGP3xcXHUyNzY0XFx1RkUwRj9cXHUyMDBEXFx1RDgzRCg/OltcXHVEQzY4XFx1REM2OV18XFx1REM4QlxcdTIwMERcXHVEODNEW1xcdURDNjhcXHVEQzY5XSlcXHVEODNDW1xcdURGRkItXFx1REZGRl18XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0UoPzpbXFx1RERBRlxcdUREQkNcXHVEREJEXSg/OlxcdTIwMERcXHUyN0ExXFx1RkUwRj8pP3xbXFx1RERCMC1cXHVEREIzXXxcXHVERDFEXFx1MjAwRFxcdUQ4M0RbXFx1REM2OFxcdURDNjldXFx1RDgzQ1tcXHVERkZDLVxcdURGRkZdKSkpP3xcXHVERkZDKD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRFxcdUQ4M0QoPzpbXFx1REM2OFxcdURDNjldfFxcdURDOEJcXHUyMDBEXFx1RDgzRFtcXHVEQzY4XFx1REM2OV0pXFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFKD86W1xcdUREQUZcXHVEREJDXFx1RERCRF0oPzpcXHUyMDBEXFx1MjdBMVxcdUZFMEY/KT98W1xcdUREQjAtXFx1RERCM118XFx1REQxRFxcdTIwMERcXHVEODNEW1xcdURDNjhcXHVEQzY5XVxcdUQ4M0NbXFx1REZGQlxcdURGRkQtXFx1REZGRl0pKSk/fFxcdURGRkQoPzpcXHUyMDBEKD86W1xcdTI2OTVcXHUyNjk2XFx1MjcwOF1cXHVGRTBGP3xcXHUyNzY0XFx1RkUwRj9cXHUyMDBEXFx1RDgzRCg/OltcXHVEQzY4XFx1REM2OV18XFx1REM4QlxcdTIwMERcXHVEODNEW1xcdURDNjhcXHVEQzY5XSlcXHVEODNDW1xcdURGRkItXFx1REZGRl18XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0UoPzpbXFx1RERBRlxcdUREQkNcXHVEREJEXSg/OlxcdTIwMERcXHUyN0ExXFx1RkUwRj8pP3xbXFx1RERCMC1cXHVEREIzXXxcXHVERDFEXFx1MjAwRFxcdUQ4M0RbXFx1REM2OFxcdURDNjldXFx1RDgzQ1tcXHVERkZCXFx1REZGQ1xcdURGRkVcXHVERkZGXSkpKT98XFx1REZGRSg/OlxcdTIwMEQoPzpbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XVxcdUZFMEY/fFxcdTI3NjRcXHVGRTBGP1xcdTIwMERcXHVEODNEKD86W1xcdURDNjhcXHVEQzY5XXxcXHVEQzhCXFx1MjAwRFxcdUQ4M0RbXFx1REM2OFxcdURDNjldKVxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXXxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRSg/OltcXHVEREFGXFx1RERCQ1xcdUREQkRdKD86XFx1MjAwRFxcdTI3QTFcXHVGRTBGPyk/fFtcXHVEREIwLVxcdUREQjNdfFxcdUREMURcXHUyMDBEXFx1RDgzRFtcXHVEQzY4XFx1REM2OV1cXHVEODNDW1xcdURGRkItXFx1REZGRFxcdURGRkZdKSkpP3xcXHVERkZGKD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRFxcdUQ4M0QoPzpbXFx1REM2OFxcdURDNjldfFxcdURDOEJcXHUyMDBEXFx1RDgzRFtcXHVEQzY4XFx1REM2OV0pXFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFKD86W1xcdUREQUZcXHVEREJDXFx1RERCRF0oPzpcXHUyMDBEXFx1MjdBMVxcdUZFMEY/KT98W1xcdUREQjAtXFx1RERCM118XFx1REQxRFxcdTIwMERcXHVEODNEW1xcdURDNjhcXHVEQzY5XVxcdUQ4M0NbXFx1REZGQi1cXHVERkZFXSkpKT8pKT98XFx1REM2Rig/OlxcdTIwMERbXFx1MjY0MFxcdTI2NDJdXFx1RkUwRj8pP3xcXHVERDc1KD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdfFxcdUZFMEYpPyg/OlxcdTIwMERbXFx1MjY0MFxcdTI2NDJdXFx1RkUwRj8pP3xcXHVERTJFKD86XFx1MjAwRFxcdUQ4M0RcXHVEQ0E4KT98XFx1REUzNSg/OlxcdTIwMERcXHVEODNEXFx1RENBQik/fFxcdURFMzYoPzpcXHUyMDBEXFx1RDgzQ1xcdURGMkJcXHVGRTBGPyk/fFxcdURFNDIoPzpcXHUyMDBEW1xcdTIxOTRcXHUyMTk1XVxcdUZFMEY/KT98XFx1REVCNig/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSk/KD86XFx1MjAwRCg/OltcXHUyNjQwXFx1MjY0Ml1cXHVGRTBGPyg/OlxcdTIwMERcXHUyN0ExXFx1RkUwRj8pP3xcXHUyN0ExXFx1RkUwRj8pKT8pfFxcdUQ4M0UoPzpbXFx1REQwQ1xcdUREMEZcXHVERDE4LVxcdUREMUZcXHVERDMwLVxcdUREMzRcXHVERDM2XFx1REQ3N1xcdUREQjVcXHVEREI2XFx1RERCQlxcdURERDJcXHVEREQzXFx1RERENVxcdURFQzMtXFx1REVDNVxcdURFRjBcXHVERUYyLVxcdURFRjhdKD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKT98W1xcdUREMjZcXHVERDM1XFx1REQzNy1cXHVERDM5XFx1REQzRFxcdUREM0VcXHVEREI4XFx1RERCOVxcdUREQ0RcXHVERENGXFx1RERENFxcdURERDYtXFx1RERERF0oPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pPyg/OlxcdTIwMERbXFx1MjY0MFxcdTI2NDJdXFx1RkUwRj8pP3xbXFx1RERERVxcdUREREZdKD86XFx1MjAwRFtcXHUyNjQwXFx1MjY0Ml1cXHVGRTBGPyk/fFtcXHVERDBEXFx1REQwRVxcdUREMTAtXFx1REQxN1xcdUREMjAtXFx1REQyNVxcdUREMjctXFx1REQyRlxcdUREM0FcXHVERDNGLVxcdURENDVcXHVERDQ3LVxcdURENzZcXHVERDc4LVxcdUREQjRcXHVEREI3XFx1RERCQVxcdUREQkMtXFx1RERDQ1xcdURERDBcXHVEREUwLVxcdURERkZcXHVERTcwLVxcdURFN0NcXHVERTgwLVxcdURFODlcXHVERThGLVxcdURFQzJcXHVERUM2XFx1REVDRS1cXHVERURDXFx1REVERi1cXHVERUU5XXxcXHVERDNDKD86XFx1MjAwRFtcXHUyNjQwXFx1MjY0Ml1cXHVGRTBGP3xcXHVEODNDW1xcdURGRkItXFx1REZGRl0pP3xcXHVERENFKD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKT8oPzpcXHUyMDBEKD86W1xcdTI2NDBcXHUyNjQyXVxcdUZFMEY/KD86XFx1MjAwRFxcdTI3QTFcXHVGRTBGPyk/fFxcdTI3QTFcXHVGRTBGPykpP3xcXHVEREQxKD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjg0XFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFKD86W1xcdUREQUZcXHVEREJDXFx1RERCRF0oPzpcXHUyMDBEXFx1MjdBMVxcdUZFMEY/KT98W1xcdUREQjAtXFx1RERCM118XFx1REQxRFxcdTIwMERcXHVEODNFXFx1REREMXxcXHVEREQxXFx1MjAwRFxcdUQ4M0VcXHVEREQyKD86XFx1MjAwRFxcdUQ4M0VcXHVEREQyKT98XFx1REREMig/OlxcdTIwMERcXHVEODNFXFx1REREMik/KSl8XFx1RDgzQyg/OlxcdURGRkIoPzpcXHUyMDBEKD86W1xcdTI2OTVcXHUyNjk2XFx1MjcwOF1cXHVGRTBGP3xcXHUyNzY0XFx1RkUwRj9cXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEKT9cXHVEODNFXFx1REREMVxcdUQ4M0NbXFx1REZGQy1cXHVERkZGXXxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGODRcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0UoPzpbXFx1RERBRlxcdUREQkNcXHVEREJEXSg/OlxcdTIwMERcXHUyN0ExXFx1RkUwRj8pP3xbXFx1RERCMC1cXHVEREIzXXxcXHVERDFEXFx1MjAwRFxcdUQ4M0VcXHVEREQxXFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKSkpP3xcXHVERkZDKD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRCg/OlxcdUQ4M0RcXHVEQzhCXFx1MjAwRCk/XFx1RDgzRVxcdURERDFcXHVEODNDW1xcdURGRkJcXHVERkZELVxcdURGRkZdfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRSg/OltcXHVEREFGXFx1RERCQ1xcdUREQkRdKD86XFx1MjAwRFxcdTI3QTFcXHVGRTBGPyk/fFtcXHVEREIwLVxcdUREQjNdfFxcdUREMURcXHUyMDBEXFx1RDgzRVxcdURERDFcXHVEODNDW1xcdURGRkItXFx1REZGRl0pKSk/fFxcdURGRkQoPzpcXHUyMDBEKD86W1xcdTI2OTVcXHUyNjk2XFx1MjcwOF1cXHVGRTBGP3xcXHUyNzY0XFx1RkUwRj9cXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEKT9cXHVEODNFXFx1REREMVxcdUQ4M0NbXFx1REZGQlxcdURGRkNcXHVERkZFXFx1REZGRl18XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjg0XFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFKD86W1xcdUREQUZcXHVEREJDXFx1RERCRF0oPzpcXHUyMDBEXFx1MjdBMVxcdUZFMEY/KT98W1xcdUREQjAtXFx1RERCM118XFx1REQxRFxcdTIwMERcXHVEODNFXFx1REREMVxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSkpKT98XFx1REZGRSg/OlxcdTIwMEQoPzpbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XVxcdUZFMEY/fFxcdTI3NjRcXHVGRTBGP1xcdTIwMEQoPzpcXHVEODNEXFx1REM4QlxcdTIwMEQpP1xcdUQ4M0VcXHVEREQxXFx1RDgzQ1tcXHVERkZCLVxcdURGRkRcXHVERkZGXXxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGODRcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0UoPzpbXFx1RERBRlxcdUREQkNcXHVEREJEXSg/OlxcdTIwMERcXHUyN0ExXFx1RkUwRj8pP3xbXFx1RERCMC1cXHVEREIzXXxcXHVERDFEXFx1MjAwRFxcdUQ4M0VcXHVEREQxXFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKSkpP3xcXHVERkZGKD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRCg/OlxcdUQ4M0RcXHVEQzhCXFx1MjAwRCk/XFx1RDgzRVxcdURERDFcXHVEODNDW1xcdURGRkItXFx1REZGRV18XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjg0XFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFKD86W1xcdUREQUZcXHVEREJDXFx1RERCRF0oPzpcXHUyMDBEXFx1MjdBMVxcdUZFMEY/KT98W1xcdUREQjAtXFx1RERCM118XFx1REQxRFxcdTIwMERcXHVEODNFXFx1REREMVxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSkpKT8pKT98XFx1REVGMSg/OlxcdUQ4M0MoPzpcXHVERkZCKD86XFx1MjAwRFxcdUQ4M0VcXHVERUYyXFx1RDgzQ1tcXHVERkZDLVxcdURGRkZdKT98XFx1REZGQyg/OlxcdTIwMERcXHVEODNFXFx1REVGMlxcdUQ4M0NbXFx1REZGQlxcdURGRkQtXFx1REZGRl0pP3xcXHVERkZEKD86XFx1MjAwRFxcdUQ4M0VcXHVERUYyXFx1RDgzQ1tcXHVERkZCXFx1REZGQ1xcdURGRkVcXHVERkZGXSk/fFxcdURGRkUoPzpcXHUyMDBEXFx1RDgzRVxcdURFRjJcXHVEODNDW1xcdURGRkItXFx1REZGRFxcdURGRkZdKT98XFx1REZGRig/OlxcdTIwMERcXHVEODNFXFx1REVGMlxcdUQ4M0NbXFx1REZGQi1cXHVERkZFXSk/KSk/KS9nO1xufTtcbiIsICJpbXBvcnQgeyBnZXRGaWxlVGl0bGUsIG5vcm1hbGl6ZUhlYWRlckZvckxpbmsgfSBmcm9tIFwidXRpbHMvbm9ybWFsaXplcnNcIjtcblxuLyoqIFRoZSBPYnNpZGlhbiAnbGluaycsIHVzZWQgZm9yIHVuaXF1ZWx5IGRlc2NyaWJpbmcgYSBmaWxlLCBoZWFkZXIsIG9yIGJsb2NrLlxuICogQGdyb3VwIENvbW1vbiBUeXBlc1xuICovXG5leHBvcnQgY2xhc3MgTGluayB7XG4gICAgLyoqIFRoZSBmaWxlIHBhdGggdGhpcyBsaW5rIHBvaW50cyB0by4gKi9cbiAgICBwdWJsaWMgcGF0aDogc3RyaW5nO1xuICAgIC8qKiBUaGUgZGlzcGxheSBuYW1lIGFzc29jaWF0ZWQgd2l0aCB0aGUgbGluay4gKi9cbiAgICBwdWJsaWMgZGlzcGxheT86IHN0cmluZztcbiAgICAvKiogVGhlIGJsb2NrIElEIG9yIGhlYWRlciB0aGlzIGxpbmsgcG9pbnRzIHRvIHdpdGhpbiBhIGZpbGUsIGlmIHJlbGV2YW50LiAqL1xuICAgIHB1YmxpYyBzdWJwYXRoPzogc3RyaW5nO1xuICAgIC8qKiBJcyB0aGlzIGxpbmsgYW4gZW1iZWRkZWQgbGluayAob2YgZm9ybSAnIVtbaGVsbG9dXScpPyAqL1xuICAgIHB1YmxpYyBlbWJlZDogYm9vbGVhbjtcbiAgICAvKiogVGhlIHR5cGUgb2YgdGhpcyBsaW5rLCB3aGljaCBkZXRlcm1pbmVzIHdoYXQgJ3N1YnBhdGgnIHJlZmVycyB0bywgaWYgYW55dGhpbmcuICovXG4gICAgcHVibGljIHR5cGU6IFwiZmlsZVwiIHwgXCJoZWFkZXJcIiB8IFwiYmxvY2tcIjtcblxuICAgIC8qKiBDcmVhdGUgYSBsaW5rIHRvIGEgc3BlY2lmaWMgZmlsZS4gKi9cbiAgICBwdWJsaWMgc3RhdGljIGZpbGUocGF0aDogc3RyaW5nLCBlbWJlZDogYm9vbGVhbiA9IGZhbHNlLCBkaXNwbGF5Pzogc3RyaW5nKTogTGluayB7XG4gICAgICAgIHJldHVybiBuZXcgTGluayh7XG4gICAgICAgICAgICBwYXRoLFxuICAgICAgICAgICAgZW1iZWQsXG4gICAgICAgICAgICBkaXNwbGF5LFxuICAgICAgICAgICAgc3VicGF0aDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgdHlwZTogXCJmaWxlXCIsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBJbmZlciB0aGUgdHlwZSBvZiB0aGUgbGluayBmcm9tIHRoZSBmdWxsIGludGVybmFsIGxpbmsgcGF0aC4gKi9cbiAgICBwdWJsaWMgc3RhdGljIGluZmVyKGxpbmtwYXRoOiBzdHJpbmcsIGVtYmVkOiBib29sZWFuID0gZmFsc2UsIGRpc3BsYXk/OiBzdHJpbmcpOiBMaW5rIHtcbiAgICAgICAgaWYgKGxpbmtwYXRoLmluY2x1ZGVzKFwiI15cIikpIHtcbiAgICAgICAgICAgIGxldCBzcGxpdCA9IGxpbmtwYXRoLnNwbGl0KFwiI15cIik7XG4gICAgICAgICAgICByZXR1cm4gTGluay5ibG9jayhzcGxpdFswXSwgc3BsaXRbMV0sIGVtYmVkLCBkaXNwbGF5KTtcbiAgICAgICAgfSBlbHNlIGlmIChsaW5rcGF0aC5pbmNsdWRlcyhcIiNcIikpIHtcbiAgICAgICAgICAgIGxldCBzcGxpdCA9IGxpbmtwYXRoLnNwbGl0KFwiI1wiKTtcbiAgICAgICAgICAgIHJldHVybiBMaW5rLmhlYWRlcihzcGxpdFswXSwgc3BsaXRbMV0sIGVtYmVkLCBkaXNwbGF5KTtcbiAgICAgICAgfSBlbHNlIHJldHVybiBMaW5rLmZpbGUobGlua3BhdGgsIGVtYmVkLCBkaXNwbGF5KTtcbiAgICB9XG5cbiAgICAvKiogQ3JlYXRlIGEgbGluayB0byBhIHNwZWNpZmljIGZpbGUgYW5kIGhlYWRlciBpbiB0aGF0IGZpbGUuICovXG4gICAgcHVibGljIHN0YXRpYyBoZWFkZXIocGF0aDogc3RyaW5nLCBoZWFkZXI6IHN0cmluZywgZW1iZWQ/OiBib29sZWFuLCBkaXNwbGF5Pzogc3RyaW5nKTogTGluayB7XG4gICAgICAgIC8vIEhlYWRlcnMgbmVlZCB0byBiZSBub3JtYWxpemVkIHRvIGFscGhhLW51bWVyaWMgJiB3aXRoIGV4dHJhIHNwYWNpbmcgcmVtb3ZlZC5cbiAgICAgICAgcmV0dXJuIG5ldyBMaW5rKHtcbiAgICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgICBlbWJlZCxcbiAgICAgICAgICAgIGRpc3BsYXksXG4gICAgICAgICAgICBzdWJwYXRoOiBub3JtYWxpemVIZWFkZXJGb3JMaW5rKGhlYWRlciksXG4gICAgICAgICAgICB0eXBlOiBcImhlYWRlclwiLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQ3JlYXRlIGEgbGluayB0byBhIHNwZWNpZmljIGZpbGUgYW5kIGJsb2NrIGluIHRoYXQgZmlsZS4gKi9cbiAgICBwdWJsaWMgc3RhdGljIGJsb2NrKHBhdGg6IHN0cmluZywgYmxvY2tJZDogc3RyaW5nLCBlbWJlZD86IGJvb2xlYW4sIGRpc3BsYXk/OiBzdHJpbmcpOiBMaW5rIHtcbiAgICAgICAgcmV0dXJuIG5ldyBMaW5rKHtcbiAgICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgICBlbWJlZCxcbiAgICAgICAgICAgIGRpc3BsYXksXG4gICAgICAgICAgICBzdWJwYXRoOiBibG9ja0lkLFxuICAgICAgICAgICAgdHlwZTogXCJibG9ja1wiLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogTG9hZCBhIGxpbmsgZnJvbSBpdCdzIHJhdyBKU09OIHJlcHJlc2VudGF0aW9uLiAqL1xuICAgIHB1YmxpYyBzdGF0aWMgZnJvbU9iamVjdChvYmplY3Q6IEpzb25MaW5rKTogTGluayB7XG4gICAgICAgIHJldHVybiBuZXcgTGluayhvYmplY3QpO1xuICAgIH1cblxuICAgIC8qKiBDcmVhdGUgYSBsaW5rIGJ5IHBhcnNpbmcgaXQncyBpbnRlcmlvciBwYXJ0IChpbnNpZGUgb2YgdGhlICdbW11dJykuICovXG4gICAgcHVibGljIHN0YXRpYyBwYXJzZUlubmVyKHJhd2xpbms6IHN0cmluZyk6IExpbmsge1xuICAgICAgICBsZXQgW2xpbmssIGRpc3BsYXldID0gc3BsaXRPblVuZXNjYXBlZFBpcGUocmF3bGluayk7XG4gICAgICAgIHJldHVybiBMaW5rLmluZmVyKGxpbmssIGZhbHNlLCBkaXNwbGF5KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbnN0cnVjdG9yKGZpZWxkczogUGFydGlhbDxMaW5rPikge1xuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGZpZWxkcyk7XG4gICAgfVxuXG4gICAgLyoqIFVwZGF0ZSB0aGlzIGxpbmsgd2l0aCBhIG5ldyBwYXRoLiAqL1xuICAgIHB1YmxpYyB3aXRoUGF0aChwYXRoOiBzdHJpbmcpOiBMaW5rIHtcbiAgICAgICAgcmV0dXJuIG5ldyBMaW5rKE9iamVjdC5hc3NpZ24oe30sIHRoaXMsIHsgcGF0aCB9KSk7XG4gICAgfVxuXG4gICAgLyoqIFJldHVybiBhIG5ldyBsaW5rIHdoaWNoIHBvaW50cyB0byB0aGUgc2FtZSBsb2NhdGlvbiBidXQgd2l0aCBhIG5ldyBkaXNwbGF5IHZhbHVlLiAqL1xuICAgIHB1YmxpYyB3aXRoRGlzcGxheShkaXNwbGF5Pzogc3RyaW5nKTogTGluayB7XG4gICAgICAgIHJldHVybiBuZXcgTGluayhPYmplY3QuYXNzaWduKHt9LCB0aGlzLCB7IGRpc3BsYXkgfSkpO1xuICAgIH1cblxuICAgIC8qKiBSZXR1cm4gYSBuZXcgbGluayB3aGljaCBoYXMgdGhlIGdpdmVuIGVtYmVkZGVkIHN0YXR1cy4gKi9cbiAgICBwdWJsaWMgd2l0aEVtYmVkKGVtYmVkOiBib29sZWFuKTogTGluayB7XG4gICAgICAgIGlmICh0aGlzLmVtYmVkID09IGVtYmVkKSByZXR1cm4gdGhpcztcblxuICAgICAgICByZXR1cm4gbmV3IExpbmsoT2JqZWN0LmFzc2lnbih7fSwgdGhpcywgeyBlbWJlZCB9KSk7XG4gICAgfVxuXG4gICAgLyoqIENvbnZlcnQgYSBmaWxlIGxpbmsgaW50byBhIGxpbmsgdG8gYSBzcGVjaWZpYyBoZWFkZXIuICovXG4gICAgcHVibGljIHdpdGhIZWFkZXIoaGVhZGVyOiBzdHJpbmcpOiBMaW5rIHtcbiAgICAgICAgcmV0dXJuIExpbmsuaGVhZGVyKHRoaXMucGF0aCwgaGVhZGVyLCB0aGlzLmVtYmVkLCB0aGlzLmRpc3BsYXkpO1xuICAgIH1cblxuICAgIC8qKiBDb252ZXJ0IGEgZmlsZSBsaW5rIGludG8gYSBsaW5rIHRvIGEgc3BlY2lmaWNiIGxvY2suICovXG4gICAgcHVibGljIHdpdGhCbG9jayhibG9jazogc3RyaW5nKTogTGluayB7XG4gICAgICAgIHJldHVybiBMaW5rLmJsb2NrKHRoaXMucGF0aCwgYmxvY2ssIHRoaXMuZW1iZWQsIHRoaXMuZGlzcGxheSk7XG4gICAgfVxuXG4gICAgLyoqIENoZWNrcyBmb3IgbGluayBlcXVhbGl0eSAoaS5lLiwgdGhhdCB0aGUgbGlua3MgYXJlIHBvaW50aW5nIHRvIHRoZSBzYW1lIGV4YWN0IGxvY2F0aW9uKS4gKi9cbiAgICBwdWJsaWMgZXF1YWxzKG90aGVyOiBMaW5rKTogYm9vbGVhbiB7XG4gICAgICAgIGlmIChvdGhlciA9PSB1bmRlZmluZWQgfHwgb3RoZXIgPT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgICAgIHJldHVybiB0aGlzLnBhdGggPT0gb3RoZXIucGF0aCAmJiB0aGlzLnR5cGUgPT0gb3RoZXIudHlwZSAmJiB0aGlzLnN1YnBhdGggPT0gb3RoZXIuc3VicGF0aDtcbiAgICB9XG5cbiAgICAvKiogQ29udmVydCB0aGlzIGxpbmsgdG8gaXQncyBtYXJrZG93biByZXByZXNlbnRhdGlvbi4gKi9cbiAgICBwdWJsaWMgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFya2Rvd24oKTtcbiAgICB9XG5cbiAgICAvKiogQ29udmVydCB0aGlzIGxpbmsgdG8gYSByYXcgb2JqZWN0IHdoaWNoIGlzIHNlcmlhbGl6YXRpb24tZnJpZW5kbHkuICovXG4gICAgcHVibGljIHRvT2JqZWN0KCk6IEpzb25MaW5rIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHBhdGg6IHRoaXMucGF0aCxcbiAgICAgICAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgICAgICAgIHN1YnBhdGg6IHRoaXMuc3VicGF0aCxcbiAgICAgICAgICAgIGRpc3BsYXk6IHRoaXMuZGlzcGxheSxcbiAgICAgICAgICAgIGVtYmVkOiB0aGlzLmVtYmVkLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKiBDb252ZXJ0IGFueSBsaW5rIGludG8gYSBsaW5rIHRvIGl0cyBmaWxlLiAqL1xuICAgIHB1YmxpYyB0b0ZpbGUoKTogTGluayB7XG4gICAgICAgIHJldHVybiBMaW5rLmZpbGUodGhpcy5wYXRoLCB0aGlzLmVtYmVkLCB0aGlzLmRpc3BsYXkpO1xuICAgIH1cblxuICAgIC8qKiBDb252ZXJ0IHRoaXMgbGluayBpbnRvIGFuIGVtYmVkZGVkIGxpbmsuICovXG4gICAgcHVibGljIHRvRW1iZWQoKTogTGluayB7XG4gICAgICAgIHJldHVybiB0aGlzLndpdGhFbWJlZCh0cnVlKTtcbiAgICB9XG5cbiAgICAvKiogQ29udmVydCB0aGlzIGxpbmsgaW50byBhIG5vbi1lbWJlZGRlZCBsaW5rLiAqL1xuICAgIHB1YmxpYyBmcm9tRW1iZWQoKTogTGluayB7XG4gICAgICAgIHJldHVybiB0aGlzLndpdGhFbWJlZChmYWxzZSk7XG4gICAgfVxuXG4gICAgLyoqIENvbnZlcnQgdGhpcyBsaW5rIHRvIG1hcmtkb3duIHNvIGl0IGNhbiBiZSByZW5kZXJlZC4gKi9cbiAgICBwdWJsaWMgbWFya2Rvd24oKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IHJlc3VsdCA9ICh0aGlzLmVtYmVkID8gXCIhXCIgOiBcIlwiKSArIFwiW1tcIiArIHRoaXMub2JzaWRpYW5MaW5rKCk7XG4gICAgICAgIHJlc3VsdCArPSBcInxcIjtcbiAgICAgICAgcmVzdWx0ICs9IHRoaXMuZGlzcGxheU9yRGVmYXVsdCgpO1xuICAgICAgICByZXN1bHQgKz0gXCJdXVwiO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKiBPYnRhaW4gdGhlIGRpc3BsYXkgZm9yIHRoaXMgbGluayBpZiBwcmVzZW50LCBvciByZXR1cm4gYSBzaW1wbGUgZGVmYXVsdCBkaXNwbGF5LiAqL1xuICAgIHB1YmxpYyBkaXNwbGF5T3JEZWZhdWx0KCkge1xuICAgICAgICBpZiAodGhpcy5kaXNwbGF5KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kaXNwbGF5O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGV0IHJlc3VsdCA9IGdldEZpbGVUaXRsZSh0aGlzLnBhdGgpO1xuICAgICAgICAgICAgaWYgKHRoaXMudHlwZSA9PSBcImhlYWRlclwiIHx8IHRoaXMudHlwZSA9PSBcImJsb2NrXCIpIHJlc3VsdCArPSBcIiA+IFwiICsgdGhpcy5zdWJwYXRoO1xuXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIENvbnZlcnQgdGhlIGlubmVyIHBhcnQgb2YgdGhlIGxpbmsgdG8gc29tZXRoaW5nIHRoYXQgT2JzaWRpYW4gY2FuIG9wZW4gLyB1bmRlcnN0YW5kLiAqL1xuICAgIHB1YmxpYyBvYnNpZGlhbkxpbmsoKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZXNjYXBlZCA9IHRoaXMucGF0aC5yZXBsYWNlKFwifFwiLCBcIlxcXFx8XCIpO1xuICAgICAgICBpZiAodGhpcy50eXBlID09IFwiaGVhZGVyXCIpIHJldHVybiBlc2NhcGVkICsgXCIjXCIgKyB0aGlzLnN1YnBhdGg/LnJlcGxhY2UoXCJ8XCIsIFwiXFxcXHxcIik7XG4gICAgICAgIGlmICh0aGlzLnR5cGUgPT0gXCJibG9ja1wiKSByZXR1cm4gZXNjYXBlZCArIFwiI15cIiArIHRoaXMuc3VicGF0aD8ucmVwbGFjZShcInxcIiwgXCJcXFxcfFwiKTtcbiAgICAgICAgZWxzZSByZXR1cm4gZXNjYXBlZDtcbiAgICB9XG5cbiAgICAvKiogVGhlIHN0cmlwcGVkIG5hbWUgb2YgdGhlIGZpbGUgdGhpcyBsaW5rIHBvaW50cyB0by4gKi9cbiAgICBwdWJsaWMgZmlsZU5hbWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGdldEZpbGVUaXRsZSh0aGlzLnBhdGgpO1xuICAgIH1cbn1cblxuLyoqIFNlcmlhbGl6ZWQgZm9ybSBvZiBhIGxpbmsuXG4gKiBAaGlkZGVuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSnNvbkxpbmsge1xuICAgIC8qKiBUaGUgZmlsZSBwYXRoIHRoaXMgbGluayBwb2ludHMgdG8uICovXG4gICAgcGF0aDogc3RyaW5nO1xuICAgIC8qKiBUaGUgZGlzcGxheSBuYW1lIGFzc29jaWF0ZWQgd2l0aCB0aGUgbGluay4gKi9cbiAgICBkaXNwbGF5Pzogc3RyaW5nO1xuICAgIC8qKiBUaGUgYmxvY2sgSUQgb3IgaGVhZGVyIHRoaXMgbGluayBwb2ludHMgdG8gd2l0aGluIGEgZmlsZSwgaWYgcmVsZXZhbnQuICovXG4gICAgc3VicGF0aD86IHN0cmluZztcbiAgICAvKiogSXMgdGhpcyBsaW5rIGFuIGVtYmVkZGVkIGxpbmsgKG9mIGZvcm0gJyFbW2hlbGxvXV0nKT8gKi9cbiAgICBlbWJlZDogYm9vbGVhbjtcbiAgICAvKiogVGhlIHR5cGUgb2YgdGhpcyBsaW5rLCB3aGljaCBkZXRlcm1pbmVzIHdoYXQgJ3N1YnBhdGgnIHJlZmVycyB0bywgaWYgYW55dGhpbmcuICovXG4gICAgdHlwZTogXCJmaWxlXCIgfCBcImhlYWRlclwiIHwgXCJibG9ja1wiO1xufVxuXG4vKiogU3BsaXQgb24gdW5lc2NhcGVkIHBpcGVzIGluIGFuIGlubmVyIGxpbmsuXG4gKiBAaGlkZGVuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzcGxpdE9uVW5lc2NhcGVkUGlwZShsaW5rOiBzdHJpbmcpOiBbc3RyaW5nLCBzdHJpbmcgfCB1bmRlZmluZWRdIHtcbiAgICBsZXQgcGlwZSA9IC0xO1xuICAgIHdoaWxlICgocGlwZSA9IGxpbmsuaW5kZXhPZihcInxcIiwgcGlwZSArIDEpKSA+PSAwKSB7XG4gICAgICAgIGlmIChwaXBlID4gMCAmJiBsaW5rW3BpcGUgLSAxXSA9PSBcIlxcXFxcIikgY29udGludWU7XG4gICAgICAgIHJldHVybiBbbGluay5zdWJzdHJpbmcoMCwgcGlwZSkucmVwbGFjZSgvXFxcXFxcfC9nLCBcInxcIiksIGxpbmsuc3Vic3RyaW5nKHBpcGUgKyAxKV07XG4gICAgfVxuXG4gICAgcmV0dXJuIFtsaW5rLnJlcGxhY2UoL1xcXFxcXHwvZywgXCJ8XCIpLCB1bmRlZmluZWRdO1xufVxuIiwgImNvbnN0IEFMSUFTID0gU3ltYm9sLmZvcigneWFtbC5hbGlhcycpO1xuY29uc3QgRE9DID0gU3ltYm9sLmZvcigneWFtbC5kb2N1bWVudCcpO1xuY29uc3QgTUFQID0gU3ltYm9sLmZvcigneWFtbC5tYXAnKTtcbmNvbnN0IFBBSVIgPSBTeW1ib2wuZm9yKCd5YW1sLnBhaXInKTtcbmNvbnN0IFNDQUxBUiA9IFN5bWJvbC5mb3IoJ3lhbWwuc2NhbGFyJyk7XG5jb25zdCBTRVEgPSBTeW1ib2wuZm9yKCd5YW1sLnNlcScpO1xuY29uc3QgTk9ERV9UWVBFID0gU3ltYm9sLmZvcigneWFtbC5ub2RlLnR5cGUnKTtcbmNvbnN0IGlzQWxpYXMgPSAobm9kZSkgPT4gISFub2RlICYmIHR5cGVvZiBub2RlID09PSAnb2JqZWN0JyAmJiBub2RlW05PREVfVFlQRV0gPT09IEFMSUFTO1xuY29uc3QgaXNEb2N1bWVudCA9IChub2RlKSA9PiAhIW5vZGUgJiYgdHlwZW9mIG5vZGUgPT09ICdvYmplY3QnICYmIG5vZGVbTk9ERV9UWVBFXSA9PT0gRE9DO1xuY29uc3QgaXNNYXAgPSAobm9kZSkgPT4gISFub2RlICYmIHR5cGVvZiBub2RlID09PSAnb2JqZWN0JyAmJiBub2RlW05PREVfVFlQRV0gPT09IE1BUDtcbmNvbnN0IGlzUGFpciA9IChub2RlKSA9PiAhIW5vZGUgJiYgdHlwZW9mIG5vZGUgPT09ICdvYmplY3QnICYmIG5vZGVbTk9ERV9UWVBFXSA9PT0gUEFJUjtcbmNvbnN0IGlzU2NhbGFyID0gKG5vZGUpID0+ICEhbm9kZSAmJiB0eXBlb2Ygbm9kZSA9PT0gJ29iamVjdCcgJiYgbm9kZVtOT0RFX1RZUEVdID09PSBTQ0FMQVI7XG5jb25zdCBpc1NlcSA9IChub2RlKSA9PiAhIW5vZGUgJiYgdHlwZW9mIG5vZGUgPT09ICdvYmplY3QnICYmIG5vZGVbTk9ERV9UWVBFXSA9PT0gU0VRO1xuZnVuY3Rpb24gaXNDb2xsZWN0aW9uKG5vZGUpIHtcbiAgICBpZiAobm9kZSAmJiB0eXBlb2Ygbm9kZSA9PT0gJ29iamVjdCcpXG4gICAgICAgIHN3aXRjaCAobm9kZVtOT0RFX1RZUEVdKSB7XG4gICAgICAgICAgICBjYXNlIE1BUDpcbiAgICAgICAgICAgIGNhc2UgU0VROlxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuZnVuY3Rpb24gaXNOb2RlKG5vZGUpIHtcbiAgICBpZiAobm9kZSAmJiB0eXBlb2Ygbm9kZSA9PT0gJ29iamVjdCcpXG4gICAgICAgIHN3aXRjaCAobm9kZVtOT0RFX1RZUEVdKSB7XG4gICAgICAgICAgICBjYXNlIEFMSUFTOlxuICAgICAgICAgICAgY2FzZSBNQVA6XG4gICAgICAgICAgICBjYXNlIFNDQUxBUjpcbiAgICAgICAgICAgIGNhc2UgU0VROlxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuY29uc3QgaGFzQW5jaG9yID0gKG5vZGUpID0+IChpc1NjYWxhcihub2RlKSB8fCBpc0NvbGxlY3Rpb24obm9kZSkpICYmICEhbm9kZS5hbmNob3I7XG5cbmV4cG9ydCB7IEFMSUFTLCBET0MsIE1BUCwgTk9ERV9UWVBFLCBQQUlSLCBTQ0FMQVIsIFNFUSwgaGFzQW5jaG9yLCBpc0FsaWFzLCBpc0NvbGxlY3Rpb24sIGlzRG9jdW1lbnQsIGlzTWFwLCBpc05vZGUsIGlzUGFpciwgaXNTY2FsYXIsIGlzU2VxIH07XG4iLCAiaW1wb3J0IHsgaXNEb2N1bWVudCwgaXNOb2RlLCBpc1BhaXIsIGlzQ29sbGVjdGlvbiwgaXNNYXAsIGlzU2VxLCBpc1NjYWxhciwgaXNBbGlhcyB9IGZyb20gJy4vbm9kZXMvaWRlbnRpdHkuanMnO1xuXG5jb25zdCBCUkVBSyA9IFN5bWJvbCgnYnJlYWsgdmlzaXQnKTtcbmNvbnN0IFNLSVAgPSBTeW1ib2woJ3NraXAgY2hpbGRyZW4nKTtcbmNvbnN0IFJFTU9WRSA9IFN5bWJvbCgncmVtb3ZlIG5vZGUnKTtcbi8qKlxuICogQXBwbHkgYSB2aXNpdG9yIHRvIGFuIEFTVCBub2RlIG9yIGRvY3VtZW50LlxuICpcbiAqIFdhbGtzIHRocm91Z2ggdGhlIHRyZWUgKGRlcHRoLWZpcnN0KSBzdGFydGluZyBmcm9tIGBub2RlYCwgY2FsbGluZyBhXG4gKiBgdmlzaXRvcmAgZnVuY3Rpb24gd2l0aCB0aHJlZSBhcmd1bWVudHM6XG4gKiAgIC0gYGtleWA6IEZvciBzZXF1ZW5jZSB2YWx1ZXMgYW5kIG1hcCBgUGFpcmAsIHRoZSBub2RlJ3MgaW5kZXggaW4gdGhlXG4gKiAgICAgY29sbGVjdGlvbi4gV2l0aGluIGEgYFBhaXJgLCBgJ2tleSdgIG9yIGAndmFsdWUnYCwgY29ycmVzcG9uZGluZ2x5LlxuICogICAgIGBudWxsYCBmb3IgdGhlIHJvb3Qgbm9kZS5cbiAqICAgLSBgbm9kZWA6IFRoZSBjdXJyZW50IG5vZGUuXG4gKiAgIC0gYHBhdGhgOiBUaGUgYW5jZXN0cnkgb2YgdGhlIGN1cnJlbnQgbm9kZS5cbiAqXG4gKiBUaGUgcmV0dXJuIHZhbHVlIG9mIHRoZSB2aXNpdG9yIG1heSBiZSB1c2VkIHRvIGNvbnRyb2wgdGhlIHRyYXZlcnNhbDpcbiAqICAgLSBgdW5kZWZpbmVkYCAoZGVmYXVsdCk6IERvIG5vdGhpbmcgYW5kIGNvbnRpbnVlXG4gKiAgIC0gYHZpc2l0LlNLSVBgOiBEbyBub3QgdmlzaXQgdGhlIGNoaWxkcmVuIG9mIHRoaXMgbm9kZSwgY29udGludWUgd2l0aCBuZXh0XG4gKiAgICAgc2libGluZ1xuICogICAtIGB2aXNpdC5CUkVBS2A6IFRlcm1pbmF0ZSB0cmF2ZXJzYWwgY29tcGxldGVseVxuICogICAtIGB2aXNpdC5SRU1PVkVgOiBSZW1vdmUgdGhlIGN1cnJlbnQgbm9kZSwgdGhlbiBjb250aW51ZSB3aXRoIHRoZSBuZXh0IG9uZVxuICogICAtIGBOb2RlYDogUmVwbGFjZSB0aGUgY3VycmVudCBub2RlLCB0aGVuIGNvbnRpbnVlIGJ5IHZpc2l0aW5nIGl0XG4gKiAgIC0gYG51bWJlcmA6IFdoaWxlIGl0ZXJhdGluZyB0aGUgaXRlbXMgb2YgYSBzZXF1ZW5jZSBvciBtYXAsIHNldCB0aGUgaW5kZXhcbiAqICAgICBvZiB0aGUgbmV4dCBzdGVwLiBUaGlzIGlzIHVzZWZ1bCBlc3BlY2lhbGx5IGlmIHRoZSBpbmRleCBvZiB0aGUgY3VycmVudFxuICogICAgIG5vZGUgaGFzIGNoYW5nZWQuXG4gKlxuICogSWYgYHZpc2l0b3JgIGlzIGEgc2luZ2xlIGZ1bmN0aW9uLCBpdCB3aWxsIGJlIGNhbGxlZCB3aXRoIGFsbCB2YWx1ZXNcbiAqIGVuY291bnRlcmVkIGluIHRoZSB0cmVlLCBpbmNsdWRpbmcgZS5nLiBgbnVsbGAgdmFsdWVzLiBBbHRlcm5hdGl2ZWx5LFxuICogc2VwYXJhdGUgdmlzaXRvciBmdW5jdGlvbnMgbWF5IGJlIGRlZmluZWQgZm9yIGVhY2ggYE1hcGAsIGBQYWlyYCwgYFNlcWAsXG4gKiBgQWxpYXNgIGFuZCBgU2NhbGFyYCBub2RlLiBUbyBkZWZpbmUgdGhlIHNhbWUgdmlzaXRvciBmdW5jdGlvbiBmb3IgbW9yZSB0aGFuXG4gKiBvbmUgbm9kZSB0eXBlLCB1c2UgdGhlIGBDb2xsZWN0aW9uYCAobWFwIGFuZCBzZXEpLCBgVmFsdWVgIChtYXAsIHNlcSAmIHNjYWxhcilcbiAqIGFuZCBgTm9kZWAgKGFsaWFzLCBtYXAsIHNlcSAmIHNjYWxhcikgdGFyZ2V0cy4gT2YgYWxsIHRoZXNlLCBvbmx5IHRoZSBtb3N0XG4gKiBzcGVjaWZpYyBkZWZpbmVkIG9uZSB3aWxsIGJlIHVzZWQgZm9yIGVhY2ggbm9kZS5cbiAqL1xuZnVuY3Rpb24gdmlzaXQobm9kZSwgdmlzaXRvcikge1xuICAgIGNvbnN0IHZpc2l0b3JfID0gaW5pdFZpc2l0b3IodmlzaXRvcik7XG4gICAgaWYgKGlzRG9jdW1lbnQobm9kZSkpIHtcbiAgICAgICAgY29uc3QgY2QgPSB2aXNpdF8obnVsbCwgbm9kZS5jb250ZW50cywgdmlzaXRvcl8sIE9iamVjdC5mcmVlemUoW25vZGVdKSk7XG4gICAgICAgIGlmIChjZCA9PT0gUkVNT1ZFKVxuICAgICAgICAgICAgbm9kZS5jb250ZW50cyA9IG51bGw7XG4gICAgfVxuICAgIGVsc2VcbiAgICAgICAgdmlzaXRfKG51bGwsIG5vZGUsIHZpc2l0b3JfLCBPYmplY3QuZnJlZXplKFtdKSk7XG59XG4vLyBXaXRob3V0IHRoZSBgYXMgc3ltYm9sYCBjYXN0cywgVFMgZGVjbGFyZXMgdGhlc2UgaW4gdGhlIGB2aXNpdGBcbi8vIG5hbWVzcGFjZSB1c2luZyBgdmFyYCwgYnV0IHRoZW4gY29tcGxhaW5zIGFib3V0IHRoYXQgYmVjYXVzZVxuLy8gYHVuaXF1ZSBzeW1ib2xgIG11c3QgYmUgYGNvbnN0YC5cbi8qKiBUZXJtaW5hdGUgdmlzaXQgdHJhdmVyc2FsIGNvbXBsZXRlbHkgKi9cbnZpc2l0LkJSRUFLID0gQlJFQUs7XG4vKiogRG8gbm90IHZpc2l0IHRoZSBjaGlsZHJlbiBvZiB0aGUgY3VycmVudCBub2RlICovXG52aXNpdC5TS0lQID0gU0tJUDtcbi8qKiBSZW1vdmUgdGhlIGN1cnJlbnQgbm9kZSAqL1xudmlzaXQuUkVNT1ZFID0gUkVNT1ZFO1xuZnVuY3Rpb24gdmlzaXRfKGtleSwgbm9kZSwgdmlzaXRvciwgcGF0aCkge1xuICAgIGNvbnN0IGN0cmwgPSBjYWxsVmlzaXRvcihrZXksIG5vZGUsIHZpc2l0b3IsIHBhdGgpO1xuICAgIGlmIChpc05vZGUoY3RybCkgfHwgaXNQYWlyKGN0cmwpKSB7XG4gICAgICAgIHJlcGxhY2VOb2RlKGtleSwgcGF0aCwgY3RybCk7XG4gICAgICAgIHJldHVybiB2aXNpdF8oa2V5LCBjdHJsLCB2aXNpdG9yLCBwYXRoKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBjdHJsICE9PSAnc3ltYm9sJykge1xuICAgICAgICBpZiAoaXNDb2xsZWN0aW9uKG5vZGUpKSB7XG4gICAgICAgICAgICBwYXRoID0gT2JqZWN0LmZyZWV6ZShwYXRoLmNvbmNhdChub2RlKSk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGUuaXRlbXMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjaSA9IHZpc2l0XyhpLCBub2RlLml0ZW1zW2ldLCB2aXNpdG9yLCBwYXRoKTtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGNpID09PSAnbnVtYmVyJylcbiAgICAgICAgICAgICAgICAgICAgaSA9IGNpIC0gMTtcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChjaSA9PT0gQlJFQUspXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBCUkVBSztcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChjaSA9PT0gUkVNT1ZFKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGUuaXRlbXMuc3BsaWNlKGksIDEpO1xuICAgICAgICAgICAgICAgICAgICBpIC09IDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGlzUGFpcihub2RlKSkge1xuICAgICAgICAgICAgcGF0aCA9IE9iamVjdC5mcmVlemUocGF0aC5jb25jYXQobm9kZSkpO1xuICAgICAgICAgICAgY29uc3QgY2sgPSB2aXNpdF8oJ2tleScsIG5vZGUua2V5LCB2aXNpdG9yLCBwYXRoKTtcbiAgICAgICAgICAgIGlmIChjayA9PT0gQlJFQUspXG4gICAgICAgICAgICAgICAgcmV0dXJuIEJSRUFLO1xuICAgICAgICAgICAgZWxzZSBpZiAoY2sgPT09IFJFTU9WRSlcbiAgICAgICAgICAgICAgICBub2RlLmtleSA9IG51bGw7XG4gICAgICAgICAgICBjb25zdCBjdiA9IHZpc2l0XygndmFsdWUnLCBub2RlLnZhbHVlLCB2aXNpdG9yLCBwYXRoKTtcbiAgICAgICAgICAgIGlmIChjdiA9PT0gQlJFQUspXG4gICAgICAgICAgICAgICAgcmV0dXJuIEJSRUFLO1xuICAgICAgICAgICAgZWxzZSBpZiAoY3YgPT09IFJFTU9WRSlcbiAgICAgICAgICAgICAgICBub2RlLnZhbHVlID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY3RybDtcbn1cbi8qKlxuICogQXBwbHkgYW4gYXN5bmMgdmlzaXRvciB0byBhbiBBU1Qgbm9kZSBvciBkb2N1bWVudC5cbiAqXG4gKiBXYWxrcyB0aHJvdWdoIHRoZSB0cmVlIChkZXB0aC1maXJzdCkgc3RhcnRpbmcgZnJvbSBgbm9kZWAsIGNhbGxpbmcgYVxuICogYHZpc2l0b3JgIGZ1bmN0aW9uIHdpdGggdGhyZWUgYXJndW1lbnRzOlxuICogICAtIGBrZXlgOiBGb3Igc2VxdWVuY2UgdmFsdWVzIGFuZCBtYXAgYFBhaXJgLCB0aGUgbm9kZSdzIGluZGV4IGluIHRoZVxuICogICAgIGNvbGxlY3Rpb24uIFdpdGhpbiBhIGBQYWlyYCwgYCdrZXknYCBvciBgJ3ZhbHVlJ2AsIGNvcnJlc3BvbmRpbmdseS5cbiAqICAgICBgbnVsbGAgZm9yIHRoZSByb290IG5vZGUuXG4gKiAgIC0gYG5vZGVgOiBUaGUgY3VycmVudCBub2RlLlxuICogICAtIGBwYXRoYDogVGhlIGFuY2VzdHJ5IG9mIHRoZSBjdXJyZW50IG5vZGUuXG4gKlxuICogVGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgdmlzaXRvciBtYXkgYmUgdXNlZCB0byBjb250cm9sIHRoZSB0cmF2ZXJzYWw6XG4gKiAgIC0gYFByb21pc2VgOiBNdXN0IHJlc29sdmUgdG8gb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzXG4gKiAgIC0gYHVuZGVmaW5lZGAgKGRlZmF1bHQpOiBEbyBub3RoaW5nIGFuZCBjb250aW51ZVxuICogICAtIGB2aXNpdC5TS0lQYDogRG8gbm90IHZpc2l0IHRoZSBjaGlsZHJlbiBvZiB0aGlzIG5vZGUsIGNvbnRpbnVlIHdpdGggbmV4dFxuICogICAgIHNpYmxpbmdcbiAqICAgLSBgdmlzaXQuQlJFQUtgOiBUZXJtaW5hdGUgdHJhdmVyc2FsIGNvbXBsZXRlbHlcbiAqICAgLSBgdmlzaXQuUkVNT1ZFYDogUmVtb3ZlIHRoZSBjdXJyZW50IG5vZGUsIHRoZW4gY29udGludWUgd2l0aCB0aGUgbmV4dCBvbmVcbiAqICAgLSBgTm9kZWA6IFJlcGxhY2UgdGhlIGN1cnJlbnQgbm9kZSwgdGhlbiBjb250aW51ZSBieSB2aXNpdGluZyBpdFxuICogICAtIGBudW1iZXJgOiBXaGlsZSBpdGVyYXRpbmcgdGhlIGl0ZW1zIG9mIGEgc2VxdWVuY2Ugb3IgbWFwLCBzZXQgdGhlIGluZGV4XG4gKiAgICAgb2YgdGhlIG5leHQgc3RlcC4gVGhpcyBpcyB1c2VmdWwgZXNwZWNpYWxseSBpZiB0aGUgaW5kZXggb2YgdGhlIGN1cnJlbnRcbiAqICAgICBub2RlIGhhcyBjaGFuZ2VkLlxuICpcbiAqIElmIGB2aXNpdG9yYCBpcyBhIHNpbmdsZSBmdW5jdGlvbiwgaXQgd2lsbCBiZSBjYWxsZWQgd2l0aCBhbGwgdmFsdWVzXG4gKiBlbmNvdW50ZXJlZCBpbiB0aGUgdHJlZSwgaW5jbHVkaW5nIGUuZy4gYG51bGxgIHZhbHVlcy4gQWx0ZXJuYXRpdmVseSxcbiAqIHNlcGFyYXRlIHZpc2l0b3IgZnVuY3Rpb25zIG1heSBiZSBkZWZpbmVkIGZvciBlYWNoIGBNYXBgLCBgUGFpcmAsIGBTZXFgLFxuICogYEFsaWFzYCBhbmQgYFNjYWxhcmAgbm9kZS4gVG8gZGVmaW5lIHRoZSBzYW1lIHZpc2l0b3IgZnVuY3Rpb24gZm9yIG1vcmUgdGhhblxuICogb25lIG5vZGUgdHlwZSwgdXNlIHRoZSBgQ29sbGVjdGlvbmAgKG1hcCBhbmQgc2VxKSwgYFZhbHVlYCAobWFwLCBzZXEgJiBzY2FsYXIpXG4gKiBhbmQgYE5vZGVgIChhbGlhcywgbWFwLCBzZXEgJiBzY2FsYXIpIHRhcmdldHMuIE9mIGFsbCB0aGVzZSwgb25seSB0aGUgbW9zdFxuICogc3BlY2lmaWMgZGVmaW5lZCBvbmUgd2lsbCBiZSB1c2VkIGZvciBlYWNoIG5vZGUuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHZpc2l0QXN5bmMobm9kZSwgdmlzaXRvcikge1xuICAgIGNvbnN0IHZpc2l0b3JfID0gaW5pdFZpc2l0b3IodmlzaXRvcik7XG4gICAgaWYgKGlzRG9jdW1lbnQobm9kZSkpIHtcbiAgICAgICAgY29uc3QgY2QgPSBhd2FpdCB2aXNpdEFzeW5jXyhudWxsLCBub2RlLmNvbnRlbnRzLCB2aXNpdG9yXywgT2JqZWN0LmZyZWV6ZShbbm9kZV0pKTtcbiAgICAgICAgaWYgKGNkID09PSBSRU1PVkUpXG4gICAgICAgICAgICBub2RlLmNvbnRlbnRzID0gbnVsbDtcbiAgICB9XG4gICAgZWxzZVxuICAgICAgICBhd2FpdCB2aXNpdEFzeW5jXyhudWxsLCBub2RlLCB2aXNpdG9yXywgT2JqZWN0LmZyZWV6ZShbXSkpO1xufVxuLy8gV2l0aG91dCB0aGUgYGFzIHN5bWJvbGAgY2FzdHMsIFRTIGRlY2xhcmVzIHRoZXNlIGluIHRoZSBgdmlzaXRgXG4vLyBuYW1lc3BhY2UgdXNpbmcgYHZhcmAsIGJ1dCB0aGVuIGNvbXBsYWlucyBhYm91dCB0aGF0IGJlY2F1c2Vcbi8vIGB1bmlxdWUgc3ltYm9sYCBtdXN0IGJlIGBjb25zdGAuXG4vKiogVGVybWluYXRlIHZpc2l0IHRyYXZlcnNhbCBjb21wbGV0ZWx5ICovXG52aXNpdEFzeW5jLkJSRUFLID0gQlJFQUs7XG4vKiogRG8gbm90IHZpc2l0IHRoZSBjaGlsZHJlbiBvZiB0aGUgY3VycmVudCBub2RlICovXG52aXNpdEFzeW5jLlNLSVAgPSBTS0lQO1xuLyoqIFJlbW92ZSB0aGUgY3VycmVudCBub2RlICovXG52aXNpdEFzeW5jLlJFTU9WRSA9IFJFTU9WRTtcbmFzeW5jIGZ1bmN0aW9uIHZpc2l0QXN5bmNfKGtleSwgbm9kZSwgdmlzaXRvciwgcGF0aCkge1xuICAgIGNvbnN0IGN0cmwgPSBhd2FpdCBjYWxsVmlzaXRvcihrZXksIG5vZGUsIHZpc2l0b3IsIHBhdGgpO1xuICAgIGlmIChpc05vZGUoY3RybCkgfHwgaXNQYWlyKGN0cmwpKSB7XG4gICAgICAgIHJlcGxhY2VOb2RlKGtleSwgcGF0aCwgY3RybCk7XG4gICAgICAgIHJldHVybiB2aXNpdEFzeW5jXyhrZXksIGN0cmwsIHZpc2l0b3IsIHBhdGgpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGN0cmwgIT09ICdzeW1ib2wnKSB7XG4gICAgICAgIGlmIChpc0NvbGxlY3Rpb24obm9kZSkpIHtcbiAgICAgICAgICAgIHBhdGggPSBPYmplY3QuZnJlZXplKHBhdGguY29uY2F0KG5vZGUpKTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZS5pdGVtcy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNpID0gYXdhaXQgdmlzaXRBc3luY18oaSwgbm9kZS5pdGVtc1tpXSwgdmlzaXRvciwgcGF0aCk7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjaSA9PT0gJ251bWJlcicpXG4gICAgICAgICAgICAgICAgICAgIGkgPSBjaSAtIDE7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoY2kgPT09IEJSRUFLKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gQlJFQUs7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoY2kgPT09IFJFTU9WRSkge1xuICAgICAgICAgICAgICAgICAgICBub2RlLml0ZW1zLnNwbGljZShpLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgaSAtPSAxO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpc1BhaXIobm9kZSkpIHtcbiAgICAgICAgICAgIHBhdGggPSBPYmplY3QuZnJlZXplKHBhdGguY29uY2F0KG5vZGUpKTtcbiAgICAgICAgICAgIGNvbnN0IGNrID0gYXdhaXQgdmlzaXRBc3luY18oJ2tleScsIG5vZGUua2V5LCB2aXNpdG9yLCBwYXRoKTtcbiAgICAgICAgICAgIGlmIChjayA9PT0gQlJFQUspXG4gICAgICAgICAgICAgICAgcmV0dXJuIEJSRUFLO1xuICAgICAgICAgICAgZWxzZSBpZiAoY2sgPT09IFJFTU9WRSlcbiAgICAgICAgICAgICAgICBub2RlLmtleSA9IG51bGw7XG4gICAgICAgICAgICBjb25zdCBjdiA9IGF3YWl0IHZpc2l0QXN5bmNfKCd2YWx1ZScsIG5vZGUudmFsdWUsIHZpc2l0b3IsIHBhdGgpO1xuICAgICAgICAgICAgaWYgKGN2ID09PSBCUkVBSylcbiAgICAgICAgICAgICAgICByZXR1cm4gQlJFQUs7XG4gICAgICAgICAgICBlbHNlIGlmIChjdiA9PT0gUkVNT1ZFKVxuICAgICAgICAgICAgICAgIG5vZGUudmFsdWUgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjdHJsO1xufVxuZnVuY3Rpb24gaW5pdFZpc2l0b3IodmlzaXRvcikge1xuICAgIGlmICh0eXBlb2YgdmlzaXRvciA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgKHZpc2l0b3IuQ29sbGVjdGlvbiB8fCB2aXNpdG9yLk5vZGUgfHwgdmlzaXRvci5WYWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe1xuICAgICAgICAgICAgQWxpYXM6IHZpc2l0b3IuTm9kZSxcbiAgICAgICAgICAgIE1hcDogdmlzaXRvci5Ob2RlLFxuICAgICAgICAgICAgU2NhbGFyOiB2aXNpdG9yLk5vZGUsXG4gICAgICAgICAgICBTZXE6IHZpc2l0b3IuTm9kZVxuICAgICAgICB9LCB2aXNpdG9yLlZhbHVlICYmIHtcbiAgICAgICAgICAgIE1hcDogdmlzaXRvci5WYWx1ZSxcbiAgICAgICAgICAgIFNjYWxhcjogdmlzaXRvci5WYWx1ZSxcbiAgICAgICAgICAgIFNlcTogdmlzaXRvci5WYWx1ZVxuICAgICAgICB9LCB2aXNpdG9yLkNvbGxlY3Rpb24gJiYge1xuICAgICAgICAgICAgTWFwOiB2aXNpdG9yLkNvbGxlY3Rpb24sXG4gICAgICAgICAgICBTZXE6IHZpc2l0b3IuQ29sbGVjdGlvblxuICAgICAgICB9LCB2aXNpdG9yKTtcbiAgICB9XG4gICAgcmV0dXJuIHZpc2l0b3I7XG59XG5mdW5jdGlvbiBjYWxsVmlzaXRvcihrZXksIG5vZGUsIHZpc2l0b3IsIHBhdGgpIHtcbiAgICBpZiAodHlwZW9mIHZpc2l0b3IgPT09ICdmdW5jdGlvbicpXG4gICAgICAgIHJldHVybiB2aXNpdG9yKGtleSwgbm9kZSwgcGF0aCk7XG4gICAgaWYgKGlzTWFwKG5vZGUpKVxuICAgICAgICByZXR1cm4gdmlzaXRvci5NYXA/LihrZXksIG5vZGUsIHBhdGgpO1xuICAgIGlmIChpc1NlcShub2RlKSlcbiAgICAgICAgcmV0dXJuIHZpc2l0b3IuU2VxPy4oa2V5LCBub2RlLCBwYXRoKTtcbiAgICBpZiAoaXNQYWlyKG5vZGUpKVxuICAgICAgICByZXR1cm4gdmlzaXRvci5QYWlyPy4oa2V5LCBub2RlLCBwYXRoKTtcbiAgICBpZiAoaXNTY2FsYXIobm9kZSkpXG4gICAgICAgIHJldHVybiB2aXNpdG9yLlNjYWxhcj8uKGtleSwgbm9kZSwgcGF0aCk7XG4gICAgaWYgKGlzQWxpYXMobm9kZSkpXG4gICAgICAgIHJldHVybiB2aXNpdG9yLkFsaWFzPy4oa2V5LCBub2RlLCBwYXRoKTtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xufVxuZnVuY3Rpb24gcmVwbGFjZU5vZGUoa2V5LCBwYXRoLCBub2RlKSB7XG4gICAgY29uc3QgcGFyZW50ID0gcGF0aFtwYXRoLmxlbmd0aCAtIDFdO1xuICAgIGlmIChpc0NvbGxlY3Rpb24ocGFyZW50KSkge1xuICAgICAgICBwYXJlbnQuaXRlbXNba2V5XSA9IG5vZGU7XG4gICAgfVxuICAgIGVsc2UgaWYgKGlzUGFpcihwYXJlbnQpKSB7XG4gICAgICAgIGlmIChrZXkgPT09ICdrZXknKVxuICAgICAgICAgICAgcGFyZW50LmtleSA9IG5vZGU7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHBhcmVudC52YWx1ZSA9IG5vZGU7XG4gICAgfVxuICAgIGVsc2UgaWYgKGlzRG9jdW1lbnQocGFyZW50KSkge1xuICAgICAgICBwYXJlbnQuY29udGVudHMgPSBub2RlO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgY29uc3QgcHQgPSBpc0FsaWFzKHBhcmVudCkgPyAnYWxpYXMnIDogJ3NjYWxhcic7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IHJlcGxhY2Ugbm9kZSB3aXRoICR7cHR9IHBhcmVudGApO1xuICAgIH1cbn1cblxuZXhwb3J0IHsgdmlzaXQsIHZpc2l0QXN5bmMgfTtcbiIsICJpbXBvcnQgeyBpc05vZGUgfSBmcm9tICcuLi9ub2Rlcy9pZGVudGl0eS5qcyc7XG5pbXBvcnQgeyB2aXNpdCB9IGZyb20gJy4uL3Zpc2l0LmpzJztcblxuY29uc3QgZXNjYXBlQ2hhcnMgPSB7XG4gICAgJyEnOiAnJTIxJyxcbiAgICAnLCc6ICclMkMnLFxuICAgICdbJzogJyU1QicsXG4gICAgJ10nOiAnJTVEJyxcbiAgICAneyc6ICclN0InLFxuICAgICd9JzogJyU3RCdcbn07XG5jb25zdCBlc2NhcGVUYWdOYW1lID0gKHRuKSA9PiB0bi5yZXBsYWNlKC9bISxbXFxde31dL2csIGNoID0+IGVzY2FwZUNoYXJzW2NoXSk7XG5jbGFzcyBEaXJlY3RpdmVzIHtcbiAgICBjb25zdHJ1Y3Rvcih5YW1sLCB0YWdzKSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUaGUgZGlyZWN0aXZlcy1lbmQvZG9jLXN0YXJ0IG1hcmtlciBgLS0tYC4gSWYgYG51bGxgLCBhIG1hcmtlciBtYXkgc3RpbGwgYmVcbiAgICAgICAgICogaW5jbHVkZWQgaW4gdGhlIGRvY3VtZW50J3Mgc3RyaW5naWZpZWQgcmVwcmVzZW50YXRpb24uXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLmRvY1N0YXJ0ID0gbnVsbDtcbiAgICAgICAgLyoqIFRoZSBkb2MtZW5kIG1hcmtlciBgLi4uYC4gICovXG4gICAgICAgIHRoaXMuZG9jRW5kID0gZmFsc2U7XG4gICAgICAgIHRoaXMueWFtbCA9IE9iamVjdC5hc3NpZ24oe30sIERpcmVjdGl2ZXMuZGVmYXVsdFlhbWwsIHlhbWwpO1xuICAgICAgICB0aGlzLnRhZ3MgPSBPYmplY3QuYXNzaWduKHt9LCBEaXJlY3RpdmVzLmRlZmF1bHRUYWdzLCB0YWdzKTtcbiAgICB9XG4gICAgY2xvbmUoKSB7XG4gICAgICAgIGNvbnN0IGNvcHkgPSBuZXcgRGlyZWN0aXZlcyh0aGlzLnlhbWwsIHRoaXMudGFncyk7XG4gICAgICAgIGNvcHkuZG9jU3RhcnQgPSB0aGlzLmRvY1N0YXJ0O1xuICAgICAgICByZXR1cm4gY29weTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRHVyaW5nIHBhcnNpbmcsIGdldCBhIERpcmVjdGl2ZXMgaW5zdGFuY2UgZm9yIHRoZSBjdXJyZW50IGRvY3VtZW50IGFuZFxuICAgICAqIHVwZGF0ZSB0aGUgc3RyZWFtIHN0YXRlIGFjY29yZGluZyB0byB0aGUgY3VycmVudCB2ZXJzaW9uJ3Mgc3BlYy5cbiAgICAgKi9cbiAgICBhdERvY3VtZW50KCkge1xuICAgICAgICBjb25zdCByZXMgPSBuZXcgRGlyZWN0aXZlcyh0aGlzLnlhbWwsIHRoaXMudGFncyk7XG4gICAgICAgIHN3aXRjaCAodGhpcy55YW1sLnZlcnNpb24pIHtcbiAgICAgICAgICAgIGNhc2UgJzEuMSc6XG4gICAgICAgICAgICAgICAgdGhpcy5hdE5leHREb2N1bWVudCA9IHRydWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICcxLjInOlxuICAgICAgICAgICAgICAgIHRoaXMuYXROZXh0RG9jdW1lbnQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLnlhbWwgPSB7XG4gICAgICAgICAgICAgICAgICAgIGV4cGxpY2l0OiBEaXJlY3RpdmVzLmRlZmF1bHRZYW1sLmV4cGxpY2l0LFxuICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uOiAnMS4yJ1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgdGhpcy50YWdzID0gT2JqZWN0LmFzc2lnbih7fSwgRGlyZWN0aXZlcy5kZWZhdWx0VGFncyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG4gICAgLyoqXG4gICAgICogQHBhcmFtIG9uRXJyb3IgLSBNYXkgYmUgY2FsbGVkIGV2ZW4gaWYgdGhlIGFjdGlvbiB3YXMgc3VjY2Vzc2Z1bFxuICAgICAqIEByZXR1cm5zIGB0cnVlYCBvbiBzdWNjZXNzXG4gICAgICovXG4gICAgYWRkKGxpbmUsIG9uRXJyb3IpIHtcbiAgICAgICAgaWYgKHRoaXMuYXROZXh0RG9jdW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMueWFtbCA9IHsgZXhwbGljaXQ6IERpcmVjdGl2ZXMuZGVmYXVsdFlhbWwuZXhwbGljaXQsIHZlcnNpb246ICcxLjEnIH07XG4gICAgICAgICAgICB0aGlzLnRhZ3MgPSBPYmplY3QuYXNzaWduKHt9LCBEaXJlY3RpdmVzLmRlZmF1bHRUYWdzKTtcbiAgICAgICAgICAgIHRoaXMuYXROZXh0RG9jdW1lbnQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwYXJ0cyA9IGxpbmUudHJpbSgpLnNwbGl0KC9bIFxcdF0rLyk7XG4gICAgICAgIGNvbnN0IG5hbWUgPSBwYXJ0cy5zaGlmdCgpO1xuICAgICAgICBzd2l0Y2ggKG5hbWUpIHtcbiAgICAgICAgICAgIGNhc2UgJyVUQUcnOiB7XG4gICAgICAgICAgICAgICAgaWYgKHBhcnRzLmxlbmd0aCAhPT0gMikge1xuICAgICAgICAgICAgICAgICAgICBvbkVycm9yKDAsICclVEFHIGRpcmVjdGl2ZSBzaG91bGQgY29udGFpbiBleGFjdGx5IHR3byBwYXJ0cycpO1xuICAgICAgICAgICAgICAgICAgICBpZiAocGFydHMubGVuZ3RoIDwgMilcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgW2hhbmRsZSwgcHJlZml4XSA9IHBhcnRzO1xuICAgICAgICAgICAgICAgIHRoaXMudGFnc1toYW5kbGVdID0gcHJlZml4O1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnJVlBTUwnOiB7XG4gICAgICAgICAgICAgICAgdGhpcy55YW1sLmV4cGxpY2l0ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBpZiAocGFydHMubGVuZ3RoICE9PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIG9uRXJyb3IoMCwgJyVZQU1MIGRpcmVjdGl2ZSBzaG91bGQgY29udGFpbiBleGFjdGx5IG9uZSBwYXJ0Jyk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgW3ZlcnNpb25dID0gcGFydHM7XG4gICAgICAgICAgICAgICAgaWYgKHZlcnNpb24gPT09ICcxLjEnIHx8IHZlcnNpb24gPT09ICcxLjInKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMueWFtbC52ZXJzaW9uID0gdmVyc2lvbjtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc1ZhbGlkID0gL15cXGQrXFwuXFxkKyQvLnRlc3QodmVyc2lvbik7XG4gICAgICAgICAgICAgICAgICAgIG9uRXJyb3IoNiwgYFVuc3VwcG9ydGVkIFlBTUwgdmVyc2lvbiAke3ZlcnNpb259YCwgaXNWYWxpZCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIG9uRXJyb3IoMCwgYFVua25vd24gZGlyZWN0aXZlICR7bmFtZX1gLCB0cnVlKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogUmVzb2x2ZXMgYSB0YWcsIG1hdGNoaW5nIGhhbmRsZXMgdG8gdGhvc2UgZGVmaW5lZCBpbiAlVEFHIGRpcmVjdGl2ZXMuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBSZXNvbHZlZCB0YWcsIHdoaWNoIG1heSBhbHNvIGJlIHRoZSBub24tc3BlY2lmaWMgdGFnIGAnISdgIG9yIGFcbiAgICAgKiAgIGAnIWxvY2FsJ2AgdGFnLCBvciBgbnVsbGAgaWYgdW5yZXNvbHZhYmxlLlxuICAgICAqL1xuICAgIHRhZ05hbWUoc291cmNlLCBvbkVycm9yKSB7XG4gICAgICAgIGlmIChzb3VyY2UgPT09ICchJylcbiAgICAgICAgICAgIHJldHVybiAnISc7IC8vIG5vbi1zcGVjaWZpYyB0YWdcbiAgICAgICAgaWYgKHNvdXJjZVswXSAhPT0gJyEnKSB7XG4gICAgICAgICAgICBvbkVycm9yKGBOb3QgYSB2YWxpZCB0YWc6ICR7c291cmNlfWApO1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNvdXJjZVsxXSA9PT0gJzwnKSB7XG4gICAgICAgICAgICBjb25zdCB2ZXJiYXRpbSA9IHNvdXJjZS5zbGljZSgyLCAtMSk7XG4gICAgICAgICAgICBpZiAodmVyYmF0aW0gPT09ICchJyB8fCB2ZXJiYXRpbSA9PT0gJyEhJykge1xuICAgICAgICAgICAgICAgIG9uRXJyb3IoYFZlcmJhdGltIHRhZ3MgYXJlbid0IHJlc29sdmVkLCBzbyAke3NvdXJjZX0gaXMgaW52YWxpZC5gKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzb3VyY2Vbc291cmNlLmxlbmd0aCAtIDFdICE9PSAnPicpXG4gICAgICAgICAgICAgICAgb25FcnJvcignVmVyYmF0aW0gdGFncyBtdXN0IGVuZCB3aXRoIGEgPicpO1xuICAgICAgICAgICAgcmV0dXJuIHZlcmJhdGltO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IFssIGhhbmRsZSwgc3VmZml4XSA9IHNvdXJjZS5tYXRjaCgvXiguKiEpKFteIV0qKSQvcyk7XG4gICAgICAgIGlmICghc3VmZml4KVxuICAgICAgICAgICAgb25FcnJvcihgVGhlICR7c291cmNlfSB0YWcgaGFzIG5vIHN1ZmZpeGApO1xuICAgICAgICBjb25zdCBwcmVmaXggPSB0aGlzLnRhZ3NbaGFuZGxlXTtcbiAgICAgICAgaWYgKHByZWZpeCkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJlZml4ICsgZGVjb2RlVVJJQ29tcG9uZW50KHN1ZmZpeCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBvbkVycm9yKFN0cmluZyhlcnJvcikpO1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChoYW5kbGUgPT09ICchJylcbiAgICAgICAgICAgIHJldHVybiBzb3VyY2U7IC8vIGxvY2FsIHRhZ1xuICAgICAgICBvbkVycm9yKGBDb3VsZCBub3QgcmVzb2x2ZSB0YWc6ICR7c291cmNlfWApO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogR2l2ZW4gYSBmdWxseSByZXNvbHZlZCB0YWcsIHJldHVybnMgaXRzIHByaW50YWJsZSBzdHJpbmcgZm9ybSxcbiAgICAgKiB0YWtpbmcgaW50byBhY2NvdW50IGN1cnJlbnQgdGFnIHByZWZpeGVzIGFuZCBkZWZhdWx0cy5cbiAgICAgKi9cbiAgICB0YWdTdHJpbmcodGFnKSB7XG4gICAgICAgIGZvciAoY29uc3QgW2hhbmRsZSwgcHJlZml4XSBvZiBPYmplY3QuZW50cmllcyh0aGlzLnRhZ3MpKSB7XG4gICAgICAgICAgICBpZiAodGFnLnN0YXJ0c1dpdGgocHJlZml4KSlcbiAgICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlICsgZXNjYXBlVGFnTmFtZSh0YWcuc3Vic3RyaW5nKHByZWZpeC5sZW5ndGgpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGFnWzBdID09PSAnIScgPyB0YWcgOiBgITwke3RhZ30+YDtcbiAgICB9XG4gICAgdG9TdHJpbmcoZG9jKSB7XG4gICAgICAgIGNvbnN0IGxpbmVzID0gdGhpcy55YW1sLmV4cGxpY2l0XG4gICAgICAgICAgICA/IFtgJVlBTUwgJHt0aGlzLnlhbWwudmVyc2lvbiB8fCAnMS4yJ31gXVxuICAgICAgICAgICAgOiBbXTtcbiAgICAgICAgY29uc3QgdGFnRW50cmllcyA9IE9iamVjdC5lbnRyaWVzKHRoaXMudGFncyk7XG4gICAgICAgIGxldCB0YWdOYW1lcztcbiAgICAgICAgaWYgKGRvYyAmJiB0YWdFbnRyaWVzLmxlbmd0aCA+IDAgJiYgaXNOb2RlKGRvYy5jb250ZW50cykpIHtcbiAgICAgICAgICAgIGNvbnN0IHRhZ3MgPSB7fTtcbiAgICAgICAgICAgIHZpc2l0KGRvYy5jb250ZW50cywgKF9rZXksIG5vZGUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaXNOb2RlKG5vZGUpICYmIG5vZGUudGFnKVxuICAgICAgICAgICAgICAgICAgICB0YWdzW25vZGUudGFnXSA9IHRydWU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRhZ05hbWVzID0gT2JqZWN0LmtleXModGFncyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgdGFnTmFtZXMgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBbaGFuZGxlLCBwcmVmaXhdIG9mIHRhZ0VudHJpZXMpIHtcbiAgICAgICAgICAgIGlmIChoYW5kbGUgPT09ICchIScgJiYgcHJlZml4ID09PSAndGFnOnlhbWwub3JnLDIwMDI6JylcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIGlmICghZG9jIHx8IHRhZ05hbWVzLnNvbWUodG4gPT4gdG4uc3RhcnRzV2l0aChwcmVmaXgpKSlcbiAgICAgICAgICAgICAgICBsaW5lcy5wdXNoKGAlVEFHICR7aGFuZGxlfSAke3ByZWZpeH1gKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbGluZXMuam9pbignXFxuJyk7XG4gICAgfVxufVxuRGlyZWN0aXZlcy5kZWZhdWx0WWFtbCA9IHsgZXhwbGljaXQ6IGZhbHNlLCB2ZXJzaW9uOiAnMS4yJyB9O1xuRGlyZWN0aXZlcy5kZWZhdWx0VGFncyA9IHsgJyEhJzogJ3RhZzp5YW1sLm9yZywyMDAyOicgfTtcblxuZXhwb3J0IHsgRGlyZWN0aXZlcyB9O1xuIiwgImltcG9ydCB7IGlzU2NhbGFyLCBpc0NvbGxlY3Rpb24gfSBmcm9tICcuLi9ub2Rlcy9pZGVudGl0eS5qcyc7XG5pbXBvcnQgeyB2aXNpdCB9IGZyb20gJy4uL3Zpc2l0LmpzJztcblxuLyoqXG4gKiBWZXJpZnkgdGhhdCB0aGUgaW5wdXQgc3RyaW5nIGlzIGEgdmFsaWQgYW5jaG9yLlxuICpcbiAqIFdpbGwgdGhyb3cgb24gZXJyb3JzLlxuICovXG5mdW5jdGlvbiBhbmNob3JJc1ZhbGlkKGFuY2hvcikge1xuICAgIGlmICgvW1xceDAwLVxceDE5XFxzLFtcXF17fV0vLnRlc3QoYW5jaG9yKSkge1xuICAgICAgICBjb25zdCBzYSA9IEpTT04uc3RyaW5naWZ5KGFuY2hvcik7XG4gICAgICAgIGNvbnN0IG1zZyA9IGBBbmNob3IgbXVzdCBub3QgY29udGFpbiB3aGl0ZXNwYWNlIG9yIGNvbnRyb2wgY2hhcmFjdGVyczogJHtzYX1gO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IobXNnKTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG5mdW5jdGlvbiBhbmNob3JOYW1lcyhyb290KSB7XG4gICAgY29uc3QgYW5jaG9ycyA9IG5ldyBTZXQoKTtcbiAgICB2aXNpdChyb290LCB7XG4gICAgICAgIFZhbHVlKF9rZXksIG5vZGUpIHtcbiAgICAgICAgICAgIGlmIChub2RlLmFuY2hvcilcbiAgICAgICAgICAgICAgICBhbmNob3JzLmFkZChub2RlLmFuY2hvcik7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gYW5jaG9ycztcbn1cbi8qKiBGaW5kIGEgbmV3IGFuY2hvciBuYW1lIHdpdGggdGhlIGdpdmVuIGBwcmVmaXhgIGFuZCBhIG9uZS1pbmRleGVkIHN1ZmZpeC4gKi9cbmZ1bmN0aW9uIGZpbmROZXdBbmNob3IocHJlZml4LCBleGNsdWRlKSB7XG4gICAgZm9yIChsZXQgaSA9IDE7IHRydWU7ICsraSkge1xuICAgICAgICBjb25zdCBuYW1lID0gYCR7cHJlZml4fSR7aX1gO1xuICAgICAgICBpZiAoIWV4Y2x1ZGUuaGFzKG5hbWUpKVxuICAgICAgICAgICAgcmV0dXJuIG5hbWU7XG4gICAgfVxufVxuZnVuY3Rpb24gY3JlYXRlTm9kZUFuY2hvcnMoZG9jLCBwcmVmaXgpIHtcbiAgICBjb25zdCBhbGlhc09iamVjdHMgPSBbXTtcbiAgICBjb25zdCBzb3VyY2VPYmplY3RzID0gbmV3IE1hcCgpO1xuICAgIGxldCBwcmV2QW5jaG9ycyA9IG51bGw7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgb25BbmNob3I6IChzb3VyY2UpID0+IHtcbiAgICAgICAgICAgIGFsaWFzT2JqZWN0cy5wdXNoKHNvdXJjZSk7XG4gICAgICAgICAgICBpZiAoIXByZXZBbmNob3JzKVxuICAgICAgICAgICAgICAgIHByZXZBbmNob3JzID0gYW5jaG9yTmFtZXMoZG9jKTtcbiAgICAgICAgICAgIGNvbnN0IGFuY2hvciA9IGZpbmROZXdBbmNob3IocHJlZml4LCBwcmV2QW5jaG9ycyk7XG4gICAgICAgICAgICBwcmV2QW5jaG9ycy5hZGQoYW5jaG9yKTtcbiAgICAgICAgICAgIHJldHVybiBhbmNob3I7XG4gICAgICAgIH0sXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBXaXRoIGNpcmN1bGFyIHJlZmVyZW5jZXMsIHRoZSBzb3VyY2Ugbm9kZSBpcyBvbmx5IHJlc29sdmVkIGFmdGVyIGFsbFxuICAgICAgICAgKiBvZiBpdHMgY2hpbGQgbm9kZXMgYXJlLiBUaGlzIGlzIHdoeSBhbmNob3JzIGFyZSBzZXQgb25seSBhZnRlciBhbGwgb2ZcbiAgICAgICAgICogdGhlIG5vZGVzIGhhdmUgYmVlbiBjcmVhdGVkLlxuICAgICAgICAgKi9cbiAgICAgICAgc2V0QW5jaG9yczogKCkgPT4ge1xuICAgICAgICAgICAgZm9yIChjb25zdCBzb3VyY2Ugb2YgYWxpYXNPYmplY3RzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVmID0gc291cmNlT2JqZWN0cy5nZXQoc291cmNlKTtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHJlZiA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgICAgICAgICAgICAgcmVmLmFuY2hvciAmJlxuICAgICAgICAgICAgICAgICAgICAoaXNTY2FsYXIocmVmLm5vZGUpIHx8IGlzQ29sbGVjdGlvbihyZWYubm9kZSkpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlZi5ub2RlLmFuY2hvciA9IHJlZi5hbmNob3I7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcignRmFpbGVkIHRvIHJlc29sdmUgcmVwZWF0ZWQgb2JqZWN0ICh0aGlzIHNob3VsZCBub3QgaGFwcGVuKScpO1xuICAgICAgICAgICAgICAgICAgICBlcnJvci5zb3VyY2UgPSBzb3VyY2U7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlT2JqZWN0c1xuICAgIH07XG59XG5cbmV4cG9ydCB7IGFuY2hvcklzVmFsaWQsIGFuY2hvck5hbWVzLCBjcmVhdGVOb2RlQW5jaG9ycywgZmluZE5ld0FuY2hvciB9O1xuIiwgIi8qKlxuICogQXBwbGllcyB0aGUgSlNPTi5wYXJzZSByZXZpdmVyIGFsZ29yaXRobSBhcyBkZWZpbmVkIGluIHRoZSBFQ01BLTI2MiBzcGVjLFxuICogaW4gc2VjdGlvbiAyNC41LjEuMSBcIlJ1bnRpbWUgU2VtYW50aWNzOiBJbnRlcm5hbGl6ZUpTT05Qcm9wZXJ0eVwiIG9mIHRoZVxuICogMjAyMSBlZGl0aW9uOiBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWpzb24ucGFyc2VcbiAqXG4gKiBJbmNsdWRlcyBleHRlbnNpb25zIGZvciBoYW5kbGluZyBNYXAgYW5kIFNldCBvYmplY3RzLlxuICovXG5mdW5jdGlvbiBhcHBseVJldml2ZXIocmV2aXZlciwgb2JqLCBrZXksIHZhbCkge1xuICAgIGlmICh2YWwgJiYgdHlwZW9mIHZhbCA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsKSkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IHZhbC5sZW5ndGg7IGkgPCBsZW47ICsraSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHYwID0gdmFsW2ldO1xuICAgICAgICAgICAgICAgIGNvbnN0IHYxID0gYXBwbHlSZXZpdmVyKHJldml2ZXIsIHZhbCwgU3RyaW5nKGkpLCB2MCk7XG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1hcnJheS1kZWxldGVcbiAgICAgICAgICAgICAgICBpZiAodjEgPT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHZhbFtpXTtcbiAgICAgICAgICAgICAgICBlbHNlIGlmICh2MSAhPT0gdjApXG4gICAgICAgICAgICAgICAgICAgIHZhbFtpXSA9IHYxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHZhbCBpbnN0YW5jZW9mIE1hcCkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBrIG9mIEFycmF5LmZyb20odmFsLmtleXMoKSkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB2MCA9IHZhbC5nZXQoayk7XG4gICAgICAgICAgICAgICAgY29uc3QgdjEgPSBhcHBseVJldml2ZXIocmV2aXZlciwgdmFsLCBrLCB2MCk7XG4gICAgICAgICAgICAgICAgaWYgKHYxID09PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgICAgIHZhbC5kZWxldGUoayk7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodjEgIT09IHYwKVxuICAgICAgICAgICAgICAgICAgICB2YWwuc2V0KGssIHYxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh2YWwgaW5zdGFuY2VvZiBTZXQpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgdjAgb2YgQXJyYXkuZnJvbSh2YWwpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdjEgPSBhcHBseVJldml2ZXIocmV2aXZlciwgdmFsLCB2MCwgdjApO1xuICAgICAgICAgICAgICAgIGlmICh2MSA9PT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgICAgICB2YWwuZGVsZXRlKHYwKTtcbiAgICAgICAgICAgICAgICBlbHNlIGlmICh2MSAhPT0gdjApIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsLmRlbGV0ZSh2MCk7XG4gICAgICAgICAgICAgICAgICAgIHZhbC5hZGQodjEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgW2ssIHYwXSBvZiBPYmplY3QuZW50cmllcyh2YWwpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdjEgPSBhcHBseVJldml2ZXIocmV2aXZlciwgdmFsLCBrLCB2MCk7XG4gICAgICAgICAgICAgICAgaWYgKHYxID09PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB2YWxba107XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodjEgIT09IHYwKVxuICAgICAgICAgICAgICAgICAgICB2YWxba10gPSB2MTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmV2aXZlci5jYWxsKG9iaiwga2V5LCB2YWwpO1xufVxuXG5leHBvcnQgeyBhcHBseVJldml2ZXIgfTtcbiIsICJpbXBvcnQgeyBoYXNBbmNob3IgfSBmcm9tICcuL2lkZW50aXR5LmpzJztcblxuLyoqXG4gKiBSZWN1cnNpdmVseSBjb252ZXJ0IGFueSBub2RlIG9yIGl0cyBjb250ZW50cyB0byBuYXRpdmUgSmF2YVNjcmlwdFxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSBpbnB1dCB2YWx1ZVxuICogQHBhcmFtIGFyZyAtIElmIGB2YWx1ZWAgZGVmaW5lcyBhIGB0b0pTT04oKWAgbWV0aG9kLCB1c2UgdGhpc1xuICogICBhcyBpdHMgZmlyc3QgYXJndW1lbnRcbiAqIEBwYXJhbSBjdHggLSBDb252ZXJzaW9uIGNvbnRleHQsIG9yaWdpbmFsbHkgc2V0IGluIERvY3VtZW50I3RvSlMoKS4gSWZcbiAqICAgYHsga2VlcDogdHJ1ZSB9YCBpcyBub3Qgc2V0LCBvdXRwdXQgc2hvdWxkIGJlIHN1aXRhYmxlIGZvciBKU09OXG4gKiAgIHN0cmluZ2lmaWNhdGlvbi5cbiAqL1xuZnVuY3Rpb24gdG9KUyh2YWx1ZSwgYXJnLCBjdHgpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1yZXR1cm5cbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpXG4gICAgICAgIHJldHVybiB2YWx1ZS5tYXAoKHYsIGkpID0+IHRvSlModiwgU3RyaW5nKGkpLCBjdHgpKTtcbiAgICBpZiAodmFsdWUgJiYgdHlwZW9mIHZhbHVlLnRvSlNPTiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1jYWxsXG4gICAgICAgIGlmICghY3R4IHx8ICFoYXNBbmNob3IodmFsdWUpKVxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnRvSlNPTihhcmcsIGN0eCk7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB7IGFsaWFzQ291bnQ6IDAsIGNvdW50OiAxLCByZXM6IHVuZGVmaW5lZCB9O1xuICAgICAgICBjdHguYW5jaG9ycy5zZXQodmFsdWUsIGRhdGEpO1xuICAgICAgICBjdHgub25DcmVhdGUgPSByZXMgPT4ge1xuICAgICAgICAgICAgZGF0YS5yZXMgPSByZXM7XG4gICAgICAgICAgICBkZWxldGUgY3R4Lm9uQ3JlYXRlO1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCByZXMgPSB2YWx1ZS50b0pTT04oYXJnLCBjdHgpO1xuICAgICAgICBpZiAoY3R4Lm9uQ3JlYXRlKVxuICAgICAgICAgICAgY3R4Lm9uQ3JlYXRlKHJlcyk7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdiaWdpbnQnICYmICFjdHg/LmtlZXApXG4gICAgICAgIHJldHVybiBOdW1iZXIodmFsdWUpO1xuICAgIHJldHVybiB2YWx1ZTtcbn1cblxuZXhwb3J0IHsgdG9KUyB9O1xuIiwgImltcG9ydCB7IGFwcGx5UmV2aXZlciB9IGZyb20gJy4uL2RvYy9hcHBseVJldml2ZXIuanMnO1xuaW1wb3J0IHsgTk9ERV9UWVBFLCBpc0RvY3VtZW50IH0gZnJvbSAnLi9pZGVudGl0eS5qcyc7XG5pbXBvcnQgeyB0b0pTIH0gZnJvbSAnLi90b0pTLmpzJztcblxuY2xhc3MgTm9kZUJhc2Uge1xuICAgIGNvbnN0cnVjdG9yKHR5cGUpIHtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIE5PREVfVFlQRSwgeyB2YWx1ZTogdHlwZSB9KTtcbiAgICB9XG4gICAgLyoqIENyZWF0ZSBhIGNvcHkgb2YgdGhpcyBub2RlLiAgKi9cbiAgICBjbG9uZSgpIHtcbiAgICAgICAgY29uc3QgY29weSA9IE9iamVjdC5jcmVhdGUoT2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh0aGlzKSk7XG4gICAgICAgIGlmICh0aGlzLnJhbmdlKVxuICAgICAgICAgICAgY29weS5yYW5nZSA9IHRoaXMucmFuZ2Uuc2xpY2UoKTtcbiAgICAgICAgcmV0dXJuIGNvcHk7XG4gICAgfVxuICAgIC8qKiBBIHBsYWluIEphdmFTY3JpcHQgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBub2RlLiAqL1xuICAgIHRvSlMoZG9jLCB7IG1hcEFzTWFwLCBtYXhBbGlhc0NvdW50LCBvbkFuY2hvciwgcmV2aXZlciB9ID0ge30pIHtcbiAgICAgICAgaWYgKCFpc0RvY3VtZW50KGRvYykpXG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBIGRvY3VtZW50IGFyZ3VtZW50IGlzIHJlcXVpcmVkJyk7XG4gICAgICAgIGNvbnN0IGN0eCA9IHtcbiAgICAgICAgICAgIGFuY2hvcnM6IG5ldyBNYXAoKSxcbiAgICAgICAgICAgIGRvYyxcbiAgICAgICAgICAgIGtlZXA6IHRydWUsXG4gICAgICAgICAgICBtYXBBc01hcDogbWFwQXNNYXAgPT09IHRydWUsXG4gICAgICAgICAgICBtYXBLZXlXYXJuZWQ6IGZhbHNlLFxuICAgICAgICAgICAgbWF4QWxpYXNDb3VudDogdHlwZW9mIG1heEFsaWFzQ291bnQgPT09ICdudW1iZXInID8gbWF4QWxpYXNDb3VudCA6IDEwMFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCByZXMgPSB0b0pTKHRoaXMsICcnLCBjdHgpO1xuICAgICAgICBpZiAodHlwZW9mIG9uQW5jaG9yID09PSAnZnVuY3Rpb24nKVxuICAgICAgICAgICAgZm9yIChjb25zdCB7IGNvdW50LCByZXMgfSBvZiBjdHguYW5jaG9ycy52YWx1ZXMoKSlcbiAgICAgICAgICAgICAgICBvbkFuY2hvcihyZXMsIGNvdW50KTtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiByZXZpdmVyID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICA/IGFwcGx5UmV2aXZlcihyZXZpdmVyLCB7ICcnOiByZXMgfSwgJycsIHJlcylcbiAgICAgICAgICAgIDogcmVzO1xuICAgIH1cbn1cblxuZXhwb3J0IHsgTm9kZUJhc2UgfTtcbiIsICJpbXBvcnQgeyBhbmNob3JJc1ZhbGlkIH0gZnJvbSAnLi4vZG9jL2FuY2hvcnMuanMnO1xuaW1wb3J0IHsgdmlzaXQgfSBmcm9tICcuLi92aXNpdC5qcyc7XG5pbXBvcnQgeyBBTElBUywgaXNBbGlhcywgaXNDb2xsZWN0aW9uLCBpc1BhaXIgfSBmcm9tICcuL2lkZW50aXR5LmpzJztcbmltcG9ydCB7IE5vZGVCYXNlIH0gZnJvbSAnLi9Ob2RlLmpzJztcbmltcG9ydCB7IHRvSlMgfSBmcm9tICcuL3RvSlMuanMnO1xuXG5jbGFzcyBBbGlhcyBleHRlbmRzIE5vZGVCYXNlIHtcbiAgICBjb25zdHJ1Y3Rvcihzb3VyY2UpIHtcbiAgICAgICAgc3VwZXIoQUxJQVMpO1xuICAgICAgICB0aGlzLnNvdXJjZSA9IHNvdXJjZTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICd0YWcnLCB7XG4gICAgICAgICAgICBzZXQoKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdBbGlhcyBub2RlcyBjYW5ub3QgaGF2ZSB0YWdzJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXNvbHZlIHRoZSB2YWx1ZSBvZiB0aGlzIGFsaWFzIHdpdGhpbiBgZG9jYCwgZmluZGluZyB0aGUgbGFzdFxuICAgICAqIGluc3RhbmNlIG9mIHRoZSBgc291cmNlYCBhbmNob3IgYmVmb3JlIHRoaXMgbm9kZS5cbiAgICAgKi9cbiAgICByZXNvbHZlKGRvYykge1xuICAgICAgICBsZXQgZm91bmQgPSB1bmRlZmluZWQ7XG4gICAgICAgIHZpc2l0KGRvYywge1xuICAgICAgICAgICAgTm9kZTogKF9rZXksIG5vZGUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAobm9kZSA9PT0gdGhpcylcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0LkJSRUFLO1xuICAgICAgICAgICAgICAgIGlmIChub2RlLmFuY2hvciA9PT0gdGhpcy5zb3VyY2UpXG4gICAgICAgICAgICAgICAgICAgIGZvdW5kID0gbm9kZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBmb3VuZDtcbiAgICB9XG4gICAgdG9KU09OKF9hcmcsIGN0eCkge1xuICAgICAgICBpZiAoIWN0eClcbiAgICAgICAgICAgIHJldHVybiB7IHNvdXJjZTogdGhpcy5zb3VyY2UgfTtcbiAgICAgICAgY29uc3QgeyBhbmNob3JzLCBkb2MsIG1heEFsaWFzQ291bnQgfSA9IGN0eDtcbiAgICAgICAgY29uc3Qgc291cmNlID0gdGhpcy5yZXNvbHZlKGRvYyk7XG4gICAgICAgIGlmICghc291cmNlKSB7XG4gICAgICAgICAgICBjb25zdCBtc2cgPSBgVW5yZXNvbHZlZCBhbGlhcyAodGhlIGFuY2hvciBtdXN0IGJlIHNldCBiZWZvcmUgdGhlIGFsaWFzKTogJHt0aGlzLnNvdXJjZX1gO1xuICAgICAgICAgICAgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKG1zZyk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGRhdGEgPSBhbmNob3JzLmdldChzb3VyY2UpO1xuICAgICAgICBpZiAoIWRhdGEpIHtcbiAgICAgICAgICAgIC8vIFJlc29sdmUgYW5jaG9ycyBmb3IgTm9kZS5wcm90b3R5cGUudG9KUygpXG4gICAgICAgICAgICB0b0pTKHNvdXJjZSwgbnVsbCwgY3R4KTtcbiAgICAgICAgICAgIGRhdGEgPSBhbmNob3JzLmdldChzb3VyY2UpO1xuICAgICAgICB9XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgICBpZiAoIWRhdGEgfHwgZGF0YS5yZXMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgY29uc3QgbXNnID0gJ1RoaXMgc2hvdWxkIG5vdCBoYXBwZW46IEFsaWFzIGFuY2hvciB3YXMgbm90IHJlc29sdmVkPyc7XG4gICAgICAgICAgICB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IobXNnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobWF4QWxpYXNDb3VudCA+PSAwKSB7XG4gICAgICAgICAgICBkYXRhLmNvdW50ICs9IDE7XG4gICAgICAgICAgICBpZiAoZGF0YS5hbGlhc0NvdW50ID09PSAwKVxuICAgICAgICAgICAgICAgIGRhdGEuYWxpYXNDb3VudCA9IGdldEFsaWFzQ291bnQoZG9jLCBzb3VyY2UsIGFuY2hvcnMpO1xuICAgICAgICAgICAgaWYgKGRhdGEuY291bnQgKiBkYXRhLmFsaWFzQ291bnQgPiBtYXhBbGlhc0NvdW50KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbXNnID0gJ0V4Y2Vzc2l2ZSBhbGlhcyBjb3VudCBpbmRpY2F0ZXMgYSByZXNvdXJjZSBleGhhdXN0aW9uIGF0dGFjayc7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKG1zZyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRhdGEucmVzO1xuICAgIH1cbiAgICB0b1N0cmluZyhjdHgsIF9vbkNvbW1lbnQsIF9vbkNob21wS2VlcCkge1xuICAgICAgICBjb25zdCBzcmMgPSBgKiR7dGhpcy5zb3VyY2V9YDtcbiAgICAgICAgaWYgKGN0eCkge1xuICAgICAgICAgICAgYW5jaG9ySXNWYWxpZCh0aGlzLnNvdXJjZSk7XG4gICAgICAgICAgICBpZiAoY3R4Lm9wdGlvbnMudmVyaWZ5QWxpYXNPcmRlciAmJiAhY3R4LmFuY2hvcnMuaGFzKHRoaXMuc291cmNlKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1zZyA9IGBVbnJlc29sdmVkIGFsaWFzICh0aGUgYW5jaG9yIG11c3QgYmUgc2V0IGJlZm9yZSB0aGUgYWxpYXMpOiAke3RoaXMuc291cmNlfWA7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1zZyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY3R4LmltcGxpY2l0S2V5KVxuICAgICAgICAgICAgICAgIHJldHVybiBgJHtzcmN9IGA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNyYztcbiAgICB9XG59XG5mdW5jdGlvbiBnZXRBbGlhc0NvdW50KGRvYywgbm9kZSwgYW5jaG9ycykge1xuICAgIGlmIChpc0FsaWFzKG5vZGUpKSB7XG4gICAgICAgIGNvbnN0IHNvdXJjZSA9IG5vZGUucmVzb2x2ZShkb2MpO1xuICAgICAgICBjb25zdCBhbmNob3IgPSBhbmNob3JzICYmIHNvdXJjZSAmJiBhbmNob3JzLmdldChzb3VyY2UpO1xuICAgICAgICByZXR1cm4gYW5jaG9yID8gYW5jaG9yLmNvdW50ICogYW5jaG9yLmFsaWFzQ291bnQgOiAwO1xuICAgIH1cbiAgICBlbHNlIGlmIChpc0NvbGxlY3Rpb24obm9kZSkpIHtcbiAgICAgICAgbGV0IGNvdW50ID0gMDtcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIG5vZGUuaXRlbXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGMgPSBnZXRBbGlhc0NvdW50KGRvYywgaXRlbSwgYW5jaG9ycyk7XG4gICAgICAgICAgICBpZiAoYyA+IGNvdW50KVxuICAgICAgICAgICAgICAgIGNvdW50ID0gYztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY291bnQ7XG4gICAgfVxuICAgIGVsc2UgaWYgKGlzUGFpcihub2RlKSkge1xuICAgICAgICBjb25zdCBrYyA9IGdldEFsaWFzQ291bnQoZG9jLCBub2RlLmtleSwgYW5jaG9ycyk7XG4gICAgICAgIGNvbnN0IHZjID0gZ2V0QWxpYXNDb3VudChkb2MsIG5vZGUudmFsdWUsIGFuY2hvcnMpO1xuICAgICAgICByZXR1cm4gTWF0aC5tYXgoa2MsIHZjKTtcbiAgICB9XG4gICAgcmV0dXJuIDE7XG59XG5cbmV4cG9ydCB7IEFsaWFzIH07XG4iLCAiaW1wb3J0IHsgU0NBTEFSIH0gZnJvbSAnLi9pZGVudGl0eS5qcyc7XG5pbXBvcnQgeyBOb2RlQmFzZSB9IGZyb20gJy4vTm9kZS5qcyc7XG5pbXBvcnQgeyB0b0pTIH0gZnJvbSAnLi90b0pTLmpzJztcblxuY29uc3QgaXNTY2FsYXJWYWx1ZSA9ICh2YWx1ZSkgPT4gIXZhbHVlIHx8ICh0eXBlb2YgdmFsdWUgIT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0Jyk7XG5jbGFzcyBTY2FsYXIgZXh0ZW5kcyBOb2RlQmFzZSB7XG4gICAgY29uc3RydWN0b3IodmFsdWUpIHtcbiAgICAgICAgc3VwZXIoU0NBTEFSKTtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIH1cbiAgICB0b0pTT04oYXJnLCBjdHgpIHtcbiAgICAgICAgcmV0dXJuIGN0eD8ua2VlcCA/IHRoaXMudmFsdWUgOiB0b0pTKHRoaXMudmFsdWUsIGFyZywgY3R4KTtcbiAgICB9XG4gICAgdG9TdHJpbmcoKSB7XG4gICAgICAgIHJldHVybiBTdHJpbmcodGhpcy52YWx1ZSk7XG4gICAgfVxufVxuU2NhbGFyLkJMT0NLX0ZPTERFRCA9ICdCTE9DS19GT0xERUQnO1xuU2NhbGFyLkJMT0NLX0xJVEVSQUwgPSAnQkxPQ0tfTElURVJBTCc7XG5TY2FsYXIuUExBSU4gPSAnUExBSU4nO1xuU2NhbGFyLlFVT1RFX0RPVUJMRSA9ICdRVU9URV9ET1VCTEUnO1xuU2NhbGFyLlFVT1RFX1NJTkdMRSA9ICdRVU9URV9TSU5HTEUnO1xuXG5leHBvcnQgeyBTY2FsYXIsIGlzU2NhbGFyVmFsdWUgfTtcbiIsICJpbXBvcnQgeyBBbGlhcyB9IGZyb20gJy4uL25vZGVzL0FsaWFzLmpzJztcbmltcG9ydCB7IGlzTm9kZSwgaXNQYWlyLCBNQVAsIFNFUSwgaXNEb2N1bWVudCB9IGZyb20gJy4uL25vZGVzL2lkZW50aXR5LmpzJztcbmltcG9ydCB7IFNjYWxhciB9IGZyb20gJy4uL25vZGVzL1NjYWxhci5qcyc7XG5cbmNvbnN0IGRlZmF1bHRUYWdQcmVmaXggPSAndGFnOnlhbWwub3JnLDIwMDI6JztcbmZ1bmN0aW9uIGZpbmRUYWdPYmplY3QodmFsdWUsIHRhZ05hbWUsIHRhZ3MpIHtcbiAgICBpZiAodGFnTmFtZSkge1xuICAgICAgICBjb25zdCBtYXRjaCA9IHRhZ3MuZmlsdGVyKHQgPT4gdC50YWcgPT09IHRhZ05hbWUpO1xuICAgICAgICBjb25zdCB0YWdPYmogPSBtYXRjaC5maW5kKHQgPT4gIXQuZm9ybWF0KSA/PyBtYXRjaFswXTtcbiAgICAgICAgaWYgKCF0YWdPYmopXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFRhZyAke3RhZ05hbWV9IG5vdCBmb3VuZGApO1xuICAgICAgICByZXR1cm4gdGFnT2JqO1xuICAgIH1cbiAgICByZXR1cm4gdGFncy5maW5kKHQgPT4gdC5pZGVudGlmeT8uKHZhbHVlKSAmJiAhdC5mb3JtYXQpO1xufVxuZnVuY3Rpb24gY3JlYXRlTm9kZSh2YWx1ZSwgdGFnTmFtZSwgY3R4KSB7XG4gICAgaWYgKGlzRG9jdW1lbnQodmFsdWUpKVxuICAgICAgICB2YWx1ZSA9IHZhbHVlLmNvbnRlbnRzO1xuICAgIGlmIChpc05vZGUodmFsdWUpKVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgaWYgKGlzUGFpcih2YWx1ZSkpIHtcbiAgICAgICAgY29uc3QgbWFwID0gY3R4LnNjaGVtYVtNQVBdLmNyZWF0ZU5vZGU/LihjdHguc2NoZW1hLCBudWxsLCBjdHgpO1xuICAgICAgICBtYXAuaXRlbXMucHVzaCh2YWx1ZSk7XG4gICAgICAgIHJldHVybiBtYXA7XG4gICAgfVxuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIFN0cmluZyB8fFxuICAgICAgICB2YWx1ZSBpbnN0YW5jZW9mIE51bWJlciB8fFxuICAgICAgICB2YWx1ZSBpbnN0YW5jZW9mIEJvb2xlYW4gfHxcbiAgICAgICAgKHR5cGVvZiBCaWdJbnQgIT09ICd1bmRlZmluZWQnICYmIHZhbHVlIGluc3RhbmNlb2YgQmlnSW50KSAvLyBub3Qgc3VwcG9ydGVkIGV2ZXJ5d2hlcmVcbiAgICApIHtcbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zZXJpYWxpemVqc29ucHJvcGVydHlcbiAgICAgICAgdmFsdWUgPSB2YWx1ZS52YWx1ZU9mKCk7XG4gICAgfVxuICAgIGNvbnN0IHsgYWxpYXNEdXBsaWNhdGVPYmplY3RzLCBvbkFuY2hvciwgb25UYWdPYmosIHNjaGVtYSwgc291cmNlT2JqZWN0cyB9ID0gY3R4O1xuICAgIC8vIERldGVjdCBkdXBsaWNhdGUgcmVmZXJlbmNlcyB0byB0aGUgc2FtZSBvYmplY3QgJiB1c2UgQWxpYXMgbm9kZXMgZm9yIGFsbFxuICAgIC8vIGFmdGVyIGZpcnN0LiBUaGUgYHJlZmAgd3JhcHBlciBhbGxvd3MgZm9yIGNpcmN1bGFyIHJlZmVyZW5jZXMgdG8gcmVzb2x2ZS5cbiAgICBsZXQgcmVmID0gdW5kZWZpbmVkO1xuICAgIGlmIChhbGlhc0R1cGxpY2F0ZU9iamVjdHMgJiYgdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgICByZWYgPSBzb3VyY2VPYmplY3RzLmdldCh2YWx1ZSk7XG4gICAgICAgIGlmIChyZWYpIHtcbiAgICAgICAgICAgIGlmICghcmVmLmFuY2hvcilcbiAgICAgICAgICAgICAgICByZWYuYW5jaG9yID0gb25BbmNob3IodmFsdWUpO1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBBbGlhcyhyZWYuYW5jaG9yKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJlZiA9IHsgYW5jaG9yOiBudWxsLCBub2RlOiBudWxsIH07XG4gICAgICAgICAgICBzb3VyY2VPYmplY3RzLnNldCh2YWx1ZSwgcmVmKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAodGFnTmFtZT8uc3RhcnRzV2l0aCgnISEnKSlcbiAgICAgICAgdGFnTmFtZSA9IGRlZmF1bHRUYWdQcmVmaXggKyB0YWdOYW1lLnNsaWNlKDIpO1xuICAgIGxldCB0YWdPYmogPSBmaW5kVGFnT2JqZWN0KHZhbHVlLCB0YWdOYW1lLCBzY2hlbWEudGFncyk7XG4gICAgaWYgKCF0YWdPYmopIHtcbiAgICAgICAgaWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZS50b0pTT04gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWNhbGxcbiAgICAgICAgICAgIHZhbHVlID0gdmFsdWUudG9KU09OKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF2YWx1ZSB8fCB0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICBjb25zdCBub2RlID0gbmV3IFNjYWxhcih2YWx1ZSk7XG4gICAgICAgICAgICBpZiAocmVmKVxuICAgICAgICAgICAgICAgIHJlZi5ub2RlID0gbm9kZTtcbiAgICAgICAgICAgIHJldHVybiBub2RlO1xuICAgICAgICB9XG4gICAgICAgIHRhZ09iaiA9XG4gICAgICAgICAgICB2YWx1ZSBpbnN0YW5jZW9mIE1hcFxuICAgICAgICAgICAgICAgID8gc2NoZW1hW01BUF1cbiAgICAgICAgICAgICAgICA6IFN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QodmFsdWUpXG4gICAgICAgICAgICAgICAgICAgID8gc2NoZW1hW1NFUV1cbiAgICAgICAgICAgICAgICAgICAgOiBzY2hlbWFbTUFQXTtcbiAgICB9XG4gICAgaWYgKG9uVGFnT2JqKSB7XG4gICAgICAgIG9uVGFnT2JqKHRhZ09iaik7XG4gICAgICAgIGRlbGV0ZSBjdHgub25UYWdPYmo7XG4gICAgfVxuICAgIGNvbnN0IG5vZGUgPSB0YWdPYmo/LmNyZWF0ZU5vZGVcbiAgICAgICAgPyB0YWdPYmouY3JlYXRlTm9kZShjdHguc2NoZW1hLCB2YWx1ZSwgY3R4KVxuICAgICAgICA6IHR5cGVvZiB0YWdPYmo/Lm5vZGVDbGFzcz8uZnJvbSA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICAgICAgPyB0YWdPYmoubm9kZUNsYXNzLmZyb20oY3R4LnNjaGVtYSwgdmFsdWUsIGN0eClcbiAgICAgICAgICAgIDogbmV3IFNjYWxhcih2YWx1ZSk7XG4gICAgaWYgKHRhZ05hbWUpXG4gICAgICAgIG5vZGUudGFnID0gdGFnTmFtZTtcbiAgICBlbHNlIGlmICghdGFnT2JqLmRlZmF1bHQpXG4gICAgICAgIG5vZGUudGFnID0gdGFnT2JqLnRhZztcbiAgICBpZiAocmVmKVxuICAgICAgICByZWYubm9kZSA9IG5vZGU7XG4gICAgcmV0dXJuIG5vZGU7XG59XG5cbmV4cG9ydCB7IGNyZWF0ZU5vZGUgfTtcbiIsICJpbXBvcnQgeyBjcmVhdGVOb2RlIH0gZnJvbSAnLi4vZG9jL2NyZWF0ZU5vZGUuanMnO1xuaW1wb3J0IHsgaXNOb2RlLCBpc1BhaXIsIGlzQ29sbGVjdGlvbiwgaXNTY2FsYXIgfSBmcm9tICcuL2lkZW50aXR5LmpzJztcbmltcG9ydCB7IE5vZGVCYXNlIH0gZnJvbSAnLi9Ob2RlLmpzJztcblxuZnVuY3Rpb24gY29sbGVjdGlvbkZyb21QYXRoKHNjaGVtYSwgcGF0aCwgdmFsdWUpIHtcbiAgICBsZXQgdiA9IHZhbHVlO1xuICAgIGZvciAobGV0IGkgPSBwYXRoLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgIGNvbnN0IGsgPSBwYXRoW2ldO1xuICAgICAgICBpZiAodHlwZW9mIGsgPT09ICdudW1iZXInICYmIE51bWJlci5pc0ludGVnZXIoaykgJiYgayA+PSAwKSB7XG4gICAgICAgICAgICBjb25zdCBhID0gW107XG4gICAgICAgICAgICBhW2tdID0gdjtcbiAgICAgICAgICAgIHYgPSBhO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdiA9IG5ldyBNYXAoW1trLCB2XV0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjcmVhdGVOb2RlKHYsIHVuZGVmaW5lZCwge1xuICAgICAgICBhbGlhc0R1cGxpY2F0ZU9iamVjdHM6IGZhbHNlLFxuICAgICAgICBrZWVwVW5kZWZpbmVkOiBmYWxzZSxcbiAgICAgICAgb25BbmNob3I6ICgpID0+IHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVGhpcyBzaG91bGQgbm90IGhhcHBlbiwgcGxlYXNlIHJlcG9ydCBhIGJ1Zy4nKTtcbiAgICAgICAgfSxcbiAgICAgICAgc2NoZW1hLFxuICAgICAgICBzb3VyY2VPYmplY3RzOiBuZXcgTWFwKClcbiAgICB9KTtcbn1cbi8vIFR5cGUgZ3VhcmQgaXMgaW50ZW50aW9uYWxseSBhIGxpdHRsZSB3cm9uZyBzbyBhcyB0byBiZSBtb3JlIHVzZWZ1bCxcbi8vIGFzIGl0IGRvZXMgbm90IGNvdmVyIHVudHlwYWJsZSBlbXB0eSBub24tc3RyaW5nIGl0ZXJhYmxlcyAoZS5nLiBbXSkuXG5jb25zdCBpc0VtcHR5UGF0aCA9IChwYXRoKSA9PiBwYXRoID09IG51bGwgfHxcbiAgICAodHlwZW9mIHBhdGggPT09ICdvYmplY3QnICYmICEhcGF0aFtTeW1ib2wuaXRlcmF0b3JdKCkubmV4dCgpLmRvbmUpO1xuY2xhc3MgQ29sbGVjdGlvbiBleHRlbmRzIE5vZGVCYXNlIHtcbiAgICBjb25zdHJ1Y3Rvcih0eXBlLCBzY2hlbWEpIHtcbiAgICAgICAgc3VwZXIodHlwZSk7XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCAnc2NoZW1hJywge1xuICAgICAgICAgICAgdmFsdWU6IHNjaGVtYSxcbiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgd3JpdGFibGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENyZWF0ZSBhIGNvcHkgb2YgdGhpcyBjb2xsZWN0aW9uLlxuICAgICAqXG4gICAgICogQHBhcmFtIHNjaGVtYSAtIElmIGRlZmluZWQsIG92ZXJ3cml0ZXMgdGhlIG9yaWdpbmFsJ3Mgc2NoZW1hXG4gICAgICovXG4gICAgY2xvbmUoc2NoZW1hKSB7XG4gICAgICAgIGNvbnN0IGNvcHkgPSBPYmplY3QuY3JlYXRlKE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnModGhpcykpO1xuICAgICAgICBpZiAoc2NoZW1hKVxuICAgICAgICAgICAgY29weS5zY2hlbWEgPSBzY2hlbWE7XG4gICAgICAgIGNvcHkuaXRlbXMgPSBjb3B5Lml0ZW1zLm1hcChpdCA9PiBpc05vZGUoaXQpIHx8IGlzUGFpcihpdCkgPyBpdC5jbG9uZShzY2hlbWEpIDogaXQpO1xuICAgICAgICBpZiAodGhpcy5yYW5nZSlcbiAgICAgICAgICAgIGNvcHkucmFuZ2UgPSB0aGlzLnJhbmdlLnNsaWNlKCk7XG4gICAgICAgIHJldHVybiBjb3B5O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBZGRzIGEgdmFsdWUgdG8gdGhlIGNvbGxlY3Rpb24uIEZvciBgISFtYXBgIGFuZCBgISFvbWFwYCB0aGUgdmFsdWUgbXVzdFxuICAgICAqIGJlIGEgUGFpciBpbnN0YW5jZSBvciBhIGB7IGtleSwgdmFsdWUgfWAgb2JqZWN0LCB3aGljaCBtYXkgbm90IGhhdmUgYSBrZXlcbiAgICAgKiB0aGF0IGFscmVhZHkgZXhpc3RzIGluIHRoZSBtYXAuXG4gICAgICovXG4gICAgYWRkSW4ocGF0aCwgdmFsdWUpIHtcbiAgICAgICAgaWYgKGlzRW1wdHlQYXRoKHBhdGgpKVxuICAgICAgICAgICAgdGhpcy5hZGQodmFsdWUpO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IFtrZXksIC4uLnJlc3RdID0gcGF0aDtcbiAgICAgICAgICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldChrZXksIHRydWUpO1xuICAgICAgICAgICAgaWYgKGlzQ29sbGVjdGlvbihub2RlKSlcbiAgICAgICAgICAgICAgICBub2RlLmFkZEluKHJlc3QsIHZhbHVlKTtcbiAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUgPT09IHVuZGVmaW5lZCAmJiB0aGlzLnNjaGVtYSlcbiAgICAgICAgICAgICAgICB0aGlzLnNldChrZXksIGNvbGxlY3Rpb25Gcm9tUGF0aCh0aGlzLnNjaGVtYSwgcmVzdCwgdmFsdWUpKTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIFlBTUwgY29sbGVjdGlvbiBhdCAke2tleX0uIFJlbWFpbmluZyBwYXRoOiAke3Jlc3R9YCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBhIHZhbHVlIGZyb20gdGhlIGNvbGxlY3Rpb24uXG4gICAgICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBpdGVtIHdhcyBmb3VuZCBhbmQgcmVtb3ZlZC5cbiAgICAgKi9cbiAgICBkZWxldGVJbihwYXRoKSB7XG4gICAgICAgIGNvbnN0IFtrZXksIC4uLnJlc3RdID0gcGF0aDtcbiAgICAgICAgaWYgKHJlc3QubGVuZ3RoID09PSAwKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGVsZXRlKGtleSk7XG4gICAgICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldChrZXksIHRydWUpO1xuICAgICAgICBpZiAoaXNDb2xsZWN0aW9uKG5vZGUpKVxuICAgICAgICAgICAgcmV0dXJuIG5vZGUuZGVsZXRlSW4ocmVzdCk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgWUFNTCBjb2xsZWN0aW9uIGF0ICR7a2V5fS4gUmVtYWluaW5nIHBhdGg6ICR7cmVzdH1gKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBpdGVtIGF0IGBrZXlgLCBvciBgdW5kZWZpbmVkYCBpZiBub3QgZm91bmQuIEJ5IGRlZmF1bHQgdW53cmFwc1xuICAgICAqIHNjYWxhciB2YWx1ZXMgZnJvbSB0aGVpciBzdXJyb3VuZGluZyBub2RlOyB0byBkaXNhYmxlIHNldCBga2VlcFNjYWxhcmAgdG9cbiAgICAgKiBgdHJ1ZWAgKGNvbGxlY3Rpb25zIGFyZSBhbHdheXMgcmV0dXJuZWQgaW50YWN0KS5cbiAgICAgKi9cbiAgICBnZXRJbihwYXRoLCBrZWVwU2NhbGFyKSB7XG4gICAgICAgIGNvbnN0IFtrZXksIC4uLnJlc3RdID0gcGF0aDtcbiAgICAgICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0KGtleSwgdHJ1ZSk7XG4gICAgICAgIGlmIChyZXN0Lmxlbmd0aCA9PT0gMClcbiAgICAgICAgICAgIHJldHVybiAha2VlcFNjYWxhciAmJiBpc1NjYWxhcihub2RlKSA/IG5vZGUudmFsdWUgOiBub2RlO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICByZXR1cm4gaXNDb2xsZWN0aW9uKG5vZGUpID8gbm9kZS5nZXRJbihyZXN0LCBrZWVwU2NhbGFyKSA6IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgaGFzQWxsTnVsbFZhbHVlcyhhbGxvd1NjYWxhcikge1xuICAgICAgICByZXR1cm4gdGhpcy5pdGVtcy5ldmVyeShub2RlID0+IHtcbiAgICAgICAgICAgIGlmICghaXNQYWlyKG5vZGUpKVxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIGNvbnN0IG4gPSBub2RlLnZhbHVlO1xuICAgICAgICAgICAgcmV0dXJuIChuID09IG51bGwgfHxcbiAgICAgICAgICAgICAgICAoYWxsb3dTY2FsYXIgJiZcbiAgICAgICAgICAgICAgICAgICAgaXNTY2FsYXIobikgJiZcbiAgICAgICAgICAgICAgICAgICAgbi52YWx1ZSA9PSBudWxsICYmXG4gICAgICAgICAgICAgICAgICAgICFuLmNvbW1lbnRCZWZvcmUgJiZcbiAgICAgICAgICAgICAgICAgICAgIW4uY29tbWVudCAmJlxuICAgICAgICAgICAgICAgICAgICAhbi50YWcpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiB0aGUgY29sbGVjdGlvbiBpbmNsdWRlcyBhIHZhbHVlIHdpdGggdGhlIGtleSBga2V5YC5cbiAgICAgKi9cbiAgICBoYXNJbihwYXRoKSB7XG4gICAgICAgIGNvbnN0IFtrZXksIC4uLnJlc3RdID0gcGF0aDtcbiAgICAgICAgaWYgKHJlc3QubGVuZ3RoID09PSAwKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaGFzKGtleSk7XG4gICAgICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldChrZXksIHRydWUpO1xuICAgICAgICByZXR1cm4gaXNDb2xsZWN0aW9uKG5vZGUpID8gbm9kZS5oYXNJbihyZXN0KSA6IGZhbHNlO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBTZXRzIGEgdmFsdWUgaW4gdGhpcyBjb2xsZWN0aW9uLiBGb3IgYCEhc2V0YCwgYHZhbHVlYCBuZWVkcyB0byBiZSBhXG4gICAgICogYm9vbGVhbiB0byBhZGQvcmVtb3ZlIHRoZSBpdGVtIGZyb20gdGhlIHNldC5cbiAgICAgKi9cbiAgICBzZXRJbihwYXRoLCB2YWx1ZSkge1xuICAgICAgICBjb25zdCBba2V5LCAuLi5yZXN0XSA9IHBhdGg7XG4gICAgICAgIGlmIChyZXN0Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBub2RlID0gdGhpcy5nZXQoa2V5LCB0cnVlKTtcbiAgICAgICAgICAgIGlmIChpc0NvbGxlY3Rpb24obm9kZSkpXG4gICAgICAgICAgICAgICAgbm9kZS5zZXRJbihyZXN0LCB2YWx1ZSk7XG4gICAgICAgICAgICBlbHNlIGlmIChub2RlID09PSB1bmRlZmluZWQgJiYgdGhpcy5zY2hlbWEpXG4gICAgICAgICAgICAgICAgdGhpcy5zZXQoa2V5LCBjb2xsZWN0aW9uRnJvbVBhdGgodGhpcy5zY2hlbWEsIHJlc3QsIHZhbHVlKSk7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBZQU1MIGNvbGxlY3Rpb24gYXQgJHtrZXl9LiBSZW1haW5pbmcgcGF0aDogJHtyZXN0fWApO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgeyBDb2xsZWN0aW9uLCBjb2xsZWN0aW9uRnJvbVBhdGgsIGlzRW1wdHlQYXRoIH07XG4iLCAiLyoqXG4gKiBTdHJpbmdpZmllcyBhIGNvbW1lbnQuXG4gKlxuICogRW1wdHkgY29tbWVudCBsaW5lcyBhcmUgbGVmdCBlbXB0eSxcbiAqIGxpbmVzIGNvbnNpc3Rpbmcgb2YgYSBzaW5nbGUgc3BhY2UgYXJlIHJlcGxhY2VkIGJ5IGAjYCxcbiAqIGFuZCBhbGwgb3RoZXIgbGluZXMgYXJlIHByZWZpeGVkIHdpdGggYSBgI2AuXG4gKi9cbmNvbnN0IHN0cmluZ2lmeUNvbW1lbnQgPSAoc3RyKSA9PiBzdHIucmVwbGFjZSgvXig/ISQpKD86ICQpPy9nbSwgJyMnKTtcbmZ1bmN0aW9uIGluZGVudENvbW1lbnQoY29tbWVudCwgaW5kZW50KSB7XG4gICAgaWYgKC9eXFxuKyQvLnRlc3QoY29tbWVudCkpXG4gICAgICAgIHJldHVybiBjb21tZW50LnN1YnN0cmluZygxKTtcbiAgICByZXR1cm4gaW5kZW50ID8gY29tbWVudC5yZXBsYWNlKC9eKD8hICokKS9nbSwgaW5kZW50KSA6IGNvbW1lbnQ7XG59XG5jb25zdCBsaW5lQ29tbWVudCA9IChzdHIsIGluZGVudCwgY29tbWVudCkgPT4gc3RyLmVuZHNXaXRoKCdcXG4nKVxuICAgID8gaW5kZW50Q29tbWVudChjb21tZW50LCBpbmRlbnQpXG4gICAgOiBjb21tZW50LmluY2x1ZGVzKCdcXG4nKVxuICAgICAgICA/ICdcXG4nICsgaW5kZW50Q29tbWVudChjb21tZW50LCBpbmRlbnQpXG4gICAgICAgIDogKHN0ci5lbmRzV2l0aCgnICcpID8gJycgOiAnICcpICsgY29tbWVudDtcblxuZXhwb3J0IHsgaW5kZW50Q29tbWVudCwgbGluZUNvbW1lbnQsIHN0cmluZ2lmeUNvbW1lbnQgfTtcbiIsICJjb25zdCBGT0xEX0ZMT1cgPSAnZmxvdyc7XG5jb25zdCBGT0xEX0JMT0NLID0gJ2Jsb2NrJztcbmNvbnN0IEZPTERfUVVPVEVEID0gJ3F1b3RlZCc7XG4vKipcbiAqIFRyaWVzIHRvIGtlZXAgaW5wdXQgYXQgdXAgdG8gYGxpbmVXaWR0aGAgY2hhcmFjdGVycywgc3BsaXR0aW5nIG9ubHkgb24gc3BhY2VzXG4gKiBub3QgZm9sbG93ZWQgYnkgbmV3bGluZXMgb3Igc3BhY2VzIHVubGVzcyBgbW9kZWAgaXMgYCdxdW90ZWQnYC4gTGluZXMgYXJlXG4gKiB0ZXJtaW5hdGVkIHdpdGggYFxcbmAgYW5kIHN0YXJ0ZWQgd2l0aCBgaW5kZW50YC5cbiAqL1xuZnVuY3Rpb24gZm9sZEZsb3dMaW5lcyh0ZXh0LCBpbmRlbnQsIG1vZGUgPSAnZmxvdycsIHsgaW5kZW50QXRTdGFydCwgbGluZVdpZHRoID0gODAsIG1pbkNvbnRlbnRXaWR0aCA9IDIwLCBvbkZvbGQsIG9uT3ZlcmZsb3cgfSA9IHt9KSB7XG4gICAgaWYgKCFsaW5lV2lkdGggfHwgbGluZVdpZHRoIDwgMClcbiAgICAgICAgcmV0dXJuIHRleHQ7XG4gICAgaWYgKGxpbmVXaWR0aCA8IG1pbkNvbnRlbnRXaWR0aClcbiAgICAgICAgbWluQ29udGVudFdpZHRoID0gMDtcbiAgICBjb25zdCBlbmRTdGVwID0gTWF0aC5tYXgoMSArIG1pbkNvbnRlbnRXaWR0aCwgMSArIGxpbmVXaWR0aCAtIGluZGVudC5sZW5ndGgpO1xuICAgIGlmICh0ZXh0Lmxlbmd0aCA8PSBlbmRTdGVwKVxuICAgICAgICByZXR1cm4gdGV4dDtcbiAgICBjb25zdCBmb2xkcyA9IFtdO1xuICAgIGNvbnN0IGVzY2FwZWRGb2xkcyA9IHt9O1xuICAgIGxldCBlbmQgPSBsaW5lV2lkdGggLSBpbmRlbnQubGVuZ3RoO1xuICAgIGlmICh0eXBlb2YgaW5kZW50QXRTdGFydCA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgaWYgKGluZGVudEF0U3RhcnQgPiBsaW5lV2lkdGggLSBNYXRoLm1heCgyLCBtaW5Db250ZW50V2lkdGgpKVxuICAgICAgICAgICAgZm9sZHMucHVzaCgwKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgZW5kID0gbGluZVdpZHRoIC0gaW5kZW50QXRTdGFydDtcbiAgICB9XG4gICAgbGV0IHNwbGl0ID0gdW5kZWZpbmVkO1xuICAgIGxldCBwcmV2ID0gdW5kZWZpbmVkO1xuICAgIGxldCBvdmVyZmxvdyA9IGZhbHNlO1xuICAgIGxldCBpID0gLTE7XG4gICAgbGV0IGVzY1N0YXJ0ID0gLTE7XG4gICAgbGV0IGVzY0VuZCA9IC0xO1xuICAgIGlmIChtb2RlID09PSBGT0xEX0JMT0NLKSB7XG4gICAgICAgIGkgPSBjb25zdW1lTW9yZUluZGVudGVkTGluZXModGV4dCwgaSwgaW5kZW50Lmxlbmd0aCk7XG4gICAgICAgIGlmIChpICE9PSAtMSlcbiAgICAgICAgICAgIGVuZCA9IGkgKyBlbmRTdGVwO1xuICAgIH1cbiAgICBmb3IgKGxldCBjaDsgKGNoID0gdGV4dFsoaSArPSAxKV0pOykge1xuICAgICAgICBpZiAobW9kZSA9PT0gRk9MRF9RVU9URUQgJiYgY2ggPT09ICdcXFxcJykge1xuICAgICAgICAgICAgZXNjU3RhcnQgPSBpO1xuICAgICAgICAgICAgc3dpdGNoICh0ZXh0W2kgKyAxXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ3gnOlxuICAgICAgICAgICAgICAgICAgICBpICs9IDM7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3UnOlxuICAgICAgICAgICAgICAgICAgICBpICs9IDU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ1UnOlxuICAgICAgICAgICAgICAgICAgICBpICs9IDk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGkgKz0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVzY0VuZCA9IGk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNoID09PSAnXFxuJykge1xuICAgICAgICAgICAgaWYgKG1vZGUgPT09IEZPTERfQkxPQ0spXG4gICAgICAgICAgICAgICAgaSA9IGNvbnN1bWVNb3JlSW5kZW50ZWRMaW5lcyh0ZXh0LCBpLCBpbmRlbnQubGVuZ3RoKTtcbiAgICAgICAgICAgIGVuZCA9IGkgKyBpbmRlbnQubGVuZ3RoICsgZW5kU3RlcDtcbiAgICAgICAgICAgIHNwbGl0ID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKGNoID09PSAnICcgJiZcbiAgICAgICAgICAgICAgICBwcmV2ICYmXG4gICAgICAgICAgICAgICAgcHJldiAhPT0gJyAnICYmXG4gICAgICAgICAgICAgICAgcHJldiAhPT0gJ1xcbicgJiZcbiAgICAgICAgICAgICAgICBwcmV2ICE9PSAnXFx0Jykge1xuICAgICAgICAgICAgICAgIC8vIHNwYWNlIHN1cnJvdW5kZWQgYnkgbm9uLXNwYWNlIGNhbiBiZSByZXBsYWNlZCB3aXRoIG5ld2xpbmUgKyBpbmRlbnRcbiAgICAgICAgICAgICAgICBjb25zdCBuZXh0ID0gdGV4dFtpICsgMV07XG4gICAgICAgICAgICAgICAgaWYgKG5leHQgJiYgbmV4dCAhPT0gJyAnICYmIG5leHQgIT09ICdcXG4nICYmIG5leHQgIT09ICdcXHQnKVxuICAgICAgICAgICAgICAgICAgICBzcGxpdCA9IGk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaSA+PSBlbmQpIHtcbiAgICAgICAgICAgICAgICBpZiAoc3BsaXQpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9sZHMucHVzaChzcGxpdCk7XG4gICAgICAgICAgICAgICAgICAgIGVuZCA9IHNwbGl0ICsgZW5kU3RlcDtcbiAgICAgICAgICAgICAgICAgICAgc3BsaXQgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1vZGUgPT09IEZPTERfUVVPVEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHdoaXRlLXNwYWNlIGNvbGxlY3RlZCBhdCBlbmQgbWF5IHN0cmV0Y2ggcGFzdCBsaW5lV2lkdGhcbiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHByZXYgPT09ICcgJyB8fCBwcmV2ID09PSAnXFx0Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJldiA9IGNoO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2ggPSB0ZXh0WyhpICs9IDEpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJmbG93ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBBY2NvdW50IGZvciBuZXdsaW5lIGVzY2FwZSwgYnV0IGRvbid0IGJyZWFrIHByZWNlZGluZyBlc2NhcGVcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaiA9IGkgPiBlc2NFbmQgKyAxID8gaSAtIDIgOiBlc2NTdGFydCAtIDE7XG4gICAgICAgICAgICAgICAgICAgIC8vIEJhaWwgb3V0IGlmIGxpbmVXaWR0aCAmIG1pbkNvbnRlbnRXaWR0aCBhcmUgc2hvcnRlciB0aGFuIGFuIGVzY2FwZSBzdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVzY2FwZWRGb2xkc1tqXSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0O1xuICAgICAgICAgICAgICAgICAgICBmb2xkcy5wdXNoKGopO1xuICAgICAgICAgICAgICAgICAgICBlc2NhcGVkRm9sZHNbal0gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBlbmQgPSBqICsgZW5kU3RlcDtcbiAgICAgICAgICAgICAgICAgICAgc3BsaXQgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBvdmVyZmxvdyA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHByZXYgPSBjaDtcbiAgICB9XG4gICAgaWYgKG92ZXJmbG93ICYmIG9uT3ZlcmZsb3cpXG4gICAgICAgIG9uT3ZlcmZsb3coKTtcbiAgICBpZiAoZm9sZHMubGVuZ3RoID09PSAwKVxuICAgICAgICByZXR1cm4gdGV4dDtcbiAgICBpZiAob25Gb2xkKVxuICAgICAgICBvbkZvbGQoKTtcbiAgICBsZXQgcmVzID0gdGV4dC5zbGljZSgwLCBmb2xkc1swXSk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmb2xkcy5sZW5ndGg7ICsraSkge1xuICAgICAgICBjb25zdCBmb2xkID0gZm9sZHNbaV07XG4gICAgICAgIGNvbnN0IGVuZCA9IGZvbGRzW2kgKyAxXSB8fCB0ZXh0Lmxlbmd0aDtcbiAgICAgICAgaWYgKGZvbGQgPT09IDApXG4gICAgICAgICAgICByZXMgPSBgXFxuJHtpbmRlbnR9JHt0ZXh0LnNsaWNlKDAsIGVuZCl9YDtcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAobW9kZSA9PT0gRk9MRF9RVU9URUQgJiYgZXNjYXBlZEZvbGRzW2ZvbGRdKVxuICAgICAgICAgICAgICAgIHJlcyArPSBgJHt0ZXh0W2ZvbGRdfVxcXFxgO1xuICAgICAgICAgICAgcmVzICs9IGBcXG4ke2luZGVudH0ke3RleHQuc2xpY2UoZm9sZCArIDEsIGVuZCl9YDtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzO1xufVxuLyoqXG4gKiBQcmVzdW1lcyBgaSArIDFgIGlzIGF0IHRoZSBzdGFydCBvZiBhIGxpbmVcbiAqIEByZXR1cm5zIGluZGV4IG9mIGxhc3QgbmV3bGluZSBpbiBtb3JlLWluZGVudGVkIGJsb2NrXG4gKi9cbmZ1bmN0aW9uIGNvbnN1bWVNb3JlSW5kZW50ZWRMaW5lcyh0ZXh0LCBpLCBpbmRlbnQpIHtcbiAgICBsZXQgZW5kID0gaTtcbiAgICBsZXQgc3RhcnQgPSBpICsgMTtcbiAgICBsZXQgY2ggPSB0ZXh0W3N0YXJ0XTtcbiAgICB3aGlsZSAoY2ggPT09ICcgJyB8fCBjaCA9PT0gJ1xcdCcpIHtcbiAgICAgICAgaWYgKGkgPCBzdGFydCArIGluZGVudCkge1xuICAgICAgICAgICAgY2ggPSB0ZXh0WysraV07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAgICAgY2ggPSB0ZXh0WysraV07XG4gICAgICAgICAgICB9IHdoaWxlIChjaCAmJiBjaCAhPT0gJ1xcbicpO1xuICAgICAgICAgICAgZW5kID0gaTtcbiAgICAgICAgICAgIHN0YXJ0ID0gaSArIDE7XG4gICAgICAgICAgICBjaCA9IHRleHRbc3RhcnRdO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBlbmQ7XG59XG5cbmV4cG9ydCB7IEZPTERfQkxPQ0ssIEZPTERfRkxPVywgRk9MRF9RVU9URUQsIGZvbGRGbG93TGluZXMgfTtcbiIsICJpbXBvcnQgeyBTY2FsYXIgfSBmcm9tICcuLi9ub2Rlcy9TY2FsYXIuanMnO1xuaW1wb3J0IHsgZm9sZEZsb3dMaW5lcywgRk9MRF9RVU9URUQsIEZPTERfRkxPVywgRk9MRF9CTE9DSyB9IGZyb20gJy4vZm9sZEZsb3dMaW5lcy5qcyc7XG5cbmNvbnN0IGdldEZvbGRPcHRpb25zID0gKGN0eCwgaXNCbG9jaykgPT4gKHtcbiAgICBpbmRlbnRBdFN0YXJ0OiBpc0Jsb2NrID8gY3R4LmluZGVudC5sZW5ndGggOiBjdHguaW5kZW50QXRTdGFydCxcbiAgICBsaW5lV2lkdGg6IGN0eC5vcHRpb25zLmxpbmVXaWR0aCxcbiAgICBtaW5Db250ZW50V2lkdGg6IGN0eC5vcHRpb25zLm1pbkNvbnRlbnRXaWR0aFxufSk7XG4vLyBBbHNvIGNoZWNrcyBmb3IgbGluZXMgc3RhcnRpbmcgd2l0aCAlLCBhcyBwYXJzaW5nIHRoZSBvdXRwdXQgYXMgWUFNTCAxLjEgd2lsbFxuLy8gcHJlc3VtZSB0aGF0J3Mgc3RhcnRpbmcgYSBuZXcgZG9jdW1lbnQuXG5jb25zdCBjb250YWluc0RvY3VtZW50TWFya2VyID0gKHN0cikgPT4gL14oJXwtLS18XFwuXFwuXFwuKS9tLnRlc3Qoc3RyKTtcbmZ1bmN0aW9uIGxpbmVMZW5ndGhPdmVyTGltaXQoc3RyLCBsaW5lV2lkdGgsIGluZGVudExlbmd0aCkge1xuICAgIGlmICghbGluZVdpZHRoIHx8IGxpbmVXaWR0aCA8IDApXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCBsaW1pdCA9IGxpbmVXaWR0aCAtIGluZGVudExlbmd0aDtcbiAgICBjb25zdCBzdHJMZW4gPSBzdHIubGVuZ3RoO1xuICAgIGlmIChzdHJMZW4gPD0gbGltaXQpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICBmb3IgKGxldCBpID0gMCwgc3RhcnQgPSAwOyBpIDwgc3RyTGVuOyArK2kpIHtcbiAgICAgICAgaWYgKHN0cltpXSA9PT0gJ1xcbicpIHtcbiAgICAgICAgICAgIGlmIChpIC0gc3RhcnQgPiBsaW1pdClcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIHN0YXJ0ID0gaSArIDE7XG4gICAgICAgICAgICBpZiAoc3RyTGVuIC0gc3RhcnQgPD0gbGltaXQpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xufVxuZnVuY3Rpb24gZG91YmxlUXVvdGVkU3RyaW5nKHZhbHVlLCBjdHgpIHtcbiAgICBjb25zdCBqc29uID0gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuICAgIGlmIChjdHgub3B0aW9ucy5kb3VibGVRdW90ZWRBc0pTT04pXG4gICAgICAgIHJldHVybiBqc29uO1xuICAgIGNvbnN0IHsgaW1wbGljaXRLZXkgfSA9IGN0eDtcbiAgICBjb25zdCBtaW5NdWx0aUxpbmVMZW5ndGggPSBjdHgub3B0aW9ucy5kb3VibGVRdW90ZWRNaW5NdWx0aUxpbmVMZW5ndGg7XG4gICAgY29uc3QgaW5kZW50ID0gY3R4LmluZGVudCB8fCAoY29udGFpbnNEb2N1bWVudE1hcmtlcih2YWx1ZSkgPyAnICAnIDogJycpO1xuICAgIGxldCBzdHIgPSAnJztcbiAgICBsZXQgc3RhcnQgPSAwO1xuICAgIGZvciAobGV0IGkgPSAwLCBjaCA9IGpzb25baV07IGNoOyBjaCA9IGpzb25bKytpXSkge1xuICAgICAgICBpZiAoY2ggPT09ICcgJyAmJiBqc29uW2kgKyAxXSA9PT0gJ1xcXFwnICYmIGpzb25baSArIDJdID09PSAnbicpIHtcbiAgICAgICAgICAgIC8vIHNwYWNlIGJlZm9yZSBuZXdsaW5lIG5lZWRzIHRvIGJlIGVzY2FwZWQgdG8gbm90IGJlIGZvbGRlZFxuICAgICAgICAgICAgc3RyICs9IGpzb24uc2xpY2Uoc3RhcnQsIGkpICsgJ1xcXFwgJztcbiAgICAgICAgICAgIGkgKz0gMTtcbiAgICAgICAgICAgIHN0YXJ0ID0gaTtcbiAgICAgICAgICAgIGNoID0gJ1xcXFwnO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjaCA9PT0gJ1xcXFwnKVxuICAgICAgICAgICAgc3dpdGNoIChqc29uW2kgKyAxXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ3UnOlxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHIgKz0ganNvbi5zbGljZShzdGFydCwgaSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb2RlID0ganNvbi5zdWJzdHIoaSArIDIsIDQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChjb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnMDAwMCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ciArPSAnXFxcXDAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICcwMDA3JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyICs9ICdcXFxcYSc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJzAwMGInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIgKz0gJ1xcXFx2JztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnMDAxYic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ciArPSAnXFxcXGUnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICcwMDg1JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyICs9ICdcXFxcTic7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJzAwYTAnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIgKz0gJ1xcXFxfJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnMjAyOCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ciArPSAnXFxcXEwnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICcyMDI5JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyICs9ICdcXFxcUCc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb2RlLnN1YnN0cigwLCAyKSA9PT0gJzAwJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ciArPSAnXFxcXHgnICsgY29kZS5zdWJzdHIoMik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ciArPSBqc29uLnN1YnN0cihpLCA2KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGkgKz0gNTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0ID0gaSArIDE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnbic6XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbXBsaWNpdEtleSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAganNvbltpICsgMl0gPT09ICdcIicgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGpzb24ubGVuZ3RoIDwgbWluTXVsdGlMaW5lTGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpICs9IDE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBmb2xkaW5nIHdpbGwgZWF0IGZpcnN0IG5ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0ciArPSBqc29uLnNsaWNlKHN0YXJ0LCBpKSArICdcXG5cXG4nO1xuICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGpzb25baSArIDJdID09PSAnXFxcXCcgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uW2kgKyAzXSA9PT0gJ24nICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbltpICsgNF0gIT09ICdcIicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIgKz0gJ1xcbic7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaSArPSAyO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgc3RyICs9IGluZGVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNwYWNlIGFmdGVyIG5ld2xpbmUgbmVlZHMgdG8gYmUgZXNjYXBlZCB0byBub3QgYmUgZm9sZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoanNvbltpICsgMl0gPT09ICcgJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIgKz0gJ1xcXFwnO1xuICAgICAgICAgICAgICAgICAgICAgICAgaSArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQgPSBpICsgMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBpICs9IDE7XG4gICAgICAgICAgICB9XG4gICAgfVxuICAgIHN0ciA9IHN0YXJ0ID8gc3RyICsganNvbi5zbGljZShzdGFydCkgOiBqc29uO1xuICAgIHJldHVybiBpbXBsaWNpdEtleVxuICAgICAgICA/IHN0clxuICAgICAgICA6IGZvbGRGbG93TGluZXMoc3RyLCBpbmRlbnQsIEZPTERfUVVPVEVELCBnZXRGb2xkT3B0aW9ucyhjdHgsIGZhbHNlKSk7XG59XG5mdW5jdGlvbiBzaW5nbGVRdW90ZWRTdHJpbmcodmFsdWUsIGN0eCkge1xuICAgIGlmIChjdHgub3B0aW9ucy5zaW5nbGVRdW90ZSA9PT0gZmFsc2UgfHxcbiAgICAgICAgKGN0eC5pbXBsaWNpdEtleSAmJiB2YWx1ZS5pbmNsdWRlcygnXFxuJykpIHx8XG4gICAgICAgIC9bIFxcdF1cXG58XFxuWyBcXHRdLy50ZXN0KHZhbHVlKSAvLyBzaW5nbGUgcXVvdGVkIHN0cmluZyBjYW4ndCBoYXZlIGxlYWRpbmcgb3IgdHJhaWxpbmcgd2hpdGVzcGFjZSBhcm91bmQgbmV3bGluZVxuICAgIClcbiAgICAgICAgcmV0dXJuIGRvdWJsZVF1b3RlZFN0cmluZyh2YWx1ZSwgY3R4KTtcbiAgICBjb25zdCBpbmRlbnQgPSBjdHguaW5kZW50IHx8IChjb250YWluc0RvY3VtZW50TWFya2VyKHZhbHVlKSA/ICcgICcgOiAnJyk7XG4gICAgY29uc3QgcmVzID0gXCInXCIgKyB2YWx1ZS5yZXBsYWNlKC8nL2csIFwiJydcIikucmVwbGFjZSgvXFxuKy9nLCBgJCZcXG4ke2luZGVudH1gKSArIFwiJ1wiO1xuICAgIHJldHVybiBjdHguaW1wbGljaXRLZXlcbiAgICAgICAgPyByZXNcbiAgICAgICAgOiBmb2xkRmxvd0xpbmVzKHJlcywgaW5kZW50LCBGT0xEX0ZMT1csIGdldEZvbGRPcHRpb25zKGN0eCwgZmFsc2UpKTtcbn1cbmZ1bmN0aW9uIHF1b3RlZFN0cmluZyh2YWx1ZSwgY3R4KSB7XG4gICAgY29uc3QgeyBzaW5nbGVRdW90ZSB9ID0gY3R4Lm9wdGlvbnM7XG4gICAgbGV0IHFzO1xuICAgIGlmIChzaW5nbGVRdW90ZSA9PT0gZmFsc2UpXG4gICAgICAgIHFzID0gZG91YmxlUXVvdGVkU3RyaW5nO1xuICAgIGVsc2Uge1xuICAgICAgICBjb25zdCBoYXNEb3VibGUgPSB2YWx1ZS5pbmNsdWRlcygnXCInKTtcbiAgICAgICAgY29uc3QgaGFzU2luZ2xlID0gdmFsdWUuaW5jbHVkZXMoXCInXCIpO1xuICAgICAgICBpZiAoaGFzRG91YmxlICYmICFoYXNTaW5nbGUpXG4gICAgICAgICAgICBxcyA9IHNpbmdsZVF1b3RlZFN0cmluZztcbiAgICAgICAgZWxzZSBpZiAoaGFzU2luZ2xlICYmICFoYXNEb3VibGUpXG4gICAgICAgICAgICBxcyA9IGRvdWJsZVF1b3RlZFN0cmluZztcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgcXMgPSBzaW5nbGVRdW90ZSA/IHNpbmdsZVF1b3RlZFN0cmluZyA6IGRvdWJsZVF1b3RlZFN0cmluZztcbiAgICB9XG4gICAgcmV0dXJuIHFzKHZhbHVlLCBjdHgpO1xufVxuLy8gVGhlIG5lZ2F0aXZlIGxvb2tiZWhpbmQgYXZvaWRzIGEgcG9seW5vbWlhbCBzZWFyY2gsXG4vLyBidXQgaXNuJ3Qgc3VwcG9ydGVkIHlldCBvbiBTYWZhcmk6IGh0dHBzOi8vY2FuaXVzZS5jb20vanMtcmVnZXhwLWxvb2tiZWhpbmRcbmxldCBibG9ja0VuZE5ld2xpbmVzO1xudHJ5IHtcbiAgICBibG9ja0VuZE5ld2xpbmVzID0gbmV3IFJlZ0V4cCgnKF58KD88IVxcbikpXFxuKyg/IVxcbnwkKScsICdnJyk7XG59XG5jYXRjaCB7XG4gICAgYmxvY2tFbmROZXdsaW5lcyA9IC9cXG4rKD8hXFxufCQpL2c7XG59XG5mdW5jdGlvbiBibG9ja1N0cmluZyh7IGNvbW1lbnQsIHR5cGUsIHZhbHVlIH0sIGN0eCwgb25Db21tZW50LCBvbkNob21wS2VlcCkge1xuICAgIGNvbnN0IHsgYmxvY2tRdW90ZSwgY29tbWVudFN0cmluZywgbGluZVdpZHRoIH0gPSBjdHgub3B0aW9ucztcbiAgICAvLyAxLiBCbG9jayBjYW4ndCBlbmQgaW4gd2hpdGVzcGFjZSB1bmxlc3MgdGhlIGxhc3QgbGluZSBpcyBub24tZW1wdHkuXG4gICAgLy8gMi4gU3RyaW5ncyBjb25zaXN0aW5nIG9mIG9ubHkgd2hpdGVzcGFjZSBhcmUgYmVzdCByZW5kZXJlZCBleHBsaWNpdGx5LlxuICAgIGlmICghYmxvY2tRdW90ZSB8fCAvXFxuW1xcdCBdKyQvLnRlc3QodmFsdWUpIHx8IC9eXFxzKiQvLnRlc3QodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBxdW90ZWRTdHJpbmcodmFsdWUsIGN0eCk7XG4gICAgfVxuICAgIGNvbnN0IGluZGVudCA9IGN0eC5pbmRlbnQgfHxcbiAgICAgICAgKGN0eC5mb3JjZUJsb2NrSW5kZW50IHx8IGNvbnRhaW5zRG9jdW1lbnRNYXJrZXIodmFsdWUpID8gJyAgJyA6ICcnKTtcbiAgICBjb25zdCBsaXRlcmFsID0gYmxvY2tRdW90ZSA9PT0gJ2xpdGVyYWwnXG4gICAgICAgID8gdHJ1ZVxuICAgICAgICA6IGJsb2NrUXVvdGUgPT09ICdmb2xkZWQnIHx8IHR5cGUgPT09IFNjYWxhci5CTE9DS19GT0xERURcbiAgICAgICAgICAgID8gZmFsc2VcbiAgICAgICAgICAgIDogdHlwZSA9PT0gU2NhbGFyLkJMT0NLX0xJVEVSQUxcbiAgICAgICAgICAgICAgICA/IHRydWVcbiAgICAgICAgICAgICAgICA6ICFsaW5lTGVuZ3RoT3ZlckxpbWl0KHZhbHVlLCBsaW5lV2lkdGgsIGluZGVudC5sZW5ndGgpO1xuICAgIGlmICghdmFsdWUpXG4gICAgICAgIHJldHVybiBsaXRlcmFsID8gJ3xcXG4nIDogJz5cXG4nO1xuICAgIC8vIGRldGVybWluZSBjaG9tcGluZyBmcm9tIHdoaXRlc3BhY2UgYXQgdmFsdWUgZW5kXG4gICAgbGV0IGNob21wO1xuICAgIGxldCBlbmRTdGFydDtcbiAgICBmb3IgKGVuZFN0YXJ0ID0gdmFsdWUubGVuZ3RoOyBlbmRTdGFydCA+IDA7IC0tZW5kU3RhcnQpIHtcbiAgICAgICAgY29uc3QgY2ggPSB2YWx1ZVtlbmRTdGFydCAtIDFdO1xuICAgICAgICBpZiAoY2ggIT09ICdcXG4nICYmIGNoICE9PSAnXFx0JyAmJiBjaCAhPT0gJyAnKVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGxldCBlbmQgPSB2YWx1ZS5zdWJzdHJpbmcoZW5kU3RhcnQpO1xuICAgIGNvbnN0IGVuZE5sUG9zID0gZW5kLmluZGV4T2YoJ1xcbicpO1xuICAgIGlmIChlbmRObFBvcyA9PT0gLTEpIHtcbiAgICAgICAgY2hvbXAgPSAnLSc7IC8vIHN0cmlwXG4gICAgfVxuICAgIGVsc2UgaWYgKHZhbHVlID09PSBlbmQgfHwgZW5kTmxQb3MgIT09IGVuZC5sZW5ndGggLSAxKSB7XG4gICAgICAgIGNob21wID0gJysnOyAvLyBrZWVwXG4gICAgICAgIGlmIChvbkNob21wS2VlcClcbiAgICAgICAgICAgIG9uQ2hvbXBLZWVwKCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBjaG9tcCA9ICcnOyAvLyBjbGlwXG4gICAgfVxuICAgIGlmIChlbmQpIHtcbiAgICAgICAgdmFsdWUgPSB2YWx1ZS5zbGljZSgwLCAtZW5kLmxlbmd0aCk7XG4gICAgICAgIGlmIChlbmRbZW5kLmxlbmd0aCAtIDFdID09PSAnXFxuJylcbiAgICAgICAgICAgIGVuZCA9IGVuZC5zbGljZSgwLCAtMSk7XG4gICAgICAgIGVuZCA9IGVuZC5yZXBsYWNlKGJsb2NrRW5kTmV3bGluZXMsIGAkJiR7aW5kZW50fWApO1xuICAgIH1cbiAgICAvLyBkZXRlcm1pbmUgaW5kZW50IGluZGljYXRvciBmcm9tIHdoaXRlc3BhY2UgYXQgdmFsdWUgc3RhcnRcbiAgICBsZXQgc3RhcnRXaXRoU3BhY2UgPSBmYWxzZTtcbiAgICBsZXQgc3RhcnRFbmQ7XG4gICAgbGV0IHN0YXJ0TmxQb3MgPSAtMTtcbiAgICBmb3IgKHN0YXJ0RW5kID0gMDsgc3RhcnRFbmQgPCB2YWx1ZS5sZW5ndGg7ICsrc3RhcnRFbmQpIHtcbiAgICAgICAgY29uc3QgY2ggPSB2YWx1ZVtzdGFydEVuZF07XG4gICAgICAgIGlmIChjaCA9PT0gJyAnKVxuICAgICAgICAgICAgc3RhcnRXaXRoU3BhY2UgPSB0cnVlO1xuICAgICAgICBlbHNlIGlmIChjaCA9PT0gJ1xcbicpXG4gICAgICAgICAgICBzdGFydE5sUG9zID0gc3RhcnRFbmQ7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBsZXQgc3RhcnQgPSB2YWx1ZS5zdWJzdHJpbmcoMCwgc3RhcnRObFBvcyA8IHN0YXJ0RW5kID8gc3RhcnRObFBvcyArIDEgOiBzdGFydEVuZCk7XG4gICAgaWYgKHN0YXJ0KSB7XG4gICAgICAgIHZhbHVlID0gdmFsdWUuc3Vic3RyaW5nKHN0YXJ0Lmxlbmd0aCk7XG4gICAgICAgIHN0YXJ0ID0gc3RhcnQucmVwbGFjZSgvXFxuKy9nLCBgJCYke2luZGVudH1gKTtcbiAgICB9XG4gICAgY29uc3QgaW5kZW50U2l6ZSA9IGluZGVudCA/ICcyJyA6ICcxJzsgLy8gcm9vdCBpcyBhdCAtMVxuICAgIGxldCBoZWFkZXIgPSAobGl0ZXJhbCA/ICd8JyA6ICc+JykgKyAoc3RhcnRXaXRoU3BhY2UgPyBpbmRlbnRTaXplIDogJycpICsgY2hvbXA7XG4gICAgaWYgKGNvbW1lbnQpIHtcbiAgICAgICAgaGVhZGVyICs9ICcgJyArIGNvbW1lbnRTdHJpbmcoY29tbWVudC5yZXBsYWNlKC8gP1tcXHJcXG5dKy9nLCAnICcpKTtcbiAgICAgICAgaWYgKG9uQ29tbWVudClcbiAgICAgICAgICAgIG9uQ29tbWVudCgpO1xuICAgIH1cbiAgICBpZiAobGl0ZXJhbCkge1xuICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL1xcbisvZywgYCQmJHtpbmRlbnR9YCk7XG4gICAgICAgIHJldHVybiBgJHtoZWFkZXJ9XFxuJHtpbmRlbnR9JHtzdGFydH0ke3ZhbHVlfSR7ZW5kfWA7XG4gICAgfVxuICAgIHZhbHVlID0gdmFsdWVcbiAgICAgICAgLnJlcGxhY2UoL1xcbisvZywgJ1xcbiQmJylcbiAgICAgICAgLnJlcGxhY2UoLyg/Ol58XFxuKShbXFx0IF0uKikoPzooW1xcblxcdCBdKilcXG4oPyFbXFxuXFx0IF0pKT8vZywgJyQxJDInKSAvLyBtb3JlLWluZGVudGVkIGxpbmVzIGFyZW4ndCBmb2xkZWRcbiAgICAgICAgLy8gICAgICAgICAgICAgICAgXiBtb3JlLWluZC4gXiBlbXB0eSAgICAgXiBjYXB0dXJlIG5leHQgZW1wdHkgbGluZXMgb25seSBhdCBlbmQgb2YgaW5kZW50XG4gICAgICAgIC5yZXBsYWNlKC9cXG4rL2csIGAkJiR7aW5kZW50fWApO1xuICAgIGNvbnN0IGJvZHkgPSBmb2xkRmxvd0xpbmVzKGAke3N0YXJ0fSR7dmFsdWV9JHtlbmR9YCwgaW5kZW50LCBGT0xEX0JMT0NLLCBnZXRGb2xkT3B0aW9ucyhjdHgsIHRydWUpKTtcbiAgICByZXR1cm4gYCR7aGVhZGVyfVxcbiR7aW5kZW50fSR7Ym9keX1gO1xufVxuZnVuY3Rpb24gcGxhaW5TdHJpbmcoaXRlbSwgY3R4LCBvbkNvbW1lbnQsIG9uQ2hvbXBLZWVwKSB7XG4gICAgY29uc3QgeyB0eXBlLCB2YWx1ZSB9ID0gaXRlbTtcbiAgICBjb25zdCB7IGFjdHVhbFN0cmluZywgaW1wbGljaXRLZXksIGluZGVudCwgaW5kZW50U3RlcCwgaW5GbG93IH0gPSBjdHg7XG4gICAgaWYgKChpbXBsaWNpdEtleSAmJiB2YWx1ZS5pbmNsdWRlcygnXFxuJykpIHx8XG4gICAgICAgIChpbkZsb3cgJiYgL1tbXFxde30sXS8udGVzdCh2YWx1ZSkpKSB7XG4gICAgICAgIHJldHVybiBxdW90ZWRTdHJpbmcodmFsdWUsIGN0eCk7XG4gICAgfVxuICAgIGlmICghdmFsdWUgfHxcbiAgICAgICAgL15bXFxuXFx0ICxbXFxde30jJiohfD4nXCIlQGBdfF5bPy1dJHxeWz8tXVsgXFx0XXxbXFxuOl1bIFxcdF18WyBcXHRdXFxufFtcXG5cXHQgXSN8W1xcblxcdCA6XSQvLnRlc3QodmFsdWUpKSB7XG4gICAgICAgIC8vIG5vdCBhbGxvd2VkOlxuICAgICAgICAvLyAtIGVtcHR5IHN0cmluZywgJy0nIG9yICc/J1xuICAgICAgICAvLyAtIHN0YXJ0IHdpdGggYW4gaW5kaWNhdG9yIGNoYXJhY3RlciAoZXhjZXB0IFs/Oi1dKSBvciAvWz8tXSAvXG4gICAgICAgIC8vIC0gJ1xcbiAnLCAnOiAnIG9yICcgXFxuJyBhbnl3aGVyZVxuICAgICAgICAvLyAtICcjJyBub3QgcHJlY2VkZWQgYnkgYSBub24tc3BhY2UgY2hhclxuICAgICAgICAvLyAtIGVuZCB3aXRoICcgJyBvciAnOidcbiAgICAgICAgcmV0dXJuIGltcGxpY2l0S2V5IHx8IGluRmxvdyB8fCAhdmFsdWUuaW5jbHVkZXMoJ1xcbicpXG4gICAgICAgICAgICA/IHF1b3RlZFN0cmluZyh2YWx1ZSwgY3R4KVxuICAgICAgICAgICAgOiBibG9ja1N0cmluZyhpdGVtLCBjdHgsIG9uQ29tbWVudCwgb25DaG9tcEtlZXApO1xuICAgIH1cbiAgICBpZiAoIWltcGxpY2l0S2V5ICYmXG4gICAgICAgICFpbkZsb3cgJiZcbiAgICAgICAgdHlwZSAhPT0gU2NhbGFyLlBMQUlOICYmXG4gICAgICAgIHZhbHVlLmluY2x1ZGVzKCdcXG4nKSkge1xuICAgICAgICAvLyBXaGVyZSBhbGxvd2VkICYgdHlwZSBub3Qgc2V0IGV4cGxpY2l0bHksIHByZWZlciBibG9jayBzdHlsZSBmb3IgbXVsdGlsaW5lIHN0cmluZ3NcbiAgICAgICAgcmV0dXJuIGJsb2NrU3RyaW5nKGl0ZW0sIGN0eCwgb25Db21tZW50LCBvbkNob21wS2VlcCk7XG4gICAgfVxuICAgIGlmIChjb250YWluc0RvY3VtZW50TWFya2VyKHZhbHVlKSkge1xuICAgICAgICBpZiAoaW5kZW50ID09PSAnJykge1xuICAgICAgICAgICAgY3R4LmZvcmNlQmxvY2tJbmRlbnQgPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuIGJsb2NrU3RyaW5nKGl0ZW0sIGN0eCwgb25Db21tZW50LCBvbkNob21wS2VlcCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaW1wbGljaXRLZXkgJiYgaW5kZW50ID09PSBpbmRlbnRTdGVwKSB7XG4gICAgICAgICAgICByZXR1cm4gcXVvdGVkU3RyaW5nKHZhbHVlLCBjdHgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNvbnN0IHN0ciA9IHZhbHVlLnJlcGxhY2UoL1xcbisvZywgYCQmXFxuJHtpbmRlbnR9YCk7XG4gICAgLy8gVmVyaWZ5IHRoYXQgb3V0cHV0IHdpbGwgYmUgcGFyc2VkIGFzIGEgc3RyaW5nLCBhcyBlLmcuIHBsYWluIG51bWJlcnMgYW5kXG4gICAgLy8gYm9vbGVhbnMgZ2V0IHBhcnNlZCB3aXRoIHRob3NlIHR5cGVzIGluIHYxLjIgKGUuZy4gJzQyJywgJ3RydWUnICYgJzAuOWUtMycpLFxuICAgIC8vIGFuZCBvdGhlcnMgaW4gdjEuMS5cbiAgICBpZiAoYWN0dWFsU3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IHRlc3QgPSAodGFnKSA9PiB0YWcuZGVmYXVsdCAmJiB0YWcudGFnICE9PSAndGFnOnlhbWwub3JnLDIwMDI6c3RyJyAmJiB0YWcudGVzdD8udGVzdChzdHIpO1xuICAgICAgICBjb25zdCB7IGNvbXBhdCwgdGFncyB9ID0gY3R4LmRvYy5zY2hlbWE7XG4gICAgICAgIGlmICh0YWdzLnNvbWUodGVzdCkgfHwgY29tcGF0Py5zb21lKHRlc3QpKVxuICAgICAgICAgICAgcmV0dXJuIHF1b3RlZFN0cmluZyh2YWx1ZSwgY3R4KTtcbiAgICB9XG4gICAgcmV0dXJuIGltcGxpY2l0S2V5XG4gICAgICAgID8gc3RyXG4gICAgICAgIDogZm9sZEZsb3dMaW5lcyhzdHIsIGluZGVudCwgRk9MRF9GTE9XLCBnZXRGb2xkT3B0aW9ucyhjdHgsIGZhbHNlKSk7XG59XG5mdW5jdGlvbiBzdHJpbmdpZnlTdHJpbmcoaXRlbSwgY3R4LCBvbkNvbW1lbnQsIG9uQ2hvbXBLZWVwKSB7XG4gICAgY29uc3QgeyBpbXBsaWNpdEtleSwgaW5GbG93IH0gPSBjdHg7XG4gICAgY29uc3Qgc3MgPSB0eXBlb2YgaXRlbS52YWx1ZSA9PT0gJ3N0cmluZydcbiAgICAgICAgPyBpdGVtXG4gICAgICAgIDogT2JqZWN0LmFzc2lnbih7fSwgaXRlbSwgeyB2YWx1ZTogU3RyaW5nKGl0ZW0udmFsdWUpIH0pO1xuICAgIGxldCB7IHR5cGUgfSA9IGl0ZW07XG4gICAgaWYgKHR5cGUgIT09IFNjYWxhci5RVU9URV9ET1VCTEUpIHtcbiAgICAgICAgLy8gZm9yY2UgZG91YmxlIHF1b3RlcyBvbiBjb250cm9sIGNoYXJhY3RlcnMgJiB1bnBhaXJlZCBzdXJyb2dhdGVzXG4gICAgICAgIGlmICgvW1xceDAwLVxceDA4XFx4MGItXFx4MWZcXHg3Zi1cXHg5ZlxcdXtEODAwfS1cXHV7REZGRn1dL3UudGVzdChzcy52YWx1ZSkpXG4gICAgICAgICAgICB0eXBlID0gU2NhbGFyLlFVT1RFX0RPVUJMRTtcbiAgICB9XG4gICAgY29uc3QgX3N0cmluZ2lmeSA9IChfdHlwZSkgPT4ge1xuICAgICAgICBzd2l0Y2ggKF90eXBlKSB7XG4gICAgICAgICAgICBjYXNlIFNjYWxhci5CTE9DS19GT0xERUQ6XG4gICAgICAgICAgICBjYXNlIFNjYWxhci5CTE9DS19MSVRFUkFMOlxuICAgICAgICAgICAgICAgIHJldHVybiBpbXBsaWNpdEtleSB8fCBpbkZsb3dcbiAgICAgICAgICAgICAgICAgICAgPyBxdW90ZWRTdHJpbmcoc3MudmFsdWUsIGN0eCkgLy8gYmxvY2tzIGFyZSBub3QgdmFsaWQgaW5zaWRlIGZsb3cgY29udGFpbmVyc1xuICAgICAgICAgICAgICAgICAgICA6IGJsb2NrU3RyaW5nKHNzLCBjdHgsIG9uQ29tbWVudCwgb25DaG9tcEtlZXApO1xuICAgICAgICAgICAgY2FzZSBTY2FsYXIuUVVPVEVfRE9VQkxFOlxuICAgICAgICAgICAgICAgIHJldHVybiBkb3VibGVRdW90ZWRTdHJpbmcoc3MudmFsdWUsIGN0eCk7XG4gICAgICAgICAgICBjYXNlIFNjYWxhci5RVU9URV9TSU5HTEU6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNpbmdsZVF1b3RlZFN0cmluZyhzcy52YWx1ZSwgY3R4KTtcbiAgICAgICAgICAgIGNhc2UgU2NhbGFyLlBMQUlOOlxuICAgICAgICAgICAgICAgIHJldHVybiBwbGFpblN0cmluZyhzcywgY3R4LCBvbkNvbW1lbnQsIG9uQ2hvbXBLZWVwKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIGxldCByZXMgPSBfc3RyaW5naWZ5KHR5cGUpO1xuICAgIGlmIChyZXMgPT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgeyBkZWZhdWx0S2V5VHlwZSwgZGVmYXVsdFN0cmluZ1R5cGUgfSA9IGN0eC5vcHRpb25zO1xuICAgICAgICBjb25zdCB0ID0gKGltcGxpY2l0S2V5ICYmIGRlZmF1bHRLZXlUeXBlKSB8fCBkZWZhdWx0U3RyaW5nVHlwZTtcbiAgICAgICAgcmVzID0gX3N0cmluZ2lmeSh0KTtcbiAgICAgICAgaWYgKHJlcyA9PT0gbnVsbClcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgZGVmYXVsdCBzdHJpbmcgdHlwZSAke3R9YCk7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG59XG5cbmV4cG9ydCB7IHN0cmluZ2lmeVN0cmluZyB9O1xuIiwgImltcG9ydCB7IGFuY2hvcklzVmFsaWQgfSBmcm9tICcuLi9kb2MvYW5jaG9ycy5qcyc7XG5pbXBvcnQgeyBpc1BhaXIsIGlzQWxpYXMsIGlzTm9kZSwgaXNTY2FsYXIsIGlzQ29sbGVjdGlvbiB9IGZyb20gJy4uL25vZGVzL2lkZW50aXR5LmpzJztcbmltcG9ydCB7IHN0cmluZ2lmeUNvbW1lbnQgfSBmcm9tICcuL3N0cmluZ2lmeUNvbW1lbnQuanMnO1xuaW1wb3J0IHsgc3RyaW5naWZ5U3RyaW5nIH0gZnJvbSAnLi9zdHJpbmdpZnlTdHJpbmcuanMnO1xuXG5mdW5jdGlvbiBjcmVhdGVTdHJpbmdpZnlDb250ZXh0KGRvYywgb3B0aW9ucykge1xuICAgIGNvbnN0IG9wdCA9IE9iamVjdC5hc3NpZ24oe1xuICAgICAgICBibG9ja1F1b3RlOiB0cnVlLFxuICAgICAgICBjb21tZW50U3RyaW5nOiBzdHJpbmdpZnlDb21tZW50LFxuICAgICAgICBkZWZhdWx0S2V5VHlwZTogbnVsbCxcbiAgICAgICAgZGVmYXVsdFN0cmluZ1R5cGU6ICdQTEFJTicsXG4gICAgICAgIGRpcmVjdGl2ZXM6IG51bGwsXG4gICAgICAgIGRvdWJsZVF1b3RlZEFzSlNPTjogZmFsc2UsXG4gICAgICAgIGRvdWJsZVF1b3RlZE1pbk11bHRpTGluZUxlbmd0aDogNDAsXG4gICAgICAgIGZhbHNlU3RyOiAnZmFsc2UnLFxuICAgICAgICBmbG93Q29sbGVjdGlvblBhZGRpbmc6IHRydWUsXG4gICAgICAgIGluZGVudFNlcTogdHJ1ZSxcbiAgICAgICAgbGluZVdpZHRoOiA4MCxcbiAgICAgICAgbWluQ29udGVudFdpZHRoOiAyMCxcbiAgICAgICAgbnVsbFN0cjogJ251bGwnLFxuICAgICAgICBzaW1wbGVLZXlzOiBmYWxzZSxcbiAgICAgICAgc2luZ2xlUXVvdGU6IG51bGwsXG4gICAgICAgIHRydWVTdHI6ICd0cnVlJyxcbiAgICAgICAgdmVyaWZ5QWxpYXNPcmRlcjogdHJ1ZVxuICAgIH0sIGRvYy5zY2hlbWEudG9TdHJpbmdPcHRpb25zLCBvcHRpb25zKTtcbiAgICBsZXQgaW5GbG93O1xuICAgIHN3aXRjaCAob3B0LmNvbGxlY3Rpb25TdHlsZSkge1xuICAgICAgICBjYXNlICdibG9jayc6XG4gICAgICAgICAgICBpbkZsb3cgPSBmYWxzZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdmbG93JzpcbiAgICAgICAgICAgIGluRmxvdyA9IHRydWU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIGluRmxvdyA9IG51bGw7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIGFuY2hvcnM6IG5ldyBTZXQoKSxcbiAgICAgICAgZG9jLFxuICAgICAgICBmbG93Q29sbGVjdGlvblBhZGRpbmc6IG9wdC5mbG93Q29sbGVjdGlvblBhZGRpbmcgPyAnICcgOiAnJyxcbiAgICAgICAgaW5kZW50OiAnJyxcbiAgICAgICAgaW5kZW50U3RlcDogdHlwZW9mIG9wdC5pbmRlbnQgPT09ICdudW1iZXInID8gJyAnLnJlcGVhdChvcHQuaW5kZW50KSA6ICcgICcsXG4gICAgICAgIGluRmxvdyxcbiAgICAgICAgb3B0aW9uczogb3B0XG4gICAgfTtcbn1cbmZ1bmN0aW9uIGdldFRhZ09iamVjdCh0YWdzLCBpdGVtKSB7XG4gICAgaWYgKGl0ZW0udGFnKSB7XG4gICAgICAgIGNvbnN0IG1hdGNoID0gdGFncy5maWx0ZXIodCA9PiB0LnRhZyA9PT0gaXRlbS50YWcpO1xuICAgICAgICBpZiAobWF0Y2gubGVuZ3RoID4gMClcbiAgICAgICAgICAgIHJldHVybiBtYXRjaC5maW5kKHQgPT4gdC5mb3JtYXQgPT09IGl0ZW0uZm9ybWF0KSA/PyBtYXRjaFswXTtcbiAgICB9XG4gICAgbGV0IHRhZ09iaiA9IHVuZGVmaW5lZDtcbiAgICBsZXQgb2JqO1xuICAgIGlmIChpc1NjYWxhcihpdGVtKSkge1xuICAgICAgICBvYmogPSBpdGVtLnZhbHVlO1xuICAgICAgICBsZXQgbWF0Y2ggPSB0YWdzLmZpbHRlcih0ID0+IHQuaWRlbnRpZnk/LihvYmopKTtcbiAgICAgICAgaWYgKG1hdGNoLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IHRlc3RNYXRjaCA9IG1hdGNoLmZpbHRlcih0ID0+IHQudGVzdCk7XG4gICAgICAgICAgICBpZiAodGVzdE1hdGNoLmxlbmd0aCA+IDApXG4gICAgICAgICAgICAgICAgbWF0Y2ggPSB0ZXN0TWF0Y2g7XG4gICAgICAgIH1cbiAgICAgICAgdGFnT2JqID1cbiAgICAgICAgICAgIG1hdGNoLmZpbmQodCA9PiB0LmZvcm1hdCA9PT0gaXRlbS5mb3JtYXQpID8/IG1hdGNoLmZpbmQodCA9PiAhdC5mb3JtYXQpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgb2JqID0gaXRlbTtcbiAgICAgICAgdGFnT2JqID0gdGFncy5maW5kKHQgPT4gdC5ub2RlQ2xhc3MgJiYgb2JqIGluc3RhbmNlb2YgdC5ub2RlQ2xhc3MpO1xuICAgIH1cbiAgICBpZiAoIXRhZ09iaikge1xuICAgICAgICBjb25zdCBuYW1lID0gb2JqPy5jb25zdHJ1Y3Rvcj8ubmFtZSA/PyB0eXBlb2Ygb2JqO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFRhZyBub3QgcmVzb2x2ZWQgZm9yICR7bmFtZX0gdmFsdWVgKTtcbiAgICB9XG4gICAgcmV0dXJuIHRhZ09iajtcbn1cbi8vIG5lZWRzIHRvIGJlIGNhbGxlZCBiZWZvcmUgdmFsdWUgc3RyaW5naWZpZXIgdG8gYWxsb3cgZm9yIGNpcmN1bGFyIGFuY2hvciByZWZzXG5mdW5jdGlvbiBzdHJpbmdpZnlQcm9wcyhub2RlLCB0YWdPYmosIHsgYW5jaG9ycywgZG9jIH0pIHtcbiAgICBpZiAoIWRvYy5kaXJlY3RpdmVzKVxuICAgICAgICByZXR1cm4gJyc7XG4gICAgY29uc3QgcHJvcHMgPSBbXTtcbiAgICBjb25zdCBhbmNob3IgPSAoaXNTY2FsYXIobm9kZSkgfHwgaXNDb2xsZWN0aW9uKG5vZGUpKSAmJiBub2RlLmFuY2hvcjtcbiAgICBpZiAoYW5jaG9yICYmIGFuY2hvcklzVmFsaWQoYW5jaG9yKSkge1xuICAgICAgICBhbmNob3JzLmFkZChhbmNob3IpO1xuICAgICAgICBwcm9wcy5wdXNoKGAmJHthbmNob3J9YCk7XG4gICAgfVxuICAgIGNvbnN0IHRhZyA9IG5vZGUudGFnID8gbm9kZS50YWcgOiB0YWdPYmouZGVmYXVsdCA/IG51bGwgOiB0YWdPYmoudGFnO1xuICAgIGlmICh0YWcpXG4gICAgICAgIHByb3BzLnB1c2goZG9jLmRpcmVjdGl2ZXMudGFnU3RyaW5nKHRhZykpO1xuICAgIHJldHVybiBwcm9wcy5qb2luKCcgJyk7XG59XG5mdW5jdGlvbiBzdHJpbmdpZnkoaXRlbSwgY3R4LCBvbkNvbW1lbnQsIG9uQ2hvbXBLZWVwKSB7XG4gICAgaWYgKGlzUGFpcihpdGVtKSlcbiAgICAgICAgcmV0dXJuIGl0ZW0udG9TdHJpbmcoY3R4LCBvbkNvbW1lbnQsIG9uQ2hvbXBLZWVwKTtcbiAgICBpZiAoaXNBbGlhcyhpdGVtKSkge1xuICAgICAgICBpZiAoY3R4LmRvYy5kaXJlY3RpdmVzKVxuICAgICAgICAgICAgcmV0dXJuIGl0ZW0udG9TdHJpbmcoY3R4KTtcbiAgICAgICAgaWYgKGN0eC5yZXNvbHZlZEFsaWFzZXM/LmhhcyhpdGVtKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgQ2Fubm90IHN0cmluZ2lmeSBjaXJjdWxhciBzdHJ1Y3R1cmUgd2l0aG91dCBhbGlhcyBub2Rlc2ApO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKGN0eC5yZXNvbHZlZEFsaWFzZXMpXG4gICAgICAgICAgICAgICAgY3R4LnJlc29sdmVkQWxpYXNlcy5hZGQoaXRlbSk7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgY3R4LnJlc29sdmVkQWxpYXNlcyA9IG5ldyBTZXQoW2l0ZW1dKTtcbiAgICAgICAgICAgIGl0ZW0gPSBpdGVtLnJlc29sdmUoY3R4LmRvYyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgbGV0IHRhZ09iaiA9IHVuZGVmaW5lZDtcbiAgICBjb25zdCBub2RlID0gaXNOb2RlKGl0ZW0pXG4gICAgICAgID8gaXRlbVxuICAgICAgICA6IGN0eC5kb2MuY3JlYXRlTm9kZShpdGVtLCB7IG9uVGFnT2JqOiBvID0+ICh0YWdPYmogPSBvKSB9KTtcbiAgICBpZiAoIXRhZ09iailcbiAgICAgICAgdGFnT2JqID0gZ2V0VGFnT2JqZWN0KGN0eC5kb2Muc2NoZW1hLnRhZ3MsIG5vZGUpO1xuICAgIGNvbnN0IHByb3BzID0gc3RyaW5naWZ5UHJvcHMobm9kZSwgdGFnT2JqLCBjdHgpO1xuICAgIGlmIChwcm9wcy5sZW5ndGggPiAwKVxuICAgICAgICBjdHguaW5kZW50QXRTdGFydCA9IChjdHguaW5kZW50QXRTdGFydCA/PyAwKSArIHByb3BzLmxlbmd0aCArIDE7XG4gICAgY29uc3Qgc3RyID0gdHlwZW9mIHRhZ09iai5zdHJpbmdpZnkgPT09ICdmdW5jdGlvbidcbiAgICAgICAgPyB0YWdPYmouc3RyaW5naWZ5KG5vZGUsIGN0eCwgb25Db21tZW50LCBvbkNob21wS2VlcClcbiAgICAgICAgOiBpc1NjYWxhcihub2RlKVxuICAgICAgICAgICAgPyBzdHJpbmdpZnlTdHJpbmcobm9kZSwgY3R4LCBvbkNvbW1lbnQsIG9uQ2hvbXBLZWVwKVxuICAgICAgICAgICAgOiBub2RlLnRvU3RyaW5nKGN0eCwgb25Db21tZW50LCBvbkNob21wS2VlcCk7XG4gICAgaWYgKCFwcm9wcylcbiAgICAgICAgcmV0dXJuIHN0cjtcbiAgICByZXR1cm4gaXNTY2FsYXIobm9kZSkgfHwgc3RyWzBdID09PSAneycgfHwgc3RyWzBdID09PSAnWydcbiAgICAgICAgPyBgJHtwcm9wc30gJHtzdHJ9YFxuICAgICAgICA6IGAke3Byb3BzfVxcbiR7Y3R4LmluZGVudH0ke3N0cn1gO1xufVxuXG5leHBvcnQgeyBjcmVhdGVTdHJpbmdpZnlDb250ZXh0LCBzdHJpbmdpZnkgfTtcbiIsICJpbXBvcnQgeyBpc0NvbGxlY3Rpb24sIGlzTm9kZSwgaXNTY2FsYXIsIGlzU2VxIH0gZnJvbSAnLi4vbm9kZXMvaWRlbnRpdHkuanMnO1xuaW1wb3J0IHsgU2NhbGFyIH0gZnJvbSAnLi4vbm9kZXMvU2NhbGFyLmpzJztcbmltcG9ydCB7IHN0cmluZ2lmeSB9IGZyb20gJy4vc3RyaW5naWZ5LmpzJztcbmltcG9ydCB7IGxpbmVDb21tZW50LCBpbmRlbnRDb21tZW50IH0gZnJvbSAnLi9zdHJpbmdpZnlDb21tZW50LmpzJztcblxuZnVuY3Rpb24gc3RyaW5naWZ5UGFpcih7IGtleSwgdmFsdWUgfSwgY3R4LCBvbkNvbW1lbnQsIG9uQ2hvbXBLZWVwKSB7XG4gICAgY29uc3QgeyBhbGxOdWxsVmFsdWVzLCBkb2MsIGluZGVudCwgaW5kZW50U3RlcCwgb3B0aW9uczogeyBjb21tZW50U3RyaW5nLCBpbmRlbnRTZXEsIHNpbXBsZUtleXMgfSB9ID0gY3R4O1xuICAgIGxldCBrZXlDb21tZW50ID0gKGlzTm9kZShrZXkpICYmIGtleS5jb21tZW50KSB8fCBudWxsO1xuICAgIGlmIChzaW1wbGVLZXlzKSB7XG4gICAgICAgIGlmIChrZXlDb21tZW50KSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1dpdGggc2ltcGxlIGtleXMsIGtleSBub2RlcyBjYW5ub3QgaGF2ZSBjb21tZW50cycpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0NvbGxlY3Rpb24oa2V5KSB8fCAoIWlzTm9kZShrZXkpICYmIHR5cGVvZiBrZXkgPT09ICdvYmplY3QnKSkge1xuICAgICAgICAgICAgY29uc3QgbXNnID0gJ1dpdGggc2ltcGxlIGtleXMsIGNvbGxlY3Rpb24gY2Fubm90IGJlIHVzZWQgYXMgYSBrZXkgdmFsdWUnO1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1zZyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgbGV0IGV4cGxpY2l0S2V5ID0gIXNpbXBsZUtleXMgJiZcbiAgICAgICAgKCFrZXkgfHxcbiAgICAgICAgICAgIChrZXlDb21tZW50ICYmIHZhbHVlID09IG51bGwgJiYgIWN0eC5pbkZsb3cpIHx8XG4gICAgICAgICAgICBpc0NvbGxlY3Rpb24oa2V5KSB8fFxuICAgICAgICAgICAgKGlzU2NhbGFyKGtleSlcbiAgICAgICAgICAgICAgICA/IGtleS50eXBlID09PSBTY2FsYXIuQkxPQ0tfRk9MREVEIHx8IGtleS50eXBlID09PSBTY2FsYXIuQkxPQ0tfTElURVJBTFxuICAgICAgICAgICAgICAgIDogdHlwZW9mIGtleSA9PT0gJ29iamVjdCcpKTtcbiAgICBjdHggPSBPYmplY3QuYXNzaWduKHt9LCBjdHgsIHtcbiAgICAgICAgYWxsTnVsbFZhbHVlczogZmFsc2UsXG4gICAgICAgIGltcGxpY2l0S2V5OiAhZXhwbGljaXRLZXkgJiYgKHNpbXBsZUtleXMgfHwgIWFsbE51bGxWYWx1ZXMpLFxuICAgICAgICBpbmRlbnQ6IGluZGVudCArIGluZGVudFN0ZXBcbiAgICB9KTtcbiAgICBsZXQga2V5Q29tbWVudERvbmUgPSBmYWxzZTtcbiAgICBsZXQgY2hvbXBLZWVwID0gZmFsc2U7XG4gICAgbGV0IHN0ciA9IHN0cmluZ2lmeShrZXksIGN0eCwgKCkgPT4gKGtleUNvbW1lbnREb25lID0gdHJ1ZSksICgpID0+IChjaG9tcEtlZXAgPSB0cnVlKSk7XG4gICAgaWYgKCFleHBsaWNpdEtleSAmJiAhY3R4LmluRmxvdyAmJiBzdHIubGVuZ3RoID4gMTAyNCkge1xuICAgICAgICBpZiAoc2ltcGxlS2V5cylcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignV2l0aCBzaW1wbGUga2V5cywgc2luZ2xlIGxpbmUgc2NhbGFyIG11c3Qgbm90IHNwYW4gbW9yZSB0aGFuIDEwMjQgY2hhcmFjdGVycycpO1xuICAgICAgICBleHBsaWNpdEtleSA9IHRydWU7XG4gICAgfVxuICAgIGlmIChjdHguaW5GbG93KSB7XG4gICAgICAgIGlmIChhbGxOdWxsVmFsdWVzIHx8IHZhbHVlID09IG51bGwpIHtcbiAgICAgICAgICAgIGlmIChrZXlDb21tZW50RG9uZSAmJiBvbkNvbW1lbnQpXG4gICAgICAgICAgICAgICAgb25Db21tZW50KCk7XG4gICAgICAgICAgICByZXR1cm4gc3RyID09PSAnJyA/ICc/JyA6IGV4cGxpY2l0S2V5ID8gYD8gJHtzdHJ9YCA6IHN0cjtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIGlmICgoYWxsTnVsbFZhbHVlcyAmJiAhc2ltcGxlS2V5cykgfHwgKHZhbHVlID09IG51bGwgJiYgZXhwbGljaXRLZXkpKSB7XG4gICAgICAgIHN0ciA9IGA/ICR7c3RyfWA7XG4gICAgICAgIGlmIChrZXlDb21tZW50ICYmICFrZXlDb21tZW50RG9uZSkge1xuICAgICAgICAgICAgc3RyICs9IGxpbmVDb21tZW50KHN0ciwgY3R4LmluZGVudCwgY29tbWVudFN0cmluZyhrZXlDb21tZW50KSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoY2hvbXBLZWVwICYmIG9uQ2hvbXBLZWVwKVxuICAgICAgICAgICAgb25DaG9tcEtlZXAoKTtcbiAgICAgICAgcmV0dXJuIHN0cjtcbiAgICB9XG4gICAgaWYgKGtleUNvbW1lbnREb25lKVxuICAgICAgICBrZXlDb21tZW50ID0gbnVsbDtcbiAgICBpZiAoZXhwbGljaXRLZXkpIHtcbiAgICAgICAgaWYgKGtleUNvbW1lbnQpXG4gICAgICAgICAgICBzdHIgKz0gbGluZUNvbW1lbnQoc3RyLCBjdHguaW5kZW50LCBjb21tZW50U3RyaW5nKGtleUNvbW1lbnQpKTtcbiAgICAgICAgc3RyID0gYD8gJHtzdHJ9XFxuJHtpbmRlbnR9OmA7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBzdHIgPSBgJHtzdHJ9OmA7XG4gICAgICAgIGlmIChrZXlDb21tZW50KVxuICAgICAgICAgICAgc3RyICs9IGxpbmVDb21tZW50KHN0ciwgY3R4LmluZGVudCwgY29tbWVudFN0cmluZyhrZXlDb21tZW50KSk7XG4gICAgfVxuICAgIGxldCB2c2IsIHZjYiwgdmFsdWVDb21tZW50O1xuICAgIGlmIChpc05vZGUodmFsdWUpKSB7XG4gICAgICAgIHZzYiA9ICEhdmFsdWUuc3BhY2VCZWZvcmU7XG4gICAgICAgIHZjYiA9IHZhbHVlLmNvbW1lbnRCZWZvcmU7XG4gICAgICAgIHZhbHVlQ29tbWVudCA9IHZhbHVlLmNvbW1lbnQ7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB2c2IgPSBmYWxzZTtcbiAgICAgICAgdmNiID0gbnVsbDtcbiAgICAgICAgdmFsdWVDb21tZW50ID0gbnVsbDtcbiAgICAgICAgaWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpXG4gICAgICAgICAgICB2YWx1ZSA9IGRvYy5jcmVhdGVOb2RlKHZhbHVlKTtcbiAgICB9XG4gICAgY3R4LmltcGxpY2l0S2V5ID0gZmFsc2U7XG4gICAgaWYgKCFleHBsaWNpdEtleSAmJiAha2V5Q29tbWVudCAmJiBpc1NjYWxhcih2YWx1ZSkpXG4gICAgICAgIGN0eC5pbmRlbnRBdFN0YXJ0ID0gc3RyLmxlbmd0aCArIDE7XG4gICAgY2hvbXBLZWVwID0gZmFsc2U7XG4gICAgaWYgKCFpbmRlbnRTZXEgJiZcbiAgICAgICAgaW5kZW50U3RlcC5sZW5ndGggPj0gMiAmJlxuICAgICAgICAhY3R4LmluRmxvdyAmJlxuICAgICAgICAhZXhwbGljaXRLZXkgJiZcbiAgICAgICAgaXNTZXEodmFsdWUpICYmXG4gICAgICAgICF2YWx1ZS5mbG93ICYmXG4gICAgICAgICF2YWx1ZS50YWcgJiZcbiAgICAgICAgIXZhbHVlLmFuY2hvcikge1xuICAgICAgICAvLyBJZiBpbmRlbnRTZXEgPT09IGZhbHNlLCBjb25zaWRlciAnLSAnIGFzIHBhcnQgb2YgaW5kZW50YXRpb24gd2hlcmUgcG9zc2libGVcbiAgICAgICAgY3R4LmluZGVudCA9IGN0eC5pbmRlbnQuc3Vic3RyaW5nKDIpO1xuICAgIH1cbiAgICBsZXQgdmFsdWVDb21tZW50RG9uZSA9IGZhbHNlO1xuICAgIGNvbnN0IHZhbHVlU3RyID0gc3RyaW5naWZ5KHZhbHVlLCBjdHgsICgpID0+ICh2YWx1ZUNvbW1lbnREb25lID0gdHJ1ZSksICgpID0+IChjaG9tcEtlZXAgPSB0cnVlKSk7XG4gICAgbGV0IHdzID0gJyAnO1xuICAgIGlmIChrZXlDb21tZW50IHx8IHZzYiB8fCB2Y2IpIHtcbiAgICAgICAgd3MgPSB2c2IgPyAnXFxuJyA6ICcnO1xuICAgICAgICBpZiAodmNiKSB7XG4gICAgICAgICAgICBjb25zdCBjcyA9IGNvbW1lbnRTdHJpbmcodmNiKTtcbiAgICAgICAgICAgIHdzICs9IGBcXG4ke2luZGVudENvbW1lbnQoY3MsIGN0eC5pbmRlbnQpfWA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbHVlU3RyID09PSAnJyAmJiAhY3R4LmluRmxvdykge1xuICAgICAgICAgICAgaWYgKHdzID09PSAnXFxuJylcbiAgICAgICAgICAgICAgICB3cyA9ICdcXG5cXG4nO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgd3MgKz0gYFxcbiR7Y3R4LmluZGVudH1gO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2UgaWYgKCFleHBsaWNpdEtleSAmJiBpc0NvbGxlY3Rpb24odmFsdWUpKSB7XG4gICAgICAgIGNvbnN0IHZzMCA9IHZhbHVlU3RyWzBdO1xuICAgICAgICBjb25zdCBubDAgPSB2YWx1ZVN0ci5pbmRleE9mKCdcXG4nKTtcbiAgICAgICAgY29uc3QgaGFzTmV3bGluZSA9IG5sMCAhPT0gLTE7XG4gICAgICAgIGNvbnN0IGZsb3cgPSBjdHguaW5GbG93ID8/IHZhbHVlLmZsb3cgPz8gdmFsdWUuaXRlbXMubGVuZ3RoID09PSAwO1xuICAgICAgICBpZiAoaGFzTmV3bGluZSB8fCAhZmxvdykge1xuICAgICAgICAgICAgbGV0IGhhc1Byb3BzTGluZSA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKGhhc05ld2xpbmUgJiYgKHZzMCA9PT0gJyYnIHx8IHZzMCA9PT0gJyEnKSkge1xuICAgICAgICAgICAgICAgIGxldCBzcDAgPSB2YWx1ZVN0ci5pbmRleE9mKCcgJyk7XG4gICAgICAgICAgICAgICAgaWYgKHZzMCA9PT0gJyYnICYmXG4gICAgICAgICAgICAgICAgICAgIHNwMCAhPT0gLTEgJiZcbiAgICAgICAgICAgICAgICAgICAgc3AwIDwgbmwwICYmXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlU3RyW3NwMCArIDFdID09PSAnIScpIHtcbiAgICAgICAgICAgICAgICAgICAgc3AwID0gdmFsdWVTdHIuaW5kZXhPZignICcsIHNwMCArIDEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoc3AwID09PSAtMSB8fCBubDAgPCBzcDApXG4gICAgICAgICAgICAgICAgICAgIGhhc1Byb3BzTGluZSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWhhc1Byb3BzTGluZSlcbiAgICAgICAgICAgICAgICB3cyA9IGBcXG4ke2N0eC5pbmRlbnR9YDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIGlmICh2YWx1ZVN0ciA9PT0gJycgfHwgdmFsdWVTdHJbMF0gPT09ICdcXG4nKSB7XG4gICAgICAgIHdzID0gJyc7XG4gICAgfVxuICAgIHN0ciArPSB3cyArIHZhbHVlU3RyO1xuICAgIGlmIChjdHguaW5GbG93KSB7XG4gICAgICAgIGlmICh2YWx1ZUNvbW1lbnREb25lICYmIG9uQ29tbWVudClcbiAgICAgICAgICAgIG9uQ29tbWVudCgpO1xuICAgIH1cbiAgICBlbHNlIGlmICh2YWx1ZUNvbW1lbnQgJiYgIXZhbHVlQ29tbWVudERvbmUpIHtcbiAgICAgICAgc3RyICs9IGxpbmVDb21tZW50KHN0ciwgY3R4LmluZGVudCwgY29tbWVudFN0cmluZyh2YWx1ZUNvbW1lbnQpKTtcbiAgICB9XG4gICAgZWxzZSBpZiAoY2hvbXBLZWVwICYmIG9uQ2hvbXBLZWVwKSB7XG4gICAgICAgIG9uQ2hvbXBLZWVwKCk7XG4gICAgfVxuICAgIHJldHVybiBzdHI7XG59XG5cbmV4cG9ydCB7IHN0cmluZ2lmeVBhaXIgfTtcbiIsICJmdW5jdGlvbiBkZWJ1Zyhsb2dMZXZlbCwgLi4ubWVzc2FnZXMpIHtcbiAgICBpZiAobG9nTGV2ZWwgPT09ICdkZWJ1ZycpXG4gICAgICAgIGNvbnNvbGUubG9nKC4uLm1lc3NhZ2VzKTtcbn1cbmZ1bmN0aW9uIHdhcm4obG9nTGV2ZWwsIHdhcm5pbmcpIHtcbiAgICBpZiAobG9nTGV2ZWwgPT09ICdkZWJ1ZycgfHwgbG9nTGV2ZWwgPT09ICd3YXJuJykge1xuICAgICAgICBpZiAodHlwZW9mIHByb2Nlc3MgIT09ICd1bmRlZmluZWQnICYmIHByb2Nlc3MuZW1pdFdhcm5pbmcpXG4gICAgICAgICAgICBwcm9jZXNzLmVtaXRXYXJuaW5nKHdhcm5pbmcpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICBjb25zb2xlLndhcm4od2FybmluZyk7XG4gICAgfVxufVxuXG5leHBvcnQgeyBkZWJ1Zywgd2FybiB9O1xuIiwgImltcG9ydCB7IGlzU2NhbGFyLCBpc0FsaWFzLCBpc1NlcSwgaXNNYXAgfSBmcm9tICcuLi8uLi9ub2Rlcy9pZGVudGl0eS5qcyc7XG5pbXBvcnQgeyBTY2FsYXIgfSBmcm9tICcuLi8uLi9ub2Rlcy9TY2FsYXIuanMnO1xuXG4vLyBJZiB0aGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIGEgbWVyZ2Uga2V5IGlzIGEgc2luZ2xlIG1hcHBpbmcgbm9kZSwgZWFjaCBvZlxuLy8gaXRzIGtleS92YWx1ZSBwYWlycyBpcyBpbnNlcnRlZCBpbnRvIHRoZSBjdXJyZW50IG1hcHBpbmcsIHVubGVzcyB0aGUga2V5XG4vLyBhbHJlYWR5IGV4aXN0cyBpbiBpdC4gSWYgdGhlIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCB0aGUgbWVyZ2Uga2V5IGlzIGFcbi8vIHNlcXVlbmNlLCB0aGVuIHRoaXMgc2VxdWVuY2UgaXMgZXhwZWN0ZWQgdG8gY29udGFpbiBtYXBwaW5nIG5vZGVzIGFuZCBlYWNoXG4vLyBvZiB0aGVzZSBub2RlcyBpcyBtZXJnZWQgaW4gdHVybiBhY2NvcmRpbmcgdG8gaXRzIG9yZGVyIGluIHRoZSBzZXF1ZW5jZS5cbi8vIEtleXMgaW4gbWFwcGluZyBub2RlcyBlYXJsaWVyIGluIHRoZSBzZXF1ZW5jZSBvdmVycmlkZSBrZXlzIHNwZWNpZmllZCBpblxuLy8gbGF0ZXIgbWFwcGluZyBub2Rlcy4gLS0gaHR0cDovL3lhbWwub3JnL3R5cGUvbWVyZ2UuaHRtbFxuY29uc3QgTUVSR0VfS0VZID0gJzw8JztcbmNvbnN0IG1lcmdlID0ge1xuICAgIGlkZW50aWZ5OiB2YWx1ZSA9PiB2YWx1ZSA9PT0gTUVSR0VfS0VZIHx8XG4gICAgICAgICh0eXBlb2YgdmFsdWUgPT09ICdzeW1ib2wnICYmIHZhbHVlLmRlc2NyaXB0aW9uID09PSBNRVJHRV9LRVkpLFxuICAgIGRlZmF1bHQ6ICdrZXknLFxuICAgIHRhZzogJ3RhZzp5YW1sLm9yZywyMDAyOm1lcmdlJyxcbiAgICB0ZXN0OiAvXjw8JC8sXG4gICAgcmVzb2x2ZTogKCkgPT4gT2JqZWN0LmFzc2lnbihuZXcgU2NhbGFyKFN5bWJvbChNRVJHRV9LRVkpKSwge1xuICAgICAgICBhZGRUb0pTTWFwOiBhZGRNZXJnZVRvSlNNYXBcbiAgICB9KSxcbiAgICBzdHJpbmdpZnk6ICgpID0+IE1FUkdFX0tFWVxufTtcbmNvbnN0IGlzTWVyZ2VLZXkgPSAoY3R4LCBrZXkpID0+IChtZXJnZS5pZGVudGlmeShrZXkpIHx8XG4gICAgKGlzU2NhbGFyKGtleSkgJiZcbiAgICAgICAgKCFrZXkudHlwZSB8fCBrZXkudHlwZSA9PT0gU2NhbGFyLlBMQUlOKSAmJlxuICAgICAgICBtZXJnZS5pZGVudGlmeShrZXkudmFsdWUpKSkgJiZcbiAgICBjdHg/LmRvYy5zY2hlbWEudGFncy5zb21lKHRhZyA9PiB0YWcudGFnID09PSBtZXJnZS50YWcgJiYgdGFnLmRlZmF1bHQpO1xuZnVuY3Rpb24gYWRkTWVyZ2VUb0pTTWFwKGN0eCwgbWFwLCB2YWx1ZSkge1xuICAgIHZhbHVlID0gY3R4ICYmIGlzQWxpYXModmFsdWUpID8gdmFsdWUucmVzb2x2ZShjdHguZG9jKSA6IHZhbHVlO1xuICAgIGlmIChpc1NlcSh2YWx1ZSkpXG4gICAgICAgIGZvciAoY29uc3QgaXQgb2YgdmFsdWUuaXRlbXMpXG4gICAgICAgICAgICBtZXJnZVZhbHVlKGN0eCwgbWFwLCBpdCk7XG4gICAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpXG4gICAgICAgIGZvciAoY29uc3QgaXQgb2YgdmFsdWUpXG4gICAgICAgICAgICBtZXJnZVZhbHVlKGN0eCwgbWFwLCBpdCk7XG4gICAgZWxzZVxuICAgICAgICBtZXJnZVZhbHVlKGN0eCwgbWFwLCB2YWx1ZSk7XG59XG5mdW5jdGlvbiBtZXJnZVZhbHVlKGN0eCwgbWFwLCB2YWx1ZSkge1xuICAgIGNvbnN0IHNvdXJjZSA9IGN0eCAmJiBpc0FsaWFzKHZhbHVlKSA/IHZhbHVlLnJlc29sdmUoY3R4LmRvYykgOiB2YWx1ZTtcbiAgICBpZiAoIWlzTWFwKHNvdXJjZSkpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTWVyZ2Ugc291cmNlcyBtdXN0IGJlIG1hcHMgb3IgbWFwIGFsaWFzZXMnKTtcbiAgICBjb25zdCBzcmNNYXAgPSBzb3VyY2UudG9KU09OKG51bGwsIGN0eCwgTWFwKTtcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBzcmNNYXApIHtcbiAgICAgICAgaWYgKG1hcCBpbnN0YW5jZW9mIE1hcCkge1xuICAgICAgICAgICAgaWYgKCFtYXAuaGFzKGtleSkpXG4gICAgICAgICAgICAgICAgbWFwLnNldChrZXksIHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChtYXAgaW5zdGFuY2VvZiBTZXQpIHtcbiAgICAgICAgICAgIG1hcC5hZGQoa2V5KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG1hcCwga2V5KSkge1xuICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG1hcCwga2V5LCB7XG4gICAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtYXA7XG59XG5cbmV4cG9ydCB7IGFkZE1lcmdlVG9KU01hcCwgaXNNZXJnZUtleSwgbWVyZ2UgfTtcbiIsICJpbXBvcnQgeyB3YXJuIH0gZnJvbSAnLi4vbG9nLmpzJztcbmltcG9ydCB7IGlzTWVyZ2VLZXksIGFkZE1lcmdlVG9KU01hcCB9IGZyb20gJy4uL3NjaGVtYS95YW1sLTEuMS9tZXJnZS5qcyc7XG5pbXBvcnQgeyBjcmVhdGVTdHJpbmdpZnlDb250ZXh0IH0gZnJvbSAnLi4vc3RyaW5naWZ5L3N0cmluZ2lmeS5qcyc7XG5pbXBvcnQgeyBpc05vZGUgfSBmcm9tICcuL2lkZW50aXR5LmpzJztcbmltcG9ydCB7IHRvSlMgfSBmcm9tICcuL3RvSlMuanMnO1xuXG5mdW5jdGlvbiBhZGRQYWlyVG9KU01hcChjdHgsIG1hcCwgeyBrZXksIHZhbHVlIH0pIHtcbiAgICBpZiAoaXNOb2RlKGtleSkgJiYga2V5LmFkZFRvSlNNYXApXG4gICAgICAgIGtleS5hZGRUb0pTTWFwKGN0eCwgbWFwLCB2YWx1ZSk7XG4gICAgLy8gVE9ETzogU2hvdWxkIGRyb3AgdGhpcyBzcGVjaWFsIGNhc2UgZm9yIGJhcmUgPDwgaGFuZGxpbmdcbiAgICBlbHNlIGlmIChpc01lcmdlS2V5KGN0eCwga2V5KSlcbiAgICAgICAgYWRkTWVyZ2VUb0pTTWFwKGN0eCwgbWFwLCB2YWx1ZSk7XG4gICAgZWxzZSB7XG4gICAgICAgIGNvbnN0IGpzS2V5ID0gdG9KUyhrZXksICcnLCBjdHgpO1xuICAgICAgICBpZiAobWFwIGluc3RhbmNlb2YgTWFwKSB7XG4gICAgICAgICAgICBtYXAuc2V0KGpzS2V5LCB0b0pTKHZhbHVlLCBqc0tleSwgY3R4KSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAobWFwIGluc3RhbmNlb2YgU2V0KSB7XG4gICAgICAgICAgICBtYXAuYWRkKGpzS2V5KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHN0cmluZ0tleSA9IHN0cmluZ2lmeUtleShrZXksIGpzS2V5LCBjdHgpO1xuICAgICAgICAgICAgY29uc3QganNWYWx1ZSA9IHRvSlModmFsdWUsIHN0cmluZ0tleSwgY3R4KTtcbiAgICAgICAgICAgIGlmIChzdHJpbmdLZXkgaW4gbWFwKVxuICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShtYXAsIHN0cmluZ0tleSwge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZToganNWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIG1hcFtzdHJpbmdLZXldID0ganNWYWx1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbWFwO1xufVxuZnVuY3Rpb24gc3RyaW5naWZ5S2V5KGtleSwganNLZXksIGN0eCkge1xuICAgIGlmIChqc0tleSA9PT0gbnVsbClcbiAgICAgICAgcmV0dXJuICcnO1xuICAgIGlmICh0eXBlb2YganNLZXkgIT09ICdvYmplY3QnKVxuICAgICAgICByZXR1cm4gU3RyaW5nKGpzS2V5KTtcbiAgICBpZiAoaXNOb2RlKGtleSkgJiYgY3R4Py5kb2MpIHtcbiAgICAgICAgY29uc3Qgc3RyQ3R4ID0gY3JlYXRlU3RyaW5naWZ5Q29udGV4dChjdHguZG9jLCB7fSk7XG4gICAgICAgIHN0ckN0eC5hbmNob3JzID0gbmV3IFNldCgpO1xuICAgICAgICBmb3IgKGNvbnN0IG5vZGUgb2YgY3R4LmFuY2hvcnMua2V5cygpKVxuICAgICAgICAgICAgc3RyQ3R4LmFuY2hvcnMuYWRkKG5vZGUuYW5jaG9yKTtcbiAgICAgICAgc3RyQ3R4LmluRmxvdyA9IHRydWU7XG4gICAgICAgIHN0ckN0eC5pblN0cmluZ2lmeUtleSA9IHRydWU7XG4gICAgICAgIGNvbnN0IHN0cktleSA9IGtleS50b1N0cmluZyhzdHJDdHgpO1xuICAgICAgICBpZiAoIWN0eC5tYXBLZXlXYXJuZWQpIHtcbiAgICAgICAgICAgIGxldCBqc29uU3RyID0gSlNPTi5zdHJpbmdpZnkoc3RyS2V5KTtcbiAgICAgICAgICAgIGlmIChqc29uU3RyLmxlbmd0aCA+IDQwKVxuICAgICAgICAgICAgICAgIGpzb25TdHIgPSBqc29uU3RyLnN1YnN0cmluZygwLCAzNikgKyAnLi4uXCInO1xuICAgICAgICAgICAgd2FybihjdHguZG9jLm9wdGlvbnMubG9nTGV2ZWwsIGBLZXlzIHdpdGggY29sbGVjdGlvbiB2YWx1ZXMgd2lsbCBiZSBzdHJpbmdpZmllZCBkdWUgdG8gSlMgT2JqZWN0IHJlc3RyaWN0aW9uczogJHtqc29uU3RyfS4gU2V0IG1hcEFzTWFwOiB0cnVlIHRvIHVzZSBvYmplY3Qga2V5cy5gKTtcbiAgICAgICAgICAgIGN0eC5tYXBLZXlXYXJuZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdHJLZXk7XG4gICAgfVxuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShqc0tleSk7XG59XG5cbmV4cG9ydCB7IGFkZFBhaXJUb0pTTWFwIH07XG4iLCAiaW1wb3J0IHsgY3JlYXRlTm9kZSB9IGZyb20gJy4uL2RvYy9jcmVhdGVOb2RlLmpzJztcbmltcG9ydCB7IHN0cmluZ2lmeVBhaXIgfSBmcm9tICcuLi9zdHJpbmdpZnkvc3RyaW5naWZ5UGFpci5qcyc7XG5pbXBvcnQgeyBhZGRQYWlyVG9KU01hcCB9IGZyb20gJy4vYWRkUGFpclRvSlNNYXAuanMnO1xuaW1wb3J0IHsgTk9ERV9UWVBFLCBQQUlSLCBpc05vZGUgfSBmcm9tICcuL2lkZW50aXR5LmpzJztcblxuZnVuY3Rpb24gY3JlYXRlUGFpcihrZXksIHZhbHVlLCBjdHgpIHtcbiAgICBjb25zdCBrID0gY3JlYXRlTm9kZShrZXksIHVuZGVmaW5lZCwgY3R4KTtcbiAgICBjb25zdCB2ID0gY3JlYXRlTm9kZSh2YWx1ZSwgdW5kZWZpbmVkLCBjdHgpO1xuICAgIHJldHVybiBuZXcgUGFpcihrLCB2KTtcbn1cbmNsYXNzIFBhaXIge1xuICAgIGNvbnN0cnVjdG9yKGtleSwgdmFsdWUgPSBudWxsKSB7XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBOT0RFX1RZUEUsIHsgdmFsdWU6IFBBSVIgfSk7XG4gICAgICAgIHRoaXMua2V5ID0ga2V5O1xuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgfVxuICAgIGNsb25lKHNjaGVtYSkge1xuICAgICAgICBsZXQgeyBrZXksIHZhbHVlIH0gPSB0aGlzO1xuICAgICAgICBpZiAoaXNOb2RlKGtleSkpXG4gICAgICAgICAgICBrZXkgPSBrZXkuY2xvbmUoc2NoZW1hKTtcbiAgICAgICAgaWYgKGlzTm9kZSh2YWx1ZSkpXG4gICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLmNsb25lKHNjaGVtYSk7XG4gICAgICAgIHJldHVybiBuZXcgUGFpcihrZXksIHZhbHVlKTtcbiAgICB9XG4gICAgdG9KU09OKF8sIGN0eCkge1xuICAgICAgICBjb25zdCBwYWlyID0gY3R4Py5tYXBBc01hcCA/IG5ldyBNYXAoKSA6IHt9O1xuICAgICAgICByZXR1cm4gYWRkUGFpclRvSlNNYXAoY3R4LCBwYWlyLCB0aGlzKTtcbiAgICB9XG4gICAgdG9TdHJpbmcoY3R4LCBvbkNvbW1lbnQsIG9uQ2hvbXBLZWVwKSB7XG4gICAgICAgIHJldHVybiBjdHg/LmRvY1xuICAgICAgICAgICAgPyBzdHJpbmdpZnlQYWlyKHRoaXMsIGN0eCwgb25Db21tZW50LCBvbkNob21wS2VlcClcbiAgICAgICAgICAgIDogSlNPTi5zdHJpbmdpZnkodGhpcyk7XG4gICAgfVxufVxuXG5leHBvcnQgeyBQYWlyLCBjcmVhdGVQYWlyIH07XG4iLCAiaW1wb3J0IHsgaXNOb2RlLCBpc1BhaXIgfSBmcm9tICcuLi9ub2Rlcy9pZGVudGl0eS5qcyc7XG5pbXBvcnQgeyBzdHJpbmdpZnkgfSBmcm9tICcuL3N0cmluZ2lmeS5qcyc7XG5pbXBvcnQgeyBsaW5lQ29tbWVudCwgaW5kZW50Q29tbWVudCB9IGZyb20gJy4vc3RyaW5naWZ5Q29tbWVudC5qcyc7XG5cbmZ1bmN0aW9uIHN0cmluZ2lmeUNvbGxlY3Rpb24oY29sbGVjdGlvbiwgY3R4LCBvcHRpb25zKSB7XG4gICAgY29uc3QgZmxvdyA9IGN0eC5pbkZsb3cgPz8gY29sbGVjdGlvbi5mbG93O1xuICAgIGNvbnN0IHN0cmluZ2lmeSA9IGZsb3cgPyBzdHJpbmdpZnlGbG93Q29sbGVjdGlvbiA6IHN0cmluZ2lmeUJsb2NrQ29sbGVjdGlvbjtcbiAgICByZXR1cm4gc3RyaW5naWZ5KGNvbGxlY3Rpb24sIGN0eCwgb3B0aW9ucyk7XG59XG5mdW5jdGlvbiBzdHJpbmdpZnlCbG9ja0NvbGxlY3Rpb24oeyBjb21tZW50LCBpdGVtcyB9LCBjdHgsIHsgYmxvY2tJdGVtUHJlZml4LCBmbG93Q2hhcnMsIGl0ZW1JbmRlbnQsIG9uQ2hvbXBLZWVwLCBvbkNvbW1lbnQgfSkge1xuICAgIGNvbnN0IHsgaW5kZW50LCBvcHRpb25zOiB7IGNvbW1lbnRTdHJpbmcgfSB9ID0gY3R4O1xuICAgIGNvbnN0IGl0ZW1DdHggPSBPYmplY3QuYXNzaWduKHt9LCBjdHgsIHsgaW5kZW50OiBpdGVtSW5kZW50LCB0eXBlOiBudWxsIH0pO1xuICAgIGxldCBjaG9tcEtlZXAgPSBmYWxzZTsgLy8gZmxhZyBmb3IgdGhlIHByZWNlZGluZyBub2RlJ3Mgc3RhdHVzXG4gICAgY29uc3QgbGluZXMgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgKytpKSB7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSBpdGVtc1tpXTtcbiAgICAgICAgbGV0IGNvbW1lbnQgPSBudWxsO1xuICAgICAgICBpZiAoaXNOb2RlKGl0ZW0pKSB7XG4gICAgICAgICAgICBpZiAoIWNob21wS2VlcCAmJiBpdGVtLnNwYWNlQmVmb3JlKVxuICAgICAgICAgICAgICAgIGxpbmVzLnB1c2goJycpO1xuICAgICAgICAgICAgYWRkQ29tbWVudEJlZm9yZShjdHgsIGxpbmVzLCBpdGVtLmNvbW1lbnRCZWZvcmUsIGNob21wS2VlcCk7XG4gICAgICAgICAgICBpZiAoaXRlbS5jb21tZW50KVxuICAgICAgICAgICAgICAgIGNvbW1lbnQgPSBpdGVtLmNvbW1lbnQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaXNQYWlyKGl0ZW0pKSB7XG4gICAgICAgICAgICBjb25zdCBpayA9IGlzTm9kZShpdGVtLmtleSkgPyBpdGVtLmtleSA6IG51bGw7XG4gICAgICAgICAgICBpZiAoaWspIHtcbiAgICAgICAgICAgICAgICBpZiAoIWNob21wS2VlcCAmJiBpay5zcGFjZUJlZm9yZSlcbiAgICAgICAgICAgICAgICAgICAgbGluZXMucHVzaCgnJyk7XG4gICAgICAgICAgICAgICAgYWRkQ29tbWVudEJlZm9yZShjdHgsIGxpbmVzLCBpay5jb21tZW50QmVmb3JlLCBjaG9tcEtlZXApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNob21wS2VlcCA9IGZhbHNlO1xuICAgICAgICBsZXQgc3RyID0gc3RyaW5naWZ5KGl0ZW0sIGl0ZW1DdHgsICgpID0+IChjb21tZW50ID0gbnVsbCksICgpID0+IChjaG9tcEtlZXAgPSB0cnVlKSk7XG4gICAgICAgIGlmIChjb21tZW50KVxuICAgICAgICAgICAgc3RyICs9IGxpbmVDb21tZW50KHN0ciwgaXRlbUluZGVudCwgY29tbWVudFN0cmluZyhjb21tZW50KSk7XG4gICAgICAgIGlmIChjaG9tcEtlZXAgJiYgY29tbWVudClcbiAgICAgICAgICAgIGNob21wS2VlcCA9IGZhbHNlO1xuICAgICAgICBsaW5lcy5wdXNoKGJsb2NrSXRlbVByZWZpeCArIHN0cik7XG4gICAgfVxuICAgIGxldCBzdHI7XG4gICAgaWYgKGxpbmVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBzdHIgPSBmbG93Q2hhcnMuc3RhcnQgKyBmbG93Q2hhcnMuZW5kO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgc3RyID0gbGluZXNbMF07XG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgbGluZXMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgIGNvbnN0IGxpbmUgPSBsaW5lc1tpXTtcbiAgICAgICAgICAgIHN0ciArPSBsaW5lID8gYFxcbiR7aW5kZW50fSR7bGluZX1gIDogJ1xcbic7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGNvbW1lbnQpIHtcbiAgICAgICAgc3RyICs9ICdcXG4nICsgaW5kZW50Q29tbWVudChjb21tZW50U3RyaW5nKGNvbW1lbnQpLCBpbmRlbnQpO1xuICAgICAgICBpZiAob25Db21tZW50KVxuICAgICAgICAgICAgb25Db21tZW50KCk7XG4gICAgfVxuICAgIGVsc2UgaWYgKGNob21wS2VlcCAmJiBvbkNob21wS2VlcClcbiAgICAgICAgb25DaG9tcEtlZXAoKTtcbiAgICByZXR1cm4gc3RyO1xufVxuZnVuY3Rpb24gc3RyaW5naWZ5Rmxvd0NvbGxlY3Rpb24oeyBpdGVtcyB9LCBjdHgsIHsgZmxvd0NoYXJzLCBpdGVtSW5kZW50IH0pIHtcbiAgICBjb25zdCB7IGluZGVudCwgaW5kZW50U3RlcCwgZmxvd0NvbGxlY3Rpb25QYWRkaW5nOiBmY1BhZGRpbmcsIG9wdGlvbnM6IHsgY29tbWVudFN0cmluZyB9IH0gPSBjdHg7XG4gICAgaXRlbUluZGVudCArPSBpbmRlbnRTdGVwO1xuICAgIGNvbnN0IGl0ZW1DdHggPSBPYmplY3QuYXNzaWduKHt9LCBjdHgsIHtcbiAgICAgICAgaW5kZW50OiBpdGVtSW5kZW50LFxuICAgICAgICBpbkZsb3c6IHRydWUsXG4gICAgICAgIHR5cGU6IG51bGxcbiAgICB9KTtcbiAgICBsZXQgcmVxTmV3bGluZSA9IGZhbHNlO1xuICAgIGxldCBsaW5lc0F0VmFsdWUgPSAwO1xuICAgIGNvbnN0IGxpbmVzID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7ICsraSkge1xuICAgICAgICBjb25zdCBpdGVtID0gaXRlbXNbaV07XG4gICAgICAgIGxldCBjb21tZW50ID0gbnVsbDtcbiAgICAgICAgaWYgKGlzTm9kZShpdGVtKSkge1xuICAgICAgICAgICAgaWYgKGl0ZW0uc3BhY2VCZWZvcmUpXG4gICAgICAgICAgICAgICAgbGluZXMucHVzaCgnJyk7XG4gICAgICAgICAgICBhZGRDb21tZW50QmVmb3JlKGN0eCwgbGluZXMsIGl0ZW0uY29tbWVudEJlZm9yZSwgZmFsc2UpO1xuICAgICAgICAgICAgaWYgKGl0ZW0uY29tbWVudClcbiAgICAgICAgICAgICAgICBjb21tZW50ID0gaXRlbS5jb21tZW50O1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGlzUGFpcihpdGVtKSkge1xuICAgICAgICAgICAgY29uc3QgaWsgPSBpc05vZGUoaXRlbS5rZXkpID8gaXRlbS5rZXkgOiBudWxsO1xuICAgICAgICAgICAgaWYgKGlrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlrLnNwYWNlQmVmb3JlKVxuICAgICAgICAgICAgICAgICAgICBsaW5lcy5wdXNoKCcnKTtcbiAgICAgICAgICAgICAgICBhZGRDb21tZW50QmVmb3JlKGN0eCwgbGluZXMsIGlrLmNvbW1lbnRCZWZvcmUsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICBpZiAoaWsuY29tbWVudClcbiAgICAgICAgICAgICAgICAgICAgcmVxTmV3bGluZSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBpdiA9IGlzTm9kZShpdGVtLnZhbHVlKSA/IGl0ZW0udmFsdWUgOiBudWxsO1xuICAgICAgICAgICAgaWYgKGl2KSB7XG4gICAgICAgICAgICAgICAgaWYgKGl2LmNvbW1lbnQpXG4gICAgICAgICAgICAgICAgICAgIGNvbW1lbnQgPSBpdi5jb21tZW50O1xuICAgICAgICAgICAgICAgIGlmIChpdi5jb21tZW50QmVmb3JlKVxuICAgICAgICAgICAgICAgICAgICByZXFOZXdsaW5lID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGl0ZW0udmFsdWUgPT0gbnVsbCAmJiBpaz8uY29tbWVudCkge1xuICAgICAgICAgICAgICAgIGNvbW1lbnQgPSBpay5jb21tZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChjb21tZW50KVxuICAgICAgICAgICAgcmVxTmV3bGluZSA9IHRydWU7XG4gICAgICAgIGxldCBzdHIgPSBzdHJpbmdpZnkoaXRlbSwgaXRlbUN0eCwgKCkgPT4gKGNvbW1lbnQgPSBudWxsKSk7XG4gICAgICAgIGlmIChpIDwgaXRlbXMubGVuZ3RoIC0gMSlcbiAgICAgICAgICAgIHN0ciArPSAnLCc7XG4gICAgICAgIGlmIChjb21tZW50KVxuICAgICAgICAgICAgc3RyICs9IGxpbmVDb21tZW50KHN0ciwgaXRlbUluZGVudCwgY29tbWVudFN0cmluZyhjb21tZW50KSk7XG4gICAgICAgIGlmICghcmVxTmV3bGluZSAmJiAobGluZXMubGVuZ3RoID4gbGluZXNBdFZhbHVlIHx8IHN0ci5pbmNsdWRlcygnXFxuJykpKVxuICAgICAgICAgICAgcmVxTmV3bGluZSA9IHRydWU7XG4gICAgICAgIGxpbmVzLnB1c2goc3RyKTtcbiAgICAgICAgbGluZXNBdFZhbHVlID0gbGluZXMubGVuZ3RoO1xuICAgIH1cbiAgICBjb25zdCB7IHN0YXJ0LCBlbmQgfSA9IGZsb3dDaGFycztcbiAgICBpZiAobGluZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBzdGFydCArIGVuZDtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGlmICghcmVxTmV3bGluZSkge1xuICAgICAgICAgICAgY29uc3QgbGVuID0gbGluZXMucmVkdWNlKChzdW0sIGxpbmUpID0+IHN1bSArIGxpbmUubGVuZ3RoICsgMiwgMik7XG4gICAgICAgICAgICByZXFOZXdsaW5lID0gY3R4Lm9wdGlvbnMubGluZVdpZHRoID4gMCAmJiBsZW4gPiBjdHgub3B0aW9ucy5saW5lV2lkdGg7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlcU5ld2xpbmUpIHtcbiAgICAgICAgICAgIGxldCBzdHIgPSBzdGFydDtcbiAgICAgICAgICAgIGZvciAoY29uc3QgbGluZSBvZiBsaW5lcylcbiAgICAgICAgICAgICAgICBzdHIgKz0gbGluZSA/IGBcXG4ke2luZGVudFN0ZXB9JHtpbmRlbnR9JHtsaW5lfWAgOiAnXFxuJztcbiAgICAgICAgICAgIHJldHVybiBgJHtzdHJ9XFxuJHtpbmRlbnR9JHtlbmR9YDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBgJHtzdGFydH0ke2ZjUGFkZGluZ30ke2xpbmVzLmpvaW4oJyAnKX0ke2ZjUGFkZGluZ30ke2VuZH1gO1xuICAgICAgICB9XG4gICAgfVxufVxuZnVuY3Rpb24gYWRkQ29tbWVudEJlZm9yZSh7IGluZGVudCwgb3B0aW9uczogeyBjb21tZW50U3RyaW5nIH0gfSwgbGluZXMsIGNvbW1lbnQsIGNob21wS2VlcCkge1xuICAgIGlmIChjb21tZW50ICYmIGNob21wS2VlcClcbiAgICAgICAgY29tbWVudCA9IGNvbW1lbnQucmVwbGFjZSgvXlxcbisvLCAnJyk7XG4gICAgaWYgKGNvbW1lbnQpIHtcbiAgICAgICAgY29uc3QgaWMgPSBpbmRlbnRDb21tZW50KGNvbW1lbnRTdHJpbmcoY29tbWVudCksIGluZGVudCk7XG4gICAgICAgIGxpbmVzLnB1c2goaWMudHJpbVN0YXJ0KCkpOyAvLyBBdm9pZCBkb3VibGUgaW5kZW50IG9uIGZpcnN0IGxpbmVcbiAgICB9XG59XG5cbmV4cG9ydCB7IHN0cmluZ2lmeUNvbGxlY3Rpb24gfTtcbiIsICJpbXBvcnQgeyBzdHJpbmdpZnlDb2xsZWN0aW9uIH0gZnJvbSAnLi4vc3RyaW5naWZ5L3N0cmluZ2lmeUNvbGxlY3Rpb24uanMnO1xuaW1wb3J0IHsgYWRkUGFpclRvSlNNYXAgfSBmcm9tICcuL2FkZFBhaXJUb0pTTWFwLmpzJztcbmltcG9ydCB7IENvbGxlY3Rpb24gfSBmcm9tICcuL0NvbGxlY3Rpb24uanMnO1xuaW1wb3J0IHsgaXNQYWlyLCBpc1NjYWxhciwgTUFQIH0gZnJvbSAnLi9pZGVudGl0eS5qcyc7XG5pbXBvcnQgeyBQYWlyLCBjcmVhdGVQYWlyIH0gZnJvbSAnLi9QYWlyLmpzJztcbmltcG9ydCB7IGlzU2NhbGFyVmFsdWUgfSBmcm9tICcuL1NjYWxhci5qcyc7XG5cbmZ1bmN0aW9uIGZpbmRQYWlyKGl0ZW1zLCBrZXkpIHtcbiAgICBjb25zdCBrID0gaXNTY2FsYXIoa2V5KSA/IGtleS52YWx1ZSA6IGtleTtcbiAgICBmb3IgKGNvbnN0IGl0IG9mIGl0ZW1zKSB7XG4gICAgICAgIGlmIChpc1BhaXIoaXQpKSB7XG4gICAgICAgICAgICBpZiAoaXQua2V5ID09PSBrZXkgfHwgaXQua2V5ID09PSBrKVxuICAgICAgICAgICAgICAgIHJldHVybiBpdDtcbiAgICAgICAgICAgIGlmIChpc1NjYWxhcihpdC5rZXkpICYmIGl0LmtleS52YWx1ZSA9PT0gaylcbiAgICAgICAgICAgICAgICByZXR1cm4gaXQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cbmNsYXNzIFlBTUxNYXAgZXh0ZW5kcyBDb2xsZWN0aW9uIHtcbiAgICBzdGF0aWMgZ2V0IHRhZ05hbWUoKSB7XG4gICAgICAgIHJldHVybiAndGFnOnlhbWwub3JnLDIwMDI6bWFwJztcbiAgICB9XG4gICAgY29uc3RydWN0b3Ioc2NoZW1hKSB7XG4gICAgICAgIHN1cGVyKE1BUCwgc2NoZW1hKTtcbiAgICAgICAgdGhpcy5pdGVtcyA9IFtdO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBIGdlbmVyaWMgY29sbGVjdGlvbiBwYXJzaW5nIG1ldGhvZCB0aGF0IGNhbiBiZSBleHRlbmRlZFxuICAgICAqIHRvIG90aGVyIG5vZGUgY2xhc3NlcyB0aGF0IGluaGVyaXQgZnJvbSBZQU1MTWFwXG4gICAgICovXG4gICAgc3RhdGljIGZyb20oc2NoZW1hLCBvYmosIGN0eCkge1xuICAgICAgICBjb25zdCB7IGtlZXBVbmRlZmluZWQsIHJlcGxhY2VyIH0gPSBjdHg7XG4gICAgICAgIGNvbnN0IG1hcCA9IG5ldyB0aGlzKHNjaGVtYSk7XG4gICAgICAgIGNvbnN0IGFkZCA9IChrZXksIHZhbHVlKSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHJlcGxhY2VyID09PSAnZnVuY3Rpb24nKVxuICAgICAgICAgICAgICAgIHZhbHVlID0gcmVwbGFjZXIuY2FsbChvYmosIGtleSwgdmFsdWUpO1xuICAgICAgICAgICAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheShyZXBsYWNlcikgJiYgIXJlcGxhY2VyLmluY2x1ZGVzKGtleSkpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQgfHwga2VlcFVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICBtYXAuaXRlbXMucHVzaChjcmVhdGVQYWlyKGtleSwgdmFsdWUsIGN0eCkpO1xuICAgICAgICB9O1xuICAgICAgICBpZiAob2JqIGluc3RhbmNlb2YgTWFwKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBvYmopXG4gICAgICAgICAgICAgICAgYWRkKGtleSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG9iaiAmJiB0eXBlb2Ygb2JqID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMob2JqKSlcbiAgICAgICAgICAgICAgICBhZGQoa2V5LCBvYmpba2V5XSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBzY2hlbWEuc29ydE1hcEVudHJpZXMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIG1hcC5pdGVtcy5zb3J0KHNjaGVtYS5zb3J0TWFwRW50cmllcyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1hcDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQWRkcyBhIHZhbHVlIHRvIHRoZSBjb2xsZWN0aW9uLlxuICAgICAqXG4gICAgICogQHBhcmFtIG92ZXJ3cml0ZSAtIElmIG5vdCBzZXQgYHRydWVgLCB1c2luZyBhIGtleSB0aGF0IGlzIGFscmVhZHkgaW4gdGhlXG4gICAgICogICBjb2xsZWN0aW9uIHdpbGwgdGhyb3cuIE90aGVyd2lzZSwgb3ZlcndyaXRlcyB0aGUgcHJldmlvdXMgdmFsdWUuXG4gICAgICovXG4gICAgYWRkKHBhaXIsIG92ZXJ3cml0ZSkge1xuICAgICAgICBsZXQgX3BhaXI7XG4gICAgICAgIGlmIChpc1BhaXIocGFpcikpXG4gICAgICAgICAgICBfcGFpciA9IHBhaXI7XG4gICAgICAgIGVsc2UgaWYgKCFwYWlyIHx8IHR5cGVvZiBwYWlyICE9PSAnb2JqZWN0JyB8fCAhKCdrZXknIGluIHBhaXIpKSB7XG4gICAgICAgICAgICAvLyBJbiBUeXBlU2NyaXB0LCB0aGlzIG5ldmVyIGhhcHBlbnMuXG4gICAgICAgICAgICBfcGFpciA9IG5ldyBQYWlyKHBhaXIsIHBhaXI/LnZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgICAgICBfcGFpciA9IG5ldyBQYWlyKHBhaXIua2V5LCBwYWlyLnZhbHVlKTtcbiAgICAgICAgY29uc3QgcHJldiA9IGZpbmRQYWlyKHRoaXMuaXRlbXMsIF9wYWlyLmtleSk7XG4gICAgICAgIGNvbnN0IHNvcnRFbnRyaWVzID0gdGhpcy5zY2hlbWE/LnNvcnRNYXBFbnRyaWVzO1xuICAgICAgICBpZiAocHJldikge1xuICAgICAgICAgICAgaWYgKCFvdmVyd3JpdGUpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBLZXkgJHtfcGFpci5rZXl9IGFscmVhZHkgc2V0YCk7XG4gICAgICAgICAgICAvLyBGb3Igc2NhbGFycywga2VlcCB0aGUgb2xkIG5vZGUgJiBpdHMgY29tbWVudHMgYW5kIGFuY2hvcnNcbiAgICAgICAgICAgIGlmIChpc1NjYWxhcihwcmV2LnZhbHVlKSAmJiBpc1NjYWxhclZhbHVlKF9wYWlyLnZhbHVlKSlcbiAgICAgICAgICAgICAgICBwcmV2LnZhbHVlLnZhbHVlID0gX3BhaXIudmFsdWU7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgcHJldi52YWx1ZSA9IF9wYWlyLnZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHNvcnRFbnRyaWVzKSB7XG4gICAgICAgICAgICBjb25zdCBpID0gdGhpcy5pdGVtcy5maW5kSW5kZXgoaXRlbSA9PiBzb3J0RW50cmllcyhfcGFpciwgaXRlbSkgPCAwKTtcbiAgICAgICAgICAgIGlmIChpID09PSAtMSlcbiAgICAgICAgICAgICAgICB0aGlzLml0ZW1zLnB1c2goX3BhaXIpO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHRoaXMuaXRlbXMuc3BsaWNlKGksIDAsIF9wYWlyKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaXRlbXMucHVzaChfcGFpcik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZGVsZXRlKGtleSkge1xuICAgICAgICBjb25zdCBpdCA9IGZpbmRQYWlyKHRoaXMuaXRlbXMsIGtleSk7XG4gICAgICAgIGlmICghaXQpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIGNvbnN0IGRlbCA9IHRoaXMuaXRlbXMuc3BsaWNlKHRoaXMuaXRlbXMuaW5kZXhPZihpdCksIDEpO1xuICAgICAgICByZXR1cm4gZGVsLmxlbmd0aCA+IDA7XG4gICAgfVxuICAgIGdldChrZXksIGtlZXBTY2FsYXIpIHtcbiAgICAgICAgY29uc3QgaXQgPSBmaW5kUGFpcih0aGlzLml0ZW1zLCBrZXkpO1xuICAgICAgICBjb25zdCBub2RlID0gaXQ/LnZhbHVlO1xuICAgICAgICByZXR1cm4gKCFrZWVwU2NhbGFyICYmIGlzU2NhbGFyKG5vZGUpID8gbm9kZS52YWx1ZSA6IG5vZGUpID8/IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgaGFzKGtleSkge1xuICAgICAgICByZXR1cm4gISFmaW5kUGFpcih0aGlzLml0ZW1zLCBrZXkpO1xuICAgIH1cbiAgICBzZXQoa2V5LCB2YWx1ZSkge1xuICAgICAgICB0aGlzLmFkZChuZXcgUGFpcihrZXksIHZhbHVlKSwgdHJ1ZSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBjdHggLSBDb252ZXJzaW9uIGNvbnRleHQsIG9yaWdpbmFsbHkgc2V0IGluIERvY3VtZW50I3RvSlMoKVxuICAgICAqIEBwYXJhbSB7Q2xhc3N9IFR5cGUgLSBJZiBzZXQsIGZvcmNlcyB0aGUgcmV0dXJuZWQgY29sbGVjdGlvbiB0eXBlXG4gICAgICogQHJldHVybnMgSW5zdGFuY2Ugb2YgVHlwZSwgTWFwLCBvciBPYmplY3RcbiAgICAgKi9cbiAgICB0b0pTT04oXywgY3R4LCBUeXBlKSB7XG4gICAgICAgIGNvbnN0IG1hcCA9IFR5cGUgPyBuZXcgVHlwZSgpIDogY3R4Py5tYXBBc01hcCA/IG5ldyBNYXAoKSA6IHt9O1xuICAgICAgICBpZiAoY3R4Py5vbkNyZWF0ZSlcbiAgICAgICAgICAgIGN0eC5vbkNyZWF0ZShtYXApO1xuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5pdGVtcylcbiAgICAgICAgICAgIGFkZFBhaXJUb0pTTWFwKGN0eCwgbWFwLCBpdGVtKTtcbiAgICAgICAgcmV0dXJuIG1hcDtcbiAgICB9XG4gICAgdG9TdHJpbmcoY3R4LCBvbkNvbW1lbnQsIG9uQ2hvbXBLZWVwKSB7XG4gICAgICAgIGlmICghY3R4KVxuICAgICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMpO1xuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5pdGVtcykge1xuICAgICAgICAgICAgaWYgKCFpc1BhaXIoaXRlbSkpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBNYXAgaXRlbXMgbXVzdCBhbGwgYmUgcGFpcnM7IGZvdW5kICR7SlNPTi5zdHJpbmdpZnkoaXRlbSl9IGluc3RlYWRgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWN0eC5hbGxOdWxsVmFsdWVzICYmIHRoaXMuaGFzQWxsTnVsbFZhbHVlcyhmYWxzZSkpXG4gICAgICAgICAgICBjdHggPSBPYmplY3QuYXNzaWduKHt9LCBjdHgsIHsgYWxsTnVsbFZhbHVlczogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIHN0cmluZ2lmeUNvbGxlY3Rpb24odGhpcywgY3R4LCB7XG4gICAgICAgICAgICBibG9ja0l0ZW1QcmVmaXg6ICcnLFxuICAgICAgICAgICAgZmxvd0NoYXJzOiB7IHN0YXJ0OiAneycsIGVuZDogJ30nIH0sXG4gICAgICAgICAgICBpdGVtSW5kZW50OiBjdHguaW5kZW50IHx8ICcnLFxuICAgICAgICAgICAgb25DaG9tcEtlZXAsXG4gICAgICAgICAgICBvbkNvbW1lbnRcbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG5leHBvcnQgeyBZQU1MTWFwLCBmaW5kUGFpciB9O1xuIiwgImltcG9ydCB7IGlzTWFwIH0gZnJvbSAnLi4vLi4vbm9kZXMvaWRlbnRpdHkuanMnO1xuaW1wb3J0IHsgWUFNTE1hcCB9IGZyb20gJy4uLy4uL25vZGVzL1lBTUxNYXAuanMnO1xuXG5jb25zdCBtYXAgPSB7XG4gICAgY29sbGVjdGlvbjogJ21hcCcsXG4gICAgZGVmYXVsdDogdHJ1ZSxcbiAgICBub2RlQ2xhc3M6IFlBTUxNYXAsXG4gICAgdGFnOiAndGFnOnlhbWwub3JnLDIwMDI6bWFwJyxcbiAgICByZXNvbHZlKG1hcCwgb25FcnJvcikge1xuICAgICAgICBpZiAoIWlzTWFwKG1hcCkpXG4gICAgICAgICAgICBvbkVycm9yKCdFeHBlY3RlZCBhIG1hcHBpbmcgZm9yIHRoaXMgdGFnJyk7XG4gICAgICAgIHJldHVybiBtYXA7XG4gICAgfSxcbiAgICBjcmVhdGVOb2RlOiAoc2NoZW1hLCBvYmosIGN0eCkgPT4gWUFNTE1hcC5mcm9tKHNjaGVtYSwgb2JqLCBjdHgpXG59O1xuXG5leHBvcnQgeyBtYXAgfTtcbiIsICJpbXBvcnQgeyBjcmVhdGVOb2RlIH0gZnJvbSAnLi4vZG9jL2NyZWF0ZU5vZGUuanMnO1xuaW1wb3J0IHsgc3RyaW5naWZ5Q29sbGVjdGlvbiB9IGZyb20gJy4uL3N0cmluZ2lmeS9zdHJpbmdpZnlDb2xsZWN0aW9uLmpzJztcbmltcG9ydCB7IENvbGxlY3Rpb24gfSBmcm9tICcuL0NvbGxlY3Rpb24uanMnO1xuaW1wb3J0IHsgU0VRLCBpc1NjYWxhciB9IGZyb20gJy4vaWRlbnRpdHkuanMnO1xuaW1wb3J0IHsgaXNTY2FsYXJWYWx1ZSB9IGZyb20gJy4vU2NhbGFyLmpzJztcbmltcG9ydCB7IHRvSlMgfSBmcm9tICcuL3RvSlMuanMnO1xuXG5jbGFzcyBZQU1MU2VxIGV4dGVuZHMgQ29sbGVjdGlvbiB7XG4gICAgc3RhdGljIGdldCB0YWdOYW1lKCkge1xuICAgICAgICByZXR1cm4gJ3RhZzp5YW1sLm9yZywyMDAyOnNlcSc7XG4gICAgfVxuICAgIGNvbnN0cnVjdG9yKHNjaGVtYSkge1xuICAgICAgICBzdXBlcihTRVEsIHNjaGVtYSk7XG4gICAgICAgIHRoaXMuaXRlbXMgPSBbXTtcbiAgICB9XG4gICAgYWRkKHZhbHVlKSB7XG4gICAgICAgIHRoaXMuaXRlbXMucHVzaCh2YWx1ZSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgYSB2YWx1ZSBmcm9tIHRoZSBjb2xsZWN0aW9uLlxuICAgICAqXG4gICAgICogYGtleWAgbXVzdCBjb250YWluIGEgcmVwcmVzZW50YXRpb24gb2YgYW4gaW50ZWdlciBmb3IgdGhpcyB0byBzdWNjZWVkLlxuICAgICAqIEl0IG1heSBiZSB3cmFwcGVkIGluIGEgYFNjYWxhcmAuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGl0ZW0gd2FzIGZvdW5kIGFuZCByZW1vdmVkLlxuICAgICAqL1xuICAgIGRlbGV0ZShrZXkpIHtcbiAgICAgICAgY29uc3QgaWR4ID0gYXNJdGVtSW5kZXgoa2V5KTtcbiAgICAgICAgaWYgKHR5cGVvZiBpZHggIT09ICdudW1iZXInKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICBjb25zdCBkZWwgPSB0aGlzLml0ZW1zLnNwbGljZShpZHgsIDEpO1xuICAgICAgICByZXR1cm4gZGVsLmxlbmd0aCA+IDA7XG4gICAgfVxuICAgIGdldChrZXksIGtlZXBTY2FsYXIpIHtcbiAgICAgICAgY29uc3QgaWR4ID0gYXNJdGVtSW5kZXgoa2V5KTtcbiAgICAgICAgaWYgKHR5cGVvZiBpZHggIT09ICdudW1iZXInKVxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgY29uc3QgaXQgPSB0aGlzLml0ZW1zW2lkeF07XG4gICAgICAgIHJldHVybiAha2VlcFNjYWxhciAmJiBpc1NjYWxhcihpdCkgPyBpdC52YWx1ZSA6IGl0O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgdGhlIGNvbGxlY3Rpb24gaW5jbHVkZXMgYSB2YWx1ZSB3aXRoIHRoZSBrZXkgYGtleWAuXG4gICAgICpcbiAgICAgKiBga2V5YCBtdXN0IGNvbnRhaW4gYSByZXByZXNlbnRhdGlvbiBvZiBhbiBpbnRlZ2VyIGZvciB0aGlzIHRvIHN1Y2NlZWQuXG4gICAgICogSXQgbWF5IGJlIHdyYXBwZWQgaW4gYSBgU2NhbGFyYC5cbiAgICAgKi9cbiAgICBoYXMoa2V5KSB7XG4gICAgICAgIGNvbnN0IGlkeCA9IGFzSXRlbUluZGV4KGtleSk7XG4gICAgICAgIHJldHVybiB0eXBlb2YgaWR4ID09PSAnbnVtYmVyJyAmJiBpZHggPCB0aGlzLml0ZW1zLmxlbmd0aDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogU2V0cyBhIHZhbHVlIGluIHRoaXMgY29sbGVjdGlvbi4gRm9yIGAhIXNldGAsIGB2YWx1ZWAgbmVlZHMgdG8gYmUgYVxuICAgICAqIGJvb2xlYW4gdG8gYWRkL3JlbW92ZSB0aGUgaXRlbSBmcm9tIHRoZSBzZXQuXG4gICAgICpcbiAgICAgKiBJZiBga2V5YCBkb2VzIG5vdCBjb250YWluIGEgcmVwcmVzZW50YXRpb24gb2YgYW4gaW50ZWdlciwgdGhpcyB3aWxsIHRocm93LlxuICAgICAqIEl0IG1heSBiZSB3cmFwcGVkIGluIGEgYFNjYWxhcmAuXG4gICAgICovXG4gICAgc2V0KGtleSwgdmFsdWUpIHtcbiAgICAgICAgY29uc3QgaWR4ID0gYXNJdGVtSW5kZXgoa2V5KTtcbiAgICAgICAgaWYgKHR5cGVvZiBpZHggIT09ICdudW1iZXInKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBhIHZhbGlkIGluZGV4LCBub3QgJHtrZXl9LmApO1xuICAgICAgICBjb25zdCBwcmV2ID0gdGhpcy5pdGVtc1tpZHhdO1xuICAgICAgICBpZiAoaXNTY2FsYXIocHJldikgJiYgaXNTY2FsYXJWYWx1ZSh2YWx1ZSkpXG4gICAgICAgICAgICBwcmV2LnZhbHVlID0gdmFsdWU7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHRoaXMuaXRlbXNbaWR4XSA9IHZhbHVlO1xuICAgIH1cbiAgICB0b0pTT04oXywgY3R4KSB7XG4gICAgICAgIGNvbnN0IHNlcSA9IFtdO1xuICAgICAgICBpZiAoY3R4Py5vbkNyZWF0ZSlcbiAgICAgICAgICAgIGN0eC5vbkNyZWF0ZShzZXEpO1xuICAgICAgICBsZXQgaSA9IDA7XG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLml0ZW1zKVxuICAgICAgICAgICAgc2VxLnB1c2godG9KUyhpdGVtLCBTdHJpbmcoaSsrKSwgY3R4KSk7XG4gICAgICAgIHJldHVybiBzZXE7XG4gICAgfVxuICAgIHRvU3RyaW5nKGN0eCwgb25Db21tZW50LCBvbkNob21wS2VlcCkge1xuICAgICAgICBpZiAoIWN0eClcbiAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzKTtcbiAgICAgICAgcmV0dXJuIHN0cmluZ2lmeUNvbGxlY3Rpb24odGhpcywgY3R4LCB7XG4gICAgICAgICAgICBibG9ja0l0ZW1QcmVmaXg6ICctICcsXG4gICAgICAgICAgICBmbG93Q2hhcnM6IHsgc3RhcnQ6ICdbJywgZW5kOiAnXScgfSxcbiAgICAgICAgICAgIGl0ZW1JbmRlbnQ6IChjdHguaW5kZW50IHx8ICcnKSArICcgICcsXG4gICAgICAgICAgICBvbkNob21wS2VlcCxcbiAgICAgICAgICAgIG9uQ29tbWVudFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgc3RhdGljIGZyb20oc2NoZW1hLCBvYmosIGN0eCkge1xuICAgICAgICBjb25zdCB7IHJlcGxhY2VyIH0gPSBjdHg7XG4gICAgICAgIGNvbnN0IHNlcSA9IG5ldyB0aGlzKHNjaGVtYSk7XG4gICAgICAgIGlmIChvYmogJiYgU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdChvYmopKSB7XG4gICAgICAgICAgICBsZXQgaSA9IDA7XG4gICAgICAgICAgICBmb3IgKGxldCBpdCBvZiBvYmopIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHJlcGxhY2VyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IG9iaiBpbnN0YW5jZW9mIFNldCA/IGl0IDogU3RyaW5nKGkrKyk7XG4gICAgICAgICAgICAgICAgICAgIGl0ID0gcmVwbGFjZXIuY2FsbChvYmosIGtleSwgaXQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzZXEuaXRlbXMucHVzaChjcmVhdGVOb2RlKGl0LCB1bmRlZmluZWQsIGN0eCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzZXE7XG4gICAgfVxufVxuZnVuY3Rpb24gYXNJdGVtSW5kZXgoa2V5KSB7XG4gICAgbGV0IGlkeCA9IGlzU2NhbGFyKGtleSkgPyBrZXkudmFsdWUgOiBrZXk7XG4gICAgaWYgKGlkeCAmJiB0eXBlb2YgaWR4ID09PSAnc3RyaW5nJylcbiAgICAgICAgaWR4ID0gTnVtYmVyKGlkeCk7XG4gICAgcmV0dXJuIHR5cGVvZiBpZHggPT09ICdudW1iZXInICYmIE51bWJlci5pc0ludGVnZXIoaWR4KSAmJiBpZHggPj0gMFxuICAgICAgICA/IGlkeFxuICAgICAgICA6IG51bGw7XG59XG5cbmV4cG9ydCB7IFlBTUxTZXEgfTtcbiIsICJpbXBvcnQgeyBpc1NlcSB9IGZyb20gJy4uLy4uL25vZGVzL2lkZW50aXR5LmpzJztcbmltcG9ydCB7IFlBTUxTZXEgfSBmcm9tICcuLi8uLi9ub2Rlcy9ZQU1MU2VxLmpzJztcblxuY29uc3Qgc2VxID0ge1xuICAgIGNvbGxlY3Rpb246ICdzZXEnLFxuICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgbm9kZUNsYXNzOiBZQU1MU2VxLFxuICAgIHRhZzogJ3RhZzp5YW1sLm9yZywyMDAyOnNlcScsXG4gICAgcmVzb2x2ZShzZXEsIG9uRXJyb3IpIHtcbiAgICAgICAgaWYgKCFpc1NlcShzZXEpKVxuICAgICAgICAgICAgb25FcnJvcignRXhwZWN0ZWQgYSBzZXF1ZW5jZSBmb3IgdGhpcyB0YWcnKTtcbiAgICAgICAgcmV0dXJuIHNlcTtcbiAgICB9LFxuICAgIGNyZWF0ZU5vZGU6IChzY2hlbWEsIG9iaiwgY3R4KSA9PiBZQU1MU2VxLmZyb20oc2NoZW1hLCBvYmosIGN0eClcbn07XG5cbmV4cG9ydCB7IHNlcSB9O1xuIiwgImltcG9ydCB7IHN0cmluZ2lmeVN0cmluZyB9IGZyb20gJy4uLy4uL3N0cmluZ2lmeS9zdHJpbmdpZnlTdHJpbmcuanMnO1xuXG5jb25zdCBzdHJpbmcgPSB7XG4gICAgaWRlbnRpZnk6IHZhbHVlID0+IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycsXG4gICAgZGVmYXVsdDogdHJ1ZSxcbiAgICB0YWc6ICd0YWc6eWFtbC5vcmcsMjAwMjpzdHInLFxuICAgIHJlc29sdmU6IHN0ciA9PiBzdHIsXG4gICAgc3RyaW5naWZ5KGl0ZW0sIGN0eCwgb25Db21tZW50LCBvbkNob21wS2VlcCkge1xuICAgICAgICBjdHggPSBPYmplY3QuYXNzaWduKHsgYWN0dWFsU3RyaW5nOiB0cnVlIH0sIGN0eCk7XG4gICAgICAgIHJldHVybiBzdHJpbmdpZnlTdHJpbmcoaXRlbSwgY3R4LCBvbkNvbW1lbnQsIG9uQ2hvbXBLZWVwKTtcbiAgICB9XG59O1xuXG5leHBvcnQgeyBzdHJpbmcgfTtcbiIsICJpbXBvcnQgeyBTY2FsYXIgfSBmcm9tICcuLi8uLi9ub2Rlcy9TY2FsYXIuanMnO1xuXG5jb25zdCBudWxsVGFnID0ge1xuICAgIGlkZW50aWZ5OiB2YWx1ZSA9PiB2YWx1ZSA9PSBudWxsLFxuICAgIGNyZWF0ZU5vZGU6ICgpID0+IG5ldyBTY2FsYXIobnVsbCksXG4gICAgZGVmYXVsdDogdHJ1ZSxcbiAgICB0YWc6ICd0YWc6eWFtbC5vcmcsMjAwMjpudWxsJyxcbiAgICB0ZXN0OiAvXig/On58W05uXXVsbHxOVUxMKT8kLyxcbiAgICByZXNvbHZlOiAoKSA9PiBuZXcgU2NhbGFyKG51bGwpLFxuICAgIHN0cmluZ2lmeTogKHsgc291cmNlIH0sIGN0eCkgPT4gdHlwZW9mIHNvdXJjZSA9PT0gJ3N0cmluZycgJiYgbnVsbFRhZy50ZXN0LnRlc3Qoc291cmNlKVxuICAgICAgICA/IHNvdXJjZVxuICAgICAgICA6IGN0eC5vcHRpb25zLm51bGxTdHJcbn07XG5cbmV4cG9ydCB7IG51bGxUYWcgfTtcbiIsICJpbXBvcnQgeyBTY2FsYXIgfSBmcm9tICcuLi8uLi9ub2Rlcy9TY2FsYXIuanMnO1xuXG5jb25zdCBib29sVGFnID0ge1xuICAgIGlkZW50aWZ5OiB2YWx1ZSA9PiB0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJyxcbiAgICBkZWZhdWx0OiB0cnVlLFxuICAgIHRhZzogJ3RhZzp5YW1sLm9yZywyMDAyOmJvb2wnLFxuICAgIHRlc3Q6IC9eKD86W1R0XXJ1ZXxUUlVFfFtGZl1hbHNlfEZBTFNFKSQvLFxuICAgIHJlc29sdmU6IHN0ciA9PiBuZXcgU2NhbGFyKHN0clswXSA9PT0gJ3QnIHx8IHN0clswXSA9PT0gJ1QnKSxcbiAgICBzdHJpbmdpZnkoeyBzb3VyY2UsIHZhbHVlIH0sIGN0eCkge1xuICAgICAgICBpZiAoc291cmNlICYmIGJvb2xUYWcudGVzdC50ZXN0KHNvdXJjZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHN2ID0gc291cmNlWzBdID09PSAndCcgfHwgc291cmNlWzBdID09PSAnVCc7XG4gICAgICAgICAgICBpZiAodmFsdWUgPT09IHN2KVxuICAgICAgICAgICAgICAgIHJldHVybiBzb3VyY2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlID8gY3R4Lm9wdGlvbnMudHJ1ZVN0ciA6IGN0eC5vcHRpb25zLmZhbHNlU3RyO1xuICAgIH1cbn07XG5cbmV4cG9ydCB7IGJvb2xUYWcgfTtcbiIsICJmdW5jdGlvbiBzdHJpbmdpZnlOdW1iZXIoeyBmb3JtYXQsIG1pbkZyYWN0aW9uRGlnaXRzLCB0YWcsIHZhbHVlIH0pIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnYmlnaW50JylcbiAgICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gICAgY29uc3QgbnVtID0gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyA/IHZhbHVlIDogTnVtYmVyKHZhbHVlKTtcbiAgICBpZiAoIWlzRmluaXRlKG51bSkpXG4gICAgICAgIHJldHVybiBpc05hTihudW0pID8gJy5uYW4nIDogbnVtIDwgMCA/ICctLmluZicgOiAnLmluZic7XG4gICAgbGV0IG4gPSBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XG4gICAgaWYgKCFmb3JtYXQgJiZcbiAgICAgICAgbWluRnJhY3Rpb25EaWdpdHMgJiZcbiAgICAgICAgKCF0YWcgfHwgdGFnID09PSAndGFnOnlhbWwub3JnLDIwMDI6ZmxvYXQnKSAmJlxuICAgICAgICAvXlxcZC8udGVzdChuKSkge1xuICAgICAgICBsZXQgaSA9IG4uaW5kZXhPZignLicpO1xuICAgICAgICBpZiAoaSA8IDApIHtcbiAgICAgICAgICAgIGkgPSBuLmxlbmd0aDtcbiAgICAgICAgICAgIG4gKz0gJy4nO1xuICAgICAgICB9XG4gICAgICAgIGxldCBkID0gbWluRnJhY3Rpb25EaWdpdHMgLSAobi5sZW5ndGggLSBpIC0gMSk7XG4gICAgICAgIHdoaWxlIChkLS0gPiAwKVxuICAgICAgICAgICAgbiArPSAnMCc7XG4gICAgfVxuICAgIHJldHVybiBuO1xufVxuXG5leHBvcnQgeyBzdHJpbmdpZnlOdW1iZXIgfTtcbiIsICJpbXBvcnQgeyBTY2FsYXIgfSBmcm9tICcuLi8uLi9ub2Rlcy9TY2FsYXIuanMnO1xuaW1wb3J0IHsgc3RyaW5naWZ5TnVtYmVyIH0gZnJvbSAnLi4vLi4vc3RyaW5naWZ5L3N0cmluZ2lmeU51bWJlci5qcyc7XG5cbmNvbnN0IGZsb2F0TmFOID0ge1xuICAgIGlkZW50aWZ5OiB2YWx1ZSA9PiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInLFxuICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgdGFnOiAndGFnOnlhbWwub3JnLDIwMDI6ZmxvYXQnLFxuICAgIHRlc3Q6IC9eKD86Wy0rXT9cXC4oPzppbmZ8SW5mfElORil8XFwubmFufFxcLk5hTnxcXC5OQU4pJC8sXG4gICAgcmVzb2x2ZTogc3RyID0+IHN0ci5zbGljZSgtMykudG9Mb3dlckNhc2UoKSA9PT0gJ25hbidcbiAgICAgICAgPyBOYU5cbiAgICAgICAgOiBzdHJbMF0gPT09ICctJ1xuICAgICAgICAgICAgPyBOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFlcbiAgICAgICAgICAgIDogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLFxuICAgIHN0cmluZ2lmeTogc3RyaW5naWZ5TnVtYmVyXG59O1xuY29uc3QgZmxvYXRFeHAgPSB7XG4gICAgaWRlbnRpZnk6IHZhbHVlID0+IHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicsXG4gICAgZGVmYXVsdDogdHJ1ZSxcbiAgICB0YWc6ICd0YWc6eWFtbC5vcmcsMjAwMjpmbG9hdCcsXG4gICAgZm9ybWF0OiAnRVhQJyxcbiAgICB0ZXN0OiAvXlstK10/KD86XFwuWzAtOV0rfFswLTldKyg/OlxcLlswLTldKik/KVtlRV1bLStdP1swLTldKyQvLFxuICAgIHJlc29sdmU6IHN0ciA9PiBwYXJzZUZsb2F0KHN0ciksXG4gICAgc3RyaW5naWZ5KG5vZGUpIHtcbiAgICAgICAgY29uc3QgbnVtID0gTnVtYmVyKG5vZGUudmFsdWUpO1xuICAgICAgICByZXR1cm4gaXNGaW5pdGUobnVtKSA/IG51bS50b0V4cG9uZW50aWFsKCkgOiBzdHJpbmdpZnlOdW1iZXIobm9kZSk7XG4gICAgfVxufTtcbmNvbnN0IGZsb2F0ID0ge1xuICAgIGlkZW50aWZ5OiB2YWx1ZSA9PiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInLFxuICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgdGFnOiAndGFnOnlhbWwub3JnLDIwMDI6ZmxvYXQnLFxuICAgIHRlc3Q6IC9eWy0rXT8oPzpcXC5bMC05XSt8WzAtOV0rXFwuWzAtOV0qKSQvLFxuICAgIHJlc29sdmUoc3RyKSB7XG4gICAgICAgIGNvbnN0IG5vZGUgPSBuZXcgU2NhbGFyKHBhcnNlRmxvYXQoc3RyKSk7XG4gICAgICAgIGNvbnN0IGRvdCA9IHN0ci5pbmRleE9mKCcuJyk7XG4gICAgICAgIGlmIChkb3QgIT09IC0xICYmIHN0cltzdHIubGVuZ3RoIC0gMV0gPT09ICcwJylcbiAgICAgICAgICAgIG5vZGUubWluRnJhY3Rpb25EaWdpdHMgPSBzdHIubGVuZ3RoIC0gZG90IC0gMTtcbiAgICAgICAgcmV0dXJuIG5vZGU7XG4gICAgfSxcbiAgICBzdHJpbmdpZnk6IHN0cmluZ2lmeU51bWJlclxufTtcblxuZXhwb3J0IHsgZmxvYXQsIGZsb2F0RXhwLCBmbG9hdE5hTiB9O1xuIiwgImltcG9ydCB7IHN0cmluZ2lmeU51bWJlciB9IGZyb20gJy4uLy4uL3N0cmluZ2lmeS9zdHJpbmdpZnlOdW1iZXIuanMnO1xuXG5jb25zdCBpbnRJZGVudGlmeSA9ICh2YWx1ZSkgPT4gdHlwZW9mIHZhbHVlID09PSAnYmlnaW50JyB8fCBOdW1iZXIuaXNJbnRlZ2VyKHZhbHVlKTtcbmNvbnN0IGludFJlc29sdmUgPSAoc3RyLCBvZmZzZXQsIHJhZGl4LCB7IGludEFzQmlnSW50IH0pID0+IChpbnRBc0JpZ0ludCA/IEJpZ0ludChzdHIpIDogcGFyc2VJbnQoc3RyLnN1YnN0cmluZyhvZmZzZXQpLCByYWRpeCkpO1xuZnVuY3Rpb24gaW50U3RyaW5naWZ5KG5vZGUsIHJhZGl4LCBwcmVmaXgpIHtcbiAgICBjb25zdCB7IHZhbHVlIH0gPSBub2RlO1xuICAgIGlmIChpbnRJZGVudGlmeSh2YWx1ZSkgJiYgdmFsdWUgPj0gMClcbiAgICAgICAgcmV0dXJuIHByZWZpeCArIHZhbHVlLnRvU3RyaW5nKHJhZGl4KTtcbiAgICByZXR1cm4gc3RyaW5naWZ5TnVtYmVyKG5vZGUpO1xufVxuY29uc3QgaW50T2N0ID0ge1xuICAgIGlkZW50aWZ5OiB2YWx1ZSA9PiBpbnRJZGVudGlmeSh2YWx1ZSkgJiYgdmFsdWUgPj0gMCxcbiAgICBkZWZhdWx0OiB0cnVlLFxuICAgIHRhZzogJ3RhZzp5YW1sLm9yZywyMDAyOmludCcsXG4gICAgZm9ybWF0OiAnT0NUJyxcbiAgICB0ZXN0OiAvXjBvWzAtN10rJC8sXG4gICAgcmVzb2x2ZTogKHN0ciwgX29uRXJyb3IsIG9wdCkgPT4gaW50UmVzb2x2ZShzdHIsIDIsIDgsIG9wdCksXG4gICAgc3RyaW5naWZ5OiBub2RlID0+IGludFN0cmluZ2lmeShub2RlLCA4LCAnMG8nKVxufTtcbmNvbnN0IGludCA9IHtcbiAgICBpZGVudGlmeTogaW50SWRlbnRpZnksXG4gICAgZGVmYXVsdDogdHJ1ZSxcbiAgICB0YWc6ICd0YWc6eWFtbC5vcmcsMjAwMjppbnQnLFxuICAgIHRlc3Q6IC9eWy0rXT9bMC05XSskLyxcbiAgICByZXNvbHZlOiAoc3RyLCBfb25FcnJvciwgb3B0KSA9PiBpbnRSZXNvbHZlKHN0ciwgMCwgMTAsIG9wdCksXG4gICAgc3RyaW5naWZ5OiBzdHJpbmdpZnlOdW1iZXJcbn07XG5jb25zdCBpbnRIZXggPSB7XG4gICAgaWRlbnRpZnk6IHZhbHVlID0+IGludElkZW50aWZ5KHZhbHVlKSAmJiB2YWx1ZSA+PSAwLFxuICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgdGFnOiAndGFnOnlhbWwub3JnLDIwMDI6aW50JyxcbiAgICBmb3JtYXQ6ICdIRVgnLFxuICAgIHRlc3Q6IC9eMHhbMC05YS1mQS1GXSskLyxcbiAgICByZXNvbHZlOiAoc3RyLCBfb25FcnJvciwgb3B0KSA9PiBpbnRSZXNvbHZlKHN0ciwgMiwgMTYsIG9wdCksXG4gICAgc3RyaW5naWZ5OiBub2RlID0+IGludFN0cmluZ2lmeShub2RlLCAxNiwgJzB4Jylcbn07XG5cbmV4cG9ydCB7IGludCwgaW50SGV4LCBpbnRPY3QgfTtcbiIsICJpbXBvcnQgeyBtYXAgfSBmcm9tICcuLi9jb21tb24vbWFwLmpzJztcbmltcG9ydCB7IG51bGxUYWcgfSBmcm9tICcuLi9jb21tb24vbnVsbC5qcyc7XG5pbXBvcnQgeyBzZXEgfSBmcm9tICcuLi9jb21tb24vc2VxLmpzJztcbmltcG9ydCB7IHN0cmluZyB9IGZyb20gJy4uL2NvbW1vbi9zdHJpbmcuanMnO1xuaW1wb3J0IHsgYm9vbFRhZyB9IGZyb20gJy4vYm9vbC5qcyc7XG5pbXBvcnQgeyBmbG9hdE5hTiwgZmxvYXRFeHAsIGZsb2F0IH0gZnJvbSAnLi9mbG9hdC5qcyc7XG5pbXBvcnQgeyBpbnRPY3QsIGludCwgaW50SGV4IH0gZnJvbSAnLi9pbnQuanMnO1xuXG5jb25zdCBzY2hlbWEgPSBbXG4gICAgbWFwLFxuICAgIHNlcSxcbiAgICBzdHJpbmcsXG4gICAgbnVsbFRhZyxcbiAgICBib29sVGFnLFxuICAgIGludE9jdCxcbiAgICBpbnQsXG4gICAgaW50SGV4LFxuICAgIGZsb2F0TmFOLFxuICAgIGZsb2F0RXhwLFxuICAgIGZsb2F0XG5dO1xuXG5leHBvcnQgeyBzY2hlbWEgfTtcbiIsICJpbXBvcnQgeyBTY2FsYXIgfSBmcm9tICcuLi8uLi9ub2Rlcy9TY2FsYXIuanMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAnLi4vY29tbW9uL21hcC5qcyc7XG5pbXBvcnQgeyBzZXEgfSBmcm9tICcuLi9jb21tb24vc2VxLmpzJztcblxuZnVuY3Rpb24gaW50SWRlbnRpZnkodmFsdWUpIHtcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnYmlnaW50JyB8fCBOdW1iZXIuaXNJbnRlZ2VyKHZhbHVlKTtcbn1cbmNvbnN0IHN0cmluZ2lmeUpTT04gPSAoeyB2YWx1ZSB9KSA9PiBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XG5jb25zdCBqc29uU2NhbGFycyA9IFtcbiAgICB7XG4gICAgICAgIGlkZW50aWZ5OiB2YWx1ZSA9PiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnLFxuICAgICAgICBkZWZhdWx0OiB0cnVlLFxuICAgICAgICB0YWc6ICd0YWc6eWFtbC5vcmcsMjAwMjpzdHInLFxuICAgICAgICByZXNvbHZlOiBzdHIgPT4gc3RyLFxuICAgICAgICBzdHJpbmdpZnk6IHN0cmluZ2lmeUpTT05cbiAgICB9LFxuICAgIHtcbiAgICAgICAgaWRlbnRpZnk6IHZhbHVlID0+IHZhbHVlID09IG51bGwsXG4gICAgICAgIGNyZWF0ZU5vZGU6ICgpID0+IG5ldyBTY2FsYXIobnVsbCksXG4gICAgICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgICAgIHRhZzogJ3RhZzp5YW1sLm9yZywyMDAyOm51bGwnLFxuICAgICAgICB0ZXN0OiAvXm51bGwkLyxcbiAgICAgICAgcmVzb2x2ZTogKCkgPT4gbnVsbCxcbiAgICAgICAgc3RyaW5naWZ5OiBzdHJpbmdpZnlKU09OXG4gICAgfSxcbiAgICB7XG4gICAgICAgIGlkZW50aWZ5OiB2YWx1ZSA9PiB0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJyxcbiAgICAgICAgZGVmYXVsdDogdHJ1ZSxcbiAgICAgICAgdGFnOiAndGFnOnlhbWwub3JnLDIwMDI6Ym9vbCcsXG4gICAgICAgIHRlc3Q6IC9edHJ1ZXxmYWxzZSQvLFxuICAgICAgICByZXNvbHZlOiBzdHIgPT4gc3RyID09PSAndHJ1ZScsXG4gICAgICAgIHN0cmluZ2lmeTogc3RyaW5naWZ5SlNPTlxuICAgIH0sXG4gICAge1xuICAgICAgICBpZGVudGlmeTogaW50SWRlbnRpZnksXG4gICAgICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgICAgIHRhZzogJ3RhZzp5YW1sLm9yZywyMDAyOmludCcsXG4gICAgICAgIHRlc3Q6IC9eLT8oPzowfFsxLTldWzAtOV0qKSQvLFxuICAgICAgICByZXNvbHZlOiAoc3RyLCBfb25FcnJvciwgeyBpbnRBc0JpZ0ludCB9KSA9PiBpbnRBc0JpZ0ludCA/IEJpZ0ludChzdHIpIDogcGFyc2VJbnQoc3RyLCAxMCksXG4gICAgICAgIHN0cmluZ2lmeTogKHsgdmFsdWUgfSkgPT4gaW50SWRlbnRpZnkodmFsdWUpID8gdmFsdWUudG9TdHJpbmcoKSA6IEpTT04uc3RyaW5naWZ5KHZhbHVlKVxuICAgIH0sXG4gICAge1xuICAgICAgICBpZGVudGlmeTogdmFsdWUgPT4gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyxcbiAgICAgICAgZGVmYXVsdDogdHJ1ZSxcbiAgICAgICAgdGFnOiAndGFnOnlhbWwub3JnLDIwMDI6ZmxvYXQnLFxuICAgICAgICB0ZXN0OiAvXi0/KD86MHxbMS05XVswLTldKikoPzpcXC5bMC05XSopPyg/OltlRV1bLStdP1swLTldKyk/JC8sXG4gICAgICAgIHJlc29sdmU6IHN0ciA9PiBwYXJzZUZsb2F0KHN0ciksXG4gICAgICAgIHN0cmluZ2lmeTogc3RyaW5naWZ5SlNPTlxuICAgIH1cbl07XG5jb25zdCBqc29uRXJyb3IgPSB7XG4gICAgZGVmYXVsdDogdHJ1ZSxcbiAgICB0YWc6ICcnLFxuICAgIHRlc3Q6IC9eLyxcbiAgICByZXNvbHZlKHN0ciwgb25FcnJvcikge1xuICAgICAgICBvbkVycm9yKGBVbnJlc29sdmVkIHBsYWluIHNjYWxhciAke0pTT04uc3RyaW5naWZ5KHN0cil9YCk7XG4gICAgICAgIHJldHVybiBzdHI7XG4gICAgfVxufTtcbmNvbnN0IHNjaGVtYSA9IFttYXAsIHNlcV0uY29uY2F0KGpzb25TY2FsYXJzLCBqc29uRXJyb3IpO1xuXG5leHBvcnQgeyBzY2hlbWEgfTtcbiIsICJpbXBvcnQgeyBTY2FsYXIgfSBmcm9tICcuLi8uLi9ub2Rlcy9TY2FsYXIuanMnO1xuaW1wb3J0IHsgc3RyaW5naWZ5U3RyaW5nIH0gZnJvbSAnLi4vLi4vc3RyaW5naWZ5L3N0cmluZ2lmeVN0cmluZy5qcyc7XG5cbmNvbnN0IGJpbmFyeSA9IHtcbiAgICBpZGVudGlmeTogdmFsdWUgPT4gdmFsdWUgaW5zdGFuY2VvZiBVaW50OEFycmF5LCAvLyBCdWZmZXIgaW5oZXJpdHMgZnJvbSBVaW50OEFycmF5XG4gICAgZGVmYXVsdDogZmFsc2UsXG4gICAgdGFnOiAndGFnOnlhbWwub3JnLDIwMDI6YmluYXJ5JyxcbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgQnVmZmVyIGluIG5vZGUgYW5kIGFuIFVpbnQ4QXJyYXkgaW4gYnJvd3NlcnNcbiAgICAgKlxuICAgICAqIFRvIHVzZSB0aGUgcmVzdWx0aW5nIGJ1ZmZlciBhcyBhbiBpbWFnZSwgeW91J2xsIHdhbnQgdG8gZG8gc29tZXRoaW5nIGxpa2U6XG4gICAgICpcbiAgICAgKiAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbYnVmZmVyXSwgeyB0eXBlOiAnaW1hZ2UvanBlZycgfSlcbiAgICAgKiAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNwaG90bycpLnNyYyA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYilcbiAgICAgKi9cbiAgICByZXNvbHZlKHNyYywgb25FcnJvcikge1xuICAgICAgICBpZiAodHlwZW9mIEJ1ZmZlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcmV0dXJuIEJ1ZmZlci5mcm9tKHNyYywgJ2Jhc2U2NCcpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHR5cGVvZiBhdG9iID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAvLyBPbiBJRSAxMSwgYXRvYigpIGNhbid0IGhhbmRsZSBuZXdsaW5lc1xuICAgICAgICAgICAgY29uc3Qgc3RyID0gYXRvYihzcmMucmVwbGFjZSgvW1xcblxccl0vZywgJycpKTtcbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZlciA9IG5ldyBVaW50OEFycmF5KHN0ci5sZW5ndGgpO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyArK2kpXG4gICAgICAgICAgICAgICAgYnVmZmVyW2ldID0gc3RyLmNoYXJDb2RlQXQoaSk7XG4gICAgICAgICAgICByZXR1cm4gYnVmZmVyO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgb25FcnJvcignVGhpcyBlbnZpcm9ubWVudCBkb2VzIG5vdCBzdXBwb3J0IHJlYWRpbmcgYmluYXJ5IHRhZ3M7IGVpdGhlciBCdWZmZXIgb3IgYXRvYiBpcyByZXF1aXJlZCcpO1xuICAgICAgICAgICAgcmV0dXJuIHNyYztcbiAgICAgICAgfVxuICAgIH0sXG4gICAgc3RyaW5naWZ5KHsgY29tbWVudCwgdHlwZSwgdmFsdWUgfSwgY3R4LCBvbkNvbW1lbnQsIG9uQ2hvbXBLZWVwKSB7XG4gICAgICAgIGNvbnN0IGJ1ZiA9IHZhbHVlOyAvLyBjaGVja2VkIGVhcmxpZXIgYnkgYmluYXJ5LmlkZW50aWZ5KClcbiAgICAgICAgbGV0IHN0cjtcbiAgICAgICAgaWYgKHR5cGVvZiBCdWZmZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHN0ciA9XG4gICAgICAgICAgICAgICAgYnVmIGluc3RhbmNlb2YgQnVmZmVyXG4gICAgICAgICAgICAgICAgICAgID8gYnVmLnRvU3RyaW5nKCdiYXNlNjQnKVxuICAgICAgICAgICAgICAgICAgICA6IEJ1ZmZlci5mcm9tKGJ1Zi5idWZmZXIpLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0eXBlb2YgYnRvYSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgbGV0IHMgPSAnJztcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYnVmLmxlbmd0aDsgKytpKVxuICAgICAgICAgICAgICAgIHMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShidWZbaV0pO1xuICAgICAgICAgICAgc3RyID0gYnRvYShzKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVGhpcyBlbnZpcm9ubWVudCBkb2VzIG5vdCBzdXBwb3J0IHdyaXRpbmcgYmluYXJ5IHRhZ3M7IGVpdGhlciBCdWZmZXIgb3IgYnRvYSBpcyByZXF1aXJlZCcpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdHlwZSlcbiAgICAgICAgICAgIHR5cGUgPSBTY2FsYXIuQkxPQ0tfTElURVJBTDtcbiAgICAgICAgaWYgKHR5cGUgIT09IFNjYWxhci5RVU9URV9ET1VCTEUpIHtcbiAgICAgICAgICAgIGNvbnN0IGxpbmVXaWR0aCA9IE1hdGgubWF4KGN0eC5vcHRpb25zLmxpbmVXaWR0aCAtIGN0eC5pbmRlbnQubGVuZ3RoLCBjdHgub3B0aW9ucy5taW5Db250ZW50V2lkdGgpO1xuICAgICAgICAgICAgY29uc3QgbiA9IE1hdGguY2VpbChzdHIubGVuZ3RoIC8gbGluZVdpZHRoKTtcbiAgICAgICAgICAgIGNvbnN0IGxpbmVzID0gbmV3IEFycmF5KG4pO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDAsIG8gPSAwOyBpIDwgbjsgKytpLCBvICs9IGxpbmVXaWR0aCkge1xuICAgICAgICAgICAgICAgIGxpbmVzW2ldID0gc3RyLnN1YnN0cihvLCBsaW5lV2lkdGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3RyID0gbGluZXMuam9pbih0eXBlID09PSBTY2FsYXIuQkxPQ0tfTElURVJBTCA/ICdcXG4nIDogJyAnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3RyaW5naWZ5U3RyaW5nKHsgY29tbWVudCwgdHlwZSwgdmFsdWU6IHN0ciB9LCBjdHgsIG9uQ29tbWVudCwgb25DaG9tcEtlZXApO1xuICAgIH1cbn07XG5cbmV4cG9ydCB7IGJpbmFyeSB9O1xuIiwgImltcG9ydCB7IGlzU2VxLCBpc1BhaXIsIGlzTWFwIH0gZnJvbSAnLi4vLi4vbm9kZXMvaWRlbnRpdHkuanMnO1xuaW1wb3J0IHsgUGFpciwgY3JlYXRlUGFpciB9IGZyb20gJy4uLy4uL25vZGVzL1BhaXIuanMnO1xuaW1wb3J0IHsgU2NhbGFyIH0gZnJvbSAnLi4vLi4vbm9kZXMvU2NhbGFyLmpzJztcbmltcG9ydCB7IFlBTUxTZXEgfSBmcm9tICcuLi8uLi9ub2Rlcy9ZQU1MU2VxLmpzJztcblxuZnVuY3Rpb24gcmVzb2x2ZVBhaXJzKHNlcSwgb25FcnJvcikge1xuICAgIGlmIChpc1NlcShzZXEpKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2VxLml0ZW1zLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICBsZXQgaXRlbSA9IHNlcS5pdGVtc1tpXTtcbiAgICAgICAgICAgIGlmIChpc1BhaXIoaXRlbSkpXG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICBlbHNlIGlmIChpc01hcChpdGVtKSkge1xuICAgICAgICAgICAgICAgIGlmIChpdGVtLml0ZW1zLmxlbmd0aCA+IDEpXG4gICAgICAgICAgICAgICAgICAgIG9uRXJyb3IoJ0VhY2ggcGFpciBtdXN0IGhhdmUgaXRzIG93biBzZXF1ZW5jZSBpbmRpY2F0b3InKTtcbiAgICAgICAgICAgICAgICBjb25zdCBwYWlyID0gaXRlbS5pdGVtc1swXSB8fCBuZXcgUGFpcihuZXcgU2NhbGFyKG51bGwpKTtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS5jb21tZW50QmVmb3JlKVxuICAgICAgICAgICAgICAgICAgICBwYWlyLmtleS5jb21tZW50QmVmb3JlID0gcGFpci5rZXkuY29tbWVudEJlZm9yZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBgJHtpdGVtLmNvbW1lbnRCZWZvcmV9XFxuJHtwYWlyLmtleS5jb21tZW50QmVmb3JlfWBcbiAgICAgICAgICAgICAgICAgICAgICAgIDogaXRlbS5jb21tZW50QmVmb3JlO1xuICAgICAgICAgICAgICAgIGlmIChpdGVtLmNvbW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY24gPSBwYWlyLnZhbHVlID8/IHBhaXIua2V5O1xuICAgICAgICAgICAgICAgICAgICBjbi5jb21tZW50ID0gY24uY29tbWVudFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBgJHtpdGVtLmNvbW1lbnR9XFxuJHtjbi5jb21tZW50fWBcbiAgICAgICAgICAgICAgICAgICAgICAgIDogaXRlbS5jb21tZW50O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpdGVtID0gcGFpcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNlcS5pdGVtc1tpXSA9IGlzUGFpcihpdGVtKSA/IGl0ZW0gOiBuZXcgUGFpcihpdGVtKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlXG4gICAgICAgIG9uRXJyb3IoJ0V4cGVjdGVkIGEgc2VxdWVuY2UgZm9yIHRoaXMgdGFnJyk7XG4gICAgcmV0dXJuIHNlcTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZVBhaXJzKHNjaGVtYSwgaXRlcmFibGUsIGN0eCkge1xuICAgIGNvbnN0IHsgcmVwbGFjZXIgfSA9IGN0eDtcbiAgICBjb25zdCBwYWlycyA9IG5ldyBZQU1MU2VxKHNjaGVtYSk7XG4gICAgcGFpcnMudGFnID0gJ3RhZzp5YW1sLm9yZywyMDAyOnBhaXJzJztcbiAgICBsZXQgaSA9IDA7XG4gICAgaWYgKGl0ZXJhYmxlICYmIFN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QoaXRlcmFibGUpKVxuICAgICAgICBmb3IgKGxldCBpdCBvZiBpdGVyYWJsZSkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiByZXBsYWNlciA9PT0gJ2Z1bmN0aW9uJylcbiAgICAgICAgICAgICAgICBpdCA9IHJlcGxhY2VyLmNhbGwoaXRlcmFibGUsIFN0cmluZyhpKyspLCBpdCk7XG4gICAgICAgICAgICBsZXQga2V5LCB2YWx1ZTtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGl0KSkge1xuICAgICAgICAgICAgICAgIGlmIChpdC5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAga2V5ID0gaXRbMF07XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gaXRbMV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgRXhwZWN0ZWQgW2tleSwgdmFsdWVdIHR1cGxlOiAke2l0fWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoaXQgJiYgaXQgaW5zdGFuY2VvZiBPYmplY3QpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoaXQpO1xuICAgICAgICAgICAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICBrZXkgPSBrZXlzWzBdO1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGl0W2tleV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBFeHBlY3RlZCB0dXBsZSB3aXRoIG9uZSBrZXksIG5vdCAke2tleXMubGVuZ3RofSBrZXlzYCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAga2V5ID0gaXQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwYWlycy5pdGVtcy5wdXNoKGNyZWF0ZVBhaXIoa2V5LCB2YWx1ZSwgY3R4KSk7XG4gICAgICAgIH1cbiAgICByZXR1cm4gcGFpcnM7XG59XG5jb25zdCBwYWlycyA9IHtcbiAgICBjb2xsZWN0aW9uOiAnc2VxJyxcbiAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICB0YWc6ICd0YWc6eWFtbC5vcmcsMjAwMjpwYWlycycsXG4gICAgcmVzb2x2ZTogcmVzb2x2ZVBhaXJzLFxuICAgIGNyZWF0ZU5vZGU6IGNyZWF0ZVBhaXJzXG59O1xuXG5leHBvcnQgeyBjcmVhdGVQYWlycywgcGFpcnMsIHJlc29sdmVQYWlycyB9O1xuIiwgImltcG9ydCB7IGlzU2NhbGFyLCBpc1BhaXIgfSBmcm9tICcuLi8uLi9ub2Rlcy9pZGVudGl0eS5qcyc7XG5pbXBvcnQgeyB0b0pTIH0gZnJvbSAnLi4vLi4vbm9kZXMvdG9KUy5qcyc7XG5pbXBvcnQgeyBZQU1MTWFwIH0gZnJvbSAnLi4vLi4vbm9kZXMvWUFNTE1hcC5qcyc7XG5pbXBvcnQgeyBZQU1MU2VxIH0gZnJvbSAnLi4vLi4vbm9kZXMvWUFNTFNlcS5qcyc7XG5pbXBvcnQgeyByZXNvbHZlUGFpcnMsIGNyZWF0ZVBhaXJzIH0gZnJvbSAnLi9wYWlycy5qcyc7XG5cbmNsYXNzIFlBTUxPTWFwIGV4dGVuZHMgWUFNTFNlcSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuYWRkID0gWUFNTE1hcC5wcm90b3R5cGUuYWRkLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMuZGVsZXRlID0gWUFNTE1hcC5wcm90b3R5cGUuZGVsZXRlLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMuZ2V0ID0gWUFNTE1hcC5wcm90b3R5cGUuZ2V0LmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMuaGFzID0gWUFNTE1hcC5wcm90b3R5cGUuaGFzLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMuc2V0ID0gWUFNTE1hcC5wcm90b3R5cGUuc2V0LmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMudGFnID0gWUFNTE9NYXAudGFnO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBJZiBgY3R4YCBpcyBnaXZlbiwgdGhlIHJldHVybiB0eXBlIGlzIGFjdHVhbGx5IGBNYXA8dW5rbm93biwgdW5rbm93bj5gLFxuICAgICAqIGJ1dCBUeXBlU2NyaXB0IHdvbid0IGFsbG93IHdpZGVuaW5nIHRoZSBzaWduYXR1cmUgb2YgYSBjaGlsZCBtZXRob2QuXG4gICAgICovXG4gICAgdG9KU09OKF8sIGN0eCkge1xuICAgICAgICBpZiAoIWN0eClcbiAgICAgICAgICAgIHJldHVybiBzdXBlci50b0pTT04oXyk7XG4gICAgICAgIGNvbnN0IG1hcCA9IG5ldyBNYXAoKTtcbiAgICAgICAgaWYgKGN0eD8ub25DcmVhdGUpXG4gICAgICAgICAgICBjdHgub25DcmVhdGUobWFwKTtcbiAgICAgICAgZm9yIChjb25zdCBwYWlyIG9mIHRoaXMuaXRlbXMpIHtcbiAgICAgICAgICAgIGxldCBrZXksIHZhbHVlO1xuICAgICAgICAgICAgaWYgKGlzUGFpcihwYWlyKSkge1xuICAgICAgICAgICAgICAgIGtleSA9IHRvSlMocGFpci5rZXksICcnLCBjdHgpO1xuICAgICAgICAgICAgICAgIHZhbHVlID0gdG9KUyhwYWlyLnZhbHVlLCBrZXksIGN0eCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBrZXkgPSB0b0pTKHBhaXIsICcnLCBjdHgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1hcC5oYXMoa2V5KSlcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ09yZGVyZWQgbWFwcyBtdXN0IG5vdCBpbmNsdWRlIGR1cGxpY2F0ZSBrZXlzJyk7XG4gICAgICAgICAgICBtYXAuc2V0KGtleSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtYXA7XG4gICAgfVxuICAgIHN0YXRpYyBmcm9tKHNjaGVtYSwgaXRlcmFibGUsIGN0eCkge1xuICAgICAgICBjb25zdCBwYWlycyA9IGNyZWF0ZVBhaXJzKHNjaGVtYSwgaXRlcmFibGUsIGN0eCk7XG4gICAgICAgIGNvbnN0IG9tYXAgPSBuZXcgdGhpcygpO1xuICAgICAgICBvbWFwLml0ZW1zID0gcGFpcnMuaXRlbXM7XG4gICAgICAgIHJldHVybiBvbWFwO1xuICAgIH1cbn1cbllBTUxPTWFwLnRhZyA9ICd0YWc6eWFtbC5vcmcsMjAwMjpvbWFwJztcbmNvbnN0IG9tYXAgPSB7XG4gICAgY29sbGVjdGlvbjogJ3NlcScsXG4gICAgaWRlbnRpZnk6IHZhbHVlID0+IHZhbHVlIGluc3RhbmNlb2YgTWFwLFxuICAgIG5vZGVDbGFzczogWUFNTE9NYXAsXG4gICAgZGVmYXVsdDogZmFsc2UsXG4gICAgdGFnOiAndGFnOnlhbWwub3JnLDIwMDI6b21hcCcsXG4gICAgcmVzb2x2ZShzZXEsIG9uRXJyb3IpIHtcbiAgICAgICAgY29uc3QgcGFpcnMgPSByZXNvbHZlUGFpcnMoc2VxLCBvbkVycm9yKTtcbiAgICAgICAgY29uc3Qgc2VlbktleXMgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCB7IGtleSB9IG9mIHBhaXJzLml0ZW1zKSB7XG4gICAgICAgICAgICBpZiAoaXNTY2FsYXIoa2V5KSkge1xuICAgICAgICAgICAgICAgIGlmIChzZWVuS2V5cy5pbmNsdWRlcyhrZXkudmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIG9uRXJyb3IoYE9yZGVyZWQgbWFwcyBtdXN0IG5vdCBpbmNsdWRlIGR1cGxpY2F0ZSBrZXlzOiAke2tleS52YWx1ZX1gKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHNlZW5LZXlzLnB1c2goa2V5LnZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24obmV3IFlBTUxPTWFwKCksIHBhaXJzKTtcbiAgICB9LFxuICAgIGNyZWF0ZU5vZGU6IChzY2hlbWEsIGl0ZXJhYmxlLCBjdHgpID0+IFlBTUxPTWFwLmZyb20oc2NoZW1hLCBpdGVyYWJsZSwgY3R4KVxufTtcblxuZXhwb3J0IHsgWUFNTE9NYXAsIG9tYXAgfTtcbiIsICJpbXBvcnQgeyBTY2FsYXIgfSBmcm9tICcuLi8uLi9ub2Rlcy9TY2FsYXIuanMnO1xuXG5mdW5jdGlvbiBib29sU3RyaW5naWZ5KHsgdmFsdWUsIHNvdXJjZSB9LCBjdHgpIHtcbiAgICBjb25zdCBib29sT2JqID0gdmFsdWUgPyB0cnVlVGFnIDogZmFsc2VUYWc7XG4gICAgaWYgKHNvdXJjZSAmJiBib29sT2JqLnRlc3QudGVzdChzb3VyY2UpKVxuICAgICAgICByZXR1cm4gc291cmNlO1xuICAgIHJldHVybiB2YWx1ZSA/IGN0eC5vcHRpb25zLnRydWVTdHIgOiBjdHgub3B0aW9ucy5mYWxzZVN0cjtcbn1cbmNvbnN0IHRydWVUYWcgPSB7XG4gICAgaWRlbnRpZnk6IHZhbHVlID0+IHZhbHVlID09PSB0cnVlLFxuICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgdGFnOiAndGFnOnlhbWwub3JnLDIwMDI6Ym9vbCcsXG4gICAgdGVzdDogL14oPzpZfHl8W1l5XWVzfFlFU3xbVHRdcnVlfFRSVUV8W09vXW58T04pJC8sXG4gICAgcmVzb2x2ZTogKCkgPT4gbmV3IFNjYWxhcih0cnVlKSxcbiAgICBzdHJpbmdpZnk6IGJvb2xTdHJpbmdpZnlcbn07XG5jb25zdCBmYWxzZVRhZyA9IHtcbiAgICBpZGVudGlmeTogdmFsdWUgPT4gdmFsdWUgPT09IGZhbHNlLFxuICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgdGFnOiAndGFnOnlhbWwub3JnLDIwMDI6Ym9vbCcsXG4gICAgdGVzdDogL14oPzpOfG58W05uXW98Tk98W0ZmXWFsc2V8RkFMU0V8W09vXWZmfE9GRikkLyxcbiAgICByZXNvbHZlOiAoKSA9PiBuZXcgU2NhbGFyKGZhbHNlKSxcbiAgICBzdHJpbmdpZnk6IGJvb2xTdHJpbmdpZnlcbn07XG5cbmV4cG9ydCB7IGZhbHNlVGFnLCB0cnVlVGFnIH07XG4iLCAiaW1wb3J0IHsgU2NhbGFyIH0gZnJvbSAnLi4vLi4vbm9kZXMvU2NhbGFyLmpzJztcbmltcG9ydCB7IHN0cmluZ2lmeU51bWJlciB9IGZyb20gJy4uLy4uL3N0cmluZ2lmeS9zdHJpbmdpZnlOdW1iZXIuanMnO1xuXG5jb25zdCBmbG9hdE5hTiA9IHtcbiAgICBpZGVudGlmeTogdmFsdWUgPT4gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyxcbiAgICBkZWZhdWx0OiB0cnVlLFxuICAgIHRhZzogJ3RhZzp5YW1sLm9yZywyMDAyOmZsb2F0JyxcbiAgICB0ZXN0OiAvXig/OlstK10/XFwuKD86aW5mfEluZnxJTkYpfFxcLm5hbnxcXC5OYU58XFwuTkFOKSQvLFxuICAgIHJlc29sdmU6IChzdHIpID0+IHN0ci5zbGljZSgtMykudG9Mb3dlckNhc2UoKSA9PT0gJ25hbidcbiAgICAgICAgPyBOYU5cbiAgICAgICAgOiBzdHJbMF0gPT09ICctJ1xuICAgICAgICAgICAgPyBOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFlcbiAgICAgICAgICAgIDogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLFxuICAgIHN0cmluZ2lmeTogc3RyaW5naWZ5TnVtYmVyXG59O1xuY29uc3QgZmxvYXRFeHAgPSB7XG4gICAgaWRlbnRpZnk6IHZhbHVlID0+IHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicsXG4gICAgZGVmYXVsdDogdHJ1ZSxcbiAgICB0YWc6ICd0YWc6eWFtbC5vcmcsMjAwMjpmbG9hdCcsXG4gICAgZm9ybWF0OiAnRVhQJyxcbiAgICB0ZXN0OiAvXlstK10/KD86WzAtOV1bMC05X10qKT8oPzpcXC5bMC05X10qKT9bZUVdWy0rXT9bMC05XSskLyxcbiAgICByZXNvbHZlOiAoc3RyKSA9PiBwYXJzZUZsb2F0KHN0ci5yZXBsYWNlKC9fL2csICcnKSksXG4gICAgc3RyaW5naWZ5KG5vZGUpIHtcbiAgICAgICAgY29uc3QgbnVtID0gTnVtYmVyKG5vZGUudmFsdWUpO1xuICAgICAgICByZXR1cm4gaXNGaW5pdGUobnVtKSA/IG51bS50b0V4cG9uZW50aWFsKCkgOiBzdHJpbmdpZnlOdW1iZXIobm9kZSk7XG4gICAgfVxufTtcbmNvbnN0IGZsb2F0ID0ge1xuICAgIGlkZW50aWZ5OiB2YWx1ZSA9PiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInLFxuICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgdGFnOiAndGFnOnlhbWwub3JnLDIwMDI6ZmxvYXQnLFxuICAgIHRlc3Q6IC9eWy0rXT8oPzpbMC05XVswLTlfXSopP1xcLlswLTlfXSokLyxcbiAgICByZXNvbHZlKHN0cikge1xuICAgICAgICBjb25zdCBub2RlID0gbmV3IFNjYWxhcihwYXJzZUZsb2F0KHN0ci5yZXBsYWNlKC9fL2csICcnKSkpO1xuICAgICAgICBjb25zdCBkb3QgPSBzdHIuaW5kZXhPZignLicpO1xuICAgICAgICBpZiAoZG90ICE9PSAtMSkge1xuICAgICAgICAgICAgY29uc3QgZiA9IHN0ci5zdWJzdHJpbmcoZG90ICsgMSkucmVwbGFjZSgvXy9nLCAnJyk7XG4gICAgICAgICAgICBpZiAoZltmLmxlbmd0aCAtIDFdID09PSAnMCcpXG4gICAgICAgICAgICAgICAgbm9kZS5taW5GcmFjdGlvbkRpZ2l0cyA9IGYubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBub2RlO1xuICAgIH0sXG4gICAgc3RyaW5naWZ5OiBzdHJpbmdpZnlOdW1iZXJcbn07XG5cbmV4cG9ydCB7IGZsb2F0LCBmbG9hdEV4cCwgZmxvYXROYU4gfTtcbiIsICJpbXBvcnQgeyBzdHJpbmdpZnlOdW1iZXIgfSBmcm9tICcuLi8uLi9zdHJpbmdpZnkvc3RyaW5naWZ5TnVtYmVyLmpzJztcblxuY29uc3QgaW50SWRlbnRpZnkgPSAodmFsdWUpID0+IHR5cGVvZiB2YWx1ZSA9PT0gJ2JpZ2ludCcgfHwgTnVtYmVyLmlzSW50ZWdlcih2YWx1ZSk7XG5mdW5jdGlvbiBpbnRSZXNvbHZlKHN0ciwgb2Zmc2V0LCByYWRpeCwgeyBpbnRBc0JpZ0ludCB9KSB7XG4gICAgY29uc3Qgc2lnbiA9IHN0clswXTtcbiAgICBpZiAoc2lnbiA9PT0gJy0nIHx8IHNpZ24gPT09ICcrJylcbiAgICAgICAgb2Zmc2V0ICs9IDE7XG4gICAgc3RyID0gc3RyLnN1YnN0cmluZyhvZmZzZXQpLnJlcGxhY2UoL18vZywgJycpO1xuICAgIGlmIChpbnRBc0JpZ0ludCkge1xuICAgICAgICBzd2l0Y2ggKHJhZGl4KSB7XG4gICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgc3RyID0gYDBiJHtzdHJ9YDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgODpcbiAgICAgICAgICAgICAgICBzdHIgPSBgMG8ke3N0cn1gO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAxNjpcbiAgICAgICAgICAgICAgICBzdHIgPSBgMHgke3N0cn1gO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG4gPSBCaWdJbnQoc3RyKTtcbiAgICAgICAgcmV0dXJuIHNpZ24gPT09ICctJyA/IEJpZ0ludCgtMSkgKiBuIDogbjtcbiAgICB9XG4gICAgY29uc3QgbiA9IHBhcnNlSW50KHN0ciwgcmFkaXgpO1xuICAgIHJldHVybiBzaWduID09PSAnLScgPyAtMSAqIG4gOiBuO1xufVxuZnVuY3Rpb24gaW50U3RyaW5naWZ5KG5vZGUsIHJhZGl4LCBwcmVmaXgpIHtcbiAgICBjb25zdCB7IHZhbHVlIH0gPSBub2RlO1xuICAgIGlmIChpbnRJZGVudGlmeSh2YWx1ZSkpIHtcbiAgICAgICAgY29uc3Qgc3RyID0gdmFsdWUudG9TdHJpbmcocmFkaXgpO1xuICAgICAgICByZXR1cm4gdmFsdWUgPCAwID8gJy0nICsgcHJlZml4ICsgc3RyLnN1YnN0cigxKSA6IHByZWZpeCArIHN0cjtcbiAgICB9XG4gICAgcmV0dXJuIHN0cmluZ2lmeU51bWJlcihub2RlKTtcbn1cbmNvbnN0IGludEJpbiA9IHtcbiAgICBpZGVudGlmeTogaW50SWRlbnRpZnksXG4gICAgZGVmYXVsdDogdHJ1ZSxcbiAgICB0YWc6ICd0YWc6eWFtbC5vcmcsMjAwMjppbnQnLFxuICAgIGZvcm1hdDogJ0JJTicsXG4gICAgdGVzdDogL15bLStdPzBiWzAtMV9dKyQvLFxuICAgIHJlc29sdmU6IChzdHIsIF9vbkVycm9yLCBvcHQpID0+IGludFJlc29sdmUoc3RyLCAyLCAyLCBvcHQpLFxuICAgIHN0cmluZ2lmeTogbm9kZSA9PiBpbnRTdHJpbmdpZnkobm9kZSwgMiwgJzBiJylcbn07XG5jb25zdCBpbnRPY3QgPSB7XG4gICAgaWRlbnRpZnk6IGludElkZW50aWZ5LFxuICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgdGFnOiAndGFnOnlhbWwub3JnLDIwMDI6aW50JyxcbiAgICBmb3JtYXQ6ICdPQ1QnLFxuICAgIHRlc3Q6IC9eWy0rXT8wWzAtN19dKyQvLFxuICAgIHJlc29sdmU6IChzdHIsIF9vbkVycm9yLCBvcHQpID0+IGludFJlc29sdmUoc3RyLCAxLCA4LCBvcHQpLFxuICAgIHN0cmluZ2lmeTogbm9kZSA9PiBpbnRTdHJpbmdpZnkobm9kZSwgOCwgJzAnKVxufTtcbmNvbnN0IGludCA9IHtcbiAgICBpZGVudGlmeTogaW50SWRlbnRpZnksXG4gICAgZGVmYXVsdDogdHJ1ZSxcbiAgICB0YWc6ICd0YWc6eWFtbC5vcmcsMjAwMjppbnQnLFxuICAgIHRlc3Q6IC9eWy0rXT9bMC05XVswLTlfXSokLyxcbiAgICByZXNvbHZlOiAoc3RyLCBfb25FcnJvciwgb3B0KSA9PiBpbnRSZXNvbHZlKHN0ciwgMCwgMTAsIG9wdCksXG4gICAgc3RyaW5naWZ5OiBzdHJpbmdpZnlOdW1iZXJcbn07XG5jb25zdCBpbnRIZXggPSB7XG4gICAgaWRlbnRpZnk6IGludElkZW50aWZ5LFxuICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgdGFnOiAndGFnOnlhbWwub3JnLDIwMDI6aW50JyxcbiAgICBmb3JtYXQ6ICdIRVgnLFxuICAgIHRlc3Q6IC9eWy0rXT8weFswLTlhLWZBLUZfXSskLyxcbiAgICByZXNvbHZlOiAoc3RyLCBfb25FcnJvciwgb3B0KSA9PiBpbnRSZXNvbHZlKHN0ciwgMiwgMTYsIG9wdCksXG4gICAgc3RyaW5naWZ5OiBub2RlID0+IGludFN0cmluZ2lmeShub2RlLCAxNiwgJzB4Jylcbn07XG5cbmV4cG9ydCB7IGludCwgaW50QmluLCBpbnRIZXgsIGludE9jdCB9O1xuIiwgImltcG9ydCB7IGlzTWFwLCBpc1BhaXIsIGlzU2NhbGFyIH0gZnJvbSAnLi4vLi4vbm9kZXMvaWRlbnRpdHkuanMnO1xuaW1wb3J0IHsgUGFpciwgY3JlYXRlUGFpciB9IGZyb20gJy4uLy4uL25vZGVzL1BhaXIuanMnO1xuaW1wb3J0IHsgWUFNTE1hcCwgZmluZFBhaXIgfSBmcm9tICcuLi8uLi9ub2Rlcy9ZQU1MTWFwLmpzJztcblxuY2xhc3MgWUFNTFNldCBleHRlbmRzIFlBTUxNYXAge1xuICAgIGNvbnN0cnVjdG9yKHNjaGVtYSkge1xuICAgICAgICBzdXBlcihzY2hlbWEpO1xuICAgICAgICB0aGlzLnRhZyA9IFlBTUxTZXQudGFnO1xuICAgIH1cbiAgICBhZGQoa2V5KSB7XG4gICAgICAgIGxldCBwYWlyO1xuICAgICAgICBpZiAoaXNQYWlyKGtleSkpXG4gICAgICAgICAgICBwYWlyID0ga2V5O1xuICAgICAgICBlbHNlIGlmIChrZXkgJiZcbiAgICAgICAgICAgIHR5cGVvZiBrZXkgPT09ICdvYmplY3QnICYmXG4gICAgICAgICAgICAna2V5JyBpbiBrZXkgJiZcbiAgICAgICAgICAgICd2YWx1ZScgaW4ga2V5ICYmXG4gICAgICAgICAgICBrZXkudmFsdWUgPT09IG51bGwpXG4gICAgICAgICAgICBwYWlyID0gbmV3IFBhaXIoa2V5LmtleSwgbnVsbCk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHBhaXIgPSBuZXcgUGFpcihrZXksIG51bGwpO1xuICAgICAgICBjb25zdCBwcmV2ID0gZmluZFBhaXIodGhpcy5pdGVtcywgcGFpci5rZXkpO1xuICAgICAgICBpZiAoIXByZXYpXG4gICAgICAgICAgICB0aGlzLml0ZW1zLnB1c2gocGFpcik7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIElmIGBrZWVwUGFpcmAgaXMgYHRydWVgLCByZXR1cm5zIHRoZSBQYWlyIG1hdGNoaW5nIGBrZXlgLlxuICAgICAqIE90aGVyd2lzZSwgcmV0dXJucyB0aGUgdmFsdWUgb2YgdGhhdCBQYWlyJ3Mga2V5LlxuICAgICAqL1xuICAgIGdldChrZXksIGtlZXBQYWlyKSB7XG4gICAgICAgIGNvbnN0IHBhaXIgPSBmaW5kUGFpcih0aGlzLml0ZW1zLCBrZXkpO1xuICAgICAgICByZXR1cm4gIWtlZXBQYWlyICYmIGlzUGFpcihwYWlyKVxuICAgICAgICAgICAgPyBpc1NjYWxhcihwYWlyLmtleSlcbiAgICAgICAgICAgICAgICA/IHBhaXIua2V5LnZhbHVlXG4gICAgICAgICAgICAgICAgOiBwYWlyLmtleVxuICAgICAgICAgICAgOiBwYWlyO1xuICAgIH1cbiAgICBzZXQoa2V5LCB2YWx1ZSkge1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnYm9vbGVhbicpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIGJvb2xlYW4gdmFsdWUgZm9yIHNldChrZXksIHZhbHVlKSBpbiBhIFlBTUwgc2V0LCBub3QgJHt0eXBlb2YgdmFsdWV9YCk7XG4gICAgICAgIGNvbnN0IHByZXYgPSBmaW5kUGFpcih0aGlzLml0ZW1zLCBrZXkpO1xuICAgICAgICBpZiAocHJldiAmJiAhdmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuaXRlbXMuc3BsaWNlKHRoaXMuaXRlbXMuaW5kZXhPZihwcmV2KSwgMSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoIXByZXYgJiYgdmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuaXRlbXMucHVzaChuZXcgUGFpcihrZXkpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB0b0pTT04oXywgY3R4KSB7XG4gICAgICAgIHJldHVybiBzdXBlci50b0pTT04oXywgY3R4LCBTZXQpO1xuICAgIH1cbiAgICB0b1N0cmluZyhjdHgsIG9uQ29tbWVudCwgb25DaG9tcEtlZXApIHtcbiAgICAgICAgaWYgKCFjdHgpXG4gICAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodGhpcyk7XG4gICAgICAgIGlmICh0aGlzLmhhc0FsbE51bGxWYWx1ZXModHJ1ZSkpXG4gICAgICAgICAgICByZXR1cm4gc3VwZXIudG9TdHJpbmcoT2JqZWN0LmFzc2lnbih7fSwgY3R4LCB7IGFsbE51bGxWYWx1ZXM6IHRydWUgfSksIG9uQ29tbWVudCwgb25DaG9tcEtlZXApO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NldCBpdGVtcyBtdXN0IGFsbCBoYXZlIG51bGwgdmFsdWVzJyk7XG4gICAgfVxuICAgIHN0YXRpYyBmcm9tKHNjaGVtYSwgaXRlcmFibGUsIGN0eCkge1xuICAgICAgICBjb25zdCB7IHJlcGxhY2VyIH0gPSBjdHg7XG4gICAgICAgIGNvbnN0IHNldCA9IG5ldyB0aGlzKHNjaGVtYSk7XG4gICAgICAgIGlmIChpdGVyYWJsZSAmJiBTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KGl0ZXJhYmxlKSlcbiAgICAgICAgICAgIGZvciAobGV0IHZhbHVlIG9mIGl0ZXJhYmxlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiByZXBsYWNlciA9PT0gJ2Z1bmN0aW9uJylcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSByZXBsYWNlci5jYWxsKGl0ZXJhYmxlLCB2YWx1ZSwgdmFsdWUpO1xuICAgICAgICAgICAgICAgIHNldC5pdGVtcy5wdXNoKGNyZWF0ZVBhaXIodmFsdWUsIG51bGwsIGN0eCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2V0O1xuICAgIH1cbn1cbllBTUxTZXQudGFnID0gJ3RhZzp5YW1sLm9yZywyMDAyOnNldCc7XG5jb25zdCBzZXQgPSB7XG4gICAgY29sbGVjdGlvbjogJ21hcCcsXG4gICAgaWRlbnRpZnk6IHZhbHVlID0+IHZhbHVlIGluc3RhbmNlb2YgU2V0LFxuICAgIG5vZGVDbGFzczogWUFNTFNldCxcbiAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICB0YWc6ICd0YWc6eWFtbC5vcmcsMjAwMjpzZXQnLFxuICAgIGNyZWF0ZU5vZGU6IChzY2hlbWEsIGl0ZXJhYmxlLCBjdHgpID0+IFlBTUxTZXQuZnJvbShzY2hlbWEsIGl0ZXJhYmxlLCBjdHgpLFxuICAgIHJlc29sdmUobWFwLCBvbkVycm9yKSB7XG4gICAgICAgIGlmIChpc01hcChtYXApKSB7XG4gICAgICAgICAgICBpZiAobWFwLmhhc0FsbE51bGxWYWx1ZXModHJ1ZSkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24obmV3IFlBTUxTZXQoKSwgbWFwKTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBvbkVycm9yKCdTZXQgaXRlbXMgbXVzdCBhbGwgaGF2ZSBudWxsIHZhbHVlcycpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIG9uRXJyb3IoJ0V4cGVjdGVkIGEgbWFwcGluZyBmb3IgdGhpcyB0YWcnKTtcbiAgICAgICAgcmV0dXJuIG1hcDtcbiAgICB9XG59O1xuXG5leHBvcnQgeyBZQU1MU2V0LCBzZXQgfTtcbiIsICJpbXBvcnQgeyBzdHJpbmdpZnlOdW1iZXIgfSBmcm9tICcuLi8uLi9zdHJpbmdpZnkvc3RyaW5naWZ5TnVtYmVyLmpzJztcblxuLyoqIEludGVybmFsIHR5cGVzIGhhbmRsZSBiaWdpbnQgYXMgbnVtYmVyLCBiZWNhdXNlIFRTIGNhbid0IGZpZ3VyZSBpdCBvdXQuICovXG5mdW5jdGlvbiBwYXJzZVNleGFnZXNpbWFsKHN0ciwgYXNCaWdJbnQpIHtcbiAgICBjb25zdCBzaWduID0gc3RyWzBdO1xuICAgIGNvbnN0IHBhcnRzID0gc2lnbiA9PT0gJy0nIHx8IHNpZ24gPT09ICcrJyA/IHN0ci5zdWJzdHJpbmcoMSkgOiBzdHI7XG4gICAgY29uc3QgbnVtID0gKG4pID0+IGFzQmlnSW50ID8gQmlnSW50KG4pIDogTnVtYmVyKG4pO1xuICAgIGNvbnN0IHJlcyA9IHBhcnRzXG4gICAgICAgIC5yZXBsYWNlKC9fL2csICcnKVxuICAgICAgICAuc3BsaXQoJzonKVxuICAgICAgICAucmVkdWNlKChyZXMsIHApID0+IHJlcyAqIG51bSg2MCkgKyBudW0ocCksIG51bSgwKSk7XG4gICAgcmV0dXJuIChzaWduID09PSAnLScgPyBudW0oLTEpICogcmVzIDogcmVzKTtcbn1cbi8qKlxuICogaGhoaDptbTpzcy5zc3NcbiAqXG4gKiBJbnRlcm5hbCB0eXBlcyBoYW5kbGUgYmlnaW50IGFzIG51bWJlciwgYmVjYXVzZSBUUyBjYW4ndCBmaWd1cmUgaXQgb3V0LlxuICovXG5mdW5jdGlvbiBzdHJpbmdpZnlTZXhhZ2VzaW1hbChub2RlKSB7XG4gICAgbGV0IHsgdmFsdWUgfSA9IG5vZGU7XG4gICAgbGV0IG51bSA9IChuKSA9PiBuO1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdiaWdpbnQnKVxuICAgICAgICBudW0gPSBuID0+IEJpZ0ludChuKTtcbiAgICBlbHNlIGlmIChpc05hTih2YWx1ZSkgfHwgIWlzRmluaXRlKHZhbHVlKSlcbiAgICAgICAgcmV0dXJuIHN0cmluZ2lmeU51bWJlcihub2RlKTtcbiAgICBsZXQgc2lnbiA9ICcnO1xuICAgIGlmICh2YWx1ZSA8IDApIHtcbiAgICAgICAgc2lnbiA9ICctJztcbiAgICAgICAgdmFsdWUgKj0gbnVtKC0xKTtcbiAgICB9XG4gICAgY29uc3QgXzYwID0gbnVtKDYwKTtcbiAgICBjb25zdCBwYXJ0cyA9IFt2YWx1ZSAlIF82MF07IC8vIHNlY29uZHMsIGluY2x1ZGluZyBtc1xuICAgIGlmICh2YWx1ZSA8IDYwKSB7XG4gICAgICAgIHBhcnRzLnVuc2hpZnQoMCk7IC8vIGF0IGxlYXN0IG9uZSA6IGlzIHJlcXVpcmVkXG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB2YWx1ZSA9ICh2YWx1ZSAtIHBhcnRzWzBdKSAvIF82MDtcbiAgICAgICAgcGFydHMudW5zaGlmdCh2YWx1ZSAlIF82MCk7IC8vIG1pbnV0ZXNcbiAgICAgICAgaWYgKHZhbHVlID49IDYwKSB7XG4gICAgICAgICAgICB2YWx1ZSA9ICh2YWx1ZSAtIHBhcnRzWzBdKSAvIF82MDtcbiAgICAgICAgICAgIHBhcnRzLnVuc2hpZnQodmFsdWUpOyAvLyBob3Vyc1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiAoc2lnbiArXG4gICAgICAgIHBhcnRzXG4gICAgICAgICAgICAubWFwKG4gPT4gU3RyaW5nKG4pLnBhZFN0YXJ0KDIsICcwJykpXG4gICAgICAgICAgICAuam9pbignOicpXG4gICAgICAgICAgICAucmVwbGFjZSgvMDAwMDAwXFxkKiQvLCAnJykgLy8gJSA2MCBtYXkgaW50cm9kdWNlIGVycm9yXG4gICAgKTtcbn1cbmNvbnN0IGludFRpbWUgPSB7XG4gICAgaWRlbnRpZnk6IHZhbHVlID0+IHR5cGVvZiB2YWx1ZSA9PT0gJ2JpZ2ludCcgfHwgTnVtYmVyLmlzSW50ZWdlcih2YWx1ZSksXG4gICAgZGVmYXVsdDogdHJ1ZSxcbiAgICB0YWc6ICd0YWc6eWFtbC5vcmcsMjAwMjppbnQnLFxuICAgIGZvcm1hdDogJ1RJTUUnLFxuICAgIHRlc3Q6IC9eWy0rXT9bMC05XVswLTlfXSooPzo6WzAtNV0/WzAtOV0pKyQvLFxuICAgIHJlc29sdmU6IChzdHIsIF9vbkVycm9yLCB7IGludEFzQmlnSW50IH0pID0+IHBhcnNlU2V4YWdlc2ltYWwoc3RyLCBpbnRBc0JpZ0ludCksXG4gICAgc3RyaW5naWZ5OiBzdHJpbmdpZnlTZXhhZ2VzaW1hbFxufTtcbmNvbnN0IGZsb2F0VGltZSA9IHtcbiAgICBpZGVudGlmeTogdmFsdWUgPT4gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyxcbiAgICBkZWZhdWx0OiB0cnVlLFxuICAgIHRhZzogJ3RhZzp5YW1sLm9yZywyMDAyOmZsb2F0JyxcbiAgICBmb3JtYXQ6ICdUSU1FJyxcbiAgICB0ZXN0OiAvXlstK10/WzAtOV1bMC05X10qKD86OlswLTVdP1swLTldKStcXC5bMC05X10qJC8sXG4gICAgcmVzb2x2ZTogc3RyID0+IHBhcnNlU2V4YWdlc2ltYWwoc3RyLCBmYWxzZSksXG4gICAgc3RyaW5naWZ5OiBzdHJpbmdpZnlTZXhhZ2VzaW1hbFxufTtcbmNvbnN0IHRpbWVzdGFtcCA9IHtcbiAgICBpZGVudGlmeTogdmFsdWUgPT4gdmFsdWUgaW5zdGFuY2VvZiBEYXRlLFxuICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgdGFnOiAndGFnOnlhbWwub3JnLDIwMDI6dGltZXN0YW1wJyxcbiAgICAvLyBJZiB0aGUgdGltZSB6b25lIGlzIG9taXR0ZWQsIHRoZSB0aW1lc3RhbXAgaXMgYXNzdW1lZCB0byBiZSBzcGVjaWZpZWQgaW4gVVRDLiBUaGUgdGltZSBwYXJ0XG4gICAgLy8gbWF5IGJlIG9taXR0ZWQgYWx0b2dldGhlciwgcmVzdWx0aW5nIGluIGEgZGF0ZSBmb3JtYXQuIEluIHN1Y2ggYSBjYXNlLCB0aGUgdGltZSBwYXJ0IGlzXG4gICAgLy8gYXNzdW1lZCB0byBiZSAwMDowMDowMFogKHN0YXJ0IG9mIGRheSwgVVRDKS5cbiAgICB0ZXN0OiBSZWdFeHAoJ14oWzAtOV17NH0pLShbMC05XXsxLDJ9KS0oWzAtOV17MSwyfSknICsgLy8gWVlZWS1NbS1EZFxuICAgICAgICAnKD86JyArIC8vIHRpbWUgaXMgb3B0aW9uYWxcbiAgICAgICAgJyg/OnR8VHxbIFxcXFx0XSspJyArIC8vIHQgfCBUIHwgd2hpdGVzcGFjZVxuICAgICAgICAnKFswLTldezEsMn0pOihbMC05XXsxLDJ9KTooWzAtOV17MSwyfShcXFxcLlswLTldKyk/KScgKyAvLyBIaDpNbTpTcyguc3MpP1xuICAgICAgICAnKD86WyBcXFxcdF0qKFp8Wy0rXVswMTJdP1swLTldKD86OlswLTldezJ9KT8pKT8nICsgLy8gWiB8ICs1IHwgLTAzOjMwXG4gICAgICAgICcpPyQnKSxcbiAgICByZXNvbHZlKHN0cikge1xuICAgICAgICBjb25zdCBtYXRjaCA9IHN0ci5tYXRjaCh0aW1lc3RhbXAudGVzdCk7XG4gICAgICAgIGlmICghbWF0Y2gpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJyEhdGltZXN0YW1wIGV4cGVjdHMgYSBkYXRlLCBzdGFydGluZyB3aXRoIHl5eXktbW0tZGQnKTtcbiAgICAgICAgY29uc3QgWywgeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmRdID0gbWF0Y2gubWFwKE51bWJlcik7XG4gICAgICAgIGNvbnN0IG1pbGxpc2VjID0gbWF0Y2hbN10gPyBOdW1iZXIoKG1hdGNoWzddICsgJzAwJykuc3Vic3RyKDEsIDMpKSA6IDA7XG4gICAgICAgIGxldCBkYXRlID0gRGF0ZS5VVEMoeWVhciwgbW9udGggLSAxLCBkYXksIGhvdXIgfHwgMCwgbWludXRlIHx8IDAsIHNlY29uZCB8fCAwLCBtaWxsaXNlYyk7XG4gICAgICAgIGNvbnN0IHR6ID0gbWF0Y2hbOF07XG4gICAgICAgIGlmICh0eiAmJiB0eiAhPT0gJ1onKSB7XG4gICAgICAgICAgICBsZXQgZCA9IHBhcnNlU2V4YWdlc2ltYWwodHosIGZhbHNlKTtcbiAgICAgICAgICAgIGlmIChNYXRoLmFicyhkKSA8IDMwKVxuICAgICAgICAgICAgICAgIGQgKj0gNjA7XG4gICAgICAgICAgICBkYXRlIC09IDYwMDAwICogZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IERhdGUoZGF0ZSk7XG4gICAgfSxcbiAgICBzdHJpbmdpZnk6ICh7IHZhbHVlIH0pID0+IHZhbHVlLnRvSVNPU3RyaW5nKCkucmVwbGFjZSgvKChUMDA6MDApPzowMCk/XFwuMDAwWiQvLCAnJylcbn07XG5cbmV4cG9ydCB7IGZsb2F0VGltZSwgaW50VGltZSwgdGltZXN0YW1wIH07XG4iLCAiaW1wb3J0IHsgbWFwIH0gZnJvbSAnLi4vY29tbW9uL21hcC5qcyc7XG5pbXBvcnQgeyBudWxsVGFnIH0gZnJvbSAnLi4vY29tbW9uL251bGwuanMnO1xuaW1wb3J0IHsgc2VxIH0gZnJvbSAnLi4vY29tbW9uL3NlcS5qcyc7XG5pbXBvcnQgeyBzdHJpbmcgfSBmcm9tICcuLi9jb21tb24vc3RyaW5nLmpzJztcbmltcG9ydCB7IGJpbmFyeSB9IGZyb20gJy4vYmluYXJ5LmpzJztcbmltcG9ydCB7IHRydWVUYWcsIGZhbHNlVGFnIH0gZnJvbSAnLi9ib29sLmpzJztcbmltcG9ydCB7IGZsb2F0TmFOLCBmbG9hdEV4cCwgZmxvYXQgfSBmcm9tICcuL2Zsb2F0LmpzJztcbmltcG9ydCB7IGludEJpbiwgaW50T2N0LCBpbnQsIGludEhleCB9IGZyb20gJy4vaW50LmpzJztcbmltcG9ydCB7IG1lcmdlIH0gZnJvbSAnLi9tZXJnZS5qcyc7XG5pbXBvcnQgeyBvbWFwIH0gZnJvbSAnLi9vbWFwLmpzJztcbmltcG9ydCB7IHBhaXJzIH0gZnJvbSAnLi9wYWlycy5qcyc7XG5pbXBvcnQgeyBzZXQgfSBmcm9tICcuL3NldC5qcyc7XG5pbXBvcnQgeyBpbnRUaW1lLCBmbG9hdFRpbWUsIHRpbWVzdGFtcCB9IGZyb20gJy4vdGltZXN0YW1wLmpzJztcblxuY29uc3Qgc2NoZW1hID0gW1xuICAgIG1hcCxcbiAgICBzZXEsXG4gICAgc3RyaW5nLFxuICAgIG51bGxUYWcsXG4gICAgdHJ1ZVRhZyxcbiAgICBmYWxzZVRhZyxcbiAgICBpbnRCaW4sXG4gICAgaW50T2N0LFxuICAgIGludCxcbiAgICBpbnRIZXgsXG4gICAgZmxvYXROYU4sXG4gICAgZmxvYXRFeHAsXG4gICAgZmxvYXQsXG4gICAgYmluYXJ5LFxuICAgIG1lcmdlLFxuICAgIG9tYXAsXG4gICAgcGFpcnMsXG4gICAgc2V0LFxuICAgIGludFRpbWUsXG4gICAgZmxvYXRUaW1lLFxuICAgIHRpbWVzdGFtcFxuXTtcblxuZXhwb3J0IHsgc2NoZW1hIH07XG4iLCAiaW1wb3J0IHsgbWFwIH0gZnJvbSAnLi9jb21tb24vbWFwLmpzJztcbmltcG9ydCB7IG51bGxUYWcgfSBmcm9tICcuL2NvbW1vbi9udWxsLmpzJztcbmltcG9ydCB7IHNlcSB9IGZyb20gJy4vY29tbW9uL3NlcS5qcyc7XG5pbXBvcnQgeyBzdHJpbmcgfSBmcm9tICcuL2NvbW1vbi9zdHJpbmcuanMnO1xuaW1wb3J0IHsgYm9vbFRhZyB9IGZyb20gJy4vY29yZS9ib29sLmpzJztcbmltcG9ydCB7IGZsb2F0LCBmbG9hdEV4cCwgZmxvYXROYU4gfSBmcm9tICcuL2NvcmUvZmxvYXQuanMnO1xuaW1wb3J0IHsgaW50LCBpbnRIZXgsIGludE9jdCB9IGZyb20gJy4vY29yZS9pbnQuanMnO1xuaW1wb3J0IHsgc2NoZW1hIH0gZnJvbSAnLi9jb3JlL3NjaGVtYS5qcyc7XG5pbXBvcnQgeyBzY2hlbWEgYXMgc2NoZW1hJDEgfSBmcm9tICcuL2pzb24vc2NoZW1hLmpzJztcbmltcG9ydCB7IGJpbmFyeSB9IGZyb20gJy4veWFtbC0xLjEvYmluYXJ5LmpzJztcbmltcG9ydCB7IG1lcmdlIH0gZnJvbSAnLi95YW1sLTEuMS9tZXJnZS5qcyc7XG5pbXBvcnQgeyBvbWFwIH0gZnJvbSAnLi95YW1sLTEuMS9vbWFwLmpzJztcbmltcG9ydCB7IHBhaXJzIH0gZnJvbSAnLi95YW1sLTEuMS9wYWlycy5qcyc7XG5pbXBvcnQgeyBzY2hlbWEgYXMgc2NoZW1hJDIgfSBmcm9tICcuL3lhbWwtMS4xL3NjaGVtYS5qcyc7XG5pbXBvcnQgeyBzZXQgfSBmcm9tICcuL3lhbWwtMS4xL3NldC5qcyc7XG5pbXBvcnQgeyB0aW1lc3RhbXAsIGZsb2F0VGltZSwgaW50VGltZSB9IGZyb20gJy4veWFtbC0xLjEvdGltZXN0YW1wLmpzJztcblxuY29uc3Qgc2NoZW1hcyA9IG5ldyBNYXAoW1xuICAgIFsnY29yZScsIHNjaGVtYV0sXG4gICAgWydmYWlsc2FmZScsIFttYXAsIHNlcSwgc3RyaW5nXV0sXG4gICAgWydqc29uJywgc2NoZW1hJDFdLFxuICAgIFsneWFtbDExJywgc2NoZW1hJDJdLFxuICAgIFsneWFtbC0xLjEnLCBzY2hlbWEkMl1cbl0pO1xuY29uc3QgdGFnc0J5TmFtZSA9IHtcbiAgICBiaW5hcnksXG4gICAgYm9vbDogYm9vbFRhZyxcbiAgICBmbG9hdCxcbiAgICBmbG9hdEV4cCxcbiAgICBmbG9hdE5hTixcbiAgICBmbG9hdFRpbWUsXG4gICAgaW50LFxuICAgIGludEhleCxcbiAgICBpbnRPY3QsXG4gICAgaW50VGltZSxcbiAgICBtYXAsXG4gICAgbWVyZ2UsXG4gICAgbnVsbDogbnVsbFRhZyxcbiAgICBvbWFwLFxuICAgIHBhaXJzLFxuICAgIHNlcSxcbiAgICBzZXQsXG4gICAgdGltZXN0YW1wXG59O1xuY29uc3QgY29yZUtub3duVGFncyA9IHtcbiAgICAndGFnOnlhbWwub3JnLDIwMDI6YmluYXJ5JzogYmluYXJ5LFxuICAgICd0YWc6eWFtbC5vcmcsMjAwMjptZXJnZSc6IG1lcmdlLFxuICAgICd0YWc6eWFtbC5vcmcsMjAwMjpvbWFwJzogb21hcCxcbiAgICAndGFnOnlhbWwub3JnLDIwMDI6cGFpcnMnOiBwYWlycyxcbiAgICAndGFnOnlhbWwub3JnLDIwMDI6c2V0Jzogc2V0LFxuICAgICd0YWc6eWFtbC5vcmcsMjAwMjp0aW1lc3RhbXAnOiB0aW1lc3RhbXBcbn07XG5mdW5jdGlvbiBnZXRUYWdzKGN1c3RvbVRhZ3MsIHNjaGVtYU5hbWUsIGFkZE1lcmdlVGFnKSB7XG4gICAgY29uc3Qgc2NoZW1hVGFncyA9IHNjaGVtYXMuZ2V0KHNjaGVtYU5hbWUpO1xuICAgIGlmIChzY2hlbWFUYWdzICYmICFjdXN0b21UYWdzKSB7XG4gICAgICAgIHJldHVybiBhZGRNZXJnZVRhZyAmJiAhc2NoZW1hVGFncy5pbmNsdWRlcyhtZXJnZSlcbiAgICAgICAgICAgID8gc2NoZW1hVGFncy5jb25jYXQobWVyZ2UpXG4gICAgICAgICAgICA6IHNjaGVtYVRhZ3Muc2xpY2UoKTtcbiAgICB9XG4gICAgbGV0IHRhZ3MgPSBzY2hlbWFUYWdzO1xuICAgIGlmICghdGFncykge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShjdXN0b21UYWdzKSlcbiAgICAgICAgICAgIHRhZ3MgPSBbXTtcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBrZXlzID0gQXJyYXkuZnJvbShzY2hlbWFzLmtleXMoKSlcbiAgICAgICAgICAgICAgICAuZmlsdGVyKGtleSA9PiBrZXkgIT09ICd5YW1sMTEnKVxuICAgICAgICAgICAgICAgIC5tYXAoa2V5ID0+IEpTT04uc3RyaW5naWZ5KGtleSkpXG4gICAgICAgICAgICAgICAgLmpvaW4oJywgJyk7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gc2NoZW1hIFwiJHtzY2hlbWFOYW1lfVwiOyB1c2Ugb25lIG9mICR7a2V5c30gb3IgZGVmaW5lIGN1c3RvbVRhZ3MgYXJyYXlgKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoQXJyYXkuaXNBcnJheShjdXN0b21UYWdzKSkge1xuICAgICAgICBmb3IgKGNvbnN0IHRhZyBvZiBjdXN0b21UYWdzKVxuICAgICAgICAgICAgdGFncyA9IHRhZ3MuY29uY2F0KHRhZyk7XG4gICAgfVxuICAgIGVsc2UgaWYgKHR5cGVvZiBjdXN0b21UYWdzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRhZ3MgPSBjdXN0b21UYWdzKHRhZ3Muc2xpY2UoKSk7XG4gICAgfVxuICAgIGlmIChhZGRNZXJnZVRhZylcbiAgICAgICAgdGFncyA9IHRhZ3MuY29uY2F0KG1lcmdlKTtcbiAgICByZXR1cm4gdGFncy5yZWR1Y2UoKHRhZ3MsIHRhZykgPT4ge1xuICAgICAgICBjb25zdCB0YWdPYmogPSB0eXBlb2YgdGFnID09PSAnc3RyaW5nJyA/IHRhZ3NCeU5hbWVbdGFnXSA6IHRhZztcbiAgICAgICAgaWYgKCF0YWdPYmopIHtcbiAgICAgICAgICAgIGNvbnN0IHRhZ05hbWUgPSBKU09OLnN0cmluZ2lmeSh0YWcpO1xuICAgICAgICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHRhZ3NCeU5hbWUpXG4gICAgICAgICAgICAgICAgLm1hcChrZXkgPT4gSlNPTi5zdHJpbmdpZnkoa2V5KSlcbiAgICAgICAgICAgICAgICAuam9pbignLCAnKTtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBjdXN0b20gdGFnICR7dGFnTmFtZX07IHVzZSBvbmUgb2YgJHtrZXlzfWApO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGFncy5pbmNsdWRlcyh0YWdPYmopKVxuICAgICAgICAgICAgdGFncy5wdXNoKHRhZ09iaik7XG4gICAgICAgIHJldHVybiB0YWdzO1xuICAgIH0sIFtdKTtcbn1cblxuZXhwb3J0IHsgY29yZUtub3duVGFncywgZ2V0VGFncyB9O1xuIiwgImltcG9ydCB7IE1BUCwgU0NBTEFSLCBTRVEgfSBmcm9tICcuLi9ub2Rlcy9pZGVudGl0eS5qcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICcuL2NvbW1vbi9tYXAuanMnO1xuaW1wb3J0IHsgc2VxIH0gZnJvbSAnLi9jb21tb24vc2VxLmpzJztcbmltcG9ydCB7IHN0cmluZyB9IGZyb20gJy4vY29tbW9uL3N0cmluZy5qcyc7XG5pbXBvcnQgeyBnZXRUYWdzLCBjb3JlS25vd25UYWdzIH0gZnJvbSAnLi90YWdzLmpzJztcblxuY29uc3Qgc29ydE1hcEVudHJpZXNCeUtleSA9IChhLCBiKSA9PiBhLmtleSA8IGIua2V5ID8gLTEgOiBhLmtleSA+IGIua2V5ID8gMSA6IDA7XG5jbGFzcyBTY2hlbWEge1xuICAgIGNvbnN0cnVjdG9yKHsgY29tcGF0LCBjdXN0b21UYWdzLCBtZXJnZSwgcmVzb2x2ZUtub3duVGFncywgc2NoZW1hLCBzb3J0TWFwRW50cmllcywgdG9TdHJpbmdEZWZhdWx0cyB9KSB7XG4gICAgICAgIHRoaXMuY29tcGF0ID0gQXJyYXkuaXNBcnJheShjb21wYXQpXG4gICAgICAgICAgICA/IGdldFRhZ3MoY29tcGF0LCAnY29tcGF0JylcbiAgICAgICAgICAgIDogY29tcGF0XG4gICAgICAgICAgICAgICAgPyBnZXRUYWdzKG51bGwsIGNvbXBhdClcbiAgICAgICAgICAgICAgICA6IG51bGw7XG4gICAgICAgIHRoaXMubmFtZSA9ICh0eXBlb2Ygc2NoZW1hID09PSAnc3RyaW5nJyAmJiBzY2hlbWEpIHx8ICdjb3JlJztcbiAgICAgICAgdGhpcy5rbm93blRhZ3MgPSByZXNvbHZlS25vd25UYWdzID8gY29yZUtub3duVGFncyA6IHt9O1xuICAgICAgICB0aGlzLnRhZ3MgPSBnZXRUYWdzKGN1c3RvbVRhZ3MsIHRoaXMubmFtZSwgbWVyZ2UpO1xuICAgICAgICB0aGlzLnRvU3RyaW5nT3B0aW9ucyA9IHRvU3RyaW5nRGVmYXVsdHMgPz8gbnVsbDtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIE1BUCwgeyB2YWx1ZTogbWFwIH0pO1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgU0NBTEFSLCB7IHZhbHVlOiBzdHJpbmcgfSk7XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBTRVEsIHsgdmFsdWU6IHNlcSB9KTtcbiAgICAgICAgLy8gVXNlZCBieSBjcmVhdGVNYXAoKVxuICAgICAgICB0aGlzLnNvcnRNYXBFbnRyaWVzID1cbiAgICAgICAgICAgIHR5cGVvZiBzb3J0TWFwRW50cmllcyA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICAgICAgICAgID8gc29ydE1hcEVudHJpZXNcbiAgICAgICAgICAgICAgICA6IHNvcnRNYXBFbnRyaWVzID09PSB0cnVlXG4gICAgICAgICAgICAgICAgICAgID8gc29ydE1hcEVudHJpZXNCeUtleVxuICAgICAgICAgICAgICAgICAgICA6IG51bGw7XG4gICAgfVxuICAgIGNsb25lKCkge1xuICAgICAgICBjb25zdCBjb3B5ID0gT2JqZWN0LmNyZWF0ZShTY2hlbWEucHJvdG90eXBlLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh0aGlzKSk7XG4gICAgICAgIGNvcHkudGFncyA9IHRoaXMudGFncy5zbGljZSgpO1xuICAgICAgICByZXR1cm4gY29weTtcbiAgICB9XG59XG5cbmV4cG9ydCB7IFNjaGVtYSB9O1xuIiwgImltcG9ydCB7IGlzTm9kZSB9IGZyb20gJy4uL25vZGVzL2lkZW50aXR5LmpzJztcbmltcG9ydCB7IGNyZWF0ZVN0cmluZ2lmeUNvbnRleHQsIHN0cmluZ2lmeSB9IGZyb20gJy4vc3RyaW5naWZ5LmpzJztcbmltcG9ydCB7IGluZGVudENvbW1lbnQsIGxpbmVDb21tZW50IH0gZnJvbSAnLi9zdHJpbmdpZnlDb21tZW50LmpzJztcblxuZnVuY3Rpb24gc3RyaW5naWZ5RG9jdW1lbnQoZG9jLCBvcHRpb25zKSB7XG4gICAgY29uc3QgbGluZXMgPSBbXTtcbiAgICBsZXQgaGFzRGlyZWN0aXZlcyA9IG9wdGlvbnMuZGlyZWN0aXZlcyA9PT0gdHJ1ZTtcbiAgICBpZiAob3B0aW9ucy5kaXJlY3RpdmVzICE9PSBmYWxzZSAmJiBkb2MuZGlyZWN0aXZlcykge1xuICAgICAgICBjb25zdCBkaXIgPSBkb2MuZGlyZWN0aXZlcy50b1N0cmluZyhkb2MpO1xuICAgICAgICBpZiAoZGlyKSB7XG4gICAgICAgICAgICBsaW5lcy5wdXNoKGRpcik7XG4gICAgICAgICAgICBoYXNEaXJlY3RpdmVzID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChkb2MuZGlyZWN0aXZlcy5kb2NTdGFydClcbiAgICAgICAgICAgIGhhc0RpcmVjdGl2ZXMgPSB0cnVlO1xuICAgIH1cbiAgICBpZiAoaGFzRGlyZWN0aXZlcylcbiAgICAgICAgbGluZXMucHVzaCgnLS0tJyk7XG4gICAgY29uc3QgY3R4ID0gY3JlYXRlU3RyaW5naWZ5Q29udGV4dChkb2MsIG9wdGlvbnMpO1xuICAgIGNvbnN0IHsgY29tbWVudFN0cmluZyB9ID0gY3R4Lm9wdGlvbnM7XG4gICAgaWYgKGRvYy5jb21tZW50QmVmb3JlKSB7XG4gICAgICAgIGlmIChsaW5lcy5sZW5ndGggIT09IDEpXG4gICAgICAgICAgICBsaW5lcy51bnNoaWZ0KCcnKTtcbiAgICAgICAgY29uc3QgY3MgPSBjb21tZW50U3RyaW5nKGRvYy5jb21tZW50QmVmb3JlKTtcbiAgICAgICAgbGluZXMudW5zaGlmdChpbmRlbnRDb21tZW50KGNzLCAnJykpO1xuICAgIH1cbiAgICBsZXQgY2hvbXBLZWVwID0gZmFsc2U7XG4gICAgbGV0IGNvbnRlbnRDb21tZW50ID0gbnVsbDtcbiAgICBpZiAoZG9jLmNvbnRlbnRzKSB7XG4gICAgICAgIGlmIChpc05vZGUoZG9jLmNvbnRlbnRzKSkge1xuICAgICAgICAgICAgaWYgKGRvYy5jb250ZW50cy5zcGFjZUJlZm9yZSAmJiBoYXNEaXJlY3RpdmVzKVxuICAgICAgICAgICAgICAgIGxpbmVzLnB1c2goJycpO1xuICAgICAgICAgICAgaWYgKGRvYy5jb250ZW50cy5jb21tZW50QmVmb3JlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY3MgPSBjb21tZW50U3RyaW5nKGRvYy5jb250ZW50cy5jb21tZW50QmVmb3JlKTtcbiAgICAgICAgICAgICAgICBsaW5lcy5wdXNoKGluZGVudENvbW1lbnQoY3MsICcnKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyB0b3AtbGV2ZWwgYmxvY2sgc2NhbGFycyBuZWVkIHRvIGJlIGluZGVudGVkIGlmIGZvbGxvd2VkIGJ5IGEgY29tbWVudFxuICAgICAgICAgICAgY3R4LmZvcmNlQmxvY2tJbmRlbnQgPSAhIWRvYy5jb21tZW50O1xuICAgICAgICAgICAgY29udGVudENvbW1lbnQgPSBkb2MuY29udGVudHMuY29tbWVudDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvbkNob21wS2VlcCA9IGNvbnRlbnRDb21tZW50ID8gdW5kZWZpbmVkIDogKCkgPT4gKGNob21wS2VlcCA9IHRydWUpO1xuICAgICAgICBsZXQgYm9keSA9IHN0cmluZ2lmeShkb2MuY29udGVudHMsIGN0eCwgKCkgPT4gKGNvbnRlbnRDb21tZW50ID0gbnVsbCksIG9uQ2hvbXBLZWVwKTtcbiAgICAgICAgaWYgKGNvbnRlbnRDb21tZW50KVxuICAgICAgICAgICAgYm9keSArPSBsaW5lQ29tbWVudChib2R5LCAnJywgY29tbWVudFN0cmluZyhjb250ZW50Q29tbWVudCkpO1xuICAgICAgICBpZiAoKGJvZHlbMF0gPT09ICd8JyB8fCBib2R5WzBdID09PSAnPicpICYmXG4gICAgICAgICAgICBsaW5lc1tsaW5lcy5sZW5ndGggLSAxXSA9PT0gJy0tLScpIHtcbiAgICAgICAgICAgIC8vIFRvcC1sZXZlbCBibG9jayBzY2FsYXJzIHdpdGggYSBwcmVjZWRpbmcgZG9jIG1hcmtlciBvdWdodCB0byB1c2UgdGhlXG4gICAgICAgICAgICAvLyBzYW1lIGxpbmUgZm9yIHRoZWlyIGhlYWRlci5cbiAgICAgICAgICAgIGxpbmVzW2xpbmVzLmxlbmd0aCAtIDFdID0gYC0tLSAke2JvZHl9YDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgICAgICBsaW5lcy5wdXNoKGJvZHkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgbGluZXMucHVzaChzdHJpbmdpZnkoZG9jLmNvbnRlbnRzLCBjdHgpKTtcbiAgICB9XG4gICAgaWYgKGRvYy5kaXJlY3RpdmVzPy5kb2NFbmQpIHtcbiAgICAgICAgaWYgKGRvYy5jb21tZW50KSB7XG4gICAgICAgICAgICBjb25zdCBjcyA9IGNvbW1lbnRTdHJpbmcoZG9jLmNvbW1lbnQpO1xuICAgICAgICAgICAgaWYgKGNzLmluY2x1ZGVzKCdcXG4nKSkge1xuICAgICAgICAgICAgICAgIGxpbmVzLnB1c2goJy4uLicpO1xuICAgICAgICAgICAgICAgIGxpbmVzLnB1c2goaW5kZW50Q29tbWVudChjcywgJycpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGxpbmVzLnB1c2goYC4uLiAke2NzfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgbGluZXMucHVzaCgnLi4uJyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGxldCBkYyA9IGRvYy5jb21tZW50O1xuICAgICAgICBpZiAoZGMgJiYgY2hvbXBLZWVwKVxuICAgICAgICAgICAgZGMgPSBkYy5yZXBsYWNlKC9eXFxuKy8sICcnKTtcbiAgICAgICAgaWYgKGRjKSB7XG4gICAgICAgICAgICBpZiAoKCFjaG9tcEtlZXAgfHwgY29udGVudENvbW1lbnQpICYmIGxpbmVzW2xpbmVzLmxlbmd0aCAtIDFdICE9PSAnJylcbiAgICAgICAgICAgICAgICBsaW5lcy5wdXNoKCcnKTtcbiAgICAgICAgICAgIGxpbmVzLnB1c2goaW5kZW50Q29tbWVudChjb21tZW50U3RyaW5nKGRjKSwgJycpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbGluZXMuam9pbignXFxuJykgKyAnXFxuJztcbn1cblxuZXhwb3J0IHsgc3RyaW5naWZ5RG9jdW1lbnQgfTtcbiIsICJpbXBvcnQgeyBBbGlhcyB9IGZyb20gJy4uL25vZGVzL0FsaWFzLmpzJztcbmltcG9ydCB7IGlzRW1wdHlQYXRoLCBjb2xsZWN0aW9uRnJvbVBhdGggfSBmcm9tICcuLi9ub2Rlcy9Db2xsZWN0aW9uLmpzJztcbmltcG9ydCB7IE5PREVfVFlQRSwgRE9DLCBpc05vZGUsIGlzQ29sbGVjdGlvbiwgaXNTY2FsYXIgfSBmcm9tICcuLi9ub2Rlcy9pZGVudGl0eS5qcyc7XG5pbXBvcnQgeyBQYWlyIH0gZnJvbSAnLi4vbm9kZXMvUGFpci5qcyc7XG5pbXBvcnQgeyB0b0pTIH0gZnJvbSAnLi4vbm9kZXMvdG9KUy5qcyc7XG5pbXBvcnQgeyBTY2hlbWEgfSBmcm9tICcuLi9zY2hlbWEvU2NoZW1hLmpzJztcbmltcG9ydCB7IHN0cmluZ2lmeURvY3VtZW50IH0gZnJvbSAnLi4vc3RyaW5naWZ5L3N0cmluZ2lmeURvY3VtZW50LmpzJztcbmltcG9ydCB7IGFuY2hvck5hbWVzLCBmaW5kTmV3QW5jaG9yLCBjcmVhdGVOb2RlQW5jaG9ycyB9IGZyb20gJy4vYW5jaG9ycy5qcyc7XG5pbXBvcnQgeyBhcHBseVJldml2ZXIgfSBmcm9tICcuL2FwcGx5UmV2aXZlci5qcyc7XG5pbXBvcnQgeyBjcmVhdGVOb2RlIH0gZnJvbSAnLi9jcmVhdGVOb2RlLmpzJztcbmltcG9ydCB7IERpcmVjdGl2ZXMgfSBmcm9tICcuL2RpcmVjdGl2ZXMuanMnO1xuXG5jbGFzcyBEb2N1bWVudCB7XG4gICAgY29uc3RydWN0b3IodmFsdWUsIHJlcGxhY2VyLCBvcHRpb25zKSB7XG4gICAgICAgIC8qKiBBIGNvbW1lbnQgYmVmb3JlIHRoaXMgRG9jdW1lbnQgKi9cbiAgICAgICAgdGhpcy5jb21tZW50QmVmb3JlID0gbnVsbDtcbiAgICAgICAgLyoqIEEgY29tbWVudCBpbW1lZGlhdGVseSBhZnRlciB0aGlzIERvY3VtZW50ICovXG4gICAgICAgIHRoaXMuY29tbWVudCA9IG51bGw7XG4gICAgICAgIC8qKiBFcnJvcnMgZW5jb3VudGVyZWQgZHVyaW5nIHBhcnNpbmcuICovXG4gICAgICAgIHRoaXMuZXJyb3JzID0gW107XG4gICAgICAgIC8qKiBXYXJuaW5ncyBlbmNvdW50ZXJlZCBkdXJpbmcgcGFyc2luZy4gKi9cbiAgICAgICAgdGhpcy53YXJuaW5ncyA9IFtdO1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgTk9ERV9UWVBFLCB7IHZhbHVlOiBET0MgfSk7XG4gICAgICAgIGxldCBfcmVwbGFjZXIgPSBudWxsO1xuICAgICAgICBpZiAodHlwZW9mIHJlcGxhY2VyID09PSAnZnVuY3Rpb24nIHx8IEFycmF5LmlzQXJyYXkocmVwbGFjZXIpKSB7XG4gICAgICAgICAgICBfcmVwbGFjZXIgPSByZXBsYWNlcjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQgJiYgcmVwbGFjZXIpIHtcbiAgICAgICAgICAgIG9wdGlvbnMgPSByZXBsYWNlcjtcbiAgICAgICAgICAgIHJlcGxhY2VyID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG9wdCA9IE9iamVjdC5hc3NpZ24oe1xuICAgICAgICAgICAgaW50QXNCaWdJbnQ6IGZhbHNlLFxuICAgICAgICAgICAga2VlcFNvdXJjZVRva2VuczogZmFsc2UsXG4gICAgICAgICAgICBsb2dMZXZlbDogJ3dhcm4nLFxuICAgICAgICAgICAgcHJldHR5RXJyb3JzOiB0cnVlLFxuICAgICAgICAgICAgc3RyaWN0OiB0cnVlLFxuICAgICAgICAgICAgc3RyaW5nS2V5czogZmFsc2UsXG4gICAgICAgICAgICB1bmlxdWVLZXlzOiB0cnVlLFxuICAgICAgICAgICAgdmVyc2lvbjogJzEuMidcbiAgICAgICAgfSwgb3B0aW9ucyk7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdDtcbiAgICAgICAgbGV0IHsgdmVyc2lvbiB9ID0gb3B0O1xuICAgICAgICBpZiAob3B0aW9ucz8uX2RpcmVjdGl2ZXMpIHtcbiAgICAgICAgICAgIHRoaXMuZGlyZWN0aXZlcyA9IG9wdGlvbnMuX2RpcmVjdGl2ZXMuYXREb2N1bWVudCgpO1xuICAgICAgICAgICAgaWYgKHRoaXMuZGlyZWN0aXZlcy55YW1sLmV4cGxpY2l0KVxuICAgICAgICAgICAgICAgIHZlcnNpb24gPSB0aGlzLmRpcmVjdGl2ZXMueWFtbC52ZXJzaW9uO1xuICAgICAgICB9XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHRoaXMuZGlyZWN0aXZlcyA9IG5ldyBEaXJlY3RpdmVzKHsgdmVyc2lvbiB9KTtcbiAgICAgICAgdGhpcy5zZXRTY2hlbWEodmVyc2lvbiwgb3B0aW9ucyk7XG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgV2UgY2FuJ3QgcmVhbGx5IGtub3cgdGhhdCB0aGlzIG1hdGNoZXMgQ29udGVudHMuXG4gICAgICAgIHRoaXMuY29udGVudHMgPVxuICAgICAgICAgICAgdmFsdWUgPT09IHVuZGVmaW5lZCA/IG51bGwgOiB0aGlzLmNyZWF0ZU5vZGUodmFsdWUsIF9yZXBsYWNlciwgb3B0aW9ucyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENyZWF0ZSBhIGRlZXAgY29weSBvZiB0aGlzIERvY3VtZW50IGFuZCBpdHMgY29udGVudHMuXG4gICAgICpcbiAgICAgKiBDdXN0b20gTm9kZSB2YWx1ZXMgdGhhdCBpbmhlcml0IGZyb20gYE9iamVjdGAgc3RpbGwgcmVmZXIgdG8gdGhlaXIgb3JpZ2luYWwgaW5zdGFuY2VzLlxuICAgICAqL1xuICAgIGNsb25lKCkge1xuICAgICAgICBjb25zdCBjb3B5ID0gT2JqZWN0LmNyZWF0ZShEb2N1bWVudC5wcm90b3R5cGUsIHtcbiAgICAgICAgICAgIFtOT0RFX1RZUEVdOiB7IHZhbHVlOiBET0MgfVxuICAgICAgICB9KTtcbiAgICAgICAgY29weS5jb21tZW50QmVmb3JlID0gdGhpcy5jb21tZW50QmVmb3JlO1xuICAgICAgICBjb3B5LmNvbW1lbnQgPSB0aGlzLmNvbW1lbnQ7XG4gICAgICAgIGNvcHkuZXJyb3JzID0gdGhpcy5lcnJvcnMuc2xpY2UoKTtcbiAgICAgICAgY29weS53YXJuaW5ncyA9IHRoaXMud2FybmluZ3Muc2xpY2UoKTtcbiAgICAgICAgY29weS5vcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5vcHRpb25zKTtcbiAgICAgICAgaWYgKHRoaXMuZGlyZWN0aXZlcylcbiAgICAgICAgICAgIGNvcHkuZGlyZWN0aXZlcyA9IHRoaXMuZGlyZWN0aXZlcy5jbG9uZSgpO1xuICAgICAgICBjb3B5LnNjaGVtYSA9IHRoaXMuc2NoZW1hLmNsb25lKCk7XG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgV2UgY2FuJ3QgcmVhbGx5IGtub3cgdGhhdCB0aGlzIG1hdGNoZXMgQ29udGVudHMuXG4gICAgICAgIGNvcHkuY29udGVudHMgPSBpc05vZGUodGhpcy5jb250ZW50cylcbiAgICAgICAgICAgID8gdGhpcy5jb250ZW50cy5jbG9uZShjb3B5LnNjaGVtYSlcbiAgICAgICAgICAgIDogdGhpcy5jb250ZW50cztcbiAgICAgICAgaWYgKHRoaXMucmFuZ2UpXG4gICAgICAgICAgICBjb3B5LnJhbmdlID0gdGhpcy5yYW5nZS5zbGljZSgpO1xuICAgICAgICByZXR1cm4gY29weTtcbiAgICB9XG4gICAgLyoqIEFkZHMgYSB2YWx1ZSB0byB0aGUgZG9jdW1lbnQuICovXG4gICAgYWRkKHZhbHVlKSB7XG4gICAgICAgIGlmIChhc3NlcnRDb2xsZWN0aW9uKHRoaXMuY29udGVudHMpKVxuICAgICAgICAgICAgdGhpcy5jb250ZW50cy5hZGQodmFsdWUpO1xuICAgIH1cbiAgICAvKiogQWRkcyBhIHZhbHVlIHRvIHRoZSBkb2N1bWVudC4gKi9cbiAgICBhZGRJbihwYXRoLCB2YWx1ZSkge1xuICAgICAgICBpZiAoYXNzZXJ0Q29sbGVjdGlvbih0aGlzLmNvbnRlbnRzKSlcbiAgICAgICAgICAgIHRoaXMuY29udGVudHMuYWRkSW4ocGF0aCwgdmFsdWUpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDcmVhdGUgYSBuZXcgYEFsaWFzYCBub2RlLCBlbnN1cmluZyB0aGF0IHRoZSB0YXJnZXQgYG5vZGVgIGhhcyB0aGUgcmVxdWlyZWQgYW5jaG9yLlxuICAgICAqXG4gICAgICogSWYgYG5vZGVgIGFscmVhZHkgaGFzIGFuIGFuY2hvciwgYG5hbWVgIGlzIGlnbm9yZWQuXG4gICAgICogT3RoZXJ3aXNlLCB0aGUgYG5vZGUuYW5jaG9yYCB2YWx1ZSB3aWxsIGJlIHNldCB0byBgbmFtZWAsXG4gICAgICogb3IgaWYgYW4gYW5jaG9yIHdpdGggdGhhdCBuYW1lIGlzIGFscmVhZHkgcHJlc2VudCBpbiB0aGUgZG9jdW1lbnQsXG4gICAgICogYG5hbWVgIHdpbGwgYmUgdXNlZCBhcyBhIHByZWZpeCBmb3IgYSBuZXcgdW5pcXVlIGFuY2hvci5cbiAgICAgKiBJZiBgbmFtZWAgaXMgdW5kZWZpbmVkLCB0aGUgZ2VuZXJhdGVkIGFuY2hvciB3aWxsIHVzZSAnYScgYXMgYSBwcmVmaXguXG4gICAgICovXG4gICAgY3JlYXRlQWxpYXMobm9kZSwgbmFtZSkge1xuICAgICAgICBpZiAoIW5vZGUuYW5jaG9yKSB7XG4gICAgICAgICAgICBjb25zdCBwcmV2ID0gYW5jaG9yTmFtZXModGhpcyk7XG4gICAgICAgICAgICBub2RlLmFuY2hvciA9XG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9wcmVmZXItbnVsbGlzaC1jb2FsZXNjaW5nXG4gICAgICAgICAgICAgICAgIW5hbWUgfHwgcHJldi5oYXMobmFtZSkgPyBmaW5kTmV3QW5jaG9yKG5hbWUgfHwgJ2EnLCBwcmV2KSA6IG5hbWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBBbGlhcyhub2RlLmFuY2hvcik7XG4gICAgfVxuICAgIGNyZWF0ZU5vZGUodmFsdWUsIHJlcGxhY2VyLCBvcHRpb25zKSB7XG4gICAgICAgIGxldCBfcmVwbGFjZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIGlmICh0eXBlb2YgcmVwbGFjZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHZhbHVlID0gcmVwbGFjZXIuY2FsbCh7ICcnOiB2YWx1ZSB9LCAnJywgdmFsdWUpO1xuICAgICAgICAgICAgX3JlcGxhY2VyID0gcmVwbGFjZXI7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheShyZXBsYWNlcikpIHtcbiAgICAgICAgICAgIGNvbnN0IGtleVRvU3RyID0gKHYpID0+IHR5cGVvZiB2ID09PSAnbnVtYmVyJyB8fCB2IGluc3RhbmNlb2YgU3RyaW5nIHx8IHYgaW5zdGFuY2VvZiBOdW1iZXI7XG4gICAgICAgICAgICBjb25zdCBhc1N0ciA9IHJlcGxhY2VyLmZpbHRlcihrZXlUb1N0cikubWFwKFN0cmluZyk7XG4gICAgICAgICAgICBpZiAoYXNTdHIubGVuZ3RoID4gMClcbiAgICAgICAgICAgICAgICByZXBsYWNlciA9IHJlcGxhY2VyLmNvbmNhdChhc1N0cik7XG4gICAgICAgICAgICBfcmVwbGFjZXIgPSByZXBsYWNlcjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQgJiYgcmVwbGFjZXIpIHtcbiAgICAgICAgICAgIG9wdGlvbnMgPSByZXBsYWNlcjtcbiAgICAgICAgICAgIHJlcGxhY2VyID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHsgYWxpYXNEdXBsaWNhdGVPYmplY3RzLCBhbmNob3JQcmVmaXgsIGZsb3csIGtlZXBVbmRlZmluZWQsIG9uVGFnT2JqLCB0YWcgfSA9IG9wdGlvbnMgPz8ge307XG4gICAgICAgIGNvbnN0IHsgb25BbmNob3IsIHNldEFuY2hvcnMsIHNvdXJjZU9iamVjdHMgfSA9IGNyZWF0ZU5vZGVBbmNob3JzKHRoaXMsIFxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3ByZWZlci1udWxsaXNoLWNvYWxlc2NpbmdcbiAgICAgICAgYW5jaG9yUHJlZml4IHx8ICdhJyk7XG4gICAgICAgIGNvbnN0IGN0eCA9IHtcbiAgICAgICAgICAgIGFsaWFzRHVwbGljYXRlT2JqZWN0czogYWxpYXNEdXBsaWNhdGVPYmplY3RzID8/IHRydWUsXG4gICAgICAgICAgICBrZWVwVW5kZWZpbmVkOiBrZWVwVW5kZWZpbmVkID8/IGZhbHNlLFxuICAgICAgICAgICAgb25BbmNob3IsXG4gICAgICAgICAgICBvblRhZ09iaixcbiAgICAgICAgICAgIHJlcGxhY2VyOiBfcmVwbGFjZXIsXG4gICAgICAgICAgICBzY2hlbWE6IHRoaXMuc2NoZW1hLFxuICAgICAgICAgICAgc291cmNlT2JqZWN0c1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCBub2RlID0gY3JlYXRlTm9kZSh2YWx1ZSwgdGFnLCBjdHgpO1xuICAgICAgICBpZiAoZmxvdyAmJiBpc0NvbGxlY3Rpb24obm9kZSkpXG4gICAgICAgICAgICBub2RlLmZsb3cgPSB0cnVlO1xuICAgICAgICBzZXRBbmNob3JzKCk7XG4gICAgICAgIHJldHVybiBub2RlO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0IGEga2V5IGFuZCBhIHZhbHVlIGludG8gYSBgUGFpcmAgdXNpbmcgdGhlIGN1cnJlbnQgc2NoZW1hLFxuICAgICAqIHJlY3Vyc2l2ZWx5IHdyYXBwaW5nIGFsbCB2YWx1ZXMgYXMgYFNjYWxhcmAgb3IgYENvbGxlY3Rpb25gIG5vZGVzLlxuICAgICAqL1xuICAgIGNyZWF0ZVBhaXIoa2V5LCB2YWx1ZSwgb3B0aW9ucyA9IHt9KSB7XG4gICAgICAgIGNvbnN0IGsgPSB0aGlzLmNyZWF0ZU5vZGUoa2V5LCBudWxsLCBvcHRpb25zKTtcbiAgICAgICAgY29uc3QgdiA9IHRoaXMuY3JlYXRlTm9kZSh2YWx1ZSwgbnVsbCwgb3B0aW9ucyk7XG4gICAgICAgIHJldHVybiBuZXcgUGFpcihrLCB2KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBhIHZhbHVlIGZyb20gdGhlIGRvY3VtZW50LlxuICAgICAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgaXRlbSB3YXMgZm91bmQgYW5kIHJlbW92ZWQuXG4gICAgICovXG4gICAgZGVsZXRlKGtleSkge1xuICAgICAgICByZXR1cm4gYXNzZXJ0Q29sbGVjdGlvbih0aGlzLmNvbnRlbnRzKSA/IHRoaXMuY29udGVudHMuZGVsZXRlKGtleSkgOiBmYWxzZTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBhIHZhbHVlIGZyb20gdGhlIGRvY3VtZW50LlxuICAgICAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgaXRlbSB3YXMgZm91bmQgYW5kIHJlbW92ZWQuXG4gICAgICovXG4gICAgZGVsZXRlSW4ocGF0aCkge1xuICAgICAgICBpZiAoaXNFbXB0eVBhdGgocGF0aCkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbnRlbnRzID09IG51bGwpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBQcmVzdW1lZCBpbXBvc3NpYmxlIGlmIFN0cmljdCBleHRlbmRzIGZhbHNlXG4gICAgICAgICAgICB0aGlzLmNvbnRlbnRzID0gbnVsbDtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhc3NlcnRDb2xsZWN0aW9uKHRoaXMuY29udGVudHMpXG4gICAgICAgICAgICA/IHRoaXMuY29udGVudHMuZGVsZXRlSW4ocGF0aClcbiAgICAgICAgICAgIDogZmFsc2U7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgaXRlbSBhdCBga2V5YCwgb3IgYHVuZGVmaW5lZGAgaWYgbm90IGZvdW5kLiBCeSBkZWZhdWx0IHVud3JhcHNcbiAgICAgKiBzY2FsYXIgdmFsdWVzIGZyb20gdGhlaXIgc3Vycm91bmRpbmcgbm9kZTsgdG8gZGlzYWJsZSBzZXQgYGtlZXBTY2FsYXJgIHRvXG4gICAgICogYHRydWVgIChjb2xsZWN0aW9ucyBhcmUgYWx3YXlzIHJldHVybmVkIGludGFjdCkuXG4gICAgICovXG4gICAgZ2V0KGtleSwga2VlcFNjYWxhcikge1xuICAgICAgICByZXR1cm4gaXNDb2xsZWN0aW9uKHRoaXMuY29udGVudHMpXG4gICAgICAgICAgICA/IHRoaXMuY29udGVudHMuZ2V0KGtleSwga2VlcFNjYWxhcilcbiAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGl0ZW0gYXQgYHBhdGhgLCBvciBgdW5kZWZpbmVkYCBpZiBub3QgZm91bmQuIEJ5IGRlZmF1bHQgdW53cmFwc1xuICAgICAqIHNjYWxhciB2YWx1ZXMgZnJvbSB0aGVpciBzdXJyb3VuZGluZyBub2RlOyB0byBkaXNhYmxlIHNldCBga2VlcFNjYWxhcmAgdG9cbiAgICAgKiBgdHJ1ZWAgKGNvbGxlY3Rpb25zIGFyZSBhbHdheXMgcmV0dXJuZWQgaW50YWN0KS5cbiAgICAgKi9cbiAgICBnZXRJbihwYXRoLCBrZWVwU2NhbGFyKSB7XG4gICAgICAgIGlmIChpc0VtcHR5UGF0aChwYXRoKSlcbiAgICAgICAgICAgIHJldHVybiAha2VlcFNjYWxhciAmJiBpc1NjYWxhcih0aGlzLmNvbnRlbnRzKVxuICAgICAgICAgICAgICAgID8gdGhpcy5jb250ZW50cy52YWx1ZVxuICAgICAgICAgICAgICAgIDogdGhpcy5jb250ZW50cztcbiAgICAgICAgcmV0dXJuIGlzQ29sbGVjdGlvbih0aGlzLmNvbnRlbnRzKVxuICAgICAgICAgICAgPyB0aGlzLmNvbnRlbnRzLmdldEluKHBhdGgsIGtlZXBTY2FsYXIpXG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIHRoZSBkb2N1bWVudCBpbmNsdWRlcyBhIHZhbHVlIHdpdGggdGhlIGtleSBga2V5YC5cbiAgICAgKi9cbiAgICBoYXMoa2V5KSB7XG4gICAgICAgIHJldHVybiBpc0NvbGxlY3Rpb24odGhpcy5jb250ZW50cykgPyB0aGlzLmNvbnRlbnRzLmhhcyhrZXkpIDogZmFsc2U7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiB0aGUgZG9jdW1lbnQgaW5jbHVkZXMgYSB2YWx1ZSBhdCBgcGF0aGAuXG4gICAgICovXG4gICAgaGFzSW4ocGF0aCkge1xuICAgICAgICBpZiAoaXNFbXB0eVBhdGgocGF0aCkpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb250ZW50cyAhPT0gdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm4gaXNDb2xsZWN0aW9uKHRoaXMuY29udGVudHMpID8gdGhpcy5jb250ZW50cy5oYXNJbihwYXRoKSA6IGZhbHNlO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBTZXRzIGEgdmFsdWUgaW4gdGhpcyBkb2N1bWVudC4gRm9yIGAhIXNldGAsIGB2YWx1ZWAgbmVlZHMgdG8gYmUgYVxuICAgICAqIGJvb2xlYW4gdG8gYWRkL3JlbW92ZSB0aGUgaXRlbSBmcm9tIHRoZSBzZXQuXG4gICAgICovXG4gICAgc2V0KGtleSwgdmFsdWUpIHtcbiAgICAgICAgaWYgKHRoaXMuY29udGVudHMgPT0gbnVsbCkge1xuICAgICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBXZSBjYW4ndCByZWFsbHkga25vdyB0aGF0IHRoaXMgbWF0Y2hlcyBDb250ZW50cy5cbiAgICAgICAgICAgIHRoaXMuY29udGVudHMgPSBjb2xsZWN0aW9uRnJvbVBhdGgodGhpcy5zY2hlbWEsIFtrZXldLCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoYXNzZXJ0Q29sbGVjdGlvbih0aGlzLmNvbnRlbnRzKSkge1xuICAgICAgICAgICAgdGhpcy5jb250ZW50cy5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogU2V0cyBhIHZhbHVlIGluIHRoaXMgZG9jdW1lbnQuIEZvciBgISFzZXRgLCBgdmFsdWVgIG5lZWRzIHRvIGJlIGFcbiAgICAgKiBib29sZWFuIHRvIGFkZC9yZW1vdmUgdGhlIGl0ZW0gZnJvbSB0aGUgc2V0LlxuICAgICAqL1xuICAgIHNldEluKHBhdGgsIHZhbHVlKSB7XG4gICAgICAgIGlmIChpc0VtcHR5UGF0aChwYXRoKSkge1xuICAgICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBXZSBjYW4ndCByZWFsbHkga25vdyB0aGF0IHRoaXMgbWF0Y2hlcyBDb250ZW50cy5cbiAgICAgICAgICAgIHRoaXMuY29udGVudHMgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLmNvbnRlbnRzID09IG51bGwpIHtcbiAgICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgV2UgY2FuJ3QgcmVhbGx5IGtub3cgdGhhdCB0aGlzIG1hdGNoZXMgQ29udGVudHMuXG4gICAgICAgICAgICB0aGlzLmNvbnRlbnRzID0gY29sbGVjdGlvbkZyb21QYXRoKHRoaXMuc2NoZW1hLCBBcnJheS5mcm9tKHBhdGgpLCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoYXNzZXJ0Q29sbGVjdGlvbih0aGlzLmNvbnRlbnRzKSkge1xuICAgICAgICAgICAgdGhpcy5jb250ZW50cy5zZXRJbihwYXRoLCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogQ2hhbmdlIHRoZSBZQU1MIHZlcnNpb24gYW5kIHNjaGVtYSB1c2VkIGJ5IHRoZSBkb2N1bWVudC5cbiAgICAgKiBBIGBudWxsYCB2ZXJzaW9uIGRpc2FibGVzIHN1cHBvcnQgZm9yIGRpcmVjdGl2ZXMsIGV4cGxpY2l0IHRhZ3MsIGFuY2hvcnMsIGFuZCBhbGlhc2VzLlxuICAgICAqIEl0IGFsc28gcmVxdWlyZXMgdGhlIGBzY2hlbWFgIG9wdGlvbiB0byBiZSBnaXZlbiBhcyBhIGBTY2hlbWFgIGluc3RhbmNlIHZhbHVlLlxuICAgICAqXG4gICAgICogT3ZlcnJpZGVzIGFsbCBwcmV2aW91c2x5IHNldCBzY2hlbWEgb3B0aW9ucy5cbiAgICAgKi9cbiAgICBzZXRTY2hlbWEodmVyc2lvbiwgb3B0aW9ucyA9IHt9KSB7XG4gICAgICAgIGlmICh0eXBlb2YgdmVyc2lvbiA9PT0gJ251bWJlcicpXG4gICAgICAgICAgICB2ZXJzaW9uID0gU3RyaW5nKHZlcnNpb24pO1xuICAgICAgICBsZXQgb3B0O1xuICAgICAgICBzd2l0Y2ggKHZlcnNpb24pIHtcbiAgICAgICAgICAgIGNhc2UgJzEuMSc6XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZGlyZWN0aXZlcylcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXJlY3RpdmVzLnlhbWwudmVyc2lvbiA9ICcxLjEnO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXJlY3RpdmVzID0gbmV3IERpcmVjdGl2ZXMoeyB2ZXJzaW9uOiAnMS4xJyB9KTtcbiAgICAgICAgICAgICAgICBvcHQgPSB7IHJlc29sdmVLbm93blRhZ3M6IGZhbHNlLCBzY2hlbWE6ICd5YW1sLTEuMScgfTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJzEuMic6XG4gICAgICAgICAgICBjYXNlICduZXh0JzpcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kaXJlY3RpdmVzKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRpcmVjdGl2ZXMueWFtbC52ZXJzaW9uID0gdmVyc2lvbjtcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGlyZWN0aXZlcyA9IG5ldyBEaXJlY3RpdmVzKHsgdmVyc2lvbiB9KTtcbiAgICAgICAgICAgICAgICBvcHQgPSB7IHJlc29sdmVLbm93blRhZ3M6IHRydWUsIHNjaGVtYTogJ2NvcmUnIH07XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIG51bGw6XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZGlyZWN0aXZlcylcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMuZGlyZWN0aXZlcztcbiAgICAgICAgICAgICAgICBvcHQgPSBudWxsO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIGNvbnN0IHN2ID0gSlNPTi5zdHJpbmdpZnkodmVyc2lvbik7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAnMS4xJywgJzEuMicgb3IgbnVsbCBhcyBmaXJzdCBhcmd1bWVudCwgYnV0IGZvdW5kOiAke3N2fWApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIE5vdCB1c2luZyBgaW5zdGFuY2VvZiBTY2hlbWFgIHRvIGFsbG93IGZvciBkdWNrIHR5cGluZ1xuICAgICAgICBpZiAob3B0aW9ucy5zY2hlbWEgaW5zdGFuY2VvZiBPYmplY3QpXG4gICAgICAgICAgICB0aGlzLnNjaGVtYSA9IG9wdGlvbnMuc2NoZW1hO1xuICAgICAgICBlbHNlIGlmIChvcHQpXG4gICAgICAgICAgICB0aGlzLnNjaGVtYSA9IG5ldyBTY2hlbWEoT2JqZWN0LmFzc2lnbihvcHQsIG9wdGlvbnMpKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBXaXRoIGEgbnVsbCBZQU1MIHZlcnNpb24sIHRoZSB7IHNjaGVtYTogU2NoZW1hIH0gb3B0aW9uIGlzIHJlcXVpcmVkYCk7XG4gICAgfVxuICAgIC8vIGpzb24gJiBqc29uQXJnIGFyZSBvbmx5IHVzZWQgZnJvbSB0b0pTT04oKVxuICAgIHRvSlMoeyBqc29uLCBqc29uQXJnLCBtYXBBc01hcCwgbWF4QWxpYXNDb3VudCwgb25BbmNob3IsIHJldml2ZXIgfSA9IHt9KSB7XG4gICAgICAgIGNvbnN0IGN0eCA9IHtcbiAgICAgICAgICAgIGFuY2hvcnM6IG5ldyBNYXAoKSxcbiAgICAgICAgICAgIGRvYzogdGhpcyxcbiAgICAgICAgICAgIGtlZXA6ICFqc29uLFxuICAgICAgICAgICAgbWFwQXNNYXA6IG1hcEFzTWFwID09PSB0cnVlLFxuICAgICAgICAgICAgbWFwS2V5V2FybmVkOiBmYWxzZSxcbiAgICAgICAgICAgIG1heEFsaWFzQ291bnQ6IHR5cGVvZiBtYXhBbGlhc0NvdW50ID09PSAnbnVtYmVyJyA/IG1heEFsaWFzQ291bnQgOiAxMDBcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgcmVzID0gdG9KUyh0aGlzLmNvbnRlbnRzLCBqc29uQXJnID8/ICcnLCBjdHgpO1xuICAgICAgICBpZiAodHlwZW9mIG9uQW5jaG9yID09PSAnZnVuY3Rpb24nKVxuICAgICAgICAgICAgZm9yIChjb25zdCB7IGNvdW50LCByZXMgfSBvZiBjdHguYW5jaG9ycy52YWx1ZXMoKSlcbiAgICAgICAgICAgICAgICBvbkFuY2hvcihyZXMsIGNvdW50KTtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiByZXZpdmVyID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICA/IGFwcGx5UmV2aXZlcihyZXZpdmVyLCB7ICcnOiByZXMgfSwgJycsIHJlcylcbiAgICAgICAgICAgIDogcmVzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBIEpTT04gcmVwcmVzZW50YXRpb24gb2YgdGhlIGRvY3VtZW50IGBjb250ZW50c2AuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ganNvbkFyZyBVc2VkIGJ5IGBKU09OLnN0cmluZ2lmeWAgdG8gaW5kaWNhdGUgdGhlIGFycmF5IGluZGV4IG9yXG4gICAgICogICBwcm9wZXJ0eSBuYW1lLlxuICAgICAqL1xuICAgIHRvSlNPTihqc29uQXJnLCBvbkFuY2hvcikge1xuICAgICAgICByZXR1cm4gdGhpcy50b0pTKHsganNvbjogdHJ1ZSwganNvbkFyZywgbWFwQXNNYXA6IGZhbHNlLCBvbkFuY2hvciB9KTtcbiAgICB9XG4gICAgLyoqIEEgWUFNTCByZXByZXNlbnRhdGlvbiBvZiB0aGUgZG9jdW1lbnQuICovXG4gICAgdG9TdHJpbmcob3B0aW9ucyA9IHt9KSB7XG4gICAgICAgIGlmICh0aGlzLmVycm9ycy5sZW5ndGggPiAwKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdEb2N1bWVudCB3aXRoIGVycm9ycyBjYW5ub3QgYmUgc3RyaW5naWZpZWQnKTtcbiAgICAgICAgaWYgKCdpbmRlbnQnIGluIG9wdGlvbnMgJiZcbiAgICAgICAgICAgICghTnVtYmVyLmlzSW50ZWdlcihvcHRpb25zLmluZGVudCkgfHwgTnVtYmVyKG9wdGlvbnMuaW5kZW50KSA8PSAwKSkge1xuICAgICAgICAgICAgY29uc3QgcyA9IEpTT04uc3RyaW5naWZ5KG9wdGlvbnMuaW5kZW50KTtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgXCJpbmRlbnRcIiBvcHRpb24gbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIsIG5vdCAke3N9YCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN0cmluZ2lmeURvY3VtZW50KHRoaXMsIG9wdGlvbnMpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGFzc2VydENvbGxlY3Rpb24oY29udGVudHMpIHtcbiAgICBpZiAoaXNDb2xsZWN0aW9uKGNvbnRlbnRzKSlcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCBhIFlBTUwgY29sbGVjdGlvbiBhcyBkb2N1bWVudCBjb250ZW50cycpO1xufVxuXG5leHBvcnQgeyBEb2N1bWVudCB9O1xuIiwgImNsYXNzIFlBTUxFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgICBjb25zdHJ1Y3RvcihuYW1lLCBwb3MsIGNvZGUsIG1lc3NhZ2UpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICAgICAgdGhpcy5jb2RlID0gY29kZTtcbiAgICAgICAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZTtcbiAgICAgICAgdGhpcy5wb3MgPSBwb3M7XG4gICAgfVxufVxuY2xhc3MgWUFNTFBhcnNlRXJyb3IgZXh0ZW5kcyBZQU1MRXJyb3Ige1xuICAgIGNvbnN0cnVjdG9yKHBvcywgY29kZSwgbWVzc2FnZSkge1xuICAgICAgICBzdXBlcignWUFNTFBhcnNlRXJyb3InLCBwb3MsIGNvZGUsIG1lc3NhZ2UpO1xuICAgIH1cbn1cbmNsYXNzIFlBTUxXYXJuaW5nIGV4dGVuZHMgWUFNTEVycm9yIHtcbiAgICBjb25zdHJ1Y3Rvcihwb3MsIGNvZGUsIG1lc3NhZ2UpIHtcbiAgICAgICAgc3VwZXIoJ1lBTUxXYXJuaW5nJywgcG9zLCBjb2RlLCBtZXNzYWdlKTtcbiAgICB9XG59XG5jb25zdCBwcmV0dGlmeUVycm9yID0gKHNyYywgbGMpID0+IChlcnJvcikgPT4ge1xuICAgIGlmIChlcnJvci5wb3NbMF0gPT09IC0xKVxuICAgICAgICByZXR1cm47XG4gICAgZXJyb3IubGluZVBvcyA9IGVycm9yLnBvcy5tYXAocG9zID0+IGxjLmxpbmVQb3MocG9zKSk7XG4gICAgY29uc3QgeyBsaW5lLCBjb2wgfSA9IGVycm9yLmxpbmVQb3NbMF07XG4gICAgZXJyb3IubWVzc2FnZSArPSBgIGF0IGxpbmUgJHtsaW5lfSwgY29sdW1uICR7Y29sfWA7XG4gICAgbGV0IGNpID0gY29sIC0gMTtcbiAgICBsZXQgbGluZVN0ciA9IHNyY1xuICAgICAgICAuc3Vic3RyaW5nKGxjLmxpbmVTdGFydHNbbGluZSAtIDFdLCBsYy5saW5lU3RhcnRzW2xpbmVdKVxuICAgICAgICAucmVwbGFjZSgvW1xcblxccl0rJC8sICcnKTtcbiAgICAvLyBUcmltIHRvIG1heCA4MCBjaGFycywga2VlcGluZyBjb2wgcG9zaXRpb24gbmVhciB0aGUgbWlkZGxlXG4gICAgaWYgKGNpID49IDYwICYmIGxpbmVTdHIubGVuZ3RoID4gODApIHtcbiAgICAgICAgY29uc3QgdHJpbVN0YXJ0ID0gTWF0aC5taW4oY2kgLSAzOSwgbGluZVN0ci5sZW5ndGggLSA3OSk7XG4gICAgICAgIGxpbmVTdHIgPSAnXHUyMDI2JyArIGxpbmVTdHIuc3Vic3RyaW5nKHRyaW1TdGFydCk7XG4gICAgICAgIGNpIC09IHRyaW1TdGFydCAtIDE7XG4gICAgfVxuICAgIGlmIChsaW5lU3RyLmxlbmd0aCA+IDgwKVxuICAgICAgICBsaW5lU3RyID0gbGluZVN0ci5zdWJzdHJpbmcoMCwgNzkpICsgJ1x1MjAyNic7XG4gICAgLy8gSW5jbHVkZSBwcmV2aW91cyBsaW5lIGluIGNvbnRleHQgaWYgcG9pbnRpbmcgYXQgbGluZSBzdGFydFxuICAgIGlmIChsaW5lID4gMSAmJiAvXiAqJC8udGVzdChsaW5lU3RyLnN1YnN0cmluZygwLCBjaSkpKSB7XG4gICAgICAgIC8vIFJlZ2V4cCB3b24ndCBtYXRjaCBpZiBzdGFydCBpcyB0cmltbWVkXG4gICAgICAgIGxldCBwcmV2ID0gc3JjLnN1YnN0cmluZyhsYy5saW5lU3RhcnRzW2xpbmUgLSAyXSwgbGMubGluZVN0YXJ0c1tsaW5lIC0gMV0pO1xuICAgICAgICBpZiAocHJldi5sZW5ndGggPiA4MClcbiAgICAgICAgICAgIHByZXYgPSBwcmV2LnN1YnN0cmluZygwLCA3OSkgKyAnXHUyMDI2XFxuJztcbiAgICAgICAgbGluZVN0ciA9IHByZXYgKyBsaW5lU3RyO1xuICAgIH1cbiAgICBpZiAoL1teIF0vLnRlc3QobGluZVN0cikpIHtcbiAgICAgICAgbGV0IGNvdW50ID0gMTtcbiAgICAgICAgY29uc3QgZW5kID0gZXJyb3IubGluZVBvc1sxXTtcbiAgICAgICAgaWYgKGVuZCAmJiBlbmQubGluZSA9PT0gbGluZSAmJiBlbmQuY29sID4gY29sKSB7XG4gICAgICAgICAgICBjb3VudCA9IE1hdGgubWF4KDEsIE1hdGgubWluKGVuZC5jb2wgLSBjb2wsIDgwIC0gY2kpKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwb2ludGVyID0gJyAnLnJlcGVhdChjaSkgKyAnXicucmVwZWF0KGNvdW50KTtcbiAgICAgICAgZXJyb3IubWVzc2FnZSArPSBgOlxcblxcbiR7bGluZVN0cn1cXG4ke3BvaW50ZXJ9XFxuYDtcbiAgICB9XG59O1xuXG5leHBvcnQgeyBZQU1MRXJyb3IsIFlBTUxQYXJzZUVycm9yLCBZQU1MV2FybmluZywgcHJldHRpZnlFcnJvciB9O1xuIiwgImZ1bmN0aW9uIHJlc29sdmVQcm9wcyh0b2tlbnMsIHsgZmxvdywgaW5kaWNhdG9yLCBuZXh0LCBvZmZzZXQsIG9uRXJyb3IsIHBhcmVudEluZGVudCwgc3RhcnRPbk5ld2xpbmUgfSkge1xuICAgIGxldCBzcGFjZUJlZm9yZSA9IGZhbHNlO1xuICAgIGxldCBhdE5ld2xpbmUgPSBzdGFydE9uTmV3bGluZTtcbiAgICBsZXQgaGFzU3BhY2UgPSBzdGFydE9uTmV3bGluZTtcbiAgICBsZXQgY29tbWVudCA9ICcnO1xuICAgIGxldCBjb21tZW50U2VwID0gJyc7XG4gICAgbGV0IGhhc05ld2xpbmUgPSBmYWxzZTtcbiAgICBsZXQgcmVxU3BhY2UgPSBmYWxzZTtcbiAgICBsZXQgdGFiID0gbnVsbDtcbiAgICBsZXQgYW5jaG9yID0gbnVsbDtcbiAgICBsZXQgdGFnID0gbnVsbDtcbiAgICBsZXQgbmV3bGluZUFmdGVyUHJvcCA9IG51bGw7XG4gICAgbGV0IGNvbW1hID0gbnVsbDtcbiAgICBsZXQgZm91bmQgPSBudWxsO1xuICAgIGxldCBzdGFydCA9IG51bGw7XG4gICAgZm9yIChjb25zdCB0b2tlbiBvZiB0b2tlbnMpIHtcbiAgICAgICAgaWYgKHJlcVNwYWNlKSB7XG4gICAgICAgICAgICBpZiAodG9rZW4udHlwZSAhPT0gJ3NwYWNlJyAmJlxuICAgICAgICAgICAgICAgIHRva2VuLnR5cGUgIT09ICduZXdsaW5lJyAmJlxuICAgICAgICAgICAgICAgIHRva2VuLnR5cGUgIT09ICdjb21tYScpXG4gICAgICAgICAgICAgICAgb25FcnJvcih0b2tlbi5vZmZzZXQsICdNSVNTSU5HX0NIQVInLCAnVGFncyBhbmQgYW5jaG9ycyBtdXN0IGJlIHNlcGFyYXRlZCBmcm9tIHRoZSBuZXh0IHRva2VuIGJ5IHdoaXRlIHNwYWNlJyk7XG4gICAgICAgICAgICByZXFTcGFjZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0YWIpIHtcbiAgICAgICAgICAgIGlmIChhdE5ld2xpbmUgJiYgdG9rZW4udHlwZSAhPT0gJ2NvbW1lbnQnICYmIHRva2VuLnR5cGUgIT09ICduZXdsaW5lJykge1xuICAgICAgICAgICAgICAgIG9uRXJyb3IodGFiLCAnVEFCX0FTX0lOREVOVCcsICdUYWJzIGFyZSBub3QgYWxsb3dlZCBhcyBpbmRlbnRhdGlvbicpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGFiID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBzd2l0Y2ggKHRva2VuLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ3NwYWNlJzpcbiAgICAgICAgICAgICAgICAvLyBBdCB0aGUgZG9jIGxldmVsLCB0YWJzIGF0IGxpbmUgc3RhcnQgbWF5IGJlIHBhcnNlZFxuICAgICAgICAgICAgICAgIC8vIGFzIGxlYWRpbmcgd2hpdGUgc3BhY2UgcmF0aGVyIHRoYW4gaW5kZW50YXRpb24uXG4gICAgICAgICAgICAgICAgLy8gSW4gYSBmbG93IGNvbGxlY3Rpb24sIG9ubHkgdGhlIHBhcnNlciBoYW5kbGVzIGluZGVudC5cbiAgICAgICAgICAgICAgICBpZiAoIWZsb3cgJiZcbiAgICAgICAgICAgICAgICAgICAgKGluZGljYXRvciAhPT0gJ2RvYy1zdGFydCcgfHwgbmV4dD8udHlwZSAhPT0gJ2Zsb3ctY29sbGVjdGlvbicpICYmXG4gICAgICAgICAgICAgICAgICAgIHRva2VuLnNvdXJjZS5pbmNsdWRlcygnXFx0JykpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFiID0gdG9rZW47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGhhc1NwYWNlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2NvbW1lbnQnOiB7XG4gICAgICAgICAgICAgICAgaWYgKCFoYXNTcGFjZSlcbiAgICAgICAgICAgICAgICAgICAgb25FcnJvcih0b2tlbiwgJ01JU1NJTkdfQ0hBUicsICdDb21tZW50cyBtdXN0IGJlIHNlcGFyYXRlZCBmcm9tIG90aGVyIHRva2VucyBieSB3aGl0ZSBzcGFjZSBjaGFyYWN0ZXJzJyk7XG4gICAgICAgICAgICAgICAgY29uc3QgY2IgPSB0b2tlbi5zb3VyY2Uuc3Vic3RyaW5nKDEpIHx8ICcgJztcbiAgICAgICAgICAgICAgICBpZiAoIWNvbW1lbnQpXG4gICAgICAgICAgICAgICAgICAgIGNvbW1lbnQgPSBjYjtcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGNvbW1lbnQgKz0gY29tbWVudFNlcCArIGNiO1xuICAgICAgICAgICAgICAgIGNvbW1lbnRTZXAgPSAnJztcbiAgICAgICAgICAgICAgICBhdE5ld2xpbmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ25ld2xpbmUnOlxuICAgICAgICAgICAgICAgIGlmIChhdE5ld2xpbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbW1lbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21tZW50ICs9IHRva2VuLnNvdXJjZTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgc3BhY2VCZWZvcmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGNvbW1lbnRTZXAgKz0gdG9rZW4uc291cmNlO1xuICAgICAgICAgICAgICAgIGF0TmV3bGluZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgaGFzTmV3bGluZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgaWYgKGFuY2hvciB8fCB0YWcpXG4gICAgICAgICAgICAgICAgICAgIG5ld2xpbmVBZnRlclByb3AgPSB0b2tlbjtcbiAgICAgICAgICAgICAgICBoYXNTcGFjZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdhbmNob3InOlxuICAgICAgICAgICAgICAgIGlmIChhbmNob3IpXG4gICAgICAgICAgICAgICAgICAgIG9uRXJyb3IodG9rZW4sICdNVUxUSVBMRV9BTkNIT1JTJywgJ0Egbm9kZSBjYW4gaGF2ZSBhdCBtb3N0IG9uZSBhbmNob3InKTtcbiAgICAgICAgICAgICAgICBpZiAodG9rZW4uc291cmNlLmVuZHNXaXRoKCc6JykpXG4gICAgICAgICAgICAgICAgICAgIG9uRXJyb3IodG9rZW4ub2Zmc2V0ICsgdG9rZW4uc291cmNlLmxlbmd0aCAtIDEsICdCQURfQUxJQVMnLCAnQW5jaG9yIGVuZGluZyBpbiA6IGlzIGFtYmlndW91cycsIHRydWUpO1xuICAgICAgICAgICAgICAgIGFuY2hvciA9IHRva2VuO1xuICAgICAgICAgICAgICAgIGlmIChzdGFydCA9PT0gbnVsbClcbiAgICAgICAgICAgICAgICAgICAgc3RhcnQgPSB0b2tlbi5vZmZzZXQ7XG4gICAgICAgICAgICAgICAgYXROZXdsaW5lID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaGFzU3BhY2UgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICByZXFTcGFjZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd0YWcnOiB7XG4gICAgICAgICAgICAgICAgaWYgKHRhZylcbiAgICAgICAgICAgICAgICAgICAgb25FcnJvcih0b2tlbiwgJ01VTFRJUExFX1RBR1MnLCAnQSBub2RlIGNhbiBoYXZlIGF0IG1vc3Qgb25lIHRhZycpO1xuICAgICAgICAgICAgICAgIHRhZyA9IHRva2VuO1xuICAgICAgICAgICAgICAgIGlmIChzdGFydCA9PT0gbnVsbClcbiAgICAgICAgICAgICAgICAgICAgc3RhcnQgPSB0b2tlbi5vZmZzZXQ7XG4gICAgICAgICAgICAgICAgYXROZXdsaW5lID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaGFzU3BhY2UgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICByZXFTcGFjZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIGluZGljYXRvcjpcbiAgICAgICAgICAgICAgICAvLyBDb3VsZCBoZXJlIGhhbmRsZSBwcmVjZWRpbmcgY29tbWVudHMgZGlmZmVyZW50bHlcbiAgICAgICAgICAgICAgICBpZiAoYW5jaG9yIHx8IHRhZylcbiAgICAgICAgICAgICAgICAgICAgb25FcnJvcih0b2tlbiwgJ0JBRF9QUk9QX09SREVSJywgYEFuY2hvcnMgYW5kIHRhZ3MgbXVzdCBiZSBhZnRlciB0aGUgJHt0b2tlbi5zb3VyY2V9IGluZGljYXRvcmApO1xuICAgICAgICAgICAgICAgIGlmIChmb3VuZClcbiAgICAgICAgICAgICAgICAgICAgb25FcnJvcih0b2tlbiwgJ1VORVhQRUNURURfVE9LRU4nLCBgVW5leHBlY3RlZCAke3Rva2VuLnNvdXJjZX0gaW4gJHtmbG93ID8/ICdjb2xsZWN0aW9uJ31gKTtcbiAgICAgICAgICAgICAgICBmb3VuZCA9IHRva2VuO1xuICAgICAgICAgICAgICAgIGF0TmV3bGluZSA9XG4gICAgICAgICAgICAgICAgICAgIGluZGljYXRvciA9PT0gJ3NlcS1pdGVtLWluZCcgfHwgaW5kaWNhdG9yID09PSAnZXhwbGljaXQta2V5LWluZCc7XG4gICAgICAgICAgICAgICAgaGFzU3BhY2UgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2NvbW1hJzpcbiAgICAgICAgICAgICAgICBpZiAoZmxvdykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoY29tbWEpXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkVycm9yKHRva2VuLCAnVU5FWFBFQ1RFRF9UT0tFTicsIGBVbmV4cGVjdGVkICwgaW4gJHtmbG93fWApO1xuICAgICAgICAgICAgICAgICAgICBjb21tYSA9IHRva2VuO1xuICAgICAgICAgICAgICAgICAgICBhdE5ld2xpbmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgaGFzU3BhY2UgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gZWxzZSBmYWxsdGhyb3VnaFxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBvbkVycm9yKHRva2VuLCAnVU5FWFBFQ1RFRF9UT0tFTicsIGBVbmV4cGVjdGVkICR7dG9rZW4udHlwZX0gdG9rZW5gKTtcbiAgICAgICAgICAgICAgICBhdE5ld2xpbmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBoYXNTcGFjZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGxhc3QgPSB0b2tlbnNbdG9rZW5zLmxlbmd0aCAtIDFdO1xuICAgIGNvbnN0IGVuZCA9IGxhc3QgPyBsYXN0Lm9mZnNldCArIGxhc3Quc291cmNlLmxlbmd0aCA6IG9mZnNldDtcbiAgICBpZiAocmVxU3BhY2UgJiZcbiAgICAgICAgbmV4dCAmJlxuICAgICAgICBuZXh0LnR5cGUgIT09ICdzcGFjZScgJiZcbiAgICAgICAgbmV4dC50eXBlICE9PSAnbmV3bGluZScgJiZcbiAgICAgICAgbmV4dC50eXBlICE9PSAnY29tbWEnICYmXG4gICAgICAgIChuZXh0LnR5cGUgIT09ICdzY2FsYXInIHx8IG5leHQuc291cmNlICE9PSAnJykpIHtcbiAgICAgICAgb25FcnJvcihuZXh0Lm9mZnNldCwgJ01JU1NJTkdfQ0hBUicsICdUYWdzIGFuZCBhbmNob3JzIG11c3QgYmUgc2VwYXJhdGVkIGZyb20gdGhlIG5leHQgdG9rZW4gYnkgd2hpdGUgc3BhY2UnKTtcbiAgICB9XG4gICAgaWYgKHRhYiAmJlxuICAgICAgICAoKGF0TmV3bGluZSAmJiB0YWIuaW5kZW50IDw9IHBhcmVudEluZGVudCkgfHxcbiAgICAgICAgICAgIG5leHQ/LnR5cGUgPT09ICdibG9jay1tYXAnIHx8XG4gICAgICAgICAgICBuZXh0Py50eXBlID09PSAnYmxvY2stc2VxJykpXG4gICAgICAgIG9uRXJyb3IodGFiLCAnVEFCX0FTX0lOREVOVCcsICdUYWJzIGFyZSBub3QgYWxsb3dlZCBhcyBpbmRlbnRhdGlvbicpO1xuICAgIHJldHVybiB7XG4gICAgICAgIGNvbW1hLFxuICAgICAgICBmb3VuZCxcbiAgICAgICAgc3BhY2VCZWZvcmUsXG4gICAgICAgIGNvbW1lbnQsXG4gICAgICAgIGhhc05ld2xpbmUsXG4gICAgICAgIGFuY2hvcixcbiAgICAgICAgdGFnLFxuICAgICAgICBuZXdsaW5lQWZ0ZXJQcm9wLFxuICAgICAgICBlbmQsXG4gICAgICAgIHN0YXJ0OiBzdGFydCA/PyBlbmRcbiAgICB9O1xufVxuXG5leHBvcnQgeyByZXNvbHZlUHJvcHMgfTtcbiIsICJmdW5jdGlvbiBjb250YWluc05ld2xpbmUoa2V5KSB7XG4gICAgaWYgKCFrZXkpXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIHN3aXRjaCAoa2V5LnR5cGUpIHtcbiAgICAgICAgY2FzZSAnYWxpYXMnOlxuICAgICAgICBjYXNlICdzY2FsYXInOlxuICAgICAgICBjYXNlICdkb3VibGUtcXVvdGVkLXNjYWxhcic6XG4gICAgICAgIGNhc2UgJ3NpbmdsZS1xdW90ZWQtc2NhbGFyJzpcbiAgICAgICAgICAgIGlmIChrZXkuc291cmNlLmluY2x1ZGVzKCdcXG4nKSlcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIGlmIChrZXkuZW5kKVxuICAgICAgICAgICAgICAgIGZvciAoY29uc3Qgc3Qgb2Yga2V5LmVuZClcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0LnR5cGUgPT09ICduZXdsaW5lJylcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICBjYXNlICdmbG93LWNvbGxlY3Rpb24nOlxuICAgICAgICAgICAgZm9yIChjb25zdCBpdCBvZiBrZXkuaXRlbXMpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHN0IG9mIGl0LnN0YXJ0KVxuICAgICAgICAgICAgICAgICAgICBpZiAoc3QudHlwZSA9PT0gJ25ld2xpbmUnKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgaWYgKGl0LnNlcClcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBzdCBvZiBpdC5zZXApXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3QudHlwZSA9PT0gJ25ld2xpbmUnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIGlmIChjb250YWluc05ld2xpbmUoaXQua2V5KSB8fCBjb250YWluc05ld2xpbmUoaXQudmFsdWUpKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbn1cblxuZXhwb3J0IHsgY29udGFpbnNOZXdsaW5lIH07XG4iLCAiaW1wb3J0IHsgY29udGFpbnNOZXdsaW5lIH0gZnJvbSAnLi91dGlsLWNvbnRhaW5zLW5ld2xpbmUuanMnO1xuXG5mdW5jdGlvbiBmbG93SW5kZW50Q2hlY2soaW5kZW50LCBmYywgb25FcnJvcikge1xuICAgIGlmIChmYz8udHlwZSA9PT0gJ2Zsb3ctY29sbGVjdGlvbicpIHtcbiAgICAgICAgY29uc3QgZW5kID0gZmMuZW5kWzBdO1xuICAgICAgICBpZiAoZW5kLmluZGVudCA9PT0gaW5kZW50ICYmXG4gICAgICAgICAgICAoZW5kLnNvdXJjZSA9PT0gJ10nIHx8IGVuZC5zb3VyY2UgPT09ICd9JykgJiZcbiAgICAgICAgICAgIGNvbnRhaW5zTmV3bGluZShmYykpIHtcbiAgICAgICAgICAgIGNvbnN0IG1zZyA9ICdGbG93IGVuZCBpbmRpY2F0b3Igc2hvdWxkIGJlIG1vcmUgaW5kZW50ZWQgdGhhbiBwYXJlbnQnO1xuICAgICAgICAgICAgb25FcnJvcihlbmQsICdCQURfSU5ERU5UJywgbXNnLCB0cnVlKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IHsgZmxvd0luZGVudENoZWNrIH07XG4iLCAiaW1wb3J0IHsgaXNTY2FsYXIgfSBmcm9tICcuLi9ub2Rlcy9pZGVudGl0eS5qcyc7XG5cbmZ1bmN0aW9uIG1hcEluY2x1ZGVzKGN0eCwgaXRlbXMsIHNlYXJjaCkge1xuICAgIGNvbnN0IHsgdW5pcXVlS2V5cyB9ID0gY3R4Lm9wdGlvbnM7XG4gICAgaWYgKHVuaXF1ZUtleXMgPT09IGZhbHNlKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgY29uc3QgaXNFcXVhbCA9IHR5cGVvZiB1bmlxdWVLZXlzID09PSAnZnVuY3Rpb24nXG4gICAgICAgID8gdW5pcXVlS2V5c1xuICAgICAgICA6IChhLCBiKSA9PiBhID09PSBiIHx8IChpc1NjYWxhcihhKSAmJiBpc1NjYWxhcihiKSAmJiBhLnZhbHVlID09PSBiLnZhbHVlKTtcbiAgICByZXR1cm4gaXRlbXMuc29tZShwYWlyID0+IGlzRXF1YWwocGFpci5rZXksIHNlYXJjaCkpO1xufVxuXG5leHBvcnQgeyBtYXBJbmNsdWRlcyB9O1xuIiwgImltcG9ydCB7IFBhaXIgfSBmcm9tICcuLi9ub2Rlcy9QYWlyLmpzJztcbmltcG9ydCB7IFlBTUxNYXAgfSBmcm9tICcuLi9ub2Rlcy9ZQU1MTWFwLmpzJztcbmltcG9ydCB7IHJlc29sdmVQcm9wcyB9IGZyb20gJy4vcmVzb2x2ZS1wcm9wcy5qcyc7XG5pbXBvcnQgeyBjb250YWluc05ld2xpbmUgfSBmcm9tICcuL3V0aWwtY29udGFpbnMtbmV3bGluZS5qcyc7XG5pbXBvcnQgeyBmbG93SW5kZW50Q2hlY2sgfSBmcm9tICcuL3V0aWwtZmxvdy1pbmRlbnQtY2hlY2suanMnO1xuaW1wb3J0IHsgbWFwSW5jbHVkZXMgfSBmcm9tICcuL3V0aWwtbWFwLWluY2x1ZGVzLmpzJztcblxuY29uc3Qgc3RhcnRDb2xNc2cgPSAnQWxsIG1hcHBpbmcgaXRlbXMgbXVzdCBzdGFydCBhdCB0aGUgc2FtZSBjb2x1bW4nO1xuZnVuY3Rpb24gcmVzb2x2ZUJsb2NrTWFwKHsgY29tcG9zZU5vZGUsIGNvbXBvc2VFbXB0eU5vZGUgfSwgY3R4LCBibSwgb25FcnJvciwgdGFnKSB7XG4gICAgY29uc3QgTm9kZUNsYXNzID0gdGFnPy5ub2RlQ2xhc3MgPz8gWUFNTE1hcDtcbiAgICBjb25zdCBtYXAgPSBuZXcgTm9kZUNsYXNzKGN0eC5zY2hlbWEpO1xuICAgIGlmIChjdHguYXRSb290KVxuICAgICAgICBjdHguYXRSb290ID0gZmFsc2U7XG4gICAgbGV0IG9mZnNldCA9IGJtLm9mZnNldDtcbiAgICBsZXQgY29tbWVudEVuZCA9IG51bGw7XG4gICAgZm9yIChjb25zdCBjb2xsSXRlbSBvZiBibS5pdGVtcykge1xuICAgICAgICBjb25zdCB7IHN0YXJ0LCBrZXksIHNlcCwgdmFsdWUgfSA9IGNvbGxJdGVtO1xuICAgICAgICAvLyBrZXkgcHJvcGVydGllc1xuICAgICAgICBjb25zdCBrZXlQcm9wcyA9IHJlc29sdmVQcm9wcyhzdGFydCwge1xuICAgICAgICAgICAgaW5kaWNhdG9yOiAnZXhwbGljaXQta2V5LWluZCcsXG4gICAgICAgICAgICBuZXh0OiBrZXkgPz8gc2VwPy5bMF0sXG4gICAgICAgICAgICBvZmZzZXQsXG4gICAgICAgICAgICBvbkVycm9yLFxuICAgICAgICAgICAgcGFyZW50SW5kZW50OiBibS5pbmRlbnQsXG4gICAgICAgICAgICBzdGFydE9uTmV3bGluZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgaW1wbGljaXRLZXkgPSAha2V5UHJvcHMuZm91bmQ7XG4gICAgICAgIGlmIChpbXBsaWNpdEtleSkge1xuICAgICAgICAgICAgaWYgKGtleSkge1xuICAgICAgICAgICAgICAgIGlmIChrZXkudHlwZSA9PT0gJ2Jsb2NrLXNlcScpXG4gICAgICAgICAgICAgICAgICAgIG9uRXJyb3Iob2Zmc2V0LCAnQkxPQ0tfQVNfSU1QTElDSVRfS0VZJywgJ0EgYmxvY2sgc2VxdWVuY2UgbWF5IG5vdCBiZSB1c2VkIGFzIGFuIGltcGxpY2l0IG1hcCBrZXknKTtcbiAgICAgICAgICAgICAgICBlbHNlIGlmICgnaW5kZW50JyBpbiBrZXkgJiYga2V5LmluZGVudCAhPT0gYm0uaW5kZW50KVxuICAgICAgICAgICAgICAgICAgICBvbkVycm9yKG9mZnNldCwgJ0JBRF9JTkRFTlQnLCBzdGFydENvbE1zZyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWtleVByb3BzLmFuY2hvciAmJiAha2V5UHJvcHMudGFnICYmICFzZXApIHtcbiAgICAgICAgICAgICAgICBjb21tZW50RW5kID0ga2V5UHJvcHMuZW5kO1xuICAgICAgICAgICAgICAgIGlmIChrZXlQcm9wcy5jb21tZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChtYXAuY29tbWVudClcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcC5jb21tZW50ICs9ICdcXG4nICsga2V5UHJvcHMuY29tbWVudDtcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgbWFwLmNvbW1lbnQgPSBrZXlQcm9wcy5jb21tZW50O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChrZXlQcm9wcy5uZXdsaW5lQWZ0ZXJQcm9wIHx8IGNvbnRhaW5zTmV3bGluZShrZXkpKSB7XG4gICAgICAgICAgICAgICAgb25FcnJvcihrZXkgPz8gc3RhcnRbc3RhcnQubGVuZ3RoIC0gMV0sICdNVUxUSUxJTkVfSU1QTElDSVRfS0VZJywgJ0ltcGxpY2l0IGtleXMgbmVlZCB0byBiZSBvbiBhIHNpbmdsZSBsaW5lJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoa2V5UHJvcHMuZm91bmQ/LmluZGVudCAhPT0gYm0uaW5kZW50KSB7XG4gICAgICAgICAgICBvbkVycm9yKG9mZnNldCwgJ0JBRF9JTkRFTlQnLCBzdGFydENvbE1zZyk7XG4gICAgICAgIH1cbiAgICAgICAgLy8ga2V5IHZhbHVlXG4gICAgICAgIGN0eC5hdEtleSA9IHRydWU7XG4gICAgICAgIGNvbnN0IGtleVN0YXJ0ID0ga2V5UHJvcHMuZW5kO1xuICAgICAgICBjb25zdCBrZXlOb2RlID0ga2V5XG4gICAgICAgICAgICA/IGNvbXBvc2VOb2RlKGN0eCwga2V5LCBrZXlQcm9wcywgb25FcnJvcilcbiAgICAgICAgICAgIDogY29tcG9zZUVtcHR5Tm9kZShjdHgsIGtleVN0YXJ0LCBzdGFydCwgbnVsbCwga2V5UHJvcHMsIG9uRXJyb3IpO1xuICAgICAgICBpZiAoY3R4LnNjaGVtYS5jb21wYXQpXG4gICAgICAgICAgICBmbG93SW5kZW50Q2hlY2soYm0uaW5kZW50LCBrZXksIG9uRXJyb3IpO1xuICAgICAgICBjdHguYXRLZXkgPSBmYWxzZTtcbiAgICAgICAgaWYgKG1hcEluY2x1ZGVzKGN0eCwgbWFwLml0ZW1zLCBrZXlOb2RlKSlcbiAgICAgICAgICAgIG9uRXJyb3Ioa2V5U3RhcnQsICdEVVBMSUNBVEVfS0VZJywgJ01hcCBrZXlzIG11c3QgYmUgdW5pcXVlJyk7XG4gICAgICAgIC8vIHZhbHVlIHByb3BlcnRpZXNcbiAgICAgICAgY29uc3QgdmFsdWVQcm9wcyA9IHJlc29sdmVQcm9wcyhzZXAgPz8gW10sIHtcbiAgICAgICAgICAgIGluZGljYXRvcjogJ21hcC12YWx1ZS1pbmQnLFxuICAgICAgICAgICAgbmV4dDogdmFsdWUsXG4gICAgICAgICAgICBvZmZzZXQ6IGtleU5vZGUucmFuZ2VbMl0sXG4gICAgICAgICAgICBvbkVycm9yLFxuICAgICAgICAgICAgcGFyZW50SW5kZW50OiBibS5pbmRlbnQsXG4gICAgICAgICAgICBzdGFydE9uTmV3bGluZTogIWtleSB8fCBrZXkudHlwZSA9PT0gJ2Jsb2NrLXNjYWxhcidcbiAgICAgICAgfSk7XG4gICAgICAgIG9mZnNldCA9IHZhbHVlUHJvcHMuZW5kO1xuICAgICAgICBpZiAodmFsdWVQcm9wcy5mb3VuZCkge1xuICAgICAgICAgICAgaWYgKGltcGxpY2l0S2V5KSB7XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlPy50eXBlID09PSAnYmxvY2stbWFwJyAmJiAhdmFsdWVQcm9wcy5oYXNOZXdsaW5lKVxuICAgICAgICAgICAgICAgICAgICBvbkVycm9yKG9mZnNldCwgJ0JMT0NLX0FTX0lNUExJQ0lUX0tFWScsICdOZXN0ZWQgbWFwcGluZ3MgYXJlIG5vdCBhbGxvd2VkIGluIGNvbXBhY3QgbWFwcGluZ3MnKTtcbiAgICAgICAgICAgICAgICBpZiAoY3R4Lm9wdGlvbnMuc3RyaWN0ICYmXG4gICAgICAgICAgICAgICAgICAgIGtleVByb3BzLnN0YXJ0IDwgdmFsdWVQcm9wcy5mb3VuZC5vZmZzZXQgLSAxMDI0KVxuICAgICAgICAgICAgICAgICAgICBvbkVycm9yKGtleU5vZGUucmFuZ2UsICdLRVlfT1ZFUl8xMDI0X0NIQVJTJywgJ1RoZSA6IGluZGljYXRvciBtdXN0IGJlIGF0IG1vc3QgMTAyNCBjaGFycyBhZnRlciB0aGUgc3RhcnQgb2YgYW4gaW1wbGljaXQgYmxvY2sgbWFwcGluZyBrZXknKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIHZhbHVlIHZhbHVlXG4gICAgICAgICAgICBjb25zdCB2YWx1ZU5vZGUgPSB2YWx1ZVxuICAgICAgICAgICAgICAgID8gY29tcG9zZU5vZGUoY3R4LCB2YWx1ZSwgdmFsdWVQcm9wcywgb25FcnJvcilcbiAgICAgICAgICAgICAgICA6IGNvbXBvc2VFbXB0eU5vZGUoY3R4LCBvZmZzZXQsIHNlcCwgbnVsbCwgdmFsdWVQcm9wcywgb25FcnJvcik7XG4gICAgICAgICAgICBpZiAoY3R4LnNjaGVtYS5jb21wYXQpXG4gICAgICAgICAgICAgICAgZmxvd0luZGVudENoZWNrKGJtLmluZGVudCwgdmFsdWUsIG9uRXJyb3IpO1xuICAgICAgICAgICAgb2Zmc2V0ID0gdmFsdWVOb2RlLnJhbmdlWzJdO1xuICAgICAgICAgICAgY29uc3QgcGFpciA9IG5ldyBQYWlyKGtleU5vZGUsIHZhbHVlTm9kZSk7XG4gICAgICAgICAgICBpZiAoY3R4Lm9wdGlvbnMua2VlcFNvdXJjZVRva2VucylcbiAgICAgICAgICAgICAgICBwYWlyLnNyY1Rva2VuID0gY29sbEl0ZW07XG4gICAgICAgICAgICBtYXAuaXRlbXMucHVzaChwYWlyKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIGtleSB3aXRoIG5vIHZhbHVlXG4gICAgICAgICAgICBpZiAoaW1wbGljaXRLZXkpXG4gICAgICAgICAgICAgICAgb25FcnJvcihrZXlOb2RlLnJhbmdlLCAnTUlTU0lOR19DSEFSJywgJ0ltcGxpY2l0IG1hcCBrZXlzIG5lZWQgdG8gYmUgZm9sbG93ZWQgYnkgbWFwIHZhbHVlcycpO1xuICAgICAgICAgICAgaWYgKHZhbHVlUHJvcHMuY29tbWVudCkge1xuICAgICAgICAgICAgICAgIGlmIChrZXlOb2RlLmNvbW1lbnQpXG4gICAgICAgICAgICAgICAgICAgIGtleU5vZGUuY29tbWVudCArPSAnXFxuJyArIHZhbHVlUHJvcHMuY29tbWVudDtcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGtleU5vZGUuY29tbWVudCA9IHZhbHVlUHJvcHMuY29tbWVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHBhaXIgPSBuZXcgUGFpcihrZXlOb2RlKTtcbiAgICAgICAgICAgIGlmIChjdHgub3B0aW9ucy5rZWVwU291cmNlVG9rZW5zKVxuICAgICAgICAgICAgICAgIHBhaXIuc3JjVG9rZW4gPSBjb2xsSXRlbTtcbiAgICAgICAgICAgIG1hcC5pdGVtcy5wdXNoKHBhaXIpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChjb21tZW50RW5kICYmIGNvbW1lbnRFbmQgPCBvZmZzZXQpXG4gICAgICAgIG9uRXJyb3IoY29tbWVudEVuZCwgJ0lNUE9TU0lCTEUnLCAnTWFwIGNvbW1lbnQgd2l0aCB0cmFpbGluZyBjb250ZW50Jyk7XG4gICAgbWFwLnJhbmdlID0gW2JtLm9mZnNldCwgb2Zmc2V0LCBjb21tZW50RW5kID8/IG9mZnNldF07XG4gICAgcmV0dXJuIG1hcDtcbn1cblxuZXhwb3J0IHsgcmVzb2x2ZUJsb2NrTWFwIH07XG4iLCAiaW1wb3J0IHsgWUFNTFNlcSB9IGZyb20gJy4uL25vZGVzL1lBTUxTZXEuanMnO1xuaW1wb3J0IHsgcmVzb2x2ZVByb3BzIH0gZnJvbSAnLi9yZXNvbHZlLXByb3BzLmpzJztcbmltcG9ydCB7IGZsb3dJbmRlbnRDaGVjayB9IGZyb20gJy4vdXRpbC1mbG93LWluZGVudC1jaGVjay5qcyc7XG5cbmZ1bmN0aW9uIHJlc29sdmVCbG9ja1NlcSh7IGNvbXBvc2VOb2RlLCBjb21wb3NlRW1wdHlOb2RlIH0sIGN0eCwgYnMsIG9uRXJyb3IsIHRhZykge1xuICAgIGNvbnN0IE5vZGVDbGFzcyA9IHRhZz8ubm9kZUNsYXNzID8/IFlBTUxTZXE7XG4gICAgY29uc3Qgc2VxID0gbmV3IE5vZGVDbGFzcyhjdHguc2NoZW1hKTtcbiAgICBpZiAoY3R4LmF0Um9vdClcbiAgICAgICAgY3R4LmF0Um9vdCA9IGZhbHNlO1xuICAgIGlmIChjdHguYXRLZXkpXG4gICAgICAgIGN0eC5hdEtleSA9IGZhbHNlO1xuICAgIGxldCBvZmZzZXQgPSBicy5vZmZzZXQ7XG4gICAgbGV0IGNvbW1lbnRFbmQgPSBudWxsO1xuICAgIGZvciAoY29uc3QgeyBzdGFydCwgdmFsdWUgfSBvZiBicy5pdGVtcykge1xuICAgICAgICBjb25zdCBwcm9wcyA9IHJlc29sdmVQcm9wcyhzdGFydCwge1xuICAgICAgICAgICAgaW5kaWNhdG9yOiAnc2VxLWl0ZW0taW5kJyxcbiAgICAgICAgICAgIG5leHQ6IHZhbHVlLFxuICAgICAgICAgICAgb2Zmc2V0LFxuICAgICAgICAgICAgb25FcnJvcixcbiAgICAgICAgICAgIHBhcmVudEluZGVudDogYnMuaW5kZW50LFxuICAgICAgICAgICAgc3RhcnRPbk5ld2xpbmU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICghcHJvcHMuZm91bmQpIHtcbiAgICAgICAgICAgIGlmIChwcm9wcy5hbmNob3IgfHwgcHJvcHMudGFnIHx8IHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlICYmIHZhbHVlLnR5cGUgPT09ICdibG9jay1zZXEnKVxuICAgICAgICAgICAgICAgICAgICBvbkVycm9yKHByb3BzLmVuZCwgJ0JBRF9JTkRFTlQnLCAnQWxsIHNlcXVlbmNlIGl0ZW1zIG11c3Qgc3RhcnQgYXQgdGhlIHNhbWUgY29sdW1uJyk7XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBvbkVycm9yKG9mZnNldCwgJ01JU1NJTkdfQ0hBUicsICdTZXF1ZW5jZSBpdGVtIHdpdGhvdXQgLSBpbmRpY2F0b3InKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbW1lbnRFbmQgPSBwcm9wcy5lbmQ7XG4gICAgICAgICAgICAgICAgaWYgKHByb3BzLmNvbW1lbnQpXG4gICAgICAgICAgICAgICAgICAgIHNlcS5jb21tZW50ID0gcHJvcHMuY29tbWVudDtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBub2RlID0gdmFsdWVcbiAgICAgICAgICAgID8gY29tcG9zZU5vZGUoY3R4LCB2YWx1ZSwgcHJvcHMsIG9uRXJyb3IpXG4gICAgICAgICAgICA6IGNvbXBvc2VFbXB0eU5vZGUoY3R4LCBwcm9wcy5lbmQsIHN0YXJ0LCBudWxsLCBwcm9wcywgb25FcnJvcik7XG4gICAgICAgIGlmIChjdHguc2NoZW1hLmNvbXBhdClcbiAgICAgICAgICAgIGZsb3dJbmRlbnRDaGVjayhicy5pbmRlbnQsIHZhbHVlLCBvbkVycm9yKTtcbiAgICAgICAgb2Zmc2V0ID0gbm9kZS5yYW5nZVsyXTtcbiAgICAgICAgc2VxLml0ZW1zLnB1c2gobm9kZSk7XG4gICAgfVxuICAgIHNlcS5yYW5nZSA9IFticy5vZmZzZXQsIG9mZnNldCwgY29tbWVudEVuZCA/PyBvZmZzZXRdO1xuICAgIHJldHVybiBzZXE7XG59XG5cbmV4cG9ydCB7IHJlc29sdmVCbG9ja1NlcSB9O1xuIiwgImZ1bmN0aW9uIHJlc29sdmVFbmQoZW5kLCBvZmZzZXQsIHJlcVNwYWNlLCBvbkVycm9yKSB7XG4gICAgbGV0IGNvbW1lbnQgPSAnJztcbiAgICBpZiAoZW5kKSB7XG4gICAgICAgIGxldCBoYXNTcGFjZSA9IGZhbHNlO1xuICAgICAgICBsZXQgc2VwID0gJyc7XG4gICAgICAgIGZvciAoY29uc3QgdG9rZW4gb2YgZW5kKSB7XG4gICAgICAgICAgICBjb25zdCB7IHNvdXJjZSwgdHlwZSB9ID0gdG9rZW47XG4gICAgICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdzcGFjZSc6XG4gICAgICAgICAgICAgICAgICAgIGhhc1NwYWNlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnY29tbWVudCc6IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcVNwYWNlICYmICFoYXNTcGFjZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uRXJyb3IodG9rZW4sICdNSVNTSU5HX0NIQVInLCAnQ29tbWVudHMgbXVzdCBiZSBzZXBhcmF0ZWQgZnJvbSBvdGhlciB0b2tlbnMgYnkgd2hpdGUgc3BhY2UgY2hhcmFjdGVycycpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjYiA9IHNvdXJjZS5zdWJzdHJpbmcoMSkgfHwgJyAnO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbW1lbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21tZW50ID0gY2I7XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnQgKz0gc2VwICsgY2I7XG4gICAgICAgICAgICAgICAgICAgIHNlcCA9ICcnO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSAnbmV3bGluZSc6XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb21tZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgc2VwICs9IHNvdXJjZTtcbiAgICAgICAgICAgICAgICAgICAgaGFzU3BhY2UgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBvbkVycm9yKHRva2VuLCAnVU5FWFBFQ1RFRF9UT0tFTicsIGBVbmV4cGVjdGVkICR7dHlwZX0gYXQgbm9kZSBlbmRgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9mZnNldCArPSBzb3VyY2UubGVuZ3RoO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7IGNvbW1lbnQsIG9mZnNldCB9O1xufVxuXG5leHBvcnQgeyByZXNvbHZlRW5kIH07XG4iLCAiaW1wb3J0IHsgaXNQYWlyIH0gZnJvbSAnLi4vbm9kZXMvaWRlbnRpdHkuanMnO1xuaW1wb3J0IHsgUGFpciB9IGZyb20gJy4uL25vZGVzL1BhaXIuanMnO1xuaW1wb3J0IHsgWUFNTE1hcCB9IGZyb20gJy4uL25vZGVzL1lBTUxNYXAuanMnO1xuaW1wb3J0IHsgWUFNTFNlcSB9IGZyb20gJy4uL25vZGVzL1lBTUxTZXEuanMnO1xuaW1wb3J0IHsgcmVzb2x2ZUVuZCB9IGZyb20gJy4vcmVzb2x2ZS1lbmQuanMnO1xuaW1wb3J0IHsgcmVzb2x2ZVByb3BzIH0gZnJvbSAnLi9yZXNvbHZlLXByb3BzLmpzJztcbmltcG9ydCB7IGNvbnRhaW5zTmV3bGluZSB9IGZyb20gJy4vdXRpbC1jb250YWlucy1uZXdsaW5lLmpzJztcbmltcG9ydCB7IG1hcEluY2x1ZGVzIH0gZnJvbSAnLi91dGlsLW1hcC1pbmNsdWRlcy5qcyc7XG5cbmNvbnN0IGJsb2NrTXNnID0gJ0Jsb2NrIGNvbGxlY3Rpb25zIGFyZSBub3QgYWxsb3dlZCB3aXRoaW4gZmxvdyBjb2xsZWN0aW9ucyc7XG5jb25zdCBpc0Jsb2NrID0gKHRva2VuKSA9PiB0b2tlbiAmJiAodG9rZW4udHlwZSA9PT0gJ2Jsb2NrLW1hcCcgfHwgdG9rZW4udHlwZSA9PT0gJ2Jsb2NrLXNlcScpO1xuZnVuY3Rpb24gcmVzb2x2ZUZsb3dDb2xsZWN0aW9uKHsgY29tcG9zZU5vZGUsIGNvbXBvc2VFbXB0eU5vZGUgfSwgY3R4LCBmYywgb25FcnJvciwgdGFnKSB7XG4gICAgY29uc3QgaXNNYXAgPSBmYy5zdGFydC5zb3VyY2UgPT09ICd7JztcbiAgICBjb25zdCBmY05hbWUgPSBpc01hcCA/ICdmbG93IG1hcCcgOiAnZmxvdyBzZXF1ZW5jZSc7XG4gICAgY29uc3QgTm9kZUNsYXNzID0gKHRhZz8ubm9kZUNsYXNzID8/IChpc01hcCA/IFlBTUxNYXAgOiBZQU1MU2VxKSk7XG4gICAgY29uc3QgY29sbCA9IG5ldyBOb2RlQ2xhc3MoY3R4LnNjaGVtYSk7XG4gICAgY29sbC5mbG93ID0gdHJ1ZTtcbiAgICBjb25zdCBhdFJvb3QgPSBjdHguYXRSb290O1xuICAgIGlmIChhdFJvb3QpXG4gICAgICAgIGN0eC5hdFJvb3QgPSBmYWxzZTtcbiAgICBpZiAoY3R4LmF0S2V5KVxuICAgICAgICBjdHguYXRLZXkgPSBmYWxzZTtcbiAgICBsZXQgb2Zmc2V0ID0gZmMub2Zmc2V0ICsgZmMuc3RhcnQuc291cmNlLmxlbmd0aDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZjLml0ZW1zLmxlbmd0aDsgKytpKSB7XG4gICAgICAgIGNvbnN0IGNvbGxJdGVtID0gZmMuaXRlbXNbaV07XG4gICAgICAgIGNvbnN0IHsgc3RhcnQsIGtleSwgc2VwLCB2YWx1ZSB9ID0gY29sbEl0ZW07XG4gICAgICAgIGNvbnN0IHByb3BzID0gcmVzb2x2ZVByb3BzKHN0YXJ0LCB7XG4gICAgICAgICAgICBmbG93OiBmY05hbWUsXG4gICAgICAgICAgICBpbmRpY2F0b3I6ICdleHBsaWNpdC1rZXktaW5kJyxcbiAgICAgICAgICAgIG5leHQ6IGtleSA/PyBzZXA/LlswXSxcbiAgICAgICAgICAgIG9mZnNldCxcbiAgICAgICAgICAgIG9uRXJyb3IsXG4gICAgICAgICAgICBwYXJlbnRJbmRlbnQ6IGZjLmluZGVudCxcbiAgICAgICAgICAgIHN0YXJ0T25OZXdsaW5lOiBmYWxzZVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKCFwcm9wcy5mb3VuZCkge1xuICAgICAgICAgICAgaWYgKCFwcm9wcy5hbmNob3IgJiYgIXByb3BzLnRhZyAmJiAhc2VwICYmICF2YWx1ZSkge1xuICAgICAgICAgICAgICAgIGlmIChpID09PSAwICYmIHByb3BzLmNvbW1hKVxuICAgICAgICAgICAgICAgICAgICBvbkVycm9yKHByb3BzLmNvbW1hLCAnVU5FWFBFQ1RFRF9UT0tFTicsIGBVbmV4cGVjdGVkICwgaW4gJHtmY05hbWV9YCk7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoaSA8IGZjLml0ZW1zLmxlbmd0aCAtIDEpXG4gICAgICAgICAgICAgICAgICAgIG9uRXJyb3IocHJvcHMuc3RhcnQsICdVTkVYUEVDVEVEX1RPS0VOJywgYFVuZXhwZWN0ZWQgZW1wdHkgaXRlbSBpbiAke2ZjTmFtZX1gKTtcbiAgICAgICAgICAgICAgICBpZiAocHJvcHMuY29tbWVudCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoY29sbC5jb21tZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgY29sbC5jb21tZW50ICs9ICdcXG4nICsgcHJvcHMuY29tbWVudDtcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgY29sbC5jb21tZW50ID0gcHJvcHMuY29tbWVudDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb2Zmc2V0ID0gcHJvcHMuZW5kO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFpc01hcCAmJiBjdHgub3B0aW9ucy5zdHJpY3QgJiYgY29udGFpbnNOZXdsaW5lKGtleSkpXG4gICAgICAgICAgICAgICAgb25FcnJvcihrZXksIC8vIGNoZWNrZWQgYnkgY29udGFpbnNOZXdsaW5lKClcbiAgICAgICAgICAgICAgICAnTVVMVElMSU5FX0lNUExJQ0lUX0tFWScsICdJbXBsaWNpdCBrZXlzIG9mIGZsb3cgc2VxdWVuY2UgcGFpcnMgbmVlZCB0byBiZSBvbiBhIHNpbmdsZSBsaW5lJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGkgPT09IDApIHtcbiAgICAgICAgICAgIGlmIChwcm9wcy5jb21tYSlcbiAgICAgICAgICAgICAgICBvbkVycm9yKHByb3BzLmNvbW1hLCAnVU5FWFBFQ1RFRF9UT0tFTicsIGBVbmV4cGVjdGVkICwgaW4gJHtmY05hbWV9YCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAoIXByb3BzLmNvbW1hKVxuICAgICAgICAgICAgICAgIG9uRXJyb3IocHJvcHMuc3RhcnQsICdNSVNTSU5HX0NIQVInLCBgTWlzc2luZyAsIGJldHdlZW4gJHtmY05hbWV9IGl0ZW1zYCk7XG4gICAgICAgICAgICBpZiAocHJvcHMuY29tbWVudCkge1xuICAgICAgICAgICAgICAgIGxldCBwcmV2SXRlbUNvbW1lbnQgPSAnJztcbiAgICAgICAgICAgICAgICBsb29wOiBmb3IgKGNvbnN0IHN0IG9mIHN0YXJ0KSB7XG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoc3QudHlwZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnY29tbWEnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc3BhY2UnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnY29tbWVudCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldkl0ZW1Db21tZW50ID0gc3Quc291cmNlLnN1YnN0cmluZygxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBsb29wO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBsb29wO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChwcmV2SXRlbUNvbW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHByZXYgPSBjb2xsLml0ZW1zW2NvbGwuaXRlbXMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc1BhaXIocHJldikpXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV2ID0gcHJldi52YWx1ZSA/PyBwcmV2LmtleTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByZXYuY29tbWVudClcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXYuY29tbWVudCArPSAnXFxuJyArIHByZXZJdGVtQ29tbWVudDtcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgcHJldi5jb21tZW50ID0gcHJldkl0ZW1Db21tZW50O1xuICAgICAgICAgICAgICAgICAgICBwcm9wcy5jb21tZW50ID0gcHJvcHMuY29tbWVudC5zdWJzdHJpbmcocHJldkl0ZW1Db21tZW50Lmxlbmd0aCArIDEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzTWFwICYmICFzZXAgJiYgIXByb3BzLmZvdW5kKSB7XG4gICAgICAgICAgICAvLyBpdGVtIGlzIGEgdmFsdWUgaW4gYSBzZXFcbiAgICAgICAgICAgIC8vIFx1MjE5MiBrZXkgJiBzZXAgYXJlIGVtcHR5LCBzdGFydCBkb2VzIG5vdCBpbmNsdWRlID8gb3IgOlxuICAgICAgICAgICAgY29uc3QgdmFsdWVOb2RlID0gdmFsdWVcbiAgICAgICAgICAgICAgICA/IGNvbXBvc2VOb2RlKGN0eCwgdmFsdWUsIHByb3BzLCBvbkVycm9yKVxuICAgICAgICAgICAgICAgIDogY29tcG9zZUVtcHR5Tm9kZShjdHgsIHByb3BzLmVuZCwgc2VwLCBudWxsLCBwcm9wcywgb25FcnJvcik7XG4gICAgICAgICAgICBjb2xsLml0ZW1zLnB1c2godmFsdWVOb2RlKTtcbiAgICAgICAgICAgIG9mZnNldCA9IHZhbHVlTm9kZS5yYW5nZVsyXTtcbiAgICAgICAgICAgIGlmIChpc0Jsb2NrKHZhbHVlKSlcbiAgICAgICAgICAgICAgICBvbkVycm9yKHZhbHVlTm9kZS5yYW5nZSwgJ0JMT0NLX0lOX0ZMT1cnLCBibG9ja01zZyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyBpdGVtIGlzIGEga2V5K3ZhbHVlIHBhaXJcbiAgICAgICAgICAgIC8vIGtleSB2YWx1ZVxuICAgICAgICAgICAgY3R4LmF0S2V5ID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvbnN0IGtleVN0YXJ0ID0gcHJvcHMuZW5kO1xuICAgICAgICAgICAgY29uc3Qga2V5Tm9kZSA9IGtleVxuICAgICAgICAgICAgICAgID8gY29tcG9zZU5vZGUoY3R4LCBrZXksIHByb3BzLCBvbkVycm9yKVxuICAgICAgICAgICAgICAgIDogY29tcG9zZUVtcHR5Tm9kZShjdHgsIGtleVN0YXJ0LCBzdGFydCwgbnVsbCwgcHJvcHMsIG9uRXJyb3IpO1xuICAgICAgICAgICAgaWYgKGlzQmxvY2soa2V5KSlcbiAgICAgICAgICAgICAgICBvbkVycm9yKGtleU5vZGUucmFuZ2UsICdCTE9DS19JTl9GTE9XJywgYmxvY2tNc2cpO1xuICAgICAgICAgICAgY3R4LmF0S2V5ID0gZmFsc2U7XG4gICAgICAgICAgICAvLyB2YWx1ZSBwcm9wZXJ0aWVzXG4gICAgICAgICAgICBjb25zdCB2YWx1ZVByb3BzID0gcmVzb2x2ZVByb3BzKHNlcCA/PyBbXSwge1xuICAgICAgICAgICAgICAgIGZsb3c6IGZjTmFtZSxcbiAgICAgICAgICAgICAgICBpbmRpY2F0b3I6ICdtYXAtdmFsdWUtaW5kJyxcbiAgICAgICAgICAgICAgICBuZXh0OiB2YWx1ZSxcbiAgICAgICAgICAgICAgICBvZmZzZXQ6IGtleU5vZGUucmFuZ2VbMl0sXG4gICAgICAgICAgICAgICAgb25FcnJvcixcbiAgICAgICAgICAgICAgICBwYXJlbnRJbmRlbnQ6IGZjLmluZGVudCxcbiAgICAgICAgICAgICAgICBzdGFydE9uTmV3bGluZTogZmFsc2VcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKHZhbHVlUHJvcHMuZm91bmQpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWlzTWFwICYmICFwcm9wcy5mb3VuZCAmJiBjdHgub3B0aW9ucy5zdHJpY3QpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlcClcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3Qgc3Qgb2Ygc2VwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0ID09PSB2YWx1ZVByb3BzLmZvdW5kKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3QudHlwZSA9PT0gJ25ld2xpbmUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRXJyb3Ioc3QsICdNVUxUSUxJTkVfSU1QTElDSVRfS0VZJywgJ0ltcGxpY2l0IGtleXMgb2YgZmxvdyBzZXF1ZW5jZSBwYWlycyBuZWVkIHRvIGJlIG9uIGEgc2luZ2xlIGxpbmUnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAocHJvcHMuc3RhcnQgPCB2YWx1ZVByb3BzLmZvdW5kLm9mZnNldCAtIDEwMjQpXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkVycm9yKHZhbHVlUHJvcHMuZm91bmQsICdLRVlfT1ZFUl8xMDI0X0NIQVJTJywgJ1RoZSA6IGluZGljYXRvciBtdXN0IGJlIGF0IG1vc3QgMTAyNCBjaGFycyBhZnRlciB0aGUgc3RhcnQgb2YgYW4gaW1wbGljaXQgZmxvdyBzZXF1ZW5jZSBrZXknKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIGlmICgnc291cmNlJyBpbiB2YWx1ZSAmJiB2YWx1ZS5zb3VyY2UgJiYgdmFsdWUuc291cmNlWzBdID09PSAnOicpXG4gICAgICAgICAgICAgICAgICAgIG9uRXJyb3IodmFsdWUsICdNSVNTSU5HX0NIQVInLCBgTWlzc2luZyBzcGFjZSBhZnRlciA6IGluICR7ZmNOYW1lfWApO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgb25FcnJvcih2YWx1ZVByb3BzLnN0YXJ0LCAnTUlTU0lOR19DSEFSJywgYE1pc3NpbmcgLCBvciA6IGJldHdlZW4gJHtmY05hbWV9IGl0ZW1zYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyB2YWx1ZSB2YWx1ZVxuICAgICAgICAgICAgY29uc3QgdmFsdWVOb2RlID0gdmFsdWVcbiAgICAgICAgICAgICAgICA/IGNvbXBvc2VOb2RlKGN0eCwgdmFsdWUsIHZhbHVlUHJvcHMsIG9uRXJyb3IpXG4gICAgICAgICAgICAgICAgOiB2YWx1ZVByb3BzLmZvdW5kXG4gICAgICAgICAgICAgICAgICAgID8gY29tcG9zZUVtcHR5Tm9kZShjdHgsIHZhbHVlUHJvcHMuZW5kLCBzZXAsIG51bGwsIHZhbHVlUHJvcHMsIG9uRXJyb3IpXG4gICAgICAgICAgICAgICAgICAgIDogbnVsbDtcbiAgICAgICAgICAgIGlmICh2YWx1ZU5vZGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNCbG9jayh2YWx1ZSkpXG4gICAgICAgICAgICAgICAgICAgIG9uRXJyb3IodmFsdWVOb2RlLnJhbmdlLCAnQkxPQ0tfSU5fRkxPVycsIGJsb2NrTXNnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlUHJvcHMuY29tbWVudCkge1xuICAgICAgICAgICAgICAgIGlmIChrZXlOb2RlLmNvbW1lbnQpXG4gICAgICAgICAgICAgICAgICAgIGtleU5vZGUuY29tbWVudCArPSAnXFxuJyArIHZhbHVlUHJvcHMuY29tbWVudDtcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGtleU5vZGUuY29tbWVudCA9IHZhbHVlUHJvcHMuY29tbWVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHBhaXIgPSBuZXcgUGFpcihrZXlOb2RlLCB2YWx1ZU5vZGUpO1xuICAgICAgICAgICAgaWYgKGN0eC5vcHRpb25zLmtlZXBTb3VyY2VUb2tlbnMpXG4gICAgICAgICAgICAgICAgcGFpci5zcmNUb2tlbiA9IGNvbGxJdGVtO1xuICAgICAgICAgICAgaWYgKGlzTWFwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWFwID0gY29sbDtcbiAgICAgICAgICAgICAgICBpZiAobWFwSW5jbHVkZXMoY3R4LCBtYXAuaXRlbXMsIGtleU5vZGUpKVxuICAgICAgICAgICAgICAgICAgICBvbkVycm9yKGtleVN0YXJ0LCAnRFVQTElDQVRFX0tFWScsICdNYXAga2V5cyBtdXN0IGJlIHVuaXF1ZScpO1xuICAgICAgICAgICAgICAgIG1hcC5pdGVtcy5wdXNoKHBhaXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWFwID0gbmV3IFlBTUxNYXAoY3R4LnNjaGVtYSk7XG4gICAgICAgICAgICAgICAgbWFwLmZsb3cgPSB0cnVlO1xuICAgICAgICAgICAgICAgIG1hcC5pdGVtcy5wdXNoKHBhaXIpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGVuZFJhbmdlID0gKHZhbHVlTm9kZSA/PyBrZXlOb2RlKS5yYW5nZTtcbiAgICAgICAgICAgICAgICBtYXAucmFuZ2UgPSBba2V5Tm9kZS5yYW5nZVswXSwgZW5kUmFuZ2VbMV0sIGVuZFJhbmdlWzJdXTtcbiAgICAgICAgICAgICAgICBjb2xsLml0ZW1zLnB1c2gobWFwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9mZnNldCA9IHZhbHVlTm9kZSA/IHZhbHVlTm9kZS5yYW5nZVsyXSA6IHZhbHVlUHJvcHMuZW5kO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGV4cGVjdGVkRW5kID0gaXNNYXAgPyAnfScgOiAnXSc7XG4gICAgY29uc3QgW2NlLCAuLi5lZV0gPSBmYy5lbmQ7XG4gICAgbGV0IGNlUG9zID0gb2Zmc2V0O1xuICAgIGlmIChjZSAmJiBjZS5zb3VyY2UgPT09IGV4cGVjdGVkRW5kKVxuICAgICAgICBjZVBvcyA9IGNlLm9mZnNldCArIGNlLnNvdXJjZS5sZW5ndGg7XG4gICAgZWxzZSB7XG4gICAgICAgIGNvbnN0IG5hbWUgPSBmY05hbWVbMF0udG9VcHBlckNhc2UoKSArIGZjTmFtZS5zdWJzdHJpbmcoMSk7XG4gICAgICAgIGNvbnN0IG1zZyA9IGF0Um9vdFxuICAgICAgICAgICAgPyBgJHtuYW1lfSBtdXN0IGVuZCB3aXRoIGEgJHtleHBlY3RlZEVuZH1gXG4gICAgICAgICAgICA6IGAke25hbWV9IGluIGJsb2NrIGNvbGxlY3Rpb24gbXVzdCBiZSBzdWZmaWNpZW50bHkgaW5kZW50ZWQgYW5kIGVuZCB3aXRoIGEgJHtleHBlY3RlZEVuZH1gO1xuICAgICAgICBvbkVycm9yKG9mZnNldCwgYXRSb290ID8gJ01JU1NJTkdfQ0hBUicgOiAnQkFEX0lOREVOVCcsIG1zZyk7XG4gICAgICAgIGlmIChjZSAmJiBjZS5zb3VyY2UubGVuZ3RoICE9PSAxKVxuICAgICAgICAgICAgZWUudW5zaGlmdChjZSk7XG4gICAgfVxuICAgIGlmIChlZS5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IGVuZCA9IHJlc29sdmVFbmQoZWUsIGNlUG9zLCBjdHgub3B0aW9ucy5zdHJpY3QsIG9uRXJyb3IpO1xuICAgICAgICBpZiAoZW5kLmNvbW1lbnQpIHtcbiAgICAgICAgICAgIGlmIChjb2xsLmNvbW1lbnQpXG4gICAgICAgICAgICAgICAgY29sbC5jb21tZW50ICs9ICdcXG4nICsgZW5kLmNvbW1lbnQ7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgY29sbC5jb21tZW50ID0gZW5kLmNvbW1lbnQ7XG4gICAgICAgIH1cbiAgICAgICAgY29sbC5yYW5nZSA9IFtmYy5vZmZzZXQsIGNlUG9zLCBlbmQub2Zmc2V0XTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGNvbGwucmFuZ2UgPSBbZmMub2Zmc2V0LCBjZVBvcywgY2VQb3NdO1xuICAgIH1cbiAgICByZXR1cm4gY29sbDtcbn1cblxuZXhwb3J0IHsgcmVzb2x2ZUZsb3dDb2xsZWN0aW9uIH07XG4iLCAiaW1wb3J0IHsgaXNOb2RlIH0gZnJvbSAnLi4vbm9kZXMvaWRlbnRpdHkuanMnO1xuaW1wb3J0IHsgU2NhbGFyIH0gZnJvbSAnLi4vbm9kZXMvU2NhbGFyLmpzJztcbmltcG9ydCB7IFlBTUxNYXAgfSBmcm9tICcuLi9ub2Rlcy9ZQU1MTWFwLmpzJztcbmltcG9ydCB7IFlBTUxTZXEgfSBmcm9tICcuLi9ub2Rlcy9ZQU1MU2VxLmpzJztcbmltcG9ydCB7IHJlc29sdmVCbG9ja01hcCB9IGZyb20gJy4vcmVzb2x2ZS1ibG9jay1tYXAuanMnO1xuaW1wb3J0IHsgcmVzb2x2ZUJsb2NrU2VxIH0gZnJvbSAnLi9yZXNvbHZlLWJsb2NrLXNlcS5qcyc7XG5pbXBvcnQgeyByZXNvbHZlRmxvd0NvbGxlY3Rpb24gfSBmcm9tICcuL3Jlc29sdmUtZmxvdy1jb2xsZWN0aW9uLmpzJztcblxuZnVuY3Rpb24gcmVzb2x2ZUNvbGxlY3Rpb24oQ04sIGN0eCwgdG9rZW4sIG9uRXJyb3IsIHRhZ05hbWUsIHRhZykge1xuICAgIGNvbnN0IGNvbGwgPSB0b2tlbi50eXBlID09PSAnYmxvY2stbWFwJ1xuICAgICAgICA/IHJlc29sdmVCbG9ja01hcChDTiwgY3R4LCB0b2tlbiwgb25FcnJvciwgdGFnKVxuICAgICAgICA6IHRva2VuLnR5cGUgPT09ICdibG9jay1zZXEnXG4gICAgICAgICAgICA/IHJlc29sdmVCbG9ja1NlcShDTiwgY3R4LCB0b2tlbiwgb25FcnJvciwgdGFnKVxuICAgICAgICAgICAgOiByZXNvbHZlRmxvd0NvbGxlY3Rpb24oQ04sIGN0eCwgdG9rZW4sIG9uRXJyb3IsIHRhZyk7XG4gICAgY29uc3QgQ29sbCA9IGNvbGwuY29uc3RydWN0b3I7XG4gICAgLy8gSWYgd2UgZ290IGEgdGFnTmFtZSBtYXRjaGluZyB0aGUgY2xhc3MsIG9yIHRoZSB0YWcgbmFtZSBpcyAnIScsXG4gICAgLy8gdGhlbiB1c2UgdGhlIHRhZ05hbWUgZnJvbSB0aGUgbm9kZSBjbGFzcyB1c2VkIHRvIGNyZWF0ZSBpdC5cbiAgICBpZiAodGFnTmFtZSA9PT0gJyEnIHx8IHRhZ05hbWUgPT09IENvbGwudGFnTmFtZSkge1xuICAgICAgICBjb2xsLnRhZyA9IENvbGwudGFnTmFtZTtcbiAgICAgICAgcmV0dXJuIGNvbGw7XG4gICAgfVxuICAgIGlmICh0YWdOYW1lKVxuICAgICAgICBjb2xsLnRhZyA9IHRhZ05hbWU7XG4gICAgcmV0dXJuIGNvbGw7XG59XG5mdW5jdGlvbiBjb21wb3NlQ29sbGVjdGlvbihDTiwgY3R4LCB0b2tlbiwgcHJvcHMsIG9uRXJyb3IpIHtcbiAgICBjb25zdCB0YWdUb2tlbiA9IHByb3BzLnRhZztcbiAgICBjb25zdCB0YWdOYW1lID0gIXRhZ1Rva2VuXG4gICAgICAgID8gbnVsbFxuICAgICAgICA6IGN0eC5kaXJlY3RpdmVzLnRhZ05hbWUodGFnVG9rZW4uc291cmNlLCBtc2cgPT4gb25FcnJvcih0YWdUb2tlbiwgJ1RBR19SRVNPTFZFX0ZBSUxFRCcsIG1zZykpO1xuICAgIGlmICh0b2tlbi50eXBlID09PSAnYmxvY2stc2VxJykge1xuICAgICAgICBjb25zdCB7IGFuY2hvciwgbmV3bGluZUFmdGVyUHJvcDogbmwgfSA9IHByb3BzO1xuICAgICAgICBjb25zdCBsYXN0UHJvcCA9IGFuY2hvciAmJiB0YWdUb2tlblxuICAgICAgICAgICAgPyBhbmNob3Iub2Zmc2V0ID4gdGFnVG9rZW4ub2Zmc2V0XG4gICAgICAgICAgICAgICAgPyBhbmNob3JcbiAgICAgICAgICAgICAgICA6IHRhZ1Rva2VuXG4gICAgICAgICAgICA6IChhbmNob3IgPz8gdGFnVG9rZW4pO1xuICAgICAgICBpZiAobGFzdFByb3AgJiYgKCFubCB8fCBubC5vZmZzZXQgPCBsYXN0UHJvcC5vZmZzZXQpKSB7XG4gICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gJ01pc3NpbmcgbmV3bGluZSBhZnRlciBibG9jayBzZXF1ZW5jZSBwcm9wcyc7XG4gICAgICAgICAgICBvbkVycm9yKGxhc3RQcm9wLCAnTUlTU0lOR19DSEFSJywgbWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgZXhwVHlwZSA9IHRva2VuLnR5cGUgPT09ICdibG9jay1tYXAnXG4gICAgICAgID8gJ21hcCdcbiAgICAgICAgOiB0b2tlbi50eXBlID09PSAnYmxvY2stc2VxJ1xuICAgICAgICAgICAgPyAnc2VxJ1xuICAgICAgICAgICAgOiB0b2tlbi5zdGFydC5zb3VyY2UgPT09ICd7J1xuICAgICAgICAgICAgICAgID8gJ21hcCdcbiAgICAgICAgICAgICAgICA6ICdzZXEnO1xuICAgIC8vIHNob3J0Y3V0OiBjaGVjayBpZiBpdCdzIGEgZ2VuZXJpYyBZQU1MTWFwIG9yIFlBTUxTZXFcbiAgICAvLyBiZWZvcmUganVtcGluZyBpbnRvIHRoZSBjdXN0b20gdGFnIGxvZ2ljLlxuICAgIGlmICghdGFnVG9rZW4gfHxcbiAgICAgICAgIXRhZ05hbWUgfHxcbiAgICAgICAgdGFnTmFtZSA9PT0gJyEnIHx8XG4gICAgICAgICh0YWdOYW1lID09PSBZQU1MTWFwLnRhZ05hbWUgJiYgZXhwVHlwZSA9PT0gJ21hcCcpIHx8XG4gICAgICAgICh0YWdOYW1lID09PSBZQU1MU2VxLnRhZ05hbWUgJiYgZXhwVHlwZSA9PT0gJ3NlcScpKSB7XG4gICAgICAgIHJldHVybiByZXNvbHZlQ29sbGVjdGlvbihDTiwgY3R4LCB0b2tlbiwgb25FcnJvciwgdGFnTmFtZSk7XG4gICAgfVxuICAgIGxldCB0YWcgPSBjdHguc2NoZW1hLnRhZ3MuZmluZCh0ID0+IHQudGFnID09PSB0YWdOYW1lICYmIHQuY29sbGVjdGlvbiA9PT0gZXhwVHlwZSk7XG4gICAgaWYgKCF0YWcpIHtcbiAgICAgICAgY29uc3Qga3QgPSBjdHguc2NoZW1hLmtub3duVGFnc1t0YWdOYW1lXTtcbiAgICAgICAgaWYgKGt0ICYmIGt0LmNvbGxlY3Rpb24gPT09IGV4cFR5cGUpIHtcbiAgICAgICAgICAgIGN0eC5zY2hlbWEudGFncy5wdXNoKE9iamVjdC5hc3NpZ24oe30sIGt0LCB7IGRlZmF1bHQ6IGZhbHNlIH0pKTtcbiAgICAgICAgICAgIHRhZyA9IGt0O1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKGt0Py5jb2xsZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgb25FcnJvcih0YWdUb2tlbiwgJ0JBRF9DT0xMRUNUSU9OX1RZUEUnLCBgJHtrdC50YWd9IHVzZWQgZm9yICR7ZXhwVHlwZX0gY29sbGVjdGlvbiwgYnV0IGV4cGVjdHMgJHtrdC5jb2xsZWN0aW9ufWAsIHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgb25FcnJvcih0YWdUb2tlbiwgJ1RBR19SRVNPTFZFX0ZBSUxFRCcsIGBVbnJlc29sdmVkIHRhZzogJHt0YWdOYW1lfWAsIHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVDb2xsZWN0aW9uKENOLCBjdHgsIHRva2VuLCBvbkVycm9yLCB0YWdOYW1lKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBjb2xsID0gcmVzb2x2ZUNvbGxlY3Rpb24oQ04sIGN0eCwgdG9rZW4sIG9uRXJyb3IsIHRhZ05hbWUsIHRhZyk7XG4gICAgY29uc3QgcmVzID0gdGFnLnJlc29sdmU/Lihjb2xsLCBtc2cgPT4gb25FcnJvcih0YWdUb2tlbiwgJ1RBR19SRVNPTFZFX0ZBSUxFRCcsIG1zZyksIGN0eC5vcHRpb25zKSA/PyBjb2xsO1xuICAgIGNvbnN0IG5vZGUgPSBpc05vZGUocmVzKVxuICAgICAgICA/IHJlc1xuICAgICAgICA6IG5ldyBTY2FsYXIocmVzKTtcbiAgICBub2RlLnJhbmdlID0gY29sbC5yYW5nZTtcbiAgICBub2RlLnRhZyA9IHRhZ05hbWU7XG4gICAgaWYgKHRhZz8uZm9ybWF0KVxuICAgICAgICBub2RlLmZvcm1hdCA9IHRhZy5mb3JtYXQ7XG4gICAgcmV0dXJuIG5vZGU7XG59XG5cbmV4cG9ydCB7IGNvbXBvc2VDb2xsZWN0aW9uIH07XG4iLCAiaW1wb3J0IHsgU2NhbGFyIH0gZnJvbSAnLi4vbm9kZXMvU2NhbGFyLmpzJztcblxuZnVuY3Rpb24gcmVzb2x2ZUJsb2NrU2NhbGFyKGN0eCwgc2NhbGFyLCBvbkVycm9yKSB7XG4gICAgY29uc3Qgc3RhcnQgPSBzY2FsYXIub2Zmc2V0O1xuICAgIGNvbnN0IGhlYWRlciA9IHBhcnNlQmxvY2tTY2FsYXJIZWFkZXIoc2NhbGFyLCBjdHgub3B0aW9ucy5zdHJpY3QsIG9uRXJyb3IpO1xuICAgIGlmICghaGVhZGVyKVxuICAgICAgICByZXR1cm4geyB2YWx1ZTogJycsIHR5cGU6IG51bGwsIGNvbW1lbnQ6ICcnLCByYW5nZTogW3N0YXJ0LCBzdGFydCwgc3RhcnRdIH07XG4gICAgY29uc3QgdHlwZSA9IGhlYWRlci5tb2RlID09PSAnPicgPyBTY2FsYXIuQkxPQ0tfRk9MREVEIDogU2NhbGFyLkJMT0NLX0xJVEVSQUw7XG4gICAgY29uc3QgbGluZXMgPSBzY2FsYXIuc291cmNlID8gc3BsaXRMaW5lcyhzY2FsYXIuc291cmNlKSA6IFtdO1xuICAgIC8vIGRldGVybWluZSB0aGUgZW5kIG9mIGNvbnRlbnQgJiBzdGFydCBvZiBjaG9tcGluZ1xuICAgIGxldCBjaG9tcFN0YXJ0ID0gbGluZXMubGVuZ3RoO1xuICAgIGZvciAobGV0IGkgPSBsaW5lcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICBjb25zdCBjb250ZW50ID0gbGluZXNbaV1bMV07XG4gICAgICAgIGlmIChjb250ZW50ID09PSAnJyB8fCBjb250ZW50ID09PSAnXFxyJylcbiAgICAgICAgICAgIGNob21wU3RhcnQgPSBpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICBicmVhaztcbiAgICB9XG4gICAgLy8gc2hvcnRjdXQgZm9yIGVtcHR5IGNvbnRlbnRzXG4gICAgaWYgKGNob21wU3RhcnQgPT09IDApIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBoZWFkZXIuY2hvbXAgPT09ICcrJyAmJiBsaW5lcy5sZW5ndGggPiAwXG4gICAgICAgICAgICA/ICdcXG4nLnJlcGVhdChNYXRoLm1heCgxLCBsaW5lcy5sZW5ndGggLSAxKSlcbiAgICAgICAgICAgIDogJyc7XG4gICAgICAgIGxldCBlbmQgPSBzdGFydCArIGhlYWRlci5sZW5ndGg7XG4gICAgICAgIGlmIChzY2FsYXIuc291cmNlKVxuICAgICAgICAgICAgZW5kICs9IHNjYWxhci5zb3VyY2UubGVuZ3RoO1xuICAgICAgICByZXR1cm4geyB2YWx1ZSwgdHlwZSwgY29tbWVudDogaGVhZGVyLmNvbW1lbnQsIHJhbmdlOiBbc3RhcnQsIGVuZCwgZW5kXSB9O1xuICAgIH1cbiAgICAvLyBmaW5kIHRoZSBpbmRlbnRhdGlvbiBsZXZlbCB0byB0cmltIGZyb20gc3RhcnRcbiAgICBsZXQgdHJpbUluZGVudCA9IHNjYWxhci5pbmRlbnQgKyBoZWFkZXIuaW5kZW50O1xuICAgIGxldCBvZmZzZXQgPSBzY2FsYXIub2Zmc2V0ICsgaGVhZGVyLmxlbmd0aDtcbiAgICBsZXQgY29udGVudFN0YXJ0ID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNob21wU3RhcnQ7ICsraSkge1xuICAgICAgICBjb25zdCBbaW5kZW50LCBjb250ZW50XSA9IGxpbmVzW2ldO1xuICAgICAgICBpZiAoY29udGVudCA9PT0gJycgfHwgY29udGVudCA9PT0gJ1xccicpIHtcbiAgICAgICAgICAgIGlmIChoZWFkZXIuaW5kZW50ID09PSAwICYmIGluZGVudC5sZW5ndGggPiB0cmltSW5kZW50KVxuICAgICAgICAgICAgICAgIHRyaW1JbmRlbnQgPSBpbmRlbnQubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKGluZGVudC5sZW5ndGggPCB0cmltSW5kZW50KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9ICdCbG9jayBzY2FsYXJzIHdpdGggbW9yZS1pbmRlbnRlZCBsZWFkaW5nIGVtcHR5IGxpbmVzIG11c3QgdXNlIGFuIGV4cGxpY2l0IGluZGVudGF0aW9uIGluZGljYXRvcic7XG4gICAgICAgICAgICAgICAgb25FcnJvcihvZmZzZXQgKyBpbmRlbnQubGVuZ3RoLCAnTUlTU0lOR19DSEFSJywgbWVzc2FnZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaGVhZGVyLmluZGVudCA9PT0gMClcbiAgICAgICAgICAgICAgICB0cmltSW5kZW50ID0gaW5kZW50Lmxlbmd0aDtcbiAgICAgICAgICAgIGNvbnRlbnRTdGFydCA9IGk7XG4gICAgICAgICAgICBpZiAodHJpbUluZGVudCA9PT0gMCAmJiAhY3R4LmF0Um9vdCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSAnQmxvY2sgc2NhbGFyIHZhbHVlcyBpbiBjb2xsZWN0aW9ucyBtdXN0IGJlIGluZGVudGVkJztcbiAgICAgICAgICAgICAgICBvbkVycm9yKG9mZnNldCwgJ0JBRF9JTkRFTlQnLCBtZXNzYWdlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIG9mZnNldCArPSBpbmRlbnQubGVuZ3RoICsgY29udGVudC5sZW5ndGggKyAxO1xuICAgIH1cbiAgICAvLyBpbmNsdWRlIHRyYWlsaW5nIG1vcmUtaW5kZW50ZWQgZW1wdHkgbGluZXMgaW4gY29udGVudFxuICAgIGZvciAobGV0IGkgPSBsaW5lcy5sZW5ndGggLSAxOyBpID49IGNob21wU3RhcnQ7IC0taSkge1xuICAgICAgICBpZiAobGluZXNbaV1bMF0ubGVuZ3RoID4gdHJpbUluZGVudClcbiAgICAgICAgICAgIGNob21wU3RhcnQgPSBpICsgMTtcbiAgICB9XG4gICAgbGV0IHZhbHVlID0gJyc7XG4gICAgbGV0IHNlcCA9ICcnO1xuICAgIGxldCBwcmV2TW9yZUluZGVudGVkID0gZmFsc2U7XG4gICAgLy8gbGVhZGluZyB3aGl0ZXNwYWNlIGlzIGtlcHQgaW50YWN0XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb250ZW50U3RhcnQ7ICsraSlcbiAgICAgICAgdmFsdWUgKz0gbGluZXNbaV1bMF0uc2xpY2UodHJpbUluZGVudCkgKyAnXFxuJztcbiAgICBmb3IgKGxldCBpID0gY29udGVudFN0YXJ0OyBpIDwgY2hvbXBTdGFydDsgKytpKSB7XG4gICAgICAgIGxldCBbaW5kZW50LCBjb250ZW50XSA9IGxpbmVzW2ldO1xuICAgICAgICBvZmZzZXQgKz0gaW5kZW50Lmxlbmd0aCArIGNvbnRlbnQubGVuZ3RoICsgMTtcbiAgICAgICAgY29uc3QgY3JsZiA9IGNvbnRlbnRbY29udGVudC5sZW5ndGggLSAxXSA9PT0gJ1xccic7XG4gICAgICAgIGlmIChjcmxmKVxuICAgICAgICAgICAgY29udGVudCA9IGNvbnRlbnQuc2xpY2UoMCwgLTEpO1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgYWxyZWFkeSBjYXVnaHQgaW4gbGV4ZXIgKi9cbiAgICAgICAgaWYgKGNvbnRlbnQgJiYgaW5kZW50Lmxlbmd0aCA8IHRyaW1JbmRlbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IHNyYyA9IGhlYWRlci5pbmRlbnRcbiAgICAgICAgICAgICAgICA/ICdleHBsaWNpdCBpbmRlbnRhdGlvbiBpbmRpY2F0b3InXG4gICAgICAgICAgICAgICAgOiAnZmlyc3QgbGluZSc7XG4gICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gYEJsb2NrIHNjYWxhciBsaW5lcyBtdXN0IG5vdCBiZSBsZXNzIGluZGVudGVkIHRoYW4gdGhlaXIgJHtzcmN9YDtcbiAgICAgICAgICAgIG9uRXJyb3Iob2Zmc2V0IC0gY29udGVudC5sZW5ndGggLSAoY3JsZiA/IDIgOiAxKSwgJ0JBRF9JTkRFTlQnLCBtZXNzYWdlKTtcbiAgICAgICAgICAgIGluZGVudCA9ICcnO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlID09PSBTY2FsYXIuQkxPQ0tfTElURVJBTCkge1xuICAgICAgICAgICAgdmFsdWUgKz0gc2VwICsgaW5kZW50LnNsaWNlKHRyaW1JbmRlbnQpICsgY29udGVudDtcbiAgICAgICAgICAgIHNlcCA9ICdcXG4nO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGluZGVudC5sZW5ndGggPiB0cmltSW5kZW50IHx8IGNvbnRlbnRbMF0gPT09ICdcXHQnKSB7XG4gICAgICAgICAgICAvLyBtb3JlLWluZGVudGVkIGNvbnRlbnQgd2l0aGluIGEgZm9sZGVkIGJsb2NrXG4gICAgICAgICAgICBpZiAoc2VwID09PSAnICcpXG4gICAgICAgICAgICAgICAgc2VwID0gJ1xcbic7XG4gICAgICAgICAgICBlbHNlIGlmICghcHJldk1vcmVJbmRlbnRlZCAmJiBzZXAgPT09ICdcXG4nKVxuICAgICAgICAgICAgICAgIHNlcCA9ICdcXG5cXG4nO1xuICAgICAgICAgICAgdmFsdWUgKz0gc2VwICsgaW5kZW50LnNsaWNlKHRyaW1JbmRlbnQpICsgY29udGVudDtcbiAgICAgICAgICAgIHNlcCA9ICdcXG4nO1xuICAgICAgICAgICAgcHJldk1vcmVJbmRlbnRlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoY29udGVudCA9PT0gJycpIHtcbiAgICAgICAgICAgIC8vIGVtcHR5IGxpbmVcbiAgICAgICAgICAgIGlmIChzZXAgPT09ICdcXG4nKVxuICAgICAgICAgICAgICAgIHZhbHVlICs9ICdcXG4nO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHNlcCA9ICdcXG4nO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdmFsdWUgKz0gc2VwICsgY29udGVudDtcbiAgICAgICAgICAgIHNlcCA9ICcgJztcbiAgICAgICAgICAgIHByZXZNb3JlSW5kZW50ZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBzd2l0Y2ggKGhlYWRlci5jaG9tcCkge1xuICAgICAgICBjYXNlICctJzpcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICcrJzpcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSBjaG9tcFN0YXJ0OyBpIDwgbGluZXMubGVuZ3RoOyArK2kpXG4gICAgICAgICAgICAgICAgdmFsdWUgKz0gJ1xcbicgKyBsaW5lc1tpXVswXS5zbGljZSh0cmltSW5kZW50KTtcbiAgICAgICAgICAgIGlmICh2YWx1ZVt2YWx1ZS5sZW5ndGggLSAxXSAhPT0gJ1xcbicpXG4gICAgICAgICAgICAgICAgdmFsdWUgKz0gJ1xcbic7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHZhbHVlICs9ICdcXG4nO1xuICAgIH1cbiAgICBjb25zdCBlbmQgPSBzdGFydCArIGhlYWRlci5sZW5ndGggKyBzY2FsYXIuc291cmNlLmxlbmd0aDtcbiAgICByZXR1cm4geyB2YWx1ZSwgdHlwZSwgY29tbWVudDogaGVhZGVyLmNvbW1lbnQsIHJhbmdlOiBbc3RhcnQsIGVuZCwgZW5kXSB9O1xufVxuZnVuY3Rpb24gcGFyc2VCbG9ja1NjYWxhckhlYWRlcih7IG9mZnNldCwgcHJvcHMgfSwgc3RyaWN0LCBvbkVycm9yKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmIHNob3VsZCBub3QgaGFwcGVuICovXG4gICAgaWYgKHByb3BzWzBdLnR5cGUgIT09ICdibG9jay1zY2FsYXItaGVhZGVyJykge1xuICAgICAgICBvbkVycm9yKHByb3BzWzBdLCAnSU1QT1NTSUJMRScsICdCbG9jayBzY2FsYXIgaGVhZGVyIG5vdCBmb3VuZCcpO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgeyBzb3VyY2UgfSA9IHByb3BzWzBdO1xuICAgIGNvbnN0IG1vZGUgPSBzb3VyY2VbMF07XG4gICAgbGV0IGluZGVudCA9IDA7XG4gICAgbGV0IGNob21wID0gJyc7XG4gICAgbGV0IGVycm9yID0gLTE7XG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPCBzb3VyY2UubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgY29uc3QgY2ggPSBzb3VyY2VbaV07XG4gICAgICAgIGlmICghY2hvbXAgJiYgKGNoID09PSAnLScgfHwgY2ggPT09ICcrJykpXG4gICAgICAgICAgICBjaG9tcCA9IGNoO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IG4gPSBOdW1iZXIoY2gpO1xuICAgICAgICAgICAgaWYgKCFpbmRlbnQgJiYgbilcbiAgICAgICAgICAgICAgICBpbmRlbnQgPSBuO1xuICAgICAgICAgICAgZWxzZSBpZiAoZXJyb3IgPT09IC0xKVxuICAgICAgICAgICAgICAgIGVycm9yID0gb2Zmc2V0ICsgaTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoZXJyb3IgIT09IC0xKVxuICAgICAgICBvbkVycm9yKGVycm9yLCAnVU5FWFBFQ1RFRF9UT0tFTicsIGBCbG9jayBzY2FsYXIgaGVhZGVyIGluY2x1ZGVzIGV4dHJhIGNoYXJhY3RlcnM6ICR7c291cmNlfWApO1xuICAgIGxldCBoYXNTcGFjZSA9IGZhbHNlO1xuICAgIGxldCBjb21tZW50ID0gJyc7XG4gICAgbGV0IGxlbmd0aCA9IHNvdXJjZS5sZW5ndGg7XG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPCBwcm9wcy5sZW5ndGg7ICsraSkge1xuICAgICAgICBjb25zdCB0b2tlbiA9IHByb3BzW2ldO1xuICAgICAgICBzd2l0Y2ggKHRva2VuLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ3NwYWNlJzpcbiAgICAgICAgICAgICAgICBoYXNTcGFjZSA9IHRydWU7XG4gICAgICAgICAgICAvLyBmYWxsdGhyb3VnaFxuICAgICAgICAgICAgY2FzZSAnbmV3bGluZSc6XG4gICAgICAgICAgICAgICAgbGVuZ3RoICs9IHRva2VuLnNvdXJjZS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdjb21tZW50JzpcbiAgICAgICAgICAgICAgICBpZiAoc3RyaWN0ICYmICFoYXNTcGFjZSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gJ0NvbW1lbnRzIG11c3QgYmUgc2VwYXJhdGVkIGZyb20gb3RoZXIgdG9rZW5zIGJ5IHdoaXRlIHNwYWNlIGNoYXJhY3RlcnMnO1xuICAgICAgICAgICAgICAgICAgICBvbkVycm9yKHRva2VuLCAnTUlTU0lOR19DSEFSJywgbWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxlbmd0aCArPSB0b2tlbi5zb3VyY2UubGVuZ3RoO1xuICAgICAgICAgICAgICAgIGNvbW1lbnQgPSB0b2tlbi5zb3VyY2Uuc3Vic3RyaW5nKDEpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZXJyb3InOlxuICAgICAgICAgICAgICAgIG9uRXJyb3IodG9rZW4sICdVTkVYUEVDVEVEX1RPS0VOJywgdG9rZW4ubWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgbGVuZ3RoICs9IHRva2VuLnNvdXJjZS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCBzaG91bGQgbm90IGhhcHBlbiAqL1xuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgVW5leHBlY3RlZCB0b2tlbiBpbiBibG9jayBzY2FsYXIgaGVhZGVyOiAke3Rva2VuLnR5cGV9YDtcbiAgICAgICAgICAgICAgICBvbkVycm9yKHRva2VuLCAnVU5FWFBFQ1RFRF9UT0tFTicsIG1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRzID0gdG9rZW4uc291cmNlO1xuICAgICAgICAgICAgICAgIGlmICh0cyAmJiB0eXBlb2YgdHMgPT09ICdzdHJpbmcnKVxuICAgICAgICAgICAgICAgICAgICBsZW5ndGggKz0gdHMubGVuZ3RoO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7IG1vZGUsIGluZGVudCwgY2hvbXAsIGNvbW1lbnQsIGxlbmd0aCB9O1xufVxuLyoqIEByZXR1cm5zIEFycmF5IG9mIGxpbmVzIHNwbGl0IHVwIGFzIGBbaW5kZW50LCBjb250ZW50XWAgKi9cbmZ1bmN0aW9uIHNwbGl0TGluZXMoc291cmNlKSB7XG4gICAgY29uc3Qgc3BsaXQgPSBzb3VyY2Uuc3BsaXQoL1xcbiggKikvKTtcbiAgICBjb25zdCBmaXJzdCA9IHNwbGl0WzBdO1xuICAgIGNvbnN0IG0gPSBmaXJzdC5tYXRjaCgvXiggKikvKTtcbiAgICBjb25zdCBsaW5lMCA9IG0/LlsxXVxuICAgICAgICA/IFttWzFdLCBmaXJzdC5zbGljZShtWzFdLmxlbmd0aCldXG4gICAgICAgIDogWycnLCBmaXJzdF07XG4gICAgY29uc3QgbGluZXMgPSBbbGluZTBdO1xuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgc3BsaXQubGVuZ3RoOyBpICs9IDIpXG4gICAgICAgIGxpbmVzLnB1c2goW3NwbGl0W2ldLCBzcGxpdFtpICsgMV1dKTtcbiAgICByZXR1cm4gbGluZXM7XG59XG5cbmV4cG9ydCB7IHJlc29sdmVCbG9ja1NjYWxhciB9O1xuIiwgImltcG9ydCB7IFNjYWxhciB9IGZyb20gJy4uL25vZGVzL1NjYWxhci5qcyc7XG5pbXBvcnQgeyByZXNvbHZlRW5kIH0gZnJvbSAnLi9yZXNvbHZlLWVuZC5qcyc7XG5cbmZ1bmN0aW9uIHJlc29sdmVGbG93U2NhbGFyKHNjYWxhciwgc3RyaWN0LCBvbkVycm9yKSB7XG4gICAgY29uc3QgeyBvZmZzZXQsIHR5cGUsIHNvdXJjZSwgZW5kIH0gPSBzY2FsYXI7XG4gICAgbGV0IF90eXBlO1xuICAgIGxldCB2YWx1ZTtcbiAgICBjb25zdCBfb25FcnJvciA9IChyZWwsIGNvZGUsIG1zZykgPT4gb25FcnJvcihvZmZzZXQgKyByZWwsIGNvZGUsIG1zZyk7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgIGNhc2UgJ3NjYWxhcic6XG4gICAgICAgICAgICBfdHlwZSA9IFNjYWxhci5QTEFJTjtcbiAgICAgICAgICAgIHZhbHVlID0gcGxhaW5WYWx1ZShzb3VyY2UsIF9vbkVycm9yKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdzaW5nbGUtcXVvdGVkLXNjYWxhcic6XG4gICAgICAgICAgICBfdHlwZSA9IFNjYWxhci5RVU9URV9TSU5HTEU7XG4gICAgICAgICAgICB2YWx1ZSA9IHNpbmdsZVF1b3RlZFZhbHVlKHNvdXJjZSwgX29uRXJyb3IpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2RvdWJsZS1xdW90ZWQtc2NhbGFyJzpcbiAgICAgICAgICAgIF90eXBlID0gU2NhbGFyLlFVT1RFX0RPVUJMRTtcbiAgICAgICAgICAgIHZhbHVlID0gZG91YmxlUXVvdGVkVmFsdWUoc291cmNlLCBfb25FcnJvcik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgc2hvdWxkIG5vdCBoYXBwZW4gKi9cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIG9uRXJyb3Ioc2NhbGFyLCAnVU5FWFBFQ1RFRF9UT0tFTicsIGBFeHBlY3RlZCBhIGZsb3cgc2NhbGFyIHZhbHVlLCBidXQgZm91bmQ6ICR7dHlwZX1gKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHR5cGU6IG51bGwsXG4gICAgICAgICAgICAgICAgY29tbWVudDogJycsXG4gICAgICAgICAgICAgICAgcmFuZ2U6IFtvZmZzZXQsIG9mZnNldCArIHNvdXJjZS5sZW5ndGgsIG9mZnNldCArIHNvdXJjZS5sZW5ndGhdXG4gICAgICAgICAgICB9O1xuICAgIH1cbiAgICBjb25zdCB2YWx1ZUVuZCA9IG9mZnNldCArIHNvdXJjZS5sZW5ndGg7XG4gICAgY29uc3QgcmUgPSByZXNvbHZlRW5kKGVuZCwgdmFsdWVFbmQsIHN0cmljdCwgb25FcnJvcik7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIHR5cGU6IF90eXBlLFxuICAgICAgICBjb21tZW50OiByZS5jb21tZW50LFxuICAgICAgICByYW5nZTogW29mZnNldCwgdmFsdWVFbmQsIHJlLm9mZnNldF1cbiAgICB9O1xufVxuZnVuY3Rpb24gcGxhaW5WYWx1ZShzb3VyY2UsIG9uRXJyb3IpIHtcbiAgICBsZXQgYmFkQ2hhciA9ICcnO1xuICAgIHN3aXRjaCAoc291cmNlWzBdKSB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0IHNob3VsZCBub3QgaGFwcGVuICovXG4gICAgICAgIGNhc2UgJ1xcdCc6XG4gICAgICAgICAgICBiYWRDaGFyID0gJ2EgdGFiIGNoYXJhY3Rlcic7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnLCc6XG4gICAgICAgICAgICBiYWRDaGFyID0gJ2Zsb3cgaW5kaWNhdG9yIGNoYXJhY3RlciAsJztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICclJzpcbiAgICAgICAgICAgIGJhZENoYXIgPSAnZGlyZWN0aXZlIGluZGljYXRvciBjaGFyYWN0ZXIgJSc7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnfCc6XG4gICAgICAgIGNhc2UgJz4nOiB7XG4gICAgICAgICAgICBiYWRDaGFyID0gYGJsb2NrIHNjYWxhciBpbmRpY2F0b3IgJHtzb3VyY2VbMF19YDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ0AnOlxuICAgICAgICBjYXNlICdgJzoge1xuICAgICAgICAgICAgYmFkQ2hhciA9IGByZXNlcnZlZCBjaGFyYWN0ZXIgJHtzb3VyY2VbMF19YDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChiYWRDaGFyKVxuICAgICAgICBvbkVycm9yKDAsICdCQURfU0NBTEFSX1NUQVJUJywgYFBsYWluIHZhbHVlIGNhbm5vdCBzdGFydCB3aXRoICR7YmFkQ2hhcn1gKTtcbiAgICByZXR1cm4gZm9sZExpbmVzKHNvdXJjZSk7XG59XG5mdW5jdGlvbiBzaW5nbGVRdW90ZWRWYWx1ZShzb3VyY2UsIG9uRXJyb3IpIHtcbiAgICBpZiAoc291cmNlW3NvdXJjZS5sZW5ndGggLSAxXSAhPT0gXCInXCIgfHwgc291cmNlLmxlbmd0aCA9PT0gMSlcbiAgICAgICAgb25FcnJvcihzb3VyY2UubGVuZ3RoLCAnTUlTU0lOR19DSEFSJywgXCJNaXNzaW5nIGNsb3NpbmcgJ3F1b3RlXCIpO1xuICAgIHJldHVybiBmb2xkTGluZXMoc291cmNlLnNsaWNlKDEsIC0xKSkucmVwbGFjZSgvJycvZywgXCInXCIpO1xufVxuZnVuY3Rpb24gZm9sZExpbmVzKHNvdXJjZSkge1xuICAgIC8qKlxuICAgICAqIFRoZSBuZWdhdGl2ZSBsb29rYmVoaW5kIGhlcmUgYW5kIGluIHRoZSBgcmVgIFJlZ0V4cCBpcyB0b1xuICAgICAqIHByZXZlbnQgY2F1c2luZyBhIHBvbHlub21pYWwgc2VhcmNoIHRpbWUgaW4gY2VydGFpbiBjYXNlcy5cbiAgICAgKlxuICAgICAqIFRoZSB0cnktY2F0Y2ggaXMgZm9yIFNhZmFyaSwgd2hpY2ggZG9lc24ndCBzdXBwb3J0IHRoaXMgeWV0OlxuICAgICAqIGh0dHBzOi8vY2FuaXVzZS5jb20vanMtcmVnZXhwLWxvb2tiZWhpbmRcbiAgICAgKi9cbiAgICBsZXQgZmlyc3QsIGxpbmU7XG4gICAgdHJ5IHtcbiAgICAgICAgZmlyc3QgPSBuZXcgUmVnRXhwKCcoLio/KSg/PCFbIFxcdF0pWyBcXHRdKlxccj9cXG4nLCAnc3knKTtcbiAgICAgICAgbGluZSA9IG5ldyBSZWdFeHAoJ1sgXFx0XSooLio/KSg/Oig/PCFbIFxcdF0pWyBcXHRdKik/XFxyP1xcbicsICdzeScpO1xuICAgIH1cbiAgICBjYXRjaCB7XG4gICAgICAgIGZpcnN0ID0gLyguKj8pWyBcXHRdKlxccj9cXG4vc3k7XG4gICAgICAgIGxpbmUgPSAvWyBcXHRdKiguKj8pWyBcXHRdKlxccj9cXG4vc3k7XG4gICAgfVxuICAgIGxldCBtYXRjaCA9IGZpcnN0LmV4ZWMoc291cmNlKTtcbiAgICBpZiAoIW1hdGNoKVxuICAgICAgICByZXR1cm4gc291cmNlO1xuICAgIGxldCByZXMgPSBtYXRjaFsxXTtcbiAgICBsZXQgc2VwID0gJyAnO1xuICAgIGxldCBwb3MgPSBmaXJzdC5sYXN0SW5kZXg7XG4gICAgbGluZS5sYXN0SW5kZXggPSBwb3M7XG4gICAgd2hpbGUgKChtYXRjaCA9IGxpbmUuZXhlYyhzb3VyY2UpKSkge1xuICAgICAgICBpZiAobWF0Y2hbMV0gPT09ICcnKSB7XG4gICAgICAgICAgICBpZiAoc2VwID09PSAnXFxuJylcbiAgICAgICAgICAgICAgICByZXMgKz0gc2VwO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHNlcCA9ICdcXG4nO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmVzICs9IHNlcCArIG1hdGNoWzFdO1xuICAgICAgICAgICAgc2VwID0gJyAnO1xuICAgICAgICB9XG4gICAgICAgIHBvcyA9IGxpbmUubGFzdEluZGV4O1xuICAgIH1cbiAgICBjb25zdCBsYXN0ID0gL1sgXFx0XSooLiopL3N5O1xuICAgIGxhc3QubGFzdEluZGV4ID0gcG9zO1xuICAgIG1hdGNoID0gbGFzdC5leGVjKHNvdXJjZSk7XG4gICAgcmV0dXJuIHJlcyArIHNlcCArIChtYXRjaD8uWzFdID8/ICcnKTtcbn1cbmZ1bmN0aW9uIGRvdWJsZVF1b3RlZFZhbHVlKHNvdXJjZSwgb25FcnJvcikge1xuICAgIGxldCByZXMgPSAnJztcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8IHNvdXJjZS5sZW5ndGggLSAxOyArK2kpIHtcbiAgICAgICAgY29uc3QgY2ggPSBzb3VyY2VbaV07XG4gICAgICAgIGlmIChjaCA9PT0gJ1xccicgJiYgc291cmNlW2kgKyAxXSA9PT0gJ1xcbicpXG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgaWYgKGNoID09PSAnXFxuJykge1xuICAgICAgICAgICAgY29uc3QgeyBmb2xkLCBvZmZzZXQgfSA9IGZvbGROZXdsaW5lKHNvdXJjZSwgaSk7XG4gICAgICAgICAgICByZXMgKz0gZm9sZDtcbiAgICAgICAgICAgIGkgPSBvZmZzZXQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoY2ggPT09ICdcXFxcJykge1xuICAgICAgICAgICAgbGV0IG5leHQgPSBzb3VyY2VbKytpXTtcbiAgICAgICAgICAgIGNvbnN0IGNjID0gZXNjYXBlQ29kZXNbbmV4dF07XG4gICAgICAgICAgICBpZiAoY2MpXG4gICAgICAgICAgICAgICAgcmVzICs9IGNjO1xuICAgICAgICAgICAgZWxzZSBpZiAobmV4dCA9PT0gJ1xcbicpIHtcbiAgICAgICAgICAgICAgICAvLyBza2lwIGVzY2FwZWQgbmV3bGluZXMsIGJ1dCBzdGlsbCB0cmltIHRoZSBmb2xsb3dpbmcgbGluZVxuICAgICAgICAgICAgICAgIG5leHQgPSBzb3VyY2VbaSArIDFdO1xuICAgICAgICAgICAgICAgIHdoaWxlIChuZXh0ID09PSAnICcgfHwgbmV4dCA9PT0gJ1xcdCcpXG4gICAgICAgICAgICAgICAgICAgIG5leHQgPSBzb3VyY2VbKytpICsgMV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChuZXh0ID09PSAnXFxyJyAmJiBzb3VyY2VbaSArIDFdID09PSAnXFxuJykge1xuICAgICAgICAgICAgICAgIC8vIHNraXAgZXNjYXBlZCBDUkxGIG5ld2xpbmVzLCBidXQgc3RpbGwgdHJpbSB0aGUgZm9sbG93aW5nIGxpbmVcbiAgICAgICAgICAgICAgICBuZXh0ID0gc291cmNlWysraSArIDFdO1xuICAgICAgICAgICAgICAgIHdoaWxlIChuZXh0ID09PSAnICcgfHwgbmV4dCA9PT0gJ1xcdCcpXG4gICAgICAgICAgICAgICAgICAgIG5leHQgPSBzb3VyY2VbKytpICsgMV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChuZXh0ID09PSAneCcgfHwgbmV4dCA9PT0gJ3UnIHx8IG5leHQgPT09ICdVJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxlbmd0aCA9IHsgeDogMiwgdTogNCwgVTogOCB9W25leHRdO1xuICAgICAgICAgICAgICAgIHJlcyArPSBwYXJzZUNoYXJDb2RlKHNvdXJjZSwgaSArIDEsIGxlbmd0aCwgb25FcnJvcik7XG4gICAgICAgICAgICAgICAgaSArPSBsZW5ndGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCByYXcgPSBzb3VyY2Uuc3Vic3RyKGkgLSAxLCAyKTtcbiAgICAgICAgICAgICAgICBvbkVycm9yKGkgLSAxLCAnQkFEX0RRX0VTQ0FQRScsIGBJbnZhbGlkIGVzY2FwZSBzZXF1ZW5jZSAke3Jhd31gKTtcbiAgICAgICAgICAgICAgICByZXMgKz0gcmF3O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGNoID09PSAnICcgfHwgY2ggPT09ICdcXHQnKSB7XG4gICAgICAgICAgICAvLyB0cmltIHRyYWlsaW5nIHdoaXRlc3BhY2VcbiAgICAgICAgICAgIGNvbnN0IHdzU3RhcnQgPSBpO1xuICAgICAgICAgICAgbGV0IG5leHQgPSBzb3VyY2VbaSArIDFdO1xuICAgICAgICAgICAgd2hpbGUgKG5leHQgPT09ICcgJyB8fCBuZXh0ID09PSAnXFx0JylcbiAgICAgICAgICAgICAgICBuZXh0ID0gc291cmNlWysraSArIDFdO1xuICAgICAgICAgICAgaWYgKG5leHQgIT09ICdcXG4nICYmICEobmV4dCA9PT0gJ1xccicgJiYgc291cmNlW2kgKyAyXSA9PT0gJ1xcbicpKVxuICAgICAgICAgICAgICAgIHJlcyArPSBpID4gd3NTdGFydCA/IHNvdXJjZS5zbGljZSh3c1N0YXJ0LCBpICsgMSkgOiBjaDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJlcyArPSBjaDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoc291cmNlW3NvdXJjZS5sZW5ndGggLSAxXSAhPT0gJ1wiJyB8fCBzb3VyY2UubGVuZ3RoID09PSAxKVxuICAgICAgICBvbkVycm9yKHNvdXJjZS5sZW5ndGgsICdNSVNTSU5HX0NIQVInLCAnTWlzc2luZyBjbG9zaW5nIFwicXVvdGUnKTtcbiAgICByZXR1cm4gcmVzO1xufVxuLyoqXG4gKiBGb2xkIGEgc2luZ2xlIG5ld2xpbmUgaW50byBhIHNwYWNlLCBtdWx0aXBsZSBuZXdsaW5lcyB0byBOIC0gMSBuZXdsaW5lcy5cbiAqIFByZXN1bWVzIGBzb3VyY2Vbb2Zmc2V0XSA9PT0gJ1xcbidgXG4gKi9cbmZ1bmN0aW9uIGZvbGROZXdsaW5lKHNvdXJjZSwgb2Zmc2V0KSB7XG4gICAgbGV0IGZvbGQgPSAnJztcbiAgICBsZXQgY2ggPSBzb3VyY2Vbb2Zmc2V0ICsgMV07XG4gICAgd2hpbGUgKGNoID09PSAnICcgfHwgY2ggPT09ICdcXHQnIHx8IGNoID09PSAnXFxuJyB8fCBjaCA9PT0gJ1xccicpIHtcbiAgICAgICAgaWYgKGNoID09PSAnXFxyJyAmJiBzb3VyY2Vbb2Zmc2V0ICsgMl0gIT09ICdcXG4nKVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGlmIChjaCA9PT0gJ1xcbicpXG4gICAgICAgICAgICBmb2xkICs9ICdcXG4nO1xuICAgICAgICBvZmZzZXQgKz0gMTtcbiAgICAgICAgY2ggPSBzb3VyY2Vbb2Zmc2V0ICsgMV07XG4gICAgfVxuICAgIGlmICghZm9sZClcbiAgICAgICAgZm9sZCA9ICcgJztcbiAgICByZXR1cm4geyBmb2xkLCBvZmZzZXQgfTtcbn1cbmNvbnN0IGVzY2FwZUNvZGVzID0ge1xuICAgICcwJzogJ1xcMCcsIC8vIG51bGwgY2hhcmFjdGVyXG4gICAgYTogJ1xceDA3JywgLy8gYmVsbCBjaGFyYWN0ZXJcbiAgICBiOiAnXFxiJywgLy8gYmFja3NwYWNlXG4gICAgZTogJ1xceDFiJywgLy8gZXNjYXBlIGNoYXJhY3RlclxuICAgIGY6ICdcXGYnLCAvLyBmb3JtIGZlZWRcbiAgICBuOiAnXFxuJywgLy8gbGluZSBmZWVkXG4gICAgcjogJ1xccicsIC8vIGNhcnJpYWdlIHJldHVyblxuICAgIHQ6ICdcXHQnLCAvLyBob3Jpem9udGFsIHRhYlxuICAgIHY6ICdcXHYnLCAvLyB2ZXJ0aWNhbCB0YWJcbiAgICBOOiAnXFx1MDA4NScsIC8vIFVuaWNvZGUgbmV4dCBsaW5lXG4gICAgXzogJ1xcdTAwYTAnLCAvLyBVbmljb2RlIG5vbi1icmVha2luZyBzcGFjZVxuICAgIEw6ICdcXHUyMDI4JywgLy8gVW5pY29kZSBsaW5lIHNlcGFyYXRvclxuICAgIFA6ICdcXHUyMDI5JywgLy8gVW5pY29kZSBwYXJhZ3JhcGggc2VwYXJhdG9yXG4gICAgJyAnOiAnICcsXG4gICAgJ1wiJzogJ1wiJyxcbiAgICAnLyc6ICcvJyxcbiAgICAnXFxcXCc6ICdcXFxcJyxcbiAgICAnXFx0JzogJ1xcdCdcbn07XG5mdW5jdGlvbiBwYXJzZUNoYXJDb2RlKHNvdXJjZSwgb2Zmc2V0LCBsZW5ndGgsIG9uRXJyb3IpIHtcbiAgICBjb25zdCBjYyA9IHNvdXJjZS5zdWJzdHIob2Zmc2V0LCBsZW5ndGgpO1xuICAgIGNvbnN0IG9rID0gY2MubGVuZ3RoID09PSBsZW5ndGggJiYgL15bMC05YS1mQS1GXSskLy50ZXN0KGNjKTtcbiAgICBjb25zdCBjb2RlID0gb2sgPyBwYXJzZUludChjYywgMTYpIDogTmFOO1xuICAgIGlmIChpc05hTihjb2RlKSkge1xuICAgICAgICBjb25zdCByYXcgPSBzb3VyY2Uuc3Vic3RyKG9mZnNldCAtIDIsIGxlbmd0aCArIDIpO1xuICAgICAgICBvbkVycm9yKG9mZnNldCAtIDIsICdCQURfRFFfRVNDQVBFJywgYEludmFsaWQgZXNjYXBlIHNlcXVlbmNlICR7cmF3fWApO1xuICAgICAgICByZXR1cm4gcmF3O1xuICAgIH1cbiAgICByZXR1cm4gU3RyaW5nLmZyb21Db2RlUG9pbnQoY29kZSk7XG59XG5cbmV4cG9ydCB7IHJlc29sdmVGbG93U2NhbGFyIH07XG4iLCAiaW1wb3J0IHsgaXNTY2FsYXIsIFNDQUxBUiB9IGZyb20gJy4uL25vZGVzL2lkZW50aXR5LmpzJztcbmltcG9ydCB7IFNjYWxhciB9IGZyb20gJy4uL25vZGVzL1NjYWxhci5qcyc7XG5pbXBvcnQgeyByZXNvbHZlQmxvY2tTY2FsYXIgfSBmcm9tICcuL3Jlc29sdmUtYmxvY2stc2NhbGFyLmpzJztcbmltcG9ydCB7IHJlc29sdmVGbG93U2NhbGFyIH0gZnJvbSAnLi9yZXNvbHZlLWZsb3ctc2NhbGFyLmpzJztcblxuZnVuY3Rpb24gY29tcG9zZVNjYWxhcihjdHgsIHRva2VuLCB0YWdUb2tlbiwgb25FcnJvcikge1xuICAgIGNvbnN0IHsgdmFsdWUsIHR5cGUsIGNvbW1lbnQsIHJhbmdlIH0gPSB0b2tlbi50eXBlID09PSAnYmxvY2stc2NhbGFyJ1xuICAgICAgICA/IHJlc29sdmVCbG9ja1NjYWxhcihjdHgsIHRva2VuLCBvbkVycm9yKVxuICAgICAgICA6IHJlc29sdmVGbG93U2NhbGFyKHRva2VuLCBjdHgub3B0aW9ucy5zdHJpY3QsIG9uRXJyb3IpO1xuICAgIGNvbnN0IHRhZ05hbWUgPSB0YWdUb2tlblxuICAgICAgICA/IGN0eC5kaXJlY3RpdmVzLnRhZ05hbWUodGFnVG9rZW4uc291cmNlLCBtc2cgPT4gb25FcnJvcih0YWdUb2tlbiwgJ1RBR19SRVNPTFZFX0ZBSUxFRCcsIG1zZykpXG4gICAgICAgIDogbnVsbDtcbiAgICBsZXQgdGFnO1xuICAgIGlmIChjdHgub3B0aW9ucy5zdHJpbmdLZXlzICYmIGN0eC5hdEtleSkge1xuICAgICAgICB0YWcgPSBjdHguc2NoZW1hW1NDQUxBUl07XG4gICAgfVxuICAgIGVsc2UgaWYgKHRhZ05hbWUpXG4gICAgICAgIHRhZyA9IGZpbmRTY2FsYXJUYWdCeU5hbWUoY3R4LnNjaGVtYSwgdmFsdWUsIHRhZ05hbWUsIHRhZ1Rva2VuLCBvbkVycm9yKTtcbiAgICBlbHNlIGlmICh0b2tlbi50eXBlID09PSAnc2NhbGFyJylcbiAgICAgICAgdGFnID0gZmluZFNjYWxhclRhZ0J5VGVzdChjdHgsIHZhbHVlLCB0b2tlbiwgb25FcnJvcik7XG4gICAgZWxzZVxuICAgICAgICB0YWcgPSBjdHguc2NoZW1hW1NDQUxBUl07XG4gICAgbGV0IHNjYWxhcjtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCByZXMgPSB0YWcucmVzb2x2ZSh2YWx1ZSwgbXNnID0+IG9uRXJyb3IodGFnVG9rZW4gPz8gdG9rZW4sICdUQUdfUkVTT0xWRV9GQUlMRUQnLCBtc2cpLCBjdHgub3B0aW9ucyk7XG4gICAgICAgIHNjYWxhciA9IGlzU2NhbGFyKHJlcykgPyByZXMgOiBuZXcgU2NhbGFyKHJlcyk7XG4gICAgfVxuICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zdCBtc2cgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcik7XG4gICAgICAgIG9uRXJyb3IodGFnVG9rZW4gPz8gdG9rZW4sICdUQUdfUkVTT0xWRV9GQUlMRUQnLCBtc2cpO1xuICAgICAgICBzY2FsYXIgPSBuZXcgU2NhbGFyKHZhbHVlKTtcbiAgICB9XG4gICAgc2NhbGFyLnJhbmdlID0gcmFuZ2U7XG4gICAgc2NhbGFyLnNvdXJjZSA9IHZhbHVlO1xuICAgIGlmICh0eXBlKVxuICAgICAgICBzY2FsYXIudHlwZSA9IHR5cGU7XG4gICAgaWYgKHRhZ05hbWUpXG4gICAgICAgIHNjYWxhci50YWcgPSB0YWdOYW1lO1xuICAgIGlmICh0YWcuZm9ybWF0KVxuICAgICAgICBzY2FsYXIuZm9ybWF0ID0gdGFnLmZvcm1hdDtcbiAgICBpZiAoY29tbWVudClcbiAgICAgICAgc2NhbGFyLmNvbW1lbnQgPSBjb21tZW50O1xuICAgIHJldHVybiBzY2FsYXI7XG59XG5mdW5jdGlvbiBmaW5kU2NhbGFyVGFnQnlOYW1lKHNjaGVtYSwgdmFsdWUsIHRhZ05hbWUsIHRhZ1Rva2VuLCBvbkVycm9yKSB7XG4gICAgaWYgKHRhZ05hbWUgPT09ICchJylcbiAgICAgICAgcmV0dXJuIHNjaGVtYVtTQ0FMQVJdOyAvLyBub24tc3BlY2lmaWMgdGFnXG4gICAgY29uc3QgbWF0Y2hXaXRoVGVzdCA9IFtdO1xuICAgIGZvciAoY29uc3QgdGFnIG9mIHNjaGVtYS50YWdzKSB7XG4gICAgICAgIGlmICghdGFnLmNvbGxlY3Rpb24gJiYgdGFnLnRhZyA9PT0gdGFnTmFtZSkge1xuICAgICAgICAgICAgaWYgKHRhZy5kZWZhdWx0ICYmIHRhZy50ZXN0KVxuICAgICAgICAgICAgICAgIG1hdGNoV2l0aFRlc3QucHVzaCh0YWcpO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHJldHVybiB0YWc7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZm9yIChjb25zdCB0YWcgb2YgbWF0Y2hXaXRoVGVzdClcbiAgICAgICAgaWYgKHRhZy50ZXN0Py50ZXN0KHZhbHVlKSlcbiAgICAgICAgICAgIHJldHVybiB0YWc7XG4gICAgY29uc3Qga3QgPSBzY2hlbWEua25vd25UYWdzW3RhZ05hbWVdO1xuICAgIGlmIChrdCAmJiAha3QuY29sbGVjdGlvbikge1xuICAgICAgICAvLyBFbnN1cmUgdGhhdCB0aGUga25vd24gdGFnIGlzIGF2YWlsYWJsZSBmb3Igc3RyaW5naWZ5aW5nLFxuICAgICAgICAvLyBidXQgZG9lcyBub3QgZ2V0IHVzZWQgYnkgZGVmYXVsdC5cbiAgICAgICAgc2NoZW1hLnRhZ3MucHVzaChPYmplY3QuYXNzaWduKHt9LCBrdCwgeyBkZWZhdWx0OiBmYWxzZSwgdGVzdDogdW5kZWZpbmVkIH0pKTtcbiAgICAgICAgcmV0dXJuIGt0O1xuICAgIH1cbiAgICBvbkVycm9yKHRhZ1Rva2VuLCAnVEFHX1JFU09MVkVfRkFJTEVEJywgYFVucmVzb2x2ZWQgdGFnOiAke3RhZ05hbWV9YCwgdGFnTmFtZSAhPT0gJ3RhZzp5YW1sLm9yZywyMDAyOnN0cicpO1xuICAgIHJldHVybiBzY2hlbWFbU0NBTEFSXTtcbn1cbmZ1bmN0aW9uIGZpbmRTY2FsYXJUYWdCeVRlc3QoeyBhdEtleSwgZGlyZWN0aXZlcywgc2NoZW1hIH0sIHZhbHVlLCB0b2tlbiwgb25FcnJvcikge1xuICAgIGNvbnN0IHRhZyA9IHNjaGVtYS50YWdzLmZpbmQodGFnID0+ICh0YWcuZGVmYXVsdCA9PT0gdHJ1ZSB8fCAoYXRLZXkgJiYgdGFnLmRlZmF1bHQgPT09ICdrZXknKSkgJiZcbiAgICAgICAgdGFnLnRlc3Q/LnRlc3QodmFsdWUpKSB8fCBzY2hlbWFbU0NBTEFSXTtcbiAgICBpZiAoc2NoZW1hLmNvbXBhdCkge1xuICAgICAgICBjb25zdCBjb21wYXQgPSBzY2hlbWEuY29tcGF0LmZpbmQodGFnID0+IHRhZy5kZWZhdWx0ICYmIHRhZy50ZXN0Py50ZXN0KHZhbHVlKSkgPz9cbiAgICAgICAgICAgIHNjaGVtYVtTQ0FMQVJdO1xuICAgICAgICBpZiAodGFnLnRhZyAhPT0gY29tcGF0LnRhZykge1xuICAgICAgICAgICAgY29uc3QgdHMgPSBkaXJlY3RpdmVzLnRhZ1N0cmluZyh0YWcudGFnKTtcbiAgICAgICAgICAgIGNvbnN0IGNzID0gZGlyZWN0aXZlcy50YWdTdHJpbmcoY29tcGF0LnRhZyk7XG4gICAgICAgICAgICBjb25zdCBtc2cgPSBgVmFsdWUgbWF5IGJlIHBhcnNlZCBhcyBlaXRoZXIgJHt0c30gb3IgJHtjc31gO1xuICAgICAgICAgICAgb25FcnJvcih0b2tlbiwgJ1RBR19SRVNPTFZFX0ZBSUxFRCcsIG1zZywgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRhZztcbn1cblxuZXhwb3J0IHsgY29tcG9zZVNjYWxhciB9O1xuIiwgImZ1bmN0aW9uIGVtcHR5U2NhbGFyUG9zaXRpb24ob2Zmc2V0LCBiZWZvcmUsIHBvcykge1xuICAgIGlmIChiZWZvcmUpIHtcbiAgICAgICAgaWYgKHBvcyA9PT0gbnVsbClcbiAgICAgICAgICAgIHBvcyA9IGJlZm9yZS5sZW5ndGg7XG4gICAgICAgIGZvciAobGV0IGkgPSBwb3MgLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICAgICAgbGV0IHN0ID0gYmVmb3JlW2ldO1xuICAgICAgICAgICAgc3dpdGNoIChzdC50eXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnc3BhY2UnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2NvbW1lbnQnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ25ld2xpbmUnOlxuICAgICAgICAgICAgICAgICAgICBvZmZzZXQgLT0gc3Quc291cmNlLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBUZWNobmljYWxseSwgYW4gZW1wdHkgc2NhbGFyIGlzIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBsYXN0IG5vbi1lbXB0eVxuICAgICAgICAgICAgLy8gbm9kZSwgYnV0IGl0J3MgbW9yZSB1c2VmdWwgdG8gcGxhY2UgaXQgYWZ0ZXIgYW55IHdoaXRlc3BhY2UuXG4gICAgICAgICAgICBzdCA9IGJlZm9yZVsrK2ldO1xuICAgICAgICAgICAgd2hpbGUgKHN0Py50eXBlID09PSAnc3BhY2UnKSB7XG4gICAgICAgICAgICAgICAgb2Zmc2V0ICs9IHN0LnNvdXJjZS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgc3QgPSBiZWZvcmVbKytpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvZmZzZXQ7XG59XG5cbmV4cG9ydCB7IGVtcHR5U2NhbGFyUG9zaXRpb24gfTtcbiIsICJpbXBvcnQgeyBBbGlhcyB9IGZyb20gJy4uL25vZGVzL0FsaWFzLmpzJztcbmltcG9ydCB7IGlzU2NhbGFyIH0gZnJvbSAnLi4vbm9kZXMvaWRlbnRpdHkuanMnO1xuaW1wb3J0IHsgY29tcG9zZUNvbGxlY3Rpb24gfSBmcm9tICcuL2NvbXBvc2UtY29sbGVjdGlvbi5qcyc7XG5pbXBvcnQgeyBjb21wb3NlU2NhbGFyIH0gZnJvbSAnLi9jb21wb3NlLXNjYWxhci5qcyc7XG5pbXBvcnQgeyByZXNvbHZlRW5kIH0gZnJvbSAnLi9yZXNvbHZlLWVuZC5qcyc7XG5pbXBvcnQgeyBlbXB0eVNjYWxhclBvc2l0aW9uIH0gZnJvbSAnLi91dGlsLWVtcHR5LXNjYWxhci1wb3NpdGlvbi5qcyc7XG5cbmNvbnN0IENOID0geyBjb21wb3NlTm9kZSwgY29tcG9zZUVtcHR5Tm9kZSB9O1xuZnVuY3Rpb24gY29tcG9zZU5vZGUoY3R4LCB0b2tlbiwgcHJvcHMsIG9uRXJyb3IpIHtcbiAgICBjb25zdCBhdEtleSA9IGN0eC5hdEtleTtcbiAgICBjb25zdCB7IHNwYWNlQmVmb3JlLCBjb21tZW50LCBhbmNob3IsIHRhZyB9ID0gcHJvcHM7XG4gICAgbGV0IG5vZGU7XG4gICAgbGV0IGlzU3JjVG9rZW4gPSB0cnVlO1xuICAgIHN3aXRjaCAodG9rZW4udHlwZSkge1xuICAgICAgICBjYXNlICdhbGlhcyc6XG4gICAgICAgICAgICBub2RlID0gY29tcG9zZUFsaWFzKGN0eCwgdG9rZW4sIG9uRXJyb3IpO1xuICAgICAgICAgICAgaWYgKGFuY2hvciB8fCB0YWcpXG4gICAgICAgICAgICAgICAgb25FcnJvcih0b2tlbiwgJ0FMSUFTX1BST1BTJywgJ0FuIGFsaWFzIG5vZGUgbXVzdCBub3Qgc3BlY2lmeSBhbnkgcHJvcGVydGllcycpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3NjYWxhcic6XG4gICAgICAgIGNhc2UgJ3NpbmdsZS1xdW90ZWQtc2NhbGFyJzpcbiAgICAgICAgY2FzZSAnZG91YmxlLXF1b3RlZC1zY2FsYXInOlxuICAgICAgICBjYXNlICdibG9jay1zY2FsYXInOlxuICAgICAgICAgICAgbm9kZSA9IGNvbXBvc2VTY2FsYXIoY3R4LCB0b2tlbiwgdGFnLCBvbkVycm9yKTtcbiAgICAgICAgICAgIGlmIChhbmNob3IpXG4gICAgICAgICAgICAgICAgbm9kZS5hbmNob3IgPSBhbmNob3Iuc291cmNlLnN1YnN0cmluZygxKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdibG9jay1tYXAnOlxuICAgICAgICBjYXNlICdibG9jay1zZXEnOlxuICAgICAgICBjYXNlICdmbG93LWNvbGxlY3Rpb24nOlxuICAgICAgICAgICAgbm9kZSA9IGNvbXBvc2VDb2xsZWN0aW9uKENOLCBjdHgsIHRva2VuLCBwcm9wcywgb25FcnJvcik7XG4gICAgICAgICAgICBpZiAoYW5jaG9yKVxuICAgICAgICAgICAgICAgIG5vZGUuYW5jaG9yID0gYW5jaG9yLnNvdXJjZS5zdWJzdHJpbmcoMSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IHRva2VuLnR5cGUgPT09ICdlcnJvcidcbiAgICAgICAgICAgICAgICA/IHRva2VuLm1lc3NhZ2VcbiAgICAgICAgICAgICAgICA6IGBVbnN1cHBvcnRlZCB0b2tlbiAodHlwZTogJHt0b2tlbi50eXBlfSlgO1xuICAgICAgICAgICAgb25FcnJvcih0b2tlbiwgJ1VORVhQRUNURURfVE9LRU4nLCBtZXNzYWdlKTtcbiAgICAgICAgICAgIG5vZGUgPSBjb21wb3NlRW1wdHlOb2RlKGN0eCwgdG9rZW4ub2Zmc2V0LCB1bmRlZmluZWQsIG51bGwsIHByb3BzLCBvbkVycm9yKTtcbiAgICAgICAgICAgIGlzU3JjVG9rZW4gPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoYW5jaG9yICYmIG5vZGUuYW5jaG9yID09PSAnJylcbiAgICAgICAgb25FcnJvcihhbmNob3IsICdCQURfQUxJQVMnLCAnQW5jaG9yIGNhbm5vdCBiZSBhbiBlbXB0eSBzdHJpbmcnKTtcbiAgICBpZiAoYXRLZXkgJiZcbiAgICAgICAgY3R4Lm9wdGlvbnMuc3RyaW5nS2V5cyAmJlxuICAgICAgICAoIWlzU2NhbGFyKG5vZGUpIHx8XG4gICAgICAgICAgICB0eXBlb2Ygbm9kZS52YWx1ZSAhPT0gJ3N0cmluZycgfHxcbiAgICAgICAgICAgIChub2RlLnRhZyAmJiBub2RlLnRhZyAhPT0gJ3RhZzp5YW1sLm9yZywyMDAyOnN0cicpKSkge1xuICAgICAgICBjb25zdCBtc2cgPSAnV2l0aCBzdHJpbmdLZXlzLCBhbGwga2V5cyBtdXN0IGJlIHN0cmluZ3MnO1xuICAgICAgICBvbkVycm9yKHRhZyA/PyB0b2tlbiwgJ05PTl9TVFJJTkdfS0VZJywgbXNnKTtcbiAgICB9XG4gICAgaWYgKHNwYWNlQmVmb3JlKVxuICAgICAgICBub2RlLnNwYWNlQmVmb3JlID0gdHJ1ZTtcbiAgICBpZiAoY29tbWVudCkge1xuICAgICAgICBpZiAodG9rZW4udHlwZSA9PT0gJ3NjYWxhcicgJiYgdG9rZW4uc291cmNlID09PSAnJylcbiAgICAgICAgICAgIG5vZGUuY29tbWVudCA9IGNvbW1lbnQ7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIG5vZGUuY29tbWVudEJlZm9yZSA9IGNvbW1lbnQ7XG4gICAgfVxuICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgVHlwZSBjaGVja2luZyBtaXNzZXMgbWVhbmluZyBvZiBpc1NyY1Rva2VuXG4gICAgaWYgKGN0eC5vcHRpb25zLmtlZXBTb3VyY2VUb2tlbnMgJiYgaXNTcmNUb2tlbilcbiAgICAgICAgbm9kZS5zcmNUb2tlbiA9IHRva2VuO1xuICAgIHJldHVybiBub2RlO1xufVxuZnVuY3Rpb24gY29tcG9zZUVtcHR5Tm9kZShjdHgsIG9mZnNldCwgYmVmb3JlLCBwb3MsIHsgc3BhY2VCZWZvcmUsIGNvbW1lbnQsIGFuY2hvciwgdGFnLCBlbmQgfSwgb25FcnJvcikge1xuICAgIGNvbnN0IHRva2VuID0ge1xuICAgICAgICB0eXBlOiAnc2NhbGFyJyxcbiAgICAgICAgb2Zmc2V0OiBlbXB0eVNjYWxhclBvc2l0aW9uKG9mZnNldCwgYmVmb3JlLCBwb3MpLFxuICAgICAgICBpbmRlbnQ6IC0xLFxuICAgICAgICBzb3VyY2U6ICcnXG4gICAgfTtcbiAgICBjb25zdCBub2RlID0gY29tcG9zZVNjYWxhcihjdHgsIHRva2VuLCB0YWcsIG9uRXJyb3IpO1xuICAgIGlmIChhbmNob3IpIHtcbiAgICAgICAgbm9kZS5hbmNob3IgPSBhbmNob3Iuc291cmNlLnN1YnN0cmluZygxKTtcbiAgICAgICAgaWYgKG5vZGUuYW5jaG9yID09PSAnJylcbiAgICAgICAgICAgIG9uRXJyb3IoYW5jaG9yLCAnQkFEX0FMSUFTJywgJ0FuY2hvciBjYW5ub3QgYmUgYW4gZW1wdHkgc3RyaW5nJyk7XG4gICAgfVxuICAgIGlmIChzcGFjZUJlZm9yZSlcbiAgICAgICAgbm9kZS5zcGFjZUJlZm9yZSA9IHRydWU7XG4gICAgaWYgKGNvbW1lbnQpIHtcbiAgICAgICAgbm9kZS5jb21tZW50ID0gY29tbWVudDtcbiAgICAgICAgbm9kZS5yYW5nZVsyXSA9IGVuZDtcbiAgICB9XG4gICAgcmV0dXJuIG5vZGU7XG59XG5mdW5jdGlvbiBjb21wb3NlQWxpYXMoeyBvcHRpb25zIH0sIHsgb2Zmc2V0LCBzb3VyY2UsIGVuZCB9LCBvbkVycm9yKSB7XG4gICAgY29uc3QgYWxpYXMgPSBuZXcgQWxpYXMoc291cmNlLnN1YnN0cmluZygxKSk7XG4gICAgaWYgKGFsaWFzLnNvdXJjZSA9PT0gJycpXG4gICAgICAgIG9uRXJyb3Iob2Zmc2V0LCAnQkFEX0FMSUFTJywgJ0FsaWFzIGNhbm5vdCBiZSBhbiBlbXB0eSBzdHJpbmcnKTtcbiAgICBpZiAoYWxpYXMuc291cmNlLmVuZHNXaXRoKCc6JykpXG4gICAgICAgIG9uRXJyb3Iob2Zmc2V0ICsgc291cmNlLmxlbmd0aCAtIDEsICdCQURfQUxJQVMnLCAnQWxpYXMgZW5kaW5nIGluIDogaXMgYW1iaWd1b3VzJywgdHJ1ZSk7XG4gICAgY29uc3QgdmFsdWVFbmQgPSBvZmZzZXQgKyBzb3VyY2UubGVuZ3RoO1xuICAgIGNvbnN0IHJlID0gcmVzb2x2ZUVuZChlbmQsIHZhbHVlRW5kLCBvcHRpb25zLnN0cmljdCwgb25FcnJvcik7XG4gICAgYWxpYXMucmFuZ2UgPSBbb2Zmc2V0LCB2YWx1ZUVuZCwgcmUub2Zmc2V0XTtcbiAgICBpZiAocmUuY29tbWVudClcbiAgICAgICAgYWxpYXMuY29tbWVudCA9IHJlLmNvbW1lbnQ7XG4gICAgcmV0dXJuIGFsaWFzO1xufVxuXG5leHBvcnQgeyBjb21wb3NlRW1wdHlOb2RlLCBjb21wb3NlTm9kZSB9O1xuIiwgImltcG9ydCB7IERvY3VtZW50IH0gZnJvbSAnLi4vZG9jL0RvY3VtZW50LmpzJztcbmltcG9ydCB7IGNvbXBvc2VOb2RlLCBjb21wb3NlRW1wdHlOb2RlIH0gZnJvbSAnLi9jb21wb3NlLW5vZGUuanMnO1xuaW1wb3J0IHsgcmVzb2x2ZUVuZCB9IGZyb20gJy4vcmVzb2x2ZS1lbmQuanMnO1xuaW1wb3J0IHsgcmVzb2x2ZVByb3BzIH0gZnJvbSAnLi9yZXNvbHZlLXByb3BzLmpzJztcblxuZnVuY3Rpb24gY29tcG9zZURvYyhvcHRpb25zLCBkaXJlY3RpdmVzLCB7IG9mZnNldCwgc3RhcnQsIHZhbHVlLCBlbmQgfSwgb25FcnJvcikge1xuICAgIGNvbnN0IG9wdHMgPSBPYmplY3QuYXNzaWduKHsgX2RpcmVjdGl2ZXM6IGRpcmVjdGl2ZXMgfSwgb3B0aW9ucyk7XG4gICAgY29uc3QgZG9jID0gbmV3IERvY3VtZW50KHVuZGVmaW5lZCwgb3B0cyk7XG4gICAgY29uc3QgY3R4ID0ge1xuICAgICAgICBhdEtleTogZmFsc2UsXG4gICAgICAgIGF0Um9vdDogdHJ1ZSxcbiAgICAgICAgZGlyZWN0aXZlczogZG9jLmRpcmVjdGl2ZXMsXG4gICAgICAgIG9wdGlvbnM6IGRvYy5vcHRpb25zLFxuICAgICAgICBzY2hlbWE6IGRvYy5zY2hlbWFcbiAgICB9O1xuICAgIGNvbnN0IHByb3BzID0gcmVzb2x2ZVByb3BzKHN0YXJ0LCB7XG4gICAgICAgIGluZGljYXRvcjogJ2RvYy1zdGFydCcsXG4gICAgICAgIG5leHQ6IHZhbHVlID8/IGVuZD8uWzBdLFxuICAgICAgICBvZmZzZXQsXG4gICAgICAgIG9uRXJyb3IsXG4gICAgICAgIHBhcmVudEluZGVudDogMCxcbiAgICAgICAgc3RhcnRPbk5ld2xpbmU6IHRydWVcbiAgICB9KTtcbiAgICBpZiAocHJvcHMuZm91bmQpIHtcbiAgICAgICAgZG9jLmRpcmVjdGl2ZXMuZG9jU3RhcnQgPSB0cnVlO1xuICAgICAgICBpZiAodmFsdWUgJiZcbiAgICAgICAgICAgICh2YWx1ZS50eXBlID09PSAnYmxvY2stbWFwJyB8fCB2YWx1ZS50eXBlID09PSAnYmxvY2stc2VxJykgJiZcbiAgICAgICAgICAgICFwcm9wcy5oYXNOZXdsaW5lKVxuICAgICAgICAgICAgb25FcnJvcihwcm9wcy5lbmQsICdNSVNTSU5HX0NIQVInLCAnQmxvY2sgY29sbGVjdGlvbiBjYW5ub3Qgc3RhcnQgb24gc2FtZSBsaW5lIHdpdGggZGlyZWN0aXZlcy1lbmQgbWFya2VyJyk7XG4gICAgfVxuICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgSWYgQ29udGVudHMgaXMgc2V0LCBsZXQncyB0cnVzdCB0aGUgdXNlclxuICAgIGRvYy5jb250ZW50cyA9IHZhbHVlXG4gICAgICAgID8gY29tcG9zZU5vZGUoY3R4LCB2YWx1ZSwgcHJvcHMsIG9uRXJyb3IpXG4gICAgICAgIDogY29tcG9zZUVtcHR5Tm9kZShjdHgsIHByb3BzLmVuZCwgc3RhcnQsIG51bGwsIHByb3BzLCBvbkVycm9yKTtcbiAgICBjb25zdCBjb250ZW50RW5kID0gZG9jLmNvbnRlbnRzLnJhbmdlWzJdO1xuICAgIGNvbnN0IHJlID0gcmVzb2x2ZUVuZChlbmQsIGNvbnRlbnRFbmQsIGZhbHNlLCBvbkVycm9yKTtcbiAgICBpZiAocmUuY29tbWVudClcbiAgICAgICAgZG9jLmNvbW1lbnQgPSByZS5jb21tZW50O1xuICAgIGRvYy5yYW5nZSA9IFtvZmZzZXQsIGNvbnRlbnRFbmQsIHJlLm9mZnNldF07XG4gICAgcmV0dXJuIGRvYztcbn1cblxuZXhwb3J0IHsgY29tcG9zZURvYyB9O1xuIiwgImltcG9ydCB7IERpcmVjdGl2ZXMgfSBmcm9tICcuLi9kb2MvZGlyZWN0aXZlcy5qcyc7XG5pbXBvcnQgeyBEb2N1bWVudCB9IGZyb20gJy4uL2RvYy9Eb2N1bWVudC5qcyc7XG5pbXBvcnQgeyBZQU1MV2FybmluZywgWUFNTFBhcnNlRXJyb3IgfSBmcm9tICcuLi9lcnJvcnMuanMnO1xuaW1wb3J0IHsgaXNDb2xsZWN0aW9uLCBpc1BhaXIgfSBmcm9tICcuLi9ub2Rlcy9pZGVudGl0eS5qcyc7XG5pbXBvcnQgeyBjb21wb3NlRG9jIH0gZnJvbSAnLi9jb21wb3NlLWRvYy5qcyc7XG5pbXBvcnQgeyByZXNvbHZlRW5kIH0gZnJvbSAnLi9yZXNvbHZlLWVuZC5qcyc7XG5cbmZ1bmN0aW9uIGdldEVycm9yUG9zKHNyYykge1xuICAgIGlmICh0eXBlb2Ygc3JjID09PSAnbnVtYmVyJylcbiAgICAgICAgcmV0dXJuIFtzcmMsIHNyYyArIDFdO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHNyYykpXG4gICAgICAgIHJldHVybiBzcmMubGVuZ3RoID09PSAyID8gc3JjIDogW3NyY1swXSwgc3JjWzFdXTtcbiAgICBjb25zdCB7IG9mZnNldCwgc291cmNlIH0gPSBzcmM7XG4gICAgcmV0dXJuIFtvZmZzZXQsIG9mZnNldCArICh0eXBlb2Ygc291cmNlID09PSAnc3RyaW5nJyA/IHNvdXJjZS5sZW5ndGggOiAxKV07XG59XG5mdW5jdGlvbiBwYXJzZVByZWx1ZGUocHJlbHVkZSkge1xuICAgIGxldCBjb21tZW50ID0gJyc7XG4gICAgbGV0IGF0Q29tbWVudCA9IGZhbHNlO1xuICAgIGxldCBhZnRlckVtcHR5TGluZSA9IGZhbHNlO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJlbHVkZS5sZW5ndGg7ICsraSkge1xuICAgICAgICBjb25zdCBzb3VyY2UgPSBwcmVsdWRlW2ldO1xuICAgICAgICBzd2l0Y2ggKHNvdXJjZVswXSkge1xuICAgICAgICAgICAgY2FzZSAnIyc6XG4gICAgICAgICAgICAgICAgY29tbWVudCArPVxuICAgICAgICAgICAgICAgICAgICAoY29tbWVudCA9PT0gJycgPyAnJyA6IGFmdGVyRW1wdHlMaW5lID8gJ1xcblxcbicgOiAnXFxuJykgK1xuICAgICAgICAgICAgICAgICAgICAgICAgKHNvdXJjZS5zdWJzdHJpbmcoMSkgfHwgJyAnKTtcbiAgICAgICAgICAgICAgICBhdENvbW1lbnQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGFmdGVyRW1wdHlMaW5lID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICclJzpcbiAgICAgICAgICAgICAgICBpZiAocHJlbHVkZVtpICsgMV0/LlswXSAhPT0gJyMnKVxuICAgICAgICAgICAgICAgICAgICBpICs9IDE7XG4gICAgICAgICAgICAgICAgYXRDb21tZW50ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIC8vIFRoaXMgbWF5IGJlIHdyb25nIGFmdGVyIGRvYy1lbmQsIGJ1dCBpbiB0aGF0IGNhc2UgaXQgZG9lc24ndCBtYXR0ZXJcbiAgICAgICAgICAgICAgICBpZiAoIWF0Q29tbWVudClcbiAgICAgICAgICAgICAgICAgICAgYWZ0ZXJFbXB0eUxpbmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGF0Q29tbWVudCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7IGNvbW1lbnQsIGFmdGVyRW1wdHlMaW5lIH07XG59XG4vKipcbiAqIENvbXBvc2UgYSBzdHJlYW0gb2YgQ1NUIG5vZGVzIGludG8gYSBzdHJlYW0gb2YgWUFNTCBEb2N1bWVudHMuXG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IENvbXBvc2VyLCBQYXJzZXIgfSBmcm9tICd5YW1sJ1xuICpcbiAqIGNvbnN0IHNyYzogc3RyaW5nID0gLi4uXG4gKiBjb25zdCB0b2tlbnMgPSBuZXcgUGFyc2VyKCkucGFyc2Uoc3JjKVxuICogY29uc3QgZG9jcyA9IG5ldyBDb21wb3NlcigpLmNvbXBvc2UodG9rZW5zKVxuICogYGBgXG4gKi9cbmNsYXNzIENvbXBvc2VyIHtcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zID0ge30pIHtcbiAgICAgICAgdGhpcy5kb2MgPSBudWxsO1xuICAgICAgICB0aGlzLmF0RGlyZWN0aXZlcyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnByZWx1ZGUgPSBbXTtcbiAgICAgICAgdGhpcy5lcnJvcnMgPSBbXTtcbiAgICAgICAgdGhpcy53YXJuaW5ncyA9IFtdO1xuICAgICAgICB0aGlzLm9uRXJyb3IgPSAoc291cmNlLCBjb2RlLCBtZXNzYWdlLCB3YXJuaW5nKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwb3MgPSBnZXRFcnJvclBvcyhzb3VyY2UpO1xuICAgICAgICAgICAgaWYgKHdhcm5pbmcpXG4gICAgICAgICAgICAgICAgdGhpcy53YXJuaW5ncy5wdXNoKG5ldyBZQU1MV2FybmluZyhwb3MsIGNvZGUsIG1lc3NhZ2UpKTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICB0aGlzLmVycm9ycy5wdXNoKG5ldyBZQU1MUGFyc2VFcnJvcihwb3MsIGNvZGUsIG1lc3NhZ2UpKTtcbiAgICAgICAgfTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9wcmVmZXItbnVsbGlzaC1jb2FsZXNjaW5nXG4gICAgICAgIHRoaXMuZGlyZWN0aXZlcyA9IG5ldyBEaXJlY3RpdmVzKHsgdmVyc2lvbjogb3B0aW9ucy52ZXJzaW9uIHx8ICcxLjInIH0pO1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIH1cbiAgICBkZWNvcmF0ZShkb2MsIGFmdGVyRG9jKSB7XG4gICAgICAgIGNvbnN0IHsgY29tbWVudCwgYWZ0ZXJFbXB0eUxpbmUgfSA9IHBhcnNlUHJlbHVkZSh0aGlzLnByZWx1ZGUpO1xuICAgICAgICAvL2NvbnNvbGUubG9nKHsgZGM6IGRvYy5jb21tZW50LCBwcmVsdWRlLCBjb21tZW50IH0pXG4gICAgICAgIGlmIChjb21tZW50KSB7XG4gICAgICAgICAgICBjb25zdCBkYyA9IGRvYy5jb250ZW50cztcbiAgICAgICAgICAgIGlmIChhZnRlckRvYykge1xuICAgICAgICAgICAgICAgIGRvYy5jb21tZW50ID0gZG9jLmNvbW1lbnQgPyBgJHtkb2MuY29tbWVudH1cXG4ke2NvbW1lbnR9YCA6IGNvbW1lbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChhZnRlckVtcHR5TGluZSB8fCBkb2MuZGlyZWN0aXZlcy5kb2NTdGFydCB8fCAhZGMpIHtcbiAgICAgICAgICAgICAgICBkb2MuY29tbWVudEJlZm9yZSA9IGNvbW1lbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChpc0NvbGxlY3Rpb24oZGMpICYmICFkYy5mbG93ICYmIGRjLml0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBsZXQgaXQgPSBkYy5pdGVtc1swXTtcbiAgICAgICAgICAgICAgICBpZiAoaXNQYWlyKGl0KSlcbiAgICAgICAgICAgICAgICAgICAgaXQgPSBpdC5rZXk7XG4gICAgICAgICAgICAgICAgY29uc3QgY2IgPSBpdC5jb21tZW50QmVmb3JlO1xuICAgICAgICAgICAgICAgIGl0LmNvbW1lbnRCZWZvcmUgPSBjYiA/IGAke2NvbW1lbnR9XFxuJHtjYn1gIDogY29tbWVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNiID0gZGMuY29tbWVudEJlZm9yZTtcbiAgICAgICAgICAgICAgICBkYy5jb21tZW50QmVmb3JlID0gY2IgPyBgJHtjb21tZW50fVxcbiR7Y2J9YCA6IGNvbW1lbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFmdGVyRG9jKSB7XG4gICAgICAgICAgICBBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShkb2MuZXJyb3JzLCB0aGlzLmVycm9ycyk7XG4gICAgICAgICAgICBBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShkb2Mud2FybmluZ3MsIHRoaXMud2FybmluZ3MpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZG9jLmVycm9ycyA9IHRoaXMuZXJyb3JzO1xuICAgICAgICAgICAgZG9jLndhcm5pbmdzID0gdGhpcy53YXJuaW5ncztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnByZWx1ZGUgPSBbXTtcbiAgICAgICAgdGhpcy5lcnJvcnMgPSBbXTtcbiAgICAgICAgdGhpcy53YXJuaW5ncyA9IFtdO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDdXJyZW50IHN0cmVhbSBzdGF0dXMgaW5mb3JtYXRpb24uXG4gICAgICpcbiAgICAgKiBNb3N0bHkgdXNlZnVsIGF0IHRoZSBlbmQgb2YgaW5wdXQgZm9yIGFuIGVtcHR5IHN0cmVhbS5cbiAgICAgKi9cbiAgICBzdHJlYW1JbmZvKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY29tbWVudDogcGFyc2VQcmVsdWRlKHRoaXMucHJlbHVkZSkuY29tbWVudCxcbiAgICAgICAgICAgIGRpcmVjdGl2ZXM6IHRoaXMuZGlyZWN0aXZlcyxcbiAgICAgICAgICAgIGVycm9yczogdGhpcy5lcnJvcnMsXG4gICAgICAgICAgICB3YXJuaW5nczogdGhpcy53YXJuaW5nc1xuICAgICAgICB9O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDb21wb3NlIHRva2VucyBpbnRvIGRvY3VtZW50cy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBmb3JjZURvYyAtIElmIHRoZSBzdHJlYW0gY29udGFpbnMgbm8gZG9jdW1lbnQsIHN0aWxsIGVtaXQgYSBmaW5hbCBkb2N1bWVudCBpbmNsdWRpbmcgYW55IGNvbW1lbnRzIGFuZCBkaXJlY3RpdmVzIHRoYXQgd291bGQgYmUgYXBwbGllZCB0byBhIHN1YnNlcXVlbnQgZG9jdW1lbnQuXG4gICAgICogQHBhcmFtIGVuZE9mZnNldCAtIFNob3VsZCBiZSBzZXQgaWYgYGZvcmNlRG9jYCBpcyBhbHNvIHNldCwgdG8gc2V0IHRoZSBkb2N1bWVudCByYW5nZSBlbmQgYW5kIHRvIGluZGljYXRlIGVycm9ycyBjb3JyZWN0bHkuXG4gICAgICovXG4gICAgKmNvbXBvc2UodG9rZW5zLCBmb3JjZURvYyA9IGZhbHNlLCBlbmRPZmZzZXQgPSAtMSkge1xuICAgICAgICBmb3IgKGNvbnN0IHRva2VuIG9mIHRva2VucylcbiAgICAgICAgICAgIHlpZWxkKiB0aGlzLm5leHQodG9rZW4pO1xuICAgICAgICB5aWVsZCogdGhpcy5lbmQoZm9yY2VEb2MsIGVuZE9mZnNldCk7XG4gICAgfVxuICAgIC8qKiBBZHZhbmNlIHRoZSBjb21wb3NlciBieSBvbmUgQ1NUIHRva2VuLiAqL1xuICAgICpuZXh0KHRva2VuKSB7XG4gICAgICAgIHN3aXRjaCAodG9rZW4udHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnZGlyZWN0aXZlJzpcbiAgICAgICAgICAgICAgICB0aGlzLmRpcmVjdGl2ZXMuYWRkKHRva2VuLnNvdXJjZSwgKG9mZnNldCwgbWVzc2FnZSwgd2FybmluZykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwb3MgPSBnZXRFcnJvclBvcyh0b2tlbik7XG4gICAgICAgICAgICAgICAgICAgIHBvc1swXSArPSBvZmZzZXQ7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25FcnJvcihwb3MsICdCQURfRElSRUNUSVZFJywgbWVzc2FnZSwgd2FybmluZyk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5wcmVsdWRlLnB1c2godG9rZW4uc291cmNlKTtcbiAgICAgICAgICAgICAgICB0aGlzLmF0RGlyZWN0aXZlcyA9IHRydWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdkb2N1bWVudCc6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBkb2MgPSBjb21wb3NlRG9jKHRoaXMub3B0aW9ucywgdGhpcy5kaXJlY3RpdmVzLCB0b2tlbiwgdGhpcy5vbkVycm9yKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5hdERpcmVjdGl2ZXMgJiYgIWRvYy5kaXJlY3RpdmVzLmRvY1N0YXJ0KVxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uRXJyb3IodG9rZW4sICdNSVNTSU5HX0NIQVInLCAnTWlzc2luZyBkaXJlY3RpdmVzLWVuZC9kb2Mtc3RhcnQgaW5kaWNhdG9yIGxpbmUnKTtcbiAgICAgICAgICAgICAgICB0aGlzLmRlY29yYXRlKGRvYywgZmFsc2UpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRvYylcbiAgICAgICAgICAgICAgICAgICAgeWllbGQgdGhpcy5kb2M7XG4gICAgICAgICAgICAgICAgdGhpcy5kb2MgPSBkb2M7XG4gICAgICAgICAgICAgICAgdGhpcy5hdERpcmVjdGl2ZXMgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ2J5dGUtb3JkZXItbWFyayc6XG4gICAgICAgICAgICBjYXNlICdzcGFjZSc6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdjb21tZW50JzpcbiAgICAgICAgICAgIGNhc2UgJ25ld2xpbmUnOlxuICAgICAgICAgICAgICAgIHRoaXMucHJlbHVkZS5wdXNoKHRva2VuLnNvdXJjZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdlcnJvcic6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBtc2cgPSB0b2tlbi5zb3VyY2VcbiAgICAgICAgICAgICAgICAgICAgPyBgJHt0b2tlbi5tZXNzYWdlfTogJHtKU09OLnN0cmluZ2lmeSh0b2tlbi5zb3VyY2UpfWBcbiAgICAgICAgICAgICAgICAgICAgOiB0b2tlbi5tZXNzYWdlO1xuICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yID0gbmV3IFlBTUxQYXJzZUVycm9yKGdldEVycm9yUG9zKHRva2VuKSwgJ1VORVhQRUNURURfVE9LRU4nLCBtc2cpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmF0RGlyZWN0aXZlcyB8fCAhdGhpcy5kb2MpXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JzLnB1c2goZXJyb3IpO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kb2MuZXJyb3JzLnB1c2goZXJyb3IpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnZG9jLWVuZCc6IHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZG9jKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1zZyA9ICdVbmV4cGVjdGVkIGRvYy1lbmQgd2l0aG91dCBwcmVjZWRpbmcgZG9jdW1lbnQnO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVycm9ycy5wdXNoKG5ldyBZQU1MUGFyc2VFcnJvcihnZXRFcnJvclBvcyh0b2tlbiksICdVTkVYUEVDVEVEX1RPS0VOJywgbXNnKSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmRvYy5kaXJlY3RpdmVzLmRvY0VuZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgY29uc3QgZW5kID0gcmVzb2x2ZUVuZCh0b2tlbi5lbmQsIHRva2VuLm9mZnNldCArIHRva2VuLnNvdXJjZS5sZW5ndGgsIHRoaXMuZG9jLm9wdGlvbnMuc3RyaWN0LCB0aGlzLm9uRXJyb3IpO1xuICAgICAgICAgICAgICAgIHRoaXMuZGVjb3JhdGUodGhpcy5kb2MsIHRydWUpO1xuICAgICAgICAgICAgICAgIGlmIChlbmQuY29tbWVudCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkYyA9IHRoaXMuZG9jLmNvbW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZG9jLmNvbW1lbnQgPSBkYyA/IGAke2RjfVxcbiR7ZW5kLmNvbW1lbnR9YCA6IGVuZC5jb21tZW50O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmRvYy5yYW5nZVsyXSA9IGVuZC5vZmZzZXQ7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JzLnB1c2gobmV3IFlBTUxQYXJzZUVycm9yKGdldEVycm9yUG9zKHRva2VuKSwgJ1VORVhQRUNURURfVE9LRU4nLCBgVW5zdXBwb3J0ZWQgdG9rZW4gJHt0b2tlbi50eXBlfWApKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBDYWxsIGF0IGVuZCBvZiBpbnB1dCB0byB5aWVsZCBhbnkgcmVtYWluaW5nIGRvY3VtZW50LlxuICAgICAqXG4gICAgICogQHBhcmFtIGZvcmNlRG9jIC0gSWYgdGhlIHN0cmVhbSBjb250YWlucyBubyBkb2N1bWVudCwgc3RpbGwgZW1pdCBhIGZpbmFsIGRvY3VtZW50IGluY2x1ZGluZyBhbnkgY29tbWVudHMgYW5kIGRpcmVjdGl2ZXMgdGhhdCB3b3VsZCBiZSBhcHBsaWVkIHRvIGEgc3Vic2VxdWVudCBkb2N1bWVudC5cbiAgICAgKiBAcGFyYW0gZW5kT2Zmc2V0IC0gU2hvdWxkIGJlIHNldCBpZiBgZm9yY2VEb2NgIGlzIGFsc28gc2V0LCB0byBzZXQgdGhlIGRvY3VtZW50IHJhbmdlIGVuZCBhbmQgdG8gaW5kaWNhdGUgZXJyb3JzIGNvcnJlY3RseS5cbiAgICAgKi9cbiAgICAqZW5kKGZvcmNlRG9jID0gZmFsc2UsIGVuZE9mZnNldCA9IC0xKSB7XG4gICAgICAgIGlmICh0aGlzLmRvYykge1xuICAgICAgICAgICAgdGhpcy5kZWNvcmF0ZSh0aGlzLmRvYywgdHJ1ZSk7XG4gICAgICAgICAgICB5aWVsZCB0aGlzLmRvYztcbiAgICAgICAgICAgIHRoaXMuZG9jID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChmb3JjZURvYykge1xuICAgICAgICAgICAgY29uc3Qgb3B0cyA9IE9iamVjdC5hc3NpZ24oeyBfZGlyZWN0aXZlczogdGhpcy5kaXJlY3RpdmVzIH0sIHRoaXMub3B0aW9ucyk7XG4gICAgICAgICAgICBjb25zdCBkb2MgPSBuZXcgRG9jdW1lbnQodW5kZWZpbmVkLCBvcHRzKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmF0RGlyZWN0aXZlcylcbiAgICAgICAgICAgICAgICB0aGlzLm9uRXJyb3IoZW5kT2Zmc2V0LCAnTUlTU0lOR19DSEFSJywgJ01pc3NpbmcgZGlyZWN0aXZlcy1lbmQgaW5kaWNhdG9yIGxpbmUnKTtcbiAgICAgICAgICAgIGRvYy5yYW5nZSA9IFswLCBlbmRPZmZzZXQsIGVuZE9mZnNldF07XG4gICAgICAgICAgICB0aGlzLmRlY29yYXRlKGRvYywgZmFsc2UpO1xuICAgICAgICAgICAgeWllbGQgZG9jO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgeyBDb21wb3NlciB9O1xuIiwgImNvbnN0IEJSRUFLID0gU3ltYm9sKCdicmVhayB2aXNpdCcpO1xuY29uc3QgU0tJUCA9IFN5bWJvbCgnc2tpcCBjaGlsZHJlbicpO1xuY29uc3QgUkVNT1ZFID0gU3ltYm9sKCdyZW1vdmUgaXRlbScpO1xuLyoqXG4gKiBBcHBseSBhIHZpc2l0b3IgdG8gYSBDU1QgZG9jdW1lbnQgb3IgaXRlbS5cbiAqXG4gKiBXYWxrcyB0aHJvdWdoIHRoZSB0cmVlIChkZXB0aC1maXJzdCkgc3RhcnRpbmcgZnJvbSB0aGUgcm9vdCwgY2FsbGluZyBhXG4gKiBgdmlzaXRvcmAgZnVuY3Rpb24gd2l0aCB0d28gYXJndW1lbnRzIHdoZW4gZW50ZXJpbmcgZWFjaCBpdGVtOlxuICogICAtIGBpdGVtYDogVGhlIGN1cnJlbnQgaXRlbSwgd2hpY2ggaW5jbHVkZWQgdGhlIGZvbGxvd2luZyBtZW1iZXJzOlxuICogICAgIC0gYHN0YXJ0OiBTb3VyY2VUb2tlbltdYCBcdTIwMTMgU291cmNlIHRva2VucyBiZWZvcmUgdGhlIGtleSBvciB2YWx1ZSxcbiAqICAgICAgIHBvc3NpYmx5IGluY2x1ZGluZyBpdHMgYW5jaG9yIG9yIHRhZy5cbiAqICAgICAtIGBrZXk/OiBUb2tlbiB8IG51bGxgIFx1MjAxMyBTZXQgZm9yIHBhaXIgdmFsdWVzLiBNYXkgdGhlbiBiZSBgbnVsbGAsIGlmXG4gKiAgICAgICB0aGUga2V5IGJlZm9yZSB0aGUgYDpgIHNlcGFyYXRvciBpcyBlbXB0eS5cbiAqICAgICAtIGBzZXA/OiBTb3VyY2VUb2tlbltdYCBcdTIwMTMgU291cmNlIHRva2VucyBiZXR3ZWVuIHRoZSBrZXkgYW5kIHRoZSB2YWx1ZSxcbiAqICAgICAgIHdoaWNoIHNob3VsZCBpbmNsdWRlIHRoZSBgOmAgbWFwIHZhbHVlIGluZGljYXRvciBpZiBgdmFsdWVgIGlzIHNldC5cbiAqICAgICAtIGB2YWx1ZT86IFRva2VuYCBcdTIwMTMgVGhlIHZhbHVlIG9mIGEgc2VxdWVuY2UgaXRlbSwgb3Igb2YgYSBtYXAgcGFpci5cbiAqICAgLSBgcGF0aGA6IFRoZSBzdGVwcyBmcm9tIHRoZSByb290IHRvIHRoZSBjdXJyZW50IG5vZGUsIGFzIGFuIGFycmF5IG9mXG4gKiAgICAgYFsna2V5JyB8ICd2YWx1ZScsIG51bWJlcl1gIHR1cGxlcy5cbiAqXG4gKiBUaGUgcmV0dXJuIHZhbHVlIG9mIHRoZSB2aXNpdG9yIG1heSBiZSB1c2VkIHRvIGNvbnRyb2wgdGhlIHRyYXZlcnNhbDpcbiAqICAgLSBgdW5kZWZpbmVkYCAoZGVmYXVsdCk6IERvIG5vdGhpbmcgYW5kIGNvbnRpbnVlXG4gKiAgIC0gYHZpc2l0LlNLSVBgOiBEbyBub3QgdmlzaXQgdGhlIGNoaWxkcmVuIG9mIHRoaXMgdG9rZW4sIGNvbnRpbnVlIHdpdGhcbiAqICAgICAgbmV4dCBzaWJsaW5nXG4gKiAgIC0gYHZpc2l0LkJSRUFLYDogVGVybWluYXRlIHRyYXZlcnNhbCBjb21wbGV0ZWx5XG4gKiAgIC0gYHZpc2l0LlJFTU9WRWA6IFJlbW92ZSB0aGUgY3VycmVudCBpdGVtLCB0aGVuIGNvbnRpbnVlIHdpdGggdGhlIG5leHQgb25lXG4gKiAgIC0gYG51bWJlcmA6IFNldCB0aGUgaW5kZXggb2YgdGhlIG5leHQgc3RlcC4gVGhpcyBpcyB1c2VmdWwgZXNwZWNpYWxseSBpZlxuICogICAgIHRoZSBpbmRleCBvZiB0aGUgY3VycmVudCB0b2tlbiBoYXMgY2hhbmdlZC5cbiAqICAgLSBgZnVuY3Rpb25gOiBEZWZpbmUgdGhlIG5leHQgdmlzaXRvciBmb3IgdGhpcyBpdGVtLiBBZnRlciB0aGUgb3JpZ2luYWxcbiAqICAgICB2aXNpdG9yIGlzIGNhbGxlZCBvbiBpdGVtIGVudHJ5LCBuZXh0IHZpc2l0b3JzIGFyZSBjYWxsZWQgYWZ0ZXIgaGFuZGxpbmdcbiAqICAgICBhIG5vbi1lbXB0eSBga2V5YCBhbmQgd2hlbiBleGl0aW5nIHRoZSBpdGVtLlxuICovXG5mdW5jdGlvbiB2aXNpdChjc3QsIHZpc2l0b3IpIHtcbiAgICBpZiAoJ3R5cGUnIGluIGNzdCAmJiBjc3QudHlwZSA9PT0gJ2RvY3VtZW50JylcbiAgICAgICAgY3N0ID0geyBzdGFydDogY3N0LnN0YXJ0LCB2YWx1ZTogY3N0LnZhbHVlIH07XG4gICAgX3Zpc2l0KE9iamVjdC5mcmVlemUoW10pLCBjc3QsIHZpc2l0b3IpO1xufVxuLy8gV2l0aG91dCB0aGUgYGFzIHN5bWJvbGAgY2FzdHMsIFRTIGRlY2xhcmVzIHRoZXNlIGluIHRoZSBgdmlzaXRgXG4vLyBuYW1lc3BhY2UgdXNpbmcgYHZhcmAsIGJ1dCB0aGVuIGNvbXBsYWlucyBhYm91dCB0aGF0IGJlY2F1c2Vcbi8vIGB1bmlxdWUgc3ltYm9sYCBtdXN0IGJlIGBjb25zdGAuXG4vKiogVGVybWluYXRlIHZpc2l0IHRyYXZlcnNhbCBjb21wbGV0ZWx5ICovXG52aXNpdC5CUkVBSyA9IEJSRUFLO1xuLyoqIERvIG5vdCB2aXNpdCB0aGUgY2hpbGRyZW4gb2YgdGhlIGN1cnJlbnQgaXRlbSAqL1xudmlzaXQuU0tJUCA9IFNLSVA7XG4vKiogUmVtb3ZlIHRoZSBjdXJyZW50IGl0ZW0gKi9cbnZpc2l0LlJFTU9WRSA9IFJFTU9WRTtcbi8qKiBGaW5kIHRoZSBpdGVtIGF0IGBwYXRoYCBmcm9tIGBjc3RgIGFzIHRoZSByb290ICovXG52aXNpdC5pdGVtQXRQYXRoID0gKGNzdCwgcGF0aCkgPT4ge1xuICAgIGxldCBpdGVtID0gY3N0O1xuICAgIGZvciAoY29uc3QgW2ZpZWxkLCBpbmRleF0gb2YgcGF0aCkge1xuICAgICAgICBjb25zdCB0b2sgPSBpdGVtPy5bZmllbGRdO1xuICAgICAgICBpZiAodG9rICYmICdpdGVtcycgaW4gdG9rKSB7XG4gICAgICAgICAgICBpdGVtID0gdG9rLml0ZW1zW2luZGV4XTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICByZXR1cm4gaXRlbTtcbn07XG4vKipcbiAqIEdldCB0aGUgaW1tZWRpYXRlIHBhcmVudCBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtIGF0IGBwYXRoYCBmcm9tIGBjc3RgIGFzIHRoZSByb290LlxuICpcbiAqIFRocm93cyBhbiBlcnJvciBpZiB0aGUgY29sbGVjdGlvbiBpcyBub3QgZm91bmQsIHdoaWNoIHNob3VsZCBuZXZlciBoYXBwZW4gaWYgdGhlIGl0ZW0gaXRzZWxmIGV4aXN0cy5cbiAqL1xudmlzaXQucGFyZW50Q29sbGVjdGlvbiA9IChjc3QsIHBhdGgpID0+IHtcbiAgICBjb25zdCBwYXJlbnQgPSB2aXNpdC5pdGVtQXRQYXRoKGNzdCwgcGF0aC5zbGljZSgwLCAtMSkpO1xuICAgIGNvbnN0IGZpZWxkID0gcGF0aFtwYXRoLmxlbmd0aCAtIDFdWzBdO1xuICAgIGNvbnN0IGNvbGwgPSBwYXJlbnQ/LltmaWVsZF07XG4gICAgaWYgKGNvbGwgJiYgJ2l0ZW1zJyBpbiBjb2xsKVxuICAgICAgICByZXR1cm4gY29sbDtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1BhcmVudCBjb2xsZWN0aW9uIG5vdCBmb3VuZCcpO1xufTtcbmZ1bmN0aW9uIF92aXNpdChwYXRoLCBpdGVtLCB2aXNpdG9yKSB7XG4gICAgbGV0IGN0cmwgPSB2aXNpdG9yKGl0ZW0sIHBhdGgpO1xuICAgIGlmICh0eXBlb2YgY3RybCA9PT0gJ3N5bWJvbCcpXG4gICAgICAgIHJldHVybiBjdHJsO1xuICAgIGZvciAoY29uc3QgZmllbGQgb2YgWydrZXknLCAndmFsdWUnXSkge1xuICAgICAgICBjb25zdCB0b2tlbiA9IGl0ZW1bZmllbGRdO1xuICAgICAgICBpZiAodG9rZW4gJiYgJ2l0ZW1zJyBpbiB0b2tlbikge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0b2tlbi5pdGVtcy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNpID0gX3Zpc2l0KE9iamVjdC5mcmVlemUocGF0aC5jb25jYXQoW1tmaWVsZCwgaV1dKSksIHRva2VuLml0ZW1zW2ldLCB2aXNpdG9yKTtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGNpID09PSAnbnVtYmVyJylcbiAgICAgICAgICAgICAgICAgICAgaSA9IGNpIC0gMTtcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChjaSA9PT0gQlJFQUspXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBCUkVBSztcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChjaSA9PT0gUkVNT1ZFKSB7XG4gICAgICAgICAgICAgICAgICAgIHRva2VuLml0ZW1zLnNwbGljZShpLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgaSAtPSAxO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0eXBlb2YgY3RybCA9PT0gJ2Z1bmN0aW9uJyAmJiBmaWVsZCA9PT0gJ2tleScpXG4gICAgICAgICAgICAgICAgY3RybCA9IGN0cmwoaXRlbSwgcGF0aCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHR5cGVvZiBjdHJsID09PSAnZnVuY3Rpb24nID8gY3RybChpdGVtLCBwYXRoKSA6IGN0cmw7XG59XG5cbmV4cG9ydCB7IHZpc2l0IH07XG4iLCAiZXhwb3J0IHsgY3JlYXRlU2NhbGFyVG9rZW4sIHJlc29sdmVBc1NjYWxhciwgc2V0U2NhbGFyVmFsdWUgfSBmcm9tICcuL2NzdC1zY2FsYXIuanMnO1xuZXhwb3J0IHsgc3RyaW5naWZ5IH0gZnJvbSAnLi9jc3Qtc3RyaW5naWZ5LmpzJztcbmV4cG9ydCB7IHZpc2l0IH0gZnJvbSAnLi9jc3QtdmlzaXQuanMnO1xuXG4vKiogVGhlIGJ5dGUgb3JkZXIgbWFyayAqL1xuY29uc3QgQk9NID0gJ1xcdXtGRUZGfSc7XG4vKiogU3RhcnQgb2YgZG9jLW1vZGUgKi9cbmNvbnN0IERPQ1VNRU5UID0gJ1xceDAyJzsgLy8gQzA6IFN0YXJ0IG9mIFRleHRcbi8qKiBVbmV4cGVjdGVkIGVuZCBvZiBmbG93LW1vZGUgKi9cbmNvbnN0IEZMT1dfRU5EID0gJ1xceDE4JzsgLy8gQzA6IENhbmNlbFxuLyoqIE5leHQgdG9rZW4gaXMgYSBzY2FsYXIgdmFsdWUgKi9cbmNvbnN0IFNDQUxBUiA9ICdcXHgxZic7IC8vIEMwOiBVbml0IFNlcGFyYXRvclxuLyoqIEByZXR1cm5zIGB0cnVlYCBpZiBgdG9rZW5gIGlzIGEgZmxvdyBvciBibG9jayBjb2xsZWN0aW9uICovXG5jb25zdCBpc0NvbGxlY3Rpb24gPSAodG9rZW4pID0+ICEhdG9rZW4gJiYgJ2l0ZW1zJyBpbiB0b2tlbjtcbi8qKiBAcmV0dXJucyBgdHJ1ZWAgaWYgYHRva2VuYCBpcyBhIGZsb3cgb3IgYmxvY2sgc2NhbGFyOyBub3QgYW4gYWxpYXMgKi9cbmNvbnN0IGlzU2NhbGFyID0gKHRva2VuKSA9PiAhIXRva2VuICYmXG4gICAgKHRva2VuLnR5cGUgPT09ICdzY2FsYXInIHx8XG4gICAgICAgIHRva2VuLnR5cGUgPT09ICdzaW5nbGUtcXVvdGVkLXNjYWxhcicgfHxcbiAgICAgICAgdG9rZW4udHlwZSA9PT0gJ2RvdWJsZS1xdW90ZWQtc2NhbGFyJyB8fFxuICAgICAgICB0b2tlbi50eXBlID09PSAnYmxvY2stc2NhbGFyJyk7XG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuLyoqIEdldCBhIHByaW50YWJsZSByZXByZXNlbnRhdGlvbiBvZiBhIGxleGVyIHRva2VuICovXG5mdW5jdGlvbiBwcmV0dHlUb2tlbih0b2tlbikge1xuICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgICAgY2FzZSBCT006XG4gICAgICAgICAgICByZXR1cm4gJzxCT00+JztcbiAgICAgICAgY2FzZSBET0NVTUVOVDpcbiAgICAgICAgICAgIHJldHVybiAnPERPQz4nO1xuICAgICAgICBjYXNlIEZMT1dfRU5EOlxuICAgICAgICAgICAgcmV0dXJuICc8RkxPV19FTkQ+JztcbiAgICAgICAgY2FzZSBTQ0FMQVI6XG4gICAgICAgICAgICByZXR1cm4gJzxTQ0FMQVI+JztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh0b2tlbik7XG4gICAgfVxufVxuLyoqIElkZW50aWZ5IHRoZSB0eXBlIG9mIGEgbGV4ZXIgdG9rZW4uIE1heSByZXR1cm4gYG51bGxgIGZvciB1bmtub3duIHRva2Vucy4gKi9cbmZ1bmN0aW9uIHRva2VuVHlwZShzb3VyY2UpIHtcbiAgICBzd2l0Y2ggKHNvdXJjZSkge1xuICAgICAgICBjYXNlIEJPTTpcbiAgICAgICAgICAgIHJldHVybiAnYnl0ZS1vcmRlci1tYXJrJztcbiAgICAgICAgY2FzZSBET0NVTUVOVDpcbiAgICAgICAgICAgIHJldHVybiAnZG9jLW1vZGUnO1xuICAgICAgICBjYXNlIEZMT1dfRU5EOlxuICAgICAgICAgICAgcmV0dXJuICdmbG93LWVycm9yLWVuZCc7XG4gICAgICAgIGNhc2UgU0NBTEFSOlxuICAgICAgICAgICAgcmV0dXJuICdzY2FsYXInO1xuICAgICAgICBjYXNlICctLS0nOlxuICAgICAgICAgICAgcmV0dXJuICdkb2Mtc3RhcnQnO1xuICAgICAgICBjYXNlICcuLi4nOlxuICAgICAgICAgICAgcmV0dXJuICdkb2MtZW5kJztcbiAgICAgICAgY2FzZSAnJzpcbiAgICAgICAgY2FzZSAnXFxuJzpcbiAgICAgICAgY2FzZSAnXFxyXFxuJzpcbiAgICAgICAgICAgIHJldHVybiAnbmV3bGluZSc7XG4gICAgICAgIGNhc2UgJy0nOlxuICAgICAgICAgICAgcmV0dXJuICdzZXEtaXRlbS1pbmQnO1xuICAgICAgICBjYXNlICc/JzpcbiAgICAgICAgICAgIHJldHVybiAnZXhwbGljaXQta2V5LWluZCc7XG4gICAgICAgIGNhc2UgJzonOlxuICAgICAgICAgICAgcmV0dXJuICdtYXAtdmFsdWUtaW5kJztcbiAgICAgICAgY2FzZSAneyc6XG4gICAgICAgICAgICByZXR1cm4gJ2Zsb3ctbWFwLXN0YXJ0JztcbiAgICAgICAgY2FzZSAnfSc6XG4gICAgICAgICAgICByZXR1cm4gJ2Zsb3ctbWFwLWVuZCc7XG4gICAgICAgIGNhc2UgJ1snOlxuICAgICAgICAgICAgcmV0dXJuICdmbG93LXNlcS1zdGFydCc7XG4gICAgICAgIGNhc2UgJ10nOlxuICAgICAgICAgICAgcmV0dXJuICdmbG93LXNlcS1lbmQnO1xuICAgICAgICBjYXNlICcsJzpcbiAgICAgICAgICAgIHJldHVybiAnY29tbWEnO1xuICAgIH1cbiAgICBzd2l0Y2ggKHNvdXJjZVswXSkge1xuICAgICAgICBjYXNlICcgJzpcbiAgICAgICAgY2FzZSAnXFx0JzpcbiAgICAgICAgICAgIHJldHVybiAnc3BhY2UnO1xuICAgICAgICBjYXNlICcjJzpcbiAgICAgICAgICAgIHJldHVybiAnY29tbWVudCc7XG4gICAgICAgIGNhc2UgJyUnOlxuICAgICAgICAgICAgcmV0dXJuICdkaXJlY3RpdmUtbGluZSc7XG4gICAgICAgIGNhc2UgJyonOlxuICAgICAgICAgICAgcmV0dXJuICdhbGlhcyc7XG4gICAgICAgIGNhc2UgJyYnOlxuICAgICAgICAgICAgcmV0dXJuICdhbmNob3InO1xuICAgICAgICBjYXNlICchJzpcbiAgICAgICAgICAgIHJldHVybiAndGFnJztcbiAgICAgICAgY2FzZSBcIidcIjpcbiAgICAgICAgICAgIHJldHVybiAnc2luZ2xlLXF1b3RlZC1zY2FsYXInO1xuICAgICAgICBjYXNlICdcIic6XG4gICAgICAgICAgICByZXR1cm4gJ2RvdWJsZS1xdW90ZWQtc2NhbGFyJztcbiAgICAgICAgY2FzZSAnfCc6XG4gICAgICAgIGNhc2UgJz4nOlxuICAgICAgICAgICAgcmV0dXJuICdibG9jay1zY2FsYXItaGVhZGVyJztcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCB7IEJPTSwgRE9DVU1FTlQsIEZMT1dfRU5ELCBTQ0FMQVIsIGlzQ29sbGVjdGlvbiwgaXNTY2FsYXIsIHByZXR0eVRva2VuLCB0b2tlblR5cGUgfTtcbiIsICJpbXBvcnQgeyBCT00sIERPQ1VNRU5ULCBGTE9XX0VORCwgU0NBTEFSIH0gZnJvbSAnLi9jc3QuanMnO1xuXG4vKlxuU1RBUlQgLT4gc3RyZWFtXG5cbnN0cmVhbVxuICBkaXJlY3RpdmUgLT4gbGluZS1lbmQgLT4gc3RyZWFtXG4gIGluZGVudCArIGxpbmUtZW5kIC0+IHN0cmVhbVxuICBbZWxzZV0gLT4gbGluZS1zdGFydFxuXG5saW5lLWVuZFxuICBjb21tZW50IC0+IGxpbmUtZW5kXG4gIG5ld2xpbmUgLT4gLlxuICBpbnB1dC1lbmQgLT4gRU5EXG5cbmxpbmUtc3RhcnRcbiAgZG9jLXN0YXJ0IC0+IGRvY1xuICBkb2MtZW5kIC0+IHN0cmVhbVxuICBbZWxzZV0gLT4gaW5kZW50IC0+IGJsb2NrLXN0YXJ0XG5cbmJsb2NrLXN0YXJ0XG4gIHNlcS1pdGVtLXN0YXJ0IC0+IGJsb2NrLXN0YXJ0XG4gIGV4cGxpY2l0LWtleS1zdGFydCAtPiBibG9jay1zdGFydFxuICBtYXAtdmFsdWUtc3RhcnQgLT4gYmxvY2stc3RhcnRcbiAgW2Vsc2VdIC0+IGRvY1xuXG5kb2NcbiAgbGluZS1lbmQgLT4gbGluZS1zdGFydFxuICBzcGFjZXMgLT4gZG9jXG4gIGFuY2hvciAtPiBkb2NcbiAgdGFnIC0+IGRvY1xuICBmbG93LXN0YXJ0IC0+IGZsb3cgLT4gZG9jXG4gIGZsb3ctZW5kIC0+IGVycm9yIC0+IGRvY1xuICBzZXEtaXRlbS1zdGFydCAtPiBlcnJvciAtPiBkb2NcbiAgZXhwbGljaXQta2V5LXN0YXJ0IC0+IGVycm9yIC0+IGRvY1xuICBtYXAtdmFsdWUtc3RhcnQgLT4gZG9jXG4gIGFsaWFzIC0+IGRvY1xuICBxdW90ZS1zdGFydCAtPiBxdW90ZWQtc2NhbGFyIC0+IGRvY1xuICBibG9jay1zY2FsYXItaGVhZGVyIC0+IGxpbmUtZW5kIC0+IGJsb2NrLXNjYWxhcihtaW4pIC0+IGxpbmUtc3RhcnRcbiAgW2Vsc2VdIC0+IHBsYWluLXNjYWxhcihmYWxzZSwgbWluKSAtPiBkb2NcblxuZmxvd1xuICBsaW5lLWVuZCAtPiBmbG93XG4gIHNwYWNlcyAtPiBmbG93XG4gIGFuY2hvciAtPiBmbG93XG4gIHRhZyAtPiBmbG93XG4gIGZsb3ctc3RhcnQgLT4gZmxvdyAtPiBmbG93XG4gIGZsb3ctZW5kIC0+IC5cbiAgc2VxLWl0ZW0tc3RhcnQgLT4gZXJyb3IgLT4gZmxvd1xuICBleHBsaWNpdC1rZXktc3RhcnQgLT4gZmxvd1xuICBtYXAtdmFsdWUtc3RhcnQgLT4gZmxvd1xuICBhbGlhcyAtPiBmbG93XG4gIHF1b3RlLXN0YXJ0IC0+IHF1b3RlZC1zY2FsYXIgLT4gZmxvd1xuICBjb21tYSAtPiBmbG93XG4gIFtlbHNlXSAtPiBwbGFpbi1zY2FsYXIodHJ1ZSwgMCkgLT4gZmxvd1xuXG5xdW90ZWQtc2NhbGFyXG4gIHF1b3RlLWVuZCAtPiAuXG4gIFtlbHNlXSAtPiBxdW90ZWQtc2NhbGFyXG5cbmJsb2NrLXNjYWxhcihtaW4pXG4gIG5ld2xpbmUgKyBwZWVrKGluZGVudCA8IG1pbikgLT4gLlxuICBbZWxzZV0gLT4gYmxvY2stc2NhbGFyKG1pbilcblxucGxhaW4tc2NhbGFyKGlzLWZsb3csIG1pbilcbiAgc2NhbGFyLWVuZChpcy1mbG93KSAtPiAuXG4gIHBlZWsobmV3bGluZSArIChpbmRlbnQgPCBtaW4pKSAtPiAuXG4gIFtlbHNlXSAtPiBwbGFpbi1zY2FsYXIobWluKVxuKi9cbmZ1bmN0aW9uIGlzRW1wdHkoY2gpIHtcbiAgICBzd2l0Y2ggKGNoKSB7XG4gICAgICAgIGNhc2UgdW5kZWZpbmVkOlxuICAgICAgICBjYXNlICcgJzpcbiAgICAgICAgY2FzZSAnXFxuJzpcbiAgICAgICAgY2FzZSAnXFxyJzpcbiAgICAgICAgY2FzZSAnXFx0JzpcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn1cbmNvbnN0IGhleERpZ2l0cyA9IG5ldyBTZXQoJzAxMjM0NTY3ODlBQkNERUZhYmNkZWYnKTtcbmNvbnN0IHRhZ0NoYXJzID0gbmV3IFNldChcIjAxMjM0NTY3ODlBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6LSM7Lz86QCY9KyRfLiF+KicoKVwiKTtcbmNvbnN0IGZsb3dJbmRpY2F0b3JDaGFycyA9IG5ldyBTZXQoJyxbXXt9Jyk7XG5jb25zdCBpbnZhbGlkQW5jaG9yQ2hhcnMgPSBuZXcgU2V0KCcgLFtde31cXG5cXHJcXHQnKTtcbmNvbnN0IGlzTm90QW5jaG9yQ2hhciA9IChjaCkgPT4gIWNoIHx8IGludmFsaWRBbmNob3JDaGFycy5oYXMoY2gpO1xuLyoqXG4gKiBTcGxpdHMgYW4gaW5wdXQgc3RyaW5nIGludG8gbGV4aWNhbCB0b2tlbnMsIGkuZS4gc21hbGxlciBzdHJpbmdzIHRoYXQgYXJlXG4gKiBlYXNpbHkgaWRlbnRpZmlhYmxlIGJ5IGB0b2tlbnMudG9rZW5UeXBlKClgLlxuICpcbiAqIExleGluZyBzdGFydHMgYWx3YXlzIGluIGEgXCJzdHJlYW1cIiBjb250ZXh0LiBJbmNvbXBsZXRlIGlucHV0IG1heSBiZSBidWZmZXJlZFxuICogdW50aWwgYSBjb21wbGV0ZSB0b2tlbiBjYW4gYmUgZW1pdHRlZC5cbiAqXG4gKiBJbiBhZGRpdGlvbiB0byBzbGljZXMgb2YgdGhlIG9yaWdpbmFsIGlucHV0LCB0aGUgZm9sbG93aW5nIGNvbnRyb2wgY2hhcmFjdGVyc1xuICogbWF5IGFsc28gYmUgZW1pdHRlZDpcbiAqXG4gKiAtIGBcXHgwMmAgKFN0YXJ0IG9mIFRleHQpOiBBIGRvY3VtZW50IHN0YXJ0cyB3aXRoIHRoZSBuZXh0IHRva2VuXG4gKiAtIGBcXHgxOGAgKENhbmNlbCk6IFVuZXhwZWN0ZWQgZW5kIG9mIGZsb3ctbW9kZSAoaW5kaWNhdGVzIGFuIGVycm9yKVxuICogLSBgXFx4MWZgIChVbml0IFNlcGFyYXRvcik6IE5leHQgdG9rZW4gaXMgYSBzY2FsYXIgdmFsdWVcbiAqIC0gYFxcdXtGRUZGfWAgKEJ5dGUgb3JkZXIgbWFyayk6IEVtaXR0ZWQgc2VwYXJhdGVseSBvdXRzaWRlIGRvY3VtZW50c1xuICovXG5jbGFzcyBMZXhlciB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBGbGFnIGluZGljYXRpbmcgd2hldGhlciB0aGUgZW5kIG9mIHRoZSBjdXJyZW50IGJ1ZmZlciBtYXJrcyB0aGUgZW5kIG9mXG4gICAgICAgICAqIGFsbCBpbnB1dFxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5hdEVuZCA9IGZhbHNlO1xuICAgICAgICAvKipcbiAgICAgICAgICogRXhwbGljaXQgaW5kZW50IHNldCBpbiBibG9jayBzY2FsYXIgaGVhZGVyLCBhcyBhbiBvZmZzZXQgZnJvbSB0aGUgY3VycmVudFxuICAgICAgICAgKiBtaW5pbXVtIGluZGVudCwgc28gZS5nLiBzZXQgdG8gMSBmcm9tIGEgaGVhZGVyIGB8MitgLiBTZXQgdG8gLTEgaWYgbm90XG4gICAgICAgICAqIGV4cGxpY2l0bHkgc2V0LlxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5ibG9ja1NjYWxhckluZGVudCA9IC0xO1xuICAgICAgICAvKipcbiAgICAgICAgICogQmxvY2sgc2NhbGFycyB0aGF0IGluY2x1ZGUgYSArIChrZWVwKSBjaG9tcGluZyBpbmRpY2F0b3IgaW4gdGhlaXIgaGVhZGVyXG4gICAgICAgICAqIGluY2x1ZGUgdHJhaWxpbmcgZW1wdHkgbGluZXMsIHdoaWNoIGFyZSBvdGhlcndpc2UgZXhjbHVkZWQgZnJvbSB0aGVcbiAgICAgICAgICogc2NhbGFyJ3MgY29udGVudHMuXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLmJsb2NrU2NhbGFyS2VlcCA9IGZhbHNlO1xuICAgICAgICAvKiogQ3VycmVudCBpbnB1dCAqL1xuICAgICAgICB0aGlzLmJ1ZmZlciA9ICcnO1xuICAgICAgICAvKipcbiAgICAgICAgICogRmxhZyBub3Rpbmcgd2hldGhlciB0aGUgbWFwIHZhbHVlIGluZGljYXRvciA6IGNhbiBpbW1lZGlhdGVseSBmb2xsb3cgdGhpc1xuICAgICAgICAgKiBub2RlIHdpdGhpbiBhIGZsb3cgY29udGV4dC5cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuZmxvd0tleSA9IGZhbHNlO1xuICAgICAgICAvKiogQ291bnQgb2Ygc3Vycm91bmRpbmcgZmxvdyBjb2xsZWN0aW9uIGxldmVscy4gKi9cbiAgICAgICAgdGhpcy5mbG93TGV2ZWwgPSAwO1xuICAgICAgICAvKipcbiAgICAgICAgICogTWluaW11bSBsZXZlbCBvZiBpbmRlbnRhdGlvbiByZXF1aXJlZCBmb3IgbmV4dCBsaW5lcyB0byBiZSBwYXJzZWQgYXMgYVxuICAgICAgICAgKiBwYXJ0IG9mIHRoZSBjdXJyZW50IHNjYWxhciB2YWx1ZS5cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuaW5kZW50TmV4dCA9IDA7XG4gICAgICAgIC8qKiBJbmRlbnRhdGlvbiBsZXZlbCBvZiB0aGUgY3VycmVudCBsaW5lLiAqL1xuICAgICAgICB0aGlzLmluZGVudFZhbHVlID0gMDtcbiAgICAgICAgLyoqIFBvc2l0aW9uIG9mIHRoZSBuZXh0IFxcbiBjaGFyYWN0ZXIuICovXG4gICAgICAgIHRoaXMubGluZUVuZFBvcyA9IG51bGw7XG4gICAgICAgIC8qKiBTdG9yZXMgdGhlIHN0YXRlIG9mIHRoZSBsZXhlciBpZiByZWFjaGluZyB0aGUgZW5kIG9mIGluY3BvbXBsZXRlIGlucHV0ICovXG4gICAgICAgIHRoaXMubmV4dCA9IG51bGw7XG4gICAgICAgIC8qKiBBIHBvaW50ZXIgdG8gYGJ1ZmZlcmA7IHRoZSBjdXJyZW50IHBvc2l0aW9uIG9mIHRoZSBsZXhlci4gKi9cbiAgICAgICAgdGhpcy5wb3MgPSAwO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBHZW5lcmF0ZSBZQU1MIHRva2VucyBmcm9tIHRoZSBgc291cmNlYCBzdHJpbmcuIElmIGBpbmNvbXBsZXRlYCxcbiAgICAgKiBhIHBhcnQgb2YgdGhlIGxhc3QgbGluZSBtYXkgYmUgbGVmdCBhcyBhIGJ1ZmZlciBmb3IgdGhlIG5leHQgY2FsbC5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIEEgZ2VuZXJhdG9yIG9mIGxleGljYWwgdG9rZW5zXG4gICAgICovXG4gICAgKmxleChzb3VyY2UsIGluY29tcGxldGUgPSBmYWxzZSkge1xuICAgICAgICBpZiAoc291cmNlKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHNvdXJjZSAhPT0gJ3N0cmluZycpXG4gICAgICAgICAgICAgICAgdGhyb3cgVHlwZUVycm9yKCdzb3VyY2UgaXMgbm90IGEgc3RyaW5nJyk7XG4gICAgICAgICAgICB0aGlzLmJ1ZmZlciA9IHRoaXMuYnVmZmVyID8gdGhpcy5idWZmZXIgKyBzb3VyY2UgOiBzb3VyY2U7XG4gICAgICAgICAgICB0aGlzLmxpbmVFbmRQb3MgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYXRFbmQgPSAhaW5jb21wbGV0ZTtcbiAgICAgICAgbGV0IG5leHQgPSB0aGlzLm5leHQgPz8gJ3N0cmVhbSc7XG4gICAgICAgIHdoaWxlIChuZXh0ICYmIChpbmNvbXBsZXRlIHx8IHRoaXMuaGFzQ2hhcnMoMSkpKVxuICAgICAgICAgICAgbmV4dCA9IHlpZWxkKiB0aGlzLnBhcnNlTmV4dChuZXh0KTtcbiAgICB9XG4gICAgYXRMaW5lRW5kKCkge1xuICAgICAgICBsZXQgaSA9IHRoaXMucG9zO1xuICAgICAgICBsZXQgY2ggPSB0aGlzLmJ1ZmZlcltpXTtcbiAgICAgICAgd2hpbGUgKGNoID09PSAnICcgfHwgY2ggPT09ICdcXHQnKVxuICAgICAgICAgICAgY2ggPSB0aGlzLmJ1ZmZlclsrK2ldO1xuICAgICAgICBpZiAoIWNoIHx8IGNoID09PSAnIycgfHwgY2ggPT09ICdcXG4nKVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIGlmIChjaCA9PT0gJ1xccicpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5idWZmZXJbaSArIDFdID09PSAnXFxuJztcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjaGFyQXQobikge1xuICAgICAgICByZXR1cm4gdGhpcy5idWZmZXJbdGhpcy5wb3MgKyBuXTtcbiAgICB9XG4gICAgY29udGludWVTY2FsYXIob2Zmc2V0KSB7XG4gICAgICAgIGxldCBjaCA9IHRoaXMuYnVmZmVyW29mZnNldF07XG4gICAgICAgIGlmICh0aGlzLmluZGVudE5leHQgPiAwKSB7XG4gICAgICAgICAgICBsZXQgaW5kZW50ID0gMDtcbiAgICAgICAgICAgIHdoaWxlIChjaCA9PT0gJyAnKVxuICAgICAgICAgICAgICAgIGNoID0gdGhpcy5idWZmZXJbKytpbmRlbnQgKyBvZmZzZXRdO1xuICAgICAgICAgICAgaWYgKGNoID09PSAnXFxyJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5leHQgPSB0aGlzLmJ1ZmZlcltpbmRlbnQgKyBvZmZzZXQgKyAxXTtcbiAgICAgICAgICAgICAgICBpZiAobmV4dCA9PT0gJ1xcbicgfHwgKCFuZXh0ICYmICF0aGlzLmF0RW5kKSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mZnNldCArIGluZGVudCArIDE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gY2ggPT09ICdcXG4nIHx8IGluZGVudCA+PSB0aGlzLmluZGVudE5leHQgfHwgKCFjaCAmJiAhdGhpcy5hdEVuZClcbiAgICAgICAgICAgICAgICA/IG9mZnNldCArIGluZGVudFxuICAgICAgICAgICAgICAgIDogLTE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNoID09PSAnLScgfHwgY2ggPT09ICcuJykge1xuICAgICAgICAgICAgY29uc3QgZHQgPSB0aGlzLmJ1ZmZlci5zdWJzdHIob2Zmc2V0LCAzKTtcbiAgICAgICAgICAgIGlmICgoZHQgPT09ICctLS0nIHx8IGR0ID09PSAnLi4uJykgJiYgaXNFbXB0eSh0aGlzLmJ1ZmZlcltvZmZzZXQgKyAzXSkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvZmZzZXQ7XG4gICAgfVxuICAgIGdldExpbmUoKSB7XG4gICAgICAgIGxldCBlbmQgPSB0aGlzLmxpbmVFbmRQb3M7XG4gICAgICAgIGlmICh0eXBlb2YgZW5kICE9PSAnbnVtYmVyJyB8fCAoZW5kICE9PSAtMSAmJiBlbmQgPCB0aGlzLnBvcykpIHtcbiAgICAgICAgICAgIGVuZCA9IHRoaXMuYnVmZmVyLmluZGV4T2YoJ1xcbicsIHRoaXMucG9zKTtcbiAgICAgICAgICAgIHRoaXMubGluZUVuZFBvcyA9IGVuZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZW5kID09PSAtMSlcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmF0RW5kID8gdGhpcy5idWZmZXIuc3Vic3RyaW5nKHRoaXMucG9zKSA6IG51bGw7XG4gICAgICAgIGlmICh0aGlzLmJ1ZmZlcltlbmQgLSAxXSA9PT0gJ1xccicpXG4gICAgICAgICAgICBlbmQgLT0gMTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYnVmZmVyLnN1YnN0cmluZyh0aGlzLnBvcywgZW5kKTtcbiAgICB9XG4gICAgaGFzQ2hhcnMobikge1xuICAgICAgICByZXR1cm4gdGhpcy5wb3MgKyBuIDw9IHRoaXMuYnVmZmVyLmxlbmd0aDtcbiAgICB9XG4gICAgc2V0TmV4dChzdGF0ZSkge1xuICAgICAgICB0aGlzLmJ1ZmZlciA9IHRoaXMuYnVmZmVyLnN1YnN0cmluZyh0aGlzLnBvcyk7XG4gICAgICAgIHRoaXMucG9zID0gMDtcbiAgICAgICAgdGhpcy5saW5lRW5kUG9zID0gbnVsbDtcbiAgICAgICAgdGhpcy5uZXh0ID0gc3RhdGU7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBwZWVrKG4pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYnVmZmVyLnN1YnN0cih0aGlzLnBvcywgbik7XG4gICAgfVxuICAgICpwYXJzZU5leHQobmV4dCkge1xuICAgICAgICBzd2l0Y2ggKG5leHQpIHtcbiAgICAgICAgICAgIGNhc2UgJ3N0cmVhbSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHlpZWxkKiB0aGlzLnBhcnNlU3RyZWFtKCk7XG4gICAgICAgICAgICBjYXNlICdsaW5lLXN0YXJ0JzpcbiAgICAgICAgICAgICAgICByZXR1cm4geWllbGQqIHRoaXMucGFyc2VMaW5lU3RhcnQoKTtcbiAgICAgICAgICAgIGNhc2UgJ2Jsb2NrLXN0YXJ0JzpcbiAgICAgICAgICAgICAgICByZXR1cm4geWllbGQqIHRoaXMucGFyc2VCbG9ja1N0YXJ0KCk7XG4gICAgICAgICAgICBjYXNlICdkb2MnOlxuICAgICAgICAgICAgICAgIHJldHVybiB5aWVsZCogdGhpcy5wYXJzZURvY3VtZW50KCk7XG4gICAgICAgICAgICBjYXNlICdmbG93JzpcbiAgICAgICAgICAgICAgICByZXR1cm4geWllbGQqIHRoaXMucGFyc2VGbG93Q29sbGVjdGlvbigpO1xuICAgICAgICAgICAgY2FzZSAncXVvdGVkLXNjYWxhcic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHlpZWxkKiB0aGlzLnBhcnNlUXVvdGVkU2NhbGFyKCk7XG4gICAgICAgICAgICBjYXNlICdibG9jay1zY2FsYXInOlxuICAgICAgICAgICAgICAgIHJldHVybiB5aWVsZCogdGhpcy5wYXJzZUJsb2NrU2NhbGFyKCk7XG4gICAgICAgICAgICBjYXNlICdwbGFpbi1zY2FsYXInOlxuICAgICAgICAgICAgICAgIHJldHVybiB5aWVsZCogdGhpcy5wYXJzZVBsYWluU2NhbGFyKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgKnBhcnNlU3RyZWFtKCkge1xuICAgICAgICBsZXQgbGluZSA9IHRoaXMuZ2V0TGluZSgpO1xuICAgICAgICBpZiAobGluZSA9PT0gbnVsbClcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNldE5leHQoJ3N0cmVhbScpO1xuICAgICAgICBpZiAobGluZVswXSA9PT0gQk9NKSB7XG4gICAgICAgICAgICB5aWVsZCogdGhpcy5wdXNoQ291bnQoMSk7XG4gICAgICAgICAgICBsaW5lID0gbGluZS5zdWJzdHJpbmcoMSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxpbmVbMF0gPT09ICclJykge1xuICAgICAgICAgICAgbGV0IGRpckVuZCA9IGxpbmUubGVuZ3RoO1xuICAgICAgICAgICAgbGV0IGNzID0gbGluZS5pbmRleE9mKCcjJyk7XG4gICAgICAgICAgICB3aGlsZSAoY3MgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2ggPSBsaW5lW2NzIC0gMV07XG4gICAgICAgICAgICAgICAgaWYgKGNoID09PSAnICcgfHwgY2ggPT09ICdcXHQnKSB7XG4gICAgICAgICAgICAgICAgICAgIGRpckVuZCA9IGNzIC0gMTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjcyA9IGxpbmUuaW5kZXhPZignIycsIGNzICsgMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjaCA9IGxpbmVbZGlyRW5kIC0gMV07XG4gICAgICAgICAgICAgICAgaWYgKGNoID09PSAnICcgfHwgY2ggPT09ICdcXHQnKVxuICAgICAgICAgICAgICAgICAgICBkaXJFbmQgLT0gMTtcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgbiA9ICh5aWVsZCogdGhpcy5wdXNoQ291bnQoZGlyRW5kKSkgKyAoeWllbGQqIHRoaXMucHVzaFNwYWNlcyh0cnVlKSk7XG4gICAgICAgICAgICB5aWVsZCogdGhpcy5wdXNoQ291bnQobGluZS5sZW5ndGggLSBuKTsgLy8gcG9zc2libGUgY29tbWVudFxuICAgICAgICAgICAgdGhpcy5wdXNoTmV3bGluZSgpO1xuICAgICAgICAgICAgcmV0dXJuICdzdHJlYW0nO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmF0TGluZUVuZCgpKSB7XG4gICAgICAgICAgICBjb25zdCBzcCA9IHlpZWxkKiB0aGlzLnB1c2hTcGFjZXModHJ1ZSk7XG4gICAgICAgICAgICB5aWVsZCogdGhpcy5wdXNoQ291bnQobGluZS5sZW5ndGggLSBzcCk7XG4gICAgICAgICAgICB5aWVsZCogdGhpcy5wdXNoTmV3bGluZSgpO1xuICAgICAgICAgICAgcmV0dXJuICdzdHJlYW0nO1xuICAgICAgICB9XG4gICAgICAgIHlpZWxkIERPQ1VNRU5UO1xuICAgICAgICByZXR1cm4geWllbGQqIHRoaXMucGFyc2VMaW5lU3RhcnQoKTtcbiAgICB9XG4gICAgKnBhcnNlTGluZVN0YXJ0KCkge1xuICAgICAgICBjb25zdCBjaCA9IHRoaXMuY2hhckF0KDApO1xuICAgICAgICBpZiAoIWNoICYmICF0aGlzLmF0RW5kKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0TmV4dCgnbGluZS1zdGFydCcpO1xuICAgICAgICBpZiAoY2ggPT09ICctJyB8fCBjaCA9PT0gJy4nKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuYXRFbmQgJiYgIXRoaXMuaGFzQ2hhcnMoNCkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0TmV4dCgnbGluZS1zdGFydCcpO1xuICAgICAgICAgICAgY29uc3QgcyA9IHRoaXMucGVlaygzKTtcbiAgICAgICAgICAgIGlmICgocyA9PT0gJy0tLScgfHwgcyA9PT0gJy4uLicpICYmIGlzRW1wdHkodGhpcy5jaGFyQXQoMykpKSB7XG4gICAgICAgICAgICAgICAgeWllbGQqIHRoaXMucHVzaENvdW50KDMpO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5kZW50VmFsdWUgPSAwO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5kZW50TmV4dCA9IDA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHMgPT09ICctLS0nID8gJ2RvYycgOiAnc3RyZWFtJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmluZGVudFZhbHVlID0geWllbGQqIHRoaXMucHVzaFNwYWNlcyhmYWxzZSk7XG4gICAgICAgIGlmICh0aGlzLmluZGVudE5leHQgPiB0aGlzLmluZGVudFZhbHVlICYmICFpc0VtcHR5KHRoaXMuY2hhckF0KDEpKSlcbiAgICAgICAgICAgIHRoaXMuaW5kZW50TmV4dCA9IHRoaXMuaW5kZW50VmFsdWU7XG4gICAgICAgIHJldHVybiB5aWVsZCogdGhpcy5wYXJzZUJsb2NrU3RhcnQoKTtcbiAgICB9XG4gICAgKnBhcnNlQmxvY2tTdGFydCgpIHtcbiAgICAgICAgY29uc3QgW2NoMCwgY2gxXSA9IHRoaXMucGVlaygyKTtcbiAgICAgICAgaWYgKCFjaDEgJiYgIXRoaXMuYXRFbmQpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZXROZXh0KCdibG9jay1zdGFydCcpO1xuICAgICAgICBpZiAoKGNoMCA9PT0gJy0nIHx8IGNoMCA9PT0gJz8nIHx8IGNoMCA9PT0gJzonKSAmJiBpc0VtcHR5KGNoMSkpIHtcbiAgICAgICAgICAgIGNvbnN0IG4gPSAoeWllbGQqIHRoaXMucHVzaENvdW50KDEpKSArICh5aWVsZCogdGhpcy5wdXNoU3BhY2VzKHRydWUpKTtcbiAgICAgICAgICAgIHRoaXMuaW5kZW50TmV4dCA9IHRoaXMuaW5kZW50VmFsdWUgKyAxO1xuICAgICAgICAgICAgdGhpcy5pbmRlbnRWYWx1ZSArPSBuO1xuICAgICAgICAgICAgcmV0dXJuIHlpZWxkKiB0aGlzLnBhcnNlQmxvY2tTdGFydCgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAnZG9jJztcbiAgICB9XG4gICAgKnBhcnNlRG9jdW1lbnQoKSB7XG4gICAgICAgIHlpZWxkKiB0aGlzLnB1c2hTcGFjZXModHJ1ZSk7XG4gICAgICAgIGNvbnN0IGxpbmUgPSB0aGlzLmdldExpbmUoKTtcbiAgICAgICAgaWYgKGxpbmUgPT09IG51bGwpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZXROZXh0KCdkb2MnKTtcbiAgICAgICAgbGV0IG4gPSB5aWVsZCogdGhpcy5wdXNoSW5kaWNhdG9ycygpO1xuICAgICAgICBzd2l0Y2ggKGxpbmVbbl0pIHtcbiAgICAgICAgICAgIGNhc2UgJyMnOlxuICAgICAgICAgICAgICAgIHlpZWxkKiB0aGlzLnB1c2hDb3VudChsaW5lLmxlbmd0aCAtIG4pO1xuICAgICAgICAgICAgLy8gZmFsbHRocm91Z2hcbiAgICAgICAgICAgIGNhc2UgdW5kZWZpbmVkOlxuICAgICAgICAgICAgICAgIHlpZWxkKiB0aGlzLnB1c2hOZXdsaW5lKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHlpZWxkKiB0aGlzLnBhcnNlTGluZVN0YXJ0KCk7XG4gICAgICAgICAgICBjYXNlICd7JzpcbiAgICAgICAgICAgIGNhc2UgJ1snOlxuICAgICAgICAgICAgICAgIHlpZWxkKiB0aGlzLnB1c2hDb3VudCgxKTtcbiAgICAgICAgICAgICAgICB0aGlzLmZsb3dLZXkgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLmZsb3dMZXZlbCA9IDE7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdmbG93JztcbiAgICAgICAgICAgIGNhc2UgJ30nOlxuICAgICAgICAgICAgY2FzZSAnXSc6XG4gICAgICAgICAgICAgICAgLy8gdGhpcyBpcyBhbiBlcnJvclxuICAgICAgICAgICAgICAgIHlpZWxkKiB0aGlzLnB1c2hDb3VudCgxKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2RvYyc7XG4gICAgICAgICAgICBjYXNlICcqJzpcbiAgICAgICAgICAgICAgICB5aWVsZCogdGhpcy5wdXNoVW50aWwoaXNOb3RBbmNob3JDaGFyKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2RvYyc7XG4gICAgICAgICAgICBjYXNlICdcIic6XG4gICAgICAgICAgICBjYXNlIFwiJ1wiOlxuICAgICAgICAgICAgICAgIHJldHVybiB5aWVsZCogdGhpcy5wYXJzZVF1b3RlZFNjYWxhcigpO1xuICAgICAgICAgICAgY2FzZSAnfCc6XG4gICAgICAgICAgICBjYXNlICc+JzpcbiAgICAgICAgICAgICAgICBuICs9IHlpZWxkKiB0aGlzLnBhcnNlQmxvY2tTY2FsYXJIZWFkZXIoKTtcbiAgICAgICAgICAgICAgICBuICs9IHlpZWxkKiB0aGlzLnB1c2hTcGFjZXModHJ1ZSk7XG4gICAgICAgICAgICAgICAgeWllbGQqIHRoaXMucHVzaENvdW50KGxpbmUubGVuZ3RoIC0gbik7XG4gICAgICAgICAgICAgICAgeWllbGQqIHRoaXMucHVzaE5ld2xpbmUoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4geWllbGQqIHRoaXMucGFyc2VCbG9ja1NjYWxhcigpO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4geWllbGQqIHRoaXMucGFyc2VQbGFpblNjYWxhcigpO1xuICAgICAgICB9XG4gICAgfVxuICAgICpwYXJzZUZsb3dDb2xsZWN0aW9uKCkge1xuICAgICAgICBsZXQgbmwsIHNwO1xuICAgICAgICBsZXQgaW5kZW50ID0gLTE7XG4gICAgICAgIGRvIHtcbiAgICAgICAgICAgIG5sID0geWllbGQqIHRoaXMucHVzaE5ld2xpbmUoKTtcbiAgICAgICAgICAgIGlmIChubCA+IDApIHtcbiAgICAgICAgICAgICAgICBzcCA9IHlpZWxkKiB0aGlzLnB1c2hTcGFjZXMoZmFsc2UpO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5kZW50VmFsdWUgPSBpbmRlbnQgPSBzcDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHNwID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNwICs9IHlpZWxkKiB0aGlzLnB1c2hTcGFjZXModHJ1ZSk7XG4gICAgICAgIH0gd2hpbGUgKG5sICsgc3AgPiAwKTtcbiAgICAgICAgY29uc3QgbGluZSA9IHRoaXMuZ2V0TGluZSgpO1xuICAgICAgICBpZiAobGluZSA9PT0gbnVsbClcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNldE5leHQoJ2Zsb3cnKTtcbiAgICAgICAgaWYgKChpbmRlbnQgIT09IC0xICYmIGluZGVudCA8IHRoaXMuaW5kZW50TmV4dCAmJiBsaW5lWzBdICE9PSAnIycpIHx8XG4gICAgICAgICAgICAoaW5kZW50ID09PSAwICYmXG4gICAgICAgICAgICAgICAgKGxpbmUuc3RhcnRzV2l0aCgnLS0tJykgfHwgbGluZS5zdGFydHNXaXRoKCcuLi4nKSkgJiZcbiAgICAgICAgICAgICAgICBpc0VtcHR5KGxpbmVbM10pKSkge1xuICAgICAgICAgICAgLy8gQWxsb3dpbmcgZm9yIHRoZSB0ZXJtaW5hbCBdIG9yIH0gYXQgdGhlIHNhbWUgKHJhdGhlciB0aGFuIGdyZWF0ZXIpXG4gICAgICAgICAgICAvLyBpbmRlbnQgbGV2ZWwgYXMgdGhlIGluaXRpYWwgWyBvciB7IGlzIHRlY2huaWNhbGx5IGludmFsaWQsIGJ1dFxuICAgICAgICAgICAgLy8gZmFpbGluZyBoZXJlIHdvdWxkIGJlIHN1cnByaXNpbmcgdG8gdXNlcnMuXG4gICAgICAgICAgICBjb25zdCBhdEZsb3dFbmRNYXJrZXIgPSBpbmRlbnQgPT09IHRoaXMuaW5kZW50TmV4dCAtIDEgJiZcbiAgICAgICAgICAgICAgICB0aGlzLmZsb3dMZXZlbCA9PT0gMSAmJlxuICAgICAgICAgICAgICAgIChsaW5lWzBdID09PSAnXScgfHwgbGluZVswXSA9PT0gJ30nKTtcbiAgICAgICAgICAgIGlmICghYXRGbG93RW5kTWFya2VyKSB7XG4gICAgICAgICAgICAgICAgLy8gdGhpcyBpcyBhbiBlcnJvclxuICAgICAgICAgICAgICAgIHRoaXMuZmxvd0xldmVsID0gMDtcbiAgICAgICAgICAgICAgICB5aWVsZCBGTE9XX0VORDtcbiAgICAgICAgICAgICAgICByZXR1cm4geWllbGQqIHRoaXMucGFyc2VMaW5lU3RhcnQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBsZXQgbiA9IDA7XG4gICAgICAgIHdoaWxlIChsaW5lW25dID09PSAnLCcpIHtcbiAgICAgICAgICAgIG4gKz0geWllbGQqIHRoaXMucHVzaENvdW50KDEpO1xuICAgICAgICAgICAgbiArPSB5aWVsZCogdGhpcy5wdXNoU3BhY2VzKHRydWUpO1xuICAgICAgICAgICAgdGhpcy5mbG93S2V5ID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgbiArPSB5aWVsZCogdGhpcy5wdXNoSW5kaWNhdG9ycygpO1xuICAgICAgICBzd2l0Y2ggKGxpbmVbbl0pIHtcbiAgICAgICAgICAgIGNhc2UgdW5kZWZpbmVkOlxuICAgICAgICAgICAgICAgIHJldHVybiAnZmxvdyc7XG4gICAgICAgICAgICBjYXNlICcjJzpcbiAgICAgICAgICAgICAgICB5aWVsZCogdGhpcy5wdXNoQ291bnQobGluZS5sZW5ndGggLSBuKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2Zsb3cnO1xuICAgICAgICAgICAgY2FzZSAneyc6XG4gICAgICAgICAgICBjYXNlICdbJzpcbiAgICAgICAgICAgICAgICB5aWVsZCogdGhpcy5wdXNoQ291bnQoMSk7XG4gICAgICAgICAgICAgICAgdGhpcy5mbG93S2V5ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5mbG93TGV2ZWwgKz0gMTtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2Zsb3cnO1xuICAgICAgICAgICAgY2FzZSAnfSc6XG4gICAgICAgICAgICBjYXNlICddJzpcbiAgICAgICAgICAgICAgICB5aWVsZCogdGhpcy5wdXNoQ291bnQoMSk7XG4gICAgICAgICAgICAgICAgdGhpcy5mbG93S2V5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmZsb3dMZXZlbCAtPSAxO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmZsb3dMZXZlbCA/ICdmbG93JyA6ICdkb2MnO1xuICAgICAgICAgICAgY2FzZSAnKic6XG4gICAgICAgICAgICAgICAgeWllbGQqIHRoaXMucHVzaFVudGlsKGlzTm90QW5jaG9yQ2hhcik7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdmbG93JztcbiAgICAgICAgICAgIGNhc2UgJ1wiJzpcbiAgICAgICAgICAgIGNhc2UgXCInXCI6XG4gICAgICAgICAgICAgICAgdGhpcy5mbG93S2V5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICByZXR1cm4geWllbGQqIHRoaXMucGFyc2VRdW90ZWRTY2FsYXIoKTtcbiAgICAgICAgICAgIGNhc2UgJzonOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dCA9IHRoaXMuY2hhckF0KDEpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmZsb3dLZXkgfHwgaXNFbXB0eShuZXh0KSB8fCBuZXh0ID09PSAnLCcpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mbG93S2V5ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHlpZWxkKiB0aGlzLnB1c2hDb3VudCgxKTtcbiAgICAgICAgICAgICAgICAgICAgeWllbGQqIHRoaXMucHVzaFNwYWNlcyh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdmbG93JztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBmYWxsdGhyb3VnaFxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aGlzLmZsb3dLZXkgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICByZXR1cm4geWllbGQqIHRoaXMucGFyc2VQbGFpblNjYWxhcigpO1xuICAgICAgICB9XG4gICAgfVxuICAgICpwYXJzZVF1b3RlZFNjYWxhcigpIHtcbiAgICAgICAgY29uc3QgcXVvdGUgPSB0aGlzLmNoYXJBdCgwKTtcbiAgICAgICAgbGV0IGVuZCA9IHRoaXMuYnVmZmVyLmluZGV4T2YocXVvdGUsIHRoaXMucG9zICsgMSk7XG4gICAgICAgIGlmIChxdW90ZSA9PT0gXCInXCIpIHtcbiAgICAgICAgICAgIHdoaWxlIChlbmQgIT09IC0xICYmIHRoaXMuYnVmZmVyW2VuZCArIDFdID09PSBcIidcIilcbiAgICAgICAgICAgICAgICBlbmQgPSB0aGlzLmJ1ZmZlci5pbmRleE9mKFwiJ1wiLCBlbmQgKyAyKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIGRvdWJsZS1xdW90ZVxuICAgICAgICAgICAgd2hpbGUgKGVuZCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICBsZXQgbiA9IDA7XG4gICAgICAgICAgICAgICAgd2hpbGUgKHRoaXMuYnVmZmVyW2VuZCAtIDEgLSBuXSA9PT0gJ1xcXFwnKVxuICAgICAgICAgICAgICAgICAgICBuICs9IDE7XG4gICAgICAgICAgICAgICAgaWYgKG4gJSAyID09PSAwKVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBlbmQgPSB0aGlzLmJ1ZmZlci5pbmRleE9mKCdcIicsIGVuZCArIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIE9ubHkgbG9va2luZyBmb3IgbmV3bGluZXMgd2l0aGluIHRoZSBxdW90ZXNcbiAgICAgICAgY29uc3QgcWIgPSB0aGlzLmJ1ZmZlci5zdWJzdHJpbmcoMCwgZW5kKTtcbiAgICAgICAgbGV0IG5sID0gcWIuaW5kZXhPZignXFxuJywgdGhpcy5wb3MpO1xuICAgICAgICBpZiAobmwgIT09IC0xKSB7XG4gICAgICAgICAgICB3aGlsZSAobmwgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY3MgPSB0aGlzLmNvbnRpbnVlU2NhbGFyKG5sICsgMSk7XG4gICAgICAgICAgICAgICAgaWYgKGNzID09PSAtMSlcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgbmwgPSBxYi5pbmRleE9mKCdcXG4nLCBjcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobmwgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgLy8gdGhpcyBpcyBhbiBlcnJvciBjYXVzZWQgYnkgYW4gdW5leHBlY3RlZCB1bmluZGVudFxuICAgICAgICAgICAgICAgIGVuZCA9IG5sIC0gKHFiW25sIC0gMV0gPT09ICdcXHInID8gMiA6IDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChlbmQgPT09IC0xKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuYXRFbmQpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0TmV4dCgncXVvdGVkLXNjYWxhcicpO1xuICAgICAgICAgICAgZW5kID0gdGhpcy5idWZmZXIubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIHlpZWxkKiB0aGlzLnB1c2hUb0luZGV4KGVuZCArIDEsIGZhbHNlKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmxvd0xldmVsID8gJ2Zsb3cnIDogJ2RvYyc7XG4gICAgfVxuICAgICpwYXJzZUJsb2NrU2NhbGFySGVhZGVyKCkge1xuICAgICAgICB0aGlzLmJsb2NrU2NhbGFySW5kZW50ID0gLTE7XG4gICAgICAgIHRoaXMuYmxvY2tTY2FsYXJLZWVwID0gZmFsc2U7XG4gICAgICAgIGxldCBpID0gdGhpcy5wb3M7XG4gICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgICBjb25zdCBjaCA9IHRoaXMuYnVmZmVyWysraV07XG4gICAgICAgICAgICBpZiAoY2ggPT09ICcrJylcbiAgICAgICAgICAgICAgICB0aGlzLmJsb2NrU2NhbGFyS2VlcCA9IHRydWU7XG4gICAgICAgICAgICBlbHNlIGlmIChjaCA+ICcwJyAmJiBjaCA8PSAnOScpXG4gICAgICAgICAgICAgICAgdGhpcy5ibG9ja1NjYWxhckluZGVudCA9IE51bWJlcihjaCkgLSAxO1xuICAgICAgICAgICAgZWxzZSBpZiAoY2ggIT09ICctJylcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geWllbGQqIHRoaXMucHVzaFVudGlsKGNoID0+IGlzRW1wdHkoY2gpIHx8IGNoID09PSAnIycpO1xuICAgIH1cbiAgICAqcGFyc2VCbG9ja1NjYWxhcigpIHtcbiAgICAgICAgbGV0IG5sID0gdGhpcy5wb3MgLSAxOyAvLyBtYXkgYmUgLTEgaWYgdGhpcy5wb3MgPT09IDBcbiAgICAgICAgbGV0IGluZGVudCA9IDA7XG4gICAgICAgIGxldCBjaDtcbiAgICAgICAgbG9vcDogZm9yIChsZXQgaSA9IHRoaXMucG9zOyAoY2ggPSB0aGlzLmJ1ZmZlcltpXSk7ICsraSkge1xuICAgICAgICAgICAgc3dpdGNoIChjaCkge1xuICAgICAgICAgICAgICAgIGNhc2UgJyAnOlxuICAgICAgICAgICAgICAgICAgICBpbmRlbnQgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnXFxuJzpcbiAgICAgICAgICAgICAgICAgICAgbmwgPSBpO1xuICAgICAgICAgICAgICAgICAgICBpbmRlbnQgPSAwO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdcXHInOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5leHQgPSB0aGlzLmJ1ZmZlcltpICsgMV07XG4gICAgICAgICAgICAgICAgICAgIGlmICghbmV4dCAmJiAhdGhpcy5hdEVuZClcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNldE5leHQoJ2Jsb2NrLXNjYWxhcicpO1xuICAgICAgICAgICAgICAgICAgICBpZiAobmV4dCA9PT0gJ1xcbicpXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9IC8vIGZhbGx0aHJvdWdoXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgYnJlYWsgbG9vcDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIWNoICYmICF0aGlzLmF0RW5kKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0TmV4dCgnYmxvY2stc2NhbGFyJyk7XG4gICAgICAgIGlmIChpbmRlbnQgPj0gdGhpcy5pbmRlbnROZXh0KSB7XG4gICAgICAgICAgICBpZiAodGhpcy5ibG9ja1NjYWxhckluZGVudCA9PT0gLTEpXG4gICAgICAgICAgICAgICAgdGhpcy5pbmRlbnROZXh0ID0gaW5kZW50O1xuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbmRlbnROZXh0ID1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ibG9ja1NjYWxhckluZGVudCArICh0aGlzLmluZGVudE5leHQgPT09IDAgPyAxIDogdGhpcy5pbmRlbnROZXh0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjcyA9IHRoaXMuY29udGludWVTY2FsYXIobmwgKyAxKTtcbiAgICAgICAgICAgICAgICBpZiAoY3MgPT09IC0xKVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBubCA9IHRoaXMuYnVmZmVyLmluZGV4T2YoJ1xcbicsIGNzKTtcbiAgICAgICAgICAgIH0gd2hpbGUgKG5sICE9PSAtMSk7XG4gICAgICAgICAgICBpZiAobmwgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmF0RW5kKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zZXROZXh0KCdibG9jay1zY2FsYXInKTtcbiAgICAgICAgICAgICAgICBubCA9IHRoaXMuYnVmZmVyLmxlbmd0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBUcmFpbGluZyBpbnN1ZmZpY2llbnRseSBpbmRlbnRlZCB0YWJzIGFyZSBpbnZhbGlkLlxuICAgICAgICAvLyBUbyBjYXRjaCB0aGF0IGR1cmluZyBwYXJzaW5nLCB3ZSBpbmNsdWRlIHRoZW0gaW4gdGhlIGJsb2NrIHNjYWxhciB2YWx1ZS5cbiAgICAgICAgbGV0IGkgPSBubCArIDE7XG4gICAgICAgIGNoID0gdGhpcy5idWZmZXJbaV07XG4gICAgICAgIHdoaWxlIChjaCA9PT0gJyAnKVxuICAgICAgICAgICAgY2ggPSB0aGlzLmJ1ZmZlclsrK2ldO1xuICAgICAgICBpZiAoY2ggPT09ICdcXHQnKSB7XG4gICAgICAgICAgICB3aGlsZSAoY2ggPT09ICdcXHQnIHx8IGNoID09PSAnICcgfHwgY2ggPT09ICdcXHInIHx8IGNoID09PSAnXFxuJylcbiAgICAgICAgICAgICAgICBjaCA9IHRoaXMuYnVmZmVyWysraV07XG4gICAgICAgICAgICBubCA9IGkgLSAxO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKCF0aGlzLmJsb2NrU2NhbGFyS2VlcCkge1xuICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgIGxldCBpID0gbmwgLSAxO1xuICAgICAgICAgICAgICAgIGxldCBjaCA9IHRoaXMuYnVmZmVyW2ldO1xuICAgICAgICAgICAgICAgIGlmIChjaCA9PT0gJ1xccicpXG4gICAgICAgICAgICAgICAgICAgIGNoID0gdGhpcy5idWZmZXJbLS1pXTtcbiAgICAgICAgICAgICAgICBjb25zdCBsYXN0Q2hhciA9IGk7IC8vIERyb3AgdGhlIGxpbmUgaWYgbGFzdCBjaGFyIG5vdCBtb3JlIGluZGVudGVkXG4gICAgICAgICAgICAgICAgd2hpbGUgKGNoID09PSAnICcpXG4gICAgICAgICAgICAgICAgICAgIGNoID0gdGhpcy5idWZmZXJbLS1pXTtcbiAgICAgICAgICAgICAgICBpZiAoY2ggPT09ICdcXG4nICYmIGkgPj0gdGhpcy5wb3MgJiYgaSArIDEgKyBpbmRlbnQgPiBsYXN0Q2hhcilcbiAgICAgICAgICAgICAgICAgICAgbmwgPSBpO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9IHdoaWxlICh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgICB5aWVsZCBTQ0FMQVI7XG4gICAgICAgIHlpZWxkKiB0aGlzLnB1c2hUb0luZGV4KG5sICsgMSwgdHJ1ZSk7XG4gICAgICAgIHJldHVybiB5aWVsZCogdGhpcy5wYXJzZUxpbmVTdGFydCgpO1xuICAgIH1cbiAgICAqcGFyc2VQbGFpblNjYWxhcigpIHtcbiAgICAgICAgY29uc3QgaW5GbG93ID0gdGhpcy5mbG93TGV2ZWwgPiAwO1xuICAgICAgICBsZXQgZW5kID0gdGhpcy5wb3MgLSAxO1xuICAgICAgICBsZXQgaSA9IHRoaXMucG9zIC0gMTtcbiAgICAgICAgbGV0IGNoO1xuICAgICAgICB3aGlsZSAoKGNoID0gdGhpcy5idWZmZXJbKytpXSkpIHtcbiAgICAgICAgICAgIGlmIChjaCA9PT0gJzonKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dCA9IHRoaXMuYnVmZmVyW2kgKyAxXTtcbiAgICAgICAgICAgICAgICBpZiAoaXNFbXB0eShuZXh0KSB8fCAoaW5GbG93ICYmIGZsb3dJbmRpY2F0b3JDaGFycy5oYXMobmV4dCkpKVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBlbmQgPSBpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoaXNFbXB0eShjaCkpIHtcbiAgICAgICAgICAgICAgICBsZXQgbmV4dCA9IHRoaXMuYnVmZmVyW2kgKyAxXTtcbiAgICAgICAgICAgICAgICBpZiAoY2ggPT09ICdcXHInKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChuZXh0ID09PSAnXFxuJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaSArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2ggPSAnXFxuJztcbiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgPSB0aGlzLmJ1ZmZlcltpICsgMV07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgZW5kID0gaTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKG5leHQgPT09ICcjJyB8fCAoaW5GbG93ICYmIGZsb3dJbmRpY2F0b3JDaGFycy5oYXMobmV4dCkpKVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBpZiAoY2ggPT09ICdcXG4nKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNzID0gdGhpcy5jb250aW51ZVNjYWxhcihpICsgMSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjcyA9PT0gLTEpXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgaSA9IE1hdGgubWF4KGksIGNzIC0gMik7IC8vIHRvIGFkdmFuY2UsIGJ1dCBzdGlsbCBhY2NvdW50IGZvciAnICMnXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKGluRmxvdyAmJiBmbG93SW5kaWNhdG9yQ2hhcnMuaGFzKGNoKSlcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgZW5kID0gaTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIWNoICYmICF0aGlzLmF0RW5kKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0TmV4dCgncGxhaW4tc2NhbGFyJyk7XG4gICAgICAgIHlpZWxkIFNDQUxBUjtcbiAgICAgICAgeWllbGQqIHRoaXMucHVzaFRvSW5kZXgoZW5kICsgMSwgdHJ1ZSk7XG4gICAgICAgIHJldHVybiBpbkZsb3cgPyAnZmxvdycgOiAnZG9jJztcbiAgICB9XG4gICAgKnB1c2hDb3VudChuKSB7XG4gICAgICAgIGlmIChuID4gMCkge1xuICAgICAgICAgICAgeWllbGQgdGhpcy5idWZmZXIuc3Vic3RyKHRoaXMucG9zLCBuKTtcbiAgICAgICAgICAgIHRoaXMucG9zICs9IG47XG4gICAgICAgICAgICByZXR1cm4gbjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgKnB1c2hUb0luZGV4KGksIGFsbG93RW1wdHkpIHtcbiAgICAgICAgY29uc3QgcyA9IHRoaXMuYnVmZmVyLnNsaWNlKHRoaXMucG9zLCBpKTtcbiAgICAgICAgaWYgKHMpIHtcbiAgICAgICAgICAgIHlpZWxkIHM7XG4gICAgICAgICAgICB0aGlzLnBvcyArPSBzLmxlbmd0aDtcbiAgICAgICAgICAgIHJldHVybiBzLmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChhbGxvd0VtcHR5KVxuICAgICAgICAgICAgeWllbGQgJyc7XG4gICAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICAqcHVzaEluZGljYXRvcnMoKSB7XG4gICAgICAgIHN3aXRjaCAodGhpcy5jaGFyQXQoMCkpIHtcbiAgICAgICAgICAgIGNhc2UgJyEnOlxuICAgICAgICAgICAgICAgIHJldHVybiAoKHlpZWxkKiB0aGlzLnB1c2hUYWcoKSkgK1xuICAgICAgICAgICAgICAgICAgICAoeWllbGQqIHRoaXMucHVzaFNwYWNlcyh0cnVlKSkgK1xuICAgICAgICAgICAgICAgICAgICAoeWllbGQqIHRoaXMucHVzaEluZGljYXRvcnMoKSkpO1xuICAgICAgICAgICAgY2FzZSAnJic6XG4gICAgICAgICAgICAgICAgcmV0dXJuICgoeWllbGQqIHRoaXMucHVzaFVudGlsKGlzTm90QW5jaG9yQ2hhcikpICtcbiAgICAgICAgICAgICAgICAgICAgKHlpZWxkKiB0aGlzLnB1c2hTcGFjZXModHJ1ZSkpICtcbiAgICAgICAgICAgICAgICAgICAgKHlpZWxkKiB0aGlzLnB1c2hJbmRpY2F0b3JzKCkpKTtcbiAgICAgICAgICAgIGNhc2UgJy0nOiAvLyB0aGlzIGlzIGFuIGVycm9yXG4gICAgICAgICAgICBjYXNlICc/JzogLy8gdGhpcyBpcyBhbiBlcnJvciBvdXRzaWRlIGZsb3cgY29sbGVjdGlvbnNcbiAgICAgICAgICAgIGNhc2UgJzonOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaW5GbG93ID0gdGhpcy5mbG93TGV2ZWwgPiAwO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNoMSA9IHRoaXMuY2hhckF0KDEpO1xuICAgICAgICAgICAgICAgIGlmIChpc0VtcHR5KGNoMSkgfHwgKGluRmxvdyAmJiBmbG93SW5kaWNhdG9yQ2hhcnMuaGFzKGNoMSkpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghaW5GbG93KVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmRlbnROZXh0ID0gdGhpcy5pbmRlbnRWYWx1ZSArIDE7XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuZmxvd0tleSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmxvd0tleSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKCh5aWVsZCogdGhpcy5wdXNoQ291bnQoMSkpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICh5aWVsZCogdGhpcy5wdXNoU3BhY2VzKHRydWUpKSArXG4gICAgICAgICAgICAgICAgICAgICAgICAoeWllbGQqIHRoaXMucHVzaEluZGljYXRvcnMoKSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgKnB1c2hUYWcoKSB7XG4gICAgICAgIGlmICh0aGlzLmNoYXJBdCgxKSA9PT0gJzwnKSB7XG4gICAgICAgICAgICBsZXQgaSA9IHRoaXMucG9zICsgMjtcbiAgICAgICAgICAgIGxldCBjaCA9IHRoaXMuYnVmZmVyW2ldO1xuICAgICAgICAgICAgd2hpbGUgKCFpc0VtcHR5KGNoKSAmJiBjaCAhPT0gJz4nKVxuICAgICAgICAgICAgICAgIGNoID0gdGhpcy5idWZmZXJbKytpXTtcbiAgICAgICAgICAgIHJldHVybiB5aWVsZCogdGhpcy5wdXNoVG9JbmRleChjaCA9PT0gJz4nID8gaSArIDEgOiBpLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBsZXQgaSA9IHRoaXMucG9zICsgMTtcbiAgICAgICAgICAgIGxldCBjaCA9IHRoaXMuYnVmZmVyW2ldO1xuICAgICAgICAgICAgd2hpbGUgKGNoKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRhZ0NoYXJzLmhhcyhjaCkpXG4gICAgICAgICAgICAgICAgICAgIGNoID0gdGhpcy5idWZmZXJbKytpXTtcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChjaCA9PT0gJyUnICYmXG4gICAgICAgICAgICAgICAgICAgIGhleERpZ2l0cy5oYXModGhpcy5idWZmZXJbaSArIDFdKSAmJlxuICAgICAgICAgICAgICAgICAgICBoZXhEaWdpdHMuaGFzKHRoaXMuYnVmZmVyW2kgKyAyXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2ggPSB0aGlzLmJ1ZmZlclsoaSArPSAzKV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4geWllbGQqIHRoaXMucHVzaFRvSW5kZXgoaSwgZmFsc2UpO1xuICAgICAgICB9XG4gICAgfVxuICAgICpwdXNoTmV3bGluZSgpIHtcbiAgICAgICAgY29uc3QgY2ggPSB0aGlzLmJ1ZmZlclt0aGlzLnBvc107XG4gICAgICAgIGlmIChjaCA9PT0gJ1xcbicpXG4gICAgICAgICAgICByZXR1cm4geWllbGQqIHRoaXMucHVzaENvdW50KDEpO1xuICAgICAgICBlbHNlIGlmIChjaCA9PT0gJ1xccicgJiYgdGhpcy5jaGFyQXQoMSkgPT09ICdcXG4nKVxuICAgICAgICAgICAgcmV0dXJuIHlpZWxkKiB0aGlzLnB1c2hDb3VudCgyKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgICpwdXNoU3BhY2VzKGFsbG93VGFicykge1xuICAgICAgICBsZXQgaSA9IHRoaXMucG9zIC0gMTtcbiAgICAgICAgbGV0IGNoO1xuICAgICAgICBkbyB7XG4gICAgICAgICAgICBjaCA9IHRoaXMuYnVmZmVyWysraV07XG4gICAgICAgIH0gd2hpbGUgKGNoID09PSAnICcgfHwgKGFsbG93VGFicyAmJiBjaCA9PT0gJ1xcdCcpKTtcbiAgICAgICAgY29uc3QgbiA9IGkgLSB0aGlzLnBvcztcbiAgICAgICAgaWYgKG4gPiAwKSB7XG4gICAgICAgICAgICB5aWVsZCB0aGlzLmJ1ZmZlci5zdWJzdHIodGhpcy5wb3MsIG4pO1xuICAgICAgICAgICAgdGhpcy5wb3MgPSBpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuO1xuICAgIH1cbiAgICAqcHVzaFVudGlsKHRlc3QpIHtcbiAgICAgICAgbGV0IGkgPSB0aGlzLnBvcztcbiAgICAgICAgbGV0IGNoID0gdGhpcy5idWZmZXJbaV07XG4gICAgICAgIHdoaWxlICghdGVzdChjaCkpXG4gICAgICAgICAgICBjaCA9IHRoaXMuYnVmZmVyWysraV07XG4gICAgICAgIHJldHVybiB5aWVsZCogdGhpcy5wdXNoVG9JbmRleChpLCBmYWxzZSk7XG4gICAgfVxufVxuXG5leHBvcnQgeyBMZXhlciB9O1xuIiwgIi8qKlxuICogVHJhY2tzIG5ld2xpbmVzIGR1cmluZyBwYXJzaW5nIGluIG9yZGVyIHRvIHByb3ZpZGUgYW4gZWZmaWNpZW50IEFQSSBmb3JcbiAqIGRldGVybWluaW5nIHRoZSBvbmUtaW5kZXhlZCBgeyBsaW5lLCBjb2wgfWAgcG9zaXRpb24gZm9yIGFueSBvZmZzZXRcbiAqIHdpdGhpbiB0aGUgaW5wdXQuXG4gKi9cbmNsYXNzIExpbmVDb3VudGVyIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5saW5lU3RhcnRzID0gW107XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTaG91bGQgYmUgY2FsbGVkIGluIGFzY2VuZGluZyBvcmRlci4gT3RoZXJ3aXNlLCBjYWxsXG4gICAgICAgICAqIGBsaW5lQ291bnRlci5saW5lU3RhcnRzLnNvcnQoKWAgYmVmb3JlIGNhbGxpbmcgYGxpbmVQb3MoKWAuXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLmFkZE5ld0xpbmUgPSAob2Zmc2V0KSA9PiB0aGlzLmxpbmVTdGFydHMucHVzaChvZmZzZXQpO1xuICAgICAgICAvKipcbiAgICAgICAgICogUGVyZm9ybXMgYSBiaW5hcnkgc2VhcmNoIGFuZCByZXR1cm5zIHRoZSAxLWluZGV4ZWQgeyBsaW5lLCBjb2wgfVxuICAgICAgICAgKiBwb3NpdGlvbiBvZiBgb2Zmc2V0YC4gSWYgYGxpbmUgPT09IDBgLCBgYWRkTmV3TGluZWAgaGFzIG5ldmVyIGJlZW5cbiAgICAgICAgICogY2FsbGVkIG9yIGBvZmZzZXRgIGlzIGJlZm9yZSB0aGUgZmlyc3Qga25vd24gbmV3bGluZS5cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMubGluZVBvcyA9IChvZmZzZXQpID0+IHtcbiAgICAgICAgICAgIGxldCBsb3cgPSAwO1xuICAgICAgICAgICAgbGV0IGhpZ2ggPSB0aGlzLmxpbmVTdGFydHMubGVuZ3RoO1xuICAgICAgICAgICAgd2hpbGUgKGxvdyA8IGhpZ2gpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtaWQgPSAobG93ICsgaGlnaCkgPj4gMTsgLy8gTWF0aC5mbG9vcigobG93ICsgaGlnaCkgLyAyKVxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmxpbmVTdGFydHNbbWlkXSA8IG9mZnNldClcbiAgICAgICAgICAgICAgICAgICAgbG93ID0gbWlkICsgMTtcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGhpZ2ggPSBtaWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5saW5lU3RhcnRzW2xvd10gPT09IG9mZnNldClcbiAgICAgICAgICAgICAgICByZXR1cm4geyBsaW5lOiBsb3cgKyAxLCBjb2w6IDEgfTtcbiAgICAgICAgICAgIGlmIChsb3cgPT09IDApXG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgbGluZTogMCwgY29sOiBvZmZzZXQgfTtcbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5saW5lU3RhcnRzW2xvdyAtIDFdO1xuICAgICAgICAgICAgcmV0dXJuIHsgbGluZTogbG93LCBjb2w6IG9mZnNldCAtIHN0YXJ0ICsgMSB9O1xuICAgICAgICB9O1xuICAgIH1cbn1cblxuZXhwb3J0IHsgTGluZUNvdW50ZXIgfTtcbiIsICJpbXBvcnQgeyB0b2tlblR5cGUgfSBmcm9tICcuL2NzdC5qcyc7XG5pbXBvcnQgeyBMZXhlciB9IGZyb20gJy4vbGV4ZXIuanMnO1xuXG5mdW5jdGlvbiBpbmNsdWRlc1Rva2VuKGxpc3QsIHR5cGUpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyArK2kpXG4gICAgICAgIGlmIChsaXN0W2ldLnR5cGUgPT09IHR5cGUpXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICByZXR1cm4gZmFsc2U7XG59XG5mdW5jdGlvbiBmaW5kTm9uRW1wdHlJbmRleChsaXN0KSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgKytpKSB7XG4gICAgICAgIHN3aXRjaCAobGlzdFtpXS50eXBlKSB7XG4gICAgICAgICAgICBjYXNlICdzcGFjZSc6XG4gICAgICAgICAgICBjYXNlICdjb21tZW50JzpcbiAgICAgICAgICAgIGNhc2UgJ25ld2xpbmUnOlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gLTE7XG59XG5mdW5jdGlvbiBpc0Zsb3dUb2tlbih0b2tlbikge1xuICAgIHN3aXRjaCAodG9rZW4/LnR5cGUpIHtcbiAgICAgICAgY2FzZSAnYWxpYXMnOlxuICAgICAgICBjYXNlICdzY2FsYXInOlxuICAgICAgICBjYXNlICdzaW5nbGUtcXVvdGVkLXNjYWxhcic6XG4gICAgICAgIGNhc2UgJ2RvdWJsZS1xdW90ZWQtc2NhbGFyJzpcbiAgICAgICAgY2FzZSAnZmxvdy1jb2xsZWN0aW9uJzpcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGdldFByZXZQcm9wcyhwYXJlbnQpIHtcbiAgICBzd2l0Y2ggKHBhcmVudC50eXBlKSB7XG4gICAgICAgIGNhc2UgJ2RvY3VtZW50JzpcbiAgICAgICAgICAgIHJldHVybiBwYXJlbnQuc3RhcnQ7XG4gICAgICAgIGNhc2UgJ2Jsb2NrLW1hcCc6IHtcbiAgICAgICAgICAgIGNvbnN0IGl0ID0gcGFyZW50Lml0ZW1zW3BhcmVudC5pdGVtcy5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgIHJldHVybiBpdC5zZXAgPz8gaXQuc3RhcnQ7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAnYmxvY2stc2VxJzpcbiAgICAgICAgICAgIHJldHVybiBwYXJlbnQuaXRlbXNbcGFyZW50Lml0ZW1zLmxlbmd0aCAtIDFdLnN0YXJ0O1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCBzaG91bGQgbm90IGhhcHBlbiAqL1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbn1cbi8qKiBOb3RlOiBNYXkgbW9kaWZ5IGlucHV0IGFycmF5ICovXG5mdW5jdGlvbiBnZXRGaXJzdEtleVN0YXJ0UHJvcHMocHJldikge1xuICAgIGlmIChwcmV2Lmxlbmd0aCA9PT0gMClcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIGxldCBpID0gcHJldi5sZW5ndGg7XG4gICAgbG9vcDogd2hpbGUgKC0taSA+PSAwKSB7XG4gICAgICAgIHN3aXRjaCAocHJldltpXS50eXBlKSB7XG4gICAgICAgICAgICBjYXNlICdkb2Mtc3RhcnQnOlxuICAgICAgICAgICAgY2FzZSAnZXhwbGljaXQta2V5LWluZCc6XG4gICAgICAgICAgICBjYXNlICdtYXAtdmFsdWUtaW5kJzpcbiAgICAgICAgICAgIGNhc2UgJ3NlcS1pdGVtLWluZCc6XG4gICAgICAgICAgICBjYXNlICduZXdsaW5lJzpcbiAgICAgICAgICAgICAgICBicmVhayBsb29wO1xuICAgICAgICB9XG4gICAgfVxuICAgIHdoaWxlIChwcmV2WysraV0/LnR5cGUgPT09ICdzcGFjZScpIHtcbiAgICAgICAgLyogbG9vcCAqL1xuICAgIH1cbiAgICByZXR1cm4gcHJldi5zcGxpY2UoaSwgcHJldi5sZW5ndGgpO1xufVxuZnVuY3Rpb24gZml4Rmxvd1NlcUl0ZW1zKGZjKSB7XG4gICAgaWYgKGZjLnN0YXJ0LnR5cGUgPT09ICdmbG93LXNlcS1zdGFydCcpIHtcbiAgICAgICAgZm9yIChjb25zdCBpdCBvZiBmYy5pdGVtcykge1xuICAgICAgICAgICAgaWYgKGl0LnNlcCAmJlxuICAgICAgICAgICAgICAgICFpdC52YWx1ZSAmJlxuICAgICAgICAgICAgICAgICFpbmNsdWRlc1Rva2VuKGl0LnN0YXJ0LCAnZXhwbGljaXQta2V5LWluZCcpICYmXG4gICAgICAgICAgICAgICAgIWluY2x1ZGVzVG9rZW4oaXQuc2VwLCAnbWFwLXZhbHVlLWluZCcpKSB7XG4gICAgICAgICAgICAgICAgaWYgKGl0LmtleSlcbiAgICAgICAgICAgICAgICAgICAgaXQudmFsdWUgPSBpdC5rZXk7XG4gICAgICAgICAgICAgICAgZGVsZXRlIGl0LmtleTtcbiAgICAgICAgICAgICAgICBpZiAoaXNGbG93VG9rZW4oaXQudmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpdC52YWx1ZS5lbmQpXG4gICAgICAgICAgICAgICAgICAgICAgICBBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShpdC52YWx1ZS5lbmQsIGl0LnNlcCk7XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0LnZhbHVlLmVuZCA9IGl0LnNlcDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShpdC5zdGFydCwgaXQuc2VwKTtcbiAgICAgICAgICAgICAgICBkZWxldGUgaXQuc2VwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuLyoqXG4gKiBBIFlBTUwgY29uY3JldGUgc3ludGF4IHRyZWUgKENTVCkgcGFyc2VyXG4gKlxuICogYGBgdHNcbiAqIGNvbnN0IHNyYzogc3RyaW5nID0gLi4uXG4gKiBmb3IgKGNvbnN0IHRva2VuIG9mIG5ldyBQYXJzZXIoKS5wYXJzZShzcmMpKSB7XG4gKiAgIC8vIHRva2VuOiBUb2tlblxuICogfVxuICogYGBgXG4gKlxuICogVG8gdXNlIHRoZSBwYXJzZXIgd2l0aCBhIHVzZXItcHJvdmlkZWQgbGV4ZXI6XG4gKlxuICogYGBgdHNcbiAqIGZ1bmN0aW9uKiBwYXJzZShzb3VyY2U6IHN0cmluZywgbGV4ZXI6IExleGVyKSB7XG4gKiAgIGNvbnN0IHBhcnNlciA9IG5ldyBQYXJzZXIoKVxuICogICBmb3IgKGNvbnN0IGxleGVtZSBvZiBsZXhlci5sZXgoc291cmNlKSlcbiAqICAgICB5aWVsZCogcGFyc2VyLm5leHQobGV4ZW1lKVxuICogICB5aWVsZCogcGFyc2VyLmVuZCgpXG4gKiB9XG4gKlxuICogY29uc3Qgc3JjOiBzdHJpbmcgPSAuLi5cbiAqIGNvbnN0IGxleGVyID0gbmV3IExleGVyKClcbiAqIGZvciAoY29uc3QgdG9rZW4gb2YgcGFyc2Uoc3JjLCBsZXhlcikpIHtcbiAqICAgLy8gdG9rZW46IFRva2VuXG4gKiB9XG4gKiBgYGBcbiAqL1xuY2xhc3MgUGFyc2VyIHtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0gb25OZXdMaW5lIC0gSWYgZGVmaW5lZCwgY2FsbGVkIHNlcGFyYXRlbHkgd2l0aCB0aGUgc3RhcnQgcG9zaXRpb24gb2ZcbiAgICAgKiAgIGVhY2ggbmV3IGxpbmUgKGluIGBwYXJzZSgpYCwgaW5jbHVkaW5nIHRoZSBzdGFydCBvZiBpbnB1dCkuXG4gICAgICovXG4gICAgY29uc3RydWN0b3Iob25OZXdMaW5lKSB7XG4gICAgICAgIC8qKiBJZiB0cnVlLCBzcGFjZSBhbmQgc2VxdWVuY2UgaW5kaWNhdG9ycyBjb3VudCBhcyBpbmRlbnRhdGlvbiAqL1xuICAgICAgICB0aGlzLmF0TmV3TGluZSA9IHRydWU7XG4gICAgICAgIC8qKiBJZiB0cnVlLCBuZXh0IHRva2VuIGlzIGEgc2NhbGFyIHZhbHVlICovXG4gICAgICAgIHRoaXMuYXRTY2FsYXIgPSBmYWxzZTtcbiAgICAgICAgLyoqIEN1cnJlbnQgaW5kZW50YXRpb24gbGV2ZWwgKi9cbiAgICAgICAgdGhpcy5pbmRlbnQgPSAwO1xuICAgICAgICAvKiogQ3VycmVudCBvZmZzZXQgc2luY2UgdGhlIHN0YXJ0IG9mIHBhcnNpbmcgKi9cbiAgICAgICAgdGhpcy5vZmZzZXQgPSAwO1xuICAgICAgICAvKiogT24gdGhlIHNhbWUgbGluZSB3aXRoIGEgYmxvY2sgbWFwIGtleSAqL1xuICAgICAgICB0aGlzLm9uS2V5TGluZSA9IGZhbHNlO1xuICAgICAgICAvKiogVG9wIGluZGljYXRlcyB0aGUgbm9kZSB0aGF0J3MgY3VycmVudGx5IGJlaW5nIGJ1aWx0ICovXG4gICAgICAgIHRoaXMuc3RhY2sgPSBbXTtcbiAgICAgICAgLyoqIFRoZSBzb3VyY2Ugb2YgdGhlIGN1cnJlbnQgdG9rZW4sIHNldCBpbiBwYXJzZSgpICovXG4gICAgICAgIHRoaXMuc291cmNlID0gJyc7XG4gICAgICAgIC8qKiBUaGUgdHlwZSBvZiB0aGUgY3VycmVudCB0b2tlbiwgc2V0IGluIHBhcnNlKCkgKi9cbiAgICAgICAgdGhpcy50eXBlID0gJyc7XG4gICAgICAgIC8vIE11c3QgYmUgZGVmaW5lZCBhZnRlciBgbmV4dCgpYFxuICAgICAgICB0aGlzLmxleGVyID0gbmV3IExleGVyKCk7XG4gICAgICAgIHRoaXMub25OZXdMaW5lID0gb25OZXdMaW5lO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBQYXJzZSBgc291cmNlYCBhcyBhIFlBTUwgc3RyZWFtLlxuICAgICAqIElmIGBpbmNvbXBsZXRlYCwgYSBwYXJ0IG9mIHRoZSBsYXN0IGxpbmUgbWF5IGJlIGxlZnQgYXMgYSBidWZmZXIgZm9yIHRoZSBuZXh0IGNhbGwuXG4gICAgICpcbiAgICAgKiBFcnJvcnMgYXJlIG5vdCB0aHJvd24sIGJ1dCB5aWVsZGVkIGFzIGB7IHR5cGU6ICdlcnJvcicsIG1lc3NhZ2UgfWAgdG9rZW5zLlxuICAgICAqXG4gICAgICogQHJldHVybnMgQSBnZW5lcmF0b3Igb2YgdG9rZW5zIHJlcHJlc2VudGluZyBlYWNoIGRpcmVjdGl2ZSwgZG9jdW1lbnQsIGFuZCBvdGhlciBzdHJ1Y3R1cmUuXG4gICAgICovXG4gICAgKnBhcnNlKHNvdXJjZSwgaW5jb21wbGV0ZSA9IGZhbHNlKSB7XG4gICAgICAgIGlmICh0aGlzLm9uTmV3TGluZSAmJiB0aGlzLm9mZnNldCA9PT0gMClcbiAgICAgICAgICAgIHRoaXMub25OZXdMaW5lKDApO1xuICAgICAgICBmb3IgKGNvbnN0IGxleGVtZSBvZiB0aGlzLmxleGVyLmxleChzb3VyY2UsIGluY29tcGxldGUpKVxuICAgICAgICAgICAgeWllbGQqIHRoaXMubmV4dChsZXhlbWUpO1xuICAgICAgICBpZiAoIWluY29tcGxldGUpXG4gICAgICAgICAgICB5aWVsZCogdGhpcy5lbmQoKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQWR2YW5jZSB0aGUgcGFyc2VyIGJ5IHRoZSBgc291cmNlYCBvZiBvbmUgbGV4aWNhbCB0b2tlbi5cbiAgICAgKi9cbiAgICAqbmV4dChzb3VyY2UpIHtcbiAgICAgICAgdGhpcy5zb3VyY2UgPSBzb3VyY2U7XG4gICAgICAgIGlmICh0aGlzLmF0U2NhbGFyKSB7XG4gICAgICAgICAgICB0aGlzLmF0U2NhbGFyID0gZmFsc2U7XG4gICAgICAgICAgICB5aWVsZCogdGhpcy5zdGVwKCk7XG4gICAgICAgICAgICB0aGlzLm9mZnNldCArPSBzb3VyY2UubGVuZ3RoO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHR5cGUgPSB0b2tlblR5cGUoc291cmNlKTtcbiAgICAgICAgaWYgKCF0eXBlKSB7XG4gICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gYE5vdCBhIFlBTUwgdG9rZW46ICR7c291cmNlfWA7XG4gICAgICAgICAgICB5aWVsZCogdGhpcy5wb3AoeyB0eXBlOiAnZXJyb3InLCBvZmZzZXQ6IHRoaXMub2Zmc2V0LCBtZXNzYWdlLCBzb3VyY2UgfSk7XG4gICAgICAgICAgICB0aGlzLm9mZnNldCArPSBzb3VyY2UubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHR5cGUgPT09ICdzY2FsYXInKSB7XG4gICAgICAgICAgICB0aGlzLmF0TmV3TGluZSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5hdFNjYWxhciA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnR5cGUgPSAnc2NhbGFyJztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gICAgICAgICAgICB5aWVsZCogdGhpcy5zdGVwKCk7XG4gICAgICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlICduZXdsaW5lJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hdE5ld0xpbmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluZGVudCA9IDA7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm9uTmV3TGluZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25OZXdMaW5lKHRoaXMub2Zmc2V0ICsgc291cmNlLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3NwYWNlJzpcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuYXROZXdMaW5lICYmIHNvdXJjZVswXSA9PT0gJyAnKVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmRlbnQgKz0gc291cmNlLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnZXhwbGljaXQta2V5LWluZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnbWFwLXZhbHVlLWluZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnc2VxLWl0ZW0taW5kJzpcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuYXROZXdMaW5lKVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmRlbnQgKz0gc291cmNlLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnZG9jLW1vZGUnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2Zsb3ctZXJyb3ItZW5kJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXROZXdMaW5lID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLm9mZnNldCArPSBzb3VyY2UubGVuZ3RoO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKiBDYWxsIGF0IGVuZCBvZiBpbnB1dCB0byBwdXNoIG91dCBhbnkgcmVtYWluaW5nIGNvbnN0cnVjdGlvbnMgKi9cbiAgICAqZW5kKCkge1xuICAgICAgICB3aGlsZSAodGhpcy5zdGFjay5sZW5ndGggPiAwKVxuICAgICAgICAgICAgeWllbGQqIHRoaXMucG9wKCk7XG4gICAgfVxuICAgIGdldCBzb3VyY2VUb2tlbigpIHtcbiAgICAgICAgY29uc3Qgc3QgPSB7XG4gICAgICAgICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICAgICAgICBvZmZzZXQ6IHRoaXMub2Zmc2V0LFxuICAgICAgICAgICAgaW5kZW50OiB0aGlzLmluZGVudCxcbiAgICAgICAgICAgIHNvdXJjZTogdGhpcy5zb3VyY2VcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHN0O1xuICAgIH1cbiAgICAqc3RlcCgpIHtcbiAgICAgICAgY29uc3QgdG9wID0gdGhpcy5wZWVrKDEpO1xuICAgICAgICBpZiAodGhpcy50eXBlID09PSAnZG9jLWVuZCcgJiYgKCF0b3AgfHwgdG9wLnR5cGUgIT09ICdkb2MtZW5kJykpIHtcbiAgICAgICAgICAgIHdoaWxlICh0aGlzLnN0YWNrLmxlbmd0aCA+IDApXG4gICAgICAgICAgICAgICAgeWllbGQqIHRoaXMucG9wKCk7XG4gICAgICAgICAgICB0aGlzLnN0YWNrLnB1c2goe1xuICAgICAgICAgICAgICAgIHR5cGU6ICdkb2MtZW5kJyxcbiAgICAgICAgICAgICAgICBvZmZzZXQ6IHRoaXMub2Zmc2V0LFxuICAgICAgICAgICAgICAgIHNvdXJjZTogdGhpcy5zb3VyY2VcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdG9wKVxuICAgICAgICAgICAgcmV0dXJuIHlpZWxkKiB0aGlzLnN0cmVhbSgpO1xuICAgICAgICBzd2l0Y2ggKHRvcC50eXBlKSB7XG4gICAgICAgICAgICBjYXNlICdkb2N1bWVudCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHlpZWxkKiB0aGlzLmRvY3VtZW50KHRvcCk7XG4gICAgICAgICAgICBjYXNlICdhbGlhcyc6XG4gICAgICAgICAgICBjYXNlICdzY2FsYXInOlxuICAgICAgICAgICAgY2FzZSAnc2luZ2xlLXF1b3RlZC1zY2FsYXInOlxuICAgICAgICAgICAgY2FzZSAnZG91YmxlLXF1b3RlZC1zY2FsYXInOlxuICAgICAgICAgICAgICAgIHJldHVybiB5aWVsZCogdGhpcy5zY2FsYXIodG9wKTtcbiAgICAgICAgICAgIGNhc2UgJ2Jsb2NrLXNjYWxhcic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHlpZWxkKiB0aGlzLmJsb2NrU2NhbGFyKHRvcCk7XG4gICAgICAgICAgICBjYXNlICdibG9jay1tYXAnOlxuICAgICAgICAgICAgICAgIHJldHVybiB5aWVsZCogdGhpcy5ibG9ja01hcCh0b3ApO1xuICAgICAgICAgICAgY2FzZSAnYmxvY2stc2VxJzpcbiAgICAgICAgICAgICAgICByZXR1cm4geWllbGQqIHRoaXMuYmxvY2tTZXF1ZW5jZSh0b3ApO1xuICAgICAgICAgICAgY2FzZSAnZmxvdy1jb2xsZWN0aW9uJzpcbiAgICAgICAgICAgICAgICByZXR1cm4geWllbGQqIHRoaXMuZmxvd0NvbGxlY3Rpb24odG9wKTtcbiAgICAgICAgICAgIGNhc2UgJ2RvYy1lbmQnOlxuICAgICAgICAgICAgICAgIHJldHVybiB5aWVsZCogdGhpcy5kb2N1bWVudEVuZCh0b3ApO1xuICAgICAgICB9XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0IHNob3VsZCBub3QgaGFwcGVuICovXG4gICAgICAgIHlpZWxkKiB0aGlzLnBvcCgpO1xuICAgIH1cbiAgICBwZWVrKG4pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGggLSBuXTtcbiAgICB9XG4gICAgKnBvcChlcnJvcikge1xuICAgICAgICBjb25zdCB0b2tlbiA9IGVycm9yID8/IHRoaXMuc3RhY2sucG9wKCk7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiBzaG91bGQgbm90IGhhcHBlbiAqL1xuICAgICAgICBpZiAoIXRva2VuKSB7XG4gICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gJ1RyaWVkIHRvIHBvcCBhbiBlbXB0eSBzdGFjayc7XG4gICAgICAgICAgICB5aWVsZCB7IHR5cGU6ICdlcnJvcicsIG9mZnNldDogdGhpcy5vZmZzZXQsIHNvdXJjZTogJycsIG1lc3NhZ2UgfTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLnN0YWNrLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgeWllbGQgdG9rZW47XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zdCB0b3AgPSB0aGlzLnBlZWsoMSk7XG4gICAgICAgICAgICBpZiAodG9rZW4udHlwZSA9PT0gJ2Jsb2NrLXNjYWxhcicpIHtcbiAgICAgICAgICAgICAgICAvLyBCbG9jayBzY2FsYXJzIHVzZSB0aGVpciBwYXJlbnQgcmF0aGVyIHRoYW4gaGVhZGVyIGluZGVudFxuICAgICAgICAgICAgICAgIHRva2VuLmluZGVudCA9ICdpbmRlbnQnIGluIHRvcCA/IHRvcC5pbmRlbnQgOiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodG9rZW4udHlwZSA9PT0gJ2Zsb3ctY29sbGVjdGlvbicgJiYgdG9wLnR5cGUgPT09ICdkb2N1bWVudCcpIHtcbiAgICAgICAgICAgICAgICAvLyBJZ25vcmUgYWxsIGluZGVudCBmb3IgdG9wLWxldmVsIGZsb3cgY29sbGVjdGlvbnNcbiAgICAgICAgICAgICAgICB0b2tlbi5pbmRlbnQgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRva2VuLnR5cGUgPT09ICdmbG93LWNvbGxlY3Rpb24nKVxuICAgICAgICAgICAgICAgIGZpeEZsb3dTZXFJdGVtcyh0b2tlbik7XG4gICAgICAgICAgICBzd2l0Y2ggKHRvcC50eXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnZG9jdW1lbnQnOlxuICAgICAgICAgICAgICAgICAgICB0b3AudmFsdWUgPSB0b2tlbjtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnYmxvY2stc2NhbGFyJzpcbiAgICAgICAgICAgICAgICAgICAgdG9wLnByb3BzLnB1c2godG9rZW4pOyAvLyBlcnJvclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdibG9jay1tYXAnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ID0gdG9wLml0ZW1zW3RvcC5pdGVtcy5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGl0LnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b3AuaXRlbXMucHVzaCh7IHN0YXJ0OiBbXSwga2V5OiB0b2tlbiwgc2VwOiBbXSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25LZXlMaW5lID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChpdC5zZXApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0LnZhbHVlID0gdG9rZW47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKGl0LCB7IGtleTogdG9rZW4sIHNlcDogW10gfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uS2V5TGluZSA9ICFpdC5leHBsaWNpdEtleTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSAnYmxvY2stc2VxJzoge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpdCA9IHRvcC5pdGVtc1t0b3AuaXRlbXMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICAgICAgICAgIGlmIChpdC52YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvcC5pdGVtcy5wdXNoKHsgc3RhcnQ6IFtdLCB2YWx1ZTogdG9rZW4gfSk7XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0LnZhbHVlID0gdG9rZW47XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlICdmbG93LWNvbGxlY3Rpb24nOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ID0gdG9wLml0ZW1zW3RvcC5pdGVtcy5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpdCB8fCBpdC52YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvcC5pdGVtcy5wdXNoKHsgc3RhcnQ6IFtdLCBrZXk6IHRva2VuLCBzZXA6IFtdIH0pO1xuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChpdC5zZXApXG4gICAgICAgICAgICAgICAgICAgICAgICBpdC52YWx1ZSA9IHRva2VuO1xuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKGl0LCB7IGtleTogdG9rZW4sIHNlcDogW10gfSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgc2hvdWxkIG5vdCBoYXBwZW4gKi9cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICB5aWVsZCogdGhpcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgeWllbGQqIHRoaXMucG9wKHRva2VuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICgodG9wLnR5cGUgPT09ICdkb2N1bWVudCcgfHxcbiAgICAgICAgICAgICAgICB0b3AudHlwZSA9PT0gJ2Jsb2NrLW1hcCcgfHxcbiAgICAgICAgICAgICAgICB0b3AudHlwZSA9PT0gJ2Jsb2NrLXNlcScpICYmXG4gICAgICAgICAgICAgICAgKHRva2VuLnR5cGUgPT09ICdibG9jay1tYXAnIHx8IHRva2VuLnR5cGUgPT09ICdibG9jay1zZXEnKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxhc3QgPSB0b2tlbi5pdGVtc1t0b2tlbi5pdGVtcy5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgICAgICBpZiAobGFzdCAmJlxuICAgICAgICAgICAgICAgICAgICAhbGFzdC5zZXAgJiZcbiAgICAgICAgICAgICAgICAgICAgIWxhc3QudmFsdWUgJiZcbiAgICAgICAgICAgICAgICAgICAgbGFzdC5zdGFydC5sZW5ndGggPiAwICYmXG4gICAgICAgICAgICAgICAgICAgIGZpbmROb25FbXB0eUluZGV4KGxhc3Quc3RhcnQpID09PSAtMSAmJlxuICAgICAgICAgICAgICAgICAgICAodG9rZW4uaW5kZW50ID09PSAwIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXN0LnN0YXJ0LmV2ZXJ5KHN0ID0+IHN0LnR5cGUgIT09ICdjb21tZW50JyB8fCBzdC5pbmRlbnQgPCB0b2tlbi5pbmRlbnQpKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodG9wLnR5cGUgPT09ICdkb2N1bWVudCcpXG4gICAgICAgICAgICAgICAgICAgICAgICB0b3AuZW5kID0gbGFzdC5zdGFydDtcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgdG9wLml0ZW1zLnB1c2goeyBzdGFydDogbGFzdC5zdGFydCB9KTtcbiAgICAgICAgICAgICAgICAgICAgdG9rZW4uaXRlbXMuc3BsaWNlKC0xLCAxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgKnN0cmVhbSgpIHtcbiAgICAgICAgc3dpdGNoICh0aGlzLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ2RpcmVjdGl2ZS1saW5lJzpcbiAgICAgICAgICAgICAgICB5aWVsZCB7IHR5cGU6ICdkaXJlY3RpdmUnLCBvZmZzZXQ6IHRoaXMub2Zmc2V0LCBzb3VyY2U6IHRoaXMuc291cmNlIH07XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgY2FzZSAnYnl0ZS1vcmRlci1tYXJrJzpcbiAgICAgICAgICAgIGNhc2UgJ3NwYWNlJzpcbiAgICAgICAgICAgIGNhc2UgJ2NvbW1lbnQnOlxuICAgICAgICAgICAgY2FzZSAnbmV3bGluZSc6XG4gICAgICAgICAgICAgICAgeWllbGQgdGhpcy5zb3VyY2VUb2tlbjtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICBjYXNlICdkb2MtbW9kZSc6XG4gICAgICAgICAgICBjYXNlICdkb2Mtc3RhcnQnOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZG9jID0ge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnZG9jdW1lbnQnLFxuICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IHRoaXMub2Zmc2V0LFxuICAgICAgICAgICAgICAgICAgICBzdGFydDogW11cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnR5cGUgPT09ICdkb2Mtc3RhcnQnKVxuICAgICAgICAgICAgICAgICAgICBkb2Muc3RhcnQucHVzaCh0aGlzLnNvdXJjZVRva2VuKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YWNrLnB1c2goZG9jKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgeWllbGQge1xuICAgICAgICAgICAgdHlwZTogJ2Vycm9yJyxcbiAgICAgICAgICAgIG9mZnNldDogdGhpcy5vZmZzZXQsXG4gICAgICAgICAgICBtZXNzYWdlOiBgVW5leHBlY3RlZCAke3RoaXMudHlwZX0gdG9rZW4gaW4gWUFNTCBzdHJlYW1gLFxuICAgICAgICAgICAgc291cmNlOiB0aGlzLnNvdXJjZVxuICAgICAgICB9O1xuICAgIH1cbiAgICAqZG9jdW1lbnQoZG9jKSB7XG4gICAgICAgIGlmIChkb2MudmFsdWUpXG4gICAgICAgICAgICByZXR1cm4geWllbGQqIHRoaXMubGluZUVuZChkb2MpO1xuICAgICAgICBzd2l0Y2ggKHRoaXMudHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnZG9jLXN0YXJ0Jzoge1xuICAgICAgICAgICAgICAgIGlmIChmaW5kTm9uRW1wdHlJbmRleChkb2Muc3RhcnQpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICB5aWVsZCogdGhpcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgeWllbGQqIHRoaXMuc3RlcCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGRvYy5zdGFydC5wdXNoKHRoaXMuc291cmNlVG9rZW4pO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ2FuY2hvcic6XG4gICAgICAgICAgICBjYXNlICd0YWcnOlxuICAgICAgICAgICAgY2FzZSAnc3BhY2UnOlxuICAgICAgICAgICAgY2FzZSAnY29tbWVudCc6XG4gICAgICAgICAgICBjYXNlICduZXdsaW5lJzpcbiAgICAgICAgICAgICAgICBkb2Muc3RhcnQucHVzaCh0aGlzLnNvdXJjZVRva2VuKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYnYgPSB0aGlzLnN0YXJ0QmxvY2tWYWx1ZShkb2MpO1xuICAgICAgICBpZiAoYnYpXG4gICAgICAgICAgICB0aGlzLnN0YWNrLnB1c2goYnYpO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHlpZWxkIHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnZXJyb3InLFxuICAgICAgICAgICAgICAgIG9mZnNldDogdGhpcy5vZmZzZXQsXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogYFVuZXhwZWN0ZWQgJHt0aGlzLnR5cGV9IHRva2VuIGluIFlBTUwgZG9jdW1lbnRgLFxuICAgICAgICAgICAgICAgIHNvdXJjZTogdGhpcy5zb3VyY2VcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG4gICAgKnNjYWxhcihzY2FsYXIpIHtcbiAgICAgICAgaWYgKHRoaXMudHlwZSA9PT0gJ21hcC12YWx1ZS1pbmQnKSB7XG4gICAgICAgICAgICBjb25zdCBwcmV2ID0gZ2V0UHJldlByb3BzKHRoaXMucGVlaygyKSk7XG4gICAgICAgICAgICBjb25zdCBzdGFydCA9IGdldEZpcnN0S2V5U3RhcnRQcm9wcyhwcmV2KTtcbiAgICAgICAgICAgIGxldCBzZXA7XG4gICAgICAgICAgICBpZiAoc2NhbGFyLmVuZCkge1xuICAgICAgICAgICAgICAgIHNlcCA9IHNjYWxhci5lbmQ7XG4gICAgICAgICAgICAgICAgc2VwLnB1c2godGhpcy5zb3VyY2VUb2tlbik7XG4gICAgICAgICAgICAgICAgZGVsZXRlIHNjYWxhci5lbmQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgc2VwID0gW3RoaXMuc291cmNlVG9rZW5dO1xuICAgICAgICAgICAgY29uc3QgbWFwID0ge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdibG9jay1tYXAnLFxuICAgICAgICAgICAgICAgIG9mZnNldDogc2NhbGFyLm9mZnNldCxcbiAgICAgICAgICAgICAgICBpbmRlbnQ6IHNjYWxhci5pbmRlbnQsXG4gICAgICAgICAgICAgICAgaXRlbXM6IFt7IHN0YXJ0LCBrZXk6IHNjYWxhciwgc2VwIH1dXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGhpcy5vbktleUxpbmUgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aCAtIDFdID0gbWFwO1xuICAgICAgICB9XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHlpZWxkKiB0aGlzLmxpbmVFbmQoc2NhbGFyKTtcbiAgICB9XG4gICAgKmJsb2NrU2NhbGFyKHNjYWxhcikge1xuICAgICAgICBzd2l0Y2ggKHRoaXMudHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnc3BhY2UnOlxuICAgICAgICAgICAgY2FzZSAnY29tbWVudCc6XG4gICAgICAgICAgICBjYXNlICduZXdsaW5lJzpcbiAgICAgICAgICAgICAgICBzY2FsYXIucHJvcHMucHVzaCh0aGlzLnNvdXJjZVRva2VuKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICBjYXNlICdzY2FsYXInOlxuICAgICAgICAgICAgICAgIHNjYWxhci5zb3VyY2UgPSB0aGlzLnNvdXJjZTtcbiAgICAgICAgICAgICAgICAvLyBibG9jay1zY2FsYXIgc291cmNlIGluY2x1ZGVzIHRyYWlsaW5nIG5ld2xpbmVcbiAgICAgICAgICAgICAgICB0aGlzLmF0TmV3TGluZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5pbmRlbnQgPSAwO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLm9uTmV3TGluZSkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgbmwgPSB0aGlzLnNvdXJjZS5pbmRleE9mKCdcXG4nKSArIDE7XG4gICAgICAgICAgICAgICAgICAgIHdoaWxlIChubCAhPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vbk5ld0xpbmUodGhpcy5vZmZzZXQgKyBubCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBubCA9IHRoaXMuc291cmNlLmluZGV4T2YoJ1xcbicsIG5sKSArIDE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgeWllbGQqIHRoaXMucG9wKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCBzaG91bGQgbm90IGhhcHBlbiAqL1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB5aWVsZCogdGhpcy5wb3AoKTtcbiAgICAgICAgICAgICAgICB5aWVsZCogdGhpcy5zdGVwKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgKmJsb2NrTWFwKG1hcCkge1xuICAgICAgICBjb25zdCBpdCA9IG1hcC5pdGVtc1ttYXAuaXRlbXMubGVuZ3RoIC0gMV07XG4gICAgICAgIC8vIGl0LnNlcCBpcyB0cnVlLWlzaCBpZiBwYWlyIGFscmVhZHkgaGFzIGtleSBvciA6IHNlcGFyYXRvclxuICAgICAgICBzd2l0Y2ggKHRoaXMudHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnbmV3bGluZSc6XG4gICAgICAgICAgICAgICAgdGhpcy5vbktleUxpbmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBpZiAoaXQudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZW5kID0gJ2VuZCcgaW4gaXQudmFsdWUgPyBpdC52YWx1ZS5lbmQgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhc3QgPSBBcnJheS5pc0FycmF5KGVuZCkgPyBlbmRbZW5kLmxlbmd0aCAtIDFdIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICBpZiAobGFzdD8udHlwZSA9PT0gJ2NvbW1lbnQnKVxuICAgICAgICAgICAgICAgICAgICAgICAgZW5kPy5wdXNoKHRoaXMuc291cmNlVG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXAuaXRlbXMucHVzaCh7IHN0YXJ0OiBbdGhpcy5zb3VyY2VUb2tlbl0gfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGl0LnNlcCkge1xuICAgICAgICAgICAgICAgICAgICBpdC5zZXAucHVzaCh0aGlzLnNvdXJjZVRva2VuKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGl0LnN0YXJ0LnB1c2godGhpcy5zb3VyY2VUb2tlbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIGNhc2UgJ3NwYWNlJzpcbiAgICAgICAgICAgIGNhc2UgJ2NvbW1lbnQnOlxuICAgICAgICAgICAgICAgIGlmIChpdC52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBtYXAuaXRlbXMucHVzaCh7IHN0YXJ0OiBbdGhpcy5zb3VyY2VUb2tlbl0gfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGl0LnNlcCkge1xuICAgICAgICAgICAgICAgICAgICBpdC5zZXAucHVzaCh0aGlzLnNvdXJjZVRva2VuKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmF0SW5kZW50ZWRDb21tZW50KGl0LnN0YXJ0LCBtYXAuaW5kZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJldiA9IG1hcC5pdGVtc1ttYXAuaXRlbXMubGVuZ3RoIC0gMl07XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlbmQgPSBwcmV2Py52YWx1ZT8uZW5kO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZW5kKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KGVuZCwgaXQuc3RhcnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZC5wdXNoKHRoaXMuc291cmNlVG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcC5pdGVtcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaXQuc3RhcnQucHVzaCh0aGlzLnNvdXJjZVRva2VuKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmluZGVudCA+PSBtYXAuaW5kZW50KSB7XG4gICAgICAgICAgICBjb25zdCBhdE1hcEluZGVudCA9ICF0aGlzLm9uS2V5TGluZSAmJiB0aGlzLmluZGVudCA9PT0gbWFwLmluZGVudDtcbiAgICAgICAgICAgIGNvbnN0IGF0TmV4dEl0ZW0gPSBhdE1hcEluZGVudCAmJlxuICAgICAgICAgICAgICAgIChpdC5zZXAgfHwgaXQuZXhwbGljaXRLZXkpICYmXG4gICAgICAgICAgICAgICAgdGhpcy50eXBlICE9PSAnc2VxLWl0ZW0taW5kJztcbiAgICAgICAgICAgIC8vIEZvciBlbXB0eSBub2RlcywgYXNzaWduIG5ld2xpbmUtc2VwYXJhdGVkIG5vdCBpbmRlbnRlZCBlbXB0eSB0b2tlbnMgdG8gZm9sbG93aW5nIG5vZGVcbiAgICAgICAgICAgIGxldCBzdGFydCA9IFtdO1xuICAgICAgICAgICAgaWYgKGF0TmV4dEl0ZW0gJiYgaXQuc2VwICYmICFpdC52YWx1ZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5sID0gW107XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdC5zZXAubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3QgPSBpdC5zZXBbaV07XG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoc3QudHlwZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbmV3bGluZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmwucHVzaChpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NwYWNlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2NvbW1lbnQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdC5pbmRlbnQgPiBtYXAuaW5kZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBubC5sZW5ndGggPSAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBubC5sZW5ndGggPSAwO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChubC5sZW5ndGggPj0gMilcbiAgICAgICAgICAgICAgICAgICAgc3RhcnQgPSBpdC5zZXAuc3BsaWNlKG5sWzFdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN3aXRjaCAodGhpcy50eXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnYW5jaG9yJzpcbiAgICAgICAgICAgICAgICBjYXNlICd0YWcnOlxuICAgICAgICAgICAgICAgICAgICBpZiAoYXROZXh0SXRlbSB8fCBpdC52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQucHVzaCh0aGlzLnNvdXJjZVRva2VuKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcC5pdGVtcy5wdXNoKHsgc3RhcnQgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uS2V5TGluZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoaXQuc2VwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdC5zZXAucHVzaCh0aGlzLnNvdXJjZVRva2VuKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0LnN0YXJ0LnB1c2godGhpcy5zb3VyY2VUb2tlbik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2V4cGxpY2l0LWtleS1pbmQnOlxuICAgICAgICAgICAgICAgICAgICBpZiAoIWl0LnNlcCAmJiAhaXQuZXhwbGljaXRLZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0LnN0YXJ0LnB1c2godGhpcy5zb3VyY2VUb2tlbik7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdC5leHBsaWNpdEtleSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoYXROZXh0SXRlbSB8fCBpdC52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQucHVzaCh0aGlzLnNvdXJjZVRva2VuKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcC5pdGVtcy5wdXNoKHsgc3RhcnQsIGV4cGxpY2l0S2V5OiB0cnVlIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGFjay5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnYmxvY2stbWFwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IHRoaXMub2Zmc2V0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGVudDogdGhpcy5pbmRlbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXM6IFt7IHN0YXJ0OiBbdGhpcy5zb3VyY2VUb2tlbl0sIGV4cGxpY2l0S2V5OiB0cnVlIH1dXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uS2V5TGluZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICBjYXNlICdtYXAtdmFsdWUtaW5kJzpcbiAgICAgICAgICAgICAgICAgICAgaWYgKGl0LmV4cGxpY2l0S2V5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWl0LnNlcCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbmNsdWRlc1Rva2VuKGl0LnN0YXJ0LCAnbmV3bGluZScpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oaXQsIHsga2V5OiBudWxsLCBzZXA6IFt0aGlzLnNvdXJjZVRva2VuXSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0ID0gZ2V0Rmlyc3RLZXlTdGFydFByb3BzKGl0LnN0YXJ0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGFjay5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdibG9jay1tYXAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiB0aGlzLm9mZnNldCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGVudDogdGhpcy5pbmRlbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtczogW3sgc3RhcnQsIGtleTogbnVsbCwgc2VwOiBbdGhpcy5zb3VyY2VUb2tlbl0gfV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoaXQudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXAuaXRlbXMucHVzaCh7IHN0YXJ0OiBbXSwga2V5OiBudWxsLCBzZXA6IFt0aGlzLnNvdXJjZVRva2VuXSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGluY2x1ZGVzVG9rZW4oaXQuc2VwLCAnbWFwLXZhbHVlLWluZCcpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGFjay5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2Jsb2NrLW1hcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDogdGhpcy5vZmZzZXQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGVudDogdGhpcy5pbmRlbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zOiBbeyBzdGFydCwga2V5OiBudWxsLCBzZXA6IFt0aGlzLnNvdXJjZVRva2VuXSB9XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoaXNGbG93VG9rZW4oaXQua2V5KSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICFpbmNsdWRlc1Rva2VuKGl0LnNlcCwgJ25ld2xpbmUnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0ID0gZ2V0Rmlyc3RLZXlTdGFydFByb3BzKGl0LnN0YXJ0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBpdC5rZXk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VwID0gaXQuc2VwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcC5wdXNoKHRoaXMuc291cmNlVG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgdHlwZSBndWFyZCBpcyB3cm9uZyBoZXJlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGl0LmtleTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIHR5cGUgZ3VhcmQgaXMgd3JvbmcgaGVyZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBpdC5zZXA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGFjay5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2Jsb2NrLW1hcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDogdGhpcy5vZmZzZXQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGVudDogdGhpcy5pbmRlbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zOiBbeyBzdGFydCwga2V5LCBzZXAgfV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHN0YXJ0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOb3QgYWN0dWFsbHkgYXQgbmV4dCBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuc2VwID0gaXQuc2VwLmNvbmNhdChzdGFydCwgdGhpcy5zb3VyY2VUb2tlbik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5zZXAucHVzaCh0aGlzLnNvdXJjZVRva2VuKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXQuc2VwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihpdCwgeyBrZXk6IG51bGwsIHNlcDogW3RoaXMuc291cmNlVG9rZW5dIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoaXQudmFsdWUgfHwgYXROZXh0SXRlbSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcC5pdGVtcy5wdXNoKHsgc3RhcnQsIGtleTogbnVsbCwgc2VwOiBbdGhpcy5zb3VyY2VUb2tlbl0gfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChpbmNsdWRlc1Rva2VuKGl0LnNlcCwgJ21hcC12YWx1ZS1pbmQnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhY2sucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdibG9jay1tYXAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IHRoaXMub2Zmc2V0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRlbnQ6IHRoaXMuaW5kZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtczogW3sgc3RhcnQ6IFtdLCBrZXk6IG51bGwsIHNlcDogW3RoaXMuc291cmNlVG9rZW5dIH1dXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5zZXAucHVzaCh0aGlzLnNvdXJjZVRva2VuKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uS2V5TGluZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICBjYXNlICdhbGlhcyc6XG4gICAgICAgICAgICAgICAgY2FzZSAnc2NhbGFyJzpcbiAgICAgICAgICAgICAgICBjYXNlICdzaW5nbGUtcXVvdGVkLXNjYWxhcic6XG4gICAgICAgICAgICAgICAgY2FzZSAnZG91YmxlLXF1b3RlZC1zY2FsYXInOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZzID0gdGhpcy5mbG93U2NhbGFyKHRoaXMudHlwZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChhdE5leHRJdGVtIHx8IGl0LnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXAuaXRlbXMucHVzaCh7IHN0YXJ0LCBrZXk6IGZzLCBzZXA6IFtdIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vbktleUxpbmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGl0LnNlcCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGFjay5wdXNoKGZzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oaXQsIHsga2V5OiBmcywgc2VwOiBbXSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25LZXlMaW5lID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYnYgPSB0aGlzLnN0YXJ0QmxvY2tWYWx1ZShtYXApO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYnYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhdE1hcEluZGVudCAmJiBidi50eXBlICE9PSAnYmxvY2stc2VxJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcC5pdGVtcy5wdXNoKHsgc3RhcnQgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YWNrLnB1c2goYnYpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHlpZWxkKiB0aGlzLnBvcCgpO1xuICAgICAgICB5aWVsZCogdGhpcy5zdGVwKCk7XG4gICAgfVxuICAgICpibG9ja1NlcXVlbmNlKHNlcSkge1xuICAgICAgICBjb25zdCBpdCA9IHNlcS5pdGVtc1tzZXEuaXRlbXMubGVuZ3RoIC0gMV07XG4gICAgICAgIHN3aXRjaCAodGhpcy50eXBlKSB7XG4gICAgICAgICAgICBjYXNlICduZXdsaW5lJzpcbiAgICAgICAgICAgICAgICBpZiAoaXQudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZW5kID0gJ2VuZCcgaW4gaXQudmFsdWUgPyBpdC52YWx1ZS5lbmQgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhc3QgPSBBcnJheS5pc0FycmF5KGVuZCkgPyBlbmRbZW5kLmxlbmd0aCAtIDFdIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICBpZiAobGFzdD8udHlwZSA9PT0gJ2NvbW1lbnQnKVxuICAgICAgICAgICAgICAgICAgICAgICAgZW5kPy5wdXNoKHRoaXMuc291cmNlVG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXEuaXRlbXMucHVzaCh7IHN0YXJ0OiBbdGhpcy5zb3VyY2VUb2tlbl0gfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgaXQuc3RhcnQucHVzaCh0aGlzLnNvdXJjZVRva2VuKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICBjYXNlICdzcGFjZSc6XG4gICAgICAgICAgICBjYXNlICdjb21tZW50JzpcbiAgICAgICAgICAgICAgICBpZiAoaXQudmFsdWUpXG4gICAgICAgICAgICAgICAgICAgIHNlcS5pdGVtcy5wdXNoKHsgc3RhcnQ6IFt0aGlzLnNvdXJjZVRva2VuXSB9KTtcbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuYXRJbmRlbnRlZENvbW1lbnQoaXQuc3RhcnQsIHNlcS5pbmRlbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmV2ID0gc2VxLml0ZW1zW3NlcS5pdGVtcy5sZW5ndGggLSAyXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVuZCA9IHByZXY/LnZhbHVlPy5lbmQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShlbmQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkoZW5kLCBpdC5zdGFydCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kLnB1c2godGhpcy5zb3VyY2VUb2tlbik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VxLml0ZW1zLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpdC5zdGFydC5wdXNoKHRoaXMuc291cmNlVG9rZW4pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICBjYXNlICdhbmNob3InOlxuICAgICAgICAgICAgY2FzZSAndGFnJzpcbiAgICAgICAgICAgICAgICBpZiAoaXQudmFsdWUgfHwgdGhpcy5pbmRlbnQgPD0gc2VxLmluZGVudClcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgaXQuc3RhcnQucHVzaCh0aGlzLnNvdXJjZVRva2VuKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICBjYXNlICdzZXEtaXRlbS1pbmQnOlxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmluZGVudCAhPT0gc2VxLmluZGVudClcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgaWYgKGl0LnZhbHVlIHx8IGluY2x1ZGVzVG9rZW4oaXQuc3RhcnQsICdzZXEtaXRlbS1pbmQnKSlcbiAgICAgICAgICAgICAgICAgICAgc2VxLml0ZW1zLnB1c2goeyBzdGFydDogW3RoaXMuc291cmNlVG9rZW5dIH0pO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgaXQuc3RhcnQucHVzaCh0aGlzLnNvdXJjZVRva2VuKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaW5kZW50ID4gc2VxLmluZGVudCkge1xuICAgICAgICAgICAgY29uc3QgYnYgPSB0aGlzLnN0YXJ0QmxvY2tWYWx1ZShzZXEpO1xuICAgICAgICAgICAgaWYgKGJ2KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGFjay5wdXNoKGJ2KTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgeWllbGQqIHRoaXMucG9wKCk7XG4gICAgICAgIHlpZWxkKiB0aGlzLnN0ZXAoKTtcbiAgICB9XG4gICAgKmZsb3dDb2xsZWN0aW9uKGZjKSB7XG4gICAgICAgIGNvbnN0IGl0ID0gZmMuaXRlbXNbZmMuaXRlbXMubGVuZ3RoIC0gMV07XG4gICAgICAgIGlmICh0aGlzLnR5cGUgPT09ICdmbG93LWVycm9yLWVuZCcpIHtcbiAgICAgICAgICAgIGxldCB0b3A7XG4gICAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAgICAgeWllbGQqIHRoaXMucG9wKCk7XG4gICAgICAgICAgICAgICAgdG9wID0gdGhpcy5wZWVrKDEpO1xuICAgICAgICAgICAgfSB3aGlsZSAodG9wICYmIHRvcC50eXBlID09PSAnZmxvdy1jb2xsZWN0aW9uJyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZmMuZW5kLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgc3dpdGNoICh0aGlzLnR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdjb21tYSc6XG4gICAgICAgICAgICAgICAgY2FzZSAnZXhwbGljaXQta2V5LWluZCc6XG4gICAgICAgICAgICAgICAgICAgIGlmICghaXQgfHwgaXQuc2VwKVxuICAgICAgICAgICAgICAgICAgICAgICAgZmMuaXRlbXMucHVzaCh7IHN0YXJ0OiBbdGhpcy5zb3VyY2VUb2tlbl0gfSk7XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0LnN0YXJ0LnB1c2godGhpcy5zb3VyY2VUb2tlbik7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICBjYXNlICdtYXAtdmFsdWUtaW5kJzpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpdCB8fCBpdC52YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIGZjLml0ZW1zLnB1c2goeyBzdGFydDogW10sIGtleTogbnVsbCwgc2VwOiBbdGhpcy5zb3VyY2VUb2tlbl0gfSk7XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGl0LnNlcClcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0LnNlcC5wdXNoKHRoaXMuc291cmNlVG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKGl0LCB7IGtleTogbnVsbCwgc2VwOiBbdGhpcy5zb3VyY2VUb2tlbl0gfSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICBjYXNlICdzcGFjZSc6XG4gICAgICAgICAgICAgICAgY2FzZSAnY29tbWVudCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnbmV3bGluZSc6XG4gICAgICAgICAgICAgICAgY2FzZSAnYW5jaG9yJzpcbiAgICAgICAgICAgICAgICBjYXNlICd0YWcnOlxuICAgICAgICAgICAgICAgICAgICBpZiAoIWl0IHx8IGl0LnZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgZmMuaXRlbXMucHVzaCh7IHN0YXJ0OiBbdGhpcy5zb3VyY2VUb2tlbl0gfSk7XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGl0LnNlcClcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0LnNlcC5wdXNoKHRoaXMuc291cmNlVG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICBpdC5zdGFydC5wdXNoKHRoaXMuc291cmNlVG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgY2FzZSAnYWxpYXMnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ3NjYWxhcic6XG4gICAgICAgICAgICAgICAgY2FzZSAnc2luZ2xlLXF1b3RlZC1zY2FsYXInOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2RvdWJsZS1xdW90ZWQtc2NhbGFyJzoge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmcyA9IHRoaXMuZmxvd1NjYWxhcih0aGlzLnR5cGUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWl0IHx8IGl0LnZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgZmMuaXRlbXMucHVzaCh7IHN0YXJ0OiBbXSwga2V5OiBmcywgc2VwOiBbXSB9KTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoaXQuc2VwKVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGFjay5wdXNoKGZzKTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihpdCwgeyBrZXk6IGZzLCBzZXA6IFtdIH0pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgJ2Zsb3ctbWFwLWVuZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnZmxvdy1zZXEtZW5kJzpcbiAgICAgICAgICAgICAgICAgICAgZmMuZW5kLnB1c2godGhpcy5zb3VyY2VUb2tlbik7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGJ2ID0gdGhpcy5zdGFydEJsb2NrVmFsdWUoZmMpO1xuICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2Ugc2hvdWxkIG5vdCBoYXBwZW4gKi9cbiAgICAgICAgICAgIGlmIChidilcbiAgICAgICAgICAgICAgICB0aGlzLnN0YWNrLnB1c2goYnYpO1xuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgeWllbGQqIHRoaXMucG9wKCk7XG4gICAgICAgICAgICAgICAgeWllbGQqIHRoaXMuc3RlcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gdGhpcy5wZWVrKDIpO1xuICAgICAgICAgICAgaWYgKHBhcmVudC50eXBlID09PSAnYmxvY2stbWFwJyAmJlxuICAgICAgICAgICAgICAgICgodGhpcy50eXBlID09PSAnbWFwLXZhbHVlLWluZCcgJiYgcGFyZW50LmluZGVudCA9PT0gZmMuaW5kZW50KSB8fFxuICAgICAgICAgICAgICAgICAgICAodGhpcy50eXBlID09PSAnbmV3bGluZScgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICFwYXJlbnQuaXRlbXNbcGFyZW50Lml0ZW1zLmxlbmd0aCAtIDFdLnNlcCkpKSB7XG4gICAgICAgICAgICAgICAgeWllbGQqIHRoaXMucG9wKCk7XG4gICAgICAgICAgICAgICAgeWllbGQqIHRoaXMuc3RlcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodGhpcy50eXBlID09PSAnbWFwLXZhbHVlLWluZCcgJiZcbiAgICAgICAgICAgICAgICBwYXJlbnQudHlwZSAhPT0gJ2Zsb3ctY29sbGVjdGlvbicpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwcmV2ID0gZ2V0UHJldlByb3BzKHBhcmVudCk7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3RhcnQgPSBnZXRGaXJzdEtleVN0YXJ0UHJvcHMocHJldik7XG4gICAgICAgICAgICAgICAgZml4Rmxvd1NlcUl0ZW1zKGZjKTtcbiAgICAgICAgICAgICAgICBjb25zdCBzZXAgPSBmYy5lbmQuc3BsaWNlKDEsIGZjLmVuZC5sZW5ndGgpO1xuICAgICAgICAgICAgICAgIHNlcC5wdXNoKHRoaXMuc291cmNlVG9rZW4pO1xuICAgICAgICAgICAgICAgIGNvbnN0IG1hcCA9IHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2Jsb2NrLW1hcCcsXG4gICAgICAgICAgICAgICAgICAgIG9mZnNldDogZmMub2Zmc2V0LFxuICAgICAgICAgICAgICAgICAgICBpbmRlbnQ6IGZjLmluZGVudCxcbiAgICAgICAgICAgICAgICAgICAgaXRlbXM6IFt7IHN0YXJ0LCBrZXk6IGZjLCBzZXAgfV1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHRoaXMub25LZXlMaW5lID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoIC0gMV0gPSBtYXA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB5aWVsZCogdGhpcy5saW5lRW5kKGZjKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBmbG93U2NhbGFyKHR5cGUpIHtcbiAgICAgICAgaWYgKHRoaXMub25OZXdMaW5lKSB7XG4gICAgICAgICAgICBsZXQgbmwgPSB0aGlzLnNvdXJjZS5pbmRleE9mKCdcXG4nKSArIDE7XG4gICAgICAgICAgICB3aGlsZSAobmwgIT09IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uTmV3TGluZSh0aGlzLm9mZnNldCArIG5sKTtcbiAgICAgICAgICAgICAgICBubCA9IHRoaXMuc291cmNlLmluZGV4T2YoJ1xcbicsIG5sKSArIDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgICBvZmZzZXQ6IHRoaXMub2Zmc2V0LFxuICAgICAgICAgICAgaW5kZW50OiB0aGlzLmluZGVudCxcbiAgICAgICAgICAgIHNvdXJjZTogdGhpcy5zb3VyY2VcbiAgICAgICAgfTtcbiAgICB9XG4gICAgc3RhcnRCbG9ja1ZhbHVlKHBhcmVudCkge1xuICAgICAgICBzd2l0Y2ggKHRoaXMudHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnYWxpYXMnOlxuICAgICAgICAgICAgY2FzZSAnc2NhbGFyJzpcbiAgICAgICAgICAgIGNhc2UgJ3NpbmdsZS1xdW90ZWQtc2NhbGFyJzpcbiAgICAgICAgICAgIGNhc2UgJ2RvdWJsZS1xdW90ZWQtc2NhbGFyJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5mbG93U2NhbGFyKHRoaXMudHlwZSk7XG4gICAgICAgICAgICBjYXNlICdibG9jay1zY2FsYXItaGVhZGVyJzpcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnYmxvY2stc2NhbGFyJyxcbiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiB0aGlzLm9mZnNldCxcbiAgICAgICAgICAgICAgICAgICAgaW5kZW50OiB0aGlzLmluZGVudCxcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM6IFt0aGlzLnNvdXJjZVRva2VuXSxcbiAgICAgICAgICAgICAgICAgICAgc291cmNlOiAnJ1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjYXNlICdmbG93LW1hcC1zdGFydCc6XG4gICAgICAgICAgICBjYXNlICdmbG93LXNlcS1zdGFydCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2Zsb3ctY29sbGVjdGlvbicsXG4gICAgICAgICAgICAgICAgICAgIG9mZnNldDogdGhpcy5vZmZzZXQsXG4gICAgICAgICAgICAgICAgICAgIGluZGVudDogdGhpcy5pbmRlbnQsXG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0OiB0aGlzLnNvdXJjZVRva2VuLFxuICAgICAgICAgICAgICAgICAgICBpdGVtczogW10sXG4gICAgICAgICAgICAgICAgICAgIGVuZDogW11cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgY2FzZSAnc2VxLWl0ZW0taW5kJzpcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnYmxvY2stc2VxJyxcbiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiB0aGlzLm9mZnNldCxcbiAgICAgICAgICAgICAgICAgICAgaW5kZW50OiB0aGlzLmluZGVudCxcbiAgICAgICAgICAgICAgICAgICAgaXRlbXM6IFt7IHN0YXJ0OiBbdGhpcy5zb3VyY2VUb2tlbl0gfV1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgY2FzZSAnZXhwbGljaXQta2V5LWluZCc6IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uS2V5TGluZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJldiA9IGdldFByZXZQcm9wcyhwYXJlbnQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0ID0gZ2V0Rmlyc3RLZXlTdGFydFByb3BzKHByZXYpO1xuICAgICAgICAgICAgICAgIHN0YXJ0LnB1c2godGhpcy5zb3VyY2VUb2tlbik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2Jsb2NrLW1hcCcsXG4gICAgICAgICAgICAgICAgICAgIG9mZnNldDogdGhpcy5vZmZzZXQsXG4gICAgICAgICAgICAgICAgICAgIGluZGVudDogdGhpcy5pbmRlbnQsXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zOiBbeyBzdGFydCwgZXhwbGljaXRLZXk6IHRydWUgfV1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnbWFwLXZhbHVlLWluZCc6IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uS2V5TGluZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJldiA9IGdldFByZXZQcm9wcyhwYXJlbnQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0ID0gZ2V0Rmlyc3RLZXlTdGFydFByb3BzKHByZXYpO1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdibG9jay1tYXAnLFxuICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IHRoaXMub2Zmc2V0LFxuICAgICAgICAgICAgICAgICAgICBpbmRlbnQ6IHRoaXMuaW5kZW50LFxuICAgICAgICAgICAgICAgICAgICBpdGVtczogW3sgc3RhcnQsIGtleTogbnVsbCwgc2VwOiBbdGhpcy5zb3VyY2VUb2tlbl0gfV1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBhdEluZGVudGVkQ29tbWVudChzdGFydCwgaW5kZW50KSB7XG4gICAgICAgIGlmICh0aGlzLnR5cGUgIT09ICdjb21tZW50JylcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgaWYgKHRoaXMuaW5kZW50IDw9IGluZGVudClcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgcmV0dXJuIHN0YXJ0LmV2ZXJ5KHN0ID0+IHN0LnR5cGUgPT09ICduZXdsaW5lJyB8fCBzdC50eXBlID09PSAnc3BhY2UnKTtcbiAgICB9XG4gICAgKmRvY3VtZW50RW5kKGRvY0VuZCkge1xuICAgICAgICBpZiAodGhpcy50eXBlICE9PSAnZG9jLW1vZGUnKSB7XG4gICAgICAgICAgICBpZiAoZG9jRW5kLmVuZClcbiAgICAgICAgICAgICAgICBkb2NFbmQuZW5kLnB1c2godGhpcy5zb3VyY2VUb2tlbik7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZG9jRW5kLmVuZCA9IFt0aGlzLnNvdXJjZVRva2VuXTtcbiAgICAgICAgICAgIGlmICh0aGlzLnR5cGUgPT09ICduZXdsaW5lJylcbiAgICAgICAgICAgICAgICB5aWVsZCogdGhpcy5wb3AoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAqbGluZUVuZCh0b2tlbikge1xuICAgICAgICBzd2l0Y2ggKHRoaXMudHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnY29tbWEnOlxuICAgICAgICAgICAgY2FzZSAnZG9jLXN0YXJ0JzpcbiAgICAgICAgICAgIGNhc2UgJ2RvYy1lbmQnOlxuICAgICAgICAgICAgY2FzZSAnZmxvdy1zZXEtZW5kJzpcbiAgICAgICAgICAgIGNhc2UgJ2Zsb3ctbWFwLWVuZCc6XG4gICAgICAgICAgICBjYXNlICdtYXAtdmFsdWUtaW5kJzpcbiAgICAgICAgICAgICAgICB5aWVsZCogdGhpcy5wb3AoKTtcbiAgICAgICAgICAgICAgICB5aWVsZCogdGhpcy5zdGVwKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICduZXdsaW5lJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uS2V5TGluZSA9IGZhbHNlO1xuICAgICAgICAgICAgLy8gZmFsbHRocm91Z2hcbiAgICAgICAgICAgIGNhc2UgJ3NwYWNlJzpcbiAgICAgICAgICAgIGNhc2UgJ2NvbW1lbnQnOlxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAvLyBhbGwgb3RoZXIgdmFsdWVzIGFyZSBlcnJvcnNcbiAgICAgICAgICAgICAgICBpZiAodG9rZW4uZW5kKVxuICAgICAgICAgICAgICAgICAgICB0b2tlbi5lbmQucHVzaCh0aGlzLnNvdXJjZVRva2VuKTtcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIHRva2VuLmVuZCA9IFt0aGlzLnNvdXJjZVRva2VuXTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy50eXBlID09PSAnbmV3bGluZScpXG4gICAgICAgICAgICAgICAgICAgIHlpZWxkKiB0aGlzLnBvcCgpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgeyBQYXJzZXIgfTtcbiIsICJpbXBvcnQgeyBDb21wb3NlciB9IGZyb20gJy4vY29tcG9zZS9jb21wb3Nlci5qcyc7XG5pbXBvcnQgeyBEb2N1bWVudCB9IGZyb20gJy4vZG9jL0RvY3VtZW50LmpzJztcbmltcG9ydCB7IHByZXR0aWZ5RXJyb3IsIFlBTUxQYXJzZUVycm9yIH0gZnJvbSAnLi9lcnJvcnMuanMnO1xuaW1wb3J0IHsgd2FybiB9IGZyb20gJy4vbG9nLmpzJztcbmltcG9ydCB7IGlzRG9jdW1lbnQgfSBmcm9tICcuL25vZGVzL2lkZW50aXR5LmpzJztcbmltcG9ydCB7IExpbmVDb3VudGVyIH0gZnJvbSAnLi9wYXJzZS9saW5lLWNvdW50ZXIuanMnO1xuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSAnLi9wYXJzZS9wYXJzZXIuanMnO1xuXG5mdW5jdGlvbiBwYXJzZU9wdGlvbnMob3B0aW9ucykge1xuICAgIGNvbnN0IHByZXR0eUVycm9ycyA9IG9wdGlvbnMucHJldHR5RXJyb3JzICE9PSBmYWxzZTtcbiAgICBjb25zdCBsaW5lQ291bnRlciA9IG9wdGlvbnMubGluZUNvdW50ZXIgfHwgKHByZXR0eUVycm9ycyAmJiBuZXcgTGluZUNvdW50ZXIoKSkgfHwgbnVsbDtcbiAgICByZXR1cm4geyBsaW5lQ291bnRlciwgcHJldHR5RXJyb3JzIH07XG59XG4vKipcbiAqIFBhcnNlIHRoZSBpbnB1dCBhcyBhIHN0cmVhbSBvZiBZQU1MIGRvY3VtZW50cy5cbiAqXG4gKiBEb2N1bWVudHMgc2hvdWxkIGJlIHNlcGFyYXRlZCBmcm9tIGVhY2ggb3RoZXIgYnkgYC4uLmAgb3IgYC0tLWAgbWFya2VyIGxpbmVzLlxuICpcbiAqIEByZXR1cm5zIElmIGFuIGVtcHR5IGBkb2NzYCBhcnJheSBpcyByZXR1cm5lZCwgaXQgd2lsbCBiZSBvZiB0eXBlXG4gKiAgIEVtcHR5U3RyZWFtIGFuZCBjb250YWluIGFkZGl0aW9uYWwgc3RyZWFtIGluZm9ybWF0aW9uLiBJblxuICogICBUeXBlU2NyaXB0LCB5b3Ugc2hvdWxkIHVzZSBgJ2VtcHR5JyBpbiBkb2NzYCBhcyBhIHR5cGUgZ3VhcmQgZm9yIGl0LlxuICovXG5mdW5jdGlvbiBwYXJzZUFsbERvY3VtZW50cyhzb3VyY2UsIG9wdGlvbnMgPSB7fSkge1xuICAgIGNvbnN0IHsgbGluZUNvdW50ZXIsIHByZXR0eUVycm9ycyB9ID0gcGFyc2VPcHRpb25zKG9wdGlvbnMpO1xuICAgIGNvbnN0IHBhcnNlciA9IG5ldyBQYXJzZXIobGluZUNvdW50ZXI/LmFkZE5ld0xpbmUpO1xuICAgIGNvbnN0IGNvbXBvc2VyID0gbmV3IENvbXBvc2VyKG9wdGlvbnMpO1xuICAgIGNvbnN0IGRvY3MgPSBBcnJheS5mcm9tKGNvbXBvc2VyLmNvbXBvc2UocGFyc2VyLnBhcnNlKHNvdXJjZSkpKTtcbiAgICBpZiAocHJldHR5RXJyb3JzICYmIGxpbmVDb3VudGVyKVxuICAgICAgICBmb3IgKGNvbnN0IGRvYyBvZiBkb2NzKSB7XG4gICAgICAgICAgICBkb2MuZXJyb3JzLmZvckVhY2gocHJldHRpZnlFcnJvcihzb3VyY2UsIGxpbmVDb3VudGVyKSk7XG4gICAgICAgICAgICBkb2Mud2FybmluZ3MuZm9yRWFjaChwcmV0dGlmeUVycm9yKHNvdXJjZSwgbGluZUNvdW50ZXIpKTtcbiAgICAgICAgfVxuICAgIGlmIChkb2NzLmxlbmd0aCA+IDApXG4gICAgICAgIHJldHVybiBkb2NzO1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKFtdLCB7IGVtcHR5OiB0cnVlIH0sIGNvbXBvc2VyLnN0cmVhbUluZm8oKSk7XG59XG4vKiogUGFyc2UgYW4gaW5wdXQgc3RyaW5nIGludG8gYSBzaW5nbGUgWUFNTC5Eb2N1bWVudCAqL1xuZnVuY3Rpb24gcGFyc2VEb2N1bWVudChzb3VyY2UsIG9wdGlvbnMgPSB7fSkge1xuICAgIGNvbnN0IHsgbGluZUNvdW50ZXIsIHByZXR0eUVycm9ycyB9ID0gcGFyc2VPcHRpb25zKG9wdGlvbnMpO1xuICAgIGNvbnN0IHBhcnNlciA9IG5ldyBQYXJzZXIobGluZUNvdW50ZXI/LmFkZE5ld0xpbmUpO1xuICAgIGNvbnN0IGNvbXBvc2VyID0gbmV3IENvbXBvc2VyKG9wdGlvbnMpO1xuICAgIC8vIGBkb2NgIGlzIGFsd2F5cyBzZXQgYnkgY29tcG9zZS5lbmQodHJ1ZSkgYXQgdGhlIHZlcnkgbGF0ZXN0XG4gICAgbGV0IGRvYyA9IG51bGw7XG4gICAgZm9yIChjb25zdCBfZG9jIG9mIGNvbXBvc2VyLmNvbXBvc2UocGFyc2VyLnBhcnNlKHNvdXJjZSksIHRydWUsIHNvdXJjZS5sZW5ndGgpKSB7XG4gICAgICAgIGlmICghZG9jKVxuICAgICAgICAgICAgZG9jID0gX2RvYztcbiAgICAgICAgZWxzZSBpZiAoZG9jLm9wdGlvbnMubG9nTGV2ZWwgIT09ICdzaWxlbnQnKSB7XG4gICAgICAgICAgICBkb2MuZXJyb3JzLnB1c2gobmV3IFlBTUxQYXJzZUVycm9yKF9kb2MucmFuZ2Uuc2xpY2UoMCwgMiksICdNVUxUSVBMRV9ET0NTJywgJ1NvdXJjZSBjb250YWlucyBtdWx0aXBsZSBkb2N1bWVudHM7IHBsZWFzZSB1c2UgWUFNTC5wYXJzZUFsbERvY3VtZW50cygpJykpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHByZXR0eUVycm9ycyAmJiBsaW5lQ291bnRlcikge1xuICAgICAgICBkb2MuZXJyb3JzLmZvckVhY2gocHJldHRpZnlFcnJvcihzb3VyY2UsIGxpbmVDb3VudGVyKSk7XG4gICAgICAgIGRvYy53YXJuaW5ncy5mb3JFYWNoKHByZXR0aWZ5RXJyb3Ioc291cmNlLCBsaW5lQ291bnRlcikpO1xuICAgIH1cbiAgICByZXR1cm4gZG9jO1xufVxuZnVuY3Rpb24gcGFyc2Uoc3JjLCByZXZpdmVyLCBvcHRpb25zKSB7XG4gICAgbGV0IF9yZXZpdmVyID0gdW5kZWZpbmVkO1xuICAgIGlmICh0eXBlb2YgcmV2aXZlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBfcmV2aXZlciA9IHJldml2ZXI7XG4gICAgfVxuICAgIGVsc2UgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCAmJiByZXZpdmVyICYmIHR5cGVvZiByZXZpdmVyID09PSAnb2JqZWN0Jykge1xuICAgICAgICBvcHRpb25zID0gcmV2aXZlcjtcbiAgICB9XG4gICAgY29uc3QgZG9jID0gcGFyc2VEb2N1bWVudChzcmMsIG9wdGlvbnMpO1xuICAgIGlmICghZG9jKVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICBkb2Mud2FybmluZ3MuZm9yRWFjaCh3YXJuaW5nID0+IHdhcm4oZG9jLm9wdGlvbnMubG9nTGV2ZWwsIHdhcm5pbmcpKTtcbiAgICBpZiAoZG9jLmVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGlmIChkb2Mub3B0aW9ucy5sb2dMZXZlbCAhPT0gJ3NpbGVudCcpXG4gICAgICAgICAgICB0aHJvdyBkb2MuZXJyb3JzWzBdO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICBkb2MuZXJyb3JzID0gW107XG4gICAgfVxuICAgIHJldHVybiBkb2MudG9KUyhPYmplY3QuYXNzaWduKHsgcmV2aXZlcjogX3Jldml2ZXIgfSwgb3B0aW9ucykpO1xufVxuZnVuY3Rpb24gc3RyaW5naWZ5KHZhbHVlLCByZXBsYWNlciwgb3B0aW9ucykge1xuICAgIGxldCBfcmVwbGFjZXIgPSBudWxsO1xuICAgIGlmICh0eXBlb2YgcmVwbGFjZXIgPT09ICdmdW5jdGlvbicgfHwgQXJyYXkuaXNBcnJheShyZXBsYWNlcikpIHtcbiAgICAgICAgX3JlcGxhY2VyID0gcmVwbGFjZXI7XG4gICAgfVxuICAgIGVsc2UgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCAmJiByZXBsYWNlcikge1xuICAgICAgICBvcHRpb25zID0gcmVwbGFjZXI7XG4gICAgfVxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ3N0cmluZycpXG4gICAgICAgIG9wdGlvbnMgPSBvcHRpb25zLmxlbmd0aDtcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMgPT09ICdudW1iZXInKSB7XG4gICAgICAgIGNvbnN0IGluZGVudCA9IE1hdGgucm91bmQob3B0aW9ucyk7XG4gICAgICAgIG9wdGlvbnMgPSBpbmRlbnQgPCAxID8gdW5kZWZpbmVkIDogaW5kZW50ID4gOCA/IHsgaW5kZW50OiA4IH0gOiB7IGluZGVudCB9O1xuICAgIH1cbiAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCB7IGtlZXBVbmRlZmluZWQgfSA9IG9wdGlvbnMgPz8gcmVwbGFjZXIgPz8ge307XG4gICAgICAgIGlmICgha2VlcFVuZGVmaW5lZClcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGlmIChpc0RvY3VtZW50KHZhbHVlKSAmJiAhX3JlcGxhY2VyKVxuICAgICAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcob3B0aW9ucyk7XG4gICAgcmV0dXJuIG5ldyBEb2N1bWVudCh2YWx1ZSwgX3JlcGxhY2VyLCBvcHRpb25zKS50b1N0cmluZyhvcHRpb25zKTtcbn1cblxuZXhwb3J0IHsgcGFyc2UsIHBhcnNlQWxsRG9jdW1lbnRzLCBwYXJzZURvY3VtZW50LCBzdHJpbmdpZnkgfTtcbiIsICJpbXBvcnQgeyBKc29uTGluaywgTGluayB9IGZyb20gXCJleHByZXNzaW9uL2xpbmtcIjtcbmltcG9ydCB7IGdldEV4dGVuc2lvbiwgZ2V0RmlsZVRpdGxlIH0gZnJvbSBcInV0aWxzL25vcm1hbGl6ZXJzXCI7XG5pbXBvcnQgeyBDYWNoZWRNZXRhZGF0YSwgRmlsZVN0YXRzLCBGcm9udE1hdHRlckNhY2hlIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5pbXBvcnQgeyBwYXJzZSBhcyBwYXJzZVlhbWwgfSBmcm9tIFwieWFtbFwiO1xuaW1wb3J0IHtkZWZhdWx0IGFzIEJUcmVlfSBmcm9tIFwic29ydGVkLWJ0cmVlXCI7XG5pbXBvcnQge1xuICAgIElubGluZUZpZWxkLFxuICAgIEpzb25JbmxpbmVGaWVsZCxcbiAgICBhc0lubGluZUZpZWxkLFxuICAgIGV4dHJhY3RGdWxsTGluZUZpZWxkLFxuICAgIGV4dHJhY3RJbmxpbmVGaWVsZHMsXG4gICAganNvbklubGluZUZpZWxkLFxufSBmcm9tIFwiLi9pbmxpbmUtZmllbGRcIjtcbmltcG9ydCB7XG4gICAgSnNvbk1hcmtkb3duQmxvY2ssXG4gICAgSnNvbk1hcmtkb3duTGlzdEJsb2NrLFxuICAgIEpzb25NYXJrZG93bkxpc3RJdGVtLFxuICAgIEpzb25NYXJrZG93blBhZ2UsXG4gICAgSnNvbk1hcmtkb3duU2VjdGlvbixcbiAgICBKc29uTWFya2Rvd25UYXNrSXRlbSxcbiAgICBKc29uTWFya2Rvd25EYXRhYmxvY2ssXG4gICAgSnNvbk1hcmtkb3duQ29kZWJsb2NrLFxuICAgIEpzb25Gcm9udG1hdHRlckVudHJ5LFxufSBmcm9tIFwiaW5kZXgvdHlwZXMvanNvbi9tYXJrZG93blwiO1xuaW1wb3J0IHsgSnNvbkNvbnZlcnNpb24gfSBmcm9tIFwiaW5kZXgvdHlwZXMvanNvbi9jb21tb25cIjtcbmltcG9ydCB7IFlhbWxDb252ZXJzaW9uIH0gZnJvbSBcImluZGV4L3R5cGVzL3lhbWxcIjtcbmltcG9ydCB7IG1hcE9iamVjdFZhbHVlcyB9IGZyb20gXCJ1dGlscy9kYXRhXCI7XG5cbi8qKiBNYXRjaGVzIHlhbWwgZGF0YWJsb2Nrcywgd2hpY2ggc2hvdyB1cCBhcyBpbmRlcGVuZGVudCBvYmplY3RzIGluIHRoZSBkYXRhY29yZSBpbmRleC4gKi9cbmNvbnN0IFlBTUxfREFUQV9SRUdFWCA9IC9gYGB5YW1sOmRhdGEvaTtcbi8qKiBNYXRjaGVzIHRoZSBzdGFydCBvZiBhbnkgY29kZWJsb2NrIGZlbmNlLiAqL1xuY29uc3QgQ09ERUJMT0NLX0ZFTkNFX1JFR0VYID0gL14oPzpgYGB8fn5+KSguKikkL2ltO1xuLyoqIE1hdGNoZXMgbGlzdCBpdGVtcyAoaW5jbHVkaW5nIGluc2lkZSB0ZXh0IGJsb2NrcykuICovXG5jb25zdCBMSVNUX0lURU1fUkVHRVggPSAvXltcXHM+XSooXFxkK1xcLnxcXGQrXFwpfFxcKnwtfFxcKylcXHMqKFxcWy57MCwxfVxcXSk/XFxzKiguKikkL211O1xuXG4vKipcbiAqIEdpdmVuIHRoZSByYXcgc291cmNlIGFuZCBPYnNpZGlhbiBtZXRhZGF0YSBmb3IgYSBnaXZlbiBtYXJrZG93biBmaWxlLFxuICogcmV0dXJuIGZ1bGwgbWFya2Rvd24gZmlsZSBtZXRhZGF0YS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hcmtkb3duSW1wb3J0KFxuICAgIHBhdGg6IHN0cmluZyxcbiAgICBtYXJrZG93bjogc3RyaW5nLFxuICAgIG1ldGFkYXRhOiBDYWNoZWRNZXRhZGF0YSxcbiAgICBzdGF0czogRmlsZVN0YXRzXG4pOiBKc29uTWFya2Rvd25QYWdlIHtcbiAgICBjb25zdCB7IGxpbmVzLCBtZXRhZGF0YTogcGFnZU1ldGFkYXRhLCBmcm9udG1hdHRlciwgc2VjdGlvbnMgfSA9IG1hcmtkb3duU291cmNlSW1wb3J0KHBhdGgsIG1hcmtkb3duLCBtZXRhZGF0YSk7XG4gICAgY29uc3QgcGFnZSA9IG5ldyBQYWdlRGF0YShwYXRoLCBzdGF0cywgbGluZXMubGVuZ3RoLCBwYWdlTWV0YWRhdGEsIHNlY3Rpb25zLCBmcm9udG1hdHRlcik7XG5cbiAgICByZXR1cm4gcGFnZS5idWlsZCgpO1xufVxuXG4vKiogSW1wb3J0IG1hcmtkb3duIGZpbGUgbWV0YWRhdGEsIHByb2R1Y2luZyBhbGwgcmVsZXZhbnQgbWFya2Rvd24gZGF0YS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXJrZG93blNvdXJjZUltcG9ydChcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAgbWFya2Rvd246IHN0cmluZyxcbiAgICBtZXRhZGF0YTogQ2FjaGVkTWV0YWRhdGFcbik6IHtcbiAgICBsaW5lczogc3RyaW5nW107XG4gICAgbWV0YWRhdGE6IE1ldGFkYXRhO1xuICAgIGZyb250bWF0dGVyPzogUmVjb3JkPHN0cmluZywgSnNvbkZyb250bWF0dGVyRW50cnk+O1xuICAgIHNlY3Rpb25zOiBTZWN0aW9uRGF0YVtdO1xufSB7XG4gICAgY29uc3QgZnJvbnRtYXR0ZXI6IFJlY29yZDxzdHJpbmcsIEpzb25Gcm9udG1hdHRlckVudHJ5PiB8IHVuZGVmaW5lZCA9IG1ldGFkYXRhLmZyb250bWF0dGVyXG4gICAgICAgID8gcGFyc2VGcm9udG1hdHRlckJsb2NrKG1ldGFkYXRhLmZyb250bWF0dGVyKVxuICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBsaW5lcyA9IG1hcmtkb3duLnNwbGl0KC9cXHJcXG58XFxyfFxcbi8pO1xuICAgIGNvbnN0IG1hcmtkb3duTWV0YWRhdGEgPSBuZXcgTWV0YWRhdGEoKTtcbiAgICBjb25zdCBzZWN0aW9uQXJyYXk6IFNlY3Rpb25EYXRhW10gPSBbXTtcbiAgICAvLy8vLy8vLy8vLy8vL1xuICAgIC8vIFNlY3Rpb25zIC8vXG4gICAgLy8vLy8vLy8vLy8vLy9cblxuICAgIGNvbnN0IG1ldGFoZWFkaW5ncyA9IG1ldGFkYXRhLmhlYWRpbmdzID8/IFtdO1xuICAgIG1ldGFoZWFkaW5ncy5zb3J0KChhLCBiKSA9PiBhLnBvc2l0aW9uLnN0YXJ0LmxpbmUgLSBiLnBvc2l0aW9uLnN0YXJ0LmxpbmUpO1xuXG4gICAgY29uc3Qgc2VjdGlvbnMgPSBuZXcgQlRyZWU8bnVtYmVyLCBTZWN0aW9uRGF0YT4odW5kZWZpbmVkLCAoYSwgYikgPT4gYSAtIGIpO1xuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBtZXRhaGVhZGluZ3MubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgIGNvbnN0IGVudHJ5ID0gbWV0YWhlYWRpbmdzW2luZGV4XTtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBlbnRyeS5wb3NpdGlvbi5zdGFydC5saW5lO1xuICAgICAgICBjb25zdCBlbmQgPSBpbmRleCA9PSBtZXRhaGVhZGluZ3MubGVuZ3RoIC0gMSA/IGxpbmVzLmxlbmd0aCA6IG1ldGFoZWFkaW5nc1tpbmRleCArIDFdLnBvc2l0aW9uLnN0YXJ0LmxpbmU7XG5cbiAgICAgICAgY29uc3Qgc2VjdGlvbiA9IG5ldyBTZWN0aW9uRGF0YShzdGFydCwgZW5kLCBlbnRyeS5oZWFkaW5nLCBlbnRyeS5sZXZlbCwgaW5kZXggKyAxKTtcbiAgICAgICAgc2VjdGlvbnMuc2V0KHN0YXJ0LCBzZWN0aW9uKTtcbiAgICB9XG5cbiAgICAvLyBBZGQgYW4gaW1wbGljaXQgc2VjdGlvbiBmb3IgdGhlIFwiaGVhZGluZ1wiIHNlY3Rpb24gb2YgdGhlIHBhZ2UgaWYgdGhlcmUgaXMgbm90IGFuIGltbWVkaWF0ZSBoZWFkZXIgYnV0IHRoZXJlIGlzXG4gICAgLy8gc29tZSBjb250ZW50IGluIHRoZSBmaWxlLiBJZiB0aGVyZSBhcmUgb3RoZXIgc2VjdGlvbnMsIHRoZW4gZ28gdXAgdG8gdGhhdCwgb3RoZXJ3aXNlLCBnbyBmb3IgdGhlIGVudGlyZSBmaWxlLlxuICAgIGlmIChzZWN0aW9ucy5zaXplID09IDApIHtcbiAgICAgICAgaWYgKCFlbXB0eWxpbmVzKGxpbmVzLCAwLCBsaW5lcy5sZW5ndGgpKSB7XG4gICAgICAgICAgICBjb25zdCBzZWN0aW9uID0gbmV3IFNlY3Rpb25EYXRhKDAsIGxpbmVzLmxlbmd0aCwgZ2V0RmlsZVRpdGxlKHBhdGgpLCAxLCAwKTtcbiAgICAgICAgICAgIHNlY3Rpb25zLnNldCgwLCBzZWN0aW9uKTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEZpbmQgdGhlIHN0YXJ0IG9mIHRoZSBmaXJzdCBzZWN0aW9uLlxuICAgICAgICBjb25zdCBmaXJzdCA9IHNlY3Rpb25zLmdldFBhaXJPck5leHRIaWdoZXIoMCk/LlsxXSEhO1xuXG4gICAgICAgIGlmIChmaXJzdC5zdGFydCA+IDAgJiYgIWVtcHR5bGluZXMobGluZXMsIDAsIGZpcnN0LnN0YXJ0KSkge1xuICAgICAgICAgICAgY29uc3Qgc2VjdGlvbiA9IG5ldyBTZWN0aW9uRGF0YSgwLCBmaXJzdC5zdGFydCwgZ2V0RmlsZVRpdGxlKHBhdGgpLCAxLCAwKTtcblxuICAgICAgICAgICAgc2VjdGlvbnMuc2V0KDAsIHNlY3Rpb24pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8vLy8vLy8vLy8vXG4gICAgLy8gQmxvY2tzIC8vXG4gICAgLy8vLy8vLy8vLy8vXG5cbiAgICAvLyBBbGwgYmxvY2tzOyB3ZSB3aWxsIGFzc2lnbiB0YWdzIGFuZCBvdGhlciBtZXRhZGF0YSB0byBibG9ja3MgYXMgd2UgZW5jb3VudGVyIHRoZW0uIEF0IHRoZSBlbmQsIG9ubHkgYmxvY2tzIHRoYXRcbiAgICAvLyBoYXZlIGFjdHVhbCBtZXRhZGF0YSB3aWxsIGJlIHN0b3JlZCB0byBzYXZlIG9uIG1lbW9yeSBwcmVzc3VyZS5cbiAgICBjb25zdCBibG9ja3MgPSBuZXcgQlRyZWU8bnVtYmVyLCBCbG9ja0RhdGE+KHVuZGVmaW5lZCwgKGEsIGIpID0+IGEgLSBiKTtcbiAgICBsZXQgYmxvY2tPcmRpbmFsID0gMTtcbiAgICBmb3IgKGNvbnN0IGJsb2NrIG9mIG1ldGFkYXRhLnNlY3Rpb25zIHx8IFtdKSB7XG4gICAgICAgIC8vIFNraXAgaGVhZGluZ3MgYmxvY2tzLCB3ZSBoYW5kbGUgdGhlbSBzcGVjaWFsbHkgYXMgc2VjdGlvbnMuXG4gICAgICAgIGlmIChibG9jay50eXBlID09PSBcImhlYWRpbmdcIikgY29udGludWU7XG5cbiAgICAgICAgY29uc3Qgc3RhcnQgPSBibG9jay5wb3NpdGlvbi5zdGFydC5saW5lO1xuICAgICAgICBjb25zdCBlbmQgPSBibG9jay5wb3NpdGlvbi5lbmQubGluZSArIDE7XG4gICAgICAgIGNvbnN0IHN0YXJ0TGluZSA9IGxpbmVzW3N0YXJ0XTsgLy8gdG8gdXNlIHRvIGNoZWNrIHRoZSBjb2RlYmxvY2sgdHlwZVxuXG4gICAgICAgIGlmIChibG9jay50eXBlID09PSBcImxpc3RcIikge1xuICAgICAgICAgICAgYmxvY2tzLnNldChzdGFydCwgbmV3IExpc3RCbG9ja0RhdGEoc3RhcnQsIGVuZCwgYmxvY2tPcmRpbmFsKyssIGJsb2NrLmlkKSk7XG4gICAgICAgIH0gZWxzZSBpZiAoYmxvY2sudHlwZSA9PSBcImNvZGVcIiAmJiBZQU1MX0RBVEFfUkVHRVgudGVzdChzdGFydExpbmUpKSB7XG4gICAgICAgICAgICBjb25zdCB5YW1sOiBzdHJpbmcgPSBsaW5lc1xuICAgICAgICAgICAgICAgIC5zbGljZShzdGFydCArIDEsIGVuZCAtIDEpXG4gICAgICAgICAgICAgICAgLmpvaW4oXCJcXG5cIilcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFx0L2dtLCBcIiAgXCIpO1xuICAgICAgICAgICAgY29uc3Qgc3BsaXQ6IFJlY29yZDxzdHJpbmcsIEpzb25Gcm9udG1hdHRlckVudHJ5PiA9IHBhcnNlRnJvbnRtYXR0ZXJCbG9jayhwYXJzZVlhbWwoeWFtbCkpO1xuXG4gICAgICAgICAgICBibG9ja3Muc2V0KHN0YXJ0LCBuZXcgRGF0YWJsb2NrRGF0YShzdGFydCwgZW5kLCBibG9ja09yZGluYWwrKywgc3BsaXQsIGJsb2NrLmlkKSk7XG4gICAgICAgIH0gZWxzZSBpZiAoYmxvY2sudHlwZSA9PT0gXCJjb2RlXCIpIHtcbiAgICAgICAgICAgIC8vIENoZWNrIGlmIHRoZSBibG9jayBpcyBmZW5jZWQuXG4gICAgICAgICAgICBjb25zdCBtYXRjaCA9IHN0YXJ0TGluZS5tYXRjaChDT0RFQkxPQ0tfRkVOQ0VfUkVHRVgpO1xuICAgICAgICAgICAgaWYgKCFtYXRjaCkge1xuICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgYW4gaW5kZW50ZWQtc3R5bGUgY29kZWJsb2NrLlxuICAgICAgICAgICAgICAgIGJsb2Nrcy5zZXQoc3RhcnQsIG5ldyBDb2RlYmxvY2tEYXRhKHN0YXJ0LCBlbmQsIGJsb2NrT3JkaW5hbCsrLCBbXSwgXCJpbmRlbnRcIiwgc3RhcnQsIGVuZCwgYmxvY2suaWQpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbGFuZ3VhZ2VzID0gbWF0Y2gubGVuZ3RoID4gMSAmJiBtYXRjaFsxXSA/IG1hdGNoWzFdLnNwbGl0KFwiLFwiKSA6IFtdO1xuICAgICAgICAgICAgICAgIGJsb2Nrcy5zZXQoXG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0LFxuICAgICAgICAgICAgICAgICAgICBuZXcgQ29kZWJsb2NrRGF0YShzdGFydCwgZW5kLCBibG9ja09yZGluYWwrKywgbGFuZ3VhZ2VzLCBcImZlbmNlZFwiLCBzdGFydCArIDEsIGVuZCAtIDEsIGJsb2NrLmlkKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBibG9ja3Muc2V0KHN0YXJ0LCBuZXcgQmFzZUJsb2NrRGF0YShzdGFydCwgZW5kLCBibG9ja09yZGluYWwrKywgYmxvY2sudHlwZSwgYmxvY2suaWQpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFkZCBibG9ja3MgdG8gc2VjdGlvbnMuXG4gICAgZm9yIChjb25zdCBibG9jayBvZiBibG9ja3MudmFsdWVzKCkpIHtcbiAgICAgICAgbG9va3VwKGJsb2NrLnN0YXJ0LCBzZWN0aW9ucyk/LmJsb2NrKGJsb2NrKTtcbiAgICB9XG5cbiAgICAvLy8vLy8vLy8vL1xuICAgIC8vIExpc3RzIC8vXG4gICAgLy8vLy8vLy8vLy9cblxuICAgIC8vIEFsbCBsaXN0IGl0ZW1zIGluIGxpc3RzLiBTdGFydCB3aXRoIGEgc2ltcGxlIHRyaXZpYWwgcGFzcy5cbiAgICBjb25zdCBjb250ZW50UmVnZXggPSAvXltcXHRcXGZcXHYgXSpbXFwtK1xcKl1cXHMoXFxbLlxcXVxccyk/LztcbiAgICBjb25zdCBtYXJrZXJSZWdleCA9IC9eKD4/XFxzPykqKFxcdHxcXHMpKi9nO1xuICAgIGNvbnN0IGxpc3RJdGVtcyA9IG5ldyBCVHJlZTxudW1iZXIsIExpc3RJdGVtRGF0YT4odW5kZWZpbmVkLCAoYSwgYikgPT4gYSAtIGIpO1xuXG4gICAgZm9yIChjb25zdCBsaXN0IG9mIG1ldGFkYXRhLmxpc3RJdGVtcyB8fCBbXSkge1xuICAgICAgICBjb25zdCBsaW5lID0gbGluZXNbbGlzdC5wb3NpdGlvbi5zdGFydC5saW5lXTtcblxuICAgICAgICAvLyBUT0RPOiBJbXBsZW1lbnQgZmxhZyB3aGljaCBza2lwcyBpbmRleGluZyBsaXN0IGl0ZW1zLlxuICAgICAgICBjb25zdCBtYXRjaCA9IGxpbmUubWF0Y2goTElTVF9JVEVNX1JFR0VYKTtcbiAgICAgICAgbGV0IHN5bWJvbCA9IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHRleHQgPSB1bmRlZmluZWQ7XG4gICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgICAgc3ltYm9sID0gbWF0Y2hbMV07XG4gICAgICAgICAgICB0ZXh0ID0gbWF0Y2hbM107XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpdGVtID0gbmV3IExpc3RJdGVtRGF0YShcbiAgICAgICAgICAgIGxpc3QucG9zaXRpb24uc3RhcnQubGluZSxcbiAgICAgICAgICAgIGxpc3QucG9zaXRpb24uZW5kLmxpbmUgKyAxLFxuICAgICAgICAgICAgbGlzdC5wYXJlbnQsXG4gICAgICAgICAgICBzeW1ib2wsXG4gICAgICAgICAgICBsaXN0LmlkLFxuICAgICAgICAgICAgbGlzdC50YXNrLFxuICAgICAgICAgICAgdGV4dFxuICAgICAgICApO1xuICAgICAgICBsaXN0SXRlbXMuc2V0KGl0ZW0uc3RhcnQsIGl0ZW0pO1xuICAgIH1cblxuICAgIC8vIEluIHRoZSBzZWNvbmQgbGlzdCBwYXNzLCBhY3R1YWxseSBjb25zdHJ1Y3QgdGhlIGxpc3QgaGVpcmFyY2h5LlxuICAgIGZvciAoY29uc3QgaXRlbSBvZiBsaXN0SXRlbXMudmFsdWVzKCkpIHtcbiAgICAgICAgaWYgKGl0ZW0ucGFyZW50TGluZSA8IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGxpc3RCbG9jayA9IGJsb2Nrcy5nZXQoLWl0ZW0ucGFyZW50TGluZSk7XG4gICAgICAgICAgICBpZiAoIWxpc3RCbG9jayB8fCAhKGxpc3RCbG9jay50eXBlID09PSBcImxpc3RcIikpIGNvbnRpbnVlO1xuXG4gICAgICAgICAgICAobGlzdEJsb2NrIGFzIExpc3RCbG9ja0RhdGEpLml0ZW1zLnB1c2goaXRlbSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsaXN0SXRlbXMuZ2V0KGl0ZW0ucGFyZW50TGluZSk/LmVsZW1lbnRzLnB1c2goaXRlbSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLy8vLy8vLy8vXG4gICAgLy8gVGFncyAvL1xuICAgIC8vLy8vLy8vLy9cblxuICAgIC8vIEZvciBlYWNoIHRhZywgYXNzaWduIGl0IHRvIHRoZSBhcHByb3ByaWF0ZSBzZWN0aW9uIGFuZCBibG9jayB0aGF0IGl0IGlzIGEgcGFydCBvZi5cbiAgICBmb3IgKGNvbnN0IHRhZ2RlZiBvZiBtZXRhZGF0YS50YWdzID8/IFtdKSB7XG4gICAgICAgIGNvbnN0IHRhZyA9IHRhZ2RlZi50YWcuc3RhcnRzV2l0aChcIiNcIikgPyB0YWdkZWYudGFnIDogXCIjXCIgKyB0YWdkZWYudGFnO1xuICAgICAgICBjb25zdCBsaW5lID0gdGFnZGVmLnBvc2l0aW9uLnN0YXJ0LmxpbmU7XG4gICAgICAgIG1hcmtkb3duTWV0YWRhdGEudGFnKHRhZyk7XG5cbiAgICAgICAgbG9va3VwKGxpbmUsIHNlY3Rpb25zKT8ubWV0YWRhdGEudGFnKHRhZyk7XG4gICAgICAgIGxvb2t1cChsaW5lLCBibG9ja3MpPy5tZXRhZGF0YS50YWcodGFnKTtcbiAgICAgICAgbG9va3VwKGxpbmUsIGxpc3RJdGVtcyk/Lm1ldGFkYXRhLnRhZyh0YWcpO1xuICAgIH1cblxuICAgIC8vIEFkZCBmcm9udG1hdHRlciB0YWdzLlxuICAgIGlmIChtZXRhZGF0YS5mcm9udG1hdHRlcikge1xuICAgICAgICBmb3IgKGNvbnN0IHJhd3RhZyBvZiBleHRyYWN0VGFncyhtZXRhZGF0YS5mcm9udG1hdHRlcikpIHtcbiAgICAgICAgICAgIGNvbnN0IHRhZyA9IHJhd3RhZy5zdGFydHNXaXRoKFwiI1wiKSA/IHJhd3RhZyA6IFwiI1wiICsgcmF3dGFnO1xuICAgICAgICAgICAgbWFya2Rvd25NZXRhZGF0YS50YWcodGFnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vLy8vLy8vLy8vXG4gICAgLy8gTGlua3MgLy9cbiAgICAvLy8vLy8vLy8vL1xuXG4gICAgZm9yIChsZXQgbGlua2RlZiBvZiBtZXRhZGF0YS5saW5rcyA/PyBbXSkge1xuICAgICAgICBjb25zdCBsaW5rID0gTGluay5pbmZlcihsaW5rZGVmLmxpbmspO1xuICAgICAgICBjb25zdCBsaW5lID0gbGlua2RlZi5wb3NpdGlvbi5zdGFydC5saW5lO1xuICAgICAgICBtYXJrZG93bk1ldGFkYXRhLmxpbmsobGluayk7XG5cbiAgICAgICAgbG9va3VwKGxpbmUsIHNlY3Rpb25zKT8ubWV0YWRhdGEubGluayhsaW5rKTtcbiAgICAgICAgbG9va3VwKGxpbmUsIGJsb2Nrcyk/Lm1ldGFkYXRhLmxpbmsobGluayk7XG4gICAgICAgIGxvb2t1cChsaW5lLCBsaXN0SXRlbXMpPy5tZXRhZGF0YS5saW5rKGxpbmspO1xuICAgIH1cblxuICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gRnJvbnRtYXR0ZXIgTGlua3MgLy9cbiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gICAgLy8gRnJvbnRtYXR0ZXIgbGlua3MgYXJlIG9ubHkgYXNzaWduZWQgdG8gdGhlIHBhZ2UuXG4gICAgZm9yIChjb25zdCBsaW5rZGVmIG9mIG1ldGFkYXRhLmZyb250bWF0dGVyTGlua3MgPz8gW10pIHtcbiAgICAgICAgbWFya2Rvd25NZXRhZGF0YS5saW5rKExpbmsuaW5mZXIobGlua2RlZi5saW5rLCBmYWxzZSwgbGlua2RlZi5kaXNwbGF5VGV4dCkpO1xuICAgIH1cblxuICAgIC8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAvLyBJbmxpbmUgRmllbGRzIC8vXG4gICAgLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gICAgZm9yIChjb25zdCBmaWVsZCBvZiBpdGVyYXRlSW5saW5lRmllbGRzKGxpbmVzKSkge1xuICAgICAgICBjb25zdCBsaW5lID0gZmllbGQucG9zaXRpb24ubGluZTtcbiAgICAgICAgbWFya2Rvd25NZXRhZGF0YS5pbmxpbmVGaWVsZChmaWVsZCk7XG5cbiAgICAgICAgbG9va3VwKGxpbmUsIHNlY3Rpb25zKT8ubWV0YWRhdGEuaW5saW5lRmllbGQoZmllbGQpO1xuICAgICAgICBsb29rdXAobGluZSwgYmxvY2tzKT8ubWV0YWRhdGEuaW5saW5lRmllbGQoZmllbGQpO1xuICAgICAgICBsb29rdXAobGluZSwgbGlzdEl0ZW1zKT8ubWV0YWRhdGEuaW5saW5lRmllbGQoZmllbGQpO1xuICAgIH1cbiAgICBzZWN0aW9uQXJyYXkucHVzaCguLi5zZWN0aW9ucy52YWx1ZXMoKSk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbGluZXMsXG4gICAgICAgIGZyb250bWF0dGVyLFxuICAgICAgICBtZXRhZGF0YTogbWFya2Rvd25NZXRhZGF0YSxcbiAgICAgICAgc2VjdGlvbnM6IHNlY3Rpb25BcnJheSxcbiAgICB9O1xufVxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBQYXJzaW5nIEFpZHMgLy9cbi8vLy8vLy8vLy8vLy8vLy8vL1xuXG4vKiogQ2hlY2sgaWYgdGhlIGdpdmVuIGxpbmUgcmFuZ2UgaXMgYWxsIGVtcHR5LiBTdGFydCBpcyBpbmNsdXNpdmUsIGVuZCBleGNsdXNpdmUuICovXG5mdW5jdGlvbiBlbXB0eWxpbmVzKGxpbmVzOiBzdHJpbmdbXSwgc3RhcnQ6IG51bWJlciwgZW5kOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBmb3IgKGxldCBpbmRleCA9IHN0YXJ0OyBpbmRleCA8IGVuZDsgaW5kZXgrKykge1xuICAgICAgICBpZiAobGluZXNbaW5kZXhdLnRyaW0oKSAhPT0gXCJcIikgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIFlpZWxkcyBhbGwgaW5saW5lIGZpZWxkcyBmb3VuZCBpbiB0aGUgZG9jdW1lbnQgYnkgdHJhdmVyc2luZyBsaW5lIGJ5IGxpbmUgdGhyb3VnaCB0aGUgZG9jdW1lbnQuIFBlcmZvcm1zIHNvbWUgb3B0aW1pemF0aW9uc1xuICogdG8gc2tpcCBleHRyYS1sYXJnZSBsaW5lcywgYW5kIGNhbiBiZSBkaXNhYmxlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uKiBpdGVyYXRlSW5saW5lRmllbGRzKGNvbnRlbnQ6IHN0cmluZ1tdKTogR2VuZXJhdG9yPElubGluZUZpZWxkPiB7XG4gICAgZm9yIChsZXQgbGluZW5vID0gMDsgbGluZW5vIDwgY29udGVudC5sZW5ndGg7IGxpbmVubysrKSB7XG4gICAgICAgIGNvbnN0IGxpbmUgPSBjb250ZW50W2xpbmVub107XG5cbiAgICAgICAgLy8gRmFzdC1iYWlsb3V0IGZvciBsaW5lcyB0aGF0IGFyZSB0b28gbG9uZyBvciBkbyBub3QgY29udGFpbiAnOjonLlxuICAgICAgICBpZiAobGluZS5sZW5ndGggPiAzMjc2OCB8fCAhbGluZS5pbmNsdWRlcyhcIjo6XCIpKSBjb250aW51ZTtcblxuICAgICAgICAvLyBUT0RPOiBSZS1hZGQgc3VwcG9ydCBmb3IgdGhvc2UgY3VzdG9tIGVtb2ppIGZpZWxkcyBvbiB0YXNrcyBhbmQgc2ltaWxhci5cbiAgICAgICAgbGV0IGlubGluZUZpZWxkcyA9IGV4dHJhY3RJbmxpbmVGaWVsZHMobGluZSk7XG4gICAgICAgIGlmIChpbmxpbmVGaWVsZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgZm9yIChsZXQgaWZpZWxkIG9mIGlubGluZUZpZWxkcykgeWllbGQgYXNJbmxpbmVGaWVsZChpZmllbGQsIGxpbmVubyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQgZnVsbExpbmUgPSBleHRyYWN0RnVsbExpbmVGaWVsZChsaW5lKTtcbiAgICAgICAgICAgIGlmIChmdWxsTGluZSkgeWllbGQgYXNJbmxpbmVGaWVsZChmdWxsTGluZSwgbGluZW5vKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLyoqIFRvcC1sZXZlbCBmdW5jdGlvbiB3aGljaCBtYXBzIGEgWUFNTCBibG9jayAtIGluY2x1ZGluZyBmcm9udG1hdHRlciAtIGludG8gZnJvbnRtYXR0ZXIgZW50cmllcy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUZyb250bWF0dGVyQmxvY2soYmxvY2s6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBSZWNvcmQ8c3RyaW5nLCBKc29uRnJvbnRtYXR0ZXJFbnRyeT4ge1xuICAgIGNvbnN0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgSnNvbkZyb250bWF0dGVyRW50cnk+ID0ge307XG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoYmxvY2spKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gYmxvY2tba2V5XTtcblxuICAgICAgICByZXN1bHRba2V5LnRvTG93ZXJDYXNlKCldID0ge1xuICAgICAgICAgICAga2V5OiBrZXksXG4gICAgICAgICAgICB2YWx1ZTogSnNvbkNvbnZlcnNpb24uanNvbihZYW1sQ29udmVyc2lvbi5saXRlcmFsKHZhbHVlKSksXG4gICAgICAgICAgICByYXc6IHZhbHVlLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKiBGaW5kcyBhbiBlbGVtZW50IHdoaWNoIGNvbnRhaW5zIHRoZSBnaXZlbiBsaW5lLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxvb2t1cDxUIGV4dGVuZHMgeyBzdGFydDogbnVtYmVyOyBlbmQ6IG51bWJlciB9PihsaW5lOiBudW1iZXIsIHRyZWU6IEJUcmVlPG51bWJlciwgVD4pOiBUIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCB0YXJnZXQgPSB0cmVlLmdldFBhaXJPck5leHRMb3dlcihsaW5lKT8uWzFdO1xuICAgIGlmICh0YXJnZXQgJiYgdGFyZ2V0LmVuZCA+PSBsaW5lKSByZXR1cm4gdGFyZ2V0O1xuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLyoqIEV4dHJhY3QgdGFncyBpbnRlbGxpZ2VudGx5IGZyb20gZnJvbnRtYXR0ZXIuIEhhbmRsZXMgYXJyYXlzLCBudW1iZXJzLCBhbmQgc3RyaW5ncy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0VGFncyhtZXRhZGF0YTogRnJvbnRNYXR0ZXJDYWNoZSk6IHN0cmluZ1tdIHtcbiAgICBsZXQgdGFnS2V5cyA9IE9iamVjdC5rZXlzKG1ldGFkYXRhKS5maWx0ZXIoKHQpID0+IHQudG9Mb3dlckNhc2UoKSA9PSBcInRhZ3NcIiB8fCB0LnRvTG93ZXJDYXNlKCkgPT0gXCJ0YWdcIik7XG5cbiAgICByZXR1cm4gdGFnS2V5c1xuICAgICAgICAubWFwKChrKSA9PiBzcGxpdEZyb250bWF0dGVyVGFnT3JBbGlhcyhtZXRhZGF0YVtrXSwgL1ssXFxzXSsvKSlcbiAgICAgICAgLnJlZHVjZSgocCwgYykgPT4gcC5jb25jYXQoYyksIFtdKVxuICAgICAgICAubWFwKChzdHIpID0+IChzdHIuc3RhcnRzV2l0aChcIiNcIikgPyBzdHIgOiBcIiNcIiArIHN0cikpO1xufVxuXG4vKiogU3BsaXQgYSBmcm9udG1hdHRlciBsaXN0IGludG8gc2VwYXJhdGUgZWxlbWVudHM7IGhhbmRsZXMgYWN0dWFsIGxpc3RzLCBjb21tYSBzZXBhcmF0ZWQgbGlzdHMsIGFuZCBzaW5nbGUgZWxlbWVudHMuICovXG5leHBvcnQgZnVuY3Rpb24gc3BsaXRGcm9udG1hdHRlclRhZ09yQWxpYXMoZGF0YTogYW55LCBvbjogUmVnRXhwKTogc3RyaW5nW10ge1xuICAgIGlmIChkYXRhID09IG51bGwgfHwgZGF0YSA9PSB1bmRlZmluZWQpIHJldHVybiBbXTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhKSkge1xuICAgICAgICByZXR1cm4gZGF0YVxuICAgICAgICAgICAgLmZpbHRlcigocykgPT4gISFzKVxuICAgICAgICAgICAgLm1hcCgocykgPT4gc3BsaXRGcm9udG1hdHRlclRhZ09yQWxpYXMocywgb24pKVxuICAgICAgICAgICAgLnJlZHVjZSgocCwgYykgPT4gcC5jb25jYXQoYyksIFtdKTtcbiAgICB9XG5cbiAgICAvLyBGb3JjZSB0byBhIHN0cmluZyB0byBoYW5kbGUgbnVtYmVycyBhbmQgc28gb24uXG4gICAgcmV0dXJuIChcIlwiICsgZGF0YSlcbiAgICAgICAgLnNwbGl0KG9uKVxuICAgICAgICAuZmlsdGVyKCh0KSA9PiAhIXQpXG4gICAgICAgIC5tYXAoKHQpID0+IHQudHJpbSgpKVxuICAgICAgICAuZmlsdGVyKCh0KSA9PiB0Lmxlbmd0aCA+IDApO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQnVpbGRlciBVdGlsaXRpZXMgLy9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbi8qKiBDb252aWVuZW50IHNoYXJlZCB1dGlsaXR5IGZvciB0cmFja2luZyBtZXRhZGF0YSAtIGxpbmtzLCB0YWdzLCBhbmQgc28gb24uICovXG5leHBvcnQgY2xhc3MgTWV0YWRhdGEge1xuICAgIHB1YmxpYyB0YWdzOiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoKTtcbiAgICBwdWJsaWMgbGlua3M6IExpbmtbXSA9IFtdO1xuICAgIHB1YmxpYyBpbmxpbmVGaWVsZHM6IFJlY29yZDxzdHJpbmcsIElubGluZUZpZWxkPiA9IHt9O1xuXG4gICAgLyoqIEFkZCBhIHRhZyB0byB0aGUgbWV0YWRhdGEuICovXG4gICAgcHVibGljIHRhZyh0YWc6IHN0cmluZykge1xuICAgICAgICB0aGlzLnRhZ3MuYWRkKHRhZyk7XG4gICAgfVxuXG4gICAgLyoqIEFkZCBhIGxpbmsgdG8gdGhlIG1ldGFkYXRhLiAqL1xuICAgIHB1YmxpYyBsaW5rKGxpbms6IExpbmspIHtcbiAgICAgICAgaWYgKHRoaXMubGlua3MuZmluZCgodikgPT4gdi5lcXVhbHMobGluaykpKSByZXR1cm47XG4gICAgICAgIHRoaXMubGlua3MucHVzaChsaW5rKTtcbiAgICB9XG5cbiAgICAvKiogQWRkIGFuIGlubGluZSBmaWVsZCB0byB0aGUgbWV0YWRhdGEuICovXG4gICAgcHVibGljIGlubGluZUZpZWxkKGZpZWxkOiBJbmxpbmVGaWVsZCkge1xuICAgICAgICBjb25zdCBsb3dlciA9IGZpZWxkLmtleS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBpZiAoT2JqZWN0LmtleXModGhpcy5pbmxpbmVGaWVsZHMpLnNvbWUoKGtleSkgPT4ga2V5LnRvTG93ZXJDYXNlKCkgPT0gbG93ZXIpKSByZXR1cm47XG5cbiAgICAgICAgdGhpcy5pbmxpbmVGaWVsZHNbbG93ZXJdID0gZmllbGQ7XG4gICAgfVxuXG4gICAgLyoqIFJldHVybiBhIGxpc3Qgb2YgdW5pcXVlIGFkZGVkIHRhZ3MuICovXG4gICAgcHVibGljIGZpbmlzaFRhZ3MoKTogc3RyaW5nW10ge1xuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLnRhZ3MpO1xuICAgIH1cblxuICAgIC8qKiBSZXR1cm4gYSBsaXN0IG9mIEpTT04tc2VyaWFsaXplZCBsaW5rcy4gKi9cbiAgICBwdWJsaWMgZmluaXNoTGlua3MoKTogSnNvbkxpbmtbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxpbmtzLm1hcCgobGluaykgPT4gbGluay50b09iamVjdCgpKTtcbiAgICB9XG5cbiAgICAvKiogUmV0dXJuIGEgbGlzdCBvZiBKU09OLXNlcmlhbGl6ZWQgaW5saW5lIGZpZWxkcy4gKi9cbiAgICBwdWJsaWMgZmluaXNoSW5saW5lRmllbGRzKCk6IFJlY29yZDxzdHJpbmcsIEpzb25JbmxpbmVGaWVsZD4ge1xuICAgICAgICByZXR1cm4gbWFwT2JqZWN0VmFsdWVzKHRoaXMuaW5saW5lRmllbGRzLCBqc29uSW5saW5lRmllbGQpO1xuICAgIH1cbn1cblxuLyoqIENvbnZpZW5lbnQgdXRpbGl0eSBmb3IgY29uc3RydWN0aW5nIHBhZ2Ugb2JqZWN0cy4gKi9cbmV4cG9ydCBjbGFzcyBQYWdlRGF0YSB7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgcGF0aDogc3RyaW5nLFxuICAgICAgICBwdWJsaWMgc3RhdHM6IEZpbGVTdGF0cyxcbiAgICAgICAgcHVibGljIGxlbmd0aDogbnVtYmVyLFxuICAgICAgICBwdWJsaWMgbWV0YWRhdGE6IE1ldGFkYXRhLFxuICAgICAgICBwdWJsaWMgc2VjdGlvbnM6IFNlY3Rpb25EYXRhW10sXG4gICAgICAgIHB1YmxpYyBmcm9udG1hdHRlcj86IFJlY29yZDxzdHJpbmcsIEpzb25Gcm9udG1hdHRlckVudHJ5PlxuICAgICkge31cblxuICAgIHB1YmxpYyBidWlsZCgpOiBKc29uTWFya2Rvd25QYWdlIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICRwYXRoOiB0aGlzLnBhdGgsXG4gICAgICAgICAgICAkY3RpbWU6IHRoaXMuc3RhdHMuY3RpbWUsXG4gICAgICAgICAgICAkbXRpbWU6IHRoaXMuc3RhdHMubXRpbWUsXG4gICAgICAgICAgICAkc2l6ZTogdGhpcy5zdGF0cy5zaXplLFxuICAgICAgICAgICAgJGV4dGVuc2lvbjogZ2V0RXh0ZW5zaW9uKHRoaXMucGF0aCksXG4gICAgICAgICAgICAkcG9zaXRpb246IHsgc3RhcnQ6IDAsIGVuZDogdGhpcy5sZW5ndGggfSxcbiAgICAgICAgICAgICR0YWdzOiB0aGlzLm1ldGFkYXRhLmZpbmlzaFRhZ3MoKSxcbiAgICAgICAgICAgICRsaW5rczogdGhpcy5tZXRhZGF0YS5maW5pc2hMaW5rcygpLFxuICAgICAgICAgICAgJGluZmllbGRzOiB0aGlzLm1ldGFkYXRhLmZpbmlzaElubGluZUZpZWxkcygpLFxuICAgICAgICAgICAgJHNlY3Rpb25zOiB0aGlzLnNlY3Rpb25zLm1hcCgoeCkgPT4geC5idWlsZCgpKSxcbiAgICAgICAgICAgICRmcm9udG1hdHRlcjogdGhpcy5mcm9udG1hdHRlcixcbiAgICAgICAgfTtcbiAgICB9XG59XG5cbi8qKiBDb252aWVuZW50IHV0aWxpdHkgZm9yIGNvbnN0cnVjdGluZyBtYXJrZG93biBzZWN0aW9ucy4gKi9cbmV4cG9ydCBjbGFzcyBTZWN0aW9uRGF0YSB7XG4gICAgcHVibGljIGJsb2NrczogQmxvY2tEYXRhW10gPSBbXTtcbiAgICBwdWJsaWMgbWV0YWRhdGE6IE1ldGFkYXRhID0gbmV3IE1ldGFkYXRhKCk7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBzdGFydDogbnVtYmVyLFxuICAgICAgICBwdWJsaWMgZW5kOiBudW1iZXIsXG4gICAgICAgIHB1YmxpYyB0aXRsZTogc3RyaW5nLFxuICAgICAgICBwdWJsaWMgbGV2ZWw6IG51bWJlcixcbiAgICAgICAgcHVibGljIG9yZGluYWw6IG51bWJlclxuICAgICkge31cblxuICAgIHB1YmxpYyBibG9jayhibG9jazogQmxvY2tEYXRhKSB7XG4gICAgICAgIHRoaXMuYmxvY2tzLnB1c2goYmxvY2spO1xuICAgIH1cblxuICAgIHB1YmxpYyBidWlsZCgpOiBKc29uTWFya2Rvd25TZWN0aW9uIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICR0aXRsZTogdGhpcy50aXRsZSxcbiAgICAgICAgICAgICRvcmRpbmFsOiB0aGlzLm9yZGluYWwsXG4gICAgICAgICAgICAkbGV2ZWw6IHRoaXMubGV2ZWwsXG4gICAgICAgICAgICAkdGFnczogdGhpcy5tZXRhZGF0YS5maW5pc2hUYWdzKCksXG4gICAgICAgICAgICAkaW5maWVsZHM6IHRoaXMubWV0YWRhdGEuZmluaXNoSW5saW5lRmllbGRzKCksXG4gICAgICAgICAgICAkbGlua3M6IHRoaXMubWV0YWRhdGEuZmluaXNoTGlua3MoKSxcbiAgICAgICAgICAgICRwb3NpdGlvbjogeyBzdGFydDogdGhpcy5zdGFydCwgZW5kOiB0aGlzLmVuZCB9LFxuICAgICAgICAgICAgJGJsb2NrczogdGhpcy5ibG9ja3MubWFwKChibG9jaykgPT4gYmxvY2suYnVpbGQoKSksXG4gICAgICAgIH07XG4gICAgfVxufVxuXG4vKiogQ29uc3RydWN0cyBtYXJrZG93biBsaXN0IGJsb2NrcyBzcGVjaWZpY2FsbHkuICovXG5leHBvcnQgY2xhc3MgTGlzdEJsb2NrRGF0YSB7XG4gICAgcHVibGljIHR5cGU6IHN0cmluZyA9IFwibGlzdFwiO1xuICAgIHB1YmxpYyBtZXRhZGF0YTogTWV0YWRhdGEgPSBuZXcgTWV0YWRhdGEoKTtcbiAgICBwdWJsaWMgaXRlbXM6IExpc3RJdGVtRGF0YVtdID0gW107XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IocHVibGljIHN0YXJ0OiBudW1iZXIsIHB1YmxpYyBlbmQ6IG51bWJlciwgcHVibGljIG9yZGluYWw6IG51bWJlciwgcHVibGljIGJsb2NrSWQ/OiBzdHJpbmcpIHt9XG5cbiAgICBwdWJsaWMgYnVpbGQoKTogSnNvbk1hcmtkb3duTGlzdEJsb2NrIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICRvcmRpbmFsOiB0aGlzLm9yZGluYWwsXG4gICAgICAgICAgICAkcG9zaXRpb246IHsgc3RhcnQ6IHRoaXMuc3RhcnQsIGVuZDogdGhpcy5lbmQgfSxcbiAgICAgICAgICAgICRpbmZpZWxkczogdGhpcy5tZXRhZGF0YS5maW5pc2hJbmxpbmVGaWVsZHMoKSxcbiAgICAgICAgICAgICR0YWdzOiB0aGlzLm1ldGFkYXRhLmZpbmlzaFRhZ3MoKSxcbiAgICAgICAgICAgICRsaW5rczogdGhpcy5tZXRhZGF0YS5maW5pc2hMaW5rcygpLFxuICAgICAgICAgICAgJHR5cGU6IFwibGlzdFwiLFxuICAgICAgICAgICAgJGJsb2NrSWQ6IHRoaXMuYmxvY2tJZCxcbiAgICAgICAgICAgICRlbGVtZW50czogdGhpcy5pdGVtcy5tYXAoKGl0ZW0pID0+IGl0ZW0uYnVpbGQoKSksXG4gICAgICAgIH07XG4gICAgfVxufVxuXG4vKiogQ29uc3RydWN0cyBtYXJrZG93biBjb2RlYmxvY2tzIHNwZWNpZmljYWxseS4gKi9cbmV4cG9ydCBjbGFzcyBDb2RlYmxvY2tEYXRhIHtcbiAgICBwdWJsaWMgdHlwZTogc3RyaW5nID0gXCJjb2RlYmxvY2tcIjtcbiAgICBwdWJsaWMgbWV0YWRhdGE6IE1ldGFkYXRhID0gbmV3IE1ldGFkYXRhKCk7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBzdGFydDogbnVtYmVyLFxuICAgICAgICBwdWJsaWMgZW5kOiBudW1iZXIsXG4gICAgICAgIHB1YmxpYyBvcmRpbmFsOiBudW1iZXIsXG4gICAgICAgIHB1YmxpYyBsYW5ndWFnZXM6IHN0cmluZ1tdLFxuICAgICAgICBwdWJsaWMgc3R5bGU6IFwiaW5kZW50XCIgfCBcImZlbmNlZFwiLFxuICAgICAgICBwdWJsaWMgY29udGVudFN0YXJ0OiBudW1iZXIsXG4gICAgICAgIHB1YmxpYyBjb250ZW50RW5kOiBudW1iZXIsXG4gICAgICAgIHB1YmxpYyBibG9ja0lkPzogc3RyaW5nXG4gICAgKSB7fVxuXG4gICAgcHVibGljIGJ1aWxkKCk6IEpzb25NYXJrZG93bkNvZGVibG9jayB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAkdHlwZTogXCJjb2RlYmxvY2tcIixcbiAgICAgICAgICAgICRvcmRpbmFsOiB0aGlzLm9yZGluYWwsXG4gICAgICAgICAgICAkcG9zaXRpb246IHsgc3RhcnQ6IHRoaXMuc3RhcnQsIGVuZDogdGhpcy5lbmQgfSxcbiAgICAgICAgICAgICRpbmZpZWxkczogdGhpcy5tZXRhZGF0YS5maW5pc2hJbmxpbmVGaWVsZHMoKSxcbiAgICAgICAgICAgICR0YWdzOiB0aGlzLm1ldGFkYXRhLmZpbmlzaFRhZ3MoKSxcbiAgICAgICAgICAgICRsaW5rczogdGhpcy5tZXRhZGF0YS5maW5pc2hMaW5rcygpLFxuICAgICAgICAgICAgJGJsb2NrSWQ6IHRoaXMuYmxvY2tJZCxcbiAgICAgICAgICAgICRsYW5ndWFnZXM6IHRoaXMubGFuZ3VhZ2VzLFxuICAgICAgICAgICAgJHN0eWxlOiB0aGlzLnN0eWxlLFxuICAgICAgICAgICAgJGNvbnRlbnRQb3NpdGlvbjogeyBzdGFydDogdGhpcy5jb250ZW50U3RhcnQsIGVuZDogdGhpcy5jb250ZW50RW5kIH0sXG4gICAgICAgIH07XG4gICAgfVxufVxuXG4vKiogQ29uc3RydWN0cyBtYXJrZG93biBkYXRhYmxvY2tzIHNwZWNpZmljYWxseS4gKi9cbmV4cG9ydCBjbGFzcyBEYXRhYmxvY2tEYXRhIHtcbiAgICBwdWJsaWMgdHlwZTogc3RyaW5nID0gXCJkYXRhYmxvY2tcIjtcbiAgICBwdWJsaWMgbWV0YWRhdGE6IE1ldGFkYXRhID0gbmV3IE1ldGFkYXRhKCk7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBzdGFydDogbnVtYmVyLFxuICAgICAgICBwdWJsaWMgZW5kOiBudW1iZXIsXG4gICAgICAgIHB1YmxpYyBvcmRpbmFsOiBudW1iZXIsXG4gICAgICAgIHB1YmxpYyBkYXRhOiBSZWNvcmQ8c3RyaW5nLCBKc29uRnJvbnRtYXR0ZXJFbnRyeT4sXG4gICAgICAgIHB1YmxpYyBibG9ja0lkPzogc3RyaW5nXG4gICAgKSB7fVxuXG4gICAgcHVibGljIGJ1aWxkKCk6IEpzb25NYXJrZG93bkRhdGFibG9jayB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAkdHlwZTogXCJkYXRhYmxvY2tcIixcbiAgICAgICAgICAgICRvcmRpbmFsOiB0aGlzLm9yZGluYWwsXG4gICAgICAgICAgICAkcG9zaXRpb246IHsgc3RhcnQ6IHRoaXMuc3RhcnQsIGVuZDogdGhpcy5lbmQgfSxcbiAgICAgICAgICAgICRpbmZpZWxkczogdGhpcy5tZXRhZGF0YS5maW5pc2hJbmxpbmVGaWVsZHMoKSxcbiAgICAgICAgICAgICR0YWdzOiB0aGlzLm1ldGFkYXRhLmZpbmlzaFRhZ3MoKSxcbiAgICAgICAgICAgICRsaW5rczogdGhpcy5tZXRhZGF0YS5maW5pc2hMaW5rcygpLFxuICAgICAgICAgICAgJGJsb2NrSWQ6IHRoaXMuYmxvY2tJZCxcbiAgICAgICAgICAgICRkYXRhOiB0aGlzLmRhdGEsXG4gICAgICAgIH07XG4gICAgfVxufVxuXG4vKiogQmFzZSBibG9jayBtZXRhZGF0YSB1c2VkIGZvciBub24tc3BlY2lmaWMgYmxvY2tzLiAqL1xuZXhwb3J0IGNsYXNzIEJhc2VCbG9ja0RhdGEge1xuICAgIHB1YmxpYyBtZXRhZGF0YTogTWV0YWRhdGEgPSBuZXcgTWV0YWRhdGEoKTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIHN0YXJ0OiBudW1iZXIsXG4gICAgICAgIHB1YmxpYyBlbmQ6IG51bWJlcixcbiAgICAgICAgcHVibGljIG9yZGluYWw6IG51bWJlcixcbiAgICAgICAgcHVibGljIHR5cGU6IHN0cmluZyxcbiAgICAgICAgcHVibGljIGJsb2NrSWQ/OiBzdHJpbmdcbiAgICApIHt9XG5cbiAgICBwdWJsaWMgYnVpbGQoKTogSnNvbk1hcmtkb3duQmxvY2sge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgJHR5cGU6IHRoaXMudHlwZSxcbiAgICAgICAgICAgICRvcmRpbmFsOiB0aGlzLm9yZGluYWwsXG4gICAgICAgICAgICAkcG9zaXRpb246IHsgc3RhcnQ6IHRoaXMuc3RhcnQsIGVuZDogdGhpcy5lbmQgfSxcbiAgICAgICAgICAgICRpbmZpZWxkczogdGhpcy5tZXRhZGF0YS5maW5pc2hJbmxpbmVGaWVsZHMoKSxcbiAgICAgICAgICAgICR0YWdzOiB0aGlzLm1ldGFkYXRhLmZpbmlzaFRhZ3MoKSxcbiAgICAgICAgICAgICRsaW5rczogdGhpcy5tZXRhZGF0YS5maW5pc2hMaW5rcygpLFxuICAgICAgICAgICAgJGJsb2NrSWQ6IHRoaXMuYmxvY2tJZCxcbiAgICAgICAgfTtcbiAgICB9XG59XG5cbmV4cG9ydCB0eXBlIEJsb2NrRGF0YSA9IExpc3RCbG9ja0RhdGEgfCBDb2RlYmxvY2tEYXRhIHwgRGF0YWJsb2NrRGF0YSB8IEJhc2VCbG9ja0RhdGE7XG5cbi8qKiBVdGlsaXR5IGZvciBjb25zdHJ1Y3RpbmcgbWFya2Rvd24gbGlzdCBpdGVtcy4gKi9cbmV4cG9ydCBjbGFzcyBMaXN0SXRlbURhdGEge1xuICAgIHB1YmxpYyBtZXRhZGF0YTogTWV0YWRhdGEgPSBuZXcgTWV0YWRhdGEoKTtcbiAgICBwdWJsaWMgZWxlbWVudHM6IExpc3RJdGVtRGF0YVtdID0gW107XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgc3RhcnQ6IG51bWJlcixcbiAgICAgICAgcHVibGljIGVuZDogbnVtYmVyLFxuICAgICAgICBwdWJsaWMgcGFyZW50TGluZTogbnVtYmVyLFxuICAgICAgICBwdWJsaWMgc3ltYm9sPzogc3RyaW5nLFxuICAgICAgICBwdWJsaWMgYmxvY2tJZD86IHN0cmluZyxcbiAgICAgICAgcHVibGljIHN0YXR1cz86IHN0cmluZyxcbiAgICAgICAgcHVibGljIHRleHQ/OiBzdHJpbmdcbiAgICApIHt9XG5cbiAgICBwdWJsaWMgYnVpbGQoKTogSnNvbk1hcmtkb3duTGlzdEl0ZW0ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgJHBhcmVudExpbmU6IHRoaXMucGFyZW50TGluZSxcbiAgICAgICAgICAgICRwb3NpdGlvbjogeyBzdGFydDogdGhpcy5zdGFydCwgZW5kOiB0aGlzLmVuZCB9LFxuICAgICAgICAgICAgJGJsb2NrSWQ6IHRoaXMuYmxvY2tJZCxcbiAgICAgICAgICAgICRlbGVtZW50czogdGhpcy5lbGVtZW50cy5tYXAoKGVsZW1lbnQpID0+IGVsZW1lbnQuYnVpbGQoKSksXG4gICAgICAgICAgICAkdHlwZTogdGhpcy5zdGF0dXMgPyBcInRhc2tcIiA6IFwibGlzdFwiLFxuICAgICAgICAgICAgJGluZmllbGRzOiB0aGlzLm1ldGFkYXRhLmZpbmlzaElubGluZUZpZWxkcygpLFxuICAgICAgICAgICAgJHRhZ3M6IHRoaXMubWV0YWRhdGEuZmluaXNoVGFncygpLFxuICAgICAgICAgICAgJGxpbmtzOiB0aGlzLm1ldGFkYXRhLmZpbmlzaExpbmtzKCksXG4gICAgICAgICAgICAkc3RhdHVzOiB0aGlzLnN0YXR1cyxcbiAgICAgICAgICAgICRzeW1ib2w6IHRoaXMuc3ltYm9sLFxuICAgICAgICAgICAgJHRleHQ6IHRoaXMudGV4dCxcbiAgICAgICAgfSBhcyBKc29uTWFya2Rvd25UYXNrSXRlbTtcbiAgICB9XG59XG4iLCAiaW1wb3J0IHsgTGluayB9IGZyb20gXCJleHByZXNzaW9uL2xpbmtcIjtcbmltcG9ydCB7IERhdGVUaW1lLCBEdXJhdGlvbiB9IGZyb20gXCJsdXhvblwiO1xuaW1wb3J0ICogYXMgUCBmcm9tIFwicGFyc2ltbW9uXCI7XG5pbXBvcnQge1xuICAgIEJpbmFyeU9wLFxuICAgIEV4cHJlc3Npb24sXG4gICAgRXhwcmVzc2lvbnMsXG4gICAgTGFtYmRhRXhwcmVzc2lvbixcbiAgICBMaXN0RXhwcmVzc2lvbixcbiAgICBMaXRlcmFsRXhwcmVzc2lvbixcbiAgICBPYmplY3RFeHByZXNzaW9uLFxuICAgIFZhcmlhYmxlRXhwcmVzc2lvbixcbn0gZnJvbSBcIi4vZXhwcmVzc2lvblwiO1xuaW1wb3J0IGVtb2ppUmVnZXggZnJvbSBcImVtb2ppLXJlZ2V4XCI7XG5pbXBvcnQge1xuICAgIEluZGV4Q2hpbGRPZixcbiAgICBJbmRleFBhdGgsXG4gICAgSW5kZXhJZCxcbiAgICBJbmRleE5vdCxcbiAgICBJbmRleFBhcmVudE9mLFxuICAgIEluZGV4UXVlcnksXG4gICAgSW5kZXhUYWdnZWQsXG4gICAgSW5kZXhUeXBlZCxcbiAgICBJbmRleExpbmtlZCxcbiAgICBJbmRleEZpZWxkLFxuICAgIEluZGV4RXhwcmVzc2lvbixcbn0gZnJvbSBcImluZGV4L3R5cGVzL2luZGV4LXF1ZXJ5XCI7XG5pbXBvcnQgeyBub3JtYWxpemVEdXJhdGlvbiB9IGZyb20gXCJ1dGlscy9ub3JtYWxpemVyc1wiO1xuaW1wb3J0IHsgTGl0ZXJhbCB9IGZyb20gXCJleHByZXNzaW9uL2xpdGVyYWxcIjtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBQYXJzaW5nIFByaW1pdGl2ZXMgLy9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4vKiogUHJpbWl0aXZlIHBhcnNpbmcgZm9yIGNvbW1vbmx5IHNlZW4gdHlwZXMuICovXG5leHBvcnQgaW50ZXJmYWNlIFByaW1pdGl2ZXNMYW5ndWFnZSB7XG4gICAgbnVtYmVyOiBudW1iZXI7XG4gICAgc3RyaW5nOiBzdHJpbmc7XG4gICAgZXNjYXBlQ2hhcmFjdGVyOiBzdHJpbmc7XG4gICAgYm9vbDogYm9vbGVhbjtcbiAgICB0YWc6IHN0cmluZztcbiAgICBpZGVudGlmaWVyOiBzdHJpbmc7XG4gICAgbGluazogTGluaztcbiAgICBlbWJlZExpbms6IExpbms7XG4gICAgcm9vdERhdGU6IERhdGVUaW1lO1xuICAgIGRhdGVTaG9ydGhhbmQ6IGtleW9mIHR5cGVvZiBEQVRFX1NIT1JUSEFORFM7XG4gICAgZGF0ZTogRGF0ZVRpbWU7XG4gICAgZGF0ZVBsdXM6IERhdGVUaW1lO1xuICAgIGR1cmF0aW9uVHlwZToga2V5b2YgdHlwZW9mIERVUkFUSU9OX1RZUEVTO1xuICAgIGR1cmF0aW9uOiBEdXJhdGlvbjtcbiAgICByYXdOdWxsOiBzdHJpbmc7XG5cbiAgICBiaW5hcnlQbHVzTWludXM6IEJpbmFyeU9wO1xuICAgIGJpbmFyeU11bERpdjogQmluYXJ5T3A7XG4gICAgYmluYXJ5Q29tcGFyZU9wOiBCaW5hcnlPcDtcbiAgICBiaW5hcnlBbmRPcDogQmluYXJ5T3A7XG4gICAgYmluYXJ5T3JPcDogQmluYXJ5T3A7XG5cbiAgICAvLyBMaXRlcmFsIGZpZWxkIHBhcnNpbmcgZm9yIGluZ2VzdGluZyBpbmxpbmUgZmllbGRzIGFuZCBmcm9udG1hdHRlci5cbiAgICBhdG9tSW5saW5lRmllbGQ6IExpdGVyYWw7XG4gICAgaW5saW5lRmllbGRMaXN0OiBMaXRlcmFsW107XG4gICAgaW5saW5lRmllbGQ6IExpdGVyYWw7XG59XG5cbi8qKiBJbXBsZW1lbnRhdGlvbnMgZm9yIG1hbnkgcHJpbWl0aXZlcy4gKi9cbmV4cG9ydCBjb25zdCBQUklNSVRJVkVTID0gUC5jcmVhdGVMYW5ndWFnZTxQcmltaXRpdmVzTGFuZ3VhZ2U+KHtcbiAgICBudW1iZXI6IChfKSA9PlxuICAgICAgICBQLnJlZ2V4cCgvLT9bMC05XSsoXFwuWzAtOV0rKT8vKVxuICAgICAgICAgICAgLm1hcCgoc3RyKSA9PiBOdW1iZXIucGFyc2VGbG9hdChzdHIpKVxuICAgICAgICAgICAgLmRlc2MoXCJudW1iZXJcIiksXG5cbiAgICAvLyBBIHF1b3RlLXN1cnJvdW5kZWQgc3RyaW5nIHdoaWNoIHN1cHBvcnRzIGVzY2FwZSBjaGFyYWN0ZXJzICgnXFwnKS5cbiAgICBzdHJpbmc6IChxKSA9PlxuICAgICAgICBQLnN0cmluZygnXCInKVxuICAgICAgICAgICAgLnRoZW4oXG4gICAgICAgICAgICAgICAgUC5hbHQocS5lc2NhcGVDaGFyYWN0ZXIsIFAubm9uZU9mKCdcIlxcXFwnKSlcbiAgICAgICAgICAgICAgICAgICAgLmF0TGVhc3QoMClcbiAgICAgICAgICAgICAgICAgICAgLm1hcCgoY2hhcnMpID0+IGNoYXJzLmpvaW4oXCJcIikpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc2tpcChQLnN0cmluZygnXCInKSlcbiAgICAgICAgICAgIC5kZXNjKFwic3RyaW5nXCIpLFxuXG4gICAgZXNjYXBlQ2hhcmFjdGVyOiAoXykgPT5cbiAgICAgICAgUC5zdHJpbmcoXCJcXFxcXCIpXG4gICAgICAgICAgICAudGhlbihQLmFueSlcbiAgICAgICAgICAgIC5tYXAoKGVzY2FwZWQpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBJZiB3ZSBhcmUgZXNjYXBpbmcgYSBiYWNrc2xhc2ggb3IgYSBxdW90ZSwgcGFzcyBpbiBvbiBpbiBlc2NhcGVkIGZvcm1cbiAgICAgICAgICAgICAgICBpZiAoZXNjYXBlZCA9PT0gJ1wiJykgcmV0dXJuICdcIic7XG4gICAgICAgICAgICAgICAgaWYgKGVzY2FwZWQgPT09IFwiXFxcXFwiKSByZXR1cm4gXCJcXFxcXCI7XG4gICAgICAgICAgICAgICAgZWxzZSByZXR1cm4gXCJcXFxcXCIgKyBlc2NhcGVkO1xuICAgICAgICAgICAgfSksXG5cbiAgICAvLyBBIGJvb2xlYW4gdHJ1ZS9mYWxzZSB2YWx1ZS5cbiAgICBib29sOiAoXykgPT5cbiAgICAgICAgUC5yZWdleHAoL3RydWV8ZmFsc2V8VHJ1ZXxGYWxzZS8pXG4gICAgICAgICAgICAubWFwKChzdHIpID0+IHN0ci50b0xvd2VyQ2FzZSgpID09IFwidHJ1ZVwiKVxuICAgICAgICAgICAgLmRlc2MoXCJib29sZWFuXCIpLFxuXG4gICAgLy8gQSB0YWcgb2YgdGhlIGZvcm0gJyNzdHVmZi9oZWxsby10aGVyZScuXG4gICAgdGFnOiAoXykgPT5cbiAgICAgICAgUC5zZXFNYXAoXG4gICAgICAgICAgICBQLnN0cmluZyhcIiNcIiksXG4gICAgICAgICAgICBQLmFsdChQLnJlZ2V4cCgvW15cXHUyMDAwLVxcdTIwNkZcXHUyRTAwLVxcdTJFN0YnIVwiIyQlJigpKissLjo7PD0+P0BeYHt8fX5cXFtcXF1cXFxcXFxzXS8pLmRlc2MoXCJ0ZXh0XCIpKS5tYW55KCksXG4gICAgICAgICAgICAoc3RhcnQsIHJlc3QpID0+IHN0YXJ0ICsgcmVzdC5qb2luKFwiXCIpXG4gICAgICAgICkuZGVzYyhcInRhZ1wiKSxcblxuICAgIC8vIEEgdmFyaWFibGUgaWRlbnRpZmllciwgd2hpY2ggaXMgYWxwaGFudW1lcmljIGFuZCBtdXN0IHN0YXJ0IHdpdGggYSBsZXR0ZXIgb3IuLi4gZW1vamkuXG4gICAgaWRlbnRpZmllcjogKF8pID0+XG4gICAgICAgIFAuc2VxTWFwKFxuICAgICAgICAgICAgUC5hbHQoUC5yZWdleHAoL1tcXHB7TGV0dGVyfSRdL3UpLCBQLnJlZ2V4cChFTU9KSV9SRUdFWCkuZGVzYyhcInRleHRcIikpLFxuICAgICAgICAgICAgUC5hbHQoUC5yZWdleHAoL1swLTlcXHB7TGV0dGVyfSRfLV0vdSksIFAucmVnZXhwKEVNT0pJX1JFR0VYKS5kZXNjKFwidGV4dFwiKSkubWFueSgpLFxuICAgICAgICAgICAgKGZpcnN0LCByZXN0KSA9PiBmaXJzdCArIHJlc3Quam9pbihcIlwiKVxuICAgICAgICApLmRlc2MoXCJ2YXJpYWJsZVwiKSxcblxuICAgIC8vIEFuIE9ic2lkaWFuIGxpbmsgb2YgdGhlIGZvcm0gW1s8bGluaz5dXS5cbiAgICBsaW5rOiAoXykgPT5cbiAgICAgICAgUC5yZWdleHAoL1xcW1xcWyhbXlxcW1xcXV0qPylcXF1cXF0vdSwgMSlcbiAgICAgICAgICAgIC5tYXAoKGxpbmtJbm5lcikgPT4gTGluay5wYXJzZUlubmVyKGxpbmtJbm5lcikpXG4gICAgICAgICAgICAuZGVzYyhcImZpbGUgbGlua1wiKSxcblxuICAgIC8vIEFuIGVtYmVkZGFibGUgbGluayB3aGljaCBjYW4gc3RhcnQgd2l0aCAnIScuIFRoaXMgb3ZlcmxhcHMgd2l0aCB0aGUgbm9ybWFsIG5lZ2F0aW9uIG9wZXJhdG9yLCBzbyBpdCBpcyBvbmx5XG4gICAgLy8gcHJvdmlkZWQgZm9yIG1ldGFkYXRhIHBhcnNpbmcuXG4gICAgZW1iZWRMaW5rOiAocSkgPT5cbiAgICAgICAgUC5zZXFNYXAoUC5zdHJpbmcoXCIhXCIpLmF0TW9zdCgxKSwgcS5saW5rLCAocCwgbCkgPT4ge1xuICAgICAgICAgICAgaWYgKHAubGVuZ3RoID4gMCkgbC5lbWJlZCA9IHRydWU7XG4gICAgICAgICAgICByZXR1cm4gbDtcbiAgICAgICAgfSkuZGVzYyhcImZpbGUgbGlua1wiKSxcblxuICAgIC8vIEJpbmFyeSBwbHVzIG9yIG1pbnVzIG9wZXJhdG9yLlxuICAgIGJpbmFyeVBsdXNNaW51czogKF8pID0+XG4gICAgICAgIFAucmVnZXhwKC9cXCt8LS8pXG4gICAgICAgICAgICAubWFwKChzdHIpID0+IHN0ciBhcyBCaW5hcnlPcClcbiAgICAgICAgICAgIC5kZXNjKFwiJysnIG9yICctJ1wiKSxcblxuICAgIC8vIEJpbmFyeSB0aW1lcyBvciBkaXZpZGUgb3BlcmF0b3IuXG4gICAgYmluYXJ5TXVsRGl2OiAoXykgPT5cbiAgICAgICAgUC5yZWdleHAoL1xcKnxcXC98JS8pXG4gICAgICAgICAgICAubWFwKChzdHIpID0+IHN0ciBhcyBCaW5hcnlPcClcbiAgICAgICAgICAgIC5kZXNjKFwiJyonIG9yICcvJyBvciAnJSdcIiksXG5cbiAgICAvLyBCaW5hcnkgY29tcGFyaXNvbiBvcGVyYXRvci5cbiAgICBiaW5hcnlDb21wYXJlT3A6IChfKSA9PlxuICAgICAgICBQLnJlZ2V4cCgvPj18PD18IT18Pnw8fD0vKVxuICAgICAgICAgICAgLm1hcCgoc3RyKSA9PiBzdHIgYXMgQmluYXJ5T3ApXG4gICAgICAgICAgICAuZGVzYyhcIic+PScgb3IgJzw9JyBvciAnIT0nIG9yICc9JyBvciAnPicgb3IgJzwnXCIpLFxuXG4gICAgLy8gQmluYXJ5IGJvb2xlYW4gY29tYmluYXRpb24gb3BlcmF0b3IuXG4gICAgYmluYXJ5QW5kT3A6IChfKSA9PlxuICAgICAgICBQLnJlZ2V4cCgvYW5kfCYvaSlcbiAgICAgICAgICAgIC5tYXAoKF9zdHIpID0+IFwiJlwiIGFzIEJpbmFyeU9wKVxuICAgICAgICAgICAgLmRlc2MoXCInYW5kJ1wiKSxcbiAgICBiaW5hcnlPck9wOiAoXykgPT5cbiAgICAgICAgUC5yZWdleHAoL29yfFxcfC9pKVxuICAgICAgICAgICAgLm1hcCgoX3N0cikgPT4gXCJ8XCIgYXMgQmluYXJ5T3ApXG4gICAgICAgICAgICAuZGVzYyhcIidvcidcIiksXG5cbiAgICAvLyBBIGRhdGUgd2hpY2ggY2FuIGJlIFlZWVktTU1bLUREVEhIOm1tOnNzXS5cbiAgICByb290RGF0ZTogKF8pID0+XG4gICAgICAgIFAuc2VxTWFwKFAucmVnZXhwKC9cXGR7NH0vKSwgUC5zdHJpbmcoXCItXCIpLCBQLnJlZ2V4cCgvXFxkezJ9LyksICh5ZWFyLCBfLCBtb250aCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIERhdGVUaW1lLmZyb21PYmplY3QoeyB5ZWFyOiBOdW1iZXIucGFyc2VJbnQoeWVhciksIG1vbnRoOiBOdW1iZXIucGFyc2VJbnQobW9udGgpIH0pO1xuICAgICAgICB9KS5kZXNjKFwiZGF0ZSBpbiBmb3JtYXQgWVlZWS1NTVstRERUSEgtTU0tU1MuTVNdXCIpLFxuICAgIGRhdGVTaG9ydGhhbmQ6IChfKSA9PlxuICAgICAgICBQLmFsdChcbiAgICAgICAgICAgIC4uLk9iamVjdC5rZXlzKERBVEVfU0hPUlRIQU5EUylcbiAgICAgICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYi5sZW5ndGggLSBhLmxlbmd0aClcbiAgICAgICAgICAgICAgICAubWFwKFAuc3RyaW5nKVxuICAgICAgICApIGFzIFAuUGFyc2VyPGtleW9mIHR5cGVvZiBEQVRFX1NIT1JUSEFORFM+LFxuICAgIGRhdGU6IChxKSA9PlxuICAgICAgICBjaGFpbk9wdDxEYXRlVGltZT4oXG4gICAgICAgICAgICBxLnJvb3REYXRlLFxuICAgICAgICAgICAgKHltOiBEYXRlVGltZSkgPT5cbiAgICAgICAgICAgICAgICBQLnNlcU1hcChQLnN0cmluZyhcIi1cIiksIFAucmVnZXhwKC9cXGR7Mn0vKSwgKF8sIGRheSkgPT4geW0uc2V0KHsgZGF5OiBOdW1iZXIucGFyc2VJbnQoZGF5KSB9KSksXG4gICAgICAgICAgICAoeW1kOiBEYXRlVGltZSkgPT5cbiAgICAgICAgICAgICAgICBQLnNlcU1hcChQLnN0cmluZyhcIlRcIiksIFAucmVnZXhwKC9cXGR7Mn0vKSwgKF8sIGhvdXIpID0+IHltZC5zZXQoeyBob3VyOiBOdW1iZXIucGFyc2VJbnQoaG91cikgfSkpLFxuICAgICAgICAgICAgKHltZGg6IERhdGVUaW1lKSA9PlxuICAgICAgICAgICAgICAgIFAuc2VxTWFwKFAuc3RyaW5nKFwiOlwiKSwgUC5yZWdleHAoL1xcZHsyfS8pLCAoXywgbWludXRlKSA9PlxuICAgICAgICAgICAgICAgICAgICB5bWRoLnNldCh7IG1pbnV0ZTogTnVtYmVyLnBhcnNlSW50KG1pbnV0ZSkgfSlcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKHltZGhtOiBEYXRlVGltZSkgPT5cbiAgICAgICAgICAgICAgICBQLnNlcU1hcChQLnN0cmluZyhcIjpcIiksIFAucmVnZXhwKC9cXGR7Mn0vKSwgKF8sIHNlY29uZCkgPT5cbiAgICAgICAgICAgICAgICAgICAgeW1kaG0uc2V0KHsgc2Vjb25kOiBOdW1iZXIucGFyc2VJbnQoc2Vjb25kKSB9KVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAoeW1kaG1zOiBEYXRlVGltZSkgPT5cbiAgICAgICAgICAgICAgICBQLmFsdChcbiAgICAgICAgICAgICAgICAgICAgUC5zZXFNYXAoUC5zdHJpbmcoXCIuXCIpLCBQLnJlZ2V4cCgvXFxkezN9LyksIChfLCBtaWxsaXNlY29uZCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHltZGhtcy5zZXQoeyBtaWxsaXNlY29uZDogTnVtYmVyLnBhcnNlSW50KG1pbGxpc2Vjb25kKSB9KVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBQLnN1Y2NlZWQoeW1kaG1zKSAvLyBwYXNzXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIChkdDogRGF0ZVRpbWUpID0+XG4gICAgICAgICAgICAgICAgUC5hbHQoXG4gICAgICAgICAgICAgICAgICAgIFAuc2VxTWFwKFAuc3RyaW5nKFwiK1wiKS5vcihQLnN0cmluZyhcIi1cIikpLCBQLnJlZ2V4cCgvXFxkezEsMn0oOlxcZHsyfSk/LyksIChwbSwgaHIpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBkdC5zZXRab25lKFwiVVRDXCIgKyBwbSArIGhyLCB7IGtlZXBMb2NhbFRpbWU6IHRydWUgfSlcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgUC5zZXFNYXAoUC5zdHJpbmcoXCJaXCIpLCAoKSA9PiBkdC5zZXRab25lKFwidXRjXCIsIHsga2VlcExvY2FsVGltZTogdHJ1ZSB9KSksXG4gICAgICAgICAgICAgICAgICAgIFAuc2VxTWFwKFAuc3RyaW5nKFwiW1wiKSwgUC5yZWdleHAoL1swLTlBLVphLXorLVxcL10rL3UpLCBQLnN0cmluZyhcIl1cIiksIChfYSwgem9uZSwgX2IpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBkdC5zZXRab25lKHpvbmUsIHsga2VlcExvY2FsVGltZTogdHJ1ZSB9KVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICApXG4gICAgICAgICAgICAuYXNzZXJ0KChkdDogRGF0ZVRpbWUpID0+IGR0LmlzVmFsaWQsIFwidmFsaWQgZGF0ZVwiKVxuICAgICAgICAgICAgLmRlc2MoXCJkYXRlIGluIGZvcm1hdCBZWVlZLU1NWy1ERFRISC1NTS1TUy5NU11cIiksXG5cbiAgICAvLyBBIGRhdGUsIHBsdXMgdmFyaW91cyBzaG9ydGhhbmQgdGltZXMgb2YgZGF5IGl0IGNvdWxkIGJlLlxuICAgIGRhdGVQbHVzOiAocSkgPT5cbiAgICAgICAgUC5hbHQ8RGF0ZVRpbWU+KFxuICAgICAgICAgICAgcS5kYXRlU2hvcnRoYW5kLm1hcCgoZCkgPT4gREFURV9TSE9SVEhBTkRTW2RdKCkpLFxuICAgICAgICAgICAgcS5kYXRlXG4gICAgICAgICkuZGVzYyhcImRhdGUgaW4gZm9ybWF0IFlZWVktTU1bLUREVEhILU1NLVNTLk1TXSBvciBpbiBzaG9ydGhhbmRcIiksXG5cbiAgICAvLyBBIGR1cmF0aW9uIG9mIHRpbWUuXG4gICAgZHVyYXRpb25UeXBlOiAoXykgPT5cbiAgICAgICAgUC5hbHQoXG4gICAgICAgICAgICAuLi5PYmplY3Qua2V5cyhEVVJBVElPTl9UWVBFUylcbiAgICAgICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYi5sZW5ndGggLSBhLmxlbmd0aClcbiAgICAgICAgICAgICAgICAubWFwKFAuc3RyaW5nKVxuICAgICAgICApIGFzIFAuUGFyc2VyPGtleW9mIHR5cGVvZiBEVVJBVElPTl9UWVBFUz4sXG4gICAgZHVyYXRpb246IChxKSA9PlxuICAgICAgICBQLnNlcU1hcChxLm51bWJlciwgUC5vcHRXaGl0ZXNwYWNlLCBxLmR1cmF0aW9uVHlwZSwgKGNvdW50LCBfLCB0KSA9PlxuICAgICAgICAgICAgRFVSQVRJT05fVFlQRVNbdF0ubWFwVW5pdHMoKHgpID0+IHggKiBjb3VudClcbiAgICAgICAgKVxuICAgICAgICAgICAgLnNlcEJ5MShQLnN0cmluZyhcIixcIikudHJpbShQLm9wdFdoaXRlc3BhY2UpLm9yKFAub3B0V2hpdGVzcGFjZSkpXG4gICAgICAgICAgICAubWFwKChkdXJhdGlvbnMpID0+IGR1cmF0aW9ucy5yZWR1Y2UoKHAsIGMpID0+IHAucGx1cyhjKSkpXG4gICAgICAgICAgICAuZGVzYyhcImR1cmF0aW9uIGxpa2UgNGhyMm1pblwiKSxcblxuICAgIC8vIEEgcmF3IG51bGwgdmFsdWUuXG4gICAgcmF3TnVsbDogKF8pID0+IFAuc3RyaW5nKFwibnVsbFwiKSxcblxuICAgIC8vIElubGluZSBmaWVsZCB2YWx1ZSBwYXJzaW5nLlxuICAgIGF0b21JbmxpbmVGaWVsZDogKHEpID0+XG4gICAgICAgIFAuYWx0KFxuICAgICAgICAgICAgcS5kYXRlLFxuICAgICAgICAgICAgcS5kdXJhdGlvbi5tYXAoKGQpID0+IG5vcm1hbGl6ZUR1cmF0aW9uKGQpKSxcbiAgICAgICAgICAgIHEuc3RyaW5nLFxuICAgICAgICAgICAgcS50YWcsXG4gICAgICAgICAgICBxLmVtYmVkTGluayxcbiAgICAgICAgICAgIHEuYm9vbCxcbiAgICAgICAgICAgIHEubnVtYmVyLFxuICAgICAgICAgICAgcS5yYXdOdWxsXG4gICAgICAgICksXG4gICAgaW5saW5lRmllbGRMaXN0OiAocSkgPT4gcS5hdG9tSW5saW5lRmllbGQuc2VwQnkoUC5zdHJpbmcoXCIsXCIpLnRyaW0oUC5vcHRXaGl0ZXNwYWNlKS5sb29rYWhlYWQocS5hdG9tSW5saW5lRmllbGQpKSxcbiAgICBpbmxpbmVGaWVsZDogKHEpID0+XG4gICAgICAgIFAuYWx0KFxuICAgICAgICAgICAgUC5zZXFNYXAocS5hdG9tSW5saW5lRmllbGQsIFAuc3RyaW5nKFwiLFwiKS50cmltKFAub3B0V2hpdGVzcGFjZSksIHEuaW5saW5lRmllbGRMaXN0LCAoZiwgX3MsIGwpID0+XG4gICAgICAgICAgICAgICAgW2ZdLmNvbmNhdChsKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHEuYXRvbUlubGluZUZpZWxkXG4gICAgICAgICksXG59KTtcblxuLyoqIEVtb2ppIHJlZ2V4LCBzdHJwcGluZyBhbnkgcmVnZXggZmxhZ3MgaXQgaGFzLiAqL1xuY29uc3QgRU1PSklfUkVHRVggPSBuZXcgUmVnRXhwKGVtb2ppUmVnZXgoKSwgXCJcIik7XG5cbi8qKiBQcm92aWRlcyBhIGxvb2t1cCB0YWJsZSBmb3IgdW5pdCBkdXJhdGlvbnMgb2YgdGhlIGdpdmVuIHR5cGUuICovXG5leHBvcnQgY29uc3QgRFVSQVRJT05fVFlQRVMgPSB7XG4gICAgeWVhcjogRHVyYXRpb24uZnJvbU9iamVjdCh7IHllYXJzOiAxIH0pLFxuICAgIHllYXJzOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgeWVhcnM6IDEgfSksXG4gICAgeXI6IER1cmF0aW9uLmZyb21PYmplY3QoeyB5ZWFyczogMSB9KSxcbiAgICB5cnM6IER1cmF0aW9uLmZyb21PYmplY3QoeyB5ZWFyczogMSB9KSxcblxuICAgIG1vbnRoOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgbW9udGhzOiAxIH0pLFxuICAgIG1vbnRoczogRHVyYXRpb24uZnJvbU9iamVjdCh7IG1vbnRoczogMSB9KSxcbiAgICBtbzogRHVyYXRpb24uZnJvbU9iamVjdCh7IG1vbnRoczogMSB9KSxcbiAgICBtb3M6IER1cmF0aW9uLmZyb21PYmplY3QoeyBtb250aHM6IDEgfSksXG5cbiAgICB3ZWVrOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgd2Vla3M6IDEgfSksXG4gICAgd2Vla3M6IER1cmF0aW9uLmZyb21PYmplY3QoeyB3ZWVrczogMSB9KSxcbiAgICB3azogRHVyYXRpb24uZnJvbU9iamVjdCh7IHdlZWtzOiAxIH0pLFxuICAgIHdrczogRHVyYXRpb24uZnJvbU9iamVjdCh7IHdlZWtzOiAxIH0pLFxuICAgIHc6IER1cmF0aW9uLmZyb21PYmplY3QoeyB3ZWVrczogMSB9KSxcblxuICAgIGRheTogRHVyYXRpb24uZnJvbU9iamVjdCh7IGRheXM6IDEgfSksXG4gICAgZGF5czogRHVyYXRpb24uZnJvbU9iamVjdCh7IGRheXM6IDEgfSksXG4gICAgZDogRHVyYXRpb24uZnJvbU9iamVjdCh7IGRheXM6IDEgfSksXG5cbiAgICBob3VyOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDEgfSksXG4gICAgaG91cnM6IER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMSB9KSxcbiAgICBocjogRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxIH0pLFxuICAgIGhyczogRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxIH0pLFxuICAgIGg6IER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMSB9KSxcblxuICAgIG1pbnV0ZTogRHVyYXRpb24uZnJvbU9iamVjdCh7IG1pbnV0ZXM6IDEgfSksXG4gICAgbWludXRlczogRHVyYXRpb24uZnJvbU9iamVjdCh7IG1pbnV0ZXM6IDEgfSksXG4gICAgbWluOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgbWludXRlczogMSB9KSxcbiAgICBtaW5zOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgbWludXRlczogMSB9KSxcbiAgICBtOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgbWludXRlczogMSB9KSxcblxuICAgIHNlY29uZDogRHVyYXRpb24uZnJvbU9iamVjdCh7IHNlY29uZHM6IDEgfSksXG4gICAgc2Vjb25kczogRHVyYXRpb24uZnJvbU9iamVjdCh7IHNlY29uZHM6IDEgfSksXG4gICAgc2VjOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgc2Vjb25kczogMSB9KSxcbiAgICBzZWNzOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgc2Vjb25kczogMSB9KSxcbiAgICBzOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgc2Vjb25kczogMSB9KSxcbn07XG5cbi8qKiBTaG9ydGhhbmQgZm9yIGNvbW1vbiBkYXRlcyAocmVsYXRpdmUgdG8gcmlnaHQgbm93KS4gKi9cbmV4cG9ydCBjb25zdCBEQVRFX1NIT1JUSEFORFMgPSB7XG4gICAgbm93OiAoKSA9PiBEYXRlVGltZS5sb2NhbCgpLFxuICAgIHRvZGF5OiAoKSA9PiBEYXRlVGltZS5sb2NhbCgpLnN0YXJ0T2YoXCJkYXlcIiksXG4gICAgeWVzdGVyZGF5OiAoKSA9PlxuICAgICAgICBEYXRlVGltZS5sb2NhbCgpXG4gICAgICAgICAgICAuc3RhcnRPZihcImRheVwiKVxuICAgICAgICAgICAgLm1pbnVzKER1cmF0aW9uLmZyb21PYmplY3QoeyBkYXlzOiAxIH0pKSxcbiAgICB0b21vcnJvdzogKCkgPT5cbiAgICAgICAgRGF0ZVRpbWUubG9jYWwoKVxuICAgICAgICAgICAgLnN0YXJ0T2YoXCJkYXlcIilcbiAgICAgICAgICAgIC5wbHVzKER1cmF0aW9uLmZyb21PYmplY3QoeyBkYXlzOiAxIH0pKSxcbiAgICBzb3c6ICgpID0+IERhdGVUaW1lLmxvY2FsKCkuc3RhcnRPZihcIndlZWtcIiksXG4gICAgXCJzdGFydC1vZi13ZWVrXCI6ICgpID0+IERhdGVUaW1lLmxvY2FsKCkuc3RhcnRPZihcIndlZWtcIiksXG4gICAgZW93OiAoKSA9PiBEYXRlVGltZS5sb2NhbCgpLmVuZE9mKFwid2Vla1wiKSxcbiAgICBcImVuZC1vZi13ZWVrXCI6ICgpID0+IERhdGVUaW1lLmxvY2FsKCkuZW5kT2YoXCJ3ZWVrXCIpLFxuICAgIHNveTogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5zdGFydE9mKFwieWVhclwiKSxcbiAgICBcInN0YXJ0LW9mLXllYXJcIjogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5zdGFydE9mKFwieWVhclwiKSxcbiAgICBlb3k6ICgpID0+IERhdGVUaW1lLmxvY2FsKCkuZW5kT2YoXCJ5ZWFyXCIpLFxuICAgIFwiZW5kLW9mLXllYXJcIjogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5lbmRPZihcInllYXJcIiksXG4gICAgc29tOiAoKSA9PiBEYXRlVGltZS5sb2NhbCgpLnN0YXJ0T2YoXCJtb250aFwiKSxcbiAgICBcInN0YXJ0LW9mLW1vbnRoXCI6ICgpID0+IERhdGVUaW1lLmxvY2FsKCkuc3RhcnRPZihcIm1vbnRoXCIpLFxuICAgIGVvbTogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5lbmRPZihcIm1vbnRoXCIpLFxuICAgIFwiZW5kLW9mLW1vbnRoXCI6ICgpID0+IERhdGVUaW1lLmxvY2FsKCkuZW5kT2YoXCJtb250aFwiKSxcbn07XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEV4cHJlc3Npb24gTGFuZ3VhZ2UgLy9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuZXhwb3J0IHR5cGUgUG9zdGZpeEZyYWdtZW50ID1cbiAgICB8IHsgdHlwZTogXCJkb3RcIjsgZXhwcjogc3RyaW5nIH1cbiAgICB8IHsgdHlwZTogXCJpbmRleFwiOyBleHByOiBFeHByZXNzaW9uIH1cbiAgICB8IHsgdHlwZTogXCJmdW5jdGlvblwiOyBleHByczogRXhwcmVzc2lvbltdIH07XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXhwcmVzc2lvbkxhbmd1YWdlIHtcbiAgICB2YXJpYWJsZTogVmFyaWFibGVFeHByZXNzaW9uO1xuICAgIG51bWJlcjogTGl0ZXJhbEV4cHJlc3Npb247XG4gICAgYm9vbDogTGl0ZXJhbEV4cHJlc3Npb247XG4gICAgc3RyaW5nOiBMaXRlcmFsRXhwcmVzc2lvbjtcbiAgICBkYXRlOiBMaXRlcmFsRXhwcmVzc2lvbjtcbiAgICBkdXJhdGlvbjogTGl0ZXJhbEV4cHJlc3Npb247XG4gICAgbGluazogTGl0ZXJhbEV4cHJlc3Npb247XG4gICAgbnVsbDogTGl0ZXJhbEV4cHJlc3Npb247XG5cbiAgICBsaXN0OiBMaXN0RXhwcmVzc2lvbjtcbiAgICBvYmplY3Q6IE9iamVjdEV4cHJlc3Npb247XG5cbiAgICBuZWdhdGVkOiBFeHByZXNzaW9uO1xuICAgIGF0b206IEV4cHJlc3Npb247XG4gICAgaW5kZXg6IEV4cHJlc3Npb247XG4gICAgbGFtYmRhOiBMYW1iZGFFeHByZXNzaW9uO1xuXG4gICAgLy8gUG9zdGZpeCBwYXJzZXJzIGZvciBmdW5jdGlvbiBjYWxscyAmIHRoZSBsaWtlLlxuICAgIGRvdFBvc3RmaXg6IFBvc3RmaXhGcmFnbWVudDtcbiAgICBpbmRleFBvc3RmaXg6IFBvc3RmaXhGcmFnbWVudDtcbiAgICBmdW5jdGlvblBvc3RmaXg6IFBvc3RmaXhGcmFnbWVudDtcblxuICAgIC8vIEJpbmFyeSBvcCBwYXJzZXJzLlxuICAgIGJpbmFyeU11bERpdjogRXhwcmVzc2lvbjtcbiAgICBiaW5hcnlQbHVzTWludXM6IEV4cHJlc3Npb247XG4gICAgYmluYXJ5Q29tcGFyZTogRXhwcmVzc2lvbjtcbiAgICBiaW5hcnlCb29sZWFuOiBFeHByZXNzaW9uO1xuICAgIGJpbmFyeU9wOiBFeHByZXNzaW9uO1xuICAgIHBhcmVuczogRXhwcmVzc2lvbjtcbiAgICBleHByZXNzaW9uOiBFeHByZXNzaW9uO1xufVxuXG4vKipcbiAqIFBhcnNlIGZvciB0aGUgZGF0YWNvcmUgZXhwcmVzc2lvbiBsYW5ndWFnZSwgd2hpY2ggcHJvdmlkZXMgc2ltcGxlIGFuZCB2YWd1ZWx5IEpTLWxvb2tpbmcgY29tcHV0YXRpb24uXG4gKi9cbmV4cG9ydCBjb25zdCBFWFBSRVNTSU9OID0gUC5jcmVhdGVMYW5ndWFnZTxFeHByZXNzaW9uTGFuZ3VhZ2U+KHtcbiAgICAvLyBGaWVsZCBwYXJzaW5nLlxuICAgIHZhcmlhYmxlOiAoXykgPT4gUFJJTUlUSVZFUy5pZGVudGlmaWVyLm1hcChFeHByZXNzaW9ucy52YXJpYWJsZSkuZGVzYyhcInZhcmlhYmxlXCIpLFxuICAgIG51bWJlcjogKF8pID0+IFBSSU1JVElWRVMubnVtYmVyLm1hcChFeHByZXNzaW9ucy5saXRlcmFsKS5kZXNjKFwibnVtYmVyXCIpLFxuICAgIHN0cmluZzogKF8pID0+IFBSSU1JVElWRVMuc3RyaW5nLm1hcChFeHByZXNzaW9ucy5saXRlcmFsKS5kZXNjKFwic3RyaW5nXCIpLFxuICAgIGJvb2w6IChfKSA9PiBQUklNSVRJVkVTLmJvb2wubWFwKEV4cHJlc3Npb25zLmxpdGVyYWwpLmRlc2MoXCJib29sZWFuXCIpLFxuICAgIGRhdGU6IChfKSA9PlxuICAgICAgICBjcmVhdGVGdW5jdGlvbihcImRhdGVcIiwgUFJJTUlUSVZFUy5kYXRlUGx1cylcbiAgICAgICAgICAgIC5tYXAoKFtfZnVuYywgZGF0ZV0pID0+IEV4cHJlc3Npb25zLmxpdGVyYWwoZGF0ZSkpXG4gICAgICAgICAgICAuZGVzYyhcImRhdGVcIiksXG4gICAgZHVyYXRpb246IChfKSA9PlxuICAgICAgICBjcmVhdGVGdW5jdGlvbihcImR1clwiLCBQUklNSVRJVkVTLmR1cmF0aW9uKVxuICAgICAgICAgICAgLm1hcCgoW19mdW5jLCBkdXJdKSA9PiBFeHByZXNzaW9ucy5saXRlcmFsKGR1cikpXG4gICAgICAgICAgICAuZGVzYyhcImR1cmF0aW9uXCIpLFxuICAgIG51bGw6IChfKSA9PiBQUklNSVRJVkVTLnJhd051bGwubWFwKChfKSA9PiBFeHByZXNzaW9ucy5OVUxMKSxcbiAgICBsaW5rOiAoXykgPT4gUFJJTUlUSVZFUy5saW5rLm1hcChFeHByZXNzaW9ucy5saXRlcmFsKSxcbiAgICBsaXN0OiAocSkgPT5cbiAgICAgICAgcS5leHByZXNzaW9uXG4gICAgICAgICAgICAuc2VwQnkoUC5zdHJpbmcoXCIsXCIpLnRyaW0oUC5vcHRXaGl0ZXNwYWNlKSlcbiAgICAgICAgICAgIC53cmFwKFAuc3RyaW5nKFwiW1wiKS5za2lwKFAub3B0V2hpdGVzcGFjZSksIFAub3B0V2hpdGVzcGFjZS50aGVuKFAuc3RyaW5nKFwiXVwiKSkpXG4gICAgICAgICAgICAubWFwKChsKSA9PiBFeHByZXNzaW9ucy5saXN0KGwpKVxuICAgICAgICAgICAgLmRlc2MoXCJsaXN0XCIpLFxuICAgIG9iamVjdDogKHEpID0+XG4gICAgICAgIFAuc2VxTWFwKFxuICAgICAgICAgICAgUFJJTUlUSVZFUy5pZGVudGlmaWVyLm9yKFBSSU1JVElWRVMuc3RyaW5nKSxcbiAgICAgICAgICAgIFAuc3RyaW5nKFwiOlwiKS50cmltKFAub3B0V2hpdGVzcGFjZSksXG4gICAgICAgICAgICBxLmV4cHJlc3Npb24sXG4gICAgICAgICAgICAobmFtZSwgX3NlcCwgdmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyBuYW1lLCB2YWx1ZSB9O1xuICAgICAgICAgICAgfVxuICAgICAgICApXG4gICAgICAgICAgICAuc2VwQnkoUC5zdHJpbmcoXCIsXCIpLnRyaW0oUC5vcHRXaGl0ZXNwYWNlKSlcbiAgICAgICAgICAgIC53cmFwKFAuc3RyaW5nKFwie1wiKS5za2lwKFAub3B0V2hpdGVzcGFjZSksIFAub3B0V2hpdGVzcGFjZS50aGVuKFAuc3RyaW5nKFwifVwiKSkpXG4gICAgICAgICAgICAubWFwKCh2YWxzKSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IHJlczogUmVjb3JkPHN0cmluZywgRXhwcmVzc2lvbj4gPSB7fTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBlbnRyeSBvZiB2YWxzKSByZXNbZW50cnkubmFtZV0gPSBlbnRyeS52YWx1ZTtcbiAgICAgICAgICAgICAgICByZXR1cm4gRXhwcmVzc2lvbnMub2JqZWN0KHJlcyk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmRlc2MoXCJvYmplY3QgKCd7IGE6IDEsIGI6IDIgfScpXCIpLFxuXG4gICAgYXRvbTogKHEpID0+XG4gICAgICAgIFAuYWx0KFxuICAgICAgICAgICAgLy8gUGxhY2UgZW1iZWQgbGlua3MgYWJvdmUgbmVnYXRlZCBmaWVsZHMgYXMgdGhleSBhcmUgdGhlIHNwZWNpYWwgcGFyc2VyIGNhc2UgJyFbW3RoaW5nXV0nIGFuZCBhcmUgZ2VuZXJhbGx5IHVuYW1iaWdpb3VzLlxuICAgICAgICAgICAgUFJJTUlUSVZFUy5lbWJlZExpbmsubWFwKChsKSA9PiBFeHByZXNzaW9ucy5saXRlcmFsKGwpKSxcbiAgICAgICAgICAgIHEubmVnYXRlZCxcbiAgICAgICAgICAgIHEubGluayxcbiAgICAgICAgICAgIHEubGlzdCxcbiAgICAgICAgICAgIHEub2JqZWN0LFxuICAgICAgICAgICAgcS5sYW1iZGEsXG4gICAgICAgICAgICBxLnBhcmVucyxcbiAgICAgICAgICAgIHEuYm9vbCxcbiAgICAgICAgICAgIHEubnVtYmVyLFxuICAgICAgICAgICAgcS5zdHJpbmcsXG4gICAgICAgICAgICBxLmRhdGUsXG4gICAgICAgICAgICBxLmR1cmF0aW9uLFxuICAgICAgICAgICAgcS5udWxsLFxuICAgICAgICAgICAgcS52YXJpYWJsZVxuICAgICAgICApLFxuICAgIGluZGV4OiAocSkgPT5cbiAgICAgICAgUC5zZXFNYXAocS5hdG9tLCBQLmFsdChxLmRvdFBvc3RmaXgsIHEuaW5kZXhQb3N0Zml4LCBxLmZ1bmN0aW9uUG9zdGZpeCkubWFueSgpLCAob2JqLCBwb3N0Zml4ZXMpID0+IHtcbiAgICAgICAgICAgIGxldCByZXN1bHQgPSBvYmo7XG4gICAgICAgICAgICBmb3IgKGxldCBwb3N0IG9mIHBvc3RmaXhlcykge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAocG9zdC50eXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJkb3RcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IEV4cHJlc3Npb25zLmluZGV4KHJlc3VsdCwgRXhwcmVzc2lvbnMubGl0ZXJhbChwb3N0LmV4cHIpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFwiaW5kZXhcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IEV4cHJlc3Npb25zLmluZGV4KHJlc3VsdCwgcG9zdC5leHByKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFwiZnVuY3Rpb25cIjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IEV4cHJlc3Npb25zLmZ1bmMocmVzdWx0LCBwb3N0LmV4cHJzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSksXG4gICAgbmVnYXRlZDogKHEpID0+IFAuc2VxTWFwKFAuc3RyaW5nKFwiIVwiKSwgcS5pbmRleCwgKF8sIGZpZWxkKSA9PiBFeHByZXNzaW9ucy5uZWdhdGUoZmllbGQpKS5kZXNjKFwibmVnYXRlZCBmaWVsZFwiKSxcbiAgICBwYXJlbnM6IChxKSA9PiBxLmV4cHJlc3Npb24udHJpbShQLm9wdFdoaXRlc3BhY2UpLndyYXAoUC5zdHJpbmcoXCIoXCIpLCBQLnN0cmluZyhcIilcIikpLFxuICAgIGxhbWJkYTogKHEpID0+XG4gICAgICAgIFAuc2VxTWFwKFxuICAgICAgICAgICAgUFJJTUlUSVZFUy5pZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgLnNlcEJ5KFAuc3RyaW5nKFwiLFwiKS50cmltKFAub3B0V2hpdGVzcGFjZSkpXG4gICAgICAgICAgICAgICAgLndyYXAoUC5zdHJpbmcoXCIoXCIpLnRyaW0oUC5vcHRXaGl0ZXNwYWNlKSwgUC5zdHJpbmcoXCIpXCIpLnRyaW0oUC5vcHRXaGl0ZXNwYWNlKSksXG4gICAgICAgICAgICBQLnN0cmluZyhcIj0+XCIpLnRyaW0oUC5vcHRXaGl0ZXNwYWNlKSxcbiAgICAgICAgICAgIHEuZXhwcmVzc2lvbixcbiAgICAgICAgICAgIChpZGVudCwgX2lnbm9yZSwgdmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyB0eXBlOiBcImxhbWJkYVwiLCBhcmd1bWVudHM6IGlkZW50LCB2YWx1ZSB9O1xuICAgICAgICAgICAgfVxuICAgICAgICApLFxuXG4gICAgZG90UG9zdGZpeDogKHEpID0+IFAuc2VxTWFwKFAuc3RyaW5nKFwiLlwiKSwgUFJJTUlUSVZFUy5pZGVudGlmaWVyLCAoXywgZXhwcikgPT4gKHsgdHlwZTogXCJkb3RcIiwgZXhwciB9KSksXG4gICAgaW5kZXhQb3N0Zml4OiAocSkgPT5cbiAgICAgICAgUC5zZXFNYXAoXG4gICAgICAgICAgICBQLnN0cmluZyhcIltcIiksXG4gICAgICAgICAgICBQLm9wdFdoaXRlc3BhY2UsXG4gICAgICAgICAgICBxLmV4cHJlc3Npb24sXG4gICAgICAgICAgICBQLm9wdFdoaXRlc3BhY2UsXG4gICAgICAgICAgICBQLnN0cmluZyhcIl1cIiksXG4gICAgICAgICAgICAoXywgXzIsIGV4cHIsIF8zLCBfNCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IHR5cGU6IFwiaW5kZXhcIiwgZXhwciB9O1xuICAgICAgICAgICAgfVxuICAgICAgICApLFxuICAgIGZ1bmN0aW9uUG9zdGZpeDogKHEpID0+XG4gICAgICAgIFAuc2VxTWFwKFxuICAgICAgICAgICAgUC5zdHJpbmcoXCIoXCIpLFxuICAgICAgICAgICAgUC5vcHRXaGl0ZXNwYWNlLFxuICAgICAgICAgICAgcS5leHByZXNzaW9uLnNlcEJ5KFAuc3RyaW5nKFwiLFwiKS50cmltKFAub3B0V2hpdGVzcGFjZSkpLFxuICAgICAgICAgICAgUC5vcHRXaGl0ZXNwYWNlLFxuICAgICAgICAgICAgUC5zdHJpbmcoXCIpXCIpLFxuICAgICAgICAgICAgKF8sIF8xLCBleHBycywgXzIsIF8zKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogXCJmdW5jdGlvblwiLCBleHBycyB9O1xuICAgICAgICAgICAgfVxuICAgICAgICApLFxuXG4gICAgLy8gVGhlIHByZWNlZGVuY2UgaGllcmFyY2h5IG9mIG9wZXJhdG9ycyAtIG11bHRpcGx5L2RpdmlkZSwgYWRkL3N1YnRyYWN0LCBjb21wYXJlLCBhbmQgdGhlbiBib29sZWFuIG9wZXJhdGlvbnMuXG4gICAgYmluYXJ5TXVsRGl2OiAocSkgPT4gY3JlYXRlQmluYXJ5UGFyc2VyKHEuaW5kZXgsIFBSSU1JVElWRVMuYmluYXJ5TXVsRGl2LCBFeHByZXNzaW9ucy5iaW5hcnlPcCksXG4gICAgYmluYXJ5UGx1c01pbnVzOiAocSkgPT4gY3JlYXRlQmluYXJ5UGFyc2VyKHEuYmluYXJ5TXVsRGl2LCBQUklNSVRJVkVTLmJpbmFyeVBsdXNNaW51cywgRXhwcmVzc2lvbnMuYmluYXJ5T3ApLFxuICAgIGJpbmFyeUNvbXBhcmU6IChxKSA9PiBjcmVhdGVCaW5hcnlQYXJzZXIocS5iaW5hcnlQbHVzTWludXMsIFBSSU1JVElWRVMuYmluYXJ5Q29tcGFyZU9wLCBFeHByZXNzaW9ucy5iaW5hcnlPcCksXG4gICAgYmluYXJ5Qm9vbGVhbjogKHEpID0+XG4gICAgICAgIGNyZWF0ZUJpbmFyeVBhcnNlcihxLmJpbmFyeUNvbXBhcmUsIFBSSU1JVElWRVMuYmluYXJ5QW5kT3Aub3IoUFJJTUlUSVZFUy5iaW5hcnlPck9wKSwgRXhwcmVzc2lvbnMuYmluYXJ5T3ApLFxuICAgIGJpbmFyeU9wOiAocSkgPT4gcS5iaW5hcnlCb29sZWFuLFxuXG4gICAgZXhwcmVzc2lvbjogKHEpID0+IHEuYmluYXJ5T3AsXG59KTtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFF1ZXJ5IExhbmd1YWdlIC8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4vKiogU3VwcG9ydGVkIHR5cGVzIGluIHRoZSBncmFtbWFyIGZvciBpbmRleCBxdWVyaWVzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBRdWVyeUxhbmd1YWdlIHtcbiAgICBxdWVyeVRhZzogSW5kZXhUYWdnZWQ7XG4gICAgcXVlcnlJZDogSW5kZXhJZDtcbiAgICBxdWVyeVR5cGU6IEluZGV4VHlwZWQ7XG4gICAgcXVlcnlQYXRoOiBJbmRleFBhdGg7XG4gICAgcXVlcnlQYXJlbnRPZjogSW5kZXhQYXJlbnRPZjtcbiAgICBxdWVyeUNoaWxkT2Y6IEluZGV4Q2hpbGRPZjtcbiAgICBxdWVyeVNpbXBsZUxpbmtlZDogSW5kZXhMaW5rZWQ7XG4gICAgcXVlcnlMaW5rZWQ6IEluZGV4TGlua2VkO1xuICAgIHF1ZXJ5RXhpc3RzOiBJbmRleEZpZWxkO1xuICAgIHF1ZXJ5UXVvdGVkRXhwcmVzc2lvbjogSW5kZXhFeHByZXNzaW9uO1xuICAgIHF1ZXJ5UmF3RXhwcmVzc2lvbjogSW5kZXhFeHByZXNzaW9uO1xuICAgIHF1ZXJ5TmVnYXRlOiBJbmRleE5vdDtcbiAgICBxdWVyeVBhcmVuczogSW5kZXhRdWVyeTtcbiAgICBxdWVyeUF0b206IEluZGV4UXVlcnk7XG4gICAgcXVlcnlBbmRzOiBJbmRleFF1ZXJ5O1xuICAgIHF1ZXJ5T3JzOiBJbmRleFF1ZXJ5O1xuICAgIHF1ZXJ5OiBJbmRleFF1ZXJ5O1xufVxuXG4vKipcbiAqIFBhcnNlciBmb3IgdGhlIHF1ZXJ5IGxhbmd1YWdlLiBEaWQgSSByZWFsbHkgbmVlZCBhIHF1ZXJ5IGxhbmd1YWdlIGluc3RlYWQgb2YganVzdCBhIGJldHRlciBVST8gUHJvYmFibHkgbm90LlxuICogQnV0IHF1ZXJ5IGxhbmd1YWdlcyBhcmUgZnVuIGZvciB0aGUgd2hvbGUgZmFtaWx5IGFuZCBhdCBzb21lIHBvaW50IHlvdSBnZXQgc28gdXNlZCB0byB3cml0aW5nIHRoZW0gdGhhdFxuICogeW91IGRvbid0IHN0b3AgdG8gdGhpbmsgaWYgeW91ICpuZWVkKiB0byB3cml0ZSB0aGVtIGFueW1vcmUuIEl0J3MgZ29vZCB0eXBpbmcgcHJhY3RpY2UgZm9yIGV2ZXJ5b25lLlxuICovXG5leHBvcnQgY29uc3QgUVVFUlkgPSBQLmNyZWF0ZUxhbmd1YWdlPFF1ZXJ5TGFuZ3VhZ2U+KHtcbiAgICBxdWVyeVRhZzogKF8pID0+IFBSSU1JVElWRVMudGFnLm1hcCgodmFsdWUpID0+ICh7IHR5cGU6IFwidGFnZ2VkXCIsIHZhbHVlIH0pKSxcbiAgICBxdWVyeUlkOiAoXykgPT4gY3JlYXRlRnVuY3Rpb24oXCJpZFwiLCBQUklNSVRJVkVTLnN0cmluZykubWFwKChbXywgaWRdKSA9PiAoeyB0eXBlOiBcImlkXCIsIHZhbHVlOiBpZCB9KSksXG4gICAgcXVlcnlUeXBlOiAoXykgPT5cbiAgICAgICAgUC5zdHJpbmcoXCJAXCIpXG4gICAgICAgICAgICAudGhlbihQUklNSVRJVkVTLmlkZW50aWZpZXIpXG4gICAgICAgICAgICAubWFwKCh2YWx1ZSkgPT4gKHsgdHlwZTogXCJ0eXBlZFwiLCB2YWx1ZTogdmFsdWUgfSkpLFxuXG4gICAgcXVlcnlQYXRoOiAoXykgPT5cbiAgICAgICAgY3JlYXRlRnVuY3Rpb24oUC5yZWdleHAoL2U/cGF0aC9pKS5kZXNjKFwiW2VdcGF0aFwiKSwgUFJJTUlUSVZFUy5zdHJpbmcpLm1hcCgoW2Z1bmMsIHBhdGhdKSA9PiAoe1xuICAgICAgICAgICAgdHlwZTogXCJwYXRoXCIsXG4gICAgICAgICAgICB2YWx1ZTogcGF0aCxcbiAgICAgICAgICAgIGV4YWN0OiBmdW5jLnRvTG93ZXJDYXNlKCkgPT09IFwiZXBhdGhcIixcbiAgICAgICAgfSkpLFxuXG4gICAgcXVlcnlQYXJlbnRPZjogKHEpID0+XG4gICAgICAgIGNyZWF0ZUZ1bmN0aW9uKFAucmVnZXhwKC9wYXJlbnRvZnxzdXBlcnRyZWUvaSkuZGVzYyhcInBhcmVudG9mXCIpLCBxLnF1ZXJ5KS5tYXAoKFtmdW5jLCBjaGlsZHJlbl0pID0+ICh7XG4gICAgICAgICAgICB0eXBlOiBcInBhcmVudC1vZlwiLFxuICAgICAgICAgICAgY2hpbGRyZW4sXG4gICAgICAgICAgICBpbmNsdXNpdmU6IGZ1bmMudG9Mb3dlckNhc2UoKSA9PT0gXCJzdXBlcnRyZWVcIixcbiAgICAgICAgfSkpLFxuICAgIHF1ZXJ5Q2hpbGRPZjogKHEpID0+XG4gICAgICAgIGNyZWF0ZUZ1bmN0aW9uKFAucmVnZXhwKC9jaGlsZG9mfHN1YnRyZWUvaSkuZGVzYyhcImNoaWxkb2ZcIiksIHEucXVlcnkpLm1hcCgoW2Z1bmMsIHBhcmVudHNdKSA9PiAoe1xuICAgICAgICAgICAgdHlwZTogXCJjaGlsZC1vZlwiLFxuICAgICAgICAgICAgcGFyZW50cyxcbiAgICAgICAgICAgIGluY2x1c2l2ZTogZnVuYy50b0xvd2VyQ2FzZSgpID09PSBcInN1YnRyZWVcIixcbiAgICAgICAgfSkpLFxuICAgIHF1ZXJ5U2ltcGxlTGlua2VkOiAoXykgPT5cbiAgICAgICAgUFJJTUlUSVZFUy5saW5rLm1hcCgobGluaykgPT4gKHtcbiAgICAgICAgICAgIHR5cGU6IFwibGlua2VkXCIsXG4gICAgICAgICAgICBzb3VyY2U6IHsgdHlwZTogXCJsaW5rXCIsIHZhbHVlOiBsaW5rIH0sXG4gICAgICAgICAgICBkaXJlY3Rpb246IFwiaW5jb21pbmdcIixcbiAgICAgICAgfSkpLFxuICAgIHF1ZXJ5TGlua2VkOiAocSkgPT5cbiAgICAgICAgY3JlYXRlRnVuY3Rpb24oUC5yZWdleHAoL2xpbmtzdG98bGlua2VkZnJvbXxjb25uZWN0ZWQvaSkuZGVzYyhcImNvbm5lY3RlZFwiKSwgcS5xdWVyeSkubWFwKChbZnVuYywgc291cmNlXSkgPT4gKHtcbiAgICAgICAgICAgIHR5cGU6IFwibGlua2VkXCIsXG4gICAgICAgICAgICBzb3VyY2UsXG4gICAgICAgICAgICBkaXJlY3Rpb246XG4gICAgICAgICAgICAgICAgZnVuYy50b0xvd2VyQ2FzZSgpID09IFwibGlua3N0b1wiID8gXCJpbmNvbWluZ1wiIDogZnVuYy50b0xvd2VyQ2FzZSgpID09IFwibGlua2VkZnJvbVwiID8gXCJvdXRnb2luZ1wiIDogXCJib3RoXCIsXG4gICAgICAgIH0pKSxcbiAgICBxdWVyeUV4aXN0czogKF8pID0+XG4gICAgICAgIGNyZWF0ZUZ1bmN0aW9uKFAucmVnZXhwKC9leGlzdHMvaSkuZGVzYyhcImV4aXN0c1wiKSwgUFJJTUlUSVZFUy5pZGVudGlmaWVyLm9yKFBSSU1JVElWRVMuc3RyaW5nKSkubWFwKFxuICAgICAgICAgICAgKFtfZnVuYywgaWRlbnRdKSA9PiAoe1xuICAgICAgICAgICAgICAgIHR5cGU6IFwiZmllbGRcIixcbiAgICAgICAgICAgICAgICB2YWx1ZTogaWRlbnQsXG4gICAgICAgICAgICB9KVxuICAgICAgICApLFxuICAgIHF1ZXJ5UXVvdGVkRXhwcmVzc2lvbjogKHEpID0+XG4gICAgICAgIGNyZWF0ZUZ1bmN0aW9uKFAucmVnZXhwKC9leHByL2kpLmRlc2MoXCJleHByXCIpLCBFWFBSRVNTSU9OLmV4cHJlc3Npb24pLm1hcCgoW18sIGV4cHJdKSA9PiAoe1xuICAgICAgICAgICAgdHlwZTogXCJleHByZXNzaW9uXCIsXG4gICAgICAgICAgICBleHByZXNzaW9uOiBleHByLFxuICAgICAgICB9KSksXG4gICAgcXVlcnlSYXdFeHByZXNzaW9uOiAocSkgPT4gRVhQUkVTU0lPTi5iaW5hcnlDb21wYXJlLm1hcCgoZXhwcikgPT4gKHsgdHlwZTogXCJleHByZXNzaW9uXCIsIGV4cHJlc3Npb246IGV4cHIgfSkpLFxuXG4gICAgcXVlcnlQYXJlbnM6IChxKSA9PiBxLnF1ZXJ5LnRyaW0oUC5vcHRXaGl0ZXNwYWNlKS53cmFwKFAuc3RyaW5nKFwiKFwiKSwgUC5zdHJpbmcoXCIpXCIpKSxcbiAgICBxdWVyeU5lZ2F0ZTogKHEpID0+XG4gICAgICAgIFAuc3RyaW5nKFwiIVwiKVxuICAgICAgICAgICAgLnNraXAoUC5vcHRXaGl0ZXNwYWNlKVxuICAgICAgICAgICAgLnRoZW4ocS5xdWVyeUF0b20pXG4gICAgICAgICAgICAubWFwKCh2YWx1ZSkgPT4gKHtcbiAgICAgICAgICAgICAgICB0eXBlOiBcIm5vdFwiLFxuICAgICAgICAgICAgICAgIGVsZW1lbnQ6IHZhbHVlLFxuICAgICAgICAgICAgfSkpLFxuICAgIHF1ZXJ5QXRvbTogKHEpID0+XG4gICAgICAgIFAuYWx0PEluZGV4UXVlcnk+KFxuICAgICAgICAgICAgcS5xdWVyeVBhcmVucyxcbiAgICAgICAgICAgIHEucXVlcnlOZWdhdGUsXG4gICAgICAgICAgICBxLnF1ZXJ5U2ltcGxlTGlua2VkLFxuICAgICAgICAgICAgcS5xdWVyeVRhZyxcbiAgICAgICAgICAgIHEucXVlcnlUeXBlLFxuICAgICAgICAgICAgcS5xdWVyeUlkLFxuICAgICAgICAgICAgcS5xdWVyeUV4aXN0cyxcbiAgICAgICAgICAgIHEucXVlcnlDaGlsZE9mLFxuICAgICAgICAgICAgcS5xdWVyeVBhcmVudE9mLFxuICAgICAgICAgICAgcS5xdWVyeUxpbmtlZCxcbiAgICAgICAgICAgIHEucXVlcnlQYXRoLFxuICAgICAgICAgICAgcS5xdWVyeVF1b3RlZEV4cHJlc3Npb24sXG4gICAgICAgICAgICAvLyBFeHByZXNzaW9ucyBhcmUgZXNzZW50aWFsbHkgdGhlIFwiY2F0Y2gtYWxsXCIgb2Ygb3RoZXJ3aXNlIHVucGFyc2VhYmxlIHRlcm1zLCBzbyB0aGV5IHNob3VsZCBnbyBhYnNvbHV0ZSBsYXN0LlxuICAgICAgICAgICAgcS5xdWVyeVJhd0V4cHJlc3Npb25cbiAgICAgICAgKSxcbiAgICBxdWVyeUFuZHM6IChxKSA9PlxuICAgICAgICBjcmVhdGVCaW5hcnlQYXJzZXIocS5xdWVyeUF0b20sIFBSSU1JVElWRVMuYmluYXJ5QW5kT3AsIChsZWZ0LCBfb3AsIHJpZ2h0KSA9PiAoe1xuICAgICAgICAgICAgdHlwZTogXCJhbmRcIixcbiAgICAgICAgICAgIGVsZW1lbnRzOiBbbGVmdCwgcmlnaHRdLFxuICAgICAgICB9KSksXG4gICAgcXVlcnlPcnM6IChxKSA9PlxuICAgICAgICBjcmVhdGVCaW5hcnlQYXJzZXIocS5xdWVyeUFuZHMsIFBSSU1JVElWRVMuYmluYXJ5T3JPcCwgKGxlZnQsIF9vcCwgcmlnaHQpID0+ICh7XG4gICAgICAgICAgICB0eXBlOiBcIm9yXCIsXG4gICAgICAgICAgICBlbGVtZW50czogW2xlZnQsIHJpZ2h0XSxcbiAgICAgICAgfSkpLFxuICAgIHF1ZXJ5OiAocSkgPT4gcS5xdWVyeU9ycy50cmltKFAub3B0V2hpdGVzcGFjZSksXG59KTtcblxuLyoqIFJldHVybiBhIG5ldyBwYXJzZXIgd2hpY2ggZXhlY3V0ZXMgdGhlIHVuZGVybHlpbmcgcGFyc2VyIGFuZCByZXR1cm5zIGl0J3MgcmF3IHN0cmluZyByZXByZXNlbnRhdGlvbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYXB0dXJlUmF3PFQ+KGJhc2U6IFAuUGFyc2VyPFQ+KTogUC5QYXJzZXI8W1QsIHN0cmluZ10+IHtcbiAgICByZXR1cm4gUC5jdXN0b20oKF9zdWNjZXNzLCBfZmFpbHVyZSkgPT4ge1xuICAgICAgICByZXR1cm4gKGlucHV0LCBpKSA9PiB7XG4gICAgICAgICAgICBsZXQgcmVzdWx0ID0gKGJhc2UgYXMgYW55KS5fKGlucHV0LCBpKTtcbiAgICAgICAgICAgIGlmICghcmVzdWx0LnN0YXR1cykgcmV0dXJuIHJlc3VsdDtcblxuICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHJlc3VsdCwgeyB2YWx1ZTogW3Jlc3VsdC52YWx1ZSwgaW5wdXQuc3Vic3RyaW5nKGksIHJlc3VsdC5pbmRleCldIH0pO1xuICAgICAgICB9O1xuICAgIH0pO1xufVxuXG4vKiogQ3JlYXRlIGEgbGVmdC1hc3NvY2lhdGl2ZSBiaW5hcnkgcGFyc2VyIHdoaWNoIHBhcnNlcyB0aGUgZ2l2ZW4gc3ViLWVsZW1lbnQgYW5kIHNlcGFyYXRvci4gSGFuZGxlcyB3aGl0ZXNwYWNlLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUJpbmFyeVBhcnNlcjxULCBVPihcbiAgICBjaGlsZDogUC5QYXJzZXI8VD4sXG4gICAgc2VwOiBQLlBhcnNlcjxVPixcbiAgICBjb21iaW5lOiAoYTogVCwgYjogVSwgYzogVCkgPT4gVFxuKTogUC5QYXJzZXI8VD4ge1xuICAgIHJldHVybiBQLnNlcU1hcChjaGlsZCwgUC5zZXEoUC5vcHRXaGl0ZXNwYWNlLCBzZXAsIFAub3B0V2hpdGVzcGFjZSwgY2hpbGQpLm1hbnkoKSwgKGZpcnN0LCByZXN0KSA9PiB7XG4gICAgICAgIGlmIChyZXN0Lmxlbmd0aCA9PSAwKSByZXR1cm4gZmlyc3Q7XG5cbiAgICAgICAgbGV0IG5vZGUgPSBjb21iaW5lKGZpcnN0LCByZXN0WzBdWzFdLCByZXN0WzBdWzNdKTtcbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSAxOyBpbmRleCA8IHJlc3QubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgICAgICBub2RlID0gY29tYmluZShub2RlLCByZXN0W2luZGV4XVsxXSwgcmVzdFtpbmRleF1bM10pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBub2RlO1xuICAgIH0pO1xufVxuXG4vKipcbiAqIENyZWF0ZSBhIHBhcnNlciB3aGljaCBwYXJzZXMgXFw8ZnVuY3Rpb25cXD4oXFw8YXJnc1xcPikuXG4gKiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZ1bmN0aW9uPFQ+KGZ1bmM6IHN0cmluZyB8IFAuUGFyc2VyPHN0cmluZz4sIGFyZ3M6IFAuUGFyc2VyPFQ+KTogUC5QYXJzZXI8W3N0cmluZywgVF0+IHtcbiAgICBjb25zdCByZWFsRnVuYyA9IHR5cGVvZiBmdW5jID09PSBcInN0cmluZ1wiID8gUC5zdHJpbmcoZnVuYykgOiBmdW5jO1xuICAgIHJldHVybiBQLnNlcU1hcChcbiAgICAgICAgcmVhbEZ1bmMuc2tpcChQLm9wdFdoaXRlc3BhY2UpLFxuICAgICAgICBhcmdzLnRyaW0oUC5vcHRXaGl0ZXNwYWNlKS53cmFwKFAuc3RyaW5nKFwiKFwiKSwgUC5zdHJpbmcoXCIpXCIpKSxcbiAgICAgICAgKGYsIGEpID0+IFtmLCBhXVxuICAgICk7XG59XG5cbi8qKiBDaGFpbnMgYSBsaXN0IG9mIHBhcnNlcnM7IHRoZSBmaXJzdCBvbmUgbXVzdCBzdWNjZWVkLCBidXQgZm9sbG93aW5nIG9uZXMgbWF5IGZhaWwgd2l0aG91dCBmYWlsaW5nIHRoZSBvdmVyYWxsIHBhcnNlLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoYWluT3B0PFQ+KGJhc2U6IFAuUGFyc2VyPFQ+LCAuLi5mdW5jczogKChyOiBUKSA9PiBQLlBhcnNlcjxUPilbXSk6IFAuUGFyc2VyPFQ+IHtcbiAgICByZXR1cm4gUC5jdXN0b20oKF9zdWNjZXNzLCBfZmFpbHVyZSkgPT4ge1xuICAgICAgICByZXR1cm4gKGlucHV0LCBpKSA9PiB7XG4gICAgICAgICAgICBsZXQgcmVzdWx0ID0gKGJhc2UgYXMgYW55KS5fKGlucHV0LCBpKTtcbiAgICAgICAgICAgIGlmICghcmVzdWx0LnN0YXR1cykgcmV0dXJuIHJlc3VsdDtcblxuICAgICAgICAgICAgZm9yIChsZXQgZnVuYyBvZiBmdW5jcykge1xuICAgICAgICAgICAgICAgIGxldCBuZXh0ID0gKGZ1bmMocmVzdWx0LnZhbHVlIGFzIFQpIGFzIGFueSkuXyhpbnB1dCwgcmVzdWx0LmluZGV4KTtcbiAgICAgICAgICAgICAgICBpZiAoIW5leHQuc3RhdHVzKSByZXR1cm4gcmVzdWx0O1xuXG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gbmV4dDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfTtcbiAgICB9KTtcbn1cbiIsICIvKipcbiAqIEBtb2R1bGUgZXhwcmVzc2lvbnNcbiAqL1xuaW1wb3J0IHsgRGF0ZVRpbWUsIER1cmF0aW9uIH0gZnJvbSBcImx1eG9uXCI7XG5pbXBvcnQgeyBMaW5rIH0gZnJvbSBcImV4cHJlc3Npb24vbGlua1wiO1xuaW1wb3J0IHsgcmVuZGVyTWluaW1hbERhdGUsIHJlbmRlck1pbmltYWxEdXJhdGlvbiB9IGZyb20gXCJ1dGlscy9ub3JtYWxpemVyc1wiO1xuXG4vLyBSZS1leHBvcnRzIG9mIHVzZWZ1bCBnZW5lcmljIHR5cGVzLlxuZXhwb3J0IHsgTGluayB9O1xuXG4vKiogU2hvcnRoYW5kIGZvciBhIG1hcHBpbmcgZnJvbSBrZXlzIHRvIHZhbHVlcy4gKi9cbmV4cG9ydCB0eXBlIERhdGFPYmplY3QgPSBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuLyoqIFRoZSBsaXRlcmFsIHR5cGVzIHN1cHBvcnRlZCBieSB0aGUgcXVlcnkgZW5naW5lLiAqL1xuZXhwb3J0IHR5cGUgTGl0ZXJhbFR5cGUgPVxuICAgIHwgXCJib29sZWFuXCJcbiAgICB8IFwibnVtYmVyXCJcbiAgICB8IFwic3RyaW5nXCJcbiAgICB8IFwiZGF0ZVwiXG4gICAgfCBcImR1cmF0aW9uXCJcbiAgICB8IFwibGlua1wiXG4gICAgfCBcImFycmF5XCJcbiAgICB8IFwib2JqZWN0XCJcbiAgICB8IFwiZnVuY3Rpb25cIlxuICAgIHwgXCJudWxsXCI7XG4vKiogVGhlIHJhdyB2YWx1ZXMgdGhhdCBhIGxpdGVyYWwgY2FuIHRha2Ugb24uICovXG5leHBvcnQgdHlwZSBMaXRlcmFsID1cbiAgICB8IGJvb2xlYW5cbiAgICB8IG51bWJlclxuICAgIHwgc3RyaW5nXG4gICAgfCBEYXRlVGltZVxuICAgIHwgRHVyYXRpb25cbiAgICB8IExpbmtcbiAgICB8IEFycmF5PExpdGVyYWw+XG4gICAgfCBEYXRhT2JqZWN0XG4gICAgfCBGdW5jdGlvblxuICAgIHwgbnVsbDtcblxuLyoqIE1hcHMgdGhlIHN0cmluZyB0eXBlIHRvIGl0J3MgZXh0ZXJuYWwsIEFQSS1mYWNpbmcgcmVwcmVzZW50YXRpb24uICovXG5leHBvcnQgdHlwZSBMaXRlcmFsUmVwcjxUIGV4dGVuZHMgTGl0ZXJhbFR5cGU+ID0gVCBleHRlbmRzIFwiYm9vbGVhblwiXG4gICAgPyBib29sZWFuXG4gICAgOiBUIGV4dGVuZHMgXCJudW1iZXJcIlxuICAgID8gbnVtYmVyXG4gICAgOiBUIGV4dGVuZHMgXCJzdHJpbmdcIlxuICAgID8gc3RyaW5nXG4gICAgOiBUIGV4dGVuZHMgXCJkdXJhdGlvblwiXG4gICAgPyBEdXJhdGlvblxuICAgIDogVCBleHRlbmRzIFwiZGF0ZVwiXG4gICAgPyBEYXRlVGltZVxuICAgIDogVCBleHRlbmRzIFwibnVsbFwiXG4gICAgPyBudWxsXG4gICAgOiBUIGV4dGVuZHMgXCJsaW5rXCJcbiAgICA/IExpbmtcbiAgICA6IFQgZXh0ZW5kcyBcImFycmF5XCJcbiAgICA/IEFycmF5PExpdGVyYWw+XG4gICAgOiBUIGV4dGVuZHMgXCJvYmplY3RcIlxuICAgID8gRGF0YU9iamVjdFxuICAgIDogVCBleHRlbmRzIFwiZnVuY3Rpb25cIlxuICAgID8gRnVuY3Rpb25cbiAgICA6IGFueTtcblxuLyoqIEEgd3JhcHBlZCBsaXRlcmFsIHZhbHVlIHdoaWNoIGNhbiBiZSBzd2l0Y2hlZCBvbi4gKi9cbmV4cG9ydCB0eXBlIFdyYXBwZWRMaXRlcmFsID1cbiAgICB8IExpdGVyYWxXcmFwcGVyPFwic3RyaW5nXCI+XG4gICAgfCBMaXRlcmFsV3JhcHBlcjxcIm51bWJlclwiPlxuICAgIHwgTGl0ZXJhbFdyYXBwZXI8XCJib29sZWFuXCI+XG4gICAgfCBMaXRlcmFsV3JhcHBlcjxcImRhdGVcIj5cbiAgICB8IExpdGVyYWxXcmFwcGVyPFwiZHVyYXRpb25cIj5cbiAgICB8IExpdGVyYWxXcmFwcGVyPFwibGlua1wiPlxuICAgIHwgTGl0ZXJhbFdyYXBwZXI8XCJhcnJheVwiPlxuICAgIHwgTGl0ZXJhbFdyYXBwZXI8XCJvYmplY3RcIj5cbiAgICB8IExpdGVyYWxXcmFwcGVyPFwiZnVuY3Rpb25cIj5cbiAgICB8IExpdGVyYWxXcmFwcGVyPFwibnVsbFwiPjtcblxuLyoqIENvbWJpbmVzIGEgdGV4dHVhbCB0eXBlIGFuZCB2YWx1ZTsgcHJpbWFyaWx5IHVzZWZ1bCBmb3Igc3dpdGNoaW5nIG9uLlxuICogQGhpZGRlblxuICovXG5leHBvcnQgaW50ZXJmYWNlIExpdGVyYWxXcmFwcGVyPFQgZXh0ZW5kcyBMaXRlcmFsVHlwZT4ge1xuICAgIHR5cGU6IFQ7XG4gICAgdmFsdWU6IExpdGVyYWxSZXByPFQ+O1xufVxuXG4vKipcbiAqIEBoaWRkZW5cbiAqICBVdGlsaXR5IGxpYnJhcnkgZm9yIGhhbmRsaW5nIGxpdGVyYWwgdmFsdWVzLiAqL1xuZXhwb3J0IG5hbWVzcGFjZSBMaXRlcmFscyB7XG4gICAgLyoqIFNldHRpbmdzIHVzZWQgd2hlbiBmb3JtYXR0aW5nIGxpdGVyYWwgdmFsdWVzIHRvIHRleHQuICovXG4gICAgZXhwb3J0IGludGVyZmFjZSBUb1N0cmluZ1NldHRpbmdzIHtcbiAgICAgICAgLyoqIFdoYXQgYSBudWxsIHdpbGwgcmVuZGVyIGFzLiAqL1xuICAgICAgICBudWxsUmVwcmVzZW50YXRpb246IHN0cmluZztcblxuICAgICAgICAvKiogRGF0ZSBmb3JtYXQuICovXG4gICAgICAgIGRhdGVGb3JtYXQ6IHN0cmluZztcblxuICAgICAgICAvKiogRGF0ZS10aW1lIGZvcm1hdC4gKi9cbiAgICAgICAgZGF0ZVRpbWVGb3JtYXQ6IHN0cmluZztcbiAgICB9XG5cbiAgICAvKiogU2FuZSwgRW5nbGlzaC1iYXNlZCBkZWZhdWx0cyBmb3IgZGF0ZSBmb3JtYXRzLiAqL1xuICAgIGV4cG9ydCBjb25zdCBERUZBVUxUX1RPX1NUUklORzogVG9TdHJpbmdTZXR0aW5ncyA9IHtcbiAgICAgICAgbnVsbFJlcHJlc2VudGF0aW9uOiBcIi1cIixcblxuICAgICAgICBkYXRlRm9ybWF0OiBcIk1NTU0gZGQsIHl5eXlcIixcbiAgICAgICAgZGF0ZVRpbWVGb3JtYXQ6IFwiaDptbSBhIC0gTU1NTSBkZCwgeXl5eVwiLFxuICAgIH07XG5cbiAgICAvKiogQ29udmVydCBhbiBhcmJpdHJhcnkgdmFsdWUgaW50byBhIHJlYXNvbmFibGUsIE1hcmtkb3duLWZyaWVuZGx5IHN0cmluZyBpZiBwb3NzaWJsZS4gKi9cbiAgICBleHBvcnQgZnVuY3Rpb24gdG9TdHJpbmcoXG4gICAgICAgIGZpZWxkOiBhbnksXG4gICAgICAgIHNldHRpbmc6IFRvU3RyaW5nU2V0dGluZ3MgPSBERUZBVUxUX1RPX1NUUklORyxcbiAgICAgICAgcmVjdXJzaXZlOiBib29sZWFuID0gZmFsc2VcbiAgICApOiBzdHJpbmcge1xuICAgICAgICBsZXQgd3JhcHBlZCA9IHdyYXBWYWx1ZShmaWVsZCk7XG4gICAgICAgIGlmICghd3JhcHBlZCkgcmV0dXJuIHNldHRpbmcubnVsbFJlcHJlc2VudGF0aW9uO1xuXG4gICAgICAgIHN3aXRjaCAod3JhcHBlZC50eXBlKSB7XG4gICAgICAgICAgICBjYXNlIFwibnVsbFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBzZXR0aW5nLm51bGxSZXByZXNlbnRhdGlvbjtcbiAgICAgICAgICAgIGNhc2UgXCJzdHJpbmdcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZTtcbiAgICAgICAgICAgIGNhc2UgXCJudW1iZXJcIjpcbiAgICAgICAgICAgIGNhc2UgXCJib29sZWFuXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiXCIgKyB3cmFwcGVkLnZhbHVlO1xuICAgICAgICAgICAgY2FzZSBcImxpbmtcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZS5tYXJrZG93bigpO1xuICAgICAgICAgICAgY2FzZSBcImZ1bmN0aW9uXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiPGZ1bmN0aW9uPlwiO1xuICAgICAgICAgICAgY2FzZSBcImFycmF5XCI6XG4gICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IFwiXCI7XG4gICAgICAgICAgICAgICAgaWYgKHJlY3Vyc2l2ZSkgcmVzdWx0ICs9IFwiW1wiO1xuICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3cmFwcGVkLnZhbHVlLm1hcCgoZikgPT4gdG9TdHJpbmcoZiwgc2V0dGluZywgdHJ1ZSkpLmpvaW4oXCIsIFwiKTtcbiAgICAgICAgICAgICAgICBpZiAocmVjdXJzaXZlKSByZXN1bHQgKz0gXCJdXCI7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIGNhc2UgXCJvYmplY3RcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICBcInsgXCIgK1xuICAgICAgICAgICAgICAgICAgICBPYmplY3QuZW50cmllcyh3cmFwcGVkLnZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgLm1hcCgoZSkgPT4gZVswXSArIFwiOiBcIiArIHRvU3RyaW5nKGVbMV0sIHNldHRpbmcsIHRydWUpKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmpvaW4oXCIsIFwiKSArXG4gICAgICAgICAgICAgICAgICAgIFwiIH1cIlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjYXNlIFwiZGF0ZVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiByZW5kZXJNaW5pbWFsRGF0ZSh3cmFwcGVkLnZhbHVlLCBzZXR0aW5nLmRhdGVGb3JtYXQsIHNldHRpbmcuZGF0ZVRpbWVGb3JtYXQpO1xuICAgICAgICAgICAgY2FzZSBcImR1cmF0aW9uXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlbmRlck1pbmltYWxEdXJhdGlvbih3cmFwcGVkLnZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBXcmFwIGEgbGl0ZXJhbCB2YWx1ZSBzbyB5b3UgY2FuIHN3aXRjaCBvbiBpdCBlYXNpbHkuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIHdyYXBWYWx1ZSh2YWw6IExpdGVyYWwpOiBXcmFwcGVkTGl0ZXJhbCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmIChpc051bGwodmFsKSkgcmV0dXJuIHsgdHlwZTogXCJudWxsXCIsIHZhbHVlOiB2YWwgfTtcbiAgICAgICAgZWxzZSBpZiAoaXNOdW1iZXIodmFsKSkgcmV0dXJuIHsgdHlwZTogXCJudW1iZXJcIiwgdmFsdWU6IHZhbCB9O1xuICAgICAgICBlbHNlIGlmIChpc1N0cmluZyh2YWwpKSByZXR1cm4geyB0eXBlOiBcInN0cmluZ1wiLCB2YWx1ZTogdmFsIH07XG4gICAgICAgIGVsc2UgaWYgKGlzQm9vbGVhbih2YWwpKSByZXR1cm4geyB0eXBlOiBcImJvb2xlYW5cIiwgdmFsdWU6IHZhbCB9O1xuICAgICAgICBlbHNlIGlmIChpc0R1cmF0aW9uKHZhbCkpIHJldHVybiB7IHR5cGU6IFwiZHVyYXRpb25cIiwgdmFsdWU6IHZhbCB9O1xuICAgICAgICBlbHNlIGlmIChpc0RhdGUodmFsKSkgcmV0dXJuIHsgdHlwZTogXCJkYXRlXCIsIHZhbHVlOiB2YWwgfTtcbiAgICAgICAgZWxzZSBpZiAoaXNBcnJheSh2YWwpKSByZXR1cm4geyB0eXBlOiBcImFycmF5XCIsIHZhbHVlOiB2YWwgfTtcbiAgICAgICAgZWxzZSBpZiAoaXNMaW5rKHZhbCkpIHJldHVybiB7IHR5cGU6IFwibGlua1wiLCB2YWx1ZTogdmFsIH07XG4gICAgICAgIGVsc2UgaWYgKGlzRnVuY3Rpb24odmFsKSkgcmV0dXJuIHsgdHlwZTogXCJmdW5jdGlvblwiLCB2YWx1ZTogdmFsIH07XG4gICAgICAgIGVsc2UgaWYgKGlzT2JqZWN0KHZhbCkpIHJldHVybiB7IHR5cGU6IFwib2JqZWN0XCIsIHZhbHVlOiB2YWwgfTtcbiAgICAgICAgZWxzZSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKiBSZWN1cnNpdmVseSBtYXAgY29tcGxleCBvYmplY3RzIGF0IHRoZSBsZWF2ZXMuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIG1hcExlYXZlcyh2YWw6IExpdGVyYWwsIGZ1bmM6ICh0OiBMaXRlcmFsKSA9PiBMaXRlcmFsKTogTGl0ZXJhbCB7XG4gICAgICAgIGlmIChpc09iamVjdCh2YWwpKSB7XG4gICAgICAgICAgICBsZXQgcmVzdWx0OiBEYXRhT2JqZWN0ID0ge307XG4gICAgICAgICAgICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModmFsKSkgcmVzdWx0W2tleV0gPSBtYXBMZWF2ZXModmFsdWUsIGZ1bmMpO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSBlbHNlIGlmIChpc0FycmF5KHZhbCkpIHtcbiAgICAgICAgICAgIGxldCByZXN1bHQ6IExpdGVyYWxbXSA9IFtdO1xuICAgICAgICAgICAgZm9yIChsZXQgdmFsdWUgb2YgdmFsKSByZXN1bHQucHVzaChtYXBMZWF2ZXModmFsdWUsIGZ1bmMpKTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZnVuYyh2YWwpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIENoZWNrIGlmIHR3byBhcmJpdHJhcnkgbGl0ZXJhbHMgYXJlIGVxdWFsLiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiBlcXVhbHMoZmlyc3Q6IExpdGVyYWwgfCB1bmRlZmluZWQsIHNlY29uZDogTGl0ZXJhbCB8IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gY29tcGFyZShmaXJzdCwgc2Vjb25kKSA9PSAwO1xuICAgIH1cblxuICAgIC8qKiBDb21wYXJlIHR3byBhcmJpdHJhcnkgSmF2YVNjcmlwdCB2YWx1ZXMuIFByb2R1Y2VzIGEgdG90YWwgb3JkZXJpbmcgb3ZlciBBTlkgcG9zc2libGUgZGF0YWNvcmUgdmFsdWUuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGNvbXBhcmUoXG4gICAgICAgIHZhbDE6IExpdGVyYWwgfCB1bmRlZmluZWQsXG4gICAgICAgIHZhbDI6IExpdGVyYWwgfCB1bmRlZmluZWQsXG4gICAgICAgIGxpbmtOb3JtYWxpemVyPzogKGxpbms6IHN0cmluZykgPT4gc3RyaW5nXG4gICAgKTogbnVtYmVyIHtcbiAgICAgICAgLy8gUmVmZXJlbmNlIGVxdWFsaXR5IC0gc2hvcnQgY2lyY3VpdC5cbiAgICAgICAgaWYgKHZhbDEgPT09IHZhbDIpIHJldHVybiAwO1xuXG4gICAgICAgIC8vIEhhbmRsZSB1bmRlZmluZWQvbnVsbHMgZmlyc3QuXG4gICAgICAgIGlmICh2YWwxID09PSB1bmRlZmluZWQpIHZhbDEgPSBudWxsO1xuICAgICAgICBpZiAodmFsMiA9PT0gdW5kZWZpbmVkKSB2YWwyID0gbnVsbDtcbiAgICAgICAgaWYgKHZhbDEgPT09IG51bGwgJiYgdmFsMiA9PT0gbnVsbCkgcmV0dXJuIDA7XG4gICAgICAgIGVsc2UgaWYgKHZhbDEgPT09IG51bGwpIHJldHVybiAtMTtcbiAgICAgICAgZWxzZSBpZiAodmFsMiA9PT0gbnVsbCkgcmV0dXJuIDE7XG5cbiAgICAgICAgLy8gQSBub24tbnVsbCB2YWx1ZSBub3cgd2hpY2ggd2UgY2FuIHdyYXAgJiBjb21wYXJlIG9uLlxuICAgICAgICBsZXQgd3JhcDEgPSB3cmFwVmFsdWUodmFsMSk7XG4gICAgICAgIGxldCB3cmFwMiA9IHdyYXBWYWx1ZSh2YWwyKTtcblxuICAgICAgICBpZiAod3JhcDEgPT09IHVuZGVmaW5lZCAmJiB3cmFwMiA9PT0gdW5kZWZpbmVkKSByZXR1cm4gMDtcbiAgICAgICAgZWxzZSBpZiAod3JhcDEgPT09IHVuZGVmaW5lZCkgcmV0dXJuIC0xO1xuICAgICAgICBlbHNlIGlmICh3cmFwMiA9PT0gdW5kZWZpbmVkKSByZXR1cm4gMTtcblxuICAgICAgICAvLyBTaG9ydC1jaXJjdWl0IG9uIGRpZmZlcmVudCB0eXBlcyBvciBvbiByZWZlcmVuY2UgZXF1YWxpdHkuXG4gICAgICAgIGlmICh3cmFwMS50eXBlICE9IHdyYXAyLnR5cGUpIHJldHVybiB3cmFwMS50eXBlLmxvY2FsZUNvbXBhcmUod3JhcDIudHlwZSk7XG4gICAgICAgIGlmICh3cmFwMS52YWx1ZSA9PT0gd3JhcDIudmFsdWUpIHJldHVybiAwO1xuXG4gICAgICAgIHN3aXRjaCAod3JhcDEudHlwZSkge1xuICAgICAgICAgICAgY2FzZSBcInN0cmluZ1wiOlxuICAgICAgICAgICAgICAgIHJldHVybiB3cmFwMS52YWx1ZS5sb2NhbGVDb21wYXJlKHdyYXAyLnZhbHVlIGFzIHN0cmluZyk7XG4gICAgICAgICAgICBjYXNlIFwibnVtYmVyXCI6XG4gICAgICAgICAgICAgICAgaWYgKHdyYXAxLnZhbHVlIDwgKHdyYXAyLnZhbHVlIGFzIG51bWJlcikpIHJldHVybiAtMTtcbiAgICAgICAgICAgICAgICBlbHNlIGlmICh3cmFwMS52YWx1ZSA9PSAod3JhcDIudmFsdWUgYXMgbnVtYmVyKSkgcmV0dXJuIDA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgICAgICBjYXNlIFwibnVsbFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgICAgY2FzZSBcImJvb2xlYW5cIjpcbiAgICAgICAgICAgICAgICBpZiAod3JhcDEudmFsdWUgPT0gd3JhcDIudmFsdWUpIHJldHVybiAwO1xuICAgICAgICAgICAgICAgIGVsc2UgcmV0dXJuIHdyYXAxLnZhbHVlID8gMSA6IC0xO1xuICAgICAgICAgICAgY2FzZSBcImxpbmtcIjpcbiAgICAgICAgICAgICAgICBsZXQgbGluazEgPSB3cmFwMS52YWx1ZTtcbiAgICAgICAgICAgICAgICBsZXQgbGluazIgPSB3cmFwMi52YWx1ZSBhcyBMaW5rO1xuICAgICAgICAgICAgICAgIGxldCBub3JtYWxpemUgPSBsaW5rTm9ybWFsaXplciA/PyAoKHg6IHN0cmluZykgPT4geCk7XG5cbiAgICAgICAgICAgICAgICAvLyBXZSBjYW4ndCBjb21wYXJlIGJ5IGZpbGUgbmFtZSBvciBkaXNwbGF5LCBzaW5jZSB0aGF0IHdvdWxkIGJyZWFrIGxpbmsgZXF1YWxpdHkuIENvbXBhcmUgYnkgcGF0aC5cbiAgICAgICAgICAgICAgICBsZXQgcGF0aENvbXBhcmUgPSBub3JtYWxpemUobGluazEucGF0aCkubG9jYWxlQ29tcGFyZShub3JtYWxpemUobGluazIucGF0aCkpO1xuICAgICAgICAgICAgICAgIGlmIChwYXRoQ29tcGFyZSAhPSAwKSByZXR1cm4gcGF0aENvbXBhcmU7XG5cbiAgICAgICAgICAgICAgICAvLyBUaGVuIGNvbXBhcmUgYnkgdHlwZS5cbiAgICAgICAgICAgICAgICBsZXQgdHlwZUNvbXBhcmUgPSBsaW5rMS50eXBlLmxvY2FsZUNvbXBhcmUobGluazIudHlwZSk7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVDb21wYXJlICE9IDApIHJldHVybiB0eXBlQ29tcGFyZTtcblxuICAgICAgICAgICAgICAgIC8vIFRoZW4gY29tcGFyZSBieSBzdWJwYXRoIGV4aXN0ZW5jZS5cbiAgICAgICAgICAgICAgICBpZiAobGluazEuc3VicGF0aCAmJiAhbGluazIuc3VicGF0aCkgcmV0dXJuIDE7XG4gICAgICAgICAgICAgICAgaWYgKCFsaW5rMS5zdWJwYXRoICYmIGxpbmsyLnN1YnBhdGgpIHJldHVybiAtMTtcbiAgICAgICAgICAgICAgICBpZiAoIWxpbmsxLnN1YnBhdGggJiYgIWxpbmsyLnN1YnBhdGgpIHJldHVybiAwO1xuXG4gICAgICAgICAgICAgICAgLy8gU2luY2UgYm90aCBoYXZlIGEgc3VicGF0aCwgY29tcGFyZSBieSBzdWJwYXRoLlxuICAgICAgICAgICAgICAgIHJldHVybiAobGluazEuc3VicGF0aCA/PyBcIlwiKS5sb2NhbGVDb21wYXJlKGxpbmsyLnN1YnBhdGggPz8gXCJcIik7XG4gICAgICAgICAgICBjYXNlIFwiZGF0ZVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB3cmFwMS52YWx1ZSA8ICh3cmFwMi52YWx1ZSBhcyBEYXRlVGltZSlcbiAgICAgICAgICAgICAgICAgICAgPyAtMVxuICAgICAgICAgICAgICAgICAgICA6IHdyYXAxLnZhbHVlLmVxdWFscyh3cmFwMi52YWx1ZSBhcyBEYXRlVGltZSlcbiAgICAgICAgICAgICAgICAgICAgPyAwXG4gICAgICAgICAgICAgICAgICAgIDogMTtcbiAgICAgICAgICAgIGNhc2UgXCJkdXJhdGlvblwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB3cmFwMS52YWx1ZSA8ICh3cmFwMi52YWx1ZSBhcyBEdXJhdGlvbilcbiAgICAgICAgICAgICAgICAgICAgPyAtMVxuICAgICAgICAgICAgICAgICAgICA6IHdyYXAxLnZhbHVlLmVxdWFscyh3cmFwMi52YWx1ZSBhcyBEdXJhdGlvbilcbiAgICAgICAgICAgICAgICAgICAgPyAwXG4gICAgICAgICAgICAgICAgICAgIDogMTtcbiAgICAgICAgICAgIGNhc2UgXCJhcnJheVwiOlxuICAgICAgICAgICAgICAgIGxldCBmMSA9IHdyYXAxLnZhbHVlO1xuICAgICAgICAgICAgICAgIGxldCBmMiA9IHdyYXAyLnZhbHVlIGFzIGFueVtdO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBNYXRoLm1pbihmMS5sZW5ndGgsIGYyLmxlbmd0aCk7IGluZGV4KyspIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNvbXAgPSBjb21wYXJlKGYxW2luZGV4XSwgZjJbaW5kZXhdKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbXAgIT0gMCkgcmV0dXJuIGNvbXA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBmMS5sZW5ndGggLSBmMi5sZW5ndGg7XG4gICAgICAgICAgICBjYXNlIFwib2JqZWN0XCI6XG4gICAgICAgICAgICAgICAgbGV0IG8xID0gd3JhcDEudmFsdWU7XG4gICAgICAgICAgICAgICAgbGV0IG8yID0gd3JhcDIudmFsdWUgYXMgUmVjb3JkPHN0cmluZywgYW55PjtcbiAgICAgICAgICAgICAgICBsZXQgazEgPSBBcnJheS5mcm9tKE9iamVjdC5rZXlzKG8xKSk7XG4gICAgICAgICAgICAgICAgbGV0IGsyID0gQXJyYXkuZnJvbShPYmplY3Qua2V5cyhvMikpO1xuICAgICAgICAgICAgICAgIGsxLnNvcnQoKTtcbiAgICAgICAgICAgICAgICBrMi5zb3J0KCk7XG5cbiAgICAgICAgICAgICAgICBsZXQga2V5Q29tcGFyZSA9IGNvbXBhcmUoazEsIGsyKTtcbiAgICAgICAgICAgICAgICBpZiAoa2V5Q29tcGFyZSAhPSAwKSByZXR1cm4ga2V5Q29tcGFyZTtcblxuICAgICAgICAgICAgICAgIGZvciAobGV0IGtleSBvZiBrMSkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgY29tcCA9IGNvbXBhcmUobzFba2V5XSwgbzJba2V5XSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb21wICE9IDApIHJldHVybiBjb21wO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgICAgY2FzZSBcImZ1bmN0aW9uXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogRmluZCB0aGUgY29ycmVzcG9uZGluZyBkYXRhY29yZSB0eXBlIGZvciBhbiBhcmJpdHJhcnkgdmFsdWUuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIHR5cGVPZih2YWw6IGFueSk6IExpdGVyYWxUeXBlIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHdyYXBWYWx1ZSh2YWwpPy50eXBlO1xuICAgIH1cblxuICAgIC8qKiBEZXRlcm1pbmUgaWYgdGhlIGdpdmVuIHZhbHVlIGlzIFwidHJ1dGh5XCIgKGkuZS4sIGlzIG5vbi1udWxsIGFuZCBoYXMgZGF0YSBpbiBpdCkuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGlzVHJ1dGh5KGZpZWxkOiBMaXRlcmFsKTogYm9vbGVhbiB7XG4gICAgICAgIGxldCB3cmFwcGVkID0gd3JhcFZhbHVlKGZpZWxkKTtcbiAgICAgICAgaWYgKCF3cmFwcGVkKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgICAgc3dpdGNoICh3cmFwcGVkLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgXCJudW1iZXJcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZSAhPSAwO1xuICAgICAgICAgICAgY2FzZSBcInN0cmluZ1wiOlxuICAgICAgICAgICAgICAgIHJldHVybiB3cmFwcGVkLnZhbHVlLmxlbmd0aCA+IDA7XG4gICAgICAgICAgICBjYXNlIFwiYm9vbGVhblwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB3cmFwcGVkLnZhbHVlO1xuICAgICAgICAgICAgY2FzZSBcImxpbmtcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gISF3cmFwcGVkLnZhbHVlLnBhdGg7XG4gICAgICAgICAgICBjYXNlIFwiZGF0ZVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB3cmFwcGVkLnZhbHVlLnRvTWlsbGlzKCkgIT0gMDtcbiAgICAgICAgICAgIGNhc2UgXCJkdXJhdGlvblwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB3cmFwcGVkLnZhbHVlLmFzKFwic2Vjb25kc1wiKSAhPSAwO1xuICAgICAgICAgICAgY2FzZSBcIm9iamVjdFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3Qua2V5cyh3cmFwcGVkLnZhbHVlKS5sZW5ndGggPiAwO1xuICAgICAgICAgICAgY2FzZSBcImFycmF5XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWUubGVuZ3RoID4gMDtcbiAgICAgICAgICAgIGNhc2UgXCJudWxsXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgY2FzZSBcImZ1bmN0aW9uXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogRGVlcCBjb3B5IGEgZmllbGQuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGRlZXBDb3B5PFQgZXh0ZW5kcyBMaXRlcmFsPihmaWVsZDogVCk6IFQge1xuICAgICAgICBpZiAoZmllbGQgPT09IG51bGwgfHwgZmllbGQgPT09IHVuZGVmaW5lZCkgcmV0dXJuIGZpZWxkO1xuXG4gICAgICAgIGlmIChMaXRlcmFscy5pc0FycmF5KGZpZWxkKSkge1xuICAgICAgICAgICAgcmV0dXJuIChbXSBhcyBMaXRlcmFsW10pLmNvbmNhdChmaWVsZC5tYXAoKHYpID0+IGRlZXBDb3B5KHYpKSkgYXMgVDtcbiAgICAgICAgfSBlbHNlIGlmIChMaXRlcmFscy5pc09iamVjdChmaWVsZCkpIHtcbiAgICAgICAgICAgIGxldCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIExpdGVyYWw+ID0ge307XG4gICAgICAgICAgICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoZmllbGQpKSByZXN1bHRba2V5XSA9IGRlZXBDb3B5KHZhbHVlKTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQgYXMgVDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmaWVsZDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBEZXRlcm1pbmUgaWYgdGhlIHZhbHVlIGlzIGEgc3RyaW5nLiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiBpc1N0cmluZyh2YWw6IGFueSk6IHZhbCBpcyBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdHlwZW9mIHZhbCA9PSBcInN0cmluZ1wiO1xuICAgIH1cblxuICAgIC8qKiBEZXRlcm1pbmUgaWYgdGhlIHZhbHVlIGlzIGEgbnVtYmVyLiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiBpc051bWJlcih2YWw6IGFueSk6IHZhbCBpcyBudW1iZXIge1xuICAgICAgICByZXR1cm4gdHlwZW9mIHZhbCA9PSBcIm51bWJlclwiO1xuICAgIH1cblxuICAgIC8qKiBEZXRlcm1pbmUgaWYgdGhlIHZhbHVlIGlzIGEgZGF0ZS4gKi9cbiAgICBleHBvcnQgZnVuY3Rpb24gaXNEYXRlKHZhbDogYW55KTogdmFsIGlzIERhdGVUaW1lIHtcbiAgICAgICAgcmV0dXJuIHZhbCBpbnN0YW5jZW9mIERhdGVUaW1lO1xuICAgIH1cblxuICAgIC8qKiBEZXRlcm1pbmUgaWYgdGhlIHZhbHVlIGlzIGEgZHVyYXRpb24uICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGlzRHVyYXRpb24odmFsOiBhbnkpOiB2YWwgaXMgRHVyYXRpb24ge1xuICAgICAgICByZXR1cm4gdmFsIGluc3RhbmNlb2YgRHVyYXRpb247XG4gICAgfVxuXG4gICAgLyoqIERldGVybWluZSBpZiB0aGUgdmFsdWUgaXMgbnVsbCBvciB1bmRlZmluZWQuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGlzTnVsbCh2YWw6IGFueSk6IHZhbCBpcyBudWxsIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHZhbCA9PT0gbnVsbCB8fCB2YWwgPT09IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKiogRGV0ZXJtaW5lIGlmIHRoZSB2YWx1ZSBpcyBhbiBhcnJheS4gKi9cbiAgICBleHBvcnQgZnVuY3Rpb24gaXNBcnJheSh2YWw6IGFueSk6IHZhbCBpcyBhbnlbXSB7XG4gICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbCk7XG4gICAgfVxuXG4gICAgLyoqIERldGVybWluZSBpZiB0aGUgdmFsdWUgaXMgYSBib29sZWFuLiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiBpc0Jvb2xlYW4odmFsOiBhbnkpOiB2YWwgaXMgYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgdmFsID09PSBcImJvb2xlYW5cIjtcbiAgICB9XG5cbiAgICAvKiogRGV0ZXJtaW5lIGlmIHRoZSB2YWx1ZSBpcyBhIGxpbmsuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGlzTGluayh2YWw6IGFueSk6IHZhbCBpcyBMaW5rIHtcbiAgICAgICAgcmV0dXJuIHZhbCBpbnN0YW5jZW9mIExpbms7XG4gICAgfVxuXG4gICAgLyoqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gdmFsdWUgaXMgYW4gb2JqZWN0IChhbmQgbm90IGFueSBvdGhlciBkYXRhY29yZS1yZWNvZ25pemVkIG9iamVjdC1saWtlIHR5cGUpLiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiBpc09iamVjdCh2YWw6IGFueSk6IHZhbCBpcyBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHZhbCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICB0eXBlb2YgdmFsID09IFwib2JqZWN0XCIgJiZcbiAgICAgICAgICAgICFpc0FycmF5KHZhbCkgJiZcbiAgICAgICAgICAgICFpc0R1cmF0aW9uKHZhbCkgJiZcbiAgICAgICAgICAgICFpc0RhdGUodmFsKSAmJlxuICAgICAgICAgICAgIWlzTGluayh2YWwpICYmXG4gICAgICAgICAgICAhaXNOdWxsKHZhbClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKiogRGV0ZXJtaW5lcyBpZiB0aGUgZ2l2ZW4gdmFsdWUgaXMgYSBqYXZhc2NyaXB0IGZ1bmN0aW9uLiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiBpc0Z1bmN0aW9uKHZhbDogYW55KTogdmFsIGlzIEZ1bmN0aW9uIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiB2YWwgPT0gXCJmdW5jdGlvblwiO1xuICAgIH1cbn1cblxuLyoqIEEgZ3JvdXBpbmcgb24gYSB0eXBlIHdoaWNoIHN1cHBvcnRzIHJlY3Vyc2l2ZWx5LW5lc3RlZCBncm91cHMuXG4gKiBAZ3JvdXAgQ29tbW9uIFR5cGVzXG4gKi9cbmV4cG9ydCB0eXBlIEdyb3VwRWxlbWVudDxUPiA9IHsga2V5OiBMaXRlcmFsOyByb3dzOiBHcm91cGluZzxUPiB9O1xuLyoqXG4gKiBBIGdyb3VwaW5nLCB3aGljaCBjYW4gYmUgZWl0aGVyOlxuICogLSBhbiBhcnJheSBvZiBlbGVtZW50cyBvZiB0eXBlIGBUYCwgb3JcbiAqIC0gYW4gYXJyYXkgb2Yge0BsaW5rIEdyb3VwZWxlbWVudH1zXG4gKlxuICogQGdyb3VwIENvbW1vbiBUeXBlc1xuICovXG5leHBvcnQgdHlwZSBHcm91cGluZzxUPiA9IFRbXSB8IEdyb3VwRWxlbWVudDxUPltdO1xuLyoqXG4gKiBAaGlkZGVuXG4gKi9cbmV4cG9ydCBuYW1lc3BhY2UgR3JvdXBpbmdzIHtcbiAgICAvKiogRGV0ZXJtaW5lcyBpZiB0aGUgZ2l2ZW4gZ3JvdXAgZW50cnkgaXMgYSBzdGFuZGFsb25lIHZhbHVlLCBvciBhIGdyb3VwaW5nIG9mIHN1Yi1lbnRyaWVzLiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiBpc0VsZW1lbnRHcm91cDxUPihlbnRyeTogYW55KTogZW50cnkgaXMgR3JvdXBFbGVtZW50PFQ+IHtcbiAgICAgICAgcmV0dXJuIExpdGVyYWxzLmlzT2JqZWN0KGVudHJ5KSAmJiBPYmplY3Qua2V5cyhlbnRyeSkubGVuZ3RoID09IDIgJiYgXCJrZXlcIiBpbiBlbnRyeSAmJiBcInJvd3NcIiBpbiBlbnRyeTtcbiAgICB9XG5cbiAgICAvKiogRGV0ZXJtaW5lcyBpZiB0aGUgZ2l2ZW4gYXJyYXkgaXMgYSBncm91cGluZyBhcnJheS4gKi9cbiAgICBleHBvcnQgZnVuY3Rpb24gaXNHcm91cGluZzxUPihlbnRyeTogR3JvdXBpbmc8VD4pOiBlbnRyeSBpcyBHcm91cEVsZW1lbnQ8VD5bXSB7XG4gICAgICAgIGZvciAobGV0IGVsZW1lbnQgb2YgZW50cnkpIGlmICghaXNFbGVtZW50R3JvdXAoZWxlbWVudCkpIHJldHVybiBmYWxzZTtcblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKiogRGV0ZXJtaW5lcyBpZiB0aGUgZ2l2ZW4gYXJyYXkgaXMgYSBsZWFmIGFuZCBoYXMgbm8gc3ViZ3JvdXBpbmdzLiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiBpc0xlYWY8VD4oZW50cnk6IEdyb3VwaW5nPFQ+KTogZW50cnkgaXMgVFtdIHtcbiAgICAgICAgZm9yIChsZXQgZWxlbWVudCBvZiBlbnRyeSkgaWYgKGlzRWxlbWVudEdyb3VwKGVsZW1lbnQpKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLyoqIENvdW50IHRoZSB0b3RhbCBudW1iZXIgb2YgZWxlbWVudHMgaW4gYSByZWN1cnNpdmUgZ3JvdXBpbmcuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGNvdW50PFQ+KGVsZW1lbnRzOiBHcm91cGluZzxUPiB8IEdyb3VwRWxlbWVudDxUPik6IG51bWJlciB7XG4gICAgICAgIGlmIChpc0VsZW1lbnRHcm91cChlbGVtZW50cykpIHtcbiAgICAgICAgICAgIHJldHVybiBjb3VudChlbGVtZW50cy5yb3dzKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0dyb3VwaW5nKGVsZW1lbnRzKSkge1xuICAgICAgICAgICAgbGV0IHJlc3VsdCA9IDA7XG4gICAgICAgICAgICBmb3IgKGxldCBzdWJncm91cCBvZiBlbGVtZW50cykgcmVzdWx0ICs9IGNvdW50KHN1Ymdyb3VwLnJvd3MpO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBlbGVtZW50cy5sZW5ndGg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogUmVjdXJzaXZlbHkgc2xpY2UgYSBncm91cGluZywgcHJlc2VydmluZyB0aGUgZ3JvdXAgc3RydWN0dXJlIHRoYXQgY29udGFpbnMgZWxlbWVudHMgW3N0YXJ0Li4uZW5kKS4gKi9cbiAgICBleHBvcnQgZnVuY3Rpb24gc2xpY2U8VD4oZWxlbWVudHM6IEdyb3VwaW5nPFQ+LCBzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlcik6IEdyb3VwaW5nPFQ+IHtcbiAgICAgICAgaWYgKGVuZCA8PSBzdGFydCkgcmV0dXJuIFtdO1xuICAgICAgICBpZiAoaXNMZWFmKGVsZW1lbnRzKSkgcmV0dXJuIGVsZW1lbnRzLnNsaWNlKHN0YXJ0LCBlbmQpO1xuXG4gICAgICAgIC8vIEZpbmQgdGhlIGZpcnN0IGdyb3VwIHRoYXQgY29udGFpbnMgaW5kZXggYHN0YXJ0YC5cbiAgICAgICAgbGV0IGluZGV4ID0gMCxcbiAgICAgICAgICAgIHNlZW4gPSAwO1xuICAgICAgICB3aGlsZSAoaW5kZXggPCBlbGVtZW50cy5sZW5ndGggJiYgc2VlbiArIGNvdW50KGVsZW1lbnRzW2luZGV4XSkgPD0gc3RhcnQpIHtcbiAgICAgICAgICAgIHNlZW4gKz0gY291bnQoZWxlbWVudHNbaW5kZXhdKTtcbiAgICAgICAgICAgIGluZGV4Kys7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBzdGFydCB3YXMgZ3JlYXRlciB0aGFuIHRoZSBlbnRpcmUgbGVuZ3RoIG9mIHRoZSBncm91cGluZ3MuXG4gICAgICAgIGlmIChpbmRleCA+PSBlbGVtZW50cy5sZW5ndGgpIHJldHVybiBbXTtcblxuICAgICAgICBjb25zdCByZXN1bHQ6IHsga2V5OiBMaXRlcmFsOyByb3dzOiBHcm91cGluZzxUPiB9W10gPSBbXTtcbiAgICAgICAgd2hpbGUgKGluZGV4IDwgZWxlbWVudHMubGVuZ3RoICYmIHNlZW4gPCBlbmQpIHtcbiAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gZWxlbWVudHNbaW5kZXhdO1xuICAgICAgICAgICAgY29uc3QgZ3JvdXBTaXplID0gY291bnQoZ3JvdXApO1xuICAgICAgICAgICAgY29uc3QgZ3JvdXBTdGFydCA9IE1hdGgubWF4KHNlZW4sIHN0YXJ0KTtcbiAgICAgICAgICAgIGNvbnN0IGdyb3VwRW5kID0gTWF0aC5taW4oZ3JvdXBTaXplICsgc2VlbiwgZW5kKTtcblxuICAgICAgICAgICAgcmVzdWx0LnB1c2goe1xuICAgICAgICAgICAgICAgIGtleTogZ3JvdXAua2V5LFxuICAgICAgICAgICAgICAgIHJvd3M6IHNsaWNlKGdyb3VwLnJvd3MsIGdyb3VwU3RhcnQgLSBzZWVuLCBncm91cEVuZCAtIHNlZW4pLFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHNlZW4gKz0gZ3JvdXBTaXplO1xuICAgICAgICAgICAgaW5kZXgrKztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxufVxuIiwgIi8qKlxuICogQG1vZHVsZSBhcGlcbiAqL1xuLyoqXG4gKiAgRnVuY3Rpb25hbCByZXR1cm4gdHlwZSBmb3IgZXJyb3IgaGFuZGxpbmcuXG4gKiBAaGlkZGVuXG4gKiAqL1xuZXhwb3J0IGNsYXNzIFN1Y2Nlc3M8VCwgRT4ge1xuICAgIHB1YmxpYyBzdWNjZXNzZnVsOiB0cnVlO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHB1YmxpYyB2YWx1ZTogVCkge1xuICAgICAgICB0aGlzLnN1Y2Nlc3NmdWwgPSB0cnVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBtYXA8VT4oZjogKGE6IFQpID0+IFUpOiBSZXN1bHQ8VSwgRT4ge1xuICAgICAgICByZXR1cm4gbmV3IFN1Y2Nlc3MoZih0aGlzLnZhbHVlKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGZsYXRNYXA8VT4oZjogKGE6IFQpID0+IFJlc3VsdDxVLCBFPik6IFJlc3VsdDxVLCBFPiB7XG4gICAgICAgIHJldHVybiBmKHRoaXMudmFsdWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBtYXBFcnI8VT4oZjogKGU6IEUpID0+IFUpOiBSZXN1bHQ8VCwgVT4ge1xuICAgICAgICByZXR1cm4gdGhpcyBhcyBhbnkgYXMgUmVzdWx0PFQsIFU+O1xuICAgIH1cblxuICAgIHB1YmxpYyBiaW1hcDxUMiwgRTI+KHN1Y2M6IChhOiBUKSA9PiBUMiwgX2ZhaWw6IChiOiBFKSA9PiBFMik6IFJlc3VsdDxUMiwgRTI+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwKHN1Y2MpIGFzIGFueTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3JFbHNlKF92YWx1ZTogVCk6IFQge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2FzdDxVPigpOiBSZXN1bHQ8VSwgRT4ge1xuICAgICAgICByZXR1cm4gdGhpcyBhcyBhbnk7XG4gICAgfVxuXG4gICAgcHVibGljIG9yRWxzZVRocm93KF9tZXNzYWdlPzogKGU6IEUpID0+IHN0cmluZyk6IFQge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZTtcbiAgICB9XG59XG5cbi8qKiBGdW5jdGlvbmFsIHJldHVybiB0eXBlIGZvciBlcnJvciBoYW5kbGluZy5cbiAqIEBoaWRkZW5cbiAqL1xuZXhwb3J0IGNsYXNzIEZhaWx1cmU8VCwgRT4ge1xuICAgIHB1YmxpYyBzdWNjZXNzZnVsOiBmYWxzZTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihwdWJsaWMgZXJyb3I6IEUpIHtcbiAgICAgICAgdGhpcy5zdWNjZXNzZnVsID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcHVibGljIG1hcDxVPihfZjogKGE6IFQpID0+IFUpOiBSZXN1bHQ8VSwgRT4ge1xuICAgICAgICByZXR1cm4gdGhpcyBhcyBhbnkgYXMgRmFpbHVyZTxVLCBFPjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZmxhdE1hcDxVPihfZjogKGE6IFQpID0+IFJlc3VsdDxVLCBFPik6IFJlc3VsdDxVLCBFPiB7XG4gICAgICAgIHJldHVybiB0aGlzIGFzIGFueSBhcyBGYWlsdXJlPFUsIEU+O1xuICAgIH1cblxuICAgIHB1YmxpYyBtYXBFcnI8VT4oZjogKGU6IEUpID0+IFUpOiBSZXN1bHQ8VCwgVT4ge1xuICAgICAgICByZXR1cm4gbmV3IEZhaWx1cmUoZih0aGlzLmVycm9yKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGJpbWFwPFQyLCBFMj4oX3N1Y2M6IChhOiBUKSA9PiBUMiwgZmFpbDogKGI6IEUpID0+IEUyKTogUmVzdWx0PFQyLCBFMj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXBFcnIoZmFpbCkgYXMgYW55O1xuICAgIH1cblxuICAgIHB1YmxpYyBvckVsc2UodmFsdWU6IFQpOiBUIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBjYXN0PFU+KCk6IFJlc3VsdDxVLCBFPiB7XG4gICAgICAgIHJldHVybiB0aGlzIGFzIGFueTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3JFbHNlVGhyb3cobWVzc2FnZT86IChlOiBFKSA9PiBzdHJpbmcpOiBUIHtcbiAgICAgICAgaWYgKG1lc3NhZ2UpIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKHRoaXMuZXJyb3IpKTtcbiAgICAgICAgZWxzZSB0aHJvdyBuZXcgRXJyb3IoXCJcIiArIHRoaXMuZXJyb3IpO1xuICAgIH1cbn1cblxuLyoqXG4gKiBBIG1vbmFkaWMgcmVzdWx0IHR5cGUgd2hpY2ggc3RvcmVzIGVpdGhlciBcInN1Y2Nlc3NcIiBvciBcImZhaWx1cmVcIi4gQW4gYWx0ZXJuYXRpdmUgaGFuZGxpbmcgZXhjZXB0aW9uYWwgYmVoYXZpb3JcbiAqIGJ5IHVzaW5nIHRoZSByZXR1cm4gdmFsdWUgaW5zdGVhZCBvZiBhbiBleGNlcHRpb24uXG4gKi9cbmV4cG9ydCB0eXBlIFJlc3VsdDxULCBFPiA9IFN1Y2Nlc3M8VCwgRT4gfCBGYWlsdXJlPFQsIEU+O1xuXG4vKipcbiAqIEBoaWRkZW5cbiAqIE1vbmFkaWMgJ1Jlc3VsdCcgdHlwZSB3aGljaCBlbmNhcHN1bGF0ZXMgd2hldGhlciBhIHByb2NlZHVyZSBzdWNjZWVkZWQgb3IgZmFpbGVkLCBhcyB3ZWxsIGFzIGl0J3MgcmV0dXJuIHZhbHVlLlxuICovXG5leHBvcnQgbmFtZXNwYWNlIFJlc3VsdCB7XG4gICAgLyoqIENvbnN0cnVjdCBhIG5ldyBzdWNjZXNzIHJlc3VsdCB3cmFwcGluZyB0aGUgZ2l2ZW4gdmFsdWUuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIHN1Y2Nlc3M8VCwgRT4odmFsdWU6IFQpOiBSZXN1bHQ8VCwgRT4ge1xuICAgICAgICByZXR1cm4gbmV3IFN1Y2Nlc3ModmFsdWUpO1xuICAgIH1cblxuICAgIC8qKiBDb25zdHJ1Y3QgYSBuZXcgZmFpbHVyZSB2YWx1ZSB3cmFwcGluZyB0aGUgZ2l2ZW4gZXJyb3IuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGZhaWx1cmU8VCwgRT4oZXJyb3I6IEUpOiBSZXN1bHQ8VCwgRT4ge1xuICAgICAgICByZXR1cm4gbmV3IEZhaWx1cmUoZXJyb3IpO1xuICAgIH1cblxuICAgIC8qKiBKb2luIHR3byByZXN1bHRzIHdpdGggYSBiaS1mdW5jdGlvbiBhbmQgcmV0dXJuIGEgbmV3IHJlc3VsdC4gKi9cbiAgICBleHBvcnQgZnVuY3Rpb24gZmxhdE1hcDI8VDEsIFQyLCBPLCBFPihcbiAgICAgICAgZmlyc3Q6IFJlc3VsdDxUMSwgRT4sXG4gICAgICAgIHNlY29uZDogUmVzdWx0PFQyLCBFPixcbiAgICAgICAgZjogKGE6IFQxLCBiOiBUMikgPT4gUmVzdWx0PE8sIEU+XG4gICAgKTogUmVzdWx0PE8sIEU+IHtcbiAgICAgICAgaWYgKGZpcnN0LnN1Y2Nlc3NmdWwpIHtcbiAgICAgICAgICAgIGlmIChzZWNvbmQuc3VjY2Vzc2Z1bCkgcmV0dXJuIGYoZmlyc3QudmFsdWUsIHNlY29uZC52YWx1ZSk7XG4gICAgICAgICAgICBlbHNlIHJldHVybiBmYWlsdXJlKHNlY29uZC5lcnJvcik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZmFpbHVyZShmaXJzdC5lcnJvcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogSm9pbiB0d28gcmVzdWx0cyB3aXRoIGEgYmktZnVuY3Rpb24gYW5kIHJldHVybiBhIG5ldyByZXN1bHQuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIG1hcDI8VDEsIFQyLCBPLCBFPihcbiAgICAgICAgZmlyc3Q6IFJlc3VsdDxUMSwgRT4sXG4gICAgICAgIHNlY29uZDogUmVzdWx0PFQyLCBFPixcbiAgICAgICAgZjogKGE6IFQxLCBiOiBUMikgPT4gT1xuICAgICk6IFJlc3VsdDxPLCBFPiB7XG4gICAgICAgIHJldHVybiBmbGF0TWFwMihmaXJzdCwgc2Vjb25kLCAoYSwgYikgPT4gc3VjY2VzcyhmKGEsIGIpKSk7XG4gICAgfVxuXG4gICAgLyoqIE1hcCBhIGZhaWxhYmxlIGZ1bmN0aW9uIG92ZXIgYWxsIGVsZW1lbnRzIGluIHRoZSBsaXN0LCByZXR1cm5pbmcgZWFybHkgb24gZmFpbHVyZS4gKi9cbiAgICBleHBvcnQgZnVuY3Rpb24gbWFwQWxsPFQsIE8sIEU+KGlucHV0OiBJdGVyYWJsZTxUPiwgZnVuYzogKGlucHV0OiBUKSA9PiBSZXN1bHQ8TywgRT4pOiBSZXN1bHQ8T1tdLCBFPiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdDogT1tdID0gW107XG4gICAgICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiBpbnB1dCkge1xuICAgICAgICAgICAgY29uc3Qgb3V0cHV0ID0gZnVuYyhlbGVtZW50KTtcbiAgICAgICAgICAgIGlmICghb3V0cHV0LnN1Y2Nlc3NmdWwpIHJldHVybiBvdXRwdXQuY2FzdCgpO1xuXG4gICAgICAgICAgICByZXN1bHQucHVzaChvdXRwdXQudmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFJlc3VsdC5zdWNjZXNzKHJlc3VsdCk7XG4gICAgfVxuXG4gICAgLyoqIENhdGNoIGFueSBlcnJvcnMgaW4gYSBjYWxsLCByZXR1cm5pbmcgYSByZXN1bHQgaW5zdGVhZC4gKi9cbiAgICBleHBvcnQgZnVuY3Rpb24gdHJ5aW5nPFQ+KGNhbGw6ICgpID0+IFQpOiBSZXN1bHQ8VCwgRXJyb3I+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBSZXN1bHQuc3VjY2VzcyhjYWxsKCkpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIFJlc3VsdC5mYWlsdXJlKGVycm9yKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBDb252ZXJ0IGEgcHJvbWlzZSB3aGljaCBtYXkgdGhyb3cgaW50byBhIHByb21pc2Ugd2hpY2ggcmV0dXJucyBhIHJlc3VsdCBvZiB0aGUgc3VjY2Vzc2Z1bCB2YWx1ZSBvciBhbiBlcnJvci4gKi9cbiAgICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gYXN5bmM8VD4ocHJvbWlzZTogUHJvbWlzZTxUPik6IFByb21pc2U8UmVzdWx0PFQsIEVycm9yPj4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIFJlc3VsdC5zdWNjZXNzKGF3YWl0IHByb21pc2UpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIFJlc3VsdC5mYWlsdXJlKGVycm9yKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsICJpbXBvcnQgeyBSZXN1bHQgfSBmcm9tIFwiYXBpL3Jlc3VsdFwiO1xuXG4vKiogU3RhdGljIHNldCBlbGVtZW50IHdoaWNoIG1hdGNoZXMgZXZlcnl0aGluZy4gKi9cbmV4cG9ydCB0eXBlIEV2ZXJ5dGhpbmcgPSB7IHR5cGU6IFwiZXZlcnl0aGluZ1wiIH07XG4vKiogU3RhdGljIHNldCBlbGVtZW50IHdoaWNoIG1hdGNoZXMgbm90aGluZy4gKi9cbmV4cG9ydCB0eXBlIE5vdGhpbmcgPSB7IHR5cGU6IFwibm90aGluZ1wiIH07XG4vKiogU2V0IHdoaWNoIG1hdGNoZXMgdGhlIG5lZ2F0aW9uIG9mIGEgc2V0LiAqL1xuZXhwb3J0IHR5cGUgTmVnYXRlZDxUPiA9IHsgdHlwZTogXCJuZWdhdGVkXCI7IHZhbHVlOiBTZXQ8VD4gfTtcbi8qKiBTZXQgd2hpY2ggbWF0Y2hlcyBhbiBhY3R1YWwgc2V0IG9mIHZhbHVlcy4gICovXG5leHBvcnQgdHlwZSBBdG9tPFQ+ID0geyB0eXBlOiBcImF0b21cIjsgdmFsdWU6IFNldDxUPiB9O1xuXG4vKiogQWJzdHJhY3QgZmlsdGVyIHR5cGUgd2hpY2ggcmVwcmVzZW50cyB0aGUgcmVzdWx0cyBvZiBhcHBseWluZyBmaWx0ZXIgb3BlcmF0aW9ucyB0byB0aGUgZGF0YSBzdG9yZS4gKi9cbmV4cG9ydCB0eXBlIEZpbHRlcjxUPiA9IEV2ZXJ5dGhpbmcgfCBOb3RoaW5nIHwgQXRvbTxUPiB8IE5lZ2F0ZWQ8VD47XG5cbi8qKiBVdGlsaXR5IGZ1bmN0aW9ucyBmb3IgZWZmaWNpZW50bHkgb3BlcmF0aW5nIG9uIGZpbHRlcnMuICovXG5leHBvcnQgbmFtZXNwYWNlIEZpbHRlcnMge1xuICAgIC8qKiBTdGF0aWMgZmlsdGVyIHdoaWNoIG1hdGNoZXMgZXZlcnl0aGluZy4gKi9cbiAgICBleHBvcnQgY29uc3QgRVZFUllUSElORzogRXZlcnl0aGluZyA9IHsgdHlwZTogXCJldmVyeXRoaW5nXCIgfTtcbiAgICAvKiogU3RhdGljIGZpbHRlciB3aGljaCBtYXRjaGVzIG5vdGhpbmcuICovXG4gICAgZXhwb3J0IGNvbnN0IE5PVEhJTkc6IE5vdGhpbmcgPSB7IHR5cGU6IFwibm90aGluZ1wiIH07XG4gICAgLyoqIEVtcHR5IHNldCBjb25zdGFudC4gKi9cbiAgICBleHBvcnQgY29uc3QgRU1QVFlfU0VUOiBTZXQ8YW55PiA9IG5ldyBTZXQoKTtcblxuICAgIC8qKiBDb25zdHJ1Y3QgYSBuZXcgYXRvbSBmaWx0ZXIuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGF0b208VD4oc2V0OiBTZXQ8VD4pOiBGaWx0ZXI8VD4ge1xuICAgICAgICBpZiAoc2V0LnNpemUgPT0gMCkgcmV0dXJuIE5PVEhJTkc7XG5cbiAgICAgICAgcmV0dXJuIHsgdHlwZTogXCJhdG9tXCIsIHZhbHVlOiBzZXQgfTtcbiAgICB9XG5cbiAgICAvKiogQ29uc3RydWN0IGEgZmlsdGVyIHRoYXQgbWF0Y2hlcyBldmVyeXRoaW5nIG9yIG5vdGhpbmcuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGNvbnN0YW50PFQ+KHZhbHVlOiBib29sZWFuKTogRmlsdGVyPFQ+IHtcbiAgICAgICAgaWYgKHZhbHVlKSByZXR1cm4gRVZFUllUSElORztcbiAgICAgICAgZWxzZSByZXR1cm4gTk9USElORztcbiAgICB9XG5cbiAgICAvKiogQ29uc3RydWN0IGEgbmV3IGF0b20gZmlsdGVyIHdoaWNoIGlzIE5PVEhJTkcgaWYgc2V0IGlzIHVuZGVmaW5lZC4gKi9cbiAgICBleHBvcnQgZnVuY3Rpb24gbnVsbGFibGVBdG9tPFQ+KHNldDogU2V0PFQ+IHwgdW5kZWZpbmVkKTogRmlsdGVyPFQ+IHtcbiAgICAgICAgcmV0dXJuIHNldCAhPT0gdW5kZWZpbmVkID8gYXRvbShzZXQpIDogTk9USElORztcbiAgICB9XG5cbiAgICAvKiogQ29uc3RydWN0IGEgbmVnYXRlZCBhdG9tIGZpbHRlci4gKi9cbiAgICBleHBvcnQgZnVuY3Rpb24gbmVnYXRlZDxUPihzZXQ6IFNldDxUPik6IEZpbHRlcjxUPiB7XG4gICAgICAgIGlmIChzZXQuc2l6ZSA9PSAwKSByZXR1cm4gRVZFUllUSElORztcblxuICAgICAgICByZXR1cm4geyB0eXBlOiBcIm5lZ2F0ZWRcIiwgdmFsdWU6IHNldCB9O1xuICAgIH1cblxuICAgIC8qKiBQcm9kdWNlcyB0aGUgbmVnYXRpb24gb2YgYSBmaWx0ZXIuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIG5lZ2F0ZTxUPihmaWx0ZXI6IEZpbHRlcjxUPik6IEZpbHRlcjxUPiB7XG4gICAgICAgIHN3aXRjaCAoZmlsdGVyLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgXCJldmVyeXRoaW5nXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIE5PVEhJTkc7XG4gICAgICAgICAgICBjYXNlIFwibm90aGluZ1wiOlxuICAgICAgICAgICAgICAgIHJldHVybiBFVkVSWVRISU5HO1xuICAgICAgICAgICAgY2FzZSBcImF0b21cIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gbmVnYXRlZChmaWx0ZXIudmFsdWUpO1xuICAgICAgICAgICAgY2FzZSBcIm5lZ2F0ZWRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYXRvbShmaWx0ZXIudmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIERldGVybWluZSBpZiB0aGUgZ2l2ZW4gZmlsdGVyIGlzIGRlZmluaXRpdmVseSBjdXJyZW50bHkgZW1wdHkuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGVtcHR5PFQ+KGZpbHRlcjogRmlsdGVyPFQ+KTogYm9vbGVhbiB7XG4gICAgICAgIHN3aXRjaCAoZmlsdGVyLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgXCJldmVyeXRoaW5nXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgY2FzZSBcIm5lZ2F0ZWRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICBjYXNlIFwiYXRvbVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBmaWx0ZXIudmFsdWUuc2l6ZSA9PSAwO1xuICAgICAgICAgICAgY2FzZSBcIm5vdGhpbmdcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBSZXNvbHZlIGEgdG9wLWxldmVsIGZpbHRlciB3aXRoIHRoZSBzZXQgb2YgYWxsIGF2YWlsYWJsZSBvYmplY3RzLiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiByZXNvbHZlPFQ+KGZpbHRlcjogRmlsdGVyPFQ+LCBldmVyeXRoaW5nOiBTZXQ8VD4pOiBTZXQ8VD4ge1xuICAgICAgICBzd2l0Y2ggKGZpbHRlci50eXBlKSB7XG4gICAgICAgICAgICBjYXNlIFwiZXZlcnl0aGluZ1wiOlxuICAgICAgICAgICAgICAgIHJldHVybiBldmVyeXRoaW5nO1xuICAgICAgICAgICAgY2FzZSBcIm5vdGhpbmdcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gRU1QVFlfU0VUO1xuICAgICAgICAgICAgY2FzZSBcImF0b21cIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gZmlsdGVyLnZhbHVlO1xuICAgICAgICAgICAgY2FzZSBcIm5lZ2F0ZWRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gc2V0SW50ZXJzZWN0TmVnYXRpb24oZXZlcnl0aGluZywgZmlsdGVyLnZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBJbnRlcnNlY3QgYW4gaXRlcmFibGUgb2YgZmlsdGVycy4gKi9cbiAgICBleHBvcnQgZnVuY3Rpb24gaW50ZXJzZWN0PFQ+KGVsZW1lbnRzOiBJdGVyYWJsZTxGaWx0ZXI8VD4+KTogRmlsdGVyPFQ+IHtcbiAgICAgICAgcmV0dXJuIGxhenlJbnRlcnNlY3QoZWxlbWVudHMsICh4KSA9PiB4KTtcbiAgICB9XG5cbiAgICAvKiogSW50ZXJzZWN0IGZpbHRlcnMgbGF6aWx5LCBzaG9ydC1jaXJjdWl0aW5nIGlmIHRoZSBpbnRlcnNlY3Rpb24gd291bGQgcHJvZHVjZSBOT1RISU5HLiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiBsYXp5SW50ZXJzZWN0PEksIFQ+KFxuICAgICAgICBlbGVtZW50czogSXRlcmFibGU8ST4sXG4gICAgICAgIHByb2R1Y2U6IChpbnB1dDogSSkgPT4gRmlsdGVyPFQ+IHwgdW5kZWZpbmVkXG4gICAgKTogRmlsdGVyPFQ+IHtcbiAgICAgICAgcmV0dXJuIGxhenlGYWlsYWJsZUludGVyc2VjdGlvbihlbGVtZW50cywgKHgpID0+IFJlc3VsdC5zdWNjZXNzKHByb2R1Y2UoeCkpKS5vckVsc2VUaHJvdygpO1xuICAgIH1cblxuICAgIC8qKiBJbnRlcnNlY3QgZmlsdGVycyBsYXppbHksIHNob3J0LWNpcmN1aXRpbmcgaWYgdGhlIGludGVyc2VjdGlvbiB3b3VsZCBwcm9kdWNlIE5PVEhJTkcuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGxhenlGYWlsYWJsZUludGVyc2VjdGlvbjxJLCBULCBFPihcbiAgICAgICAgZWxlbWVudHM6IEl0ZXJhYmxlPEk+LFxuICAgICAgICBwcm9kdWNlOiAoaW5wdXQ6IEkpID0+IFJlc3VsdDxGaWx0ZXI8VD4gfCB1bmRlZmluZWQsIEU+XG4gICAgKTogUmVzdWx0PEZpbHRlcjxUPiwgRT4ge1xuICAgICAgICBjb25zdCBhdG9tczogU2V0PFQ+W10gPSBbXTtcbiAgICAgICAgY29uc3QgbmVnYXRpb25zOiBTZXQ8VD5bXSA9IFtdO1xuICAgICAgICBmb3IgKGxldCBlbGVtZW50IG9mIGVsZW1lbnRzKSB7XG4gICAgICAgICAgICBjb25zdCBtYXliZUZpbHRlciA9IHByb2R1Y2UoZWxlbWVudCk7XG4gICAgICAgICAgICBpZiAoIW1heWJlRmlsdGVyLnN1Y2Nlc3NmdWwpIHJldHVybiBtYXliZUZpbHRlci5jYXN0KCk7XG5cbiAgICAgICAgICAgIGNvbnN0IGZpbHRlciA9IG1heWJlRmlsdGVyLnZhbHVlO1xuICAgICAgICAgICAgaWYgKGZpbHRlciA9PT0gdW5kZWZpbmVkKSBjb250aW51ZTtcblxuICAgICAgICAgICAgLy8gRW1wdHkgZmlsdGVycyB3aWxsIHByb2R1Y2UgYW4gZW1wdHkgaW50ZXJzZWN0aW9uLlxuICAgICAgICAgICAgaWYgKGVtcHR5KGZpbHRlcikpIHJldHVybiBSZXN1bHQuc3VjY2VzcyhOT1RISU5HKTtcbiAgICAgICAgICAgIC8vIEVWRVJZVEhJTkcgZmlsdGVycyBhcmUgcmVkdW5kYW50IGluIEFORHMsIHNraXAgdGhlbS5cbiAgICAgICAgICAgIGlmIChmaWx0ZXIudHlwZSA9PT0gXCJldmVyeXRoaW5nXCIpIGNvbnRpbnVlO1xuXG4gICAgICAgICAgICAvLyBXaWxsIG9ubHkgYmUgbGVmdCB3aXRoIGF0b21zIG9yIG5lZ2F0aW9ucy5cbiAgICAgICAgICAgIGlmIChmaWx0ZXIudHlwZSA9PSBcImF0b21cIikgYXRvbXMucHVzaChmaWx0ZXIudmFsdWUpO1xuICAgICAgICAgICAgZWxzZSBpZiAoZmlsdGVyLnR5cGUgPT0gXCJuZWdhdGVkXCIpIG5lZ2F0aW9ucy5wdXNoKGZpbHRlci52YWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBXZSBzdGFydCB3aXRoIHNvbWV0aGluZyBvZiB0aGUgZm9ybSBhICYmIGIgJiYgIWMgJiYgIWQuXG4gICAgICAgIC8vIElmIG5vIHRlcm1zLCB0aGVuIGV2ZXJ5dGhpbmcgd2FzIEVWRVJZVEhJTkcgc28gcmV0dXJuIHRoYXQuXG4gICAgICAgIC8vIElmIG9ubHkgYXRvbXMsIGp1c3QgaW50ZXJzZWN0IHRoZW0gKGEgJiYgYikuXG4gICAgICAgIC8vIElmIG9ubHkgbmVnYXRpb25zLCB0aGVuIHJld3JpdGUgIWMgJiYgIWQgPT4gIShjIHx8IGQpIGFuZCByZXR1cm4gbmVnYXRlZChjIHx8IGQpLlxuICAgICAgICAvLyBJZiBib3RoLCBjb21wdXRlIHggPSAoYSAmJiBiKSBhbmQgeSA9IChjIHx8IGQpLCBhbmQgdGhlbiBjb21wdXRlIHggJiYgIXkuXG5cbiAgICAgICAgaWYgKGF0b21zLmxlbmd0aCA9PSAwICYmIG5lZ2F0aW9ucy5sZW5ndGggPT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIFJlc3VsdC5zdWNjZXNzKEVWRVJZVEhJTkcpO1xuICAgICAgICB9IGVsc2UgaWYgKGF0b21zLmxlbmd0aCA+IDAgJiYgbmVnYXRpb25zLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gUmVzdWx0LnN1Y2Nlc3MoYXRvbShzZXRJbnRlcnNlY3QoYXRvbXMpKSk7XG4gICAgICAgIH0gZWxzZSBpZiAoYXRvbXMubGVuZ3RoID09IDAgJiYgbmVnYXRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHJldHVybiBSZXN1bHQuc3VjY2VzcyhuZWdhdGVkKHNldFVuaW9uKG5lZ2F0aW9ucykpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBSZXN1bHQuc3VjY2VzcyhGaWx0ZXJzLmF0b20oc2V0SW50ZXJzZWN0TmVnYXRpb24oc2V0SW50ZXJzZWN0KGF0b21zKSwgc2V0VW5pb24obmVnYXRpb25zKSkpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBVbmlvbiBmaWx0ZXJzLCBwcm9kdWNpbmcgYSBzaW5nbGUgcmVzdWx0IGZpbHRlci4gKi9cbiAgICBleHBvcnQgZnVuY3Rpb24gdW5pb248VD4oZmlsdGVyczogSXRlcmFibGU8RmlsdGVyPFQ+Pik6IEZpbHRlcjxUPiB7XG4gICAgICAgIHJldHVybiBsYXp5VW5pb24oZmlsdGVycywgKHgpID0+IHgpO1xuICAgIH1cblxuICAgIC8qKiBVbmlvbiBmaWx0ZXJzIGxhemlseSwgc2hvcnQtY2lyY3VpdGluZyBpZiB0aGUgdW5pb24gd291bGQgcHJvZHVjZSBFVkVSWVRISU5HLiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiBsYXp5VW5pb248SSwgVD4oZWxlbWVudHM6IEl0ZXJhYmxlPEk+LCBwcm9kdWNlOiAoaW5wdXQ6IEkpID0+IEZpbHRlcjxUPiB8IHVuZGVmaW5lZCk6IEZpbHRlcjxUPiB7XG4gICAgICAgIHJldHVybiBsYXp5RmFpbGFibGVVbmlvbihlbGVtZW50cywgKHgpID0+IFJlc3VsdC5zdWNjZXNzKHByb2R1Y2UoeCkpKS5vckVsc2VUaHJvdygpO1xuICAgIH1cblxuICAgIC8qKiBVbmlvbiBmaWx0ZXJzIGxhemlseSwgc2hvcnQtY2lyY3VpdGluZyBpZiB0aGUgdW5pb24gd291bGQgcHJvZHVjZSBFVkVSWVRISU5HLiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiBsYXp5RmFpbGFibGVVbmlvbjxJLCBULCBFPihcbiAgICAgICAgZWxlbWVudHM6IEl0ZXJhYmxlPEk+LFxuICAgICAgICBwcm9kdWNlOiAoaW5wdXQ6IEkpID0+IFJlc3VsdDxGaWx0ZXI8VD4gfCB1bmRlZmluZWQsIEU+XG4gICAgKTogUmVzdWx0PEZpbHRlcjxUPiwgRT4ge1xuICAgICAgICBjb25zdCBhdG9tczogU2V0PFQ+W10gPSBbXTtcbiAgICAgICAgY29uc3QgbmVnYXRpb25zOiBTZXQ8VD5bXSA9IFtdO1xuICAgICAgICBmb3IgKGxldCBlbGVtZW50IG9mIGVsZW1lbnRzKSB7XG4gICAgICAgICAgICBjb25zdCBtYXliZUZpbHRlciA9IHByb2R1Y2UoZWxlbWVudCk7XG4gICAgICAgICAgICBpZiAoIW1heWJlRmlsdGVyLnN1Y2Nlc3NmdWwpIHJldHVybiBtYXliZUZpbHRlci5jYXN0KCk7XG5cbiAgICAgICAgICAgIGNvbnN0IGZpbHRlciA9IG1heWJlRmlsdGVyLnZhbHVlO1xuICAgICAgICAgICAgaWYgKGZpbHRlciA9PT0gdW5kZWZpbmVkKSBjb250aW51ZTtcblxuICAgICAgICAgICAgLy8gRVZFUllUSElORyBmaWx0ZXJzIHdpbGwgcHJvZHVjZSBldmVyeXRoaW5nIGFsd2F5cy5cbiAgICAgICAgICAgIGlmIChmaWx0ZXIudHlwZSA9PT0gXCJldmVyeXRoaW5nXCIpIHJldHVybiBSZXN1bHQuc3VjY2VzcyhFVkVSWVRISU5HKTtcbiAgICAgICAgICAgIC8vIEVtcHR5IGZpbHRlcnMgYXJlIHJlZHVuZGFudC5cbiAgICAgICAgICAgIGlmIChlbXB0eShmaWx0ZXIpKSBjb250aW51ZTtcblxuICAgICAgICAgICAgLy8gV2lsbCBvbmx5IGJlIGxlZnQgd2l0aCBhdG9tcyBvciBuZWdhdGlvbnMuXG4gICAgICAgICAgICBpZiAoZmlsdGVyLnR5cGUgPT0gXCJhdG9tXCIpIGF0b21zLnB1c2goZmlsdGVyLnZhbHVlKTtcbiAgICAgICAgICAgIGVsc2UgaWYgKGZpbHRlci50eXBlID09IFwibmVnYXRlZFwiKSBuZWdhdGlvbnMucHVzaChmaWx0ZXIudmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gT3IgaXMgYSBiaXQgaGFyZGVyIHRoYW4gQU5EIHNpbmNlIHlvdSBjYW4gZW5kIHVwIHdpdGggc2NlbmFyaW9zIGxpa2UgYSB8fCAhYiwgd2hpY2ggYXJlXG4gICAgICAgIC8vIG5vdCBjb21wdXRhYmxlIGRpcmVjdGx5LiBIb3dldmVyLCB3ZSBjYW4gZG8gYm9vbGVhbiBsb2dpYyB0byBhbHdheXMgcHJvZHVjZSBhIHNpbmdsZVxuICAgICAgICAvLyBzZXQuXG4gICAgICAgIC8vIElmIG5vdGhpbmcgPT4gbm90aGluZywgbm8gbm9uLWVtcHR5IGZpbHRlcnMuXG4gICAgICAgIC8vIElmIGF0b21zIGJ1dCBubyBuZWdhdGlvbnMgKGEgfHwgYiB8fCBjKSA9PiBjb21wdXRlIHVuaW9uLlxuICAgICAgICAvLyBJZiBuZWdhdGlvbnMgYnV0IG5vIGF0b21zICghYSB8fCAhYiB8fCAhYykgPT4gcmV3cml0ZSBhcyAhKGEgJiYgYiAmJiBjKS5cbiAgICAgICAgLy8gSWYgYm90aDogKGEgfHwgYiB8fCAhYyB8fCAhZCkgPT4gY29tYmluZSBlYWNoIHBhcnQgaW50byAoYSB8fCBiKSB8fCAoIWMgfHwgIWQpID0+IChhIHx8IGIpIHx8ICEoYyAmJiBkKSA9PiBlIHx8ICFmID0+ICEoIWUgJiYgZikgd2hpY2hcbiAgICAgICAgLy8gY2FuIGJlIGNvbXB1dGVkIHVzaW5nIGludGVyc2VjdGlvbiBsb2dpYy5cblxuICAgICAgICBpZiAoYXRvbXMubGVuZ3RoID09IDAgJiYgbmVnYXRpb25zLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gUmVzdWx0LnN1Y2Nlc3MoTk9USElORyk7XG4gICAgICAgIH0gZWxzZSBpZiAoYXRvbXMubGVuZ3RoID4gMCAmJiBuZWdhdGlvbnMubGVuZ3RoID09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBSZXN1bHQuc3VjY2VzcyhGaWx0ZXJzLmF0b20oc2V0VW5pb24oYXRvbXMpKSk7XG4gICAgICAgIH0gZWxzZSBpZiAoYXRvbXMubGVuZ3RoID09IDAgJiYgbmVnYXRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHJldHVybiBSZXN1bHQuc3VjY2VzcyhGaWx0ZXJzLm5lZ2F0ZWQoc2V0SW50ZXJzZWN0KG5lZ2F0aW9ucykpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBSZXN1bHQuc3VjY2VzcyhuZWdhdGVkKHNldEludGVyc2VjdE5lZ2F0aW9uKHNldEludGVyc2VjdChuZWdhdGlvbnMpLCBzZXRVbmlvbihhdG9tcykpKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogRWZmaWNpZW50bHkgY29tcHV0ZSB0aGUgaW50ZXJzZWN0aW9uIG9mIHNldHMuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIHNldEludGVyc2VjdDxUPihzZXRzOiBTZXQ8VD5bXSk6IFNldDxUPiB7XG4gICAgICAgIGlmIChzZXRzLmxlbmd0aCA9PSAwKSByZXR1cm4gbmV3IFNldCgpO1xuICAgICAgICBlbHNlIGlmIChzZXRzLmxlbmd0aCA9PSAxKSByZXR1cm4gc2V0c1swXTtcblxuICAgICAgICAvLyBTb3J0IGJ5IHNpemUgYW5kIGNvbWJpbmUgc21hbGxlc3QgYW5kIGxhcmdlc3Qgc2V0IHJlcGVhdGVkbHkuXG4gICAgICAgIGxldCBzb3J0ZWQgPSAoW10gYXMgU2V0PFQ+W10pLmNvbmNhdChzZXRzKS5zb3J0KChhLCBiKSA9PiBhLnNpemUgLSBiLnNpemUpO1xuXG4gICAgICAgIHdoaWxlIChzb3J0ZWQubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gbmV3IFNldDxUPigpO1xuICAgICAgICAgICAgY29uc3QgbGFyZ2VzdCA9IHNvcnRlZC5wb3AoKSE7XG5cbiAgICAgICAgICAgIGZvciAobGV0IGVsZW1lbnQgb2Ygc29ydGVkWzBdKSB7XG4gICAgICAgICAgICAgICAgaWYgKGxhcmdlc3QuaGFzKGVsZW1lbnQpKSByZXN1bHQuYWRkKGVsZW1lbnQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzb3J0ZWRbMF0gPSByZXN1bHQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc29ydGVkWzBdO1xuICAgIH1cblxuICAgIC8qKiBFZmZpY2llbnRseSBjb21wdXRlIHRoZSB1bmlvbiBvZiBzZXRzLiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiBzZXRVbmlvbjxUPihzZXRzOiBTZXQ8VD5bXSk6IFNldDxUPiB7XG4gICAgICAgIGlmIChzZXRzLmxlbmd0aCA9PSAwKSByZXR1cm4gbmV3IFNldCgpO1xuICAgICAgICBlbHNlIGlmIChzZXRzLmxlbmd0aCA9PSAxKSByZXR1cm4gc2V0c1swXTtcblxuICAgICAgICAvLyBJJ20gbm90IHN1cmUgaWYgdGhlcmUgaXMgYW55IHVzZWZ1bCBvcHRpbWl6YXRpb24gZm9yIHNldCB1bmlvbnMsIHNvIGp1c3QgYWRkIHRoZW0gYWxsIEkgZ3Vlc3MuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBTZXQ8VD4oKTtcbiAgICAgICAgZm9yIChjb25zdCBzZXQgb2Ygc2V0cykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBlbGVtZW50IG9mIHNldCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQoZWxlbWVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKiBFZmZpY2llbnRseSBjb21wdXRlIGF0b20gJiYgIW5lZ2F0ZWQuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIHNldEludGVyc2VjdE5lZ2F0aW9uPFQ+KGF0b206IFNldDxUPiwgbmVnYXRlZDogU2V0PFQ+KTogU2V0PFQ+IHtcbiAgICAgICAgaWYgKGF0b20uc2l6ZSA+IG5lZ2F0ZWQuc2l6ZSkge1xuICAgICAgICAgICAgLy8gVE9ETzogV291bGQgYmUgbmljZSB0byBhdm9pZCB0aGUgY29weSwgc2luY2UgSSdtIG5vdCBzdXJlIGl0J3MgYW55IGZhc3RlciB3aXRoIHRoZSBjb3B5LlxuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gbmV3IFNldChhdG9tKTtcbiAgICAgICAgICAgIGZvciAobGV0IGVsZW1lbnQgb2YgbmVnYXRlZCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5kZWxldGUoZWxlbWVudCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0gLyogYXRvbS5zaXplIDwgbmVnYXRpb24uc2l6ZSAqLyBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBTZXQ8VD4oKTtcbiAgICAgICAgICAgIGZvciAobGV0IGVsZW1lbnQgb2YgYXRvbSkge1xuICAgICAgICAgICAgICAgIGlmIChuZWdhdGVkLmhhcyhlbGVtZW50KSkgY29udGludWU7XG4gICAgICAgICAgICAgICAgcmVzdWx0LmFkZChlbGVtZW50KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsICJpbXBvcnQgeyBMaXRlcmFsLCBMaXRlcmFscyB9IGZyb20gXCJleHByZXNzaW9uL2xpdGVyYWxcIjtcbmltcG9ydCB7IEZpbHRlcnMgfSBmcm9tIFwiLi9maWx0ZXJzXCI7XG5cbi8qKiBDb21wYXJpc29uIG9wZXJhdG9ycyB3aGljaCB5aWVsZCB0cnVlL2ZhbHNlLiAqL1xuZXhwb3J0IHR5cGUgQ29tcGFyZU9wID0gXCI+XCIgfCBcIj49XCIgfCBcIjw9XCIgfCBcIjxcIiB8IFwiPVwiIHwgXCIhPVwiO1xuLyoqIEFyaXRobWV0aWMgb3BlcmF0b3JzIHdoaWNoIHlpZWxkIG51bWJlcnMgYW5kIG90aGVyIHZhbHVlcy4gKi9cbmV4cG9ydCB0eXBlIEFyaXRobWV0aWNPcCA9IFwiK1wiIHwgXCItXCIgfCBcIipcIiB8IFwiL1wiIHwgXCIlXCIgfCBcIiZcIiB8IFwifFwiO1xuLyoqIEluZGV4IGEgdmFsdWUgaW50byBhbm90aGVyIHZhbHVlLiAqL1xuZXhwb3J0IHR5cGUgTG9naWNhbE9wID0gXCJpbmRleFwiO1xuLyoqIEFsbCB2YWxpZCBiaW5hcnkgb3BlcmF0b3JzLiAqL1xuZXhwb3J0IHR5cGUgQmluYXJ5T3AgPSBDb21wYXJlT3AgfCBBcml0aG1ldGljT3AgfCBMb2dpY2FsT3A7XG5cbmV4cG9ydCB0eXBlIEV4cHJlc3Npb24gPVxuICAgIHwgTGl0ZXJhbEV4cHJlc3Npb25cbiAgICB8IFZhcmlhYmxlRXhwcmVzc2lvblxuICAgIHwgTGlzdEV4cHJlc3Npb25cbiAgICB8IE9iamVjdEV4cHJlc3Npb25cbiAgICB8IEJpbmFyeU9wRXhwcmVzc2lvblxuICAgIHwgRnVuY3Rpb25FeHByZXNzaW9uXG4gICAgfCBMYW1iZGFFeHByZXNzaW9uXG4gICAgfCBOZWdhdGVkRXhwcmVzc2lvbjtcblxuLyoqIExpdGVyYWwgcmVwcmVzZW50YXRpb24gb2Ygc29tZSBmaWVsZCB0eXBlLiAqL1xuZXhwb3J0IGludGVyZmFjZSBMaXRlcmFsRXhwcmVzc2lvbiB7XG4gICAgdHlwZTogXCJsaXRlcmFsXCI7XG4gICAgdmFsdWU6IExpdGVyYWw7XG59XG5cbi8qKiBBIHZhcmlhYmxlIGZpZWxkIGZvciBhIHZhcmlhYmxlIHdpdGggYSBnaXZlbiBuYW1lLiAqL1xuZXhwb3J0IGludGVyZmFjZSBWYXJpYWJsZUV4cHJlc3Npb24ge1xuICAgIHR5cGU6IFwidmFyaWFibGVcIjtcbiAgICBuYW1lOiBzdHJpbmc7XG59XG5cbi8qKiBBIGxpc3QgbGl0ZXJhbCwgd2hpY2ggaXMgYW4gb3JkZXJlZCBjb2xsZWN0aW9uIG9mIGZpZWxkcy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdEV4cHJlc3Npb24ge1xuICAgIHR5cGU6IFwibGlzdFwiO1xuICAgIHZhbHVlczogRXhwcmVzc2lvbltdO1xufVxuXG4vKiogQW4gb2JqZWN0IGxpdGVyYWwsIHdoaWNoIGlzIGEgbWFwcGluZyBvZiBuYW1lIHRvIGZpZWxkLiAqL1xuZXhwb3J0IGludGVyZmFjZSBPYmplY3RFeHByZXNzaW9uIHtcbiAgICB0eXBlOiBcIm9iamVjdFwiO1xuICAgIHZhbHVlczogUmVjb3JkPHN0cmluZywgRXhwcmVzc2lvbj47XG59XG5cbi8qKiBBIGJpbmFyeSBvcGVyYXRvciBleHByZXNzaW9uIHdoaWNoIGNvbWJpbmVzIHR3byBzdWJub2RlcyBzb21laG93LiAqL1xuZXhwb3J0IGludGVyZmFjZSBCaW5hcnlPcEV4cHJlc3Npb24ge1xuICAgIHR5cGU6IFwiYmluYXJ5b3BcIjtcbiAgICBsZWZ0OiBFeHByZXNzaW9uO1xuICAgIHJpZ2h0OiBFeHByZXNzaW9uO1xuICAgIG9wOiBCaW5hcnlPcDtcbn1cblxuLyoqIEEgZnVuY3Rpb24gZXhwcmVzc2lvbiB3aGljaCBjYWxscyBhIGZ1bmN0aW9uIG9uIDAgb3IgbW9yZSBhcmd1bWVudHMuICovXG5leHBvcnQgaW50ZXJmYWNlIEZ1bmN0aW9uRXhwcmVzc2lvbiB7XG4gICAgdHlwZTogXCJmdW5jdGlvblwiO1xuICAgIC8qKiBFaXRoZXIgdGhlIG5hbWUgb2YgdGhlIGZ1bmN0aW9uIGJlaW5nIGNhbGxlZCBvciBhIEZ1bmN0aW9uIG9iamVjdC4gKi9cbiAgICBmdW5jOiBFeHByZXNzaW9uO1xuICAgIC8qKiBUaGUgbGlzdCBvZiBhcmd1bWVudHMgYmVpbmcgcGFzc2VkIHRvIHRoZSBmdW5jdGlvbi4gKi9cbiAgICBhcmd1bWVudHM6IEV4cHJlc3Npb25bXTtcbn1cblxuLyoqIEFuIGlubGluZSBmdW5jdGlvbiBhY2NlcHRpbmcgb25lIG9yIG1vcmUgYXJndW1lbnRzIGFuZCBwcm9kdWNpbmcgYSB2YWx1ZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGFtYmRhRXhwcmVzc2lvbiB7XG4gICAgdHlwZTogXCJsYW1iZGFcIjtcbiAgICAvKiogQW4gb3JkZXJlZCBsaXN0IG9mIG5hbWVkIGFyZ3VtZW50cy4gKi9cbiAgICBhcmd1bWVudHM6IHN0cmluZ1tdO1xuICAgIC8qKiBUaGUgZmllbGQgd2hpY2ggd2lsbCBiZSBldmFsdWF0ZWQgdXNpbmcgdGhlIGFyZ3VtZW50cyBpbiBjb250ZXh0LiAqL1xuICAgIHZhbHVlOiBFeHByZXNzaW9uO1xufVxuXG4vKiogQW4gZXhwcmVzc2lvbiB3aGljaCBuZWdhdGVzIHRoZSB2YWx1ZSBvZiB0aGUgb3JpZ2luYWwgZmllbGQuICovXG5leHBvcnQgaW50ZXJmYWNlIE5lZ2F0ZWRFeHByZXNzaW9uIHtcbiAgICB0eXBlOiBcIm5lZ2F0ZWRcIjtcblxuICAgIC8qKiBUaGUgY2hpbGQgZmllbGQgdG8gbmVnYXRlLiAqL1xuICAgIGNoaWxkOiBFeHByZXNzaW9uO1xufVxuXG5leHBvcnQgbmFtZXNwYWNlIEV4cHJlc3Npb25zIHtcbiAgICAvKiogVGhlIGltcGxpY2l0IGZpZWxkIHJlZmVyZW5jaW5nIHRoZSBjdXJyZW50IGZpZWxkLiAqL1xuICAgIGV4cG9ydCBjb25zdCBST1c6IHN0cmluZyA9IFwiJHJvd1wiO1xuXG4gICAgZXhwb3J0IGZ1bmN0aW9uIHZhcmlhYmxlKG5hbWU6IHN0cmluZyk6IFZhcmlhYmxlRXhwcmVzc2lvbiB7XG4gICAgICAgIHJldHVybiB7IHR5cGU6IFwidmFyaWFibGVcIiwgbmFtZSB9O1xuICAgIH1cblxuICAgIGV4cG9ydCBmdW5jdGlvbiBsaXRlcmFsKHZhbHVlOiBMaXRlcmFsKTogTGl0ZXJhbEV4cHJlc3Npb24ge1xuICAgICAgICByZXR1cm4geyB0eXBlOiBcImxpdGVyYWxcIiwgdmFsdWUgfTtcbiAgICB9XG5cbiAgICBleHBvcnQgZnVuY3Rpb24gYmluYXJ5T3AobGVmdDogRXhwcmVzc2lvbiwgb3A6IEJpbmFyeU9wLCByaWdodDogRXhwcmVzc2lvbik6IEV4cHJlc3Npb24ge1xuICAgICAgICByZXR1cm4geyB0eXBlOiBcImJpbmFyeW9wXCIsIGxlZnQsIG9wLCByaWdodCB9IGFzIEJpbmFyeU9wRXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgICBleHBvcnQgZnVuY3Rpb24gaW5kZXgob2JqOiBFeHByZXNzaW9uLCBpbmRleDogRXhwcmVzc2lvbik6IEV4cHJlc3Npb24ge1xuICAgICAgICByZXR1cm4geyB0eXBlOiBcImJpbmFyeW9wXCIsIGxlZnQ6IG9iaiwgcmlnaHQ6IGluZGV4LCBvcDogXCJpbmRleFwiIH07XG4gICAgfVxuXG4gICAgLyoqIENvbnZlcnRzIGEgc3RyaW5nIGluIGRvdC1ub3RhdGlvbi1mb3JtYXQgaW50byBhIHZhcmlhYmxlIHdoaWNoIGluZGV4ZXMuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGluZGV4VmFyaWFibGUobmFtZTogc3RyaW5nKTogRXhwcmVzc2lvbiB7XG4gICAgICAgIGxldCBwYXJ0cyA9IG5hbWUuc3BsaXQoXCIuXCIpO1xuICAgICAgICBsZXQgcmVzdWx0OiBFeHByZXNzaW9uID0gRXhwcmVzc2lvbnMudmFyaWFibGUocGFydHNbMF0pO1xuICAgICAgICBmb3IgKGxldCBpbmRleCA9IDE7IGluZGV4IDwgcGFydHMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgICAgICByZXN1bHQgPSBFeHByZXNzaW9ucy5pbmRleChyZXN1bHQsIEV4cHJlc3Npb25zLmxpdGVyYWwocGFydHNbaW5kZXhdKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIGV4cG9ydCBmdW5jdGlvbiBsYW1iZGEoYXJnczogc3RyaW5nW10sIHZhbHVlOiBFeHByZXNzaW9uKTogTGFtYmRhRXhwcmVzc2lvbiB7XG4gICAgICAgIHJldHVybiB7IHR5cGU6IFwibGFtYmRhXCIsIGFyZ3VtZW50czogYXJncywgdmFsdWUgfTtcbiAgICB9XG5cbiAgICBleHBvcnQgZnVuY3Rpb24gZnVuYyhmdW5jOiBFeHByZXNzaW9uLCBhcmdzOiBFeHByZXNzaW9uW10pOiBGdW5jdGlvbkV4cHJlc3Npb24ge1xuICAgICAgICByZXR1cm4geyB0eXBlOiBcImZ1bmN0aW9uXCIsIGZ1bmMsIGFyZ3VtZW50czogYXJncyB9O1xuICAgIH1cblxuICAgIGV4cG9ydCBmdW5jdGlvbiBsaXN0KHZhbHVlczogRXhwcmVzc2lvbltdKTogTGlzdEV4cHJlc3Npb24ge1xuICAgICAgICByZXR1cm4geyB0eXBlOiBcImxpc3RcIiwgdmFsdWVzIH07XG4gICAgfVxuXG4gICAgZXhwb3J0IGZ1bmN0aW9uIG9iamVjdCh2YWx1ZXM6IFJlY29yZDxzdHJpbmcsIEV4cHJlc3Npb24+KTogT2JqZWN0RXhwcmVzc2lvbiB7XG4gICAgICAgIHJldHVybiB7IHR5cGU6IFwib2JqZWN0XCIsIHZhbHVlcyB9O1xuICAgIH1cblxuICAgIGV4cG9ydCBmdW5jdGlvbiBuZWdhdGUoY2hpbGQ6IEV4cHJlc3Npb24pOiBOZWdhdGVkRXhwcmVzc2lvbiB7XG4gICAgICAgIHJldHVybiB7IHR5cGU6IFwibmVnYXRlZFwiLCBjaGlsZCB9O1xuICAgIH1cblxuICAgIGV4cG9ydCBmdW5jdGlvbiBpc0NvbXBhcmVPcChvcDogQmluYXJ5T3ApOiBvcCBpcyBDb21wYXJlT3Age1xuICAgICAgICByZXR1cm4gb3AgPT0gXCI8PVwiIHx8IG9wID09IFwiPFwiIHx8IG9wID09IFwiPlwiIHx8IG9wID09IFwiPj1cIiB8fCBvcCA9PSBcIiE9XCIgfHwgb3AgPT0gXCI9XCI7XG4gICAgfVxuXG4gICAgLyoqIFJldHVybnMgYSBzZXQgb2YgYWxsIHVuYm91bmQgdmFyaWFibGVzIChpLmUuLCB2YXJpYWJsZXMgbm90IHByb3ZpZGVkIGJ5IGByb3dgLCBsYW1iZGFzLCBvciBzaW1pbGFyLikgKi9cbiAgICBleHBvcnQgZnVuY3Rpb24gdW5ib3VuZFZhcmlhYmxlcyhleHByOiBFeHByZXNzaW9uLCBib3VuZDogU2V0PHN0cmluZz4gPSBuZXcgU2V0KFtST1ddKSk6IFNldDxzdHJpbmc+IHtcbiAgICAgICAgc3dpdGNoIChleHByLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgXCJiaW5hcnlvcFwiOlxuICAgICAgICAgICAgICAgIC8vIFNwZWNpYWwgY2FzZSBgcm93W1wiLi4uLlwiXWAuXG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICBleHByLm9wID09PSBcImluZGV4XCIgJiZcbiAgICAgICAgICAgICAgICAgICAgZXhwci5sZWZ0LnR5cGUgPT0gXCJ2YXJpYWJsZVwiICYmXG4gICAgICAgICAgICAgICAgICAgIGV4cHIubGVmdC5uYW1lID09IFJPVyAmJlxuICAgICAgICAgICAgICAgICAgICBleHByLnJpZ2h0LnR5cGUgPT0gXCJsaXRlcmFsXCIgJiZcbiAgICAgICAgICAgICAgICAgICAgTGl0ZXJhbHMuaXNTdHJpbmcoZXhwci5yaWdodC52YWx1ZSlcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJvdW5kLmhhcyhleHByLnJpZ2h0LnZhbHVlKSkgcmV0dXJuIG5ldyBTZXQoKTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZSByZXR1cm4gbmV3IFNldChbZXhwci5yaWdodC52YWx1ZV0pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIE90aGVyd2lzZSBqdXN0IGNoZWNrIGxlZnQgYW5kIHJpZ2h0LlxuICAgICAgICAgICAgICAgIHJldHVybiBGaWx0ZXJzLnNldFVuaW9uKFt1bmJvdW5kVmFyaWFibGVzKGV4cHIubGVmdCwgYm91bmQpLCB1bmJvdW5kVmFyaWFibGVzKGV4cHIucmlnaHQsIGJvdW5kKV0pO1xuICAgICAgICAgICAgY2FzZSBcImZ1bmN0aW9uXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEZpbHRlcnMuc2V0VW5pb24oZXhwci5hcmd1bWVudHMubWFwKChhKSA9PiB1bmJvdW5kVmFyaWFibGVzKGEsIGJvdW5kKSkpO1xuICAgICAgICAgICAgY2FzZSBcImxhbWJkYVwiOlxuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0JvdW5kID0gYm91bmQgPz8gbmV3IFNldCgpO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgYXJnIG9mIGV4cHIuYXJndW1lbnRzKSBuZXdCb3VuZC5hZGQoYXJnKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiB1bmJvdW5kVmFyaWFibGVzKGV4cHIudmFsdWUsIG5ld0JvdW5kKTtcbiAgICAgICAgICAgIGNhc2UgXCJsaXN0XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEZpbHRlcnMuc2V0VW5pb24oZXhwci52YWx1ZXMubWFwKCh2KSA9PiB1bmJvdW5kVmFyaWFibGVzKHYsIGJvdW5kKSkpO1xuICAgICAgICAgICAgY2FzZSBcIm5lZ2F0ZWRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gdW5ib3VuZFZhcmlhYmxlcyhleHByLmNoaWxkLCBib3VuZCk7XG4gICAgICAgICAgICBjYXNlIFwib2JqZWN0XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEZpbHRlcnMuc2V0VW5pb24oT2JqZWN0LnZhbHVlcyhleHByLnZhbHVlcykubWFwKCh2KSA9PiB1bmJvdW5kVmFyaWFibGVzKHYsIGJvdW5kKSkpO1xuICAgICAgICAgICAgY2FzZSBcInZhcmlhYmxlXCI6XG4gICAgICAgICAgICAgICAgaWYgKGJvdW5kICYmIGJvdW5kLmhhcyhleHByLm5hbWUpKSByZXR1cm4gbmV3IFNldCgpO1xuICAgICAgICAgICAgICAgIGVsc2UgcmV0dXJuIG5ldyBTZXQoW2V4cHIubmFtZV0pO1xuICAgICAgICAgICAgY2FzZSBcImxpdGVyYWxcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFNldCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIFJlbmRlciBhbiBleHByZXNzaW9uIGFzIGEgc3RyaW5nLiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiB0b1N0cmluZyhleHByOiBFeHByZXNzaW9uKTogc3RyaW5nIHtcbiAgICAgICAgc3dpdGNoIChleHByLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgXCJiaW5hcnlvcFwiOlxuICAgICAgICAgICAgICAgIGlmIChleHByLm9wID09PSBcImluZGV4XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGAke3RvU3RyaW5nKGV4cHIubGVmdCl9WyR7dG9TdHJpbmcoZXhwci5yaWdodCl9XWA7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke3RvU3RyaW5nKGV4cHIubGVmdCl9ICR7ZXhwci5vcH0gJHt0b1N0cmluZyhleHByLnJpZ2h0KX1gO1xuICAgICAgICAgICAgY2FzZSBcImZ1bmN0aW9uXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke3RvU3RyaW5nKGV4cHIuZnVuYyl9KCR7ZXhwci5hcmd1bWVudHMubWFwKHRvU3RyaW5nKS5qb2luKFwiLCBcIil9KWA7XG4gICAgICAgICAgICBjYXNlIFwibGFtYmRhXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGAoJHtleHByLmFyZ3VtZW50cy5qb2luKFwiLCBcIil9KSA9PiAke3RvU3RyaW5nKGV4cHIudmFsdWUpfWA7XG4gICAgICAgICAgICBjYXNlIFwibGlzdFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBgWyR7ZXhwci52YWx1ZXMubWFwKHRvU3RyaW5nKS5qb2luKFwiLCBcIil9XWA7XG4gICAgICAgICAgICBjYXNlIFwibmVnYXRlZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBgISR7dG9TdHJpbmcoZXhwci5jaGlsZCl9YDtcbiAgICAgICAgICAgIGNhc2UgXCJvYmplY3RcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYHske09iamVjdC5lbnRyaWVzKGV4cHIudmFsdWVzKVxuICAgICAgICAgICAgICAgICAgICAubWFwKChbaywgdl0pID0+IGAke2t9OiAke3RvU3RyaW5nKHYpfWApXG4gICAgICAgICAgICAgICAgICAgIC5qb2luKFwiLCBcIil9fWA7XG4gICAgICAgICAgICBjYXNlIFwidmFyaWFibGVcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gZXhwci5uYW1lO1xuICAgICAgICAgICAgY2FzZSBcImxpdGVyYWxcIjpcbiAgICAgICAgICAgICAgICBjb25zdCB3cmFwcGVkID0gTGl0ZXJhbHMud3JhcFZhbHVlKGV4cHIudmFsdWUpO1xuICAgICAgICAgICAgICAgIGlmICghd3JhcHBlZCkgcmV0dXJuIFwibnVsbFwiO1xuICAgICAgICAgICAgICAgIHN3aXRjaCAod3JhcHBlZC50eXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJzdHJpbmdcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBgXCIke3dyYXBwZWQudmFsdWV9XCJgO1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIExpdGVyYWxzLnRvU3RyaW5nKHdyYXBwZWQudmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGV4cG9ydCBjb25zdCBOVUxMID0gRXhwcmVzc2lvbnMubGl0ZXJhbChudWxsKTtcbn1cbiIsICIvKiogUGFyc2UgaW5saW5lIGZpZWxkcyBhbmQgb3RoZXIgZW1iZWRkZWQgbWV0YWRhdGEgaW4gYSBsaW5lLiAqL1xuXG5pbXBvcnQgeyBQUklNSVRJVkVTIH0gZnJvbSBcImV4cHJlc3Npb24vcGFyc2VyXCI7XG5pbXBvcnQgeyBMaXRlcmFsIH0gZnJvbSBcImV4cHJlc3Npb24vbGl0ZXJhbFwiO1xuaW1wb3J0ICogYXMgUCBmcm9tIFwicGFyc2ltbW9uXCI7XG5pbXBvcnQgZW1vamlSZWdleCBmcm9tIFwiZW1vamktcmVnZXhcIjtcbmltcG9ydCB7IEpzb25Db252ZXJzaW9uLCBKc29uTGl0ZXJhbCB9IGZyb20gXCJpbmRleC90eXBlcy9qc29uL2NvbW1vblwiO1xuXG4vKiogQSBwYXJzZWQgaW5saW5lIGZpZWxkIGZyb20gYSBzcGVjaWZpYyBsaW5lLiAqL1xuZXhwb3J0IGludGVyZmFjZSBMb2NhbElubGluZUZpZWxkIHtcbiAgICAvKiogVGhlIHJhdyBwYXJzZWQga2V5LiAqL1xuICAgIGtleTogc3RyaW5nO1xuICAgIC8qKiBUaGUgcmF3IHZhbHVlIG9mIHRoZSBmaWVsZC4gKi9cbiAgICB2YWx1ZTogc3RyaW5nO1xuICAgIC8qKiBUaGUgc3RhcnQgY29sdW1uIG9mIHRoZSBmaWVsZC4gKi9cbiAgICBzdGFydDogbnVtYmVyO1xuICAgIC8qKiBUaGUgc3RhcnQgY29sdW1uIG9mIHRoZSAqdmFsdWUqIGZvciB0aGUgZmllbGQuICovXG4gICAgc3RhcnRWYWx1ZTogbnVtYmVyO1xuICAgIC8qKiBUaGUgZW5kIGNvbHVtbiBvZiB0aGUgZmllbGQuICovXG4gICAgZW5kOiBudW1iZXI7XG4gICAgLyoqIElmIHRoaXMgaW5saW5lIGZpZWxkIHdhcyBkZWZpbmVkIHZpYSBhIHdyYXBwaW5nICgnWycgb3IgJygnIG9yICdsaW5rJyksIHRoZW4gdGhlIHdyYXBwaW5nIHRoYXQgd2FzIHVzZWQuICovXG4gICAgd3JhcHBpbmc/OiBzdHJpbmc7XG59XG5cbi8qKiBGdWxsIGlubGluZSBmaWVsZCBtZXRhZGF0YSBmb3IgYW4gb2JqZWN0LiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbmxpbmVGaWVsZCB7XG4gICAgLyoqIFRoZSBhY3R1YWwga2V5IGRlc2NyaWJpbmcgdGhlIGlubGluZSBmaWVsZC4gKi9cbiAgICBrZXk6IHN0cmluZztcbiAgICAvKiogVGhlIHJhdyB2YWx1ZSBvZiB0aGUgaW5saW5lIGZpZWxkLiAqL1xuICAgIHJhdzogc3RyaW5nO1xuICAgIC8qKiBUaGUgcGFyc2VkIHZhbHVlLiAqL1xuICAgIHZhbHVlOiBMaXRlcmFsO1xuICAgIC8qKiBGdWxsIHBvc2l0aW9uIGluZm9ybWF0aW9uIGZvciB3aGVyZSB0aGUgaW5saW5lIGZpZWxkIGlzIGxvY2F0ZWQgaW4gdGhlIGRvY3VtZW50LiAqL1xuICAgIHBvc2l0aW9uOiB7XG4gICAgICAgIC8qKiBUaGUgbGluZSBudW1iZXIgdGhlIGlubGluZSBmaWVsZCBhcHBlYXJzIG9uLiAqL1xuICAgICAgICBsaW5lOiBudW1iZXI7XG4gICAgICAgIC8qKiBUaGUgc3RhcnQgY29sdW1uIG9mIHRoZSBmaWVsZC4gKi9cbiAgICAgICAgc3RhcnQ6IG51bWJlcjtcbiAgICAgICAgLyoqIFRoZSBzdGFydCBjb2x1bW4gb2YgdGhlICp2YWx1ZSogZm9yIHRoZSBmaWVsZC4gSW1tZWRpYXRlbHkgYWZ0ZXIgdGhlICc6OicuICovXG4gICAgICAgIHN0YXJ0VmFsdWU6IG51bWJlcjtcbiAgICAgICAgLyoqIFRoZSBlbmQgY29sdW1uIG9mIHRoZSBmaWVsZC4gKi9cbiAgICAgICAgZW5kOiBudW1iZXI7XG4gICAgfTtcbiAgICAvKiogSWYgdGhpcyBpbmxpbmUgZmllbGQgd2FzIGRlZmluZWQgdmlhIGEgd3JhcHBpbmcgKCdbJyBvciAnKCcgb3IgJ2xpbmsnKSwgdGhlbiB0aGUgd3JhcHBpbmcgdGhhdCB3YXMgdXNlZC4gKi9cbiAgICB3cmFwcGluZz86IHN0cmluZztcbn1cblxuLyoqIEpTT04sIHNlcmlhbGl6YWJsZSByZXByZXNlbnRhdGlvbiBvZiBhbiBpbmxpbmUgZmllbGQuICovXG5leHBvcnQgaW50ZXJmYWNlIEpzb25JbmxpbmVGaWVsZCB7XG4gICAgLyoqIFRoZSBhY3R1YWwga2V5IGRlc2NyaWJpbmcgdGhlIGlubGluZSBmaWVsZC4gKi9cbiAgICBrZXk6IHN0cmluZztcbiAgICAvKiogVGhlIHJhdyB2YWx1ZSBvZiB0aGUgaW5saW5lIGZpZWxkLiAqL1xuICAgIHJhdzogc3RyaW5nO1xuICAgIC8qKiBUaGUgcGFyc2VkIHZhbHVlLiAqL1xuICAgIHZhbHVlOiBKc29uTGl0ZXJhbDtcbiAgICAvKiogRnVsbCBwb3NpdGlvbiBpbmZvcm1hdGlvbiBmb3Igd2hlcmUgdGhlIGlubGluZSBmaWVsZCBpcyBsb2NhdGVkIGluIHRoZSBkb2N1bWVudC4gKi9cbiAgICBwb3NpdGlvbjoge1xuICAgICAgICAvKiogVGhlIGxpbmUgbnVtYmVyIHRoZSBpbmxpbmUgZmllbGQgYXBwZWFycyBvbi4gKi9cbiAgICAgICAgbGluZTogbnVtYmVyO1xuICAgICAgICAvKiogVGhlIHN0YXJ0IGNvbHVtbiBvZiB0aGUgZmllbGQuICovXG4gICAgICAgIHN0YXJ0OiBudW1iZXI7XG4gICAgICAgIC8qKiBUaGUgc3RhcnQgY29sdW1uIG9mIHRoZSAqdmFsdWUqIGZvciB0aGUgZmllbGQuIEltbWVkaWF0ZWx5IGFmdGVyIHRoZSAnOjonLiAqL1xuICAgICAgICBzdGFydFZhbHVlOiBudW1iZXI7XG4gICAgICAgIC8qKiBUaGUgZW5kIGNvbHVtbiBvZiB0aGUgZmllbGQuICovXG4gICAgICAgIGVuZDogbnVtYmVyO1xuICAgIH07XG4gICAgLyoqIElmIHRoaXMgaW5saW5lIGZpZWxkIHdhcyBkZWZpbmVkIHZpYSBhIHdyYXBwaW5nICgnWycgb3IgJygnIG9yICdsaW5rJyksIHRoZW4gdGhlIHdyYXBwaW5nIHRoYXQgd2FzIHVzZWQuICovXG4gICAgd3JhcHBpbmc/OiBzdHJpbmc7XG59XG5cbi8qKiBDb252ZXJ0IGFuIGlubGluZSBmaWVsZCB0byBhIEpTT04gZm9ybWF0LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGpzb25JbmxpbmVGaWVsZChmaWVsZDogSW5saW5lRmllbGQpOiBKc29uSW5saW5lRmllbGQge1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBmaWVsZCwgeyB2YWx1ZTogSnNvbkNvbnZlcnNpb24uanNvbihmaWVsZC52YWx1ZSkgfSk7XG59XG5cbi8qKiBDb252ZXJ0IGEgSlNPTiBpbmxpbmUgZmllbGQgYmFjayB0byBhIHJlZ3VsYXIgZmllbGQuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsdWVJbmxpbmVGaWVsZChmaWVsZDogSnNvbklubGluZUZpZWxkKTogSW5saW5lRmllbGQge1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBmaWVsZCwgeyB2YWx1ZTogSnNvbkNvbnZlcnNpb24udmFsdWUoZmllbGQudmFsdWUpIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNJbmxpbmVGaWVsZChsb2NhbDogTG9jYWxJbmxpbmVGaWVsZCwgbGluZW5vOiBudW1iZXIpOiBJbmxpbmVGaWVsZDtcbmV4cG9ydCBmdW5jdGlvbiBhc0lubGluZUZpZWxkKGxvY2FsOiBMb2NhbElubGluZUZpZWxkW10sIGxpbmVubzogbnVtYmVyKTogSW5saW5lRmllbGRbXTtcbi8qKiBDb252ZXJ0IGEgbG9jYWwgaW5saW5lIGZpZWxkIGludG8gYSBmdWxsIGlubGluZSBmaWVsZCBieSBwZXJmb3JtaW5nIHBhcnNpbmcgYW5kIGFkZGluZyB0aGUgY29ycmVjdCBsaW5lIG51bWJlci4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc0lubGluZUZpZWxkKFxuICAgIGxvY2FsOiBMb2NhbElubGluZUZpZWxkIHwgTG9jYWxJbmxpbmVGaWVsZFtdLFxuICAgIGxpbmVubzogbnVtYmVyXG4pOiBJbmxpbmVGaWVsZCB8IElubGluZUZpZWxkW10ge1xuICAgIGlmIChBcnJheS5pc0FycmF5KGxvY2FsKSkge1xuICAgICAgICByZXR1cm4gbG9jYWwubWFwKChmKSA9PiBhc0lubGluZUZpZWxkKGYsIGxpbmVubykpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAgIGtleTogbG9jYWwua2V5LFxuICAgICAgICByYXc6IGxvY2FsLnZhbHVlLFxuICAgICAgICB2YWx1ZTogcGFyc2VJbmxpbmVWYWx1ZShsb2NhbC52YWx1ZSksXG4gICAgICAgIHBvc2l0aW9uOiB7XG4gICAgICAgICAgICBsaW5lOiBsaW5lbm8sXG4gICAgICAgICAgICBzdGFydDogbG9jYWwuc3RhcnQsXG4gICAgICAgICAgICBzdGFydFZhbHVlOiBsb2NhbC5zdGFydFZhbHVlLFxuICAgICAgICAgICAgZW5kOiBsb2NhbC5lbmQsXG4gICAgICAgIH0sXG4gICAgICAgIHdyYXBwaW5nOiBsb2NhbC53cmFwcGluZyxcbiAgICB9O1xufVxuXG4vKiogVGhlIHdyYXBwZXIgY2hhcmFjdGVycyB0aGF0IGNhbiBiZSB1c2VkIHRvIGRlZmluZSBhbiBpbmxpbmUgZmllbGQuICovXG5leHBvcnQgY29uc3QgSU5MSU5FX0ZJRUxEX1dSQVBQRVJTOiBSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiA9IE9iamVjdC5mcmVlemUoe1xuICAgIFwiW1wiOiBcIl1cIixcbiAgICBcIihcIjogXCIpXCIsXG59KTtcblxuLyoqXG4gKiBGaW5kIGEgbWF0Y2hpbmcgY2xvc2luZyBicmFja2V0IHRoYXQgb2NjdXJzIGF0IG9yIGFmdGVyIGBzdGFydGAsIHJlc3BlY3RpbmcgbmVzdGluZyBhbmQgZXNjYXBlcy4gSWYgZm91bmQsXG4gKiByZXR1cm5zIHRoZSB2YWx1ZSBjb250YWluZWQgd2l0aGluIGFuZCB0aGUgc3RyaW5nIGluZGV4IGFmdGVyIHRoZSBlbmQgb2YgdGhlIHZhbHVlLlxuICovXG5mdW5jdGlvbiBmaW5kQ2xvc2luZyhcbiAgICBsaW5lOiBzdHJpbmcsXG4gICAgc3RhcnQ6IG51bWJlcixcbiAgICBvcGVuOiBzdHJpbmcsXG4gICAgY2xvc2U6IHN0cmluZ1xuKTogeyB2YWx1ZTogc3RyaW5nOyBlbmRJbmRleDogbnVtYmVyIH0gfCB1bmRlZmluZWQge1xuICAgIGxldCBuZXN0aW5nID0gMDtcbiAgICBsZXQgZXNjYXBlZCA9IGZhbHNlO1xuICAgIGZvciAobGV0IGluZGV4ID0gc3RhcnQ7IGluZGV4IDwgbGluZS5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgbGV0IGNoYXIgPSBsaW5lLmNoYXJBdChpbmRleCk7XG5cbiAgICAgICAgLy8gQWxsb3dzIGZvciBkb3VibGUgZXNjYXBlcyBsaWtlICdcXFxcJyB0byBiZSByZW5kZXJlZCBub3JtYWxseS5cbiAgICAgICAgaWYgKGNoYXIgPT0gXCJcXFxcXCIpIHtcbiAgICAgICAgICAgIGVzY2FwZWQgPSAhZXNjYXBlZDtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSWYgZXNjYXBlZCwgaWdub3JlIHRoZSBuZXh0IGNoYXJhY3RlciBmb3IgY29tcHV0aW5nIG5lc3RpbmcsIHJlZ2FyZGxlc3Mgb2Ygd2hhdCBpdCBpcy5cbiAgICAgICAgaWYgKGVzY2FwZWQpIHtcbiAgICAgICAgICAgIGVzY2FwZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNoYXIgPT0gb3BlbikgbmVzdGluZysrO1xuICAgICAgICBlbHNlIGlmIChjaGFyID09IGNsb3NlKSBuZXN0aW5nLS07XG5cbiAgICAgICAgLy8gT25seSBvY2N1cnMgaWYgd2UgYXJlIG9uIGEgY2xvc2UgY2hhcmFjdGVyIGFuZCB0cmhlcmUgaXMgbm8gbW9yZSBuZXN0aW5nLlxuICAgICAgICBpZiAobmVzdGluZyA8IDApIHJldHVybiB7IHZhbHVlOiBsaW5lLnN1YnN0cmluZyhzdGFydCwgaW5kZXgpLnRyaW0oKSwgZW5kSW5kZXg6IGluZGV4ICsgMSB9O1xuXG4gICAgICAgIGVzY2FwZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG4vKiogRmluZCB0aGUgJzo6JyBzZXBhcmF0b3IgaW4gYW4gaW5saW5lIGZpZWxkLiAqL1xuZnVuY3Rpb24gZmluZFNlcGFyYXRvcihsaW5lOiBzdHJpbmcsIHN0YXJ0OiBudW1iZXIpOiB7IGtleTogc3RyaW5nOyB2YWx1ZUluZGV4OiBudW1iZXIgfSB8IHVuZGVmaW5lZCB7XG4gICAgbGV0IHNlcCA9IGxpbmUuaW5kZXhPZihcIjo6XCIsIHN0YXJ0KTtcbiAgICBpZiAoc2VwIDwgMCkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgIHJldHVybiB7IGtleTogbGluZS5zdWJzdHJpbmcoc3RhcnQsIHNlcCkudHJpbSgpLCB2YWx1ZUluZGV4OiBzZXAgKyAyIH07XG59XG5cbi8qKiBUcnkgdG8gY29tcGxldGVseSBwYXJzZSBhbiBpbmxpbmUgZmllbGQgc3RhcnRpbmcgYXQgdGhlIGdpdmVuIHBvc2l0aW9uLiBBc3N1bWVzIGBzdGFydGAgaXMgb24gYSB3cmFwcGluZyBjaGFyYWN0ZXIuICovXG5mdW5jdGlvbiBmaW5kU3BlY2lmaWNJbmxpbmVGaWVsZChsaW5lOiBzdHJpbmcsIHN0YXJ0OiBudW1iZXIpOiBMb2NhbElubGluZUZpZWxkIHwgdW5kZWZpbmVkIHtcbiAgICBsZXQgb3BlbiA9IGxpbmUuY2hhckF0KHN0YXJ0KTtcblxuICAgIGxldCBrZXkgPSBmaW5kU2VwYXJhdG9yKGxpbmUsIHN0YXJ0ICsgMSk7XG4gICAgaWYgKGtleSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgLy8gRmFpbCB0aGUgbWF0Y2ggaWYgd2UgZmluZCBhbnkgc2VwYXJhdG9yIGNoYXJhY3RlcnMgKG5vdCBhbGxvd2VkIGluIGtleXMpLlxuICAgIGZvciAobGV0IHNlcCBvZiBPYmplY3Qua2V5cyhJTkxJTkVfRklFTERfV1JBUFBFUlMpLmNvbmNhdChPYmplY3QudmFsdWVzKElOTElORV9GSUVMRF9XUkFQUEVSUykpKSB7XG4gICAgICAgIGlmIChrZXkua2V5LmluY2x1ZGVzKHNlcCkpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgbGV0IHZhbHVlID0gZmluZENsb3NpbmcobGluZSwga2V5LnZhbHVlSW5kZXgsIG9wZW4sIElOTElORV9GSUVMRF9XUkFQUEVSU1tvcGVuXSk7XG4gICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBrZXk6IGtleS5rZXksXG4gICAgICAgIHZhbHVlOiB2YWx1ZS52YWx1ZSxcbiAgICAgICAgc3RhcnQ6IHN0YXJ0LFxuICAgICAgICBzdGFydFZhbHVlOiBrZXkudmFsdWVJbmRleCxcbiAgICAgICAgZW5kOiB2YWx1ZS5lbmRJbmRleCxcbiAgICAgICAgd3JhcHBpbmc6IG9wZW4sXG4gICAgfTtcbn1cblxuLyoqIFBhcnNlIGEgdGV4dHVhbCBpbmxpbmUgZmllbGQgdmFsdWUgaW50byBzb21ldGhpbmcgd2UgY2FuIHdvcmsgd2l0aC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUlubGluZVZhbHVlKHZhbHVlOiBzdHJpbmcpOiBMaXRlcmFsIHtcbiAgICAvLyBFbXB0eSBpbmxpbmUgdmFsdWVzIChpLmUuLCBubyB0ZXh0KSBzaG91bGQgbWFwIHRvIG51bGwgdG8gbWF0Y2ggbG9uZy10ZXJtIERhdGF2aWV3IHNlbWFudGljcy5cbiAgICAvLyBOdWxsIGlzIGFsc28gYSBtb3JlIHVuaXZlcnNhbCB0eXBlIHRvIGRlYWwgd2l0aCB0aGFuIHN0cmluZ3MsIHNpbmNlIGFsbCBmdW5jdGlvbnMgYWNjZXB0IG51bGxzLlxuICAgIGlmICh2YWx1ZS50cmltKCkgPT0gXCJcIikgcmV0dXJuIG51bGw7XG5cbiAgICAvLyBUaGUgc3RyaXBwZWQgbGl0ZXJhbCBmaWVsZCBwYXJzZXIgdW5kZXJzdGFuZHMgYWxsIG9mIHRoZSBub24tYXJyYXkvbm9uLW9iamVjdCBmaWVsZHMgYW5kIGNhbiBwYXJzZSB0aGVtIGZvciB1cy5cbiAgICAvLyBJbmxpbmUgZmllbGQgb2JqZWN0cyBhcmUgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQ7IGlubGluZSBhcnJheSBvYmplY3RzIGhhdmUgdG8gYmUgaGFuZGxlZCBieSB0aGUgcGFyc2VyXG4gICAgLy8gc2VwYXJhdGVseS5cbiAgICBsZXQgaW5saW5lID0gUFJJTUlUSVZFUy5pbmxpbmVGaWVsZC5wYXJzZSh2YWx1ZSk7XG4gICAgaWYgKGlubGluZS5zdGF0dXMpIHJldHVybiBpbmxpbmUudmFsdWU7XG4gICAgZWxzZSByZXR1cm4gdmFsdWU7XG59XG5cbi8qKiBFeHRyYWN0cyBpbmxpbmUgZmllbGRzIG9mIHRoZSBmb3JtICdba2V5OjogdmFsdWVdJyBmcm9tIGEgbGluZSBvZiB0ZXh0LiBUaGlzIGlzIGRvbmUgaW4gYSByZWxhdGl2ZWx5XG4gKiBcInJvYnVzdFwiIHdheSB0byBhdm9pZCBmYWlsaW5nIGR1ZSB0byBiYWQgbmVzdGluZyBvciBvdGhlciBpbnRlcmZlcmluZyBNYXJrZG93biBzeW1ib2xzOlxuICpcbiAqIC0gTG9vayBmb3IgYW55IHdyYXBwZXJzICgnWycgYW5kICcoJykgaW4gdGhlIGxpbmUsIHRyeWluZyB0byBwYXJzZSB3aGF0ZXZlciBjb21lcyBhZnRlciBpdCBhcyBhbiBpbmxpbmUga2V5OjouXG4gKiAtIElmIHN1Y2Nlc3NmdWwsIHNjYW4gdW50aWwgeW91IGZpbmQgYSBtYXRjaGluZyBlbmQgYnJhY2tldCwgYW5kIHBhcnNlIHdoYXRldmVyIHJlbWFpbnMgYXMgYW4gaW5saW5lIHZhbHVlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdElubGluZUZpZWxkcyhsaW5lOiBzdHJpbmcsIGluY2x1ZGVUYXNrRmllbGRzOiBib29sZWFuID0gZmFsc2UpOiBMb2NhbElubGluZUZpZWxkW10ge1xuICAgIGxldCBmaWVsZHM6IExvY2FsSW5saW5lRmllbGRbXSA9IFtdO1xuICAgIGZvciAobGV0IHdyYXBwZXIgb2YgT2JqZWN0LmtleXMoSU5MSU5FX0ZJRUxEX1dSQVBQRVJTKSkge1xuICAgICAgICBsZXQgZm91bmRJbmRleCA9IGxpbmUuaW5kZXhPZih3cmFwcGVyKTtcbiAgICAgICAgd2hpbGUgKGZvdW5kSW5kZXggPj0gMCkge1xuICAgICAgICAgICAgbGV0IHBhcnNlZEZpZWxkID0gZmluZFNwZWNpZmljSW5saW5lRmllbGQobGluZSwgZm91bmRJbmRleCk7XG4gICAgICAgICAgICBpZiAoIXBhcnNlZEZpZWxkKSB7XG4gICAgICAgICAgICAgICAgZm91bmRJbmRleCA9IGxpbmUuaW5kZXhPZih3cmFwcGVyLCBmb3VuZEluZGV4ICsgMSk7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZpZWxkcy5wdXNoKHBhcnNlZEZpZWxkKTtcbiAgICAgICAgICAgIGZvdW5kSW5kZXggPSBsaW5lLmluZGV4T2Yod3JhcHBlciwgcGFyc2VkRmllbGQuZW5kKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmIChpbmNsdWRlVGFza0ZpZWxkcykgZmllbGRzID0gZmllbGRzLmNvbmNhdChleHRyYWN0U3BlY2lhbFRhc2tGaWVsZHMobGluZSkpO1xuXG4gICAgZmllbGRzLnNvcnQoKGEsIGIpID0+IGEuc3RhcnQgLSBiLnN0YXJ0KTtcblxuICAgIGxldCBmaWx0ZXJlZEZpZWxkczogTG9jYWxJbmxpbmVGaWVsZFtdID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmaWVsZHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKGkgPT0gMCB8fCBmaWx0ZXJlZEZpZWxkc1tmaWx0ZXJlZEZpZWxkcy5sZW5ndGggLSAxXS5lbmQgPCBmaWVsZHNbaV0uc3RhcnQpIHtcbiAgICAgICAgICAgIGZpbHRlcmVkRmllbGRzLnB1c2goZmllbGRzW2ldKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmlsdGVyZWRGaWVsZHM7XG59XG5cbi8qKiBWYWxpZGF0ZXMgdGhhdCBhIHJhdyBmaWVsZCBuYW1lIGhhcyBhIHZhbGlkIGZvcm0uICovXG5jb25zdCBGVUxMX0xJTkVfS0VZX1BBUlQ6IFAuUGFyc2VyPHN0cmluZz4gPSBQLmFsdChcbiAgICBQLnJlZ2V4cChuZXcgUmVnRXhwKGVtb2ppUmVnZXgoKSwgXCJ1XCIpKSxcbiAgICBQLnJlZ2V4cCgvWzAtOVxccHtMZXR0ZXJ9XFx3XFxzXy8tXSsvdSlcbilcbiAgICAubWFueSgpXG4gICAgLm1hcCgocGFydHMpID0+IHBhcnRzLmpvaW4oXCJcIikpO1xuXG5jb25zdCBGVUxMX0xJTkVfS0VZX1BBUlNFUjogUC5QYXJzZXI8c3RyaW5nPiA9IFAucmVnZXhwKC9bXjAtOVxcd1xccHtMZXR0ZXJ9XSovdSlcbiAgICAudGhlbihGVUxMX0xJTkVfS0VZX1BBUlQpXG4gICAgLnNraXAoUC5yZWdleHAoL1tfXFwqfmBdKi91KSk7XG5cbi8qKiBBdHRlbXB0IHRvIGV4dHJhY3QgYSBmdWxsLWxpbmUgZmllbGQgKEtleTo6IFZhbHVlIGNvbnN1bWluZyB0aGUgZW50aXJlIGNvbnRlbnQgbGluZSkuICovXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdEZ1bGxMaW5lRmllbGQodGV4dDogc3RyaW5nKTogTG9jYWxJbmxpbmVGaWVsZCB8IHVuZGVmaW5lZCB7XG4gICAgbGV0IHNlcCA9IGZpbmRTZXBhcmF0b3IodGV4dCwgMCk7XG4gICAgaWYgKCFzZXApIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICAvLyBXZSBuZWVkIHRvIHBvc3QtcHJvY2VzcyB0aGUga2V5IHRvIGRyb3AgdW5uZWNlc3Nhcnkgb3BlbmluZyBhbm5vdGF0aW9ucyBhcyB3ZWxsIGFzXG4gICAgLy8gZHJvcCBzdXJyb3VuZGluZyBNYXJrZG93bi5cbiAgICBsZXQgcmVhbEtleSA9IEZVTExfTElORV9LRVlfUEFSU0VSLnBhcnNlKHNlcC5rZXkpO1xuICAgIGlmICghcmVhbEtleS5zdGF0dXMpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBrZXk6IHJlYWxLZXkudmFsdWUsXG4gICAgICAgIHZhbHVlOiB0ZXh0LnN1YnN0cmluZyhzZXAudmFsdWVJbmRleCkudHJpbSgpLFxuICAgICAgICBzdGFydDogMCxcbiAgICAgICAgc3RhcnRWYWx1ZTogc2VwLnZhbHVlSW5kZXgsXG4gICAgICAgIGVuZDogdGV4dC5sZW5ndGgsXG4gICAgfTtcbn1cblxuZXhwb3J0IGNvbnN0IENSRUFURURfREFURV9SRUdFWCA9IC9cXHV7Mjc5NX1cXHMqKFxcZHs0fS1cXGR7Mn0tXFxkezJ9KS91O1xuZXhwb3J0IGNvbnN0IERVRV9EQVRFX1JFR0VYID0gLyg/OlxcdXsxRjRDNX18XFx1ezFGNEM2fXxcXHV7MUY1RDN9XFx1e0ZFMEZ9PylcXHMqKFxcZHs0fS1cXGR7Mn0tXFxkezJ9KS91O1xuZXhwb3J0IGNvbnN0IERPTkVfREFURV9SRUdFWCA9IC9cXHV7MjcwNX1cXHMqKFxcZHs0fS1cXGR7Mn0tXFxkezJ9KS91O1xuZXhwb3J0IGNvbnN0IFNDSEVEVUxFRF9EQVRFX1JFR0VYID0gL1tcXHV7MjNGM31cXHV7MjMxQn1dXFxzKihcXGR7NH0tXFxkezJ9LVxcZHsyfSkvdTtcbmV4cG9ydCBjb25zdCBTVEFSVF9EQVRFX1JFR0VYID0gL1xcdXsxRjZFQn1cXHMqKFxcZHs0fS1cXGR7Mn0tXFxkezJ9KS91O1xuXG5leHBvcnQgY29uc3QgRU1PSklfUkVHRVhFUyA9IFtcbiAgICB7IHJlZ2V4OiBDUkVBVEVEX0RBVEVfUkVHRVgsIGtleTogXCJjcmVhdGVkXCIgfSxcbiAgICB7IHJlZ2V4OiBTVEFSVF9EQVRFX1JFR0VYLCBrZXk6IFwic3RhcnRcIiB9LFxuICAgIHsgcmVnZXg6IFNDSEVEVUxFRF9EQVRFX1JFR0VYLCBrZXk6IFwic2NoZWR1bGVkXCIgfSxcbiAgICB7IHJlZ2V4OiBEVUVfREFURV9SRUdFWCwga2V5OiBcImR1ZVwiIH0sXG4gICAgeyByZWdleDogRE9ORV9EQVRFX1JFR0VYLCBrZXk6IFwiY29tcGxldGlvblwiIH0sXG5dO1xuXG4vKiogUGFyc2Ugc3BlY2lhbCBjb21wbGV0ZWQvZHVlL2RvbmUgdGFzayBmaWVsZHMgd2hpY2ggYXJlIG1hcmtlZCB2aWEgZW1vamkuICovXG5mdW5jdGlvbiBleHRyYWN0U3BlY2lhbFRhc2tGaWVsZHMobGluZTogc3RyaW5nKTogTG9jYWxJbmxpbmVGaWVsZFtdIHtcbiAgICBsZXQgcmVzdWx0czogTG9jYWxJbmxpbmVGaWVsZFtdID0gW107XG5cbiAgICBmb3IgKGxldCB7IHJlZ2V4LCBrZXkgfSBvZiBFTU9KSV9SRUdFWEVTKSB7XG4gICAgICAgIGNvbnN0IG1hdGNoID0gcmVnZXguZXhlYyhsaW5lKTtcbiAgICAgICAgaWYgKCFtYXRjaCkgY29udGludWU7XG5cbiAgICAgICAgcmVzdWx0cy5wdXNoKHtcbiAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgIHZhbHVlOiBtYXRjaFsxXSxcbiAgICAgICAgICAgIHN0YXJ0OiBtYXRjaC5pbmRleCxcbiAgICAgICAgICAgIHN0YXJ0VmFsdWU6IG1hdGNoLmluZGV4ICsgMSxcbiAgICAgICAgICAgIGVuZDogbWF0Y2guaW5kZXggKyBtYXRjaFswXS5sZW5ndGgsXG4gICAgICAgICAgICB3cmFwcGluZzogXCJlbW9qaS1zaG9ydGhhbmRcIixcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdHM7XG59XG5cbi8qKiBTZXRzIG9yIHJlcGxhY2VzIHRoZSB2YWx1ZSBvZiBhbiBpbmxpbmUgZmllbGQ7IGlmIHRoZSB2YWx1ZSBpcyAndW5kZWZpbmVkJywgZGVsZXRlcyB0aGUga2V5LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldElubGluZUZpZWxkKHNvdXJjZTogc3RyaW5nLCBrZXk6IHN0cmluZywgdmFsdWU/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGxldCBleGlzdGluZyA9IGV4dHJhY3RJbmxpbmVGaWVsZHMoc291cmNlKTtcbiAgICBsZXQgZXhpc3RpbmdLZXlzID0gZXhpc3RpbmcuZmlsdGVyKChmKSA9PiBmLmtleSA9PSBrZXkpO1xuXG4gICAgLy8gRG9uJ3QgZG8gYW55dGhpbmcgaWYgdGhlcmUgYXJlIGR1cGxpY2F0ZSBrZXlzIE9SIHRoZSBrZXkgYWxyZWFkeSBkb2Vzbid0IGV4aXN0LlxuICAgIGlmIChleGlzdGluZ0tleXMubGVuZ3RoID4gMiB8fCAoZXhpc3RpbmdLZXlzLmxlbmd0aCA9PSAwICYmICF2YWx1ZSkpIHJldHVybiBzb3VyY2U7XG4gICAgbGV0IGV4aXN0aW5nS2V5ID0gZXhpc3RpbmdLZXlzWzBdO1xuXG4gICAgbGV0IGFubm90YXRpb24gPSB2YWx1ZSA/IGBbJHtrZXl9OjogJHt2YWx1ZX1dYCA6IFwiXCI7XG4gICAgaWYgKGV4aXN0aW5nS2V5KSB7XG4gICAgICAgIGxldCBwcmVmaXggPSBzb3VyY2Uuc3Vic3RyaW5nKDAsIGV4aXN0aW5nS2V5LnN0YXJ0KTtcbiAgICAgICAgbGV0IHN1ZmZpeCA9IHNvdXJjZS5zdWJzdHJpbmcoZXhpc3RpbmdLZXkuZW5kKTtcblxuICAgICAgICBpZiAoYW5ub3RhdGlvbikgcmV0dXJuIGAke3ByZWZpeH0ke2Fubm90YXRpb259JHtzdWZmaXh9YDtcbiAgICAgICAgZWxzZSByZXR1cm4gYCR7cHJlZml4fSR7c3VmZml4LnRyaW1TdGFydCgpfWA7XG4gICAgfSBlbHNlIGlmIChhbm5vdGF0aW9uKSB7XG4gICAgICAgIHJldHVybiBgJHtzb3VyY2UudHJpbUVuZCgpfSAke2Fubm90YXRpb259YDtcbiAgICB9XG5cbiAgICByZXR1cm4gc291cmNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0RW1vamlTaG9ydGhhbmRDb21wbGV0aW9uRmllbGQoc291cmNlOiBzdHJpbmcsIHZhbHVlPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBleGlzdGluZyA9IGV4dHJhY3RJbmxpbmVGaWVsZHMoc291cmNlLCB0cnVlKTtcbiAgICBjb25zdCBleGlzdGluZ0tleXMgPSBleGlzdGluZy5maWx0ZXIoKGYpID0+IGYua2V5ID09PSBcImNvbXBsZXRpb25cIiAmJiBmLndyYXBwaW5nID09PSBcImVtb2ppLXNob3J0aGFuZFwiKTtcblxuICAgIC8vIERvbid0IGRvIGFueXRoaW5nIGlmIHRoZXJlIGFyZSBkdXBsaWNhdGUga2V5cyBPUiB0aGUga2V5IGFscmVhZHkgZG9lc24ndCBleGlzdC5cbiAgICBpZiAoZXhpc3RpbmdLZXlzLmxlbmd0aCA+IDIgfHwgKGV4aXN0aW5nS2V5cy5sZW5ndGggPT0gMCAmJiAhdmFsdWUpKSByZXR1cm4gc291cmNlO1xuXG4gICAgLyogTm8gd3JhcHBlciwgYWRkIG93biBzcGFjaW5nIGF0IHN0YXJ0ICovXG4gICAgY29uc3QgYW5ub3RhdGlvbiA9IHZhbHVlID8gYCBcdTI3MDUgJHt2YWx1ZX1gIDogXCJcIjtcbiAgICBsZXQgZXhpc3RpbmdLZXkgPSBleGlzdGluZ0tleXNbMF07XG4gICAgaWYgKGV4aXN0aW5nS2V5KSB7XG4gICAgICAgIGNvbnN0IHByZWZpeCA9IHNvdXJjZS5zdWJzdHJpbmcoMCwgZXhpc3RpbmdLZXkuc3RhcnQpO1xuICAgICAgICBjb25zdCBzdWZmaXggPSBzb3VyY2Uuc3Vic3RyaW5nKGV4aXN0aW5nS2V5LmVuZCk7XG4gICAgICAgIHJldHVybiBgJHtwcmVmaXgudHJpbUVuZCgpfSR7YW5ub3RhdGlvbn0ke3N1ZmZpeH1gO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBgJHtzb3VyY2UudHJpbUVuZCgpfSR7YW5ub3RhdGlvbn1gO1xuICAgIH1cbn1cbiIsICIvKiogTWFwIHRoZSB2YWx1ZXMgb2YgYW4gb2JqZWN0LCByZXR1cm5pbmcgYSBuZXcgb2JqZWN0LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hcE9iamVjdFZhbHVlczxWLCBVPihvYmplY3Q6IFJlY29yZDxzdHJpbmcsIFY+LCBmdW5jOiAoeDogVikgPT4gVSk6IFJlY29yZDxzdHJpbmcsIFU+IHtcbiAgICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIFU+ID0ge307XG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMob2JqZWN0KSkge1xuICAgICAgICByZXN1bHRba2V5XSA9IGZ1bmModmFsdWUpO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG59XG4iLCAiaW1wb3J0IHsgTGluaywgSnNvbkxpbmsgfSBmcm9tIFwiZXhwcmVzc2lvbi9saW5rXCI7XG5pbXBvcnQgeyBMaXRlcmFsLCBMaXRlcmFscyB9IGZyb20gXCJleHByZXNzaW9uL2xpdGVyYWxcIjtcbmltcG9ydCB7IERhdGVUaW1lLCBEdXJhdGlvbiB9IGZyb20gXCJsdXhvblwiO1xuaW1wb3J0IHsgbWFwT2JqZWN0VmFsdWVzIH0gZnJvbSBcInV0aWxzL2RhdGFcIjtcblxuLyoqIEpTT04tc2VyaWFsaXplZCBlcXVpdmFsZW50cyBmb3IgbGl0ZXJhbHMuICovXG5leHBvcnQgdHlwZSBKc29uTGl0ZXJhbCA9XG4gICAgfCBib29sZWFuXG4gICAgfCBudW1iZXJcbiAgICB8IHN0cmluZ1xuICAgIHwgeyAkX3R5cGU6IFwiZGF0ZVwiOyB2YWx1ZTogc3RyaW5nIH1cbiAgICB8IHsgJF90eXBlOiBcImR1cmF0aW9uXCI7IHZhbHVlOiBzdHJpbmcgfVxuICAgIHwgeyAkX3R5cGU6IFwibGlua1wiOyB2YWx1ZTogSnNvbkxpbmsgfVxuICAgIHwgQXJyYXk8SnNvbkxpdGVyYWw+XG4gICAgfCBSZWNvcmQ8c3RyaW5nLCBhbnk+XG4gICAgfCBudWxsO1xuXG5leHBvcnQgbmFtZXNwYWNlIEpzb25Db252ZXJzaW9uIHtcbiAgICBleHBvcnQgY29uc3QgTk9PUF9OT1JNQUxJWkVSOiAoaW5wdXQ6IExpdGVyYWwpID0+IExpdGVyYWwgPSAoaW5wdXQpID0+IGlucHV0O1xuXG4gICAgLyoqIENvbnZlcnQgYSBsaXRlcmFsIHZhbHVlIHRvIGEgc2FmZSwgcGVyc2lzdGVudCBKU09OIGVxdWl2YWxlbnQuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGpzb24obGl0ZXJhbDogTGl0ZXJhbCk6IEpzb25MaXRlcmFsIHtcbiAgICAgICAgY29uc3Qgd3JhcHBlZCA9IExpdGVyYWxzLndyYXBWYWx1ZShsaXRlcmFsKTtcbiAgICAgICAgaWYgKCF3cmFwcGVkKSByZXR1cm4gbnVsbDtcblxuICAgICAgICBzd2l0Y2ggKHdyYXBwZWQ/LnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgXCJhcnJheVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB3cmFwcGVkLnZhbHVlLm1hcChKc29uQ29udmVyc2lvbi5qc29uKTtcbiAgICAgICAgICAgIGNhc2UgXCJvYmplY3RcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gbWFwT2JqZWN0VmFsdWVzKHdyYXBwZWQudmFsdWUsIEpzb25Db252ZXJzaW9uLmpzb24pO1xuICAgICAgICAgICAgY2FzZSBcImRhdGVcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4geyAkX3R5cGU6IFwiZGF0ZVwiLCB2YWx1ZTogd3JhcHBlZC52YWx1ZS50b0lTTyh7IGluY2x1ZGVPZmZzZXQ6IHRydWUgfSkgfTtcbiAgICAgICAgICAgIGNhc2UgXCJsaW5rXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgJF90eXBlOiBcImxpbmtcIiwgdmFsdWU6IHdyYXBwZWQudmFsdWUudG9PYmplY3QoKSB9O1xuICAgICAgICAgICAgY2FzZSBcImR1cmF0aW9uXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgJF90eXBlOiBcImR1cmF0aW9uXCIsIHZhbHVlOiB3cmFwcGVkLnZhbHVlLnRvSVNPKCkgfTtcbiAgICAgICAgICAgIGNhc2UgXCJib29sZWFuXCI6XG4gICAgICAgICAgICBjYXNlIFwibnVtYmVyXCI6XG4gICAgICAgICAgICBjYXNlIFwic3RyaW5nXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWU7XG4gICAgICAgICAgICBjYXNlIFwiZnVuY3Rpb25cIjpcbiAgICAgICAgICAgIGNhc2UgXCJudWxsXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0IGEgSlNPTiBsaXRlcmFsIHRvIGl0J3MgY29ycmVzcG9uZGluZyBoeWRyYXRlZCB2YWx1ZSwgb3B0aW9uYWxseSBhcHBseWluZ1xuICAgICAqIGEgbm9ybWFsaXphdGlvbiBzdGVwIHRvIHRoZSByZXN1bHRpbmcgdmFsdWUgYW5kIGFueSBsaXRlcmFscyBjb250YWluZWQgd2l0aGluIGl0XG4gICAgICogKHN1Y2ggYXMgaWYgdGhlIGxpdGVyYWwgaXMgYSBsaXN0IG9yIG9iamVjdCkuXG4gICAgICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIHZhbHVlKGpzb246IEpzb25MaXRlcmFsLCBub3JtYWxpemVyOiAoaW5wdXQ6IExpdGVyYWwpID0+IExpdGVyYWwgPSBOT09QX05PUk1BTElaRVIpOiBMaXRlcmFsIHtcbiAgICAgICAgaWYgKGpzb24gPT09IG51bGwgfHwganNvbiA9PT0gdW5kZWZpbmVkKSByZXR1cm4gbnVsbDtcblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShqc29uKSkge1xuICAgICAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZXIoanNvbi5tYXAoKGlucHV0KSA9PiBKc29uQ29udmVyc2lvbi52YWx1ZShpbnB1dCwgbm9ybWFsaXplcikpKTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YganNvbiA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICAgICAgaWYgKCEoXCIkX3R5cGVcIiBpbiBqc29uKSlcbiAgICAgICAgICAgICAgICByZXR1cm4gbWFwT2JqZWN0VmFsdWVzKGpzb24sICh2KSA9PiBKc29uQ29udmVyc2lvbi52YWx1ZSh2IGFzIEpzb25MaXRlcmFsLCBub3JtYWxpemVyKSk7XG5cbiAgICAgICAgICAgIGNvbnN0IHR5cGUgPSBqc29uW1wiJF90eXBlXCJdO1xuICAgICAgICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBcImRhdGVcIjpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZXIoRGF0ZVRpbWUuZnJvbUlTTyhqc29uLnZhbHVlLCB7IHNldFpvbmU6IHRydWUgfSkpO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJkdXJhdGlvblwiOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbm9ybWFsaXplcihEdXJhdGlvbi5mcm9tSVNPKGpzb24udmFsdWUpKTtcbiAgICAgICAgICAgICAgICBjYXNlIFwibGlua1wiOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbm9ybWFsaXplcihMaW5rLmZyb21PYmplY3QoanNvbi52YWx1ZSkpO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5yZWNvZ25pemVkIHNlcmlhbGl6ZWQgdHlwZSAnJHt0eXBlfSchYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBQcmltaXRpdmUgdHlwZSwgcmV0dXJuIGFzIGlzLlxuICAgICAgICByZXR1cm4gbm9ybWFsaXplcihqc29uIGFzIExpdGVyYWwpO1xuICAgIH1cbn1cbiIsICIvKipcbiAqIEBtb2R1bGUgaW5kZXhhYmxlc1xuICovXG4vKiogVXRpbGl0aWVzIGZvciBjb252ZXJ0aW5nIGxpdGVyYWwgdHlwZXMgdG8gYW5kIGZyb20gdGhlaXIgWUFNTCBmcm9udG1hdHRlciByZXByZXNlbnRhdGlvbi4gKi9cblxuaW1wb3J0IHsgTGl0ZXJhbCwgTGl0ZXJhbHMgfSBmcm9tIFwiZXhwcmVzc2lvbi9saXRlcmFsXCI7XG5pbXBvcnQgeyBQUklNSVRJVkVTIH0gZnJvbSBcImV4cHJlc3Npb24vcGFyc2VyXCI7XG5pbXBvcnQgeyBEYXRlVGltZSB9IGZyb20gXCJsdXhvblwiO1xuaW1wb3J0IHsgbWFwT2JqZWN0VmFsdWVzIH0gZnJvbSBcInV0aWxzL2RhdGFcIjtcblxuLyoqIFlBTUwtZnJpZW5kbHkgcmVwcmVzZW50YXRpb24gZm9yIGEgbGl0ZXJhbC4gKi9cbmV4cG9ydCB0eXBlIFlhbWxMaXRlcmFsID0gc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IG51bGwgfCBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgQXJyYXk8WWFtbExpdGVyYWw+O1xuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IG5hbWVzcGFjZSBZYW1sQ29udmVyc2lvbiB7XG4gICAgLyoqIENvbnZlcnQgYSBsaXRlcmFsIGludG8gYSB5YW1sIGZyaWVuZGx5IHJlcHJlc2VudGF0aW9uLiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiB5YW1sKHZhbHVlOiBMaXRlcmFsKTogWWFtbExpdGVyYWwge1xuICAgICAgICBjb25zdCB3cmFwcGVkID0gTGl0ZXJhbHMud3JhcFZhbHVlKGxpdGVyYWwpO1xuICAgICAgICBpZiAoIXdyYXBwZWQpIHJldHVybiBudWxsO1xuXG4gICAgICAgIHN3aXRjaCAod3JhcHBlZC50eXBlKSB7XG4gICAgICAgICAgICBjYXNlIFwic3RyaW5nXCI6XG4gICAgICAgICAgICBjYXNlIFwiYm9vbGVhblwiOlxuICAgICAgICAgICAgY2FzZSBcIm51bGxcIjpcbiAgICAgICAgICAgIGNhc2UgXCJudW1iZXJcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZTtcbiAgICAgICAgICAgIGNhc2UgXCJhcnJheVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB3cmFwcGVkLnZhbHVlLm1hcCh5YW1sKTtcbiAgICAgICAgICAgIGNhc2UgXCJkYXRlXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWUudG9JU08oKTtcbiAgICAgICAgICAgIGNhc2UgXCJkdXJhdGlvblwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB3cmFwcGVkLnZhbHVlLnRvSHVtYW4oKTtcbiAgICAgICAgICAgIGNhc2UgXCJmdW5jdGlvblwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgY2FzZSBcImxpbmtcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZS5tYXJrZG93bigpO1xuICAgICAgICAgICAgY2FzZSBcIm9iamVjdFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBtYXBPYmplY3RWYWx1ZXMod3JhcHBlZC52YWx1ZSwgeWFtbCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogUmVjdXJzaXZlbHkgY29udmVydCBhIFlBTUwgbGl0ZXJhbCBpbnRvIGEgcmVndWxhciBsaXRlcmFsIHZhbHVlLiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiBsaXRlcmFsKHZhbHVlOiBZYW1sTGl0ZXJhbCk6IExpdGVyYWwge1xuICAgICAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gW107XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgY2hpbGQgb2YgdmFsdWUgYXMgQXJyYXk8YW55Pikge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChsaXRlcmFsKGNoaWxkKSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICAgICAgICAgICAgbGV0IGRhdGVQYXJzZSA9IERhdGVUaW1lLmZyb21KU0RhdGUodmFsdWUpO1xuICAgICAgICAgICAgICAgIHJldHVybiBkYXRlUGFyc2U7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGxldCBvYmplY3QgPSB2YWx1ZSBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAgICAgICAgICAgICAgIGxldCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIExpdGVyYWw+ID0ge307XG4gICAgICAgICAgICAgICAgZm9yIChsZXQga2V5IGluIG9iamVjdCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHRba2V5XSA9IGxpdGVyYWwob2JqZWN0W2tleV0pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSBcImJvb2xlYW5cIikge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgbGV0IGRhdGVQYXJzZSA9IFBSSU1JVElWRVMuZGF0ZS5wYXJzZSh2YWx1ZSk7XG4gICAgICAgICAgICBpZiAoZGF0ZVBhcnNlLnN0YXR1cykgcmV0dXJuIGRhdGVQYXJzZS52YWx1ZTtcblxuICAgICAgICAgICAgbGV0IGR1cmF0aW9uUGFyc2UgPSBQUklNSVRJVkVTLmR1cmF0aW9uLnBhcnNlKHZhbHVlKTtcbiAgICAgICAgICAgIGlmIChkdXJhdGlvblBhcnNlLnN0YXR1cykgcmV0dXJuIGR1cmF0aW9uUGFyc2UudmFsdWU7XG5cbiAgICAgICAgICAgIGxldCBsaW5rUGFyc2UgPSBQUklNSVRJVkVTLmxpbmsucGFyc2UodmFsdWUpO1xuICAgICAgICAgICAgaWYgKGxpbmtQYXJzZS5zdGF0dXMpIHJldHVybiBsaW5rUGFyc2UudmFsdWU7XG5cbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEJhY2t1cCBpZiB3ZSBkb24ndCB1bmRlcnN0YW5kIHRoZSB0eXBlLlxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG59XG4iLCAiaW1wb3J0IHsgRmlsZVN0YXRzIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5pbXBvcnQgeyBpdGVyYXRlSW5saW5lRmllbGRzLCBtYXJrZG93blNvdXJjZUltcG9ydCwgTWV0YWRhdGEsIFNlY3Rpb25EYXRhIH0gZnJvbSBcIi4vbWFya2Rvd25cIjtcbmltcG9ydCB7IEpzb25Gcm9udG1hdHRlckVudHJ5IH0gZnJvbSBcImluZGV4L3R5cGVzL2pzb24vbWFya2Rvd25cIjtcbmltcG9ydCB7XG4gICAgQ2FudmFzTWV0YWRhdGFJbmRleCxcbiAgICBKc29uQmFzZUNhbnZhc0NhcmQsXG4gICAgSnNvbkNhbnZhcyxcbiAgICBKc29uQ2FudmFzQ2FyZCxcbiAgICBKc29uQ2FudmFzRmlsZUNhcmQsXG4gICAgSnNvbkNhbnZhc1RleHRDYXJkLFxuICAgIEpzb25DYW52YXNXZWJDYXJkLFxufSBmcm9tIFwiaW5kZXgvdHlwZXMvanNvbi9jYW52YXNcIjtcbmltcG9ydCB7IENhbnZhc0ZpbGVEYXRhLCBDYW52YXNMaW5rRGF0YSwgQ2FudmFzVGV4dERhdGEsIENhbnZhc0RhdGEgYXMgSUNhbnZhcyB9IGZyb20gXCJvYnNpZGlhbi9jYW52YXNcIjtcbmltcG9ydCB7IExpbmsgfSBmcm9tIFwiZXhwcmVzc2lvbi9saW5rXCI7XG5cbi8qKiBJbXBvcnQgYSBjYW52YXMgZmlsZSB1c2luZyB0aGUgY2FudmFzIG1ldGFkYXRhLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhbnZhc0ltcG9ydChcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAgc291cmNlOiBzdHJpbmcsXG4gICAgaW5kZXg6IENhbnZhc01ldGFkYXRhSW5kZXhbXCJzdHJpbmdcIl0sXG4gICAgc3RhdHM6IEZpbGVTdGF0c1xuKTogSnNvbkNhbnZhcyB7XG4gICAgY29uc3QgY2FudmFzID0gbmV3IENhbnZhc0RhdGEocGF0aCwgc3RhdHMpO1xuICAgIGNvbnN0IHBhcnNlZCA9IEpTT04ucGFyc2Uoc291cmNlKSBhcyBJQ2FudmFzO1xuXG4gICAgZm9yIChjb25zdCBjIG9mIHBhcnNlZC5ub2Rlcykge1xuICAgICAgICBpZiAoYy50eXBlID09IFwiZ3JvdXBcIikgY29udGludWU7XG4gICAgICAgIGlmIChjLnR5cGUgPT0gXCJ0ZXh0XCIpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgZnJvbnRtYXR0ZXIsIG1ldGFkYXRhLCBsaW5lcywgc2VjdGlvbnMgfSA9IG1hcmtkb3duU291cmNlSW1wb3J0KHBhdGgsIGMudGV4dCwgaW5kZXguY2FjaGVzW2MuaWRdKTtcbiAgICAgICAgICAgIGNvbnN0IGNhcmQgPSBuZXcgQ2FudmFzQ2FyZERhdGEocGF0aCwgYy5pZCwgYywgZnJvbnRtYXR0ZXIpO1xuICAgICAgICAgICAgc2VjdGlvbnMuZm9yRWFjaCgoaSkgPT4gY2FyZC5zZWN0aW9uKGkpKTtcbiAgICAgICAgICAgIGNhbnZhcy5jYXJkKGNhcmQpO1xuICAgICAgICAgICAgZm9yIChjb25zdCB0YWcgaW4gbWV0YWRhdGEudGFncykgY2FudmFzLm1ldGFkYXRhLnRhZyh0YWcpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBsaW5rIG9mIG1ldGFkYXRhLmxpbmtzID8/IFtdKSBjYW52YXMubWV0YWRhdGEubGluayhsaW5rKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZmllbGQgb2YgaXRlcmF0ZUlubGluZUZpZWxkcyhsaW5lcykpIGNhbnZhcy5tZXRhZGF0YS5pbmxpbmVGaWVsZChmaWVsZCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBjYXJkID0gbmV3IENhbnZhc0NhcmREYXRhKHBhdGgsIGMuaWQsIGMpO1xuICAgICAgICAgICAgY2FudmFzLmNhcmQoY2FyZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY2FudmFzLmJ1aWxkKCk7XG59XG5cbi8qKiBNZXRhZGF0YSBmb3IgYSBzcGVjaWZpYyBjYW52YXMgY2FyZC4gKi9cbmFic3RyYWN0IGNsYXNzIEFic3RyYWN0Q2FudmFzQ2FyZERhdGEge1xuICAgIHB1YmxpYyBtZXRhZGF0YTogTWV0YWRhdGEgPSBuZXcgTWV0YWRhdGEoKTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIHBhdGg6IHN0cmluZyxcbiAgICAgICAgcHVibGljIGlkOiBzdHJpbmcsXG4gICAgICAgIHByb3RlY3RlZCBub2RlSnNvbjogQ2FudmFzVGV4dERhdGEgfCBDYW52YXNMaW5rRGF0YSB8IENhbnZhc0ZpbGVEYXRhXG4gICAgKSB7fVxuXG4gICAgcHVibGljIGJ1aWxkKCk6IEpzb25CYXNlQ2FudmFzQ2FyZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAkZmlsZTogdGhpcy5wYXRoLFxuICAgICAgICAgICAgJGlkOiB0aGlzLmlkLFxuICAgICAgICAgICAgJHBvc2l0aW9uOiB7XG4gICAgICAgICAgICAgICAgeDogdGhpcy5ub2RlSnNvbi54LFxuICAgICAgICAgICAgICAgIHk6IHRoaXMubm9kZUpzb24ueSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAkZGltZW5zaW9uczoge1xuICAgICAgICAgICAgICAgIHdpZHRoOiB0aGlzLm5vZGVKc29uLndpZHRoLFxuICAgICAgICAgICAgICAgIGhlaWdodDogdGhpcy5ub2RlSnNvbi5oZWlnaHQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJGNvbG9yOiB0aGlzLm5vZGVKc29uLmNvbG9yLFxuICAgICAgICAgICAgJGxpbms6IExpbmsuZmlsZSh0aGlzLnBhdGgpLndpdGhCbG9jayh0aGlzLmlkKS50b09iamVjdCgpLFxuICAgICAgICB9O1xuICAgIH1cbn1cblxuLyoqIE1ldGFkYXRhIGZvciBhIHNwZWNpZmljIGNhcmQgaW4gYSBjYW52YXMgdmlldy4gKi9cbmV4cG9ydCBjbGFzcyBDYW52YXNDYXJkRGF0YSBleHRlbmRzIEFic3RyYWN0Q2FudmFzQ2FyZERhdGEge1xuICAgIHB1YmxpYyBzZWN0aW9uczogU2VjdGlvbkRhdGFbXSA9IFtdO1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIHBhdGg6IHN0cmluZyxcbiAgICAgICAgcHVibGljIGlkOiBzdHJpbmcsXG4gICAgICAgIHByb3RlY3RlZCBub2RlSnNvbjogQ2FudmFzVGV4dERhdGEgfCBDYW52YXNMaW5rRGF0YSB8IENhbnZhc0ZpbGVEYXRhLFxuICAgICAgICBwdWJsaWMgZnJvbnRtYXR0ZXI/OiBSZWNvcmQ8c3RyaW5nLCBKc29uRnJvbnRtYXR0ZXJFbnRyeT5cbiAgICApIHtcbiAgICAgICAgc3VwZXIocGF0aCwgaWQsIG5vZGVKc29uKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2VjdGlvbihzZWN0aW9uOiBTZWN0aW9uRGF0YSk6IFNlY3Rpb25EYXRhIHtcbiAgICAgICAgdGhpcy5zZWN0aW9ucy5wdXNoKHNlY3Rpb24pO1xuICAgICAgICByZXR1cm4gc2VjdGlvbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgYnVpbGQoKTogSnNvbkNhbnZhc0NhcmQge1xuICAgICAgICBzd2l0Y2ggKHRoaXMubm9kZUpzb24udHlwZSkge1xuICAgICAgICAgICAgY2FzZSBcInRleHRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAuLi4oc3VwZXIuYnVpbGQoKSBhcyBKc29uQmFzZUNhbnZhc0NhcmQpLFxuICAgICAgICAgICAgICAgICAgICAkaW5maWVsZHM6IHRoaXMubWV0YWRhdGEuZmluaXNoSW5saW5lRmllbGRzKCksXG4gICAgICAgICAgICAgICAgICAgICRmcm9udG1hdHRlcjogdGhpcy5mcm9udG1hdHRlcixcbiAgICAgICAgICAgICAgICAgICAgJHNlY3Rpb25zOiB0aGlzLnNlY3Rpb25zLm1hcCgoeCkgPT4geC5idWlsZCgpKSxcbiAgICAgICAgICAgICAgICAgICAgJHRhZ3M6IHRoaXMubWV0YWRhdGEuZmluaXNoVGFncygpLFxuICAgICAgICAgICAgICAgICAgICAkbGlua3M6IHRoaXMubWV0YWRhdGEuZmluaXNoTGlua3MoKSxcbiAgICAgICAgICAgICAgICAgICAgJHR5cGU6IFwidGV4dC1jYXJkXCIsXG4gICAgICAgICAgICAgICAgICAgICRjb2xvcjogdGhpcy5ub2RlSnNvbi5jb2xvcixcbiAgICAgICAgICAgICAgICB9IGFzIEpzb25DYW52YXNUZXh0Q2FyZDtcbiAgICAgICAgICAgIGNhc2UgXCJmaWxlXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgLi4uc3VwZXIuYnVpbGQoKSxcbiAgICAgICAgICAgICAgICAgICAgJGxpbmtlZEZpbGU6IHRoaXMubm9kZUpzb24uZmlsZSxcbiAgICAgICAgICAgICAgICB9IGFzIEpzb25DYW52YXNGaWxlQ2FyZDtcbiAgICAgICAgICAgIGNhc2UgXCJsaW5rXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgLi4uc3VwZXIuYnVpbGQoKSxcbiAgICAgICAgICAgICAgICAgICAgJHVybDogdGhpcy5ub2RlSnNvbi51cmwsXG4gICAgICAgICAgICAgICAgfSBhcyBKc29uQ2FudmFzV2ViQ2FyZDtcbiAgICAgICAgICAgIC8vIHJldHVybiBuZXdcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLyoqIE1ldGFkYXRhIGZvciB0aGUgd2hvbGUgY2FudmFzIHBhZ2UgYXMgYSB3aG9sZS4gKi9cbmV4cG9ydCBjbGFzcyBDYW52YXNEYXRhIHtcbiAgICBwdWJsaWMgY2FyZHM6IENhbnZhc0NhcmREYXRhW10gPSBbXTtcbiAgICBwdWJsaWMgbWV0YWRhdGE6IE1ldGFkYXRhID0gbmV3IE1ldGFkYXRhKCk7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IocHVibGljIHBhdGg6IHN0cmluZywgcHVibGljIHN0YXRzOiBGaWxlU3RhdHMpIHt9XG5cbiAgICBwdWJsaWMgY2FyZChkOiBDYW52YXNDYXJkRGF0YSk6IENhbnZhc0NhcmREYXRhIHtcbiAgICAgICAgdGhpcy5jYXJkcy5wdXNoKGQpO1xuICAgICAgICByZXR1cm4gZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYnVpbGQoKTogSnNvbkNhbnZhcyB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAkY2FyZHM6IHRoaXMuY2FyZHMubWFwKCh4KSA9PiB4LmJ1aWxkKCkpLFxuICAgICAgICAgICAgJGN0aW1lOiB0aGlzLnN0YXRzLmN0aW1lLFxuICAgICAgICAgICAgJG10aW1lOiB0aGlzLnN0YXRzLm10aW1lLFxuICAgICAgICAgICAgJGluZmllbGRzOiB0aGlzLm1ldGFkYXRhLmZpbmlzaElubGluZUZpZWxkcygpLFxuICAgICAgICAgICAgJGxpbmtzOiB0aGlzLm1ldGFkYXRhLmZpbmlzaExpbmtzKCksXG4gICAgICAgICAgICAkdGFnczogdGhpcy5tZXRhZGF0YS5maW5pc2hUYWdzKCksXG4gICAgICAgICAgICAkcGF0aDogdGhpcy5wYXRoLFxuICAgICAgICAgICAgJHNpemU6IHRoaXMuc3RhdHMuc2l6ZSxcbiAgICAgICAgfTtcbiAgICB9XG59XG4iLCAiaW1wb3J0IHsgY2FudmFzSW1wb3J0IH0gZnJvbSBcImluZGV4L2ltcG9ydC9jYW52YXNcIjtcbmltcG9ydCB7IG1hcmtkb3duSW1wb3J0IH0gZnJvbSBcImluZGV4L2ltcG9ydC9tYXJrZG93blwiO1xuaW1wb3J0IHsgQ2FudmFzSW1wb3J0UmVzdWx0LCBJbXBvcnRDb21tYW5kLCBNYXJrZG93bkltcG9ydFJlc3VsdCB9IGZyb20gXCJpbmRleC93ZWItd29ya2VyL21lc3NhZ2VcIjtcblxuLyoqIFdlYiB3b3JrZXIgZW50cnkgcG9pbnQgZm9yIGltcG9ydGluZy4gKi9cbm9ubWVzc2FnZSA9IGFzeW5jIChldmVudCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBldmVudC5kYXRhIGFzIEltcG9ydENvbW1hbmQ7XG5cbiAgICAgICAgaWYgKG1lc3NhZ2UudHlwZSA9PT0gXCJtYXJrZG93blwiKSB7XG4gICAgICAgICAgICBjb25zdCBtYXJrZG93biA9IG1hcmtkb3duSW1wb3J0KG1lc3NhZ2UucGF0aCwgbWVzc2FnZS5jb250ZW50cywgbWVzc2FnZS5tZXRhZGF0YSwgbWVzc2FnZS5zdGF0KTtcblxuICAgICAgICAgICAgcG9zdE1lc3NhZ2Uoe1xuICAgICAgICAgICAgICAgIHR5cGU6IFwibWFya2Rvd25cIixcbiAgICAgICAgICAgICAgICByZXN1bHQ6IG1hcmtkb3duLFxuICAgICAgICAgICAgfSBhcyBNYXJrZG93bkltcG9ydFJlc3VsdCk7XG4gICAgICAgIH0gZWxzZSBpZiAobWVzc2FnZS50eXBlID09PSBcImNhbnZhc1wiKSB7XG4gICAgICAgICAgICBjb25zdCBjYW52YXMgPSBjYW52YXNJbXBvcnQobWVzc2FnZS5wYXRoLCBtZXNzYWdlLmNvbnRlbnRzLCBtZXNzYWdlLmluZGV4LCBtZXNzYWdlLnN0YXQpO1xuXG4gICAgICAgICAgICBwb3N0TWVzc2FnZSh7XG4gICAgICAgICAgICAgICAgdHlwZTogXCJjYW52YXNcIixcbiAgICAgICAgICAgICAgICByZXN1bHQ6IGNhbnZhcyxcbiAgICAgICAgICAgIH0gYXMgQ2FudmFzSW1wb3J0UmVzdWx0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBvc3RNZXNzYWdlKHsgJGVycm9yOiBcIlVuc3VwcG9ydGVkIGltcG9ydCBtZXRob2QuXCIgfSk7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBEYXRhY29yZSBJbmRleGVyIGZhaWxlZCB0byBpbmRleCAke2V2ZW50LmRhdGEucGF0aH06ICR7ZXJyb3J9YCk7XG4gICAgICAgIHBvc3RNZXNzYWdlKHsgJGVycm9yOiBlcnJvci5tZXNzYWdlIH0pO1xuICAgIH1cbn07XG4iXSwKICAibWFwcGluZ3MiOiAiMGpEQUFBLElBQUFBLEdBQUFDLEdBQUEsQ0FBQUMsR0FBQUMsS0FBQSxFQUFDLFNBQVMsRUFBRUMsRUFBRSxDQUFXLE9BQU9GLElBQWpCLFVBQW9DLE9BQU9DLElBQWpCLFNBQXdCQSxHQUFPLFFBQVFDLEVBQUUsRUFBYyxPQUFPLFFBQW5CLFlBQTJCLE9BQU8sSUFBSSxPQUFPLENBQUMsRUFBRUEsQ0FBQyxFQUFZLE9BQU9GLElBQWpCLFNBQXlCQSxHQUFRLFVBQVVFLEVBQUUsRUFBRSxFQUFFLFVBQVVBLEVBQUUsQ0FBQyxHQUFlLE9BQU8sTUFBcEIsWUFBeUIsS0FBS0YsR0FBSyxVQUFVLENBQUMsT0FBTyxTQUFTLEVBQUUsQ0FBQyxJQUFJRSxFQUFFLENBQUMsRUFBRSxTQUFTQyxFQUFFQyxFQUFFLENBQUMsR0FBR0YsRUFBRUUsQ0FBQyxFQUFFLE9BQU9GLEVBQUVFLENBQUMsRUFBRSxRQUFRLElBQUlDLEVBQUVILEVBQUVFLENBQUMsRUFBRSxDQUFDLEVBQUVBLEVBQUUsRUFBRSxHQUFHLFFBQVEsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFQSxDQUFDLEVBQUUsS0FBS0MsRUFBRSxRQUFRQSxFQUFFQSxFQUFFLFFBQVFGLENBQUMsRUFBRUUsRUFBRSxFQUFFLEdBQUdBLEVBQUUsT0FBTyxDQUFDLE9BQU9GLEVBQUUsRUFBRSxFQUFFQSxFQUFFLEVBQUVELEVBQUVDLEVBQUUsRUFBRSxTQUFTRyxFQUFFSixFQUFFRSxFQUFFLENBQUNELEVBQUUsRUFBRUcsRUFBRUosQ0FBQyxHQUFHLE9BQU8sZUFBZUksRUFBRUosRUFBRSxDQUFDLGFBQWEsR0FBRyxXQUFXLEdBQUcsSUFBSUUsQ0FBQyxDQUFDLENBQUMsRUFBRUQsRUFBRSxFQUFFLFNBQVNHLEVBQUUsQ0FBQyxPQUFPLGVBQWVBLEVBQUUsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRUgsRUFBRSxFQUFFLFNBQVNHLEVBQUUsQ0FBQyxJQUFJSixFQUFFSSxHQUFHQSxFQUFFLFdBQVcsVUFBVSxDQUFDLE9BQU9BLEVBQUUsT0FBTyxFQUFFLFVBQVUsQ0FBQyxPQUFPQSxDQUFDLEVBQUUsT0FBT0gsRUFBRSxFQUFFRCxFQUFFLElBQUlBLENBQUMsRUFBRUEsQ0FBQyxFQUFFQyxFQUFFLEVBQUUsU0FBU0csRUFBRUosRUFBRSxDQUFDLE9BQU8sT0FBTyxVQUFVLGVBQWUsS0FBS0ksRUFBRUosQ0FBQyxDQUFDLEVBQUVDLEVBQUUsRUFBRSxHQUFHQSxFQUFFQSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUVELEVBQUVDLEVBQUUsQ0FBQyxhQUFhLFNBQVNDLEVBQUVFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsZ0JBQWdCRixHQUFHLE9BQU8sSUFBSUEsRUFBRUUsQ0FBQyxFQUFFLEtBQUssRUFBRUEsQ0FBQyxDQUFDLElBQUlELEVBQUVELEVBQUUsVUFBVSxTQUFTRyxFQUFFRCxFQUFFSixFQUFFLENBQUMsUUFBUUMsRUFBRSxFQUFFQSxFQUFFRyxFQUFFSCxJQUFJRCxFQUFFQyxDQUFDLENBQUMsQ0FBQyxTQUFTSyxFQUFFRixFQUFFSixFQUFFQyxFQUFFLENBQUMsT0FBTyxTQUFTRyxFQUFFSixFQUFFLENBQUNLLEVBQUVMLEVBQUUsT0FBTyxTQUFTQyxFQUFFLENBQUNHLEVBQUVKLEVBQUVDLENBQUMsRUFBRUEsRUFBRUQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVNDLEVBQUVDLEVBQUVDLEVBQUUsQ0FBQ0gsRUFBRUksRUFBRUosRUFBRUMsRUFBRUMsRUFBRUMsQ0FBQyxDQUFDLEVBQUVGLENBQUMsRUFBRUQsQ0FBQyxDQUFDLFNBQVMsRUFBRUksRUFBRUosRUFBRSxDQUFDLE9BQU9NLEVBQUUsU0FBU04sRUFBRUMsRUFBRUMsRUFBRUMsRUFBRSxDQUFDLE9BQU9ILEVBQUUsT0FBTyxDQUFDSSxFQUFFSCxFQUFFQyxFQUFFQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFSCxDQUFDLENBQUMsQ0FBQyxTQUFT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QUMsRUFBRSxFQUFFLFNBQVNKLEVBQUVDLEVBQUUsQ0FBQyxNQUFNLENBQUNELEVBQUVJLEVBQUVILENBQUMsQ0FBQyxDQUFDLEVBQUVFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssU0FBU0MsRUFBRSxDQUFDLEdBQUdLLEVBQUUsRUFBRW1CLEdBQUV4QixDQUFDLEVBQUVBLEVBQUUsSUFBSSxNQUFNLElBQUksTUFBTSx3Q0FBd0NBLEVBQUUsTUFBTUEsRUFBRSxTQUFTLEVBQUUsRUFBRSwwQ0FBMEMsRUFBRSxJQUFJSixHQUFHSSxFQUFFLEdBQUcsS0FBSyxPQUFPQSxFQUFFLFNBQVMsRUFBRSxFQUFFLE9BQU9GLEVBQUUsU0FBU0QsRUFBRUMsRUFBRSxDQUFDLElBQUlDLEVBQUV3QixFQUFFMUIsRUFBRUMsQ0FBQyxFQUFFLE9BQU9DLElBQUlDLEVBQUVRLEVBQUVWLEVBQUUsRUFBRUMsQ0FBQyxFQUFFUSxFQUFFVCxFQUFFRixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxTQUFTSSxFQUFFLENBQUMsT0FBT1MsRUFBRSxTQUFTVCxDQUFDLEVBQUUsSUFBSSxTQUFTQSxFQUFFLENBQUMsT0FBTyxPQUFPLEtBQUtBLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxjQUFjLFNBQVNBLEVBQUVKLEVBQUUsQ0FBQyxPQUFPYSxFQUFFLFNBQVNiLENBQUMsRUFBRSxJQUFJLFNBQVNBLEVBQUUsQ0FBQyxPQUFPQSxFQUFFLFNBQVNJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPVyxFQUFFLFFBQVFBLEVBQUUsQ0FBQyxFQUFFLFNBQVNBLEVBQUUsQ0FBQyxFQUFFLFNBQVNBLEVBQUUsQ0FBQyxFQUFFLE9BQU9DLEVBQUUsUUFBUUEsRUFBRSxDQUFDLEVBQUUsU0FBU0EsRUFBRSxDQUFDLEVBQUUsU0FBU0EsRUFBRSxDQUFDLEVBQUUsTUFBTUMsRUFBRSxPQUFPQSxFQUFFLENBQUMsRUFBRSxRQUFRQSxFQUFFLENBQUMsRUFBRSxRQUFRQSxFQUFFLENBQUMsRUFBRSxNQUFN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QUFDLEVBQ3hDLE9BQVFBLEVBQVMsV0FBVyxDQUFFLE9BQVEsQ0FBRSxDQUFDLEVBQ3pDLEdBQUlBLEVBQVMsV0FBVyxDQUFFLE9BQVEsQ0FBRSxDQUFDLEVBQ3JDLElBQUtBLEVBQVMsV0FBVyxDQUFFLE9BQVEsQ0FBRSxDQUFDLEVBRXRDLEtBQU1BLEVBQVMsV0FBVyxDQUFFLE1BQU8sQ0FBRSxDQUFDLEVBQ3RDLE1BQU9BLEVBQVMsV0FBVyxDQUFFLE1BQU8sQ0FBRSxDQUFDLEVBQ3ZDLEdBQUlBLEVBQVMsV0FBVyxDQUFFLE1BQU8sQ0FBRSxDQUFDLEVBQ3BDLElBQUtBLEVBQVMsV0FBVyxDQUFFLE1BQU8sQ0FBRSxDQUFDLEVBQ3JDLEVBQUdBLEVBQVMsV0FBVyxDQUFFLE1BQU8sQ0FBRSxDQUFDLEVBRW5DLElBQUtBLEVBQVMsV0FBVyxDQUFFLEtBQU0sQ0FBRSxDQUFDLEVBQ3BDLEtBQU1BLEVBQVMsV0FBVyxDQUFFLEtBQU0sQ0FBRSxDQUFDLEVBQ3JDLEVBQUdBLEVBQVMsV0FBVyxDQUFFLEtBQU0sQ0FBRSxDQUFDLEVBRWxDLEtBQU1BLEVBQVMsV0FBVyxDQUFFLE1BQU8sQ0FBRSxDQUFDLEVBQ3RDLE1BQU9BLEVBQVMsV0FBVyxDQUFFLE1BQU8sQ0FBRSxDQUFDLEVBQ3ZDLEdBQUlBLEVBQVMsV0FBVyxDQUFFLE1BQU8sQ0FBRSxDQUFDLEVBQ3BDLElBQUtBLEVBQVMsV0FBVyxDQUFFLE1BQU8sQ0FBRSxDQUFDLEVBQ3JDLEVBQUdBLEVBQVMsV0FBVyxDQUFFLE1BQU8sQ0FBRSxDQUFDLEVBRW5DLE9BQVFBLEVBQVMsV0FBVyxDQUFFLFFBQVMsQ0FBRSxDQUFDLEVBQzFDLFFBQVNBLEVBQVMsV0FBVyxDQUFFLFFBQVMsQ0FBRSxDQUFDLEVBQzNDLElBQUtBLEVBQVMsV0FBVyxDQUFFLFFBQVMsQ0FBRSxDQUFDLEVBQ3ZDLEtBQU1BLEVBQVMsV0FBVyxDQUFFLFFBQVMsQ0FBRSxDQUFDLEVBQ3hDLEVBQUdBLEVBQVMsV0FBVyxDQUFFLFFBQVMsQ0FBRSxDQUFDLEVBRXJDLE9BQVFBLEVB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TSxPQUFRLENBQUMsQ0FDekMsQ0FDSiIsCiAgIm5hbWVzIjogWyJyZXF1aXJlX3BhcnNpbW1vbl91bWRfbWluIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAidCIsICJyIiwgImUiLCAidSIsICJuIiwgIm8iLCAiaSIsICJmIiwgImMiLCAicyIsICJsIiwgIngiLCAiYiIsICJoIiwgInAiLCAiZCIsICJ2IiwgImciLCAibSIsICJ5IiwgIkUiLCAidyIsICJCIiwgImEiLCAiaiIsICJTIiwgIl8iLCAiTCIsICJPIiwgImsiLCAiUCIsICJxIiwgIkEiLCAiSSIsICJGIiwgIk0iLCAieiIsICJSIiwgIlUiLCAiVyIsICJEIiwgIk4iLCAiRyIsICJDIiwgIkoiLCAiVCIsICJZIiwgIlYiLCAiSCIsICJYIiwgIksiLCAiUSIsICJaIiwgIiQiLCAibm4iLCAidG4iLCAicm4iLCAiYW4iLCAiZW4iLCAidW4iLCAib24iLCAiZm4iLCAiY24iLCAic24iLCAibG4iLCAiaG4iLCAicG4iLCAiZG4iLCAidm4iLCAiZ24iLCAibW4iLCAieW4iLCAicmVxdWlyZV9iX3RyZWUiLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIl9fZXh0ZW5kcyIsICJleHRlbmRTdGF0aWNzIiwgImQiLCAiYiIsICJwIiwgIl9fIiwgImRlZmF1bHRDb21wYXJhdG9yIiwgImEiLCAidGEiLCAidGIiLCAic2ltcGxlQ29tcGFyYXRvciIsICJCVHJlZSIsICJlbnRyaWVzIiwgImNvbXBhcmUiLCAibWF4Tm9kZVNpemUiLCAiRW1wdHlMZWFmIiwgImNhbGxiYWNrIiwgInRoaXNBcmciLCAiX3RoaXMiLCAiayIsICJ2IiwgImluaXRpYWxDb3VudGVyIiwgImxvdyIsICJoaWdoIiwgImtleSIsICJkZWZhdWx0VmFsdWUiLCAidmFsdWUiLCAib3ZlcndyaXRlIiwgInJlc3VsdCIsICJCTm9kZUludGVybmFsIiwgIkRlbGV0ZVJhbmdlIiwgIm51IiwgInBhaXJzIiwgImtleXMiLCAicmV0dXJuVGhpc0lmVW5jaGFuZ2VkIiwgImNoYW5nZWQiLCAiaW5jbHVkZUhpZ2giLCAiZGVsIiwgImkiLCAiRGVsZXRlIiwgInRtcCIsICJpbml0aWFsVmFsdWUiLCAiaXQiLCAiUmV1c2VkQXJyYXkiLCAibmV4dCIsICJsb3dlc3RLZXkiLCAicmV1c2VkQXJyYXkiLCAiaW5mbyIsICJpdGVyYXRvciIsICJub2RlcXVldWUiLCAibm9kZWluZGV4IiwgImxlYWYiLCAic3RhdGUiLCAianVtcCIsICJsZXZlbCIsICJoaWdoZXN0S2V5IiwgInNraXBIaWdoZXN0IiwgIl9hIiwgImNoZWNrIiwgIm5leHRub2RlIiwgIkVtcHR5QXJyYXkiLCAib3RoZXIiLCAib25seVRoaXMiLCAib25seU90aGVyIiwgImRpZmZlcmVudCIsICJfY29tcGFyZSIsICJ0aGlzQ3Vyc29yIiwgIm90aGVyQ3Vyc29yIiwgInRoaXNTdWNjZXNzIiwgIm90aGVyU3VjY2VzcyIsICJwcmV2Q3Vyc29yT3JkZXIiLCAiY3Vyc29yT3JkZXIiLCAidGhpc0xlYWYiLCAidGhpc0ludGVybmFsU3BpbmUiLCAidGhpc0xldmVsSW5kaWNlcyIsICJvdGhlckxlYWYiLCAib3RoZXJJbnRlcm5hbFNwaW5lIiwgIm90aGVyTGV2ZWxJbmRpY2VzIiwgInZhbFRoaXMiLCAidmFsT3RoZXIiLCAib3RoZXJWYWwiLCAibGFzdFRoaXMiLCAibGFzdE90aGVyIiwgIm5vZGVUaGlzIiwgIm5vZGVPdGhlciIsICJjdXJzb3IiLCAiY3Vyc29yRmluaXNoZWQiLCAiY29tcGFyZUtleXMiLCAiY29tcGFyZWQiLCAiY2FuU3RlcCIsICJsZXZlbEluZGljZXMiLCAiY3VycmVudEtleSIsICJ0cmVlIiwgIl9yb290IiwgImhlaWdodCIsICJzdGVwVG9Ob2RlIiwgImludGVybmFsU3BpbmUiLCAibGV2ZWxzTGVuZ3RoIiwgInNwaW5lTGVuZ3RoIiwgIm5vZGVMZXZlbEluZGV4IiwgImxldmVsSW5kZXhXYWxrQmFjayIsICJ2YWx1ZUluZGV4IiwgIm5leHRMZXZlbCIsICJjdXJyZW50TGV2ZWwiLCAibm9kZSIsICJjaGlsZHJlbiIsICJjaGlsZEluZGV4IiwgImN1cnNvckEiLCAiY3Vyc29yQiIsICJoZWlnaHRBIiwgImN1cnJlbnRLZXlBIiwgImxldmVsSW5kaWNlc0EiLCAiaGVpZ2h0QiIsICJjdXJyZW50S2V5QiIsICJsZXZlbEluZGljZXNCIiwgImtleUNvbXBhcmlzb24iLCAiaGVpZ2h0TWluIiwgImRlcHRoQU5vcm1hbGl6ZWQiLCAiZGVwdGhCTm9ybWFsaXplZCIsICJmaXJzdEtleSIsICJuIiwgImZvcmNlIiwgIm1heExlbmd0aCIsICJtaW4iLCAibWF4IiwgInJlc3VsdHMiLCAiQnJlYWsiLCAiYWRkZWQiLCAib25Gb3VuZCIsICJyIiwgInJvb3QiLCAiaXNTaGFyZWQiLCAidCIsICJzaXplIiwgImFzU2V0IiwgImJ0cmVlIiwgIkJOb2RlIiwgInZhbHVlcyIsICJ1bmRlZlZhbHMiLCAiZmFpbFhvciIsICJjbXAiLCAibG8iLCAiaGkiLCAibWlkIiwgImMiLCAibGFzdEluZGV4IiwgImluY2x1c2l2ZSIsICJpbmRleE9yTG93ZXIiLCAiZGVwdGgiLCAiYmFzZUluZGV4IiwgImtMIiwgInZMIiwgIm5ld1JpZ2h0U2libGluZyIsICJ0YXJnZXQiLCAicmhzIiwgImxocyIsICJoYWxmIiwgImVkaXRNb2RlIiwgImNvdW50IiwgImlMb3ciLCAiaUhpZ2giLCAiXyIsICJfc3VwZXIiLCAibGVuZ3RoIiwgImNMIiwgImNoaWxkU2l6ZSIsICJ0b29mZXciLCAiY2hpbGQiLCAibWF4U2l6ZSIsICJvbGRMZW5ndGgiLCAicmhzQ2hpbGRyZW4iLCAiZmFjdCIsICJhcmdzIiwgIl9pIiwgIkx1eG9uRXJyb3IiLCAiSW52YWxpZERhdGVUaW1lRXJyb3IiLCAicmVhc29uIiwgIkludmFsaWRJbnRlcnZhbEVycm9yIiwgIkludmFsaWREdXJhdGlvbkVycm9yIiwgIkNvbmZsaWN0aW5nU3BlY2lmaWNhdGlvbkVycm9yIiwgIkludmFsaWRVbml0RXJyb3IiLCAidW5pdCIsICJJbnZhbGlkQXJndW1lbnRFcnJvciIsICJab25lSXNBYnN0cmFjdEVycm9yIiwgIm4iLCAicyIsICJsIiwgIkRBVEVfU0hPUlQiLCAiREFURV9NRUQiLCAiREFURV9NRURfV0lUSF9XRUVLREFZIiwgIkRBVEVfRlVMTCIsICJEQVRFX0hVR0UiLCAiVElNRV9TSU1QTEUiLCAiVElNRV9XSVRIX1NFQ09ORFMiLCAiVElNRV9XSVRIX1NIT1JUX09GRlNFVCIsICJUSU1FX1dJVEhfTE9OR19PRkZTRVQiLCAiVElNRV8yNF9TSU1QTEUiLCAiVElNRV8yNF9XSVRIX1NFQ09ORFMiLCAiVElNRV8yNF9XSVRIX1NIT1JUX09GRlNFVCIsICJUSU1FXzI0X1dJVEhfTE9OR19PRkZTRVQiLCAiREFURVRJTUVfU0hPUlQiLCAiREFURVRJTUVfU0hPUlRfV0lUSF9TRUNPTkRTIiwgIkRBVEVUSU1FX01FRCIsICJEQVRFVElNRV9NRURfV0lUSF9TRUNPTkRTIiwgIkRBVEVUSU1FX01FRF9XSVRIX1dFRUtEQVkiLCAiREFURVRJTUVfRlVMTCIsICJEQVRFVElNRV9GVUxMX1dJVEhfU0VDT05EUyIsICJEQVRFVElNRV9IVUdFIiwgIkRBVEVUSU1FX0hVR0VfV0lUSF9TRUNPTkRTIiwgImlzVW5kZWZpbmVkIiwgIm8iLCAiaXNOdW1iZXIiLCAiaXNJbnRlZ2VyIiwgImlzU3RyaW5nIiwgImlzRGF0ZSIsICJoYXNSZWxhdGl2ZSIsICJlIiwgIm1heWJlQXJyYXkiLCAidGhpbmciLCAiYmVzdEJ5IiwgImFyciIsICJieSIsICJjb21wYXJlIiwgImJlc3QiLCAibmV4dCIsICJwYWlyIiwgInBpY2siLCAib2JqIiwgImtleXMiLCAiYSIsICJrIiwgImhhc093blByb3BlcnR5IiwgInByb3AiLCAiaW50ZWdlckJldHdlZW4iLCAiYm90dG9tIiwgInRvcCIsICJmbG9vck1vZCIsICJ4IiwgIm4iLCAicGFkU3RhcnQiLCAiaW5wdXQiLCAiaXNOZWciLCAicGFkZGVkIiwgInBhcnNlSW50ZWdlciIsICJzdHJpbmciLCAicGFyc2VGbG9hdGluZyIsICJwYXJzZU1pbGxpcyIsICJmcmFjdGlvbiIsICJmIiwgInJvdW5kVG8iLCAibnVtYmVyIiwgImRpZ2l0cyIsICJ0b3dhcmRaZXJvIiwgImZhY3RvciIsICJpc0xlYXBZZWFyIiwgInllYXIiLCAiZGF5c0luWWVhciIsICJkYXlzSW5Nb250aCIsICJtb250aCIsICJtb2RNb250aCIsICJtb2RZZWFyIiwgIm9ialRvTG9jYWxUUyIsICJkIiwgIndlZWtzSW5XZWVrWWVhciIsICJ3ZWVrWWVhciIsICJwMSIsICJsYXN0IiwgInAyIiwgInVudHJ1bmNhdGVZZWFyIiwgInBhcnNlWm9uZUluZm8iLCAidHMiLCAib2Zmc2V0Rm9ybWF0IiwgImxvY2FsZSIsICJ0aW1lWm9uZSIsICJkYXRlIiwgImludGxPcHRzIiwgIm1vZGlmaWVkIiwgIl9fc3ByZWFkVmFsdWVzIiwgInBhcnNlZCIsICJtIiwgInNpZ25lZE9mZnNldCIsICJvZmZIb3VyU3RyIiwgIm9mZk1pbnV0ZVN0ciIsICJvZmZIb3VyIiwgIm9mZk1pbiIsICJvZmZNaW5TaWduZWQiLCAiYXNOdW1iZXIiLCAidmFsdWUiLCAibnVtZXJpY1ZhbHVlIiwgIkludmFsaWRBcmd1bWVudEVycm9yIiwgIm5vcm1hbGl6ZU9iamVjdCIsICJub3JtYWxpemVyIiwgIm5vcm1hbGl6ZWQiLCAidSIsICJ2IiwgImZvcm1hdE9mZnNldCIsICJvZmZzZXQiLCAiZm9ybWF0IiwgImhvdXJzIiwgIm1pbnV0ZXMiLCAic2lnbiIsICJ0aW1lT2JqZWN0IiwgImlhbmFSZWdleCIsICJtb250aHNMb25nIiwgIm1vbnRoc1Nob3J0IiwgIm1vbnRoc05hcnJvdyIsICJtb250aHMiLCAibGVuZ3RoIiwgIndlZWtkYXlzTG9uZyIsICJ3ZWVrZGF5c1Nob3J0IiwgIndlZWtkYXlzTmFycm93IiwgIndlZWtkYXlzIiwgIm1lcmlkaWVtcyIsICJlcmFzTG9uZyIsICJlcmFzU2hvcnQiLCAiZXJhc05hcnJvdyIsICJlcmFzIiwgIm1lcmlkaWVtRm9yRGF0ZVRpbWUiLCAiZHQiLCAid2Vla2RheUZvckRhdGVUaW1lIiwgIm1vbnRoRm9yRGF0ZVRpbWUiLCAiZXJhRm9yRGF0ZVRpbWUiLCAiZm9ybWF0UmVsYXRpdmVUaW1lIiwgInVuaXQiLCAiY291bnQiLCAibnVtZXJpYyIsICJuYXJyb3ciLCAidW5pdHMiLCAibGFzdGFibGUiLCAiaXNEYXkiLCAiaXNJblBhc3QiLCAiZm10VmFsdWUiLCAic2luZ3VsYXIiLCAibGlsVW5pdHMiLCAiZm10VW5pdCIsICJzdHJpbmdpZnlUb2tlbnMiLCAic3BsaXRzIiwgInRva2VuVG9TdHJpbmciLCAicyIsICJ0b2tlbiIsICJtYWNyb1Rva2VuVG9Gb3JtYXRPcHRzIiwgIkRBVEVfU0hPUlQiLCAiREFURV9NRUQiLCAiREFURV9GVUxMIiwgIkRBVEVfSFVHRSIsICJUSU1FX1NJTVBMRSIsICJUSU1FX1dJVEhfU0VDT05EUyIsICJUSU1FX1dJVEhfU0hPUlRfT0ZGU0VUIiwgIlRJTUVfV0lUSF9MT05HX09GRlNFVCIsICJUSU1FXzI0X1NJTVBMRSIsICJUSU1FXzI0X1dJVEhfU0VDT05EUyIsICJUSU1FXzI0X1dJVEhfU0hPUlRfT0ZGU0VUIiwgIlRJTUVfMjRfV0lUSF9MT05HX09GRlNFVCIsICJEQVRFVElNRV9TSE9SVCIsICJEQVRFVElNRV9NRUQiLCAiREFURVRJTUVfRlVMTCIsICJEQVRFVElNRV9IVUdFIiwgIkRBVEVUSU1FX1NIT1JUX1dJVEhfU0VDT05EUyIsICJEQVRFVElNRV9NRURfV0lUSF9TRUNPTkRTIiwgIkRBVEVUSU1FX0ZVTExfV0lUSF9TRUNPTkRTIiwgIkRBVEVUSU1FX0hVR0VfV0lUSF9TRUNPTkRTIiwgIkZvcm1hdHRlciIsICJfRm9ybWF0dGVyIiwgImxvY2FsZSIsICJvcHRzIiwgImZtdCIsICJjdXJyZW50IiwgImN1cnJlbnRGdWxsIiwgImJyYWNrZXRlZCIsICJpIiwgImMiLCAiZm9ybWF0T3B0cyIsICJkdCIsICJfX3NwcmVhZFZhbHVlcyIsICJuIiwgInAiLCAicGFkU3RhcnQiLCAia25vd25FbmdsaXNoIiwgInVzZURhdGVUaW1lRm9ybWF0dGVyIiwgInN0cmluZyIsICJleHRyYWN0IiwgImZvcm1hdE9mZnNldCIsICJtZXJpZGllbSIsICJtZXJpZGllbUZvckRhdGVUaW1lIiwgIm1vbnRoIiwgImxlbmd0aCIsICJzdGFuZGFsb25lIiwgIm1vbnRoRm9yRGF0ZVRpbWUiLCAid2Vla2RheSIsICJ3ZWVrZGF5Rm9yRGF0ZVRpbWUiLCAibWF5YmVNYWNybyIsICJlcmEiLCAiZXJhRm9yRGF0ZVRpbWUiLCAiZHVyIiwgInRva2VuVG9GaWVsZCIsICJsaWxkdXIiLCAibWFwcGVkIiwgInRva2VucyIsICJyZWFsVG9rZW5zIiwgImZvdW5kIiwgImxpdGVyYWwiLCAidmFsIiwgImNvbGxhcHNlZCIsICJ0IiwgIkludmFsaWQiLCAicmVhc29uIiwgImV4cGxhbmF0aW9uIiwgIlpvbmUiLCAiWm9uZUlzQWJzdHJhY3RFcnJvciIsICJ0cyIsICJvcHRzIiwgImZvcm1hdCIsICJvdGhlclpvbmUiLCAic2luZ2xldG9uIiwgIlN5c3RlbVpvbmUiLCAiX1N5c3RlbVpvbmUiLCAiWm9uZSIsICJ0cyIsICJmb3JtYXQiLCAibG9jYWxlIiwgInBhcnNlWm9uZUluZm8iLCAiZm9ybWF0T2Zmc2V0IiwgIm90aGVyWm9uZSIsICJkdGZDYWNoZSIsICJtYWtlRFRGIiwgInpvbmUiLCAidHlwZVRvUG9zIiwgImhhY2t5T2Zmc2V0IiwgImR0ZiIsICJkYXRlIiwgImZvcm1hdHRlZCIsICJwYXJzZWQiLCAiZk1vbnRoIiwgImZEYXkiLCAiZlllYXIiLCAiZmFkT3JCYyIsICJmSG91ciIsICJmTWludXRlIiwgImZTZWNvbmQiLCAicGFydHNPZmZzZXQiLCAiZmlsbGVkIiwgImkiLCAidHlwZSIsICJ2YWx1ZSIsICJwb3MiLCAiaXNVbmRlZmluZWQiLCAiaWFuYVpvbmVDYWNoZSIsICJJQU5BWm9uZSIsICJfSUFOQVpvbmUiLCAiWm9uZSIsICJuYW1lIiwgInMiLCAiZSIsICJ0cyIsICJmb3JtYXQiLCAibG9jYWxlIiwgInBhcnNlWm9uZUluZm8iLCAiZm9ybWF0T2Zmc2V0IiwgInllYXIiLCAibW9udGgiLCAiZGF5IiwgImFkT3JCYyIsICJob3VyIiwgIm1pbnV0ZSIsICJzZWNvbmQiLCAiYXNVVEMiLCAib2JqVG9Mb2NhbFRTIiwgImFzVFMiLCAib3ZlciIsICJvdGhlclpvbmUiLCAic2luZ2xldG9uIiwgIkZpeGVkT2Zmc2V0Wm9uZSIsICJfRml4ZWRPZmZzZXRab25lIiwgIlpvbmUiLCAib2Zmc2V0IiwgInMiLCAiciIsICJzaWduZWRPZmZzZXQiLCAiZm9ybWF0T2Zmc2V0IiwgInRzIiwgImZvcm1hdCIsICJvdGhlclpvbmUiLCAiSW52YWxpZFpvbmUiLCAiWm9uZSIsICJ6b25lTmFtZSIsICJub3JtYWxpemVab25lIiwgImlucHV0IiwgImRlZmF1bHRab25lIiwgIm9mZnNldCIsICJpc1VuZGVmaW5lZCIsICJab25lIiwgImlzU3RyaW5nIiwgImxvd2VyZWQiLCAiRml4ZWRPZmZzZXRab25lIiwgIklBTkFab25lIiwgImlzTnVtYmVyIiwgIkludmFsaWRab25lIiwgIm5vdyIsICJkZWZhdWx0Wm9uZSIsICJkZWZhdWx0TG9jYWxlIiwgImRlZmF1bHROdW1iZXJpbmdTeXN0ZW0iLCAiZGVmYXVsdE91dHB1dENhbGVuZGFyIiwgInRocm93T25JbnZhbGlkIiwgIlNldHRpbmdzIiwgIm4iLCAiem9uZSIsICJub3JtYWxpemVab25lIiwgIlN5c3RlbVpvbmUiLCAibG9jYWxlIiwgIm51bWJlcmluZ1N5c3RlbSIsICJvdXRwdXRDYWxlbmRhciIsICJ0IiwgIkxvY2FsZSIsICJJQU5BWm9uZSIsICJpbnRsTEZDYWNoZSIsICJnZXRDYWNoZWRMRiIsICJsb2NTdHJpbmciLCAib3B0cyIsICJrZXkiLCAiZHRmIiwgImludGxEVENhY2hlIiwgImdldENhY2hlZERURiIsICJpbnRsTnVtQ2FjaGUiLCAiZ2V0Q2FjaGVkSU5GIiwgImluZiIsICJpbnRsUmVsQ2FjaGUiLCAiZ2V0Q2FjaGVkUlRGIiwgIl9hIiwgImJhc2UiLCAiY2FjaGVLZXlPcHRzIiwgIl9fb2JqUmVzdCIsICJzeXNMb2NhbGVDYWNoZSIsICJzeXN0ZW1Mb2NhbGUiLCAicGFyc2VMb2NhbGVTdHJpbmciLCAibG9jYWxlU3RyIiwgInVJbmRleCIsICJvcHRpb25zIiwgInNtYWxsZXIiLCAiZSIsICJudW1iZXJpbmdTeXN0ZW0iLCAiY2FsZW5kYXIiLCAiaW50bENvbmZpZ1N0cmluZyIsICJvdXRwdXRDYWxlbmRhciIsICJtYXBNb250aHMiLCAiZiIsICJtcyIsICJpIiwgImR0IiwgIkRhdGVUaW1lIiwgIm1hcFdlZWtkYXlzIiwgImxpc3RTdHVmZiIsICJsb2MiLCAibGVuZ3RoIiwgImRlZmF1bHRPSyIsICJlbmdsaXNoRm4iLCAiaW50bEZuIiwgIm1vZGUiLCAic3VwcG9ydHNGYXN0TnVtYmVycyIsICJQb2x5TnVtYmVyRm9ybWF0dGVyIiwgImludGwiLCAiZm9yY2VTaW1wbGUiLCAicGFkVG8iLCAiZmxvb3IiLCAib3RoZXJPcHRzIiwgImludGxPcHRzIiwgIl9fc3ByZWFkVmFsdWVzIiwgImZpeGVkIiwgInJvdW5kVG8iLCAicGFkU3RhcnQiLCAiUG9seURhdGVGb3JtYXR0ZXIiLCAieiIsICJnbXRPZmZzZXQiLCAib2Zmc2V0WiIsICJJQU5BWm9uZSIsICJQb2x5UmVsRm9ybWF0dGVyIiwgImlzRW5nbGlzaCIsICJoYXNSZWxhdGl2ZSIsICJjb3VudCIsICJ1bml0IiwgImZvcm1hdFJlbGF0aXZlVGltZSIsICJMb2NhbGUiLCAiX0xvY2FsZSIsICJsb2NhbGUiLCAiZGVmYXVsdFRvRU4iLCAic3BlY2lmaWVkTG9jYWxlIiwgIlNldHRpbmdzIiwgImxvY2FsZVIiLCAibnVtYmVyaW5nU3lzdGVtUiIsICJvdXRwdXRDYWxlbmRhclIiLCAibnVtYmVyaW5nIiwgInBhcnNlZExvY2FsZSIsICJwYXJzZWROdW1iZXJpbmdTeXN0ZW0iLCAicGFyc2VkT3V0cHV0Q2FsZW5kYXIiLCAiaXNBY3R1YWxseUVuIiwgImhhc05vV2VpcmRuZXNzIiwgImFsdHMiLCAiX19zcHJlYWRQcm9wcyIsICJmb3JtYXQiLCAibW9udGhzIiwgImZvcm1hdFN0ciIsICJ3ZWVrZGF5cyIsICJtZXJpZGllbXMiLCAiZXJhcyIsICJmaWVsZCIsICJkZiIsICJyZXN1bHRzIiwgIm1hdGNoaW5nIiwgIm0iLCAib3RoZXIiLCAiY29tYmluZVJlZ2V4ZXMiLCAicmVnZXhlcyIsICJmdWxsIiwgImYiLCAiY29tYmluZUV4dHJhY3RvcnMiLCAiZXh0cmFjdG9ycyIsICJtIiwgIm1lcmdlZFZhbHMiLCAibWVyZ2VkWm9uZSIsICJjdXJzb3IiLCAiZXgiLCAidmFsIiwgInpvbmUiLCAibmV4dCIsICJfX3NwcmVhZFZhbHVlcyIsICJwYXJzZSIsICJzIiwgInBhdHRlcm5zIiwgInJlZ2V4IiwgImV4dHJhY3RvciIsICJzaW1wbGVQYXJzZSIsICJrZXlzIiwgIm1hdGNoIiwgInJldCIsICJpIiwgInBhcnNlSW50ZWdlciIsICJvZmZzZXRSZWdleCIsICJpc29FeHRlbmRlZFpvbmUiLCAiaWFuYVJlZ2V4IiwgImlzb1RpbWVCYXNlUmVnZXgiLCAiaXNvVGltZVJlZ2V4IiwgImlzb1RpbWVFeHRlbnNpb25SZWdleCIsICJpc29ZbWRSZWdleCIsICJpc29XZWVrUmVnZXgiLCAiaXNvT3JkaW5hbFJlZ2V4IiwgImV4dHJhY3RJU09XZWVrRGF0YSIsICJleHRyYWN0SVNPT3JkaW5hbERhdGEiLCAic3FsWW1kUmVnZXgiLCAic3FsVGltZVJlZ2V4IiwgInNxbFRpbWVFeHRlbnNpb25SZWdleCIsICJpbnQiLCAicG9zIiwgImZhbGxiYWNrIiwgImlzVW5kZWZpbmVkIiwgImV4dHJhY3RJU09ZbWQiLCAiZXh0cmFjdElTT1RpbWUiLCAicGFyc2VNaWxsaXMiLCAiZXh0cmFjdElTT09mZnNldCIsICJsb2NhbCIsICJmdWxsT2Zmc2V0IiwgInNpZ25lZE9mZnNldCIsICJGaXhlZE9mZnNldFpvbmUiLCAiZXh0cmFjdElBTkFab25lIiwgIklBTkFab25lIiwgImlzb1RpbWVPbmx5IiwgImlzb0R1cmF0aW9uIiwgImV4dHJhY3RJU09EdXJhdGlvbiIsICJ5ZWFyU3RyIiwgIm1vbnRoU3RyIiwgIndlZWtTdHIiLCAiZGF5U3RyIiwgImhvdXJTdHIiLCAibWludXRlU3RyIiwgInNlY29uZFN0ciIsICJtaWxsaXNlY29uZHNTdHIiLCAiaGFzTmVnYXRpdmVQcmVmaXgiLCAibmVnYXRpdmVTZWNvbmRzIiwgIm1heWJlTmVnYXRlIiwgIm51bSIsICJmb3JjZSIsICJwYXJzZUZsb2F0aW5nIiwgIm9ic09mZnNldHMiLCAiZnJvbVN0cmluZ3MiLCAid2Vla2RheVN0ciIsICJyZXN1bHQiLCAidW50cnVuY2F0ZVllYXIiLCAibW9udGhzU2hvcnQiLCAid2Vla2RheXNMb25nIiwgIndlZWtkYXlzU2hvcnQiLCAicmZjMjgyMiIsICJleHRyYWN0UkZDMjgyMiIsICJvYnNPZmZzZXQiLCAibWlsT2Zmc2V0IiwgIm9mZkhvdXJTdHIiLCAib2ZmTWludXRlU3RyIiwgIm9mZnNldCIsICJwcmVwcm9jZXNzUkZDMjgyMiIsICJyZmMxMTIzIiwgInJmYzg1MCIsICJhc2NpaSIsICJleHRyYWN0UkZDMTEyM09yODUwIiwgImV4dHJhY3RBU0NJSSIsICJpc29ZbWRXaXRoVGltZUV4dGVuc2lvblJlZ2V4IiwgImlzb1dlZWtXaXRoVGltZUV4dGVuc2lvblJlZ2V4IiwgImlzb09yZGluYWxXaXRoVGltZUV4dGVuc2lvblJlZ2V4IiwgImlzb1RpbWVDb21iaW5lZFJlZ2V4IiwgImV4dHJhY3RJU09ZbWRUaW1lQW5kT2Zmc2V0IiwgImV4dHJhY3RJU09XZWVrVGltZUFuZE9mZnNldCIsICJleHRyYWN0SVNPT3JkaW5hbERhdGVBbmRUaW1lIiwgImV4dHJhY3RJU09UaW1lQW5kT2Zmc2V0IiwgInBhcnNlSVNPRGF0ZSIsICJwYXJzZVJGQzI4MjJEYXRlIiwgInBhcnNlSFRUUERhdGUiLCAicGFyc2VJU09EdXJhdGlvbiIsICJleHRyYWN0SVNPVGltZU9ubHkiLCAicGFyc2VJU09UaW1lT25seSIsICJzcWxZbWRXaXRoVGltZUV4dGVuc2lvblJlZ2V4IiwgInNxbFRpbWVDb21iaW5lZFJlZ2V4IiwgImV4dHJhY3RJU09UaW1lT2Zmc2V0QW5kSUFOQVpvbmUiLCAicGFyc2VTUUwiLCAiSU5WQUxJRCIsICJsb3dPcmRlck1hdHJpeCIsICJjYXN1YWxNYXRyaXgiLCAiX19zcHJlYWRWYWx1ZXMiLCAiZGF5c0luWWVhckFjY3VyYXRlIiwgImRheXNJbk1vbnRoQWNjdXJhdGUiLCAiYWNjdXJhdGVNYXRyaXgiLCAib3JkZXJlZFVuaXRzIiwgInJldmVyc2VVbml0cyIsICJjbG9uZSIsICJkdXIiLCAiYWx0cyIsICJjbGVhciIsICJjb25mIiwgIkR1cmF0aW9uIiwgImFudGlUcnVuYyIsICJjb252ZXJ0IiwgIm1hdHJpeCIsICJmcm9tTWFwIiwgImZyb21Vbml0IiwgInRvTWFwIiwgInRvVW5pdCIsICJjb252IiwgInJhdyIsICJzYW1lU2lnbiIsICJhZGRlZCIsICJub3JtYWxpemVWYWx1ZXMiLCAidmFscyIsICJwcmV2aW91cyIsICJjdXJyZW50IiwgImlzVW5kZWZpbmVkIiwgIl9EdXJhdGlvbiIsICJjb25maWciLCAiYWNjdXJhdGUiLCAiTG9jYWxlIiwgImNvdW50IiwgIm9wdHMiLCAib2JqIiwgIkludmFsaWRBcmd1bWVudEVycm9yIiwgIm5vcm1hbGl6ZU9iamVjdCIsICJkdXJhdGlvbkxpa2UiLCAiaXNOdW1iZXIiLCAidGV4dCIsICJwYXJzZWQiLCAicGFyc2VJU09EdXJhdGlvbiIsICJwYXJzZUlTT1RpbWVPbmx5IiwgInJlYXNvbiIsICJleHBsYW5hdGlvbiIsICJpbnZhbGlkIiwgIkludmFsaWQiLCAiU2V0dGluZ3MiLCAiSW52YWxpZER1cmF0aW9uRXJyb3IiLCAidW5pdCIsICJub3JtYWxpemVkIiwgIkludmFsaWRVbml0RXJyb3IiLCAibyIsICJmbXQiLCAiZm10T3B0cyIsICJfX3NwcmVhZFByb3BzIiwgIkZvcm1hdHRlciIsICJsIiwgInZhbCIsICJuIiwgInMiLCAicm91bmRUbyIsICJtaWxsaXMiLCAidmFsdWUiLCAic3RyIiwgImR1cmF0aW9uIiwgInJlc3VsdCIsICJrIiwgImhhc093blByb3BlcnR5IiwgImZuIiwgImFzTnVtYmVyIiwgInZhbHVlcyIsICJtaXhlZCIsICJsb2NhbGUiLCAibnVtYmVyaW5nU3lzdGVtIiwgImNvbnZlcnNpb25BY2N1cmFjeSIsICJsb2MiLCAidW5pdHMiLCAidSIsICJidWlsdCIsICJhY2N1bXVsYXRlZCIsICJsYXN0VW5pdCIsICJvd24iLCAiYWsiLCAiaSIsICJkb3duIiwgImtleSIsICJuZWdhdGVkIiwgIm90aGVyIiwgImVxIiwgInYxIiwgInYyIiwgIklOVkFMSUQiLCAidmFsaWRhdGVTdGFydEVuZCIsICJzdGFydCIsICJlbmQiLCAiSW50ZXJ2YWwiLCAiX0ludGVydmFsIiwgImNvbmZpZyIsICJyZWFzb24iLCAiZXhwbGFuYXRpb24iLCAiSW52YWxpZEFyZ3VtZW50RXJyb3IiLCAiaW52YWxpZCIsICJJbnZhbGlkIiwgIlNldHRpbmdzIiwgIkludmFsaWRJbnRlcnZhbEVycm9yIiwgImJ1aWx0U3RhcnQiLCAiZnJpZW5kbHlEYXRlVGltZSIsICJidWlsdEVuZCIsICJ2YWxpZGF0ZUVycm9yIiwgImR1cmF0aW9uIiwgImR1ciIsICJEdXJhdGlvbiIsICJkdCIsICJ0ZXh0IiwgIm9wdHMiLCAicyIsICJlIiwgInN0YXJ0SXNWYWxpZCIsICJEYXRlVGltZSIsICJlbmRJc1ZhbGlkIiwgIm8iLCAidW5pdCIsICJkYXRlVGltZSIsICJkYXRlVGltZXMiLCAic29ydGVkIiwgImQiLCAicmVzdWx0cyIsICJhZGRlZCIsICJuZXh0IiwgImlkeCIsICJ4IiwgIm51bWJlck9mUGFydHMiLCAib3RoZXIiLCAiaW50ZXJ2YWxzIiwgImZvdW5kIiwgImZpbmFsIiwgImEiLCAiYiIsICJzb2ZhciIsICJjdXJyZW50IiwgIml0ZW0iLCAiY3VycmVudENvdW50IiwgImVuZHMiLCAiaSIsICJmbGF0dGVuZWQiLCAiYXJyIiwgImRhdGVGb3JtYXQiLCAic2VwYXJhdG9yIiwgIm1hcEZuIiwgIkluZm8iLCAiem9uZSIsICJTZXR0aW5ncyIsICJwcm90byIsICJEYXRlVGltZSIsICJJQU5BWm9uZSIsICJpbnB1dCIsICJub3JtYWxpemVab25lIiwgImxlbmd0aCIsICJsb2NhbGUiLCAibnVtYmVyaW5nU3lzdGVtIiwgImxvY09iaiIsICJvdXRwdXRDYWxlbmRhciIsICJMb2NhbGUiLCAiaGFzUmVsYXRpdmUiLCAiZGF5RGlmZiIsICJlYXJsaWVyIiwgImxhdGVyIiwgInV0Y0RheVN0YXJ0IiwgImR0IiwgIm1zIiwgIkR1cmF0aW9uIiwgImhpZ2hPcmRlckRpZmZzIiwgImN1cnNvciIsICJ1bml0cyIsICJkaWZmZXJzIiwgImIiLCAiZGF5cyIsICJyZXN1bHRzIiwgImxvd2VzdE9yZGVyIiwgImhpZ2hXYXRlciIsICJ1bml0IiwgImRpZmZlciIsICJkZWx0YSIsICJkaWZmX2RlZmF1bHQiLCAib3B0cyIsICJyZW1haW5pbmdNaWxsaXMiLCAibG93ZXJPcmRlclVuaXRzIiwgInUiLCAiZHVyYXRpb24iLCAibnVtYmVyaW5nU3lzdGVtcyIsICJudW1iZXJpbmdTeXN0ZW1zVVRGMTYiLCAiaGFuaWRlY0NoYXJzIiwgInBhcnNlRGlnaXRzIiwgInN0ciIsICJ2YWx1ZSIsICJpIiwgImNvZGUiLCAia2V5IiwgIm1pbiIsICJtYXgiLCAiZGlnaXRSZWdleCIsICJudW1iZXJpbmdTeXN0ZW0iLCAiYXBwZW5kIiwgIk1JU1NJTkdfRlRQIiwgImludFVuaXQiLCAicmVnZXgiLCAicG9zdCIsICJpIiwgInMiLCAicGFyc2VEaWdpdHMiLCAiTkJTUCIsICJzcGFjZU9yTkJTUCIsICJzcGFjZU9yTkJTUFJlZ0V4cCIsICJmaXhMaXN0UmVnZXgiLCAic3RyaXBJbnNlbnNpdGl2aXRpZXMiLCAib25lT2YiLCAic3RyaW5ncyIsICJzdGFydEluZGV4IiwgIm9mZnNldCIsICJncm91cHMiLCAiaCIsICJtIiwgInNpZ25lZE9mZnNldCIsICJzaW1wbGUiLCAiZXNjYXBlVG9rZW4iLCAidmFsdWUiLCAidW5pdEZvclRva2VuIiwgInRva2VuIiwgImxvYyIsICJvbmUiLCAiZGlnaXRSZWdleCIsICJ0d28iLCAidGhyZWUiLCAiZm91ciIsICJzaXgiLCAib25lT3JUd28iLCAib25lVG9UaHJlZSIsICJvbmVUb1NpeCIsICJvbmVUb05pbmUiLCAidHdvVG9Gb3VyIiwgImZvdXJUb1NpeCIsICJsaXRlcmFsIiwgInQiLCAidW5pdCIsICJ1bnRydW5jYXRlWWVhciIsICJwYXJ0VHlwZVN0eWxlVG9Ub2tlblZhbCIsICJ0b2tlbkZvclBhcnQiLCAicGFydCIsICJsb2NhbGUiLCAiZm9ybWF0T3B0cyIsICJ0eXBlIiwgInN0eWxlIiwgInZhbCIsICJidWlsZFJlZ2V4IiwgInVuaXRzIiwgInUiLCAiZiIsICJtYXRjaCIsICJpbnB1dCIsICJoYW5kbGVycyIsICJtYXRjaGVzIiwgImFsbCIsICJtYXRjaEluZGV4IiwgImhhc093blByb3BlcnR5IiwgImRhdGVUaW1lRnJvbU1hdGNoZXMiLCAidG9GaWVsZCIsICJ6b25lIiwgInNwZWNpZmljT2Zmc2V0IiwgImlzVW5kZWZpbmVkIiwgIklBTkFab25lIiwgIkZpeGVkT2Zmc2V0Wm9uZSIsICJwYXJzZU1pbGxpcyIsICJyIiwgImsiLCAiZHVtbXlEYXRlVGltZUNhY2hlIiwgImdldER1bW15RGF0ZVRpbWUiLCAiRGF0ZVRpbWUiLCAibWF5YmVFeHBhbmRNYWNyb1Rva2VuIiwgIkZvcm1hdHRlciIsICJ0b2tlbnMiLCAicCIsICJleHBhbmRNYWNyb1Rva2VucyIsICJleHBsYWluRnJvbVRva2VucyIsICJmb3JtYXQiLCAiZGlzcXVhbGlmeWluZ1VuaXQiLCAicmVnZXhTdHJpbmciLCAicmF3TWF0Y2hlcyIsICJyZXN1bHQiLCAiQ29uZmxpY3RpbmdTcGVjaWZpY2F0aW9uRXJyb3IiLCAicGFyc2VGcm9tVG9rZW5zIiwgImludmFsaWRSZWFzb24iLCAibm9uTGVhcExhZGRlciIsICJsZWFwTGFkZGVyIiwgInVuaXRPdXRPZlJhbmdlIiwgInVuaXQiLCAidmFsdWUiLCAiSW52YWxpZCIsICJkYXlPZldlZWsiLCAieWVhciIsICJtb250aCIsICJkYXkiLCAiZCIsICJqcyIsICJjb21wdXRlT3JkaW5hbCIsICJpc0xlYXBZZWFyIiwgInVuY29tcHV0ZU9yZGluYWwiLCAib3JkaW5hbCIsICJ0YWJsZSIsICJtb250aDAiLCAiZ3JlZ29yaWFuVG9XZWVrIiwgImdyZWdPYmoiLCAid2Vla2RheSIsICJ3ZWVrTnVtYmVyIiwgIndlZWtZZWFyIiwgIndlZWtzSW5XZWVrWWVhciIsICJfX3NwcmVhZFZhbHVlcyIsICJ0aW1lT2JqZWN0IiwgIndlZWtUb0dyZWdvcmlhbiIsICJ3ZWVrRGF0YSIsICJ3ZWVrZGF5T2ZKYW40IiwgInllYXJJbkRheXMiLCAiZGF5c0luWWVhciIsICJncmVnb3JpYW5Ub09yZGluYWwiLCAiZ3JlZ0RhdGEiLCAib3JkaW5hbFRvR3JlZ29yaWFuIiwgIm9yZGluYWxEYXRhIiwgImhhc0ludmFsaWRXZWVrRGF0YSIsICJvYmoiLCAidmFsaWRZZWFyIiwgImlzSW50ZWdlciIsICJ2YWxpZFdlZWsiLCAiaW50ZWdlckJldHdlZW4iLCAidmFsaWRXZWVrZGF5IiwgImhhc0ludmFsaWRPcmRpbmFsRGF0YSIsICJ2YWxpZE9yZGluYWwiLCAiaGFzSW52YWxpZEdyZWdvcmlhbkRhdGEiLCAidmFsaWRNb250aCIsICJ2YWxpZERheSIsICJkYXlzSW5Nb250aCIsICJoYXNJbnZhbGlkVGltZURhdGEiLCAiaG91ciIsICJtaW51dGUiLCAic2Vjb25kIiwgIm1pbGxpc2Vjb25kIiwgInZhbGlkSG91ciIsICJ2YWxpZE1pbnV0ZSIsICJ2YWxpZFNlY29uZCIsICJ2YWxpZE1pbGxpc2Vjb25kIiwgIklOVkFMSUQiLCAiTUFYX0RBVEUiLCAidW5zdXBwb3J0ZWRab25lIiwgInpvbmUiLCAiSW52YWxpZCIsICJwb3NzaWJseUNhY2hlZFdlZWtEYXRhIiwgImR0IiwgImdyZWdvcmlhblRvV2VlayIsICJjbG9uZSIsICJpbnN0IiwgImFsdHMiLCAiY3VycmVudCIsICJEYXRlVGltZSIsICJfX3NwcmVhZFByb3BzIiwgIl9fc3ByZWFkVmFsdWVzIiwgImZpeE9mZnNldCIsICJsb2NhbFRTIiwgIm8iLCAidHoiLCAidXRjR3Vlc3MiLCAibzIiLCAibzMiLCAidHNUb09iaiIsICJ0cyIsICJvZmZzZXQiLCAiZCIsICJvYmpUb1RTIiwgIm9iaiIsICJvYmpUb0xvY2FsVFMiLCAiYWRqdXN0VGltZSIsICJkdXIiLCAib1ByZSIsICJ5ZWFyIiwgIm1vbnRoIiwgImMiLCAiZGF5c0luTW9udGgiLCAibWlsbGlzVG9BZGQiLCAiRHVyYXRpb24iLCAicGFyc2VEYXRhVG9EYXRlVGltZSIsICJwYXJzZWQiLCAicGFyc2VkWm9uZSIsICJvcHRzIiwgImZvcm1hdCIsICJ0ZXh0IiwgInNwZWNpZmljT2Zmc2V0IiwgInNldFpvbmUiLCAiaW50ZXJwcmV0YXRpb25ab25lIiwgInRvVGVjaEZvcm1hdCIsICJhbGxvd1oiLCAiRm9ybWF0dGVyIiwgIkxvY2FsZSIsICJ0b0lTT0RhdGUiLCAiZXh0ZW5kZWQiLCAibG9uZ0Zvcm1hdCIsICJwYWRTdGFydCIsICJ0b0lTT1RpbWUiLCAic3VwcHJlc3NTZWNvbmRzIiwgInN1cHByZXNzTWlsbGlzZWNvbmRzIiwgImluY2x1ZGVPZmZzZXQiLCAiZXh0ZW5kZWRab25lIiwgImRlZmF1bHRVbml0VmFsdWVzIiwgImRlZmF1bHRXZWVrVW5pdFZhbHVlcyIsICJkZWZhdWx0T3JkaW5hbFVuaXRWYWx1ZXMiLCAib3JkZXJlZFVuaXRzIiwgIm9yZGVyZWRXZWVrVW5pdHMiLCAib3JkZXJlZE9yZGluYWxVbml0cyIsICJub3JtYWxpemVVbml0IiwgInVuaXQiLCAibm9ybWFsaXplZCIsICJJbnZhbGlkVW5pdEVycm9yIiwgInF1aWNrRFQiLCAibm9ybWFsaXplWm9uZSIsICJTZXR0aW5ncyIsICJsb2MiLCAidHNOb3ciLCAiaXNVbmRlZmluZWQiLCAidSIsICJpbnZhbGlkIiwgImhhc0ludmFsaWRHcmVnb3JpYW5EYXRhIiwgImhhc0ludmFsaWRUaW1lRGF0YSIsICJvZmZzZXRQcm92aXMiLCAiZGlmZlJlbGF0aXZlIiwgInN0YXJ0IiwgImVuZCIsICJyb3VuZCIsICJyb3VuZFRvIiwgImRpZmZlciIsICJjb3VudCIsICJsYXN0T3B0cyIsICJhcmdMaXN0IiwgImFyZ3MiLCAiX0RhdGVUaW1lIiwgImNvbmZpZyIsICJvdCIsICJkYXkiLCAiaG91ciIsICJtaW51dGUiLCAic2Vjb25kIiwgIm1pbGxpc2Vjb25kIiwgIkZpeGVkT2Zmc2V0Wm9uZSIsICJkYXRlIiwgIm9wdGlvbnMiLCAiaXNEYXRlIiwgInpvbmVUb1VzZSIsICJtaWxsaXNlY29uZHMiLCAiaXNOdW1iZXIiLCAiSW52YWxpZEFyZ3VtZW50RXJyb3IiLCAic2Vjb25kcyIsICJub3JtYWxpemVPYmplY3QiLCAiY29udGFpbnNPcmRpbmFsIiwgImNvbnRhaW5zR3JlZ29yWWVhciIsICJjb250YWluc0dyZWdvck1EIiwgImNvbnRhaW5zR3JlZ29yIiwgImRlZmluaXRlV2Vla0RlZiIsICJDb25mbGljdGluZ1NwZWNpZmljYXRpb25FcnJvciIsICJ1c2VXZWVrRGF0YSIsICJ1bml0cyIsICJkZWZhdWx0VmFsdWVzIiwgIm9iak5vdyIsICJncmVnb3JpYW5Ub09yZGluYWwiLCAiZm91bmRGaXJzdCIsICJ2IiwgImhpZ2hlck9yZGVySW52YWxpZCIsICJoYXNJbnZhbGlkV2Vla0RhdGEiLCAiaGFzSW52YWxpZE9yZGluYWxEYXRhIiwgImdyZWdvcmlhbiIsICJ3ZWVrVG9HcmVnb3JpYW4iLCAib3JkaW5hbFRvR3JlZ29yaWFuIiwgInRzRmluYWwiLCAib2Zmc2V0RmluYWwiLCAidmFscyIsICJwYXJzZUlTT0RhdGUiLCAicGFyc2VSRkMyODIyRGF0ZSIsICJwYXJzZUhUVFBEYXRlIiwgImZtdCIsICJsb2NhbGUiLCAibnVtYmVyaW5nU3lzdGVtIiwgImxvY2FsZVRvVXNlIiwgInBhcnNlRnJvbVRva2VucyIsICJwYXJzZVNRTCIsICJyZWFzb24iLCAiZXhwbGFuYXRpb24iLCAiSW52YWxpZERhdGVUaW1lRXJyb3IiLCAiSW5mbyIsICJpc0xlYXBZZWFyIiwgImRheXNJblllYXIiLCAid2Vla3NJbldlZWtZZWFyIiwgImNhbGVuZGFyIiwgImtlZXBMb2NhbFRpbWUiLCAia2VlcENhbGVuZGFyVGltZSIsICJuZXdUUyIsICJvZmZzZXRHdWVzcyIsICJhc09iaiIsICJvdXRwdXRDYWxlbmRhciIsICJ2YWx1ZXMiLCAic2V0dGluZ1dlZWtTdHVmZiIsICJtaXhlZCIsICJkdXJhdGlvbiIsICJub3JtYWxpemVkVW5pdCIsICJxIiwgImZvcm1hdE9wdHMiLCAiREFURV9TSE9SVCIsICJleHQiLCAiaW5jbHVkZVByZWZpeCIsICJpbmNsdWRlWm9uZSIsICJpbmNsdWRlT2Zmc2V0U3BhY2UiLCAiYmFzZSIsICJvdGhlckRhdGVUaW1lIiwgImR1ck9wdHMiLCAibWF5YmVBcnJheSIsICJvdGhlcklzTGF0ZXIiLCAiZWFybGllciIsICJsYXRlciIsICJkaWZmZWQiLCAiZGlmZl9kZWZhdWx0IiwgIkludGVydmFsIiwgImlucHV0TXMiLCAiYWRqdXN0ZWRUb1pvbmUiLCAib3RoZXIiLCAicGFkZGluZyIsICJkYXRlVGltZXMiLCAiYmVzdEJ5IiwgImkiLCAiZXhwbGFpbkZyb21Ub2tlbnMiLCAiREFURV9NRUQiLCAiREFURV9NRURfV0lUSF9XRUVLREFZIiwgIkRBVEVfRlVMTCIsICJEQVRFX0hVR0UiLCAiVElNRV9TSU1QTEUiLCAiVElNRV9XSVRIX1NFQ09ORFMiLCAiVElNRV9XSVRIX1NIT1JUX09GRlNFVCIsICJUSU1FX1dJVEhfTE9OR19PRkZTRVQiLCAiVElNRV8yNF9TSU1QTEUiLCAiVElNRV8yNF9XSVRIX1NFQ09ORFMiLCAiVElNRV8yNF9XSVRIX1NIT1JUX09GRlNFVCIsICJUSU1FXzI0X1dJVEhfTE9OR19PRkZTRVQiLCAiREFURVRJTUVfU0hPUlQiLCAiREFURVRJTUVfU0hPUlRfV0lUSF9TRUNPTkRTIiwgIkRBVEVUSU1FX01FRCIsICJEQVRFVElNRV9NRURfV0lUSF9TRUNPTkRTIiwgIkRBVEVUSU1FX01FRF9XSVRIX1dFRUtEQVkiLCAiREFURVRJTUVfRlVMTCIsICJEQVRFVElNRV9GVUxMX1dJVEhfU0VDT05EUyIsICJEQVRFVElNRV9IVUdFIiwgIkRBVEVUSU1FX0hVR0VfV0lUSF9TRUNPTkRTIiwgImZyaWVuZGx5RGF0ZVRpbWUiLCAiZGF0ZVRpbWVpc2giLCAiUCIsICJlbW9qaV9yZWdleF9kZWZhdWx0IiwgIm5vcm1hbGl6ZUR1cmF0aW9uIiwgImR1ciIsICJyZW5kZXJNaW5pbWFsRGF0ZSIsICJ0aW1lIiwgImRhdGVGb3JtYXQiLCAiZGF0ZVRpbWVGb3JtYXQiLCAibG9jYWxlIiwgInJlbmRlck1pbmltYWxEdXJhdGlvbiIsICJkdXIiLCAibm9ybWFsaXplRHVyYXRpb24iLCAicmVzdWx0IiwgImdldEZpbGVUaXRsZSIsICJwYXRoIiwgImdldEV4dGVuc2lvbiIsICJIRUFERVJfQ0FOT05JQ0FMSVpFUiIsICJlbW9qaV9yZWdleF9kZWZhdWx0IiwgIl8iLCAicmVzdWx0IiwgIm5vcm1hbGl6ZUhlYWRlckZvckxpbmsiLCAiaGVhZGVyIiwgIkxpbmsiLCAiX0xpbmsiLCAicGF0aCIsICJlbWJlZCIsICJkaXNwbGF5IiwgImxpbmtwYXRoIiwgInNwbGl0IiwgImhlYWRlciIsICJub3JtYWxpemVIZWFkZXJGb3JMaW5rIiwgImJsb2NrSWQiLCAib2JqZWN0IiwgInJhd2xpbmsiLCAibGluayIsICJzcGxpdE9uVW5lc2NhcGVkUGlwZSIsICJmaWVsZHMiLCAiYmxvY2siLCAib3RoZXIiLCAicmVzdWx0IiwgImdldEZpbGVUaXRsZSIsICJfYSIsICJfYiIsICJlc2NhcGVkIiwgInBpcGUiLCAiQUxJQVMiLCAiRE9DIiwgIk1BUCIsICJQQUlSIiwgIlNDQUxBUiIsICJTRVEiLCAiTk9ERV9UWVBFIiwgImlzQWxpYXMiLCAibm9kZSIsICJpc0RvY3VtZW50IiwgImlzTWFwIiwgImlzUGFpciIsICJpc1NjYWxhciIsICJpc1NlcSIsICJpc0NvbGxlY3Rpb24iLCAiaXNOb2RlIiwgImhhc0FuY2hvciIsICJCUkVBSyIsICJTS0lQIiwgIlJFTU9WRSIsICJ2aXNpdCIsICJub2RlIiwgInZpc2l0b3IiLCAidmlzaXRvcl8iLCAiaW5pdFZpc2l0b3IiLCAiaXNEb2N1bWVudCIsICJ2aXNpdF8iLCAia2V5IiwgInBhdGgiLCAiY3RybCIsICJjYWxsVmlzaXRvciIsICJpc05vZGUiLCAiaXNQYWlyIiwgInJlcGxhY2VOb2RlIiwgImlzQ29sbGVjdGlvbiIsICJjaSIsICJjayIsICJjdiIsICJ2aXNpdEFzeW5jIiwgInZpc2l0QXN5bmNfIiwgIl9hIiwgIl9iIiwgIl9jIiwgIl9kIiwgIl9lIiwgImlzTWFwIiwgImlzU2VxIiwgImlzU2NhbGFyIiwgImlzQWxpYXMiLCAicGFyZW50IiwgInB0IiwgImVzY2FwZUNoYXJzIiwgImVzY2FwZVRhZ05hbWUiLCAidG4iLCAiY2giLCAiRGlyZWN0aXZlcyIsICJfRGlyZWN0aXZlcyIsICJ5YW1sIiwgInRhZ3MiLCAiY29weSIsICJyZXMiLCAibGluZSIsICJvbkVycm9yIiwgInBhcnRzIiwgIm5hbWUiLCAiaGFuZGxlIiwgInByZWZpeCIsICJ2ZXJzaW9uIiwgImlzVmFsaWQiLCAic291cmNlIiwgInZlcmJhdGltIiwgInN1ZmZpeCIsICJlcnJvciIsICJ0YWciLCAiZG9jIiwgImxpbmVzIiwgInRhZ0VudHJpZXMiLCAidGFnTmFtZXMiLCAiaXNOb2RlIiwgInZpc2l0IiwgIl9rZXkiLCAibm9kZSIsICJhbmNob3JJc1ZhbGlkIiwgImFuY2hvciIsICJtc2ciLCAiYW5jaG9yTmFtZXMiLCAicm9vdCIsICJhbmNob3JzIiwgInZpc2l0IiwgIl9rZXkiLCAibm9kZSIsICJmaW5kTmV3QW5jaG9yIiwgInByZWZpeCIsICJleGNsdWRlIiwgImkiLCAibmFtZSIsICJjcmVhdGVOb2RlQW5jaG9ycyIsICJkb2MiLCAiYWxpYXNPYmplY3RzIiwgInNvdXJjZU9iamVjdHMiLCAicHJldkFuY2hvcnMiLCAic291cmNlIiwgInJlZiIsICJpc1NjYWxhciIsICJpc0NvbGxlY3Rpb24iLCAiZXJyb3IiLCAiYXBwbHlSZXZpdmVyIiwgInJldml2ZXIiLCAib2JqIiwgImtleSIsICJ2YWwiLCAiaSIsICJsZW4iLCAidjAiLCAidjEiLCAiayIsICJ0b0pTIiwgInZhbHVlIiwgImFyZyIsICJjdHgiLCAidiIsICJpIiwgImhhc0FuY2hvciIsICJkYXRhIiwgInJlcyIsICJOb2RlQmFzZSIsICJ0eXBlIiwgIk5PREVfVFlQRSIsICJjb3B5IiwgImRvYyIsICJtYXBBc01hcCIsICJtYXhBbGlhc0NvdW50IiwgIm9uQW5jaG9yIiwgInJldml2ZXIiLCAiaXNEb2N1bWVudCIsICJjdHgiLCAicmVzIiwgInRvSlMiLCAiY291bnQiLCAiYXBwbHlSZXZpdmVyIiwgIkFsaWFzIiwgIk5vZGVCYXNlIiwgInNvdXJjZSIsICJBTElBUyIsICJkb2MiLCAiZm91bmQiLCAidmlzaXQiLCAiX2tleSIsICJub2RlIiwgIl9hcmciLCAiY3R4IiwgImFuY2hvcnMiLCAibWF4QWxpYXNDb3VudCIsICJtc2ciLCAiZGF0YSIsICJ0b0pTIiwgImdldEFsaWFzQ291bnQiLCAiX29uQ29tbWVudCIsICJfb25DaG9tcEtlZXAiLCAic3JjIiwgImFuY2hvcklzVmFsaWQiLCAiaXNBbGlhcyIsICJhbmNob3IiLCAiaXNDb2xsZWN0aW9uIiwgImNvdW50IiwgIml0ZW0iLCAiYyIsICJpc1BhaXIiLCAia2MiLCAidmMiLCAiaXNTY2FsYXJWYWx1ZSIsICJ2YWx1ZSIsICJTY2FsYXIiLCAiTm9kZUJhc2UiLCAiU0NBTEFSIiwgImFyZyIsICJjdHgiLCAidG9KUyIsICJkZWZhdWx0VGFnUHJlZml4IiwgImZpbmRUYWdPYmplY3QiLCAidmFsdWUiLCAidGFnTmFtZSIsICJ0YWdzIiwgIl9hIiwgIm1hdGNoIiwgInQiLCAidGFnT2JqIiwgImNyZWF0ZU5vZGUiLCAiY3R4IiwgIl9iIiwgIl9jIiwgImlzRG9jdW1lbnQiLCAiaXNOb2RlIiwgImlzUGFpciIsICJtYXAiLCAiTUFQIiwgImFsaWFzRHVwbGljYXRlT2JqZWN0cyIsICJvbkFuY2hvciIsICJvblRhZ09iaiIsICJzY2hlbWEiLCAic291cmNlT2JqZWN0cyIsICJyZWYiLCAiQWxpYXMiLCAibm9kZSIsICJTY2FsYXIiLCAiU0VRIiwgImNvbGxlY3Rpb25Gcm9tUGF0aCIsICJzY2hlbWEiLCAicGF0aCIsICJ2YWx1ZSIsICJ2IiwgImkiLCAiayIsICJhIiwgImNyZWF0ZU5vZGUiLCAiaXNFbXB0eVBhdGgiLCAiQ29sbGVjdGlvbiIsICJOb2RlQmFzZSIsICJ0eXBlIiwgImNvcHkiLCAiaXQiLCAiaXNOb2RlIiwgImlzUGFpciIsICJrZXkiLCAicmVzdCIsICJub2RlIiwgImlzQ29sbGVjdGlvbiIsICJrZWVwU2NhbGFyIiwgImlzU2NhbGFyIiwgImFsbG93U2NhbGFyIiwgIm4iLCAic3RyaW5naWZ5Q29tbWVudCIsICJzdHIiLCAiaW5kZW50Q29tbWVudCIsICJjb21tZW50IiwgImluZGVudCIsICJsaW5lQ29tbWVudCIsICJGT0xEX0ZMT1ciLCAiRk9MRF9CTE9DSyIsICJGT0xEX1FVT1RFRCIsICJmb2xkRmxvd0xpbmVzIiwgInRleHQiLCAiaW5kZW50IiwgIm1vZGUiLCAiaW5kZW50QXRTdGFydCIsICJsaW5lV2lkdGgiLCAibWluQ29udGVudFdpZHRoIiwgIm9uRm9sZCIsICJvbk92ZXJmbG93IiwgImVuZFN0ZXAiLCAiZm9sZHMiLCAiZXNjYXBlZEZvbGRzIiwgImVuZCIsICJzcGxpdCIsICJwcmV2IiwgIm92ZXJmbG93IiwgImkiLCAiZXNjU3RhcnQiLCAiZXNjRW5kIiwgImNvbnN1bWVNb3JlSW5kZW50ZWRMaW5lcyIsICJjaCIsICJuZXh0IiwgImoiLCAicmVzIiwgImZvbGQiLCAic3RhcnQiLCAiZ2V0Rm9sZE9wdGlvbnMiLCAiY3R4IiwgImlzQmxvY2siLCAiY29udGFpbnNEb2N1bWVudE1hcmtlciIsICJzdHIiLCAibGluZUxlbmd0aE92ZXJMaW1pdCIsICJsaW5lV2lkdGgiLCAiaW5kZW50TGVuZ3RoIiwgImxpbWl0IiwgInN0ckxlbiIsICJzdGFydCIsICJkb3VibGVRdW90ZWRTdHJpbmciLCAidmFsdWUiLCAianNvbiIsICJpbXBsaWNpdEtleSIsICJtaW5NdWx0aUxpbmVMZW5ndGgiLCAiaW5kZW50IiwgImkiLCAiY2giLCAiY29kZSIsICJmb2xkRmxvd0xpbmVzIiwgIkZPTERfUVVPVEVEIiwgInNpbmdsZVF1b3RlZFN0cmluZyIsICJyZXMiLCAiRk9MRF9GTE9XIiwgInF1b3RlZFN0cmluZyIsICJzaW5nbGVRdW90ZSIsICJxcyIsICJoYXNEb3VibGUiLCAiaGFzU2luZ2xlIiwgImJsb2NrRW5kTmV3bGluZXMiLCAiZSIsICJibG9ja1N0cmluZyIsICJjb21tZW50IiwgInR5cGUiLCAib25Db21tZW50IiwgIm9uQ2hvbXBLZWVwIiwgImJsb2NrUXVvdGUiLCAiY29tbWVudFN0cmluZyIsICJsaXRlcmFsIiwgIlNjYWxhciIsICJjaG9tcCIsICJlbmRTdGFydCIsICJlbmQiLCAiZW5kTmxQb3MiLCAic3RhcnRXaXRoU3BhY2UiLCAic3RhcnRFbmQiLCAic3RhcnRObFBvcyIsICJoZWFkZXIiLCAiYm9keSIsICJGT0xEX0JMT0NLIiwgInBsYWluU3RyaW5nIiwgIml0ZW0iLCAiYWN0dWFsU3RyaW5nIiwgImluZGVudFN0ZXAiLCAiaW5GbG93IiwgInRlc3QiLCAidGFnIiwgIl9hIiwgImNvbXBhdCIsICJ0YWdzIiwgInN0cmluZ2lmeVN0cmluZyIsICJzcyIsICJfc3RyaW5naWZ5IiwgIl90eXBlIiwgImRlZmF1bHRLZXlUeXBlIiwgImRlZmF1bHRTdHJpbmdUeXBlIiwgInQiLCAiY3JlYXRlU3RyaW5naWZ5Q29udGV4dCIsICJkb2MiLCAib3B0aW9ucyIsICJvcHQiLCAic3RyaW5naWZ5Q29tbWVudCIsICJpbkZsb3ciLCAiZ2V0VGFnT2JqZWN0IiwgInRhZ3MiLCAiaXRlbSIsICJfYSIsICJfYiIsICJfYyIsICJfZCIsICJtYXRjaCIsICJ0IiwgInRhZ09iaiIsICJvYmoiLCAiaXNTY2FsYXIiLCAidGVzdE1hdGNoIiwgIm5hbWUiLCAic3RyaW5naWZ5UHJvcHMiLCAibm9kZSIsICJhbmNob3JzIiwgInByb3BzIiwgImFuY2hvciIsICJpc0NvbGxlY3Rpb24iLCAiYW5jaG9ySXNWYWxpZCIsICJ0YWciLCAic3RyaW5naWZ5IiwgImN0eCIsICJvbkNvbW1lbnQiLCAib25DaG9tcEtlZXAiLCAiaXNQYWlyIiwgImlzQWxpYXMiLCAiaXNOb2RlIiwgIm8iLCAic3RyIiwgInN0cmluZ2lmeVN0cmluZyIsICJzdHJpbmdpZnlQYWlyIiwgImtleSIsICJ2YWx1ZSIsICJjdHgiLCAib25Db21tZW50IiwgIm9uQ2hvbXBLZWVwIiwgIl9hIiwgIl9iIiwgImFsbE51bGxWYWx1ZXMiLCAiZG9jIiwgImluZGVudCIsICJpbmRlbnRTdGVwIiwgImNvbW1lbnRTdHJpbmciLCAiaW5kZW50U2VxIiwgInNpbXBsZUtleXMiLCAia2V5Q29tbWVudCIsICJpc05vZGUiLCAiaXNDb2xsZWN0aW9uIiwgIm1zZyIsICJleHBsaWNpdEtleSIsICJpc1NjYWxhciIsICJTY2FsYXIiLCAia2V5Q29tbWVudERvbmUiLCAiY2hvbXBLZWVwIiwgInN0ciIsICJzdHJpbmdpZnkiLCAibGluZUNvbW1lbnQiLCAidnNiIiwgInZjYiIsICJ2YWx1ZUNvbW1lbnQiLCAiaXNTZXEiLCAidmFsdWVDb21tZW50RG9uZSIsICJ2YWx1ZVN0ciIsICJ3cyIsICJjcyIsICJpbmRlbnRDb21tZW50IiwgInZzMCIsICJubDAiLCAiaGFzTmV3bGluZSIsICJmbG93IiwgImhhc1Byb3BzTGluZSIsICJzcDAiLCAid2FybiIsICJsb2dMZXZlbCIsICJ3YXJuaW5nIiwgIk1FUkdFX0tFWSIsICJtZXJnZSIsICJ2YWx1ZSIsICJTY2FsYXIiLCAiYWRkTWVyZ2VUb0pTTWFwIiwgImlzTWVyZ2VLZXkiLCAiY3R4IiwgImtleSIsICJpc1NjYWxhciIsICJ0YWciLCAibWFwIiwgImlzQWxpYXMiLCAiaXNTZXEiLCAiaXQiLCAibWVyZ2VWYWx1ZSIsICJzb3VyY2UiLCAiaXNNYXAiLCAic3JjTWFwIiwgImFkZFBhaXJUb0pTTWFwIiwgImN0eCIsICJtYXAiLCAia2V5IiwgInZhbHVlIiwgImlzTm9kZSIsICJpc01lcmdlS2V5IiwgImFkZE1lcmdlVG9KU01hcCIsICJqc0tleSIsICJ0b0pTIiwgInN0cmluZ0tleSIsICJzdHJpbmdpZnlLZXkiLCAianNWYWx1ZSIsICJzdHJDdHgiLCAiY3JlYXRlU3RyaW5naWZ5Q29udGV4dCIsICJub2RlIiwgInN0cktleSIsICJqc29uU3RyIiwgIndhcm4iLCAiY3JlYXRlUGFpciIsICJrZXkiLCAidmFsdWUiLCAiY3R4IiwgImsiLCAiY3JlYXRlTm9kZSIsICJ2IiwgIlBhaXIiLCAiX1BhaXIiLCAiTk9ERV9UWVBFIiwgIlBBSVIiLCAic2NoZW1hIiwgImlzTm9kZSIsICJfIiwgInBhaXIiLCAiYWRkUGFpclRvSlNNYXAiLCAib25Db21tZW50IiwgIm9uQ2hvbXBLZWVwIiwgInN0cmluZ2lmeVBhaXIiLCAic3RyaW5naWZ5Q29sbGVjdGlvbiIsICJjb2xsZWN0aW9uIiwgImN0eCIsICJvcHRpb25zIiwgIl9hIiwgInN0cmluZ2lmeUZsb3dDb2xsZWN0aW9uIiwgInN0cmluZ2lmeUJsb2NrQ29sbGVjdGlvbiIsICJjb21tZW50IiwgIml0ZW1zIiwgImJsb2NrSXRlbVByZWZpeCIsICJmbG93Q2hhcnMiLCAiaXRlbUluZGVudCIsICJvbkNob21wS2VlcCIsICJvbkNvbW1lbnQiLCAiaW5kZW50IiwgImNvbW1lbnRTdHJpbmciLCAiaXRlbUN0eCIsICJjaG9tcEtlZXAiLCAibGluZXMiLCAiaSIsICJpdGVtIiwgImlzTm9kZSIsICJhZGRDb21tZW50QmVmb3JlIiwgImlzUGFpciIsICJpayIsICJzdHIiLCAic3RyaW5naWZ5IiwgImxpbmVDb21tZW50IiwgImxpbmUiLCAiaW5kZW50Q29tbWVudCIsICJpbmRlbnRTdGVwIiwgImZjUGFkZGluZyIsICJyZXFOZXdsaW5lIiwgImxpbmVzQXRWYWx1ZSIsICJpdiIsICJzdGFydCIsICJlbmQiLCAibGVuIiwgInN1bSIsICJpYyIsICJmaW5kUGFpciIsICJpdGVtcyIsICJrZXkiLCAiayIsICJpc1NjYWxhciIsICJpdCIsICJpc1BhaXIiLCAiWUFNTE1hcCIsICJDb2xsZWN0aW9uIiwgInNjaGVtYSIsICJNQVAiLCAib2JqIiwgImN0eCIsICJrZWVwVW5kZWZpbmVkIiwgInJlcGxhY2VyIiwgIm1hcCIsICJhZGQiLCAidmFsdWUiLCAiY3JlYXRlUGFpciIsICJwYWlyIiwgIm92ZXJ3cml0ZSIsICJfYSIsICJfcGFpciIsICJQYWlyIiwgInByZXYiLCAic29ydEVudHJpZXMiLCAiaXNTY2FsYXJWYWx1ZSIsICJpIiwgIml0ZW0iLCAia2VlcFNjYWxhciIsICJub2RlIiwgIl8iLCAiVHlwZSIsICJhZGRQYWlyVG9KU01hcCIsICJvbkNvbW1lbnQiLCAib25DaG9tcEtlZXAiLCAic3RyaW5naWZ5Q29sbGVjdGlvbiIsICJtYXAiLCAiWUFNTE1hcCIsICJvbkVycm9yIiwgImlzTWFwIiwgInNjaGVtYSIsICJvYmoiLCAiY3R4IiwgIllBTUxTZXEiLCAiQ29sbGVjdGlvbiIsICJzY2hlbWEiLCAiU0VRIiwgInZhbHVlIiwgImtleSIsICJpZHgiLCAiYXNJdGVtSW5kZXgiLCAia2VlcFNjYWxhciIsICJpdCIsICJpc1NjYWxhciIsICJwcmV2IiwgImlzU2NhbGFyVmFsdWUiLCAiXyIsICJjdHgiLCAic2VxIiwgImkiLCAiaXRlbSIsICJ0b0pTIiwgIm9uQ29tbWVudCIsICJvbkNob21wS2VlcCIsICJzdHJpbmdpZnlDb2xsZWN0aW9uIiwgIm9iaiIsICJyZXBsYWNlciIsICJjcmVhdGVOb2RlIiwgInNlcSIsICJZQU1MU2VxIiwgIm9uRXJyb3IiLCAiaXNTZXEiLCAic2NoZW1hIiwgIm9iaiIsICJjdHgiLCAic3RyaW5nIiwgInZhbHVlIiwgInN0ciIsICJpdGVtIiwgImN0eCIsICJvbkNvbW1lbnQiLCAib25DaG9tcEtlZXAiLCAic3RyaW5naWZ5U3RyaW5nIiwgIm51bGxUYWciLCAidmFsdWUiLCAiU2NhbGFyIiwgInNvdXJjZSIsICJjdHgiLCAiYm9vbFRhZyIsICJ2YWx1ZSIsICJzdHIiLCAiU2NhbGFyIiwgInNvdXJjZSIsICJjdHgiLCAic3YiLCAic3RyaW5naWZ5TnVtYmVyIiwgImZvcm1hdCIsICJtaW5GcmFjdGlvbkRpZ2l0cyIsICJ0YWciLCAidmFsdWUiLCAibnVtIiwgIm4iLCAiaSIsICJkIiwgImZsb2F0TmFOIiwgInZhbHVlIiwgInN0ciIsICJzdHJpbmdpZnlOdW1iZXIiLCAiZmxvYXRFeHAiLCAibm9kZSIsICJudW0iLCAiZmxvYXQiLCAiU2NhbGFyIiwgImRvdCIsICJpbnRJZGVudGlmeSIsICJ2YWx1ZSIsICJpbnRSZXNvbHZlIiwgInN0ciIsICJvZmZzZXQiLCAicmFkaXgiLCAiaW50QXNCaWdJbnQiLCAiaW50U3RyaW5naWZ5IiwgIm5vZGUiLCAicHJlZml4IiwgInN0cmluZ2lmeU51bWJlciIsICJpbnRPY3QiLCAiX29uRXJyb3IiLCAib3B0IiwgImludCIsICJpbnRIZXgiLCAic2NoZW1hIiwgIm1hcCIsICJzZXEiLCAic3RyaW5nIiwgIm51bGxUYWciLCAiYm9vbFRhZyIsICJpbnRPY3QiLCAiaW50IiwgImludEhleCIsICJmbG9hdE5hTiIsICJmbG9hdEV4cCIsICJmbG9hdCIsICJpbnRJZGVudGlmeSIsICJ2YWx1ZSIsICJzdHJpbmdpZnlKU09OIiwgImpzb25TY2FsYXJzIiwgInN0ciIsICJTY2FsYXIiLCAiX29uRXJyb3IiLCAiaW50QXNCaWdJbnQiLCAianNvbkVycm9yIiwgIm9uRXJyb3IiLCAic2NoZW1hIiwgIm1hcCIsICJzZXEiLCAiYmluYXJ5IiwgInZhbHVlIiwgInNyYyIsICJvbkVycm9yIiwgInN0ciIsICJidWZmZXIiLCAiaSIsICJjb21tZW50IiwgInR5cGUiLCAiY3R4IiwgIm9uQ29tbWVudCIsICJvbkNob21wS2VlcCIsICJidWYiLCAicyIsICJTY2FsYXIiLCAibGluZVdpZHRoIiwgIm4iLCAibGluZXMiLCAibyIsICJzdHJpbmdpZnlTdHJpbmciLCAicmVzb2x2ZVBhaXJzIiwgInNlcSIsICJvbkVycm9yIiwgIl9hIiwgImlzU2VxIiwgImkiLCAiaXRlbSIsICJpc1BhaXIiLCAiaXNNYXAiLCAicGFpciIsICJQYWlyIiwgIlNjYWxhciIsICJjbiIsICJjcmVhdGVQYWlycyIsICJzY2hlbWEiLCAiaXRlcmFibGUiLCAiY3R4IiwgInJlcGxhY2VyIiwgInBhaXJzIiwgIllBTUxTZXEiLCAiaXQiLCAia2V5IiwgInZhbHVlIiwgImtleXMiLCAiY3JlYXRlUGFpciIsICJZQU1MT01hcCIsICJfWUFNTE9NYXAiLCAiWUFNTFNlcSIsICJZQU1MTWFwIiwgIl8iLCAiY3R4IiwgIm1hcCIsICJwYWlyIiwgImtleSIsICJ2YWx1ZSIsICJpc1BhaXIiLCAidG9KUyIsICJzY2hlbWEiLCAiaXRlcmFibGUiLCAicGFpcnMiLCAiY3JlYXRlUGFpcnMiLCAib21hcCIsICJzZXEiLCAib25FcnJvciIsICJyZXNvbHZlUGFpcnMiLCAic2VlbktleXMiLCAiaXNTY2FsYXIiLCAiYm9vbFN0cmluZ2lmeSIsICJ2YWx1ZSIsICJzb3VyY2UiLCAiY3R4IiwgInRydWVUYWciLCAiZmFsc2VUYWciLCAiU2NhbGFyIiwgImZsb2F0TmFOIiwgInZhbHVlIiwgInN0ciIsICJzdHJpbmdpZnlOdW1iZXIiLCAiZmxvYXRFeHAiLCAibm9kZSIsICJudW0iLCAiZmxvYXQiLCAiU2NhbGFyIiwgImRvdCIsICJmIiwgImludElkZW50aWZ5IiwgInZhbHVlIiwgImludFJlc29sdmUiLCAic3RyIiwgIm9mZnNldCIsICJyYWRpeCIsICJpbnRBc0JpZ0ludCIsICJzaWduIiwgIm4iLCAiaW50U3RyaW5naWZ5IiwgIm5vZGUiLCAicHJlZml4IiwgInN0cmluZ2lmeU51bWJlciIsICJpbnRCaW4iLCAiX29uRXJyb3IiLCAib3B0IiwgImludE9jdCIsICJpbnQiLCAiaW50SGV4IiwgIllBTUxTZXQiLCAiX1lBTUxTZXQiLCAiWUFNTE1hcCIsICJzY2hlbWEiLCAia2V5IiwgInBhaXIiLCAiaXNQYWlyIiwgIlBhaXIiLCAiZmluZFBhaXIiLCAia2VlcFBhaXIiLCAiaXNTY2FsYXIiLCAidmFsdWUiLCAicHJldiIsICJfIiwgImN0eCIsICJvbkNvbW1lbnQiLCAib25DaG9tcEtlZXAiLCAiaXRlcmFibGUiLCAicmVwbGFjZXIiLCAic2V0IiwgImNyZWF0ZVBhaXIiLCAibWFwIiwgIm9uRXJyb3IiLCAiaXNNYXAiLCAicGFyc2VTZXhhZ2VzaW1hbCIsICJzdHIiLCAiYXNCaWdJbnQiLCAic2lnbiIsICJwYXJ0cyIsICJudW0iLCAibiIsICJyZXMiLCAicCIsICJzdHJpbmdpZnlTZXhhZ2VzaW1hbCIsICJub2RlIiwgInZhbHVlIiwgInN0cmluZ2lmeU51bWJlciIsICJfNjAiLCAiaW50VGltZSIsICJfb25FcnJvciIsICJpbnRBc0JpZ0ludCIsICJmbG9hdFRpbWUiLCAidGltZXN0YW1wIiwgIm1hdGNoIiwgInllYXIiLCAibW9udGgiLCAiZGF5IiwgImhvdXIiLCAibWludXRlIiwgInNlY29uZCIsICJtaWxsaXNlYyIsICJkYXRlIiwgInR6IiwgInNjaGVtYSIsICJtYXAiLCAic2VxIiwgInN0cmluZyIsICJudWxsVGFnIiwgInRydWVUYWciLCAiZmFsc2VUYWciLCAiaW50QmluIiwgImludE9jdCIsICJpbnQiLCAiaW50SGV4IiwgImZsb2F0TmFOIiwgImZsb2F0RXhwIiwgImZsb2F0IiwgImJpbmFyeSIsICJtZXJnZSIsICJvbWFwIiwgInBhaXJzIiwgInNldCIsICJpbnRUaW1lIiwgImZsb2F0VGltZSIsICJ0aW1lc3RhbXAiLCAic2NoZW1hcyIsICJzY2hlbWEiLCAibWFwIiwgInNlcSIsICJzdHJpbmciLCAidGFnc0J5TmFtZSIsICJiaW5hcnkiLCAiYm9vbFRhZyIsICJmbG9hdCIsICJmbG9hdEV4cCIsICJmbG9hdE5hTiIsICJmbG9hdFRpbWUiLCAiaW50IiwgImludEhleCIsICJpbnRPY3QiLCAiaW50VGltZSIsICJtZXJnZSIsICJudWxsVGFnIiwgIm9tYXAiLCAicGFpcnMiLCAic2V0IiwgInRpbWVzdGFtcCIsICJjb3JlS25vd25UYWdzIiwgImdldFRhZ3MiLCAiY3VzdG9tVGFncyIsICJzY2hlbWFOYW1lIiwgImFkZE1lcmdlVGFnIiwgInNjaGVtYVRhZ3MiLCAidGFncyIsICJrZXlzIiwgImtleSIsICJ0YWciLCAidGFnT2JqIiwgInRhZ05hbWUiLCAic29ydE1hcEVudHJpZXNCeUtleSIsICJhIiwgImIiLCAiU2NoZW1hIiwgIl9TY2hlbWEiLCAiY29tcGF0IiwgImN1c3RvbVRhZ3MiLCAibWVyZ2UiLCAicmVzb2x2ZUtub3duVGFncyIsICJzY2hlbWEiLCAic29ydE1hcEVudHJpZXMiLCAidG9TdHJpbmdEZWZhdWx0cyIsICJnZXRUYWdzIiwgImNvcmVLbm93blRhZ3MiLCAiTUFQIiwgIm1hcCIsICJTQ0FMQVIiLCAic3RyaW5nIiwgIlNFUSIsICJzZXEiLCAiY29weSIsICJzdHJpbmdpZnlEb2N1bWVudCIsICJkb2MiLCAib3B0aW9ucyIsICJfYSIsICJsaW5lcyIsICJoYXNEaXJlY3RpdmVzIiwgImRpciIsICJjdHgiLCAiY3JlYXRlU3RyaW5naWZ5Q29udGV4dCIsICJjb21tZW50U3RyaW5nIiwgImNzIiwgImluZGVudENvbW1lbnQiLCAiY2hvbXBLZWVwIiwgImNvbnRlbnRDb21tZW50IiwgImlzTm9kZSIsICJvbkNob21wS2VlcCIsICJib2R5IiwgInN0cmluZ2lmeSIsICJsaW5lQ29tbWVudCIsICJkYyIsICJEb2N1bWVudCIsICJfRG9jdW1lbnQiLCAidmFsdWUiLCAicmVwbGFjZXIiLCAib3B0aW9ucyIsICJOT0RFX1RZUEUiLCAiRE9DIiwgIl9yZXBsYWNlciIsICJvcHQiLCAidmVyc2lvbiIsICJEaXJlY3RpdmVzIiwgImNvcHkiLCAiaXNOb2RlIiwgImFzc2VydENvbGxlY3Rpb24iLCAicGF0aCIsICJub2RlIiwgIm5hbWUiLCAicHJldiIsICJhbmNob3JOYW1lcyIsICJmaW5kTmV3QW5jaG9yIiwgIkFsaWFzIiwgImtleVRvU3RyIiwgInYiLCAiYXNTdHIiLCAiYWxpYXNEdXBsaWNhdGVPYmplY3RzIiwgImFuY2hvclByZWZpeCIsICJmbG93IiwgImtlZXBVbmRlZmluZWQiLCAib25UYWdPYmoiLCAidGFnIiwgIm9uQW5jaG9yIiwgInNldEFuY2hvcnMiLCAic291cmNlT2JqZWN0cyIsICJjcmVhdGVOb2RlQW5jaG9ycyIsICJjdHgiLCAiY3JlYXRlTm9kZSIsICJpc0NvbGxlY3Rpb24iLCAia2V5IiwgImsiLCAiUGFpciIsICJpc0VtcHR5UGF0aCIsICJrZWVwU2NhbGFyIiwgImlzU2NhbGFyIiwgImNvbGxlY3Rpb25Gcm9tUGF0aCIsICJzdiIsICJTY2hlbWEiLCAianNvbiIsICJqc29uQXJnIiwgIm1hcEFzTWFwIiwgIm1heEFsaWFzQ291bnQiLCAicmV2aXZlciIsICJyZXMiLCAidG9KUyIsICJjb3VudCIsICJhcHBseVJldml2ZXIiLCAicyIsICJzdHJpbmdpZnlEb2N1bWVudCIsICJjb250ZW50cyIsICJZQU1MRXJyb3IiLCAibmFtZSIsICJwb3MiLCAiY29kZSIsICJtZXNzYWdlIiwgIllBTUxQYXJzZUVycm9yIiwgIllBTUxXYXJuaW5nIiwgInByZXR0aWZ5RXJyb3IiLCAic3JjIiwgImxjIiwgImVycm9yIiwgImxpbmUiLCAiY29sIiwgImNpIiwgImxpbmVTdHIiLCAidHJpbVN0YXJ0IiwgInByZXYiLCAiY291bnQiLCAiZW5kIiwgInBvaW50ZXIiLCAicmVzb2x2ZVByb3BzIiwgInRva2VucyIsICJmbG93IiwgImluZGljYXRvciIsICJuZXh0IiwgIm9mZnNldCIsICJvbkVycm9yIiwgInBhcmVudEluZGVudCIsICJzdGFydE9uTmV3bGluZSIsICJzcGFjZUJlZm9yZSIsICJhdE5ld2xpbmUiLCAiaGFzU3BhY2UiLCAiY29tbWVudCIsICJjb21tZW50U2VwIiwgImhhc05ld2xpbmUiLCAicmVxU3BhY2UiLCAidGFiIiwgImFuY2hvciIsICJ0YWciLCAibmV3bGluZUFmdGVyUHJvcCIsICJjb21tYSIsICJmb3VuZCIsICJzdGFydCIsICJ0b2tlbiIsICJjYiIsICJsYXN0IiwgImVuZCIsICJjb250YWluc05ld2xpbmUiLCAia2V5IiwgInN0IiwgIml0IiwgImZsb3dJbmRlbnRDaGVjayIsICJpbmRlbnQiLCAiZmMiLCAib25FcnJvciIsICJlbmQiLCAiY29udGFpbnNOZXdsaW5lIiwgIm1hcEluY2x1ZGVzIiwgImN0eCIsICJpdGVtcyIsICJzZWFyY2giLCAidW5pcXVlS2V5cyIsICJpc0VxdWFsIiwgImEiLCAiYiIsICJpc1NjYWxhciIsICJwYWlyIiwgInN0YXJ0Q29sTXNnIiwgInJlc29sdmVCbG9ja01hcCIsICJjb21wb3NlTm9kZSIsICJjb21wb3NlRW1wdHlOb2RlIiwgImN0eCIsICJibSIsICJvbkVycm9yIiwgInRhZyIsICJfYSIsICJfYiIsICJOb2RlQ2xhc3MiLCAiWUFNTE1hcCIsICJtYXAiLCAib2Zmc2V0IiwgImNvbW1lbnRFbmQiLCAiY29sbEl0ZW0iLCAic3RhcnQiLCAia2V5IiwgInNlcCIsICJ2YWx1ZSIsICJrZXlQcm9wcyIsICJyZXNvbHZlUHJvcHMiLCAiaW1wbGljaXRLZXkiLCAiY29udGFpbnNOZXdsaW5lIiwgImtleVN0YXJ0IiwgImtleU5vZGUiLCAiZmxvd0luZGVudENoZWNrIiwgIm1hcEluY2x1ZGVzIiwgInZhbHVlUHJvcHMiLCAidmFsdWVOb2RlIiwgInBhaXIiLCAiUGFpciIsICJyZXNvbHZlQmxvY2tTZXEiLCAiY29tcG9zZU5vZGUiLCAiY29tcG9zZUVtcHR5Tm9kZSIsICJjdHgiLCAiYnMiLCAib25FcnJvciIsICJ0YWciLCAiX2EiLCAiTm9kZUNsYXNzIiwgIllBTUxTZXEiLCAic2VxIiwgIm9mZnNldCIsICJjb21tZW50RW5kIiwgInN0YXJ0IiwgInZhbHVlIiwgInByb3BzIiwgInJlc29sdmVQcm9wcyIsICJub2RlIiwgImZsb3dJbmRlbnRDaGVjayIsICJyZXNvbHZlRW5kIiwgImVuZCIsICJvZmZzZXQiLCAicmVxU3BhY2UiLCAib25FcnJvciIsICJjb21tZW50IiwgImhhc1NwYWNlIiwgInNlcCIsICJ0b2tlbiIsICJzb3VyY2UiLCAidHlwZSIsICJjYiIsICJibG9ja01zZyIsICJpc0Jsb2NrIiwgInRva2VuIiwgInJlc29sdmVGbG93Q29sbGVjdGlvbiIsICJjb21wb3NlTm9kZSIsICJjb21wb3NlRW1wdHlOb2RlIiwgImN0eCIsICJmYyIsICJvbkVycm9yIiwgInRhZyIsICJfYSIsICJfYiIsICJpc01hcCIsICJmY05hbWUiLCAiTm9kZUNsYXNzIiwgIllBTUxNYXAiLCAiWUFNTFNlcSIsICJjb2xsIiwgImF0Um9vdCIsICJvZmZzZXQiLCAiaSIsICJjb2xsSXRlbSIsICJzdGFydCIsICJrZXkiLCAic2VwIiwgInZhbHVlIiwgInByb3BzIiwgInJlc29sdmVQcm9wcyIsICJjb250YWluc05ld2xpbmUiLCAicHJldkl0ZW1Db21tZW50IiwgImxvb3AiLCAic3QiLCAicHJldiIsICJpc1BhaXIiLCAidmFsdWVOb2RlIiwgImtleVN0YXJ0IiwgImtleU5vZGUiLCAidmFsdWVQcm9wcyIsICJwYWlyIiwgIlBhaXIiLCAibWFwIiwgIm1hcEluY2x1ZGVzIiwgImVuZFJhbmdlIiwgImV4cGVjdGVkRW5kIiwgImNlIiwgImVlIiwgImNlUG9zIiwgIm5hbWUiLCAibXNnIiwgImVuZCIsICJyZXNvbHZlRW5kIiwgInJlc29sdmVDb2xsZWN0aW9uIiwgIkNOIiwgImN0eCIsICJ0b2tlbiIsICJvbkVycm9yIiwgInRhZ05hbWUiLCAidGFnIiwgImNvbGwiLCAicmVzb2x2ZUJsb2NrTWFwIiwgInJlc29sdmVCbG9ja1NlcSIsICJyZXNvbHZlRmxvd0NvbGxlY3Rpb24iLCAiQ29sbCIsICJjb21wb3NlQ29sbGVjdGlvbiIsICJwcm9wcyIsICJfYSIsICJfYiIsICJ0YWdUb2tlbiIsICJtc2ciLCAiYW5jaG9yIiwgIm5sIiwgImxhc3RQcm9wIiwgImV4cFR5cGUiLCAiWUFNTE1hcCIsICJZQU1MU2VxIiwgInQiLCAia3QiLCAicmVzIiwgIm5vZGUiLCAiaXNOb2RlIiwgIlNjYWxhciIsICJyZXNvbHZlQmxvY2tTY2FsYXIiLCAiY3R4IiwgInNjYWxhciIsICJvbkVycm9yIiwgInN0YXJ0IiwgImhlYWRlciIsICJwYXJzZUJsb2NrU2NhbGFySGVhZGVyIiwgInR5cGUiLCAiU2NhbGFyIiwgImxpbmVzIiwgInNwbGl0TGluZXMiLCAiY2hvbXBTdGFydCIsICJpIiwgImNvbnRlbnQiLCAidmFsdWUiLCAiZW5kIiwgInRyaW1JbmRlbnQiLCAib2Zmc2V0IiwgImNvbnRlbnRTdGFydCIsICJpbmRlbnQiLCAic2VwIiwgInByZXZNb3JlSW5kZW50ZWQiLCAiY3JsZiIsICJtZXNzYWdlIiwgInByb3BzIiwgInN0cmljdCIsICJzb3VyY2UiLCAibW9kZSIsICJjaG9tcCIsICJlcnJvciIsICJjaCIsICJuIiwgImhhc1NwYWNlIiwgImNvbW1lbnQiLCAibGVuZ3RoIiwgInRva2VuIiwgInRzIiwgInNwbGl0IiwgImZpcnN0IiwgIm0iLCAicmVzb2x2ZUZsb3dTY2FsYXIiLCAic2NhbGFyIiwgInN0cmljdCIsICJvbkVycm9yIiwgIm9mZnNldCIsICJ0eXBlIiwgInNvdXJjZSIsICJlbmQiLCAiX3R5cGUiLCAidmFsdWUiLCAiX29uRXJyb3IiLCAicmVsIiwgImNvZGUiLCAibXNnIiwgIlNjYWxhciIsICJwbGFpblZhbHVlIiwgInNpbmdsZVF1b3RlZFZhbHVlIiwgImRvdWJsZVF1b3RlZFZhbHVlIiwgInZhbHVlRW5kIiwgInJlIiwgInJlc29sdmVFbmQiLCAiYmFkQ2hhciIsICJmb2xkTGluZXMiLCAiX2EiLCAiZmlyc3QiLCAibGluZSIsICJlIiwgIm1hdGNoIiwgInJlcyIsICJzZXAiLCAicG9zIiwgImxhc3QiLCAiaSIsICJjaCIsICJmb2xkIiwgImZvbGROZXdsaW5lIiwgIm5leHQiLCAiY2MiLCAiZXNjYXBlQ29kZXMiLCAibGVuZ3RoIiwgInBhcnNlQ2hhckNvZGUiLCAicmF3IiwgIndzU3RhcnQiLCAiY29tcG9zZVNjYWxhciIsICJjdHgiLCAidG9rZW4iLCAidGFnVG9rZW4iLCAib25FcnJvciIsICJ2YWx1ZSIsICJ0eXBlIiwgImNvbW1lbnQiLCAicmFuZ2UiLCAicmVzb2x2ZUJsb2NrU2NhbGFyIiwgInJlc29sdmVGbG93U2NhbGFyIiwgInRhZ05hbWUiLCAibXNnIiwgInRhZyIsICJTQ0FMQVIiLCAiZmluZFNjYWxhclRhZ0J5TmFtZSIsICJmaW5kU2NhbGFyVGFnQnlUZXN0IiwgInNjYWxhciIsICJyZXMiLCAiaXNTY2FsYXIiLCAiU2NhbGFyIiwgImVycm9yIiwgInNjaGVtYSIsICJfYSIsICJtYXRjaFdpdGhUZXN0IiwgImt0IiwgImF0S2V5IiwgImRpcmVjdGl2ZXMiLCAiY29tcGF0IiwgInRzIiwgImNzIiwgImVtcHR5U2NhbGFyUG9zaXRpb24iLCAib2Zmc2V0IiwgImJlZm9yZSIsICJwb3MiLCAiaSIsICJzdCIsICJDTiIsICJjb21wb3NlTm9kZSIsICJjb21wb3NlRW1wdHlOb2RlIiwgImN0eCIsICJ0b2tlbiIsICJwcm9wcyIsICJvbkVycm9yIiwgImF0S2V5IiwgInNwYWNlQmVmb3JlIiwgImNvbW1lbnQiLCAiYW5jaG9yIiwgInRhZyIsICJub2RlIiwgImlzU3JjVG9rZW4iLCAiY29tcG9zZUFsaWFzIiwgImNvbXBvc2VTY2FsYXIiLCAiY29tcG9zZUNvbGxlY3Rpb24iLCAibWVzc2FnZSIsICJpc1NjYWxhciIsICJvZmZzZXQiLCAiYmVmb3JlIiwgInBvcyIsICJlbmQiLCAiZW1wdHlTY2FsYXJQb3NpdGlvbiIsICJvcHRpb25zIiwgInNvdXJjZSIsICJhbGlhcyIsICJBbGlhcyIsICJ2YWx1ZUVuZCIsICJyZSIsICJyZXNvbHZlRW5kIiwgImNvbXBvc2VEb2MiLCAib3B0aW9ucyIsICJkaXJlY3RpdmVzIiwgIm9mZnNldCIsICJzdGFydCIsICJ2YWx1ZSIsICJlbmQiLCAib25FcnJvciIsICJvcHRzIiwgImRvYyIsICJEb2N1bWVudCIsICJjdHgiLCAicHJvcHMiLCAicmVzb2x2ZVByb3BzIiwgImNvbXBvc2VOb2RlIiwgImNvbXBvc2VFbXB0eU5vZGUiLCAiY29udGVudEVuZCIsICJyZSIsICJyZXNvbHZlRW5kIiwgImdldEVycm9yUG9zIiwgInNyYyIsICJvZmZzZXQiLCAic291cmNlIiwgInBhcnNlUHJlbHVkZSIsICJwcmVsdWRlIiwgIl9hIiwgImNvbW1lbnQiLCAiYXRDb21tZW50IiwgImFmdGVyRW1wdHlMaW5lIiwgIkNvbXBvc2VyIiwgIm9wdGlvbnMiLCAiY29kZSIsICJtZXNzYWdlIiwgIndhcm5pbmciLCAicG9zIiwgIllBTUxXYXJuaW5nIiwgIllBTUxQYXJzZUVycm9yIiwgIkRpcmVjdGl2ZXMiLCAiZG9jIiwgImFmdGVyRG9jIiwgImRjIiwgImlzQ29sbGVjdGlvbiIsICJpdCIsICJpc1BhaXIiLCAiY2IiLCAidG9rZW5zIiwgImZvcmNlRG9jIiwgImVuZE9mZnNldCIsICJ0b2tlbiIsICJfX3lpZWxkU3RhciIsICJjb21wb3NlRG9jIiwgIm1zZyIsICJlcnJvciIsICJlbmQiLCAicmVzb2x2ZUVuZCIsICJvcHRzIiwgIkRvY3VtZW50IiwgIkJSRUFLIiwgIlNLSVAiLCAiUkVNT1ZFIiwgInZpc2l0IiwgImNzdCIsICJ2aXNpdG9yIiwgIl92aXNpdCIsICJwYXRoIiwgIml0ZW0iLCAiZmllbGQiLCAiaW5kZXgiLCAidG9rIiwgInBhcmVudCIsICJjb2xsIiwgImN0cmwiLCAidG9rZW4iLCAiaSIsICJjaSIsICJCT00iLCAiRE9DVU1FTlQiLCAiRkxPV19FTkQiLCAiU0NBTEFSIiwgInRva2VuVHlwZSIsICJzb3VyY2UiLCAiQk9NIiwgIkRPQ1VNRU5UIiwgIkZMT1dfRU5EIiwgIlNDQUxBUiIsICJpc0VtcHR5IiwgImNoIiwgImhleERpZ2l0cyIsICJ0YWdDaGFycyIsICJmbG93SW5kaWNhdG9yQ2hhcnMiLCAiaW52YWxpZEFuY2hvckNoYXJzIiwgImlzTm90QW5jaG9yQ2hhciIsICJMZXhlciIsICJzb3VyY2UiLCAiaW5jb21wbGV0ZSIsICJfYSIsICJuZXh0IiwgIl9feWllbGRTdGFyIiwgImkiLCAibiIsICJvZmZzZXQiLCAiaW5kZW50IiwgImR0IiwgImVuZCIsICJzdGF0ZSIsICJsaW5lIiwgIkJPTSIsICJkaXJFbmQiLCAiY3MiLCAic3AiLCAiRE9DVU1FTlQiLCAicyIsICJjaDAiLCAiY2gxIiwgIm5sIiwgIkZMT1dfRU5EIiwgInF1b3RlIiwgInFiIiwgImxvb3AiLCAibGFzdENoYXIiLCAiU0NBTEFSIiwgImluRmxvdyIsICJhbGxvd0VtcHR5IiwgImFsbG93VGFicyIsICJ0ZXN0IiwgIkxpbmVDb3VudGVyIiwgIm9mZnNldCIsICJsb3ciLCAiaGlnaCIsICJtaWQiLCAic3RhcnQiLCAiaW5jbHVkZXNUb2tlbiIsICJsaXN0IiwgInR5cGUiLCAiaSIsICJmaW5kTm9uRW1wdHlJbmRleCIsICJpc0Zsb3dUb2tlbiIsICJ0b2tlbiIsICJnZXRQcmV2UHJvcHMiLCAicGFyZW50IiwgIl9hIiwgIml0IiwgImdldEZpcnN0S2V5U3RhcnRQcm9wcyIsICJwcmV2IiwgImxvb3AiLCAiZml4Rmxvd1NlcUl0ZW1zIiwgImZjIiwgIlBhcnNlciIsICJvbk5ld0xpbmUiLCAiTGV4ZXIiLCAic291cmNlIiwgImluY29tcGxldGUiLCAibGV4ZW1lIiwgIl9feWllbGRTdGFyIiwgInRva2VuVHlwZSIsICJtZXNzYWdlIiwgInRvcCIsICJuIiwgImVycm9yIiwgImxhc3QiLCAic3QiLCAiZG9jIiwgImJ2IiwgInNjYWxhciIsICJzdGFydCIsICJzZXAiLCAibWFwIiwgIm5sIiwgImVuZCIsICJhdE1hcEluZGVudCIsICJhdE5leHRJdGVtIiwgImtleSIsICJmcyIsICJzZXEiLCAiaW5kZW50IiwgImRvY0VuZCIsICJwYXJzZU9wdGlvbnMiLCAib3B0aW9ucyIsICJwcmV0dHlFcnJvcnMiLCAiTGluZUNvdW50ZXIiLCAicGFyc2VEb2N1bWVudCIsICJzb3VyY2UiLCAib3B0aW9ucyIsICJsaW5lQ291bnRlciIsICJwcmV0dHlFcnJvcnMiLCAicGFyc2VPcHRpb25zIiwgInBhcnNlciIsICJQYXJzZXIiLCAiY29tcG9zZXIiLCAiQ29tcG9zZXIiLCAiZG9jIiwgIl9kb2MiLCAiWUFNTFBhcnNlRXJyb3IiLCAicHJldHRpZnlFcnJvciIsICJwYXJzZSIsICJzcmMiLCAicmV2aXZlciIsICJfcmV2aXZlciIsICJ3YXJuaW5nIiwgIndhcm4iLCAiaW1wb3J0X3NvcnRlZF9idHJlZSIsICJQIiwgIkxpdGVyYWxzIiwgInRvU3RyaW5nIiwgImZpZWxkIiwgInNldHRpbmciLCAicmVjdXJzaXZlIiwgIndyYXBwZWQiLCAid3JhcFZhbHVlIiwgInJlc3VsdCIsICJmIiwgImUiLCAicmVuZGVyTWluaW1hbERhdGUiLCAicmVuZGVyTWluaW1hbER1cmF0aW9uIiwgInZhbCIsICJpc051bGwiLCAiaXNOdW1iZXIiLCAiaXNTdHJpbmciLCAiaXNCb29sZWFuIiwgImlzRHVyYXRpb24iLCAiaXNEYXRlIiwgImlzQXJyYXkiLCAiaXNMaW5rIiwgImlzRnVuY3Rpb24iLCAiaXNPYmplY3QiLCAibWFwTGVhdmVzIiwgImZ1bmMiLCAia2V5IiwgInZhbHVlIiwgImVxdWFscyIsICJmaXJzdCIsICJzZWNvbmQiLCAiY29tcGFyZSIsICJ2YWwxIiwgInZhbDIiLCAibGlua05vcm1hbGl6ZXIiLCAiX2EiLCAiX2IiLCAid3JhcDEiLCAid3JhcDIiLCAibGluazEiLCAibGluazIiLCAibm9ybWFsaXplIiwgIngiLCAicGF0aENvbXBhcmUiLCAidHlwZUNvbXBhcmUiLCAiZjEiLCAiZjIiLCAiaW5kZXgiLCAiY29tcCIsICJvMSIsICJvMiIsICJrMSIsICJrMiIsICJrZXlDb21wYXJlIiwgInR5cGVPZiIsICJpc1RydXRoeSIsICJkZWVwQ29weSIsICJ2IiwgIkRhdGVUaW1lIiwgIkR1cmF0aW9uIiwgIkxpbmsiLCAiR3JvdXBpbmdzIiwgImlzRWxlbWVudEdyb3VwIiwgImVudHJ5IiwgImlzR3JvdXBpbmciLCAiZWxlbWVudCIsICJpc0xlYWYiLCAiY291bnQiLCAiZWxlbWVudHMiLCAic3ViZ3JvdXAiLCAic2xpY2UiLCAic3RhcnQiLCAiZW5kIiwgInNlZW4iLCAiZ3JvdXAiLCAiZ3JvdXBTaXplIiwgImdyb3VwU3RhcnQiLCAiZ3JvdXBFbmQiLCAiU3VjY2VzcyIsICJfU3VjY2VzcyIsICJ2YWx1ZSIsICJmIiwgInN1Y2MiLCAiX2ZhaWwiLCAiX3ZhbHVlIiwgIl9tZXNzYWdlIiwgIkZhaWx1cmUiLCAiX0ZhaWx1cmUiLCAiZXJyb3IiLCAiX2YiLCAiX3N1Y2MiLCAiZmFpbCIsICJtZXNzYWdlIiwgIlJlc3VsdCIsICJzdWNjZXNzIiwgImZhaWx1cmUiLCAiZmxhdE1hcDIiLCAiZmlyc3QiLCAic2Vjb25kIiwgIm1hcDIiLCAiYSIsICJiIiwgIm1hcEFsbCIsICJpbnB1dCIsICJmdW5jIiwgInJlc3VsdCIsICJlbGVtZW50IiwgIm91dHB1dCIsICJ0cnlpbmciLCAiY2FsbCIsICJhc3luYyIsICJwcm9taXNlIiwgIkZpbHRlcnMiLCAiYXRvbSIsICJzZXQiLCAiY29uc3RhbnQiLCAidmFsdWUiLCAibnVsbGFibGVBdG9tIiwgIm5lZ2F0ZWQiLCAibmVnYXRlIiwgImZpbHRlciIsICJlbXB0eSIsICJyZXNvbHZlIiwgImV2ZXJ5dGhpbmciLCAic2V0SW50ZXJzZWN0TmVnYXRpb24iLCAiaW50ZXJzZWN0IiwgImVsZW1lbnRzIiwgImxhenlJbnRlcnNlY3QiLCAieCIsICJwcm9kdWNlIiwgImxhenlGYWlsYWJsZUludGVyc2VjdGlvbiIsICJSZXN1bHQiLCAiYXRvbXMiLCAibmVnYXRpb25zIiwgImVsZW1lbnQiLCAibWF5YmVGaWx0ZXIiLCAic2V0SW50ZXJzZWN0IiwgInNldFVuaW9uIiwgInVuaW9uIiwgImZpbHRlcnMiLCAibGF6eVVuaW9uIiwgImxhenlGYWlsYWJsZVVuaW9uIiwgInNldHMiLCAic29ydGVkIiwgImEiLCAiYiIsICJyZXN1bHQiLCAibGFyZ2VzdCIsICJFeHByZXNzaW9ucyIsICJ2YXJpYWJsZSIsICJuYW1lIiwgImxpdGVyYWwiLCAidmFsdWUiLCAiYmluYXJ5T3AiLCAibGVmdCIsICJvcCIsICJyaWdodCIsICJpbmRleCIsICJvYmoiLCAiaW5kZXhWYXJpYWJsZSIsICJwYXJ0cyIsICJyZXN1bHQiLCAibGFtYmRhIiwgImFyZ3MiLCAiZnVuYyIsICJsaXN0IiwgInZhbHVlcyIsICJvYmplY3QiLCAibmVnYXRlIiwgImNoaWxkIiwgImlzQ29tcGFyZU9wIiwgInVuYm91bmRWYXJpYWJsZXMiLCAiZXhwciIsICJib3VuZCIsICJMaXRlcmFscyIsICJGaWx0ZXJzIiwgImEiLCAibmV3Qm91bmQiLCAiYXJnIiwgInYiLCAidG9TdHJpbmciLCAiayIsICJ3cmFwcGVkIiwgIlBSSU1JVElWRVMiLCAiXyIsICJzdHIiLCAicSIsICJjaGFycyIsICJlc2NhcGVkIiwgInN0YXJ0IiwgInJlc3QiLCAiRU1PSklfUkVHRVgiLCAiZmlyc3QiLCAibGlua0lubmVyIiwgIkxpbmsiLCAicCIsICJsIiwgIl9zdHIiLCAieWVhciIsICJtb250aCIsICJEYXRlVGltZSIsICJEQVRFX1NIT1JUSEFORFMiLCAiYSIsICJiIiwgImNoYWluT3B0IiwgInltIiwgImRheSIsICJ5bWQiLCAiaG91ciIsICJ5bWRoIiwgIm1pbnV0ZSIsICJ5bWRobSIsICJzZWNvbmQiLCAieW1kaG1zIiwgIm1pbGxpc2Vjb25kIiwgImR0IiwgInBtIiwgImhyIiwgIl9hIiwgInpvbmUiLCAiX2IiLCAiZCIsICJEVVJBVElPTl9UWVBFUyIsICJjb3VudCIsICJ0IiwgIngiLCAiZHVyYXRpb25zIiwgImMiLCAibm9ybWFsaXplRHVyYXRpb24iLCAiZiIsICJfcyIsICJlbW9qaV9yZWdleF9kZWZhdWx0IiwgIkR1cmF0aW9uIiwgIkVYUFJFU1NJT04iLCAiRXhwcmVzc2lvbnMiLCAiY3JlYXRlRnVuY3Rpb24iLCAiX2Z1bmMiLCAiZGF0ZSIsICJkdXIiLCAibmFtZSIsICJfc2VwIiwgInZhbHVlIiwgInZhbHMiLCAicmVzIiwgImVudHJ5IiwgIm9iaiIsICJwb3N0Zml4ZXMiLCAicmVzdWx0IiwgInBvc3QiLCAiZmllbGQiLCAiaWRlbnQiLCAiX2lnbm9yZSIsICJleHByIiwgIl8yIiwgIl8zIiwgIl80IiwgIl8xIiwgImV4cHJzIiwgImNyZWF0ZUJpbmFyeVBhcnNlciIsICJRVUVSWSIsICJpZCIsICJmdW5jIiwgInBhdGgiLCAiY2hpbGRyZW4iLCAicGFyZW50cyIsICJsaW5rIiwgInNvdXJjZSIsICJsZWZ0IiwgIl9vcCIsICJyaWdodCIsICJjcmVhdGVCaW5hcnlQYXJzZXIiLCAiY2hpbGQiLCAic2VwIiwgImNvbWJpbmUiLCAiZmlyc3QiLCAicmVzdCIsICJub2RlIiwgImluZGV4IiwgImNyZWF0ZUZ1bmN0aW9uIiwgImZ1bmMiLCAiYXJncyIsICJyZWFsRnVuYyIsICJmIiwgImEiLCAiY2hhaW5PcHQiLCAiYmFzZSIsICJmdW5jcyIsICJfc3VjY2VzcyIsICJfZmFpbHVyZSIsICJpbnB1dCIsICJyZXN1bHQiLCAibmV4dCIsICJQIiwgIm1hcE9iamVjdFZhbHVlcyIsICJvYmplY3QiLCAiZnVuYyIsICJyZXN1bHQiLCAia2V5IiwgInZhbHVlIiwgIkpzb25Db252ZXJzaW9uIiwgImlucHV0IiwgImpzb24iLCAibGl0ZXJhbCIsICJ3cmFwcGVkIiwgIkxpdGVyYWxzIiwgIm1hcE9iamVjdFZhbHVlcyIsICJ2YWx1ZSIsICJub3JtYWxpemVyIiwgInYiLCAidHlwZSIsICJEYXRlVGltZSIsICJEdXJhdGlvbiIsICJMaW5rIiwgImpzb25JbmxpbmVGaWVsZCIsICJmaWVsZCIsICJKc29uQ29udmVyc2lvbiIsICJhc0lubGluZUZpZWxkIiwgImxvY2FsIiwgImxpbmVubyIsICJmIiwgInBhcnNlSW5saW5lVmFsdWUiLCAiSU5MSU5FX0ZJRUxEX1dSQVBQRVJTIiwgImZpbmRDbG9zaW5nIiwgImxpbmUiLCAic3RhcnQiLCAib3BlbiIsICJjbG9zZSIsICJuZXN0aW5nIiwgImVzY2FwZWQiLCAiaW5kZXgiLCAiY2hhciIsICJmaW5kU2VwYXJhdG9yIiwgInNlcCIsICJmaW5kU3BlY2lmaWNJbmxpbmVGaWVsZCIsICJrZXkiLCAidmFsdWUiLCAiaW5saW5lIiwgIlBSSU1JVElWRVMiLCAiZXh0cmFjdElubGluZUZpZWxkcyIsICJpbmNsdWRlVGFza0ZpZWxkcyIsICJmaWVsZHMiLCAid3JhcHBlciIsICJmb3VuZEluZGV4IiwgInBhcnNlZEZpZWxkIiwgImV4dHJhY3RTcGVjaWFsVGFza0ZpZWxkcyIsICJhIiwgImIiLCAiZmlsdGVyZWRGaWVsZHMiLCAiaSIsICJGVUxMX0xJTkVfS0VZX1BBUlQiLCAiZW1vamlfcmVnZXhfZGVmYXVsdCIsICJwYXJ0cyIsICJGVUxMX0xJTkVfS0VZX1BBUlNFUiIsICJleHRyYWN0RnVsbExpbmVGaWVsZCIsICJ0ZXh0IiwgInJlYWxLZXkiLCAiQ1JFQVRFRF9EQVRFX1JFR0VYIiwgIkRVRV9EQVRFX1JFR0VYIiwgIkRPTkVfREFURV9SRUdFWCIsICJTQ0hFRFVMRURfREFURV9SRUdFWCIsICJTVEFSVF9EQVRFX1JFR0VYIiwgIkVNT0pJX1JFR0VYRVMiLCAicmVzdWx0cyIsICJyZWdleCIsICJtYXRjaCIsICJZYW1sQ29udmVyc2lvbiIsICJ5YW1sIiwgInZhbHVlIiwgIndyYXBwZWQiLCAiTGl0ZXJhbHMiLCAibGl0ZXJhbCIsICJtYXBPYmplY3RWYWx1ZXMiLCAicmVzdWx0IiwgImNoaWxkIiwgIkRhdGVUaW1lIiwgIm9iamVjdCIsICJrZXkiLCAiZGF0ZVBhcnNlIiwgIlBSSU1JVElWRVMiLCAiZHVyYXRpb25QYXJzZSIsICJsaW5rUGFyc2UiLCAiWUFNTF9EQVRBX1JFR0VYIiwgIkNPREVCTE9DS19GRU5DRV9SRUdFWCIsICJMSVNUX0lURU1fUkVHRVgiLCAibWFya2Rvd25JbXBvcnQiLCAicGF0aCIsICJtYXJrZG93biIsICJtZXRhZGF0YSIsICJzdGF0cyIsICJsaW5lcyIsICJwYWdlTWV0YWRhdGEiLCAiZnJvbnRtYXR0ZXIiLCAic2VjdGlvbnMiLCAibWFya2Rvd25Tb3VyY2VJbXBvcnQiLCAiUGFnZURhdGEiLCAiX2EiLCAiX2IiLCAiX2MiLCAiX2QiLCAiX2UiLCAiX2YiLCAiX2ciLCAiX2giLCAiX2kiLCAiX2oiLCAiX2siLCAiX2wiLCAiX20iLCAiX24iLCAiX28iLCAiX3AiLCAicGFyc2VGcm9udG1hdHRlckJsb2NrIiwgIm1hcmtkb3duTWV0YWRhdGEiLCAiTWV0YWRhdGEiLCAic2VjdGlvbkFycmF5IiwgIm1ldGFoZWFkaW5ncyIsICJhIiwgImIiLCAiQlRyZWUiLCAiaW5kZXgiLCAiZW50cnkiLCAic3RhcnQiLCAiZW5kIiwgInNlY3Rpb24iLCAiU2VjdGlvbkRhdGEiLCAiZW1wdHlsaW5lcyIsICJnZXRGaWxlVGl0bGUiLCAiZmlyc3QiLCAiYmxvY2tzIiwgImJsb2NrT3JkaW5hbCIsICJibG9jayIsICJzdGFydExpbmUiLCAiTGlzdEJsb2NrRGF0YSIsICJ5YW1sIiwgInNwbGl0IiwgInBhcnNlIiwgIkRhdGFibG9ja0RhdGEiLCAibWF0Y2giLCAiQ29kZWJsb2NrRGF0YSIsICJsYW5ndWFnZXMiLCAiQmFzZUJsb2NrRGF0YSIsICJsb29rdXAiLCAiY29udGVudFJlZ2V4IiwgIm1hcmtlclJlZ2V4IiwgImxpc3RJdGVtcyIsICJsaXN0IiwgInN5bWJvbCIsICJ0ZXh0IiwgIml0ZW0iLCAiTGlzdEl0ZW1EYXRhIiwgImxpc3RCbG9jayIsICJ0YWdkZWYiLCAidGFnIiwgImxpbmUiLCAicmF3dGFnIiwgImV4dHJhY3RUYWdzIiwgImxpbmtkZWYiLCAibGluayIsICJMaW5rIiwgImZpZWxkIiwgIml0ZXJhdGVJbmxpbmVGaWVsZHMiLCAiY29udGVudCIsICJsaW5lbm8iLCAiaW5saW5lRmllbGRzIiwgImV4dHJhY3RJbmxpbmVGaWVsZHMiLCAiaWZpZWxkIiwgImFzSW5saW5lRmllbGQiLCAiZnVsbExpbmUiLCAiZXh0cmFjdEZ1bGxMaW5lRmllbGQiLCAicmVzdWx0IiwgImtleSIsICJ2YWx1ZSIsICJKc29uQ29udmVyc2lvbiIsICJZYW1sQ29udmVyc2lvbiIsICJ0cmVlIiwgInRhcmdldCIsICJrIiwgInNwbGl0RnJvbnRtYXR0ZXJUYWdPckFsaWFzIiwgInAiLCAiYyIsICJzdHIiLCAiZGF0YSIsICJvbiIsICJzIiwgInYiLCAibG93ZXIiLCAibWFwT2JqZWN0VmFsdWVzIiwgImpzb25JbmxpbmVGaWVsZCIsICJsZW5ndGgiLCAiZ2V0RXh0ZW5zaW9uIiwgIngiLCAidGl0bGUiLCAibGV2ZWwiLCAib3JkaW5hbCIsICJibG9ja0lkIiwgInN0eWxlIiwgImNvbnRlbnRTdGFydCIsICJjb250ZW50RW5kIiwgInR5cGUiLCAicGFyZW50TGluZSIsICJzdGF0dXMiLCAiZWxlbWVudCIsICJjYW52YXNJbXBvcnQiLCAicGF0aCIsICJzb3VyY2UiLCAiaW5kZXgiLCAic3RhdHMiLCAiX2EiLCAiY2FudmFzIiwgIkNhbnZhc0RhdGEiLCAicGFyc2VkIiwgImMiLCAiZnJvbnRtYXR0ZXIiLCAibWV0YWRhdGEiLCAibGluZXMiLCAic2VjdGlvbnMiLCAibWFya2Rvd25Tb3VyY2VJbXBvcnQiLCAiY2FyZCIsICJDYW52YXNDYXJkRGF0YSIsICJpIiwgInRhZyIsICJsaW5rIiwgImZpZWxkIiwgIml0ZXJhdGVJbmxpbmVGaWVsZHMiLCAiQWJzdHJhY3RDYW52YXNDYXJkRGF0YSIsICJpZCIsICJub2RlSnNvbiIsICJNZXRhZGF0YSIsICJMaW5rIiwgInNlY3Rpb24iLCAiX19zcHJlYWRQcm9wcyIsICJfX3NwcmVhZFZhbHVlcyIsICJ4IiwgImQiLCAiZXZlbnQiLCAibWVzc2FnZSIsICJtYXJrZG93biIsICJtYXJrZG93bkltcG9ydCIsICJjYW52YXMiLCAiY2FudmFzSW1wb3J0IiwgImVycm9yIl0KfQo=\n');
+ return inlineWorker('var cl=Object.create;var Js=Object.defineProperty,fl=Object.defineProperties,dl=Object.getOwnPropertyDescriptor,hl=Object.getOwnPropertyDescriptors,pl=Object.getOwnPropertyNames,qr=Object.getOwnPropertySymbols,ml=Object.getPrototypeOf,zs=Object.prototype.hasOwnProperty,Mo=Object.prototype.propertyIsEnumerable;var Hs=(n,e)=>(e=Symbol[n])?e:Symbol.for("Symbol."+n),Dl=n=>{throw TypeError(n)};var Ao=(n,e,t)=>e in n?Js(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,R=(n,e)=>{for(var t in e||(e={}))zs.call(e,t)&&Ao(n,t,e[t]);if(qr)for(var t of qr(e))Mo.call(e,t)&&Ao(n,t,e[t]);return n},ye=(n,e)=>fl(n,hl(e));var Ys=(n,e)=>{var t={};for(var r in n)zs.call(n,r)&&e.indexOf(r)<0&&(t[r]=n[r]);if(n!=null&&qr)for(var r of qr(n))e.indexOf(r)<0&&Mo.call(n,r)&&(t[r]=n[r]);return t};var _o=(n,e)=>()=>(e||n((e={exports:{}}).exports,e),e.exports);var yl=(n,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of pl(e))!zs.call(n,s)&&s!==t&&Js(n,s,{get:()=>e[s],enumerable:!(r=dl(e,s))||r.enumerable});return n};var Vr=(n,e,t)=>(t=n!=null?cl(ml(n)):{},yl(e||!n||!n.__esModule?Js(t,"default",{value:n,enumerable:!0}):t,n));var gl=function(n,e){this[0]=n,this[1]=e};var S=n=>{var e=n[Hs("asyncIterator")],t=!1,r,s={};return e==null?(e=n[Hs("iterator")](),r=i=>s[i]=o=>e[i](o)):(e=e.call(n),r=i=>s[i]=o=>{if(t){if(t=!1,i==="throw")throw o;return o}return t=!0,{done:!1,value:new gl(new Promise(a=>{var u=e[i](o);u instanceof Object||Dl("Object expected"),a(u)}),1)}}),s[Hs("iterator")]=()=>s,r("next"),"throw"in e?r("throw"):s.throw=i=>{throw i},"return"in e&&r("return"),s};var ns=_o((pr,Ai)=>{(function(n,e){typeof pr=="object"&&typeof Ai=="object"?Ai.exports=e():typeof define=="function"&&define.amd?define([],e):typeof pr=="object"?pr.Parsimmon=e():n.Parsimmon=e()})(typeof self!="undefined"?self:pr,function(){return function(n){var e={};function t(r){if(e[r])return e[r].exports;var s=e[r]={i:r,l:!1,exports:{}};return n[r].call(s.exports,s,s.exports,t),s.l=!0,s.exports}return t.m=n,t.c=e,t.d=function(r,s,i){t.o(r,s)||Object.defineProperty(r,s,{configurable:!1,enumerable:!0,get:i})},t.r=function(r){Object.defineProperty(r,"__esModule",{value:!0})},t.n=function(r){var s=r&&r.__esModule?function(){return r.default}:function(){return r};return t.d(s,"a",s),s},t.o=function(r,s){return Object.prototype.hasOwnProperty.call(r,s)},t.p="",t(t.s=0)}([function(n,e,t){"use strict";function r(c){if(!(this instanceof r))return new r(c);this._=c}var s=r.prototype;function i(c,m){for(var E=0;E>7),buf:function(L){var A=o(function(M,U,te,Ee){return M.concat(te===Ee.length-1?Buffer.from([U,0]).readUInt16BE(0):Ee.readUInt16BE(te))},[],L);return Buffer.from(a(function(M){return(M<<1&65535)>>8},A))}(E.buf)}}),E}function l(){return typeof Buffer!="undefined"}function f(){if(!l())throw new Error("Buffer global does not exist; please use webpack if you need to parse Buffers in the browser.")}function d(c){f();var m=o(function(A,M){return A+M},0,c);if(m%8!=0)throw new Error("The bits ["+c.join(", ")+"] add up to "+m+" which is not an even number of bytes; the total should be divisible by 8");var E,k=m/8,L=(E=function(A){return A>48},o(function(A,M){return A||(E(M)?M:A)},null,c));if(L)throw new Error(L+" bit range requested exceeds 48 bit (6 byte) Number max.");return new r(function(A,M){var U=k+M;return U>A.length?v(M,k.toString()+" bytes"):w(U,o(function(te,Ee){var pe=u(Ee,te.buf);return{coll:te.coll.concat(pe.v),buf:pe.buf}},{coll:[],buf:A.slice(M,U)},c).coll)})}function p(c,m){return new r(function(E,k){return f(),k+m>E.length?v(k,m+" bytes for "+c):w(k+m,E.slice(k,k+m))})}function h(c,m){if(typeof(E=m)!="number"||Math.floor(E)!==E||m<0||m>6)throw new Error(c+" requires integer length in range [0, 6].");var E}function b(c){return h("uintBE",c),p("uintBE("+c+")",c).map(function(m){return m.readUIntBE(0,c)})}function g(c){return h("uintLE",c),p("uintLE("+c+")",c).map(function(m){return m.readUIntLE(0,c)})}function D(c){return h("intBE",c),p("intBE("+c+")",c).map(function(m){return m.readIntBE(0,c)})}function T(c){return h("intLE",c),p("intLE("+c+")",c).map(function(m){return m.readIntLE(0,c)})}function I(c){return c instanceof r}function N(c){return{}.toString.call(c)==="[object Array]"}function y(c){return l()&&Buffer.isBuffer(c)}function w(c,m){return{status:!0,index:c,value:m,furthest:-1,expected:[]}}function v(c,m){return N(m)||(m=[m]),{status:!1,index:-1,value:null,furthest:c,expected:m}}function O(c,m){if(!m||c.furthest>m.furthest)return c;var E=c.furthest===m.furthest?function(k,L){if(function(){if(r._supportsSet!==void 0)return r._supportsSet;var ht=typeof Set!="undefined";return r._supportsSet=ht,ht}()&&Array.from){for(var A=new Set(k),M=0;M=0;){if(M in E){k=E[M].line,A===0&&(A=E[M].lineStart);break}(c.charAt(M)===`\n`||c.charAt(M)==="\\r"&&c.charAt(M+1)!==`\n`)&&(L++,A===0&&(A=M+1)),M--}var U=k+L,te=m-A;return E[m]={line:U,lineStart:A},{offset:m,line:U+1,column:te+1}}function j(c){if(!I(c))throw new Error("not a parser: "+c)}function Y(c,m){return typeof c=="string"?c.charAt(m):c[m]}function ee(c){if(typeof c!="number")throw new Error("not a number: "+c)}function ae(c){if(typeof c!="function")throw new Error("not a function: "+c)}function x(c){if(typeof c!="string")throw new Error("not a string: "+c)}var $=2,Q=3,ue=8,De=5*ue,Re=4*ue,Qt=" ";function Mt(c,m){return new Array(m+1).join(c)}function _t(c,m,E){var k=m-c.length;return k<=0?c:Mt(E,k)+c}function Ae(c,m,E,k){return{from:c-m>0?c-m:0,to:c+E>k?k:c+E}}function Bt(c,m){var E,k,L,A,M,U=m.index,te=U.offset,Ee=1;if(te===c.length)return"Got the end of the input";if(y(c)){var pe=te-te%ue,dt=te-pe,ve=Ae(pe,De,Re+ue,c.length),ht=a(function(le){return a(function(en){return _t(en.toString(16),2,"0")},le)},function(le,en){var tn=le.length,Rt=[],nn=0;if(tn<=en)return[le.slice()];for(var rn=0;rn=4&&(E+=1),Ee=2,L=a(function(le){return le.length<=4?le.join(" "):le.slice(0,4).join(" ")+" "+le.slice(4).join(" ")},ht),(M=(8*(A.to>0?A.to-1:A.to)).toString(16).length)<2&&(M=2)}else{var Xt=c.split(/\\r\\n|[\\n\\r\\u2028\\u2029]/);E=U.column-1,k=U.line-1,A=Ae(k,$,Q,Xt.length),L=Xt.slice(A.from,A.to),M=A.to.toString().length}var ll=k-A.from;return y(c)&&(M=(8*(A.to>0?A.to-1:A.to)).toString(16).length)<2&&(M=2),o(function(le,en,tn){var Rt,nn=tn===ll,rn=nn?"> ":Qt;return Rt=y(c)?_t((8*(A.from+tn)).toString(16),M,"0"):_t((A.from+tn+1).toString(),M," "),[].concat(le,[rn+Rt+" | "+en],nn?[Qt+Mt(" ",M)+" | "+_t("",E," ")+Mt("^",Ee)]:[])},[],L).join(`\n`)}function So(c,m){return[`\n`,"-- PARSING FAILED "+Mt("-",50),`\n\n`,Bt(c,m),`\n\n`,(E=m.expected,E.length===1?`Expected:\n\n`+E[0]:`Expected one of the following: \n\n`+E.join(", ")),`\n`].join("");var E}function ko(c){return c.flags!==void 0?c.flags:[c.global?"g":"",c.ignoreCase?"i":"",c.multiline?"m":"",c.unicode?"u":"",c.sticky?"y":""].join("")}function Br(){for(var c=[].slice.call(arguments),m=c.length,E=0;E=2?ee(m):m=0;var E=function(L){return RegExp("^(?:"+L.source+")",ko(L))}(c),k=""+c;return r(function(L,A){var M=E.exec(L.slice(A));if(M){if(0<=m&&m<=M.length){var U=M[0],te=M[m];return w(A+U.length,te)}return v(A,"valid match group (0 to "+M.length+") in "+k)}return v(A,k)})}function $t(c){return r(function(m,E){return w(E,c)})}function $r(c){return r(function(m,E){return v(E,c)})}function Rr(c){if(I(c))return r(function(m,E){var k=c._(m,E);return k.index=E,k.value="",k});if(typeof c=="string")return Rr(Bn(c));if(c instanceof RegExp)return Rr(ft(c));throw new Error("not a string, regexp, or parser: "+c)}function vo(c){return j(c),r(function(m,E){var k=c._(m,E),L=m.slice(E,k.index);return k.status?v(E,\'not "\'+L+\'"\'):w(E,null)})}function jr(c){return ae(c),r(function(m,E){var k=Y(m,E);return E=c.length?v(m,"any character/byte"):w(m+1,Y(c,m))}),tl=r(function(c,m){return w(c.length,c.slice(m))}),Ws=r(function(c,m){return m=0}).desc(m)},r.optWhitespace=ol,r.Parser=r,r.range=function(c,m){return jr(function(E){return c<=E&&E<=m}).desc(c+"-"+m)},r.regex=ft,r.regexp=ft,r.sepBy=Co,r.sepBy1=Us,r.seq=Br,r.seqMap=Pt,r.seqObj=function(){for(var c,m={},E=0,k=(c=arguments,Array.prototype.slice.call(c)),L=k.length,A=0;A255)throw new Error("Value specified to byte constructor ("+c+"=0x"+c.toString(16)+") is larger in value than a single byte.");var m=(c>15?"0x":"0x0")+c.toString(16);return r(function(E,k){var L=Y(E,k);return L===c?w(k+1,L):v(k,m)})},buffer:function(c){return p("buffer",c).map(function(m){return Buffer.from(m)})},encodedString:function(c,m){return p("string",m).map(function(E){return E.toString(c)})},uintBE:b,uint8BE:b(1),uint16BE:b(2),uint32BE:b(4),uintLE:g,uint8LE:g(1),uint16LE:g(2),uint32LE:g(4),intBE:D,int8BE:D(1),int16BE:D(2),int32BE:D(4),intLE:T,int8LE:T(1),int16LE:T(2),int32LE:T(4),floatBE:p("floatBE",4).map(function(c){return c.readFloatBE(0)}),floatLE:p("floatLE",4).map(function(c){return c.readFloatLE(0)}),doubleBE:p("doubleBE",8).map(function(c){return c.readDoubleBE(0)}),doubleLE:p("doubleLE",8).map(function(c){return c.readDoubleLE(0)})},n.exports=r}])})});var Ru=_o(Ne=>{"use strict";var Sf=Ne&&Ne.__extends||function(){var n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,s){r.__proto__=s}||function(r,s){for(var i in s)Object.prototype.hasOwnProperty.call(s,i)&&(r[i]=s[i])},n(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");n(e,t);function r(){this.constructor=e}e.prototype=t===null?Object.create(t):(r.prototype=t.prototype,new r)}}();Object.defineProperty(Ne,"__esModule",{value:!0});Ne.EmptyBTree=Ne.asSet=Ne.simpleComparator=Ne.defaultComparator=void 0;function Bu(n,e){if(Number.isFinite(n)&&Number.isFinite(e))return n-e;var t=typeof n,r=typeof e;if(t!==r)return te?1:n===e?0:Number.isNaN(n)?Number.isNaN(e)?0:-1:Number.isNaN(e)?1:Array.isArray(n)?0:Number.NaN}Ne.defaultComparator=Bu;function kf(n,e){return n>e?1:n=4?Math.min(r,256):32,this._compare=t||Bu,e&&this.setPairs(e)}return Object.defineProperty(n.prototype,"size",{get:function(){return this._size},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"length",{get:function(){return this._size},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"isEmpty",{get:function(){return this._size===0},enumerable:!1,configurable:!0}),n.prototype.clear=function(){this._root=fo,this._size=0},n.prototype.forEach=function(e,t){var r=this;return t!==void 0&&(e=e.bind(t)),this.forEachPair(function(s,i){return e(i,s,r)})},n.prototype.forEachPair=function(e,t){var r=this.minKey(),s=this.maxKey();return this.forRange(r,s,!0,e,t)},n.prototype.get=function(e,t){return this._root.get(e,t,this)},n.prototype.set=function(e,t,r){this._root.isShared&&(this._root=this._root.clone());var s=this._root.set(e,t,r,this);return s===!0||s===!1?s:(this._root=new vf([this._root,s]),!0)},n.prototype.has=function(e){return this.forRange(e,e,!0,void 0)!==0},n.prototype.delete=function(e){return this.editRange(e,e,!0,Mu)!==0},n.prototype.with=function(e,t,r){var s=this.clone();return s.set(e,t,r)||r?s:this},n.prototype.withPairs=function(e,t){var r=this.clone();return r.setPairs(e,t)!==0||t?r:this},n.prototype.withKeys=function(e,t){for(var r=this.clone(),s=!1,i=0;i=s.length){a=3;continue e}if(++i[l]0;l--)s[l-1]=s[l][i[l]].children,i[l-1]=0;o=s[0][i[0]],u=-1,a=t!==void 0?1:0;continue;case 3:return{done:!0,value:void 0}}})},n.prototype.entriesReversed=function(e,t,r){if(e===void 0&&(e=this.maxKey(),r=void 0,e===void 0))return An();var s=this.findPath(e)||this.findPath(this.maxKey()),i=s.nodequeue,o=s.nodeindex,a=s.leaf;Le(!i[0]||a===i[0][o[0]],"wat!");var u=a.indexOf(e,0,this._compare);!r&&u=0)return{done:!1,value:[a.keys[u],a.values[u]]};l=2;continue;case 1:if(--u>=0)return t[0]=a.keys[u],t[1]=a.values[u],{done:!1,value:t};l=2;case 2:for(var f=-1;;){if(++f>=i.length){l=3;continue e}if(--o[f]>=0)break}for(;f>0;f--)i[f-1]=i[f][o[f]].children,o[f-1]=i[f-1].length-1;a=i[0][o[0]],u=a.keys.length,l=t!==void 0?1:0;continue;case 3:return{done:!0,value:void 0}}})},n.prototype.findPath=function(e){var t=this._root,r,s;if(t.isLeaf)r=_u,s=_u;else{r=[],s=[];for(var i=0;!t.isLeaf;i++){if(r[i]=t.children,s[i]=e===void 0?0:t.indexOf(e,0,this._compare),s[i]>=r[i].length)return;t=r[i][s[i]]}r.reverse(),s.reverse()}return{nodequeue:r,nodeindex:s,leaf:t}},n.prototype.diffAgainst=function(e,t,r,s){if(e._compare!==this._compare)throw new Error("Tree comparators are not the same.");if(this.isEmpty||e.isEmpty)return this.isEmpty&&e.isEmpty?void 0:this.isEmpty?r===void 0?void 0:n.stepToEnd(n.makeDiffCursor(e),r):t===void 0?void 0:n.stepToEnd(n.makeDiffCursor(this),t);for(var i=this._compare,o=n.makeDiffCursor(this),a=n.makeDiffCursor(e),u=!0,l=!0,f=n.compare(o,a,i);u&&l;){var d=n.compare(o,a,i),p=o.leaf,h=o.internalSpine,b=o.levelIndices,g=a.leaf,D=a.internalSpine,T=a.levelIndices;if(p||g){if(f!==0){if(d===0){if(p&&g&&s){var I=p.values[b[b.length-1]],N=g.values[T[T.length-1]];if(!Object.is(I,N)){var y=s(o.currentKey,I,N);if(y&&y.break)return y.break}}}else if(d>0){if(g&&r){var w=g.values[T[T.length-1]],y=r(a.currentKey,w);if(y&&y.break)return y.break}}else if(t&&p&&f!==0){var I=p.values[b[b.length-1]],y=t(o.currentKey,I);if(y&&y.break)return y.break}}}else if(!p&&!g&&d===0){var v=h.length-1,O=D.length-1,C=h[v][b[v]],V=D[O][T[O]];if(V===C){f=0,u=n.step(o,!0),l=n.step(a,!0);continue}}f=d,d<0?u=n.step(o):l=n.step(a)}if(u&&t)return n.finishCursorWalk(o,a,i,t);if(l&&r)return n.finishCursorWalk(a,o,i,r)},n.finishCursorWalk=function(e,t,r,s){var i=n.compare(e,t,r);if(i===0){if(!n.step(e))return}else i<0&&Le(!1,"cursor walk terminated early");return n.stepToEnd(e,s)},n.stepToEnd=function(e,t){for(var r=!0;r;){var s=e.leaf,i=e.levelIndices,o=e.currentKey;if(s){var a=s.values[i[i.length-1]],u=t(o,a);if(u&&u.break)return u.break}r=n.step(e)}},n.makeDiffCursor=function(e){var t=e._root,r=e.height;return{height:r,internalSpine:[[t]],levelIndices:[0],leaf:void 0,currentKey:t.maxKey()}},n.step=function(e,t){var r=e.internalSpine,s=e.levelIndices,i=e.leaf;if(t===!0||i){var o=s.length;if(t===!0||s[o-1]===0){var a=r.length;if(a===0)return!1;for(var u=a-1,l=u;l>=0;){if(s[l]>0)return ls?Of:void 0}),i},n.prototype.setPairs=function(e,t){for(var r=0,s=0;s>1;i0)o=a;else{if(u===0)return a;if(e===e)return s.length;throw new Error("BTree: NaN was used as a key")}a=i+o>>1}return a^t},n.prototype.minKey=function(){return this.keys[0]},n.prototype.minPair=function(e){if(this.keys.length!==0)return e[0]=this.keys[0],e[1]=this.values[0],e},n.prototype.maxPair=function(e){if(this.keys.length!==0){var t=this.keys.length-1;return e[0]=this.keys[t],e[1]=this.values[t],e}},n.prototype.clone=function(){var e=this.values;return new n(this.keys.slice(0),e===me?e:e.slice(0))},n.prototype.greedyClone=function(e){return this.isShared&&!e?this:this.clone()},n.prototype.get=function(e,t,r){var s=this.indexOf(e,-1,r._compare);return s<0?t:this.values[s]},n.prototype.getPairOrNextLower=function(e,t,r,s){var i=this.indexOf(e,-1,t),o=i<0?~i-1:r?i:i-1;if(o>=0)return s[0]=this.keys[o],s[1]=this.values[o],s},n.prototype.getPairOrNextHigher=function(e,t,r,s){var i=this.indexOf(e,-1,t),o=i<0?~i:r?i:i+1,a=this.keys;if(o0,"empty leaf at depth",e,"and baseIndex",r),s},n.prototype.set=function(e,t,r,s){var i=this.indexOf(e,-1,s._compare);if(i<0){if(i=~i,s._size++,this.keys.lengththis.keys.length&&(i-=this.keys.length,a=o),a.insertInLeaf(i,e,t,s),o}else return r!==!1&&(t!==void 0&&this.reifyValues(),this.keys[i]=e,this.values[i]=t),!1},n.prototype.reifyValues=function(){return this.values===me?this.values=this.values.slice(0,this.keys.length):this.values},n.prototype.insertInLeaf=function(e,t,r,s){if(this.keys.splice(e,0,t),this.values===me){for(;me.length>1,t=this.keys.splice(e),r=this.values===me?me:this.values.splice(e);return new n(t,r)},n.prototype.forRange=function(e,t,r,s,i,o,a){var u=i._compare,l,f;if(t===e){if(!r||(f=(l=this.indexOf(e,-1,u))+1,l<0))return o}else l=this.indexOf(e,0,u),f=this.indexOf(t,-1,u),f<0?f=~f:r===!0&&f++;var d=this.keys,p=this.values;if(a!==void 0)for(var h=l;h=a.length)return this.maxPair(i);var u=a[o].getPairOrNextLower(t,r,s,i);return u===void 0&&o>0?a[o-1].maxPair(i):u},e.prototype.getPairOrNextHigher=function(t,r,s,i){var o=this.indexOf(t,0,r),a=this.children,u=a.length;if(!(o>=u)){var l=a[o].getPairOrNextHigher(t,r,s,i);return l===void 0&&o1||t>0,"internal node has length",i,"at depth",t,"baseIndex",s);for(var a=0,u=this.children,l=this.keys,f=0,d=0;d=f,"wtf",s),Le(d===0||u[d-1].constructor===u[d].constructor,"type mismatch, baseIndex:",s),u[d].maxKey()!=l[d]&&Le(!1,"keys[",d,"] =",l[d],"is wrong, should be ",u[d].maxKey(),"at depth",t,"baseIndex",s),d===0||r._compare(l[d-1],l[d])<0||Le(!1,"sort violation at depth",t,"index",d,"keys",l[d-1],l[d]);var p=f===0;return(p||f>r.maxNodeSize*o)&&Le(!1,p?"too few":"too many","children (",f,a,") at depth",t,"maxNodeSize:",r.maxNodeSize,"children.length:",o,"baseIndex:",s),a},e.prototype.set=function(t,r,s,i){var o=this.children,a=i._maxNodeSize,u=i._compare,l=Math.min(this.indexOf(t,0,u),o.length-1),f=o[l];if(f.isShared&&(o[l]=f=f.clone()),f.keys.length>=a){var d;l>0&&(d=o[l-1]).keys.length0&&(b=h,l-=this.keys.length),b.insert(l+1,p),h},e.prototype.insert=function(t,r){this.children.splice(t,0,r),this.keys.splice(t,0,r.maxKey())},e.prototype.splitOffRightSide=function(){var t=this.children.length>>1;return new e(this.children.splice(t),this.keys.splice(t))},e.prototype.takeFromRight=function(t){this.keys.push(t.keys.shift()),this.children.push(t.children.shift())},e.prototype.takeFromLeft=function(t){this.keys.unshift(t.keys.pop()),this.children.unshift(t.children.pop())},e.prototype.forRange=function(t,r,s,i,o,a,u){var l=o._compare,f=this.keys,d=this.children,p=this.indexOf(t,0,l),h=p,b=Math.min(r===t?p:this.indexOf(r,0,l),f.length-1);if(i){if(h<=b)try{for(;h<=b;h++){d[h].isShared&&(d[h]=d[h].clone());var g=d[h].forRange(t,r,s,i,o,a,u);if(f[h]=d[h].maxKey(),typeof g!="number")return g;a=g}}finally{var D=o._maxNodeSize>>1;for(p>0&&p--,h=b;h>=p;h--)d[h].keys.length<=D&&(d[h].keys.length!==0?this.tryMerge(h,o._maxNodeSize):(f.splice(h,1),d.splice(h,1)));d.length!==0&&d[0].keys.length===0&&Le(!1,"emptiness bug")}}else for(;h<=b;h++){var g=d[h].forRange(t,r,s,i,o,a,u);if(typeof g!="number")return g;a=g}return a},e.prototype.tryMerge=function(t,r){var s=this.children;return t>=0&&t+1{let i=[e(s),s];return r&&t(r[0],i[0])===r[0]?r:i},null)[1]}function Ro(n,e){return e.reduce((t,r)=>(t[r]=n[r],t),{})}function kt(n,e){return Object.prototype.hasOwnProperty.call(n,e)}function nt(n,e,t){return rr(n)&&n>=e&&n<=t}function bl(n,e){return n-e*Math.floor(n/e)}function re(n,e=2){let t=n<0,r;return t?r="-"+(""+-n).padStart(e,"0"):r=(""+n).padStart(e,"0"),r}function Dt(n){if(!(W(n)||n===null||n===""))return parseInt(n,10)}function Ct(n){if(!(W(n)||n===null||n===""))return parseFloat(n)}function sr(n){if(!(W(n)||n===null||n==="")){let e=parseFloat("0."+n)*1e3;return Math.floor(e)}}function an(n,e,t=!1){let r=10**e;return(t?Math.trunc:Math.round)(n*r)/r}function jt(n){return n%4===0&&(n%100!==0||n%400===0)}function qt(n){return jt(n)?366:365}function un(n,e){let t=bl(e-1,12)+1,r=n+(e-t)/12;return t===2?jt(r)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][t-1]}function ir(n){let e=Date.UTC(n.year,n.month-1,n.day,n.hour,n.minute,n.second,n.millisecond);return n.year<100&&n.year>=0&&(e=new Date(e),e.setUTCFullYear(e.getUTCFullYear()-1900)),+e}function ln(n){let e=(n+Math.floor(n/4)-Math.floor(n/100)+Math.floor(n/400))%7,t=n-1,r=(t+Math.floor(t/4)-Math.floor(t/100)+Math.floor(t/400))%7;return e===4||r===3?53:52}function or(n){return n>99?n:n>60?1900+n:2e3+n}function Jr(n,e,t,r=null){let s=new Date(n),i={hourCycle:"h23",year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"};r&&(i.timeZone=r);let o=R({timeZoneName:e},i),a=new Intl.DateTimeFormat(t,o).formatToParts(s).find(u=>u.type.toLowerCase()==="timezonename");return a?a.value:null}function Vt(n,e){let t=parseInt(n,10);Number.isNaN(t)&&(t=0);let r=parseInt(e,10)||0,s=t<0||Object.is(t,-0)?-r:r;return t*60+s}function ei(n){let e=Number(n);if(typeof n=="boolean"||n===""||Number.isNaN(e))throw new fe(`Invalid unit value ${n}`);return e}function cn(n,e){let t={};for(let r in n)if(kt(n,r)){let s=n[r];if(s==null)continue;t[e(r)]=ei(s)}return t}function vt(n,e){let t=Math.trunc(Math.abs(n/60)),r=Math.trunc(Math.abs(n%60)),s=n>=0?"+":"-";switch(e){case"short":return`${s}${re(t,2)}:${re(r,2)}`;case"narrow":return`${s}${t}${r>0?`:${r}`:""}`;case"techie":return`${s}${re(t,2)}${re(r,2)}`;default:throw new RangeError(`Value format ${e} is out of range for property format`)}}function ar(n){return Ro(n,["hour","minute","second","millisecond"])}var ti=/[A-Za-z_+-]{1,256}(?::?\\/[A-Za-z0-9_+-]{1,256}(?:\\/[A-Za-z0-9_+-]{1,256})?)?/;var Fl=["January","February","March","April","May","June","July","August","September","October","November","December"],ni=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],El=["J","F","M","A","M","J","J","A","S","O","N","D"];function ri(n){switch(n){case"narrow":return[...El];case"short":return[...ni];case"long":return[...Fl];case"numeric":return["1","2","3","4","5","6","7","8","9","10","11","12"];case"2-digit":return["01","02","03","04","05","06","07","08","09","10","11","12"];default:return null}}var si=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],ii=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],wl=["M","T","W","T","F","S","S"];function oi(n){switch(n){case"narrow":return[...wl];case"short":return[...ii];case"long":return[...si];case"numeric":return["1","2","3","4","5","6","7"];default:return null}}var ai=["AM","PM"],Tl=["Before Christ","Anno Domini"],Sl=["BC","AD"],kl=["B","A"];function ui(n){switch(n){case"narrow":return[...kl];case"short":return[...Sl];case"long":return[...Tl];default:return null}}function jo(n){return ai[n.hour<12?0:1]}function qo(n,e){return oi(e)[n.weekday-1]}function Vo(n,e){return ri(e)[n.month-1]}function Uo(n,e){return ui(e)[n.year<0?0:1]}function Ko(n,e,t="always",r=!1){let s={years:["year","yr."],quarters:["quarter","qtr."],months:["month","mo."],weeks:["week","wk."],days:["day","day","days"],hours:["hour","hr."],minutes:["minute","min."],seconds:["second","sec."]},i=["hours","minutes","seconds"].indexOf(n)===-1;if(t==="auto"&&i){let d=n==="days";switch(e){case 1:return d?"tomorrow":`next ${s[n][0]}`;case-1:return d?"yesterday":`last ${s[n][0]}`;case 0:return d?"today":`this ${s[n][0]}`;default:}}let o=Object.is(e,-0)||e<0,a=Math.abs(e),u=a===1,l=s[n],f=r?u?l[1]:l[2]||l[1]:u?s[n][0]:n;return o?`${a} ${f} ago`:`in ${a} ${f}`}function Wo(n,e){let t="";for(let r of n)r.literal?t+=r.val:t+=e(r.val);return t}var Cl={D:on,DD:$n,DDD:Rn,DDDD:jn,t:qn,tt:Vn,ttt:Un,tttt:Kn,T:Wn,TT:Hn,TTT:Jn,TTTT:zn,f:Yn,ff:Zn,fff:Xn,ffff:tr,F:Gn,FF:Qn,FFF:er,FFFF:nr},we=class n{static create(e,t={}){return new n(e,t)}static parseFormat(e){let t=null,r="",s=!1,i=[];for(let o=0;o0&&i.push({literal:s,val:r}),t=null,r="",s=!s):s||a===t?r+=a:(r.length>0&&i.push({literal:!1,val:r}),r=a,t=a)}return r.length>0&&i.push({literal:s,val:r}),i}static macroTokenToFormatOpts(e){return Cl[e]}constructor(e,t){this.opts=t,this.loc=e,this.systemLoc=null}formatWithSystemDefault(e,t){return this.systemLoc===null&&(this.systemLoc=this.loc.redefaultToSystem()),this.systemLoc.dtFormatter(e,R(R({},this.opts),t)).format()}formatDateTime(e,t={}){return this.loc.dtFormatter(e,R(R({},this.opts),t)).format()}formatDateTimeParts(e,t={}){return this.loc.dtFormatter(e,R(R({},this.opts),t)).formatToParts()}resolvedOptions(e,t={}){return this.loc.dtFormatter(e,R(R({},this.opts),t)).resolvedOptions()}num(e,t=0){if(this.opts.forceSimple)return re(e,t);let r=R({},this.opts);return t>0&&(r.padTo=t),this.loc.numberFormatter(r).format(e)}formatDateTimeFromString(e,t){let r=this.loc.listingMode()==="en",s=this.loc.outputCalendar&&this.loc.outputCalendar!=="gregory",i=(h,b)=>this.loc.extract(e,h,b),o=h=>e.isOffsetFixed&&e.offset===0&&h.allowZ?"Z":e.isValid?e.zone.formatOffset(e.ts,h.format):"",a=()=>r?jo(e):i({hour:"numeric",hourCycle:"h12"},"dayperiod"),u=(h,b)=>r?Vo(e,h):i(b?{month:h}:{month:h,day:"numeric"},"month"),l=(h,b)=>r?qo(e,h):i(b?{weekday:h}:{weekday:h,month:"long",day:"numeric"},"weekday"),f=h=>{let b=n.macroTokenToFormatOpts(h);return b?this.formatWithSystemDefault(e,b):h},d=h=>r?Uo(e,h):i({era:h},"era"),p=h=>{switch(h){case"S":return this.num(e.millisecond);case"u":case"SSS":return this.num(e.millisecond,3);case"s":return this.num(e.second);case"ss":return this.num(e.second,2);case"uu":return this.num(Math.floor(e.millisecond/10),2);case"uuu":return this.num(Math.floor(e.millisecond/100));case"m":return this.num(e.minute);case"mm":return this.num(e.minute,2);case"h":return this.num(e.hour%12===0?12:e.hour%12);case"hh":return this.num(e.hour%12===0?12:e.hour%12,2);case"H":return this.num(e.hour);case"HH":return this.num(e.hour,2);case"Z":return o({format:"narrow",allowZ:this.opts.allowZ});case"ZZ":return o({format:"short",allowZ:this.opts.allowZ});case"ZZZ":return o({format:"techie",allowZ:this.opts.allowZ});case"ZZZZ":return e.zone.offsetName(e.ts,{format:"short",locale:this.loc.locale});case"ZZZZZ":return e.zone.offsetName(e.ts,{format:"long",locale:this.loc.locale});case"z":return e.zoneName;case"a":return a();case"d":return s?i({day:"numeric"},"day"):this.num(e.day);case"dd":return s?i({day:"2-digit"},"day"):this.num(e.day,2);case"c":return this.num(e.weekday);case"ccc":return l("short",!0);case"cccc":return l("long",!0);case"ccccc":return l("narrow",!0);case"E":return this.num(e.weekday);case"EEE":return l("short",!1);case"EEEE":return l("long",!1);case"EEEEE":return l("narrow",!1);case"L":return s?i({month:"numeric",day:"numeric"},"month"):this.num(e.month);case"LL":return s?i({month:"2-digit",day:"numeric"},"month"):this.num(e.month,2);case"LLL":return u("short",!0);case"LLLL":return u("long",!0);case"LLLLL":return u("narrow",!0);case"M":return s?i({month:"numeric"},"month"):this.num(e.month);case"MM":return s?i({month:"2-digit"},"month"):this.num(e.month,2);case"MMM":return u("short",!1);case"MMMM":return u("long",!1);case"MMMMM":return u("narrow",!1);case"y":return s?i({year:"numeric"},"year"):this.num(e.year);case"yy":return s?i({year:"2-digit"},"year"):this.num(e.year.toString().slice(-2),2);case"yyyy":return s?i({year:"numeric"},"year"):this.num(e.year,4);case"yyyyyy":return s?i({year:"numeric"},"year"):this.num(e.year,6);case"G":return d("short");case"GG":return d("long");case"GGGGG":return d("narrow");case"kk":return this.num(e.weekYear.toString().slice(-2),2);case"kkkk":return this.num(e.weekYear,4);case"W":return this.num(e.weekNumber);case"WW":return this.num(e.weekNumber,2);case"o":return this.num(e.ordinal);case"ooo":return this.num(e.ordinal,3);case"q":return this.num(e.quarter);case"qq":return this.num(e.quarter,2);case"X":return this.num(Math.floor(e.ts/1e3));case"x":return this.num(e.ts);default:return f(h)}};return Wo(n.parseFormat(t),p)}formatDurationFromString(e,t){let r=u=>{switch(u[0]){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":return"hour";case"d":return"day";case"w":return"week";case"M":return"month";case"y":return"year";default:return null}},s=u=>l=>{let f=r(l);return f?this.num(u.get(f),l.length):l},i=n.parseFormat(t),o=i.reduce((u,{literal:l,val:f})=>l?u:u.concat(f),[]),a=e.shiftTo(...o.map(r).filter(u=>u));return Wo(i,s(a))}};var de=class{constructor(e,t){this.reason=e,this.explanation=t}toMessage(){return this.explanation?`${this.reason}: ${this.explanation}`:this.reason}};var ke=class{get type(){throw new je}get name(){throw new je}get ianaName(){return this.name}get isUniversal(){throw new je}offsetName(e,t){throw new je}formatOffset(e,t){throw new je}offset(e){throw new je}equals(e){throw new je}get isValid(){throw new je}};var ci=null,fn=class n extends ke{static get instance(){return ci===null&&(ci=new n),ci}get type(){return"system"}get name(){return new Intl.DateTimeFormat().resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(e,{format:t,locale:r}){return Jr(e,t,r)}formatOffset(e,t){return vt(this.offset(e),t)}offset(e){return-new Date(e).getTimezoneOffset()}equals(e){return e.type==="system"}get isValid(){return!0}};var Yr={};function vl(n){return Yr[n]||(Yr[n]=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:n,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",era:"short"})),Yr[n]}var Ol={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};function xl(n,e){let t=n.format(e).replace(/\\u200E/g,""),r=/(\\d+)\\/(\\d+)\\/(\\d+) (AD|BC),? (\\d+):(\\d+):(\\d+)/.exec(t),[,s,i,o,a,u,l,f]=r;return[o,s,i,a,u,l,f]}function Il(n,e){let t=n.formatToParts(e),r=[];for(let s=0;s=0?b:1e3+b,(p-h)/(60*1e3)}equals(e){return e.type==="iana"&&e.name===this.name}get isValid(){return this.valid}};var fi=null,he=class n extends ke{static get utcInstance(){return fi===null&&(fi=new n(0)),fi}static instance(e){return e===0?n.utcInstance:new n(e)}static parseSpecifier(e){if(e){let t=e.match(/^utc(?:([+-]\\d{1,2})(?::(\\d{2}))?)?$/i);if(t)return new n(Vt(t[1],t[2]))}return null}constructor(e){super(),this.fixed=e}get type(){return"fixed"}get name(){return this.fixed===0?"UTC":`UTC${vt(this.fixed,"narrow")}`}get ianaName(){return this.fixed===0?"Etc/UTC":`Etc/GMT${vt(-this.fixed,"narrow")}`}offsetName(){return this.name}formatOffset(e,t){return vt(this.fixed,t)}get isUniversal(){return!0}offset(){return this.fixed}equals(e){return e.type==="fixed"&&e.fixed===this.fixed}get isValid(){return!0}};var dn=class extends ke{constructor(e){super(),this.zoneName=e}get type(){return"invalid"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(){return null}formatOffset(){return""}offset(){return NaN}equals(){return!1}get isValid(){return!1}};function Ve(n,e){let t;if(W(n)||n===null)return e;if(n instanceof ke)return n;if(Bo(n)){let r=n.toLowerCase();return r==="local"||r==="system"?e:r==="utc"||r==="gmt"?he.utcInstance:he.parseSpecifier(r)||ge.create(n)}else return tt(n)?he.instance(n):typeof n=="object"&&n.offset&&typeof n.offset=="number"?n:new dn(n)}var Ho=()=>Date.now(),Jo="system",zo=null,Yo=null,Go=null,Zo,X=class{static get now(){return Ho}static set now(e){Ho=e}static set defaultZone(e){Jo=e}static get defaultZone(){return Ve(Jo,fn.instance)}static get defaultLocale(){return zo}static set defaultLocale(e){zo=e}static get defaultNumberingSystem(){return Yo}static set defaultNumberingSystem(e){Yo=e}static get defaultOutputCalendar(){return Go}static set defaultOutputCalendar(e){Go=e}static get throwOnInvalid(){return Zo}static set throwOnInvalid(e){Zo=e}static resetCaches(){ne.resetCache(),ge.resetCache()}};var Qo={};function Ll(n,e={}){let t=JSON.stringify([n,e]),r=Qo[t];return r||(r=new Intl.ListFormat(n,e),Qo[t]=r),r}var di={};function hi(n,e={}){let t=JSON.stringify([n,e]),r=di[t];return r||(r=new Intl.DateTimeFormat(n,e),di[t]=r),r}var pi={};function Nl(n,e={}){let t=JSON.stringify([n,e]),r=pi[t];return r||(r=new Intl.NumberFormat(n,e),pi[t]=r),r}var mi={};function Al(n,e={}){let o=e,{base:t}=o,r=Ys(o,["base"]),s=JSON.stringify([n,r]),i=mi[s];return i||(i=new Intl.RelativeTimeFormat(n,e),mi[s]=i),i}var ur=null;function Ml(){return ur||(ur=new Intl.DateTimeFormat().resolvedOptions().locale,ur)}function _l(n){let e=n.indexOf("-u-");if(e===-1)return[n];{let t,r=n.substring(0,e);try{t=hi(n).resolvedOptions()}catch(o){t=hi(r).resolvedOptions()}let{numberingSystem:s,calendar:i}=t;return[r,s,i]}}function Bl(n,e,t){return(t||e)&&(n+="-u",t&&(n+=`-ca-${t}`),e&&(n+=`-nu-${e}`)),n}function Pl(n){let e=[];for(let t=1;t<=12;t++){let r=q.utc(2016,t,1);e.push(n(r))}return e}function $l(n){let e=[];for(let t=1;t<=7;t++){let r=q.utc(2016,11,13+t);e.push(n(r))}return e}function Gr(n,e,t,r,s){let i=n.listingMode(t);return i==="error"?null:i==="en"?r(e):s(e)}function Rl(n){return n.numberingSystem&&n.numberingSystem!=="latn"?!1:n.numberingSystem==="latn"||!n.locale||n.locale.startsWith("en")||new Intl.DateTimeFormat(n.intl).resolvedOptions().numberingSystem==="latn"}var Di=class{constructor(e,t,r){this.padTo=r.padTo||0,this.floor=r.floor||!1;let a=r,{padTo:s,floor:i}=a,o=Ys(a,["padTo","floor"]);if(!t||Object.keys(o).length>0){let u=R({useGrouping:!1},r);r.padTo>0&&(u.minimumIntegerDigits=r.padTo),this.inf=Nl(e,u)}}format(e){if(this.inf){let t=this.floor?Math.floor(e):e;return this.inf.format(t)}else{let t=this.floor?Math.floor(e):an(e,3);return re(t,this.padTo)}}},yi=class{constructor(e,t,r){this.opts=r;let s;if(e.zone.isUniversal){let o=-1*(e.offset/60),a=o>=0?`Etc/GMT+${o}`:`Etc/GMT${o}`;e.offset!==0&&ge.create(a).valid?(s=a,this.dt=e):(s="UTC",r.timeZoneName?this.dt=e:this.dt=e.offset===0?e:q.fromMillis(e.ts+e.offset*60*1e3))}else e.zone.type==="system"?this.dt=e:(this.dt=e,s=e.zone.name);let i=R({},this.opts);s&&(i.timeZone=s),this.dtf=hi(t,i)}format(){return this.dtf.format(this.dt.toJSDate())}formatToParts(){return this.dtf.formatToParts(this.dt.toJSDate())}resolvedOptions(){return this.dtf.resolvedOptions()}},gi=class{constructor(e,t,r){this.opts=R({style:"long"},r),!t&&Hr()&&(this.rtf=Al(e,r))}format(e,t){return this.rtf?this.rtf.format(e,t):Ko(t,e,this.opts.numeric,this.opts.style!=="long")}formatToParts(e,t){return this.rtf?this.rtf.formatToParts(e,t):[]}},ne=class n{static fromOpts(e){return n.create(e.locale,e.numberingSystem,e.outputCalendar,e.defaultToEN)}static create(e,t,r,s=!1){let i=e||X.defaultLocale,o=i||(s?"en-US":Ml()),a=t||X.defaultNumberingSystem,u=r||X.defaultOutputCalendar;return new n(o,a,u,i)}static resetCache(){ur=null,di={},pi={},mi={}}static fromObject({locale:e,numberingSystem:t,outputCalendar:r}={}){return n.create(e,t,r)}constructor(e,t,r,s){let[i,o,a]=_l(e);this.locale=i,this.numberingSystem=t||o||null,this.outputCalendar=r||a||null,this.intl=Bl(this.locale,this.numberingSystem,this.outputCalendar),this.weekdaysCache={format:{},standalone:{}},this.monthsCache={format:{},standalone:{}},this.meridiemCache=null,this.eraCache={},this.specifiedLocale=s,this.fastNumbersCached=null}get fastNumbers(){return this.fastNumbersCached==null&&(this.fastNumbersCached=Rl(this)),this.fastNumbersCached}listingMode(){let e=this.isEnglish(),t=(this.numberingSystem===null||this.numberingSystem==="latn")&&(this.outputCalendar===null||this.outputCalendar==="gregory");return e&&t?"en":"intl"}clone(e){return!e||Object.getOwnPropertyNames(e).length===0?this:n.create(e.locale||this.specifiedLocale,e.numberingSystem||this.numberingSystem,e.outputCalendar||this.outputCalendar,e.defaultToEN||!1)}redefaultToEN(e={}){return this.clone(ye(R({},e),{defaultToEN:!0}))}redefaultToSystem(e={}){return this.clone(ye(R({},e),{defaultToEN:!1}))}months(e,t=!1,r=!0){return Gr(this,e,r,ri,()=>{let s=t?{month:e,day:"numeric"}:{month:e},i=t?"format":"standalone";return this.monthsCache[i][e]||(this.monthsCache[i][e]=Pl(o=>this.extract(o,s,"month"))),this.monthsCache[i][e]})}weekdays(e,t=!1,r=!0){return Gr(this,e,r,oi,()=>{let s=t?{weekday:e,year:"numeric",month:"long",day:"numeric"}:{weekday:e},i=t?"format":"standalone";return this.weekdaysCache[i][e]||(this.weekdaysCache[i][e]=$l(o=>this.extract(o,s,"weekday"))),this.weekdaysCache[i][e]})}meridiems(e=!0){return Gr(this,void 0,e,()=>ai,()=>{if(!this.meridiemCache){let t={hour:"numeric",hourCycle:"h12"};this.meridiemCache=[q.utc(2016,11,13,9),q.utc(2016,11,13,19)].map(r=>this.extract(r,t,"dayperiod"))}return this.meridiemCache})}eras(e,t=!0){return Gr(this,e,t,ui,()=>{let r={era:e};return this.eraCache[e]||(this.eraCache[e]=[q.utc(-40,1,1),q.utc(2017,1,1)].map(s=>this.extract(s,r,"era"))),this.eraCache[e]})}extract(e,t,r){let s=this.dtFormatter(e,t),i=s.formatToParts(),o=i.find(a=>a.type.toLowerCase()===r);return o?o.value:null}numberFormatter(e={}){return new Di(this.intl,e.forceSimple||this.fastNumbers,e)}dtFormatter(e,t={}){return new yi(e,this.intl,t)}relFormatter(e={}){return new gi(this.intl,this.isEnglish(),e)}listFormatter(e={}){return Ll(this.intl,e)}isEnglish(){return this.locale==="en"||this.locale.toLowerCase()==="en-us"||new Intl.DateTimeFormat(this.intl).resolvedOptions().locale.startsWith("en-us")}equals(e){return this.locale===e.locale&&this.numberingSystem===e.numberingSystem&&this.outputCalendar===e.outputCalendar}};function pn(...n){let e=n.reduce((t,r)=>t+r.source,"");return RegExp(`^${e}$`)}function mn(...n){return e=>n.reduce(([t,r,s],i)=>{let[o,a,u]=i(e,s);return[R(R({},t),o),a||r,u]},[{},null,1]).slice(0,2)}function Dn(n,...e){if(n==null)return[null,null];for(let[t,r]of e){let s=t.exec(n);if(s)return r(s)}return[null,null]}function ea(...n){return(e,t)=>{let r={},s;for(s=0;sh!==void 0&&(b||h&&f)?-h:h;return[{years:p(Ct(t)),months:p(Ct(r)),weeks:p(Ct(s)),days:p(Ct(i)),hours:p(Ct(o)),minutes:p(Ct(a)),seconds:p(Ct(u),u==="-0"),milliseconds:p(sr(l),d)}]}var Ql={GMT:0,EDT:-4*60,EST:-5*60,CDT:-5*60,CST:-6*60,MDT:-6*60,MST:-7*60,PDT:-7*60,PST:-8*60};function Ei(n,e,t,r,s,i,o){let a={year:e.length===2?or(Dt(e)):Dt(e),month:ni.indexOf(t)+1,day:Dt(r),hour:Dt(s),minute:Dt(i)};return o&&(a.second=Dt(o)),n&&(a.weekday=n.length>3?si.indexOf(n)+1:ii.indexOf(n)+1),a}var Xl=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|(?:([+-]\\d\\d)(\\d\\d)))$/;function ec(n){let[,e,t,r,s,i,o,a,u,l,f,d]=n,p=Ei(e,s,r,t,i,o,a),h;return u?h=Ql[u]:l?h=0:h=Vt(f,d),[p,new he(h)]}function tc(n){return n.replace(/\\([^()]*\\)|[\\n\\t]/g," ").replace(/(\\s\\s+)/g," ").trim()}var nc=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\\d\\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\\d{4}) (\\d\\d):(\\d\\d):(\\d\\d) GMT$/,rc=/^(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\\d\\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\\d\\d) (\\d\\d):(\\d\\d):(\\d\\d) GMT$/,sc=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \\d|\\d\\d) (\\d\\d):(\\d\\d):(\\d\\d) (\\d{4})$/;function Xo(n){let[,e,t,r,s,i,o,a]=n;return[Ei(e,s,r,t,i,o,a),he.utcInstance]}function ic(n){let[,e,t,r,s,i,o,a]=n;return[Ei(e,a,t,r,s,i,o),he.utcInstance]}var oc=pn(ql,Fi),ac=pn(Vl,Fi),uc=pn(Ul,Fi),lc=pn(na),sa=mn(zl,yn,lr,cr),cc=mn(Kl,yn,lr,cr),fc=mn(Wl,yn,lr,cr),dc=mn(yn,lr,cr);function ia(n){return Dn(n,[oc,sa],[ac,cc],[uc,fc],[lc,dc])}function oa(n){return Dn(tc(n),[Xl,ec])}function aa(n){return Dn(n,[nc,Xo],[rc,Xo],[sc,ic])}function ua(n){return Dn(n,[Gl,Zl])}var hc=mn(yn);function la(n){return Dn(n,[Yl,hc])}var pc=pn(Hl,Jl),mc=pn(ra),Dc=mn(yn,lr,cr);function ca(n){return Dn(n,[pc,sa],[mc,Dc])}var yc="Invalid Duration",fa={weeks:{days:7,hours:7*24,minutes:7*24*60,seconds:7*24*60*60,milliseconds:7*24*60*60*1e3},days:{hours:24,minutes:24*60,seconds:24*60*60,milliseconds:24*60*60*1e3},hours:{minutes:60,seconds:60*60,milliseconds:60*60*1e3},minutes:{seconds:60,milliseconds:60*1e3},seconds:{milliseconds:1e3}},gc=R({years:{quarters:4,months:12,weeks:52,days:365,hours:365*24,minutes:365*24*60,seconds:365*24*60*60,milliseconds:365*24*60*60*1e3},quarters:{months:3,weeks:13,days:91,hours:91*24,minutes:91*24*60,seconds:91*24*60*60,milliseconds:91*24*60*60*1e3},months:{weeks:4,days:30,hours:30*24,minutes:30*24*60,seconds:30*24*60*60,milliseconds:30*24*60*60*1e3}},fa),Me=146097/400,gn=146097/4800,bc=R({years:{quarters:4,months:12,weeks:Me/7,days:Me,hours:Me*24,minutes:Me*24*60,seconds:Me*24*60*60,milliseconds:Me*24*60*60*1e3},quarters:{months:3,weeks:Me/28,days:Me/4,hours:Me*24/4,minutes:Me*24*60/4,seconds:Me*24*60*60/4,milliseconds:Me*24*60*60*1e3/4},months:{weeks:gn/7,days:gn,hours:gn*24,minutes:gn*24*60,seconds:gn*24*60*60,milliseconds:gn*24*60*60*1e3}},fa),Kt=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],Fc=Kt.slice(0).reverse();function Ut(n,e,t=!1){let r={values:t?e.values:R(R({},n.values),e.values||{}),loc:n.loc.clone(e.loc),conversionAccuracy:e.conversionAccuracy||n.conversionAccuracy};return new B(r)}function Ec(n){return n<0?Math.floor(n):Math.ceil(n)}function da(n,e,t,r,s){let i=n[s][t],o=e[t]/i,a=Math.sign(o)===Math.sign(r[s]),u=!a&&r[s]!==0&&Math.abs(o)<=1?Ec(o):Math.trunc(o);r[s]+=u,e[t]-=u*i}function wc(n,e){Fc.reduce((t,r)=>W(e[r])?t:(t&&da(n,e,t,e,r),r),null)}var B=class n{constructor(e){let t=e.conversionAccuracy==="longterm"||!1;this.values=e.values,this.loc=e.loc||ne.create(),this.conversionAccuracy=t?"longterm":"casual",this.invalid=e.invalid||null,this.matrix=t?bc:gc,this.isLuxonDuration=!0}static fromMillis(e,t){return n.fromObject({milliseconds:e},t)}static fromObject(e,t={}){if(e==null||typeof e!="object")throw new fe(`Duration.fromObject: argument expected to be an object, got ${e===null?"null":typeof e}`);return new n({values:cn(e,n.normalizeUnit),loc:ne.fromObject(t),conversionAccuracy:t.conversionAccuracy})}static fromDurationLike(e){if(tt(e))return n.fromMillis(e);if(n.isDuration(e))return e;if(typeof e=="object")return n.fromObject(e);throw new fe(`Unknown duration argument ${e} of type ${typeof e}`)}static fromISO(e,t){let[r]=ua(e);return r?n.fromObject(r,t):n.invalid("unparsable",`the input "${e}" can\'t be parsed as ISO 8601`)}static fromISOTime(e,t){let[r]=la(e);return r?n.fromObject(r,t):n.invalid("unparsable",`the input "${e}" can\'t be parsed as ISO 8601`)}static invalid(e,t=null){if(!e)throw new fe("need to specify a reason the Duration is invalid");let r=e instanceof de?e:new de(e,t);if(X.throwOnInvalid)throw new Wr(r);return new n({invalid:r})}static normalizeUnit(e){let t={year:"years",years:"years",quarter:"quarters",quarters:"quarters",month:"months",months:"months",week:"weeks",weeks:"weeks",day:"days",days:"days",hour:"hours",hours:"hours",minute:"minutes",minutes:"minutes",second:"seconds",seconds:"seconds",millisecond:"milliseconds",milliseconds:"milliseconds"}[e&&e.toLowerCase()];if(!t)throw new sn(e);return t}static isDuration(e){return e&&e.isLuxonDuration||!1}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}toFormat(e,t={}){let r=ye(R({},t),{floor:t.round!==!1&&t.floor!==!1});return this.isValid?we.create(this.loc,r).formatDurationFromString(this,e):yc}toHuman(e={}){let t=Kt.map(r=>{let s=this.values[r];return W(s)?null:this.loc.numberFormatter(ye(R({style:"unit",unitDisplay:"long"},e),{unit:r.slice(0,-1)})).format(s)}).filter(r=>r);return this.loc.listFormatter(R({type:"conjunction",style:e.listStyle||"narrow"},e)).format(t)}toObject(){return this.isValid?R({},this.values):{}}toISO(){if(!this.isValid)return null;let e="P";return this.years!==0&&(e+=this.years+"Y"),(this.months!==0||this.quarters!==0)&&(e+=this.months+this.quarters*3+"M"),this.weeks!==0&&(e+=this.weeks+"W"),this.days!==0&&(e+=this.days+"D"),(this.hours!==0||this.minutes!==0||this.seconds!==0||this.milliseconds!==0)&&(e+="T"),this.hours!==0&&(e+=this.hours+"H"),this.minutes!==0&&(e+=this.minutes+"M"),(this.seconds!==0||this.milliseconds!==0)&&(e+=an(this.seconds+this.milliseconds/1e3,3)+"S"),e==="P"&&(e+="T0S"),e}toISOTime(e={}){if(!this.isValid)return null;let t=this.toMillis();if(t<0||t>=864e5)return null;e=R({suppressMilliseconds:!1,suppressSeconds:!1,includePrefix:!1,format:"extended"},e);let r=this.shiftTo("hours","minutes","seconds","milliseconds"),s=e.format==="basic"?"hhmm":"hh:mm";(!e.suppressSeconds||r.seconds!==0||r.milliseconds!==0)&&(s+=e.format==="basic"?"ss":":ss",(!e.suppressMilliseconds||r.milliseconds!==0)&&(s+=".SSS"));let i=r.toFormat(s);return e.includePrefix&&(i="T"+i),i}toJSON(){return this.toISO()}toString(){return this.toISO()}toMillis(){return this.as("milliseconds")}valueOf(){return this.toMillis()}plus(e){if(!this.isValid)return this;let t=n.fromDurationLike(e),r={};for(let s of Kt)(kt(t.values,s)||kt(this.values,s))&&(r[s]=t.get(s)+this.get(s));return Ut(this,{values:r},!0)}minus(e){if(!this.isValid)return this;let t=n.fromDurationLike(e);return this.plus(t.negate())}mapUnits(e){if(!this.isValid)return this;let t={};for(let r of Object.keys(this.values))t[r]=ei(e(this.values[r],r));return Ut(this,{values:t},!0)}get(e){return this[n.normalizeUnit(e)]}set(e){if(!this.isValid)return this;let t=R(R({},this.values),cn(e,n.normalizeUnit));return Ut(this,{values:t})}reconfigure({locale:e,numberingSystem:t,conversionAccuracy:r}={}){let s=this.loc.clone({locale:e,numberingSystem:t}),i={loc:s};return r&&(i.conversionAccuracy=r),Ut(this,i)}as(e){return this.isValid?this.shiftTo(e).get(e):NaN}normalize(){if(!this.isValid)return this;let e=this.toObject();return wc(this.matrix,e),Ut(this,{values:e},!0)}shiftTo(...e){if(!this.isValid)return this;if(e.length===0)return this;e=e.map(o=>n.normalizeUnit(o));let t={},r={},s=this.toObject(),i;for(let o of Kt)if(e.indexOf(o)>=0){i=o;let a=0;for(let l in r)a+=this.matrix[l][o]*r[l],r[l]=0;tt(s[o])&&(a+=s[o]);let u=Math.trunc(a);t[o]=u,r[o]=(a*1e3-u*1e3)/1e3;for(let l in s)Kt.indexOf(l)>Kt.indexOf(o)&&da(this.matrix,s,l,t,o)}else tt(s[o])&&(r[o]=s[o]);for(let o in r)r[o]!==0&&(t[i]+=o===i?r[o]:r[o]/this.matrix[i][o]);return Ut(this,{values:t},!0).normalize()}negate(){if(!this.isValid)return this;let e={};for(let t of Object.keys(this.values))e[t]=this.values[t]===0?0:-this.values[t];return Ut(this,{values:e},!0)}get years(){return this.isValid?this.values.years||0:NaN}get quarters(){return this.isValid?this.values.quarters||0:NaN}get months(){return this.isValid?this.values.months||0:NaN}get weeks(){return this.isValid?this.values.weeks||0:NaN}get days(){return this.isValid?this.values.days||0:NaN}get hours(){return this.isValid?this.values.hours||0:NaN}get minutes(){return this.isValid?this.values.minutes||0:NaN}get seconds(){return this.isValid?this.values.seconds||0:NaN}get milliseconds(){return this.isValid?this.values.milliseconds||0:NaN}get isValid(){return this.invalid===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}equals(e){if(!this.isValid||!e.isValid||!this.loc.equals(e.loc))return!1;function t(r,s){return r===void 0||r===0?s===void 0||s===0:r===s}for(let r of Kt)if(!t(this.values[r],e.values[r]))return!1;return!0}};var fr="Invalid Interval";function Tc(n,e){return!n||!n.isValid?yt.invalid("missing or invalid start"):!e||!e.isValid?yt.invalid("missing or invalid end"):ee:!1}isBefore(e){return this.isValid?this.e<=e:!1}contains(e){return this.isValid?this.s<=e&&this.e>e:!1}set({start:e,end:t}={}){return this.isValid?n.fromDateTimes(e||this.s,t||this.e):this}splitAt(...e){if(!this.isValid)return[];let t=e.map(bn).filter(o=>this.contains(o)).sort(),r=[],{s}=this,i=0;for(;s+this.e?this.e:o;r.push(n.fromDateTimes(s,a)),s=a,i+=1}return r}splitBy(e){let t=B.fromDurationLike(e);if(!this.isValid||!t.isValid||t.as("milliseconds")===0)return[];let{s:r}=this,s=1,i,o=[];for(;ru*s));i=+a>+this.e?this.e:a,o.push(n.fromDateTimes(r,i)),r=i,s+=1}return o}divideEqually(e){return this.isValid?this.splitBy(this.length()/e).slice(0,e):[]}overlaps(e){return this.e>e.s&&this.s=e.e:!1}equals(e){return!this.isValid||!e.isValid?!1:this.s.equals(e.s)&&this.e.equals(e.e)}intersection(e){if(!this.isValid)return this;let t=this.s>e.s?this.s:e.s,r=this.e=r?null:n.fromDateTimes(t,r)}union(e){if(!this.isValid)return this;let t=this.se.e?this.e:e.e;return n.fromDateTimes(t,r)}static merge(e){let[t,r]=e.sort((s,i)=>s.s-i.s).reduce(([s,i],o)=>i?i.overlaps(o)||i.abutsStart(o)?[s,i.union(o)]:[s.concat([i]),o]:[s,o],[[],null]);return r&&t.push(r),t}static xor(e){let t=null,r=0,s=[],i=e.map(u=>[{time:u.s,type:"s"},{time:u.e,type:"e"}]),o=Array.prototype.concat(...i),a=o.sort((u,l)=>u.time-l.time);for(let u of a)r+=u.type==="s"?1:-1,r===1?t=u.time:(t&&+t!=+u.time&&s.push(n.fromDateTimes(t,u.time)),t=null);return n.merge(s)}difference(...e){return n.xor([this].concat(e)).map(t=>this.intersection(t)).filter(t=>t&&!t.isEmpty())}toString(){return this.isValid?`[${this.s.toISO()} \\u2013 ${this.e.toISO()})`:fr}toISO(e){return this.isValid?`${this.s.toISO(e)}/${this.e.toISO(e)}`:fr}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:fr}toISOTime(e){return this.isValid?`${this.s.toISOTime(e)}/${this.e.toISOTime(e)}`:fr}toFormat(e,{separator:t=" \\u2013 "}={}){return this.isValid?`${this.s.toFormat(e)}${t}${this.e.toFormat(e)}`:fr}toDuration(e,t){return this.isValid?this.e.diff(this.s,e,t):B.invalid(this.invalidReason)}mapEndpoints(e){return n.fromDateTimes(e(this.s),e(this.e))}};var gt=class{static hasDST(e=X.defaultZone){let t=q.now().setZone(e).set({month:12});return!e.isUniversal&&t.offset!==t.set({month:6}).offset}static isValidIANAZone(e){return ge.isValidZone(e)}static normalizeZone(e){return Ve(e,X.defaultZone)}static months(e="long",{locale:t=null,numberingSystem:r=null,locObj:s=null,outputCalendar:i="gregory"}={}){return(s||ne.create(t,r,i)).months(e)}static monthsFormat(e="long",{locale:t=null,numberingSystem:r=null,locObj:s=null,outputCalendar:i="gregory"}={}){return(s||ne.create(t,r,i)).months(e,!0)}static weekdays(e="long",{locale:t=null,numberingSystem:r=null,locObj:s=null}={}){return(s||ne.create(t,r,null)).weekdays(e)}static weekdaysFormat(e="long",{locale:t=null,numberingSystem:r=null,locObj:s=null}={}){return(s||ne.create(t,r,null)).weekdays(e,!0)}static meridiems({locale:e=null}={}){return ne.create(e).meridiems()}static eras(e="short",{locale:t=null}={}){return ne.create(t,null,"gregory").eras(e)}static features(){return{relative:Hr()}}};function ha(n,e){let t=s=>s.toUTC(0,{keepLocalTime:!0}).startOf("day").valueOf(),r=t(e)-t(n);return Math.floor(B.fromMillis(r).as("days"))}function Sc(n,e,t){let r=[["years",(a,u)=>u.year-a.year],["quarters",(a,u)=>u.quarter-a.quarter],["months",(a,u)=>u.month-a.month+(u.year-a.year)*12],["weeks",(a,u)=>{let l=ha(a,u);return(l-l%7)/7}],["days",ha]],s={},i,o;for(let[a,u]of r)if(t.indexOf(a)>=0){i=a;let l=u(n,e);o=n.plus({[a]:l}),o>e?(n=n.plus({[a]:l-1}),l-=1):n=o,s[a]=l}return[n,s,o,i]}function pa(n,e,t,r){let[s,i,o,a]=Sc(n,e,t),u=e-s,l=t.filter(d=>["hours","minutes","seconds","milliseconds"].indexOf(d)>=0);l.length===0&&(o0?B.fromMillis(u,r).shiftTo(...l).plus(f):f}var wi={arab:"[\\u0660-\\u0669]",arabext:"[\\u06F0-\\u06F9]",bali:"[\\u1B50-\\u1B59]",beng:"[\\u09E6-\\u09EF]",deva:"[\\u0966-\\u096F]",fullwide:"[\\uFF10-\\uFF19]",gujr:"[\\u0AE6-\\u0AEF]",hanidec:"[\\u3007|\\u4E00|\\u4E8C|\\u4E09|\\u56DB|\\u4E94|\\u516D|\\u4E03|\\u516B|\\u4E5D]",khmr:"[\\u17E0-\\u17E9]",knda:"[\\u0CE6-\\u0CEF]",laoo:"[\\u0ED0-\\u0ED9]",limb:"[\\u1946-\\u194F]",mlym:"[\\u0D66-\\u0D6F]",mong:"[\\u1810-\\u1819]",mymr:"[\\u1040-\\u1049]",orya:"[\\u0B66-\\u0B6F]",tamldec:"[\\u0BE6-\\u0BEF]",telu:"[\\u0C66-\\u0C6F]",thai:"[\\u0E50-\\u0E59]",tibt:"[\\u0F20-\\u0F29]",latn:"\\\\d"},ma={arab:[1632,1641],arabext:[1776,1785],bali:[6992,7001],beng:[2534,2543],deva:[2406,2415],fullwide:[65296,65303],gujr:[2790,2799],khmr:[6112,6121],knda:[3302,3311],laoo:[3792,3801],limb:[6470,6479],mlym:[3430,3439],mong:[6160,6169],mymr:[4160,4169],orya:[2918,2927],tamldec:[3046,3055],telu:[3174,3183],thai:[3664,3673],tibt:[3872,3881]},kc=wi.hanidec.replace(/[\\[|\\]]/g,"").split("");function Da(n){let e=parseInt(n,10);if(isNaN(e)){e="";for(let t=0;t=i&&r<=o&&(e+=r-i)}}return parseInt(e,10)}else return e}function _e({numberingSystem:n},e=""){return new RegExp(`${wi[n||"latn"]}${e}`)}var Cc="missing Intl.DateTimeFormat.formatToParts support";function G(n,e=t=>t){return{regex:n,deser:([t])=>e(Da(t))}}var vc="\\xA0",ba=`[ ${vc}]`,Fa=new RegExp(ba,"g");function Oc(n){return n.replace(/\\./g,"\\\\.?").replace(Fa,ba)}function ya(n){return n.replace(/\\./g,"").replace(Fa," ").toLowerCase()}function Ue(n,e){return n===null?null:{regex:RegExp(n.map(Oc).join("|")),deser:([t])=>n.findIndex(r=>ya(t)===ya(r))+e}}function ga(n,e){return{regex:n,deser:([,t,r])=>Vt(t,r),groups:e}}function Ti(n){return{regex:n,deser:([e])=>e}}function xc(n){return n.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g,"\\\\$&")}function Ic(n,e){let t=_e(e),r=_e(e,"{2}"),s=_e(e,"{3}"),i=_e(e,"{4}"),o=_e(e,"{6}"),a=_e(e,"{1,2}"),u=_e(e,"{1,3}"),l=_e(e,"{1,6}"),f=_e(e,"{1,9}"),d=_e(e,"{2,4}"),p=_e(e,"{4,6}"),h=D=>({regex:RegExp(xc(D.val)),deser:([T])=>T,literal:!0}),g=(D=>{if(n.literal)return h(D);switch(D.val){case"G":return Ue(e.eras("short",!1),0);case"GG":return Ue(e.eras("long",!1),0);case"y":return G(l);case"yy":return G(d,or);case"yyyy":return G(i);case"yyyyy":return G(p);case"yyyyyy":return G(o);case"M":return G(a);case"MM":return G(r);case"MMM":return Ue(e.months("short",!0,!1),1);case"MMMM":return Ue(e.months("long",!0,!1),1);case"L":return G(a);case"LL":return G(r);case"LLL":return Ue(e.months("short",!1,!1),1);case"LLLL":return Ue(e.months("long",!1,!1),1);case"d":return G(a);case"dd":return G(r);case"o":return G(u);case"ooo":return G(s);case"HH":return G(r);case"H":return G(a);case"hh":return G(r);case"h":return G(a);case"mm":return G(r);case"m":return G(a);case"q":return G(a);case"qq":return G(r);case"s":return G(a);case"ss":return G(r);case"S":return G(u);case"SSS":return G(s);case"u":return Ti(f);case"uu":return Ti(a);case"uuu":return G(t);case"a":return Ue(e.meridiems(),0);case"kkkk":return G(i);case"kk":return G(d,or);case"W":return G(a);case"WW":return G(r);case"E":case"c":return G(t);case"EEE":return Ue(e.weekdays("short",!1,!1),1);case"EEEE":return Ue(e.weekdays("long",!1,!1),1);case"ccc":return Ue(e.weekdays("short",!0,!1),1);case"cccc":return Ue(e.weekdays("long",!0,!1),1);case"Z":case"ZZ":return ga(new RegExp(`([+-]${a.source})(?::(${r.source}))?`),2);case"ZZZ":return ga(new RegExp(`([+-]${a.source})(${r.source})?`),2);case"z":return Ti(/[a-z_+-/]{1,256}?/i);default:return h(D)}})(n)||{invalidReason:Cc};return g.token=n,g}var Lc={year:{"2-digit":"yy",numeric:"yyyyy"},month:{numeric:"M","2-digit":"MM",short:"MMM",long:"MMMM"},day:{numeric:"d","2-digit":"dd"},weekday:{short:"EEE",long:"EEEE"},dayperiod:"a",dayPeriod:"a",hour:{numeric:"h","2-digit":"hh"},minute:{numeric:"m","2-digit":"mm"},second:{numeric:"s","2-digit":"ss"}};function Nc(n,e,t){let{type:r,value:s}=n;if(r==="literal")return{literal:!0,val:s};let i=t[r],o=Lc[r];if(typeof o=="object"&&(o=o[i]),o)return{literal:!1,val:o}}function Ac(n){return[`^${n.map(t=>t.regex).reduce((t,r)=>`${t}(${r.source})`,"")}$`,n]}function Mc(n,e,t){let r=n.match(e);if(r){let s={},i=1;for(let o in t)if(kt(t,o)){let a=t[o],u=a.groups?a.groups+1:1;!a.literal&&a.token&&(s[a.token.val[0]]=a.deser(r.slice(i,i+u))),i+=u}return[r,s]}else return[r,{}]}function _c(n){let e=i=>{switch(i){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":case"H":return"hour";case"d":return"day";case"o":return"ordinal";case"L":case"M":return"month";case"y":return"year";case"E":case"c":return"weekday";case"W":return"weekNumber";case"k":return"weekYear";case"q":return"quarter";default:return null}},t=null,r;return W(n.z)||(t=ge.create(n.z)),W(n.Z)||(t||(t=new he(n.Z)),r=n.Z),W(n.q)||(n.M=(n.q-1)*3+1),W(n.h)||(n.h<12&&n.a===1?n.h+=12:n.h===12&&n.a===0&&(n.h=0)),n.G===0&&n.y&&(n.y=-n.y),W(n.u)||(n.S=sr(n.u)),[Object.keys(n).reduce((i,o)=>{let a=e(o);return a&&(i[a]=n[o]),i},{}),t,r]}var Si=null;function Bc(){return Si||(Si=q.fromMillis(1555555555555)),Si}function Pc(n,e){if(n.literal)return n;let t=we.macroTokenToFormatOpts(n.val);if(!t)return n;let i=we.create(e,t).formatDateTimeParts(Bc()).map(o=>Nc(o,e,t));return i.includes(void 0)?n:i}function $c(n,e){return Array.prototype.concat(...n.map(t=>Pc(t,e)))}function ki(n,e,t){let r=$c(we.parseFormat(t),n),s=r.map(o=>Ic(o,n)),i=s.find(o=>o.invalidReason);if(i)return{input:e,tokens:r,invalidReason:i.invalidReason};{let[o,a]=Ac(s),u=RegExp(o,"i"),[l,f]=Mc(e,u,a),[d,p,h]=f?_c(f):[null,null,void 0];if(kt(f,"a")&&kt(f,"H"))throw new mt("Can\'t include meridiem when specifying 24-hour format");return{input:e,tokens:r,regex:u,rawMatches:l,matches:f,result:d,zone:p,specificOffset:h}}}function Ea(n,e,t){let{result:r,zone:s,specificOffset:i,invalidReason:o}=ki(n,e,t);return[r,s,i,o]}var wa=[0,31,59,90,120,151,181,212,243,273,304,334],Ta=[0,31,60,91,121,152,182,213,244,274,305,335];function Be(n,e){return new de("unit out of range",`you specified ${e} (of type ${typeof e}) as a ${n}, which is invalid`)}function Sa(n,e,t){let r=new Date(Date.UTC(n,e-1,t));n<100&&n>=0&&r.setUTCFullYear(r.getUTCFullYear()-1900);let s=r.getUTCDay();return s===0?7:s}function ka(n,e,t){return t+(jt(n)?Ta:wa)[e-1]}function Ca(n,e){let t=jt(n)?Ta:wa,r=t.findIndex(i=>iln(e)?(a=e+1,o=1):a=e,R({weekYear:a,weekNumber:o,weekday:i},ar(n))}function Ci(n){let{weekYear:e,weekNumber:t,weekday:r}=n,s=Sa(e,1,4),i=qt(e),o=t*7+r-s-3,a;o<1?(a=e-1,o+=qt(a)):o>i?(a=e+1,o-=qt(e)):a=e;let{month:u,day:l}=Ca(a,o);return R({year:a,month:u,day:l},ar(n))}function Qr(n){let{year:e,month:t,day:r}=n,s=ka(e,t,r);return R({year:e,ordinal:s},ar(n))}function vi(n){let{year:e,ordinal:t}=n,{month:r,day:s}=Ca(e,t);return R({year:e,month:r,day:s},ar(n))}function va(n){let e=rr(n.weekYear),t=nt(n.weekNumber,1,ln(n.weekYear)),r=nt(n.weekday,1,7);return e?t?r?!1:Be("weekday",n.weekday):Be("week",n.week):Be("weekYear",n.weekYear)}function Oa(n){let e=rr(n.year),t=nt(n.ordinal,1,qt(n.year));return e?t?!1:Be("ordinal",n.ordinal):Be("year",n.year)}function Oi(n){let e=rr(n.year),t=nt(n.month,1,12),r=nt(n.day,1,un(n.year,n.month));return e?t?r?!1:Be("day",n.day):Be("month",n.month):Be("year",n.year)}function xi(n){let{hour:e,minute:t,second:r,millisecond:s}=n,i=nt(e,0,23)||e===24&&t===0&&r===0&&s===0,o=nt(t,0,59),a=nt(r,0,59),u=nt(s,0,999);return i?o?a?u?!1:Be("millisecond",s):Be("second",r):Be("minute",t):Be("hour",e)}var Ii="Invalid DateTime",xa=864e13;function Xr(n){return new de("unsupported zone",`the zone "${n.name}" is not supported`)}function Li(n){return n.weekData===null&&(n.weekData=Zr(n.c)),n.weekData}function dr(n,e){let t={ts:n.ts,zone:n.zone,c:n.c,o:n.o,loc:n.loc,invalid:n.invalid};return new q(ye(R(R({},t),e),{old:t}))}function Pa(n,e,t){let r=n-e*60*1e3,s=t.offset(r);if(e===s)return[r,e];r-=(s-e)*60*1e3;let i=t.offset(r);return s===i?[r,s]:[n-Math.min(s,i)*60*1e3,Math.max(s,i)]}function Ia(n,e){n+=e*60*1e3;let t=new Date(n);return{year:t.getUTCFullYear(),month:t.getUTCMonth()+1,day:t.getUTCDate(),hour:t.getUTCHours(),minute:t.getUTCMinutes(),second:t.getUTCSeconds(),millisecond:t.getUTCMilliseconds()}}function ts(n,e,t){return Pa(ir(n),e,t)}function La(n,e){let t=n.o,r=n.c.year+Math.trunc(e.years),s=n.c.month+Math.trunc(e.months)+Math.trunc(e.quarters)*3,i=ye(R({},n.c),{year:r,month:s,day:Math.min(n.c.day,un(r,s))+Math.trunc(e.days)+Math.trunc(e.weeks)*7}),o=B.fromObject({years:e.years-Math.trunc(e.years),quarters:e.quarters-Math.trunc(e.quarters),months:e.months-Math.trunc(e.months),weeks:e.weeks-Math.trunc(e.weeks),days:e.days-Math.trunc(e.days),hours:e.hours,minutes:e.minutes,seconds:e.seconds,milliseconds:e.milliseconds}).as("milliseconds"),a=ir(i),[u,l]=Pa(a,t,n.zone);return o!==0&&(u+=o,l=n.zone.offset(u)),{ts:u,o:l}}function hr(n,e,t,r,s,i){let{setZone:o,zone:a}=t;if(n&&Object.keys(n).length!==0){let u=e||a,l=q.fromObject(n,ye(R({},t),{zone:u,specificOffset:i}));return o?l:l.setZone(a)}else return q.invalid(new de("unparsable",`the input "${s}" can\'t be parsed as ${r}`))}function es(n,e,t=!0){return n.isValid?we.create(ne.create("en-US"),{allowZ:t,forceSimple:!0}).formatDateTimeFromString(n,e):null}function Ni(n,e){let t=n.c.year>9999||n.c.year<0,r="";return t&&n.c.year>=0&&(r+="+"),r+=re(n.c.year,t?6:4),e?(r+="-",r+=re(n.c.month),r+="-",r+=re(n.c.day)):(r+=re(n.c.month),r+=re(n.c.day)),r}function Na(n,e,t,r,s,i){let o=re(n.c.hour);return e?(o+=":",o+=re(n.c.minute),(n.c.second!==0||!t)&&(o+=":")):o+=re(n.c.minute),(n.c.second!==0||!t)&&(o+=re(n.c.second),(n.c.millisecond!==0||!r)&&(o+=".",o+=re(n.c.millisecond,3))),s&&(n.isOffsetFixed&&n.offset===0&&!i?o+="Z":n.o<0?(o+="-",o+=re(Math.trunc(-n.o/60)),o+=":",o+=re(Math.trunc(-n.o%60))):(o+="+",o+=re(Math.trunc(n.o/60)),o+=":",o+=re(Math.trunc(n.o%60)))),i&&(o+="["+n.zone.ianaName+"]"),o}var $a={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},Rc={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},jc={ordinal:1,hour:0,minute:0,second:0,millisecond:0},Ra=["year","month","day","hour","minute","second","millisecond"],qc=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],Vc=["year","ordinal","hour","minute","second","millisecond"];function Aa(n){let e={year:"year",years:"year",month:"month",months:"month",day:"day",days:"day",hour:"hour",hours:"hour",minute:"minute",minutes:"minute",quarter:"quarter",quarters:"quarter",second:"second",seconds:"second",millisecond:"millisecond",milliseconds:"millisecond",weekday:"weekday",weekdays:"weekday",weeknumber:"weekNumber",weeksnumber:"weekNumber",weeknumbers:"weekNumber",weekyear:"weekYear",weekyears:"weekYear",ordinal:"ordinal"}[n.toLowerCase()];if(!e)throw new sn(n);return e}function Ma(n,e){let t=Ve(e.zone,X.defaultZone),r=ne.fromObject(e),s=X.now(),i,o;if(W(n.year))i=s;else{for(let l of Ra)W(n[l])&&(n[l]=$a[l]);let a=Oi(n)||xi(n);if(a)return q.invalid(a);let u=t.offset(s);[i,o]=ts(n,u,t)}return new q({ts:i,zone:t,loc:r,o})}function _a(n,e,t){let r=W(t.round)?!0:t.round,s=(o,a)=>(o=an(o,r||t.calendary?0:2,!0),e.loc.clone(t).relFormatter(t).format(o,a)),i=o=>t.calendary?e.hasSame(n,o)?0:e.startOf(o).diff(n.startOf(o),o).get(o):e.diff(n,o).get(o);if(t.unit)return s(i(t.unit),t.unit);for(let o of t.units){let a=i(o);if(Math.abs(a)>=1)return s(a,o)}return s(n>e?-0:0,t.units[t.units.length-1])}function Ba(n){let e={},t;return n.length>0&&typeof n[n.length-1]=="object"?(e=n[n.length-1],t=Array.from(n).slice(0,n.length-1)):t=Array.from(n),[e,t]}var q=class n{constructor(e){let t=e.zone||X.defaultZone,r=e.invalid||(Number.isNaN(e.ts)?new de("invalid input"):null)||(t.isValid?null:Xr(t));this.ts=W(e.ts)?X.now():e.ts;let s=null,i=null;if(!r)if(e.old&&e.old.ts===this.ts&&e.old.zone.equals(t))[s,i]=[e.old.c,e.old.o];else{let a=t.offset(this.ts);s=Ia(this.ts,a),r=Number.isNaN(s.year)?new de("invalid input"):null,s=r?null:s,i=r?null:a}this._zone=t,this.loc=e.loc||ne.create(),this.invalid=r,this.weekData=null,this.c=s,this.o=i,this.isLuxonDateTime=!0}static now(){return new n({})}static local(){let[e,t]=Ba(arguments),[r,s,i,o,a,u,l]=t;return Ma({year:r,month:s,day:i,hour:o,minute:a,second:u,millisecond:l},e)}static utc(){let[e,t]=Ba(arguments),[r,s,i,o,a,u,l]=t;return e.zone=he.utcInstance,Ma({year:r,month:s,day:i,hour:o,minute:a,second:u,millisecond:l},e)}static fromJSDate(e,t={}){let r=Po(e)?e.valueOf():NaN;if(Number.isNaN(r))return n.invalid("invalid input");let s=Ve(t.zone,X.defaultZone);return s.isValid?new n({ts:r,zone:s,loc:ne.fromObject(t)}):n.invalid(Xr(s))}static fromMillis(e,t={}){if(tt(e))return e<-xa||e>xa?n.invalid("Timestamp out of range"):new n({ts:e,zone:Ve(t.zone,X.defaultZone),loc:ne.fromObject(t)});throw new fe(`fromMillis requires a numerical input, but received a ${typeof e} with value ${e}`)}static fromSeconds(e,t={}){if(tt(e))return new n({ts:e*1e3,zone:Ve(t.zone,X.defaultZone),loc:ne.fromObject(t)});throw new fe("fromSeconds requires a numerical input")}static fromObject(e,t={}){e=e||{};let r=Ve(t.zone,X.defaultZone);if(!r.isValid)return n.invalid(Xr(r));let s=X.now(),i=W(t.specificOffset)?r.offset(s):t.specificOffset,o=cn(e,Aa),a=!W(o.ordinal),u=!W(o.year),l=!W(o.month)||!W(o.day),f=u||l,d=o.weekYear||o.weekNumber,p=ne.fromObject(t);if((f||a)&&d)throw new mt("Can\'t mix weekYear/weekNumber units with year/month/day or ordinals");if(l&&a)throw new mt("Can\'t mix ordinal dates with month/day");let h=d||o.weekday&&!f,b,g,D=Ia(s,i);h?(b=qc,g=Rc,D=Zr(D)):a?(b=Vc,g=jc,D=Qr(D)):(b=Ra,g=$a);let T=!1;for(let C of b){let V=o[C];W(V)?T?o[C]=g[C]:o[C]=D[C]:T=!0}let I=h?va(o):a?Oa(o):Oi(o),N=I||xi(o);if(N)return n.invalid(N);let y=h?Ci(o):a?vi(o):o,[w,v]=ts(y,i,r),O=new n({ts:w,zone:r,o:v,loc:p});return o.weekday&&f&&e.weekday!==O.weekday?n.invalid("mismatched weekday",`you can\'t specify both a weekday of ${o.weekday} and a date of ${O.toISO()}`):O}static fromISO(e,t={}){let[r,s]=ia(e);return hr(r,s,t,"ISO 8601",e)}static fromRFC2822(e,t={}){let[r,s]=oa(e);return hr(r,s,t,"RFC 2822",e)}static fromHTTP(e,t={}){let[r,s]=aa(e);return hr(r,s,t,"HTTP",t)}static fromFormat(e,t,r={}){if(W(e)||W(t))throw new fe("fromFormat requires an input string and a format");let{locale:s=null,numberingSystem:i=null}=r,o=ne.fromOpts({locale:s,numberingSystem:i,defaultToEN:!0}),[a,u,l,f]=Ea(o,e,t);return f?n.invalid(f):hr(a,u,r,`format ${t}`,e,l)}static fromString(e,t,r={}){return n.fromFormat(e,t,r)}static fromSQL(e,t={}){let[r,s]=ca(e);return hr(r,s,t,"SQL",e)}static invalid(e,t=null){if(!e)throw new fe("need to specify a reason the DateTime is invalid");let r=e instanceof de?e:new de(e,t);if(X.throwOnInvalid)throw new Ur(r);return new n({invalid:r})}static isDateTime(e){return e&&e.isLuxonDateTime||!1}get(e){return this[e]}get isValid(){return this.invalid===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}get outputCalendar(){return this.isValid?this.loc.outputCalendar:null}get zone(){return this._zone}get zoneName(){return this.isValid?this.zone.name:null}get year(){return this.isValid?this.c.year:NaN}get quarter(){return this.isValid?Math.ceil(this.c.month/3):NaN}get month(){return this.isValid?this.c.month:NaN}get day(){return this.isValid?this.c.day:NaN}get hour(){return this.isValid?this.c.hour:NaN}get minute(){return this.isValid?this.c.minute:NaN}get second(){return this.isValid?this.c.second:NaN}get millisecond(){return this.isValid?this.c.millisecond:NaN}get weekYear(){return this.isValid?Li(this).weekYear:NaN}get weekNumber(){return this.isValid?Li(this).weekNumber:NaN}get weekday(){return this.isValid?Li(this).weekday:NaN}get ordinal(){return this.isValid?Qr(this.c).ordinal:NaN}get monthShort(){return this.isValid?gt.months("short",{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?gt.months("long",{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?gt.weekdays("short",{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?gt.weekdays("long",{locObj:this.loc})[this.weekday-1]:null}get offset(){return this.isValid?+this.o:NaN}get offsetNameShort(){return this.isValid?this.zone.offsetName(this.ts,{format:"short",locale:this.locale}):null}get offsetNameLong(){return this.isValid?this.zone.offsetName(this.ts,{format:"long",locale:this.locale}):null}get isOffsetFixed(){return this.isValid?this.zone.isUniversal:null}get isInDST(){return this.isOffsetFixed?!1:this.offset>this.set({month:1,day:1}).offset||this.offset>this.set({month:5}).offset}get isInLeapYear(){return jt(this.year)}get daysInMonth(){return un(this.year,this.month)}get daysInYear(){return this.isValid?qt(this.year):NaN}get weeksInWeekYear(){return this.isValid?ln(this.weekYear):NaN}resolvedLocaleOptions(e={}){let{locale:t,numberingSystem:r,calendar:s}=we.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:t,numberingSystem:r,outputCalendar:s}}toUTC(e=0,t={}){return this.setZone(he.instance(e),t)}toLocal(){return this.setZone(X.defaultZone)}setZone(e,{keepLocalTime:t=!1,keepCalendarTime:r=!1}={}){if(e=Ve(e,X.defaultZone),e.equals(this.zone))return this;if(e.isValid){let s=this.ts;if(t||r){let i=e.offset(this.ts),o=this.toObject();[s]=ts(o,i,e)}return dr(this,{ts:s,zone:e})}else return n.invalid(Xr(e))}reconfigure({locale:e,numberingSystem:t,outputCalendar:r}={}){let s=this.loc.clone({locale:e,numberingSystem:t,outputCalendar:r});return dr(this,{loc:s})}setLocale(e){return this.reconfigure({locale:e})}set(e){if(!this.isValid)return this;let t=cn(e,Aa),r=!W(t.weekYear)||!W(t.weekNumber)||!W(t.weekday),s=!W(t.ordinal),i=!W(t.year),o=!W(t.month)||!W(t.day),a=i||o,u=t.weekYear||t.weekNumber;if((a||s)&&u)throw new mt("Can\'t mix weekYear/weekNumber units with year/month/day or ordinals");if(o&&s)throw new mt("Can\'t mix ordinal dates with month/day");let l;r?l=Ci(R(R({},Zr(this.c)),t)):W(t.ordinal)?(l=R(R({},this.toObject()),t),W(t.day)&&(l.day=Math.min(un(l.year,l.month),l.day))):l=vi(R(R({},Qr(this.c)),t));let[f,d]=ts(l,this.o,this.zone);return dr(this,{ts:f,o:d})}plus(e){if(!this.isValid)return this;let t=B.fromDurationLike(e);return dr(this,La(this,t))}minus(e){if(!this.isValid)return this;let t=B.fromDurationLike(e).negate();return dr(this,La(this,t))}startOf(e){if(!this.isValid)return this;let t={},r=B.normalizeUnit(e);switch(r){case"years":t.month=1;case"quarters":case"months":t.day=1;case"weeks":case"days":t.hour=0;case"hours":t.minute=0;case"minutes":t.second=0;case"seconds":t.millisecond=0;break;case"milliseconds":break}if(r==="weeks"&&(t.weekday=1),r==="quarters"){let s=Math.ceil(this.month/3);t.month=(s-1)*3+1}return this.set(t)}endOf(e){return this.isValid?this.plus({[e]:1}).startOf(e).minus(1):this}toFormat(e,t={}){return this.isValid?we.create(this.loc.redefaultToEN(t)).formatDateTimeFromString(this,e):Ii}toLocaleString(e=on,t={}){return this.isValid?we.create(this.loc.clone(t),e).formatDateTime(this):Ii}toLocaleParts(e={}){return this.isValid?we.create(this.loc.clone(e),e).formatDateTimeParts(this):[]}toISO({format:e="extended",suppressSeconds:t=!1,suppressMilliseconds:r=!1,includeOffset:s=!0,extendedZone:i=!1}={}){if(!this.isValid)return null;let o=e==="extended",a=Ni(this,o);return a+="T",a+=Na(this,o,t,r,s,i),a}toISODate({format:e="extended"}={}){return this.isValid?Ni(this,e==="extended"):null}toISOWeekDate(){return es(this,"kkkk-\'W\'WW-c")}toISOTime({suppressMilliseconds:e=!1,suppressSeconds:t=!1,includeOffset:r=!0,includePrefix:s=!1,extendedZone:i=!1,format:o="extended"}={}){return this.isValid?(s?"T":"")+Na(this,o==="extended",t,e,r,i):null}toRFC2822(){return es(this,"EEE, dd LLL yyyy HH:mm:ss ZZZ",!1)}toHTTP(){return es(this.toUTC(),"EEE, dd LLL yyyy HH:mm:ss \'GMT\'")}toSQLDate(){return this.isValid?Ni(this,!0):null}toSQLTime({includeOffset:e=!0,includeZone:t=!1,includeOffsetSpace:r=!0}={}){let s="HH:mm:ss.SSS";return(t||e)&&(r&&(s+=" "),t?s+="z":e&&(s+="ZZ")),es(this,s,!0)}toSQL(e={}){return this.isValid?`${this.toSQLDate()} ${this.toSQLTime(e)}`:null}toString(){return this.isValid?this.toISO():Ii}valueOf(){return this.toMillis()}toMillis(){return this.isValid?this.ts:NaN}toSeconds(){return this.isValid?this.ts/1e3:NaN}toUnixInteger(){return this.isValid?Math.floor(this.ts/1e3):NaN}toJSON(){return this.toISO()}toBSON(){return this.toJSDate()}toObject(e={}){if(!this.isValid)return{};let t=R({},this.c);return e.includeConfig&&(t.outputCalendar=this.outputCalendar,t.numberingSystem=this.loc.numberingSystem,t.locale=this.loc.locale),t}toJSDate(){return new Date(this.isValid?this.ts:NaN)}diff(e,t="milliseconds",r={}){if(!this.isValid||!e.isValid)return B.invalid("created by diffing an invalid DateTime");let s=R({locale:this.locale,numberingSystem:this.numberingSystem},r),i=$o(t).map(B.normalizeUnit),o=e.valueOf()>this.valueOf(),a=o?this:e,u=o?e:this,l=pa(a,u,i,s);return o?l.negate():l}diffNow(e="milliseconds",t={}){return this.diff(n.now(),e,t)}until(e){return this.isValid?yt.fromDateTimes(this,e):this}hasSame(e,t){if(!this.isValid)return!1;let r=e.valueOf(),s=this.setZone(e.zone,{keepLocalTime:!0});return s.startOf(t)<=r&&r<=s.endOf(t)}equals(e){return this.isValid&&e.isValid&&this.valueOf()===e.valueOf()&&this.zone.equals(e.zone)&&this.loc.equals(e.loc)}toRelative(e={}){if(!this.isValid)return null;let t=e.base||n.fromObject({},{zone:this.zone}),r=e.padding?thist.valueOf(),Math.min)}static max(...e){if(!e.every(n.isDateTime))throw new fe("max requires all arguments be DateTimes");return Xs(e,t=>t.valueOf(),Math.max)}static fromFormatExplain(e,t,r={}){let{locale:s=null,numberingSystem:i=null}=r,o=ne.fromOpts({locale:s,numberingSystem:i,defaultToEN:!0});return ki(o,e,t)}static fromStringExplain(e,t,r={}){return n.fromFormatExplain(e,t,r)}static get DATE_SHORT(){return on}static get DATE_MED(){return $n}static get DATE_MED_WITH_WEEKDAY(){return Gs}static get DATE_FULL(){return Rn}static get DATE_HUGE(){return jn}static get TIME_SIMPLE(){return qn}static get TIME_WITH_SECONDS(){return Vn}static get TIME_WITH_SHORT_OFFSET(){return Un}static get TIME_WITH_LONG_OFFSET(){return Kn}static get TIME_24_SIMPLE(){return Wn}static get TIME_24_WITH_SECONDS(){return Hn}static get TIME_24_WITH_SHORT_OFFSET(){return Jn}static get TIME_24_WITH_LONG_OFFSET(){return zn}static get DATETIME_SHORT(){return Yn}static get DATETIME_SHORT_WITH_SECONDS(){return Gn}static get DATETIME_MED(){return Zn}static get DATETIME_MED_WITH_SECONDS(){return Qn}static get DATETIME_MED_WITH_WEEKDAY(){return Zs}static get DATETIME_FULL(){return Xn}static get DATETIME_FULL_WITH_SECONDS(){return er}static get DATETIME_HUGE(){return tr}static get DATETIME_HUGE_WITH_SECONDS(){return nr}};function bn(n){if(q.isDateTime(n))return n;if(n&&n.valueOf&&tt(n.valueOf()))return q.fromJSDate(n);if(n&&typeof n=="object")return q.fromObject(n);throw new fe(`Unknown datetime argument: ${n}, of type ${typeof n}`)}var bt=Vr(ns());var Fn=()=>/[#*0-9]\\uFE0F?\\u20E3|[\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u23CF\\u23ED-\\u23EF\\u23F1\\u23F2\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB\\u25FC\\u25FE\\u2600-\\u2604\\u260E\\u2611\\u2614\\u2615\\u2618\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u2648-\\u2653\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u267F\\u2692\\u2694-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A7\\u26AA\\u26B0\\u26B1\\u26BD\\u26BE\\u26C4\\u26C8\\u26CF\\u26D1\\u26E9\\u26F0-\\u26F5\\u26F7\\u26F8\\u26FA\\u2702\\u2708\\u2709\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2733\\u2734\\u2744\\u2747\\u2757\\u2763\\u27A1\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B55\\u3030\\u303D\\u3297\\u3299]\\uFE0F?|[\\u261D\\u270C\\u270D](?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?|[\\u270A\\u270B](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u2693\\u26A1\\u26AB\\u26C5\\u26CE\\u26D4\\u26EA\\u26FD\\u2705\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2795-\\u2797\\u27B0\\u27BF\\u2B50]|\\u26D3\\uFE0F?(?:\\u200D\\uD83D\\uDCA5)?|\\u26F9(?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\u2764\\uFE0F?(?:\\u200D(?:\\uD83D\\uDD25|\\uD83E\\uDE79))?|\\uD83C(?:[\\uDC04\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDE02\\uDE37\\uDF21\\uDF24-\\uDF2C\\uDF36\\uDF7D\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E\\uDF9F\\uDFCD\\uDFCE\\uDFD4-\\uDFDF\\uDFF5\\uDFF7]\\uFE0F?|[\\uDF85\\uDFC2\\uDFC7](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDFC4\\uDFCA](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDFCB\\uDFCC](?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF43\\uDF45-\\uDF4A\\uDF4C-\\uDF7C\\uDF7E-\\uDF84\\uDF86-\\uDF93\\uDFA0-\\uDFC1\\uDFC5\\uDFC6\\uDFC8\\uDFC9\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF8-\\uDFFF]|\\uDDE6\\uD83C[\\uDDE8-\\uDDEC\\uDDEE\\uDDF1\\uDDF2\\uDDF4\\uDDF6-\\uDDFA\\uDDFC\\uDDFD\\uDDFF]|\\uDDE7\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEF\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9\\uDDFB\\uDDFC\\uDDFE\\uDDFF]|\\uDDE8\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDEE\\uDDF0-\\uDDF7\\uDDFA-\\uDDFF]|\\uDDE9\\uD83C[\\uDDEA\\uDDEC\\uDDEF\\uDDF0\\uDDF2\\uDDF4\\uDDFF]|\\uDDEA\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDED\\uDDF7-\\uDDFA]|\\uDDEB\\uD83C[\\uDDEE-\\uDDF0\\uDDF2\\uDDF4\\uDDF7]|\\uDDEC\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEE\\uDDF1-\\uDDF3\\uDDF5-\\uDDFA\\uDDFC\\uDDFE]|\\uDDED\\uD83C[\\uDDF0\\uDDF2\\uDDF3\\uDDF7\\uDDF9\\uDDFA]|\\uDDEE\\uD83C[\\uDDE8-\\uDDEA\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9]|\\uDDEF\\uD83C[\\uDDEA\\uDDF2\\uDDF4\\uDDF5]|\\uDDF0\\uD83C[\\uDDEA\\uDDEC-\\uDDEE\\uDDF2\\uDDF3\\uDDF5\\uDDF7\\uDDFC\\uDDFE\\uDDFF]|\\uDDF1\\uD83C[\\uDDE6-\\uDDE8\\uDDEE\\uDDF0\\uDDF7-\\uDDFB\\uDDFE]|\\uDDF2\\uD83C[\\uDDE6\\uDDE8-\\uDDED\\uDDF0-\\uDDFF]|\\uDDF3\\uD83C[\\uDDE6\\uDDE8\\uDDEA-\\uDDEC\\uDDEE\\uDDF1\\uDDF4\\uDDF5\\uDDF7\\uDDFA\\uDDFF]|\\uDDF4\\uD83C\\uDDF2|\\uDDF5\\uD83C[\\uDDE6\\uDDEA-\\uDDED\\uDDF0-\\uDDF3\\uDDF7-\\uDDF9\\uDDFC\\uDDFE]|\\uDDF6\\uD83C\\uDDE6|\\uDDF7\\uD83C[\\uDDEA\\uDDF4\\uDDF8\\uDDFA\\uDDFC]|\\uDDF8\\uD83C[\\uDDE6-\\uDDEA\\uDDEC-\\uDDF4\\uDDF7-\\uDDF9\\uDDFB\\uDDFD-\\uDDFF]|\\uDDF9\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDED\\uDDEF-\\uDDF4\\uDDF7\\uDDF9\\uDDFB\\uDDFC\\uDDFF]|\\uDDFA\\uD83C[\\uDDE6\\uDDEC\\uDDF2\\uDDF3\\uDDF8\\uDDFE\\uDDFF]|\\uDDFB\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDEE\\uDDF3\\uDDFA]|\\uDDFC\\uD83C[\\uDDEB\\uDDF8]|\\uDDFD\\uD83C\\uDDF0|\\uDDFE\\uD83C[\\uDDEA\\uDDF9]|\\uDDFF\\uD83C[\\uDDE6\\uDDF2\\uDDFC]|\\uDF44(?:\\u200D\\uD83D\\uDFEB)?|\\uDF4B(?:\\u200D\\uD83D\\uDFE9)?|\\uDFC3(?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D(?:[\\u2640\\u2642]\\uFE0F?(?:\\u200D\\u27A1\\uFE0F?)?|\\u27A1\\uFE0F?))?|\\uDFF3\\uFE0F?(?:\\u200D(?:\\u26A7\\uFE0F?|\\uD83C\\uDF08))?|\\uDFF4(?:\\u200D\\u2620\\uFE0F?|\\uDB40\\uDC67\\uDB40\\uDC62\\uDB40(?:\\uDC65\\uDB40\\uDC6E\\uDB40\\uDC67|\\uDC73\\uDB40\\uDC63\\uDB40\\uDC74|\\uDC77\\uDB40\\uDC6C\\uDB40\\uDC73)\\uDB40\\uDC7F)?)|\\uD83D(?:[\\uDC3F\\uDCFD\\uDD49\\uDD4A\\uDD6F\\uDD70\\uDD73\\uDD76-\\uDD79\\uDD87\\uDD8A-\\uDD8D\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA\\uDECB\\uDECD-\\uDECF\\uDEE0-\\uDEE5\\uDEE9\\uDEF0\\uDEF3]\\uFE0F?|[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDC8F\\uDC91\\uDCAA\\uDD7A\\uDD95\\uDD96\\uDE4C\\uDE4F\\uDEC0\\uDECC](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4\\uDEB5](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDD74\\uDD90](?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?|[\\uDC00-\\uDC07\\uDC09-\\uDC14\\uDC16-\\uDC25\\uDC27-\\uDC3A\\uDC3C-\\uDC3E\\uDC40\\uDC44\\uDC45\\uDC51-\\uDC65\\uDC6A\\uDC79-\\uDC7B\\uDC7D-\\uDC80\\uDC84\\uDC88-\\uDC8E\\uDC90\\uDC92-\\uDCA9\\uDCAB-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDDA4\\uDDFB-\\uDE2D\\uDE2F-\\uDE34\\uDE37-\\uDE41\\uDE43\\uDE44\\uDE48-\\uDE4A\\uDE80-\\uDEA2\\uDEA4-\\uDEB3\\uDEB7-\\uDEBF\\uDEC1-\\uDEC5\\uDED0-\\uDED2\\uDED5-\\uDED7\\uDEDC-\\uDEDF\\uDEEB\\uDEEC\\uDEF4-\\uDEFC\\uDFE0-\\uDFEB\\uDFF0]|\\uDC08(?:\\u200D\\u2B1B)?|\\uDC15(?:\\u200D\\uD83E\\uDDBA)?|\\uDC26(?:\\u200D(?:\\u2B1B|\\uD83D\\uDD25))?|\\uDC3B(?:\\u200D\\u2744\\uFE0F?)?|\\uDC41\\uFE0F?(?:\\u200D\\uD83D\\uDDE8\\uFE0F?)?|\\uDC68(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDC68\\uDC69]\\u200D\\uD83D(?:\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?)|[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?)|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFC-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFE])))?))?|\\uDC69(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?[\\uDC68\\uDC69]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?|\\uDC69\\u200D\\uD83D(?:\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?))|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFC-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB-\\uDFFE])))?))?|\\uDC6F(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\uDD75(?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\uDE2E(?:\\u200D\\uD83D\\uDCA8)?|\\uDE35(?:\\u200D\\uD83D\\uDCAB)?|\\uDE36(?:\\u200D\\uD83C\\uDF2B\\uFE0F?)?|\\uDE42(?:\\u200D[\\u2194\\u2195]\\uFE0F?)?|\\uDEB6(?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D(?:[\\u2640\\u2642]\\uFE0F?(?:\\u200D\\u27A1\\uFE0F?)?|\\u27A1\\uFE0F?))?)|\\uD83E(?:[\\uDD0C\\uDD0F\\uDD18-\\uDD1F\\uDD30-\\uDD34\\uDD36\\uDD77\\uDDB5\\uDDB6\\uDDBB\\uDDD2\\uDDD3\\uDDD5\\uDEC3-\\uDEC5\\uDEF0\\uDEF2-\\uDEF8](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD\\uDDCF\\uDDD4\\uDDD6-\\uDDDD](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDDDE\\uDDDF](?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDD0D\\uDD0E\\uDD10-\\uDD17\\uDD20-\\uDD25\\uDD27-\\uDD2F\\uDD3A\\uDD3F-\\uDD45\\uDD47-\\uDD76\\uDD78-\\uDDB4\\uDDB7\\uDDBA\\uDDBC-\\uDDCC\\uDDD0\\uDDE0-\\uDDFF\\uDE70-\\uDE7C\\uDE80-\\uDE89\\uDE8F-\\uDEC2\\uDEC6\\uDECE-\\uDEDC\\uDEDF-\\uDEE9]|\\uDD3C(?:\\u200D[\\u2640\\u2642]\\uFE0F?|\\uD83C[\\uDFFB-\\uDFFF])?|\\uDDCE(?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D(?:[\\u2640\\u2642]\\uFE0F?(?:\\u200D\\u27A1\\uFE0F?)?|\\u27A1\\uFE0F?))?|\\uDDD1(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1|\\uDDD1\\u200D\\uD83E\\uDDD2(?:\\u200D\\uD83E\\uDDD2)?|\\uDDD2(?:\\u200D\\uD83E\\uDDD2)?))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFC-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFD-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFD\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFE]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?))?|\\uDEF1(?:\\uD83C(?:\\uDFFB(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFC-\\uDFFF])?|\\uDFFC(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])?|\\uDFFD(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])?|\\uDFFE(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])?|\\uDFFF(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB-\\uDFFE])?))?)/g;function Mi(n){return n==null?n:n.shiftTo("years","months","weeks","days","hours","minutes","seconds","milliseconds").normalize()}function ja(n,e,t,r){return n.second==0&&n.minute==0&&n.hour==0?n.toLocal().toFormat(e,{locale:r}):n.toLocal().toFormat(t,{locale:r})}function qa(n){n=Mi(n);let e="";return n.years&&(e+=`${n.years} years, `),n.months&&(e+=`${n.months} months, `),n.weeks&&(e+=`${n.weeks} weeks, `),n.days&&(e+=`${n.days} days, `),n.hours&&(e+=`${n.hours} hours, `),n.minutes&&(e+=`${n.minutes} minutes, `),n.seconds&&(e+=`${Math.round(n.seconds)} seconds, `),n.milliseconds&&(e+=`${Math.round(n.milliseconds)} ms, `),e.endsWith(", ")&&(e=e.substring(0,e.length-2)),e}function En(n){return n.includes("/")&&(n=n.substring(n.lastIndexOf("/")+1)),n.endsWith(".md")&&(n=n.substring(0,n.length-3)),n}function Va(n){return n.includes(".")?n.substring(n.lastIndexOf(".")+1):""}var Uc=bt.alt(bt.regex(new RegExp(Fn(),"")),bt.regex(/[0-9\\p{Letter}_-]+/u),bt.whitespace.map(n=>" "),bt.any.map(n=>" ")).many().map(n=>n.join("").split(/\\s+/).join(" ").trim());function Ua(n){return Uc.tryParse(n)}var xe=class n{static file(e,t=!1,r){return new n({path:e,embed:t,display:r,subpath:void 0,type:"file"})}static infer(e,t=!1,r){if(e.includes("#^")){let s=e.split("#^");return n.block(s[0],s[1],t,r)}else if(e.includes("#")){let s=e.split("#");return n.header(s[0],s[1],t,r)}else return n.file(e,t,r)}static header(e,t,r,s){return new n({path:e,embed:r,display:s,subpath:Ua(t),type:"header"})}static block(e,t,r,s){return new n({path:e,embed:r,display:s,subpath:t,type:"block"})}static fromObject(e){return new n(e)}static parseInner(e){let[t,r]=Kc(e);return n.infer(t,!1,r)}constructor(e){Object.assign(this,e)}withPath(e){return new n(Object.assign({},this,{path:e}))}withDisplay(e){return new n(Object.assign({},this,{display:e}))}withEmbed(e){return this.embed==e?this:new n(Object.assign({},this,{embed:e}))}withHeader(e){return n.header(this.path,e,this.embed,this.display)}withBlock(e){return n.block(this.path,e,this.embed,this.display)}equals(e){return e==null||e==null?!1:this.path==e.path&&this.type==e.type&&this.subpath==e.subpath}toString(){return this.markdown()}toObject(){return{path:this.path,type:this.type,subpath:this.subpath,display:this.display,embed:this.embed}}toFile(){return n.file(this.path,this.embed,this.display)}toEmbed(){return this.withEmbed(!0)}fromEmbed(){return this.withEmbed(!1)}markdown(){let e=(this.embed?"!":"")+"[["+this.obsidianLink();return e+="|",e+=this.displayOrDefault(),e+="]]",e}displayOrDefault(){if(this.display)return this.display;{let e=En(this.path);return(this.type=="header"||this.type=="block")&&(e+=" > "+this.subpath),e}}obsidianLink(){var t,r;let e=this.path.replace("|","\\\\|");return this.type=="header"?e+"#"+((t=this.subpath)==null?void 0:t.replace("|","\\\\|")):this.type=="block"?e+"#^"+((r=this.subpath)==null?void 0:r.replace("|","\\\\|")):e}fileName(){return En(this.path)}};function Kc(n){let e=-1;for(;(e=n.indexOf("|",e+1))>=0;)if(!(e>0&&n[e-1]=="\\\\"))return[n.substring(0,e).replace(/\\\\\\|/g,"|"),n.substring(e+1)];return[n.replace(/\\\\\\|/g,"|"),void 0]}var rs=Symbol.for("yaml.alias"),ss=Symbol.for("yaml.document"),Ke=Symbol.for("yaml.map"),_i=Symbol.for("yaml.pair"),Ie=Symbol.for("yaml.scalar"),Ft=Symbol.for("yaml.seq"),Te=Symbol.for("yaml.node.type"),We=n=>!!n&&typeof n=="object"&&n[Te]===rs,rt=n=>!!n&&typeof n=="object"&&n[Te]===ss,He=n=>!!n&&typeof n=="object"&&n[Te]===Ke,H=n=>!!n&&typeof n=="object"&&n[Te]===_i,K=n=>!!n&&typeof n=="object"&&n[Te]===Ie,Je=n=>!!n&&typeof n=="object"&&n[Te]===Ft;function Z(n){if(n&&typeof n=="object")switch(n[Te]){case Ke:case Ft:return!0}return!1}function J(n){if(n&&typeof n=="object")switch(n[Te]){case rs:case Ke:case Ie:case Ft:return!0}return!1}var Ka=n=>(K(n)||Z(n))&&!!n.anchor;var Ce=Symbol("break visit"),Wa=Symbol("skip children"),st=Symbol("remove node");function ze(n,e){let t=Ha(e);rt(n)?wn(null,n.contents,t,Object.freeze([n]))===st&&(n.contents=null):wn(null,n,t,Object.freeze([]))}ze.BREAK=Ce;ze.SKIP=Wa;ze.REMOVE=st;function wn(n,e,t,r){let s=Ja(n,e,t,r);if(J(s)||H(s))return za(n,r,s),wn(n,s,t,r);if(typeof s!="symbol"){if(Z(e)){r=Object.freeze(r.concat(e));for(let i=0;in.replace(/[!,[\\]{}]/g,e=>Wc[e]),it=class n{constructor(e,t){this.docStart=null,this.docEnd=!1,this.yaml=Object.assign({},n.defaultYaml,e),this.tags=Object.assign({},n.defaultTags,t)}clone(){let e=new n(this.yaml,this.tags);return e.docStart=this.docStart,e}atDocument(){let e=new n(this.yaml,this.tags);switch(this.yaml.version){case"1.1":this.atNextDocument=!0;break;case"1.2":this.atNextDocument=!1,this.yaml={explicit:n.defaultYaml.explicit,version:"1.2"},this.tags=Object.assign({},n.defaultTags);break}return e}add(e,t){this.atNextDocument&&(this.yaml={explicit:n.defaultYaml.explicit,version:"1.1"},this.tags=Object.assign({},n.defaultTags),this.atNextDocument=!1);let r=e.trim().split(/[ \\t]+/),s=r.shift();switch(s){case"%TAG":{if(r.length!==2&&(t(0,"%TAG directive should contain exactly two parts"),r.length<2))return!1;let[i,o]=r;return this.tags[i]=o,!0}case"%YAML":{if(this.yaml.explicit=!0,r.length!==1)return t(0,"%YAML directive should contain exactly one part"),!1;let[i]=r;if(i==="1.1"||i==="1.2")return this.yaml.version=i,!0;{let o=/^\\d+\\.\\d+$/.test(i);return t(6,`Unsupported YAML version ${i}`,o),!1}}default:return t(0,`Unknown directive ${s}`,!0),!1}}tagName(e,t){if(e==="!")return"!";if(e[0]!=="!")return t(`Not a valid tag: ${e}`),null;if(e[1]==="<"){let o=e.slice(2,-1);return o==="!"||o==="!!"?(t(`Verbatim tags aren\'t resolved, so ${e} is invalid.`),null):(e[e.length-1]!==">"&&t("Verbatim tags must end with a >"),o)}let[,r,s]=e.match(new RegExp("^(.*!)([^!]*)$","s"));s||t(`The ${e} tag has no suffix`);let i=this.tags[r];if(i)try{return i+decodeURIComponent(s)}catch(o){return t(String(o)),null}return r==="!"?e:(t(`Could not resolve tag: ${e}`),null)}tagString(e){for(let[t,r]of Object.entries(this.tags))if(e.startsWith(r))return t+Hc(e.substring(r.length));return e[0]==="!"?e:`!<${e}>`}toString(e){let t=this.yaml.explicit?[`%YAML ${this.yaml.version||"1.2"}`]:[],r=Object.entries(this.tags),s;if(e&&r.length>0&&J(e.contents)){let i={};ze(e.contents,(o,a)=>{J(a)&&a.tag&&(i[a.tag]=!0)}),s=Object.keys(i)}else s=[];for(let[i,o]of r)i==="!!"&&o==="tag:yaml.org,2002:"||(!e||s.some(a=>a.startsWith(o)))&&t.push(`%TAG ${i} ${o}`);return t.join(`\n`)}};it.defaultYaml={explicit:!1,version:"1.2"};it.defaultTags={"!!":"tag:yaml.org,2002:"};function os(n){if(/[\\x00-\\x19\\s,[\\]{}]/.test(n)){let t=`Anchor must not contain whitespace or control characters: ${JSON.stringify(n)}`;throw new Error(t)}return!0}function Bi(n){let e=new Set;return ze(n,{Value(t,r){r.anchor&&e.add(r.anchor)}}),e}function Pi(n,e){for(let t=1;;++t){let r=`${n}${t}`;if(!e.has(r))return r}}function Ya(n,e){let t=[],r=new Map,s=null;return{onAnchor:i=>{t.push(i),s||(s=Bi(n));let o=Pi(e,s);return s.add(o),o},setAnchors:()=>{for(let i of t){let o=r.get(i);if(typeof o=="object"&&o.anchor&&(K(o.node)||Z(o.node)))o.node.anchor=o.anchor;else{let a=new Error("Failed to resolve repeated object (this should not happen)");throw a.source=i,a}}},sourceObjects:r}}function Ot(n,e,t,r){if(r&&typeof r=="object")if(Array.isArray(r))for(let s=0,i=r.length;sce(r,String(s),t));if(n&&typeof n.toJSON=="function"){if(!t||!Ka(n))return n.toJSON(e,t);let r={aliasCount:0,count:1,res:void 0};t.anchors.set(n,r),t.onCreate=i=>{r.res=i,delete t.onCreate};let s=n.toJSON(e,t);return t.onCreate&&t.onCreate(s),s}return typeof n=="bigint"&&!(t!=null&&t.keep)?Number(n):n}var xt=class{constructor(e){Object.defineProperty(this,Te,{value:e})}clone(){let e=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return this.range&&(e.range=this.range.slice()),e}toJS(e,{mapAsMap:t,maxAliasCount:r,onAnchor:s,reviver:i}={}){if(!rt(e))throw new TypeError("A document argument is required");let o={anchors:new Map,doc:e,keep:!0,mapAsMap:t===!0,mapKeyWarned:!1,maxAliasCount:typeof r=="number"?r:100},a=ce(this,"",o);if(typeof s=="function")for(let{count:u,res:l}of o.anchors.values())s(l,u);return typeof i=="function"?Ot(i,{"":a},"",a):a}};var Et=class extends xt{constructor(e){super(rs),this.source=e,Object.defineProperty(this,"tag",{set(){throw new Error("Alias nodes cannot have tags")}})}resolve(e){let t;return ze(e,{Node:(r,s)=>{if(s===this)return ze.BREAK;s.anchor===this.source&&(t=s)}}),t}toJSON(e,t){if(!t)return{source:this.source};let{anchors:r,doc:s,maxAliasCount:i}=t,o=this.resolve(s);if(!o){let u=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw new ReferenceError(u)}let a=r.get(o);if(a||(ce(o,null,t),a=r.get(o)),!a||a.res===void 0){let u="This should not happen: Alias anchor was not resolved?";throw new ReferenceError(u)}if(i>=0&&(a.count+=1,a.aliasCount===0&&(a.aliasCount=as(s,o,r)),a.count*a.aliasCount>i)){let u="Excessive alias count indicates a resource exhaustion attack";throw new ReferenceError(u)}return a.res}toString(e,t,r){let s=`*${this.source}`;if(e){if(os(this.source),e.options.verifyAliasOrder&&!e.anchors.has(this.source)){let i=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw new Error(i)}if(e.implicitKey)return`${s} `}return s}};function as(n,e,t){if(We(e)){let r=e.resolve(n),s=t&&r&&t.get(r);return s?s.count*s.aliasCount:0}else if(Z(e)){let r=0;for(let s of e.items){let i=as(n,s,t);i>r&&(r=i)}return r}else if(H(e)){let r=as(n,e.key,t),s=as(n,e.value,t);return Math.max(r,s)}return 1}var us=n=>!n||typeof n!="function"&&typeof n!="object",P=class extends xt{constructor(e){super(Ie),this.value=e}toJSON(e,t){return t!=null&&t.keep?this.value:ce(this.value,e,t)}toString(){return String(this.value)}};P.BLOCK_FOLDED="BLOCK_FOLDED";P.BLOCK_LITERAL="BLOCK_LITERAL";P.PLAIN="PLAIN";P.QUOTE_DOUBLE="QUOTE_DOUBLE";P.QUOTE_SINGLE="QUOTE_SINGLE";var Jc="tag:yaml.org,2002:";function zc(n,e,t){var r;if(e){let s=t.filter(o=>o.tag===e),i=(r=s.find(o=>!o.format))!=null?r:s[0];if(!i)throw new Error(`Tag ${e} not found`);return i}return t.find(s=>{var i;return((i=s.identify)==null?void 0:i.call(s,n))&&!s.format})}function wt(n,e,t){var d,p,h;if(rt(n)&&(n=n.contents),J(n))return n;if(H(n)){let b=(p=(d=t.schema[Ke]).createNode)==null?void 0:p.call(d,t.schema,null,t);return b.items.push(n),b}(n instanceof String||n instanceof Number||n instanceof Boolean||typeof BigInt!="undefined"&&n instanceof BigInt)&&(n=n.valueOf());let{aliasDuplicateObjects:r,onAnchor:s,onTagObj:i,schema:o,sourceObjects:a}=t,u;if(r&&n&&typeof n=="object"){if(u=a.get(n),u)return u.anchor||(u.anchor=s(n)),new Et(u.anchor);u={anchor:null,node:null},a.set(n,u)}e!=null&&e.startsWith("!!")&&(e=Jc+e.slice(2));let l=zc(n,e,o.tags);if(!l){if(n&&typeof n.toJSON=="function"&&(n=n.toJSON()),!n||typeof n!="object"){let b=new P(n);return u&&(u.node=b),b}l=n instanceof Map?o[Ke]:Symbol.iterator in Object(n)?o[Ft]:o[Ke]}i&&(i(l),delete t.onTagObj);let f=l!=null&&l.createNode?l.createNode(t.schema,n,t):typeof((h=l==null?void 0:l.nodeClass)==null?void 0:h.from)=="function"?l.nodeClass.from(t.schema,n,t):new P(n);return e?f.tag=e:l.default||(f.tag=l.tag),u&&(u.node=f),f}function mr(n,e,t){let r=t;for(let s=e.length-1;s>=0;--s){let i=e[s];if(typeof i=="number"&&Number.isInteger(i)&&i>=0){let o=[];o[i]=r,r=o}else r=new Map([[i,r]])}return wt(r,void 0,{aliasDuplicateObjects:!1,keepUndefined:!1,onAnchor:()=>{throw new Error("This should not happen, please report a bug.")},schema:n,sourceObjects:new Map})}var kn=n=>n==null||typeof n=="object"&&!!n[Symbol.iterator]().next().done,Sn=class extends xt{constructor(e,t){super(e),Object.defineProperty(this,"schema",{value:t,configurable:!0,enumerable:!1,writable:!0})}clone(e){let t=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return e&&(t.schema=e),t.items=t.items.map(r=>J(r)||H(r)?r.clone(e):r),this.range&&(t.range=this.range.slice()),t}addIn(e,t){if(kn(e))this.add(t);else{let[r,...s]=e,i=this.get(r,!0);if(Z(i))i.addIn(s,t);else if(i===void 0&&this.schema)this.set(r,mr(this.schema,s,t));else throw new Error(`Expected YAML collection at ${r}. Remaining path: ${s}`)}}deleteIn(e){let[t,...r]=e;if(r.length===0)return this.delete(t);let s=this.get(t,!0);if(Z(s))return s.deleteIn(r);throw new Error(`Expected YAML collection at ${t}. Remaining path: ${r}`)}getIn(e,t){let[r,...s]=e,i=this.get(r,!0);return s.length===0?!t&&K(i)?i.value:i:Z(i)?i.getIn(s,t):void 0}hasAllNullValues(e){return this.items.every(t=>{if(!H(t))return!1;let r=t.value;return r==null||e&&K(r)&&r.value==null&&!r.commentBefore&&!r.comment&&!r.tag})}hasIn(e){let[t,...r]=e;if(r.length===0)return this.has(t);let s=this.get(t,!0);return Z(s)?s.hasIn(r):!1}setIn(e,t){let[r,...s]=e;if(s.length===0)this.set(r,t);else{let i=this.get(r,!0);if(Z(i))i.setIn(s,t);else if(i===void 0&&this.schema)this.set(r,mr(this.schema,s,t));else throw new Error(`Expected YAML collection at ${r}. Remaining path: ${s}`)}}};var Ga=n=>n.replace(/^(?!$)(?: $)?/gm,"#");function Pe(n,e){return/^\\n+$/.test(n)?n.substring(1):e?n.replace(/^(?! *$)/gm,e):n}var ot=(n,e,t)=>n.endsWith(`\n`)?Pe(t,e):t.includes(`\n`)?`\n`+Pe(t,e):(n.endsWith(" ")?"":" ")+t;var $i="flow",ls="block",Dr="quoted";function yr(n,e,t="flow",{indentAtStart:r,lineWidth:s=80,minContentWidth:i=20,onFold:o,onOverflow:a}={}){if(!s||s<0)return n;ss-Math.max(2,i)?l.push(0):d=s-r);let p,h,b=!1,g=-1,D=-1,T=-1;t===ls&&(g=Za(n,g,e.length),g!==-1&&(d=g+u));for(let N;N=n[g+=1];){if(t===Dr&&N==="\\\\"){switch(D=g,n[g+1]){case"x":g+=3;break;case"u":g+=5;break;case"U":g+=9;break;default:g+=1}T=g}if(N===`\n`)t===ls&&(g=Za(n,g,e.length)),d=g+e.length+u,p=void 0;else{if(N===" "&&h&&h!==" "&&h!==`\n`&&h!==" "){let y=n[g+1];y&&y!==" "&&y!==`\n`&&y!==" "&&(p=g)}if(g>=d)if(p)l.push(p),d=p+u,p=void 0;else if(t===Dr){for(;h===" "||h===" ";)h=N,N=n[g+=1],b=!0;let y=g>T+1?g-2:D-1;if(f[y])return n;l.push(y),f[y]=!0,d=y+u,p=void 0}else b=!0}h=N}if(b&&a&&a(),l.length===0)return n;o&&o();let I=n.slice(0,l[0]);for(let N=0;N({indentAtStart:e?n.indent.length:n.indentAtStart,lineWidth:n.options.lineWidth,minContentWidth:n.options.minContentWidth}),ds=n=>/^(%|---|\\.\\.\\.)/m.test(n);function Yc(n,e,t){if(!e||e<0)return!1;let r=e-t,s=n.length;if(s<=r)return!1;for(let i=0,o=0;ir)return!0;if(o=i+1,s-o<=r)return!1}return!0}function gr(n,e){let t=JSON.stringify(n);if(e.options.doubleQuotedAsJSON)return t;let{implicitKey:r}=e,s=e.options.doubleQuotedMinMultiLineLength,i=e.indent||(ds(n)?" ":""),o="",a=0;for(let u=0,l=t[u];l;l=t[++u])if(l===" "&&t[u+1]==="\\\\"&&t[u+2]==="n"&&(o+=t.slice(a,u)+"\\\\ ",u+=1,a=u,l="\\\\"),l==="\\\\")switch(t[u+1]){case"u":{o+=t.slice(a,u);let f=t.substr(u+2,4);switch(f){case"0000":o+="\\\\0";break;case"0007":o+="\\\\a";break;case"000b":o+="\\\\v";break;case"001b":o+="\\\\e";break;case"0085":o+="\\\\N";break;case"00a0":o+="\\\\_";break;case"2028":o+="\\\\L";break;case"2029":o+="\\\\P";break;default:f.substr(0,2)==="00"?o+="\\\\x"+f.substr(2):o+=t.substr(u,6)}u+=5,a=u+1}break;case"n":if(r||t[u+2]===\'"\'||t.length\n`;let d,p;for(p=t.length;p>0;--p){let v=t[p-1];if(v!==`\n`&&v!==" "&&v!==" ")break}let h=t.substring(p),b=h.indexOf(`\n`);b===-1?d="-":t===h||b!==h.length-1?(d="+",i&&i()):d="",h&&(t=t.slice(0,-h.length),h[h.length-1]===`\n`&&(h=h.slice(0,-1)),h=h.replace(ji,`$&${l}`));let g=!1,D,T=-1;for(D=0;D")+(g?l?"2":"1":"")+d;if(n&&(y+=" "+a(n.replace(/ ?[\\r\\n]+/g," ")),s&&s()),f)return t=t.replace(/\\n+/g,`$&${l}`),`${y}\n${l}${I}${t}${h}`;t=t.replace(/\\n+/g,`\n$&`).replace(/(?:^|\\n)([\\t ].*)(?:([\\n\\t ]*)\\n(?![\\n\\t ]))?/g,"$1$2").replace(/\\n+/g,`$&${l}`);let w=yr(`${I}${t}${h}`,l,ls,fs(r,!0));return`${y}\n${l}${w}`}function Gc(n,e,t,r){let{type:s,value:i}=n,{actualString:o,implicitKey:a,indent:u,indentStep:l,inFlow:f}=e;if(a&&i.includes(`\n`)||f&&/[[\\]{},]/.test(i))return Cn(i,e);if(!i||/^[\\n\\t ,[\\]{}#&*!|>\'"%@`]|^[?-]$|^[?-][ \\t]|[\\n:][ \\t]|[ \\t]\\n|[\\n\\t ]#|[\\n\\t :]$/.test(i))return a||f||!i.includes(`\n`)?Cn(i,e):cs(n,e,t,r);if(!a&&!f&&s!==P.PLAIN&&i.includes(`\n`))return cs(n,e,t,r);if(ds(i)){if(u==="")return e.forceBlockIndent=!0,cs(n,e,t,r);if(a&&u===l)return Cn(i,e)}let d=i.replace(/\\n+/g,`$&\n${u}`);if(o){let p=g=>{var D;return g.default&&g.tag!=="tag:yaml.org,2002:str"&&((D=g.test)==null?void 0:D.test(d))},{compat:h,tags:b}=e.doc.schema;if(b.some(p)||h!=null&&h.some(p))return Cn(i,e)}return a?d:yr(d,u,$i,fs(e,!1))}function Wt(n,e,t,r){let{implicitKey:s,inFlow:i}=e,o=typeof n.value=="string"?n:Object.assign({},n,{value:String(n.value)}),{type:a}=n;a!==P.QUOTE_DOUBLE&&/[\\x00-\\x08\\x0b-\\x1f\\x7f-\\x9f\\u{D800}-\\u{DFFF}]/u.test(o.value)&&(a=P.QUOTE_DOUBLE);let u=f=>{switch(f){case P.BLOCK_FOLDED:case P.BLOCK_LITERAL:return s||i?Cn(o.value,e):cs(o,e,t,r);case P.QUOTE_DOUBLE:return gr(o.value,e);case P.QUOTE_SINGLE:return Ri(o.value,e);case P.PLAIN:return Gc(o,e,t,r);default:return null}},l=u(a);if(l===null){let{defaultKeyType:f,defaultStringType:d}=e.options,p=s&&f||d;if(l=u(p),l===null)throw new Error(`Unsupported default string type ${p}`)}return l}function hs(n,e){let t=Object.assign({blockQuote:!0,commentString:Ga,defaultKeyType:null,defaultStringType:"PLAIN",directives:null,doubleQuotedAsJSON:!1,doubleQuotedMinMultiLineLength:40,falseStr:"false",flowCollectionPadding:!0,indentSeq:!0,lineWidth:80,minContentWidth:20,nullStr:"null",simpleKeys:!1,singleQuote:null,trueStr:"true",verifyAliasOrder:!0},n.schema.toStringOptions,e),r;switch(t.collectionStyle){case"block":r=!1;break;case"flow":r=!0;break;default:r=null}return{anchors:new Set,doc:n,flowCollectionPadding:t.flowCollectionPadding?" ":"",indent:"",indentStep:typeof t.indent=="number"?" ".repeat(t.indent):" ",inFlow:r,options:t}}function Zc(n,e){var s,i,o,a;if(e.tag){let u=n.filter(l=>l.tag===e.tag);if(u.length>0)return(s=u.find(l=>l.format===e.format))!=null?s:u[0]}let t,r;if(K(e)){r=e.value;let u=n.filter(l=>{var f;return(f=l.identify)==null?void 0:f.call(l,r)});if(u.length>1){let l=u.filter(f=>f.test);l.length>0&&(u=l)}t=(i=u.find(l=>l.format===e.format))!=null?i:u.find(l=>!l.format)}else r=e,t=n.find(u=>u.nodeClass&&r instanceof u.nodeClass);if(!t){let u=(a=(o=r==null?void 0:r.constructor)==null?void 0:o.name)!=null?a:typeof r;throw new Error(`Tag not resolved for ${u} value`)}return t}function Qc(n,e,{anchors:t,doc:r}){if(!r.directives)return"";let s=[],i=(K(n)||Z(n))&&n.anchor;i&&os(i)&&(t.add(i),s.push(`&${i}`));let o=n.tag?n.tag:e.default?null:e.tag;return o&&s.push(r.directives.tagString(o)),s.join(" ")}function Tt(n,e,t,r){var u,l;if(H(n))return n.toString(e,t,r);if(We(n)){if(e.doc.directives)return n.toString(e);if((u=e.resolvedAliases)!=null&&u.has(n))throw new TypeError("Cannot stringify circular structure without alias nodes");e.resolvedAliases?e.resolvedAliases.add(n):e.resolvedAliases=new Set([n]),n=n.resolve(e.doc)}let s,i=J(n)?n:e.doc.createNode(n,{onTagObj:f=>s=f});s||(s=Zc(e.doc.schema.tags,i));let o=Qc(i,s,e);o.length>0&&(e.indentAtStart=((l=e.indentAtStart)!=null?l:0)+o.length+1);let a=typeof s.stringify=="function"?s.stringify(i,e,t,r):K(i)?Wt(i,e,t,r):i.toString(e,t,r);return o?K(i)||a[0]==="{"||a[0]==="["?`${o} ${a}`:`${o}\n${e.indent}${a}`:a}function Qa({key:n,value:e},t,r,s){var O,C;let{allNullValues:i,doc:o,indent:a,indentStep:u,options:{commentString:l,indentSeq:f,simpleKeys:d}}=t,p=J(n)&&n.comment||null;if(d){if(p)throw new Error("With simple keys, key nodes cannot have comments");if(Z(n)||!J(n)&&typeof n=="object"){let V="With simple keys, collection cannot be used as a key value";throw new Error(V)}}let h=!d&&(!n||p&&e==null&&!t.inFlow||Z(n)||(K(n)?n.type===P.BLOCK_FOLDED||n.type===P.BLOCK_LITERAL:typeof n=="object"));t=Object.assign({},t,{allNullValues:!1,implicitKey:!h&&(d||!i),indent:a+u});let b=!1,g=!1,D=Tt(n,t,()=>b=!0,()=>g=!0);if(!h&&!t.inFlow&&D.length>1024){if(d)throw new Error("With simple keys, single line scalar must not span more than 1024 characters");h=!0}if(t.inFlow){if(i||e==null)return b&&r&&r(),D===""?"?":h?`? ${D}`:D}else if(i&&!d||e==null&&h)return D=`? ${D}`,p&&!b?D+=ot(D,t.indent,l(p)):g&&s&&s(),D;b&&(p=null),h?(p&&(D+=ot(D,t.indent,l(p))),D=`? ${D}\n${a}:`):(D=`${D}:`,p&&(D+=ot(D,t.indent,l(p))));let T,I,N;J(e)?(T=!!e.spaceBefore,I=e.commentBefore,N=e.comment):(T=!1,I=null,N=null,e&&typeof e=="object"&&(e=o.createNode(e))),t.implicitKey=!1,!h&&!p&&K(e)&&(t.indentAtStart=D.length+1),g=!1,!f&&u.length>=2&&!t.inFlow&&!h&&Je(e)&&!e.flow&&!e.tag&&!e.anchor&&(t.indent=t.indent.substring(2));let y=!1,w=Tt(e,t,()=>y=!0,()=>g=!0),v=" ";if(p||T||I){if(v=T?`\n`:"",I){let V=l(I);v+=`\n${Pe(V,t.indent)}`}w===""&&!t.inFlow?v===`\n`&&(v=`\n\n`):v+=`\n${t.indent}`}else if(!h&&Z(e)){let V=w[0],j=w.indexOf(`\n`),Y=j!==-1,ee=(C=(O=t.inFlow)!=null?O:e.flow)!=null?C:e.items.length===0;if(Y||!ee){let ae=!1;if(Y&&(V==="&"||V==="!")){let x=w.indexOf(" ");V==="&"&&x!==-1&&xn===ms||typeof n=="symbol"&&n.description===ms,default:"key",tag:"tag:yaml.org,2002:merge",test:/^<<$/,resolve:()=>Object.assign(new P(Symbol(ms)),{addToJSMap:Vi}),stringify:()=>ms},Xa=(n,e)=>(Ye.identify(e)||K(e)&&(!e.type||e.type===P.PLAIN)&&Ye.identify(e.value))&&(n==null?void 0:n.doc.schema.tags.some(t=>t.tag===Ye.tag&&t.default));function Vi(n,e,t){if(t=n&&We(t)?t.resolve(n.doc):t,Je(t))for(let r of t.items)qi(n,e,r);else if(Array.isArray(t))for(let r of t)qi(n,e,r);else qi(n,e,t)}function qi(n,e,t){let r=n&&We(t)?t.resolve(n.doc):t;if(!He(r))throw new Error("Merge sources must be maps or map aliases");let s=r.toJSON(null,n,Map);for(let[i,o]of s)e instanceof Map?e.has(i)||e.set(i,o):e instanceof Set?e.add(i):Object.prototype.hasOwnProperty.call(e,i)||Object.defineProperty(e,i,{value:o,writable:!0,enumerable:!0,configurable:!0});return e}function Ds(n,e,{key:t,value:r}){if(J(t)&&t.addToJSMap)t.addToJSMap(n,e,r);else if(Xa(n,t))Vi(n,e,r);else{let s=ce(t,"",n);if(e instanceof Map)e.set(s,ce(r,s,n));else if(e instanceof Set)e.add(s);else{let i=Xc(t,s,n),o=ce(r,i,n);i in e?Object.defineProperty(e,i,{value:o,writable:!0,enumerable:!0,configurable:!0}):e[i]=o}}return e}function Xc(n,e,t){if(e===null)return"";if(typeof e!="object")return String(e);if(J(n)&&(t!=null&&t.doc)){let r=hs(t.doc,{});r.anchors=new Set;for(let i of t.anchors.keys())r.anchors.add(i.anchor);r.inFlow=!0,r.inStringifyKey=!0;let s=n.toString(r);if(!t.mapKeyWarned){let i=JSON.stringify(s);i.length>40&&(i=i.substring(0,36)+\'..."\'),ps(t.doc.options.logLevel,`Keys with collection values will be stringified due to JS Object restrictions: ${i}. Set mapAsMap: true to use object keys.`),t.mapKeyWarned=!0}return s}return JSON.stringify(e)}function vn(n,e,t){let r=wt(n,void 0,t),s=wt(e,void 0,t);return new ie(r,s)}var ie=class n{constructor(e,t=null){Object.defineProperty(this,Te,{value:_i}),this.key=e,this.value=t}clone(e){let{key:t,value:r}=this;return J(t)&&(t=t.clone(e)),J(r)&&(r=r.clone(e)),new n(t,r)}toJSON(e,t){let r=t!=null&&t.mapAsMap?new Map:{};return Ds(t,r,this)}toString(e,t,r){return e!=null&&e.doc?Qa(this,e,t,r):JSON.stringify(this)}};function gs(n,e,t){var i;return(((i=e.inFlow)!=null?i:n.flow)?tf:ef)(n,e,t)}function ef({comment:n,items:e},t,{blockItemPrefix:r,flowChars:s,itemIndent:i,onChompKeep:o,onComment:a}){let{indent:u,options:{commentString:l}}=t,f=Object.assign({},t,{indent:i,type:null}),d=!1,p=[];for(let b=0;bD=null,()=>d=!0);D&&(T+=ot(T,i,l(D))),d&&D&&(d=!1),p.push(r+T)}let h;if(p.length===0)h=s.start+s.end;else{h=p[0];for(let b=1;bD=null);bf||T.includes(`\n`))&&(l=!0),d.push(T),f=d.length}let{start:p,end:h}=t;if(d.length===0)return p+h;if(!l){let b=d.reduce((g,D)=>g+D.length+2,2);l=e.options.lineWidth>0&&b>e.options.lineWidth}if(l){let b=p;for(let g of d)b+=g?`\n${i}${s}${g}`:`\n`;return`${b}\n${s}${h}`}else return`${p}${o}${d.join(" ")}${o}${h}`}function ys({indent:n,options:{commentString:e}},t,r,s){if(r&&s&&(r=r.replace(/^\\n+/,"")),r){let i=Pe(e(r),n);t.push(i.trimStart())}}function It(n,e){let t=K(e)?e.value:e;for(let r of n)if(H(r)&&(r.key===e||r.key===t||K(r.key)&&r.key.value===t))return r}var oe=class extends Sn{static get tagName(){return"tag:yaml.org,2002:map"}constructor(e){super(Ke,e),this.items=[]}static from(e,t,r){let{keepUndefined:s,replacer:i}=r,o=new this(e),a=(u,l)=>{if(typeof i=="function")l=i.call(t,u,l);else if(Array.isArray(i)&&!i.includes(u))return;(l!==void 0||s)&&o.items.push(vn(u,l,r))};if(t instanceof Map)for(let[u,l]of t)a(u,l);else if(t&&typeof t=="object")for(let u of Object.keys(t))a(u,t[u]);return typeof e.sortMapEntries=="function"&&o.items.sort(e.sortMapEntries),o}add(e,t){var o;let r;H(e)?r=e:!e||typeof e!="object"||!("key"in e)?r=new ie(e,e==null?void 0:e.value):r=new ie(e.key,e.value);let s=It(this.items,r.key),i=(o=this.schema)==null?void 0:o.sortMapEntries;if(s){if(!t)throw new Error(`Key ${r.key} already set`);K(s.value)&&us(r.value)?s.value.value=r.value:s.value=r.value}else if(i){let a=this.items.findIndex(u=>i(r,u)<0);a===-1?this.items.push(r):this.items.splice(a,0,r)}else this.items.push(r)}delete(e){let t=It(this.items,e);return t?this.items.splice(this.items.indexOf(t),1).length>0:!1}get(e,t){var i;let r=It(this.items,e),s=r==null?void 0:r.value;return(i=!t&&K(s)?s.value:s)!=null?i:void 0}has(e){return!!It(this.items,e)}set(e,t){this.add(new ie(e,t),!0)}toJSON(e,t,r){let s=r?new r:t!=null&&t.mapAsMap?new Map:{};t!=null&&t.onCreate&&t.onCreate(s);for(let i of this.items)Ds(t,s,i);return s}toString(e,t,r){if(!e)return JSON.stringify(this);for(let s of this.items)if(!H(s))throw new Error(`Map items must all be pairs; found ${JSON.stringify(s)} instead`);return!e.allNullValues&&this.hasAllNullValues(!1)&&(e=Object.assign({},e,{allNullValues:!0})),gs(this,e,{blockItemPrefix:"",flowChars:{start:"{",end:"}"},itemIndent:e.indent||"",onChompKeep:r,onComment:t})}};var Ge={collection:"map",default:!0,nodeClass:oe,tag:"tag:yaml.org,2002:map",resolve(n,e){return He(n)||e("Expected a mapping for this tag"),n},createNode:(n,e,t)=>oe.from(n,e,t)};var be=class extends Sn{static get tagName(){return"tag:yaml.org,2002:seq"}constructor(e){super(Ft,e),this.items=[]}add(e){this.items.push(e)}delete(e){let t=bs(e);return typeof t!="number"?!1:this.items.splice(t,1).length>0}get(e,t){let r=bs(e);if(typeof r!="number")return;let s=this.items[r];return!t&&K(s)?s.value:s}has(e){let t=bs(e);return typeof t=="number"&&t=0?e:null}var Ze={collection:"seq",default:!0,nodeClass:be,tag:"tag:yaml.org,2002:seq",resolve(n,e){return Je(n)||e("Expected a sequence for this tag"),n},createNode:(n,e,t)=>be.from(n,e,t)};var Lt={identify:n=>typeof n=="string",default:!0,tag:"tag:yaml.org,2002:str",resolve:n=>n,stringify(n,e,t,r){return e=Object.assign({actualString:!0},e),Wt(n,e,t,r)}};var Ht={identify:n=>n==null,createNode:()=>new P(null),default:!0,tag:"tag:yaml.org,2002:null",test:/^(?:~|[Nn]ull|NULL)?$/,resolve:()=>new P(null),stringify:({source:n},e)=>typeof n=="string"&&Ht.test.test(n)?n:e.options.nullStr};var br={identify:n=>typeof n=="boolean",default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:[Tt]rue|TRUE|[Ff]alse|FALSE)$/,resolve:n=>new P(n[0]==="t"||n[0]==="T"),stringify({source:n,value:e},t){if(n&&br.test.test(n)){let r=n[0]==="t"||n[0]==="T";if(e===r)return n}return e?t.options.trueStr:t.options.falseStr}};function Fe({format:n,minFractionDigits:e,tag:t,value:r}){if(typeof r=="bigint")return String(r);let s=typeof r=="number"?r:Number(r);if(!isFinite(s))return isNaN(s)?".nan":s<0?"-.inf":".inf";let i=JSON.stringify(r);if(!n&&e&&(!t||t==="tag:yaml.org,2002:float")&&/^\\d/.test(i)){let o=i.indexOf(".");o<0&&(o=i.length,i+=".");let a=e-(i.length-o-1);for(;a-- >0;)i+="0"}return i}var Fs={identify:n=>typeof n=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^(?:[-+]?\\.(?:inf|Inf|INF)|\\.nan|\\.NaN|\\.NAN)$/,resolve:n=>n.slice(-3).toLowerCase()==="nan"?NaN:n[0]==="-"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,stringify:Fe},Es={identify:n=>typeof n=="number",default:!0,tag:"tag:yaml.org,2002:float",format:"EXP",test:/^[-+]?(?:\\.[0-9]+|[0-9]+(?:\\.[0-9]*)?)[eE][-+]?[0-9]+$/,resolve:n=>parseFloat(n),stringify(n){let e=Number(n.value);return isFinite(e)?e.toExponential():Fe(n)}},ws={identify:n=>typeof n=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^[-+]?(?:\\.[0-9]+|[0-9]+\\.[0-9]*)$/,resolve(n){let e=new P(parseFloat(n)),t=n.indexOf(".");return t!==-1&&n[n.length-1]==="0"&&(e.minFractionDigits=n.length-t-1),e},stringify:Fe};var Ts=n=>typeof n=="bigint"||Number.isInteger(n),Ui=(n,e,t,{intAsBigInt:r})=>r?BigInt(n):parseInt(n.substring(e),t);function eu(n,e,t){let{value:r}=n;return Ts(r)&&r>=0?t+r.toString(e):Fe(n)}var Ss={identify:n=>Ts(n)&&n>=0,default:!0,tag:"tag:yaml.org,2002:int",format:"OCT",test:/^0o[0-7]+$/,resolve:(n,e,t)=>Ui(n,2,8,t),stringify:n=>eu(n,8,"0o")},ks={identify:Ts,default:!0,tag:"tag:yaml.org,2002:int",test:/^[-+]?[0-9]+$/,resolve:(n,e,t)=>Ui(n,0,10,t),stringify:Fe},Cs={identify:n=>Ts(n)&&n>=0,default:!0,tag:"tag:yaml.org,2002:int",format:"HEX",test:/^0x[0-9a-fA-F]+$/,resolve:(n,e,t)=>Ui(n,2,16,t),stringify:n=>eu(n,16,"0x")};var tu=[Ge,Ze,Lt,Ht,br,Ss,ks,Cs,Fs,Es,ws];function nu(n){return typeof n=="bigint"||Number.isInteger(n)}var vs=({value:n})=>JSON.stringify(n),nf=[{identify:n=>typeof n=="string",default:!0,tag:"tag:yaml.org,2002:str",resolve:n=>n,stringify:vs},{identify:n=>n==null,createNode:()=>new P(null),default:!0,tag:"tag:yaml.org,2002:null",test:/^null$/,resolve:()=>null,stringify:vs},{identify:n=>typeof n=="boolean",default:!0,tag:"tag:yaml.org,2002:bool",test:/^true|false$/,resolve:n=>n==="true",stringify:vs},{identify:nu,default:!0,tag:"tag:yaml.org,2002:int",test:/^-?(?:0|[1-9][0-9]*)$/,resolve:(n,e,{intAsBigInt:t})=>t?BigInt(n):parseInt(n,10),stringify:({value:n})=>nu(n)?n.toString():JSON.stringify(n)},{identify:n=>typeof n=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^-?(?:0|[1-9][0-9]*)(?:\\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$/,resolve:n=>parseFloat(n),stringify:vs}],rf={default:!0,tag:"",test:/^/,resolve(n,e){return e(`Unresolved plain scalar ${JSON.stringify(n)}`),n}},ru=[Ge,Ze].concat(nf,rf);var Fr={identify:n=>n instanceof Uint8Array,default:!1,tag:"tag:yaml.org,2002:binary",resolve(n,e){if(typeof Buffer=="function")return Buffer.from(n,"base64");if(typeof atob=="function"){let t=atob(n.replace(/[\\n\\r]/g,"")),r=new Uint8Array(t.length);for(let s=0;s1&&e("Each pair must have its own sequence indicator");let i=s.items[0]||new ie(new P(null));if(s.commentBefore&&(i.key.commentBefore=i.key.commentBefore?`${s.commentBefore}\n${i.key.commentBefore}`:s.commentBefore),s.comment){let o=(t=i.value)!=null?t:i.key;o.comment=o.comment?`${s.comment}\n${o.comment}`:s.comment}s=i}n.items[r]=H(s)?s:new ie(s)}}else e("Expected a sequence for this tag");return n}function Wi(n,e,t){let{replacer:r}=t,s=new be(n);s.tag="tag:yaml.org,2002:pairs";let i=0;if(e&&Symbol.iterator in Object(e))for(let o of e){typeof r=="function"&&(o=r.call(e,String(i++),o));let a,u;if(Array.isArray(o))if(o.length===2)a=o[0],u=o[1];else throw new TypeError(`Expected [key, value] tuple: ${o}`);else if(o&&o instanceof Object){let l=Object.keys(o);if(l.length===1)a=l[0],u=o[a];else throw new TypeError(`Expected tuple with one key, not ${l.length} keys`)}else a=o;s.items.push(vn(a,u,t))}return s}var Er={collection:"seq",default:!1,tag:"tag:yaml.org,2002:pairs",resolve:Ki,createNode:Wi};var On=class n extends be{constructor(){super(),this.add=oe.prototype.add.bind(this),this.delete=oe.prototype.delete.bind(this),this.get=oe.prototype.get.bind(this),this.has=oe.prototype.has.bind(this),this.set=oe.prototype.set.bind(this),this.tag=n.tag}toJSON(e,t){if(!t)return super.toJSON(e);let r=new Map;t!=null&&t.onCreate&&t.onCreate(r);for(let s of this.items){let i,o;if(H(s)?(i=ce(s.key,"",t),o=ce(s.value,i,t)):i=ce(s,"",t),r.has(i))throw new Error("Ordered maps must not include duplicate keys");r.set(i,o)}return r}static from(e,t,r){let s=Wi(e,t,r),i=new this;return i.items=s.items,i}};On.tag="tag:yaml.org,2002:omap";var wr={collection:"seq",identify:n=>n instanceof Map,nodeClass:On,default:!1,tag:"tag:yaml.org,2002:omap",resolve(n,e){let t=Ki(n,e),r=[];for(let{key:s}of t.items)K(s)&&(r.includes(s.value)?e(`Ordered maps must not include duplicate keys: ${s.value}`):r.push(s.value));return Object.assign(new On,t)},createNode:(n,e,t)=>On.from(n,e,t)};function su({value:n,source:e},t){return e&&(n?Hi:Ji).test.test(e)?e:n?t.options.trueStr:t.options.falseStr}var Hi={identify:n=>n===!0,default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:Y|y|[Yy]es|YES|[Tt]rue|TRUE|[Oo]n|ON)$/,resolve:()=>new P(!0),stringify:su},Ji={identify:n=>n===!1,default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:N|n|[Nn]o|NO|[Ff]alse|FALSE|[Oo]ff|OFF)$/,resolve:()=>new P(!1),stringify:su};var iu={identify:n=>typeof n=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^(?:[-+]?\\.(?:inf|Inf|INF)|\\.nan|\\.NaN|\\.NAN)$/,resolve:n=>n.slice(-3).toLowerCase()==="nan"?NaN:n[0]==="-"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,stringify:Fe},ou={identify:n=>typeof n=="number",default:!0,tag:"tag:yaml.org,2002:float",format:"EXP",test:/^[-+]?(?:[0-9][0-9_]*)?(?:\\.[0-9_]*)?[eE][-+]?[0-9]+$/,resolve:n=>parseFloat(n.replace(/_/g,"")),stringify(n){let e=Number(n.value);return isFinite(e)?e.toExponential():Fe(n)}},au={identify:n=>typeof n=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^[-+]?(?:[0-9][0-9_]*)?\\.[0-9_]*$/,resolve(n){let e=new P(parseFloat(n.replace(/_/g,""))),t=n.indexOf(".");if(t!==-1){let r=n.substring(t+1).replace(/_/g,"");r[r.length-1]==="0"&&(e.minFractionDigits=r.length)}return e},stringify:Fe};var Tr=n=>typeof n=="bigint"||Number.isInteger(n);function Os(n,e,t,{intAsBigInt:r}){let s=n[0];if((s==="-"||s==="+")&&(e+=1),n=n.substring(e).replace(/_/g,""),r){switch(t){case 2:n=`0b${n}`;break;case 8:n=`0o${n}`;break;case 16:n=`0x${n}`;break}let o=BigInt(n);return s==="-"?BigInt(-1)*o:o}let i=parseInt(n,t);return s==="-"?-1*i:i}function zi(n,e,t){let{value:r}=n;if(Tr(r)){let s=r.toString(e);return r<0?"-"+t+s.substr(1):t+s}return Fe(n)}var uu={identify:Tr,default:!0,tag:"tag:yaml.org,2002:int",format:"BIN",test:/^[-+]?0b[0-1_]+$/,resolve:(n,e,t)=>Os(n,2,2,t),stringify:n=>zi(n,2,"0b")},lu={identify:Tr,default:!0,tag:"tag:yaml.org,2002:int",format:"OCT",test:/^[-+]?0[0-7_]+$/,resolve:(n,e,t)=>Os(n,1,8,t),stringify:n=>zi(n,8,"0")},cu={identify:Tr,default:!0,tag:"tag:yaml.org,2002:int",test:/^[-+]?[0-9][0-9_]*$/,resolve:(n,e,t)=>Os(n,0,10,t),stringify:Fe},fu={identify:Tr,default:!0,tag:"tag:yaml.org,2002:int",format:"HEX",test:/^[-+]?0x[0-9a-fA-F_]+$/,resolve:(n,e,t)=>Os(n,2,16,t),stringify:n=>zi(n,16,"0x")};var xn=class n extends oe{constructor(e){super(e),this.tag=n.tag}add(e){let t;H(e)?t=e:e&&typeof e=="object"&&"key"in e&&"value"in e&&e.value===null?t=new ie(e.key,null):t=new ie(e,null),It(this.items,t.key)||this.items.push(t)}get(e,t){let r=It(this.items,e);return!t&&H(r)?K(r.key)?r.key.value:r.key:r}set(e,t){if(typeof t!="boolean")throw new Error(`Expected boolean value for set(key, value) in a YAML set, not ${typeof t}`);let r=It(this.items,e);r&&!t?this.items.splice(this.items.indexOf(r),1):!r&&t&&this.items.push(new ie(e))}toJSON(e,t){return super.toJSON(e,t,Set)}toString(e,t,r){if(!e)return JSON.stringify(this);if(this.hasAllNullValues(!0))return super.toString(Object.assign({},e,{allNullValues:!0}),t,r);throw new Error("Set items must all have null values")}static from(e,t,r){let{replacer:s}=r,i=new this(e);if(t&&Symbol.iterator in Object(t))for(let o of t)typeof s=="function"&&(o=s.call(t,o,o)),i.items.push(vn(o,null,r));return i}};xn.tag="tag:yaml.org,2002:set";var Sr={collection:"map",identify:n=>n instanceof Set,nodeClass:xn,default:!1,tag:"tag:yaml.org,2002:set",createNode:(n,e,t)=>xn.from(n,e,t),resolve(n,e){if(He(n)){if(n.hasAllNullValues(!0))return Object.assign(new xn,n);e("Set items must all have null values")}else e("Expected a mapping for this tag");return n}};function Yi(n,e){let t=n[0],r=t==="-"||t==="+"?n.substring(1):n,s=o=>e?BigInt(o):Number(o),i=r.replace(/_/g,"").split(":").reduce((o,a)=>o*s(60)+s(a),s(0));return t==="-"?s(-1)*i:i}function du(n){let{value:e}=n,t=o=>o;if(typeof e=="bigint")t=o=>BigInt(o);else if(isNaN(e)||!isFinite(e))return Fe(n);let r="";e<0&&(r="-",e*=t(-1));let s=t(60),i=[e%s];return e<60?i.unshift(0):(e=(e-i[0])/s,i.unshift(e%s),e>=60&&(e=(e-i[0])/s,i.unshift(e))),r+i.map(o=>String(o).padStart(2,"0")).join(":").replace(/000000\\d*$/,"")}var xs={identify:n=>typeof n=="bigint"||Number.isInteger(n),default:!0,tag:"tag:yaml.org,2002:int",format:"TIME",test:/^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+$/,resolve:(n,e,{intAsBigInt:t})=>Yi(n,t),stringify:du},Is={identify:n=>typeof n=="number",default:!0,tag:"tag:yaml.org,2002:float",format:"TIME",test:/^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*$/,resolve:n=>Yi(n,!1),stringify:du},In={identify:n=>n instanceof Date,default:!0,tag:"tag:yaml.org,2002:timestamp",test:RegExp("^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})(?:(?:t|T|[ \\\\t]+)([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}(\\\\.[0-9]+)?)(?:[ \\\\t]*(Z|[-+][012]?[0-9](?::[0-9]{2})?))?)?$"),resolve(n){let e=n.match(In.test);if(!e)throw new Error("!!timestamp expects a date, starting with yyyy-mm-dd");let[,t,r,s,i,o,a]=e.map(Number),u=e[7]?Number((e[7]+"00").substr(1,3)):0,l=Date.UTC(t,r-1,s,i||0,o||0,a||0,u),f=e[8];if(f&&f!=="Z"){let d=Yi(f,!1);Math.abs(d)<30&&(d*=60),l-=6e4*d}return new Date(l)},stringify:({value:n})=>n.toISOString().replace(/((T00:00)?:00)?\\.000Z$/,"")};var Gi=[Ge,Ze,Lt,Ht,Hi,Ji,uu,lu,cu,fu,iu,ou,au,Fr,Ye,wr,Er,Sr,xs,Is,In];var hu=new Map([["core",tu],["failsafe",[Ge,Ze,Lt]],["json",ru],["yaml11",Gi],["yaml-1.1",Gi]]),pu={binary:Fr,bool:br,float:ws,floatExp:Es,floatNaN:Fs,floatTime:Is,int:ks,intHex:Cs,intOct:Ss,intTime:xs,map:Ge,merge:Ye,null:Ht,omap:wr,pairs:Er,seq:Ze,set:Sr,timestamp:In},mu={"tag:yaml.org,2002:binary":Fr,"tag:yaml.org,2002:merge":Ye,"tag:yaml.org,2002:omap":wr,"tag:yaml.org,2002:pairs":Er,"tag:yaml.org,2002:set":Sr,"tag:yaml.org,2002:timestamp":In};function Ls(n,e,t){let r=hu.get(e);if(r&&!n)return t&&!r.includes(Ye)?r.concat(Ye):r.slice();let s=r;if(!s)if(Array.isArray(n))s=[];else{let i=Array.from(hu.keys()).filter(o=>o!=="yaml11").map(o=>JSON.stringify(o)).join(", ");throw new Error(`Unknown schema "${e}"; use one of ${i} or define customTags array`)}if(Array.isArray(n))for(let i of n)s=s.concat(i);else typeof n=="function"&&(s=n(s.slice()));return t&&(s=s.concat(Ye)),s.reduce((i,o)=>{let a=typeof o=="string"?pu[o]:o;if(!a){let u=JSON.stringify(o),l=Object.keys(pu).map(f=>JSON.stringify(f)).join(", ");throw new Error(`Unknown custom tag ${u}; use one of ${l}`)}return i.includes(a)||i.push(a),i},[])}var sf=(n,e)=>n.keye.key?1:0,kr=class n{constructor({compat:e,customTags:t,merge:r,resolveKnownTags:s,schema:i,sortMapEntries:o,toStringDefaults:a}){this.compat=Array.isArray(e)?Ls(e,"compat"):e?Ls(null,e):null,this.name=typeof i=="string"&&i||"core",this.knownTags=s?mu:{},this.tags=Ls(t,this.name,r),this.toStringOptions=a!=null?a:null,Object.defineProperty(this,Ke,{value:Ge}),Object.defineProperty(this,Ie,{value:Lt}),Object.defineProperty(this,Ft,{value:Ze}),this.sortMapEntries=typeof o=="function"?o:o===!0?sf:null}clone(){let e=Object.create(n.prototype,Object.getOwnPropertyDescriptors(this));return e.tags=this.tags.slice(),e}};function Du(n,e){var u;let t=[],r=e.directives===!0;if(e.directives!==!1&&n.directives){let l=n.directives.toString(n);l?(t.push(l),r=!0):n.directives.docStart&&(r=!0)}r&&t.push("---");let s=hs(n,e),{commentString:i}=s.options;if(n.commentBefore){t.length!==1&&t.unshift("");let l=i(n.commentBefore);t.unshift(Pe(l,""))}let o=!1,a=null;if(n.contents){if(J(n.contents)){if(n.contents.spaceBefore&&r&&t.push(""),n.contents.commentBefore){let d=i(n.contents.commentBefore);t.push(Pe(d,""))}s.forceBlockIndent=!!n.comment,a=n.contents.comment}let l=a?void 0:()=>o=!0,f=Tt(n.contents,s,()=>a=null,l);a&&(f+=ot(f,"",i(a))),(f[0]==="|"||f[0]===">")&&t[t.length-1]==="---"?t[t.length-1]=`--- ${f}`:t.push(f)}else t.push(Tt(n.contents,s));if((u=n.directives)!=null&&u.docEnd)if(n.comment){let l=i(n.comment);l.includes(`\n`)?(t.push("..."),t.push(Pe(l,""))):t.push(`... ${l}`)}else t.push("...");else{let l=n.comment;l&&o&&(l=l.replace(/^\\n+/,"")),l&&((!o||a)&&t[t.length-1]!==""&&t.push(""),t.push(Pe(i(l),"")))}return t.join(`\n`)+`\n`}var Nt=class n{constructor(e,t,r){this.commentBefore=null,this.comment=null,this.errors=[],this.warnings=[],Object.defineProperty(this,Te,{value:ss});let s=null;typeof t=="function"||Array.isArray(t)?s=t:r===void 0&&t&&(r=t,t=void 0);let i=Object.assign({intAsBigInt:!1,keepSourceTokens:!1,logLevel:"warn",prettyErrors:!0,strict:!0,stringKeys:!1,uniqueKeys:!0,version:"1.2"},r);this.options=i;let{version:o}=i;r!=null&&r._directives?(this.directives=r._directives.atDocument(),this.directives.yaml.explicit&&(o=this.directives.yaml.version)):this.directives=new it({version:o}),this.setSchema(o,r),this.contents=e===void 0?null:this.createNode(e,s,r)}clone(){let e=Object.create(n.prototype,{[Te]:{value:ss}});return e.commentBefore=this.commentBefore,e.comment=this.comment,e.errors=this.errors.slice(),e.warnings=this.warnings.slice(),e.options=Object.assign({},this.options),this.directives&&(e.directives=this.directives.clone()),e.schema=this.schema.clone(),e.contents=J(this.contents)?this.contents.clone(e.schema):this.contents,this.range&&(e.range=this.range.slice()),e}add(e){Ln(this.contents)&&this.contents.add(e)}addIn(e,t){Ln(this.contents)&&this.contents.addIn(e,t)}createAlias(e,t){if(!e.anchor){let r=Bi(this);e.anchor=!t||r.has(t)?Pi(t||"a",r):t}return new Et(e.anchor)}createNode(e,t,r){let s;if(typeof t=="function")e=t.call({"":e},"",e),s=t;else if(Array.isArray(t)){let D=I=>typeof I=="number"||I instanceof String||I instanceof Number,T=t.filter(D).map(String);T.length>0&&(t=t.concat(T)),s=t}else r===void 0&&t&&(r=t,t=void 0);let{aliasDuplicateObjects:i,anchorPrefix:o,flow:a,keepUndefined:u,onTagObj:l,tag:f}=r!=null?r:{},{onAnchor:d,setAnchors:p,sourceObjects:h}=Ya(this,o||"a"),b={aliasDuplicateObjects:i!=null?i:!0,keepUndefined:u!=null?u:!1,onAnchor:d,onTagObj:l,replacer:s,schema:this.schema,sourceObjects:h},g=wt(e,f,b);return a&&Z(g)&&(g.flow=!0),p(),g}createPair(e,t,r={}){let s=this.createNode(e,null,r),i=this.createNode(t,null,r);return new ie(s,i)}delete(e){return Ln(this.contents)?this.contents.delete(e):!1}deleteIn(e){return kn(e)?this.contents==null?!1:(this.contents=null,!0):Ln(this.contents)?this.contents.deleteIn(e):!1}get(e,t){return Z(this.contents)?this.contents.get(e,t):void 0}getIn(e,t){return kn(e)?!t&&K(this.contents)?this.contents.value:this.contents:Z(this.contents)?this.contents.getIn(e,t):void 0}has(e){return Z(this.contents)?this.contents.has(e):!1}hasIn(e){return kn(e)?this.contents!==void 0:Z(this.contents)?this.contents.hasIn(e):!1}set(e,t){this.contents==null?this.contents=mr(this.schema,[e],t):Ln(this.contents)&&this.contents.set(e,t)}setIn(e,t){kn(e)?this.contents=t:this.contents==null?this.contents=mr(this.schema,Array.from(e),t):Ln(this.contents)&&this.contents.setIn(e,t)}setSchema(e,t={}){typeof e=="number"&&(e=String(e));let r;switch(e){case"1.1":this.directives?this.directives.yaml.version="1.1":this.directives=new it({version:"1.1"}),r={resolveKnownTags:!1,schema:"yaml-1.1"};break;case"1.2":case"next":this.directives?this.directives.yaml.version=e:this.directives=new it({version:e}),r={resolveKnownTags:!0,schema:"core"};break;case null:this.directives&&delete this.directives,r=null;break;default:{let s=JSON.stringify(e);throw new Error(`Expected \'1.1\', \'1.2\' or null as first argument, but found: ${s}`)}}if(t.schema instanceof Object)this.schema=t.schema;else if(r)this.schema=new kr(Object.assign(r,t));else throw new Error("With a null YAML version, the { schema: Schema } option is required")}toJS({json:e,jsonArg:t,mapAsMap:r,maxAliasCount:s,onAnchor:i,reviver:o}={}){let a={anchors:new Map,doc:this,keep:!e,mapAsMap:r===!0,mapKeyWarned:!1,maxAliasCount:typeof s=="number"?s:100},u=ce(this.contents,t!=null?t:"",a);if(typeof i=="function")for(let{count:l,res:f}of a.anchors.values())i(f,l);return typeof o=="function"?Ot(o,{"":u},"",u):u}toJSON(e,t){return this.toJS({json:!0,jsonArg:e,mapAsMap:!1,onAnchor:t})}toString(e={}){if(this.errors.length>0)throw new Error("Document with errors cannot be stringified");if("indent"in e&&(!Number.isInteger(e.indent)||Number(e.indent)<=0)){let t=JSON.stringify(e.indent);throw new Error(`"indent" option must be a positive integer, not ${t}`)}return Du(this,e)}};function Ln(n){if(Z(n))return!0;throw new Error("Expected a YAML collection as document contents")}var Cr=class extends Error{constructor(e,t,r,s){super(),this.name=e,this.code=r,this.message=s,this.pos=t}},Qe=class extends Cr{constructor(e,t,r){super("YAMLParseError",e,t,r)}},vr=class extends Cr{constructor(e,t,r){super("YAMLWarning",e,t,r)}},Zi=(n,e)=>t=>{if(t.pos[0]===-1)return;t.linePos=t.pos.map(a=>e.linePos(a));let{line:r,col:s}=t.linePos[0];t.message+=` at line ${r}, column ${s}`;let i=s-1,o=n.substring(e.lineStarts[r-1],e.lineStarts[r]).replace(/[\\n\\r]+$/,"");if(i>=60&&o.length>80){let a=Math.min(i-39,o.length-79);o="\\u2026"+o.substring(a),i-=a-1}if(o.length>80&&(o=o.substring(0,79)+"\\u2026"),r>1&&/^ *$/.test(o.substring(0,i))){let a=n.substring(e.lineStarts[r-2],e.lineStarts[r-1]);a.length>80&&(a=a.substring(0,79)+`\\u2026\n`),o=a+o}if(/[^ ]/.test(o)){let a=1,u=t.linePos[1];u&&u.line===r&&u.col>s&&(a=Math.max(1,Math.min(u.col-s,80-i)));let l=" ".repeat(i)+"^".repeat(a);t.message+=`:\n\n${o}\n${l}\n`}};function at(n,{flow:e,indicator:t,next:r,offset:s,onError:i,parentIndent:o,startOnNewline:a}){let u=!1,l=a,f=a,d="",p="",h=!1,b=!1,g=null,D=null,T=null,I=null,N=null,y=null,w=null;for(let C of n)switch(b&&(C.type!=="space"&&C.type!=="newline"&&C.type!=="comma"&&i(C.offset,"MISSING_CHAR","Tags and anchors must be separated from the next token by white space"),b=!1),g&&(l&&C.type!=="comment"&&C.type!=="newline"&&i(g,"TAB_AS_INDENT","Tabs are not allowed as indentation"),g=null),C.type){case"space":!e&&(t!=="doc-start"||(r==null?void 0:r.type)!=="flow-collection")&&C.source.includes(" ")&&(g=C),f=!0;break;case"comment":{f||i(C,"MISSING_CHAR","Comments must be separated from other tokens by white space characters");let V=C.source.substring(1)||" ";d?d+=p+V:d=V,p="",l=!1;break}case"newline":l?d?d+=C.source:u=!0:p+=C.source,l=!0,h=!0,(D||T)&&(I=C),f=!0;break;case"anchor":D&&i(C,"MULTIPLE_ANCHORS","A node can have at most one anchor"),C.source.endsWith(":")&&i(C.offset+C.source.length-1,"BAD_ALIAS","Anchor ending in : is ambiguous",!0),D=C,w===null&&(w=C.offset),l=!1,f=!1,b=!0;break;case"tag":{T&&i(C,"MULTIPLE_TAGS","A node can have at most one tag"),T=C,w===null&&(w=C.offset),l=!1,f=!1,b=!0;break}case t:(D||T)&&i(C,"BAD_PROP_ORDER",`Anchors and tags must be after the ${C.source} indicator`),y&&i(C,"UNEXPECTED_TOKEN",`Unexpected ${C.source} in ${e!=null?e:"collection"}`),y=C,l=t==="seq-item-ind"||t==="explicit-key-ind",f=!1;break;case"comma":if(e){N&&i(C,"UNEXPECTED_TOKEN",`Unexpected , in ${e}`),N=C,l=!1,f=!1;break}default:i(C,"UNEXPECTED_TOKEN",`Unexpected ${C.type} token`),l=!1,f=!1}let v=n[n.length-1],O=v?v.offset+v.source.length:s;return b&&r&&r.type!=="space"&&r.type!=="newline"&&r.type!=="comma"&&(r.type!=="scalar"||r.source!=="")&&i(r.offset,"MISSING_CHAR","Tags and anchors must be separated from the next token by white space"),g&&(l&&g.indent<=o||(r==null?void 0:r.type)==="block-map"||(r==null?void 0:r.type)==="block-seq")&&i(g,"TAB_AS_INDENT","Tabs are not allowed as indentation"),{comma:N,found:y,spaceBefore:u,comment:d,hasNewline:h,anchor:D,tag:T,newlineAfterProp:I,end:O,start:w!=null?w:O}}function At(n){if(!n)return null;switch(n.type){case"alias":case"scalar":case"double-quoted-scalar":case"single-quoted-scalar":if(n.source.includes(`\n`))return!0;if(n.end){for(let e of n.end)if(e.type==="newline")return!0}return!1;case"flow-collection":for(let e of n.items){for(let t of e.start)if(t.type==="newline")return!0;if(e.sep){for(let t of e.sep)if(t.type==="newline")return!0}if(At(e.key)||At(e.value))return!0}return!1;default:return!0}}function Or(n,e,t){if((e==null?void 0:e.type)==="flow-collection"){let r=e.end[0];r.indent===n&&(r.source==="]"||r.source==="}")&&At(e)&&t(r,"BAD_INDENT","Flow end indicator should be more indented than parent",!0)}}function Ns(n,e,t){let{uniqueKeys:r}=n.options;if(r===!1)return!1;let s=typeof r=="function"?r:(i,o)=>i===o||K(i)&&K(o)&&i.value===o.value;return e.some(i=>s(i.key,t))}var yu="All mapping items must start at the same column";function gu({composeNode:n,composeEmptyNode:e},t,r,s,i){var f,d;let o=(f=i==null?void 0:i.nodeClass)!=null?f:oe,a=new o(t.schema);t.atRoot&&(t.atRoot=!1);let u=r.offset,l=null;for(let p of r.items){let{start:h,key:b,sep:g,value:D}=p,T=at(h,{indicator:"explicit-key-ind",next:b!=null?b:g==null?void 0:g[0],offset:u,onError:s,parentIndent:r.indent,startOnNewline:!0}),I=!T.found;if(I){if(b&&(b.type==="block-seq"?s(u,"BLOCK_AS_IMPLICIT_KEY","A block sequence may not be used as an implicit map key"):"indent"in b&&b.indent!==r.indent&&s(u,"BAD_INDENT",yu)),!T.anchor&&!T.tag&&!g){l=T.end,T.comment&&(a.comment?a.comment+=`\n`+T.comment:a.comment=T.comment);continue}(T.newlineAfterProp||At(b))&&s(b!=null?b:h[h.length-1],"MULTILINE_IMPLICIT_KEY","Implicit keys need to be on a single line")}else((d=T.found)==null?void 0:d.indent)!==r.indent&&s(u,"BAD_INDENT",yu);t.atKey=!0;let N=T.end,y=b?n(t,b,T,s):e(t,N,h,null,T,s);t.schema.compat&&Or(r.indent,b,s),t.atKey=!1,Ns(t,a.items,y)&&s(N,"DUPLICATE_KEY","Map keys must be unique");let w=at(g!=null?g:[],{indicator:"map-value-ind",next:D,offset:y.range[2],onError:s,parentIndent:r.indent,startOnNewline:!b||b.type==="block-scalar"});if(u=w.end,w.found){I&&((D==null?void 0:D.type)==="block-map"&&!w.hasNewline&&s(u,"BLOCK_AS_IMPLICIT_KEY","Nested mappings are not allowed in compact mappings"),t.options.strict&&T.startn&&(n.type==="block-map"||n.type==="block-seq");function Fu({composeNode:n,composeEmptyNode:e},t,r,s,i){var D,T;let o=r.start.source==="{",a=o?"flow map":"flow sequence",u=(D=i==null?void 0:i.nodeClass)!=null?D:o?oe:be,l=new u(t.schema);l.flow=!0;let f=t.atRoot;f&&(t.atRoot=!1),t.atKey&&(t.atKey=!1);let d=r.offset+r.start.source.length;for(let I=0;I0){let I=ut(b,g,t.options.strict,s);I.comment&&(l.comment?l.comment+=`\n`+I.comment:l.comment=I.comment),l.range=[r.offset,g,I.offset]}else l.range=[r.offset,g,g];return l}function eo(n,e,t,r,s,i){let o=t.type==="block-map"?gu(n,e,t,r,i):t.type==="block-seq"?bu(n,e,t,r,i):Fu(n,e,t,r,i),a=o.constructor;return s==="!"||s===a.tagName?(o.tag=a.tagName,o):(s&&(o.tag=s),o)}function Eu(n,e,t,r,s){var p,h;let i=r.tag,o=i?e.directives.tagName(i.source,b=>s(i,"TAG_RESOLVE_FAILED",b)):null;if(t.type==="block-seq"){let{anchor:b,newlineAfterProp:g}=r,D=b&&i?b.offset>i.offset?b:i:b!=null?b:i;D&&(!g||g.offsetb.tag===o&&b.collection===a);if(!u){let b=e.schema.knownTags[o];if(b&&b.collection===a)e.schema.tags.push(Object.assign({},b,{default:!1})),u=b;else return b!=null&&b.collection?s(i,"BAD_COLLECTION_TYPE",`${b.tag} used for ${a} collection, but expects ${b.collection}`,!0):s(i,"TAG_RESOLVE_FAILED",`Unresolved tag: ${o}`,!0),eo(n,e,t,s,o)}let l=eo(n,e,t,s,o,u),f=(h=(p=u.resolve)==null?void 0:p.call(u,l,b=>s(i,"TAG_RESOLVE_FAILED",b),e.options))!=null?h:l,d=J(f)?f:new P(f);return d.range=l.range,d.tag=o,u!=null&&u.format&&(d.format=u.format),d}function to(n,e,t){let r=e.offset,s=of(e,n.options.strict,t);if(!s)return{value:"",type:null,comment:"",range:[r,r,r]};let i=s.mode===">"?P.BLOCK_FOLDED:P.BLOCK_LITERAL,o=e.source?af(e.source):[],a=o.length;for(let g=o.length-1;g>=0;--g){let D=o[g][1];if(D===""||D==="\\r")a=g;else break}if(a===0){let g=s.chomp==="+"&&o.length>0?`\n`.repeat(Math.max(1,o.length-1)):"",D=r+s.length;return e.source&&(D+=e.source.length),{value:g,type:i,comment:s.comment,range:[r,D,D]}}let u=e.indent+s.indent,l=e.offset+s.length,f=0;for(let g=0;gu&&(u=D.length);else{D.length=a;--g)o[g][0].length>u&&(a=g+1);let d="",p="",h=!1;for(let g=0;gu||T[0]===" "?(p===" "?p=`\n`:!h&&p===`\n`&&(p=`\n\n`),d+=p+D.slice(u)+T,p=`\n`,h=!0):T===""?p===`\n`?d+=`\n`:p=`\n`:(d+=p+T,p=" ",h=!1)}switch(s.chomp){case"-":break;case"+":for(let g=a;gt(r+p,h,b);switch(s){case"scalar":a=P.PLAIN,u=uf(i,l);break;case"single-quoted-scalar":a=P.QUOTE_SINGLE,u=lf(i,l);break;case"double-quoted-scalar":a=P.QUOTE_DOUBLE,u=cf(i,l);break;default:return t(n,"UNEXPECTED_TOKEN",`Expected a flow scalar value, but found: ${s}`),{value:"",type:null,comment:"",range:[r,r+i.length,r+i.length]}}let f=r+i.length,d=ut(o,f,e,t);return{value:u,type:a,comment:d.comment,range:[r,f,d.offset]}}function uf(n,e){let t="";switch(n[0]){case" ":t="a tab character";break;case",":t="flow indicator character ,";break;case"%":t="directive indicator character %";break;case"|":case">":{t=`block scalar indicator ${n[0]}`;break}case"@":case"`":{t=`reserved character ${n[0]}`;break}}return t&&e(0,"BAD_SCALAR_START",`Plain value cannot start with ${t}`),wu(n)}function lf(n,e){return(n[n.length-1]!=="\'"||n.length===1)&&e(n.length,"MISSING_CHAR","Missing closing \'quote"),wu(n.slice(1,-1)).replace(/\'\'/g,"\'")}function wu(n){var u;let e,t;try{e=new RegExp(`(.*?)(?i?n.slice(i,r+1):s)}else t+=s}return(n[n.length-1]!==\'"\'||n.length===1)&&e(n.length,"MISSING_CHAR",\'Missing closing "quote\'),t}function ff(n,e){let t="",r=n[e+1];for(;(r===" "||r===" "||r===`\n`||r==="\\r")&&!(r==="\\r"&&n[e+2]!==`\n`);)r===`\n`&&(t+=`\n`),e+=1,r=n[e+1];return t||(t=" "),{fold:t,offset:e}}var df={0:"\\0",a:"\\x07",b:"\\b",e:"\\x1B",f:"\\f",n:`\n`,r:"\\r",t:" ",v:"\\v",N:"\\x85",_:"\\xA0",L:"\\u2028",P:"\\u2029"," ":" ",\'"\':\'"\',"/":"/","\\\\":"\\\\"," ":" "};function hf(n,e,t,r){let s=n.substr(e,t),o=s.length===t&&/^[0-9a-fA-F]+$/.test(s)?parseInt(s,16):NaN;if(isNaN(o)){let a=n.substr(e-2,t+2);return r(e-2,"BAD_DQ_ESCAPE",`Invalid escape sequence ${a}`),a}return String.fromCodePoint(o)}function ro(n,e,t,r){let{value:s,type:i,comment:o,range:a}=e.type==="block-scalar"?to(n,e,r):no(e,n.options.strict,r),u=t?n.directives.tagName(t.source,d=>r(t,"TAG_RESOLVE_FAILED",d)):null,l;n.options.stringKeys&&n.atKey?l=n.schema[Ie]:u?l=pf(n.schema,s,u,t,r):e.type==="scalar"?l=mf(n,s,e,r):l=n.schema[Ie];let f;try{let d=l.resolve(s,p=>r(t!=null?t:e,"TAG_RESOLVE_FAILED",p),n.options);f=K(d)?d:new P(d)}catch(d){let p=d instanceof Error?d.message:String(d);r(t!=null?t:e,"TAG_RESOLVE_FAILED",p),f=new P(s)}return f.range=a,f.source=s,i&&(f.type=i),u&&(f.tag=u),l.format&&(f.format=l.format),o&&(f.comment=o),f}function pf(n,e,t,r,s){var a;if(t==="!")return n[Ie];let i=[];for(let u of n.tags)if(!u.collection&&u.tag===t)if(u.default&&u.test)i.push(u);else return u;for(let u of i)if((a=u.test)!=null&&a.test(e))return u;let o=n.knownTags[t];return o&&!o.collection?(n.tags.push(Object.assign({},o,{default:!1,test:void 0})),o):(s(r,"TAG_RESOLVE_FAILED",`Unresolved tag: ${t}`,t!=="tag:yaml.org,2002:str"),n[Ie])}function mf({atKey:n,directives:e,schema:t},r,s,i){var a;let o=t.tags.find(u=>{var l;return(u.default===!0||n&&u.default==="key")&&((l=u.test)==null?void 0:l.test(r))})||t[Ie];if(t.compat){let u=(a=t.compat.find(l=>{var f;return l.default&&((f=l.test)==null?void 0:f.test(r))}))!=null?a:t[Ie];if(o.tag!==u.tag){let l=e.tagString(o.tag),f=e.tagString(u.tag),d=`Value may be parsed as either ${l} or ${f}`;i(s,"TAG_RESOLVE_FAILED",d,!0)}}return o}function Tu(n,e,t){if(e){t===null&&(t=e.length);for(let r=t-1;r>=0;--r){let s=e[r];switch(s.type){case"space":case"comment":case"newline":n-=s.source.length;continue}for(s=e[++r];(s==null?void 0:s.type)==="space";)n+=s.source.length,s=e[++r];break}}return n}var Df={composeNode:so,composeEmptyNode:As};function so(n,e,t,r){let s=n.atKey,{spaceBefore:i,comment:o,anchor:a,tag:u}=t,l,f=!0;switch(e.type){case"alias":l=yf(n,e,r),(a||u)&&r(e,"ALIAS_PROPS","An alias node must not specify any properties");break;case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":case"block-scalar":l=ro(n,e,u,r),a&&(l.anchor=a.source.substring(1));break;case"block-map":case"block-seq":case"flow-collection":l=Eu(Df,n,e,t,r),a&&(l.anchor=a.source.substring(1));break;default:{let d=e.type==="error"?e.message:`Unsupported token (type: ${e.type})`;r(e,"UNEXPECTED_TOKEN",d),l=As(n,e.offset,void 0,null,t,r),f=!1}}return a&&l.anchor===""&&r(a,"BAD_ALIAS","Anchor cannot be an empty string"),s&&n.options.stringKeys&&(!K(l)||typeof l.value!="string"||l.tag&&l.tag!=="tag:yaml.org,2002:str")&&r(u!=null?u:e,"NON_STRING_KEY","With stringKeys, all keys must be strings"),i&&(l.spaceBefore=!0),o&&(e.type==="scalar"&&e.source===""?l.comment=o:l.commentBefore=o),n.options.keepSourceTokens&&f&&(l.srcToken=e),l}function As(n,e,t,r,{spaceBefore:s,comment:i,anchor:o,tag:a,end:u},l){let f={type:"scalar",offset:Tu(e,t,r),indent:-1,source:""},d=ro(n,f,a,l);return o&&(d.anchor=o.source.substring(1),d.anchor===""&&l(o,"BAD_ALIAS","Anchor cannot be an empty string")),s&&(d.spaceBefore=!0),i&&(d.comment=i,d.range[2]=u),d}function yf({options:n},{offset:e,source:t,end:r},s){let i=new Et(t.substring(1));i.source===""&&s(e,"BAD_ALIAS","Alias cannot be an empty string"),i.source.endsWith(":")&&s(e+t.length-1,"BAD_ALIAS","Alias ending in : is ambiguous",!0);let o=e+t.length,a=ut(r,o,n.strict,s);return i.range=[e,o,a.offset],a.comment&&(i.comment=a.comment),i}function Su(n,e,{offset:t,start:r,value:s,end:i},o){let a=Object.assign({_directives:e},n),u=new Nt(void 0,a),l={atKey:!1,atRoot:!0,directives:u.directives,options:u.options,schema:u.schema},f=at(r,{indicator:"doc-start",next:s!=null?s:i==null?void 0:i[0],offset:t,onError:o,parentIndent:0,startOnNewline:!0});f.found&&(u.directives.docStart=!0,s&&(s.type==="block-map"||s.type==="block-seq")&&!f.hasNewline&&o(f.end,"MISSING_CHAR","Block collection cannot start on same line with directives-end marker")),u.contents=s?so(l,s,f,o):As(l,f.end,r,null,f,o);let d=u.contents.range[2],p=ut(i,d,!1,o);return p.comment&&(u.comment=p.comment),u.range=[t,d,p.offset],u}function xr(n){if(typeof n=="number")return[n,n+1];if(Array.isArray(n))return n.length===2?n:[n[0],n[1]];let{offset:e,source:t}=n;return[e,e+(typeof t=="string"?t.length:1)]}function ku(n){var s;let e="",t=!1,r=!1;for(let i=0;i{let o=xr(t);i?this.warnings.push(new vr(o,r,s)):this.errors.push(new Qe(o,r,s))},this.directives=new it({version:e.version||"1.2"}),this.options=e}decorate(e,t){let{comment:r,afterEmptyLine:s}=ku(this.prelude);if(r){let i=e.contents;if(t)e.comment=e.comment?`${e.comment}\n${r}`:r;else if(s||e.directives.docStart||!i)e.commentBefore=r;else if(Z(i)&&!i.flow&&i.items.length>0){let o=i.items[0];H(o)&&(o=o.key);let a=o.commentBefore;o.commentBefore=a?`${r}\n${a}`:r}else{let o=i.commentBefore;i.commentBefore=o?`${r}\n${o}`:r}}t?(Array.prototype.push.apply(e.errors,this.errors),Array.prototype.push.apply(e.warnings,this.warnings)):(e.errors=this.errors,e.warnings=this.warnings),this.prelude=[],this.errors=[],this.warnings=[]}streamInfo(){return{comment:ku(this.prelude).comment,directives:this.directives,errors:this.errors,warnings:this.warnings}}*compose(e,t=!1,r=-1){for(let s of e)yield*S(this.next(s));yield*S(this.end(t,r))}*next(e){switch(e.type){case"directive":this.directives.add(e.source,(t,r,s)=>{let i=xr(e);i[0]+=t,this.onError(i,"BAD_DIRECTIVE",r,s)}),this.prelude.push(e.source),this.atDirectives=!0;break;case"document":{let t=Su(this.options,this.directives,e,this.onError);this.atDirectives&&!t.directives.docStart&&this.onError(e,"MISSING_CHAR","Missing directives-end/doc-start indicator line"),this.decorate(t,!1),this.doc&&(yield this.doc),this.doc=t,this.atDirectives=!1;break}case"byte-order-mark":case"space":break;case"comment":case"newline":this.prelude.push(e.source);break;case"error":{let t=e.source?`${e.message}: ${JSON.stringify(e.source)}`:e.message,r=new Qe(xr(e),"UNEXPECTED_TOKEN",t);this.atDirectives||!this.doc?this.errors.push(r):this.doc.errors.push(r);break}case"doc-end":{if(!this.doc){let r="Unexpected doc-end without preceding document";this.errors.push(new Qe(xr(e),"UNEXPECTED_TOKEN",r));break}this.doc.directives.docEnd=!0;let t=ut(e.end,e.offset+e.source.length,this.doc.options.strict,this.onError);if(this.decorate(this.doc,!0),t.comment){let r=this.doc.comment;this.doc.comment=r?`${r}\n${t.comment}`:t.comment}this.doc.range[2]=t.offset;break}default:this.errors.push(new Qe(xr(e),"UNEXPECTED_TOKEN",`Unsupported token ${e.type}`))}}*end(e=!1,t=-1){if(this.doc)this.decorate(this.doc,!0),yield this.doc,this.doc=null;else if(e){let r=Object.assign({_directives:this.directives},this.options),s=new Nt(void 0,r);this.atDirectives&&this.onError(t,"MISSING_CHAR","Missing directives-end indicator line"),s.range=[0,t,t],this.decorate(s,!1),yield s}}};var io=Symbol("break visit"),gf=Symbol("skip children"),Cu=Symbol("remove item");function Jt(n,e){"type"in n&&n.type==="document"&&(n={start:n.start,value:n.value}),vu(Object.freeze([]),n,e)}Jt.BREAK=io;Jt.SKIP=gf;Jt.REMOVE=Cu;Jt.itemAtPath=(n,e)=>{let t=n;for(let[r,s]of e){let i=t==null?void 0:t[r];if(i&&"items"in i)t=i.items[s];else return}return t};Jt.parentCollection=(n,e)=>{let t=Jt.itemAtPath(n,e.slice(0,-1)),r=e[e.length-1][0],s=t==null?void 0:t[r];if(s&&"items"in s)return s;throw new Error("Parent collection not found")};function vu(n,e,t){let r=t(e,n);if(typeof r=="symbol")return r;for(let s of["key","value"]){let i=e[s];if(i&&"items"in i){for(let o=0;o":return"block-scalar-header"}return null}function Xe(n){switch(n){case void 0:case" ":case`\n`:case"\\r":case" ":return!0;default:return!1}}var xu=new Set("0123456789ABCDEFabcdef"),Ff=new Set("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-#;/?:@&=+$_.!~*\'()"),_s=new Set(",[]{}"),Ef=new Set(` ,[]{}\n\\r `),lo=n=>!n||Ef.has(n),Lr=class{constructor(){this.atEnd=!1,this.blockScalarIndent=-1,this.blockScalarKeep=!1,this.buffer="",this.flowKey=!1,this.flowLevel=0,this.indentNext=0,this.indentValue=0,this.lineEndPos=null,this.next=null,this.pos=0}*lex(e,t=!1){var s;if(e){if(typeof e!="string")throw TypeError("source is not a string");this.buffer=this.buffer?this.buffer+e:e,this.lineEndPos=null}this.atEnd=!t;let r=(s=this.next)!=null?s:"stream";for(;r&&(t||this.hasChars(1));)r=yield*S(this.parseNext(r))}atLineEnd(){let e=this.pos,t=this.buffer[e];for(;t===" "||t===" ";)t=this.buffer[++e];return!t||t==="#"||t===`\n`?!0:t==="\\r"?this.buffer[e+1]===`\n`:!1}charAt(e){return this.buffer[this.pos+e]}continueScalar(e){let t=this.buffer[e];if(this.indentNext>0){let r=0;for(;t===" ";)t=this.buffer[++r+e];if(t==="\\r"){let s=this.buffer[r+e+1];if(s===`\n`||!s&&!this.atEnd)return e+r+1}return t===`\n`||r>=this.indentNext||!t&&!this.atEnd?e+r:-1}if(t==="-"||t==="."){let r=this.buffer.substr(e,3);if((r==="---"||r==="...")&&Xe(this.buffer[e+3]))return-1}return e}getLine(){let e=this.lineEndPos;return(typeof e!="number"||e!==-1&ðis.indentValue&&!Xe(this.charAt(1))&&(this.indentNext=this.indentValue),yield*S(this.parseBlockStart())}*parseBlockStart(){let[e,t]=this.peek(2);if(!t&&!this.atEnd)return this.setNext("block-start");if((e==="-"||e==="?"||e===":")&&Xe(t)){let r=(yield*S(this.pushCount(1)))+(yield*S(this.pushSpaces(!0)));return this.indentNext=this.indentValue+1,this.indentValue+=r,yield*S(this.parseBlockStart())}return"doc"}*parseDocument(){yield*S(this.pushSpaces(!0));let e=this.getLine();if(e===null)return this.setNext("doc");let t=yield*S(this.pushIndicators());switch(e[t]){case"#":yield*S(this.pushCount(e.length-t));case void 0:return yield*S(this.pushNewline()),yield*S(this.parseLineStart());case"{":case"[":return yield*S(this.pushCount(1)),this.flowKey=!1,this.flowLevel=1,"flow";case"}":case"]":return yield*S(this.pushCount(1)),"doc";case"*":return yield*S(this.pushUntil(lo)),"doc";case\'"\':case"\'":return yield*S(this.parseQuotedScalar());case"|":case">":return t+=yield*S(this.parseBlockScalarHeader()),t+=yield*S(this.pushSpaces(!0)),yield*S(this.pushCount(e.length-t)),yield*S(this.pushNewline()),yield*S(this.parseBlockScalar());default:return yield*S(this.parsePlainScalar())}}*parseFlowCollection(){let e,t,r=-1;do e=yield*S(this.pushNewline()),e>0?(t=yield*S(this.pushSpaces(!1)),this.indentValue=r=t):t=0,t+=yield*S(this.pushSpaces(!0));while(e+t>0);let s=this.getLine();if(s===null)return this.setNext("flow");if((r!==-1&&r"0"&&t<="9")this.blockScalarIndent=Number(t)-1;else if(t!=="-")break}return yield*S(this.pushUntil(t=>Xe(t)||t==="#"))}*parseBlockScalar(){let e=this.pos-1,t=0,r;e:for(let i=this.pos;r=this.buffer[i];++i)switch(r){case" ":t+=1;break;case`\n`:e=i,t=0;break;case"\\r":{let o=this.buffer[i+1];if(!o&&!this.atEnd)return this.setNext("block-scalar");if(o===`\n`)break}default:break e}if(!r&&!this.atEnd)return this.setNext("block-scalar");if(t>=this.indentNext){this.blockScalarIndent===-1?this.indentNext=t:this.indentNext=this.blockScalarIndent+(this.indentNext===0?1:this.indentNext);do{let i=this.continueScalar(e+1);if(i===-1)break;e=this.buffer.indexOf(`\n`,i)}while(e!==-1);if(e===-1){if(!this.atEnd)return this.setNext("block-scalar");e=this.buffer.length}}let s=e+1;for(r=this.buffer[s];r===" ";)r=this.buffer[++s];if(r===" "){for(;r===" "||r===" "||r==="\\r"||r===`\n`;)r=this.buffer[++s];e=s-1}else if(!this.blockScalarKeep)do{let i=e-1,o=this.buffer[i];o==="\\r"&&(o=this.buffer[--i]);let a=i;for(;o===" ";)o=this.buffer[--i];if(o===`\n`&&i>=this.pos&&i+1+t>a)e=i;else break}while(!0);return yield Ms,yield*S(this.pushToIndex(e+1,!0)),yield*S(this.parseLineStart())}*parsePlainScalar(){let e=this.flowLevel>0,t=this.pos-1,r=this.pos-1,s;for(;s=this.buffer[++r];)if(s===":"){let i=this.buffer[r+1];if(Xe(i)||e&&_s.has(i))break;t=r}else if(Xe(s)){let i=this.buffer[r+1];if(s==="\\r"&&(i===`\n`?(r+=1,s=`\n`,i=this.buffer[r+1]):t=r),i==="#"||e&&_s.has(i))break;if(s===`\n`){let o=this.continueScalar(r+1);if(o===-1)break;r=Math.max(r,o-2)}}else{if(e&&_s.has(s))break;t=r}return!s&&!this.atEnd?this.setNext("plain-scalar"):(yield Ms,yield*S(this.pushToIndex(t+1,!0)),e?"flow":"doc")}*pushCount(e){return e>0?(yield this.buffer.substr(this.pos,e),this.pos+=e,e):0}*pushToIndex(e,t){let r=this.buffer.slice(this.pos,e);return r?(yield r,this.pos+=r.length,r.length):(t&&(yield""),0)}*pushIndicators(){switch(this.charAt(0)){case"!":return(yield*S(this.pushTag()))+(yield*S(this.pushSpaces(!0)))+(yield*S(this.pushIndicators()));case"&":return(yield*S(this.pushUntil(lo)))+(yield*S(this.pushSpaces(!0)))+(yield*S(this.pushIndicators()));case"-":case"?":case":":{let e=this.flowLevel>0,t=this.charAt(1);if(Xe(t)||e&&_s.has(t))return e?this.flowKey&&(this.flowKey=!1):this.indentNext=this.indentValue+1,(yield*S(this.pushCount(1)))+(yield*S(this.pushSpaces(!0)))+(yield*S(this.pushIndicators()))}}return 0}*pushTag(){if(this.charAt(1)==="<"){let e=this.pos+2,t=this.buffer[e];for(;!Xe(t)&&t!==">";)t=this.buffer[++e];return yield*S(this.pushToIndex(t===">"?e+1:e,!1))}else{let e=this.pos+1,t=this.buffer[e];for(;t;)if(Ff.has(t))t=this.buffer[++e];else if(t==="%"&&xu.has(this.buffer[e+1])&&xu.has(this.buffer[e+2]))t=this.buffer[e+=3];else break;return yield*S(this.pushToIndex(e,!1))}}*pushNewline(){let e=this.buffer[this.pos];return e===`\n`?yield*S(this.pushCount(1)):e==="\\r"&&this.charAt(1)===`\n`?yield*S(this.pushCount(2)):0}*pushSpaces(e){let t=this.pos-1,r;do r=this.buffer[++t];while(r===" "||e&&r===" ");let s=t-this.pos;return s>0&&(yield this.buffer.substr(this.pos,s),this.pos=t),s}*pushUntil(e){let t=this.pos,r=this.buffer[t];for(;!e(r);)r=this.buffer[++t];return yield*S(this.pushToIndex(t,!1))}};var Nr=class{constructor(){this.lineStarts=[],this.addNewLine=e=>this.lineStarts.push(e),this.linePos=e=>{let t=0,r=this.lineStarts.length;for(;t>1;this.lineStarts[i]=0;)switch(n[e].type){case"doc-start":case"explicit-key-ind":case"map-value-ind":case"seq-item-ind":case"newline":break e}for(;((t=n[++e])==null?void 0:t.type)==="space";);return n.splice(e,n.length)}function Lu(n){if(n.start.type==="flow-seq-start")for(let e of n.items)e.sep&&!e.value&&!zt(e.start,"explicit-key-ind")&&!zt(e.sep,"map-value-ind")&&(e.key&&(e.value=e.key),delete e.key,Nu(e.value)?e.value.end?Array.prototype.push.apply(e.value.end,e.sep):e.value.end=e.sep:Array.prototype.push.apply(e.start,e.sep),delete e.sep)}var Ar=class{constructor(e){this.atNewLine=!0,this.atScalar=!1,this.indent=0,this.offset=0,this.onKeyLine=!1,this.stack=[],this.source="",this.type="",this.lexer=new Lr,this.onNewLine=e}*parse(e,t=!1){this.onNewLine&&this.offset===0&&this.onNewLine(0);for(let r of this.lexer.lex(e,t))yield*S(this.next(r));t||(yield*S(this.end()))}*next(e){if(this.source=e,this.atScalar){this.atScalar=!1,yield*S(this.step()),this.offset+=e.length;return}let t=Ou(e);if(t)if(t==="scalar")this.atNewLine=!1,this.atScalar=!0,this.type="scalar";else{switch(this.type=t,yield*S(this.step()),t){case"newline":this.atNewLine=!0,this.indent=0,this.onNewLine&&this.onNewLine(this.offset+e.length);break;case"space":this.atNewLine&&e[0]===" "&&(this.indent+=e.length);break;case"explicit-key-ind":case"map-value-ind":case"seq-item-ind":this.atNewLine&&(this.indent+=e.length);break;case"doc-mode":case"flow-error-end":return;default:this.atNewLine=!1}this.offset+=e.length}else{let r=`Not a YAML token: ${e}`;yield*S(this.pop({type:"error",offset:this.offset,message:r,source:e})),this.offset+=e.length}}*end(){for(;this.stack.length>0;)yield*S(this.pop())}get sourceToken(){return{type:this.type,offset:this.offset,indent:this.indent,source:this.source}}*step(){let e=this.peek(1);if(this.type==="doc-end"&&(!e||e.type!=="doc-end")){for(;this.stack.length>0;)yield*S(this.pop());this.stack.push({type:"doc-end",offset:this.offset,source:this.source});return}if(!e)return yield*S(this.stream());switch(e.type){case"document":return yield*S(this.document(e));case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return yield*S(this.scalar(e));case"block-scalar":return yield*S(this.blockScalar(e));case"block-map":return yield*S(this.blockMap(e));case"block-seq":return yield*S(this.blockSequence(e));case"flow-collection":return yield*S(this.flowCollection(e));case"doc-end":return yield*S(this.documentEnd(e))}yield*S(this.pop())}peek(e){return this.stack[this.stack.length-e]}*pop(e){let t=e!=null?e:this.stack.pop();if(!t)yield{type:"error",offset:this.offset,source:"",message:"Tried to pop an empty stack"};else if(this.stack.length===0)yield t;else{let r=this.peek(1);switch(t.type==="block-scalar"?t.indent="indent"in r?r.indent:0:t.type==="flow-collection"&&r.type==="document"&&(t.indent=0),t.type==="flow-collection"&&Lu(t),r.type){case"document":r.value=t;break;case"block-scalar":r.props.push(t);break;case"block-map":{let s=r.items[r.items.length-1];if(s.value){r.items.push({start:[],key:t,sep:[]}),this.onKeyLine=!0;return}else if(s.sep)s.value=t;else{Object.assign(s,{key:t,sep:[]}),this.onKeyLine=!s.explicitKey;return}break}case"block-seq":{let s=r.items[r.items.length-1];s.value?r.items.push({start:[],value:t}):s.value=t;break}case"flow-collection":{let s=r.items[r.items.length-1];!s||s.value?r.items.push({start:[],key:t,sep:[]}):s.sep?s.value=t:Object.assign(s,{key:t,sep:[]});return}default:yield*S(this.pop()),yield*S(this.pop(t))}if((r.type==="document"||r.type==="block-map"||r.type==="block-seq")&&(t.type==="block-map"||t.type==="block-seq")){let s=t.items[t.items.length-1];s&&!s.sep&&!s.value&&s.start.length>0&&Iu(s.start)===-1&&(t.indent===0||s.start.every(i=>i.type!=="comment"||i.indent=e.indent){let s=!this.onKeyLine&&this.indent===e.indent,i=s&&(t.sep||t.explicitKey)&&this.type!=="seq-item-ind",o=[];if(i&&t.sep&&!t.value){let a=[];for(let u=0;ue.indent&&(a.length=0);break;default:a.length=0}}a.length>=2&&(o=t.sep.splice(a[1]))}switch(this.type){case"anchor":case"tag":i||t.value?(o.push(this.sourceToken),e.items.push({start:o}),this.onKeyLine=!0):t.sep?t.sep.push(this.sourceToken):t.start.push(this.sourceToken);return;case"explicit-key-ind":!t.sep&&!t.explicitKey?(t.start.push(this.sourceToken),t.explicitKey=!0):i||t.value?(o.push(this.sourceToken),e.items.push({start:o,explicitKey:!0})):this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken],explicitKey:!0}]}),this.onKeyLine=!0;return;case"map-value-ind":if(t.explicitKey)if(t.sep)if(t.value)e.items.push({start:[],key:null,sep:[this.sourceToken]});else if(zt(t.sep,"map-value-ind"))this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:o,key:null,sep:[this.sourceToken]}]});else if(Nu(t.key)&&!zt(t.sep,"newline")){let a=Nn(t.start),u=t.key,l=t.sep;l.push(this.sourceToken),delete t.key,delete t.sep,this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:a,key:u,sep:l}]})}else o.length>0?t.sep=t.sep.concat(o,this.sourceToken):t.sep.push(this.sourceToken);else if(zt(t.start,"newline"))Object.assign(t,{key:null,sep:[this.sourceToken]});else{let a=Nn(t.start);this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:a,key:null,sep:[this.sourceToken]}]})}else t.sep?t.value||i?e.items.push({start:o,key:null,sep:[this.sourceToken]}):zt(t.sep,"map-value-ind")?this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:[],key:null,sep:[this.sourceToken]}]}):t.sep.push(this.sourceToken):Object.assign(t,{key:null,sep:[this.sourceToken]});this.onKeyLine=!0;return;case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":{let a=this.flowScalar(this.type);i||t.value?(e.items.push({start:o,key:a,sep:[]}),this.onKeyLine=!0):t.sep?this.stack.push(a):(Object.assign(t,{key:a,sep:[]}),this.onKeyLine=!0);return}default:{let a=this.startBlockValue(e);if(a){s&&a.type!=="block-seq"&&e.items.push({start:o}),this.stack.push(a);return}}}}yield*S(this.pop()),yield*S(this.step())}*blockSequence(e){var r;let t=e.items[e.items.length-1];switch(this.type){case"newline":if(t.value){let s="end"in t.value?t.value.end:void 0,i=Array.isArray(s)?s[s.length-1]:void 0;(i==null?void 0:i.type)==="comment"?s==null||s.push(this.sourceToken):e.items.push({start:[this.sourceToken]})}else t.start.push(this.sourceToken);return;case"space":case"comment":if(t.value)e.items.push({start:[this.sourceToken]});else{if(this.atIndentedComment(t.start,e.indent)){let s=e.items[e.items.length-2],i=(r=s==null?void 0:s.value)==null?void 0:r.end;if(Array.isArray(i)){Array.prototype.push.apply(i,t.start),i.push(this.sourceToken),e.items.pop();return}}t.start.push(this.sourceToken)}return;case"anchor":case"tag":if(t.value||this.indent<=e.indent)break;t.start.push(this.sourceToken);return;case"seq-item-ind":if(this.indent!==e.indent)break;t.value||zt(t.start,"seq-item-ind")?e.items.push({start:[this.sourceToken]}):t.start.push(this.sourceToken);return}if(this.indent>e.indent){let s=this.startBlockValue(e);if(s){this.stack.push(s);return}}yield*S(this.pop()),yield*S(this.step())}*flowCollection(e){let t=e.items[e.items.length-1];if(this.type==="flow-error-end"){let r;do yield*S(this.pop()),r=this.peek(1);while(r&&r.type==="flow-collection")}else if(e.end.length===0){switch(this.type){case"comma":case"explicit-key-ind":!t||t.sep?e.items.push({start:[this.sourceToken]}):t.start.push(this.sourceToken);return;case"map-value-ind":!t||t.value?e.items.push({start:[],key:null,sep:[this.sourceToken]}):t.sep?t.sep.push(this.sourceToken):Object.assign(t,{key:null,sep:[this.sourceToken]});return;case"space":case"comment":case"newline":case"anchor":case"tag":!t||t.value?e.items.push({start:[this.sourceToken]}):t.sep?t.sep.push(this.sourceToken):t.start.push(this.sourceToken);return;case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":{let s=this.flowScalar(this.type);!t||t.value?e.items.push({start:[],key:s,sep:[]}):t.sep?this.stack.push(s):Object.assign(t,{key:s,sep:[]});return}case"flow-map-end":case"flow-seq-end":e.end.push(this.sourceToken);return}let r=this.startBlockValue(e);r?this.stack.push(r):(yield*S(this.pop()),yield*S(this.step()))}else{let r=this.peek(2);if(r.type==="block-map"&&(this.type==="map-value-ind"&&r.indent===e.indent||this.type==="newline"&&!r.items[r.items.length-1].sep))yield*S(this.pop()),yield*S(this.step());else if(this.type==="map-value-ind"&&r.type!=="flow-collection"){let s=Bs(r),i=Nn(s);Lu(e);let o=e.end.splice(1,e.end.length);o.push(this.sourceToken);let a={type:"block-map",offset:e.offset,indent:e.indent,items:[{start:i,key:e,sep:o}]};this.onKeyLine=!0,this.stack[this.stack.length-1]=a}else yield*S(this.lineEnd(e))}}flowScalar(e){if(this.onNewLine){let t=this.source.indexOf(`\n`)+1;for(;t!==0;)this.onNewLine(this.offset+t),t=this.source.indexOf(`\n`,t)+1}return{type:e,offset:this.offset,indent:this.indent,source:this.source}}startBlockValue(e){switch(this.type){case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return this.flowScalar(this.type);case"block-scalar-header":return{type:"block-scalar",offset:this.offset,indent:this.indent,props:[this.sourceToken],source:""};case"flow-map-start":case"flow-seq-start":return{type:"flow-collection",offset:this.offset,indent:this.indent,start:this.sourceToken,items:[],end:[]};case"seq-item-ind":return{type:"block-seq",offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken]}]};case"explicit-key-ind":{this.onKeyLine=!0;let t=Bs(e),r=Nn(t);return r.push(this.sourceToken),{type:"block-map",offset:this.offset,indent:this.indent,items:[{start:r,explicitKey:!0}]}}case"map-value-ind":{this.onKeyLine=!0;let t=Bs(e),r=Nn(t);return{type:"block-map",offset:this.offset,indent:this.indent,items:[{start:r,key:null,sep:[this.sourceToken]}]}}}return null}atIndentedComment(e,t){return this.type!=="comment"||this.indent<=t?!1:e.every(r=>r.type==="newline"||r.type==="space")}*documentEnd(e){this.type!=="doc-mode"&&(e.end?e.end.push(this.sourceToken):e.end=[this.sourceToken],this.type==="newline"&&(yield*S(this.pop())))}*lineEnd(e){switch(this.type){case"comma":case"doc-start":case"doc-end":case"flow-seq-end":case"flow-map-end":case"map-value-ind":yield*S(this.pop()),yield*S(this.step());break;case"newline":this.onKeyLine=!1;case"space":case"comment":default:e.end?e.end.push(this.sourceToken):e.end=[this.sourceToken],this.type==="newline"&&(yield*S(this.pop()))}}};function wf(n){let e=n.prettyErrors!==!1;return{lineCounter:n.lineCounter||e&&new Nr||null,prettyErrors:e}}function Au(n,e={}){let{lineCounter:t,prettyErrors:r}=wf(e),s=new Ar(t==null?void 0:t.addNewLine),i=new Ir(e),o=null;for(let a of i.compose(s.parse(n),!0,n.length))if(!o)o=a;else if(o.options.logLevel!=="silent"){o.errors.push(new Qe(a.range.slice(0,2),"MULTIPLE_DOCS","Source contains multiple documents; please use YAML.parseAllDocuments()"));break}return r&&t&&(o.errors.forEach(Zi(n,t)),o.warnings.forEach(Zi(n,t))),o}function co(n,e,t){let r;typeof e=="function"?r=e:t===void 0&&e&&typeof e=="object"&&(t=e);let s=Au(n,t);if(!s)return null;if(s.warnings.forEach(i=>ps(s.options.logLevel,i)),s.errors.length>0){if(s.options.logLevel!=="silent")throw s.errors[0];s.errors=[]}return s.toJS(Object.assign({reviver:r},t))}var js=Vr(Ru());var F=Vr(ns());var et;(N=>{N.DEFAULT_TO_STRING={nullRepresentation:"-",dateFormat:"MMMM dd, yyyy",dateTimeFormat:"h:mm a - MMMM dd, yyyy"};function e(y,w=N.DEFAULT_TO_STRING,v=!1){let O=t(y);if(!O)return w.nullRepresentation;switch(O.type){case"null":return w.nullRepresentation;case"string":return O.value;case"number":case"boolean":return""+O.value;case"link":return O.value.markdown();case"function":return"";case"array":let C="";return v&&(C+="["),C+=O.value.map(V=>e(V,w,!0)).join(", "),v&&(C+="]"),C;case"object":return"{ "+Object.entries(O.value).map(V=>V[0]+": "+e(V[1],w,!0)).join(", ")+" }";case"date":return ja(O.value,w.dateFormat,w.dateTimeFormat);case"duration":return qa(O.value)}}N.toString=e;function t(y){return h(y)?{type:"null",value:y}:f(y)?{type:"number",value:y}:l(y)?{type:"string",value:y}:g(y)?{type:"boolean",value:y}:p(y)?{type:"duration",value:y}:d(y)?{type:"date",value:y}:b(y)?{type:"array",value:y}:D(y)?{type:"link",value:y}:I(y)?{type:"function",value:y}:T(y)?{type:"object",value:y}:void 0}N.wrapValue=t;function r(y,w){if(T(y)){let v={};for(let[O,C]of Object.entries(y))v[O]=r(C,w);return v}else if(b(y)){let v=[];for(let O of y)v.push(r(O,w));return v}else return w(y)}N.mapLeaves=r;function s(y,w){return i(y,w)==0}N.equals=s;function i(y,w,v){var V,j;if(y===w||(y===void 0&&(y=null),w===void 0&&(w=null),y===null&&w===null))return 0;if(y===null)return-1;if(w===null)return 1;let O=t(y),C=t(w);if(O===void 0&&C===void 0)return 0;if(O===void 0)return-1;if(C===void 0)return 1;if(O.type!=C.type)return O.type.localeCompare(C.type);if(O.value===C.value)return 0;switch(O.type){case"string":return O.value.localeCompare(C.value);case"number":return O.valueAe,x=ae(Y.path).localeCompare(ae(ee.path));if(x!=0)return x;let $=Y.type.localeCompare(ee.type);return $!=0?$:Y.subpath&&!ee.subpath?1:!Y.subpath&&ee.subpath?-1:!Y.subpath&&!ee.subpath?0:((V=Y.subpath)!=null?V:"").localeCompare((j=ee.subpath)!=null?j:"");case"date":return O.value0;case"boolean":return w.value;case"link":return!!w.value.path;case"date":return w.value.toMillis()!=0;case"duration":return w.value.as("seconds")!=0;case"object":return Object.keys(w.value).length>0;case"array":return w.value.length>0;case"null":return!1;case"function":return!0}}N.isTruthy=a;function u(y){if(y==null)return y;if(N.isArray(y))return[].concat(y.map(w=>u(w)));if(N.isObject(y)){let w={};for(let[v,O]of Object.entries(y))w[v]=u(O);return w}else return y}N.deepCopy=u;function l(y){return typeof y=="string"}N.isString=l;function f(y){return typeof y=="number"}N.isNumber=f;function d(y){return y instanceof q}N.isDate=d;function p(y){return y instanceof B}N.isDuration=p;function h(y){return y==null}N.isNull=h;function b(y){return Array.isArray(y)}N.isArray=b;function g(y){return typeof y=="boolean"}N.isBoolean=g;function D(y){return y instanceof xe}N.isLink=D;function T(y){return y!==void 0&&typeof y=="object"&&!b(y)&&!p(y)&&!d(y)&&!D(y)&&!h(y)}N.isObject=T;function I(y){return typeof y=="function"}N.isFunction=I})(et||(et={}));var ju;(i=>{function n(o){return et.isObject(o)&&Object.keys(o).length==2&&"key"in o&&"rows"in o}i.isElementGroup=n;function e(o){for(let a of o)if(!n(a))return!1;return!0}i.isGrouping=e;function t(o){for(let a of o)if(n(a))return!1;return!0}i.isLeaf=t;function r(o){if(n(o))return r(o.rows);if(e(o)){let a=0;for(let u of o)a+=r(u.rows);return a}else return o.length}i.count=r;function s(o,a,u){if(u<=a)return[];if(t(o))return o.slice(a,u);let l=0,f=0;for(;l=o.length)return[];let d=[];for(;l{function n(u){return new ho(u)}a.success=n;function e(u){return new po(u)}a.failure=e;function t(u,l,f){return u.successful?l.successful?f(u.value,l.value):e(l.error):e(u.error)}a.flatMap2=t;function r(u,l,f){return t(u,l,(d,p)=>n(f(d,p)))}a.map2=r;function s(u,l){let f=[];for(let d of u){let p=l(d);if(!p.successful)return p.cast();f.push(p.value)}return a.success(f)}a.mapAll=s;function i(u){try{return a.success(u())}catch(l){return a.failure(l)}}a.trying=i;async function o(u){try{return a.success(await u)}catch(l){return a.failure(l)}}a.async=o})(Se||(Se={}));var Yt;(N=>{N.EVERYTHING={type:"everything"},N.NOTHING={type:"nothing"},N.EMPTY_SET=new Set;function r(y){return y.size==0?N.NOTHING:{type:"atom",value:y}}N.atom=r;function s(y){return y?N.EVERYTHING:N.NOTHING}N.constant=s;function i(y){return y!==void 0?r(y):N.NOTHING}N.nullableAtom=i;function o(y){return y.size==0?N.EVERYTHING:{type:"negated",value:y}}N.negated=o;function a(y){switch(y.type){case"everything":return N.NOTHING;case"nothing":return N.EVERYTHING;case"atom":return o(y.value);case"negated":return r(y.value)}}N.negate=a;function u(y){switch(y.type){case"everything":return!1;case"negated":return!1;case"atom":return y.value.size==0;case"nothing":return!0}}N.empty=u;function l(y,w){switch(y.type){case"everything":return w;case"nothing":return N.EMPTY_SET;case"atom":return y.value;case"negated":return I(w,y.value)}}N.resolve=l;function f(y){return d(y,w=>w)}N.intersect=f;function d(y,w){return p(y,v=>Se.success(w(v))).orElseThrow()}N.lazyIntersect=d;function p(y,w){let v=[],O=[];for(let C of y){let V=w(C);if(!V.successful)return V.cast();let j=V.value;if(j!==void 0){if(u(j))return Se.success(N.NOTHING);j.type!=="everything"&&(j.type=="atom"?v.push(j.value):j.type=="negated"&&O.push(j.value))}}return v.length==0&&O.length==0?Se.success(N.EVERYTHING):v.length>0&&O.length==0?Se.success(r(D(v))):v.length==0&&O.length>0?Se.success(o(T(O))):Se.success(N.atom(I(D(v),T(O))))}N.lazyFailableIntersection=p;function h(y){return b(y,w=>w)}N.union=h;function b(y,w){return g(y,v=>Se.success(w(v))).orElseThrow()}N.lazyUnion=b;function g(y,w){let v=[],O=[];for(let C of y){let V=w(C);if(!V.successful)return V.cast();let j=V.value;if(j!==void 0){if(j.type==="everything")return Se.success(N.EVERYTHING);u(j)||(j.type=="atom"?v.push(j.value):j.type=="negated"&&O.push(j.value))}}return v.length==0&&O.length==0?Se.success(N.NOTHING):v.length>0&&O.length==0?Se.success(N.atom(T(v))):v.length==0&&O.length>0?Se.success(N.negated(D(O))):Se.success(o(I(D(O),T(v))))}N.lazyFailableUnion=g;function D(y){if(y.length==0)return new Set;if(y.length==1)return y[0];let w=[].concat(y).sort((v,O)=>v.size-O.size);for(;w.length>1;){let v=new Set,O=w.pop();for(let C of w[0])O.has(C)&&v.add(C);w[0]=v}return w[0]}N.setIntersect=D;function T(y){if(y.length==0)return new Set;if(y.length==1)return y[0];let w=new Set;for(let v of y)for(let O of v)w.add(O);return w}N.setUnion=T;function I(y,w){if(y.size>w.size){let v=new Set(y);for(let O of w)v.delete(O);return v}else{let v=new Set;for(let O of y)w.has(O)||v.add(O);return v}}N.setIntersectNegation=I})(Yt||(Yt={}));var se;(g=>{g.ROW="$row";function e(D){return{type:"variable",name:D}}g.variable=e;function t(D){return{type:"literal",value:D}}g.literal=t;function r(D,T,I){return{type:"binaryop",left:D,op:T,right:I}}g.binaryOp=r;function s(D,T){return{type:"binaryop",left:D,right:T,op:"index"}}g.index=s;function i(D){let T=D.split("."),I=g.variable(T[0]);for(let N=1;N"||D==">="||D=="!="||D=="="}g.isCompareOp=d;function p(D,T=new Set([g.ROW])){switch(D.type){case"binaryop":return D.op==="index"&&D.left.type=="variable"&&D.left.name==g.ROW&&D.right.type=="literal"&&et.isString(D.right.value)?T.has(D.right.value)?new Set:new Set([D.right.value]):Yt.setUnion([p(D.left,T),p(D.right,T)]);case"function":return Yt.setUnion(D.arguments.map(N=>p(N,T)));case"lambda":let I=T!=null?T:new Set;for(let N of D.arguments)I.add(N);return p(D.value,I);case"list":return Yt.setUnion(D.values.map(N=>p(N,T)));case"negated":return p(D.child,T);case"object":return Yt.setUnion(Object.values(D.values).map(N=>p(N,T)));case"variable":return T&&T.has(D.name)?new Set:new Set([D.name]);case"literal":return new Set}}g.unboundVariables=p;function h(D){switch(D.type){case"binaryop":return D.op==="index"?`${h(D.left)}[${h(D.right)}]`:`${h(D.left)} ${D.op} ${h(D.right)}`;case"function":return`${h(D.func)}(${D.arguments.map(h).join(", ")})`;case"lambda":return`(${D.arguments.join(", ")}) => ${h(D.value)}`;case"list":return`[${D.values.map(h).join(", ")}]`;case"negated":return`!${h(D.child)}`;case"object":return`{${Object.entries(D.values).map(([I,N])=>`${I}: ${h(N)}`).join(", ")}}`;case"variable":return D.name;case"literal":let T=et.wrapValue(D.value);if(!T)return"null";switch(T.type){case"string":return`"${T.value}"`;default:return et.toString(T.value)}}}g.toString=h,g.NULL=g.literal(null)})(se||(se={}));var z=F.createLanguage({number:n=>F.regexp(/-?[0-9]+(\\.[0-9]+)?/).map(e=>Number.parseFloat(e)).desc("number"),string:n=>F.string(\'"\').then(F.alt(n.escapeCharacter,F.noneOf(\'"\\\\\')).atLeast(0).map(e=>e.join(""))).skip(F.string(\'"\')).desc("string"),escapeCharacter:n=>F.string("\\\\").then(F.any).map(e=>e===\'"\'?\'"\':e==="\\\\"?"\\\\":"\\\\"+e),bool:n=>F.regexp(/true|false|True|False/).map(e=>e.toLowerCase()=="true").desc("boolean"),tag:n=>F.seqMap(F.string("#"),F.alt(F.regexp(/[^\\u2000-\\u206F\\u2E00-\\u2E7F\'!"#$%&()*+,.:;<=>?@^`{|}~\\[\\]\\\\\\s]/).desc("text")).many(),(e,t)=>e+t.join("")).desc("tag"),identifier:n=>F.seqMap(F.alt(F.regexp(/[\\p{Letter}$]/u),F.regexp(qu).desc("text")),F.alt(F.regexp(/[0-9\\p{Letter}$_-]/u),F.regexp(qu).desc("text")).many(),(e,t)=>e+t.join("")).desc("variable"),link:n=>F.regexp(/\\[\\[([^\\[\\]]*?)\\]\\]/u,1).map(e=>xe.parseInner(e)).desc("file link"),embedLink:n=>F.seqMap(F.string("!").atMost(1),n.link,(e,t)=>(e.length>0&&(t.embed=!0),t)).desc("file link"),binaryPlusMinus:n=>F.regexp(/\\+|-/).map(e=>e).desc("\'+\' or \'-\'"),binaryMulDiv:n=>F.regexp(/\\*|\\/|%/).map(e=>e).desc("\'*\' or \'/\' or \'%\'"),binaryCompareOp:n=>F.regexp(/>=|<=|!=|>|<|=/).map(e=>e).desc("\'>=\' or \'<=\' or \'!=\' or \'=\' or \'>\' or \'<\'"),binaryAndOp:n=>F.regexp(/and|&/i).map(e=>"&").desc("\'and\'"),binaryOrOp:n=>F.regexp(/or|\\|/i).map(e=>"|").desc("\'or\'"),rootDate:n=>F.seqMap(F.regexp(/\\d{4}/),F.string("-"),F.regexp(/\\d{2}/),(e,t,r)=>q.fromObject({year:Number.parseInt(e),month:Number.parseInt(r)})).desc("date in format YYYY-MM[-DDTHH-MM-SS.MS]"),dateShorthand:n=>F.alt(...Object.keys(Uu).sort((e,t)=>t.length-e.length).map(F.string)),date:n=>xf(n.rootDate,e=>F.seqMap(F.string("-"),F.regexp(/\\d{2}/),(t,r)=>e.set({day:Number.parseInt(r)})),e=>F.seqMap(F.string("T"),F.regexp(/\\d{2}/),(t,r)=>e.set({hour:Number.parseInt(r)})),e=>F.seqMap(F.string(":"),F.regexp(/\\d{2}/),(t,r)=>e.set({minute:Number.parseInt(r)})),e=>F.seqMap(F.string(":"),F.regexp(/\\d{2}/),(t,r)=>e.set({second:Number.parseInt(r)})),e=>F.alt(F.seqMap(F.string("."),F.regexp(/\\d{3}/),(t,r)=>e.set({millisecond:Number.parseInt(r)})),F.succeed(e)),e=>F.alt(F.seqMap(F.string("+").or(F.string("-")),F.regexp(/\\d{1,2}(:\\d{2})?/),(t,r)=>e.setZone("UTC"+t+r,{keepLocalTime:!0})),F.seqMap(F.string("Z"),()=>e.setZone("utc",{keepLocalTime:!0})),F.seqMap(F.string("["),F.regexp(/[0-9A-Za-z+-\\/]+/u),F.string("]"),(t,r,s)=>e.setZone(r,{keepLocalTime:!0})))).assert(e=>e.isValid,"valid date").desc("date in format YYYY-MM[-DDTHH-MM-SS.MS]"),datePlus:n=>F.alt(n.dateShorthand.map(e=>Uu[e]()),n.date).desc("date in format YYYY-MM[-DDTHH-MM-SS.MS] or in shorthand"),durationType:n=>F.alt(...Object.keys(Vu).sort((e,t)=>t.length-e.length).map(F.string)),duration:n=>F.seqMap(n.number,F.optWhitespace,n.durationType,(e,t,r)=>Vu[r].mapUnits(s=>s*e)).sepBy1(F.string(",").trim(F.optWhitespace).or(F.optWhitespace)).map(e=>e.reduce((t,r)=>t.plus(r))).desc("duration like 4hr2min"),rawNull:n=>F.string("null"),atomInlineField:n=>F.alt(n.date,n.duration.map(e=>Mi(e)),n.string,n.tag,n.embedLink,n.bool,n.number,n.rawNull),inlineFieldList:n=>n.atomInlineField.sepBy(F.string(",").trim(F.optWhitespace).lookahead(n.atomInlineField)),inlineField:n=>F.alt(F.seqMap(n.atomInlineField,F.string(",").trim(F.optWhitespace),n.inlineFieldList,(e,t,r)=>[e].concat(r)),n.atomInlineField)}),qu=new RegExp(Fn(),""),Vu={year:B.fromObject({years:1}),years:B.fromObject({years:1}),yr:B.fromObject({years:1}),yrs:B.fromObject({years:1}),month:B.fromObject({months:1}),months:B.fromObject({months:1}),mo:B.fromObject({months:1}),mos:B.fromObject({months:1}),week:B.fromObject({weeks:1}),weeks:B.fromObject({weeks:1}),wk:B.fromObject({weeks:1}),wks:B.fromObject({weeks:1}),w:B.fromObject({weeks:1}),day:B.fromObject({days:1}),days:B.fromObject({days:1}),d:B.fromObject({days:1}),hour:B.fromObject({hours:1}),hours:B.fromObject({hours:1}),hr:B.fromObject({hours:1}),hrs:B.fromObject({hours:1}),h:B.fromObject({hours:1}),minute:B.fromObject({minutes:1}),minutes:B.fromObject({minutes:1}),min:B.fromObject({minutes:1}),mins:B.fromObject({minutes:1}),m:B.fromObject({minutes:1}),second:B.fromObject({seconds:1}),seconds:B.fromObject({seconds:1}),sec:B.fromObject({seconds:1}),secs:B.fromObject({seconds:1}),s:B.fromObject({seconds:1})},Uu={now:()=>q.local(),today:()=>q.local().startOf("day"),yesterday:()=>q.local().startOf("day").minus(B.fromObject({days:1})),tomorrow:()=>q.local().startOf("day").plus(B.fromObject({days:1})),sow:()=>q.local().startOf("week"),"start-of-week":()=>q.local().startOf("week"),eow:()=>q.local().endOf("week"),"end-of-week":()=>q.local().endOf("week"),soy:()=>q.local().startOf("year"),"start-of-year":()=>q.local().startOf("year"),eoy:()=>q.local().endOf("year"),"end-of-year":()=>q.local().endOf("year"),som:()=>q.local().startOf("month"),"start-of-month":()=>q.local().startOf("month"),eom:()=>q.local().endOf("month"),"end-of-month":()=>q.local().endOf("month")},Ku=F.createLanguage({variable:n=>z.identifier.map(se.variable).desc("variable"),number:n=>z.number.map(se.literal).desc("number"),string:n=>z.string.map(se.literal).desc("string"),bool:n=>z.bool.map(se.literal).desc("boolean"),date:n=>St("date",z.datePlus).map(([e,t])=>se.literal(t)).desc("date"),duration:n=>St("dur",z.duration).map(([e,t])=>se.literal(t)).desc("duration"),null:n=>z.rawNull.map(e=>se.NULL),link:n=>z.link.map(se.literal),list:n=>n.expression.sepBy(F.string(",").trim(F.optWhitespace)).wrap(F.string("[").skip(F.optWhitespace),F.optWhitespace.then(F.string("]"))).map(e=>se.list(e)).desc("list"),object:n=>F.seqMap(z.identifier.or(z.string),F.string(":").trim(F.optWhitespace),n.expression,(e,t,r)=>({name:e,value:r})).sepBy(F.string(",").trim(F.optWhitespace)).wrap(F.string("{").skip(F.optWhitespace),F.optWhitespace.then(F.string("}"))).map(e=>{let t={};for(let r of e)t[r.name]=r.value;return se.object(t)}).desc("object (\'{ a: 1, b: 2 }\')"),atom:n=>F.alt(z.embedLink.map(e=>se.literal(e)),n.negated,n.link,n.list,n.object,n.lambda,n.parens,n.bool,n.number,n.string,n.date,n.duration,n.null,n.variable),index:n=>F.seqMap(n.atom,F.alt(n.dotPostfix,n.indexPostfix,n.functionPostfix).many(),(e,t)=>{let r=e;for(let s of t)switch(s.type){case"dot":r=se.index(r,se.literal(s.expr));break;case"index":r=se.index(r,s.expr);break;case"function":r=se.func(r,s.exprs);break}return r}),negated:n=>F.seqMap(F.string("!"),n.index,(e,t)=>se.negate(t)).desc("negated field"),parens:n=>n.expression.trim(F.optWhitespace).wrap(F.string("("),F.string(")")),lambda:n=>F.seqMap(z.identifier.sepBy(F.string(",").trim(F.optWhitespace)).wrap(F.string("(").trim(F.optWhitespace),F.string(")").trim(F.optWhitespace)),F.string("=>").trim(F.optWhitespace),n.expression,(e,t,r)=>({type:"lambda",arguments:e,value:r})),dotPostfix:n=>F.seqMap(F.string("."),z.identifier,(e,t)=>({type:"dot",expr:t})),indexPostfix:n=>F.seqMap(F.string("["),F.optWhitespace,n.expression,F.optWhitespace,F.string("]"),(e,t,r,s,i)=>({type:"index",expr:r})),functionPostfix:n=>F.seqMap(F.string("("),F.optWhitespace,n.expression.sepBy(F.string(",").trim(F.optWhitespace)),F.optWhitespace,F.string(")"),(e,t,r,s,i)=>({type:"function",exprs:r})),binaryMulDiv:n=>Mn(n.index,z.binaryMulDiv,se.binaryOp),binaryPlusMinus:n=>Mn(n.binaryMulDiv,z.binaryPlusMinus,se.binaryOp),binaryCompare:n=>Mn(n.binaryPlusMinus,z.binaryCompareOp,se.binaryOp),binaryBoolean:n=>Mn(n.binaryCompare,z.binaryAndOp.or(z.binaryOrOp),se.binaryOp),binaryOp:n=>n.binaryBoolean,expression:n=>n.binaryOp}),lb=F.createLanguage({queryTag:n=>z.tag.map(e=>({type:"tagged",value:e})),queryId:n=>St("id",z.string).map(([e,t])=>({type:"id",value:t})),queryType:n=>F.string("@").then(z.identifier).map(e=>({type:"typed",value:e})),queryPath:n=>St(F.regexp(/e?path/i).desc("[e]path"),z.string).map(([e,t])=>({type:"path",value:t,exact:e.toLowerCase()==="epath"})),queryParentOf:n=>St(F.regexp(/parentof|supertree/i).desc("parentof"),n.query).map(([e,t])=>({type:"parent-of",children:t,inclusive:e.toLowerCase()==="supertree"})),queryChildOf:n=>St(F.regexp(/childof|subtree/i).desc("childof"),n.query).map(([e,t])=>({type:"child-of",parents:t,inclusive:e.toLowerCase()==="subtree"})),querySimpleLinked:n=>z.link.map(e=>({type:"linked",source:{type:"link",value:e},direction:"incoming"})),queryLinked:n=>St(F.regexp(/linksto|linkedfrom|connected/i).desc("connected"),n.query).map(([e,t])=>({type:"linked",source:t,direction:e.toLowerCase()=="linksto"?"incoming":e.toLowerCase()=="linkedfrom"?"outgoing":"both"})),queryExists:n=>St(F.regexp(/exists/i).desc("exists"),z.identifier.or(z.string)).map(([e,t])=>({type:"field",value:t})),queryQuotedExpression:n=>St(F.regexp(/expr/i).desc("expr"),Ku.expression).map(([e,t])=>({type:"expression",expression:t})),queryRawExpression:n=>Ku.binaryCompare.map(e=>({type:"expression",expression:e})),queryParens:n=>n.query.trim(F.optWhitespace).wrap(F.string("("),F.string(")")),queryNegate:n=>F.string("!").skip(F.optWhitespace).then(n.queryAtom).map(e=>({type:"not",element:e})),queryAtom:n=>F.alt(n.queryParens,n.queryNegate,n.querySimpleLinked,n.queryTag,n.queryType,n.queryId,n.queryExists,n.queryChildOf,n.queryParentOf,n.queryLinked,n.queryPath,n.queryQuotedExpression,n.queryRawExpression),queryAnds:n=>Mn(n.queryAtom,z.binaryAndOp,(e,t,r)=>({type:"and",elements:[e,r]})),queryOrs:n=>Mn(n.queryAnds,z.binaryOrOp,(e,t,r)=>({type:"or",elements:[e,r]})),query:n=>n.queryOrs.trim(F.optWhitespace)});function Mn(n,e,t){return F.seqMap(n,F.seq(F.optWhitespace,e,F.optWhitespace,n).many(),(r,s)=>{if(s.length==0)return r;let i=t(r,s[0][1],s[0][3]);for(let o=1;o[r,s])}function xf(n,...e){return F.custom((t,r)=>(s,i)=>{let o=n._(s,i);if(!o.status)return o;for(let a of e){let u=a(o.value)._(s,o.index);if(!u.status)return o;o=u}return o})}var Zt=Vr(ns());function Gt(n,e){let t={};for(let[r,s]of Object.entries(n))t[r]=e(s);return t}var _n;(r=>{r.NOOP_NORMALIZER=s=>s;function e(s){let i=et.wrapValue(s);if(!i)return null;switch(i==null?void 0:i.type){case"array":return i.value.map(r.json);case"object":return Gt(i.value,r.json);case"date":return{$_type:"date",value:i.value.toISO({extendedZone:!0,includeOffset:!0})};case"link":return{$_type:"link",value:i.value.toObject()};case"duration":return{$_type:"duration",value:i.value.toISO()};case"boolean":case"number":case"string":return i.value;case"function":case"null":return null}}r.json=e;function t(s,i=r.NOOP_NORMALIZER){if(s==null)return null;if(Array.isArray(s))return i(s.map(o=>r.value(o,i)));if(typeof s=="object"){if(!("$_type"in s))return Gt(s,a=>r.value(a,i));let o=s.$_type;switch(o){case"date":return i(q.fromISO(s.value));case"duration":return i(B.fromISO(s.value));case"link":return i(xe.fromObject(s.value));default:throw new Error(`Unrecognized serialized type \'${o}\'!`)}}return i(s)}r.value=t})(_n||(_n={}));function Wu(n){return Object.assign({},n,{value:_n.json(n.value)})}function $s(n,e){return Array.isArray(n)?n.map(t=>$s(t,e)):{key:n.key,raw:n.value,value:Nf(n.value),position:{line:e,start:n.start,startValue:n.startValue,end:n.end},wrapping:n.wrapping}}var Ps=Object.freeze({"[":"]","(":")"});function If(n,e,t,r){let s=0,i=!1;for(let o=e;o=0;){let o=Lf(n,i);if(!o){i=n.indexOf(s,i+1);continue}t.push(o),i=n.indexOf(s,o.end)}}e&&(t=t.concat(qf(n))),t.sort((s,i)=>s.start-i.start);let r=[];for(let s=0;sn.join("")),Mf=Zt.regexp(/[^0-9\\w\\p{Letter}]*/u).then(Af).skip(Zt.regexp(/[_\\*~`]*/u));function zu(n){let e=Hu(n,0);if(!e)return;let t=Mf.parse(e.key);if(t.status)return{key:t.value,value:n.substring(e.valueIndex).trim(),start:0,startValue:e.valueIndex,end:n.length}}var _f=/\\u{2795}\\s*(\\d{4}-\\d{2}-\\d{2})/u,Bf=/(?:\\u{1F4C5}|\\u{1F4C6}|\\u{1F5D3}\\u{FE0F}?)\\s*(\\d{4}-\\d{2}-\\d{2})/u,Pf=/\\u{2705}\\s*(\\d{4}-\\d{2}-\\d{2})/u,$f=/[\\u{23F3}\\u{231B}]\\s*(\\d{4}-\\d{2}-\\d{2})/u,Rf=/\\u{1F6EB}\\s*(\\d{4}-\\d{2}-\\d{2})/u,jf=[{regex:_f,key:"created"},{regex:Rf,key:"start"},{regex:$f,key:"scheduled"},{regex:Bf,key:"due"},{regex:Pf,key:"completion"}];function qf(n){let e=[];for(let{regex:t,key:r}of jf){let s=t.exec(n);s&&e.push({key:r,value:s[1],start:s.index,startValue:s.index+1,end:s.index+s[0].length,wrapping:"emoji-shorthand"})}return e}var Rs;(t=>{function n(r){let s=et.wrapValue(e);if(!s)return null;switch(s.type){case"string":case"boolean":case"null":case"number":return s.value;case"array":return s.value.map(n);case"date":return s.value.toISO();case"duration":return s.value.toHuman();case"function":return null;case"link":return s.value.markdown();case"object":return Gt(s.value,n)}}t.yaml=n;function e(r){if(r==null)return null;if(typeof r=="object")if(Array.isArray(r)){let s=[];for(let i of r)s.push(e(i));return s}else{if(r instanceof Date)return q.fromJSDate(r);{let s=r,i={};for(let o in s)i[o]=e(s[o]);return i}}else{if(typeof r=="number")return r;if(typeof r=="boolean")return r;if(typeof r=="string"){let s=z.date.parse(r);if(s.status)return s.value;let i=z.duration.parse(r);if(i.status)return i.value;let o=z.link.parse(r);return o.status?o.value:r}}return null}t.literal=e})(Rs||(Rs={}));var Vf=/```yaml:data/i,Uf=/^(?:```|~~~)(.*)$/im,Kf=new RegExp("^[\\\\s>]*(\\\\d+\\\\.|\\\\d+\\\\)|\\\\*|-|\\\\+)\\\\s*(\\\\[.{0,1}\\\\])?\\\\s*(.*)","msu");function Zu(n,e,t,r){let{lines:s,metadata:i,frontmatter:o,sections:a}=Fo(n,e,t);return new mo(n,r,s.length,i,a,o).build()}function Fo(n,e,t){var b,g,D,T,I,N,y,w,v,O,C,V,j,Y,ee,ae;let r=t!=null&&t.frontmatter?Gu(t.frontmatter):void 0,s=e.split(/\\r\\n|\\r|\\n/),i=new $e,o=[],a=(b=t==null?void 0:t.headings)!=null?b:[];a.sort((x,$)=>x.position.start.line-$.position.start.line);let u=new js.default(void 0,(x,$)=>x-$);for(let x=0;x0&&!Yu(s,0,x.start)){let $=new _r(0,x.start,En(n),1,0);u.set(0,$)}}let l=new js.default(void 0,(x,$)=>x-$),f=1;for(let x of(t==null?void 0:t.sections)||[]){if(x.type==="heading")continue;let $=x.position.start.line,Q=x.position.end.line+1,ue=s[$];if(x.type==="list")l.set($,new Do($,Q,f++,x.id));else if(x.type=="code"&&Vf.test(ue)){let De=s.slice($+1,Q-1).join(`\n`).replace(/\\t/gm," "),Re=Gu(co(De));l.set($,new yo($,Q,f++,Re,x.id))}else if(x.type==="code"){let De=ue.match(Uf);if(!De)l.set($,new qs($,Q,f++,[],"indent",$,Q,x.id));else{let Re=De.length>1&&De[1]?De[1].split(","):[];l.set($,new qs($,Q,f++,Re,"fenced",$+1,Q-1,x.id))}}else l.set($,new go($,Q,f++,x.type,x.id))}for(let x of l.values())(D=ct(x.start,u))==null||D.block(x);let d=/^[\\t\\f\\v ]*[\\-+\\*]\\s(\\[.\\]\\s)?/,p=/^(>?\\s?)*(\\t|\\s)*/g,h=new js.default(void 0,(x,$)=>x-$);for(let x of(t==null?void 0:t.listItems)||[]){let Q=s.slice(x.position.start.line,x.position.end.line+1).join(`\n`).match(Kf),ue,De;Q&&(ue=Q[1],De=Q[3]);let Re=new bo(x.position.start.line,x.position.end.line+1,x.parent,ue,x.id,x.task,De);h.set(Re.start,Re)}for(let x of h.values())if(x.parentLine<0){let $=l.get(-x.parentLine);if(!$||$.type!=="list")continue;$.items.push(x)}else(T=h.get(x.parentLine))==null||T.elements.push(x);for(let x of(I=t==null?void 0:t.tags)!=null?I:[]){let $=x.tag.startsWith("#")?x.tag:"#"+x.tag,Q=x.position.start.line;i.tag($),(N=ct(Q,u))==null||N.metadata.tag($),(y=ct(Q,l))==null||y.metadata.tag($),(w=ct(Q,h))==null||w.metadata.tag($)}if(t!=null&&t.frontmatter)for(let x of Wf(t.frontmatter)){let $=x.startsWith("#")?x:"#"+x;i.tag($)}for(let x of(v=t==null?void 0:t.links)!=null?v:[]){let $=xe.infer(x.link),Q=x.position.start.line;i.link($),(O=ct(Q,u))==null||O.metadata.link($),(C=ct(Q,l))==null||C.metadata.link($),(V=ct(Q,h))==null||V.metadata.link($)}for(let x of(j=t==null?void 0:t.frontmatterLinks)!=null?j:[])i.link(xe.infer(x.link,!1,x.displayText));for(let x of Eo(s)){let $=x.position.line;i.inlineField(x),(Y=ct($,u))==null||Y.metadata.inlineField(x),(ee=ct($,l))==null||ee.metadata.inlineField(x),(ae=ct($,h))==null||ae.metadata.inlineField(x)}return o.push(...u.values()),{lines:s,frontmatter:r,metadata:i,sections:o}}function Yu(n,e,t){for(let r=e;r32768||!t.includes("::"))continue;let r=Ju(t);if(r.length>0)for(let s of r)yield $s(s,e);else{let s=zu(t);s&&(yield $s(s,e))}}}function Gu(n){let e={};for(let t of Object.keys(n)){let r=n[t];e[t.toLowerCase()]={key:t,value:_n.json(Rs.literal(r)),raw:r}}return e}function ct(n,e){var r;let t=(r=e.getPairOrNextLower(n))==null?void 0:r[1];if(t&&t.end>=n)return t}function Wf(n){return Object.keys(n).filter(t=>t.toLowerCase()=="tags"||t.toLowerCase()=="tag").map(t=>Qu(n[t],/[,\\s]+/)).reduce((t,r)=>t.concat(r),[]).map(t=>t.startsWith("#")?t:"#"+t)}function Qu(n,e){return n==null||n==null?[]:Array.isArray(n)?n.filter(t=>!!t).map(t=>Qu(t,e)).reduce((t,r)=>t.concat(r),[]):(""+n).split(e).filter(t=>!!t).map(t=>t.trim()).filter(t=>t.length>0)}var $e=class{constructor(){this.tags=new Set;this.links=[];this.inlineFields={}}tag(e){this.tags.add(e)}link(e){this.links.find(t=>t.equals(e))||this.links.push(e)}inlineField(e){let t=e.key.toLowerCase();Object.keys(this.inlineFields).some(r=>r.toLowerCase()==t)||(this.inlineFields[t]=e)}finishTags(){return Array.from(this.tags)}finishLinks(){return this.links.map(e=>e.toObject())}finishInlineFields(){return Gt(this.inlineFields,Wu)}},mo=class{constructor(e,t,r,s,i,o){this.path=e;this.stats=t;this.length=r;this.metadata=s;this.sections=i;this.frontmatter=o}build(){return{$path:this.path,$ctime:this.stats.ctime,$mtime:this.stats.mtime,$size:this.stats.size,$extension:Va(this.path),$position:{start:0,end:this.length},$tags:this.metadata.finishTags(),$links:this.metadata.finishLinks(),$infields:this.metadata.finishInlineFields(),$sections:this.sections.map(e=>e.build()),$frontmatter:this.frontmatter}}},_r=class{constructor(e,t,r,s,i){this.start=e;this.end=t;this.title=r;this.level=s;this.ordinal=i;this.blocks=[];this.metadata=new $e}block(e){this.blocks.push(e)}build(){return{$title:this.title,$ordinal:this.ordinal,$level:this.level,$tags:this.metadata.finishTags(),$infields:this.metadata.finishInlineFields(),$links:this.metadata.finishLinks(),$position:{start:this.start,end:this.end},$blocks:this.blocks.map(e=>e.build())}}},Do=class{constructor(e,t,r,s){this.start=e;this.end=t;this.ordinal=r;this.blockId=s;this.type="list";this.metadata=new $e;this.items=[]}build(){return{$ordinal:this.ordinal,$position:{start:this.start,end:this.end},$infields:this.metadata.finishInlineFields(),$tags:this.metadata.finishTags(),$links:this.metadata.finishLinks(),$type:"list",$blockId:this.blockId,$elements:this.items.map(e=>e.build())}}},qs=class{constructor(e,t,r,s,i,o,a,u){this.start=e;this.end=t;this.ordinal=r;this.languages=s;this.style=i;this.contentStart=o;this.contentEnd=a;this.blockId=u;this.type="codeblock";this.metadata=new $e}build(){return{$type:"codeblock",$ordinal:this.ordinal,$position:{start:this.start,end:this.end},$infields:this.metadata.finishInlineFields(),$tags:this.metadata.finishTags(),$links:this.metadata.finishLinks(),$blockId:this.blockId,$languages:this.languages,$style:this.style,$contentPosition:{start:this.contentStart,end:this.contentEnd}}}},yo=class{constructor(e,t,r,s,i){this.start=e;this.end=t;this.ordinal=r;this.data=s;this.blockId=i;this.type="datablock";this.metadata=new $e}build(){return{$type:"datablock",$ordinal:this.ordinal,$position:{start:this.start,end:this.end},$infields:this.metadata.finishInlineFields(),$tags:this.metadata.finishTags(),$links:this.metadata.finishLinks(),$blockId:this.blockId,$data:this.data}}},go=class{constructor(e,t,r,s,i){this.start=e;this.end=t;this.ordinal=r;this.type=s;this.blockId=i;this.metadata=new $e}build(){return{$type:this.type,$ordinal:this.ordinal,$position:{start:this.start,end:this.end},$infields:this.metadata.finishInlineFields(),$tags:this.metadata.finishTags(),$links:this.metadata.finishLinks(),$blockId:this.blockId}}},bo=class{constructor(e,t,r,s,i,o,a){this.start=e;this.end=t;this.parentLine=r;this.symbol=s;this.blockId=i;this.status=o;this.text=a;this.metadata=new $e;this.elements=[]}build(){return{$parentLine:this.parentLine,$position:{start:this.start,end:this.end},$blockId:this.blockId,$elements:this.elements.map(e=>e.build()),$type:this.status?"task":"list",$infields:this.metadata.finishInlineFields(),$tags:this.metadata.finishTags(),$links:this.metadata.finishLinks(),$status:this.status,$symbol:this.symbol,$text:this.text}}};function Xu(n,e,t,r){var o;let s=new To(n,r),i=JSON.parse(e);for(let a of i.nodes)if(a.type!="group")if(a.type=="text"){let{frontmatter:u,metadata:l,lines:f,sections:d}=Fo(n,a.text,t==null?void 0:t.caches[a.id]),p=new Vs(n,a.id,a,u);d.forEach(h=>p.section(h)),s.card(p);for(let h in l.tags)s.metadata.tag(h);for(let h of(o=l.links)!=null?o:[])s.metadata.link(h);for(let h of Eo(f))s.metadata.inlineField(h)}else{let u=new Vs(n,a.id,a);s.card(u)}return s.build()}var wo=class{constructor(e,t,r){this.path=e;this.id=t;this.nodeJson=r;this.metadata=new $e}build(){return{$file:this.path,$id:this.id,$position:{x:this.nodeJson.x,y:this.nodeJson.y},$dimensions:{width:this.nodeJson.width,height:this.nodeJson.height},$color:this.nodeJson.color,$link:xe.file(this.path).withBlock(this.id).toObject()}}},Vs=class extends wo{constructor(t,r,s,i){super(t,r,s);this.path=t;this.id=r;this.nodeJson=s;this.frontmatter=i;this.sections=[]}section(t){return this.sections.push(t),t}build(){switch(this.nodeJson.type){case"text":return ye(R({},super.build()),{$infields:this.metadata.finishInlineFields(),$frontmatter:this.frontmatter,$sections:this.sections.map(t=>t.build()),$tags:this.metadata.finishTags(),$links:this.metadata.finishLinks(),$type:"text-card",$color:this.nodeJson.color});case"file":return ye(R({},super.build()),{$linkedFile:this.nodeJson.file});case"link":return ye(R({},super.build()),{$url:this.nodeJson.url})}}},To=class{constructor(e,t){this.path=e;this.stats=t;this.cards=[];this.metadata=new $e}card(e){return this.cards.push(e),e}build(){return{$cards:this.cards.map(e=>e.build()),$ctime:this.stats.ctime,$mtime:this.stats.mtime,$infields:this.metadata.finishInlineFields(),$links:this.metadata.finishLinks(),$tags:this.metadata.finishTags(),$path:this.path,$size:this.stats.size}}};onmessage=async n=>{try{let e=n.data;if(e.type==="markdown"){let t=Zu(e.path,e.contents,e.metadata,e.stat);postMessage({type:"markdown",result:t})}else if(e.type==="canvas"){let t=Xu(e.path,e.contents,e.index,e.stat);postMessage({type:"canvas",result:t})}else postMessage({$error:"Unsupported import method."})}catch(e){console.error(`Datacore Indexer failed to index ${n.data.path}: ${e}`),postMessage({$error:e.message})}};\n//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vcGFyc2ltbW9uL2J1aWxkL3BhcnNpbW1vbi51bWQubWluLmpzIiwgIi4uLy4uL3NvcnRlZC1idHJlZS9iK3RyZWUuanMiLCAiLi4vLi4vbHV4b24vc3JjL2Vycm9ycy5qcyIsICIuLi8uLi9sdXhvbi9zcmMvaW1wbC9mb3JtYXRzLmpzIiwgIi4uLy4uL2x1eG9uL3NyYy9pbXBsL3V0aWwuanMiLCAiLi4vLi4vbHV4b24vc3JjL2ltcGwvZW5nbGlzaC5qcyIsICIuLi8uLi9sdXhvbi9zcmMvaW1wbC9mb3JtYXR0ZXIuanMiLCAiLi4vLi4vbHV4b24vc3JjL2ltcGwvaW52YWxpZC5qcyIsICIuLi8uLi9sdXhvbi9zcmMvem9uZS5qcyIsICIuLi8uLi9sdXhvbi9zcmMvem9uZXMvc3lzdGVtWm9uZS5qcyIsICIuLi8uLi9sdXhvbi9zcmMvem9uZXMvSUFOQVpvbmUuanMiLCAiLi4vLi4vbHV4b24vc3JjL3pvbmVzL2ZpeGVkT2Zmc2V0Wm9uZS5qcyIsICIuLi8uLi9sdXhvbi9zcmMvem9uZXMvaW52YWxpZFpvbmUuanMiLCAiLi4vLi4vbHV4b24vc3JjL2ltcGwvem9uZVV0aWwuanMiLCAiLi4vLi4vbHV4b24vc3JjL3NldHRpbmdzLmpzIiwgIi4uLy4uL2x1eG9uL3NyYy9pbXBsL2xvY2FsZS5qcyIsICIuLi8uLi9sdXhvbi9zcmMvaW1wbC9yZWdleFBhcnNlci5qcyIsICIuLi8uLi9sdXhvbi9zcmMvZHVyYXRpb24uanMiLCAiLi4vLi4vbHV4b24vc3JjL2ludGVydmFsLmpzIiwgIi4uLy4uL2x1eG9uL3NyYy9pbmZvLmpzIiwgIi4uLy4uL2x1eG9uL3NyYy9pbXBsL2RpZmYuanMiLCAiLi4vLi4vbHV4b24vc3JjL2ltcGwvZGlnaXRzLmpzIiwgIi4uLy4uL2x1eG9uL3NyYy9pbXBsL3Rva2VuUGFyc2VyLmpzIiwgIi4uLy4uL2x1eG9uL3NyYy9pbXBsL2NvbnZlcnNpb25zLmpzIiwgIi4uLy4uL2x1eG9uL3NyYy9kYXRldGltZS5qcyIsICIuLi8uLi8uLi9zcmMvdXRpbHMvbm9ybWFsaXplcnMudHMiLCAiLi4vLi4vZW1vamktcmVnZXgvaW5kZXgubWpzIiwgIi4uLy4uLy4uL3NyYy9leHByZXNzaW9uL2xpbmsudHMiLCAiLi4vLi4veWFtbC9icm93c2VyL2Rpc3Qvbm9kZXMvaWRlbnRpdHkuanMiLCAiLi4vLi4veWFtbC9icm93c2VyL2Rpc3QvdmlzaXQuanMiLCAiLi4vLi4veWFtbC9icm93c2VyL2Rpc3QvZG9jL2RpcmVjdGl2ZXMuanMiLCAiLi4vLi4veWFtbC9icm93c2VyL2Rpc3QvZG9jL2FuY2hvcnMuanMiLCAiLi4vLi4veWFtbC9icm93c2VyL2Rpc3QvZG9jL2FwcGx5UmV2aXZlci5qcyIsICIuLi8uLi95YW1sL2Jyb3dzZXIvZGlzdC9ub2Rlcy90b0pTLmpzIiwgIi4uLy4uL3lhbWwvYnJvd3Nlci9kaXN0L25vZGVzL05vZGUuanMiLCAiLi4vLi4veWFtbC9icm93c2VyL2Rpc3Qvbm9kZXMvQWxpYXMuanMiLCAiLi4vLi4veWFtbC9icm93c2VyL2Rpc3Qvbm9kZXMvU2NhbGFyLmpzIiwgIi4uLy4uL3lhbWwvYnJvd3Nlci9kaXN0L2RvYy9jcmVhdGVOb2RlLmpzIiwgIi4uLy4uL3lhbWwvYnJvd3Nlci9kaXN0L25vZGVzL0NvbGxlY3Rpb24uanMiLCAiLi4vLi4veWFtbC9icm93c2VyL2Rpc3Qvc3RyaW5naWZ5L3N0cmluZ2lmeUNvbW1lbnQuanMiLCAiLi4vLi4veWFtbC9icm93c2VyL2Rpc3Qvc3RyaW5naWZ5L2ZvbGRGbG93TGluZXMuanMiLCAiLi4vLi4veWFtbC9icm93c2VyL2Rpc3Qvc3RyaW5naWZ5L3N0cmluZ2lmeVN0cmluZy5qcyIsICIuLi8uLi95YW1sL2Jyb3dzZXIvZGlzdC9zdHJpbmdpZnkvc3RyaW5naWZ5LmpzIiwgIi4uLy4uL3lhbWwvYnJvd3Nlci9kaXN0L3N0cmluZ2lmeS9zdHJpbmdpZnlQYWlyLmpzIiwgIi4uLy4uL3lhbWwvYnJvd3Nlci9kaXN0L2xvZy5qcyIsICIuLi8uLi95YW1sL2Jyb3dzZXIvZGlzdC9zY2hlbWEveWFtbC0xLjEvbWVyZ2UuanMiLCAiLi4vLi4veWFtbC9icm93c2VyL2Rpc3Qvbm9kZXMvYWRkUGFpclRvSlNNYXAuanMiLCAiLi4vLi4veWFtbC9icm93c2VyL2Rpc3Qvbm9kZXMvUGFpci5qcyIsICIuLi8uLi95YW1sL2Jyb3dzZXIvZGlzdC9zdHJpbmdpZnkvc3RyaW5naWZ5Q29sbGVjdGlvbi5qcyIsICIuLi8uLi95YW1sL2Jyb3dzZXIvZGlzdC9ub2Rlcy9ZQU1MTWFwLmpzIiwgIi4uLy4uL3lhbWwvYnJvd3Nlci9kaXN0L3NjaGVtYS9jb21tb24vbWFwLmpzIiwgIi4uLy4uL3lhbWwvYnJvd3Nlci9kaXN0L25vZGVzL1lBTUxTZXEuanMiLCAiLi4vLi4veWFtbC9icm93c2VyL2Rpc3Qvc2NoZW1hL2NvbW1vbi9zZXEuanMiLCAiLi4vLi4veWFtbC9icm93c2VyL2Rpc3Qvc2NoZW1hL2NvbW1vbi9zdHJpbmcuanMiLCAiLi4vLi4veWFtbC9icm93c2VyL2Rpc3Qvc2NoZW1hL2NvbW1vbi9udWxsLmpzIiwgIi4uLy4uL3lhbWwvYnJvd3Nlci9kaXN0L3NjaGVtYS9jb3JlL2Jvb2wuanMiLCAiLi4vLi4veWFtbC9icm93c2VyL2Rpc3Qvc3RyaW5naWZ5L3N0cmluZ2lmeU51bWJlci5qcyIsICIuLi8uLi95YW1sL2Jyb3dzZXIvZGlzdC9zY2hlbWEvY29yZS9mbG9hdC5qcyIsICIuLi8uLi95YW1sL2Jyb3dzZXIvZGlzdC9zY2hlbWEvY29yZS9pbnQuanMiLCAiLi4vLi4veWFtbC9icm93c2VyL2Rpc3Qvc2NoZW1hL2NvcmUvc2NoZW1hLmpzIiwgIi4uLy4uL3lhbWwvYnJvd3Nlci9kaXN0L3NjaGVtYS9qc29uL3NjaGVtYS5qcyIsICIuLi8uLi95YW1sL2Jyb3dzZXIvZGlzdC9zY2hlbWEveWFtbC0xLjEvYmluYXJ5LmpzIiwgIi4uLy4uL3lhbWwvYnJvd3Nlci9kaXN0L3NjaGVtYS95YW1sLTEuMS9wYWlycy5qcyIsICIuLi8uLi95YW1sL2Jyb3dzZXIvZGlzdC9zY2hlbWEveWFtbC0xLjEvb21hcC5qcyIsICIuLi8uLi95YW1sL2Jyb3dzZXIvZGlzdC9zY2hlbWEveWFtbC0xLjEvYm9vbC5qcyIsICIuLi8uLi95YW1sL2Jyb3dzZXIvZGlzdC9zY2hlbWEveWFtbC0xLjEvZmxvYXQuanMiLCAiLi4vLi4veWFtbC9icm93c2VyL2Rpc3Qvc2NoZW1hL3lhbWwtMS4xL2ludC5qcyIsICIuLi8uLi95YW1sL2Jyb3dzZXIvZGlzdC9zY2hlbWEveWFtbC0xLjEvc2V0LmpzIiwgIi4uLy4uL3lhbWwvYnJvd3Nlci9kaXN0L3NjaGVtYS95YW1sLTEuMS90aW1lc3RhbXAuanMiLCAiLi4vLi4veWFtbC9icm93c2VyL2Rpc3Qvc2NoZW1hL3lhbWwtMS4xL3NjaGVtYS5qcyIsICIuLi8uLi95YW1sL2Jyb3dzZXIvZGlzdC9zY2hlbWEvdGFncy5qcyIsICIuLi8uLi95YW1sL2Jyb3dzZXIvZGlzdC9zY2hlbWEvU2NoZW1hLmpzIiwgIi4uLy4uL3lhbWwvYnJvd3Nlci9kaXN0L3N0cmluZ2lmeS9zdHJpbmdpZnlEb2N1bWVudC5qcyIsICIuLi8uLi95YW1sL2Jyb3dzZXIvZGlzdC9kb2MvRG9jdW1lbnQuanMiLCAiLi4vLi4veWFtbC9icm93c2VyL2Rpc3QvZXJyb3JzLmpzIiwgIi4uLy4uL3lhbWwvYnJvd3Nlci9kaXN0L2NvbXBvc2UvcmVzb2x2ZS1wcm9wcy5qcyIsICIuLi8uLi95YW1sL2Jyb3dzZXIvZGlzdC9jb21wb3NlL3V0aWwtY29udGFpbnMtbmV3bGluZS5qcyIsICIuLi8uLi95YW1sL2Jyb3dzZXIvZGlzdC9jb21wb3NlL3V0aWwtZmxvdy1pbmRlbnQtY2hlY2suanMiLCAiLi4vLi4veWFtbC9icm93c2VyL2Rpc3QvY29tcG9zZS91dGlsLW1hcC1pbmNsdWRlcy5qcyIsICIuLi8uLi95YW1sL2Jyb3dzZXIvZGlzdC9jb21wb3NlL3Jlc29sdmUtYmxvY2stbWFwLmpzIiwgIi4uLy4uL3lhbWwvYnJvd3Nlci9kaXN0L2NvbXBvc2UvcmVzb2x2ZS1ibG9jay1zZXEuanMiLCAiLi4vLi4veWFtbC9icm93c2VyL2Rpc3QvY29tcG9zZS9yZXNvbHZlLWVuZC5qcyIsICIuLi8uLi95YW1sL2Jyb3dzZXIvZGlzdC9jb21wb3NlL3Jlc29sdmUtZmxvdy1jb2xsZWN0aW9uLmpzIiwgIi4uLy4uL3lhbWwvYnJvd3Nlci9kaXN0L2NvbXBvc2UvY29tcG9zZS1jb2xsZWN0aW9uLmpzIiwgIi4uLy4uL3lhbWwvYnJvd3Nlci9kaXN0L2NvbXBvc2UvcmVzb2x2ZS1ibG9jay1zY2FsYXIuanMiLCAiLi4vLi4veWFtbC9icm93c2VyL2Rpc3QvY29tcG9zZS9yZXNvbHZlLWZsb3ctc2NhbGFyLmpzIiwgIi4uLy4uL3lhbWwvYnJvd3Nlci9kaXN0L2NvbXBvc2UvY29tcG9zZS1zY2FsYXIuanMiLCAiLi4vLi4veWFtbC9icm93c2VyL2Rpc3QvY29tcG9zZS91dGlsLWVtcHR5LXNjYWxhci1wb3NpdGlvbi5qcyIsICIuLi8uLi95YW1sL2Jyb3dzZXIvZGlzdC9jb21wb3NlL2NvbXBvc2Utbm9kZS5qcyIsICIuLi8uLi95YW1sL2Jyb3dzZXIvZGlzdC9jb21wb3NlL2NvbXBvc2UtZG9jLmpzIiwgIi4uLy4uL3lhbWwvYnJvd3Nlci9kaXN0L2NvbXBvc2UvY29tcG9zZXIuanMiLCAiLi4vLi4veWFtbC9icm93c2VyL2Rpc3QvcGFyc2UvY3N0LXZpc2l0LmpzIiwgIi4uLy4uL3lhbWwvYnJvd3Nlci9kaXN0L3BhcnNlL2NzdC5qcyIsICIuLi8uLi95YW1sL2Jyb3dzZXIvZGlzdC9wYXJzZS9sZXhlci5qcyIsICIuLi8uLi95YW1sL2Jyb3dzZXIvZGlzdC9wYXJzZS9saW5lLWNvdW50ZXIuanMiLCAiLi4vLi4veWFtbC9icm93c2VyL2Rpc3QvcGFyc2UvcGFyc2VyLmpzIiwgIi4uLy4uL3lhbWwvYnJvd3Nlci9kaXN0L3B1YmxpYy1hcGkuanMiLCAiLi4vLi4vLi4vc3JjL2luZGV4L2ltcG9ydC9tYXJrZG93bi50cyIsICIuLi8uLi8uLi9zcmMvZXhwcmVzc2lvbi9wYXJzZXIudHMiLCAiLi4vLi4vLi4vc3JjL2V4cHJlc3Npb24vbGl0ZXJhbC50cyIsICIuLi8uLi8uLi9zcmMvYXBpL3Jlc3VsdC50cyIsICIuLi8uLi8uLi9zcmMvZXhwcmVzc2lvbi9maWx0ZXJzLnRzIiwgIi4uLy4uLy4uL3NyYy9leHByZXNzaW9uL2V4cHJlc3Npb24udHMiLCAiLi4vLi4vLi4vc3JjL2luZGV4L2ltcG9ydC9pbmxpbmUtZmllbGQudHMiLCAiLi4vLi4vLi4vc3JjL3V0aWxzL2RhdGEudHMiLCAiLi4vLi4vLi4vc3JjL2luZGV4L3R5cGVzL2pzb24vY29tbW9uLnRzIiwgIi4uLy4uLy4uL3NyYy9pbmRleC90eXBlcy95YW1sLnRzIiwgIi4uLy4uLy4uL3NyYy9pbmRleC9pbXBvcnQvY2FudmFzLnRzIiwgIi4uLy4uLy4uL3NyYy9pbmRleC93ZWItd29ya2VyL2ltcG9ydGVyLndvcmtlci50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiIWZ1bmN0aW9uKG4sdCl7XCJvYmplY3RcIj09dHlwZW9mIGV4cG9ydHMmJlwib2JqZWN0XCI9PXR5cGVvZiBtb2R1bGU/bW9kdWxlLmV4cG9ydHM9dCgpOlwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoW10sdCk6XCJvYmplY3RcIj09dHlwZW9mIGV4cG9ydHM/ZXhwb3J0cy5QYXJzaW1tb249dCgpOm4uUGFyc2ltbW9uPXQoKX0oXCJ1bmRlZmluZWRcIiE9dHlwZW9mIHNlbGY/c2VsZjp0aGlzLGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciB0PXt9O2Z1bmN0aW9uIHIoZSl7aWYodFtlXSlyZXR1cm4gdFtlXS5leHBvcnRzO3ZhciB1PXRbZV09e2k6ZSxsOiExLGV4cG9ydHM6e319O3JldHVybiBuW2VdLmNhbGwodS5leHBvcnRzLHUsdS5leHBvcnRzLHIpLHUubD0hMCx1LmV4cG9ydHN9cmV0dXJuIHIubT1uLHIuYz10LHIuZD1mdW5jdGlvbihuLHQsZSl7ci5vKG4sdCl8fE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLHQse2NvbmZpZ3VyYWJsZTohMSxlbnVtZXJhYmxlOiEwLGdldDplfSl9LHIucj1mdW5jdGlvbihuKXtPYmplY3QuZGVmaW5lUHJvcGVydHkobixcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KX0sci5uPWZ1bmN0aW9uKG4pe3ZhciB0PW4mJm4uX19lc01vZHVsZT9mdW5jdGlvbigpe3JldHVybiBuLmRlZmF1bHR9OmZ1bmN0aW9uKCl7cmV0dXJuIG59O3JldHVybiByLmQodCxcImFcIix0KSx0fSxyLm89ZnVuY3Rpb24obix0KXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4sdCl9LHIucD1cIlwiLHIoci5zPTApfShbZnVuY3Rpb24obix0LHIpe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIGUobil7aWYoISh0aGlzIGluc3RhbmNlb2YgZSkpcmV0dXJuIG5ldyBlKG4pO3RoaXMuXz1ufXZhciB1PWUucHJvdG90eXBlO2Z1bmN0aW9uIG8obix0KXtmb3IodmFyIHI9MDtyPG47cisrKXQocil9ZnVuY3Rpb24gaShuLHQscil7cmV0dXJuIGZ1bmN0aW9uKG4sdCl7byh0Lmxlbmd0aCxmdW5jdGlvbihyKXtuKHRbcl0scix0KX0pfShmdW5jdGlvbihyLGUsdSl7dD1uKHQscixlLHUpfSxyKSx0fWZ1bmN0aW9uIGEobix0KXtyZXR1cm4gaShmdW5jdGlvbih0LHIsZSx1KXtyZXR1cm4gdC5jb25jYXQoW24ocixlLHUpXSl9LFtdLHQpfWZ1bmN0aW9uIGYobix0KXt2YXIgcj17djowLGJ1Zjp0fTtyZXR1cm4gbyhuLGZ1bmN0aW9uKCl7dmFyIG47cj17djpyLnY8PDF8KG49ci5idWYsblswXT4+NyksYnVmOmZ1bmN0aW9uKG4pe3ZhciB0PWkoZnVuY3Rpb24obix0LHIsZSl7cmV0dXJuIG4uY29uY2F0KHI9PT1lLmxlbmd0aC0xP0J1ZmZlci5mcm9tKFt0LDBdKS5yZWFkVUludDE2QkUoMCk6ZS5yZWFkVUludDE2QkUocikpfSxbXSxuKTtyZXR1cm4gQnVmZmVyLmZyb20oYShmdW5jdGlvbihuKXtyZXR1cm4objw8MSY2NTUzNSk+Pjh9LHQpKX0oci5idWYpfX0pLHJ9ZnVuY3Rpb24gYygpe3JldHVyblwidW5kZWZpbmVkXCIhPXR5cGVvZiBCdWZmZXJ9ZnVuY3Rpb24gcygpe2lmKCFjKCkpdGhyb3cgbmV3IEVycm9yKFwiQnVmZmVyIGdsb2JhbCBkb2VzIG5vdCBleGlzdDsgcGxlYXNlIHVzZSB3ZWJwYWNrIGlmIHlvdSBuZWVkIHRvIHBhcnNlIEJ1ZmZlcnMgaW4gdGhlIGJyb3dzZXIuXCIpfWZ1bmN0aW9uIGwobil7cygpO3ZhciB0PWkoZnVuY3Rpb24obix0KXtyZXR1cm4gbit0fSwwLG4pO2lmKHQlOCE9MCl0aHJvdyBuZXcgRXJyb3IoXCJUaGUgYml0cyBbXCIrbi5qb2luKFwiLCBcIikrXCJdIGFkZCB1cCB0byBcIit0K1wiIHdoaWNoIGlzIG5vdCBhbiBldmVuIG51bWJlciBvZiBieXRlczsgdGhlIHRvdGFsIHNob3VsZCBiZSBkaXZpc2libGUgYnkgOFwiKTt2YXIgcix1PXQvOCxvPShyPWZ1bmN0aW9uKG4pe3JldHVybiBuPjQ4fSxpKGZ1bmN0aW9uKG4sdCl7cmV0dXJuIG58fChyKHQpP3Q6bil9LG51bGwsbikpO2lmKG8pdGhyb3cgbmV3IEVycm9yKG8rXCIgYml0IHJhbmdlIHJlcXVlc3RlZCBleGNlZWRzIDQ4IGJpdCAoNiBieXRlKSBOdW1iZXIgbWF4LlwiKTtyZXR1cm4gbmV3IGUoZnVuY3Rpb24odCxyKXt2YXIgZT11K3I7cmV0dXJuIGU+dC5sZW5ndGg/eChyLHUudG9TdHJpbmcoKStcIiBieXRlc1wiKTpiKGUsaShmdW5jdGlvbihuLHQpe3ZhciByPWYodCxuLmJ1Zik7cmV0dXJue2NvbGw6bi5jb2xsLmNvbmNhdChyLnYpLGJ1ZjpyLmJ1Zn19LHtjb2xsOltdLGJ1Zjp0LnNsaWNlKHIsZSl9LG4pLmNvbGwpfSl9ZnVuY3Rpb24gaChuLHQpe3JldHVybiBuZXcgZShmdW5jdGlvbihyLGUpe3JldHVybiBzKCksZSt0PnIubGVuZ3RoP3goZSx0K1wiIGJ5dGVzIGZvciBcIituKTpiKGUrdCxyLnNsaWNlKGUsZSt0KSl9KX1mdW5jdGlvbiBwKG4sdCl7aWYoXCJudW1iZXJcIiE9dHlwZW9mKHI9dCl8fE1hdGguZmxvb3IocikhPT1yfHx0PDB8fHQ+Nil0aHJvdyBuZXcgRXJyb3IobitcIiByZXF1aXJlcyBpbnRlZ2VyIGxlbmd0aCBpbiByYW5nZSBbMCwgNl0uXCIpO3ZhciByfWZ1bmN0aW9uIGQobil7cmV0dXJuIHAoXCJ1aW50QkVcIixuKSxoKFwidWludEJFKFwiK24rXCIpXCIsbikubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LnJlYWRVSW50QkUoMCxuKX0pfWZ1bmN0aW9uIHYobil7cmV0dXJuIHAoXCJ1aW50TEVcIixuKSxoKFwidWludExFKFwiK24rXCIpXCIsbikubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LnJlYWRVSW50TEUoMCxuKX0pfWZ1bmN0aW9uIGcobil7cmV0dXJuIHAoXCJpbnRCRVwiLG4pLGgoXCJpbnRCRShcIituK1wiKVwiLG4pLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5yZWFkSW50QkUoMCxuKX0pfWZ1bmN0aW9uIG0obil7cmV0dXJuIHAoXCJpbnRMRVwiLG4pLGgoXCJpbnRMRShcIituK1wiKVwiLG4pLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5yZWFkSW50TEUoMCxuKX0pfWZ1bmN0aW9uIHkobil7cmV0dXJuIG4gaW5zdGFuY2VvZiBlfWZ1bmN0aW9uIEUobil7cmV0dXJuXCJbb2JqZWN0IEFycmF5XVwiPT09e30udG9TdHJpbmcuY2FsbChuKX1mdW5jdGlvbiB3KG4pe3JldHVybiBjKCkmJkJ1ZmZlci5pc0J1ZmZlcihuKX1mdW5jdGlvbiBiKG4sdCl7cmV0dXJue3N0YXR1czohMCxpbmRleDpuLHZhbHVlOnQsZnVydGhlc3Q6LTEsZXhwZWN0ZWQ6W119fWZ1bmN0aW9uIHgobix0KXtyZXR1cm4gRSh0KXx8KHQ9W3RdKSx7c3RhdHVzOiExLGluZGV4Oi0xLHZhbHVlOm51bGwsZnVydGhlc3Q6bixleHBlY3RlZDp0fX1mdW5jdGlvbiBCKG4sdCl7aWYoIXQpcmV0dXJuIG47aWYobi5mdXJ0aGVzdD50LmZ1cnRoZXN0KXJldHVybiBuO3ZhciByPW4uZnVydGhlc3Q9PT10LmZ1cnRoZXN0P2Z1bmN0aW9uKG4sdCl7aWYoZnVuY3Rpb24oKXtpZih2b2lkIDAhPT1lLl9zdXBwb3J0c1NldClyZXR1cm4gZS5fc3VwcG9ydHNTZXQ7dmFyIG49XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFNldDtyZXR1cm4gZS5fc3VwcG9ydHNTZXQ9bixufSgpJiZBcnJheS5mcm9tKXtmb3IodmFyIHI9bmV3IFNldChuKSx1PTA7dTx0Lmxlbmd0aDt1Kyspci5hZGQodFt1XSk7dmFyIG89QXJyYXkuZnJvbShyKTtyZXR1cm4gby5zb3J0KCksb31mb3IodmFyIGk9e30sYT0wO2E8bi5sZW5ndGg7YSsrKWlbblthXV09ITA7Zm9yKHZhciBmPTA7Zjx0Lmxlbmd0aDtmKyspaVt0W2ZdXT0hMDt2YXIgYz1bXTtmb3IodmFyIHMgaW4gaSkoe30pLmhhc093blByb3BlcnR5LmNhbGwoaSxzKSYmYy5wdXNoKHMpO3JldHVybiBjLnNvcnQoKSxjfShuLmV4cGVjdGVkLHQuZXhwZWN0ZWQpOnQuZXhwZWN0ZWQ7cmV0dXJue3N0YXR1czpuLnN0YXR1cyxpbmRleDpuLmluZGV4LHZhbHVlOm4udmFsdWUsZnVydGhlc3Q6dC5mdXJ0aGVzdCxleHBlY3RlZDpyfX12YXIgaj17fTtmdW5jdGlvbiBTKG4sdCl7aWYodyhuKSlyZXR1cm57b2Zmc2V0OnQsbGluZTotMSxjb2x1bW46LTF9O24gaW4ganx8KGpbbl09e30pO2Zvcih2YXIgcj1qW25dLGU9MCx1PTAsbz0wLGk9dDtpPj0wOyl7aWYoaSBpbiByKXtlPXJbaV0ubGluZSwwPT09byYmKG89cltpXS5saW5lU3RhcnQpO2JyZWFrfShcIlxcblwiPT09bi5jaGFyQXQoaSl8fFwiXFxyXCI9PT1uLmNoYXJBdChpKSYmXCJcXG5cIiE9PW4uY2hhckF0KGkrMSkpJiYodSsrLDA9PT1vJiYobz1pKzEpKSxpLS19dmFyIGE9ZSt1LGY9dC1vO3JldHVybiByW3RdPXtsaW5lOmEsbGluZVN0YXJ0Om99LHtvZmZzZXQ6dCxsaW5lOmErMSxjb2x1bW46ZisxfX1mdW5jdGlvbiBfKG4pe2lmKCF5KG4pKXRocm93IG5ldyBFcnJvcihcIm5vdCBhIHBhcnNlcjogXCIrbil9ZnVuY3Rpb24gTChuLHQpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiBuP24uY2hhckF0KHQpOm5bdF19ZnVuY3Rpb24gTyhuKXtpZihcIm51bWJlclwiIT10eXBlb2Ygbil0aHJvdyBuZXcgRXJyb3IoXCJub3QgYSBudW1iZXI6IFwiK24pfWZ1bmN0aW9uIGsobil7aWYoXCJmdW5jdGlvblwiIT10eXBlb2Ygbil0aHJvdyBuZXcgRXJyb3IoXCJub3QgYSBmdW5jdGlvbjogXCIrbil9ZnVuY3Rpb24gUChuKXtpZihcInN0cmluZ1wiIT10eXBlb2Ygbil0aHJvdyBuZXcgRXJyb3IoXCJub3QgYSBzdHJpbmc6IFwiK24pfXZhciBxPTIsQT0zLEk9OCxGPTUqSSxNPTQqSSx6PVwiICBcIjtmdW5jdGlvbiBSKG4sdCl7cmV0dXJuIG5ldyBBcnJheSh0KzEpLmpvaW4obil9ZnVuY3Rpb24gVShuLHQscil7dmFyIGU9dC1uLmxlbmd0aDtyZXR1cm4gZTw9MD9uOlIocixlKStufWZ1bmN0aW9uIFcobix0LHIsZSl7cmV0dXJue2Zyb206bi10PjA/bi10OjAsdG86bityPmU/ZTpuK3J9fWZ1bmN0aW9uIEQobix0KXt2YXIgcixlLHUsbyxmLGM9dC5pbmRleCxzPWMub2Zmc2V0LGw9MTtpZihzPT09bi5sZW5ndGgpcmV0dXJuXCJHb3QgdGhlIGVuZCBvZiB0aGUgaW5wdXRcIjtpZih3KG4pKXt2YXIgaD1zLXMlSSxwPXMtaCxkPVcoaCxGLE0rSSxuLmxlbmd0aCksdj1hKGZ1bmN0aW9uKG4pe3JldHVybiBhKGZ1bmN0aW9uKG4pe3JldHVybiBVKG4udG9TdHJpbmcoMTYpLDIsXCIwXCIpfSxuKX0sZnVuY3Rpb24obix0KXt2YXIgcj1uLmxlbmd0aCxlPVtdLHU9MDtpZihyPD10KXJldHVybltuLnNsaWNlKCldO2Zvcih2YXIgbz0wO288cjtvKyspZVt1XXx8ZS5wdXNoKFtdKSxlW3VdLnB1c2gobltvXSksKG8rMSkldD09MCYmdSsrO3JldHVybiBlfShuLnNsaWNlKGQuZnJvbSxkLnRvKS50b0pTT04oKS5kYXRhLEkpKTtvPWZ1bmN0aW9uKG4pe3JldHVybiAwPT09bi5mcm9tJiYxPT09bi50bz97ZnJvbTpuLmZyb20sdG86bi50b306e2Zyb206bi5mcm9tL0ksdG86TWF0aC5mbG9vcihuLnRvL0kpfX0oZCksZT1oL0kscj0zKnAscD49NCYmKHIrPTEpLGw9Mix1PWEoZnVuY3Rpb24obil7cmV0dXJuIG4ubGVuZ3RoPD00P24uam9pbihcIiBcIik6bi5zbGljZSgwLDQpLmpvaW4oXCIgXCIpK1wiICBcIituLnNsaWNlKDQpLmpvaW4oXCIgXCIpfSx2KSwoZj0oOCooby50bz4wP28udG8tMTpvLnRvKSkudG9TdHJpbmcoMTYpLmxlbmd0aCk8MiYmKGY9Mil9ZWxzZXt2YXIgZz1uLnNwbGl0KC9cXHJcXG58W1xcblxcclxcdTIwMjhcXHUyMDI5XS8pO3I9Yy5jb2x1bW4tMSxlPWMubGluZS0xLG89VyhlLHEsQSxnLmxlbmd0aCksdT1nLnNsaWNlKG8uZnJvbSxvLnRvKSxmPW8udG8udG9TdHJpbmcoKS5sZW5ndGh9dmFyIG09ZS1vLmZyb207cmV0dXJuIHcobikmJihmPSg4KihvLnRvPjA/by50by0xOm8udG8pKS50b1N0cmluZygxNikubGVuZ3RoKTwyJiYoZj0yKSxpKGZ1bmN0aW9uKHQsZSx1KXt2YXIgaSxhPXU9PT1tLGM9YT9cIj4gXCI6ejtyZXR1cm4gaT13KG4pP1UoKDgqKG8uZnJvbSt1KSkudG9TdHJpbmcoMTYpLGYsXCIwXCIpOlUoKG8uZnJvbSt1KzEpLnRvU3RyaW5nKCksZixcIiBcIiksW10uY29uY2F0KHQsW2MraStcIiB8IFwiK2VdLGE/W3orUihcIiBcIixmKStcIiB8IFwiK1UoXCJcIixyLFwiIFwiKStSKFwiXlwiLGwpXTpbXSl9LFtdLHUpLmpvaW4oXCJcXG5cIil9ZnVuY3Rpb24gTihuLHQpe3JldHVybltcIlxcblwiLFwiLS0gUEFSU0lORyBGQUlMRUQgXCIrUihcIi1cIiw1MCksXCJcXG5cXG5cIixEKG4sdCksXCJcXG5cXG5cIiwocj10LmV4cGVjdGVkLDE9PT1yLmxlbmd0aD9cIkV4cGVjdGVkOlxcblxcblwiK3JbMF06XCJFeHBlY3RlZCBvbmUgb2YgdGhlIGZvbGxvd2luZzogXFxuXFxuXCIrci5qb2luKFwiLCBcIikpLFwiXFxuXCJdLmpvaW4oXCJcIik7dmFyIHJ9ZnVuY3Rpb24gRyhuKXtyZXR1cm4gdm9pZCAwIT09bi5mbGFncz9uLmZsYWdzOltuLmdsb2JhbD9cImdcIjpcIlwiLG4uaWdub3JlQ2FzZT9cImlcIjpcIlwiLG4ubXVsdGlsaW5lP1wibVwiOlwiXCIsbi51bmljb2RlP1widVwiOlwiXCIsbi5zdGlja3k/XCJ5XCI6XCJcIl0uam9pbihcIlwiKX1mdW5jdGlvbiBDKCl7Zm9yKHZhciBuPVtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKSx0PW4ubGVuZ3RoLHI9MDtyPHQ7cis9MSlfKG5bcl0pO3JldHVybiBlKGZ1bmN0aW9uKHIsZSl7Zm9yKHZhciB1LG89bmV3IEFycmF5KHQpLGk9MDtpPHQ7aSs9MSl7aWYoISh1PUIobltpXS5fKHIsZSksdSkpLnN0YXR1cylyZXR1cm4gdTtvW2ldPXUudmFsdWUsZT11LmluZGV4fXJldHVybiBCKGIoZSxvKSx1KX0pfWZ1bmN0aW9uIEooKXt2YXIgbj1bXS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7aWYoMD09PW4ubGVuZ3RoKXRocm93IG5ldyBFcnJvcihcInNlcU1hcCBuZWVkcyBhdCBsZWFzdCBvbmUgYXJndW1lbnRcIik7dmFyIHQ9bi5wb3AoKTtyZXR1cm4gayh0KSxDLmFwcGx5KG51bGwsbikubWFwKGZ1bmN0aW9uKG4pe3JldHVybiB0LmFwcGx5KG51bGwsbil9KX1mdW5jdGlvbiBUKCl7dmFyIG49W10uc2xpY2UuY2FsbChhcmd1bWVudHMpLHQ9bi5sZW5ndGg7aWYoMD09PXQpcmV0dXJuIFkoXCJ6ZXJvIGFsdGVybmF0ZXNcIik7Zm9yKHZhciByPTA7cjx0O3IrPTEpXyhuW3JdKTtyZXR1cm4gZShmdW5jdGlvbih0LHIpe2Zvcih2YXIgZSx1PTA7dTxuLmxlbmd0aDt1Kz0xKWlmKChlPUIoblt1XS5fKHQsciksZSkpLnN0YXR1cylyZXR1cm4gZTtyZXR1cm4gZX0pfWZ1bmN0aW9uIFYobix0KXtyZXR1cm4gSChuLHQpLm9yKFgoW10pKX1mdW5jdGlvbiBIKG4sdCl7cmV0dXJuIF8obiksXyh0KSxKKG4sdC50aGVuKG4pLm1hbnkoKSxmdW5jdGlvbihuLHQpe3JldHVybltuXS5jb25jYXQodCl9KX1mdW5jdGlvbiBLKG4pe1Aobik7dmFyIHQ9XCInXCIrbitcIidcIjtyZXR1cm4gZShmdW5jdGlvbihyLGUpe3ZhciB1PWUrbi5sZW5ndGgsbz1yLnNsaWNlKGUsdSk7cmV0dXJuIG89PT1uP2IodSxvKTp4KGUsdCl9KX1mdW5jdGlvbiBRKG4sdCl7IWZ1bmN0aW9uKG4pe2lmKCEobiBpbnN0YW5jZW9mIFJlZ0V4cCkpdGhyb3cgbmV3IEVycm9yKFwibm90IGEgcmVnZXhwOiBcIituKTtmb3IodmFyIHQ9RyhuKSxyPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBlPXQuY2hhckF0KHIpO2lmKFwiaVwiIT09ZSYmXCJtXCIhPT1lJiZcInVcIiE9PWUmJlwic1wiIT09ZSl0aHJvdyBuZXcgRXJyb3IoJ3Vuc3VwcG9ydGVkIHJlZ2V4cCBmbGFnIFwiJytlKydcIjogJytuKX19KG4pLGFyZ3VtZW50cy5sZW5ndGg+PTI/Tyh0KTp0PTA7dmFyIHI9ZnVuY3Rpb24obil7cmV0dXJuIFJlZ0V4cChcIl4oPzpcIituLnNvdXJjZStcIilcIixHKG4pKX0obiksdT1cIlwiK247cmV0dXJuIGUoZnVuY3Rpb24obixlKXt2YXIgbz1yLmV4ZWMobi5zbGljZShlKSk7aWYobyl7aWYoMDw9dCYmdDw9by5sZW5ndGgpe3ZhciBpPW9bMF0sYT1vW3RdO3JldHVybiBiKGUraS5sZW5ndGgsYSl9cmV0dXJuIHgoZSxcInZhbGlkIG1hdGNoIGdyb3VwICgwIHRvIFwiK28ubGVuZ3RoK1wiKSBpbiBcIit1KX1yZXR1cm4geChlLHUpfSl9ZnVuY3Rpb24gWChuKXtyZXR1cm4gZShmdW5jdGlvbih0LHIpe3JldHVybiBiKHIsbil9KX1mdW5jdGlvbiBZKG4pe3JldHVybiBlKGZ1bmN0aW9uKHQscil7cmV0dXJuIHgocixuKX0pfWZ1bmN0aW9uIFoobil7aWYoeShuKSlyZXR1cm4gZShmdW5jdGlvbih0LHIpe3ZhciBlPW4uXyh0LHIpO3JldHVybiBlLmluZGV4PXIsZS52YWx1ZT1cIlwiLGV9KTtpZihcInN0cmluZ1wiPT10eXBlb2YgbilyZXR1cm4gWihLKG4pKTtpZihuIGluc3RhbmNlb2YgUmVnRXhwKXJldHVybiBaKFEobikpO3Rocm93IG5ldyBFcnJvcihcIm5vdCBhIHN0cmluZywgcmVnZXhwLCBvciBwYXJzZXI6IFwiK24pfWZ1bmN0aW9uICQobil7cmV0dXJuIF8obiksZShmdW5jdGlvbih0LHIpe3ZhciBlPW4uXyh0LHIpLHU9dC5zbGljZShyLGUuaW5kZXgpO3JldHVybiBlLnN0YXR1cz94KHIsJ25vdCBcIicrdSsnXCInKTpiKHIsbnVsbCl9KX1mdW5jdGlvbiBubihuKXtyZXR1cm4gayhuKSxlKGZ1bmN0aW9uKHQscil7dmFyIGU9TCh0LHIpO3JldHVybiByPHQubGVuZ3RoJiZuKGUpP2IocisxLGUpOngocixcImEgY2hhcmFjdGVyL2J5dGUgbWF0Y2hpbmcgXCIrbil9KX1mdW5jdGlvbiB0bihuLHQpe2FyZ3VtZW50cy5sZW5ndGg8MiYmKHQ9bixuPXZvaWQgMCk7dmFyIHI9ZShmdW5jdGlvbihuLGUpe3JldHVybiByLl89dCgpLl8sci5fKG4sZSl9KTtyZXR1cm4gbj9yLmRlc2Mobik6cn1mdW5jdGlvbiBybigpe3JldHVybiBZKFwiZmFudGFzeS1sYW5kL2VtcHR5XCIpfXUucGFyc2U9ZnVuY3Rpb24obil7aWYoXCJzdHJpbmdcIiE9dHlwZW9mIG4mJiF3KG4pKXRocm93IG5ldyBFcnJvcihcIi5wYXJzZSBtdXN0IGJlIGNhbGxlZCB3aXRoIGEgc3RyaW5nIG9yIEJ1ZmZlciBhcyBpdHMgYXJndW1lbnRcIik7dmFyIHQscj10aGlzLnNraXAoYW4pLl8obiwwKTtyZXR1cm4gdD1yLnN0YXR1cz97c3RhdHVzOiEwLHZhbHVlOnIudmFsdWV9OntzdGF0dXM6ITEsaW5kZXg6UyhuLHIuZnVydGhlc3QpLGV4cGVjdGVkOnIuZXhwZWN0ZWR9LGRlbGV0ZSBqW25dLHR9LHUudHJ5UGFyc2U9ZnVuY3Rpb24obil7dmFyIHQ9dGhpcy5wYXJzZShuKTtpZih0LnN0YXR1cylyZXR1cm4gdC52YWx1ZTt2YXIgcj1OKG4sdCksZT1uZXcgRXJyb3Iocik7dGhyb3cgZS50eXBlPVwiUGFyc2ltbW9uRXJyb3JcIixlLnJlc3VsdD10LGV9LHUuYXNzZXJ0PWZ1bmN0aW9uKG4sdCl7cmV0dXJuIHRoaXMuY2hhaW4oZnVuY3Rpb24ocil7cmV0dXJuIG4ocik/WChyKTpZKHQpfSl9LHUub3I9ZnVuY3Rpb24obil7cmV0dXJuIFQodGhpcyxuKX0sdS50cmltPWZ1bmN0aW9uKG4pe3JldHVybiB0aGlzLndyYXAobixuKX0sdS53cmFwPWZ1bmN0aW9uKG4sdCl7cmV0dXJuIEoobix0aGlzLHQsZnVuY3Rpb24obix0KXtyZXR1cm4gdH0pfSx1LnRocnU9ZnVuY3Rpb24obil7cmV0dXJuIG4odGhpcyl9LHUudGhlbj1mdW5jdGlvbihuKXtyZXR1cm4gXyhuKSxDKHRoaXMsbikubWFwKGZ1bmN0aW9uKG4pe3JldHVybiBuWzFdfSl9LHUubWFueT1mdW5jdGlvbigpe3ZhciBuPXRoaXM7cmV0dXJuIGUoZnVuY3Rpb24odCxyKXtmb3IodmFyIGU9W10sdT12b2lkIDA7Oyl7aWYoISh1PUIobi5fKHQsciksdSkpLnN0YXR1cylyZXR1cm4gQihiKHIsZSksdSk7aWYocj09PXUuaW5kZXgpdGhyb3cgbmV3IEVycm9yKFwiaW5maW5pdGUgbG9vcCBkZXRlY3RlZCBpbiAubWFueSgpIHBhcnNlciAtLS0gY2FsbGluZyAubWFueSgpIG9uIGEgcGFyc2VyIHdoaWNoIGNhbiBhY2NlcHQgemVybyBjaGFyYWN0ZXJzIGlzIHVzdWFsbHkgdGhlIGNhdXNlXCIpO3I9dS5pbmRleCxlLnB1c2godS52YWx1ZSl9fSl9LHUudGllV2l0aD1mdW5jdGlvbihuKXtyZXR1cm4gUChuKSx0aGlzLm1hcChmdW5jdGlvbih0KXtpZihmdW5jdGlvbihuKXtpZighRShuKSl0aHJvdyBuZXcgRXJyb3IoXCJub3QgYW4gYXJyYXk6IFwiK24pfSh0KSx0Lmxlbmd0aCl7UCh0WzBdKTtmb3IodmFyIHI9dFswXSxlPTE7ZTx0Lmxlbmd0aDtlKyspUCh0W2VdKSxyKz1uK3RbZV07cmV0dXJuIHJ9cmV0dXJuXCJcIn0pfSx1LnRpZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRpZVdpdGgoXCJcIil9LHUudGltZXM9ZnVuY3Rpb24obix0KXt2YXIgcj10aGlzO3JldHVybiBhcmd1bWVudHMubGVuZ3RoPDImJih0PW4pLE8obiksTyh0KSxlKGZ1bmN0aW9uKGUsdSl7Zm9yKHZhciBvPVtdLGk9dm9pZCAwLGE9dm9pZCAwLGY9MDtmPG47Zis9MSl7aWYoYT1CKGk9ci5fKGUsdSksYSksIWkuc3RhdHVzKXJldHVybiBhO3U9aS5pbmRleCxvLnB1c2goaS52YWx1ZSl9Zm9yKDtmPHQmJihhPUIoaT1yLl8oZSx1KSxhKSxpLnN0YXR1cyk7Zis9MSl1PWkuaW5kZXgsby5wdXNoKGkudmFsdWUpO3JldHVybiBCKGIodSxvKSxhKX0pfSx1LnJlc3VsdD1mdW5jdGlvbihuKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gbn0pfSx1LmF0TW9zdD1mdW5jdGlvbihuKXtyZXR1cm4gdGhpcy50aW1lcygwLG4pfSx1LmF0TGVhc3Q9ZnVuY3Rpb24obil7cmV0dXJuIEoodGhpcy50aW1lcyhuKSx0aGlzLm1hbnkoKSxmdW5jdGlvbihuLHQpe3JldHVybiBuLmNvbmNhdCh0KX0pfSx1Lm1hcD1mdW5jdGlvbihuKXtrKG4pO3ZhciB0PXRoaXM7cmV0dXJuIGUoZnVuY3Rpb24ocixlKXt2YXIgdT10Ll8ocixlKTtyZXR1cm4gdS5zdGF0dXM/QihiKHUuaW5kZXgsbih1LnZhbHVlKSksdSk6dX0pfSx1LmNvbnRyYW1hcD1mdW5jdGlvbihuKXtrKG4pO3ZhciB0PXRoaXM7cmV0dXJuIGUoZnVuY3Rpb24ocixlKXt2YXIgdT10LnBhcnNlKG4oci5zbGljZShlKSkpO3JldHVybiB1LnN0YXR1cz9iKGUrci5sZW5ndGgsdS52YWx1ZSk6dX0pfSx1LnByb21hcD1mdW5jdGlvbihuLHQpe3JldHVybiBrKG4pLGsodCksdGhpcy5jb250cmFtYXAobikubWFwKHQpfSx1LnNraXA9ZnVuY3Rpb24obil7cmV0dXJuIEModGhpcyxuKS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIG5bMF19KX0sdS5tYXJrPWZ1bmN0aW9uKCl7cmV0dXJuIEooZW4sdGhpcyxlbixmdW5jdGlvbihuLHQscil7cmV0dXJue3N0YXJ0Om4sdmFsdWU6dCxlbmQ6cn19KX0sdS5ub2RlPWZ1bmN0aW9uKG4pe3JldHVybiBKKGVuLHRoaXMsZW4sZnVuY3Rpb24odCxyLGUpe3JldHVybntuYW1lOm4sdmFsdWU6cixzdGFydDp0LGVuZDplfX0pfSx1LnNlcEJ5PWZ1bmN0aW9uKG4pe3JldHVybiBWKHRoaXMsbil9LHUuc2VwQnkxPWZ1bmN0aW9uKG4pe3JldHVybiBIKHRoaXMsbil9LHUubG9va2FoZWFkPWZ1bmN0aW9uKG4pe3JldHVybiB0aGlzLnNraXAoWihuKSl9LHUubm90Rm9sbG93ZWRCeT1mdW5jdGlvbihuKXtyZXR1cm4gdGhpcy5za2lwKCQobikpfSx1LmRlc2M9ZnVuY3Rpb24obil7RShuKXx8KG49W25dKTt2YXIgdD10aGlzO3JldHVybiBlKGZ1bmN0aW9uKHIsZSl7dmFyIHU9dC5fKHIsZSk7cmV0dXJuIHUuc3RhdHVzfHwodS5leHBlY3RlZD1uKSx1fSl9LHUuZmFsbGJhY2s9ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMub3IoWChuKSl9LHUuYXA9ZnVuY3Rpb24obil7cmV0dXJuIEoobix0aGlzLGZ1bmN0aW9uKG4sdCl7cmV0dXJuIG4odCl9KX0sdS5jaGFpbj1mdW5jdGlvbihuKXt2YXIgdD10aGlzO3JldHVybiBlKGZ1bmN0aW9uKHIsZSl7dmFyIHU9dC5fKHIsZSk7cmV0dXJuIHUuc3RhdHVzP0Iobih1LnZhbHVlKS5fKHIsdS5pbmRleCksdSk6dX0pfSx1LmNvbmNhdD11Lm9yLHUuZW1wdHk9cm4sdS5vZj1YLHVbXCJmYW50YXN5LWxhbmQvYXBcIl09dS5hcCx1W1wiZmFudGFzeS1sYW5kL2NoYWluXCJdPXUuY2hhaW4sdVtcImZhbnRhc3ktbGFuZC9jb25jYXRcIl09dS5jb25jYXQsdVtcImZhbnRhc3ktbGFuZC9lbXB0eVwiXT11LmVtcHR5LHVbXCJmYW50YXN5LWxhbmQvb2ZcIl09dS5vZix1W1wiZmFudGFzeS1sYW5kL21hcFwiXT11Lm1hcDt2YXIgZW49ZShmdW5jdGlvbihuLHQpe3JldHVybiBiKHQsUyhuLHQpKX0pLHVuPWUoZnVuY3Rpb24obix0KXtyZXR1cm4gdD49bi5sZW5ndGg/eCh0LFwiYW55IGNoYXJhY3Rlci9ieXRlXCIpOmIodCsxLEwobix0KSl9KSxvbj1lKGZ1bmN0aW9uKG4sdCl7cmV0dXJuIGIobi5sZW5ndGgsbi5zbGljZSh0KSl9KSxhbj1lKGZ1bmN0aW9uKG4sdCl7cmV0dXJuIHQ8bi5sZW5ndGg/eCh0LFwiRU9GXCIpOmIodCxudWxsKX0pLGZuPVEoL1swLTldLykuZGVzYyhcImEgZGlnaXRcIiksY249USgvWzAtOV0qLykuZGVzYyhcIm9wdGlvbmFsIGRpZ2l0c1wiKSxzbj1RKC9bYS16XS9pKS5kZXNjKFwiYSBsZXR0ZXJcIiksbG49USgvW2Etel0qL2kpLmRlc2MoXCJvcHRpb25hbCBsZXR0ZXJzXCIpLGhuPVEoL1xccyovKS5kZXNjKFwib3B0aW9uYWwgd2hpdGVzcGFjZVwiKSxwbj1RKC9cXHMrLykuZGVzYyhcIndoaXRlc3BhY2VcIiksZG49SyhcIlxcclwiKSx2bj1LKFwiXFxuXCIpLGduPUsoXCJcXHJcXG5cIiksbW49VChnbix2bixkbikuZGVzYyhcIm5ld2xpbmVcIikseW49VChtbixhbik7ZS5hbGw9b24sZS5hbHQ9VCxlLmFueT11bixlLmNyPWRuLGUuY3JlYXRlTGFuZ3VhZ2U9ZnVuY3Rpb24obil7dmFyIHQ9e307Zm9yKHZhciByIGluIG4pKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJmZ1bmN0aW9uKHIpe3Rbcl09dG4oZnVuY3Rpb24oKXtyZXR1cm4gbltyXSh0KX0pfShyKTtyZXR1cm4gdH0sZS5jcmxmPWduLGUuY3VzdG9tPWZ1bmN0aW9uKG4pe3JldHVybiBlKG4oYix4KSl9LGUuZGlnaXQ9Zm4sZS5kaWdpdHM9Y24sZS5lbXB0eT1ybixlLmVuZD15bixlLmVvZj1hbixlLmZhaWw9WSxlLmZvcm1hdEVycm9yPU4sZS5pbmRleD1lbixlLmlzUGFyc2VyPXksZS5sYXp5PXRuLGUubGV0dGVyPXNuLGUubGV0dGVycz1sbixlLmxmPXZuLGUubG9va2FoZWFkPVosZS5tYWtlRmFpbHVyZT14LGUubWFrZVN1Y2Nlc3M9YixlLm5ld2xpbmU9bW4sZS5ub25lT2Y9ZnVuY3Rpb24obil7cmV0dXJuIG5uKGZ1bmN0aW9uKHQpe3JldHVybiBuLmluZGV4T2YodCk8MH0pLmRlc2MoXCJub25lIG9mICdcIituK1wiJ1wiKX0sZS5ub3RGb2xsb3dlZEJ5PSQsZS5vZj1YLGUub25lT2Y9ZnVuY3Rpb24obil7Zm9yKHZhciB0PW4uc3BsaXQoXCJcIikscj0wO3I8dC5sZW5ndGg7cisrKXRbcl09XCInXCIrdFtyXStcIidcIjtyZXR1cm4gbm4oZnVuY3Rpb24odCl7cmV0dXJuIG4uaW5kZXhPZih0KT49MH0pLmRlc2ModCl9LGUub3B0V2hpdGVzcGFjZT1obixlLlBhcnNlcj1lLGUucmFuZ2U9ZnVuY3Rpb24obix0KXtyZXR1cm4gbm4oZnVuY3Rpb24ocil7cmV0dXJuIG48PXImJnI8PXR9KS5kZXNjKG4rXCItXCIrdCl9LGUucmVnZXg9USxlLnJlZ2V4cD1RLGUuc2VwQnk9VixlLnNlcEJ5MT1ILGUuc2VxPUMsZS5zZXFNYXA9SixlLnNlcU9iaj1mdW5jdGlvbigpe2Zvcih2YXIgbix0PXt9LHI9MCx1PShuPWFyZ3VtZW50cyxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChuKSksbz11Lmxlbmd0aCxpPTA7aTxvO2krPTEpe3ZhciBhPXVbaV07aWYoIXkoYSkpe2lmKEUoYSkmJjI9PT1hLmxlbmd0aCYmXCJzdHJpbmdcIj09dHlwZW9mIGFbMF0mJnkoYVsxXSkpe3ZhciBmPWFbMF07aWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsZikpdGhyb3cgbmV3IEVycm9yKFwic2VxT2JqOiBkdXBsaWNhdGUga2V5IFwiK2YpO3RbZl09ITAscisrO2NvbnRpbnVlfXRocm93IG5ldyBFcnJvcihcInNlcU9iaiBhcmd1bWVudHMgbXVzdCBiZSBwYXJzZXJzIG9yIFtzdHJpbmcsIHBhcnNlcl0gYXJyYXkgcGFpcnMuXCIpfX1pZigwPT09cil0aHJvdyBuZXcgRXJyb3IoXCJzZXFPYmogZXhwZWN0cyBhdCBsZWFzdCBvbmUgbmFtZWQgcGFyc2VyLCBmb3VuZCB6ZXJvXCIpO3JldHVybiBlKGZ1bmN0aW9uKG4sdCl7Zm9yKHZhciByLGU9e30saT0wO2k8bztpKz0xKXt2YXIgYSxmO2lmKEUodVtpXSk/KGE9dVtpXVswXSxmPXVbaV1bMV0pOihhPW51bGwsZj11W2ldKSwhKHI9QihmLl8obix0KSxyKSkuc3RhdHVzKXJldHVybiByO2EmJihlW2FdPXIudmFsdWUpLHQ9ci5pbmRleH1yZXR1cm4gQihiKHQsZSkscil9KX0sZS5zdHJpbmc9SyxlLnN1Y2NlZWQ9WCxlLnRha2VXaGlsZT1mdW5jdGlvbihuKXtyZXR1cm4gayhuKSxlKGZ1bmN0aW9uKHQscil7Zm9yKHZhciBlPXI7ZTx0Lmxlbmd0aCYmbihMKHQsZSkpOyllKys7cmV0dXJuIGIoZSx0LnNsaWNlKHIsZSkpfSl9LGUudGVzdD1ubixlLndoaXRlc3BhY2U9cG4sZVtcImZhbnRhc3ktbGFuZC9lbXB0eVwiXT1ybixlW1wiZmFudGFzeS1sYW5kL29mXCJdPVgsZS5CaW5hcnk9e2JpdFNlcTpsLGJpdFNlcU9iajpmdW5jdGlvbihuKXtzKCk7dmFyIHQ9e30scj0wLGU9YShmdW5jdGlvbihuKXtpZihFKG4pKXt2YXIgZT1uO2lmKDIhPT1lLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoXCJbXCIrZS5qb2luKFwiLCBcIikrXCJdIHNob3VsZCBiZSBsZW5ndGggMiwgZ290IGxlbmd0aCBcIitlLmxlbmd0aCk7aWYoUChlWzBdKSxPKGVbMV0pLE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LGVbMF0pKXRocm93IG5ldyBFcnJvcihcImR1cGxpY2F0ZSBrZXkgaW4gYml0U2VxT2JqOiBcIitlWzBdKTtyZXR1cm4gdFtlWzBdXT0hMCxyKyssZX1yZXR1cm4gTyhuKSxbbnVsbCxuXX0sbik7aWYocjwxKXRocm93IG5ldyBFcnJvcihcImJpdFNlcU9iaiBleHBlY3RzIGF0IGxlYXN0IG9uZSBuYW1lZCBwYWlyLCBnb3QgW1wiK24uam9pbihcIiwgXCIpK1wiXVwiKTt2YXIgdT1hKGZ1bmN0aW9uKG4pe3JldHVybiBuWzBdfSxlKTtyZXR1cm4gbChhKGZ1bmN0aW9uKG4pe3JldHVybiBuWzFdfSxlKSkubWFwKGZ1bmN0aW9uKG4pe3JldHVybiBpKGZ1bmN0aW9uKG4sdCl7cmV0dXJuIG51bGwhPT10WzBdJiYoblt0WzBdXT10WzFdKSxufSx7fSxhKGZ1bmN0aW9uKHQscil7cmV0dXJuW3QsbltyXV19LHUpKX0pfSxieXRlOmZ1bmN0aW9uKG4pe2lmKHMoKSxPKG4pLG4+MjU1KXRocm93IG5ldyBFcnJvcihcIlZhbHVlIHNwZWNpZmllZCB0byBieXRlIGNvbnN0cnVjdG9yIChcIituK1wiPTB4XCIrbi50b1N0cmluZygxNikrXCIpIGlzIGxhcmdlciBpbiB2YWx1ZSB0aGFuIGEgc2luZ2xlIGJ5dGUuXCIpO3ZhciB0PShuPjE1P1wiMHhcIjpcIjB4MFwiKStuLnRvU3RyaW5nKDE2KTtyZXR1cm4gZShmdW5jdGlvbihyLGUpe3ZhciB1PUwocixlKTtyZXR1cm4gdT09PW4/YihlKzEsdSk6eChlLHQpfSl9LGJ1ZmZlcjpmdW5jdGlvbihuKXtyZXR1cm4gaChcImJ1ZmZlclwiLG4pLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gQnVmZmVyLmZyb20obil9KX0sZW5jb2RlZFN0cmluZzpmdW5jdGlvbihuLHQpe3JldHVybiBoKFwic3RyaW5nXCIsdCkubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LnRvU3RyaW5nKG4pfSl9LHVpbnRCRTpkLHVpbnQ4QkU6ZCgxKSx1aW50MTZCRTpkKDIpLHVpbnQzMkJFOmQoNCksdWludExFOnYsdWludDhMRTp2KDEpLHVpbnQxNkxFOnYoMiksdWludDMyTEU6dig0KSxpbnRCRTpnLGludDhCRTpnKDEpLGludDE2QkU6ZygyKSxpbnQzMkJFOmcoNCksaW50TEU6bSxpbnQ4TEU6bSgxKSxpbnQxNkxFOm0oMiksaW50MzJMRTptKDQpLGZsb2F0QkU6aChcImZsb2F0QkVcIiw0KS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIG4ucmVhZEZsb2F0QkUoMCl9KSxmbG9hdExFOmgoXCJmbG9hdExFXCIsNCkubWFwKGZ1bmN0aW9uKG4pe3JldHVybiBuLnJlYWRGbG9hdExFKDApfSksZG91YmxlQkU6aChcImRvdWJsZUJFXCIsOCkubWFwKGZ1bmN0aW9uKG4pe3JldHVybiBuLnJlYWREb3VibGVCRSgwKX0pLGRvdWJsZUxFOmgoXCJkb3VibGVMRVwiLDgpLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gbi5yZWFkRG91YmxlTEUoMCl9KX0sbi5leHBvcnRzPWV9XSl9KTsiLCAiXCJ1c2Ugc3RyaWN0XCI7XHJcbnZhciBfX2V4dGVuZHMgPSAodGhpcyAmJiB0aGlzLl9fZXh0ZW5kcykgfHwgKGZ1bmN0aW9uICgpIHtcclxuICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHtcclxuICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XHJcbiAgICAgICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcclxuICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsIHApKSBkW3BdID0gYltwXTsgfTtcclxuICAgICAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTtcclxuICAgIH07XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHtcclxuICAgICAgICBpZiAodHlwZW9mIGIgIT09IFwiZnVuY3Rpb25cIiAmJiBiICE9PSBudWxsKVxyXG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIiArIFN0cmluZyhiKSArIFwiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7XHJcbiAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcclxuICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cclxuICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XHJcbiAgICB9O1xyXG59KSgpO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbmV4cG9ydHMuRW1wdHlCVHJlZSA9IGV4cG9ydHMuYXNTZXQgPSBleHBvcnRzLnNpbXBsZUNvbXBhcmF0b3IgPSBleHBvcnRzLmRlZmF1bHRDb21wYXJhdG9yID0gdm9pZCAwO1xyXG4vKipcclxuICogQ29tcGFyZXMgRGVmYXVsdENvbXBhcmFibGVzIHRvIGZvcm0gYSBzdHJpY3QgcGFydGlhbCBvcmRlcmluZy5cclxuICpcclxuICogSGFuZGxlcyArLy0wIGFuZCBOYU4gbGlrZSBNYXA6IE5hTiBpcyBlcXVhbCB0byBOYU4sIGFuZCAtMCBpcyBlcXVhbCB0byArMC5cclxuICpcclxuICogQXJyYXlzIGFyZSBjb21wYXJlZCB1c2luZyAnPCcgYW5kICc+Jywgd2hpY2ggbWF5IGNhdXNlIHVuZXhwZWN0ZWQgZXF1YWxpdHk6XHJcbiAqIGZvciBleGFtcGxlIFsxXSB3aWxsIGJlIGNvbnNpZGVyZWQgZXF1YWwgdG8gWycxJ10uXHJcbiAqXHJcbiAqIFR3byBvYmplY3RzIHdpdGggZXF1YWwgdmFsdWVPZiBjb21wYXJlIHRoZSBzYW1lLCBidXQgY29tcGFyZSB1bmVxdWFsIHRvXHJcbiAqIHByaW1pdGl2ZXMgdGhhdCBoYXZlIHRoZSBzYW1lIHZhbHVlLlxyXG4gKi9cclxuZnVuY3Rpb24gZGVmYXVsdENvbXBhcmF0b3IoYSwgYikge1xyXG4gICAgLy8gU3BlY2lhbCBjYXNlIGZpbml0ZSBudW1iZXJzIGZpcnN0IGZvciBwZXJmb3JtYW5jZS5cclxuICAgIC8vIE5vdGUgdGhhdCB0aGUgdHJpY2sgb2YgdXNpbmcgJ2EgLSBiJyBhbmQgY2hlY2tpbmcgZm9yIE5hTiB0byBkZXRlY3Qgbm9uLW51bWJlcnNcclxuICAgIC8vIGRvZXMgbm90IHdvcmsgaWYgdGhlIHN0cmluZ3MgYXJlIG51bWVyaWMgKGV4OiBcIjVcIikuIFRoaXMgd291bGQgbGVhZGluZyBtb3N0IFxyXG4gICAgLy8gY29tcGFyaXNvbiBmdW5jdGlvbnMgdXNpbmcgdGhhdCBhcHByb2FjaCB0byBmYWlsIHRvIGhhdmUgdHJhbnNpdGl2aXR5LlxyXG4gICAgaWYgKE51bWJlci5pc0Zpbml0ZShhKSAmJiBOdW1iZXIuaXNGaW5pdGUoYikpIHtcclxuICAgICAgICByZXR1cm4gYSAtIGI7XHJcbiAgICB9XHJcbiAgICAvLyBUaGUgZGVmYXVsdCA8IGFuZCA+IG9wZXJhdG9ycyBhcmUgbm90IHRvdGFsbHkgb3JkZXJlZC4gVG8gYWxsb3cgdHlwZXMgdG8gYmUgbWl4ZWRcclxuICAgIC8vIGluIGEgc2luZ2xlIGNvbGxlY3Rpb24sIGNvbXBhcmUgdHlwZXMgYW5kIG9yZGVyIHZhbHVlcyBvZiBkaWZmZXJlbnQgdHlwZXMgYnkgdHlwZS5cclxuICAgIHZhciB0YSA9IHR5cGVvZiBhO1xyXG4gICAgdmFyIHRiID0gdHlwZW9mIGI7XHJcbiAgICBpZiAodGEgIT09IHRiKSB7XHJcbiAgICAgICAgcmV0dXJuIHRhIDwgdGIgPyAtMSA6IDE7XHJcbiAgICB9XHJcbiAgICBpZiAodGEgPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgLy8gc3RhbmRhcmRpemVkIEphdmFTY3JpcHQgYnVnOiBudWxsIGlzIG5vdCBhbiBvYmplY3QsIGJ1dCB0eXBlb2Ygc2F5cyBpdCBpc1xyXG4gICAgICAgIGlmIChhID09PSBudWxsKVxyXG4gICAgICAgICAgICByZXR1cm4gYiA9PT0gbnVsbCA/IDAgOiAtMTtcclxuICAgICAgICBlbHNlIGlmIChiID09PSBudWxsKVxyXG4gICAgICAgICAgICByZXR1cm4gMTtcclxuICAgICAgICBhID0gYS52YWx1ZU9mKCk7XHJcbiAgICAgICAgYiA9IGIudmFsdWVPZigpO1xyXG4gICAgICAgIHRhID0gdHlwZW9mIGE7XHJcbiAgICAgICAgdGIgPSB0eXBlb2YgYjtcclxuICAgICAgICAvLyBEZWFsIHdpdGggdGhlIHR3byB2YWx1ZU9mKClzIHByb2R1Y2luZyBkaWZmZXJlbnQgdHlwZXNcclxuICAgICAgICBpZiAodGEgIT09IHRiKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0YSA8IHRiID8gLTEgOiAxO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIGEgYW5kIGIgYXJlIG5vdyB0aGUgc2FtZSB0eXBlLCBhbmQgd2lsbCBiZSBhIG51bWJlciwgc3RyaW5nIG9yIGFycmF5IFxyXG4gICAgLy8gKHdoaWNoIHdlIGFzc3VtZSBob2xkcyBudW1iZXJzIG9yIHN0cmluZ3MpLCBvciBzb21ldGhpbmcgdW5zdXBwb3J0ZWQuXHJcbiAgICBpZiAoYSA8IGIpXHJcbiAgICAgICAgcmV0dXJuIC0xO1xyXG4gICAgaWYgKGEgPiBiKVxyXG4gICAgICAgIHJldHVybiAxO1xyXG4gICAgaWYgKGEgPT09IGIpXHJcbiAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAvLyBPcmRlciBOYU4gbGVzcyB0aGFuIG90aGVyIG51bWJlcnNcclxuICAgIGlmIChOdW1iZXIuaXNOYU4oYSkpXHJcbiAgICAgICAgcmV0dXJuIE51bWJlci5pc05hTihiKSA/IDAgOiAtMTtcclxuICAgIGVsc2UgaWYgKE51bWJlci5pc05hTihiKSlcclxuICAgICAgICByZXR1cm4gMTtcclxuICAgIC8vIFRoaXMgY291bGQgYmUgdHdvIG9iamVjdHMgKGUuZy4gWzddIGFuZCBbJzcnXSkgdGhhdCBhcmVuJ3Qgb3JkZXJlZFxyXG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkoYSkgPyAwIDogTnVtYmVyLk5hTjtcclxufVxyXG5leHBvcnRzLmRlZmF1bHRDb21wYXJhdG9yID0gZGVmYXVsdENvbXBhcmF0b3I7XHJcbjtcclxuZnVuY3Rpb24gc2ltcGxlQ29tcGFyYXRvcihhLCBiKSB7XHJcbiAgICByZXR1cm4gYSA+IGIgPyAxIDogYSA8IGIgPyAtMSA6IDA7XHJcbn1cclxuZXhwb3J0cy5zaW1wbGVDb21wYXJhdG9yID0gc2ltcGxlQ29tcGFyYXRvcjtcclxuO1xyXG4vKipcclxuICogQSByZWFzb25hYmx5IGZhc3QgY29sbGVjdGlvbiBvZiBrZXktdmFsdWUgcGFpcnMgd2l0aCBhIHBvd2VyZnVsIEFQSS5cclxuICogTGFyZ2VseSBjb21wYXRpYmxlIHdpdGggdGhlIHN0YW5kYXJkIE1hcC4gQlRyZWUgaXMgYSBCKyB0cmVlIGRhdGEgc3RydWN0dXJlLFxyXG4gKiBzbyB0aGUgY29sbGVjdGlvbiBpcyBzb3J0ZWQgYnkga2V5LlxyXG4gKlxyXG4gKiBCKyB0cmVlcyB0ZW5kIHRvIHVzZSBtZW1vcnkgbW9yZSBlZmZpY2llbnRseSB0aGFuIGhhc2h0YWJsZXMgc3VjaCBhcyB0aGVcclxuICogc3RhbmRhcmQgTWFwLCBlc3BlY2lhbGx5IHdoZW4gdGhlIGNvbGxlY3Rpb24gY29udGFpbnMgYSBsYXJnZSBudW1iZXIgb2ZcclxuICogaXRlbXMuIEhvd2V2ZXIsIG1haW50YWluaW5nIHRoZSBzb3J0IG9yZGVyIG1ha2VzIHRoZW0gbW9kZXN0bHkgc2xvd2VyOlxyXG4gKiBPKGxvZyBzaXplKSByYXRoZXIgdGhhbiBPKDEpLiBUaGlzIEIrIHRyZWUgaW1wbGVtZW50YXRpb24gc3VwcG9ydHMgTygxKVxyXG4gKiBmYXN0IGNsb25pbmcuIEl0IGFsc28gc3VwcG9ydHMgZnJlZXplKCksIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGVuc3VyZSB0aGF0XHJcbiAqIGEgQlRyZWUgaXMgbm90IGNoYW5nZWQgYWNjaWRlbnRhbGx5LlxyXG4gKlxyXG4gKiBDb25mdXNpbmdseSwgdGhlIEVTNiBNYXAuZm9yRWFjaChjKSBtZXRob2QgY2FsbHMgYyh2YWx1ZSxrZXkpIGluc3RlYWQgb2ZcclxuICogYyhrZXksdmFsdWUpLCBpbiBjb250cmFzdCB0byBvdGhlciBtZXRob2RzIHN1Y2ggYXMgc2V0KCkgYW5kIGVudHJpZXMoKVxyXG4gKiB3aGljaCBwdXQgdGhlIGtleSBmaXJzdC4gSSBjYW4gb25seSBhc3N1bWUgdGhhdCB0aGUgb3JkZXIgd2FzIHJldmVyc2VkIG9uXHJcbiAqIHRoZSB0aGVvcnkgdGhhdCB1c2VycyB3b3VsZCB1c3VhbGx5IHdhbnQgdG8gZXhhbWluZSB2YWx1ZXMgYW5kIGlnbm9yZSBrZXlzLlxyXG4gKiBCVHJlZSdzIGZvckVhY2goKSB0aGVyZWZvcmUgd29ya3MgdGhlIHNhbWUgd2F5LCBidXQgYSBzZWNvbmQgbWV0aG9kXHJcbiAqIGAuZm9yRWFjaFBhaXIoKGtleSx2YWx1ZSk9PnsuLi59KWAgaXMgcHJvdmlkZWQgd2hpY2ggc2VuZHMgeW91IHRoZSBrZXlcclxuICogZmlyc3QgYW5kIHRoZSB2YWx1ZSBzZWNvbmQ7IHRoaXMgbWV0aG9kIGlzIHNsaWdodGx5IGZhc3RlciBiZWNhdXNlIGl0IGlzXHJcbiAqIHRoZSBcIm5hdGl2ZVwiIGZvci1lYWNoIG1ldGhvZCBmb3IgdGhpcyBjbGFzcy5cclxuICpcclxuICogT3V0IG9mIHRoZSBib3gsIEJUcmVlIHN1cHBvcnRzIGtleXMgdGhhdCBhcmUgbnVtYmVycywgc3RyaW5ncywgYXJyYXlzIG9mXHJcbiAqIG51bWJlcnMvc3RyaW5ncywgRGF0ZSwgYW5kIG9iamVjdHMgdGhhdCBoYXZlIGEgdmFsdWVPZigpIG1ldGhvZCByZXR1cm5pbmcgYVxyXG4gKiBudW1iZXIgb3Igc3RyaW5nLiBPdGhlciBkYXRhIHR5cGVzLCBzdWNoIGFzIGFycmF5cyBvZiBEYXRlIG9yIGN1c3RvbVxyXG4gKiBvYmplY3RzLCByZXF1aXJlIGEgY3VzdG9tIGNvbXBhcmF0b3IsIHdoaWNoIHlvdSBtdXN0IHBhc3MgYXMgdGhlIHNlY29uZFxyXG4gKiBhcmd1bWVudCB0byB0aGUgY29uc3RydWN0b3IgKHRoZSBmaXJzdCBhcmd1bWVudCBpcyBhbiBvcHRpb25hbCBsaXN0IG9mXHJcbiAqIGluaXRpYWwgaXRlbXMpLiBTeW1ib2xzIGNhbm5vdCBiZSB1c2VkIGFzIGtleXMgYmVjYXVzZSB0aGV5IGFyZSB1bm9yZGVyZWRcclxuICogKG9uZSBTeW1ib2wgaXMgbmV2ZXIgXCJncmVhdGVyXCIgb3IgXCJsZXNzXCIgdGhhbiBhbm90aGVyKS5cclxuICpcclxuICogQGV4YW1wbGVcclxuICogR2l2ZW4gYSB7bmFtZTogc3RyaW5nLCBhZ2U6IG51bWJlcn0gb2JqZWN0LCB5b3UgY2FuIGNyZWF0ZSBhIHRyZWUgc29ydGVkIGJ5XHJcbiAqIG5hbWUgYW5kIHRoZW4gYnkgYWdlIGxpa2UgdGhpczpcclxuICpcclxuICogICAgIHZhciB0cmVlID0gbmV3IEJUcmVlKHVuZGVmaW5lZCwgKGEsIGIpID0+IHtcclxuICogICAgICAgaWYgKGEubmFtZSA+IGIubmFtZSlcclxuICogICAgICAgICByZXR1cm4gMTsgLy8gUmV0dXJuIGEgbnVtYmVyID4wIHdoZW4gYSA+IGJcclxuICogICAgICAgZWxzZSBpZiAoYS5uYW1lIDwgYi5uYW1lKVxyXG4gKiAgICAgICAgIHJldHVybiAtMTsgLy8gUmV0dXJuIGEgbnVtYmVyIDwwIHdoZW4gYSA8IGJcclxuICogICAgICAgZWxzZSAvLyBuYW1lcyBhcmUgZXF1YWwgKG9yIGluY29tcGFyYWJsZSlcclxuICogICAgICAgICByZXR1cm4gYS5hZ2UgLSBiLmFnZTsgLy8gUmV0dXJuID4wIHdoZW4gYS5hZ2UgPiBiLmFnZVxyXG4gKiAgICAgfSk7XHJcbiAqXHJcbiAqICAgICB0cmVlLnNldCh7bmFtZTpcIkJpbGxcIiwgYWdlOjE3fSwgXCJoYXBweVwiKTtcclxuICogICAgIHRyZWUuc2V0KHtuYW1lOlwiRnJhblwiLCBhZ2U6NDB9LCBcImJ1c3kgJiBzdHJlc3NlZFwiKTtcclxuICogICAgIHRyZWUuc2V0KHtuYW1lOlwiQmlsbFwiLCBhZ2U6NTV9LCBcInJlY2VudGx5IGxhaWQgb2ZmXCIpO1xyXG4gKiAgICAgdHJlZS5mb3JFYWNoUGFpcigoaywgdikgPT4ge1xyXG4gKiAgICAgICBjb25zb2xlLmxvZyhgTmFtZTogJHtrLm5hbWV9IEFnZTogJHtrLmFnZX0gU3RhdHVzOiAke3Z9YCk7XHJcbiAqICAgICB9KTtcclxuICpcclxuICogQGRlc2NyaXB0aW9uXHJcbiAqIFRoZSBcInJhbmdlXCIgbWV0aG9kcyAoYGZvckVhY2gsIGZvclJhbmdlLCBlZGl0UmFuZ2VgKSB3aWxsIHJldHVybiB0aGUgbnVtYmVyXHJcbiAqIG9mIGVsZW1lbnRzIHRoYXQgd2VyZSBzY2FubmVkLiBJbiBhZGRpdGlvbiwgdGhlIGNhbGxiYWNrIGNhbiByZXR1cm4ge2JyZWFrOlJ9XHJcbiAqIHRvIHN0b3AgZWFybHkgYW5kIHJldHVybiBSIGZyb20gdGhlIG91dGVyIGZ1bmN0aW9uLlxyXG4gKlxyXG4gKiAtIFRPRE86IFRlc3QgcGVyZm9ybWFuY2Ugb2YgcHJlYWxsb2NhdGluZyB2YWx1ZXMgYXJyYXkgYXQgbWF4IHNpemVcclxuICogLSBUT0RPOiBBZGQgZmFzdCBpbml0aWFsaXphdGlvbiB3aGVuIGEgc29ydGVkIGFycmF5IGlzIHByb3ZpZGVkIHRvIGNvbnN0cnVjdG9yXHJcbiAqXHJcbiAqIEZvciBtb3JlIGRvY3VtZW50YXRpb24gc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9xd2VydGllL2J0cmVlLXR5cGVzY3JpcHRcclxuICpcclxuICogQXJlIHlvdSBhIEMjIGRldmVsb3Blcj8gWW91IG1pZ2h0IGxpa2UgdGhlIHNpbWlsYXIgZGF0YSBzdHJ1Y3R1cmVzIEkgbWFkZSBmb3IgQyM6XHJcbiAqIEJEaWN0aW9uYXJ5LCBCTGlzdCwgZXRjLiBTZWUgaHR0cDovL2NvcmUubG95Yy5uZXQvY29sbGVjdGlvbnMvXHJcbiAqXHJcbiAqIEBhdXRob3IgRGF2aWQgUGllcGdyYXNzXHJcbiAqL1xyXG52YXIgQlRyZWUgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XHJcbiAgICAvKipcclxuICAgICAqIEluaXRpYWxpemVzIGFuIGVtcHR5IEIrIHRyZWUuXHJcbiAgICAgKiBAcGFyYW0gY29tcGFyZSBDdXN0b20gZnVuY3Rpb24gdG8gY29tcGFyZSBwYWlycyBvZiBlbGVtZW50cyBpbiB0aGUgdHJlZS5cclxuICAgICAqICAgSWYgbm90IHNwZWNpZmllZCwgZGVmYXVsdENvbXBhcmF0b3Igd2lsbCBiZSB1c2VkIHdoaWNoIGlzIHZhbGlkIGFzIGxvbmcgYXMgSyBleHRlbmRzIERlZmF1bHRDb21wYXJhYmxlLlxyXG4gICAgICogQHBhcmFtIGVudHJpZXMgQSBzZXQgb2Yga2V5LXZhbHVlIHBhaXJzIHRvIGluaXRpYWxpemUgdGhlIHRyZWVcclxuICAgICAqIEBwYXJhbSBtYXhOb2RlU2l6ZSBCcmFuY2hpbmcgZmFjdG9yIChtYXhpbXVtIGl0ZW1zIG9yIGNoaWxkcmVuIHBlciBub2RlKVxyXG4gICAgICogICBNdXN0IGJlIGluIHJhbmdlIDQuLjI1Ni4gSWYgdW5kZWZpbmVkIG9yIDw0IHRoZW4gZGVmYXVsdCBpcyB1c2VkOyBpZiA+MjU2IHRoZW4gMjU2LlxyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiBCVHJlZShlbnRyaWVzLCBjb21wYXJlLCBtYXhOb2RlU2l6ZSkge1xyXG4gICAgICAgIHRoaXMuX3Jvb3QgPSBFbXB0eUxlYWY7XHJcbiAgICAgICAgdGhpcy5fc2l6ZSA9IDA7XHJcbiAgICAgICAgdGhpcy5fbWF4Tm9kZVNpemUgPSBtYXhOb2RlU2l6ZSA+PSA0ID8gTWF0aC5taW4obWF4Tm9kZVNpemUsIDI1NikgOiAzMjtcclxuICAgICAgICB0aGlzLl9jb21wYXJlID0gY29tcGFyZSB8fCBkZWZhdWx0Q29tcGFyYXRvcjtcclxuICAgICAgICBpZiAoZW50cmllcylcclxuICAgICAgICAgICAgdGhpcy5zZXRQYWlycyhlbnRyaWVzKTtcclxuICAgIH1cclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShCVHJlZS5wcm90b3R5cGUsIFwic2l6ZVwiLCB7XHJcbiAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuICAgICAgICAvLyBFUzYgTWFwPEssVj4gbWV0aG9kcyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG4gICAgICAgIC8qKiBHZXRzIHRoZSBudW1iZXIgb2Yga2V5LXZhbHVlIHBhaXJzIGluIHRoZSB0cmVlLiAqL1xyXG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5fc2l6ZTsgfSxcclxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcclxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcclxuICAgIH0pO1xyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEJUcmVlLnByb3RvdHlwZSwgXCJsZW5ndGhcIiwge1xyXG4gICAgICAgIC8qKiBHZXRzIHRoZSBudW1iZXIgb2Yga2V5LXZhbHVlIHBhaXJzIGluIHRoZSB0cmVlLiAqL1xyXG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5fc2l6ZTsgfSxcclxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcclxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcclxuICAgIH0pO1xyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEJUcmVlLnByb3RvdHlwZSwgXCJpc0VtcHR5XCIsIHtcclxuICAgICAgICAvKiogUmV0dXJucyB0cnVlIGlmZiB0aGUgdHJlZSBjb250YWlucyBubyBrZXktdmFsdWUgcGFpcnMuICovXHJcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLl9zaXplID09PSAwOyB9LFxyXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxyXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxyXG4gICAgfSk7XHJcbiAgICAvKiogUmVsZWFzZXMgdGhlIHRyZWUgc28gdGhhdCBpdHMgc2l6ZSBpcyAwLiAqL1xyXG4gICAgQlRyZWUucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHRoaXMuX3Jvb3QgPSBFbXB0eUxlYWY7XHJcbiAgICAgICAgdGhpcy5fc2l6ZSA9IDA7XHJcbiAgICB9O1xyXG4gICAgLyoqIFJ1bnMgYSBmdW5jdGlvbiBmb3IgZWFjaCBrZXktdmFsdWUgcGFpciwgaW4gb3JkZXIgZnJvbSBzbWFsbGVzdCB0b1xyXG4gICAgICogIGxhcmdlc3Qga2V5LiBGb3IgY29tcGF0aWJpbGl0eSB3aXRoIEVTNiBNYXAsIHRoZSBhcmd1bWVudCBvcmRlciB0b1xyXG4gICAgICogIHRoZSBjYWxsYmFjayBpcyBiYWNrd2FyZHM6IHZhbHVlIGZpcnN0LCB0aGVuIGtleS4gQ2FsbCBmb3JFYWNoUGFpclxyXG4gICAgICogIGluc3RlYWQgdG8gcmVjZWl2ZSB0aGUga2V5IGFzIHRoZSBmaXJzdCBhcmd1bWVudC5cclxuICAgICAqIEBwYXJhbSB0aGlzQXJnIElmIHByb3ZpZGVkLCB0aGlzIHBhcmFtZXRlciBpcyBhc3NpZ25lZCBhcyB0aGUgYHRoaXNgXHJcbiAgICAgKiAgICAgICAgdmFsdWUgZm9yIGVhY2ggY2FsbGJhY2suXHJcbiAgICAgKiBAcmV0dXJucyB0aGUgbnVtYmVyIG9mIHZhbHVlcyB0aGF0IHdlcmUgc2VudCB0byB0aGUgY2FsbGJhY2ssXHJcbiAgICAgKiAgICAgICAgb3IgdGhlIFIgdmFsdWUgaWYgdGhlIGNhbGxiYWNrIHJldHVybmVkIHticmVhazpSfS4gKi9cclxuICAgIEJUcmVlLnByb3RvdHlwZS5mb3JFYWNoID0gZnVuY3Rpb24gKGNhbGxiYWNrLCB0aGlzQXJnKSB7XHJcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcclxuICAgICAgICBpZiAodGhpc0FyZyAhPT0gdW5kZWZpbmVkKVxyXG4gICAgICAgICAgICBjYWxsYmFjayA9IGNhbGxiYWNrLmJpbmQodGhpc0FyZyk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9yRWFjaFBhaXIoZnVuY3Rpb24gKGssIHYpIHsgcmV0dXJuIGNhbGxiYWNrKHYsIGssIF90aGlzKTsgfSk7XHJcbiAgICB9O1xyXG4gICAgLyoqIFJ1bnMgYSBmdW5jdGlvbiBmb3IgZWFjaCBrZXktdmFsdWUgcGFpciwgaW4gb3JkZXIgZnJvbSBzbWFsbGVzdCB0b1xyXG4gICAgICogIGxhcmdlc3Qga2V5LiBUaGUgY2FsbGJhY2sgY2FuIHJldHVybiB7YnJlYWs6Un0gKHdoZXJlIFIgaXMgYW55IHZhbHVlXHJcbiAgICAgKiAgZXhjZXB0IHVuZGVmaW5lZCkgdG8gc3RvcCBpbW1lZGlhdGVseSBhbmQgcmV0dXJuIFIgZnJvbSBmb3JFYWNoUGFpci5cclxuICAgICAqIEBwYXJhbSBvbkZvdW5kIEEgZnVuY3Rpb24gdGhhdCBpcyBjYWxsZWQgZm9yIGVhY2gga2V5LXZhbHVlIHBhaXIuIFRoaXNcclxuICAgICAqICAgICAgICBmdW5jdGlvbiBjYW4gcmV0dXJuIHticmVhazpSfSB0byBzdG9wIGVhcmx5IHdpdGggcmVzdWx0IFIuXHJcbiAgICAgKiAgICAgICAgVGhlIHJlYXNvbiB0aGF0IHlvdSBtdXN0IHJldHVybiB7YnJlYWs6Un0gaW5zdGVhZCBvZiBzaW1wbHkgUlxyXG4gICAgICogICAgICAgIGl0c2VsZiBpcyBmb3IgY29uc2lzdGVuY3kgd2l0aCBlZGl0UmFuZ2UoKSwgd2hpY2ggYWxsb3dzXHJcbiAgICAgKiAgICAgICAgbXVsdGlwbGUgYWN0aW9ucywgbm90IGp1c3QgYnJlYWtpbmcuXHJcbiAgICAgKiBAcGFyYW0gaW5pdGlhbENvdW50ZXIgVGhpcyBpcyB0aGUgdmFsdWUgb2YgdGhlIHRoaXJkIGFyZ3VtZW50IG9mXHJcbiAgICAgKiAgICAgICAgYG9uRm91bmRgIHRoZSBmaXJzdCB0aW1lIGl0IGlzIGNhbGxlZC4gVGhlIGNvdW50ZXIgaW5jcmVhc2VzXHJcbiAgICAgKiAgICAgICAgYnkgb25lIGVhY2ggdGltZSBgb25Gb3VuZGAgaXMgY2FsbGVkLiBEZWZhdWx0IHZhbHVlOiAwXHJcbiAgICAgKiBAcmV0dXJucyB0aGUgbnVtYmVyIG9mIHBhaXJzIHNlbnQgdG8gdGhlIGNhbGxiYWNrIChwbHVzIGluaXRpYWxDb3VudGVyLFxyXG4gICAgICogICAgICAgIGlmIHlvdSBwcm92aWRlZCBvbmUpLiBJZiB0aGUgY2FsbGJhY2sgcmV0dXJuZWQge2JyZWFrOlJ9IHRoZW5cclxuICAgICAqICAgICAgICB0aGUgUiB2YWx1ZSBpcyByZXR1cm5lZCBpbnN0ZWFkLiAqL1xyXG4gICAgQlRyZWUucHJvdG90eXBlLmZvckVhY2hQYWlyID0gZnVuY3Rpb24gKGNhbGxiYWNrLCBpbml0aWFsQ291bnRlcikge1xyXG4gICAgICAgIHZhciBsb3cgPSB0aGlzLm1pbktleSgpLCBoaWdoID0gdGhpcy5tYXhLZXkoKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5mb3JSYW5nZShsb3csIGhpZ2gsIHRydWUsIGNhbGxiYWNrLCBpbml0aWFsQ291bnRlcik7XHJcbiAgICB9O1xyXG4gICAgLyoqXHJcbiAgICAgKiBGaW5kcyBhIHBhaXIgaW4gdGhlIHRyZWUgYW5kIHJldHVybnMgdGhlIGFzc29jaWF0ZWQgdmFsdWUuXHJcbiAgICAgKiBAcGFyYW0gZGVmYXVsdFZhbHVlIGEgdmFsdWUgdG8gcmV0dXJuIGlmIHRoZSBrZXkgd2FzIG5vdCBmb3VuZC5cclxuICAgICAqIEByZXR1cm5zIHRoZSB2YWx1ZSwgb3IgZGVmYXVsdFZhbHVlIGlmIHRoZSBrZXkgd2FzIG5vdCBmb3VuZC5cclxuICAgICAqIEBkZXNjcmlwdGlvbiBDb21wdXRhdGlvbmFsIGNvbXBsZXhpdHk6IE8obG9nIHNpemUpXHJcbiAgICAgKi9cclxuICAgIEJUcmVlLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAoa2V5LCBkZWZhdWx0VmFsdWUpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fcm9vdC5nZXQoa2V5LCBkZWZhdWx0VmFsdWUsIHRoaXMpO1xyXG4gICAgfTtcclxuICAgIC8qKlxyXG4gICAgICogQWRkcyBvciBvdmVyd3JpdGVzIGEga2V5LXZhbHVlIHBhaXIgaW4gdGhlIEIrIHRyZWUuXHJcbiAgICAgKiBAcGFyYW0ga2V5IHRoZSBrZXkgaXMgdXNlZCB0byBkZXRlcm1pbmUgdGhlIHNvcnQgb3JkZXIgb2ZcclxuICAgICAqICAgICAgICBkYXRhIGluIHRoZSB0cmVlLlxyXG4gICAgICogQHBhcmFtIHZhbHVlIGRhdGEgdG8gYXNzb2NpYXRlIHdpdGggdGhlIGtleSAob3B0aW9uYWwpXHJcbiAgICAgKiBAcGFyYW0gb3ZlcndyaXRlIFdoZXRoZXIgdG8gb3ZlcndyaXRlIGFuIGV4aXN0aW5nIGtleS12YWx1ZSBwYWlyXHJcbiAgICAgKiAgICAgICAgKGRlZmF1bHQ6IHRydWUpLiBJZiB0aGlzIGlzIGZhbHNlIGFuZCB0aGVyZSBpcyBhbiBleGlzdGluZ1xyXG4gICAgICogICAgICAgIGtleS12YWx1ZSBwYWlyIHRoZW4gdGhpcyBtZXRob2QgaGFzIG5vIGVmZmVjdC5cclxuICAgICAqIEByZXR1cm5zIHRydWUgaWYgYSBuZXcga2V5LXZhbHVlIHBhaXIgd2FzIGFkZGVkLlxyXG4gICAgICogQGRlc2NyaXB0aW9uIENvbXB1dGF0aW9uYWwgY29tcGxleGl0eTogTyhsb2cgc2l6ZSlcclxuICAgICAqIE5vdGU6IHdoZW4gb3ZlcndyaXRpbmcgYSBwcmV2aW91cyBlbnRyeSwgdGhlIGtleSBpcyB1cGRhdGVkXHJcbiAgICAgKiBhcyB3ZWxsIGFzIHRoZSB2YWx1ZS4gVGhpcyBoYXMgbm8gZWZmZWN0IHVubGVzcyB0aGUgbmV3IGtleVxyXG4gICAgICogaGFzIGRhdGEgdGhhdCBkb2VzIG5vdCBhZmZlY3QgaXRzIHNvcnQgb3JkZXIuXHJcbiAgICAgKi9cclxuICAgIEJUcmVlLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbiAoa2V5LCB2YWx1ZSwgb3ZlcndyaXRlKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX3Jvb3QuaXNTaGFyZWQpXHJcbiAgICAgICAgICAgIHRoaXMuX3Jvb3QgPSB0aGlzLl9yb290LmNsb25lKCk7XHJcbiAgICAgICAgdmFyIHJlc3VsdCA9IHRoaXMuX3Jvb3Quc2V0KGtleSwgdmFsdWUsIG92ZXJ3cml0ZSwgdGhpcyk7XHJcbiAgICAgICAgaWYgKHJlc3VsdCA9PT0gdHJ1ZSB8fCByZXN1bHQgPT09IGZhbHNlKVxyXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgIC8vIFJvb3Qgbm9kZSBoYXMgc3BsaXQsIHNvIGNyZWF0ZSBhIG5ldyByb290IG5vZGUuXHJcbiAgICAgICAgdGhpcy5fcm9vdCA9IG5ldyBCTm9kZUludGVybmFsKFt0aGlzLl9yb290LCByZXN1bHRdKTtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH07XHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUga2V5IGV4aXN0cyBpbiB0aGUgQisgdHJlZSwgZmFsc2UgaWYgbm90LlxyXG4gICAgICogVXNlIGdldCgpIGZvciBiZXN0IHBlcmZvcm1hbmNlOyB1c2UgaGFzKCkgaWYgeW91IG5lZWQgdG9cclxuICAgICAqIGRpc3Rpbmd1aXNoIGJldHdlZW4gXCJ1bmRlZmluZWQgdmFsdWVcIiBhbmQgXCJrZXkgbm90IHByZXNlbnRcIi5cclxuICAgICAqIEBwYXJhbSBrZXkgS2V5IHRvIGRldGVjdFxyXG4gICAgICogQGRlc2NyaXB0aW9uIENvbXB1dGF0aW9uYWwgY29tcGxleGl0eTogTyhsb2cgc2l6ZSlcclxuICAgICAqL1xyXG4gICAgQlRyZWUucHJvdG90eXBlLmhhcyA9IGZ1bmN0aW9uIChrZXkpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5mb3JSYW5nZShrZXksIGtleSwgdHJ1ZSwgdW5kZWZpbmVkKSAhPT0gMDtcclxuICAgIH07XHJcbiAgICAvKipcclxuICAgICAqIFJlbW92ZXMgYSBzaW5nbGUga2V5LXZhbHVlIHBhaXIgZnJvbSB0aGUgQisgdHJlZS5cclxuICAgICAqIEBwYXJhbSBrZXkgS2V5IHRvIGZpbmRcclxuICAgICAqIEByZXR1cm5zIHRydWUgaWYgYSBwYWlyIHdhcyBmb3VuZCBhbmQgcmVtb3ZlZCwgZmFsc2Ugb3RoZXJ3aXNlLlxyXG4gICAgICogQGRlc2NyaXB0aW9uIENvbXB1dGF0aW9uYWwgY29tcGxleGl0eTogTyhsb2cgc2l6ZSlcclxuICAgICAqL1xyXG4gICAgQlRyZWUucHJvdG90eXBlLmRlbGV0ZSA9IGZ1bmN0aW9uIChrZXkpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5lZGl0UmFuZ2Uoa2V5LCBrZXksIHRydWUsIERlbGV0ZVJhbmdlKSAhPT0gMDtcclxuICAgIH07XHJcbiAgICBCVHJlZS5wcm90b3R5cGUud2l0aCA9IGZ1bmN0aW9uIChrZXksIHZhbHVlLCBvdmVyd3JpdGUpIHtcclxuICAgICAgICB2YXIgbnUgPSB0aGlzLmNsb25lKCk7XHJcbiAgICAgICAgcmV0dXJuIG51LnNldChrZXksIHZhbHVlLCBvdmVyd3JpdGUpIHx8IG92ZXJ3cml0ZSA/IG51IDogdGhpcztcclxuICAgIH07XHJcbiAgICAvKiogUmV0dXJucyBhIGNvcHkgb2YgdGhlIHRyZWUgd2l0aCB0aGUgc3BlY2lmaWVkIGtleS12YWx1ZSBwYWlycyBzZXQuICovXHJcbiAgICBCVHJlZS5wcm90b3R5cGUud2l0aFBhaXJzID0gZnVuY3Rpb24gKHBhaXJzLCBvdmVyd3JpdGUpIHtcclxuICAgICAgICB2YXIgbnUgPSB0aGlzLmNsb25lKCk7XHJcbiAgICAgICAgcmV0dXJuIG51LnNldFBhaXJzKHBhaXJzLCBvdmVyd3JpdGUpICE9PSAwIHx8IG92ZXJ3cml0ZSA/IG51IDogdGhpcztcclxuICAgIH07XHJcbiAgICAvKiogUmV0dXJucyBhIGNvcHkgb2YgdGhlIHRyZWUgd2l0aCB0aGUgc3BlY2lmaWVkIGtleXMgcHJlc2VudC5cclxuICAgICAqICBAcGFyYW0ga2V5cyBUaGUga2V5cyB0byBhZGQuIElmIGEga2V5IGlzIGFscmVhZHkgcHJlc2VudCBpbiB0aGUgdHJlZSxcclxuICAgICAqICAgICAgICAgbmVpdGhlciB0aGUgZXhpc3Rpbmcga2V5IG5vciB0aGUgZXhpc3RpbmcgdmFsdWUgaXMgbW9kaWZpZWQuXHJcbiAgICAgKiAgQHBhcmFtIHJldHVyblRoaXNJZlVuY2hhbmdlZCBpZiB0cnVlLCByZXR1cm5zIHRoaXMgaWYgYWxsIGtleXMgYWxyZWFkeVxyXG4gICAgICogIGV4aXN0ZWQuIFBlcmZvcm1hbmNlIG5vdGU6IGR1ZSB0byB0aGUgYXJjaGl0ZWN0dXJlIG9mIHRoaXMgY2xhc3MsIGFsbFxyXG4gICAgICogIG5vZGUocykgbGVhZGluZyB0byBleGlzdGluZyBrZXlzIGFyZSBjbG9uZWQgZXZlbiBpZiB0aGUgY29sbGVjdGlvbiBpc1xyXG4gICAgICogIHVsdGltYXRlbHkgdW5jaGFuZ2VkLlxyXG4gICAgKi9cclxuICAgIEJUcmVlLnByb3RvdHlwZS53aXRoS2V5cyA9IGZ1bmN0aW9uIChrZXlzLCByZXR1cm5UaGlzSWZVbmNoYW5nZWQpIHtcclxuICAgICAgICB2YXIgbnUgPSB0aGlzLmNsb25lKCksIGNoYW5nZWQgPSBmYWxzZTtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspXHJcbiAgICAgICAgICAgIGNoYW5nZWQgPSBudS5zZXQoa2V5c1tpXSwgdW5kZWZpbmVkLCBmYWxzZSkgfHwgY2hhbmdlZDtcclxuICAgICAgICByZXR1cm4gcmV0dXJuVGhpc0lmVW5jaGFuZ2VkICYmICFjaGFuZ2VkID8gdGhpcyA6IG51O1xyXG4gICAgfTtcclxuICAgIC8qKiBSZXR1cm5zIGEgY29weSBvZiB0aGUgdHJlZSB3aXRoIHRoZSBzcGVjaWZpZWQga2V5IHJlbW92ZWQuXHJcbiAgICAgKiBAcGFyYW0gcmV0dXJuVGhpc0lmVW5jaGFuZ2VkIGlmIHRydWUsIHJldHVybnMgdGhpcyBpZiB0aGUga2V5IGRpZG4ndCBleGlzdC5cclxuICAgICAqICBQZXJmb3JtYW5jZSBub3RlOiBkdWUgdG8gdGhlIGFyY2hpdGVjdHVyZSBvZiB0aGlzIGNsYXNzLCBub2RlKHMpIGxlYWRpbmdcclxuICAgICAqICB0byB3aGVyZSB0aGUga2V5IHdvdWxkIGhhdmUgYmVlbiBzdG9yZWQgYXJlIGNsb25lZCBldmVuIHdoZW4gdGhlIGtleVxyXG4gICAgICogIHR1cm5zIG91dCBub3QgdG8gZXhpc3QgYW5kIHRoZSBjb2xsZWN0aW9uIGlzIHVuY2hhbmdlZC5cclxuICAgICAqL1xyXG4gICAgQlRyZWUucHJvdG90eXBlLndpdGhvdXQgPSBmdW5jdGlvbiAoa2V5LCByZXR1cm5UaGlzSWZVbmNoYW5nZWQpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy53aXRob3V0UmFuZ2Uoa2V5LCBrZXksIHRydWUsIHJldHVyblRoaXNJZlVuY2hhbmdlZCk7XHJcbiAgICB9O1xyXG4gICAgLyoqIFJldHVybnMgYSBjb3B5IG9mIHRoZSB0cmVlIHdpdGggdGhlIHNwZWNpZmllZCBrZXlzIHJlbW92ZWQuXHJcbiAgICAgKiBAcGFyYW0gcmV0dXJuVGhpc0lmVW5jaGFuZ2VkIGlmIHRydWUsIHJldHVybnMgdGhpcyBpZiBub25lIG9mIHRoZSBrZXlzXHJcbiAgICAgKiAgZXhpc3RlZC4gUGVyZm9ybWFuY2Ugbm90ZTogZHVlIHRvIHRoZSBhcmNoaXRlY3R1cmUgb2YgdGhpcyBjbGFzcyxcclxuICAgICAqICBub2RlKHMpIGxlYWRpbmcgdG8gd2hlcmUgdGhlIGtleSB3b3VsZCBoYXZlIGJlZW4gc3RvcmVkIGFyZSBjbG9uZWRcclxuICAgICAqICBldmVuIHdoZW4gdGhlIGtleSB0dXJucyBvdXQgbm90IHRvIGV4aXN0LlxyXG4gICAgICovXHJcbiAgICBCVHJlZS5wcm90b3R5cGUud2l0aG91dEtleXMgPSBmdW5jdGlvbiAoa2V5cywgcmV0dXJuVGhpc0lmVW5jaGFuZ2VkKSB7XHJcbiAgICAgICAgdmFyIG51ID0gdGhpcy5jbG9uZSgpO1xyXG4gICAgICAgIHJldHVybiBudS5kZWxldGVLZXlzKGtleXMpIHx8ICFyZXR1cm5UaGlzSWZVbmNoYW5nZWQgPyBudSA6IHRoaXM7XHJcbiAgICB9O1xyXG4gICAgLyoqIFJldHVybnMgYSBjb3B5IG9mIHRoZSB0cmVlIHdpdGggdGhlIHNwZWNpZmllZCByYW5nZSBvZiBrZXlzIHJlbW92ZWQuICovXHJcbiAgICBCVHJlZS5wcm90b3R5cGUud2l0aG91dFJhbmdlID0gZnVuY3Rpb24gKGxvdywgaGlnaCwgaW5jbHVkZUhpZ2gsIHJldHVyblRoaXNJZlVuY2hhbmdlZCkge1xyXG4gICAgICAgIHZhciBudSA9IHRoaXMuY2xvbmUoKTtcclxuICAgICAgICBpZiAobnUuZGVsZXRlUmFuZ2UobG93LCBoaWdoLCBpbmNsdWRlSGlnaCkgPT09IDAgJiYgcmV0dXJuVGhpc0lmVW5jaGFuZ2VkKVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcztcclxuICAgICAgICByZXR1cm4gbnU7XHJcbiAgICB9O1xyXG4gICAgLyoqIFJldHVybnMgYSBjb3B5IG9mIHRoZSB0cmVlIHdpdGggcGFpcnMgcmVtb3ZlZCB3aGVuZXZlciB0aGUgY2FsbGJhY2tcclxuICAgICAqICBmdW5jdGlvbiByZXR1cm5zIGZhbHNlLiBgd2hlcmUoKWAgaXMgYSBzeW5vbnltIGZvciB0aGlzIG1ldGhvZC4gKi9cclxuICAgIEJUcmVlLnByb3RvdHlwZS5maWx0ZXIgPSBmdW5jdGlvbiAoY2FsbGJhY2ssIHJldHVyblRoaXNJZlVuY2hhbmdlZCkge1xyXG4gICAgICAgIHZhciBudSA9IHRoaXMuZ3JlZWR5Q2xvbmUoKTtcclxuICAgICAgICB2YXIgZGVsO1xyXG4gICAgICAgIG51LmVkaXRBbGwoZnVuY3Rpb24gKGssIHYsIGkpIHtcclxuICAgICAgICAgICAgaWYgKCFjYWxsYmFjayhrLCB2LCBpKSlcclxuICAgICAgICAgICAgICAgIHJldHVybiBkZWwgPSBEZWxldGU7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKCFkZWwgJiYgcmV0dXJuVGhpc0lmVW5jaGFuZ2VkKVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcztcclxuICAgICAgICByZXR1cm4gbnU7XHJcbiAgICB9O1xyXG4gICAgLyoqIFJldHVybnMgYSBjb3B5IG9mIHRoZSB0cmVlIHdpdGggYWxsIHZhbHVlcyBhbHRlcmVkIGJ5IGEgY2FsbGJhY2sgZnVuY3Rpb24uICovXHJcbiAgICBCVHJlZS5wcm90b3R5cGUubWFwVmFsdWVzID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7XHJcbiAgICAgICAgdmFyIHRtcCA9IHt9O1xyXG4gICAgICAgIHZhciBudSA9IHRoaXMuZ3JlZWR5Q2xvbmUoKTtcclxuICAgICAgICBudS5lZGl0QWxsKGZ1bmN0aW9uIChrLCB2LCBpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0bXAudmFsdWUgPSBjYWxsYmFjayh2LCBrLCBpKSwgdG1wO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBudTtcclxuICAgIH07XHJcbiAgICBCVHJlZS5wcm90b3R5cGUucmVkdWNlID0gZnVuY3Rpb24gKGNhbGxiYWNrLCBpbml0aWFsVmFsdWUpIHtcclxuICAgICAgICB2YXIgaSA9IDAsIHAgPSBpbml0aWFsVmFsdWU7XHJcbiAgICAgICAgdmFyIGl0ID0gdGhpcy5lbnRyaWVzKHRoaXMubWluS2V5KCksIFJldXNlZEFycmF5KSwgbmV4dDtcclxuICAgICAgICB3aGlsZSAoIShuZXh0ID0gaXQubmV4dCgpKS5kb25lKVxyXG4gICAgICAgICAgICBwID0gY2FsbGJhY2socCwgbmV4dC52YWx1ZSwgaSsrLCB0aGlzKTtcclxuICAgICAgICByZXR1cm4gcDtcclxuICAgIH07XHJcbiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG4gICAgLy8gSXRlcmF0b3IgbWV0aG9kcyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuICAgIC8qKiBSZXR1cm5zIGFuIGl0ZXJhdG9yIHRoYXQgcHJvdmlkZXMgaXRlbXMgaW4gb3JkZXIgKGFzY2VuZGluZyBvcmRlciBpZlxyXG4gICAgICogIHRoZSBjb2xsZWN0aW9uJ3MgY29tcGFyYXRvciB1c2VzIGFzY2VuZGluZyBvcmRlciwgYXMgaXMgdGhlIGRlZmF1bHQuKVxyXG4gICAgICogIEBwYXJhbSBsb3dlc3RLZXkgRmlyc3Qga2V5IHRvIGJlIGl0ZXJhdGVkLCBvciB1bmRlZmluZWQgdG8gc3RhcnQgYXRcclxuICAgICAqICAgICAgICAgbWluS2V5KCkuIElmIHRoZSBzcGVjaWZpZWQga2V5IGRvZXNuJ3QgZXhpc3QgdGhlbiBpdGVyYXRpb25cclxuICAgICAqICAgICAgICAgc3RhcnRzIGF0IHRoZSBuZXh0IGhpZ2hlciBrZXkgKGFjY29yZGluZyB0byB0aGUgY29tcGFyYXRvcikuXHJcbiAgICAgKiAgQHBhcmFtIHJldXNlZEFycmF5IE9wdGlvbmFsIGFycmF5IHVzZWQgcmVwZWF0ZWRseSB0byBzdG9yZSBrZXktdmFsdWVcclxuICAgICAqICAgICAgICAgcGFpcnMsIHRvIGF2b2lkIGNyZWF0aW5nIGEgbmV3IGFycmF5IG9uIGV2ZXJ5IGl0ZXJhdGlvbi5cclxuICAgICAqL1xyXG4gICAgQlRyZWUucHJvdG90eXBlLmVudHJpZXMgPSBmdW5jdGlvbiAobG93ZXN0S2V5LCByZXVzZWRBcnJheSkge1xyXG4gICAgICAgIHZhciBpbmZvID0gdGhpcy5maW5kUGF0aChsb3dlc3RLZXkpO1xyXG4gICAgICAgIGlmIChpbmZvID09PSB1bmRlZmluZWQpXHJcbiAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcigpO1xyXG4gICAgICAgIHZhciBub2RlcXVldWUgPSBpbmZvLm5vZGVxdWV1ZSwgbm9kZWluZGV4ID0gaW5mby5ub2RlaW5kZXgsIGxlYWYgPSBpbmZvLmxlYWY7XHJcbiAgICAgICAgdmFyIHN0YXRlID0gcmV1c2VkQXJyYXkgIT09IHVuZGVmaW5lZCA/IDEgOiAwO1xyXG4gICAgICAgIHZhciBpID0gKGxvd2VzdEtleSA9PT0gdW5kZWZpbmVkID8gLTEgOiBsZWFmLmluZGV4T2YobG93ZXN0S2V5LCAwLCB0aGlzLl9jb21wYXJlKSAtIDEpO1xyXG4gICAgICAgIHJldHVybiBpdGVyYXRvcihmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGp1bXA6IGZvciAoOzspIHtcclxuICAgICAgICAgICAgICAgIHN3aXRjaCAoc3RhdGUpIHtcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgrK2kgPCBsZWFmLmtleXMubGVuZ3RoKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgZG9uZTogZmFsc2UsIHZhbHVlOiBbbGVhZi5rZXlzW2ldLCBsZWFmLnZhbHVlc1tpXV0gfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSAyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgrK2kgPCBsZWFmLmtleXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXVzZWRBcnJheVswXSA9IGxlYWYua2V5c1tpXSwgcmV1c2VkQXJyYXlbMV0gPSBsZWFmLnZhbHVlc1tpXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGRvbmU6IGZhbHNlLCB2YWx1ZTogcmV1c2VkQXJyYXkgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IDI7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBBZHZhbmNlIHRvIHRoZSBuZXh0IGxlYWYgbm9kZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBsZXZlbCA9IC0xOzspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgrK2xldmVsID49IG5vZGVxdWV1ZS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IDM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUganVtcDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgrK25vZGVpbmRleFtsZXZlbF0gPCBub2RlcXVldWVbbGV2ZWxdLmxlbmd0aClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgbGV2ZWwgPiAwOyBsZXZlbC0tKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlcXVldWVbbGV2ZWwgLSAxXSA9IG5vZGVxdWV1ZVtsZXZlbF1bbm9kZWluZGV4W2xldmVsXV0uY2hpbGRyZW47XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlaW5kZXhbbGV2ZWwgLSAxXSA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgbGVhZiA9IG5vZGVxdWV1ZVswXVtub2RlaW5kZXhbMF1dO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpID0gLTE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gcmV1c2VkQXJyYXkgIT09IHVuZGVmaW5lZCA/IDEgOiAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGRvbmU6IHRydWUsIHZhbHVlOiB1bmRlZmluZWQgfTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfTtcclxuICAgIC8qKiBSZXR1cm5zIGFuIGl0ZXJhdG9yIHRoYXQgcHJvdmlkZXMgaXRlbXMgaW4gcmV2ZXJzZWQgb3JkZXIuXHJcbiAgICAgKiAgQHBhcmFtIGhpZ2hlc3RLZXkgS2V5IGF0IHdoaWNoIHRvIHN0YXJ0IGl0ZXJhdGluZywgb3IgdW5kZWZpbmVkIHRvXHJcbiAgICAgKiAgICAgICAgIHN0YXJ0IGF0IG1heEtleSgpLiBJZiB0aGUgc3BlY2lmaWVkIGtleSBkb2Vzbid0IGV4aXN0IHRoZW4gaXRlcmF0aW9uXHJcbiAgICAgKiAgICAgICAgIHN0YXJ0cyBhdCB0aGUgbmV4dCBsb3dlciBrZXkgKGFjY29yZGluZyB0byB0aGUgY29tcGFyYXRvcikuXHJcbiAgICAgKiAgQHBhcmFtIHJldXNlZEFycmF5IE9wdGlvbmFsIGFycmF5IHVzZWQgcmVwZWF0ZWRseSB0byBzdG9yZSBrZXktdmFsdWVcclxuICAgICAqICAgICAgICAgcGFpcnMsIHRvIGF2b2lkIGNyZWF0aW5nIGEgbmV3IGFycmF5IG9uIGV2ZXJ5IGl0ZXJhdGlvbi5cclxuICAgICAqICBAcGFyYW0gc2tpcEhpZ2hlc3QgSWZmIHRoaXMgZmxhZyBpcyB0cnVlIGFuZCB0aGUgaGlnaGVzdEtleSBleGlzdHMgaW4gdGhlXHJcbiAgICAgKiAgICAgICAgIGNvbGxlY3Rpb24sIHRoZSBwYWlyIG1hdGNoaW5nIGhpZ2hlc3RLZXkgaXMgc2tpcHBlZCwgbm90IGl0ZXJhdGVkLlxyXG4gICAgICovXHJcbiAgICBCVHJlZS5wcm90b3R5cGUuZW50cmllc1JldmVyc2VkID0gZnVuY3Rpb24gKGhpZ2hlc3RLZXksIHJldXNlZEFycmF5LCBza2lwSGlnaGVzdCkge1xyXG4gICAgICAgIGlmIChoaWdoZXN0S2V5ID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgaGlnaGVzdEtleSA9IHRoaXMubWF4S2V5KCk7XHJcbiAgICAgICAgICAgIHNraXBIaWdoZXN0ID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICBpZiAoaGlnaGVzdEtleSA9PT0gdW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yKCk7IC8vIGNvbGxlY3Rpb24gaXMgZW1wdHlcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIF9hID0gdGhpcy5maW5kUGF0aChoaWdoZXN0S2V5KSB8fCB0aGlzLmZpbmRQYXRoKHRoaXMubWF4S2V5KCkpLCBub2RlcXVldWUgPSBfYS5ub2RlcXVldWUsIG5vZGVpbmRleCA9IF9hLm5vZGVpbmRleCwgbGVhZiA9IF9hLmxlYWY7XHJcbiAgICAgICAgY2hlY2soIW5vZGVxdWV1ZVswXSB8fCBsZWFmID09PSBub2RlcXVldWVbMF1bbm9kZWluZGV4WzBdXSwgXCJ3YXQhXCIpO1xyXG4gICAgICAgIHZhciBpID0gbGVhZi5pbmRleE9mKGhpZ2hlc3RLZXksIDAsIHRoaXMuX2NvbXBhcmUpO1xyXG4gICAgICAgIGlmICghc2tpcEhpZ2hlc3QgJiYgaSA8IGxlYWYua2V5cy5sZW5ndGggJiYgdGhpcy5fY29tcGFyZShsZWFmLmtleXNbaV0sIGhpZ2hlc3RLZXkpIDw9IDApXHJcbiAgICAgICAgICAgIGkrKztcclxuICAgICAgICB2YXIgc3RhdGUgPSByZXVzZWRBcnJheSAhPT0gdW5kZWZpbmVkID8gMSA6IDA7XHJcbiAgICAgICAgcmV0dXJuIGl0ZXJhdG9yKGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAganVtcDogZm9yICg7Oykge1xyXG4gICAgICAgICAgICAgICAgc3dpdGNoIChzdGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKC0taSA+PSAwKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgZG9uZTogZmFsc2UsIHZhbHVlOiBbbGVhZi5rZXlzW2ldLCBsZWFmLnZhbHVlc1tpXV0gfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSAyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgtLWkgPj0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV1c2VkQXJyYXlbMF0gPSBsZWFmLmtleXNbaV0sIHJldXNlZEFycmF5WzFdID0gbGVhZi52YWx1ZXNbaV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBkb25lOiBmYWxzZSwgdmFsdWU6IHJldXNlZEFycmF5IH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSAyO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQWR2YW5jZSB0byB0aGUgbmV4dCBsZWFmIG5vZGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbGV2ZWwgPSAtMTs7KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKytsZXZlbCA+PSBub2RlcXVldWUubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSAzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlIGp1bXA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoLS1ub2RlaW5kZXhbbGV2ZWxdID49IDApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IGxldmVsID4gMDsgbGV2ZWwtLSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZXF1ZXVlW2xldmVsIC0gMV0gPSBub2RlcXVldWVbbGV2ZWxdW25vZGVpbmRleFtsZXZlbF1dLmNoaWxkcmVuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZWluZGV4W2xldmVsIC0gMV0gPSBub2RlcXVldWVbbGV2ZWwgLSAxXS5sZW5ndGggLSAxO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxlYWYgPSBub2RlcXVldWVbMF1bbm9kZWluZGV4WzBdXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGxlYWYua2V5cy5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gcmV1c2VkQXJyYXkgIT09IHVuZGVmaW5lZCA/IDEgOiAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGRvbmU6IHRydWUsIHZhbHVlOiB1bmRlZmluZWQgfTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfTtcclxuICAgIC8qIFVzZWQgYnkgZW50cmllcygpIGFuZCBlbnRyaWVzUmV2ZXJzZWQoKSB0byBwcmVwYXJlIHRvIHN0YXJ0IGl0ZXJhdGluZy5cclxuICAgICAqIEl0IGRldmVsb3BzIGEgXCJub2RlIHF1ZXVlXCIgZm9yIGVhY2ggbm9uLWxlYWYgbGV2ZWwgb2YgdGhlIHRyZWUuXHJcbiAgICAgKiBMZXZlbHMgYXJlIG51bWJlcmVkIFwiYm90dG9tLXVwXCIgc28gdGhhdCBsZXZlbCAwIGlzIGEgbGlzdCBvZiBsZWFmXHJcbiAgICAgKiBub2RlcyBmcm9tIGEgbG93LWxldmVsIG5vbi1sZWFmIG5vZGUuIFRoZSBxdWV1ZSBhdCBhIGdpdmVuIGxldmVsIExcclxuICAgICAqIGNvbnNpc3RzIG9mIG5vZGVxdWV1ZVtMXSB3aGljaCBpcyB0aGUgY2hpbGRyZW4gb2YgYSBCTm9kZUludGVybmFsLFxyXG4gICAgICogYW5kIG5vZGVpbmRleFtMXSwgdGhlIGN1cnJlbnQgaW5kZXggd2l0aGluIHRoYXQgY2hpbGQgbGlzdCwgc3VjaFxyXG4gICAgICogc3VjaCB0aGF0IG5vZGVxdWV1ZVtMLTFdID09PSBub2RlcXVldWVbTF1bbm9kZWluZGV4W0xdXS5jaGlsZHJlbi5cclxuICAgICAqIChIb3dldmVyIGluc2lkZSB0aGlzIGZ1bmN0aW9uIHRoZSBvcmRlciBpcyByZXZlcnNlZC4pXHJcbiAgICAgKi9cclxuICAgIEJUcmVlLnByb3RvdHlwZS5maW5kUGF0aCA9IGZ1bmN0aW9uIChrZXkpIHtcclxuICAgICAgICB2YXIgbmV4dG5vZGUgPSB0aGlzLl9yb290O1xyXG4gICAgICAgIHZhciBub2RlcXVldWUsIG5vZGVpbmRleDtcclxuICAgICAgICBpZiAobmV4dG5vZGUuaXNMZWFmKSB7XHJcbiAgICAgICAgICAgIG5vZGVxdWV1ZSA9IEVtcHR5QXJyYXksIG5vZGVpbmRleCA9IEVtcHR5QXJyYXk7IC8vIGF2b2lkIGFsbG9jYXRpb25zXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBub2RlcXVldWUgPSBbXSwgbm9kZWluZGV4ID0gW107XHJcbiAgICAgICAgICAgIGZvciAodmFyIGQgPSAwOyAhbmV4dG5vZGUuaXNMZWFmOyBkKyspIHtcclxuICAgICAgICAgICAgICAgIG5vZGVxdWV1ZVtkXSA9IG5leHRub2RlLmNoaWxkcmVuO1xyXG4gICAgICAgICAgICAgICAgbm9kZWluZGV4W2RdID0ga2V5ID09PSB1bmRlZmluZWQgPyAwIDogbmV4dG5vZGUuaW5kZXhPZihrZXksIDAsIHRoaXMuX2NvbXBhcmUpO1xyXG4gICAgICAgICAgICAgICAgaWYgKG5vZGVpbmRleFtkXSA+PSBub2RlcXVldWVbZF0ubGVuZ3RoKVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjsgLy8gZmlyc3Qga2V5ID4gbWF4S2V5KClcclxuICAgICAgICAgICAgICAgIG5leHRub2RlID0gbm9kZXF1ZXVlW2RdW25vZGVpbmRleFtkXV07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbm9kZXF1ZXVlLnJldmVyc2UoKTtcclxuICAgICAgICAgICAgbm9kZWluZGV4LnJldmVyc2UoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHsgbm9kZXF1ZXVlOiBub2RlcXVldWUsIG5vZGVpbmRleDogbm9kZWluZGV4LCBsZWFmOiBuZXh0bm9kZSB9O1xyXG4gICAgfTtcclxuICAgIC8qKlxyXG4gICAgICogQ29tcHV0ZXMgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gYHRoaXNgIGFuZCBgb3RoZXJgLlxyXG4gICAgICogRm9yIGVmZmljaWVuY3ksIHRoZSBkaWZmIGlzIHJldHVybmVkIHZpYSBpbnZvY2F0aW9ucyBvZiBzdXBwbGllZCBoYW5kbGVycy5cclxuICAgICAqIFRoZSBjb21wdXRhdGlvbiBpcyBvcHRpbWl6ZWQgZm9yIHRoZSBjYXNlIGluIHdoaWNoIHRoZSB0d28gdHJlZXMgaGF2ZSBsYXJnZSBhbW91bnRzXHJcbiAgICAgKiBvZiBzaGFyZWQgZGF0YSAob2J0YWluZWQgYnkgY2FsbGluZyB0aGUgYGNsb25lYCBvciBgd2l0aGAgQVBJcykgYW5kIHdpbGwgYXZvaWRcclxuICAgICAqIGFueSBpdGVyYXRpb24gb2Ygc2hhcmVkIHN0YXRlLlxyXG4gICAgICogVGhlIGhhbmRsZXJzIGNhbiBjYXVzZSBjb21wdXRhdGlvbiB0byBlYXJseSBleGl0IGJ5IHJldHVybmluZyB7YnJlYWs6IFJ9LlxyXG4gICAgICogTmVpdGhlciBvZiB0aGUgY29sbGVjdGlvbnMgc2hvdWxkIGJlIGNoYW5nZWQgZHVyaW5nIHRoZSBjb21wYXJpc29uIHByb2Nlc3MgKGluIHlvdXIgY2FsbGJhY2tzKSwgYXMgdGhpcyBtZXRob2QgYXNzdW1lcyB0aGV5IHdpbGwgbm90IGJlIG11dGF0ZWQuXHJcbiAgICAgKiBAcGFyYW0gb3RoZXIgVGhlIHRyZWUgdG8gY29tcHV0ZSBhIGRpZmYgYWdhaW5zdC5cclxuICAgICAqIEBwYXJhbSBvbmx5VGhpcyBDYWxsYmFjayBpbnZva2VkIGZvciBhbGwga2V5cyBvbmx5IHByZXNlbnQgaW4gYHRoaXNgLlxyXG4gICAgICogQHBhcmFtIG9ubHlPdGhlciBDYWxsYmFjayBpbnZva2VkIGZvciBhbGwga2V5cyBvbmx5IHByZXNlbnQgaW4gYG90aGVyYC5cclxuICAgICAqIEBwYXJhbSBkaWZmZXJlbnQgQ2FsbGJhY2sgaW52b2tlZCBmb3IgYWxsIGtleXMgd2l0aCBkaWZmZXJpbmcgdmFsdWVzLlxyXG4gICAgICovXHJcbiAgICBCVHJlZS5wcm90b3R5cGUuZGlmZkFnYWluc3QgPSBmdW5jdGlvbiAob3RoZXIsIG9ubHlUaGlzLCBvbmx5T3RoZXIsIGRpZmZlcmVudCkge1xyXG4gICAgICAgIGlmIChvdGhlci5fY29tcGFyZSAhPT0gdGhpcy5fY29tcGFyZSkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUcmVlIGNvbXBhcmF0b3JzIGFyZSBub3QgdGhlIHNhbWUuXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5pc0VtcHR5IHx8IG90aGVyLmlzRW1wdHkpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuaXNFbXB0eSAmJiBvdGhlci5pc0VtcHR5KVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgLy8gSWYgb25lIHRyZWUgaXMgZW1wdHksIGV2ZXJ5dGhpbmcgd2lsbCBiZSBhbiBvbmx5VGhpcy9vbmx5T3RoZXIuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLmlzRW1wdHkpXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gb25seU90aGVyID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBCVHJlZS5zdGVwVG9FbmQoQlRyZWUubWFrZURpZmZDdXJzb3Iob3RoZXIpLCBvbmx5T3RoZXIpO1xyXG4gICAgICAgICAgICByZXR1cm4gb25seVRoaXMgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IEJUcmVlLnN0ZXBUb0VuZChCVHJlZS5tYWtlRGlmZkN1cnNvcih0aGlzKSwgb25seVRoaXMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBDdXJzb3ItYmFzZWQgZGlmZiBhbGdvcml0aG0gaXMgYXMgZm9sbG93czpcclxuICAgICAgICAvLyAtIFVudGlsIG5laXRoZXIgY3Vyc29yIGhhcyBuYXZpZ2F0ZWQgdG8gdGhlIGVuZCBvZiB0aGUgdHJlZSwgZG8gdGhlIGZvbGxvd2luZzpcclxuICAgICAgICAvLyAgLSBJZiB0aGUgYHRoaXNgIGN1cnNvciBpcyBcImJlaGluZFwiIHRoZSBgb3RoZXJgIGN1cnNvciAoc3RyaWN0bHkgPCwgdmlhIGNvbXBhcmUpLCBhZHZhbmNlIGl0LlxyXG4gICAgICAgIC8vICAtIE90aGVyd2lzZSwgYWR2YW5jZSB0aGUgYG90aGVyYCBjdXJzb3IuXHJcbiAgICAgICAgLy8gIC0gQW55IHRpbWUgYSBjdXJzb3IgaXMgc3RlcHBlZCwgcGVyZm9ybSB0aGUgZm9sbG93aW5nOlxyXG4gICAgICAgIC8vICAgIC0gSWYgZWl0aGVyIGN1cnNvciBwb2ludHMgdG8gYSBrZXkvdmFsdWUgcGFpcjpcclxuICAgICAgICAvLyAgICAgIC0gSWYgdGhpc0N1cnNvciA9PT0gb3RoZXJDdXJzb3IgYW5kIHRoZSB2YWx1ZXMgZGlmZmVyLCBpdCBpcyBhIERpZmZlcmVudC5cclxuICAgICAgICAvLyAgICAgIC0gSWYgdGhpc0N1cnNvciA+IG90aGVyQ3Vyc29yIGFuZCBvdGhlckN1cnNvciBpcyBhdCBhIGtleS92YWx1ZSBwYWlyLCBpdCBpcyBhbiBPbmx5T3RoZXIuXHJcbiAgICAgICAgLy8gICAgICAtIElmIHRoaXNDdXJzb3IgPCBvdGhlckN1cnNvciBhbmQgdGhpc0N1cnNvciBpcyBhdCBhIGtleS92YWx1ZSBwYWlyLCBpdCBpcyBhbiBPbmx5VGhpcyBhcyBsb25nIGFzIHRoZSBtb3N0IHJlY2VudCBcclxuICAgICAgICAvLyAgICAgICAgY3Vyc29yIHN0ZXAgd2FzICpub3QqIG90aGVyQ3Vyc29yIGFkdmFuY2luZyBmcm9tIGEgdGllLiBUaGUgZXh0cmEgY29uZGl0aW9uIGF2b2lkcyBlcnJvbmVvdXMgT25seU90aGVyIGNhbGxzIFxyXG4gICAgICAgIC8vICAgICAgICB0aGF0IHdvdWxkIG9jY3VyIGR1ZSB0byBvdGhlckN1cnNvciBiZWluZyB0aGUgXCJsZWFkZXJcIi5cclxuICAgICAgICAvLyAgICAtIE90aGVyd2lzZSwgaWYgYm90aCBjdXJzb3JzIHBvaW50IHRvIG5vZGVzLCBjb21wYXJlIHRoZW0uIElmIHRoZXkgYXJlIGVxdWFsIGJ5IHJlZmVyZW5jZSAoc2hhcmVkKSwgc2tpcFxyXG4gICAgICAgIC8vICAgICAgYm90aCBjdXJzb3JzIHRvIHRoZSBuZXh0IG5vZGUgaW4gdGhlIHdhbGsuXHJcbiAgICAgICAgLy8gLSBPbmNlIG9uZSBjdXJzb3IgaGFzIGZpbmlzaGVkIHN0ZXBwaW5nLCBhbnkgcmVtYWluaW5nIHN0ZXBzIChpZiBhbnkpIGFyZSB0YWtlbiBhbmQga2V5L3ZhbHVlIHBhaXJzIGFyZSBsb2dnZWRcclxuICAgICAgICAvLyAgIGFzIE9ubHlPdGhlciAoaWYgb3RoZXJDdXJzb3IgaXMgc3RlcHBpbmcpIG9yIE9ubHlUaGlzIChpZiB0aGlzQ3Vyc29yIGlzIHN0ZXBwaW5nKS5cclxuICAgICAgICAvLyBUaGlzIGFsZ29yaXRobSBnaXZlcyB0aGUgY3JpdGljYWwgZ3VhcmFudGVlIHRoYXQgYWxsIGxvY2F0aW9ucyAoYm90aCBub2RlcyBhbmQga2V5L3ZhbHVlIHBhaXJzKSBpbiBib3RoIHRyZWVzIHRoYXQgXHJcbiAgICAgICAgLy8gYXJlIGlkZW50aWNhbCBieSB2YWx1ZSAoYW5kIHBvc3NpYmx5IGJ5IHJlZmVyZW5jZSkgd2lsbCBiZSB2aXNpdGVkICphdCB0aGUgc2FtZSB0aW1lKiBieSB0aGUgY3Vyc29ycy5cclxuICAgICAgICAvLyBUaGlzIHJlbW92ZXMgdGhlIHBvc3NpYmlsaXR5IG9mIGVtaXR0aW5nIGluY29ycmVjdCBkaWZmcywgYXMgd2VsbCBhcyBhbGxvd2luZyBmb3Igc2tpcHBpbmcgc2hhcmVkIG5vZGVzLlxyXG4gICAgICAgIHZhciBfY29tcGFyZSA9IHRoaXMuX2NvbXBhcmU7XHJcbiAgICAgICAgdmFyIHRoaXNDdXJzb3IgPSBCVHJlZS5tYWtlRGlmZkN1cnNvcih0aGlzKTtcclxuICAgICAgICB2YXIgb3RoZXJDdXJzb3IgPSBCVHJlZS5tYWtlRGlmZkN1cnNvcihvdGhlcik7XHJcbiAgICAgICAgLy8gSXQgZG9lc24ndCBtYXR0ZXIgaG93IHRoaXNTdGVwcGVkTGFzdCBpcyBpbml0aWFsaXplZC5cclxuICAgICAgICAvLyBTdGVwIG9yZGVyIGlzIG9ubHkgdXNlZCB3aGVuIGVpdGhlciBjdXJzb3IgaXMgYXQgYSBsZWFmLCBhbmQgY3Vyc29ycyBhbHdheXMgc3RhcnQgYXQgYSBub2RlLlxyXG4gICAgICAgIHZhciB0aGlzU3VjY2VzcyA9IHRydWUsIG90aGVyU3VjY2VzcyA9IHRydWUsIHByZXZDdXJzb3JPcmRlciA9IEJUcmVlLmNvbXBhcmUodGhpc0N1cnNvciwgb3RoZXJDdXJzb3IsIF9jb21wYXJlKTtcclxuICAgICAgICB3aGlsZSAodGhpc1N1Y2Nlc3MgJiYgb3RoZXJTdWNjZXNzKSB7XHJcbiAgICAgICAgICAgIHZhciBjdXJzb3JPcmRlciA9IEJUcmVlLmNvbXBhcmUodGhpc0N1cnNvciwgb3RoZXJDdXJzb3IsIF9jb21wYXJlKTtcclxuICAgICAgICAgICAgdmFyIHRoaXNMZWFmID0gdGhpc0N1cnNvci5sZWFmLCB0aGlzSW50ZXJuYWxTcGluZSA9IHRoaXNDdXJzb3IuaW50ZXJuYWxTcGluZSwgdGhpc0xldmVsSW5kaWNlcyA9IHRoaXNDdXJzb3IubGV2ZWxJbmRpY2VzO1xyXG4gICAgICAgICAgICB2YXIgb3RoZXJMZWFmID0gb3RoZXJDdXJzb3IubGVhZiwgb3RoZXJJbnRlcm5hbFNwaW5lID0gb3RoZXJDdXJzb3IuaW50ZXJuYWxTcGluZSwgb3RoZXJMZXZlbEluZGljZXMgPSBvdGhlckN1cnNvci5sZXZlbEluZGljZXM7XHJcbiAgICAgICAgICAgIGlmICh0aGlzTGVhZiB8fCBvdGhlckxlYWYpIHtcclxuICAgICAgICAgICAgICAgIC8vIElmIHRoZSBjdXJzb3JzIHdlcmUgYXQgdGhlIHNhbWUgbG9jYXRpb24gbGFzdCBzdGVwLCB0aGVuIHRoZXJlIGlzIG5vIHdvcmsgdG8gYmUgZG9uZS5cclxuICAgICAgICAgICAgICAgIGlmIChwcmV2Q3Vyc29yT3JkZXIgIT09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY3Vyc29yT3JkZXIgPT09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXNMZWFmICYmIG90aGVyTGVhZiAmJiBkaWZmZXJlbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVxdWFsIGtleXMsIGNoZWNrIGZvciBtb2RpZmljYXRpb25zXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdmFsVGhpcyA9IHRoaXNMZWFmLnZhbHVlc1t0aGlzTGV2ZWxJbmRpY2VzW3RoaXNMZXZlbEluZGljZXMubGVuZ3RoIC0gMV1dO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHZhbE90aGVyID0gb3RoZXJMZWFmLnZhbHVlc1tvdGhlckxldmVsSW5kaWNlc1tvdGhlckxldmVsSW5kaWNlcy5sZW5ndGggLSAxXV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIU9iamVjdC5pcyh2YWxUaGlzLCB2YWxPdGhlcikpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gZGlmZmVyZW50KHRoaXNDdXJzb3IuY3VycmVudEtleSwgdmFsVGhpcywgdmFsT3RoZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgJiYgcmVzdWx0LmJyZWFrKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LmJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGN1cnNvck9yZGVyID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGlzIGlzIHRoZSBjYXNlLCB3ZSBrbm93IHRoYXQgZWl0aGVyOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAxLiBvdGhlckN1cnNvciBzdGVwcGVkIGxhc3QgZnJvbSBhIHN0YXJ0aW5nIHBvc2l0aW9uIHRoYXQgdHJhaWxlZCB0aGlzQ3Vyc29yLCBhbmQgaXMgc3RpbGwgYmVoaW5kLCBvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAyLiB0aGlzQ3Vyc29yIHN0ZXBwZWQgbGFzdCBhbmQgbGVhcGZyb2dnZWQgb3RoZXJDdXJzb3JcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gRWl0aGVyIG9mIHRoZXNlIGNhc2VzIGlzIGFuIFwib25seSBvdGhlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvdGhlckxlYWYgJiYgb25seU90aGVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgb3RoZXJWYWwgPSBvdGhlckxlYWYudmFsdWVzW290aGVyTGV2ZWxJbmRpY2VzW290aGVyTGV2ZWxJbmRpY2VzLmxlbmd0aCAtIDFdXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSBvbmx5T3RoZXIob3RoZXJDdXJzb3IuY3VycmVudEtleSwgb3RoZXJWYWwpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCAmJiByZXN1bHQuYnJlYWspXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5icmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChvbmx5VGhpcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpc0xlYWYgJiYgcHJldkN1cnNvck9yZGVyICE9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdmFsVGhpcyA9IHRoaXNMZWFmLnZhbHVlc1t0aGlzTGV2ZWxJbmRpY2VzW3RoaXNMZXZlbEluZGljZXMubGVuZ3RoIC0gMV1dO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IG9ubHlUaGlzKHRoaXNDdXJzb3IuY3VycmVudEtleSwgdmFsVGhpcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICYmIHJlc3VsdC5icmVhaylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LmJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKCF0aGlzTGVhZiAmJiAhb3RoZXJMZWFmICYmIGN1cnNvck9yZGVyID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgbGFzdFRoaXMgPSB0aGlzSW50ZXJuYWxTcGluZS5sZW5ndGggLSAxO1xyXG4gICAgICAgICAgICAgICAgdmFyIGxhc3RPdGhlciA9IG90aGVySW50ZXJuYWxTcGluZS5sZW5ndGggLSAxO1xyXG4gICAgICAgICAgICAgICAgdmFyIG5vZGVUaGlzID0gdGhpc0ludGVybmFsU3BpbmVbbGFzdFRoaXNdW3RoaXNMZXZlbEluZGljZXNbbGFzdFRoaXNdXTtcclxuICAgICAgICAgICAgICAgIHZhciBub2RlT3RoZXIgPSBvdGhlckludGVybmFsU3BpbmVbbGFzdE90aGVyXVtvdGhlckxldmVsSW5kaWNlc1tsYXN0T3RoZXJdXTtcclxuICAgICAgICAgICAgICAgIGlmIChub2RlT3RoZXIgPT09IG5vZGVUaGlzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJldkN1cnNvck9yZGVyID0gMDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzU3VjY2VzcyA9IEJUcmVlLnN0ZXAodGhpc0N1cnNvciwgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgb3RoZXJTdWNjZXNzID0gQlRyZWUuc3RlcChvdGhlckN1cnNvciwgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcHJldkN1cnNvck9yZGVyID0gY3Vyc29yT3JkZXI7XHJcbiAgICAgICAgICAgIGlmIChjdXJzb3JPcmRlciA8IDApIHtcclxuICAgICAgICAgICAgICAgIHRoaXNTdWNjZXNzID0gQlRyZWUuc3RlcCh0aGlzQ3Vyc29yKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIG90aGVyU3VjY2VzcyA9IEJUcmVlLnN0ZXAob3RoZXJDdXJzb3IpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzU3VjY2VzcyAmJiBvbmx5VGhpcylcclxuICAgICAgICAgICAgcmV0dXJuIEJUcmVlLmZpbmlzaEN1cnNvcldhbGsodGhpc0N1cnNvciwgb3RoZXJDdXJzb3IsIF9jb21wYXJlLCBvbmx5VGhpcyk7XHJcbiAgICAgICAgaWYgKG90aGVyU3VjY2VzcyAmJiBvbmx5T3RoZXIpXHJcbiAgICAgICAgICAgIHJldHVybiBCVHJlZS5maW5pc2hDdXJzb3JXYWxrKG90aGVyQ3Vyc29yLCB0aGlzQ3Vyc29yLCBfY29tcGFyZSwgb25seU90aGVyKTtcclxuICAgIH07XHJcbiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuICAgIC8vIEhlbHBlciBtZXRob2RzIGZvciBkaWZmQWdhaW5zdCAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG4gICAgQlRyZWUuZmluaXNoQ3Vyc29yV2FsayA9IGZ1bmN0aW9uIChjdXJzb3IsIGN1cnNvckZpbmlzaGVkLCBjb21wYXJlS2V5cywgY2FsbGJhY2spIHtcclxuICAgICAgICB2YXIgY29tcGFyZWQgPSBCVHJlZS5jb21wYXJlKGN1cnNvciwgY3Vyc29yRmluaXNoZWQsIGNvbXBhcmVLZXlzKTtcclxuICAgICAgICBpZiAoY29tcGFyZWQgPT09IDApIHtcclxuICAgICAgICAgICAgaWYgKCFCVHJlZS5zdGVwKGN1cnNvcikpXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChjb21wYXJlZCA8IDApIHtcclxuICAgICAgICAgICAgY2hlY2soZmFsc2UsIFwiY3Vyc29yIHdhbGsgdGVybWluYXRlZCBlYXJseVwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIEJUcmVlLnN0ZXBUb0VuZChjdXJzb3IsIGNhbGxiYWNrKTtcclxuICAgIH07XHJcbiAgICBCVHJlZS5zdGVwVG9FbmQgPSBmdW5jdGlvbiAoY3Vyc29yLCBjYWxsYmFjaykge1xyXG4gICAgICAgIHZhciBjYW5TdGVwID0gdHJ1ZTtcclxuICAgICAgICB3aGlsZSAoY2FuU3RlcCkge1xyXG4gICAgICAgICAgICB2YXIgbGVhZiA9IGN1cnNvci5sZWFmLCBsZXZlbEluZGljZXMgPSBjdXJzb3IubGV2ZWxJbmRpY2VzLCBjdXJyZW50S2V5ID0gY3Vyc29yLmN1cnJlbnRLZXk7XHJcbiAgICAgICAgICAgIGlmIChsZWFmKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgdmFsdWUgPSBsZWFmLnZhbHVlc1tsZXZlbEluZGljZXNbbGV2ZWxJbmRpY2VzLmxlbmd0aCAtIDFdXTtcclxuICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSBjYWxsYmFjayhjdXJyZW50S2V5LCB2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICYmIHJlc3VsdC5icmVhaylcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LmJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhblN0ZXAgPSBCVHJlZS5zdGVwKGN1cnNvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICB9O1xyXG4gICAgQlRyZWUubWFrZURpZmZDdXJzb3IgPSBmdW5jdGlvbiAodHJlZSkge1xyXG4gICAgICAgIHZhciBfcm9vdCA9IHRyZWUuX3Jvb3QsIGhlaWdodCA9IHRyZWUuaGVpZ2h0O1xyXG4gICAgICAgIHJldHVybiB7IGhlaWdodDogaGVpZ2h0LCBpbnRlcm5hbFNwaW5lOiBbW19yb290XV0sIGxldmVsSW5kaWNlczogWzBdLCBsZWFmOiB1bmRlZmluZWQsIGN1cnJlbnRLZXk6IF9yb290Lm1heEtleSgpIH07XHJcbiAgICB9O1xyXG4gICAgLyoqXHJcbiAgICAgKiBBZHZhbmNlcyB0aGUgY3Vyc29yIHRvIHRoZSBuZXh0IHN0ZXAgaW4gdGhlIHdhbGsgb2YgaXRzIHRyZWUuXHJcbiAgICAgKiBDdXJzb3JzIGFyZSB3YWxrZWQgYmFja3dhcmRzIGluIHNvcnQgb3JkZXIsIGFzIHRoaXMgYWxsb3dzIHRoZW0gdG8gbGV2ZXJhZ2UgbWF4S2V5KCkgaW4gb3JkZXIgdG8gYmUgY29tcGFyZWQgaW4gTygxKS5cclxuICAgICAqIEBwYXJhbSBjdXJzb3IgVGhlIGN1cnNvciB0byBzdGVwXHJcbiAgICAgKiBAcGFyYW0gc3RlcFRvTm9kZSBJZiB0cnVlLCB0aGUgY3Vyc29yIHdpbGwgYmUgYWR2YW5jZWQgdG8gdGhlIG5leHQgbm9kZSAoc2tpcHBpbmcgdmFsdWVzKVxyXG4gICAgICogQHJldHVybnMgdHJ1ZSBpZiB0aGUgc3RlcCB3YXMgY29tcGxldGVkIGFuZCBmYWxzZSBpZiB0aGUgc3RlcCB3b3VsZCBoYXZlIGNhdXNlZCB0aGUgY3Vyc29yIHRvIG1vdmUgYmV5b25kIHRoZSBlbmQgb2YgdGhlIHRyZWUuXHJcbiAgICAgKi9cclxuICAgIEJUcmVlLnN0ZXAgPSBmdW5jdGlvbiAoY3Vyc29yLCBzdGVwVG9Ob2RlKSB7XHJcbiAgICAgICAgdmFyIGludGVybmFsU3BpbmUgPSBjdXJzb3IuaW50ZXJuYWxTcGluZSwgbGV2ZWxJbmRpY2VzID0gY3Vyc29yLmxldmVsSW5kaWNlcywgbGVhZiA9IGN1cnNvci5sZWFmO1xyXG4gICAgICAgIGlmIChzdGVwVG9Ob2RlID09PSB0cnVlIHx8IGxlYWYpIHtcclxuICAgICAgICAgICAgdmFyIGxldmVsc0xlbmd0aCA9IGxldmVsSW5kaWNlcy5sZW5ndGg7XHJcbiAgICAgICAgICAgIC8vIFN0ZXAgdG8gdGhlIG5leHQgbm9kZSBvbmx5IGlmOlxyXG4gICAgICAgICAgICAvLyAtIFdlIGFyZSBleHBsaWNpdGx5IGRpcmVjdGVkIHRvIHZpYSBzdGVwVG9Ob2RlLCBvclxyXG4gICAgICAgICAgICAvLyAtIFRoZXJlIGFyZSBubyBrZXkvdmFsdWUgcGFpcnMgbGVmdCB0byBzdGVwIHRvIGluIHRoaXMgbGVhZlxyXG4gICAgICAgICAgICBpZiAoc3RlcFRvTm9kZSA9PT0gdHJ1ZSB8fCBsZXZlbEluZGljZXNbbGV2ZWxzTGVuZ3RoIC0gMV0gPT09IDApIHtcclxuICAgICAgICAgICAgICAgIHZhciBzcGluZUxlbmd0aCA9IGludGVybmFsU3BpbmUubGVuZ3RoO1xyXG4gICAgICAgICAgICAgICAgLy8gUm9vdCBpcyBsZWFmXHJcbiAgICAgICAgICAgICAgICBpZiAoc3BpbmVMZW5ndGggPT09IDApXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgLy8gV2FsayBiYWNrIHVwIHRoZSB0cmVlIHVudGlsIHdlIGZpbmQgYSBuZXcgc3VidHJlZSB0byBkZXNjZW5kIGludG9cclxuICAgICAgICAgICAgICAgIHZhciBub2RlTGV2ZWxJbmRleCA9IHNwaW5lTGVuZ3RoIC0gMTtcclxuICAgICAgICAgICAgICAgIHZhciBsZXZlbEluZGV4V2Fsa0JhY2sgPSBub2RlTGV2ZWxJbmRleDtcclxuICAgICAgICAgICAgICAgIHdoaWxlIChsZXZlbEluZGV4V2Fsa0JhY2sgPj0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChsZXZlbEluZGljZXNbbGV2ZWxJbmRleFdhbGtCYWNrXSA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxldmVsSW5kZXhXYWxrQmFjayA8IGxldmVsc0xlbmd0aCAtIDEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlbW92ZSBsZWFmIHN0YXRlIGZyb20gY3Vyc29yXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJzb3IubGVhZiA9IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsSW5kaWNlcy5wb3AoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB3ZSB3YWxrZWQgdXB3YXJkcyBwYXN0IGFueSBpbnRlcm5hbCBub2RlLCBzbGljZSB0aGVtIG91dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobGV2ZWxJbmRleFdhbGtCYWNrIDwgbm9kZUxldmVsSW5kZXgpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJzb3IuaW50ZXJuYWxTcGluZSA9IGludGVybmFsU3BpbmUuc2xpY2UoMCwgbGV2ZWxJbmRleFdhbGtCYWNrICsgMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1vdmUgdG8gbmV3IGludGVybmFsIG5vZGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgY3Vyc29yLmN1cnJlbnRLZXkgPSBpbnRlcm5hbFNwaW5lW2xldmVsSW5kZXhXYWxrQmFja11bLS1sZXZlbEluZGljZXNbbGV2ZWxJbmRleFdhbGtCYWNrXV0ubWF4S2V5KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBsZXZlbEluZGV4V2Fsa0JhY2stLTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIEN1cnNvciBpcyBpbiB0aGUgZmFyIGxlZnQgbGVhZiBvZiB0aGUgdHJlZSwgbm8gbW9yZSBub2RlcyB0byBlbnVtZXJhdGVcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIE1vdmUgdG8gbmV3IGxlYWYgdmFsdWVcclxuICAgICAgICAgICAgICAgIHZhciB2YWx1ZUluZGV4ID0gLS1sZXZlbEluZGljZXNbbGV2ZWxzTGVuZ3RoIC0gMV07XHJcbiAgICAgICAgICAgICAgICBjdXJzb3IuY3VycmVudEtleSA9IGxlYWYua2V5c1t2YWx1ZUluZGV4XTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgeyAvLyBDdXJzb3IgZG9lcyBub3QgcG9pbnQgdG8gYSB2YWx1ZSBpbiBhIGxlYWYsIHNvIG1vdmUgZG93bndhcmRzXHJcbiAgICAgICAgICAgIHZhciBuZXh0TGV2ZWwgPSBpbnRlcm5hbFNwaW5lLmxlbmd0aDtcclxuICAgICAgICAgICAgdmFyIGN1cnJlbnRMZXZlbCA9IG5leHRMZXZlbCAtIDE7XHJcbiAgICAgICAgICAgIHZhciBub2RlID0gaW50ZXJuYWxTcGluZVtjdXJyZW50TGV2ZWxdW2xldmVsSW5kaWNlc1tjdXJyZW50TGV2ZWxdXTtcclxuICAgICAgICAgICAgaWYgKG5vZGUuaXNMZWFmKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBFbnRlcmluZyBpbnRvIGEgbGVhZi4gU2V0IHRoZSBjdXJzb3IgdG8gcG9pbnQgYXQgdGhlIGxhc3Qga2V5L3ZhbHVlIHBhaXIuXHJcbiAgICAgICAgICAgICAgICBjdXJzb3IubGVhZiA9IG5vZGU7XHJcbiAgICAgICAgICAgICAgICB2YXIgdmFsdWVJbmRleCA9IGxldmVsSW5kaWNlc1tuZXh0TGV2ZWxdID0gbm9kZS52YWx1ZXMubGVuZ3RoIC0gMTtcclxuICAgICAgICAgICAgICAgIGN1cnNvci5jdXJyZW50S2V5ID0gbm9kZS5rZXlzW3ZhbHVlSW5kZXhdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdmFyIGNoaWxkcmVuID0gbm9kZS5jaGlsZHJlbjtcclxuICAgICAgICAgICAgICAgIGludGVybmFsU3BpbmVbbmV4dExldmVsXSA9IGNoaWxkcmVuO1xyXG4gICAgICAgICAgICAgICAgdmFyIGNoaWxkSW5kZXggPSBjaGlsZHJlbi5sZW5ndGggLSAxO1xyXG4gICAgICAgICAgICAgICAgbGV2ZWxJbmRpY2VzW25leHRMZXZlbF0gPSBjaGlsZEluZGV4O1xyXG4gICAgICAgICAgICAgICAgY3Vyc29yLmN1cnJlbnRLZXkgPSBjaGlsZHJlbltjaGlsZEluZGV4XS5tYXhLZXkoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgLyoqXHJcbiAgICAgKiBDb21wYXJlcyB0aGUgdHdvIGN1cnNvcnMuIFJldHVybnMgYSB2YWx1ZSBpbmRpY2F0aW5nIHdoaWNoIGN1cnNvciBpcyBhaGVhZCBpbiBhIHdhbGsuXHJcbiAgICAgKiBOb3RlIHRoYXQgY3Vyc29ycyBhcmUgYWR2YW5jZWQgaW4gcmV2ZXJzZSBzb3J0aW5nIG9yZGVyLlxyXG4gICAgICovXHJcbiAgICBCVHJlZS5jb21wYXJlID0gZnVuY3Rpb24gKGN1cnNvckEsIGN1cnNvckIsIGNvbXBhcmVLZXlzKSB7XHJcbiAgICAgICAgdmFyIGhlaWdodEEgPSBjdXJzb3JBLmhlaWdodCwgY3VycmVudEtleUEgPSBjdXJzb3JBLmN1cnJlbnRLZXksIGxldmVsSW5kaWNlc0EgPSBjdXJzb3JBLmxldmVsSW5kaWNlcztcclxuICAgICAgICB2YXIgaGVpZ2h0QiA9IGN1cnNvckIuaGVpZ2h0LCBjdXJyZW50S2V5QiA9IGN1cnNvckIuY3VycmVudEtleSwgbGV2ZWxJbmRpY2VzQiA9IGN1cnNvckIubGV2ZWxJbmRpY2VzO1xyXG4gICAgICAgIC8vIFJldmVyc2UgdGhlIGNvbXBhcmlzb24gb3JkZXIsIGFzIGN1cnNvcnMgYXJlIGFkdmFuY2VkIGluIHJldmVyc2Ugc29ydGluZyBvcmRlclxyXG4gICAgICAgIHZhciBrZXlDb21wYXJpc29uID0gY29tcGFyZUtleXMoY3VycmVudEtleUIsIGN1cnJlbnRLZXlBKTtcclxuICAgICAgICBpZiAoa2V5Q29tcGFyaXNvbiAhPT0gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4ga2V5Q29tcGFyaXNvbjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gTm9ybWFsaXplIGRlcHRoIHZhbHVlcyByZWxhdGl2ZSB0byB0aGUgc2hvcnRlc3QgdHJlZS5cclxuICAgICAgICAvLyBUaGlzIGVuc3VyZXMgdGhhdCBjb25jdXJyZW50IGN1cnNvciB3YWxrcyBvZiB0cmVlcyBvZiBkaWZmZXJpbmcgaGVpZ2h0cyBjYW4gcmVsaWFibHkgbGFuZCBvbiBzaGFyZWQgbm9kZXMgYXQgdGhlIHNhbWUgdGltZS5cclxuICAgICAgICAvLyBUbyBhY2NvbXBsaXNoIHRoaXMsIGEgY3Vyc29yIHRoYXQgaXMgb24gYW4gaW50ZXJuYWwgbm9kZSBhdCBkZXB0aCBEMSB3aXRoIG1heEtleSBYIGlzIGNvbnNpZGVyZWQgXCJiZWhpbmRcIiBhIGN1cnNvciBvbiBhblxyXG4gICAgICAgIC8vIGludGVybmFsIG5vZGUgYXQgZGVwdGggRDIgd2l0aCBtYXhLZXkgWSwgd2hlbiBEMSA8IEQyLiBUaHVzLCBhbHdheXMgd2Fsa2luZyB0aGUgY3Vyc29yIHRoYXQgaXMgXCJiZWhpbmRcIiB3aWxsIGFsbG93IHRoZSBjdXJzb3JcclxuICAgICAgICAvLyBhdCBzaGFsbG93ZXIgZGVwdGggKGJ1dCBlcXVhbCBtYXhLZXkpIHRvIFwiY2F0Y2ggdXBcIiBhbmQgbGFuZCBvbiBzaGFyZWQgbm9kZXMuXHJcbiAgICAgICAgdmFyIGhlaWdodE1pbiA9IGhlaWdodEEgPCBoZWlnaHRCID8gaGVpZ2h0QSA6IGhlaWdodEI7XHJcbiAgICAgICAgdmFyIGRlcHRoQU5vcm1hbGl6ZWQgPSBsZXZlbEluZGljZXNBLmxlbmd0aCAtIChoZWlnaHRBIC0gaGVpZ2h0TWluKTtcclxuICAgICAgICB2YXIgZGVwdGhCTm9ybWFsaXplZCA9IGxldmVsSW5kaWNlc0IubGVuZ3RoIC0gKGhlaWdodEIgLSBoZWlnaHRNaW4pO1xyXG4gICAgICAgIHJldHVybiBkZXB0aEFOb3JtYWxpemVkIC0gZGVwdGhCTm9ybWFsaXplZDtcclxuICAgIH07XHJcbiAgICAvLyBFbmQgb2YgaGVscGVyIG1ldGhvZHMgZm9yIGRpZmZBZ2FpbnN0IC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG4gICAgLyoqIFJldHVybnMgYSBuZXcgaXRlcmF0b3IgZm9yIGl0ZXJhdGluZyB0aGUga2V5cyBvZiBlYWNoIHBhaXIgaW4gYXNjZW5kaW5nIG9yZGVyLlxyXG4gICAgICogIEBwYXJhbSBmaXJzdEtleTogTWluaW11bSBrZXkgdG8gaW5jbHVkZSBpbiB0aGUgb3V0cHV0LiAqL1xyXG4gICAgQlRyZWUucHJvdG90eXBlLmtleXMgPSBmdW5jdGlvbiAoZmlyc3RLZXkpIHtcclxuICAgICAgICB2YXIgaXQgPSB0aGlzLmVudHJpZXMoZmlyc3RLZXksIFJldXNlZEFycmF5KTtcclxuICAgICAgICByZXR1cm4gaXRlcmF0b3IoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICB2YXIgbiA9IGl0Lm5leHQoKTtcclxuICAgICAgICAgICAgaWYgKG4udmFsdWUpXHJcbiAgICAgICAgICAgICAgICBuLnZhbHVlID0gbi52YWx1ZVswXTtcclxuICAgICAgICAgICAgcmV0dXJuIG47XHJcbiAgICAgICAgfSk7XHJcbiAgICB9O1xyXG4gICAgLyoqIFJldHVybnMgYSBuZXcgaXRlcmF0b3IgZm9yIGl0ZXJhdGluZyB0aGUgdmFsdWVzIG9mIGVhY2ggcGFpciBpbiBvcmRlciBieSBrZXkuXHJcbiAgICAgKiAgQHBhcmFtIGZpcnN0S2V5OiBNaW5pbXVtIGtleSB3aG9zZSBhc3NvY2lhdGVkIHZhbHVlIGlzIGluY2x1ZGVkIGluIHRoZSBvdXRwdXQuICovXHJcbiAgICBCVHJlZS5wcm90b3R5cGUudmFsdWVzID0gZnVuY3Rpb24gKGZpcnN0S2V5KSB7XHJcbiAgICAgICAgdmFyIGl0ID0gdGhpcy5lbnRyaWVzKGZpcnN0S2V5LCBSZXVzZWRBcnJheSk7XHJcbiAgICAgICAgcmV0dXJuIGl0ZXJhdG9yKGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgdmFyIG4gPSBpdC5uZXh0KCk7XHJcbiAgICAgICAgICAgIGlmIChuLnZhbHVlKVxyXG4gICAgICAgICAgICAgICAgbi52YWx1ZSA9IG4udmFsdWVbMV07XHJcbiAgICAgICAgICAgIHJldHVybiBuO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfTtcclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShCVHJlZS5wcm90b3R5cGUsIFwibWF4Tm9kZVNpemVcIiwge1xyXG4gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbiAgICAgICAgLy8gQWRkaXRpb25hbCBtZXRob2RzIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuICAgICAgICAvKiogUmV0dXJucyB0aGUgbWF4aW11bSBudW1iZXIgb2YgY2hpbGRyZW4vdmFsdWVzIGJlZm9yZSBub2RlcyB3aWxsIHNwbGl0LiAqL1xyXG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fbWF4Tm9kZVNpemU7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcclxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcclxuICAgIH0pO1xyXG4gICAgLyoqIEdldHMgdGhlIGxvd2VzdCBrZXkgaW4gdGhlIHRyZWUuIENvbXBsZXhpdHk6IE8obG9nIHNpemUpICovXHJcbiAgICBCVHJlZS5wcm90b3R5cGUubWluS2V5ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5fcm9vdC5taW5LZXkoKTsgfTtcclxuICAgIC8qKiBHZXRzIHRoZSBoaWdoZXN0IGtleSBpbiB0aGUgdHJlZS4gQ29tcGxleGl0eTogTygxKSAqL1xyXG4gICAgQlRyZWUucHJvdG90eXBlLm1heEtleSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuX3Jvb3QubWF4S2V5KCk7IH07XHJcbiAgICAvKiogUXVpY2tseSBjbG9uZXMgdGhlIHRyZWUgYnkgbWFya2luZyB0aGUgcm9vdCBub2RlIGFzIHNoYXJlZC5cclxuICAgICAqICBCb3RoIGNvcGllcyByZW1haW4gZWRpdGFibGUuIFdoZW4geW91IG1vZGlmeSBlaXRoZXIgY29weSwgYW55XHJcbiAgICAgKiAgbm9kZXMgdGhhdCBhcmUgc2hhcmVkIChvciBwb3RlbnRpYWxseSBzaGFyZWQpIGJldHdlZW4gdGhlIHR3b1xyXG4gICAgICogIGNvcGllcyBhcmUgY2xvbmVkIHNvIHRoYXQgdGhlIGNoYW5nZXMgZG8gbm90IGFmZmVjdCBvdGhlciBjb3BpZXMuXHJcbiAgICAgKiAgVGhpcyBpcyBrbm93biBhcyBjb3B5LW9uLXdyaXRlIGJlaGF2aW9yLCBvciBcImxhenkgY29weWluZ1wiLiAqL1xyXG4gICAgQlRyZWUucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHRoaXMuX3Jvb3QuaXNTaGFyZWQgPSB0cnVlO1xyXG4gICAgICAgIHZhciByZXN1bHQgPSBuZXcgQlRyZWUodW5kZWZpbmVkLCB0aGlzLl9jb21wYXJlLCB0aGlzLl9tYXhOb2RlU2l6ZSk7XHJcbiAgICAgICAgcmVzdWx0Ll9yb290ID0gdGhpcy5fcm9vdDtcclxuICAgICAgICByZXN1bHQuX3NpemUgPSB0aGlzLl9zaXplO1xyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9O1xyXG4gICAgLyoqIFBlcmZvcm1zIGEgZ3JlZWR5IGNsb25lLCBpbW1lZGlhdGVseSBkdXBsaWNhdGluZyBhbnkgbm9kZXMgdGhhdCBhcmVcclxuICAgICAqICBub3QgY3VycmVudGx5IG1hcmtlZCBhcyBzaGFyZWQsIGluIG9yZGVyIHRvIGF2b2lkIG1hcmtpbmcgYW55XHJcbiAgICAgKiAgYWRkaXRpb25hbCBub2RlcyBhcyBzaGFyZWQuXHJcbiAgICAgKiAgQHBhcmFtIGZvcmNlIENsb25lIGFsbCBub2RlcywgZXZlbiBzaGFyZWQgb25lcy5cclxuICAgICAqL1xyXG4gICAgQlRyZWUucHJvdG90eXBlLmdyZWVkeUNsb25lID0gZnVuY3Rpb24gKGZvcmNlKSB7XHJcbiAgICAgICAgdmFyIHJlc3VsdCA9IG5ldyBCVHJlZSh1bmRlZmluZWQsIHRoaXMuX2NvbXBhcmUsIHRoaXMuX21heE5vZGVTaXplKTtcclxuICAgICAgICByZXN1bHQuX3Jvb3QgPSB0aGlzLl9yb290LmdyZWVkeUNsb25lKGZvcmNlKTtcclxuICAgICAgICByZXN1bHQuX3NpemUgPSB0aGlzLl9zaXplO1xyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9O1xyXG4gICAgLyoqIEdldHMgYW4gYXJyYXkgZmlsbGVkIHdpdGggdGhlIGNvbnRlbnRzIG9mIHRoZSB0cmVlLCBzb3J0ZWQgYnkga2V5ICovXHJcbiAgICBCVHJlZS5wcm90b3R5cGUudG9BcnJheSA9IGZ1bmN0aW9uIChtYXhMZW5ndGgpIHtcclxuICAgICAgICBpZiAobWF4TGVuZ3RoID09PSB2b2lkIDApIHsgbWF4TGVuZ3RoID0gMHg3RkZGRkZGRjsgfVxyXG4gICAgICAgIHZhciBtaW4gPSB0aGlzLm1pbktleSgpLCBtYXggPSB0aGlzLm1heEtleSgpO1xyXG4gICAgICAgIGlmIChtaW4gIT09IHVuZGVmaW5lZClcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0UmFuZ2UobWluLCBtYXgsIHRydWUsIG1heExlbmd0aCk7XHJcbiAgICAgICAgcmV0dXJuIFtdO1xyXG4gICAgfTtcclxuICAgIC8qKiBHZXRzIGFuIGFycmF5IG9mIGFsbCBrZXlzLCBzb3J0ZWQgKi9cclxuICAgIEJUcmVlLnByb3RvdHlwZS5rZXlzQXJyYXkgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdmFyIHJlc3VsdHMgPSBbXTtcclxuICAgICAgICB0aGlzLl9yb290LmZvclJhbmdlKHRoaXMubWluS2V5KCksIHRoaXMubWF4S2V5KCksIHRydWUsIGZhbHNlLCB0aGlzLCAwLCBmdW5jdGlvbiAoaywgdikgeyByZXN1bHRzLnB1c2goayk7IH0pO1xyXG4gICAgICAgIHJldHVybiByZXN1bHRzO1xyXG4gICAgfTtcclxuICAgIC8qKiBHZXRzIGFuIGFycmF5IG9mIGFsbCB2YWx1ZXMsIHNvcnRlZCBieSBrZXkgKi9cclxuICAgIEJUcmVlLnByb3RvdHlwZS52YWx1ZXNBcnJheSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB2YXIgcmVzdWx0cyA9IFtdO1xyXG4gICAgICAgIHRoaXMuX3Jvb3QuZm9yUmFuZ2UodGhpcy5taW5LZXkoKSwgdGhpcy5tYXhLZXkoKSwgdHJ1ZSwgZmFsc2UsIHRoaXMsIDAsIGZ1bmN0aW9uIChrLCB2KSB7IHJlc3VsdHMucHVzaCh2KTsgfSk7XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdHM7XHJcbiAgICB9O1xyXG4gICAgLyoqIEdldHMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSB0cmVlJ3MgZGF0YSBiYXNlZCBvbiB0b0FycmF5KCkuICovXHJcbiAgICBCVHJlZS5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudG9BcnJheSgpLnRvU3RyaW5nKCk7XHJcbiAgICB9O1xyXG4gICAgLyoqIFN0b3JlcyBhIGtleS12YWx1ZSBwYWlyIG9ubHkgaWYgdGhlIGtleSBkb2Vzbid0IGFscmVhZHkgZXhpc3QgaW4gdGhlIHRyZWUuXHJcbiAgICAgKiBAcmV0dXJucyB0cnVlIGlmIGEgbmV3IGtleSB3YXMgYWRkZWRcclxuICAgICovXHJcbiAgICBCVHJlZS5wcm90b3R5cGUuc2V0SWZOb3RQcmVzZW50ID0gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXQoa2V5LCB2YWx1ZSwgZmFsc2UpO1xyXG4gICAgfTtcclxuICAgIC8qKiBSZXR1cm5zIHRoZSBuZXh0IHBhaXIgd2hvc2Uga2V5IGlzIGxhcmdlciB0aGFuIHRoZSBzcGVjaWZpZWQga2V5IChvciB1bmRlZmluZWQgaWYgdGhlcmUgaXMgbm9uZSkuXHJcbiAgICAgKiBJZiBrZXkgPT09IHVuZGVmaW5lZCwgdGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBsb3dlc3QgcGFpci5cclxuICAgICAqIEBwYXJhbSBrZXkgVGhlIGtleSB0byBzZWFyY2ggZm9yLlxyXG4gICAgICogQHBhcmFtIHJldXNlZEFycmF5IE9wdGlvbmFsIGFycmF5IHVzZWQgcmVwZWF0ZWRseSB0byBzdG9yZSBrZXktdmFsdWUgcGFpcnMsIHRvXHJcbiAgICAgKiBhdm9pZCBjcmVhdGluZyBhIG5ldyBhcnJheSBvbiBldmVyeSBpdGVyYXRpb24uXHJcbiAgICAgKi9cclxuICAgIEJUcmVlLnByb3RvdHlwZS5uZXh0SGlnaGVyUGFpciA9IGZ1bmN0aW9uIChrZXksIHJldXNlZEFycmF5KSB7XHJcbiAgICAgICAgcmV1c2VkQXJyYXkgPSByZXVzZWRBcnJheSB8fCBbXTtcclxuICAgICAgICBpZiAoa2V5ID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3Jvb3QubWluUGFpcihyZXVzZWRBcnJheSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLl9yb290LmdldFBhaXJPck5leHRIaWdoZXIoa2V5LCB0aGlzLl9jb21wYXJlLCBmYWxzZSwgcmV1c2VkQXJyYXkpO1xyXG4gICAgfTtcclxuICAgIC8qKiBSZXR1cm5zIHRoZSBuZXh0IGtleSBsYXJnZXIgdGhhbiB0aGUgc3BlY2lmaWVkIGtleSwgb3IgdW5kZWZpbmVkIGlmIHRoZXJlIGlzIG5vbmUuXHJcbiAgICAgKiAgQWxzbywgbmV4dEhpZ2hlcktleSh1bmRlZmluZWQpIHJldHVybnMgdGhlIGxvd2VzdCBrZXkuXHJcbiAgICAgKi9cclxuICAgIEJUcmVlLnByb3RvdHlwZS5uZXh0SGlnaGVyS2V5ID0gZnVuY3Rpb24gKGtleSkge1xyXG4gICAgICAgIHZhciBwID0gdGhpcy5uZXh0SGlnaGVyUGFpcihrZXksIFJldXNlZEFycmF5KTtcclxuICAgICAgICByZXR1cm4gcCAmJiBwWzBdO1xyXG4gICAgfTtcclxuICAgIC8qKiBSZXR1cm5zIHRoZSBuZXh0IHBhaXIgd2hvc2Uga2V5IGlzIHNtYWxsZXIgdGhhbiB0aGUgc3BlY2lmaWVkIGtleSAob3IgdW5kZWZpbmVkIGlmIHRoZXJlIGlzIG5vbmUpLlxyXG4gICAgICogIElmIGtleSA9PT0gdW5kZWZpbmVkLCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIGhpZ2hlc3QgcGFpci5cclxuICAgICAqIEBwYXJhbSBrZXkgVGhlIGtleSB0byBzZWFyY2ggZm9yLlxyXG4gICAgICogQHBhcmFtIHJldXNlZEFycmF5IE9wdGlvbmFsIGFycmF5IHVzZWQgcmVwZWF0ZWRseSB0byBzdG9yZSBrZXktdmFsdWUgcGFpcnMsIHRvXHJcbiAgICAgKiAgICAgICAgYXZvaWQgY3JlYXRpbmcgYSBuZXcgYXJyYXkgZWFjaCB0aW1lIHlvdSBjYWxsIHRoaXMgbWV0aG9kLlxyXG4gICAgICovXHJcbiAgICBCVHJlZS5wcm90b3R5cGUubmV4dExvd2VyUGFpciA9IGZ1bmN0aW9uIChrZXksIHJldXNlZEFycmF5KSB7XHJcbiAgICAgICAgcmV1c2VkQXJyYXkgPSByZXVzZWRBcnJheSB8fCBbXTtcclxuICAgICAgICBpZiAoa2V5ID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3Jvb3QubWF4UGFpcihyZXVzZWRBcnJheSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLl9yb290LmdldFBhaXJPck5leHRMb3dlcihrZXksIHRoaXMuX2NvbXBhcmUsIGZhbHNlLCByZXVzZWRBcnJheSk7XHJcbiAgICB9O1xyXG4gICAgLyoqIFJldHVybnMgdGhlIG5leHQga2V5IHNtYWxsZXIgdGhhbiB0aGUgc3BlY2lmaWVkIGtleSwgb3IgdW5kZWZpbmVkIGlmIHRoZXJlIGlzIG5vbmUuXHJcbiAgICAgKiAgQWxzbywgbmV4dExvd2VyS2V5KHVuZGVmaW5lZCkgcmV0dXJucyB0aGUgaGlnaGVzdCBrZXkuXHJcbiAgICAgKi9cclxuICAgIEJUcmVlLnByb3RvdHlwZS5uZXh0TG93ZXJLZXkgPSBmdW5jdGlvbiAoa2V5KSB7XHJcbiAgICAgICAgdmFyIHAgPSB0aGlzLm5leHRMb3dlclBhaXIoa2V5LCBSZXVzZWRBcnJheSk7XHJcbiAgICAgICAgcmV0dXJuIHAgJiYgcFswXTtcclxuICAgIH07XHJcbiAgICAvKiogUmV0dXJucyB0aGUga2V5LXZhbHVlIHBhaXIgYXNzb2NpYXRlZCB3aXRoIHRoZSBzdXBwbGllZCBrZXkgaWYgaXQgZXhpc3RzXHJcbiAgICAgKiAgb3IgdGhlIHBhaXIgYXNzb2NpYXRlZCB3aXRoIHRoZSBuZXh0IGxvd2VyIHBhaXIgb3RoZXJ3aXNlLiBJZiB0aGVyZSBpcyBub1xyXG4gICAgICogIG5leHQgbG93ZXIgcGFpciwgdW5kZWZpbmVkIGlzIHJldHVybmVkLlxyXG4gICAgICogQHBhcmFtIGtleSBUaGUga2V5IHRvIHNlYXJjaCBmb3IuXHJcbiAgICAgKiBAcGFyYW0gcmV1c2VkQXJyYXkgT3B0aW9uYWwgYXJyYXkgdXNlZCByZXBlYXRlZGx5IHRvIHN0b3JlIGtleS12YWx1ZSBwYWlycywgdG9cclxuICAgICAqICAgICAgICBhdm9pZCBjcmVhdGluZyBhIG5ldyBhcnJheSBlYWNoIHRpbWUgeW91IGNhbGwgdGhpcyBtZXRob2QuXHJcbiAgICAgKiAqL1xyXG4gICAgQlRyZWUucHJvdG90eXBlLmdldFBhaXJPck5leHRMb3dlciA9IGZ1bmN0aW9uIChrZXksIHJldXNlZEFycmF5KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jvb3QuZ2V0UGFpck9yTmV4dExvd2VyKGtleSwgdGhpcy5fY29tcGFyZSwgdHJ1ZSwgcmV1c2VkQXJyYXkgfHwgW10pO1xyXG4gICAgfTtcclxuICAgIC8qKiBSZXR1cm5zIHRoZSBrZXktdmFsdWUgcGFpciBhc3NvY2lhdGVkIHdpdGggdGhlIHN1cHBsaWVkIGtleSBpZiBpdCBleGlzdHNcclxuICAgICAqICBvciB0aGUgcGFpciBhc3NvY2lhdGVkIHdpdGggdGhlIG5leHQgbG93ZXIgcGFpciBvdGhlcndpc2UuIElmIHRoZXJlIGlzIG5vXHJcbiAgICAgKiAgbmV4dCBsb3dlciBwYWlyLCB1bmRlZmluZWQgaXMgcmV0dXJuZWQuXHJcbiAgICAgKiBAcGFyYW0ga2V5IFRoZSBrZXkgdG8gc2VhcmNoIGZvci5cclxuICAgICAqIEBwYXJhbSByZXVzZWRBcnJheSBPcHRpb25hbCBhcnJheSB1c2VkIHJlcGVhdGVkbHkgdG8gc3RvcmUga2V5LXZhbHVlIHBhaXJzLCB0b1xyXG4gICAgICogICAgICAgIGF2b2lkIGNyZWF0aW5nIGEgbmV3IGFycmF5IGVhY2ggdGltZSB5b3UgY2FsbCB0aGlzIG1ldGhvZC5cclxuICAgICAqICovXHJcbiAgICBCVHJlZS5wcm90b3R5cGUuZ2V0UGFpck9yTmV4dEhpZ2hlciA9IGZ1bmN0aW9uIChrZXksIHJldXNlZEFycmF5KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jvb3QuZ2V0UGFpck9yTmV4dEhpZ2hlcihrZXksIHRoaXMuX2NvbXBhcmUsIHRydWUsIHJldXNlZEFycmF5IHx8IFtdKTtcclxuICAgIH07XHJcbiAgICAvKiogRWRpdHMgdGhlIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCBhIGtleSBpbiB0aGUgdHJlZSwgaWYgaXQgYWxyZWFkeSBleGlzdHMuXHJcbiAgICAgKiBAcmV0dXJucyB0cnVlIGlmIHRoZSBrZXkgZXhpc3RlZCwgZmFsc2UgaWYgbm90LlxyXG4gICAgKi9cclxuICAgIEJUcmVlLnByb3RvdHlwZS5jaGFuZ2VJZlByZXNlbnQgPSBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmVkaXRSYW5nZShrZXksIGtleSwgdHJ1ZSwgZnVuY3Rpb24gKGssIHYpIHsgcmV0dXJuICh7IHZhbHVlOiB2YWx1ZSB9KTsgfSkgIT09IDA7XHJcbiAgICB9O1xyXG4gICAgLyoqXHJcbiAgICAgKiBCdWlsZHMgYW4gYXJyYXkgb2YgcGFpcnMgZnJvbSB0aGUgc3BlY2lmaWVkIHJhbmdlIG9mIGtleXMsIHNvcnRlZCBieSBrZXkuXHJcbiAgICAgKiBFYWNoIHJldHVybmVkIHBhaXIgaXMgYWxzbyBhbiBhcnJheTogcGFpclswXSBpcyB0aGUga2V5LCBwYWlyWzFdIGlzIHRoZSB2YWx1ZS5cclxuICAgICAqIEBwYXJhbSBsb3cgVGhlIGZpcnN0IGtleSBpbiB0aGUgYXJyYXkgd2lsbCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gYGxvd2AuXHJcbiAgICAgKiBAcGFyYW0gaGlnaCBUaGlzIG1ldGhvZCByZXR1cm5zIHdoZW4gYSBrZXkgbGFyZ2VyIHRoYW4gdGhpcyBpcyByZWFjaGVkLlxyXG4gICAgICogQHBhcmFtIGluY2x1ZGVIaWdoIElmIHRoZSBgaGlnaGAga2V5IGlzIHByZXNlbnQsIGl0cyBwYWlyIHdpbGwgYmUgaW5jbHVkZWRcclxuICAgICAqICAgICAgICBpbiB0aGUgb3V0cHV0IGlmIGFuZCBvbmx5IGlmIHRoaXMgcGFyYW1ldGVyIGlzIHRydWUuIE5vdGU6IGlmIHRoZVxyXG4gICAgICogICAgICAgIGBsb3dgIGtleSBpcyBwcmVzZW50LCBpdCBpcyBhbHdheXMgaW5jbHVkZWQgaW4gdGhlIG91dHB1dC5cclxuICAgICAqIEBwYXJhbSBtYXhMZW5ndGggTGVuZ3RoIGxpbWl0LiBnZXRSYW5nZSB3aWxsIHN0b3Agc2Nhbm5pbmcgdGhlIHRyZWUgd2hlblxyXG4gICAgICogICAgICAgICAgICAgICAgICB0aGUgYXJyYXkgcmVhY2hlcyB0aGlzIHNpemUuXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gQ29tcHV0YXRpb25hbCBjb21wbGV4aXR5OiBPKHJlc3VsdC5sZW5ndGggKyBsb2cgc2l6ZSlcclxuICAgICAqL1xyXG4gICAgQlRyZWUucHJvdG90eXBlLmdldFJhbmdlID0gZnVuY3Rpb24gKGxvdywgaGlnaCwgaW5jbHVkZUhpZ2gsIG1heExlbmd0aCkge1xyXG4gICAgICAgIGlmIChtYXhMZW5ndGggPT09IHZvaWQgMCkgeyBtYXhMZW5ndGggPSAweDNGRkZGRkY7IH1cclxuICAgICAgICB2YXIgcmVzdWx0cyA9IFtdO1xyXG4gICAgICAgIHRoaXMuX3Jvb3QuZm9yUmFuZ2UobG93LCBoaWdoLCBpbmNsdWRlSGlnaCwgZmFsc2UsIHRoaXMsIDAsIGZ1bmN0aW9uIChrLCB2KSB7XHJcbiAgICAgICAgICAgIHJlc3VsdHMucHVzaChbaywgdl0pO1xyXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0cy5sZW5ndGggPiBtYXhMZW5ndGggPyBCcmVhayA6IHVuZGVmaW5lZDtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gcmVzdWx0cztcclxuICAgIH07XHJcbiAgICAvKiogQWRkcyBhbGwgcGFpcnMgZnJvbSBhIGxpc3Qgb2Yga2V5LXZhbHVlIHBhaXJzLlxyXG4gICAgICogQHBhcmFtIHBhaXJzIFBhaXJzIHRvIGFkZCB0byB0aGlzIHRyZWUuIElmIHRoZXJlIGFyZSBkdXBsaWNhdGUga2V5cyxcclxuICAgICAqICAgICAgICBsYXRlciBwYWlycyBjdXJyZW50bHkgb3ZlcndyaXRlIGVhcmxpZXIgb25lcyAoZS5nLiBbWzAsMV0sWzAsN11dXHJcbiAgICAgKiAgICAgICAgYXNzb2NpYXRlcyAwIHdpdGggNy4pXHJcbiAgICAgKiBAcGFyYW0gb3ZlcndyaXRlIFdoZXRoZXIgdG8gb3ZlcndyaXRlIHBhaXJzIHRoYXQgYWxyZWFkeSBleGlzdCAoaWYgZmFsc2UsXHJcbiAgICAgKiAgICAgICAgcGFpcnNbaV0gaXMgaWdub3JlZCB3aGVuIHRoZSBrZXkgcGFpcnNbaV1bMF0gYWxyZWFkeSBleGlzdHMuKVxyXG4gICAgICogQHJldHVybnMgVGhlIG51bWJlciBvZiBwYWlycyBhZGRlZCB0byB0aGUgY29sbGVjdGlvbi5cclxuICAgICAqIEBkZXNjcmlwdGlvbiBDb21wdXRhdGlvbmFsIGNvbXBsZXhpdHk6IE8ocGFpcnMubGVuZ3RoICogbG9nKHNpemUgKyBwYWlycy5sZW5ndGgpKVxyXG4gICAgICovXHJcbiAgICBCVHJlZS5wcm90b3R5cGUuc2V0UGFpcnMgPSBmdW5jdGlvbiAocGFpcnMsIG92ZXJ3cml0ZSkge1xyXG4gICAgICAgIHZhciBhZGRlZCA9IDA7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYWlycy5sZW5ndGg7IGkrKylcclxuICAgICAgICAgICAgaWYgKHRoaXMuc2V0KHBhaXJzW2ldWzBdLCBwYWlyc1tpXVsxXSwgb3ZlcndyaXRlKSlcclxuICAgICAgICAgICAgICAgIGFkZGVkKys7XHJcbiAgICAgICAgcmV0dXJuIGFkZGVkO1xyXG4gICAgfTtcclxuICAgIC8qKlxyXG4gICAgICogU2NhbnMgdGhlIHNwZWNpZmllZCByYW5nZSBvZiBrZXlzLCBpbiBhc2NlbmRpbmcgb3JkZXIgYnkga2V5LlxyXG4gICAgICogTm90ZTogdGhlIGNhbGxiYWNrIGBvbkZvdW5kYCBtdXN0IG5vdCBpbnNlcnQgb3IgcmVtb3ZlIGl0ZW1zIGluIHRoZVxyXG4gICAgICogY29sbGVjdGlvbi4gRG9pbmcgc28gbWF5IGNhdXNlIGluY29ycmVjdCBkYXRhIHRvIGJlIHNlbnQgdG8gdGhlXHJcbiAgICAgKiBjYWxsYmFjayBhZnRlcndhcmQuXHJcbiAgICAgKiBAcGFyYW0gbG93IFRoZSBmaXJzdCBrZXkgc2Nhbm5lZCB3aWxsIGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBgbG93YC5cclxuICAgICAqIEBwYXJhbSBoaWdoIFNjYW5uaW5nIHN0b3BzIHdoZW4gYSBrZXkgbGFyZ2VyIHRoYW4gdGhpcyBpcyByZWFjaGVkLlxyXG4gICAgICogQHBhcmFtIGluY2x1ZGVIaWdoIElmIHRoZSBgaGlnaGAga2V5IGlzIHByZXNlbnQsIGBvbkZvdW5kYCBpcyBjYWxsZWQgZm9yXHJcbiAgICAgKiAgICAgICAgdGhhdCBmaW5hbCBwYWlyIGlmIGFuZCBvbmx5IGlmIHRoaXMgcGFyYW1ldGVyIGlzIHRydWUuXHJcbiAgICAgKiBAcGFyYW0gb25Gb3VuZCBBIGZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIGZvciBlYWNoIGtleS12YWx1ZSBwYWlyLiBUaGlzXHJcbiAgICAgKiAgICAgICAgZnVuY3Rpb24gY2FuIHJldHVybiB7YnJlYWs6Un0gdG8gc3RvcCBlYXJseSB3aXRoIHJlc3VsdCBSLlxyXG4gICAgICogQHBhcmFtIGluaXRpYWxDb3VudGVyIEluaXRpYWwgdGhpcmQgYXJndW1lbnQgb2Ygb25Gb3VuZC4gVGhpcyB2YWx1ZVxyXG4gICAgICogICAgICAgIGluY3JlYXNlcyBieSBvbmUgZWFjaCB0aW1lIGBvbkZvdW5kYCBpcyBjYWxsZWQuIERlZmF1bHQ6IDBcclxuICAgICAqIEByZXR1cm5zIFRoZSBudW1iZXIgb2YgdmFsdWVzIGZvdW5kLCBvciBSIGlmIHRoZSBjYWxsYmFjayByZXR1cm5lZFxyXG4gICAgICogICAgICAgIGB7YnJlYWs6Un1gIHRvIHN0b3AgZWFybHkuXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gQ29tcHV0YXRpb25hbCBjb21wbGV4aXR5OiBPKG51bWJlciBvZiBpdGVtcyBzY2FubmVkICsgbG9nIHNpemUpXHJcbiAgICAgKi9cclxuICAgIEJUcmVlLnByb3RvdHlwZS5mb3JSYW5nZSA9IGZ1bmN0aW9uIChsb3csIGhpZ2gsIGluY2x1ZGVIaWdoLCBvbkZvdW5kLCBpbml0aWFsQ291bnRlcikge1xyXG4gICAgICAgIHZhciByID0gdGhpcy5fcm9vdC5mb3JSYW5nZShsb3csIGhpZ2gsIGluY2x1ZGVIaWdoLCBmYWxzZSwgdGhpcywgaW5pdGlhbENvdW50ZXIgfHwgMCwgb25Gb3VuZCk7XHJcbiAgICAgICAgcmV0dXJuIHR5cGVvZiByID09PSBcIm51bWJlclwiID8gciA6IHIuYnJlYWs7XHJcbiAgICB9O1xyXG4gICAgLyoqXHJcbiAgICAgKiBTY2FucyBhbmQgcG90ZW50aWFsbHkgbW9kaWZpZXMgdmFsdWVzIGZvciBhIHN1YnNlcXVlbmNlIG9mIGtleXMuXHJcbiAgICAgKiBOb3RlOiB0aGUgY2FsbGJhY2sgYG9uRm91bmRgIHNob3VsZCBpZGVhbGx5IGJlIGEgcHVyZSBmdW5jdGlvbi5cclxuICAgICAqICAgU3BlY2ZpY2FsbHksIGl0IG11c3Qgbm90IGluc2VydCBpdGVtcywgY2FsbCBjbG9uZSgpLCBvciBjaGFuZ2VcclxuICAgICAqICAgdGhlIGNvbGxlY3Rpb24gZXhjZXB0IHZpYSByZXR1cm4gdmFsdWU7IG91dC1vZi1iYW5kIGVkaXRpbmcgbWF5XHJcbiAgICAgKiAgIGNhdXNlIGFuIGV4Y2VwdGlvbiBvciBtYXkgY2F1c2UgaW5jb3JyZWN0IGRhdGEgdG8gYmUgc2VudCB0b1xyXG4gICAgICogICB0aGUgY2FsbGJhY2sgKGR1cGxpY2F0ZSBvciBtaXNzZWQgaXRlbXMpLiBJdCBtdXN0IG5vdCBjYXVzZSBhXHJcbiAgICAgKiAgIGNsb25lKCkgb2YgdGhlIGNvbGxlY3Rpb24sIG90aGVyd2lzZSB0aGUgY2xvbmUgY291bGQgYmUgbW9kaWZpZWRcclxuICAgICAqICAgYnkgY2hhbmdlcyByZXF1ZXN0ZWQgYnkgdGhlIGNhbGxiYWNrLlxyXG4gICAgICogQHBhcmFtIGxvdyBUaGUgZmlyc3Qga2V5IHNjYW5uZWQgd2lsbCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gYGxvd2AuXHJcbiAgICAgKiBAcGFyYW0gaGlnaCBTY2FubmluZyBzdG9wcyB3aGVuIGEga2V5IGxhcmdlciB0aGFuIHRoaXMgaXMgcmVhY2hlZC5cclxuICAgICAqIEBwYXJhbSBpbmNsdWRlSGlnaCBJZiB0aGUgYGhpZ2hgIGtleSBpcyBwcmVzZW50LCBgb25Gb3VuZGAgaXMgY2FsbGVkIGZvclxyXG4gICAgICogICAgICAgIHRoYXQgZmluYWwgcGFpciBpZiBhbmQgb25seSBpZiB0aGlzIHBhcmFtZXRlciBpcyB0cnVlLlxyXG4gICAgICogQHBhcmFtIG9uRm91bmQgQSBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCBmb3IgZWFjaCBrZXktdmFsdWUgcGFpci4gVGhpc1xyXG4gICAgICogICAgICAgIGZ1bmN0aW9uIGNhbiByZXR1cm4gYHt2YWx1ZTp2fWAgdG8gY2hhbmdlIHRoZSB2YWx1ZSBhc3NvY2lhdGVkXHJcbiAgICAgKiAgICAgICAgd2l0aCB0aGUgY3VycmVudCBrZXksIGB7ZGVsZXRlOnRydWV9YCB0byBkZWxldGUgdGhlIGN1cnJlbnQgcGFpcixcclxuICAgICAqICAgICAgICBge2JyZWFrOlJ9YCB0byBzdG9wIGVhcmx5IHdpdGggcmVzdWx0IFIsIG9yIGl0IGNhbiByZXR1cm4gbm90aGluZ1xyXG4gICAgICogICAgICAgICh1bmRlZmluZWQgb3Ige30pIHRvIGNhdXNlIG5vIGVmZmVjdCBhbmQgY29udGludWUgaXRlcmF0aW5nLlxyXG4gICAgICogICAgICAgIGB7YnJlYWs6Un1gIGNhbiBiZSBjb21iaW5lZCB3aXRoIG9uZSBvZiB0aGUgb3RoZXIgdHdvIGNvbW1hbmRzLlxyXG4gICAgICogICAgICAgIFRoZSB0aGlyZCBhcmd1bWVudCBgY291bnRlcmAgaXMgdGhlIG51bWJlciBvZiBpdGVtcyBpdGVyYXRlZFxyXG4gICAgICogICAgICAgIHByZXZpb3VzbHk7IGl0IGVxdWFscyAwIHdoZW4gYG9uRm91bmRgIGlzIGNhbGxlZCB0aGUgZmlyc3QgdGltZS5cclxuICAgICAqIEByZXR1cm5zIFRoZSBudW1iZXIgb2YgdmFsdWVzIHNjYW5uZWQsIG9yIFIgaWYgdGhlIGNhbGxiYWNrIHJldHVybmVkXHJcbiAgICAgKiAgICAgICAgYHticmVhazpSfWAgdG8gc3RvcCBlYXJseS5cclxuICAgICAqIEBkZXNjcmlwdGlvblxyXG4gICAgICogICBDb21wdXRhdGlvbmFsIGNvbXBsZXhpdHk6IE8obnVtYmVyIG9mIGl0ZW1zIHNjYW5uZWQgKyBsb2cgc2l6ZSlcclxuICAgICAqICAgTm90ZTogaWYgdGhlIHRyZWUgaGFzIGJlZW4gY2xvbmVkIHdpdGggY2xvbmUoKSwgYW55IHNoYXJlZFxyXG4gICAgICogICBub2RlcyBhcmUgY29waWVkIGJlZm9yZSBgb25Gb3VuZGAgaXMgY2FsbGVkLiBUaGlzIHRha2VzIE8obikgdGltZVxyXG4gICAgICogICB3aGVyZSBuIGlzIHByb3BvcnRpb25hbCB0byB0aGUgYW1vdW50IG9mIHNoYXJlZCBkYXRhIHNjYW5uZWQuXHJcbiAgICAgKi9cclxuICAgIEJUcmVlLnByb3RvdHlwZS5lZGl0UmFuZ2UgPSBmdW5jdGlvbiAobG93LCBoaWdoLCBpbmNsdWRlSGlnaCwgb25Gb3VuZCwgaW5pdGlhbENvdW50ZXIpIHtcclxuICAgICAgICB2YXIgcm9vdCA9IHRoaXMuX3Jvb3Q7XHJcbiAgICAgICAgaWYgKHJvb3QuaXNTaGFyZWQpXHJcbiAgICAgICAgICAgIHRoaXMuX3Jvb3QgPSByb290ID0gcm9vdC5jbG9uZSgpO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHZhciByID0gcm9vdC5mb3JSYW5nZShsb3csIGhpZ2gsIGluY2x1ZGVIaWdoLCB0cnVlLCB0aGlzLCBpbml0aWFsQ291bnRlciB8fCAwLCBvbkZvdW5kKTtcclxuICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiByID09PSBcIm51bWJlclwiID8gciA6IHIuYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZpbmFsbHkge1xyXG4gICAgICAgICAgICB2YXIgaXNTaGFyZWQgPSB2b2lkIDA7XHJcbiAgICAgICAgICAgIHdoaWxlIChyb290LmtleXMubGVuZ3RoIDw9IDEgJiYgIXJvb3QuaXNMZWFmKSB7XHJcbiAgICAgICAgICAgICAgICBpc1NoYXJlZCB8fCAoaXNTaGFyZWQgPSByb290LmlzU2hhcmVkKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3Jvb3QgPSByb290ID0gcm9vdC5rZXlzLmxlbmd0aCA9PT0gMCA/IEVtcHR5TGVhZiA6XHJcbiAgICAgICAgICAgICAgICAgICAgcm9vdC5jaGlsZHJlblswXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBJZiBhbnkgYW5jZXN0b3Igb2YgdGhlIG5ldyByb290IHdhcyBzaGFyZWQsIHRoZSBuZXcgcm9vdCBtdXN0IGFsc28gYmUgc2hhcmVkXHJcbiAgICAgICAgICAgIGlmIChpc1NoYXJlZCkge1xyXG4gICAgICAgICAgICAgICAgcm9vdC5pc1NoYXJlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgLyoqIFNhbWUgYXMgYGVkaXRSYW5nZWAgZXhjZXB0IHRoYXQgdGhlIGNhbGxiYWNrIGlzIGNhbGxlZCBmb3IgYWxsIHBhaXJzLiAqL1xyXG4gICAgQlRyZWUucHJvdG90eXBlLmVkaXRBbGwgPSBmdW5jdGlvbiAob25Gb3VuZCwgaW5pdGlhbENvdW50ZXIpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5lZGl0UmFuZ2UodGhpcy5taW5LZXkoKSwgdGhpcy5tYXhLZXkoKSwgdHJ1ZSwgb25Gb3VuZCwgaW5pdGlhbENvdW50ZXIpO1xyXG4gICAgfTtcclxuICAgIC8qKlxyXG4gICAgICogUmVtb3ZlcyBhIHJhbmdlIG9mIGtleS12YWx1ZSBwYWlycyBmcm9tIHRoZSBCKyB0cmVlLlxyXG4gICAgICogQHBhcmFtIGxvdyBUaGUgZmlyc3Qga2V5IHNjYW5uZWQgd2lsbCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gYGxvd2AuXHJcbiAgICAgKiBAcGFyYW0gaGlnaCBTY2FubmluZyBzdG9wcyB3aGVuIGEga2V5IGxhcmdlciB0aGFuIHRoaXMgaXMgcmVhY2hlZC5cclxuICAgICAqIEBwYXJhbSBpbmNsdWRlSGlnaCBTcGVjaWZpZXMgd2hldGhlciB0aGUgYGhpZ2hgIGtleSwgaWYgcHJlc2VudCwgaXMgZGVsZXRlZC5cclxuICAgICAqIEByZXR1cm5zIFRoZSBudW1iZXIgb2Yga2V5LXZhbHVlIHBhaXJzIHRoYXQgd2VyZSBkZWxldGVkLlxyXG4gICAgICogQGRlc2NyaXB0aW9uIENvbXB1dGF0aW9uYWwgY29tcGxleGl0eTogTyhsb2cgc2l6ZSArIG51bWJlciBvZiBpdGVtcyBkZWxldGVkKVxyXG4gICAgICovXHJcbiAgICBCVHJlZS5wcm90b3R5cGUuZGVsZXRlUmFuZ2UgPSBmdW5jdGlvbiAobG93LCBoaWdoLCBpbmNsdWRlSGlnaCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmVkaXRSYW5nZShsb3csIGhpZ2gsIGluY2x1ZGVIaWdoLCBEZWxldGVSYW5nZSk7XHJcbiAgICB9O1xyXG4gICAgLyoqIERlbGV0ZXMgYSBzZXJpZXMgb2Yga2V5cyBmcm9tIHRoZSBjb2xsZWN0aW9uLiAqL1xyXG4gICAgQlRyZWUucHJvdG90eXBlLmRlbGV0ZUtleXMgPSBmdW5jdGlvbiAoa2V5cykge1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCByID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspXHJcbiAgICAgICAgICAgIGlmICh0aGlzLmRlbGV0ZShrZXlzW2ldKSlcclxuICAgICAgICAgICAgICAgIHIrKztcclxuICAgICAgICByZXR1cm4gcjtcclxuICAgIH07XHJcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoQlRyZWUucHJvdG90eXBlLCBcImhlaWdodFwiLCB7XHJcbiAgICAgICAgLyoqIEdldHMgdGhlIGhlaWdodCBvZiB0aGUgdHJlZTogdGhlIG51bWJlciBvZiBpbnRlcm5hbCBub2RlcyBiZXR3ZWVuIHRoZVxyXG4gICAgICAgICAqICBCVHJlZSBvYmplY3QgYW5kIGl0cyBsZWFmIG5vZGVzICh6ZXJvIGlmIHRoZXJlIGFyZSBubyBpbnRlcm5hbCBub2RlcykuICovXHJcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIHZhciBub2RlID0gdGhpcy5fcm9vdDtcclxuICAgICAgICAgICAgdmFyIGhlaWdodCA9IC0xO1xyXG4gICAgICAgICAgICB3aGlsZSAobm9kZSkge1xyXG4gICAgICAgICAgICAgICAgaGVpZ2h0Kys7XHJcbiAgICAgICAgICAgICAgICBub2RlID0gbm9kZS5pc0xlYWYgPyB1bmRlZmluZWQgOiBub2RlLmNoaWxkcmVuWzBdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBoZWlnaHQ7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcclxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcclxuICAgIH0pO1xyXG4gICAgLyoqIE1ha2VzIHRoZSBvYmplY3QgcmVhZC1vbmx5IHRvIGVuc3VyZSBpdCBpcyBub3QgYWNjaWRlbnRhbGx5IG1vZGlmaWVkLlxyXG4gICAgICogIEZyZWV6aW5nIGRvZXMgbm90IGhhdmUgdG8gYmUgcGVybWFuZW50OyB1bmZyZWV6ZSgpIHJldmVyc2VzIHRoZSBlZmZlY3QuXHJcbiAgICAgKiAgVGhpcyBpcyBhY2NvbXBsaXNoZWQgYnkgcmVwbGFjaW5nIG11dGF0b3IgZnVuY3Rpb25zIHdpdGggYSBmdW5jdGlvblxyXG4gICAgICogIHRoYXQgdGhyb3dzIGFuIEVycm9yLiBDb21wYXJlZCB0byB1c2luZyBhIHByb3BlcnR5IChlLmcuIHRoaXMuaXNGcm96ZW4pXHJcbiAgICAgKiAgdGhpcyBpbXBsZW1lbnRhdGlvbiBnaXZlcyBiZXR0ZXIgcGVyZm9ybWFuY2UgaW4gbm9uLWZyb3plbiBCVHJlZXMuXHJcbiAgICAgKi9cclxuICAgIEJUcmVlLnByb3RvdHlwZS5mcmVlemUgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdmFyIHQgPSB0aGlzO1xyXG4gICAgICAgIC8vIE5vdGU6IGFsbCBvdGhlciBtdXRhdG9ycyB1bHRpbWF0ZWx5IGNhbGwgc2V0KCkgb3IgZWRpdFJhbmdlKCkgXHJcbiAgICAgICAgLy8gICAgICAgc28gd2UgZG9uJ3QgbmVlZCB0byBvdmVycmlkZSB0aG9zZSBvdGhlcnMuXHJcbiAgICAgICAgdC5jbGVhciA9IHQuc2V0ID0gdC5lZGl0UmFuZ2UgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkF0dGVtcHRlZCB0byBtb2RpZnkgYSBmcm96ZW4gQlRyZWVcIik7XHJcbiAgICAgICAgfTtcclxuICAgIH07XHJcbiAgICAvKiogRW5zdXJlcyBtdXRhdGlvbnMgYXJlIGFsbG93ZWQsIHJldmVyc2luZyB0aGUgZWZmZWN0IG9mIGZyZWV6ZSgpLiAqL1xyXG4gICAgQlRyZWUucHJvdG90eXBlLnVuZnJlZXplID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIC8vIEB0cy1pZ25vcmUgXCJUaGUgb3BlcmFuZCBvZiBhICdkZWxldGUnIG9wZXJhdG9yIG11c3QgYmUgb3B0aW9uYWwuXCJcclxuICAgICAgICAvLyAgICAgICAgICAgICh3cm9uZzogZGVsZXRlIGRvZXMgbm90IGFmZmVjdCB0aGUgcHJvdG90eXBlLilcclxuICAgICAgICBkZWxldGUgdGhpcy5jbGVhcjtcclxuICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgZGVsZXRlIHRoaXMuc2V0O1xyXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICBkZWxldGUgdGhpcy5lZGl0UmFuZ2U7XHJcbiAgICB9O1xyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEJUcmVlLnByb3RvdHlwZSwgXCJpc0Zyb3plblwiLCB7XHJcbiAgICAgICAgLyoqIFJldHVybnMgdHJ1ZSBpZiB0aGUgdHJlZSBhcHBlYXJzIHRvIGJlIGZyb3plbi4gKi9cclxuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaGFzT3duUHJvcGVydHkoJ2VkaXRSYW5nZScpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXHJcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXHJcbiAgICB9KTtcclxuICAgIC8qKiBTY2FucyB0aGUgdHJlZSBmb3Igc2lnbnMgb2Ygc2VyaW91cyBidWdzIChlLmcuIHRoaXMuc2l6ZSBkb2Vzbid0IG1hdGNoXHJcbiAgICAgKiAgbnVtYmVyIG9mIGVsZW1lbnRzLCBpbnRlcm5hbCBub2RlcyBub3QgY2FjaGluZyBtYXggZWxlbWVudCBwcm9wZXJseS4uLilcclxuICAgICAqICBDb21wdXRhdGlvbmFsIGNvbXBsZXhpdHk6IE8obnVtYmVyIG9mIG5vZGVzKSwgaS5lLiBPKHNpemUpLiBUaGlzIG1ldGhvZFxyXG4gICAgICogIHNraXBzIHRoZSBtb3N0IGV4cGVuc2l2ZSB0ZXN0IC0gd2hldGhlciBhbGwga2V5cyBhcmUgc29ydGVkIC0gYnV0IGl0XHJcbiAgICAgKiAgZG9lcyBjaGVjayB0aGF0IG1heEtleSgpIG9mIHRoZSBjaGlsZHJlbiBvZiBpbnRlcm5hbCBub2RlcyBhcmUgc29ydGVkLiAqL1xyXG4gICAgQlRyZWUucHJvdG90eXBlLmNoZWNrVmFsaWQgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdmFyIHNpemUgPSB0aGlzLl9yb290LmNoZWNrVmFsaWQoMCwgdGhpcywgMCk7XHJcbiAgICAgICAgY2hlY2soc2l6ZSA9PT0gdGhpcy5zaXplLCBcInNpemUgbWlzbWF0Y2g6IGNvdW50ZWQgXCIsIHNpemUsIFwiYnV0IHN0b3JlZFwiLCB0aGlzLnNpemUpO1xyXG4gICAgfTtcclxuICAgIHJldHVybiBCVHJlZTtcclxufSgpKTtcclxuZXhwb3J0cy5kZWZhdWx0ID0gQlRyZWU7XHJcbi8qKiBBIFR5cGVTY3JpcHQgaGVscGVyIGZ1bmN0aW9uIHRoYXQgc2ltcGx5IHJldHVybnMgaXRzIGFyZ3VtZW50LCB0eXBlZCBhc1xyXG4gKiAgYElTb3J0ZWRTZXQ8Sz5gIGlmIHRoZSBCVHJlZSBpbXBsZW1lbnRzIGl0LCBhcyBpdCBkb2VzIGlmIGBWIGV4dGVuZHMgdW5kZWZpbmVkYC5cclxuICogIElmIGBWYCBjYW5ub3QgYmUgYHVuZGVmaW5lZGAsIGl0IHJldHVybnMgYHVua25vd25gIGluc3RlYWQuIE9yIGF0IGxlYXN0LCB0aGF0XHJcbiAqICB3YXMgdGhlIGludGVudGlvbiwgYnV0IFR5cGVTY3JpcHQgaXMgYWN0aW5nIHdlaXJkIGFuZCBtYXkgcmV0dXJuIGBJU29ydGVkU2V0PEs+YFxyXG4gKiAgZXZlbiBpZiBgVmAgY2FuJ3QgYmUgYHVuZGVmaW5lZGAgKGRpc2N1c3Npb246IGJ0cmVlLXR5cGVzY3JpcHQgaXNzdWUgIzE0KSAqL1xyXG5mdW5jdGlvbiBhc1NldChidHJlZSkge1xyXG4gICAgcmV0dXJuIGJ0cmVlO1xyXG59XHJcbmV4cG9ydHMuYXNTZXQgPSBhc1NldDtcclxuaWYgKFN5bWJvbCAmJiBTeW1ib2wuaXRlcmF0b3IpIC8vIGl0ZXJhdG9yIGlzIGVxdWl2YWxlbnQgdG8gZW50cmllcygpXHJcbiAgICBCVHJlZS5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXSA9IEJUcmVlLnByb3RvdHlwZS5lbnRyaWVzO1xyXG5CVHJlZS5wcm90b3R5cGUud2hlcmUgPSBCVHJlZS5wcm90b3R5cGUuZmlsdGVyO1xyXG5CVHJlZS5wcm90b3R5cGUuc2V0UmFuZ2UgPSBCVHJlZS5wcm90b3R5cGUuc2V0UGFpcnM7XHJcbkJUcmVlLnByb3RvdHlwZS5hZGQgPSBCVHJlZS5wcm90b3R5cGUuc2V0OyAvLyBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIElTZXRTaW5rPEs+XHJcbmZ1bmN0aW9uIGl0ZXJhdG9yKG5leHQpIHtcclxuICAgIGlmIChuZXh0ID09PSB2b2lkIDApIHsgbmV4dCA9IChmdW5jdGlvbiAoKSB7IHJldHVybiAoeyBkb25lOiB0cnVlLCB2YWx1ZTogdW5kZWZpbmVkIH0pOyB9KTsgfVxyXG4gICAgdmFyIHJlc3VsdCA9IHsgbmV4dDogbmV4dCB9O1xyXG4gICAgaWYgKFN5bWJvbCAmJiBTeW1ib2wuaXRlcmF0b3IpXHJcbiAgICAgICAgcmVzdWx0W1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9O1xyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxufVxyXG4vKiogTGVhZiBub2RlIC8gYmFzZSBjbGFzcy4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXHJcbnZhciBCTm9kZSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcclxuICAgIGZ1bmN0aW9uIEJOb2RlKGtleXMsIHZhbHVlcykge1xyXG4gICAgICAgIGlmIChrZXlzID09PSB2b2lkIDApIHsga2V5cyA9IFtdOyB9XHJcbiAgICAgICAgdGhpcy5rZXlzID0ga2V5cztcclxuICAgICAgICB0aGlzLnZhbHVlcyA9IHZhbHVlcyB8fCB1bmRlZlZhbHM7XHJcbiAgICAgICAgdGhpcy5pc1NoYXJlZCA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShCTm9kZS5wcm90b3R5cGUsIFwiaXNMZWFmXCIsIHtcclxuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuY2hpbGRyZW4gPT09IHVuZGVmaW5lZDsgfSxcclxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcclxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcclxuICAgIH0pO1xyXG4gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbiAgICAvLyBTaGFyZWQgbWV0aG9kcyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuICAgIEJOb2RlLnByb3RvdHlwZS5tYXhLZXkgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMua2V5c1t0aGlzLmtleXMubGVuZ3RoIC0gMV07XHJcbiAgICB9O1xyXG4gICAgLy8gSWYga2V5IG5vdCBmb3VuZCwgcmV0dXJucyBpXmZhaWxYb3Igd2hlcmUgaSBpcyB0aGUgaW5zZXJ0aW9uIGluZGV4LlxyXG4gICAgLy8gQ2FsbGVycyB0aGF0IGRvbid0IGNhcmUgd2hldGhlciB0aGVyZSB3YXMgYSBtYXRjaCB3aWxsIHNldCBmYWlsWG9yPTAuXHJcbiAgICBCTm9kZS5wcm90b3R5cGUuaW5kZXhPZiA9IGZ1bmN0aW9uIChrZXksIGZhaWxYb3IsIGNtcCkge1xyXG4gICAgICAgIHZhciBrZXlzID0gdGhpcy5rZXlzO1xyXG4gICAgICAgIHZhciBsbyA9IDAsIGhpID0ga2V5cy5sZW5ndGgsIG1pZCA9IGhpID4+IDE7XHJcbiAgICAgICAgd2hpbGUgKGxvIDwgaGkpIHtcclxuICAgICAgICAgICAgdmFyIGMgPSBjbXAoa2V5c1ttaWRdLCBrZXkpO1xyXG4gICAgICAgICAgICBpZiAoYyA8IDApXHJcbiAgICAgICAgICAgICAgICBsbyA9IG1pZCArIDE7XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGMgPiAwKSAvLyBrZXkgPCBrZXlzW21pZF1cclxuICAgICAgICAgICAgICAgIGhpID0gbWlkO1xyXG4gICAgICAgICAgICBlbHNlIGlmIChjID09PSAwKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG1pZDtcclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvLyBjIGlzIE5hTiBvciBvdGhlcndpc2UgaW52YWxpZFxyXG4gICAgICAgICAgICAgICAgaWYgKGtleSA9PT0ga2V5KSAvLyBhdCBsZWFzdCB0aGUgc2VhcmNoIGtleSBpcyBub3QgTmFOXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGtleXMubGVuZ3RoO1xyXG4gICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkJUcmVlOiBOYU4gd2FzIHVzZWQgYXMgYSBrZXlcIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbWlkID0gKGxvICsgaGkpID4+IDE7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBtaWQgXiBmYWlsWG9yO1xyXG4gICAgICAgIC8vIFVucm9sbGVkIHZlcnNpb246IGJlbmNobWFya3Mgc2hvdyBzYW1lIHNwZWVkLCBub3Qgd29ydGggdXNpbmdcclxuICAgICAgICAvKnZhciBpID0gMSwgYzogbnVtYmVyID0gMCwgc3VtID0gMDtcclxuICAgICAgICBpZiAoa2V5cy5sZW5ndGggPj0gNCkge1xyXG4gICAgICAgICAgaSA9IDM7XHJcbiAgICAgICAgICBpZiAoa2V5cy5sZW5ndGggPj0gOCkge1xyXG4gICAgICAgICAgICBpID0gNztcclxuICAgICAgICAgICAgaWYgKGtleXMubGVuZ3RoID49IDE2KSB7XHJcbiAgICAgICAgICAgICAgaSA9IDE1O1xyXG4gICAgICAgICAgICAgIGlmIChrZXlzLmxlbmd0aCA+PSAzMikge1xyXG4gICAgICAgICAgICAgICAgaSA9IDMxO1xyXG4gICAgICAgICAgICAgICAgaWYgKGtleXMubGVuZ3RoID49IDY0KSB7XHJcbiAgICAgICAgICAgICAgICAgIGkgPSAxMjc7XHJcbiAgICAgICAgICAgICAgICAgIGkgKz0gKGMgPSBpIDwga2V5cy5sZW5ndGggPyBjbXAoa2V5c1tpXSwga2V5KSA6IDEpIDwgMCA/IDY0IDogLTY0O1xyXG4gICAgICAgICAgICAgICAgICBzdW0gKz0gYztcclxuICAgICAgICAgICAgICAgICAgaSArPSAoYyA9IGkgPCBrZXlzLmxlbmd0aCA/IGNtcChrZXlzW2ldLCBrZXkpIDogMSkgPCAwID8gMzIgOiAtMzI7XHJcbiAgICAgICAgICAgICAgICAgIHN1bSArPSBjO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaSArPSAoYyA9IGkgPCBrZXlzLmxlbmd0aCA/IGNtcChrZXlzW2ldLCBrZXkpIDogMSkgPCAwID8gMTYgOiAtMTY7XHJcbiAgICAgICAgICAgICAgICBzdW0gKz0gYztcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaSArPSAoYyA9IGkgPCBrZXlzLmxlbmd0aCA/IGNtcChrZXlzW2ldLCBrZXkpIDogMSkgPCAwID8gOCA6IC04O1xyXG4gICAgICAgICAgICAgIHN1bSArPSBjO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGkgKz0gKGMgPSBpIDwga2V5cy5sZW5ndGggPyBjbXAoa2V5c1tpXSwga2V5KSA6IDEpIDwgMCA/IDQgOiAtNDtcclxuICAgICAgICAgICAgc3VtICs9IGM7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpICs9IChjID0gaSA8IGtleXMubGVuZ3RoID8gY21wKGtleXNbaV0sIGtleSkgOiAxKSA8IDAgPyAyIDogLTI7XHJcbiAgICAgICAgICBzdW0gKz0gYztcclxuICAgICAgICB9XHJcbiAgICAgICAgaSArPSAoYyA9IGkgPCBrZXlzLmxlbmd0aCA/IGNtcChrZXlzW2ldLCBrZXkpIDogMSkgPCAwID8gMSA6IC0xO1xyXG4gICAgICAgIGMgPSBpIDwga2V5cy5sZW5ndGggPyBjbXAoa2V5c1tpXSwga2V5KSA6IDE7XHJcbiAgICAgICAgc3VtICs9IGM7XHJcbiAgICAgICAgaWYgKGMgPCAwKSB7XHJcbiAgICAgICAgICArK2k7XHJcbiAgICAgICAgICBjID0gaSA8IGtleXMubGVuZ3RoID8gY21wKGtleXNbaV0sIGtleSkgOiAxO1xyXG4gICAgICAgICAgc3VtICs9IGM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChzdW0gIT09IHN1bSkge1xyXG4gICAgICAgICAgaWYgKGtleSA9PT0ga2V5KSAvLyBhdCBsZWFzdCB0aGUgc2VhcmNoIGtleSBpcyBub3QgTmFOXHJcbiAgICAgICAgICAgIHJldHVybiBrZXlzLmxlbmd0aCBeIGZhaWxYb3I7XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkJUcmVlOiBOYU4gd2FzIHVzZWQgYXMgYSBrZXlcIik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBjID09PSAwID8gaSA6IGkgXiBmYWlsWG9yOyovXHJcbiAgICB9O1xyXG4gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuICAgIC8vIExlYWYgTm9kZTogbWlzYyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbiAgICBCTm9kZS5wcm90b3R5cGUubWluS2V5ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmtleXNbMF07XHJcbiAgICB9O1xyXG4gICAgQk5vZGUucHJvdG90eXBlLm1pblBhaXIgPSBmdW5jdGlvbiAocmV1c2VkQXJyYXkpIHtcclxuICAgICAgICBpZiAodGhpcy5rZXlzLmxlbmd0aCA9PT0gMClcclxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgICAgICByZXVzZWRBcnJheVswXSA9IHRoaXMua2V5c1swXTtcclxuICAgICAgICByZXVzZWRBcnJheVsxXSA9IHRoaXMudmFsdWVzWzBdO1xyXG4gICAgICAgIHJldHVybiByZXVzZWRBcnJheTtcclxuICAgIH07XHJcbiAgICBCTm9kZS5wcm90b3R5cGUubWF4UGFpciA9IGZ1bmN0aW9uIChyZXVzZWRBcnJheSkge1xyXG4gICAgICAgIGlmICh0aGlzLmtleXMubGVuZ3RoID09PSAwKVxyXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgIHZhciBsYXN0SW5kZXggPSB0aGlzLmtleXMubGVuZ3RoIC0gMTtcclxuICAgICAgICByZXVzZWRBcnJheVswXSA9IHRoaXMua2V5c1tsYXN0SW5kZXhdO1xyXG4gICAgICAgIHJldXNlZEFycmF5WzFdID0gdGhpcy52YWx1ZXNbbGFzdEluZGV4XTtcclxuICAgICAgICByZXR1cm4gcmV1c2VkQXJyYXk7XHJcbiAgICB9O1xyXG4gICAgQk5vZGUucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHZhciB2ID0gdGhpcy52YWx1ZXM7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBCTm9kZSh0aGlzLmtleXMuc2xpY2UoMCksIHYgPT09IHVuZGVmVmFscyA/IHYgOiB2LnNsaWNlKDApKTtcclxuICAgIH07XHJcbiAgICBCTm9kZS5wcm90b3R5cGUuZ3JlZWR5Q2xvbmUgPSBmdW5jdGlvbiAoZm9yY2UpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pc1NoYXJlZCAmJiAhZm9yY2UgPyB0aGlzIDogdGhpcy5jbG9uZSgpO1xyXG4gICAgfTtcclxuICAgIEJOb2RlLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAoa2V5LCBkZWZhdWx0VmFsdWUsIHRyZWUpIHtcclxuICAgICAgICB2YXIgaSA9IHRoaXMuaW5kZXhPZihrZXksIC0xLCB0cmVlLl9jb21wYXJlKTtcclxuICAgICAgICByZXR1cm4gaSA8IDAgPyBkZWZhdWx0VmFsdWUgOiB0aGlzLnZhbHVlc1tpXTtcclxuICAgIH07XHJcbiAgICBCTm9kZS5wcm90b3R5cGUuZ2V0UGFpck9yTmV4dExvd2VyID0gZnVuY3Rpb24gKGtleSwgY29tcGFyZSwgaW5jbHVzaXZlLCByZXVzZWRBcnJheSkge1xyXG4gICAgICAgIHZhciBpID0gdGhpcy5pbmRleE9mKGtleSwgLTEsIGNvbXBhcmUpO1xyXG4gICAgICAgIHZhciBpbmRleE9yTG93ZXIgPSBpIDwgMCA/IH5pIC0gMSA6IChpbmNsdXNpdmUgPyBpIDogaSAtIDEpO1xyXG4gICAgICAgIGlmIChpbmRleE9yTG93ZXIgPj0gMCkge1xyXG4gICAgICAgICAgICByZXVzZWRBcnJheVswXSA9IHRoaXMua2V5c1tpbmRleE9yTG93ZXJdO1xyXG4gICAgICAgICAgICByZXVzZWRBcnJheVsxXSA9IHRoaXMudmFsdWVzW2luZGV4T3JMb3dlcl07XHJcbiAgICAgICAgICAgIHJldHVybiByZXVzZWRBcnJheTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIH07XHJcbiAgICBCTm9kZS5wcm90b3R5cGUuZ2V0UGFpck9yTmV4dEhpZ2hlciA9IGZ1bmN0aW9uIChrZXksIGNvbXBhcmUsIGluY2x1c2l2ZSwgcmV1c2VkQXJyYXkpIHtcclxuICAgICAgICB2YXIgaSA9IHRoaXMuaW5kZXhPZihrZXksIC0xLCBjb21wYXJlKTtcclxuICAgICAgICB2YXIgaW5kZXhPckxvd2VyID0gaSA8IDAgPyB+aSA6IChpbmNsdXNpdmUgPyBpIDogaSArIDEpO1xyXG4gICAgICAgIHZhciBrZXlzID0gdGhpcy5rZXlzO1xyXG4gICAgICAgIGlmIChpbmRleE9yTG93ZXIgPCBrZXlzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICByZXVzZWRBcnJheVswXSA9IGtleXNbaW5kZXhPckxvd2VyXTtcclxuICAgICAgICAgICAgcmV1c2VkQXJyYXlbMV0gPSB0aGlzLnZhbHVlc1tpbmRleE9yTG93ZXJdO1xyXG4gICAgICAgICAgICByZXR1cm4gcmV1c2VkQXJyYXk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICB9O1xyXG4gICAgQk5vZGUucHJvdG90eXBlLmNoZWNrVmFsaWQgPSBmdW5jdGlvbiAoZGVwdGgsIHRyZWUsIGJhc2VJbmRleCkge1xyXG4gICAgICAgIHZhciBrTCA9IHRoaXMua2V5cy5sZW5ndGgsIHZMID0gdGhpcy52YWx1ZXMubGVuZ3RoO1xyXG4gICAgICAgIGNoZWNrKHRoaXMudmFsdWVzID09PSB1bmRlZlZhbHMgPyBrTCA8PSB2TCA6IGtMID09PSB2TCwgXCJrZXlzL3ZhbHVlcyBsZW5ndGggbWlzbWF0Y2g6IGRlcHRoXCIsIGRlcHRoLCBcIndpdGggbGVuZ3Roc1wiLCBrTCwgdkwsIFwiYW5kIGJhc2VJbmRleFwiLCBiYXNlSW5kZXgpO1xyXG4gICAgICAgIC8vIE5vdGU6IHdlIGRvbid0IGNoZWNrIGZvciBcIm5vZGUgdG9vIHNtYWxsXCIgYmVjYXVzZSBzb21ldGltZXMgYSBub2RlXHJcbiAgICAgICAgLy8gY2FuIGxlZ2l0aW1hdGVseSBoYXZlIHNpemUgMS4gVGhpcyBvY2N1cnMgaWYgdGhlcmUgaXMgYSBiYXRjaCBcclxuICAgICAgICAvLyBkZWxldGlvbiwgbGVhdmluZyBhIG5vZGUgb2Ygc2l6ZSAxLCBhbmQgdGhlIHNpYmxpbmdzIGFyZSBmdWxsIHNvXHJcbiAgICAgICAgLy8gaXQgY2FuJ3QgYmUgbWVyZ2VkIHdpdGggYWRqYWNlbnQgbm9kZXMuIEhvd2V2ZXIsIHRoZSBwYXJlbnQgd2lsbFxyXG4gICAgICAgIC8vIHZlcmlmeSB0aGF0IHRoZSBhdmVyYWdlIG5vZGUgc2l6ZSBpcyBhdCBsZWFzdCBoYWxmIG9mIHRoZSBtYXhpbXVtLlxyXG4gICAgICAgIGNoZWNrKGRlcHRoID09IDAgfHwga0wgPiAwLCBcImVtcHR5IGxlYWYgYXQgZGVwdGhcIiwgZGVwdGgsIFwiYW5kIGJhc2VJbmRleFwiLCBiYXNlSW5kZXgpO1xyXG4gICAgICAgIHJldHVybiBrTDtcclxuICAgIH07XHJcbiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG4gICAgLy8gTGVhZiBOb2RlOiBzZXQgJiBub2RlIHNwbGl0dGluZyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuICAgIEJOb2RlLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbiAoa2V5LCB2YWx1ZSwgb3ZlcndyaXRlLCB0cmVlKSB7XHJcbiAgICAgICAgdmFyIGkgPSB0aGlzLmluZGV4T2Yoa2V5LCAtMSwgdHJlZS5fY29tcGFyZSk7XHJcbiAgICAgICAgaWYgKGkgPCAwKSB7XHJcbiAgICAgICAgICAgIC8vIGtleSBkb2VzIG5vdCBleGlzdCB5ZXRcclxuICAgICAgICAgICAgaSA9IH5pO1xyXG4gICAgICAgICAgICB0cmVlLl9zaXplKys7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmtleXMubGVuZ3RoIDwgdHJlZS5fbWF4Tm9kZVNpemUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmluc2VydEluTGVhZihpLCBrZXksIHZhbHVlLCB0cmVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIFRoaXMgbGVhZiBub2RlIGlzIGZ1bGwgYW5kIG11c3Qgc3BsaXRcclxuICAgICAgICAgICAgICAgIHZhciBuZXdSaWdodFNpYmxpbmcgPSB0aGlzLnNwbGl0T2ZmUmlnaHRTaWRlKCksIHRhcmdldCA9IHRoaXM7XHJcbiAgICAgICAgICAgICAgICBpZiAoaSA+IHRoaXMua2V5cy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICBpIC09IHRoaXMua2V5cy5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0ID0gbmV3UmlnaHRTaWJsaW5nO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGFyZ2V0Lmluc2VydEluTGVhZihpLCBrZXksIHZhbHVlLCB0cmVlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBuZXdSaWdodFNpYmxpbmc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIEtleSBhbHJlYWR5IGV4aXN0c1xyXG4gICAgICAgICAgICBpZiAob3ZlcndyaXRlICE9PSBmYWxzZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWlmeVZhbHVlcygpO1xyXG4gICAgICAgICAgICAgICAgLy8gdXN1YWxseSB0aGlzIGlzIGEgbm8tb3AsIGJ1dCBzb21lIHVzZXJzIG1heSB3aXNoIHRvIGVkaXQgdGhlIGtleVxyXG4gICAgICAgICAgICAgICAgdGhpcy5rZXlzW2ldID0ga2V5O1xyXG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZXNbaV0gPSB2YWx1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIEJOb2RlLnByb3RvdHlwZS5yZWlmeVZhbHVlcyA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBpZiAodGhpcy52YWx1ZXMgPT09IHVuZGVmVmFscylcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVzID0gdGhpcy52YWx1ZXMuc2xpY2UoMCwgdGhpcy5rZXlzLmxlbmd0aCk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVzO1xyXG4gICAgfTtcclxuICAgIEJOb2RlLnByb3RvdHlwZS5pbnNlcnRJbkxlYWYgPSBmdW5jdGlvbiAoaSwga2V5LCB2YWx1ZSwgdHJlZSkge1xyXG4gICAgICAgIHRoaXMua2V5cy5zcGxpY2UoaSwgMCwga2V5KTtcclxuICAgICAgICBpZiAodGhpcy52YWx1ZXMgPT09IHVuZGVmVmFscykge1xyXG4gICAgICAgICAgICB3aGlsZSAodW5kZWZWYWxzLmxlbmd0aCA8IHRyZWUuX21heE5vZGVTaXplKVxyXG4gICAgICAgICAgICAgICAgdW5kZWZWYWxzLnB1c2godW5kZWZpbmVkKTtcclxuICAgICAgICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZXMgPSB1bmRlZlZhbHMuc2xpY2UoMCwgdGhpcy5rZXlzLmxlbmd0aCAtIDEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMudmFsdWVzLnNwbGljZShpLCAwLCB2YWx1ZSk7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9O1xyXG4gICAgQk5vZGUucHJvdG90eXBlLnRha2VGcm9tUmlnaHQgPSBmdW5jdGlvbiAocmhzKSB7XHJcbiAgICAgICAgLy8gUmVtaW5kZXI6IHBhcmVudCBub2RlIG11c3QgdXBkYXRlIGl0cyBjb3B5IG9mIGtleSBmb3IgdGhpcyBub2RlXHJcbiAgICAgICAgLy8gYXNzZXJ0OiBuZWl0aGVyIG5vZGUgaXMgc2hhcmVkXHJcbiAgICAgICAgLy8gYXNzZXJ0IHJocy5rZXlzLmxlbmd0aCA+IChtYXhOb2RlU2l6ZS8yICYmIHRoaXMua2V5cy5sZW5ndGg8bWF4Tm9kZVNpemUpXHJcbiAgICAgICAgdmFyIHYgPSB0aGlzLnZhbHVlcztcclxuICAgICAgICBpZiAocmhzLnZhbHVlcyA9PT0gdW5kZWZWYWxzKSB7XHJcbiAgICAgICAgICAgIGlmICh2ICE9PSB1bmRlZlZhbHMpXHJcbiAgICAgICAgICAgICAgICB2LnB1c2godW5kZWZpbmVkKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHYgPSB0aGlzLnJlaWZ5VmFsdWVzKCk7XHJcbiAgICAgICAgICAgIHYucHVzaChyaHMudmFsdWVzLnNoaWZ0KCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmtleXMucHVzaChyaHMua2V5cy5zaGlmdCgpKTtcclxuICAgIH07XHJcbiAgICBCTm9kZS5wcm90b3R5cGUudGFrZUZyb21MZWZ0ID0gZnVuY3Rpb24gKGxocykge1xyXG4gICAgICAgIC8vIFJlbWluZGVyOiBwYXJlbnQgbm9kZSBtdXN0IHVwZGF0ZSBpdHMgY29weSBvZiBrZXkgZm9yIHRoaXMgbm9kZVxyXG4gICAgICAgIC8vIGFzc2VydDogbmVpdGhlciBub2RlIGlzIHNoYXJlZFxyXG4gICAgICAgIC8vIGFzc2VydCByaHMua2V5cy5sZW5ndGggPiAobWF4Tm9kZVNpemUvMiAmJiB0aGlzLmtleXMubGVuZ3RoPG1heE5vZGVTaXplKVxyXG4gICAgICAgIHZhciB2ID0gdGhpcy52YWx1ZXM7XHJcbiAgICAgICAgaWYgKGxocy52YWx1ZXMgPT09IHVuZGVmVmFscykge1xyXG4gICAgICAgICAgICBpZiAodiAhPT0gdW5kZWZWYWxzKVxyXG4gICAgICAgICAgICAgICAgdi51bnNoaWZ0KHVuZGVmaW5lZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB2ID0gdGhpcy5yZWlmeVZhbHVlcygpO1xyXG4gICAgICAgICAgICB2LnVuc2hpZnQobGhzLnZhbHVlcy5wb3AoKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMua2V5cy51bnNoaWZ0KGxocy5rZXlzLnBvcCgpKTtcclxuICAgIH07XHJcbiAgICBCTm9kZS5wcm90b3R5cGUuc3BsaXRPZmZSaWdodFNpZGUgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgLy8gUmVtaW5kZXI6IHBhcmVudCBub2RlIG11c3QgdXBkYXRlIGl0cyBjb3B5IG9mIGtleSBmb3IgdGhpcyBub2RlXHJcbiAgICAgICAgdmFyIGhhbGYgPSB0aGlzLmtleXMubGVuZ3RoID4+IDEsIGtleXMgPSB0aGlzLmtleXMuc3BsaWNlKGhhbGYpO1xyXG4gICAgICAgIHZhciB2YWx1ZXMgPSB0aGlzLnZhbHVlcyA9PT0gdW5kZWZWYWxzID8gdW5kZWZWYWxzIDogdGhpcy52YWx1ZXMuc3BsaWNlKGhhbGYpO1xyXG4gICAgICAgIHJldHVybiBuZXcgQk5vZGUoa2V5cywgdmFsdWVzKTtcclxuICAgIH07XHJcbiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG4gICAgLy8gTGVhZiBOb2RlOiBzY2FubmluZyAmIGRlbGV0aW9ucyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuICAgIEJOb2RlLnByb3RvdHlwZS5mb3JSYW5nZSA9IGZ1bmN0aW9uIChsb3csIGhpZ2gsIGluY2x1ZGVIaWdoLCBlZGl0TW9kZSwgdHJlZSwgY291bnQsIG9uRm91bmQpIHtcclxuICAgICAgICB2YXIgY21wID0gdHJlZS5fY29tcGFyZTtcclxuICAgICAgICB2YXIgaUxvdywgaUhpZ2g7XHJcbiAgICAgICAgaWYgKGhpZ2ggPT09IGxvdykge1xyXG4gICAgICAgICAgICBpZiAoIWluY2x1ZGVIaWdoKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvdW50O1xyXG4gICAgICAgICAgICBpSGlnaCA9IChpTG93ID0gdGhpcy5pbmRleE9mKGxvdywgLTEsIGNtcCkpICsgMTtcclxuICAgICAgICAgICAgaWYgKGlMb3cgPCAwKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvdW50O1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaUxvdyA9IHRoaXMuaW5kZXhPZihsb3csIDAsIGNtcCk7XHJcbiAgICAgICAgICAgIGlIaWdoID0gdGhpcy5pbmRleE9mKGhpZ2gsIC0xLCBjbXApO1xyXG4gICAgICAgICAgICBpZiAoaUhpZ2ggPCAwKVxyXG4gICAgICAgICAgICAgICAgaUhpZ2ggPSB+aUhpZ2g7XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGluY2x1ZGVIaWdoID09PSB0cnVlKVxyXG4gICAgICAgICAgICAgICAgaUhpZ2grKztcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIGtleXMgPSB0aGlzLmtleXMsIHZhbHVlcyA9IHRoaXMudmFsdWVzO1xyXG4gICAgICAgIGlmIChvbkZvdW5kICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IGlMb3c7IGkgPCBpSGlnaDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIga2V5ID0ga2V5c1tpXTtcclxuICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSBvbkZvdW5kKGtleSwgdmFsdWVzW2ldLCBjb3VudCsrKTtcclxuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChlZGl0TW9kZSA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoa2V5ICE9PSBrZXlzW2ldIHx8IHRoaXMuaXNTaGFyZWQgPT09IHRydWUpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJCVHJlZSBpbGxlZ2FsbHkgY2hhbmdlZCBvciBjbG9uZWQgaW4gZWRpdFJhbmdlXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0LmRlbGV0ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5rZXlzLnNwbGljZShpLCAxKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnZhbHVlcyAhPT0gdW5kZWZWYWxzKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWVzLnNwbGljZShpLCAxKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyZWUuX3NpemUtLTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGktLTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlIaWdoLS07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAocmVzdWx0Lmhhc093blByb3BlcnR5KCd2YWx1ZScpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXNbaV0gPSByZXN1bHQudmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5icmVhayAhPT0gdW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgICAgY291bnQgKz0gaUhpZ2ggLSBpTG93O1xyXG4gICAgICAgIHJldHVybiBjb3VudDtcclxuICAgIH07XHJcbiAgICAvKiogQWRkcyBlbnRpcmUgY29udGVudHMgb2YgcmlnaHQtaGFuZCBzaWJsaW5nIChyaHMgaXMgbGVmdCB1bmNoYW5nZWQpICovXHJcbiAgICBCTm9kZS5wcm90b3R5cGUubWVyZ2VTaWJsaW5nID0gZnVuY3Rpb24gKHJocywgXykge1xyXG4gICAgICAgIHRoaXMua2V5cy5wdXNoLmFwcGx5KHRoaXMua2V5cywgcmhzLmtleXMpO1xyXG4gICAgICAgIGlmICh0aGlzLnZhbHVlcyA9PT0gdW5kZWZWYWxzKSB7XHJcbiAgICAgICAgICAgIGlmIChyaHMudmFsdWVzID09PSB1bmRlZlZhbHMpXHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIHRoaXMudmFsdWVzID0gdGhpcy52YWx1ZXMuc2xpY2UoMCwgdGhpcy5rZXlzLmxlbmd0aCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMudmFsdWVzLnB1c2guYXBwbHkodGhpcy52YWx1ZXMsIHJocy5yZWlmeVZhbHVlcygpKTtcclxuICAgIH07XHJcbiAgICByZXR1cm4gQk5vZGU7XHJcbn0oKSk7XHJcbi8qKiBJbnRlcm5hbCBub2RlIChub24tbGVhZiBub2RlKSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cclxudmFyIEJOb2RlSW50ZXJuYWwgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XHJcbiAgICBfX2V4dGVuZHMoQk5vZGVJbnRlcm5hbCwgX3N1cGVyKTtcclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBkb2VzIG5vdCBtYXJrIGBjaGlsZHJlbmAgYXMgc2hhcmVkLCBzbyBpdCBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGNhbGxlclxyXG4gICAgICogdG8gZW5zdXJlIGNoaWxkcmVuIGFyZSBlaXRoZXIgbWFya2VkIHNoYXJlZCwgb3IgYXJlbid0IGluY2x1ZGVkIGluIGFub3RoZXIgdHJlZS5cclxuICAgICAqL1xyXG4gICAgZnVuY3Rpb24gQk5vZGVJbnRlcm5hbChjaGlsZHJlbiwga2V5cykge1xyXG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XHJcbiAgICAgICAgaWYgKCFrZXlzKSB7XHJcbiAgICAgICAgICAgIGtleXMgPSBbXTtcclxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKylcclxuICAgICAgICAgICAgICAgIGtleXNbaV0gPSBjaGlsZHJlbltpXS5tYXhLZXkoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBrZXlzKSB8fCB0aGlzO1xyXG4gICAgICAgIF90aGlzLmNoaWxkcmVuID0gY2hpbGRyZW47XHJcbiAgICAgICAgcmV0dXJuIF90aGlzO1xyXG4gICAgfVxyXG4gICAgQk5vZGVJbnRlcm5hbC5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdmFyIGNoaWxkcmVuID0gdGhpcy5jaGlsZHJlbi5zbGljZSgwKTtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKVxyXG4gICAgICAgICAgICBjaGlsZHJlbltpXS5pc1NoYXJlZCA9IHRydWU7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBCTm9kZUludGVybmFsKGNoaWxkcmVuLCB0aGlzLmtleXMuc2xpY2UoMCkpO1xyXG4gICAgfTtcclxuICAgIEJOb2RlSW50ZXJuYWwucHJvdG90eXBlLmdyZWVkeUNsb25lID0gZnVuY3Rpb24gKGZvcmNlKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNTaGFyZWQgJiYgIWZvcmNlKVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcztcclxuICAgICAgICB2YXIgbnUgPSBuZXcgQk5vZGVJbnRlcm5hbCh0aGlzLmNoaWxkcmVuLnNsaWNlKDApLCB0aGlzLmtleXMuc2xpY2UoMCkpO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnUuY2hpbGRyZW4ubGVuZ3RoOyBpKyspXHJcbiAgICAgICAgICAgIG51LmNoaWxkcmVuW2ldID0gbnUuY2hpbGRyZW5baV0uZ3JlZWR5Q2xvbmUoZm9yY2UpO1xyXG4gICAgICAgIHJldHVybiBudTtcclxuICAgIH07XHJcbiAgICBCTm9kZUludGVybmFsLnByb3RvdHlwZS5taW5LZXkgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hpbGRyZW5bMF0ubWluS2V5KCk7XHJcbiAgICB9O1xyXG4gICAgQk5vZGVJbnRlcm5hbC5wcm90b3R5cGUubWluUGFpciA9IGZ1bmN0aW9uIChyZXVzZWRBcnJheSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNoaWxkcmVuWzBdLm1pblBhaXIocmV1c2VkQXJyYXkpO1xyXG4gICAgfTtcclxuICAgIEJOb2RlSW50ZXJuYWwucHJvdG90eXBlLm1heFBhaXIgPSBmdW5jdGlvbiAocmV1c2VkQXJyYXkpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jaGlsZHJlblt0aGlzLmNoaWxkcmVuLmxlbmd0aCAtIDFdLm1heFBhaXIocmV1c2VkQXJyYXkpO1xyXG4gICAgfTtcclxuICAgIEJOb2RlSW50ZXJuYWwucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIChrZXksIGRlZmF1bHRWYWx1ZSwgdHJlZSkge1xyXG4gICAgICAgIHZhciBpID0gdGhpcy5pbmRleE9mKGtleSwgMCwgdHJlZS5fY29tcGFyZSksIGNoaWxkcmVuID0gdGhpcy5jaGlsZHJlbjtcclxuICAgICAgICByZXR1cm4gaSA8IGNoaWxkcmVuLmxlbmd0aCA/IGNoaWxkcmVuW2ldLmdldChrZXksIGRlZmF1bHRWYWx1ZSwgdHJlZSkgOiB1bmRlZmluZWQ7XHJcbiAgICB9O1xyXG4gICAgQk5vZGVJbnRlcm5hbC5wcm90b3R5cGUuZ2V0UGFpck9yTmV4dExvd2VyID0gZnVuY3Rpb24gKGtleSwgY29tcGFyZSwgaW5jbHVzaXZlLCByZXVzZWRBcnJheSkge1xyXG4gICAgICAgIHZhciBpID0gdGhpcy5pbmRleE9mKGtleSwgMCwgY29tcGFyZSksIGNoaWxkcmVuID0gdGhpcy5jaGlsZHJlbjtcclxuICAgICAgICBpZiAoaSA+PSBjaGlsZHJlbi5sZW5ndGgpXHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm1heFBhaXIocmV1c2VkQXJyYXkpO1xyXG4gICAgICAgIHZhciByZXN1bHQgPSBjaGlsZHJlbltpXS5nZXRQYWlyT3JOZXh0TG93ZXIoa2V5LCBjb21wYXJlLCBpbmNsdXNpdmUsIHJldXNlZEFycmF5KTtcclxuICAgICAgICBpZiAocmVzdWx0ID09PSB1bmRlZmluZWQgJiYgaSA+IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIGNoaWxkcmVuW2kgLSAxXS5tYXhQYWlyKHJldXNlZEFycmF5KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH07XHJcbiAgICBCTm9kZUludGVybmFsLnByb3RvdHlwZS5nZXRQYWlyT3JOZXh0SGlnaGVyID0gZnVuY3Rpb24gKGtleSwgY29tcGFyZSwgaW5jbHVzaXZlLCByZXVzZWRBcnJheSkge1xyXG4gICAgICAgIHZhciBpID0gdGhpcy5pbmRleE9mKGtleSwgMCwgY29tcGFyZSksIGNoaWxkcmVuID0gdGhpcy5jaGlsZHJlbiwgbGVuZ3RoID0gY2hpbGRyZW4ubGVuZ3RoO1xyXG4gICAgICAgIGlmIChpID49IGxlbmd0aClcclxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgICAgICB2YXIgcmVzdWx0ID0gY2hpbGRyZW5baV0uZ2V0UGFpck9yTmV4dEhpZ2hlcihrZXksIGNvbXBhcmUsIGluY2x1c2l2ZSwgcmV1c2VkQXJyYXkpO1xyXG4gICAgICAgIGlmIChyZXN1bHQgPT09IHVuZGVmaW5lZCAmJiBpIDwgbGVuZ3RoIC0gMSkge1xyXG4gICAgICAgICAgICByZXR1cm4gY2hpbGRyZW5baSArIDFdLm1pblBhaXIocmV1c2VkQXJyYXkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfTtcclxuICAgIEJOb2RlSW50ZXJuYWwucHJvdG90eXBlLmNoZWNrVmFsaWQgPSBmdW5jdGlvbiAoZGVwdGgsIHRyZWUsIGJhc2VJbmRleCkge1xyXG4gICAgICAgIHZhciBrTCA9IHRoaXMua2V5cy5sZW5ndGgsIGNMID0gdGhpcy5jaGlsZHJlbi5sZW5ndGg7XHJcbiAgICAgICAgY2hlY2soa0wgPT09IGNMLCBcImtleXMvY2hpbGRyZW4gbGVuZ3RoIG1pc21hdGNoOiBkZXB0aFwiLCBkZXB0aCwgXCJsZW5ndGhzXCIsIGtMLCBjTCwgXCJiYXNlSW5kZXhcIiwgYmFzZUluZGV4KTtcclxuICAgICAgICBjaGVjayhrTCA+IDEgfHwgZGVwdGggPiAwLCBcImludGVybmFsIG5vZGUgaGFzIGxlbmd0aFwiLCBrTCwgXCJhdCBkZXB0aFwiLCBkZXB0aCwgXCJiYXNlSW5kZXhcIiwgYmFzZUluZGV4KTtcclxuICAgICAgICB2YXIgc2l6ZSA9IDAsIGMgPSB0aGlzLmNoaWxkcmVuLCBrID0gdGhpcy5rZXlzLCBjaGlsZFNpemUgPSAwO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY0w7IGkrKykge1xyXG4gICAgICAgICAgICBzaXplICs9IGNbaV0uY2hlY2tWYWxpZChkZXB0aCArIDEsIHRyZWUsIGJhc2VJbmRleCArIHNpemUpO1xyXG4gICAgICAgICAgICBjaGlsZFNpemUgKz0gY1tpXS5rZXlzLmxlbmd0aDtcclxuICAgICAgICAgICAgY2hlY2soc2l6ZSA+PSBjaGlsZFNpemUsIFwid3RmXCIsIGJhc2VJbmRleCk7IC8vIG5vIHdheSB0aGlzIHdpbGwgZXZlciBmYWlsXHJcbiAgICAgICAgICAgIGNoZWNrKGkgPT09IDAgfHwgY1tpIC0gMV0uY29uc3RydWN0b3IgPT09IGNbaV0uY29uc3RydWN0b3IsIFwidHlwZSBtaXNtYXRjaCwgYmFzZUluZGV4OlwiLCBiYXNlSW5kZXgpO1xyXG4gICAgICAgICAgICBpZiAoY1tpXS5tYXhLZXkoKSAhPSBrW2ldKVxyXG4gICAgICAgICAgICAgICAgY2hlY2soZmFsc2UsIFwia2V5c1tcIiwgaSwgXCJdID1cIiwga1tpXSwgXCJpcyB3cm9uZywgc2hvdWxkIGJlIFwiLCBjW2ldLm1heEtleSgpLCBcImF0IGRlcHRoXCIsIGRlcHRoLCBcImJhc2VJbmRleFwiLCBiYXNlSW5kZXgpO1xyXG4gICAgICAgICAgICBpZiAoIShpID09PSAwIHx8IHRyZWUuX2NvbXBhcmUoa1tpIC0gMV0sIGtbaV0pIDwgMCkpXHJcbiAgICAgICAgICAgICAgICBjaGVjayhmYWxzZSwgXCJzb3J0IHZpb2xhdGlvbiBhdCBkZXB0aFwiLCBkZXB0aCwgXCJpbmRleFwiLCBpLCBcImtleXNcIiwga1tpIC0gMV0sIGtbaV0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyAyMDIwLzA4OiBCVHJlZSBkb2Vzbid0IGFsd2F5cyBhdm9pZCBncm9zc2x5IHVuZGVyc2l6ZWQgbm9kZXMsXHJcbiAgICAgICAgLy8gYnV0IEFGQUlLIHN1Y2ggbm9kZXMgYXJlIHByZXR0eSBoYXJtbGVzcywgc28gYWNjZXB0IHRoZW0uXHJcbiAgICAgICAgdmFyIHRvb2ZldyA9IGNoaWxkU2l6ZSA9PT0gMDsgLy8gY2hpbGRTaXplIDwgKHRyZWUubWF4Tm9kZVNpemUgPj4gMSkqY0w7XHJcbiAgICAgICAgaWYgKHRvb2ZldyB8fCBjaGlsZFNpemUgPiB0cmVlLm1heE5vZGVTaXplICogY0wpXHJcbiAgICAgICAgICAgIGNoZWNrKGZhbHNlLCB0b29mZXcgPyBcInRvbyBmZXdcIiA6IFwidG9vIG1hbnlcIiwgXCJjaGlsZHJlbiAoXCIsIGNoaWxkU2l6ZSwgc2l6ZSwgXCIpIGF0IGRlcHRoXCIsIGRlcHRoLCBcIm1heE5vZGVTaXplOlwiLCB0cmVlLm1heE5vZGVTaXplLCBcImNoaWxkcmVuLmxlbmd0aDpcIiwgY0wsIFwiYmFzZUluZGV4OlwiLCBiYXNlSW5kZXgpO1xyXG4gICAgICAgIHJldHVybiBzaXplO1xyXG4gICAgfTtcclxuICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbiAgICAvLyBJbnRlcm5hbCBOb2RlOiBzZXQgJiBub2RlIHNwbGl0dGluZyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG4gICAgQk5vZGVJbnRlcm5hbC5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24gKGtleSwgdmFsdWUsIG92ZXJ3cml0ZSwgdHJlZSkge1xyXG4gICAgICAgIHZhciBjID0gdGhpcy5jaGlsZHJlbiwgbWF4ID0gdHJlZS5fbWF4Tm9kZVNpemUsIGNtcCA9IHRyZWUuX2NvbXBhcmU7XHJcbiAgICAgICAgdmFyIGkgPSBNYXRoLm1pbih0aGlzLmluZGV4T2Yoa2V5LCAwLCBjbXApLCBjLmxlbmd0aCAtIDEpLCBjaGlsZCA9IGNbaV07XHJcbiAgICAgICAgaWYgKGNoaWxkLmlzU2hhcmVkKVxyXG4gICAgICAgICAgICBjW2ldID0gY2hpbGQgPSBjaGlsZC5jbG9uZSgpO1xyXG4gICAgICAgIGlmIChjaGlsZC5rZXlzLmxlbmd0aCA+PSBtYXgpIHtcclxuICAgICAgICAgICAgLy8gY2hpbGQgaXMgZnVsbDsgaW5zZXJ0aW5nIGFueXRoaW5nIGVsc2Ugd2lsbCBjYXVzZSBhIHNwbGl0LlxyXG4gICAgICAgICAgICAvLyBTaGlmdGluZyBhbiBpdGVtIHRvIHRoZSBsZWZ0IG9yIHJpZ2h0IHNpYmxpbmcgbWF5IGF2b2lkIGEgc3BsaXQuXHJcbiAgICAgICAgICAgIC8vIFdlIGNhbiBkbyBhIHNoaWZ0IGlmIHRoZSBhZGphY2VudCBub2RlIGlzIG5vdCBmdWxsIGFuZCBpZiB0aGVcclxuICAgICAgICAgICAgLy8gY3VycmVudCBrZXkgY2FuIHN0aWxsIGJlIHBsYWNlZCBpbiB0aGUgc2FtZSBub2RlIGFmdGVyIHRoZSBzaGlmdC5cclxuICAgICAgICAgICAgdmFyIG90aGVyO1xyXG4gICAgICAgICAgICBpZiAoaSA+IDAgJiYgKG90aGVyID0gY1tpIC0gMV0pLmtleXMubGVuZ3RoIDwgbWF4ICYmIGNtcChjaGlsZC5rZXlzWzBdLCBrZXkpIDwgMCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKG90aGVyLmlzU2hhcmVkKVxyXG4gICAgICAgICAgICAgICAgICAgIGNbaSAtIDFdID0gb3RoZXIgPSBvdGhlci5jbG9uZSgpO1xyXG4gICAgICAgICAgICAgICAgb3RoZXIudGFrZUZyb21SaWdodChjaGlsZCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmtleXNbaSAtIDFdID0gb3RoZXIubWF4S2V5KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoKG90aGVyID0gY1tpICsgMV0pICE9PSB1bmRlZmluZWQgJiYgb3RoZXIua2V5cy5sZW5ndGggPCBtYXggJiYgY21wKGNoaWxkLm1heEtleSgpLCBrZXkpIDwgMCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKG90aGVyLmlzU2hhcmVkKVxyXG4gICAgICAgICAgICAgICAgICAgIGNbaSArIDFdID0gb3RoZXIgPSBvdGhlci5jbG9uZSgpO1xyXG4gICAgICAgICAgICAgICAgb3RoZXIudGFrZUZyb21MZWZ0KGNoaWxkKTtcclxuICAgICAgICAgICAgICAgIHRoaXMua2V5c1tpXSA9IGNbaV0ubWF4S2V5KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIHJlc3VsdCA9IGNoaWxkLnNldChrZXksIHZhbHVlLCBvdmVyd3JpdGUsIHRyZWUpO1xyXG4gICAgICAgIGlmIChyZXN1bHQgPT09IGZhbHNlKVxyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5rZXlzW2ldID0gY2hpbGQubWF4S2V5KCk7XHJcbiAgICAgICAgaWYgKHJlc3VsdCA9PT0gdHJ1ZSlcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgLy8gVGhlIGNoaWxkIGhhcyBzcGxpdCBhbmQgYHJlc3VsdGAgaXMgYSBuZXcgcmlnaHQgY2hpbGQuLi4gZG9lcyBpdCBmaXQ/XHJcbiAgICAgICAgaWYgKHRoaXMua2V5cy5sZW5ndGggPCBtYXgpIHsgLy8geWVzXHJcbiAgICAgICAgICAgIHRoaXMuaW5zZXJ0KGkgKyAxLCByZXN1bHQpO1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7IC8vIG5vLCB3ZSBtdXN0IHNwbGl0IGFsc29cclxuICAgICAgICAgICAgdmFyIG5ld1JpZ2h0U2libGluZyA9IHRoaXMuc3BsaXRPZmZSaWdodFNpZGUoKSwgdGFyZ2V0ID0gdGhpcztcclxuICAgICAgICAgICAgaWYgKGNtcChyZXN1bHQubWF4S2V5KCksIHRoaXMubWF4S2V5KCkpID4gMCkge1xyXG4gICAgICAgICAgICAgICAgdGFyZ2V0ID0gbmV3UmlnaHRTaWJsaW5nO1xyXG4gICAgICAgICAgICAgICAgaSAtPSB0aGlzLmtleXMubGVuZ3RoO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRhcmdldC5pbnNlcnQoaSArIDEsIHJlc3VsdCk7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXdSaWdodFNpYmxpbmc7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIC8qKlxyXG4gICAgICogSW5zZXJ0cyBgY2hpbGRgIGF0IGluZGV4IGBpYC5cclxuICAgICAqIFRoaXMgZG9lcyBub3QgbWFyayBgY2hpbGRgIGFzIHNoYXJlZCwgc28gaXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBjYWxsZXJcclxuICAgICAqIHRvIGVuc3VyZSB0aGF0IGVpdGhlciBjaGlsZCBpcyBtYXJrZWQgc2hhcmVkLCBvciBpdCBpcyBub3QgaW5jbHVkZWQgaW4gYW5vdGhlciB0cmVlLlxyXG4gICAgICovXHJcbiAgICBCTm9kZUludGVybmFsLnByb3RvdHlwZS5pbnNlcnQgPSBmdW5jdGlvbiAoaSwgY2hpbGQpIHtcclxuICAgICAgICB0aGlzLmNoaWxkcmVuLnNwbGljZShpLCAwLCBjaGlsZCk7XHJcbiAgICAgICAgdGhpcy5rZXlzLnNwbGljZShpLCAwLCBjaGlsZC5tYXhLZXkoKSk7XHJcbiAgICB9O1xyXG4gICAgLyoqXHJcbiAgICAgKiBTcGxpdCB0aGlzIG5vZGUuXHJcbiAgICAgKiBNb2RpZmllcyB0aGlzIHRvIHJlbW92ZSB0aGUgc2Vjb25kIGhhbGYgb2YgdGhlIGl0ZW1zLCByZXR1cm5pbmcgYSBzZXBhcmF0ZSBub2RlIGNvbnRhaW5pbmcgdGhlbS5cclxuICAgICAqL1xyXG4gICAgQk5vZGVJbnRlcm5hbC5wcm90b3R5cGUuc3BsaXRPZmZSaWdodFNpZGUgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgLy8gYXNzZXJ0ICF0aGlzLmlzU2hhcmVkO1xyXG4gICAgICAgIHZhciBoYWxmID0gdGhpcy5jaGlsZHJlbi5sZW5ndGggPj4gMTtcclxuICAgICAgICByZXR1cm4gbmV3IEJOb2RlSW50ZXJuYWwodGhpcy5jaGlsZHJlbi5zcGxpY2UoaGFsZiksIHRoaXMua2V5cy5zcGxpY2UoaGFsZikpO1xyXG4gICAgfTtcclxuICAgIEJOb2RlSW50ZXJuYWwucHJvdG90eXBlLnRha2VGcm9tUmlnaHQgPSBmdW5jdGlvbiAocmhzKSB7XHJcbiAgICAgICAgLy8gUmVtaW5kZXI6IHBhcmVudCBub2RlIG11c3QgdXBkYXRlIGl0cyBjb3B5IG9mIGtleSBmb3IgdGhpcyBub2RlXHJcbiAgICAgICAgLy8gYXNzZXJ0OiBuZWl0aGVyIG5vZGUgaXMgc2hhcmVkXHJcbiAgICAgICAgLy8gYXNzZXJ0IHJocy5rZXlzLmxlbmd0aCA+IChtYXhOb2RlU2l6ZS8yICYmIHRoaXMua2V5cy5sZW5ndGg8bWF4Tm9kZVNpemUpXHJcbiAgICAgICAgdGhpcy5rZXlzLnB1c2gocmhzLmtleXMuc2hpZnQoKSk7XHJcbiAgICAgICAgdGhpcy5jaGlsZHJlbi5wdXNoKHJocy5jaGlsZHJlbi5zaGlmdCgpKTtcclxuICAgIH07XHJcbiAgICBCTm9kZUludGVybmFsLnByb3RvdHlwZS50YWtlRnJvbUxlZnQgPSBmdW5jdGlvbiAobGhzKSB7XHJcbiAgICAgICAgLy8gUmVtaW5kZXI6IHBhcmVudCBub2RlIG11c3QgdXBkYXRlIGl0cyBjb3B5IG9mIGtleSBmb3IgdGhpcyBub2RlXHJcbiAgICAgICAgLy8gYXNzZXJ0OiBuZWl0aGVyIG5vZGUgaXMgc2hhcmVkXHJcbiAgICAgICAgLy8gYXNzZXJ0IHJocy5rZXlzLmxlbmd0aCA+IChtYXhOb2RlU2l6ZS8yICYmIHRoaXMua2V5cy5sZW5ndGg8bWF4Tm9kZVNpemUpXHJcbiAgICAgICAgdGhpcy5rZXlzLnVuc2hpZnQobGhzLmtleXMucG9wKCkpO1xyXG4gICAgICAgIHRoaXMuY2hpbGRyZW4udW5zaGlmdChsaHMuY2hpbGRyZW4ucG9wKCkpO1xyXG4gICAgfTtcclxuICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbiAgICAvLyBJbnRlcm5hbCBOb2RlOiBzY2FubmluZyAmIGRlbGV0aW9ucyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG4gICAgLy8gTm90ZTogYGNvdW50YCBpcyB0aGUgbmV4dCB2YWx1ZSBvZiB0aGUgdGhpcmQgYXJndW1lbnQgdG8gYG9uRm91bmRgLiBcclxuICAgIC8vICAgICAgIEEgbGVhZiBub2RlJ3MgYGZvclJhbmdlYCBmdW5jdGlvbiByZXR1cm5zIGEgbmV3IHZhbHVlIGZvciB0aGlzIGNvdW50ZXIsXHJcbiAgICAvLyAgICAgICB1bmxlc3MgdGhlIG9wZXJhdGlvbiBpcyB0byBzdG9wIGVhcmx5LlxyXG4gICAgQk5vZGVJbnRlcm5hbC5wcm90b3R5cGUuZm9yUmFuZ2UgPSBmdW5jdGlvbiAobG93LCBoaWdoLCBpbmNsdWRlSGlnaCwgZWRpdE1vZGUsIHRyZWUsIGNvdW50LCBvbkZvdW5kKSB7XHJcbiAgICAgICAgdmFyIGNtcCA9IHRyZWUuX2NvbXBhcmU7XHJcbiAgICAgICAgdmFyIGtleXMgPSB0aGlzLmtleXMsIGNoaWxkcmVuID0gdGhpcy5jaGlsZHJlbjtcclxuICAgICAgICB2YXIgaUxvdyA9IHRoaXMuaW5kZXhPZihsb3csIDAsIGNtcCksIGkgPSBpTG93O1xyXG4gICAgICAgIHZhciBpSGlnaCA9IE1hdGgubWluKGhpZ2ggPT09IGxvdyA/IGlMb3cgOiB0aGlzLmluZGV4T2YoaGlnaCwgMCwgY21wKSwga2V5cy5sZW5ndGggLSAxKTtcclxuICAgICAgICBpZiAoIWVkaXRNb2RlKSB7XHJcbiAgICAgICAgICAgIC8vIFNpbXBsZSBjYXNlXHJcbiAgICAgICAgICAgIGZvciAoOyBpIDw9IGlIaWdoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSBjaGlsZHJlbltpXS5mb3JSYW5nZShsb3csIGhpZ2gsIGluY2x1ZGVIaWdoLCBlZGl0TW9kZSwgdHJlZSwgY291bnQsIG9uRm91bmQpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiByZXN1bHQgIT09ICdudW1iZXInKVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgICAgICAgICBjb3VudCA9IHJlc3VsdDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChpIDw9IGlIaWdoKSB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKDsgaSA8PSBpSGlnaDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkcmVuW2ldLmlzU2hhcmVkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbltpXSA9IGNoaWxkcmVuW2ldLmNsb25lKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGNoaWxkcmVuW2ldLmZvclJhbmdlKGxvdywgaGlnaCwgaW5jbHVkZUhpZ2gsIGVkaXRNb2RlLCB0cmVlLCBjb3VudCwgb25Gb3VuZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gTm90ZTogaWYgY2hpbGRyZW5baV0gaXMgZW1wdHkgdGhlbiBrZXlzW2ldPXVuZGVmaW5lZC5cclxuICAgICAgICAgICAgICAgICAgICAvLyAgICAgICBUaGlzIGlzIGFuIGludmFsaWQgc3RhdGUsIGJ1dCBpdCBpcyBmaXhlZCBiZWxvdy5cclxuICAgICAgICAgICAgICAgICAgICBrZXlzW2ldID0gY2hpbGRyZW5baV0ubWF4S2V5KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiByZXN1bHQgIT09ICdudW1iZXInKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgICAgICAgICAgICAgIGNvdW50ID0gcmVzdWx0O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGZpbmFsbHkge1xyXG4gICAgICAgICAgICAgICAgLy8gRGVsZXRpb25zIG1heSBoYXZlIG9jY3VycmVkLCBzbyBsb29rIGZvciBvcHBvcnR1bml0aWVzIHRvIG1lcmdlIG5vZGVzLlxyXG4gICAgICAgICAgICAgICAgdmFyIGhhbGYgPSB0cmVlLl9tYXhOb2RlU2l6ZSA+PiAxO1xyXG4gICAgICAgICAgICAgICAgaWYgKGlMb3cgPiAwKVxyXG4gICAgICAgICAgICAgICAgICAgIGlMb3ctLTtcclxuICAgICAgICAgICAgICAgIGZvciAoaSA9IGlIaWdoOyBpID49IGlMb3c7IGktLSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZHJlbltpXS5rZXlzLmxlbmd0aCA8PSBoYWxmKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZHJlbltpXS5rZXlzLmxlbmd0aCAhPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50cnlNZXJnZShpLCB0cmVlLl9tYXhOb2RlU2l6ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7IC8vIGNoaWxkIGlzIGVtcHR5ISBkZWxldGUgaXQhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlzLnNwbGljZShpLCAxKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuLnNwbGljZShpLCAxKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChjaGlsZHJlbi5sZW5ndGggIT09IDAgJiYgY2hpbGRyZW5bMF0ua2V5cy5sZW5ndGggPT09IDApXHJcbiAgICAgICAgICAgICAgICAgICAgY2hlY2soZmFsc2UsIFwiZW1wdGluZXNzIGJ1Z1wiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gY291bnQ7XHJcbiAgICB9O1xyXG4gICAgLyoqIE1lcmdlcyBjaGlsZCBpIHdpdGggY2hpbGQgaSsxIGlmIHRoZWlyIGNvbWJpbmVkIHNpemUgaXMgbm90IHRvbyBsYXJnZSAqL1xyXG4gICAgQk5vZGVJbnRlcm5hbC5wcm90b3R5cGUudHJ5TWVyZ2UgPSBmdW5jdGlvbiAoaSwgbWF4U2l6ZSkge1xyXG4gICAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuY2hpbGRyZW47XHJcbiAgICAgICAgaWYgKGkgPj0gMCAmJiBpICsgMSA8IGNoaWxkcmVuLmxlbmd0aCkge1xyXG4gICAgICAgICAgICBpZiAoY2hpbGRyZW5baV0ua2V5cy5sZW5ndGggKyBjaGlsZHJlbltpICsgMV0ua2V5cy5sZW5ndGggPD0gbWF4U2l6ZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGNoaWxkcmVuW2ldLmlzU2hhcmVkKSAvLyBjbG9uZWQgYWxyZWFkeSBVTkxFU1MgaSBpcyBvdXRzaWRlIHNjYW4gcmFuZ2VcclxuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbltpXSA9IGNoaWxkcmVuW2ldLmNsb25lKCk7XHJcbiAgICAgICAgICAgICAgICBjaGlsZHJlbltpXS5tZXJnZVNpYmxpbmcoY2hpbGRyZW5baSArIDFdLCBtYXhTaXplKTtcclxuICAgICAgICAgICAgICAgIGNoaWxkcmVuLnNwbGljZShpICsgMSwgMSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmtleXMuc3BsaWNlKGkgKyAxLCAxKTtcclxuICAgICAgICAgICAgICAgIHRoaXMua2V5c1tpXSA9IGNoaWxkcmVuW2ldLm1heEtleSgpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfTtcclxuICAgIC8qKlxyXG4gICAgICogTW92ZSBjaGlsZHJlbiBmcm9tIGByaHNgIGludG8gdGhpcy5cclxuICAgICAqIGByaHNgIG11c3QgYmUgcGFydCBvZiB0aGlzIHRyZWUsIGFuZCBiZSByZW1vdmVkIGZyb20gaXQgYWZ0ZXIgdGhpcyBjYWxsXHJcbiAgICAgKiAob3RoZXJ3aXNlIGlzU2hhcmVkIGZvciBpdHMgY2hpbGRyZW4gY291bGQgYmUgaW5jb3JyZWN0KS5cclxuICAgICAqL1xyXG4gICAgQk5vZGVJbnRlcm5hbC5wcm90b3R5cGUubWVyZ2VTaWJsaW5nID0gZnVuY3Rpb24gKHJocywgbWF4Tm9kZVNpemUpIHtcclxuICAgICAgICAvLyBhc3NlcnQgIXRoaXMuaXNTaGFyZWQ7XHJcbiAgICAgICAgdmFyIG9sZExlbmd0aCA9IHRoaXMua2V5cy5sZW5ndGg7XHJcbiAgICAgICAgdGhpcy5rZXlzLnB1c2guYXBwbHkodGhpcy5rZXlzLCByaHMua2V5cyk7XHJcbiAgICAgICAgdmFyIHJoc0NoaWxkcmVuID0gcmhzLmNoaWxkcmVuO1xyXG4gICAgICAgIHRoaXMuY2hpbGRyZW4ucHVzaC5hcHBseSh0aGlzLmNoaWxkcmVuLCByaHNDaGlsZHJlbik7XHJcbiAgICAgICAgaWYgKHJocy5pc1NoYXJlZCAmJiAhdGhpcy5pc1NoYXJlZCkge1xyXG4gICAgICAgICAgICAvLyBBbGwgY2hpbGRyZW4gb2YgYSBzaGFyZWQgbm9kZSBhcmUgaW1wbGljaXRseSBzaGFyZWQsIGFuZCBzaW5jZSB0aGVpciBuZXdcclxuICAgICAgICAgICAgLy8gcGFyZW50IGlzIG5vdCBzaGFyZWQsIHRoZXkgbXVzdCBub3cgYmUgZXhwbGljaXRseSBtYXJrZWQgYXMgc2hhcmVkLlxyXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJoc0NoaWxkcmVuLmxlbmd0aDsgaSsrKVxyXG4gICAgICAgICAgICAgICAgcmhzQ2hpbGRyZW5baV0uaXNTaGFyZWQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBJZiBvdXIgY2hpbGRyZW4gYXJlIHRoZW1zZWx2ZXMgYWxtb3N0IGVtcHR5IGR1ZSB0byBhIG1hc3MtZGVsZXRlLFxyXG4gICAgICAgIC8vIHRoZXkgbWF5IG5lZWQgdG8gYmUgbWVyZ2VkIHRvbyAoYnV0IG9ubHkgdGhlIG9sZExlbmd0aC0xIGFuZCBpdHNcclxuICAgICAgICAvLyByaWdodCBzaWJsaW5nIHNob3VsZCBuZWVkIHRoaXMpLlxyXG4gICAgICAgIHRoaXMudHJ5TWVyZ2Uob2xkTGVuZ3RoIC0gMSwgbWF4Tm9kZVNpemUpO1xyXG4gICAgfTtcclxuICAgIHJldHVybiBCTm9kZUludGVybmFsO1xyXG59KEJOb2RlKSk7XHJcbi8vIE9wdGltaXphdGlvbjogdGhpcyBhcnJheSBvZiBgdW5kZWZpbmVkYHMgaXMgdXNlZCBpbnN0ZWFkIG9mIGEgbm9ybWFsXHJcbi8vIGFycmF5IG9mIHZhbHVlcyBpbiBub2RlcyB3aGVyZSBgdW5kZWZpbmVkYCBpcyB0aGUgb25seSB2YWx1ZS5cclxuLy8gSXRzIGxlbmd0aCBpcyBleHRlbmRlZCB0byBtYXggbm9kZSBzaXplIG9uIGZpcnN0IHVzZTsgc2luY2UgaXQgY2FuXHJcbi8vIGJlIHNoYXJlZCBiZXR3ZWVuIHRyZWVzIHdpdGggZGlmZmVyZW50IG1heGltdW1zLCBpdHMgbGVuZ3RoIGNhbiBvbmx5XHJcbi8vIGluY3JlYXNlLCBuZXZlciBkZWNyZWFzZS4gSXRzIHR5cGUgc2hvdWxkIGJlIHVuZGVmaW5lZFtdIGJ1dCBzdHJhbmdlbHlcclxuLy8gVHlwZVNjcmlwdCB3b24ndCBhbGxvdyB0aGUgY29tcGFyaXNvbiBWW10gPT09IHVuZGVmaW5lZFtdLiBUbyBwcmV2ZW50XHJcbi8vIHVzZXJzIGZyb20gbWFraW5nIHRoaXMgYXJyYXkgdG9vIGxhcmdlLCBCVHJlZSBoYXMgYSBtYXhpbXVtIG5vZGUgc2l6ZS5cclxuLy9cclxuLy8gRkFROiB1bmRlZlZhbHNbaV0gaXMgYWxyZWFkeSB1bmRlZmluZWQsIHNvIHdoeSBpbmNyZWFzZSB0aGUgYXJyYXkgc2l6ZT9cclxuLy8gUmVhZGluZyBvdXRzaWRlIHRoZSBib3VuZHMgb2YgYW4gYXJyYXkgaXMgcmVsYXRpdmVseSBzbG93IGJlY2F1c2UgaXRcclxuLy8gaGFzIHRoZSBzaWRlIGVmZmVjdCBvZiBzY2FubmluZyB0aGUgcHJvdG90eXBlIGNoYWluLlxyXG52YXIgdW5kZWZWYWxzID0gW107XHJcbnZhciBEZWxldGUgPSB7IGRlbGV0ZTogdHJ1ZSB9LCBEZWxldGVSYW5nZSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIERlbGV0ZTsgfTtcclxudmFyIEJyZWFrID0geyBicmVhazogdHJ1ZSB9O1xyXG52YXIgRW1wdHlMZWFmID0gKGZ1bmN0aW9uICgpIHtcclxuICAgIHZhciBuID0gbmV3IEJOb2RlKCk7XHJcbiAgICBuLmlzU2hhcmVkID0gdHJ1ZTtcclxuICAgIHJldHVybiBuO1xyXG59KSgpO1xyXG52YXIgRW1wdHlBcnJheSA9IFtdO1xyXG52YXIgUmV1c2VkQXJyYXkgPSBbXTsgLy8gYXNzdW1lZCB0aHJlYWQtbG9jYWxcclxuZnVuY3Rpb24gY2hlY2soZmFjdCkge1xyXG4gICAgdmFyIGFyZ3MgPSBbXTtcclxuICAgIGZvciAodmFyIF9pID0gMTsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XHJcbiAgICAgICAgYXJnc1tfaSAtIDFdID0gYXJndW1lbnRzW19pXTtcclxuICAgIH1cclxuICAgIGlmICghZmFjdCkge1xyXG4gICAgICAgIGFyZ3MudW5zaGlmdCgnQisgdHJlZScpOyAvLyBhdCBiZWdpbm5pbmcgb2YgbWVzc2FnZVxyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihhcmdzLmpvaW4oJyAnKSk7XHJcbiAgICB9XHJcbn1cclxuLyoqIEEgQlRyZWUgZnJvemVuIGluIHRoZSBlbXB0eSBzdGF0ZS4gKi9cclxuZXhwb3J0cy5FbXB0eUJUcmVlID0gKGZ1bmN0aW9uICgpIHsgdmFyIHQgPSBuZXcgQlRyZWUoKTsgdC5mcmVlemUoKTsgcmV0dXJuIHQ7IH0pKCk7XHJcbiIsICIvLyB0aGVzZSBhcmVuJ3QgcmVhbGx5IHByaXZhdGUsIGJ1dCBub3IgYXJlIHRoZXkgcmVhbGx5IHVzZWZ1bCB0byBkb2N1bWVudFxuXG4vKipcbiAqIEBwcml2YXRlXG4gKi9cbmNsYXNzIEx1eG9uRXJyb3IgZXh0ZW5kcyBFcnJvciB7fVxuXG4vKipcbiAqIEBwcml2YXRlXG4gKi9cbmV4cG9ydCBjbGFzcyBJbnZhbGlkRGF0ZVRpbWVFcnJvciBleHRlbmRzIEx1eG9uRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihyZWFzb24pIHtcbiAgICBzdXBlcihgSW52YWxpZCBEYXRlVGltZTogJHtyZWFzb24udG9NZXNzYWdlKCl9YCk7XG4gIH1cbn1cblxuLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5leHBvcnQgY2xhc3MgSW52YWxpZEludGVydmFsRXJyb3IgZXh0ZW5kcyBMdXhvbkVycm9yIHtcbiAgY29uc3RydWN0b3IocmVhc29uKSB7XG4gICAgc3VwZXIoYEludmFsaWQgSW50ZXJ2YWw6ICR7cmVhc29uLnRvTWVzc2FnZSgpfWApO1xuICB9XG59XG5cbi8qKlxuICogQHByaXZhdGVcbiAqL1xuZXhwb3J0IGNsYXNzIEludmFsaWREdXJhdGlvbkVycm9yIGV4dGVuZHMgTHV4b25FcnJvciB7XG4gIGNvbnN0cnVjdG9yKHJlYXNvbikge1xuICAgIHN1cGVyKGBJbnZhbGlkIER1cmF0aW9uOiAke3JlYXNvbi50b01lc3NhZ2UoKX1gKTtcbiAgfVxufVxuXG4vKipcbiAqIEBwcml2YXRlXG4gKi9cbmV4cG9ydCBjbGFzcyBDb25mbGljdGluZ1NwZWNpZmljYXRpb25FcnJvciBleHRlbmRzIEx1eG9uRXJyb3Ige31cblxuLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5leHBvcnQgY2xhc3MgSW52YWxpZFVuaXRFcnJvciBleHRlbmRzIEx1eG9uRXJyb3Ige1xuICBjb25zdHJ1Y3Rvcih1bml0KSB7XG4gICAgc3VwZXIoYEludmFsaWQgdW5pdCAke3VuaXR9YCk7XG4gIH1cbn1cblxuLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5leHBvcnQgY2xhc3MgSW52YWxpZEFyZ3VtZW50RXJyb3IgZXh0ZW5kcyBMdXhvbkVycm9yIHt9XG5cbi8qKlxuICogQHByaXZhdGVcbiAqL1xuZXhwb3J0IGNsYXNzIFpvbmVJc0Fic3RyYWN0RXJyb3IgZXh0ZW5kcyBMdXhvbkVycm9yIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoXCJab25lIGlzIGFuIGFic3RyYWN0IGNsYXNzXCIpO1xuICB9XG59XG4iLCAiLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5cbmNvbnN0IG4gPSBcIm51bWVyaWNcIixcbiAgcyA9IFwic2hvcnRcIixcbiAgbCA9IFwibG9uZ1wiO1xuXG5leHBvcnQgY29uc3QgREFURV9TSE9SVCA9IHtcbiAgeWVhcjogbixcbiAgbW9udGg6IG4sXG4gIGRheTogbixcbn07XG5cbmV4cG9ydCBjb25zdCBEQVRFX01FRCA9IHtcbiAgeWVhcjogbixcbiAgbW9udGg6IHMsXG4gIGRheTogbixcbn07XG5cbmV4cG9ydCBjb25zdCBEQVRFX01FRF9XSVRIX1dFRUtEQVkgPSB7XG4gIHllYXI6IG4sXG4gIG1vbnRoOiBzLFxuICBkYXk6IG4sXG4gIHdlZWtkYXk6IHMsXG59O1xuXG5leHBvcnQgY29uc3QgREFURV9GVUxMID0ge1xuICB5ZWFyOiBuLFxuICBtb250aDogbCxcbiAgZGF5OiBuLFxufTtcblxuZXhwb3J0IGNvbnN0IERBVEVfSFVHRSA9IHtcbiAgeWVhcjogbixcbiAgbW9udGg6IGwsXG4gIGRheTogbixcbiAgd2Vla2RheTogbCxcbn07XG5cbmV4cG9ydCBjb25zdCBUSU1FX1NJTVBMRSA9IHtcbiAgaG91cjogbixcbiAgbWludXRlOiBuLFxufTtcblxuZXhwb3J0IGNvbnN0IFRJTUVfV0lUSF9TRUNPTkRTID0ge1xuICBob3VyOiBuLFxuICBtaW51dGU6IG4sXG4gIHNlY29uZDogbixcbn07XG5cbmV4cG9ydCBjb25zdCBUSU1FX1dJVEhfU0hPUlRfT0ZGU0VUID0ge1xuICBob3VyOiBuLFxuICBtaW51dGU6IG4sXG4gIHNlY29uZDogbixcbiAgdGltZVpvbmVOYW1lOiBzLFxufTtcblxuZXhwb3J0IGNvbnN0IFRJTUVfV0lUSF9MT05HX09GRlNFVCA9IHtcbiAgaG91cjogbixcbiAgbWludXRlOiBuLFxuICBzZWNvbmQ6IG4sXG4gIHRpbWVab25lTmFtZTogbCxcbn07XG5cbmV4cG9ydCBjb25zdCBUSU1FXzI0X1NJTVBMRSA9IHtcbiAgaG91cjogbixcbiAgbWludXRlOiBuLFxuICBob3VyQ3ljbGU6IFwiaDIzXCIsXG59O1xuXG5leHBvcnQgY29uc3QgVElNRV8yNF9XSVRIX1NFQ09ORFMgPSB7XG4gIGhvdXI6IG4sXG4gIG1pbnV0ZTogbixcbiAgc2Vjb25kOiBuLFxuICBob3VyQ3ljbGU6IFwiaDIzXCIsXG59O1xuXG5leHBvcnQgY29uc3QgVElNRV8yNF9XSVRIX1NIT1JUX09GRlNFVCA9IHtcbiAgaG91cjogbixcbiAgbWludXRlOiBuLFxuICBzZWNvbmQ6IG4sXG4gIGhvdXJDeWNsZTogXCJoMjNcIixcbiAgdGltZVpvbmVOYW1lOiBzLFxufTtcblxuZXhwb3J0IGNvbnN0IFRJTUVfMjRfV0lUSF9MT05HX09GRlNFVCA9IHtcbiAgaG91cjogbixcbiAgbWludXRlOiBuLFxuICBzZWNvbmQ6IG4sXG4gIGhvdXJDeWNsZTogXCJoMjNcIixcbiAgdGltZVpvbmVOYW1lOiBsLFxufTtcblxuZXhwb3J0IGNvbnN0IERBVEVUSU1FX1NIT1JUID0ge1xuICB5ZWFyOiBuLFxuICBtb250aDogbixcbiAgZGF5OiBuLFxuICBob3VyOiBuLFxuICBtaW51dGU6IG4sXG59O1xuXG5leHBvcnQgY29uc3QgREFURVRJTUVfU0hPUlRfV0lUSF9TRUNPTkRTID0ge1xuICB5ZWFyOiBuLFxuICBtb250aDogbixcbiAgZGF5OiBuLFxuICBob3VyOiBuLFxuICBtaW51dGU6IG4sXG4gIHNlY29uZDogbixcbn07XG5cbmV4cG9ydCBjb25zdCBEQVRFVElNRV9NRUQgPSB7XG4gIHllYXI6IG4sXG4gIG1vbnRoOiBzLFxuICBkYXk6IG4sXG4gIGhvdXI6IG4sXG4gIG1pbnV0ZTogbixcbn07XG5cbmV4cG9ydCBjb25zdCBEQVRFVElNRV9NRURfV0lUSF9TRUNPTkRTID0ge1xuICB5ZWFyOiBuLFxuICBtb250aDogcyxcbiAgZGF5OiBuLFxuICBob3VyOiBuLFxuICBtaW51dGU6IG4sXG4gIHNlY29uZDogbixcbn07XG5cbmV4cG9ydCBjb25zdCBEQVRFVElNRV9NRURfV0lUSF9XRUVLREFZID0ge1xuICB5ZWFyOiBuLFxuICBtb250aDogcyxcbiAgZGF5OiBuLFxuICB3ZWVrZGF5OiBzLFxuICBob3VyOiBuLFxuICBtaW51dGU6IG4sXG59O1xuXG5leHBvcnQgY29uc3QgREFURVRJTUVfRlVMTCA9IHtcbiAgeWVhcjogbixcbiAgbW9udGg6IGwsXG4gIGRheTogbixcbiAgaG91cjogbixcbiAgbWludXRlOiBuLFxuICB0aW1lWm9uZU5hbWU6IHMsXG59O1xuXG5leHBvcnQgY29uc3QgREFURVRJTUVfRlVMTF9XSVRIX1NFQ09ORFMgPSB7XG4gIHllYXI6IG4sXG4gIG1vbnRoOiBsLFxuICBkYXk6IG4sXG4gIGhvdXI6IG4sXG4gIG1pbnV0ZTogbixcbiAgc2Vjb25kOiBuLFxuICB0aW1lWm9uZU5hbWU6IHMsXG59O1xuXG5leHBvcnQgY29uc3QgREFURVRJTUVfSFVHRSA9IHtcbiAgeWVhcjogbixcbiAgbW9udGg6IGwsXG4gIGRheTogbixcbiAgd2Vla2RheTogbCxcbiAgaG91cjogbixcbiAgbWludXRlOiBuLFxuICB0aW1lWm9uZU5hbWU6IGwsXG59O1xuXG5leHBvcnQgY29uc3QgREFURVRJTUVfSFVHRV9XSVRIX1NFQ09ORFMgPSB7XG4gIHllYXI6IG4sXG4gIG1vbnRoOiBsLFxuICBkYXk6IG4sXG4gIHdlZWtkYXk6IGwsXG4gIGhvdXI6IG4sXG4gIG1pbnV0ZTogbixcbiAgc2Vjb25kOiBuLFxuICB0aW1lWm9uZU5hbWU6IGwsXG59O1xuIiwgIi8qXG4gIFRoaXMgaXMganVzdCBhIGp1bmsgZHJhd2VyLCBjb250YWluaW5nIGFueXRoaW5nIHVzZWQgYWNyb3NzIG11bHRpcGxlIGNsYXNzZXMuXG4gIEJlY2F1c2UgTHV4b24gaXMgc21hbGwoaXNoKSwgdGhpcyBzaG91bGQgc3RheSBzbWFsbCBhbmQgd2Ugd29uJ3Qgd29ycnkgYWJvdXQgc3BsaXR0aW5nXG4gIGl0IHVwIGludG8sIHNheSwgcGFyc2luZ1V0aWwuanMgYW5kIGJhc2ljVXRpbC5qcyBhbmQgc28gb24uIEJ1dCB0aGV5IGFyZSBkaXZpZGVkIHVwIGJ5IGZlYXR1cmUgYXJlYS5cbiovXG5cbmltcG9ydCB7IEludmFsaWRBcmd1bWVudEVycm9yIH0gZnJvbSBcIi4uL2Vycm9ycy5qc1wiO1xuXG4vKipcbiAqIEBwcml2YXRlXG4gKi9cblxuLy8gVFlQRVNcblxuZXhwb3J0IGZ1bmN0aW9uIGlzVW5kZWZpbmVkKG8pIHtcbiAgcmV0dXJuIHR5cGVvZiBvID09PSBcInVuZGVmaW5lZFwiO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOdW1iZXIobykge1xuICByZXR1cm4gdHlwZW9mIG8gPT09IFwibnVtYmVyXCI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0ludGVnZXIobykge1xuICByZXR1cm4gdHlwZW9mIG8gPT09IFwibnVtYmVyXCIgJiYgbyAlIDEgPT09IDA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1N0cmluZyhvKSB7XG4gIHJldHVybiB0eXBlb2YgbyA9PT0gXCJzdHJpbmdcIjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRGF0ZShvKSB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobykgPT09IFwiW29iamVjdCBEYXRlXVwiO1xufVxuXG4vLyBDQVBBQklMSVRJRVNcblxuZXhwb3J0IGZ1bmN0aW9uIGhhc1JlbGF0aXZlKCkge1xuICB0cnkge1xuICAgIHJldHVybiB0eXBlb2YgSW50bCAhPT0gXCJ1bmRlZmluZWRcIiAmJiAhIUludGwuUmVsYXRpdmVUaW1lRm9ybWF0O1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8vIE9CSkVDVFMgQU5EIEFSUkFZU1xuXG5leHBvcnQgZnVuY3Rpb24gbWF5YmVBcnJheSh0aGluZykge1xuICByZXR1cm4gQXJyYXkuaXNBcnJheSh0aGluZykgPyB0aGluZyA6IFt0aGluZ107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiZXN0QnkoYXJyLCBieSwgY29tcGFyZSkge1xuICBpZiAoYXJyLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgcmV0dXJuIGFyci5yZWR1Y2UoKGJlc3QsIG5leHQpID0+IHtcbiAgICBjb25zdCBwYWlyID0gW2J5KG5leHQpLCBuZXh0XTtcbiAgICBpZiAoIWJlc3QpIHtcbiAgICAgIHJldHVybiBwYWlyO1xuICAgIH0gZWxzZSBpZiAoY29tcGFyZShiZXN0WzBdLCBwYWlyWzBdKSA9PT0gYmVzdFswXSkge1xuICAgICAgcmV0dXJuIGJlc3Q7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBwYWlyO1xuICAgIH1cbiAgfSwgbnVsbClbMV07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwaWNrKG9iaiwga2V5cykge1xuICByZXR1cm4ga2V5cy5yZWR1Y2UoKGEsIGspID0+IHtcbiAgICBhW2tdID0gb2JqW2tdO1xuICAgIHJldHVybiBhO1xuICB9LCB7fSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYXNPd25Qcm9wZXJ0eShvYmosIHByb3ApIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApO1xufVxuXG4vLyBOVU1CRVJTIEFORCBTVFJJTkdTXG5cbmV4cG9ydCBmdW5jdGlvbiBpbnRlZ2VyQmV0d2Vlbih0aGluZywgYm90dG9tLCB0b3ApIHtcbiAgcmV0dXJuIGlzSW50ZWdlcih0aGluZykgJiYgdGhpbmcgPj0gYm90dG9tICYmIHRoaW5nIDw9IHRvcDtcbn1cblxuLy8geCAlIG4gYnV0IHRha2VzIHRoZSBzaWduIG9mIG4gaW5zdGVhZCBvZiB4XG5leHBvcnQgZnVuY3Rpb24gZmxvb3JNb2QoeCwgbikge1xuICByZXR1cm4geCAtIG4gKiBNYXRoLmZsb29yKHggLyBuKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhZFN0YXJ0KGlucHV0LCBuID0gMikge1xuICBjb25zdCBpc05lZyA9IGlucHV0IDwgMDtcbiAgbGV0IHBhZGRlZDtcbiAgaWYgKGlzTmVnKSB7XG4gICAgcGFkZGVkID0gXCItXCIgKyAoXCJcIiArIC1pbnB1dCkucGFkU3RhcnQobiwgXCIwXCIpO1xuICB9IGVsc2Uge1xuICAgIHBhZGRlZCA9IChcIlwiICsgaW5wdXQpLnBhZFN0YXJ0KG4sIFwiMFwiKTtcbiAgfVxuICByZXR1cm4gcGFkZGVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VJbnRlZ2VyKHN0cmluZykge1xuICBpZiAoaXNVbmRlZmluZWQoc3RyaW5nKSB8fCBzdHJpbmcgPT09IG51bGwgfHwgc3RyaW5nID09PSBcIlwiKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gcGFyc2VJbnQoc3RyaW5nLCAxMCk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlRmxvYXRpbmcoc3RyaW5nKSB7XG4gIGlmIChpc1VuZGVmaW5lZChzdHJpbmcpIHx8IHN0cmluZyA9PT0gbnVsbCB8fCBzdHJpbmcgPT09IFwiXCIpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBwYXJzZUZsb2F0KHN0cmluZyk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlTWlsbGlzKGZyYWN0aW9uKSB7XG4gIC8vIFJldHVybiB1bmRlZmluZWQgKGluc3RlYWQgb2YgMCkgaW4gdGhlc2UgY2FzZXMsIHdoZXJlIGZyYWN0aW9uIGlzIG5vdCBzZXRcbiAgaWYgKGlzVW5kZWZpbmVkKGZyYWN0aW9uKSB8fCBmcmFjdGlvbiA9PT0gbnVsbCB8fCBmcmFjdGlvbiA9PT0gXCJcIikge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgZiA9IHBhcnNlRmxvYXQoXCIwLlwiICsgZnJhY3Rpb24pICogMTAwMDtcbiAgICByZXR1cm4gTWF0aC5mbG9vcihmKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcm91bmRUbyhudW1iZXIsIGRpZ2l0cywgdG93YXJkWmVybyA9IGZhbHNlKSB7XG4gIGNvbnN0IGZhY3RvciA9IDEwICoqIGRpZ2l0cyxcbiAgICByb3VuZGVyID0gdG93YXJkWmVybyA/IE1hdGgudHJ1bmMgOiBNYXRoLnJvdW5kO1xuICByZXR1cm4gcm91bmRlcihudW1iZXIgKiBmYWN0b3IpIC8gZmFjdG9yO1xufVxuXG4vLyBEQVRFIEJBU0lDU1xuXG5leHBvcnQgZnVuY3Rpb24gaXNMZWFwWWVhcih5ZWFyKSB7XG4gIHJldHVybiB5ZWFyICUgNCA9PT0gMCAmJiAoeWVhciAlIDEwMCAhPT0gMCB8fCB5ZWFyICUgNDAwID09PSAwKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRheXNJblllYXIoeWVhcikge1xuICByZXR1cm4gaXNMZWFwWWVhcih5ZWFyKSA/IDM2NiA6IDM2NTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRheXNJbk1vbnRoKHllYXIsIG1vbnRoKSB7XG4gIGNvbnN0IG1vZE1vbnRoID0gZmxvb3JNb2QobW9udGggLSAxLCAxMikgKyAxLFxuICAgIG1vZFllYXIgPSB5ZWFyICsgKG1vbnRoIC0gbW9kTW9udGgpIC8gMTI7XG5cbiAgaWYgKG1vZE1vbnRoID09PSAyKSB7XG4gICAgcmV0dXJuIGlzTGVhcFllYXIobW9kWWVhcikgPyAyOSA6IDI4O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBbMzEsIG51bGwsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzEsIDMwLCAzMSwgMzAsIDMxXVttb2RNb250aCAtIDFdO1xuICB9XG59XG5cbi8vIGNvdmVydCBhIGNhbGVuZGFyIG9iamVjdCB0byBhIGxvY2FsIHRpbWVzdGFtcCAoZXBvY2gsIGJ1dCB3aXRoIHRoZSBvZmZzZXQgYmFrZWQgaW4pXG5leHBvcnQgZnVuY3Rpb24gb2JqVG9Mb2NhbFRTKG9iaikge1xuICBsZXQgZCA9IERhdGUuVVRDKFxuICAgIG9iai55ZWFyLFxuICAgIG9iai5tb250aCAtIDEsXG4gICAgb2JqLmRheSxcbiAgICBvYmouaG91cixcbiAgICBvYmoubWludXRlLFxuICAgIG9iai5zZWNvbmQsXG4gICAgb2JqLm1pbGxpc2Vjb25kXG4gICk7XG5cbiAgLy8gZm9yIGxlZ2FjeSByZWFzb25zLCB5ZWFycyBiZXR3ZWVuIDAgYW5kIDk5IGFyZSBpbnRlcnByZXRlZCBhcyAxOVhYOyByZXZlcnQgdGhhdFxuICBpZiAob2JqLnllYXIgPCAxMDAgJiYgb2JqLnllYXIgPj0gMCkge1xuICAgIGQgPSBuZXcgRGF0ZShkKTtcbiAgICBkLnNldFVUQ0Z1bGxZZWFyKGQuZ2V0VVRDRnVsbFllYXIoKSAtIDE5MDApO1xuICB9XG4gIHJldHVybiArZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlZWtzSW5XZWVrWWVhcih3ZWVrWWVhcikge1xuICBjb25zdCBwMSA9XG4gICAgICAod2Vla1llYXIgK1xuICAgICAgICBNYXRoLmZsb29yKHdlZWtZZWFyIC8gNCkgLVxuICAgICAgICBNYXRoLmZsb29yKHdlZWtZZWFyIC8gMTAwKSArXG4gICAgICAgIE1hdGguZmxvb3Iod2Vla1llYXIgLyA0MDApKSAlXG4gICAgICA3LFxuICAgIGxhc3QgPSB3ZWVrWWVhciAtIDEsXG4gICAgcDIgPSAobGFzdCArIE1hdGguZmxvb3IobGFzdCAvIDQpIC0gTWF0aC5mbG9vcihsYXN0IC8gMTAwKSArIE1hdGguZmxvb3IobGFzdCAvIDQwMCkpICUgNztcbiAgcmV0dXJuIHAxID09PSA0IHx8IHAyID09PSAzID8gNTMgOiA1Mjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVudHJ1bmNhdGVZZWFyKHllYXIpIHtcbiAgaWYgKHllYXIgPiA5OSkge1xuICAgIHJldHVybiB5ZWFyO1xuICB9IGVsc2UgcmV0dXJuIHllYXIgPiA2MCA/IDE5MDAgKyB5ZWFyIDogMjAwMCArIHllYXI7XG59XG5cbi8vIFBBUlNJTkdcblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlWm9uZUluZm8odHMsIG9mZnNldEZvcm1hdCwgbG9jYWxlLCB0aW1lWm9uZSA9IG51bGwpIHtcbiAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHRzKSxcbiAgICBpbnRsT3B0cyA9IHtcbiAgICAgIGhvdXJDeWNsZTogXCJoMjNcIixcbiAgICAgIHllYXI6IFwibnVtZXJpY1wiLFxuICAgICAgbW9udGg6IFwiMi1kaWdpdFwiLFxuICAgICAgZGF5OiBcIjItZGlnaXRcIixcbiAgICAgIGhvdXI6IFwiMi1kaWdpdFwiLFxuICAgICAgbWludXRlOiBcIjItZGlnaXRcIixcbiAgICB9O1xuXG4gIGlmICh0aW1lWm9uZSkge1xuICAgIGludGxPcHRzLnRpbWVab25lID0gdGltZVpvbmU7XG4gIH1cblxuICBjb25zdCBtb2RpZmllZCA9IHsgdGltZVpvbmVOYW1lOiBvZmZzZXRGb3JtYXQsIC4uLmludGxPcHRzIH07XG5cbiAgY29uc3QgcGFyc2VkID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCBtb2RpZmllZClcbiAgICAuZm9ybWF0VG9QYXJ0cyhkYXRlKVxuICAgIC5maW5kKChtKSA9PiBtLnR5cGUudG9Mb3dlckNhc2UoKSA9PT0gXCJ0aW1lem9uZW5hbWVcIik7XG4gIHJldHVybiBwYXJzZWQgPyBwYXJzZWQudmFsdWUgOiBudWxsO1xufVxuXG4vLyBzaWduZWRPZmZzZXQoJy01JywgJzMwJykgLT4gLTMzMFxuZXhwb3J0IGZ1bmN0aW9uIHNpZ25lZE9mZnNldChvZmZIb3VyU3RyLCBvZmZNaW51dGVTdHIpIHtcbiAgbGV0IG9mZkhvdXIgPSBwYXJzZUludChvZmZIb3VyU3RyLCAxMCk7XG5cbiAgLy8gZG9uJ3QgfHwgdGhpcyBiZWNhdXNlIHdlIHdhbnQgdG8gcHJlc2VydmUgLTBcbiAgaWYgKE51bWJlci5pc05hTihvZmZIb3VyKSkge1xuICAgIG9mZkhvdXIgPSAwO1xuICB9XG5cbiAgY29uc3Qgb2ZmTWluID0gcGFyc2VJbnQob2ZmTWludXRlU3RyLCAxMCkgfHwgMCxcbiAgICBvZmZNaW5TaWduZWQgPSBvZmZIb3VyIDwgMCB8fCBPYmplY3QuaXMob2ZmSG91ciwgLTApID8gLW9mZk1pbiA6IG9mZk1pbjtcbiAgcmV0dXJuIG9mZkhvdXIgKiA2MCArIG9mZk1pblNpZ25lZDtcbn1cblxuLy8gQ09FUkNJT05cblxuZXhwb3J0IGZ1bmN0aW9uIGFzTnVtYmVyKHZhbHVlKSB7XG4gIGNvbnN0IG51bWVyaWNWYWx1ZSA9IE51bWJlcih2YWx1ZSk7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09IFwiYm9vbGVhblwiIHx8IHZhbHVlID09PSBcIlwiIHx8IE51bWJlci5pc05hTihudW1lcmljVmFsdWUpKVxuICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcihgSW52YWxpZCB1bml0IHZhbHVlICR7dmFsdWV9YCk7XG4gIHJldHVybiBudW1lcmljVmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVPYmplY3Qob2JqLCBub3JtYWxpemVyKSB7XG4gIGNvbnN0IG5vcm1hbGl6ZWQgPSB7fTtcbiAgZm9yIChjb25zdCB1IGluIG9iaikge1xuICAgIGlmIChoYXNPd25Qcm9wZXJ0eShvYmosIHUpKSB7XG4gICAgICBjb25zdCB2ID0gb2JqW3VdO1xuICAgICAgaWYgKHYgPT09IHVuZGVmaW5lZCB8fCB2ID09PSBudWxsKSBjb250aW51ZTtcbiAgICAgIG5vcm1hbGl6ZWRbbm9ybWFsaXplcih1KV0gPSBhc051bWJlcih2KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG5vcm1hbGl6ZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRPZmZzZXQob2Zmc2V0LCBmb3JtYXQpIHtcbiAgY29uc3QgaG91cnMgPSBNYXRoLnRydW5jKE1hdGguYWJzKG9mZnNldCAvIDYwKSksXG4gICAgbWludXRlcyA9IE1hdGgudHJ1bmMoTWF0aC5hYnMob2Zmc2V0ICUgNjApKSxcbiAgICBzaWduID0gb2Zmc2V0ID49IDAgPyBcIitcIiA6IFwiLVwiO1xuXG4gIHN3aXRjaCAoZm9ybWF0KSB7XG4gICAgY2FzZSBcInNob3J0XCI6XG4gICAgICByZXR1cm4gYCR7c2lnbn0ke3BhZFN0YXJ0KGhvdXJzLCAyKX06JHtwYWRTdGFydChtaW51dGVzLCAyKX1gO1xuICAgIGNhc2UgXCJuYXJyb3dcIjpcbiAgICAgIHJldHVybiBgJHtzaWdufSR7aG91cnN9JHttaW51dGVzID4gMCA/IGA6JHttaW51dGVzfWAgOiBcIlwifWA7XG4gICAgY2FzZSBcInRlY2hpZVwiOlxuICAgICAgcmV0dXJuIGAke3NpZ259JHtwYWRTdGFydChob3VycywgMil9JHtwYWRTdGFydChtaW51dGVzLCAyKX1gO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihgVmFsdWUgZm9ybWF0ICR7Zm9ybWF0fSBpcyBvdXQgb2YgcmFuZ2UgZm9yIHByb3BlcnR5IGZvcm1hdGApO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0aW1lT2JqZWN0KG9iaikge1xuICByZXR1cm4gcGljayhvYmosIFtcImhvdXJcIiwgXCJtaW51dGVcIiwgXCJzZWNvbmRcIiwgXCJtaWxsaXNlY29uZFwiXSk7XG59XG5cbmV4cG9ydCBjb25zdCBpYW5hUmVnZXggPVxuICAvW0EtWmEtel8rLV17MSwyNTZ9KD86Oj9cXC9bQS1aYS16MC05XystXXsxLDI1Nn0oPzpcXC9bQS1aYS16MC05XystXXsxLDI1Nn0pPyk/LztcbiIsICJpbXBvcnQgKiBhcyBGb3JtYXRzIGZyb20gXCIuL2Zvcm1hdHMuanNcIjtcbmltcG9ydCB7IHBpY2sgfSBmcm9tIFwiLi91dGlsLmpzXCI7XG5cbmZ1bmN0aW9uIHN0cmluZ2lmeShvYmopIHtcbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KG9iaiwgT2JqZWN0LmtleXMob2JqKS5zb3J0KCkpO1xufVxuXG4vKipcbiAqIEBwcml2YXRlXG4gKi9cblxuZXhwb3J0IGNvbnN0IG1vbnRoc0xvbmcgPSBbXG4gIFwiSmFudWFyeVwiLFxuICBcIkZlYnJ1YXJ5XCIsXG4gIFwiTWFyY2hcIixcbiAgXCJBcHJpbFwiLFxuICBcIk1heVwiLFxuICBcIkp1bmVcIixcbiAgXCJKdWx5XCIsXG4gIFwiQXVndXN0XCIsXG4gIFwiU2VwdGVtYmVyXCIsXG4gIFwiT2N0b2JlclwiLFxuICBcIk5vdmVtYmVyXCIsXG4gIFwiRGVjZW1iZXJcIixcbl07XG5cbmV4cG9ydCBjb25zdCBtb250aHNTaG9ydCA9IFtcbiAgXCJKYW5cIixcbiAgXCJGZWJcIixcbiAgXCJNYXJcIixcbiAgXCJBcHJcIixcbiAgXCJNYXlcIixcbiAgXCJKdW5cIixcbiAgXCJKdWxcIixcbiAgXCJBdWdcIixcbiAgXCJTZXBcIixcbiAgXCJPY3RcIixcbiAgXCJOb3ZcIixcbiAgXCJEZWNcIixcbl07XG5cbmV4cG9ydCBjb25zdCBtb250aHNOYXJyb3cgPSBbXCJKXCIsIFwiRlwiLCBcIk1cIiwgXCJBXCIsIFwiTVwiLCBcIkpcIiwgXCJKXCIsIFwiQVwiLCBcIlNcIiwgXCJPXCIsIFwiTlwiLCBcIkRcIl07XG5cbmV4cG9ydCBmdW5jdGlvbiBtb250aHMobGVuZ3RoKSB7XG4gIHN3aXRjaCAobGVuZ3RoKSB7XG4gICAgY2FzZSBcIm5hcnJvd1wiOlxuICAgICAgcmV0dXJuIFsuLi5tb250aHNOYXJyb3ddO1xuICAgIGNhc2UgXCJzaG9ydFwiOlxuICAgICAgcmV0dXJuIFsuLi5tb250aHNTaG9ydF07XG4gICAgY2FzZSBcImxvbmdcIjpcbiAgICAgIHJldHVybiBbLi4ubW9udGhzTG9uZ107XG4gICAgY2FzZSBcIm51bWVyaWNcIjpcbiAgICAgIHJldHVybiBbXCIxXCIsIFwiMlwiLCBcIjNcIiwgXCI0XCIsIFwiNVwiLCBcIjZcIiwgXCI3XCIsIFwiOFwiLCBcIjlcIiwgXCIxMFwiLCBcIjExXCIsIFwiMTJcIl07XG4gICAgY2FzZSBcIjItZGlnaXRcIjpcbiAgICAgIHJldHVybiBbXCIwMVwiLCBcIjAyXCIsIFwiMDNcIiwgXCIwNFwiLCBcIjA1XCIsIFwiMDZcIiwgXCIwN1wiLCBcIjA4XCIsIFwiMDlcIiwgXCIxMFwiLCBcIjExXCIsIFwiMTJcIl07XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCB3ZWVrZGF5c0xvbmcgPSBbXG4gIFwiTW9uZGF5XCIsXG4gIFwiVHVlc2RheVwiLFxuICBcIldlZG5lc2RheVwiLFxuICBcIlRodXJzZGF5XCIsXG4gIFwiRnJpZGF5XCIsXG4gIFwiU2F0dXJkYXlcIixcbiAgXCJTdW5kYXlcIixcbl07XG5cbmV4cG9ydCBjb25zdCB3ZWVrZGF5c1Nob3J0ID0gW1wiTW9uXCIsIFwiVHVlXCIsIFwiV2VkXCIsIFwiVGh1XCIsIFwiRnJpXCIsIFwiU2F0XCIsIFwiU3VuXCJdO1xuXG5leHBvcnQgY29uc3Qgd2Vla2RheXNOYXJyb3cgPSBbXCJNXCIsIFwiVFwiLCBcIldcIiwgXCJUXCIsIFwiRlwiLCBcIlNcIiwgXCJTXCJdO1xuXG5leHBvcnQgZnVuY3Rpb24gd2Vla2RheXMobGVuZ3RoKSB7XG4gIHN3aXRjaCAobGVuZ3RoKSB7XG4gICAgY2FzZSBcIm5hcnJvd1wiOlxuICAgICAgcmV0dXJuIFsuLi53ZWVrZGF5c05hcnJvd107XG4gICAgY2FzZSBcInNob3J0XCI6XG4gICAgICByZXR1cm4gWy4uLndlZWtkYXlzU2hvcnRdO1xuICAgIGNhc2UgXCJsb25nXCI6XG4gICAgICByZXR1cm4gWy4uLndlZWtkYXlzTG9uZ107XG4gICAgY2FzZSBcIm51bWVyaWNcIjpcbiAgICAgIHJldHVybiBbXCIxXCIsIFwiMlwiLCBcIjNcIiwgXCI0XCIsIFwiNVwiLCBcIjZcIiwgXCI3XCJdO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgbWVyaWRpZW1zID0gW1wiQU1cIiwgXCJQTVwiXTtcblxuZXhwb3J0IGNvbnN0IGVyYXNMb25nID0gW1wiQmVmb3JlIENocmlzdFwiLCBcIkFubm8gRG9taW5pXCJdO1xuXG5leHBvcnQgY29uc3QgZXJhc1Nob3J0ID0gW1wiQkNcIiwgXCJBRFwiXTtcblxuZXhwb3J0IGNvbnN0IGVyYXNOYXJyb3cgPSBbXCJCXCIsIFwiQVwiXTtcblxuZXhwb3J0IGZ1bmN0aW9uIGVyYXMobGVuZ3RoKSB7XG4gIHN3aXRjaCAobGVuZ3RoKSB7XG4gICAgY2FzZSBcIm5hcnJvd1wiOlxuICAgICAgcmV0dXJuIFsuLi5lcmFzTmFycm93XTtcbiAgICBjYXNlIFwic2hvcnRcIjpcbiAgICAgIHJldHVybiBbLi4uZXJhc1Nob3J0XTtcbiAgICBjYXNlIFwibG9uZ1wiOlxuICAgICAgcmV0dXJuIFsuLi5lcmFzTG9uZ107XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXJpZGllbUZvckRhdGVUaW1lKGR0KSB7XG4gIHJldHVybiBtZXJpZGllbXNbZHQuaG91ciA8IDEyID8gMCA6IDFdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd2Vla2RheUZvckRhdGVUaW1lKGR0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIHdlZWtkYXlzKGxlbmd0aClbZHQud2Vla2RheSAtIDFdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbW9udGhGb3JEYXRlVGltZShkdCwgbGVuZ3RoKSB7XG4gIHJldHVybiBtb250aHMobGVuZ3RoKVtkdC5tb250aCAtIDFdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXJhRm9yRGF0ZVRpbWUoZHQsIGxlbmd0aCkge1xuICByZXR1cm4gZXJhcyhsZW5ndGgpW2R0LnllYXIgPCAwID8gMCA6IDFdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0UmVsYXRpdmVUaW1lKHVuaXQsIGNvdW50LCBudW1lcmljID0gXCJhbHdheXNcIiwgbmFycm93ID0gZmFsc2UpIHtcbiAgY29uc3QgdW5pdHMgPSB7XG4gICAgeWVhcnM6IFtcInllYXJcIiwgXCJ5ci5cIl0sXG4gICAgcXVhcnRlcnM6IFtcInF1YXJ0ZXJcIiwgXCJxdHIuXCJdLFxuICAgIG1vbnRoczogW1wibW9udGhcIiwgXCJtby5cIl0sXG4gICAgd2Vla3M6IFtcIndlZWtcIiwgXCJ3ay5cIl0sXG4gICAgZGF5czogW1wiZGF5XCIsIFwiZGF5XCIsIFwiZGF5c1wiXSxcbiAgICBob3VyczogW1wiaG91clwiLCBcImhyLlwiXSxcbiAgICBtaW51dGVzOiBbXCJtaW51dGVcIiwgXCJtaW4uXCJdLFxuICAgIHNlY29uZHM6IFtcInNlY29uZFwiLCBcInNlYy5cIl0sXG4gIH07XG5cbiAgY29uc3QgbGFzdGFibGUgPSBbXCJob3Vyc1wiLCBcIm1pbnV0ZXNcIiwgXCJzZWNvbmRzXCJdLmluZGV4T2YodW5pdCkgPT09IC0xO1xuXG4gIGlmIChudW1lcmljID09PSBcImF1dG9cIiAmJiBsYXN0YWJsZSkge1xuICAgIGNvbnN0IGlzRGF5ID0gdW5pdCA9PT0gXCJkYXlzXCI7XG4gICAgc3dpdGNoIChjb3VudCkge1xuICAgICAgY2FzZSAxOlxuICAgICAgICByZXR1cm4gaXNEYXkgPyBcInRvbW9ycm93XCIgOiBgbmV4dCAke3VuaXRzW3VuaXRdWzBdfWA7XG4gICAgICBjYXNlIC0xOlxuICAgICAgICByZXR1cm4gaXNEYXkgPyBcInllc3RlcmRheVwiIDogYGxhc3QgJHt1bml0c1t1bml0XVswXX1gO1xuICAgICAgY2FzZSAwOlxuICAgICAgICByZXR1cm4gaXNEYXkgPyBcInRvZGF5XCIgOiBgdGhpcyAke3VuaXRzW3VuaXRdWzBdfWA7XG4gICAgICBkZWZhdWx0OiAvLyBmYWxsIHRocm91Z2hcbiAgICB9XG4gIH1cblxuICBjb25zdCBpc0luUGFzdCA9IE9iamVjdC5pcyhjb3VudCwgLTApIHx8IGNvdW50IDwgMCxcbiAgICBmbXRWYWx1ZSA9IE1hdGguYWJzKGNvdW50KSxcbiAgICBzaW5ndWxhciA9IGZtdFZhbHVlID09PSAxLFxuICAgIGxpbFVuaXRzID0gdW5pdHNbdW5pdF0sXG4gICAgZm10VW5pdCA9IG5hcnJvd1xuICAgICAgPyBzaW5ndWxhclxuICAgICAgICA/IGxpbFVuaXRzWzFdXG4gICAgICAgIDogbGlsVW5pdHNbMl0gfHwgbGlsVW5pdHNbMV1cbiAgICAgIDogc2luZ3VsYXJcbiAgICAgID8gdW5pdHNbdW5pdF1bMF1cbiAgICAgIDogdW5pdDtcbiAgcmV0dXJuIGlzSW5QYXN0ID8gYCR7Zm10VmFsdWV9ICR7Zm10VW5pdH0gYWdvYCA6IGBpbiAke2ZtdFZhbHVlfSAke2ZtdFVuaXR9YDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdFN0cmluZyhrbm93bkZvcm1hdCkge1xuICAvLyB0aGVzZSBhbGwgaGF2ZSB0aGUgb2Zmc2V0cyByZW1vdmVkIGJlY2F1c2Ugd2UgZG9uJ3QgaGF2ZSBhY2Nlc3MgdG8gdGhlbVxuICAvLyB3aXRob3V0IGFsbCB0aGUgaW50bCBzdHVmZiB0aGlzIGlzIGJhY2tmaWxsaW5nXG4gIGNvbnN0IGZpbHRlcmVkID0gcGljayhrbm93bkZvcm1hdCwgW1xuICAgICAgXCJ3ZWVrZGF5XCIsXG4gICAgICBcImVyYVwiLFxuICAgICAgXCJ5ZWFyXCIsXG4gICAgICBcIm1vbnRoXCIsXG4gICAgICBcImRheVwiLFxuICAgICAgXCJob3VyXCIsXG4gICAgICBcIm1pbnV0ZVwiLFxuICAgICAgXCJzZWNvbmRcIixcbiAgICAgIFwidGltZVpvbmVOYW1lXCIsXG4gICAgICBcImhvdXJDeWNsZVwiLFxuICAgIF0pLFxuICAgIGtleSA9IHN0cmluZ2lmeShmaWx0ZXJlZCksXG4gICAgZGF0ZVRpbWVIdWdlID0gXCJFRUVFLCBMTExMIGQsIHl5eXksIGg6bW0gYVwiO1xuICBzd2l0Y2ggKGtleSkge1xuICAgIGNhc2Ugc3RyaW5naWZ5KEZvcm1hdHMuREFURV9TSE9SVCk6XG4gICAgICByZXR1cm4gXCJNL2QveXl5eVwiO1xuICAgIGNhc2Ugc3RyaW5naWZ5KEZvcm1hdHMuREFURV9NRUQpOlxuICAgICAgcmV0dXJuIFwiTExMIGQsIHl5eXlcIjtcbiAgICBjYXNlIHN0cmluZ2lmeShGb3JtYXRzLkRBVEVfTUVEX1dJVEhfV0VFS0RBWSk6XG4gICAgICByZXR1cm4gXCJFRUUsIExMTCBkLCB5eXl5XCI7XG4gICAgY2FzZSBzdHJpbmdpZnkoRm9ybWF0cy5EQVRFX0ZVTEwpOlxuICAgICAgcmV0dXJuIFwiTExMTCBkLCB5eXl5XCI7XG4gICAgY2FzZSBzdHJpbmdpZnkoRm9ybWF0cy5EQVRFX0hVR0UpOlxuICAgICAgcmV0dXJuIFwiRUVFRSwgTExMTCBkLCB5eXl5XCI7XG4gICAgY2FzZSBzdHJpbmdpZnkoRm9ybWF0cy5USU1FX1NJTVBMRSk6XG4gICAgICByZXR1cm4gXCJoOm1tIGFcIjtcbiAgICBjYXNlIHN0cmluZ2lmeShGb3JtYXRzLlRJTUVfV0lUSF9TRUNPTkRTKTpcbiAgICAgIHJldHVybiBcImg6bW06c3MgYVwiO1xuICAgIGNhc2Ugc3RyaW5naWZ5KEZvcm1hdHMuVElNRV9XSVRIX1NIT1JUX09GRlNFVCk6XG4gICAgICByZXR1cm4gXCJoOm1tIGFcIjtcbiAgICBjYXNlIHN0cmluZ2lmeShGb3JtYXRzLlRJTUVfV0lUSF9MT05HX09GRlNFVCk6XG4gICAgICByZXR1cm4gXCJoOm1tIGFcIjtcbiAgICBjYXNlIHN0cmluZ2lmeShGb3JtYXRzLlRJTUVfMjRfU0lNUExFKTpcbiAgICAgIHJldHVybiBcIkhIOm1tXCI7XG4gICAgY2FzZSBzdHJpbmdpZnkoRm9ybWF0cy5USU1FXzI0X1dJVEhfU0VDT05EUyk6XG4gICAgICByZXR1cm4gXCJISDptbTpzc1wiO1xuICAgIGNhc2Ugc3RyaW5naWZ5KEZvcm1hdHMuVElNRV8yNF9XSVRIX1NIT1JUX09GRlNFVCk6XG4gICAgICByZXR1cm4gXCJISDptbVwiO1xuICAgIGNhc2Ugc3RyaW5naWZ5KEZvcm1hdHMuVElNRV8yNF9XSVRIX0xPTkdfT0ZGU0VUKTpcbiAgICAgIHJldHVybiBcIkhIOm1tXCI7XG4gICAgY2FzZSBzdHJpbmdpZnkoRm9ybWF0cy5EQVRFVElNRV9TSE9SVCk6XG4gICAgICByZXR1cm4gXCJNL2QveXl5eSwgaDptbSBhXCI7XG4gICAgY2FzZSBzdHJpbmdpZnkoRm9ybWF0cy5EQVRFVElNRV9NRUQpOlxuICAgICAgcmV0dXJuIFwiTExMIGQsIHl5eXksIGg6bW0gYVwiO1xuICAgIGNhc2Ugc3RyaW5naWZ5KEZvcm1hdHMuREFURVRJTUVfRlVMTCk6XG4gICAgICByZXR1cm4gXCJMTExMIGQsIHl5eXksIGg6bW0gYVwiO1xuICAgIGNhc2Ugc3RyaW5naWZ5KEZvcm1hdHMuREFURVRJTUVfSFVHRSk6XG4gICAgICByZXR1cm4gZGF0ZVRpbWVIdWdlO1xuICAgIGNhc2Ugc3RyaW5naWZ5KEZvcm1hdHMuREFURVRJTUVfU0hPUlRfV0lUSF9TRUNPTkRTKTpcbiAgICAgIHJldHVybiBcIk0vZC95eXl5LCBoOm1tOnNzIGFcIjtcbiAgICBjYXNlIHN0cmluZ2lmeShGb3JtYXRzLkRBVEVUSU1FX01FRF9XSVRIX1NFQ09ORFMpOlxuICAgICAgcmV0dXJuIFwiTExMIGQsIHl5eXksIGg6bW06c3MgYVwiO1xuICAgIGNhc2Ugc3RyaW5naWZ5KEZvcm1hdHMuREFURVRJTUVfTUVEX1dJVEhfV0VFS0RBWSk6XG4gICAgICByZXR1cm4gXCJFRUUsIGQgTExMIHl5eXksIGg6bW0gYVwiO1xuICAgIGNhc2Ugc3RyaW5naWZ5KEZvcm1hdHMuREFURVRJTUVfRlVMTF9XSVRIX1NFQ09ORFMpOlxuICAgICAgcmV0dXJuIFwiTExMTCBkLCB5eXl5LCBoOm1tOnNzIGFcIjtcbiAgICBjYXNlIHN0cmluZ2lmeShGb3JtYXRzLkRBVEVUSU1FX0hVR0VfV0lUSF9TRUNPTkRTKTpcbiAgICAgIHJldHVybiBcIkVFRUUsIExMTEwgZCwgeXl5eSwgaDptbTpzcyBhXCI7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBkYXRlVGltZUh1Z2U7XG4gIH1cbn1cbiIsICJpbXBvcnQgKiBhcyBFbmdsaXNoIGZyb20gXCIuL2VuZ2xpc2guanNcIjtcbmltcG9ydCAqIGFzIEZvcm1hdHMgZnJvbSBcIi4vZm9ybWF0cy5qc1wiO1xuaW1wb3J0IHsgcGFkU3RhcnQgfSBmcm9tIFwiLi91dGlsLmpzXCI7XG5cbmZ1bmN0aW9uIHN0cmluZ2lmeVRva2VucyhzcGxpdHMsIHRva2VuVG9TdHJpbmcpIHtcbiAgbGV0IHMgPSBcIlwiO1xuICBmb3IgKGNvbnN0IHRva2VuIG9mIHNwbGl0cykge1xuICAgIGlmICh0b2tlbi5saXRlcmFsKSB7XG4gICAgICBzICs9IHRva2VuLnZhbDtcbiAgICB9IGVsc2Uge1xuICAgICAgcyArPSB0b2tlblRvU3RyaW5nKHRva2VuLnZhbCk7XG4gICAgfVxuICB9XG4gIHJldHVybiBzO1xufVxuXG5jb25zdCBtYWNyb1Rva2VuVG9Gb3JtYXRPcHRzID0ge1xuICBEOiBGb3JtYXRzLkRBVEVfU0hPUlQsXG4gIEREOiBGb3JtYXRzLkRBVEVfTUVELFxuICBEREQ6IEZvcm1hdHMuREFURV9GVUxMLFxuICBEREREOiBGb3JtYXRzLkRBVEVfSFVHRSxcbiAgdDogRm9ybWF0cy5USU1FX1NJTVBMRSxcbiAgdHQ6IEZvcm1hdHMuVElNRV9XSVRIX1NFQ09ORFMsXG4gIHR0dDogRm9ybWF0cy5USU1FX1dJVEhfU0hPUlRfT0ZGU0VULFxuICB0dHR0OiBGb3JtYXRzLlRJTUVfV0lUSF9MT05HX09GRlNFVCxcbiAgVDogRm9ybWF0cy5USU1FXzI0X1NJTVBMRSxcbiAgVFQ6IEZvcm1hdHMuVElNRV8yNF9XSVRIX1NFQ09ORFMsXG4gIFRUVDogRm9ybWF0cy5USU1FXzI0X1dJVEhfU0hPUlRfT0ZGU0VULFxuICBUVFRUOiBGb3JtYXRzLlRJTUVfMjRfV0lUSF9MT05HX09GRlNFVCxcbiAgZjogRm9ybWF0cy5EQVRFVElNRV9TSE9SVCxcbiAgZmY6IEZvcm1hdHMuREFURVRJTUVfTUVELFxuICBmZmY6IEZvcm1hdHMuREFURVRJTUVfRlVMTCxcbiAgZmZmZjogRm9ybWF0cy5EQVRFVElNRV9IVUdFLFxuICBGOiBGb3JtYXRzLkRBVEVUSU1FX1NIT1JUX1dJVEhfU0VDT05EUyxcbiAgRkY6IEZvcm1hdHMuREFURVRJTUVfTUVEX1dJVEhfU0VDT05EUyxcbiAgRkZGOiBGb3JtYXRzLkRBVEVUSU1FX0ZVTExfV0lUSF9TRUNPTkRTLFxuICBGRkZGOiBGb3JtYXRzLkRBVEVUSU1FX0hVR0VfV0lUSF9TRUNPTkRTLFxufTtcblxuLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZvcm1hdHRlciB7XG4gIHN0YXRpYyBjcmVhdGUobG9jYWxlLCBvcHRzID0ge30pIHtcbiAgICByZXR1cm4gbmV3IEZvcm1hdHRlcihsb2NhbGUsIG9wdHMpO1xuICB9XG5cbiAgc3RhdGljIHBhcnNlRm9ybWF0KGZtdCkge1xuICAgIGxldCBjdXJyZW50ID0gbnVsbCxcbiAgICAgIGN1cnJlbnRGdWxsID0gXCJcIixcbiAgICAgIGJyYWNrZXRlZCA9IGZhbHNlO1xuICAgIGNvbnN0IHNwbGl0cyA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZm10Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBjID0gZm10LmNoYXJBdChpKTtcbiAgICAgIGlmIChjID09PSBcIidcIikge1xuICAgICAgICBpZiAoY3VycmVudEZ1bGwubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHNwbGl0cy5wdXNoKHsgbGl0ZXJhbDogYnJhY2tldGVkLCB2YWw6IGN1cnJlbnRGdWxsIH0pO1xuICAgICAgICB9XG4gICAgICAgIGN1cnJlbnQgPSBudWxsO1xuICAgICAgICBjdXJyZW50RnVsbCA9IFwiXCI7XG4gICAgICAgIGJyYWNrZXRlZCA9ICFicmFja2V0ZWQ7XG4gICAgICB9IGVsc2UgaWYgKGJyYWNrZXRlZCkge1xuICAgICAgICBjdXJyZW50RnVsbCArPSBjO1xuICAgICAgfSBlbHNlIGlmIChjID09PSBjdXJyZW50KSB7XG4gICAgICAgIGN1cnJlbnRGdWxsICs9IGM7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoY3VycmVudEZ1bGwubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHNwbGl0cy5wdXNoKHsgbGl0ZXJhbDogZmFsc2UsIHZhbDogY3VycmVudEZ1bGwgfSk7XG4gICAgICAgIH1cbiAgICAgICAgY3VycmVudEZ1bGwgPSBjO1xuICAgICAgICBjdXJyZW50ID0gYztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY3VycmVudEZ1bGwubGVuZ3RoID4gMCkge1xuICAgICAgc3BsaXRzLnB1c2goeyBsaXRlcmFsOiBicmFja2V0ZWQsIHZhbDogY3VycmVudEZ1bGwgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNwbGl0cztcbiAgfVxuXG4gIHN0YXRpYyBtYWNyb1Rva2VuVG9Gb3JtYXRPcHRzKHRva2VuKSB7XG4gICAgcmV0dXJuIG1hY3JvVG9rZW5Ub0Zvcm1hdE9wdHNbdG9rZW5dO1xuICB9XG5cbiAgY29uc3RydWN0b3IobG9jYWxlLCBmb3JtYXRPcHRzKSB7XG4gICAgdGhpcy5vcHRzID0gZm9ybWF0T3B0cztcbiAgICB0aGlzLmxvYyA9IGxvY2FsZTtcbiAgICB0aGlzLnN5c3RlbUxvYyA9IG51bGw7XG4gIH1cblxuICBmb3JtYXRXaXRoU3lzdGVtRGVmYXVsdChkdCwgb3B0cykge1xuICAgIGlmICh0aGlzLnN5c3RlbUxvYyA9PT0gbnVsbCkge1xuICAgICAgdGhpcy5zeXN0ZW1Mb2MgPSB0aGlzLmxvYy5yZWRlZmF1bHRUb1N5c3RlbSgpO1xuICAgIH1cbiAgICBjb25zdCBkZiA9IHRoaXMuc3lzdGVtTG9jLmR0Rm9ybWF0dGVyKGR0LCB7IC4uLnRoaXMub3B0cywgLi4ub3B0cyB9KTtcbiAgICByZXR1cm4gZGYuZm9ybWF0KCk7XG4gIH1cblxuICBmb3JtYXREYXRlVGltZShkdCwgb3B0cyA9IHt9KSB7XG4gICAgY29uc3QgZGYgPSB0aGlzLmxvYy5kdEZvcm1hdHRlcihkdCwgeyAuLi50aGlzLm9wdHMsIC4uLm9wdHMgfSk7XG4gICAgcmV0dXJuIGRmLmZvcm1hdCgpO1xuICB9XG5cbiAgZm9ybWF0RGF0ZVRpbWVQYXJ0cyhkdCwgb3B0cyA9IHt9KSB7XG4gICAgY29uc3QgZGYgPSB0aGlzLmxvYy5kdEZvcm1hdHRlcihkdCwgeyAuLi50aGlzLm9wdHMsIC4uLm9wdHMgfSk7XG4gICAgcmV0dXJuIGRmLmZvcm1hdFRvUGFydHMoKTtcbiAgfVxuXG4gIHJlc29sdmVkT3B0aW9ucyhkdCwgb3B0cyA9IHt9KSB7XG4gICAgY29uc3QgZGYgPSB0aGlzLmxvYy5kdEZvcm1hdHRlcihkdCwgeyAuLi50aGlzLm9wdHMsIC4uLm9wdHMgfSk7XG4gICAgcmV0dXJuIGRmLnJlc29sdmVkT3B0aW9ucygpO1xuICB9XG5cbiAgbnVtKG4sIHAgPSAwKSB7XG4gICAgLy8gd2UgZ2V0IHNvbWUgcGVyZiBvdXQgb2YgZG9pbmcgdGhpcyBoZXJlLCBhbm5veWluZ2x5XG4gICAgaWYgKHRoaXMub3B0cy5mb3JjZVNpbXBsZSkge1xuICAgICAgcmV0dXJuIHBhZFN0YXJ0KG4sIHApO1xuICAgIH1cblxuICAgIGNvbnN0IG9wdHMgPSB7IC4uLnRoaXMub3B0cyB9O1xuXG4gICAgaWYgKHAgPiAwKSB7XG4gICAgICBvcHRzLnBhZFRvID0gcDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5sb2MubnVtYmVyRm9ybWF0dGVyKG9wdHMpLmZvcm1hdChuKTtcbiAgfVxuXG4gIGZvcm1hdERhdGVUaW1lRnJvbVN0cmluZyhkdCwgZm10KSB7XG4gICAgY29uc3Qga25vd25FbmdsaXNoID0gdGhpcy5sb2MubGlzdGluZ01vZGUoKSA9PT0gXCJlblwiLFxuICAgICAgdXNlRGF0ZVRpbWVGb3JtYXR0ZXIgPSB0aGlzLmxvYy5vdXRwdXRDYWxlbmRhciAmJiB0aGlzLmxvYy5vdXRwdXRDYWxlbmRhciAhPT0gXCJncmVnb3J5XCIsXG4gICAgICBzdHJpbmcgPSAob3B0cywgZXh0cmFjdCkgPT4gdGhpcy5sb2MuZXh0cmFjdChkdCwgb3B0cywgZXh0cmFjdCksXG4gICAgICBmb3JtYXRPZmZzZXQgPSAob3B0cykgPT4ge1xuICAgICAgICBpZiAoZHQuaXNPZmZzZXRGaXhlZCAmJiBkdC5vZmZzZXQgPT09IDAgJiYgb3B0cy5hbGxvd1opIHtcbiAgICAgICAgICByZXR1cm4gXCJaXCI7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZHQuaXNWYWxpZCA/IGR0LnpvbmUuZm9ybWF0T2Zmc2V0KGR0LnRzLCBvcHRzLmZvcm1hdCkgOiBcIlwiO1xuICAgICAgfSxcbiAgICAgIG1lcmlkaWVtID0gKCkgPT5cbiAgICAgICAga25vd25FbmdsaXNoXG4gICAgICAgICAgPyBFbmdsaXNoLm1lcmlkaWVtRm9yRGF0ZVRpbWUoZHQpXG4gICAgICAgICAgOiBzdHJpbmcoeyBob3VyOiBcIm51bWVyaWNcIiwgaG91ckN5Y2xlOiBcImgxMlwiIH0sIFwiZGF5cGVyaW9kXCIpLFxuICAgICAgbW9udGggPSAobGVuZ3RoLCBzdGFuZGFsb25lKSA9PlxuICAgICAgICBrbm93bkVuZ2xpc2hcbiAgICAgICAgICA/IEVuZ2xpc2gubW9udGhGb3JEYXRlVGltZShkdCwgbGVuZ3RoKVxuICAgICAgICAgIDogc3RyaW5nKHN0YW5kYWxvbmUgPyB7IG1vbnRoOiBsZW5ndGggfSA6IHsgbW9udGg6IGxlbmd0aCwgZGF5OiBcIm51bWVyaWNcIiB9LCBcIm1vbnRoXCIpLFxuICAgICAgd2Vla2RheSA9IChsZW5ndGgsIHN0YW5kYWxvbmUpID0+XG4gICAgICAgIGtub3duRW5nbGlzaFxuICAgICAgICAgID8gRW5nbGlzaC53ZWVrZGF5Rm9yRGF0ZVRpbWUoZHQsIGxlbmd0aClcbiAgICAgICAgICA6IHN0cmluZyhcbiAgICAgICAgICAgICAgc3RhbmRhbG9uZSA/IHsgd2Vla2RheTogbGVuZ3RoIH0gOiB7IHdlZWtkYXk6IGxlbmd0aCwgbW9udGg6IFwibG9uZ1wiLCBkYXk6IFwibnVtZXJpY1wiIH0sXG4gICAgICAgICAgICAgIFwid2Vla2RheVwiXG4gICAgICAgICAgICApLFxuICAgICAgbWF5YmVNYWNybyA9ICh0b2tlbikgPT4ge1xuICAgICAgICBjb25zdCBmb3JtYXRPcHRzID0gRm9ybWF0dGVyLm1hY3JvVG9rZW5Ub0Zvcm1hdE9wdHModG9rZW4pO1xuICAgICAgICBpZiAoZm9ybWF0T3B0cykge1xuICAgICAgICAgIHJldHVybiB0aGlzLmZvcm1hdFdpdGhTeXN0ZW1EZWZhdWx0KGR0LCBmb3JtYXRPcHRzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdG9rZW47XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBlcmEgPSAobGVuZ3RoKSA9PlxuICAgICAgICBrbm93bkVuZ2xpc2ggPyBFbmdsaXNoLmVyYUZvckRhdGVUaW1lKGR0LCBsZW5ndGgpIDogc3RyaW5nKHsgZXJhOiBsZW5ndGggfSwgXCJlcmFcIiksXG4gICAgICB0b2tlblRvU3RyaW5nID0gKHRva2VuKSA9PiB7XG4gICAgICAgIC8vIFdoZXJlIHBvc3NpYmxlOiBodHRwOi8vY2xkci51bmljb2RlLm9yZy90cmFuc2xhdGlvbi9kYXRlLXRpbWUtMS9kYXRlLXRpbWUjVE9DLVN0YW5kYWxvbmUtdnMuLUZvcm1hdC1TdHlsZXNcbiAgICAgICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgICAgIC8vIG1zXG4gICAgICAgICAgY2FzZSBcIlNcIjpcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5taWxsaXNlY29uZCk7XG4gICAgICAgICAgY2FzZSBcInVcIjpcbiAgICAgICAgICAvLyBmYWxscyB0aHJvdWdoXG4gICAgICAgICAgY2FzZSBcIlNTU1wiOlxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0Lm1pbGxpc2Vjb25kLCAzKTtcbiAgICAgICAgICAvLyBzZWNvbmRzXG4gICAgICAgICAgY2FzZSBcInNcIjpcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5zZWNvbmQpO1xuICAgICAgICAgIGNhc2UgXCJzc1wiOlxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LnNlY29uZCwgMik7XG4gICAgICAgICAgLy8gZnJhY3Rpb25hbCBzZWNvbmRzXG4gICAgICAgICAgY2FzZSBcInV1XCI6XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oTWF0aC5mbG9vcihkdC5taWxsaXNlY29uZCAvIDEwKSwgMik7XG4gICAgICAgICAgY2FzZSBcInV1dVwiOlxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKE1hdGguZmxvb3IoZHQubWlsbGlzZWNvbmQgLyAxMDApKTtcbiAgICAgICAgICAvLyBtaW51dGVzXG4gICAgICAgICAgY2FzZSBcIm1cIjpcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5taW51dGUpO1xuICAgICAgICAgIGNhc2UgXCJtbVwiOlxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0Lm1pbnV0ZSwgMik7XG4gICAgICAgICAgLy8gaG91cnNcbiAgICAgICAgICBjYXNlIFwiaFwiOlxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LmhvdXIgJSAxMiA9PT0gMCA/IDEyIDogZHQuaG91ciAlIDEyKTtcbiAgICAgICAgICBjYXNlIFwiaGhcIjpcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5ob3VyICUgMTIgPT09IDAgPyAxMiA6IGR0LmhvdXIgJSAxMiwgMik7XG4gICAgICAgICAgY2FzZSBcIkhcIjpcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5ob3VyKTtcbiAgICAgICAgICBjYXNlIFwiSEhcIjpcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5ob3VyLCAyKTtcbiAgICAgICAgICAvLyBvZmZzZXRcbiAgICAgICAgICBjYXNlIFwiWlwiOlxuICAgICAgICAgICAgLy8gbGlrZSArNlxuICAgICAgICAgICAgcmV0dXJuIGZvcm1hdE9mZnNldCh7IGZvcm1hdDogXCJuYXJyb3dcIiwgYWxsb3daOiB0aGlzLm9wdHMuYWxsb3daIH0pO1xuICAgICAgICAgIGNhc2UgXCJaWlwiOlxuICAgICAgICAgICAgLy8gbGlrZSArMDY6MDBcbiAgICAgICAgICAgIHJldHVybiBmb3JtYXRPZmZzZXQoeyBmb3JtYXQ6IFwic2hvcnRcIiwgYWxsb3daOiB0aGlzLm9wdHMuYWxsb3daIH0pO1xuICAgICAgICAgIGNhc2UgXCJaWlpcIjpcbiAgICAgICAgICAgIC8vIGxpa2UgKzA2MDBcbiAgICAgICAgICAgIHJldHVybiBmb3JtYXRPZmZzZXQoeyBmb3JtYXQ6IFwidGVjaGllXCIsIGFsbG93WjogdGhpcy5vcHRzLmFsbG93WiB9KTtcbiAgICAgICAgICBjYXNlIFwiWlpaWlwiOlxuICAgICAgICAgICAgLy8gbGlrZSBFU1RcbiAgICAgICAgICAgIHJldHVybiBkdC56b25lLm9mZnNldE5hbWUoZHQudHMsIHsgZm9ybWF0OiBcInNob3J0XCIsIGxvY2FsZTogdGhpcy5sb2MubG9jYWxlIH0pO1xuICAgICAgICAgIGNhc2UgXCJaWlpaWlwiOlxuICAgICAgICAgICAgLy8gbGlrZSBFYXN0ZXJuIFN0YW5kYXJkIFRpbWVcbiAgICAgICAgICAgIHJldHVybiBkdC56b25lLm9mZnNldE5hbWUoZHQudHMsIHsgZm9ybWF0OiBcImxvbmdcIiwgbG9jYWxlOiB0aGlzLmxvYy5sb2NhbGUgfSk7XG4gICAgICAgICAgLy8gem9uZVxuICAgICAgICAgIGNhc2UgXCJ6XCI6XG4gICAgICAgICAgICAvLyBsaWtlIEFtZXJpY2EvTmV3X1lvcmtcbiAgICAgICAgICAgIHJldHVybiBkdC56b25lTmFtZTtcbiAgICAgICAgICAvLyBtZXJpZGllbXNcbiAgICAgICAgICBjYXNlIFwiYVwiOlxuICAgICAgICAgICAgcmV0dXJuIG1lcmlkaWVtKCk7XG4gICAgICAgICAgLy8gZGF0ZXNcbiAgICAgICAgICBjYXNlIFwiZFwiOlxuICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyID8gc3RyaW5nKHsgZGF5OiBcIm51bWVyaWNcIiB9LCBcImRheVwiKSA6IHRoaXMubnVtKGR0LmRheSk7XG4gICAgICAgICAgY2FzZSBcImRkXCI6XG4gICAgICAgICAgICByZXR1cm4gdXNlRGF0ZVRpbWVGb3JtYXR0ZXIgPyBzdHJpbmcoeyBkYXk6IFwiMi1kaWdpdFwiIH0sIFwiZGF5XCIpIDogdGhpcy5udW0oZHQuZGF5LCAyKTtcbiAgICAgICAgICAvLyB3ZWVrZGF5cyAtIHN0YW5kYWxvbmVcbiAgICAgICAgICBjYXNlIFwiY1wiOlxuICAgICAgICAgICAgLy8gbGlrZSAxXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQud2Vla2RheSk7XG4gICAgICAgICAgY2FzZSBcImNjY1wiOlxuICAgICAgICAgICAgLy8gbGlrZSAnVHVlcydcbiAgICAgICAgICAgIHJldHVybiB3ZWVrZGF5KFwic2hvcnRcIiwgdHJ1ZSk7XG4gICAgICAgICAgY2FzZSBcImNjY2NcIjpcbiAgICAgICAgICAgIC8vIGxpa2UgJ1R1ZXNkYXknXG4gICAgICAgICAgICByZXR1cm4gd2Vla2RheShcImxvbmdcIiwgdHJ1ZSk7XG4gICAgICAgICAgY2FzZSBcImNjY2NjXCI6XG4gICAgICAgICAgICAvLyBsaWtlICdUJ1xuICAgICAgICAgICAgcmV0dXJuIHdlZWtkYXkoXCJuYXJyb3dcIiwgdHJ1ZSk7XG4gICAgICAgICAgLy8gd2Vla2RheXMgLSBmb3JtYXRcbiAgICAgICAgICBjYXNlIFwiRVwiOlxuICAgICAgICAgICAgLy8gbGlrZSAxXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQud2Vla2RheSk7XG4gICAgICAgICAgY2FzZSBcIkVFRVwiOlxuICAgICAgICAgICAgLy8gbGlrZSAnVHVlcydcbiAgICAgICAgICAgIHJldHVybiB3ZWVrZGF5KFwic2hvcnRcIiwgZmFsc2UpO1xuICAgICAgICAgIGNhc2UgXCJFRUVFXCI6XG4gICAgICAgICAgICAvLyBsaWtlICdUdWVzZGF5J1xuICAgICAgICAgICAgcmV0dXJuIHdlZWtkYXkoXCJsb25nXCIsIGZhbHNlKTtcbiAgICAgICAgICBjYXNlIFwiRUVFRUVcIjpcbiAgICAgICAgICAgIC8vIGxpa2UgJ1QnXG4gICAgICAgICAgICByZXR1cm4gd2Vla2RheShcIm5hcnJvd1wiLCBmYWxzZSk7XG4gICAgICAgICAgLy8gbW9udGhzIC0gc3RhbmRhbG9uZVxuICAgICAgICAgIGNhc2UgXCJMXCI6XG4gICAgICAgICAgICAvLyBsaWtlIDFcbiAgICAgICAgICAgIHJldHVybiB1c2VEYXRlVGltZUZvcm1hdHRlclxuICAgICAgICAgICAgICA/IHN0cmluZyh7IG1vbnRoOiBcIm51bWVyaWNcIiwgZGF5OiBcIm51bWVyaWNcIiB9LCBcIm1vbnRoXCIpXG4gICAgICAgICAgICAgIDogdGhpcy5udW0oZHQubW9udGgpO1xuICAgICAgICAgIGNhc2UgXCJMTFwiOlxuICAgICAgICAgICAgLy8gbGlrZSAwMSwgZG9lc24ndCBzZWVtIHRvIHdvcmtcbiAgICAgICAgICAgIHJldHVybiB1c2VEYXRlVGltZUZvcm1hdHRlclxuICAgICAgICAgICAgICA/IHN0cmluZyh7IG1vbnRoOiBcIjItZGlnaXRcIiwgZGF5OiBcIm51bWVyaWNcIiB9LCBcIm1vbnRoXCIpXG4gICAgICAgICAgICAgIDogdGhpcy5udW0oZHQubW9udGgsIDIpO1xuICAgICAgICAgIGNhc2UgXCJMTExcIjpcbiAgICAgICAgICAgIC8vIGxpa2UgSmFuXG4gICAgICAgICAgICByZXR1cm4gbW9udGgoXCJzaG9ydFwiLCB0cnVlKTtcbiAgICAgICAgICBjYXNlIFwiTExMTFwiOlxuICAgICAgICAgICAgLy8gbGlrZSBKYW51YXJ5XG4gICAgICAgICAgICByZXR1cm4gbW9udGgoXCJsb25nXCIsIHRydWUpO1xuICAgICAgICAgIGNhc2UgXCJMTExMTFwiOlxuICAgICAgICAgICAgLy8gbGlrZSBKXG4gICAgICAgICAgICByZXR1cm4gbW9udGgoXCJuYXJyb3dcIiwgdHJ1ZSk7XG4gICAgICAgICAgLy8gbW9udGhzIC0gZm9ybWF0XG4gICAgICAgICAgY2FzZSBcIk1cIjpcbiAgICAgICAgICAgIC8vIGxpa2UgMVxuICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyXG4gICAgICAgICAgICAgID8gc3RyaW5nKHsgbW9udGg6IFwibnVtZXJpY1wiIH0sIFwibW9udGhcIilcbiAgICAgICAgICAgICAgOiB0aGlzLm51bShkdC5tb250aCk7XG4gICAgICAgICAgY2FzZSBcIk1NXCI6XG4gICAgICAgICAgICAvLyBsaWtlIDAxXG4gICAgICAgICAgICByZXR1cm4gdXNlRGF0ZVRpbWVGb3JtYXR0ZXJcbiAgICAgICAgICAgICAgPyBzdHJpbmcoeyBtb250aDogXCIyLWRpZ2l0XCIgfSwgXCJtb250aFwiKVxuICAgICAgICAgICAgICA6IHRoaXMubnVtKGR0Lm1vbnRoLCAyKTtcbiAgICAgICAgICBjYXNlIFwiTU1NXCI6XG4gICAgICAgICAgICAvLyBsaWtlIEphblxuICAgICAgICAgICAgcmV0dXJuIG1vbnRoKFwic2hvcnRcIiwgZmFsc2UpO1xuICAgICAgICAgIGNhc2UgXCJNTU1NXCI6XG4gICAgICAgICAgICAvLyBsaWtlIEphbnVhcnlcbiAgICAgICAgICAgIHJldHVybiBtb250aChcImxvbmdcIiwgZmFsc2UpO1xuICAgICAgICAgIGNhc2UgXCJNTU1NTVwiOlxuICAgICAgICAgICAgLy8gbGlrZSBKXG4gICAgICAgICAgICByZXR1cm4gbW9udGgoXCJuYXJyb3dcIiwgZmFsc2UpO1xuICAgICAgICAgIC8vIHllYXJzXG4gICAgICAgICAgY2FzZSBcInlcIjpcbiAgICAgICAgICAgIC8vIGxpa2UgMjAxNFxuICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyID8gc3RyaW5nKHsgeWVhcjogXCJudW1lcmljXCIgfSwgXCJ5ZWFyXCIpIDogdGhpcy5udW0oZHQueWVhcik7XG4gICAgICAgICAgY2FzZSBcInl5XCI6XG4gICAgICAgICAgICAvLyBsaWtlIDE0XG4gICAgICAgICAgICByZXR1cm4gdXNlRGF0ZVRpbWVGb3JtYXR0ZXJcbiAgICAgICAgICAgICAgPyBzdHJpbmcoeyB5ZWFyOiBcIjItZGlnaXRcIiB9LCBcInllYXJcIilcbiAgICAgICAgICAgICAgOiB0aGlzLm51bShkdC55ZWFyLnRvU3RyaW5nKCkuc2xpY2UoLTIpLCAyKTtcbiAgICAgICAgICBjYXNlIFwieXl5eVwiOlxuICAgICAgICAgICAgLy8gbGlrZSAwMDEyXG4gICAgICAgICAgICByZXR1cm4gdXNlRGF0ZVRpbWVGb3JtYXR0ZXJcbiAgICAgICAgICAgICAgPyBzdHJpbmcoeyB5ZWFyOiBcIm51bWVyaWNcIiB9LCBcInllYXJcIilcbiAgICAgICAgICAgICAgOiB0aGlzLm51bShkdC55ZWFyLCA0KTtcbiAgICAgICAgICBjYXNlIFwieXl5eXl5XCI6XG4gICAgICAgICAgICAvLyBsaWtlIDAwMDAxMlxuICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyXG4gICAgICAgICAgICAgID8gc3RyaW5nKHsgeWVhcjogXCJudW1lcmljXCIgfSwgXCJ5ZWFyXCIpXG4gICAgICAgICAgICAgIDogdGhpcy5udW0oZHQueWVhciwgNik7XG4gICAgICAgICAgLy8gZXJhc1xuICAgICAgICAgIGNhc2UgXCJHXCI6XG4gICAgICAgICAgICAvLyBsaWtlIEFEXG4gICAgICAgICAgICByZXR1cm4gZXJhKFwic2hvcnRcIik7XG4gICAgICAgICAgY2FzZSBcIkdHXCI6XG4gICAgICAgICAgICAvLyBsaWtlIEFubm8gRG9taW5pXG4gICAgICAgICAgICByZXR1cm4gZXJhKFwibG9uZ1wiKTtcbiAgICAgICAgICBjYXNlIFwiR0dHR0dcIjpcbiAgICAgICAgICAgIHJldHVybiBlcmEoXCJuYXJyb3dcIik7XG4gICAgICAgICAgY2FzZSBcImtrXCI6XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQud2Vla1llYXIudG9TdHJpbmcoKS5zbGljZSgtMiksIDIpO1xuICAgICAgICAgIGNhc2UgXCJra2trXCI6XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQud2Vla1llYXIsIDQpO1xuICAgICAgICAgIGNhc2UgXCJXXCI6XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQud2Vla051bWJlcik7XG4gICAgICAgICAgY2FzZSBcIldXXCI6XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQud2Vla051bWJlciwgMik7XG4gICAgICAgICAgY2FzZSBcIm9cIjpcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5vcmRpbmFsKTtcbiAgICAgICAgICBjYXNlIFwib29vXCI6XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQub3JkaW5hbCwgMyk7XG4gICAgICAgICAgY2FzZSBcInFcIjpcbiAgICAgICAgICAgIC8vIGxpa2UgMVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LnF1YXJ0ZXIpO1xuICAgICAgICAgIGNhc2UgXCJxcVwiOlxuICAgICAgICAgICAgLy8gbGlrZSAwMVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LnF1YXJ0ZXIsIDIpO1xuICAgICAgICAgIGNhc2UgXCJYXCI6XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oTWF0aC5mbG9vcihkdC50cyAvIDEwMDApKTtcbiAgICAgICAgICBjYXNlIFwieFwiOlxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LnRzKTtcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIG1heWJlTWFjcm8odG9rZW4pO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgcmV0dXJuIHN0cmluZ2lmeVRva2VucyhGb3JtYXR0ZXIucGFyc2VGb3JtYXQoZm10KSwgdG9rZW5Ub1N0cmluZyk7XG4gIH1cblxuICBmb3JtYXREdXJhdGlvbkZyb21TdHJpbmcoZHVyLCBmbXQpIHtcbiAgICBjb25zdCB0b2tlblRvRmllbGQgPSAodG9rZW4pID0+IHtcbiAgICAgICAgc3dpdGNoICh0b2tlblswXSkge1xuICAgICAgICAgIGNhc2UgXCJTXCI6XG4gICAgICAgICAgICByZXR1cm4gXCJtaWxsaXNlY29uZFwiO1xuICAgICAgICAgIGNhc2UgXCJzXCI6XG4gICAgICAgICAgICByZXR1cm4gXCJzZWNvbmRcIjtcbiAgICAgICAgICBjYXNlIFwibVwiOlxuICAgICAgICAgICAgcmV0dXJuIFwibWludXRlXCI7XG4gICAgICAgICAgY2FzZSBcImhcIjpcbiAgICAgICAgICAgIHJldHVybiBcImhvdXJcIjtcbiAgICAgICAgICBjYXNlIFwiZFwiOlxuICAgICAgICAgICAgcmV0dXJuIFwiZGF5XCI7XG4gICAgICAgICAgY2FzZSBcIndcIjpcbiAgICAgICAgICAgIHJldHVybiBcIndlZWtcIjtcbiAgICAgICAgICBjYXNlIFwiTVwiOlxuICAgICAgICAgICAgcmV0dXJuIFwibW9udGhcIjtcbiAgICAgICAgICBjYXNlIFwieVwiOlxuICAgICAgICAgICAgcmV0dXJuIFwieWVhclwiO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHRva2VuVG9TdHJpbmcgPSAobGlsZHVyKSA9PiAodG9rZW4pID0+IHtcbiAgICAgICAgY29uc3QgbWFwcGVkID0gdG9rZW5Ub0ZpZWxkKHRva2VuKTtcbiAgICAgICAgaWYgKG1hcHBlZCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLm51bShsaWxkdXIuZ2V0KG1hcHBlZCksIHRva2VuLmxlbmd0aCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRva2VuO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgdG9rZW5zID0gRm9ybWF0dGVyLnBhcnNlRm9ybWF0KGZtdCksXG4gICAgICByZWFsVG9rZW5zID0gdG9rZW5zLnJlZHVjZShcbiAgICAgICAgKGZvdW5kLCB7IGxpdGVyYWwsIHZhbCB9KSA9PiAobGl0ZXJhbCA/IGZvdW5kIDogZm91bmQuY29uY2F0KHZhbCkpLFxuICAgICAgICBbXVxuICAgICAgKSxcbiAgICAgIGNvbGxhcHNlZCA9IGR1ci5zaGlmdFRvKC4uLnJlYWxUb2tlbnMubWFwKHRva2VuVG9GaWVsZCkuZmlsdGVyKCh0KSA9PiB0KSk7XG4gICAgcmV0dXJuIHN0cmluZ2lmeVRva2Vucyh0b2tlbnMsIHRva2VuVG9TdHJpbmcoY29sbGFwc2VkKSk7XG4gIH1cbn1cbiIsICJleHBvcnQgZGVmYXVsdCBjbGFzcyBJbnZhbGlkIHtcbiAgY29uc3RydWN0b3IocmVhc29uLCBleHBsYW5hdGlvbikge1xuICAgIHRoaXMucmVhc29uID0gcmVhc29uO1xuICAgIHRoaXMuZXhwbGFuYXRpb24gPSBleHBsYW5hdGlvbjtcbiAgfVxuXG4gIHRvTWVzc2FnZSgpIHtcbiAgICBpZiAodGhpcy5leHBsYW5hdGlvbikge1xuICAgICAgcmV0dXJuIGAke3RoaXMucmVhc29ufTogJHt0aGlzLmV4cGxhbmF0aW9ufWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLnJlYXNvbjtcbiAgICB9XG4gIH1cbn1cbiIsICJpbXBvcnQgeyBab25lSXNBYnN0cmFjdEVycm9yIH0gZnJvbSBcIi4vZXJyb3JzLmpzXCI7XG5cbi8qKlxuICogQGludGVyZmFjZVxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBab25lIHtcbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHpvbmVcbiAgICogQGFic3RyYWN0XG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBnZXQgdHlwZSgpIHtcbiAgICB0aHJvdyBuZXcgWm9uZUlzQWJzdHJhY3RFcnJvcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoaXMgem9uZS5cbiAgICogQGFic3RyYWN0XG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBnZXQgbmFtZSgpIHtcbiAgICB0aHJvdyBuZXcgWm9uZUlzQWJzdHJhY3RFcnJvcigpO1xuICB9XG5cbiAgZ2V0IGlhbmFOYW1lKCkge1xuICAgIHJldHVybiB0aGlzLm5hbWU7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB3aGV0aGVyIHRoZSBvZmZzZXQgaXMga25vd24gdG8gYmUgZml4ZWQgZm9yIHRoZSB3aG9sZSB5ZWFyLlxuICAgKiBAYWJzdHJhY3RcbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqL1xuICBnZXQgaXNVbml2ZXJzYWwoKSB7XG4gICAgdGhyb3cgbmV3IFpvbmVJc0Fic3RyYWN0RXJyb3IoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBvZmZzZXQncyBjb21tb24gbmFtZSAoc3VjaCBhcyBFU1QpIGF0IHRoZSBzcGVjaWZpZWQgdGltZXN0YW1wXG4gICAqIEBhYnN0cmFjdFxuICAgKiBAcGFyYW0ge251bWJlcn0gdHMgLSBFcG9jaCBtaWxsaXNlY29uZHMgZm9yIHdoaWNoIHRvIGdldCB0aGUgbmFtZVxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIE9wdGlvbnMgdG8gYWZmZWN0IHRoZSBmb3JtYXRcbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMuZm9ybWF0IC0gV2hhdCBzdHlsZSBvZiBvZmZzZXQgdG8gcmV0dXJuLiBBY2NlcHRzICdsb25nJyBvciAnc2hvcnQnLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5sb2NhbGUgLSBXaGF0IGxvY2FsZSB0byByZXR1cm4gdGhlIG9mZnNldCBuYW1lIGluLlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9XG4gICAqL1xuICBvZmZzZXROYW1lKHRzLCBvcHRzKSB7XG4gICAgdGhyb3cgbmV3IFpvbmVJc0Fic3RyYWN0RXJyb3IoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBvZmZzZXQncyB2YWx1ZSBhcyBhIHN0cmluZ1xuICAgKiBAYWJzdHJhY3RcbiAgICogQHBhcmFtIHtudW1iZXJ9IHRzIC0gRXBvY2ggbWlsbGlzZWNvbmRzIGZvciB3aGljaCB0byBnZXQgdGhlIG9mZnNldFxuICAgKiBAcGFyYW0ge3N0cmluZ30gZm9ybWF0IC0gV2hhdCBzdHlsZSBvZiBvZmZzZXQgdG8gcmV0dXJuLlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgQWNjZXB0cyAnbmFycm93JywgJ3Nob3J0Jywgb3IgJ3RlY2hpZScuIFJldHVybmluZyAnKzYnLCAnKzA2OjAwJywgb3IgJyswNjAwJyByZXNwZWN0aXZlbHlcbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgZm9ybWF0T2Zmc2V0KHRzLCBmb3JtYXQpIHtcbiAgICB0aHJvdyBuZXcgWm9uZUlzQWJzdHJhY3RFcnJvcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgb2Zmc2V0IGluIG1pbnV0ZXMgZm9yIHRoaXMgem9uZSBhdCB0aGUgc3BlY2lmaWVkIHRpbWVzdGFtcC5cbiAgICogQGFic3RyYWN0XG4gICAqIEBwYXJhbSB7bnVtYmVyfSB0cyAtIEVwb2NoIG1pbGxpc2Vjb25kcyBmb3Igd2hpY2ggdG8gY29tcHV0ZSB0aGUgb2Zmc2V0XG4gICAqIEByZXR1cm4ge251bWJlcn1cbiAgICovXG4gIG9mZnNldCh0cykge1xuICAgIHRocm93IG5ldyBab25lSXNBYnN0cmFjdEVycm9yKCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBab25lIGlzIGVxdWFsIHRvIGFub3RoZXIgem9uZVxuICAgKiBAYWJzdHJhY3RcbiAgICogQHBhcmFtIHtab25lfSBvdGhlclpvbmUgLSB0aGUgem9uZSB0byBjb21wYXJlXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqL1xuICBlcXVhbHMob3RoZXJab25lKSB7XG4gICAgdGhyb3cgbmV3IFpvbmVJc0Fic3RyYWN0RXJyb3IoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gd2hldGhlciB0aGlzIFpvbmUgaXMgdmFsaWQuXG4gICAqIEBhYnN0cmFjdFxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICovXG4gIGdldCBpc1ZhbGlkKCkge1xuICAgIHRocm93IG5ldyBab25lSXNBYnN0cmFjdEVycm9yKCk7XG4gIH1cbn1cbiIsICJpbXBvcnQgeyBmb3JtYXRPZmZzZXQsIHBhcnNlWm9uZUluZm8gfSBmcm9tIFwiLi4vaW1wbC91dGlsLmpzXCI7XG5pbXBvcnQgWm9uZSBmcm9tIFwiLi4vem9uZS5qc1wiO1xuXG5sZXQgc2luZ2xldG9uID0gbnVsbDtcblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBsb2NhbCB6b25lIGZvciB0aGlzIEphdmFTY3JpcHQgZW52aXJvbm1lbnQuXG4gKiBAaW1wbGVtZW50cyB7Wm9uZX1cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3lzdGVtWm9uZSBleHRlbmRzIFpvbmUge1xuICAvKipcbiAgICogR2V0IGEgc2luZ2xldG9uIGluc3RhbmNlIG9mIHRoZSBsb2NhbCB6b25lXG4gICAqIEByZXR1cm4ge1N5c3RlbVpvbmV9XG4gICAqL1xuICBzdGF0aWMgZ2V0IGluc3RhbmNlKCkge1xuICAgIGlmIChzaW5nbGV0b24gPT09IG51bGwpIHtcbiAgICAgIHNpbmdsZXRvbiA9IG5ldyBTeXN0ZW1ab25lKCk7XG4gICAgfVxuICAgIHJldHVybiBzaW5nbGV0b247XG4gIH1cblxuICAvKiogQG92ZXJyaWRlICoqL1xuICBnZXQgdHlwZSgpIHtcbiAgICByZXR1cm4gXCJzeXN0ZW1cIjtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIGdldCBuYW1lKCkge1xuICAgIHJldHVybiBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCgpLnJlc29sdmVkT3B0aW9ucygpLnRpbWVab25lO1xuICB9XG5cbiAgLyoqIEBvdmVycmlkZSAqKi9cbiAgZ2V0IGlzVW5pdmVyc2FsKCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIG9mZnNldE5hbWUodHMsIHsgZm9ybWF0LCBsb2NhbGUgfSkge1xuICAgIHJldHVybiBwYXJzZVpvbmVJbmZvKHRzLCBmb3JtYXQsIGxvY2FsZSk7XG4gIH1cblxuICAvKiogQG92ZXJyaWRlICoqL1xuICBmb3JtYXRPZmZzZXQodHMsIGZvcm1hdCkge1xuICAgIHJldHVybiBmb3JtYXRPZmZzZXQodGhpcy5vZmZzZXQodHMpLCBmb3JtYXQpO1xuICB9XG5cbiAgLyoqIEBvdmVycmlkZSAqKi9cbiAgb2Zmc2V0KHRzKSB7XG4gICAgcmV0dXJuIC1uZXcgRGF0ZSh0cykuZ2V0VGltZXpvbmVPZmZzZXQoKTtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIGVxdWFscyhvdGhlclpvbmUpIHtcbiAgICByZXR1cm4gb3RoZXJab25lLnR5cGUgPT09IFwic3lzdGVtXCI7XG4gIH1cblxuICAvKiogQG92ZXJyaWRlICoqL1xuICBnZXQgaXNWYWxpZCgpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuIiwgImltcG9ydCB7IGZvcm1hdE9mZnNldCwgcGFyc2Vab25lSW5mbywgaXNVbmRlZmluZWQsIG9ialRvTG9jYWxUUyB9IGZyb20gXCIuLi9pbXBsL3V0aWwuanNcIjtcbmltcG9ydCBab25lIGZyb20gXCIuLi96b25lLmpzXCI7XG5cbmxldCBkdGZDYWNoZSA9IHt9O1xuZnVuY3Rpb24gbWFrZURURih6b25lKSB7XG4gIGlmICghZHRmQ2FjaGVbem9uZV0pIHtcbiAgICBkdGZDYWNoZVt6b25lXSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KFwiZW4tVVNcIiwge1xuICAgICAgaG91cjEyOiBmYWxzZSxcbiAgICAgIHRpbWVab25lOiB6b25lLFxuICAgICAgeWVhcjogXCJudW1lcmljXCIsXG4gICAgICBtb250aDogXCIyLWRpZ2l0XCIsXG4gICAgICBkYXk6IFwiMi1kaWdpdFwiLFxuICAgICAgaG91cjogXCIyLWRpZ2l0XCIsXG4gICAgICBtaW51dGU6IFwiMi1kaWdpdFwiLFxuICAgICAgc2Vjb25kOiBcIjItZGlnaXRcIixcbiAgICAgIGVyYTogXCJzaG9ydFwiLFxuICAgIH0pO1xuICB9XG4gIHJldHVybiBkdGZDYWNoZVt6b25lXTtcbn1cblxuY29uc3QgdHlwZVRvUG9zID0ge1xuICB5ZWFyOiAwLFxuICBtb250aDogMSxcbiAgZGF5OiAyLFxuICBlcmE6IDMsXG4gIGhvdXI6IDQsXG4gIG1pbnV0ZTogNSxcbiAgc2Vjb25kOiA2LFxufTtcblxuZnVuY3Rpb24gaGFja3lPZmZzZXQoZHRmLCBkYXRlKSB7XG4gIGNvbnN0IGZvcm1hdHRlZCA9IGR0Zi5mb3JtYXQoZGF0ZSkucmVwbGFjZSgvXFx1MjAwRS9nLCBcIlwiKSxcbiAgICBwYXJzZWQgPSAvKFxcZCspXFwvKFxcZCspXFwvKFxcZCspIChBRHxCQyksPyAoXFxkKyk6KFxcZCspOihcXGQrKS8uZXhlYyhmb3JtYXR0ZWQpLFxuICAgIFssIGZNb250aCwgZkRheSwgZlllYXIsIGZhZE9yQmMsIGZIb3VyLCBmTWludXRlLCBmU2Vjb25kXSA9IHBhcnNlZDtcbiAgcmV0dXJuIFtmWWVhciwgZk1vbnRoLCBmRGF5LCBmYWRPckJjLCBmSG91ciwgZk1pbnV0ZSwgZlNlY29uZF07XG59XG5cbmZ1bmN0aW9uIHBhcnRzT2Zmc2V0KGR0ZiwgZGF0ZSkge1xuICBjb25zdCBmb3JtYXR0ZWQgPSBkdGYuZm9ybWF0VG9QYXJ0cyhkYXRlKTtcbiAgY29uc3QgZmlsbGVkID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZm9ybWF0dGVkLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgeyB0eXBlLCB2YWx1ZSB9ID0gZm9ybWF0dGVkW2ldO1xuICAgIGNvbnN0IHBvcyA9IHR5cGVUb1Bvc1t0eXBlXTtcblxuICAgIGlmICh0eXBlID09PSBcImVyYVwiKSB7XG4gICAgICBmaWxsZWRbcG9zXSA9IHZhbHVlO1xuICAgIH0gZWxzZSBpZiAoIWlzVW5kZWZpbmVkKHBvcykpIHtcbiAgICAgIGZpbGxlZFtwb3NdID0gcGFyc2VJbnQodmFsdWUsIDEwKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZpbGxlZDtcbn1cblxubGV0IGlhbmFab25lQ2FjaGUgPSB7fTtcbi8qKlxuICogQSB6b25lIGlkZW50aWZpZWQgYnkgYW4gSUFOQSBpZGVudGlmaWVyLCBsaWtlIEFtZXJpY2EvTmV3X1lvcmtcbiAqIEBpbXBsZW1lbnRzIHtab25lfVxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBJQU5BWm9uZSBleHRlbmRzIFpvbmUge1xuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBab25lIG5hbWVcbiAgICogQHJldHVybiB7SUFOQVpvbmV9XG4gICAqL1xuICBzdGF0aWMgY3JlYXRlKG5hbWUpIHtcbiAgICBpZiAoIWlhbmFab25lQ2FjaGVbbmFtZV0pIHtcbiAgICAgIGlhbmFab25lQ2FjaGVbbmFtZV0gPSBuZXcgSUFOQVpvbmUobmFtZSk7XG4gICAgfVxuICAgIHJldHVybiBpYW5hWm9uZUNhY2hlW25hbWVdO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0IGxvY2FsIGNhY2hlcy4gU2hvdWxkIG9ubHkgYmUgbmVjZXNzYXJ5IGluIHRlc3Rpbmcgc2NlbmFyaW9zLlxuICAgKiBAcmV0dXJuIHt2b2lkfVxuICAgKi9cbiAgc3RhdGljIHJlc2V0Q2FjaGUoKSB7XG4gICAgaWFuYVpvbmVDYWNoZSA9IHt9O1xuICAgIGR0ZkNhY2hlID0ge307XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB3aGV0aGVyIHRoZSBwcm92aWRlZCBzdHJpbmcgaXMgYSB2YWxpZCBzcGVjaWZpZXIuIFRoaXMgb25seSBjaGVja3MgdGhlIHN0cmluZydzIGZvcm1hdCwgbm90IHRoYXQgdGhlIHNwZWNpZmllciBpZGVudGlmaWVzIGEga25vd24gem9uZTsgc2VlIGlzVmFsaWRab25lIGZvciB0aGF0LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcyAtIFRoZSBzdHJpbmcgdG8gY2hlY2sgdmFsaWRpdHkgb25cbiAgICogQGV4YW1wbGUgSUFOQVpvbmUuaXNWYWxpZFNwZWNpZmllcihcIkFtZXJpY2EvTmV3X1lvcmtcIikgLy89PiB0cnVlXG4gICAqIEBleGFtcGxlIElBTkFab25lLmlzVmFsaWRTcGVjaWZpZXIoXCJTcG9ydH5+YmxvcnBcIikgLy89PiBmYWxzZVxuICAgKiBAZGVwcmVjYXRlZCBUaGlzIG1ldGhvZCByZXR1cm5zIGZhbHNlIGZvciBzb21lIHZhbGlkIElBTkEgbmFtZXMuIFVzZSBpc1ZhbGlkWm9uZSBpbnN0ZWFkLlxuICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgKi9cbiAgc3RhdGljIGlzVmFsaWRTcGVjaWZpZXIocykge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWRab25lKHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgd2hldGhlciB0aGUgcHJvdmlkZWQgc3RyaW5nIGlkZW50aWZpZXMgYSByZWFsIHpvbmVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHpvbmUgLSBUaGUgc3RyaW5nIHRvIGNoZWNrXG4gICAqIEBleGFtcGxlIElBTkFab25lLmlzVmFsaWRab25lKFwiQW1lcmljYS9OZXdfWW9ya1wiKSAvLz0+IHRydWVcbiAgICogQGV4YW1wbGUgSUFOQVpvbmUuaXNWYWxpZFpvbmUoXCJGYW50YXNpYS9DYXN0bGVcIikgLy89PiBmYWxzZVxuICAgKiBAZXhhbXBsZSBJQU5BWm9uZS5pc1ZhbGlkWm9uZShcIlNwb3J0fn5ibG9ycFwiKSAvLz0+IGZhbHNlXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqL1xuICBzdGF0aWMgaXNWYWxpZFpvbmUoem9uZSkge1xuICAgIGlmICghem9uZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoXCJlbi1VU1wiLCB7IHRpbWVab25lOiB6b25lIH0pLmZvcm1hdCgpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKG5hbWUpIHtcbiAgICBzdXBlcigpO1xuICAgIC8qKiBAcHJpdmF0ZSAqKi9cbiAgICB0aGlzLnpvbmVOYW1lID0gbmFtZTtcbiAgICAvKiogQHByaXZhdGUgKiovXG4gICAgdGhpcy52YWxpZCA9IElBTkFab25lLmlzVmFsaWRab25lKG5hbWUpO1xuICB9XG5cbiAgLyoqIEBvdmVycmlkZSAqKi9cbiAgZ2V0IHR5cGUoKSB7XG4gICAgcmV0dXJuIFwiaWFuYVwiO1xuICB9XG5cbiAgLyoqIEBvdmVycmlkZSAqKi9cbiAgZ2V0IG5hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuem9uZU5hbWU7XG4gIH1cblxuICAvKiogQG92ZXJyaWRlICoqL1xuICBnZXQgaXNVbml2ZXJzYWwoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqIEBvdmVycmlkZSAqKi9cbiAgb2Zmc2V0TmFtZSh0cywgeyBmb3JtYXQsIGxvY2FsZSB9KSB7XG4gICAgcmV0dXJuIHBhcnNlWm9uZUluZm8odHMsIGZvcm1hdCwgbG9jYWxlLCB0aGlzLm5hbWUpO1xuICB9XG5cbiAgLyoqIEBvdmVycmlkZSAqKi9cbiAgZm9ybWF0T2Zmc2V0KHRzLCBmb3JtYXQpIHtcbiAgICByZXR1cm4gZm9ybWF0T2Zmc2V0KHRoaXMub2Zmc2V0KHRzKSwgZm9ybWF0KTtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIG9mZnNldCh0cykge1xuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh0cyk7XG5cbiAgICBpZiAoaXNOYU4oZGF0ZSkpIHJldHVybiBOYU47XG5cbiAgICBjb25zdCBkdGYgPSBtYWtlRFRGKHRoaXMubmFtZSk7XG4gICAgbGV0IFt5ZWFyLCBtb250aCwgZGF5LCBhZE9yQmMsIGhvdXIsIG1pbnV0ZSwgc2Vjb25kXSA9IGR0Zi5mb3JtYXRUb1BhcnRzXG4gICAgICA/IHBhcnRzT2Zmc2V0KGR0ZiwgZGF0ZSlcbiAgICAgIDogaGFja3lPZmZzZXQoZHRmLCBkYXRlKTtcblxuICAgIGlmIChhZE9yQmMgPT09IFwiQkNcIikge1xuICAgICAgeWVhciA9IC1NYXRoLmFicyh5ZWFyKSArIDE7XG4gICAgfVxuXG4gICAgLy8gYmVjYXVzZSB3ZSdyZSB1c2luZyBob3VyMTIgYW5kIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTEwMjU1NjQmY2FuPTImcT0lMjIyNCUzQTAwJTIyJTIwZGF0ZXRpbWVmb3JtYXRcbiAgICBjb25zdCBhZGp1c3RlZEhvdXIgPSBob3VyID09PSAyNCA/IDAgOiBob3VyO1xuXG4gICAgY29uc3QgYXNVVEMgPSBvYmpUb0xvY2FsVFMoe1xuICAgICAgeWVhcixcbiAgICAgIG1vbnRoLFxuICAgICAgZGF5LFxuICAgICAgaG91cjogYWRqdXN0ZWRIb3VyLFxuICAgICAgbWludXRlLFxuICAgICAgc2Vjb25kLFxuICAgICAgbWlsbGlzZWNvbmQ6IDAsXG4gICAgfSk7XG5cbiAgICBsZXQgYXNUUyA9ICtkYXRlO1xuICAgIGNvbnN0IG92ZXIgPSBhc1RTICUgMTAwMDtcbiAgICBhc1RTIC09IG92ZXIgPj0gMCA/IG92ZXIgOiAxMDAwICsgb3ZlcjtcbiAgICByZXR1cm4gKGFzVVRDIC0gYXNUUykgLyAoNjAgKiAxMDAwKTtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIGVxdWFscyhvdGhlclpvbmUpIHtcbiAgICByZXR1cm4gb3RoZXJab25lLnR5cGUgPT09IFwiaWFuYVwiICYmIG90aGVyWm9uZS5uYW1lID09PSB0aGlzLm5hbWU7XG4gIH1cblxuICAvKiogQG92ZXJyaWRlICoqL1xuICBnZXQgaXNWYWxpZCgpIHtcbiAgICByZXR1cm4gdGhpcy52YWxpZDtcbiAgfVxufVxuIiwgImltcG9ydCB7IGZvcm1hdE9mZnNldCwgc2lnbmVkT2Zmc2V0IH0gZnJvbSBcIi4uL2ltcGwvdXRpbC5qc1wiO1xuaW1wb3J0IFpvbmUgZnJvbSBcIi4uL3pvbmUuanNcIjtcblxubGV0IHNpbmdsZXRvbiA9IG51bGw7XG5cbi8qKlxuICogQSB6b25lIHdpdGggYSBmaXhlZCBvZmZzZXQgKG1lYW5pbmcgbm8gRFNUKVxuICogQGltcGxlbWVudHMge1pvbmV9XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZpeGVkT2Zmc2V0Wm9uZSBleHRlbmRzIFpvbmUge1xuICAvKipcbiAgICogR2V0IGEgc2luZ2xldG9uIGluc3RhbmNlIG9mIFVUQ1xuICAgKiBAcmV0dXJuIHtGaXhlZE9mZnNldFpvbmV9XG4gICAqL1xuICBzdGF0aWMgZ2V0IHV0Y0luc3RhbmNlKCkge1xuICAgIGlmIChzaW5nbGV0b24gPT09IG51bGwpIHtcbiAgICAgIHNpbmdsZXRvbiA9IG5ldyBGaXhlZE9mZnNldFpvbmUoMCk7XG4gICAgfVxuICAgIHJldHVybiBzaW5nbGV0b247XG4gIH1cblxuICAvKipcbiAgICogR2V0IGFuIGluc3RhbmNlIHdpdGggYSBzcGVjaWZpZWQgb2Zmc2V0XG4gICAqIEBwYXJhbSB7bnVtYmVyfSBvZmZzZXQgLSBUaGUgb2Zmc2V0IGluIG1pbnV0ZXNcbiAgICogQHJldHVybiB7Rml4ZWRPZmZzZXRab25lfVxuICAgKi9cbiAgc3RhdGljIGluc3RhbmNlKG9mZnNldCkge1xuICAgIHJldHVybiBvZmZzZXQgPT09IDAgPyBGaXhlZE9mZnNldFpvbmUudXRjSW5zdGFuY2UgOiBuZXcgRml4ZWRPZmZzZXRab25lKG9mZnNldCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGFuIGluc3RhbmNlIG9mIEZpeGVkT2Zmc2V0Wm9uZSBmcm9tIGEgVVRDIG9mZnNldCBzdHJpbmcsIGxpa2UgXCJVVEMrNlwiXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzIC0gVGhlIG9mZnNldCBzdHJpbmcgdG8gcGFyc2VcbiAgICogQGV4YW1wbGUgRml4ZWRPZmZzZXRab25lLnBhcnNlU3BlY2lmaWVyKFwiVVRDKzZcIilcbiAgICogQGV4YW1wbGUgRml4ZWRPZmZzZXRab25lLnBhcnNlU3BlY2lmaWVyKFwiVVRDKzA2XCIpXG4gICAqIEBleGFtcGxlIEZpeGVkT2Zmc2V0Wm9uZS5wYXJzZVNwZWNpZmllcihcIlVUQy02OjAwXCIpXG4gICAqIEByZXR1cm4ge0ZpeGVkT2Zmc2V0Wm9uZX1cbiAgICovXG4gIHN0YXRpYyBwYXJzZVNwZWNpZmllcihzKSB7XG4gICAgaWYgKHMpIHtcbiAgICAgIGNvbnN0IHIgPSBzLm1hdGNoKC9edXRjKD86KFsrLV1cXGR7MSwyfSkoPzo6KFxcZHsyfSkpPyk/JC9pKTtcbiAgICAgIGlmIChyKSB7XG4gICAgICAgIHJldHVybiBuZXcgRml4ZWRPZmZzZXRab25lKHNpZ25lZE9mZnNldChyWzFdLCByWzJdKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3RydWN0b3Iob2Zmc2V0KSB7XG4gICAgc3VwZXIoKTtcbiAgICAvKiogQHByaXZhdGUgKiovXG4gICAgdGhpcy5maXhlZCA9IG9mZnNldDtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIGdldCB0eXBlKCkge1xuICAgIHJldHVybiBcImZpeGVkXCI7XG4gIH1cblxuICAvKiogQG92ZXJyaWRlICoqL1xuICBnZXQgbmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5maXhlZCA9PT0gMCA/IFwiVVRDXCIgOiBgVVRDJHtmb3JtYXRPZmZzZXQodGhpcy5maXhlZCwgXCJuYXJyb3dcIil9YDtcbiAgfVxuXG4gIGdldCBpYW5hTmFtZSgpIHtcbiAgICBpZiAodGhpcy5maXhlZCA9PT0gMCkge1xuICAgICAgcmV0dXJuIFwiRXRjL1VUQ1wiO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYEV0Yy9HTVQke2Zvcm1hdE9mZnNldCgtdGhpcy5maXhlZCwgXCJuYXJyb3dcIil9YDtcbiAgICB9XG4gIH1cblxuICAvKiogQG92ZXJyaWRlICoqL1xuICBvZmZzZXROYW1lKCkge1xuICAgIHJldHVybiB0aGlzLm5hbWU7XG4gIH1cblxuICAvKiogQG92ZXJyaWRlICoqL1xuICBmb3JtYXRPZmZzZXQodHMsIGZvcm1hdCkge1xuICAgIHJldHVybiBmb3JtYXRPZmZzZXQodGhpcy5maXhlZCwgZm9ybWF0KTtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIGdldCBpc1VuaXZlcnNhbCgpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIG9mZnNldCgpIHtcbiAgICByZXR1cm4gdGhpcy5maXhlZDtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIGVxdWFscyhvdGhlclpvbmUpIHtcbiAgICByZXR1cm4gb3RoZXJab25lLnR5cGUgPT09IFwiZml4ZWRcIiAmJiBvdGhlclpvbmUuZml4ZWQgPT09IHRoaXMuZml4ZWQ7XG4gIH1cblxuICAvKiogQG92ZXJyaWRlICoqL1xuICBnZXQgaXNWYWxpZCgpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuIiwgImltcG9ydCBab25lIGZyb20gXCIuLi96b25lLmpzXCI7XG5cbi8qKlxuICogQSB6b25lIHRoYXQgZmFpbGVkIHRvIHBhcnNlLiBZb3Ugc2hvdWxkIG5ldmVyIG5lZWQgdG8gaW5zdGFudGlhdGUgdGhpcy5cbiAqIEBpbXBsZW1lbnRzIHtab25lfVxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBJbnZhbGlkWm9uZSBleHRlbmRzIFpvbmUge1xuICBjb25zdHJ1Y3Rvcih6b25lTmFtZSkge1xuICAgIHN1cGVyKCk7XG4gICAgLyoqICBAcHJpdmF0ZSAqL1xuICAgIHRoaXMuem9uZU5hbWUgPSB6b25lTmFtZTtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIGdldCB0eXBlKCkge1xuICAgIHJldHVybiBcImludmFsaWRcIjtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIGdldCBuYW1lKCkge1xuICAgIHJldHVybiB0aGlzLnpvbmVOYW1lO1xuICB9XG5cbiAgLyoqIEBvdmVycmlkZSAqKi9cbiAgZ2V0IGlzVW5pdmVyc2FsKCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIG9mZnNldE5hbWUoKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvKiogQG92ZXJyaWRlICoqL1xuICBmb3JtYXRPZmZzZXQoKSB7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICAvKiogQG92ZXJyaWRlICoqL1xuICBvZmZzZXQoKSB7XG4gICAgcmV0dXJuIE5hTjtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIGVxdWFscygpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKiogQG92ZXJyaWRlICoqL1xuICBnZXQgaXNWYWxpZCgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiIsICIvKipcbiAqIEBwcml2YXRlXG4gKi9cblxuaW1wb3J0IFpvbmUgZnJvbSBcIi4uL3pvbmUuanNcIjtcbmltcG9ydCBJQU5BWm9uZSBmcm9tIFwiLi4vem9uZXMvSUFOQVpvbmUuanNcIjtcbmltcG9ydCBGaXhlZE9mZnNldFpvbmUgZnJvbSBcIi4uL3pvbmVzL2ZpeGVkT2Zmc2V0Wm9uZS5qc1wiO1xuaW1wb3J0IEludmFsaWRab25lIGZyb20gXCIuLi96b25lcy9pbnZhbGlkWm9uZS5qc1wiO1xuXG5pbXBvcnQgeyBpc1VuZGVmaW5lZCwgaXNTdHJpbmcsIGlzTnVtYmVyIH0gZnJvbSBcIi4vdXRpbC5qc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplWm9uZShpbnB1dCwgZGVmYXVsdFpvbmUpIHtcbiAgbGV0IG9mZnNldDtcbiAgaWYgKGlzVW5kZWZpbmVkKGlucHV0KSB8fCBpbnB1dCA9PT0gbnVsbCkge1xuICAgIHJldHVybiBkZWZhdWx0Wm9uZTtcbiAgfSBlbHNlIGlmIChpbnB1dCBpbnN0YW5jZW9mIFpvbmUpIHtcbiAgICByZXR1cm4gaW5wdXQ7XG4gIH0gZWxzZSBpZiAoaXNTdHJpbmcoaW5wdXQpKSB7XG4gICAgY29uc3QgbG93ZXJlZCA9IGlucHV0LnRvTG93ZXJDYXNlKCk7XG4gICAgaWYgKGxvd2VyZWQgPT09IFwibG9jYWxcIiB8fCBsb3dlcmVkID09PSBcInN5c3RlbVwiKSByZXR1cm4gZGVmYXVsdFpvbmU7XG4gICAgZWxzZSBpZiAobG93ZXJlZCA9PT0gXCJ1dGNcIiB8fCBsb3dlcmVkID09PSBcImdtdFwiKSByZXR1cm4gRml4ZWRPZmZzZXRab25lLnV0Y0luc3RhbmNlO1xuICAgIGVsc2UgcmV0dXJuIEZpeGVkT2Zmc2V0Wm9uZS5wYXJzZVNwZWNpZmllcihsb3dlcmVkKSB8fCBJQU5BWm9uZS5jcmVhdGUoaW5wdXQpO1xuICB9IGVsc2UgaWYgKGlzTnVtYmVyKGlucHV0KSkge1xuICAgIHJldHVybiBGaXhlZE9mZnNldFpvbmUuaW5zdGFuY2UoaW5wdXQpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBpbnB1dCA9PT0gXCJvYmplY3RcIiAmJiBpbnB1dC5vZmZzZXQgJiYgdHlwZW9mIGlucHV0Lm9mZnNldCA9PT0gXCJudW1iZXJcIikge1xuICAgIC8vIFRoaXMgaXMgZHVtYiwgYnV0IHRoZSBpbnN0YW5jZW9mIGNoZWNrIGFib3ZlIGRvZXNuJ3Qgc2VlbSB0byByZWFsbHkgd29ya1xuICAgIC8vIHNvIHdlJ3JlIGR1Y2sgY2hlY2tpbmcgaXRcbiAgICByZXR1cm4gaW5wdXQ7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG5ldyBJbnZhbGlkWm9uZShpbnB1dCk7XG4gIH1cbn1cbiIsICJpbXBvcnQgU3lzdGVtWm9uZSBmcm9tIFwiLi96b25lcy9zeXN0ZW1ab25lLmpzXCI7XG5pbXBvcnQgSUFOQVpvbmUgZnJvbSBcIi4vem9uZXMvSUFOQVpvbmUuanNcIjtcbmltcG9ydCBMb2NhbGUgZnJvbSBcIi4vaW1wbC9sb2NhbGUuanNcIjtcblxuaW1wb3J0IHsgbm9ybWFsaXplWm9uZSB9IGZyb20gXCIuL2ltcGwvem9uZVV0aWwuanNcIjtcblxubGV0IG5vdyA9ICgpID0+IERhdGUubm93KCksXG4gIGRlZmF1bHRab25lID0gXCJzeXN0ZW1cIixcbiAgZGVmYXVsdExvY2FsZSA9IG51bGwsXG4gIGRlZmF1bHROdW1iZXJpbmdTeXN0ZW0gPSBudWxsLFxuICBkZWZhdWx0T3V0cHV0Q2FsZW5kYXIgPSBudWxsLFxuICB0aHJvd09uSW52YWxpZDtcblxuLyoqXG4gKiBTZXR0aW5ncyBjb250YWlucyBzdGF0aWMgZ2V0dGVycyBhbmQgc2V0dGVycyB0aGF0IGNvbnRyb2wgTHV4b24ncyBvdmVyYWxsIGJlaGF2aW9yLiBMdXhvbiBpcyBhIHNpbXBsZSBsaWJyYXJ5IHdpdGggZmV3IG9wdGlvbnMsIGJ1dCB0aGUgb25lcyBpdCBkb2VzIGhhdmUgbGl2ZSBoZXJlLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTZXR0aW5ncyB7XG4gIC8qKlxuICAgKiBHZXQgdGhlIGNhbGxiYWNrIGZvciByZXR1cm5pbmcgdGhlIGN1cnJlbnQgdGltZXN0YW1wLlxuICAgKiBAdHlwZSB7ZnVuY3Rpb259XG4gICAqL1xuICBzdGF0aWMgZ2V0IG5vdygpIHtcbiAgICByZXR1cm4gbm93O1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgY2FsbGJhY2sgZm9yIHJldHVybmluZyB0aGUgY3VycmVudCB0aW1lc3RhbXAuXG4gICAqIFRoZSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIGEgbnVtYmVyLCB3aGljaCB3aWxsIGJlIGludGVycHJldGVkIGFzIGFuIEVwb2NoIG1pbGxpc2Vjb25kIGNvdW50XG4gICAqIEB0eXBlIHtmdW5jdGlvbn1cbiAgICogQGV4YW1wbGUgU2V0dGluZ3Mubm93ID0gKCkgPT4gRGF0ZS5ub3coKSArIDMwMDAgLy8gcHJldGVuZCBpdCBpcyAzIHNlY29uZHMgaW4gdGhlIGZ1dHVyZVxuICAgKiBAZXhhbXBsZSBTZXR0aW5ncy5ub3cgPSAoKSA9PiAwIC8vIGFsd2F5cyBwcmV0ZW5kIGl0J3MgSmFuIDEsIDE5NzAgYXQgbWlkbmlnaHQgaW4gVVRDIHRpbWVcbiAgICovXG4gIHN0YXRpYyBzZXQgbm93KG4pIHtcbiAgICBub3cgPSBuO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgZGVmYXVsdCB0aW1lIHpvbmUgdG8gY3JlYXRlIERhdGVUaW1lcyBpbi4gRG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGluc3RhbmNlcy5cbiAgICogVXNlIHRoZSB2YWx1ZSBcInN5c3RlbVwiIHRvIHJlc2V0IHRoaXMgdmFsdWUgdG8gdGhlIHN5c3RlbSdzIHRpbWUgem9uZS5cbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIHN0YXRpYyBzZXQgZGVmYXVsdFpvbmUoem9uZSkge1xuICAgIGRlZmF1bHRab25lID0gem9uZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGRlZmF1bHQgdGltZSB6b25lIG9iamVjdCBjdXJyZW50bHkgdXNlZCB0byBjcmVhdGUgRGF0ZVRpbWVzLiBEb2VzIG5vdCBhZmZlY3QgZXhpc3RpbmcgaW5zdGFuY2VzLlxuICAgKiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyB0aGUgc3lzdGVtJ3MgdGltZSB6b25lICh0aGUgb25lIHNldCBvbiB0aGUgbWFjaGluZSB0aGF0IHJ1bnMgdGhpcyBjb2RlKS5cbiAgICogQHR5cGUge1pvbmV9XG4gICAqL1xuICBzdGF0aWMgZ2V0IGRlZmF1bHRab25lKCkge1xuICAgIHJldHVybiBub3JtYWxpemVab25lKGRlZmF1bHRab25lLCBTeXN0ZW1ab25lLmluc3RhbmNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGRlZmF1bHQgbG9jYWxlIHRvIGNyZWF0ZSBEYXRlVGltZXMgd2l0aC4gRG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGluc3RhbmNlcy5cbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIHN0YXRpYyBnZXQgZGVmYXVsdExvY2FsZSgpIHtcbiAgICByZXR1cm4gZGVmYXVsdExvY2FsZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGRlZmF1bHQgbG9jYWxlIHRvIGNyZWF0ZSBEYXRlVGltZXMgd2l0aC4gRG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGluc3RhbmNlcy5cbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIHN0YXRpYyBzZXQgZGVmYXVsdExvY2FsZShsb2NhbGUpIHtcbiAgICBkZWZhdWx0TG9jYWxlID0gbG9jYWxlO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZGVmYXVsdCBudW1iZXJpbmcgc3lzdGVtIHRvIGNyZWF0ZSBEYXRlVGltZXMgd2l0aC4gRG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGluc3RhbmNlcy5cbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIHN0YXRpYyBnZXQgZGVmYXVsdE51bWJlcmluZ1N5c3RlbSgpIHtcbiAgICByZXR1cm4gZGVmYXVsdE51bWJlcmluZ1N5c3RlbTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGRlZmF1bHQgbnVtYmVyaW5nIHN5c3RlbSB0byBjcmVhdGUgRGF0ZVRpbWVzIHdpdGguIERvZXMgbm90IGFmZmVjdCBleGlzdGluZyBpbnN0YW5jZXMuXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBzdGF0aWMgc2V0IGRlZmF1bHROdW1iZXJpbmdTeXN0ZW0obnVtYmVyaW5nU3lzdGVtKSB7XG4gICAgZGVmYXVsdE51bWJlcmluZ1N5c3RlbSA9IG51bWJlcmluZ1N5c3RlbTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGRlZmF1bHQgb3V0cHV0IGNhbGVuZGFyIHRvIGNyZWF0ZSBEYXRlVGltZXMgd2l0aC4gRG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGluc3RhbmNlcy5cbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIHN0YXRpYyBnZXQgZGVmYXVsdE91dHB1dENhbGVuZGFyKCkge1xuICAgIHJldHVybiBkZWZhdWx0T3V0cHV0Q2FsZW5kYXI7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBkZWZhdWx0IG91dHB1dCBjYWxlbmRhciB0byBjcmVhdGUgRGF0ZVRpbWVzIHdpdGguIERvZXMgbm90IGFmZmVjdCBleGlzdGluZyBpbnN0YW5jZXMuXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBzdGF0aWMgc2V0IGRlZmF1bHRPdXRwdXRDYWxlbmRhcihvdXRwdXRDYWxlbmRhcikge1xuICAgIGRlZmF1bHRPdXRwdXRDYWxlbmRhciA9IG91dHB1dENhbGVuZGFyO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB3aGV0aGVyIEx1eG9uIHdpbGwgdGhyb3cgd2hlbiBpdCBlbmNvdW50ZXJzIGludmFsaWQgRGF0ZVRpbWVzLCBEdXJhdGlvbnMsIG9yIEludGVydmFsc1xuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICovXG4gIHN0YXRpYyBnZXQgdGhyb3dPbkludmFsaWQoKSB7XG4gICAgcmV0dXJuIHRocm93T25JbnZhbGlkO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB3aGV0aGVyIEx1eG9uIHdpbGwgdGhyb3cgd2hlbiBpdCBlbmNvdW50ZXJzIGludmFsaWQgRGF0ZVRpbWVzLCBEdXJhdGlvbnMsIG9yIEludGVydmFsc1xuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICovXG4gIHN0YXRpYyBzZXQgdGhyb3dPbkludmFsaWQodCkge1xuICAgIHRocm93T25JbnZhbGlkID0gdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldCBMdXhvbidzIGdsb2JhbCBjYWNoZXMuIFNob3VsZCBvbmx5IGJlIG5lY2Vzc2FyeSBpbiB0ZXN0aW5nIHNjZW5hcmlvcy5cbiAgICogQHJldHVybiB7dm9pZH1cbiAgICovXG4gIHN0YXRpYyByZXNldENhY2hlcygpIHtcbiAgICBMb2NhbGUucmVzZXRDYWNoZSgpO1xuICAgIElBTkFab25lLnJlc2V0Q2FjaGUoKTtcbiAgfVxufVxuIiwgImltcG9ydCB7IHBhZFN0YXJ0LCByb3VuZFRvLCBoYXNSZWxhdGl2ZSB9IGZyb20gXCIuL3V0aWwuanNcIjtcbmltcG9ydCAqIGFzIEVuZ2xpc2ggZnJvbSBcIi4vZW5nbGlzaC5qc1wiO1xuaW1wb3J0IFNldHRpbmdzIGZyb20gXCIuLi9zZXR0aW5ncy5qc1wiO1xuaW1wb3J0IERhdGVUaW1lIGZyb20gXCIuLi9kYXRldGltZS5qc1wiO1xuaW1wb3J0IElBTkFab25lIGZyb20gXCIuLi96b25lcy9JQU5BWm9uZS5qc1wiO1xuXG4vLyB0b2RvIC0gcmVtYXAgY2FjaGluZ1xuXG5sZXQgaW50bExGQ2FjaGUgPSB7fTtcbmZ1bmN0aW9uIGdldENhY2hlZExGKGxvY1N0cmluZywgb3B0cyA9IHt9KSB7XG4gIGNvbnN0IGtleSA9IEpTT04uc3RyaW5naWZ5KFtsb2NTdHJpbmcsIG9wdHNdKTtcbiAgbGV0IGR0ZiA9IGludGxMRkNhY2hlW2tleV07XG4gIGlmICghZHRmKSB7XG4gICAgZHRmID0gbmV3IEludGwuTGlzdEZvcm1hdChsb2NTdHJpbmcsIG9wdHMpO1xuICAgIGludGxMRkNhY2hlW2tleV0gPSBkdGY7XG4gIH1cbiAgcmV0dXJuIGR0Zjtcbn1cblxubGV0IGludGxEVENhY2hlID0ge307XG5mdW5jdGlvbiBnZXRDYWNoZWREVEYobG9jU3RyaW5nLCBvcHRzID0ge30pIHtcbiAgY29uc3Qga2V5ID0gSlNPTi5zdHJpbmdpZnkoW2xvY1N0cmluZywgb3B0c10pO1xuICBsZXQgZHRmID0gaW50bERUQ2FjaGVba2V5XTtcbiAgaWYgKCFkdGYpIHtcbiAgICBkdGYgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsb2NTdHJpbmcsIG9wdHMpO1xuICAgIGludGxEVENhY2hlW2tleV0gPSBkdGY7XG4gIH1cbiAgcmV0dXJuIGR0Zjtcbn1cblxubGV0IGludGxOdW1DYWNoZSA9IHt9O1xuZnVuY3Rpb24gZ2V0Q2FjaGVkSU5GKGxvY1N0cmluZywgb3B0cyA9IHt9KSB7XG4gIGNvbnN0IGtleSA9IEpTT04uc3RyaW5naWZ5KFtsb2NTdHJpbmcsIG9wdHNdKTtcbiAgbGV0IGluZiA9IGludGxOdW1DYWNoZVtrZXldO1xuICBpZiAoIWluZikge1xuICAgIGluZiA9IG5ldyBJbnRsLk51bWJlckZvcm1hdChsb2NTdHJpbmcsIG9wdHMpO1xuICAgIGludGxOdW1DYWNoZVtrZXldID0gaW5mO1xuICB9XG4gIHJldHVybiBpbmY7XG59XG5cbmxldCBpbnRsUmVsQ2FjaGUgPSB7fTtcbmZ1bmN0aW9uIGdldENhY2hlZFJURihsb2NTdHJpbmcsIG9wdHMgPSB7fSkge1xuICBjb25zdCB7IGJhc2UsIC4uLmNhY2hlS2V5T3B0cyB9ID0gb3B0czsgLy8gZXhjbHVkZSBgYmFzZWAgZnJvbSB0aGUgb3B0aW9uc1xuICBjb25zdCBrZXkgPSBKU09OLnN0cmluZ2lmeShbbG9jU3RyaW5nLCBjYWNoZUtleU9wdHNdKTtcbiAgbGV0IGluZiA9IGludGxSZWxDYWNoZVtrZXldO1xuICBpZiAoIWluZikge1xuICAgIGluZiA9IG5ldyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdChsb2NTdHJpbmcsIG9wdHMpO1xuICAgIGludGxSZWxDYWNoZVtrZXldID0gaW5mO1xuICB9XG4gIHJldHVybiBpbmY7XG59XG5cbmxldCBzeXNMb2NhbGVDYWNoZSA9IG51bGw7XG5mdW5jdGlvbiBzeXN0ZW1Mb2NhbGUoKSB7XG4gIGlmIChzeXNMb2NhbGVDYWNoZSkge1xuICAgIHJldHVybiBzeXNMb2NhbGVDYWNoZTtcbiAgfSBlbHNlIHtcbiAgICBzeXNMb2NhbGVDYWNoZSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KCkucmVzb2x2ZWRPcHRpb25zKCkubG9jYWxlO1xuICAgIHJldHVybiBzeXNMb2NhbGVDYWNoZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBwYXJzZUxvY2FsZVN0cmluZyhsb2NhbGVTdHIpIHtcbiAgLy8gSSByZWFsbHkgd2FudCB0byBhdm9pZCB3cml0aW5nIGEgQkNQIDQ3IHBhcnNlclxuICAvLyBzZWUsIGUuZy4gaHR0cHM6Ly9naXRodWIuY29tL3dvb29ybS9iY3AtNDdcbiAgLy8gSW5zdGVhZCwgd2UnbGwgZG8gdGhpczpcblxuICAvLyBhKSBpZiB0aGUgc3RyaW5nIGhhcyBubyAtdSBleHRlbnNpb25zLCBqdXN0IGxlYXZlIGl0IGFsb25lXG4gIC8vIGIpIGlmIGl0IGRvZXMsIHVzZSBJbnRsIHRvIHJlc29sdmUgZXZlcnl0aGluZ1xuICAvLyBjKSBpZiBJbnRsIGZhaWxzLCB0cnkgYWdhaW4gd2l0aG91dCB0aGUgLXVcblxuICBjb25zdCB1SW5kZXggPSBsb2NhbGVTdHIuaW5kZXhPZihcIi11LVwiKTtcbiAgaWYgKHVJbmRleCA9PT0gLTEpIHtcbiAgICByZXR1cm4gW2xvY2FsZVN0cl07XG4gIH0gZWxzZSB7XG4gICAgbGV0IG9wdGlvbnM7XG4gICAgY29uc3Qgc21hbGxlciA9IGxvY2FsZVN0ci5zdWJzdHJpbmcoMCwgdUluZGV4KTtcbiAgICB0cnkge1xuICAgICAgb3B0aW9ucyA9IGdldENhY2hlZERURihsb2NhbGVTdHIpLnJlc29sdmVkT3B0aW9ucygpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIG9wdGlvbnMgPSBnZXRDYWNoZWREVEYoc21hbGxlcikucmVzb2x2ZWRPcHRpb25zKCk7XG4gICAgfVxuXG4gICAgY29uc3QgeyBudW1iZXJpbmdTeXN0ZW0sIGNhbGVuZGFyIH0gPSBvcHRpb25zO1xuICAgIC8vIHJldHVybiB0aGUgc21hbGxlciBvbmUgc28gdGhhdCB3ZSBjYW4gYXBwZW5kIHRoZSBjYWxlbmRhciBhbmQgbnVtYmVyaW5nIG92ZXJyaWRlcyB0byBpdFxuICAgIHJldHVybiBbc21hbGxlciwgbnVtYmVyaW5nU3lzdGVtLCBjYWxlbmRhcl07XG4gIH1cbn1cblxuZnVuY3Rpb24gaW50bENvbmZpZ1N0cmluZyhsb2NhbGVTdHIsIG51bWJlcmluZ1N5c3RlbSwgb3V0cHV0Q2FsZW5kYXIpIHtcbiAgaWYgKG91dHB1dENhbGVuZGFyIHx8IG51bWJlcmluZ1N5c3RlbSkge1xuICAgIGxvY2FsZVN0ciArPSBcIi11XCI7XG5cbiAgICBpZiAob3V0cHV0Q2FsZW5kYXIpIHtcbiAgICAgIGxvY2FsZVN0ciArPSBgLWNhLSR7b3V0cHV0Q2FsZW5kYXJ9YDtcbiAgICB9XG5cbiAgICBpZiAobnVtYmVyaW5nU3lzdGVtKSB7XG4gICAgICBsb2NhbGVTdHIgKz0gYC1udS0ke251bWJlcmluZ1N5c3RlbX1gO1xuICAgIH1cbiAgICByZXR1cm4gbG9jYWxlU3RyO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBsb2NhbGVTdHI7XG4gIH1cbn1cblxuZnVuY3Rpb24gbWFwTW9udGhzKGYpIHtcbiAgY29uc3QgbXMgPSBbXTtcbiAgZm9yIChsZXQgaSA9IDE7IGkgPD0gMTI7IGkrKykge1xuICAgIGNvbnN0IGR0ID0gRGF0ZVRpbWUudXRjKDIwMTYsIGksIDEpO1xuICAgIG1zLnB1c2goZihkdCkpO1xuICB9XG4gIHJldHVybiBtcztcbn1cblxuZnVuY3Rpb24gbWFwV2Vla2RheXMoZikge1xuICBjb25zdCBtcyA9IFtdO1xuICBmb3IgKGxldCBpID0gMTsgaSA8PSA3OyBpKyspIHtcbiAgICBjb25zdCBkdCA9IERhdGVUaW1lLnV0YygyMDE2LCAxMSwgMTMgKyBpKTtcbiAgICBtcy5wdXNoKGYoZHQpKTtcbiAgfVxuICByZXR1cm4gbXM7XG59XG5cbmZ1bmN0aW9uIGxpc3RTdHVmZihsb2MsIGxlbmd0aCwgZGVmYXVsdE9LLCBlbmdsaXNoRm4sIGludGxGbikge1xuICBjb25zdCBtb2RlID0gbG9jLmxpc3RpbmdNb2RlKGRlZmF1bHRPSyk7XG5cbiAgaWYgKG1vZGUgPT09IFwiZXJyb3JcIikge1xuICAgIHJldHVybiBudWxsO1xuICB9IGVsc2UgaWYgKG1vZGUgPT09IFwiZW5cIikge1xuICAgIHJldHVybiBlbmdsaXNoRm4obGVuZ3RoKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gaW50bEZuKGxlbmd0aCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gc3VwcG9ydHNGYXN0TnVtYmVycyhsb2MpIHtcbiAgaWYgKGxvYy5udW1iZXJpbmdTeXN0ZW0gJiYgbG9jLm51bWJlcmluZ1N5c3RlbSAhPT0gXCJsYXRuXCIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIChcbiAgICAgIGxvYy5udW1iZXJpbmdTeXN0ZW0gPT09IFwibGF0blwiIHx8XG4gICAgICAhbG9jLmxvY2FsZSB8fFxuICAgICAgbG9jLmxvY2FsZS5zdGFydHNXaXRoKFwiZW5cIikgfHxcbiAgICAgIG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvYy5pbnRsKS5yZXNvbHZlZE9wdGlvbnMoKS5udW1iZXJpbmdTeXN0ZW0gPT09IFwibGF0blwiXG4gICAgKTtcbiAgfVxufVxuXG4vKipcbiAqIEBwcml2YXRlXG4gKi9cblxuY2xhc3MgUG9seU51bWJlckZvcm1hdHRlciB7XG4gIGNvbnN0cnVjdG9yKGludGwsIGZvcmNlU2ltcGxlLCBvcHRzKSB7XG4gICAgdGhpcy5wYWRUbyA9IG9wdHMucGFkVG8gfHwgMDtcbiAgICB0aGlzLmZsb29yID0gb3B0cy5mbG9vciB8fCBmYWxzZTtcblxuICAgIGNvbnN0IHsgcGFkVG8sIGZsb29yLCAuLi5vdGhlck9wdHMgfSA9IG9wdHM7XG5cbiAgICBpZiAoIWZvcmNlU2ltcGxlIHx8IE9iamVjdC5rZXlzKG90aGVyT3B0cykubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgaW50bE9wdHMgPSB7IHVzZUdyb3VwaW5nOiBmYWxzZSwgLi4ub3B0cyB9O1xuICAgICAgaWYgKG9wdHMucGFkVG8gPiAwKSBpbnRsT3B0cy5taW5pbXVtSW50ZWdlckRpZ2l0cyA9IG9wdHMucGFkVG87XG4gICAgICB0aGlzLmluZiA9IGdldENhY2hlZElORihpbnRsLCBpbnRsT3B0cyk7XG4gICAgfVxuICB9XG5cbiAgZm9ybWF0KGkpIHtcbiAgICBpZiAodGhpcy5pbmYpIHtcbiAgICAgIGNvbnN0IGZpeGVkID0gdGhpcy5mbG9vciA/IE1hdGguZmxvb3IoaSkgOiBpO1xuICAgICAgcmV0dXJuIHRoaXMuaW5mLmZvcm1hdChmaXhlZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHRvIG1hdGNoIHRoZSBicm93c2VyJ3MgbnVtYmVyZm9ybWF0dGVyIGRlZmF1bHRzXG4gICAgICBjb25zdCBmaXhlZCA9IHRoaXMuZmxvb3IgPyBNYXRoLmZsb29yKGkpIDogcm91bmRUbyhpLCAzKTtcbiAgICAgIHJldHVybiBwYWRTdGFydChmaXhlZCwgdGhpcy5wYWRUbyk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQHByaXZhdGVcbiAqL1xuXG5jbGFzcyBQb2x5RGF0ZUZvcm1hdHRlciB7XG4gIGNvbnN0cnVjdG9yKGR0LCBpbnRsLCBvcHRzKSB7XG4gICAgdGhpcy5vcHRzID0gb3B0cztcblxuICAgIGxldCB6O1xuICAgIGlmIChkdC56b25lLmlzVW5pdmVyc2FsKSB7XG4gICAgICAvLyBVVEMtOCBvciBFdGMvVVRDLTggYXJlIG5vdCBwYXJ0IG9mIHR6ZGF0YSwgb25seSBFdGMvR01UKzggYW5kIHRoZSBsaWtlLlxuICAgICAgLy8gVGhhdCBpcyB3aHkgZml4ZWQtb2Zmc2V0IFRaIGlzIHNldCB0byB0aGF0IHVubGVzcyBpdCBpczpcbiAgICAgIC8vIDEuIFJlcHJlc2VudGluZyBvZmZzZXQgMCB3aGVuIFVUQyBpcyB1c2VkIHRvIG1haW50YWluIHByZXZpb3VzIGJlaGF2aW9yIGFuZCBkb2VzIG5vdCBiZWNvbWUgR01ULlxuICAgICAgLy8gMi4gVW5zdXBwb3J0ZWQgYnkgdGhlIGJyb3dzZXI6XG4gICAgICAvLyAgICAtIHNvbWUgZG8gbm90IHN1cHBvcnQgRXRjL1xuICAgICAgLy8gICAgLSA8IEV0Yy9HTVQtMTQsID4gRXRjL0dNVCsxMiwgYW5kIDMwLW1pbnV0ZSBvciA0NS1taW51dGUgb2Zmc2V0cyBhcmUgbm90IHBhcnQgb2YgdHpkYXRhXG4gICAgICBjb25zdCBnbXRPZmZzZXQgPSAtMSAqIChkdC5vZmZzZXQgLyA2MCk7XG4gICAgICBjb25zdCBvZmZzZXRaID0gZ210T2Zmc2V0ID49IDAgPyBgRXRjL0dNVCske2dtdE9mZnNldH1gIDogYEV0Yy9HTVQke2dtdE9mZnNldH1gO1xuICAgICAgaWYgKGR0Lm9mZnNldCAhPT0gMCAmJiBJQU5BWm9uZS5jcmVhdGUob2Zmc2V0WikudmFsaWQpIHtcbiAgICAgICAgeiA9IG9mZnNldFo7XG4gICAgICAgIHRoaXMuZHQgPSBkdDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIE5vdCBhbGwgZml4ZWQtb2Zmc2V0IHpvbmVzIGxpa2UgRXRjLys0OjMwIGFyZSBwcmVzZW50IGluIHR6ZGF0YS5cbiAgICAgICAgLy8gU28gd2UgaGF2ZSB0byBtYWtlIGRvLiBUd28gY2FzZXM6XG4gICAgICAgIC8vIDEuIFRoZSBmb3JtYXQgb3B0aW9ucyB0ZWxsIHVzIHRvIHNob3cgdGhlIHpvbmUuIFdlIGNhbid0IGRvIHRoYXQsIHNvIHRoZSBiZXN0XG4gICAgICAgIC8vIHdlIGNhbiBkbyBpcyBmb3JtYXQgdGhlIGRhdGUgaW4gVVRDLlxuICAgICAgICAvLyAyLiBUaGUgZm9ybWF0IG9wdGlvbnMgZG9uJ3QgdGVsbCB1cyB0byBzaG93IHRoZSB6b25lLiBUaGVuIHdlIGNhbiBhZGp1c3QgdGhlbVxuICAgICAgICAvLyB0aGUgdGltZSBhbmQgdGVsbCB0aGUgZm9ybWF0dGVyIHRvIHNob3cgaXQgdG8gdXMgaW4gVVRDLCBzbyB0aGF0IHRoZSB0aW1lIGlzIHJpZ2h0XG4gICAgICAgIC8vIGFuZCB0aGUgYmFkIHpvbmUgZG9lc24ndCBzaG93IHVwLlxuICAgICAgICB6ID0gXCJVVENcIjtcbiAgICAgICAgaWYgKG9wdHMudGltZVpvbmVOYW1lKSB7XG4gICAgICAgICAgdGhpcy5kdCA9IGR0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZHQgPSBkdC5vZmZzZXQgPT09IDAgPyBkdCA6IERhdGVUaW1lLmZyb21NaWxsaXMoZHQudHMgKyBkdC5vZmZzZXQgKiA2MCAqIDEwMDApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChkdC56b25lLnR5cGUgPT09IFwic3lzdGVtXCIpIHtcbiAgICAgIHRoaXMuZHQgPSBkdDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kdCA9IGR0O1xuICAgICAgeiA9IGR0LnpvbmUubmFtZTtcbiAgICB9XG5cbiAgICBjb25zdCBpbnRsT3B0cyA9IHsgLi4udGhpcy5vcHRzIH07XG4gICAgaWYgKHopIHtcbiAgICAgIGludGxPcHRzLnRpbWVab25lID0gejtcbiAgICB9XG4gICAgdGhpcy5kdGYgPSBnZXRDYWNoZWREVEYoaW50bCwgaW50bE9wdHMpO1xuICB9XG5cbiAgZm9ybWF0KCkge1xuICAgIHJldHVybiB0aGlzLmR0Zi5mb3JtYXQodGhpcy5kdC50b0pTRGF0ZSgpKTtcbiAgfVxuXG4gIGZvcm1hdFRvUGFydHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZHRmLmZvcm1hdFRvUGFydHModGhpcy5kdC50b0pTRGF0ZSgpKTtcbiAgfVxuXG4gIHJlc29sdmVkT3B0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5kdGYucmVzb2x2ZWRPcHRpb25zKCk7XG4gIH1cbn1cblxuLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5jbGFzcyBQb2x5UmVsRm9ybWF0dGVyIHtcbiAgY29uc3RydWN0b3IoaW50bCwgaXNFbmdsaXNoLCBvcHRzKSB7XG4gICAgdGhpcy5vcHRzID0geyBzdHlsZTogXCJsb25nXCIsIC4uLm9wdHMgfTtcbiAgICBpZiAoIWlzRW5nbGlzaCAmJiBoYXNSZWxhdGl2ZSgpKSB7XG4gICAgICB0aGlzLnJ0ZiA9IGdldENhY2hlZFJURihpbnRsLCBvcHRzKTtcbiAgICB9XG4gIH1cblxuICBmb3JtYXQoY291bnQsIHVuaXQpIHtcbiAgICBpZiAodGhpcy5ydGYpIHtcbiAgICAgIHJldHVybiB0aGlzLnJ0Zi5mb3JtYXQoY291bnQsIHVuaXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gRW5nbGlzaC5mb3JtYXRSZWxhdGl2ZVRpbWUodW5pdCwgY291bnQsIHRoaXMub3B0cy5udW1lcmljLCB0aGlzLm9wdHMuc3R5bGUgIT09IFwibG9uZ1wiKTtcbiAgICB9XG4gIH1cblxuICBmb3JtYXRUb1BhcnRzKGNvdW50LCB1bml0KSB7XG4gICAgaWYgKHRoaXMucnRmKSB7XG4gICAgICByZXR1cm4gdGhpcy5ydGYuZm9ybWF0VG9QYXJ0cyhjb3VudCwgdW5pdCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExvY2FsZSB7XG4gIHN0YXRpYyBmcm9tT3B0cyhvcHRzKSB7XG4gICAgcmV0dXJuIExvY2FsZS5jcmVhdGUob3B0cy5sb2NhbGUsIG9wdHMubnVtYmVyaW5nU3lzdGVtLCBvcHRzLm91dHB1dENhbGVuZGFyLCBvcHRzLmRlZmF1bHRUb0VOKTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGUobG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG91dHB1dENhbGVuZGFyLCBkZWZhdWx0VG9FTiA9IGZhbHNlKSB7XG4gICAgY29uc3Qgc3BlY2lmaWVkTG9jYWxlID0gbG9jYWxlIHx8IFNldHRpbmdzLmRlZmF1bHRMb2NhbGU7XG4gICAgLy8gdGhlIHN5c3RlbSBsb2NhbGUgaXMgdXNlZnVsIGZvciBodW1hbiByZWFkYWJsZSBzdHJpbmdzIGJ1dCBhbm5veWluZyBmb3IgcGFyc2luZy9mb3JtYXR0aW5nIGtub3duIGZvcm1hdHNcbiAgICBjb25zdCBsb2NhbGVSID0gc3BlY2lmaWVkTG9jYWxlIHx8IChkZWZhdWx0VG9FTiA/IFwiZW4tVVNcIiA6IHN5c3RlbUxvY2FsZSgpKTtcbiAgICBjb25zdCBudW1iZXJpbmdTeXN0ZW1SID0gbnVtYmVyaW5nU3lzdGVtIHx8IFNldHRpbmdzLmRlZmF1bHROdW1iZXJpbmdTeXN0ZW07XG4gICAgY29uc3Qgb3V0cHV0Q2FsZW5kYXJSID0gb3V0cHV0Q2FsZW5kYXIgfHwgU2V0dGluZ3MuZGVmYXVsdE91dHB1dENhbGVuZGFyO1xuICAgIHJldHVybiBuZXcgTG9jYWxlKGxvY2FsZVIsIG51bWJlcmluZ1N5c3RlbVIsIG91dHB1dENhbGVuZGFyUiwgc3BlY2lmaWVkTG9jYWxlKTtcbiAgfVxuXG4gIHN0YXRpYyByZXNldENhY2hlKCkge1xuICAgIHN5c0xvY2FsZUNhY2hlID0gbnVsbDtcbiAgICBpbnRsRFRDYWNoZSA9IHt9O1xuICAgIGludGxOdW1DYWNoZSA9IHt9O1xuICAgIGludGxSZWxDYWNoZSA9IHt9O1xuICB9XG5cbiAgc3RhdGljIGZyb21PYmplY3QoeyBsb2NhbGUsIG51bWJlcmluZ1N5c3RlbSwgb3V0cHV0Q2FsZW5kYXIgfSA9IHt9KSB7XG4gICAgcmV0dXJuIExvY2FsZS5jcmVhdGUobG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG91dHB1dENhbGVuZGFyKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKGxvY2FsZSwgbnVtYmVyaW5nLCBvdXRwdXRDYWxlbmRhciwgc3BlY2lmaWVkTG9jYWxlKSB7XG4gICAgY29uc3QgW3BhcnNlZExvY2FsZSwgcGFyc2VkTnVtYmVyaW5nU3lzdGVtLCBwYXJzZWRPdXRwdXRDYWxlbmRhcl0gPSBwYXJzZUxvY2FsZVN0cmluZyhsb2NhbGUpO1xuXG4gICAgdGhpcy5sb2NhbGUgPSBwYXJzZWRMb2NhbGU7XG4gICAgdGhpcy5udW1iZXJpbmdTeXN0ZW0gPSBudW1iZXJpbmcgfHwgcGFyc2VkTnVtYmVyaW5nU3lzdGVtIHx8IG51bGw7XG4gICAgdGhpcy5vdXRwdXRDYWxlbmRhciA9IG91dHB1dENhbGVuZGFyIHx8IHBhcnNlZE91dHB1dENhbGVuZGFyIHx8IG51bGw7XG4gICAgdGhpcy5pbnRsID0gaW50bENvbmZpZ1N0cmluZyh0aGlzLmxvY2FsZSwgdGhpcy5udW1iZXJpbmdTeXN0ZW0sIHRoaXMub3V0cHV0Q2FsZW5kYXIpO1xuXG4gICAgdGhpcy53ZWVrZGF5c0NhY2hlID0geyBmb3JtYXQ6IHt9LCBzdGFuZGFsb25lOiB7fSB9O1xuICAgIHRoaXMubW9udGhzQ2FjaGUgPSB7IGZvcm1hdDoge30sIHN0YW5kYWxvbmU6IHt9IH07XG4gICAgdGhpcy5tZXJpZGllbUNhY2hlID0gbnVsbDtcbiAgICB0aGlzLmVyYUNhY2hlID0ge307XG5cbiAgICB0aGlzLnNwZWNpZmllZExvY2FsZSA9IHNwZWNpZmllZExvY2FsZTtcbiAgICB0aGlzLmZhc3ROdW1iZXJzQ2FjaGVkID0gbnVsbDtcbiAgfVxuXG4gIGdldCBmYXN0TnVtYmVycygpIHtcbiAgICBpZiAodGhpcy5mYXN0TnVtYmVyc0NhY2hlZCA9PSBudWxsKSB7XG4gICAgICB0aGlzLmZhc3ROdW1iZXJzQ2FjaGVkID0gc3VwcG9ydHNGYXN0TnVtYmVycyh0aGlzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5mYXN0TnVtYmVyc0NhY2hlZDtcbiAgfVxuXG4gIGxpc3RpbmdNb2RlKCkge1xuICAgIGNvbnN0IGlzQWN0dWFsbHlFbiA9IHRoaXMuaXNFbmdsaXNoKCk7XG4gICAgY29uc3QgaGFzTm9XZWlyZG5lc3MgPVxuICAgICAgKHRoaXMubnVtYmVyaW5nU3lzdGVtID09PSBudWxsIHx8IHRoaXMubnVtYmVyaW5nU3lzdGVtID09PSBcImxhdG5cIikgJiZcbiAgICAgICh0aGlzLm91dHB1dENhbGVuZGFyID09PSBudWxsIHx8IHRoaXMub3V0cHV0Q2FsZW5kYXIgPT09IFwiZ3JlZ29yeVwiKTtcbiAgICByZXR1cm4gaXNBY3R1YWxseUVuICYmIGhhc05vV2VpcmRuZXNzID8gXCJlblwiIDogXCJpbnRsXCI7XG4gIH1cblxuICBjbG9uZShhbHRzKSB7XG4gICAgaWYgKCFhbHRzIHx8IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGFsdHMpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBMb2NhbGUuY3JlYXRlKFxuICAgICAgICBhbHRzLmxvY2FsZSB8fCB0aGlzLnNwZWNpZmllZExvY2FsZSxcbiAgICAgICAgYWx0cy5udW1iZXJpbmdTeXN0ZW0gfHwgdGhpcy5udW1iZXJpbmdTeXN0ZW0sXG4gICAgICAgIGFsdHMub3V0cHV0Q2FsZW5kYXIgfHwgdGhpcy5vdXRwdXRDYWxlbmRhcixcbiAgICAgICAgYWx0cy5kZWZhdWx0VG9FTiB8fCBmYWxzZVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICByZWRlZmF1bHRUb0VOKGFsdHMgPSB7fSkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKHsgLi4uYWx0cywgZGVmYXVsdFRvRU46IHRydWUgfSk7XG4gIH1cblxuICByZWRlZmF1bHRUb1N5c3RlbShhbHRzID0ge30pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSh7IC4uLmFsdHMsIGRlZmF1bHRUb0VOOiBmYWxzZSB9KTtcbiAgfVxuXG4gIG1vbnRocyhsZW5ndGgsIGZvcm1hdCA9IGZhbHNlLCBkZWZhdWx0T0sgPSB0cnVlKSB7XG4gICAgcmV0dXJuIGxpc3RTdHVmZih0aGlzLCBsZW5ndGgsIGRlZmF1bHRPSywgRW5nbGlzaC5tb250aHMsICgpID0+IHtcbiAgICAgIGNvbnN0IGludGwgPSBmb3JtYXQgPyB7IG1vbnRoOiBsZW5ndGgsIGRheTogXCJudW1lcmljXCIgfSA6IHsgbW9udGg6IGxlbmd0aCB9LFxuICAgICAgICBmb3JtYXRTdHIgPSBmb3JtYXQgPyBcImZvcm1hdFwiIDogXCJzdGFuZGFsb25lXCI7XG4gICAgICBpZiAoIXRoaXMubW9udGhzQ2FjaGVbZm9ybWF0U3RyXVtsZW5ndGhdKSB7XG4gICAgICAgIHRoaXMubW9udGhzQ2FjaGVbZm9ybWF0U3RyXVtsZW5ndGhdID0gbWFwTW9udGhzKChkdCkgPT4gdGhpcy5leHRyYWN0KGR0LCBpbnRsLCBcIm1vbnRoXCIpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLm1vbnRoc0NhY2hlW2Zvcm1hdFN0cl1bbGVuZ3RoXTtcbiAgICB9KTtcbiAgfVxuXG4gIHdlZWtkYXlzKGxlbmd0aCwgZm9ybWF0ID0gZmFsc2UsIGRlZmF1bHRPSyA9IHRydWUpIHtcbiAgICByZXR1cm4gbGlzdFN0dWZmKHRoaXMsIGxlbmd0aCwgZGVmYXVsdE9LLCBFbmdsaXNoLndlZWtkYXlzLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbnRsID0gZm9ybWF0XG4gICAgICAgICAgPyB7IHdlZWtkYXk6IGxlbmd0aCwgeWVhcjogXCJudW1lcmljXCIsIG1vbnRoOiBcImxvbmdcIiwgZGF5OiBcIm51bWVyaWNcIiB9XG4gICAgICAgICAgOiB7IHdlZWtkYXk6IGxlbmd0aCB9LFxuICAgICAgICBmb3JtYXRTdHIgPSBmb3JtYXQgPyBcImZvcm1hdFwiIDogXCJzdGFuZGFsb25lXCI7XG4gICAgICBpZiAoIXRoaXMud2Vla2RheXNDYWNoZVtmb3JtYXRTdHJdW2xlbmd0aF0pIHtcbiAgICAgICAgdGhpcy53ZWVrZGF5c0NhY2hlW2Zvcm1hdFN0cl1bbGVuZ3RoXSA9IG1hcFdlZWtkYXlzKChkdCkgPT5cbiAgICAgICAgICB0aGlzLmV4dHJhY3QoZHQsIGludGwsIFwid2Vla2RheVwiKVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMud2Vla2RheXNDYWNoZVtmb3JtYXRTdHJdW2xlbmd0aF07XG4gICAgfSk7XG4gIH1cblxuICBtZXJpZGllbXMoZGVmYXVsdE9LID0gdHJ1ZSkge1xuICAgIHJldHVybiBsaXN0U3R1ZmYoXG4gICAgICB0aGlzLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgZGVmYXVsdE9LLFxuICAgICAgKCkgPT4gRW5nbGlzaC5tZXJpZGllbXMsXG4gICAgICAoKSA9PiB7XG4gICAgICAgIC8vIEluIHRoZW9yeSB0aGVyZSBjb3VsZCBiZSBhcmliaXRyYXJ5IGRheSBwZXJpb2RzLiBXZSdyZSBnb25uYSBhc3N1bWUgdGhlcmUgYXJlIGV4YWN0bHkgdHdvXG4gICAgICAgIC8vIGZvciBBTSBhbmQgUE0uIFRoaXMgaXMgcHJvYmFibHkgd3JvbmcsIGJ1dCBpdCdzIG1ha2VzIHBhcnNpbmcgd2F5IGVhc2llci5cbiAgICAgICAgaWYgKCF0aGlzLm1lcmlkaWVtQ2FjaGUpIHtcbiAgICAgICAgICBjb25zdCBpbnRsID0geyBob3VyOiBcIm51bWVyaWNcIiwgaG91ckN5Y2xlOiBcImgxMlwiIH07XG4gICAgICAgICAgdGhpcy5tZXJpZGllbUNhY2hlID0gW0RhdGVUaW1lLnV0YygyMDE2LCAxMSwgMTMsIDkpLCBEYXRlVGltZS51dGMoMjAxNiwgMTEsIDEzLCAxOSldLm1hcChcbiAgICAgICAgICAgIChkdCkgPT4gdGhpcy5leHRyYWN0KGR0LCBpbnRsLCBcImRheXBlcmlvZFwiKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5tZXJpZGllbUNhY2hlO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBlcmFzKGxlbmd0aCwgZGVmYXVsdE9LID0gdHJ1ZSkge1xuICAgIHJldHVybiBsaXN0U3R1ZmYodGhpcywgbGVuZ3RoLCBkZWZhdWx0T0ssIEVuZ2xpc2guZXJhcywgKCkgPT4ge1xuICAgICAgY29uc3QgaW50bCA9IHsgZXJhOiBsZW5ndGggfTtcblxuICAgICAgLy8gVGhpcyBpcyBwcm9ibGVtYXRpYy4gRGlmZmVyZW50IGNhbGVuZGFycyBhcmUgZ29pbmcgdG8gZGVmaW5lIGVyYXMgdG90YWxseSBkaWZmZXJlbnRseS4gV2hhdCBJIG5lZWQgaXMgdGhlIG1pbmltdW0gc2V0IG9mIGRhdGVzXG4gICAgICAvLyB0byBkZWZpbml0ZWx5IGVudW1lcmF0ZSB0aGVtLlxuICAgICAgaWYgKCF0aGlzLmVyYUNhY2hlW2xlbmd0aF0pIHtcbiAgICAgICAgdGhpcy5lcmFDYWNoZVtsZW5ndGhdID0gW0RhdGVUaW1lLnV0YygtNDAsIDEsIDEpLCBEYXRlVGltZS51dGMoMjAxNywgMSwgMSldLm1hcCgoZHQpID0+XG4gICAgICAgICAgdGhpcy5leHRyYWN0KGR0LCBpbnRsLCBcImVyYVwiKVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5lcmFDYWNoZVtsZW5ndGhdO1xuICAgIH0pO1xuICB9XG5cbiAgZXh0cmFjdChkdCwgaW50bE9wdHMsIGZpZWxkKSB7XG4gICAgY29uc3QgZGYgPSB0aGlzLmR0Rm9ybWF0dGVyKGR0LCBpbnRsT3B0cyksXG4gICAgICByZXN1bHRzID0gZGYuZm9ybWF0VG9QYXJ0cygpLFxuICAgICAgbWF0Y2hpbmcgPSByZXN1bHRzLmZpbmQoKG0pID0+IG0udHlwZS50b0xvd2VyQ2FzZSgpID09PSBmaWVsZCk7XG4gICAgcmV0dXJuIG1hdGNoaW5nID8gbWF0Y2hpbmcudmFsdWUgOiBudWxsO1xuICB9XG5cbiAgbnVtYmVyRm9ybWF0dGVyKG9wdHMgPSB7fSkge1xuICAgIC8vIHRoaXMgZm9yY2VzaW1wbGUgb3B0aW9uIGlzIG5ldmVyIHVzZWQgKHRoZSBvbmx5IGNhbGxlciBzaG9ydC1jaXJjdWl0cyBvbiBpdCwgYnV0IGl0IHNlZW1zIHNhZmVyIHRvIGxlYXZlKVxuICAgIC8vIChpbiBjb250cmFzdCwgdGhlIHJlc3Qgb2YgdGhlIGNvbmRpdGlvbiBpcyB1c2VkIGhlYXZpbHkpXG4gICAgcmV0dXJuIG5ldyBQb2x5TnVtYmVyRm9ybWF0dGVyKHRoaXMuaW50bCwgb3B0cy5mb3JjZVNpbXBsZSB8fCB0aGlzLmZhc3ROdW1iZXJzLCBvcHRzKTtcbiAgfVxuXG4gIGR0Rm9ybWF0dGVyKGR0LCBpbnRsT3B0cyA9IHt9KSB7XG4gICAgcmV0dXJuIG5ldyBQb2x5RGF0ZUZvcm1hdHRlcihkdCwgdGhpcy5pbnRsLCBpbnRsT3B0cyk7XG4gIH1cblxuICByZWxGb3JtYXR0ZXIob3B0cyA9IHt9KSB7XG4gICAgcmV0dXJuIG5ldyBQb2x5UmVsRm9ybWF0dGVyKHRoaXMuaW50bCwgdGhpcy5pc0VuZ2xpc2goKSwgb3B0cyk7XG4gIH1cblxuICBsaXN0Rm9ybWF0dGVyKG9wdHMgPSB7fSkge1xuICAgIHJldHVybiBnZXRDYWNoZWRMRih0aGlzLmludGwsIG9wdHMpO1xuICB9XG5cbiAgaXNFbmdsaXNoKCkge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmxvY2FsZSA9PT0gXCJlblwiIHx8XG4gICAgICB0aGlzLmxvY2FsZS50b0xvd2VyQ2FzZSgpID09PSBcImVuLXVzXCIgfHxcbiAgICAgIG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KHRoaXMuaW50bCkucmVzb2x2ZWRPcHRpb25zKCkubG9jYWxlLnN0YXJ0c1dpdGgoXCJlbi11c1wiKVxuICAgICk7XG4gIH1cblxuICBlcXVhbHMob3RoZXIpIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5sb2NhbGUgPT09IG90aGVyLmxvY2FsZSAmJlxuICAgICAgdGhpcy5udW1iZXJpbmdTeXN0ZW0gPT09IG90aGVyLm51bWJlcmluZ1N5c3RlbSAmJlxuICAgICAgdGhpcy5vdXRwdXRDYWxlbmRhciA9PT0gb3RoZXIub3V0cHV0Q2FsZW5kYXJcbiAgICApO1xuICB9XG59XG4iLCAiaW1wb3J0IHtcbiAgdW50cnVuY2F0ZVllYXIsXG4gIHNpZ25lZE9mZnNldCxcbiAgcGFyc2VJbnRlZ2VyLFxuICBwYXJzZU1pbGxpcyxcbiAgaWFuYVJlZ2V4LFxuICBpc1VuZGVmaW5lZCxcbiAgcGFyc2VGbG9hdGluZ1xufSBmcm9tIFwiLi91dGlsLmpzXCI7XG5pbXBvcnQgKiBhcyBFbmdsaXNoIGZyb20gXCIuL2VuZ2xpc2guanNcIjtcbmltcG9ydCBGaXhlZE9mZnNldFpvbmUgZnJvbSBcIi4uL3pvbmVzL2ZpeGVkT2Zmc2V0Wm9uZS5qc1wiO1xuaW1wb3J0IElBTkFab25lIGZyb20gXCIuLi96b25lcy9JQU5BWm9uZS5qc1wiO1xuXG4vKlxuICogVGhpcyBmaWxlIGhhbmRsZXMgcGFyc2luZyBmb3Igd2VsbC1zcGVjaWZpZWQgZm9ybWF0cy4gSGVyZSdzIGhvdyBpdCB3b3JrczpcbiAqIFR3byB0aGluZ3MgZ28gaW50byBwYXJzaW5nOiBhIHJlZ2V4IHRvIG1hdGNoIHdpdGggYW5kIGFuIGV4dHJhY3RvciB0byB0YWtlIGFwYXJ0IHRoZSBncm91cHMgaW4gdGhlIG1hdGNoLlxuICogQW4gZXh0cmFjdG9yIGlzIGp1c3QgYSBmdW5jdGlvbiB0aGF0IHRha2VzIGEgcmVnZXggbWF0Y2ggYXJyYXkgYW5kIHJldHVybnMgYSB7IHllYXI6IC4uLiwgbW9udGg6IC4uLiB9IG9iamVjdFxuICogcGFyc2UoKSBkb2VzIHRoZSB3b3JrIG9mIGV4ZWN1dGluZyB0aGUgcmVnZXggYW5kIGFwcGx5aW5nIHRoZSBleHRyYWN0b3IuIEl0IHRha2VzIG11bHRpcGxlIHJlZ2V4L2V4dHJhY3RvciBwYWlycyB0byB0cnkgaW4gc2VxdWVuY2UuXG4gKiBFeHRyYWN0b3JzIGNhbiB0YWtlIGEgXCJjdXJzb3JcIiByZXByZXNlbnRpbmcgdGhlIG9mZnNldCBpbiB0aGUgbWF0Y2ggdG8gbG9vayBhdC4gVGhpcyBtYWtlcyBpdCBlYXN5IHRvIGNvbWJpbmUgZXh0cmFjdG9ycy5cbiAqIGNvbWJpbmVFeHRyYWN0b3JzKCkgZG9lcyB0aGUgd29yayBvZiBjb21iaW5pbmcgdGhlbSwga2VlcGluZyB0cmFjayBvZiB0aGUgY3Vyc29yIHRocm91Z2ggbXVsdGlwbGUgZXh0cmFjdGlvbnMuXG4gKiBTb21lIGV4dHJhY3Rpb25zIGFyZSBzdXBlciBkdW1iIGFuZCBzaW1wbGVQYXJzZSBhbmQgZnJvbVN0cmluZ3MgaGVscCBEUlkgdGhlbS5cbiAqL1xuXG5mdW5jdGlvbiBjb21iaW5lUmVnZXhlcyguLi5yZWdleGVzKSB7XG4gIGNvbnN0IGZ1bGwgPSByZWdleGVzLnJlZHVjZSgoZiwgcikgPT4gZiArIHIuc291cmNlLCBcIlwiKTtcbiAgcmV0dXJuIFJlZ0V4cChgXiR7ZnVsbH0kYCk7XG59XG5cbmZ1bmN0aW9uIGNvbWJpbmVFeHRyYWN0b3JzKC4uLmV4dHJhY3RvcnMpIHtcbiAgcmV0dXJuIG0gPT5cbiAgICBleHRyYWN0b3JzXG4gICAgICAucmVkdWNlKFxuICAgICAgICAoW21lcmdlZFZhbHMsIG1lcmdlZFpvbmUsIGN1cnNvcl0sIGV4KSA9PiB7XG4gICAgICAgICAgY29uc3QgW3ZhbCwgem9uZSwgbmV4dF0gPSBleChtLCBjdXJzb3IpO1xuICAgICAgICAgIHJldHVybiBbeyAuLi5tZXJnZWRWYWxzLCAuLi52YWwgfSwgem9uZSB8fCBtZXJnZWRab25lLCBuZXh0XTtcbiAgICAgICAgfSxcbiAgICAgICAgW3t9LCBudWxsLCAxXVxuICAgICAgKVxuICAgICAgLnNsaWNlKDAsIDIpO1xufVxuXG5mdW5jdGlvbiBwYXJzZShzLCAuLi5wYXR0ZXJucykge1xuICBpZiAocyA9PSBudWxsKSB7XG4gICAgcmV0dXJuIFtudWxsLCBudWxsXTtcbiAgfVxuXG4gIGZvciAoY29uc3QgW3JlZ2V4LCBleHRyYWN0b3JdIG9mIHBhdHRlcm5zKSB7XG4gICAgY29uc3QgbSA9IHJlZ2V4LmV4ZWMocyk7XG4gICAgaWYgKG0pIHtcbiAgICAgIHJldHVybiBleHRyYWN0b3IobSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBbbnVsbCwgbnVsbF07XG59XG5cbmZ1bmN0aW9uIHNpbXBsZVBhcnNlKC4uLmtleXMpIHtcbiAgcmV0dXJuIChtYXRjaCwgY3Vyc29yKSA9PiB7XG4gICAgY29uc3QgcmV0ID0ge307XG4gICAgbGV0IGk7XG5cbiAgICBmb3IgKGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgcmV0W2tleXNbaV1dID0gcGFyc2VJbnRlZ2VyKG1hdGNoW2N1cnNvciArIGldKTtcbiAgICB9XG4gICAgcmV0dXJuIFtyZXQsIG51bGwsIGN1cnNvciArIGldO1xuICB9O1xufVxuXG4vLyBJU08gYW5kIFNRTCBwYXJzaW5nXG5jb25zdCBvZmZzZXRSZWdleCA9IC8oPzooWil8KFsrLV1cXGRcXGQpKD86Oj8oXFxkXFxkKSk/KS87XG5jb25zdCBpc29FeHRlbmRlZFpvbmUgPSBgKD86JHtvZmZzZXRSZWdleC5zb3VyY2V9Pyg/OlxcXFxbKCR7aWFuYVJlZ2V4LnNvdXJjZX0pXFxcXF0pPyk/YDtcbmNvbnN0IGlzb1RpbWVCYXNlUmVnZXggPSAvKFxcZFxcZCkoPzo6PyhcXGRcXGQpKD86Oj8oXFxkXFxkKSg/OlsuLF0oXFxkezEsMzB9KSk/KT8pPy87XG5jb25zdCBpc29UaW1lUmVnZXggPSBSZWdFeHAoYCR7aXNvVGltZUJhc2VSZWdleC5zb3VyY2V9JHtpc29FeHRlbmRlZFpvbmV9YCk7XG5jb25zdCBpc29UaW1lRXh0ZW5zaW9uUmVnZXggPSBSZWdFeHAoYCg/OlQke2lzb1RpbWVSZWdleC5zb3VyY2V9KT9gKTtcbmNvbnN0IGlzb1ltZFJlZ2V4ID0gLyhbKy1dXFxkezZ9fFxcZHs0fSkoPzotPyhcXGRcXGQpKD86LT8oXFxkXFxkKSk/KT8vO1xuY29uc3QgaXNvV2Vla1JlZ2V4ID0gLyhcXGR7NH0pLT9XKFxcZFxcZCkoPzotPyhcXGQpKT8vO1xuY29uc3QgaXNvT3JkaW5hbFJlZ2V4ID0gLyhcXGR7NH0pLT8oXFxkezN9KS87XG5jb25zdCBleHRyYWN0SVNPV2Vla0RhdGEgPSBzaW1wbGVQYXJzZShcIndlZWtZZWFyXCIsIFwid2Vla051bWJlclwiLCBcIndlZWtEYXlcIik7XG5jb25zdCBleHRyYWN0SVNPT3JkaW5hbERhdGEgPSBzaW1wbGVQYXJzZShcInllYXJcIiwgXCJvcmRpbmFsXCIpO1xuY29uc3Qgc3FsWW1kUmVnZXggPSAvKFxcZHs0fSktKFxcZFxcZCktKFxcZFxcZCkvOyAvLyBkdW1iZWQtZG93biB2ZXJzaW9uIG9mIHRoZSBJU08gb25lXG5jb25zdCBzcWxUaW1lUmVnZXggPSBSZWdFeHAoXG4gIGAke2lzb1RpbWVCYXNlUmVnZXguc291cmNlfSA/KD86JHtvZmZzZXRSZWdleC5zb3VyY2V9fCgke2lhbmFSZWdleC5zb3VyY2V9KSk/YFxuKTtcbmNvbnN0IHNxbFRpbWVFeHRlbnNpb25SZWdleCA9IFJlZ0V4cChgKD86ICR7c3FsVGltZVJlZ2V4LnNvdXJjZX0pP2ApO1xuXG5mdW5jdGlvbiBpbnQobWF0Y2gsIHBvcywgZmFsbGJhY2spIHtcbiAgY29uc3QgbSA9IG1hdGNoW3Bvc107XG4gIHJldHVybiBpc1VuZGVmaW5lZChtKSA/IGZhbGxiYWNrIDogcGFyc2VJbnRlZ2VyKG0pO1xufVxuXG5mdW5jdGlvbiBleHRyYWN0SVNPWW1kKG1hdGNoLCBjdXJzb3IpIHtcbiAgY29uc3QgaXRlbSA9IHtcbiAgICB5ZWFyOiBpbnQobWF0Y2gsIGN1cnNvciksXG4gICAgbW9udGg6IGludChtYXRjaCwgY3Vyc29yICsgMSwgMSksXG4gICAgZGF5OiBpbnQobWF0Y2gsIGN1cnNvciArIDIsIDEpXG4gIH07XG5cbiAgcmV0dXJuIFtpdGVtLCBudWxsLCBjdXJzb3IgKyAzXTtcbn1cblxuZnVuY3Rpb24gZXh0cmFjdElTT1RpbWUobWF0Y2gsIGN1cnNvcikge1xuICBjb25zdCBpdGVtID0ge1xuICAgIGhvdXJzOiBpbnQobWF0Y2gsIGN1cnNvciwgMCksXG4gICAgbWludXRlczogaW50KG1hdGNoLCBjdXJzb3IgKyAxLCAwKSxcbiAgICBzZWNvbmRzOiBpbnQobWF0Y2gsIGN1cnNvciArIDIsIDApLFxuICAgIG1pbGxpc2Vjb25kczogcGFyc2VNaWxsaXMobWF0Y2hbY3Vyc29yICsgM10pXG4gIH07XG5cbiAgcmV0dXJuIFtpdGVtLCBudWxsLCBjdXJzb3IgKyA0XTtcbn1cblxuZnVuY3Rpb24gZXh0cmFjdElTT09mZnNldChtYXRjaCwgY3Vyc29yKSB7XG4gIGNvbnN0IGxvY2FsID0gIW1hdGNoW2N1cnNvcl0gJiYgIW1hdGNoW2N1cnNvciArIDFdLFxuICAgIGZ1bGxPZmZzZXQgPSBzaWduZWRPZmZzZXQobWF0Y2hbY3Vyc29yICsgMV0sIG1hdGNoW2N1cnNvciArIDJdKSxcbiAgICB6b25lID0gbG9jYWwgPyBudWxsIDogRml4ZWRPZmZzZXRab25lLmluc3RhbmNlKGZ1bGxPZmZzZXQpO1xuICByZXR1cm4gW3t9LCB6b25lLCBjdXJzb3IgKyAzXTtcbn1cblxuZnVuY3Rpb24gZXh0cmFjdElBTkFab25lKG1hdGNoLCBjdXJzb3IpIHtcbiAgY29uc3Qgem9uZSA9IG1hdGNoW2N1cnNvcl0gPyBJQU5BWm9uZS5jcmVhdGUobWF0Y2hbY3Vyc29yXSkgOiBudWxsO1xuICByZXR1cm4gW3t9LCB6b25lLCBjdXJzb3IgKyAxXTtcbn1cblxuLy8gSVNPIHRpbWUgcGFyc2luZ1xuXG5jb25zdCBpc29UaW1lT25seSA9IFJlZ0V4cChgXlQ/JHtpc29UaW1lQmFzZVJlZ2V4LnNvdXJjZX0kYCk7XG5cbi8vIElTTyBkdXJhdGlvbiBwYXJzaW5nXG5cbmNvbnN0IGlzb0R1cmF0aW9uID0gL14tP1AoPzooPzooLT9cXGR7MSwyMH0oPzpcXC5cXGR7MSwyMH0pPylZKT8oPzooLT9cXGR7MSwyMH0oPzpcXC5cXGR7MSwyMH0pPylNKT8oPzooLT9cXGR7MSwyMH0oPzpcXC5cXGR7MSwyMH0pPylXKT8oPzooLT9cXGR7MSwyMH0oPzpcXC5cXGR7MSwyMH0pPylEKT8oPzpUKD86KC0/XFxkezEsMjB9KD86XFwuXFxkezEsMjB9KT8pSCk/KD86KC0/XFxkezEsMjB9KD86XFwuXFxkezEsMjB9KT8pTSk/KD86KC0/XFxkezEsMjB9KSg/OlsuLF0oLT9cXGR7MSwyMH0pKT9TKT8pPykkLztcblxuZnVuY3Rpb24gZXh0cmFjdElTT0R1cmF0aW9uKG1hdGNoKSB7XG4gIGNvbnN0IFtcbiAgICBzLFxuICAgIHllYXJTdHIsXG4gICAgbW9udGhTdHIsXG4gICAgd2Vla1N0cixcbiAgICBkYXlTdHIsXG4gICAgaG91clN0cixcbiAgICBtaW51dGVTdHIsXG4gICAgc2Vjb25kU3RyLFxuICAgIG1pbGxpc2Vjb25kc1N0clxuICBdID0gbWF0Y2g7XG5cbiAgY29uc3QgaGFzTmVnYXRpdmVQcmVmaXggPSBzWzBdID09PSBcIi1cIjtcbiAgY29uc3QgbmVnYXRpdmVTZWNvbmRzID0gc2Vjb25kU3RyICYmIHNlY29uZFN0clswXSA9PT0gXCItXCI7XG5cbiAgY29uc3QgbWF5YmVOZWdhdGUgPSAobnVtLCBmb3JjZSA9IGZhbHNlKSA9PlxuICAgIG51bSAhPT0gdW5kZWZpbmVkICYmIChmb3JjZSB8fCAobnVtICYmIGhhc05lZ2F0aXZlUHJlZml4KSkgPyAtbnVtIDogbnVtO1xuXG4gIHJldHVybiBbXG4gICAge1xuICAgICAgeWVhcnM6IG1heWJlTmVnYXRlKHBhcnNlRmxvYXRpbmcoeWVhclN0cikpLFxuICAgICAgbW9udGhzOiBtYXliZU5lZ2F0ZShwYXJzZUZsb2F0aW5nKG1vbnRoU3RyKSksXG4gICAgICB3ZWVrczogbWF5YmVOZWdhdGUocGFyc2VGbG9hdGluZyh3ZWVrU3RyKSksXG4gICAgICBkYXlzOiBtYXliZU5lZ2F0ZShwYXJzZUZsb2F0aW5nKGRheVN0cikpLFxuICAgICAgaG91cnM6IG1heWJlTmVnYXRlKHBhcnNlRmxvYXRpbmcoaG91clN0cikpLFxuICAgICAgbWludXRlczogbWF5YmVOZWdhdGUocGFyc2VGbG9hdGluZyhtaW51dGVTdHIpKSxcbiAgICAgIHNlY29uZHM6IG1heWJlTmVnYXRlKHBhcnNlRmxvYXRpbmcoc2Vjb25kU3RyKSwgc2Vjb25kU3RyID09PSBcIi0wXCIpLFxuICAgICAgbWlsbGlzZWNvbmRzOiBtYXliZU5lZ2F0ZShwYXJzZU1pbGxpcyhtaWxsaXNlY29uZHNTdHIpLCBuZWdhdGl2ZVNlY29uZHMpXG4gICAgfVxuICBdO1xufVxuXG4vLyBUaGVzZSBhcmUgYSBsaXR0bGUgYnJhaW5kZWFkLiBFRFQgKnNob3VsZCogdGVsbCB1cyB0aGF0IHdlJ3JlIGluLCBzYXksIEFtZXJpY2EvTmV3X1lvcmtcbi8vIGFuZCBub3QganVzdCB0aGF0IHdlJ3JlIGluIC0yNDAgKnJpZ2h0IG5vdyouIEJ1dCBzaW5jZSBJIGRvbid0IHRoaW5rIHRoZXNlIGFyZSB1c2VkIHRoYXQgb2Z0ZW5cbi8vIEknbSBqdXN0IGdvaW5nIHRvIGlnbm9yZSB0aGF0XG5jb25zdCBvYnNPZmZzZXRzID0ge1xuICBHTVQ6IDAsXG4gIEVEVDogLTQgKiA2MCxcbiAgRVNUOiAtNSAqIDYwLFxuICBDRFQ6IC01ICogNjAsXG4gIENTVDogLTYgKiA2MCxcbiAgTURUOiAtNiAqIDYwLFxuICBNU1Q6IC03ICogNjAsXG4gIFBEVDogLTcgKiA2MCxcbiAgUFNUOiAtOCAqIDYwXG59O1xuXG5mdW5jdGlvbiBmcm9tU3RyaW5ncyh3ZWVrZGF5U3RyLCB5ZWFyU3RyLCBtb250aFN0ciwgZGF5U3RyLCBob3VyU3RyLCBtaW51dGVTdHIsIHNlY29uZFN0cikge1xuICBjb25zdCByZXN1bHQgPSB7XG4gICAgeWVhcjogeWVhclN0ci5sZW5ndGggPT09IDIgPyB1bnRydW5jYXRlWWVhcihwYXJzZUludGVnZXIoeWVhclN0cikpIDogcGFyc2VJbnRlZ2VyKHllYXJTdHIpLFxuICAgIG1vbnRoOiBFbmdsaXNoLm1vbnRoc1Nob3J0LmluZGV4T2YobW9udGhTdHIpICsgMSxcbiAgICBkYXk6IHBhcnNlSW50ZWdlcihkYXlTdHIpLFxuICAgIGhvdXI6IHBhcnNlSW50ZWdlcihob3VyU3RyKSxcbiAgICBtaW51dGU6IHBhcnNlSW50ZWdlcihtaW51dGVTdHIpXG4gIH07XG5cbiAgaWYgKHNlY29uZFN0cikgcmVzdWx0LnNlY29uZCA9IHBhcnNlSW50ZWdlcihzZWNvbmRTdHIpO1xuICBpZiAod2Vla2RheVN0cikge1xuICAgIHJlc3VsdC53ZWVrZGF5ID1cbiAgICAgIHdlZWtkYXlTdHIubGVuZ3RoID4gM1xuICAgICAgICA/IEVuZ2xpc2gud2Vla2RheXNMb25nLmluZGV4T2Yod2Vla2RheVN0cikgKyAxXG4gICAgICAgIDogRW5nbGlzaC53ZWVrZGF5c1Nob3J0LmluZGV4T2Yod2Vla2RheVN0cikgKyAxO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLy8gUkZDIDI4MjIvNTMyMlxuY29uc3QgcmZjMjgyMiA9IC9eKD86KE1vbnxUdWV8V2VkfFRodXxGcml8U2F0fFN1biksXFxzKT8oXFxkezEsMn0pXFxzKEphbnxGZWJ8TWFyfEFwcnxNYXl8SnVufEp1bHxBdWd8U2VwfE9jdHxOb3Z8RGVjKVxccyhcXGR7Miw0fSlcXHMoXFxkXFxkKTooXFxkXFxkKSg/OjooXFxkXFxkKSk/XFxzKD86KFVUfEdNVHxbRUNNUF1bU0RdVCl8KFtael0pfCg/OihbKy1dXFxkXFxkKShcXGRcXGQpKSkkLztcblxuZnVuY3Rpb24gZXh0cmFjdFJGQzI4MjIobWF0Y2gpIHtcbiAgY29uc3QgW1xuICAgICAgLFxuICAgICAgd2Vla2RheVN0cixcbiAgICAgIGRheVN0cixcbiAgICAgIG1vbnRoU3RyLFxuICAgICAgeWVhclN0cixcbiAgICAgIGhvdXJTdHIsXG4gICAgICBtaW51dGVTdHIsXG4gICAgICBzZWNvbmRTdHIsXG4gICAgICBvYnNPZmZzZXQsXG4gICAgICBtaWxPZmZzZXQsXG4gICAgICBvZmZIb3VyU3RyLFxuICAgICAgb2ZmTWludXRlU3RyXG4gICAgXSA9IG1hdGNoLFxuICAgIHJlc3VsdCA9IGZyb21TdHJpbmdzKHdlZWtkYXlTdHIsIHllYXJTdHIsIG1vbnRoU3RyLCBkYXlTdHIsIGhvdXJTdHIsIG1pbnV0ZVN0ciwgc2Vjb25kU3RyKTtcblxuICBsZXQgb2Zmc2V0O1xuICBpZiAob2JzT2Zmc2V0KSB7XG4gICAgb2Zmc2V0ID0gb2JzT2Zmc2V0c1tvYnNPZmZzZXRdO1xuICB9IGVsc2UgaWYgKG1pbE9mZnNldCkge1xuICAgIG9mZnNldCA9IDA7XG4gIH0gZWxzZSB7XG4gICAgb2Zmc2V0ID0gc2lnbmVkT2Zmc2V0KG9mZkhvdXJTdHIsIG9mZk1pbnV0ZVN0cik7XG4gIH1cblxuICByZXR1cm4gW3Jlc3VsdCwgbmV3IEZpeGVkT2Zmc2V0Wm9uZShvZmZzZXQpXTtcbn1cblxuZnVuY3Rpb24gcHJlcHJvY2Vzc1JGQzI4MjIocykge1xuICAvLyBSZW1vdmUgY29tbWVudHMgYW5kIGZvbGRpbmcgd2hpdGVzcGFjZSBhbmQgcmVwbGFjZSBtdWx0aXBsZS1zcGFjZXMgd2l0aCBhIHNpbmdsZSBzcGFjZVxuICByZXR1cm4gc1xuICAgIC5yZXBsYWNlKC9cXChbXigpXSpcXCl8W1xcblxcdF0vZywgXCIgXCIpXG4gICAgLnJlcGxhY2UoLyhcXHNcXHMrKS9nLCBcIiBcIilcbiAgICAudHJpbSgpO1xufVxuXG4vLyBodHRwIGRhdGVcblxuY29uc3QgcmZjMTEyMyA9IC9eKE1vbnxUdWV8V2VkfFRodXxGcml8U2F0fFN1biksIChcXGRcXGQpIChKYW58RmVifE1hcnxBcHJ8TWF5fEp1bnxKdWx8QXVnfFNlcHxPY3R8Tm92fERlYykgKFxcZHs0fSkgKFxcZFxcZCk6KFxcZFxcZCk6KFxcZFxcZCkgR01UJC8sXG4gIHJmYzg1MCA9IC9eKE1vbmRheXxUdWVzZGF5fFdlZG5lc2RheXxUaHVyc2RheXxGcmlkYXl8U2F0dXJkYXl8U3VuZGF5KSwgKFxcZFxcZCktKEphbnxGZWJ8TWFyfEFwcnxNYXl8SnVufEp1bHxBdWd8U2VwfE9jdHxOb3Z8RGVjKS0oXFxkXFxkKSAoXFxkXFxkKTooXFxkXFxkKTooXFxkXFxkKSBHTVQkLyxcbiAgYXNjaWkgPSAvXihNb258VHVlfFdlZHxUaHV8RnJpfFNhdHxTdW4pIChKYW58RmVifE1hcnxBcHJ8TWF5fEp1bnxKdWx8QXVnfFNlcHxPY3R8Tm92fERlYykgKCBcXGR8XFxkXFxkKSAoXFxkXFxkKTooXFxkXFxkKTooXFxkXFxkKSAoXFxkezR9KSQvO1xuXG5mdW5jdGlvbiBleHRyYWN0UkZDMTEyM09yODUwKG1hdGNoKSB7XG4gIGNvbnN0IFssIHdlZWtkYXlTdHIsIGRheVN0ciwgbW9udGhTdHIsIHllYXJTdHIsIGhvdXJTdHIsIG1pbnV0ZVN0ciwgc2Vjb25kU3RyXSA9IG1hdGNoLFxuICAgIHJlc3VsdCA9IGZyb21TdHJpbmdzKHdlZWtkYXlTdHIsIHllYXJTdHIsIG1vbnRoU3RyLCBkYXlTdHIsIGhvdXJTdHIsIG1pbnV0ZVN0ciwgc2Vjb25kU3RyKTtcbiAgcmV0dXJuIFtyZXN1bHQsIEZpeGVkT2Zmc2V0Wm9uZS51dGNJbnN0YW5jZV07XG59XG5cbmZ1bmN0aW9uIGV4dHJhY3RBU0NJSShtYXRjaCkge1xuICBjb25zdCBbLCB3ZWVrZGF5U3RyLCBtb250aFN0ciwgZGF5U3RyLCBob3VyU3RyLCBtaW51dGVTdHIsIHNlY29uZFN0ciwgeWVhclN0cl0gPSBtYXRjaCxcbiAgICByZXN1bHQgPSBmcm9tU3RyaW5ncyh3ZWVrZGF5U3RyLCB5ZWFyU3RyLCBtb250aFN0ciwgZGF5U3RyLCBob3VyU3RyLCBtaW51dGVTdHIsIHNlY29uZFN0cik7XG4gIHJldHVybiBbcmVzdWx0LCBGaXhlZE9mZnNldFpvbmUudXRjSW5zdGFuY2VdO1xufVxuXG5jb25zdCBpc29ZbWRXaXRoVGltZUV4dGVuc2lvblJlZ2V4ID0gY29tYmluZVJlZ2V4ZXMoaXNvWW1kUmVnZXgsIGlzb1RpbWVFeHRlbnNpb25SZWdleCk7XG5jb25zdCBpc29XZWVrV2l0aFRpbWVFeHRlbnNpb25SZWdleCA9IGNvbWJpbmVSZWdleGVzKGlzb1dlZWtSZWdleCwgaXNvVGltZUV4dGVuc2lvblJlZ2V4KTtcbmNvbnN0IGlzb09yZGluYWxXaXRoVGltZUV4dGVuc2lvblJlZ2V4ID0gY29tYmluZVJlZ2V4ZXMoaXNvT3JkaW5hbFJlZ2V4LCBpc29UaW1lRXh0ZW5zaW9uUmVnZXgpO1xuY29uc3QgaXNvVGltZUNvbWJpbmVkUmVnZXggPSBjb21iaW5lUmVnZXhlcyhpc29UaW1lUmVnZXgpO1xuXG5jb25zdCBleHRyYWN0SVNPWW1kVGltZUFuZE9mZnNldCA9IGNvbWJpbmVFeHRyYWN0b3JzKFxuICBleHRyYWN0SVNPWW1kLFxuICBleHRyYWN0SVNPVGltZSxcbiAgZXh0cmFjdElTT09mZnNldCxcbiAgZXh0cmFjdElBTkFab25lXG4pO1xuY29uc3QgZXh0cmFjdElTT1dlZWtUaW1lQW5kT2Zmc2V0ID0gY29tYmluZUV4dHJhY3RvcnMoXG4gIGV4dHJhY3RJU09XZWVrRGF0YSxcbiAgZXh0cmFjdElTT1RpbWUsXG4gIGV4dHJhY3RJU09PZmZzZXQsXG4gIGV4dHJhY3RJQU5BWm9uZVxuKTtcbmNvbnN0IGV4dHJhY3RJU09PcmRpbmFsRGF0ZUFuZFRpbWUgPSBjb21iaW5lRXh0cmFjdG9ycyhcbiAgZXh0cmFjdElTT09yZGluYWxEYXRhLFxuICBleHRyYWN0SVNPVGltZSxcbiAgZXh0cmFjdElTT09mZnNldCxcbiAgZXh0cmFjdElBTkFab25lXG4pO1xuY29uc3QgZXh0cmFjdElTT1RpbWVBbmRPZmZzZXQgPSBjb21iaW5lRXh0cmFjdG9ycyhcbiAgZXh0cmFjdElTT1RpbWUsXG4gIGV4dHJhY3RJU09PZmZzZXQsXG4gIGV4dHJhY3RJQU5BWm9uZVxuKTtcblxuLypcbiAqIEBwcml2YXRlXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlSVNPRGF0ZShzKSB7XG4gIHJldHVybiBwYXJzZShcbiAgICBzLFxuICAgIFtpc29ZbWRXaXRoVGltZUV4dGVuc2lvblJlZ2V4LCBleHRyYWN0SVNPWW1kVGltZUFuZE9mZnNldF0sXG4gICAgW2lzb1dlZWtXaXRoVGltZUV4dGVuc2lvblJlZ2V4LCBleHRyYWN0SVNPV2Vla1RpbWVBbmRPZmZzZXRdLFxuICAgIFtpc29PcmRpbmFsV2l0aFRpbWVFeHRlbnNpb25SZWdleCwgZXh0cmFjdElTT09yZGluYWxEYXRlQW5kVGltZV0sXG4gICAgW2lzb1RpbWVDb21iaW5lZFJlZ2V4LCBleHRyYWN0SVNPVGltZUFuZE9mZnNldF1cbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUkZDMjgyMkRhdGUocykge1xuICByZXR1cm4gcGFyc2UocHJlcHJvY2Vzc1JGQzI4MjIocyksIFtyZmMyODIyLCBleHRyYWN0UkZDMjgyMl0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VIVFRQRGF0ZShzKSB7XG4gIHJldHVybiBwYXJzZShcbiAgICBzLFxuICAgIFtyZmMxMTIzLCBleHRyYWN0UkZDMTEyM09yODUwXSxcbiAgICBbcmZjODUwLCBleHRyYWN0UkZDMTEyM09yODUwXSxcbiAgICBbYXNjaWksIGV4dHJhY3RBU0NJSV1cbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlSVNPRHVyYXRpb24ocykge1xuICByZXR1cm4gcGFyc2UocywgW2lzb0R1cmF0aW9uLCBleHRyYWN0SVNPRHVyYXRpb25dKTtcbn1cblxuY29uc3QgZXh0cmFjdElTT1RpbWVPbmx5ID0gY29tYmluZUV4dHJhY3RvcnMoZXh0cmFjdElTT1RpbWUpO1xuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VJU09UaW1lT25seShzKSB7XG4gIHJldHVybiBwYXJzZShzLCBbaXNvVGltZU9ubHksIGV4dHJhY3RJU09UaW1lT25seV0pO1xufVxuXG5jb25zdCBzcWxZbWRXaXRoVGltZUV4dGVuc2lvblJlZ2V4ID0gY29tYmluZVJlZ2V4ZXMoc3FsWW1kUmVnZXgsIHNxbFRpbWVFeHRlbnNpb25SZWdleCk7XG5jb25zdCBzcWxUaW1lQ29tYmluZWRSZWdleCA9IGNvbWJpbmVSZWdleGVzKHNxbFRpbWVSZWdleCk7XG5cbmNvbnN0IGV4dHJhY3RJU09UaW1lT2Zmc2V0QW5kSUFOQVpvbmUgPSBjb21iaW5lRXh0cmFjdG9ycyhcbiAgZXh0cmFjdElTT1RpbWUsXG4gIGV4dHJhY3RJU09PZmZzZXQsXG4gIGV4dHJhY3RJQU5BWm9uZVxuKTtcblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlU1FMKHMpIHtcbiAgcmV0dXJuIHBhcnNlKFxuICAgIHMsXG4gICAgW3NxbFltZFdpdGhUaW1lRXh0ZW5zaW9uUmVnZXgsIGV4dHJhY3RJU09ZbWRUaW1lQW5kT2Zmc2V0XSxcbiAgICBbc3FsVGltZUNvbWJpbmVkUmVnZXgsIGV4dHJhY3RJU09UaW1lT2Zmc2V0QW5kSUFOQVpvbmVdXG4gICk7XG59XG4iLCAiaW1wb3J0IHsgSW52YWxpZEFyZ3VtZW50RXJyb3IsIEludmFsaWREdXJhdGlvbkVycm9yLCBJbnZhbGlkVW5pdEVycm9yIH0gZnJvbSBcIi4vZXJyb3JzLmpzXCI7XG5pbXBvcnQgRm9ybWF0dGVyIGZyb20gXCIuL2ltcGwvZm9ybWF0dGVyLmpzXCI7XG5pbXBvcnQgSW52YWxpZCBmcm9tIFwiLi9pbXBsL2ludmFsaWQuanNcIjtcbmltcG9ydCBMb2NhbGUgZnJvbSBcIi4vaW1wbC9sb2NhbGUuanNcIjtcbmltcG9ydCB7IHBhcnNlSVNPRHVyYXRpb24sIHBhcnNlSVNPVGltZU9ubHkgfSBmcm9tIFwiLi9pbXBsL3JlZ2V4UGFyc2VyLmpzXCI7XG5pbXBvcnQge1xuICBhc051bWJlcixcbiAgaGFzT3duUHJvcGVydHksXG4gIGlzTnVtYmVyLFxuICBpc1VuZGVmaW5lZCxcbiAgbm9ybWFsaXplT2JqZWN0LFxuICByb3VuZFRvLFxufSBmcm9tIFwiLi9pbXBsL3V0aWwuanNcIjtcbmltcG9ydCBTZXR0aW5ncyBmcm9tIFwiLi9zZXR0aW5ncy5qc1wiO1xuXG5jb25zdCBJTlZBTElEID0gXCJJbnZhbGlkIER1cmF0aW9uXCI7XG5cbi8vIHVuaXQgY29udmVyc2lvbiBjb25zdGFudHNcbmV4cG9ydCBjb25zdCBsb3dPcmRlck1hdHJpeCA9IHtcbiAgICB3ZWVrczoge1xuICAgICAgZGF5czogNyxcbiAgICAgIGhvdXJzOiA3ICogMjQsXG4gICAgICBtaW51dGVzOiA3ICogMjQgKiA2MCxcbiAgICAgIHNlY29uZHM6IDcgKiAyNCAqIDYwICogNjAsXG4gICAgICBtaWxsaXNlY29uZHM6IDcgKiAyNCAqIDYwICogNjAgKiAxMDAwLFxuICAgIH0sXG4gICAgZGF5czoge1xuICAgICAgaG91cnM6IDI0LFxuICAgICAgbWludXRlczogMjQgKiA2MCxcbiAgICAgIHNlY29uZHM6IDI0ICogNjAgKiA2MCxcbiAgICAgIG1pbGxpc2Vjb25kczogMjQgKiA2MCAqIDYwICogMTAwMCxcbiAgICB9LFxuICAgIGhvdXJzOiB7IG1pbnV0ZXM6IDYwLCBzZWNvbmRzOiA2MCAqIDYwLCBtaWxsaXNlY29uZHM6IDYwICogNjAgKiAxMDAwIH0sXG4gICAgbWludXRlczogeyBzZWNvbmRzOiA2MCwgbWlsbGlzZWNvbmRzOiA2MCAqIDEwMDAgfSxcbiAgICBzZWNvbmRzOiB7IG1pbGxpc2Vjb25kczogMTAwMCB9LFxuICB9LFxuICBjYXN1YWxNYXRyaXggPSB7XG4gICAgeWVhcnM6IHtcbiAgICAgIHF1YXJ0ZXJzOiA0LFxuICAgICAgbW9udGhzOiAxMixcbiAgICAgIHdlZWtzOiA1MixcbiAgICAgIGRheXM6IDM2NSxcbiAgICAgIGhvdXJzOiAzNjUgKiAyNCxcbiAgICAgIG1pbnV0ZXM6IDM2NSAqIDI0ICogNjAsXG4gICAgICBzZWNvbmRzOiAzNjUgKiAyNCAqIDYwICogNjAsXG4gICAgICBtaWxsaXNlY29uZHM6IDM2NSAqIDI0ICogNjAgKiA2MCAqIDEwMDAsXG4gICAgfSxcbiAgICBxdWFydGVyczoge1xuICAgICAgbW9udGhzOiAzLFxuICAgICAgd2Vla3M6IDEzLFxuICAgICAgZGF5czogOTEsXG4gICAgICBob3VyczogOTEgKiAyNCxcbiAgICAgIG1pbnV0ZXM6IDkxICogMjQgKiA2MCxcbiAgICAgIHNlY29uZHM6IDkxICogMjQgKiA2MCAqIDYwLFxuICAgICAgbWlsbGlzZWNvbmRzOiA5MSAqIDI0ICogNjAgKiA2MCAqIDEwMDAsXG4gICAgfSxcbiAgICBtb250aHM6IHtcbiAgICAgIHdlZWtzOiA0LFxuICAgICAgZGF5czogMzAsXG4gICAgICBob3VyczogMzAgKiAyNCxcbiAgICAgIG1pbnV0ZXM6IDMwICogMjQgKiA2MCxcbiAgICAgIHNlY29uZHM6IDMwICogMjQgKiA2MCAqIDYwLFxuICAgICAgbWlsbGlzZWNvbmRzOiAzMCAqIDI0ICogNjAgKiA2MCAqIDEwMDAsXG4gICAgfSxcblxuICAgIC4uLmxvd09yZGVyTWF0cml4LFxuICB9LFxuICBkYXlzSW5ZZWFyQWNjdXJhdGUgPSAxNDYwOTcuMCAvIDQwMCxcbiAgZGF5c0luTW9udGhBY2N1cmF0ZSA9IDE0NjA5Ny4wIC8gNDgwMCxcbiAgYWNjdXJhdGVNYXRyaXggPSB7XG4gICAgeWVhcnM6IHtcbiAgICAgIHF1YXJ0ZXJzOiA0LFxuICAgICAgbW9udGhzOiAxMixcbiAgICAgIHdlZWtzOiBkYXlzSW5ZZWFyQWNjdXJhdGUgLyA3LFxuICAgICAgZGF5czogZGF5c0luWWVhckFjY3VyYXRlLFxuICAgICAgaG91cnM6IGRheXNJblllYXJBY2N1cmF0ZSAqIDI0LFxuICAgICAgbWludXRlczogZGF5c0luWWVhckFjY3VyYXRlICogMjQgKiA2MCxcbiAgICAgIHNlY29uZHM6IGRheXNJblllYXJBY2N1cmF0ZSAqIDI0ICogNjAgKiA2MCxcbiAgICAgIG1pbGxpc2Vjb25kczogZGF5c0luWWVhckFjY3VyYXRlICogMjQgKiA2MCAqIDYwICogMTAwMCxcbiAgICB9LFxuICAgIHF1YXJ0ZXJzOiB7XG4gICAgICBtb250aHM6IDMsXG4gICAgICB3ZWVrczogZGF5c0luWWVhckFjY3VyYXRlIC8gMjgsXG4gICAgICBkYXlzOiBkYXlzSW5ZZWFyQWNjdXJhdGUgLyA0LFxuICAgICAgaG91cnM6IChkYXlzSW5ZZWFyQWNjdXJhdGUgKiAyNCkgLyA0LFxuICAgICAgbWludXRlczogKGRheXNJblllYXJBY2N1cmF0ZSAqIDI0ICogNjApIC8gNCxcbiAgICAgIHNlY29uZHM6IChkYXlzSW5ZZWFyQWNjdXJhdGUgKiAyNCAqIDYwICogNjApIC8gNCxcbiAgICAgIG1pbGxpc2Vjb25kczogKGRheXNJblllYXJBY2N1cmF0ZSAqIDI0ICogNjAgKiA2MCAqIDEwMDApIC8gNCxcbiAgICB9LFxuICAgIG1vbnRoczoge1xuICAgICAgd2Vla3M6IGRheXNJbk1vbnRoQWNjdXJhdGUgLyA3LFxuICAgICAgZGF5czogZGF5c0luTW9udGhBY2N1cmF0ZSxcbiAgICAgIGhvdXJzOiBkYXlzSW5Nb250aEFjY3VyYXRlICogMjQsXG4gICAgICBtaW51dGVzOiBkYXlzSW5Nb250aEFjY3VyYXRlICogMjQgKiA2MCxcbiAgICAgIHNlY29uZHM6IGRheXNJbk1vbnRoQWNjdXJhdGUgKiAyNCAqIDYwICogNjAsXG4gICAgICBtaWxsaXNlY29uZHM6IGRheXNJbk1vbnRoQWNjdXJhdGUgKiAyNCAqIDYwICogNjAgKiAxMDAwLFxuICAgIH0sXG4gICAgLi4ubG93T3JkZXJNYXRyaXgsXG4gIH07XG5cbi8vIHVuaXRzIG9yZGVyZWQgYnkgc2l6ZVxuY29uc3Qgb3JkZXJlZFVuaXRzID0gW1xuICBcInllYXJzXCIsXG4gIFwicXVhcnRlcnNcIixcbiAgXCJtb250aHNcIixcbiAgXCJ3ZWVrc1wiLFxuICBcImRheXNcIixcbiAgXCJob3Vyc1wiLFxuICBcIm1pbnV0ZXNcIixcbiAgXCJzZWNvbmRzXCIsXG4gIFwibWlsbGlzZWNvbmRzXCIsXG5dO1xuXG5jb25zdCByZXZlcnNlVW5pdHMgPSBvcmRlcmVkVW5pdHMuc2xpY2UoMCkucmV2ZXJzZSgpO1xuXG4vLyBjbG9uZSByZWFsbHkgbWVhbnMgXCJjcmVhdGUgYW5vdGhlciBpbnN0YW5jZSBqdXN0IGxpa2UgdGhpcyBvbmUsIGJ1dCB3aXRoIHRoZXNlIGNoYW5nZXNcIlxuZnVuY3Rpb24gY2xvbmUoZHVyLCBhbHRzLCBjbGVhciA9IGZhbHNlKSB7XG4gIC8vIGRlZXAgbWVyZ2UgZm9yIHZhbHNcbiAgY29uc3QgY29uZiA9IHtcbiAgICB2YWx1ZXM6IGNsZWFyID8gYWx0cy52YWx1ZXMgOiB7IC4uLmR1ci52YWx1ZXMsIC4uLihhbHRzLnZhbHVlcyB8fCB7fSkgfSxcbiAgICBsb2M6IGR1ci5sb2MuY2xvbmUoYWx0cy5sb2MpLFxuICAgIGNvbnZlcnNpb25BY2N1cmFjeTogYWx0cy5jb252ZXJzaW9uQWNjdXJhY3kgfHwgZHVyLmNvbnZlcnNpb25BY2N1cmFjeSxcbiAgfTtcbiAgcmV0dXJuIG5ldyBEdXJhdGlvbihjb25mKTtcbn1cblxuZnVuY3Rpb24gYW50aVRydW5jKG4pIHtcbiAgcmV0dXJuIG4gPCAwID8gTWF0aC5mbG9vcihuKSA6IE1hdGguY2VpbChuKTtcbn1cblxuLy8gTkI6IG11dGF0ZXMgcGFyYW1ldGVyc1xuZnVuY3Rpb24gY29udmVydChtYXRyaXgsIGZyb21NYXAsIGZyb21Vbml0LCB0b01hcCwgdG9Vbml0KSB7XG4gIGNvbnN0IGNvbnYgPSBtYXRyaXhbdG9Vbml0XVtmcm9tVW5pdF0sXG4gICAgcmF3ID0gZnJvbU1hcFtmcm9tVW5pdF0gLyBjb252LFxuICAgIHNhbWVTaWduID0gTWF0aC5zaWduKHJhdykgPT09IE1hdGguc2lnbih0b01hcFt0b1VuaXRdKSxcbiAgICAvLyBvaywgc28gdGhpcyBpcyB3aWxkLCBidXQgc2VlIHRoZSBtYXRyaXggaW4gdGhlIHRlc3RzXG4gICAgYWRkZWQgPVxuICAgICAgIXNhbWVTaWduICYmIHRvTWFwW3RvVW5pdF0gIT09IDAgJiYgTWF0aC5hYnMocmF3KSA8PSAxID8gYW50aVRydW5jKHJhdykgOiBNYXRoLnRydW5jKHJhdyk7XG4gIHRvTWFwW3RvVW5pdF0gKz0gYWRkZWQ7XG4gIGZyb21NYXBbZnJvbVVuaXRdIC09IGFkZGVkICogY29udjtcbn1cblxuLy8gTkI6IG11dGF0ZXMgcGFyYW1ldGVyc1xuZnVuY3Rpb24gbm9ybWFsaXplVmFsdWVzKG1hdHJpeCwgdmFscykge1xuICByZXZlcnNlVW5pdHMucmVkdWNlKChwcmV2aW91cywgY3VycmVudCkgPT4ge1xuICAgIGlmICghaXNVbmRlZmluZWQodmFsc1tjdXJyZW50XSkpIHtcbiAgICAgIGlmIChwcmV2aW91cykge1xuICAgICAgICBjb252ZXJ0KG1hdHJpeCwgdmFscywgcHJldmlvdXMsIHZhbHMsIGN1cnJlbnQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGN1cnJlbnQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBwcmV2aW91cztcbiAgICB9XG4gIH0sIG51bGwpO1xufVxuXG4vKipcbiAqIEEgRHVyYXRpb24gb2JqZWN0IHJlcHJlc2VudHMgYSBwZXJpb2Qgb2YgdGltZSwgbGlrZSBcIjIgbW9udGhzXCIgb3IgXCIxIGRheSwgMSBob3VyXCIuIENvbmNlcHR1YWxseSwgaXQncyBqdXN0IGEgbWFwIG9mIHVuaXRzIHRvIHRoZWlyIHF1YW50aXRpZXMsIGFjY29tcGFuaWVkIGJ5IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIGFuZCBtZXRob2RzIGZvciBjcmVhdGluZywgcGFyc2luZywgaW50ZXJyb2dhdGluZywgdHJhbnNmb3JtaW5nLCBhbmQgZm9ybWF0dGluZyB0aGVtLiBUaGV5IGNhbiBiZSB1c2VkIG9uIHRoZWlyIG93biBvciBpbiBjb25qdW5jdGlvbiB3aXRoIG90aGVyIEx1eG9uIHR5cGVzOyBmb3IgZXhhbXBsZSwgeW91IGNhbiB1c2Uge0BsaW5rIERhdGVUaW1lI3BsdXN9IHRvIGFkZCBhIER1cmF0aW9uIG9iamVjdCB0byBhIERhdGVUaW1lLCBwcm9kdWNpbmcgYW5vdGhlciBEYXRlVGltZS5cbiAqXG4gKiBIZXJlIGlzIGEgYnJpZWYgb3ZlcnZpZXcgb2YgY29tbW9ubHkgdXNlZCBtZXRob2RzIGFuZCBnZXR0ZXJzIGluIER1cmF0aW9uOlxuICpcbiAqICogKipDcmVhdGlvbioqIFRvIGNyZWF0ZSBhIER1cmF0aW9uLCB1c2Uge0BsaW5rIER1cmF0aW9uI2Zyb21NaWxsaXN9LCB7QGxpbmsgRHVyYXRpb24jZnJvbU9iamVjdH0sIG9yIHtAbGluayBEdXJhdGlvbiNmcm9tSVNPfS5cbiAqICogKipVbml0IHZhbHVlcyoqIFNlZSB0aGUge0BsaW5rIER1cmF0aW9uI3llYXJzfSwge0BsaW5rIER1cmF0aW9uI21vbnRoc30sIHtAbGluayBEdXJhdGlvbiN3ZWVrc30sIHtAbGluayBEdXJhdGlvbiNkYXlzfSwge0BsaW5rIER1cmF0aW9uI2hvdXJzfSwge0BsaW5rIER1cmF0aW9uI21pbnV0ZXN9LCB7QGxpbmsgRHVyYXRpb24jc2Vjb25kc30sIHtAbGluayBEdXJhdGlvbiNtaWxsaXNlY29uZHN9IGFjY2Vzc29ycy5cbiAqICogKipDb25maWd1cmF0aW9uKiogU2VlICB7QGxpbmsgRHVyYXRpb24jbG9jYWxlfSBhbmQge0BsaW5rIER1cmF0aW9uI251bWJlcmluZ1N5c3RlbX0gYWNjZXNzb3JzLlxuICogKiAqKlRyYW5zZm9ybWF0aW9uKiogVG8gY3JlYXRlIG5ldyBEdXJhdGlvbnMgb3V0IG9mIG9sZCBvbmVzIHVzZSB7QGxpbmsgRHVyYXRpb24jcGx1c30sIHtAbGluayBEdXJhdGlvbiNtaW51c30sIHtAbGluayBEdXJhdGlvbiNub3JtYWxpemV9LCB7QGxpbmsgRHVyYXRpb24jc2V0fSwge0BsaW5rIER1cmF0aW9uI3JlY29uZmlndXJlfSwge0BsaW5rIER1cmF0aW9uI3NoaWZ0VG99LCBhbmQge0BsaW5rIER1cmF0aW9uI25lZ2F0ZX0uXG4gKiAqICoqT3V0cHV0KiogVG8gY29udmVydCB0aGUgRHVyYXRpb24gaW50byBvdGhlciByZXByZXNlbnRhdGlvbnMsIHNlZSB7QGxpbmsgRHVyYXRpb24jYXN9LCB7QGxpbmsgRHVyYXRpb24jdG9JU099LCB7QGxpbmsgRHVyYXRpb24jdG9Gb3JtYXR9LCBhbmQge0BsaW5rIER1cmF0aW9uI3RvSlNPTn1cbiAqXG4gKiBUaGVyZSdzIGFyZSBtb3JlIG1ldGhvZHMgZG9jdW1lbnRlZCBiZWxvdy4gSW4gYWRkaXRpb24sIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHN1YnRsZXIgdG9waWNzIGxpa2UgaW50ZXJuYXRpb25hbGl6YXRpb24gYW5kIHZhbGlkaXR5LCBzZWUgdGhlIGV4dGVybmFsIGRvY3VtZW50YXRpb24uXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIER1cmF0aW9uIHtcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihjb25maWcpIHtcbiAgICBjb25zdCBhY2N1cmF0ZSA9IGNvbmZpZy5jb252ZXJzaW9uQWNjdXJhY3kgPT09IFwibG9uZ3Rlcm1cIiB8fCBmYWxzZTtcbiAgICAvKipcbiAgICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICAgKi9cbiAgICB0aGlzLnZhbHVlcyA9IGNvbmZpZy52YWx1ZXM7XG4gICAgLyoqXG4gICAgICogQGFjY2VzcyBwcml2YXRlXG4gICAgICovXG4gICAgdGhpcy5sb2MgPSBjb25maWcubG9jIHx8IExvY2FsZS5jcmVhdGUoKTtcbiAgICAvKipcbiAgICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICAgKi9cbiAgICB0aGlzLmNvbnZlcnNpb25BY2N1cmFjeSA9IGFjY3VyYXRlID8gXCJsb25ndGVybVwiIDogXCJjYXN1YWxcIjtcbiAgICAvKipcbiAgICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICAgKi9cbiAgICB0aGlzLmludmFsaWQgPSBjb25maWcuaW52YWxpZCB8fCBudWxsO1xuICAgIC8qKlxuICAgICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAgICAqL1xuICAgIHRoaXMubWF0cml4ID0gYWNjdXJhdGUgPyBhY2N1cmF0ZU1hdHJpeCA6IGNhc3VhbE1hdHJpeDtcbiAgICAvKipcbiAgICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICAgKi9cbiAgICB0aGlzLmlzTHV4b25EdXJhdGlvbiA9IHRydWU7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIER1cmF0aW9uIGZyb20gYSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzLlxuICAgKiBAcGFyYW0ge251bWJlcn0gY291bnQgb2YgbWlsbGlzZWNvbmRzXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucyBmb3IgcGFyc2luZ1xuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlPSdlbi1VUyddIC0gdGhlIGxvY2FsZSB0byB1c2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMubnVtYmVyaW5nU3lzdGVtIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0gdG8gdXNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5jb252ZXJzaW9uQWNjdXJhY3k9J2Nhc3VhbCddIC0gdGhlIGNvbnZlcnNpb24gc3lzdGVtIHRvIHVzZVxuICAgKiBAcmV0dXJuIHtEdXJhdGlvbn1cbiAgICovXG4gIHN0YXRpYyBmcm9tTWlsbGlzKGNvdW50LCBvcHRzKSB7XG4gICAgcmV0dXJuIER1cmF0aW9uLmZyb21PYmplY3QoeyBtaWxsaXNlY29uZHM6IGNvdW50IH0sIG9wdHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIER1cmF0aW9uIGZyb20gYSBKYXZhU2NyaXB0IG9iamVjdCB3aXRoIGtleXMgbGlrZSAneWVhcnMnIGFuZCAnaG91cnMnLlxuICAgKiBJZiB0aGlzIG9iamVjdCBpcyBlbXB0eSB0aGVuIGEgemVybyBtaWxsaXNlY29uZHMgZHVyYXRpb24gaXMgcmV0dXJuZWQuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvYmogLSB0aGUgb2JqZWN0IHRvIGNyZWF0ZSB0aGUgRGF0ZVRpbWUgZnJvbVxuICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLnllYXJzXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoucXVhcnRlcnNcbiAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5tb250aHNcbiAgICogQHBhcmFtIHtudW1iZXJ9IG9iai53ZWVrc1xuICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLmRheXNcbiAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5ob3Vyc1xuICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLm1pbnV0ZXNcbiAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5zZWNvbmRzXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoubWlsbGlzZWNvbmRzXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0cz1bXV0gLSBvcHRpb25zIGZvciBjcmVhdGluZyB0aGlzIER1cmF0aW9uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGU9J2VuLVVTJ10gLSB0aGUgbG9jYWxlIHRvIHVzZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5udW1iZXJpbmdTeXN0ZW0gLSB0aGUgbnVtYmVyaW5nIHN5c3RlbSB0byB1c2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmNvbnZlcnNpb25BY2N1cmFjeT0nY2FzdWFsJ10gLSB0aGUgY29udmVyc2lvbiBzeXN0ZW0gdG8gdXNlXG4gICAqIEByZXR1cm4ge0R1cmF0aW9ufVxuICAgKi9cbiAgc3RhdGljIGZyb21PYmplY3Qob2JqLCBvcHRzID0ge30pIHtcbiAgICBpZiAob2JqID09IG51bGwgfHwgdHlwZW9mIG9iaiAhPT0gXCJvYmplY3RcIikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKFxuICAgICAgICBgRHVyYXRpb24uZnJvbU9iamVjdDogYXJndW1lbnQgZXhwZWN0ZWQgdG8gYmUgYW4gb2JqZWN0LCBnb3QgJHtcbiAgICAgICAgICBvYmogPT09IG51bGwgPyBcIm51bGxcIiA6IHR5cGVvZiBvYmpcbiAgICAgICAgfWBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBEdXJhdGlvbih7XG4gICAgICB2YWx1ZXM6IG5vcm1hbGl6ZU9iamVjdChvYmosIER1cmF0aW9uLm5vcm1hbGl6ZVVuaXQpLFxuICAgICAgbG9jOiBMb2NhbGUuZnJvbU9iamVjdChvcHRzKSxcbiAgICAgIGNvbnZlcnNpb25BY2N1cmFjeTogb3B0cy5jb252ZXJzaW9uQWNjdXJhY3ksXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgRHVyYXRpb24gZnJvbSBEdXJhdGlvbkxpa2UuXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0IHwgbnVtYmVyIHwgRHVyYXRpb259IGR1cmF0aW9uTGlrZVxuICAgKiBPbmUgb2Y6XG4gICAqIC0gb2JqZWN0IHdpdGgga2V5cyBsaWtlICd5ZWFycycgYW5kICdob3VycycuXG4gICAqIC0gbnVtYmVyIHJlcHJlc2VudGluZyBtaWxsaXNlY29uZHNcbiAgICogLSBEdXJhdGlvbiBpbnN0YW5jZVxuICAgKiBAcmV0dXJuIHtEdXJhdGlvbn1cbiAgICovXG4gIHN0YXRpYyBmcm9tRHVyYXRpb25MaWtlKGR1cmF0aW9uTGlrZSkge1xuICAgIGlmIChpc051bWJlcihkdXJhdGlvbkxpa2UpKSB7XG4gICAgICByZXR1cm4gRHVyYXRpb24uZnJvbU1pbGxpcyhkdXJhdGlvbkxpa2UpO1xuICAgIH0gZWxzZSBpZiAoRHVyYXRpb24uaXNEdXJhdGlvbihkdXJhdGlvbkxpa2UpKSB7XG4gICAgICByZXR1cm4gZHVyYXRpb25MaWtlO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGR1cmF0aW9uTGlrZSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgcmV0dXJuIER1cmF0aW9uLmZyb21PYmplY3QoZHVyYXRpb25MaWtlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKFxuICAgICAgICBgVW5rbm93biBkdXJhdGlvbiBhcmd1bWVudCAke2R1cmF0aW9uTGlrZX0gb2YgdHlwZSAke3R5cGVvZiBkdXJhdGlvbkxpa2V9YFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgRHVyYXRpb24gZnJvbSBhbiBJU08gODYwMSBkdXJhdGlvbiBzdHJpbmcuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IC0gdGV4dCB0byBwYXJzZVxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgZm9yIHBhcnNpbmdcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT0nZW4tVVMnXSAtIHRoZSBsb2NhbGUgdG8gdXNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHVzZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuY29udmVyc2lvbkFjY3VyYWN5PSdjYXN1YWwnXSAtIHRoZSBjb252ZXJzaW9uIHN5c3RlbSB0byB1c2VcbiAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMSNEdXJhdGlvbnNcbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbUlTTygnUDNZNk0xVzREVDEySDMwTTVTJykudG9PYmplY3QoKSAvLz0+IHsgeWVhcnM6IDMsIG1vbnRoczogNiwgd2Vla3M6IDEsIGRheXM6IDQsIGhvdXJzOiAxMiwgbWludXRlczogMzAsIHNlY29uZHM6IDUgfVxuICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tSVNPKCdQVDIzSCcpLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAyMyB9XG4gICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21JU08oJ1A1WTNNJykudG9PYmplY3QoKSAvLz0+IHsgeWVhcnM6IDUsIG1vbnRoczogMyB9XG4gICAqIEByZXR1cm4ge0R1cmF0aW9ufVxuICAgKi9cbiAgc3RhdGljIGZyb21JU08odGV4dCwgb3B0cykge1xuICAgIGNvbnN0IFtwYXJzZWRdID0gcGFyc2VJU09EdXJhdGlvbih0ZXh0KTtcbiAgICBpZiAocGFyc2VkKSB7XG4gICAgICByZXR1cm4gRHVyYXRpb24uZnJvbU9iamVjdChwYXJzZWQsIG9wdHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gRHVyYXRpb24uaW52YWxpZChcInVucGFyc2FibGVcIiwgYHRoZSBpbnB1dCBcIiR7dGV4dH1cIiBjYW4ndCBiZSBwYXJzZWQgYXMgSVNPIDg2MDFgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgRHVyYXRpb24gZnJvbSBhbiBJU08gODYwMSB0aW1lIHN0cmluZy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSB0ZXh0IHRvIHBhcnNlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucyBmb3IgcGFyc2luZ1xuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlPSdlbi1VUyddIC0gdGhlIGxvY2FsZSB0byB1c2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMubnVtYmVyaW5nU3lzdGVtIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0gdG8gdXNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5jb252ZXJzaW9uQWNjdXJhY3k9J2Nhc3VhbCddIC0gdGhlIGNvbnZlcnNpb24gc3lzdGVtIHRvIHVzZVxuICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT184NjAxI1RpbWVzXG4gICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21JU09UaW1lKCcxMToyMjozMy40NDQnKS50b09iamVjdCgpIC8vPT4geyBob3VyczogMTEsIG1pbnV0ZXM6IDIyLCBzZWNvbmRzOiAzMywgbWlsbGlzZWNvbmRzOiA0NDQgfVxuICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tSVNPVGltZSgnMTE6MDAnKS50b09iamVjdCgpIC8vPT4geyBob3VyczogMTEsIG1pbnV0ZXM6IDAsIHNlY29uZHM6IDAgfVxuICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tSVNPVGltZSgnVDExOjAwJykudG9PYmplY3QoKSAvLz0+IHsgaG91cnM6IDExLCBtaW51dGVzOiAwLCBzZWNvbmRzOiAwIH1cbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbUlTT1RpbWUoJzExMDAnKS50b09iamVjdCgpIC8vPT4geyBob3VyczogMTEsIG1pbnV0ZXM6IDAsIHNlY29uZHM6IDAgfVxuICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tSVNPVGltZSgnVDExMDAnKS50b09iamVjdCgpIC8vPT4geyBob3VyczogMTEsIG1pbnV0ZXM6IDAsIHNlY29uZHM6IDAgfVxuICAgKiBAcmV0dXJuIHtEdXJhdGlvbn1cbiAgICovXG4gIHN0YXRpYyBmcm9tSVNPVGltZSh0ZXh0LCBvcHRzKSB7XG4gICAgY29uc3QgW3BhcnNlZF0gPSBwYXJzZUlTT1RpbWVPbmx5KHRleHQpO1xuICAgIGlmIChwYXJzZWQpIHtcbiAgICAgIHJldHVybiBEdXJhdGlvbi5mcm9tT2JqZWN0KHBhcnNlZCwgb3B0cyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBEdXJhdGlvbi5pbnZhbGlkKFwidW5wYXJzYWJsZVwiLCBgdGhlIGlucHV0IFwiJHt0ZXh0fVwiIGNhbid0IGJlIHBhcnNlZCBhcyBJU08gODYwMWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYW4gaW52YWxpZCBEdXJhdGlvbi5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHJlYXNvbiAtIHNpbXBsZSBzdHJpbmcgb2Ygd2h5IHRoaXMgZGF0ZXRpbWUgaXMgaW52YWxpZC4gU2hvdWxkIG5vdCBjb250YWluIHBhcmFtZXRlcnMgb3IgYW55dGhpbmcgZWxzZSBkYXRhLWRlcGVuZGVudFxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2V4cGxhbmF0aW9uPW51bGxdIC0gbG9uZ2VyIGV4cGxhbmF0aW9uLCBtYXkgaW5jbHVkZSBwYXJhbWV0ZXJzIGFuZCBvdGhlciB1c2VmdWwgZGVidWdnaW5nIGluZm9ybWF0aW9uXG4gICAqIEByZXR1cm4ge0R1cmF0aW9ufVxuICAgKi9cbiAgc3RhdGljIGludmFsaWQocmVhc29uLCBleHBsYW5hdGlvbiA9IG51bGwpIHtcbiAgICBpZiAoIXJlYXNvbikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKFwibmVlZCB0byBzcGVjaWZ5IGEgcmVhc29uIHRoZSBEdXJhdGlvbiBpcyBpbnZhbGlkXCIpO1xuICAgIH1cblxuICAgIGNvbnN0IGludmFsaWQgPSByZWFzb24gaW5zdGFuY2VvZiBJbnZhbGlkID8gcmVhc29uIDogbmV3IEludmFsaWQocmVhc29uLCBleHBsYW5hdGlvbik7XG5cbiAgICBpZiAoU2V0dGluZ3MudGhyb3dPbkludmFsaWQpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkRHVyYXRpb25FcnJvcihpbnZhbGlkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5ldyBEdXJhdGlvbih7IGludmFsaWQgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBzdGF0aWMgbm9ybWFsaXplVW5pdCh1bml0KSB7XG4gICAgY29uc3Qgbm9ybWFsaXplZCA9IHtcbiAgICAgIHllYXI6IFwieWVhcnNcIixcbiAgICAgIHllYXJzOiBcInllYXJzXCIsXG4gICAgICBxdWFydGVyOiBcInF1YXJ0ZXJzXCIsXG4gICAgICBxdWFydGVyczogXCJxdWFydGVyc1wiLFxuICAgICAgbW9udGg6IFwibW9udGhzXCIsXG4gICAgICBtb250aHM6IFwibW9udGhzXCIsXG4gICAgICB3ZWVrOiBcIndlZWtzXCIsXG4gICAgICB3ZWVrczogXCJ3ZWVrc1wiLFxuICAgICAgZGF5OiBcImRheXNcIixcbiAgICAgIGRheXM6IFwiZGF5c1wiLFxuICAgICAgaG91cjogXCJob3Vyc1wiLFxuICAgICAgaG91cnM6IFwiaG91cnNcIixcbiAgICAgIG1pbnV0ZTogXCJtaW51dGVzXCIsXG4gICAgICBtaW51dGVzOiBcIm1pbnV0ZXNcIixcbiAgICAgIHNlY29uZDogXCJzZWNvbmRzXCIsXG4gICAgICBzZWNvbmRzOiBcInNlY29uZHNcIixcbiAgICAgIG1pbGxpc2Vjb25kOiBcIm1pbGxpc2Vjb25kc1wiLFxuICAgICAgbWlsbGlzZWNvbmRzOiBcIm1pbGxpc2Vjb25kc1wiLFxuICAgIH1bdW5pdCA/IHVuaXQudG9Mb3dlckNhc2UoKSA6IHVuaXRdO1xuXG4gICAgaWYgKCFub3JtYWxpemVkKSB0aHJvdyBuZXcgSW52YWxpZFVuaXRFcnJvcih1bml0KTtcblxuICAgIHJldHVybiBub3JtYWxpemVkO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGFuIG9iamVjdCBpcyBhIER1cmF0aW9uLiBXb3JrcyBhY3Jvc3MgY29udGV4dCBib3VuZGFyaWVzXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBvXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqL1xuICBzdGF0aWMgaXNEdXJhdGlvbihvKSB7XG4gICAgcmV0dXJuIChvICYmIG8uaXNMdXhvbkR1cmF0aW9uKSB8fCBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgIHRoZSBsb2NhbGUgb2YgYSBEdXJhdGlvbiwgc3VjaCAnZW4tR0InXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBnZXQgbG9jYWxlKCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmxvYy5sb2NhbGUgOiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgbnVtYmVyaW5nIHN5c3RlbSBvZiBhIER1cmF0aW9uLCBzdWNoICdiZW5nJy4gVGhlIG51bWJlcmluZyBzeXN0ZW0gaXMgdXNlZCB3aGVuIGZvcm1hdHRpbmcgdGhlIER1cmF0aW9uXG4gICAqXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBnZXQgbnVtYmVyaW5nU3lzdGVtKCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmxvYy5udW1iZXJpbmdTeXN0ZW0gOiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEdXJhdGlvbiBmb3JtYXR0ZWQgYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQgZm9ybWF0IHN0cmluZy4gWW91IG1heSB1c2UgdGhlc2UgdG9rZW5zOlxuICAgKiAqIGBTYCBmb3IgbWlsbGlzZWNvbmRzXG4gICAqICogYHNgIGZvciBzZWNvbmRzXG4gICAqICogYG1gIGZvciBtaW51dGVzXG4gICAqICogYGhgIGZvciBob3Vyc1xuICAgKiAqIGBkYCBmb3IgZGF5c1xuICAgKiAqIGB3YCBmb3Igd2Vla3NcbiAgICogKiBgTWAgZm9yIG1vbnRoc1xuICAgKiAqIGB5YCBmb3IgeWVhcnNcbiAgICogTm90ZXM6XG4gICAqICogQWRkIHBhZGRpbmcgYnkgcmVwZWF0aW5nIHRoZSB0b2tlbiwgZS5nLiBcInl5XCIgcGFkcyB0aGUgeWVhcnMgdG8gdHdvIGRpZ2l0cywgXCJoaGhoXCIgcGFkcyB0aGUgaG91cnMgb3V0IHRvIGZvdXIgZGlnaXRzXG4gICAqICogVG9rZW5zIGNhbiBiZSBlc2NhcGVkIGJ5IHdyYXBwaW5nIHdpdGggc2luZ2xlIHF1b3Rlcy5cbiAgICogKiBUaGUgZHVyYXRpb24gd2lsbCBiZSBjb252ZXJ0ZWQgdG8gdGhlIHNldCBvZiB1bml0cyBpbiB0aGUgZm9ybWF0IHN0cmluZyB1c2luZyB7QGxpbmsgRHVyYXRpb24jc2hpZnRUb30gYW5kIHRoZSBEdXJhdGlvbnMncyBjb252ZXJzaW9uIGFjY3VyYWN5IHNldHRpbmcuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmbXQgLSB0aGUgZm9ybWF0IHN0cmluZ1xuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnNcbiAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5mbG9vcj10cnVlXSAtIGZsb29yIG51bWVyaWNhbCB2YWx1ZXNcbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IHllYXJzOiAxLCBkYXlzOiA2LCBzZWNvbmRzOiAyIH0pLnRvRm9ybWF0KFwieSBkIHNcIikgLy89PiBcIjEgNiAyXCJcbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IHllYXJzOiAxLCBkYXlzOiA2LCBzZWNvbmRzOiAyIH0pLnRvRm9ybWF0KFwieXkgZGQgc3NzXCIpIC8vPT4gXCIwMSAwNiAwMDJcIlxuICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgeWVhcnM6IDEsIGRheXM6IDYsIHNlY29uZHM6IDIgfSkudG9Gb3JtYXQoXCJNIFNcIikgLy89PiBcIjEyIDUxODQwMjAwMFwiXG4gICAqIEByZXR1cm4ge3N0cmluZ31cbiAgICovXG4gIHRvRm9ybWF0KGZtdCwgb3B0cyA9IHt9KSB7XG4gICAgLy8gcmV2ZXJzZS1jb21wYXQgc2luY2UgMS4yOyB3ZSBhbHdheXMgcm91bmQgZG93biBub3csIG5ldmVyIHVwLCBhbmQgd2UgZG8gaXQgYnkgZGVmYXVsdFxuICAgIGNvbnN0IGZtdE9wdHMgPSB7XG4gICAgICAuLi5vcHRzLFxuICAgICAgZmxvb3I6IG9wdHMucm91bmQgIT09IGZhbHNlICYmIG9wdHMuZmxvb3IgIT09IGZhbHNlLFxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZFxuICAgICAgPyBGb3JtYXR0ZXIuY3JlYXRlKHRoaXMubG9jLCBmbXRPcHRzKS5mb3JtYXREdXJhdGlvbkZyb21TdHJpbmcodGhpcywgZm10KVxuICAgICAgOiBJTlZBTElEO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBEdXJhdGlvbiB3aXRoIGFsbCB1bml0cyBpbmNsdWRlZC5cbiAgICogVG8gbW9kaWZ5IGl0cyBiZWhhdmlvciB1c2UgdGhlIGBsaXN0U3R5bGVgIGFuZCBhbnkgSW50bC5OdW1iZXJGb3JtYXQgb3B0aW9uLCB0aG91Z2ggYHVuaXREaXNwbGF5YCBpcyBlc3BlY2lhbGx5IHJlbGV2YW50LlxuICAgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0ludGwvTnVtYmVyRm9ybWF0XG4gICAqIEBwYXJhbSBvcHRzIC0gT24gb3B0aW9uIG9iamVjdCB0byBvdmVycmlkZSB0aGUgZm9ybWF0dGluZy4gQWNjZXB0cyB0aGUgc2FtZSBrZXlzIGFzIHRoZSBvcHRpb25zIHBhcmFtZXRlciBvZiB0aGUgbmF0aXZlIGBJbnQuTnVtYmVyRm9ybWF0YCBjb25zdHJ1Y3RvciwgYXMgd2VsbCBhcyBgbGlzdFN0eWxlYC5cbiAgICogQGV4YW1wbGVcbiAgICogYGBganNcbiAgICogdmFyIGR1ciA9IER1cmF0aW9uLmZyb21PYmplY3QoeyBkYXlzOiAxLCBob3VyczogNSwgbWludXRlczogNiB9KVxuICAgKiBkdXIudG9IdW1hbigpIC8vPT4gJzEgZGF5LCA1IGhvdXJzLCA2IG1pbnV0ZXMnXG4gICAqIGR1ci50b0h1bWFuKHsgbGlzdFN0eWxlOiBcImxvbmdcIiB9KSAvLz0+ICcxIGRheSwgNSBob3VycywgYW5kIDYgbWludXRlcydcbiAgICogZHVyLnRvSHVtYW4oeyB1bml0RGlzcGxheTogXCJzaG9ydFwiIH0pIC8vPT4gJzEgZGF5LCA1IGhyLCA2IG1pbidcbiAgICogYGBgXG4gICAqL1xuICB0b0h1bWFuKG9wdHMgPSB7fSkge1xuICAgIGNvbnN0IGwgPSBvcmRlcmVkVW5pdHNcbiAgICAgIC5tYXAoKHVuaXQpID0+IHtcbiAgICAgICAgY29uc3QgdmFsID0gdGhpcy52YWx1ZXNbdW5pdF07XG4gICAgICAgIGlmIChpc1VuZGVmaW5lZCh2YWwpKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMubG9jXG4gICAgICAgICAgLm51bWJlckZvcm1hdHRlcih7IHN0eWxlOiBcInVuaXRcIiwgdW5pdERpc3BsYXk6IFwibG9uZ1wiLCAuLi5vcHRzLCB1bml0OiB1bml0LnNsaWNlKDAsIC0xKSB9KVxuICAgICAgICAgIC5mb3JtYXQodmFsKTtcbiAgICAgIH0pXG4gICAgICAuZmlsdGVyKChuKSA9PiBuKTtcblxuICAgIHJldHVybiB0aGlzLmxvY1xuICAgICAgLmxpc3RGb3JtYXR0ZXIoeyB0eXBlOiBcImNvbmp1bmN0aW9uXCIsIHN0eWxlOiBvcHRzLmxpc3RTdHlsZSB8fCBcIm5hcnJvd1wiLCAuLi5vcHRzIH0pXG4gICAgICAuZm9ybWF0KGwpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBKYXZhU2NyaXB0IG9iamVjdCB3aXRoIHRoaXMgRHVyYXRpb24ncyB2YWx1ZXMuXG4gICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyB5ZWFyczogMSwgZGF5czogNiwgc2Vjb25kczogMiB9KS50b09iamVjdCgpIC8vPT4geyB5ZWFyczogMSwgZGF5czogNiwgc2Vjb25kczogMiB9XG4gICAqIEByZXR1cm4ge09iamVjdH1cbiAgICovXG4gIHRvT2JqZWN0KCkge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4ge307XG4gICAgcmV0dXJuIHsgLi4udGhpcy52YWx1ZXMgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIElTTyA4NjAxLWNvbXBsaWFudCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEdXJhdGlvbi5cbiAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMSNEdXJhdGlvbnNcbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IHllYXJzOiAzLCBzZWNvbmRzOiA0NSB9KS50b0lTTygpIC8vPT4gJ1AzWVQ0NVMnXG4gICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBtb250aHM6IDQsIHNlY29uZHM6IDQ1IH0pLnRvSVNPKCkgLy89PiAnUDRNVDQ1UydcbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IG1vbnRoczogNSB9KS50b0lTTygpIC8vPT4gJ1A1TSdcbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IG1pbnV0ZXM6IDUgfSkudG9JU08oKSAvLz0+ICdQVDVNJ1xuICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgbWlsbGlzZWNvbmRzOiA2IH0pLnRvSVNPKCkgLy89PiAnUFQwLjAwNlMnXG4gICAqIEByZXR1cm4ge3N0cmluZ31cbiAgICovXG4gIHRvSVNPKCkge1xuICAgIC8vIHdlIGNvdWxkIHVzZSB0aGUgZm9ybWF0dGVyLCBidXQgdGhpcyBpcyBhbiBlYXNpZXIgd2F5IHRvIGdldCB0aGUgbWluaW11bSBzdHJpbmdcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIG51bGw7XG5cbiAgICBsZXQgcyA9IFwiUFwiO1xuICAgIGlmICh0aGlzLnllYXJzICE9PSAwKSBzICs9IHRoaXMueWVhcnMgKyBcIllcIjtcbiAgICBpZiAodGhpcy5tb250aHMgIT09IDAgfHwgdGhpcy5xdWFydGVycyAhPT0gMCkgcyArPSB0aGlzLm1vbnRocyArIHRoaXMucXVhcnRlcnMgKiAzICsgXCJNXCI7XG4gICAgaWYgKHRoaXMud2Vla3MgIT09IDApIHMgKz0gdGhpcy53ZWVrcyArIFwiV1wiO1xuICAgIGlmICh0aGlzLmRheXMgIT09IDApIHMgKz0gdGhpcy5kYXlzICsgXCJEXCI7XG4gICAgaWYgKHRoaXMuaG91cnMgIT09IDAgfHwgdGhpcy5taW51dGVzICE9PSAwIHx8IHRoaXMuc2Vjb25kcyAhPT0gMCB8fCB0aGlzLm1pbGxpc2Vjb25kcyAhPT0gMClcbiAgICAgIHMgKz0gXCJUXCI7XG4gICAgaWYgKHRoaXMuaG91cnMgIT09IDApIHMgKz0gdGhpcy5ob3VycyArIFwiSFwiO1xuICAgIGlmICh0aGlzLm1pbnV0ZXMgIT09IDApIHMgKz0gdGhpcy5taW51dGVzICsgXCJNXCI7XG4gICAgaWYgKHRoaXMuc2Vjb25kcyAhPT0gMCB8fCB0aGlzLm1pbGxpc2Vjb25kcyAhPT0gMClcbiAgICAgIC8vIHRoaXMgd2lsbCBoYW5kbGUgXCJmbG9hdGluZyBwb2ludCBtYWRuZXNzXCIgYnkgcmVtb3ZpbmcgZXh0cmEgZGVjaW1hbCBwbGFjZXNcbiAgICAgIC8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzU4ODAwNC9pcy1mbG9hdGluZy1wb2ludC1tYXRoLWJyb2tlblxuICAgICAgcyArPSByb3VuZFRvKHRoaXMuc2Vjb25kcyArIHRoaXMubWlsbGlzZWNvbmRzIC8gMTAwMCwgMykgKyBcIlNcIjtcbiAgICBpZiAocyA9PT0gXCJQXCIpIHMgKz0gXCJUMFNcIjtcbiAgICByZXR1cm4gcztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIElTTyA4NjAxLWNvbXBsaWFudCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEdXJhdGlvbiwgZm9ybWF0dGVkIGFzIGEgdGltZSBvZiBkYXkuXG4gICAqIE5vdGUgdGhhdCB0aGlzIHdpbGwgcmV0dXJuIG51bGwgaWYgdGhlIGR1cmF0aW9uIGlzIGludmFsaWQsIG5lZ2F0aXZlLCBvciBlcXVhbCB0byBvciBncmVhdGVyIHRoYW4gMjQgaG91cnMuXG4gICAqIEBzZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPXzg2MDEjVGltZXNcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuc3VwcHJlc3NNaWxsaXNlY29uZHM9ZmFsc2VdIC0gZXhjbHVkZSBtaWxsaXNlY29uZHMgZnJvbSB0aGUgZm9ybWF0IGlmIHRoZXkncmUgMFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLnN1cHByZXNzU2Vjb25kcz1mYWxzZV0gLSBleGNsdWRlIHNlY29uZHMgZnJvbSB0aGUgZm9ybWF0IGlmIHRoZXkncmUgMFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmluY2x1ZGVQcmVmaXg9ZmFsc2VdIC0gaW5jbHVkZSB0aGUgYFRgIHByZWZpeFxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuZm9ybWF0PSdleHRlbmRlZCddIC0gY2hvb3NlIGJldHdlZW4gdGhlIGJhc2ljIGFuZCBleHRlbmRlZCBmb3JtYXRcbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxMSB9KS50b0lTT1RpbWUoKSAvLz0+ICcxMTowMDowMC4wMDAnXG4gICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMTEgfSkudG9JU09UaW1lKHsgc3VwcHJlc3NNaWxsaXNlY29uZHM6IHRydWUgfSkgLy89PiAnMTE6MDA6MDAnXG4gICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMTEgfSkudG9JU09UaW1lKHsgc3VwcHJlc3NTZWNvbmRzOiB0cnVlIH0pIC8vPT4gJzExOjAwJ1xuICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDExIH0pLnRvSVNPVGltZSh7IGluY2x1ZGVQcmVmaXg6IHRydWUgfSkgLy89PiAnVDExOjAwOjAwLjAwMCdcbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxMSB9KS50b0lTT1RpbWUoeyBmb3JtYXQ6ICdiYXNpYycgfSkgLy89PiAnMTEwMDAwLjAwMCdcbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgdG9JU09UaW1lKG9wdHMgPSB7fSkge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gbnVsbDtcblxuICAgIGNvbnN0IG1pbGxpcyA9IHRoaXMudG9NaWxsaXMoKTtcbiAgICBpZiAobWlsbGlzIDwgMCB8fCBtaWxsaXMgPj0gODY0MDAwMDApIHJldHVybiBudWxsO1xuXG4gICAgb3B0cyA9IHtcbiAgICAgIHN1cHByZXNzTWlsbGlzZWNvbmRzOiBmYWxzZSxcbiAgICAgIHN1cHByZXNzU2Vjb25kczogZmFsc2UsXG4gICAgICBpbmNsdWRlUHJlZml4OiBmYWxzZSxcbiAgICAgIGZvcm1hdDogXCJleHRlbmRlZFwiLFxuICAgICAgLi4ub3B0cyxcbiAgICB9O1xuXG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLnNoaWZ0VG8oXCJob3Vyc1wiLCBcIm1pbnV0ZXNcIiwgXCJzZWNvbmRzXCIsIFwibWlsbGlzZWNvbmRzXCIpO1xuXG4gICAgbGV0IGZtdCA9IG9wdHMuZm9ybWF0ID09PSBcImJhc2ljXCIgPyBcImhobW1cIiA6IFwiaGg6bW1cIjtcblxuICAgIGlmICghb3B0cy5zdXBwcmVzc1NlY29uZHMgfHwgdmFsdWUuc2Vjb25kcyAhPT0gMCB8fCB2YWx1ZS5taWxsaXNlY29uZHMgIT09IDApIHtcbiAgICAgIGZtdCArPSBvcHRzLmZvcm1hdCA9PT0gXCJiYXNpY1wiID8gXCJzc1wiIDogXCI6c3NcIjtcbiAgICAgIGlmICghb3B0cy5zdXBwcmVzc01pbGxpc2Vjb25kcyB8fCB2YWx1ZS5taWxsaXNlY29uZHMgIT09IDApIHtcbiAgICAgICAgZm10ICs9IFwiLlNTU1wiO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBzdHIgPSB2YWx1ZS50b0Zvcm1hdChmbXQpO1xuXG4gICAgaWYgKG9wdHMuaW5jbHVkZVByZWZpeCkge1xuICAgICAgc3RyID0gXCJUXCIgKyBzdHI7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0cjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIElTTyA4NjAxIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRHVyYXRpb24gYXBwcm9wcmlhdGUgZm9yIHVzZSBpbiBKU09OLlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9XG4gICAqL1xuICB0b0pTT04oKSB7XG4gICAgcmV0dXJuIHRoaXMudG9JU08oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIElTTyA4NjAxIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRHVyYXRpb24gYXBwcm9wcmlhdGUgZm9yIHVzZSBpbiBkZWJ1Z2dpbmcuXG4gICAqIEByZXR1cm4ge3N0cmluZ31cbiAgICovXG4gIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLnRvSVNPKCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBtaWxsaXNlY29uZHMgdmFsdWUgb2YgdGhpcyBEdXJhdGlvbi5cbiAgICogQHJldHVybiB7bnVtYmVyfVxuICAgKi9cbiAgdG9NaWxsaXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuYXMoXCJtaWxsaXNlY29uZHNcIik7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBtaWxsaXNlY29uZHMgdmFsdWUgb2YgdGhpcyBEdXJhdGlvbi4gQWxpYXMgb2Yge0BsaW5rIHRvTWlsbGlzfVxuICAgKiBAcmV0dXJuIHtudW1iZXJ9XG4gICAqL1xuICB2YWx1ZU9mKCkge1xuICAgIHJldHVybiB0aGlzLnRvTWlsbGlzKCk7XG4gIH1cblxuICAvKipcbiAgICogTWFrZSB0aGlzIER1cmF0aW9uIGxvbmdlciBieSB0aGUgc3BlY2lmaWVkIGFtb3VudC4gUmV0dXJuIGEgbmV3bHktY29uc3RydWN0ZWQgRHVyYXRpb24uXG4gICAqIEBwYXJhbSB7RHVyYXRpb258T2JqZWN0fG51bWJlcn0gZHVyYXRpb24gLSBUaGUgYW1vdW50IHRvIGFkZC4gRWl0aGVyIGEgTHV4b24gRHVyYXRpb24sIGEgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcywgdGhlIG9iamVjdCBhcmd1bWVudCB0byBEdXJhdGlvbi5mcm9tT2JqZWN0KClcbiAgICogQHJldHVybiB7RHVyYXRpb259XG4gICAqL1xuICBwbHVzKGR1cmF0aW9uKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzO1xuXG4gICAgY29uc3QgZHVyID0gRHVyYXRpb24uZnJvbUR1cmF0aW9uTGlrZShkdXJhdGlvbiksXG4gICAgICByZXN1bHQgPSB7fTtcblxuICAgIGZvciAoY29uc3QgayBvZiBvcmRlcmVkVW5pdHMpIHtcbiAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eShkdXIudmFsdWVzLCBrKSB8fCBoYXNPd25Qcm9wZXJ0eSh0aGlzLnZhbHVlcywgaykpIHtcbiAgICAgICAgcmVzdWx0W2tdID0gZHVyLmdldChrKSArIHRoaXMuZ2V0KGspO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjbG9uZSh0aGlzLCB7IHZhbHVlczogcmVzdWx0IH0sIHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ha2UgdGhpcyBEdXJhdGlvbiBzaG9ydGVyIGJ5IHRoZSBzcGVjaWZpZWQgYW1vdW50LiBSZXR1cm4gYSBuZXdseS1jb25zdHJ1Y3RlZCBEdXJhdGlvbi5cbiAgICogQHBhcmFtIHtEdXJhdGlvbnxPYmplY3R8bnVtYmVyfSBkdXJhdGlvbiAtIFRoZSBhbW91bnQgdG8gc3VidHJhY3QuIEVpdGhlciBhIEx1eG9uIER1cmF0aW9uLCBhIG51bWJlciBvZiBtaWxsaXNlY29uZHMsIHRoZSBvYmplY3QgYXJndW1lbnQgdG8gRHVyYXRpb24uZnJvbU9iamVjdCgpXG4gICAqIEByZXR1cm4ge0R1cmF0aW9ufVxuICAgKi9cbiAgbWludXMoZHVyYXRpb24pIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7XG5cbiAgICBjb25zdCBkdXIgPSBEdXJhdGlvbi5mcm9tRHVyYXRpb25MaWtlKGR1cmF0aW9uKTtcbiAgICByZXR1cm4gdGhpcy5wbHVzKGR1ci5uZWdhdGUoKSk7XG4gIH1cblxuICAvKipcbiAgICogU2NhbGUgdGhpcyBEdXJhdGlvbiBieSB0aGUgc3BlY2lmaWVkIGFtb3VudC4gUmV0dXJuIGEgbmV3bHktY29uc3RydWN0ZWQgRHVyYXRpb24uXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGZuIC0gVGhlIGZ1bmN0aW9uIHRvIGFwcGx5IHRvIGVhY2ggdW5pdC4gQXJpdHkgaXMgMSBvciAyOiB0aGUgdmFsdWUgb2YgdGhlIHVuaXQgYW5kLCBvcHRpb25hbGx5LCB0aGUgdW5pdCBuYW1lLiBNdXN0IHJldHVybiBhIG51bWJlci5cbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxLCBtaW51dGVzOiAzMCB9KS5tYXBVbml0cyh4ID0+IHggKiAyKSAvLz0+IHsgaG91cnM6IDIsIG1pbnV0ZXM6IDYwIH1cbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxLCBtaW51dGVzOiAzMCB9KS5tYXBVbml0cygoeCwgdSkgPT4gdSA9PT0gXCJob3VyXCIgPyB4ICogMiA6IHgpIC8vPT4geyBob3VyczogMiwgbWludXRlczogMzAgfVxuICAgKiBAcmV0dXJuIHtEdXJhdGlvbn1cbiAgICovXG4gIG1hcFVuaXRzKGZuKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzO1xuICAgIGNvbnN0IHJlc3VsdCA9IHt9O1xuICAgIGZvciAoY29uc3QgayBvZiBPYmplY3Qua2V5cyh0aGlzLnZhbHVlcykpIHtcbiAgICAgIHJlc3VsdFtrXSA9IGFzTnVtYmVyKGZuKHRoaXMudmFsdWVzW2tdLCBrKSk7XG4gICAgfVxuICAgIHJldHVybiBjbG9uZSh0aGlzLCB7IHZhbHVlczogcmVzdWx0IH0sIHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgdmFsdWUgb2YgdW5pdC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHVuaXQgLSBhIHVuaXQgc3VjaCBhcyAnbWludXRlJyBvciAnZGF5J1xuICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHt5ZWFyczogMiwgZGF5czogM30pLmdldCgneWVhcnMnKSAvLz0+IDJcbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7eWVhcnM6IDIsIGRheXM6IDN9KS5nZXQoJ21vbnRocycpIC8vPT4gMFxuICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHt5ZWFyczogMiwgZGF5czogM30pLmdldCgnZGF5cycpIC8vPT4gM1xuICAgKiBAcmV0dXJuIHtudW1iZXJ9XG4gICAqL1xuICBnZXQodW5pdCkge1xuICAgIHJldHVybiB0aGlzW0R1cmF0aW9uLm5vcm1hbGl6ZVVuaXQodW5pdCldO1xuICB9XG5cbiAgLyoqXG4gICAqIFwiU2V0XCIgdGhlIHZhbHVlcyBvZiBzcGVjaWZpZWQgdW5pdHMuIFJldHVybiBhIG5ld2x5LWNvbnN0cnVjdGVkIER1cmF0aW9uLlxuICAgKiBAcGFyYW0ge09iamVjdH0gdmFsdWVzIC0gYSBtYXBwaW5nIG9mIHVuaXRzIHRvIG51bWJlcnNcbiAgICogQGV4YW1wbGUgZHVyLnNldCh7IHllYXJzOiAyMDE3IH0pXG4gICAqIEBleGFtcGxlIGR1ci5zZXQoeyBob3VyczogOCwgbWludXRlczogMzAgfSlcbiAgICogQHJldHVybiB7RHVyYXRpb259XG4gICAqL1xuICBzZXQodmFsdWVzKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzO1xuXG4gICAgY29uc3QgbWl4ZWQgPSB7IC4uLnRoaXMudmFsdWVzLCAuLi5ub3JtYWxpemVPYmplY3QodmFsdWVzLCBEdXJhdGlvbi5ub3JtYWxpemVVbml0KSB9O1xuICAgIHJldHVybiBjbG9uZSh0aGlzLCB7IHZhbHVlczogbWl4ZWQgfSk7XG4gIH1cblxuICAvKipcbiAgICogXCJTZXRcIiB0aGUgbG9jYWxlIGFuZC9vciBudW1iZXJpbmdTeXN0ZW0uICBSZXR1cm5zIGEgbmV3bHktY29uc3RydWN0ZWQgRHVyYXRpb24uXG4gICAqIEBleGFtcGxlIGR1ci5yZWNvbmZpZ3VyZSh7IGxvY2FsZTogJ2VuLUdCJyB9KVxuICAgKiBAcmV0dXJuIHtEdXJhdGlvbn1cbiAgICovXG4gIHJlY29uZmlndXJlKHsgbG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIGNvbnZlcnNpb25BY2N1cmFjeSB9ID0ge30pIHtcbiAgICBjb25zdCBsb2MgPSB0aGlzLmxvYy5jbG9uZSh7IGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtIH0pLFxuICAgICAgb3B0cyA9IHsgbG9jIH07XG5cbiAgICBpZiAoY29udmVyc2lvbkFjY3VyYWN5KSB7XG4gICAgICBvcHRzLmNvbnZlcnNpb25BY2N1cmFjeSA9IGNvbnZlcnNpb25BY2N1cmFjeTtcbiAgICB9XG5cbiAgICByZXR1cm4gY2xvbmUodGhpcywgb3B0cyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRoZSBsZW5ndGggb2YgdGhlIGR1cmF0aW9uIGluIHRoZSBzcGVjaWZpZWQgdW5pdC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHVuaXQgLSBhIHVuaXQgc3VjaCBhcyAnbWludXRlcycgb3IgJ2RheXMnXG4gICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3Qoe3llYXJzOiAxfSkuYXMoJ2RheXMnKSAvLz0+IDM2NVxuICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHt5ZWFyczogMX0pLmFzKCdtb250aHMnKSAvLz0+IDEyXG4gICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3Qoe2hvdXJzOiA2MH0pLmFzKCdkYXlzJykgLy89PiAyLjVcbiAgICogQHJldHVybiB7bnVtYmVyfVxuICAgKi9cbiAgYXModW5pdCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnNoaWZ0VG8odW5pdCkuZ2V0KHVuaXQpIDogTmFOO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZHVjZSB0aGlzIER1cmF0aW9uIHRvIGl0cyBjYW5vbmljYWwgcmVwcmVzZW50YXRpb24gaW4gaXRzIGN1cnJlbnQgdW5pdHMuXG4gICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyB5ZWFyczogMiwgZGF5czogNTAwMCB9KS5ub3JtYWxpemUoKS50b09iamVjdCgpIC8vPT4geyB5ZWFyczogMTUsIGRheXM6IDI1NSB9XG4gICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMTIsIG1pbnV0ZXM6IC00NSB9KS5ub3JtYWxpemUoKS50b09iamVjdCgpIC8vPT4geyBob3VyczogMTEsIG1pbnV0ZXM6IDE1IH1cbiAgICogQHJldHVybiB7RHVyYXRpb259XG4gICAqL1xuICBub3JtYWxpemUoKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzO1xuICAgIGNvbnN0IHZhbHMgPSB0aGlzLnRvT2JqZWN0KCk7XG4gICAgbm9ybWFsaXplVmFsdWVzKHRoaXMubWF0cml4LCB2YWxzKTtcbiAgICByZXR1cm4gY2xvbmUodGhpcywgeyB2YWx1ZXM6IHZhbHMgfSwgdHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCB0aGlzIER1cmF0aW9uIGludG8gaXRzIHJlcHJlc2VudGF0aW9uIGluIGEgZGlmZmVyZW50IHNldCBvZiB1bml0cy5cbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxLCBzZWNvbmRzOiAzMCB9KS5zaGlmdFRvKCdtaW51dGVzJywgJ21pbGxpc2Vjb25kcycpLnRvT2JqZWN0KCkgLy89PiB7IG1pbnV0ZXM6IDYwLCBtaWxsaXNlY29uZHM6IDMwMDAwIH1cbiAgICogQHJldHVybiB7RHVyYXRpb259XG4gICAqL1xuICBzaGlmdFRvKC4uLnVuaXRzKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzO1xuXG4gICAgaWYgKHVuaXRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgdW5pdHMgPSB1bml0cy5tYXAoKHUpID0+IER1cmF0aW9uLm5vcm1hbGl6ZVVuaXQodSkpO1xuXG4gICAgY29uc3QgYnVpbHQgPSB7fSxcbiAgICAgIGFjY3VtdWxhdGVkID0ge30sXG4gICAgICB2YWxzID0gdGhpcy50b09iamVjdCgpO1xuICAgIGxldCBsYXN0VW5pdDtcblxuICAgIGZvciAoY29uc3QgayBvZiBvcmRlcmVkVW5pdHMpIHtcbiAgICAgIGlmICh1bml0cy5pbmRleE9mKGspID49IDApIHtcbiAgICAgICAgbGFzdFVuaXQgPSBrO1xuXG4gICAgICAgIGxldCBvd24gPSAwO1xuXG4gICAgICAgIC8vIGFueXRoaW5nIHdlIGhhdmVuJ3QgYm9pbGVkIGRvd24geWV0IHNob3VsZCBnZXQgYm9pbGVkIHRvIHRoaXMgdW5pdFxuICAgICAgICBmb3IgKGNvbnN0IGFrIGluIGFjY3VtdWxhdGVkKSB7XG4gICAgICAgICAgb3duICs9IHRoaXMubWF0cml4W2FrXVtrXSAqIGFjY3VtdWxhdGVkW2FrXTtcbiAgICAgICAgICBhY2N1bXVsYXRlZFtha10gPSAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gcGx1cyBhbnl0aGluZyB0aGF0J3MgYWxyZWFkeSBpbiB0aGlzIHVuaXRcbiAgICAgICAgaWYgKGlzTnVtYmVyKHZhbHNba10pKSB7XG4gICAgICAgICAgb3duICs9IHZhbHNba107XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpID0gTWF0aC50cnVuYyhvd24pO1xuICAgICAgICBidWlsdFtrXSA9IGk7XG4gICAgICAgIGFjY3VtdWxhdGVkW2tdID0gKG93biAqIDEwMDAgLSBpICogMTAwMCkgLyAxMDAwO1xuXG4gICAgICAgIC8vIHBsdXMgYW55dGhpbmcgZnVydGhlciBkb3duIHRoZSBjaGFpbiB0aGF0IHNob3VsZCBiZSByb2xsZWQgdXAgaW4gdG8gdGhpc1xuICAgICAgICBmb3IgKGNvbnN0IGRvd24gaW4gdmFscykge1xuICAgICAgICAgIGlmIChvcmRlcmVkVW5pdHMuaW5kZXhPZihkb3duKSA+IG9yZGVyZWRVbml0cy5pbmRleE9mKGspKSB7XG4gICAgICAgICAgICBjb252ZXJ0KHRoaXMubWF0cml4LCB2YWxzLCBkb3duLCBidWlsdCwgayk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIG90aGVyd2lzZSwga2VlcCBpdCBpbiB0aGUgd2luZ3MgdG8gYm9pbCBpdCBsYXRlclxuICAgICAgfSBlbHNlIGlmIChpc051bWJlcih2YWxzW2tdKSkge1xuICAgICAgICBhY2N1bXVsYXRlZFtrXSA9IHZhbHNba107XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gYW55dGhpbmcgbGVmdG92ZXIgYmVjb21lcyB0aGUgZGVjaW1hbCBmb3IgdGhlIGxhc3QgdW5pdFxuICAgIC8vIGxhc3RVbml0IG11c3QgYmUgZGVmaW5lZCBzaW5jZSB1bml0cyBpcyBub3QgZW1wdHlcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBhY2N1bXVsYXRlZCkge1xuICAgICAgaWYgKGFjY3VtdWxhdGVkW2tleV0gIT09IDApIHtcbiAgICAgICAgYnVpbHRbbGFzdFVuaXRdICs9XG4gICAgICAgICAga2V5ID09PSBsYXN0VW5pdCA/IGFjY3VtdWxhdGVkW2tleV0gOiBhY2N1bXVsYXRlZFtrZXldIC8gdGhpcy5tYXRyaXhbbGFzdFVuaXRdW2tleV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGNsb25lKHRoaXMsIHsgdmFsdWVzOiBidWlsdCB9LCB0cnVlKS5ub3JtYWxpemUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIG5lZ2F0aXZlIG9mIHRoaXMgRHVyYXRpb24uXG4gICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMSwgc2Vjb25kczogMzAgfSkubmVnYXRlKCkudG9PYmplY3QoKSAvLz0+IHsgaG91cnM6IC0xLCBzZWNvbmRzOiAtMzAgfVxuICAgKiBAcmV0dXJuIHtEdXJhdGlvbn1cbiAgICovXG4gIG5lZ2F0ZSgpIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7XG4gICAgY29uc3QgbmVnYXRlZCA9IHt9O1xuICAgIGZvciAoY29uc3QgayBvZiBPYmplY3Qua2V5cyh0aGlzLnZhbHVlcykpIHtcbiAgICAgIG5lZ2F0ZWRba10gPSB0aGlzLnZhbHVlc1trXSA9PT0gMCA/IDAgOiAtdGhpcy52YWx1ZXNba107XG4gICAgfVxuICAgIHJldHVybiBjbG9uZSh0aGlzLCB7IHZhbHVlczogbmVnYXRlZCB9LCB0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHllYXJzLlxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKi9cbiAgZ2V0IHllYXJzKCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnZhbHVlcy55ZWFycyB8fCAwIDogTmFOO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgcXVhcnRlcnMuXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqL1xuICBnZXQgcXVhcnRlcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudmFsdWVzLnF1YXJ0ZXJzIHx8IDAgOiBOYU47XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBtb250aHMuXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqL1xuICBnZXQgbW9udGhzKCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnZhbHVlcy5tb250aHMgfHwgMCA6IE5hTjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHdlZWtzXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqL1xuICBnZXQgd2Vla3MoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudmFsdWVzLndlZWtzIHx8IDAgOiBOYU47XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBkYXlzLlxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKi9cbiAgZ2V0IGRheXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudmFsdWVzLmRheXMgfHwgMCA6IE5hTjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGhvdXJzLlxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKi9cbiAgZ2V0IGhvdXJzKCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnZhbHVlcy5ob3VycyB8fCAwIDogTmFOO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgbWludXRlcy5cbiAgICogQHR5cGUge251bWJlcn1cbiAgICovXG4gIGdldCBtaW51dGVzKCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnZhbHVlcy5taW51dGVzIHx8IDAgOiBOYU47XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBzZWNvbmRzLlxuICAgKiBAcmV0dXJuIHtudW1iZXJ9XG4gICAqL1xuICBnZXQgc2Vjb25kcygpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy52YWx1ZXMuc2Vjb25kcyB8fCAwIDogTmFOO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgbWlsbGlzZWNvbmRzLlxuICAgKiBAcmV0dXJuIHtudW1iZXJ9XG4gICAqL1xuICBnZXQgbWlsbGlzZWNvbmRzKCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnZhbHVlcy5taWxsaXNlY29uZHMgfHwgMCA6IE5hTjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIER1cmF0aW9uIGlzIGludmFsaWQuIEludmFsaWQgZHVyYXRpb25zIGFyZSByZXR1cm5lZCBieSBkaWZmIG9wZXJhdGlvbnNcbiAgICogb24gaW52YWxpZCBEYXRlVGltZXMgb3IgSW50ZXJ2YWxzLlxuICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgKi9cbiAgZ2V0IGlzVmFsaWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW52YWxpZCA9PT0gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIGVycm9yIGNvZGUgaWYgdGhpcyBEdXJhdGlvbiBiZWNhbWUgaW52YWxpZCwgb3IgbnVsbCBpZiB0aGUgRHVyYXRpb24gaXMgdmFsaWRcbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgZ2V0IGludmFsaWRSZWFzb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuaW52YWxpZCA/IHRoaXMuaW52YWxpZC5yZWFzb24gOiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gZXhwbGFuYXRpb24gb2Ygd2h5IHRoaXMgRHVyYXRpb24gYmVjYW1lIGludmFsaWQsIG9yIG51bGwgaWYgdGhlIER1cmF0aW9uIGlzIHZhbGlkXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBnZXQgaW52YWxpZEV4cGxhbmF0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLmludmFsaWQgPyB0aGlzLmludmFsaWQuZXhwbGFuYXRpb24gOiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEVxdWFsaXR5IGNoZWNrXG4gICAqIFR3byBEdXJhdGlvbnMgYXJlIGVxdWFsIGlmZiB0aGV5IGhhdmUgdGhlIHNhbWUgdW5pdHMgYW5kIHRoZSBzYW1lIHZhbHVlcyBmb3IgZWFjaCB1bml0LlxuICAgKiBAcGFyYW0ge0R1cmF0aW9ufSBvdGhlclxuICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgKi9cbiAgZXF1YWxzKG90aGVyKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQgfHwgIW90aGVyLmlzVmFsaWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMubG9jLmVxdWFscyhvdGhlci5sb2MpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZXEodjEsIHYyKSB7XG4gICAgICAvLyBDb25zaWRlciAwIGFuZCB1bmRlZmluZWQgYXMgZXF1YWxcbiAgICAgIGlmICh2MSA9PT0gdW5kZWZpbmVkIHx8IHYxID09PSAwKSByZXR1cm4gdjIgPT09IHVuZGVmaW5lZCB8fCB2MiA9PT0gMDtcbiAgICAgIHJldHVybiB2MSA9PT0gdjI7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCB1IG9mIG9yZGVyZWRVbml0cykge1xuICAgICAgaWYgKCFlcSh0aGlzLnZhbHVlc1t1XSwgb3RoZXIudmFsdWVzW3VdKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG4iLCAiaW1wb3J0IERhdGVUaW1lLCB7IGZyaWVuZGx5RGF0ZVRpbWUgfSBmcm9tIFwiLi9kYXRldGltZS5qc1wiO1xuaW1wb3J0IER1cmF0aW9uIGZyb20gXCIuL2R1cmF0aW9uLmpzXCI7XG5pbXBvcnQgU2V0dGluZ3MgZnJvbSBcIi4vc2V0dGluZ3MuanNcIjtcbmltcG9ydCB7IEludmFsaWRBcmd1bWVudEVycm9yLCBJbnZhbGlkSW50ZXJ2YWxFcnJvciB9IGZyb20gXCIuL2Vycm9ycy5qc1wiO1xuaW1wb3J0IEludmFsaWQgZnJvbSBcIi4vaW1wbC9pbnZhbGlkLmpzXCI7XG5cbmNvbnN0IElOVkFMSUQgPSBcIkludmFsaWQgSW50ZXJ2YWxcIjtcblxuLy8gY2hlY2tzIGlmIHRoZSBzdGFydCBpcyBlcXVhbCB0byBvciBiZWZvcmUgdGhlIGVuZFxuZnVuY3Rpb24gdmFsaWRhdGVTdGFydEVuZChzdGFydCwgZW5kKSB7XG4gIGlmICghc3RhcnQgfHwgIXN0YXJ0LmlzVmFsaWQpIHtcbiAgICByZXR1cm4gSW50ZXJ2YWwuaW52YWxpZChcIm1pc3Npbmcgb3IgaW52YWxpZCBzdGFydFwiKTtcbiAgfSBlbHNlIGlmICghZW5kIHx8ICFlbmQuaXNWYWxpZCkge1xuICAgIHJldHVybiBJbnRlcnZhbC5pbnZhbGlkKFwibWlzc2luZyBvciBpbnZhbGlkIGVuZFwiKTtcbiAgfSBlbHNlIGlmIChlbmQgPCBzdGFydCkge1xuICAgIHJldHVybiBJbnRlcnZhbC5pbnZhbGlkKFxuICAgICAgXCJlbmQgYmVmb3JlIHN0YXJ0XCIsXG4gICAgICBgVGhlIGVuZCBvZiBhbiBpbnRlcnZhbCBtdXN0IGJlIGFmdGVyIGl0cyBzdGFydCwgYnV0IHlvdSBoYWQgc3RhcnQ9JHtzdGFydC50b0lTTygpfSBhbmQgZW5kPSR7ZW5kLnRvSVNPKCl9YFxuICAgICk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuLyoqXG4gKiBBbiBJbnRlcnZhbCBvYmplY3QgcmVwcmVzZW50cyBhIGhhbGYtb3BlbiBpbnRlcnZhbCBvZiB0aW1lLCB3aGVyZSBlYWNoIGVuZHBvaW50IGlzIGEge0BsaW5rIERhdGVUaW1lfS4gQ29uY2VwdHVhbGx5LCBpdCdzIGEgY29udGFpbmVyIGZvciB0aG9zZSB0d28gZW5kcG9pbnRzLCBhY2NvbXBhbmllZCBieSBtZXRob2RzIGZvciBjcmVhdGluZywgcGFyc2luZywgaW50ZXJyb2dhdGluZywgY29tcGFyaW5nLCB0cmFuc2Zvcm1pbmcsIGFuZCBmb3JtYXR0aW5nIHRoZW0uXG4gKlxuICogSGVyZSBpcyBhIGJyaWVmIG92ZXJ2aWV3IG9mIHRoZSBtb3N0IGNvbW1vbmx5IHVzZWQgbWV0aG9kcyBhbmQgZ2V0dGVycyBpbiBJbnRlcnZhbDpcbiAqXG4gKiAqICoqQ3JlYXRpb24qKiBUbyBjcmVhdGUgYW4gSW50ZXJ2YWwsIHVzZSB7QGxpbmsgSW50ZXJ2YWwjZnJvbURhdGVUaW1lc30sIHtAbGluayBJbnRlcnZhbCNhZnRlcn0sIHtAbGluayBJbnRlcnZhbCNiZWZvcmV9LCBvciB7QGxpbmsgSW50ZXJ2YWwjZnJvbUlTT30uXG4gKiAqICoqQWNjZXNzb3JzKiogVXNlIHtAbGluayBJbnRlcnZhbCNzdGFydH0gYW5kIHtAbGluayBJbnRlcnZhbCNlbmR9IHRvIGdldCB0aGUgc3RhcnQgYW5kIGVuZC5cbiAqICogKipJbnRlcnJvZ2F0aW9uKiogVG8gYW5hbHl6ZSB0aGUgSW50ZXJ2YWwsIHVzZSB7QGxpbmsgSW50ZXJ2YWwjY291bnR9LCB7QGxpbmsgSW50ZXJ2YWwjbGVuZ3RofSwge0BsaW5rIEludGVydmFsI2hhc1NhbWV9LCB7QGxpbmsgSW50ZXJ2YWwjY29udGFpbnN9LCB7QGxpbmsgSW50ZXJ2YWwjaXNBZnRlcn0sIG9yIHtAbGluayBJbnRlcnZhbCNpc0JlZm9yZX0uXG4gKiAqICoqVHJhbnNmb3JtYXRpb24qKiBUbyBjcmVhdGUgb3RoZXIgSW50ZXJ2YWxzIG91dCBvZiB0aGlzIG9uZSwgdXNlIHtAbGluayBJbnRlcnZhbCNzZXR9LCB7QGxpbmsgSW50ZXJ2YWwjc3BsaXRBdH0sIHtAbGluayBJbnRlcnZhbCNzcGxpdEJ5fSwge0BsaW5rIEludGVydmFsI2RpdmlkZUVxdWFsbHl9LCB7QGxpbmsgSW50ZXJ2YWwjbWVyZ2V9LCB7QGxpbmsgSW50ZXJ2YWwjeG9yfSwge0BsaW5rIEludGVydmFsI3VuaW9ufSwge0BsaW5rIEludGVydmFsI2ludGVyc2VjdGlvbn0sIG9yIHtAbGluayBJbnRlcnZhbCNkaWZmZXJlbmNlfS5cbiAqICogKipDb21wYXJpc29uKiogVG8gY29tcGFyZSB0aGlzIEludGVydmFsIHRvIGFub3RoZXIgb25lLCB1c2Uge0BsaW5rIEludGVydmFsI2VxdWFsc30sIHtAbGluayBJbnRlcnZhbCNvdmVybGFwc30sIHtAbGluayBJbnRlcnZhbCNhYnV0c1N0YXJ0fSwge0BsaW5rIEludGVydmFsI2FidXRzRW5kfSwge0BsaW5rIEludGVydmFsI2VuZ3VsZnN9XG4gKiAqICoqT3V0cHV0KiogVG8gY29udmVydCB0aGUgSW50ZXJ2YWwgaW50byBvdGhlciByZXByZXNlbnRhdGlvbnMsIHNlZSB7QGxpbmsgSW50ZXJ2YWwjdG9TdHJpbmd9LCB7QGxpbmsgSW50ZXJ2YWwjdG9JU099LCB7QGxpbmsgSW50ZXJ2YWwjdG9JU09EYXRlfSwge0BsaW5rIEludGVydmFsI3RvSVNPVGltZX0sIHtAbGluayBJbnRlcnZhbCN0b0Zvcm1hdH0sIGFuZCB7QGxpbmsgSW50ZXJ2YWwjdG9EdXJhdGlvbn0uXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEludGVydmFsIHtcbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihjb25maWcpIHtcbiAgICAvKipcbiAgICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICAgKi9cbiAgICB0aGlzLnMgPSBjb25maWcuc3RhcnQ7XG4gICAgLyoqXG4gICAgICogQGFjY2VzcyBwcml2YXRlXG4gICAgICovXG4gICAgdGhpcy5lID0gY29uZmlnLmVuZDtcbiAgICAvKipcbiAgICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICAgKi9cbiAgICB0aGlzLmludmFsaWQgPSBjb25maWcuaW52YWxpZCB8fCBudWxsO1xuICAgIC8qKlxuICAgICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAgICAqL1xuICAgIHRoaXMuaXNMdXhvbkludGVydmFsID0gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYW4gaW52YWxpZCBJbnRlcnZhbC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHJlYXNvbiAtIHNpbXBsZSBzdHJpbmcgb2Ygd2h5IHRoaXMgSW50ZXJ2YWwgaXMgaW52YWxpZC4gU2hvdWxkIG5vdCBjb250YWluIHBhcmFtZXRlcnMgb3IgYW55dGhpbmcgZWxzZSBkYXRhLWRlcGVuZGVudFxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2V4cGxhbmF0aW9uPW51bGxdIC0gbG9uZ2VyIGV4cGxhbmF0aW9uLCBtYXkgaW5jbHVkZSBwYXJhbWV0ZXJzIGFuZCBvdGhlciB1c2VmdWwgZGVidWdnaW5nIGluZm9ybWF0aW9uXG4gICAqIEByZXR1cm4ge0ludGVydmFsfVxuICAgKi9cbiAgc3RhdGljIGludmFsaWQocmVhc29uLCBleHBsYW5hdGlvbiA9IG51bGwpIHtcbiAgICBpZiAoIXJlYXNvbikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKFwibmVlZCB0byBzcGVjaWZ5IGEgcmVhc29uIHRoZSBJbnRlcnZhbCBpcyBpbnZhbGlkXCIpO1xuICAgIH1cblxuICAgIGNvbnN0IGludmFsaWQgPSByZWFzb24gaW5zdGFuY2VvZiBJbnZhbGlkID8gcmVhc29uIDogbmV3IEludmFsaWQocmVhc29uLCBleHBsYW5hdGlvbik7XG5cbiAgICBpZiAoU2V0dGluZ3MudGhyb3dPbkludmFsaWQpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkSW50ZXJ2YWxFcnJvcihpbnZhbGlkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5ldyBJbnRlcnZhbCh7IGludmFsaWQgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhbiBJbnRlcnZhbCBmcm9tIGEgc3RhcnQgRGF0ZVRpbWUgYW5kIGFuIGVuZCBEYXRlVGltZS4gSW5jbHVzaXZlIG9mIHRoZSBzdGFydCBidXQgbm90IHRoZSBlbmQuXG4gICAqIEBwYXJhbSB7RGF0ZVRpbWV8RGF0ZXxPYmplY3R9IHN0YXJ0XG4gICAqIEBwYXJhbSB7RGF0ZVRpbWV8RGF0ZXxPYmplY3R9IGVuZFxuICAgKiBAcmV0dXJuIHtJbnRlcnZhbH1cbiAgICovXG4gIHN0YXRpYyBmcm9tRGF0ZVRpbWVzKHN0YXJ0LCBlbmQpIHtcbiAgICBjb25zdCBidWlsdFN0YXJ0ID0gZnJpZW5kbHlEYXRlVGltZShzdGFydCksXG4gICAgICBidWlsdEVuZCA9IGZyaWVuZGx5RGF0ZVRpbWUoZW5kKTtcblxuICAgIGNvbnN0IHZhbGlkYXRlRXJyb3IgPSB2YWxpZGF0ZVN0YXJ0RW5kKGJ1aWx0U3RhcnQsIGJ1aWx0RW5kKTtcblxuICAgIGlmICh2YWxpZGF0ZUVycm9yID09IG51bGwpIHtcbiAgICAgIHJldHVybiBuZXcgSW50ZXJ2YWwoe1xuICAgICAgICBzdGFydDogYnVpbHRTdGFydCxcbiAgICAgICAgZW5kOiBidWlsdEVuZCxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdmFsaWRhdGVFcnJvcjtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGFuIEludGVydmFsIGZyb20gYSBzdGFydCBEYXRlVGltZSBhbmQgYSBEdXJhdGlvbiB0byBleHRlbmQgdG8uXG4gICAqIEBwYXJhbSB7RGF0ZVRpbWV8RGF0ZXxPYmplY3R9IHN0YXJ0XG4gICAqIEBwYXJhbSB7RHVyYXRpb258T2JqZWN0fG51bWJlcn0gZHVyYXRpb24gLSB0aGUgbGVuZ3RoIG9mIHRoZSBJbnRlcnZhbC5cbiAgICogQHJldHVybiB7SW50ZXJ2YWx9XG4gICAqL1xuICBzdGF0aWMgYWZ0ZXIoc3RhcnQsIGR1cmF0aW9uKSB7XG4gICAgY29uc3QgZHVyID0gRHVyYXRpb24uZnJvbUR1cmF0aW9uTGlrZShkdXJhdGlvbiksXG4gICAgICBkdCA9IGZyaWVuZGx5RGF0ZVRpbWUoc3RhcnQpO1xuICAgIHJldHVybiBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKGR0LCBkdC5wbHVzKGR1cikpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhbiBJbnRlcnZhbCBmcm9tIGFuIGVuZCBEYXRlVGltZSBhbmQgYSBEdXJhdGlvbiB0byBleHRlbmQgYmFja3dhcmRzIHRvLlxuICAgKiBAcGFyYW0ge0RhdGVUaW1lfERhdGV8T2JqZWN0fSBlbmRcbiAgICogQHBhcmFtIHtEdXJhdGlvbnxPYmplY3R8bnVtYmVyfSBkdXJhdGlvbiAtIHRoZSBsZW5ndGggb2YgdGhlIEludGVydmFsLlxuICAgKiBAcmV0dXJuIHtJbnRlcnZhbH1cbiAgICovXG4gIHN0YXRpYyBiZWZvcmUoZW5kLCBkdXJhdGlvbikge1xuICAgIGNvbnN0IGR1ciA9IER1cmF0aW9uLmZyb21EdXJhdGlvbkxpa2UoZHVyYXRpb24pLFxuICAgICAgZHQgPSBmcmllbmRseURhdGVUaW1lKGVuZCk7XG4gICAgcmV0dXJuIEludGVydmFsLmZyb21EYXRlVGltZXMoZHQubWludXMoZHVyKSwgZHQpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhbiBJbnRlcnZhbCBmcm9tIGFuIElTTyA4NjAxIHN0cmluZy5cbiAgICogQWNjZXB0cyBgPHN0YXJ0Pi88ZW5kPmAsIGA8c3RhcnQ+LzxkdXJhdGlvbj5gLCBhbmQgYDxkdXJhdGlvbj4vPGVuZD5gIGZvcm1hdHMuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IC0gdGhlIElTTyBzdHJpbmcgdG8gcGFyc2VcbiAgICogQHBhcmFtIHtPYmplY3R9IFtvcHRzXSAtIG9wdGlvbnMgdG8gcGFzcyB7QGxpbmsgRGF0ZVRpbWUjZnJvbUlTT30gYW5kIG9wdGlvbmFsbHkge0BsaW5rIER1cmF0aW9uI2Zyb21JU099XG4gICAqIEBzZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPXzg2MDEjVGltZV9pbnRlcnZhbHNcbiAgICogQHJldHVybiB7SW50ZXJ2YWx9XG4gICAqL1xuICBzdGF0aWMgZnJvbUlTTyh0ZXh0LCBvcHRzKSB7XG4gICAgY29uc3QgW3MsIGVdID0gKHRleHQgfHwgXCJcIikuc3BsaXQoXCIvXCIsIDIpO1xuICAgIGlmIChzICYmIGUpIHtcbiAgICAgIGxldCBzdGFydCwgc3RhcnRJc1ZhbGlkO1xuICAgICAgdHJ5IHtcbiAgICAgICAgc3RhcnQgPSBEYXRlVGltZS5mcm9tSVNPKHMsIG9wdHMpO1xuICAgICAgICBzdGFydElzVmFsaWQgPSBzdGFydC5pc1ZhbGlkO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBzdGFydElzVmFsaWQgPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgbGV0IGVuZCwgZW5kSXNWYWxpZDtcbiAgICAgIHRyeSB7XG4gICAgICAgIGVuZCA9IERhdGVUaW1lLmZyb21JU08oZSwgb3B0cyk7XG4gICAgICAgIGVuZElzVmFsaWQgPSBlbmQuaXNWYWxpZDtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgZW5kSXNWYWxpZCA9IGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBpZiAoc3RhcnRJc1ZhbGlkICYmIGVuZElzVmFsaWQpIHtcbiAgICAgICAgcmV0dXJuIEludGVydmFsLmZyb21EYXRlVGltZXMoc3RhcnQsIGVuZCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChzdGFydElzVmFsaWQpIHtcbiAgICAgICAgY29uc3QgZHVyID0gRHVyYXRpb24uZnJvbUlTTyhlLCBvcHRzKTtcbiAgICAgICAgaWYgKGR1ci5pc1ZhbGlkKSB7XG4gICAgICAgICAgcmV0dXJuIEludGVydmFsLmFmdGVyKHN0YXJ0LCBkdXIpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGVuZElzVmFsaWQpIHtcbiAgICAgICAgY29uc3QgZHVyID0gRHVyYXRpb24uZnJvbUlTTyhzLCBvcHRzKTtcbiAgICAgICAgaWYgKGR1ci5pc1ZhbGlkKSB7XG4gICAgICAgICAgcmV0dXJuIEludGVydmFsLmJlZm9yZShlbmQsIGR1cik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIEludGVydmFsLmludmFsaWQoXCJ1bnBhcnNhYmxlXCIsIGB0aGUgaW5wdXQgXCIke3RleHR9XCIgY2FuJ3QgYmUgcGFyc2VkIGFzIElTTyA4NjAxYCk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgYW4gb2JqZWN0IGlzIGFuIEludGVydmFsLiBXb3JrcyBhY3Jvc3MgY29udGV4dCBib3VuZGFyaWVzXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBvXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqL1xuICBzdGF0aWMgaXNJbnRlcnZhbChvKSB7XG4gICAgcmV0dXJuIChvICYmIG8uaXNMdXhvbkludGVydmFsKSB8fCBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBzdGFydCBvZiB0aGUgSW50ZXJ2YWxcbiAgICogQHR5cGUge0RhdGVUaW1lfVxuICAgKi9cbiAgZ2V0IHN0YXJ0KCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnMgOiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGVuZCBvZiB0aGUgSW50ZXJ2YWxcbiAgICogQHR5cGUge0RhdGVUaW1lfVxuICAgKi9cbiAgZ2V0IGVuZCgpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5lIDogbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCdzIGVuZCBpcyBhdCBsZWFzdCBpdHMgc3RhcnQsIG1lYW5pbmcgdGhhdCB0aGUgSW50ZXJ2YWwgaXNuJ3QgJ2JhY2t3YXJkcycuXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKi9cbiAgZ2V0IGlzVmFsaWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW52YWxpZFJlYXNvbiA9PT0gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIGVycm9yIGNvZGUgaWYgdGhpcyBJbnRlcnZhbCBpcyBpbnZhbGlkLCBvciBudWxsIGlmIHRoZSBJbnRlcnZhbCBpcyB2YWxpZFxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKi9cbiAgZ2V0IGludmFsaWRSZWFzb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuaW52YWxpZCA/IHRoaXMuaW52YWxpZC5yZWFzb24gOiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gZXhwbGFuYXRpb24gb2Ygd2h5IHRoaXMgSW50ZXJ2YWwgYmVjYW1lIGludmFsaWQsIG9yIG51bGwgaWYgdGhlIEludGVydmFsIGlzIHZhbGlkXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBnZXQgaW52YWxpZEV4cGxhbmF0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLmludmFsaWQgPyB0aGlzLmludmFsaWQuZXhwbGFuYXRpb24gOiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGxlbmd0aCBvZiB0aGUgSW50ZXJ2YWwgaW4gdGhlIHNwZWNpZmllZCB1bml0LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdW5pdCAtIHRoZSB1bml0IChzdWNoIGFzICdob3Vycycgb3IgJ2RheXMnKSB0byByZXR1cm4gdGhlIGxlbmd0aCBpbi5cbiAgICogQHJldHVybiB7bnVtYmVyfVxuICAgKi9cbiAgbGVuZ3RoKHVuaXQgPSBcIm1pbGxpc2Vjb25kc1wiKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudG9EdXJhdGlvbiguLi5bdW5pdF0pLmdldCh1bml0KSA6IE5hTjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBjb3VudCBvZiBtaW51dGVzLCBob3VycywgZGF5cywgbW9udGhzLCBvciB5ZWFycyBpbmNsdWRlZCBpbiB0aGUgSW50ZXJ2YWwsIGV2ZW4gaW4gcGFydC5cbiAgICogVW5saWtlIHtAbGluayBJbnRlcnZhbCNsZW5ndGh9IHRoaXMgY291bnRzIHNlY3Rpb25zIG9mIHRoZSBjYWxlbmRhciwgbm90IHBlcmlvZHMgb2YgdGltZSwgZS5nLiBzcGVjaWZ5aW5nICdkYXknXG4gICAqIGFza3MgJ3doYXQgZGF0ZXMgYXJlIGluY2x1ZGVkIGluIHRoaXMgaW50ZXJ2YWw/Jywgbm90ICdob3cgbWFueSBkYXlzIGxvbmcgaXMgdGhpcyBpbnRlcnZhbD8nXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbdW5pdD0nbWlsbGlzZWNvbmRzJ10gLSB0aGUgdW5pdCBvZiB0aW1lIHRvIGNvdW50LlxuICAgKiBAcmV0dXJuIHtudW1iZXJ9XG4gICAqL1xuICBjb3VudCh1bml0ID0gXCJtaWxsaXNlY29uZHNcIikge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gTmFOO1xuICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5zdGFydC5zdGFydE9mKHVuaXQpLFxuICAgICAgZW5kID0gdGhpcy5lbmQuc3RhcnRPZih1bml0KTtcbiAgICByZXR1cm4gTWF0aC5mbG9vcihlbmQuZGlmZihzdGFydCwgdW5pdCkuZ2V0KHVuaXQpKSArIDE7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB3aGV0aGVyIHRoaXMgSW50ZXJ2YWwncyBzdGFydCBhbmQgZW5kIGFyZSBib3RoIGluIHRoZSBzYW1lIHVuaXQgb2YgdGltZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gdW5pdCAtIHRoZSB1bml0IG9mIHRpbWUgdG8gY2hlY2sgc2FtZW5lc3Mgb25cbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICovXG4gIGhhc1NhbWUodW5pdCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmlzRW1wdHkoKSB8fCB0aGlzLmUubWludXMoMSkuaGFzU2FtZSh0aGlzLnMsIHVuaXQpIDogZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCBoYXMgdGhlIHNhbWUgc3RhcnQgYW5kIGVuZCBEYXRlVGltZXMuXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqL1xuICBpc0VtcHR5KCkge1xuICAgIHJldHVybiB0aGlzLnMudmFsdWVPZigpID09PSB0aGlzLmUudmFsdWVPZigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB3aGV0aGVyIHRoaXMgSW50ZXJ2YWwncyBzdGFydCBpcyBhZnRlciB0aGUgc3BlY2lmaWVkIERhdGVUaW1lLlxuICAgKiBAcGFyYW0ge0RhdGVUaW1lfSBkYXRlVGltZVxuICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgKi9cbiAgaXNBZnRlcihkYXRlVGltZSkge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRoaXMucyA+IGRhdGVUaW1lO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB3aGV0aGVyIHRoaXMgSW50ZXJ2YWwncyBlbmQgaXMgYmVmb3JlIHRoZSBzcGVjaWZpZWQgRGF0ZVRpbWUuXG4gICAqIEBwYXJhbSB7RGF0ZVRpbWV9IGRhdGVUaW1lXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqL1xuICBpc0JlZm9yZShkYXRlVGltZSkge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRoaXMuZSA8PSBkYXRlVGltZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gd2hldGhlciB0aGlzIEludGVydmFsIGNvbnRhaW5zIHRoZSBzcGVjaWZpZWQgRGF0ZVRpbWUuXG4gICAqIEBwYXJhbSB7RGF0ZVRpbWV9IGRhdGVUaW1lXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqL1xuICBjb250YWlucyhkYXRlVGltZSkge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRoaXMucyA8PSBkYXRlVGltZSAmJiB0aGlzLmUgPiBkYXRlVGltZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBcIlNldHNcIiB0aGUgc3RhcnQgYW5kL29yIGVuZCBkYXRlcy4gUmV0dXJucyBhIG5ld2x5LWNvbnN0cnVjdGVkIEludGVydmFsLlxuICAgKiBAcGFyYW0ge09iamVjdH0gdmFsdWVzIC0gdGhlIHZhbHVlcyB0byBzZXRcbiAgICogQHBhcmFtIHtEYXRlVGltZX0gdmFsdWVzLnN0YXJ0IC0gdGhlIHN0YXJ0aW5nIERhdGVUaW1lXG4gICAqIEBwYXJhbSB7RGF0ZVRpbWV9IHZhbHVlcy5lbmQgLSB0aGUgZW5kaW5nIERhdGVUaW1lXG4gICAqIEByZXR1cm4ge0ludGVydmFsfVxuICAgKi9cbiAgc2V0KHsgc3RhcnQsIGVuZCB9ID0ge30pIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7XG4gICAgcmV0dXJuIEludGVydmFsLmZyb21EYXRlVGltZXMoc3RhcnQgfHwgdGhpcy5zLCBlbmQgfHwgdGhpcy5lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGxpdCB0aGlzIEludGVydmFsIGF0IGVhY2ggb2YgdGhlIHNwZWNpZmllZCBEYXRlVGltZXNcbiAgICogQHBhcmFtIHsuLi5EYXRlVGltZX0gZGF0ZVRpbWVzIC0gdGhlIHVuaXQgb2YgdGltZSB0byBjb3VudC5cbiAgICogQHJldHVybiB7QXJyYXl9XG4gICAqL1xuICBzcGxpdEF0KC4uLmRhdGVUaW1lcykge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gW107XG4gICAgY29uc3Qgc29ydGVkID0gZGF0ZVRpbWVzXG4gICAgICAgIC5tYXAoZnJpZW5kbHlEYXRlVGltZSlcbiAgICAgICAgLmZpbHRlcigoZCkgPT4gdGhpcy5jb250YWlucyhkKSlcbiAgICAgICAgLnNvcnQoKSxcbiAgICAgIHJlc3VsdHMgPSBbXTtcbiAgICBsZXQgeyBzIH0gPSB0aGlzLFxuICAgICAgaSA9IDA7XG5cbiAgICB3aGlsZSAocyA8IHRoaXMuZSkge1xuICAgICAgY29uc3QgYWRkZWQgPSBzb3J0ZWRbaV0gfHwgdGhpcy5lLFxuICAgICAgICBuZXh0ID0gK2FkZGVkID4gK3RoaXMuZSA/IHRoaXMuZSA6IGFkZGVkO1xuICAgICAgcmVzdWx0cy5wdXNoKEludGVydmFsLmZyb21EYXRlVGltZXMocywgbmV4dCkpO1xuICAgICAgcyA9IG5leHQ7XG4gICAgICBpICs9IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdHM7XG4gIH1cblxuICAvKipcbiAgICogU3BsaXQgdGhpcyBJbnRlcnZhbCBpbnRvIHNtYWxsZXIgSW50ZXJ2YWxzLCBlYWNoIG9mIHRoZSBzcGVjaWZpZWQgbGVuZ3RoLlxuICAgKiBMZWZ0IG92ZXIgdGltZSBpcyBncm91cGVkIGludG8gYSBzbWFsbGVyIGludGVydmFsXG4gICAqIEBwYXJhbSB7RHVyYXRpb258T2JqZWN0fG51bWJlcn0gZHVyYXRpb24gLSBUaGUgbGVuZ3RoIG9mIGVhY2ggcmVzdWx0aW5nIGludGVydmFsLlxuICAgKiBAcmV0dXJuIHtBcnJheX1cbiAgICovXG4gIHNwbGl0QnkoZHVyYXRpb24pIHtcbiAgICBjb25zdCBkdXIgPSBEdXJhdGlvbi5mcm9tRHVyYXRpb25MaWtlKGR1cmF0aW9uKTtcblxuICAgIGlmICghdGhpcy5pc1ZhbGlkIHx8ICFkdXIuaXNWYWxpZCB8fCBkdXIuYXMoXCJtaWxsaXNlY29uZHNcIikgPT09IDApIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBsZXQgeyBzIH0gPSB0aGlzLFxuICAgICAgaWR4ID0gMSxcbiAgICAgIG5leHQ7XG5cbiAgICBjb25zdCByZXN1bHRzID0gW107XG4gICAgd2hpbGUgKHMgPCB0aGlzLmUpIHtcbiAgICAgIGNvbnN0IGFkZGVkID0gdGhpcy5zdGFydC5wbHVzKGR1ci5tYXBVbml0cygoeCkgPT4geCAqIGlkeCkpO1xuICAgICAgbmV4dCA9ICthZGRlZCA+ICt0aGlzLmUgPyB0aGlzLmUgOiBhZGRlZDtcbiAgICAgIHJlc3VsdHMucHVzaChJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKHMsIG5leHQpKTtcbiAgICAgIHMgPSBuZXh0O1xuICAgICAgaWR4ICs9IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdHM7XG4gIH1cblxuICAvKipcbiAgICogU3BsaXQgdGhpcyBJbnRlcnZhbCBpbnRvIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIHNtYWxsZXIgaW50ZXJ2YWxzLlxuICAgKiBAcGFyYW0ge251bWJlcn0gbnVtYmVyT2ZQYXJ0cyAtIFRoZSBudW1iZXIgb2YgSW50ZXJ2YWxzIHRvIGRpdmlkZSB0aGUgSW50ZXJ2YWwgaW50by5cbiAgICogQHJldHVybiB7QXJyYXl9XG4gICAqL1xuICBkaXZpZGVFcXVhbGx5KG51bWJlck9mUGFydHMpIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIFtdO1xuICAgIHJldHVybiB0aGlzLnNwbGl0QnkodGhpcy5sZW5ndGgoKSAvIG51bWJlck9mUGFydHMpLnNsaWNlKDAsIG51bWJlck9mUGFydHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB3aGV0aGVyIHRoaXMgSW50ZXJ2YWwgb3ZlcmxhcHMgd2l0aCB0aGUgc3BlY2lmaWVkIEludGVydmFsXG4gICAqIEBwYXJhbSB7SW50ZXJ2YWx9IG90aGVyXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqL1xuICBvdmVybGFwcyhvdGhlcikge1xuICAgIHJldHVybiB0aGlzLmUgPiBvdGhlci5zICYmIHRoaXMucyA8IG90aGVyLmU7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCdzIGVuZCBpcyBhZGphY2VudCB0byB0aGUgc3BlY2lmaWVkIEludGVydmFsJ3Mgc3RhcnQuXG4gICAqIEBwYXJhbSB7SW50ZXJ2YWx9IG90aGVyXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqL1xuICBhYnV0c1N0YXJ0KG90aGVyKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gK3RoaXMuZSA9PT0gK290aGVyLnM7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCdzIHN0YXJ0IGlzIGFkamFjZW50IHRvIHRoZSBzcGVjaWZpZWQgSW50ZXJ2YWwncyBlbmQuXG4gICAqIEBwYXJhbSB7SW50ZXJ2YWx9IG90aGVyXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqL1xuICBhYnV0c0VuZChvdGhlcikge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuICtvdGhlci5lID09PSArdGhpcy5zO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB3aGV0aGVyIHRoaXMgSW50ZXJ2YWwgZW5ndWxmcyB0aGUgc3RhcnQgYW5kIGVuZCBvZiB0aGUgc3BlY2lmaWVkIEludGVydmFsLlxuICAgKiBAcGFyYW0ge0ludGVydmFsfSBvdGhlclxuICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgKi9cbiAgZW5ndWxmcyhvdGhlcikge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRoaXMucyA8PSBvdGhlci5zICYmIHRoaXMuZSA+PSBvdGhlci5lO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB3aGV0aGVyIHRoaXMgSW50ZXJ2YWwgaGFzIHRoZSBzYW1lIHN0YXJ0IGFuZCBlbmQgYXMgdGhlIHNwZWNpZmllZCBJbnRlcnZhbC5cbiAgICogQHBhcmFtIHtJbnRlcnZhbH0gb3RoZXJcbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICovXG4gIGVxdWFscyhvdGhlcikge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkIHx8ICFvdGhlci5pc1ZhbGlkKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMucy5lcXVhbHMob3RoZXIucykgJiYgdGhpcy5lLmVxdWFscyhvdGhlci5lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYW4gSW50ZXJ2YWwgcmVwcmVzZW50aW5nIHRoZSBpbnRlcnNlY3Rpb24gb2YgdGhpcyBJbnRlcnZhbCBhbmQgdGhlIHNwZWNpZmllZCBJbnRlcnZhbC5cbiAgICogU3BlY2lmaWNhbGx5LCB0aGUgcmVzdWx0aW5nIEludGVydmFsIGhhcyB0aGUgbWF4aW11bSBzdGFydCB0aW1lIGFuZCB0aGUgbWluaW11bSBlbmQgdGltZSBvZiB0aGUgdHdvIEludGVydmFscy5cbiAgICogUmV0dXJucyBudWxsIGlmIHRoZSBpbnRlcnNlY3Rpb24gaXMgZW1wdHksIG1lYW5pbmcsIHRoZSBpbnRlcnZhbHMgZG9uJ3QgaW50ZXJzZWN0LlxuICAgKiBAcGFyYW0ge0ludGVydmFsfSBvdGhlclxuICAgKiBAcmV0dXJuIHtJbnRlcnZhbH1cbiAgICovXG4gIGludGVyc2VjdGlvbihvdGhlcikge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpcztcbiAgICBjb25zdCBzID0gdGhpcy5zID4gb3RoZXIucyA/IHRoaXMucyA6IG90aGVyLnMsXG4gICAgICBlID0gdGhpcy5lIDwgb3RoZXIuZSA/IHRoaXMuZSA6IG90aGVyLmU7XG5cbiAgICBpZiAocyA+PSBlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIEludGVydmFsLmZyb21EYXRlVGltZXMocywgZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhbiBJbnRlcnZhbCByZXByZXNlbnRpbmcgdGhlIHVuaW9uIG9mIHRoaXMgSW50ZXJ2YWwgYW5kIHRoZSBzcGVjaWZpZWQgSW50ZXJ2YWwuXG4gICAqIFNwZWNpZmljYWxseSwgdGhlIHJlc3VsdGluZyBJbnRlcnZhbCBoYXMgdGhlIG1pbmltdW0gc3RhcnQgdGltZSBhbmQgdGhlIG1heGltdW0gZW5kIHRpbWUgb2YgdGhlIHR3byBJbnRlcnZhbHMuXG4gICAqIEBwYXJhbSB7SW50ZXJ2YWx9IG90aGVyXG4gICAqIEByZXR1cm4ge0ludGVydmFsfVxuICAgKi9cbiAgdW5pb24ob3RoZXIpIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7XG4gICAgY29uc3QgcyA9IHRoaXMucyA8IG90aGVyLnMgPyB0aGlzLnMgOiBvdGhlci5zLFxuICAgICAgZSA9IHRoaXMuZSA+IG90aGVyLmUgPyB0aGlzLmUgOiBvdGhlci5lO1xuICAgIHJldHVybiBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKHMsIGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1lcmdlIGFuIGFycmF5IG9mIEludGVydmFscyBpbnRvIGEgZXF1aXZhbGVudCBtaW5pbWFsIHNldCBvZiBJbnRlcnZhbHMuXG4gICAqIENvbWJpbmVzIG92ZXJsYXBwaW5nIGFuZCBhZGphY2VudCBJbnRlcnZhbHMuXG4gICAqIEBwYXJhbSB7QXJyYXl9IGludGVydmFsc1xuICAgKiBAcmV0dXJuIHtBcnJheX1cbiAgICovXG4gIHN0YXRpYyBtZXJnZShpbnRlcnZhbHMpIHtcbiAgICBjb25zdCBbZm91bmQsIGZpbmFsXSA9IGludGVydmFsc1xuICAgICAgLnNvcnQoKGEsIGIpID0+IGEucyAtIGIucylcbiAgICAgIC5yZWR1Y2UoXG4gICAgICAgIChbc29mYXIsIGN1cnJlbnRdLCBpdGVtKSA9PiB7XG4gICAgICAgICAgaWYgKCFjdXJyZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gW3NvZmFyLCBpdGVtXTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGN1cnJlbnQub3ZlcmxhcHMoaXRlbSkgfHwgY3VycmVudC5hYnV0c1N0YXJ0KGl0ZW0pKSB7XG4gICAgICAgICAgICByZXR1cm4gW3NvZmFyLCBjdXJyZW50LnVuaW9uKGl0ZW0pXTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIFtzb2Zhci5jb25jYXQoW2N1cnJlbnRdKSwgaXRlbV07XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBbW10sIG51bGxdXG4gICAgICApO1xuICAgIGlmIChmaW5hbCkge1xuICAgICAgZm91bmQucHVzaChmaW5hbCk7XG4gICAgfVxuICAgIHJldHVybiBmb3VuZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYW4gYXJyYXkgb2YgSW50ZXJ2YWxzIHJlcHJlc2VudGluZyB0aGUgc3BhbnMgb2YgdGltZSB0aGF0IG9ubHkgYXBwZWFyIGluIG9uZSBvZiB0aGUgc3BlY2lmaWVkIEludGVydmFscy5cbiAgICogQHBhcmFtIHtBcnJheX0gaW50ZXJ2YWxzXG4gICAqIEByZXR1cm4ge0FycmF5fVxuICAgKi9cbiAgc3RhdGljIHhvcihpbnRlcnZhbHMpIHtcbiAgICBsZXQgc3RhcnQgPSBudWxsLFxuICAgICAgY3VycmVudENvdW50ID0gMDtcbiAgICBjb25zdCByZXN1bHRzID0gW10sXG4gICAgICBlbmRzID0gaW50ZXJ2YWxzLm1hcCgoaSkgPT4gW1xuICAgICAgICB7IHRpbWU6IGkucywgdHlwZTogXCJzXCIgfSxcbiAgICAgICAgeyB0aW1lOiBpLmUsIHR5cGU6IFwiZVwiIH0sXG4gICAgICBdKSxcbiAgICAgIGZsYXR0ZW5lZCA9IEFycmF5LnByb3RvdHlwZS5jb25jYXQoLi4uZW5kcyksXG4gICAgICBhcnIgPSBmbGF0dGVuZWQuc29ydCgoYSwgYikgPT4gYS50aW1lIC0gYi50aW1lKTtcblxuICAgIGZvciAoY29uc3QgaSBvZiBhcnIpIHtcbiAgICAgIGN1cnJlbnRDb3VudCArPSBpLnR5cGUgPT09IFwic1wiID8gMSA6IC0xO1xuXG4gICAgICBpZiAoY3VycmVudENvdW50ID09PSAxKSB7XG4gICAgICAgIHN0YXJ0ID0gaS50aW1lO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHN0YXJ0ICYmICtzdGFydCAhPT0gK2kudGltZSkge1xuICAgICAgICAgIHJlc3VsdHMucHVzaChJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKHN0YXJ0LCBpLnRpbWUpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN0YXJ0ID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gSW50ZXJ2YWwubWVyZ2UocmVzdWx0cyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGFuIEludGVydmFsIHJlcHJlc2VudGluZyB0aGUgc3BhbiBvZiB0aW1lIGluIHRoaXMgSW50ZXJ2YWwgdGhhdCBkb2Vzbid0IG92ZXJsYXAgd2l0aCBhbnkgb2YgdGhlIHNwZWNpZmllZCBJbnRlcnZhbHMuXG4gICAqIEBwYXJhbSB7Li4uSW50ZXJ2YWx9IGludGVydmFsc1xuICAgKiBAcmV0dXJuIHtBcnJheX1cbiAgICovXG4gIGRpZmZlcmVuY2UoLi4uaW50ZXJ2YWxzKSB7XG4gICAgcmV0dXJuIEludGVydmFsLnhvcihbdGhpc10uY29uY2F0KGludGVydmFscykpXG4gICAgICAubWFwKChpKSA9PiB0aGlzLmludGVyc2VjdGlvbihpKSlcbiAgICAgIC5maWx0ZXIoKGkpID0+IGkgJiYgIWkuaXNFbXB0eSgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgSW50ZXJ2YWwgYXBwcm9wcmlhdGUgZm9yIGRlYnVnZ2luZy5cbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgdG9TdHJpbmcoKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBJTlZBTElEO1xuICAgIHJldHVybiBgWyR7dGhpcy5zLnRvSVNPKCl9IFx1MjAxMyAke3RoaXMuZS50b0lTTygpfSlgO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gSVNPIDg2MDEtY29tcGxpYW50IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIEludGVydmFsLlxuICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT184NjAxI1RpbWVfaW50ZXJ2YWxzXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gVGhlIHNhbWUgb3B0aW9ucyBhcyB7QGxpbmsgRGF0ZVRpbWUjdG9JU099XG4gICAqIEByZXR1cm4ge3N0cmluZ31cbiAgICovXG4gIHRvSVNPKG9wdHMpIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIElOVkFMSUQ7XG4gICAgcmV0dXJuIGAke3RoaXMucy50b0lTTyhvcHRzKX0vJHt0aGlzLmUudG9JU08ob3B0cyl9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIElTTyA4NjAxLWNvbXBsaWFudCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgZGF0ZSBvZiB0aGlzIEludGVydmFsLlxuICAgKiBUaGUgdGltZSBjb21wb25lbnRzIGFyZSBpZ25vcmVkLlxuICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT184NjAxI1RpbWVfaW50ZXJ2YWxzXG4gICAqIEByZXR1cm4ge3N0cmluZ31cbiAgICovXG4gIHRvSVNPRGF0ZSgpIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIElOVkFMSUQ7XG4gICAgcmV0dXJuIGAke3RoaXMucy50b0lTT0RhdGUoKX0vJHt0aGlzLmUudG9JU09EYXRlKCl9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIElTTyA4NjAxLWNvbXBsaWFudCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGltZSBvZiB0aGlzIEludGVydmFsLlxuICAgKiBUaGUgZGF0ZSBjb21wb25lbnRzIGFyZSBpZ25vcmVkLlxuICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT184NjAxI1RpbWVfaW50ZXJ2YWxzXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gVGhlIHNhbWUgb3B0aW9ucyBhcyB7QGxpbmsgRGF0ZVRpbWUjdG9JU099XG4gICAqIEByZXR1cm4ge3N0cmluZ31cbiAgICovXG4gIHRvSVNPVGltZShvcHRzKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBJTlZBTElEO1xuICAgIHJldHVybiBgJHt0aGlzLnMudG9JU09UaW1lKG9wdHMpfS8ke3RoaXMuZS50b0lTT1RpbWUob3B0cyl9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgSW50ZXJ2YWwgZm9ybWF0dGVkIGFjY29yZGluZyB0byB0aGUgc3BlY2lmaWVkIGZvcm1hdCBzdHJpbmcuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBkYXRlRm9ybWF0IC0gdGhlIGZvcm1hdCBzdHJpbmcuIFRoaXMgc3RyaW5nIGZvcm1hdHMgdGhlIHN0YXJ0IGFuZCBlbmQgdGltZS4gU2VlIHtAbGluayBEYXRlVGltZSN0b0Zvcm1hdH0gZm9yIGRldGFpbHMuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9uc1xuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuc2VwYXJhdG9yID0gICcgXHUyMDEzICddIC0gYSBzZXBhcmF0b3IgdG8gcGxhY2UgYmV0d2VlbiB0aGUgc3RhcnQgYW5kIGVuZCByZXByZXNlbnRhdGlvbnNcbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgdG9Gb3JtYXQoZGF0ZUZvcm1hdCwgeyBzZXBhcmF0b3IgPSBcIiBcdTIwMTMgXCIgfSA9IHt9KSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBJTlZBTElEO1xuICAgIHJldHVybiBgJHt0aGlzLnMudG9Gb3JtYXQoZGF0ZUZvcm1hdCl9JHtzZXBhcmF0b3J9JHt0aGlzLmUudG9Gb3JtYXQoZGF0ZUZvcm1hdCl9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSBEdXJhdGlvbiByZXByZXNlbnRpbmcgdGhlIHRpbWUgc3Bhbm5lZCBieSB0aGlzIGludGVydmFsLlxuICAgKiBAcGFyYW0ge3N0cmluZ3xzdHJpbmdbXX0gW3VuaXQ9WydtaWxsaXNlY29uZHMnXV0gLSB0aGUgdW5pdCBvciB1bml0cyAoc3VjaCBhcyAnaG91cnMnIG9yICdkYXlzJykgdG8gaW5jbHVkZSBpbiB0aGUgZHVyYXRpb24uXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucyB0aGF0IGFmZmVjdCB0aGUgY3JlYXRpb24gb2YgdGhlIER1cmF0aW9uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5jb252ZXJzaW9uQWNjdXJhY3k9J2Nhc3VhbCddIC0gdGhlIGNvbnZlcnNpb24gc3lzdGVtIHRvIHVzZVxuICAgKiBAZXhhbXBsZSBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKGR0MSwgZHQyKS50b0R1cmF0aW9uKCkudG9PYmplY3QoKSAvLz0+IHsgbWlsbGlzZWNvbmRzOiA4ODQ4OTI1NyB9XG4gICAqIEBleGFtcGxlIEludGVydmFsLmZyb21EYXRlVGltZXMoZHQxLCBkdDIpLnRvRHVyYXRpb24oJ2RheXMnKS50b09iamVjdCgpIC8vPT4geyBkYXlzOiAxLjAyNDE4MTIxNTI3Nzc3NzggfVxuICAgKiBAZXhhbXBsZSBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKGR0MSwgZHQyKS50b0R1cmF0aW9uKFsnaG91cnMnLCAnbWludXRlcyddKS50b09iamVjdCgpIC8vPT4geyBob3VyczogMjQsIG1pbnV0ZXM6IDM0LjgyMDk1IH1cbiAgICogQGV4YW1wbGUgSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhkdDEsIGR0MikudG9EdXJhdGlvbihbJ2hvdXJzJywgJ21pbnV0ZXMnLCAnc2Vjb25kcyddKS50b09iamVjdCgpIC8vPT4geyBob3VyczogMjQsIG1pbnV0ZXM6IDM0LCBzZWNvbmRzOiA0OS4yNTcgfVxuICAgKiBAZXhhbXBsZSBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKGR0MSwgZHQyKS50b0R1cmF0aW9uKCdzZWNvbmRzJykudG9PYmplY3QoKSAvLz0+IHsgc2Vjb25kczogODg0ODkuMjU3IH1cbiAgICogQHJldHVybiB7RHVyYXRpb259XG4gICAqL1xuICB0b0R1cmF0aW9uKHVuaXQsIG9wdHMpIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkge1xuICAgICAgcmV0dXJuIER1cmF0aW9uLmludmFsaWQodGhpcy5pbnZhbGlkUmVhc29uKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZS5kaWZmKHRoaXMucywgdW5pdCwgb3B0cyk7XG4gIH1cblxuICAvKipcbiAgICogUnVuIG1hcEZuIG9uIHRoZSBpbnRlcnZhbCBzdGFydCBhbmQgZW5kLCByZXR1cm5pbmcgYSBuZXcgSW50ZXJ2YWwgZnJvbSB0aGUgcmVzdWx0aW5nIERhdGVUaW1lc1xuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBtYXBGblxuICAgKiBAcmV0dXJuIHtJbnRlcnZhbH1cbiAgICogQGV4YW1wbGUgSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhkdDEsIGR0MikubWFwRW5kcG9pbnRzKGVuZHBvaW50ID0+IGVuZHBvaW50LnRvVVRDKCkpXG4gICAqIEBleGFtcGxlIEludGVydmFsLmZyb21EYXRlVGltZXMoZHQxLCBkdDIpLm1hcEVuZHBvaW50cyhlbmRwb2ludCA9PiBlbmRwb2ludC5wbHVzKHsgaG91cnM6IDIgfSkpXG4gICAqL1xuICBtYXBFbmRwb2ludHMobWFwRm4pIHtcbiAgICByZXR1cm4gSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhtYXBGbih0aGlzLnMpLCBtYXBGbih0aGlzLmUpKTtcbiAgfVxufVxuIiwgImltcG9ydCBEYXRlVGltZSBmcm9tIFwiLi9kYXRldGltZS5qc1wiO1xuaW1wb3J0IFNldHRpbmdzIGZyb20gXCIuL3NldHRpbmdzLmpzXCI7XG5pbXBvcnQgTG9jYWxlIGZyb20gXCIuL2ltcGwvbG9jYWxlLmpzXCI7XG5pbXBvcnQgSUFOQVpvbmUgZnJvbSBcIi4vem9uZXMvSUFOQVpvbmUuanNcIjtcbmltcG9ydCB7IG5vcm1hbGl6ZVpvbmUgfSBmcm9tIFwiLi9pbXBsL3pvbmVVdGlsLmpzXCI7XG5cbmltcG9ydCB7IGhhc1JlbGF0aXZlIH0gZnJvbSBcIi4vaW1wbC91dGlsLmpzXCI7XG5cbi8qKlxuICogVGhlIEluZm8gY2xhc3MgY29udGFpbnMgc3RhdGljIG1ldGhvZHMgZm9yIHJldHJpZXZpbmcgZ2VuZXJhbCB0aW1lIGFuZCBkYXRlIHJlbGF0ZWQgZGF0YS4gRm9yIGV4YW1wbGUsIGl0IGhhcyBtZXRob2RzIGZvciBmaW5kaW5nIG91dCBpZiBhIHRpbWUgem9uZSBoYXMgYSBEU1QsIGZvciBsaXN0aW5nIHRoZSBtb250aHMgaW4gYW55IHN1cHBvcnRlZCBsb2NhbGUsIGFuZCBmb3IgZGlzY292ZXJpbmcgd2hpY2ggb2YgTHV4b24gZmVhdHVyZXMgYXJlIGF2YWlsYWJsZSBpbiB0aGUgY3VycmVudCBlbnZpcm9ubWVudC5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSW5mbyB7XG4gIC8qKlxuICAgKiBSZXR1cm4gd2hldGhlciB0aGUgc3BlY2lmaWVkIHpvbmUgY29udGFpbnMgYSBEU1QuXG4gICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFt6b25lPSdsb2NhbCddIC0gWm9uZSB0byBjaGVjay4gRGVmYXVsdHMgdG8gdGhlIGVudmlyb25tZW50J3MgbG9jYWwgem9uZS5cbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICovXG4gIHN0YXRpYyBoYXNEU1Qoem9uZSA9IFNldHRpbmdzLmRlZmF1bHRab25lKSB7XG4gICAgY29uc3QgcHJvdG8gPSBEYXRlVGltZS5ub3coKS5zZXRab25lKHpvbmUpLnNldCh7IG1vbnRoOiAxMiB9KTtcblxuICAgIHJldHVybiAhem9uZS5pc1VuaXZlcnNhbCAmJiBwcm90by5vZmZzZXQgIT09IHByb3RvLnNldCh7IG1vbnRoOiA2IH0pLm9mZnNldDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gd2hldGhlciB0aGUgc3BlY2lmaWVkIHpvbmUgaXMgYSB2YWxpZCBJQU5BIHNwZWNpZmllci5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHpvbmUgLSBab25lIHRvIGNoZWNrXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqL1xuICBzdGF0aWMgaXNWYWxpZElBTkFab25lKHpvbmUpIHtcbiAgICByZXR1cm4gSUFOQVpvbmUuaXNWYWxpZFpvbmUoem9uZSk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgdGhlIGlucHV0IGludG8gYSB7QGxpbmsgWm9uZX0gaW5zdGFuY2UuXG4gICAqXG4gICAqICogSWYgYGlucHV0YCBpcyBhbHJlYWR5IGEgWm9uZSBpbnN0YW5jZSwgaXQgaXMgcmV0dXJuZWQgdW5jaGFuZ2VkLlxuICAgKiAqIElmIGBpbnB1dGAgaXMgYSBzdHJpbmcgY29udGFpbmluZyBhIHZhbGlkIHRpbWUgem9uZSBuYW1lLCBhIFpvbmUgaW5zdGFuY2VcbiAgICogICB3aXRoIHRoYXQgbmFtZSBpcyByZXR1cm5lZC5cbiAgICogKiBJZiBgaW5wdXRgIGlzIGEgc3RyaW5nIHRoYXQgZG9lc24ndCByZWZlciB0byBhIGtub3duIHRpbWUgem9uZSwgYSBab25lXG4gICAqICAgaW5zdGFuY2Ugd2l0aCB7QGxpbmsgWm9uZSNpc1ZhbGlkfSA9PSBmYWxzZSBpcyByZXR1cm5lZC5cbiAgICogKiBJZiBgaW5wdXQgaXMgYSBudW1iZXIsIGEgWm9uZSBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgZml4ZWQgb2Zmc2V0XG4gICAqICAgaW4gbWludXRlcyBpcyByZXR1cm5lZC5cbiAgICogKiBJZiBgaW5wdXRgIGlzIGBudWxsYCBvciBgdW5kZWZpbmVkYCwgdGhlIGRlZmF1bHQgem9uZSBpcyByZXR1cm5lZC5cbiAgICogQHBhcmFtIHtzdHJpbmd8Wm9uZXxudW1iZXJ9IFtpbnB1dF0gLSB0aGUgdmFsdWUgdG8gYmUgY29udmVydGVkXG4gICAqIEByZXR1cm4ge1pvbmV9XG4gICAqL1xuICBzdGF0aWMgbm9ybWFsaXplWm9uZShpbnB1dCkge1xuICAgIHJldHVybiBub3JtYWxpemVab25lKGlucHV0LCBTZXR0aW5ncy5kZWZhdWx0Wm9uZSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGFuIGFycmF5IG9mIHN0YW5kYWxvbmUgbW9udGggbmFtZXMuXG4gICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvRGF0ZVRpbWVGb3JtYXRcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtsZW5ndGg9J2xvbmcnXSAtIHRoZSBsZW5ndGggb2YgdGhlIG1vbnRoIHJlcHJlc2VudGF0aW9uLCBzdWNoIGFzIFwibnVtZXJpY1wiLCBcIjItZGlnaXRcIiwgXCJuYXJyb3dcIiwgXCJzaG9ydFwiLCBcImxvbmdcIlxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnNcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZV0gLSB0aGUgbG9jYWxlIGNvZGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLm51bWJlcmluZ1N5c3RlbT1udWxsXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NPYmo9bnVsbF0gLSBhbiBleGlzdGluZyBsb2NhbGUgb2JqZWN0IHRvIHVzZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMub3V0cHV0Q2FsZW5kYXI9J2dyZWdvcnknXSAtIHRoZSBjYWxlbmRhclxuICAgKiBAZXhhbXBsZSBJbmZvLm1vbnRocygpWzBdIC8vPT4gJ0phbnVhcnknXG4gICAqIEBleGFtcGxlIEluZm8ubW9udGhzKCdzaG9ydCcpWzBdIC8vPT4gJ0phbidcbiAgICogQGV4YW1wbGUgSW5mby5tb250aHMoJ251bWVyaWMnKVswXSAvLz0+ICcxJ1xuICAgKiBAZXhhbXBsZSBJbmZvLm1vbnRocygnc2hvcnQnLCB7IGxvY2FsZTogJ2ZyLUNBJyB9IClbMF0gLy89PiAnamFudi4nXG4gICAqIEBleGFtcGxlIEluZm8ubW9udGhzKCdudW1lcmljJywgeyBsb2NhbGU6ICdhcicgfSlbMF0gLy89PiAnXHUwNjYxJ1xuICAgKiBAZXhhbXBsZSBJbmZvLm1vbnRocygnbG9uZycsIHsgb3V0cHV0Q2FsZW5kYXI6ICdpc2xhbWljJyB9KVswXSAvLz0+ICdSYWJpXHUwMkJCIEknXG4gICAqIEByZXR1cm4ge0FycmF5fVxuICAgKi9cbiAgc3RhdGljIG1vbnRocyhcbiAgICBsZW5ndGggPSBcImxvbmdcIixcbiAgICB7IGxvY2FsZSA9IG51bGwsIG51bWJlcmluZ1N5c3RlbSA9IG51bGwsIGxvY09iaiA9IG51bGwsIG91dHB1dENhbGVuZGFyID0gXCJncmVnb3J5XCIgfSA9IHt9XG4gICkge1xuICAgIHJldHVybiAobG9jT2JqIHx8IExvY2FsZS5jcmVhdGUobG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG91dHB1dENhbGVuZGFyKSkubW9udGhzKGxlbmd0aCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGFuIGFycmF5IG9mIGZvcm1hdCBtb250aCBuYW1lcy5cbiAgICogRm9ybWF0IG1vbnRocyBkaWZmZXIgZnJvbSBzdGFuZGFsb25lIG1vbnRocyBpbiB0aGF0IHRoZXkncmUgbWVhbnQgdG8gYXBwZWFyIG5leHQgdG8gdGhlIGRheSBvZiB0aGUgbW9udGguIEluIHNvbWUgbGFuZ3VhZ2VzLCB0aGF0XG4gICAqIGNoYW5nZXMgdGhlIHN0cmluZy5cbiAgICogU2VlIHtAbGluayBJbmZvI21vbnRoc31cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtsZW5ndGg9J2xvbmcnXSAtIHRoZSBsZW5ndGggb2YgdGhlIG1vbnRoIHJlcHJlc2VudGF0aW9uLCBzdWNoIGFzIFwibnVtZXJpY1wiLCBcIjItZGlnaXRcIiwgXCJuYXJyb3dcIiwgXCJzaG9ydFwiLCBcImxvbmdcIlxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnNcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZV0gLSB0aGUgbG9jYWxlIGNvZGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLm51bWJlcmluZ1N5c3RlbT1udWxsXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NPYmo9bnVsbF0gLSBhbiBleGlzdGluZyBsb2NhbGUgb2JqZWN0IHRvIHVzZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMub3V0cHV0Q2FsZW5kYXI9J2dyZWdvcnknXSAtIHRoZSBjYWxlbmRhclxuICAgKiBAcmV0dXJuIHtBcnJheX1cbiAgICovXG4gIHN0YXRpYyBtb250aHNGb3JtYXQoXG4gICAgbGVuZ3RoID0gXCJsb25nXCIsXG4gICAgeyBsb2NhbGUgPSBudWxsLCBudW1iZXJpbmdTeXN0ZW0gPSBudWxsLCBsb2NPYmogPSBudWxsLCBvdXRwdXRDYWxlbmRhciA9IFwiZ3JlZ29yeVwiIH0gPSB7fVxuICApIHtcbiAgICByZXR1cm4gKGxvY09iaiB8fCBMb2NhbGUuY3JlYXRlKGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtLCBvdXRwdXRDYWxlbmRhcikpLm1vbnRocyhsZW5ndGgsIHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhbiBhcnJheSBvZiBzdGFuZGFsb25lIHdlZWsgbmFtZXMuXG4gICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvRGF0ZVRpbWVGb3JtYXRcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtsZW5ndGg9J2xvbmcnXSAtIHRoZSBsZW5ndGggb2YgdGhlIHdlZWtkYXkgcmVwcmVzZW50YXRpb24sIHN1Y2ggYXMgXCJuYXJyb3dcIiwgXCJzaG9ydFwiLCBcImxvbmdcIi5cbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGVdIC0gdGhlIGxvY2FsZSBjb2RlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5udW1iZXJpbmdTeXN0ZW09bnVsbF0gLSB0aGUgbnVtYmVyaW5nIHN5c3RlbVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jT2JqPW51bGxdIC0gYW4gZXhpc3RpbmcgbG9jYWxlIG9iamVjdCB0byB1c2VcbiAgICogQGV4YW1wbGUgSW5mby53ZWVrZGF5cygpWzBdIC8vPT4gJ01vbmRheSdcbiAgICogQGV4YW1wbGUgSW5mby53ZWVrZGF5cygnc2hvcnQnKVswXSAvLz0+ICdNb24nXG4gICAqIEBleGFtcGxlIEluZm8ud2Vla2RheXMoJ3Nob3J0JywgeyBsb2NhbGU6ICdmci1DQScgfSlbMF0gLy89PiAnbHVuLidcbiAgICogQGV4YW1wbGUgSW5mby53ZWVrZGF5cygnc2hvcnQnLCB7IGxvY2FsZTogJ2FyJyB9KVswXSAvLz0+ICdcdTA2MjdcdTA2NDRcdTA2MjdcdTA2MkJcdTA2NDZcdTA2NEFcdTA2NDYnXG4gICAqIEByZXR1cm4ge0FycmF5fVxuICAgKi9cbiAgc3RhdGljIHdlZWtkYXlzKGxlbmd0aCA9IFwibG9uZ1wiLCB7IGxvY2FsZSA9IG51bGwsIG51bWJlcmluZ1N5c3RlbSA9IG51bGwsIGxvY09iaiA9IG51bGwgfSA9IHt9KSB7XG4gICAgcmV0dXJuIChsb2NPYmogfHwgTG9jYWxlLmNyZWF0ZShsb2NhbGUsIG51bWJlcmluZ1N5c3RlbSwgbnVsbCkpLndlZWtkYXlzKGxlbmd0aCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGFuIGFycmF5IG9mIGZvcm1hdCB3ZWVrIG5hbWVzLlxuICAgKiBGb3JtYXQgd2Vla2RheXMgZGlmZmVyIGZyb20gc3RhbmRhbG9uZSB3ZWVrZGF5cyBpbiB0aGF0IHRoZXkncmUgbWVhbnQgdG8gYXBwZWFyIG5leHQgdG8gbW9yZSBkYXRlIGluZm9ybWF0aW9uLiBJbiBzb21lIGxhbmd1YWdlcywgdGhhdFxuICAgKiBjaGFuZ2VzIHRoZSBzdHJpbmcuXG4gICAqIFNlZSB7QGxpbmsgSW5mbyN3ZWVrZGF5c31cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtsZW5ndGg9J2xvbmcnXSAtIHRoZSBsZW5ndGggb2YgdGhlIG1vbnRoIHJlcHJlc2VudGF0aW9uLCBzdWNoIGFzIFwibmFycm93XCIsIFwic2hvcnRcIiwgXCJsb25nXCIuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9uc1xuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlPW51bGxdIC0gdGhlIGxvY2FsZSBjb2RlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5udW1iZXJpbmdTeXN0ZW09bnVsbF0gLSB0aGUgbnVtYmVyaW5nIHN5c3RlbVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jT2JqPW51bGxdIC0gYW4gZXhpc3RpbmcgbG9jYWxlIG9iamVjdCB0byB1c2VcbiAgICogQHJldHVybiB7QXJyYXl9XG4gICAqL1xuICBzdGF0aWMgd2Vla2RheXNGb3JtYXQoXG4gICAgbGVuZ3RoID0gXCJsb25nXCIsXG4gICAgeyBsb2NhbGUgPSBudWxsLCBudW1iZXJpbmdTeXN0ZW0gPSBudWxsLCBsb2NPYmogPSBudWxsIH0gPSB7fVxuICApIHtcbiAgICByZXR1cm4gKGxvY09iaiB8fCBMb2NhbGUuY3JlYXRlKGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtLCBudWxsKSkud2Vla2RheXMobGVuZ3RoLCB0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYW4gYXJyYXkgb2YgbWVyaWRpZW1zLlxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnNcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZV0gLSB0aGUgbG9jYWxlIGNvZGVcbiAgICogQGV4YW1wbGUgSW5mby5tZXJpZGllbXMoKSAvLz0+IFsgJ0FNJywgJ1BNJyBdXG4gICAqIEBleGFtcGxlIEluZm8ubWVyaWRpZW1zKHsgbG9jYWxlOiAnbXknIH0pIC8vPT4gWyAnXHUxMDE0XHUxMDM2XHUxMDE0XHUxMDAwXHUxMDNBJywgJ1x1MTAwQVx1MTAxNFx1MTAzMScgXVxuICAgKiBAcmV0dXJuIHtBcnJheX1cbiAgICovXG4gIHN0YXRpYyBtZXJpZGllbXMoeyBsb2NhbGUgPSBudWxsIH0gPSB7fSkge1xuICAgIHJldHVybiBMb2NhbGUuY3JlYXRlKGxvY2FsZSkubWVyaWRpZW1zKCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGFuIGFycmF5IG9mIGVyYXMsIHN1Y2ggYXMgWydCQycsICdBRCddLiBUaGUgbG9jYWxlIGNhbiBiZSBzcGVjaWZpZWQsIGJ1dCB0aGUgY2FsZW5kYXIgc3lzdGVtIGlzIGFsd2F5cyBHcmVnb3JpYW4uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbbGVuZ3RoPSdzaG9ydCddIC0gdGhlIGxlbmd0aCBvZiB0aGUgZXJhIHJlcHJlc2VudGF0aW9uLCBzdWNoIGFzIFwic2hvcnRcIiBvciBcImxvbmdcIi5cbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGVdIC0gdGhlIGxvY2FsZSBjb2RlXG4gICAqIEBleGFtcGxlIEluZm8uZXJhcygpIC8vPT4gWyAnQkMnLCAnQUQnIF1cbiAgICogQGV4YW1wbGUgSW5mby5lcmFzKCdsb25nJykgLy89PiBbICdCZWZvcmUgQ2hyaXN0JywgJ0Fubm8gRG9taW5pJyBdXG4gICAqIEBleGFtcGxlIEluZm8uZXJhcygnbG9uZycsIHsgbG9jYWxlOiAnZnInIH0pIC8vPT4gWyAnYXZhbnQgSlx1MDBFOXN1cy1DaHJpc3QnLCAnYXByXHUwMEU4cyBKXHUwMEU5c3VzLUNocmlzdCcgXVxuICAgKiBAcmV0dXJuIHtBcnJheX1cbiAgICovXG4gIHN0YXRpYyBlcmFzKGxlbmd0aCA9IFwic2hvcnRcIiwgeyBsb2NhbGUgPSBudWxsIH0gPSB7fSkge1xuICAgIHJldHVybiBMb2NhbGUuY3JlYXRlKGxvY2FsZSwgbnVsbCwgXCJncmVnb3J5XCIpLmVyYXMobGVuZ3RoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIHNldCBvZiBhdmFpbGFibGUgZmVhdHVyZXMgaW4gdGhpcyBlbnZpcm9ubWVudC5cbiAgICogU29tZSBmZWF0dXJlcyBvZiBMdXhvbiBhcmUgbm90IGF2YWlsYWJsZSBpbiBhbGwgZW52aXJvbm1lbnRzLiBGb3IgZXhhbXBsZSwgb24gb2xkZXIgYnJvd3NlcnMsIHJlbGF0aXZlIHRpbWUgZm9ybWF0dGluZyBzdXBwb3J0IGlzIG5vdCBhdmFpbGFibGUuIFVzZSB0aGlzIGZ1bmN0aW9uIHRvIGZpZ3VyZSBvdXQgaWYgdGhhdCdzIHRoZSBjYXNlLlxuICAgKiBLZXlzOlxuICAgKiAqIGByZWxhdGl2ZWA6IHdoZXRoZXIgdGhpcyBlbnZpcm9ubWVudCBzdXBwb3J0cyByZWxhdGl2ZSB0aW1lIGZvcm1hdHRpbmdcbiAgICogQGV4YW1wbGUgSW5mby5mZWF0dXJlcygpIC8vPT4geyByZWxhdGl2ZTogZmFsc2UgfVxuICAgKiBAcmV0dXJuIHtPYmplY3R9XG4gICAqL1xuICBzdGF0aWMgZmVhdHVyZXMoKSB7XG4gICAgcmV0dXJuIHsgcmVsYXRpdmU6IGhhc1JlbGF0aXZlKCkgfTtcbiAgfVxufVxuIiwgImltcG9ydCBEdXJhdGlvbiBmcm9tIFwiLi4vZHVyYXRpb24uanNcIjtcblxuZnVuY3Rpb24gZGF5RGlmZihlYXJsaWVyLCBsYXRlcikge1xuICBjb25zdCB1dGNEYXlTdGFydCA9IChkdCkgPT4gZHQudG9VVEMoMCwgeyBrZWVwTG9jYWxUaW1lOiB0cnVlIH0pLnN0YXJ0T2YoXCJkYXlcIikudmFsdWVPZigpLFxuICAgIG1zID0gdXRjRGF5U3RhcnQobGF0ZXIpIC0gdXRjRGF5U3RhcnQoZWFybGllcik7XG4gIHJldHVybiBNYXRoLmZsb29yKER1cmF0aW9uLmZyb21NaWxsaXMobXMpLmFzKFwiZGF5c1wiKSk7XG59XG5cbmZ1bmN0aW9uIGhpZ2hPcmRlckRpZmZzKGN1cnNvciwgbGF0ZXIsIHVuaXRzKSB7XG4gIGNvbnN0IGRpZmZlcnMgPSBbXG4gICAgW1wieWVhcnNcIiwgKGEsIGIpID0+IGIueWVhciAtIGEueWVhcl0sXG4gICAgW1wicXVhcnRlcnNcIiwgKGEsIGIpID0+IGIucXVhcnRlciAtIGEucXVhcnRlcl0sXG4gICAgW1wibW9udGhzXCIsIChhLCBiKSA9PiBiLm1vbnRoIC0gYS5tb250aCArIChiLnllYXIgLSBhLnllYXIpICogMTJdLFxuICAgIFtcbiAgICAgIFwid2Vla3NcIixcbiAgICAgIChhLCBiKSA9PiB7XG4gICAgICAgIGNvbnN0IGRheXMgPSBkYXlEaWZmKGEsIGIpO1xuICAgICAgICByZXR1cm4gKGRheXMgLSAoZGF5cyAlIDcpKSAvIDc7XG4gICAgICB9LFxuICAgIF0sXG4gICAgW1wiZGF5c1wiLCBkYXlEaWZmXSxcbiAgXTtcblxuICBjb25zdCByZXN1bHRzID0ge307XG4gIGxldCBsb3dlc3RPcmRlciwgaGlnaFdhdGVyO1xuXG4gIGZvciAoY29uc3QgW3VuaXQsIGRpZmZlcl0gb2YgZGlmZmVycykge1xuICAgIGlmICh1bml0cy5pbmRleE9mKHVuaXQpID49IDApIHtcbiAgICAgIGxvd2VzdE9yZGVyID0gdW5pdDtcblxuICAgICAgbGV0IGRlbHRhID0gZGlmZmVyKGN1cnNvciwgbGF0ZXIpO1xuICAgICAgaGlnaFdhdGVyID0gY3Vyc29yLnBsdXMoeyBbdW5pdF06IGRlbHRhIH0pO1xuXG4gICAgICBpZiAoaGlnaFdhdGVyID4gbGF0ZXIpIHtcbiAgICAgICAgY3Vyc29yID0gY3Vyc29yLnBsdXMoeyBbdW5pdF06IGRlbHRhIC0gMSB9KTtcbiAgICAgICAgZGVsdGEgLT0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGN1cnNvciA9IGhpZ2hXYXRlcjtcbiAgICAgIH1cblxuICAgICAgcmVzdWx0c1t1bml0XSA9IGRlbHRhO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBbY3Vyc29yLCByZXN1bHRzLCBoaWdoV2F0ZXIsIGxvd2VzdE9yZGVyXTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKGVhcmxpZXIsIGxhdGVyLCB1bml0cywgb3B0cykge1xuICBsZXQgW2N1cnNvciwgcmVzdWx0cywgaGlnaFdhdGVyLCBsb3dlc3RPcmRlcl0gPSBoaWdoT3JkZXJEaWZmcyhlYXJsaWVyLCBsYXRlciwgdW5pdHMpO1xuXG4gIGNvbnN0IHJlbWFpbmluZ01pbGxpcyA9IGxhdGVyIC0gY3Vyc29yO1xuXG4gIGNvbnN0IGxvd2VyT3JkZXJVbml0cyA9IHVuaXRzLmZpbHRlcihcbiAgICAodSkgPT4gW1wiaG91cnNcIiwgXCJtaW51dGVzXCIsIFwic2Vjb25kc1wiLCBcIm1pbGxpc2Vjb25kc1wiXS5pbmRleE9mKHUpID49IDBcbiAgKTtcblxuICBpZiAobG93ZXJPcmRlclVuaXRzLmxlbmd0aCA9PT0gMCkge1xuICAgIGlmIChoaWdoV2F0ZXIgPCBsYXRlcikge1xuICAgICAgaGlnaFdhdGVyID0gY3Vyc29yLnBsdXMoeyBbbG93ZXN0T3JkZXJdOiAxIH0pO1xuICAgIH1cblxuICAgIGlmIChoaWdoV2F0ZXIgIT09IGN1cnNvcikge1xuICAgICAgcmVzdWx0c1tsb3dlc3RPcmRlcl0gPSAocmVzdWx0c1tsb3dlc3RPcmRlcl0gfHwgMCkgKyByZW1haW5pbmdNaWxsaXMgLyAoaGlnaFdhdGVyIC0gY3Vyc29yKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBkdXJhdGlvbiA9IER1cmF0aW9uLmZyb21PYmplY3QocmVzdWx0cywgb3B0cyk7XG5cbiAgaWYgKGxvd2VyT3JkZXJVbml0cy5sZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIER1cmF0aW9uLmZyb21NaWxsaXMocmVtYWluaW5nTWlsbGlzLCBvcHRzKVxuICAgICAgLnNoaWZ0VG8oLi4ubG93ZXJPcmRlclVuaXRzKVxuICAgICAgLnBsdXMoZHVyYXRpb24pO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBkdXJhdGlvbjtcbiAgfVxufVxuIiwgImNvbnN0IG51bWJlcmluZ1N5c3RlbXMgPSB7XG4gIGFyYWI6IFwiW1xcdTA2NjAtXFx1MDY2OV1cIixcbiAgYXJhYmV4dDogXCJbXFx1MDZGMC1cXHUwNkY5XVwiLFxuICBiYWxpOiBcIltcXHUxQjUwLVxcdTFCNTldXCIsXG4gIGJlbmc6IFwiW1xcdTA5RTYtXFx1MDlFRl1cIixcbiAgZGV2YTogXCJbXFx1MDk2Ni1cXHUwOTZGXVwiLFxuICBmdWxsd2lkZTogXCJbXFx1RkYxMC1cXHVGRjE5XVwiLFxuICBndWpyOiBcIltcXHUwQUU2LVxcdTBBRUZdXCIsXG4gIGhhbmlkZWM6IFwiW1x1MzAwN3xcdTRFMDB8XHU0RThDfFx1NEUwOXxcdTU2REJ8XHU0RTk0fFx1NTE2RHxcdTRFMDN8XHU1MTZCfFx1NEU1RF1cIixcbiAga2htcjogXCJbXFx1MTdFMC1cXHUxN0U5XVwiLFxuICBrbmRhOiBcIltcXHUwQ0U2LVxcdTBDRUZdXCIsXG4gIGxhb286IFwiW1xcdTBFRDAtXFx1MEVEOV1cIixcbiAgbGltYjogXCJbXFx1MTk0Ni1cXHUxOTRGXVwiLFxuICBtbHltOiBcIltcXHUwRDY2LVxcdTBENkZdXCIsXG4gIG1vbmc6IFwiW1xcdTE4MTAtXFx1MTgxOV1cIixcbiAgbXltcjogXCJbXFx1MTA0MC1cXHUxMDQ5XVwiLFxuICBvcnlhOiBcIltcXHUwQjY2LVxcdTBCNkZdXCIsXG4gIHRhbWxkZWM6IFwiW1xcdTBCRTYtXFx1MEJFRl1cIixcbiAgdGVsdTogXCJbXFx1MEM2Ni1cXHUwQzZGXVwiLFxuICB0aGFpOiBcIltcXHUwRTUwLVxcdTBFNTldXCIsXG4gIHRpYnQ6IFwiW1xcdTBGMjAtXFx1MEYyOV1cIixcbiAgbGF0bjogXCJcXFxcZFwiLFxufTtcblxuY29uc3QgbnVtYmVyaW5nU3lzdGVtc1VURjE2ID0ge1xuICBhcmFiOiBbMTYzMiwgMTY0MV0sXG4gIGFyYWJleHQ6IFsxNzc2LCAxNzg1XSxcbiAgYmFsaTogWzY5OTIsIDcwMDFdLFxuICBiZW5nOiBbMjUzNCwgMjU0M10sXG4gIGRldmE6IFsyNDA2LCAyNDE1XSxcbiAgZnVsbHdpZGU6IFs2NTI5NiwgNjUzMDNdLFxuICBndWpyOiBbMjc5MCwgMjc5OV0sXG4gIGtobXI6IFs2MTEyLCA2MTIxXSxcbiAga25kYTogWzMzMDIsIDMzMTFdLFxuICBsYW9vOiBbMzc5MiwgMzgwMV0sXG4gIGxpbWI6IFs2NDcwLCA2NDc5XSxcbiAgbWx5bTogWzM0MzAsIDM0MzldLFxuICBtb25nOiBbNjE2MCwgNjE2OV0sXG4gIG15bXI6IFs0MTYwLCA0MTY5XSxcbiAgb3J5YTogWzI5MTgsIDI5MjddLFxuICB0YW1sZGVjOiBbMzA0NiwgMzA1NV0sXG4gIHRlbHU6IFszMTc0LCAzMTgzXSxcbiAgdGhhaTogWzM2NjQsIDM2NzNdLFxuICB0aWJ0OiBbMzg3MiwgMzg4MV0sXG59O1xuXG5jb25zdCBoYW5pZGVjQ2hhcnMgPSBudW1iZXJpbmdTeXN0ZW1zLmhhbmlkZWMucmVwbGFjZSgvW1xcW3xcXF1dL2csIFwiXCIpLnNwbGl0KFwiXCIpO1xuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VEaWdpdHMoc3RyKSB7XG4gIGxldCB2YWx1ZSA9IHBhcnNlSW50KHN0ciwgMTApO1xuICBpZiAoaXNOYU4odmFsdWUpKSB7XG4gICAgdmFsdWUgPSBcIlwiO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBjb2RlID0gc3RyLmNoYXJDb2RlQXQoaSk7XG5cbiAgICAgIGlmIChzdHJbaV0uc2VhcmNoKG51bWJlcmluZ1N5c3RlbXMuaGFuaWRlYykgIT09IC0xKSB7XG4gICAgICAgIHZhbHVlICs9IGhhbmlkZWNDaGFycy5pbmRleE9mKHN0cltpXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBudW1iZXJpbmdTeXN0ZW1zVVRGMTYpIHtcbiAgICAgICAgICBjb25zdCBbbWluLCBtYXhdID0gbnVtYmVyaW5nU3lzdGVtc1VURjE2W2tleV07XG4gICAgICAgICAgaWYgKGNvZGUgPj0gbWluICYmIGNvZGUgPD0gbWF4KSB7XG4gICAgICAgICAgICB2YWx1ZSArPSBjb2RlIC0gbWluO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcGFyc2VJbnQodmFsdWUsIDEwKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpZ2l0UmVnZXgoeyBudW1iZXJpbmdTeXN0ZW0gfSwgYXBwZW5kID0gXCJcIikge1xuICByZXR1cm4gbmV3IFJlZ0V4cChgJHtudW1iZXJpbmdTeXN0ZW1zW251bWJlcmluZ1N5c3RlbSB8fCBcImxhdG5cIl19JHthcHBlbmR9YCk7XG59XG4iLCAiaW1wb3J0IHsgcGFyc2VNaWxsaXMsIGlzVW5kZWZpbmVkLCB1bnRydW5jYXRlWWVhciwgc2lnbmVkT2Zmc2V0LCBoYXNPd25Qcm9wZXJ0eSB9IGZyb20gXCIuL3V0aWwuanNcIjtcbmltcG9ydCBGb3JtYXR0ZXIgZnJvbSBcIi4vZm9ybWF0dGVyLmpzXCI7XG5pbXBvcnQgRml4ZWRPZmZzZXRab25lIGZyb20gXCIuLi96b25lcy9maXhlZE9mZnNldFpvbmUuanNcIjtcbmltcG9ydCBJQU5BWm9uZSBmcm9tIFwiLi4vem9uZXMvSUFOQVpvbmUuanNcIjtcbmltcG9ydCBEYXRlVGltZSBmcm9tIFwiLi4vZGF0ZXRpbWUuanNcIjtcbmltcG9ydCB7IGRpZ2l0UmVnZXgsIHBhcnNlRGlnaXRzIH0gZnJvbSBcIi4vZGlnaXRzLmpzXCI7XG5pbXBvcnQgeyBDb25mbGljdGluZ1NwZWNpZmljYXRpb25FcnJvciB9IGZyb20gXCIuLi9lcnJvcnMuanNcIjtcblxuY29uc3QgTUlTU0lOR19GVFAgPSBcIm1pc3NpbmcgSW50bC5EYXRlVGltZUZvcm1hdC5mb3JtYXRUb1BhcnRzIHN1cHBvcnRcIjtcblxuZnVuY3Rpb24gaW50VW5pdChyZWdleCwgcG9zdCA9IChpKSA9PiBpKSB7XG4gIHJldHVybiB7IHJlZ2V4LCBkZXNlcjogKFtzXSkgPT4gcG9zdChwYXJzZURpZ2l0cyhzKSkgfTtcbn1cblxuY29uc3QgTkJTUCA9IFN0cmluZy5mcm9tQ2hhckNvZGUoMTYwKTtcbmNvbnN0IHNwYWNlT3JOQlNQID0gYFsgJHtOQlNQfV1gO1xuY29uc3Qgc3BhY2VPck5CU1BSZWdFeHAgPSBuZXcgUmVnRXhwKHNwYWNlT3JOQlNQLCBcImdcIik7XG5cbmZ1bmN0aW9uIGZpeExpc3RSZWdleChzKSB7XG4gIC8vIG1ha2UgZG90cyBvcHRpb25hbCBhbmQgYWxzbyBtYWtlIHRoZW0gbGl0ZXJhbFxuICAvLyBtYWtlIHNwYWNlIGFuZCBub24gYnJlYWthYmxlIHNwYWNlIGNoYXJhY3RlcnMgaW50ZXJjaGFuZ2VhYmxlXG4gIHJldHVybiBzLnJlcGxhY2UoL1xcLi9nLCBcIlxcXFwuP1wiKS5yZXBsYWNlKHNwYWNlT3JOQlNQUmVnRXhwLCBzcGFjZU9yTkJTUCk7XG59XG5cbmZ1bmN0aW9uIHN0cmlwSW5zZW5zaXRpdml0aWVzKHMpIHtcbiAgcmV0dXJuIHNcbiAgICAucmVwbGFjZSgvXFwuL2csIFwiXCIpIC8vIGlnbm9yZSBkb3RzIHRoYXQgd2VyZSBtYWRlIG9wdGlvbmFsXG4gICAgLnJlcGxhY2Uoc3BhY2VPck5CU1BSZWdFeHAsIFwiIFwiKSAvLyBpbnRlcmNoYW5nZSBzcGFjZSBhbmQgbmJzcFxuICAgIC50b0xvd2VyQ2FzZSgpO1xufVxuXG5mdW5jdGlvbiBvbmVPZihzdHJpbmdzLCBzdGFydEluZGV4KSB7XG4gIGlmIChzdHJpbmdzID09PSBudWxsKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHJlZ2V4OiBSZWdFeHAoc3RyaW5ncy5tYXAoZml4TGlzdFJlZ2V4KS5qb2luKFwifFwiKSksXG4gICAgICBkZXNlcjogKFtzXSkgPT5cbiAgICAgICAgc3RyaW5ncy5maW5kSW5kZXgoKGkpID0+IHN0cmlwSW5zZW5zaXRpdml0aWVzKHMpID09PSBzdHJpcEluc2Vuc2l0aXZpdGllcyhpKSkgKyBzdGFydEluZGV4LFxuICAgIH07XG4gIH1cbn1cblxuZnVuY3Rpb24gb2Zmc2V0KHJlZ2V4LCBncm91cHMpIHtcbiAgcmV0dXJuIHsgcmVnZXgsIGRlc2VyOiAoWywgaCwgbV0pID0+IHNpZ25lZE9mZnNldChoLCBtKSwgZ3JvdXBzIH07XG59XG5cbmZ1bmN0aW9uIHNpbXBsZShyZWdleCkge1xuICByZXR1cm4geyByZWdleCwgZGVzZXI6IChbc10pID0+IHMgfTtcbn1cblxuZnVuY3Rpb24gZXNjYXBlVG9rZW4odmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlLnJlcGxhY2UoL1tcXC1cXFtcXF17fSgpKis/LixcXFxcXFxeJHwjXFxzXS9nLCBcIlxcXFwkJlwiKTtcbn1cblxuZnVuY3Rpb24gdW5pdEZvclRva2VuKHRva2VuLCBsb2MpIHtcbiAgY29uc3Qgb25lID0gZGlnaXRSZWdleChsb2MpLFxuICAgIHR3byA9IGRpZ2l0UmVnZXgobG9jLCBcInsyfVwiKSxcbiAgICB0aHJlZSA9IGRpZ2l0UmVnZXgobG9jLCBcInszfVwiKSxcbiAgICBmb3VyID0gZGlnaXRSZWdleChsb2MsIFwiezR9XCIpLFxuICAgIHNpeCA9IGRpZ2l0UmVnZXgobG9jLCBcIns2fVwiKSxcbiAgICBvbmVPclR3byA9IGRpZ2l0UmVnZXgobG9jLCBcInsxLDJ9XCIpLFxuICAgIG9uZVRvVGhyZWUgPSBkaWdpdFJlZ2V4KGxvYywgXCJ7MSwzfVwiKSxcbiAgICBvbmVUb1NpeCA9IGRpZ2l0UmVnZXgobG9jLCBcInsxLDZ9XCIpLFxuICAgIG9uZVRvTmluZSA9IGRpZ2l0UmVnZXgobG9jLCBcInsxLDl9XCIpLFxuICAgIHR3b1RvRm91ciA9IGRpZ2l0UmVnZXgobG9jLCBcInsyLDR9XCIpLFxuICAgIGZvdXJUb1NpeCA9IGRpZ2l0UmVnZXgobG9jLCBcIns0LDZ9XCIpLFxuICAgIGxpdGVyYWwgPSAodCkgPT4gKHsgcmVnZXg6IFJlZ0V4cChlc2NhcGVUb2tlbih0LnZhbCkpLCBkZXNlcjogKFtzXSkgPT4gcywgbGl0ZXJhbDogdHJ1ZSB9KSxcbiAgICB1bml0YXRlID0gKHQpID0+IHtcbiAgICAgIGlmICh0b2tlbi5saXRlcmFsKSB7XG4gICAgICAgIHJldHVybiBsaXRlcmFsKHQpO1xuICAgICAgfVxuICAgICAgc3dpdGNoICh0LnZhbCkge1xuICAgICAgICAvLyBlcmFcbiAgICAgICAgY2FzZSBcIkdcIjpcbiAgICAgICAgICByZXR1cm4gb25lT2YobG9jLmVyYXMoXCJzaG9ydFwiLCBmYWxzZSksIDApO1xuICAgICAgICBjYXNlIFwiR0dcIjpcbiAgICAgICAgICByZXR1cm4gb25lT2YobG9jLmVyYXMoXCJsb25nXCIsIGZhbHNlKSwgMCk7XG4gICAgICAgIC8vIHllYXJzXG4gICAgICAgIGNhc2UgXCJ5XCI6XG4gICAgICAgICAgcmV0dXJuIGludFVuaXQob25lVG9TaXgpO1xuICAgICAgICBjYXNlIFwieXlcIjpcbiAgICAgICAgICByZXR1cm4gaW50VW5pdCh0d29Ub0ZvdXIsIHVudHJ1bmNhdGVZZWFyKTtcbiAgICAgICAgY2FzZSBcInl5eXlcIjpcbiAgICAgICAgICByZXR1cm4gaW50VW5pdChmb3VyKTtcbiAgICAgICAgY2FzZSBcInl5eXl5XCI6XG4gICAgICAgICAgcmV0dXJuIGludFVuaXQoZm91clRvU2l4KTtcbiAgICAgICAgY2FzZSBcInl5eXl5eVwiOlxuICAgICAgICAgIHJldHVybiBpbnRVbml0KHNpeCk7XG4gICAgICAgIC8vIG1vbnRoc1xuICAgICAgICBjYXNlIFwiTVwiOlxuICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZU9yVHdvKTtcbiAgICAgICAgY2FzZSBcIk1NXCI6XG4gICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvKTtcbiAgICAgICAgY2FzZSBcIk1NTVwiOlxuICAgICAgICAgIHJldHVybiBvbmVPZihsb2MubW9udGhzKFwic2hvcnRcIiwgdHJ1ZSwgZmFsc2UpLCAxKTtcbiAgICAgICAgY2FzZSBcIk1NTU1cIjpcbiAgICAgICAgICByZXR1cm4gb25lT2YobG9jLm1vbnRocyhcImxvbmdcIiwgdHJ1ZSwgZmFsc2UpLCAxKTtcbiAgICAgICAgY2FzZSBcIkxcIjpcbiAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVPclR3byk7XG4gICAgICAgIGNhc2UgXCJMTFwiOlxuICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3byk7XG4gICAgICAgIGNhc2UgXCJMTExcIjpcbiAgICAgICAgICByZXR1cm4gb25lT2YobG9jLm1vbnRocyhcInNob3J0XCIsIGZhbHNlLCBmYWxzZSksIDEpO1xuICAgICAgICBjYXNlIFwiTExMTFwiOlxuICAgICAgICAgIHJldHVybiBvbmVPZihsb2MubW9udGhzKFwibG9uZ1wiLCBmYWxzZSwgZmFsc2UpLCAxKTtcbiAgICAgICAgLy8gZGF0ZXNcbiAgICAgICAgY2FzZSBcImRcIjpcbiAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVPclR3byk7XG4gICAgICAgIGNhc2UgXCJkZFwiOlxuICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3byk7XG4gICAgICAgIC8vIG9yZGluYWxzXG4gICAgICAgIGNhc2UgXCJvXCI6XG4gICAgICAgICAgcmV0dXJuIGludFVuaXQob25lVG9UaHJlZSk7XG4gICAgICAgIGNhc2UgXCJvb29cIjpcbiAgICAgICAgICByZXR1cm4gaW50VW5pdCh0aHJlZSk7XG4gICAgICAgIC8vIHRpbWVcbiAgICAgICAgY2FzZSBcIkhIXCI6XG4gICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvKTtcbiAgICAgICAgY2FzZSBcIkhcIjpcbiAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVPclR3byk7XG4gICAgICAgIGNhc2UgXCJoaFwiOlxuICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3byk7XG4gICAgICAgIGNhc2UgXCJoXCI6XG4gICAgICAgICAgcmV0dXJuIGludFVuaXQob25lT3JUd28pO1xuICAgICAgICBjYXNlIFwibW1cIjpcbiAgICAgICAgICByZXR1cm4gaW50VW5pdCh0d28pO1xuICAgICAgICBjYXNlIFwibVwiOlxuICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZU9yVHdvKTtcbiAgICAgICAgY2FzZSBcInFcIjpcbiAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVPclR3byk7XG4gICAgICAgIGNhc2UgXCJxcVwiOlxuICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3byk7XG4gICAgICAgIGNhc2UgXCJzXCI6XG4gICAgICAgICAgcmV0dXJuIGludFVuaXQob25lT3JUd28pO1xuICAgICAgICBjYXNlIFwic3NcIjpcbiAgICAgICAgICByZXR1cm4gaW50VW5pdCh0d28pO1xuICAgICAgICBjYXNlIFwiU1wiOlxuICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZVRvVGhyZWUpO1xuICAgICAgICBjYXNlIFwiU1NTXCI6XG4gICAgICAgICAgcmV0dXJuIGludFVuaXQodGhyZWUpO1xuICAgICAgICBjYXNlIFwidVwiOlxuICAgICAgICAgIHJldHVybiBzaW1wbGUob25lVG9OaW5lKTtcbiAgICAgICAgY2FzZSBcInV1XCI6XG4gICAgICAgICAgcmV0dXJuIHNpbXBsZShvbmVPclR3byk7XG4gICAgICAgIGNhc2UgXCJ1dXVcIjpcbiAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmUpO1xuICAgICAgICAvLyBtZXJpZGllbVxuICAgICAgICBjYXNlIFwiYVwiOlxuICAgICAgICAgIHJldHVybiBvbmVPZihsb2MubWVyaWRpZW1zKCksIDApO1xuICAgICAgICAvLyB3ZWVrWWVhciAoaylcbiAgICAgICAgY2FzZSBcImtra2tcIjpcbiAgICAgICAgICByZXR1cm4gaW50VW5pdChmb3VyKTtcbiAgICAgICAgY2FzZSBcImtrXCI6XG4gICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvVG9Gb3VyLCB1bnRydW5jYXRlWWVhcik7XG4gICAgICAgIC8vIHdlZWtOdW1iZXIgKFcpXG4gICAgICAgIGNhc2UgXCJXXCI6XG4gICAgICAgICAgcmV0dXJuIGludFVuaXQob25lT3JUd28pO1xuICAgICAgICBjYXNlIFwiV1dcIjpcbiAgICAgICAgICByZXR1cm4gaW50VW5pdCh0d28pO1xuICAgICAgICAvLyB3ZWVrZGF5c1xuICAgICAgICBjYXNlIFwiRVwiOlxuICAgICAgICBjYXNlIFwiY1wiOlxuICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZSk7XG4gICAgICAgIGNhc2UgXCJFRUVcIjpcbiAgICAgICAgICByZXR1cm4gb25lT2YobG9jLndlZWtkYXlzKFwic2hvcnRcIiwgZmFsc2UsIGZhbHNlKSwgMSk7XG4gICAgICAgIGNhc2UgXCJFRUVFXCI6XG4gICAgICAgICAgcmV0dXJuIG9uZU9mKGxvYy53ZWVrZGF5cyhcImxvbmdcIiwgZmFsc2UsIGZhbHNlKSwgMSk7XG4gICAgICAgIGNhc2UgXCJjY2NcIjpcbiAgICAgICAgICByZXR1cm4gb25lT2YobG9jLndlZWtkYXlzKFwic2hvcnRcIiwgdHJ1ZSwgZmFsc2UpLCAxKTtcbiAgICAgICAgY2FzZSBcImNjY2NcIjpcbiAgICAgICAgICByZXR1cm4gb25lT2YobG9jLndlZWtkYXlzKFwibG9uZ1wiLCB0cnVlLCBmYWxzZSksIDEpO1xuICAgICAgICAvLyBvZmZzZXQvem9uZVxuICAgICAgICBjYXNlIFwiWlwiOlxuICAgICAgICBjYXNlIFwiWlpcIjpcbiAgICAgICAgICByZXR1cm4gb2Zmc2V0KG5ldyBSZWdFeHAoYChbKy1dJHtvbmVPclR3by5zb3VyY2V9KSg/OjooJHt0d28uc291cmNlfSkpP2ApLCAyKTtcbiAgICAgICAgY2FzZSBcIlpaWlwiOlxuICAgICAgICAgIHJldHVybiBvZmZzZXQobmV3IFJlZ0V4cChgKFsrLV0ke29uZU9yVHdvLnNvdXJjZX0pKCR7dHdvLnNvdXJjZX0pP2ApLCAyKTtcbiAgICAgICAgLy8gd2UgZG9uJ3Qgc3VwcG9ydCBaWlpaIChQU1QpIG9yIFpaWlpaIChQYWNpZmljIFN0YW5kYXJkIFRpbWUpIGluIHBhcnNpbmdcbiAgICAgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCBoYXZlIGFueSB3YXkgdG8gZmlndXJlIG91dCB3aGF0IHRoZXkgYXJlXG4gICAgICAgIGNhc2UgXCJ6XCI6XG4gICAgICAgICAgcmV0dXJuIHNpbXBsZSgvW2Etel8rLS9dezEsMjU2fT8vaSk7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIGxpdGVyYWwodCk7XG4gICAgICB9XG4gICAgfTtcblxuICBjb25zdCB1bml0ID0gdW5pdGF0ZSh0b2tlbikgfHwge1xuICAgIGludmFsaWRSZWFzb246IE1JU1NJTkdfRlRQLFxuICB9O1xuXG4gIHVuaXQudG9rZW4gPSB0b2tlbjtcblxuICByZXR1cm4gdW5pdDtcbn1cblxuY29uc3QgcGFydFR5cGVTdHlsZVRvVG9rZW5WYWwgPSB7XG4gIHllYXI6IHtcbiAgICBcIjItZGlnaXRcIjogXCJ5eVwiLFxuICAgIG51bWVyaWM6IFwieXl5eXlcIixcbiAgfSxcbiAgbW9udGg6IHtcbiAgICBudW1lcmljOiBcIk1cIixcbiAgICBcIjItZGlnaXRcIjogXCJNTVwiLFxuICAgIHNob3J0OiBcIk1NTVwiLFxuICAgIGxvbmc6IFwiTU1NTVwiLFxuICB9LFxuICBkYXk6IHtcbiAgICBudW1lcmljOiBcImRcIixcbiAgICBcIjItZGlnaXRcIjogXCJkZFwiLFxuICB9LFxuICB3ZWVrZGF5OiB7XG4gICAgc2hvcnQ6IFwiRUVFXCIsXG4gICAgbG9uZzogXCJFRUVFXCIsXG4gIH0sXG4gIGRheXBlcmlvZDogXCJhXCIsXG4gIGRheVBlcmlvZDogXCJhXCIsXG4gIGhvdXI6IHtcbiAgICBudW1lcmljOiBcImhcIixcbiAgICBcIjItZGlnaXRcIjogXCJoaFwiLFxuICB9LFxuICBtaW51dGU6IHtcbiAgICBudW1lcmljOiBcIm1cIixcbiAgICBcIjItZGlnaXRcIjogXCJtbVwiLFxuICB9LFxuICBzZWNvbmQ6IHtcbiAgICBudW1lcmljOiBcInNcIixcbiAgICBcIjItZGlnaXRcIjogXCJzc1wiLFxuICB9LFxufTtcblxuZnVuY3Rpb24gdG9rZW5Gb3JQYXJ0KHBhcnQsIGxvY2FsZSwgZm9ybWF0T3B0cykge1xuICBjb25zdCB7IHR5cGUsIHZhbHVlIH0gPSBwYXJ0O1xuXG4gIGlmICh0eXBlID09PSBcImxpdGVyYWxcIikge1xuICAgIHJldHVybiB7XG4gICAgICBsaXRlcmFsOiB0cnVlLFxuICAgICAgdmFsOiB2YWx1ZSxcbiAgICB9O1xuICB9XG5cbiAgY29uc3Qgc3R5bGUgPSBmb3JtYXRPcHRzW3R5cGVdO1xuXG4gIGxldCB2YWwgPSBwYXJ0VHlwZVN0eWxlVG9Ub2tlblZhbFt0eXBlXTtcbiAgaWYgKHR5cGVvZiB2YWwgPT09IFwib2JqZWN0XCIpIHtcbiAgICB2YWwgPSB2YWxbc3R5bGVdO1xuICB9XG5cbiAgaWYgKHZhbCkge1xuICAgIHJldHVybiB7XG4gICAgICBsaXRlcmFsOiBmYWxzZSxcbiAgICAgIHZhbCxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gYnVpbGRSZWdleCh1bml0cykge1xuICBjb25zdCByZSA9IHVuaXRzLm1hcCgodSkgPT4gdS5yZWdleCkucmVkdWNlKChmLCByKSA9PiBgJHtmfSgke3Iuc291cmNlfSlgLCBcIlwiKTtcbiAgcmV0dXJuIFtgXiR7cmV9JGAsIHVuaXRzXTtcbn1cblxuZnVuY3Rpb24gbWF0Y2goaW5wdXQsIHJlZ2V4LCBoYW5kbGVycykge1xuICBjb25zdCBtYXRjaGVzID0gaW5wdXQubWF0Y2gocmVnZXgpO1xuXG4gIGlmIChtYXRjaGVzKSB7XG4gICAgY29uc3QgYWxsID0ge307XG4gICAgbGV0IG1hdGNoSW5kZXggPSAxO1xuICAgIGZvciAoY29uc3QgaSBpbiBoYW5kbGVycykge1xuICAgICAgaWYgKGhhc093blByb3BlcnR5KGhhbmRsZXJzLCBpKSkge1xuICAgICAgICBjb25zdCBoID0gaGFuZGxlcnNbaV0sXG4gICAgICAgICAgZ3JvdXBzID0gaC5ncm91cHMgPyBoLmdyb3VwcyArIDEgOiAxO1xuICAgICAgICBpZiAoIWgubGl0ZXJhbCAmJiBoLnRva2VuKSB7XG4gICAgICAgICAgYWxsW2gudG9rZW4udmFsWzBdXSA9IGguZGVzZXIobWF0Y2hlcy5zbGljZShtYXRjaEluZGV4LCBtYXRjaEluZGV4ICsgZ3JvdXBzKSk7XG4gICAgICAgIH1cbiAgICAgICAgbWF0Y2hJbmRleCArPSBncm91cHM7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBbbWF0Y2hlcywgYWxsXTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gW21hdGNoZXMsIHt9XTtcbiAgfVxufVxuXG5mdW5jdGlvbiBkYXRlVGltZUZyb21NYXRjaGVzKG1hdGNoZXMpIHtcbiAgY29uc3QgdG9GaWVsZCA9ICh0b2tlbikgPT4ge1xuICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgIGNhc2UgXCJTXCI6XG4gICAgICAgIHJldHVybiBcIm1pbGxpc2Vjb25kXCI7XG4gICAgICBjYXNlIFwic1wiOlxuICAgICAgICByZXR1cm4gXCJzZWNvbmRcIjtcbiAgICAgIGNhc2UgXCJtXCI6XG4gICAgICAgIHJldHVybiBcIm1pbnV0ZVwiO1xuICAgICAgY2FzZSBcImhcIjpcbiAgICAgIGNhc2UgXCJIXCI6XG4gICAgICAgIHJldHVybiBcImhvdXJcIjtcbiAgICAgIGNhc2UgXCJkXCI6XG4gICAgICAgIHJldHVybiBcImRheVwiO1xuICAgICAgY2FzZSBcIm9cIjpcbiAgICAgICAgcmV0dXJuIFwib3JkaW5hbFwiO1xuICAgICAgY2FzZSBcIkxcIjpcbiAgICAgIGNhc2UgXCJNXCI6XG4gICAgICAgIHJldHVybiBcIm1vbnRoXCI7XG4gICAgICBjYXNlIFwieVwiOlxuICAgICAgICByZXR1cm4gXCJ5ZWFyXCI7XG4gICAgICBjYXNlIFwiRVwiOlxuICAgICAgY2FzZSBcImNcIjpcbiAgICAgICAgcmV0dXJuIFwid2Vla2RheVwiO1xuICAgICAgY2FzZSBcIldcIjpcbiAgICAgICAgcmV0dXJuIFwid2Vla051bWJlclwiO1xuICAgICAgY2FzZSBcImtcIjpcbiAgICAgICAgcmV0dXJuIFwid2Vla1llYXJcIjtcbiAgICAgIGNhc2UgXCJxXCI6XG4gICAgICAgIHJldHVybiBcInF1YXJ0ZXJcIjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfTtcblxuICBsZXQgem9uZSA9IG51bGw7XG4gIGxldCBzcGVjaWZpY09mZnNldDtcbiAgaWYgKCFpc1VuZGVmaW5lZChtYXRjaGVzLnopKSB7XG4gICAgem9uZSA9IElBTkFab25lLmNyZWF0ZShtYXRjaGVzLnopO1xuICB9XG5cbiAgaWYgKCFpc1VuZGVmaW5lZChtYXRjaGVzLlopKSB7XG4gICAgaWYgKCF6b25lKSB7XG4gICAgICB6b25lID0gbmV3IEZpeGVkT2Zmc2V0Wm9uZShtYXRjaGVzLlopO1xuICAgIH1cbiAgICBzcGVjaWZpY09mZnNldCA9IG1hdGNoZXMuWjtcbiAgfVxuXG4gIGlmICghaXNVbmRlZmluZWQobWF0Y2hlcy5xKSkge1xuICAgIG1hdGNoZXMuTSA9IChtYXRjaGVzLnEgLSAxKSAqIDMgKyAxO1xuICB9XG5cbiAgaWYgKCFpc1VuZGVmaW5lZChtYXRjaGVzLmgpKSB7XG4gICAgaWYgKG1hdGNoZXMuaCA8IDEyICYmIG1hdGNoZXMuYSA9PT0gMSkge1xuICAgICAgbWF0Y2hlcy5oICs9IDEyO1xuICAgIH0gZWxzZSBpZiAobWF0Y2hlcy5oID09PSAxMiAmJiBtYXRjaGVzLmEgPT09IDApIHtcbiAgICAgIG1hdGNoZXMuaCA9IDA7XG4gICAgfVxuICB9XG5cbiAgaWYgKG1hdGNoZXMuRyA9PT0gMCAmJiBtYXRjaGVzLnkpIHtcbiAgICBtYXRjaGVzLnkgPSAtbWF0Y2hlcy55O1xuICB9XG5cbiAgaWYgKCFpc1VuZGVmaW5lZChtYXRjaGVzLnUpKSB7XG4gICAgbWF0Y2hlcy5TID0gcGFyc2VNaWxsaXMobWF0Y2hlcy51KTtcbiAgfVxuXG4gIGNvbnN0IHZhbHMgPSBPYmplY3Qua2V5cyhtYXRjaGVzKS5yZWR1Y2UoKHIsIGspID0+IHtcbiAgICBjb25zdCBmID0gdG9GaWVsZChrKTtcbiAgICBpZiAoZikge1xuICAgICAgcltmXSA9IG1hdGNoZXNba107XG4gICAgfVxuXG4gICAgcmV0dXJuIHI7XG4gIH0sIHt9KTtcblxuICByZXR1cm4gW3ZhbHMsIHpvbmUsIHNwZWNpZmljT2Zmc2V0XTtcbn1cblxubGV0IGR1bW15RGF0ZVRpbWVDYWNoZSA9IG51bGw7XG5cbmZ1bmN0aW9uIGdldER1bW15RGF0ZVRpbWUoKSB7XG4gIGlmICghZHVtbXlEYXRlVGltZUNhY2hlKSB7XG4gICAgZHVtbXlEYXRlVGltZUNhY2hlID0gRGF0ZVRpbWUuZnJvbU1pbGxpcygxNTU1NTU1NTU1NTU1KTtcbiAgfVxuXG4gIHJldHVybiBkdW1teURhdGVUaW1lQ2FjaGU7XG59XG5cbmZ1bmN0aW9uIG1heWJlRXhwYW5kTWFjcm9Ub2tlbih0b2tlbiwgbG9jYWxlKSB7XG4gIGlmICh0b2tlbi5saXRlcmFsKSB7XG4gICAgcmV0dXJuIHRva2VuO1xuICB9XG5cbiAgY29uc3QgZm9ybWF0T3B0cyA9IEZvcm1hdHRlci5tYWNyb1Rva2VuVG9Gb3JtYXRPcHRzKHRva2VuLnZhbCk7XG5cbiAgaWYgKCFmb3JtYXRPcHRzKSB7XG4gICAgcmV0dXJuIHRva2VuO1xuICB9XG5cbiAgY29uc3QgZm9ybWF0dGVyID0gRm9ybWF0dGVyLmNyZWF0ZShsb2NhbGUsIGZvcm1hdE9wdHMpO1xuICBjb25zdCBwYXJ0cyA9IGZvcm1hdHRlci5mb3JtYXREYXRlVGltZVBhcnRzKGdldER1bW15RGF0ZVRpbWUoKSk7XG5cbiAgY29uc3QgdG9rZW5zID0gcGFydHMubWFwKChwKSA9PiB0b2tlbkZvclBhcnQocCwgbG9jYWxlLCBmb3JtYXRPcHRzKSk7XG5cbiAgaWYgKHRva2Vucy5pbmNsdWRlcyh1bmRlZmluZWQpKSB7XG4gICAgcmV0dXJuIHRva2VuO1xuICB9XG5cbiAgcmV0dXJuIHRva2Vucztcbn1cblxuZnVuY3Rpb24gZXhwYW5kTWFjcm9Ub2tlbnModG9rZW5zLCBsb2NhbGUpIHtcbiAgcmV0dXJuIEFycmF5LnByb3RvdHlwZS5jb25jYXQoLi4udG9rZW5zLm1hcCgodCkgPT4gbWF5YmVFeHBhbmRNYWNyb1Rva2VuKHQsIGxvY2FsZSkpKTtcbn1cblxuLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBleHBsYWluRnJvbVRva2Vucyhsb2NhbGUsIGlucHV0LCBmb3JtYXQpIHtcbiAgY29uc3QgdG9rZW5zID0gZXhwYW5kTWFjcm9Ub2tlbnMoRm9ybWF0dGVyLnBhcnNlRm9ybWF0KGZvcm1hdCksIGxvY2FsZSksXG4gICAgdW5pdHMgPSB0b2tlbnMubWFwKCh0KSA9PiB1bml0Rm9yVG9rZW4odCwgbG9jYWxlKSksXG4gICAgZGlzcXVhbGlmeWluZ1VuaXQgPSB1bml0cy5maW5kKCh0KSA9PiB0LmludmFsaWRSZWFzb24pO1xuXG4gIGlmIChkaXNxdWFsaWZ5aW5nVW5pdCkge1xuICAgIHJldHVybiB7IGlucHV0LCB0b2tlbnMsIGludmFsaWRSZWFzb246IGRpc3F1YWxpZnlpbmdVbml0LmludmFsaWRSZWFzb24gfTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBbcmVnZXhTdHJpbmcsIGhhbmRsZXJzXSA9IGJ1aWxkUmVnZXgodW5pdHMpLFxuICAgICAgcmVnZXggPSBSZWdFeHAocmVnZXhTdHJpbmcsIFwiaVwiKSxcbiAgICAgIFtyYXdNYXRjaGVzLCBtYXRjaGVzXSA9IG1hdGNoKGlucHV0LCByZWdleCwgaGFuZGxlcnMpLFxuICAgICAgW3Jlc3VsdCwgem9uZSwgc3BlY2lmaWNPZmZzZXRdID0gbWF0Y2hlc1xuICAgICAgICA/IGRhdGVUaW1lRnJvbU1hdGNoZXMobWF0Y2hlcylcbiAgICAgICAgOiBbbnVsbCwgbnVsbCwgdW5kZWZpbmVkXTtcbiAgICBpZiAoaGFzT3duUHJvcGVydHkobWF0Y2hlcywgXCJhXCIpICYmIGhhc093blByb3BlcnR5KG1hdGNoZXMsIFwiSFwiKSkge1xuICAgICAgdGhyb3cgbmV3IENvbmZsaWN0aW5nU3BlY2lmaWNhdGlvbkVycm9yKFxuICAgICAgICBcIkNhbid0IGluY2x1ZGUgbWVyaWRpZW0gd2hlbiBzcGVjaWZ5aW5nIDI0LWhvdXIgZm9ybWF0XCJcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB7IGlucHV0LCB0b2tlbnMsIHJlZ2V4LCByYXdNYXRjaGVzLCBtYXRjaGVzLCByZXN1bHQsIHpvbmUsIHNwZWNpZmljT2Zmc2V0IH07XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlRnJvbVRva2Vucyhsb2NhbGUsIGlucHV0LCBmb3JtYXQpIHtcbiAgY29uc3QgeyByZXN1bHQsIHpvbmUsIHNwZWNpZmljT2Zmc2V0LCBpbnZhbGlkUmVhc29uIH0gPSBleHBsYWluRnJvbVRva2Vucyhsb2NhbGUsIGlucHV0LCBmb3JtYXQpO1xuICByZXR1cm4gW3Jlc3VsdCwgem9uZSwgc3BlY2lmaWNPZmZzZXQsIGludmFsaWRSZWFzb25dO1xufVxuIiwgImltcG9ydCB7XG4gIGludGVnZXJCZXR3ZWVuLFxuICBpc0xlYXBZZWFyLFxuICB0aW1lT2JqZWN0LFxuICBkYXlzSW5ZZWFyLFxuICBkYXlzSW5Nb250aCxcbiAgd2Vla3NJbldlZWtZZWFyLFxuICBpc0ludGVnZXIsXG59IGZyb20gXCIuL3V0aWwuanNcIjtcbmltcG9ydCBJbnZhbGlkIGZyb20gXCIuL2ludmFsaWQuanNcIjtcblxuY29uc3Qgbm9uTGVhcExhZGRlciA9IFswLCAzMSwgNTksIDkwLCAxMjAsIDE1MSwgMTgxLCAyMTIsIDI0MywgMjczLCAzMDQsIDMzNF0sXG4gIGxlYXBMYWRkZXIgPSBbMCwgMzEsIDYwLCA5MSwgMTIxLCAxNTIsIDE4MiwgMjEzLCAyNDQsIDI3NCwgMzA1LCAzMzVdO1xuXG5mdW5jdGlvbiB1bml0T3V0T2ZSYW5nZSh1bml0LCB2YWx1ZSkge1xuICByZXR1cm4gbmV3IEludmFsaWQoXG4gICAgXCJ1bml0IG91dCBvZiByYW5nZVwiLFxuICAgIGB5b3Ugc3BlY2lmaWVkICR7dmFsdWV9IChvZiB0eXBlICR7dHlwZW9mIHZhbHVlfSkgYXMgYSAke3VuaXR9LCB3aGljaCBpcyBpbnZhbGlkYFxuICApO1xufVxuXG5mdW5jdGlvbiBkYXlPZldlZWsoeWVhciwgbW9udGgsIGRheSkge1xuICBjb25zdCBkID0gbmV3IERhdGUoRGF0ZS5VVEMoeWVhciwgbW9udGggLSAxLCBkYXkpKTtcblxuICBpZiAoeWVhciA8IDEwMCAmJiB5ZWFyID49IDApIHtcbiAgICBkLnNldFVUQ0Z1bGxZZWFyKGQuZ2V0VVRDRnVsbFllYXIoKSAtIDE5MDApO1xuICB9XG5cbiAgY29uc3QganMgPSBkLmdldFVUQ0RheSgpO1xuXG4gIHJldHVybiBqcyA9PT0gMCA/IDcgOiBqcztcbn1cblxuZnVuY3Rpb24gY29tcHV0ZU9yZGluYWwoeWVhciwgbW9udGgsIGRheSkge1xuICByZXR1cm4gZGF5ICsgKGlzTGVhcFllYXIoeWVhcikgPyBsZWFwTGFkZGVyIDogbm9uTGVhcExhZGRlcilbbW9udGggLSAxXTtcbn1cblxuZnVuY3Rpb24gdW5jb21wdXRlT3JkaW5hbCh5ZWFyLCBvcmRpbmFsKSB7XG4gIGNvbnN0IHRhYmxlID0gaXNMZWFwWWVhcih5ZWFyKSA/IGxlYXBMYWRkZXIgOiBub25MZWFwTGFkZGVyLFxuICAgIG1vbnRoMCA9IHRhYmxlLmZpbmRJbmRleCgoaSkgPT4gaSA8IG9yZGluYWwpLFxuICAgIGRheSA9IG9yZGluYWwgLSB0YWJsZVttb250aDBdO1xuICByZXR1cm4geyBtb250aDogbW9udGgwICsgMSwgZGF5IH07XG59XG5cbi8qKlxuICogQHByaXZhdGVcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZ3JlZ29yaWFuVG9XZWVrKGdyZWdPYmopIHtcbiAgY29uc3QgeyB5ZWFyLCBtb250aCwgZGF5IH0gPSBncmVnT2JqLFxuICAgIG9yZGluYWwgPSBjb21wdXRlT3JkaW5hbCh5ZWFyLCBtb250aCwgZGF5KSxcbiAgICB3ZWVrZGF5ID0gZGF5T2ZXZWVrKHllYXIsIG1vbnRoLCBkYXkpO1xuXG4gIGxldCB3ZWVrTnVtYmVyID0gTWF0aC5mbG9vcigob3JkaW5hbCAtIHdlZWtkYXkgKyAxMCkgLyA3KSxcbiAgICB3ZWVrWWVhcjtcblxuICBpZiAod2Vla051bWJlciA8IDEpIHtcbiAgICB3ZWVrWWVhciA9IHllYXIgLSAxO1xuICAgIHdlZWtOdW1iZXIgPSB3ZWVrc0luV2Vla1llYXIod2Vla1llYXIpO1xuICB9IGVsc2UgaWYgKHdlZWtOdW1iZXIgPiB3ZWVrc0luV2Vla1llYXIoeWVhcikpIHtcbiAgICB3ZWVrWWVhciA9IHllYXIgKyAxO1xuICAgIHdlZWtOdW1iZXIgPSAxO1xuICB9IGVsc2Uge1xuICAgIHdlZWtZZWFyID0geWVhcjtcbiAgfVxuXG4gIHJldHVybiB7IHdlZWtZZWFyLCB3ZWVrTnVtYmVyLCB3ZWVrZGF5LCAuLi50aW1lT2JqZWN0KGdyZWdPYmopIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3ZWVrVG9HcmVnb3JpYW4od2Vla0RhdGEpIHtcbiAgY29uc3QgeyB3ZWVrWWVhciwgd2Vla051bWJlciwgd2Vla2RheSB9ID0gd2Vla0RhdGEsXG4gICAgd2Vla2RheU9mSmFuNCA9IGRheU9mV2Vlayh3ZWVrWWVhciwgMSwgNCksXG4gICAgeWVhckluRGF5cyA9IGRheXNJblllYXIod2Vla1llYXIpO1xuXG4gIGxldCBvcmRpbmFsID0gd2Vla051bWJlciAqIDcgKyB3ZWVrZGF5IC0gd2Vla2RheU9mSmFuNCAtIDMsXG4gICAgeWVhcjtcblxuICBpZiAob3JkaW5hbCA8IDEpIHtcbiAgICB5ZWFyID0gd2Vla1llYXIgLSAxO1xuICAgIG9yZGluYWwgKz0gZGF5c0luWWVhcih5ZWFyKTtcbiAgfSBlbHNlIGlmIChvcmRpbmFsID4geWVhckluRGF5cykge1xuICAgIHllYXIgPSB3ZWVrWWVhciArIDE7XG4gICAgb3JkaW5hbCAtPSBkYXlzSW5ZZWFyKHdlZWtZZWFyKTtcbiAgfSBlbHNlIHtcbiAgICB5ZWFyID0gd2Vla1llYXI7XG4gIH1cblxuICBjb25zdCB7IG1vbnRoLCBkYXkgfSA9IHVuY29tcHV0ZU9yZGluYWwoeWVhciwgb3JkaW5hbCk7XG4gIHJldHVybiB7IHllYXIsIG1vbnRoLCBkYXksIC4uLnRpbWVPYmplY3Qod2Vla0RhdGEpIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBncmVnb3JpYW5Ub09yZGluYWwoZ3JlZ0RhdGEpIHtcbiAgY29uc3QgeyB5ZWFyLCBtb250aCwgZGF5IH0gPSBncmVnRGF0YTtcbiAgY29uc3Qgb3JkaW5hbCA9IGNvbXB1dGVPcmRpbmFsKHllYXIsIG1vbnRoLCBkYXkpO1xuICByZXR1cm4geyB5ZWFyLCBvcmRpbmFsLCAuLi50aW1lT2JqZWN0KGdyZWdEYXRhKSB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gb3JkaW5hbFRvR3JlZ29yaWFuKG9yZGluYWxEYXRhKSB7XG4gIGNvbnN0IHsgeWVhciwgb3JkaW5hbCB9ID0gb3JkaW5hbERhdGE7XG4gIGNvbnN0IHsgbW9udGgsIGRheSB9ID0gdW5jb21wdXRlT3JkaW5hbCh5ZWFyLCBvcmRpbmFsKTtcbiAgcmV0dXJuIHsgeWVhciwgbW9udGgsIGRheSwgLi4udGltZU9iamVjdChvcmRpbmFsRGF0YSkgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhhc0ludmFsaWRXZWVrRGF0YShvYmopIHtcbiAgY29uc3QgdmFsaWRZZWFyID0gaXNJbnRlZ2VyKG9iai53ZWVrWWVhciksXG4gICAgdmFsaWRXZWVrID0gaW50ZWdlckJldHdlZW4ob2JqLndlZWtOdW1iZXIsIDEsIHdlZWtzSW5XZWVrWWVhcihvYmoud2Vla1llYXIpKSxcbiAgICB2YWxpZFdlZWtkYXkgPSBpbnRlZ2VyQmV0d2VlbihvYmoud2Vla2RheSwgMSwgNyk7XG5cbiAgaWYgKCF2YWxpZFllYXIpIHtcbiAgICByZXR1cm4gdW5pdE91dE9mUmFuZ2UoXCJ3ZWVrWWVhclwiLCBvYmoud2Vla1llYXIpO1xuICB9IGVsc2UgaWYgKCF2YWxpZFdlZWspIHtcbiAgICByZXR1cm4gdW5pdE91dE9mUmFuZ2UoXCJ3ZWVrXCIsIG9iai53ZWVrKTtcbiAgfSBlbHNlIGlmICghdmFsaWRXZWVrZGF5KSB7XG4gICAgcmV0dXJuIHVuaXRPdXRPZlJhbmdlKFwid2Vla2RheVwiLCBvYmoud2Vla2RheSk7XG4gIH0gZWxzZSByZXR1cm4gZmFsc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYXNJbnZhbGlkT3JkaW5hbERhdGEob2JqKSB7XG4gIGNvbnN0IHZhbGlkWWVhciA9IGlzSW50ZWdlcihvYmoueWVhciksXG4gICAgdmFsaWRPcmRpbmFsID0gaW50ZWdlckJldHdlZW4ob2JqLm9yZGluYWwsIDEsIGRheXNJblllYXIob2JqLnllYXIpKTtcblxuICBpZiAoIXZhbGlkWWVhcikge1xuICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZShcInllYXJcIiwgb2JqLnllYXIpO1xuICB9IGVsc2UgaWYgKCF2YWxpZE9yZGluYWwpIHtcbiAgICByZXR1cm4gdW5pdE91dE9mUmFuZ2UoXCJvcmRpbmFsXCIsIG9iai5vcmRpbmFsKTtcbiAgfSBlbHNlIHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhhc0ludmFsaWRHcmVnb3JpYW5EYXRhKG9iaikge1xuICBjb25zdCB2YWxpZFllYXIgPSBpc0ludGVnZXIob2JqLnllYXIpLFxuICAgIHZhbGlkTW9udGggPSBpbnRlZ2VyQmV0d2VlbihvYmoubW9udGgsIDEsIDEyKSxcbiAgICB2YWxpZERheSA9IGludGVnZXJCZXR3ZWVuKG9iai5kYXksIDEsIGRheXNJbk1vbnRoKG9iai55ZWFyLCBvYmoubW9udGgpKTtcblxuICBpZiAoIXZhbGlkWWVhcikge1xuICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZShcInllYXJcIiwgb2JqLnllYXIpO1xuICB9IGVsc2UgaWYgKCF2YWxpZE1vbnRoKSB7XG4gICAgcmV0dXJuIHVuaXRPdXRPZlJhbmdlKFwibW9udGhcIiwgb2JqLm1vbnRoKTtcbiAgfSBlbHNlIGlmICghdmFsaWREYXkpIHtcbiAgICByZXR1cm4gdW5pdE91dE9mUmFuZ2UoXCJkYXlcIiwgb2JqLmRheSk7XG4gIH0gZWxzZSByZXR1cm4gZmFsc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYXNJbnZhbGlkVGltZURhdGEob2JqKSB7XG4gIGNvbnN0IHsgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pbGxpc2Vjb25kIH0gPSBvYmo7XG4gIGNvbnN0IHZhbGlkSG91ciA9XG4gICAgICBpbnRlZ2VyQmV0d2Vlbihob3VyLCAwLCAyMykgfHxcbiAgICAgIChob3VyID09PSAyNCAmJiBtaW51dGUgPT09IDAgJiYgc2Vjb25kID09PSAwICYmIG1pbGxpc2Vjb25kID09PSAwKSxcbiAgICB2YWxpZE1pbnV0ZSA9IGludGVnZXJCZXR3ZWVuKG1pbnV0ZSwgMCwgNTkpLFxuICAgIHZhbGlkU2Vjb25kID0gaW50ZWdlckJldHdlZW4oc2Vjb25kLCAwLCA1OSksXG4gICAgdmFsaWRNaWxsaXNlY29uZCA9IGludGVnZXJCZXR3ZWVuKG1pbGxpc2Vjb25kLCAwLCA5OTkpO1xuXG4gIGlmICghdmFsaWRIb3VyKSB7XG4gICAgcmV0dXJuIHVuaXRPdXRPZlJhbmdlKFwiaG91clwiLCBob3VyKTtcbiAgfSBlbHNlIGlmICghdmFsaWRNaW51dGUpIHtcbiAgICByZXR1cm4gdW5pdE91dE9mUmFuZ2UoXCJtaW51dGVcIiwgbWludXRlKTtcbiAgfSBlbHNlIGlmICghdmFsaWRTZWNvbmQpIHtcbiAgICByZXR1cm4gdW5pdE91dE9mUmFuZ2UoXCJzZWNvbmRcIiwgc2Vjb25kKTtcbiAgfSBlbHNlIGlmICghdmFsaWRNaWxsaXNlY29uZCkge1xuICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZShcIm1pbGxpc2Vjb25kXCIsIG1pbGxpc2Vjb25kKTtcbiAgfSBlbHNlIHJldHVybiBmYWxzZTtcbn1cbiIsICJpbXBvcnQgRHVyYXRpb24gZnJvbSBcIi4vZHVyYXRpb24uanNcIjtcbmltcG9ydCBJbnRlcnZhbCBmcm9tIFwiLi9pbnRlcnZhbC5qc1wiO1xuaW1wb3J0IFNldHRpbmdzIGZyb20gXCIuL3NldHRpbmdzLmpzXCI7XG5pbXBvcnQgSW5mbyBmcm9tIFwiLi9pbmZvLmpzXCI7XG5pbXBvcnQgRm9ybWF0dGVyIGZyb20gXCIuL2ltcGwvZm9ybWF0dGVyLmpzXCI7XG5pbXBvcnQgRml4ZWRPZmZzZXRab25lIGZyb20gXCIuL3pvbmVzL2ZpeGVkT2Zmc2V0Wm9uZS5qc1wiO1xuaW1wb3J0IExvY2FsZSBmcm9tIFwiLi9pbXBsL2xvY2FsZS5qc1wiO1xuaW1wb3J0IHtcbiAgaXNVbmRlZmluZWQsXG4gIG1heWJlQXJyYXksXG4gIGlzRGF0ZSxcbiAgaXNOdW1iZXIsXG4gIGJlc3RCeSxcbiAgZGF5c0luTW9udGgsXG4gIGRheXNJblllYXIsXG4gIGlzTGVhcFllYXIsXG4gIHdlZWtzSW5XZWVrWWVhcixcbiAgbm9ybWFsaXplT2JqZWN0LFxuICByb3VuZFRvLFxuICBvYmpUb0xvY2FsVFMsXG4gIHBhZFN0YXJ0LFxufSBmcm9tIFwiLi9pbXBsL3V0aWwuanNcIjtcbmltcG9ydCB7IG5vcm1hbGl6ZVpvbmUgfSBmcm9tIFwiLi9pbXBsL3pvbmVVdGlsLmpzXCI7XG5pbXBvcnQgZGlmZiBmcm9tIFwiLi9pbXBsL2RpZmYuanNcIjtcbmltcG9ydCB7IHBhcnNlUkZDMjgyMkRhdGUsIHBhcnNlSVNPRGF0ZSwgcGFyc2VIVFRQRGF0ZSwgcGFyc2VTUUwgfSBmcm9tIFwiLi9pbXBsL3JlZ2V4UGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBwYXJzZUZyb21Ub2tlbnMsIGV4cGxhaW5Gcm9tVG9rZW5zIH0gZnJvbSBcIi4vaW1wbC90b2tlblBhcnNlci5qc1wiO1xuaW1wb3J0IHtcbiAgZ3JlZ29yaWFuVG9XZWVrLFxuICB3ZWVrVG9HcmVnb3JpYW4sXG4gIGdyZWdvcmlhblRvT3JkaW5hbCxcbiAgb3JkaW5hbFRvR3JlZ29yaWFuLFxuICBoYXNJbnZhbGlkR3JlZ29yaWFuRGF0YSxcbiAgaGFzSW52YWxpZFdlZWtEYXRhLFxuICBoYXNJbnZhbGlkT3JkaW5hbERhdGEsXG4gIGhhc0ludmFsaWRUaW1lRGF0YSxcbn0gZnJvbSBcIi4vaW1wbC9jb252ZXJzaW9ucy5qc1wiO1xuaW1wb3J0ICogYXMgRm9ybWF0cyBmcm9tIFwiLi9pbXBsL2Zvcm1hdHMuanNcIjtcbmltcG9ydCB7XG4gIEludmFsaWRBcmd1bWVudEVycm9yLFxuICBDb25mbGljdGluZ1NwZWNpZmljYXRpb25FcnJvcixcbiAgSW52YWxpZFVuaXRFcnJvcixcbiAgSW52YWxpZERhdGVUaW1lRXJyb3IsXG59IGZyb20gXCIuL2Vycm9ycy5qc1wiO1xuaW1wb3J0IEludmFsaWQgZnJvbSBcIi4vaW1wbC9pbnZhbGlkLmpzXCI7XG5cbmNvbnN0IElOVkFMSUQgPSBcIkludmFsaWQgRGF0ZVRpbWVcIjtcbmNvbnN0IE1BWF9EQVRFID0gOC42NGUxNTtcblxuZnVuY3Rpb24gdW5zdXBwb3J0ZWRab25lKHpvbmUpIHtcbiAgcmV0dXJuIG5ldyBJbnZhbGlkKFwidW5zdXBwb3J0ZWQgem9uZVwiLCBgdGhlIHpvbmUgXCIke3pvbmUubmFtZX1cIiBpcyBub3Qgc3VwcG9ydGVkYCk7XG59XG5cbi8vIHdlIGNhY2hlIHdlZWsgZGF0YSBvbiB0aGUgRFQgb2JqZWN0IGFuZCB0aGlzIGludGVybWVkaWF0ZXMgdGhlIGNhY2hlXG5mdW5jdGlvbiBwb3NzaWJseUNhY2hlZFdlZWtEYXRhKGR0KSB7XG4gIGlmIChkdC53ZWVrRGF0YSA9PT0gbnVsbCkge1xuICAgIGR0LndlZWtEYXRhID0gZ3JlZ29yaWFuVG9XZWVrKGR0LmMpO1xuICB9XG4gIHJldHVybiBkdC53ZWVrRGF0YTtcbn1cblxuLy8gY2xvbmUgcmVhbGx5IG1lYW5zLCBcIm1ha2UgYSBuZXcgb2JqZWN0IHdpdGggdGhlc2UgbW9kaWZpY2F0aW9uc1wiLiBhbGwgXCJzZXR0ZXJzXCIgcmVhbGx5IHVzZSB0aGlzXG4vLyB0byBjcmVhdGUgYSBuZXcgb2JqZWN0IHdoaWxlIG9ubHkgY2hhbmdpbmcgc29tZSBvZiB0aGUgcHJvcGVydGllc1xuZnVuY3Rpb24gY2xvbmUoaW5zdCwgYWx0cykge1xuICBjb25zdCBjdXJyZW50ID0ge1xuICAgIHRzOiBpbnN0LnRzLFxuICAgIHpvbmU6IGluc3Quem9uZSxcbiAgICBjOiBpbnN0LmMsXG4gICAgbzogaW5zdC5vLFxuICAgIGxvYzogaW5zdC5sb2MsXG4gICAgaW52YWxpZDogaW5zdC5pbnZhbGlkLFxuICB9O1xuICByZXR1cm4gbmV3IERhdGVUaW1lKHsgLi4uY3VycmVudCwgLi4uYWx0cywgb2xkOiBjdXJyZW50IH0pO1xufVxuXG4vLyBmaW5kIHRoZSByaWdodCBvZmZzZXQgYSBnaXZlbiBsb2NhbCB0aW1lLiBUaGUgbyBpbnB1dCBpcyBvdXIgZ3Vlc3MsIHdoaWNoIGRldGVybWluZXMgd2hpY2hcbi8vIG9mZnNldCB3ZSdsbCBwaWNrIGluIGFtYmlndW91cyBjYXNlcyAoZS5nLiB0aGVyZSBhcmUgdHdvIDMgQU1zIGIvYyBGYWxsYmFjayBEU1QpXG5mdW5jdGlvbiBmaXhPZmZzZXQobG9jYWxUUywgbywgdHopIHtcbiAgLy8gT3VyIFVUQyB0aW1lIGlzIGp1c3QgYSBndWVzcyBiZWNhdXNlIG91ciBvZmZzZXQgaXMganVzdCBhIGd1ZXNzXG4gIGxldCB1dGNHdWVzcyA9IGxvY2FsVFMgLSBvICogNjAgKiAxMDAwO1xuXG4gIC8vIFRlc3Qgd2hldGhlciB0aGUgem9uZSBtYXRjaGVzIHRoZSBvZmZzZXQgZm9yIHRoaXMgdHNcbiAgY29uc3QgbzIgPSB0ei5vZmZzZXQodXRjR3Vlc3MpO1xuXG4gIC8vIElmIHNvLCBvZmZzZXQgZGlkbid0IGNoYW5nZSBhbmQgd2UncmUgZG9uZVxuICBpZiAobyA9PT0gbzIpIHtcbiAgICByZXR1cm4gW3V0Y0d1ZXNzLCBvXTtcbiAgfVxuXG4gIC8vIElmIG5vdCwgY2hhbmdlIHRoZSB0cyBieSB0aGUgZGlmZmVyZW5jZSBpbiB0aGUgb2Zmc2V0XG4gIHV0Y0d1ZXNzIC09IChvMiAtIG8pICogNjAgKiAxMDAwO1xuXG4gIC8vIElmIHRoYXQgZ2l2ZXMgdXMgdGhlIGxvY2FsIHRpbWUgd2Ugd2FudCwgd2UncmUgZG9uZVxuICBjb25zdCBvMyA9IHR6Lm9mZnNldCh1dGNHdWVzcyk7XG4gIGlmIChvMiA9PT0gbzMpIHtcbiAgICByZXR1cm4gW3V0Y0d1ZXNzLCBvMl07XG4gIH1cblxuICAvLyBJZiBpdCdzIGRpZmZlcmVudCwgd2UncmUgaW4gYSBob2xlIHRpbWUuIFRoZSBvZmZzZXQgaGFzIGNoYW5nZWQsIGJ1dCB0aGUgd2UgZG9uJ3QgYWRqdXN0IHRoZSB0aW1lXG4gIHJldHVybiBbbG9jYWxUUyAtIE1hdGgubWluKG8yLCBvMykgKiA2MCAqIDEwMDAsIE1hdGgubWF4KG8yLCBvMyldO1xufVxuXG4vLyBjb252ZXJ0IGFuIGVwb2NoIHRpbWVzdGFtcCBpbnRvIGEgY2FsZW5kYXIgb2JqZWN0IHdpdGggdGhlIGdpdmVuIG9mZnNldFxuZnVuY3Rpb24gdHNUb09iaih0cywgb2Zmc2V0KSB7XG4gIHRzICs9IG9mZnNldCAqIDYwICogMTAwMDtcblxuICBjb25zdCBkID0gbmV3IERhdGUodHMpO1xuXG4gIHJldHVybiB7XG4gICAgeWVhcjogZC5nZXRVVENGdWxsWWVhcigpLFxuICAgIG1vbnRoOiBkLmdldFVUQ01vbnRoKCkgKyAxLFxuICAgIGRheTogZC5nZXRVVENEYXRlKCksXG4gICAgaG91cjogZC5nZXRVVENIb3VycygpLFxuICAgIG1pbnV0ZTogZC5nZXRVVENNaW51dGVzKCksXG4gICAgc2Vjb25kOiBkLmdldFVUQ1NlY29uZHMoKSxcbiAgICBtaWxsaXNlY29uZDogZC5nZXRVVENNaWxsaXNlY29uZHMoKSxcbiAgfTtcbn1cblxuLy8gY29udmVydCBhIGNhbGVuZGFyIG9iamVjdCB0byBhIGVwb2NoIHRpbWVzdGFtcFxuZnVuY3Rpb24gb2JqVG9UUyhvYmosIG9mZnNldCwgem9uZSkge1xuICByZXR1cm4gZml4T2Zmc2V0KG9ialRvTG9jYWxUUyhvYmopLCBvZmZzZXQsIHpvbmUpO1xufVxuXG4vLyBjcmVhdGUgYSBuZXcgRFQgaW5zdGFuY2UgYnkgYWRkaW5nIGEgZHVyYXRpb24sIGFkanVzdGluZyBmb3IgRFNUc1xuZnVuY3Rpb24gYWRqdXN0VGltZShpbnN0LCBkdXIpIHtcbiAgY29uc3Qgb1ByZSA9IGluc3QubyxcbiAgICB5ZWFyID0gaW5zdC5jLnllYXIgKyBNYXRoLnRydW5jKGR1ci55ZWFycyksXG4gICAgbW9udGggPSBpbnN0LmMubW9udGggKyBNYXRoLnRydW5jKGR1ci5tb250aHMpICsgTWF0aC50cnVuYyhkdXIucXVhcnRlcnMpICogMyxcbiAgICBjID0ge1xuICAgICAgLi4uaW5zdC5jLFxuICAgICAgeWVhcixcbiAgICAgIG1vbnRoLFxuICAgICAgZGF5OlxuICAgICAgICBNYXRoLm1pbihpbnN0LmMuZGF5LCBkYXlzSW5Nb250aCh5ZWFyLCBtb250aCkpICtcbiAgICAgICAgTWF0aC50cnVuYyhkdXIuZGF5cykgK1xuICAgICAgICBNYXRoLnRydW5jKGR1ci53ZWVrcykgKiA3LFxuICAgIH0sXG4gICAgbWlsbGlzVG9BZGQgPSBEdXJhdGlvbi5mcm9tT2JqZWN0KHtcbiAgICAgIHllYXJzOiBkdXIueWVhcnMgLSBNYXRoLnRydW5jKGR1ci55ZWFycyksXG4gICAgICBxdWFydGVyczogZHVyLnF1YXJ0ZXJzIC0gTWF0aC50cnVuYyhkdXIucXVhcnRlcnMpLFxuICAgICAgbW9udGhzOiBkdXIubW9udGhzIC0gTWF0aC50cnVuYyhkdXIubW9udGhzKSxcbiAgICAgIHdlZWtzOiBkdXIud2Vla3MgLSBNYXRoLnRydW5jKGR1ci53ZWVrcyksXG4gICAgICBkYXlzOiBkdXIuZGF5cyAtIE1hdGgudHJ1bmMoZHVyLmRheXMpLFxuICAgICAgaG91cnM6IGR1ci5ob3VycyxcbiAgICAgIG1pbnV0ZXM6IGR1ci5taW51dGVzLFxuICAgICAgc2Vjb25kczogZHVyLnNlY29uZHMsXG4gICAgICBtaWxsaXNlY29uZHM6IGR1ci5taWxsaXNlY29uZHMsXG4gICAgfSkuYXMoXCJtaWxsaXNlY29uZHNcIiksXG4gICAgbG9jYWxUUyA9IG9ialRvTG9jYWxUUyhjKTtcblxuICBsZXQgW3RzLCBvXSA9IGZpeE9mZnNldChsb2NhbFRTLCBvUHJlLCBpbnN0LnpvbmUpO1xuXG4gIGlmIChtaWxsaXNUb0FkZCAhPT0gMCkge1xuICAgIHRzICs9IG1pbGxpc1RvQWRkO1xuICAgIC8vIHRoYXQgY291bGQgaGF2ZSBjaGFuZ2VkIHRoZSBvZmZzZXQgYnkgZ29pbmcgb3ZlciBhIERTVCwgYnV0IHdlIHdhbnQgdG8ga2VlcCB0aGUgdHMgdGhlIHNhbWVcbiAgICBvID0gaW5zdC56b25lLm9mZnNldCh0cyk7XG4gIH1cblxuICByZXR1cm4geyB0cywgbyB9O1xufVxuXG4vLyBoZWxwZXIgdXNlZnVsIGluIHR1cm5pbmcgdGhlIHJlc3VsdHMgb2YgcGFyc2luZyBpbnRvIHJlYWwgZGF0ZXNcbi8vIGJ5IGhhbmRsaW5nIHRoZSB6b25lIG9wdGlvbnNcbmZ1bmN0aW9uIHBhcnNlRGF0YVRvRGF0ZVRpbWUocGFyc2VkLCBwYXJzZWRab25lLCBvcHRzLCBmb3JtYXQsIHRleHQsIHNwZWNpZmljT2Zmc2V0KSB7XG4gIGNvbnN0IHsgc2V0Wm9uZSwgem9uZSB9ID0gb3B0cztcbiAgaWYgKHBhcnNlZCAmJiBPYmplY3Qua2V5cyhwYXJzZWQpLmxlbmd0aCAhPT0gMCkge1xuICAgIGNvbnN0IGludGVycHJldGF0aW9uWm9uZSA9IHBhcnNlZFpvbmUgfHwgem9uZSxcbiAgICAgIGluc3QgPSBEYXRlVGltZS5mcm9tT2JqZWN0KHBhcnNlZCwge1xuICAgICAgICAuLi5vcHRzLFxuICAgICAgICB6b25lOiBpbnRlcnByZXRhdGlvblpvbmUsXG4gICAgICAgIHNwZWNpZmljT2Zmc2V0LFxuICAgICAgfSk7XG4gICAgcmV0dXJuIHNldFpvbmUgPyBpbnN0IDogaW5zdC5zZXRab25lKHpvbmUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBEYXRlVGltZS5pbnZhbGlkKFxuICAgICAgbmV3IEludmFsaWQoXCJ1bnBhcnNhYmxlXCIsIGB0aGUgaW5wdXQgXCIke3RleHR9XCIgY2FuJ3QgYmUgcGFyc2VkIGFzICR7Zm9ybWF0fWApXG4gICAgKTtcbiAgfVxufVxuXG4vLyBpZiB5b3Ugd2FudCB0byBvdXRwdXQgYSB0ZWNobmljYWwgZm9ybWF0IChlLmcuIFJGQyAyODIyKSwgdGhpcyBoZWxwZXJcbi8vIGhlbHBzIGhhbmRsZSB0aGUgZGV0YWlsc1xuZnVuY3Rpb24gdG9UZWNoRm9ybWF0KGR0LCBmb3JtYXQsIGFsbG93WiA9IHRydWUpIHtcbiAgcmV0dXJuIGR0LmlzVmFsaWRcbiAgICA/IEZvcm1hdHRlci5jcmVhdGUoTG9jYWxlLmNyZWF0ZShcImVuLVVTXCIpLCB7XG4gICAgICAgIGFsbG93WixcbiAgICAgICAgZm9yY2VTaW1wbGU6IHRydWUsXG4gICAgICB9KS5mb3JtYXREYXRlVGltZUZyb21TdHJpbmcoZHQsIGZvcm1hdClcbiAgICA6IG51bGw7XG59XG5cbmZ1bmN0aW9uIHRvSVNPRGF0ZShvLCBleHRlbmRlZCkge1xuICBjb25zdCBsb25nRm9ybWF0ID0gby5jLnllYXIgPiA5OTk5IHx8IG8uYy55ZWFyIDwgMDtcbiAgbGV0IGMgPSBcIlwiO1xuICBpZiAobG9uZ0Zvcm1hdCAmJiBvLmMueWVhciA+PSAwKSBjICs9IFwiK1wiO1xuICBjICs9IHBhZFN0YXJ0KG8uYy55ZWFyLCBsb25nRm9ybWF0ID8gNiA6IDQpO1xuXG4gIGlmIChleHRlbmRlZCkge1xuICAgIGMgKz0gXCItXCI7XG4gICAgYyArPSBwYWRTdGFydChvLmMubW9udGgpO1xuICAgIGMgKz0gXCItXCI7XG4gICAgYyArPSBwYWRTdGFydChvLmMuZGF5KTtcbiAgfSBlbHNlIHtcbiAgICBjICs9IHBhZFN0YXJ0KG8uYy5tb250aCk7XG4gICAgYyArPSBwYWRTdGFydChvLmMuZGF5KTtcbiAgfVxuICByZXR1cm4gYztcbn1cblxuZnVuY3Rpb24gdG9JU09UaW1lKFxuICBvLFxuICBleHRlbmRlZCxcbiAgc3VwcHJlc3NTZWNvbmRzLFxuICBzdXBwcmVzc01pbGxpc2Vjb25kcyxcbiAgaW5jbHVkZU9mZnNldCxcbiAgZXh0ZW5kZWRab25lXG4pIHtcbiAgbGV0IGMgPSBwYWRTdGFydChvLmMuaG91cik7XG4gIGlmIChleHRlbmRlZCkge1xuICAgIGMgKz0gXCI6XCI7XG4gICAgYyArPSBwYWRTdGFydChvLmMubWludXRlKTtcbiAgICBpZiAoby5jLnNlY29uZCAhPT0gMCB8fCAhc3VwcHJlc3NTZWNvbmRzKSB7XG4gICAgICBjICs9IFwiOlwiO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBjICs9IHBhZFN0YXJ0KG8uYy5taW51dGUpO1xuICB9XG5cbiAgaWYgKG8uYy5zZWNvbmQgIT09IDAgfHwgIXN1cHByZXNzU2Vjb25kcykge1xuICAgIGMgKz0gcGFkU3RhcnQoby5jLnNlY29uZCk7XG5cbiAgICBpZiAoby5jLm1pbGxpc2Vjb25kICE9PSAwIHx8ICFzdXBwcmVzc01pbGxpc2Vjb25kcykge1xuICAgICAgYyArPSBcIi5cIjtcbiAgICAgIGMgKz0gcGFkU3RhcnQoby5jLm1pbGxpc2Vjb25kLCAzKTtcbiAgICB9XG4gIH1cblxuICBpZiAoaW5jbHVkZU9mZnNldCkge1xuICAgIGlmIChvLmlzT2Zmc2V0Rml4ZWQgJiYgby5vZmZzZXQgPT09IDAgJiYgIWV4dGVuZGVkWm9uZSkge1xuICAgICAgYyArPSBcIlpcIjtcbiAgICB9IGVsc2UgaWYgKG8ubyA8IDApIHtcbiAgICAgIGMgKz0gXCItXCI7XG4gICAgICBjICs9IHBhZFN0YXJ0KE1hdGgudHJ1bmMoLW8ubyAvIDYwKSk7XG4gICAgICBjICs9IFwiOlwiO1xuICAgICAgYyArPSBwYWRTdGFydChNYXRoLnRydW5jKC1vLm8gJSA2MCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjICs9IFwiK1wiO1xuICAgICAgYyArPSBwYWRTdGFydChNYXRoLnRydW5jKG8ubyAvIDYwKSk7XG4gICAgICBjICs9IFwiOlwiO1xuICAgICAgYyArPSBwYWRTdGFydChNYXRoLnRydW5jKG8ubyAlIDYwKSk7XG4gICAgfVxuICB9XG5cbiAgaWYgKGV4dGVuZGVkWm9uZSkge1xuICAgIGMgKz0gXCJbXCIgKyBvLnpvbmUuaWFuYU5hbWUgKyBcIl1cIjtcbiAgfVxuICByZXR1cm4gYztcbn1cblxuLy8gZGVmYXVsdHMgZm9yIHVuc3BlY2lmaWVkIHVuaXRzIGluIHRoZSBzdXBwb3J0ZWQgY2FsZW5kYXJzXG5jb25zdCBkZWZhdWx0VW5pdFZhbHVlcyA9IHtcbiAgICBtb250aDogMSxcbiAgICBkYXk6IDEsXG4gICAgaG91cjogMCxcbiAgICBtaW51dGU6IDAsXG4gICAgc2Vjb25kOiAwLFxuICAgIG1pbGxpc2Vjb25kOiAwLFxuICB9LFxuICBkZWZhdWx0V2Vla1VuaXRWYWx1ZXMgPSB7XG4gICAgd2Vla051bWJlcjogMSxcbiAgICB3ZWVrZGF5OiAxLFxuICAgIGhvdXI6IDAsXG4gICAgbWludXRlOiAwLFxuICAgIHNlY29uZDogMCxcbiAgICBtaWxsaXNlY29uZDogMCxcbiAgfSxcbiAgZGVmYXVsdE9yZGluYWxVbml0VmFsdWVzID0ge1xuICAgIG9yZGluYWw6IDEsXG4gICAgaG91cjogMCxcbiAgICBtaW51dGU6IDAsXG4gICAgc2Vjb25kOiAwLFxuICAgIG1pbGxpc2Vjb25kOiAwLFxuICB9O1xuXG4vLyBVbml0cyBpbiB0aGUgc3VwcG9ydGVkIGNhbGVuZGFycywgc29ydGVkIGJ5IGJpZ25lc3NcbmNvbnN0IG9yZGVyZWRVbml0cyA9IFtcInllYXJcIiwgXCJtb250aFwiLCBcImRheVwiLCBcImhvdXJcIiwgXCJtaW51dGVcIiwgXCJzZWNvbmRcIiwgXCJtaWxsaXNlY29uZFwiXSxcbiAgb3JkZXJlZFdlZWtVbml0cyA9IFtcbiAgICBcIndlZWtZZWFyXCIsXG4gICAgXCJ3ZWVrTnVtYmVyXCIsXG4gICAgXCJ3ZWVrZGF5XCIsXG4gICAgXCJob3VyXCIsXG4gICAgXCJtaW51dGVcIixcbiAgICBcInNlY29uZFwiLFxuICAgIFwibWlsbGlzZWNvbmRcIixcbiAgXSxcbiAgb3JkZXJlZE9yZGluYWxVbml0cyA9IFtcInllYXJcIiwgXCJvcmRpbmFsXCIsIFwiaG91clwiLCBcIm1pbnV0ZVwiLCBcInNlY29uZFwiLCBcIm1pbGxpc2Vjb25kXCJdO1xuXG4vLyBzdGFuZGFyZGl6ZSBjYXNlIGFuZCBwbHVyYWxpdHkgaW4gdW5pdHNcbmZ1bmN0aW9uIG5vcm1hbGl6ZVVuaXQodW5pdCkge1xuICBjb25zdCBub3JtYWxpemVkID0ge1xuICAgIHllYXI6IFwieWVhclwiLFxuICAgIHllYXJzOiBcInllYXJcIixcbiAgICBtb250aDogXCJtb250aFwiLFxuICAgIG1vbnRoczogXCJtb250aFwiLFxuICAgIGRheTogXCJkYXlcIixcbiAgICBkYXlzOiBcImRheVwiLFxuICAgIGhvdXI6IFwiaG91clwiLFxuICAgIGhvdXJzOiBcImhvdXJcIixcbiAgICBtaW51dGU6IFwibWludXRlXCIsXG4gICAgbWludXRlczogXCJtaW51dGVcIixcbiAgICBxdWFydGVyOiBcInF1YXJ0ZXJcIixcbiAgICBxdWFydGVyczogXCJxdWFydGVyXCIsXG4gICAgc2Vjb25kOiBcInNlY29uZFwiLFxuICAgIHNlY29uZHM6IFwic2Vjb25kXCIsXG4gICAgbWlsbGlzZWNvbmQ6IFwibWlsbGlzZWNvbmRcIixcbiAgICBtaWxsaXNlY29uZHM6IFwibWlsbGlzZWNvbmRcIixcbiAgICB3ZWVrZGF5OiBcIndlZWtkYXlcIixcbiAgICB3ZWVrZGF5czogXCJ3ZWVrZGF5XCIsXG4gICAgd2Vla251bWJlcjogXCJ3ZWVrTnVtYmVyXCIsXG4gICAgd2Vla3NudW1iZXI6IFwid2Vla051bWJlclwiLFxuICAgIHdlZWtudW1iZXJzOiBcIndlZWtOdW1iZXJcIixcbiAgICB3ZWVreWVhcjogXCJ3ZWVrWWVhclwiLFxuICAgIHdlZWt5ZWFyczogXCJ3ZWVrWWVhclwiLFxuICAgIG9yZGluYWw6IFwib3JkaW5hbFwiLFxuICB9W3VuaXQudG9Mb3dlckNhc2UoKV07XG5cbiAgaWYgKCFub3JtYWxpemVkKSB0aHJvdyBuZXcgSW52YWxpZFVuaXRFcnJvcih1bml0KTtcblxuICByZXR1cm4gbm9ybWFsaXplZDtcbn1cblxuLy8gdGhpcyBpcyBhIGR1bWJlZCBkb3duIHZlcnNpb24gb2YgZnJvbU9iamVjdCgpIHRoYXQgcnVucyBhYm91dCA2MCUgZmFzdGVyXG4vLyBidXQgZG9lc24ndCBkbyBhbnkgdmFsaWRhdGlvbiwgbWFrZXMgYSBidW5jaCBvZiBhc3N1bXB0aW9ucyBhYm91dCB3aGF0IHVuaXRzXG4vLyBhcmUgcHJlc2VudCwgYW5kIHNvIG9uLlxuZnVuY3Rpb24gcXVpY2tEVChvYmosIG9wdHMpIHtcbiAgY29uc3Qgem9uZSA9IG5vcm1hbGl6ZVpvbmUob3B0cy56b25lLCBTZXR0aW5ncy5kZWZhdWx0Wm9uZSksXG4gICAgbG9jID0gTG9jYWxlLmZyb21PYmplY3Qob3B0cyksXG4gICAgdHNOb3cgPSBTZXR0aW5ncy5ub3coKTtcblxuICBsZXQgdHMsIG87XG5cbiAgLy8gYXNzdW1lIHdlIGhhdmUgdGhlIGhpZ2hlci1vcmRlciB1bml0c1xuICBpZiAoIWlzVW5kZWZpbmVkKG9iai55ZWFyKSkge1xuICAgIGZvciAoY29uc3QgdSBvZiBvcmRlcmVkVW5pdHMpIHtcbiAgICAgIGlmIChpc1VuZGVmaW5lZChvYmpbdV0pKSB7XG4gICAgICAgIG9ialt1XSA9IGRlZmF1bHRVbml0VmFsdWVzW3VdO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGludmFsaWQgPSBoYXNJbnZhbGlkR3JlZ29yaWFuRGF0YShvYmopIHx8IGhhc0ludmFsaWRUaW1lRGF0YShvYmopO1xuICAgIGlmIChpbnZhbGlkKSB7XG4gICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZChpbnZhbGlkKTtcbiAgICB9XG5cbiAgICBjb25zdCBvZmZzZXRQcm92aXMgPSB6b25lLm9mZnNldCh0c05vdyk7XG4gICAgW3RzLCBvXSA9IG9ialRvVFMob2JqLCBvZmZzZXRQcm92aXMsIHpvbmUpO1xuICB9IGVsc2Uge1xuICAgIHRzID0gdHNOb3c7XG4gIH1cblxuICByZXR1cm4gbmV3IERhdGVUaW1lKHsgdHMsIHpvbmUsIGxvYywgbyB9KTtcbn1cblxuZnVuY3Rpb24gZGlmZlJlbGF0aXZlKHN0YXJ0LCBlbmQsIG9wdHMpIHtcbiAgY29uc3Qgcm91bmQgPSBpc1VuZGVmaW5lZChvcHRzLnJvdW5kKSA/IHRydWUgOiBvcHRzLnJvdW5kLFxuICAgIGZvcm1hdCA9IChjLCB1bml0KSA9PiB7XG4gICAgICBjID0gcm91bmRUbyhjLCByb3VuZCB8fCBvcHRzLmNhbGVuZGFyeSA/IDAgOiAyLCB0cnVlKTtcbiAgICAgIGNvbnN0IGZvcm1hdHRlciA9IGVuZC5sb2MuY2xvbmUob3B0cykucmVsRm9ybWF0dGVyKG9wdHMpO1xuICAgICAgcmV0dXJuIGZvcm1hdHRlci5mb3JtYXQoYywgdW5pdCk7XG4gICAgfSxcbiAgICBkaWZmZXIgPSAodW5pdCkgPT4ge1xuICAgICAgaWYgKG9wdHMuY2FsZW5kYXJ5KSB7XG4gICAgICAgIGlmICghZW5kLmhhc1NhbWUoc3RhcnQsIHVuaXQpKSB7XG4gICAgICAgICAgcmV0dXJuIGVuZC5zdGFydE9mKHVuaXQpLmRpZmYoc3RhcnQuc3RhcnRPZih1bml0KSwgdW5pdCkuZ2V0KHVuaXQpO1xuICAgICAgICB9IGVsc2UgcmV0dXJuIDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZW5kLmRpZmYoc3RhcnQsIHVuaXQpLmdldCh1bml0KTtcbiAgICAgIH1cbiAgICB9O1xuXG4gIGlmIChvcHRzLnVuaXQpIHtcbiAgICByZXR1cm4gZm9ybWF0KGRpZmZlcihvcHRzLnVuaXQpLCBvcHRzLnVuaXQpO1xuICB9XG5cbiAgZm9yIChjb25zdCB1bml0IG9mIG9wdHMudW5pdHMpIHtcbiAgICBjb25zdCBjb3VudCA9IGRpZmZlcih1bml0KTtcbiAgICBpZiAoTWF0aC5hYnMoY291bnQpID49IDEpIHtcbiAgICAgIHJldHVybiBmb3JtYXQoY291bnQsIHVuaXQpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZm9ybWF0KHN0YXJ0ID4gZW5kID8gLTAgOiAwLCBvcHRzLnVuaXRzW29wdHMudW5pdHMubGVuZ3RoIC0gMV0pO1xufVxuXG5mdW5jdGlvbiBsYXN0T3B0cyhhcmdMaXN0KSB7XG4gIGxldCBvcHRzID0ge30sXG4gICAgYXJncztcbiAgaWYgKGFyZ0xpc3QubGVuZ3RoID4gMCAmJiB0eXBlb2YgYXJnTGlzdFthcmdMaXN0Lmxlbmd0aCAtIDFdID09PSBcIm9iamVjdFwiKSB7XG4gICAgb3B0cyA9IGFyZ0xpc3RbYXJnTGlzdC5sZW5ndGggLSAxXTtcbiAgICBhcmdzID0gQXJyYXkuZnJvbShhcmdMaXN0KS5zbGljZSgwLCBhcmdMaXN0Lmxlbmd0aCAtIDEpO1xuICB9IGVsc2Uge1xuICAgIGFyZ3MgPSBBcnJheS5mcm9tKGFyZ0xpc3QpO1xuICB9XG4gIHJldHVybiBbb3B0cywgYXJnc107XG59XG5cbi8qKlxuICogQSBEYXRlVGltZSBpcyBhbiBpbW11dGFibGUgZGF0YSBzdHJ1Y3R1cmUgcmVwcmVzZW50aW5nIGEgc3BlY2lmaWMgZGF0ZSBhbmQgdGltZSBhbmQgYWNjb21wYW55aW5nIG1ldGhvZHMuIEl0IGNvbnRhaW5zIGNsYXNzIGFuZCBpbnN0YW5jZSBtZXRob2RzIGZvciBjcmVhdGluZywgcGFyc2luZywgaW50ZXJyb2dhdGluZywgdHJhbnNmb3JtaW5nLCBhbmQgZm9ybWF0dGluZyB0aGVtLlxuICpcbiAqIEEgRGF0ZVRpbWUgY29tcHJpc2VzIG9mOlxuICogKiBBIHRpbWVzdGFtcC4gRWFjaCBEYXRlVGltZSBpbnN0YW5jZSByZWZlcnMgdG8gYSBzcGVjaWZpYyBtaWxsaXNlY29uZCBvZiB0aGUgVW5peCBlcG9jaC5cbiAqICogQSB0aW1lIHpvbmUuIEVhY2ggaW5zdGFuY2UgaXMgY29uc2lkZXJlZCBpbiB0aGUgY29udGV4dCBvZiBhIHNwZWNpZmljIHpvbmUgKGJ5IGRlZmF1bHQgdGhlIGxvY2FsIHN5c3RlbSdzIHpvbmUpLlxuICogKiBDb25maWd1cmF0aW9uIHByb3BlcnRpZXMgdGhhdCBlZmZlY3QgaG93IG91dHB1dCBzdHJpbmdzIGFyZSBmb3JtYXR0ZWQsIHN1Y2ggYXMgYGxvY2FsZWAsIGBudW1iZXJpbmdTeXN0ZW1gLCBhbmQgYG91dHB1dENhbGVuZGFyYC5cbiAqXG4gKiBIZXJlIGlzIGEgYnJpZWYgb3ZlcnZpZXcgb2YgdGhlIG1vc3QgY29tbW9ubHkgdXNlZCBmdW5jdGlvbmFsaXR5IGl0IHByb3ZpZGVzOlxuICpcbiAqICogKipDcmVhdGlvbioqOiBUbyBjcmVhdGUgYSBEYXRlVGltZSBmcm9tIGl0cyBjb21wb25lbnRzLCB1c2Ugb25lIG9mIGl0cyBmYWN0b3J5IGNsYXNzIG1ldGhvZHM6IHtAbGluayBEYXRlVGltZSNsb2NhbH0sIHtAbGluayBEYXRlVGltZSN1dGN9LCBhbmQgKG1vc3QgZmxleGlibHkpIHtAbGluayBEYXRlVGltZSNmcm9tT2JqZWN0fS4gVG8gY3JlYXRlIG9uZSBmcm9tIGEgc3RhbmRhcmQgc3RyaW5nIGZvcm1hdCwgdXNlIHtAbGluayBEYXRlVGltZSNmcm9tSVNPfSwge0BsaW5rIERhdGVUaW1lI2Zyb21IVFRQfSwgYW5kIHtAbGluayBEYXRlVGltZSNmcm9tUkZDMjgyMn0uIFRvIGNyZWF0ZSBvbmUgZnJvbSBhIGN1c3RvbSBzdHJpbmcgZm9ybWF0LCB1c2Uge0BsaW5rIERhdGVUaW1lI2Zyb21Gb3JtYXR9LiBUbyBjcmVhdGUgb25lIGZyb20gYSBuYXRpdmUgSlMgZGF0ZSwgdXNlIHtAbGluayBEYXRlVGltZSNmcm9tSlNEYXRlfS5cbiAqICogKipHcmVnb3JpYW4gY2FsZW5kYXIgYW5kIHRpbWUqKjogVG8gZXhhbWluZSB0aGUgR3JlZ29yaWFuIHByb3BlcnRpZXMgb2YgYSBEYXRlVGltZSBpbmRpdmlkdWFsbHkgKGkuZSBhcyBvcHBvc2VkIHRvIGNvbGxlY3RpdmVseSB0aHJvdWdoIHtAbGluayBEYXRlVGltZSN0b09iamVjdH0pLCB1c2UgdGhlIHtAbGluayBEYXRlVGltZSN5ZWFyfSwge0BsaW5rIERhdGVUaW1lI21vbnRofSxcbiAqIHtAbGluayBEYXRlVGltZSNkYXl9LCB7QGxpbmsgRGF0ZVRpbWUjaG91cn0sIHtAbGluayBEYXRlVGltZSNtaW51dGV9LCB7QGxpbmsgRGF0ZVRpbWUjc2Vjb25kfSwge0BsaW5rIERhdGVUaW1lI21pbGxpc2Vjb25kfSBhY2Nlc3NvcnMuXG4gKiAqICoqV2VlayBjYWxlbmRhcioqOiBGb3IgSVNPIHdlZWsgY2FsZW5kYXIgYXR0cmlidXRlcywgc2VlIHRoZSB7QGxpbmsgRGF0ZVRpbWUjd2Vla1llYXJ9LCB7QGxpbmsgRGF0ZVRpbWUjd2Vla051bWJlcn0sIGFuZCB7QGxpbmsgRGF0ZVRpbWUjd2Vla2RheX0gYWNjZXNzb3JzLlxuICogKiAqKkNvbmZpZ3VyYXRpb24qKiBTZWUgdGhlIHtAbGluayBEYXRlVGltZSNsb2NhbGV9IGFuZCB7QGxpbmsgRGF0ZVRpbWUjbnVtYmVyaW5nU3lzdGVtfSBhY2Nlc3NvcnMuXG4gKiAqICoqVHJhbnNmb3JtYXRpb24qKjogVG8gdHJhbnNmb3JtIHRoZSBEYXRlVGltZSBpbnRvIG90aGVyIERhdGVUaW1lcywgdXNlIHtAbGluayBEYXRlVGltZSNzZXR9LCB7QGxpbmsgRGF0ZVRpbWUjcmVjb25maWd1cmV9LCB7QGxpbmsgRGF0ZVRpbWUjc2V0Wm9uZX0sIHtAbGluayBEYXRlVGltZSNzZXRMb2NhbGV9LCB7QGxpbmsgRGF0ZVRpbWUucGx1c30sIHtAbGluayBEYXRlVGltZSNtaW51c30sIHtAbGluayBEYXRlVGltZSNlbmRPZn0sIHtAbGluayBEYXRlVGltZSNzdGFydE9mfSwge0BsaW5rIERhdGVUaW1lI3RvVVRDfSwgYW5kIHtAbGluayBEYXRlVGltZSN0b0xvY2FsfS5cbiAqICogKipPdXRwdXQqKjogVG8gY29udmVydCB0aGUgRGF0ZVRpbWUgdG8gb3RoZXIgcmVwcmVzZW50YXRpb25zLCB1c2UgdGhlIHtAbGluayBEYXRlVGltZSN0b1JlbGF0aXZlfSwge0BsaW5rIERhdGVUaW1lI3RvUmVsYXRpdmVDYWxlbmRhcn0sIHtAbGluayBEYXRlVGltZSN0b0pTT059LCB7QGxpbmsgRGF0ZVRpbWUjdG9JU099LCB7QGxpbmsgRGF0ZVRpbWUjdG9IVFRQfSwge0BsaW5rIERhdGVUaW1lI3RvT2JqZWN0fSwge0BsaW5rIERhdGVUaW1lI3RvUkZDMjgyMn0sIHtAbGluayBEYXRlVGltZSN0b1N0cmluZ30sIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30sIHtAbGluayBEYXRlVGltZSN0b0Zvcm1hdH0sIHtAbGluayBEYXRlVGltZSN0b01pbGxpc30gYW5kIHtAbGluayBEYXRlVGltZSN0b0pTRGF0ZX0uXG4gKlxuICogVGhlcmUncyBwbGVudHkgb3RoZXJzIGRvY3VtZW50ZWQgYmVsb3cuIEluIGFkZGl0aW9uLCBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBzdWJ0bGVyIHRvcGljcyBsaWtlIGludGVybmF0aW9uYWxpemF0aW9uLCB0aW1lIHpvbmVzLCBhbHRlcm5hdGl2ZSBjYWxlbmRhcnMsIHZhbGlkaXR5LCBhbmQgc28gb24sIHNlZSB0aGUgZXh0ZXJuYWwgZG9jdW1lbnRhdGlvbi5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGF0ZVRpbWUge1xuICAvKipcbiAgICogQGFjY2VzcyBwcml2YXRlXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihjb25maWcpIHtcbiAgICBjb25zdCB6b25lID0gY29uZmlnLnpvbmUgfHwgU2V0dGluZ3MuZGVmYXVsdFpvbmU7XG5cbiAgICBsZXQgaW52YWxpZCA9XG4gICAgICBjb25maWcuaW52YWxpZCB8fFxuICAgICAgKE51bWJlci5pc05hTihjb25maWcudHMpID8gbmV3IEludmFsaWQoXCJpbnZhbGlkIGlucHV0XCIpIDogbnVsbCkgfHxcbiAgICAgICghem9uZS5pc1ZhbGlkID8gdW5zdXBwb3J0ZWRab25lKHpvbmUpIDogbnVsbCk7XG4gICAgLyoqXG4gICAgICogQGFjY2VzcyBwcml2YXRlXG4gICAgICovXG4gICAgdGhpcy50cyA9IGlzVW5kZWZpbmVkKGNvbmZpZy50cykgPyBTZXR0aW5ncy5ub3coKSA6IGNvbmZpZy50cztcblxuICAgIGxldCBjID0gbnVsbCxcbiAgICAgIG8gPSBudWxsO1xuICAgIGlmICghaW52YWxpZCkge1xuICAgICAgY29uc3QgdW5jaGFuZ2VkID0gY29uZmlnLm9sZCAmJiBjb25maWcub2xkLnRzID09PSB0aGlzLnRzICYmIGNvbmZpZy5vbGQuem9uZS5lcXVhbHMoem9uZSk7XG5cbiAgICAgIGlmICh1bmNoYW5nZWQpIHtcbiAgICAgICAgW2MsIG9dID0gW2NvbmZpZy5vbGQuYywgY29uZmlnLm9sZC5vXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IG90ID0gem9uZS5vZmZzZXQodGhpcy50cyk7XG4gICAgICAgIGMgPSB0c1RvT2JqKHRoaXMudHMsIG90KTtcbiAgICAgICAgaW52YWxpZCA9IE51bWJlci5pc05hTihjLnllYXIpID8gbmV3IEludmFsaWQoXCJpbnZhbGlkIGlucHV0XCIpIDogbnVsbDtcbiAgICAgICAgYyA9IGludmFsaWQgPyBudWxsIDogYztcbiAgICAgICAgbyA9IGludmFsaWQgPyBudWxsIDogb3Q7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGFjY2VzcyBwcml2YXRlXG4gICAgICovXG4gICAgdGhpcy5fem9uZSA9IHpvbmU7XG4gICAgLyoqXG4gICAgICogQGFjY2VzcyBwcml2YXRlXG4gICAgICovXG4gICAgdGhpcy5sb2MgPSBjb25maWcubG9jIHx8IExvY2FsZS5jcmVhdGUoKTtcbiAgICAvKipcbiAgICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICAgKi9cbiAgICB0aGlzLmludmFsaWQgPSBpbnZhbGlkO1xuICAgIC8qKlxuICAgICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAgICAqL1xuICAgIHRoaXMud2Vla0RhdGEgPSBudWxsO1xuICAgIC8qKlxuICAgICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAgICAqL1xuICAgIHRoaXMuYyA9IGM7XG4gICAgLyoqXG4gICAgICogQGFjY2VzcyBwcml2YXRlXG4gICAgICovXG4gICAgdGhpcy5vID0gbztcbiAgICAvKipcbiAgICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICAgKi9cbiAgICB0aGlzLmlzTHV4b25EYXRlVGltZSA9IHRydWU7XG4gIH1cblxuICAvLyBDT05TVFJVQ1RcblxuICAvKipcbiAgICogQ3JlYXRlIGEgRGF0ZVRpbWUgZm9yIHRoZSBjdXJyZW50IGluc3RhbnQsIGluIHRoZSBzeXN0ZW0ncyB0aW1lIHpvbmUuXG4gICAqXG4gICAqIFVzZSBTZXR0aW5ncyB0byBvdmVycmlkZSB0aGVzZSBkZWZhdWx0IHZhbHVlcyBpZiBuZWVkZWQuXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvSVNPKCkgLy9+PiBub3cgaW4gdGhlIElTTyBmb3JtYXRcbiAgICogQHJldHVybiB7RGF0ZVRpbWV9XG4gICAqL1xuICBzdGF0aWMgbm93KCkge1xuICAgIHJldHVybiBuZXcgRGF0ZVRpbWUoe30pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIGxvY2FsIERhdGVUaW1lXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbeWVhcl0gLSBUaGUgY2FsZW5kYXIgeWVhci4gSWYgb21pdHRlZCAoYXMgaW4sIGNhbGwgYGxvY2FsKClgIHdpdGggbm8gYXJndW1lbnRzKSwgdGhlIGN1cnJlbnQgdGltZSB3aWxsIGJlIHVzZWRcbiAgICogQHBhcmFtIHtudW1iZXJ9IFttb250aD0xXSAtIFRoZSBtb250aCwgMS1pbmRleGVkXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbZGF5PTFdIC0gVGhlIGRheSBvZiB0aGUgbW9udGgsIDEtaW5kZXhlZFxuICAgKiBAcGFyYW0ge251bWJlcn0gW2hvdXI9MF0gLSBUaGUgaG91ciBvZiB0aGUgZGF5LCBpbiAyNC1ob3VyIHRpbWVcbiAgICogQHBhcmFtIHtudW1iZXJ9IFttaW51dGU9MF0gLSBUaGUgbWludXRlIG9mIHRoZSBob3VyLCBtZWFuaW5nIGEgbnVtYmVyIGJldHdlZW4gMCBhbmQgNTlcbiAgICogQHBhcmFtIHtudW1iZXJ9IFtzZWNvbmQ9MF0gLSBUaGUgc2Vjb25kIG9mIHRoZSBtaW51dGUsIG1lYW5pbmcgYSBudW1iZXIgYmV0d2VlbiAwIGFuZCA1OVxuICAgKiBAcGFyYW0ge251bWJlcn0gW21pbGxpc2Vjb25kPTBdIC0gVGhlIG1pbGxpc2Vjb25kIG9mIHRoZSBzZWNvbmQsIG1lYW5pbmcgYSBudW1iZXIgYmV0d2VlbiAwIGFuZCA5OTlcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL34+IG5vd1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCh7IHpvbmU6IFwiQW1lcmljYS9OZXdfWW9ya1wiIH0pICAgICAgLy9+PiBub3csIGluIFVTIGVhc3QgY29hc3QgdGltZVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vfj4gMjAxNy0wMS0wMVQwMDowMDowMFxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAzKSAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vfj4gMjAxNy0wMy0wMVQwMDowMDowMFxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAzLCAxMiwgeyBsb2NhbGU6IFwiZnJcIiB9KSAgICAgLy9+PiAyMDE3LTAzLTEyVDAwOjAwOjAwLCB3aXRoIGEgRnJlbmNoIGxvY2FsZVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAzLCAxMiwgNSkgICAgICAgICAgICAgICAgICAgIC8vfj4gMjAxNy0wMy0xMlQwNTowMDowMFxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAzLCAxMiwgNSwgeyB6b25lOiBcInV0Y1wiIH0pICAgLy9+PiAyMDE3LTAzLTEyVDA1OjAwOjAwLCBpbiBVVENcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgMywgMTIsIDUsIDQ1KSAgICAgICAgICAgICAgICAvL34+IDIwMTctMDMtMTJUMDU6NDU6MDBcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgMywgMTIsIDUsIDQ1LCAxMCkgICAgICAgICAgICAvL34+IDIwMTctMDMtMTJUMDU6NDU6MTBcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgMywgMTIsIDUsIDQ1LCAxMCwgNzY1KSAgICAgICAvL34+IDIwMTctMDMtMTJUMDU6NDU6MTAuNzY1XG4gICAqIEByZXR1cm4ge0RhdGVUaW1lfVxuICAgKi9cbiAgc3RhdGljIGxvY2FsKCkge1xuICAgIGNvbnN0IFtvcHRzLCBhcmdzXSA9IGxhc3RPcHRzKGFyZ3VtZW50cyksXG4gICAgICBbeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pbGxpc2Vjb25kXSA9IGFyZ3M7XG4gICAgcmV0dXJuIHF1aWNrRFQoeyB5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCwgbWlsbGlzZWNvbmQgfSwgb3B0cyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgRGF0ZVRpbWUgaW4gVVRDXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbeWVhcl0gLSBUaGUgY2FsZW5kYXIgeWVhci4gSWYgb21pdHRlZCAoYXMgaW4sIGNhbGwgYHV0YygpYCB3aXRoIG5vIGFyZ3VtZW50cyksIHRoZSBjdXJyZW50IHRpbWUgd2lsbCBiZSB1c2VkXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbbW9udGg9MV0gLSBUaGUgbW9udGgsIDEtaW5kZXhlZFxuICAgKiBAcGFyYW0ge251bWJlcn0gW2RheT0xXSAtIFRoZSBkYXkgb2YgdGhlIG1vbnRoXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbaG91cj0wXSAtIFRoZSBob3VyIG9mIHRoZSBkYXksIGluIDI0LWhvdXIgdGltZVxuICAgKiBAcGFyYW0ge251bWJlcn0gW21pbnV0ZT0wXSAtIFRoZSBtaW51dGUgb2YgdGhlIGhvdXIsIG1lYW5pbmcgYSBudW1iZXIgYmV0d2VlbiAwIGFuZCA1OVxuICAgKiBAcGFyYW0ge251bWJlcn0gW3NlY29uZD0wXSAtIFRoZSBzZWNvbmQgb2YgdGhlIG1pbnV0ZSwgbWVhbmluZyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDU5XG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbbWlsbGlzZWNvbmQ9MF0gLSBUaGUgbWlsbGlzZWNvbmQgb2YgdGhlIHNlY29uZCwgbWVhbmluZyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDk5OVxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIERhdGVUaW1lXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5sb2NhbGVdIC0gYSBsb2NhbGUgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLm91dHB1dENhbGVuZGFyXSAtIHRoZSBvdXRwdXQgY2FsZW5kYXIgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLm51bWJlcmluZ1N5c3RlbV0gLSB0aGUgbnVtYmVyaW5nIHN5c3RlbSB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL34+IG5vd1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMjAxNykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL34+IDIwMTctMDEtMDFUMDA6MDA6MDBaXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygyMDE3LCAzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vfj4gMjAxNy0wMy0wMVQwMDowMDowMFpcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDAwOjAwOjAwWlxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMjAxNywgMywgMTIsIDUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL34+IDIwMTctMDMtMTJUMDU6MDA6MDBaXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygyMDE3LCAzLCAxMiwgNSwgNDUpICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vfj4gMjAxNy0wMy0xMlQwNTo0NTowMFpcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyLCA1LCA0NSwgeyBsb2NhbGU6IFwiZnJcIiB9KSAgICAgICAgICAvL34+IDIwMTctMDMtMTJUMDU6NDU6MDBaIHdpdGggYSBGcmVuY2ggbG9jYWxlXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygyMDE3LCAzLCAxMiwgNSwgNDUsIDEwKSAgICAgICAgICAgICAgICAgICAgICAgIC8vfj4gMjAxNy0wMy0xMlQwNTo0NToxMFpcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyLCA1LCA0NSwgMTAsIDc2NSwgeyBsb2NhbGU6IFwiZnJcIiB9KSAvL34+IDIwMTctMDMtMTJUMDU6NDU6MTAuNzY1WiB3aXRoIGEgRnJlbmNoIGxvY2FsZVxuICAgKiBAcmV0dXJuIHtEYXRlVGltZX1cbiAgICovXG4gIHN0YXRpYyB1dGMoKSB7XG4gICAgY29uc3QgW29wdHMsIGFyZ3NdID0gbGFzdE9wdHMoYXJndW1lbnRzKSxcbiAgICAgIFt5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCwgbWlsbGlzZWNvbmRdID0gYXJncztcblxuICAgIG9wdHMuem9uZSA9IEZpeGVkT2Zmc2V0Wm9uZS51dGNJbnN0YW5jZTtcbiAgICByZXR1cm4gcXVpY2tEVCh7IHllYXIsIG1vbnRoLCBkYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWxsaXNlY29uZCB9LCBvcHRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGEgSmF2YVNjcmlwdCBEYXRlIG9iamVjdC4gVXNlcyB0aGUgZGVmYXVsdCB6b25lLlxuICAgKiBAcGFyYW0ge0RhdGV9IGRhdGUgLSBhIEphdmFTY3JpcHQgRGF0ZSBvYmplY3RcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBEYXRlVGltZVxuICAgKiBAcGFyYW0ge3N0cmluZ3xab25lfSBbb3B0aW9ucy56b25lPSdsb2NhbCddIC0gdGhlIHpvbmUgdG8gcGxhY2UgdGhlIERhdGVUaW1lIGludG9cbiAgICogQHJldHVybiB7RGF0ZVRpbWV9XG4gICAqL1xuICBzdGF0aWMgZnJvbUpTRGF0ZShkYXRlLCBvcHRpb25zID0ge30pIHtcbiAgICBjb25zdCB0cyA9IGlzRGF0ZShkYXRlKSA/IGRhdGUudmFsdWVPZigpIDogTmFOO1xuICAgIGlmIChOdW1iZXIuaXNOYU4odHMpKSB7XG4gICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZChcImludmFsaWQgaW5wdXRcIik7XG4gICAgfVxuXG4gICAgY29uc3Qgem9uZVRvVXNlID0gbm9ybWFsaXplWm9uZShvcHRpb25zLnpvbmUsIFNldHRpbmdzLmRlZmF1bHRab25lKTtcbiAgICBpZiAoIXpvbmVUb1VzZS5pc1ZhbGlkKSB7XG4gICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZCh1bnN1cHBvcnRlZFpvbmUoem9uZVRvVXNlKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBEYXRlVGltZSh7XG4gICAgICB0czogdHMsXG4gICAgICB6b25lOiB6b25lVG9Vc2UsXG4gICAgICBsb2M6IExvY2FsZS5mcm9tT2JqZWN0KG9wdGlvbnMpLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIERhdGVUaW1lIGZyb20gYSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHNpbmNlIHRoZSBlcG9jaCAobWVhbmluZyBzaW5jZSAxIEphbnVhcnkgMTk3MCAwMDowMDowMCBVVEMpLiBVc2VzIHRoZSBkZWZhdWx0IHpvbmUuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBtaWxsaXNlY29uZHMgLSBhIG51bWJlciBvZiBtaWxsaXNlY29uZHMgc2luY2UgMTk3MCBVVENcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBEYXRlVGltZVxuICAgKiBAcGFyYW0ge3N0cmluZ3xab25lfSBbb3B0aW9ucy56b25lPSdsb2NhbCddIC0gdGhlIHpvbmUgdG8gcGxhY2UgdGhlIERhdGVUaW1lIGludG9cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLmxvY2FsZV0gLSBhIGxvY2FsZSB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5vdXRwdXRDYWxlbmRhciAtIHRoZSBvdXRwdXQgY2FsZW5kYXIgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMubnVtYmVyaW5nU3lzdGVtIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0gdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2VcbiAgICogQHJldHVybiB7RGF0ZVRpbWV9XG4gICAqL1xuICBzdGF0aWMgZnJvbU1pbGxpcyhtaWxsaXNlY29uZHMsIG9wdGlvbnMgPSB7fSkge1xuICAgIGlmICghaXNOdW1iZXIobWlsbGlzZWNvbmRzKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKFxuICAgICAgICBgZnJvbU1pbGxpcyByZXF1aXJlcyBhIG51bWVyaWNhbCBpbnB1dCwgYnV0IHJlY2VpdmVkIGEgJHt0eXBlb2YgbWlsbGlzZWNvbmRzfSB3aXRoIHZhbHVlICR7bWlsbGlzZWNvbmRzfWBcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmIChtaWxsaXNlY29uZHMgPCAtTUFYX0RBVEUgfHwgbWlsbGlzZWNvbmRzID4gTUFYX0RBVEUpIHtcbiAgICAgIC8vIHRoaXMgaXNuJ3QgcGVyZmVjdCBiZWNhdXNlIGJlY2F1c2Ugd2UgY2FuIHN0aWxsIGVuZCB1cCBvdXQgb2YgcmFuZ2UgYmVjYXVzZSBvZiBhZGRpdGlvbmFsIHNoaWZ0aW5nLCBidXQgaXQncyBhIHN0YXJ0XG4gICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZChcIlRpbWVzdGFtcCBvdXQgb2YgcmFuZ2VcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBuZXcgRGF0ZVRpbWUoe1xuICAgICAgICB0czogbWlsbGlzZWNvbmRzLFxuICAgICAgICB6b25lOiBub3JtYWxpemVab25lKG9wdGlvbnMuem9uZSwgU2V0dGluZ3MuZGVmYXVsdFpvbmUpLFxuICAgICAgICBsb2M6IExvY2FsZS5mcm9tT2JqZWN0KG9wdGlvbnMpLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIERhdGVUaW1lIGZyb20gYSBudW1iZXIgb2Ygc2Vjb25kcyBzaW5jZSB0aGUgZXBvY2ggKG1lYW5pbmcgc2luY2UgMSBKYW51YXJ5IDE5NzAgMDA6MDA6MDAgVVRDKS4gVXNlcyB0aGUgZGVmYXVsdCB6b25lLlxuICAgKiBAcGFyYW0ge251bWJlcn0gc2Vjb25kcyAtIGEgbnVtYmVyIG9mIHNlY29uZHMgc2luY2UgMTk3MCBVVENcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBEYXRlVGltZVxuICAgKiBAcGFyYW0ge3N0cmluZ3xab25lfSBbb3B0aW9ucy56b25lPSdsb2NhbCddIC0gdGhlIHpvbmUgdG8gcGxhY2UgdGhlIERhdGVUaW1lIGludG9cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLmxvY2FsZV0gLSBhIGxvY2FsZSB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5vdXRwdXRDYWxlbmRhciAtIHRoZSBvdXRwdXQgY2FsZW5kYXIgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMubnVtYmVyaW5nU3lzdGVtIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0gdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2VcbiAgICogQHJldHVybiB7RGF0ZVRpbWV9XG4gICAqL1xuICBzdGF0aWMgZnJvbVNlY29uZHMoc2Vjb25kcywgb3B0aW9ucyA9IHt9KSB7XG4gICAgaWYgKCFpc051bWJlcihzZWNvbmRzKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKFwiZnJvbVNlY29uZHMgcmVxdWlyZXMgYSBudW1lcmljYWwgaW5wdXRcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBuZXcgRGF0ZVRpbWUoe1xuICAgICAgICB0czogc2Vjb25kcyAqIDEwMDAsXG4gICAgICAgIHpvbmU6IG5vcm1hbGl6ZVpvbmUob3B0aW9ucy56b25lLCBTZXR0aW5ncy5kZWZhdWx0Wm9uZSksXG4gICAgICAgIGxvYzogTG9jYWxlLmZyb21PYmplY3Qob3B0aW9ucyksXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgRGF0ZVRpbWUgZnJvbSBhIEphdmFTY3JpcHQgb2JqZWN0IHdpdGgga2V5cyBsaWtlICd5ZWFyJyBhbmQgJ2hvdXInIHdpdGggcmVhc29uYWJsZSBkZWZhdWx0cy5cbiAgICogQHBhcmFtIHtPYmplY3R9IG9iaiAtIHRoZSBvYmplY3QgdG8gY3JlYXRlIHRoZSBEYXRlVGltZSBmcm9tXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoueWVhciAtIGEgeWVhciwgc3VjaCBhcyAxOTg3XG4gICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoubW9udGggLSBhIG1vbnRoLCAxLTEyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBvYmouZGF5IC0gYSBkYXkgb2YgdGhlIG1vbnRoLCAxLTMxLCBkZXBlbmRpbmcgb24gdGhlIG1vbnRoXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoub3JkaW5hbCAtIGRheSBvZiB0aGUgeWVhciwgMS0zNjUgb3IgMzY2XG4gICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoud2Vla1llYXIgLSBhbiBJU08gd2VlayB5ZWFyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoud2Vla051bWJlciAtIGFuIElTTyB3ZWVrIG51bWJlciwgYmV0d2VlbiAxIGFuZCA1MiBvciA1MywgZGVwZW5kaW5nIG9uIHRoZSB5ZWFyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoud2Vla2RheSAtIGFuIElTTyB3ZWVrZGF5LCAxLTcsIHdoZXJlIDEgaXMgTW9uZGF5IGFuZCA3IGlzIFN1bmRheVxuICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLmhvdXIgLSBob3VyIG9mIHRoZSBkYXksIDAtMjNcbiAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5taW51dGUgLSBtaW51dGUgb2YgdGhlIGhvdXIsIDAtNTlcbiAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5zZWNvbmQgLSBzZWNvbmQgb2YgdGhlIG1pbnV0ZSwgMC01OVxuICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLm1pbGxpc2Vjb25kIC0gbWlsbGlzZWNvbmQgb2YgdGhlIHNlY29uZCwgMC05OTlcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIGZvciBjcmVhdGluZyB0aGlzIERhdGVUaW1lXG4gICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRzLnpvbmU9J2xvY2FsJ10gLSBpbnRlcnByZXQgdGhlIG51bWJlcnMgaW4gdGhlIGNvbnRleHQgb2YgYSBwYXJ0aWN1bGFyIHpvbmUuIENhbiB0YWtlIGFueSB2YWx1ZSB0YWtlbiBhcyB0aGUgZmlyc3QgYXJndW1lbnQgdG8gc2V0Wm9uZSgpXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGU9J3N5c3RlbSdzIGxvY2FsZSddIC0gYSBsb2NhbGUgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMub3V0cHV0Q2FsZW5kYXIgLSB0aGUgb3V0cHV0IGNhbGVuZGFyIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21PYmplY3QoeyB5ZWFyOiAxOTgyLCBtb250aDogNSwgZGF5OiAyNX0pLnRvSVNPRGF0ZSgpIC8vPT4gJzE5ODItMDUtMjUnXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21PYmplY3QoeyB5ZWFyOiAxOTgyIH0pLnRvSVNPRGF0ZSgpIC8vPT4gJzE5ODItMDEtMDEnXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21PYmplY3QoeyBob3VyOiAxMCwgbWludXRlOiAyNiwgc2Vjb25kOiA2IH0pIC8vfj4gdG9kYXkgYXQgMTA6MjY6MDZcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbU9iamVjdCh7IGhvdXI6IDEwLCBtaW51dGU6IDI2LCBzZWNvbmQ6IDYgfSwgeyB6b25lOiAndXRjJyB9KSxcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbU9iamVjdCh7IGhvdXI6IDEwLCBtaW51dGU6IDI2LCBzZWNvbmQ6IDYgfSwgeyB6b25lOiAnbG9jYWwnIH0pXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21PYmplY3QoeyBob3VyOiAxMCwgbWludXRlOiAyNiwgc2Vjb25kOiA2IH0sIHsgem9uZTogJ0FtZXJpY2EvTmV3X1lvcmsnIH0pXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21PYmplY3QoeyB3ZWVrWWVhcjogMjAxNiwgd2Vla051bWJlcjogMiwgd2Vla2RheTogMyB9KS50b0lTT0RhdGUoKSAvLz0+ICcyMDE2LTAxLTEzJ1xuICAgKiBAcmV0dXJuIHtEYXRlVGltZX1cbiAgICovXG4gIHN0YXRpYyBmcm9tT2JqZWN0KG9iaiwgb3B0cyA9IHt9KSB7XG4gICAgb2JqID0gb2JqIHx8IHt9O1xuICAgIGNvbnN0IHpvbmVUb1VzZSA9IG5vcm1hbGl6ZVpvbmUob3B0cy56b25lLCBTZXR0aW5ncy5kZWZhdWx0Wm9uZSk7XG4gICAgaWYgKCF6b25lVG9Vc2UuaXNWYWxpZCkge1xuICAgICAgcmV0dXJuIERhdGVUaW1lLmludmFsaWQodW5zdXBwb3J0ZWRab25lKHpvbmVUb1VzZSkpO1xuICAgIH1cblxuICAgIGNvbnN0IHRzTm93ID0gU2V0dGluZ3Mubm93KCksXG4gICAgICBvZmZzZXRQcm92aXMgPSAhaXNVbmRlZmluZWQob3B0cy5zcGVjaWZpY09mZnNldClcbiAgICAgICAgPyBvcHRzLnNwZWNpZmljT2Zmc2V0XG4gICAgICAgIDogem9uZVRvVXNlLm9mZnNldCh0c05vdyksXG4gICAgICBub3JtYWxpemVkID0gbm9ybWFsaXplT2JqZWN0KG9iaiwgbm9ybWFsaXplVW5pdCksXG4gICAgICBjb250YWluc09yZGluYWwgPSAhaXNVbmRlZmluZWQobm9ybWFsaXplZC5vcmRpbmFsKSxcbiAgICAgIGNvbnRhaW5zR3JlZ29yWWVhciA9ICFpc1VuZGVmaW5lZChub3JtYWxpemVkLnllYXIpLFxuICAgICAgY29udGFpbnNHcmVnb3JNRCA9ICFpc1VuZGVmaW5lZChub3JtYWxpemVkLm1vbnRoKSB8fCAhaXNVbmRlZmluZWQobm9ybWFsaXplZC5kYXkpLFxuICAgICAgY29udGFpbnNHcmVnb3IgPSBjb250YWluc0dyZWdvclllYXIgfHwgY29udGFpbnNHcmVnb3JNRCxcbiAgICAgIGRlZmluaXRlV2Vla0RlZiA9IG5vcm1hbGl6ZWQud2Vla1llYXIgfHwgbm9ybWFsaXplZC53ZWVrTnVtYmVyLFxuICAgICAgbG9jID0gTG9jYWxlLmZyb21PYmplY3Qob3B0cyk7XG5cbiAgICAvLyBjYXNlczpcbiAgICAvLyBqdXN0IGEgd2Vla2RheSAtPiB0aGlzIHdlZWsncyBpbnN0YW5jZSBvZiB0aGF0IHdlZWtkYXksIG5vIHdvcnJpZXNcbiAgICAvLyAoZ3JlZ29yaWFuIGRhdGEgb3Igb3JkaW5hbCkgKyAod2Vla1llYXIgb3Igd2Vla051bWJlcikgLT4gZXJyb3JcbiAgICAvLyAoZ3JlZ29yaWFuIG1vbnRoIG9yIGRheSkgKyBvcmRpbmFsIC0+IGVycm9yXG4gICAgLy8gb3RoZXJ3aXNlIGp1c3QgdXNlIHdlZWtzIG9yIG9yZGluYWxzIG9yIGdyZWdvcmlhbiwgZGVwZW5kaW5nIG9uIHdoYXQncyBzcGVjaWZpZWRcblxuICAgIGlmICgoY29udGFpbnNHcmVnb3IgfHwgY29udGFpbnNPcmRpbmFsKSAmJiBkZWZpbml0ZVdlZWtEZWYpIHtcbiAgICAgIHRocm93IG5ldyBDb25mbGljdGluZ1NwZWNpZmljYXRpb25FcnJvcihcbiAgICAgICAgXCJDYW4ndCBtaXggd2Vla1llYXIvd2Vla051bWJlciB1bml0cyB3aXRoIHllYXIvbW9udGgvZGF5IG9yIG9yZGluYWxzXCJcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKGNvbnRhaW5zR3JlZ29yTUQgJiYgY29udGFpbnNPcmRpbmFsKSB7XG4gICAgICB0aHJvdyBuZXcgQ29uZmxpY3RpbmdTcGVjaWZpY2F0aW9uRXJyb3IoXCJDYW4ndCBtaXggb3JkaW5hbCBkYXRlcyB3aXRoIG1vbnRoL2RheVwiKTtcbiAgICB9XG5cbiAgICBjb25zdCB1c2VXZWVrRGF0YSA9IGRlZmluaXRlV2Vla0RlZiB8fCAobm9ybWFsaXplZC53ZWVrZGF5ICYmICFjb250YWluc0dyZWdvcik7XG5cbiAgICAvLyBjb25maWd1cmUgb3Vyc2VsdmVzIHRvIGRlYWwgd2l0aCBncmVnb3JpYW4gZGF0ZXMgb3Igd2VlayBzdHVmZlxuICAgIGxldCB1bml0cyxcbiAgICAgIGRlZmF1bHRWYWx1ZXMsXG4gICAgICBvYmpOb3cgPSB0c1RvT2JqKHRzTm93LCBvZmZzZXRQcm92aXMpO1xuICAgIGlmICh1c2VXZWVrRGF0YSkge1xuICAgICAgdW5pdHMgPSBvcmRlcmVkV2Vla1VuaXRzO1xuICAgICAgZGVmYXVsdFZhbHVlcyA9IGRlZmF1bHRXZWVrVW5pdFZhbHVlcztcbiAgICAgIG9iak5vdyA9IGdyZWdvcmlhblRvV2VlayhvYmpOb3cpO1xuICAgIH0gZWxzZSBpZiAoY29udGFpbnNPcmRpbmFsKSB7XG4gICAgICB1bml0cyA9IG9yZGVyZWRPcmRpbmFsVW5pdHM7XG4gICAgICBkZWZhdWx0VmFsdWVzID0gZGVmYXVsdE9yZGluYWxVbml0VmFsdWVzO1xuICAgICAgb2JqTm93ID0gZ3JlZ29yaWFuVG9PcmRpbmFsKG9iak5vdyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHVuaXRzID0gb3JkZXJlZFVuaXRzO1xuICAgICAgZGVmYXVsdFZhbHVlcyA9IGRlZmF1bHRVbml0VmFsdWVzO1xuICAgIH1cblxuICAgIC8vIHNldCBkZWZhdWx0IHZhbHVlcyBmb3IgbWlzc2luZyBzdHVmZlxuICAgIGxldCBmb3VuZEZpcnN0ID0gZmFsc2U7XG4gICAgZm9yIChjb25zdCB1IG9mIHVuaXRzKSB7XG4gICAgICBjb25zdCB2ID0gbm9ybWFsaXplZFt1XTtcbiAgICAgIGlmICghaXNVbmRlZmluZWQodikpIHtcbiAgICAgICAgZm91bmRGaXJzdCA9IHRydWU7XG4gICAgICB9IGVsc2UgaWYgKGZvdW5kRmlyc3QpIHtcbiAgICAgICAgbm9ybWFsaXplZFt1XSA9IGRlZmF1bHRWYWx1ZXNbdV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBub3JtYWxpemVkW3VdID0gb2JqTm93W3VdO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIG1ha2Ugc3VyZSB0aGUgdmFsdWVzIHdlIGhhdmUgYXJlIGluIHJhbmdlXG4gICAgY29uc3QgaGlnaGVyT3JkZXJJbnZhbGlkID0gdXNlV2Vla0RhdGFcbiAgICAgICAgPyBoYXNJbnZhbGlkV2Vla0RhdGEobm9ybWFsaXplZClcbiAgICAgICAgOiBjb250YWluc09yZGluYWxcbiAgICAgICAgPyBoYXNJbnZhbGlkT3JkaW5hbERhdGEobm9ybWFsaXplZClcbiAgICAgICAgOiBoYXNJbnZhbGlkR3JlZ29yaWFuRGF0YShub3JtYWxpemVkKSxcbiAgICAgIGludmFsaWQgPSBoaWdoZXJPcmRlckludmFsaWQgfHwgaGFzSW52YWxpZFRpbWVEYXRhKG5vcm1hbGl6ZWQpO1xuXG4gICAgaWYgKGludmFsaWQpIHtcbiAgICAgIHJldHVybiBEYXRlVGltZS5pbnZhbGlkKGludmFsaWQpO1xuICAgIH1cblxuICAgIC8vIGNvbXB1dGUgdGhlIGFjdHVhbCB0aW1lXG4gICAgY29uc3QgZ3JlZ29yaWFuID0gdXNlV2Vla0RhdGFcbiAgICAgICAgPyB3ZWVrVG9HcmVnb3JpYW4obm9ybWFsaXplZClcbiAgICAgICAgOiBjb250YWluc09yZGluYWxcbiAgICAgICAgPyBvcmRpbmFsVG9HcmVnb3JpYW4obm9ybWFsaXplZClcbiAgICAgICAgOiBub3JtYWxpemVkLFxuICAgICAgW3RzRmluYWwsIG9mZnNldEZpbmFsXSA9IG9ialRvVFMoZ3JlZ29yaWFuLCBvZmZzZXRQcm92aXMsIHpvbmVUb1VzZSksXG4gICAgICBpbnN0ID0gbmV3IERhdGVUaW1lKHtcbiAgICAgICAgdHM6IHRzRmluYWwsXG4gICAgICAgIHpvbmU6IHpvbmVUb1VzZSxcbiAgICAgICAgbzogb2Zmc2V0RmluYWwsXG4gICAgICAgIGxvYyxcbiAgICAgIH0pO1xuXG4gICAgLy8gZ3JlZ29yaWFuIGRhdGEgKyB3ZWVrZGF5IHNlcnZlcyBvbmx5IHRvIHZhbGlkYXRlXG4gICAgaWYgKG5vcm1hbGl6ZWQud2Vla2RheSAmJiBjb250YWluc0dyZWdvciAmJiBvYmoud2Vla2RheSAhPT0gaW5zdC53ZWVrZGF5KSB7XG4gICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZChcbiAgICAgICAgXCJtaXNtYXRjaGVkIHdlZWtkYXlcIixcbiAgICAgICAgYHlvdSBjYW4ndCBzcGVjaWZ5IGJvdGggYSB3ZWVrZGF5IG9mICR7bm9ybWFsaXplZC53ZWVrZGF5fSBhbmQgYSBkYXRlIG9mICR7aW5zdC50b0lTTygpfWBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGluc3Q7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgRGF0ZVRpbWUgZnJvbSBhbiBJU08gODYwMSBzdHJpbmdcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSB0aGUgSVNPIHN0cmluZ1xuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgdG8gYWZmZWN0IHRoZSBjcmVhdGlvblxuICAgKiBAcGFyYW0ge3N0cmluZ3xab25lfSBbb3B0cy56b25lPSdsb2NhbCddIC0gdXNlIHRoaXMgem9uZSBpZiBubyBvZmZzZXQgaXMgc3BlY2lmaWVkIGluIHRoZSBpbnB1dCBzdHJpbmcgaXRzZWxmLiBXaWxsIGFsc28gY29udmVydCB0aGUgdGltZSB0byB0aGlzIHpvbmVcbiAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zZXRab25lPWZhbHNlXSAtIG92ZXJyaWRlIHRoZSB6b25lIHdpdGggYSBmaXhlZC1vZmZzZXQgem9uZSBzcGVjaWZpZWQgaW4gdGhlIHN0cmluZyBpdHNlbGYsIGlmIGl0IHNwZWNpZmllcyBvbmVcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT0nc3lzdGVtJ3MgbG9jYWxlJ10gLSBhIGxvY2FsZSB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMub3V0cHV0Q2FsZW5kYXJdIC0gdGhlIG91dHB1dCBjYWxlbmRhciB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubnVtYmVyaW5nU3lzdGVtXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21JU08oJzIwMTYtMDUtMjVUMDk6MDg6MzQuMTIzJylcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbUlTTygnMjAxNi0wNS0yNVQwOTowODozNC4xMjMrMDY6MDAnKVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tSVNPKCcyMDE2LTA1LTI1VDA5OjA4OjM0LjEyMyswNjowMCcsIHtzZXRab25lOiB0cnVlfSlcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbUlTTygnMjAxNi0wNS0yNVQwOTowODozNC4xMjMnLCB7em9uZTogJ3V0Yyd9KVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tSVNPKCcyMDE2LVcwNS00JylcbiAgICogQHJldHVybiB7RGF0ZVRpbWV9XG4gICAqL1xuICBzdGF0aWMgZnJvbUlTTyh0ZXh0LCBvcHRzID0ge30pIHtcbiAgICBjb25zdCBbdmFscywgcGFyc2VkWm9uZV0gPSBwYXJzZUlTT0RhdGUodGV4dCk7XG4gICAgcmV0dXJuIHBhcnNlRGF0YVRvRGF0ZVRpbWUodmFscywgcGFyc2VkWm9uZSwgb3B0cywgXCJJU08gODYwMVwiLCB0ZXh0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGFuIFJGQyAyODIyIHN0cmluZ1xuICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAtIHRoZSBSRkMgMjgyMiBzdHJpbmdcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRvIGFmZmVjdCB0aGUgY3JlYXRpb25cbiAgICogQHBhcmFtIHtzdHJpbmd8Wm9uZX0gW29wdHMuem9uZT0nbG9jYWwnXSAtIGNvbnZlcnQgdGhlIHRpbWUgdG8gdGhpcyB6b25lLiBTaW5jZSB0aGUgb2Zmc2V0IGlzIGFsd2F5cyBzcGVjaWZpZWQgaW4gdGhlIHN0cmluZyBpdHNlbGYsIHRoaXMgaGFzIG5vIGVmZmVjdCBvbiB0aGUgaW50ZXJwcmV0YXRpb24gb2Ygc3RyaW5nLCBtZXJlbHkgdGhlIHpvbmUgdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpcyBleHByZXNzZWQgaW4uXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuc2V0Wm9uZT1mYWxzZV0gLSBvdmVycmlkZSB0aGUgem9uZSB3aXRoIGEgZml4ZWQtb2Zmc2V0IHpvbmUgc3BlY2lmaWVkIGluIHRoZSBzdHJpbmcgaXRzZWxmLCBpZiBpdCBzcGVjaWZpZXMgb25lXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGU9J3N5c3RlbSdzIGxvY2FsZSddIC0gYSBsb2NhbGUgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMub3V0cHV0Q2FsZW5kYXIgLSB0aGUgb3V0cHV0IGNhbGVuZGFyIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21SRkMyODIyKCcyNSBOb3YgMjAxNiAxMzoyMzoxMiBHTVQnKVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tUkZDMjgyMignRnJpLCAyNSBOb3YgMjAxNiAxMzoyMzoxMiArMDYwMCcpXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21SRkMyODIyKCcyNSBOb3YgMjAxNiAxMzoyMyBaJylcbiAgICogQHJldHVybiB7RGF0ZVRpbWV9XG4gICAqL1xuICBzdGF0aWMgZnJvbVJGQzI4MjIodGV4dCwgb3B0cyA9IHt9KSB7XG4gICAgY29uc3QgW3ZhbHMsIHBhcnNlZFpvbmVdID0gcGFyc2VSRkMyODIyRGF0ZSh0ZXh0KTtcbiAgICByZXR1cm4gcGFyc2VEYXRhVG9EYXRlVGltZSh2YWxzLCBwYXJzZWRab25lLCBvcHRzLCBcIlJGQyAyODIyXCIsIHRleHQpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIERhdGVUaW1lIGZyb20gYW4gSFRUUCBoZWFkZXIgZGF0ZVxuICAgKiBAc2VlIGh0dHBzOi8vd3d3LnczLm9yZy9Qcm90b2NvbHMvcmZjMjYxNi9yZmMyNjE2LXNlYzMuaHRtbCNzZWMzLjMuMVxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAtIHRoZSBIVFRQIGhlYWRlciBkYXRlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucyB0byBhZmZlY3QgdGhlIGNyZWF0aW9uXG4gICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRzLnpvbmU9J2xvY2FsJ10gLSBjb252ZXJ0IHRoZSB0aW1lIHRvIHRoaXMgem9uZS4gU2luY2UgSFRUUCBkYXRlcyBhcmUgYWx3YXlzIGluIFVUQywgdGhpcyBoYXMgbm8gZWZmZWN0IG9uIHRoZSBpbnRlcnByZXRhdGlvbiBvZiBzdHJpbmcsIG1lcmVseSB0aGUgem9uZSB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGlzIGV4cHJlc3NlZCBpbi5cbiAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zZXRab25lPWZhbHNlXSAtIG92ZXJyaWRlIHRoZSB6b25lIHdpdGggdGhlIGZpeGVkLW9mZnNldCB6b25lIHNwZWNpZmllZCBpbiB0aGUgc3RyaW5nLiBGb3IgSFRUUCBkYXRlcywgdGhpcyBpcyBhbHdheXMgVVRDLCBzbyB0aGlzIG9wdGlvbiBpcyBlcXVpdmFsZW50IHRvIHNldHRpbmcgdGhlIGB6b25lYCBvcHRpb24gdG8gJ3V0YycsIGJ1dCB0aGlzIG9wdGlvbiBpcyBpbmNsdWRlZCBmb3IgY29uc2lzdGVuY3kgd2l0aCBzaW1pbGFyIG1ldGhvZHMuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGU9J3N5c3RlbSdzIGxvY2FsZSddIC0gYSBsb2NhbGUgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMub3V0cHV0Q2FsZW5kYXIgLSB0aGUgb3V0cHV0IGNhbGVuZGFyIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21IVFRQKCdTdW4sIDA2IE5vdiAxOTk0IDA4OjQ5OjM3IEdNVCcpXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21IVFRQKCdTdW5kYXksIDA2LU5vdi05NCAwODo0OTozNyBHTVQnKVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tSFRUUCgnU3VuIE5vdiAgNiAwODo0OTozNyAxOTk0JylcbiAgICogQHJldHVybiB7RGF0ZVRpbWV9XG4gICAqL1xuICBzdGF0aWMgZnJvbUhUVFAodGV4dCwgb3B0cyA9IHt9KSB7XG4gICAgY29uc3QgW3ZhbHMsIHBhcnNlZFpvbmVdID0gcGFyc2VIVFRQRGF0ZSh0ZXh0KTtcbiAgICByZXR1cm4gcGFyc2VEYXRhVG9EYXRlVGltZSh2YWxzLCBwYXJzZWRab25lLCBvcHRzLCBcIkhUVFBcIiwgb3B0cyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgRGF0ZVRpbWUgZnJvbSBhbiBpbnB1dCBzdHJpbmcgYW5kIGZvcm1hdCBzdHJpbmcuXG4gICAqIERlZmF1bHRzIHRvIGVuLVVTIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWQsIHJlZ2FyZGxlc3Mgb2YgdGhlIHN5c3RlbSdzIGxvY2FsZS4gRm9yIGEgdGFibGUgb2YgdG9rZW5zIGFuZCB0aGVpciBpbnRlcnByZXRhdGlvbnMsIHNlZSBbaGVyZV0oaHR0cHM6Ly9tb21lbnQuZ2l0aHViLmlvL2x1eG9uLyMvcGFyc2luZz9pZD10YWJsZS1vZi10b2tlbnMpLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAtIHRoZSBzdHJpbmcgdG8gcGFyc2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IGZtdCAtIHRoZSBmb3JtYXQgdGhlIHN0cmluZyBpcyBleHBlY3RlZCB0byBiZSBpbiAoc2VlIHRoZSBsaW5rIGJlbG93IGZvciB0aGUgZm9ybWF0cylcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRvIGFmZmVjdCB0aGUgY3JlYXRpb25cbiAgICogQHBhcmFtIHtzdHJpbmd8Wm9uZX0gW29wdHMuem9uZT0nbG9jYWwnXSAtIHVzZSB0aGlzIHpvbmUgaWYgbm8gb2Zmc2V0IGlzIHNwZWNpZmllZCBpbiB0aGUgaW5wdXQgc3RyaW5nIGl0c2VsZi4gV2lsbCBhbHNvIGNvbnZlcnQgdGhlIERhdGVUaW1lIHRvIHRoaXMgem9uZVxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLnNldFpvbmU9ZmFsc2VdIC0gb3ZlcnJpZGUgdGhlIHpvbmUgd2l0aCBhIHpvbmUgc3BlY2lmaWVkIGluIHRoZSBzdHJpbmcgaXRzZWxmLCBpZiBpdCBzcGVjaWZpZXMgb25lXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGU9J2VuLVVTJ10gLSBhIGxvY2FsZSBzdHJpbmcgdG8gdXNlIHdoZW4gcGFyc2luZy4gV2lsbCBhbHNvIHNldCB0aGUgRGF0ZVRpbWUgdG8gdGhpcyBsb2NhbGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMubnVtYmVyaW5nU3lzdGVtIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0gdG8gdXNlIHdoZW4gcGFyc2luZy4gV2lsbCBhbHNvIHNldCB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIHRvIHRoaXMgbnVtYmVyaW5nIHN5c3RlbVxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5vdXRwdXRDYWxlbmRhciAtIHRoZSBvdXRwdXQgY2FsZW5kYXIgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2VcbiAgICogQHJldHVybiB7RGF0ZVRpbWV9XG4gICAqL1xuICBzdGF0aWMgZnJvbUZvcm1hdCh0ZXh0LCBmbXQsIG9wdHMgPSB7fSkge1xuICAgIGlmIChpc1VuZGVmaW5lZCh0ZXh0KSB8fCBpc1VuZGVmaW5lZChmbXQpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoXCJmcm9tRm9ybWF0IHJlcXVpcmVzIGFuIGlucHV0IHN0cmluZyBhbmQgYSBmb3JtYXRcIik7XG4gICAgfVxuXG4gICAgY29uc3QgeyBsb2NhbGUgPSBudWxsLCBudW1iZXJpbmdTeXN0ZW0gPSBudWxsIH0gPSBvcHRzLFxuICAgICAgbG9jYWxlVG9Vc2UgPSBMb2NhbGUuZnJvbU9wdHMoe1xuICAgICAgICBsb2NhbGUsXG4gICAgICAgIG51bWJlcmluZ1N5c3RlbSxcbiAgICAgICAgZGVmYXVsdFRvRU46IHRydWUsXG4gICAgICB9KSxcbiAgICAgIFt2YWxzLCBwYXJzZWRab25lLCBzcGVjaWZpY09mZnNldCwgaW52YWxpZF0gPSBwYXJzZUZyb21Ub2tlbnMobG9jYWxlVG9Vc2UsIHRleHQsIGZtdCk7XG4gICAgaWYgKGludmFsaWQpIHtcbiAgICAgIHJldHVybiBEYXRlVGltZS5pbnZhbGlkKGludmFsaWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcGFyc2VEYXRhVG9EYXRlVGltZSh2YWxzLCBwYXJzZWRab25lLCBvcHRzLCBgZm9ybWF0ICR7Zm10fWAsIHRleHQsIHNwZWNpZmljT2Zmc2V0KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGZyb21Gb3JtYXQgaW5zdGVhZFxuICAgKi9cbiAgc3RhdGljIGZyb21TdHJpbmcodGV4dCwgZm10LCBvcHRzID0ge30pIHtcbiAgICByZXR1cm4gRGF0ZVRpbWUuZnJvbUZvcm1hdCh0ZXh0LCBmbXQsIG9wdHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIERhdGVUaW1lIGZyb20gYSBTUUwgZGF0ZSwgdGltZSwgb3IgZGF0ZXRpbWVcbiAgICogRGVmYXVsdHMgdG8gZW4tVVMgaWYgbm8gbG9jYWxlIGhhcyBiZWVuIHNwZWNpZmllZCwgcmVnYXJkbGVzcyBvZiB0aGUgc3lzdGVtJ3MgbG9jYWxlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IC0gdGhlIHN0cmluZyB0byBwYXJzZVxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgdG8gYWZmZWN0IHRoZSBjcmVhdGlvblxuICAgKiBAcGFyYW0ge3N0cmluZ3xab25lfSBbb3B0cy56b25lPSdsb2NhbCddIC0gdXNlIHRoaXMgem9uZSBpZiBubyBvZmZzZXQgaXMgc3BlY2lmaWVkIGluIHRoZSBpbnB1dCBzdHJpbmcgaXRzZWxmLiBXaWxsIGFsc28gY29udmVydCB0aGUgRGF0ZVRpbWUgdG8gdGhpcyB6b25lXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuc2V0Wm9uZT1mYWxzZV0gLSBvdmVycmlkZSB0aGUgem9uZSB3aXRoIGEgem9uZSBzcGVjaWZpZWQgaW4gdGhlIHN0cmluZyBpdHNlbGYsIGlmIGl0IHNwZWNpZmllcyBvbmVcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT0nZW4tVVMnXSAtIGEgbG9jYWxlIHN0cmluZyB0byB1c2Ugd2hlbiBwYXJzaW5nLiBXaWxsIGFsc28gc2V0IHRoZSBEYXRlVGltZSB0byB0aGlzIGxvY2FsZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5udW1iZXJpbmdTeXN0ZW0gLSB0aGUgbnVtYmVyaW5nIHN5c3RlbSB0byB1c2Ugd2hlbiBwYXJzaW5nLiBXaWxsIGFsc28gc2V0IHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgdG8gdGhpcyBudW1iZXJpbmcgc3lzdGVtXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm91dHB1dENhbGVuZGFyIC0gdGhlIG91dHB1dCBjYWxlbmRhciB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tU1FMKCcyMDE3LTA1LTE1JylcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVNRTCgnMjAxNy0wNS0xNSAwOToxMjozNCcpXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21TUUwoJzIwMTctMDUtMTUgMDk6MTI6MzQuMzQyJylcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVNRTCgnMjAxNy0wNS0xNSAwOToxMjozNC4zNDIrMDY6MDAnKVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tU1FMKCcyMDE3LTA1LTE1IDA5OjEyOjM0LjM0MiBBbWVyaWNhL0xvc19BbmdlbGVzJylcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVNRTCgnMjAxNy0wNS0xNSAwOToxMjozNC4zNDIgQW1lcmljYS9Mb3NfQW5nZWxlcycsIHsgc2V0Wm9uZTogdHJ1ZSB9KVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tU1FMKCcyMDE3LTA1LTE1IDA5OjEyOjM0LjM0MicsIHsgem9uZTogJ0FtZXJpY2EvTG9zX0FuZ2VsZXMnIH0pXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21TUUwoJzA5OjEyOjM0LjM0MicpXG4gICAqIEByZXR1cm4ge0RhdGVUaW1lfVxuICAgKi9cbiAgc3RhdGljIGZyb21TUUwodGV4dCwgb3B0cyA9IHt9KSB7XG4gICAgY29uc3QgW3ZhbHMsIHBhcnNlZFpvbmVdID0gcGFyc2VTUUwodGV4dCk7XG4gICAgcmV0dXJuIHBhcnNlRGF0YVRvRGF0ZVRpbWUodmFscywgcGFyc2VkWm9uZSwgb3B0cywgXCJTUUxcIiwgdGV4dCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGFuIGludmFsaWQgRGF0ZVRpbWUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSByZWFzb24gLSBzaW1wbGUgc3RyaW5nIG9mIHdoeSB0aGlzIERhdGVUaW1lIGlzIGludmFsaWQuIFNob3VsZCBub3QgY29udGFpbiBwYXJhbWV0ZXJzIG9yIGFueXRoaW5nIGVsc2UgZGF0YS1kZXBlbmRlbnRcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtleHBsYW5hdGlvbj1udWxsXSAtIGxvbmdlciBleHBsYW5hdGlvbiwgbWF5IGluY2x1ZGUgcGFyYW1ldGVycyBhbmQgb3RoZXIgdXNlZnVsIGRlYnVnZ2luZyBpbmZvcm1hdGlvblxuICAgKiBAcmV0dXJuIHtEYXRlVGltZX1cbiAgICovXG4gIHN0YXRpYyBpbnZhbGlkKHJlYXNvbiwgZXhwbGFuYXRpb24gPSBudWxsKSB7XG4gICAgaWYgKCFyZWFzb24pIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcihcIm5lZWQgdG8gc3BlY2lmeSBhIHJlYXNvbiB0aGUgRGF0ZVRpbWUgaXMgaW52YWxpZFwiKTtcbiAgICB9XG5cbiAgICBjb25zdCBpbnZhbGlkID0gcmVhc29uIGluc3RhbmNlb2YgSW52YWxpZCA/IHJlYXNvbiA6IG5ldyBJbnZhbGlkKHJlYXNvbiwgZXhwbGFuYXRpb24pO1xuXG4gICAgaWYgKFNldHRpbmdzLnRocm93T25JbnZhbGlkKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZERhdGVUaW1lRXJyb3IoaW52YWxpZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBuZXcgRGF0ZVRpbWUoeyBpbnZhbGlkIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhbiBvYmplY3QgaXMgYW4gaW5zdGFuY2Ugb2YgRGF0ZVRpbWUuIFdvcmtzIGFjcm9zcyBjb250ZXh0IGJvdW5kYXJpZXNcbiAgICogQHBhcmFtIHtvYmplY3R9IG9cbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICovXG4gIHN0YXRpYyBpc0RhdGVUaW1lKG8pIHtcbiAgICByZXR1cm4gKG8gJiYgby5pc0x1eG9uRGF0ZVRpbWUpIHx8IGZhbHNlO1xuICB9XG5cbiAgLy8gSU5GT1xuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHZhbHVlIG9mIHVuaXQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB1bml0IC0gYSB1bml0IHN1Y2ggYXMgJ21pbnV0ZScgb3IgJ2RheSdcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNywgNCkuZ2V0KCdtb250aCcpOyAvLz0+IDdcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNywgNCkuZ2V0KCdkYXknKTsgLy89PiA0XG4gICAqIEByZXR1cm4ge251bWJlcn1cbiAgICovXG4gIGdldCh1bml0KSB7XG4gICAgcmV0dXJuIHRoaXNbdW5pdF07XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB3aGV0aGVyIHRoZSBEYXRlVGltZSBpcyB2YWxpZC4gSW52YWxpZCBEYXRlVGltZXMgb2NjdXIgd2hlbjpcbiAgICogKiBUaGUgRGF0ZVRpbWUgd2FzIGNyZWF0ZWQgZnJvbSBpbnZhbGlkIGNhbGVuZGFyIGluZm9ybWF0aW9uLCBzdWNoIGFzIHRoZSAxM3RoIG1vbnRoIG9yIEZlYnJ1YXJ5IDMwXG4gICAqICogVGhlIERhdGVUaW1lIHdhcyBjcmVhdGVkIGJ5IGFuIG9wZXJhdGlvbiBvbiBhbm90aGVyIGludmFsaWQgZGF0ZVxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICovXG4gIGdldCBpc1ZhbGlkKCkge1xuICAgIHJldHVybiB0aGlzLmludmFsaWQgPT09IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBlcnJvciBjb2RlIGlmIHRoaXMgRGF0ZVRpbWUgaXMgaW52YWxpZCwgb3IgbnVsbCBpZiB0aGUgRGF0ZVRpbWUgaXMgdmFsaWRcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIGdldCBpbnZhbGlkUmVhc29uKCkge1xuICAgIHJldHVybiB0aGlzLmludmFsaWQgPyB0aGlzLmludmFsaWQucmVhc29uIDogbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIGV4cGxhbmF0aW9uIG9mIHdoeSB0aGlzIERhdGVUaW1lIGJlY2FtZSBpbnZhbGlkLCBvciBudWxsIGlmIHRoZSBEYXRlVGltZSBpcyB2YWxpZFxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKi9cbiAgZ2V0IGludmFsaWRFeHBsYW5hdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5pbnZhbGlkID8gdGhpcy5pbnZhbGlkLmV4cGxhbmF0aW9uIDogbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGxvY2FsZSBvZiBhIERhdGVUaW1lLCBzdWNoICdlbi1HQicuIFRoZSBsb2NhbGUgaXMgdXNlZCB3aGVuIGZvcm1hdHRpbmcgdGhlIERhdGVUaW1lXG4gICAqXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBnZXQgbG9jYWxlKCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmxvYy5sb2NhbGUgOiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgbnVtYmVyaW5nIHN5c3RlbSBvZiBhIERhdGVUaW1lLCBzdWNoICdiZW5nJy4gVGhlIG51bWJlcmluZyBzeXN0ZW0gaXMgdXNlZCB3aGVuIGZvcm1hdHRpbmcgdGhlIERhdGVUaW1lXG4gICAqXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBnZXQgbnVtYmVyaW5nU3lzdGVtKCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmxvYy5udW1iZXJpbmdTeXN0ZW0gOiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgb3V0cHV0IGNhbGVuZGFyIG9mIGEgRGF0ZVRpbWUsIHN1Y2ggJ2lzbGFtaWMnLiBUaGUgb3V0cHV0IGNhbGVuZGFyIGlzIHVzZWQgd2hlbiBmb3JtYXR0aW5nIHRoZSBEYXRlVGltZVxuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKi9cbiAgZ2V0IG91dHB1dENhbGVuZGFyKCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmxvYy5vdXRwdXRDYWxlbmRhciA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSB0aW1lIHpvbmUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgRGF0ZVRpbWUuXG4gICAqIEB0eXBlIHtab25lfVxuICAgKi9cbiAgZ2V0IHpvbmUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3pvbmU7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBuYW1lIG9mIHRoZSB0aW1lIHpvbmUuXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBnZXQgem9uZU5hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMuem9uZS5uYW1lIDogbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHllYXJcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUpLnllYXIgLy89PiAyMDE3XG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqL1xuICBnZXQgeWVhcigpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5jLnllYXIgOiBOYU47XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBxdWFydGVyXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS5xdWFydGVyIC8vPT4gMlxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKi9cbiAgZ2V0IHF1YXJ0ZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IE1hdGguY2VpbCh0aGlzLmMubW9udGggLyAzKSA6IE5hTjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIG1vbnRoICgxLTEyKS5cbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUpLm1vbnRoIC8vPT4gNVxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKi9cbiAgZ2V0IG1vbnRoKCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmMubW9udGggOiBOYU47XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBkYXkgb2YgdGhlIG1vbnRoICgxLTMwaXNoKS5cbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUpLmRheSAvLz0+IDI1XG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqL1xuICBnZXQgZGF5KCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmMuZGF5IDogTmFOO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgaG91ciBvZiB0aGUgZGF5ICgwLTIzKS5cbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUsIDkpLmhvdXIgLy89PiA5XG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqL1xuICBnZXQgaG91cigpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5jLmhvdXIgOiBOYU47XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBtaW51dGUgb2YgdGhlIGhvdXIgKDAtNTkpLlxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCA1LCAyNSwgOSwgMzApLm1pbnV0ZSAvLz0+IDMwXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqL1xuICBnZXQgbWludXRlKCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmMubWludXRlIDogTmFOO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgc2Vjb25kIG9mIHRoZSBtaW51dGUgKDAtNTkpLlxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCA1LCAyNSwgOSwgMzAsIDUyKS5zZWNvbmQgLy89PiA1MlxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKi9cbiAgZ2V0IHNlY29uZCgpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5jLnNlY29uZCA6IE5hTjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIG1pbGxpc2Vjb25kIG9mIHRoZSBzZWNvbmQgKDAtOTk5KS5cbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUsIDksIDMwLCA1MiwgNjU0KS5taWxsaXNlY29uZCAvLz0+IDY1NFxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKi9cbiAgZ2V0IG1pbGxpc2Vjb25kKCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmMubWlsbGlzZWNvbmQgOiBOYU47XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSB3ZWVrIHllYXJcbiAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDEyLCAzMSkud2Vla1llYXIgLy89PiAyMDE1XG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqL1xuICBnZXQgd2Vla1llYXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHBvc3NpYmx5Q2FjaGVkV2Vla0RhdGEodGhpcykud2Vla1llYXIgOiBOYU47XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSB3ZWVrIG51bWJlciBvZiB0aGUgd2VlayB5ZWFyICgxLTUyaXNoKS5cbiAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS53ZWVrTnVtYmVyIC8vPT4gMjFcbiAgICogQHR5cGUge251bWJlcn1cbiAgICovXG4gIGdldCB3ZWVrTnVtYmVyKCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBwb3NzaWJseUNhY2hlZFdlZWtEYXRhKHRoaXMpLndlZWtOdW1iZXIgOiBOYU47XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBkYXkgb2YgdGhlIHdlZWsuXG4gICAqIDEgaXMgTW9uZGF5IGFuZCA3IGlzIFN1bmRheVxuICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGVcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMTEsIDMxKS53ZWVrZGF5IC8vPT4gNFxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKi9cbiAgZ2V0IHdlZWtkYXkoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHBvc3NpYmx5Q2FjaGVkV2Vla0RhdGEodGhpcykud2Vla2RheSA6IE5hTjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIG9yZGluYWwgKG1lYW5pbmcgdGhlIGRheSBvZiB0aGUgeWVhcilcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUpLm9yZGluYWwgLy89PiAxNDVcbiAgICogQHR5cGUge251bWJlcnxEYXRlVGltZX1cbiAgICovXG4gIGdldCBvcmRpbmFsKCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBncmVnb3JpYW5Ub09yZGluYWwodGhpcy5jKS5vcmRpbmFsIDogTmFOO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgaHVtYW4gcmVhZGFibGUgc2hvcnQgbW9udGggbmFtZSwgc3VjaCBhcyAnT2N0Jy5cbiAgICogRGVmYXVsdHMgdG8gdGhlIHN5c3RlbSdzIGxvY2FsZSBpZiBubyBsb2NhbGUgaGFzIGJlZW4gc3BlY2lmaWVkXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDEwLCAzMCkubW9udGhTaG9ydCAvLz0+IE9jdFxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKi9cbiAgZ2V0IG1vbnRoU2hvcnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IEluZm8ubW9udGhzKFwic2hvcnRcIiwgeyBsb2NPYmo6IHRoaXMubG9jIH0pW3RoaXMubW9udGggLSAxXSA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBodW1hbiByZWFkYWJsZSBsb25nIG1vbnRoIG5hbWUsIHN1Y2ggYXMgJ09jdG9iZXInLlxuICAgKiBEZWZhdWx0cyB0byB0aGUgc3lzdGVtJ3MgbG9jYWxlIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWRcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgMTAsIDMwKS5tb250aExvbmcgLy89PiBPY3RvYmVyXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBnZXQgbW9udGhMb25nKCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBJbmZvLm1vbnRocyhcImxvbmdcIiwgeyBsb2NPYmo6IHRoaXMubG9jIH0pW3RoaXMubW9udGggLSAxXSA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBodW1hbiByZWFkYWJsZSBzaG9ydCB3ZWVrZGF5LCBzdWNoIGFzICdNb24nLlxuICAgKiBEZWZhdWx0cyB0byB0aGUgc3lzdGVtJ3MgbG9jYWxlIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWRcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgMTAsIDMwKS53ZWVrZGF5U2hvcnQgLy89PiBNb25cbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIGdldCB3ZWVrZGF5U2hvcnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IEluZm8ud2Vla2RheXMoXCJzaG9ydFwiLCB7IGxvY09iajogdGhpcy5sb2MgfSlbdGhpcy53ZWVrZGF5IC0gMV0gOiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgaHVtYW4gcmVhZGFibGUgbG9uZyB3ZWVrZGF5LCBzdWNoIGFzICdNb25kYXknLlxuICAgKiBEZWZhdWx0cyB0byB0aGUgc3lzdGVtJ3MgbG9jYWxlIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWRcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgMTAsIDMwKS53ZWVrZGF5TG9uZyAvLz0+IE1vbmRheVxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKi9cbiAgZ2V0IHdlZWtkYXlMb25nKCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBJbmZvLndlZWtkYXlzKFwibG9uZ1wiLCB7IGxvY09iajogdGhpcy5sb2MgfSlbdGhpcy53ZWVrZGF5IC0gMV0gOiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgVVRDIG9mZnNldCBvZiB0aGlzIERhdGVUaW1lIGluIG1pbnV0ZXNcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkub2Zmc2V0IC8vPT4gLTI0MFxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoKS5vZmZzZXQgLy89PiAwXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqL1xuICBnZXQgb2Zmc2V0KCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyArdGhpcy5vIDogTmFOO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgc2hvcnQgaHVtYW4gbmFtZSBmb3IgdGhlIHpvbmUncyBjdXJyZW50IG9mZnNldCwgZm9yIGV4YW1wbGUgXCJFU1RcIiBvciBcIkVEVFwiLlxuICAgKiBEZWZhdWx0cyB0byB0aGUgc3lzdGVtJ3MgbG9jYWxlIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWRcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIGdldCBvZmZzZXROYW1lU2hvcnQoKSB7XG4gICAgaWYgKHRoaXMuaXNWYWxpZCkge1xuICAgICAgcmV0dXJuIHRoaXMuem9uZS5vZmZzZXROYW1lKHRoaXMudHMsIHtcbiAgICAgICAgZm9ybWF0OiBcInNob3J0XCIsXG4gICAgICAgIGxvY2FsZTogdGhpcy5sb2NhbGUsXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgbG9uZyBodW1hbiBuYW1lIGZvciB0aGUgem9uZSdzIGN1cnJlbnQgb2Zmc2V0LCBmb3IgZXhhbXBsZSBcIkVhc3Rlcm4gU3RhbmRhcmQgVGltZVwiIG9yIFwiRWFzdGVybiBEYXlsaWdodCBUaW1lXCIuXG4gICAqIERlZmF1bHRzIHRvIHRoZSBzeXN0ZW0ncyBsb2NhbGUgaWYgbm8gbG9jYWxlIGhhcyBiZWVuIHNwZWNpZmllZFxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKi9cbiAgZ2V0IG9mZnNldE5hbWVMb25nKCkge1xuICAgIGlmICh0aGlzLmlzVmFsaWQpIHtcbiAgICAgIHJldHVybiB0aGlzLnpvbmUub2Zmc2V0TmFtZSh0aGlzLnRzLCB7XG4gICAgICAgIGZvcm1hdDogXCJsb25nXCIsXG4gICAgICAgIGxvY2FsZTogdGhpcy5sb2NhbGUsXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB3aGV0aGVyIHRoaXMgem9uZSdzIG9mZnNldCBldmVyIGNoYW5nZXMsIGFzIGluIGEgRFNULlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICovXG4gIGdldCBpc09mZnNldEZpeGVkKCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnpvbmUuaXNVbml2ZXJzYWwgOiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB3aGV0aGVyIHRoZSBEYXRlVGltZSBpcyBpbiBhIERTVC5cbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqL1xuICBnZXQgaXNJbkRTVCgpIHtcbiAgICBpZiAodGhpcy5pc09mZnNldEZpeGVkKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIHRoaXMub2Zmc2V0ID4gdGhpcy5zZXQoeyBtb250aDogMSwgZGF5OiAxIH0pLm9mZnNldCB8fFxuICAgICAgICB0aGlzLm9mZnNldCA+IHRoaXMuc2V0KHsgbW9udGg6IDUgfSkub2Zmc2V0XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRydWUgaWYgdGhpcyBEYXRlVGltZSBpcyBpbiBhIGxlYXAgeWVhciwgZmFsc2Ugb3RoZXJ3aXNlXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTYpLmlzSW5MZWFwWWVhciAvLz0+IHRydWVcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxMykuaXNJbkxlYXBZZWFyIC8vPT4gZmFsc2VcbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqL1xuICBnZXQgaXNJbkxlYXBZZWFyKCkge1xuICAgIHJldHVybiBpc0xlYXBZZWFyKHRoaXMueWVhcik7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIGRheXMgaW4gdGhpcyBEYXRlVGltZSdzIG1vbnRoXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTYsIDIpLmRheXNJbk1vbnRoIC8vPT4gMjlcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNiwgMykuZGF5c0luTW9udGggLy89PiAzMVxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKi9cbiAgZ2V0IGRheXNJbk1vbnRoKCkge1xuICAgIHJldHVybiBkYXlzSW5Nb250aCh0aGlzLnllYXIsIHRoaXMubW9udGgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIG51bWJlciBvZiBkYXlzIGluIHRoaXMgRGF0ZVRpbWUncyB5ZWFyXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTYpLmRheXNJblllYXIgLy89PiAzNjZcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxMykuZGF5c0luWWVhciAvLz0+IDM2NVxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKi9cbiAgZ2V0IGRheXNJblllYXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IGRheXNJblllYXIodGhpcy55ZWFyKSA6IE5hTjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2Ygd2Vla3MgaW4gdGhpcyBEYXRlVGltZSdzIHllYXJcbiAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMDQpLndlZWtzSW5XZWVrWWVhciAvLz0+IDUzXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTMpLndlZWtzSW5XZWVrWWVhciAvLz0+IDUyXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqL1xuICBnZXQgd2Vla3NJbldlZWtZZWFyKCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB3ZWVrc0luV2Vla1llYXIodGhpcy53ZWVrWWVhcikgOiBOYU47XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgcmVzb2x2ZWQgSW50bCBvcHRpb25zIGZvciB0aGlzIERhdGVUaW1lLlxuICAgKiBUaGlzIGlzIHVzZWZ1bCBpbiB1bmRlcnN0YW5kaW5nIHRoZSBiZWhhdmlvciBvZiBmb3JtYXR0aW5nIG1ldGhvZHNcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSB0aGUgc2FtZSBvcHRpb25zIGFzIHRvTG9jYWxlU3RyaW5nXG4gICAqIEByZXR1cm4ge09iamVjdH1cbiAgICovXG4gIHJlc29sdmVkTG9jYWxlT3B0aW9ucyhvcHRzID0ge30pIHtcbiAgICBjb25zdCB7IGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtLCBjYWxlbmRhciB9ID0gRm9ybWF0dGVyLmNyZWF0ZShcbiAgICAgIHRoaXMubG9jLmNsb25lKG9wdHMpLFxuICAgICAgb3B0c1xuICAgICkucmVzb2x2ZWRPcHRpb25zKHRoaXMpO1xuICAgIHJldHVybiB7IGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtLCBvdXRwdXRDYWxlbmRhcjogY2FsZW5kYXIgfTtcbiAgfVxuXG4gIC8vIFRSQU5TRk9STVxuXG4gIC8qKlxuICAgKiBcIlNldFwiIHRoZSBEYXRlVGltZSdzIHpvbmUgdG8gVVRDLiBSZXR1cm5zIGEgbmV3bHktY29uc3RydWN0ZWQgRGF0ZVRpbWUuXG4gICAqXG4gICAqIEVxdWl2YWxlbnQgdG8ge0BsaW5rIERhdGVUaW1lI3NldFpvbmV9KCd1dGMnKVxuICAgKiBAcGFyYW0ge251bWJlcn0gW29mZnNldD0wXSAtIG9wdGlvbmFsbHksIGFuIG9mZnNldCBmcm9tIFVUQyBpbiBtaW51dGVzXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0cz17fV0gLSBvcHRpb25zIHRvIHBhc3MgdG8gYHNldFpvbmUoKWBcbiAgICogQHJldHVybiB7RGF0ZVRpbWV9XG4gICAqL1xuICB0b1VUQyhvZmZzZXQgPSAwLCBvcHRzID0ge30pIHtcbiAgICByZXR1cm4gdGhpcy5zZXRab25lKEZpeGVkT2Zmc2V0Wm9uZS5pbnN0YW5jZShvZmZzZXQpLCBvcHRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBcIlNldFwiIHRoZSBEYXRlVGltZSdzIHpvbmUgdG8gdGhlIGhvc3QncyBsb2NhbCB6b25lLiBSZXR1cm5zIGEgbmV3bHktY29uc3RydWN0ZWQgRGF0ZVRpbWUuXG4gICAqXG4gICAqIEVxdWl2YWxlbnQgdG8gYHNldFpvbmUoJ2xvY2FsJylgXG4gICAqIEByZXR1cm4ge0RhdGVUaW1lfVxuICAgKi9cbiAgdG9Mb2NhbCgpIHtcbiAgICByZXR1cm4gdGhpcy5zZXRab25lKFNldHRpbmdzLmRlZmF1bHRab25lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBcIlNldFwiIHRoZSBEYXRlVGltZSdzIHpvbmUgdG8gc3BlY2lmaWVkIHpvbmUuIFJldHVybnMgYSBuZXdseS1jb25zdHJ1Y3RlZCBEYXRlVGltZS5cbiAgICpcbiAgICogQnkgZGVmYXVsdCwgdGhlIHNldHRlciBrZWVwcyB0aGUgdW5kZXJseWluZyB0aW1lIHRoZSBzYW1lIChhcyBpbiwgdGhlIHNhbWUgdGltZXN0YW1wKSwgYnV0IHRoZSBuZXcgaW5zdGFuY2Ugd2lsbCByZXBvcnQgZGlmZmVyZW50IGxvY2FsIHRpbWVzIGFuZCBjb25zaWRlciBEU1RzIHdoZW4gbWFraW5nIGNvbXB1dGF0aW9ucywgYXMgd2l0aCB7QGxpbmsgRGF0ZVRpbWUjcGx1c30uIFlvdSBtYXkgd2lzaCB0byB1c2Uge0BsaW5rIERhdGVUaW1lI3RvTG9jYWx9IGFuZCB7QGxpbmsgRGF0ZVRpbWUjdG9VVEN9IHdoaWNoIHByb3ZpZGUgc2ltcGxlIGNvbnZlbmllbmNlIHdyYXBwZXJzIGZvciBjb21tb25seSB1c2VkIHpvbmVzLlxuICAgKiBAcGFyYW0ge3N0cmluZ3xab25lfSBbem9uZT0nbG9jYWwnXSAtIGEgem9uZSBpZGVudGlmaWVyLiBBcyBhIHN0cmluZywgdGhhdCBjYW4gYmUgYW55IElBTkEgem9uZSBzdXBwb3J0ZWQgYnkgdGhlIGhvc3QgZW52aXJvbm1lbnQsIG9yIGEgZml4ZWQtb2Zmc2V0IG5hbWUgb2YgdGhlIGZvcm0gJ1VUQyszJywgb3IgdGhlIHN0cmluZ3MgJ2xvY2FsJyBvciAndXRjJy4gWW91IG1heSBhbHNvIHN1cHBseSBhbiBpbnN0YW5jZSBvZiBhIHtAbGluayBEYXRlVGltZSNab25lfSBjbGFzcy5cbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMua2VlcExvY2FsVGltZT1mYWxzZV0gLSBJZiB0cnVlLCBhZGp1c3QgdGhlIHVuZGVybHlpbmcgdGltZSBzbyB0aGF0IHRoZSBsb2NhbCB0aW1lIHN0YXlzIHRoZSBzYW1lLCBidXQgaW4gdGhlIHRhcmdldCB6b25lLiBZb3Ugc2hvdWxkIHJhcmVseSBuZWVkIHRoaXMuXG4gICAqIEByZXR1cm4ge0RhdGVUaW1lfVxuICAgKi9cbiAgc2V0Wm9uZSh6b25lLCB7IGtlZXBMb2NhbFRpbWUgPSBmYWxzZSwga2VlcENhbGVuZGFyVGltZSA9IGZhbHNlIH0gPSB7fSkge1xuICAgIHpvbmUgPSBub3JtYWxpemVab25lKHpvbmUsIFNldHRpbmdzLmRlZmF1bHRab25lKTtcbiAgICBpZiAoem9uZS5lcXVhbHModGhpcy56b25lKSkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSBlbHNlIGlmICghem9uZS5pc1ZhbGlkKSB7XG4gICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZCh1bnN1cHBvcnRlZFpvbmUoem9uZSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgbmV3VFMgPSB0aGlzLnRzO1xuICAgICAgaWYgKGtlZXBMb2NhbFRpbWUgfHwga2VlcENhbGVuZGFyVGltZSkge1xuICAgICAgICBjb25zdCBvZmZzZXRHdWVzcyA9IHpvbmUub2Zmc2V0KHRoaXMudHMpO1xuICAgICAgICBjb25zdCBhc09iaiA9IHRoaXMudG9PYmplY3QoKTtcbiAgICAgICAgW25ld1RTXSA9IG9ialRvVFMoYXNPYmosIG9mZnNldEd1ZXNzLCB6b25lKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjbG9uZSh0aGlzLCB7IHRzOiBuZXdUUywgem9uZSB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogXCJTZXRcIiB0aGUgbG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG9yIG91dHB1dENhbGVuZGFyLiBSZXR1cm5zIGEgbmV3bHktY29uc3RydWN0ZWQgRGF0ZVRpbWUuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wZXJ0aWVzIC0gdGhlIHByb3BlcnRpZXMgdG8gc2V0XG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS5yZWNvbmZpZ3VyZSh7IGxvY2FsZTogJ2VuLUdCJyB9KVxuICAgKiBAcmV0dXJuIHtEYXRlVGltZX1cbiAgICovXG4gIHJlY29uZmlndXJlKHsgbG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG91dHB1dENhbGVuZGFyIH0gPSB7fSkge1xuICAgIGNvbnN0IGxvYyA9IHRoaXMubG9jLmNsb25lKHsgbG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG91dHB1dENhbGVuZGFyIH0pO1xuICAgIHJldHVybiBjbG9uZSh0aGlzLCB7IGxvYyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBcIlNldFwiIHRoZSBsb2NhbGUuIFJldHVybnMgYSBuZXdseS1jb25zdHJ1Y3RlZCBEYXRlVGltZS5cbiAgICogSnVzdCBhIGNvbnZlbmllbnQgYWxpYXMgZm9yIHJlY29uZmlndXJlKHsgbG9jYWxlIH0pXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS5zZXRMb2NhbGUoJ2VuLUdCJylcbiAgICogQHJldHVybiB7RGF0ZVRpbWV9XG4gICAqL1xuICBzZXRMb2NhbGUobG9jYWxlKSB7XG4gICAgcmV0dXJuIHRoaXMucmVjb25maWd1cmUoeyBsb2NhbGUgfSk7XG4gIH1cblxuICAvKipcbiAgICogXCJTZXRcIiB0aGUgdmFsdWVzIG9mIHNwZWNpZmllZCB1bml0cy4gUmV0dXJucyBhIG5ld2x5LWNvbnN0cnVjdGVkIERhdGVUaW1lLlxuICAgKiBZb3UgY2FuIG9ubHkgc2V0IHVuaXRzIHdpdGggdGhpcyBtZXRob2Q7IGZvciBcInNldHRpbmdcIiBtZXRhZGF0YSwgc2VlIHtAbGluayBEYXRlVGltZSNyZWNvbmZpZ3VyZX0gYW5kIHtAbGluayBEYXRlVGltZSNzZXRab25lfS5cbiAgICogQHBhcmFtIHtPYmplY3R9IHZhbHVlcyAtIGEgbWFwcGluZyBvZiB1bml0cyB0byBudW1iZXJzXG4gICAqIEBleGFtcGxlIGR0LnNldCh7IHllYXI6IDIwMTcgfSlcbiAgICogQGV4YW1wbGUgZHQuc2V0KHsgaG91cjogOCwgbWludXRlOiAzMCB9KVxuICAgKiBAZXhhbXBsZSBkdC5zZXQoeyB3ZWVrZGF5OiA1IH0pXG4gICAqIEBleGFtcGxlIGR0LnNldCh7IHllYXI6IDIwMDUsIG9yZGluYWw6IDIzNCB9KVxuICAgKiBAcmV0dXJuIHtEYXRlVGltZX1cbiAgICovXG4gIHNldCh2YWx1ZXMpIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7XG5cbiAgICBjb25zdCBub3JtYWxpemVkID0gbm9ybWFsaXplT2JqZWN0KHZhbHVlcywgbm9ybWFsaXplVW5pdCksXG4gICAgICBzZXR0aW5nV2Vla1N0dWZmID1cbiAgICAgICAgIWlzVW5kZWZpbmVkKG5vcm1hbGl6ZWQud2Vla1llYXIpIHx8XG4gICAgICAgICFpc1VuZGVmaW5lZChub3JtYWxpemVkLndlZWtOdW1iZXIpIHx8XG4gICAgICAgICFpc1VuZGVmaW5lZChub3JtYWxpemVkLndlZWtkYXkpLFxuICAgICAgY29udGFpbnNPcmRpbmFsID0gIWlzVW5kZWZpbmVkKG5vcm1hbGl6ZWQub3JkaW5hbCksXG4gICAgICBjb250YWluc0dyZWdvclllYXIgPSAhaXNVbmRlZmluZWQobm9ybWFsaXplZC55ZWFyKSxcbiAgICAgIGNvbnRhaW5zR3JlZ29yTUQgPSAhaXNVbmRlZmluZWQobm9ybWFsaXplZC5tb250aCkgfHwgIWlzVW5kZWZpbmVkKG5vcm1hbGl6ZWQuZGF5KSxcbiAgICAgIGNvbnRhaW5zR3JlZ29yID0gY29udGFpbnNHcmVnb3JZZWFyIHx8IGNvbnRhaW5zR3JlZ29yTUQsXG4gICAgICBkZWZpbml0ZVdlZWtEZWYgPSBub3JtYWxpemVkLndlZWtZZWFyIHx8IG5vcm1hbGl6ZWQud2Vla051bWJlcjtcblxuICAgIGlmICgoY29udGFpbnNHcmVnb3IgfHwgY29udGFpbnNPcmRpbmFsKSAmJiBkZWZpbml0ZVdlZWtEZWYpIHtcbiAgICAgIHRocm93IG5ldyBDb25mbGljdGluZ1NwZWNpZmljYXRpb25FcnJvcihcbiAgICAgICAgXCJDYW4ndCBtaXggd2Vla1llYXIvd2Vla051bWJlciB1bml0cyB3aXRoIHllYXIvbW9udGgvZGF5IG9yIG9yZGluYWxzXCJcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKGNvbnRhaW5zR3JlZ29yTUQgJiYgY29udGFpbnNPcmRpbmFsKSB7XG4gICAgICB0aHJvdyBuZXcgQ29uZmxpY3RpbmdTcGVjaWZpY2F0aW9uRXJyb3IoXCJDYW4ndCBtaXggb3JkaW5hbCBkYXRlcyB3aXRoIG1vbnRoL2RheVwiKTtcbiAgICB9XG5cbiAgICBsZXQgbWl4ZWQ7XG4gICAgaWYgKHNldHRpbmdXZWVrU3R1ZmYpIHtcbiAgICAgIG1peGVkID0gd2Vla1RvR3JlZ29yaWFuKHsgLi4uZ3JlZ29yaWFuVG9XZWVrKHRoaXMuYyksIC4uLm5vcm1hbGl6ZWQgfSk7XG4gICAgfSBlbHNlIGlmICghaXNVbmRlZmluZWQobm9ybWFsaXplZC5vcmRpbmFsKSkge1xuICAgICAgbWl4ZWQgPSBvcmRpbmFsVG9HcmVnb3JpYW4oeyAuLi5ncmVnb3JpYW5Ub09yZGluYWwodGhpcy5jKSwgLi4ubm9ybWFsaXplZCB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgbWl4ZWQgPSB7IC4uLnRoaXMudG9PYmplY3QoKSwgLi4ubm9ybWFsaXplZCB9O1xuXG4gICAgICAvLyBpZiB3ZSBkaWRuJ3Qgc2V0IHRoZSBkYXkgYnV0IHdlIGVuZGVkIHVwIG9uIGFuIG92ZXJmbG93IGRhdGUsXG4gICAgICAvLyB1c2UgdGhlIGxhc3QgZGF5IG9mIHRoZSByaWdodCBtb250aFxuICAgICAgaWYgKGlzVW5kZWZpbmVkKG5vcm1hbGl6ZWQuZGF5KSkge1xuICAgICAgICBtaXhlZC5kYXkgPSBNYXRoLm1pbihkYXlzSW5Nb250aChtaXhlZC55ZWFyLCBtaXhlZC5tb250aCksIG1peGVkLmRheSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgW3RzLCBvXSA9IG9ialRvVFMobWl4ZWQsIHRoaXMubywgdGhpcy56b25lKTtcbiAgICByZXR1cm4gY2xvbmUodGhpcywgeyB0cywgbyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBwZXJpb2Qgb2YgdGltZSB0byB0aGlzIERhdGVUaW1lIGFuZCByZXR1cm4gdGhlIHJlc3VsdGluZyBEYXRlVGltZVxuICAgKlxuICAgKiBBZGRpbmcgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMsIG9yIG1pbGxpc2Vjb25kcyBpbmNyZWFzZXMgdGhlIHRpbWVzdGFtcCBieSB0aGUgcmlnaHQgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcy4gQWRkaW5nIGRheXMsIG1vbnRocywgb3IgeWVhcnMgc2hpZnRzIHRoZSBjYWxlbmRhciwgYWNjb3VudGluZyBmb3IgRFNUcyBhbmQgbGVhcCB5ZWFycyBhbG9uZyB0aGUgd2F5LiBUaHVzLCBgZHQucGx1cyh7IGhvdXJzOiAyNCB9KWAgbWF5IHJlc3VsdCBpbiBhIGRpZmZlcmVudCB0aW1lIHRoYW4gYGR0LnBsdXMoeyBkYXlzOiAxIH0pYCBpZiB0aGVyZSdzIGEgRFNUIHNoaWZ0IGluIGJldHdlZW4uXG4gICAqIEBwYXJhbSB7RHVyYXRpb258T2JqZWN0fG51bWJlcn0gZHVyYXRpb24gLSBUaGUgYW1vdW50IHRvIGFkZC4gRWl0aGVyIGEgTHV4b24gRHVyYXRpb24sIGEgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcywgdGhlIG9iamVjdCBhcmd1bWVudCB0byBEdXJhdGlvbi5mcm9tT2JqZWN0KClcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkucGx1cygxMjMpIC8vfj4gaW4gMTIzIG1pbGxpc2Vjb25kc1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5wbHVzKHsgbWludXRlczogMTUgfSkgLy9+PiBpbiAxNSBtaW51dGVzXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnBsdXMoeyBkYXlzOiAxIH0pIC8vfj4gdGhpcyB0aW1lIHRvbW9ycm93XG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnBsdXMoeyBkYXlzOiAtMSB9KSAvL34+IHRoaXMgdGltZSB5ZXN0ZXJkYXlcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkucGx1cyh7IGhvdXJzOiAzLCBtaW51dGVzOiAxMyB9KSAvL34+IGluIDMgaHIsIDEzIG1pblxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5wbHVzKER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMywgbWludXRlczogMTMgfSkpIC8vfj4gaW4gMyBociwgMTMgbWluXG4gICAqIEByZXR1cm4ge0RhdGVUaW1lfVxuICAgKi9cbiAgcGx1cyhkdXJhdGlvbikge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpcztcbiAgICBjb25zdCBkdXIgPSBEdXJhdGlvbi5mcm9tRHVyYXRpb25MaWtlKGR1cmF0aW9uKTtcbiAgICByZXR1cm4gY2xvbmUodGhpcywgYWRqdXN0VGltZSh0aGlzLCBkdXIpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdWJ0cmFjdCBhIHBlcmlvZCBvZiB0aW1lIHRvIHRoaXMgRGF0ZVRpbWUgYW5kIHJldHVybiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lXG4gICAqIFNlZSB7QGxpbmsgRGF0ZVRpbWUjcGx1c31cbiAgICogQHBhcmFtIHtEdXJhdGlvbnxPYmplY3R8bnVtYmVyfSBkdXJhdGlvbiAtIFRoZSBhbW91bnQgdG8gc3VidHJhY3QuIEVpdGhlciBhIEx1eG9uIER1cmF0aW9uLCBhIG51bWJlciBvZiBtaWxsaXNlY29uZHMsIHRoZSBvYmplY3QgYXJndW1lbnQgdG8gRHVyYXRpb24uZnJvbU9iamVjdCgpXG4gICBAcmV0dXJuIHtEYXRlVGltZX1cbiAgICovXG4gIG1pbnVzKGR1cmF0aW9uKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzO1xuICAgIGNvbnN0IGR1ciA9IER1cmF0aW9uLmZyb21EdXJhdGlvbkxpa2UoZHVyYXRpb24pLm5lZ2F0ZSgpO1xuICAgIHJldHVybiBjbG9uZSh0aGlzLCBhZGp1c3RUaW1lKHRoaXMsIGR1cikpO1xuICB9XG5cbiAgLyoqXG4gICAqIFwiU2V0XCIgdGhpcyBEYXRlVGltZSB0byB0aGUgYmVnaW5uaW5nIG9mIGEgdW5pdCBvZiB0aW1lLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdW5pdCAtIFRoZSB1bml0IHRvIGdvIHRvIHRoZSBiZWdpbm5pbmcgb2YuIENhbiBiZSAneWVhcicsICdxdWFydGVyJywgJ21vbnRoJywgJ3dlZWsnLCAnZGF5JywgJ2hvdXInLCAnbWludXRlJywgJ3NlY29uZCcsIG9yICdtaWxsaXNlY29uZCcuXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDMsIDMpLnN0YXJ0T2YoJ21vbnRoJykudG9JU09EYXRlKCk7IC8vPT4gJzIwMTQtMDMtMDEnXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDMsIDMpLnN0YXJ0T2YoJ3llYXInKS50b0lTT0RhdGUoKTsgLy89PiAnMjAxNC0wMS0wMSdcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMywgMykuc3RhcnRPZignd2VlaycpLnRvSVNPRGF0ZSgpOyAvLz0+ICcyMDE0LTAzLTAzJywgd2Vla3MgYWx3YXlzIHN0YXJ0IG9uIE1vbmRheXNcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMywgMywgNSwgMzApLnN0YXJ0T2YoJ2RheScpLnRvSVNPVGltZSgpOyAvLz0+ICcwMDowMC4wMDAtMDU6MDAnXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDMsIDMsIDUsIDMwKS5zdGFydE9mKCdob3VyJykudG9JU09UaW1lKCk7IC8vPT4gJzA1OjAwOjAwLjAwMC0wNTowMCdcbiAgICogQHJldHVybiB7RGF0ZVRpbWV9XG4gICAqL1xuICBzdGFydE9mKHVuaXQpIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7XG4gICAgY29uc3QgbyA9IHt9LFxuICAgICAgbm9ybWFsaXplZFVuaXQgPSBEdXJhdGlvbi5ub3JtYWxpemVVbml0KHVuaXQpO1xuICAgIHN3aXRjaCAobm9ybWFsaXplZFVuaXQpIHtcbiAgICAgIGNhc2UgXCJ5ZWFyc1wiOlxuICAgICAgICBvLm1vbnRoID0gMTtcbiAgICAgIC8vIGZhbGxzIHRocm91Z2hcbiAgICAgIGNhc2UgXCJxdWFydGVyc1wiOlxuICAgICAgY2FzZSBcIm1vbnRoc1wiOlxuICAgICAgICBvLmRheSA9IDE7XG4gICAgICAvLyBmYWxscyB0aHJvdWdoXG4gICAgICBjYXNlIFwid2Vla3NcIjpcbiAgICAgIGNhc2UgXCJkYXlzXCI6XG4gICAgICAgIG8uaG91ciA9IDA7XG4gICAgICAvLyBmYWxscyB0aHJvdWdoXG4gICAgICBjYXNlIFwiaG91cnNcIjpcbiAgICAgICAgby5taW51dGUgPSAwO1xuICAgICAgLy8gZmFsbHMgdGhyb3VnaFxuICAgICAgY2FzZSBcIm1pbnV0ZXNcIjpcbiAgICAgICAgby5zZWNvbmQgPSAwO1xuICAgICAgLy8gZmFsbHMgdGhyb3VnaFxuICAgICAgY2FzZSBcInNlY29uZHNcIjpcbiAgICAgICAgby5taWxsaXNlY29uZCA9IDA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIm1pbGxpc2Vjb25kc1wiOlxuICAgICAgICBicmVhaztcbiAgICAgIC8vIG5vIGRlZmF1bHQsIGludmFsaWQgdW5pdHMgdGhyb3cgaW4gbm9ybWFsaXplVW5pdCgpXG4gICAgfVxuXG4gICAgaWYgKG5vcm1hbGl6ZWRVbml0ID09PSBcIndlZWtzXCIpIHtcbiAgICAgIG8ud2Vla2RheSA9IDE7XG4gICAgfVxuXG4gICAgaWYgKG5vcm1hbGl6ZWRVbml0ID09PSBcInF1YXJ0ZXJzXCIpIHtcbiAgICAgIGNvbnN0IHEgPSBNYXRoLmNlaWwodGhpcy5tb250aCAvIDMpO1xuICAgICAgby5tb250aCA9IChxIC0gMSkgKiAzICsgMTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zZXQobyk7XG4gIH1cblxuICAvKipcbiAgICogXCJTZXRcIiB0aGlzIERhdGVUaW1lIHRvIHRoZSBlbmQgKG1lYW5pbmcgdGhlIGxhc3QgbWlsbGlzZWNvbmQpIG9mIGEgdW5pdCBvZiB0aW1lXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB1bml0IC0gVGhlIHVuaXQgdG8gZ28gdG8gdGhlIGVuZCBvZi4gQ2FuIGJlICd5ZWFyJywgJ3F1YXJ0ZXInLCAnbW9udGgnLCAnd2VlaycsICdkYXknLCAnaG91cicsICdtaW51dGUnLCAnc2Vjb25kJywgb3IgJ21pbGxpc2Vjb25kJy5cbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMywgMykuZW5kT2YoJ21vbnRoJykudG9JU08oKTsgLy89PiAnMjAxNC0wMy0zMVQyMzo1OTo1OS45OTktMDU6MDAnXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDMsIDMpLmVuZE9mKCd5ZWFyJykudG9JU08oKTsgLy89PiAnMjAxNC0xMi0zMVQyMzo1OTo1OS45OTktMDU6MDAnXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDMsIDMpLmVuZE9mKCd3ZWVrJykudG9JU08oKTsgLy8gPT4gJzIwMTQtMDMtMDlUMjM6NTk6NTkuOTk5LTA1OjAwJywgd2Vla3Mgc3RhcnQgb24gTW9uZGF5c1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAzLCAzLCA1LCAzMCkuZW5kT2YoJ2RheScpLnRvSVNPKCk7IC8vPT4gJzIwMTQtMDMtMDNUMjM6NTk6NTkuOTk5LTA1OjAwJ1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAzLCAzLCA1LCAzMCkuZW5kT2YoJ2hvdXInKS50b0lTTygpOyAvLz0+ICcyMDE0LTAzLTAzVDA1OjU5OjU5Ljk5OS0wNTowMCdcbiAgICogQHJldHVybiB7RGF0ZVRpbWV9XG4gICAqL1xuICBlbmRPZih1bml0KSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZFxuICAgICAgPyB0aGlzLnBsdXMoeyBbdW5pdF06IDEgfSlcbiAgICAgICAgICAuc3RhcnRPZih1bml0KVxuICAgICAgICAgIC5taW51cygxKVxuICAgICAgOiB0aGlzO1xuICB9XG5cbiAgLy8gT1VUUFVUXG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZSBmb3JtYXR0ZWQgYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQgZm9ybWF0IHN0cmluZy5cbiAgICogKipZb3UgbWF5IG5vdCB3YW50IHRoaXMuKiogU2VlIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9yIGEgbW9yZSBmbGV4aWJsZSBmb3JtYXR0aW5nIHRvb2wuIEZvciBhIHRhYmxlIG9mIHRva2VucyBhbmQgdGhlaXIgaW50ZXJwcmV0YXRpb25zLCBzZWUgW2hlcmVdKGh0dHBzOi8vbW9tZW50LmdpdGh1Yi5pby9sdXhvbi8jL2Zvcm1hdHRpbmc/aWQ9dGFibGUtb2YtdG9rZW5zKS5cbiAgICogRGVmYXVsdHMgdG8gZW4tVVMgaWYgbm8gbG9jYWxlIGhhcyBiZWVuIHNwZWNpZmllZCwgcmVnYXJkbGVzcyBvZiB0aGUgc3lzdGVtJ3MgbG9jYWxlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZm10IC0gdGhlIGZvcm1hdCBzdHJpbmdcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRzIHRvIG92ZXJyaWRlIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgb24gdGhpcyBEYXRlVGltZVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0Zvcm1hdCgneXl5eSBMTEwgZGQnKSAvLz0+ICcyMDE3IEFwciAyMidcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkuc2V0TG9jYWxlKCdmcicpLnRvRm9ybWF0KCd5eXl5IExMTCBkZCcpIC8vPT4gJzIwMTcgYXZyLiAyMidcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9Gb3JtYXQoJ3l5eXkgTExMIGRkJywgeyBsb2NhbGU6IFwiZnJcIiB9KSAvLz0+ICcyMDE3IGF2ci4gMjInXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvRm9ybWF0KFwiSEggJ2hvdXJzIGFuZCcgbW0gJ21pbnV0ZXMnXCIpIC8vPT4gJzIwIGhvdXJzIGFuZCA1NSBtaW51dGVzJ1xuICAgKiBAcmV0dXJuIHtzdHJpbmd9XG4gICAqL1xuICB0b0Zvcm1hdChmbXQsIG9wdHMgPSB7fSkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWRcbiAgICAgID8gRm9ybWF0dGVyLmNyZWF0ZSh0aGlzLmxvYy5yZWRlZmF1bHRUb0VOKG9wdHMpKS5mb3JtYXREYXRlVGltZUZyb21TdHJpbmcodGhpcywgZm10KVxuICAgICAgOiBJTlZBTElEO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBsb2NhbGl6ZWQgc3RyaW5nIHJlcHJlc2VudGluZyB0aGlzIGRhdGUuIEFjY2VwdHMgdGhlIHNhbWUgb3B0aW9ucyBhcyB0aGUgSW50bC5EYXRlVGltZUZvcm1hdCBjb25zdHJ1Y3RvciBhbmQgYW55IHByZXNldHMgZGVmaW5lZCBieSBMdXhvbiwgc3VjaCBhcyBgRGF0ZVRpbWUuREFURV9GVUxMYCBvciBgRGF0ZVRpbWUuVElNRV9TSU1QTEVgLlxuICAgKiBUaGUgZXhhY3QgYmVoYXZpb3Igb2YgdGhpcyBtZXRob2QgaXMgYnJvd3Nlci1zcGVjaWZpYywgYnV0IGluIGdlbmVyYWwgaXQgd2lsbCByZXR1cm4gYW4gYXBwcm9wcmlhdGUgcmVwcmVzZW50YXRpb25cbiAgICogb2YgdGhlIERhdGVUaW1lIGluIHRoZSBhc3NpZ25lZCBsb2NhbGUuXG4gICAqIERlZmF1bHRzIHRvIHRoZSBzeXN0ZW0ncyBsb2NhbGUgaWYgbm8gbG9jYWxlIGhhcyBiZWVuIHNwZWNpZmllZFxuICAgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0RhdGVUaW1lRm9ybWF0XG4gICAqIEBwYXJhbSBmb3JtYXRPcHRzIHtPYmplY3R9IC0gSW50bC5EYXRlVGltZUZvcm1hdCBjb25zdHJ1Y3RvciBvcHRpb25zIGFuZCBjb25maWd1cmF0aW9uIG9wdGlvbnNcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRzIHRvIG92ZXJyaWRlIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgb24gdGhpcyBEYXRlVGltZVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0xvY2FsZVN0cmluZygpOyAvLz0+IDQvMjAvMjAxN1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5zZXRMb2NhbGUoJ2VuLWdiJykudG9Mb2NhbGVTdHJpbmcoKTsgLy89PiAnMjAvMDQvMjAxNydcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9Mb2NhbGVTdHJpbmcoeyBsb2NhbGU6ICdlbi1nYicgfSk7IC8vPT4gJzIwLzA0LzIwMTcnXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvTG9jYWxlU3RyaW5nKERhdGVUaW1lLkRBVEVfRlVMTCk7IC8vPT4gJ0FwcmlsIDIwLCAyMDE3J1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0xvY2FsZVN0cmluZyhEYXRlVGltZS5USU1FX1NJTVBMRSk7IC8vPT4gJzExOjMyIEFNJ1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0xvY2FsZVN0cmluZyhEYXRlVGltZS5EQVRFVElNRV9TSE9SVCk7IC8vPT4gJzQvMjAvMjAxNywgMTE6MzIgQU0nXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvTG9jYWxlU3RyaW5nKHsgd2Vla2RheTogJ2xvbmcnLCBtb250aDogJ2xvbmcnLCBkYXk6ICcyLWRpZ2l0JyB9KTsgLy89PiAnVGh1cnNkYXksIEFwcmlsIDIwJ1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0xvY2FsZVN0cmluZyh7IHdlZWtkYXk6ICdzaG9ydCcsIG1vbnRoOiAnc2hvcnQnLCBkYXk6ICcyLWRpZ2l0JywgaG91cjogJzItZGlnaXQnLCBtaW51dGU6ICcyLWRpZ2l0JyB9KTsgLy89PiAnVGh1LCBBcHIgMjAsIDExOjI3IEFNJ1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0xvY2FsZVN0cmluZyh7IGhvdXI6ICcyLWRpZ2l0JywgbWludXRlOiAnMi1kaWdpdCcsIGhvdXJDeWNsZTogJ2gyMycgfSk7IC8vPT4gJzExOjMyJ1xuICAgKiBAcmV0dXJuIHtzdHJpbmd9XG4gICAqL1xuICB0b0xvY2FsZVN0cmluZyhmb3JtYXRPcHRzID0gRm9ybWF0cy5EQVRFX1NIT1JULCBvcHRzID0ge30pIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkXG4gICAgICA/IEZvcm1hdHRlci5jcmVhdGUodGhpcy5sb2MuY2xvbmUob3B0cyksIGZvcm1hdE9wdHMpLmZvcm1hdERhdGVUaW1lKHRoaXMpXG4gICAgICA6IElOVkFMSUQ7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBhcnJheSBvZiBmb3JtYXQgXCJwYXJ0c1wiLCBtZWFuaW5nIGluZGl2aWR1YWwgdG9rZW5zIGFsb25nIHdpdGggbWV0YWRhdGEuIFRoaXMgaXMgYWxsb3dzIGNhbGxlcnMgdG8gcG9zdC1wcm9jZXNzIGluZGl2aWR1YWwgc2VjdGlvbnMgb2YgdGhlIGZvcm1hdHRlZCBvdXRwdXQuXG4gICAqIERlZmF1bHRzIHRvIHRoZSBzeXN0ZW0ncyBsb2NhbGUgaWYgbm8gbG9jYWxlIGhhcyBiZWVuIHNwZWNpZmllZFxuICAgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0RhdGVUaW1lRm9ybWF0L2Zvcm1hdFRvUGFydHNcbiAgICogQHBhcmFtIG9wdHMge09iamVjdH0gLSBJbnRsLkRhdGVUaW1lRm9ybWF0IGNvbnN0cnVjdG9yIG9wdGlvbnMsIHNhbWUgYXMgYHRvTG9jYWxlU3RyaW5nYC5cbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9Mb2NhbGVQYXJ0cygpOyAvLz0+IFtcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vPT4gICB7IHR5cGU6ICdkYXknLCB2YWx1ZTogJzI1JyB9LFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy89PiAgIHsgdHlwZTogJ2xpdGVyYWwnLCB2YWx1ZTogJy8nIH0sXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLz0+ICAgeyB0eXBlOiAnbW9udGgnLCB2YWx1ZTogJzA1JyB9LFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy89PiAgIHsgdHlwZTogJ2xpdGVyYWwnLCB2YWx1ZTogJy8nIH0sXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLz0+ICAgeyB0eXBlOiAneWVhcicsIHZhbHVlOiAnMTk4MicgfVxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy89PiBdXG4gICAqL1xuICB0b0xvY2FsZVBhcnRzKG9wdHMgPSB7fSkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWRcbiAgICAgID8gRm9ybWF0dGVyLmNyZWF0ZSh0aGlzLmxvYy5jbG9uZShvcHRzKSwgb3B0cykuZm9ybWF0RGF0ZVRpbWVQYXJ0cyh0aGlzKVxuICAgICAgOiBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIElTTyA4NjAxLWNvbXBsaWFudCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZVxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnNcbiAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zdXBwcmVzc01pbGxpc2Vjb25kcz1mYWxzZV0gLSBleGNsdWRlIG1pbGxpc2Vjb25kcyBmcm9tIHRoZSBmb3JtYXQgaWYgdGhleSdyZSAwXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuc3VwcHJlc3NTZWNvbmRzPWZhbHNlXSAtIGV4Y2x1ZGUgc2Vjb25kcyBmcm9tIHRoZSBmb3JtYXQgaWYgdGhleSdyZSAwXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuaW5jbHVkZU9mZnNldD10cnVlXSAtIGluY2x1ZGUgdGhlIG9mZnNldCwgc3VjaCBhcyAnWicgb3IgJy0wNDowMCdcbiAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5leHRlbmRlZFpvbmU9dHJ1ZV0gLSBhZGQgdGhlIHRpbWUgem9uZSBmb3JtYXQgZXh0ZW5zaW9uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5mb3JtYXQ9J2V4dGVuZGVkJ10gLSBjaG9vc2UgYmV0d2VlbiB0aGUgYmFzaWMgYW5kIGV4dGVuZGVkIGZvcm1hdFxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMTk4MywgNSwgMjUpLnRvSVNPKCkgLy89PiAnMTk4Mi0wNS0yNVQwMDowMDowMC4wMDBaJ1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0lTTygpIC8vPT4gJzIwMTctMDQtMjJUMjA6NDc6MDUuMzM1LTA0OjAwJ1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0lTTyh7IGluY2x1ZGVPZmZzZXQ6IGZhbHNlIH0pIC8vPT4gJzIwMTctMDQtMjJUMjA6NDc6MDUuMzM1J1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0lTTyh7IGZvcm1hdDogJ2Jhc2ljJyB9KSAvLz0+ICcyMDE3MDQyMlQyMDQ3MDUuMzM1LTA0MDAnXG4gICAqIEByZXR1cm4ge3N0cmluZ31cbiAgICovXG4gIHRvSVNPKHtcbiAgICBmb3JtYXQgPSBcImV4dGVuZGVkXCIsXG4gICAgc3VwcHJlc3NTZWNvbmRzID0gZmFsc2UsXG4gICAgc3VwcHJlc3NNaWxsaXNlY29uZHMgPSBmYWxzZSxcbiAgICBpbmNsdWRlT2Zmc2V0ID0gdHJ1ZSxcbiAgICBleHRlbmRlZFpvbmUgPSBmYWxzZSxcbiAgfSA9IHt9KSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGV4dCA9IGZvcm1hdCA9PT0gXCJleHRlbmRlZFwiO1xuXG4gICAgbGV0IGMgPSB0b0lTT0RhdGUodGhpcywgZXh0KTtcbiAgICBjICs9IFwiVFwiO1xuICAgIGMgKz0gdG9JU09UaW1lKHRoaXMsIGV4dCwgc3VwcHJlc3NTZWNvbmRzLCBzdXBwcmVzc01pbGxpc2Vjb25kcywgaW5jbHVkZU9mZnNldCwgZXh0ZW5kZWRab25lKTtcbiAgICByZXR1cm4gYztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIElTTyA4NjAxLWNvbXBsaWFudCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZSdzIGRhdGUgY29tcG9uZW50XG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9uc1xuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuZm9ybWF0PSdleHRlbmRlZCddIC0gY2hvb3NlIGJldHdlZW4gdGhlIGJhc2ljIGFuZCBleHRlbmRlZCBmb3JtYXRcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDE5ODIsIDUsIDI1KS50b0lTT0RhdGUoKSAvLz0+ICcxOTgyLTA1LTI1J1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMTk4MiwgNSwgMjUpLnRvSVNPRGF0ZSh7IGZvcm1hdDogJ2Jhc2ljJyB9KSAvLz0+ICcxOTgyMDUyNSdcbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgdG9JU09EYXRlKHsgZm9ybWF0ID0gXCJleHRlbmRlZFwiIH0gPSB7fSkge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gdG9JU09EYXRlKHRoaXMsIGZvcm1hdCA9PT0gXCJleHRlbmRlZFwiKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIElTTyA4NjAxLWNvbXBsaWFudCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZSdzIHdlZWsgZGF0ZVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMTk4MiwgNSwgMjUpLnRvSVNPV2Vla0RhdGUoKSAvLz0+ICcxOTgyLVcyMS0yJ1xuICAgKiBAcmV0dXJuIHtzdHJpbmd9XG4gICAqL1xuICB0b0lTT1dlZWtEYXRlKCkge1xuICAgIHJldHVybiB0b1RlY2hGb3JtYXQodGhpcywgXCJra2trLSdXJ1dXLWNcIik7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBJU08gODYwMS1jb21wbGlhbnQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRGF0ZVRpbWUncyB0aW1lIGNvbXBvbmVudFxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnNcbiAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zdXBwcmVzc01pbGxpc2Vjb25kcz1mYWxzZV0gLSBleGNsdWRlIG1pbGxpc2Vjb25kcyBmcm9tIHRoZSBmb3JtYXQgaWYgdGhleSdyZSAwXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuc3VwcHJlc3NTZWNvbmRzPWZhbHNlXSAtIGV4Y2x1ZGUgc2Vjb25kcyBmcm9tIHRoZSBmb3JtYXQgaWYgdGhleSdyZSAwXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuaW5jbHVkZU9mZnNldD10cnVlXSAtIGluY2x1ZGUgdGhlIG9mZnNldCwgc3VjaCBhcyAnWicgb3IgJy0wNDowMCdcbiAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5leHRlbmRlZFpvbmU9dHJ1ZV0gLSBhZGQgdGhlIHRpbWUgem9uZSBmb3JtYXQgZXh0ZW5zaW9uXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuaW5jbHVkZVByZWZpeD1mYWxzZV0gLSBpbmNsdWRlIHRoZSBgVGAgcHJlZml4XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5mb3JtYXQ9J2V4dGVuZGVkJ10gLSBjaG9vc2UgYmV0d2VlbiB0aGUgYmFzaWMgYW5kIGV4dGVuZGVkIGZvcm1hdFxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoKS5zZXQoeyBob3VyOiA3LCBtaW51dGU6IDM0IH0pLnRvSVNPVGltZSgpIC8vPT4gJzA3OjM0OjE5LjM2MVonXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygpLnNldCh7IGhvdXI6IDcsIG1pbnV0ZTogMzQsIHNlY29uZHM6IDAsIG1pbGxpc2Vjb25kczogMCB9KS50b0lTT1RpbWUoeyBzdXBwcmVzc1NlY29uZHM6IHRydWUgfSkgLy89PiAnMDc6MzRaJ1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoKS5zZXQoeyBob3VyOiA3LCBtaW51dGU6IDM0IH0pLnRvSVNPVGltZSh7IGZvcm1hdDogJ2Jhc2ljJyB9KSAvLz0+ICcwNzM0MTkuMzYxWidcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKCkuc2V0KHsgaG91cjogNywgbWludXRlOiAzNCB9KS50b0lTT1RpbWUoeyBpbmNsdWRlUHJlZml4OiB0cnVlIH0pIC8vPT4gJ1QwNzozNDoxOS4zNjFaJ1xuICAgKiBAcmV0dXJuIHtzdHJpbmd9XG4gICAqL1xuICB0b0lTT1RpbWUoe1xuICAgIHN1cHByZXNzTWlsbGlzZWNvbmRzID0gZmFsc2UsXG4gICAgc3VwcHJlc3NTZWNvbmRzID0gZmFsc2UsXG4gICAgaW5jbHVkZU9mZnNldCA9IHRydWUsXG4gICAgaW5jbHVkZVByZWZpeCA9IGZhbHNlLFxuICAgIGV4dGVuZGVkWm9uZSA9IGZhbHNlLFxuICAgIGZvcm1hdCA9IFwiZXh0ZW5kZWRcIixcbiAgfSA9IHt9KSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGxldCBjID0gaW5jbHVkZVByZWZpeCA/IFwiVFwiIDogXCJcIjtcbiAgICByZXR1cm4gKFxuICAgICAgYyArXG4gICAgICB0b0lTT1RpbWUoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIGZvcm1hdCA9PT0gXCJleHRlbmRlZFwiLFxuICAgICAgICBzdXBwcmVzc1NlY29uZHMsXG4gICAgICAgIHN1cHByZXNzTWlsbGlzZWNvbmRzLFxuICAgICAgICBpbmNsdWRlT2Zmc2V0LFxuICAgICAgICBleHRlbmRlZFpvbmVcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gUkZDIDI4MjItY29tcGF0aWJsZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMjAxNCwgNywgMTMpLnRvUkZDMjgyMigpIC8vPT4gJ1N1biwgMTMgSnVsIDIwMTQgMDA6MDA6MDAgKzAwMDAnXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDcsIDEzKS50b1JGQzI4MjIoKSAvLz0+ICdTdW4sIDEzIEp1bCAyMDE0IDAwOjAwOjAwIC0wNDAwJ1xuICAgKiBAcmV0dXJuIHtzdHJpbmd9XG4gICAqL1xuICB0b1JGQzI4MjIoKSB7XG4gICAgcmV0dXJuIHRvVGVjaEZvcm1hdCh0aGlzLCBcIkVFRSwgZGQgTExMIHl5eXkgSEg6bW06c3MgWlpaXCIsIGZhbHNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRGF0ZVRpbWUgYXBwcm9wcmlhdGUgZm9yIHVzZSBpbiBIVFRQIGhlYWRlcnMuIFRoZSBvdXRwdXQgaXMgYWx3YXlzIGV4cHJlc3NlZCBpbiBHTVQuXG4gICAqIFNwZWNpZmljYWxseSwgdGhlIHN0cmluZyBjb25mb3JtcyB0byBSRkMgMTEyMy5cbiAgICogQHNlZSBodHRwczovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWMzLmh0bWwjc2VjMy4zLjFcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTQsIDcsIDEzKS50b0hUVFAoKSAvLz0+ICdTdW4sIDEzIEp1bCAyMDE0IDAwOjAwOjAwIEdNVCdcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTQsIDcsIDEzLCAxOSkudG9IVFRQKCkgLy89PiAnU3VuLCAxMyBKdWwgMjAxNCAxOTowMDowMCBHTVQnXG4gICAqIEByZXR1cm4ge3N0cmluZ31cbiAgICovXG4gIHRvSFRUUCgpIHtcbiAgICByZXR1cm4gdG9UZWNoRm9ybWF0KHRoaXMudG9VVEMoKSwgXCJFRUUsIGRkIExMTCB5eXl5IEhIOm1tOnNzICdHTVQnXCIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZSBhcHByb3ByaWF0ZSBmb3IgdXNlIGluIFNRTCBEYXRlXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygyMDE0LCA3LCAxMykudG9TUUxEYXRlKCkgLy89PiAnMjAxNC0wNy0xMydcbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgdG9TUUxEYXRlKCkge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIHRvSVNPRGF0ZSh0aGlzLCB0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRGF0ZVRpbWUgYXBwcm9wcmlhdGUgZm9yIHVzZSBpbiBTUUwgVGltZVxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnNcbiAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5pbmNsdWRlWm9uZT1mYWxzZV0gLSBpbmNsdWRlIHRoZSB6b25lLCBzdWNoIGFzICdBbWVyaWNhL05ld19Zb3JrJy4gT3ZlcnJpZGVzIGluY2x1ZGVPZmZzZXQuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuaW5jbHVkZU9mZnNldD10cnVlXSAtIGluY2x1ZGUgdGhlIG9mZnNldCwgc3VjaCBhcyAnWicgb3IgJy0wNDowMCdcbiAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5pbmNsdWRlT2Zmc2V0U3BhY2U9dHJ1ZV0gLSBpbmNsdWRlIHRoZSBzcGFjZSBiZXR3ZWVuIHRoZSB0aW1lIGFuZCB0aGUgb2Zmc2V0LCBzdWNoIGFzICcwNToxNToxNi4zNDUgLTA0OjAwJ1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoKS50b1NRTCgpIC8vPT4gJzA1OjE1OjE2LjM0NSdcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9TUUwoKSAvLz0+ICcwNToxNToxNi4zNDUgLTA0OjAwJ1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b1NRTCh7IGluY2x1ZGVPZmZzZXQ6IGZhbHNlIH0pIC8vPT4gJzA1OjE1OjE2LjM0NSdcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9TUUwoeyBpbmNsdWRlWm9uZTogZmFsc2UgfSkgLy89PiAnMDU6MTU6MTYuMzQ1IEFtZXJpY2EvTmV3X1lvcmsnXG4gICAqIEByZXR1cm4ge3N0cmluZ31cbiAgICovXG4gIHRvU1FMVGltZSh7IGluY2x1ZGVPZmZzZXQgPSB0cnVlLCBpbmNsdWRlWm9uZSA9IGZhbHNlLCBpbmNsdWRlT2Zmc2V0U3BhY2UgPSB0cnVlIH0gPSB7fSkge1xuICAgIGxldCBmbXQgPSBcIkhIOm1tOnNzLlNTU1wiO1xuXG4gICAgaWYgKGluY2x1ZGVab25lIHx8IGluY2x1ZGVPZmZzZXQpIHtcbiAgICAgIGlmIChpbmNsdWRlT2Zmc2V0U3BhY2UpIHtcbiAgICAgICAgZm10ICs9IFwiIFwiO1xuICAgICAgfVxuICAgICAgaWYgKGluY2x1ZGVab25lKSB7XG4gICAgICAgIGZtdCArPSBcInpcIjtcbiAgICAgIH0gZWxzZSBpZiAoaW5jbHVkZU9mZnNldCkge1xuICAgICAgICBmbXQgKz0gXCJaWlwiO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0b1RlY2hGb3JtYXQodGhpcywgZm10LCB0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRGF0ZVRpbWUgYXBwcm9wcmlhdGUgZm9yIHVzZSBpbiBTUUwgRGF0ZVRpbWVcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuaW5jbHVkZVpvbmU9ZmFsc2VdIC0gaW5jbHVkZSB0aGUgem9uZSwgc3VjaCBhcyAnQW1lcmljYS9OZXdfWW9yaycuIE92ZXJyaWRlcyBpbmNsdWRlT2Zmc2V0LlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmluY2x1ZGVPZmZzZXQ9dHJ1ZV0gLSBpbmNsdWRlIHRoZSBvZmZzZXQsIHN1Y2ggYXMgJ1onIG9yICctMDQ6MDAnXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuaW5jbHVkZU9mZnNldFNwYWNlPXRydWVdIC0gaW5jbHVkZSB0aGUgc3BhY2UgYmV0d2VlbiB0aGUgdGltZSBhbmQgdGhlIG9mZnNldCwgc3VjaCBhcyAnMDU6MTU6MTYuMzQ1IC0wNDowMCdcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTQsIDcsIDEzKS50b1NRTCgpIC8vPT4gJzIwMTQtMDctMTMgMDA6MDA6MDAuMDAwIFonXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDcsIDEzKS50b1NRTCgpIC8vPT4gJzIwMTQtMDctMTMgMDA6MDA6MDAuMDAwIC0wNDowMCdcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgNywgMTMpLnRvU1FMKHsgaW5jbHVkZU9mZnNldDogZmFsc2UgfSkgLy89PiAnMjAxNC0wNy0xMyAwMDowMDowMC4wMDAnXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDcsIDEzKS50b1NRTCh7IGluY2x1ZGVab25lOiB0cnVlIH0pIC8vPT4gJzIwMTQtMDctMTMgMDA6MDA6MDAuMDAwIEFtZXJpY2EvTmV3X1lvcmsnXG4gICAqIEByZXR1cm4ge3N0cmluZ31cbiAgICovXG4gIHRvU1FMKG9wdHMgPSB7fSkge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gYCR7dGhpcy50b1NRTERhdGUoKX0gJHt0aGlzLnRvU1FMVGltZShvcHRzKX1gO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZSBhcHByb3ByaWF0ZSBmb3IgZGVidWdnaW5nXG4gICAqIEByZXR1cm4ge3N0cmluZ31cbiAgICovXG4gIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnRvSVNPKCkgOiBJTlZBTElEO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGVwb2NoIG1pbGxpc2Vjb25kcyBvZiB0aGlzIERhdGVUaW1lLiBBbGlhcyBvZiB7QGxpbmsgRGF0ZVRpbWUjdG9NaWxsaXN9XG4gICAqIEByZXR1cm4ge251bWJlcn1cbiAgICovXG4gIHZhbHVlT2YoKSB7XG4gICAgcmV0dXJuIHRoaXMudG9NaWxsaXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBlcG9jaCBtaWxsaXNlY29uZHMgb2YgdGhpcyBEYXRlVGltZS5cbiAgICogQHJldHVybiB7bnVtYmVyfVxuICAgKi9cbiAgdG9NaWxsaXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudHMgOiBOYU47XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgZXBvY2ggc2Vjb25kcyBvZiB0aGlzIERhdGVUaW1lLlxuICAgKiBAcmV0dXJuIHtudW1iZXJ9XG4gICAqL1xuICB0b1NlY29uZHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudHMgLyAxMDAwIDogTmFOO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGVwb2NoIHNlY29uZHMgKGFzIGEgd2hvbGUgbnVtYmVyKSBvZiB0aGlzIERhdGVUaW1lLlxuICAgKiBAcmV0dXJuIHtudW1iZXJ9XG4gICAqL1xuICB0b1VuaXhJbnRlZ2VyKCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBNYXRoLmZsb29yKHRoaXMudHMgLyAxMDAwKSA6IE5hTjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIElTTyA4NjAxIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRGF0ZVRpbWUgYXBwcm9wcmlhdGUgZm9yIHVzZSBpbiBKU09OLlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9XG4gICAqL1xuICB0b0pTT04oKSB7XG4gICAgcmV0dXJuIHRoaXMudG9JU08oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgQlNPTiBzZXJpYWxpemFibGUgZXF1aXZhbGVudCB0byB0aGlzIERhdGVUaW1lLlxuICAgKiBAcmV0dXJuIHtEYXRlfVxuICAgKi9cbiAgdG9CU09OKCkge1xuICAgIHJldHVybiB0aGlzLnRvSlNEYXRlKCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIEphdmFTY3JpcHQgb2JqZWN0IHdpdGggdGhpcyBEYXRlVGltZSdzIHllYXIsIG1vbnRoLCBkYXksIGFuZCBzbyBvbi5cbiAgICogQHBhcmFtIG9wdHMgLSBvcHRpb25zIGZvciBnZW5lcmF0aW5nIHRoZSBvYmplY3RcbiAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5pbmNsdWRlQ29uZmlnPWZhbHNlXSAtIGluY2x1ZGUgY29uZmlndXJhdGlvbiBhdHRyaWJ1dGVzIGluIHRoZSBvdXRwdXRcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9PYmplY3QoKSAvLz0+IHsgeWVhcjogMjAxNywgbW9udGg6IDQsIGRheTogMjIsIGhvdXI6IDIwLCBtaW51dGU6IDQ5LCBzZWNvbmQ6IDQyLCBtaWxsaXNlY29uZDogMjY4IH1cbiAgICogQHJldHVybiB7T2JqZWN0fVxuICAgKi9cbiAgdG9PYmplY3Qob3B0cyA9IHt9KSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB7fTtcblxuICAgIGNvbnN0IGJhc2UgPSB7IC4uLnRoaXMuYyB9O1xuXG4gICAgaWYgKG9wdHMuaW5jbHVkZUNvbmZpZykge1xuICAgICAgYmFzZS5vdXRwdXRDYWxlbmRhciA9IHRoaXMub3V0cHV0Q2FsZW5kYXI7XG4gICAgICBiYXNlLm51bWJlcmluZ1N5c3RlbSA9IHRoaXMubG9jLm51bWJlcmluZ1N5c3RlbTtcbiAgICAgIGJhc2UubG9jYWxlID0gdGhpcy5sb2MubG9jYWxlO1xuICAgIH1cbiAgICByZXR1cm4gYmFzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgSmF2YVNjcmlwdCBEYXRlIGVxdWl2YWxlbnQgdG8gdGhpcyBEYXRlVGltZS5cbiAgICogQHJldHVybiB7RGF0ZX1cbiAgICovXG4gIHRvSlNEYXRlKCkge1xuICAgIHJldHVybiBuZXcgRGF0ZSh0aGlzLmlzVmFsaWQgPyB0aGlzLnRzIDogTmFOKTtcbiAgfVxuXG4gIC8vIENPTVBBUkVcblxuICAvKipcbiAgICogUmV0dXJuIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdHdvIERhdGVUaW1lcyBhcyBhIER1cmF0aW9uLlxuICAgKiBAcGFyYW0ge0RhdGVUaW1lfSBvdGhlckRhdGVUaW1lIC0gdGhlIERhdGVUaW1lIHRvIGNvbXBhcmUgdGhpcyBvbmUgdG9cbiAgICogQHBhcmFtIHtzdHJpbmd8c3RyaW5nW119IFt1bml0PVsnbWlsbGlzZWNvbmRzJ11dIC0gdGhlIHVuaXQgb3IgYXJyYXkgb2YgdW5pdHMgKHN1Y2ggYXMgJ2hvdXJzJyBvciAnZGF5cycpIHRvIGluY2x1ZGUgaW4gdGhlIGR1cmF0aW9uLlxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgdGhhdCBhZmZlY3QgdGhlIGNyZWF0aW9uIG9mIHRoZSBEdXJhdGlvblxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuY29udmVyc2lvbkFjY3VyYWN5PSdjYXN1YWwnXSAtIHRoZSBjb252ZXJzaW9uIHN5c3RlbSB0byB1c2VcbiAgICogQGV4YW1wbGVcbiAgICogdmFyIGkxID0gRGF0ZVRpbWUuZnJvbUlTTygnMTk4Mi0wNS0yNVQwOTo0NScpLFxuICAgKiAgICAgaTIgPSBEYXRlVGltZS5mcm9tSVNPKCcxOTgzLTEwLTE0VDEwOjMwJyk7XG4gICAqIGkyLmRpZmYoaTEpLnRvT2JqZWN0KCkgLy89PiB7IG1pbGxpc2Vjb25kczogNDM4MDc1MDAwMDAgfVxuICAgKiBpMi5kaWZmKGkxLCAnaG91cnMnKS50b09iamVjdCgpIC8vPT4geyBob3VyczogMTIxNjguNzUgfVxuICAgKiBpMi5kaWZmKGkxLCBbJ21vbnRocycsICdkYXlzJ10pLnRvT2JqZWN0KCkgLy89PiB7IG1vbnRoczogMTYsIGRheXM6IDE5LjAzMTI1IH1cbiAgICogaTIuZGlmZihpMSwgWydtb250aHMnLCAnZGF5cycsICdob3VycyddKS50b09iamVjdCgpIC8vPT4geyBtb250aHM6IDE2LCBkYXlzOiAxOSwgaG91cnM6IDAuNzUgfVxuICAgKiBAcmV0dXJuIHtEdXJhdGlvbn1cbiAgICovXG4gIGRpZmYob3RoZXJEYXRlVGltZSwgdW5pdCA9IFwibWlsbGlzZWNvbmRzXCIsIG9wdHMgPSB7fSkge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkIHx8ICFvdGhlckRhdGVUaW1lLmlzVmFsaWQpIHtcbiAgICAgIHJldHVybiBEdXJhdGlvbi5pbnZhbGlkKFwiY3JlYXRlZCBieSBkaWZmaW5nIGFuIGludmFsaWQgRGF0ZVRpbWVcIik7XG4gICAgfVxuXG4gICAgY29uc3QgZHVyT3B0cyA9IHsgbG9jYWxlOiB0aGlzLmxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtOiB0aGlzLm51bWJlcmluZ1N5c3RlbSwgLi4ub3B0cyB9O1xuXG4gICAgY29uc3QgdW5pdHMgPSBtYXliZUFycmF5KHVuaXQpLm1hcChEdXJhdGlvbi5ub3JtYWxpemVVbml0KSxcbiAgICAgIG90aGVySXNMYXRlciA9IG90aGVyRGF0ZVRpbWUudmFsdWVPZigpID4gdGhpcy52YWx1ZU9mKCksXG4gICAgICBlYXJsaWVyID0gb3RoZXJJc0xhdGVyID8gdGhpcyA6IG90aGVyRGF0ZVRpbWUsXG4gICAgICBsYXRlciA9IG90aGVySXNMYXRlciA/IG90aGVyRGF0ZVRpbWUgOiB0aGlzLFxuICAgICAgZGlmZmVkID0gZGlmZihlYXJsaWVyLCBsYXRlciwgdW5pdHMsIGR1ck9wdHMpO1xuXG4gICAgcmV0dXJuIG90aGVySXNMYXRlciA/IGRpZmZlZC5uZWdhdGUoKSA6IGRpZmZlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGlzIERhdGVUaW1lIGFuZCByaWdodCBub3cuXG4gICAqIFNlZSB7QGxpbmsgRGF0ZVRpbWUjZGlmZn1cbiAgICogQHBhcmFtIHtzdHJpbmd8c3RyaW5nW119IFt1bml0PVsnbWlsbGlzZWNvbmRzJ11dIC0gdGhlIHVuaXQgb3IgdW5pdHMgdW5pdHMgKHN1Y2ggYXMgJ2hvdXJzJyBvciAnZGF5cycpIHRvIGluY2x1ZGUgaW4gdGhlIGR1cmF0aW9uXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucyB0aGF0IGFmZmVjdCB0aGUgY3JlYXRpb24gb2YgdGhlIER1cmF0aW9uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5jb252ZXJzaW9uQWNjdXJhY3k9J2Nhc3VhbCddIC0gdGhlIGNvbnZlcnNpb24gc3lzdGVtIHRvIHVzZVxuICAgKiBAcmV0dXJuIHtEdXJhdGlvbn1cbiAgICovXG4gIGRpZmZOb3codW5pdCA9IFwibWlsbGlzZWNvbmRzXCIsIG9wdHMgPSB7fSkge1xuICAgIHJldHVybiB0aGlzLmRpZmYoRGF0ZVRpbWUubm93KCksIHVuaXQsIG9wdHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhbiBJbnRlcnZhbCBzcGFubmluZyBiZXR3ZWVuIHRoaXMgRGF0ZVRpbWUgYW5kIGFub3RoZXIgRGF0ZVRpbWVcbiAgICogQHBhcmFtIHtEYXRlVGltZX0gb3RoZXJEYXRlVGltZSAtIHRoZSBvdGhlciBlbmQgcG9pbnQgb2YgdGhlIEludGVydmFsXG4gICAqIEByZXR1cm4ge0ludGVydmFsfVxuICAgKi9cbiAgdW50aWwob3RoZXJEYXRlVGltZSkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKHRoaXMsIG90aGVyRGF0ZVRpbWUpIDogdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gd2hldGhlciB0aGlzIERhdGVUaW1lIGlzIGluIHRoZSBzYW1lIHVuaXQgb2YgdGltZSBhcyBhbm90aGVyIERhdGVUaW1lLlxuICAgKiBIaWdoZXItb3JkZXIgdW5pdHMgbXVzdCBhbHNvIGJlIGlkZW50aWNhbCBmb3IgdGhpcyBmdW5jdGlvbiB0byByZXR1cm4gYHRydWVgLlxuICAgKiBOb3RlIHRoYXQgdGltZSB6b25lcyBhcmUgKippZ25vcmVkKiogaW4gdGhpcyBjb21wYXJpc29uLCB3aGljaCBjb21wYXJlcyB0aGUgKipsb2NhbCoqIGNhbGVuZGFyIHRpbWUuIFVzZSB7QGxpbmsgRGF0ZVRpbWUjc2V0Wm9uZX0gdG8gY29udmVydCBvbmUgb2YgdGhlIGRhdGVzIGlmIG5lZWRlZC5cbiAgICogQHBhcmFtIHtEYXRlVGltZX0gb3RoZXJEYXRlVGltZSAtIHRoZSBvdGhlciBEYXRlVGltZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gdW5pdCAtIHRoZSB1bml0IG9mIHRpbWUgdG8gY2hlY2sgc2FtZW5lc3Mgb25cbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkuaGFzU2FtZShvdGhlckRULCAnZGF5Jyk7IC8vfj4gdHJ1ZSBpZiBvdGhlckRUIGlzIGluIHRoZSBzYW1lIGN1cnJlbnQgY2FsZW5kYXIgZGF5XG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqL1xuICBoYXNTYW1lKG90aGVyRGF0ZVRpbWUsIHVuaXQpIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgY29uc3QgaW5wdXRNcyA9IG90aGVyRGF0ZVRpbWUudmFsdWVPZigpO1xuICAgIGNvbnN0IGFkanVzdGVkVG9ab25lID0gdGhpcy5zZXRab25lKG90aGVyRGF0ZVRpbWUuem9uZSwgeyBrZWVwTG9jYWxUaW1lOiB0cnVlIH0pO1xuICAgIHJldHVybiBhZGp1c3RlZFRvWm9uZS5zdGFydE9mKHVuaXQpIDw9IGlucHV0TXMgJiYgaW5wdXRNcyA8PSBhZGp1c3RlZFRvWm9uZS5lbmRPZih1bml0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFcXVhbGl0eSBjaGVja1xuICAgKiBUd28gRGF0ZVRpbWVzIGFyZSBlcXVhbCBpZmYgdGhleSByZXByZXNlbnQgdGhlIHNhbWUgbWlsbGlzZWNvbmQsIGhhdmUgdGhlIHNhbWUgem9uZSBhbmQgbG9jYXRpb24sIGFuZCBhcmUgYm90aCB2YWxpZC5cbiAgICogVG8gY29tcGFyZSBqdXN0IHRoZSBtaWxsaXNlY29uZCB2YWx1ZXMsIHVzZSBgK2R0MSA9PT0gK2R0MmAuXG4gICAqIEBwYXJhbSB7RGF0ZVRpbWV9IG90aGVyIC0gdGhlIG90aGVyIERhdGVUaW1lXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqL1xuICBlcXVhbHMob3RoZXIpIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5pc1ZhbGlkICYmXG4gICAgICBvdGhlci5pc1ZhbGlkICYmXG4gICAgICB0aGlzLnZhbHVlT2YoKSA9PT0gb3RoZXIudmFsdWVPZigpICYmXG4gICAgICB0aGlzLnpvbmUuZXF1YWxzKG90aGVyLnpvbmUpICYmXG4gICAgICB0aGlzLmxvYy5lcXVhbHMob3RoZXIubG9jKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIHRoaXMgdGltZSByZWxhdGl2ZSB0byBub3csIHN1Y2ggYXMgXCJpbiB0d28gZGF5c1wiLiBDYW4gb25seSBpbnRlcm5hdGlvbmFsaXplIGlmIHlvdXJcbiAgICogcGxhdGZvcm0gc3VwcG9ydHMgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQuIFJvdW5kcyBkb3duIGJ5IGRlZmF1bHQuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gb3B0aW9ucyB0aGF0IGFmZmVjdCB0aGUgb3V0cHV0XG4gICAqIEBwYXJhbSB7RGF0ZVRpbWV9IFtvcHRpb25zLmJhc2U9RGF0ZVRpbWUubm93KCldIC0gdGhlIERhdGVUaW1lIHRvIHVzZSBhcyB0aGUgYmFzaXMgdG8gd2hpY2ggdGhpcyB0aW1lIGlzIGNvbXBhcmVkLiBEZWZhdWx0cyB0byBub3cuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5zdHlsZT1cImxvbmdcIl0gLSB0aGUgc3R5bGUgb2YgdW5pdHMsIG11c3QgYmUgXCJsb25nXCIsIFwic2hvcnRcIiwgb3IgXCJuYXJyb3dcIlxuICAgKiBAcGFyYW0ge3N0cmluZ3xzdHJpbmdbXX0gb3B0aW9ucy51bml0IC0gdXNlIGEgc3BlY2lmaWMgdW5pdCBvciBhcnJheSBvZiB1bml0czsgaWYgb21pdHRlZCwgb3IgYW4gYXJyYXksIHRoZSBtZXRob2Qgd2lsbCBwaWNrIHRoZSBiZXN0IHVuaXQuIFVzZSBhbiBhcnJheSBvciBvbmUgb2YgXCJ5ZWFyc1wiLCBcInF1YXJ0ZXJzXCIsIFwibW9udGhzXCIsIFwid2Vla3NcIiwgXCJkYXlzXCIsIFwiaG91cnNcIiwgXCJtaW51dGVzXCIsIG9yIFwic2Vjb25kc1wiXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMucm91bmQ9dHJ1ZV0gLSB3aGV0aGVyIHRvIHJvdW5kIHRoZSBudW1iZXJzIGluIHRoZSBvdXRwdXQuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbb3B0aW9ucy5wYWRkaW5nPTBdIC0gcGFkZGluZyBpbiBtaWxsaXNlY29uZHMuIFRoaXMgYWxsb3dzIHlvdSB0byByb3VuZCB1cCB0aGUgcmVzdWx0IGlmIGl0IGZpdHMgaW5zaWRlIHRoZSB0aHJlc2hvbGQuIERvbid0IHVzZSBpbiBjb21iaW5hdGlvbiB3aXRoIHtyb3VuZDogZmFsc2V9IGJlY2F1c2UgdGhlIGRlY2ltYWwgb3V0cHV0IHdpbGwgaW5jbHVkZSB0aGUgcGFkZGluZy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMubG9jYWxlIC0gb3ZlcnJpZGUgdGhlIGxvY2FsZSBvZiB0aGlzIERhdGVUaW1lXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLm51bWJlcmluZ1N5c3RlbSAtIG92ZXJyaWRlIHRoZSBudW1iZXJpbmdTeXN0ZW0gb2YgdGhpcyBEYXRlVGltZS4gVGhlIEludGwgc3lzdGVtIG1heSBjaG9vc2Ugbm90IHRvIGhvbm9yIHRoaXNcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkucGx1cyh7IGRheXM6IDEgfSkudG9SZWxhdGl2ZSgpIC8vPT4gXCJpbiAxIGRheVwiXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnNldExvY2FsZShcImVzXCIpLnRvUmVsYXRpdmUoeyBkYXlzOiAxIH0pIC8vPT4gXCJkZW50cm8gZGUgMSBkXHUwMEVEYVwiXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnBsdXMoeyBkYXlzOiAxIH0pLnRvUmVsYXRpdmUoeyBsb2NhbGU6IFwiZnJcIiB9KSAvLz0+IFwiZGFucyAyMyBoZXVyZXNcIlxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5taW51cyh7IGRheXM6IDIgfSkudG9SZWxhdGl2ZSgpIC8vPT4gXCIyIGRheXMgYWdvXCJcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkubWludXMoeyBkYXlzOiAyIH0pLnRvUmVsYXRpdmUoeyB1bml0OiBcImhvdXJzXCIgfSkgLy89PiBcIjQ4IGhvdXJzIGFnb1wiXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLm1pbnVzKHsgaG91cnM6IDM2IH0pLnRvUmVsYXRpdmUoeyByb3VuZDogZmFsc2UgfSkgLy89PiBcIjEuNSBkYXlzIGFnb1wiXG4gICAqL1xuICB0b1JlbGF0aXZlKG9wdGlvbnMgPSB7fSkge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCBiYXNlID0gb3B0aW9ucy5iYXNlIHx8IERhdGVUaW1lLmZyb21PYmplY3Qoe30sIHsgem9uZTogdGhpcy56b25lIH0pLFxuICAgICAgcGFkZGluZyA9IG9wdGlvbnMucGFkZGluZyA/ICh0aGlzIDwgYmFzZSA/IC1vcHRpb25zLnBhZGRpbmcgOiBvcHRpb25zLnBhZGRpbmcpIDogMDtcbiAgICBsZXQgdW5pdHMgPSBbXCJ5ZWFyc1wiLCBcIm1vbnRoc1wiLCBcImRheXNcIiwgXCJob3Vyc1wiLCBcIm1pbnV0ZXNcIiwgXCJzZWNvbmRzXCJdO1xuICAgIGxldCB1bml0ID0gb3B0aW9ucy51bml0O1xuICAgIGlmIChBcnJheS5pc0FycmF5KG9wdGlvbnMudW5pdCkpIHtcbiAgICAgIHVuaXRzID0gb3B0aW9ucy51bml0O1xuICAgICAgdW5pdCA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIGRpZmZSZWxhdGl2ZShiYXNlLCB0aGlzLnBsdXMocGFkZGluZyksIHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBudW1lcmljOiBcImFsd2F5c1wiLFxuICAgICAgdW5pdHMsXG4gICAgICB1bml0LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBkYXRlIHJlbGF0aXZlIHRvIHRvZGF5LCBzdWNoIGFzIFwieWVzdGVyZGF5XCIgb3IgXCJuZXh0IG1vbnRoXCIuXG4gICAqIE9ubHkgaW50ZXJuYXRpb25hbGl6ZXMgb24gcGxhdGZvcm1zIHRoYXQgc3VwcG9ydHMgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gb3B0aW9ucyB0aGF0IGFmZmVjdCB0aGUgb3V0cHV0XG4gICAqIEBwYXJhbSB7RGF0ZVRpbWV9IFtvcHRpb25zLmJhc2U9RGF0ZVRpbWUubm93KCldIC0gdGhlIERhdGVUaW1lIHRvIHVzZSBhcyB0aGUgYmFzaXMgdG8gd2hpY2ggdGhpcyB0aW1lIGlzIGNvbXBhcmVkLiBEZWZhdWx0cyB0byBub3cuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLmxvY2FsZSAtIG92ZXJyaWRlIHRoZSBsb2NhbGUgb2YgdGhpcyBEYXRlVGltZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy51bml0IC0gdXNlIGEgc3BlY2lmaWMgdW5pdDsgaWYgb21pdHRlZCwgdGhlIG1ldGhvZCB3aWxsIHBpY2sgdGhlIHVuaXQuIFVzZSBvbmUgb2YgXCJ5ZWFyc1wiLCBcInF1YXJ0ZXJzXCIsIFwibW9udGhzXCIsIFwid2Vla3NcIiwgb3IgXCJkYXlzXCJcbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMubnVtYmVyaW5nU3lzdGVtIC0gb3ZlcnJpZGUgdGhlIG51bWJlcmluZ1N5c3RlbSBvZiB0aGlzIERhdGVUaW1lLiBUaGUgSW50bCBzeXN0ZW0gbWF5IGNob29zZSBub3QgdG8gaG9ub3IgdGhpc1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5wbHVzKHsgZGF5czogMSB9KS50b1JlbGF0aXZlQ2FsZW5kYXIoKSAvLz0+IFwidG9tb3Jyb3dcIlxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5zZXRMb2NhbGUoXCJlc1wiKS5wbHVzKHsgZGF5czogMSB9KS50b1JlbGF0aXZlKCkgLy89PiBcIlwibWFcdTAwRjFhbmFcIlxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5wbHVzKHsgZGF5czogMSB9KS50b1JlbGF0aXZlQ2FsZW5kYXIoeyBsb2NhbGU6IFwiZnJcIiB9KSAvLz0+IFwiZGVtYWluXCJcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkubWludXMoeyBkYXlzOiAyIH0pLnRvUmVsYXRpdmVDYWxlbmRhcigpIC8vPT4gXCIyIGRheXMgYWdvXCJcbiAgICovXG4gIHRvUmVsYXRpdmVDYWxlbmRhcihvcHRpb25zID0ge30pIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIG51bGw7XG5cbiAgICByZXR1cm4gZGlmZlJlbGF0aXZlKG9wdGlvbnMuYmFzZSB8fCBEYXRlVGltZS5mcm9tT2JqZWN0KHt9LCB7IHpvbmU6IHRoaXMuem9uZSB9KSwgdGhpcywge1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIG51bWVyaWM6IFwiYXV0b1wiLFxuICAgICAgdW5pdHM6IFtcInllYXJzXCIsIFwibW9udGhzXCIsIFwiZGF5c1wiXSxcbiAgICAgIGNhbGVuZGFyeTogdHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIG1pbiBvZiBzZXZlcmFsIGRhdGUgdGltZXNcbiAgICogQHBhcmFtIHsuLi5EYXRlVGltZX0gZGF0ZVRpbWVzIC0gdGhlIERhdGVUaW1lcyBmcm9tIHdoaWNoIHRvIGNob29zZSB0aGUgbWluaW11bVxuICAgKiBAcmV0dXJuIHtEYXRlVGltZX0gdGhlIG1pbiBEYXRlVGltZSwgb3IgdW5kZWZpbmVkIGlmIGNhbGxlZCB3aXRoIG5vIGFyZ3VtZW50XG4gICAqL1xuICBzdGF0aWMgbWluKC4uLmRhdGVUaW1lcykge1xuICAgIGlmICghZGF0ZVRpbWVzLmV2ZXJ5KERhdGVUaW1lLmlzRGF0ZVRpbWUpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoXCJtaW4gcmVxdWlyZXMgYWxsIGFyZ3VtZW50cyBiZSBEYXRlVGltZXNcIik7XG4gICAgfVxuICAgIHJldHVybiBiZXN0QnkoZGF0ZVRpbWVzLCAoaSkgPT4gaS52YWx1ZU9mKCksIE1hdGgubWluKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIG1heCBvZiBzZXZlcmFsIGRhdGUgdGltZXNcbiAgICogQHBhcmFtIHsuLi5EYXRlVGltZX0gZGF0ZVRpbWVzIC0gdGhlIERhdGVUaW1lcyBmcm9tIHdoaWNoIHRvIGNob29zZSB0aGUgbWF4aW11bVxuICAgKiBAcmV0dXJuIHtEYXRlVGltZX0gdGhlIG1heCBEYXRlVGltZSwgb3IgdW5kZWZpbmVkIGlmIGNhbGxlZCB3aXRoIG5vIGFyZ3VtZW50XG4gICAqL1xuICBzdGF0aWMgbWF4KC4uLmRhdGVUaW1lcykge1xuICAgIGlmICghZGF0ZVRpbWVzLmV2ZXJ5KERhdGVUaW1lLmlzRGF0ZVRpbWUpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoXCJtYXggcmVxdWlyZXMgYWxsIGFyZ3VtZW50cyBiZSBEYXRlVGltZXNcIik7XG4gICAgfVxuICAgIHJldHVybiBiZXN0QnkoZGF0ZVRpbWVzLCAoaSkgPT4gaS52YWx1ZU9mKCksIE1hdGgubWF4KTtcbiAgfVxuXG4gIC8vIE1JU0NcblxuICAvKipcbiAgICogRXhwbGFpbiBob3cgYSBzdHJpbmcgd291bGQgYmUgcGFyc2VkIGJ5IGZyb21Gb3JtYXQoKVxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAtIHRoZSBzdHJpbmcgdG8gcGFyc2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IGZtdCAtIHRoZSBmb3JtYXQgdGhlIHN0cmluZyBpcyBleHBlY3RlZCB0byBiZSBpbiAoc2VlIGRlc2NyaXB0aW9uKVxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIG9wdGlvbnMgdGFrZW4gYnkgZnJvbUZvcm1hdCgpXG4gICAqIEByZXR1cm4ge09iamVjdH1cbiAgICovXG4gIHN0YXRpYyBmcm9tRm9ybWF0RXhwbGFpbih0ZXh0LCBmbXQsIG9wdGlvbnMgPSB7fSkge1xuICAgIGNvbnN0IHsgbG9jYWxlID0gbnVsbCwgbnVtYmVyaW5nU3lzdGVtID0gbnVsbCB9ID0gb3B0aW9ucyxcbiAgICAgIGxvY2FsZVRvVXNlID0gTG9jYWxlLmZyb21PcHRzKHtcbiAgICAgICAgbG9jYWxlLFxuICAgICAgICBudW1iZXJpbmdTeXN0ZW0sXG4gICAgICAgIGRlZmF1bHRUb0VOOiB0cnVlLFxuICAgICAgfSk7XG4gICAgcmV0dXJuIGV4cGxhaW5Gcm9tVG9rZW5zKGxvY2FsZVRvVXNlLCB0ZXh0LCBmbXQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHVzZSBmcm9tRm9ybWF0RXhwbGFpbiBpbnN0ZWFkXG4gICAqL1xuICBzdGF0aWMgZnJvbVN0cmluZ0V4cGxhaW4odGV4dCwgZm10LCBvcHRpb25zID0ge30pIHtcbiAgICByZXR1cm4gRGF0ZVRpbWUuZnJvbUZvcm1hdEV4cGxhaW4odGV4dCwgZm10LCBvcHRpb25zKTtcbiAgfVxuXG4gIC8vIEZPUk1BVCBQUkVTRVRTXG5cbiAgLyoqXG4gICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgMTAvMTQvMTk4M1xuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgc3RhdGljIGdldCBEQVRFX1NIT1JUKCkge1xuICAgIHJldHVybiBGb3JtYXRzLkRBVEVfU0hPUlQ7XG4gIH1cblxuICAvKipcbiAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnT2N0IDE0LCAxOTgzJ1xuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgc3RhdGljIGdldCBEQVRFX01FRCgpIHtcbiAgICByZXR1cm4gRm9ybWF0cy5EQVRFX01FRDtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdGcmksIE9jdCAxNCwgMTk4MydcbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHN0YXRpYyBnZXQgREFURV9NRURfV0lUSF9XRUVLREFZKCkge1xuICAgIHJldHVybiBGb3JtYXRzLkRBVEVfTUVEX1dJVEhfV0VFS0RBWTtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdPY3RvYmVyIDE0LCAxOTgzJ1xuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgc3RhdGljIGdldCBEQVRFX0ZVTEwoKSB7XG4gICAgcmV0dXJuIEZvcm1hdHMuREFURV9GVUxMO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJ1R1ZXNkYXksIE9jdG9iZXIgMTQsIDE5ODMnXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICBzdGF0aWMgZ2V0IERBVEVfSFVHRSgpIHtcbiAgICByZXR1cm4gRm9ybWF0cy5EQVRFX0hVR0U7XG4gIH1cblxuICAvKipcbiAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnMDk6MzAgQU0nLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy5cbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHN0YXRpYyBnZXQgVElNRV9TSU1QTEUoKSB7XG4gICAgcmV0dXJuIEZvcm1hdHMuVElNRV9TSU1QTEU7XG4gIH1cblxuICAvKipcbiAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnMDk6MzA6MjMgQU0nLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy5cbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHN0YXRpYyBnZXQgVElNRV9XSVRIX1NFQ09ORFMoKSB7XG4gICAgcmV0dXJuIEZvcm1hdHMuVElNRV9XSVRIX1NFQ09ORFM7XG4gIH1cblxuICAvKipcbiAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnMDk6MzA6MjMgQU0gRURUJy4gT25seSAxMi1ob3VyIGlmIHRoZSBsb2NhbGUgaXMuXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICBzdGF0aWMgZ2V0IFRJTUVfV0lUSF9TSE9SVF9PRkZTRVQoKSB7XG4gICAgcmV0dXJuIEZvcm1hdHMuVElNRV9XSVRIX1NIT1JUX09GRlNFVDtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICcwOTozMDoyMyBBTSBFYXN0ZXJuIERheWxpZ2h0IFRpbWUnLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy5cbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHN0YXRpYyBnZXQgVElNRV9XSVRIX0xPTkdfT0ZGU0VUKCkge1xuICAgIHJldHVybiBGb3JtYXRzLlRJTUVfV0lUSF9MT05HX09GRlNFVDtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICcwOTozMCcsIGFsd2F5cyAyNC1ob3VyLlxuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgc3RhdGljIGdldCBUSU1FXzI0X1NJTVBMRSgpIHtcbiAgICByZXR1cm4gRm9ybWF0cy5USU1FXzI0X1NJTVBMRTtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICcwOTozMDoyMycsIGFsd2F5cyAyNC1ob3VyLlxuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgc3RhdGljIGdldCBUSU1FXzI0X1dJVEhfU0VDT05EUygpIHtcbiAgICByZXR1cm4gRm9ybWF0cy5USU1FXzI0X1dJVEhfU0VDT05EUztcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICcwOTozMDoyMyBFRFQnLCBhbHdheXMgMjQtaG91ci5cbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHN0YXRpYyBnZXQgVElNRV8yNF9XSVRIX1NIT1JUX09GRlNFVCgpIHtcbiAgICByZXR1cm4gRm9ybWF0cy5USU1FXzI0X1dJVEhfU0hPUlRfT0ZGU0VUO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJzA5OjMwOjIzIEVhc3Rlcm4gRGF5bGlnaHQgVGltZScsIGFsd2F5cyAyNC1ob3VyLlxuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgc3RhdGljIGdldCBUSU1FXzI0X1dJVEhfTE9OR19PRkZTRVQoKSB7XG4gICAgcmV0dXJuIEZvcm1hdHMuVElNRV8yNF9XSVRIX0xPTkdfT0ZGU0VUO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJzEwLzE0LzE5ODMsIDk6MzAgQU0nLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy5cbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHN0YXRpYyBnZXQgREFURVRJTUVfU0hPUlQoKSB7XG4gICAgcmV0dXJuIEZvcm1hdHMuREFURVRJTUVfU0hPUlQ7XG4gIH1cblxuICAvKipcbiAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnMTAvMTQvMTk4MywgOTozMDozMyBBTScuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLlxuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgc3RhdGljIGdldCBEQVRFVElNRV9TSE9SVF9XSVRIX1NFQ09ORFMoKSB7XG4gICAgcmV0dXJuIEZvcm1hdHMuREFURVRJTUVfU0hPUlRfV0lUSF9TRUNPTkRTO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJ09jdCAxNCwgMTk4MywgOTozMCBBTScuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLlxuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgc3RhdGljIGdldCBEQVRFVElNRV9NRUQoKSB7XG4gICAgcmV0dXJuIEZvcm1hdHMuREFURVRJTUVfTUVEO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJ09jdCAxNCwgMTk4MywgOTozMDozMyBBTScuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLlxuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgc3RhdGljIGdldCBEQVRFVElNRV9NRURfV0lUSF9TRUNPTkRTKCkge1xuICAgIHJldHVybiBGb3JtYXRzLkRBVEVUSU1FX01FRF9XSVRIX1NFQ09ORFM7XG4gIH1cblxuICAvKipcbiAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnRnJpLCAxNCBPY3QgMTk4MywgOTozMCBBTScuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLlxuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgc3RhdGljIGdldCBEQVRFVElNRV9NRURfV0lUSF9XRUVLREFZKCkge1xuICAgIHJldHVybiBGb3JtYXRzLkRBVEVUSU1FX01FRF9XSVRIX1dFRUtEQVk7XG4gIH1cblxuICAvKipcbiAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnT2N0b2JlciAxNCwgMTk4MywgOTozMCBBTSBFRFQnLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy5cbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHN0YXRpYyBnZXQgREFURVRJTUVfRlVMTCgpIHtcbiAgICByZXR1cm4gRm9ybWF0cy5EQVRFVElNRV9GVUxMO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJ09jdG9iZXIgMTQsIDE5ODMsIDk6MzA6MzMgQU0gRURUJy4gT25seSAxMi1ob3VyIGlmIHRoZSBsb2NhbGUgaXMuXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICBzdGF0aWMgZ2V0IERBVEVUSU1FX0ZVTExfV0lUSF9TRUNPTkRTKCkge1xuICAgIHJldHVybiBGb3JtYXRzLkRBVEVUSU1FX0ZVTExfV0lUSF9TRUNPTkRTO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJ0ZyaWRheSwgT2N0b2JlciAxNCwgMTk4MywgOTozMCBBTSBFYXN0ZXJuIERheWxpZ2h0IFRpbWUnLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy5cbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHN0YXRpYyBnZXQgREFURVRJTUVfSFVHRSgpIHtcbiAgICByZXR1cm4gRm9ybWF0cy5EQVRFVElNRV9IVUdFO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJ0ZyaWRheSwgT2N0b2JlciAxNCwgMTk4MywgOTozMDozMyBBTSBFYXN0ZXJuIERheWxpZ2h0IFRpbWUnLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy5cbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHN0YXRpYyBnZXQgREFURVRJTUVfSFVHRV9XSVRIX1NFQ09ORFMoKSB7XG4gICAgcmV0dXJuIEZvcm1hdHMuREFURVRJTUVfSFVHRV9XSVRIX1NFQ09ORFM7XG4gIH1cbn1cblxuLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZnJpZW5kbHlEYXRlVGltZShkYXRlVGltZWlzaCkge1xuICBpZiAoRGF0ZVRpbWUuaXNEYXRlVGltZShkYXRlVGltZWlzaCkpIHtcbiAgICByZXR1cm4gZGF0ZVRpbWVpc2g7XG4gIH0gZWxzZSBpZiAoZGF0ZVRpbWVpc2ggJiYgZGF0ZVRpbWVpc2gudmFsdWVPZiAmJiBpc051bWJlcihkYXRlVGltZWlzaC52YWx1ZU9mKCkpKSB7XG4gICAgcmV0dXJuIERhdGVUaW1lLmZyb21KU0RhdGUoZGF0ZVRpbWVpc2gpO1xuICB9IGVsc2UgaWYgKGRhdGVUaW1laXNoICYmIHR5cGVvZiBkYXRlVGltZWlzaCA9PT0gXCJvYmplY3RcIikge1xuICAgIHJldHVybiBEYXRlVGltZS5mcm9tT2JqZWN0KGRhdGVUaW1laXNoKTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoXG4gICAgICBgVW5rbm93biBkYXRldGltZSBhcmd1bWVudDogJHtkYXRlVGltZWlzaH0sIG9mIHR5cGUgJHt0eXBlb2YgZGF0ZVRpbWVpc2h9YFxuICAgICk7XG4gIH1cbn1cbiIsICJpbXBvcnQgeyBEYXRlVGltZSwgRHVyYXRpb24gfSBmcm9tIFwibHV4b25cIjtcbmltcG9ydCAqIGFzIFAgZnJvbSBcInBhcnNpbW1vblwiO1xuaW1wb3J0IGVtb2ppUmVnZXggZnJvbSBcImVtb2ppLXJlZ2V4XCI7XG5pbXBvcnQgeyBMaW5rIH0gZnJvbSBcImV4cHJlc3Npb24vbGlua1wiO1xuXG4vKiogVGVzdC1lbnZpcm9ubWVudC1mcmllbmRseSBmdW5jdGlvbiB3aGljaCBmZXRjaGVzIHRoZSBjdXJyZW50IHN5c3RlbSBsb2NhbGUuICovXG5leHBvcnQgZnVuY3Rpb24gY3VycmVudExvY2FsZSgpOiBzdHJpbmcge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSBcInVuZGVmaW5lZFwiKSByZXR1cm4gXCJlbi1VU1wiO1xuICAgIHJldHVybiB3aW5kb3cubmF2aWdhdG9yLmxhbmd1YWdlO1xufVxuXG4vLyBEYXRlL1RpbWUgUmVuZGVyaW5nXG5cbi8qKiBOb3JtYWxpemUgYSBkdXJhdGlvbiB0byBhbGwgb2YgdGhlIHByb3BlciB1bml0cy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVEdXJhdGlvbihkdXI6IER1cmF0aW9uKSB7XG4gICAgaWYgKGR1ciA9PT0gdW5kZWZpbmVkIHx8IGR1ciA9PT0gbnVsbCkgcmV0dXJuIGR1cjtcblxuICAgIHJldHVybiBkdXIuc2hpZnRUbyhcInllYXJzXCIsIFwibW9udGhzXCIsIFwid2Vla3NcIiwgXCJkYXlzXCIsIFwiaG91cnNcIiwgXCJtaW51dGVzXCIsIFwic2Vjb25kc1wiLCBcIm1pbGxpc2Vjb25kc1wiKS5ub3JtYWxpemUoKTtcbn1cblxuLyoqIFN0cmlwIHRoZSB0aW1lIGNvbXBvbmVudHMgb2YgYSBkYXRlIHRpbWUgb2JqZWN0LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0cmlwVGltZShkdDogRGF0ZVRpbWUpOiBEYXRlVGltZSB7XG4gICAgaWYgKGR0ID09PSBudWxsIHx8IGR0ID09PSB1bmRlZmluZWQpIHJldHVybiBkdDtcblxuICAgIHJldHVybiBEYXRlVGltZS5mcm9tT2JqZWN0KHtcbiAgICAgICAgeWVhcjogZHQueWVhcixcbiAgICAgICAgbW9udGg6IGR0Lm1vbnRoLFxuICAgICAgICBkYXk6IGR0LmRheSxcbiAgICB9KTtcbn1cblxuLyoqIFRyeSB0byBleHRyYWN0IGEgWVlZWU1NREQgZGF0ZSBmcm9tIGEgc3RyaW5nLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3REYXRlKHN0cjogc3RyaW5nKTogRGF0ZVRpbWUgfCB1bmRlZmluZWQge1xuICAgIGxldCBkYXRlTWF0Y2ggPSAvKFxcZHs0fSktKFxcZHsyfSktKFxcZHsyfSkvLmV4ZWMoc3RyKTtcbiAgICBpZiAoIWRhdGVNYXRjaCkgZGF0ZU1hdGNoID0gLyhcXGR7NH0pKFxcZHsyfSkoXFxkezJ9KS8uZXhlYyhzdHIpO1xuICAgIGlmIChkYXRlTWF0Y2gpIHtcbiAgICAgICAgbGV0IHllYXIgPSBOdW1iZXIucGFyc2VJbnQoZGF0ZU1hdGNoWzFdKTtcbiAgICAgICAgbGV0IG1vbnRoID0gTnVtYmVyLnBhcnNlSW50KGRhdGVNYXRjaFsyXSk7XG4gICAgICAgIGxldCBkYXkgPSBOdW1iZXIucGFyc2VJbnQoZGF0ZU1hdGNoWzNdKTtcbiAgICAgICAgcmV0dXJuIERhdGVUaW1lLmZyb21PYmplY3QoeyB5ZWFyLCBtb250aCwgZGF5IH0pO1xuICAgIH1cblxuICAgIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbi8qKiBSZW5kZXIgYSBEYXRlVGltZSBpbiBhIG1pbmltYWwgZm9ybWF0IHRvIHNhdmUgc3BhY2UuICovXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyTWluaW1hbERhdGUodGltZTogRGF0ZVRpbWUsIGRhdGVGb3JtYXQ6IHN0cmluZywgZGF0ZVRpbWVGb3JtYXQ6IHN0cmluZywgbG9jYWxlPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAvLyBJZiB0aGVyZSBpcyBubyByZWxldmFudCB0aW1lIHNwZWNpZmllZCwgZmFsbCBiYWNrIHRvIGp1c3QgcmVuZGVyaW5nIHRoZSBkYXRlLlxuICAgIGlmICh0aW1lLnNlY29uZCA9PSAwICYmIHRpbWUubWludXRlID09IDAgJiYgdGltZS5ob3VyID09IDApIHtcbiAgICAgICAgcmV0dXJuIHRpbWUudG9Mb2NhbCgpLnRvRm9ybWF0KGRhdGVGb3JtYXQsIHsgbG9jYWxlIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB0aW1lLnRvTG9jYWwoKS50b0Zvcm1hdChkYXRlVGltZUZvcm1hdCwgeyBsb2NhbGUgfSk7XG59XG5cbi8qKiBSZW5kZXIgYSBkdXJhdGlvbiBpbiBhIG1pbmltYWwgZm9ybWF0IHRvIHNhdmUgc3BhY2UuICovXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyTWluaW1hbER1cmF0aW9uKGR1cjogRHVyYXRpb24pOiBzdHJpbmcge1xuICAgIGR1ciA9IG5vcm1hbGl6ZUR1cmF0aW9uKGR1cik7XG5cbiAgICAvLyBUT0RPOiBMdXhvbiBkb2VzIG5vdCBoYXZlIG11bHRpLWxpbmd1YWwvbG9jYWxlLWF3YXJlIGR1cmF0aW9uIHJlbmRlcmluZy5cbiAgICBsZXQgcmVzdWx0ID0gXCJcIjtcbiAgICBpZiAoZHVyLnllYXJzKSByZXN1bHQgKz0gYCR7ZHVyLnllYXJzfSB5ZWFycywgYDtcbiAgICBpZiAoZHVyLm1vbnRocykgcmVzdWx0ICs9IGAke2R1ci5tb250aHN9IG1vbnRocywgYDtcbiAgICBpZiAoZHVyLndlZWtzKSByZXN1bHQgKz0gYCR7ZHVyLndlZWtzfSB3ZWVrcywgYDtcbiAgICBpZiAoZHVyLmRheXMpIHJlc3VsdCArPSBgJHtkdXIuZGF5c30gZGF5cywgYDtcbiAgICBpZiAoZHVyLmhvdXJzKSByZXN1bHQgKz0gYCR7ZHVyLmhvdXJzfSBob3VycywgYDtcbiAgICBpZiAoZHVyLm1pbnV0ZXMpIHJlc3VsdCArPSBgJHtkdXIubWludXRlc30gbWludXRlcywgYDtcbiAgICBpZiAoZHVyLnNlY29uZHMpIHJlc3VsdCArPSBgJHtNYXRoLnJvdW5kKGR1ci5zZWNvbmRzKX0gc2Vjb25kcywgYDtcbiAgICBpZiAoZHVyLm1pbGxpc2Vjb25kcykgcmVzdWx0ICs9IGAke01hdGgucm91bmQoZHVyLm1pbGxpc2Vjb25kcyl9IG1zLCBgO1xuXG4gICAgaWYgKHJlc3VsdC5lbmRzV2l0aChcIiwgXCIpKSByZXN1bHQgPSByZXN1bHQuc3Vic3RyaW5nKDAsIHJlc3VsdC5sZW5ndGggLSAyKTtcbiAgICByZXR1cm4gcmVzdWx0O1xufVxuXG4vLyBQYXRoIHV0aWxpdGllcy5cblxuLyoqIEdldCB0aGUgZm9sZGVyIGNvbnRhaW5pbmcgdGhlIGdpdmVuIHBhdGggKGkuZS4sIGxpa2UgY29tcHV0aW5nICdwYXRoLy4uJykuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGFyZW50Rm9sZGVyKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHBhdGguc3BsaXQoXCIvXCIpLnNsaWNlKDAsIC0xKS5qb2luKFwiL1wiKTtcbn1cblxuLyoqIEdldCB0aGUgZmlsZSBuYW1lIGZvciB0aGUgZmlsZSByZWZlcmVuY2VkIGluIHRoZSBnaXZlbiBwYXRoLCBieSBzdHJpcHBpbmcgdGhlIHBhcmVudCBmb2xkZXJzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEZpbGVOYW1lKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHBhdGguaW5jbHVkZXMoXCIvXCIpID8gcGF0aC5zdWJzdHJpbmcocGF0aC5sYXN0SW5kZXhPZihcIi9cIikgKyAxKSA6IHBhdGg7XG59XG5cbi8qKiBHZXQgdGhlIFwidGl0bGVcIiBmb3IgYSBmaWxlLCBieSBzdHJpcHBpbmcgb3RoZXIgcGFydHMgb2YgdGhlIHBhdGggYXMgd2VsbCBhcyB0aGUgZXh0ZW5zaW9uLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEZpbGVUaXRsZShwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmIChwYXRoLmluY2x1ZGVzKFwiL1wiKSkgcGF0aCA9IHBhdGguc3Vic3RyaW5nKHBhdGgubGFzdEluZGV4T2YoXCIvXCIpICsgMSk7XG4gICAgaWYgKHBhdGguZW5kc1dpdGgoXCIubWRcIikpIHBhdGggPSBwYXRoLnN1YnN0cmluZygwLCBwYXRoLmxlbmd0aCAtIDMpO1xuICAgIHJldHVybiBwYXRoO1xufVxuXG4vKiogR2V0IHRoZSBleHRlbnNpb24gb2YgYSBmaWxlIGZyb20gdGhlIGZpbGUgcGF0aC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRFeHRlbnNpb24ocGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIXBhdGguaW5jbHVkZXMoXCIuXCIpKSByZXR1cm4gXCJcIjtcbiAgICByZXR1cm4gcGF0aC5zdWJzdHJpbmcocGF0aC5sYXN0SW5kZXhPZihcIi5cIikgKyAxKTtcbn1cblxuLy8gVGFnIGV4dHJhY3Rpb24uXG5cbi8qKiBQYXJzZSBhbGwgc3VidGFncyBvdXQgb2YgdGhlIGdpdmVuIHRhZy4gSS5lLiwgI2hlbGxvL2kvYW0gd291bGQgeWllbGQgWyNoZWxsby9pL2FtLCAjaGVsbG8vaSwgI2hlbGxvXS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0U3VidGFncyh0YWdzOiBzdHJpbmcgfCBJdGVyYWJsZTxzdHJpbmc+KTogc3RyaW5nW10ge1xuICAgIGxldCByZXN1bHQgPSBbXTtcbiAgICBmb3IgKGxldCB0YWcgb2YgdHlwZW9mIHRhZ3MgPT09IFwic3RyaW5nXCIgPyBbdGFnc10gOiB0YWdzKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKHRhZyk7XG4gICAgICAgIHdoaWxlICh0YWcuaW5jbHVkZXMoXCIvXCIpKSB7XG4gICAgICAgICAgICB0YWcgPSB0YWcuc3Vic3RyaW5nKDAsIHRhZy5sYXN0SW5kZXhPZihcIi9cIikpO1xuICAgICAgICAgICAgcmVzdWx0LnB1c2godGFnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKiBTcGxpdCBlYWNoIGJsb2NrIGFuZCBzZWN0aW9uIGxpbmsgaW50byB0aGUgb3JpZ2luYWwgbGluayBhbmQgYSBjb3JyZXNwb25kaW5nIGZpbGUgbGluay4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0RmlsZUxpbmtzKGVsaW5rczogTGlua1tdKTogTGlua1tdIHtcbiAgICBjb25zdCByZXN1bHQ6IExpbmtbXSA9IFtdO1xuICAgIGZvciAoY29uc3QgbGluayBvZiBlbGlua3MpIHtcbiAgICAgICAgcmVzdWx0LnB1c2gobGluayk7XG5cbiAgICAgICAgY29uc3QgZmlsZUxpbmsgPSBsaW5rLnRvRmlsZSgpO1xuICAgICAgICBpZiAobGluay50eXBlICE9IFwiZmlsZVwiICYmICFyZXN1bHQuZmluZCgoZXhpc3RpbmcpID0+IGV4aXN0aW5nLmVxdWFscyhmaWxlTGluaykpKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaChmaWxlTGluayk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuXG4vLyBTdHJpbmcgZXNjYXBpbmcgYW5kIGNhbm9uaWNhbGl6YXRpb24uXG5cbi8qKlxuICogRXNjYXBlIHJlZ2V4IGNoYXJhY3RlcnMgaW4gYSBzdHJpbmcuXG4gKiBTZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9HdWlkZS9SZWd1bGFyX0V4cHJlc3Npb25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXNjYXBlUmVnZXgoc3RyOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gc3RyLnJlcGxhY2UoL1suKis/XiR7fSgpfFtcXF1cXFxcXS9nLCBcIlxcXFwkJlwiKTtcbn1cblxuY29uc3QgSEVBREVSX0NBTk9OSUNBTElaRVI6IFAuUGFyc2VyPHN0cmluZz4gPSBQLmFsdChcbiAgICBQLnJlZ2V4KG5ldyBSZWdFeHAoZW1vamlSZWdleCgpLCBcIlwiKSksXG4gICAgUC5yZWdleCgvWzAtOVxccHtMZXR0ZXJ9Xy1dKy91KSxcbiAgICBQLndoaXRlc3BhY2UubWFwKChfKSA9PiBcIiBcIiksXG4gICAgUC5hbnkubWFwKChfKSA9PiBcIiBcIilcbilcbiAgICAubWFueSgpXG4gICAgLm1hcCgocmVzdWx0KSA9PiB7XG4gICAgICAgIHJldHVybiByZXN1bHQuam9pbihcIlwiKS5zcGxpdCgvXFxzKy8pLmpvaW4oXCIgXCIpLnRyaW0oKTtcbiAgICB9KTtcblxuLyoqXG4gKiBOb3JtYWxpemVzIHRoZSB0ZXh0IGluIGEgaGVhZGVyIHRvIGJlIHNvbWV0aGluZyB0aGF0IGlzIGFjdHVhbGx5IGxpbmthYmxlIHRvLiBUaGlzIG1pbWljc1xuICogaG93IE9ic2lkaWFuIGRvZXMgaXQncyBub3JtYWxpemF0aW9uLCBjb2xsYXBzaW5nIHJlcGVhdGVkIHNwYWNlcyBhbmQgc3RyaXBwaW5nIG91dCBjb250cm9sIGNoYXJhY3RlcnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVIZWFkZXJGb3JMaW5rKGhlYWRlcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gSEVBREVSX0NBTk9OSUNBTElaRVIudHJ5UGFyc2UoaGVhZGVyKTtcbn1cblxuLy8gRmFzdCBleHRyYWN0aW9uIG9mIGxpbmUgcmFuZ2VzIGZyb20gbGFyZ2UgcGllY2VzIG9mIHRleHQuXG5cbi8qKiBVcGRhdGUgdGhlIGxpbmUgcmFuZ2UgZnJvbSBbc3RhcnQsIGVuZCkgd2l0aCB0aGUgZ2l2ZW4gZnVuY3Rpb24uICovXG5leHBvcnQgZnVuY3Rpb24gbGluZVJlcGxhY2UodGV4dDogc3RyaW5nLCBzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlciwgZnVuYzogKGxpbmU6IHN0cmluZykgPT4gc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBbZGF0YSwgb2Zmc2V0XSA9IGxpbmVTcGFuKHRleHQsIHN0YXJ0LCBlbmQpO1xuICAgIGlmICghb2Zmc2V0KSByZXR1cm4gdGV4dDtcblxuICAgIHJldHVybiAoXG4gICAgICAgIGRhdGEuc3Vic3RyaW5nKDAsIG9mZnNldC5zdGFydCkgKyBmdW5jKGRhdGEuc3Vic3RyaW5nKG9mZnNldC5zdGFydCwgb2Zmc2V0LmVuZCkpICsgZGF0YS5zdWJzdHJpbmcob2Zmc2V0LmVuZClcbiAgICApO1xufVxuXG4vKiogRXh0cmFjdCB0aGUgbGluZXMgaW4gdGhlIHJhbmdlIFtzdGFydCwgZW5kKSwgYXMgd2VsbCBhcyB0aGUgYWN0dWFsIG9mZnNldHMgb2YgdGhlIHN0YXJ0IGFuZCBlbmQuICovXG5leHBvcnQgZnVuY3Rpb24gbGluZVNwYW4oXG4gICAgdGV4dDogc3RyaW5nLFxuICAgIHN0YXJ0OiBudW1iZXIsXG4gICAgZW5kOiBudW1iZXJcbik6IFtzdHJpbmcsIHsgc3RhcnQ6IG51bWJlcjsgZW5kOiBudW1iZXIgfSB8IHVuZGVmaW5lZF0ge1xuICAgIHN0YXJ0ID0gTWF0aC5tYXgoc3RhcnQsIDApO1xuICAgIGVuZCA9IE1hdGgubWF4KGVuZCwgMCk7XG5cbiAgICBpZiAoc3RhcnQgPj0gZW5kKSByZXR1cm4gW1wiXCIsIHVuZGVmaW5lZF07XG5cbiAgICAvLyBTdGFydCBieSBmaW5kaW5nIHRoZSBzdGFydGluZyBsaW5lIG9mZnNldC5cbiAgICBjb25zdCBzdGFydE9mZnNldCA9IHNraXBOZXdsaW5lcyh0ZXh0LCAwLCBzdGFydCk7XG4gICAgaWYgKHN0YXJ0T2Zmc2V0ID09IC0xKSByZXR1cm4gW1wiXCIsIHVuZGVmaW5lZF07XG5cbiAgICBjb25zdCBlbmRPZmZzZXQgPSBza2lwTmV3bGluZXModGV4dCwgc3RhcnRPZmZzZXQsIGVuZCAtIHN0YXJ0KTtcbiAgICBpZiAoZW5kT2Zmc2V0ID09IC0xKSByZXR1cm4gW3RleHQuc3Vic3RyaW5nKHN0YXJ0T2Zmc2V0KSwgeyBzdGFydDogc3RhcnRPZmZzZXQsIGVuZDogdGV4dC5sZW5ndGggfV07XG4gICAgZWxzZSByZXR1cm4gW3RleHQuc3Vic3RyaW5nKHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQgLSAxKSwgeyBzdGFydDogc3RhcnRPZmZzZXQsIGVuZDogZW5kT2Zmc2V0IC0gMSB9XTtcbn1cblxuLyoqIEV4dHJhY3QgdGhlIGxpbmVzIGluIHRoZSByYW5nZSBbc3RhcnQsIGVuZCkuIFN0YXJ0IGlzIGluY2x1c2l2ZSwgZW5kIGlzIGV4Y2x1c2l2ZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsaW5lUmFuZ2UodGV4dDogc3RyaW5nLCBzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIGxpbmVTcGFuKHRleHQsIHN0YXJ0LCBlbmQpWzBdO1xufVxuXG4vKiogU2tpcCB7Y291bnR9IHRvdGFsIG5ld2xpbmVzLCByZXR1cm5pbmcgdGhlIHN0YXJ0IG9mIHRoZSBsaW5lIHtjb3VudH0gbGluZXMgYWZ0ZXIgdGhlIGN1cnJlbnQgbGluZS4gSWYgY291bnQgaXMgMCwgdGhlIGluaXRpYWwgb2Zmc2V0IGlzIHJldHVybmVkLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNraXBOZXdsaW5lcyh0ZXh0OiBzdHJpbmcsIHN0YXJ0OiBudW1iZXIsIGNvdW50OiBudW1iZXIpOiBudW1iZXIge1xuICAgIGlmIChjb3VudCA9PSAwKSByZXR1cm4gc3RhcnQ7XG5cbiAgICBsZXQgcG9zaXRpb24gPSBzdGFydDtcbiAgICB3aGlsZSAoY291bnQgPiAwKSB7XG4gICAgICAgIHBvc2l0aW9uID0gdGV4dC5pbmRleE9mKFwiXFxuXCIsIHBvc2l0aW9uKTtcbiAgICAgICAgaWYgKHBvc2l0aW9uID09IC0xKSByZXR1cm4gLTE7XG5cbiAgICAgICAgY291bnQtLTtcbiAgICAgICAgcG9zaXRpb24gKz0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gcG9zaXRpb247XG59XG4iLCAiZXhwb3J0IGRlZmF1bHQgKCkgPT4ge1xuXHQvLyBodHRwczovL210aHMuYmUvZW1vamlcblx0cmV0dXJuIC9bIyowLTldXFx1RkUwRj9cXHUyMEUzfFtcXHhBOVxceEFFXFx1MjAzQ1xcdTIwNDlcXHUyMTIyXFx1MjEzOVxcdTIxOTQtXFx1MjE5OVxcdTIxQTlcXHUyMUFBXFx1MjMxQVxcdTIzMUJcXHUyMzI4XFx1MjNDRlxcdTIzRUQtXFx1MjNFRlxcdTIzRjFcXHUyM0YyXFx1MjNGOC1cXHUyM0ZBXFx1MjRDMlxcdTI1QUFcXHUyNUFCXFx1MjVCNlxcdTI1QzBcXHUyNUZCXFx1MjVGQ1xcdTI1RkVcXHUyNjAwLVxcdTI2MDRcXHUyNjBFXFx1MjYxMVxcdTI2MTRcXHUyNjE1XFx1MjYxOFxcdTI2MjBcXHUyNjIyXFx1MjYyM1xcdTI2MjZcXHUyNjJBXFx1MjYyRVxcdTI2MkZcXHUyNjM4LVxcdTI2M0FcXHUyNjQwXFx1MjY0MlxcdTI2NDgtXFx1MjY1M1xcdTI2NUZcXHUyNjYwXFx1MjY2M1xcdTI2NjVcXHUyNjY2XFx1MjY2OFxcdTI2N0JcXHUyNjdFXFx1MjY3RlxcdTI2OTJcXHUyNjk0LVxcdTI2OTdcXHUyNjk5XFx1MjY5QlxcdTI2OUNcXHUyNkEwXFx1MjZBN1xcdTI2QUFcXHUyNkIwXFx1MjZCMVxcdTI2QkRcXHUyNkJFXFx1MjZDNFxcdTI2QzhcXHUyNkNGXFx1MjZEMVxcdTI2RTlcXHUyNkYwLVxcdTI2RjVcXHUyNkY3XFx1MjZGOFxcdTI2RkFcXHUyNzAyXFx1MjcwOFxcdTI3MDlcXHUyNzBGXFx1MjcxMlxcdTI3MTRcXHUyNzE2XFx1MjcxRFxcdTI3MjFcXHUyNzMzXFx1MjczNFxcdTI3NDRcXHUyNzQ3XFx1Mjc1N1xcdTI3NjNcXHUyN0ExXFx1MjkzNFxcdTI5MzVcXHUyQjA1LVxcdTJCMDdcXHUyQjFCXFx1MkIxQ1xcdTJCNTVcXHUzMDMwXFx1MzAzRFxcdTMyOTdcXHUzMjk5XVxcdUZFMEY/fFtcXHUyNjFEXFx1MjcwQ1xcdTI3MERdKD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdfFxcdUZFMEYpP3xbXFx1MjcwQVxcdTI3MEJdKD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKT98W1xcdTIzRTktXFx1MjNFQ1xcdTIzRjBcXHUyM0YzXFx1MjVGRFxcdTI2OTNcXHUyNkExXFx1MjZBQlxcdTI2QzVcXHUyNkNFXFx1MjZENFxcdTI2RUFcXHUyNkZEXFx1MjcwNVxcdTI3MjhcXHUyNzRDXFx1Mjc0RVxcdTI3NTMtXFx1Mjc1NVxcdTI3OTUtXFx1Mjc5N1xcdTI3QjBcXHUyN0JGXFx1MkI1MF18XFx1MjZEM1xcdUZFMEY/KD86XFx1MjAwRFxcdUQ4M0RcXHVEQ0E1KT98XFx1MjZGOSg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXXxcXHVGRTBGKT8oPzpcXHUyMDBEW1xcdTI2NDBcXHUyNjQyXVxcdUZFMEY/KT98XFx1Mjc2NFxcdUZFMEY/KD86XFx1MjAwRCg/OlxcdUQ4M0RcXHVERDI1fFxcdUQ4M0VcXHVERTc5KSk/fFxcdUQ4M0MoPzpbXFx1REMwNFxcdURENzBcXHVERDcxXFx1REQ3RVxcdUREN0ZcXHVERTAyXFx1REUzN1xcdURGMjFcXHVERjI0LVxcdURGMkNcXHVERjM2XFx1REY3RFxcdURGOTZcXHVERjk3XFx1REY5OS1cXHVERjlCXFx1REY5RVxcdURGOUZcXHVERkNEXFx1REZDRVxcdURGRDQtXFx1REZERlxcdURGRjVcXHVERkY3XVxcdUZFMEY/fFtcXHVERjg1XFx1REZDMlxcdURGQzddKD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKT98W1xcdURGQzRcXHVERkNBXSg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSk/KD86XFx1MjAwRFtcXHUyNjQwXFx1MjY0Ml1cXHVGRTBGPyk/fFtcXHVERkNCXFx1REZDQ10oPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl18XFx1RkUwRik/KD86XFx1MjAwRFtcXHUyNjQwXFx1MjY0Ml1cXHVGRTBGPyk/fFtcXHVEQ0NGXFx1REQ4RVxcdUREOTEtXFx1REQ5QVxcdURFMDFcXHVERTFBXFx1REUyRlxcdURFMzItXFx1REUzNlxcdURFMzgtXFx1REUzQVxcdURFNTBcXHVERTUxXFx1REYwMC1cXHVERjIwXFx1REYyRC1cXHVERjM1XFx1REYzNy1cXHVERjQzXFx1REY0NS1cXHVERjRBXFx1REY0Qy1cXHVERjdDXFx1REY3RS1cXHVERjg0XFx1REY4Ni1cXHVERjkzXFx1REZBMC1cXHVERkMxXFx1REZDNVxcdURGQzZcXHVERkM4XFx1REZDOVxcdURGQ0YtXFx1REZEM1xcdURGRTAtXFx1REZGMFxcdURGRjgtXFx1REZGRl18XFx1RERFNlxcdUQ4M0NbXFx1RERFOC1cXHVEREVDXFx1RERFRVxcdURERjFcXHVEREYyXFx1RERGNFxcdURERjYtXFx1RERGQVxcdURERkNcXHVEREZEXFx1RERGRl18XFx1RERFN1xcdUQ4M0NbXFx1RERFNlxcdURERTdcXHVEREU5LVxcdURERUZcXHVEREYxLVxcdURERjRcXHVEREY2LVxcdURERjlcXHVEREZCXFx1RERGQ1xcdURERkVcXHVEREZGXXxcXHVEREU4XFx1RDgzQ1tcXHVEREU2XFx1RERFOFxcdURERTlcXHVEREVCLVxcdURERUVcXHVEREYwLVxcdURERjdcXHVEREZBLVxcdURERkZdfFxcdURERTlcXHVEODNDW1xcdURERUFcXHVEREVDXFx1RERFRlxcdURERjBcXHVEREYyXFx1RERGNFxcdURERkZdfFxcdURERUFcXHVEODNDW1xcdURERTZcXHVEREU4XFx1RERFQVxcdURERUNcXHVEREVEXFx1RERGNy1cXHVEREZBXXxcXHVEREVCXFx1RDgzQ1tcXHVEREVFLVxcdURERjBcXHVEREYyXFx1RERGNFxcdURERjddfFxcdURERUNcXHVEODNDW1xcdURERTZcXHVEREU3XFx1RERFOS1cXHVEREVFXFx1RERGMS1cXHVEREYzXFx1RERGNS1cXHVEREZBXFx1RERGQ1xcdURERkVdfFxcdURERURcXHVEODNDW1xcdURERjBcXHVEREYyXFx1RERGM1xcdURERjdcXHVEREY5XFx1RERGQV18XFx1RERFRVxcdUQ4M0NbXFx1RERFOC1cXHVEREVBXFx1RERGMS1cXHVEREY0XFx1RERGNi1cXHVEREY5XXxcXHVEREVGXFx1RDgzQ1tcXHVEREVBXFx1RERGMlxcdURERjRcXHVEREY1XXxcXHVEREYwXFx1RDgzQ1tcXHVEREVBXFx1RERFQy1cXHVEREVFXFx1RERGMlxcdURERjNcXHVEREY1XFx1RERGN1xcdURERkNcXHVEREZFXFx1RERGRl18XFx1RERGMVxcdUQ4M0NbXFx1RERFNi1cXHVEREU4XFx1RERFRVxcdURERjBcXHVEREY3LVxcdURERkJcXHVEREZFXXxcXHVEREYyXFx1RDgzQ1tcXHVEREU2XFx1RERFOC1cXHVEREVEXFx1RERGMC1cXHVEREZGXXxcXHVEREYzXFx1RDgzQ1tcXHVEREU2XFx1RERFOFxcdURERUEtXFx1RERFQ1xcdURERUVcXHVEREYxXFx1RERGNFxcdURERjVcXHVEREY3XFx1RERGQVxcdURERkZdfFxcdURERjRcXHVEODNDXFx1RERGMnxcXHVEREY1XFx1RDgzQ1tcXHVEREU2XFx1RERFQS1cXHVEREVEXFx1RERGMC1cXHVEREYzXFx1RERGNy1cXHVEREY5XFx1RERGQ1xcdURERkVdfFxcdURERjZcXHVEODNDXFx1RERFNnxcXHVEREY3XFx1RDgzQ1tcXHVEREVBXFx1RERGNFxcdURERjhcXHVEREZBXFx1RERGQ118XFx1RERGOFxcdUQ4M0NbXFx1RERFNi1cXHVEREVBXFx1RERFQy1cXHVEREY0XFx1RERGNy1cXHVEREY5XFx1RERGQlxcdURERkQtXFx1RERGRl18XFx1RERGOVxcdUQ4M0NbXFx1RERFNlxcdURERThcXHVEREU5XFx1RERFQi1cXHVEREVEXFx1RERFRi1cXHVEREY0XFx1RERGN1xcdURERjlcXHVEREZCXFx1RERGQ1xcdURERkZdfFxcdURERkFcXHVEODNDW1xcdURERTZcXHVEREVDXFx1RERGMlxcdURERjNcXHVEREY4XFx1RERGRVxcdURERkZdfFxcdURERkJcXHVEODNDW1xcdURERTZcXHVEREU4XFx1RERFQVxcdURERUNcXHVEREVFXFx1RERGM1xcdURERkFdfFxcdURERkNcXHVEODNDW1xcdURERUJcXHVEREY4XXxcXHVEREZEXFx1RDgzQ1xcdURERjB8XFx1RERGRVxcdUQ4M0NbXFx1RERFQVxcdURERjldfFxcdURERkZcXHVEODNDW1xcdURERTZcXHVEREYyXFx1RERGQ118XFx1REY0NCg/OlxcdTIwMERcXHVEODNEXFx1REZFQik/fFxcdURGNEIoPzpcXHUyMDBEXFx1RDgzRFxcdURGRTkpP3xcXHVERkMzKD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKT8oPzpcXHUyMDBEKD86W1xcdTI2NDBcXHUyNjQyXVxcdUZFMEY/KD86XFx1MjAwRFxcdTI3QTFcXHVGRTBGPyk/fFxcdTI3QTFcXHVGRTBGPykpP3xcXHVERkYzXFx1RkUwRj8oPzpcXHUyMDBEKD86XFx1MjZBN1xcdUZFMEY/fFxcdUQ4M0NcXHVERjA4KSk/fFxcdURGRjQoPzpcXHUyMDBEXFx1MjYyMFxcdUZFMEY/fFxcdURCNDBcXHVEQzY3XFx1REI0MFxcdURDNjJcXHVEQjQwKD86XFx1REM2NVxcdURCNDBcXHVEQzZFXFx1REI0MFxcdURDNjd8XFx1REM3M1xcdURCNDBcXHVEQzYzXFx1REI0MFxcdURDNzR8XFx1REM3N1xcdURCNDBcXHVEQzZDXFx1REI0MFxcdURDNzMpXFx1REI0MFxcdURDN0YpPyl8XFx1RDgzRCg/OltcXHVEQzNGXFx1RENGRFxcdURENDlcXHVERDRBXFx1REQ2RlxcdURENzBcXHVERDczXFx1REQ3Ni1cXHVERDc5XFx1REQ4N1xcdUREOEEtXFx1REQ4RFxcdUREQTVcXHVEREE4XFx1RERCMVxcdUREQjJcXHVEREJDXFx1RERDMi1cXHVEREM0XFx1REREMS1cXHVEREQzXFx1REREQy1cXHVERERFXFx1RERFMVxcdURERTNcXHVEREU4XFx1RERFRlxcdURERjNcXHVEREZBXFx1REVDQlxcdURFQ0QtXFx1REVDRlxcdURFRTAtXFx1REVFNVxcdURFRTlcXHVERUYwXFx1REVGM11cXHVGRTBGP3xbXFx1REM0MlxcdURDNDNcXHVEQzQ2LVxcdURDNTBcXHVEQzY2XFx1REM2N1xcdURDNkItXFx1REM2RFxcdURDNzJcXHVEQzc0LVxcdURDNzZcXHVEQzc4XFx1REM3Q1xcdURDODNcXHVEQzg1XFx1REM4RlxcdURDOTFcXHVEQ0FBXFx1REQ3QVxcdUREOTVcXHVERDk2XFx1REU0Q1xcdURFNEZcXHVERUMwXFx1REVDQ10oPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pP3xbXFx1REM2RVxcdURDNzBcXHVEQzcxXFx1REM3M1xcdURDNzdcXHVEQzgxXFx1REM4MlxcdURDODZcXHVEQzg3XFx1REU0NS1cXHVERTQ3XFx1REU0QlxcdURFNERcXHVERTRFXFx1REVBM1xcdURFQjRcXHVERUI1XSg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSk/KD86XFx1MjAwRFtcXHUyNjQwXFx1MjY0Ml1cXHVGRTBGPyk/fFtcXHVERDc0XFx1REQ5MF0oPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl18XFx1RkUwRik/fFtcXHVEQzAwLVxcdURDMDdcXHVEQzA5LVxcdURDMTRcXHVEQzE2LVxcdURDMjVcXHVEQzI3LVxcdURDM0FcXHVEQzNDLVxcdURDM0VcXHVEQzQwXFx1REM0NFxcdURDNDVcXHVEQzUxLVxcdURDNjVcXHVEQzZBXFx1REM3OS1cXHVEQzdCXFx1REM3RC1cXHVEQzgwXFx1REM4NFxcdURDODgtXFx1REM4RVxcdURDOTBcXHVEQzkyLVxcdURDQTlcXHVEQ0FCLVxcdURDRkNcXHVEQ0ZGLVxcdUREM0RcXHVERDRCLVxcdURENEVcXHVERDUwLVxcdURENjdcXHVEREE0XFx1RERGQi1cXHVERTJEXFx1REUyRi1cXHVERTM0XFx1REUzNy1cXHVERTQxXFx1REU0M1xcdURFNDRcXHVERTQ4LVxcdURFNEFcXHVERTgwLVxcdURFQTJcXHVERUE0LVxcdURFQjNcXHVERUI3LVxcdURFQkZcXHVERUMxLVxcdURFQzVcXHVERUQwLVxcdURFRDJcXHVERUQ1LVxcdURFRDdcXHVERURDLVxcdURFREZcXHVERUVCXFx1REVFQ1xcdURFRjQtXFx1REVGQ1xcdURGRTAtXFx1REZFQlxcdURGRjBdfFxcdURDMDgoPzpcXHUyMDBEXFx1MkIxQik/fFxcdURDMTUoPzpcXHUyMDBEXFx1RDgzRVxcdUREQkEpP3xcXHVEQzI2KD86XFx1MjAwRCg/OlxcdTJCMUJ8XFx1RDgzRFxcdUREMjUpKT98XFx1REMzQig/OlxcdTIwMERcXHUyNzQ0XFx1RkUwRj8pP3xcXHVEQzQxXFx1RkUwRj8oPzpcXHUyMDBEXFx1RDgzRFxcdURERThcXHVGRTBGPyk/fFxcdURDNjgoPzpcXHUyMDBEKD86W1xcdTI2OTVcXHUyNjk2XFx1MjcwOF1cXHVGRTBGP3xcXHUyNzY0XFx1RkUwRj9cXHUyMDBEXFx1RDgzRCg/OlxcdURDOEJcXHUyMDBEXFx1RDgzRCk/XFx1REM2OHxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEKD86W1xcdURDNjhcXHVEQzY5XVxcdTIwMERcXHVEODNEKD86XFx1REM2Nig/OlxcdTIwMERcXHVEODNEXFx1REM2Nik/fFxcdURDNjcoPzpcXHUyMDBEXFx1RDgzRFtcXHVEQzY2XFx1REM2N10pPyl8W1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1REM2Nig/OlxcdTIwMERcXHVEODNEXFx1REM2Nik/fFxcdURDNjcoPzpcXHUyMDBEXFx1RDgzRFtcXHVEQzY2XFx1REM2N10pPyl8XFx1RDgzRSg/OltcXHVEREFGXFx1RERCQ1xcdUREQkRdKD86XFx1MjAwRFxcdTI3QTFcXHVGRTBGPyk/fFtcXHVEREIwLVxcdUREQjNdKSl8XFx1RDgzQyg/OlxcdURGRkIoPzpcXHUyMDBEKD86W1xcdTI2OTVcXHUyNjk2XFx1MjcwOF1cXHVGRTBGP3xcXHUyNzY0XFx1RkUwRj9cXHUyMDBEXFx1RDgzRCg/OlxcdURDOEJcXHUyMDBEXFx1RDgzRCk/XFx1REM2OFxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXXxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRSg/OltcXHVEREFGXFx1RERCQ1xcdUREQkRdKD86XFx1MjAwRFxcdTI3QTFcXHVGRTBGPyk/fFtcXHVEREIwLVxcdUREQjNdfFxcdUREMURcXHUyMDBEXFx1RDgzRFxcdURDNjhcXHVEODNDW1xcdURGRkMtXFx1REZGRl0pKSk/fFxcdURGRkMoPzpcXHUyMDBEKD86W1xcdTI2OTVcXHUyNjk2XFx1MjcwOF1cXHVGRTBGP3xcXHUyNzY0XFx1RkUwRj9cXHUyMDBEXFx1RDgzRCg/OlxcdURDOEJcXHUyMDBEXFx1RDgzRCk/XFx1REM2OFxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXXxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRSg/OltcXHVEREFGXFx1RERCQ1xcdUREQkRdKD86XFx1MjAwRFxcdTI3QTFcXHVGRTBGPyk/fFtcXHVEREIwLVxcdUREQjNdfFxcdUREMURcXHUyMDBEXFx1RDgzRFxcdURDNjhcXHVEODNDW1xcdURGRkJcXHVERkZELVxcdURGRkZdKSkpP3xcXHVERkZEKD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRFxcdUQ4M0QoPzpcXHVEQzhCXFx1MjAwRFxcdUQ4M0QpP1xcdURDNjhcXHVEODNDW1xcdURGRkItXFx1REZGRl18XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0UoPzpbXFx1RERBRlxcdUREQkNcXHVEREJEXSg/OlxcdTIwMERcXHUyN0ExXFx1RkUwRj8pP3xbXFx1RERCMC1cXHVEREIzXXxcXHVERDFEXFx1MjAwRFxcdUQ4M0RcXHVEQzY4XFx1RDgzQ1tcXHVERkZCXFx1REZGQ1xcdURGRkVcXHVERkZGXSkpKT98XFx1REZGRSg/OlxcdTIwMEQoPzpbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XVxcdUZFMEY/fFxcdTI3NjRcXHVGRTBGP1xcdTIwMERcXHVEODNEKD86XFx1REM4QlxcdTIwMERcXHVEODNEKT9cXHVEQzY4XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFKD86W1xcdUREQUZcXHVEREJDXFx1RERCRF0oPzpcXHUyMDBEXFx1MjdBMVxcdUZFMEY/KT98W1xcdUREQjAtXFx1RERCM118XFx1REQxRFxcdTIwMERcXHVEODNEXFx1REM2OFxcdUQ4M0NbXFx1REZGQi1cXHVERkZEXFx1REZGRl0pKSk/fFxcdURGRkYoPzpcXHUyMDBEKD86W1xcdTI2OTVcXHUyNjk2XFx1MjcwOF1cXHVGRTBGP3xcXHUyNzY0XFx1RkUwRj9cXHUyMDBEXFx1RDgzRCg/OlxcdURDOEJcXHUyMDBEXFx1RDgzRCk/XFx1REM2OFxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXXxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRSg/OltcXHVEREFGXFx1RERCQ1xcdUREQkRdKD86XFx1MjAwRFxcdTI3QTFcXHVGRTBGPyk/fFtcXHVEREIwLVxcdUREQjNdfFxcdUREMURcXHUyMDBEXFx1RDgzRFxcdURDNjhcXHVEODNDW1xcdURGRkItXFx1REZGRV0pKSk/KSk/fFxcdURDNjkoPzpcXHUyMDBEKD86W1xcdTI2OTVcXHUyNjk2XFx1MjcwOF1cXHVGRTBGP3xcXHUyNzY0XFx1RkUwRj9cXHUyMDBEXFx1RDgzRCg/OlxcdURDOEJcXHUyMDBEXFx1RDgzRCk/W1xcdURDNjhcXHVEQzY5XXxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEKD86W1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1REM2Nig/OlxcdTIwMERcXHVEODNEXFx1REM2Nik/fFxcdURDNjcoPzpcXHUyMDBEXFx1RDgzRFtcXHVEQzY2XFx1REM2N10pP3xcXHVEQzY5XFx1MjAwRFxcdUQ4M0QoPzpcXHVEQzY2KD86XFx1MjAwRFxcdUQ4M0RcXHVEQzY2KT98XFx1REM2Nyg/OlxcdTIwMERcXHVEODNEW1xcdURDNjZcXHVEQzY3XSk/KSl8XFx1RDgzRSg/OltcXHVEREFGXFx1RERCQ1xcdUREQkRdKD86XFx1MjAwRFxcdTI3QTFcXHVGRTBGPyk/fFtcXHVEREIwLVxcdUREQjNdKSl8XFx1RDgzQyg/OlxcdURGRkIoPzpcXHUyMDBEKD86W1xcdTI2OTVcXHUyNjk2XFx1MjcwOF1cXHVGRTBGP3xcXHUyNzY0XFx1RkUwRj9cXHUyMDBEXFx1RDgzRCg/OltcXHVEQzY4XFx1REM2OV18XFx1REM4QlxcdTIwMERcXHVEODNEW1xcdURDNjhcXHVEQzY5XSlcXHVEODNDW1xcdURGRkItXFx1REZGRl18XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0UoPzpbXFx1RERBRlxcdUREQkNcXHVEREJEXSg/OlxcdTIwMERcXHUyN0ExXFx1RkUwRj8pP3xbXFx1RERCMC1cXHVEREIzXXxcXHVERDFEXFx1MjAwRFxcdUQ4M0RbXFx1REM2OFxcdURDNjldXFx1RDgzQ1tcXHVERkZDLVxcdURGRkZdKSkpP3xcXHVERkZDKD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRFxcdUQ4M0QoPzpbXFx1REM2OFxcdURDNjldfFxcdURDOEJcXHUyMDBEXFx1RDgzRFtcXHVEQzY4XFx1REM2OV0pXFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFKD86W1xcdUREQUZcXHVEREJDXFx1RERCRF0oPzpcXHUyMDBEXFx1MjdBMVxcdUZFMEY/KT98W1xcdUREQjAtXFx1RERCM118XFx1REQxRFxcdTIwMERcXHVEODNEW1xcdURDNjhcXHVEQzY5XVxcdUQ4M0NbXFx1REZGQlxcdURGRkQtXFx1REZGRl0pKSk/fFxcdURGRkQoPzpcXHUyMDBEKD86W1xcdTI2OTVcXHUyNjk2XFx1MjcwOF1cXHVGRTBGP3xcXHUyNzY0XFx1RkUwRj9cXHUyMDBEXFx1RDgzRCg/OltcXHVEQzY4XFx1REM2OV18XFx1REM4QlxcdTIwMERcXHVEODNEW1xcdURDNjhcXHVEQzY5XSlcXHVEODNDW1xcdURGRkItXFx1REZGRl18XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0UoPzpbXFx1RERBRlxcdUREQkNcXHVEREJEXSg/OlxcdTIwMERcXHUyN0ExXFx1RkUwRj8pP3xbXFx1RERCMC1cXHVEREIzXXxcXHVERDFEXFx1MjAwRFxcdUQ4M0RbXFx1REM2OFxcdURDNjldXFx1RDgzQ1tcXHVERkZCXFx1REZGQ1xcdURGRkVcXHVERkZGXSkpKT98XFx1REZGRSg/OlxcdTIwMEQoPzpbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XVxcdUZFMEY/fFxcdTI3NjRcXHVGRTBGP1xcdTIwMERcXHVEODNEKD86W1xcdURDNjhcXHVEQzY5XXxcXHVEQzhCXFx1MjAwRFxcdUQ4M0RbXFx1REM2OFxcdURDNjldKVxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXXxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRSg/OltcXHVEREFGXFx1RERCQ1xcdUREQkRdKD86XFx1MjAwRFxcdTI3QTFcXHVGRTBGPyk/fFtcXHVEREIwLVxcdUREQjNdfFxcdUREMURcXHUyMDBEXFx1RDgzRFtcXHVEQzY4XFx1REM2OV1cXHVEODNDW1xcdURGRkItXFx1REZGRFxcdURGRkZdKSkpP3xcXHVERkZGKD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRFxcdUQ4M0QoPzpbXFx1REM2OFxcdURDNjldfFxcdURDOEJcXHUyMDBEXFx1RDgzRFtcXHVEQzY4XFx1REM2OV0pXFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFKD86W1xcdUREQUZcXHVEREJDXFx1RERCRF0oPzpcXHUyMDBEXFx1MjdBMVxcdUZFMEY/KT98W1xcdUREQjAtXFx1RERCM118XFx1REQxRFxcdTIwMERcXHVEODNEW1xcdURDNjhcXHVEQzY5XVxcdUQ4M0NbXFx1REZGQi1cXHVERkZFXSkpKT8pKT98XFx1REM2Rig/OlxcdTIwMERbXFx1MjY0MFxcdTI2NDJdXFx1RkUwRj8pP3xcXHVERDc1KD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdfFxcdUZFMEYpPyg/OlxcdTIwMERbXFx1MjY0MFxcdTI2NDJdXFx1RkUwRj8pP3xcXHVERTJFKD86XFx1MjAwRFxcdUQ4M0RcXHVEQ0E4KT98XFx1REUzNSg/OlxcdTIwMERcXHVEODNEXFx1RENBQik/fFxcdURFMzYoPzpcXHUyMDBEXFx1RDgzQ1xcdURGMkJcXHVGRTBGPyk/fFxcdURFNDIoPzpcXHUyMDBEW1xcdTIxOTRcXHUyMTk1XVxcdUZFMEY/KT98XFx1REVCNig/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSk/KD86XFx1MjAwRCg/OltcXHUyNjQwXFx1MjY0Ml1cXHVGRTBGPyg/OlxcdTIwMERcXHUyN0ExXFx1RkUwRj8pP3xcXHUyN0ExXFx1RkUwRj8pKT8pfFxcdUQ4M0UoPzpbXFx1REQwQ1xcdUREMEZcXHVERDE4LVxcdUREMUZcXHVERDMwLVxcdUREMzRcXHVERDM2XFx1REQ3N1xcdUREQjVcXHVEREI2XFx1RERCQlxcdURERDJcXHVEREQzXFx1RERENVxcdURFQzMtXFx1REVDNVxcdURFRjBcXHVERUYyLVxcdURFRjhdKD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKT98W1xcdUREMjZcXHVERDM1XFx1REQzNy1cXHVERDM5XFx1REQzRFxcdUREM0VcXHVEREI4XFx1RERCOVxcdUREQ0RcXHVERENGXFx1RERENFxcdURERDYtXFx1RERERF0oPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pPyg/OlxcdTIwMERbXFx1MjY0MFxcdTI2NDJdXFx1RkUwRj8pP3xbXFx1RERERVxcdUREREZdKD86XFx1MjAwRFtcXHUyNjQwXFx1MjY0Ml1cXHVGRTBGPyk/fFtcXHVERDBEXFx1REQwRVxcdUREMTAtXFx1REQxN1xcdUREMjAtXFx1REQyNVxcdUREMjctXFx1REQyRlxcdUREM0FcXHVERDNGLVxcdURENDVcXHVERDQ3LVxcdURENzZcXHVERDc4LVxcdUREQjRcXHVEREI3XFx1RERCQVxcdUREQkMtXFx1RERDQ1xcdURERDBcXHVEREUwLVxcdURERkZcXHVERTcwLVxcdURFN0NcXHVERTgwLVxcdURFODlcXHVERThGLVxcdURFQzJcXHVERUM2XFx1REVDRS1cXHVERURDXFx1REVERi1cXHVERUU5XXxcXHVERDNDKD86XFx1MjAwRFtcXHUyNjQwXFx1MjY0Ml1cXHVGRTBGP3xcXHVEODNDW1xcdURGRkItXFx1REZGRl0pP3xcXHVERENFKD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKT8oPzpcXHUyMDBEKD86W1xcdTI2NDBcXHUyNjQyXVxcdUZFMEY/KD86XFx1MjAwRFxcdTI3QTFcXHVGRTBGPyk/fFxcdTI3QTFcXHVGRTBGPykpP3xcXHVEREQxKD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjg0XFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFKD86W1xcdUREQUZcXHVEREJDXFx1RERCRF0oPzpcXHUyMDBEXFx1MjdBMVxcdUZFMEY/KT98W1xcdUREQjAtXFx1RERCM118XFx1REQxRFxcdTIwMERcXHVEODNFXFx1REREMXxcXHVEREQxXFx1MjAwRFxcdUQ4M0VcXHVEREQyKD86XFx1MjAwRFxcdUQ4M0VcXHVEREQyKT98XFx1REREMig/OlxcdTIwMERcXHVEODNFXFx1REREMik/KSl8XFx1RDgzQyg/OlxcdURGRkIoPzpcXHUyMDBEKD86W1xcdTI2OTVcXHUyNjk2XFx1MjcwOF1cXHVGRTBGP3xcXHUyNzY0XFx1RkUwRj9cXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEKT9cXHVEODNFXFx1REREMVxcdUQ4M0NbXFx1REZGQy1cXHVERkZGXXxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGODRcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0UoPzpbXFx1RERBRlxcdUREQkNcXHVEREJEXSg/OlxcdTIwMERcXHUyN0ExXFx1RkUwRj8pP3xbXFx1RERCMC1cXHVEREIzXXxcXHVERDFEXFx1MjAwRFxcdUQ4M0VcXHVEREQxXFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKSkpP3xcXHVERkZDKD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRCg/OlxcdUQ4M0RcXHVEQzhCXFx1MjAwRCk/XFx1RDgzRVxcdURERDFcXHVEODNDW1xcdURGRkJcXHVERkZELVxcdURGRkZdfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRSg/OltcXHVEREFGXFx1RERCQ1xcdUREQkRdKD86XFx1MjAwRFxcdTI3QTFcXHVGRTBGPyk/fFtcXHVEREIwLVxcdUREQjNdfFxcdUREMURcXHUyMDBEXFx1RDgzRVxcdURERDFcXHVEODNDW1xcdURGRkItXFx1REZGRl0pKSk/fFxcdURGRkQoPzpcXHUyMDBEKD86W1xcdTI2OTVcXHUyNjk2XFx1MjcwOF1cXHVGRTBGP3xcXHUyNzY0XFx1RkUwRj9cXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEKT9cXHVEODNFXFx1REREMVxcdUQ4M0NbXFx1REZGQlxcdURGRkNcXHVERkZFXFx1REZGRl18XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjg0XFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFKD86W1xcdUREQUZcXHVEREJDXFx1RERCRF0oPzpcXHUyMDBEXFx1MjdBMVxcdUZFMEY/KT98W1xcdUREQjAtXFx1RERCM118XFx1REQxRFxcdTIwMERcXHVEODNFXFx1REREMVxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSkpKT98XFx1REZGRSg/OlxcdTIwMEQoPzpbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XVxcdUZFMEY/fFxcdTI3NjRcXHVGRTBGP1xcdTIwMEQoPzpcXHVEODNEXFx1REM4QlxcdTIwMEQpP1xcdUQ4M0VcXHVEREQxXFx1RDgzQ1tcXHVERkZCLVxcdURGRkRcXHVERkZGXXxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGODRcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0UoPzpbXFx1RERBRlxcdUREQkNcXHVEREJEXSg/OlxcdTIwMERcXHUyN0ExXFx1RkUwRj8pP3xbXFx1RERCMC1cXHVEREIzXXxcXHVERDFEXFx1MjAwRFxcdUQ4M0VcXHVEREQxXFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKSkpP3xcXHVERkZGKD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRCg/OlxcdUQ4M0RcXHVEQzhCXFx1MjAwRCk/XFx1RDgzRVxcdURERDFcXHVEODNDW1xcdURGRkItXFx1REZGRV18XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjg0XFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFKD86W1xcdUREQUZcXHVEREJDXFx1RERCRF0oPzpcXHUyMDBEXFx1MjdBMVxcdUZFMEY/KT98W1xcdUREQjAtXFx1RERCM118XFx1REQxRFxcdTIwMERcXHVEODNFXFx1REREMVxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSkpKT8pKT98XFx1REVGMSg/OlxcdUQ4M0MoPzpcXHVERkZCKD86XFx1MjAwRFxcdUQ4M0VcXHVERUYyXFx1RDgzQ1tcXHVERkZDLVxcdURGRkZdKT98XFx1REZGQyg/OlxcdTIwMERcXHVEODNFXFx1REVGMlxcdUQ4M0NbXFx1REZGQlxcdURGRkQtXFx1REZGRl0pP3xcXHVERkZEKD86XFx1MjAwRFxcdUQ4M0VcXHVERUYyXFx1RDgzQ1tcXHVERkZCXFx1REZGQ1xcdURGRkVcXHVERkZGXSk/fFxcdURGRkUoPzpcXHUyMDBEXFx1RDgzRVxcdURFRjJcXHVEODNDW1xcdURGRkItXFx1REZGRFxcdURGRkZdKT98XFx1REZGRig/OlxcdTIwMERcXHVEODNFXFx1REVGMlxcdUQ4M0NbXFx1REZGQi1cXHVERkZFXSk/KSk/KS9nO1xufTtcbiIsICJpbXBvcnQgeyBnZXRGaWxlVGl0bGUsIG5vcm1hbGl6ZUhlYWRlckZvckxpbmsgfSBmcm9tIFwidXRpbHMvbm9ybWFsaXplcnNcIjtcblxuLyoqIFRoZSBPYnNpZGlhbiAnbGluaycsIHVzZWQgZm9yIHVuaXF1ZWx5IGRlc2NyaWJpbmcgYSBmaWxlLCBoZWFkZXIsIG9yIGJsb2NrLlxuICogQGdyb3VwIENvbW1vbiBUeXBlc1xuICovXG5leHBvcnQgY2xhc3MgTGluayB7XG4gICAgLyoqIFRoZSBmaWxlIHBhdGggdGhpcyBsaW5rIHBvaW50cyB0by4gKi9cbiAgICBwdWJsaWMgcGF0aDogc3RyaW5nO1xuICAgIC8qKiBUaGUgZGlzcGxheSBuYW1lIGFzc29jaWF0ZWQgd2l0aCB0aGUgbGluay4gKi9cbiAgICBwdWJsaWMgZGlzcGxheT86IHN0cmluZztcbiAgICAvKiogVGhlIGJsb2NrIElEIG9yIGhlYWRlciB0aGlzIGxpbmsgcG9pbnRzIHRvIHdpdGhpbiBhIGZpbGUsIGlmIHJlbGV2YW50LiAqL1xuICAgIHB1YmxpYyBzdWJwYXRoPzogc3RyaW5nO1xuICAgIC8qKiBJcyB0aGlzIGxpbmsgYW4gZW1iZWRkZWQgbGluayAob2YgZm9ybSAnIVtbaGVsbG9dXScpPyAqL1xuICAgIHB1YmxpYyBlbWJlZDogYm9vbGVhbjtcbiAgICAvKiogVGhlIHR5cGUgb2YgdGhpcyBsaW5rLCB3aGljaCBkZXRlcm1pbmVzIHdoYXQgJ3N1YnBhdGgnIHJlZmVycyB0bywgaWYgYW55dGhpbmcuICovXG4gICAgcHVibGljIHR5cGU6IFwiZmlsZVwiIHwgXCJoZWFkZXJcIiB8IFwiYmxvY2tcIjtcblxuICAgIC8qKiBDcmVhdGUgYSBsaW5rIHRvIGEgc3BlY2lmaWMgZmlsZS4gKi9cbiAgICBwdWJsaWMgc3RhdGljIGZpbGUocGF0aDogc3RyaW5nLCBlbWJlZDogYm9vbGVhbiA9IGZhbHNlLCBkaXNwbGF5Pzogc3RyaW5nKTogTGluayB7XG4gICAgICAgIHJldHVybiBuZXcgTGluayh7XG4gICAgICAgICAgICBwYXRoLFxuICAgICAgICAgICAgZW1iZWQsXG4gICAgICAgICAgICBkaXNwbGF5LFxuICAgICAgICAgICAgc3VicGF0aDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgdHlwZTogXCJmaWxlXCIsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBJbmZlciB0aGUgdHlwZSBvZiB0aGUgbGluayBmcm9tIHRoZSBmdWxsIGludGVybmFsIGxpbmsgcGF0aC4gKi9cbiAgICBwdWJsaWMgc3RhdGljIGluZmVyKGxpbmtwYXRoOiBzdHJpbmcsIGVtYmVkOiBib29sZWFuID0gZmFsc2UsIGRpc3BsYXk/OiBzdHJpbmcpOiBMaW5rIHtcbiAgICAgICAgaWYgKGxpbmtwYXRoLmluY2x1ZGVzKFwiI15cIikpIHtcbiAgICAgICAgICAgIGxldCBzcGxpdCA9IGxpbmtwYXRoLnNwbGl0KFwiI15cIik7XG4gICAgICAgICAgICByZXR1cm4gTGluay5ibG9jayhzcGxpdFswXSwgc3BsaXRbMV0sIGVtYmVkLCBkaXNwbGF5KTtcbiAgICAgICAgfSBlbHNlIGlmIChsaW5rcGF0aC5pbmNsdWRlcyhcIiNcIikpIHtcbiAgICAgICAgICAgIGxldCBzcGxpdCA9IGxpbmtwYXRoLnNwbGl0KFwiI1wiKTtcbiAgICAgICAgICAgIHJldHVybiBMaW5rLmhlYWRlcihzcGxpdFswXSwgc3BsaXRbMV0sIGVtYmVkLCBkaXNwbGF5KTtcbiAgICAgICAgfSBlbHNlIHJldHVybiBMaW5rLmZpbGUobGlua3BhdGgsIGVtYmVkLCBkaXNwbGF5KTtcbiAgICB9XG5cbiAgICAvKiogQ3JlYXRlIGEgbGluayB0byBhIHNwZWNpZmljIGZpbGUgYW5kIGhlYWRlciBpbiB0aGF0IGZpbGUuICovXG4gICAgcHVibGljIHN0YXRpYyBoZWFkZXIocGF0aDogc3RyaW5nLCBoZWFkZXI6IHN0cmluZywgZW1iZWQ/OiBib29sZWFuLCBkaXNwbGF5Pzogc3RyaW5nKTogTGluayB7XG4gICAgICAgIC8vIEhlYWRlcnMgbmVlZCB0byBiZSBub3JtYWxpemVkIHRvIGFscGhhLW51bWVyaWMgJiB3aXRoIGV4dHJhIHNwYWNpbmcgcmVtb3ZlZC5cbiAgICAgICAgcmV0dXJuIG5ldyBMaW5rKHtcbiAgICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgICBlbWJlZCxcbiAgICAgICAgICAgIGRpc3BsYXksXG4gICAgICAgICAgICBzdWJwYXRoOiBub3JtYWxpemVIZWFkZXJGb3JMaW5rKGhlYWRlciksXG4gICAgICAgICAgICB0eXBlOiBcImhlYWRlclwiLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQ3JlYXRlIGEgbGluayB0byBhIHNwZWNpZmljIGZpbGUgYW5kIGJsb2NrIGluIHRoYXQgZmlsZS4gKi9cbiAgICBwdWJsaWMgc3RhdGljIGJsb2NrKHBhdGg6IHN0cmluZywgYmxvY2tJZDogc3RyaW5nLCBlbWJlZD86IGJvb2xlYW4sIGRpc3BsYXk/OiBzdHJpbmcpOiBMaW5rIHtcbiAgICAgICAgcmV0dXJuIG5ldyBMaW5rKHtcbiAgICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgICBlbWJlZCxcbiAgICAgICAgICAgIGRpc3BsYXksXG4gICAgICAgICAgICBzdWJwYXRoOiBibG9ja0lkLFxuICAgICAgICAgICAgdHlwZTogXCJibG9ja1wiLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogTG9hZCBhIGxpbmsgZnJvbSBpdCdzIHJhdyBKU09OIHJlcHJlc2VudGF0aW9uLiAqL1xuICAgIHB1YmxpYyBzdGF0aWMgZnJvbU9iamVjdChvYmplY3Q6IEpzb25MaW5rKTogTGluayB7XG4gICAgICAgIHJldHVybiBuZXcgTGluayhvYmplY3QpO1xuICAgIH1cblxuICAgIC8qKiBDcmVhdGUgYSBsaW5rIGJ5IHBhcnNpbmcgaXQncyBpbnRlcmlvciBwYXJ0IChpbnNpZGUgb2YgdGhlICdbW11dJykuICovXG4gICAgcHVibGljIHN0YXRpYyBwYXJzZUlubmVyKHJhd2xpbms6IHN0cmluZyk6IExpbmsge1xuICAgICAgICBsZXQgW2xpbmssIGRpc3BsYXldID0gc3BsaXRPblVuZXNjYXBlZFBpcGUocmF3bGluayk7XG4gICAgICAgIHJldHVybiBMaW5rLmluZmVyKGxpbmssIGZhbHNlLCBkaXNwbGF5KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbnN0cnVjdG9yKGZpZWxkczogUGFydGlhbDxMaW5rPikge1xuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGZpZWxkcyk7XG4gICAgfVxuXG4gICAgLyoqIFVwZGF0ZSB0aGlzIGxpbmsgd2l0aCBhIG5ldyBwYXRoLiAqL1xuICAgIHB1YmxpYyB3aXRoUGF0aChwYXRoOiBzdHJpbmcpOiBMaW5rIHtcbiAgICAgICAgcmV0dXJuIG5ldyBMaW5rKE9iamVjdC5hc3NpZ24oe30sIHRoaXMsIHsgcGF0aCB9KSk7XG4gICAgfVxuXG4gICAgLyoqIFJldHVybiBhIG5ldyBsaW5rIHdoaWNoIHBvaW50cyB0byB0aGUgc2FtZSBsb2NhdGlvbiBidXQgd2l0aCBhIG5ldyBkaXNwbGF5IHZhbHVlLiAqL1xuICAgIHB1YmxpYyB3aXRoRGlzcGxheShkaXNwbGF5Pzogc3RyaW5nKTogTGluayB7XG4gICAgICAgIHJldHVybiBuZXcgTGluayhPYmplY3QuYXNzaWduKHt9LCB0aGlzLCB7IGRpc3BsYXkgfSkpO1xuICAgIH1cblxuICAgIC8qKiBSZXR1cm4gYSBuZXcgbGluayB3aGljaCBoYXMgdGhlIGdpdmVuIGVtYmVkZGVkIHN0YXR1cy4gKi9cbiAgICBwdWJsaWMgd2l0aEVtYmVkKGVtYmVkOiBib29sZWFuKTogTGluayB7XG4gICAgICAgIGlmICh0aGlzLmVtYmVkID09IGVtYmVkKSByZXR1cm4gdGhpcztcblxuICAgICAgICByZXR1cm4gbmV3IExpbmsoT2JqZWN0LmFzc2lnbih7fSwgdGhpcywgeyBlbWJlZCB9KSk7XG4gICAgfVxuXG4gICAgLyoqIENvbnZlcnQgYSBmaWxlIGxpbmsgaW50byBhIGxpbmsgdG8gYSBzcGVjaWZpYyBoZWFkZXIuICovXG4gICAgcHVibGljIHdpdGhIZWFkZXIoaGVhZGVyOiBzdHJpbmcpOiBMaW5rIHtcbiAgICAgICAgcmV0dXJuIExpbmsuaGVhZGVyKHRoaXMucGF0aCwgaGVhZGVyLCB0aGlzLmVtYmVkLCB0aGlzLmRpc3BsYXkpO1xuICAgIH1cblxuICAgIC8qKiBDb252ZXJ0IGEgZmlsZSBsaW5rIGludG8gYSBsaW5rIHRvIGEgc3BlY2lmaWNiIGxvY2suICovXG4gICAgcHVibGljIHdpdGhCbG9jayhibG9jazogc3RyaW5nKTogTGluayB7XG4gICAgICAgIHJldHVybiBMaW5rLmJsb2NrKHRoaXMucGF0aCwgYmxvY2ssIHRoaXMuZW1iZWQsIHRoaXMuZGlzcGxheSk7XG4gICAgfVxuXG4gICAgLyoqIENoZWNrcyBmb3IgbGluayBlcXVhbGl0eSAoaS5lLiwgdGhhdCB0aGUgbGlua3MgYXJlIHBvaW50aW5nIHRvIHRoZSBzYW1lIGV4YWN0IGxvY2F0aW9uKS4gKi9cbiAgICBwdWJsaWMgZXF1YWxzKG90aGVyOiBMaW5rKTogYm9vbGVhbiB7XG4gICAgICAgIGlmIChvdGhlciA9PSB1bmRlZmluZWQgfHwgb3RoZXIgPT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgICAgIHJldHVybiB0aGlzLnBhdGggPT0gb3RoZXIucGF0aCAmJiB0aGlzLnR5cGUgPT0gb3RoZXIudHlwZSAmJiB0aGlzLnN1YnBhdGggPT0gb3RoZXIuc3VicGF0aDtcbiAgICB9XG5cbiAgICAvKiogQ29udmVydCB0aGlzIGxpbmsgdG8gaXQncyBtYXJrZG93biByZXByZXNlbnRhdGlvbi4gKi9cbiAgICBwdWJsaWMgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFya2Rvd24oKTtcbiAgICB9XG5cbiAgICAvKiogQ29udmVydCB0aGlzIGxpbmsgdG8gYSByYXcgb2JqZWN0IHdoaWNoIGlzIHNlcmlhbGl6YXRpb24tZnJpZW5kbHkuICovXG4gICAgcHVibGljIHRvT2JqZWN0KCk6IEpzb25MaW5rIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHBhdGg6IHRoaXMucGF0aCxcbiAgICAgICAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgICAgICAgIHN1YnBhdGg6IHRoaXMuc3VicGF0aCxcbiAgICAgICAgICAgIGRpc3BsYXk6IHRoaXMuZGlzcGxheSxcbiAgICAgICAgICAgIGVtYmVkOiB0aGlzLmVtYmVkLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKiBDb252ZXJ0IGFueSBsaW5rIGludG8gYSBsaW5rIHRvIGl0cyBmaWxlLiAqL1xuICAgIHB1YmxpYyB0b0ZpbGUoKTogTGluayB7XG4gICAgICAgIHJldHVybiBMaW5rLmZpbGUodGhpcy5wYXRoLCB0aGlzLmVtYmVkLCB0aGlzLmRpc3BsYXkpO1xuICAgIH1cblxuICAgIC8qKiBDb252ZXJ0IHRoaXMgbGluayBpbnRvIGFuIGVtYmVkZGVkIGxpbmsuICovXG4gICAgcHVibGljIHRvRW1iZWQoKTogTGluayB7XG4gICAgICAgIHJldHVybiB0aGlzLndpdGhFbWJlZCh0cnVlKTtcbiAgICB9XG5cbiAgICAvKiogQ29udmVydCB0aGlzIGxpbmsgaW50byBhIG5vbi1lbWJlZGRlZCBsaW5rLiAqL1xuICAgIHB1YmxpYyBmcm9tRW1iZWQoKTogTGluayB7XG4gICAgICAgIHJldHVybiB0aGlzLndpdGhFbWJlZChmYWxzZSk7XG4gICAgfVxuXG4gICAgLyoqIENvbnZlcnQgdGhpcyBsaW5rIHRvIG1hcmtkb3duIHNvIGl0IGNhbiBiZSByZW5kZXJlZC4gKi9cbiAgICBwdWJsaWMgbWFya2Rvd24oKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IHJlc3VsdCA9ICh0aGlzLmVtYmVkID8gXCIhXCIgOiBcIlwiKSArIFwiW1tcIiArIHRoaXMub2JzaWRpYW5MaW5rKCk7XG4gICAgICAgIHJlc3VsdCArPSBcInxcIjtcbiAgICAgICAgcmVzdWx0ICs9IHRoaXMuZGlzcGxheU9yRGVmYXVsdCgpO1xuICAgICAgICByZXN1bHQgKz0gXCJdXVwiO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKiBPYnRhaW4gdGhlIGRpc3BsYXkgZm9yIHRoaXMgbGluayBpZiBwcmVzZW50LCBvciByZXR1cm4gYSBzaW1wbGUgZGVmYXVsdCBkaXNwbGF5LiAqL1xuICAgIHB1YmxpYyBkaXNwbGF5T3JEZWZhdWx0KCkge1xuICAgICAgICBpZiAodGhpcy5kaXNwbGF5KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kaXNwbGF5O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGV0IHJlc3VsdCA9IGdldEZpbGVUaXRsZSh0aGlzLnBhdGgpO1xuICAgICAgICAgICAgaWYgKHRoaXMudHlwZSA9PSBcImhlYWRlclwiIHx8IHRoaXMudHlwZSA9PSBcImJsb2NrXCIpIHJlc3VsdCArPSBcIiA+IFwiICsgdGhpcy5zdWJwYXRoO1xuXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIENvbnZlcnQgdGhlIGlubmVyIHBhcnQgb2YgdGhlIGxpbmsgdG8gc29tZXRoaW5nIHRoYXQgT2JzaWRpYW4gY2FuIG9wZW4gLyB1bmRlcnN0YW5kLiAqL1xuICAgIHB1YmxpYyBvYnNpZGlhbkxpbmsoKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZXNjYXBlZCA9IHRoaXMucGF0aC5yZXBsYWNlKFwifFwiLCBcIlxcXFx8XCIpO1xuICAgICAgICBpZiAodGhpcy50eXBlID09IFwiaGVhZGVyXCIpIHJldHVybiBlc2NhcGVkICsgXCIjXCIgKyB0aGlzLnN1YnBhdGg/LnJlcGxhY2UoXCJ8XCIsIFwiXFxcXHxcIik7XG4gICAgICAgIGlmICh0aGlzLnR5cGUgPT0gXCJibG9ja1wiKSByZXR1cm4gZXNjYXBlZCArIFwiI15cIiArIHRoaXMuc3VicGF0aD8ucmVwbGFjZShcInxcIiwgXCJcXFxcfFwiKTtcbiAgICAgICAgZWxzZSByZXR1cm4gZXNjYXBlZDtcbiAgICB9XG5cbiAgICAvKiogVGhlIHN0cmlwcGVkIG5hbWUgb2YgdGhlIGZpbGUgdGhpcyBsaW5rIHBvaW50cyB0by4gKi9cbiAgICBwdWJsaWMgZmlsZU5hbWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGdldEZpbGVUaXRsZSh0aGlzLnBhdGgpO1xuICAgIH1cbn1cblxuLyoqIFNlcmlhbGl6ZWQgZm9ybSBvZiBhIGxpbmsuXG4gKiBAaGlkZGVuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSnNvbkxpbmsge1xuICAgIC8qKiBUaGUgZmlsZSBwYXRoIHRoaXMgbGluayBwb2ludHMgdG8uICovXG4gICAgcGF0aDogc3RyaW5nO1xuICAgIC8qKiBUaGUgZGlzcGxheSBuYW1lIGFzc29jaWF0ZWQgd2l0aCB0aGUgbGluay4gKi9cbiAgICBkaXNwbGF5Pzogc3RyaW5nO1xuICAgIC8qKiBUaGUgYmxvY2sgSUQgb3IgaGVhZGVyIHRoaXMgbGluayBwb2ludHMgdG8gd2l0aGluIGEgZmlsZSwgaWYgcmVsZXZhbnQuICovXG4gICAgc3VicGF0aD86IHN0cmluZztcbiAgICAvKiogSXMgdGhpcyBsaW5rIGFuIGVtYmVkZGVkIGxpbmsgKG9mIGZvcm0gJyFbW2hlbGxvXV0nKT8gKi9cbiAgICBlbWJlZDogYm9vbGVhbjtcbiAgICAvKiogVGhlIHR5cGUgb2YgdGhpcyBsaW5rLCB3aGljaCBkZXRlcm1pbmVzIHdoYXQgJ3N1YnBhdGgnIHJlZmVycyB0bywgaWYgYW55dGhpbmcuICovXG4gICAgdHlwZTogXCJmaWxlXCIgfCBcImhlYWRlclwiIHwgXCJibG9ja1wiO1xufVxuXG4vKiogU3BsaXQgb24gdW5lc2NhcGVkIHBpcGVzIGluIGFuIGlubmVyIGxpbmsuXG4gKiBAaGlkZGVuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzcGxpdE9uVW5lc2NhcGVkUGlwZShsaW5rOiBzdHJpbmcpOiBbc3RyaW5nLCBzdHJpbmcgfCB1bmRlZmluZWRdIHtcbiAgICBsZXQgcGlwZSA9IC0xO1xuICAgIHdoaWxlICgocGlwZSA9IGxpbmsuaW5kZXhPZihcInxcIiwgcGlwZSArIDEpKSA+PSAwKSB7XG4gICAgICAgIGlmIChwaXBlID4gMCAmJiBsaW5rW3BpcGUgLSAxXSA9PSBcIlxcXFxcIikgY29udGludWU7XG4gICAgICAgIHJldHVybiBbbGluay5zdWJzdHJpbmcoMCwgcGlwZSkucmVwbGFjZSgvXFxcXFxcfC9nLCBcInxcIiksIGxpbmsuc3Vic3RyaW5nKHBpcGUgKyAxKV07XG4gICAgfVxuXG4gICAgcmV0dXJuIFtsaW5rLnJlcGxhY2UoL1xcXFxcXHwvZywgXCJ8XCIpLCB1bmRlZmluZWRdO1xufVxuIiwgImNvbnN0IEFMSUFTID0gU3ltYm9sLmZvcigneWFtbC5hbGlhcycpO1xuY29uc3QgRE9DID0gU3ltYm9sLmZvcigneWFtbC5kb2N1bWVudCcpO1xuY29uc3QgTUFQID0gU3ltYm9sLmZvcigneWFtbC5tYXAnKTtcbmNvbnN0IFBBSVIgPSBTeW1ib2wuZm9yKCd5YW1sLnBhaXInKTtcbmNvbnN0IFNDQUxBUiA9IFN5bWJvbC5mb3IoJ3lhbWwuc2NhbGFyJyk7XG5jb25zdCBTRVEgPSBTeW1ib2wuZm9yKCd5YW1sLnNlcScpO1xuY29uc3QgTk9ERV9UWVBFID0gU3ltYm9sLmZvcigneWFtbC5ub2RlLnR5cGUnKTtcbmNvbnN0IGlzQWxpYXMgPSAobm9kZSkgPT4gISFub2RlICYmIHR5cGVvZiBub2RlID09PSAnb2JqZWN0JyAmJiBub2RlW05PREVfVFlQRV0gPT09IEFMSUFTO1xuY29uc3QgaXNEb2N1bWVudCA9IChub2RlKSA9PiAhIW5vZGUgJiYgdHlwZW9mIG5vZGUgPT09ICdvYmplY3QnICYmIG5vZGVbTk9ERV9UWVBFXSA9PT0gRE9DO1xuY29uc3QgaXNNYXAgPSAobm9kZSkgPT4gISFub2RlICYmIHR5cGVvZiBub2RlID09PSAnb2JqZWN0JyAmJiBub2RlW05PREVfVFlQRV0gPT09IE1BUDtcbmNvbnN0IGlzUGFpciA9IChub2RlKSA9PiAhIW5vZGUgJiYgdHlwZW9mIG5vZGUgPT09ICdvYmplY3QnICYmIG5vZGVbTk9ERV9UWVBFXSA9PT0gUEFJUjtcbmNvbnN0IGlzU2NhbGFyID0gKG5vZGUpID0+ICEhbm9kZSAmJiB0eXBlb2Ygbm9kZSA9PT0gJ29iamVjdCcgJiYgbm9kZVtOT0RFX1RZUEVdID09PSBTQ0FMQVI7XG5jb25zdCBpc1NlcSA9IChub2RlKSA9PiAhIW5vZGUgJiYgdHlwZW9mIG5vZGUgPT09ICdvYmplY3QnICYmIG5vZGVbTk9ERV9UWVBFXSA9PT0gU0VRO1xuZnVuY3Rpb24gaXNDb2xsZWN0aW9uKG5vZGUpIHtcbiAgICBpZiAobm9kZSAmJiB0eXBlb2Ygbm9kZSA9PT0gJ29iamVjdCcpXG4gICAgICAgIHN3aXRjaCAobm9kZVtOT0RFX1RZUEVdKSB7XG4gICAgICAgICAgICBjYXNlIE1BUDpcbiAgICAgICAgICAgIGNhc2UgU0VROlxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuZnVuY3Rpb24gaXNOb2RlKG5vZGUpIHtcbiAgICBpZiAobm9kZSAmJiB0eXBlb2Ygbm9kZSA9PT0gJ29iamVjdCcpXG4gICAgICAgIHN3aXRjaCAobm9kZVtOT0RFX1RZUEVdKSB7XG4gICAgICAgICAgICBjYXNlIEFMSUFTOlxuICAgICAgICAgICAgY2FzZSBNQVA6XG4gICAgICAgICAgICBjYXNlIFNDQUxBUjpcbiAgICAgICAgICAgIGNhc2UgU0VROlxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuY29uc3QgaGFzQW5jaG9yID0gKG5vZGUpID0+IChpc1NjYWxhcihub2RlKSB8fCBpc0NvbGxlY3Rpb24obm9kZSkpICYmICEhbm9kZS5hbmNob3I7XG5cbmV4cG9ydCB7IEFMSUFTLCBET0MsIE1BUCwgTk9ERV9UWVBFLCBQQUlSLCBTQ0FMQVIsIFNFUSwgaGFzQW5jaG9yLCBpc0FsaWFzLCBpc0NvbGxlY3Rpb24sIGlzRG9jdW1lbnQsIGlzTWFwLCBpc05vZGUsIGlzUGFpciwgaXNTY2FsYXIsIGlzU2VxIH07XG4iLCAiaW1wb3J0IHsgaXNEb2N1bWVudCwgaXNOb2RlLCBpc1BhaXIsIGlzQ29sbGVjdGlvbiwgaXNNYXAsIGlzU2VxLCBpc1NjYWxhciwgaXNBbGlhcyB9IGZyb20gJy4vbm9kZXMvaWRlbnRpdHkuanMnO1xuXG5jb25zdCBCUkVBSyA9IFN5bWJvbCgnYnJlYWsgdmlzaXQnKTtcbmNvbnN0IFNLSVAgPSBTeW1ib2woJ3NraXAgY2hpbGRyZW4nKTtcbmNvbnN0IFJFTU9WRSA9IFN5bWJvbCgncmVtb3ZlIG5vZGUnKTtcbi8qKlxuICogQXBwbHkgYSB2aXNpdG9yIHRvIGFuIEFTVCBub2RlIG9yIGRvY3VtZW50LlxuICpcbiAqIFdhbGtzIHRocm91Z2ggdGhlIHRyZWUgKGRlcHRoLWZpcnN0KSBzdGFydGluZyBmcm9tIGBub2RlYCwgY2FsbGluZyBhXG4gKiBgdmlzaXRvcmAgZnVuY3Rpb24gd2l0aCB0aHJlZSBhcmd1bWVudHM6XG4gKiAgIC0gYGtleWA6IEZvciBzZXF1ZW5jZSB2YWx1ZXMgYW5kIG1hcCBgUGFpcmAsIHRoZSBub2RlJ3MgaW5kZXggaW4gdGhlXG4gKiAgICAgY29sbGVjdGlvbi4gV2l0aGluIGEgYFBhaXJgLCBgJ2tleSdgIG9yIGAndmFsdWUnYCwgY29ycmVzcG9uZGluZ2x5LlxuICogICAgIGBudWxsYCBmb3IgdGhlIHJvb3Qgbm9kZS5cbiAqICAgLSBgbm9kZWA6IFRoZSBjdXJyZW50IG5vZGUuXG4gKiAgIC0gYHBhdGhgOiBUaGUgYW5jZXN0cnkgb2YgdGhlIGN1cnJlbnQgbm9kZS5cbiAqXG4gKiBUaGUgcmV0dXJuIHZhbHVlIG9mIHRoZSB2aXNpdG9yIG1heSBiZSB1c2VkIHRvIGNvbnRyb2wgdGhlIHRyYXZlcnNhbDpcbiAqICAgLSBgdW5kZWZpbmVkYCAoZGVmYXVsdCk6IERvIG5vdGhpbmcgYW5kIGNvbnRpbnVlXG4gKiAgIC0gYHZpc2l0LlNLSVBgOiBEbyBub3QgdmlzaXQgdGhlIGNoaWxkcmVuIG9mIHRoaXMgbm9kZSwgY29udGludWUgd2l0aCBuZXh0XG4gKiAgICAgc2libGluZ1xuICogICAtIGB2aXNpdC5CUkVBS2A6IFRlcm1pbmF0ZSB0cmF2ZXJzYWwgY29tcGxldGVseVxuICogICAtIGB2aXNpdC5SRU1PVkVgOiBSZW1vdmUgdGhlIGN1cnJlbnQgbm9kZSwgdGhlbiBjb250aW51ZSB3aXRoIHRoZSBuZXh0IG9uZVxuICogICAtIGBOb2RlYDogUmVwbGFjZSB0aGUgY3VycmVudCBub2RlLCB0aGVuIGNvbnRpbnVlIGJ5IHZpc2l0aW5nIGl0XG4gKiAgIC0gYG51bWJlcmA6IFdoaWxlIGl0ZXJhdGluZyB0aGUgaXRlbXMgb2YgYSBzZXF1ZW5jZSBvciBtYXAsIHNldCB0aGUgaW5kZXhcbiAqICAgICBvZiB0aGUgbmV4dCBzdGVwLiBUaGlzIGlzIHVzZWZ1bCBlc3BlY2lhbGx5IGlmIHRoZSBpbmRleCBvZiB0aGUgY3VycmVudFxuICogICAgIG5vZGUgaGFzIGNoYW5nZWQuXG4gKlxuICogSWYgYHZpc2l0b3JgIGlzIGEgc2luZ2xlIGZ1bmN0aW9uLCBpdCB3aWxsIGJlIGNhbGxlZCB3aXRoIGFsbCB2YWx1ZXNcbiAqIGVuY291bnRlcmVkIGluIHRoZSB0cmVlLCBpbmNsdWRpbmcgZS5nLiBgbnVsbGAgdmFsdWVzLiBBbHRlcm5hdGl2ZWx5LFxuICogc2VwYXJhdGUgdmlzaXRvciBmdW5jdGlvbnMgbWF5IGJlIGRlZmluZWQgZm9yIGVhY2ggYE1hcGAsIGBQYWlyYCwgYFNlcWAsXG4gKiBgQWxpYXNgIGFuZCBgU2NhbGFyYCBub2RlLiBUbyBkZWZpbmUgdGhlIHNhbWUgdmlzaXRvciBmdW5jdGlvbiBmb3IgbW9yZSB0aGFuXG4gKiBvbmUgbm9kZSB0eXBlLCB1c2UgdGhlIGBDb2xsZWN0aW9uYCAobWFwIGFuZCBzZXEpLCBgVmFsdWVgIChtYXAsIHNlcSAmIHNjYWxhcilcbiAqIGFuZCBgTm9kZWAgKGFsaWFzLCBtYXAsIHNlcSAmIHNjYWxhcikgdGFyZ2V0cy4gT2YgYWxsIHRoZXNlLCBvbmx5IHRoZSBtb3N0XG4gKiBzcGVjaWZpYyBkZWZpbmVkIG9uZSB3aWxsIGJlIHVzZWQgZm9yIGVhY2ggbm9kZS5cbiAqL1xuZnVuY3Rpb24gdmlzaXQobm9kZSwgdmlzaXRvcikge1xuICAgIGNvbnN0IHZpc2l0b3JfID0gaW5pdFZpc2l0b3IodmlzaXRvcik7XG4gICAgaWYgKGlzRG9jdW1lbnQobm9kZSkpIHtcbiAgICAgICAgY29uc3QgY2QgPSB2aXNpdF8obnVsbCwgbm9kZS5jb250ZW50cywgdmlzaXRvcl8sIE9iamVjdC5mcmVlemUoW25vZGVdKSk7XG4gICAgICAgIGlmIChjZCA9PT0gUkVNT1ZFKVxuICAgICAgICAgICAgbm9kZS5jb250ZW50cyA9IG51bGw7XG4gICAgfVxuICAgIGVsc2VcbiAgICAgICAgdmlzaXRfKG51bGwsIG5vZGUsIHZpc2l0b3JfLCBPYmplY3QuZnJlZXplKFtdKSk7XG59XG4vLyBXaXRob3V0IHRoZSBgYXMgc3ltYm9sYCBjYXN0cywgVFMgZGVjbGFyZXMgdGhlc2UgaW4gdGhlIGB2aXNpdGBcbi8vIG5hbWVzcGFjZSB1c2luZyBgdmFyYCwgYnV0IHRoZW4gY29tcGxhaW5zIGFib3V0IHRoYXQgYmVjYXVzZVxuLy8gYHVuaXF1ZSBzeW1ib2xgIG11c3QgYmUgYGNvbnN0YC5cbi8qKiBUZXJtaW5hdGUgdmlzaXQgdHJhdmVyc2FsIGNvbXBsZXRlbHkgKi9cbnZpc2l0LkJSRUFLID0gQlJFQUs7XG4vKiogRG8gbm90IHZpc2l0IHRoZSBjaGlsZHJlbiBvZiB0aGUgY3VycmVudCBub2RlICovXG52aXNpdC5TS0lQID0gU0tJUDtcbi8qKiBSZW1vdmUgdGhlIGN1cnJlbnQgbm9kZSAqL1xudmlzaXQuUkVNT1ZFID0gUkVNT1ZFO1xuZnVuY3Rpb24gdmlzaXRfKGtleSwgbm9kZSwgdmlzaXRvciwgcGF0aCkge1xuICAgIGNvbnN0IGN0cmwgPSBjYWxsVmlzaXRvcihrZXksIG5vZGUsIHZpc2l0b3IsIHBhdGgpO1xuICAgIGlmIChpc05vZGUoY3RybCkgfHwgaXNQYWlyKGN0cmwpKSB7XG4gICAgICAgIHJlcGxhY2VOb2RlKGtleSwgcGF0aCwgY3RybCk7XG4gICAgICAgIHJldHVybiB2aXNpdF8oa2V5LCBjdHJsLCB2aXNpdG9yLCBwYXRoKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBjdHJsICE9PSAnc3ltYm9sJykge1xuICAgICAgICBpZiAoaXNDb2xsZWN0aW9uKG5vZGUpKSB7XG4gICAgICAgICAgICBwYXRoID0gT2JqZWN0LmZyZWV6ZShwYXRoLmNvbmNhdChub2RlKSk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGUuaXRlbXMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjaSA9IHZpc2l0XyhpLCBub2RlLml0ZW1zW2ldLCB2aXNpdG9yLCBwYXRoKTtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGNpID09PSAnbnVtYmVyJylcbiAgICAgICAgICAgICAgICAgICAgaSA9IGNpIC0gMTtcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChjaSA9PT0gQlJFQUspXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBCUkVBSztcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChjaSA9PT0gUkVNT1ZFKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGUuaXRlbXMuc3BsaWNlKGksIDEpO1xuICAgICAgICAgICAgICAgICAgICBpIC09IDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGlzUGFpcihub2RlKSkge1xuICAgICAgICAgICAgcGF0aCA9IE9iamVjdC5mcmVlemUocGF0aC5jb25jYXQobm9kZSkpO1xuICAgICAgICAgICAgY29uc3QgY2sgPSB2aXNpdF8oJ2tleScsIG5vZGUua2V5LCB2aXNpdG9yLCBwYXRoKTtcbiAgICAgICAgICAgIGlmIChjayA9PT0gQlJFQUspXG4gICAgICAgICAgICAgICAgcmV0dXJuIEJSRUFLO1xuICAgICAgICAgICAgZWxzZSBpZiAoY2sgPT09IFJFTU9WRSlcbiAgICAgICAgICAgICAgICBub2RlLmtleSA9IG51bGw7XG4gICAgICAgICAgICBjb25zdCBjdiA9IHZpc2l0XygndmFsdWUnLCBub2RlLnZhbHVlLCB2aXNpdG9yLCBwYXRoKTtcbiAgICAgICAgICAgIGlmIChjdiA9PT0gQlJFQUspXG4gICAgICAgICAgICAgICAgcmV0dXJuIEJSRUFLO1xuICAgICAgICAgICAgZWxzZSBpZiAoY3YgPT09IFJFTU9WRSlcbiAgICAgICAgICAgICAgICBub2RlLnZhbHVlID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY3RybDtcbn1cbi8qKlxuICogQXBwbHkgYW4gYXN5bmMgdmlzaXRvciB0byBhbiBBU1Qgbm9kZSBvciBkb2N1bWVudC5cbiAqXG4gKiBXYWxrcyB0aHJvdWdoIHRoZSB0cmVlIChkZXB0aC1maXJzdCkgc3RhcnRpbmcgZnJvbSBgbm9kZWAsIGNhbGxpbmcgYVxuICogYHZpc2l0b3JgIGZ1bmN0aW9uIHdpdGggdGhyZWUgYXJndW1lbnRzOlxuICogICAtIGBrZXlgOiBGb3Igc2VxdWVuY2UgdmFsdWVzIGFuZCBtYXAgYFBhaXJgLCB0aGUgbm9kZSdzIGluZGV4IGluIHRoZVxuICogICAgIGNvbGxlY3Rpb24uIFdpdGhpbiBhIGBQYWlyYCwgYCdrZXknYCBvciBgJ3ZhbHVlJ2AsIGNvcnJlc3BvbmRpbmdseS5cbiAqICAgICBgbnVsbGAgZm9yIHRoZSByb290IG5vZGUuXG4gKiAgIC0gYG5vZGVgOiBUaGUgY3VycmVudCBub2RlLlxuICogICAtIGBwYXRoYDogVGhlIGFuY2VzdHJ5IG9mIHRoZSBjdXJyZW50IG5vZGUuXG4gKlxuICogVGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgdmlzaXRvciBtYXkgYmUgdXNlZCB0byBjb250cm9sIHRoZSB0cmF2ZXJzYWw6XG4gKiAgIC0gYFByb21pc2VgOiBNdXN0IHJlc29sdmUgdG8gb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzXG4gKiAgIC0gYHVuZGVmaW5lZGAgKGRlZmF1bHQpOiBEbyBub3RoaW5nIGFuZCBjb250aW51ZVxuICogICAtIGB2aXNpdC5TS0lQYDogRG8gbm90IHZpc2l0IHRoZSBjaGlsZHJlbiBvZiB0aGlzIG5vZGUsIGNvbnRpbnVlIHdpdGggbmV4dFxuICogICAgIHNpYmxpbmdcbiAqICAgLSBgdmlzaXQuQlJFQUtgOiBUZXJtaW5hdGUgdHJhdmVyc2FsIGNvbXBsZXRlbHlcbiAqICAgLSBgdmlzaXQuUkVNT1ZFYDogUmVtb3ZlIHRoZSBjdXJyZW50IG5vZGUsIHRoZW4gY29udGludWUgd2l0aCB0aGUgbmV4dCBvbmVcbiAqICAgLSBgTm9kZWA6IFJlcGxhY2UgdGhlIGN1cnJlbnQgbm9kZSwgdGhlbiBjb250aW51ZSBieSB2aXNpdGluZyBpdFxuICogICAtIGBudW1iZXJgOiBXaGlsZSBpdGVyYXRpbmcgdGhlIGl0ZW1zIG9mIGEgc2VxdWVuY2Ugb3IgbWFwLCBzZXQgdGhlIGluZGV4XG4gKiAgICAgb2YgdGhlIG5leHQgc3RlcC4gVGhpcyBpcyB1c2VmdWwgZXNwZWNpYWxseSBpZiB0aGUgaW5kZXggb2YgdGhlIGN1cnJlbnRcbiAqICAgICBub2RlIGhhcyBjaGFuZ2VkLlxuICpcbiAqIElmIGB2aXNpdG9yYCBpcyBhIHNpbmdsZSBmdW5jdGlvbiwgaXQgd2lsbCBiZSBjYWxsZWQgd2l0aCBhbGwgdmFsdWVzXG4gKiBlbmNvdW50ZXJlZCBpbiB0aGUgdHJlZSwgaW5jbHVkaW5nIGUuZy4gYG51bGxgIHZhbHVlcy4gQWx0ZXJuYXRpdmVseSxcbiAqIHNlcGFyYXRlIHZpc2l0b3IgZnVuY3Rpb25zIG1heSBiZSBkZWZpbmVkIGZvciBlYWNoIGBNYXBgLCBgUGFpcmAsIGBTZXFgLFxuICogYEFsaWFzYCBhbmQgYFNjYWxhcmAgbm9kZS4gVG8gZGVmaW5lIHRoZSBzYW1lIHZpc2l0b3IgZnVuY3Rpb24gZm9yIG1vcmUgdGhhblxuICogb25lIG5vZGUgdHlwZSwgdXNlIHRoZSBgQ29sbGVjdGlvbmAgKG1hcCBhbmQgc2VxKSwgYFZhbHVlYCAobWFwLCBzZXEgJiBzY2FsYXIpXG4gKiBhbmQgYE5vZGVgIChhbGlhcywgbWFwLCBzZXEgJiBzY2FsYXIpIHRhcmdldHMuIE9mIGFsbCB0aGVzZSwgb25seSB0aGUgbW9zdFxuICogc3BlY2lmaWMgZGVmaW5lZCBvbmUgd2lsbCBiZSB1c2VkIGZvciBlYWNoIG5vZGUuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHZpc2l0QXN5bmMobm9kZSwgdmlzaXRvcikge1xuICAgIGNvbnN0IHZpc2l0b3JfID0gaW5pdFZpc2l0b3IodmlzaXRvcik7XG4gICAgaWYgKGlzRG9jdW1lbnQobm9kZSkpIHtcbiAgICAgICAgY29uc3QgY2QgPSBhd2FpdCB2aXNpdEFzeW5jXyhudWxsLCBub2RlLmNvbnRlbnRzLCB2aXNpdG9yXywgT2JqZWN0LmZyZWV6ZShbbm9kZV0pKTtcbiAgICAgICAgaWYgKGNkID09PSBSRU1PVkUpXG4gICAgICAgICAgICBub2RlLmNvbnRlbnRzID0gbnVsbDtcbiAgICB9XG4gICAgZWxzZVxuICAgICAgICBhd2FpdCB2aXNpdEFzeW5jXyhudWxsLCBub2RlLCB2aXNpdG9yXywgT2JqZWN0LmZyZWV6ZShbXSkpO1xufVxuLy8gV2l0aG91dCB0aGUgYGFzIHN5bWJvbGAgY2FzdHMsIFRTIGRlY2xhcmVzIHRoZXNlIGluIHRoZSBgdmlzaXRgXG4vLyBuYW1lc3BhY2UgdXNpbmcgYHZhcmAsIGJ1dCB0aGVuIGNvbXBsYWlucyBhYm91dCB0aGF0IGJlY2F1c2Vcbi8vIGB1bmlxdWUgc3ltYm9sYCBtdXN0IGJlIGBjb25zdGAuXG4vKiogVGVybWluYXRlIHZpc2l0IHRyYXZlcnNhbCBjb21wbGV0ZWx5ICovXG52aXNpdEFzeW5jLkJSRUFLID0gQlJFQUs7XG4vKiogRG8gbm90IHZpc2l0IHRoZSBjaGlsZHJlbiBvZiB0aGUgY3VycmVudCBub2RlICovXG52aXNpdEFzeW5jLlNLSVAgPSBTS0lQO1xuLyoqIFJlbW92ZSB0aGUgY3VycmVudCBub2RlICovXG52aXNpdEFzeW5jLlJFTU9WRSA9IFJFTU9WRTtcbmFzeW5jIGZ1bmN0aW9uIHZpc2l0QXN5bmNfKGtleSwgbm9kZSwgdmlzaXRvciwgcGF0aCkge1xuICAgIGNvbnN0IGN0cmwgPSBhd2FpdCBjYWxsVmlzaXRvcihrZXksIG5vZGUsIHZpc2l0b3IsIHBhdGgpO1xuICAgIGlmIChpc05vZGUoY3RybCkgfHwgaXNQYWlyKGN0cmwpKSB7XG4gICAgICAgIHJlcGxhY2VOb2RlKGtleSwgcGF0aCwgY3RybCk7XG4gICAgICAgIHJldHVybiB2aXNpdEFzeW5jXyhrZXksIGN0cmwsIHZpc2l0b3IsIHBhdGgpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGN0cmwgIT09ICdzeW1ib2wnKSB7XG4gICAgICAgIGlmIChpc0NvbGxlY3Rpb24obm9kZSkpIHtcbiAgICAgICAgICAgIHBhdGggPSBPYmplY3QuZnJlZXplKHBhdGguY29uY2F0KG5vZGUpKTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZS5pdGVtcy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNpID0gYXdhaXQgdmlzaXRBc3luY18oaSwgbm9kZS5pdGVtc1tpXSwgdmlzaXRvciwgcGF0aCk7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjaSA9PT0gJ251bWJlcicpXG4gICAgICAgICAgICAgICAgICAgIGkgPSBjaSAtIDE7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoY2kgPT09IEJSRUFLKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gQlJFQUs7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoY2kgPT09IFJFTU9WRSkge1xuICAgICAgICAgICAgICAgICAgICBub2RlLml0ZW1zLnNwbGljZShpLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgaSAtPSAxO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpc1BhaXIobm9kZSkpIHtcbiAgICAgICAgICAgIHBhdGggPSBPYmplY3QuZnJlZXplKHBhdGguY29uY2F0KG5vZGUpKTtcbiAgICAgICAgICAgIGNvbnN0IGNrID0gYXdhaXQgdmlzaXRBc3luY18oJ2tleScsIG5vZGUua2V5LCB2aXNpdG9yLCBwYXRoKTtcbiAgICAgICAgICAgIGlmIChjayA9PT0gQlJFQUspXG4gICAgICAgICAgICAgICAgcmV0dXJuIEJSRUFLO1xuICAgICAgICAgICAgZWxzZSBpZiAoY2sgPT09IFJFTU9WRSlcbiAgICAgICAgICAgICAgICBub2RlLmtleSA9IG51bGw7XG4gICAgICAgICAgICBjb25zdCBjdiA9IGF3YWl0IHZpc2l0QXN5bmNfKCd2YWx1ZScsIG5vZGUudmFsdWUsIHZpc2l0b3IsIHBhdGgpO1xuICAgICAgICAgICAgaWYgKGN2ID09PSBCUkVBSylcbiAgICAgICAgICAgICAgICByZXR1cm4gQlJFQUs7XG4gICAgICAgICAgICBlbHNlIGlmIChjdiA9PT0gUkVNT1ZFKVxuICAgICAgICAgICAgICAgIG5vZGUudmFsdWUgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjdHJsO1xufVxuZnVuY3Rpb24gaW5pdFZpc2l0b3IodmlzaXRvcikge1xuICAgIGlmICh0eXBlb2YgdmlzaXRvciA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgKHZpc2l0b3IuQ29sbGVjdGlvbiB8fCB2aXNpdG9yLk5vZGUgfHwgdmlzaXRvci5WYWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe1xuICAgICAgICAgICAgQWxpYXM6IHZpc2l0b3IuTm9kZSxcbiAgICAgICAgICAgIE1hcDogdmlzaXRvci5Ob2RlLFxuICAgICAgICAgICAgU2NhbGFyOiB2aXNpdG9yLk5vZGUsXG4gICAgICAgICAgICBTZXE6IHZpc2l0b3IuTm9kZVxuICAgICAgICB9LCB2aXNpdG9yLlZhbHVlICYmIHtcbiAgICAgICAgICAgIE1hcDogdmlzaXRvci5WYWx1ZSxcbiAgICAgICAgICAgIFNjYWxhcjogdmlzaXRvci5WYWx1ZSxcbiAgICAgICAgICAgIFNlcTogdmlzaXRvci5WYWx1ZVxuICAgICAgICB9LCB2aXNpdG9yLkNvbGxlY3Rpb24gJiYge1xuICAgICAgICAgICAgTWFwOiB2aXNpdG9yLkNvbGxlY3Rpb24sXG4gICAgICAgICAgICBTZXE6IHZpc2l0b3IuQ29sbGVjdGlvblxuICAgICAgICB9LCB2aXNpdG9yKTtcbiAgICB9XG4gICAgcmV0dXJuIHZpc2l0b3I7XG59XG5mdW5jdGlvbiBjYWxsVmlzaXRvcihrZXksIG5vZGUsIHZpc2l0b3IsIHBhdGgpIHtcbiAgICBpZiAodHlwZW9mIHZpc2l0b3IgPT09ICdmdW5jdGlvbicpXG4gICAgICAgIHJldHVybiB2aXNpdG9yKGtleSwgbm9kZSwgcGF0aCk7XG4gICAgaWYgKGlzTWFwKG5vZGUpKVxuICAgICAgICByZXR1cm4gdmlzaXRvci5NYXA/LihrZXksIG5vZGUsIHBhdGgpO1xuICAgIGlmIChpc1NlcShub2RlKSlcbiAgICAgICAgcmV0dXJuIHZpc2l0b3IuU2VxPy4oa2V5LCBub2RlLCBwYXRoKTtcbiAgICBpZiAoaXNQYWlyKG5vZGUpKVxuICAgICAgICByZXR1cm4gdmlzaXRvci5QYWlyPy4oa2V5LCBub2RlLCBwYXRoKTtcbiAgICBpZiAoaXNTY2FsYXIobm9kZSkpXG4gICAgICAgIHJldHVybiB2aXNpdG9yLlNjYWxhcj8uKGtleSwgbm9kZSwgcGF0aCk7XG4gICAgaWYgKGlzQWxpYXMobm9kZSkpXG4gICAgICAgIHJldHVybiB2aXNpdG9yLkFsaWFzPy4oa2V5LCBub2RlLCBwYXRoKTtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xufVxuZnVuY3Rpb24gcmVwbGFjZU5vZGUoa2V5LCBwYXRoLCBub2RlKSB7XG4gICAgY29uc3QgcGFyZW50ID0gcGF0aFtwYXRoLmxlbmd0aCAtIDFdO1xuICAgIGlmIChpc0NvbGxlY3Rpb24ocGFyZW50KSkge1xuICAgICAgICBwYXJlbnQuaXRlbXNba2V5XSA9IG5vZGU7XG4gICAgfVxuICAgIGVsc2UgaWYgKGlzUGFpcihwYXJlbnQpKSB7XG4gICAgICAgIGlmIChrZXkgPT09ICdrZXknKVxuICAgICAgICAgICAgcGFyZW50LmtleSA9IG5vZGU7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHBhcmVudC52YWx1ZSA9IG5vZGU7XG4gICAgfVxuICAgIGVsc2UgaWYgKGlzRG9jdW1lbnQocGFyZW50KSkge1xuICAgICAgICBwYXJlbnQuY29udGVudHMgPSBub2RlO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgY29uc3QgcHQgPSBpc0FsaWFzKHBhcmVudCkgPyAnYWxpYXMnIDogJ3NjYWxhcic7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IHJlcGxhY2Ugbm9kZSB3aXRoICR7cHR9IHBhcmVudGApO1xuICAgIH1cbn1cblxuZXhwb3J0IHsgdmlzaXQsIHZpc2l0QXN5bmMgfTtcbiIsICJpbXBvcnQgeyBpc05vZGUgfSBmcm9tICcuLi9ub2Rlcy9pZGVudGl0eS5qcyc7XG5pbXBvcnQgeyB2aXNpdCB9IGZyb20gJy4uL3Zpc2l0LmpzJztcblxuY29uc3QgZXNjYXBlQ2hhcnMgPSB7XG4gICAgJyEnOiAnJTIxJyxcbiAgICAnLCc6ICclMkMnLFxuICAgICdbJzogJyU1QicsXG4gICAgJ10nOiAnJTVEJyxcbiAgICAneyc6ICclN0InLFxuICAgICd9JzogJyU3RCdcbn07XG5jb25zdCBlc2NhcGVUYWdOYW1lID0gKHRuKSA9PiB0bi5yZXBsYWNlKC9bISxbXFxde31dL2csIGNoID0+IGVzY2FwZUNoYXJzW2NoXSk7XG5jbGFzcyBEaXJlY3RpdmVzIHtcbiAgICBjb25zdHJ1Y3Rvcih5YW1sLCB0YWdzKSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUaGUgZGlyZWN0aXZlcy1lbmQvZG9jLXN0YXJ0IG1hcmtlciBgLS0tYC4gSWYgYG51bGxgLCBhIG1hcmtlciBtYXkgc3RpbGwgYmVcbiAgICAgICAgICogaW5jbHVkZWQgaW4gdGhlIGRvY3VtZW50J3Mgc3RyaW5naWZpZWQgcmVwcmVzZW50YXRpb24uXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLmRvY1N0YXJ0ID0gbnVsbDtcbiAgICAgICAgLyoqIFRoZSBkb2MtZW5kIG1hcmtlciBgLi4uYC4gICovXG4gICAgICAgIHRoaXMuZG9jRW5kID0gZmFsc2U7XG4gICAgICAgIHRoaXMueWFtbCA9IE9iamVjdC5hc3NpZ24oe30sIERpcmVjdGl2ZXMuZGVmYXVsdFlhbWwsIHlhbWwpO1xuICAgICAgICB0aGlzLnRhZ3MgPSBPYmplY3QuYXNzaWduKHt9LCBEaXJlY3RpdmVzLmRlZmF1bHRUYWdzLCB0YWdzKTtcbiAgICB9XG4gICAgY2xvbmUoKSB7XG4gICAgICAgIGNvbnN0IGNvcHkgPSBuZXcgRGlyZWN0aXZlcyh0aGlzLnlhbWwsIHRoaXMudGFncyk7XG4gICAgICAgIGNvcHkuZG9jU3RhcnQgPSB0aGlzLmRvY1N0YXJ0O1xuICAgICAgICByZXR1cm4gY29weTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRHVyaW5nIHBhcnNpbmcsIGdldCBhIERpcmVjdGl2ZXMgaW5zdGFuY2UgZm9yIHRoZSBjdXJyZW50IGRvY3VtZW50IGFuZFxuICAgICAqIHVwZGF0ZSB0aGUgc3RyZWFtIHN0YXRlIGFjY29yZGluZyB0byB0aGUgY3VycmVudCB2ZXJzaW9uJ3Mgc3BlYy5cbiAgICAgKi9cbiAgICBhdERvY3VtZW50KCkge1xuICAgICAgICBjb25zdCByZXMgPSBuZXcgRGlyZWN0aXZlcyh0aGlzLnlhbWwsIHRoaXMudGFncyk7XG4gICAgICAgIHN3aXRjaCAodGhpcy55YW1sLnZlcnNpb24pIHtcbiAgICAgICAgICAgIGNhc2UgJzEuMSc6XG4gICAgICAgICAgICAgICAgdGhpcy5hdE5leHREb2N1bWVudCA9IHRydWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICcxLjInOlxuICAgICAgICAgICAgICAgIHRoaXMuYXROZXh0RG9jdW1lbnQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLnlhbWwgPSB7XG4gICAgICAgICAgICAgICAgICAgIGV4cGxpY2l0OiBEaXJlY3RpdmVzLmRlZmF1bHRZYW1sLmV4cGxpY2l0LFxuICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uOiAnMS4yJ1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgdGhpcy50YWdzID0gT2JqZWN0LmFzc2lnbih7fSwgRGlyZWN0aXZlcy5kZWZhdWx0VGFncyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG4gICAgLyoqXG4gICAgICogQHBhcmFtIG9uRXJyb3IgLSBNYXkgYmUgY2FsbGVkIGV2ZW4gaWYgdGhlIGFjdGlvbiB3YXMgc3VjY2Vzc2Z1bFxuICAgICAqIEByZXR1cm5zIGB0cnVlYCBvbiBzdWNjZXNzXG4gICAgICovXG4gICAgYWRkKGxpbmUsIG9uRXJyb3IpIHtcbiAgICAgICAgaWYgKHRoaXMuYXROZXh0RG9jdW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMueWFtbCA9IHsgZXhwbGljaXQ6IERpcmVjdGl2ZXMuZGVmYXVsdFlhbWwuZXhwbGljaXQsIHZlcnNpb246ICcxLjEnIH07XG4gICAgICAgICAgICB0aGlzLnRhZ3MgPSBPYmplY3QuYXNzaWduKHt9LCBEaXJlY3RpdmVzLmRlZmF1bHRUYWdzKTtcbiAgICAgICAgICAgIHRoaXMuYXROZXh0RG9jdW1lbnQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwYXJ0cyA9IGxpbmUudHJpbSgpLnNwbGl0KC9bIFxcdF0rLyk7XG4gICAgICAgIGNvbnN0IG5hbWUgPSBwYXJ0cy5zaGlmdCgpO1xuICAgICAgICBzd2l0Y2ggKG5hbWUpIHtcbiAgICAgICAgICAgIGNhc2UgJyVUQUcnOiB7XG4gICAgICAgICAgICAgICAgaWYgKHBhcnRzLmxlbmd0aCAhPT0gMikge1xuICAgICAgICAgICAgICAgICAgICBvbkVycm9yKDAsICclVEFHIGRpcmVjdGl2ZSBzaG91bGQgY29udGFpbiBleGFjdGx5IHR3byBwYXJ0cycpO1xuICAgICAgICAgICAgICAgICAgICBpZiAocGFydHMubGVuZ3RoIDwgMilcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgW2hhbmRsZSwgcHJlZml4XSA9IHBhcnRzO1xuICAgICAgICAgICAgICAgIHRoaXMudGFnc1toYW5kbGVdID0gcHJlZml4O1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnJVlBTUwnOiB7XG4gICAgICAgICAgICAgICAgdGhpcy55YW1sLmV4cGxpY2l0ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBpZiAocGFydHMubGVuZ3RoICE9PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIG9uRXJyb3IoMCwgJyVZQU1MIGRpcmVjdGl2ZSBzaG91bGQgY29udGFpbiBleGFjdGx5IG9uZSBwYXJ0Jyk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgW3ZlcnNpb25dID0gcGFydHM7XG4gICAgICAgICAgICAgICAgaWYgKHZlcnNpb24gPT09ICcxLjEnIHx8IHZlcnNpb24gPT09ICcxLjInKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMueWFtbC52ZXJzaW9uID0gdmVyc2lvbjtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc1ZhbGlkID0gL15cXGQrXFwuXFxkKyQvLnRlc3QodmVyc2lvbik7XG4gICAgICAgICAgICAgICAgICAgIG9uRXJyb3IoNiwgYFVuc3VwcG9ydGVkIFlBTUwgdmVyc2lvbiAke3ZlcnNpb259YCwgaXNWYWxpZCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIG9uRXJyb3IoMCwgYFVua25vd24gZGlyZWN0aXZlICR7bmFtZX1gLCB0cnVlKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogUmVzb2x2ZXMgYSB0YWcsIG1hdGNoaW5nIGhhbmRsZXMgdG8gdGhvc2UgZGVmaW5lZCBpbiAlVEFHIGRpcmVjdGl2ZXMuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBSZXNvbHZlZCB0YWcsIHdoaWNoIG1heSBhbHNvIGJlIHRoZSBub24tc3BlY2lmaWMgdGFnIGAnISdgIG9yIGFcbiAgICAgKiAgIGAnIWxvY2FsJ2AgdGFnLCBvciBgbnVsbGAgaWYgdW5yZXNvbHZhYmxlLlxuICAgICAqL1xuICAgIHRhZ05hbWUoc291cmNlLCBvbkVycm9yKSB7XG4gICAgICAgIGlmIChzb3VyY2UgPT09ICchJylcbiAgICAgICAgICAgIHJldHVybiAnISc7IC8vIG5vbi1zcGVjaWZpYyB0YWdcbiAgICAgICAgaWYgKHNvdXJjZVswXSAhPT0gJyEnKSB7XG4gICAgICAgICAgICBvbkVycm9yKGBOb3QgYSB2YWxpZCB0YWc6ICR7c291cmNlfWApO1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNvdXJjZVsxXSA9PT0gJzwnKSB7XG4gICAgICAgICAgICBjb25zdCB2ZXJiYXRpbSA9IHNvdXJjZS5zbGljZSgyLCAtMSk7XG4gICAgICAgICAgICBpZiAodmVyYmF0aW0gPT09ICchJyB8fCB2ZXJiYXRpbSA9PT0gJyEhJykge1xuICAgICAgICAgICAgICAgIG9uRXJyb3IoYFZlcmJhdGltIHRhZ3MgYXJlbid0IHJlc29sdmVkLCBzbyAke3NvdXJjZX0gaXMgaW52YWxpZC5gKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzb3VyY2Vbc291cmNlLmxlbmd0aCAtIDFdICE9PSAnPicpXG4gICAgICAgICAgICAgICAgb25FcnJvcignVmVyYmF0aW0gdGFncyBtdXN0IGVuZCB3aXRoIGEgPicpO1xuICAgICAgICAgICAgcmV0dXJuIHZlcmJhdGltO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IFssIGhhbmRsZSwgc3VmZml4XSA9IHNvdXJjZS5tYXRjaCgvXiguKiEpKFteIV0qKSQvcyk7XG4gICAgICAgIGlmICghc3VmZml4KVxuICAgICAgICAgICAgb25FcnJvcihgVGhlICR7c291cmNlfSB0YWcgaGFzIG5vIHN1ZmZpeGApO1xuICAgICAgICBjb25zdCBwcmVmaXggPSB0aGlzLnRhZ3NbaGFuZGxlXTtcbiAgICAgICAgaWYgKHByZWZpeCkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJlZml4ICsgZGVjb2RlVVJJQ29tcG9uZW50KHN1ZmZpeCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBvbkVycm9yKFN0cmluZyhlcnJvcikpO1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChoYW5kbGUgPT09ICchJylcbiAgICAgICAgICAgIHJldHVybiBzb3VyY2U7IC8vIGxvY2FsIHRhZ1xuICAgICAgICBvbkVycm9yKGBDb3VsZCBub3QgcmVzb2x2ZSB0YWc6ICR7c291cmNlfWApO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogR2l2ZW4gYSBmdWxseSByZXNvbHZlZCB0YWcsIHJldHVybnMgaXRzIHByaW50YWJsZSBzdHJpbmcgZm9ybSxcbiAgICAgKiB0YWtpbmcgaW50byBhY2NvdW50IGN1cnJlbnQgdGFnIHByZWZpeGVzIGFuZCBkZWZhdWx0cy5cbiAgICAgKi9cbiAgICB0YWdTdHJpbmcodGFnKSB7XG4gICAgICAgIGZvciAoY29uc3QgW2hhbmRsZSwgcHJlZml4XSBvZiBPYmplY3QuZW50cmllcyh0aGlzLnRhZ3MpKSB7XG4gICAgICAgICAgICBpZiAodGFnLnN0YXJ0c1dpdGgocHJlZml4KSlcbiAgICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlICsgZXNjYXBlVGFnTmFtZSh0YWcuc3Vic3RyaW5nKHByZWZpeC5sZW5ndGgpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGFnWzBdID09PSAnIScgPyB0YWcgOiBgITwke3RhZ30+YDtcbiAgICB9XG4gICAgdG9TdHJpbmcoZG9jKSB7XG4gICAgICAgIGNvbnN0IGxpbmVzID0gdGhpcy55YW1sLmV4cGxpY2l0XG4gICAgICAgICAgICA/IFtgJVlBTUwgJHt0aGlzLnlhbWwudmVyc2lvbiB8fCAnMS4yJ31gXVxuICAgICAgICAgICAgOiBbXTtcbiAgICAgICAgY29uc3QgdGFnRW50cmllcyA9IE9iamVjdC5lbnRyaWVzKHRoaXMudGFncyk7XG4gICAgICAgIGxldCB0YWdOYW1lcztcbiAgICAgICAgaWYgKGRvYyAmJiB0YWdFbnRyaWVzLmxlbmd0aCA+IDAgJiYgaXNOb2RlKGRvYy5jb250ZW50cykpIHtcbiAgICAgICAgICAgIGNvbnN0IHRhZ3MgPSB7fTtcbiAgICAgICAgICAgIHZpc2l0KGRvYy5jb250ZW50cywgKF9rZXksIG5vZGUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaXNOb2RlKG5vZGUpICYmIG5vZGUudGFnKVxuICAgICAgICAgICAgICAgICAgICB0YWdzW25vZGUudGFnXSA9IHRydWU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRhZ05hbWVzID0gT2JqZWN0LmtleXModGFncyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgdGFnTmFtZXMgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBbaGFuZGxlLCBwcmVmaXhdIG9mIHRhZ0VudHJpZXMpIHtcbiAgICAgICAgICAgIGlmIChoYW5kbGUgPT09ICchIScgJiYgcHJlZml4ID09PSAndGFnOnlhbWwub3JnLDIwMDI6JylcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIGlmICghZG9jIHx8IHRhZ05hbWVzLnNvbWUodG4gPT4gdG4uc3RhcnRzV2l0aChwcmVmaXgpKSlcbiAgICAgICAgICAgICAgICBsaW5lcy5wdXNoKGAlVEFHICR7aGFuZGxlfSAke3ByZWZpeH1gKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbGluZXMuam9pbignXFxuJyk7XG4gICAgfVxufVxuRGlyZWN0aXZlcy5kZWZhdWx0WWFtbCA9IHsgZXhwbGljaXQ6IGZhbHNlLCB2ZXJzaW9uOiAnMS4yJyB9O1xuRGlyZWN0aXZlcy5kZWZhdWx0VGFncyA9IHsgJyEhJzogJ3RhZzp5YW1sLm9yZywyMDAyOicgfTtcblxuZXhwb3J0IHsgRGlyZWN0aXZlcyB9O1xuIiwgImltcG9ydCB7IGlzU2NhbGFyLCBpc0NvbGxlY3Rpb24gfSBmcm9tICcuLi9ub2Rlcy9pZGVudGl0eS5qcyc7XG5pbXBvcnQgeyB2aXNpdCB9IGZyb20gJy4uL3Zpc2l0LmpzJztcblxuLyoqXG4gKiBWZXJpZnkgdGhhdCB0aGUgaW5wdXQgc3RyaW5nIGlzIGEgdmFsaWQgYW5jaG9yLlxuICpcbiAqIFdpbGwgdGhyb3cgb24gZXJyb3JzLlxuICovXG5mdW5jdGlvbiBhbmNob3JJc1ZhbGlkKGFuY2hvcikge1xuICAgIGlmICgvW1xceDAwLVxceDE5XFxzLFtcXF17fV0vLnRlc3QoYW5jaG9yKSkge1xuICAgICAgICBjb25zdCBzYSA9IEpTT04uc3RyaW5naWZ5KGFuY2hvcik7XG4gICAgICAgIGNvbnN0IG1zZyA9IGBBbmNob3IgbXVzdCBub3QgY29udGFpbiB3aGl0ZXNwYWNlIG9yIGNvbnRyb2wgY2hhcmFjdGVyczogJHtzYX1gO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IobXNnKTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG5mdW5jdGlvbiBhbmNob3JOYW1lcyhyb290KSB7XG4gICAgY29uc3QgYW5jaG9ycyA9IG5ldyBTZXQoKTtcbiAgICB2aXNpdChyb290LCB7XG4gICAgICAgIFZhbHVlKF9rZXksIG5vZGUpIHtcbiAgICAgICAgICAgIGlmIChub2RlLmFuY2hvcilcbiAgICAgICAgICAgICAgICBhbmNob3JzLmFkZChub2RlLmFuY2hvcik7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gYW5jaG9ycztcbn1cbi8qKiBGaW5kIGEgbmV3IGFuY2hvciBuYW1lIHdpdGggdGhlIGdpdmVuIGBwcmVmaXhgIGFuZCBhIG9uZS1pbmRleGVkIHN1ZmZpeC4gKi9cbmZ1bmN0aW9uIGZpbmROZXdBbmNob3IocHJlZml4LCBleGNsdWRlKSB7XG4gICAgZm9yIChsZXQgaSA9IDE7IHRydWU7ICsraSkge1xuICAgICAgICBjb25zdCBuYW1lID0gYCR7cHJlZml4fSR7aX1gO1xuICAgICAgICBpZiAoIWV4Y2x1ZGUuaGFzKG5hbWUpKVxuICAgICAgICAgICAgcmV0dXJuIG5hbWU7XG4gICAgfVxufVxuZnVuY3Rpb24gY3JlYXRlTm9kZUFuY2hvcnMoZG9jLCBwcmVmaXgpIHtcbiAgICBjb25zdCBhbGlhc09iamVjdHMgPSBbXTtcbiAgICBjb25zdCBzb3VyY2VPYmplY3RzID0gbmV3IE1hcCgpO1xuICAgIGxldCBwcmV2QW5jaG9ycyA9IG51bGw7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgb25BbmNob3I6IChzb3VyY2UpID0+IHtcbiAgICAgICAgICAgIGFsaWFzT2JqZWN0cy5wdXNoKHNvdXJjZSk7XG4gICAgICAgICAgICBpZiAoIXByZXZBbmNob3JzKVxuICAgICAgICAgICAgICAgIHByZXZBbmNob3JzID0gYW5jaG9yTmFtZXMoZG9jKTtcbiAgICAgICAgICAgIGNvbnN0IGFuY2hvciA9IGZpbmROZXdBbmNob3IocHJlZml4LCBwcmV2QW5jaG9ycyk7XG4gICAgICAgICAgICBwcmV2QW5jaG9ycy5hZGQoYW5jaG9yKTtcbiAgICAgICAgICAgIHJldHVybiBhbmNob3I7XG4gICAgICAgIH0sXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBXaXRoIGNpcmN1bGFyIHJlZmVyZW5jZXMsIHRoZSBzb3VyY2Ugbm9kZSBpcyBvbmx5IHJlc29sdmVkIGFmdGVyIGFsbFxuICAgICAgICAgKiBvZiBpdHMgY2hpbGQgbm9kZXMgYXJlLiBUaGlzIGlzIHdoeSBhbmNob3JzIGFyZSBzZXQgb25seSBhZnRlciBhbGwgb2ZcbiAgICAgICAgICogdGhlIG5vZGVzIGhhdmUgYmVlbiBjcmVhdGVkLlxuICAgICAgICAgKi9cbiAgICAgICAgc2V0QW5jaG9yczogKCkgPT4ge1xuICAgICAgICAgICAgZm9yIChjb25zdCBzb3VyY2Ugb2YgYWxpYXNPYmplY3RzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVmID0gc291cmNlT2JqZWN0cy5nZXQoc291cmNlKTtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHJlZiA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgICAgICAgICAgICAgcmVmLmFuY2hvciAmJlxuICAgICAgICAgICAgICAgICAgICAoaXNTY2FsYXIocmVmLm5vZGUpIHx8IGlzQ29sbGVjdGlvbihyZWYubm9kZSkpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlZi5ub2RlLmFuY2hvciA9IHJlZi5hbmNob3I7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcignRmFpbGVkIHRvIHJlc29sdmUgcmVwZWF0ZWQgb2JqZWN0ICh0aGlzIHNob3VsZCBub3QgaGFwcGVuKScpO1xuICAgICAgICAgICAgICAgICAgICBlcnJvci5zb3VyY2UgPSBzb3VyY2U7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlT2JqZWN0c1xuICAgIH07XG59XG5cbmV4cG9ydCB7IGFuY2hvcklzVmFsaWQsIGFuY2hvck5hbWVzLCBjcmVhdGVOb2RlQW5jaG9ycywgZmluZE5ld0FuY2hvciB9O1xuIiwgIi8qKlxuICogQXBwbGllcyB0aGUgSlNPTi5wYXJzZSByZXZpdmVyIGFsZ29yaXRobSBhcyBkZWZpbmVkIGluIHRoZSBFQ01BLTI2MiBzcGVjLFxuICogaW4gc2VjdGlvbiAyNC41LjEuMSBcIlJ1bnRpbWUgU2VtYW50aWNzOiBJbnRlcm5hbGl6ZUpTT05Qcm9wZXJ0eVwiIG9mIHRoZVxuICogMjAyMSBlZGl0aW9uOiBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWpzb24ucGFyc2VcbiAqXG4gKiBJbmNsdWRlcyBleHRlbnNpb25zIGZvciBoYW5kbGluZyBNYXAgYW5kIFNldCBvYmplY3RzLlxuICovXG5mdW5jdGlvbiBhcHBseVJldml2ZXIocmV2aXZlciwgb2JqLCBrZXksIHZhbCkge1xuICAgIGlmICh2YWwgJiYgdHlwZW9mIHZhbCA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsKSkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IHZhbC5sZW5ndGg7IGkgPCBsZW47ICsraSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHYwID0gdmFsW2ldO1xuICAgICAgICAgICAgICAgIGNvbnN0IHYxID0gYXBwbHlSZXZpdmVyKHJldml2ZXIsIHZhbCwgU3RyaW5nKGkpLCB2MCk7XG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1hcnJheS1kZWxldGVcbiAgICAgICAgICAgICAgICBpZiAodjEgPT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHZhbFtpXTtcbiAgICAgICAgICAgICAgICBlbHNlIGlmICh2MSAhPT0gdjApXG4gICAgICAgICAgICAgICAgICAgIHZhbFtpXSA9IHYxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHZhbCBpbnN0YW5jZW9mIE1hcCkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBrIG9mIEFycmF5LmZyb20odmFsLmtleXMoKSkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB2MCA9IHZhbC5nZXQoayk7XG4gICAgICAgICAgICAgICAgY29uc3QgdjEgPSBhcHBseVJldml2ZXIocmV2aXZlciwgdmFsLCBrLCB2MCk7XG4gICAgICAgICAgICAgICAgaWYgKHYxID09PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgICAgIHZhbC5kZWxldGUoayk7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodjEgIT09IHYwKVxuICAgICAgICAgICAgICAgICAgICB2YWwuc2V0KGssIHYxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh2YWwgaW5zdGFuY2VvZiBTZXQpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgdjAgb2YgQXJyYXkuZnJvbSh2YWwpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdjEgPSBhcHBseVJldml2ZXIocmV2aXZlciwgdmFsLCB2MCwgdjApO1xuICAgICAgICAgICAgICAgIGlmICh2MSA9PT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgICAgICB2YWwuZGVsZXRlKHYwKTtcbiAgICAgICAgICAgICAgICBlbHNlIGlmICh2MSAhPT0gdjApIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsLmRlbGV0ZSh2MCk7XG4gICAgICAgICAgICAgICAgICAgIHZhbC5hZGQodjEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgW2ssIHYwXSBvZiBPYmplY3QuZW50cmllcyh2YWwpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdjEgPSBhcHBseVJldml2ZXIocmV2aXZlciwgdmFsLCBrLCB2MCk7XG4gICAgICAgICAgICAgICAgaWYgKHYxID09PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB2YWxba107XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodjEgIT09IHYwKVxuICAgICAgICAgICAgICAgICAgICB2YWxba10gPSB2MTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmV2aXZlci5jYWxsKG9iaiwga2V5LCB2YWwpO1xufVxuXG5leHBvcnQgeyBhcHBseVJldml2ZXIgfTtcbiIsICJpbXBvcnQgeyBoYXNBbmNob3IgfSBmcm9tICcuL2lkZW50aXR5LmpzJztcblxuLyoqXG4gKiBSZWN1cnNpdmVseSBjb252ZXJ0IGFueSBub2RlIG9yIGl0cyBjb250ZW50cyB0byBuYXRpdmUgSmF2YVNjcmlwdFxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSBpbnB1dCB2YWx1ZVxuICogQHBhcmFtIGFyZyAtIElmIGB2YWx1ZWAgZGVmaW5lcyBhIGB0b0pTT04oKWAgbWV0aG9kLCB1c2UgdGhpc1xuICogICBhcyBpdHMgZmlyc3QgYXJndW1lbnRcbiAqIEBwYXJhbSBjdHggLSBDb252ZXJzaW9uIGNvbnRleHQsIG9yaWdpbmFsbHkgc2V0IGluIERvY3VtZW50I3RvSlMoKS4gSWZcbiAqICAgYHsga2VlcDogdHJ1ZSB9YCBpcyBub3Qgc2V0LCBvdXRwdXQgc2hvdWxkIGJlIHN1aXRhYmxlIGZvciBKU09OXG4gKiAgIHN0cmluZ2lmaWNhdGlvbi5cbiAqL1xuZnVuY3Rpb24gdG9KUyh2YWx1ZSwgYXJnLCBjdHgpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1yZXR1cm5cbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpXG4gICAgICAgIHJldHVybiB2YWx1ZS5tYXAoKHYsIGkpID0+IHRvSlModiwgU3RyaW5nKGkpLCBjdHgpKTtcbiAgICBpZiAodmFsdWUgJiYgdHlwZW9mIHZhbHVlLnRvSlNPTiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1jYWxsXG4gICAgICAgIGlmICghY3R4IHx8ICFoYXNBbmNob3IodmFsdWUpKVxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnRvSlNPTihhcmcsIGN0eCk7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB7IGFsaWFzQ291bnQ6IDAsIGNvdW50OiAxLCByZXM6IHVuZGVmaW5lZCB9O1xuICAgICAgICBjdHguYW5jaG9ycy5zZXQodmFsdWUsIGRhdGEpO1xuICAgICAgICBjdHgub25DcmVhdGUgPSByZXMgPT4ge1xuICAgICAgICAgICAgZGF0YS5yZXMgPSByZXM7XG4gICAgICAgICAgICBkZWxldGUgY3R4Lm9uQ3JlYXRlO1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCByZXMgPSB2YWx1ZS50b0pTT04oYXJnLCBjdHgpO1xuICAgICAgICBpZiAoY3R4Lm9uQ3JlYXRlKVxuICAgICAgICAgICAgY3R4Lm9uQ3JlYXRlKHJlcyk7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdiaWdpbnQnICYmICFjdHg/LmtlZXApXG4gICAgICAgIHJldHVybiBOdW1iZXIodmFsdWUpO1xuICAgIHJldHVybiB2YWx1ZTtcbn1cblxuZXhwb3J0IHsgdG9KUyB9O1xuIiwgImltcG9ydCB7IGFwcGx5UmV2aXZlciB9IGZyb20gJy4uL2RvYy9hcHBseVJldml2ZXIuanMnO1xuaW1wb3J0IHsgTk9ERV9UWVBFLCBpc0RvY3VtZW50IH0gZnJvbSAnLi9pZGVudGl0eS5qcyc7XG5pbXBvcnQgeyB0b0pTIH0gZnJvbSAnLi90b0pTLmpzJztcblxuY2xhc3MgTm9kZUJhc2Uge1xuICAgIGNvbnN0cnVjdG9yKHR5cGUpIHtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIE5PREVfVFlQRSwgeyB2YWx1ZTogdHlwZSB9KTtcbiAgICB9XG4gICAgLyoqIENyZWF0ZSBhIGNvcHkgb2YgdGhpcyBub2RlLiAgKi9cbiAgICBjbG9uZSgpIHtcbiAgICAgICAgY29uc3QgY29weSA9IE9iamVjdC5jcmVhdGUoT2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh0aGlzKSk7XG4gICAgICAgIGlmICh0aGlzLnJhbmdlKVxuICAgICAgICAgICAgY29weS5yYW5nZSA9IHRoaXMucmFuZ2Uuc2xpY2UoKTtcbiAgICAgICAgcmV0dXJuIGNvcHk7XG4gICAgfVxuICAgIC8qKiBBIHBsYWluIEphdmFTY3JpcHQgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBub2RlLiAqL1xuICAgIHRvSlMoZG9jLCB7IG1hcEFzTWFwLCBtYXhBbGlhc0NvdW50LCBvbkFuY2hvciwgcmV2aXZlciB9ID0ge30pIHtcbiAgICAgICAgaWYgKCFpc0RvY3VtZW50KGRvYykpXG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBIGRvY3VtZW50IGFyZ3VtZW50IGlzIHJlcXVpcmVkJyk7XG4gICAgICAgIGNvbnN0IGN0eCA9IHtcbiAgICAgICAgICAgIGFuY2hvcnM6IG5ldyBNYXAoKSxcbiAgICAgICAgICAgIGRvYyxcbiAgICAgICAgICAgIGtlZXA6IHRydWUsXG4gICAgICAgICAgICBtYXBBc01hcDogbWFwQXNNYXAgPT09IHRydWUsXG4gICAgICAgICAgICBtYXBLZXlXYXJuZWQ6IGZhbHNlLFxuICAgICAgICAgICAgbWF4QWxpYXNDb3VudDogdHlwZW9mIG1heEFsaWFzQ291bnQgPT09ICdudW1iZXInID8gbWF4QWxpYXNDb3VudCA6IDEwMFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCByZXMgPSB0b0pTKHRoaXMsICcnLCBjdHgpO1xuICAgICAgICBpZiAodHlwZW9mIG9uQW5jaG9yID09PSAnZnVuY3Rpb24nKVxuICAgICAgICAgICAgZm9yIChjb25zdCB7IGNvdW50LCByZXMgfSBvZiBjdHguYW5jaG9ycy52YWx1ZXMoKSlcbiAgICAgICAgICAgICAgICBvbkFuY2hvcihyZXMsIGNvdW50KTtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiByZXZpdmVyID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICA/IGFwcGx5UmV2aXZlcihyZXZpdmVyLCB7ICcnOiByZXMgfSwgJycsIHJlcylcbiAgICAgICAgICAgIDogcmVzO1xuICAgIH1cbn1cblxuZXhwb3J0IHsgTm9kZUJhc2UgfTtcbiIsICJpbXBvcnQgeyBhbmNob3JJc1ZhbGlkIH0gZnJvbSAnLi4vZG9jL2FuY2hvcnMuanMnO1xuaW1wb3J0IHsgdmlzaXQgfSBmcm9tICcuLi92aXNpdC5qcyc7XG5pbXBvcnQgeyBBTElBUywgaXNBbGlhcywgaXNDb2xsZWN0aW9uLCBpc1BhaXIgfSBmcm9tICcuL2lkZW50aXR5LmpzJztcbmltcG9ydCB7IE5vZGVCYXNlIH0gZnJvbSAnLi9Ob2RlLmpzJztcbmltcG9ydCB7IHRvSlMgfSBmcm9tICcuL3RvSlMuanMnO1xuXG5jbGFzcyBBbGlhcyBleHRlbmRzIE5vZGVCYXNlIHtcbiAgICBjb25zdHJ1Y3Rvcihzb3VyY2UpIHtcbiAgICAgICAgc3VwZXIoQUxJQVMpO1xuICAgICAgICB0aGlzLnNvdXJjZSA9IHNvdXJjZTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICd0YWcnLCB7XG4gICAgICAgICAgICBzZXQoKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdBbGlhcyBub2RlcyBjYW5ub3QgaGF2ZSB0YWdzJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXNvbHZlIHRoZSB2YWx1ZSBvZiB0aGlzIGFsaWFzIHdpdGhpbiBgZG9jYCwgZmluZGluZyB0aGUgbGFzdFxuICAgICAqIGluc3RhbmNlIG9mIHRoZSBgc291cmNlYCBhbmNob3IgYmVmb3JlIHRoaXMgbm9kZS5cbiAgICAgKi9cbiAgICByZXNvbHZlKGRvYykge1xuICAgICAgICBsZXQgZm91bmQgPSB1bmRlZmluZWQ7XG4gICAgICAgIHZpc2l0KGRvYywge1xuICAgICAgICAgICAgTm9kZTogKF9rZXksIG5vZGUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAobm9kZSA9PT0gdGhpcylcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0LkJSRUFLO1xuICAgICAgICAgICAgICAgIGlmIChub2RlLmFuY2hvciA9PT0gdGhpcy5zb3VyY2UpXG4gICAgICAgICAgICAgICAgICAgIGZvdW5kID0gbm9kZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBmb3VuZDtcbiAgICB9XG4gICAgdG9KU09OKF9hcmcsIGN0eCkge1xuICAgICAgICBpZiAoIWN0eClcbiAgICAgICAgICAgIHJldHVybiB7IHNvdXJjZTogdGhpcy5zb3VyY2UgfTtcbiAgICAgICAgY29uc3QgeyBhbmNob3JzLCBkb2MsIG1heEFsaWFzQ291bnQgfSA9IGN0eDtcbiAgICAgICAgY29uc3Qgc291cmNlID0gdGhpcy5yZXNvbHZlKGRvYyk7XG4gICAgICAgIGlmICghc291cmNlKSB7XG4gICAgICAgICAgICBjb25zdCBtc2cgPSBgVW5yZXNvbHZlZCBhbGlhcyAodGhlIGFuY2hvciBtdXN0IGJlIHNldCBiZWZvcmUgdGhlIGFsaWFzKTogJHt0aGlzLnNvdXJjZX1gO1xuICAgICAgICAgICAgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKG1zZyk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGRhdGEgPSBhbmNob3JzLmdldChzb3VyY2UpO1xuICAgICAgICBpZiAoIWRhdGEpIHtcbiAgICAgICAgICAgIC8vIFJlc29sdmUgYW5jaG9ycyBmb3IgTm9kZS5wcm90b3R5cGUudG9KUygpXG4gICAgICAgICAgICB0b0pTKHNvdXJjZSwgbnVsbCwgY3R4KTtcbiAgICAgICAgICAgIGRhdGEgPSBhbmNob3JzLmdldChzb3VyY2UpO1xuICAgICAgICB9XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgICBpZiAoIWRhdGEgfHwgZGF0YS5yZXMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgY29uc3QgbXNnID0gJ1RoaXMgc2hvdWxkIG5vdCBoYXBwZW46IEFsaWFzIGFuY2hvciB3YXMgbm90IHJlc29sdmVkPyc7XG4gICAgICAgICAgICB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IobXNnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobWF4QWxpYXNDb3VudCA+PSAwKSB7XG4gICAgICAgICAgICBkYXRhLmNvdW50ICs9IDE7XG4gICAgICAgICAgICBpZiAoZGF0YS5hbGlhc0NvdW50ID09PSAwKVxuICAgICAgICAgICAgICAgIGRhdGEuYWxpYXNDb3VudCA9IGdldEFsaWFzQ291bnQoZG9jLCBzb3VyY2UsIGFuY2hvcnMpO1xuICAgICAgICAgICAgaWYgKGRhdGEuY291bnQgKiBkYXRhLmFsaWFzQ291bnQgPiBtYXhBbGlhc0NvdW50KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbXNnID0gJ0V4Y2Vzc2l2ZSBhbGlhcyBjb3VudCBpbmRpY2F0ZXMgYSByZXNvdXJjZSBleGhhdXN0aW9uIGF0dGFjayc7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKG1zZyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRhdGEucmVzO1xuICAgIH1cbiAgICB0b1N0cmluZyhjdHgsIF9vbkNvbW1lbnQsIF9vbkNob21wS2VlcCkge1xuICAgICAgICBjb25zdCBzcmMgPSBgKiR7dGhpcy5zb3VyY2V9YDtcbiAgICAgICAgaWYgKGN0eCkge1xuICAgICAgICAgICAgYW5jaG9ySXNWYWxpZCh0aGlzLnNvdXJjZSk7XG4gICAgICAgICAgICBpZiAoY3R4Lm9wdGlvbnMudmVyaWZ5QWxpYXNPcmRlciAmJiAhY3R4LmFuY2hvcnMuaGFzKHRoaXMuc291cmNlKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1zZyA9IGBVbnJlc29sdmVkIGFsaWFzICh0aGUgYW5jaG9yIG11c3QgYmUgc2V0IGJlZm9yZSB0aGUgYWxpYXMpOiAke3RoaXMuc291cmNlfWA7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1zZyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY3R4LmltcGxpY2l0S2V5KVxuICAgICAgICAgICAgICAgIHJldHVybiBgJHtzcmN9IGA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNyYztcbiAgICB9XG59XG5mdW5jdGlvbiBnZXRBbGlhc0NvdW50KGRvYywgbm9kZSwgYW5jaG9ycykge1xuICAgIGlmIChpc0FsaWFzKG5vZGUpKSB7XG4gICAgICAgIGNvbnN0IHNvdXJjZSA9IG5vZGUucmVzb2x2ZShkb2MpO1xuICAgICAgICBjb25zdCBhbmNob3IgPSBhbmNob3JzICYmIHNvdXJjZSAmJiBhbmNob3JzLmdldChzb3VyY2UpO1xuICAgICAgICByZXR1cm4gYW5jaG9yID8gYW5jaG9yLmNvdW50ICogYW5jaG9yLmFsaWFzQ291bnQgOiAwO1xuICAgIH1cbiAgICBlbHNlIGlmIChpc0NvbGxlY3Rpb24obm9kZSkpIHtcbiAgICAgICAgbGV0IGNvdW50ID0gMDtcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIG5vZGUuaXRlbXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGMgPSBnZXRBbGlhc0NvdW50KGRvYywgaXRlbSwgYW5jaG9ycyk7XG4gICAgICAgICAgICBpZiAoYyA+IGNvdW50KVxuICAgICAgICAgICAgICAgIGNvdW50ID0gYztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY291bnQ7XG4gICAgfVxuICAgIGVsc2UgaWYgKGlzUGFpcihub2RlKSkge1xuICAgICAgICBjb25zdCBrYyA9IGdldEFsaWFzQ291bnQoZG9jLCBub2RlLmtleSwgYW5jaG9ycyk7XG4gICAgICAgIGNvbnN0IHZjID0gZ2V0QWxpYXNDb3VudChkb2MsIG5vZGUudmFsdWUsIGFuY2hvcnMpO1xuICAgICAgICByZXR1cm4gTWF0aC5tYXgoa2MsIHZjKTtcbiAgICB9XG4gICAgcmV0dXJuIDE7XG59XG5cbmV4cG9ydCB7IEFsaWFzIH07XG4iLCAiaW1wb3J0IHsgU0NBTEFSIH0gZnJvbSAnLi9pZGVudGl0eS5qcyc7XG5pbXBvcnQgeyBOb2RlQmFzZSB9IGZyb20gJy4vTm9kZS5qcyc7XG5pbXBvcnQgeyB0b0pTIH0gZnJvbSAnLi90b0pTLmpzJztcblxuY29uc3QgaXNTY2FsYXJWYWx1ZSA9ICh2YWx1ZSkgPT4gIXZhbHVlIHx8ICh0eXBlb2YgdmFsdWUgIT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0Jyk7XG5jbGFzcyBTY2FsYXIgZXh0ZW5kcyBOb2RlQmFzZSB7XG4gICAgY29uc3RydWN0b3IodmFsdWUpIHtcbiAgICAgICAgc3VwZXIoU0NBTEFSKTtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIH1cbiAgICB0b0pTT04oYXJnLCBjdHgpIHtcbiAgICAgICAgcmV0dXJuIGN0eD8ua2VlcCA/IHRoaXMudmFsdWUgOiB0b0pTKHRoaXMudmFsdWUsIGFyZywgY3R4KTtcbiAgICB9XG4gICAgdG9TdHJpbmcoKSB7XG4gICAgICAgIHJldHVybiBTdHJpbmcodGhpcy52YWx1ZSk7XG4gICAgfVxufVxuU2NhbGFyLkJMT0NLX0ZPTERFRCA9ICdCTE9DS19GT0xERUQnO1xuU2NhbGFyLkJMT0NLX0xJVEVSQUwgPSAnQkxPQ0tfTElURVJBTCc7XG5TY2FsYXIuUExBSU4gPSAnUExBSU4nO1xuU2NhbGFyLlFVT1RFX0RPVUJMRSA9ICdRVU9URV9ET1VCTEUnO1xuU2NhbGFyLlFVT1RFX1NJTkdMRSA9ICdRVU9URV9TSU5HTEUnO1xuXG5leHBvcnQgeyBTY2FsYXIsIGlzU2NhbGFyVmFsdWUgfTtcbiIsICJpbXBvcnQgeyBBbGlhcyB9IGZyb20gJy4uL25vZGVzL0FsaWFzLmpzJztcbmltcG9ydCB7IGlzTm9kZSwgaXNQYWlyLCBNQVAsIFNFUSwgaXNEb2N1bWVudCB9IGZyb20gJy4uL25vZGVzL2lkZW50aXR5LmpzJztcbmltcG9ydCB7IFNjYWxhciB9IGZyb20gJy4uL25vZGVzL1NjYWxhci5qcyc7XG5cbmNvbnN0IGRlZmF1bHRUYWdQcmVmaXggPSAndGFnOnlhbWwub3JnLDIwMDI6JztcbmZ1bmN0aW9uIGZpbmRUYWdPYmplY3QodmFsdWUsIHRhZ05hbWUsIHRhZ3MpIHtcbiAgICBpZiAodGFnTmFtZSkge1xuICAgICAgICBjb25zdCBtYXRjaCA9IHRhZ3MuZmlsdGVyKHQgPT4gdC50YWcgPT09IHRhZ05hbWUpO1xuICAgICAgICBjb25zdCB0YWdPYmogPSBtYXRjaC5maW5kKHQgPT4gIXQuZm9ybWF0KSA/PyBtYXRjaFswXTtcbiAgICAgICAgaWYgKCF0YWdPYmopXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFRhZyAke3RhZ05hbWV9IG5vdCBmb3VuZGApO1xuICAgICAgICByZXR1cm4gdGFnT2JqO1xuICAgIH1cbiAgICByZXR1cm4gdGFncy5maW5kKHQgPT4gdC5pZGVudGlmeT8uKHZhbHVlKSAmJiAhdC5mb3JtYXQpO1xufVxuZnVuY3Rpb24gY3JlYXRlTm9kZSh2YWx1ZSwgdGFnTmFtZSwgY3R4KSB7XG4gICAgaWYgKGlzRG9jdW1lbnQodmFsdWUpKVxuICAgICAgICB2YWx1ZSA9IHZhbHVlLmNvbnRlbnRzO1xuICAgIGlmIChpc05vZGUodmFsdWUpKVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgaWYgKGlzUGFpcih2YWx1ZSkpIHtcbiAgICAgICAgY29uc3QgbWFwID0gY3R4LnNjaGVtYVtNQVBdLmNyZWF0ZU5vZGU/LihjdHguc2NoZW1hLCBudWxsLCBjdHgpO1xuICAgICAgICBtYXAuaXRlbXMucHVzaCh2YWx1ZSk7XG4gICAgICAgIHJldHVybiBtYXA7XG4gICAgfVxuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIFN0cmluZyB8fFxuICAgICAgICB2YWx1ZSBpbnN0YW5jZW9mIE51bWJlciB8fFxuICAgICAgICB2YWx1ZSBpbnN0YW5jZW9mIEJvb2xlYW4gfHxcbiAgICAgICAgKHR5cGVvZiBCaWdJbnQgIT09ICd1bmRlZmluZWQnICYmIHZhbHVlIGluc3RhbmNlb2YgQmlnSW50KSAvLyBub3Qgc3VwcG9ydGVkIGV2ZXJ5d2hlcmVcbiAgICApIHtcbiAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zZXJpYWxpemVqc29ucHJvcGVydHlcbiAgICAgICAgdmFsdWUgPSB2YWx1ZS52YWx1ZU9mKCk7XG4gICAgfVxuICAgIGNvbnN0IHsgYWxpYXNEdXBsaWNhdGVPYmplY3RzLCBvbkFuY2hvciwgb25UYWdPYmosIHNjaGVtYSwgc291cmNlT2JqZWN0cyB9ID0gY3R4O1xuICAgIC8vIERldGVjdCBkdXBsaWNhdGUgcmVmZXJlbmNlcyB0byB0aGUgc2FtZSBvYmplY3QgJiB1c2UgQWxpYXMgbm9kZXMgZm9yIGFsbFxuICAgIC8vIGFmdGVyIGZpcnN0LiBUaGUgYHJlZmAgd3JhcHBlciBhbGxvd3MgZm9yIGNpcmN1bGFyIHJlZmVyZW5jZXMgdG8gcmVzb2x2ZS5cbiAgICBsZXQgcmVmID0gdW5kZWZpbmVkO1xuICAgIGlmIChhbGlhc0R1cGxpY2F0ZU9iamVjdHMgJiYgdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgICByZWYgPSBzb3VyY2VPYmplY3RzLmdldCh2YWx1ZSk7XG4gICAgICAgIGlmIChyZWYpIHtcbiAgICAgICAgICAgIGlmICghcmVmLmFuY2hvcilcbiAgICAgICAgICAgICAgICByZWYuYW5jaG9yID0gb25BbmNob3IodmFsdWUpO1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBBbGlhcyhyZWYuYW5jaG9yKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJlZiA9IHsgYW5jaG9yOiBudWxsLCBub2RlOiBudWxsIH07XG4gICAgICAgICAgICBzb3VyY2VPYmplY3RzLnNldCh2YWx1ZSwgcmVmKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAodGFnTmFtZT8uc3RhcnRzV2l0aCgnISEnKSlcbiAgICAgICAgdGFnTmFtZSA9IGRlZmF1bHRUYWdQcmVmaXggKyB0YWdOYW1lLnNsaWNlKDIpO1xuICAgIGxldCB0YWdPYmogPSBmaW5kVGFnT2JqZWN0KHZhbHVlLCB0YWdOYW1lLCBzY2hlbWEudGFncyk7XG4gICAgaWYgKCF0YWdPYmopIHtcbiAgICAgICAgaWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZS50b0pTT04gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWNhbGxcbiAgICAgICAgICAgIHZhbHVlID0gdmFsdWUudG9KU09OKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF2YWx1ZSB8fCB0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICBjb25zdCBub2RlID0gbmV3IFNjYWxhcih2YWx1ZSk7XG4gICAgICAgICAgICBpZiAocmVmKVxuICAgICAgICAgICAgICAgIHJlZi5ub2RlID0gbm9kZTtcbiAgICAgICAgICAgIHJldHVybiBub2RlO1xuICAgICAgICB9XG4gICAgICAgIHRhZ09iaiA9XG4gICAgICAgICAgICB2YWx1ZSBpbnN0YW5jZW9mIE1hcFxuICAgICAgICAgICAgICAgID8gc2NoZW1hW01BUF1cbiAgICAgICAgICAgICAgICA6IFN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QodmFsdWUpXG4gICAgICAgICAgICAgICAgICAgID8gc2NoZW1hW1NFUV1cbiAgICAgICAgICAgICAgICAgICAgOiBzY2hlbWFbTUFQXTtcbiAgICB9XG4gICAgaWYgKG9uVGFnT2JqKSB7XG4gICAgICAgIG9uVGFnT2JqKHRhZ09iaik7XG4gICAgICAgIGRlbGV0ZSBjdHgub25UYWdPYmo7XG4gICAgfVxuICAgIGNvbnN0IG5vZGUgPSB0YWdPYmo/LmNyZWF0ZU5vZGVcbiAgICAgICAgPyB0YWdPYmouY3JlYXRlTm9kZShjdHguc2NoZW1hLCB2YWx1ZSwgY3R4KVxuICAgICAgICA6IHR5cGVvZiB0YWdPYmo/Lm5vZGVDbGFzcz8uZnJvbSA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICAgICAgPyB0YWdPYmoubm9kZUNsYXNzLmZyb20oY3R4LnNjaGVtYSwgdmFsdWUsIGN0eClcbiAgICAgICAgICAgIDogbmV3IFNjYWxhcih2YWx1ZSk7XG4gICAgaWYgKHRhZ05hbWUpXG4gICAgICAgIG5vZGUudGFnID0gdGFnTmFtZTtcbiAgICBlbHNlIGlmICghdGFnT2JqLmRlZmF1bHQpXG4gICAgICAgIG5vZGUudGFnID0gdGFnT2JqLnRhZztcbiAgICBpZiAocmVmKVxuICAgICAgICByZWYubm9kZSA9IG5vZGU7XG4gICAgcmV0dXJuIG5vZGU7XG59XG5cbmV4cG9ydCB7IGNyZWF0ZU5vZGUgfTtcbiIsICJpbXBvcnQgeyBjcmVhdGVOb2RlIH0gZnJvbSAnLi4vZG9jL2NyZWF0ZU5vZGUuanMnO1xuaW1wb3J0IHsgaXNOb2RlLCBpc1BhaXIsIGlzQ29sbGVjdGlvbiwgaXNTY2FsYXIgfSBmcm9tICcuL2lkZW50aXR5LmpzJztcbmltcG9ydCB7IE5vZGVCYXNlIH0gZnJvbSAnLi9Ob2RlLmpzJztcblxuZnVuY3Rpb24gY29sbGVjdGlvbkZyb21QYXRoKHNjaGVtYSwgcGF0aCwgdmFsdWUpIHtcbiAgICBsZXQgdiA9IHZhbHVlO1xuICAgIGZvciAobGV0IGkgPSBwYXRoLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgIGNvbnN0IGsgPSBwYXRoW2ldO1xuICAgICAgICBpZiAodHlwZW9mIGsgPT09ICdudW1iZXInICYmIE51bWJlci5pc0ludGVnZXIoaykgJiYgayA+PSAwKSB7XG4gICAgICAgICAgICBjb25zdCBhID0gW107XG4gICAgICAgICAgICBhW2tdID0gdjtcbiAgICAgICAgICAgIHYgPSBhO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdiA9IG5ldyBNYXAoW1trLCB2XV0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjcmVhdGVOb2RlKHYsIHVuZGVmaW5lZCwge1xuICAgICAgICBhbGlhc0R1cGxpY2F0ZU9iamVjdHM6IGZhbHNlLFxuICAgICAgICBrZWVwVW5kZWZpbmVkOiBmYWxzZSxcbiAgICAgICAgb25BbmNob3I6ICgpID0+IHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVGhpcyBzaG91bGQgbm90IGhhcHBlbiwgcGxlYXNlIHJlcG9ydCBhIGJ1Zy4nKTtcbiAgICAgICAgfSxcbiAgICAgICAgc2NoZW1hLFxuICAgICAgICBzb3VyY2VPYmplY3RzOiBuZXcgTWFwKClcbiAgICB9KTtcbn1cbi8vIFR5cGUgZ3VhcmQgaXMgaW50ZW50aW9uYWxseSBhIGxpdHRsZSB3cm9uZyBzbyBhcyB0byBiZSBtb3JlIHVzZWZ1bCxcbi8vIGFzIGl0IGRvZXMgbm90IGNvdmVyIHVudHlwYWJsZSBlbXB0eSBub24tc3RyaW5nIGl0ZXJhYmxlcyAoZS5nLiBbXSkuXG5jb25zdCBpc0VtcHR5UGF0aCA9IChwYXRoKSA9PiBwYXRoID09IG51bGwgfHxcbiAgICAodHlwZW9mIHBhdGggPT09ICdvYmplY3QnICYmICEhcGF0aFtTeW1ib2wuaXRlcmF0b3JdKCkubmV4dCgpLmRvbmUpO1xuY2xhc3MgQ29sbGVjdGlvbiBleHRlbmRzIE5vZGVCYXNlIHtcbiAgICBjb25zdHJ1Y3Rvcih0eXBlLCBzY2hlbWEpIHtcbiAgICAgICAgc3VwZXIodHlwZSk7XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCAnc2NoZW1hJywge1xuICAgICAgICAgICAgdmFsdWU6IHNjaGVtYSxcbiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgd3JpdGFibGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENyZWF0ZSBhIGNvcHkgb2YgdGhpcyBjb2xsZWN0aW9uLlxuICAgICAqXG4gICAgICogQHBhcmFtIHNjaGVtYSAtIElmIGRlZmluZWQsIG92ZXJ3cml0ZXMgdGhlIG9yaWdpbmFsJ3Mgc2NoZW1hXG4gICAgICovXG4gICAgY2xvbmUoc2NoZW1hKSB7XG4gICAgICAgIGNvbnN0IGNvcHkgPSBPYmplY3QuY3JlYXRlKE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnModGhpcykpO1xuICAgICAgICBpZiAoc2NoZW1hKVxuICAgICAgICAgICAgY29weS5zY2hlbWEgPSBzY2hlbWE7XG4gICAgICAgIGNvcHkuaXRlbXMgPSBjb3B5Lml0ZW1zLm1hcChpdCA9PiBpc05vZGUoaXQpIHx8IGlzUGFpcihpdCkgPyBpdC5jbG9uZShzY2hlbWEpIDogaXQpO1xuICAgICAgICBpZiAodGhpcy5yYW5nZSlcbiAgICAgICAgICAgIGNvcHkucmFuZ2UgPSB0aGlzLnJhbmdlLnNsaWNlKCk7XG4gICAgICAgIHJldHVybiBjb3B5O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBZGRzIGEgdmFsdWUgdG8gdGhlIGNvbGxlY3Rpb24uIEZvciBgISFtYXBgIGFuZCBgISFvbWFwYCB0aGUgdmFsdWUgbXVzdFxuICAgICAqIGJlIGEgUGFpciBpbnN0YW5jZSBvciBhIGB7IGtleSwgdmFsdWUgfWAgb2JqZWN0LCB3aGljaCBtYXkgbm90IGhhdmUgYSBrZXlcbiAgICAgKiB0aGF0IGFscmVhZHkgZXhpc3RzIGluIHRoZSBtYXAuXG4gICAgICovXG4gICAgYWRkSW4ocGF0aCwgdmFsdWUpIHtcbiAgICAgICAgaWYgKGlzRW1wdHlQYXRoKHBhdGgpKVxuICAgICAgICAgICAgdGhpcy5hZGQodmFsdWUpO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IFtrZXksIC4uLnJlc3RdID0gcGF0aDtcbiAgICAgICAgICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldChrZXksIHRydWUpO1xuICAgICAgICAgICAgaWYgKGlzQ29sbGVjdGlvbihub2RlKSlcbiAgICAgICAgICAgICAgICBub2RlLmFkZEluKHJlc3QsIHZhbHVlKTtcbiAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUgPT09IHVuZGVmaW5lZCAmJiB0aGlzLnNjaGVtYSlcbiAgICAgICAgICAgICAgICB0aGlzLnNldChrZXksIGNvbGxlY3Rpb25Gcm9tUGF0aCh0aGlzLnNjaGVtYSwgcmVzdCwgdmFsdWUpKTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIFlBTUwgY29sbGVjdGlvbiBhdCAke2tleX0uIFJlbWFpbmluZyBwYXRoOiAke3Jlc3R9YCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBhIHZhbHVlIGZyb20gdGhlIGNvbGxlY3Rpb24uXG4gICAgICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBpdGVtIHdhcyBmb3VuZCBhbmQgcmVtb3ZlZC5cbiAgICAgKi9cbiAgICBkZWxldGVJbihwYXRoKSB7XG4gICAgICAgIGNvbnN0IFtrZXksIC4uLnJlc3RdID0gcGF0aDtcbiAgICAgICAgaWYgKHJlc3QubGVuZ3RoID09PSAwKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGVsZXRlKGtleSk7XG4gICAgICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldChrZXksIHRydWUpO1xuICAgICAgICBpZiAoaXNDb2xsZWN0aW9uKG5vZGUpKVxuICAgICAgICAgICAgcmV0dXJuIG5vZGUuZGVsZXRlSW4ocmVzdCk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgWUFNTCBjb2xsZWN0aW9uIGF0ICR7a2V5fS4gUmVtYWluaW5nIHBhdGg6ICR7cmVzdH1gKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBpdGVtIGF0IGBrZXlgLCBvciBgdW5kZWZpbmVkYCBpZiBub3QgZm91bmQuIEJ5IGRlZmF1bHQgdW53cmFwc1xuICAgICAqIHNjYWxhciB2YWx1ZXMgZnJvbSB0aGVpciBzdXJyb3VuZGluZyBub2RlOyB0byBkaXNhYmxlIHNldCBga2VlcFNjYWxhcmAgdG9cbiAgICAgKiBgdHJ1ZWAgKGNvbGxlY3Rpb25zIGFyZSBhbHdheXMgcmV0dXJuZWQgaW50YWN0KS5cbiAgICAgKi9cbiAgICBnZXRJbihwYXRoLCBrZWVwU2NhbGFyKSB7XG4gICAgICAgIGNvbnN0IFtrZXksIC4uLnJlc3RdID0gcGF0aDtcbiAgICAgICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0KGtleSwgdHJ1ZSk7XG4gICAgICAgIGlmIChyZXN0Lmxlbmd0aCA9PT0gMClcbiAgICAgICAgICAgIHJldHVybiAha2VlcFNjYWxhciAmJiBpc1NjYWxhcihub2RlKSA/IG5vZGUudmFsdWUgOiBub2RlO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICByZXR1cm4gaXNDb2xsZWN0aW9uKG5vZGUpID8gbm9kZS5nZXRJbihyZXN0LCBrZWVwU2NhbGFyKSA6IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgaGFzQWxsTnVsbFZhbHVlcyhhbGxvd1NjYWxhcikge1xuICAgICAgICByZXR1cm4gdGhpcy5pdGVtcy5ldmVyeShub2RlID0+IHtcbiAgICAgICAgICAgIGlmICghaXNQYWlyKG5vZGUpKVxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIGNvbnN0IG4gPSBub2RlLnZhbHVlO1xuICAgICAgICAgICAgcmV0dXJuIChuID09IG51bGwgfHxcbiAgICAgICAgICAgICAgICAoYWxsb3dTY2FsYXIgJiZcbiAgICAgICAgICAgICAgICAgICAgaXNTY2FsYXIobikgJiZcbiAgICAgICAgICAgICAgICAgICAgbi52YWx1ZSA9PSBudWxsICYmXG4gICAgICAgICAgICAgICAgICAgICFuLmNvbW1lbnRCZWZvcmUgJiZcbiAgICAgICAgICAgICAgICAgICAgIW4uY29tbWVudCAmJlxuICAgICAgICAgICAgICAgICAgICAhbi50YWcpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiB0aGUgY29sbGVjdGlvbiBpbmNsdWRlcyBhIHZhbHVlIHdpdGggdGhlIGtleSBga2V5YC5cbiAgICAgKi9cbiAgICBoYXNJbihwYXRoKSB7XG4gICAgICAgIGNvbnN0IFtrZXksIC4uLnJlc3RdID0gcGF0aDtcbiAgICAgICAgaWYgKHJlc3QubGVuZ3RoID09PSAwKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaGFzKGtleSk7XG4gICAgICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldChrZXksIHRydWUpO1xuICAgICAgICByZXR1cm4gaXNDb2xsZWN0aW9uKG5vZGUpID8gbm9kZS5oYXNJbihyZXN0KSA6IGZhbHNlO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBTZXRzIGEgdmFsdWUgaW4gdGhpcyBjb2xsZWN0aW9uLiBGb3IgYCEhc2V0YCwgYHZhbHVlYCBuZWVkcyB0byBiZSBhXG4gICAgICogYm9vbGVhbiB0byBhZGQvcmVtb3ZlIHRoZSBpdGVtIGZyb20gdGhlIHNldC5cbiAgICAgKi9cbiAgICBzZXRJbihwYXRoLCB2YWx1ZSkge1xuICAgICAgICBjb25zdCBba2V5LCAuLi5yZXN0XSA9IHBhdGg7XG4gICAgICAgIGlmIChyZXN0Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBub2RlID0gdGhpcy5nZXQoa2V5LCB0cnVlKTtcbiAgICAgICAgICAgIGlmIChpc0NvbGxlY3Rpb24obm9kZSkpXG4gICAgICAgICAgICAgICAgbm9kZS5zZXRJbihyZXN0LCB2YWx1ZSk7XG4gICAgICAgICAgICBlbHNlIGlmIChub2RlID09PSB1bmRlZmluZWQgJiYgdGhpcy5zY2hlbWEpXG4gICAgICAgICAgICAgICAgdGhpcy5zZXQoa2V5LCBjb2xsZWN0aW9uRnJvbVBhdGgodGhpcy5zY2hlbWEsIHJlc3QsIHZhbHVlKSk7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBZQU1MIGNvbGxlY3Rpb24gYXQgJHtrZXl9LiBSZW1haW5pbmcgcGF0aDogJHtyZXN0fWApO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgeyBDb2xsZWN0aW9uLCBjb2xsZWN0aW9uRnJvbVBhdGgsIGlzRW1wdHlQYXRoIH07XG4iLCAiLyoqXG4gKiBTdHJpbmdpZmllcyBhIGNvbW1lbnQuXG4gKlxuICogRW1wdHkgY29tbWVudCBsaW5lcyBhcmUgbGVmdCBlbXB0eSxcbiAqIGxpbmVzIGNvbnNpc3Rpbmcgb2YgYSBzaW5nbGUgc3BhY2UgYXJlIHJlcGxhY2VkIGJ5IGAjYCxcbiAqIGFuZCBhbGwgb3RoZXIgbGluZXMgYXJlIHByZWZpeGVkIHdpdGggYSBgI2AuXG4gKi9cbmNvbnN0IHN0cmluZ2lmeUNvbW1lbnQgPSAoc3RyKSA9PiBzdHIucmVwbGFjZSgvXig/ISQpKD86ICQpPy9nbSwgJyMnKTtcbmZ1bmN0aW9uIGluZGVudENvbW1lbnQoY29tbWVudCwgaW5kZW50KSB7XG4gICAgaWYgKC9eXFxuKyQvLnRlc3QoY29tbWVudCkpXG4gICAgICAgIHJldHVybiBjb21tZW50LnN1YnN0cmluZygxKTtcbiAgICByZXR1cm4gaW5kZW50ID8gY29tbWVudC5yZXBsYWNlKC9eKD8hICokKS9nbSwgaW5kZW50KSA6IGNvbW1lbnQ7XG59XG5jb25zdCBsaW5lQ29tbWVudCA9IChzdHIsIGluZGVudCwgY29tbWVudCkgPT4gc3RyLmVuZHNXaXRoKCdcXG4nKVxuICAgID8gaW5kZW50Q29tbWVudChjb21tZW50LCBpbmRlbnQpXG4gICAgOiBjb21tZW50LmluY2x1ZGVzKCdcXG4nKVxuICAgICAgICA/ICdcXG4nICsgaW5kZW50Q29tbWVudChjb21tZW50LCBpbmRlbnQpXG4gICAgICAgIDogKHN0ci5lbmRzV2l0aCgnICcpID8gJycgOiAnICcpICsgY29tbWVudDtcblxuZXhwb3J0IHsgaW5kZW50Q29tbWVudCwgbGluZUNvbW1lbnQsIHN0cmluZ2lmeUNvbW1lbnQgfTtcbiIsICJjb25zdCBGT0xEX0ZMT1cgPSAnZmxvdyc7XG5jb25zdCBGT0xEX0JMT0NLID0gJ2Jsb2NrJztcbmNvbnN0IEZPTERfUVVPVEVEID0gJ3F1b3RlZCc7XG4vKipcbiAqIFRyaWVzIHRvIGtlZXAgaW5wdXQgYXQgdXAgdG8gYGxpbmVXaWR0aGAgY2hhcmFjdGVycywgc3BsaXR0aW5nIG9ubHkgb24gc3BhY2VzXG4gKiBub3QgZm9sbG93ZWQgYnkgbmV3bGluZXMgb3Igc3BhY2VzIHVubGVzcyBgbW9kZWAgaXMgYCdxdW90ZWQnYC4gTGluZXMgYXJlXG4gKiB0ZXJtaW5hdGVkIHdpdGggYFxcbmAgYW5kIHN0YXJ0ZWQgd2l0aCBgaW5kZW50YC5cbiAqL1xuZnVuY3Rpb24gZm9sZEZsb3dMaW5lcyh0ZXh0LCBpbmRlbnQsIG1vZGUgPSAnZmxvdycsIHsgaW5kZW50QXRTdGFydCwgbGluZVdpZHRoID0gODAsIG1pbkNvbnRlbnRXaWR0aCA9IDIwLCBvbkZvbGQsIG9uT3ZlcmZsb3cgfSA9IHt9KSB7XG4gICAgaWYgKCFsaW5lV2lkdGggfHwgbGluZVdpZHRoIDwgMClcbiAgICAgICAgcmV0dXJuIHRleHQ7XG4gICAgaWYgKGxpbmVXaWR0aCA8IG1pbkNvbnRlbnRXaWR0aClcbiAgICAgICAgbWluQ29udGVudFdpZHRoID0gMDtcbiAgICBjb25zdCBlbmRTdGVwID0gTWF0aC5tYXgoMSArIG1pbkNvbnRlbnRXaWR0aCwgMSArIGxpbmVXaWR0aCAtIGluZGVudC5sZW5ndGgpO1xuICAgIGlmICh0ZXh0Lmxlbmd0aCA8PSBlbmRTdGVwKVxuICAgICAgICByZXR1cm4gdGV4dDtcbiAgICBjb25zdCBmb2xkcyA9IFtdO1xuICAgIGNvbnN0IGVzY2FwZWRGb2xkcyA9IHt9O1xuICAgIGxldCBlbmQgPSBsaW5lV2lkdGggLSBpbmRlbnQubGVuZ3RoO1xuICAgIGlmICh0eXBlb2YgaW5kZW50QXRTdGFydCA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgaWYgKGluZGVudEF0U3RhcnQgPiBsaW5lV2lkdGggLSBNYXRoLm1heCgyLCBtaW5Db250ZW50V2lkdGgpKVxuICAgICAgICAgICAgZm9sZHMucHVzaCgwKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgZW5kID0gbGluZVdpZHRoIC0gaW5kZW50QXRTdGFydDtcbiAgICB9XG4gICAgbGV0IHNwbGl0ID0gdW5kZWZpbmVkO1xuICAgIGxldCBwcmV2ID0gdW5kZWZpbmVkO1xuICAgIGxldCBvdmVyZmxvdyA9IGZhbHNlO1xuICAgIGxldCBpID0gLTE7XG4gICAgbGV0IGVzY1N0YXJ0ID0gLTE7XG4gICAgbGV0IGVzY0VuZCA9IC0xO1xuICAgIGlmIChtb2RlID09PSBGT0xEX0JMT0NLKSB7XG4gICAgICAgIGkgPSBjb25zdW1lTW9yZUluZGVudGVkTGluZXModGV4dCwgaSwgaW5kZW50Lmxlbmd0aCk7XG4gICAgICAgIGlmIChpICE9PSAtMSlcbiAgICAgICAgICAgIGVuZCA9IGkgKyBlbmRTdGVwO1xuICAgIH1cbiAgICBmb3IgKGxldCBjaDsgKGNoID0gdGV4dFsoaSArPSAxKV0pOykge1xuICAgICAgICBpZiAobW9kZSA9PT0gRk9MRF9RVU9URUQgJiYgY2ggPT09ICdcXFxcJykge1xuICAgICAgICAgICAgZXNjU3RhcnQgPSBpO1xuICAgICAgICAgICAgc3dpdGNoICh0ZXh0W2kgKyAxXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ3gnOlxuICAgICAgICAgICAgICAgICAgICBpICs9IDM7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3UnOlxuICAgICAgICAgICAgICAgICAgICBpICs9IDU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ1UnOlxuICAgICAgICAgICAgICAgICAgICBpICs9IDk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGkgKz0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVzY0VuZCA9IGk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNoID09PSAnXFxuJykge1xuICAgICAgICAgICAgaWYgKG1vZGUgPT09IEZPTERfQkxPQ0spXG4gICAgICAgICAgICAgICAgaSA9IGNvbnN1bWVNb3JlSW5kZW50ZWRMaW5lcyh0ZXh0LCBpLCBpbmRlbnQubGVuZ3RoKTtcbiAgICAgICAgICAgIGVuZCA9IGkgKyBpbmRlbnQubGVuZ3RoICsgZW5kU3RlcDtcbiAgICAgICAgICAgIHNwbGl0ID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKGNoID09PSAnICcgJiZcbiAgICAgICAgICAgICAgICBwcmV2ICYmXG4gICAgICAgICAgICAgICAgcHJldiAhPT0gJyAnICYmXG4gICAgICAgICAgICAgICAgcHJldiAhPT0gJ1xcbicgJiZcbiAgICAgICAgICAgICAgICBwcmV2ICE9PSAnXFx0Jykge1xuICAgICAgICAgICAgICAgIC8vIHNwYWNlIHN1cnJvdW5kZWQgYnkgbm9uLXNwYWNlIGNhbiBiZSByZXBsYWNlZCB3aXRoIG5ld2xpbmUgKyBpbmRlbnRcbiAgICAgICAgICAgICAgICBjb25zdCBuZXh0ID0gdGV4dFtpICsgMV07XG4gICAgICAgICAgICAgICAgaWYgKG5leHQgJiYgbmV4dCAhPT0gJyAnICYmIG5leHQgIT09ICdcXG4nICYmIG5leHQgIT09ICdcXHQnKVxuICAgICAgICAgICAgICAgICAgICBzcGxpdCA9IGk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaSA+PSBlbmQpIHtcbiAgICAgICAgICAgICAgICBpZiAoc3BsaXQpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9sZHMucHVzaChzcGxpdCk7XG4gICAgICAgICAgICAgICAgICAgIGVuZCA9IHNwbGl0ICsgZW5kU3RlcDtcbiAgICAgICAgICAgICAgICAgICAgc3BsaXQgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1vZGUgPT09IEZPTERfUVVPVEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHdoaXRlLXNwYWNlIGNvbGxlY3RlZCBhdCBlbmQgbWF5IHN0cmV0Y2ggcGFzdCBsaW5lV2lkdGhcbiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHByZXYgPT09ICcgJyB8fCBwcmV2ID09PSAnXFx0Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJldiA9IGNoO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2ggPSB0ZXh0WyhpICs9IDEpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJmbG93ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBBY2NvdW50IGZvciBuZXdsaW5lIGVzY2FwZSwgYnV0IGRvbid0IGJyZWFrIHByZWNlZGluZyBlc2NhcGVcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaiA9IGkgPiBlc2NFbmQgKyAxID8gaSAtIDIgOiBlc2NTdGFydCAtIDE7XG4gICAgICAgICAgICAgICAgICAgIC8vIEJhaWwgb3V0IGlmIGxpbmVXaWR0aCAmIG1pbkNvbnRlbnRXaWR0aCBhcmUgc2hvcnRlciB0aGFuIGFuIGVzY2FwZSBzdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVzY2FwZWRGb2xkc1tqXSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0O1xuICAgICAgICAgICAgICAgICAgICBmb2xkcy5wdXNoKGopO1xuICAgICAgICAgICAgICAgICAgICBlc2NhcGVkRm9sZHNbal0gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBlbmQgPSBqICsgZW5kU3RlcDtcbiAgICAgICAgICAgICAgICAgICAgc3BsaXQgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBvdmVyZmxvdyA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHByZXYgPSBjaDtcbiAgICB9XG4gICAgaWYgKG92ZXJmbG93ICYmIG9uT3ZlcmZsb3cpXG4gICAgICAgIG9uT3ZlcmZsb3coKTtcbiAgICBpZiAoZm9sZHMubGVuZ3RoID09PSAwKVxuICAgICAgICByZXR1cm4gdGV4dDtcbiAgICBpZiAob25Gb2xkKVxuICAgICAgICBvbkZvbGQoKTtcbiAgICBsZXQgcmVzID0gdGV4dC5zbGljZSgwLCBmb2xkc1swXSk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmb2xkcy5sZW5ndGg7ICsraSkge1xuICAgICAgICBjb25zdCBmb2xkID0gZm9sZHNbaV07XG4gICAgICAgIGNvbnN0IGVuZCA9IGZvbGRzW2kgKyAxXSB8fCB0ZXh0Lmxlbmd0aDtcbiAgICAgICAgaWYgKGZvbGQgPT09IDApXG4gICAgICAgICAgICByZXMgPSBgXFxuJHtpbmRlbnR9JHt0ZXh0LnNsaWNlKDAsIGVuZCl9YDtcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAobW9kZSA9PT0gRk9MRF9RVU9URUQgJiYgZXNjYXBlZEZvbGRzW2ZvbGRdKVxuICAgICAgICAgICAgICAgIHJlcyArPSBgJHt0ZXh0W2ZvbGRdfVxcXFxgO1xuICAgICAgICAgICAgcmVzICs9IGBcXG4ke2luZGVudH0ke3RleHQuc2xpY2UoZm9sZCArIDEsIGVuZCl9YDtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzO1xufVxuLyoqXG4gKiBQcmVzdW1lcyBgaSArIDFgIGlzIGF0IHRoZSBzdGFydCBvZiBhIGxpbmVcbiAqIEByZXR1cm5zIGluZGV4IG9mIGxhc3QgbmV3bGluZSBpbiBtb3JlLWluZGVudGVkIGJsb2NrXG4gKi9cbmZ1bmN0aW9uIGNvbnN1bWVNb3JlSW5kZW50ZWRMaW5lcyh0ZXh0LCBpLCBpbmRlbnQpIHtcbiAgICBsZXQgZW5kID0gaTtcbiAgICBsZXQgc3RhcnQgPSBpICsgMTtcbiAgICBsZXQgY2ggPSB0ZXh0W3N0YXJ0XTtcbiAgICB3aGlsZSAoY2ggPT09ICcgJyB8fCBjaCA9PT0gJ1xcdCcpIHtcbiAgICAgICAgaWYgKGkgPCBzdGFydCArIGluZGVudCkge1xuICAgICAgICAgICAgY2ggPSB0ZXh0WysraV07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAgICAgY2ggPSB0ZXh0WysraV07XG4gICAgICAgICAgICB9IHdoaWxlIChjaCAmJiBjaCAhPT0gJ1xcbicpO1xuICAgICAgICAgICAgZW5kID0gaTtcbiAgICAgICAgICAgIHN0YXJ0ID0gaSArIDE7XG4gICAgICAgICAgICBjaCA9IHRleHRbc3RhcnRdO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBlbmQ7XG59XG5cbmV4cG9ydCB7IEZPTERfQkxPQ0ssIEZPTERfRkxPVywgRk9MRF9RVU9URUQsIGZvbGRGbG93TGluZXMgfTtcbiIsICJpbXBvcnQgeyBTY2FsYXIgfSBmcm9tICcuLi9ub2Rlcy9TY2FsYXIuanMnO1xuaW1wb3J0IHsgZm9sZEZsb3dMaW5lcywgRk9MRF9RVU9URUQsIEZPTERfRkxPVywgRk9MRF9CTE9DSyB9IGZyb20gJy4vZm9sZEZsb3dMaW5lcy5qcyc7XG5cbmNvbnN0IGdldEZvbGRPcHRpb25zID0gKGN0eCwgaXNCbG9jaykgPT4gKHtcbiAgICBpbmRlbnRBdFN0YXJ0OiBpc0Jsb2NrID8gY3R4LmluZGVudC5sZW5ndGggOiBjdHguaW5kZW50QXRTdGFydCxcbiAgICBsaW5lV2lkdGg6IGN0eC5vcHRpb25zLmxpbmVXaWR0aCxcbiAgICBtaW5Db250ZW50V2lkdGg6IGN0eC5vcHRpb25zLm1pbkNvbnRlbnRXaWR0aFxufSk7XG4vLyBBbHNvIGNoZWNrcyBmb3IgbGluZXMgc3RhcnRpbmcgd2l0aCAlLCBhcyBwYXJzaW5nIHRoZSBvdXRwdXQgYXMgWUFNTCAxLjEgd2lsbFxuLy8gcHJlc3VtZSB0aGF0J3Mgc3RhcnRpbmcgYSBuZXcgZG9jdW1lbnQuXG5jb25zdCBjb250YWluc0RvY3VtZW50TWFya2VyID0gKHN0cikgPT4gL14oJXwtLS18XFwuXFwuXFwuKS9tLnRlc3Qoc3RyKTtcbmZ1bmN0aW9uIGxpbmVMZW5ndGhPdmVyTGltaXQoc3RyLCBsaW5lV2lkdGgsIGluZGVudExlbmd0aCkge1xuICAgIGlmICghbGluZVdpZHRoIHx8IGxpbmVXaWR0aCA8IDApXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCBsaW1pdCA9IGxpbmVXaWR0aCAtIGluZGVudExlbmd0aDtcbiAgICBjb25zdCBzdHJMZW4gPSBzdHIubGVuZ3RoO1xuICAgIGlmIChzdHJMZW4gPD0gbGltaXQpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICBmb3IgKGxldCBpID0gMCwgc3RhcnQgPSAwOyBpIDwgc3RyTGVuOyArK2kpIHtcbiAgICAgICAgaWYgKHN0cltpXSA9PT0gJ1xcbicpIHtcbiAgICAgICAgICAgIGlmIChpIC0gc3RhcnQgPiBsaW1pdClcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIHN0YXJ0ID0gaSArIDE7XG4gICAgICAgICAgICBpZiAoc3RyTGVuIC0gc3RhcnQgPD0gbGltaXQpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xufVxuZnVuY3Rpb24gZG91YmxlUXVvdGVkU3RyaW5nKHZhbHVlLCBjdHgpIHtcbiAgICBjb25zdCBqc29uID0gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuICAgIGlmIChjdHgub3B0aW9ucy5kb3VibGVRdW90ZWRBc0pTT04pXG4gICAgICAgIHJldHVybiBqc29uO1xuICAgIGNvbnN0IHsgaW1wbGljaXRLZXkgfSA9IGN0eDtcbiAgICBjb25zdCBtaW5NdWx0aUxpbmVMZW5ndGggPSBjdHgub3B0aW9ucy5kb3VibGVRdW90ZWRNaW5NdWx0aUxpbmVMZW5ndGg7XG4gICAgY29uc3QgaW5kZW50ID0gY3R4LmluZGVudCB8fCAoY29udGFpbnNEb2N1bWVudE1hcmtlcih2YWx1ZSkgPyAnICAnIDogJycpO1xuICAgIGxldCBzdHIgPSAnJztcbiAgICBsZXQgc3RhcnQgPSAwO1xuICAgIGZvciAobGV0IGkgPSAwLCBjaCA9IGpzb25baV07IGNoOyBjaCA9IGpzb25bKytpXSkge1xuICAgICAgICBpZiAoY2ggPT09ICcgJyAmJiBqc29uW2kgKyAxXSA9PT0gJ1xcXFwnICYmIGpzb25baSArIDJdID09PSAnbicpIHtcbiAgICAgICAgICAgIC8vIHNwYWNlIGJlZm9yZSBuZXdsaW5lIG5lZWRzIHRvIGJlIGVzY2FwZWQgdG8gbm90IGJlIGZvbGRlZFxuICAgICAgICAgICAgc3RyICs9IGpzb24uc2xpY2Uoc3RhcnQsIGkpICsgJ1xcXFwgJztcbiAgICAgICAgICAgIGkgKz0gMTtcbiAgICAgICAgICAgIHN0YXJ0ID0gaTtcbiAgICAgICAgICAgIGNoID0gJ1xcXFwnO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjaCA9PT0gJ1xcXFwnKVxuICAgICAgICAgICAgc3dpdGNoIChqc29uW2kgKyAxXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ3UnOlxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHIgKz0ganNvbi5zbGljZShzdGFydCwgaSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb2RlID0ganNvbi5zdWJzdHIoaSArIDIsIDQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChjb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnMDAwMCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ciArPSAnXFxcXDAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICcwMDA3JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyICs9ICdcXFxcYSc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJzAwMGInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIgKz0gJ1xcXFx2JztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnMDAxYic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ciArPSAnXFxcXGUnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICcwMDg1JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyICs9ICdcXFxcTic7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJzAwYTAnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIgKz0gJ1xcXFxfJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnMjAyOCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ciArPSAnXFxcXEwnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICcyMDI5JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyICs9ICdcXFxcUCc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb2RlLnN1YnN0cigwLCAyKSA9PT0gJzAwJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ciArPSAnXFxcXHgnICsgY29kZS5zdWJzdHIoMik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ciArPSBqc29uLnN1YnN0cihpLCA2KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGkgKz0gNTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0ID0gaSArIDE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnbic6XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbXBsaWNpdEtleSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAganNvbltpICsgMl0gPT09ICdcIicgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGpzb24ubGVuZ3RoIDwgbWluTXVsdGlMaW5lTGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpICs9IDE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBmb2xkaW5nIHdpbGwgZWF0IGZpcnN0IG5ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0ciArPSBqc29uLnNsaWNlKHN0YXJ0LCBpKSArICdcXG5cXG4nO1xuICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGpzb25baSArIDJdID09PSAnXFxcXCcgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uW2kgKyAzXSA9PT0gJ24nICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbltpICsgNF0gIT09ICdcIicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIgKz0gJ1xcbic7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaSArPSAyO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgc3RyICs9IGluZGVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNwYWNlIGFmdGVyIG5ld2xpbmUgbmVlZHMgdG8gYmUgZXNjYXBlZCB0byBub3QgYmUgZm9sZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoanNvbltpICsgMl0gPT09ICcgJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIgKz0gJ1xcXFwnO1xuICAgICAgICAgICAgICAgICAgICAgICAgaSArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQgPSBpICsgMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBpICs9IDE7XG4gICAgICAgICAgICB9XG4gICAgfVxuICAgIHN0ciA9IHN0YXJ0ID8gc3RyICsganNvbi5zbGljZShzdGFydCkgOiBqc29uO1xuICAgIHJldHVybiBpbXBsaWNpdEtleVxuICAgICAgICA/IHN0clxuICAgICAgICA6IGZvbGRGbG93TGluZXMoc3RyLCBpbmRlbnQsIEZPTERfUVVPVEVELCBnZXRGb2xkT3B0aW9ucyhjdHgsIGZhbHNlKSk7XG59XG5mdW5jdGlvbiBzaW5nbGVRdW90ZWRTdHJpbmcodmFsdWUsIGN0eCkge1xuICAgIGlmIChjdHgub3B0aW9ucy5zaW5nbGVRdW90ZSA9PT0gZmFsc2UgfHxcbiAgICAgICAgKGN0eC5pbXBsaWNpdEtleSAmJiB2YWx1ZS5pbmNsdWRlcygnXFxuJykpIHx8XG4gICAgICAgIC9bIFxcdF1cXG58XFxuWyBcXHRdLy50ZXN0KHZhbHVlKSAvLyBzaW5nbGUgcXVvdGVkIHN0cmluZyBjYW4ndCBoYXZlIGxlYWRpbmcgb3IgdHJhaWxpbmcgd2hpdGVzcGFjZSBhcm91bmQgbmV3bGluZVxuICAgIClcbiAgICAgICAgcmV0dXJuIGRvdWJsZVF1b3RlZFN0cmluZyh2YWx1ZSwgY3R4KTtcbiAgICBjb25zdCBpbmRlbnQgPSBjdHguaW5kZW50IHx8IChjb250YWluc0RvY3VtZW50TWFya2VyKHZhbHVlKSA/ICcgICcgOiAnJyk7XG4gICAgY29uc3QgcmVzID0gXCInXCIgKyB2YWx1ZS5yZXBsYWNlKC8nL2csIFwiJydcIikucmVwbGFjZSgvXFxuKy9nLCBgJCZcXG4ke2luZGVudH1gKSArIFwiJ1wiO1xuICAgIHJldHVybiBjdHguaW1wbGljaXRLZXlcbiAgICAgICAgPyByZXNcbiAgICAgICAgOiBmb2xkRmxvd0xpbmVzKHJlcywgaW5kZW50LCBGT0xEX0ZMT1csIGdldEZvbGRPcHRpb25zKGN0eCwgZmFsc2UpKTtcbn1cbmZ1bmN0aW9uIHF1b3RlZFN0cmluZyh2YWx1ZSwgY3R4KSB7XG4gICAgY29uc3QgeyBzaW5nbGVRdW90ZSB9ID0gY3R4Lm9wdGlvbnM7XG4gICAgbGV0IHFzO1xuICAgIGlmIChzaW5nbGVRdW90ZSA9PT0gZmFsc2UpXG4gICAgICAgIHFzID0gZG91YmxlUXVvdGVkU3RyaW5nO1xuICAgIGVsc2Uge1xuICAgICAgICBjb25zdCBoYXNEb3VibGUgPSB2YWx1ZS5pbmNsdWRlcygnXCInKTtcbiAgICAgICAgY29uc3QgaGFzU2luZ2xlID0gdmFsdWUuaW5jbHVkZXMoXCInXCIpO1xuICAgICAgICBpZiAoaGFzRG91YmxlICYmICFoYXNTaW5nbGUpXG4gICAgICAgICAgICBxcyA9IHNpbmdsZVF1b3RlZFN0cmluZztcbiAgICAgICAgZWxzZSBpZiAoaGFzU2luZ2xlICYmICFoYXNEb3VibGUpXG4gICAgICAgICAgICBxcyA9IGRvdWJsZVF1b3RlZFN0cmluZztcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgcXMgPSBzaW5nbGVRdW90ZSA/IHNpbmdsZVF1b3RlZFN0cmluZyA6IGRvdWJsZVF1b3RlZFN0cmluZztcbiAgICB9XG4gICAgcmV0dXJuIHFzKHZhbHVlLCBjdHgpO1xufVxuLy8gVGhlIG5lZ2F0aXZlIGxvb2tiZWhpbmQgYXZvaWRzIGEgcG9seW5vbWlhbCBzZWFyY2gsXG4vLyBidXQgaXNuJ3Qgc3VwcG9ydGVkIHlldCBvbiBTYWZhcmk6IGh0dHBzOi8vY2FuaXVzZS5jb20vanMtcmVnZXhwLWxvb2tiZWhpbmRcbmxldCBibG9ja0VuZE5ld2xpbmVzO1xudHJ5IHtcbiAgICBibG9ja0VuZE5ld2xpbmVzID0gbmV3IFJlZ0V4cCgnKF58KD88IVxcbikpXFxuKyg/IVxcbnwkKScsICdnJyk7XG59XG5jYXRjaCB7XG4gICAgYmxvY2tFbmROZXdsaW5lcyA9IC9cXG4rKD8hXFxufCQpL2c7XG59XG5mdW5jdGlvbiBibG9ja1N0cmluZyh7IGNvbW1lbnQsIHR5cGUsIHZhbHVlIH0sIGN0eCwgb25Db21tZW50LCBvbkNob21wS2VlcCkge1xuICAgIGNvbnN0IHsgYmxvY2tRdW90ZSwgY29tbWVudFN0cmluZywgbGluZVdpZHRoIH0gPSBjdHgub3B0aW9ucztcbiAgICAvLyAxLiBCbG9jayBjYW4ndCBlbmQgaW4gd2hpdGVzcGFjZSB1bmxlc3MgdGhlIGxhc3QgbGluZSBpcyBub24tZW1wdHkuXG4gICAgLy8gMi4gU3RyaW5ncyBjb25zaXN0aW5nIG9mIG9ubHkgd2hpdGVzcGFjZSBhcmUgYmVzdCByZW5kZXJlZCBleHBsaWNpdGx5LlxuICAgIGlmICghYmxvY2tRdW90ZSB8fCAvXFxuW1xcdCBdKyQvLnRlc3QodmFsdWUpIHx8IC9eXFxzKiQvLnRlc3QodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBxdW90ZWRTdHJpbmcodmFsdWUsIGN0eCk7XG4gICAgfVxuICAgIGNvbnN0IGluZGVudCA9IGN0eC5pbmRlbnQgfHxcbiAgICAgICAgKGN0eC5mb3JjZUJsb2NrSW5kZW50IHx8IGNvbnRhaW5zRG9jdW1lbnRNYXJrZXIodmFsdWUpID8gJyAgJyA6ICcnKTtcbiAgICBjb25zdCBsaXRlcmFsID0gYmxvY2tRdW90ZSA9PT0gJ2xpdGVyYWwnXG4gICAgICAgID8gdHJ1ZVxuICAgICAgICA6IGJsb2NrUXVvdGUgPT09ICdmb2xkZWQnIHx8IHR5cGUgPT09IFNjYWxhci5CTE9DS19GT0xERURcbiAgICAgICAgICAgID8gZmFsc2VcbiAgICAgICAgICAgIDogdHlwZSA9PT0gU2NhbGFyLkJMT0NLX0xJVEVSQUxcbiAgICAgICAgICAgICAgICA/IHRydWVcbiAgICAgICAgICAgICAgICA6ICFsaW5lTGVuZ3RoT3ZlckxpbWl0KHZhbHVlLCBsaW5lV2lkdGgsIGluZGVudC5sZW5ndGgpO1xuICAgIGlmICghdmFsdWUpXG4gICAgICAgIHJldHVybiBsaXRlcmFsID8gJ3xcXG4nIDogJz5cXG4nO1xuICAgIC8vIGRldGVybWluZSBjaG9tcGluZyBmcm9tIHdoaXRlc3BhY2UgYXQgdmFsdWUgZW5kXG4gICAgbGV0IGNob21wO1xuICAgIGxldCBlbmRTdGFydDtcbiAgICBmb3IgKGVuZFN0YXJ0ID0gdmFsdWUubGVuZ3RoOyBlbmRTdGFydCA+IDA7IC0tZW5kU3RhcnQpIHtcbiAgICAgICAgY29uc3QgY2ggPSB2YWx1ZVtlbmRTdGFydCAtIDFdO1xuICAgICAgICBpZiAoY2ggIT09ICdcXG4nICYmIGNoICE9PSAnXFx0JyAmJiBjaCAhPT0gJyAnKVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGxldCBlbmQgPSB2YWx1ZS5zdWJzdHJpbmcoZW5kU3RhcnQpO1xuICAgIGNvbnN0IGVuZE5sUG9zID0gZW5kLmluZGV4T2YoJ1xcbicpO1xuICAgIGlmIChlbmRObFBvcyA9PT0gLTEpIHtcbiAgICAgICAgY2hvbXAgPSAnLSc7IC8vIHN0cmlwXG4gICAgfVxuICAgIGVsc2UgaWYgKHZhbHVlID09PSBlbmQgfHwgZW5kTmxQb3MgIT09IGVuZC5sZW5ndGggLSAxKSB7XG4gICAgICAgIGNob21wID0gJysnOyAvLyBrZWVwXG4gICAgICAgIGlmIChvbkNob21wS2VlcClcbiAgICAgICAgICAgIG9uQ2hvbXBLZWVwKCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBjaG9tcCA9ICcnOyAvLyBjbGlwXG4gICAgfVxuICAgIGlmIChlbmQpIHtcbiAgICAgICAgdmFsdWUgPSB2YWx1ZS5zbGljZSgwLCAtZW5kLmxlbmd0aCk7XG4gICAgICAgIGlmIChlbmRbZW5kLmxlbmd0aCAtIDFdID09PSAnXFxuJylcbiAgICAgICAgICAgIGVuZCA9IGVuZC5zbGljZSgwLCAtMSk7XG4gICAgICAgIGVuZCA9IGVuZC5yZXBsYWNlKGJsb2NrRW5kTmV3bGluZXMsIGAkJiR7aW5kZW50fWApO1xuICAgIH1cbiAgICAvLyBkZXRlcm1pbmUgaW5kZW50IGluZGljYXRvciBmcm9tIHdoaXRlc3BhY2UgYXQgdmFsdWUgc3RhcnRcbiAgICBsZXQgc3RhcnRXaXRoU3BhY2UgPSBmYWxzZTtcbiAgICBsZXQgc3RhcnRFbmQ7XG4gICAgbGV0IHN0YXJ0TmxQb3MgPSAtMTtcbiAgICBmb3IgKHN0YXJ0RW5kID0gMDsgc3RhcnRFbmQgPCB2YWx1ZS5sZW5ndGg7ICsrc3RhcnRFbmQpIHtcbiAgICAgICAgY29uc3QgY2ggPSB2YWx1ZVtzdGFydEVuZF07XG4gICAgICAgIGlmIChjaCA9PT0gJyAnKVxuICAgICAgICAgICAgc3RhcnRXaXRoU3BhY2UgPSB0cnVlO1xuICAgICAgICBlbHNlIGlmIChjaCA9PT0gJ1xcbicpXG4gICAgICAgICAgICBzdGFydE5sUG9zID0gc3RhcnRFbmQ7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBsZXQgc3RhcnQgPSB2YWx1ZS5zdWJzdHJpbmcoMCwgc3RhcnRObFBvcyA8IHN0YXJ0RW5kID8gc3RhcnRObFBvcyArIDEgOiBzdGFydEVuZCk7XG4gICAgaWYgKHN0YXJ0KSB7XG4gICAgICAgIHZhbHVlID0gdmFsdWUuc3Vic3RyaW5nKHN0YXJ0Lmxlbmd0aCk7XG4gICAgICAgIHN0YXJ0ID0gc3RhcnQucmVwbGFjZSgvXFxuKy9nLCBgJCYke2luZGVudH1gKTtcbiAgICB9XG4gICAgY29uc3QgaW5kZW50U2l6ZSA9IGluZGVudCA/ICcyJyA6ICcxJzsgLy8gcm9vdCBpcyBhdCAtMVxuICAgIGxldCBoZWFkZXIgPSAobGl0ZXJhbCA/ICd8JyA6ICc+JykgKyAoc3RhcnRXaXRoU3BhY2UgPyBpbmRlbnRTaXplIDogJycpICsgY2hvbXA7XG4gICAgaWYgKGNvbW1lbnQpIHtcbiAgICAgICAgaGVhZGVyICs9ICcgJyArIGNvbW1lbnRTdHJpbmcoY29tbWVudC5yZXBsYWNlKC8gP1tcXHJcXG5dKy9nLCAnICcpKTtcbiAgICAgICAgaWYgKG9uQ29tbWVudClcbiAgICAgICAgICAgIG9uQ29tbWVudCgpO1xuICAgIH1cbiAgICBpZiAobGl0ZXJhbCkge1xuICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL1xcbisvZywgYCQmJHtpbmRlbnR9YCk7XG4gICAgICAgIHJldHVybiBgJHtoZWFkZXJ9XFxuJHtpbmRlbnR9JHtzdGFydH0ke3ZhbHVlfSR7ZW5kfWA7XG4gICAgfVxuICAgIHZhbHVlID0gdmFsdWVcbiAgICAgICAgLnJlcGxhY2UoL1xcbisvZywgJ1xcbiQmJylcbiAgICAgICAgLnJlcGxhY2UoLyg/Ol58XFxuKShbXFx0IF0uKikoPzooW1xcblxcdCBdKilcXG4oPyFbXFxuXFx0IF0pKT8vZywgJyQxJDInKSAvLyBtb3JlLWluZGVudGVkIGxpbmVzIGFyZW4ndCBmb2xkZWRcbiAgICAgICAgLy8gICAgICAgICAgICAgICAgXiBtb3JlLWluZC4gXiBlbXB0eSAgICAgXiBjYXB0dXJlIG5leHQgZW1wdHkgbGluZXMgb25seSBhdCBlbmQgb2YgaW5kZW50XG4gICAgICAgIC5yZXBsYWNlKC9cXG4rL2csIGAkJiR7aW5kZW50fWApO1xuICAgIGNvbnN0IGJvZHkgPSBmb2xkRmxvd0xpbmVzKGAke3N0YXJ0fSR7dmFsdWV9JHtlbmR9YCwgaW5kZW50LCBGT0xEX0JMT0NLLCBnZXRGb2xkT3B0aW9ucyhjdHgsIHRydWUpKTtcbiAgICByZXR1cm4gYCR7aGVhZGVyfVxcbiR7aW5kZW50fSR7Ym9keX1gO1xufVxuZnVuY3Rpb24gcGxhaW5TdHJpbmcoaXRlbSwgY3R4LCBvbkNvbW1lbnQsIG9uQ2hvbXBLZWVwKSB7XG4gICAgY29uc3QgeyB0eXBlLCB2YWx1ZSB9ID0gaXRlbTtcbiAgICBjb25zdCB7IGFjdHVhbFN0cmluZywgaW1wbGljaXRLZXksIGluZGVudCwgaW5kZW50U3RlcCwgaW5GbG93IH0gPSBjdHg7XG4gICAgaWYgKChpbXBsaWNpdEtleSAmJiB2YWx1ZS5pbmNsdWRlcygnXFxuJykpIHx8XG4gICAgICAgIChpbkZsb3cgJiYgL1tbXFxde30sXS8udGVzdCh2YWx1ZSkpKSB7XG4gICAgICAgIHJldHVybiBxdW90ZWRTdHJpbmcodmFsdWUsIGN0eCk7XG4gICAgfVxuICAgIGlmICghdmFsdWUgfHxcbiAgICAgICAgL15bXFxuXFx0ICxbXFxde30jJiohfD4nXCIlQGBdfF5bPy1dJHxeWz8tXVsgXFx0XXxbXFxuOl1bIFxcdF18WyBcXHRdXFxufFtcXG5cXHQgXSN8W1xcblxcdCA6XSQvLnRlc3QodmFsdWUpKSB7XG4gICAgICAgIC8vIG5vdCBhbGxvd2VkOlxuICAgICAgICAvLyAtIGVtcHR5IHN0cmluZywgJy0nIG9yICc/J1xuICAgICAgICAvLyAtIHN0YXJ0IHdpdGggYW4gaW5kaWNhdG9yIGNoYXJhY3RlciAoZXhjZXB0IFs/Oi1dKSBvciAvWz8tXSAvXG4gICAgICAgIC8vIC0gJ1xcbiAnLCAnOiAnIG9yICcgXFxuJyBhbnl3aGVyZVxuICAgICAgICAvLyAtICcjJyBub3QgcHJlY2VkZWQgYnkgYSBub24tc3BhY2UgY2hhclxuICAgICAgICAvLyAtIGVuZCB3aXRoICcgJyBvciAnOidcbiAgICAgICAgcmV0dXJuIGltcGxpY2l0S2V5IHx8IGluRmxvdyB8fCAhdmFsdWUuaW5jbHVkZXMoJ1xcbicpXG4gICAgICAgICAgICA/IHF1b3RlZFN0cmluZyh2YWx1ZSwgY3R4KVxuICAgICAgICAgICAgOiBibG9ja1N0cmluZyhpdGVtLCBjdHgsIG9uQ29tbWVudCwgb25DaG9tcEtlZXApO1xuICAgIH1cbiAgICBpZiAoIWltcGxpY2l0S2V5ICYmXG4gICAgICAgICFpbkZsb3cgJiZcbiAgICAgICAgdHlwZSAhPT0gU2NhbGFyLlBMQUlOICYmXG4gICAgICAgIHZhbHVlLmluY2x1ZGVzKCdcXG4nKSkge1xuICAgICAgICAvLyBXaGVyZSBhbGxvd2VkICYgdHlwZSBub3Qgc2V0IGV4cGxpY2l0bHksIHByZWZlciBibG9jayBzdHlsZSBmb3IgbXVsdGlsaW5lIHN0cmluZ3NcbiAgICAgICAgcmV0dXJuIGJsb2NrU3RyaW5nKGl0ZW0sIGN0eCwgb25Db21tZW50LCBvbkNob21wS2VlcCk7XG4gICAgfVxuICAgIGlmIChjb250YWluc0RvY3VtZW50TWFya2VyKHZhbHVlKSkge1xuICAgICAgICBpZiAoaW5kZW50ID09PSAnJykge1xuICAgICAgICAgICAgY3R4LmZvcmNlQmxvY2tJbmRlbnQgPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuIGJsb2NrU3RyaW5nKGl0ZW0sIGN0eCwgb25Db21tZW50LCBvbkNob21wS2VlcCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaW1wbGljaXRLZXkgJiYgaW5kZW50ID09PSBpbmRlbnRTdGVwKSB7XG4gICAgICAgICAgICByZXR1cm4gcXVvdGVkU3RyaW5nKHZhbHVlLCBjdHgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNvbnN0IHN0ciA9IHZhbHVlLnJlcGxhY2UoL1xcbisvZywgYCQmXFxuJHtpbmRlbnR9YCk7XG4gICAgLy8gVmVyaWZ5IHRoYXQgb3V0cHV0IHdpbGwgYmUgcGFyc2VkIGFzIGEgc3RyaW5nLCBhcyBlLmcuIHBsYWluIG51bWJlcnMgYW5kXG4gICAgLy8gYm9vbGVhbnMgZ2V0IHBhcnNlZCB3aXRoIHRob3NlIHR5cGVzIGluIHYxLjIgKGUuZy4gJzQyJywgJ3RydWUnICYgJzAuOWUtMycpLFxuICAgIC8vIGFuZCBvdGhlcnMgaW4gdjEuMS5cbiAgICBpZiAoYWN0dWFsU3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IHRlc3QgPSAodGFnKSA9PiB0YWcuZGVmYXVsdCAmJiB0YWcudGFnICE9PSAndGFnOnlhbWwub3JnLDIwMDI6c3RyJyAmJiB0YWcudGVzdD8udGVzdChzdHIpO1xuICAgICAgICBjb25zdCB7IGNvbXBhdCwgdGFncyB9ID0gY3R4LmRvYy5zY2hlbWE7XG4gICAgICAgIGlmICh0YWdzLnNvbWUodGVzdCkgfHwgY29tcGF0Py5zb21lKHRlc3QpKVxuICAgICAgICAgICAgcmV0dXJuIHF1b3RlZFN0cmluZyh2YWx1ZSwgY3R4KTtcbiAgICB9XG4gICAgcmV0dXJuIGltcGxpY2l0S2V5XG4gICAgICAgID8gc3RyXG4gICAgICAgIDogZm9sZEZsb3dMaW5lcyhzdHIsIGluZGVudCwgRk9MRF9GTE9XLCBnZXRGb2xkT3B0aW9ucyhjdHgsIGZhbHNlKSk7XG59XG5mdW5jdGlvbiBzdHJpbmdpZnlTdHJpbmcoaXRlbSwgY3R4LCBvbkNvbW1lbnQsIG9uQ2hvbXBLZWVwKSB7XG4gICAgY29uc3QgeyBpbXBsaWNpdEtleSwgaW5GbG93IH0gPSBjdHg7XG4gICAgY29uc3Qgc3MgPSB0eXBlb2YgaXRlbS52YWx1ZSA9PT0gJ3N0cmluZydcbiAgICAgICAgPyBpdGVtXG4gICAgICAgIDogT2JqZWN0LmFzc2lnbih7fSwgaXRlbSwgeyB2YWx1ZTogU3RyaW5nKGl0ZW0udmFsdWUpIH0pO1xuICAgIGxldCB7IHR5cGUgfSA9IGl0ZW07XG4gICAgaWYgKHR5cGUgIT09IFNjYWxhci5RVU9URV9ET1VCTEUpIHtcbiAgICAgICAgLy8gZm9yY2UgZG91YmxlIHF1b3RlcyBvbiBjb250cm9sIGNoYXJhY3RlcnMgJiB1bnBhaXJlZCBzdXJyb2dhdGVzXG4gICAgICAgIGlmICgvW1xceDAwLVxceDA4XFx4MGItXFx4MWZcXHg3Zi1cXHg5ZlxcdXtEODAwfS1cXHV7REZGRn1dL3UudGVzdChzcy52YWx1ZSkpXG4gICAgICAgICAgICB0eXBlID0gU2NhbGFyLlFVT1RFX0RPVUJMRTtcbiAgICB9XG4gICAgY29uc3QgX3N0cmluZ2lmeSA9IChfdHlwZSkgPT4ge1xuICAgICAgICBzd2l0Y2ggKF90eXBlKSB7XG4gICAgICAgICAgICBjYXNlIFNjYWxhci5CTE9DS19GT0xERUQ6XG4gICAgICAgICAgICBjYXNlIFNjYWxhci5CTE9DS19MSVRFUkFMOlxuICAgICAgICAgICAgICAgIHJldHVybiBpbXBsaWNpdEtleSB8fCBpbkZsb3dcbiAgICAgICAgICAgICAgICAgICAgPyBxdW90ZWRTdHJpbmcoc3MudmFsdWUsIGN0eCkgLy8gYmxvY2tzIGFyZSBub3QgdmFsaWQgaW5zaWRlIGZsb3cgY29udGFpbmVyc1xuICAgICAgICAgICAgICAgICAgICA6IGJsb2NrU3RyaW5nKHNzLCBjdHgsIG9uQ29tbWVudCwgb25DaG9tcEtlZXApO1xuICAgICAgICAgICAgY2FzZSBTY2FsYXIuUVVPVEVfRE9VQkxFOlxuICAgICAgICAgICAgICAgIHJldHVybiBkb3VibGVRdW90ZWRTdHJpbmcoc3MudmFsdWUsIGN0eCk7XG4gICAgICAgICAgICBjYXNlIFNjYWxhci5RVU9URV9TSU5HTEU6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNpbmdsZVF1b3RlZFN0cmluZyhzcy52YWx1ZSwgY3R4KTtcbiAgICAgICAgICAgIGNhc2UgU2NhbGFyLlBMQUlOOlxuICAgICAgICAgICAgICAgIHJldHVybiBwbGFpblN0cmluZyhzcywgY3R4LCBvbkNvbW1lbnQsIG9uQ2hvbXBLZWVwKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIGxldCByZXMgPSBfc3RyaW5naWZ5KHR5cGUpO1xuICAgIGlmIChyZXMgPT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgeyBkZWZhdWx0S2V5VHlwZSwgZGVmYXVsdFN0cmluZ1R5cGUgfSA9IGN0eC5vcHRpb25zO1xuICAgICAgICBjb25zdCB0ID0gKGltcGxpY2l0S2V5ICYmIGRlZmF1bHRLZXlUeXBlKSB8fCBkZWZhdWx0U3RyaW5nVHlwZTtcbiAgICAgICAgcmVzID0gX3N0cmluZ2lmeSh0KTtcbiAgICAgICAgaWYgKHJlcyA9PT0gbnVsbClcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgZGVmYXVsdCBzdHJpbmcgdHlwZSAke3R9YCk7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG59XG5cbmV4cG9ydCB7IHN0cmluZ2lmeVN0cmluZyB9O1xuIiwgImltcG9ydCB7IGFuY2hvcklzVmFsaWQgfSBmcm9tICcuLi9kb2MvYW5jaG9ycy5qcyc7XG5pbXBvcnQgeyBpc1BhaXIsIGlzQWxpYXMsIGlzTm9kZSwgaXNTY2FsYXIsIGlzQ29sbGVjdGlvbiB9IGZyb20gJy4uL25vZGVzL2lkZW50aXR5LmpzJztcbmltcG9ydCB7IHN0cmluZ2lmeUNvbW1lbnQgfSBmcm9tICcuL3N0cmluZ2lmeUNvbW1lbnQuanMnO1xuaW1wb3J0IHsgc3RyaW5naWZ5U3RyaW5nIH0gZnJvbSAnLi9zdHJpbmdpZnlTdHJpbmcuanMnO1xuXG5mdW5jdGlvbiBjcmVhdGVTdHJpbmdpZnlDb250ZXh0KGRvYywgb3B0aW9ucykge1xuICAgIGNvbnN0IG9wdCA9IE9iamVjdC5hc3NpZ24oe1xuICAgICAgICBibG9ja1F1b3RlOiB0cnVlLFxuICAgICAgICBjb21tZW50U3RyaW5nOiBzdHJpbmdpZnlDb21tZW50LFxuICAgICAgICBkZWZhdWx0S2V5VHlwZTogbnVsbCxcbiAgICAgICAgZGVmYXVsdFN0cmluZ1R5cGU6ICdQTEFJTicsXG4gICAgICAgIGRpcmVjdGl2ZXM6IG51bGwsXG4gICAgICAgIGRvdWJsZVF1b3RlZEFzSlNPTjogZmFsc2UsXG4gICAgICAgIGRvdWJsZVF1b3RlZE1pbk11bHRpTGluZUxlbmd0aDogNDAsXG4gICAgICAgIGZhbHNlU3RyOiAnZmFsc2UnLFxuICAgICAgICBmbG93Q29sbGVjdGlvblBhZGRpbmc6IHRydWUsXG4gICAgICAgIGluZGVudFNlcTogdHJ1ZSxcbiAgICAgICAgbGluZVdpZHRoOiA4MCxcbiAgICAgICAgbWluQ29udGVudFdpZHRoOiAyMCxcbiAgICAgICAgbnVsbFN0cjogJ251bGwnLFxuICAgICAgICBzaW1wbGVLZXlzOiBmYWxzZSxcbiAgICAgICAgc2luZ2xlUXVvdGU6IG51bGwsXG4gICAgICAgIHRydWVTdHI6ICd0cnVlJyxcbiAgICAgICAgdmVyaWZ5QWxpYXNPcmRlcjogdHJ1ZVxuICAgIH0sIGRvYy5zY2hlbWEudG9TdHJpbmdPcHRpb25zLCBvcHRpb25zKTtcbiAgICBsZXQgaW5GbG93O1xuICAgIHN3aXRjaCAob3B0LmNvbGxlY3Rpb25TdHlsZSkge1xuICAgICAgICBjYXNlICdibG9jayc6XG4gICAgICAgICAgICBpbkZsb3cgPSBmYWxzZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdmbG93JzpcbiAgICAgICAgICAgIGluRmxvdyA9IHRydWU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIGluRmxvdyA9IG51bGw7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIGFuY2hvcnM6IG5ldyBTZXQoKSxcbiAgICAgICAgZG9jLFxuICAgICAgICBmbG93Q29sbGVjdGlvblBhZGRpbmc6IG9wdC5mbG93Q29sbGVjdGlvblBhZGRpbmcgPyAnICcgOiAnJyxcbiAgICAgICAgaW5kZW50OiAnJyxcbiAgICAgICAgaW5kZW50U3RlcDogdHlwZW9mIG9wdC5pbmRlbnQgPT09ICdudW1iZXInID8gJyAnLnJlcGVhdChvcHQuaW5kZW50KSA6ICcgICcsXG4gICAgICAgIGluRmxvdyxcbiAgICAgICAgb3B0aW9uczogb3B0XG4gICAgfTtcbn1cbmZ1bmN0aW9uIGdldFRhZ09iamVjdCh0YWdzLCBpdGVtKSB7XG4gICAgaWYgKGl0ZW0udGFnKSB7XG4gICAgICAgIGNvbnN0IG1hdGNoID0gdGFncy5maWx0ZXIodCA9PiB0LnRhZyA9PT0gaXRlbS50YWcpO1xuICAgICAgICBpZiAobWF0Y2gubGVuZ3RoID4gMClcbiAgICAgICAgICAgIHJldHVybiBtYXRjaC5maW5kKHQgPT4gdC5mb3JtYXQgPT09IGl0ZW0uZm9ybWF0KSA/PyBtYXRjaFswXTtcbiAgICB9XG4gICAgbGV0IHRhZ09iaiA9IHVuZGVmaW5lZDtcbiAgICBsZXQgb2JqO1xuICAgIGlmIChpc1NjYWxhcihpdGVtKSkge1xuICAgICAgICBvYmogPSBpdGVtLnZhbHVlO1xuICAgICAgICBsZXQgbWF0Y2ggPSB0YWdzLmZpbHRlcih0ID0+IHQuaWRlbnRpZnk/LihvYmopKTtcbiAgICAgICAgaWYgKG1hdGNoLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IHRlc3RNYXRjaCA9IG1hdGNoLmZpbHRlcih0ID0+IHQudGVzdCk7XG4gICAgICAgICAgICBpZiAodGVzdE1hdGNoLmxlbmd0aCA+IDApXG4gICAgICAgICAgICAgICAgbWF0Y2ggPSB0ZXN0TWF0Y2g7XG4gICAgICAgIH1cbiAgICAgICAgdGFnT2JqID1cbiAgICAgICAgICAgIG1hdGNoLmZpbmQodCA9PiB0LmZvcm1hdCA9PT0gaXRlbS5mb3JtYXQpID8/IG1hdGNoLmZpbmQodCA9PiAhdC5mb3JtYXQpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgb2JqID0gaXRlbTtcbiAgICAgICAgdGFnT2JqID0gdGFncy5maW5kKHQgPT4gdC5ub2RlQ2xhc3MgJiYgb2JqIGluc3RhbmNlb2YgdC5ub2RlQ2xhc3MpO1xuICAgIH1cbiAgICBpZiAoIXRhZ09iaikge1xuICAgICAgICBjb25zdCBuYW1lID0gb2JqPy5jb25zdHJ1Y3Rvcj8ubmFtZSA/PyB0eXBlb2Ygb2JqO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFRhZyBub3QgcmVzb2x2ZWQgZm9yICR7bmFtZX0gdmFsdWVgKTtcbiAgICB9XG4gICAgcmV0dXJuIHRhZ09iajtcbn1cbi8vIG5lZWRzIHRvIGJlIGNhbGxlZCBiZWZvcmUgdmFsdWUgc3RyaW5naWZpZXIgdG8gYWxsb3cgZm9yIGNpcmN1bGFyIGFuY2hvciByZWZzXG5mdW5jdGlvbiBzdHJpbmdpZnlQcm9wcyhub2RlLCB0YWdPYmosIHsgYW5jaG9ycywgZG9jIH0pIHtcbiAgICBpZiAoIWRvYy5kaXJlY3RpdmVzKVxuICAgICAgICByZXR1cm4gJyc7XG4gICAgY29uc3QgcHJvcHMgPSBbXTtcbiAgICBjb25zdCBhbmNob3IgPSAoaXNTY2FsYXIobm9kZSkgfHwgaXNDb2xsZWN0aW9uKG5vZGUpKSAmJiBub2RlLmFuY2hvcjtcbiAgICBpZiAoYW5jaG9yICYmIGFuY2hvcklzVmFsaWQoYW5jaG9yKSkge1xuICAgICAgICBhbmNob3JzLmFkZChhbmNob3IpO1xuICAgICAgICBwcm9wcy5wdXNoKGAmJHthbmNob3J9YCk7XG4gICAgfVxuICAgIGNvbnN0IHRhZyA9IG5vZGUudGFnID8gbm9kZS50YWcgOiB0YWdPYmouZGVmYXVsdCA/IG51bGwgOiB0YWdPYmoudGFnO1xuICAgIGlmICh0YWcpXG4gICAgICAgIHByb3BzLnB1c2goZG9jLmRpcmVjdGl2ZXMudGFnU3RyaW5nKHRhZykpO1xuICAgIHJldHVybiBwcm9wcy5qb2luKCcgJyk7XG59XG5mdW5jdGlvbiBzdHJpbmdpZnkoaXRlbSwgY3R4LCBvbkNvbW1lbnQsIG9uQ2hvbXBLZWVwKSB7XG4gICAgaWYgKGlzUGFpcihpdGVtKSlcbiAgICAgICAgcmV0dXJuIGl0ZW0udG9TdHJpbmcoY3R4LCBvbkNvbW1lbnQsIG9uQ2hvbXBLZWVwKTtcbiAgICBpZiAoaXNBbGlhcyhpdGVtKSkge1xuICAgICAgICBpZiAoY3R4LmRvYy5kaXJlY3RpdmVzKVxuICAgICAgICAgICAgcmV0dXJuIGl0ZW0udG9TdHJpbmcoY3R4KTtcbiAgICAgICAgaWYgKGN0eC5yZXNvbHZlZEFsaWFzZXM/LmhhcyhpdGVtKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgQ2Fubm90IHN0cmluZ2lmeSBjaXJjdWxhciBzdHJ1Y3R1cmUgd2l0aG91dCBhbGlhcyBub2Rlc2ApO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKGN0eC5yZXNvbHZlZEFsaWFzZXMpXG4gICAgICAgICAgICAgICAgY3R4LnJlc29sdmVkQWxpYXNlcy5hZGQoaXRlbSk7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgY3R4LnJlc29sdmVkQWxpYXNlcyA9IG5ldyBTZXQoW2l0ZW1dKTtcbiAgICAgICAgICAgIGl0ZW0gPSBpdGVtLnJlc29sdmUoY3R4LmRvYyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgbGV0IHRhZ09iaiA9IHVuZGVmaW5lZDtcbiAgICBjb25zdCBub2RlID0gaXNOb2RlKGl0ZW0pXG4gICAgICAgID8gaXRlbVxuICAgICAgICA6IGN0eC5kb2MuY3JlYXRlTm9kZShpdGVtLCB7IG9uVGFnT2JqOiBvID0+ICh0YWdPYmogPSBvKSB9KTtcbiAgICBpZiAoIXRhZ09iailcbiAgICAgICAgdGFnT2JqID0gZ2V0VGFnT2JqZWN0KGN0eC5kb2Muc2NoZW1hLnRhZ3MsIG5vZGUpO1xuICAgIGNvbnN0IHByb3BzID0gc3RyaW5naWZ5UHJvcHMobm9kZSwgdGFnT2JqLCBjdHgpO1xuICAgIGlmIChwcm9wcy5sZW5ndGggPiAwKVxuICAgICAgICBjdHguaW5kZW50QXRTdGFydCA9IChjdHguaW5kZW50QXRTdGFydCA/PyAwKSArIHByb3BzLmxlbmd0aCArIDE7XG4gICAgY29uc3Qgc3RyID0gdHlwZW9mIHRhZ09iai5zdHJpbmdpZnkgPT09ICdmdW5jdGlvbidcbiAgICAgICAgPyB0YWdPYmouc3RyaW5naWZ5KG5vZGUsIGN0eCwgb25Db21tZW50LCBvbkNob21wS2VlcClcbiAgICAgICAgOiBpc1NjYWxhcihub2RlKVxuICAgICAgICAgICAgPyBzdHJpbmdpZnlTdHJpbmcobm9kZSwgY3R4LCBvbkNvbW1lbnQsIG9uQ2hvbXBLZWVwKVxuICAgICAgICAgICAgOiBub2RlLnRvU3RyaW5nKGN0eCwgb25Db21tZW50LCBvbkNob21wS2VlcCk7XG4gICAgaWYgKCFwcm9wcylcbiAgICAgICAgcmV0dXJuIHN0cjtcbiAgICByZXR1cm4gaXNTY2FsYXIobm9kZSkgfHwgc3RyWzBdID09PSAneycgfHwgc3RyWzBdID09PSAnWydcbiAgICAgICAgPyBgJHtwcm9wc30gJHtzdHJ9YFxuICAgICAgICA6IGAke3Byb3BzfVxcbiR7Y3R4LmluZGVudH0ke3N0cn1gO1xufVxuXG5leHBvcnQgeyBjcmVhdGVTdHJpbmdpZnlDb250ZXh0LCBzdHJpbmdpZnkgfTtcbiIsICJpbXBvcnQgeyBpc0NvbGxlY3Rpb24sIGlzTm9kZSwgaXNTY2FsYXIsIGlzU2VxIH0gZnJvbSAnLi4vbm9kZXMvaWRlbnRpdHkuanMnO1xuaW1wb3J0IHsgU2NhbGFyIH0gZnJvbSAnLi4vbm9kZXMvU2NhbGFyLmpzJztcbmltcG9ydCB7IHN0cmluZ2lmeSB9IGZyb20gJy4vc3RyaW5naWZ5LmpzJztcbmltcG9ydCB7IGxpbmVDb21tZW50LCBpbmRlbnRDb21tZW50IH0gZnJvbSAnLi9zdHJpbmdpZnlDb21tZW50LmpzJztcblxuZnVuY3Rpb24gc3RyaW5naWZ5UGFpcih7IGtleSwgdmFsdWUgfSwgY3R4LCBvbkNvbW1lbnQsIG9uQ2hvbXBLZWVwKSB7XG4gICAgY29uc3QgeyBhbGxOdWxsVmFsdWVzLCBkb2MsIGluZGVudCwgaW5kZW50U3RlcCwgb3B0aW9uczogeyBjb21tZW50U3RyaW5nLCBpbmRlbnRTZXEsIHNpbXBsZUtleXMgfSB9ID0gY3R4O1xuICAgIGxldCBrZXlDb21tZW50ID0gKGlzTm9kZShrZXkpICYmIGtleS5jb21tZW50KSB8fCBudWxsO1xuICAgIGlmIChzaW1wbGVLZXlzKSB7XG4gICAgICAgIGlmIChrZXlDb21tZW50KSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1dpdGggc2ltcGxlIGtleXMsIGtleSBub2RlcyBjYW5ub3QgaGF2ZSBjb21tZW50cycpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0NvbGxlY3Rpb24oa2V5KSB8fCAoIWlzTm9kZShrZXkpICYmIHR5cGVvZiBrZXkgPT09ICdvYmplY3QnKSkge1xuICAgICAgICAgICAgY29uc3QgbXNnID0gJ1dpdGggc2ltcGxlIGtleXMsIGNvbGxlY3Rpb24gY2Fubm90IGJlIHVzZWQgYXMgYSBrZXkgdmFsdWUnO1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1zZyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgbGV0IGV4cGxpY2l0S2V5ID0gIXNpbXBsZUtleXMgJiZcbiAgICAgICAgKCFrZXkgfHxcbiAgICAgICAgICAgIChrZXlDb21tZW50ICYmIHZhbHVlID09IG51bGwgJiYgIWN0eC5pbkZsb3cpIHx8XG4gICAgICAgICAgICBpc0NvbGxlY3Rpb24oa2V5KSB8fFxuICAgICAgICAgICAgKGlzU2NhbGFyKGtleSlcbiAgICAgICAgICAgICAgICA/IGtleS50eXBlID09PSBTY2FsYXIuQkxPQ0tfRk9MREVEIHx8IGtleS50eXBlID09PSBTY2FsYXIuQkxPQ0tfTElURVJBTFxuICAgICAgICAgICAgICAgIDogdHlwZW9mIGtleSA9PT0gJ29iamVjdCcpKTtcbiAgICBjdHggPSBPYmplY3QuYXNzaWduKHt9LCBjdHgsIHtcbiAgICAgICAgYWxsTnVsbFZhbHVlczogZmFsc2UsXG4gICAgICAgIGltcGxpY2l0S2V5OiAhZXhwbGljaXRLZXkgJiYgKHNpbXBsZUtleXMgfHwgIWFsbE51bGxWYWx1ZXMpLFxuICAgICAgICBpbmRlbnQ6IGluZGVudCArIGluZGVudFN0ZXBcbiAgICB9KTtcbiAgICBsZXQga2V5Q29tbWVudERvbmUgPSBmYWxzZTtcbiAgICBsZXQgY2hvbXBLZWVwID0gZmFsc2U7XG4gICAgbGV0IHN0ciA9IHN0cmluZ2lmeShrZXksIGN0eCwgKCkgPT4gKGtleUNvbW1lbnREb25lID0gdHJ1ZSksICgpID0+IChjaG9tcEtlZXAgPSB0cnVlKSk7XG4gICAgaWYgKCFleHBsaWNpdEtleSAmJiAhY3R4LmluRmxvdyAmJiBzdHIubGVuZ3RoID4gMTAyNCkge1xuICAgICAgICBpZiAoc2ltcGxlS2V5cylcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignV2l0aCBzaW1wbGUga2V5cywgc2luZ2xlIGxpbmUgc2NhbGFyIG11c3Qgbm90IHNwYW4gbW9yZSB0aGFuIDEwMjQgY2hhcmFjdGVycycpO1xuICAgICAgICBleHBsaWNpdEtleSA9IHRydWU7XG4gICAgfVxuICAgIGlmIChjdHguaW5GbG93KSB7XG4gICAgICAgIGlmIChhbGxOdWxsVmFsdWVzIHx8IHZhbHVlID09IG51bGwpIHtcbiAgICAgICAgICAgIGlmIChrZXlDb21tZW50RG9uZSAmJiBvbkNvbW1lbnQpXG4gICAgICAgICAgICAgICAgb25Db21tZW50KCk7XG4gICAgICAgICAgICByZXR1cm4gc3RyID09PSAnJyA/ICc/JyA6IGV4cGxpY2l0S2V5ID8gYD8gJHtzdHJ9YCA6IHN0cjtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIGlmICgoYWxsTnVsbFZhbHVlcyAmJiAhc2ltcGxlS2V5cykgfHwgKHZhbHVlID09IG51bGwgJiYgZXhwbGljaXRLZXkpKSB7XG4gICAgICAgIHN0ciA9IGA/ICR7c3RyfWA7XG4gICAgICAgIGlmIChrZXlDb21tZW50ICYmICFrZXlDb21tZW50RG9uZSkge1xuICAgICAgICAgICAgc3RyICs9IGxpbmVDb21tZW50KHN0ciwgY3R4LmluZGVudCwgY29tbWVudFN0cmluZyhrZXlDb21tZW50KSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoY2hvbXBLZWVwICYmIG9uQ2hvbXBLZWVwKVxuICAgICAgICAgICAgb25DaG9tcEtlZXAoKTtcbiAgICAgICAgcmV0dXJuIHN0cjtcbiAgICB9XG4gICAgaWYgKGtleUNvbW1lbnREb25lKVxuICAgICAgICBrZXlDb21tZW50ID0gbnVsbDtcbiAgICBpZiAoZXhwbGljaXRLZXkpIHtcbiAgICAgICAgaWYgKGtleUNvbW1lbnQpXG4gICAgICAgICAgICBzdHIgKz0gbGluZUNvbW1lbnQoc3RyLCBjdHguaW5kZW50LCBjb21tZW50U3RyaW5nKGtleUNvbW1lbnQpKTtcbiAgICAgICAgc3RyID0gYD8gJHtzdHJ9XFxuJHtpbmRlbnR9OmA7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBzdHIgPSBgJHtzdHJ9OmA7XG4gICAgICAgIGlmIChrZXlDb21tZW50KVxuICAgICAgICAgICAgc3RyICs9IGxpbmVDb21tZW50KHN0ciwgY3R4LmluZGVudCwgY29tbWVudFN0cmluZyhrZXlDb21tZW50KSk7XG4gICAgfVxuICAgIGxldCB2c2IsIHZjYiwgdmFsdWVDb21tZW50O1xuICAgIGlmIChpc05vZGUodmFsdWUpKSB7XG4gICAgICAgIHZzYiA9ICEhdmFsdWUuc3BhY2VCZWZvcmU7XG4gICAgICAgIHZjYiA9IHZhbHVlLmNvbW1lbnRCZWZvcmU7XG4gICAgICAgIHZhbHVlQ29tbWVudCA9IHZhbHVlLmNvbW1lbnQ7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB2c2IgPSBmYWxzZTtcbiAgICAgICAgdmNiID0gbnVsbDtcbiAgICAgICAgdmFsdWVDb21tZW50ID0gbnVsbDtcbiAgICAgICAgaWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpXG4gICAgICAgICAgICB2YWx1ZSA9IGRvYy5jcmVhdGVOb2RlKHZhbHVlKTtcbiAgICB9XG4gICAgY3R4LmltcGxpY2l0S2V5ID0gZmFsc2U7XG4gICAgaWYgKCFleHBsaWNpdEtleSAmJiAha2V5Q29tbWVudCAmJiBpc1NjYWxhcih2YWx1ZSkpXG4gICAgICAgIGN0eC5pbmRlbnRBdFN0YXJ0ID0gc3RyLmxlbmd0aCArIDE7XG4gICAgY2hvbXBLZWVwID0gZmFsc2U7XG4gICAgaWYgKCFpbmRlbnRTZXEgJiZcbiAgICAgICAgaW5kZW50U3RlcC5sZW5ndGggPj0gMiAmJlxuICAgICAgICAhY3R4LmluRmxvdyAmJlxuICAgICAgICAhZXhwbGljaXRLZXkgJiZcbiAgICAgICAgaXNTZXEodmFsdWUpICYmXG4gICAgICAgICF2YWx1ZS5mbG93ICYmXG4gICAgICAgICF2YWx1ZS50YWcgJiZcbiAgICAgICAgIXZhbHVlLmFuY2hvcikge1xuICAgICAgICAvLyBJZiBpbmRlbnRTZXEgPT09IGZhbHNlLCBjb25zaWRlciAnLSAnIGFzIHBhcnQgb2YgaW5kZW50YXRpb24gd2hlcmUgcG9zc2libGVcbiAgICAgICAgY3R4LmluZGVudCA9IGN0eC5pbmRlbnQuc3Vic3RyaW5nKDIpO1xuICAgIH1cbiAgICBsZXQgdmFsdWVDb21tZW50RG9uZSA9IGZhbHNlO1xuICAgIGNvbnN0IHZhbHVlU3RyID0gc3RyaW5naWZ5KHZhbHVlLCBjdHgsICgpID0+ICh2YWx1ZUNvbW1lbnREb25lID0gdHJ1ZSksICgpID0+IChjaG9tcEtlZXAgPSB0cnVlKSk7XG4gICAgbGV0IHdzID0gJyAnO1xuICAgIGlmIChrZXlDb21tZW50IHx8IHZzYiB8fCB2Y2IpIHtcbiAgICAgICAgd3MgPSB2c2IgPyAnXFxuJyA6ICcnO1xuICAgICAgICBpZiAodmNiKSB7XG4gICAgICAgICAgICBjb25zdCBjcyA9IGNvbW1lbnRTdHJpbmcodmNiKTtcbiAgICAgICAgICAgIHdzICs9IGBcXG4ke2luZGVudENvbW1lbnQoY3MsIGN0eC5pbmRlbnQpfWA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbHVlU3RyID09PSAnJyAmJiAhY3R4LmluRmxvdykge1xuICAgICAgICAgICAgaWYgKHdzID09PSAnXFxuJylcbiAgICAgICAgICAgICAgICB3cyA9ICdcXG5cXG4nO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgd3MgKz0gYFxcbiR7Y3R4LmluZGVudH1gO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2UgaWYgKCFleHBsaWNpdEtleSAmJiBpc0NvbGxlY3Rpb24odmFsdWUpKSB7XG4gICAgICAgIGNvbnN0IHZzMCA9IHZhbHVlU3RyWzBdO1xuICAgICAgICBjb25zdCBubDAgPSB2YWx1ZVN0ci5pbmRleE9mKCdcXG4nKTtcbiAgICAgICAgY29uc3QgaGFzTmV3bGluZSA9IG5sMCAhPT0gLTE7XG4gICAgICAgIGNvbnN0IGZsb3cgPSBjdHguaW5GbG93ID8/IHZhbHVlLmZsb3cgPz8gdmFsdWUuaXRlbXMubGVuZ3RoID09PSAwO1xuICAgICAgICBpZiAoaGFzTmV3bGluZSB8fCAhZmxvdykge1xuICAgICAgICAgICAgbGV0IGhhc1Byb3BzTGluZSA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKGhhc05ld2xpbmUgJiYgKHZzMCA9PT0gJyYnIHx8IHZzMCA9PT0gJyEnKSkge1xuICAgICAgICAgICAgICAgIGxldCBzcDAgPSB2YWx1ZVN0ci5pbmRleE9mKCcgJyk7XG4gICAgICAgICAgICAgICAgaWYgKHZzMCA9PT0gJyYnICYmXG4gICAgICAgICAgICAgICAgICAgIHNwMCAhPT0gLTEgJiZcbiAgICAgICAgICAgICAgICAgICAgc3AwIDwgbmwwICYmXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlU3RyW3NwMCArIDFdID09PSAnIScpIHtcbiAgICAgICAgICAgICAgICAgICAgc3AwID0gdmFsdWVTdHIuaW5kZXhPZignICcsIHNwMCArIDEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoc3AwID09PSAtMSB8fCBubDAgPCBzcDApXG4gICAgICAgICAgICAgICAgICAgIGhhc1Byb3BzTGluZSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWhhc1Byb3BzTGluZSlcbiAgICAgICAgICAgICAgICB3cyA9IGBcXG4ke2N0eC5pbmRlbnR9YDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIGlmICh2YWx1ZVN0ciA9PT0gJycgfHwgdmFsdWVTdHJbMF0gPT09ICdcXG4nKSB7XG4gICAgICAgIHdzID0gJyc7XG4gICAgfVxuICAgIHN0ciArPSB3cyArIHZhbHVlU3RyO1xuICAgIGlmIChjdHguaW5GbG93KSB7XG4gICAgICAgIGlmICh2YWx1ZUNvbW1lbnREb25lICYmIG9uQ29tbWVudClcbiAgICAgICAgICAgIG9uQ29tbWVudCgpO1xuICAgIH1cbiAgICBlbHNlIGlmICh2YWx1ZUNvbW1lbnQgJiYgIXZhbHVlQ29tbWVudERvbmUpIHtcbiAgICAgICAgc3RyICs9IGxpbmVDb21tZW50KHN0ciwgY3R4LmluZGVudCwgY29tbWVudFN0cmluZyh2YWx1ZUNvbW1lbnQpKTtcbiAgICB9XG4gICAgZWxzZSBpZiAoY2hvbXBLZWVwICYmIG9uQ2hvbXBLZWVwKSB7XG4gICAgICAgIG9uQ2hvbXBLZWVwKCk7XG4gICAgfVxuICAgIHJldHVybiBzdHI7XG59XG5cbmV4cG9ydCB7IHN0cmluZ2lmeVBhaXIgfTtcbiIsICJmdW5jdGlvbiBkZWJ1Zyhsb2dMZXZlbCwgLi4ubWVzc2FnZXMpIHtcbiAgICBpZiAobG9nTGV2ZWwgPT09ICdkZWJ1ZycpXG4gICAgICAgIGNvbnNvbGUubG9nKC4uLm1lc3NhZ2VzKTtcbn1cbmZ1bmN0aW9uIHdhcm4obG9nTGV2ZWwsIHdhcm5pbmcpIHtcbiAgICBpZiAobG9nTGV2ZWwgPT09ICdkZWJ1ZycgfHwgbG9nTGV2ZWwgPT09ICd3YXJuJykge1xuICAgICAgICBpZiAodHlwZW9mIHByb2Nlc3MgIT09ICd1bmRlZmluZWQnICYmIHByb2Nlc3MuZW1pdFdhcm5pbmcpXG4gICAgICAgICAgICBwcm9jZXNzLmVtaXRXYXJuaW5nKHdhcm5pbmcpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICBjb25zb2xlLndhcm4od2FybmluZyk7XG4gICAgfVxufVxuXG5leHBvcnQgeyBkZWJ1Zywgd2FybiB9O1xuIiwgImltcG9ydCB7IGlzU2NhbGFyLCBpc0FsaWFzLCBpc1NlcSwgaXNNYXAgfSBmcm9tICcuLi8uLi9ub2Rlcy9pZGVudGl0eS5qcyc7XG5pbXBvcnQgeyBTY2FsYXIgfSBmcm9tICcuLi8uLi9ub2Rlcy9TY2FsYXIuanMnO1xuXG4vLyBJZiB0aGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIGEgbWVyZ2Uga2V5IGlzIGEgc2luZ2xlIG1hcHBpbmcgbm9kZSwgZWFjaCBvZlxuLy8gaXRzIGtleS92YWx1ZSBwYWlycyBpcyBpbnNlcnRlZCBpbnRvIHRoZSBjdXJyZW50IG1hcHBpbmcsIHVubGVzcyB0aGUga2V5XG4vLyBhbHJlYWR5IGV4aXN0cyBpbiBpdC4gSWYgdGhlIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCB0aGUgbWVyZ2Uga2V5IGlzIGFcbi8vIHNlcXVlbmNlLCB0aGVuIHRoaXMgc2VxdWVuY2UgaXMgZXhwZWN0ZWQgdG8gY29udGFpbiBtYXBwaW5nIG5vZGVzIGFuZCBlYWNoXG4vLyBvZiB0aGVzZSBub2RlcyBpcyBtZXJnZWQgaW4gdHVybiBhY2NvcmRpbmcgdG8gaXRzIG9yZGVyIGluIHRoZSBzZXF1ZW5jZS5cbi8vIEtleXMgaW4gbWFwcGluZyBub2RlcyBlYXJsaWVyIGluIHRoZSBzZXF1ZW5jZSBvdmVycmlkZSBrZXlzIHNwZWNpZmllZCBpblxuLy8gbGF0ZXIgbWFwcGluZyBub2Rlcy4gLS0gaHR0cDovL3lhbWwub3JnL3R5cGUvbWVyZ2UuaHRtbFxuY29uc3QgTUVSR0VfS0VZID0gJzw8JztcbmNvbnN0IG1lcmdlID0ge1xuICAgIGlkZW50aWZ5OiB2YWx1ZSA9PiB2YWx1ZSA9PT0gTUVSR0VfS0VZIHx8XG4gICAgICAgICh0eXBlb2YgdmFsdWUgPT09ICdzeW1ib2wnICYmIHZhbHVlLmRlc2NyaXB0aW9uID09PSBNRVJHRV9LRVkpLFxuICAgIGRlZmF1bHQ6ICdrZXknLFxuICAgIHRhZzogJ3RhZzp5YW1sLm9yZywyMDAyOm1lcmdlJyxcbiAgICB0ZXN0OiAvXjw8JC8sXG4gICAgcmVzb2x2ZTogKCkgPT4gT2JqZWN0LmFzc2lnbihuZXcgU2NhbGFyKFN5bWJvbChNRVJHRV9LRVkpKSwge1xuICAgICAgICBhZGRUb0pTTWFwOiBhZGRNZXJnZVRvSlNNYXBcbiAgICB9KSxcbiAgICBzdHJpbmdpZnk6ICgpID0+IE1FUkdFX0tFWVxufTtcbmNvbnN0IGlzTWVyZ2VLZXkgPSAoY3R4LCBrZXkpID0+IChtZXJnZS5pZGVudGlmeShrZXkpIHx8XG4gICAgKGlzU2NhbGFyKGtleSkgJiZcbiAgICAgICAgKCFrZXkudHlwZSB8fCBrZXkudHlwZSA9PT0gU2NhbGFyLlBMQUlOKSAmJlxuICAgICAgICBtZXJnZS5pZGVudGlmeShrZXkudmFsdWUpKSkgJiZcbiAgICBjdHg/LmRvYy5zY2hlbWEudGFncy5zb21lKHRhZyA9PiB0YWcudGFnID09PSBtZXJnZS50YWcgJiYgdGFnLmRlZmF1bHQpO1xuZnVuY3Rpb24gYWRkTWVyZ2VUb0pTTWFwKGN0eCwgbWFwLCB2YWx1ZSkge1xuICAgIHZhbHVlID0gY3R4ICYmIGlzQWxpYXModmFsdWUpID8gdmFsdWUucmVzb2x2ZShjdHguZG9jKSA6IHZhbHVlO1xuICAgIGlmIChpc1NlcSh2YWx1ZSkpXG4gICAgICAgIGZvciAoY29uc3QgaXQgb2YgdmFsdWUuaXRlbXMpXG4gICAgICAgICAgICBtZXJnZVZhbHVlKGN0eCwgbWFwLCBpdCk7XG4gICAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpXG4gICAgICAgIGZvciAoY29uc3QgaXQgb2YgdmFsdWUpXG4gICAgICAgICAgICBtZXJnZVZhbHVlKGN0eCwgbWFwLCBpdCk7XG4gICAgZWxzZVxuICAgICAgICBtZXJnZVZhbHVlKGN0eCwgbWFwLCB2YWx1ZSk7XG59XG5mdW5jdGlvbiBtZXJnZVZhbHVlKGN0eCwgbWFwLCB2YWx1ZSkge1xuICAgIGNvbnN0IHNvdXJjZSA9IGN0eCAmJiBpc0FsaWFzKHZhbHVlKSA/IHZhbHVlLnJlc29sdmUoY3R4LmRvYykgOiB2YWx1ZTtcbiAgICBpZiAoIWlzTWFwKHNvdXJjZSkpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTWVyZ2Ugc291cmNlcyBtdXN0IGJlIG1hcHMgb3IgbWFwIGFsaWFzZXMnKTtcbiAgICBjb25zdCBzcmNNYXAgPSBzb3VyY2UudG9KU09OKG51bGwsIGN0eCwgTWFwKTtcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBzcmNNYXApIHtcbiAgICAgICAgaWYgKG1hcCBpbnN0YW5jZW9mIE1hcCkge1xuICAgICAgICAgICAgaWYgKCFtYXAuaGFzKGtleSkpXG4gICAgICAgICAgICAgICAgbWFwLnNldChrZXksIHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChtYXAgaW5zdGFuY2VvZiBTZXQpIHtcbiAgICAgICAgICAgIG1hcC5hZGQoa2V5KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG1hcCwga2V5KSkge1xuICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG1hcCwga2V5LCB7XG4gICAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtYXA7XG59XG5cbmV4cG9ydCB7IGFkZE1lcmdlVG9KU01hcCwgaXNNZXJnZUtleSwgbWVyZ2UgfTtcbiIsICJpbXBvcnQgeyB3YXJuIH0gZnJvbSAnLi4vbG9nLmpzJztcbmltcG9ydCB7IGlzTWVyZ2VLZXksIGFkZE1lcmdlVG9KU01hcCB9IGZyb20gJy4uL3NjaGVtYS95YW1sLTEuMS9tZXJnZS5qcyc7XG5pbXBvcnQgeyBjcmVhdGVTdHJpbmdpZnlDb250ZXh0IH0gZnJvbSAnLi4vc3RyaW5naWZ5L3N0cmluZ2lmeS5qcyc7XG5pbXBvcnQgeyBpc05vZGUgfSBmcm9tICcuL2lkZW50aXR5LmpzJztcbmltcG9ydCB7IHRvSlMgfSBmcm9tICcuL3RvSlMuanMnO1xuXG5mdW5jdGlvbiBhZGRQYWlyVG9KU01hcChjdHgsIG1hcCwgeyBrZXksIHZhbHVlIH0pIHtcbiAgICBpZiAoaXNOb2RlKGtleSkgJiYga2V5LmFkZFRvSlNNYXApXG4gICAgICAgIGtleS5hZGRUb0pTTWFwKGN0eCwgbWFwLCB2YWx1ZSk7XG4gICAgLy8gVE9ETzogU2hvdWxkIGRyb3AgdGhpcyBzcGVjaWFsIGNhc2UgZm9yIGJhcmUgPDwgaGFuZGxpbmdcbiAgICBlbHNlIGlmIChpc01lcmdlS2V5KGN0eCwga2V5KSlcbiAgICAgICAgYWRkTWVyZ2VUb0pTTWFwKGN0eCwgbWFwLCB2YWx1ZSk7XG4gICAgZWxzZSB7XG4gICAgICAgIGNvbnN0IGpzS2V5ID0gdG9KUyhrZXksICcnLCBjdHgpO1xuICAgICAgICBpZiAobWFwIGluc3RhbmNlb2YgTWFwKSB7XG4gICAgICAgICAgICBtYXAuc2V0KGpzS2V5LCB0b0pTKHZhbHVlLCBqc0tleSwgY3R4KSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAobWFwIGluc3RhbmNlb2YgU2V0KSB7XG4gICAgICAgICAgICBtYXAuYWRkKGpzS2V5KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHN0cmluZ0tleSA9IHN0cmluZ2lmeUtleShrZXksIGpzS2V5LCBjdHgpO1xuICAgICAgICAgICAgY29uc3QganNWYWx1ZSA9IHRvSlModmFsdWUsIHN0cmluZ0tleSwgY3R4KTtcbiAgICAgICAgICAgIGlmIChzdHJpbmdLZXkgaW4gbWFwKVxuICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShtYXAsIHN0cmluZ0tleSwge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZToganNWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIG1hcFtzdHJpbmdLZXldID0ganNWYWx1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbWFwO1xufVxuZnVuY3Rpb24gc3RyaW5naWZ5S2V5KGtleSwganNLZXksIGN0eCkge1xuICAgIGlmIChqc0tleSA9PT0gbnVsbClcbiAgICAgICAgcmV0dXJuICcnO1xuICAgIGlmICh0eXBlb2YganNLZXkgIT09ICdvYmplY3QnKVxuICAgICAgICByZXR1cm4gU3RyaW5nKGpzS2V5KTtcbiAgICBpZiAoaXNOb2RlKGtleSkgJiYgY3R4Py5kb2MpIHtcbiAgICAgICAgY29uc3Qgc3RyQ3R4ID0gY3JlYXRlU3RyaW5naWZ5Q29udGV4dChjdHguZG9jLCB7fSk7XG4gICAgICAgIHN0ckN0eC5hbmNob3JzID0gbmV3IFNldCgpO1xuICAgICAgICBmb3IgKGNvbnN0IG5vZGUgb2YgY3R4LmFuY2hvcnMua2V5cygpKVxuICAgICAgICAgICAgc3RyQ3R4LmFuY2hvcnMuYWRkKG5vZGUuYW5jaG9yKTtcbiAgICAgICAgc3RyQ3R4LmluRmxvdyA9IHRydWU7XG4gICAgICAgIHN0ckN0eC5pblN0cmluZ2lmeUtleSA9IHRydWU7XG4gICAgICAgIGNvbnN0IHN0cktleSA9IGtleS50b1N0cmluZyhzdHJDdHgpO1xuICAgICAgICBpZiAoIWN0eC5tYXBLZXlXYXJuZWQpIHtcbiAgICAgICAgICAgIGxldCBqc29uU3RyID0gSlNPTi5zdHJpbmdpZnkoc3RyS2V5KTtcbiAgICAgICAgICAgIGlmIChqc29uU3RyLmxlbmd0aCA+IDQwKVxuICAgICAgICAgICAgICAgIGpzb25TdHIgPSBqc29uU3RyLnN1YnN0cmluZygwLCAzNikgKyAnLi4uXCInO1xuICAgICAgICAgICAgd2FybihjdHguZG9jLm9wdGlvbnMubG9nTGV2ZWwsIGBLZXlzIHdpdGggY29sbGVjdGlvbiB2YWx1ZXMgd2lsbCBiZSBzdHJpbmdpZmllZCBkdWUgdG8gSlMgT2JqZWN0IHJlc3RyaWN0aW9uczogJHtqc29uU3RyfS4gU2V0IG1hcEFzTWFwOiB0cnVlIHRvIHVzZSBvYmplY3Qga2V5cy5gKTtcbiAgICAgICAgICAgIGN0eC5tYXBLZXlXYXJuZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdHJLZXk7XG4gICAgfVxuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShqc0tleSk7XG59XG5cbmV4cG9ydCB7IGFkZFBhaXJUb0pTTWFwIH07XG4iLCAiaW1wb3J0IHsgY3JlYXRlTm9kZSB9IGZyb20gJy4uL2RvYy9jcmVhdGVOb2RlLmpzJztcbmltcG9ydCB7IHN0cmluZ2lmeVBhaXIgfSBmcm9tICcuLi9zdHJpbmdpZnkvc3RyaW5naWZ5UGFpci5qcyc7XG5pbXBvcnQgeyBhZGRQYWlyVG9KU01hcCB9IGZyb20gJy4vYWRkUGFpclRvSlNNYXAuanMnO1xuaW1wb3J0IHsgTk9ERV9UWVBFLCBQQUlSLCBpc05vZGUgfSBmcm9tICcuL2lkZW50aXR5LmpzJztcblxuZnVuY3Rpb24gY3JlYXRlUGFpcihrZXksIHZhbHVlLCBjdHgpIHtcbiAgICBjb25zdCBrID0gY3JlYXRlTm9kZShrZXksIHVuZGVmaW5lZCwgY3R4KTtcbiAgICBjb25zdCB2ID0gY3JlYXRlTm9kZSh2YWx1ZSwgdW5kZWZpbmVkLCBjdHgpO1xuICAgIHJldHVybiBuZXcgUGFpcihrLCB2KTtcbn1cbmNsYXNzIFBhaXIge1xuICAgIGNvbnN0cnVjdG9yKGtleSwgdmFsdWUgPSBudWxsKSB7XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBOT0RFX1RZUEUsIHsgdmFsdWU6IFBBSVIgfSk7XG4gICAgICAgIHRoaXMua2V5ID0ga2V5O1xuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgfVxuICAgIGNsb25lKHNjaGVtYSkge1xuICAgICAgICBsZXQgeyBrZXksIHZhbHVlIH0gPSB0aGlzO1xuICAgICAgICBpZiAoaXNOb2RlKGtleSkpXG4gICAgICAgICAgICBrZXkgPSBrZXkuY2xvbmUoc2NoZW1hKTtcbiAgICAgICAgaWYgKGlzTm9kZSh2YWx1ZSkpXG4gICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLmNsb25lKHNjaGVtYSk7XG4gICAgICAgIHJldHVybiBuZXcgUGFpcihrZXksIHZhbHVlKTtcbiAgICB9XG4gICAgdG9KU09OKF8sIGN0eCkge1xuICAgICAgICBjb25zdCBwYWlyID0gY3R4Py5tYXBBc01hcCA/IG5ldyBNYXAoKSA6IHt9O1xuICAgICAgICByZXR1cm4gYWRkUGFpclRvSlNNYXAoY3R4LCBwYWlyLCB0aGlzKTtcbiAgICB9XG4gICAgdG9TdHJpbmcoY3R4LCBvbkNvbW1lbnQsIG9uQ2hvbXBLZWVwKSB7XG4gICAgICAgIHJldHVybiBjdHg/LmRvY1xuICAgICAgICAgICAgPyBzdHJpbmdpZnlQYWlyKHRoaXMsIGN0eCwgb25Db21tZW50LCBvbkNob21wS2VlcClcbiAgICAgICAgICAgIDogSlNPTi5zdHJpbmdpZnkodGhpcyk7XG4gICAgfVxufVxuXG5leHBvcnQgeyBQYWlyLCBjcmVhdGVQYWlyIH07XG4iLCAiaW1wb3J0IHsgaXNOb2RlLCBpc1BhaXIgfSBmcm9tICcuLi9ub2Rlcy9pZGVudGl0eS5qcyc7XG5pbXBvcnQgeyBzdHJpbmdpZnkgfSBmcm9tICcuL3N0cmluZ2lmeS5qcyc7XG5pbXBvcnQgeyBsaW5lQ29tbWVudCwgaW5kZW50Q29tbWVudCB9IGZyb20gJy4vc3RyaW5naWZ5Q29tbWVudC5qcyc7XG5cbmZ1bmN0aW9uIHN0cmluZ2lmeUNvbGxlY3Rpb24oY29sbGVjdGlvbiwgY3R4LCBvcHRpb25zKSB7XG4gICAgY29uc3QgZmxvdyA9IGN0eC5pbkZsb3cgPz8gY29sbGVjdGlvbi5mbG93O1xuICAgIGNvbnN0IHN0cmluZ2lmeSA9IGZsb3cgPyBzdHJpbmdpZnlGbG93Q29sbGVjdGlvbiA6IHN0cmluZ2lmeUJsb2NrQ29sbGVjdGlvbjtcbiAgICByZXR1cm4gc3RyaW5naWZ5KGNvbGxlY3Rpb24sIGN0eCwgb3B0aW9ucyk7XG59XG5mdW5jdGlvbiBzdHJpbmdpZnlCbG9ja0NvbGxlY3Rpb24oeyBjb21tZW50LCBpdGVtcyB9LCBjdHgsIHsgYmxvY2tJdGVtUHJlZml4LCBmbG93Q2hhcnMsIGl0ZW1JbmRlbnQsIG9uQ2hvbXBLZWVwLCBvbkNvbW1lbnQgfSkge1xuICAgIGNvbnN0IHsgaW5kZW50LCBvcHRpb25zOiB7IGNvbW1lbnRTdHJpbmcgfSB9ID0gY3R4O1xuICAgIGNvbnN0IGl0ZW1DdHggPSBPYmplY3QuYXNzaWduKHt9LCBjdHgsIHsgaW5kZW50OiBpdGVtSW5kZW50LCB0eXBlOiBudWxsIH0pO1xuICAgIGxldCBjaG9tcEtlZXAgPSBmYWxzZTsgLy8gZmxhZyBmb3IgdGhlIHByZWNlZGluZyBub2RlJ3Mgc3RhdHVzXG4gICAgY29uc3QgbGluZXMgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgKytpKSB7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSBpdGVtc1tpXTtcbiAgICAgICAgbGV0IGNvbW1lbnQgPSBudWxsO1xuICAgICAgICBpZiAoaXNOb2RlKGl0ZW0pKSB7XG4gICAgICAgICAgICBpZiAoIWNob21wS2VlcCAmJiBpdGVtLnNwYWNlQmVmb3JlKVxuICAgICAgICAgICAgICAgIGxpbmVzLnB1c2goJycpO1xuICAgICAgICAgICAgYWRkQ29tbWVudEJlZm9yZShjdHgsIGxpbmVzLCBpdGVtLmNvbW1lbnRCZWZvcmUsIGNob21wS2VlcCk7XG4gICAgICAgICAgICBpZiAoaXRlbS5jb21tZW50KVxuICAgICAgICAgICAgICAgIGNvbW1lbnQgPSBpdGVtLmNvbW1lbnQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaXNQYWlyKGl0ZW0pKSB7XG4gICAgICAgICAgICBjb25zdCBpayA9IGlzTm9kZShpdGVtLmtleSkgPyBpdGVtLmtleSA6IG51bGw7XG4gICAgICAgICAgICBpZiAoaWspIHtcbiAgICAgICAgICAgICAgICBpZiAoIWNob21wS2VlcCAmJiBpay5zcGFjZUJlZm9yZSlcbiAgICAgICAgICAgICAgICAgICAgbGluZXMucHVzaCgnJyk7XG4gICAgICAgICAgICAgICAgYWRkQ29tbWVudEJlZm9yZShjdHgsIGxpbmVzLCBpay5jb21tZW50QmVmb3JlLCBjaG9tcEtlZXApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNob21wS2VlcCA9IGZhbHNlO1xuICAgICAgICBsZXQgc3RyID0gc3RyaW5naWZ5KGl0ZW0sIGl0ZW1DdHgsICgpID0+IChjb21tZW50ID0gbnVsbCksICgpID0+IChjaG9tcEtlZXAgPSB0cnVlKSk7XG4gICAgICAgIGlmIChjb21tZW50KVxuICAgICAgICAgICAgc3RyICs9IGxpbmVDb21tZW50KHN0ciwgaXRlbUluZGVudCwgY29tbWVudFN0cmluZyhjb21tZW50KSk7XG4gICAgICAgIGlmIChjaG9tcEtlZXAgJiYgY29tbWVudClcbiAgICAgICAgICAgIGNob21wS2VlcCA9IGZhbHNlO1xuICAgICAgICBsaW5lcy5wdXNoKGJsb2NrSXRlbVByZWZpeCArIHN0cik7XG4gICAgfVxuICAgIGxldCBzdHI7XG4gICAgaWYgKGxpbmVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBzdHIgPSBmbG93Q2hhcnMuc3RhcnQgKyBmbG93Q2hhcnMuZW5kO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgc3RyID0gbGluZXNbMF07XG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgbGluZXMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgIGNvbnN0IGxpbmUgPSBsaW5lc1tpXTtcbiAgICAgICAgICAgIHN0ciArPSBsaW5lID8gYFxcbiR7aW5kZW50fSR7bGluZX1gIDogJ1xcbic7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGNvbW1lbnQpIHtcbiAgICAgICAgc3RyICs9ICdcXG4nICsgaW5kZW50Q29tbWVudChjb21tZW50U3RyaW5nKGNvbW1lbnQpLCBpbmRlbnQpO1xuICAgICAgICBpZiAob25Db21tZW50KVxuICAgICAgICAgICAgb25Db21tZW50KCk7XG4gICAgfVxuICAgIGVsc2UgaWYgKGNob21wS2VlcCAmJiBvbkNob21wS2VlcClcbiAgICAgICAgb25DaG9tcEtlZXAoKTtcbiAgICByZXR1cm4gc3RyO1xufVxuZnVuY3Rpb24gc3RyaW5naWZ5Rmxvd0NvbGxlY3Rpb24oeyBpdGVtcyB9LCBjdHgsIHsgZmxvd0NoYXJzLCBpdGVtSW5kZW50IH0pIHtcbiAgICBjb25zdCB7IGluZGVudCwgaW5kZW50U3RlcCwgZmxvd0NvbGxlY3Rpb25QYWRkaW5nOiBmY1BhZGRpbmcsIG9wdGlvbnM6IHsgY29tbWVudFN0cmluZyB9IH0gPSBjdHg7XG4gICAgaXRlbUluZGVudCArPSBpbmRlbnRTdGVwO1xuICAgIGNvbnN0IGl0ZW1DdHggPSBPYmplY3QuYXNzaWduKHt9LCBjdHgsIHtcbiAgICAgICAgaW5kZW50OiBpdGVtSW5kZW50LFxuICAgICAgICBpbkZsb3c6IHRydWUsXG4gICAgICAgIHR5cGU6IG51bGxcbiAgICB9KTtcbiAgICBsZXQgcmVxTmV3bGluZSA9IGZhbHNlO1xuICAgIGxldCBsaW5lc0F0VmFsdWUgPSAwO1xuICAgIGNvbnN0IGxpbmVzID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7ICsraSkge1xuICAgICAgICBjb25zdCBpdGVtID0gaXRlbXNbaV07XG4gICAgICAgIGxldCBjb21tZW50ID0gbnVsbDtcbiAgICAgICAgaWYgKGlzTm9kZShpdGVtKSkge1xuICAgICAgICAgICAgaWYgKGl0ZW0uc3BhY2VCZWZvcmUpXG4gICAgICAgICAgICAgICAgbGluZXMucHVzaCgnJyk7XG4gICAgICAgICAgICBhZGRDb21tZW50QmVmb3JlKGN0eCwgbGluZXMsIGl0ZW0uY29tbWVudEJlZm9yZSwgZmFsc2UpO1xuICAgICAgICAgICAgaWYgKGl0ZW0uY29tbWVudClcbiAgICAgICAgICAgICAgICBjb21tZW50ID0gaXRlbS5jb21tZW50O1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGlzUGFpcihpdGVtKSkge1xuICAgICAgICAgICAgY29uc3QgaWsgPSBpc05vZGUoaXRlbS5rZXkpID8gaXRlbS5rZXkgOiBudWxsO1xuICAgICAgICAgICAgaWYgKGlrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlrLnNwYWNlQmVmb3JlKVxuICAgICAgICAgICAgICAgICAgICBsaW5lcy5wdXNoKCcnKTtcbiAgICAgICAgICAgICAgICBhZGRDb21tZW50QmVmb3JlKGN0eCwgbGluZXMsIGlrLmNvbW1lbnRCZWZvcmUsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICBpZiAoaWsuY29tbWVudClcbiAgICAgICAgICAgICAgICAgICAgcmVxTmV3bGluZSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBpdiA9IGlzTm9kZShpdGVtLnZhbHVlKSA/IGl0ZW0udmFsdWUgOiBudWxsO1xuICAgICAgICAgICAgaWYgKGl2KSB7XG4gICAgICAgICAgICAgICAgaWYgKGl2LmNvbW1lbnQpXG4gICAgICAgICAgICAgICAgICAgIGNvbW1lbnQgPSBpdi5jb21tZW50O1xuICAgICAgICAgICAgICAgIGlmIChpdi5jb21tZW50QmVmb3JlKVxuICAgICAgICAgICAgICAgICAgICByZXFOZXdsaW5lID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGl0ZW0udmFsdWUgPT0gbnVsbCAmJiBpaz8uY29tbWVudCkge1xuICAgICAgICAgICAgICAgIGNvbW1lbnQgPSBpay5jb21tZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChjb21tZW50KVxuICAgICAgICAgICAgcmVxTmV3bGluZSA9IHRydWU7XG4gICAgICAgIGxldCBzdHIgPSBzdHJpbmdpZnkoaXRlbSwgaXRlbUN0eCwgKCkgPT4gKGNvbW1lbnQgPSBudWxsKSk7XG4gICAgICAgIGlmIChpIDwgaXRlbXMubGVuZ3RoIC0gMSlcbiAgICAgICAgICAgIHN0ciArPSAnLCc7XG4gICAgICAgIGlmIChjb21tZW50KVxuICAgICAgICAgICAgc3RyICs9IGxpbmVDb21tZW50KHN0ciwgaXRlbUluZGVudCwgY29tbWVudFN0cmluZyhjb21tZW50KSk7XG4gICAgICAgIGlmICghcmVxTmV3bGluZSAmJiAobGluZXMubGVuZ3RoID4gbGluZXNBdFZhbHVlIHx8IHN0ci5pbmNsdWRlcygnXFxuJykpKVxuICAgICAgICAgICAgcmVxTmV3bGluZSA9IHRydWU7XG4gICAgICAgIGxpbmVzLnB1c2goc3RyKTtcbiAgICAgICAgbGluZXNBdFZhbHVlID0gbGluZXMubGVuZ3RoO1xuICAgIH1cbiAgICBjb25zdCB7IHN0YXJ0LCBlbmQgfSA9IGZsb3dDaGFycztcbiAgICBpZiAobGluZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBzdGFydCArIGVuZDtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGlmICghcmVxTmV3bGluZSkge1xuICAgICAgICAgICAgY29uc3QgbGVuID0gbGluZXMucmVkdWNlKChzdW0sIGxpbmUpID0+IHN1bSArIGxpbmUubGVuZ3RoICsgMiwgMik7XG4gICAgICAgICAgICByZXFOZXdsaW5lID0gY3R4Lm9wdGlvbnMubGluZVdpZHRoID4gMCAmJiBsZW4gPiBjdHgub3B0aW9ucy5saW5lV2lkdGg7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlcU5ld2xpbmUpIHtcbiAgICAgICAgICAgIGxldCBzdHIgPSBzdGFydDtcbiAgICAgICAgICAgIGZvciAoY29uc3QgbGluZSBvZiBsaW5lcylcbiAgICAgICAgICAgICAgICBzdHIgKz0gbGluZSA/IGBcXG4ke2luZGVudFN0ZXB9JHtpbmRlbnR9JHtsaW5lfWAgOiAnXFxuJztcbiAgICAgICAgICAgIHJldHVybiBgJHtzdHJ9XFxuJHtpbmRlbnR9JHtlbmR9YDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBgJHtzdGFydH0ke2ZjUGFkZGluZ30ke2xpbmVzLmpvaW4oJyAnKX0ke2ZjUGFkZGluZ30ke2VuZH1gO1xuICAgICAgICB9XG4gICAgfVxufVxuZnVuY3Rpb24gYWRkQ29tbWVudEJlZm9yZSh7IGluZGVudCwgb3B0aW9uczogeyBjb21tZW50U3RyaW5nIH0gfSwgbGluZXMsIGNvbW1lbnQsIGNob21wS2VlcCkge1xuICAgIGlmIChjb21tZW50ICYmIGNob21wS2VlcClcbiAgICAgICAgY29tbWVudCA9IGNvbW1lbnQucmVwbGFjZSgvXlxcbisvLCAnJyk7XG4gICAgaWYgKGNvbW1lbnQpIHtcbiAgICAgICAgY29uc3QgaWMgPSBpbmRlbnRDb21tZW50KGNvbW1lbnRTdHJpbmcoY29tbWVudCksIGluZGVudCk7XG4gICAgICAgIGxpbmVzLnB1c2goaWMudHJpbVN0YXJ0KCkpOyAvLyBBdm9pZCBkb3VibGUgaW5kZW50IG9uIGZpcnN0IGxpbmVcbiAgICB9XG59XG5cbmV4cG9ydCB7IHN0cmluZ2lmeUNvbGxlY3Rpb24gfTtcbiIsICJpbXBvcnQgeyBzdHJpbmdpZnlDb2xsZWN0aW9uIH0gZnJvbSAnLi4vc3RyaW5naWZ5L3N0cmluZ2lmeUNvbGxlY3Rpb24uanMnO1xuaW1wb3J0IHsgYWRkUGFpclRvSlNNYXAgfSBmcm9tICcuL2FkZFBhaXJUb0pTTWFwLmpzJztcbmltcG9ydCB7IENvbGxlY3Rpb24gfSBmcm9tICcuL0NvbGxlY3Rpb24uanMnO1xuaW1wb3J0IHsgaXNQYWlyLCBpc1NjYWxhciwgTUFQIH0gZnJvbSAnLi9pZGVudGl0eS5qcyc7XG5pbXBvcnQgeyBQYWlyLCBjcmVhdGVQYWlyIH0gZnJvbSAnLi9QYWlyLmpzJztcbmltcG9ydCB7IGlzU2NhbGFyVmFsdWUgfSBmcm9tICcuL1NjYWxhci5qcyc7XG5cbmZ1bmN0aW9uIGZpbmRQYWlyKGl0ZW1zLCBrZXkpIHtcbiAgICBjb25zdCBrID0gaXNTY2FsYXIoa2V5KSA/IGtleS52YWx1ZSA6IGtleTtcbiAgICBmb3IgKGNvbnN0IGl0IG9mIGl0ZW1zKSB7XG4gICAgICAgIGlmIChpc1BhaXIoaXQpKSB7XG4gICAgICAgICAgICBpZiAoaXQua2V5ID09PSBrZXkgfHwgaXQua2V5ID09PSBrKVxuICAgICAgICAgICAgICAgIHJldHVybiBpdDtcbiAgICAgICAgICAgIGlmIChpc1NjYWxhcihpdC5rZXkpICYmIGl0LmtleS52YWx1ZSA9PT0gaylcbiAgICAgICAgICAgICAgICByZXR1cm4gaXQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cbmNsYXNzIFlBTUxNYXAgZXh0ZW5kcyBDb2xsZWN0aW9uIHtcbiAgICBzdGF0aWMgZ2V0IHRhZ05hbWUoKSB7XG4gICAgICAgIHJldHVybiAndGFnOnlhbWwub3JnLDIwMDI6bWFwJztcbiAgICB9XG4gICAgY29uc3RydWN0b3Ioc2NoZW1hKSB7XG4gICAgICAgIHN1cGVyKE1BUCwgc2NoZW1hKTtcbiAgICAgICAgdGhpcy5pdGVtcyA9IFtdO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBIGdlbmVyaWMgY29sbGVjdGlvbiBwYXJzaW5nIG1ldGhvZCB0aGF0IGNhbiBiZSBleHRlbmRlZFxuICAgICAqIHRvIG90aGVyIG5vZGUgY2xhc3NlcyB0aGF0IGluaGVyaXQgZnJvbSBZQU1MTWFwXG4gICAgICovXG4gICAgc3RhdGljIGZyb20oc2NoZW1hLCBvYmosIGN0eCkge1xuICAgICAgICBjb25zdCB7IGtlZXBVbmRlZmluZWQsIHJlcGxhY2VyIH0gPSBjdHg7XG4gICAgICAgIGNvbnN0IG1hcCA9IG5ldyB0aGlzKHNjaGVtYSk7XG4gICAgICAgIGNvbnN0IGFkZCA9IChrZXksIHZhbHVlKSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHJlcGxhY2VyID09PSAnZnVuY3Rpb24nKVxuICAgICAgICAgICAgICAgIHZhbHVlID0gcmVwbGFjZXIuY2FsbChvYmosIGtleSwgdmFsdWUpO1xuICAgICAgICAgICAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheShyZXBsYWNlcikgJiYgIXJlcGxhY2VyLmluY2x1ZGVzKGtleSkpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQgfHwga2VlcFVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICBtYXAuaXRlbXMucHVzaChjcmVhdGVQYWlyKGtleSwgdmFsdWUsIGN0eCkpO1xuICAgICAgICB9O1xuICAgICAgICBpZiAob2JqIGluc3RhbmNlb2YgTWFwKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBvYmopXG4gICAgICAgICAgICAgICAgYWRkKGtleSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG9iaiAmJiB0eXBlb2Ygb2JqID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMob2JqKSlcbiAgICAgICAgICAgICAgICBhZGQoa2V5LCBvYmpba2V5XSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBzY2hlbWEuc29ydE1hcEVudHJpZXMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIG1hcC5pdGVtcy5zb3J0KHNjaGVtYS5zb3J0TWFwRW50cmllcyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1hcDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQWRkcyBhIHZhbHVlIHRvIHRoZSBjb2xsZWN0aW9uLlxuICAgICAqXG4gICAgICogQHBhcmFtIG92ZXJ3cml0ZSAtIElmIG5vdCBzZXQgYHRydWVgLCB1c2luZyBhIGtleSB0aGF0IGlzIGFscmVhZHkgaW4gdGhlXG4gICAgICogICBjb2xsZWN0aW9uIHdpbGwgdGhyb3cuIE90aGVyd2lzZSwgb3ZlcndyaXRlcyB0aGUgcHJldmlvdXMgdmFsdWUuXG4gICAgICovXG4gICAgYWRkKHBhaXIsIG92ZXJ3cml0ZSkge1xuICAgICAgICBsZXQgX3BhaXI7XG4gICAgICAgIGlmIChpc1BhaXIocGFpcikpXG4gICAgICAgICAgICBfcGFpciA9IHBhaXI7XG4gICAgICAgIGVsc2UgaWYgKCFwYWlyIHx8IHR5cGVvZiBwYWlyICE9PSAnb2JqZWN0JyB8fCAhKCdrZXknIGluIHBhaXIpKSB7XG4gICAgICAgICAgICAvLyBJbiBUeXBlU2NyaXB0LCB0aGlzIG5ldmVyIGhhcHBlbnMuXG4gICAgICAgICAgICBfcGFpciA9IG5ldyBQYWlyKHBhaXIsIHBhaXI/LnZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgICAgICBfcGFpciA9IG5ldyBQYWlyKHBhaXIua2V5LCBwYWlyLnZhbHVlKTtcbiAgICAgICAgY29uc3QgcHJldiA9IGZpbmRQYWlyKHRoaXMuaXRlbXMsIF9wYWlyLmtleSk7XG4gICAgICAgIGNvbnN0IHNvcnRFbnRyaWVzID0gdGhpcy5zY2hlbWE/LnNvcnRNYXBFbnRyaWVzO1xuICAgICAgICBpZiAocHJldikge1xuICAgICAgICAgICAgaWYgKCFvdmVyd3JpdGUpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBLZXkgJHtfcGFpci5rZXl9IGFscmVhZHkgc2V0YCk7XG4gICAgICAgICAgICAvLyBGb3Igc2NhbGFycywga2VlcCB0aGUgb2xkIG5vZGUgJiBpdHMgY29tbWVudHMgYW5kIGFuY2hvcnNcbiAgICAgICAgICAgIGlmIChpc1NjYWxhcihwcmV2LnZhbHVlKSAmJiBpc1NjYWxhclZhbHVlKF9wYWlyLnZhbHVlKSlcbiAgICAgICAgICAgICAgICBwcmV2LnZhbHVlLnZhbHVlID0gX3BhaXIudmFsdWU7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgcHJldi52YWx1ZSA9IF9wYWlyLnZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHNvcnRFbnRyaWVzKSB7XG4gICAgICAgICAgICBjb25zdCBpID0gdGhpcy5pdGVtcy5maW5kSW5kZXgoaXRlbSA9PiBzb3J0RW50cmllcyhfcGFpciwgaXRlbSkgPCAwKTtcbiAgICAgICAgICAgIGlmIChpID09PSAtMSlcbiAgICAgICAgICAgICAgICB0aGlzLml0ZW1zLnB1c2goX3BhaXIpO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHRoaXMuaXRlbXMuc3BsaWNlKGksIDAsIF9wYWlyKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaXRlbXMucHVzaChfcGFpcik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZGVsZXRlKGtleSkge1xuICAgICAgICBjb25zdCBpdCA9IGZpbmRQYWlyKHRoaXMuaXRlbXMsIGtleSk7XG4gICAgICAgIGlmICghaXQpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIGNvbnN0IGRlbCA9IHRoaXMuaXRlbXMuc3BsaWNlKHRoaXMuaXRlbXMuaW5kZXhPZihpdCksIDEpO1xuICAgICAgICByZXR1cm4gZGVsLmxlbmd0aCA+IDA7XG4gICAgfVxuICAgIGdldChrZXksIGtlZXBTY2FsYXIpIHtcbiAgICAgICAgY29uc3QgaXQgPSBmaW5kUGFpcih0aGlzLml0ZW1zLCBrZXkpO1xuICAgICAgICBjb25zdCBub2RlID0gaXQ/LnZhbHVlO1xuICAgICAgICByZXR1cm4gKCFrZWVwU2NhbGFyICYmIGlzU2NhbGFyKG5vZGUpID8gbm9kZS52YWx1ZSA6IG5vZGUpID8/IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgaGFzKGtleSkge1xuICAgICAgICByZXR1cm4gISFmaW5kUGFpcih0aGlzLml0ZW1zLCBrZXkpO1xuICAgIH1cbiAgICBzZXQoa2V5LCB2YWx1ZSkge1xuICAgICAgICB0aGlzLmFkZChuZXcgUGFpcihrZXksIHZhbHVlKSwgdHJ1ZSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBjdHggLSBDb252ZXJzaW9uIGNvbnRleHQsIG9yaWdpbmFsbHkgc2V0IGluIERvY3VtZW50I3RvSlMoKVxuICAgICAqIEBwYXJhbSB7Q2xhc3N9IFR5cGUgLSBJZiBzZXQsIGZvcmNlcyB0aGUgcmV0dXJuZWQgY29sbGVjdGlvbiB0eXBlXG4gICAgICogQHJldHVybnMgSW5zdGFuY2Ugb2YgVHlwZSwgTWFwLCBvciBPYmplY3RcbiAgICAgKi9cbiAgICB0b0pTT04oXywgY3R4LCBUeXBlKSB7XG4gICAgICAgIGNvbnN0IG1hcCA9IFR5cGUgPyBuZXcgVHlwZSgpIDogY3R4Py5tYXBBc01hcCA/IG5ldyBNYXAoKSA6IHt9O1xuICAgICAgICBpZiAoY3R4Py5vbkNyZWF0ZSlcbiAgICAgICAgICAgIGN0eC5vbkNyZWF0ZShtYXApO1xuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5pdGVtcylcbiAgICAgICAgICAgIGFkZFBhaXJUb0pTTWFwKGN0eCwgbWFwLCBpdGVtKTtcbiAgICAgICAgcmV0dXJuIG1hcDtcbiAgICB9XG4gICAgdG9TdHJpbmcoY3R4LCBvbkNvbW1lbnQsIG9uQ2hvbXBLZWVwKSB7XG4gICAgICAgIGlmICghY3R4KVxuICAgICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMpO1xuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5pdGVtcykge1xuICAgICAgICAgICAgaWYgKCFpc1BhaXIoaXRlbSkpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBNYXAgaXRlbXMgbXVzdCBhbGwgYmUgcGFpcnM7IGZvdW5kICR7SlNPTi5zdHJpbmdpZnkoaXRlbSl9IGluc3RlYWRgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWN0eC5hbGxOdWxsVmFsdWVzICYmIHRoaXMuaGFzQWxsTnVsbFZhbHVlcyhmYWxzZSkpXG4gICAgICAgICAgICBjdHggPSBPYmplY3QuYXNzaWduKHt9LCBjdHgsIHsgYWxsTnVsbFZhbHVlczogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIHN0cmluZ2lmeUNvbGxlY3Rpb24odGhpcywgY3R4LCB7XG4gICAgICAgICAgICBibG9ja0l0ZW1QcmVmaXg6ICcnLFxuICAgICAgICAgICAgZmxvd0NoYXJzOiB7IHN0YXJ0OiAneycsIGVuZDogJ30nIH0sXG4gICAgICAgICAgICBpdGVtSW5kZW50OiBjdHguaW5kZW50IHx8ICcnLFxuICAgICAgICAgICAgb25DaG9tcEtlZXAsXG4gICAgICAgICAgICBvbkNvbW1lbnRcbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG5leHBvcnQgeyBZQU1MTWFwLCBmaW5kUGFpciB9O1xuIiwgImltcG9ydCB7IGlzTWFwIH0gZnJvbSAnLi4vLi4vbm9kZXMvaWRlbnRpdHkuanMnO1xuaW1wb3J0IHsgWUFNTE1hcCB9IGZyb20gJy4uLy4uL25vZGVzL1lBTUxNYXAuanMnO1xuXG5jb25zdCBtYXAgPSB7XG4gICAgY29sbGVjdGlvbjogJ21hcCcsXG4gICAgZGVmYXVsdDogdHJ1ZSxcbiAgICBub2RlQ2xhc3M6IFlBTUxNYXAsXG4gICAgdGFnOiAndGFnOnlhbWwub3JnLDIwMDI6bWFwJyxcbiAgICByZXNvbHZlKG1hcCwgb25FcnJvcikge1xuICAgICAgICBpZiAoIWlzTWFwKG1hcCkpXG4gICAgICAgICAgICBvbkVycm9yKCdFeHBlY3RlZCBhIG1hcHBpbmcgZm9yIHRoaXMgdGFnJyk7XG4gICAgICAgIHJldHVybiBtYXA7XG4gICAgfSxcbiAgICBjcmVhdGVOb2RlOiAoc2NoZW1hLCBvYmosIGN0eCkgPT4gWUFNTE1hcC5mcm9tKHNjaGVtYSwgb2JqLCBjdHgpXG59O1xuXG5leHBvcnQgeyBtYXAgfTtcbiIsICJpbXBvcnQgeyBjcmVhdGVOb2RlIH0gZnJvbSAnLi4vZG9jL2NyZWF0ZU5vZGUuanMnO1xuaW1wb3J0IHsgc3RyaW5naWZ5Q29sbGVjdGlvbiB9IGZyb20gJy4uL3N0cmluZ2lmeS9zdHJpbmdpZnlDb2xsZWN0aW9uLmpzJztcbmltcG9ydCB7IENvbGxlY3Rpb24gfSBmcm9tICcuL0NvbGxlY3Rpb24uanMnO1xuaW1wb3J0IHsgU0VRLCBpc1NjYWxhciB9IGZyb20gJy4vaWRlbnRpdHkuanMnO1xuaW1wb3J0IHsgaXNTY2FsYXJWYWx1ZSB9IGZyb20gJy4vU2NhbGFyLmpzJztcbmltcG9ydCB7IHRvSlMgfSBmcm9tICcuL3RvSlMuanMnO1xuXG5jbGFzcyBZQU1MU2VxIGV4dGVuZHMgQ29sbGVjdGlvbiB7XG4gICAgc3RhdGljIGdldCB0YWdOYW1lKCkge1xuICAgICAgICByZXR1cm4gJ3RhZzp5YW1sLm9yZywyMDAyOnNlcSc7XG4gICAgfVxuICAgIGNvbnN0cnVjdG9yKHNjaGVtYSkge1xuICAgICAgICBzdXBlcihTRVEsIHNjaGVtYSk7XG4gICAgICAgIHRoaXMuaXRlbXMgPSBbXTtcbiAgICB9XG4gICAgYWRkKHZhbHVlKSB7XG4gICAgICAgIHRoaXMuaXRlbXMucHVzaCh2YWx1ZSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgYSB2YWx1ZSBmcm9tIHRoZSBjb2xsZWN0aW9uLlxuICAgICAqXG4gICAgICogYGtleWAgbXVzdCBjb250YWluIGEgcmVwcmVzZW50YXRpb24gb2YgYW4gaW50ZWdlciBmb3IgdGhpcyB0byBzdWNjZWVkLlxuICAgICAqIEl0IG1heSBiZSB3cmFwcGVkIGluIGEgYFNjYWxhcmAuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGl0ZW0gd2FzIGZvdW5kIGFuZCByZW1vdmVkLlxuICAgICAqL1xuICAgIGRlbGV0ZShrZXkpIHtcbiAgICAgICAgY29uc3QgaWR4ID0gYXNJdGVtSW5kZXgoa2V5KTtcbiAgICAgICAgaWYgKHR5cGVvZiBpZHggIT09ICdudW1iZXInKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICBjb25zdCBkZWwgPSB0aGlzLml0ZW1zLnNwbGljZShpZHgsIDEpO1xuICAgICAgICByZXR1cm4gZGVsLmxlbmd0aCA+IDA7XG4gICAgfVxuICAgIGdldChrZXksIGtlZXBTY2FsYXIpIHtcbiAgICAgICAgY29uc3QgaWR4ID0gYXNJdGVtSW5kZXgoa2V5KTtcbiAgICAgICAgaWYgKHR5cGVvZiBpZHggIT09ICdudW1iZXInKVxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgY29uc3QgaXQgPSB0aGlzLml0ZW1zW2lkeF07XG4gICAgICAgIHJldHVybiAha2VlcFNjYWxhciAmJiBpc1NjYWxhcihpdCkgPyBpdC52YWx1ZSA6IGl0O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgdGhlIGNvbGxlY3Rpb24gaW5jbHVkZXMgYSB2YWx1ZSB3aXRoIHRoZSBrZXkgYGtleWAuXG4gICAgICpcbiAgICAgKiBga2V5YCBtdXN0IGNvbnRhaW4gYSByZXByZXNlbnRhdGlvbiBvZiBhbiBpbnRlZ2VyIGZvciB0aGlzIHRvIHN1Y2NlZWQuXG4gICAgICogSXQgbWF5IGJlIHdyYXBwZWQgaW4gYSBgU2NhbGFyYC5cbiAgICAgKi9cbiAgICBoYXMoa2V5KSB7XG4gICAgICAgIGNvbnN0IGlkeCA9IGFzSXRlbUluZGV4KGtleSk7XG4gICAgICAgIHJldHVybiB0eXBlb2YgaWR4ID09PSAnbnVtYmVyJyAmJiBpZHggPCB0aGlzLml0ZW1zLmxlbmd0aDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogU2V0cyBhIHZhbHVlIGluIHRoaXMgY29sbGVjdGlvbi4gRm9yIGAhIXNldGAsIGB2YWx1ZWAgbmVlZHMgdG8gYmUgYVxuICAgICAqIGJvb2xlYW4gdG8gYWRkL3JlbW92ZSB0aGUgaXRlbSBmcm9tIHRoZSBzZXQuXG4gICAgICpcbiAgICAgKiBJZiBga2V5YCBkb2VzIG5vdCBjb250YWluIGEgcmVwcmVzZW50YXRpb24gb2YgYW4gaW50ZWdlciwgdGhpcyB3aWxsIHRocm93LlxuICAgICAqIEl0IG1heSBiZSB3cmFwcGVkIGluIGEgYFNjYWxhcmAuXG4gICAgICovXG4gICAgc2V0KGtleSwgdmFsdWUpIHtcbiAgICAgICAgY29uc3QgaWR4ID0gYXNJdGVtSW5kZXgoa2V5KTtcbiAgICAgICAgaWYgKHR5cGVvZiBpZHggIT09ICdudW1iZXInKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBhIHZhbGlkIGluZGV4LCBub3QgJHtrZXl9LmApO1xuICAgICAgICBjb25zdCBwcmV2ID0gdGhpcy5pdGVtc1tpZHhdO1xuICAgICAgICBpZiAoaXNTY2FsYXIocHJldikgJiYgaXNTY2FsYXJWYWx1ZSh2YWx1ZSkpXG4gICAgICAgICAgICBwcmV2LnZhbHVlID0gdmFsdWU7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHRoaXMuaXRlbXNbaWR4XSA9IHZhbHVlO1xuICAgIH1cbiAgICB0b0pTT04oXywgY3R4KSB7XG4gICAgICAgIGNvbnN0IHNlcSA9IFtdO1xuICAgICAgICBpZiAoY3R4Py5vbkNyZWF0ZSlcbiAgICAgICAgICAgIGN0eC5vbkNyZWF0ZShzZXEpO1xuICAgICAgICBsZXQgaSA9IDA7XG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLml0ZW1zKVxuICAgICAgICAgICAgc2VxLnB1c2godG9KUyhpdGVtLCBTdHJpbmcoaSsrKSwgY3R4KSk7XG4gICAgICAgIHJldHVybiBzZXE7XG4gICAgfVxuICAgIHRvU3RyaW5nKGN0eCwgb25Db21tZW50LCBvbkNob21wS2VlcCkge1xuICAgICAgICBpZiAoIWN0eClcbiAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzKTtcbiAgICAgICAgcmV0dXJuIHN0cmluZ2lmeUNvbGxlY3Rpb24odGhpcywgY3R4LCB7XG4gICAgICAgICAgICBibG9ja0l0ZW1QcmVmaXg6ICctICcsXG4gICAgICAgICAgICBmbG93Q2hhcnM6IHsgc3RhcnQ6ICdbJywgZW5kOiAnXScgfSxcbiAgICAgICAgICAgIGl0ZW1JbmRlbnQ6IChjdHguaW5kZW50IHx8ICcnKSArICcgICcsXG4gICAgICAgICAgICBvbkNob21wS2VlcCxcbiAgICAgICAgICAgIG9uQ29tbWVudFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgc3RhdGljIGZyb20oc2NoZW1hLCBvYmosIGN0eCkge1xuICAgICAgICBjb25zdCB7IHJlcGxhY2VyIH0gPSBjdHg7XG4gICAgICAgIGNvbnN0IHNlcSA9IG5ldyB0aGlzKHNjaGVtYSk7XG4gICAgICAgIGlmIChvYmogJiYgU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdChvYmopKSB7XG4gICAgICAgICAgICBsZXQgaSA9IDA7XG4gICAgICAgICAgICBmb3IgKGxldCBpdCBvZiBvYmopIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHJlcGxhY2VyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IG9iaiBpbnN0YW5jZW9mIFNldCA/IGl0IDogU3RyaW5nKGkrKyk7XG4gICAgICAgICAgICAgICAgICAgIGl0ID0gcmVwbGFjZXIuY2FsbChvYmosIGtleSwgaXQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzZXEuaXRlbXMucHVzaChjcmVhdGVOb2RlKGl0LCB1bmRlZmluZWQsIGN0eCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzZXE7XG4gICAgfVxufVxuZnVuY3Rpb24gYXNJdGVtSW5kZXgoa2V5KSB7XG4gICAgbGV0IGlkeCA9IGlzU2NhbGFyKGtleSkgPyBrZXkudmFsdWUgOiBrZXk7XG4gICAgaWYgKGlkeCAmJiB0eXBlb2YgaWR4ID09PSAnc3RyaW5nJylcbiAgICAgICAgaWR4ID0gTnVtYmVyKGlkeCk7XG4gICAgcmV0dXJuIHR5cGVvZiBpZHggPT09ICdudW1iZXInICYmIE51bWJlci5pc0ludGVnZXIoaWR4KSAmJiBpZHggPj0gMFxuICAgICAgICA/IGlkeFxuICAgICAgICA6IG51bGw7XG59XG5cbmV4cG9ydCB7IFlBTUxTZXEgfTtcbiIsICJpbXBvcnQgeyBpc1NlcSB9IGZyb20gJy4uLy4uL25vZGVzL2lkZW50aXR5LmpzJztcbmltcG9ydCB7IFlBTUxTZXEgfSBmcm9tICcuLi8uLi9ub2Rlcy9ZQU1MU2VxLmpzJztcblxuY29uc3Qgc2VxID0ge1xuICAgIGNvbGxlY3Rpb246ICdzZXEnLFxuICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgbm9kZUNsYXNzOiBZQU1MU2VxLFxuICAgIHRhZzogJ3RhZzp5YW1sLm9yZywyMDAyOnNlcScsXG4gICAgcmVzb2x2ZShzZXEsIG9uRXJyb3IpIHtcbiAgICAgICAgaWYgKCFpc1NlcShzZXEpKVxuICAgICAgICAgICAgb25FcnJvcignRXhwZWN0ZWQgYSBzZXF1ZW5jZSBmb3IgdGhpcyB0YWcnKTtcbiAgICAgICAgcmV0dXJuIHNlcTtcbiAgICB9LFxuICAgIGNyZWF0ZU5vZGU6IChzY2hlbWEsIG9iaiwgY3R4KSA9PiBZQU1MU2VxLmZyb20oc2NoZW1hLCBvYmosIGN0eClcbn07XG5cbmV4cG9ydCB7IHNlcSB9O1xuIiwgImltcG9ydCB7IHN0cmluZ2lmeVN0cmluZyB9IGZyb20gJy4uLy4uL3N0cmluZ2lmeS9zdHJpbmdpZnlTdHJpbmcuanMnO1xuXG5jb25zdCBzdHJpbmcgPSB7XG4gICAgaWRlbnRpZnk6IHZhbHVlID0+IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycsXG4gICAgZGVmYXVsdDogdHJ1ZSxcbiAgICB0YWc6ICd0YWc6eWFtbC5vcmcsMjAwMjpzdHInLFxuICAgIHJlc29sdmU6IHN0ciA9PiBzdHIsXG4gICAgc3RyaW5naWZ5KGl0ZW0sIGN0eCwgb25Db21tZW50LCBvbkNob21wS2VlcCkge1xuICAgICAgICBjdHggPSBPYmplY3QuYXNzaWduKHsgYWN0dWFsU3RyaW5nOiB0cnVlIH0sIGN0eCk7XG4gICAgICAgIHJldHVybiBzdHJpbmdpZnlTdHJpbmcoaXRlbSwgY3R4LCBvbkNvbW1lbnQsIG9uQ2hvbXBLZWVwKTtcbiAgICB9XG59O1xuXG5leHBvcnQgeyBzdHJpbmcgfTtcbiIsICJpbXBvcnQgeyBTY2FsYXIgfSBmcm9tICcuLi8uLi9ub2Rlcy9TY2FsYXIuanMnO1xuXG5jb25zdCBudWxsVGFnID0ge1xuICAgIGlkZW50aWZ5OiB2YWx1ZSA9PiB2YWx1ZSA9PSBudWxsLFxuICAgIGNyZWF0ZU5vZGU6ICgpID0+IG5ldyBTY2FsYXIobnVsbCksXG4gICAgZGVmYXVsdDogdHJ1ZSxcbiAgICB0YWc6ICd0YWc6eWFtbC5vcmcsMjAwMjpudWxsJyxcbiAgICB0ZXN0OiAvXig/On58W05uXXVsbHxOVUxMKT8kLyxcbiAgICByZXNvbHZlOiAoKSA9PiBuZXcgU2NhbGFyKG51bGwpLFxuICAgIHN0cmluZ2lmeTogKHsgc291cmNlIH0sIGN0eCkgPT4gdHlwZW9mIHNvdXJjZSA9PT0gJ3N0cmluZycgJiYgbnVsbFRhZy50ZXN0LnRlc3Qoc291cmNlKVxuICAgICAgICA/IHNvdXJjZVxuICAgICAgICA6IGN0eC5vcHRpb25zLm51bGxTdHJcbn07XG5cbmV4cG9ydCB7IG51bGxUYWcgfTtcbiIsICJpbXBvcnQgeyBTY2FsYXIgfSBmcm9tICcuLi8uLi9ub2Rlcy9TY2FsYXIuanMnO1xuXG5jb25zdCBib29sVGFnID0ge1xuICAgIGlkZW50aWZ5OiB2YWx1ZSA9PiB0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJyxcbiAgICBkZWZhdWx0OiB0cnVlLFxuICAgIHRhZzogJ3RhZzp5YW1sLm9yZywyMDAyOmJvb2wnLFxuICAgIHRlc3Q6IC9eKD86W1R0XXJ1ZXxUUlVFfFtGZl1hbHNlfEZBTFNFKSQvLFxuICAgIHJlc29sdmU6IHN0ciA9PiBuZXcgU2NhbGFyKHN0clswXSA9PT0gJ3QnIHx8IHN0clswXSA9PT0gJ1QnKSxcbiAgICBzdHJpbmdpZnkoeyBzb3VyY2UsIHZhbHVlIH0sIGN0eCkge1xuICAgICAgICBpZiAoc291cmNlICYmIGJvb2xUYWcudGVzdC50ZXN0KHNvdXJjZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHN2ID0gc291cmNlWzBdID09PSAndCcgfHwgc291cmNlWzBdID09PSAnVCc7XG4gICAgICAgICAgICBpZiAodmFsdWUgPT09IHN2KVxuICAgICAgICAgICAgICAgIHJldHVybiBzb3VyY2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlID8gY3R4Lm9wdGlvbnMudHJ1ZVN0ciA6IGN0eC5vcHRpb25zLmZhbHNlU3RyO1xuICAgIH1cbn07XG5cbmV4cG9ydCB7IGJvb2xUYWcgfTtcbiIsICJmdW5jdGlvbiBzdHJpbmdpZnlOdW1iZXIoeyBmb3JtYXQsIG1pbkZyYWN0aW9uRGlnaXRzLCB0YWcsIHZhbHVlIH0pIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnYmlnaW50JylcbiAgICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gICAgY29uc3QgbnVtID0gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyA/IHZhbHVlIDogTnVtYmVyKHZhbHVlKTtcbiAgICBpZiAoIWlzRmluaXRlKG51bSkpXG4gICAgICAgIHJldHVybiBpc05hTihudW0pID8gJy5uYW4nIDogbnVtIDwgMCA/ICctLmluZicgOiAnLmluZic7XG4gICAgbGV0IG4gPSBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XG4gICAgaWYgKCFmb3JtYXQgJiZcbiAgICAgICAgbWluRnJhY3Rpb25EaWdpdHMgJiZcbiAgICAgICAgKCF0YWcgfHwgdGFnID09PSAndGFnOnlhbWwub3JnLDIwMDI6ZmxvYXQnKSAmJlxuICAgICAgICAvXlxcZC8udGVzdChuKSkge1xuICAgICAgICBsZXQgaSA9IG4uaW5kZXhPZignLicpO1xuICAgICAgICBpZiAoaSA8IDApIHtcbiAgICAgICAgICAgIGkgPSBuLmxlbmd0aDtcbiAgICAgICAgICAgIG4gKz0gJy4nO1xuICAgICAgICB9XG4gICAgICAgIGxldCBkID0gbWluRnJhY3Rpb25EaWdpdHMgLSAobi5sZW5ndGggLSBpIC0gMSk7XG4gICAgICAgIHdoaWxlIChkLS0gPiAwKVxuICAgICAgICAgICAgbiArPSAnMCc7XG4gICAgfVxuICAgIHJldHVybiBuO1xufVxuXG5leHBvcnQgeyBzdHJpbmdpZnlOdW1iZXIgfTtcbiIsICJpbXBvcnQgeyBTY2FsYXIgfSBmcm9tICcuLi8uLi9ub2Rlcy9TY2FsYXIuanMnO1xuaW1wb3J0IHsgc3RyaW5naWZ5TnVtYmVyIH0gZnJvbSAnLi4vLi4vc3RyaW5naWZ5L3N0cmluZ2lmeU51bWJlci5qcyc7XG5cbmNvbnN0IGZsb2F0TmFOID0ge1xuICAgIGlkZW50aWZ5OiB2YWx1ZSA9PiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInLFxuICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgdGFnOiAndGFnOnlhbWwub3JnLDIwMDI6ZmxvYXQnLFxuICAgIHRlc3Q6IC9eKD86Wy0rXT9cXC4oPzppbmZ8SW5mfElORil8XFwubmFufFxcLk5hTnxcXC5OQU4pJC8sXG4gICAgcmVzb2x2ZTogc3RyID0+IHN0ci5zbGljZSgtMykudG9Mb3dlckNhc2UoKSA9PT0gJ25hbidcbiAgICAgICAgPyBOYU5cbiAgICAgICAgOiBzdHJbMF0gPT09ICctJ1xuICAgICAgICAgICAgPyBOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFlcbiAgICAgICAgICAgIDogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLFxuICAgIHN0cmluZ2lmeTogc3RyaW5naWZ5TnVtYmVyXG59O1xuY29uc3QgZmxvYXRFeHAgPSB7XG4gICAgaWRlbnRpZnk6IHZhbHVlID0+IHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicsXG4gICAgZGVmYXVsdDogdHJ1ZSxcbiAgICB0YWc6ICd0YWc6eWFtbC5vcmcsMjAwMjpmbG9hdCcsXG4gICAgZm9ybWF0OiAnRVhQJyxcbiAgICB0ZXN0OiAvXlstK10/KD86XFwuWzAtOV0rfFswLTldKyg/OlxcLlswLTldKik/KVtlRV1bLStdP1swLTldKyQvLFxuICAgIHJlc29sdmU6IHN0ciA9PiBwYXJzZUZsb2F0KHN0ciksXG4gICAgc3RyaW5naWZ5KG5vZGUpIHtcbiAgICAgICAgY29uc3QgbnVtID0gTnVtYmVyKG5vZGUudmFsdWUpO1xuICAgICAgICByZXR1cm4gaXNGaW5pdGUobnVtKSA/IG51bS50b0V4cG9uZW50aWFsKCkgOiBzdHJpbmdpZnlOdW1iZXIobm9kZSk7XG4gICAgfVxufTtcbmNvbnN0IGZsb2F0ID0ge1xuICAgIGlkZW50aWZ5OiB2YWx1ZSA9PiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInLFxuICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgdGFnOiAndGFnOnlhbWwub3JnLDIwMDI6ZmxvYXQnLFxuICAgIHRlc3Q6IC9eWy0rXT8oPzpcXC5bMC05XSt8WzAtOV0rXFwuWzAtOV0qKSQvLFxuICAgIHJlc29sdmUoc3RyKSB7XG4gICAgICAgIGNvbnN0IG5vZGUgPSBuZXcgU2NhbGFyKHBhcnNlRmxvYXQoc3RyKSk7XG4gICAgICAgIGNvbnN0IGRvdCA9IHN0ci5pbmRleE9mKCcuJyk7XG4gICAgICAgIGlmIChkb3QgIT09IC0xICYmIHN0cltzdHIubGVuZ3RoIC0gMV0gPT09ICcwJylcbiAgICAgICAgICAgIG5vZGUubWluRnJhY3Rpb25EaWdpdHMgPSBzdHIubGVuZ3RoIC0gZG90IC0gMTtcbiAgICAgICAgcmV0dXJuIG5vZGU7XG4gICAgfSxcbiAgICBzdHJpbmdpZnk6IHN0cmluZ2lmeU51bWJlclxufTtcblxuZXhwb3J0IHsgZmxvYXQsIGZsb2F0RXhwLCBmbG9hdE5hTiB9O1xuIiwgImltcG9ydCB7IHN0cmluZ2lmeU51bWJlciB9IGZyb20gJy4uLy4uL3N0cmluZ2lmeS9zdHJpbmdpZnlOdW1iZXIuanMnO1xuXG5jb25zdCBpbnRJZGVudGlmeSA9ICh2YWx1ZSkgPT4gdHlwZW9mIHZhbHVlID09PSAnYmlnaW50JyB8fCBOdW1iZXIuaXNJbnRlZ2VyKHZhbHVlKTtcbmNvbnN0IGludFJlc29sdmUgPSAoc3RyLCBvZmZzZXQsIHJhZGl4LCB7IGludEFzQmlnSW50IH0pID0+IChpbnRBc0JpZ0ludCA/IEJpZ0ludChzdHIpIDogcGFyc2VJbnQoc3RyLnN1YnN0cmluZyhvZmZzZXQpLCByYWRpeCkpO1xuZnVuY3Rpb24gaW50U3RyaW5naWZ5KG5vZGUsIHJhZGl4LCBwcmVmaXgpIHtcbiAgICBjb25zdCB7IHZhbHVlIH0gPSBub2RlO1xuICAgIGlmIChpbnRJZGVudGlmeSh2YWx1ZSkgJiYgdmFsdWUgPj0gMClcbiAgICAgICAgcmV0dXJuIHByZWZpeCArIHZhbHVlLnRvU3RyaW5nKHJhZGl4KTtcbiAgICByZXR1cm4gc3RyaW5naWZ5TnVtYmVyKG5vZGUpO1xufVxuY29uc3QgaW50T2N0ID0ge1xuICAgIGlkZW50aWZ5OiB2YWx1ZSA9PiBpbnRJZGVudGlmeSh2YWx1ZSkgJiYgdmFsdWUgPj0gMCxcbiAgICBkZWZhdWx0OiB0cnVlLFxuICAgIHRhZzogJ3RhZzp5YW1sLm9yZywyMDAyOmludCcsXG4gICAgZm9ybWF0OiAnT0NUJyxcbiAgICB0ZXN0OiAvXjBvWzAtN10rJC8sXG4gICAgcmVzb2x2ZTogKHN0ciwgX29uRXJyb3IsIG9wdCkgPT4gaW50UmVzb2x2ZShzdHIsIDIsIDgsIG9wdCksXG4gICAgc3RyaW5naWZ5OiBub2RlID0+IGludFN0cmluZ2lmeShub2RlLCA4LCAnMG8nKVxufTtcbmNvbnN0IGludCA9IHtcbiAgICBpZGVudGlmeTogaW50SWRlbnRpZnksXG4gICAgZGVmYXVsdDogdHJ1ZSxcbiAgICB0YWc6ICd0YWc6eWFtbC5vcmcsMjAwMjppbnQnLFxuICAgIHRlc3Q6IC9eWy0rXT9bMC05XSskLyxcbiAgICByZXNvbHZlOiAoc3RyLCBfb25FcnJvciwgb3B0KSA9PiBpbnRSZXNvbHZlKHN0ciwgMCwgMTAsIG9wdCksXG4gICAgc3RyaW5naWZ5OiBzdHJpbmdpZnlOdW1iZXJcbn07XG5jb25zdCBpbnRIZXggPSB7XG4gICAgaWRlbnRpZnk6IHZhbHVlID0+IGludElkZW50aWZ5KHZhbHVlKSAmJiB2YWx1ZSA+PSAwLFxuICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgdGFnOiAndGFnOnlhbWwub3JnLDIwMDI6aW50JyxcbiAgICBmb3JtYXQ6ICdIRVgnLFxuICAgIHRlc3Q6IC9eMHhbMC05YS1mQS1GXSskLyxcbiAgICByZXNvbHZlOiAoc3RyLCBfb25FcnJvciwgb3B0KSA9PiBpbnRSZXNvbHZlKHN0ciwgMiwgMTYsIG9wdCksXG4gICAgc3RyaW5naWZ5OiBub2RlID0+IGludFN0cmluZ2lmeShub2RlLCAxNiwgJzB4Jylcbn07XG5cbmV4cG9ydCB7IGludCwgaW50SGV4LCBpbnRPY3QgfTtcbiIsICJpbXBvcnQgeyBtYXAgfSBmcm9tICcuLi9jb21tb24vbWFwLmpzJztcbmltcG9ydCB7IG51bGxUYWcgfSBmcm9tICcuLi9jb21tb24vbnVsbC5qcyc7XG5pbXBvcnQgeyBzZXEgfSBmcm9tICcuLi9jb21tb24vc2VxLmpzJztcbmltcG9ydCB7IHN0cmluZyB9IGZyb20gJy4uL2NvbW1vbi9zdHJpbmcuanMnO1xuaW1wb3J0IHsgYm9vbFRhZyB9IGZyb20gJy4vYm9vbC5qcyc7XG5pbXBvcnQgeyBmbG9hdE5hTiwgZmxvYXRFeHAsIGZsb2F0IH0gZnJvbSAnLi9mbG9hdC5qcyc7XG5pbXBvcnQgeyBpbnRPY3QsIGludCwgaW50SGV4IH0gZnJvbSAnLi9pbnQuanMnO1xuXG5jb25zdCBzY2hlbWEgPSBbXG4gICAgbWFwLFxuICAgIHNlcSxcbiAgICBzdHJpbmcsXG4gICAgbnVsbFRhZyxcbiAgICBib29sVGFnLFxuICAgIGludE9jdCxcbiAgICBpbnQsXG4gICAgaW50SGV4LFxuICAgIGZsb2F0TmFOLFxuICAgIGZsb2F0RXhwLFxuICAgIGZsb2F0XG5dO1xuXG5leHBvcnQgeyBzY2hlbWEgfTtcbiIsICJpbXBvcnQgeyBTY2FsYXIgfSBmcm9tICcuLi8uLi9ub2Rlcy9TY2FsYXIuanMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAnLi4vY29tbW9uL21hcC5qcyc7XG5pbXBvcnQgeyBzZXEgfSBmcm9tICcuLi9jb21tb24vc2VxLmpzJztcblxuZnVuY3Rpb24gaW50SWRlbnRpZnkodmFsdWUpIHtcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnYmlnaW50JyB8fCBOdW1iZXIuaXNJbnRlZ2VyKHZhbHVlKTtcbn1cbmNvbnN0IHN0cmluZ2lmeUpTT04gPSAoeyB2YWx1ZSB9KSA9PiBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XG5jb25zdCBqc29uU2NhbGFycyA9IFtcbiAgICB7XG4gICAgICAgIGlkZW50aWZ5OiB2YWx1ZSA9PiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnLFxuICAgICAgICBkZWZhdWx0OiB0cnVlLFxuICAgICAgICB0YWc6ICd0YWc6eWFtbC5vcmcsMjAwMjpzdHInLFxuICAgICAgICByZXNvbHZlOiBzdHIgPT4gc3RyLFxuICAgICAgICBzdHJpbmdpZnk6IHN0cmluZ2lmeUpTT05cbiAgICB9LFxuICAgIHtcbiAgICAgICAgaWRlbnRpZnk6IHZhbHVlID0+IHZhbHVlID09IG51bGwsXG4gICAgICAgIGNyZWF0ZU5vZGU6ICgpID0+IG5ldyBTY2FsYXIobnVsbCksXG4gICAgICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgICAgIHRhZzogJ3RhZzp5YW1sLm9yZywyMDAyOm51bGwnLFxuICAgICAgICB0ZXN0OiAvXm51bGwkLyxcbiAgICAgICAgcmVzb2x2ZTogKCkgPT4gbnVsbCxcbiAgICAgICAgc3RyaW5naWZ5OiBzdHJpbmdpZnlKU09OXG4gICAgfSxcbiAgICB7XG4gICAgICAgIGlkZW50aWZ5OiB2YWx1ZSA9PiB0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJyxcbiAgICAgICAgZGVmYXVsdDogdHJ1ZSxcbiAgICAgICAgdGFnOiAndGFnOnlhbWwub3JnLDIwMDI6Ym9vbCcsXG4gICAgICAgIHRlc3Q6IC9edHJ1ZXxmYWxzZSQvLFxuICAgICAgICByZXNvbHZlOiBzdHIgPT4gc3RyID09PSAndHJ1ZScsXG4gICAgICAgIHN0cmluZ2lmeTogc3RyaW5naWZ5SlNPTlxuICAgIH0sXG4gICAge1xuICAgICAgICBpZGVudGlmeTogaW50SWRlbnRpZnksXG4gICAgICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgICAgIHRhZzogJ3RhZzp5YW1sLm9yZywyMDAyOmludCcsXG4gICAgICAgIHRlc3Q6IC9eLT8oPzowfFsxLTldWzAtOV0qKSQvLFxuICAgICAgICByZXNvbHZlOiAoc3RyLCBfb25FcnJvciwgeyBpbnRBc0JpZ0ludCB9KSA9PiBpbnRBc0JpZ0ludCA/IEJpZ0ludChzdHIpIDogcGFyc2VJbnQoc3RyLCAxMCksXG4gICAgICAgIHN0cmluZ2lmeTogKHsgdmFsdWUgfSkgPT4gaW50SWRlbnRpZnkodmFsdWUpID8gdmFsdWUudG9TdHJpbmcoKSA6IEpTT04uc3RyaW5naWZ5KHZhbHVlKVxuICAgIH0sXG4gICAge1xuICAgICAgICBpZGVudGlmeTogdmFsdWUgPT4gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyxcbiAgICAgICAgZGVmYXVsdDogdHJ1ZSxcbiAgICAgICAgdGFnOiAndGFnOnlhbWwub3JnLDIwMDI6ZmxvYXQnLFxuICAgICAgICB0ZXN0OiAvXi0/KD86MHxbMS05XVswLTldKikoPzpcXC5bMC05XSopPyg/OltlRV1bLStdP1swLTldKyk/JC8sXG4gICAgICAgIHJlc29sdmU6IHN0ciA9PiBwYXJzZUZsb2F0KHN0ciksXG4gICAgICAgIHN0cmluZ2lmeTogc3RyaW5naWZ5SlNPTlxuICAgIH1cbl07XG5jb25zdCBqc29uRXJyb3IgPSB7XG4gICAgZGVmYXVsdDogdHJ1ZSxcbiAgICB0YWc6ICcnLFxuICAgIHRlc3Q6IC9eLyxcbiAgICByZXNvbHZlKHN0ciwgb25FcnJvcikge1xuICAgICAgICBvbkVycm9yKGBVbnJlc29sdmVkIHBsYWluIHNjYWxhciAke0pTT04uc3RyaW5naWZ5KHN0cil9YCk7XG4gICAgICAgIHJldHVybiBzdHI7XG4gICAgfVxufTtcbmNvbnN0IHNjaGVtYSA9IFttYXAsIHNlcV0uY29uY2F0KGpzb25TY2FsYXJzLCBqc29uRXJyb3IpO1xuXG5leHBvcnQgeyBzY2hlbWEgfTtcbiIsICJpbXBvcnQgeyBTY2FsYXIgfSBmcm9tICcuLi8uLi9ub2Rlcy9TY2FsYXIuanMnO1xuaW1wb3J0IHsgc3RyaW5naWZ5U3RyaW5nIH0gZnJvbSAnLi4vLi4vc3RyaW5naWZ5L3N0cmluZ2lmeVN0cmluZy5qcyc7XG5cbmNvbnN0IGJpbmFyeSA9IHtcbiAgICBpZGVudGlmeTogdmFsdWUgPT4gdmFsdWUgaW5zdGFuY2VvZiBVaW50OEFycmF5LCAvLyBCdWZmZXIgaW5oZXJpdHMgZnJvbSBVaW50OEFycmF5XG4gICAgZGVmYXVsdDogZmFsc2UsXG4gICAgdGFnOiAndGFnOnlhbWwub3JnLDIwMDI6YmluYXJ5JyxcbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgQnVmZmVyIGluIG5vZGUgYW5kIGFuIFVpbnQ4QXJyYXkgaW4gYnJvd3NlcnNcbiAgICAgKlxuICAgICAqIFRvIHVzZSB0aGUgcmVzdWx0aW5nIGJ1ZmZlciBhcyBhbiBpbWFnZSwgeW91J2xsIHdhbnQgdG8gZG8gc29tZXRoaW5nIGxpa2U6XG4gICAgICpcbiAgICAgKiAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbYnVmZmVyXSwgeyB0eXBlOiAnaW1hZ2UvanBlZycgfSlcbiAgICAgKiAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNwaG90bycpLnNyYyA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYilcbiAgICAgKi9cbiAgICByZXNvbHZlKHNyYywgb25FcnJvcikge1xuICAgICAgICBpZiAodHlwZW9mIEJ1ZmZlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcmV0dXJuIEJ1ZmZlci5mcm9tKHNyYywgJ2Jhc2U2NCcpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHR5cGVvZiBhdG9iID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAvLyBPbiBJRSAxMSwgYXRvYigpIGNhbid0IGhhbmRsZSBuZXdsaW5lc1xuICAgICAgICAgICAgY29uc3Qgc3RyID0gYXRvYihzcmMucmVwbGFjZSgvW1xcblxccl0vZywgJycpKTtcbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZlciA9IG5ldyBVaW50OEFycmF5KHN0ci5sZW5ndGgpO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyArK2kpXG4gICAgICAgICAgICAgICAgYnVmZmVyW2ldID0gc3RyLmNoYXJDb2RlQXQoaSk7XG4gICAgICAgICAgICByZXR1cm4gYnVmZmVyO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgb25FcnJvcignVGhpcyBlbnZpcm9ubWVudCBkb2VzIG5vdCBzdXBwb3J0IHJlYWRpbmcgYmluYXJ5IHRhZ3M7IGVpdGhlciBCdWZmZXIgb3IgYXRvYiBpcyByZXF1aXJlZCcpO1xuICAgICAgICAgICAgcmV0dXJuIHNyYztcbiAgICAgICAgfVxuICAgIH0sXG4gICAgc3RyaW5naWZ5KHsgY29tbWVudCwgdHlwZSwgdmFsdWUgfSwgY3R4LCBvbkNvbW1lbnQsIG9uQ2hvbXBLZWVwKSB7XG4gICAgICAgIGNvbnN0IGJ1ZiA9IHZhbHVlOyAvLyBjaGVja2VkIGVhcmxpZXIgYnkgYmluYXJ5LmlkZW50aWZ5KClcbiAgICAgICAgbGV0IHN0cjtcbiAgICAgICAgaWYgKHR5cGVvZiBCdWZmZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHN0ciA9XG4gICAgICAgICAgICAgICAgYnVmIGluc3RhbmNlb2YgQnVmZmVyXG4gICAgICAgICAgICAgICAgICAgID8gYnVmLnRvU3RyaW5nKCdiYXNlNjQnKVxuICAgICAgICAgICAgICAgICAgICA6IEJ1ZmZlci5mcm9tKGJ1Zi5idWZmZXIpLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0eXBlb2YgYnRvYSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgbGV0IHMgPSAnJztcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYnVmLmxlbmd0aDsgKytpKVxuICAgICAgICAgICAgICAgIHMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShidWZbaV0pO1xuICAgICAgICAgICAgc3RyID0gYnRvYShzKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVGhpcyBlbnZpcm9ubWVudCBkb2VzIG5vdCBzdXBwb3J0IHdyaXRpbmcgYmluYXJ5IHRhZ3M7IGVpdGhlciBCdWZmZXIgb3IgYnRvYSBpcyByZXF1aXJlZCcpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdHlwZSlcbiAgICAgICAgICAgIHR5cGUgPSBTY2FsYXIuQkxPQ0tfTElURVJBTDtcbiAgICAgICAgaWYgKHR5cGUgIT09IFNjYWxhci5RVU9URV9ET1VCTEUpIHtcbiAgICAgICAgICAgIGNvbnN0IGxpbmVXaWR0aCA9IE1hdGgubWF4KGN0eC5vcHRpb25zLmxpbmVXaWR0aCAtIGN0eC5pbmRlbnQubGVuZ3RoLCBjdHgub3B0aW9ucy5taW5Db250ZW50V2lkdGgpO1xuICAgICAgICAgICAgY29uc3QgbiA9IE1hdGguY2VpbChzdHIubGVuZ3RoIC8gbGluZVdpZHRoKTtcbiAgICAgICAgICAgIGNvbnN0IGxpbmVzID0gbmV3IEFycmF5KG4pO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDAsIG8gPSAwOyBpIDwgbjsgKytpLCBvICs9IGxpbmVXaWR0aCkge1xuICAgICAgICAgICAgICAgIGxpbmVzW2ldID0gc3RyLnN1YnN0cihvLCBsaW5lV2lkdGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3RyID0gbGluZXMuam9pbih0eXBlID09PSBTY2FsYXIuQkxPQ0tfTElURVJBTCA/ICdcXG4nIDogJyAnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3RyaW5naWZ5U3RyaW5nKHsgY29tbWVudCwgdHlwZSwgdmFsdWU6IHN0ciB9LCBjdHgsIG9uQ29tbWVudCwgb25DaG9tcEtlZXApO1xuICAgIH1cbn07XG5cbmV4cG9ydCB7IGJpbmFyeSB9O1xuIiwgImltcG9ydCB7IGlzU2VxLCBpc1BhaXIsIGlzTWFwIH0gZnJvbSAnLi4vLi4vbm9kZXMvaWRlbnRpdHkuanMnO1xuaW1wb3J0IHsgUGFpciwgY3JlYXRlUGFpciB9IGZyb20gJy4uLy4uL25vZGVzL1BhaXIuanMnO1xuaW1wb3J0IHsgU2NhbGFyIH0gZnJvbSAnLi4vLi4vbm9kZXMvU2NhbGFyLmpzJztcbmltcG9ydCB7IFlBTUxTZXEgfSBmcm9tICcuLi8uLi9ub2Rlcy9ZQU1MU2VxLmpzJztcblxuZnVuY3Rpb24gcmVzb2x2ZVBhaXJzKHNlcSwgb25FcnJvcikge1xuICAgIGlmIChpc1NlcShzZXEpKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2VxLml0ZW1zLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICBsZXQgaXRlbSA9IHNlcS5pdGVtc1tpXTtcbiAgICAgICAgICAgIGlmIChpc1BhaXIoaXRlbSkpXG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICBlbHNlIGlmIChpc01hcChpdGVtKSkge1xuICAgICAgICAgICAgICAgIGlmIChpdGVtLml0ZW1zLmxlbmd0aCA+IDEpXG4gICAgICAgICAgICAgICAgICAgIG9uRXJyb3IoJ0VhY2ggcGFpciBtdXN0IGhhdmUgaXRzIG93biBzZXF1ZW5jZSBpbmRpY2F0b3InKTtcbiAgICAgICAgICAgICAgICBjb25zdCBwYWlyID0gaXRlbS5pdGVtc1swXSB8fCBuZXcgUGFpcihuZXcgU2NhbGFyKG51bGwpKTtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS5jb21tZW50QmVmb3JlKVxuICAgICAgICAgICAgICAgICAgICBwYWlyLmtleS5jb21tZW50QmVmb3JlID0gcGFpci5rZXkuY29tbWVudEJlZm9yZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBgJHtpdGVtLmNvbW1lbnRCZWZvcmV9XFxuJHtwYWlyLmtleS5jb21tZW50QmVmb3JlfWBcbiAgICAgICAgICAgICAgICAgICAgICAgIDogaXRlbS5jb21tZW50QmVmb3JlO1xuICAgICAgICAgICAgICAgIGlmIChpdGVtLmNvbW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY24gPSBwYWlyLnZhbHVlID8/IHBhaXIua2V5O1xuICAgICAgICAgICAgICAgICAgICBjbi5jb21tZW50ID0gY24uY29tbWVudFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBgJHtpdGVtLmNvbW1lbnR9XFxuJHtjbi5jb21tZW50fWBcbiAgICAgICAgICAgICAgICAgICAgICAgIDogaXRlbS5jb21tZW50O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpdGVtID0gcGFpcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNlcS5pdGVtc1tpXSA9IGlzUGFpcihpdGVtKSA/IGl0ZW0gOiBuZXcgUGFpcihpdGVtKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlXG4gICAgICAgIG9uRXJyb3IoJ0V4cGVjdGVkIGEgc2VxdWVuY2UgZm9yIHRoaXMgdGFnJyk7XG4gICAgcmV0dXJuIHNlcTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZVBhaXJzKHNjaGVtYSwgaXRlcmFibGUsIGN0eCkge1xuICAgIGNvbnN0IHsgcmVwbGFjZXIgfSA9IGN0eDtcbiAgICBjb25zdCBwYWlycyA9IG5ldyBZQU1MU2VxKHNjaGVtYSk7XG4gICAgcGFpcnMudGFnID0gJ3RhZzp5YW1sLm9yZywyMDAyOnBhaXJzJztcbiAgICBsZXQgaSA9IDA7XG4gICAgaWYgKGl0ZXJhYmxlICYmIFN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QoaXRlcmFibGUpKVxuICAgICAgICBmb3IgKGxldCBpdCBvZiBpdGVyYWJsZSkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiByZXBsYWNlciA9PT0gJ2Z1bmN0aW9uJylcbiAgICAgICAgICAgICAgICBpdCA9IHJlcGxhY2VyLmNhbGwoaXRlcmFibGUsIFN0cmluZyhpKyspLCBpdCk7XG4gICAgICAgICAgICBsZXQga2V5LCB2YWx1ZTtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGl0KSkge1xuICAgICAgICAgICAgICAgIGlmIChpdC5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAga2V5ID0gaXRbMF07XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gaXRbMV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgRXhwZWN0ZWQgW2tleSwgdmFsdWVdIHR1cGxlOiAke2l0fWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoaXQgJiYgaXQgaW5zdGFuY2VvZiBPYmplY3QpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoaXQpO1xuICAgICAgICAgICAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICBrZXkgPSBrZXlzWzBdO1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGl0W2tleV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBFeHBlY3RlZCB0dXBsZSB3aXRoIG9uZSBrZXksIG5vdCAke2tleXMubGVuZ3RofSBrZXlzYCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAga2V5ID0gaXQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwYWlycy5pdGVtcy5wdXNoKGNyZWF0ZVBhaXIoa2V5LCB2YWx1ZSwgY3R4KSk7XG4gICAgICAgIH1cbiAgICByZXR1cm4gcGFpcnM7XG59XG5jb25zdCBwYWlycyA9IHtcbiAgICBjb2xsZWN0aW9uOiAnc2VxJyxcbiAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICB0YWc6ICd0YWc6eWFtbC5vcmcsMjAwMjpwYWlycycsXG4gICAgcmVzb2x2ZTogcmVzb2x2ZVBhaXJzLFxuICAgIGNyZWF0ZU5vZGU6IGNyZWF0ZVBhaXJzXG59O1xuXG5leHBvcnQgeyBjcmVhdGVQYWlycywgcGFpcnMsIHJlc29sdmVQYWlycyB9O1xuIiwgImltcG9ydCB7IGlzU2NhbGFyLCBpc1BhaXIgfSBmcm9tICcuLi8uLi9ub2Rlcy9pZGVudGl0eS5qcyc7XG5pbXBvcnQgeyB0b0pTIH0gZnJvbSAnLi4vLi4vbm9kZXMvdG9KUy5qcyc7XG5pbXBvcnQgeyBZQU1MTWFwIH0gZnJvbSAnLi4vLi4vbm9kZXMvWUFNTE1hcC5qcyc7XG5pbXBvcnQgeyBZQU1MU2VxIH0gZnJvbSAnLi4vLi4vbm9kZXMvWUFNTFNlcS5qcyc7XG5pbXBvcnQgeyByZXNvbHZlUGFpcnMsIGNyZWF0ZVBhaXJzIH0gZnJvbSAnLi9wYWlycy5qcyc7XG5cbmNsYXNzIFlBTUxPTWFwIGV4dGVuZHMgWUFNTFNlcSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuYWRkID0gWUFNTE1hcC5wcm90b3R5cGUuYWRkLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMuZGVsZXRlID0gWUFNTE1hcC5wcm90b3R5cGUuZGVsZXRlLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMuZ2V0ID0gWUFNTE1hcC5wcm90b3R5cGUuZ2V0LmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMuaGFzID0gWUFNTE1hcC5wcm90b3R5cGUuaGFzLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMuc2V0ID0gWUFNTE1hcC5wcm90b3R5cGUuc2V0LmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMudGFnID0gWUFNTE9NYXAudGFnO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBJZiBgY3R4YCBpcyBnaXZlbiwgdGhlIHJldHVybiB0eXBlIGlzIGFjdHVhbGx5IGBNYXA8dW5rbm93biwgdW5rbm93bj5gLFxuICAgICAqIGJ1dCBUeXBlU2NyaXB0IHdvbid0IGFsbG93IHdpZGVuaW5nIHRoZSBzaWduYXR1cmUgb2YgYSBjaGlsZCBtZXRob2QuXG4gICAgICovXG4gICAgdG9KU09OKF8sIGN0eCkge1xuICAgICAgICBpZiAoIWN0eClcbiAgICAgICAgICAgIHJldHVybiBzdXBlci50b0pTT04oXyk7XG4gICAgICAgIGNvbnN0IG1hcCA9IG5ldyBNYXAoKTtcbiAgICAgICAgaWYgKGN0eD8ub25DcmVhdGUpXG4gICAgICAgICAgICBjdHgub25DcmVhdGUobWFwKTtcbiAgICAgICAgZm9yIChjb25zdCBwYWlyIG9mIHRoaXMuaXRlbXMpIHtcbiAgICAgICAgICAgIGxldCBrZXksIHZhbHVlO1xuICAgICAgICAgICAgaWYgKGlzUGFpcihwYWlyKSkge1xuICAgICAgICAgICAgICAgIGtleSA9IHRvSlMocGFpci5rZXksICcnLCBjdHgpO1xuICAgICAgICAgICAgICAgIHZhbHVlID0gdG9KUyhwYWlyLnZhbHVlLCBrZXksIGN0eCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBrZXkgPSB0b0pTKHBhaXIsICcnLCBjdHgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1hcC5oYXMoa2V5KSlcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ09yZGVyZWQgbWFwcyBtdXN0IG5vdCBpbmNsdWRlIGR1cGxpY2F0ZSBrZXlzJyk7XG4gICAgICAgICAgICBtYXAuc2V0KGtleSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtYXA7XG4gICAgfVxuICAgIHN0YXRpYyBmcm9tKHNjaGVtYSwgaXRlcmFibGUsIGN0eCkge1xuICAgICAgICBjb25zdCBwYWlycyA9IGNyZWF0ZVBhaXJzKHNjaGVtYSwgaXRlcmFibGUsIGN0eCk7XG4gICAgICAgIGNvbnN0IG9tYXAgPSBuZXcgdGhpcygpO1xuICAgICAgICBvbWFwLml0ZW1zID0gcGFpcnMuaXRlbXM7XG4gICAgICAgIHJldHVybiBvbWFwO1xuICAgIH1cbn1cbllBTUxPTWFwLnRhZyA9ICd0YWc6eWFtbC5vcmcsMjAwMjpvbWFwJztcbmNvbnN0IG9tYXAgPSB7XG4gICAgY29sbGVjdGlvbjogJ3NlcScsXG4gICAgaWRlbnRpZnk6IHZhbHVlID0+IHZhbHVlIGluc3RhbmNlb2YgTWFwLFxuICAgIG5vZGVDbGFzczogWUFNTE9NYXAsXG4gICAgZGVmYXVsdDogZmFsc2UsXG4gICAgdGFnOiAndGFnOnlhbWwub3JnLDIwMDI6b21hcCcsXG4gICAgcmVzb2x2ZShzZXEsIG9uRXJyb3IpIHtcbiAgICAgICAgY29uc3QgcGFpcnMgPSByZXNvbHZlUGFpcnMoc2VxLCBvbkVycm9yKTtcbiAgICAgICAgY29uc3Qgc2VlbktleXMgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCB7IGtleSB9IG9mIHBhaXJzLml0ZW1zKSB7XG4gICAgICAgICAgICBpZiAoaXNTY2FsYXIoa2V5KSkge1xuICAgICAgICAgICAgICAgIGlmIChzZWVuS2V5cy5pbmNsdWRlcyhrZXkudmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIG9uRXJyb3IoYE9yZGVyZWQgbWFwcyBtdXN0IG5vdCBpbmNsdWRlIGR1cGxpY2F0ZSBrZXlzOiAke2tleS52YWx1ZX1gKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHNlZW5LZXlzLnB1c2goa2V5LnZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24obmV3IFlBTUxPTWFwKCksIHBhaXJzKTtcbiAgICB9LFxuICAgIGNyZWF0ZU5vZGU6IChzY2hlbWEsIGl0ZXJhYmxlLCBjdHgpID0+IFlBTUxPTWFwLmZyb20oc2NoZW1hLCBpdGVyYWJsZSwgY3R4KVxufTtcblxuZXhwb3J0IHsgWUFNTE9NYXAsIG9tYXAgfTtcbiIsICJpbXBvcnQgeyBTY2FsYXIgfSBmcm9tICcuLi8uLi9ub2Rlcy9TY2FsYXIuanMnO1xuXG5mdW5jdGlvbiBib29sU3RyaW5naWZ5KHsgdmFsdWUsIHNvdXJjZSB9LCBjdHgpIHtcbiAgICBjb25zdCBib29sT2JqID0gdmFsdWUgPyB0cnVlVGFnIDogZmFsc2VUYWc7XG4gICAgaWYgKHNvdXJjZSAmJiBib29sT2JqLnRlc3QudGVzdChzb3VyY2UpKVxuICAgICAgICByZXR1cm4gc291cmNlO1xuICAgIHJldHVybiB2YWx1ZSA/IGN0eC5vcHRpb25zLnRydWVTdHIgOiBjdHgub3B0aW9ucy5mYWxzZVN0cjtcbn1cbmNvbnN0IHRydWVUYWcgPSB7XG4gICAgaWRlbnRpZnk6IHZhbHVlID0+IHZhbHVlID09PSB0cnVlLFxuICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgdGFnOiAndGFnOnlhbWwub3JnLDIwMDI6Ym9vbCcsXG4gICAgdGVzdDogL14oPzpZfHl8W1l5XWVzfFlFU3xbVHRdcnVlfFRSVUV8W09vXW58T04pJC8sXG4gICAgcmVzb2x2ZTogKCkgPT4gbmV3IFNjYWxhcih0cnVlKSxcbiAgICBzdHJpbmdpZnk6IGJvb2xTdHJpbmdpZnlcbn07XG5jb25zdCBmYWxzZVRhZyA9IHtcbiAgICBpZGVudGlmeTogdmFsdWUgPT4gdmFsdWUgPT09IGZhbHNlLFxuICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgdGFnOiAndGFnOnlhbWwub3JnLDIwMDI6Ym9vbCcsXG4gICAgdGVzdDogL14oPzpOfG58W05uXW98Tk98W0ZmXWFsc2V8RkFMU0V8W09vXWZmfE9GRikkLyxcbiAgICByZXNvbHZlOiAoKSA9PiBuZXcgU2NhbGFyKGZhbHNlKSxcbiAgICBzdHJpbmdpZnk6IGJvb2xTdHJpbmdpZnlcbn07XG5cbmV4cG9ydCB7IGZhbHNlVGFnLCB0cnVlVGFnIH07XG4iLCAiaW1wb3J0IHsgU2NhbGFyIH0gZnJvbSAnLi4vLi4vbm9kZXMvU2NhbGFyLmpzJztcbmltcG9ydCB7IHN0cmluZ2lmeU51bWJlciB9IGZyb20gJy4uLy4uL3N0cmluZ2lmeS9zdHJpbmdpZnlOdW1iZXIuanMnO1xuXG5jb25zdCBmbG9hdE5hTiA9IHtcbiAgICBpZGVudGlmeTogdmFsdWUgPT4gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyxcbiAgICBkZWZhdWx0OiB0cnVlLFxuICAgIHRhZzogJ3RhZzp5YW1sLm9yZywyMDAyOmZsb2F0JyxcbiAgICB0ZXN0OiAvXig/OlstK10/XFwuKD86aW5mfEluZnxJTkYpfFxcLm5hbnxcXC5OYU58XFwuTkFOKSQvLFxuICAgIHJlc29sdmU6IChzdHIpID0+IHN0ci5zbGljZSgtMykudG9Mb3dlckNhc2UoKSA9PT0gJ25hbidcbiAgICAgICAgPyBOYU5cbiAgICAgICAgOiBzdHJbMF0gPT09ICctJ1xuICAgICAgICAgICAgPyBOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFlcbiAgICAgICAgICAgIDogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLFxuICAgIHN0cmluZ2lmeTogc3RyaW5naWZ5TnVtYmVyXG59O1xuY29uc3QgZmxvYXRFeHAgPSB7XG4gICAgaWRlbnRpZnk6IHZhbHVlID0+IHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicsXG4gICAgZGVmYXVsdDogdHJ1ZSxcbiAgICB0YWc6ICd0YWc6eWFtbC5vcmcsMjAwMjpmbG9hdCcsXG4gICAgZm9ybWF0OiAnRVhQJyxcbiAgICB0ZXN0OiAvXlstK10/KD86WzAtOV1bMC05X10qKT8oPzpcXC5bMC05X10qKT9bZUVdWy0rXT9bMC05XSskLyxcbiAgICByZXNvbHZlOiAoc3RyKSA9PiBwYXJzZUZsb2F0KHN0ci5yZXBsYWNlKC9fL2csICcnKSksXG4gICAgc3RyaW5naWZ5KG5vZGUpIHtcbiAgICAgICAgY29uc3QgbnVtID0gTnVtYmVyKG5vZGUudmFsdWUpO1xuICAgICAgICByZXR1cm4gaXNGaW5pdGUobnVtKSA/IG51bS50b0V4cG9uZW50aWFsKCkgOiBzdHJpbmdpZnlOdW1iZXIobm9kZSk7XG4gICAgfVxufTtcbmNvbnN0IGZsb2F0ID0ge1xuICAgIGlkZW50aWZ5OiB2YWx1ZSA9PiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInLFxuICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgdGFnOiAndGFnOnlhbWwub3JnLDIwMDI6ZmxvYXQnLFxuICAgIHRlc3Q6IC9eWy0rXT8oPzpbMC05XVswLTlfXSopP1xcLlswLTlfXSokLyxcbiAgICByZXNvbHZlKHN0cikge1xuICAgICAgICBjb25zdCBub2RlID0gbmV3IFNjYWxhcihwYXJzZUZsb2F0KHN0ci5yZXBsYWNlKC9fL2csICcnKSkpO1xuICAgICAgICBjb25zdCBkb3QgPSBzdHIuaW5kZXhPZignLicpO1xuICAgICAgICBpZiAoZG90ICE9PSAtMSkge1xuICAgICAgICAgICAgY29uc3QgZiA9IHN0ci5zdWJzdHJpbmcoZG90ICsgMSkucmVwbGFjZSgvXy9nLCAnJyk7XG4gICAgICAgICAgICBpZiAoZltmLmxlbmd0aCAtIDFdID09PSAnMCcpXG4gICAgICAgICAgICAgICAgbm9kZS5taW5GcmFjdGlvbkRpZ2l0cyA9IGYubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBub2RlO1xuICAgIH0sXG4gICAgc3RyaW5naWZ5OiBzdHJpbmdpZnlOdW1iZXJcbn07XG5cbmV4cG9ydCB7IGZsb2F0LCBmbG9hdEV4cCwgZmxvYXROYU4gfTtcbiIsICJpbXBvcnQgeyBzdHJpbmdpZnlOdW1iZXIgfSBmcm9tICcuLi8uLi9zdHJpbmdpZnkvc3RyaW5naWZ5TnVtYmVyLmpzJztcblxuY29uc3QgaW50SWRlbnRpZnkgPSAodmFsdWUpID0+IHR5cGVvZiB2YWx1ZSA9PT0gJ2JpZ2ludCcgfHwgTnVtYmVyLmlzSW50ZWdlcih2YWx1ZSk7XG5mdW5jdGlvbiBpbnRSZXNvbHZlKHN0ciwgb2Zmc2V0LCByYWRpeCwgeyBpbnRBc0JpZ0ludCB9KSB7XG4gICAgY29uc3Qgc2lnbiA9IHN0clswXTtcbiAgICBpZiAoc2lnbiA9PT0gJy0nIHx8IHNpZ24gPT09ICcrJylcbiAgICAgICAgb2Zmc2V0ICs9IDE7XG4gICAgc3RyID0gc3RyLnN1YnN0cmluZyhvZmZzZXQpLnJlcGxhY2UoL18vZywgJycpO1xuICAgIGlmIChpbnRBc0JpZ0ludCkge1xuICAgICAgICBzd2l0Y2ggKHJhZGl4KSB7XG4gICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgc3RyID0gYDBiJHtzdHJ9YDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgODpcbiAgICAgICAgICAgICAgICBzdHIgPSBgMG8ke3N0cn1gO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAxNjpcbiAgICAgICAgICAgICAgICBzdHIgPSBgMHgke3N0cn1gO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG4gPSBCaWdJbnQoc3RyKTtcbiAgICAgICAgcmV0dXJuIHNpZ24gPT09ICctJyA/IEJpZ0ludCgtMSkgKiBuIDogbjtcbiAgICB9XG4gICAgY29uc3QgbiA9IHBhcnNlSW50KHN0ciwgcmFkaXgpO1xuICAgIHJldHVybiBzaWduID09PSAnLScgPyAtMSAqIG4gOiBuO1xufVxuZnVuY3Rpb24gaW50U3RyaW5naWZ5KG5vZGUsIHJhZGl4LCBwcmVmaXgpIHtcbiAgICBjb25zdCB7IHZhbHVlIH0gPSBub2RlO1xuICAgIGlmIChpbnRJZGVudGlmeSh2YWx1ZSkpIHtcbiAgICAgICAgY29uc3Qgc3RyID0gdmFsdWUudG9TdHJpbmcocmFkaXgpO1xuICAgICAgICByZXR1cm4gdmFsdWUgPCAwID8gJy0nICsgcHJlZml4ICsgc3RyLnN1YnN0cigxKSA6IHByZWZpeCArIHN0cjtcbiAgICB9XG4gICAgcmV0dXJuIHN0cmluZ2lmeU51bWJlcihub2RlKTtcbn1cbmNvbnN0IGludEJpbiA9IHtcbiAgICBpZGVudGlmeTogaW50SWRlbnRpZnksXG4gICAgZGVmYXVsdDogdHJ1ZSxcbiAgICB0YWc6ICd0YWc6eWFtbC5vcmcsMjAwMjppbnQnLFxuICAgIGZvcm1hdDogJ0JJTicsXG4gICAgdGVzdDogL15bLStdPzBiWzAtMV9dKyQvLFxuICAgIHJlc29sdmU6IChzdHIsIF9vbkVycm9yLCBvcHQpID0+IGludFJlc29sdmUoc3RyLCAyLCAyLCBvcHQpLFxuICAgIHN0cmluZ2lmeTogbm9kZSA9PiBpbnRTdHJpbmdpZnkobm9kZSwgMiwgJzBiJylcbn07XG5jb25zdCBpbnRPY3QgPSB7XG4gICAgaWRlbnRpZnk6IGludElkZW50aWZ5LFxuICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgdGFnOiAndGFnOnlhbWwub3JnLDIwMDI6aW50JyxcbiAgICBmb3JtYXQ6ICdPQ1QnLFxuICAgIHRlc3Q6IC9eWy0rXT8wWzAtN19dKyQvLFxuICAgIHJlc29sdmU6IChzdHIsIF9vbkVycm9yLCBvcHQpID0+IGludFJlc29sdmUoc3RyLCAxLCA4LCBvcHQpLFxuICAgIHN0cmluZ2lmeTogbm9kZSA9PiBpbnRTdHJpbmdpZnkobm9kZSwgOCwgJzAnKVxufTtcbmNvbnN0IGludCA9IHtcbiAgICBpZGVudGlmeTogaW50SWRlbnRpZnksXG4gICAgZGVmYXVsdDogdHJ1ZSxcbiAgICB0YWc6ICd0YWc6eWFtbC5vcmcsMjAwMjppbnQnLFxuICAgIHRlc3Q6IC9eWy0rXT9bMC05XVswLTlfXSokLyxcbiAgICByZXNvbHZlOiAoc3RyLCBfb25FcnJvciwgb3B0KSA9PiBpbnRSZXNvbHZlKHN0ciwgMCwgMTAsIG9wdCksXG4gICAgc3RyaW5naWZ5OiBzdHJpbmdpZnlOdW1iZXJcbn07XG5jb25zdCBpbnRIZXggPSB7XG4gICAgaWRlbnRpZnk6IGludElkZW50aWZ5LFxuICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgdGFnOiAndGFnOnlhbWwub3JnLDIwMDI6aW50JyxcbiAgICBmb3JtYXQ6ICdIRVgnLFxuICAgIHRlc3Q6IC9eWy0rXT8weFswLTlhLWZBLUZfXSskLyxcbiAgICByZXNvbHZlOiAoc3RyLCBfb25FcnJvciwgb3B0KSA9PiBpbnRSZXNvbHZlKHN0ciwgMiwgMTYsIG9wdCksXG4gICAgc3RyaW5naWZ5OiBub2RlID0+IGludFN0cmluZ2lmeShub2RlLCAxNiwgJzB4Jylcbn07XG5cbmV4cG9ydCB7IGludCwgaW50QmluLCBpbnRIZXgsIGludE9jdCB9O1xuIiwgImltcG9ydCB7IGlzTWFwLCBpc1BhaXIsIGlzU2NhbGFyIH0gZnJvbSAnLi4vLi4vbm9kZXMvaWRlbnRpdHkuanMnO1xuaW1wb3J0IHsgUGFpciwgY3JlYXRlUGFpciB9IGZyb20gJy4uLy4uL25vZGVzL1BhaXIuanMnO1xuaW1wb3J0IHsgWUFNTE1hcCwgZmluZFBhaXIgfSBmcm9tICcuLi8uLi9ub2Rlcy9ZQU1MTWFwLmpzJztcblxuY2xhc3MgWUFNTFNldCBleHRlbmRzIFlBTUxNYXAge1xuICAgIGNvbnN0cnVjdG9yKHNjaGVtYSkge1xuICAgICAgICBzdXBlcihzY2hlbWEpO1xuICAgICAgICB0aGlzLnRhZyA9IFlBTUxTZXQudGFnO1xuICAgIH1cbiAgICBhZGQoa2V5KSB7XG4gICAgICAgIGxldCBwYWlyO1xuICAgICAgICBpZiAoaXNQYWlyKGtleSkpXG4gICAgICAgICAgICBwYWlyID0ga2V5O1xuICAgICAgICBlbHNlIGlmIChrZXkgJiZcbiAgICAgICAgICAgIHR5cGVvZiBrZXkgPT09ICdvYmplY3QnICYmXG4gICAgICAgICAgICAna2V5JyBpbiBrZXkgJiZcbiAgICAgICAgICAgICd2YWx1ZScgaW4ga2V5ICYmXG4gICAgICAgICAgICBrZXkudmFsdWUgPT09IG51bGwpXG4gICAgICAgICAgICBwYWlyID0gbmV3IFBhaXIoa2V5LmtleSwgbnVsbCk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHBhaXIgPSBuZXcgUGFpcihrZXksIG51bGwpO1xuICAgICAgICBjb25zdCBwcmV2ID0gZmluZFBhaXIodGhpcy5pdGVtcywgcGFpci5rZXkpO1xuICAgICAgICBpZiAoIXByZXYpXG4gICAgICAgICAgICB0aGlzLml0ZW1zLnB1c2gocGFpcik7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIElmIGBrZWVwUGFpcmAgaXMgYHRydWVgLCByZXR1cm5zIHRoZSBQYWlyIG1hdGNoaW5nIGBrZXlgLlxuICAgICAqIE90aGVyd2lzZSwgcmV0dXJucyB0aGUgdmFsdWUgb2YgdGhhdCBQYWlyJ3Mga2V5LlxuICAgICAqL1xuICAgIGdldChrZXksIGtlZXBQYWlyKSB7XG4gICAgICAgIGNvbnN0IHBhaXIgPSBmaW5kUGFpcih0aGlzLml0ZW1zLCBrZXkpO1xuICAgICAgICByZXR1cm4gIWtlZXBQYWlyICYmIGlzUGFpcihwYWlyKVxuICAgICAgICAgICAgPyBpc1NjYWxhcihwYWlyLmtleSlcbiAgICAgICAgICAgICAgICA/IHBhaXIua2V5LnZhbHVlXG4gICAgICAgICAgICAgICAgOiBwYWlyLmtleVxuICAgICAgICAgICAgOiBwYWlyO1xuICAgIH1cbiAgICBzZXQoa2V5LCB2YWx1ZSkge1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnYm9vbGVhbicpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIGJvb2xlYW4gdmFsdWUgZm9yIHNldChrZXksIHZhbHVlKSBpbiBhIFlBTUwgc2V0LCBub3QgJHt0eXBlb2YgdmFsdWV9YCk7XG4gICAgICAgIGNvbnN0IHByZXYgPSBmaW5kUGFpcih0aGlzLml0ZW1zLCBrZXkpO1xuICAgICAgICBpZiAocHJldiAmJiAhdmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuaXRlbXMuc3BsaWNlKHRoaXMuaXRlbXMuaW5kZXhPZihwcmV2KSwgMSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoIXByZXYgJiYgdmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuaXRlbXMucHVzaChuZXcgUGFpcihrZXkpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB0b0pTT04oXywgY3R4KSB7XG4gICAgICAgIHJldHVybiBzdXBlci50b0pTT04oXywgY3R4LCBTZXQpO1xuICAgIH1cbiAgICB0b1N0cmluZyhjdHgsIG9uQ29tbWVudCwgb25DaG9tcEtlZXApIHtcbiAgICAgICAgaWYgKCFjdHgpXG4gICAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodGhpcyk7XG4gICAgICAgIGlmICh0aGlzLmhhc0FsbE51bGxWYWx1ZXModHJ1ZSkpXG4gICAgICAgICAgICByZXR1cm4gc3VwZXIudG9TdHJpbmcoT2JqZWN0LmFzc2lnbih7fSwgY3R4LCB7IGFsbE51bGxWYWx1ZXM6IHRydWUgfSksIG9uQ29tbWVudCwgb25DaG9tcEtlZXApO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NldCBpdGVtcyBtdXN0IGFsbCBoYXZlIG51bGwgdmFsdWVzJyk7XG4gICAgfVxuICAgIHN0YXRpYyBmcm9tKHNjaGVtYSwgaXRlcmFibGUsIGN0eCkge1xuICAgICAgICBjb25zdCB7IHJlcGxhY2VyIH0gPSBjdHg7XG4gICAgICAgIGNvbnN0IHNldCA9IG5ldyB0aGlzKHNjaGVtYSk7XG4gICAgICAgIGlmIChpdGVyYWJsZSAmJiBTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KGl0ZXJhYmxlKSlcbiAgICAgICAgICAgIGZvciAobGV0IHZhbHVlIG9mIGl0ZXJhYmxlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiByZXBsYWNlciA9PT0gJ2Z1bmN0aW9uJylcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSByZXBsYWNlci5jYWxsKGl0ZXJhYmxlLCB2YWx1ZSwgdmFsdWUpO1xuICAgICAgICAgICAgICAgIHNldC5pdGVtcy5wdXNoKGNyZWF0ZVBhaXIodmFsdWUsIG51bGwsIGN0eCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2V0O1xuICAgIH1cbn1cbllBTUxTZXQudGFnID0gJ3RhZzp5YW1sLm9yZywyMDAyOnNldCc7XG5jb25zdCBzZXQgPSB7XG4gICAgY29sbGVjdGlvbjogJ21hcCcsXG4gICAgaWRlbnRpZnk6IHZhbHVlID0+IHZhbHVlIGluc3RhbmNlb2YgU2V0LFxuICAgIG5vZGVDbGFzczogWUFNTFNldCxcbiAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICB0YWc6ICd0YWc6eWFtbC5vcmcsMjAwMjpzZXQnLFxuICAgIGNyZWF0ZU5vZGU6IChzY2hlbWEsIGl0ZXJhYmxlLCBjdHgpID0+IFlBTUxTZXQuZnJvbShzY2hlbWEsIGl0ZXJhYmxlLCBjdHgpLFxuICAgIHJlc29sdmUobWFwLCBvbkVycm9yKSB7XG4gICAgICAgIGlmIChpc01hcChtYXApKSB7XG4gICAgICAgICAgICBpZiAobWFwLmhhc0FsbE51bGxWYWx1ZXModHJ1ZSkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24obmV3IFlBTUxTZXQoKSwgbWFwKTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBvbkVycm9yKCdTZXQgaXRlbXMgbXVzdCBhbGwgaGF2ZSBudWxsIHZhbHVlcycpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIG9uRXJyb3IoJ0V4cGVjdGVkIGEgbWFwcGluZyBmb3IgdGhpcyB0YWcnKTtcbiAgICAgICAgcmV0dXJuIG1hcDtcbiAgICB9XG59O1xuXG5leHBvcnQgeyBZQU1MU2V0LCBzZXQgfTtcbiIsICJpbXBvcnQgeyBzdHJpbmdpZnlOdW1iZXIgfSBmcm9tICcuLi8uLi9zdHJpbmdpZnkvc3RyaW5naWZ5TnVtYmVyLmpzJztcblxuLyoqIEludGVybmFsIHR5cGVzIGhhbmRsZSBiaWdpbnQgYXMgbnVtYmVyLCBiZWNhdXNlIFRTIGNhbid0IGZpZ3VyZSBpdCBvdXQuICovXG5mdW5jdGlvbiBwYXJzZVNleGFnZXNpbWFsKHN0ciwgYXNCaWdJbnQpIHtcbiAgICBjb25zdCBzaWduID0gc3RyWzBdO1xuICAgIGNvbnN0IHBhcnRzID0gc2lnbiA9PT0gJy0nIHx8IHNpZ24gPT09ICcrJyA/IHN0ci5zdWJzdHJpbmcoMSkgOiBzdHI7XG4gICAgY29uc3QgbnVtID0gKG4pID0+IGFzQmlnSW50ID8gQmlnSW50KG4pIDogTnVtYmVyKG4pO1xuICAgIGNvbnN0IHJlcyA9IHBhcnRzXG4gICAgICAgIC5yZXBsYWNlKC9fL2csICcnKVxuICAgICAgICAuc3BsaXQoJzonKVxuICAgICAgICAucmVkdWNlKChyZXMsIHApID0+IHJlcyAqIG51bSg2MCkgKyBudW0ocCksIG51bSgwKSk7XG4gICAgcmV0dXJuIChzaWduID09PSAnLScgPyBudW0oLTEpICogcmVzIDogcmVzKTtcbn1cbi8qKlxuICogaGhoaDptbTpzcy5zc3NcbiAqXG4gKiBJbnRlcm5hbCB0eXBlcyBoYW5kbGUgYmlnaW50IGFzIG51bWJlciwgYmVjYXVzZSBUUyBjYW4ndCBmaWd1cmUgaXQgb3V0LlxuICovXG5mdW5jdGlvbiBzdHJpbmdpZnlTZXhhZ2VzaW1hbChub2RlKSB7XG4gICAgbGV0IHsgdmFsdWUgfSA9IG5vZGU7XG4gICAgbGV0IG51bSA9IChuKSA9PiBuO1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdiaWdpbnQnKVxuICAgICAgICBudW0gPSBuID0+IEJpZ0ludChuKTtcbiAgICBlbHNlIGlmIChpc05hTih2YWx1ZSkgfHwgIWlzRmluaXRlKHZhbHVlKSlcbiAgICAgICAgcmV0dXJuIHN0cmluZ2lmeU51bWJlcihub2RlKTtcbiAgICBsZXQgc2lnbiA9ICcnO1xuICAgIGlmICh2YWx1ZSA8IDApIHtcbiAgICAgICAgc2lnbiA9ICctJztcbiAgICAgICAgdmFsdWUgKj0gbnVtKC0xKTtcbiAgICB9XG4gICAgY29uc3QgXzYwID0gbnVtKDYwKTtcbiAgICBjb25zdCBwYXJ0cyA9IFt2YWx1ZSAlIF82MF07IC8vIHNlY29uZHMsIGluY2x1ZGluZyBtc1xuICAgIGlmICh2YWx1ZSA8IDYwKSB7XG4gICAgICAgIHBhcnRzLnVuc2hpZnQoMCk7IC8vIGF0IGxlYXN0IG9uZSA6IGlzIHJlcXVpcmVkXG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB2YWx1ZSA9ICh2YWx1ZSAtIHBhcnRzWzBdKSAvIF82MDtcbiAgICAgICAgcGFydHMudW5zaGlmdCh2YWx1ZSAlIF82MCk7IC8vIG1pbnV0ZXNcbiAgICAgICAgaWYgKHZhbHVlID49IDYwKSB7XG4gICAgICAgICAgICB2YWx1ZSA9ICh2YWx1ZSAtIHBhcnRzWzBdKSAvIF82MDtcbiAgICAgICAgICAgIHBhcnRzLnVuc2hpZnQodmFsdWUpOyAvLyBob3Vyc1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiAoc2lnbiArXG4gICAgICAgIHBhcnRzXG4gICAgICAgICAgICAubWFwKG4gPT4gU3RyaW5nKG4pLnBhZFN0YXJ0KDIsICcwJykpXG4gICAgICAgICAgICAuam9pbignOicpXG4gICAgICAgICAgICAucmVwbGFjZSgvMDAwMDAwXFxkKiQvLCAnJykgLy8gJSA2MCBtYXkgaW50cm9kdWNlIGVycm9yXG4gICAgKTtcbn1cbmNvbnN0IGludFRpbWUgPSB7XG4gICAgaWRlbnRpZnk6IHZhbHVlID0+IHR5cGVvZiB2YWx1ZSA9PT0gJ2JpZ2ludCcgfHwgTnVtYmVyLmlzSW50ZWdlcih2YWx1ZSksXG4gICAgZGVmYXVsdDogdHJ1ZSxcbiAgICB0YWc6ICd0YWc6eWFtbC5vcmcsMjAwMjppbnQnLFxuICAgIGZvcm1hdDogJ1RJTUUnLFxuICAgIHRlc3Q6IC9eWy0rXT9bMC05XVswLTlfXSooPzo6WzAtNV0/WzAtOV0pKyQvLFxuICAgIHJlc29sdmU6IChzdHIsIF9vbkVycm9yLCB7IGludEFzQmlnSW50IH0pID0+IHBhcnNlU2V4YWdlc2ltYWwoc3RyLCBpbnRBc0JpZ0ludCksXG4gICAgc3RyaW5naWZ5OiBzdHJpbmdpZnlTZXhhZ2VzaW1hbFxufTtcbmNvbnN0IGZsb2F0VGltZSA9IHtcbiAgICBpZGVudGlmeTogdmFsdWUgPT4gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyxcbiAgICBkZWZhdWx0OiB0cnVlLFxuICAgIHRhZzogJ3RhZzp5YW1sLm9yZywyMDAyOmZsb2F0JyxcbiAgICBmb3JtYXQ6ICdUSU1FJyxcbiAgICB0ZXN0OiAvXlstK10/WzAtOV1bMC05X10qKD86OlswLTVdP1swLTldKStcXC5bMC05X10qJC8sXG4gICAgcmVzb2x2ZTogc3RyID0+IHBhcnNlU2V4YWdlc2ltYWwoc3RyLCBmYWxzZSksXG4gICAgc3RyaW5naWZ5OiBzdHJpbmdpZnlTZXhhZ2VzaW1hbFxufTtcbmNvbnN0IHRpbWVzdGFtcCA9IHtcbiAgICBpZGVudGlmeTogdmFsdWUgPT4gdmFsdWUgaW5zdGFuY2VvZiBEYXRlLFxuICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgdGFnOiAndGFnOnlhbWwub3JnLDIwMDI6dGltZXN0YW1wJyxcbiAgICAvLyBJZiB0aGUgdGltZSB6b25lIGlzIG9taXR0ZWQsIHRoZSB0aW1lc3RhbXAgaXMgYXNzdW1lZCB0byBiZSBzcGVjaWZpZWQgaW4gVVRDLiBUaGUgdGltZSBwYXJ0XG4gICAgLy8gbWF5IGJlIG9taXR0ZWQgYWx0b2dldGhlciwgcmVzdWx0aW5nIGluIGEgZGF0ZSBmb3JtYXQuIEluIHN1Y2ggYSBjYXNlLCB0aGUgdGltZSBwYXJ0IGlzXG4gICAgLy8gYXNzdW1lZCB0byBiZSAwMDowMDowMFogKHN0YXJ0IG9mIGRheSwgVVRDKS5cbiAgICB0ZXN0OiBSZWdFeHAoJ14oWzAtOV17NH0pLShbMC05XXsxLDJ9KS0oWzAtOV17MSwyfSknICsgLy8gWVlZWS1NbS1EZFxuICAgICAgICAnKD86JyArIC8vIHRpbWUgaXMgb3B0aW9uYWxcbiAgICAgICAgJyg/OnR8VHxbIFxcXFx0XSspJyArIC8vIHQgfCBUIHwgd2hpdGVzcGFjZVxuICAgICAgICAnKFswLTldezEsMn0pOihbMC05XXsxLDJ9KTooWzAtOV17MSwyfShcXFxcLlswLTldKyk/KScgKyAvLyBIaDpNbTpTcyguc3MpP1xuICAgICAgICAnKD86WyBcXFxcdF0qKFp8Wy0rXVswMTJdP1swLTldKD86OlswLTldezJ9KT8pKT8nICsgLy8gWiB8ICs1IHwgLTAzOjMwXG4gICAgICAgICcpPyQnKSxcbiAgICByZXNvbHZlKHN0cikge1xuICAgICAgICBjb25zdCBtYXRjaCA9IHN0ci5tYXRjaCh0aW1lc3RhbXAudGVzdCk7XG4gICAgICAgIGlmICghbWF0Y2gpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJyEhdGltZXN0YW1wIGV4cGVjdHMgYSBkYXRlLCBzdGFydGluZyB3aXRoIHl5eXktbW0tZGQnKTtcbiAgICAgICAgY29uc3QgWywgeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmRdID0gbWF0Y2gubWFwKE51bWJlcik7XG4gICAgICAgIGNvbnN0IG1pbGxpc2VjID0gbWF0Y2hbN10gPyBOdW1iZXIoKG1hdGNoWzddICsgJzAwJykuc3Vic3RyKDEsIDMpKSA6IDA7XG4gICAgICAgIGxldCBkYXRlID0gRGF0ZS5VVEMoeWVhciwgbW9udGggLSAxLCBkYXksIGhvdXIgfHwgMCwgbWludXRlIHx8IDAsIHNlY29uZCB8fCAwLCBtaWxsaXNlYyk7XG4gICAgICAgIGNvbnN0IHR6ID0gbWF0Y2hbOF07XG4gICAgICAgIGlmICh0eiAmJiB0eiAhPT0gJ1onKSB7XG4gICAgICAgICAgICBsZXQgZCA9IHBhcnNlU2V4YWdlc2ltYWwodHosIGZhbHNlKTtcbiAgICAgICAgICAgIGlmIChNYXRoLmFicyhkKSA8IDMwKVxuICAgICAgICAgICAgICAgIGQgKj0gNjA7XG4gICAgICAgICAgICBkYXRlIC09IDYwMDAwICogZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IERhdGUoZGF0ZSk7XG4gICAgfSxcbiAgICBzdHJpbmdpZnk6ICh7IHZhbHVlIH0pID0+IHZhbHVlLnRvSVNPU3RyaW5nKCkucmVwbGFjZSgvKChUMDA6MDApPzowMCk/XFwuMDAwWiQvLCAnJylcbn07XG5cbmV4cG9ydCB7IGZsb2F0VGltZSwgaW50VGltZSwgdGltZXN0YW1wIH07XG4iLCAiaW1wb3J0IHsgbWFwIH0gZnJvbSAnLi4vY29tbW9uL21hcC5qcyc7XG5pbXBvcnQgeyBudWxsVGFnIH0gZnJvbSAnLi4vY29tbW9uL251bGwuanMnO1xuaW1wb3J0IHsgc2VxIH0gZnJvbSAnLi4vY29tbW9uL3NlcS5qcyc7XG5pbXBvcnQgeyBzdHJpbmcgfSBmcm9tICcuLi9jb21tb24vc3RyaW5nLmpzJztcbmltcG9ydCB7IGJpbmFyeSB9IGZyb20gJy4vYmluYXJ5LmpzJztcbmltcG9ydCB7IHRydWVUYWcsIGZhbHNlVGFnIH0gZnJvbSAnLi9ib29sLmpzJztcbmltcG9ydCB7IGZsb2F0TmFOLCBmbG9hdEV4cCwgZmxvYXQgfSBmcm9tICcuL2Zsb2F0LmpzJztcbmltcG9ydCB7IGludEJpbiwgaW50T2N0LCBpbnQsIGludEhleCB9IGZyb20gJy4vaW50LmpzJztcbmltcG9ydCB7IG1lcmdlIH0gZnJvbSAnLi9tZXJnZS5qcyc7XG5pbXBvcnQgeyBvbWFwIH0gZnJvbSAnLi9vbWFwLmpzJztcbmltcG9ydCB7IHBhaXJzIH0gZnJvbSAnLi9wYWlycy5qcyc7XG5pbXBvcnQgeyBzZXQgfSBmcm9tICcuL3NldC5qcyc7XG5pbXBvcnQgeyBpbnRUaW1lLCBmbG9hdFRpbWUsIHRpbWVzdGFtcCB9IGZyb20gJy4vdGltZXN0YW1wLmpzJztcblxuY29uc3Qgc2NoZW1hID0gW1xuICAgIG1hcCxcbiAgICBzZXEsXG4gICAgc3RyaW5nLFxuICAgIG51bGxUYWcsXG4gICAgdHJ1ZVRhZyxcbiAgICBmYWxzZVRhZyxcbiAgICBpbnRCaW4sXG4gICAgaW50T2N0LFxuICAgIGludCxcbiAgICBpbnRIZXgsXG4gICAgZmxvYXROYU4sXG4gICAgZmxvYXRFeHAsXG4gICAgZmxvYXQsXG4gICAgYmluYXJ5LFxuICAgIG1lcmdlLFxuICAgIG9tYXAsXG4gICAgcGFpcnMsXG4gICAgc2V0LFxuICAgIGludFRpbWUsXG4gICAgZmxvYXRUaW1lLFxuICAgIHRpbWVzdGFtcFxuXTtcblxuZXhwb3J0IHsgc2NoZW1hIH07XG4iLCAiaW1wb3J0IHsgbWFwIH0gZnJvbSAnLi9jb21tb24vbWFwLmpzJztcbmltcG9ydCB7IG51bGxUYWcgfSBmcm9tICcuL2NvbW1vbi9udWxsLmpzJztcbmltcG9ydCB7IHNlcSB9IGZyb20gJy4vY29tbW9uL3NlcS5qcyc7XG5pbXBvcnQgeyBzdHJpbmcgfSBmcm9tICcuL2NvbW1vbi9zdHJpbmcuanMnO1xuaW1wb3J0IHsgYm9vbFRhZyB9IGZyb20gJy4vY29yZS9ib29sLmpzJztcbmltcG9ydCB7IGZsb2F0LCBmbG9hdEV4cCwgZmxvYXROYU4gfSBmcm9tICcuL2NvcmUvZmxvYXQuanMnO1xuaW1wb3J0IHsgaW50LCBpbnRIZXgsIGludE9jdCB9IGZyb20gJy4vY29yZS9pbnQuanMnO1xuaW1wb3J0IHsgc2NoZW1hIH0gZnJvbSAnLi9jb3JlL3NjaGVtYS5qcyc7XG5pbXBvcnQgeyBzY2hlbWEgYXMgc2NoZW1hJDEgfSBmcm9tICcuL2pzb24vc2NoZW1hLmpzJztcbmltcG9ydCB7IGJpbmFyeSB9IGZyb20gJy4veWFtbC0xLjEvYmluYXJ5LmpzJztcbmltcG9ydCB7IG1lcmdlIH0gZnJvbSAnLi95YW1sLTEuMS9tZXJnZS5qcyc7XG5pbXBvcnQgeyBvbWFwIH0gZnJvbSAnLi95YW1sLTEuMS9vbWFwLmpzJztcbmltcG9ydCB7IHBhaXJzIH0gZnJvbSAnLi95YW1sLTEuMS9wYWlycy5qcyc7XG5pbXBvcnQgeyBzY2hlbWEgYXMgc2NoZW1hJDIgfSBmcm9tICcuL3lhbWwtMS4xL3NjaGVtYS5qcyc7XG5pbXBvcnQgeyBzZXQgfSBmcm9tICcuL3lhbWwtMS4xL3NldC5qcyc7XG5pbXBvcnQgeyB0aW1lc3RhbXAsIGZsb2F0VGltZSwgaW50VGltZSB9IGZyb20gJy4veWFtbC0xLjEvdGltZXN0YW1wLmpzJztcblxuY29uc3Qgc2NoZW1hcyA9IG5ldyBNYXAoW1xuICAgIFsnY29yZScsIHNjaGVtYV0sXG4gICAgWydmYWlsc2FmZScsIFttYXAsIHNlcSwgc3RyaW5nXV0sXG4gICAgWydqc29uJywgc2NoZW1hJDFdLFxuICAgIFsneWFtbDExJywgc2NoZW1hJDJdLFxuICAgIFsneWFtbC0xLjEnLCBzY2hlbWEkMl1cbl0pO1xuY29uc3QgdGFnc0J5TmFtZSA9IHtcbiAgICBiaW5hcnksXG4gICAgYm9vbDogYm9vbFRhZyxcbiAgICBmbG9hdCxcbiAgICBmbG9hdEV4cCxcbiAgICBmbG9hdE5hTixcbiAgICBmbG9hdFRpbWUsXG4gICAgaW50LFxuICAgIGludEhleCxcbiAgICBpbnRPY3QsXG4gICAgaW50VGltZSxcbiAgICBtYXAsXG4gICAgbWVyZ2UsXG4gICAgbnVsbDogbnVsbFRhZyxcbiAgICBvbWFwLFxuICAgIHBhaXJzLFxuICAgIHNlcSxcbiAgICBzZXQsXG4gICAgdGltZXN0YW1wXG59O1xuY29uc3QgY29yZUtub3duVGFncyA9IHtcbiAgICAndGFnOnlhbWwub3JnLDIwMDI6YmluYXJ5JzogYmluYXJ5LFxuICAgICd0YWc6eWFtbC5vcmcsMjAwMjptZXJnZSc6IG1lcmdlLFxuICAgICd0YWc6eWFtbC5vcmcsMjAwMjpvbWFwJzogb21hcCxcbiAgICAndGFnOnlhbWwub3JnLDIwMDI6cGFpcnMnOiBwYWlycyxcbiAgICAndGFnOnlhbWwub3JnLDIwMDI6c2V0Jzogc2V0LFxuICAgICd0YWc6eWFtbC5vcmcsMjAwMjp0aW1lc3RhbXAnOiB0aW1lc3RhbXBcbn07XG5mdW5jdGlvbiBnZXRUYWdzKGN1c3RvbVRhZ3MsIHNjaGVtYU5hbWUsIGFkZE1lcmdlVGFnKSB7XG4gICAgY29uc3Qgc2NoZW1hVGFncyA9IHNjaGVtYXMuZ2V0KHNjaGVtYU5hbWUpO1xuICAgIGlmIChzY2hlbWFUYWdzICYmICFjdXN0b21UYWdzKSB7XG4gICAgICAgIHJldHVybiBhZGRNZXJnZVRhZyAmJiAhc2NoZW1hVGFncy5pbmNsdWRlcyhtZXJnZSlcbiAgICAgICAgICAgID8gc2NoZW1hVGFncy5jb25jYXQobWVyZ2UpXG4gICAgICAgICAgICA6IHNjaGVtYVRhZ3Muc2xpY2UoKTtcbiAgICB9XG4gICAgbGV0IHRhZ3MgPSBzY2hlbWFUYWdzO1xuICAgIGlmICghdGFncykge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShjdXN0b21UYWdzKSlcbiAgICAgICAgICAgIHRhZ3MgPSBbXTtcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBrZXlzID0gQXJyYXkuZnJvbShzY2hlbWFzLmtleXMoKSlcbiAgICAgICAgICAgICAgICAuZmlsdGVyKGtleSA9PiBrZXkgIT09ICd5YW1sMTEnKVxuICAgICAgICAgICAgICAgIC5tYXAoa2V5ID0+IEpTT04uc3RyaW5naWZ5KGtleSkpXG4gICAgICAgICAgICAgICAgLmpvaW4oJywgJyk7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gc2NoZW1hIFwiJHtzY2hlbWFOYW1lfVwiOyB1c2Ugb25lIG9mICR7a2V5c30gb3IgZGVmaW5lIGN1c3RvbVRhZ3MgYXJyYXlgKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoQXJyYXkuaXNBcnJheShjdXN0b21UYWdzKSkge1xuICAgICAgICBmb3IgKGNvbnN0IHRhZyBvZiBjdXN0b21UYWdzKVxuICAgICAgICAgICAgdGFncyA9IHRhZ3MuY29uY2F0KHRhZyk7XG4gICAgfVxuICAgIGVsc2UgaWYgKHR5cGVvZiBjdXN0b21UYWdzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRhZ3MgPSBjdXN0b21UYWdzKHRhZ3Muc2xpY2UoKSk7XG4gICAgfVxuICAgIGlmIChhZGRNZXJnZVRhZylcbiAgICAgICAgdGFncyA9IHRhZ3MuY29uY2F0KG1lcmdlKTtcbiAgICByZXR1cm4gdGFncy5yZWR1Y2UoKHRhZ3MsIHRhZykgPT4ge1xuICAgICAgICBjb25zdCB0YWdPYmogPSB0eXBlb2YgdGFnID09PSAnc3RyaW5nJyA/IHRhZ3NCeU5hbWVbdGFnXSA6IHRhZztcbiAgICAgICAgaWYgKCF0YWdPYmopIHtcbiAgICAgICAgICAgIGNvbnN0IHRhZ05hbWUgPSBKU09OLnN0cmluZ2lmeSh0YWcpO1xuICAgICAgICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHRhZ3NCeU5hbWUpXG4gICAgICAgICAgICAgICAgLm1hcChrZXkgPT4gSlNPTi5zdHJpbmdpZnkoa2V5KSlcbiAgICAgICAgICAgICAgICAuam9pbignLCAnKTtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBjdXN0b20gdGFnICR7dGFnTmFtZX07IHVzZSBvbmUgb2YgJHtrZXlzfWApO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGFncy5pbmNsdWRlcyh0YWdPYmopKVxuICAgICAgICAgICAgdGFncy5wdXNoKHRhZ09iaik7XG4gICAgICAgIHJldHVybiB0YWdzO1xuICAgIH0sIFtdKTtcbn1cblxuZXhwb3J0IHsgY29yZUtub3duVGFncywgZ2V0VGFncyB9O1xuIiwgImltcG9ydCB7IE1BUCwgU0NBTEFSLCBTRVEgfSBmcm9tICcuLi9ub2Rlcy9pZGVudGl0eS5qcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICcuL2NvbW1vbi9tYXAuanMnO1xuaW1wb3J0IHsgc2VxIH0gZnJvbSAnLi9jb21tb24vc2VxLmpzJztcbmltcG9ydCB7IHN0cmluZyB9IGZyb20gJy4vY29tbW9uL3N0cmluZy5qcyc7XG5pbXBvcnQgeyBnZXRUYWdzLCBjb3JlS25vd25UYWdzIH0gZnJvbSAnLi90YWdzLmpzJztcblxuY29uc3Qgc29ydE1hcEVudHJpZXNCeUtleSA9IChhLCBiKSA9PiBhLmtleSA8IGIua2V5ID8gLTEgOiBhLmtleSA+IGIua2V5ID8gMSA6IDA7XG5jbGFzcyBTY2hlbWEge1xuICAgIGNvbnN0cnVjdG9yKHsgY29tcGF0LCBjdXN0b21UYWdzLCBtZXJnZSwgcmVzb2x2ZUtub3duVGFncywgc2NoZW1hLCBzb3J0TWFwRW50cmllcywgdG9TdHJpbmdEZWZhdWx0cyB9KSB7XG4gICAgICAgIHRoaXMuY29tcGF0ID0gQXJyYXkuaXNBcnJheShjb21wYXQpXG4gICAgICAgICAgICA/IGdldFRhZ3MoY29tcGF0LCAnY29tcGF0JylcbiAgICAgICAgICAgIDogY29tcGF0XG4gICAgICAgICAgICAgICAgPyBnZXRUYWdzKG51bGwsIGNvbXBhdClcbiAgICAgICAgICAgICAgICA6IG51bGw7XG4gICAgICAgIHRoaXMubmFtZSA9ICh0eXBlb2Ygc2NoZW1hID09PSAnc3RyaW5nJyAmJiBzY2hlbWEpIHx8ICdjb3JlJztcbiAgICAgICAgdGhpcy5rbm93blRhZ3MgPSByZXNvbHZlS25vd25UYWdzID8gY29yZUtub3duVGFncyA6IHt9O1xuICAgICAgICB0aGlzLnRhZ3MgPSBnZXRUYWdzKGN1c3RvbVRhZ3MsIHRoaXMubmFtZSwgbWVyZ2UpO1xuICAgICAgICB0aGlzLnRvU3RyaW5nT3B0aW9ucyA9IHRvU3RyaW5nRGVmYXVsdHMgPz8gbnVsbDtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIE1BUCwgeyB2YWx1ZTogbWFwIH0pO1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgU0NBTEFSLCB7IHZhbHVlOiBzdHJpbmcgfSk7XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBTRVEsIHsgdmFsdWU6IHNlcSB9KTtcbiAgICAgICAgLy8gVXNlZCBieSBjcmVhdGVNYXAoKVxuICAgICAgICB0aGlzLnNvcnRNYXBFbnRyaWVzID1cbiAgICAgICAgICAgIHR5cGVvZiBzb3J0TWFwRW50cmllcyA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICAgICAgICAgID8gc29ydE1hcEVudHJpZXNcbiAgICAgICAgICAgICAgICA6IHNvcnRNYXBFbnRyaWVzID09PSB0cnVlXG4gICAgICAgICAgICAgICAgICAgID8gc29ydE1hcEVudHJpZXNCeUtleVxuICAgICAgICAgICAgICAgICAgICA6IG51bGw7XG4gICAgfVxuICAgIGNsb25lKCkge1xuICAgICAgICBjb25zdCBjb3B5ID0gT2JqZWN0LmNyZWF0ZShTY2hlbWEucHJvdG90eXBlLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh0aGlzKSk7XG4gICAgICAgIGNvcHkudGFncyA9IHRoaXMudGFncy5zbGljZSgpO1xuICAgICAgICByZXR1cm4gY29weTtcbiAgICB9XG59XG5cbmV4cG9ydCB7IFNjaGVtYSB9O1xuIiwgImltcG9ydCB7IGlzTm9kZSB9IGZyb20gJy4uL25vZGVzL2lkZW50aXR5LmpzJztcbmltcG9ydCB7IGNyZWF0ZVN0cmluZ2lmeUNvbnRleHQsIHN0cmluZ2lmeSB9IGZyb20gJy4vc3RyaW5naWZ5LmpzJztcbmltcG9ydCB7IGluZGVudENvbW1lbnQsIGxpbmVDb21tZW50IH0gZnJvbSAnLi9zdHJpbmdpZnlDb21tZW50LmpzJztcblxuZnVuY3Rpb24gc3RyaW5naWZ5RG9jdW1lbnQoZG9jLCBvcHRpb25zKSB7XG4gICAgY29uc3QgbGluZXMgPSBbXTtcbiAgICBsZXQgaGFzRGlyZWN0aXZlcyA9IG9wdGlvbnMuZGlyZWN0aXZlcyA9PT0gdHJ1ZTtcbiAgICBpZiAob3B0aW9ucy5kaXJlY3RpdmVzICE9PSBmYWxzZSAmJiBkb2MuZGlyZWN0aXZlcykge1xuICAgICAgICBjb25zdCBkaXIgPSBkb2MuZGlyZWN0aXZlcy50b1N0cmluZyhkb2MpO1xuICAgICAgICBpZiAoZGlyKSB7XG4gICAgICAgICAgICBsaW5lcy5wdXNoKGRpcik7XG4gICAgICAgICAgICBoYXNEaXJlY3RpdmVzID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChkb2MuZGlyZWN0aXZlcy5kb2NTdGFydClcbiAgICAgICAgICAgIGhhc0RpcmVjdGl2ZXMgPSB0cnVlO1xuICAgIH1cbiAgICBpZiAoaGFzRGlyZWN0aXZlcylcbiAgICAgICAgbGluZXMucHVzaCgnLS0tJyk7XG4gICAgY29uc3QgY3R4ID0gY3JlYXRlU3RyaW5naWZ5Q29udGV4dChkb2MsIG9wdGlvbnMpO1xuICAgIGNvbnN0IHsgY29tbWVudFN0cmluZyB9ID0gY3R4Lm9wdGlvbnM7XG4gICAgaWYgKGRvYy5jb21tZW50QmVmb3JlKSB7XG4gICAgICAgIGlmIChsaW5lcy5sZW5ndGggIT09IDEpXG4gICAgICAgICAgICBsaW5lcy51bnNoaWZ0KCcnKTtcbiAgICAgICAgY29uc3QgY3MgPSBjb21tZW50U3RyaW5nKGRvYy5jb21tZW50QmVmb3JlKTtcbiAgICAgICAgbGluZXMudW5zaGlmdChpbmRlbnRDb21tZW50KGNzLCAnJykpO1xuICAgIH1cbiAgICBsZXQgY2hvbXBLZWVwID0gZmFsc2U7XG4gICAgbGV0IGNvbnRlbnRDb21tZW50ID0gbnVsbDtcbiAgICBpZiAoZG9jLmNvbnRlbnRzKSB7XG4gICAgICAgIGlmIChpc05vZGUoZG9jLmNvbnRlbnRzKSkge1xuICAgICAgICAgICAgaWYgKGRvYy5jb250ZW50cy5zcGFjZUJlZm9yZSAmJiBoYXNEaXJlY3RpdmVzKVxuICAgICAgICAgICAgICAgIGxpbmVzLnB1c2goJycpO1xuICAgICAgICAgICAgaWYgKGRvYy5jb250ZW50cy5jb21tZW50QmVmb3JlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY3MgPSBjb21tZW50U3RyaW5nKGRvYy5jb250ZW50cy5jb21tZW50QmVmb3JlKTtcbiAgICAgICAgICAgICAgICBsaW5lcy5wdXNoKGluZGVudENvbW1lbnQoY3MsICcnKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyB0b3AtbGV2ZWwgYmxvY2sgc2NhbGFycyBuZWVkIHRvIGJlIGluZGVudGVkIGlmIGZvbGxvd2VkIGJ5IGEgY29tbWVudFxuICAgICAgICAgICAgY3R4LmZvcmNlQmxvY2tJbmRlbnQgPSAhIWRvYy5jb21tZW50O1xuICAgICAgICAgICAgY29udGVudENvbW1lbnQgPSBkb2MuY29udGVudHMuY29tbWVudDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvbkNob21wS2VlcCA9IGNvbnRlbnRDb21tZW50ID8gdW5kZWZpbmVkIDogKCkgPT4gKGNob21wS2VlcCA9IHRydWUpO1xuICAgICAgICBsZXQgYm9keSA9IHN0cmluZ2lmeShkb2MuY29udGVudHMsIGN0eCwgKCkgPT4gKGNvbnRlbnRDb21tZW50ID0gbnVsbCksIG9uQ2hvbXBLZWVwKTtcbiAgICAgICAgaWYgKGNvbnRlbnRDb21tZW50KVxuICAgICAgICAgICAgYm9keSArPSBsaW5lQ29tbWVudChib2R5LCAnJywgY29tbWVudFN0cmluZyhjb250ZW50Q29tbWVudCkpO1xuICAgICAgICBpZiAoKGJvZHlbMF0gPT09ICd8JyB8fCBib2R5WzBdID09PSAnPicpICYmXG4gICAgICAgICAgICBsaW5lc1tsaW5lcy5sZW5ndGggLSAxXSA9PT0gJy0tLScpIHtcbiAgICAgICAgICAgIC8vIFRvcC1sZXZlbCBibG9jayBzY2FsYXJzIHdpdGggYSBwcmVjZWRpbmcgZG9jIG1hcmtlciBvdWdodCB0byB1c2UgdGhlXG4gICAgICAgICAgICAvLyBzYW1lIGxpbmUgZm9yIHRoZWlyIGhlYWRlci5cbiAgICAgICAgICAgIGxpbmVzW2xpbmVzLmxlbmd0aCAtIDFdID0gYC0tLSAke2JvZHl9YDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgICAgICBsaW5lcy5wdXNoKGJvZHkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgbGluZXMucHVzaChzdHJpbmdpZnkoZG9jLmNvbnRlbnRzLCBjdHgpKTtcbiAgICB9XG4gICAgaWYgKGRvYy5kaXJlY3RpdmVzPy5kb2NFbmQpIHtcbiAgICAgICAgaWYgKGRvYy5jb21tZW50KSB7XG4gICAgICAgICAgICBjb25zdCBjcyA9IGNvbW1lbnRTdHJpbmcoZG9jLmNvbW1lbnQpO1xuICAgICAgICAgICAgaWYgKGNzLmluY2x1ZGVzKCdcXG4nKSkge1xuICAgICAgICAgICAgICAgIGxpbmVzLnB1c2goJy4uLicpO1xuICAgICAgICAgICAgICAgIGxpbmVzLnB1c2goaW5kZW50Q29tbWVudChjcywgJycpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGxpbmVzLnB1c2goYC4uLiAke2NzfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgbGluZXMucHVzaCgnLi4uJyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGxldCBkYyA9IGRvYy5jb21tZW50O1xuICAgICAgICBpZiAoZGMgJiYgY2hvbXBLZWVwKVxuICAgICAgICAgICAgZGMgPSBkYy5yZXBsYWNlKC9eXFxuKy8sICcnKTtcbiAgICAgICAgaWYgKGRjKSB7XG4gICAgICAgICAgICBpZiAoKCFjaG9tcEtlZXAgfHwgY29udGVudENvbW1lbnQpICYmIGxpbmVzW2xpbmVzLmxlbmd0aCAtIDFdICE9PSAnJylcbiAgICAgICAgICAgICAgICBsaW5lcy5wdXNoKCcnKTtcbiAgICAgICAgICAgIGxpbmVzLnB1c2goaW5kZW50Q29tbWVudChjb21tZW50U3RyaW5nKGRjKSwgJycpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbGluZXMuam9pbignXFxuJykgKyAnXFxuJztcbn1cblxuZXhwb3J0IHsgc3RyaW5naWZ5RG9jdW1lbnQgfTtcbiIsICJpbXBvcnQgeyBBbGlhcyB9IGZyb20gJy4uL25vZGVzL0FsaWFzLmpzJztcbmltcG9ydCB7IGlzRW1wdHlQYXRoLCBjb2xsZWN0aW9uRnJvbVBhdGggfSBmcm9tICcuLi9ub2Rlcy9Db2xsZWN0aW9uLmpzJztcbmltcG9ydCB7IE5PREVfVFlQRSwgRE9DLCBpc05vZGUsIGlzQ29sbGVjdGlvbiwgaXNTY2FsYXIgfSBmcm9tICcuLi9ub2Rlcy9pZGVudGl0eS5qcyc7XG5pbXBvcnQgeyBQYWlyIH0gZnJvbSAnLi4vbm9kZXMvUGFpci5qcyc7XG5pbXBvcnQgeyB0b0pTIH0gZnJvbSAnLi4vbm9kZXMvdG9KUy5qcyc7XG5pbXBvcnQgeyBTY2hlbWEgfSBmcm9tICcuLi9zY2hlbWEvU2NoZW1hLmpzJztcbmltcG9ydCB7IHN0cmluZ2lmeURvY3VtZW50IH0gZnJvbSAnLi4vc3RyaW5naWZ5L3N0cmluZ2lmeURvY3VtZW50LmpzJztcbmltcG9ydCB7IGFuY2hvck5hbWVzLCBmaW5kTmV3QW5jaG9yLCBjcmVhdGVOb2RlQW5jaG9ycyB9IGZyb20gJy4vYW5jaG9ycy5qcyc7XG5pbXBvcnQgeyBhcHBseVJldml2ZXIgfSBmcm9tICcuL2FwcGx5UmV2aXZlci5qcyc7XG5pbXBvcnQgeyBjcmVhdGVOb2RlIH0gZnJvbSAnLi9jcmVhdGVOb2RlLmpzJztcbmltcG9ydCB7IERpcmVjdGl2ZXMgfSBmcm9tICcuL2RpcmVjdGl2ZXMuanMnO1xuXG5jbGFzcyBEb2N1bWVudCB7XG4gICAgY29uc3RydWN0b3IodmFsdWUsIHJlcGxhY2VyLCBvcHRpb25zKSB7XG4gICAgICAgIC8qKiBBIGNvbW1lbnQgYmVmb3JlIHRoaXMgRG9jdW1lbnQgKi9cbiAgICAgICAgdGhpcy5jb21tZW50QmVmb3JlID0gbnVsbDtcbiAgICAgICAgLyoqIEEgY29tbWVudCBpbW1lZGlhdGVseSBhZnRlciB0aGlzIERvY3VtZW50ICovXG4gICAgICAgIHRoaXMuY29tbWVudCA9IG51bGw7XG4gICAgICAgIC8qKiBFcnJvcnMgZW5jb3VudGVyZWQgZHVyaW5nIHBhcnNpbmcuICovXG4gICAgICAgIHRoaXMuZXJyb3JzID0gW107XG4gICAgICAgIC8qKiBXYXJuaW5ncyBlbmNvdW50ZXJlZCBkdXJpbmcgcGFyc2luZy4gKi9cbiAgICAgICAgdGhpcy53YXJuaW5ncyA9IFtdO1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgTk9ERV9UWVBFLCB7IHZhbHVlOiBET0MgfSk7XG4gICAgICAgIGxldCBfcmVwbGFjZXIgPSBudWxsO1xuICAgICAgICBpZiAodHlwZW9mIHJlcGxhY2VyID09PSAnZnVuY3Rpb24nIHx8IEFycmF5LmlzQXJyYXkocmVwbGFjZXIpKSB7XG4gICAgICAgICAgICBfcmVwbGFjZXIgPSByZXBsYWNlcjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQgJiYgcmVwbGFjZXIpIHtcbiAgICAgICAgICAgIG9wdGlvbnMgPSByZXBsYWNlcjtcbiAgICAgICAgICAgIHJlcGxhY2VyID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG9wdCA9IE9iamVjdC5hc3NpZ24oe1xuICAgICAgICAgICAgaW50QXNCaWdJbnQ6IGZhbHNlLFxuICAgICAgICAgICAga2VlcFNvdXJjZVRva2VuczogZmFsc2UsXG4gICAgICAgICAgICBsb2dMZXZlbDogJ3dhcm4nLFxuICAgICAgICAgICAgcHJldHR5RXJyb3JzOiB0cnVlLFxuICAgICAgICAgICAgc3RyaWN0OiB0cnVlLFxuICAgICAgICAgICAgc3RyaW5nS2V5czogZmFsc2UsXG4gICAgICAgICAgICB1bmlxdWVLZXlzOiB0cnVlLFxuICAgICAgICAgICAgdmVyc2lvbjogJzEuMidcbiAgICAgICAgfSwgb3B0aW9ucyk7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdDtcbiAgICAgICAgbGV0IHsgdmVyc2lvbiB9ID0gb3B0O1xuICAgICAgICBpZiAob3B0aW9ucz8uX2RpcmVjdGl2ZXMpIHtcbiAgICAgICAgICAgIHRoaXMuZGlyZWN0aXZlcyA9IG9wdGlvbnMuX2RpcmVjdGl2ZXMuYXREb2N1bWVudCgpO1xuICAgICAgICAgICAgaWYgKHRoaXMuZGlyZWN0aXZlcy55YW1sLmV4cGxpY2l0KVxuICAgICAgICAgICAgICAgIHZlcnNpb24gPSB0aGlzLmRpcmVjdGl2ZXMueWFtbC52ZXJzaW9uO1xuICAgICAgICB9XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHRoaXMuZGlyZWN0aXZlcyA9IG5ldyBEaXJlY3RpdmVzKHsgdmVyc2lvbiB9KTtcbiAgICAgICAgdGhpcy5zZXRTY2hlbWEodmVyc2lvbiwgb3B0aW9ucyk7XG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgV2UgY2FuJ3QgcmVhbGx5IGtub3cgdGhhdCB0aGlzIG1hdGNoZXMgQ29udGVudHMuXG4gICAgICAgIHRoaXMuY29udGVudHMgPVxuICAgICAgICAgICAgdmFsdWUgPT09IHVuZGVmaW5lZCA/IG51bGwgOiB0aGlzLmNyZWF0ZU5vZGUodmFsdWUsIF9yZXBsYWNlciwgb3B0aW9ucyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENyZWF0ZSBhIGRlZXAgY29weSBvZiB0aGlzIERvY3VtZW50IGFuZCBpdHMgY29udGVudHMuXG4gICAgICpcbiAgICAgKiBDdXN0b20gTm9kZSB2YWx1ZXMgdGhhdCBpbmhlcml0IGZyb20gYE9iamVjdGAgc3RpbGwgcmVmZXIgdG8gdGhlaXIgb3JpZ2luYWwgaW5zdGFuY2VzLlxuICAgICAqL1xuICAgIGNsb25lKCkge1xuICAgICAgICBjb25zdCBjb3B5ID0gT2JqZWN0LmNyZWF0ZShEb2N1bWVudC5wcm90b3R5cGUsIHtcbiAgICAgICAgICAgIFtOT0RFX1RZUEVdOiB7IHZhbHVlOiBET0MgfVxuICAgICAgICB9KTtcbiAgICAgICAgY29weS5jb21tZW50QmVmb3JlID0gdGhpcy5jb21tZW50QmVmb3JlO1xuICAgICAgICBjb3B5LmNvbW1lbnQgPSB0aGlzLmNvbW1lbnQ7XG4gICAgICAgIGNvcHkuZXJyb3JzID0gdGhpcy5lcnJvcnMuc2xpY2UoKTtcbiAgICAgICAgY29weS53YXJuaW5ncyA9IHRoaXMud2FybmluZ3Muc2xpY2UoKTtcbiAgICAgICAgY29weS5vcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5vcHRpb25zKTtcbiAgICAgICAgaWYgKHRoaXMuZGlyZWN0aXZlcylcbiAgICAgICAgICAgIGNvcHkuZGlyZWN0aXZlcyA9IHRoaXMuZGlyZWN0aXZlcy5jbG9uZSgpO1xuICAgICAgICBjb3B5LnNjaGVtYSA9IHRoaXMuc2NoZW1hLmNsb25lKCk7XG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgV2UgY2FuJ3QgcmVhbGx5IGtub3cgdGhhdCB0aGlzIG1hdGNoZXMgQ29udGVudHMuXG4gICAgICAgIGNvcHkuY29udGVudHMgPSBpc05vZGUodGhpcy5jb250ZW50cylcbiAgICAgICAgICAgID8gdGhpcy5jb250ZW50cy5jbG9uZShjb3B5LnNjaGVtYSlcbiAgICAgICAgICAgIDogdGhpcy5jb250ZW50cztcbiAgICAgICAgaWYgKHRoaXMucmFuZ2UpXG4gICAgICAgICAgICBjb3B5LnJhbmdlID0gdGhpcy5yYW5nZS5zbGljZSgpO1xuICAgICAgICByZXR1cm4gY29weTtcbiAgICB9XG4gICAgLyoqIEFkZHMgYSB2YWx1ZSB0byB0aGUgZG9jdW1lbnQuICovXG4gICAgYWRkKHZhbHVlKSB7XG4gICAgICAgIGlmIChhc3NlcnRDb2xsZWN0aW9uKHRoaXMuY29udGVudHMpKVxuICAgICAgICAgICAgdGhpcy5jb250ZW50cy5hZGQodmFsdWUpO1xuICAgIH1cbiAgICAvKiogQWRkcyBhIHZhbHVlIHRvIHRoZSBkb2N1bWVudC4gKi9cbiAgICBhZGRJbihwYXRoLCB2YWx1ZSkge1xuICAgICAgICBpZiAoYXNzZXJ0Q29sbGVjdGlvbih0aGlzLmNvbnRlbnRzKSlcbiAgICAgICAgICAgIHRoaXMuY29udGVudHMuYWRkSW4ocGF0aCwgdmFsdWUpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDcmVhdGUgYSBuZXcgYEFsaWFzYCBub2RlLCBlbnN1cmluZyB0aGF0IHRoZSB0YXJnZXQgYG5vZGVgIGhhcyB0aGUgcmVxdWlyZWQgYW5jaG9yLlxuICAgICAqXG4gICAgICogSWYgYG5vZGVgIGFscmVhZHkgaGFzIGFuIGFuY2hvciwgYG5hbWVgIGlzIGlnbm9yZWQuXG4gICAgICogT3RoZXJ3aXNlLCB0aGUgYG5vZGUuYW5jaG9yYCB2YWx1ZSB3aWxsIGJlIHNldCB0byBgbmFtZWAsXG4gICAgICogb3IgaWYgYW4gYW5jaG9yIHdpdGggdGhhdCBuYW1lIGlzIGFscmVhZHkgcHJlc2VudCBpbiB0aGUgZG9jdW1lbnQsXG4gICAgICogYG5hbWVgIHdpbGwgYmUgdXNlZCBhcyBhIHByZWZpeCBmb3IgYSBuZXcgdW5pcXVlIGFuY2hvci5cbiAgICAgKiBJZiBgbmFtZWAgaXMgdW5kZWZpbmVkLCB0aGUgZ2VuZXJhdGVkIGFuY2hvciB3aWxsIHVzZSAnYScgYXMgYSBwcmVmaXguXG4gICAgICovXG4gICAgY3JlYXRlQWxpYXMobm9kZSwgbmFtZSkge1xuICAgICAgICBpZiAoIW5vZGUuYW5jaG9yKSB7XG4gICAgICAgICAgICBjb25zdCBwcmV2ID0gYW5jaG9yTmFtZXModGhpcyk7XG4gICAgICAgICAgICBub2RlLmFuY2hvciA9XG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9wcmVmZXItbnVsbGlzaC1jb2FsZXNjaW5nXG4gICAgICAgICAgICAgICAgIW5hbWUgfHwgcHJldi5oYXMobmFtZSkgPyBmaW5kTmV3QW5jaG9yKG5hbWUgfHwgJ2EnLCBwcmV2KSA6IG5hbWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBBbGlhcyhub2RlLmFuY2hvcik7XG4gICAgfVxuICAgIGNyZWF0ZU5vZGUodmFsdWUsIHJlcGxhY2VyLCBvcHRpb25zKSB7XG4gICAgICAgIGxldCBfcmVwbGFjZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIGlmICh0eXBlb2YgcmVwbGFjZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHZhbHVlID0gcmVwbGFjZXIuY2FsbCh7ICcnOiB2YWx1ZSB9LCAnJywgdmFsdWUpO1xuICAgICAgICAgICAgX3JlcGxhY2VyID0gcmVwbGFjZXI7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheShyZXBsYWNlcikpIHtcbiAgICAgICAgICAgIGNvbnN0IGtleVRvU3RyID0gKHYpID0+IHR5cGVvZiB2ID09PSAnbnVtYmVyJyB8fCB2IGluc3RhbmNlb2YgU3RyaW5nIHx8IHYgaW5zdGFuY2VvZiBOdW1iZXI7XG4gICAgICAgICAgICBjb25zdCBhc1N0ciA9IHJlcGxhY2VyLmZpbHRlcihrZXlUb1N0cikubWFwKFN0cmluZyk7XG4gICAgICAgICAgICBpZiAoYXNTdHIubGVuZ3RoID4gMClcbiAgICAgICAgICAgICAgICByZXBsYWNlciA9IHJlcGxhY2VyLmNvbmNhdChhc1N0cik7XG4gICAgICAgICAgICBfcmVwbGFjZXIgPSByZXBsYWNlcjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQgJiYgcmVwbGFjZXIpIHtcbiAgICAgICAgICAgIG9wdGlvbnMgPSByZXBsYWNlcjtcbiAgICAgICAgICAgIHJlcGxhY2VyID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHsgYWxpYXNEdXBsaWNhdGVPYmplY3RzLCBhbmNob3JQcmVmaXgsIGZsb3csIGtlZXBVbmRlZmluZWQsIG9uVGFnT2JqLCB0YWcgfSA9IG9wdGlvbnMgPz8ge307XG4gICAgICAgIGNvbnN0IHsgb25BbmNob3IsIHNldEFuY2hvcnMsIHNvdXJjZU9iamVjdHMgfSA9IGNyZWF0ZU5vZGVBbmNob3JzKHRoaXMsIFxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3ByZWZlci1udWxsaXNoLWNvYWxlc2NpbmdcbiAgICAgICAgYW5jaG9yUHJlZml4IHx8ICdhJyk7XG4gICAgICAgIGNvbnN0IGN0eCA9IHtcbiAgICAgICAgICAgIGFsaWFzRHVwbGljYXRlT2JqZWN0czogYWxpYXNEdXBsaWNhdGVPYmplY3RzID8/IHRydWUsXG4gICAgICAgICAgICBrZWVwVW5kZWZpbmVkOiBrZWVwVW5kZWZpbmVkID8/IGZhbHNlLFxuICAgICAgICAgICAgb25BbmNob3IsXG4gICAgICAgICAgICBvblRhZ09iaixcbiAgICAgICAgICAgIHJlcGxhY2VyOiBfcmVwbGFjZXIsXG4gICAgICAgICAgICBzY2hlbWE6IHRoaXMuc2NoZW1hLFxuICAgICAgICAgICAgc291cmNlT2JqZWN0c1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCBub2RlID0gY3JlYXRlTm9kZSh2YWx1ZSwgdGFnLCBjdHgpO1xuICAgICAgICBpZiAoZmxvdyAmJiBpc0NvbGxlY3Rpb24obm9kZSkpXG4gICAgICAgICAgICBub2RlLmZsb3cgPSB0cnVlO1xuICAgICAgICBzZXRBbmNob3JzKCk7XG4gICAgICAgIHJldHVybiBub2RlO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0IGEga2V5IGFuZCBhIHZhbHVlIGludG8gYSBgUGFpcmAgdXNpbmcgdGhlIGN1cnJlbnQgc2NoZW1hLFxuICAgICAqIHJlY3Vyc2l2ZWx5IHdyYXBwaW5nIGFsbCB2YWx1ZXMgYXMgYFNjYWxhcmAgb3IgYENvbGxlY3Rpb25gIG5vZGVzLlxuICAgICAqL1xuICAgIGNyZWF0ZVBhaXIoa2V5LCB2YWx1ZSwgb3B0aW9ucyA9IHt9KSB7XG4gICAgICAgIGNvbnN0IGsgPSB0aGlzLmNyZWF0ZU5vZGUoa2V5LCBudWxsLCBvcHRpb25zKTtcbiAgICAgICAgY29uc3QgdiA9IHRoaXMuY3JlYXRlTm9kZSh2YWx1ZSwgbnVsbCwgb3B0aW9ucyk7XG4gICAgICAgIHJldHVybiBuZXcgUGFpcihrLCB2KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBhIHZhbHVlIGZyb20gdGhlIGRvY3VtZW50LlxuICAgICAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgaXRlbSB3YXMgZm91bmQgYW5kIHJlbW92ZWQuXG4gICAgICovXG4gICAgZGVsZXRlKGtleSkge1xuICAgICAgICByZXR1cm4gYXNzZXJ0Q29sbGVjdGlvbih0aGlzLmNvbnRlbnRzKSA/IHRoaXMuY29udGVudHMuZGVsZXRlKGtleSkgOiBmYWxzZTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBhIHZhbHVlIGZyb20gdGhlIGRvY3VtZW50LlxuICAgICAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgaXRlbSB3YXMgZm91bmQgYW5kIHJlbW92ZWQuXG4gICAgICovXG4gICAgZGVsZXRlSW4ocGF0aCkge1xuICAgICAgICBpZiAoaXNFbXB0eVBhdGgocGF0aCkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbnRlbnRzID09IG51bGwpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBQcmVzdW1lZCBpbXBvc3NpYmxlIGlmIFN0cmljdCBleHRlbmRzIGZhbHNlXG4gICAgICAgICAgICB0aGlzLmNvbnRlbnRzID0gbnVsbDtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhc3NlcnRDb2xsZWN0aW9uKHRoaXMuY29udGVudHMpXG4gICAgICAgICAgICA/IHRoaXMuY29udGVudHMuZGVsZXRlSW4ocGF0aClcbiAgICAgICAgICAgIDogZmFsc2U7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgaXRlbSBhdCBga2V5YCwgb3IgYHVuZGVmaW5lZGAgaWYgbm90IGZvdW5kLiBCeSBkZWZhdWx0IHVud3JhcHNcbiAgICAgKiBzY2FsYXIgdmFsdWVzIGZyb20gdGhlaXIgc3Vycm91bmRpbmcgbm9kZTsgdG8gZGlzYWJsZSBzZXQgYGtlZXBTY2FsYXJgIHRvXG4gICAgICogYHRydWVgIChjb2xsZWN0aW9ucyBhcmUgYWx3YXlzIHJldHVybmVkIGludGFjdCkuXG4gICAgICovXG4gICAgZ2V0KGtleSwga2VlcFNjYWxhcikge1xuICAgICAgICByZXR1cm4gaXNDb2xsZWN0aW9uKHRoaXMuY29udGVudHMpXG4gICAgICAgICAgICA/IHRoaXMuY29udGVudHMuZ2V0KGtleSwga2VlcFNjYWxhcilcbiAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGl0ZW0gYXQgYHBhdGhgLCBvciBgdW5kZWZpbmVkYCBpZiBub3QgZm91bmQuIEJ5IGRlZmF1bHQgdW53cmFwc1xuICAgICAqIHNjYWxhciB2YWx1ZXMgZnJvbSB0aGVpciBzdXJyb3VuZGluZyBub2RlOyB0byBkaXNhYmxlIHNldCBga2VlcFNjYWxhcmAgdG9cbiAgICAgKiBgdHJ1ZWAgKGNvbGxlY3Rpb25zIGFyZSBhbHdheXMgcmV0dXJuZWQgaW50YWN0KS5cbiAgICAgKi9cbiAgICBnZXRJbihwYXRoLCBrZWVwU2NhbGFyKSB7XG4gICAgICAgIGlmIChpc0VtcHR5UGF0aChwYXRoKSlcbiAgICAgICAgICAgIHJldHVybiAha2VlcFNjYWxhciAmJiBpc1NjYWxhcih0aGlzLmNvbnRlbnRzKVxuICAgICAgICAgICAgICAgID8gdGhpcy5jb250ZW50cy52YWx1ZVxuICAgICAgICAgICAgICAgIDogdGhpcy5jb250ZW50cztcbiAgICAgICAgcmV0dXJuIGlzQ29sbGVjdGlvbih0aGlzLmNvbnRlbnRzKVxuICAgICAgICAgICAgPyB0aGlzLmNvbnRlbnRzLmdldEluKHBhdGgsIGtlZXBTY2FsYXIpXG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIHRoZSBkb2N1bWVudCBpbmNsdWRlcyBhIHZhbHVlIHdpdGggdGhlIGtleSBga2V5YC5cbiAgICAgKi9cbiAgICBoYXMoa2V5KSB7XG4gICAgICAgIHJldHVybiBpc0NvbGxlY3Rpb24odGhpcy5jb250ZW50cykgPyB0aGlzLmNvbnRlbnRzLmhhcyhrZXkpIDogZmFsc2U7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiB0aGUgZG9jdW1lbnQgaW5jbHVkZXMgYSB2YWx1ZSBhdCBgcGF0aGAuXG4gICAgICovXG4gICAgaGFzSW4ocGF0aCkge1xuICAgICAgICBpZiAoaXNFbXB0eVBhdGgocGF0aCkpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb250ZW50cyAhPT0gdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm4gaXNDb2xsZWN0aW9uKHRoaXMuY29udGVudHMpID8gdGhpcy5jb250ZW50cy5oYXNJbihwYXRoKSA6IGZhbHNlO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBTZXRzIGEgdmFsdWUgaW4gdGhpcyBkb2N1bWVudC4gRm9yIGAhIXNldGAsIGB2YWx1ZWAgbmVlZHMgdG8gYmUgYVxuICAgICAqIGJvb2xlYW4gdG8gYWRkL3JlbW92ZSB0aGUgaXRlbSBmcm9tIHRoZSBzZXQuXG4gICAgICovXG4gICAgc2V0KGtleSwgdmFsdWUpIHtcbiAgICAgICAgaWYgKHRoaXMuY29udGVudHMgPT0gbnVsbCkge1xuICAgICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBXZSBjYW4ndCByZWFsbHkga25vdyB0aGF0IHRoaXMgbWF0Y2hlcyBDb250ZW50cy5cbiAgICAgICAgICAgIHRoaXMuY29udGVudHMgPSBjb2xsZWN0aW9uRnJvbVBhdGgodGhpcy5zY2hlbWEsIFtrZXldLCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoYXNzZXJ0Q29sbGVjdGlvbih0aGlzLmNvbnRlbnRzKSkge1xuICAgICAgICAgICAgdGhpcy5jb250ZW50cy5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogU2V0cyBhIHZhbHVlIGluIHRoaXMgZG9jdW1lbnQuIEZvciBgISFzZXRgLCBgdmFsdWVgIG5lZWRzIHRvIGJlIGFcbiAgICAgKiBib29sZWFuIHRvIGFkZC9yZW1vdmUgdGhlIGl0ZW0gZnJvbSB0aGUgc2V0LlxuICAgICAqL1xuICAgIHNldEluKHBhdGgsIHZhbHVlKSB7XG4gICAgICAgIGlmIChpc0VtcHR5UGF0aChwYXRoKSkge1xuICAgICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBXZSBjYW4ndCByZWFsbHkga25vdyB0aGF0IHRoaXMgbWF0Y2hlcyBDb250ZW50cy5cbiAgICAgICAgICAgIHRoaXMuY29udGVudHMgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLmNvbnRlbnRzID09IG51bGwpIHtcbiAgICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgV2UgY2FuJ3QgcmVhbGx5IGtub3cgdGhhdCB0aGlzIG1hdGNoZXMgQ29udGVudHMuXG4gICAgICAgICAgICB0aGlzLmNvbnRlbnRzID0gY29sbGVjdGlvbkZyb21QYXRoKHRoaXMuc2NoZW1hLCBBcnJheS5mcm9tKHBhdGgpLCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoYXNzZXJ0Q29sbGVjdGlvbih0aGlzLmNvbnRlbnRzKSkge1xuICAgICAgICAgICAgdGhpcy5jb250ZW50cy5zZXRJbihwYXRoLCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogQ2hhbmdlIHRoZSBZQU1MIHZlcnNpb24gYW5kIHNjaGVtYSB1c2VkIGJ5IHRoZSBkb2N1bWVudC5cbiAgICAgKiBBIGBudWxsYCB2ZXJzaW9uIGRpc2FibGVzIHN1cHBvcnQgZm9yIGRpcmVjdGl2ZXMsIGV4cGxpY2l0IHRhZ3MsIGFuY2hvcnMsIGFuZCBhbGlhc2VzLlxuICAgICAqIEl0IGFsc28gcmVxdWlyZXMgdGhlIGBzY2hlbWFgIG9wdGlvbiB0byBiZSBnaXZlbiBhcyBhIGBTY2hlbWFgIGluc3RhbmNlIHZhbHVlLlxuICAgICAqXG4gICAgICogT3ZlcnJpZGVzIGFsbCBwcmV2aW91c2x5IHNldCBzY2hlbWEgb3B0aW9ucy5cbiAgICAgKi9cbiAgICBzZXRTY2hlbWEodmVyc2lvbiwgb3B0aW9ucyA9IHt9KSB7XG4gICAgICAgIGlmICh0eXBlb2YgdmVyc2lvbiA9PT0gJ251bWJlcicpXG4gICAgICAgICAgICB2ZXJzaW9uID0gU3RyaW5nKHZlcnNpb24pO1xuICAgICAgICBsZXQgb3B0O1xuICAgICAgICBzd2l0Y2ggKHZlcnNpb24pIHtcbiAgICAgICAgICAgIGNhc2UgJzEuMSc6XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZGlyZWN0aXZlcylcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXJlY3RpdmVzLnlhbWwudmVyc2lvbiA9ICcxLjEnO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXJlY3RpdmVzID0gbmV3IERpcmVjdGl2ZXMoeyB2ZXJzaW9uOiAnMS4xJyB9KTtcbiAgICAgICAgICAgICAgICBvcHQgPSB7IHJlc29sdmVLbm93blRhZ3M6IGZhbHNlLCBzY2hlbWE6ICd5YW1sLTEuMScgfTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJzEuMic6XG4gICAgICAgICAgICBjYXNlICduZXh0JzpcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kaXJlY3RpdmVzKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRpcmVjdGl2ZXMueWFtbC52ZXJzaW9uID0gdmVyc2lvbjtcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGlyZWN0aXZlcyA9IG5ldyBEaXJlY3RpdmVzKHsgdmVyc2lvbiB9KTtcbiAgICAgICAgICAgICAgICBvcHQgPSB7IHJlc29sdmVLbm93blRhZ3M6IHRydWUsIHNjaGVtYTogJ2NvcmUnIH07XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIG51bGw6XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZGlyZWN0aXZlcylcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMuZGlyZWN0aXZlcztcbiAgICAgICAgICAgICAgICBvcHQgPSBudWxsO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIGNvbnN0IHN2ID0gSlNPTi5zdHJpbmdpZnkodmVyc2lvbik7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAnMS4xJywgJzEuMicgb3IgbnVsbCBhcyBmaXJzdCBhcmd1bWVudCwgYnV0IGZvdW5kOiAke3N2fWApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIE5vdCB1c2luZyBgaW5zdGFuY2VvZiBTY2hlbWFgIHRvIGFsbG93IGZvciBkdWNrIHR5cGluZ1xuICAgICAgICBpZiAob3B0aW9ucy5zY2hlbWEgaW5zdGFuY2VvZiBPYmplY3QpXG4gICAgICAgICAgICB0aGlzLnNjaGVtYSA9IG9wdGlvbnMuc2NoZW1hO1xuICAgICAgICBlbHNlIGlmIChvcHQpXG4gICAgICAgICAgICB0aGlzLnNjaGVtYSA9IG5ldyBTY2hlbWEoT2JqZWN0LmFzc2lnbihvcHQsIG9wdGlvbnMpKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBXaXRoIGEgbnVsbCBZQU1MIHZlcnNpb24sIHRoZSB7IHNjaGVtYTogU2NoZW1hIH0gb3B0aW9uIGlzIHJlcXVpcmVkYCk7XG4gICAgfVxuICAgIC8vIGpzb24gJiBqc29uQXJnIGFyZSBvbmx5IHVzZWQgZnJvbSB0b0pTT04oKVxuICAgIHRvSlMoeyBqc29uLCBqc29uQXJnLCBtYXBBc01hcCwgbWF4QWxpYXNDb3VudCwgb25BbmNob3IsIHJldml2ZXIgfSA9IHt9KSB7XG4gICAgICAgIGNvbnN0IGN0eCA9IHtcbiAgICAgICAgICAgIGFuY2hvcnM6IG5ldyBNYXAoKSxcbiAgICAgICAgICAgIGRvYzogdGhpcyxcbiAgICAgICAgICAgIGtlZXA6ICFqc29uLFxuICAgICAgICAgICAgbWFwQXNNYXA6IG1hcEFzTWFwID09PSB0cnVlLFxuICAgICAgICAgICAgbWFwS2V5V2FybmVkOiBmYWxzZSxcbiAgICAgICAgICAgIG1heEFsaWFzQ291bnQ6IHR5cGVvZiBtYXhBbGlhc0NvdW50ID09PSAnbnVtYmVyJyA/IG1heEFsaWFzQ291bnQgOiAxMDBcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgcmVzID0gdG9KUyh0aGlzLmNvbnRlbnRzLCBqc29uQXJnID8/ICcnLCBjdHgpO1xuICAgICAgICBpZiAodHlwZW9mIG9uQW5jaG9yID09PSAnZnVuY3Rpb24nKVxuICAgICAgICAgICAgZm9yIChjb25zdCB7IGNvdW50LCByZXMgfSBvZiBjdHguYW5jaG9ycy52YWx1ZXMoKSlcbiAgICAgICAgICAgICAgICBvbkFuY2hvcihyZXMsIGNvdW50KTtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiByZXZpdmVyID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICA/IGFwcGx5UmV2aXZlcihyZXZpdmVyLCB7ICcnOiByZXMgfSwgJycsIHJlcylcbiAgICAgICAgICAgIDogcmVzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBIEpTT04gcmVwcmVzZW50YXRpb24gb2YgdGhlIGRvY3VtZW50IGBjb250ZW50c2AuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ganNvbkFyZyBVc2VkIGJ5IGBKU09OLnN0cmluZ2lmeWAgdG8gaW5kaWNhdGUgdGhlIGFycmF5IGluZGV4IG9yXG4gICAgICogICBwcm9wZXJ0eSBuYW1lLlxuICAgICAqL1xuICAgIHRvSlNPTihqc29uQXJnLCBvbkFuY2hvcikge1xuICAgICAgICByZXR1cm4gdGhpcy50b0pTKHsganNvbjogdHJ1ZSwganNvbkFyZywgbWFwQXNNYXA6IGZhbHNlLCBvbkFuY2hvciB9KTtcbiAgICB9XG4gICAgLyoqIEEgWUFNTCByZXByZXNlbnRhdGlvbiBvZiB0aGUgZG9jdW1lbnQuICovXG4gICAgdG9TdHJpbmcob3B0aW9ucyA9IHt9KSB7XG4gICAgICAgIGlmICh0aGlzLmVycm9ycy5sZW5ndGggPiAwKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdEb2N1bWVudCB3aXRoIGVycm9ycyBjYW5ub3QgYmUgc3RyaW5naWZpZWQnKTtcbiAgICAgICAgaWYgKCdpbmRlbnQnIGluIG9wdGlvbnMgJiZcbiAgICAgICAgICAgICghTnVtYmVyLmlzSW50ZWdlcihvcHRpb25zLmluZGVudCkgfHwgTnVtYmVyKG9wdGlvbnMuaW5kZW50KSA8PSAwKSkge1xuICAgICAgICAgICAgY29uc3QgcyA9IEpTT04uc3RyaW5naWZ5KG9wdGlvbnMuaW5kZW50KTtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgXCJpbmRlbnRcIiBvcHRpb24gbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIsIG5vdCAke3N9YCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN0cmluZ2lmeURvY3VtZW50KHRoaXMsIG9wdGlvbnMpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGFzc2VydENvbGxlY3Rpb24oY29udGVudHMpIHtcbiAgICBpZiAoaXNDb2xsZWN0aW9uKGNvbnRlbnRzKSlcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCBhIFlBTUwgY29sbGVjdGlvbiBhcyBkb2N1bWVudCBjb250ZW50cycpO1xufVxuXG5leHBvcnQgeyBEb2N1bWVudCB9O1xuIiwgImNsYXNzIFlBTUxFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgICBjb25zdHJ1Y3RvcihuYW1lLCBwb3MsIGNvZGUsIG1lc3NhZ2UpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICAgICAgdGhpcy5jb2RlID0gY29kZTtcbiAgICAgICAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZTtcbiAgICAgICAgdGhpcy5wb3MgPSBwb3M7XG4gICAgfVxufVxuY2xhc3MgWUFNTFBhcnNlRXJyb3IgZXh0ZW5kcyBZQU1MRXJyb3Ige1xuICAgIGNvbnN0cnVjdG9yKHBvcywgY29kZSwgbWVzc2FnZSkge1xuICAgICAgICBzdXBlcignWUFNTFBhcnNlRXJyb3InLCBwb3MsIGNvZGUsIG1lc3NhZ2UpO1xuICAgIH1cbn1cbmNsYXNzIFlBTUxXYXJuaW5nIGV4dGVuZHMgWUFNTEVycm9yIHtcbiAgICBjb25zdHJ1Y3Rvcihwb3MsIGNvZGUsIG1lc3NhZ2UpIHtcbiAgICAgICAgc3VwZXIoJ1lBTUxXYXJuaW5nJywgcG9zLCBjb2RlLCBtZXNzYWdlKTtcbiAgICB9XG59XG5jb25zdCBwcmV0dGlmeUVycm9yID0gKHNyYywgbGMpID0+IChlcnJvcikgPT4ge1xuICAgIGlmIChlcnJvci5wb3NbMF0gPT09IC0xKVxuICAgICAgICByZXR1cm47XG4gICAgZXJyb3IubGluZVBvcyA9IGVycm9yLnBvcy5tYXAocG9zID0+IGxjLmxpbmVQb3MocG9zKSk7XG4gICAgY29uc3QgeyBsaW5lLCBjb2wgfSA9IGVycm9yLmxpbmVQb3NbMF07XG4gICAgZXJyb3IubWVzc2FnZSArPSBgIGF0IGxpbmUgJHtsaW5lfSwgY29sdW1uICR7Y29sfWA7XG4gICAgbGV0IGNpID0gY29sIC0gMTtcbiAgICBsZXQgbGluZVN0ciA9IHNyY1xuICAgICAgICAuc3Vic3RyaW5nKGxjLmxpbmVTdGFydHNbbGluZSAtIDFdLCBsYy5saW5lU3RhcnRzW2xpbmVdKVxuICAgICAgICAucmVwbGFjZSgvW1xcblxccl0rJC8sICcnKTtcbiAgICAvLyBUcmltIHRvIG1heCA4MCBjaGFycywga2VlcGluZyBjb2wgcG9zaXRpb24gbmVhciB0aGUgbWlkZGxlXG4gICAgaWYgKGNpID49IDYwICYmIGxpbmVTdHIubGVuZ3RoID4gODApIHtcbiAgICAgICAgY29uc3QgdHJpbVN0YXJ0ID0gTWF0aC5taW4oY2kgLSAzOSwgbGluZVN0ci5sZW5ndGggLSA3OSk7XG4gICAgICAgIGxpbmVTdHIgPSAnXHUyMDI2JyArIGxpbmVTdHIuc3Vic3RyaW5nKHRyaW1TdGFydCk7XG4gICAgICAgIGNpIC09IHRyaW1TdGFydCAtIDE7XG4gICAgfVxuICAgIGlmIChsaW5lU3RyLmxlbmd0aCA+IDgwKVxuICAgICAgICBsaW5lU3RyID0gbGluZVN0ci5zdWJzdHJpbmcoMCwgNzkpICsgJ1x1MjAyNic7XG4gICAgLy8gSW5jbHVkZSBwcmV2aW91cyBsaW5lIGluIGNvbnRleHQgaWYgcG9pbnRpbmcgYXQgbGluZSBzdGFydFxuICAgIGlmIChsaW5lID4gMSAmJiAvXiAqJC8udGVzdChsaW5lU3RyLnN1YnN0cmluZygwLCBjaSkpKSB7XG4gICAgICAgIC8vIFJlZ2V4cCB3b24ndCBtYXRjaCBpZiBzdGFydCBpcyB0cmltbWVkXG4gICAgICAgIGxldCBwcmV2ID0gc3JjLnN1YnN0cmluZyhsYy5saW5lU3RhcnRzW2xpbmUgLSAyXSwgbGMubGluZVN0YXJ0c1tsaW5lIC0gMV0pO1xuICAgICAgICBpZiAocHJldi5sZW5ndGggPiA4MClcbiAgICAgICAgICAgIHByZXYgPSBwcmV2LnN1YnN0cmluZygwLCA3OSkgKyAnXHUyMDI2XFxuJztcbiAgICAgICAgbGluZVN0ciA9IHByZXYgKyBsaW5lU3RyO1xuICAgIH1cbiAgICBpZiAoL1teIF0vLnRlc3QobGluZVN0cikpIHtcbiAgICAgICAgbGV0IGNvdW50ID0gMTtcbiAgICAgICAgY29uc3QgZW5kID0gZXJyb3IubGluZVBvc1sxXTtcbiAgICAgICAgaWYgKGVuZCAmJiBlbmQubGluZSA9PT0gbGluZSAmJiBlbmQuY29sID4gY29sKSB7XG4gICAgICAgICAgICBjb3VudCA9IE1hdGgubWF4KDEsIE1hdGgubWluKGVuZC5jb2wgLSBjb2wsIDgwIC0gY2kpKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwb2ludGVyID0gJyAnLnJlcGVhdChjaSkgKyAnXicucmVwZWF0KGNvdW50KTtcbiAgICAgICAgZXJyb3IubWVzc2FnZSArPSBgOlxcblxcbiR7bGluZVN0cn1cXG4ke3BvaW50ZXJ9XFxuYDtcbiAgICB9XG59O1xuXG5leHBvcnQgeyBZQU1MRXJyb3IsIFlBTUxQYXJzZUVycm9yLCBZQU1MV2FybmluZywgcHJldHRpZnlFcnJvciB9O1xuIiwgImZ1bmN0aW9uIHJlc29sdmVQcm9wcyh0b2tlbnMsIHsgZmxvdywgaW5kaWNhdG9yLCBuZXh0LCBvZmZzZXQsIG9uRXJyb3IsIHBhcmVudEluZGVudCwgc3RhcnRPbk5ld2xpbmUgfSkge1xuICAgIGxldCBzcGFjZUJlZm9yZSA9IGZhbHNlO1xuICAgIGxldCBhdE5ld2xpbmUgPSBzdGFydE9uTmV3bGluZTtcbiAgICBsZXQgaGFzU3BhY2UgPSBzdGFydE9uTmV3bGluZTtcbiAgICBsZXQgY29tbWVudCA9ICcnO1xuICAgIGxldCBjb21tZW50U2VwID0gJyc7XG4gICAgbGV0IGhhc05ld2xpbmUgPSBmYWxzZTtcbiAgICBsZXQgcmVxU3BhY2UgPSBmYWxzZTtcbiAgICBsZXQgdGFiID0gbnVsbDtcbiAgICBsZXQgYW5jaG9yID0gbnVsbDtcbiAgICBsZXQgdGFnID0gbnVsbDtcbiAgICBsZXQgbmV3bGluZUFmdGVyUHJvcCA9IG51bGw7XG4gICAgbGV0IGNvbW1hID0gbnVsbDtcbiAgICBsZXQgZm91bmQgPSBudWxsO1xuICAgIGxldCBzdGFydCA9IG51bGw7XG4gICAgZm9yIChjb25zdCB0b2tlbiBvZiB0b2tlbnMpIHtcbiAgICAgICAgaWYgKHJlcVNwYWNlKSB7XG4gICAgICAgICAgICBpZiAodG9rZW4udHlwZSAhPT0gJ3NwYWNlJyAmJlxuICAgICAgICAgICAgICAgIHRva2VuLnR5cGUgIT09ICduZXdsaW5lJyAmJlxuICAgICAgICAgICAgICAgIHRva2VuLnR5cGUgIT09ICdjb21tYScpXG4gICAgICAgICAgICAgICAgb25FcnJvcih0b2tlbi5vZmZzZXQsICdNSVNTSU5HX0NIQVInLCAnVGFncyBhbmQgYW5jaG9ycyBtdXN0IGJlIHNlcGFyYXRlZCBmcm9tIHRoZSBuZXh0IHRva2VuIGJ5IHdoaXRlIHNwYWNlJyk7XG4gICAgICAgICAgICByZXFTcGFjZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0YWIpIHtcbiAgICAgICAgICAgIGlmIChhdE5ld2xpbmUgJiYgdG9rZW4udHlwZSAhPT0gJ2NvbW1lbnQnICYmIHRva2VuLnR5cGUgIT09ICduZXdsaW5lJykge1xuICAgICAgICAgICAgICAgIG9uRXJyb3IodGFiLCAnVEFCX0FTX0lOREVOVCcsICdUYWJzIGFyZSBub3QgYWxsb3dlZCBhcyBpbmRlbnRhdGlvbicpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGFiID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBzd2l0Y2ggKHRva2VuLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ3NwYWNlJzpcbiAgICAgICAgICAgICAgICAvLyBBdCB0aGUgZG9jIGxldmVsLCB0YWJzIGF0IGxpbmUgc3RhcnQgbWF5IGJlIHBhcnNlZFxuICAgICAgICAgICAgICAgIC8vIGFzIGxlYWRpbmcgd2hpdGUgc3BhY2UgcmF0aGVyIHRoYW4gaW5kZW50YXRpb24uXG4gICAgICAgICAgICAgICAgLy8gSW4gYSBmbG93IGNvbGxlY3Rpb24sIG9ubHkgdGhlIHBhcnNlciBoYW5kbGVzIGluZGVudC5cbiAgICAgICAgICAgICAgICBpZiAoIWZsb3cgJiZcbiAgICAgICAgICAgICAgICAgICAgKGluZGljYXRvciAhPT0gJ2RvYy1zdGFydCcgfHwgbmV4dD8udHlwZSAhPT0gJ2Zsb3ctY29sbGVjdGlvbicpICYmXG4gICAgICAgICAgICAgICAgICAgIHRva2VuLnNvdXJjZS5pbmNsdWRlcygnXFx0JykpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFiID0gdG9rZW47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGhhc1NwYWNlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2NvbW1lbnQnOiB7XG4gICAgICAgICAgICAgICAgaWYgKCFoYXNTcGFjZSlcbiAgICAgICAgICAgICAgICAgICAgb25FcnJvcih0b2tlbiwgJ01JU1NJTkdfQ0hBUicsICdDb21tZW50cyBtdXN0IGJlIHNlcGFyYXRlZCBmcm9tIG90aGVyIHRva2VucyBieSB3aGl0ZSBzcGFjZSBjaGFyYWN0ZXJzJyk7XG4gICAgICAgICAgICAgICAgY29uc3QgY2IgPSB0b2tlbi5zb3VyY2Uuc3Vic3RyaW5nKDEpIHx8ICcgJztcbiAgICAgICAgICAgICAgICBpZiAoIWNvbW1lbnQpXG4gICAgICAgICAgICAgICAgICAgIGNvbW1lbnQgPSBjYjtcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGNvbW1lbnQgKz0gY29tbWVudFNlcCArIGNiO1xuICAgICAgICAgICAgICAgIGNvbW1lbnRTZXAgPSAnJztcbiAgICAgICAgICAgICAgICBhdE5ld2xpbmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ25ld2xpbmUnOlxuICAgICAgICAgICAgICAgIGlmIChhdE5ld2xpbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbW1lbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21tZW50ICs9IHRva2VuLnNvdXJjZTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgc3BhY2VCZWZvcmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGNvbW1lbnRTZXAgKz0gdG9rZW4uc291cmNlO1xuICAgICAgICAgICAgICAgIGF0TmV3bGluZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgaGFzTmV3bGluZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgaWYgKGFuY2hvciB8fCB0YWcpXG4gICAgICAgICAgICAgICAgICAgIG5ld2xpbmVBZnRlclByb3AgPSB0b2tlbjtcbiAgICAgICAgICAgICAgICBoYXNTcGFjZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdhbmNob3InOlxuICAgICAgICAgICAgICAgIGlmIChhbmNob3IpXG4gICAgICAgICAgICAgICAgICAgIG9uRXJyb3IodG9rZW4sICdNVUxUSVBMRV9BTkNIT1JTJywgJ0Egbm9kZSBjYW4gaGF2ZSBhdCBtb3N0IG9uZSBhbmNob3InKTtcbiAgICAgICAgICAgICAgICBpZiAodG9rZW4uc291cmNlLmVuZHNXaXRoKCc6JykpXG4gICAgICAgICAgICAgICAgICAgIG9uRXJyb3IodG9rZW4ub2Zmc2V0ICsgdG9rZW4uc291cmNlLmxlbmd0aCAtIDEsICdCQURfQUxJQVMnLCAnQW5jaG9yIGVuZGluZyBpbiA6IGlzIGFtYmlndW91cycsIHRydWUpO1xuICAgICAgICAgICAgICAgIGFuY2hvciA9IHRva2VuO1xuICAgICAgICAgICAgICAgIGlmIChzdGFydCA9PT0gbnVsbClcbiAgICAgICAgICAgICAgICAgICAgc3RhcnQgPSB0b2tlbi5vZmZzZXQ7XG4gICAgICAgICAgICAgICAgYXROZXdsaW5lID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaGFzU3BhY2UgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICByZXFTcGFjZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd0YWcnOiB7XG4gICAgICAgICAgICAgICAgaWYgKHRhZylcbiAgICAgICAgICAgICAgICAgICAgb25FcnJvcih0b2tlbiwgJ01VTFRJUExFX1RBR1MnLCAnQSBub2RlIGNhbiBoYXZlIGF0IG1vc3Qgb25lIHRhZycpO1xuICAgICAgICAgICAgICAgIHRhZyA9IHRva2VuO1xuICAgICAgICAgICAgICAgIGlmIChzdGFydCA9PT0gbnVsbClcbiAgICAgICAgICAgICAgICAgICAgc3RhcnQgPSB0b2tlbi5vZmZzZXQ7XG4gICAgICAgICAgICAgICAgYXROZXdsaW5lID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaGFzU3BhY2UgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICByZXFTcGFjZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIGluZGljYXRvcjpcbiAgICAgICAgICAgICAgICAvLyBDb3VsZCBoZXJlIGhhbmRsZSBwcmVjZWRpbmcgY29tbWVudHMgZGlmZmVyZW50bHlcbiAgICAgICAgICAgICAgICBpZiAoYW5jaG9yIHx8IHRhZylcbiAgICAgICAgICAgICAgICAgICAgb25FcnJvcih0b2tlbiwgJ0JBRF9QUk9QX09SREVSJywgYEFuY2hvcnMgYW5kIHRhZ3MgbXVzdCBiZSBhZnRlciB0aGUgJHt0b2tlbi5zb3VyY2V9IGluZGljYXRvcmApO1xuICAgICAgICAgICAgICAgIGlmIChmb3VuZClcbiAgICAgICAgICAgICAgICAgICAgb25FcnJvcih0b2tlbiwgJ1VORVhQRUNURURfVE9LRU4nLCBgVW5leHBlY3RlZCAke3Rva2VuLnNvdXJjZX0gaW4gJHtmbG93ID8/ICdjb2xsZWN0aW9uJ31gKTtcbiAgICAgICAgICAgICAgICBmb3VuZCA9IHRva2VuO1xuICAgICAgICAgICAgICAgIGF0TmV3bGluZSA9XG4gICAgICAgICAgICAgICAgICAgIGluZGljYXRvciA9PT0gJ3NlcS1pdGVtLWluZCcgfHwgaW5kaWNhdG9yID09PSAnZXhwbGljaXQta2V5LWluZCc7XG4gICAgICAgICAgICAgICAgaGFzU3BhY2UgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2NvbW1hJzpcbiAgICAgICAgICAgICAgICBpZiAoZmxvdykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoY29tbWEpXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkVycm9yKHRva2VuLCAnVU5FWFBFQ1RFRF9UT0tFTicsIGBVbmV4cGVjdGVkICwgaW4gJHtmbG93fWApO1xuICAgICAgICAgICAgICAgICAgICBjb21tYSA9IHRva2VuO1xuICAgICAgICAgICAgICAgICAgICBhdE5ld2xpbmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgaGFzU3BhY2UgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gZWxzZSBmYWxsdGhyb3VnaFxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBvbkVycm9yKHRva2VuLCAnVU5FWFBFQ1RFRF9UT0tFTicsIGBVbmV4cGVjdGVkICR7dG9rZW4udHlwZX0gdG9rZW5gKTtcbiAgICAgICAgICAgICAgICBhdE5ld2xpbmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBoYXNTcGFjZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGxhc3QgPSB0b2tlbnNbdG9rZW5zLmxlbmd0aCAtIDFdO1xuICAgIGNvbnN0IGVuZCA9IGxhc3QgPyBsYXN0Lm9mZnNldCArIGxhc3Quc291cmNlLmxlbmd0aCA6IG9mZnNldDtcbiAgICBpZiAocmVxU3BhY2UgJiZcbiAgICAgICAgbmV4dCAmJlxuICAgICAgICBuZXh0LnR5cGUgIT09ICdzcGFjZScgJiZcbiAgICAgICAgbmV4dC50eXBlICE9PSAnbmV3bGluZScgJiZcbiAgICAgICAgbmV4dC50eXBlICE9PSAnY29tbWEnICYmXG4gICAgICAgIChuZXh0LnR5cGUgIT09ICdzY2FsYXInIHx8IG5leHQuc291cmNlICE9PSAnJykpIHtcbiAgICAgICAgb25FcnJvcihuZXh0Lm9mZnNldCwgJ01JU1NJTkdfQ0hBUicsICdUYWdzIGFuZCBhbmNob3JzIG11c3QgYmUgc2VwYXJhdGVkIGZyb20gdGhlIG5leHQgdG9rZW4gYnkgd2hpdGUgc3BhY2UnKTtcbiAgICB9XG4gICAgaWYgKHRhYiAmJlxuICAgICAgICAoKGF0TmV3bGluZSAmJiB0YWIuaW5kZW50IDw9IHBhcmVudEluZGVudCkgfHxcbiAgICAgICAgICAgIG5leHQ/LnR5cGUgPT09ICdibG9jay1tYXAnIHx8XG4gICAgICAgICAgICBuZXh0Py50eXBlID09PSAnYmxvY2stc2VxJykpXG4gICAgICAgIG9uRXJyb3IodGFiLCAnVEFCX0FTX0lOREVOVCcsICdUYWJzIGFyZSBub3QgYWxsb3dlZCBhcyBpbmRlbnRhdGlvbicpO1xuICAgIHJldHVybiB7XG4gICAgICAgIGNvbW1hLFxuICAgICAgICBmb3VuZCxcbiAgICAgICAgc3BhY2VCZWZvcmUsXG4gICAgICAgIGNvbW1lbnQsXG4gICAgICAgIGhhc05ld2xpbmUsXG4gICAgICAgIGFuY2hvcixcbiAgICAgICAgdGFnLFxuICAgICAgICBuZXdsaW5lQWZ0ZXJQcm9wLFxuICAgICAgICBlbmQsXG4gICAgICAgIHN0YXJ0OiBzdGFydCA/PyBlbmRcbiAgICB9O1xufVxuXG5leHBvcnQgeyByZXNvbHZlUHJvcHMgfTtcbiIsICJmdW5jdGlvbiBjb250YWluc05ld2xpbmUoa2V5KSB7XG4gICAgaWYgKCFrZXkpXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIHN3aXRjaCAoa2V5LnR5cGUpIHtcbiAgICAgICAgY2FzZSAnYWxpYXMnOlxuICAgICAgICBjYXNlICdzY2FsYXInOlxuICAgICAgICBjYXNlICdkb3VibGUtcXVvdGVkLXNjYWxhcic6XG4gICAgICAgIGNhc2UgJ3NpbmdsZS1xdW90ZWQtc2NhbGFyJzpcbiAgICAgICAgICAgIGlmIChrZXkuc291cmNlLmluY2x1ZGVzKCdcXG4nKSlcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIGlmIChrZXkuZW5kKVxuICAgICAgICAgICAgICAgIGZvciAoY29uc3Qgc3Qgb2Yga2V5LmVuZClcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0LnR5cGUgPT09ICduZXdsaW5lJylcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICBjYXNlICdmbG93LWNvbGxlY3Rpb24nOlxuICAgICAgICAgICAgZm9yIChjb25zdCBpdCBvZiBrZXkuaXRlbXMpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHN0IG9mIGl0LnN0YXJ0KVxuICAgICAgICAgICAgICAgICAgICBpZiAoc3QudHlwZSA9PT0gJ25ld2xpbmUnKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgaWYgKGl0LnNlcClcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBzdCBvZiBpdC5zZXApXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3QudHlwZSA9PT0gJ25ld2xpbmUnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIGlmIChjb250YWluc05ld2xpbmUoaXQua2V5KSB8fCBjb250YWluc05ld2xpbmUoaXQudmFsdWUpKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbn1cblxuZXhwb3J0IHsgY29udGFpbnNOZXdsaW5lIH07XG4iLCAiaW1wb3J0IHsgY29udGFpbnNOZXdsaW5lIH0gZnJvbSAnLi91dGlsLWNvbnRhaW5zLW5ld2xpbmUuanMnO1xuXG5mdW5jdGlvbiBmbG93SW5kZW50Q2hlY2soaW5kZW50LCBmYywgb25FcnJvcikge1xuICAgIGlmIChmYz8udHlwZSA9PT0gJ2Zsb3ctY29sbGVjdGlvbicpIHtcbiAgICAgICAgY29uc3QgZW5kID0gZmMuZW5kWzBdO1xuICAgICAgICBpZiAoZW5kLmluZGVudCA9PT0gaW5kZW50ICYmXG4gICAgICAgICAgICAoZW5kLnNvdXJjZSA9PT0gJ10nIHx8IGVuZC5zb3VyY2UgPT09ICd9JykgJiZcbiAgICAgICAgICAgIGNvbnRhaW5zTmV3bGluZShmYykpIHtcbiAgICAgICAgICAgIGNvbnN0IG1zZyA9ICdGbG93IGVuZCBpbmRpY2F0b3Igc2hvdWxkIGJlIG1vcmUgaW5kZW50ZWQgdGhhbiBwYXJlbnQnO1xuICAgICAgICAgICAgb25FcnJvcihlbmQsICdCQURfSU5ERU5UJywgbXNnLCB0cnVlKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IHsgZmxvd0luZGVudENoZWNrIH07XG4iLCAiaW1wb3J0IHsgaXNTY2FsYXIgfSBmcm9tICcuLi9ub2Rlcy9pZGVudGl0eS5qcyc7XG5cbmZ1bmN0aW9uIG1hcEluY2x1ZGVzKGN0eCwgaXRlbXMsIHNlYXJjaCkge1xuICAgIGNvbnN0IHsgdW5pcXVlS2V5cyB9ID0gY3R4Lm9wdGlvbnM7XG4gICAgaWYgKHVuaXF1ZUtleXMgPT09IGZhbHNlKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgY29uc3QgaXNFcXVhbCA9IHR5cGVvZiB1bmlxdWVLZXlzID09PSAnZnVuY3Rpb24nXG4gICAgICAgID8gdW5pcXVlS2V5c1xuICAgICAgICA6IChhLCBiKSA9PiBhID09PSBiIHx8IChpc1NjYWxhcihhKSAmJiBpc1NjYWxhcihiKSAmJiBhLnZhbHVlID09PSBiLnZhbHVlKTtcbiAgICByZXR1cm4gaXRlbXMuc29tZShwYWlyID0+IGlzRXF1YWwocGFpci5rZXksIHNlYXJjaCkpO1xufVxuXG5leHBvcnQgeyBtYXBJbmNsdWRlcyB9O1xuIiwgImltcG9ydCB7IFBhaXIgfSBmcm9tICcuLi9ub2Rlcy9QYWlyLmpzJztcbmltcG9ydCB7IFlBTUxNYXAgfSBmcm9tICcuLi9ub2Rlcy9ZQU1MTWFwLmpzJztcbmltcG9ydCB7IHJlc29sdmVQcm9wcyB9IGZyb20gJy4vcmVzb2x2ZS1wcm9wcy5qcyc7XG5pbXBvcnQgeyBjb250YWluc05ld2xpbmUgfSBmcm9tICcuL3V0aWwtY29udGFpbnMtbmV3bGluZS5qcyc7XG5pbXBvcnQgeyBmbG93SW5kZW50Q2hlY2sgfSBmcm9tICcuL3V0aWwtZmxvdy1pbmRlbnQtY2hlY2suanMnO1xuaW1wb3J0IHsgbWFwSW5jbHVkZXMgfSBmcm9tICcuL3V0aWwtbWFwLWluY2x1ZGVzLmpzJztcblxuY29uc3Qgc3RhcnRDb2xNc2cgPSAnQWxsIG1hcHBpbmcgaXRlbXMgbXVzdCBzdGFydCBhdCB0aGUgc2FtZSBjb2x1bW4nO1xuZnVuY3Rpb24gcmVzb2x2ZUJsb2NrTWFwKHsgY29tcG9zZU5vZGUsIGNvbXBvc2VFbXB0eU5vZGUgfSwgY3R4LCBibSwgb25FcnJvciwgdGFnKSB7XG4gICAgY29uc3QgTm9kZUNsYXNzID0gdGFnPy5ub2RlQ2xhc3MgPz8gWUFNTE1hcDtcbiAgICBjb25zdCBtYXAgPSBuZXcgTm9kZUNsYXNzKGN0eC5zY2hlbWEpO1xuICAgIGlmIChjdHguYXRSb290KVxuICAgICAgICBjdHguYXRSb290ID0gZmFsc2U7XG4gICAgbGV0IG9mZnNldCA9IGJtLm9mZnNldDtcbiAgICBsZXQgY29tbWVudEVuZCA9IG51bGw7XG4gICAgZm9yIChjb25zdCBjb2xsSXRlbSBvZiBibS5pdGVtcykge1xuICAgICAgICBjb25zdCB7IHN0YXJ0LCBrZXksIHNlcCwgdmFsdWUgfSA9IGNvbGxJdGVtO1xuICAgICAgICAvLyBrZXkgcHJvcGVydGllc1xuICAgICAgICBjb25zdCBrZXlQcm9wcyA9IHJlc29sdmVQcm9wcyhzdGFydCwge1xuICAgICAgICAgICAgaW5kaWNhdG9yOiAnZXhwbGljaXQta2V5LWluZCcsXG4gICAgICAgICAgICBuZXh0OiBrZXkgPz8gc2VwPy5bMF0sXG4gICAgICAgICAgICBvZmZzZXQsXG4gICAgICAgICAgICBvbkVycm9yLFxuICAgICAgICAgICAgcGFyZW50SW5kZW50OiBibS5pbmRlbnQsXG4gICAgICAgICAgICBzdGFydE9uTmV3bGluZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgaW1wbGljaXRLZXkgPSAha2V5UHJvcHMuZm91bmQ7XG4gICAgICAgIGlmIChpbXBsaWNpdEtleSkge1xuICAgICAgICAgICAgaWYgKGtleSkge1xuICAgICAgICAgICAgICAgIGlmIChrZXkudHlwZSA9PT0gJ2Jsb2NrLXNlcScpXG4gICAgICAgICAgICAgICAgICAgIG9uRXJyb3Iob2Zmc2V0LCAnQkxPQ0tfQVNfSU1QTElDSVRfS0VZJywgJ0EgYmxvY2sgc2VxdWVuY2UgbWF5IG5vdCBiZSB1c2VkIGFzIGFuIGltcGxpY2l0IG1hcCBrZXknKTtcbiAgICAgICAgICAgICAgICBlbHNlIGlmICgnaW5kZW50JyBpbiBrZXkgJiYga2V5LmluZGVudCAhPT0gYm0uaW5kZW50KVxuICAgICAgICAgICAgICAgICAgICBvbkVycm9yKG9mZnNldCwgJ0JBRF9JTkRFTlQnLCBzdGFydENvbE1zZyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWtleVByb3BzLmFuY2hvciAmJiAha2V5UHJvcHMudGFnICYmICFzZXApIHtcbiAgICAgICAgICAgICAgICBjb21tZW50RW5kID0ga2V5UHJvcHMuZW5kO1xuICAgICAgICAgICAgICAgIGlmIChrZXlQcm9wcy5jb21tZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChtYXAuY29tbWVudClcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcC5jb21tZW50ICs9ICdcXG4nICsga2V5UHJvcHMuY29tbWVudDtcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgbWFwLmNvbW1lbnQgPSBrZXlQcm9wcy5jb21tZW50O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChrZXlQcm9wcy5uZXdsaW5lQWZ0ZXJQcm9wIHx8IGNvbnRhaW5zTmV3bGluZShrZXkpKSB7XG4gICAgICAgICAgICAgICAgb25FcnJvcihrZXkgPz8gc3RhcnRbc3RhcnQubGVuZ3RoIC0gMV0sICdNVUxUSUxJTkVfSU1QTElDSVRfS0VZJywgJ0ltcGxpY2l0IGtleXMgbmVlZCB0byBiZSBvbiBhIHNpbmdsZSBsaW5lJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoa2V5UHJvcHMuZm91bmQ/LmluZGVudCAhPT0gYm0uaW5kZW50KSB7XG4gICAgICAgICAgICBvbkVycm9yKG9mZnNldCwgJ0JBRF9JTkRFTlQnLCBzdGFydENvbE1zZyk7XG4gICAgICAgIH1cbiAgICAgICAgLy8ga2V5IHZhbHVlXG4gICAgICAgIGN0eC5hdEtleSA9IHRydWU7XG4gICAgICAgIGNvbnN0IGtleVN0YXJ0ID0ga2V5UHJvcHMuZW5kO1xuICAgICAgICBjb25zdCBrZXlOb2RlID0ga2V5XG4gICAgICAgICAgICA/IGNvbXBvc2VOb2RlKGN0eCwga2V5LCBrZXlQcm9wcywgb25FcnJvcilcbiAgICAgICAgICAgIDogY29tcG9zZUVtcHR5Tm9kZShjdHgsIGtleVN0YXJ0LCBzdGFydCwgbnVsbCwga2V5UHJvcHMsIG9uRXJyb3IpO1xuICAgICAgICBpZiAoY3R4LnNjaGVtYS5jb21wYXQpXG4gICAgICAgICAgICBmbG93SW5kZW50Q2hlY2soYm0uaW5kZW50LCBrZXksIG9uRXJyb3IpO1xuICAgICAgICBjdHguYXRLZXkgPSBmYWxzZTtcbiAgICAgICAgaWYgKG1hcEluY2x1ZGVzKGN0eCwgbWFwLml0ZW1zLCBrZXlOb2RlKSlcbiAgICAgICAgICAgIG9uRXJyb3Ioa2V5U3RhcnQsICdEVVBMSUNBVEVfS0VZJywgJ01hcCBrZXlzIG11c3QgYmUgdW5pcXVlJyk7XG4gICAgICAgIC8vIHZhbHVlIHByb3BlcnRpZXNcbiAgICAgICAgY29uc3QgdmFsdWVQcm9wcyA9IHJlc29sdmVQcm9wcyhzZXAgPz8gW10sIHtcbiAgICAgICAgICAgIGluZGljYXRvcjogJ21hcC12YWx1ZS1pbmQnLFxuICAgICAgICAgICAgbmV4dDogdmFsdWUsXG4gICAgICAgICAgICBvZmZzZXQ6IGtleU5vZGUucmFuZ2VbMl0sXG4gICAgICAgICAgICBvbkVycm9yLFxuICAgICAgICAgICAgcGFyZW50SW5kZW50OiBibS5pbmRlbnQsXG4gICAgICAgICAgICBzdGFydE9uTmV3bGluZTogIWtleSB8fCBrZXkudHlwZSA9PT0gJ2Jsb2NrLXNjYWxhcidcbiAgICAgICAgfSk7XG4gICAgICAgIG9mZnNldCA9IHZhbHVlUHJvcHMuZW5kO1xuICAgICAgICBpZiAodmFsdWVQcm9wcy5mb3VuZCkge1xuICAgICAgICAgICAgaWYgKGltcGxpY2l0S2V5KSB7XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlPy50eXBlID09PSAnYmxvY2stbWFwJyAmJiAhdmFsdWVQcm9wcy5oYXNOZXdsaW5lKVxuICAgICAgICAgICAgICAgICAgICBvbkVycm9yKG9mZnNldCwgJ0JMT0NLX0FTX0lNUExJQ0lUX0tFWScsICdOZXN0ZWQgbWFwcGluZ3MgYXJlIG5vdCBhbGxvd2VkIGluIGNvbXBhY3QgbWFwcGluZ3MnKTtcbiAgICAgICAgICAgICAgICBpZiAoY3R4Lm9wdGlvbnMuc3RyaWN0ICYmXG4gICAgICAgICAgICAgICAgICAgIGtleVByb3BzLnN0YXJ0IDwgdmFsdWVQcm9wcy5mb3VuZC5vZmZzZXQgLSAxMDI0KVxuICAgICAgICAgICAgICAgICAgICBvbkVycm9yKGtleU5vZGUucmFuZ2UsICdLRVlfT1ZFUl8xMDI0X0NIQVJTJywgJ1RoZSA6IGluZGljYXRvciBtdXN0IGJlIGF0IG1vc3QgMTAyNCBjaGFycyBhZnRlciB0aGUgc3RhcnQgb2YgYW4gaW1wbGljaXQgYmxvY2sgbWFwcGluZyBrZXknKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIHZhbHVlIHZhbHVlXG4gICAgICAgICAgICBjb25zdCB2YWx1ZU5vZGUgPSB2YWx1ZVxuICAgICAgICAgICAgICAgID8gY29tcG9zZU5vZGUoY3R4LCB2YWx1ZSwgdmFsdWVQcm9wcywgb25FcnJvcilcbiAgICAgICAgICAgICAgICA6IGNvbXBvc2VFbXB0eU5vZGUoY3R4LCBvZmZzZXQsIHNlcCwgbnVsbCwgdmFsdWVQcm9wcywgb25FcnJvcik7XG4gICAgICAgICAgICBpZiAoY3R4LnNjaGVtYS5jb21wYXQpXG4gICAgICAgICAgICAgICAgZmxvd0luZGVudENoZWNrKGJtLmluZGVudCwgdmFsdWUsIG9uRXJyb3IpO1xuICAgICAgICAgICAgb2Zmc2V0ID0gdmFsdWVOb2RlLnJhbmdlWzJdO1xuICAgICAgICAgICAgY29uc3QgcGFpciA9IG5ldyBQYWlyKGtleU5vZGUsIHZhbHVlTm9kZSk7XG4gICAgICAgICAgICBpZiAoY3R4Lm9wdGlvbnMua2VlcFNvdXJjZVRva2VucylcbiAgICAgICAgICAgICAgICBwYWlyLnNyY1Rva2VuID0gY29sbEl0ZW07XG4gICAgICAgICAgICBtYXAuaXRlbXMucHVzaChwYWlyKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIGtleSB3aXRoIG5vIHZhbHVlXG4gICAgICAgICAgICBpZiAoaW1wbGljaXRLZXkpXG4gICAgICAgICAgICAgICAgb25FcnJvcihrZXlOb2RlLnJhbmdlLCAnTUlTU0lOR19DSEFSJywgJ0ltcGxpY2l0IG1hcCBrZXlzIG5lZWQgdG8gYmUgZm9sbG93ZWQgYnkgbWFwIHZhbHVlcycpO1xuICAgICAgICAgICAgaWYgKHZhbHVlUHJvcHMuY29tbWVudCkge1xuICAgICAgICAgICAgICAgIGlmIChrZXlOb2RlLmNvbW1lbnQpXG4gICAgICAgICAgICAgICAgICAgIGtleU5vZGUuY29tbWVudCArPSAnXFxuJyArIHZhbHVlUHJvcHMuY29tbWVudDtcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGtleU5vZGUuY29tbWVudCA9IHZhbHVlUHJvcHMuY29tbWVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHBhaXIgPSBuZXcgUGFpcihrZXlOb2RlKTtcbiAgICAgICAgICAgIGlmIChjdHgub3B0aW9ucy5rZWVwU291cmNlVG9rZW5zKVxuICAgICAgICAgICAgICAgIHBhaXIuc3JjVG9rZW4gPSBjb2xsSXRlbTtcbiAgICAgICAgICAgIG1hcC5pdGVtcy5wdXNoKHBhaXIpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChjb21tZW50RW5kICYmIGNvbW1lbnRFbmQgPCBvZmZzZXQpXG4gICAgICAgIG9uRXJyb3IoY29tbWVudEVuZCwgJ0lNUE9TU0lCTEUnLCAnTWFwIGNvbW1lbnQgd2l0aCB0cmFpbGluZyBjb250ZW50Jyk7XG4gICAgbWFwLnJhbmdlID0gW2JtLm9mZnNldCwgb2Zmc2V0LCBjb21tZW50RW5kID8/IG9mZnNldF07XG4gICAgcmV0dXJuIG1hcDtcbn1cblxuZXhwb3J0IHsgcmVzb2x2ZUJsb2NrTWFwIH07XG4iLCAiaW1wb3J0IHsgWUFNTFNlcSB9IGZyb20gJy4uL25vZGVzL1lBTUxTZXEuanMnO1xuaW1wb3J0IHsgcmVzb2x2ZVByb3BzIH0gZnJvbSAnLi9yZXNvbHZlLXByb3BzLmpzJztcbmltcG9ydCB7IGZsb3dJbmRlbnRDaGVjayB9IGZyb20gJy4vdXRpbC1mbG93LWluZGVudC1jaGVjay5qcyc7XG5cbmZ1bmN0aW9uIHJlc29sdmVCbG9ja1NlcSh7IGNvbXBvc2VOb2RlLCBjb21wb3NlRW1wdHlOb2RlIH0sIGN0eCwgYnMsIG9uRXJyb3IsIHRhZykge1xuICAgIGNvbnN0IE5vZGVDbGFzcyA9IHRhZz8ubm9kZUNsYXNzID8/IFlBTUxTZXE7XG4gICAgY29uc3Qgc2VxID0gbmV3IE5vZGVDbGFzcyhjdHguc2NoZW1hKTtcbiAgICBpZiAoY3R4LmF0Um9vdClcbiAgICAgICAgY3R4LmF0Um9vdCA9IGZhbHNlO1xuICAgIGlmIChjdHguYXRLZXkpXG4gICAgICAgIGN0eC5hdEtleSA9IGZhbHNlO1xuICAgIGxldCBvZmZzZXQgPSBicy5vZmZzZXQ7XG4gICAgbGV0IGNvbW1lbnRFbmQgPSBudWxsO1xuICAgIGZvciAoY29uc3QgeyBzdGFydCwgdmFsdWUgfSBvZiBicy5pdGVtcykge1xuICAgICAgICBjb25zdCBwcm9wcyA9IHJlc29sdmVQcm9wcyhzdGFydCwge1xuICAgICAgICAgICAgaW5kaWNhdG9yOiAnc2VxLWl0ZW0taW5kJyxcbiAgICAgICAgICAgIG5leHQ6IHZhbHVlLFxuICAgICAgICAgICAgb2Zmc2V0LFxuICAgICAgICAgICAgb25FcnJvcixcbiAgICAgICAgICAgIHBhcmVudEluZGVudDogYnMuaW5kZW50LFxuICAgICAgICAgICAgc3RhcnRPbk5ld2xpbmU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICghcHJvcHMuZm91bmQpIHtcbiAgICAgICAgICAgIGlmIChwcm9wcy5hbmNob3IgfHwgcHJvcHMudGFnIHx8IHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlICYmIHZhbHVlLnR5cGUgPT09ICdibG9jay1zZXEnKVxuICAgICAgICAgICAgICAgICAgICBvbkVycm9yKHByb3BzLmVuZCwgJ0JBRF9JTkRFTlQnLCAnQWxsIHNlcXVlbmNlIGl0ZW1zIG11c3Qgc3RhcnQgYXQgdGhlIHNhbWUgY29sdW1uJyk7XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBvbkVycm9yKG9mZnNldCwgJ01JU1NJTkdfQ0hBUicsICdTZXF1ZW5jZSBpdGVtIHdpdGhvdXQgLSBpbmRpY2F0b3InKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbW1lbnRFbmQgPSBwcm9wcy5lbmQ7XG4gICAgICAgICAgICAgICAgaWYgKHByb3BzLmNvbW1lbnQpXG4gICAgICAgICAgICAgICAgICAgIHNlcS5jb21tZW50ID0gcHJvcHMuY29tbWVudDtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBub2RlID0gdmFsdWVcbiAgICAgICAgICAgID8gY29tcG9zZU5vZGUoY3R4LCB2YWx1ZSwgcHJvcHMsIG9uRXJyb3IpXG4gICAgICAgICAgICA6IGNvbXBvc2VFbXB0eU5vZGUoY3R4LCBwcm9wcy5lbmQsIHN0YXJ0LCBudWxsLCBwcm9wcywgb25FcnJvcik7XG4gICAgICAgIGlmIChjdHguc2NoZW1hLmNvbXBhdClcbiAgICAgICAgICAgIGZsb3dJbmRlbnRDaGVjayhicy5pbmRlbnQsIHZhbHVlLCBvbkVycm9yKTtcbiAgICAgICAgb2Zmc2V0ID0gbm9kZS5yYW5nZVsyXTtcbiAgICAgICAgc2VxLml0ZW1zLnB1c2gobm9kZSk7XG4gICAgfVxuICAgIHNlcS5yYW5nZSA9IFticy5vZmZzZXQsIG9mZnNldCwgY29tbWVudEVuZCA/PyBvZmZzZXRdO1xuICAgIHJldHVybiBzZXE7XG59XG5cbmV4cG9ydCB7IHJlc29sdmVCbG9ja1NlcSB9O1xuIiwgImZ1bmN0aW9uIHJlc29sdmVFbmQoZW5kLCBvZmZzZXQsIHJlcVNwYWNlLCBvbkVycm9yKSB7XG4gICAgbGV0IGNvbW1lbnQgPSAnJztcbiAgICBpZiAoZW5kKSB7XG4gICAgICAgIGxldCBoYXNTcGFjZSA9IGZhbHNlO1xuICAgICAgICBsZXQgc2VwID0gJyc7XG4gICAgICAgIGZvciAoY29uc3QgdG9rZW4gb2YgZW5kKSB7XG4gICAgICAgICAgICBjb25zdCB7IHNvdXJjZSwgdHlwZSB9ID0gdG9rZW47XG4gICAgICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdzcGFjZSc6XG4gICAgICAgICAgICAgICAgICAgIGhhc1NwYWNlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnY29tbWVudCc6IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcVNwYWNlICYmICFoYXNTcGFjZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uRXJyb3IodG9rZW4sICdNSVNTSU5HX0NIQVInLCAnQ29tbWVudHMgbXVzdCBiZSBzZXBhcmF0ZWQgZnJvbSBvdGhlciB0b2tlbnMgYnkgd2hpdGUgc3BhY2UgY2hhcmFjdGVycycpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjYiA9IHNvdXJjZS5zdWJzdHJpbmcoMSkgfHwgJyAnO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbW1lbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21tZW50ID0gY2I7XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnQgKz0gc2VwICsgY2I7XG4gICAgICAgICAgICAgICAgICAgIHNlcCA9ICcnO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSAnbmV3bGluZSc6XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb21tZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgc2VwICs9IHNvdXJjZTtcbiAgICAgICAgICAgICAgICAgICAgaGFzU3BhY2UgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBvbkVycm9yKHRva2VuLCAnVU5FWFBFQ1RFRF9UT0tFTicsIGBVbmV4cGVjdGVkICR7dHlwZX0gYXQgbm9kZSBlbmRgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9mZnNldCArPSBzb3VyY2UubGVuZ3RoO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7IGNvbW1lbnQsIG9mZnNldCB9O1xufVxuXG5leHBvcnQgeyByZXNvbHZlRW5kIH07XG4iLCAiaW1wb3J0IHsgaXNQYWlyIH0gZnJvbSAnLi4vbm9kZXMvaWRlbnRpdHkuanMnO1xuaW1wb3J0IHsgUGFpciB9IGZyb20gJy4uL25vZGVzL1BhaXIuanMnO1xuaW1wb3J0IHsgWUFNTE1hcCB9IGZyb20gJy4uL25vZGVzL1lBTUxNYXAuanMnO1xuaW1wb3J0IHsgWUFNTFNlcSB9IGZyb20gJy4uL25vZGVzL1lBTUxTZXEuanMnO1xuaW1wb3J0IHsgcmVzb2x2ZUVuZCB9IGZyb20gJy4vcmVzb2x2ZS1lbmQuanMnO1xuaW1wb3J0IHsgcmVzb2x2ZVByb3BzIH0gZnJvbSAnLi9yZXNvbHZlLXByb3BzLmpzJztcbmltcG9ydCB7IGNvbnRhaW5zTmV3bGluZSB9IGZyb20gJy4vdXRpbC1jb250YWlucy1uZXdsaW5lLmpzJztcbmltcG9ydCB7IG1hcEluY2x1ZGVzIH0gZnJvbSAnLi91dGlsLW1hcC1pbmNsdWRlcy5qcyc7XG5cbmNvbnN0IGJsb2NrTXNnID0gJ0Jsb2NrIGNvbGxlY3Rpb25zIGFyZSBub3QgYWxsb3dlZCB3aXRoaW4gZmxvdyBjb2xsZWN0aW9ucyc7XG5jb25zdCBpc0Jsb2NrID0gKHRva2VuKSA9PiB0b2tlbiAmJiAodG9rZW4udHlwZSA9PT0gJ2Jsb2NrLW1hcCcgfHwgdG9rZW4udHlwZSA9PT0gJ2Jsb2NrLXNlcScpO1xuZnVuY3Rpb24gcmVzb2x2ZUZsb3dDb2xsZWN0aW9uKHsgY29tcG9zZU5vZGUsIGNvbXBvc2VFbXB0eU5vZGUgfSwgY3R4LCBmYywgb25FcnJvciwgdGFnKSB7XG4gICAgY29uc3QgaXNNYXAgPSBmYy5zdGFydC5zb3VyY2UgPT09ICd7JztcbiAgICBjb25zdCBmY05hbWUgPSBpc01hcCA/ICdmbG93IG1hcCcgOiAnZmxvdyBzZXF1ZW5jZSc7XG4gICAgY29uc3QgTm9kZUNsYXNzID0gKHRhZz8ubm9kZUNsYXNzID8/IChpc01hcCA/IFlBTUxNYXAgOiBZQU1MU2VxKSk7XG4gICAgY29uc3QgY29sbCA9IG5ldyBOb2RlQ2xhc3MoY3R4LnNjaGVtYSk7XG4gICAgY29sbC5mbG93ID0gdHJ1ZTtcbiAgICBjb25zdCBhdFJvb3QgPSBjdHguYXRSb290O1xuICAgIGlmIChhdFJvb3QpXG4gICAgICAgIGN0eC5hdFJvb3QgPSBmYWxzZTtcbiAgICBpZiAoY3R4LmF0S2V5KVxuICAgICAgICBjdHguYXRLZXkgPSBmYWxzZTtcbiAgICBsZXQgb2Zmc2V0ID0gZmMub2Zmc2V0ICsgZmMuc3RhcnQuc291cmNlLmxlbmd0aDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZjLml0ZW1zLmxlbmd0aDsgKytpKSB7XG4gICAgICAgIGNvbnN0IGNvbGxJdGVtID0gZmMuaXRlbXNbaV07XG4gICAgICAgIGNvbnN0IHsgc3RhcnQsIGtleSwgc2VwLCB2YWx1ZSB9ID0gY29sbEl0ZW07XG4gICAgICAgIGNvbnN0IHByb3BzID0gcmVzb2x2ZVByb3BzKHN0YXJ0LCB7XG4gICAgICAgICAgICBmbG93OiBmY05hbWUsXG4gICAgICAgICAgICBpbmRpY2F0b3I6ICdleHBsaWNpdC1rZXktaW5kJyxcbiAgICAgICAgICAgIG5leHQ6IGtleSA/PyBzZXA/LlswXSxcbiAgICAgICAgICAgIG9mZnNldCxcbiAgICAgICAgICAgIG9uRXJyb3IsXG4gICAgICAgICAgICBwYXJlbnRJbmRlbnQ6IGZjLmluZGVudCxcbiAgICAgICAgICAgIHN0YXJ0T25OZXdsaW5lOiBmYWxzZVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKCFwcm9wcy5mb3VuZCkge1xuICAgICAgICAgICAgaWYgKCFwcm9wcy5hbmNob3IgJiYgIXByb3BzLnRhZyAmJiAhc2VwICYmICF2YWx1ZSkge1xuICAgICAgICAgICAgICAgIGlmIChpID09PSAwICYmIHByb3BzLmNvbW1hKVxuICAgICAgICAgICAgICAgICAgICBvbkVycm9yKHByb3BzLmNvbW1hLCAnVU5FWFBFQ1RFRF9UT0tFTicsIGBVbmV4cGVjdGVkICwgaW4gJHtmY05hbWV9YCk7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoaSA8IGZjLml0ZW1zLmxlbmd0aCAtIDEpXG4gICAgICAgICAgICAgICAgICAgIG9uRXJyb3IocHJvcHMuc3RhcnQsICdVTkVYUEVDVEVEX1RPS0VOJywgYFVuZXhwZWN0ZWQgZW1wdHkgaXRlbSBpbiAke2ZjTmFtZX1gKTtcbiAgICAgICAgICAgICAgICBpZiAocHJvcHMuY29tbWVudCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoY29sbC5jb21tZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgY29sbC5jb21tZW50ICs9ICdcXG4nICsgcHJvcHMuY29tbWVudDtcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgY29sbC5jb21tZW50ID0gcHJvcHMuY29tbWVudDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb2Zmc2V0ID0gcHJvcHMuZW5kO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFpc01hcCAmJiBjdHgub3B0aW9ucy5zdHJpY3QgJiYgY29udGFpbnNOZXdsaW5lKGtleSkpXG4gICAgICAgICAgICAgICAgb25FcnJvcihrZXksIC8vIGNoZWNrZWQgYnkgY29udGFpbnNOZXdsaW5lKClcbiAgICAgICAgICAgICAgICAnTVVMVElMSU5FX0lNUExJQ0lUX0tFWScsICdJbXBsaWNpdCBrZXlzIG9mIGZsb3cgc2VxdWVuY2UgcGFpcnMgbmVlZCB0byBiZSBvbiBhIHNpbmdsZSBsaW5lJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGkgPT09IDApIHtcbiAgICAgICAgICAgIGlmIChwcm9wcy5jb21tYSlcbiAgICAgICAgICAgICAgICBvbkVycm9yKHByb3BzLmNvbW1hLCAnVU5FWFBFQ1RFRF9UT0tFTicsIGBVbmV4cGVjdGVkICwgaW4gJHtmY05hbWV9YCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAoIXByb3BzLmNvbW1hKVxuICAgICAgICAgICAgICAgIG9uRXJyb3IocHJvcHMuc3RhcnQsICdNSVNTSU5HX0NIQVInLCBgTWlzc2luZyAsIGJldHdlZW4gJHtmY05hbWV9IGl0ZW1zYCk7XG4gICAgICAgICAgICBpZiAocHJvcHMuY29tbWVudCkge1xuICAgICAgICAgICAgICAgIGxldCBwcmV2SXRlbUNvbW1lbnQgPSAnJztcbiAgICAgICAgICAgICAgICBsb29wOiBmb3IgKGNvbnN0IHN0IG9mIHN0YXJ0KSB7XG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoc3QudHlwZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnY29tbWEnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc3BhY2UnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnY29tbWVudCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldkl0ZW1Db21tZW50ID0gc3Quc291cmNlLnN1YnN0cmluZygxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBsb29wO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBsb29wO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChwcmV2SXRlbUNvbW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHByZXYgPSBjb2xsLml0ZW1zW2NvbGwuaXRlbXMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc1BhaXIocHJldikpXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV2ID0gcHJldi52YWx1ZSA/PyBwcmV2LmtleTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByZXYuY29tbWVudClcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXYuY29tbWVudCArPSAnXFxuJyArIHByZXZJdGVtQ29tbWVudDtcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgcHJldi5jb21tZW50ID0gcHJldkl0ZW1Db21tZW50O1xuICAgICAgICAgICAgICAgICAgICBwcm9wcy5jb21tZW50ID0gcHJvcHMuY29tbWVudC5zdWJzdHJpbmcocHJldkl0ZW1Db21tZW50Lmxlbmd0aCArIDEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzTWFwICYmICFzZXAgJiYgIXByb3BzLmZvdW5kKSB7XG4gICAgICAgICAgICAvLyBpdGVtIGlzIGEgdmFsdWUgaW4gYSBzZXFcbiAgICAgICAgICAgIC8vIFx1MjE5MiBrZXkgJiBzZXAgYXJlIGVtcHR5LCBzdGFydCBkb2VzIG5vdCBpbmNsdWRlID8gb3IgOlxuICAgICAgICAgICAgY29uc3QgdmFsdWVOb2RlID0gdmFsdWVcbiAgICAgICAgICAgICAgICA/IGNvbXBvc2VOb2RlKGN0eCwgdmFsdWUsIHByb3BzLCBvbkVycm9yKVxuICAgICAgICAgICAgICAgIDogY29tcG9zZUVtcHR5Tm9kZShjdHgsIHByb3BzLmVuZCwgc2VwLCBudWxsLCBwcm9wcywgb25FcnJvcik7XG4gICAgICAgICAgICBjb2xsLml0ZW1zLnB1c2godmFsdWVOb2RlKTtcbiAgICAgICAgICAgIG9mZnNldCA9IHZhbHVlTm9kZS5yYW5nZVsyXTtcbiAgICAgICAgICAgIGlmIChpc0Jsb2NrKHZhbHVlKSlcbiAgICAgICAgICAgICAgICBvbkVycm9yKHZhbHVlTm9kZS5yYW5nZSwgJ0JMT0NLX0lOX0ZMT1cnLCBibG9ja01zZyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyBpdGVtIGlzIGEga2V5K3ZhbHVlIHBhaXJcbiAgICAgICAgICAgIC8vIGtleSB2YWx1ZVxuICAgICAgICAgICAgY3R4LmF0S2V5ID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvbnN0IGtleVN0YXJ0ID0gcHJvcHMuZW5kO1xuICAgICAgICAgICAgY29uc3Qga2V5Tm9kZSA9IGtleVxuICAgICAgICAgICAgICAgID8gY29tcG9zZU5vZGUoY3R4LCBrZXksIHByb3BzLCBvbkVycm9yKVxuICAgICAgICAgICAgICAgIDogY29tcG9zZUVtcHR5Tm9kZShjdHgsIGtleVN0YXJ0LCBzdGFydCwgbnVsbCwgcHJvcHMsIG9uRXJyb3IpO1xuICAgICAgICAgICAgaWYgKGlzQmxvY2soa2V5KSlcbiAgICAgICAgICAgICAgICBvbkVycm9yKGtleU5vZGUucmFuZ2UsICdCTE9DS19JTl9GTE9XJywgYmxvY2tNc2cpO1xuICAgICAgICAgICAgY3R4LmF0S2V5ID0gZmFsc2U7XG4gICAgICAgICAgICAvLyB2YWx1ZSBwcm9wZXJ0aWVzXG4gICAgICAgICAgICBjb25zdCB2YWx1ZVByb3BzID0gcmVzb2x2ZVByb3BzKHNlcCA/PyBbXSwge1xuICAgICAgICAgICAgICAgIGZsb3c6IGZjTmFtZSxcbiAgICAgICAgICAgICAgICBpbmRpY2F0b3I6ICdtYXAtdmFsdWUtaW5kJyxcbiAgICAgICAgICAgICAgICBuZXh0OiB2YWx1ZSxcbiAgICAgICAgICAgICAgICBvZmZzZXQ6IGtleU5vZGUucmFuZ2VbMl0sXG4gICAgICAgICAgICAgICAgb25FcnJvcixcbiAgICAgICAgICAgICAgICBwYXJlbnRJbmRlbnQ6IGZjLmluZGVudCxcbiAgICAgICAgICAgICAgICBzdGFydE9uTmV3bGluZTogZmFsc2VcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKHZhbHVlUHJvcHMuZm91bmQpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWlzTWFwICYmICFwcm9wcy5mb3VuZCAmJiBjdHgub3B0aW9ucy5zdHJpY3QpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlcClcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3Qgc3Qgb2Ygc2VwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0ID09PSB2YWx1ZVByb3BzLmZvdW5kKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3QudHlwZSA9PT0gJ25ld2xpbmUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRXJyb3Ioc3QsICdNVUxUSUxJTkVfSU1QTElDSVRfS0VZJywgJ0ltcGxpY2l0IGtleXMgb2YgZmxvdyBzZXF1ZW5jZSBwYWlycyBuZWVkIHRvIGJlIG9uIGEgc2luZ2xlIGxpbmUnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAocHJvcHMuc3RhcnQgPCB2YWx1ZVByb3BzLmZvdW5kLm9mZnNldCAtIDEwMjQpXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkVycm9yKHZhbHVlUHJvcHMuZm91bmQsICdLRVlfT1ZFUl8xMDI0X0NIQVJTJywgJ1RoZSA6IGluZGljYXRvciBtdXN0IGJlIGF0IG1vc3QgMTAyNCBjaGFycyBhZnRlciB0aGUgc3RhcnQgb2YgYW4gaW1wbGljaXQgZmxvdyBzZXF1ZW5jZSBrZXknKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIGlmICgnc291cmNlJyBpbiB2YWx1ZSAmJiB2YWx1ZS5zb3VyY2UgJiYgdmFsdWUuc291cmNlWzBdID09PSAnOicpXG4gICAgICAgICAgICAgICAgICAgIG9uRXJyb3IodmFsdWUsICdNSVNTSU5HX0NIQVInLCBgTWlzc2luZyBzcGFjZSBhZnRlciA6IGluICR7ZmNOYW1lfWApO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgb25FcnJvcih2YWx1ZVByb3BzLnN0YXJ0LCAnTUlTU0lOR19DSEFSJywgYE1pc3NpbmcgLCBvciA6IGJldHdlZW4gJHtmY05hbWV9IGl0ZW1zYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyB2YWx1ZSB2YWx1ZVxuICAgICAgICAgICAgY29uc3QgdmFsdWVOb2RlID0gdmFsdWVcbiAgICAgICAgICAgICAgICA/IGNvbXBvc2VOb2RlKGN0eCwgdmFsdWUsIHZhbHVlUHJvcHMsIG9uRXJyb3IpXG4gICAgICAgICAgICAgICAgOiB2YWx1ZVByb3BzLmZvdW5kXG4gICAgICAgICAgICAgICAgICAgID8gY29tcG9zZUVtcHR5Tm9kZShjdHgsIHZhbHVlUHJvcHMuZW5kLCBzZXAsIG51bGwsIHZhbHVlUHJvcHMsIG9uRXJyb3IpXG4gICAgICAgICAgICAgICAgICAgIDogbnVsbDtcbiAgICAgICAgICAgIGlmICh2YWx1ZU5vZGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNCbG9jayh2YWx1ZSkpXG4gICAgICAgICAgICAgICAgICAgIG9uRXJyb3IodmFsdWVOb2RlLnJhbmdlLCAnQkxPQ0tfSU5fRkxPVycsIGJsb2NrTXNnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlUHJvcHMuY29tbWVudCkge1xuICAgICAgICAgICAgICAgIGlmIChrZXlOb2RlLmNvbW1lbnQpXG4gICAgICAgICAgICAgICAgICAgIGtleU5vZGUuY29tbWVudCArPSAnXFxuJyArIHZhbHVlUHJvcHMuY29tbWVudDtcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGtleU5vZGUuY29tbWVudCA9IHZhbHVlUHJvcHMuY29tbWVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHBhaXIgPSBuZXcgUGFpcihrZXlOb2RlLCB2YWx1ZU5vZGUpO1xuICAgICAgICAgICAgaWYgKGN0eC5vcHRpb25zLmtlZXBTb3VyY2VUb2tlbnMpXG4gICAgICAgICAgICAgICAgcGFpci5zcmNUb2tlbiA9IGNvbGxJdGVtO1xuICAgICAgICAgICAgaWYgKGlzTWFwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWFwID0gY29sbDtcbiAgICAgICAgICAgICAgICBpZiAobWFwSW5jbHVkZXMoY3R4LCBtYXAuaXRlbXMsIGtleU5vZGUpKVxuICAgICAgICAgICAgICAgICAgICBvbkVycm9yKGtleVN0YXJ0LCAnRFVQTElDQVRFX0tFWScsICdNYXAga2V5cyBtdXN0IGJlIHVuaXF1ZScpO1xuICAgICAgICAgICAgICAgIG1hcC5pdGVtcy5wdXNoKHBhaXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWFwID0gbmV3IFlBTUxNYXAoY3R4LnNjaGVtYSk7XG4gICAgICAgICAgICAgICAgbWFwLmZsb3cgPSB0cnVlO1xuICAgICAgICAgICAgICAgIG1hcC5pdGVtcy5wdXNoKHBhaXIpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGVuZFJhbmdlID0gKHZhbHVlTm9kZSA/PyBrZXlOb2RlKS5yYW5nZTtcbiAgICAgICAgICAgICAgICBtYXAucmFuZ2UgPSBba2V5Tm9kZS5yYW5nZVswXSwgZW5kUmFuZ2VbMV0sIGVuZFJhbmdlWzJdXTtcbiAgICAgICAgICAgICAgICBjb2xsLml0ZW1zLnB1c2gobWFwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9mZnNldCA9IHZhbHVlTm9kZSA/IHZhbHVlTm9kZS5yYW5nZVsyXSA6IHZhbHVlUHJvcHMuZW5kO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGV4cGVjdGVkRW5kID0gaXNNYXAgPyAnfScgOiAnXSc7XG4gICAgY29uc3QgW2NlLCAuLi5lZV0gPSBmYy5lbmQ7XG4gICAgbGV0IGNlUG9zID0gb2Zmc2V0O1xuICAgIGlmIChjZSAmJiBjZS5zb3VyY2UgPT09IGV4cGVjdGVkRW5kKVxuICAgICAgICBjZVBvcyA9IGNlLm9mZnNldCArIGNlLnNvdXJjZS5sZW5ndGg7XG4gICAgZWxzZSB7XG4gICAgICAgIGNvbnN0IG5hbWUgPSBmY05hbWVbMF0udG9VcHBlckNhc2UoKSArIGZjTmFtZS5zdWJzdHJpbmcoMSk7XG4gICAgICAgIGNvbnN0IG1zZyA9IGF0Um9vdFxuICAgICAgICAgICAgPyBgJHtuYW1lfSBtdXN0IGVuZCB3aXRoIGEgJHtleHBlY3RlZEVuZH1gXG4gICAgICAgICAgICA6IGAke25hbWV9IGluIGJsb2NrIGNvbGxlY3Rpb24gbXVzdCBiZSBzdWZmaWNpZW50bHkgaW5kZW50ZWQgYW5kIGVuZCB3aXRoIGEgJHtleHBlY3RlZEVuZH1gO1xuICAgICAgICBvbkVycm9yKG9mZnNldCwgYXRSb290ID8gJ01JU1NJTkdfQ0hBUicgOiAnQkFEX0lOREVOVCcsIG1zZyk7XG4gICAgICAgIGlmIChjZSAmJiBjZS5zb3VyY2UubGVuZ3RoICE9PSAxKVxuICAgICAgICAgICAgZWUudW5zaGlmdChjZSk7XG4gICAgfVxuICAgIGlmIChlZS5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IGVuZCA9IHJlc29sdmVFbmQoZWUsIGNlUG9zLCBjdHgub3B0aW9ucy5zdHJpY3QsIG9uRXJyb3IpO1xuICAgICAgICBpZiAoZW5kLmNvbW1lbnQpIHtcbiAgICAgICAgICAgIGlmIChjb2xsLmNvbW1lbnQpXG4gICAgICAgICAgICAgICAgY29sbC5jb21tZW50ICs9ICdcXG4nICsgZW5kLmNvbW1lbnQ7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgY29sbC5jb21tZW50ID0gZW5kLmNvbW1lbnQ7XG4gICAgICAgIH1cbiAgICAgICAgY29sbC5yYW5nZSA9IFtmYy5vZmZzZXQsIGNlUG9zLCBlbmQub2Zmc2V0XTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGNvbGwucmFuZ2UgPSBbZmMub2Zmc2V0LCBjZVBvcywgY2VQb3NdO1xuICAgIH1cbiAgICByZXR1cm4gY29sbDtcbn1cblxuZXhwb3J0IHsgcmVzb2x2ZUZsb3dDb2xsZWN0aW9uIH07XG4iLCAiaW1wb3J0IHsgaXNOb2RlIH0gZnJvbSAnLi4vbm9kZXMvaWRlbnRpdHkuanMnO1xuaW1wb3J0IHsgU2NhbGFyIH0gZnJvbSAnLi4vbm9kZXMvU2NhbGFyLmpzJztcbmltcG9ydCB7IFlBTUxNYXAgfSBmcm9tICcuLi9ub2Rlcy9ZQU1MTWFwLmpzJztcbmltcG9ydCB7IFlBTUxTZXEgfSBmcm9tICcuLi9ub2Rlcy9ZQU1MU2VxLmpzJztcbmltcG9ydCB7IHJlc29sdmVCbG9ja01hcCB9IGZyb20gJy4vcmVzb2x2ZS1ibG9jay1tYXAuanMnO1xuaW1wb3J0IHsgcmVzb2x2ZUJsb2NrU2VxIH0gZnJvbSAnLi9yZXNvbHZlLWJsb2NrLXNlcS5qcyc7XG5pbXBvcnQgeyByZXNvbHZlRmxvd0NvbGxlY3Rpb24gfSBmcm9tICcuL3Jlc29sdmUtZmxvdy1jb2xsZWN0aW9uLmpzJztcblxuZnVuY3Rpb24gcmVzb2x2ZUNvbGxlY3Rpb24oQ04sIGN0eCwgdG9rZW4sIG9uRXJyb3IsIHRhZ05hbWUsIHRhZykge1xuICAgIGNvbnN0IGNvbGwgPSB0b2tlbi50eXBlID09PSAnYmxvY2stbWFwJ1xuICAgICAgICA/IHJlc29sdmVCbG9ja01hcChDTiwgY3R4LCB0b2tlbiwgb25FcnJvciwgdGFnKVxuICAgICAgICA6IHRva2VuLnR5cGUgPT09ICdibG9jay1zZXEnXG4gICAgICAgICAgICA/IHJlc29sdmVCbG9ja1NlcShDTiwgY3R4LCB0b2tlbiwgb25FcnJvciwgdGFnKVxuICAgICAgICAgICAgOiByZXNvbHZlRmxvd0NvbGxlY3Rpb24oQ04sIGN0eCwgdG9rZW4sIG9uRXJyb3IsIHRhZyk7XG4gICAgY29uc3QgQ29sbCA9IGNvbGwuY29uc3RydWN0b3I7XG4gICAgLy8gSWYgd2UgZ290IGEgdGFnTmFtZSBtYXRjaGluZyB0aGUgY2xhc3MsIG9yIHRoZSB0YWcgbmFtZSBpcyAnIScsXG4gICAgLy8gdGhlbiB1c2UgdGhlIHRhZ05hbWUgZnJvbSB0aGUgbm9kZSBjbGFzcyB1c2VkIHRvIGNyZWF0ZSBpdC5cbiAgICBpZiAodGFnTmFtZSA9PT0gJyEnIHx8IHRhZ05hbWUgPT09IENvbGwudGFnTmFtZSkge1xuICAgICAgICBjb2xsLnRhZyA9IENvbGwudGFnTmFtZTtcbiAgICAgICAgcmV0dXJuIGNvbGw7XG4gICAgfVxuICAgIGlmICh0YWdOYW1lKVxuICAgICAgICBjb2xsLnRhZyA9IHRhZ05hbWU7XG4gICAgcmV0dXJuIGNvbGw7XG59XG5mdW5jdGlvbiBjb21wb3NlQ29sbGVjdGlvbihDTiwgY3R4LCB0b2tlbiwgcHJvcHMsIG9uRXJyb3IpIHtcbiAgICBjb25zdCB0YWdUb2tlbiA9IHByb3BzLnRhZztcbiAgICBjb25zdCB0YWdOYW1lID0gIXRhZ1Rva2VuXG4gICAgICAgID8gbnVsbFxuICAgICAgICA6IGN0eC5kaXJlY3RpdmVzLnRhZ05hbWUodGFnVG9rZW4uc291cmNlLCBtc2cgPT4gb25FcnJvcih0YWdUb2tlbiwgJ1RBR19SRVNPTFZFX0ZBSUxFRCcsIG1zZykpO1xuICAgIGlmICh0b2tlbi50eXBlID09PSAnYmxvY2stc2VxJykge1xuICAgICAgICBjb25zdCB7IGFuY2hvciwgbmV3bGluZUFmdGVyUHJvcDogbmwgfSA9IHByb3BzO1xuICAgICAgICBjb25zdCBsYXN0UHJvcCA9IGFuY2hvciAmJiB0YWdUb2tlblxuICAgICAgICAgICAgPyBhbmNob3Iub2Zmc2V0ID4gdGFnVG9rZW4ub2Zmc2V0XG4gICAgICAgICAgICAgICAgPyBhbmNob3JcbiAgICAgICAgICAgICAgICA6IHRhZ1Rva2VuXG4gICAgICAgICAgICA6IChhbmNob3IgPz8gdGFnVG9rZW4pO1xuICAgICAgICBpZiAobGFzdFByb3AgJiYgKCFubCB8fCBubC5vZmZzZXQgPCBsYXN0UHJvcC5vZmZzZXQpKSB7XG4gICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gJ01pc3NpbmcgbmV3bGluZSBhZnRlciBibG9jayBzZXF1ZW5jZSBwcm9wcyc7XG4gICAgICAgICAgICBvbkVycm9yKGxhc3RQcm9wLCAnTUlTU0lOR19DSEFSJywgbWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgZXhwVHlwZSA9IHRva2VuLnR5cGUgPT09ICdibG9jay1tYXAnXG4gICAgICAgID8gJ21hcCdcbiAgICAgICAgOiB0b2tlbi50eXBlID09PSAnYmxvY2stc2VxJ1xuICAgICAgICAgICAgPyAnc2VxJ1xuICAgICAgICAgICAgOiB0b2tlbi5zdGFydC5zb3VyY2UgPT09ICd7J1xuICAgICAgICAgICAgICAgID8gJ21hcCdcbiAgICAgICAgICAgICAgICA6ICdzZXEnO1xuICAgIC8vIHNob3J0Y3V0OiBjaGVjayBpZiBpdCdzIGEgZ2VuZXJpYyBZQU1MTWFwIG9yIFlBTUxTZXFcbiAgICAvLyBiZWZvcmUganVtcGluZyBpbnRvIHRoZSBjdXN0b20gdGFnIGxvZ2ljLlxuICAgIGlmICghdGFnVG9rZW4gfHxcbiAgICAgICAgIXRhZ05hbWUgfHxcbiAgICAgICAgdGFnTmFtZSA9PT0gJyEnIHx8XG4gICAgICAgICh0YWdOYW1lID09PSBZQU1MTWFwLnRhZ05hbWUgJiYgZXhwVHlwZSA9PT0gJ21hcCcpIHx8XG4gICAgICAgICh0YWdOYW1lID09PSBZQU1MU2VxLnRhZ05hbWUgJiYgZXhwVHlwZSA9PT0gJ3NlcScpKSB7XG4gICAgICAgIHJldHVybiByZXNvbHZlQ29sbGVjdGlvbihDTiwgY3R4LCB0b2tlbiwgb25FcnJvciwgdGFnTmFtZSk7XG4gICAgfVxuICAgIGxldCB0YWcgPSBjdHguc2NoZW1hLnRhZ3MuZmluZCh0ID0+IHQudGFnID09PSB0YWdOYW1lICYmIHQuY29sbGVjdGlvbiA9PT0gZXhwVHlwZSk7XG4gICAgaWYgKCF0YWcpIHtcbiAgICAgICAgY29uc3Qga3QgPSBjdHguc2NoZW1hLmtub3duVGFnc1t0YWdOYW1lXTtcbiAgICAgICAgaWYgKGt0ICYmIGt0LmNvbGxlY3Rpb24gPT09IGV4cFR5cGUpIHtcbiAgICAgICAgICAgIGN0eC5zY2hlbWEudGFncy5wdXNoKE9iamVjdC5hc3NpZ24oe30sIGt0LCB7IGRlZmF1bHQ6IGZhbHNlIH0pKTtcbiAgICAgICAgICAgIHRhZyA9IGt0O1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKGt0Py5jb2xsZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgb25FcnJvcih0YWdUb2tlbiwgJ0JBRF9DT0xMRUNUSU9OX1RZUEUnLCBgJHtrdC50YWd9IHVzZWQgZm9yICR7ZXhwVHlwZX0gY29sbGVjdGlvbiwgYnV0IGV4cGVjdHMgJHtrdC5jb2xsZWN0aW9ufWAsIHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgb25FcnJvcih0YWdUb2tlbiwgJ1RBR19SRVNPTFZFX0ZBSUxFRCcsIGBVbnJlc29sdmVkIHRhZzogJHt0YWdOYW1lfWAsIHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVDb2xsZWN0aW9uKENOLCBjdHgsIHRva2VuLCBvbkVycm9yLCB0YWdOYW1lKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBjb2xsID0gcmVzb2x2ZUNvbGxlY3Rpb24oQ04sIGN0eCwgdG9rZW4sIG9uRXJyb3IsIHRhZ05hbWUsIHRhZyk7XG4gICAgY29uc3QgcmVzID0gdGFnLnJlc29sdmU/Lihjb2xsLCBtc2cgPT4gb25FcnJvcih0YWdUb2tlbiwgJ1RBR19SRVNPTFZFX0ZBSUxFRCcsIG1zZyksIGN0eC5vcHRpb25zKSA/PyBjb2xsO1xuICAgIGNvbnN0IG5vZGUgPSBpc05vZGUocmVzKVxuICAgICAgICA/IHJlc1xuICAgICAgICA6IG5ldyBTY2FsYXIocmVzKTtcbiAgICBub2RlLnJhbmdlID0gY29sbC5yYW5nZTtcbiAgICBub2RlLnRhZyA9IHRhZ05hbWU7XG4gICAgaWYgKHRhZz8uZm9ybWF0KVxuICAgICAgICBub2RlLmZvcm1hdCA9IHRhZy5mb3JtYXQ7XG4gICAgcmV0dXJuIG5vZGU7XG59XG5cbmV4cG9ydCB7IGNvbXBvc2VDb2xsZWN0aW9uIH07XG4iLCAiaW1wb3J0IHsgU2NhbGFyIH0gZnJvbSAnLi4vbm9kZXMvU2NhbGFyLmpzJztcblxuZnVuY3Rpb24gcmVzb2x2ZUJsb2NrU2NhbGFyKGN0eCwgc2NhbGFyLCBvbkVycm9yKSB7XG4gICAgY29uc3Qgc3RhcnQgPSBzY2FsYXIub2Zmc2V0O1xuICAgIGNvbnN0IGhlYWRlciA9IHBhcnNlQmxvY2tTY2FsYXJIZWFkZXIoc2NhbGFyLCBjdHgub3B0aW9ucy5zdHJpY3QsIG9uRXJyb3IpO1xuICAgIGlmICghaGVhZGVyKVxuICAgICAgICByZXR1cm4geyB2YWx1ZTogJycsIHR5cGU6IG51bGwsIGNvbW1lbnQ6ICcnLCByYW5nZTogW3N0YXJ0LCBzdGFydCwgc3RhcnRdIH07XG4gICAgY29uc3QgdHlwZSA9IGhlYWRlci5tb2RlID09PSAnPicgPyBTY2FsYXIuQkxPQ0tfRk9MREVEIDogU2NhbGFyLkJMT0NLX0xJVEVSQUw7XG4gICAgY29uc3QgbGluZXMgPSBzY2FsYXIuc291cmNlID8gc3BsaXRMaW5lcyhzY2FsYXIuc291cmNlKSA6IFtdO1xuICAgIC8vIGRldGVybWluZSB0aGUgZW5kIG9mIGNvbnRlbnQgJiBzdGFydCBvZiBjaG9tcGluZ1xuICAgIGxldCBjaG9tcFN0YXJ0ID0gbGluZXMubGVuZ3RoO1xuICAgIGZvciAobGV0IGkgPSBsaW5lcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICBjb25zdCBjb250ZW50ID0gbGluZXNbaV1bMV07XG4gICAgICAgIGlmIChjb250ZW50ID09PSAnJyB8fCBjb250ZW50ID09PSAnXFxyJylcbiAgICAgICAgICAgIGNob21wU3RhcnQgPSBpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICBicmVhaztcbiAgICB9XG4gICAgLy8gc2hvcnRjdXQgZm9yIGVtcHR5IGNvbnRlbnRzXG4gICAgaWYgKGNob21wU3RhcnQgPT09IDApIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBoZWFkZXIuY2hvbXAgPT09ICcrJyAmJiBsaW5lcy5sZW5ndGggPiAwXG4gICAgICAgICAgICA/ICdcXG4nLnJlcGVhdChNYXRoLm1heCgxLCBsaW5lcy5sZW5ndGggLSAxKSlcbiAgICAgICAgICAgIDogJyc7XG4gICAgICAgIGxldCBlbmQgPSBzdGFydCArIGhlYWRlci5sZW5ndGg7XG4gICAgICAgIGlmIChzY2FsYXIuc291cmNlKVxuICAgICAgICAgICAgZW5kICs9IHNjYWxhci5zb3VyY2UubGVuZ3RoO1xuICAgICAgICByZXR1cm4geyB2YWx1ZSwgdHlwZSwgY29tbWVudDogaGVhZGVyLmNvbW1lbnQsIHJhbmdlOiBbc3RhcnQsIGVuZCwgZW5kXSB9O1xuICAgIH1cbiAgICAvLyBmaW5kIHRoZSBpbmRlbnRhdGlvbiBsZXZlbCB0byB0cmltIGZyb20gc3RhcnRcbiAgICBsZXQgdHJpbUluZGVudCA9IHNjYWxhci5pbmRlbnQgKyBoZWFkZXIuaW5kZW50O1xuICAgIGxldCBvZmZzZXQgPSBzY2FsYXIub2Zmc2V0ICsgaGVhZGVyLmxlbmd0aDtcbiAgICBsZXQgY29udGVudFN0YXJ0ID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNob21wU3RhcnQ7ICsraSkge1xuICAgICAgICBjb25zdCBbaW5kZW50LCBjb250ZW50XSA9IGxpbmVzW2ldO1xuICAgICAgICBpZiAoY29udGVudCA9PT0gJycgfHwgY29udGVudCA9PT0gJ1xccicpIHtcbiAgICAgICAgICAgIGlmIChoZWFkZXIuaW5kZW50ID09PSAwICYmIGluZGVudC5sZW5ndGggPiB0cmltSW5kZW50KVxuICAgICAgICAgICAgICAgIHRyaW1JbmRlbnQgPSBpbmRlbnQubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKGluZGVudC5sZW5ndGggPCB0cmltSW5kZW50KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9ICdCbG9jayBzY2FsYXJzIHdpdGggbW9yZS1pbmRlbnRlZCBsZWFkaW5nIGVtcHR5IGxpbmVzIG11c3QgdXNlIGFuIGV4cGxpY2l0IGluZGVudGF0aW9uIGluZGljYXRvcic7XG4gICAgICAgICAgICAgICAgb25FcnJvcihvZmZzZXQgKyBpbmRlbnQubGVuZ3RoLCAnTUlTU0lOR19DSEFSJywgbWVzc2FnZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaGVhZGVyLmluZGVudCA9PT0gMClcbiAgICAgICAgICAgICAgICB0cmltSW5kZW50ID0gaW5kZW50Lmxlbmd0aDtcbiAgICAgICAgICAgIGNvbnRlbnRTdGFydCA9IGk7XG4gICAgICAgICAgICBpZiAodHJpbUluZGVudCA9PT0gMCAmJiAhY3R4LmF0Um9vdCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSAnQmxvY2sgc2NhbGFyIHZhbHVlcyBpbiBjb2xsZWN0aW9ucyBtdXN0IGJlIGluZGVudGVkJztcbiAgICAgICAgICAgICAgICBvbkVycm9yKG9mZnNldCwgJ0JBRF9JTkRFTlQnLCBtZXNzYWdlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIG9mZnNldCArPSBpbmRlbnQubGVuZ3RoICsgY29udGVudC5sZW5ndGggKyAxO1xuICAgIH1cbiAgICAvLyBpbmNsdWRlIHRyYWlsaW5nIG1vcmUtaW5kZW50ZWQgZW1wdHkgbGluZXMgaW4gY29udGVudFxuICAgIGZvciAobGV0IGkgPSBsaW5lcy5sZW5ndGggLSAxOyBpID49IGNob21wU3RhcnQ7IC0taSkge1xuICAgICAgICBpZiAobGluZXNbaV1bMF0ubGVuZ3RoID4gdHJpbUluZGVudClcbiAgICAgICAgICAgIGNob21wU3RhcnQgPSBpICsgMTtcbiAgICB9XG4gICAgbGV0IHZhbHVlID0gJyc7XG4gICAgbGV0IHNlcCA9ICcnO1xuICAgIGxldCBwcmV2TW9yZUluZGVudGVkID0gZmFsc2U7XG4gICAgLy8gbGVhZGluZyB3aGl0ZXNwYWNlIGlzIGtlcHQgaW50YWN0XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb250ZW50U3RhcnQ7ICsraSlcbiAgICAgICAgdmFsdWUgKz0gbGluZXNbaV1bMF0uc2xpY2UodHJpbUluZGVudCkgKyAnXFxuJztcbiAgICBmb3IgKGxldCBpID0gY29udGVudFN0YXJ0OyBpIDwgY2hvbXBTdGFydDsgKytpKSB7XG4gICAgICAgIGxldCBbaW5kZW50LCBjb250ZW50XSA9IGxpbmVzW2ldO1xuICAgICAgICBvZmZzZXQgKz0gaW5kZW50Lmxlbmd0aCArIGNvbnRlbnQubGVuZ3RoICsgMTtcbiAgICAgICAgY29uc3QgY3JsZiA9IGNvbnRlbnRbY29udGVudC5sZW5ndGggLSAxXSA9PT0gJ1xccic7XG4gICAgICAgIGlmIChjcmxmKVxuICAgICAgICAgICAgY29udGVudCA9IGNvbnRlbnQuc2xpY2UoMCwgLTEpO1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgYWxyZWFkeSBjYXVnaHQgaW4gbGV4ZXIgKi9cbiAgICAgICAgaWYgKGNvbnRlbnQgJiYgaW5kZW50Lmxlbmd0aCA8IHRyaW1JbmRlbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IHNyYyA9IGhlYWRlci5pbmRlbnRcbiAgICAgICAgICAgICAgICA/ICdleHBsaWNpdCBpbmRlbnRhdGlvbiBpbmRpY2F0b3InXG4gICAgICAgICAgICAgICAgOiAnZmlyc3QgbGluZSc7XG4gICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gYEJsb2NrIHNjYWxhciBsaW5lcyBtdXN0IG5vdCBiZSBsZXNzIGluZGVudGVkIHRoYW4gdGhlaXIgJHtzcmN9YDtcbiAgICAgICAgICAgIG9uRXJyb3Iob2Zmc2V0IC0gY29udGVudC5sZW5ndGggLSAoY3JsZiA/IDIgOiAxKSwgJ0JBRF9JTkRFTlQnLCBtZXNzYWdlKTtcbiAgICAgICAgICAgIGluZGVudCA9ICcnO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlID09PSBTY2FsYXIuQkxPQ0tfTElURVJBTCkge1xuICAgICAgICAgICAgdmFsdWUgKz0gc2VwICsgaW5kZW50LnNsaWNlKHRyaW1JbmRlbnQpICsgY29udGVudDtcbiAgICAgICAgICAgIHNlcCA9ICdcXG4nO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGluZGVudC5sZW5ndGggPiB0cmltSW5kZW50IHx8IGNvbnRlbnRbMF0gPT09ICdcXHQnKSB7XG4gICAgICAgICAgICAvLyBtb3JlLWluZGVudGVkIGNvbnRlbnQgd2l0aGluIGEgZm9sZGVkIGJsb2NrXG4gICAgICAgICAgICBpZiAoc2VwID09PSAnICcpXG4gICAgICAgICAgICAgICAgc2VwID0gJ1xcbic7XG4gICAgICAgICAgICBlbHNlIGlmICghcHJldk1vcmVJbmRlbnRlZCAmJiBzZXAgPT09ICdcXG4nKVxuICAgICAgICAgICAgICAgIHNlcCA9ICdcXG5cXG4nO1xuICAgICAgICAgICAgdmFsdWUgKz0gc2VwICsgaW5kZW50LnNsaWNlKHRyaW1JbmRlbnQpICsgY29udGVudDtcbiAgICAgICAgICAgIHNlcCA9ICdcXG4nO1xuICAgICAgICAgICAgcHJldk1vcmVJbmRlbnRlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoY29udGVudCA9PT0gJycpIHtcbiAgICAgICAgICAgIC8vIGVtcHR5IGxpbmVcbiAgICAgICAgICAgIGlmIChzZXAgPT09ICdcXG4nKVxuICAgICAgICAgICAgICAgIHZhbHVlICs9ICdcXG4nO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHNlcCA9ICdcXG4nO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdmFsdWUgKz0gc2VwICsgY29udGVudDtcbiAgICAgICAgICAgIHNlcCA9ICcgJztcbiAgICAgICAgICAgIHByZXZNb3JlSW5kZW50ZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBzd2l0Y2ggKGhlYWRlci5jaG9tcCkge1xuICAgICAgICBjYXNlICctJzpcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICcrJzpcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSBjaG9tcFN0YXJ0OyBpIDwgbGluZXMubGVuZ3RoOyArK2kpXG4gICAgICAgICAgICAgICAgdmFsdWUgKz0gJ1xcbicgKyBsaW5lc1tpXVswXS5zbGljZSh0cmltSW5kZW50KTtcbiAgICAgICAgICAgIGlmICh2YWx1ZVt2YWx1ZS5sZW5ndGggLSAxXSAhPT0gJ1xcbicpXG4gICAgICAgICAgICAgICAgdmFsdWUgKz0gJ1xcbic7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHZhbHVlICs9ICdcXG4nO1xuICAgIH1cbiAgICBjb25zdCBlbmQgPSBzdGFydCArIGhlYWRlci5sZW5ndGggKyBzY2FsYXIuc291cmNlLmxlbmd0aDtcbiAgICByZXR1cm4geyB2YWx1ZSwgdHlwZSwgY29tbWVudDogaGVhZGVyLmNvbW1lbnQsIHJhbmdlOiBbc3RhcnQsIGVuZCwgZW5kXSB9O1xufVxuZnVuY3Rpb24gcGFyc2VCbG9ja1NjYWxhckhlYWRlcih7IG9mZnNldCwgcHJvcHMgfSwgc3RyaWN0LCBvbkVycm9yKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmIHNob3VsZCBub3QgaGFwcGVuICovXG4gICAgaWYgKHByb3BzWzBdLnR5cGUgIT09ICdibG9jay1zY2FsYXItaGVhZGVyJykge1xuICAgICAgICBvbkVycm9yKHByb3BzWzBdLCAnSU1QT1NTSUJMRScsICdCbG9jayBzY2FsYXIgaGVhZGVyIG5vdCBmb3VuZCcpO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgeyBzb3VyY2UgfSA9IHByb3BzWzBdO1xuICAgIGNvbnN0IG1vZGUgPSBzb3VyY2VbMF07XG4gICAgbGV0IGluZGVudCA9IDA7XG4gICAgbGV0IGNob21wID0gJyc7XG4gICAgbGV0IGVycm9yID0gLTE7XG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPCBzb3VyY2UubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgY29uc3QgY2ggPSBzb3VyY2VbaV07XG4gICAgICAgIGlmICghY2hvbXAgJiYgKGNoID09PSAnLScgfHwgY2ggPT09ICcrJykpXG4gICAgICAgICAgICBjaG9tcCA9IGNoO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IG4gPSBOdW1iZXIoY2gpO1xuICAgICAgICAgICAgaWYgKCFpbmRlbnQgJiYgbilcbiAgICAgICAgICAgICAgICBpbmRlbnQgPSBuO1xuICAgICAgICAgICAgZWxzZSBpZiAoZXJyb3IgPT09IC0xKVxuICAgICAgICAgICAgICAgIGVycm9yID0gb2Zmc2V0ICsgaTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoZXJyb3IgIT09IC0xKVxuICAgICAgICBvbkVycm9yKGVycm9yLCAnVU5FWFBFQ1RFRF9UT0tFTicsIGBCbG9jayBzY2FsYXIgaGVhZGVyIGluY2x1ZGVzIGV4dHJhIGNoYXJhY3RlcnM6ICR7c291cmNlfWApO1xuICAgIGxldCBoYXNTcGFjZSA9IGZhbHNlO1xuICAgIGxldCBjb21tZW50ID0gJyc7XG4gICAgbGV0IGxlbmd0aCA9IHNvdXJjZS5sZW5ndGg7XG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPCBwcm9wcy5sZW5ndGg7ICsraSkge1xuICAgICAgICBjb25zdCB0b2tlbiA9IHByb3BzW2ldO1xuICAgICAgICBzd2l0Y2ggKHRva2VuLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ3NwYWNlJzpcbiAgICAgICAgICAgICAgICBoYXNTcGFjZSA9IHRydWU7XG4gICAgICAgICAgICAvLyBmYWxsdGhyb3VnaFxuICAgICAgICAgICAgY2FzZSAnbmV3bGluZSc6XG4gICAgICAgICAgICAgICAgbGVuZ3RoICs9IHRva2VuLnNvdXJjZS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdjb21tZW50JzpcbiAgICAgICAgICAgICAgICBpZiAoc3RyaWN0ICYmICFoYXNTcGFjZSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gJ0NvbW1lbnRzIG11c3QgYmUgc2VwYXJhdGVkIGZyb20gb3RoZXIgdG9rZW5zIGJ5IHdoaXRlIHNwYWNlIGNoYXJhY3RlcnMnO1xuICAgICAgICAgICAgICAgICAgICBvbkVycm9yKHRva2VuLCAnTUlTU0lOR19DSEFSJywgbWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxlbmd0aCArPSB0b2tlbi5zb3VyY2UubGVuZ3RoO1xuICAgICAgICAgICAgICAgIGNvbW1lbnQgPSB0b2tlbi5zb3VyY2Uuc3Vic3RyaW5nKDEpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZXJyb3InOlxuICAgICAgICAgICAgICAgIG9uRXJyb3IodG9rZW4sICdVTkVYUEVDVEVEX1RPS0VOJywgdG9rZW4ubWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgbGVuZ3RoICs9IHRva2VuLnNvdXJjZS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCBzaG91bGQgbm90IGhhcHBlbiAqL1xuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgVW5leHBlY3RlZCB0b2tlbiBpbiBibG9jayBzY2FsYXIgaGVhZGVyOiAke3Rva2VuLnR5cGV9YDtcbiAgICAgICAgICAgICAgICBvbkVycm9yKHRva2VuLCAnVU5FWFBFQ1RFRF9UT0tFTicsIG1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRzID0gdG9rZW4uc291cmNlO1xuICAgICAgICAgICAgICAgIGlmICh0cyAmJiB0eXBlb2YgdHMgPT09ICdzdHJpbmcnKVxuICAgICAgICAgICAgICAgICAgICBsZW5ndGggKz0gdHMubGVuZ3RoO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7IG1vZGUsIGluZGVudCwgY2hvbXAsIGNvbW1lbnQsIGxlbmd0aCB9O1xufVxuLyoqIEByZXR1cm5zIEFycmF5IG9mIGxpbmVzIHNwbGl0IHVwIGFzIGBbaW5kZW50LCBjb250ZW50XWAgKi9cbmZ1bmN0aW9uIHNwbGl0TGluZXMoc291cmNlKSB7XG4gICAgY29uc3Qgc3BsaXQgPSBzb3VyY2Uuc3BsaXQoL1xcbiggKikvKTtcbiAgICBjb25zdCBmaXJzdCA9IHNwbGl0WzBdO1xuICAgIGNvbnN0IG0gPSBmaXJzdC5tYXRjaCgvXiggKikvKTtcbiAgICBjb25zdCBsaW5lMCA9IG0/LlsxXVxuICAgICAgICA/IFttWzFdLCBmaXJzdC5zbGljZShtWzFdLmxlbmd0aCldXG4gICAgICAgIDogWycnLCBmaXJzdF07XG4gICAgY29uc3QgbGluZXMgPSBbbGluZTBdO1xuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgc3BsaXQubGVuZ3RoOyBpICs9IDIpXG4gICAgICAgIGxpbmVzLnB1c2goW3NwbGl0W2ldLCBzcGxpdFtpICsgMV1dKTtcbiAgICByZXR1cm4gbGluZXM7XG59XG5cbmV4cG9ydCB7IHJlc29sdmVCbG9ja1NjYWxhciB9O1xuIiwgImltcG9ydCB7IFNjYWxhciB9IGZyb20gJy4uL25vZGVzL1NjYWxhci5qcyc7XG5pbXBvcnQgeyByZXNvbHZlRW5kIH0gZnJvbSAnLi9yZXNvbHZlLWVuZC5qcyc7XG5cbmZ1bmN0aW9uIHJlc29sdmVGbG93U2NhbGFyKHNjYWxhciwgc3RyaWN0LCBvbkVycm9yKSB7XG4gICAgY29uc3QgeyBvZmZzZXQsIHR5cGUsIHNvdXJjZSwgZW5kIH0gPSBzY2FsYXI7XG4gICAgbGV0IF90eXBlO1xuICAgIGxldCB2YWx1ZTtcbiAgICBjb25zdCBfb25FcnJvciA9IChyZWwsIGNvZGUsIG1zZykgPT4gb25FcnJvcihvZmZzZXQgKyByZWwsIGNvZGUsIG1zZyk7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgIGNhc2UgJ3NjYWxhcic6XG4gICAgICAgICAgICBfdHlwZSA9IFNjYWxhci5QTEFJTjtcbiAgICAgICAgICAgIHZhbHVlID0gcGxhaW5WYWx1ZShzb3VyY2UsIF9vbkVycm9yKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdzaW5nbGUtcXVvdGVkLXNjYWxhcic6XG4gICAgICAgICAgICBfdHlwZSA9IFNjYWxhci5RVU9URV9TSU5HTEU7XG4gICAgICAgICAgICB2YWx1ZSA9IHNpbmdsZVF1b3RlZFZhbHVlKHNvdXJjZSwgX29uRXJyb3IpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2RvdWJsZS1xdW90ZWQtc2NhbGFyJzpcbiAgICAgICAgICAgIF90eXBlID0gU2NhbGFyLlFVT1RFX0RPVUJMRTtcbiAgICAgICAgICAgIHZhbHVlID0gZG91YmxlUXVvdGVkVmFsdWUoc291cmNlLCBfb25FcnJvcik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgc2hvdWxkIG5vdCBoYXBwZW4gKi9cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIG9uRXJyb3Ioc2NhbGFyLCAnVU5FWFBFQ1RFRF9UT0tFTicsIGBFeHBlY3RlZCBhIGZsb3cgc2NhbGFyIHZhbHVlLCBidXQgZm91bmQ6ICR7dHlwZX1gKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIHR5cGU6IG51bGwsXG4gICAgICAgICAgICAgICAgY29tbWVudDogJycsXG4gICAgICAgICAgICAgICAgcmFuZ2U6IFtvZmZzZXQsIG9mZnNldCArIHNvdXJjZS5sZW5ndGgsIG9mZnNldCArIHNvdXJjZS5sZW5ndGhdXG4gICAgICAgICAgICB9O1xuICAgIH1cbiAgICBjb25zdCB2YWx1ZUVuZCA9IG9mZnNldCArIHNvdXJjZS5sZW5ndGg7XG4gICAgY29uc3QgcmUgPSByZXNvbHZlRW5kKGVuZCwgdmFsdWVFbmQsIHN0cmljdCwgb25FcnJvcik7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIHR5cGU6IF90eXBlLFxuICAgICAgICBjb21tZW50OiByZS5jb21tZW50LFxuICAgICAgICByYW5nZTogW29mZnNldCwgdmFsdWVFbmQsIHJlLm9mZnNldF1cbiAgICB9O1xufVxuZnVuY3Rpb24gcGxhaW5WYWx1ZShzb3VyY2UsIG9uRXJyb3IpIHtcbiAgICBsZXQgYmFkQ2hhciA9ICcnO1xuICAgIHN3aXRjaCAoc291cmNlWzBdKSB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0IHNob3VsZCBub3QgaGFwcGVuICovXG4gICAgICAgIGNhc2UgJ1xcdCc6XG4gICAgICAgICAgICBiYWRDaGFyID0gJ2EgdGFiIGNoYXJhY3Rlcic7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnLCc6XG4gICAgICAgICAgICBiYWRDaGFyID0gJ2Zsb3cgaW5kaWNhdG9yIGNoYXJhY3RlciAsJztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICclJzpcbiAgICAgICAgICAgIGJhZENoYXIgPSAnZGlyZWN0aXZlIGluZGljYXRvciBjaGFyYWN0ZXIgJSc7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnfCc6XG4gICAgICAgIGNhc2UgJz4nOiB7XG4gICAgICAgICAgICBiYWRDaGFyID0gYGJsb2NrIHNjYWxhciBpbmRpY2F0b3IgJHtzb3VyY2VbMF19YDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ0AnOlxuICAgICAgICBjYXNlICdgJzoge1xuICAgICAgICAgICAgYmFkQ2hhciA9IGByZXNlcnZlZCBjaGFyYWN0ZXIgJHtzb3VyY2VbMF19YDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChiYWRDaGFyKVxuICAgICAgICBvbkVycm9yKDAsICdCQURfU0NBTEFSX1NUQVJUJywgYFBsYWluIHZhbHVlIGNhbm5vdCBzdGFydCB3aXRoICR7YmFkQ2hhcn1gKTtcbiAgICByZXR1cm4gZm9sZExpbmVzKHNvdXJjZSk7XG59XG5mdW5jdGlvbiBzaW5nbGVRdW90ZWRWYWx1ZShzb3VyY2UsIG9uRXJyb3IpIHtcbiAgICBpZiAoc291cmNlW3NvdXJjZS5sZW5ndGggLSAxXSAhPT0gXCInXCIgfHwgc291cmNlLmxlbmd0aCA9PT0gMSlcbiAgICAgICAgb25FcnJvcihzb3VyY2UubGVuZ3RoLCAnTUlTU0lOR19DSEFSJywgXCJNaXNzaW5nIGNsb3NpbmcgJ3F1b3RlXCIpO1xuICAgIHJldHVybiBmb2xkTGluZXMoc291cmNlLnNsaWNlKDEsIC0xKSkucmVwbGFjZSgvJycvZywgXCInXCIpO1xufVxuZnVuY3Rpb24gZm9sZExpbmVzKHNvdXJjZSkge1xuICAgIC8qKlxuICAgICAqIFRoZSBuZWdhdGl2ZSBsb29rYmVoaW5kIGhlcmUgYW5kIGluIHRoZSBgcmVgIFJlZ0V4cCBpcyB0b1xuICAgICAqIHByZXZlbnQgY2F1c2luZyBhIHBvbHlub21pYWwgc2VhcmNoIHRpbWUgaW4gY2VydGFpbiBjYXNlcy5cbiAgICAgKlxuICAgICAqIFRoZSB0cnktY2F0Y2ggaXMgZm9yIFNhZmFyaSwgd2hpY2ggZG9lc24ndCBzdXBwb3J0IHRoaXMgeWV0OlxuICAgICAqIGh0dHBzOi8vY2FuaXVzZS5jb20vanMtcmVnZXhwLWxvb2tiZWhpbmRcbiAgICAgKi9cbiAgICBsZXQgZmlyc3QsIGxpbmU7XG4gICAgdHJ5IHtcbiAgICAgICAgZmlyc3QgPSBuZXcgUmVnRXhwKCcoLio/KSg/PCFbIFxcdF0pWyBcXHRdKlxccj9cXG4nLCAnc3knKTtcbiAgICAgICAgbGluZSA9IG5ldyBSZWdFeHAoJ1sgXFx0XSooLio/KSg/Oig/PCFbIFxcdF0pWyBcXHRdKik/XFxyP1xcbicsICdzeScpO1xuICAgIH1cbiAgICBjYXRjaCB7XG4gICAgICAgIGZpcnN0ID0gLyguKj8pWyBcXHRdKlxccj9cXG4vc3k7XG4gICAgICAgIGxpbmUgPSAvWyBcXHRdKiguKj8pWyBcXHRdKlxccj9cXG4vc3k7XG4gICAgfVxuICAgIGxldCBtYXRjaCA9IGZpcnN0LmV4ZWMoc291cmNlKTtcbiAgICBpZiAoIW1hdGNoKVxuICAgICAgICByZXR1cm4gc291cmNlO1xuICAgIGxldCByZXMgPSBtYXRjaFsxXTtcbiAgICBsZXQgc2VwID0gJyAnO1xuICAgIGxldCBwb3MgPSBmaXJzdC5sYXN0SW5kZXg7XG4gICAgbGluZS5sYXN0SW5kZXggPSBwb3M7XG4gICAgd2hpbGUgKChtYXRjaCA9IGxpbmUuZXhlYyhzb3VyY2UpKSkge1xuICAgICAgICBpZiAobWF0Y2hbMV0gPT09ICcnKSB7XG4gICAgICAgICAgICBpZiAoc2VwID09PSAnXFxuJylcbiAgICAgICAgICAgICAgICByZXMgKz0gc2VwO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHNlcCA9ICdcXG4nO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmVzICs9IHNlcCArIG1hdGNoWzFdO1xuICAgICAgICAgICAgc2VwID0gJyAnO1xuICAgICAgICB9XG4gICAgICAgIHBvcyA9IGxpbmUubGFzdEluZGV4O1xuICAgIH1cbiAgICBjb25zdCBsYXN0ID0gL1sgXFx0XSooLiopL3N5O1xuICAgIGxhc3QubGFzdEluZGV4ID0gcG9zO1xuICAgIG1hdGNoID0gbGFzdC5leGVjKHNvdXJjZSk7XG4gICAgcmV0dXJuIHJlcyArIHNlcCArIChtYXRjaD8uWzFdID8/ICcnKTtcbn1cbmZ1bmN0aW9uIGRvdWJsZVF1b3RlZFZhbHVlKHNvdXJjZSwgb25FcnJvcikge1xuICAgIGxldCByZXMgPSAnJztcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8IHNvdXJjZS5sZW5ndGggLSAxOyArK2kpIHtcbiAgICAgICAgY29uc3QgY2ggPSBzb3VyY2VbaV07XG4gICAgICAgIGlmIChjaCA9PT0gJ1xccicgJiYgc291cmNlW2kgKyAxXSA9PT0gJ1xcbicpXG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgaWYgKGNoID09PSAnXFxuJykge1xuICAgICAgICAgICAgY29uc3QgeyBmb2xkLCBvZmZzZXQgfSA9IGZvbGROZXdsaW5lKHNvdXJjZSwgaSk7XG4gICAgICAgICAgICByZXMgKz0gZm9sZDtcbiAgICAgICAgICAgIGkgPSBvZmZzZXQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoY2ggPT09ICdcXFxcJykge1xuICAgICAgICAgICAgbGV0IG5leHQgPSBzb3VyY2VbKytpXTtcbiAgICAgICAgICAgIGNvbnN0IGNjID0gZXNjYXBlQ29kZXNbbmV4dF07XG4gICAgICAgICAgICBpZiAoY2MpXG4gICAgICAgICAgICAgICAgcmVzICs9IGNjO1xuICAgICAgICAgICAgZWxzZSBpZiAobmV4dCA9PT0gJ1xcbicpIHtcbiAgICAgICAgICAgICAgICAvLyBza2lwIGVzY2FwZWQgbmV3bGluZXMsIGJ1dCBzdGlsbCB0cmltIHRoZSBmb2xsb3dpbmcgbGluZVxuICAgICAgICAgICAgICAgIG5leHQgPSBzb3VyY2VbaSArIDFdO1xuICAgICAgICAgICAgICAgIHdoaWxlIChuZXh0ID09PSAnICcgfHwgbmV4dCA9PT0gJ1xcdCcpXG4gICAgICAgICAgICAgICAgICAgIG5leHQgPSBzb3VyY2VbKytpICsgMV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChuZXh0ID09PSAnXFxyJyAmJiBzb3VyY2VbaSArIDFdID09PSAnXFxuJykge1xuICAgICAgICAgICAgICAgIC8vIHNraXAgZXNjYXBlZCBDUkxGIG5ld2xpbmVzLCBidXQgc3RpbGwgdHJpbSB0aGUgZm9sbG93aW5nIGxpbmVcbiAgICAgICAgICAgICAgICBuZXh0ID0gc291cmNlWysraSArIDFdO1xuICAgICAgICAgICAgICAgIHdoaWxlIChuZXh0ID09PSAnICcgfHwgbmV4dCA9PT0gJ1xcdCcpXG4gICAgICAgICAgICAgICAgICAgIG5leHQgPSBzb3VyY2VbKytpICsgMV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChuZXh0ID09PSAneCcgfHwgbmV4dCA9PT0gJ3UnIHx8IG5leHQgPT09ICdVJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxlbmd0aCA9IHsgeDogMiwgdTogNCwgVTogOCB9W25leHRdO1xuICAgICAgICAgICAgICAgIHJlcyArPSBwYXJzZUNoYXJDb2RlKHNvdXJjZSwgaSArIDEsIGxlbmd0aCwgb25FcnJvcik7XG4gICAgICAgICAgICAgICAgaSArPSBsZW5ndGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCByYXcgPSBzb3VyY2Uuc3Vic3RyKGkgLSAxLCAyKTtcbiAgICAgICAgICAgICAgICBvbkVycm9yKGkgLSAxLCAnQkFEX0RRX0VTQ0FQRScsIGBJbnZhbGlkIGVzY2FwZSBzZXF1ZW5jZSAke3Jhd31gKTtcbiAgICAgICAgICAgICAgICByZXMgKz0gcmF3O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGNoID09PSAnICcgfHwgY2ggPT09ICdcXHQnKSB7XG4gICAgICAgICAgICAvLyB0cmltIHRyYWlsaW5nIHdoaXRlc3BhY2VcbiAgICAgICAgICAgIGNvbnN0IHdzU3RhcnQgPSBpO1xuICAgICAgICAgICAgbGV0IG5leHQgPSBzb3VyY2VbaSArIDFdO1xuICAgICAgICAgICAgd2hpbGUgKG5leHQgPT09ICcgJyB8fCBuZXh0ID09PSAnXFx0JylcbiAgICAgICAgICAgICAgICBuZXh0ID0gc291cmNlWysraSArIDFdO1xuICAgICAgICAgICAgaWYgKG5leHQgIT09ICdcXG4nICYmICEobmV4dCA9PT0gJ1xccicgJiYgc291cmNlW2kgKyAyXSA9PT0gJ1xcbicpKVxuICAgICAgICAgICAgICAgIHJlcyArPSBpID4gd3NTdGFydCA/IHNvdXJjZS5zbGljZSh3c1N0YXJ0LCBpICsgMSkgOiBjaDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJlcyArPSBjaDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoc291cmNlW3NvdXJjZS5sZW5ndGggLSAxXSAhPT0gJ1wiJyB8fCBzb3VyY2UubGVuZ3RoID09PSAxKVxuICAgICAgICBvbkVycm9yKHNvdXJjZS5sZW5ndGgsICdNSVNTSU5HX0NIQVInLCAnTWlzc2luZyBjbG9zaW5nIFwicXVvdGUnKTtcbiAgICByZXR1cm4gcmVzO1xufVxuLyoqXG4gKiBGb2xkIGEgc2luZ2xlIG5ld2xpbmUgaW50byBhIHNwYWNlLCBtdWx0aXBsZSBuZXdsaW5lcyB0byBOIC0gMSBuZXdsaW5lcy5cbiAqIFByZXN1bWVzIGBzb3VyY2Vbb2Zmc2V0XSA9PT0gJ1xcbidgXG4gKi9cbmZ1bmN0aW9uIGZvbGROZXdsaW5lKHNvdXJjZSwgb2Zmc2V0KSB7XG4gICAgbGV0IGZvbGQgPSAnJztcbiAgICBsZXQgY2ggPSBzb3VyY2Vbb2Zmc2V0ICsgMV07XG4gICAgd2hpbGUgKGNoID09PSAnICcgfHwgY2ggPT09ICdcXHQnIHx8IGNoID09PSAnXFxuJyB8fCBjaCA9PT0gJ1xccicpIHtcbiAgICAgICAgaWYgKGNoID09PSAnXFxyJyAmJiBzb3VyY2Vbb2Zmc2V0ICsgMl0gIT09ICdcXG4nKVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGlmIChjaCA9PT0gJ1xcbicpXG4gICAgICAgICAgICBmb2xkICs9ICdcXG4nO1xuICAgICAgICBvZmZzZXQgKz0gMTtcbiAgICAgICAgY2ggPSBzb3VyY2Vbb2Zmc2V0ICsgMV07XG4gICAgfVxuICAgIGlmICghZm9sZClcbiAgICAgICAgZm9sZCA9ICcgJztcbiAgICByZXR1cm4geyBmb2xkLCBvZmZzZXQgfTtcbn1cbmNvbnN0IGVzY2FwZUNvZGVzID0ge1xuICAgICcwJzogJ1xcMCcsIC8vIG51bGwgY2hhcmFjdGVyXG4gICAgYTogJ1xceDA3JywgLy8gYmVsbCBjaGFyYWN0ZXJcbiAgICBiOiAnXFxiJywgLy8gYmFja3NwYWNlXG4gICAgZTogJ1xceDFiJywgLy8gZXNjYXBlIGNoYXJhY3RlclxuICAgIGY6ICdcXGYnLCAvLyBmb3JtIGZlZWRcbiAgICBuOiAnXFxuJywgLy8gbGluZSBmZWVkXG4gICAgcjogJ1xccicsIC8vIGNhcnJpYWdlIHJldHVyblxuICAgIHQ6ICdcXHQnLCAvLyBob3Jpem9udGFsIHRhYlxuICAgIHY6ICdcXHYnLCAvLyB2ZXJ0aWNhbCB0YWJcbiAgICBOOiAnXFx1MDA4NScsIC8vIFVuaWNvZGUgbmV4dCBsaW5lXG4gICAgXzogJ1xcdTAwYTAnLCAvLyBVbmljb2RlIG5vbi1icmVha2luZyBzcGFjZVxuICAgIEw6ICdcXHUyMDI4JywgLy8gVW5pY29kZSBsaW5lIHNlcGFyYXRvclxuICAgIFA6ICdcXHUyMDI5JywgLy8gVW5pY29kZSBwYXJhZ3JhcGggc2VwYXJhdG9yXG4gICAgJyAnOiAnICcsXG4gICAgJ1wiJzogJ1wiJyxcbiAgICAnLyc6ICcvJyxcbiAgICAnXFxcXCc6ICdcXFxcJyxcbiAgICAnXFx0JzogJ1xcdCdcbn07XG5mdW5jdGlvbiBwYXJzZUNoYXJDb2RlKHNvdXJjZSwgb2Zmc2V0LCBsZW5ndGgsIG9uRXJyb3IpIHtcbiAgICBjb25zdCBjYyA9IHNvdXJjZS5zdWJzdHIob2Zmc2V0LCBsZW5ndGgpO1xuICAgIGNvbnN0IG9rID0gY2MubGVuZ3RoID09PSBsZW5ndGggJiYgL15bMC05YS1mQS1GXSskLy50ZXN0KGNjKTtcbiAgICBjb25zdCBjb2RlID0gb2sgPyBwYXJzZUludChjYywgMTYpIDogTmFOO1xuICAgIGlmIChpc05hTihjb2RlKSkge1xuICAgICAgICBjb25zdCByYXcgPSBzb3VyY2Uuc3Vic3RyKG9mZnNldCAtIDIsIGxlbmd0aCArIDIpO1xuICAgICAgICBvbkVycm9yKG9mZnNldCAtIDIsICdCQURfRFFfRVNDQVBFJywgYEludmFsaWQgZXNjYXBlIHNlcXVlbmNlICR7cmF3fWApO1xuICAgICAgICByZXR1cm4gcmF3O1xuICAgIH1cbiAgICByZXR1cm4gU3RyaW5nLmZyb21Db2RlUG9pbnQoY29kZSk7XG59XG5cbmV4cG9ydCB7IHJlc29sdmVGbG93U2NhbGFyIH07XG4iLCAiaW1wb3J0IHsgaXNTY2FsYXIsIFNDQUxBUiB9IGZyb20gJy4uL25vZGVzL2lkZW50aXR5LmpzJztcbmltcG9ydCB7IFNjYWxhciB9IGZyb20gJy4uL25vZGVzL1NjYWxhci5qcyc7XG5pbXBvcnQgeyByZXNvbHZlQmxvY2tTY2FsYXIgfSBmcm9tICcuL3Jlc29sdmUtYmxvY2stc2NhbGFyLmpzJztcbmltcG9ydCB7IHJlc29sdmVGbG93U2NhbGFyIH0gZnJvbSAnLi9yZXNvbHZlLWZsb3ctc2NhbGFyLmpzJztcblxuZnVuY3Rpb24gY29tcG9zZVNjYWxhcihjdHgsIHRva2VuLCB0YWdUb2tlbiwgb25FcnJvcikge1xuICAgIGNvbnN0IHsgdmFsdWUsIHR5cGUsIGNvbW1lbnQsIHJhbmdlIH0gPSB0b2tlbi50eXBlID09PSAnYmxvY2stc2NhbGFyJ1xuICAgICAgICA/IHJlc29sdmVCbG9ja1NjYWxhcihjdHgsIHRva2VuLCBvbkVycm9yKVxuICAgICAgICA6IHJlc29sdmVGbG93U2NhbGFyKHRva2VuLCBjdHgub3B0aW9ucy5zdHJpY3QsIG9uRXJyb3IpO1xuICAgIGNvbnN0IHRhZ05hbWUgPSB0YWdUb2tlblxuICAgICAgICA/IGN0eC5kaXJlY3RpdmVzLnRhZ05hbWUodGFnVG9rZW4uc291cmNlLCBtc2cgPT4gb25FcnJvcih0YWdUb2tlbiwgJ1RBR19SRVNPTFZFX0ZBSUxFRCcsIG1zZykpXG4gICAgICAgIDogbnVsbDtcbiAgICBsZXQgdGFnO1xuICAgIGlmIChjdHgub3B0aW9ucy5zdHJpbmdLZXlzICYmIGN0eC5hdEtleSkge1xuICAgICAgICB0YWcgPSBjdHguc2NoZW1hW1NDQUxBUl07XG4gICAgfVxuICAgIGVsc2UgaWYgKHRhZ05hbWUpXG4gICAgICAgIHRhZyA9IGZpbmRTY2FsYXJUYWdCeU5hbWUoY3R4LnNjaGVtYSwgdmFsdWUsIHRhZ05hbWUsIHRhZ1Rva2VuLCBvbkVycm9yKTtcbiAgICBlbHNlIGlmICh0b2tlbi50eXBlID09PSAnc2NhbGFyJylcbiAgICAgICAgdGFnID0gZmluZFNjYWxhclRhZ0J5VGVzdChjdHgsIHZhbHVlLCB0b2tlbiwgb25FcnJvcik7XG4gICAgZWxzZVxuICAgICAgICB0YWcgPSBjdHguc2NoZW1hW1NDQUxBUl07XG4gICAgbGV0IHNjYWxhcjtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCByZXMgPSB0YWcucmVzb2x2ZSh2YWx1ZSwgbXNnID0+IG9uRXJyb3IodGFnVG9rZW4gPz8gdG9rZW4sICdUQUdfUkVTT0xWRV9GQUlMRUQnLCBtc2cpLCBjdHgub3B0aW9ucyk7XG4gICAgICAgIHNjYWxhciA9IGlzU2NhbGFyKHJlcykgPyByZXMgOiBuZXcgU2NhbGFyKHJlcyk7XG4gICAgfVxuICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zdCBtc2cgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcik7XG4gICAgICAgIG9uRXJyb3IodGFnVG9rZW4gPz8gdG9rZW4sICdUQUdfUkVTT0xWRV9GQUlMRUQnLCBtc2cpO1xuICAgICAgICBzY2FsYXIgPSBuZXcgU2NhbGFyKHZhbHVlKTtcbiAgICB9XG4gICAgc2NhbGFyLnJhbmdlID0gcmFuZ2U7XG4gICAgc2NhbGFyLnNvdXJjZSA9IHZhbHVlO1xuICAgIGlmICh0eXBlKVxuICAgICAgICBzY2FsYXIudHlwZSA9IHR5cGU7XG4gICAgaWYgKHRhZ05hbWUpXG4gICAgICAgIHNjYWxhci50YWcgPSB0YWdOYW1lO1xuICAgIGlmICh0YWcuZm9ybWF0KVxuICAgICAgICBzY2FsYXIuZm9ybWF0ID0gdGFnLmZvcm1hdDtcbiAgICBpZiAoY29tbWVudClcbiAgICAgICAgc2NhbGFyLmNvbW1lbnQgPSBjb21tZW50O1xuICAgIHJldHVybiBzY2FsYXI7XG59XG5mdW5jdGlvbiBmaW5kU2NhbGFyVGFnQnlOYW1lKHNjaGVtYSwgdmFsdWUsIHRhZ05hbWUsIHRhZ1Rva2VuLCBvbkVycm9yKSB7XG4gICAgaWYgKHRhZ05hbWUgPT09ICchJylcbiAgICAgICAgcmV0dXJuIHNjaGVtYVtTQ0FMQVJdOyAvLyBub24tc3BlY2lmaWMgdGFnXG4gICAgY29uc3QgbWF0Y2hXaXRoVGVzdCA9IFtdO1xuICAgIGZvciAoY29uc3QgdGFnIG9mIHNjaGVtYS50YWdzKSB7XG4gICAgICAgIGlmICghdGFnLmNvbGxlY3Rpb24gJiYgdGFnLnRhZyA9PT0gdGFnTmFtZSkge1xuICAgICAgICAgICAgaWYgKHRhZy5kZWZhdWx0ICYmIHRhZy50ZXN0KVxuICAgICAgICAgICAgICAgIG1hdGNoV2l0aFRlc3QucHVzaCh0YWcpO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHJldHVybiB0YWc7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZm9yIChjb25zdCB0YWcgb2YgbWF0Y2hXaXRoVGVzdClcbiAgICAgICAgaWYgKHRhZy50ZXN0Py50ZXN0KHZhbHVlKSlcbiAgICAgICAgICAgIHJldHVybiB0YWc7XG4gICAgY29uc3Qga3QgPSBzY2hlbWEua25vd25UYWdzW3RhZ05hbWVdO1xuICAgIGlmIChrdCAmJiAha3QuY29sbGVjdGlvbikge1xuICAgICAgICAvLyBFbnN1cmUgdGhhdCB0aGUga25vd24gdGFnIGlzIGF2YWlsYWJsZSBmb3Igc3RyaW5naWZ5aW5nLFxuICAgICAgICAvLyBidXQgZG9lcyBub3QgZ2V0IHVzZWQgYnkgZGVmYXVsdC5cbiAgICAgICAgc2NoZW1hLnRhZ3MucHVzaChPYmplY3QuYXNzaWduKHt9LCBrdCwgeyBkZWZhdWx0OiBmYWxzZSwgdGVzdDogdW5kZWZpbmVkIH0pKTtcbiAgICAgICAgcmV0dXJuIGt0O1xuICAgIH1cbiAgICBvbkVycm9yKHRhZ1Rva2VuLCAnVEFHX1JFU09MVkVfRkFJTEVEJywgYFVucmVzb2x2ZWQgdGFnOiAke3RhZ05hbWV9YCwgdGFnTmFtZSAhPT0gJ3RhZzp5YW1sLm9yZywyMDAyOnN0cicpO1xuICAgIHJldHVybiBzY2hlbWFbU0NBTEFSXTtcbn1cbmZ1bmN0aW9uIGZpbmRTY2FsYXJUYWdCeVRlc3QoeyBhdEtleSwgZGlyZWN0aXZlcywgc2NoZW1hIH0sIHZhbHVlLCB0b2tlbiwgb25FcnJvcikge1xuICAgIGNvbnN0IHRhZyA9IHNjaGVtYS50YWdzLmZpbmQodGFnID0+ICh0YWcuZGVmYXVsdCA9PT0gdHJ1ZSB8fCAoYXRLZXkgJiYgdGFnLmRlZmF1bHQgPT09ICdrZXknKSkgJiZcbiAgICAgICAgdGFnLnRlc3Q/LnRlc3QodmFsdWUpKSB8fCBzY2hlbWFbU0NBTEFSXTtcbiAgICBpZiAoc2NoZW1hLmNvbXBhdCkge1xuICAgICAgICBjb25zdCBjb21wYXQgPSBzY2hlbWEuY29tcGF0LmZpbmQodGFnID0+IHRhZy5kZWZhdWx0ICYmIHRhZy50ZXN0Py50ZXN0KHZhbHVlKSkgPz9cbiAgICAgICAgICAgIHNjaGVtYVtTQ0FMQVJdO1xuICAgICAgICBpZiAodGFnLnRhZyAhPT0gY29tcGF0LnRhZykge1xuICAgICAgICAgICAgY29uc3QgdHMgPSBkaXJlY3RpdmVzLnRhZ1N0cmluZyh0YWcudGFnKTtcbiAgICAgICAgICAgIGNvbnN0IGNzID0gZGlyZWN0aXZlcy50YWdTdHJpbmcoY29tcGF0LnRhZyk7XG4gICAgICAgICAgICBjb25zdCBtc2cgPSBgVmFsdWUgbWF5IGJlIHBhcnNlZCBhcyBlaXRoZXIgJHt0c30gb3IgJHtjc31gO1xuICAgICAgICAgICAgb25FcnJvcih0b2tlbiwgJ1RBR19SRVNPTFZFX0ZBSUxFRCcsIG1zZywgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRhZztcbn1cblxuZXhwb3J0IHsgY29tcG9zZVNjYWxhciB9O1xuIiwgImZ1bmN0aW9uIGVtcHR5U2NhbGFyUG9zaXRpb24ob2Zmc2V0LCBiZWZvcmUsIHBvcykge1xuICAgIGlmIChiZWZvcmUpIHtcbiAgICAgICAgaWYgKHBvcyA9PT0gbnVsbClcbiAgICAgICAgICAgIHBvcyA9IGJlZm9yZS5sZW5ndGg7XG4gICAgICAgIGZvciAobGV0IGkgPSBwb3MgLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICAgICAgbGV0IHN0ID0gYmVmb3JlW2ldO1xuICAgICAgICAgICAgc3dpdGNoIChzdC50eXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnc3BhY2UnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2NvbW1lbnQnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ25ld2xpbmUnOlxuICAgICAgICAgICAgICAgICAgICBvZmZzZXQgLT0gc3Quc291cmNlLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBUZWNobmljYWxseSwgYW4gZW1wdHkgc2NhbGFyIGlzIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBsYXN0IG5vbi1lbXB0eVxuICAgICAgICAgICAgLy8gbm9kZSwgYnV0IGl0J3MgbW9yZSB1c2VmdWwgdG8gcGxhY2UgaXQgYWZ0ZXIgYW55IHdoaXRlc3BhY2UuXG4gICAgICAgICAgICBzdCA9IGJlZm9yZVsrK2ldO1xuICAgICAgICAgICAgd2hpbGUgKHN0Py50eXBlID09PSAnc3BhY2UnKSB7XG4gICAgICAgICAgICAgICAgb2Zmc2V0ICs9IHN0LnNvdXJjZS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgc3QgPSBiZWZvcmVbKytpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvZmZzZXQ7XG59XG5cbmV4cG9ydCB7IGVtcHR5U2NhbGFyUG9zaXRpb24gfTtcbiIsICJpbXBvcnQgeyBBbGlhcyB9IGZyb20gJy4uL25vZGVzL0FsaWFzLmpzJztcbmltcG9ydCB7IGlzU2NhbGFyIH0gZnJvbSAnLi4vbm9kZXMvaWRlbnRpdHkuanMnO1xuaW1wb3J0IHsgY29tcG9zZUNvbGxlY3Rpb24gfSBmcm9tICcuL2NvbXBvc2UtY29sbGVjdGlvbi5qcyc7XG5pbXBvcnQgeyBjb21wb3NlU2NhbGFyIH0gZnJvbSAnLi9jb21wb3NlLXNjYWxhci5qcyc7XG5pbXBvcnQgeyByZXNvbHZlRW5kIH0gZnJvbSAnLi9yZXNvbHZlLWVuZC5qcyc7XG5pbXBvcnQgeyBlbXB0eVNjYWxhclBvc2l0aW9uIH0gZnJvbSAnLi91dGlsLWVtcHR5LXNjYWxhci1wb3NpdGlvbi5qcyc7XG5cbmNvbnN0IENOID0geyBjb21wb3NlTm9kZSwgY29tcG9zZUVtcHR5Tm9kZSB9O1xuZnVuY3Rpb24gY29tcG9zZU5vZGUoY3R4LCB0b2tlbiwgcHJvcHMsIG9uRXJyb3IpIHtcbiAgICBjb25zdCBhdEtleSA9IGN0eC5hdEtleTtcbiAgICBjb25zdCB7IHNwYWNlQmVmb3JlLCBjb21tZW50LCBhbmNob3IsIHRhZyB9ID0gcHJvcHM7XG4gICAgbGV0IG5vZGU7XG4gICAgbGV0IGlzU3JjVG9rZW4gPSB0cnVlO1xuICAgIHN3aXRjaCAodG9rZW4udHlwZSkge1xuICAgICAgICBjYXNlICdhbGlhcyc6XG4gICAgICAgICAgICBub2RlID0gY29tcG9zZUFsaWFzKGN0eCwgdG9rZW4sIG9uRXJyb3IpO1xuICAgICAgICAgICAgaWYgKGFuY2hvciB8fCB0YWcpXG4gICAgICAgICAgICAgICAgb25FcnJvcih0b2tlbiwgJ0FMSUFTX1BST1BTJywgJ0FuIGFsaWFzIG5vZGUgbXVzdCBub3Qgc3BlY2lmeSBhbnkgcHJvcGVydGllcycpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3NjYWxhcic6XG4gICAgICAgIGNhc2UgJ3NpbmdsZS1xdW90ZWQtc2NhbGFyJzpcbiAgICAgICAgY2FzZSAnZG91YmxlLXF1b3RlZC1zY2FsYXInOlxuICAgICAgICBjYXNlICdibG9jay1zY2FsYXInOlxuICAgICAgICAgICAgbm9kZSA9IGNvbXBvc2VTY2FsYXIoY3R4LCB0b2tlbiwgdGFnLCBvbkVycm9yKTtcbiAgICAgICAgICAgIGlmIChhbmNob3IpXG4gICAgICAgICAgICAgICAgbm9kZS5hbmNob3IgPSBhbmNob3Iuc291cmNlLnN1YnN0cmluZygxKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdibG9jay1tYXAnOlxuICAgICAgICBjYXNlICdibG9jay1zZXEnOlxuICAgICAgICBjYXNlICdmbG93LWNvbGxlY3Rpb24nOlxuICAgICAgICAgICAgbm9kZSA9IGNvbXBvc2VDb2xsZWN0aW9uKENOLCBjdHgsIHRva2VuLCBwcm9wcywgb25FcnJvcik7XG4gICAgICAgICAgICBpZiAoYW5jaG9yKVxuICAgICAgICAgICAgICAgIG5vZGUuYW5jaG9yID0gYW5jaG9yLnNvdXJjZS5zdWJzdHJpbmcoMSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IHRva2VuLnR5cGUgPT09ICdlcnJvcidcbiAgICAgICAgICAgICAgICA/IHRva2VuLm1lc3NhZ2VcbiAgICAgICAgICAgICAgICA6IGBVbnN1cHBvcnRlZCB0b2tlbiAodHlwZTogJHt0b2tlbi50eXBlfSlgO1xuICAgICAgICAgICAgb25FcnJvcih0b2tlbiwgJ1VORVhQRUNURURfVE9LRU4nLCBtZXNzYWdlKTtcbiAgICAgICAgICAgIG5vZGUgPSBjb21wb3NlRW1wdHlOb2RlKGN0eCwgdG9rZW4ub2Zmc2V0LCB1bmRlZmluZWQsIG51bGwsIHByb3BzLCBvbkVycm9yKTtcbiAgICAgICAgICAgIGlzU3JjVG9rZW4gPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoYW5jaG9yICYmIG5vZGUuYW5jaG9yID09PSAnJylcbiAgICAgICAgb25FcnJvcihhbmNob3IsICdCQURfQUxJQVMnLCAnQW5jaG9yIGNhbm5vdCBiZSBhbiBlbXB0eSBzdHJpbmcnKTtcbiAgICBpZiAoYXRLZXkgJiZcbiAgICAgICAgY3R4Lm9wdGlvbnMuc3RyaW5nS2V5cyAmJlxuICAgICAgICAoIWlzU2NhbGFyKG5vZGUpIHx8XG4gICAgICAgICAgICB0eXBlb2Ygbm9kZS52YWx1ZSAhPT0gJ3N0cmluZycgfHxcbiAgICAgICAgICAgIChub2RlLnRhZyAmJiBub2RlLnRhZyAhPT0gJ3RhZzp5YW1sLm9yZywyMDAyOnN0cicpKSkge1xuICAgICAgICBjb25zdCBtc2cgPSAnV2l0aCBzdHJpbmdLZXlzLCBhbGwga2V5cyBtdXN0IGJlIHN0cmluZ3MnO1xuICAgICAgICBvbkVycm9yKHRhZyA/PyB0b2tlbiwgJ05PTl9TVFJJTkdfS0VZJywgbXNnKTtcbiAgICB9XG4gICAgaWYgKHNwYWNlQmVmb3JlKVxuICAgICAgICBub2RlLnNwYWNlQmVmb3JlID0gdHJ1ZTtcbiAgICBpZiAoY29tbWVudCkge1xuICAgICAgICBpZiAodG9rZW4udHlwZSA9PT0gJ3NjYWxhcicgJiYgdG9rZW4uc291cmNlID09PSAnJylcbiAgICAgICAgICAgIG5vZGUuY29tbWVudCA9IGNvbW1lbnQ7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIG5vZGUuY29tbWVudEJlZm9yZSA9IGNvbW1lbnQ7XG4gICAgfVxuICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgVHlwZSBjaGVja2luZyBtaXNzZXMgbWVhbmluZyBvZiBpc1NyY1Rva2VuXG4gICAgaWYgKGN0eC5vcHRpb25zLmtlZXBTb3VyY2VUb2tlbnMgJiYgaXNTcmNUb2tlbilcbiAgICAgICAgbm9kZS5zcmNUb2tlbiA9IHRva2VuO1xuICAgIHJldHVybiBub2RlO1xufVxuZnVuY3Rpb24gY29tcG9zZUVtcHR5Tm9kZShjdHgsIG9mZnNldCwgYmVmb3JlLCBwb3MsIHsgc3BhY2VCZWZvcmUsIGNvbW1lbnQsIGFuY2hvciwgdGFnLCBlbmQgfSwgb25FcnJvcikge1xuICAgIGNvbnN0IHRva2VuID0ge1xuICAgICAgICB0eXBlOiAnc2NhbGFyJyxcbiAgICAgICAgb2Zmc2V0OiBlbXB0eVNjYWxhclBvc2l0aW9uKG9mZnNldCwgYmVmb3JlLCBwb3MpLFxuICAgICAgICBpbmRlbnQ6IC0xLFxuICAgICAgICBzb3VyY2U6ICcnXG4gICAgfTtcbiAgICBjb25zdCBub2RlID0gY29tcG9zZVNjYWxhcihjdHgsIHRva2VuLCB0YWcsIG9uRXJyb3IpO1xuICAgIGlmIChhbmNob3IpIHtcbiAgICAgICAgbm9kZS5hbmNob3IgPSBhbmNob3Iuc291cmNlLnN1YnN0cmluZygxKTtcbiAgICAgICAgaWYgKG5vZGUuYW5jaG9yID09PSAnJylcbiAgICAgICAgICAgIG9uRXJyb3IoYW5jaG9yLCAnQkFEX0FMSUFTJywgJ0FuY2hvciBjYW5ub3QgYmUgYW4gZW1wdHkgc3RyaW5nJyk7XG4gICAgfVxuICAgIGlmIChzcGFjZUJlZm9yZSlcbiAgICAgICAgbm9kZS5zcGFjZUJlZm9yZSA9IHRydWU7XG4gICAgaWYgKGNvbW1lbnQpIHtcbiAgICAgICAgbm9kZS5jb21tZW50ID0gY29tbWVudDtcbiAgICAgICAgbm9kZS5yYW5nZVsyXSA9IGVuZDtcbiAgICB9XG4gICAgcmV0dXJuIG5vZGU7XG59XG5mdW5jdGlvbiBjb21wb3NlQWxpYXMoeyBvcHRpb25zIH0sIHsgb2Zmc2V0LCBzb3VyY2UsIGVuZCB9LCBvbkVycm9yKSB7XG4gICAgY29uc3QgYWxpYXMgPSBuZXcgQWxpYXMoc291cmNlLnN1YnN0cmluZygxKSk7XG4gICAgaWYgKGFsaWFzLnNvdXJjZSA9PT0gJycpXG4gICAgICAgIG9uRXJyb3Iob2Zmc2V0LCAnQkFEX0FMSUFTJywgJ0FsaWFzIGNhbm5vdCBiZSBhbiBlbXB0eSBzdHJpbmcnKTtcbiAgICBpZiAoYWxpYXMuc291cmNlLmVuZHNXaXRoKCc6JykpXG4gICAgICAgIG9uRXJyb3Iob2Zmc2V0ICsgc291cmNlLmxlbmd0aCAtIDEsICdCQURfQUxJQVMnLCAnQWxpYXMgZW5kaW5nIGluIDogaXMgYW1iaWd1b3VzJywgdHJ1ZSk7XG4gICAgY29uc3QgdmFsdWVFbmQgPSBvZmZzZXQgKyBzb3VyY2UubGVuZ3RoO1xuICAgIGNvbnN0IHJlID0gcmVzb2x2ZUVuZChlbmQsIHZhbHVlRW5kLCBvcHRpb25zLnN0cmljdCwgb25FcnJvcik7XG4gICAgYWxpYXMucmFuZ2UgPSBbb2Zmc2V0LCB2YWx1ZUVuZCwgcmUub2Zmc2V0XTtcbiAgICBpZiAocmUuY29tbWVudClcbiAgICAgICAgYWxpYXMuY29tbWVudCA9IHJlLmNvbW1lbnQ7XG4gICAgcmV0dXJuIGFsaWFzO1xufVxuXG5leHBvcnQgeyBjb21wb3NlRW1wdHlOb2RlLCBjb21wb3NlTm9kZSB9O1xuIiwgImltcG9ydCB7IERvY3VtZW50IH0gZnJvbSAnLi4vZG9jL0RvY3VtZW50LmpzJztcbmltcG9ydCB7IGNvbXBvc2VOb2RlLCBjb21wb3NlRW1wdHlOb2RlIH0gZnJvbSAnLi9jb21wb3NlLW5vZGUuanMnO1xuaW1wb3J0IHsgcmVzb2x2ZUVuZCB9IGZyb20gJy4vcmVzb2x2ZS1lbmQuanMnO1xuaW1wb3J0IHsgcmVzb2x2ZVByb3BzIH0gZnJvbSAnLi9yZXNvbHZlLXByb3BzLmpzJztcblxuZnVuY3Rpb24gY29tcG9zZURvYyhvcHRpb25zLCBkaXJlY3RpdmVzLCB7IG9mZnNldCwgc3RhcnQsIHZhbHVlLCBlbmQgfSwgb25FcnJvcikge1xuICAgIGNvbnN0IG9wdHMgPSBPYmplY3QuYXNzaWduKHsgX2RpcmVjdGl2ZXM6IGRpcmVjdGl2ZXMgfSwgb3B0aW9ucyk7XG4gICAgY29uc3QgZG9jID0gbmV3IERvY3VtZW50KHVuZGVmaW5lZCwgb3B0cyk7XG4gICAgY29uc3QgY3R4ID0ge1xuICAgICAgICBhdEtleTogZmFsc2UsXG4gICAgICAgIGF0Um9vdDogdHJ1ZSxcbiAgICAgICAgZGlyZWN0aXZlczogZG9jLmRpcmVjdGl2ZXMsXG4gICAgICAgIG9wdGlvbnM6IGRvYy5vcHRpb25zLFxuICAgICAgICBzY2hlbWE6IGRvYy5zY2hlbWFcbiAgICB9O1xuICAgIGNvbnN0IHByb3BzID0gcmVzb2x2ZVByb3BzKHN0YXJ0LCB7XG4gICAgICAgIGluZGljYXRvcjogJ2RvYy1zdGFydCcsXG4gICAgICAgIG5leHQ6IHZhbHVlID8/IGVuZD8uWzBdLFxuICAgICAgICBvZmZzZXQsXG4gICAgICAgIG9uRXJyb3IsXG4gICAgICAgIHBhcmVudEluZGVudDogMCxcbiAgICAgICAgc3RhcnRPbk5ld2xpbmU6IHRydWVcbiAgICB9KTtcbiAgICBpZiAocHJvcHMuZm91bmQpIHtcbiAgICAgICAgZG9jLmRpcmVjdGl2ZXMuZG9jU3RhcnQgPSB0cnVlO1xuICAgICAgICBpZiAodmFsdWUgJiZcbiAgICAgICAgICAgICh2YWx1ZS50eXBlID09PSAnYmxvY2stbWFwJyB8fCB2YWx1ZS50eXBlID09PSAnYmxvY2stc2VxJykgJiZcbiAgICAgICAgICAgICFwcm9wcy5oYXNOZXdsaW5lKVxuICAgICAgICAgICAgb25FcnJvcihwcm9wcy5lbmQsICdNSVNTSU5HX0NIQVInLCAnQmxvY2sgY29sbGVjdGlvbiBjYW5ub3Qgc3RhcnQgb24gc2FtZSBsaW5lIHdpdGggZGlyZWN0aXZlcy1lbmQgbWFya2VyJyk7XG4gICAgfVxuICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgSWYgQ29udGVudHMgaXMgc2V0LCBsZXQncyB0cnVzdCB0aGUgdXNlclxuICAgIGRvYy5jb250ZW50cyA9IHZhbHVlXG4gICAgICAgID8gY29tcG9zZU5vZGUoY3R4LCB2YWx1ZSwgcHJvcHMsIG9uRXJyb3IpXG4gICAgICAgIDogY29tcG9zZUVtcHR5Tm9kZShjdHgsIHByb3BzLmVuZCwgc3RhcnQsIG51bGwsIHByb3BzLCBvbkVycm9yKTtcbiAgICBjb25zdCBjb250ZW50RW5kID0gZG9jLmNvbnRlbnRzLnJhbmdlWzJdO1xuICAgIGNvbnN0IHJlID0gcmVzb2x2ZUVuZChlbmQsIGNvbnRlbnRFbmQsIGZhbHNlLCBvbkVycm9yKTtcbiAgICBpZiAocmUuY29tbWVudClcbiAgICAgICAgZG9jLmNvbW1lbnQgPSByZS5jb21tZW50O1xuICAgIGRvYy5yYW5nZSA9IFtvZmZzZXQsIGNvbnRlbnRFbmQsIHJlLm9mZnNldF07XG4gICAgcmV0dXJuIGRvYztcbn1cblxuZXhwb3J0IHsgY29tcG9zZURvYyB9O1xuIiwgImltcG9ydCB7IERpcmVjdGl2ZXMgfSBmcm9tICcuLi9kb2MvZGlyZWN0aXZlcy5qcyc7XG5pbXBvcnQgeyBEb2N1bWVudCB9IGZyb20gJy4uL2RvYy9Eb2N1bWVudC5qcyc7XG5pbXBvcnQgeyBZQU1MV2FybmluZywgWUFNTFBhcnNlRXJyb3IgfSBmcm9tICcuLi9lcnJvcnMuanMnO1xuaW1wb3J0IHsgaXNDb2xsZWN0aW9uLCBpc1BhaXIgfSBmcm9tICcuLi9ub2Rlcy9pZGVudGl0eS5qcyc7XG5pbXBvcnQgeyBjb21wb3NlRG9jIH0gZnJvbSAnLi9jb21wb3NlLWRvYy5qcyc7XG5pbXBvcnQgeyByZXNvbHZlRW5kIH0gZnJvbSAnLi9yZXNvbHZlLWVuZC5qcyc7XG5cbmZ1bmN0aW9uIGdldEVycm9yUG9zKHNyYykge1xuICAgIGlmICh0eXBlb2Ygc3JjID09PSAnbnVtYmVyJylcbiAgICAgICAgcmV0dXJuIFtzcmMsIHNyYyArIDFdO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHNyYykpXG4gICAgICAgIHJldHVybiBzcmMubGVuZ3RoID09PSAyID8gc3JjIDogW3NyY1swXSwgc3JjWzFdXTtcbiAgICBjb25zdCB7IG9mZnNldCwgc291cmNlIH0gPSBzcmM7XG4gICAgcmV0dXJuIFtvZmZzZXQsIG9mZnNldCArICh0eXBlb2Ygc291cmNlID09PSAnc3RyaW5nJyA/IHNvdXJjZS5sZW5ndGggOiAxKV07XG59XG5mdW5jdGlvbiBwYXJzZVByZWx1ZGUocHJlbHVkZSkge1xuICAgIGxldCBjb21tZW50ID0gJyc7XG4gICAgbGV0IGF0Q29tbWVudCA9IGZhbHNlO1xuICAgIGxldCBhZnRlckVtcHR5TGluZSA9IGZhbHNlO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJlbHVkZS5sZW5ndGg7ICsraSkge1xuICAgICAgICBjb25zdCBzb3VyY2UgPSBwcmVsdWRlW2ldO1xuICAgICAgICBzd2l0Y2ggKHNvdXJjZVswXSkge1xuICAgICAgICAgICAgY2FzZSAnIyc6XG4gICAgICAgICAgICAgICAgY29tbWVudCArPVxuICAgICAgICAgICAgICAgICAgICAoY29tbWVudCA9PT0gJycgPyAnJyA6IGFmdGVyRW1wdHlMaW5lID8gJ1xcblxcbicgOiAnXFxuJykgK1xuICAgICAgICAgICAgICAgICAgICAgICAgKHNvdXJjZS5zdWJzdHJpbmcoMSkgfHwgJyAnKTtcbiAgICAgICAgICAgICAgICBhdENvbW1lbnQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGFmdGVyRW1wdHlMaW5lID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICclJzpcbiAgICAgICAgICAgICAgICBpZiAocHJlbHVkZVtpICsgMV0/LlswXSAhPT0gJyMnKVxuICAgICAgICAgICAgICAgICAgICBpICs9IDE7XG4gICAgICAgICAgICAgICAgYXRDb21tZW50ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIC8vIFRoaXMgbWF5IGJlIHdyb25nIGFmdGVyIGRvYy1lbmQsIGJ1dCBpbiB0aGF0IGNhc2UgaXQgZG9lc24ndCBtYXR0ZXJcbiAgICAgICAgICAgICAgICBpZiAoIWF0Q29tbWVudClcbiAgICAgICAgICAgICAgICAgICAgYWZ0ZXJFbXB0eUxpbmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGF0Q29tbWVudCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7IGNvbW1lbnQsIGFmdGVyRW1wdHlMaW5lIH07XG59XG4vKipcbiAqIENvbXBvc2UgYSBzdHJlYW0gb2YgQ1NUIG5vZGVzIGludG8gYSBzdHJlYW0gb2YgWUFNTCBEb2N1bWVudHMuXG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IENvbXBvc2VyLCBQYXJzZXIgfSBmcm9tICd5YW1sJ1xuICpcbiAqIGNvbnN0IHNyYzogc3RyaW5nID0gLi4uXG4gKiBjb25zdCB0b2tlbnMgPSBuZXcgUGFyc2VyKCkucGFyc2Uoc3JjKVxuICogY29uc3QgZG9jcyA9IG5ldyBDb21wb3NlcigpLmNvbXBvc2UodG9rZW5zKVxuICogYGBgXG4gKi9cbmNsYXNzIENvbXBvc2VyIHtcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zID0ge30pIHtcbiAgICAgICAgdGhpcy5kb2MgPSBudWxsO1xuICAgICAgICB0aGlzLmF0RGlyZWN0aXZlcyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnByZWx1ZGUgPSBbXTtcbiAgICAgICAgdGhpcy5lcnJvcnMgPSBbXTtcbiAgICAgICAgdGhpcy53YXJuaW5ncyA9IFtdO1xuICAgICAgICB0aGlzLm9uRXJyb3IgPSAoc291cmNlLCBjb2RlLCBtZXNzYWdlLCB3YXJuaW5nKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwb3MgPSBnZXRFcnJvclBvcyhzb3VyY2UpO1xuICAgICAgICAgICAgaWYgKHdhcm5pbmcpXG4gICAgICAgICAgICAgICAgdGhpcy53YXJuaW5ncy5wdXNoKG5ldyBZQU1MV2FybmluZyhwb3MsIGNvZGUsIG1lc3NhZ2UpKTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICB0aGlzLmVycm9ycy5wdXNoKG5ldyBZQU1MUGFyc2VFcnJvcihwb3MsIGNvZGUsIG1lc3NhZ2UpKTtcbiAgICAgICAgfTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9wcmVmZXItbnVsbGlzaC1jb2FsZXNjaW5nXG4gICAgICAgIHRoaXMuZGlyZWN0aXZlcyA9IG5ldyBEaXJlY3RpdmVzKHsgdmVyc2lvbjogb3B0aW9ucy52ZXJzaW9uIHx8ICcxLjInIH0pO1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIH1cbiAgICBkZWNvcmF0ZShkb2MsIGFmdGVyRG9jKSB7XG4gICAgICAgIGNvbnN0IHsgY29tbWVudCwgYWZ0ZXJFbXB0eUxpbmUgfSA9IHBhcnNlUHJlbHVkZSh0aGlzLnByZWx1ZGUpO1xuICAgICAgICAvL2NvbnNvbGUubG9nKHsgZGM6IGRvYy5jb21tZW50LCBwcmVsdWRlLCBjb21tZW50IH0pXG4gICAgICAgIGlmIChjb21tZW50KSB7XG4gICAgICAgICAgICBjb25zdCBkYyA9IGRvYy5jb250ZW50cztcbiAgICAgICAgICAgIGlmIChhZnRlckRvYykge1xuICAgICAgICAgICAgICAgIGRvYy5jb21tZW50ID0gZG9jLmNvbW1lbnQgPyBgJHtkb2MuY29tbWVudH1cXG4ke2NvbW1lbnR9YCA6IGNvbW1lbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChhZnRlckVtcHR5TGluZSB8fCBkb2MuZGlyZWN0aXZlcy5kb2NTdGFydCB8fCAhZGMpIHtcbiAgICAgICAgICAgICAgICBkb2MuY29tbWVudEJlZm9yZSA9IGNvbW1lbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChpc0NvbGxlY3Rpb24oZGMpICYmICFkYy5mbG93ICYmIGRjLml0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBsZXQgaXQgPSBkYy5pdGVtc1swXTtcbiAgICAgICAgICAgICAgICBpZiAoaXNQYWlyKGl0KSlcbiAgICAgICAgICAgICAgICAgICAgaXQgPSBpdC5rZXk7XG4gICAgICAgICAgICAgICAgY29uc3QgY2IgPSBpdC5jb21tZW50QmVmb3JlO1xuICAgICAgICAgICAgICAgIGl0LmNvbW1lbnRCZWZvcmUgPSBjYiA/IGAke2NvbW1lbnR9XFxuJHtjYn1gIDogY29tbWVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNiID0gZGMuY29tbWVudEJlZm9yZTtcbiAgICAgICAgICAgICAgICBkYy5jb21tZW50QmVmb3JlID0gY2IgPyBgJHtjb21tZW50fVxcbiR7Y2J9YCA6IGNvbW1lbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFmdGVyRG9jKSB7XG4gICAgICAgICAgICBBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShkb2MuZXJyb3JzLCB0aGlzLmVycm9ycyk7XG4gICAgICAgICAgICBBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShkb2Mud2FybmluZ3MsIHRoaXMud2FybmluZ3MpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZG9jLmVycm9ycyA9IHRoaXMuZXJyb3JzO1xuICAgICAgICAgICAgZG9jLndhcm5pbmdzID0gdGhpcy53YXJuaW5ncztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnByZWx1ZGUgPSBbXTtcbiAgICAgICAgdGhpcy5lcnJvcnMgPSBbXTtcbiAgICAgICAgdGhpcy53YXJuaW5ncyA9IFtdO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDdXJyZW50IHN0cmVhbSBzdGF0dXMgaW5mb3JtYXRpb24uXG4gICAgICpcbiAgICAgKiBNb3N0bHkgdXNlZnVsIGF0IHRoZSBlbmQgb2YgaW5wdXQgZm9yIGFuIGVtcHR5IHN0cmVhbS5cbiAgICAgKi9cbiAgICBzdHJlYW1JbmZvKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY29tbWVudDogcGFyc2VQcmVsdWRlKHRoaXMucHJlbHVkZSkuY29tbWVudCxcbiAgICAgICAgICAgIGRpcmVjdGl2ZXM6IHRoaXMuZGlyZWN0aXZlcyxcbiAgICAgICAgICAgIGVycm9yczogdGhpcy5lcnJvcnMsXG4gICAgICAgICAgICB3YXJuaW5nczogdGhpcy53YXJuaW5nc1xuICAgICAgICB9O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDb21wb3NlIHRva2VucyBpbnRvIGRvY3VtZW50cy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBmb3JjZURvYyAtIElmIHRoZSBzdHJlYW0gY29udGFpbnMgbm8gZG9jdW1lbnQsIHN0aWxsIGVtaXQgYSBmaW5hbCBkb2N1bWVudCBpbmNsdWRpbmcgYW55IGNvbW1lbnRzIGFuZCBkaXJlY3RpdmVzIHRoYXQgd291bGQgYmUgYXBwbGllZCB0byBhIHN1YnNlcXVlbnQgZG9jdW1lbnQuXG4gICAgICogQHBhcmFtIGVuZE9mZnNldCAtIFNob3VsZCBiZSBzZXQgaWYgYGZvcmNlRG9jYCBpcyBhbHNvIHNldCwgdG8gc2V0IHRoZSBkb2N1bWVudCByYW5nZSBlbmQgYW5kIHRvIGluZGljYXRlIGVycm9ycyBjb3JyZWN0bHkuXG4gICAgICovXG4gICAgKmNvbXBvc2UodG9rZW5zLCBmb3JjZURvYyA9IGZhbHNlLCBlbmRPZmZzZXQgPSAtMSkge1xuICAgICAgICBmb3IgKGNvbnN0IHRva2VuIG9mIHRva2VucylcbiAgICAgICAgICAgIHlpZWxkKiB0aGlzLm5leHQodG9rZW4pO1xuICAgICAgICB5aWVsZCogdGhpcy5lbmQoZm9yY2VEb2MsIGVuZE9mZnNldCk7XG4gICAgfVxuICAgIC8qKiBBZHZhbmNlIHRoZSBjb21wb3NlciBieSBvbmUgQ1NUIHRva2VuLiAqL1xuICAgICpuZXh0KHRva2VuKSB7XG4gICAgICAgIHN3aXRjaCAodG9rZW4udHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnZGlyZWN0aXZlJzpcbiAgICAgICAgICAgICAgICB0aGlzLmRpcmVjdGl2ZXMuYWRkKHRva2VuLnNvdXJjZSwgKG9mZnNldCwgbWVzc2FnZSwgd2FybmluZykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwb3MgPSBnZXRFcnJvclBvcyh0b2tlbik7XG4gICAgICAgICAgICAgICAgICAgIHBvc1swXSArPSBvZmZzZXQ7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25FcnJvcihwb3MsICdCQURfRElSRUNUSVZFJywgbWVzc2FnZSwgd2FybmluZyk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5wcmVsdWRlLnB1c2godG9rZW4uc291cmNlKTtcbiAgICAgICAgICAgICAgICB0aGlzLmF0RGlyZWN0aXZlcyA9IHRydWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdkb2N1bWVudCc6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBkb2MgPSBjb21wb3NlRG9jKHRoaXMub3B0aW9ucywgdGhpcy5kaXJlY3RpdmVzLCB0b2tlbiwgdGhpcy5vbkVycm9yKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5hdERpcmVjdGl2ZXMgJiYgIWRvYy5kaXJlY3RpdmVzLmRvY1N0YXJ0KVxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uRXJyb3IodG9rZW4sICdNSVNTSU5HX0NIQVInLCAnTWlzc2luZyBkaXJlY3RpdmVzLWVuZC9kb2Mtc3RhcnQgaW5kaWNhdG9yIGxpbmUnKTtcbiAgICAgICAgICAgICAgICB0aGlzLmRlY29yYXRlKGRvYywgZmFsc2UpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRvYylcbiAgICAgICAgICAgICAgICAgICAgeWllbGQgdGhpcy5kb2M7XG4gICAgICAgICAgICAgICAgdGhpcy5kb2MgPSBkb2M7XG4gICAgICAgICAgICAgICAgdGhpcy5hdERpcmVjdGl2ZXMgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ2J5dGUtb3JkZXItbWFyayc6XG4gICAgICAgICAgICBjYXNlICdzcGFjZSc6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdjb21tZW50JzpcbiAgICAgICAgICAgIGNhc2UgJ25ld2xpbmUnOlxuICAgICAgICAgICAgICAgIHRoaXMucHJlbHVkZS5wdXNoKHRva2VuLnNvdXJjZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdlcnJvcic6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBtc2cgPSB0b2tlbi5zb3VyY2VcbiAgICAgICAgICAgICAgICAgICAgPyBgJHt0b2tlbi5tZXNzYWdlfTogJHtKU09OLnN0cmluZ2lmeSh0b2tlbi5zb3VyY2UpfWBcbiAgICAgICAgICAgICAgICAgICAgOiB0b2tlbi5tZXNzYWdlO1xuICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yID0gbmV3IFlBTUxQYXJzZUVycm9yKGdldEVycm9yUG9zKHRva2VuKSwgJ1VORVhQRUNURURfVE9LRU4nLCBtc2cpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmF0RGlyZWN0aXZlcyB8fCAhdGhpcy5kb2MpXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JzLnB1c2goZXJyb3IpO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kb2MuZXJyb3JzLnB1c2goZXJyb3IpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnZG9jLWVuZCc6IHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZG9jKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1zZyA9ICdVbmV4cGVjdGVkIGRvYy1lbmQgd2l0aG91dCBwcmVjZWRpbmcgZG9jdW1lbnQnO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVycm9ycy5wdXNoKG5ldyBZQU1MUGFyc2VFcnJvcihnZXRFcnJvclBvcyh0b2tlbiksICdVTkVYUEVDVEVEX1RPS0VOJywgbXNnKSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmRvYy5kaXJlY3RpdmVzLmRvY0VuZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgY29uc3QgZW5kID0gcmVzb2x2ZUVuZCh0b2tlbi5lbmQsIHRva2VuLm9mZnNldCArIHRva2VuLnNvdXJjZS5sZW5ndGgsIHRoaXMuZG9jLm9wdGlvbnMuc3RyaWN0LCB0aGlzLm9uRXJyb3IpO1xuICAgICAgICAgICAgICAgIHRoaXMuZGVjb3JhdGUodGhpcy5kb2MsIHRydWUpO1xuICAgICAgICAgICAgICAgIGlmIChlbmQuY29tbWVudCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkYyA9IHRoaXMuZG9jLmNvbW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZG9jLmNvbW1lbnQgPSBkYyA/IGAke2RjfVxcbiR7ZW5kLmNvbW1lbnR9YCA6IGVuZC5jb21tZW50O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmRvYy5yYW5nZVsyXSA9IGVuZC5vZmZzZXQ7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JzLnB1c2gobmV3IFlBTUxQYXJzZUVycm9yKGdldEVycm9yUG9zKHRva2VuKSwgJ1VORVhQRUNURURfVE9LRU4nLCBgVW5zdXBwb3J0ZWQgdG9rZW4gJHt0b2tlbi50eXBlfWApKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBDYWxsIGF0IGVuZCBvZiBpbnB1dCB0byB5aWVsZCBhbnkgcmVtYWluaW5nIGRvY3VtZW50LlxuICAgICAqXG4gICAgICogQHBhcmFtIGZvcmNlRG9jIC0gSWYgdGhlIHN0cmVhbSBjb250YWlucyBubyBkb2N1bWVudCwgc3RpbGwgZW1pdCBhIGZpbmFsIGRvY3VtZW50IGluY2x1ZGluZyBhbnkgY29tbWVudHMgYW5kIGRpcmVjdGl2ZXMgdGhhdCB3b3VsZCBiZSBhcHBsaWVkIHRvIGEgc3Vic2VxdWVudCBkb2N1bWVudC5cbiAgICAgKiBAcGFyYW0gZW5kT2Zmc2V0IC0gU2hvdWxkIGJlIHNldCBpZiBgZm9yY2VEb2NgIGlzIGFsc28gc2V0LCB0byBzZXQgdGhlIGRvY3VtZW50IHJhbmdlIGVuZCBhbmQgdG8gaW5kaWNhdGUgZXJyb3JzIGNvcnJlY3RseS5cbiAgICAgKi9cbiAgICAqZW5kKGZvcmNlRG9jID0gZmFsc2UsIGVuZE9mZnNldCA9IC0xKSB7XG4gICAgICAgIGlmICh0aGlzLmRvYykge1xuICAgICAgICAgICAgdGhpcy5kZWNvcmF0ZSh0aGlzLmRvYywgdHJ1ZSk7XG4gICAgICAgICAgICB5aWVsZCB0aGlzLmRvYztcbiAgICAgICAgICAgIHRoaXMuZG9jID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChmb3JjZURvYykge1xuICAgICAgICAgICAgY29uc3Qgb3B0cyA9IE9iamVjdC5hc3NpZ24oeyBfZGlyZWN0aXZlczogdGhpcy5kaXJlY3RpdmVzIH0sIHRoaXMub3B0aW9ucyk7XG4gICAgICAgICAgICBjb25zdCBkb2MgPSBuZXcgRG9jdW1lbnQodW5kZWZpbmVkLCBvcHRzKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmF0RGlyZWN0aXZlcylcbiAgICAgICAgICAgICAgICB0aGlzLm9uRXJyb3IoZW5kT2Zmc2V0LCAnTUlTU0lOR19DSEFSJywgJ01pc3NpbmcgZGlyZWN0aXZlcy1lbmQgaW5kaWNhdG9yIGxpbmUnKTtcbiAgICAgICAgICAgIGRvYy5yYW5nZSA9IFswLCBlbmRPZmZzZXQsIGVuZE9mZnNldF07XG4gICAgICAgICAgICB0aGlzLmRlY29yYXRlKGRvYywgZmFsc2UpO1xuICAgICAgICAgICAgeWllbGQgZG9jO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgeyBDb21wb3NlciB9O1xuIiwgImNvbnN0IEJSRUFLID0gU3ltYm9sKCdicmVhayB2aXNpdCcpO1xuY29uc3QgU0tJUCA9IFN5bWJvbCgnc2tpcCBjaGlsZHJlbicpO1xuY29uc3QgUkVNT1ZFID0gU3ltYm9sKCdyZW1vdmUgaXRlbScpO1xuLyoqXG4gKiBBcHBseSBhIHZpc2l0b3IgdG8gYSBDU1QgZG9jdW1lbnQgb3IgaXRlbS5cbiAqXG4gKiBXYWxrcyB0aHJvdWdoIHRoZSB0cmVlIChkZXB0aC1maXJzdCkgc3RhcnRpbmcgZnJvbSB0aGUgcm9vdCwgY2FsbGluZyBhXG4gKiBgdmlzaXRvcmAgZnVuY3Rpb24gd2l0aCB0d28gYXJndW1lbnRzIHdoZW4gZW50ZXJpbmcgZWFjaCBpdGVtOlxuICogICAtIGBpdGVtYDogVGhlIGN1cnJlbnQgaXRlbSwgd2hpY2ggaW5jbHVkZWQgdGhlIGZvbGxvd2luZyBtZW1iZXJzOlxuICogICAgIC0gYHN0YXJ0OiBTb3VyY2VUb2tlbltdYCBcdTIwMTMgU291cmNlIHRva2VucyBiZWZvcmUgdGhlIGtleSBvciB2YWx1ZSxcbiAqICAgICAgIHBvc3NpYmx5IGluY2x1ZGluZyBpdHMgYW5jaG9yIG9yIHRhZy5cbiAqICAgICAtIGBrZXk/OiBUb2tlbiB8IG51bGxgIFx1MjAxMyBTZXQgZm9yIHBhaXIgdmFsdWVzLiBNYXkgdGhlbiBiZSBgbnVsbGAsIGlmXG4gKiAgICAgICB0aGUga2V5IGJlZm9yZSB0aGUgYDpgIHNlcGFyYXRvciBpcyBlbXB0eS5cbiAqICAgICAtIGBzZXA/OiBTb3VyY2VUb2tlbltdYCBcdTIwMTMgU291cmNlIHRva2VucyBiZXR3ZWVuIHRoZSBrZXkgYW5kIHRoZSB2YWx1ZSxcbiAqICAgICAgIHdoaWNoIHNob3VsZCBpbmNsdWRlIHRoZSBgOmAgbWFwIHZhbHVlIGluZGljYXRvciBpZiBgdmFsdWVgIGlzIHNldC5cbiAqICAgICAtIGB2YWx1ZT86IFRva2VuYCBcdTIwMTMgVGhlIHZhbHVlIG9mIGEgc2VxdWVuY2UgaXRlbSwgb3Igb2YgYSBtYXAgcGFpci5cbiAqICAgLSBgcGF0aGA6IFRoZSBzdGVwcyBmcm9tIHRoZSByb290IHRvIHRoZSBjdXJyZW50IG5vZGUsIGFzIGFuIGFycmF5IG9mXG4gKiAgICAgYFsna2V5JyB8ICd2YWx1ZScsIG51bWJlcl1gIHR1cGxlcy5cbiAqXG4gKiBUaGUgcmV0dXJuIHZhbHVlIG9mIHRoZSB2aXNpdG9yIG1heSBiZSB1c2VkIHRvIGNvbnRyb2wgdGhlIHRyYXZlcnNhbDpcbiAqICAgLSBgdW5kZWZpbmVkYCAoZGVmYXVsdCk6IERvIG5vdGhpbmcgYW5kIGNvbnRpbnVlXG4gKiAgIC0gYHZpc2l0LlNLSVBgOiBEbyBub3QgdmlzaXQgdGhlIGNoaWxkcmVuIG9mIHRoaXMgdG9rZW4sIGNvbnRpbnVlIHdpdGhcbiAqICAgICAgbmV4dCBzaWJsaW5nXG4gKiAgIC0gYHZpc2l0LkJSRUFLYDogVGVybWluYXRlIHRyYXZlcnNhbCBjb21wbGV0ZWx5XG4gKiAgIC0gYHZpc2l0LlJFTU9WRWA6IFJlbW92ZSB0aGUgY3VycmVudCBpdGVtLCB0aGVuIGNvbnRpbnVlIHdpdGggdGhlIG5leHQgb25lXG4gKiAgIC0gYG51bWJlcmA6IFNldCB0aGUgaW5kZXggb2YgdGhlIG5leHQgc3RlcC4gVGhpcyBpcyB1c2VmdWwgZXNwZWNpYWxseSBpZlxuICogICAgIHRoZSBpbmRleCBvZiB0aGUgY3VycmVudCB0b2tlbiBoYXMgY2hhbmdlZC5cbiAqICAgLSBgZnVuY3Rpb25gOiBEZWZpbmUgdGhlIG5leHQgdmlzaXRvciBmb3IgdGhpcyBpdGVtLiBBZnRlciB0aGUgb3JpZ2luYWxcbiAqICAgICB2aXNpdG9yIGlzIGNhbGxlZCBvbiBpdGVtIGVudHJ5LCBuZXh0IHZpc2l0b3JzIGFyZSBjYWxsZWQgYWZ0ZXIgaGFuZGxpbmdcbiAqICAgICBhIG5vbi1lbXB0eSBga2V5YCBhbmQgd2hlbiBleGl0aW5nIHRoZSBpdGVtLlxuICovXG5mdW5jdGlvbiB2aXNpdChjc3QsIHZpc2l0b3IpIHtcbiAgICBpZiAoJ3R5cGUnIGluIGNzdCAmJiBjc3QudHlwZSA9PT0gJ2RvY3VtZW50JylcbiAgICAgICAgY3N0ID0geyBzdGFydDogY3N0LnN0YXJ0LCB2YWx1ZTogY3N0LnZhbHVlIH07XG4gICAgX3Zpc2l0KE9iamVjdC5mcmVlemUoW10pLCBjc3QsIHZpc2l0b3IpO1xufVxuLy8gV2l0aG91dCB0aGUgYGFzIHN5bWJvbGAgY2FzdHMsIFRTIGRlY2xhcmVzIHRoZXNlIGluIHRoZSBgdmlzaXRgXG4vLyBuYW1lc3BhY2UgdXNpbmcgYHZhcmAsIGJ1dCB0aGVuIGNvbXBsYWlucyBhYm91dCB0aGF0IGJlY2F1c2Vcbi8vIGB1bmlxdWUgc3ltYm9sYCBtdXN0IGJlIGBjb25zdGAuXG4vKiogVGVybWluYXRlIHZpc2l0IHRyYXZlcnNhbCBjb21wbGV0ZWx5ICovXG52aXNpdC5CUkVBSyA9IEJSRUFLO1xuLyoqIERvIG5vdCB2aXNpdCB0aGUgY2hpbGRyZW4gb2YgdGhlIGN1cnJlbnQgaXRlbSAqL1xudmlzaXQuU0tJUCA9IFNLSVA7XG4vKiogUmVtb3ZlIHRoZSBjdXJyZW50IGl0ZW0gKi9cbnZpc2l0LlJFTU9WRSA9IFJFTU9WRTtcbi8qKiBGaW5kIHRoZSBpdGVtIGF0IGBwYXRoYCBmcm9tIGBjc3RgIGFzIHRoZSByb290ICovXG52aXNpdC5pdGVtQXRQYXRoID0gKGNzdCwgcGF0aCkgPT4ge1xuICAgIGxldCBpdGVtID0gY3N0O1xuICAgIGZvciAoY29uc3QgW2ZpZWxkLCBpbmRleF0gb2YgcGF0aCkge1xuICAgICAgICBjb25zdCB0b2sgPSBpdGVtPy5bZmllbGRdO1xuICAgICAgICBpZiAodG9rICYmICdpdGVtcycgaW4gdG9rKSB7XG4gICAgICAgICAgICBpdGVtID0gdG9rLml0ZW1zW2luZGV4XTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICByZXR1cm4gaXRlbTtcbn07XG4vKipcbiAqIEdldCB0aGUgaW1tZWRpYXRlIHBhcmVudCBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtIGF0IGBwYXRoYCBmcm9tIGBjc3RgIGFzIHRoZSByb290LlxuICpcbiAqIFRocm93cyBhbiBlcnJvciBpZiB0aGUgY29sbGVjdGlvbiBpcyBub3QgZm91bmQsIHdoaWNoIHNob3VsZCBuZXZlciBoYXBwZW4gaWYgdGhlIGl0ZW0gaXRzZWxmIGV4aXN0cy5cbiAqL1xudmlzaXQucGFyZW50Q29sbGVjdGlvbiA9IChjc3QsIHBhdGgpID0+IHtcbiAgICBjb25zdCBwYXJlbnQgPSB2aXNpdC5pdGVtQXRQYXRoKGNzdCwgcGF0aC5zbGljZSgwLCAtMSkpO1xuICAgIGNvbnN0IGZpZWxkID0gcGF0aFtwYXRoLmxlbmd0aCAtIDFdWzBdO1xuICAgIGNvbnN0IGNvbGwgPSBwYXJlbnQ/LltmaWVsZF07XG4gICAgaWYgKGNvbGwgJiYgJ2l0ZW1zJyBpbiBjb2xsKVxuICAgICAgICByZXR1cm4gY29sbDtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1BhcmVudCBjb2xsZWN0aW9uIG5vdCBmb3VuZCcpO1xufTtcbmZ1bmN0aW9uIF92aXNpdChwYXRoLCBpdGVtLCB2aXNpdG9yKSB7XG4gICAgbGV0IGN0cmwgPSB2aXNpdG9yKGl0ZW0sIHBhdGgpO1xuICAgIGlmICh0eXBlb2YgY3RybCA9PT0gJ3N5bWJvbCcpXG4gICAgICAgIHJldHVybiBjdHJsO1xuICAgIGZvciAoY29uc3QgZmllbGQgb2YgWydrZXknLCAndmFsdWUnXSkge1xuICAgICAgICBjb25zdCB0b2tlbiA9IGl0ZW1bZmllbGRdO1xuICAgICAgICBpZiAodG9rZW4gJiYgJ2l0ZW1zJyBpbiB0b2tlbikge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0b2tlbi5pdGVtcy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNpID0gX3Zpc2l0KE9iamVjdC5mcmVlemUocGF0aC5jb25jYXQoW1tmaWVsZCwgaV1dKSksIHRva2VuLml0ZW1zW2ldLCB2aXNpdG9yKTtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGNpID09PSAnbnVtYmVyJylcbiAgICAgICAgICAgICAgICAgICAgaSA9IGNpIC0gMTtcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChjaSA9PT0gQlJFQUspXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBCUkVBSztcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChjaSA9PT0gUkVNT1ZFKSB7XG4gICAgICAgICAgICAgICAgICAgIHRva2VuLml0ZW1zLnNwbGljZShpLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgaSAtPSAxO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0eXBlb2YgY3RybCA9PT0gJ2Z1bmN0aW9uJyAmJiBmaWVsZCA9PT0gJ2tleScpXG4gICAgICAgICAgICAgICAgY3RybCA9IGN0cmwoaXRlbSwgcGF0aCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHR5cGVvZiBjdHJsID09PSAnZnVuY3Rpb24nID8gY3RybChpdGVtLCBwYXRoKSA6IGN0cmw7XG59XG5cbmV4cG9ydCB7IHZpc2l0IH07XG4iLCAiZXhwb3J0IHsgY3JlYXRlU2NhbGFyVG9rZW4sIHJlc29sdmVBc1NjYWxhciwgc2V0U2NhbGFyVmFsdWUgfSBmcm9tICcuL2NzdC1zY2FsYXIuanMnO1xuZXhwb3J0IHsgc3RyaW5naWZ5IH0gZnJvbSAnLi9jc3Qtc3RyaW5naWZ5LmpzJztcbmV4cG9ydCB7IHZpc2l0IH0gZnJvbSAnLi9jc3QtdmlzaXQuanMnO1xuXG4vKiogVGhlIGJ5dGUgb3JkZXIgbWFyayAqL1xuY29uc3QgQk9NID0gJ1xcdXtGRUZGfSc7XG4vKiogU3RhcnQgb2YgZG9jLW1vZGUgKi9cbmNvbnN0IERPQ1VNRU5UID0gJ1xceDAyJzsgLy8gQzA6IFN0YXJ0IG9mIFRleHRcbi8qKiBVbmV4cGVjdGVkIGVuZCBvZiBmbG93LW1vZGUgKi9cbmNvbnN0IEZMT1dfRU5EID0gJ1xceDE4JzsgLy8gQzA6IENhbmNlbFxuLyoqIE5leHQgdG9rZW4gaXMgYSBzY2FsYXIgdmFsdWUgKi9cbmNvbnN0IFNDQUxBUiA9ICdcXHgxZic7IC8vIEMwOiBVbml0IFNlcGFyYXRvclxuLyoqIEByZXR1cm5zIGB0cnVlYCBpZiBgdG9rZW5gIGlzIGEgZmxvdyBvciBibG9jayBjb2xsZWN0aW9uICovXG5jb25zdCBpc0NvbGxlY3Rpb24gPSAodG9rZW4pID0+ICEhdG9rZW4gJiYgJ2l0ZW1zJyBpbiB0b2tlbjtcbi8qKiBAcmV0dXJucyBgdHJ1ZWAgaWYgYHRva2VuYCBpcyBhIGZsb3cgb3IgYmxvY2sgc2NhbGFyOyBub3QgYW4gYWxpYXMgKi9cbmNvbnN0IGlzU2NhbGFyID0gKHRva2VuKSA9PiAhIXRva2VuICYmXG4gICAgKHRva2VuLnR5cGUgPT09ICdzY2FsYXInIHx8XG4gICAgICAgIHRva2VuLnR5cGUgPT09ICdzaW5nbGUtcXVvdGVkLXNjYWxhcicgfHxcbiAgICAgICAgdG9rZW4udHlwZSA9PT0gJ2RvdWJsZS1xdW90ZWQtc2NhbGFyJyB8fFxuICAgICAgICB0b2tlbi50eXBlID09PSAnYmxvY2stc2NhbGFyJyk7XG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuLyoqIEdldCBhIHByaW50YWJsZSByZXByZXNlbnRhdGlvbiBvZiBhIGxleGVyIHRva2VuICovXG5mdW5jdGlvbiBwcmV0dHlUb2tlbih0b2tlbikge1xuICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgICAgY2FzZSBCT006XG4gICAgICAgICAgICByZXR1cm4gJzxCT00+JztcbiAgICAgICAgY2FzZSBET0NVTUVOVDpcbiAgICAgICAgICAgIHJldHVybiAnPERPQz4nO1xuICAgICAgICBjYXNlIEZMT1dfRU5EOlxuICAgICAgICAgICAgcmV0dXJuICc8RkxPV19FTkQ+JztcbiAgICAgICAgY2FzZSBTQ0FMQVI6XG4gICAgICAgICAgICByZXR1cm4gJzxTQ0FMQVI+JztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh0b2tlbik7XG4gICAgfVxufVxuLyoqIElkZW50aWZ5IHRoZSB0eXBlIG9mIGEgbGV4ZXIgdG9rZW4uIE1heSByZXR1cm4gYG51bGxgIGZvciB1bmtub3duIHRva2Vucy4gKi9cbmZ1bmN0aW9uIHRva2VuVHlwZShzb3VyY2UpIHtcbiAgICBzd2l0Y2ggKHNvdXJjZSkge1xuICAgICAgICBjYXNlIEJPTTpcbiAgICAgICAgICAgIHJldHVybiAnYnl0ZS1vcmRlci1tYXJrJztcbiAgICAgICAgY2FzZSBET0NVTUVOVDpcbiAgICAgICAgICAgIHJldHVybiAnZG9jLW1vZGUnO1xuICAgICAgICBjYXNlIEZMT1dfRU5EOlxuICAgICAgICAgICAgcmV0dXJuICdmbG93LWVycm9yLWVuZCc7XG4gICAgICAgIGNhc2UgU0NBTEFSOlxuICAgICAgICAgICAgcmV0dXJuICdzY2FsYXInO1xuICAgICAgICBjYXNlICctLS0nOlxuICAgICAgICAgICAgcmV0dXJuICdkb2Mtc3RhcnQnO1xuICAgICAgICBjYXNlICcuLi4nOlxuICAgICAgICAgICAgcmV0dXJuICdkb2MtZW5kJztcbiAgICAgICAgY2FzZSAnJzpcbiAgICAgICAgY2FzZSAnXFxuJzpcbiAgICAgICAgY2FzZSAnXFxyXFxuJzpcbiAgICAgICAgICAgIHJldHVybiAnbmV3bGluZSc7XG4gICAgICAgIGNhc2UgJy0nOlxuICAgICAgICAgICAgcmV0dXJuICdzZXEtaXRlbS1pbmQnO1xuICAgICAgICBjYXNlICc/JzpcbiAgICAgICAgICAgIHJldHVybiAnZXhwbGljaXQta2V5LWluZCc7XG4gICAgICAgIGNhc2UgJzonOlxuICAgICAgICAgICAgcmV0dXJuICdtYXAtdmFsdWUtaW5kJztcbiAgICAgICAgY2FzZSAneyc6XG4gICAgICAgICAgICByZXR1cm4gJ2Zsb3ctbWFwLXN0YXJ0JztcbiAgICAgICAgY2FzZSAnfSc6XG4gICAgICAgICAgICByZXR1cm4gJ2Zsb3ctbWFwLWVuZCc7XG4gICAgICAgIGNhc2UgJ1snOlxuICAgICAgICAgICAgcmV0dXJuICdmbG93LXNlcS1zdGFydCc7XG4gICAgICAgIGNhc2UgJ10nOlxuICAgICAgICAgICAgcmV0dXJuICdmbG93LXNlcS1lbmQnO1xuICAgICAgICBjYXNlICcsJzpcbiAgICAgICAgICAgIHJldHVybiAnY29tbWEnO1xuICAgIH1cbiAgICBzd2l0Y2ggKHNvdXJjZVswXSkge1xuICAgICAgICBjYXNlICcgJzpcbiAgICAgICAgY2FzZSAnXFx0JzpcbiAgICAgICAgICAgIHJldHVybiAnc3BhY2UnO1xuICAgICAgICBjYXNlICcjJzpcbiAgICAgICAgICAgIHJldHVybiAnY29tbWVudCc7XG4gICAgICAgIGNhc2UgJyUnOlxuICAgICAgICAgICAgcmV0dXJuICdkaXJlY3RpdmUtbGluZSc7XG4gICAgICAgIGNhc2UgJyonOlxuICAgICAgICAgICAgcmV0dXJuICdhbGlhcyc7XG4gICAgICAgIGNhc2UgJyYnOlxuICAgICAgICAgICAgcmV0dXJuICdhbmNob3InO1xuICAgICAgICBjYXNlICchJzpcbiAgICAgICAgICAgIHJldHVybiAndGFnJztcbiAgICAgICAgY2FzZSBcIidcIjpcbiAgICAgICAgICAgIHJldHVybiAnc2luZ2xlLXF1b3RlZC1zY2FsYXInO1xuICAgICAgICBjYXNlICdcIic6XG4gICAgICAgICAgICByZXR1cm4gJ2RvdWJsZS1xdW90ZWQtc2NhbGFyJztcbiAgICAgICAgY2FzZSAnfCc6XG4gICAgICAgIGNhc2UgJz4nOlxuICAgICAgICAgICAgcmV0dXJuICdibG9jay1zY2FsYXItaGVhZGVyJztcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCB7IEJPTSwgRE9DVU1FTlQsIEZMT1dfRU5ELCBTQ0FMQVIsIGlzQ29sbGVjdGlvbiwgaXNTY2FsYXIsIHByZXR0eVRva2VuLCB0b2tlblR5cGUgfTtcbiIsICJpbXBvcnQgeyBCT00sIERPQ1VNRU5ULCBGTE9XX0VORCwgU0NBTEFSIH0gZnJvbSAnLi9jc3QuanMnO1xuXG4vKlxuU1RBUlQgLT4gc3RyZWFtXG5cbnN0cmVhbVxuICBkaXJlY3RpdmUgLT4gbGluZS1lbmQgLT4gc3RyZWFtXG4gIGluZGVudCArIGxpbmUtZW5kIC0+IHN0cmVhbVxuICBbZWxzZV0gLT4gbGluZS1zdGFydFxuXG5saW5lLWVuZFxuICBjb21tZW50IC0+IGxpbmUtZW5kXG4gIG5ld2xpbmUgLT4gLlxuICBpbnB1dC1lbmQgLT4gRU5EXG5cbmxpbmUtc3RhcnRcbiAgZG9jLXN0YXJ0IC0+IGRvY1xuICBkb2MtZW5kIC0+IHN0cmVhbVxuICBbZWxzZV0gLT4gaW5kZW50IC0+IGJsb2NrLXN0YXJ0XG5cbmJsb2NrLXN0YXJ0XG4gIHNlcS1pdGVtLXN0YXJ0IC0+IGJsb2NrLXN0YXJ0XG4gIGV4cGxpY2l0LWtleS1zdGFydCAtPiBibG9jay1zdGFydFxuICBtYXAtdmFsdWUtc3RhcnQgLT4gYmxvY2stc3RhcnRcbiAgW2Vsc2VdIC0+IGRvY1xuXG5kb2NcbiAgbGluZS1lbmQgLT4gbGluZS1zdGFydFxuICBzcGFjZXMgLT4gZG9jXG4gIGFuY2hvciAtPiBkb2NcbiAgdGFnIC0+IGRvY1xuICBmbG93LXN0YXJ0IC0+IGZsb3cgLT4gZG9jXG4gIGZsb3ctZW5kIC0+IGVycm9yIC0+IGRvY1xuICBzZXEtaXRlbS1zdGFydCAtPiBlcnJvciAtPiBkb2NcbiAgZXhwbGljaXQta2V5LXN0YXJ0IC0+IGVycm9yIC0+IGRvY1xuICBtYXAtdmFsdWUtc3RhcnQgLT4gZG9jXG4gIGFsaWFzIC0+IGRvY1xuICBxdW90ZS1zdGFydCAtPiBxdW90ZWQtc2NhbGFyIC0+IGRvY1xuICBibG9jay1zY2FsYXItaGVhZGVyIC0+IGxpbmUtZW5kIC0+IGJsb2NrLXNjYWxhcihtaW4pIC0+IGxpbmUtc3RhcnRcbiAgW2Vsc2VdIC0+IHBsYWluLXNjYWxhcihmYWxzZSwgbWluKSAtPiBkb2NcblxuZmxvd1xuICBsaW5lLWVuZCAtPiBmbG93XG4gIHNwYWNlcyAtPiBmbG93XG4gIGFuY2hvciAtPiBmbG93XG4gIHRhZyAtPiBmbG93XG4gIGZsb3ctc3RhcnQgLT4gZmxvdyAtPiBmbG93XG4gIGZsb3ctZW5kIC0+IC5cbiAgc2VxLWl0ZW0tc3RhcnQgLT4gZXJyb3IgLT4gZmxvd1xuICBleHBsaWNpdC1rZXktc3RhcnQgLT4gZmxvd1xuICBtYXAtdmFsdWUtc3RhcnQgLT4gZmxvd1xuICBhbGlhcyAtPiBmbG93XG4gIHF1b3RlLXN0YXJ0IC0+IHF1b3RlZC1zY2FsYXIgLT4gZmxvd1xuICBjb21tYSAtPiBmbG93XG4gIFtlbHNlXSAtPiBwbGFpbi1zY2FsYXIodHJ1ZSwgMCkgLT4gZmxvd1xuXG5xdW90ZWQtc2NhbGFyXG4gIHF1b3RlLWVuZCAtPiAuXG4gIFtlbHNlXSAtPiBxdW90ZWQtc2NhbGFyXG5cbmJsb2NrLXNjYWxhcihtaW4pXG4gIG5ld2xpbmUgKyBwZWVrKGluZGVudCA8IG1pbikgLT4gLlxuICBbZWxzZV0gLT4gYmxvY2stc2NhbGFyKG1pbilcblxucGxhaW4tc2NhbGFyKGlzLWZsb3csIG1pbilcbiAgc2NhbGFyLWVuZChpcy1mbG93KSAtPiAuXG4gIHBlZWsobmV3bGluZSArIChpbmRlbnQgPCBtaW4pKSAtPiAuXG4gIFtlbHNlXSAtPiBwbGFpbi1zY2FsYXIobWluKVxuKi9cbmZ1bmN0aW9uIGlzRW1wdHkoY2gpIHtcbiAgICBzd2l0Y2ggKGNoKSB7XG4gICAgICAgIGNhc2UgdW5kZWZpbmVkOlxuICAgICAgICBjYXNlICcgJzpcbiAgICAgICAgY2FzZSAnXFxuJzpcbiAgICAgICAgY2FzZSAnXFxyJzpcbiAgICAgICAgY2FzZSAnXFx0JzpcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn1cbmNvbnN0IGhleERpZ2l0cyA9IG5ldyBTZXQoJzAxMjM0NTY3ODlBQkNERUZhYmNkZWYnKTtcbmNvbnN0IHRhZ0NoYXJzID0gbmV3IFNldChcIjAxMjM0NTY3ODlBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6LSM7Lz86QCY9KyRfLiF+KicoKVwiKTtcbmNvbnN0IGZsb3dJbmRpY2F0b3JDaGFycyA9IG5ldyBTZXQoJyxbXXt9Jyk7XG5jb25zdCBpbnZhbGlkQW5jaG9yQ2hhcnMgPSBuZXcgU2V0KCcgLFtde31cXG5cXHJcXHQnKTtcbmNvbnN0IGlzTm90QW5jaG9yQ2hhciA9IChjaCkgPT4gIWNoIHx8IGludmFsaWRBbmNob3JDaGFycy5oYXMoY2gpO1xuLyoqXG4gKiBTcGxpdHMgYW4gaW5wdXQgc3RyaW5nIGludG8gbGV4aWNhbCB0b2tlbnMsIGkuZS4gc21hbGxlciBzdHJpbmdzIHRoYXQgYXJlXG4gKiBlYXNpbHkgaWRlbnRpZmlhYmxlIGJ5IGB0b2tlbnMudG9rZW5UeXBlKClgLlxuICpcbiAqIExleGluZyBzdGFydHMgYWx3YXlzIGluIGEgXCJzdHJlYW1cIiBjb250ZXh0LiBJbmNvbXBsZXRlIGlucHV0IG1heSBiZSBidWZmZXJlZFxuICogdW50aWwgYSBjb21wbGV0ZSB0b2tlbiBjYW4gYmUgZW1pdHRlZC5cbiAqXG4gKiBJbiBhZGRpdGlvbiB0byBzbGljZXMgb2YgdGhlIG9yaWdpbmFsIGlucHV0LCB0aGUgZm9sbG93aW5nIGNvbnRyb2wgY2hhcmFjdGVyc1xuICogbWF5IGFsc28gYmUgZW1pdHRlZDpcbiAqXG4gKiAtIGBcXHgwMmAgKFN0YXJ0IG9mIFRleHQpOiBBIGRvY3VtZW50IHN0YXJ0cyB3aXRoIHRoZSBuZXh0IHRva2VuXG4gKiAtIGBcXHgxOGAgKENhbmNlbCk6IFVuZXhwZWN0ZWQgZW5kIG9mIGZsb3ctbW9kZSAoaW5kaWNhdGVzIGFuIGVycm9yKVxuICogLSBgXFx4MWZgIChVbml0IFNlcGFyYXRvcik6IE5leHQgdG9rZW4gaXMgYSBzY2FsYXIgdmFsdWVcbiAqIC0gYFxcdXtGRUZGfWAgKEJ5dGUgb3JkZXIgbWFyayk6IEVtaXR0ZWQgc2VwYXJhdGVseSBvdXRzaWRlIGRvY3VtZW50c1xuICovXG5jbGFzcyBMZXhlciB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBGbGFnIGluZGljYXRpbmcgd2hldGhlciB0aGUgZW5kIG9mIHRoZSBjdXJyZW50IGJ1ZmZlciBtYXJrcyB0aGUgZW5kIG9mXG4gICAgICAgICAqIGFsbCBpbnB1dFxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5hdEVuZCA9IGZhbHNlO1xuICAgICAgICAvKipcbiAgICAgICAgICogRXhwbGljaXQgaW5kZW50IHNldCBpbiBibG9jayBzY2FsYXIgaGVhZGVyLCBhcyBhbiBvZmZzZXQgZnJvbSB0aGUgY3VycmVudFxuICAgICAgICAgKiBtaW5pbXVtIGluZGVudCwgc28gZS5nLiBzZXQgdG8gMSBmcm9tIGEgaGVhZGVyIGB8MitgLiBTZXQgdG8gLTEgaWYgbm90XG4gICAgICAgICAqIGV4cGxpY2l0bHkgc2V0LlxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5ibG9ja1NjYWxhckluZGVudCA9IC0xO1xuICAgICAgICAvKipcbiAgICAgICAgICogQmxvY2sgc2NhbGFycyB0aGF0IGluY2x1ZGUgYSArIChrZWVwKSBjaG9tcGluZyBpbmRpY2F0b3IgaW4gdGhlaXIgaGVhZGVyXG4gICAgICAgICAqIGluY2x1ZGUgdHJhaWxpbmcgZW1wdHkgbGluZXMsIHdoaWNoIGFyZSBvdGhlcndpc2UgZXhjbHVkZWQgZnJvbSB0aGVcbiAgICAgICAgICogc2NhbGFyJ3MgY29udGVudHMuXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLmJsb2NrU2NhbGFyS2VlcCA9IGZhbHNlO1xuICAgICAgICAvKiogQ3VycmVudCBpbnB1dCAqL1xuICAgICAgICB0aGlzLmJ1ZmZlciA9ICcnO1xuICAgICAgICAvKipcbiAgICAgICAgICogRmxhZyBub3Rpbmcgd2hldGhlciB0aGUgbWFwIHZhbHVlIGluZGljYXRvciA6IGNhbiBpbW1lZGlhdGVseSBmb2xsb3cgdGhpc1xuICAgICAgICAgKiBub2RlIHdpdGhpbiBhIGZsb3cgY29udGV4dC5cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuZmxvd0tleSA9IGZhbHNlO1xuICAgICAgICAvKiogQ291bnQgb2Ygc3Vycm91bmRpbmcgZmxvdyBjb2xsZWN0aW9uIGxldmVscy4gKi9cbiAgICAgICAgdGhpcy5mbG93TGV2ZWwgPSAwO1xuICAgICAgICAvKipcbiAgICAgICAgICogTWluaW11bSBsZXZlbCBvZiBpbmRlbnRhdGlvbiByZXF1aXJlZCBmb3IgbmV4dCBsaW5lcyB0byBiZSBwYXJzZWQgYXMgYVxuICAgICAgICAgKiBwYXJ0IG9mIHRoZSBjdXJyZW50IHNjYWxhciB2YWx1ZS5cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuaW5kZW50TmV4dCA9IDA7XG4gICAgICAgIC8qKiBJbmRlbnRhdGlvbiBsZXZlbCBvZiB0aGUgY3VycmVudCBsaW5lLiAqL1xuICAgICAgICB0aGlzLmluZGVudFZhbHVlID0gMDtcbiAgICAgICAgLyoqIFBvc2l0aW9uIG9mIHRoZSBuZXh0IFxcbiBjaGFyYWN0ZXIuICovXG4gICAgICAgIHRoaXMubGluZUVuZFBvcyA9IG51bGw7XG4gICAgICAgIC8qKiBTdG9yZXMgdGhlIHN0YXRlIG9mIHRoZSBsZXhlciBpZiByZWFjaGluZyB0aGUgZW5kIG9mIGluY3BvbXBsZXRlIGlucHV0ICovXG4gICAgICAgIHRoaXMubmV4dCA9IG51bGw7XG4gICAgICAgIC8qKiBBIHBvaW50ZXIgdG8gYGJ1ZmZlcmA7IHRoZSBjdXJyZW50IHBvc2l0aW9uIG9mIHRoZSBsZXhlci4gKi9cbiAgICAgICAgdGhpcy5wb3MgPSAwO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBHZW5lcmF0ZSBZQU1MIHRva2VucyBmcm9tIHRoZSBgc291cmNlYCBzdHJpbmcuIElmIGBpbmNvbXBsZXRlYCxcbiAgICAgKiBhIHBhcnQgb2YgdGhlIGxhc3QgbGluZSBtYXkgYmUgbGVmdCBhcyBhIGJ1ZmZlciBmb3IgdGhlIG5leHQgY2FsbC5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIEEgZ2VuZXJhdG9yIG9mIGxleGljYWwgdG9rZW5zXG4gICAgICovXG4gICAgKmxleChzb3VyY2UsIGluY29tcGxldGUgPSBmYWxzZSkge1xuICAgICAgICBpZiAoc291cmNlKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHNvdXJjZSAhPT0gJ3N0cmluZycpXG4gICAgICAgICAgICAgICAgdGhyb3cgVHlwZUVycm9yKCdzb3VyY2UgaXMgbm90IGEgc3RyaW5nJyk7XG4gICAgICAgICAgICB0aGlzLmJ1ZmZlciA9IHRoaXMuYnVmZmVyID8gdGhpcy5idWZmZXIgKyBzb3VyY2UgOiBzb3VyY2U7XG4gICAgICAgICAgICB0aGlzLmxpbmVFbmRQb3MgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYXRFbmQgPSAhaW5jb21wbGV0ZTtcbiAgICAgICAgbGV0IG5leHQgPSB0aGlzLm5leHQgPz8gJ3N0cmVhbSc7XG4gICAgICAgIHdoaWxlIChuZXh0ICYmIChpbmNvbXBsZXRlIHx8IHRoaXMuaGFzQ2hhcnMoMSkpKVxuICAgICAgICAgICAgbmV4dCA9IHlpZWxkKiB0aGlzLnBhcnNlTmV4dChuZXh0KTtcbiAgICB9XG4gICAgYXRMaW5lRW5kKCkge1xuICAgICAgICBsZXQgaSA9IHRoaXMucG9zO1xuICAgICAgICBsZXQgY2ggPSB0aGlzLmJ1ZmZlcltpXTtcbiAgICAgICAgd2hpbGUgKGNoID09PSAnICcgfHwgY2ggPT09ICdcXHQnKVxuICAgICAgICAgICAgY2ggPSB0aGlzLmJ1ZmZlclsrK2ldO1xuICAgICAgICBpZiAoIWNoIHx8IGNoID09PSAnIycgfHwgY2ggPT09ICdcXG4nKVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIGlmIChjaCA9PT0gJ1xccicpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5idWZmZXJbaSArIDFdID09PSAnXFxuJztcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjaGFyQXQobikge1xuICAgICAgICByZXR1cm4gdGhpcy5idWZmZXJbdGhpcy5wb3MgKyBuXTtcbiAgICB9XG4gICAgY29udGludWVTY2FsYXIob2Zmc2V0KSB7XG4gICAgICAgIGxldCBjaCA9IHRoaXMuYnVmZmVyW29mZnNldF07XG4gICAgICAgIGlmICh0aGlzLmluZGVudE5leHQgPiAwKSB7XG4gICAgICAgICAgICBsZXQgaW5kZW50ID0gMDtcbiAgICAgICAgICAgIHdoaWxlIChjaCA9PT0gJyAnKVxuICAgICAgICAgICAgICAgIGNoID0gdGhpcy5idWZmZXJbKytpbmRlbnQgKyBvZmZzZXRdO1xuICAgICAgICAgICAgaWYgKGNoID09PSAnXFxyJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5leHQgPSB0aGlzLmJ1ZmZlcltpbmRlbnQgKyBvZmZzZXQgKyAxXTtcbiAgICAgICAgICAgICAgICBpZiAobmV4dCA9PT0gJ1xcbicgfHwgKCFuZXh0ICYmICF0aGlzLmF0RW5kKSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mZnNldCArIGluZGVudCArIDE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gY2ggPT09ICdcXG4nIHx8IGluZGVudCA+PSB0aGlzLmluZGVudE5leHQgfHwgKCFjaCAmJiAhdGhpcy5hdEVuZClcbiAgICAgICAgICAgICAgICA/IG9mZnNldCArIGluZGVudFxuICAgICAgICAgICAgICAgIDogLTE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNoID09PSAnLScgfHwgY2ggPT09ICcuJykge1xuICAgICAgICAgICAgY29uc3QgZHQgPSB0aGlzLmJ1ZmZlci5zdWJzdHIob2Zmc2V0LCAzKTtcbiAgICAgICAgICAgIGlmICgoZHQgPT09ICctLS0nIHx8IGR0ID09PSAnLi4uJykgJiYgaXNFbXB0eSh0aGlzLmJ1ZmZlcltvZmZzZXQgKyAzXSkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvZmZzZXQ7XG4gICAgfVxuICAgIGdldExpbmUoKSB7XG4gICAgICAgIGxldCBlbmQgPSB0aGlzLmxpbmVFbmRQb3M7XG4gICAgICAgIGlmICh0eXBlb2YgZW5kICE9PSAnbnVtYmVyJyB8fCAoZW5kICE9PSAtMSAmJiBlbmQgPCB0aGlzLnBvcykpIHtcbiAgICAgICAgICAgIGVuZCA9IHRoaXMuYnVmZmVyLmluZGV4T2YoJ1xcbicsIHRoaXMucG9zKTtcbiAgICAgICAgICAgIHRoaXMubGluZUVuZFBvcyA9IGVuZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZW5kID09PSAtMSlcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmF0RW5kID8gdGhpcy5idWZmZXIuc3Vic3RyaW5nKHRoaXMucG9zKSA6IG51bGw7XG4gICAgICAgIGlmICh0aGlzLmJ1ZmZlcltlbmQgLSAxXSA9PT0gJ1xccicpXG4gICAgICAgICAgICBlbmQgLT0gMTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYnVmZmVyLnN1YnN0cmluZyh0aGlzLnBvcywgZW5kKTtcbiAgICB9XG4gICAgaGFzQ2hhcnMobikge1xuICAgICAgICByZXR1cm4gdGhpcy5wb3MgKyBuIDw9IHRoaXMuYnVmZmVyLmxlbmd0aDtcbiAgICB9XG4gICAgc2V0TmV4dChzdGF0ZSkge1xuICAgICAgICB0aGlzLmJ1ZmZlciA9IHRoaXMuYnVmZmVyLnN1YnN0cmluZyh0aGlzLnBvcyk7XG4gICAgICAgIHRoaXMucG9zID0gMDtcbiAgICAgICAgdGhpcy5saW5lRW5kUG9zID0gbnVsbDtcbiAgICAgICAgdGhpcy5uZXh0ID0gc3RhdGU7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBwZWVrKG4pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYnVmZmVyLnN1YnN0cih0aGlzLnBvcywgbik7XG4gICAgfVxuICAgICpwYXJzZU5leHQobmV4dCkge1xuICAgICAgICBzd2l0Y2ggKG5leHQpIHtcbiAgICAgICAgICAgIGNhc2UgJ3N0cmVhbSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHlpZWxkKiB0aGlzLnBhcnNlU3RyZWFtKCk7XG4gICAgICAgICAgICBjYXNlICdsaW5lLXN0YXJ0JzpcbiAgICAgICAgICAgICAgICByZXR1cm4geWllbGQqIHRoaXMucGFyc2VMaW5lU3RhcnQoKTtcbiAgICAgICAgICAgIGNhc2UgJ2Jsb2NrLXN0YXJ0JzpcbiAgICAgICAgICAgICAgICByZXR1cm4geWllbGQqIHRoaXMucGFyc2VCbG9ja1N0YXJ0KCk7XG4gICAgICAgICAgICBjYXNlICdkb2MnOlxuICAgICAgICAgICAgICAgIHJldHVybiB5aWVsZCogdGhpcy5wYXJzZURvY3VtZW50KCk7XG4gICAgICAgICAgICBjYXNlICdmbG93JzpcbiAgICAgICAgICAgICAgICByZXR1cm4geWllbGQqIHRoaXMucGFyc2VGbG93Q29sbGVjdGlvbigpO1xuICAgICAgICAgICAgY2FzZSAncXVvdGVkLXNjYWxhcic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHlpZWxkKiB0aGlzLnBhcnNlUXVvdGVkU2NhbGFyKCk7XG4gICAgICAgICAgICBjYXNlICdibG9jay1zY2FsYXInOlxuICAgICAgICAgICAgICAgIHJldHVybiB5aWVsZCogdGhpcy5wYXJzZUJsb2NrU2NhbGFyKCk7XG4gICAgICAgICAgICBjYXNlICdwbGFpbi1zY2FsYXInOlxuICAgICAgICAgICAgICAgIHJldHVybiB5aWVsZCogdGhpcy5wYXJzZVBsYWluU2NhbGFyKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgKnBhcnNlU3RyZWFtKCkge1xuICAgICAgICBsZXQgbGluZSA9IHRoaXMuZ2V0TGluZSgpO1xuICAgICAgICBpZiAobGluZSA9PT0gbnVsbClcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNldE5leHQoJ3N0cmVhbScpO1xuICAgICAgICBpZiAobGluZVswXSA9PT0gQk9NKSB7XG4gICAgICAgICAgICB5aWVsZCogdGhpcy5wdXNoQ291bnQoMSk7XG4gICAgICAgICAgICBsaW5lID0gbGluZS5zdWJzdHJpbmcoMSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxpbmVbMF0gPT09ICclJykge1xuICAgICAgICAgICAgbGV0IGRpckVuZCA9IGxpbmUubGVuZ3RoO1xuICAgICAgICAgICAgbGV0IGNzID0gbGluZS5pbmRleE9mKCcjJyk7XG4gICAgICAgICAgICB3aGlsZSAoY3MgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2ggPSBsaW5lW2NzIC0gMV07XG4gICAgICAgICAgICAgICAgaWYgKGNoID09PSAnICcgfHwgY2ggPT09ICdcXHQnKSB7XG4gICAgICAgICAgICAgICAgICAgIGRpckVuZCA9IGNzIC0gMTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjcyA9IGxpbmUuaW5kZXhPZignIycsIGNzICsgMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjaCA9IGxpbmVbZGlyRW5kIC0gMV07XG4gICAgICAgICAgICAgICAgaWYgKGNoID09PSAnICcgfHwgY2ggPT09ICdcXHQnKVxuICAgICAgICAgICAgICAgICAgICBkaXJFbmQgLT0gMTtcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgbiA9ICh5aWVsZCogdGhpcy5wdXNoQ291bnQoZGlyRW5kKSkgKyAoeWllbGQqIHRoaXMucHVzaFNwYWNlcyh0cnVlKSk7XG4gICAgICAgICAgICB5aWVsZCogdGhpcy5wdXNoQ291bnQobGluZS5sZW5ndGggLSBuKTsgLy8gcG9zc2libGUgY29tbWVudFxuICAgICAgICAgICAgdGhpcy5wdXNoTmV3bGluZSgpO1xuICAgICAgICAgICAgcmV0dXJuICdzdHJlYW0nO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmF0TGluZUVuZCgpKSB7XG4gICAgICAgICAgICBjb25zdCBzcCA9IHlpZWxkKiB0aGlzLnB1c2hTcGFjZXModHJ1ZSk7XG4gICAgICAgICAgICB5aWVsZCogdGhpcy5wdXNoQ291bnQobGluZS5sZW5ndGggLSBzcCk7XG4gICAgICAgICAgICB5aWVsZCogdGhpcy5wdXNoTmV3bGluZSgpO1xuICAgICAgICAgICAgcmV0dXJuICdzdHJlYW0nO1xuICAgICAgICB9XG4gICAgICAgIHlpZWxkIERPQ1VNRU5UO1xuICAgICAgICByZXR1cm4geWllbGQqIHRoaXMucGFyc2VMaW5lU3RhcnQoKTtcbiAgICB9XG4gICAgKnBhcnNlTGluZVN0YXJ0KCkge1xuICAgICAgICBjb25zdCBjaCA9IHRoaXMuY2hhckF0KDApO1xuICAgICAgICBpZiAoIWNoICYmICF0aGlzLmF0RW5kKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0TmV4dCgnbGluZS1zdGFydCcpO1xuICAgICAgICBpZiAoY2ggPT09ICctJyB8fCBjaCA9PT0gJy4nKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuYXRFbmQgJiYgIXRoaXMuaGFzQ2hhcnMoNCkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0TmV4dCgnbGluZS1zdGFydCcpO1xuICAgICAgICAgICAgY29uc3QgcyA9IHRoaXMucGVlaygzKTtcbiAgICAgICAgICAgIGlmICgocyA9PT0gJy0tLScgfHwgcyA9PT0gJy4uLicpICYmIGlzRW1wdHkodGhpcy5jaGFyQXQoMykpKSB7XG4gICAgICAgICAgICAgICAgeWllbGQqIHRoaXMucHVzaENvdW50KDMpO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5kZW50VmFsdWUgPSAwO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5kZW50TmV4dCA9IDA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHMgPT09ICctLS0nID8gJ2RvYycgOiAnc3RyZWFtJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmluZGVudFZhbHVlID0geWllbGQqIHRoaXMucHVzaFNwYWNlcyhmYWxzZSk7XG4gICAgICAgIGlmICh0aGlzLmluZGVudE5leHQgPiB0aGlzLmluZGVudFZhbHVlICYmICFpc0VtcHR5KHRoaXMuY2hhckF0KDEpKSlcbiAgICAgICAgICAgIHRoaXMuaW5kZW50TmV4dCA9IHRoaXMuaW5kZW50VmFsdWU7XG4gICAgICAgIHJldHVybiB5aWVsZCogdGhpcy5wYXJzZUJsb2NrU3RhcnQoKTtcbiAgICB9XG4gICAgKnBhcnNlQmxvY2tTdGFydCgpIHtcbiAgICAgICAgY29uc3QgW2NoMCwgY2gxXSA9IHRoaXMucGVlaygyKTtcbiAgICAgICAgaWYgKCFjaDEgJiYgIXRoaXMuYXRFbmQpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZXROZXh0KCdibG9jay1zdGFydCcpO1xuICAgICAgICBpZiAoKGNoMCA9PT0gJy0nIHx8IGNoMCA9PT0gJz8nIHx8IGNoMCA9PT0gJzonKSAmJiBpc0VtcHR5KGNoMSkpIHtcbiAgICAgICAgICAgIGNvbnN0IG4gPSAoeWllbGQqIHRoaXMucHVzaENvdW50KDEpKSArICh5aWVsZCogdGhpcy5wdXNoU3BhY2VzKHRydWUpKTtcbiAgICAgICAgICAgIHRoaXMuaW5kZW50TmV4dCA9IHRoaXMuaW5kZW50VmFsdWUgKyAxO1xuICAgICAgICAgICAgdGhpcy5pbmRlbnRWYWx1ZSArPSBuO1xuICAgICAgICAgICAgcmV0dXJuIHlpZWxkKiB0aGlzLnBhcnNlQmxvY2tTdGFydCgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAnZG9jJztcbiAgICB9XG4gICAgKnBhcnNlRG9jdW1lbnQoKSB7XG4gICAgICAgIHlpZWxkKiB0aGlzLnB1c2hTcGFjZXModHJ1ZSk7XG4gICAgICAgIGNvbnN0IGxpbmUgPSB0aGlzLmdldExpbmUoKTtcbiAgICAgICAgaWYgKGxpbmUgPT09IG51bGwpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZXROZXh0KCdkb2MnKTtcbiAgICAgICAgbGV0IG4gPSB5aWVsZCogdGhpcy5wdXNoSW5kaWNhdG9ycygpO1xuICAgICAgICBzd2l0Y2ggKGxpbmVbbl0pIHtcbiAgICAgICAgICAgIGNhc2UgJyMnOlxuICAgICAgICAgICAgICAgIHlpZWxkKiB0aGlzLnB1c2hDb3VudChsaW5lLmxlbmd0aCAtIG4pO1xuICAgICAgICAgICAgLy8gZmFsbHRocm91Z2hcbiAgICAgICAgICAgIGNhc2UgdW5kZWZpbmVkOlxuICAgICAgICAgICAgICAgIHlpZWxkKiB0aGlzLnB1c2hOZXdsaW5lKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHlpZWxkKiB0aGlzLnBhcnNlTGluZVN0YXJ0KCk7XG4gICAgICAgICAgICBjYXNlICd7JzpcbiAgICAgICAgICAgIGNhc2UgJ1snOlxuICAgICAgICAgICAgICAgIHlpZWxkKiB0aGlzLnB1c2hDb3VudCgxKTtcbiAgICAgICAgICAgICAgICB0aGlzLmZsb3dLZXkgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLmZsb3dMZXZlbCA9IDE7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdmbG93JztcbiAgICAgICAgICAgIGNhc2UgJ30nOlxuICAgICAgICAgICAgY2FzZSAnXSc6XG4gICAgICAgICAgICAgICAgLy8gdGhpcyBpcyBhbiBlcnJvclxuICAgICAgICAgICAgICAgIHlpZWxkKiB0aGlzLnB1c2hDb3VudCgxKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2RvYyc7XG4gICAgICAgICAgICBjYXNlICcqJzpcbiAgICAgICAgICAgICAgICB5aWVsZCogdGhpcy5wdXNoVW50aWwoaXNOb3RBbmNob3JDaGFyKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2RvYyc7XG4gICAgICAgICAgICBjYXNlICdcIic6XG4gICAgICAgICAgICBjYXNlIFwiJ1wiOlxuICAgICAgICAgICAgICAgIHJldHVybiB5aWVsZCogdGhpcy5wYXJzZVF1b3RlZFNjYWxhcigpO1xuICAgICAgICAgICAgY2FzZSAnfCc6XG4gICAgICAgICAgICBjYXNlICc+JzpcbiAgICAgICAgICAgICAgICBuICs9IHlpZWxkKiB0aGlzLnBhcnNlQmxvY2tTY2FsYXJIZWFkZXIoKTtcbiAgICAgICAgICAgICAgICBuICs9IHlpZWxkKiB0aGlzLnB1c2hTcGFjZXModHJ1ZSk7XG4gICAgICAgICAgICAgICAgeWllbGQqIHRoaXMucHVzaENvdW50KGxpbmUubGVuZ3RoIC0gbik7XG4gICAgICAgICAgICAgICAgeWllbGQqIHRoaXMucHVzaE5ld2xpbmUoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4geWllbGQqIHRoaXMucGFyc2VCbG9ja1NjYWxhcigpO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4geWllbGQqIHRoaXMucGFyc2VQbGFpblNjYWxhcigpO1xuICAgICAgICB9XG4gICAgfVxuICAgICpwYXJzZUZsb3dDb2xsZWN0aW9uKCkge1xuICAgICAgICBsZXQgbmwsIHNwO1xuICAgICAgICBsZXQgaW5kZW50ID0gLTE7XG4gICAgICAgIGRvIHtcbiAgICAgICAgICAgIG5sID0geWllbGQqIHRoaXMucHVzaE5ld2xpbmUoKTtcbiAgICAgICAgICAgIGlmIChubCA+IDApIHtcbiAgICAgICAgICAgICAgICBzcCA9IHlpZWxkKiB0aGlzLnB1c2hTcGFjZXMoZmFsc2UpO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5kZW50VmFsdWUgPSBpbmRlbnQgPSBzcDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHNwID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNwICs9IHlpZWxkKiB0aGlzLnB1c2hTcGFjZXModHJ1ZSk7XG4gICAgICAgIH0gd2hpbGUgKG5sICsgc3AgPiAwKTtcbiAgICAgICAgY29uc3QgbGluZSA9IHRoaXMuZ2V0TGluZSgpO1xuICAgICAgICBpZiAobGluZSA9PT0gbnVsbClcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNldE5leHQoJ2Zsb3cnKTtcbiAgICAgICAgaWYgKChpbmRlbnQgIT09IC0xICYmIGluZGVudCA8IHRoaXMuaW5kZW50TmV4dCAmJiBsaW5lWzBdICE9PSAnIycpIHx8XG4gICAgICAgICAgICAoaW5kZW50ID09PSAwICYmXG4gICAgICAgICAgICAgICAgKGxpbmUuc3RhcnRzV2l0aCgnLS0tJykgfHwgbGluZS5zdGFydHNXaXRoKCcuLi4nKSkgJiZcbiAgICAgICAgICAgICAgICBpc0VtcHR5KGxpbmVbM10pKSkge1xuICAgICAgICAgICAgLy8gQWxsb3dpbmcgZm9yIHRoZSB0ZXJtaW5hbCBdIG9yIH0gYXQgdGhlIHNhbWUgKHJhdGhlciB0aGFuIGdyZWF0ZXIpXG4gICAgICAgICAgICAvLyBpbmRlbnQgbGV2ZWwgYXMgdGhlIGluaXRpYWwgWyBvciB7IGlzIHRlY2huaWNhbGx5IGludmFsaWQsIGJ1dFxuICAgICAgICAgICAgLy8gZmFpbGluZyBoZXJlIHdvdWxkIGJlIHN1cnByaXNpbmcgdG8gdXNlcnMuXG4gICAgICAgICAgICBjb25zdCBhdEZsb3dFbmRNYXJrZXIgPSBpbmRlbnQgPT09IHRoaXMuaW5kZW50TmV4dCAtIDEgJiZcbiAgICAgICAgICAgICAgICB0aGlzLmZsb3dMZXZlbCA9PT0gMSAmJlxuICAgICAgICAgICAgICAgIChsaW5lWzBdID09PSAnXScgfHwgbGluZVswXSA9PT0gJ30nKTtcbiAgICAgICAgICAgIGlmICghYXRGbG93RW5kTWFya2VyKSB7XG4gICAgICAgICAgICAgICAgLy8gdGhpcyBpcyBhbiBlcnJvclxuICAgICAgICAgICAgICAgIHRoaXMuZmxvd0xldmVsID0gMDtcbiAgICAgICAgICAgICAgICB5aWVsZCBGTE9XX0VORDtcbiAgICAgICAgICAgICAgICByZXR1cm4geWllbGQqIHRoaXMucGFyc2VMaW5lU3RhcnQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBsZXQgbiA9IDA7XG4gICAgICAgIHdoaWxlIChsaW5lW25dID09PSAnLCcpIHtcbiAgICAgICAgICAgIG4gKz0geWllbGQqIHRoaXMucHVzaENvdW50KDEpO1xuICAgICAgICAgICAgbiArPSB5aWVsZCogdGhpcy5wdXNoU3BhY2VzKHRydWUpO1xuICAgICAgICAgICAgdGhpcy5mbG93S2V5ID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgbiArPSB5aWVsZCogdGhpcy5wdXNoSW5kaWNhdG9ycygpO1xuICAgICAgICBzd2l0Y2ggKGxpbmVbbl0pIHtcbiAgICAgICAgICAgIGNhc2UgdW5kZWZpbmVkOlxuICAgICAgICAgICAgICAgIHJldHVybiAnZmxvdyc7XG4gICAgICAgICAgICBjYXNlICcjJzpcbiAgICAgICAgICAgICAgICB5aWVsZCogdGhpcy5wdXNoQ291bnQobGluZS5sZW5ndGggLSBuKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2Zsb3cnO1xuICAgICAgICAgICAgY2FzZSAneyc6XG4gICAgICAgICAgICBjYXNlICdbJzpcbiAgICAgICAgICAgICAgICB5aWVsZCogdGhpcy5wdXNoQ291bnQoMSk7XG4gICAgICAgICAgICAgICAgdGhpcy5mbG93S2V5ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5mbG93TGV2ZWwgKz0gMTtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2Zsb3cnO1xuICAgICAgICAgICAgY2FzZSAnfSc6XG4gICAgICAgICAgICBjYXNlICddJzpcbiAgICAgICAgICAgICAgICB5aWVsZCogdGhpcy5wdXNoQ291bnQoMSk7XG4gICAgICAgICAgICAgICAgdGhpcy5mbG93S2V5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmZsb3dMZXZlbCAtPSAxO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmZsb3dMZXZlbCA/ICdmbG93JyA6ICdkb2MnO1xuICAgICAgICAgICAgY2FzZSAnKic6XG4gICAgICAgICAgICAgICAgeWllbGQqIHRoaXMucHVzaFVudGlsKGlzTm90QW5jaG9yQ2hhcik7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdmbG93JztcbiAgICAgICAgICAgIGNhc2UgJ1wiJzpcbiAgICAgICAgICAgIGNhc2UgXCInXCI6XG4gICAgICAgICAgICAgICAgdGhpcy5mbG93S2V5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICByZXR1cm4geWllbGQqIHRoaXMucGFyc2VRdW90ZWRTY2FsYXIoKTtcbiAgICAgICAgICAgIGNhc2UgJzonOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dCA9IHRoaXMuY2hhckF0KDEpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmZsb3dLZXkgfHwgaXNFbXB0eShuZXh0KSB8fCBuZXh0ID09PSAnLCcpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mbG93S2V5ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHlpZWxkKiB0aGlzLnB1c2hDb3VudCgxKTtcbiAgICAgICAgICAgICAgICAgICAgeWllbGQqIHRoaXMucHVzaFNwYWNlcyh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdmbG93JztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBmYWxsdGhyb3VnaFxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aGlzLmZsb3dLZXkgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICByZXR1cm4geWllbGQqIHRoaXMucGFyc2VQbGFpblNjYWxhcigpO1xuICAgICAgICB9XG4gICAgfVxuICAgICpwYXJzZVF1b3RlZFNjYWxhcigpIHtcbiAgICAgICAgY29uc3QgcXVvdGUgPSB0aGlzLmNoYXJBdCgwKTtcbiAgICAgICAgbGV0IGVuZCA9IHRoaXMuYnVmZmVyLmluZGV4T2YocXVvdGUsIHRoaXMucG9zICsgMSk7XG4gICAgICAgIGlmIChxdW90ZSA9PT0gXCInXCIpIHtcbiAgICAgICAgICAgIHdoaWxlIChlbmQgIT09IC0xICYmIHRoaXMuYnVmZmVyW2VuZCArIDFdID09PSBcIidcIilcbiAgICAgICAgICAgICAgICBlbmQgPSB0aGlzLmJ1ZmZlci5pbmRleE9mKFwiJ1wiLCBlbmQgKyAyKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIGRvdWJsZS1xdW90ZVxuICAgICAgICAgICAgd2hpbGUgKGVuZCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICBsZXQgbiA9IDA7XG4gICAgICAgICAgICAgICAgd2hpbGUgKHRoaXMuYnVmZmVyW2VuZCAtIDEgLSBuXSA9PT0gJ1xcXFwnKVxuICAgICAgICAgICAgICAgICAgICBuICs9IDE7XG4gICAgICAgICAgICAgICAgaWYgKG4gJSAyID09PSAwKVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBlbmQgPSB0aGlzLmJ1ZmZlci5pbmRleE9mKCdcIicsIGVuZCArIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIE9ubHkgbG9va2luZyBmb3IgbmV3bGluZXMgd2l0aGluIHRoZSBxdW90ZXNcbiAgICAgICAgY29uc3QgcWIgPSB0aGlzLmJ1ZmZlci5zdWJzdHJpbmcoMCwgZW5kKTtcbiAgICAgICAgbGV0IG5sID0gcWIuaW5kZXhPZignXFxuJywgdGhpcy5wb3MpO1xuICAgICAgICBpZiAobmwgIT09IC0xKSB7XG4gICAgICAgICAgICB3aGlsZSAobmwgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY3MgPSB0aGlzLmNvbnRpbnVlU2NhbGFyKG5sICsgMSk7XG4gICAgICAgICAgICAgICAgaWYgKGNzID09PSAtMSlcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgbmwgPSBxYi5pbmRleE9mKCdcXG4nLCBjcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobmwgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgLy8gdGhpcyBpcyBhbiBlcnJvciBjYXVzZWQgYnkgYW4gdW5leHBlY3RlZCB1bmluZGVudFxuICAgICAgICAgICAgICAgIGVuZCA9IG5sIC0gKHFiW25sIC0gMV0gPT09ICdcXHInID8gMiA6IDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChlbmQgPT09IC0xKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuYXRFbmQpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0TmV4dCgncXVvdGVkLXNjYWxhcicpO1xuICAgICAgICAgICAgZW5kID0gdGhpcy5idWZmZXIubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIHlpZWxkKiB0aGlzLnB1c2hUb0luZGV4KGVuZCArIDEsIGZhbHNlKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmxvd0xldmVsID8gJ2Zsb3cnIDogJ2RvYyc7XG4gICAgfVxuICAgICpwYXJzZUJsb2NrU2NhbGFySGVhZGVyKCkge1xuICAgICAgICB0aGlzLmJsb2NrU2NhbGFySW5kZW50ID0gLTE7XG4gICAgICAgIHRoaXMuYmxvY2tTY2FsYXJLZWVwID0gZmFsc2U7XG4gICAgICAgIGxldCBpID0gdGhpcy5wb3M7XG4gICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgICBjb25zdCBjaCA9IHRoaXMuYnVmZmVyWysraV07XG4gICAgICAgICAgICBpZiAoY2ggPT09ICcrJylcbiAgICAgICAgICAgICAgICB0aGlzLmJsb2NrU2NhbGFyS2VlcCA9IHRydWU7XG4gICAgICAgICAgICBlbHNlIGlmIChjaCA+ICcwJyAmJiBjaCA8PSAnOScpXG4gICAgICAgICAgICAgICAgdGhpcy5ibG9ja1NjYWxhckluZGVudCA9IE51bWJlcihjaCkgLSAxO1xuICAgICAgICAgICAgZWxzZSBpZiAoY2ggIT09ICctJylcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geWllbGQqIHRoaXMucHVzaFVudGlsKGNoID0+IGlzRW1wdHkoY2gpIHx8IGNoID09PSAnIycpO1xuICAgIH1cbiAgICAqcGFyc2VCbG9ja1NjYWxhcigpIHtcbiAgICAgICAgbGV0IG5sID0gdGhpcy5wb3MgLSAxOyAvLyBtYXkgYmUgLTEgaWYgdGhpcy5wb3MgPT09IDBcbiAgICAgICAgbGV0IGluZGVudCA9IDA7XG4gICAgICAgIGxldCBjaDtcbiAgICAgICAgbG9vcDogZm9yIChsZXQgaSA9IHRoaXMucG9zOyAoY2ggPSB0aGlzLmJ1ZmZlcltpXSk7ICsraSkge1xuICAgICAgICAgICAgc3dpdGNoIChjaCkge1xuICAgICAgICAgICAgICAgIGNhc2UgJyAnOlxuICAgICAgICAgICAgICAgICAgICBpbmRlbnQgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnXFxuJzpcbiAgICAgICAgICAgICAgICAgICAgbmwgPSBpO1xuICAgICAgICAgICAgICAgICAgICBpbmRlbnQgPSAwO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdcXHInOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5leHQgPSB0aGlzLmJ1ZmZlcltpICsgMV07XG4gICAgICAgICAgICAgICAgICAgIGlmICghbmV4dCAmJiAhdGhpcy5hdEVuZClcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNldE5leHQoJ2Jsb2NrLXNjYWxhcicpO1xuICAgICAgICAgICAgICAgICAgICBpZiAobmV4dCA9PT0gJ1xcbicpXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9IC8vIGZhbGx0aHJvdWdoXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgYnJlYWsgbG9vcDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIWNoICYmICF0aGlzLmF0RW5kKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0TmV4dCgnYmxvY2stc2NhbGFyJyk7XG4gICAgICAgIGlmIChpbmRlbnQgPj0gdGhpcy5pbmRlbnROZXh0KSB7XG4gICAgICAgICAgICBpZiAodGhpcy5ibG9ja1NjYWxhckluZGVudCA9PT0gLTEpXG4gICAgICAgICAgICAgICAgdGhpcy5pbmRlbnROZXh0ID0gaW5kZW50O1xuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbmRlbnROZXh0ID1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ibG9ja1NjYWxhckluZGVudCArICh0aGlzLmluZGVudE5leHQgPT09IDAgPyAxIDogdGhpcy5pbmRlbnROZXh0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjcyA9IHRoaXMuY29udGludWVTY2FsYXIobmwgKyAxKTtcbiAgICAgICAgICAgICAgICBpZiAoY3MgPT09IC0xKVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBubCA9IHRoaXMuYnVmZmVyLmluZGV4T2YoJ1xcbicsIGNzKTtcbiAgICAgICAgICAgIH0gd2hpbGUgKG5sICE9PSAtMSk7XG4gICAgICAgICAgICBpZiAobmwgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmF0RW5kKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zZXROZXh0KCdibG9jay1zY2FsYXInKTtcbiAgICAgICAgICAgICAgICBubCA9IHRoaXMuYnVmZmVyLmxlbmd0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBUcmFpbGluZyBpbnN1ZmZpY2llbnRseSBpbmRlbnRlZCB0YWJzIGFyZSBpbnZhbGlkLlxuICAgICAgICAvLyBUbyBjYXRjaCB0aGF0IGR1cmluZyBwYXJzaW5nLCB3ZSBpbmNsdWRlIHRoZW0gaW4gdGhlIGJsb2NrIHNjYWxhciB2YWx1ZS5cbiAgICAgICAgbGV0IGkgPSBubCArIDE7XG4gICAgICAgIGNoID0gdGhpcy5idWZmZXJbaV07XG4gICAgICAgIHdoaWxlIChjaCA9PT0gJyAnKVxuICAgICAgICAgICAgY2ggPSB0aGlzLmJ1ZmZlclsrK2ldO1xuICAgICAgICBpZiAoY2ggPT09ICdcXHQnKSB7XG4gICAgICAgICAgICB3aGlsZSAoY2ggPT09ICdcXHQnIHx8IGNoID09PSAnICcgfHwgY2ggPT09ICdcXHInIHx8IGNoID09PSAnXFxuJylcbiAgICAgICAgICAgICAgICBjaCA9IHRoaXMuYnVmZmVyWysraV07XG4gICAgICAgICAgICBubCA9IGkgLSAxO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKCF0aGlzLmJsb2NrU2NhbGFyS2VlcCkge1xuICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgIGxldCBpID0gbmwgLSAxO1xuICAgICAgICAgICAgICAgIGxldCBjaCA9IHRoaXMuYnVmZmVyW2ldO1xuICAgICAgICAgICAgICAgIGlmIChjaCA9PT0gJ1xccicpXG4gICAgICAgICAgICAgICAgICAgIGNoID0gdGhpcy5idWZmZXJbLS1pXTtcbiAgICAgICAgICAgICAgICBjb25zdCBsYXN0Q2hhciA9IGk7IC8vIERyb3AgdGhlIGxpbmUgaWYgbGFzdCBjaGFyIG5vdCBtb3JlIGluZGVudGVkXG4gICAgICAgICAgICAgICAgd2hpbGUgKGNoID09PSAnICcpXG4gICAgICAgICAgICAgICAgICAgIGNoID0gdGhpcy5idWZmZXJbLS1pXTtcbiAgICAgICAgICAgICAgICBpZiAoY2ggPT09ICdcXG4nICYmIGkgPj0gdGhpcy5wb3MgJiYgaSArIDEgKyBpbmRlbnQgPiBsYXN0Q2hhcilcbiAgICAgICAgICAgICAgICAgICAgbmwgPSBpO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9IHdoaWxlICh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgICB5aWVsZCBTQ0FMQVI7XG4gICAgICAgIHlpZWxkKiB0aGlzLnB1c2hUb0luZGV4KG5sICsgMSwgdHJ1ZSk7XG4gICAgICAgIHJldHVybiB5aWVsZCogdGhpcy5wYXJzZUxpbmVTdGFydCgpO1xuICAgIH1cbiAgICAqcGFyc2VQbGFpblNjYWxhcigpIHtcbiAgICAgICAgY29uc3QgaW5GbG93ID0gdGhpcy5mbG93TGV2ZWwgPiAwO1xuICAgICAgICBsZXQgZW5kID0gdGhpcy5wb3MgLSAxO1xuICAgICAgICBsZXQgaSA9IHRoaXMucG9zIC0gMTtcbiAgICAgICAgbGV0IGNoO1xuICAgICAgICB3aGlsZSAoKGNoID0gdGhpcy5idWZmZXJbKytpXSkpIHtcbiAgICAgICAgICAgIGlmIChjaCA9PT0gJzonKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dCA9IHRoaXMuYnVmZmVyW2kgKyAxXTtcbiAgICAgICAgICAgICAgICBpZiAoaXNFbXB0eShuZXh0KSB8fCAoaW5GbG93ICYmIGZsb3dJbmRpY2F0b3JDaGFycy5oYXMobmV4dCkpKVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBlbmQgPSBpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoaXNFbXB0eShjaCkpIHtcbiAgICAgICAgICAgICAgICBsZXQgbmV4dCA9IHRoaXMuYnVmZmVyW2kgKyAxXTtcbiAgICAgICAgICAgICAgICBpZiAoY2ggPT09ICdcXHInKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChuZXh0ID09PSAnXFxuJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaSArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2ggPSAnXFxuJztcbiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgPSB0aGlzLmJ1ZmZlcltpICsgMV07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgZW5kID0gaTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKG5leHQgPT09ICcjJyB8fCAoaW5GbG93ICYmIGZsb3dJbmRpY2F0b3JDaGFycy5oYXMobmV4dCkpKVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBpZiAoY2ggPT09ICdcXG4nKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNzID0gdGhpcy5jb250aW51ZVNjYWxhcihpICsgMSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjcyA9PT0gLTEpXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgaSA9IE1hdGgubWF4KGksIGNzIC0gMik7IC8vIHRvIGFkdmFuY2UsIGJ1dCBzdGlsbCBhY2NvdW50IGZvciAnICMnXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKGluRmxvdyAmJiBmbG93SW5kaWNhdG9yQ2hhcnMuaGFzKGNoKSlcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgZW5kID0gaTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIWNoICYmICF0aGlzLmF0RW5kKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0TmV4dCgncGxhaW4tc2NhbGFyJyk7XG4gICAgICAgIHlpZWxkIFNDQUxBUjtcbiAgICAgICAgeWllbGQqIHRoaXMucHVzaFRvSW5kZXgoZW5kICsgMSwgdHJ1ZSk7XG4gICAgICAgIHJldHVybiBpbkZsb3cgPyAnZmxvdycgOiAnZG9jJztcbiAgICB9XG4gICAgKnB1c2hDb3VudChuKSB7XG4gICAgICAgIGlmIChuID4gMCkge1xuICAgICAgICAgICAgeWllbGQgdGhpcy5idWZmZXIuc3Vic3RyKHRoaXMucG9zLCBuKTtcbiAgICAgICAgICAgIHRoaXMucG9zICs9IG47XG4gICAgICAgICAgICByZXR1cm4gbjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgKnB1c2hUb0luZGV4KGksIGFsbG93RW1wdHkpIHtcbiAgICAgICAgY29uc3QgcyA9IHRoaXMuYnVmZmVyLnNsaWNlKHRoaXMucG9zLCBpKTtcbiAgICAgICAgaWYgKHMpIHtcbiAgICAgICAgICAgIHlpZWxkIHM7XG4gICAgICAgICAgICB0aGlzLnBvcyArPSBzLmxlbmd0aDtcbiAgICAgICAgICAgIHJldHVybiBzLmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChhbGxvd0VtcHR5KVxuICAgICAgICAgICAgeWllbGQgJyc7XG4gICAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICAqcHVzaEluZGljYXRvcnMoKSB7XG4gICAgICAgIHN3aXRjaCAodGhpcy5jaGFyQXQoMCkpIHtcbiAgICAgICAgICAgIGNhc2UgJyEnOlxuICAgICAgICAgICAgICAgIHJldHVybiAoKHlpZWxkKiB0aGlzLnB1c2hUYWcoKSkgK1xuICAgICAgICAgICAgICAgICAgICAoeWllbGQqIHRoaXMucHVzaFNwYWNlcyh0cnVlKSkgK1xuICAgICAgICAgICAgICAgICAgICAoeWllbGQqIHRoaXMucHVzaEluZGljYXRvcnMoKSkpO1xuICAgICAgICAgICAgY2FzZSAnJic6XG4gICAgICAgICAgICAgICAgcmV0dXJuICgoeWllbGQqIHRoaXMucHVzaFVudGlsKGlzTm90QW5jaG9yQ2hhcikpICtcbiAgICAgICAgICAgICAgICAgICAgKHlpZWxkKiB0aGlzLnB1c2hTcGFjZXModHJ1ZSkpICtcbiAgICAgICAgICAgICAgICAgICAgKHlpZWxkKiB0aGlzLnB1c2hJbmRpY2F0b3JzKCkpKTtcbiAgICAgICAgICAgIGNhc2UgJy0nOiAvLyB0aGlzIGlzIGFuIGVycm9yXG4gICAgICAgICAgICBjYXNlICc/JzogLy8gdGhpcyBpcyBhbiBlcnJvciBvdXRzaWRlIGZsb3cgY29sbGVjdGlvbnNcbiAgICAgICAgICAgIGNhc2UgJzonOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaW5GbG93ID0gdGhpcy5mbG93TGV2ZWwgPiAwO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNoMSA9IHRoaXMuY2hhckF0KDEpO1xuICAgICAgICAgICAgICAgIGlmIChpc0VtcHR5KGNoMSkgfHwgKGluRmxvdyAmJiBmbG93SW5kaWNhdG9yQ2hhcnMuaGFzKGNoMSkpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghaW5GbG93KVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmRlbnROZXh0ID0gdGhpcy5pbmRlbnRWYWx1ZSArIDE7XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuZmxvd0tleSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmxvd0tleSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKCh5aWVsZCogdGhpcy5wdXNoQ291bnQoMSkpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICh5aWVsZCogdGhpcy5wdXNoU3BhY2VzKHRydWUpKSArXG4gICAgICAgICAgICAgICAgICAgICAgICAoeWllbGQqIHRoaXMucHVzaEluZGljYXRvcnMoKSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgKnB1c2hUYWcoKSB7XG4gICAgICAgIGlmICh0aGlzLmNoYXJBdCgxKSA9PT0gJzwnKSB7XG4gICAgICAgICAgICBsZXQgaSA9IHRoaXMucG9zICsgMjtcbiAgICAgICAgICAgIGxldCBjaCA9IHRoaXMuYnVmZmVyW2ldO1xuICAgICAgICAgICAgd2hpbGUgKCFpc0VtcHR5KGNoKSAmJiBjaCAhPT0gJz4nKVxuICAgICAgICAgICAgICAgIGNoID0gdGhpcy5idWZmZXJbKytpXTtcbiAgICAgICAgICAgIHJldHVybiB5aWVsZCogdGhpcy5wdXNoVG9JbmRleChjaCA9PT0gJz4nID8gaSArIDEgOiBpLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBsZXQgaSA9IHRoaXMucG9zICsgMTtcbiAgICAgICAgICAgIGxldCBjaCA9IHRoaXMuYnVmZmVyW2ldO1xuICAgICAgICAgICAgd2hpbGUgKGNoKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRhZ0NoYXJzLmhhcyhjaCkpXG4gICAgICAgICAgICAgICAgICAgIGNoID0gdGhpcy5idWZmZXJbKytpXTtcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChjaCA9PT0gJyUnICYmXG4gICAgICAgICAgICAgICAgICAgIGhleERpZ2l0cy5oYXModGhpcy5idWZmZXJbaSArIDFdKSAmJlxuICAgICAgICAgICAgICAgICAgICBoZXhEaWdpdHMuaGFzKHRoaXMuYnVmZmVyW2kgKyAyXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2ggPSB0aGlzLmJ1ZmZlclsoaSArPSAzKV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4geWllbGQqIHRoaXMucHVzaFRvSW5kZXgoaSwgZmFsc2UpO1xuICAgICAgICB9XG4gICAgfVxuICAgICpwdXNoTmV3bGluZSgpIHtcbiAgICAgICAgY29uc3QgY2ggPSB0aGlzLmJ1ZmZlclt0aGlzLnBvc107XG4gICAgICAgIGlmIChjaCA9PT0gJ1xcbicpXG4gICAgICAgICAgICByZXR1cm4geWllbGQqIHRoaXMucHVzaENvdW50KDEpO1xuICAgICAgICBlbHNlIGlmIChjaCA9PT0gJ1xccicgJiYgdGhpcy5jaGFyQXQoMSkgPT09ICdcXG4nKVxuICAgICAgICAgICAgcmV0dXJuIHlpZWxkKiB0aGlzLnB1c2hDb3VudCgyKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgICpwdXNoU3BhY2VzKGFsbG93VGFicykge1xuICAgICAgICBsZXQgaSA9IHRoaXMucG9zIC0gMTtcbiAgICAgICAgbGV0IGNoO1xuICAgICAgICBkbyB7XG4gICAgICAgICAgICBjaCA9IHRoaXMuYnVmZmVyWysraV07XG4gICAgICAgIH0gd2hpbGUgKGNoID09PSAnICcgfHwgKGFsbG93VGFicyAmJiBjaCA9PT0gJ1xcdCcpKTtcbiAgICAgICAgY29uc3QgbiA9IGkgLSB0aGlzLnBvcztcbiAgICAgICAgaWYgKG4gPiAwKSB7XG4gICAgICAgICAgICB5aWVsZCB0aGlzLmJ1ZmZlci5zdWJzdHIodGhpcy5wb3MsIG4pO1xuICAgICAgICAgICAgdGhpcy5wb3MgPSBpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuO1xuICAgIH1cbiAgICAqcHVzaFVudGlsKHRlc3QpIHtcbiAgICAgICAgbGV0IGkgPSB0aGlzLnBvcztcbiAgICAgICAgbGV0IGNoID0gdGhpcy5idWZmZXJbaV07XG4gICAgICAgIHdoaWxlICghdGVzdChjaCkpXG4gICAgICAgICAgICBjaCA9IHRoaXMuYnVmZmVyWysraV07XG4gICAgICAgIHJldHVybiB5aWVsZCogdGhpcy5wdXNoVG9JbmRleChpLCBmYWxzZSk7XG4gICAgfVxufVxuXG5leHBvcnQgeyBMZXhlciB9O1xuIiwgIi8qKlxuICogVHJhY2tzIG5ld2xpbmVzIGR1cmluZyBwYXJzaW5nIGluIG9yZGVyIHRvIHByb3ZpZGUgYW4gZWZmaWNpZW50IEFQSSBmb3JcbiAqIGRldGVybWluaW5nIHRoZSBvbmUtaW5kZXhlZCBgeyBsaW5lLCBjb2wgfWAgcG9zaXRpb24gZm9yIGFueSBvZmZzZXRcbiAqIHdpdGhpbiB0aGUgaW5wdXQuXG4gKi9cbmNsYXNzIExpbmVDb3VudGVyIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5saW5lU3RhcnRzID0gW107XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTaG91bGQgYmUgY2FsbGVkIGluIGFzY2VuZGluZyBvcmRlci4gT3RoZXJ3aXNlLCBjYWxsXG4gICAgICAgICAqIGBsaW5lQ291bnRlci5saW5lU3RhcnRzLnNvcnQoKWAgYmVmb3JlIGNhbGxpbmcgYGxpbmVQb3MoKWAuXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLmFkZE5ld0xpbmUgPSAob2Zmc2V0KSA9PiB0aGlzLmxpbmVTdGFydHMucHVzaChvZmZzZXQpO1xuICAgICAgICAvKipcbiAgICAgICAgICogUGVyZm9ybXMgYSBiaW5hcnkgc2VhcmNoIGFuZCByZXR1cm5zIHRoZSAxLWluZGV4ZWQgeyBsaW5lLCBjb2wgfVxuICAgICAgICAgKiBwb3NpdGlvbiBvZiBgb2Zmc2V0YC4gSWYgYGxpbmUgPT09IDBgLCBgYWRkTmV3TGluZWAgaGFzIG5ldmVyIGJlZW5cbiAgICAgICAgICogY2FsbGVkIG9yIGBvZmZzZXRgIGlzIGJlZm9yZSB0aGUgZmlyc3Qga25vd24gbmV3bGluZS5cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMubGluZVBvcyA9IChvZmZzZXQpID0+IHtcbiAgICAgICAgICAgIGxldCBsb3cgPSAwO1xuICAgICAgICAgICAgbGV0IGhpZ2ggPSB0aGlzLmxpbmVTdGFydHMubGVuZ3RoO1xuICAgICAgICAgICAgd2hpbGUgKGxvdyA8IGhpZ2gpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtaWQgPSAobG93ICsgaGlnaCkgPj4gMTsgLy8gTWF0aC5mbG9vcigobG93ICsgaGlnaCkgLyAyKVxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmxpbmVTdGFydHNbbWlkXSA8IG9mZnNldClcbiAgICAgICAgICAgICAgICAgICAgbG93ID0gbWlkICsgMTtcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGhpZ2ggPSBtaWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5saW5lU3RhcnRzW2xvd10gPT09IG9mZnNldClcbiAgICAgICAgICAgICAgICByZXR1cm4geyBsaW5lOiBsb3cgKyAxLCBjb2w6IDEgfTtcbiAgICAgICAgICAgIGlmIChsb3cgPT09IDApXG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgbGluZTogMCwgY29sOiBvZmZzZXQgfTtcbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5saW5lU3RhcnRzW2xvdyAtIDFdO1xuICAgICAgICAgICAgcmV0dXJuIHsgbGluZTogbG93LCBjb2w6IG9mZnNldCAtIHN0YXJ0ICsgMSB9O1xuICAgICAgICB9O1xuICAgIH1cbn1cblxuZXhwb3J0IHsgTGluZUNvdW50ZXIgfTtcbiIsICJpbXBvcnQgeyB0b2tlblR5cGUgfSBmcm9tICcuL2NzdC5qcyc7XG5pbXBvcnQgeyBMZXhlciB9IGZyb20gJy4vbGV4ZXIuanMnO1xuXG5mdW5jdGlvbiBpbmNsdWRlc1Rva2VuKGxpc3QsIHR5cGUpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyArK2kpXG4gICAgICAgIGlmIChsaXN0W2ldLnR5cGUgPT09IHR5cGUpXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICByZXR1cm4gZmFsc2U7XG59XG5mdW5jdGlvbiBmaW5kTm9uRW1wdHlJbmRleChsaXN0KSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgKytpKSB7XG4gICAgICAgIHN3aXRjaCAobGlzdFtpXS50eXBlKSB7XG4gICAgICAgICAgICBjYXNlICdzcGFjZSc6XG4gICAgICAgICAgICBjYXNlICdjb21tZW50JzpcbiAgICAgICAgICAgIGNhc2UgJ25ld2xpbmUnOlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gLTE7XG59XG5mdW5jdGlvbiBpc0Zsb3dUb2tlbih0b2tlbikge1xuICAgIHN3aXRjaCAodG9rZW4/LnR5cGUpIHtcbiAgICAgICAgY2FzZSAnYWxpYXMnOlxuICAgICAgICBjYXNlICdzY2FsYXInOlxuICAgICAgICBjYXNlICdzaW5nbGUtcXVvdGVkLXNjYWxhcic6XG4gICAgICAgIGNhc2UgJ2RvdWJsZS1xdW90ZWQtc2NhbGFyJzpcbiAgICAgICAgY2FzZSAnZmxvdy1jb2xsZWN0aW9uJzpcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGdldFByZXZQcm9wcyhwYXJlbnQpIHtcbiAgICBzd2l0Y2ggKHBhcmVudC50eXBlKSB7XG4gICAgICAgIGNhc2UgJ2RvY3VtZW50JzpcbiAgICAgICAgICAgIHJldHVybiBwYXJlbnQuc3RhcnQ7XG4gICAgICAgIGNhc2UgJ2Jsb2NrLW1hcCc6IHtcbiAgICAgICAgICAgIGNvbnN0IGl0ID0gcGFyZW50Lml0ZW1zW3BhcmVudC5pdGVtcy5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgIHJldHVybiBpdC5zZXAgPz8gaXQuc3RhcnQ7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAnYmxvY2stc2VxJzpcbiAgICAgICAgICAgIHJldHVybiBwYXJlbnQuaXRlbXNbcGFyZW50Lml0ZW1zLmxlbmd0aCAtIDFdLnN0YXJ0O1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCBzaG91bGQgbm90IGhhcHBlbiAqL1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbn1cbi8qKiBOb3RlOiBNYXkgbW9kaWZ5IGlucHV0IGFycmF5ICovXG5mdW5jdGlvbiBnZXRGaXJzdEtleVN0YXJ0UHJvcHMocHJldikge1xuICAgIGlmIChwcmV2Lmxlbmd0aCA9PT0gMClcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIGxldCBpID0gcHJldi5sZW5ndGg7XG4gICAgbG9vcDogd2hpbGUgKC0taSA+PSAwKSB7XG4gICAgICAgIHN3aXRjaCAocHJldltpXS50eXBlKSB7XG4gICAgICAgICAgICBjYXNlICdkb2Mtc3RhcnQnOlxuICAgICAgICAgICAgY2FzZSAnZXhwbGljaXQta2V5LWluZCc6XG4gICAgICAgICAgICBjYXNlICdtYXAtdmFsdWUtaW5kJzpcbiAgICAgICAgICAgIGNhc2UgJ3NlcS1pdGVtLWluZCc6XG4gICAgICAgICAgICBjYXNlICduZXdsaW5lJzpcbiAgICAgICAgICAgICAgICBicmVhayBsb29wO1xuICAgICAgICB9XG4gICAgfVxuICAgIHdoaWxlIChwcmV2WysraV0/LnR5cGUgPT09ICdzcGFjZScpIHtcbiAgICAgICAgLyogbG9vcCAqL1xuICAgIH1cbiAgICByZXR1cm4gcHJldi5zcGxpY2UoaSwgcHJldi5sZW5ndGgpO1xufVxuZnVuY3Rpb24gZml4Rmxvd1NlcUl0ZW1zKGZjKSB7XG4gICAgaWYgKGZjLnN0YXJ0LnR5cGUgPT09ICdmbG93LXNlcS1zdGFydCcpIHtcbiAgICAgICAgZm9yIChjb25zdCBpdCBvZiBmYy5pdGVtcykge1xuICAgICAgICAgICAgaWYgKGl0LnNlcCAmJlxuICAgICAgICAgICAgICAgICFpdC52YWx1ZSAmJlxuICAgICAgICAgICAgICAgICFpbmNsdWRlc1Rva2VuKGl0LnN0YXJ0LCAnZXhwbGljaXQta2V5LWluZCcpICYmXG4gICAgICAgICAgICAgICAgIWluY2x1ZGVzVG9rZW4oaXQuc2VwLCAnbWFwLXZhbHVlLWluZCcpKSB7XG4gICAgICAgICAgICAgICAgaWYgKGl0LmtleSlcbiAgICAgICAgICAgICAgICAgICAgaXQudmFsdWUgPSBpdC5rZXk7XG4gICAgICAgICAgICAgICAgZGVsZXRlIGl0LmtleTtcbiAgICAgICAgICAgICAgICBpZiAoaXNGbG93VG9rZW4oaXQudmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpdC52YWx1ZS5lbmQpXG4gICAgICAgICAgICAgICAgICAgICAgICBBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShpdC52YWx1ZS5lbmQsIGl0LnNlcCk7XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0LnZhbHVlLmVuZCA9IGl0LnNlcDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShpdC5zdGFydCwgaXQuc2VwKTtcbiAgICAgICAgICAgICAgICBkZWxldGUgaXQuc2VwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuLyoqXG4gKiBBIFlBTUwgY29uY3JldGUgc3ludGF4IHRyZWUgKENTVCkgcGFyc2VyXG4gKlxuICogYGBgdHNcbiAqIGNvbnN0IHNyYzogc3RyaW5nID0gLi4uXG4gKiBmb3IgKGNvbnN0IHRva2VuIG9mIG5ldyBQYXJzZXIoKS5wYXJzZShzcmMpKSB7XG4gKiAgIC8vIHRva2VuOiBUb2tlblxuICogfVxuICogYGBgXG4gKlxuICogVG8gdXNlIHRoZSBwYXJzZXIgd2l0aCBhIHVzZXItcHJvdmlkZWQgbGV4ZXI6XG4gKlxuICogYGBgdHNcbiAqIGZ1bmN0aW9uKiBwYXJzZShzb3VyY2U6IHN0cmluZywgbGV4ZXI6IExleGVyKSB7XG4gKiAgIGNvbnN0IHBhcnNlciA9IG5ldyBQYXJzZXIoKVxuICogICBmb3IgKGNvbnN0IGxleGVtZSBvZiBsZXhlci5sZXgoc291cmNlKSlcbiAqICAgICB5aWVsZCogcGFyc2VyLm5leHQobGV4ZW1lKVxuICogICB5aWVsZCogcGFyc2VyLmVuZCgpXG4gKiB9XG4gKlxuICogY29uc3Qgc3JjOiBzdHJpbmcgPSAuLi5cbiAqIGNvbnN0IGxleGVyID0gbmV3IExleGVyKClcbiAqIGZvciAoY29uc3QgdG9rZW4gb2YgcGFyc2Uoc3JjLCBsZXhlcikpIHtcbiAqICAgLy8gdG9rZW46IFRva2VuXG4gKiB9XG4gKiBgYGBcbiAqL1xuY2xhc3MgUGFyc2VyIHtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0gb25OZXdMaW5lIC0gSWYgZGVmaW5lZCwgY2FsbGVkIHNlcGFyYXRlbHkgd2l0aCB0aGUgc3RhcnQgcG9zaXRpb24gb2ZcbiAgICAgKiAgIGVhY2ggbmV3IGxpbmUgKGluIGBwYXJzZSgpYCwgaW5jbHVkaW5nIHRoZSBzdGFydCBvZiBpbnB1dCkuXG4gICAgICovXG4gICAgY29uc3RydWN0b3Iob25OZXdMaW5lKSB7XG4gICAgICAgIC8qKiBJZiB0cnVlLCBzcGFjZSBhbmQgc2VxdWVuY2UgaW5kaWNhdG9ycyBjb3VudCBhcyBpbmRlbnRhdGlvbiAqL1xuICAgICAgICB0aGlzLmF0TmV3TGluZSA9IHRydWU7XG4gICAgICAgIC8qKiBJZiB0cnVlLCBuZXh0IHRva2VuIGlzIGEgc2NhbGFyIHZhbHVlICovXG4gICAgICAgIHRoaXMuYXRTY2FsYXIgPSBmYWxzZTtcbiAgICAgICAgLyoqIEN1cnJlbnQgaW5kZW50YXRpb24gbGV2ZWwgKi9cbiAgICAgICAgdGhpcy5pbmRlbnQgPSAwO1xuICAgICAgICAvKiogQ3VycmVudCBvZmZzZXQgc2luY2UgdGhlIHN0YXJ0IG9mIHBhcnNpbmcgKi9cbiAgICAgICAgdGhpcy5vZmZzZXQgPSAwO1xuICAgICAgICAvKiogT24gdGhlIHNhbWUgbGluZSB3aXRoIGEgYmxvY2sgbWFwIGtleSAqL1xuICAgICAgICB0aGlzLm9uS2V5TGluZSA9IGZhbHNlO1xuICAgICAgICAvKiogVG9wIGluZGljYXRlcyB0aGUgbm9kZSB0aGF0J3MgY3VycmVudGx5IGJlaW5nIGJ1aWx0ICovXG4gICAgICAgIHRoaXMuc3RhY2sgPSBbXTtcbiAgICAgICAgLyoqIFRoZSBzb3VyY2Ugb2YgdGhlIGN1cnJlbnQgdG9rZW4sIHNldCBpbiBwYXJzZSgpICovXG4gICAgICAgIHRoaXMuc291cmNlID0gJyc7XG4gICAgICAgIC8qKiBUaGUgdHlwZSBvZiB0aGUgY3VycmVudCB0b2tlbiwgc2V0IGluIHBhcnNlKCkgKi9cbiAgICAgICAgdGhpcy50eXBlID0gJyc7XG4gICAgICAgIC8vIE11c3QgYmUgZGVmaW5lZCBhZnRlciBgbmV4dCgpYFxuICAgICAgICB0aGlzLmxleGVyID0gbmV3IExleGVyKCk7XG4gICAgICAgIHRoaXMub25OZXdMaW5lID0gb25OZXdMaW5lO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBQYXJzZSBgc291cmNlYCBhcyBhIFlBTUwgc3RyZWFtLlxuICAgICAqIElmIGBpbmNvbXBsZXRlYCwgYSBwYXJ0IG9mIHRoZSBsYXN0IGxpbmUgbWF5IGJlIGxlZnQgYXMgYSBidWZmZXIgZm9yIHRoZSBuZXh0IGNhbGwuXG4gICAgICpcbiAgICAgKiBFcnJvcnMgYXJlIG5vdCB0aHJvd24sIGJ1dCB5aWVsZGVkIGFzIGB7IHR5cGU6ICdlcnJvcicsIG1lc3NhZ2UgfWAgdG9rZW5zLlxuICAgICAqXG4gICAgICogQHJldHVybnMgQSBnZW5lcmF0b3Igb2YgdG9rZW5zIHJlcHJlc2VudGluZyBlYWNoIGRpcmVjdGl2ZSwgZG9jdW1lbnQsIGFuZCBvdGhlciBzdHJ1Y3R1cmUuXG4gICAgICovXG4gICAgKnBhcnNlKHNvdXJjZSwgaW5jb21wbGV0ZSA9IGZhbHNlKSB7XG4gICAgICAgIGlmICh0aGlzLm9uTmV3TGluZSAmJiB0aGlzLm9mZnNldCA9PT0gMClcbiAgICAgICAgICAgIHRoaXMub25OZXdMaW5lKDApO1xuICAgICAgICBmb3IgKGNvbnN0IGxleGVtZSBvZiB0aGlzLmxleGVyLmxleChzb3VyY2UsIGluY29tcGxldGUpKVxuICAgICAgICAgICAgeWllbGQqIHRoaXMubmV4dChsZXhlbWUpO1xuICAgICAgICBpZiAoIWluY29tcGxldGUpXG4gICAgICAgICAgICB5aWVsZCogdGhpcy5lbmQoKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQWR2YW5jZSB0aGUgcGFyc2VyIGJ5IHRoZSBgc291cmNlYCBvZiBvbmUgbGV4aWNhbCB0b2tlbi5cbiAgICAgKi9cbiAgICAqbmV4dChzb3VyY2UpIHtcbiAgICAgICAgdGhpcy5zb3VyY2UgPSBzb3VyY2U7XG4gICAgICAgIGlmICh0aGlzLmF0U2NhbGFyKSB7XG4gICAgICAgICAgICB0aGlzLmF0U2NhbGFyID0gZmFsc2U7XG4gICAgICAgICAgICB5aWVsZCogdGhpcy5zdGVwKCk7XG4gICAgICAgICAgICB0aGlzLm9mZnNldCArPSBzb3VyY2UubGVuZ3RoO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHR5cGUgPSB0b2tlblR5cGUoc291cmNlKTtcbiAgICAgICAgaWYgKCF0eXBlKSB7XG4gICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gYE5vdCBhIFlBTUwgdG9rZW46ICR7c291cmNlfWA7XG4gICAgICAgICAgICB5aWVsZCogdGhpcy5wb3AoeyB0eXBlOiAnZXJyb3InLCBvZmZzZXQ6IHRoaXMub2Zmc2V0LCBtZXNzYWdlLCBzb3VyY2UgfSk7XG4gICAgICAgICAgICB0aGlzLm9mZnNldCArPSBzb3VyY2UubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHR5cGUgPT09ICdzY2FsYXInKSB7XG4gICAgICAgICAgICB0aGlzLmF0TmV3TGluZSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5hdFNjYWxhciA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnR5cGUgPSAnc2NhbGFyJztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gICAgICAgICAgICB5aWVsZCogdGhpcy5zdGVwKCk7XG4gICAgICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlICduZXdsaW5lJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hdE5ld0xpbmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluZGVudCA9IDA7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm9uTmV3TGluZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25OZXdMaW5lKHRoaXMub2Zmc2V0ICsgc291cmNlLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3NwYWNlJzpcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuYXROZXdMaW5lICYmIHNvdXJjZVswXSA9PT0gJyAnKVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmRlbnQgKz0gc291cmNlLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnZXhwbGljaXQta2V5LWluZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnbWFwLXZhbHVlLWluZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnc2VxLWl0ZW0taW5kJzpcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuYXROZXdMaW5lKVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmRlbnQgKz0gc291cmNlLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnZG9jLW1vZGUnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2Zsb3ctZXJyb3ItZW5kJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXROZXdMaW5lID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLm9mZnNldCArPSBzb3VyY2UubGVuZ3RoO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKiBDYWxsIGF0IGVuZCBvZiBpbnB1dCB0byBwdXNoIG91dCBhbnkgcmVtYWluaW5nIGNvbnN0cnVjdGlvbnMgKi9cbiAgICAqZW5kKCkge1xuICAgICAgICB3aGlsZSAodGhpcy5zdGFjay5sZW5ndGggPiAwKVxuICAgICAgICAgICAgeWllbGQqIHRoaXMucG9wKCk7XG4gICAgfVxuICAgIGdldCBzb3VyY2VUb2tlbigpIHtcbiAgICAgICAgY29uc3Qgc3QgPSB7XG4gICAgICAgICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICAgICAgICBvZmZzZXQ6IHRoaXMub2Zmc2V0LFxuICAgICAgICAgICAgaW5kZW50OiB0aGlzLmluZGVudCxcbiAgICAgICAgICAgIHNvdXJjZTogdGhpcy5zb3VyY2VcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHN0O1xuICAgIH1cbiAgICAqc3RlcCgpIHtcbiAgICAgICAgY29uc3QgdG9wID0gdGhpcy5wZWVrKDEpO1xuICAgICAgICBpZiAodGhpcy50eXBlID09PSAnZG9jLWVuZCcgJiYgKCF0b3AgfHwgdG9wLnR5cGUgIT09ICdkb2MtZW5kJykpIHtcbiAgICAgICAgICAgIHdoaWxlICh0aGlzLnN0YWNrLmxlbmd0aCA+IDApXG4gICAgICAgICAgICAgICAgeWllbGQqIHRoaXMucG9wKCk7XG4gICAgICAgICAgICB0aGlzLnN0YWNrLnB1c2goe1xuICAgICAgICAgICAgICAgIHR5cGU6ICdkb2MtZW5kJyxcbiAgICAgICAgICAgICAgICBvZmZzZXQ6IHRoaXMub2Zmc2V0LFxuICAgICAgICAgICAgICAgIHNvdXJjZTogdGhpcy5zb3VyY2VcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdG9wKVxuICAgICAgICAgICAgcmV0dXJuIHlpZWxkKiB0aGlzLnN0cmVhbSgpO1xuICAgICAgICBzd2l0Y2ggKHRvcC50eXBlKSB7XG4gICAgICAgICAgICBjYXNlICdkb2N1bWVudCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHlpZWxkKiB0aGlzLmRvY3VtZW50KHRvcCk7XG4gICAgICAgICAgICBjYXNlICdhbGlhcyc6XG4gICAgICAgICAgICBjYXNlICdzY2FsYXInOlxuICAgICAgICAgICAgY2FzZSAnc2luZ2xlLXF1b3RlZC1zY2FsYXInOlxuICAgICAgICAgICAgY2FzZSAnZG91YmxlLXF1b3RlZC1zY2FsYXInOlxuICAgICAgICAgICAgICAgIHJldHVybiB5aWVsZCogdGhpcy5zY2FsYXIodG9wKTtcbiAgICAgICAgICAgIGNhc2UgJ2Jsb2NrLXNjYWxhcic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHlpZWxkKiB0aGlzLmJsb2NrU2NhbGFyKHRvcCk7XG4gICAgICAgICAgICBjYXNlICdibG9jay1tYXAnOlxuICAgICAgICAgICAgICAgIHJldHVybiB5aWVsZCogdGhpcy5ibG9ja01hcCh0b3ApO1xuICAgICAgICAgICAgY2FzZSAnYmxvY2stc2VxJzpcbiAgICAgICAgICAgICAgICByZXR1cm4geWllbGQqIHRoaXMuYmxvY2tTZXF1ZW5jZSh0b3ApO1xuICAgICAgICAgICAgY2FzZSAnZmxvdy1jb2xsZWN0aW9uJzpcbiAgICAgICAgICAgICAgICByZXR1cm4geWllbGQqIHRoaXMuZmxvd0NvbGxlY3Rpb24odG9wKTtcbiAgICAgICAgICAgIGNhc2UgJ2RvYy1lbmQnOlxuICAgICAgICAgICAgICAgIHJldHVybiB5aWVsZCogdGhpcy5kb2N1bWVudEVuZCh0b3ApO1xuICAgICAgICB9XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0IHNob3VsZCBub3QgaGFwcGVuICovXG4gICAgICAgIHlpZWxkKiB0aGlzLnBvcCgpO1xuICAgIH1cbiAgICBwZWVrKG4pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGggLSBuXTtcbiAgICB9XG4gICAgKnBvcChlcnJvcikge1xuICAgICAgICBjb25zdCB0b2tlbiA9IGVycm9yID8/IHRoaXMuc3RhY2sucG9wKCk7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiBzaG91bGQgbm90IGhhcHBlbiAqL1xuICAgICAgICBpZiAoIXRva2VuKSB7XG4gICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gJ1RyaWVkIHRvIHBvcCBhbiBlbXB0eSBzdGFjayc7XG4gICAgICAgICAgICB5aWVsZCB7IHR5cGU6ICdlcnJvcicsIG9mZnNldDogdGhpcy5vZmZzZXQsIHNvdXJjZTogJycsIG1lc3NhZ2UgfTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLnN0YWNrLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgeWllbGQgdG9rZW47XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zdCB0b3AgPSB0aGlzLnBlZWsoMSk7XG4gICAgICAgICAgICBpZiAodG9rZW4udHlwZSA9PT0gJ2Jsb2NrLXNjYWxhcicpIHtcbiAgICAgICAgICAgICAgICAvLyBCbG9jayBzY2FsYXJzIHVzZSB0aGVpciBwYXJlbnQgcmF0aGVyIHRoYW4gaGVhZGVyIGluZGVudFxuICAgICAgICAgICAgICAgIHRva2VuLmluZGVudCA9ICdpbmRlbnQnIGluIHRvcCA/IHRvcC5pbmRlbnQgOiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodG9rZW4udHlwZSA9PT0gJ2Zsb3ctY29sbGVjdGlvbicgJiYgdG9wLnR5cGUgPT09ICdkb2N1bWVudCcpIHtcbiAgICAgICAgICAgICAgICAvLyBJZ25vcmUgYWxsIGluZGVudCBmb3IgdG9wLWxldmVsIGZsb3cgY29sbGVjdGlvbnNcbiAgICAgICAgICAgICAgICB0b2tlbi5pbmRlbnQgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRva2VuLnR5cGUgPT09ICdmbG93LWNvbGxlY3Rpb24nKVxuICAgICAgICAgICAgICAgIGZpeEZsb3dTZXFJdGVtcyh0b2tlbik7XG4gICAgICAgICAgICBzd2l0Y2ggKHRvcC50eXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnZG9jdW1lbnQnOlxuICAgICAgICAgICAgICAgICAgICB0b3AudmFsdWUgPSB0b2tlbjtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnYmxvY2stc2NhbGFyJzpcbiAgICAgICAgICAgICAgICAgICAgdG9wLnByb3BzLnB1c2godG9rZW4pOyAvLyBlcnJvclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdibG9jay1tYXAnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ID0gdG9wLml0ZW1zW3RvcC5pdGVtcy5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGl0LnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b3AuaXRlbXMucHVzaCh7IHN0YXJ0OiBbXSwga2V5OiB0b2tlbiwgc2VwOiBbXSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25LZXlMaW5lID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChpdC5zZXApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0LnZhbHVlID0gdG9rZW47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKGl0LCB7IGtleTogdG9rZW4sIHNlcDogW10gfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uS2V5TGluZSA9ICFpdC5leHBsaWNpdEtleTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSAnYmxvY2stc2VxJzoge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpdCA9IHRvcC5pdGVtc1t0b3AuaXRlbXMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICAgICAgICAgIGlmIChpdC52YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvcC5pdGVtcy5wdXNoKHsgc3RhcnQ6IFtdLCB2YWx1ZTogdG9rZW4gfSk7XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0LnZhbHVlID0gdG9rZW47XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlICdmbG93LWNvbGxlY3Rpb24nOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ID0gdG9wLml0ZW1zW3RvcC5pdGVtcy5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpdCB8fCBpdC52YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvcC5pdGVtcy5wdXNoKHsgc3RhcnQ6IFtdLCBrZXk6IHRva2VuLCBzZXA6IFtdIH0pO1xuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChpdC5zZXApXG4gICAgICAgICAgICAgICAgICAgICAgICBpdC52YWx1ZSA9IHRva2VuO1xuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKGl0LCB7IGtleTogdG9rZW4sIHNlcDogW10gfSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgc2hvdWxkIG5vdCBoYXBwZW4gKi9cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICB5aWVsZCogdGhpcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgeWllbGQqIHRoaXMucG9wKHRva2VuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICgodG9wLnR5cGUgPT09ICdkb2N1bWVudCcgfHxcbiAgICAgICAgICAgICAgICB0b3AudHlwZSA9PT0gJ2Jsb2NrLW1hcCcgfHxcbiAgICAgICAgICAgICAgICB0b3AudHlwZSA9PT0gJ2Jsb2NrLXNlcScpICYmXG4gICAgICAgICAgICAgICAgKHRva2VuLnR5cGUgPT09ICdibG9jay1tYXAnIHx8IHRva2VuLnR5cGUgPT09ICdibG9jay1zZXEnKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxhc3QgPSB0b2tlbi5pdGVtc1t0b2tlbi5pdGVtcy5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgICAgICBpZiAobGFzdCAmJlxuICAgICAgICAgICAgICAgICAgICAhbGFzdC5zZXAgJiZcbiAgICAgICAgICAgICAgICAgICAgIWxhc3QudmFsdWUgJiZcbiAgICAgICAgICAgICAgICAgICAgbGFzdC5zdGFydC5sZW5ndGggPiAwICYmXG4gICAgICAgICAgICAgICAgICAgIGZpbmROb25FbXB0eUluZGV4KGxhc3Quc3RhcnQpID09PSAtMSAmJlxuICAgICAgICAgICAgICAgICAgICAodG9rZW4uaW5kZW50ID09PSAwIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXN0LnN0YXJ0LmV2ZXJ5KHN0ID0+IHN0LnR5cGUgIT09ICdjb21tZW50JyB8fCBzdC5pbmRlbnQgPCB0b2tlbi5pbmRlbnQpKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodG9wLnR5cGUgPT09ICdkb2N1bWVudCcpXG4gICAgICAgICAgICAgICAgICAgICAgICB0b3AuZW5kID0gbGFzdC5zdGFydDtcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgdG9wLml0ZW1zLnB1c2goeyBzdGFydDogbGFzdC5zdGFydCB9KTtcbiAgICAgICAgICAgICAgICAgICAgdG9rZW4uaXRlbXMuc3BsaWNlKC0xLCAxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgKnN0cmVhbSgpIHtcbiAgICAgICAgc3dpdGNoICh0aGlzLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ2RpcmVjdGl2ZS1saW5lJzpcbiAgICAgICAgICAgICAgICB5aWVsZCB7IHR5cGU6ICdkaXJlY3RpdmUnLCBvZmZzZXQ6IHRoaXMub2Zmc2V0LCBzb3VyY2U6IHRoaXMuc291cmNlIH07XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgY2FzZSAnYnl0ZS1vcmRlci1tYXJrJzpcbiAgICAgICAgICAgIGNhc2UgJ3NwYWNlJzpcbiAgICAgICAgICAgIGNhc2UgJ2NvbW1lbnQnOlxuICAgICAgICAgICAgY2FzZSAnbmV3bGluZSc6XG4gICAgICAgICAgICAgICAgeWllbGQgdGhpcy5zb3VyY2VUb2tlbjtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICBjYXNlICdkb2MtbW9kZSc6XG4gICAgICAgICAgICBjYXNlICdkb2Mtc3RhcnQnOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZG9jID0ge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnZG9jdW1lbnQnLFxuICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IHRoaXMub2Zmc2V0LFxuICAgICAgICAgICAgICAgICAgICBzdGFydDogW11cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnR5cGUgPT09ICdkb2Mtc3RhcnQnKVxuICAgICAgICAgICAgICAgICAgICBkb2Muc3RhcnQucHVzaCh0aGlzLnNvdXJjZVRva2VuKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YWNrLnB1c2goZG9jKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgeWllbGQge1xuICAgICAgICAgICAgdHlwZTogJ2Vycm9yJyxcbiAgICAgICAgICAgIG9mZnNldDogdGhpcy5vZmZzZXQsXG4gICAgICAgICAgICBtZXNzYWdlOiBgVW5leHBlY3RlZCAke3RoaXMudHlwZX0gdG9rZW4gaW4gWUFNTCBzdHJlYW1gLFxuICAgICAgICAgICAgc291cmNlOiB0aGlzLnNvdXJjZVxuICAgICAgICB9O1xuICAgIH1cbiAgICAqZG9jdW1lbnQoZG9jKSB7XG4gICAgICAgIGlmIChkb2MudmFsdWUpXG4gICAgICAgICAgICByZXR1cm4geWllbGQqIHRoaXMubGluZUVuZChkb2MpO1xuICAgICAgICBzd2l0Y2ggKHRoaXMudHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnZG9jLXN0YXJ0Jzoge1xuICAgICAgICAgICAgICAgIGlmIChmaW5kTm9uRW1wdHlJbmRleChkb2Muc3RhcnQpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICB5aWVsZCogdGhpcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgeWllbGQqIHRoaXMuc3RlcCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGRvYy5zdGFydC5wdXNoKHRoaXMuc291cmNlVG9rZW4pO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ2FuY2hvcic6XG4gICAgICAgICAgICBjYXNlICd0YWcnOlxuICAgICAgICAgICAgY2FzZSAnc3BhY2UnOlxuICAgICAgICAgICAgY2FzZSAnY29tbWVudCc6XG4gICAgICAgICAgICBjYXNlICduZXdsaW5lJzpcbiAgICAgICAgICAgICAgICBkb2Muc3RhcnQucHVzaCh0aGlzLnNvdXJjZVRva2VuKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYnYgPSB0aGlzLnN0YXJ0QmxvY2tWYWx1ZShkb2MpO1xuICAgICAgICBpZiAoYnYpXG4gICAgICAgICAgICB0aGlzLnN0YWNrLnB1c2goYnYpO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHlpZWxkIHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnZXJyb3InLFxuICAgICAgICAgICAgICAgIG9mZnNldDogdGhpcy5vZmZzZXQsXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogYFVuZXhwZWN0ZWQgJHt0aGlzLnR5cGV9IHRva2VuIGluIFlBTUwgZG9jdW1lbnRgLFxuICAgICAgICAgICAgICAgIHNvdXJjZTogdGhpcy5zb3VyY2VcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG4gICAgKnNjYWxhcihzY2FsYXIpIHtcbiAgICAgICAgaWYgKHRoaXMudHlwZSA9PT0gJ21hcC12YWx1ZS1pbmQnKSB7XG4gICAgICAgICAgICBjb25zdCBwcmV2ID0gZ2V0UHJldlByb3BzKHRoaXMucGVlaygyKSk7XG4gICAgICAgICAgICBjb25zdCBzdGFydCA9IGdldEZpcnN0S2V5U3RhcnRQcm9wcyhwcmV2KTtcbiAgICAgICAgICAgIGxldCBzZXA7XG4gICAgICAgICAgICBpZiAoc2NhbGFyLmVuZCkge1xuICAgICAgICAgICAgICAgIHNlcCA9IHNjYWxhci5lbmQ7XG4gICAgICAgICAgICAgICAgc2VwLnB1c2godGhpcy5zb3VyY2VUb2tlbik7XG4gICAgICAgICAgICAgICAgZGVsZXRlIHNjYWxhci5lbmQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgc2VwID0gW3RoaXMuc291cmNlVG9rZW5dO1xuICAgICAgICAgICAgY29uc3QgbWFwID0ge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdibG9jay1tYXAnLFxuICAgICAgICAgICAgICAgIG9mZnNldDogc2NhbGFyLm9mZnNldCxcbiAgICAgICAgICAgICAgICBpbmRlbnQ6IHNjYWxhci5pbmRlbnQsXG4gICAgICAgICAgICAgICAgaXRlbXM6IFt7IHN0YXJ0LCBrZXk6IHNjYWxhciwgc2VwIH1dXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGhpcy5vbktleUxpbmUgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aCAtIDFdID0gbWFwO1xuICAgICAgICB9XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHlpZWxkKiB0aGlzLmxpbmVFbmQoc2NhbGFyKTtcbiAgICB9XG4gICAgKmJsb2NrU2NhbGFyKHNjYWxhcikge1xuICAgICAgICBzd2l0Y2ggKHRoaXMudHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnc3BhY2UnOlxuICAgICAgICAgICAgY2FzZSAnY29tbWVudCc6XG4gICAgICAgICAgICBjYXNlICduZXdsaW5lJzpcbiAgICAgICAgICAgICAgICBzY2FsYXIucHJvcHMucHVzaCh0aGlzLnNvdXJjZVRva2VuKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICBjYXNlICdzY2FsYXInOlxuICAgICAgICAgICAgICAgIHNjYWxhci5zb3VyY2UgPSB0aGlzLnNvdXJjZTtcbiAgICAgICAgICAgICAgICAvLyBibG9jay1zY2FsYXIgc291cmNlIGluY2x1ZGVzIHRyYWlsaW5nIG5ld2xpbmVcbiAgICAgICAgICAgICAgICB0aGlzLmF0TmV3TGluZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5pbmRlbnQgPSAwO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLm9uTmV3TGluZSkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgbmwgPSB0aGlzLnNvdXJjZS5pbmRleE9mKCdcXG4nKSArIDE7XG4gICAgICAgICAgICAgICAgICAgIHdoaWxlIChubCAhPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vbk5ld0xpbmUodGhpcy5vZmZzZXQgKyBubCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBubCA9IHRoaXMuc291cmNlLmluZGV4T2YoJ1xcbicsIG5sKSArIDE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgeWllbGQqIHRoaXMucG9wKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCBzaG91bGQgbm90IGhhcHBlbiAqL1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB5aWVsZCogdGhpcy5wb3AoKTtcbiAgICAgICAgICAgICAgICB5aWVsZCogdGhpcy5zdGVwKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgKmJsb2NrTWFwKG1hcCkge1xuICAgICAgICBjb25zdCBpdCA9IG1hcC5pdGVtc1ttYXAuaXRlbXMubGVuZ3RoIC0gMV07XG4gICAgICAgIC8vIGl0LnNlcCBpcyB0cnVlLWlzaCBpZiBwYWlyIGFscmVhZHkgaGFzIGtleSBvciA6IHNlcGFyYXRvclxuICAgICAgICBzd2l0Y2ggKHRoaXMudHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnbmV3bGluZSc6XG4gICAgICAgICAgICAgICAgdGhpcy5vbktleUxpbmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBpZiAoaXQudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZW5kID0gJ2VuZCcgaW4gaXQudmFsdWUgPyBpdC52YWx1ZS5lbmQgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhc3QgPSBBcnJheS5pc0FycmF5KGVuZCkgPyBlbmRbZW5kLmxlbmd0aCAtIDFdIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICBpZiAobGFzdD8udHlwZSA9PT0gJ2NvbW1lbnQnKVxuICAgICAgICAgICAgICAgICAgICAgICAgZW5kPy5wdXNoKHRoaXMuc291cmNlVG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXAuaXRlbXMucHVzaCh7IHN0YXJ0OiBbdGhpcy5zb3VyY2VUb2tlbl0gfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGl0LnNlcCkge1xuICAgICAgICAgICAgICAgICAgICBpdC5zZXAucHVzaCh0aGlzLnNvdXJjZVRva2VuKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGl0LnN0YXJ0LnB1c2godGhpcy5zb3VyY2VUb2tlbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIGNhc2UgJ3NwYWNlJzpcbiAgICAgICAgICAgIGNhc2UgJ2NvbW1lbnQnOlxuICAgICAgICAgICAgICAgIGlmIChpdC52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBtYXAuaXRlbXMucHVzaCh7IHN0YXJ0OiBbdGhpcy5zb3VyY2VUb2tlbl0gfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGl0LnNlcCkge1xuICAgICAgICAgICAgICAgICAgICBpdC5zZXAucHVzaCh0aGlzLnNvdXJjZVRva2VuKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmF0SW5kZW50ZWRDb21tZW50KGl0LnN0YXJ0LCBtYXAuaW5kZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJldiA9IG1hcC5pdGVtc1ttYXAuaXRlbXMubGVuZ3RoIC0gMl07XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlbmQgPSBwcmV2Py52YWx1ZT8uZW5kO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZW5kKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KGVuZCwgaXQuc3RhcnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZC5wdXNoKHRoaXMuc291cmNlVG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcC5pdGVtcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaXQuc3RhcnQucHVzaCh0aGlzLnNvdXJjZVRva2VuKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmluZGVudCA+PSBtYXAuaW5kZW50KSB7XG4gICAgICAgICAgICBjb25zdCBhdE1hcEluZGVudCA9ICF0aGlzLm9uS2V5TGluZSAmJiB0aGlzLmluZGVudCA9PT0gbWFwLmluZGVudDtcbiAgICAgICAgICAgIGNvbnN0IGF0TmV4dEl0ZW0gPSBhdE1hcEluZGVudCAmJlxuICAgICAgICAgICAgICAgIChpdC5zZXAgfHwgaXQuZXhwbGljaXRLZXkpICYmXG4gICAgICAgICAgICAgICAgdGhpcy50eXBlICE9PSAnc2VxLWl0ZW0taW5kJztcbiAgICAgICAgICAgIC8vIEZvciBlbXB0eSBub2RlcywgYXNzaWduIG5ld2xpbmUtc2VwYXJhdGVkIG5vdCBpbmRlbnRlZCBlbXB0eSB0b2tlbnMgdG8gZm9sbG93aW5nIG5vZGVcbiAgICAgICAgICAgIGxldCBzdGFydCA9IFtdO1xuICAgICAgICAgICAgaWYgKGF0TmV4dEl0ZW0gJiYgaXQuc2VwICYmICFpdC52YWx1ZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5sID0gW107XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdC5zZXAubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3QgPSBpdC5zZXBbaV07XG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoc3QudHlwZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbmV3bGluZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmwucHVzaChpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NwYWNlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2NvbW1lbnQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdC5pbmRlbnQgPiBtYXAuaW5kZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBubC5sZW5ndGggPSAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBubC5sZW5ndGggPSAwO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChubC5sZW5ndGggPj0gMilcbiAgICAgICAgICAgICAgICAgICAgc3RhcnQgPSBpdC5zZXAuc3BsaWNlKG5sWzFdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN3aXRjaCAodGhpcy50eXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnYW5jaG9yJzpcbiAgICAgICAgICAgICAgICBjYXNlICd0YWcnOlxuICAgICAgICAgICAgICAgICAgICBpZiAoYXROZXh0SXRlbSB8fCBpdC52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQucHVzaCh0aGlzLnNvdXJjZVRva2VuKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcC5pdGVtcy5wdXNoKHsgc3RhcnQgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uS2V5TGluZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoaXQuc2VwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdC5zZXAucHVzaCh0aGlzLnNvdXJjZVRva2VuKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0LnN0YXJ0LnB1c2godGhpcy5zb3VyY2VUb2tlbik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2V4cGxpY2l0LWtleS1pbmQnOlxuICAgICAgICAgICAgICAgICAgICBpZiAoIWl0LnNlcCAmJiAhaXQuZXhwbGljaXRLZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0LnN0YXJ0LnB1c2godGhpcy5zb3VyY2VUb2tlbik7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdC5leHBsaWNpdEtleSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoYXROZXh0SXRlbSB8fCBpdC52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQucHVzaCh0aGlzLnNvdXJjZVRva2VuKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcC5pdGVtcy5wdXNoKHsgc3RhcnQsIGV4cGxpY2l0S2V5OiB0cnVlIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGFjay5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnYmxvY2stbWFwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IHRoaXMub2Zmc2V0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGVudDogdGhpcy5pbmRlbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXM6IFt7IHN0YXJ0OiBbdGhpcy5zb3VyY2VUb2tlbl0sIGV4cGxpY2l0S2V5OiB0cnVlIH1dXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uS2V5TGluZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICBjYXNlICdtYXAtdmFsdWUtaW5kJzpcbiAgICAgICAgICAgICAgICAgICAgaWYgKGl0LmV4cGxpY2l0S2V5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWl0LnNlcCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbmNsdWRlc1Rva2VuKGl0LnN0YXJ0LCAnbmV3bGluZScpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oaXQsIHsga2V5OiBudWxsLCBzZXA6IFt0aGlzLnNvdXJjZVRva2VuXSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0ID0gZ2V0Rmlyc3RLZXlTdGFydFByb3BzKGl0LnN0YXJ0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGFjay5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdibG9jay1tYXAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiB0aGlzLm9mZnNldCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGVudDogdGhpcy5pbmRlbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtczogW3sgc3RhcnQsIGtleTogbnVsbCwgc2VwOiBbdGhpcy5zb3VyY2VUb2tlbl0gfV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoaXQudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXAuaXRlbXMucHVzaCh7IHN0YXJ0OiBbXSwga2V5OiBudWxsLCBzZXA6IFt0aGlzLnNvdXJjZVRva2VuXSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGluY2x1ZGVzVG9rZW4oaXQuc2VwLCAnbWFwLXZhbHVlLWluZCcpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGFjay5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2Jsb2NrLW1hcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDogdGhpcy5vZmZzZXQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGVudDogdGhpcy5pbmRlbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zOiBbeyBzdGFydCwga2V5OiBudWxsLCBzZXA6IFt0aGlzLnNvdXJjZVRva2VuXSB9XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoaXNGbG93VG9rZW4oaXQua2V5KSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICFpbmNsdWRlc1Rva2VuKGl0LnNlcCwgJ25ld2xpbmUnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0ID0gZ2V0Rmlyc3RLZXlTdGFydFByb3BzKGl0LnN0YXJ0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBpdC5rZXk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VwID0gaXQuc2VwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcC5wdXNoKHRoaXMuc291cmNlVG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgdHlwZSBndWFyZCBpcyB3cm9uZyBoZXJlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGl0LmtleTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIHR5cGUgZ3VhcmQgaXMgd3JvbmcgaGVyZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBpdC5zZXA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGFjay5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2Jsb2NrLW1hcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDogdGhpcy5vZmZzZXQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGVudDogdGhpcy5pbmRlbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zOiBbeyBzdGFydCwga2V5LCBzZXAgfV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHN0YXJ0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOb3QgYWN0dWFsbHkgYXQgbmV4dCBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuc2VwID0gaXQuc2VwLmNvbmNhdChzdGFydCwgdGhpcy5zb3VyY2VUb2tlbik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5zZXAucHVzaCh0aGlzLnNvdXJjZVRva2VuKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXQuc2VwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihpdCwgeyBrZXk6IG51bGwsIHNlcDogW3RoaXMuc291cmNlVG9rZW5dIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoaXQudmFsdWUgfHwgYXROZXh0SXRlbSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcC5pdGVtcy5wdXNoKHsgc3RhcnQsIGtleTogbnVsbCwgc2VwOiBbdGhpcy5zb3VyY2VUb2tlbl0gfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChpbmNsdWRlc1Rva2VuKGl0LnNlcCwgJ21hcC12YWx1ZS1pbmQnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhY2sucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdibG9jay1tYXAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IHRoaXMub2Zmc2V0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRlbnQ6IHRoaXMuaW5kZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtczogW3sgc3RhcnQ6IFtdLCBrZXk6IG51bGwsIHNlcDogW3RoaXMuc291cmNlVG9rZW5dIH1dXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC5zZXAucHVzaCh0aGlzLnNvdXJjZVRva2VuKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uS2V5TGluZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICBjYXNlICdhbGlhcyc6XG4gICAgICAgICAgICAgICAgY2FzZSAnc2NhbGFyJzpcbiAgICAgICAgICAgICAgICBjYXNlICdzaW5nbGUtcXVvdGVkLXNjYWxhcic6XG4gICAgICAgICAgICAgICAgY2FzZSAnZG91YmxlLXF1b3RlZC1zY2FsYXInOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZzID0gdGhpcy5mbG93U2NhbGFyKHRoaXMudHlwZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChhdE5leHRJdGVtIHx8IGl0LnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXAuaXRlbXMucHVzaCh7IHN0YXJ0LCBrZXk6IGZzLCBzZXA6IFtdIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vbktleUxpbmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGl0LnNlcCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGFjay5wdXNoKGZzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oaXQsIHsga2V5OiBmcywgc2VwOiBbXSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25LZXlMaW5lID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYnYgPSB0aGlzLnN0YXJ0QmxvY2tWYWx1ZShtYXApO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYnYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhdE1hcEluZGVudCAmJiBidi50eXBlICE9PSAnYmxvY2stc2VxJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcC5pdGVtcy5wdXNoKHsgc3RhcnQgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YWNrLnB1c2goYnYpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHlpZWxkKiB0aGlzLnBvcCgpO1xuICAgICAgICB5aWVsZCogdGhpcy5zdGVwKCk7XG4gICAgfVxuICAgICpibG9ja1NlcXVlbmNlKHNlcSkge1xuICAgICAgICBjb25zdCBpdCA9IHNlcS5pdGVtc1tzZXEuaXRlbXMubGVuZ3RoIC0gMV07XG4gICAgICAgIHN3aXRjaCAodGhpcy50eXBlKSB7XG4gICAgICAgICAgICBjYXNlICduZXdsaW5lJzpcbiAgICAgICAgICAgICAgICBpZiAoaXQudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZW5kID0gJ2VuZCcgaW4gaXQudmFsdWUgPyBpdC52YWx1ZS5lbmQgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhc3QgPSBBcnJheS5pc0FycmF5KGVuZCkgPyBlbmRbZW5kLmxlbmd0aCAtIDFdIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICBpZiAobGFzdD8udHlwZSA9PT0gJ2NvbW1lbnQnKVxuICAgICAgICAgICAgICAgICAgICAgICAgZW5kPy5wdXNoKHRoaXMuc291cmNlVG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXEuaXRlbXMucHVzaCh7IHN0YXJ0OiBbdGhpcy5zb3VyY2VUb2tlbl0gfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgaXQuc3RhcnQucHVzaCh0aGlzLnNvdXJjZVRva2VuKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICBjYXNlICdzcGFjZSc6XG4gICAgICAgICAgICBjYXNlICdjb21tZW50JzpcbiAgICAgICAgICAgICAgICBpZiAoaXQudmFsdWUpXG4gICAgICAgICAgICAgICAgICAgIHNlcS5pdGVtcy5wdXNoKHsgc3RhcnQ6IFt0aGlzLnNvdXJjZVRva2VuXSB9KTtcbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuYXRJbmRlbnRlZENvbW1lbnQoaXQuc3RhcnQsIHNlcS5pbmRlbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmV2ID0gc2VxLml0ZW1zW3NlcS5pdGVtcy5sZW5ndGggLSAyXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVuZCA9IHByZXY/LnZhbHVlPy5lbmQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShlbmQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkoZW5kLCBpdC5zdGFydCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kLnB1c2godGhpcy5zb3VyY2VUb2tlbik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VxLml0ZW1zLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpdC5zdGFydC5wdXNoKHRoaXMuc291cmNlVG9rZW4pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICBjYXNlICdhbmNob3InOlxuICAgICAgICAgICAgY2FzZSAndGFnJzpcbiAgICAgICAgICAgICAgICBpZiAoaXQudmFsdWUgfHwgdGhpcy5pbmRlbnQgPD0gc2VxLmluZGVudClcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgaXQuc3RhcnQucHVzaCh0aGlzLnNvdXJjZVRva2VuKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICBjYXNlICdzZXEtaXRlbS1pbmQnOlxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmluZGVudCAhPT0gc2VxLmluZGVudClcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgaWYgKGl0LnZhbHVlIHx8IGluY2x1ZGVzVG9rZW4oaXQuc3RhcnQsICdzZXEtaXRlbS1pbmQnKSlcbiAgICAgICAgICAgICAgICAgICAgc2VxLml0ZW1zLnB1c2goeyBzdGFydDogW3RoaXMuc291cmNlVG9rZW5dIH0pO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgaXQuc3RhcnQucHVzaCh0aGlzLnNvdXJjZVRva2VuKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaW5kZW50ID4gc2VxLmluZGVudCkge1xuICAgICAgICAgICAgY29uc3QgYnYgPSB0aGlzLnN0YXJ0QmxvY2tWYWx1ZShzZXEpO1xuICAgICAgICAgICAgaWYgKGJ2KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGFjay5wdXNoKGJ2KTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgeWllbGQqIHRoaXMucG9wKCk7XG4gICAgICAgIHlpZWxkKiB0aGlzLnN0ZXAoKTtcbiAgICB9XG4gICAgKmZsb3dDb2xsZWN0aW9uKGZjKSB7XG4gICAgICAgIGNvbnN0IGl0ID0gZmMuaXRlbXNbZmMuaXRlbXMubGVuZ3RoIC0gMV07XG4gICAgICAgIGlmICh0aGlzLnR5cGUgPT09ICdmbG93LWVycm9yLWVuZCcpIHtcbiAgICAgICAgICAgIGxldCB0b3A7XG4gICAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAgICAgeWllbGQqIHRoaXMucG9wKCk7XG4gICAgICAgICAgICAgICAgdG9wID0gdGhpcy5wZWVrKDEpO1xuICAgICAgICAgICAgfSB3aGlsZSAodG9wICYmIHRvcC50eXBlID09PSAnZmxvdy1jb2xsZWN0aW9uJyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZmMuZW5kLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgc3dpdGNoICh0aGlzLnR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdjb21tYSc6XG4gICAgICAgICAgICAgICAgY2FzZSAnZXhwbGljaXQta2V5LWluZCc6XG4gICAgICAgICAgICAgICAgICAgIGlmICghaXQgfHwgaXQuc2VwKVxuICAgICAgICAgICAgICAgICAgICAgICAgZmMuaXRlbXMucHVzaCh7IHN0YXJ0OiBbdGhpcy5zb3VyY2VUb2tlbl0gfSk7XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0LnN0YXJ0LnB1c2godGhpcy5zb3VyY2VUb2tlbik7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICBjYXNlICdtYXAtdmFsdWUtaW5kJzpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpdCB8fCBpdC52YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIGZjLml0ZW1zLnB1c2goeyBzdGFydDogW10sIGtleTogbnVsbCwgc2VwOiBbdGhpcy5zb3VyY2VUb2tlbl0gfSk7XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGl0LnNlcClcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0LnNlcC5wdXNoKHRoaXMuc291cmNlVG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKGl0LCB7IGtleTogbnVsbCwgc2VwOiBbdGhpcy5zb3VyY2VUb2tlbl0gfSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICBjYXNlICdzcGFjZSc6XG4gICAgICAgICAgICAgICAgY2FzZSAnY29tbWVudCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnbmV3bGluZSc6XG4gICAgICAgICAgICAgICAgY2FzZSAnYW5jaG9yJzpcbiAgICAgICAgICAgICAgICBjYXNlICd0YWcnOlxuICAgICAgICAgICAgICAgICAgICBpZiAoIWl0IHx8IGl0LnZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgZmMuaXRlbXMucHVzaCh7IHN0YXJ0OiBbdGhpcy5zb3VyY2VUb2tlbl0gfSk7XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGl0LnNlcClcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0LnNlcC5wdXNoKHRoaXMuc291cmNlVG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICBpdC5zdGFydC5wdXNoKHRoaXMuc291cmNlVG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgY2FzZSAnYWxpYXMnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ3NjYWxhcic6XG4gICAgICAgICAgICAgICAgY2FzZSAnc2luZ2xlLXF1b3RlZC1zY2FsYXInOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2RvdWJsZS1xdW90ZWQtc2NhbGFyJzoge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmcyA9IHRoaXMuZmxvd1NjYWxhcih0aGlzLnR5cGUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWl0IHx8IGl0LnZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgZmMuaXRlbXMucHVzaCh7IHN0YXJ0OiBbXSwga2V5OiBmcywgc2VwOiBbXSB9KTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoaXQuc2VwKVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGFjay5wdXNoKGZzKTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihpdCwgeyBrZXk6IGZzLCBzZXA6IFtdIH0pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgJ2Zsb3ctbWFwLWVuZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnZmxvdy1zZXEtZW5kJzpcbiAgICAgICAgICAgICAgICAgICAgZmMuZW5kLnB1c2godGhpcy5zb3VyY2VUb2tlbik7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGJ2ID0gdGhpcy5zdGFydEJsb2NrVmFsdWUoZmMpO1xuICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2Ugc2hvdWxkIG5vdCBoYXBwZW4gKi9cbiAgICAgICAgICAgIGlmIChidilcbiAgICAgICAgICAgICAgICB0aGlzLnN0YWNrLnB1c2goYnYpO1xuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgeWllbGQqIHRoaXMucG9wKCk7XG4gICAgICAgICAgICAgICAgeWllbGQqIHRoaXMuc3RlcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gdGhpcy5wZWVrKDIpO1xuICAgICAgICAgICAgaWYgKHBhcmVudC50eXBlID09PSAnYmxvY2stbWFwJyAmJlxuICAgICAgICAgICAgICAgICgodGhpcy50eXBlID09PSAnbWFwLXZhbHVlLWluZCcgJiYgcGFyZW50LmluZGVudCA9PT0gZmMuaW5kZW50KSB8fFxuICAgICAgICAgICAgICAgICAgICAodGhpcy50eXBlID09PSAnbmV3bGluZScgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICFwYXJlbnQuaXRlbXNbcGFyZW50Lml0ZW1zLmxlbmd0aCAtIDFdLnNlcCkpKSB7XG4gICAgICAgICAgICAgICAgeWllbGQqIHRoaXMucG9wKCk7XG4gICAgICAgICAgICAgICAgeWllbGQqIHRoaXMuc3RlcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodGhpcy50eXBlID09PSAnbWFwLXZhbHVlLWluZCcgJiZcbiAgICAgICAgICAgICAgICBwYXJlbnQudHlwZSAhPT0gJ2Zsb3ctY29sbGVjdGlvbicpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwcmV2ID0gZ2V0UHJldlByb3BzKHBhcmVudCk7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3RhcnQgPSBnZXRGaXJzdEtleVN0YXJ0UHJvcHMocHJldik7XG4gICAgICAgICAgICAgICAgZml4Rmxvd1NlcUl0ZW1zKGZjKTtcbiAgICAgICAgICAgICAgICBjb25zdCBzZXAgPSBmYy5lbmQuc3BsaWNlKDEsIGZjLmVuZC5sZW5ndGgpO1xuICAgICAgICAgICAgICAgIHNlcC5wdXNoKHRoaXMuc291cmNlVG9rZW4pO1xuICAgICAgICAgICAgICAgIGNvbnN0IG1hcCA9IHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2Jsb2NrLW1hcCcsXG4gICAgICAgICAgICAgICAgICAgIG9mZnNldDogZmMub2Zmc2V0LFxuICAgICAgICAgICAgICAgICAgICBpbmRlbnQ6IGZjLmluZGVudCxcbiAgICAgICAgICAgICAgICAgICAgaXRlbXM6IFt7IHN0YXJ0LCBrZXk6IGZjLCBzZXAgfV1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHRoaXMub25LZXlMaW5lID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoIC0gMV0gPSBtYXA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB5aWVsZCogdGhpcy5saW5lRW5kKGZjKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBmbG93U2NhbGFyKHR5cGUpIHtcbiAgICAgICAgaWYgKHRoaXMub25OZXdMaW5lKSB7XG4gICAgICAgICAgICBsZXQgbmwgPSB0aGlzLnNvdXJjZS5pbmRleE9mKCdcXG4nKSArIDE7XG4gICAgICAgICAgICB3aGlsZSAobmwgIT09IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uTmV3TGluZSh0aGlzLm9mZnNldCArIG5sKTtcbiAgICAgICAgICAgICAgICBubCA9IHRoaXMuc291cmNlLmluZGV4T2YoJ1xcbicsIG5sKSArIDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgICBvZmZzZXQ6IHRoaXMub2Zmc2V0LFxuICAgICAgICAgICAgaW5kZW50OiB0aGlzLmluZGVudCxcbiAgICAgICAgICAgIHNvdXJjZTogdGhpcy5zb3VyY2VcbiAgICAgICAgfTtcbiAgICB9XG4gICAgc3RhcnRCbG9ja1ZhbHVlKHBhcmVudCkge1xuICAgICAgICBzd2l0Y2ggKHRoaXMudHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnYWxpYXMnOlxuICAgICAgICAgICAgY2FzZSAnc2NhbGFyJzpcbiAgICAgICAgICAgIGNhc2UgJ3NpbmdsZS1xdW90ZWQtc2NhbGFyJzpcbiAgICAgICAgICAgIGNhc2UgJ2RvdWJsZS1xdW90ZWQtc2NhbGFyJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5mbG93U2NhbGFyKHRoaXMudHlwZSk7XG4gICAgICAgICAgICBjYXNlICdibG9jay1zY2FsYXItaGVhZGVyJzpcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnYmxvY2stc2NhbGFyJyxcbiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiB0aGlzLm9mZnNldCxcbiAgICAgICAgICAgICAgICAgICAgaW5kZW50OiB0aGlzLmluZGVudCxcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM6IFt0aGlzLnNvdXJjZVRva2VuXSxcbiAgICAgICAgICAgICAgICAgICAgc291cmNlOiAnJ1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjYXNlICdmbG93LW1hcC1zdGFydCc6XG4gICAgICAgICAgICBjYXNlICdmbG93LXNlcS1zdGFydCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2Zsb3ctY29sbGVjdGlvbicsXG4gICAgICAgICAgICAgICAgICAgIG9mZnNldDogdGhpcy5vZmZzZXQsXG4gICAgICAgICAgICAgICAgICAgIGluZGVudDogdGhpcy5pbmRlbnQsXG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0OiB0aGlzLnNvdXJjZVRva2VuLFxuICAgICAgICAgICAgICAgICAgICBpdGVtczogW10sXG4gICAgICAgICAgICAgICAgICAgIGVuZDogW11cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgY2FzZSAnc2VxLWl0ZW0taW5kJzpcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnYmxvY2stc2VxJyxcbiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiB0aGlzLm9mZnNldCxcbiAgICAgICAgICAgICAgICAgICAgaW5kZW50OiB0aGlzLmluZGVudCxcbiAgICAgICAgICAgICAgICAgICAgaXRlbXM6IFt7IHN0YXJ0OiBbdGhpcy5zb3VyY2VUb2tlbl0gfV1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgY2FzZSAnZXhwbGljaXQta2V5LWluZCc6IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uS2V5TGluZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJldiA9IGdldFByZXZQcm9wcyhwYXJlbnQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0ID0gZ2V0Rmlyc3RLZXlTdGFydFByb3BzKHByZXYpO1xuICAgICAgICAgICAgICAgIHN0YXJ0LnB1c2godGhpcy5zb3VyY2VUb2tlbik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2Jsb2NrLW1hcCcsXG4gICAgICAgICAgICAgICAgICAgIG9mZnNldDogdGhpcy5vZmZzZXQsXG4gICAgICAgICAgICAgICAgICAgIGluZGVudDogdGhpcy5pbmRlbnQsXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zOiBbeyBzdGFydCwgZXhwbGljaXRLZXk6IHRydWUgfV1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnbWFwLXZhbHVlLWluZCc6IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uS2V5TGluZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJldiA9IGdldFByZXZQcm9wcyhwYXJlbnQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0ID0gZ2V0Rmlyc3RLZXlTdGFydFByb3BzKHByZXYpO1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdibG9jay1tYXAnLFxuICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IHRoaXMub2Zmc2V0LFxuICAgICAgICAgICAgICAgICAgICBpbmRlbnQ6IHRoaXMuaW5kZW50LFxuICAgICAgICAgICAgICAgICAgICBpdGVtczogW3sgc3RhcnQsIGtleTogbnVsbCwgc2VwOiBbdGhpcy5zb3VyY2VUb2tlbl0gfV1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBhdEluZGVudGVkQ29tbWVudChzdGFydCwgaW5kZW50KSB7XG4gICAgICAgIGlmICh0aGlzLnR5cGUgIT09ICdjb21tZW50JylcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgaWYgKHRoaXMuaW5kZW50IDw9IGluZGVudClcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgcmV0dXJuIHN0YXJ0LmV2ZXJ5KHN0ID0+IHN0LnR5cGUgPT09ICduZXdsaW5lJyB8fCBzdC50eXBlID09PSAnc3BhY2UnKTtcbiAgICB9XG4gICAgKmRvY3VtZW50RW5kKGRvY0VuZCkge1xuICAgICAgICBpZiAodGhpcy50eXBlICE9PSAnZG9jLW1vZGUnKSB7XG4gICAgICAgICAgICBpZiAoZG9jRW5kLmVuZClcbiAgICAgICAgICAgICAgICBkb2NFbmQuZW5kLnB1c2godGhpcy5zb3VyY2VUb2tlbik7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZG9jRW5kLmVuZCA9IFt0aGlzLnNvdXJjZVRva2VuXTtcbiAgICAgICAgICAgIGlmICh0aGlzLnR5cGUgPT09ICduZXdsaW5lJylcbiAgICAgICAgICAgICAgICB5aWVsZCogdGhpcy5wb3AoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAqbGluZUVuZCh0b2tlbikge1xuICAgICAgICBzd2l0Y2ggKHRoaXMudHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnY29tbWEnOlxuICAgICAgICAgICAgY2FzZSAnZG9jLXN0YXJ0JzpcbiAgICAgICAgICAgIGNhc2UgJ2RvYy1lbmQnOlxuICAgICAgICAgICAgY2FzZSAnZmxvdy1zZXEtZW5kJzpcbiAgICAgICAgICAgIGNhc2UgJ2Zsb3ctbWFwLWVuZCc6XG4gICAgICAgICAgICBjYXNlICdtYXAtdmFsdWUtaW5kJzpcbiAgICAgICAgICAgICAgICB5aWVsZCogdGhpcy5wb3AoKTtcbiAgICAgICAgICAgICAgICB5aWVsZCogdGhpcy5zdGVwKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICduZXdsaW5lJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uS2V5TGluZSA9IGZhbHNlO1xuICAgICAgICAgICAgLy8gZmFsbHRocm91Z2hcbiAgICAgICAgICAgIGNhc2UgJ3NwYWNlJzpcbiAgICAgICAgICAgIGNhc2UgJ2NvbW1lbnQnOlxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAvLyBhbGwgb3RoZXIgdmFsdWVzIGFyZSBlcnJvcnNcbiAgICAgICAgICAgICAgICBpZiAodG9rZW4uZW5kKVxuICAgICAgICAgICAgICAgICAgICB0b2tlbi5lbmQucHVzaCh0aGlzLnNvdXJjZVRva2VuKTtcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIHRva2VuLmVuZCA9IFt0aGlzLnNvdXJjZVRva2VuXTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy50eXBlID09PSAnbmV3bGluZScpXG4gICAgICAgICAgICAgICAgICAgIHlpZWxkKiB0aGlzLnBvcCgpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgeyBQYXJzZXIgfTtcbiIsICJpbXBvcnQgeyBDb21wb3NlciB9IGZyb20gJy4vY29tcG9zZS9jb21wb3Nlci5qcyc7XG5pbXBvcnQgeyBEb2N1bWVudCB9IGZyb20gJy4vZG9jL0RvY3VtZW50LmpzJztcbmltcG9ydCB7IHByZXR0aWZ5RXJyb3IsIFlBTUxQYXJzZUVycm9yIH0gZnJvbSAnLi9lcnJvcnMuanMnO1xuaW1wb3J0IHsgd2FybiB9IGZyb20gJy4vbG9nLmpzJztcbmltcG9ydCB7IGlzRG9jdW1lbnQgfSBmcm9tICcuL25vZGVzL2lkZW50aXR5LmpzJztcbmltcG9ydCB7IExpbmVDb3VudGVyIH0gZnJvbSAnLi9wYXJzZS9saW5lLWNvdW50ZXIuanMnO1xuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSAnLi9wYXJzZS9wYXJzZXIuanMnO1xuXG5mdW5jdGlvbiBwYXJzZU9wdGlvbnMob3B0aW9ucykge1xuICAgIGNvbnN0IHByZXR0eUVycm9ycyA9IG9wdGlvbnMucHJldHR5RXJyb3JzICE9PSBmYWxzZTtcbiAgICBjb25zdCBsaW5lQ291bnRlciA9IG9wdGlvbnMubGluZUNvdW50ZXIgfHwgKHByZXR0eUVycm9ycyAmJiBuZXcgTGluZUNvdW50ZXIoKSkgfHwgbnVsbDtcbiAgICByZXR1cm4geyBsaW5lQ291bnRlciwgcHJldHR5RXJyb3JzIH07XG59XG4vKipcbiAqIFBhcnNlIHRoZSBpbnB1dCBhcyBhIHN0cmVhbSBvZiBZQU1MIGRvY3VtZW50cy5cbiAqXG4gKiBEb2N1bWVudHMgc2hvdWxkIGJlIHNlcGFyYXRlZCBmcm9tIGVhY2ggb3RoZXIgYnkgYC4uLmAgb3IgYC0tLWAgbWFya2VyIGxpbmVzLlxuICpcbiAqIEByZXR1cm5zIElmIGFuIGVtcHR5IGBkb2NzYCBhcnJheSBpcyByZXR1cm5lZCwgaXQgd2lsbCBiZSBvZiB0eXBlXG4gKiAgIEVtcHR5U3RyZWFtIGFuZCBjb250YWluIGFkZGl0aW9uYWwgc3RyZWFtIGluZm9ybWF0aW9uLiBJblxuICogICBUeXBlU2NyaXB0LCB5b3Ugc2hvdWxkIHVzZSBgJ2VtcHR5JyBpbiBkb2NzYCBhcyBhIHR5cGUgZ3VhcmQgZm9yIGl0LlxuICovXG5mdW5jdGlvbiBwYXJzZUFsbERvY3VtZW50cyhzb3VyY2UsIG9wdGlvbnMgPSB7fSkge1xuICAgIGNvbnN0IHsgbGluZUNvdW50ZXIsIHByZXR0eUVycm9ycyB9ID0gcGFyc2VPcHRpb25zKG9wdGlvbnMpO1xuICAgIGNvbnN0IHBhcnNlciA9IG5ldyBQYXJzZXIobGluZUNvdW50ZXI/LmFkZE5ld0xpbmUpO1xuICAgIGNvbnN0IGNvbXBvc2VyID0gbmV3IENvbXBvc2VyKG9wdGlvbnMpO1xuICAgIGNvbnN0IGRvY3MgPSBBcnJheS5mcm9tKGNvbXBvc2VyLmNvbXBvc2UocGFyc2VyLnBhcnNlKHNvdXJjZSkpKTtcbiAgICBpZiAocHJldHR5RXJyb3JzICYmIGxpbmVDb3VudGVyKVxuICAgICAgICBmb3IgKGNvbnN0IGRvYyBvZiBkb2NzKSB7XG4gICAgICAgICAgICBkb2MuZXJyb3JzLmZvckVhY2gocHJldHRpZnlFcnJvcihzb3VyY2UsIGxpbmVDb3VudGVyKSk7XG4gICAgICAgICAgICBkb2Mud2FybmluZ3MuZm9yRWFjaChwcmV0dGlmeUVycm9yKHNvdXJjZSwgbGluZUNvdW50ZXIpKTtcbiAgICAgICAgfVxuICAgIGlmIChkb2NzLmxlbmd0aCA+IDApXG4gICAgICAgIHJldHVybiBkb2NzO1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKFtdLCB7IGVtcHR5OiB0cnVlIH0sIGNvbXBvc2VyLnN0cmVhbUluZm8oKSk7XG59XG4vKiogUGFyc2UgYW4gaW5wdXQgc3RyaW5nIGludG8gYSBzaW5nbGUgWUFNTC5Eb2N1bWVudCAqL1xuZnVuY3Rpb24gcGFyc2VEb2N1bWVudChzb3VyY2UsIG9wdGlvbnMgPSB7fSkge1xuICAgIGNvbnN0IHsgbGluZUNvdW50ZXIsIHByZXR0eUVycm9ycyB9ID0gcGFyc2VPcHRpb25zKG9wdGlvbnMpO1xuICAgIGNvbnN0IHBhcnNlciA9IG5ldyBQYXJzZXIobGluZUNvdW50ZXI/LmFkZE5ld0xpbmUpO1xuICAgIGNvbnN0IGNvbXBvc2VyID0gbmV3IENvbXBvc2VyKG9wdGlvbnMpO1xuICAgIC8vIGBkb2NgIGlzIGFsd2F5cyBzZXQgYnkgY29tcG9zZS5lbmQodHJ1ZSkgYXQgdGhlIHZlcnkgbGF0ZXN0XG4gICAgbGV0IGRvYyA9IG51bGw7XG4gICAgZm9yIChjb25zdCBfZG9jIG9mIGNvbXBvc2VyLmNvbXBvc2UocGFyc2VyLnBhcnNlKHNvdXJjZSksIHRydWUsIHNvdXJjZS5sZW5ndGgpKSB7XG4gICAgICAgIGlmICghZG9jKVxuICAgICAgICAgICAgZG9jID0gX2RvYztcbiAgICAgICAgZWxzZSBpZiAoZG9jLm9wdGlvbnMubG9nTGV2ZWwgIT09ICdzaWxlbnQnKSB7XG4gICAgICAgICAgICBkb2MuZXJyb3JzLnB1c2gobmV3IFlBTUxQYXJzZUVycm9yKF9kb2MucmFuZ2Uuc2xpY2UoMCwgMiksICdNVUxUSVBMRV9ET0NTJywgJ1NvdXJjZSBjb250YWlucyBtdWx0aXBsZSBkb2N1bWVudHM7IHBsZWFzZSB1c2UgWUFNTC5wYXJzZUFsbERvY3VtZW50cygpJykpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHByZXR0eUVycm9ycyAmJiBsaW5lQ291bnRlcikge1xuICAgICAgICBkb2MuZXJyb3JzLmZvckVhY2gocHJldHRpZnlFcnJvcihzb3VyY2UsIGxpbmVDb3VudGVyKSk7XG4gICAgICAgIGRvYy53YXJuaW5ncy5mb3JFYWNoKHByZXR0aWZ5RXJyb3Ioc291cmNlLCBsaW5lQ291bnRlcikpO1xuICAgIH1cbiAgICByZXR1cm4gZG9jO1xufVxuZnVuY3Rpb24gcGFyc2Uoc3JjLCByZXZpdmVyLCBvcHRpb25zKSB7XG4gICAgbGV0IF9yZXZpdmVyID0gdW5kZWZpbmVkO1xuICAgIGlmICh0eXBlb2YgcmV2aXZlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBfcmV2aXZlciA9IHJldml2ZXI7XG4gICAgfVxuICAgIGVsc2UgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCAmJiByZXZpdmVyICYmIHR5cGVvZiByZXZpdmVyID09PSAnb2JqZWN0Jykge1xuICAgICAgICBvcHRpb25zID0gcmV2aXZlcjtcbiAgICB9XG4gICAgY29uc3QgZG9jID0gcGFyc2VEb2N1bWVudChzcmMsIG9wdGlvbnMpO1xuICAgIGlmICghZG9jKVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICBkb2Mud2FybmluZ3MuZm9yRWFjaCh3YXJuaW5nID0+IHdhcm4oZG9jLm9wdGlvbnMubG9nTGV2ZWwsIHdhcm5pbmcpKTtcbiAgICBpZiAoZG9jLmVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGlmIChkb2Mub3B0aW9ucy5sb2dMZXZlbCAhPT0gJ3NpbGVudCcpXG4gICAgICAgICAgICB0aHJvdyBkb2MuZXJyb3JzWzBdO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICBkb2MuZXJyb3JzID0gW107XG4gICAgfVxuICAgIHJldHVybiBkb2MudG9KUyhPYmplY3QuYXNzaWduKHsgcmV2aXZlcjogX3Jldml2ZXIgfSwgb3B0aW9ucykpO1xufVxuZnVuY3Rpb24gc3RyaW5naWZ5KHZhbHVlLCByZXBsYWNlciwgb3B0aW9ucykge1xuICAgIGxldCBfcmVwbGFjZXIgPSBudWxsO1xuICAgIGlmICh0eXBlb2YgcmVwbGFjZXIgPT09ICdmdW5jdGlvbicgfHwgQXJyYXkuaXNBcnJheShyZXBsYWNlcikpIHtcbiAgICAgICAgX3JlcGxhY2VyID0gcmVwbGFjZXI7XG4gICAgfVxuICAgIGVsc2UgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCAmJiByZXBsYWNlcikge1xuICAgICAgICBvcHRpb25zID0gcmVwbGFjZXI7XG4gICAgfVxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ3N0cmluZycpXG4gICAgICAgIG9wdGlvbnMgPSBvcHRpb25zLmxlbmd0aDtcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMgPT09ICdudW1iZXInKSB7XG4gICAgICAgIGNvbnN0IGluZGVudCA9IE1hdGgucm91bmQob3B0aW9ucyk7XG4gICAgICAgIG9wdGlvbnMgPSBpbmRlbnQgPCAxID8gdW5kZWZpbmVkIDogaW5kZW50ID4gOCA/IHsgaW5kZW50OiA4IH0gOiB7IGluZGVudCB9O1xuICAgIH1cbiAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCB7IGtlZXBVbmRlZmluZWQgfSA9IG9wdGlvbnMgPz8gcmVwbGFjZXIgPz8ge307XG4gICAgICAgIGlmICgha2VlcFVuZGVmaW5lZClcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGlmIChpc0RvY3VtZW50KHZhbHVlKSAmJiAhX3JlcGxhY2VyKVxuICAgICAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcob3B0aW9ucyk7XG4gICAgcmV0dXJuIG5ldyBEb2N1bWVudCh2YWx1ZSwgX3JlcGxhY2VyLCBvcHRpb25zKS50b1N0cmluZyhvcHRpb25zKTtcbn1cblxuZXhwb3J0IHsgcGFyc2UsIHBhcnNlQWxsRG9jdW1lbnRzLCBwYXJzZURvY3VtZW50LCBzdHJpbmdpZnkgfTtcbiIsICJpbXBvcnQgeyBKc29uTGluaywgTGluayB9IGZyb20gXCJleHByZXNzaW9uL2xpbmtcIjtcbmltcG9ydCB7IGdldEV4dGVuc2lvbiwgZ2V0RmlsZVRpdGxlIH0gZnJvbSBcInV0aWxzL25vcm1hbGl6ZXJzXCI7XG5pbXBvcnQgeyBDYWNoZWRNZXRhZGF0YSwgRmlsZVN0YXRzLCBGcm9udE1hdHRlckNhY2hlIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5pbXBvcnQgeyBwYXJzZSBhcyBwYXJzZVlhbWwgfSBmcm9tIFwieWFtbFwiO1xuaW1wb3J0IEJUcmVlIGZyb20gXCJzb3J0ZWQtYnRyZWVcIjtcbmltcG9ydCB7XG4gICAgSW5saW5lRmllbGQsXG4gICAgSnNvbklubGluZUZpZWxkLFxuICAgIGFzSW5saW5lRmllbGQsXG4gICAgZXh0cmFjdEZ1bGxMaW5lRmllbGQsXG4gICAgZXh0cmFjdElubGluZUZpZWxkcyxcbiAgICBqc29uSW5saW5lRmllbGQsXG59IGZyb20gXCIuL2lubGluZS1maWVsZFwiO1xuaW1wb3J0IHtcbiAgICBKc29uTWFya2Rvd25CbG9jayxcbiAgICBKc29uTWFya2Rvd25MaXN0QmxvY2ssXG4gICAgSnNvbk1hcmtkb3duTGlzdEl0ZW0sXG4gICAgSnNvbk1hcmtkb3duUGFnZSxcbiAgICBKc29uTWFya2Rvd25TZWN0aW9uLFxuICAgIEpzb25NYXJrZG93blRhc2tJdGVtLFxuICAgIEpzb25NYXJrZG93bkRhdGFibG9jayxcbiAgICBKc29uTWFya2Rvd25Db2RlYmxvY2ssXG4gICAgSnNvbkZyb250bWF0dGVyRW50cnksXG59IGZyb20gXCJpbmRleC90eXBlcy9qc29uL21hcmtkb3duXCI7XG5pbXBvcnQgeyBKc29uQ29udmVyc2lvbiB9IGZyb20gXCJpbmRleC90eXBlcy9qc29uL2NvbW1vblwiO1xuaW1wb3J0IHsgWWFtbENvbnZlcnNpb24gfSBmcm9tIFwiaW5kZXgvdHlwZXMveWFtbFwiO1xuaW1wb3J0IHsgbWFwT2JqZWN0VmFsdWVzIH0gZnJvbSBcInV0aWxzL2RhdGFcIjtcblxuLyoqIE1hdGNoZXMgeWFtbCBkYXRhYmxvY2tzLCB3aGljaCBzaG93IHVwIGFzIGluZGVwZW5kZW50IG9iamVjdHMgaW4gdGhlIGRhdGFjb3JlIGluZGV4LiAqL1xuY29uc3QgWUFNTF9EQVRBX1JFR0VYID0gL2BgYHlhbWw6ZGF0YS9pO1xuLyoqIE1hdGNoZXMgdGhlIHN0YXJ0IG9mIGFueSBjb2RlYmxvY2sgZmVuY2UuICovXG5jb25zdCBDT0RFQkxPQ0tfRkVOQ0VfUkVHRVggPSAvXig/OmBgYHx+fn4pKC4qKSQvaW07XG4vKiogTWF0Y2hlcyBsaXN0IGl0ZW1zIChpbmNsdWRpbmcgaW5zaWRlIHRleHQgYmxvY2tzKS4gKi9cbmNvbnN0IExJU1RfSVRFTV9SRUdFWCA9IC9eW1xccz5dKihcXGQrXFwufFxcZCtcXCl8XFwqfC18XFwrKVxccyooXFxbLnswLDF9XFxdKT9cXHMqKC4qKS9tc3U7XG5cbi8qKlxuICogR2l2ZW4gdGhlIHJhdyBzb3VyY2UgYW5kIE9ic2lkaWFuIG1ldGFkYXRhIGZvciBhIGdpdmVuIG1hcmtkb3duIGZpbGUsXG4gKiByZXR1cm4gZnVsbCBtYXJrZG93biBmaWxlIG1ldGFkYXRhLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFya2Rvd25JbXBvcnQoXG4gICAgcGF0aDogc3RyaW5nLFxuICAgIG1hcmtkb3duOiBzdHJpbmcsXG4gICAgbWV0YWRhdGE6IENhY2hlZE1ldGFkYXRhLFxuICAgIHN0YXRzOiBGaWxlU3RhdHNcbik6IEpzb25NYXJrZG93blBhZ2Uge1xuICAgIGNvbnN0IHsgbGluZXMsIG1ldGFkYXRhOiBwYWdlTWV0YWRhdGEsIGZyb250bWF0dGVyLCBzZWN0aW9ucyB9ID0gbWFya2Rvd25Tb3VyY2VJbXBvcnQocGF0aCwgbWFya2Rvd24sIG1ldGFkYXRhKTtcbiAgICBjb25zdCBwYWdlID0gbmV3IFBhZ2VEYXRhKHBhdGgsIHN0YXRzLCBsaW5lcy5sZW5ndGgsIHBhZ2VNZXRhZGF0YSwgc2VjdGlvbnMsIGZyb250bWF0dGVyKTtcblxuICAgIHJldHVybiBwYWdlLmJ1aWxkKCk7XG59XG5cbi8qKiBJbXBvcnQgbWFya2Rvd24gZmlsZSBtZXRhZGF0YSwgcHJvZHVjaW5nIGFsbCByZWxldmFudCBtYXJrZG93biBkYXRhLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hcmtkb3duU291cmNlSW1wb3J0KFxuICAgIHBhdGg6IHN0cmluZyxcbiAgICBtYXJrZG93bjogc3RyaW5nLFxuICAgIG1ldGFkYXRhOiBDYWNoZWRNZXRhZGF0YVxuKToge1xuICAgIGxpbmVzOiBzdHJpbmdbXTtcbiAgICBtZXRhZGF0YTogTWV0YWRhdGE7XG4gICAgZnJvbnRtYXR0ZXI/OiBSZWNvcmQ8c3RyaW5nLCBKc29uRnJvbnRtYXR0ZXJFbnRyeT47XG4gICAgc2VjdGlvbnM6IFNlY3Rpb25EYXRhW107XG59IHtcbiAgICBjb25zdCBmcm9udG1hdHRlcjogUmVjb3JkPHN0cmluZywgSnNvbkZyb250bWF0dGVyRW50cnk+IHwgdW5kZWZpbmVkID0gbWV0YWRhdGE/LmZyb250bWF0dGVyXG4gICAgICAgID8gcGFyc2VGcm9udG1hdHRlckJsb2NrKG1ldGFkYXRhLmZyb250bWF0dGVyKVxuICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBsaW5lcyA9IG1hcmtkb3duLnNwbGl0KC9cXHJcXG58XFxyfFxcbi8pO1xuICAgIGNvbnN0IG1hcmtkb3duTWV0YWRhdGEgPSBuZXcgTWV0YWRhdGEoKTtcbiAgICBjb25zdCBzZWN0aW9uQXJyYXk6IFNlY3Rpb25EYXRhW10gPSBbXTtcbiAgICAvLy8vLy8vLy8vLy8vL1xuICAgIC8vIFNlY3Rpb25zIC8vXG4gICAgLy8vLy8vLy8vLy8vLy9cblxuICAgIGNvbnN0IG1ldGFoZWFkaW5ncyA9IG1ldGFkYXRhPy5oZWFkaW5ncyA/PyBbXTtcbiAgICBtZXRhaGVhZGluZ3Muc29ydCgoYSwgYikgPT4gYS5wb3NpdGlvbi5zdGFydC5saW5lIC0gYi5wb3NpdGlvbi5zdGFydC5saW5lKTtcblxuICAgIGNvbnN0IHNlY3Rpb25zID0gbmV3IEJUcmVlPG51bWJlciwgU2VjdGlvbkRhdGE+KHVuZGVmaW5lZCwgKGEsIGIpID0+IGEgLSBiKTtcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgbWV0YWhlYWRpbmdzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICBjb25zdCBlbnRyeSA9IG1ldGFoZWFkaW5nc1tpbmRleF07XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gZW50cnkucG9zaXRpb24uc3RhcnQubGluZTtcbiAgICAgICAgY29uc3QgZW5kID0gaW5kZXggPT0gbWV0YWhlYWRpbmdzLmxlbmd0aCAtIDEgPyBsaW5lcy5sZW5ndGggOiBtZXRhaGVhZGluZ3NbaW5kZXggKyAxXS5wb3NpdGlvbi5zdGFydC5saW5lO1xuXG4gICAgICAgIGNvbnN0IHNlY3Rpb24gPSBuZXcgU2VjdGlvbkRhdGEoc3RhcnQsIGVuZCwgZW50cnkuaGVhZGluZywgZW50cnkubGV2ZWwsIGluZGV4ICsgMSk7XG4gICAgICAgIHNlY3Rpb25zLnNldChzdGFydCwgc2VjdGlvbik7XG4gICAgfVxuXG4gICAgLy8gQWRkIGFuIGltcGxpY2l0IHNlY3Rpb24gZm9yIHRoZSBcImhlYWRpbmdcIiBzZWN0aW9uIG9mIHRoZSBwYWdlIGlmIHRoZXJlIGlzIG5vdCBhbiBpbW1lZGlhdGUgaGVhZGVyIGJ1dCB0aGVyZSBpc1xuICAgIC8vIHNvbWUgY29udGVudCBpbiB0aGUgZmlsZS4gSWYgdGhlcmUgYXJlIG90aGVyIHNlY3Rpb25zLCB0aGVuIGdvIHVwIHRvIHRoYXQsIG90aGVyd2lzZSwgZ28gZm9yIHRoZSBlbnRpcmUgZmlsZS5cbiAgICBpZiAoc2VjdGlvbnMuc2l6ZSA9PSAwKSB7XG4gICAgICAgIGlmICghZW1wdHlsaW5lcyhsaW5lcywgMCwgbGluZXMubGVuZ3RoKSkge1xuICAgICAgICAgICAgY29uc3Qgc2VjdGlvbiA9IG5ldyBTZWN0aW9uRGF0YSgwLCBsaW5lcy5sZW5ndGgsIGdldEZpbGVUaXRsZShwYXRoKSwgMSwgMCk7XG4gICAgICAgICAgICBzZWN0aW9ucy5zZXQoMCwgc2VjdGlvbik7XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICAvLyBGaW5kIHRoZSBzdGFydCBvZiB0aGUgZmlyc3Qgc2VjdGlvbi5cbiAgICAgICAgY29uc3QgZmlyc3QgPSBzZWN0aW9ucy5nZXRQYWlyT3JOZXh0SGlnaGVyKDApPy5bMV0hITtcblxuICAgICAgICBpZiAoZmlyc3Quc3RhcnQgPiAwICYmICFlbXB0eWxpbmVzKGxpbmVzLCAwLCBmaXJzdC5zdGFydCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHNlY3Rpb24gPSBuZXcgU2VjdGlvbkRhdGEoMCwgZmlyc3Quc3RhcnQsIGdldEZpbGVUaXRsZShwYXRoKSwgMSwgMCk7XG5cbiAgICAgICAgICAgIHNlY3Rpb25zLnNldCgwLCBzZWN0aW9uKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vLy8vLy8vLy8vL1xuICAgIC8vIEJsb2NrcyAvL1xuICAgIC8vLy8vLy8vLy8vL1xuXG4gICAgLy8gQWxsIGJsb2Nrczsgd2Ugd2lsbCBhc3NpZ24gdGFncyBhbmQgb3RoZXIgbWV0YWRhdGEgdG8gYmxvY2tzIGFzIHdlIGVuY291bnRlciB0aGVtLiBBdCB0aGUgZW5kLCBvbmx5IGJsb2NrcyB0aGF0XG4gICAgLy8gaGF2ZSBhY3R1YWwgbWV0YWRhdGEgd2lsbCBiZSBzdG9yZWQgdG8gc2F2ZSBvbiBtZW1vcnkgcHJlc3N1cmUuXG4gICAgY29uc3QgYmxvY2tzID0gbmV3IEJUcmVlPG51bWJlciwgQmxvY2tEYXRhPih1bmRlZmluZWQsIChhLCBiKSA9PiBhIC0gYik7XG4gICAgbGV0IGJsb2NrT3JkaW5hbCA9IDE7XG4gICAgZm9yIChjb25zdCBibG9jayBvZiBtZXRhZGF0YT8uc2VjdGlvbnMgfHwgW10pIHtcbiAgICAgICAgLy8gU2tpcCBoZWFkaW5ncyBibG9ja3MsIHdlIGhhbmRsZSB0aGVtIHNwZWNpYWxseSBhcyBzZWN0aW9ucy5cbiAgICAgICAgaWYgKGJsb2NrLnR5cGUgPT09IFwiaGVhZGluZ1wiKSBjb250aW51ZTtcblxuICAgICAgICBjb25zdCBzdGFydCA9IGJsb2NrLnBvc2l0aW9uLnN0YXJ0LmxpbmU7XG4gICAgICAgIGNvbnN0IGVuZCA9IGJsb2NrLnBvc2l0aW9uLmVuZC5saW5lICsgMTtcbiAgICAgICAgY29uc3Qgc3RhcnRMaW5lID0gbGluZXNbc3RhcnRdOyAvLyB0byB1c2UgdG8gY2hlY2sgdGhlIGNvZGVibG9jayB0eXBlXG5cbiAgICAgICAgaWYgKGJsb2NrLnR5cGUgPT09IFwibGlzdFwiKSB7XG4gICAgICAgICAgICBibG9ja3Muc2V0KHN0YXJ0LCBuZXcgTGlzdEJsb2NrRGF0YShzdGFydCwgZW5kLCBibG9ja09yZGluYWwrKywgYmxvY2suaWQpKTtcbiAgICAgICAgfSBlbHNlIGlmIChibG9jay50eXBlID09IFwiY29kZVwiICYmIFlBTUxfREFUQV9SRUdFWC50ZXN0KHN0YXJ0TGluZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHlhbWw6IHN0cmluZyA9IGxpbmVzXG4gICAgICAgICAgICAgICAgLnNsaWNlKHN0YXJ0ICsgMSwgZW5kIC0gMSlcbiAgICAgICAgICAgICAgICAuam9pbihcIlxcblwiKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXHQvZ20sIFwiICBcIik7XG4gICAgICAgICAgICBjb25zdCBzcGxpdDogUmVjb3JkPHN0cmluZywgSnNvbkZyb250bWF0dGVyRW50cnk+ID0gcGFyc2VGcm9udG1hdHRlckJsb2NrKHBhcnNlWWFtbCh5YW1sKSk7XG5cbiAgICAgICAgICAgIGJsb2Nrcy5zZXQoc3RhcnQsIG5ldyBEYXRhYmxvY2tEYXRhKHN0YXJ0LCBlbmQsIGJsb2NrT3JkaW5hbCsrLCBzcGxpdCwgYmxvY2suaWQpKTtcbiAgICAgICAgfSBlbHNlIGlmIChibG9jay50eXBlID09PSBcImNvZGVcIikge1xuICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGJsb2NrIGlzIGZlbmNlZC5cbiAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gc3RhcnRMaW5lLm1hdGNoKENPREVCTE9DS19GRU5DRV9SRUdFWCk7XG4gICAgICAgICAgICBpZiAoIW1hdGNoKSB7XG4gICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBhbiBpbmRlbnRlZC1zdHlsZSBjb2RlYmxvY2suXG4gICAgICAgICAgICAgICAgYmxvY2tzLnNldChzdGFydCwgbmV3IENvZGVibG9ja0RhdGEoc3RhcnQsIGVuZCwgYmxvY2tPcmRpbmFsKyssIFtdLCBcImluZGVudFwiLCBzdGFydCwgZW5kLCBibG9jay5pZCkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBsYW5ndWFnZXMgPSBtYXRjaC5sZW5ndGggPiAxICYmIG1hdGNoWzFdID8gbWF0Y2hbMV0uc3BsaXQoXCIsXCIpIDogW107XG4gICAgICAgICAgICAgICAgYmxvY2tzLnNldChcbiAgICAgICAgICAgICAgICAgICAgc3RhcnQsXG4gICAgICAgICAgICAgICAgICAgIG5ldyBDb2RlYmxvY2tEYXRhKHN0YXJ0LCBlbmQsIGJsb2NrT3JkaW5hbCsrLCBsYW5ndWFnZXMsIFwiZmVuY2VkXCIsIHN0YXJ0ICsgMSwgZW5kIC0gMSwgYmxvY2suaWQpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJsb2Nrcy5zZXQoc3RhcnQsIG5ldyBCYXNlQmxvY2tEYXRhKHN0YXJ0LCBlbmQsIGJsb2NrT3JkaW5hbCsrLCBibG9jay50eXBlLCBibG9jay5pZCkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gQWRkIGJsb2NrcyB0byBzZWN0aW9ucy5cbiAgICBmb3IgKGNvbnN0IGJsb2NrIG9mIGJsb2Nrcy52YWx1ZXMoKSkge1xuICAgICAgICBsb29rdXAoYmxvY2suc3RhcnQsIHNlY3Rpb25zKT8uYmxvY2soYmxvY2spO1xuICAgIH1cblxuICAgIC8vLy8vLy8vLy8vXG4gICAgLy8gTGlzdHMgLy9cbiAgICAvLy8vLy8vLy8vL1xuXG4gICAgLy8gQWxsIGxpc3QgaXRlbXMgaW4gbGlzdHMuIFN0YXJ0IHdpdGggYSBzaW1wbGUgdHJpdmlhbCBwYXNzLlxuICAgIGNvbnN0IGNvbnRlbnRSZWdleCA9IC9eW1xcdFxcZlxcdiBdKltcXC0rXFwqXVxccyhcXFsuXFxdXFxzKT8vO1xuICAgIGNvbnN0IG1hcmtlclJlZ2V4ID0gL14oPj9cXHM/KSooXFx0fFxccykqL2c7XG4gICAgY29uc3QgbGlzdEl0ZW1zID0gbmV3IEJUcmVlPG51bWJlciwgTGlzdEl0ZW1EYXRhPih1bmRlZmluZWQsIChhLCBiKSA9PiBhIC0gYik7XG5cbiAgICBmb3IgKGNvbnN0IGxpc3Qgb2YgbWV0YWRhdGE/Lmxpc3RJdGVtcyB8fCBbXSkge1xuICAgICAgICBjb25zdCBsaW5lID0gbGluZXMuc2xpY2UobGlzdC5wb3NpdGlvbi5zdGFydC5saW5lLCBsaXN0LnBvc2l0aW9uLmVuZC5saW5lICsgMSkuam9pbihcIlxcblwiKTtcblxuICAgICAgICAvLyBUT0RPOiBJbXBsZW1lbnQgZmxhZyB3aGljaCBza2lwcyBpbmRleGluZyBsaXN0IGl0ZW1zLlxuICAgICAgICBjb25zdCBtYXRjaCA9IGxpbmUubWF0Y2goTElTVF9JVEVNX1JFR0VYKTtcbiAgICAgICAgbGV0IHN5bWJvbCA9IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHRleHQgPSB1bmRlZmluZWQ7XG4gICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgICAgc3ltYm9sID0gbWF0Y2hbMV07XG4gICAgICAgICAgICB0ZXh0ID0gbWF0Y2hbM107XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpdGVtID0gbmV3IExpc3RJdGVtRGF0YShcbiAgICAgICAgICAgIGxpc3QucG9zaXRpb24uc3RhcnQubGluZSxcbiAgICAgICAgICAgIGxpc3QucG9zaXRpb24uZW5kLmxpbmUgKyAxLFxuICAgICAgICAgICAgbGlzdC5wYXJlbnQsXG4gICAgICAgICAgICBzeW1ib2wsXG4gICAgICAgICAgICBsaXN0LmlkLFxuICAgICAgICAgICAgbGlzdC50YXNrLFxuICAgICAgICAgICAgdGV4dFxuICAgICAgICApO1xuICAgICAgICBsaXN0SXRlbXMuc2V0KGl0ZW0uc3RhcnQsIGl0ZW0pO1xuICAgIH1cblxuICAgIC8vIEluIHRoZSBzZWNvbmQgbGlzdCBwYXNzLCBhY3R1YWxseSBjb25zdHJ1Y3QgdGhlIGxpc3QgaGVpcmFyY2h5LlxuICAgIGZvciAoY29uc3QgaXRlbSBvZiBsaXN0SXRlbXMudmFsdWVzKCkpIHtcbiAgICAgICAgaWYgKGl0ZW0ucGFyZW50TGluZSA8IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGxpc3RCbG9jayA9IGJsb2Nrcy5nZXQoLWl0ZW0ucGFyZW50TGluZSk7XG4gICAgICAgICAgICBpZiAoIWxpc3RCbG9jayB8fCAhKGxpc3RCbG9jay50eXBlID09PSBcImxpc3RcIikpIGNvbnRpbnVlO1xuXG4gICAgICAgICAgICAobGlzdEJsb2NrIGFzIExpc3RCbG9ja0RhdGEpLml0ZW1zLnB1c2goaXRlbSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsaXN0SXRlbXMuZ2V0KGl0ZW0ucGFyZW50TGluZSk/LmVsZW1lbnRzLnB1c2goaXRlbSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLy8vLy8vLy8vXG4gICAgLy8gVGFncyAvL1xuICAgIC8vLy8vLy8vLy9cblxuICAgIC8vIEZvciBlYWNoIHRhZywgYXNzaWduIGl0IHRvIHRoZSBhcHByb3ByaWF0ZSBzZWN0aW9uIGFuZCBibG9jayB0aGF0IGl0IGlzIGEgcGFydCBvZi5cbiAgICBmb3IgKGNvbnN0IHRhZ2RlZiBvZiBtZXRhZGF0YT8udGFncyA/PyBbXSkge1xuICAgICAgICBjb25zdCB0YWcgPSB0YWdkZWYudGFnLnN0YXJ0c1dpdGgoXCIjXCIpID8gdGFnZGVmLnRhZyA6IFwiI1wiICsgdGFnZGVmLnRhZztcbiAgICAgICAgY29uc3QgbGluZSA9IHRhZ2RlZi5wb3NpdGlvbi5zdGFydC5saW5lO1xuICAgICAgICBtYXJrZG93bk1ldGFkYXRhLnRhZyh0YWcpO1xuXG4gICAgICAgIGxvb2t1cChsaW5lLCBzZWN0aW9ucyk/Lm1ldGFkYXRhLnRhZyh0YWcpO1xuICAgICAgICBsb29rdXAobGluZSwgYmxvY2tzKT8ubWV0YWRhdGEudGFnKHRhZyk7XG4gICAgICAgIGxvb2t1cChsaW5lLCBsaXN0SXRlbXMpPy5tZXRhZGF0YS50YWcodGFnKTtcbiAgICB9XG5cbiAgICAvLyBBZGQgZnJvbnRtYXR0ZXIgdGFncy5cbiAgICBpZiAobWV0YWRhdGE/LmZyb250bWF0dGVyKSB7XG4gICAgICAgIGZvciAoY29uc3QgcmF3dGFnIG9mIGV4dHJhY3RUYWdzKG1ldGFkYXRhLmZyb250bWF0dGVyKSkge1xuICAgICAgICAgICAgY29uc3QgdGFnID0gcmF3dGFnLnN0YXJ0c1dpdGgoXCIjXCIpID8gcmF3dGFnIDogXCIjXCIgKyByYXd0YWc7XG4gICAgICAgICAgICBtYXJrZG93bk1ldGFkYXRhLnRhZyh0YWcpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8vLy8vLy8vLy9cbiAgICAvLyBMaW5rcyAvL1xuICAgIC8vLy8vLy8vLy8vXG5cbiAgICBmb3IgKGxldCBsaW5rZGVmIG9mIG1ldGFkYXRhPy5saW5rcyA/PyBbXSkge1xuICAgICAgICBjb25zdCBsaW5rID0gTGluay5pbmZlcihsaW5rZGVmLmxpbmspO1xuICAgICAgICBjb25zdCBsaW5lID0gbGlua2RlZi5wb3NpdGlvbi5zdGFydC5saW5lO1xuICAgICAgICBtYXJrZG93bk1ldGFkYXRhLmxpbmsobGluayk7XG5cbiAgICAgICAgbG9va3VwKGxpbmUsIHNlY3Rpb25zKT8ubWV0YWRhdGEubGluayhsaW5rKTtcbiAgICAgICAgbG9va3VwKGxpbmUsIGJsb2Nrcyk/Lm1ldGFkYXRhLmxpbmsobGluayk7XG4gICAgICAgIGxvb2t1cChsaW5lLCBsaXN0SXRlbXMpPy5tZXRhZGF0YS5saW5rKGxpbmspO1xuICAgIH1cblxuICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gRnJvbnRtYXR0ZXIgTGlua3MgLy9cbiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gICAgLy8gRnJvbnRtYXR0ZXIgbGlua3MgYXJlIG9ubHkgYXNzaWduZWQgdG8gdGhlIHBhZ2UuXG4gICAgZm9yIChjb25zdCBsaW5rZGVmIG9mIG1ldGFkYXRhPy5mcm9udG1hdHRlckxpbmtzID8/IFtdKSB7XG4gICAgICAgIG1hcmtkb3duTWV0YWRhdGEubGluayhMaW5rLmluZmVyKGxpbmtkZWYubGluaywgZmFsc2UsIGxpbmtkZWYuZGlzcGxheVRleHQpKTtcbiAgICB9XG5cbiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gSW5saW5lIEZpZWxkcyAvL1xuICAgIC8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAgIGZvciAoY29uc3QgZmllbGQgb2YgaXRlcmF0ZUlubGluZUZpZWxkcyhsaW5lcykpIHtcbiAgICAgICAgY29uc3QgbGluZSA9IGZpZWxkLnBvc2l0aW9uLmxpbmU7XG4gICAgICAgIG1hcmtkb3duTWV0YWRhdGEuaW5saW5lRmllbGQoZmllbGQpO1xuXG4gICAgICAgIGxvb2t1cChsaW5lLCBzZWN0aW9ucyk/Lm1ldGFkYXRhLmlubGluZUZpZWxkKGZpZWxkKTtcbiAgICAgICAgbG9va3VwKGxpbmUsIGJsb2Nrcyk/Lm1ldGFkYXRhLmlubGluZUZpZWxkKGZpZWxkKTtcbiAgICAgICAgbG9va3VwKGxpbmUsIGxpc3RJdGVtcyk/Lm1ldGFkYXRhLmlubGluZUZpZWxkKGZpZWxkKTtcbiAgICB9XG4gICAgc2VjdGlvbkFycmF5LnB1c2goLi4uc2VjdGlvbnMudmFsdWVzKCkpO1xuICAgIHJldHVybiB7XG4gICAgICAgIGxpbmVzLFxuICAgICAgICBmcm9udG1hdHRlcixcbiAgICAgICAgbWV0YWRhdGE6IG1hcmtkb3duTWV0YWRhdGEsXG4gICAgICAgIHNlY3Rpb25zOiBzZWN0aW9uQXJyYXksXG4gICAgfTtcbn1cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUGFyc2luZyBBaWRzIC8vXG4vLy8vLy8vLy8vLy8vLy8vLy9cblxuLyoqIENoZWNrIGlmIHRoZSBnaXZlbiBsaW5lIHJhbmdlIGlzIGFsbCBlbXB0eS4gU3RhcnQgaXMgaW5jbHVzaXZlLCBlbmQgZXhjbHVzaXZlLiAqL1xuZnVuY3Rpb24gZW1wdHlsaW5lcyhsaW5lczogc3RyaW5nW10sIHN0YXJ0OiBudW1iZXIsIGVuZDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgZm9yIChsZXQgaW5kZXggPSBzdGFydDsgaW5kZXggPCBlbmQ7IGluZGV4KyspIHtcbiAgICAgICAgaWYgKGxpbmVzW2luZGV4XS50cmltKCkgIT09IFwiXCIpIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbn1cblxuLyoqXG4gKiBZaWVsZHMgYWxsIGlubGluZSBmaWVsZHMgZm91bmQgaW4gdGhlIGRvY3VtZW50IGJ5IHRyYXZlcnNpbmcgbGluZSBieSBsaW5lIHRocm91Z2ggdGhlIGRvY3VtZW50LiBQZXJmb3JtcyBzb21lIG9wdGltaXphdGlvbnNcbiAqIHRvIHNraXAgZXh0cmEtbGFyZ2UgbGluZXMsIGFuZCBjYW4gYmUgZGlzYWJsZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiogaXRlcmF0ZUlubGluZUZpZWxkcyhjb250ZW50OiBzdHJpbmdbXSk6IEdlbmVyYXRvcjxJbmxpbmVGaWVsZD4ge1xuICAgIGZvciAobGV0IGxpbmVubyA9IDA7IGxpbmVubyA8IGNvbnRlbnQubGVuZ3RoOyBsaW5lbm8rKykge1xuICAgICAgICBjb25zdCBsaW5lID0gY29udGVudFtsaW5lbm9dO1xuXG4gICAgICAgIC8vIEZhc3QtYmFpbG91dCBmb3IgbGluZXMgdGhhdCBhcmUgdG9vIGxvbmcgb3IgZG8gbm90IGNvbnRhaW4gJzo6Jy5cbiAgICAgICAgaWYgKGxpbmUubGVuZ3RoID4gMzI3NjggfHwgIWxpbmUuaW5jbHVkZXMoXCI6OlwiKSkgY29udGludWU7XG5cbiAgICAgICAgLy8gVE9ETzogUmUtYWRkIHN1cHBvcnQgZm9yIHRob3NlIGN1c3RvbSBlbW9qaSBmaWVsZHMgb24gdGFza3MgYW5kIHNpbWlsYXIuXG4gICAgICAgIGxldCBpbmxpbmVGaWVsZHMgPSBleHRyYWN0SW5saW5lRmllbGRzKGxpbmUpO1xuICAgICAgICBpZiAoaW5saW5lRmllbGRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGZvciAobGV0IGlmaWVsZCBvZiBpbmxpbmVGaWVsZHMpIHlpZWxkIGFzSW5saW5lRmllbGQoaWZpZWxkLCBsaW5lbm8pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGV0IGZ1bGxMaW5lID0gZXh0cmFjdEZ1bGxMaW5lRmllbGQobGluZSk7XG4gICAgICAgICAgICBpZiAoZnVsbExpbmUpIHlpZWxkIGFzSW5saW5lRmllbGQoZnVsbExpbmUsIGxpbmVubyk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qKiBUb3AtbGV2ZWwgZnVuY3Rpb24gd2hpY2ggbWFwcyBhIFlBTUwgYmxvY2sgLSBpbmNsdWRpbmcgZnJvbnRtYXR0ZXIgLSBpbnRvIGZyb250bWF0dGVyIGVudHJpZXMuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VGcm9udG1hdHRlckJsb2NrKGJsb2NrOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogUmVjb3JkPHN0cmluZywgSnNvbkZyb250bWF0dGVyRW50cnk+IHtcbiAgICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIEpzb25Gcm9udG1hdHRlckVudHJ5PiA9IHt9O1xuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKGJsb2NrKSkge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGJsb2NrW2tleV07XG5cbiAgICAgICAgcmVzdWx0W2tleS50b0xvd2VyQ2FzZSgpXSA9IHtcbiAgICAgICAgICAgIGtleToga2V5LFxuICAgICAgICAgICAgdmFsdWU6IEpzb25Db252ZXJzaW9uLmpzb24oWWFtbENvbnZlcnNpb24ubGl0ZXJhbCh2YWx1ZSkpLFxuICAgICAgICAgICAgcmF3OiB2YWx1ZSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKiogRmluZHMgYW4gZWxlbWVudCB3aGljaCBjb250YWlucyB0aGUgZ2l2ZW4gbGluZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsb29rdXA8VCBleHRlbmRzIHsgc3RhcnQ6IG51bWJlcjsgZW5kOiBudW1iZXIgfT4obGluZTogbnVtYmVyLCB0cmVlOiBCVHJlZTxudW1iZXIsIFQ+KTogVCB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgdGFyZ2V0ID0gdHJlZS5nZXRQYWlyT3JOZXh0TG93ZXIobGluZSk/LlsxXTtcbiAgICBpZiAodGFyZ2V0ICYmIHRhcmdldC5lbmQgPj0gbGluZSkgcmV0dXJuIHRhcmdldDtcblxuICAgIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbi8qKiBFeHRyYWN0IHRhZ3MgaW50ZWxsaWdlbnRseSBmcm9tIGZyb250bWF0dGVyLiBIYW5kbGVzIGFycmF5cywgbnVtYmVycywgYW5kIHN0cmluZ3MuICovXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdFRhZ3MobWV0YWRhdGE6IEZyb250TWF0dGVyQ2FjaGUpOiBzdHJpbmdbXSB7XG4gICAgbGV0IHRhZ0tleXMgPSBPYmplY3Qua2V5cyhtZXRhZGF0YSkuZmlsdGVyKCh0KSA9PiB0LnRvTG93ZXJDYXNlKCkgPT0gXCJ0YWdzXCIgfHwgdC50b0xvd2VyQ2FzZSgpID09IFwidGFnXCIpO1xuXG4gICAgcmV0dXJuIHRhZ0tleXNcbiAgICAgICAgLm1hcCgoaykgPT4gc3BsaXRGcm9udG1hdHRlclRhZ09yQWxpYXMobWV0YWRhdGFba10sIC9bLFxcc10rLykpXG4gICAgICAgIC5yZWR1Y2UoKHAsIGMpID0+IHAuY29uY2F0KGMpLCBbXSlcbiAgICAgICAgLm1hcCgoc3RyKSA9PiAoc3RyLnN0YXJ0c1dpdGgoXCIjXCIpID8gc3RyIDogXCIjXCIgKyBzdHIpKTtcbn1cblxuLyoqIFNwbGl0IGEgZnJvbnRtYXR0ZXIgbGlzdCBpbnRvIHNlcGFyYXRlIGVsZW1lbnRzOyBoYW5kbGVzIGFjdHVhbCBsaXN0cywgY29tbWEgc2VwYXJhdGVkIGxpc3RzLCBhbmQgc2luZ2xlIGVsZW1lbnRzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNwbGl0RnJvbnRtYXR0ZXJUYWdPckFsaWFzKGRhdGE6IGFueSwgb246IFJlZ0V4cCk6IHN0cmluZ1tdIHtcbiAgICBpZiAoZGF0YSA9PSBudWxsIHx8IGRhdGEgPT0gdW5kZWZpbmVkKSByZXR1cm4gW107XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YSkpIHtcbiAgICAgICAgcmV0dXJuIGRhdGFcbiAgICAgICAgICAgIC5maWx0ZXIoKHMpID0+ICEhcylcbiAgICAgICAgICAgIC5tYXAoKHMpID0+IHNwbGl0RnJvbnRtYXR0ZXJUYWdPckFsaWFzKHMsIG9uKSlcbiAgICAgICAgICAgIC5yZWR1Y2UoKHAsIGMpID0+IHAuY29uY2F0KGMpLCBbXSk7XG4gICAgfVxuXG4gICAgLy8gRm9yY2UgdG8gYSBzdHJpbmcgdG8gaGFuZGxlIG51bWJlcnMgYW5kIHNvIG9uLlxuICAgIHJldHVybiAoXCJcIiArIGRhdGEpXG4gICAgICAgIC5zcGxpdChvbilcbiAgICAgICAgLmZpbHRlcigodCkgPT4gISF0KVxuICAgICAgICAubWFwKCh0KSA9PiB0LnRyaW0oKSlcbiAgICAgICAgLmZpbHRlcigodCkgPT4gdC5sZW5ndGggPiAwKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEJ1aWxkZXIgVXRpbGl0aWVzIC8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4vKiogQ29udmllbmVudCBzaGFyZWQgdXRpbGl0eSBmb3IgdHJhY2tpbmcgbWV0YWRhdGEgLSBsaW5rcywgdGFncywgYW5kIHNvIG9uLiAqL1xuZXhwb3J0IGNsYXNzIE1ldGFkYXRhIHtcbiAgICBwdWJsaWMgdGFnczogU2V0PHN0cmluZz4gPSBuZXcgU2V0KCk7XG4gICAgcHVibGljIGxpbmtzOiBMaW5rW10gPSBbXTtcbiAgICBwdWJsaWMgaW5saW5lRmllbGRzOiBSZWNvcmQ8c3RyaW5nLCBJbmxpbmVGaWVsZD4gPSB7fTtcblxuICAgIC8qKiBBZGQgYSB0YWcgdG8gdGhlIG1ldGFkYXRhLiAqL1xuICAgIHB1YmxpYyB0YWcodGFnOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy50YWdzLmFkZCh0YWcpO1xuICAgIH1cblxuICAgIC8qKiBBZGQgYSBsaW5rIHRvIHRoZSBtZXRhZGF0YS4gKi9cbiAgICBwdWJsaWMgbGluayhsaW5rOiBMaW5rKSB7XG4gICAgICAgIGlmICh0aGlzLmxpbmtzLmZpbmQoKHYpID0+IHYuZXF1YWxzKGxpbmspKSkgcmV0dXJuO1xuICAgICAgICB0aGlzLmxpbmtzLnB1c2gobGluayk7XG4gICAgfVxuXG4gICAgLyoqIEFkZCBhbiBpbmxpbmUgZmllbGQgdG8gdGhlIG1ldGFkYXRhLiAqL1xuICAgIHB1YmxpYyBpbmxpbmVGaWVsZChmaWVsZDogSW5saW5lRmllbGQpIHtcbiAgICAgICAgY29uc3QgbG93ZXIgPSBmaWVsZC5rZXkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKHRoaXMuaW5saW5lRmllbGRzKS5zb21lKChrZXkpID0+IGtleS50b0xvd2VyQ2FzZSgpID09IGxvd2VyKSkgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMuaW5saW5lRmllbGRzW2xvd2VyXSA9IGZpZWxkO1xuICAgIH1cblxuICAgIC8qKiBSZXR1cm4gYSBsaXN0IG9mIHVuaXF1ZSBhZGRlZCB0YWdzLiAqL1xuICAgIHB1YmxpYyBmaW5pc2hUYWdzKCk6IHN0cmluZ1tdIHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy50YWdzKTtcbiAgICB9XG5cbiAgICAvKiogUmV0dXJuIGEgbGlzdCBvZiBKU09OLXNlcmlhbGl6ZWQgbGlua3MuICovXG4gICAgcHVibGljIGZpbmlzaExpbmtzKCk6IEpzb25MaW5rW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5saW5rcy5tYXAoKGxpbmspID0+IGxpbmsudG9PYmplY3QoKSk7XG4gICAgfVxuXG4gICAgLyoqIFJldHVybiBhIGxpc3Qgb2YgSlNPTi1zZXJpYWxpemVkIGlubGluZSBmaWVsZHMuICovXG4gICAgcHVibGljIGZpbmlzaElubGluZUZpZWxkcygpOiBSZWNvcmQ8c3RyaW5nLCBKc29uSW5saW5lRmllbGQ+IHtcbiAgICAgICAgcmV0dXJuIG1hcE9iamVjdFZhbHVlcyh0aGlzLmlubGluZUZpZWxkcywganNvbklubGluZUZpZWxkKTtcbiAgICB9XG59XG5cbi8qKiBDb252aWVuZW50IHV0aWxpdHkgZm9yIGNvbnN0cnVjdGluZyBwYWdlIG9iamVjdHMuICovXG5leHBvcnQgY2xhc3MgUGFnZURhdGEge1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIHBhdGg6IHN0cmluZyxcbiAgICAgICAgcHVibGljIHN0YXRzOiBGaWxlU3RhdHMsXG4gICAgICAgIHB1YmxpYyBsZW5ndGg6IG51bWJlcixcbiAgICAgICAgcHVibGljIG1ldGFkYXRhOiBNZXRhZGF0YSxcbiAgICAgICAgcHVibGljIHNlY3Rpb25zOiBTZWN0aW9uRGF0YVtdLFxuICAgICAgICBwdWJsaWMgZnJvbnRtYXR0ZXI/OiBSZWNvcmQ8c3RyaW5nLCBKc29uRnJvbnRtYXR0ZXJFbnRyeT5cbiAgICApIHt9XG5cbiAgICBwdWJsaWMgYnVpbGQoKTogSnNvbk1hcmtkb3duUGFnZSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAkcGF0aDogdGhpcy5wYXRoLFxuICAgICAgICAgICAgJGN0aW1lOiB0aGlzLnN0YXRzLmN0aW1lLFxuICAgICAgICAgICAgJG10aW1lOiB0aGlzLnN0YXRzLm10aW1lLFxuICAgICAgICAgICAgJHNpemU6IHRoaXMuc3RhdHMuc2l6ZSxcbiAgICAgICAgICAgICRleHRlbnNpb246IGdldEV4dGVuc2lvbih0aGlzLnBhdGgpLFxuICAgICAgICAgICAgJHBvc2l0aW9uOiB7IHN0YXJ0OiAwLCBlbmQ6IHRoaXMubGVuZ3RoIH0sXG4gICAgICAgICAgICAkdGFnczogdGhpcy5tZXRhZGF0YS5maW5pc2hUYWdzKCksXG4gICAgICAgICAgICAkbGlua3M6IHRoaXMubWV0YWRhdGEuZmluaXNoTGlua3MoKSxcbiAgICAgICAgICAgICRpbmZpZWxkczogdGhpcy5tZXRhZGF0YS5maW5pc2hJbmxpbmVGaWVsZHMoKSxcbiAgICAgICAgICAgICRzZWN0aW9uczogdGhpcy5zZWN0aW9ucy5tYXAoKHgpID0+IHguYnVpbGQoKSksXG4gICAgICAgICAgICAkZnJvbnRtYXR0ZXI6IHRoaXMuZnJvbnRtYXR0ZXIsXG4gICAgICAgIH07XG4gICAgfVxufVxuXG4vKiogQ29udmllbmVudCB1dGlsaXR5IGZvciBjb25zdHJ1Y3RpbmcgbWFya2Rvd24gc2VjdGlvbnMuICovXG5leHBvcnQgY2xhc3MgU2VjdGlvbkRhdGEge1xuICAgIHB1YmxpYyBibG9ja3M6IEJsb2NrRGF0YVtdID0gW107XG4gICAgcHVibGljIG1ldGFkYXRhOiBNZXRhZGF0YSA9IG5ldyBNZXRhZGF0YSgpO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgc3RhcnQ6IG51bWJlcixcbiAgICAgICAgcHVibGljIGVuZDogbnVtYmVyLFxuICAgICAgICBwdWJsaWMgdGl0bGU6IHN0cmluZyxcbiAgICAgICAgcHVibGljIGxldmVsOiBudW1iZXIsXG4gICAgICAgIHB1YmxpYyBvcmRpbmFsOiBudW1iZXJcbiAgICApIHt9XG5cbiAgICBwdWJsaWMgYmxvY2soYmxvY2s6IEJsb2NrRGF0YSkge1xuICAgICAgICB0aGlzLmJsb2Nrcy5wdXNoKGJsb2NrKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYnVpbGQoKTogSnNvbk1hcmtkb3duU2VjdGlvbiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAkdGl0bGU6IHRoaXMudGl0bGUsXG4gICAgICAgICAgICAkb3JkaW5hbDogdGhpcy5vcmRpbmFsLFxuICAgICAgICAgICAgJGxldmVsOiB0aGlzLmxldmVsLFxuICAgICAgICAgICAgJHRhZ3M6IHRoaXMubWV0YWRhdGEuZmluaXNoVGFncygpLFxuICAgICAgICAgICAgJGluZmllbGRzOiB0aGlzLm1ldGFkYXRhLmZpbmlzaElubGluZUZpZWxkcygpLFxuICAgICAgICAgICAgJGxpbmtzOiB0aGlzLm1ldGFkYXRhLmZpbmlzaExpbmtzKCksXG4gICAgICAgICAgICAkcG9zaXRpb246IHsgc3RhcnQ6IHRoaXMuc3RhcnQsIGVuZDogdGhpcy5lbmQgfSxcbiAgICAgICAgICAgICRibG9ja3M6IHRoaXMuYmxvY2tzLm1hcCgoYmxvY2spID0+IGJsb2NrLmJ1aWxkKCkpLFxuICAgICAgICB9O1xuICAgIH1cbn1cblxuLyoqIENvbnN0cnVjdHMgbWFya2Rvd24gbGlzdCBibG9ja3Mgc3BlY2lmaWNhbGx5LiAqL1xuZXhwb3J0IGNsYXNzIExpc3RCbG9ja0RhdGEge1xuICAgIHB1YmxpYyB0eXBlOiBzdHJpbmcgPSBcImxpc3RcIjtcbiAgICBwdWJsaWMgbWV0YWRhdGE6IE1ldGFkYXRhID0gbmV3IE1ldGFkYXRhKCk7XG4gICAgcHVibGljIGl0ZW1zOiBMaXN0SXRlbURhdGFbXSA9IFtdO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHB1YmxpYyBzdGFydDogbnVtYmVyLCBwdWJsaWMgZW5kOiBudW1iZXIsIHB1YmxpYyBvcmRpbmFsOiBudW1iZXIsIHB1YmxpYyBibG9ja0lkPzogc3RyaW5nKSB7fVxuXG4gICAgcHVibGljIGJ1aWxkKCk6IEpzb25NYXJrZG93bkxpc3RCbG9jayB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAkb3JkaW5hbDogdGhpcy5vcmRpbmFsLFxuICAgICAgICAgICAgJHBvc2l0aW9uOiB7IHN0YXJ0OiB0aGlzLnN0YXJ0LCBlbmQ6IHRoaXMuZW5kIH0sXG4gICAgICAgICAgICAkaW5maWVsZHM6IHRoaXMubWV0YWRhdGEuZmluaXNoSW5saW5lRmllbGRzKCksXG4gICAgICAgICAgICAkdGFnczogdGhpcy5tZXRhZGF0YS5maW5pc2hUYWdzKCksXG4gICAgICAgICAgICAkbGlua3M6IHRoaXMubWV0YWRhdGEuZmluaXNoTGlua3MoKSxcbiAgICAgICAgICAgICR0eXBlOiBcImxpc3RcIixcbiAgICAgICAgICAgICRibG9ja0lkOiB0aGlzLmJsb2NrSWQsXG4gICAgICAgICAgICAkZWxlbWVudHM6IHRoaXMuaXRlbXMubWFwKChpdGVtKSA9PiBpdGVtLmJ1aWxkKCkpLFxuICAgICAgICB9O1xuICAgIH1cbn1cblxuLyoqIENvbnN0cnVjdHMgbWFya2Rvd24gY29kZWJsb2NrcyBzcGVjaWZpY2FsbHkuICovXG5leHBvcnQgY2xhc3MgQ29kZWJsb2NrRGF0YSB7XG4gICAgcHVibGljIHR5cGU6IHN0cmluZyA9IFwiY29kZWJsb2NrXCI7XG4gICAgcHVibGljIG1ldGFkYXRhOiBNZXRhZGF0YSA9IG5ldyBNZXRhZGF0YSgpO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgc3RhcnQ6IG51bWJlcixcbiAgICAgICAgcHVibGljIGVuZDogbnVtYmVyLFxuICAgICAgICBwdWJsaWMgb3JkaW5hbDogbnVtYmVyLFxuICAgICAgICBwdWJsaWMgbGFuZ3VhZ2VzOiBzdHJpbmdbXSxcbiAgICAgICAgcHVibGljIHN0eWxlOiBcImluZGVudFwiIHwgXCJmZW5jZWRcIixcbiAgICAgICAgcHVibGljIGNvbnRlbnRTdGFydDogbnVtYmVyLFxuICAgICAgICBwdWJsaWMgY29udGVudEVuZDogbnVtYmVyLFxuICAgICAgICBwdWJsaWMgYmxvY2tJZD86IHN0cmluZ1xuICAgICkge31cblxuICAgIHB1YmxpYyBidWlsZCgpOiBKc29uTWFya2Rvd25Db2RlYmxvY2sge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgJHR5cGU6IFwiY29kZWJsb2NrXCIsXG4gICAgICAgICAgICAkb3JkaW5hbDogdGhpcy5vcmRpbmFsLFxuICAgICAgICAgICAgJHBvc2l0aW9uOiB7IHN0YXJ0OiB0aGlzLnN0YXJ0LCBlbmQ6IHRoaXMuZW5kIH0sXG4gICAgICAgICAgICAkaW5maWVsZHM6IHRoaXMubWV0YWRhdGEuZmluaXNoSW5saW5lRmllbGRzKCksXG4gICAgICAgICAgICAkdGFnczogdGhpcy5tZXRhZGF0YS5maW5pc2hUYWdzKCksXG4gICAgICAgICAgICAkbGlua3M6IHRoaXMubWV0YWRhdGEuZmluaXNoTGlua3MoKSxcbiAgICAgICAgICAgICRibG9ja0lkOiB0aGlzLmJsb2NrSWQsXG4gICAgICAgICAgICAkbGFuZ3VhZ2VzOiB0aGlzLmxhbmd1YWdlcyxcbiAgICAgICAgICAgICRzdHlsZTogdGhpcy5zdHlsZSxcbiAgICAgICAgICAgICRjb250ZW50UG9zaXRpb246IHsgc3RhcnQ6IHRoaXMuY29udGVudFN0YXJ0LCBlbmQ6IHRoaXMuY29udGVudEVuZCB9LFxuICAgICAgICB9O1xuICAgIH1cbn1cblxuLyoqIENvbnN0cnVjdHMgbWFya2Rvd24gZGF0YWJsb2NrcyBzcGVjaWZpY2FsbHkuICovXG5leHBvcnQgY2xhc3MgRGF0YWJsb2NrRGF0YSB7XG4gICAgcHVibGljIHR5cGU6IHN0cmluZyA9IFwiZGF0YWJsb2NrXCI7XG4gICAgcHVibGljIG1ldGFkYXRhOiBNZXRhZGF0YSA9IG5ldyBNZXRhZGF0YSgpO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgc3RhcnQ6IG51bWJlcixcbiAgICAgICAgcHVibGljIGVuZDogbnVtYmVyLFxuICAgICAgICBwdWJsaWMgb3JkaW5hbDogbnVtYmVyLFxuICAgICAgICBwdWJsaWMgZGF0YTogUmVjb3JkPHN0cmluZywgSnNvbkZyb250bWF0dGVyRW50cnk+LFxuICAgICAgICBwdWJsaWMgYmxvY2tJZD86IHN0cmluZ1xuICAgICkge31cblxuICAgIHB1YmxpYyBidWlsZCgpOiBKc29uTWFya2Rvd25EYXRhYmxvY2sge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgJHR5cGU6IFwiZGF0YWJsb2NrXCIsXG4gICAgICAgICAgICAkb3JkaW5hbDogdGhpcy5vcmRpbmFsLFxuICAgICAgICAgICAgJHBvc2l0aW9uOiB7IHN0YXJ0OiB0aGlzLnN0YXJ0LCBlbmQ6IHRoaXMuZW5kIH0sXG4gICAgICAgICAgICAkaW5maWVsZHM6IHRoaXMubWV0YWRhdGEuZmluaXNoSW5saW5lRmllbGRzKCksXG4gICAgICAgICAgICAkdGFnczogdGhpcy5tZXRhZGF0YS5maW5pc2hUYWdzKCksXG4gICAgICAgICAgICAkbGlua3M6IHRoaXMubWV0YWRhdGEuZmluaXNoTGlua3MoKSxcbiAgICAgICAgICAgICRibG9ja0lkOiB0aGlzLmJsb2NrSWQsXG4gICAgICAgICAgICAkZGF0YTogdGhpcy5kYXRhLFxuICAgICAgICB9O1xuICAgIH1cbn1cblxuLyoqIEJhc2UgYmxvY2sgbWV0YWRhdGEgdXNlZCBmb3Igbm9uLXNwZWNpZmljIGJsb2Nrcy4gKi9cbmV4cG9ydCBjbGFzcyBCYXNlQmxvY2tEYXRhIHtcbiAgICBwdWJsaWMgbWV0YWRhdGE6IE1ldGFkYXRhID0gbmV3IE1ldGFkYXRhKCk7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBzdGFydDogbnVtYmVyLFxuICAgICAgICBwdWJsaWMgZW5kOiBudW1iZXIsXG4gICAgICAgIHB1YmxpYyBvcmRpbmFsOiBudW1iZXIsXG4gICAgICAgIHB1YmxpYyB0eXBlOiBzdHJpbmcsXG4gICAgICAgIHB1YmxpYyBibG9ja0lkPzogc3RyaW5nXG4gICAgKSB7fVxuXG4gICAgcHVibGljIGJ1aWxkKCk6IEpzb25NYXJrZG93bkJsb2NrIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICR0eXBlOiB0aGlzLnR5cGUsXG4gICAgICAgICAgICAkb3JkaW5hbDogdGhpcy5vcmRpbmFsLFxuICAgICAgICAgICAgJHBvc2l0aW9uOiB7IHN0YXJ0OiB0aGlzLnN0YXJ0LCBlbmQ6IHRoaXMuZW5kIH0sXG4gICAgICAgICAgICAkaW5maWVsZHM6IHRoaXMubWV0YWRhdGEuZmluaXNoSW5saW5lRmllbGRzKCksXG4gICAgICAgICAgICAkdGFnczogdGhpcy5tZXRhZGF0YS5maW5pc2hUYWdzKCksXG4gICAgICAgICAgICAkbGlua3M6IHRoaXMubWV0YWRhdGEuZmluaXNoTGlua3MoKSxcbiAgICAgICAgICAgICRibG9ja0lkOiB0aGlzLmJsb2NrSWQsXG4gICAgICAgIH07XG4gICAgfVxufVxuXG5leHBvcnQgdHlwZSBCbG9ja0RhdGEgPSBMaXN0QmxvY2tEYXRhIHwgQ29kZWJsb2NrRGF0YSB8IERhdGFibG9ja0RhdGEgfCBCYXNlQmxvY2tEYXRhO1xuXG4vKiogVXRpbGl0eSBmb3IgY29uc3RydWN0aW5nIG1hcmtkb3duIGxpc3QgaXRlbXMuICovXG5leHBvcnQgY2xhc3MgTGlzdEl0ZW1EYXRhIHtcbiAgICBwdWJsaWMgbWV0YWRhdGE6IE1ldGFkYXRhID0gbmV3IE1ldGFkYXRhKCk7XG4gICAgcHVibGljIGVsZW1lbnRzOiBMaXN0SXRlbURhdGFbXSA9IFtdO1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIHN0YXJ0OiBudW1iZXIsXG4gICAgICAgIHB1YmxpYyBlbmQ6IG51bWJlcixcbiAgICAgICAgcHVibGljIHBhcmVudExpbmU6IG51bWJlcixcbiAgICAgICAgcHVibGljIHN5bWJvbD86IHN0cmluZyxcbiAgICAgICAgcHVibGljIGJsb2NrSWQ/OiBzdHJpbmcsXG4gICAgICAgIHB1YmxpYyBzdGF0dXM/OiBzdHJpbmcsXG4gICAgICAgIHB1YmxpYyB0ZXh0Pzogc3RyaW5nXG4gICAgKSB7fVxuXG4gICAgcHVibGljIGJ1aWxkKCk6IEpzb25NYXJrZG93bkxpc3RJdGVtIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICRwYXJlbnRMaW5lOiB0aGlzLnBhcmVudExpbmUsXG4gICAgICAgICAgICAkcG9zaXRpb246IHsgc3RhcnQ6IHRoaXMuc3RhcnQsIGVuZDogdGhpcy5lbmQgfSxcbiAgICAgICAgICAgICRibG9ja0lkOiB0aGlzLmJsb2NrSWQsXG4gICAgICAgICAgICAkZWxlbWVudHM6IHRoaXMuZWxlbWVudHMubWFwKChlbGVtZW50KSA9PiBlbGVtZW50LmJ1aWxkKCkpLFxuICAgICAgICAgICAgJHR5cGU6IHRoaXMuc3RhdHVzID8gXCJ0YXNrXCIgOiBcImxpc3RcIixcbiAgICAgICAgICAgICRpbmZpZWxkczogdGhpcy5tZXRhZGF0YS5maW5pc2hJbmxpbmVGaWVsZHMoKSxcbiAgICAgICAgICAgICR0YWdzOiB0aGlzLm1ldGFkYXRhLmZpbmlzaFRhZ3MoKSxcbiAgICAgICAgICAgICRsaW5rczogdGhpcy5tZXRhZGF0YS5maW5pc2hMaW5rcygpLFxuICAgICAgICAgICAgJHN0YXR1czogdGhpcy5zdGF0dXMsXG4gICAgICAgICAgICAkc3ltYm9sOiB0aGlzLnN5bWJvbCxcbiAgICAgICAgICAgICR0ZXh0OiB0aGlzLnRleHQsXG4gICAgICAgIH0gYXMgSnNvbk1hcmtkb3duVGFza0l0ZW07XG4gICAgfVxufVxuIiwgImltcG9ydCB7IExpbmsgfSBmcm9tIFwiZXhwcmVzc2lvbi9saW5rXCI7XG5pbXBvcnQgeyBEYXRlVGltZSwgRHVyYXRpb24gfSBmcm9tIFwibHV4b25cIjtcbmltcG9ydCAqIGFzIFAgZnJvbSBcInBhcnNpbW1vblwiO1xuaW1wb3J0IHtcbiAgICBCaW5hcnlPcCxcbiAgICBFeHByZXNzaW9uLFxuICAgIEV4cHJlc3Npb25zLFxuICAgIExhbWJkYUV4cHJlc3Npb24sXG4gICAgTGlzdEV4cHJlc3Npb24sXG4gICAgTGl0ZXJhbEV4cHJlc3Npb24sXG4gICAgT2JqZWN0RXhwcmVzc2lvbixcbiAgICBWYXJpYWJsZUV4cHJlc3Npb24sXG59IGZyb20gXCIuL2V4cHJlc3Npb25cIjtcbmltcG9ydCBlbW9qaVJlZ2V4IGZyb20gXCJlbW9qaS1yZWdleFwiO1xuaW1wb3J0IHtcbiAgICBJbmRleENoaWxkT2YsXG4gICAgSW5kZXhQYXRoLFxuICAgIEluZGV4SWQsXG4gICAgSW5kZXhOb3QsXG4gICAgSW5kZXhQYXJlbnRPZixcbiAgICBJbmRleFF1ZXJ5LFxuICAgIEluZGV4VGFnZ2VkLFxuICAgIEluZGV4VHlwZWQsXG4gICAgSW5kZXhMaW5rZWQsXG4gICAgSW5kZXhGaWVsZCxcbiAgICBJbmRleEV4cHJlc3Npb24sXG59IGZyb20gXCJpbmRleC90eXBlcy9pbmRleC1xdWVyeVwiO1xuaW1wb3J0IHsgbm9ybWFsaXplRHVyYXRpb24gfSBmcm9tIFwidXRpbHMvbm9ybWFsaXplcnNcIjtcbmltcG9ydCB7IExpdGVyYWwgfSBmcm9tIFwiZXhwcmVzc2lvbi9saXRlcmFsXCI7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUGFyc2luZyBQcmltaXRpdmVzIC8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuLyoqIFByaW1pdGl2ZSBwYXJzaW5nIGZvciBjb21tb25seSBzZWVuIHR5cGVzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcmltaXRpdmVzTGFuZ3VhZ2Uge1xuICAgIG51bWJlcjogbnVtYmVyO1xuICAgIHN0cmluZzogc3RyaW5nO1xuICAgIGVzY2FwZUNoYXJhY3Rlcjogc3RyaW5nO1xuICAgIGJvb2w6IGJvb2xlYW47XG4gICAgdGFnOiBzdHJpbmc7XG4gICAgaWRlbnRpZmllcjogc3RyaW5nO1xuICAgIGxpbms6IExpbms7XG4gICAgZW1iZWRMaW5rOiBMaW5rO1xuICAgIHJvb3REYXRlOiBEYXRlVGltZTtcbiAgICBkYXRlU2hvcnRoYW5kOiBrZXlvZiB0eXBlb2YgREFURV9TSE9SVEhBTkRTO1xuICAgIGRhdGU6IERhdGVUaW1lO1xuICAgIGRhdGVQbHVzOiBEYXRlVGltZTtcbiAgICBkdXJhdGlvblR5cGU6IGtleW9mIHR5cGVvZiBEVVJBVElPTl9UWVBFUztcbiAgICBkdXJhdGlvbjogRHVyYXRpb247XG4gICAgcmF3TnVsbDogc3RyaW5nO1xuXG4gICAgYmluYXJ5UGx1c01pbnVzOiBCaW5hcnlPcDtcbiAgICBiaW5hcnlNdWxEaXY6IEJpbmFyeU9wO1xuICAgIGJpbmFyeUNvbXBhcmVPcDogQmluYXJ5T3A7XG4gICAgYmluYXJ5QW5kT3A6IEJpbmFyeU9wO1xuICAgIGJpbmFyeU9yT3A6IEJpbmFyeU9wO1xuXG4gICAgLy8gTGl0ZXJhbCBmaWVsZCBwYXJzaW5nIGZvciBpbmdlc3RpbmcgaW5saW5lIGZpZWxkcyBhbmQgZnJvbnRtYXR0ZXIuXG4gICAgYXRvbUlubGluZUZpZWxkOiBMaXRlcmFsO1xuICAgIGlubGluZUZpZWxkTGlzdDogTGl0ZXJhbFtdO1xuICAgIGlubGluZUZpZWxkOiBMaXRlcmFsO1xufVxuXG4vKiogSW1wbGVtZW50YXRpb25zIGZvciBtYW55IHByaW1pdGl2ZXMuICovXG5leHBvcnQgY29uc3QgUFJJTUlUSVZFUyA9IFAuY3JlYXRlTGFuZ3VhZ2U8UHJpbWl0aXZlc0xhbmd1YWdlPih7XG4gICAgbnVtYmVyOiAoXykgPT5cbiAgICAgICAgUC5yZWdleHAoLy0/WzAtOV0rKFxcLlswLTldKyk/LylcbiAgICAgICAgICAgIC5tYXAoKHN0cikgPT4gTnVtYmVyLnBhcnNlRmxvYXQoc3RyKSlcbiAgICAgICAgICAgIC5kZXNjKFwibnVtYmVyXCIpLFxuXG4gICAgLy8gQSBxdW90ZS1zdXJyb3VuZGVkIHN0cmluZyB3aGljaCBzdXBwb3J0cyBlc2NhcGUgY2hhcmFjdGVycyAoJ1xcJykuXG4gICAgc3RyaW5nOiAocSkgPT5cbiAgICAgICAgUC5zdHJpbmcoJ1wiJylcbiAgICAgICAgICAgIC50aGVuKFxuICAgICAgICAgICAgICAgIFAuYWx0KHEuZXNjYXBlQ2hhcmFjdGVyLCBQLm5vbmVPZignXCJcXFxcJykpXG4gICAgICAgICAgICAgICAgICAgIC5hdExlYXN0KDApXG4gICAgICAgICAgICAgICAgICAgIC5tYXAoKGNoYXJzKSA9PiBjaGFycy5qb2luKFwiXCIpKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnNraXAoUC5zdHJpbmcoJ1wiJykpXG4gICAgICAgICAgICAuZGVzYyhcInN0cmluZ1wiKSxcblxuICAgIGVzY2FwZUNoYXJhY3RlcjogKF8pID0+XG4gICAgICAgIFAuc3RyaW5nKFwiXFxcXFwiKVxuICAgICAgICAgICAgLnRoZW4oUC5hbnkpXG4gICAgICAgICAgICAubWFwKChlc2NhcGVkKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gSWYgd2UgYXJlIGVzY2FwaW5nIGEgYmFja3NsYXNoIG9yIGEgcXVvdGUsIHBhc3MgaW4gb24gaW4gZXNjYXBlZCBmb3JtXG4gICAgICAgICAgICAgICAgaWYgKGVzY2FwZWQgPT09ICdcIicpIHJldHVybiAnXCInO1xuICAgICAgICAgICAgICAgIGlmIChlc2NhcGVkID09PSBcIlxcXFxcIikgcmV0dXJuIFwiXFxcXFwiO1xuICAgICAgICAgICAgICAgIGVsc2UgcmV0dXJuIFwiXFxcXFwiICsgZXNjYXBlZDtcbiAgICAgICAgICAgIH0pLFxuXG4gICAgLy8gQSBib29sZWFuIHRydWUvZmFsc2UgdmFsdWUuXG4gICAgYm9vbDogKF8pID0+XG4gICAgICAgIFAucmVnZXhwKC90cnVlfGZhbHNlfFRydWV8RmFsc2UvKVxuICAgICAgICAgICAgLm1hcCgoc3RyKSA9PiBzdHIudG9Mb3dlckNhc2UoKSA9PSBcInRydWVcIilcbiAgICAgICAgICAgIC5kZXNjKFwiYm9vbGVhblwiKSxcblxuICAgIC8vIEEgdGFnIG9mIHRoZSBmb3JtICcjc3R1ZmYvaGVsbG8tdGhlcmUnLlxuICAgIHRhZzogKF8pID0+XG4gICAgICAgIFAuc2VxTWFwKFxuICAgICAgICAgICAgUC5zdHJpbmcoXCIjXCIpLFxuICAgICAgICAgICAgUC5hbHQoUC5yZWdleHAoL1teXFx1MjAwMC1cXHUyMDZGXFx1MkUwMC1cXHUyRTdGJyFcIiMkJSYoKSorLC46Ozw9Pj9AXmB7fH1+XFxbXFxdXFxcXFxcc10vKS5kZXNjKFwidGV4dFwiKSkubWFueSgpLFxuICAgICAgICAgICAgKHN0YXJ0LCByZXN0KSA9PiBzdGFydCArIHJlc3Quam9pbihcIlwiKVxuICAgICAgICApLmRlc2MoXCJ0YWdcIiksXG5cbiAgICAvLyBBIHZhcmlhYmxlIGlkZW50aWZpZXIsIHdoaWNoIGlzIGFscGhhbnVtZXJpYyBhbmQgbXVzdCBzdGFydCB3aXRoIGEgbGV0dGVyIG9yLi4uIGVtb2ppLlxuICAgIGlkZW50aWZpZXI6IChfKSA9PlxuICAgICAgICBQLnNlcU1hcChcbiAgICAgICAgICAgIFAuYWx0KFAucmVnZXhwKC9bXFxwe0xldHRlcn0kXS91KSwgUC5yZWdleHAoRU1PSklfUkVHRVgpLmRlc2MoXCJ0ZXh0XCIpKSxcbiAgICAgICAgICAgIFAuYWx0KFAucmVnZXhwKC9bMC05XFxwe0xldHRlcn0kXy1dL3UpLCBQLnJlZ2V4cChFTU9KSV9SRUdFWCkuZGVzYyhcInRleHRcIikpLm1hbnkoKSxcbiAgICAgICAgICAgIChmaXJzdCwgcmVzdCkgPT4gZmlyc3QgKyByZXN0LmpvaW4oXCJcIilcbiAgICAgICAgKS5kZXNjKFwidmFyaWFibGVcIiksXG5cbiAgICAvLyBBbiBPYnNpZGlhbiBsaW5rIG9mIHRoZSBmb3JtIFtbPGxpbms+XV0uXG4gICAgbGluazogKF8pID0+XG4gICAgICAgIFAucmVnZXhwKC9cXFtcXFsoW15cXFtcXF1dKj8pXFxdXFxdL3UsIDEpXG4gICAgICAgICAgICAubWFwKChsaW5rSW5uZXIpID0+IExpbmsucGFyc2VJbm5lcihsaW5rSW5uZXIpKVxuICAgICAgICAgICAgLmRlc2MoXCJmaWxlIGxpbmtcIiksXG5cbiAgICAvLyBBbiBlbWJlZGRhYmxlIGxpbmsgd2hpY2ggY2FuIHN0YXJ0IHdpdGggJyEnLiBUaGlzIG92ZXJsYXBzIHdpdGggdGhlIG5vcm1hbCBuZWdhdGlvbiBvcGVyYXRvciwgc28gaXQgaXMgb25seVxuICAgIC8vIHByb3ZpZGVkIGZvciBtZXRhZGF0YSBwYXJzaW5nLlxuICAgIGVtYmVkTGluazogKHEpID0+XG4gICAgICAgIFAuc2VxTWFwKFAuc3RyaW5nKFwiIVwiKS5hdE1vc3QoMSksIHEubGluaywgKHAsIGwpID0+IHtcbiAgICAgICAgICAgIGlmIChwLmxlbmd0aCA+IDApIGwuZW1iZWQgPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuIGw7XG4gICAgICAgIH0pLmRlc2MoXCJmaWxlIGxpbmtcIiksXG5cbiAgICAvLyBCaW5hcnkgcGx1cyBvciBtaW51cyBvcGVyYXRvci5cbiAgICBiaW5hcnlQbHVzTWludXM6IChfKSA9PlxuICAgICAgICBQLnJlZ2V4cCgvXFwrfC0vKVxuICAgICAgICAgICAgLm1hcCgoc3RyKSA9PiBzdHIgYXMgQmluYXJ5T3ApXG4gICAgICAgICAgICAuZGVzYyhcIicrJyBvciAnLSdcIiksXG5cbiAgICAvLyBCaW5hcnkgdGltZXMgb3IgZGl2aWRlIG9wZXJhdG9yLlxuICAgIGJpbmFyeU11bERpdjogKF8pID0+XG4gICAgICAgIFAucmVnZXhwKC9cXCp8XFwvfCUvKVxuICAgICAgICAgICAgLm1hcCgoc3RyKSA9PiBzdHIgYXMgQmluYXJ5T3ApXG4gICAgICAgICAgICAuZGVzYyhcIicqJyBvciAnLycgb3IgJyUnXCIpLFxuXG4gICAgLy8gQmluYXJ5IGNvbXBhcmlzb24gb3BlcmF0b3IuXG4gICAgYmluYXJ5Q29tcGFyZU9wOiAoXykgPT5cbiAgICAgICAgUC5yZWdleHAoLz49fDw9fCE9fD58PHw9LylcbiAgICAgICAgICAgIC5tYXAoKHN0cikgPT4gc3RyIGFzIEJpbmFyeU9wKVxuICAgICAgICAgICAgLmRlc2MoXCInPj0nIG9yICc8PScgb3IgJyE9JyBvciAnPScgb3IgJz4nIG9yICc8J1wiKSxcblxuICAgIC8vIEJpbmFyeSBib29sZWFuIGNvbWJpbmF0aW9uIG9wZXJhdG9yLlxuICAgIGJpbmFyeUFuZE9wOiAoXykgPT5cbiAgICAgICAgUC5yZWdleHAoL2FuZHwmL2kpXG4gICAgICAgICAgICAubWFwKChfc3RyKSA9PiBcIiZcIiBhcyBCaW5hcnlPcClcbiAgICAgICAgICAgIC5kZXNjKFwiJ2FuZCdcIiksXG4gICAgYmluYXJ5T3JPcDogKF8pID0+XG4gICAgICAgIFAucmVnZXhwKC9vcnxcXHwvaSlcbiAgICAgICAgICAgIC5tYXAoKF9zdHIpID0+IFwifFwiIGFzIEJpbmFyeU9wKVxuICAgICAgICAgICAgLmRlc2MoXCInb3InXCIpLFxuXG4gICAgLy8gQSBkYXRlIHdoaWNoIGNhbiBiZSBZWVlZLU1NWy1ERFRISDptbTpzc10uXG4gICAgcm9vdERhdGU6IChfKSA9PlxuICAgICAgICBQLnNlcU1hcChQLnJlZ2V4cCgvXFxkezR9LyksIFAuc3RyaW5nKFwiLVwiKSwgUC5yZWdleHAoL1xcZHsyfS8pLCAoeWVhciwgXywgbW9udGgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBEYXRlVGltZS5mcm9tT2JqZWN0KHsgeWVhcjogTnVtYmVyLnBhcnNlSW50KHllYXIpLCBtb250aDogTnVtYmVyLnBhcnNlSW50KG1vbnRoKSB9KTtcbiAgICAgICAgfSkuZGVzYyhcImRhdGUgaW4gZm9ybWF0IFlZWVktTU1bLUREVEhILU1NLVNTLk1TXVwiKSxcbiAgICBkYXRlU2hvcnRoYW5kOiAoXykgPT5cbiAgICAgICAgUC5hbHQoXG4gICAgICAgICAgICAuLi5PYmplY3Qua2V5cyhEQVRFX1NIT1JUSEFORFMpXG4gICAgICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IGIubGVuZ3RoIC0gYS5sZW5ndGgpXG4gICAgICAgICAgICAgICAgLm1hcChQLnN0cmluZylcbiAgICAgICAgKSBhcyBQLlBhcnNlcjxrZXlvZiB0eXBlb2YgREFURV9TSE9SVEhBTkRTPixcbiAgICBkYXRlOiAocSkgPT5cbiAgICAgICAgY2hhaW5PcHQ8RGF0ZVRpbWU+KFxuICAgICAgICAgICAgcS5yb290RGF0ZSxcbiAgICAgICAgICAgICh5bTogRGF0ZVRpbWUpID0+XG4gICAgICAgICAgICAgICAgUC5zZXFNYXAoUC5zdHJpbmcoXCItXCIpLCBQLnJlZ2V4cCgvXFxkezJ9LyksIChfLCBkYXkpID0+IHltLnNldCh7IGRheTogTnVtYmVyLnBhcnNlSW50KGRheSkgfSkpLFxuICAgICAgICAgICAgKHltZDogRGF0ZVRpbWUpID0+XG4gICAgICAgICAgICAgICAgUC5zZXFNYXAoUC5zdHJpbmcoXCJUXCIpLCBQLnJlZ2V4cCgvXFxkezJ9LyksIChfLCBob3VyKSA9PiB5bWQuc2V0KHsgaG91cjogTnVtYmVyLnBhcnNlSW50KGhvdXIpIH0pKSxcbiAgICAgICAgICAgICh5bWRoOiBEYXRlVGltZSkgPT5cbiAgICAgICAgICAgICAgICBQLnNlcU1hcChQLnN0cmluZyhcIjpcIiksIFAucmVnZXhwKC9cXGR7Mn0vKSwgKF8sIG1pbnV0ZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgeW1kaC5zZXQoeyBtaW51dGU6IE51bWJlci5wYXJzZUludChtaW51dGUpIH0pXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICh5bWRobTogRGF0ZVRpbWUpID0+XG4gICAgICAgICAgICAgICAgUC5zZXFNYXAoUC5zdHJpbmcoXCI6XCIpLCBQLnJlZ2V4cCgvXFxkezJ9LyksIChfLCBzZWNvbmQpID0+XG4gICAgICAgICAgICAgICAgICAgIHltZGhtLnNldCh7IHNlY29uZDogTnVtYmVyLnBhcnNlSW50KHNlY29uZCkgfSlcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKHltZGhtczogRGF0ZVRpbWUpID0+XG4gICAgICAgICAgICAgICAgUC5hbHQoXG4gICAgICAgICAgICAgICAgICAgIFAuc2VxTWFwKFAuc3RyaW5nKFwiLlwiKSwgUC5yZWdleHAoL1xcZHszfS8pLCAoXywgbWlsbGlzZWNvbmQpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICB5bWRobXMuc2V0KHsgbWlsbGlzZWNvbmQ6IE51bWJlci5wYXJzZUludChtaWxsaXNlY29uZCkgfSlcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgUC5zdWNjZWVkKHltZGhtcykgLy8gcGFzc1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAoZHQ6IERhdGVUaW1lKSA9PlxuICAgICAgICAgICAgICAgIFAuYWx0KFxuICAgICAgICAgICAgICAgICAgICBQLnNlcU1hcChQLnN0cmluZyhcIitcIikub3IoUC5zdHJpbmcoXCItXCIpKSwgUC5yZWdleHAoL1xcZHsxLDJ9KDpcXGR7Mn0pPy8pLCAocG0sIGhyKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgZHQuc2V0Wm9uZShcIlVUQ1wiICsgcG0gKyBociwgeyBrZWVwTG9jYWxUaW1lOiB0cnVlIH0pXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIFAuc2VxTWFwKFAuc3RyaW5nKFwiWlwiKSwgKCkgPT4gZHQuc2V0Wm9uZShcInV0Y1wiLCB7IGtlZXBMb2NhbFRpbWU6IHRydWUgfSkpLFxuICAgICAgICAgICAgICAgICAgICBQLnNlcU1hcChQLnN0cmluZyhcIltcIiksIFAucmVnZXhwKC9bMC05QS1aYS16Ky1cXC9dKy91KSwgUC5zdHJpbmcoXCJdXCIpLCAoX2EsIHpvbmUsIF9iKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgZHQuc2V0Wm9uZSh6b25lLCB7IGtlZXBMb2NhbFRpbWU6IHRydWUgfSlcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgICAgICAgLmFzc2VydCgoZHQ6IERhdGVUaW1lKSA9PiBkdC5pc1ZhbGlkLCBcInZhbGlkIGRhdGVcIilcbiAgICAgICAgICAgIC5kZXNjKFwiZGF0ZSBpbiBmb3JtYXQgWVlZWS1NTVstRERUSEgtTU0tU1MuTVNdXCIpLFxuXG4gICAgLy8gQSBkYXRlLCBwbHVzIHZhcmlvdXMgc2hvcnRoYW5kIHRpbWVzIG9mIGRheSBpdCBjb3VsZCBiZS5cbiAgICBkYXRlUGx1czogKHEpID0+XG4gICAgICAgIFAuYWx0PERhdGVUaW1lPihcbiAgICAgICAgICAgIHEuZGF0ZVNob3J0aGFuZC5tYXAoKGQpID0+IERBVEVfU0hPUlRIQU5EU1tkXSgpKSxcbiAgICAgICAgICAgIHEuZGF0ZVxuICAgICAgICApLmRlc2MoXCJkYXRlIGluIGZvcm1hdCBZWVlZLU1NWy1ERFRISC1NTS1TUy5NU10gb3IgaW4gc2hvcnRoYW5kXCIpLFxuXG4gICAgLy8gQSBkdXJhdGlvbiBvZiB0aW1lLlxuICAgIGR1cmF0aW9uVHlwZTogKF8pID0+XG4gICAgICAgIFAuYWx0KFxuICAgICAgICAgICAgLi4uT2JqZWN0LmtleXMoRFVSQVRJT05fVFlQRVMpXG4gICAgICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IGIubGVuZ3RoIC0gYS5sZW5ndGgpXG4gICAgICAgICAgICAgICAgLm1hcChQLnN0cmluZylcbiAgICAgICAgKSBhcyBQLlBhcnNlcjxrZXlvZiB0eXBlb2YgRFVSQVRJT05fVFlQRVM+LFxuICAgIGR1cmF0aW9uOiAocSkgPT5cbiAgICAgICAgUC5zZXFNYXAocS5udW1iZXIsIFAub3B0V2hpdGVzcGFjZSwgcS5kdXJhdGlvblR5cGUsIChjb3VudCwgXywgdCkgPT5cbiAgICAgICAgICAgIERVUkFUSU9OX1RZUEVTW3RdLm1hcFVuaXRzKCh4KSA9PiB4ICogY291bnQpXG4gICAgICAgIClcbiAgICAgICAgICAgIC5zZXBCeTEoUC5zdHJpbmcoXCIsXCIpLnRyaW0oUC5vcHRXaGl0ZXNwYWNlKS5vcihQLm9wdFdoaXRlc3BhY2UpKVxuICAgICAgICAgICAgLm1hcCgoZHVyYXRpb25zKSA9PiBkdXJhdGlvbnMucmVkdWNlKChwLCBjKSA9PiBwLnBsdXMoYykpKVxuICAgICAgICAgICAgLmRlc2MoXCJkdXJhdGlvbiBsaWtlIDRocjJtaW5cIiksXG5cbiAgICAvLyBBIHJhdyBudWxsIHZhbHVlLlxuICAgIHJhd051bGw6IChfKSA9PiBQLnN0cmluZyhcIm51bGxcIiksXG5cbiAgICAvLyBJbmxpbmUgZmllbGQgdmFsdWUgcGFyc2luZy5cbiAgICBhdG9tSW5saW5lRmllbGQ6IChxKSA9PlxuICAgICAgICBQLmFsdChcbiAgICAgICAgICAgIHEuZGF0ZSxcbiAgICAgICAgICAgIHEuZHVyYXRpb24ubWFwKChkKSA9PiBub3JtYWxpemVEdXJhdGlvbihkKSksXG4gICAgICAgICAgICBxLnN0cmluZyxcbiAgICAgICAgICAgIHEudGFnLFxuICAgICAgICAgICAgcS5lbWJlZExpbmssXG4gICAgICAgICAgICBxLmJvb2wsXG4gICAgICAgICAgICBxLm51bWJlcixcbiAgICAgICAgICAgIHEucmF3TnVsbFxuICAgICAgICApLFxuICAgIGlubGluZUZpZWxkTGlzdDogKHEpID0+IHEuYXRvbUlubGluZUZpZWxkLnNlcEJ5KFAuc3RyaW5nKFwiLFwiKS50cmltKFAub3B0V2hpdGVzcGFjZSkubG9va2FoZWFkKHEuYXRvbUlubGluZUZpZWxkKSksXG4gICAgaW5saW5lRmllbGQ6IChxKSA9PlxuICAgICAgICBQLmFsdChcbiAgICAgICAgICAgIFAuc2VxTWFwKHEuYXRvbUlubGluZUZpZWxkLCBQLnN0cmluZyhcIixcIikudHJpbShQLm9wdFdoaXRlc3BhY2UpLCBxLmlubGluZUZpZWxkTGlzdCwgKGYsIF9zLCBsKSA9PlxuICAgICAgICAgICAgICAgIFtmXS5jb25jYXQobClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBxLmF0b21JbmxpbmVGaWVsZFxuICAgICAgICApLFxufSk7XG5cbi8qKiBFbW9qaSByZWdleCwgc3RycHBpbmcgYW55IHJlZ2V4IGZsYWdzIGl0IGhhcy4gKi9cbmNvbnN0IEVNT0pJX1JFR0VYID0gbmV3IFJlZ0V4cChlbW9qaVJlZ2V4KCksIFwiXCIpO1xuXG4vKiogUHJvdmlkZXMgYSBsb29rdXAgdGFibGUgZm9yIHVuaXQgZHVyYXRpb25zIG9mIHRoZSBnaXZlbiB0eXBlLiAqL1xuZXhwb3J0IGNvbnN0IERVUkFUSU9OX1RZUEVTID0ge1xuICAgIHllYXI6IER1cmF0aW9uLmZyb21PYmplY3QoeyB5ZWFyczogMSB9KSxcbiAgICB5ZWFyczogRHVyYXRpb24uZnJvbU9iamVjdCh7IHllYXJzOiAxIH0pLFxuICAgIHlyOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgeWVhcnM6IDEgfSksXG4gICAgeXJzOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgeWVhcnM6IDEgfSksXG5cbiAgICBtb250aDogRHVyYXRpb24uZnJvbU9iamVjdCh7IG1vbnRoczogMSB9KSxcbiAgICBtb250aHM6IER1cmF0aW9uLmZyb21PYmplY3QoeyBtb250aHM6IDEgfSksXG4gICAgbW86IER1cmF0aW9uLmZyb21PYmplY3QoeyBtb250aHM6IDEgfSksXG4gICAgbW9zOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgbW9udGhzOiAxIH0pLFxuXG4gICAgd2VlazogRHVyYXRpb24uZnJvbU9iamVjdCh7IHdlZWtzOiAxIH0pLFxuICAgIHdlZWtzOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgd2Vla3M6IDEgfSksXG4gICAgd2s6IER1cmF0aW9uLmZyb21PYmplY3QoeyB3ZWVrczogMSB9KSxcbiAgICB3a3M6IER1cmF0aW9uLmZyb21PYmplY3QoeyB3ZWVrczogMSB9KSxcbiAgICB3OiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgd2Vla3M6IDEgfSksXG5cbiAgICBkYXk6IER1cmF0aW9uLmZyb21PYmplY3QoeyBkYXlzOiAxIH0pLFxuICAgIGRheXM6IER1cmF0aW9uLmZyb21PYmplY3QoeyBkYXlzOiAxIH0pLFxuICAgIGQ6IER1cmF0aW9uLmZyb21PYmplY3QoeyBkYXlzOiAxIH0pLFxuXG4gICAgaG91cjogRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxIH0pLFxuICAgIGhvdXJzOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDEgfSksXG4gICAgaHI6IER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMSB9KSxcbiAgICBocnM6IER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMSB9KSxcbiAgICBoOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDEgfSksXG5cbiAgICBtaW51dGU6IER1cmF0aW9uLmZyb21PYmplY3QoeyBtaW51dGVzOiAxIH0pLFxuICAgIG1pbnV0ZXM6IER1cmF0aW9uLmZyb21PYmplY3QoeyBtaW51dGVzOiAxIH0pLFxuICAgIG1pbjogRHVyYXRpb24uZnJvbU9iamVjdCh7IG1pbnV0ZXM6IDEgfSksXG4gICAgbWluczogRHVyYXRpb24uZnJvbU9iamVjdCh7IG1pbnV0ZXM6IDEgfSksXG4gICAgbTogRHVyYXRpb24uZnJvbU9iamVjdCh7IG1pbnV0ZXM6IDEgfSksXG5cbiAgICBzZWNvbmQ6IER1cmF0aW9uLmZyb21PYmplY3QoeyBzZWNvbmRzOiAxIH0pLFxuICAgIHNlY29uZHM6IER1cmF0aW9uLmZyb21PYmplY3QoeyBzZWNvbmRzOiAxIH0pLFxuICAgIHNlYzogRHVyYXRpb24uZnJvbU9iamVjdCh7IHNlY29uZHM6IDEgfSksXG4gICAgc2VjczogRHVyYXRpb24uZnJvbU9iamVjdCh7IHNlY29uZHM6IDEgfSksXG4gICAgczogRHVyYXRpb24uZnJvbU9iamVjdCh7IHNlY29uZHM6IDEgfSksXG59O1xuXG4vKiogU2hvcnRoYW5kIGZvciBjb21tb24gZGF0ZXMgKHJlbGF0aXZlIHRvIHJpZ2h0IG5vdykuICovXG5leHBvcnQgY29uc3QgREFURV9TSE9SVEhBTkRTID0ge1xuICAgIG5vdzogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKSxcbiAgICB0b2RheTogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5zdGFydE9mKFwiZGF5XCIpLFxuICAgIHllc3RlcmRheTogKCkgPT5cbiAgICAgICAgRGF0ZVRpbWUubG9jYWwoKVxuICAgICAgICAgICAgLnN0YXJ0T2YoXCJkYXlcIilcbiAgICAgICAgICAgIC5taW51cyhEdXJhdGlvbi5mcm9tT2JqZWN0KHsgZGF5czogMSB9KSksXG4gICAgdG9tb3Jyb3c6ICgpID0+XG4gICAgICAgIERhdGVUaW1lLmxvY2FsKClcbiAgICAgICAgICAgIC5zdGFydE9mKFwiZGF5XCIpXG4gICAgICAgICAgICAucGx1cyhEdXJhdGlvbi5mcm9tT2JqZWN0KHsgZGF5czogMSB9KSksXG4gICAgc293OiAoKSA9PiBEYXRlVGltZS5sb2NhbCgpLnN0YXJ0T2YoXCJ3ZWVrXCIpLFxuICAgIFwic3RhcnQtb2Ytd2Vla1wiOiAoKSA9PiBEYXRlVGltZS5sb2NhbCgpLnN0YXJ0T2YoXCJ3ZWVrXCIpLFxuICAgIGVvdzogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5lbmRPZihcIndlZWtcIiksXG4gICAgXCJlbmQtb2Ytd2Vla1wiOiAoKSA9PiBEYXRlVGltZS5sb2NhbCgpLmVuZE9mKFwid2Vla1wiKSxcbiAgICBzb3k6ICgpID0+IERhdGVUaW1lLmxvY2FsKCkuc3RhcnRPZihcInllYXJcIiksXG4gICAgXCJzdGFydC1vZi15ZWFyXCI6ICgpID0+IERhdGVUaW1lLmxvY2FsKCkuc3RhcnRPZihcInllYXJcIiksXG4gICAgZW95OiAoKSA9PiBEYXRlVGltZS5sb2NhbCgpLmVuZE9mKFwieWVhclwiKSxcbiAgICBcImVuZC1vZi15ZWFyXCI6ICgpID0+IERhdGVUaW1lLmxvY2FsKCkuZW5kT2YoXCJ5ZWFyXCIpLFxuICAgIHNvbTogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5zdGFydE9mKFwibW9udGhcIiksXG4gICAgXCJzdGFydC1vZi1tb250aFwiOiAoKSA9PiBEYXRlVGltZS5sb2NhbCgpLnN0YXJ0T2YoXCJtb250aFwiKSxcbiAgICBlb206ICgpID0+IERhdGVUaW1lLmxvY2FsKCkuZW5kT2YoXCJtb250aFwiKSxcbiAgICBcImVuZC1vZi1tb250aFwiOiAoKSA9PiBEYXRlVGltZS5sb2NhbCgpLmVuZE9mKFwibW9udGhcIiksXG59O1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBFeHByZXNzaW9uIExhbmd1YWdlIC8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbmV4cG9ydCB0eXBlIFBvc3RmaXhGcmFnbWVudCA9XG4gICAgfCB7IHR5cGU6IFwiZG90XCI7IGV4cHI6IHN0cmluZyB9XG4gICAgfCB7IHR5cGU6IFwiaW5kZXhcIjsgZXhwcjogRXhwcmVzc2lvbiB9XG4gICAgfCB7IHR5cGU6IFwiZnVuY3Rpb25cIjsgZXhwcnM6IEV4cHJlc3Npb25bXSB9O1xuXG5leHBvcnQgaW50ZXJmYWNlIEV4cHJlc3Npb25MYW5ndWFnZSB7XG4gICAgdmFyaWFibGU6IFZhcmlhYmxlRXhwcmVzc2lvbjtcbiAgICBudW1iZXI6IExpdGVyYWxFeHByZXNzaW9uO1xuICAgIGJvb2w6IExpdGVyYWxFeHByZXNzaW9uO1xuICAgIHN0cmluZzogTGl0ZXJhbEV4cHJlc3Npb247XG4gICAgZGF0ZTogTGl0ZXJhbEV4cHJlc3Npb247XG4gICAgZHVyYXRpb246IExpdGVyYWxFeHByZXNzaW9uO1xuICAgIGxpbms6IExpdGVyYWxFeHByZXNzaW9uO1xuICAgIG51bGw6IExpdGVyYWxFeHByZXNzaW9uO1xuXG4gICAgbGlzdDogTGlzdEV4cHJlc3Npb247XG4gICAgb2JqZWN0OiBPYmplY3RFeHByZXNzaW9uO1xuXG4gICAgbmVnYXRlZDogRXhwcmVzc2lvbjtcbiAgICBhdG9tOiBFeHByZXNzaW9uO1xuICAgIGluZGV4OiBFeHByZXNzaW9uO1xuICAgIGxhbWJkYTogTGFtYmRhRXhwcmVzc2lvbjtcblxuICAgIC8vIFBvc3RmaXggcGFyc2VycyBmb3IgZnVuY3Rpb24gY2FsbHMgJiB0aGUgbGlrZS5cbiAgICBkb3RQb3N0Zml4OiBQb3N0Zml4RnJhZ21lbnQ7XG4gICAgaW5kZXhQb3N0Zml4OiBQb3N0Zml4RnJhZ21lbnQ7XG4gICAgZnVuY3Rpb25Qb3N0Zml4OiBQb3N0Zml4RnJhZ21lbnQ7XG5cbiAgICAvLyBCaW5hcnkgb3AgcGFyc2Vycy5cbiAgICBiaW5hcnlNdWxEaXY6IEV4cHJlc3Npb247XG4gICAgYmluYXJ5UGx1c01pbnVzOiBFeHByZXNzaW9uO1xuICAgIGJpbmFyeUNvbXBhcmU6IEV4cHJlc3Npb247XG4gICAgYmluYXJ5Qm9vbGVhbjogRXhwcmVzc2lvbjtcbiAgICBiaW5hcnlPcDogRXhwcmVzc2lvbjtcbiAgICBwYXJlbnM6IEV4cHJlc3Npb247XG4gICAgZXhwcmVzc2lvbjogRXhwcmVzc2lvbjtcbn1cblxuLyoqXG4gKiBQYXJzZSBmb3IgdGhlIGRhdGFjb3JlIGV4cHJlc3Npb24gbGFuZ3VhZ2UsIHdoaWNoIHByb3ZpZGVzIHNpbXBsZSBhbmQgdmFndWVseSBKUy1sb29raW5nIGNvbXB1dGF0aW9uLlxuICovXG5leHBvcnQgY29uc3QgRVhQUkVTU0lPTiA9IFAuY3JlYXRlTGFuZ3VhZ2U8RXhwcmVzc2lvbkxhbmd1YWdlPih7XG4gICAgLy8gRmllbGQgcGFyc2luZy5cbiAgICB2YXJpYWJsZTogKF8pID0+IFBSSU1JVElWRVMuaWRlbnRpZmllci5tYXAoRXhwcmVzc2lvbnMudmFyaWFibGUpLmRlc2MoXCJ2YXJpYWJsZVwiKSxcbiAgICBudW1iZXI6IChfKSA9PiBQUklNSVRJVkVTLm51bWJlci5tYXAoRXhwcmVzc2lvbnMubGl0ZXJhbCkuZGVzYyhcIm51bWJlclwiKSxcbiAgICBzdHJpbmc6IChfKSA9PiBQUklNSVRJVkVTLnN0cmluZy5tYXAoRXhwcmVzc2lvbnMubGl0ZXJhbCkuZGVzYyhcInN0cmluZ1wiKSxcbiAgICBib29sOiAoXykgPT4gUFJJTUlUSVZFUy5ib29sLm1hcChFeHByZXNzaW9ucy5saXRlcmFsKS5kZXNjKFwiYm9vbGVhblwiKSxcbiAgICBkYXRlOiAoXykgPT5cbiAgICAgICAgY3JlYXRlRnVuY3Rpb24oXCJkYXRlXCIsIFBSSU1JVElWRVMuZGF0ZVBsdXMpXG4gICAgICAgICAgICAubWFwKChbX2Z1bmMsIGRhdGVdKSA9PiBFeHByZXNzaW9ucy5saXRlcmFsKGRhdGUpKVxuICAgICAgICAgICAgLmRlc2MoXCJkYXRlXCIpLFxuICAgIGR1cmF0aW9uOiAoXykgPT5cbiAgICAgICAgY3JlYXRlRnVuY3Rpb24oXCJkdXJcIiwgUFJJTUlUSVZFUy5kdXJhdGlvbilcbiAgICAgICAgICAgIC5tYXAoKFtfZnVuYywgZHVyXSkgPT4gRXhwcmVzc2lvbnMubGl0ZXJhbChkdXIpKVxuICAgICAgICAgICAgLmRlc2MoXCJkdXJhdGlvblwiKSxcbiAgICBudWxsOiAoXykgPT4gUFJJTUlUSVZFUy5yYXdOdWxsLm1hcCgoXykgPT4gRXhwcmVzc2lvbnMuTlVMTCksXG4gICAgbGluazogKF8pID0+IFBSSU1JVElWRVMubGluay5tYXAoRXhwcmVzc2lvbnMubGl0ZXJhbCksXG4gICAgbGlzdDogKHEpID0+XG4gICAgICAgIHEuZXhwcmVzc2lvblxuICAgICAgICAgICAgLnNlcEJ5KFAuc3RyaW5nKFwiLFwiKS50cmltKFAub3B0V2hpdGVzcGFjZSkpXG4gICAgICAgICAgICAud3JhcChQLnN0cmluZyhcIltcIikuc2tpcChQLm9wdFdoaXRlc3BhY2UpLCBQLm9wdFdoaXRlc3BhY2UudGhlbihQLnN0cmluZyhcIl1cIikpKVxuICAgICAgICAgICAgLm1hcCgobCkgPT4gRXhwcmVzc2lvbnMubGlzdChsKSlcbiAgICAgICAgICAgIC5kZXNjKFwibGlzdFwiKSxcbiAgICBvYmplY3Q6IChxKSA9PlxuICAgICAgICBQLnNlcU1hcChcbiAgICAgICAgICAgIFBSSU1JVElWRVMuaWRlbnRpZmllci5vcihQUklNSVRJVkVTLnN0cmluZyksXG4gICAgICAgICAgICBQLnN0cmluZyhcIjpcIikudHJpbShQLm9wdFdoaXRlc3BhY2UpLFxuICAgICAgICAgICAgcS5leHByZXNzaW9uLFxuICAgICAgICAgICAgKG5hbWUsIF9zZXAsIHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgbmFtZSwgdmFsdWUgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKVxuICAgICAgICAgICAgLnNlcEJ5KFAuc3RyaW5nKFwiLFwiKS50cmltKFAub3B0V2hpdGVzcGFjZSkpXG4gICAgICAgICAgICAud3JhcChQLnN0cmluZyhcIntcIikuc2tpcChQLm9wdFdoaXRlc3BhY2UpLCBQLm9wdFdoaXRlc3BhY2UudGhlbihQLnN0cmluZyhcIn1cIikpKVxuICAgICAgICAgICAgLm1hcCgodmFscykgPT4ge1xuICAgICAgICAgICAgICAgIGxldCByZXM6IFJlY29yZDxzdHJpbmcsIEV4cHJlc3Npb24+ID0ge307XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgZW50cnkgb2YgdmFscykgcmVzW2VudHJ5Lm5hbWVdID0gZW50cnkudmFsdWU7XG4gICAgICAgICAgICAgICAgcmV0dXJuIEV4cHJlc3Npb25zLm9iamVjdChyZXMpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5kZXNjKFwib2JqZWN0ICgneyBhOiAxLCBiOiAyIH0nKVwiKSxcblxuICAgIGF0b206IChxKSA9PlxuICAgICAgICBQLmFsdChcbiAgICAgICAgICAgIC8vIFBsYWNlIGVtYmVkIGxpbmtzIGFib3ZlIG5lZ2F0ZWQgZmllbGRzIGFzIHRoZXkgYXJlIHRoZSBzcGVjaWFsIHBhcnNlciBjYXNlICchW1t0aGluZ11dJyBhbmQgYXJlIGdlbmVyYWxseSB1bmFtYmlnaW91cy5cbiAgICAgICAgICAgIFBSSU1JVElWRVMuZW1iZWRMaW5rLm1hcCgobCkgPT4gRXhwcmVzc2lvbnMubGl0ZXJhbChsKSksXG4gICAgICAgICAgICBxLm5lZ2F0ZWQsXG4gICAgICAgICAgICBxLmxpbmssXG4gICAgICAgICAgICBxLmxpc3QsXG4gICAgICAgICAgICBxLm9iamVjdCxcbiAgICAgICAgICAgIHEubGFtYmRhLFxuICAgICAgICAgICAgcS5wYXJlbnMsXG4gICAgICAgICAgICBxLmJvb2wsXG4gICAgICAgICAgICBxLm51bWJlcixcbiAgICAgICAgICAgIHEuc3RyaW5nLFxuICAgICAgICAgICAgcS5kYXRlLFxuICAgICAgICAgICAgcS5kdXJhdGlvbixcbiAgICAgICAgICAgIHEubnVsbCxcbiAgICAgICAgICAgIHEudmFyaWFibGVcbiAgICAgICAgKSxcbiAgICBpbmRleDogKHEpID0+XG4gICAgICAgIFAuc2VxTWFwKHEuYXRvbSwgUC5hbHQocS5kb3RQb3N0Zml4LCBxLmluZGV4UG9zdGZpeCwgcS5mdW5jdGlvblBvc3RmaXgpLm1hbnkoKSwgKG9iaiwgcG9zdGZpeGVzKSA9PiB7XG4gICAgICAgICAgICBsZXQgcmVzdWx0ID0gb2JqO1xuICAgICAgICAgICAgZm9yIChsZXQgcG9zdCBvZiBwb3N0Zml4ZXMpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHBvc3QudHlwZSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFwiZG90XCI6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBFeHByZXNzaW9ucy5pbmRleChyZXN1bHQsIEV4cHJlc3Npb25zLmxpdGVyYWwocG9zdC5leHByKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcImluZGV4XCI6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBFeHByZXNzaW9ucy5pbmRleChyZXN1bHQsIHBvc3QuZXhwcik7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcImZ1bmN0aW9uXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBFeHByZXNzaW9ucy5mdW5jKHJlc3VsdCwgcG9zdC5leHBycyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0pLFxuICAgIG5lZ2F0ZWQ6IChxKSA9PiBQLnNlcU1hcChQLnN0cmluZyhcIiFcIiksIHEuaW5kZXgsIChfLCBmaWVsZCkgPT4gRXhwcmVzc2lvbnMubmVnYXRlKGZpZWxkKSkuZGVzYyhcIm5lZ2F0ZWQgZmllbGRcIiksXG4gICAgcGFyZW5zOiAocSkgPT4gcS5leHByZXNzaW9uLnRyaW0oUC5vcHRXaGl0ZXNwYWNlKS53cmFwKFAuc3RyaW5nKFwiKFwiKSwgUC5zdHJpbmcoXCIpXCIpKSxcbiAgICBsYW1iZGE6IChxKSA9PlxuICAgICAgICBQLnNlcU1hcChcbiAgICAgICAgICAgIFBSSU1JVElWRVMuaWRlbnRpZmllclxuICAgICAgICAgICAgICAgIC5zZXBCeShQLnN0cmluZyhcIixcIikudHJpbShQLm9wdFdoaXRlc3BhY2UpKVxuICAgICAgICAgICAgICAgIC53cmFwKFAuc3RyaW5nKFwiKFwiKS50cmltKFAub3B0V2hpdGVzcGFjZSksIFAuc3RyaW5nKFwiKVwiKS50cmltKFAub3B0V2hpdGVzcGFjZSkpLFxuICAgICAgICAgICAgUC5zdHJpbmcoXCI9PlwiKS50cmltKFAub3B0V2hpdGVzcGFjZSksXG4gICAgICAgICAgICBxLmV4cHJlc3Npb24sXG4gICAgICAgICAgICAoaWRlbnQsIF9pZ25vcmUsIHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogXCJsYW1iZGFcIiwgYXJndW1lbnRzOiBpZGVudCwgdmFsdWUgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKSxcblxuICAgIGRvdFBvc3RmaXg6IChxKSA9PiBQLnNlcU1hcChQLnN0cmluZyhcIi5cIiksIFBSSU1JVElWRVMuaWRlbnRpZmllciwgKF8sIGV4cHIpID0+ICh7IHR5cGU6IFwiZG90XCIsIGV4cHIgfSkpLFxuICAgIGluZGV4UG9zdGZpeDogKHEpID0+XG4gICAgICAgIFAuc2VxTWFwKFxuICAgICAgICAgICAgUC5zdHJpbmcoXCJbXCIpLFxuICAgICAgICAgICAgUC5vcHRXaGl0ZXNwYWNlLFxuICAgICAgICAgICAgcS5leHByZXNzaW9uLFxuICAgICAgICAgICAgUC5vcHRXaGl0ZXNwYWNlLFxuICAgICAgICAgICAgUC5zdHJpbmcoXCJdXCIpLFxuICAgICAgICAgICAgKF8sIF8yLCBleHByLCBfMywgXzQpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyB0eXBlOiBcImluZGV4XCIsIGV4cHIgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKSxcbiAgICBmdW5jdGlvblBvc3RmaXg6IChxKSA9PlxuICAgICAgICBQLnNlcU1hcChcbiAgICAgICAgICAgIFAuc3RyaW5nKFwiKFwiKSxcbiAgICAgICAgICAgIFAub3B0V2hpdGVzcGFjZSxcbiAgICAgICAgICAgIHEuZXhwcmVzc2lvbi5zZXBCeShQLnN0cmluZyhcIixcIikudHJpbShQLm9wdFdoaXRlc3BhY2UpKSxcbiAgICAgICAgICAgIFAub3B0V2hpdGVzcGFjZSxcbiAgICAgICAgICAgIFAuc3RyaW5nKFwiKVwiKSxcbiAgICAgICAgICAgIChfLCBfMSwgZXhwcnMsIF8yLCBfMykgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IHR5cGU6IFwiZnVuY3Rpb25cIiwgZXhwcnMgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKSxcblxuICAgIC8vIFRoZSBwcmVjZWRlbmNlIGhpZXJhcmNoeSBvZiBvcGVyYXRvcnMgLSBtdWx0aXBseS9kaXZpZGUsIGFkZC9zdWJ0cmFjdCwgY29tcGFyZSwgYW5kIHRoZW4gYm9vbGVhbiBvcGVyYXRpb25zLlxuICAgIGJpbmFyeU11bERpdjogKHEpID0+IGNyZWF0ZUJpbmFyeVBhcnNlcihxLmluZGV4LCBQUklNSVRJVkVTLmJpbmFyeU11bERpdiwgRXhwcmVzc2lvbnMuYmluYXJ5T3ApLFxuICAgIGJpbmFyeVBsdXNNaW51czogKHEpID0+IGNyZWF0ZUJpbmFyeVBhcnNlcihxLmJpbmFyeU11bERpdiwgUFJJTUlUSVZFUy5iaW5hcnlQbHVzTWludXMsIEV4cHJlc3Npb25zLmJpbmFyeU9wKSxcbiAgICBiaW5hcnlDb21wYXJlOiAocSkgPT4gY3JlYXRlQmluYXJ5UGFyc2VyKHEuYmluYXJ5UGx1c01pbnVzLCBQUklNSVRJVkVTLmJpbmFyeUNvbXBhcmVPcCwgRXhwcmVzc2lvbnMuYmluYXJ5T3ApLFxuICAgIGJpbmFyeUJvb2xlYW46IChxKSA9PlxuICAgICAgICBjcmVhdGVCaW5hcnlQYXJzZXIocS5iaW5hcnlDb21wYXJlLCBQUklNSVRJVkVTLmJpbmFyeUFuZE9wLm9yKFBSSU1JVElWRVMuYmluYXJ5T3JPcCksIEV4cHJlc3Npb25zLmJpbmFyeU9wKSxcbiAgICBiaW5hcnlPcDogKHEpID0+IHEuYmluYXJ5Qm9vbGVhbixcblxuICAgIGV4cHJlc3Npb246IChxKSA9PiBxLmJpbmFyeU9wLFxufSk7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBRdWVyeSBMYW5ndWFnZSAvL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuLyoqIFN1cHBvcnRlZCB0eXBlcyBpbiB0aGUgZ3JhbW1hciBmb3IgaW5kZXggcXVlcmllcy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnlMYW5ndWFnZSB7XG4gICAgcXVlcnlUYWc6IEluZGV4VGFnZ2VkO1xuICAgIHF1ZXJ5SWQ6IEluZGV4SWQ7XG4gICAgcXVlcnlUeXBlOiBJbmRleFR5cGVkO1xuICAgIHF1ZXJ5UGF0aDogSW5kZXhQYXRoO1xuICAgIHF1ZXJ5UGFyZW50T2Y6IEluZGV4UGFyZW50T2Y7XG4gICAgcXVlcnlDaGlsZE9mOiBJbmRleENoaWxkT2Y7XG4gICAgcXVlcnlTaW1wbGVMaW5rZWQ6IEluZGV4TGlua2VkO1xuICAgIHF1ZXJ5TGlua2VkOiBJbmRleExpbmtlZDtcbiAgICBxdWVyeUV4aXN0czogSW5kZXhGaWVsZDtcbiAgICBxdWVyeVF1b3RlZEV4cHJlc3Npb246IEluZGV4RXhwcmVzc2lvbjtcbiAgICBxdWVyeVJhd0V4cHJlc3Npb246IEluZGV4RXhwcmVzc2lvbjtcbiAgICBxdWVyeU5lZ2F0ZTogSW5kZXhOb3Q7XG4gICAgcXVlcnlQYXJlbnM6IEluZGV4UXVlcnk7XG4gICAgcXVlcnlBdG9tOiBJbmRleFF1ZXJ5O1xuICAgIHF1ZXJ5QW5kczogSW5kZXhRdWVyeTtcbiAgICBxdWVyeU9yczogSW5kZXhRdWVyeTtcbiAgICBxdWVyeTogSW5kZXhRdWVyeTtcbn1cblxuLyoqXG4gKiBQYXJzZXIgZm9yIHRoZSBxdWVyeSBsYW5ndWFnZS4gRGlkIEkgcmVhbGx5IG5lZWQgYSBxdWVyeSBsYW5ndWFnZSBpbnN0ZWFkIG9mIGp1c3QgYSBiZXR0ZXIgVUk/IFByb2JhYmx5IG5vdC5cbiAqIEJ1dCBxdWVyeSBsYW5ndWFnZXMgYXJlIGZ1biBmb3IgdGhlIHdob2xlIGZhbWlseSBhbmQgYXQgc29tZSBwb2ludCB5b3UgZ2V0IHNvIHVzZWQgdG8gd3JpdGluZyB0aGVtIHRoYXRcbiAqIHlvdSBkb24ndCBzdG9wIHRvIHRoaW5rIGlmIHlvdSAqbmVlZCogdG8gd3JpdGUgdGhlbSBhbnltb3JlLiBJdCdzIGdvb2QgdHlwaW5nIHByYWN0aWNlIGZvciBldmVyeW9uZS5cbiAqL1xuZXhwb3J0IGNvbnN0IFFVRVJZID0gUC5jcmVhdGVMYW5ndWFnZTxRdWVyeUxhbmd1YWdlPih7XG4gICAgcXVlcnlUYWc6IChfKSA9PiBQUklNSVRJVkVTLnRhZy5tYXAoKHZhbHVlKSA9PiAoeyB0eXBlOiBcInRhZ2dlZFwiLCB2YWx1ZSB9KSksXG4gICAgcXVlcnlJZDogKF8pID0+IGNyZWF0ZUZ1bmN0aW9uKFwiaWRcIiwgUFJJTUlUSVZFUy5zdHJpbmcpLm1hcCgoW18sIGlkXSkgPT4gKHsgdHlwZTogXCJpZFwiLCB2YWx1ZTogaWQgfSkpLFxuICAgIHF1ZXJ5VHlwZTogKF8pID0+XG4gICAgICAgIFAuc3RyaW5nKFwiQFwiKVxuICAgICAgICAgICAgLnRoZW4oUFJJTUlUSVZFUy5pZGVudGlmaWVyKVxuICAgICAgICAgICAgLm1hcCgodmFsdWUpID0+ICh7IHR5cGU6IFwidHlwZWRcIiwgdmFsdWU6IHZhbHVlIH0pKSxcblxuICAgIHF1ZXJ5UGF0aDogKF8pID0+XG4gICAgICAgIGNyZWF0ZUZ1bmN0aW9uKFAucmVnZXhwKC9lP3BhdGgvaSkuZGVzYyhcIltlXXBhdGhcIiksIFBSSU1JVElWRVMuc3RyaW5nKS5tYXAoKFtmdW5jLCBwYXRoXSkgPT4gKHtcbiAgICAgICAgICAgIHR5cGU6IFwicGF0aFwiLFxuICAgICAgICAgICAgdmFsdWU6IHBhdGgsXG4gICAgICAgICAgICBleGFjdDogZnVuYy50b0xvd2VyQ2FzZSgpID09PSBcImVwYXRoXCIsXG4gICAgICAgIH0pKSxcblxuICAgIHF1ZXJ5UGFyZW50T2Y6IChxKSA9PlxuICAgICAgICBjcmVhdGVGdW5jdGlvbihQLnJlZ2V4cCgvcGFyZW50b2Z8c3VwZXJ0cmVlL2kpLmRlc2MoXCJwYXJlbnRvZlwiKSwgcS5xdWVyeSkubWFwKChbZnVuYywgY2hpbGRyZW5dKSA9PiAoe1xuICAgICAgICAgICAgdHlwZTogXCJwYXJlbnQtb2ZcIixcbiAgICAgICAgICAgIGNoaWxkcmVuLFxuICAgICAgICAgICAgaW5jbHVzaXZlOiBmdW5jLnRvTG93ZXJDYXNlKCkgPT09IFwic3VwZXJ0cmVlXCIsXG4gICAgICAgIH0pKSxcbiAgICBxdWVyeUNoaWxkT2Y6IChxKSA9PlxuICAgICAgICBjcmVhdGVGdW5jdGlvbihQLnJlZ2V4cCgvY2hpbGRvZnxzdWJ0cmVlL2kpLmRlc2MoXCJjaGlsZG9mXCIpLCBxLnF1ZXJ5KS5tYXAoKFtmdW5jLCBwYXJlbnRzXSkgPT4gKHtcbiAgICAgICAgICAgIHR5cGU6IFwiY2hpbGQtb2ZcIixcbiAgICAgICAgICAgIHBhcmVudHMsXG4gICAgICAgICAgICBpbmNsdXNpdmU6IGZ1bmMudG9Mb3dlckNhc2UoKSA9PT0gXCJzdWJ0cmVlXCIsXG4gICAgICAgIH0pKSxcbiAgICBxdWVyeVNpbXBsZUxpbmtlZDogKF8pID0+XG4gICAgICAgIFBSSU1JVElWRVMubGluay5tYXAoKGxpbmspID0+ICh7XG4gICAgICAgICAgICB0eXBlOiBcImxpbmtlZFwiLFxuICAgICAgICAgICAgc291cmNlOiB7IHR5cGU6IFwibGlua1wiLCB2YWx1ZTogbGluayB9LFxuICAgICAgICAgICAgZGlyZWN0aW9uOiBcImluY29taW5nXCIsXG4gICAgICAgIH0pKSxcbiAgICBxdWVyeUxpbmtlZDogKHEpID0+XG4gICAgICAgIGNyZWF0ZUZ1bmN0aW9uKFAucmVnZXhwKC9saW5rc3RvfGxpbmtlZGZyb218Y29ubmVjdGVkL2kpLmRlc2MoXCJjb25uZWN0ZWRcIiksIHEucXVlcnkpLm1hcCgoW2Z1bmMsIHNvdXJjZV0pID0+ICh7XG4gICAgICAgICAgICB0eXBlOiBcImxpbmtlZFwiLFxuICAgICAgICAgICAgc291cmNlLFxuICAgICAgICAgICAgZGlyZWN0aW9uOlxuICAgICAgICAgICAgICAgIGZ1bmMudG9Mb3dlckNhc2UoKSA9PSBcImxpbmtzdG9cIiA/IFwiaW5jb21pbmdcIiA6IGZ1bmMudG9Mb3dlckNhc2UoKSA9PSBcImxpbmtlZGZyb21cIiA/IFwib3V0Z29pbmdcIiA6IFwiYm90aFwiLFxuICAgICAgICB9KSksXG4gICAgcXVlcnlFeGlzdHM6IChfKSA9PlxuICAgICAgICBjcmVhdGVGdW5jdGlvbihQLnJlZ2V4cCgvZXhpc3RzL2kpLmRlc2MoXCJleGlzdHNcIiksIFBSSU1JVElWRVMuaWRlbnRpZmllci5vcihQUklNSVRJVkVTLnN0cmluZykpLm1hcChcbiAgICAgICAgICAgIChbX2Z1bmMsIGlkZW50XSkgPT4gKHtcbiAgICAgICAgICAgICAgICB0eXBlOiBcImZpZWxkXCIsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGlkZW50LFxuICAgICAgICAgICAgfSlcbiAgICAgICAgKSxcbiAgICBxdWVyeVF1b3RlZEV4cHJlc3Npb246IChxKSA9PlxuICAgICAgICBjcmVhdGVGdW5jdGlvbihQLnJlZ2V4cCgvZXhwci9pKS5kZXNjKFwiZXhwclwiKSwgRVhQUkVTU0lPTi5leHByZXNzaW9uKS5tYXAoKFtfLCBleHByXSkgPT4gKHtcbiAgICAgICAgICAgIHR5cGU6IFwiZXhwcmVzc2lvblwiLFxuICAgICAgICAgICAgZXhwcmVzc2lvbjogZXhwcixcbiAgICAgICAgfSkpLFxuICAgIHF1ZXJ5UmF3RXhwcmVzc2lvbjogKHEpID0+IEVYUFJFU1NJT04uYmluYXJ5Q29tcGFyZS5tYXAoKGV4cHIpID0+ICh7IHR5cGU6IFwiZXhwcmVzc2lvblwiLCBleHByZXNzaW9uOiBleHByIH0pKSxcblxuICAgIHF1ZXJ5UGFyZW5zOiAocSkgPT4gcS5xdWVyeS50cmltKFAub3B0V2hpdGVzcGFjZSkud3JhcChQLnN0cmluZyhcIihcIiksIFAuc3RyaW5nKFwiKVwiKSksXG4gICAgcXVlcnlOZWdhdGU6IChxKSA9PlxuICAgICAgICBQLnN0cmluZyhcIiFcIilcbiAgICAgICAgICAgIC5za2lwKFAub3B0V2hpdGVzcGFjZSlcbiAgICAgICAgICAgIC50aGVuKHEucXVlcnlBdG9tKVxuICAgICAgICAgICAgLm1hcCgodmFsdWUpID0+ICh7XG4gICAgICAgICAgICAgICAgdHlwZTogXCJub3RcIixcbiAgICAgICAgICAgICAgICBlbGVtZW50OiB2YWx1ZSxcbiAgICAgICAgICAgIH0pKSxcbiAgICBxdWVyeUF0b206IChxKSA9PlxuICAgICAgICBQLmFsdDxJbmRleFF1ZXJ5PihcbiAgICAgICAgICAgIHEucXVlcnlQYXJlbnMsXG4gICAgICAgICAgICBxLnF1ZXJ5TmVnYXRlLFxuICAgICAgICAgICAgcS5xdWVyeVNpbXBsZUxpbmtlZCxcbiAgICAgICAgICAgIHEucXVlcnlUYWcsXG4gICAgICAgICAgICBxLnF1ZXJ5VHlwZSxcbiAgICAgICAgICAgIHEucXVlcnlJZCxcbiAgICAgICAgICAgIHEucXVlcnlFeGlzdHMsXG4gICAgICAgICAgICBxLnF1ZXJ5Q2hpbGRPZixcbiAgICAgICAgICAgIHEucXVlcnlQYXJlbnRPZixcbiAgICAgICAgICAgIHEucXVlcnlMaW5rZWQsXG4gICAgICAgICAgICBxLnF1ZXJ5UGF0aCxcbiAgICAgICAgICAgIHEucXVlcnlRdW90ZWRFeHByZXNzaW9uLFxuICAgICAgICAgICAgLy8gRXhwcmVzc2lvbnMgYXJlIGVzc2VudGlhbGx5IHRoZSBcImNhdGNoLWFsbFwiIG9mIG90aGVyd2lzZSB1bnBhcnNlYWJsZSB0ZXJtcywgc28gdGhleSBzaG91bGQgZ28gYWJzb2x1dGUgbGFzdC5cbiAgICAgICAgICAgIHEucXVlcnlSYXdFeHByZXNzaW9uXG4gICAgICAgICksXG4gICAgcXVlcnlBbmRzOiAocSkgPT5cbiAgICAgICAgY3JlYXRlQmluYXJ5UGFyc2VyKHEucXVlcnlBdG9tLCBQUklNSVRJVkVTLmJpbmFyeUFuZE9wLCAobGVmdCwgX29wLCByaWdodCkgPT4gKHtcbiAgICAgICAgICAgIHR5cGU6IFwiYW5kXCIsXG4gICAgICAgICAgICBlbGVtZW50czogW2xlZnQsIHJpZ2h0XSxcbiAgICAgICAgfSkpLFxuICAgIHF1ZXJ5T3JzOiAocSkgPT5cbiAgICAgICAgY3JlYXRlQmluYXJ5UGFyc2VyKHEucXVlcnlBbmRzLCBQUklNSVRJVkVTLmJpbmFyeU9yT3AsIChsZWZ0LCBfb3AsIHJpZ2h0KSA9PiAoe1xuICAgICAgICAgICAgdHlwZTogXCJvclwiLFxuICAgICAgICAgICAgZWxlbWVudHM6IFtsZWZ0LCByaWdodF0sXG4gICAgICAgIH0pKSxcbiAgICBxdWVyeTogKHEpID0+IHEucXVlcnlPcnMudHJpbShQLm9wdFdoaXRlc3BhY2UpLFxufSk7XG5cbi8qKiBSZXR1cm4gYSBuZXcgcGFyc2VyIHdoaWNoIGV4ZWN1dGVzIHRoZSB1bmRlcmx5aW5nIHBhcnNlciBhbmQgcmV0dXJucyBpdCdzIHJhdyBzdHJpbmcgcmVwcmVzZW50YXRpb24uICovXG5leHBvcnQgZnVuY3Rpb24gY2FwdHVyZVJhdzxUPihiYXNlOiBQLlBhcnNlcjxUPik6IFAuUGFyc2VyPFtULCBzdHJpbmddPiB7XG4gICAgcmV0dXJuIFAuY3VzdG9tKChfc3VjY2VzcywgX2ZhaWx1cmUpID0+IHtcbiAgICAgICAgcmV0dXJuIChpbnB1dCwgaSkgPT4ge1xuICAgICAgICAgICAgbGV0IHJlc3VsdCA9IChiYXNlIGFzIGFueSkuXyhpbnB1dCwgaSk7XG4gICAgICAgICAgICBpZiAoIXJlc3VsdC5zdGF0dXMpIHJldHVybiByZXN1bHQ7XG5cbiAgICAgICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCByZXN1bHQsIHsgdmFsdWU6IFtyZXN1bHQudmFsdWUsIGlucHV0LnN1YnN0cmluZyhpLCByZXN1bHQuaW5kZXgpXSB9KTtcbiAgICAgICAgfTtcbiAgICB9KTtcbn1cblxuLyoqIENyZWF0ZSBhIGxlZnQtYXNzb2NpYXRpdmUgYmluYXJ5IHBhcnNlciB3aGljaCBwYXJzZXMgdGhlIGdpdmVuIHN1Yi1lbGVtZW50IGFuZCBzZXBhcmF0b3IuIEhhbmRsZXMgd2hpdGVzcGFjZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVCaW5hcnlQYXJzZXI8VCwgVT4oXG4gICAgY2hpbGQ6IFAuUGFyc2VyPFQ+LFxuICAgIHNlcDogUC5QYXJzZXI8VT4sXG4gICAgY29tYmluZTogKGE6IFQsIGI6IFUsIGM6IFQpID0+IFRcbik6IFAuUGFyc2VyPFQ+IHtcbiAgICByZXR1cm4gUC5zZXFNYXAoY2hpbGQsIFAuc2VxKFAub3B0V2hpdGVzcGFjZSwgc2VwLCBQLm9wdFdoaXRlc3BhY2UsIGNoaWxkKS5tYW55KCksIChmaXJzdCwgcmVzdCkgPT4ge1xuICAgICAgICBpZiAocmVzdC5sZW5ndGggPT0gMCkgcmV0dXJuIGZpcnN0O1xuXG4gICAgICAgIGxldCBub2RlID0gY29tYmluZShmaXJzdCwgcmVzdFswXVsxXSwgcmVzdFswXVszXSk7XG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMTsgaW5kZXggPCByZXN0Lmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgICAgbm9kZSA9IGNvbWJpbmUobm9kZSwgcmVzdFtpbmRleF1bMV0sIHJlc3RbaW5kZXhdWzNdKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbm9kZTtcbiAgICB9KTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBwYXJzZXIgd2hpY2ggcGFyc2VzIFxcPGZ1bmN0aW9uXFw+KFxcPGFyZ3NcXD4pLlxuICogKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVGdW5jdGlvbjxUPihmdW5jOiBzdHJpbmcgfCBQLlBhcnNlcjxzdHJpbmc+LCBhcmdzOiBQLlBhcnNlcjxUPik6IFAuUGFyc2VyPFtzdHJpbmcsIFRdPiB7XG4gICAgY29uc3QgcmVhbEZ1bmMgPSB0eXBlb2YgZnVuYyA9PT0gXCJzdHJpbmdcIiA/IFAuc3RyaW5nKGZ1bmMpIDogZnVuYztcbiAgICByZXR1cm4gUC5zZXFNYXAoXG4gICAgICAgIHJlYWxGdW5jLnNraXAoUC5vcHRXaGl0ZXNwYWNlKSxcbiAgICAgICAgYXJncy50cmltKFAub3B0V2hpdGVzcGFjZSkud3JhcChQLnN0cmluZyhcIihcIiksIFAuc3RyaW5nKFwiKVwiKSksXG4gICAgICAgIChmLCBhKSA9PiBbZiwgYV1cbiAgICApO1xufVxuXG4vKiogQ2hhaW5zIGEgbGlzdCBvZiBwYXJzZXJzOyB0aGUgZmlyc3Qgb25lIG11c3Qgc3VjY2VlZCwgYnV0IGZvbGxvd2luZyBvbmVzIG1heSBmYWlsIHdpdGhvdXQgZmFpbGluZyB0aGUgb3ZlcmFsbCBwYXJzZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjaGFpbk9wdDxUPihiYXNlOiBQLlBhcnNlcjxUPiwgLi4uZnVuY3M6ICgocjogVCkgPT4gUC5QYXJzZXI8VD4pW10pOiBQLlBhcnNlcjxUPiB7XG4gICAgcmV0dXJuIFAuY3VzdG9tKChfc3VjY2VzcywgX2ZhaWx1cmUpID0+IHtcbiAgICAgICAgcmV0dXJuIChpbnB1dCwgaSkgPT4ge1xuICAgICAgICAgICAgbGV0IHJlc3VsdCA9IChiYXNlIGFzIGFueSkuXyhpbnB1dCwgaSk7XG4gICAgICAgICAgICBpZiAoIXJlc3VsdC5zdGF0dXMpIHJldHVybiByZXN1bHQ7XG5cbiAgICAgICAgICAgIGZvciAobGV0IGZ1bmMgb2YgZnVuY3MpIHtcbiAgICAgICAgICAgICAgICBsZXQgbmV4dCA9IChmdW5jKHJlc3VsdC52YWx1ZSBhcyBUKSBhcyBhbnkpLl8oaW5wdXQsIHJlc3VsdC5pbmRleCk7XG4gICAgICAgICAgICAgICAgaWYgKCFuZXh0LnN0YXR1cykgcmV0dXJuIHJlc3VsdDtcblxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IG5leHQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH07XG4gICAgfSk7XG59XG4iLCAiLyoqXG4gKiBAbW9kdWxlIGV4cHJlc3Npb25zXG4gKi9cbmltcG9ydCB7IERhdGVUaW1lLCBEdXJhdGlvbiB9IGZyb20gXCJsdXhvblwiO1xuaW1wb3J0IHsgTGluayB9IGZyb20gXCJleHByZXNzaW9uL2xpbmtcIjtcbmltcG9ydCB7IHJlbmRlck1pbmltYWxEYXRlLCByZW5kZXJNaW5pbWFsRHVyYXRpb24gfSBmcm9tIFwidXRpbHMvbm9ybWFsaXplcnNcIjtcblxuLy8gUmUtZXhwb3J0cyBvZiB1c2VmdWwgZ2VuZXJpYyB0eXBlcy5cbmV4cG9ydCB7IExpbmsgfTtcblxuLyoqIFNob3J0aGFuZCBmb3IgYSBtYXBwaW5nIGZyb20ga2V5cyB0byB2YWx1ZXMuICovXG5leHBvcnQgdHlwZSBEYXRhT2JqZWN0ID0gUmVjb3JkPHN0cmluZywgYW55Pjtcbi8qKiBUaGUgbGl0ZXJhbCB0eXBlcyBzdXBwb3J0ZWQgYnkgdGhlIHF1ZXJ5IGVuZ2luZS4gKi9cbmV4cG9ydCB0eXBlIExpdGVyYWxUeXBlID1cbiAgICB8IFwiYm9vbGVhblwiXG4gICAgfCBcIm51bWJlclwiXG4gICAgfCBcInN0cmluZ1wiXG4gICAgfCBcImRhdGVcIlxuICAgIHwgXCJkdXJhdGlvblwiXG4gICAgfCBcImxpbmtcIlxuICAgIHwgXCJhcnJheVwiXG4gICAgfCBcIm9iamVjdFwiXG4gICAgfCBcImZ1bmN0aW9uXCJcbiAgICB8IFwibnVsbFwiO1xuLyoqIFRoZSByYXcgdmFsdWVzIHRoYXQgYSBsaXRlcmFsIGNhbiB0YWtlIG9uLiAqL1xuZXhwb3J0IHR5cGUgTGl0ZXJhbCA9XG4gICAgfCBib29sZWFuXG4gICAgfCBudW1iZXJcbiAgICB8IHN0cmluZ1xuICAgIHwgRGF0ZVRpbWVcbiAgICB8IER1cmF0aW9uXG4gICAgfCBMaW5rXG4gICAgfCBBcnJheTxMaXRlcmFsPlxuICAgIHwgRGF0YU9iamVjdFxuICAgIHwgRnVuY3Rpb25cbiAgICB8IG51bGw7XG5cbi8qKiBNYXBzIHRoZSBzdHJpbmcgdHlwZSB0byBpdCdzIGV4dGVybmFsLCBBUEktZmFjaW5nIHJlcHJlc2VudGF0aW9uLiAqL1xuZXhwb3J0IHR5cGUgTGl0ZXJhbFJlcHI8VCBleHRlbmRzIExpdGVyYWxUeXBlPiA9IFQgZXh0ZW5kcyBcImJvb2xlYW5cIlxuICAgID8gYm9vbGVhblxuICAgIDogVCBleHRlbmRzIFwibnVtYmVyXCJcbiAgICA/IG51bWJlclxuICAgIDogVCBleHRlbmRzIFwic3RyaW5nXCJcbiAgICA/IHN0cmluZ1xuICAgIDogVCBleHRlbmRzIFwiZHVyYXRpb25cIlxuICAgID8gRHVyYXRpb25cbiAgICA6IFQgZXh0ZW5kcyBcImRhdGVcIlxuICAgID8gRGF0ZVRpbWVcbiAgICA6IFQgZXh0ZW5kcyBcIm51bGxcIlxuICAgID8gbnVsbFxuICAgIDogVCBleHRlbmRzIFwibGlua1wiXG4gICAgPyBMaW5rXG4gICAgOiBUIGV4dGVuZHMgXCJhcnJheVwiXG4gICAgPyBBcnJheTxMaXRlcmFsPlxuICAgIDogVCBleHRlbmRzIFwib2JqZWN0XCJcbiAgICA/IERhdGFPYmplY3RcbiAgICA6IFQgZXh0ZW5kcyBcImZ1bmN0aW9uXCJcbiAgICA/IEZ1bmN0aW9uXG4gICAgOiBhbnk7XG5cbi8qKiBBIHdyYXBwZWQgbGl0ZXJhbCB2YWx1ZSB3aGljaCBjYW4gYmUgc3dpdGNoZWQgb24uICovXG5leHBvcnQgdHlwZSBXcmFwcGVkTGl0ZXJhbCA9XG4gICAgfCBMaXRlcmFsV3JhcHBlcjxcInN0cmluZ1wiPlxuICAgIHwgTGl0ZXJhbFdyYXBwZXI8XCJudW1iZXJcIj5cbiAgICB8IExpdGVyYWxXcmFwcGVyPFwiYm9vbGVhblwiPlxuICAgIHwgTGl0ZXJhbFdyYXBwZXI8XCJkYXRlXCI+XG4gICAgfCBMaXRlcmFsV3JhcHBlcjxcImR1cmF0aW9uXCI+XG4gICAgfCBMaXRlcmFsV3JhcHBlcjxcImxpbmtcIj5cbiAgICB8IExpdGVyYWxXcmFwcGVyPFwiYXJyYXlcIj5cbiAgICB8IExpdGVyYWxXcmFwcGVyPFwib2JqZWN0XCI+XG4gICAgfCBMaXRlcmFsV3JhcHBlcjxcImZ1bmN0aW9uXCI+XG4gICAgfCBMaXRlcmFsV3JhcHBlcjxcIm51bGxcIj47XG5cbi8qKiBDb21iaW5lcyBhIHRleHR1YWwgdHlwZSBhbmQgdmFsdWU7IHByaW1hcmlseSB1c2VmdWwgZm9yIHN3aXRjaGluZyBvbi5cbiAqIEBoaWRkZW5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMaXRlcmFsV3JhcHBlcjxUIGV4dGVuZHMgTGl0ZXJhbFR5cGU+IHtcbiAgICB0eXBlOiBUO1xuICAgIHZhbHVlOiBMaXRlcmFsUmVwcjxUPjtcbn1cblxuLyoqXG4gKiBAaGlkZGVuXG4gKiAgVXRpbGl0eSBsaWJyYXJ5IGZvciBoYW5kbGluZyBsaXRlcmFsIHZhbHVlcy4gKi9cbmV4cG9ydCBuYW1lc3BhY2UgTGl0ZXJhbHMge1xuICAgIC8qKiBTZXR0aW5ncyB1c2VkIHdoZW4gZm9ybWF0dGluZyBsaXRlcmFsIHZhbHVlcyB0byB0ZXh0LiAqL1xuICAgIGV4cG9ydCBpbnRlcmZhY2UgVG9TdHJpbmdTZXR0aW5ncyB7XG4gICAgICAgIC8qKiBXaGF0IGEgbnVsbCB3aWxsIHJlbmRlciBhcy4gKi9cbiAgICAgICAgbnVsbFJlcHJlc2VudGF0aW9uOiBzdHJpbmc7XG5cbiAgICAgICAgLyoqIERhdGUgZm9ybWF0LiAqL1xuICAgICAgICBkYXRlRm9ybWF0OiBzdHJpbmc7XG5cbiAgICAgICAgLyoqIERhdGUtdGltZSBmb3JtYXQuICovXG4gICAgICAgIGRhdGVUaW1lRm9ybWF0OiBzdHJpbmc7XG4gICAgfVxuXG4gICAgLyoqIFNhbmUsIEVuZ2xpc2gtYmFzZWQgZGVmYXVsdHMgZm9yIGRhdGUgZm9ybWF0cy4gKi9cbiAgICBleHBvcnQgY29uc3QgREVGQVVMVF9UT19TVFJJTkc6IFRvU3RyaW5nU2V0dGluZ3MgPSB7XG4gICAgICAgIG51bGxSZXByZXNlbnRhdGlvbjogXCItXCIsXG5cbiAgICAgICAgZGF0ZUZvcm1hdDogXCJNTU1NIGRkLCB5eXl5XCIsXG4gICAgICAgIGRhdGVUaW1lRm9ybWF0OiBcImg6bW0gYSAtIE1NTU0gZGQsIHl5eXlcIixcbiAgICB9O1xuXG4gICAgLyoqIENvbnZlcnQgYW4gYXJiaXRyYXJ5IHZhbHVlIGludG8gYSByZWFzb25hYmxlLCBNYXJrZG93bi1mcmllbmRseSBzdHJpbmcgaWYgcG9zc2libGUuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIHRvU3RyaW5nKFxuICAgICAgICBmaWVsZDogYW55LFxuICAgICAgICBzZXR0aW5nOiBUb1N0cmluZ1NldHRpbmdzID0gREVGQVVMVF9UT19TVFJJTkcsXG4gICAgICAgIHJlY3Vyc2l2ZTogYm9vbGVhbiA9IGZhbHNlXG4gICAgKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IHdyYXBwZWQgPSB3cmFwVmFsdWUoZmllbGQpO1xuICAgICAgICBpZiAoIXdyYXBwZWQpIHJldHVybiBzZXR0aW5nLm51bGxSZXByZXNlbnRhdGlvbjtcblxuICAgICAgICBzd2l0Y2ggKHdyYXBwZWQudHlwZSkge1xuICAgICAgICAgICAgY2FzZSBcIm51bGxcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gc2V0dGluZy5udWxsUmVwcmVzZW50YXRpb247XG4gICAgICAgICAgICBjYXNlIFwic3RyaW5nXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWU7XG4gICAgICAgICAgICBjYXNlIFwibnVtYmVyXCI6XG4gICAgICAgICAgICBjYXNlIFwiYm9vbGVhblwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBcIlwiICsgd3JhcHBlZC52YWx1ZTtcbiAgICAgICAgICAgIGNhc2UgXCJsaW5rXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWUubWFya2Rvd24oKTtcbiAgICAgICAgICAgIGNhc2UgXCJmdW5jdGlvblwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBcIjxmdW5jdGlvbj5cIjtcbiAgICAgICAgICAgIGNhc2UgXCJhcnJheVwiOlxuICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSBcIlwiO1xuICAgICAgICAgICAgICAgIGlmIChyZWN1cnNpdmUpIHJlc3VsdCArPSBcIltcIjtcbiAgICAgICAgICAgICAgICByZXN1bHQgKz0gd3JhcHBlZC52YWx1ZS5tYXAoKGYpID0+IHRvU3RyaW5nKGYsIHNldHRpbmcsIHRydWUpKS5qb2luKFwiLCBcIik7XG4gICAgICAgICAgICAgICAgaWYgKHJlY3Vyc2l2ZSkgcmVzdWx0ICs9IFwiXVwiO1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICBjYXNlIFwib2JqZWN0XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgXCJ7IFwiICtcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMod3JhcHBlZC52YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKGUpID0+IGVbMF0gKyBcIjogXCIgKyB0b1N0cmluZyhlWzFdLCBzZXR0aW5nLCB0cnVlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5qb2luKFwiLCBcIikgK1xuICAgICAgICAgICAgICAgICAgICBcIiB9XCJcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgY2FzZSBcImRhdGVcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVuZGVyTWluaW1hbERhdGUod3JhcHBlZC52YWx1ZSwgc2V0dGluZy5kYXRlRm9ybWF0LCBzZXR0aW5nLmRhdGVUaW1lRm9ybWF0KTtcbiAgICAgICAgICAgIGNhc2UgXCJkdXJhdGlvblwiOlxuICAgICAgICAgICAgICAgIHJldHVybiByZW5kZXJNaW5pbWFsRHVyYXRpb24od3JhcHBlZC52YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogV3JhcCBhIGxpdGVyYWwgdmFsdWUgc28geW91IGNhbiBzd2l0Y2ggb24gaXQgZWFzaWx5LiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiB3cmFwVmFsdWUodmFsOiBMaXRlcmFsKTogV3JhcHBlZExpdGVyYWwgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoaXNOdWxsKHZhbCkpIHJldHVybiB7IHR5cGU6IFwibnVsbFwiLCB2YWx1ZTogdmFsIH07XG4gICAgICAgIGVsc2UgaWYgKGlzTnVtYmVyKHZhbCkpIHJldHVybiB7IHR5cGU6IFwibnVtYmVyXCIsIHZhbHVlOiB2YWwgfTtcbiAgICAgICAgZWxzZSBpZiAoaXNTdHJpbmcodmFsKSkgcmV0dXJuIHsgdHlwZTogXCJzdHJpbmdcIiwgdmFsdWU6IHZhbCB9O1xuICAgICAgICBlbHNlIGlmIChpc0Jvb2xlYW4odmFsKSkgcmV0dXJuIHsgdHlwZTogXCJib29sZWFuXCIsIHZhbHVlOiB2YWwgfTtcbiAgICAgICAgZWxzZSBpZiAoaXNEdXJhdGlvbih2YWwpKSByZXR1cm4geyB0eXBlOiBcImR1cmF0aW9uXCIsIHZhbHVlOiB2YWwgfTtcbiAgICAgICAgZWxzZSBpZiAoaXNEYXRlKHZhbCkpIHJldHVybiB7IHR5cGU6IFwiZGF0ZVwiLCB2YWx1ZTogdmFsIH07XG4gICAgICAgIGVsc2UgaWYgKGlzQXJyYXkodmFsKSkgcmV0dXJuIHsgdHlwZTogXCJhcnJheVwiLCB2YWx1ZTogdmFsIH07XG4gICAgICAgIGVsc2UgaWYgKGlzTGluayh2YWwpKSByZXR1cm4geyB0eXBlOiBcImxpbmtcIiwgdmFsdWU6IHZhbCB9O1xuICAgICAgICBlbHNlIGlmIChpc0Z1bmN0aW9uKHZhbCkpIHJldHVybiB7IHR5cGU6IFwiZnVuY3Rpb25cIiwgdmFsdWU6IHZhbCB9O1xuICAgICAgICBlbHNlIGlmIChpc09iamVjdCh2YWwpKSByZXR1cm4geyB0eXBlOiBcIm9iamVjdFwiLCB2YWx1ZTogdmFsIH07XG4gICAgICAgIGVsc2UgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKiogUmVjdXJzaXZlbHkgbWFwIGNvbXBsZXggb2JqZWN0cyBhdCB0aGUgbGVhdmVzLiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiBtYXBMZWF2ZXModmFsOiBMaXRlcmFsLCBmdW5jOiAodDogTGl0ZXJhbCkgPT4gTGl0ZXJhbCk6IExpdGVyYWwge1xuICAgICAgICBpZiAoaXNPYmplY3QodmFsKSkge1xuICAgICAgICAgICAgbGV0IHJlc3VsdDogRGF0YU9iamVjdCA9IHt9O1xuICAgICAgICAgICAgZm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHZhbCkpIHJlc3VsdFtrZXldID0gbWFwTGVhdmVzKHZhbHVlLCBmdW5jKTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNBcnJheSh2YWwpKSB7XG4gICAgICAgICAgICBsZXQgcmVzdWx0OiBMaXRlcmFsW10gPSBbXTtcbiAgICAgICAgICAgIGZvciAobGV0IHZhbHVlIG9mIHZhbCkgcmVzdWx0LnB1c2gobWFwTGVhdmVzKHZhbHVlLCBmdW5jKSk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZ1bmModmFsKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBDaGVjayBpZiB0d28gYXJiaXRyYXJ5IGxpdGVyYWxzIGFyZSBlcXVhbC4gKi9cbiAgICBleHBvcnQgZnVuY3Rpb24gZXF1YWxzKGZpcnN0OiBMaXRlcmFsIHwgdW5kZWZpbmVkLCBzZWNvbmQ6IExpdGVyYWwgfCB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIGNvbXBhcmUoZmlyc3QsIHNlY29uZCkgPT0gMDtcbiAgICB9XG5cbiAgICAvKiogQ29tcGFyZSB0d28gYXJiaXRyYXJ5IEphdmFTY3JpcHQgdmFsdWVzLiBQcm9kdWNlcyBhIHRvdGFsIG9yZGVyaW5nIG92ZXIgQU5ZIHBvc3NpYmxlIGRhdGFjb3JlIHZhbHVlLiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiBjb21wYXJlKFxuICAgICAgICB2YWwxOiBMaXRlcmFsIHwgdW5kZWZpbmVkLFxuICAgICAgICB2YWwyOiBMaXRlcmFsIHwgdW5kZWZpbmVkLFxuICAgICAgICBsaW5rTm9ybWFsaXplcj86IChsaW5rOiBzdHJpbmcpID0+IHN0cmluZ1xuICAgICk6IG51bWJlciB7XG4gICAgICAgIC8vIFJlZmVyZW5jZSBlcXVhbGl0eSAtIHNob3J0IGNpcmN1aXQuXG4gICAgICAgIGlmICh2YWwxID09PSB2YWwyKSByZXR1cm4gMDtcblxuICAgICAgICAvLyBIYW5kbGUgdW5kZWZpbmVkL251bGxzIGZpcnN0LlxuICAgICAgICBpZiAodmFsMSA9PT0gdW5kZWZpbmVkKSB2YWwxID0gbnVsbDtcbiAgICAgICAgaWYgKHZhbDIgPT09IHVuZGVmaW5lZCkgdmFsMiA9IG51bGw7XG4gICAgICAgIGlmICh2YWwxID09PSBudWxsICYmIHZhbDIgPT09IG51bGwpIHJldHVybiAwO1xuICAgICAgICBlbHNlIGlmICh2YWwxID09PSBudWxsKSByZXR1cm4gLTE7XG4gICAgICAgIGVsc2UgaWYgKHZhbDIgPT09IG51bGwpIHJldHVybiAxO1xuXG4gICAgICAgIC8vIEEgbm9uLW51bGwgdmFsdWUgbm93IHdoaWNoIHdlIGNhbiB3cmFwICYgY29tcGFyZSBvbi5cbiAgICAgICAgbGV0IHdyYXAxID0gd3JhcFZhbHVlKHZhbDEpO1xuICAgICAgICBsZXQgd3JhcDIgPSB3cmFwVmFsdWUodmFsMik7XG5cbiAgICAgICAgaWYgKHdyYXAxID09PSB1bmRlZmluZWQgJiYgd3JhcDIgPT09IHVuZGVmaW5lZCkgcmV0dXJuIDA7XG4gICAgICAgIGVsc2UgaWYgKHdyYXAxID09PSB1bmRlZmluZWQpIHJldHVybiAtMTtcbiAgICAgICAgZWxzZSBpZiAod3JhcDIgPT09IHVuZGVmaW5lZCkgcmV0dXJuIDE7XG5cbiAgICAgICAgLy8gU2hvcnQtY2lyY3VpdCBvbiBkaWZmZXJlbnQgdHlwZXMgb3Igb24gcmVmZXJlbmNlIGVxdWFsaXR5LlxuICAgICAgICBpZiAod3JhcDEudHlwZSAhPSB3cmFwMi50eXBlKSByZXR1cm4gd3JhcDEudHlwZS5sb2NhbGVDb21wYXJlKHdyYXAyLnR5cGUpO1xuICAgICAgICBpZiAod3JhcDEudmFsdWUgPT09IHdyYXAyLnZhbHVlKSByZXR1cm4gMDtcblxuICAgICAgICBzd2l0Y2ggKHdyYXAxLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgXCJzdHJpbmdcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gd3JhcDEudmFsdWUubG9jYWxlQ29tcGFyZSh3cmFwMi52YWx1ZSBhcyBzdHJpbmcpO1xuICAgICAgICAgICAgY2FzZSBcIm51bWJlclwiOlxuICAgICAgICAgICAgICAgIGlmICh3cmFwMS52YWx1ZSA8ICh3cmFwMi52YWx1ZSBhcyBudW1iZXIpKSByZXR1cm4gLTE7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAod3JhcDEudmFsdWUgPT0gKHdyYXAyLnZhbHVlIGFzIG51bWJlcikpIHJldHVybiAwO1xuICAgICAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICAgICAgY2FzZSBcIm51bGxcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICAgIGNhc2UgXCJib29sZWFuXCI6XG4gICAgICAgICAgICAgICAgaWYgKHdyYXAxLnZhbHVlID09IHdyYXAyLnZhbHVlKSByZXR1cm4gMDtcbiAgICAgICAgICAgICAgICBlbHNlIHJldHVybiB3cmFwMS52YWx1ZSA/IDEgOiAtMTtcbiAgICAgICAgICAgIGNhc2UgXCJsaW5rXCI6XG4gICAgICAgICAgICAgICAgbGV0IGxpbmsxID0gd3JhcDEudmFsdWU7XG4gICAgICAgICAgICAgICAgbGV0IGxpbmsyID0gd3JhcDIudmFsdWUgYXMgTGluaztcbiAgICAgICAgICAgICAgICBsZXQgbm9ybWFsaXplID0gbGlua05vcm1hbGl6ZXIgPz8gKCh4OiBzdHJpbmcpID0+IHgpO1xuXG4gICAgICAgICAgICAgICAgLy8gV2UgY2FuJ3QgY29tcGFyZSBieSBmaWxlIG5hbWUgb3IgZGlzcGxheSwgc2luY2UgdGhhdCB3b3VsZCBicmVhayBsaW5rIGVxdWFsaXR5LiBDb21wYXJlIGJ5IHBhdGguXG4gICAgICAgICAgICAgICAgbGV0IHBhdGhDb21wYXJlID0gbm9ybWFsaXplKGxpbmsxLnBhdGgpLmxvY2FsZUNvbXBhcmUobm9ybWFsaXplKGxpbmsyLnBhdGgpKTtcbiAgICAgICAgICAgICAgICBpZiAocGF0aENvbXBhcmUgIT0gMCkgcmV0dXJuIHBhdGhDb21wYXJlO1xuXG4gICAgICAgICAgICAgICAgLy8gVGhlbiBjb21wYXJlIGJ5IHR5cGUuXG4gICAgICAgICAgICAgICAgbGV0IHR5cGVDb21wYXJlID0gbGluazEudHlwZS5sb2NhbGVDb21wYXJlKGxpbmsyLnR5cGUpO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlQ29tcGFyZSAhPSAwKSByZXR1cm4gdHlwZUNvbXBhcmU7XG5cbiAgICAgICAgICAgICAgICAvLyBUaGVuIGNvbXBhcmUgYnkgc3VicGF0aCBleGlzdGVuY2UuXG4gICAgICAgICAgICAgICAgaWYgKGxpbmsxLnN1YnBhdGggJiYgIWxpbmsyLnN1YnBhdGgpIHJldHVybiAxO1xuICAgICAgICAgICAgICAgIGlmICghbGluazEuc3VicGF0aCAmJiBsaW5rMi5zdWJwYXRoKSByZXR1cm4gLTE7XG4gICAgICAgICAgICAgICAgaWYgKCFsaW5rMS5zdWJwYXRoICYmICFsaW5rMi5zdWJwYXRoKSByZXR1cm4gMDtcblxuICAgICAgICAgICAgICAgIC8vIFNpbmNlIGJvdGggaGF2ZSBhIHN1YnBhdGgsIGNvbXBhcmUgYnkgc3VicGF0aC5cbiAgICAgICAgICAgICAgICByZXR1cm4gKGxpbmsxLnN1YnBhdGggPz8gXCJcIikubG9jYWxlQ29tcGFyZShsaW5rMi5zdWJwYXRoID8/IFwiXCIpO1xuICAgICAgICAgICAgY2FzZSBcImRhdGVcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gd3JhcDEudmFsdWUgPCAod3JhcDIudmFsdWUgYXMgRGF0ZVRpbWUpXG4gICAgICAgICAgICAgICAgICAgID8gLTFcbiAgICAgICAgICAgICAgICAgICAgOiB3cmFwMS52YWx1ZS5lcXVhbHMod3JhcDIudmFsdWUgYXMgRGF0ZVRpbWUpXG4gICAgICAgICAgICAgICAgICAgID8gMFxuICAgICAgICAgICAgICAgICAgICA6IDE7XG4gICAgICAgICAgICBjYXNlIFwiZHVyYXRpb25cIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gd3JhcDEudmFsdWUgPCAod3JhcDIudmFsdWUgYXMgRHVyYXRpb24pXG4gICAgICAgICAgICAgICAgICAgID8gLTFcbiAgICAgICAgICAgICAgICAgICAgOiB3cmFwMS52YWx1ZS5lcXVhbHMod3JhcDIudmFsdWUgYXMgRHVyYXRpb24pXG4gICAgICAgICAgICAgICAgICAgID8gMFxuICAgICAgICAgICAgICAgICAgICA6IDE7XG4gICAgICAgICAgICBjYXNlIFwiYXJyYXlcIjpcbiAgICAgICAgICAgICAgICBsZXQgZjEgPSB3cmFwMS52YWx1ZTtcbiAgICAgICAgICAgICAgICBsZXQgZjIgPSB3cmFwMi52YWx1ZSBhcyBhbnlbXTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgTWF0aC5taW4oZjEubGVuZ3RoLCBmMi5sZW5ndGgpOyBpbmRleCsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBjb21wID0gY29tcGFyZShmMVtpbmRleF0sIGYyW2luZGV4XSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb21wICE9IDApIHJldHVybiBjb21wO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gZjEubGVuZ3RoIC0gZjIubGVuZ3RoO1xuICAgICAgICAgICAgY2FzZSBcIm9iamVjdFwiOlxuICAgICAgICAgICAgICAgIGxldCBvMSA9IHdyYXAxLnZhbHVlO1xuICAgICAgICAgICAgICAgIGxldCBvMiA9IHdyYXAyLnZhbHVlIGFzIFJlY29yZDxzdHJpbmcsIGFueT47XG4gICAgICAgICAgICAgICAgbGV0IGsxID0gQXJyYXkuZnJvbShPYmplY3Qua2V5cyhvMSkpO1xuICAgICAgICAgICAgICAgIGxldCBrMiA9IEFycmF5LmZyb20oT2JqZWN0LmtleXMobzIpKTtcbiAgICAgICAgICAgICAgICBrMS5zb3J0KCk7XG4gICAgICAgICAgICAgICAgazIuc29ydCgpO1xuXG4gICAgICAgICAgICAgICAgbGV0IGtleUNvbXBhcmUgPSBjb21wYXJlKGsxLCBrMik7XG4gICAgICAgICAgICAgICAgaWYgKGtleUNvbXBhcmUgIT0gMCkgcmV0dXJuIGtleUNvbXBhcmU7XG5cbiAgICAgICAgICAgICAgICBmb3IgKGxldCBrZXkgb2YgazEpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNvbXAgPSBjb21wYXJlKG8xW2tleV0sIG8yW2tleV0pO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY29tcCAhPSAwKSByZXR1cm4gY29tcDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICAgIGNhc2UgXCJmdW5jdGlvblwiOlxuICAgICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEZpbmQgdGhlIGNvcnJlc3BvbmRpbmcgZGF0YWNvcmUgdHlwZSBmb3IgYW4gYXJiaXRyYXJ5IHZhbHVlLiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiB0eXBlT2YodmFsOiBhbnkpOiBMaXRlcmFsVHlwZSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB3cmFwVmFsdWUodmFsKT8udHlwZTtcbiAgICB9XG5cbiAgICAvKiogRGV0ZXJtaW5lIGlmIHRoZSBnaXZlbiB2YWx1ZSBpcyBcInRydXRoeVwiIChpLmUuLCBpcyBub24tbnVsbCBhbmQgaGFzIGRhdGEgaW4gaXQpLiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiBpc1RydXRoeShmaWVsZDogTGl0ZXJhbCk6IGJvb2xlYW4ge1xuICAgICAgICBsZXQgd3JhcHBlZCA9IHdyYXBWYWx1ZShmaWVsZCk7XG4gICAgICAgIGlmICghd3JhcHBlZCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgICAgIHN3aXRjaCAod3JhcHBlZC50eXBlKSB7XG4gICAgICAgICAgICBjYXNlIFwibnVtYmVyXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWUgIT0gMDtcbiAgICAgICAgICAgIGNhc2UgXCJzdHJpbmdcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZS5sZW5ndGggPiAwO1xuICAgICAgICAgICAgY2FzZSBcImJvb2xlYW5cIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZTtcbiAgICAgICAgICAgIGNhc2UgXCJsaW5rXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuICEhd3JhcHBlZC52YWx1ZS5wYXRoO1xuICAgICAgICAgICAgY2FzZSBcImRhdGVcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZS50b01pbGxpcygpICE9IDA7XG4gICAgICAgICAgICBjYXNlIFwiZHVyYXRpb25cIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZS5hcyhcInNlY29uZHNcIikgIT0gMDtcbiAgICAgICAgICAgIGNhc2UgXCJvYmplY3RcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMod3JhcHBlZC52YWx1ZSkubGVuZ3RoID4gMDtcbiAgICAgICAgICAgIGNhc2UgXCJhcnJheVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB3cmFwcGVkLnZhbHVlLmxlbmd0aCA+IDA7XG4gICAgICAgICAgICBjYXNlIFwibnVsbFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIGNhc2UgXCJmdW5jdGlvblwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIERlZXAgY29weSBhIGZpZWxkLiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiBkZWVwQ29weTxUIGV4dGVuZHMgTGl0ZXJhbD4oZmllbGQ6IFQpOiBUIHtcbiAgICAgICAgaWYgKGZpZWxkID09PSBudWxsIHx8IGZpZWxkID09PSB1bmRlZmluZWQpIHJldHVybiBmaWVsZDtcblxuICAgICAgICBpZiAoTGl0ZXJhbHMuaXNBcnJheShmaWVsZCkpIHtcbiAgICAgICAgICAgIHJldHVybiAoW10gYXMgTGl0ZXJhbFtdKS5jb25jYXQoZmllbGQubWFwKCh2KSA9PiBkZWVwQ29weSh2KSkpIGFzIFQ7XG4gICAgICAgIH0gZWxzZSBpZiAoTGl0ZXJhbHMuaXNPYmplY3QoZmllbGQpKSB7XG4gICAgICAgICAgICBsZXQgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBMaXRlcmFsPiA9IHt9O1xuICAgICAgICAgICAgZm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGZpZWxkKSkgcmVzdWx0W2tleV0gPSBkZWVwQ29weSh2YWx1ZSk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0IGFzIFQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogRGV0ZXJtaW5lIGlmIHRoZSB2YWx1ZSBpcyBhIHN0cmluZy4gKi9cbiAgICBleHBvcnQgZnVuY3Rpb24gaXNTdHJpbmcodmFsOiBhbnkpOiB2YWwgaXMgc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiB2YWwgPT0gXCJzdHJpbmdcIjtcbiAgICB9XG5cbiAgICAvKiogRGV0ZXJtaW5lIGlmIHRoZSB2YWx1ZSBpcyBhIG51bWJlci4gKi9cbiAgICBleHBvcnQgZnVuY3Rpb24gaXNOdW1iZXIodmFsOiBhbnkpOiB2YWwgaXMgbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiB2YWwgPT0gXCJudW1iZXJcIjtcbiAgICB9XG5cbiAgICAvKiogRGV0ZXJtaW5lIGlmIHRoZSB2YWx1ZSBpcyBhIGRhdGUuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGlzRGF0ZSh2YWw6IGFueSk6IHZhbCBpcyBEYXRlVGltZSB7XG4gICAgICAgIHJldHVybiB2YWwgaW5zdGFuY2VvZiBEYXRlVGltZTtcbiAgICB9XG5cbiAgICAvKiogRGV0ZXJtaW5lIGlmIHRoZSB2YWx1ZSBpcyBhIGR1cmF0aW9uLiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiBpc0R1cmF0aW9uKHZhbDogYW55KTogdmFsIGlzIER1cmF0aW9uIHtcbiAgICAgICAgcmV0dXJuIHZhbCBpbnN0YW5jZW9mIER1cmF0aW9uO1xuICAgIH1cblxuICAgIC8qKiBEZXRlcm1pbmUgaWYgdGhlIHZhbHVlIGlzIG51bGwgb3IgdW5kZWZpbmVkLiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiBpc051bGwodmFsOiBhbnkpOiB2YWwgaXMgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB2YWwgPT09IG51bGwgfHwgdmFsID09PSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqIERldGVybWluZSBpZiB0aGUgdmFsdWUgaXMgYW4gYXJyYXkuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGlzQXJyYXkodmFsOiBhbnkpOiB2YWwgaXMgYW55W10ge1xuICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWwpO1xuICAgIH1cblxuICAgIC8qKiBEZXRlcm1pbmUgaWYgdGhlIHZhbHVlIGlzIGEgYm9vbGVhbi4gKi9cbiAgICBleHBvcnQgZnVuY3Rpb24gaXNCb29sZWFuKHZhbDogYW55KTogdmFsIGlzIGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gXCJib29sZWFuXCI7XG4gICAgfVxuXG4gICAgLyoqIERldGVybWluZSBpZiB0aGUgdmFsdWUgaXMgYSBsaW5rLiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiBpc0xpbmsodmFsOiBhbnkpOiB2YWwgaXMgTGluayB7XG4gICAgICAgIHJldHVybiB2YWwgaW5zdGFuY2VvZiBMaW5rO1xuICAgIH1cblxuICAgIC8qKiBDaGVja3MgaWYgdGhlIGdpdmVuIHZhbHVlIGlzIGFuIG9iamVjdCAoYW5kIG5vdCBhbnkgb3RoZXIgZGF0YWNvcmUtcmVjb2duaXplZCBvYmplY3QtbGlrZSB0eXBlKS4gKi9cbiAgICBleHBvcnQgZnVuY3Rpb24gaXNPYmplY3QodmFsOiBhbnkpOiB2YWwgaXMgUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB2YWwgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgdHlwZW9mIHZhbCA9PSBcIm9iamVjdFwiICYmXG4gICAgICAgICAgICAhaXNBcnJheSh2YWwpICYmXG4gICAgICAgICAgICAhaXNEdXJhdGlvbih2YWwpICYmXG4gICAgICAgICAgICAhaXNEYXRlKHZhbCkgJiZcbiAgICAgICAgICAgICFpc0xpbmsodmFsKSAmJlxuICAgICAgICAgICAgIWlzTnVsbCh2YWwpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIERldGVybWluZXMgaWYgdGhlIGdpdmVuIHZhbHVlIGlzIGEgamF2YXNjcmlwdCBmdW5jdGlvbi4gKi9cbiAgICBleHBvcnQgZnVuY3Rpb24gaXNGdW5jdGlvbih2YWw6IGFueSk6IHZhbCBpcyBGdW5jdGlvbiB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgdmFsID09IFwiZnVuY3Rpb25cIjtcbiAgICB9XG59XG5cbi8qKiBBIGdyb3VwaW5nIG9uIGEgdHlwZSB3aGljaCBzdXBwb3J0cyByZWN1cnNpdmVseS1uZXN0ZWQgZ3JvdXBzLlxuICogQGdyb3VwIENvbW1vbiBUeXBlc1xuICovXG5leHBvcnQgdHlwZSBHcm91cEVsZW1lbnQ8VD4gPSB7IGtleTogTGl0ZXJhbDsgcm93czogR3JvdXBpbmc8VD4gfTtcbi8qKlxuICogQSBncm91cGluZywgd2hpY2ggY2FuIGJlIGVpdGhlcjpcbiAqIC0gYW4gYXJyYXkgb2YgZWxlbWVudHMgb2YgdHlwZSBgVGAsIG9yXG4gKiAtIGFuIGFycmF5IG9mIHtAbGluayBHcm91cGVsZW1lbnR9c1xuICpcbiAqIEBncm91cCBDb21tb24gVHlwZXNcbiAqL1xuZXhwb3J0IHR5cGUgR3JvdXBpbmc8VD4gPSBUW10gfCBHcm91cEVsZW1lbnQ8VD5bXTtcbi8qKlxuICogQGhpZGRlblxuICovXG5leHBvcnQgbmFtZXNwYWNlIEdyb3VwaW5ncyB7XG4gICAgLyoqIERldGVybWluZXMgaWYgdGhlIGdpdmVuIGdyb3VwIGVudHJ5IGlzIGEgc3RhbmRhbG9uZSB2YWx1ZSwgb3IgYSBncm91cGluZyBvZiBzdWItZW50cmllcy4gKi9cbiAgICBleHBvcnQgZnVuY3Rpb24gaXNFbGVtZW50R3JvdXA8VD4oZW50cnk6IGFueSk6IGVudHJ5IGlzIEdyb3VwRWxlbWVudDxUPiB7XG4gICAgICAgIHJldHVybiBMaXRlcmFscy5pc09iamVjdChlbnRyeSkgJiYgT2JqZWN0LmtleXMoZW50cnkpLmxlbmd0aCA9PSAyICYmIFwia2V5XCIgaW4gZW50cnkgJiYgXCJyb3dzXCIgaW4gZW50cnk7XG4gICAgfVxuXG4gICAgLyoqIERldGVybWluZXMgaWYgdGhlIGdpdmVuIGFycmF5IGlzIGEgZ3JvdXBpbmcgYXJyYXkuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGlzR3JvdXBpbmc8VD4oZW50cnk6IEdyb3VwaW5nPFQ+KTogZW50cnkgaXMgR3JvdXBFbGVtZW50PFQ+W10ge1xuICAgICAgICBmb3IgKGxldCBlbGVtZW50IG9mIGVudHJ5KSBpZiAoIWlzRWxlbWVudEdyb3VwKGVsZW1lbnQpKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLyoqIERldGVybWluZXMgaWYgdGhlIGdpdmVuIGFycmF5IGlzIGEgbGVhZiBhbmQgaGFzIG5vIHN1Ymdyb3VwaW5ncy4gKi9cbiAgICBleHBvcnQgZnVuY3Rpb24gaXNMZWFmPFQ+KGVudHJ5OiBHcm91cGluZzxUPik6IGVudHJ5IGlzIFRbXSB7XG4gICAgICAgIGZvciAobGV0IGVsZW1lbnQgb2YgZW50cnkpIGlmIChpc0VsZW1lbnRHcm91cChlbGVtZW50KSkgcmV0dXJuIGZhbHNlO1xuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8qKiBDb3VudCB0aGUgdG90YWwgbnVtYmVyIG9mIGVsZW1lbnRzIGluIGEgcmVjdXJzaXZlIGdyb3VwaW5nLiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiBjb3VudDxUPihlbGVtZW50czogR3JvdXBpbmc8VD4gfCBHcm91cEVsZW1lbnQ8VD4pOiBudW1iZXIge1xuICAgICAgICBpZiAoaXNFbGVtZW50R3JvdXAoZWxlbWVudHMpKSB7XG4gICAgICAgICAgICByZXR1cm4gY291bnQoZWxlbWVudHMucm93cyk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNHcm91cGluZyhlbGVtZW50cykpIHtcbiAgICAgICAgICAgIGxldCByZXN1bHQgPSAwO1xuICAgICAgICAgICAgZm9yIChsZXQgc3ViZ3JvdXAgb2YgZWxlbWVudHMpIHJlc3VsdCArPSBjb3VudChzdWJncm91cC5yb3dzKTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZWxlbWVudHMubGVuZ3RoO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIFJlY3Vyc2l2ZWx5IHNsaWNlIGEgZ3JvdXBpbmcsIHByZXNlcnZpbmcgdGhlIGdyb3VwIHN0cnVjdHVyZSB0aGF0IGNvbnRhaW5zIGVsZW1lbnRzIFtzdGFydC4uLmVuZCkuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIHNsaWNlPFQ+KGVsZW1lbnRzOiBHcm91cGluZzxUPiwgc3RhcnQ6IG51bWJlciwgZW5kOiBudW1iZXIpOiBHcm91cGluZzxUPiB7XG4gICAgICAgIGlmIChlbmQgPD0gc3RhcnQpIHJldHVybiBbXTtcbiAgICAgICAgaWYgKGlzTGVhZihlbGVtZW50cykpIHJldHVybiBlbGVtZW50cy5zbGljZShzdGFydCwgZW5kKTtcblxuICAgICAgICAvLyBGaW5kIHRoZSBmaXJzdCBncm91cCB0aGF0IGNvbnRhaW5zIGluZGV4IGBzdGFydGAuXG4gICAgICAgIGxldCBpbmRleCA9IDAsXG4gICAgICAgICAgICBzZWVuID0gMDtcbiAgICAgICAgd2hpbGUgKGluZGV4IDwgZWxlbWVudHMubGVuZ3RoICYmIHNlZW4gKyBjb3VudChlbGVtZW50c1tpbmRleF0pIDw9IHN0YXJ0KSB7XG4gICAgICAgICAgICBzZWVuICs9IGNvdW50KGVsZW1lbnRzW2luZGV4XSk7XG4gICAgICAgICAgICBpbmRleCsrO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gc3RhcnQgd2FzIGdyZWF0ZXIgdGhhbiB0aGUgZW50aXJlIGxlbmd0aCBvZiB0aGUgZ3JvdXBpbmdzLlxuICAgICAgICBpZiAoaW5kZXggPj0gZWxlbWVudHMubGVuZ3RoKSByZXR1cm4gW107XG5cbiAgICAgICAgY29uc3QgcmVzdWx0OiB7IGtleTogTGl0ZXJhbDsgcm93czogR3JvdXBpbmc8VD4gfVtdID0gW107XG4gICAgICAgIHdoaWxlIChpbmRleCA8IGVsZW1lbnRzLmxlbmd0aCAmJiBzZWVuIDwgZW5kKSB7XG4gICAgICAgICAgICBjb25zdCBncm91cCA9IGVsZW1lbnRzW2luZGV4XTtcbiAgICAgICAgICAgIGNvbnN0IGdyb3VwU2l6ZSA9IGNvdW50KGdyb3VwKTtcbiAgICAgICAgICAgIGNvbnN0IGdyb3VwU3RhcnQgPSBNYXRoLm1heChzZWVuLCBzdGFydCk7XG4gICAgICAgICAgICBjb25zdCBncm91cEVuZCA9IE1hdGgubWluKGdyb3VwU2l6ZSArIHNlZW4sIGVuZCk7XG5cbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgICAgICAgICBrZXk6IGdyb3VwLmtleSxcbiAgICAgICAgICAgICAgICByb3dzOiBzbGljZShncm91cC5yb3dzLCBncm91cFN0YXJ0IC0gc2VlbiwgZ3JvdXBFbmQgLSBzZWVuKSxcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBzZWVuICs9IGdyb3VwU2l6ZTtcbiAgICAgICAgICAgIGluZGV4Kys7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbn1cbiIsICIvKipcbiAqIEBtb2R1bGUgYXBpXG4gKi9cbi8qKlxuICogIEZ1bmN0aW9uYWwgcmV0dXJuIHR5cGUgZm9yIGVycm9yIGhhbmRsaW5nLlxuICogQGhpZGRlblxuICogKi9cbmV4cG9ydCBjbGFzcyBTdWNjZXNzPFQsIEU+IHtcbiAgICBwdWJsaWMgc3VjY2Vzc2Z1bDogdHJ1ZTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihwdWJsaWMgdmFsdWU6IFQpIHtcbiAgICAgICAgdGhpcy5zdWNjZXNzZnVsID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbWFwPFU+KGY6IChhOiBUKSA9PiBVKTogUmVzdWx0PFUsIEU+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBTdWNjZXNzKGYodGhpcy52YWx1ZSkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBmbGF0TWFwPFU+KGY6IChhOiBUKSA9PiBSZXN1bHQ8VSwgRT4pOiBSZXN1bHQ8VSwgRT4ge1xuICAgICAgICByZXR1cm4gZih0aGlzLnZhbHVlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbWFwRXJyPFU+KGY6IChlOiBFKSA9PiBVKTogUmVzdWx0PFQsIFU+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMgYXMgYW55IGFzIFJlc3VsdDxULCBVPjtcbiAgICB9XG5cbiAgICBwdWJsaWMgYmltYXA8VDIsIEUyPihzdWNjOiAoYTogVCkgPT4gVDIsIF9mYWlsOiAoYjogRSkgPT4gRTIpOiBSZXN1bHQ8VDIsIEUyPiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcChzdWNjKSBhcyBhbnk7XG4gICAgfVxuXG4gICAgcHVibGljIG9yRWxzZShfdmFsdWU6IFQpOiBUIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIGNhc3Q8VT4oKTogUmVzdWx0PFUsIEU+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMgYXMgYW55O1xuICAgIH1cblxuICAgIHB1YmxpYyBvckVsc2VUaHJvdyhfbWVzc2FnZT86IChlOiBFKSA9PiBzdHJpbmcpOiBUIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxufVxuXG4vKiogRnVuY3Rpb25hbCByZXR1cm4gdHlwZSBmb3IgZXJyb3IgaGFuZGxpbmcuXG4gKiBAaGlkZGVuXG4gKi9cbmV4cG9ydCBjbGFzcyBGYWlsdXJlPFQsIEU+IHtcbiAgICBwdWJsaWMgc3VjY2Vzc2Z1bDogZmFsc2U7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IocHVibGljIGVycm9yOiBFKSB7XG4gICAgICAgIHRoaXMuc3VjY2Vzc2Z1bCA9IGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBtYXA8VT4oX2Y6IChhOiBUKSA9PiBVKTogUmVzdWx0PFUsIEU+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMgYXMgYW55IGFzIEZhaWx1cmU8VSwgRT47XG4gICAgfVxuXG4gICAgcHVibGljIGZsYXRNYXA8VT4oX2Y6IChhOiBUKSA9PiBSZXN1bHQ8VSwgRT4pOiBSZXN1bHQ8VSwgRT4ge1xuICAgICAgICByZXR1cm4gdGhpcyBhcyBhbnkgYXMgRmFpbHVyZTxVLCBFPjtcbiAgICB9XG5cbiAgICBwdWJsaWMgbWFwRXJyPFU+KGY6IChlOiBFKSA9PiBVKTogUmVzdWx0PFQsIFU+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBGYWlsdXJlKGYodGhpcy5lcnJvcikpO1xuICAgIH1cblxuICAgIHB1YmxpYyBiaW1hcDxUMiwgRTI+KF9zdWNjOiAoYTogVCkgPT4gVDIsIGZhaWw6IChiOiBFKSA9PiBFMik6IFJlc3VsdDxUMiwgRTI+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwRXJyKGZhaWwpIGFzIGFueTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3JFbHNlKHZhbHVlOiBUKTogVCB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2FzdDxVPigpOiBSZXN1bHQ8VSwgRT4ge1xuICAgICAgICByZXR1cm4gdGhpcyBhcyBhbnk7XG4gICAgfVxuXG4gICAgcHVibGljIG9yRWxzZVRocm93KG1lc3NhZ2U/OiAoZTogRSkgPT4gc3RyaW5nKTogVCB7XG4gICAgICAgIGlmIChtZXNzYWdlKSB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSh0aGlzLmVycm9yKSk7XG4gICAgICAgIGVsc2UgdGhyb3cgbmV3IEVycm9yKFwiXCIgKyB0aGlzLmVycm9yKTtcbiAgICB9XG59XG5cbi8qKlxuICogQSBtb25hZGljIHJlc3VsdCB0eXBlIHdoaWNoIHN0b3JlcyBlaXRoZXIgXCJzdWNjZXNzXCIgb3IgXCJmYWlsdXJlXCIuIEFuIGFsdGVybmF0aXZlIGhhbmRsaW5nIGV4Y2VwdGlvbmFsIGJlaGF2aW9yXG4gKiBieSB1c2luZyB0aGUgcmV0dXJuIHZhbHVlIGluc3RlYWQgb2YgYW4gZXhjZXB0aW9uLlxuICovXG5leHBvcnQgdHlwZSBSZXN1bHQ8VCwgRT4gPSBTdWNjZXNzPFQsIEU+IHwgRmFpbHVyZTxULCBFPjtcblxuLyoqXG4gKiBAaGlkZGVuXG4gKiBNb25hZGljICdSZXN1bHQnIHR5cGUgd2hpY2ggZW5jYXBzdWxhdGVzIHdoZXRoZXIgYSBwcm9jZWR1cmUgc3VjY2VlZGVkIG9yIGZhaWxlZCwgYXMgd2VsbCBhcyBpdCdzIHJldHVybiB2YWx1ZS5cbiAqL1xuZXhwb3J0IG5hbWVzcGFjZSBSZXN1bHQge1xuICAgIC8qKiBDb25zdHJ1Y3QgYSBuZXcgc3VjY2VzcyByZXN1bHQgd3JhcHBpbmcgdGhlIGdpdmVuIHZhbHVlLiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiBzdWNjZXNzPFQsIEU+KHZhbHVlOiBUKTogUmVzdWx0PFQsIEU+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBTdWNjZXNzKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKiogQ29uc3RydWN0IGEgbmV3IGZhaWx1cmUgdmFsdWUgd3JhcHBpbmcgdGhlIGdpdmVuIGVycm9yLiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiBmYWlsdXJlPFQsIEU+KGVycm9yOiBFKTogUmVzdWx0PFQsIEU+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBGYWlsdXJlKGVycm9yKTtcbiAgICB9XG5cbiAgICAvKiogSm9pbiB0d28gcmVzdWx0cyB3aXRoIGEgYmktZnVuY3Rpb24gYW5kIHJldHVybiBhIG5ldyByZXN1bHQuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGZsYXRNYXAyPFQxLCBUMiwgTywgRT4oXG4gICAgICAgIGZpcnN0OiBSZXN1bHQ8VDEsIEU+LFxuICAgICAgICBzZWNvbmQ6IFJlc3VsdDxUMiwgRT4sXG4gICAgICAgIGY6IChhOiBUMSwgYjogVDIpID0+IFJlc3VsdDxPLCBFPlxuICAgICk6IFJlc3VsdDxPLCBFPiB7XG4gICAgICAgIGlmIChmaXJzdC5zdWNjZXNzZnVsKSB7XG4gICAgICAgICAgICBpZiAoc2Vjb25kLnN1Y2Nlc3NmdWwpIHJldHVybiBmKGZpcnN0LnZhbHVlLCBzZWNvbmQudmFsdWUpO1xuICAgICAgICAgICAgZWxzZSByZXR1cm4gZmFpbHVyZShzZWNvbmQuZXJyb3IpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZhaWx1cmUoZmlyc3QuZXJyb3IpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEpvaW4gdHdvIHJlc3VsdHMgd2l0aCBhIGJpLWZ1bmN0aW9uIGFuZCByZXR1cm4gYSBuZXcgcmVzdWx0LiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiBtYXAyPFQxLCBUMiwgTywgRT4oXG4gICAgICAgIGZpcnN0OiBSZXN1bHQ8VDEsIEU+LFxuICAgICAgICBzZWNvbmQ6IFJlc3VsdDxUMiwgRT4sXG4gICAgICAgIGY6IChhOiBUMSwgYjogVDIpID0+IE9cbiAgICApOiBSZXN1bHQ8TywgRT4ge1xuICAgICAgICByZXR1cm4gZmxhdE1hcDIoZmlyc3QsIHNlY29uZCwgKGEsIGIpID0+IHN1Y2Nlc3MoZihhLCBiKSkpO1xuICAgIH1cblxuICAgIC8qKiBNYXAgYSBmYWlsYWJsZSBmdW5jdGlvbiBvdmVyIGFsbCBlbGVtZW50cyBpbiB0aGUgbGlzdCwgcmV0dXJuaW5nIGVhcmx5IG9uIGZhaWx1cmUuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIG1hcEFsbDxULCBPLCBFPihpbnB1dDogSXRlcmFibGU8VD4sIGZ1bmM6IChpbnB1dDogVCkgPT4gUmVzdWx0PE8sIEU+KTogUmVzdWx0PE9bXSwgRT4ge1xuICAgICAgICBjb25zdCByZXN1bHQ6IE9bXSA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgaW5wdXQpIHtcbiAgICAgICAgICAgIGNvbnN0IG91dHB1dCA9IGZ1bmMoZWxlbWVudCk7XG4gICAgICAgICAgICBpZiAoIW91dHB1dC5zdWNjZXNzZnVsKSByZXR1cm4gb3V0cHV0LmNhc3QoKTtcblxuICAgICAgICAgICAgcmVzdWx0LnB1c2gob3V0cHV0LnZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBSZXN1bHQuc3VjY2VzcyhyZXN1bHQpO1xuICAgIH1cblxuICAgIC8qKiBDYXRjaCBhbnkgZXJyb3JzIGluIGEgY2FsbCwgcmV0dXJuaW5nIGEgcmVzdWx0IGluc3RlYWQuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIHRyeWluZzxUPihjYWxsOiAoKSA9PiBUKTogUmVzdWx0PFQsIEVycm9yPiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gUmVzdWx0LnN1Y2Nlc3MoY2FsbCgpKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBSZXN1bHQuZmFpbHVyZShlcnJvcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQ29udmVydCBhIHByb21pc2Ugd2hpY2ggbWF5IHRocm93IGludG8gYSBwcm9taXNlIHdoaWNoIHJldHVybnMgYSByZXN1bHQgb2YgdGhlIHN1Y2Nlc3NmdWwgdmFsdWUgb3IgYW4gZXJyb3IuICovXG4gICAgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFzeW5jPFQ+KHByb21pc2U6IFByb21pc2U8VD4pOiBQcm9taXNlPFJlc3VsdDxULCBFcnJvcj4+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBSZXN1bHQuc3VjY2Vzcyhhd2FpdCBwcm9taXNlKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBSZXN1bHQuZmFpbHVyZShlcnJvcik7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCAiaW1wb3J0IHsgUmVzdWx0IH0gZnJvbSBcImFwaS9yZXN1bHRcIjtcblxuLyoqIFN0YXRpYyBzZXQgZWxlbWVudCB3aGljaCBtYXRjaGVzIGV2ZXJ5dGhpbmcuICovXG5leHBvcnQgdHlwZSBFdmVyeXRoaW5nID0geyB0eXBlOiBcImV2ZXJ5dGhpbmdcIiB9O1xuLyoqIFN0YXRpYyBzZXQgZWxlbWVudCB3aGljaCBtYXRjaGVzIG5vdGhpbmcuICovXG5leHBvcnQgdHlwZSBOb3RoaW5nID0geyB0eXBlOiBcIm5vdGhpbmdcIiB9O1xuLyoqIFNldCB3aGljaCBtYXRjaGVzIHRoZSBuZWdhdGlvbiBvZiBhIHNldC4gKi9cbmV4cG9ydCB0eXBlIE5lZ2F0ZWQ8VD4gPSB7IHR5cGU6IFwibmVnYXRlZFwiOyB2YWx1ZTogU2V0PFQ+IH07XG4vKiogU2V0IHdoaWNoIG1hdGNoZXMgYW4gYWN0dWFsIHNldCBvZiB2YWx1ZXMuICAqL1xuZXhwb3J0IHR5cGUgQXRvbTxUPiA9IHsgdHlwZTogXCJhdG9tXCI7IHZhbHVlOiBTZXQ8VD4gfTtcblxuLyoqIEFic3RyYWN0IGZpbHRlciB0eXBlIHdoaWNoIHJlcHJlc2VudHMgdGhlIHJlc3VsdHMgb2YgYXBwbHlpbmcgZmlsdGVyIG9wZXJhdGlvbnMgdG8gdGhlIGRhdGEgc3RvcmUuICovXG5leHBvcnQgdHlwZSBGaWx0ZXI8VD4gPSBFdmVyeXRoaW5nIHwgTm90aGluZyB8IEF0b208VD4gfCBOZWdhdGVkPFQ+O1xuXG4vKiogVXRpbGl0eSBmdW5jdGlvbnMgZm9yIGVmZmljaWVudGx5IG9wZXJhdGluZyBvbiBmaWx0ZXJzLiAqL1xuZXhwb3J0IG5hbWVzcGFjZSBGaWx0ZXJzIHtcbiAgICAvKiogU3RhdGljIGZpbHRlciB3aGljaCBtYXRjaGVzIGV2ZXJ5dGhpbmcuICovXG4gICAgZXhwb3J0IGNvbnN0IEVWRVJZVEhJTkc6IEV2ZXJ5dGhpbmcgPSB7IHR5cGU6IFwiZXZlcnl0aGluZ1wiIH07XG4gICAgLyoqIFN0YXRpYyBmaWx0ZXIgd2hpY2ggbWF0Y2hlcyBub3RoaW5nLiAqL1xuICAgIGV4cG9ydCBjb25zdCBOT1RISU5HOiBOb3RoaW5nID0geyB0eXBlOiBcIm5vdGhpbmdcIiB9O1xuICAgIC8qKiBFbXB0eSBzZXQgY29uc3RhbnQuICovXG4gICAgZXhwb3J0IGNvbnN0IEVNUFRZX1NFVDogU2V0PGFueT4gPSBuZXcgU2V0KCk7XG5cbiAgICAvKiogQ29uc3RydWN0IGEgbmV3IGF0b20gZmlsdGVyLiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiBhdG9tPFQ+KHNldDogU2V0PFQ+KTogRmlsdGVyPFQ+IHtcbiAgICAgICAgaWYgKHNldC5zaXplID09IDApIHJldHVybiBOT1RISU5HO1xuXG4gICAgICAgIHJldHVybiB7IHR5cGU6IFwiYXRvbVwiLCB2YWx1ZTogc2V0IH07XG4gICAgfVxuXG4gICAgLyoqIENvbnN0cnVjdCBhIGZpbHRlciB0aGF0IG1hdGNoZXMgZXZlcnl0aGluZyBvciBub3RoaW5nLiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiBjb25zdGFudDxUPih2YWx1ZTogYm9vbGVhbik6IEZpbHRlcjxUPiB7XG4gICAgICAgIGlmICh2YWx1ZSkgcmV0dXJuIEVWRVJZVEhJTkc7XG4gICAgICAgIGVsc2UgcmV0dXJuIE5PVEhJTkc7XG4gICAgfVxuXG4gICAgLyoqIENvbnN0cnVjdCBhIG5ldyBhdG9tIGZpbHRlciB3aGljaCBpcyBOT1RISU5HIGlmIHNldCBpcyB1bmRlZmluZWQuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIG51bGxhYmxlQXRvbTxUPihzZXQ6IFNldDxUPiB8IHVuZGVmaW5lZCk6IEZpbHRlcjxUPiB7XG4gICAgICAgIHJldHVybiBzZXQgIT09IHVuZGVmaW5lZCA/IGF0b20oc2V0KSA6IE5PVEhJTkc7XG4gICAgfVxuXG4gICAgLyoqIENvbnN0cnVjdCBhIG5lZ2F0ZWQgYXRvbSBmaWx0ZXIuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIG5lZ2F0ZWQ8VD4oc2V0OiBTZXQ8VD4pOiBGaWx0ZXI8VD4ge1xuICAgICAgICBpZiAoc2V0LnNpemUgPT0gMCkgcmV0dXJuIEVWRVJZVEhJTkc7XG5cbiAgICAgICAgcmV0dXJuIHsgdHlwZTogXCJuZWdhdGVkXCIsIHZhbHVlOiBzZXQgfTtcbiAgICB9XG5cbiAgICAvKiogUHJvZHVjZXMgdGhlIG5lZ2F0aW9uIG9mIGEgZmlsdGVyLiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiBuZWdhdGU8VD4oZmlsdGVyOiBGaWx0ZXI8VD4pOiBGaWx0ZXI8VD4ge1xuICAgICAgICBzd2l0Y2ggKGZpbHRlci50eXBlKSB7XG4gICAgICAgICAgICBjYXNlIFwiZXZlcnl0aGluZ1wiOlxuICAgICAgICAgICAgICAgIHJldHVybiBOT1RISU5HO1xuICAgICAgICAgICAgY2FzZSBcIm5vdGhpbmdcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gRVZFUllUSElORztcbiAgICAgICAgICAgIGNhc2UgXCJhdG9tXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5lZ2F0ZWQoZmlsdGVyLnZhbHVlKTtcbiAgICAgICAgICAgIGNhc2UgXCJuZWdhdGVkXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGF0b20oZmlsdGVyLnZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBEZXRlcm1pbmUgaWYgdGhlIGdpdmVuIGZpbHRlciBpcyBkZWZpbml0aXZlbHkgY3VycmVudGx5IGVtcHR5LiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiBlbXB0eTxUPihmaWx0ZXI6IEZpbHRlcjxUPik6IGJvb2xlYW4ge1xuICAgICAgICBzd2l0Y2ggKGZpbHRlci50eXBlKSB7XG4gICAgICAgICAgICBjYXNlIFwiZXZlcnl0aGluZ1wiOlxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIGNhc2UgXCJuZWdhdGVkXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgY2FzZSBcImF0b21cIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gZmlsdGVyLnZhbHVlLnNpemUgPT0gMDtcbiAgICAgICAgICAgIGNhc2UgXCJub3RoaW5nXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogUmVzb2x2ZSBhIHRvcC1sZXZlbCBmaWx0ZXIgd2l0aCB0aGUgc2V0IG9mIGFsbCBhdmFpbGFibGUgb2JqZWN0cy4gKi9cbiAgICBleHBvcnQgZnVuY3Rpb24gcmVzb2x2ZTxUPihmaWx0ZXI6IEZpbHRlcjxUPiwgZXZlcnl0aGluZzogU2V0PFQ+KTogU2V0PFQ+IHtcbiAgICAgICAgc3dpdGNoIChmaWx0ZXIudHlwZSkge1xuICAgICAgICAgICAgY2FzZSBcImV2ZXJ5dGhpbmdcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gZXZlcnl0aGluZztcbiAgICAgICAgICAgIGNhc2UgXCJub3RoaW5nXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEVNUFRZX1NFVDtcbiAgICAgICAgICAgIGNhc2UgXCJhdG9tXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZpbHRlci52YWx1ZTtcbiAgICAgICAgICAgIGNhc2UgXCJuZWdhdGVkXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNldEludGVyc2VjdE5lZ2F0aW9uKGV2ZXJ5dGhpbmcsIGZpbHRlci52YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogSW50ZXJzZWN0IGFuIGl0ZXJhYmxlIG9mIGZpbHRlcnMuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGludGVyc2VjdDxUPihlbGVtZW50czogSXRlcmFibGU8RmlsdGVyPFQ+Pik6IEZpbHRlcjxUPiB7XG4gICAgICAgIHJldHVybiBsYXp5SW50ZXJzZWN0KGVsZW1lbnRzLCAoeCkgPT4geCk7XG4gICAgfVxuXG4gICAgLyoqIEludGVyc2VjdCBmaWx0ZXJzIGxhemlseSwgc2hvcnQtY2lyY3VpdGluZyBpZiB0aGUgaW50ZXJzZWN0aW9uIHdvdWxkIHByb2R1Y2UgTk9USElORy4gKi9cbiAgICBleHBvcnQgZnVuY3Rpb24gbGF6eUludGVyc2VjdDxJLCBUPihcbiAgICAgICAgZWxlbWVudHM6IEl0ZXJhYmxlPEk+LFxuICAgICAgICBwcm9kdWNlOiAoaW5wdXQ6IEkpID0+IEZpbHRlcjxUPiB8IHVuZGVmaW5lZFxuICAgICk6IEZpbHRlcjxUPiB7XG4gICAgICAgIHJldHVybiBsYXp5RmFpbGFibGVJbnRlcnNlY3Rpb24oZWxlbWVudHMsICh4KSA9PiBSZXN1bHQuc3VjY2Vzcyhwcm9kdWNlKHgpKSkub3JFbHNlVGhyb3coKTtcbiAgICB9XG5cbiAgICAvKiogSW50ZXJzZWN0IGZpbHRlcnMgbGF6aWx5LCBzaG9ydC1jaXJjdWl0aW5nIGlmIHRoZSBpbnRlcnNlY3Rpb24gd291bGQgcHJvZHVjZSBOT1RISU5HLiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiBsYXp5RmFpbGFibGVJbnRlcnNlY3Rpb248SSwgVCwgRT4oXG4gICAgICAgIGVsZW1lbnRzOiBJdGVyYWJsZTxJPixcbiAgICAgICAgcHJvZHVjZTogKGlucHV0OiBJKSA9PiBSZXN1bHQ8RmlsdGVyPFQ+IHwgdW5kZWZpbmVkLCBFPlxuICAgICk6IFJlc3VsdDxGaWx0ZXI8VD4sIEU+IHtcbiAgICAgICAgY29uc3QgYXRvbXM6IFNldDxUPltdID0gW107XG4gICAgICAgIGNvbnN0IG5lZ2F0aW9uczogU2V0PFQ+W10gPSBbXTtcbiAgICAgICAgZm9yIChsZXQgZWxlbWVudCBvZiBlbGVtZW50cykge1xuICAgICAgICAgICAgY29uc3QgbWF5YmVGaWx0ZXIgPSBwcm9kdWNlKGVsZW1lbnQpO1xuICAgICAgICAgICAgaWYgKCFtYXliZUZpbHRlci5zdWNjZXNzZnVsKSByZXR1cm4gbWF5YmVGaWx0ZXIuY2FzdCgpO1xuXG4gICAgICAgICAgICBjb25zdCBmaWx0ZXIgPSBtYXliZUZpbHRlci52YWx1ZTtcbiAgICAgICAgICAgIGlmIChmaWx0ZXIgPT09IHVuZGVmaW5lZCkgY29udGludWU7XG5cbiAgICAgICAgICAgIC8vIEVtcHR5IGZpbHRlcnMgd2lsbCBwcm9kdWNlIGFuIGVtcHR5IGludGVyc2VjdGlvbi5cbiAgICAgICAgICAgIGlmIChlbXB0eShmaWx0ZXIpKSByZXR1cm4gUmVzdWx0LnN1Y2Nlc3MoTk9USElORyk7XG4gICAgICAgICAgICAvLyBFVkVSWVRISU5HIGZpbHRlcnMgYXJlIHJlZHVuZGFudCBpbiBBTkRzLCBza2lwIHRoZW0uXG4gICAgICAgICAgICBpZiAoZmlsdGVyLnR5cGUgPT09IFwiZXZlcnl0aGluZ1wiKSBjb250aW51ZTtcblxuICAgICAgICAgICAgLy8gV2lsbCBvbmx5IGJlIGxlZnQgd2l0aCBhdG9tcyBvciBuZWdhdGlvbnMuXG4gICAgICAgICAgICBpZiAoZmlsdGVyLnR5cGUgPT0gXCJhdG9tXCIpIGF0b21zLnB1c2goZmlsdGVyLnZhbHVlKTtcbiAgICAgICAgICAgIGVsc2UgaWYgKGZpbHRlci50eXBlID09IFwibmVnYXRlZFwiKSBuZWdhdGlvbnMucHVzaChmaWx0ZXIudmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gV2Ugc3RhcnQgd2l0aCBzb21ldGhpbmcgb2YgdGhlIGZvcm0gYSAmJiBiICYmICFjICYmICFkLlxuICAgICAgICAvLyBJZiBubyB0ZXJtcywgdGhlbiBldmVyeXRoaW5nIHdhcyBFVkVSWVRISU5HIHNvIHJldHVybiB0aGF0LlxuICAgICAgICAvLyBJZiBvbmx5IGF0b21zLCBqdXN0IGludGVyc2VjdCB0aGVtIChhICYmIGIpLlxuICAgICAgICAvLyBJZiBvbmx5IG5lZ2F0aW9ucywgdGhlbiByZXdyaXRlICFjICYmICFkID0+ICEoYyB8fCBkKSBhbmQgcmV0dXJuIG5lZ2F0ZWQoYyB8fCBkKS5cbiAgICAgICAgLy8gSWYgYm90aCwgY29tcHV0ZSB4ID0gKGEgJiYgYikgYW5kIHkgPSAoYyB8fCBkKSwgYW5kIHRoZW4gY29tcHV0ZSB4ICYmICF5LlxuXG4gICAgICAgIGlmIChhdG9tcy5sZW5ndGggPT0gMCAmJiBuZWdhdGlvbnMubGVuZ3RoID09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBSZXN1bHQuc3VjY2VzcyhFVkVSWVRISU5HKTtcbiAgICAgICAgfSBlbHNlIGlmIChhdG9tcy5sZW5ndGggPiAwICYmIG5lZ2F0aW9ucy5sZW5ndGggPT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIFJlc3VsdC5zdWNjZXNzKGF0b20oc2V0SW50ZXJzZWN0KGF0b21zKSkpO1xuICAgICAgICB9IGVsc2UgaWYgKGF0b21zLmxlbmd0aCA9PSAwICYmIG5lZ2F0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gUmVzdWx0LnN1Y2Nlc3MobmVnYXRlZChzZXRVbmlvbihuZWdhdGlvbnMpKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gUmVzdWx0LnN1Y2Nlc3MoRmlsdGVycy5hdG9tKHNldEludGVyc2VjdE5lZ2F0aW9uKHNldEludGVyc2VjdChhdG9tcyksIHNldFVuaW9uKG5lZ2F0aW9ucykpKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogVW5pb24gZmlsdGVycywgcHJvZHVjaW5nIGEgc2luZ2xlIHJlc3VsdCBmaWx0ZXIuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIHVuaW9uPFQ+KGZpbHRlcnM6IEl0ZXJhYmxlPEZpbHRlcjxUPj4pOiBGaWx0ZXI8VD4ge1xuICAgICAgICByZXR1cm4gbGF6eVVuaW9uKGZpbHRlcnMsICh4KSA9PiB4KTtcbiAgICB9XG5cbiAgICAvKiogVW5pb24gZmlsdGVycyBsYXppbHksIHNob3J0LWNpcmN1aXRpbmcgaWYgdGhlIHVuaW9uIHdvdWxkIHByb2R1Y2UgRVZFUllUSElORy4gKi9cbiAgICBleHBvcnQgZnVuY3Rpb24gbGF6eVVuaW9uPEksIFQ+KGVsZW1lbnRzOiBJdGVyYWJsZTxJPiwgcHJvZHVjZTogKGlucHV0OiBJKSA9PiBGaWx0ZXI8VD4gfCB1bmRlZmluZWQpOiBGaWx0ZXI8VD4ge1xuICAgICAgICByZXR1cm4gbGF6eUZhaWxhYmxlVW5pb24oZWxlbWVudHMsICh4KSA9PiBSZXN1bHQuc3VjY2Vzcyhwcm9kdWNlKHgpKSkub3JFbHNlVGhyb3coKTtcbiAgICB9XG5cbiAgICAvKiogVW5pb24gZmlsdGVycyBsYXppbHksIHNob3J0LWNpcmN1aXRpbmcgaWYgdGhlIHVuaW9uIHdvdWxkIHByb2R1Y2UgRVZFUllUSElORy4gKi9cbiAgICBleHBvcnQgZnVuY3Rpb24gbGF6eUZhaWxhYmxlVW5pb248SSwgVCwgRT4oXG4gICAgICAgIGVsZW1lbnRzOiBJdGVyYWJsZTxJPixcbiAgICAgICAgcHJvZHVjZTogKGlucHV0OiBJKSA9PiBSZXN1bHQ8RmlsdGVyPFQ+IHwgdW5kZWZpbmVkLCBFPlxuICAgICk6IFJlc3VsdDxGaWx0ZXI8VD4sIEU+IHtcbiAgICAgICAgY29uc3QgYXRvbXM6IFNldDxUPltdID0gW107XG4gICAgICAgIGNvbnN0IG5lZ2F0aW9uczogU2V0PFQ+W10gPSBbXTtcbiAgICAgICAgZm9yIChsZXQgZWxlbWVudCBvZiBlbGVtZW50cykge1xuICAgICAgICAgICAgY29uc3QgbWF5YmVGaWx0ZXIgPSBwcm9kdWNlKGVsZW1lbnQpO1xuICAgICAgICAgICAgaWYgKCFtYXliZUZpbHRlci5zdWNjZXNzZnVsKSByZXR1cm4gbWF5YmVGaWx0ZXIuY2FzdCgpO1xuXG4gICAgICAgICAgICBjb25zdCBmaWx0ZXIgPSBtYXliZUZpbHRlci52YWx1ZTtcbiAgICAgICAgICAgIGlmIChmaWx0ZXIgPT09IHVuZGVmaW5lZCkgY29udGludWU7XG5cbiAgICAgICAgICAgIC8vIEVWRVJZVEhJTkcgZmlsdGVycyB3aWxsIHByb2R1Y2UgZXZlcnl0aGluZyBhbHdheXMuXG4gICAgICAgICAgICBpZiAoZmlsdGVyLnR5cGUgPT09IFwiZXZlcnl0aGluZ1wiKSByZXR1cm4gUmVzdWx0LnN1Y2Nlc3MoRVZFUllUSElORyk7XG4gICAgICAgICAgICAvLyBFbXB0eSBmaWx0ZXJzIGFyZSByZWR1bmRhbnQuXG4gICAgICAgICAgICBpZiAoZW1wdHkoZmlsdGVyKSkgY29udGludWU7XG5cbiAgICAgICAgICAgIC8vIFdpbGwgb25seSBiZSBsZWZ0IHdpdGggYXRvbXMgb3IgbmVnYXRpb25zLlxuICAgICAgICAgICAgaWYgKGZpbHRlci50eXBlID09IFwiYXRvbVwiKSBhdG9tcy5wdXNoKGZpbHRlci52YWx1ZSk7XG4gICAgICAgICAgICBlbHNlIGlmIChmaWx0ZXIudHlwZSA9PSBcIm5lZ2F0ZWRcIikgbmVnYXRpb25zLnB1c2goZmlsdGVyLnZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE9yIGlzIGEgYml0IGhhcmRlciB0aGFuIEFORCBzaW5jZSB5b3UgY2FuIGVuZCB1cCB3aXRoIHNjZW5hcmlvcyBsaWtlIGEgfHwgIWIsIHdoaWNoIGFyZVxuICAgICAgICAvLyBub3QgY29tcHV0YWJsZSBkaXJlY3RseS4gSG93ZXZlciwgd2UgY2FuIGRvIGJvb2xlYW4gbG9naWMgdG8gYWx3YXlzIHByb2R1Y2UgYSBzaW5nbGVcbiAgICAgICAgLy8gc2V0LlxuICAgICAgICAvLyBJZiBub3RoaW5nID0+IG5vdGhpbmcsIG5vIG5vbi1lbXB0eSBmaWx0ZXJzLlxuICAgICAgICAvLyBJZiBhdG9tcyBidXQgbm8gbmVnYXRpb25zIChhIHx8IGIgfHwgYykgPT4gY29tcHV0ZSB1bmlvbi5cbiAgICAgICAgLy8gSWYgbmVnYXRpb25zIGJ1dCBubyBhdG9tcyAoIWEgfHwgIWIgfHwgIWMpID0+IHJld3JpdGUgYXMgIShhICYmIGIgJiYgYykuXG4gICAgICAgIC8vIElmIGJvdGg6IChhIHx8IGIgfHwgIWMgfHwgIWQpID0+IGNvbWJpbmUgZWFjaCBwYXJ0IGludG8gKGEgfHwgYikgfHwgKCFjIHx8ICFkKSA9PiAoYSB8fCBiKSB8fCAhKGMgJiYgZCkgPT4gZSB8fCAhZiA9PiAhKCFlICYmIGYpIHdoaWNoXG4gICAgICAgIC8vIGNhbiBiZSBjb21wdXRlZCB1c2luZyBpbnRlcnNlY3Rpb24gbG9naWMuXG5cbiAgICAgICAgaWYgKGF0b21zLmxlbmd0aCA9PSAwICYmIG5lZ2F0aW9ucy5sZW5ndGggPT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIFJlc3VsdC5zdWNjZXNzKE5PVEhJTkcpO1xuICAgICAgICB9IGVsc2UgaWYgKGF0b21zLmxlbmd0aCA+IDAgJiYgbmVnYXRpb25zLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gUmVzdWx0LnN1Y2Nlc3MoRmlsdGVycy5hdG9tKHNldFVuaW9uKGF0b21zKSkpO1xuICAgICAgICB9IGVsc2UgaWYgKGF0b21zLmxlbmd0aCA9PSAwICYmIG5lZ2F0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gUmVzdWx0LnN1Y2Nlc3MoRmlsdGVycy5uZWdhdGVkKHNldEludGVyc2VjdChuZWdhdGlvbnMpKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gUmVzdWx0LnN1Y2Nlc3MobmVnYXRlZChzZXRJbnRlcnNlY3ROZWdhdGlvbihzZXRJbnRlcnNlY3QobmVnYXRpb25zKSwgc2V0VW5pb24oYXRvbXMpKSkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEVmZmljaWVudGx5IGNvbXB1dGUgdGhlIGludGVyc2VjdGlvbiBvZiBzZXRzLiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiBzZXRJbnRlcnNlY3Q8VD4oc2V0czogU2V0PFQ+W10pOiBTZXQ8VD4ge1xuICAgICAgICBpZiAoc2V0cy5sZW5ndGggPT0gMCkgcmV0dXJuIG5ldyBTZXQoKTtcbiAgICAgICAgZWxzZSBpZiAoc2V0cy5sZW5ndGggPT0gMSkgcmV0dXJuIHNldHNbMF07XG5cbiAgICAgICAgLy8gU29ydCBieSBzaXplIGFuZCBjb21iaW5lIHNtYWxsZXN0IGFuZCBsYXJnZXN0IHNldCByZXBlYXRlZGx5LlxuICAgICAgICBsZXQgc29ydGVkID0gKFtdIGFzIFNldDxUPltdKS5jb25jYXQoc2V0cykuc29ydCgoYSwgYikgPT4gYS5zaXplIC0gYi5zaXplKTtcblxuICAgICAgICB3aGlsZSAoc29ydGVkLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBTZXQ8VD4oKTtcbiAgICAgICAgICAgIGNvbnN0IGxhcmdlc3QgPSBzb3J0ZWQucG9wKCkhO1xuXG4gICAgICAgICAgICBmb3IgKGxldCBlbGVtZW50IG9mIHNvcnRlZFswXSkge1xuICAgICAgICAgICAgICAgIGlmIChsYXJnZXN0LmhhcyhlbGVtZW50KSkgcmVzdWx0LmFkZChlbGVtZW50KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc29ydGVkWzBdID0gcmVzdWx0O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHNvcnRlZFswXTtcbiAgICB9XG5cbiAgICAvKiogRWZmaWNpZW50bHkgY29tcHV0ZSB0aGUgdW5pb24gb2Ygc2V0cy4gKi9cbiAgICBleHBvcnQgZnVuY3Rpb24gc2V0VW5pb248VD4oc2V0czogU2V0PFQ+W10pOiBTZXQ8VD4ge1xuICAgICAgICBpZiAoc2V0cy5sZW5ndGggPT0gMCkgcmV0dXJuIG5ldyBTZXQoKTtcbiAgICAgICAgZWxzZSBpZiAoc2V0cy5sZW5ndGggPT0gMSkgcmV0dXJuIHNldHNbMF07XG5cbiAgICAgICAgLy8gSSdtIG5vdCBzdXJlIGlmIHRoZXJlIGlzIGFueSB1c2VmdWwgb3B0aW1pemF0aW9uIGZvciBzZXQgdW5pb25zLCBzbyBqdXN0IGFkZCB0aGVtIGFsbCBJIGd1ZXNzLlxuICAgICAgICBjb25zdCByZXN1bHQgPSBuZXcgU2V0PFQ+KCk7XG4gICAgICAgIGZvciAoY29uc3Qgc2V0IG9mIHNldHMpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiBzZXQpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQuYWRkKGVsZW1lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKiogRWZmaWNpZW50bHkgY29tcHV0ZSBhdG9tICYmICFuZWdhdGVkLiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiBzZXRJbnRlcnNlY3ROZWdhdGlvbjxUPihhdG9tOiBTZXQ8VD4sIG5lZ2F0ZWQ6IFNldDxUPik6IFNldDxUPiB7XG4gICAgICAgIGlmIChhdG9tLnNpemUgPiBuZWdhdGVkLnNpemUpIHtcbiAgICAgICAgICAgIC8vIFRPRE86IFdvdWxkIGJlIG5pY2UgdG8gYXZvaWQgdGhlIGNvcHksIHNpbmNlIEknbSBub3Qgc3VyZSBpdCdzIGFueSBmYXN0ZXIgd2l0aCB0aGUgY29weS5cbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBTZXQoYXRvbSk7XG4gICAgICAgICAgICBmb3IgKGxldCBlbGVtZW50IG9mIG5lZ2F0ZWQpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQuZGVsZXRlKGVsZW1lbnQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9IC8qIGF0b20uc2l6ZSA8IG5lZ2F0aW9uLnNpemUgKi8gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBuZXcgU2V0PFQ+KCk7XG4gICAgICAgICAgICBmb3IgKGxldCBlbGVtZW50IG9mIGF0b20pIHtcbiAgICAgICAgICAgICAgICBpZiAobmVnYXRlZC5oYXMoZWxlbWVudCkpIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQoZWxlbWVudCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCAiaW1wb3J0IHsgTGl0ZXJhbCwgTGl0ZXJhbHMgfSBmcm9tIFwiZXhwcmVzc2lvbi9saXRlcmFsXCI7XG5pbXBvcnQgeyBGaWx0ZXJzIH0gZnJvbSBcIi4vZmlsdGVyc1wiO1xuXG4vKiogQ29tcGFyaXNvbiBvcGVyYXRvcnMgd2hpY2ggeWllbGQgdHJ1ZS9mYWxzZS4gKi9cbmV4cG9ydCB0eXBlIENvbXBhcmVPcCA9IFwiPlwiIHwgXCI+PVwiIHwgXCI8PVwiIHwgXCI8XCIgfCBcIj1cIiB8IFwiIT1cIjtcbi8qKiBBcml0aG1ldGljIG9wZXJhdG9ycyB3aGljaCB5aWVsZCBudW1iZXJzIGFuZCBvdGhlciB2YWx1ZXMuICovXG5leHBvcnQgdHlwZSBBcml0aG1ldGljT3AgPSBcIitcIiB8IFwiLVwiIHwgXCIqXCIgfCBcIi9cIiB8IFwiJVwiIHwgXCImXCIgfCBcInxcIjtcbi8qKiBJbmRleCBhIHZhbHVlIGludG8gYW5vdGhlciB2YWx1ZS4gKi9cbmV4cG9ydCB0eXBlIExvZ2ljYWxPcCA9IFwiaW5kZXhcIjtcbi8qKiBBbGwgdmFsaWQgYmluYXJ5IG9wZXJhdG9ycy4gKi9cbmV4cG9ydCB0eXBlIEJpbmFyeU9wID0gQ29tcGFyZU9wIHwgQXJpdGhtZXRpY09wIHwgTG9naWNhbE9wO1xuXG5leHBvcnQgdHlwZSBFeHByZXNzaW9uID1cbiAgICB8IExpdGVyYWxFeHByZXNzaW9uXG4gICAgfCBWYXJpYWJsZUV4cHJlc3Npb25cbiAgICB8IExpc3RFeHByZXNzaW9uXG4gICAgfCBPYmplY3RFeHByZXNzaW9uXG4gICAgfCBCaW5hcnlPcEV4cHJlc3Npb25cbiAgICB8IEZ1bmN0aW9uRXhwcmVzc2lvblxuICAgIHwgTGFtYmRhRXhwcmVzc2lvblxuICAgIHwgTmVnYXRlZEV4cHJlc3Npb247XG5cbi8qKiBMaXRlcmFsIHJlcHJlc2VudGF0aW9uIG9mIHNvbWUgZmllbGQgdHlwZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGl0ZXJhbEV4cHJlc3Npb24ge1xuICAgIHR5cGU6IFwibGl0ZXJhbFwiO1xuICAgIHZhbHVlOiBMaXRlcmFsO1xufVxuXG4vKiogQSB2YXJpYWJsZSBmaWVsZCBmb3IgYSB2YXJpYWJsZSB3aXRoIGEgZ2l2ZW4gbmFtZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmFyaWFibGVFeHByZXNzaW9uIHtcbiAgICB0eXBlOiBcInZhcmlhYmxlXCI7XG4gICAgbmFtZTogc3RyaW5nO1xufVxuXG4vKiogQSBsaXN0IGxpdGVyYWwsIHdoaWNoIGlzIGFuIG9yZGVyZWQgY29sbGVjdGlvbiBvZiBmaWVsZHMuICovXG5leHBvcnQgaW50ZXJmYWNlIExpc3RFeHByZXNzaW9uIHtcbiAgICB0eXBlOiBcImxpc3RcIjtcbiAgICB2YWx1ZXM6IEV4cHJlc3Npb25bXTtcbn1cblxuLyoqIEFuIG9iamVjdCBsaXRlcmFsLCB3aGljaCBpcyBhIG1hcHBpbmcgb2YgbmFtZSB0byBmaWVsZC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT2JqZWN0RXhwcmVzc2lvbiB7XG4gICAgdHlwZTogXCJvYmplY3RcIjtcbiAgICB2YWx1ZXM6IFJlY29yZDxzdHJpbmcsIEV4cHJlc3Npb24+O1xufVxuXG4vKiogQSBiaW5hcnkgb3BlcmF0b3IgZXhwcmVzc2lvbiB3aGljaCBjb21iaW5lcyB0d28gc3Vibm9kZXMgc29tZWhvdy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmluYXJ5T3BFeHByZXNzaW9uIHtcbiAgICB0eXBlOiBcImJpbmFyeW9wXCI7XG4gICAgbGVmdDogRXhwcmVzc2lvbjtcbiAgICByaWdodDogRXhwcmVzc2lvbjtcbiAgICBvcDogQmluYXJ5T3A7XG59XG5cbi8qKiBBIGZ1bmN0aW9uIGV4cHJlc3Npb24gd2hpY2ggY2FsbHMgYSBmdW5jdGlvbiBvbiAwIG9yIG1vcmUgYXJndW1lbnRzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBGdW5jdGlvbkV4cHJlc3Npb24ge1xuICAgIHR5cGU6IFwiZnVuY3Rpb25cIjtcbiAgICAvKiogRWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBmdW5jdGlvbiBiZWluZyBjYWxsZWQgb3IgYSBGdW5jdGlvbiBvYmplY3QuICovXG4gICAgZnVuYzogRXhwcmVzc2lvbjtcbiAgICAvKiogVGhlIGxpc3Qgb2YgYXJndW1lbnRzIGJlaW5nIHBhc3NlZCB0byB0aGUgZnVuY3Rpb24uICovXG4gICAgYXJndW1lbnRzOiBFeHByZXNzaW9uW107XG59XG5cbi8qKiBBbiBpbmxpbmUgZnVuY3Rpb24gYWNjZXB0aW5nIG9uZSBvciBtb3JlIGFyZ3VtZW50cyBhbmQgcHJvZHVjaW5nIGEgdmFsdWUuICovXG5leHBvcnQgaW50ZXJmYWNlIExhbWJkYUV4cHJlc3Npb24ge1xuICAgIHR5cGU6IFwibGFtYmRhXCI7XG4gICAgLyoqIEFuIG9yZGVyZWQgbGlzdCBvZiBuYW1lZCBhcmd1bWVudHMuICovXG4gICAgYXJndW1lbnRzOiBzdHJpbmdbXTtcbiAgICAvKiogVGhlIGZpZWxkIHdoaWNoIHdpbGwgYmUgZXZhbHVhdGVkIHVzaW5nIHRoZSBhcmd1bWVudHMgaW4gY29udGV4dC4gKi9cbiAgICB2YWx1ZTogRXhwcmVzc2lvbjtcbn1cblxuLyoqIEFuIGV4cHJlc3Npb24gd2hpY2ggbmVnYXRlcyB0aGUgdmFsdWUgb2YgdGhlIG9yaWdpbmFsIGZpZWxkLiAqL1xuZXhwb3J0IGludGVyZmFjZSBOZWdhdGVkRXhwcmVzc2lvbiB7XG4gICAgdHlwZTogXCJuZWdhdGVkXCI7XG5cbiAgICAvKiogVGhlIGNoaWxkIGZpZWxkIHRvIG5lZ2F0ZS4gKi9cbiAgICBjaGlsZDogRXhwcmVzc2lvbjtcbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBFeHByZXNzaW9ucyB7XG4gICAgLyoqIFRoZSBpbXBsaWNpdCBmaWVsZCByZWZlcmVuY2luZyB0aGUgY3VycmVudCBmaWVsZC4gKi9cbiAgICBleHBvcnQgY29uc3QgUk9XOiBzdHJpbmcgPSBcIiRyb3dcIjtcblxuICAgIGV4cG9ydCBmdW5jdGlvbiB2YXJpYWJsZShuYW1lOiBzdHJpbmcpOiBWYXJpYWJsZUV4cHJlc3Npb24ge1xuICAgICAgICByZXR1cm4geyB0eXBlOiBcInZhcmlhYmxlXCIsIG5hbWUgfTtcbiAgICB9XG5cbiAgICBleHBvcnQgZnVuY3Rpb24gbGl0ZXJhbCh2YWx1ZTogTGl0ZXJhbCk6IExpdGVyYWxFeHByZXNzaW9uIHtcbiAgICAgICAgcmV0dXJuIHsgdHlwZTogXCJsaXRlcmFsXCIsIHZhbHVlIH07XG4gICAgfVxuXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGJpbmFyeU9wKGxlZnQ6IEV4cHJlc3Npb24sIG9wOiBCaW5hcnlPcCwgcmlnaHQ6IEV4cHJlc3Npb24pOiBFeHByZXNzaW9uIHtcbiAgICAgICAgcmV0dXJuIHsgdHlwZTogXCJiaW5hcnlvcFwiLCBsZWZ0LCBvcCwgcmlnaHQgfSBhcyBCaW5hcnlPcEV4cHJlc3Npb247XG4gICAgfVxuXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGluZGV4KG9iajogRXhwcmVzc2lvbiwgaW5kZXg6IEV4cHJlc3Npb24pOiBFeHByZXNzaW9uIHtcbiAgICAgICAgcmV0dXJuIHsgdHlwZTogXCJiaW5hcnlvcFwiLCBsZWZ0OiBvYmosIHJpZ2h0OiBpbmRleCwgb3A6IFwiaW5kZXhcIiB9O1xuICAgIH1cblxuICAgIC8qKiBDb252ZXJ0cyBhIHN0cmluZyBpbiBkb3Qtbm90YXRpb24tZm9ybWF0IGludG8gYSB2YXJpYWJsZSB3aGljaCBpbmRleGVzLiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiBpbmRleFZhcmlhYmxlKG5hbWU6IHN0cmluZyk6IEV4cHJlc3Npb24ge1xuICAgICAgICBsZXQgcGFydHMgPSBuYW1lLnNwbGl0KFwiLlwiKTtcbiAgICAgICAgbGV0IHJlc3VsdDogRXhwcmVzc2lvbiA9IEV4cHJlc3Npb25zLnZhcmlhYmxlKHBhcnRzWzBdKTtcbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSAxOyBpbmRleCA8IHBhcnRzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgICAgcmVzdWx0ID0gRXhwcmVzc2lvbnMuaW5kZXgocmVzdWx0LCBFeHByZXNzaW9ucy5saXRlcmFsKHBhcnRzW2luZGV4XSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBleHBvcnQgZnVuY3Rpb24gbGFtYmRhKGFyZ3M6IHN0cmluZ1tdLCB2YWx1ZTogRXhwcmVzc2lvbik6IExhbWJkYUV4cHJlc3Npb24ge1xuICAgICAgICByZXR1cm4geyB0eXBlOiBcImxhbWJkYVwiLCBhcmd1bWVudHM6IGFyZ3MsIHZhbHVlIH07XG4gICAgfVxuXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGZ1bmMoZnVuYzogRXhwcmVzc2lvbiwgYXJnczogRXhwcmVzc2lvbltdKTogRnVuY3Rpb25FeHByZXNzaW9uIHtcbiAgICAgICAgcmV0dXJuIHsgdHlwZTogXCJmdW5jdGlvblwiLCBmdW5jLCBhcmd1bWVudHM6IGFyZ3MgfTtcbiAgICB9XG5cbiAgICBleHBvcnQgZnVuY3Rpb24gbGlzdCh2YWx1ZXM6IEV4cHJlc3Npb25bXSk6IExpc3RFeHByZXNzaW9uIHtcbiAgICAgICAgcmV0dXJuIHsgdHlwZTogXCJsaXN0XCIsIHZhbHVlcyB9O1xuICAgIH1cblxuICAgIGV4cG9ydCBmdW5jdGlvbiBvYmplY3QodmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCBFeHByZXNzaW9uPik6IE9iamVjdEV4cHJlc3Npb24ge1xuICAgICAgICByZXR1cm4geyB0eXBlOiBcIm9iamVjdFwiLCB2YWx1ZXMgfTtcbiAgICB9XG5cbiAgICBleHBvcnQgZnVuY3Rpb24gbmVnYXRlKGNoaWxkOiBFeHByZXNzaW9uKTogTmVnYXRlZEV4cHJlc3Npb24ge1xuICAgICAgICByZXR1cm4geyB0eXBlOiBcIm5lZ2F0ZWRcIiwgY2hpbGQgfTtcbiAgICB9XG5cbiAgICBleHBvcnQgZnVuY3Rpb24gaXNDb21wYXJlT3Aob3A6IEJpbmFyeU9wKTogb3AgaXMgQ29tcGFyZU9wIHtcbiAgICAgICAgcmV0dXJuIG9wID09IFwiPD1cIiB8fCBvcCA9PSBcIjxcIiB8fCBvcCA9PSBcIj5cIiB8fCBvcCA9PSBcIj49XCIgfHwgb3AgPT0gXCIhPVwiIHx8IG9wID09IFwiPVwiO1xuICAgIH1cblxuICAgIC8qKiBSZXR1cm5zIGEgc2V0IG9mIGFsbCB1bmJvdW5kIHZhcmlhYmxlcyAoaS5lLiwgdmFyaWFibGVzIG5vdCBwcm92aWRlZCBieSBgcm93YCwgbGFtYmRhcywgb3Igc2ltaWxhci4pICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIHVuYm91bmRWYXJpYWJsZXMoZXhwcjogRXhwcmVzc2lvbiwgYm91bmQ6IFNldDxzdHJpbmc+ID0gbmV3IFNldChbUk9XXSkpOiBTZXQ8c3RyaW5nPiB7XG4gICAgICAgIHN3aXRjaCAoZXhwci50eXBlKSB7XG4gICAgICAgICAgICBjYXNlIFwiYmluYXJ5b3BcIjpcbiAgICAgICAgICAgICAgICAvLyBTcGVjaWFsIGNhc2UgYHJvd1tcIi4uLi5cIl1gLlxuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgZXhwci5vcCA9PT0gXCJpbmRleFwiICYmXG4gICAgICAgICAgICAgICAgICAgIGV4cHIubGVmdC50eXBlID09IFwidmFyaWFibGVcIiAmJlxuICAgICAgICAgICAgICAgICAgICBleHByLmxlZnQubmFtZSA9PSBST1cgJiZcbiAgICAgICAgICAgICAgICAgICAgZXhwci5yaWdodC50eXBlID09IFwibGl0ZXJhbFwiICYmXG4gICAgICAgICAgICAgICAgICAgIExpdGVyYWxzLmlzU3RyaW5nKGV4cHIucmlnaHQudmFsdWUpXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChib3VuZC5oYXMoZXhwci5yaWdodC52YWx1ZSkpIHJldHVybiBuZXcgU2V0KCk7XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgcmV0dXJuIG5ldyBTZXQoW2V4cHIucmlnaHQudmFsdWVdKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBPdGhlcndpc2UganVzdCBjaGVjayBsZWZ0IGFuZCByaWdodC5cbiAgICAgICAgICAgICAgICByZXR1cm4gRmlsdGVycy5zZXRVbmlvbihbdW5ib3VuZFZhcmlhYmxlcyhleHByLmxlZnQsIGJvdW5kKSwgdW5ib3VuZFZhcmlhYmxlcyhleHByLnJpZ2h0LCBib3VuZCldKTtcbiAgICAgICAgICAgIGNhc2UgXCJmdW5jdGlvblwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBGaWx0ZXJzLnNldFVuaW9uKGV4cHIuYXJndW1lbnRzLm1hcCgoYSkgPT4gdW5ib3VuZFZhcmlhYmxlcyhhLCBib3VuZCkpKTtcbiAgICAgICAgICAgIGNhc2UgXCJsYW1iZGFcIjpcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdCb3VuZCA9IGJvdW5kID8/IG5ldyBTZXQoKTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGFyZyBvZiBleHByLmFyZ3VtZW50cykgbmV3Qm91bmQuYWRkKGFyZyk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdW5ib3VuZFZhcmlhYmxlcyhleHByLnZhbHVlLCBuZXdCb3VuZCk7XG4gICAgICAgICAgICBjYXNlIFwibGlzdFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBGaWx0ZXJzLnNldFVuaW9uKGV4cHIudmFsdWVzLm1hcCgodikgPT4gdW5ib3VuZFZhcmlhYmxlcyh2LCBib3VuZCkpKTtcbiAgICAgICAgICAgIGNhc2UgXCJuZWdhdGVkXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHVuYm91bmRWYXJpYWJsZXMoZXhwci5jaGlsZCwgYm91bmQpO1xuICAgICAgICAgICAgY2FzZSBcIm9iamVjdFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBGaWx0ZXJzLnNldFVuaW9uKE9iamVjdC52YWx1ZXMoZXhwci52YWx1ZXMpLm1hcCgodikgPT4gdW5ib3VuZFZhcmlhYmxlcyh2LCBib3VuZCkpKTtcbiAgICAgICAgICAgIGNhc2UgXCJ2YXJpYWJsZVwiOlxuICAgICAgICAgICAgICAgIGlmIChib3VuZCAmJiBib3VuZC5oYXMoZXhwci5uYW1lKSkgcmV0dXJuIG5ldyBTZXQoKTtcbiAgICAgICAgICAgICAgICBlbHNlIHJldHVybiBuZXcgU2V0KFtleHByLm5hbWVdKTtcbiAgICAgICAgICAgIGNhc2UgXCJsaXRlcmFsXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBTZXQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBSZW5kZXIgYW4gZXhwcmVzc2lvbiBhcyBhIHN0cmluZy4gKi9cbiAgICBleHBvcnQgZnVuY3Rpb24gdG9TdHJpbmcoZXhwcjogRXhwcmVzc2lvbik6IHN0cmluZyB7XG4gICAgICAgIHN3aXRjaCAoZXhwci50eXBlKSB7XG4gICAgICAgICAgICBjYXNlIFwiYmluYXJ5b3BcIjpcbiAgICAgICAgICAgICAgICBpZiAoZXhwci5vcCA9PT0gXCJpbmRleFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgJHt0b1N0cmluZyhleHByLmxlZnQpfVske3RvU3RyaW5nKGV4cHIucmlnaHQpfV1gO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBgJHt0b1N0cmluZyhleHByLmxlZnQpfSAke2V4cHIub3B9ICR7dG9TdHJpbmcoZXhwci5yaWdodCl9YDtcbiAgICAgICAgICAgIGNhc2UgXCJmdW5jdGlvblwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBgJHt0b1N0cmluZyhleHByLmZ1bmMpfSgke2V4cHIuYXJndW1lbnRzLm1hcCh0b1N0cmluZykuam9pbihcIiwgXCIpfSlgO1xuICAgICAgICAgICAgY2FzZSBcImxhbWJkYVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBgKCR7ZXhwci5hcmd1bWVudHMuam9pbihcIiwgXCIpfSkgPT4gJHt0b1N0cmluZyhleHByLnZhbHVlKX1gO1xuICAgICAgICAgICAgY2FzZSBcImxpc3RcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYFske2V4cHIudmFsdWVzLm1hcCh0b1N0cmluZykuam9pbihcIiwgXCIpfV1gO1xuICAgICAgICAgICAgY2FzZSBcIm5lZ2F0ZWRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYCEke3RvU3RyaW5nKGV4cHIuY2hpbGQpfWA7XG4gICAgICAgICAgICBjYXNlIFwib2JqZWN0XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGB7JHtPYmplY3QuZW50cmllcyhleHByLnZhbHVlcylcbiAgICAgICAgICAgICAgICAgICAgLm1hcCgoW2ssIHZdKSA9PiBgJHtrfTogJHt0b1N0cmluZyh2KX1gKVxuICAgICAgICAgICAgICAgICAgICAuam9pbihcIiwgXCIpfX1gO1xuICAgICAgICAgICAgY2FzZSBcInZhcmlhYmxlXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGV4cHIubmFtZTtcbiAgICAgICAgICAgIGNhc2UgXCJsaXRlcmFsXCI6XG4gICAgICAgICAgICAgICAgY29uc3Qgd3JhcHBlZCA9IExpdGVyYWxzLndyYXBWYWx1ZShleHByLnZhbHVlKTtcbiAgICAgICAgICAgICAgICBpZiAoIXdyYXBwZWQpIHJldHVybiBcIm51bGxcIjtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHdyYXBwZWQudHlwZSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFwic3RyaW5nXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYFwiJHt3cmFwcGVkLnZhbHVlfVwiYDtcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBMaXRlcmFscy50b1N0cmluZyh3cmFwcGVkLnZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBleHBvcnQgY29uc3QgTlVMTCA9IEV4cHJlc3Npb25zLmxpdGVyYWwobnVsbCk7XG59XG4iLCAiLyoqIFBhcnNlIGlubGluZSBmaWVsZHMgYW5kIG90aGVyIGVtYmVkZGVkIG1ldGFkYXRhIGluIGEgbGluZS4gKi9cblxuaW1wb3J0IHsgUFJJTUlUSVZFUyB9IGZyb20gXCJleHByZXNzaW9uL3BhcnNlclwiO1xuaW1wb3J0IHsgTGl0ZXJhbCB9IGZyb20gXCJleHByZXNzaW9uL2xpdGVyYWxcIjtcbmltcG9ydCAqIGFzIFAgZnJvbSBcInBhcnNpbW1vblwiO1xuaW1wb3J0IGVtb2ppUmVnZXggZnJvbSBcImVtb2ppLXJlZ2V4XCI7XG5pbXBvcnQgeyBKc29uQ29udmVyc2lvbiwgSnNvbkxpdGVyYWwgfSBmcm9tIFwiaW5kZXgvdHlwZXMvanNvbi9jb21tb25cIjtcblxuLyoqIEEgcGFyc2VkIGlubGluZSBmaWVsZCBmcm9tIGEgc3BlY2lmaWMgbGluZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTG9jYWxJbmxpbmVGaWVsZCB7XG4gICAgLyoqIFRoZSByYXcgcGFyc2VkIGtleS4gKi9cbiAgICBrZXk6IHN0cmluZztcbiAgICAvKiogVGhlIHJhdyB2YWx1ZSBvZiB0aGUgZmllbGQuICovXG4gICAgdmFsdWU6IHN0cmluZztcbiAgICAvKiogVGhlIHN0YXJ0IGNvbHVtbiBvZiB0aGUgZmllbGQuICovXG4gICAgc3RhcnQ6IG51bWJlcjtcbiAgICAvKiogVGhlIHN0YXJ0IGNvbHVtbiBvZiB0aGUgKnZhbHVlKiBmb3IgdGhlIGZpZWxkLiAqL1xuICAgIHN0YXJ0VmFsdWU6IG51bWJlcjtcbiAgICAvKiogVGhlIGVuZCBjb2x1bW4gb2YgdGhlIGZpZWxkLiAqL1xuICAgIGVuZDogbnVtYmVyO1xuICAgIC8qKiBJZiB0aGlzIGlubGluZSBmaWVsZCB3YXMgZGVmaW5lZCB2aWEgYSB3cmFwcGluZyAoJ1snIG9yICcoJyBvciAnbGluaycpLCB0aGVuIHRoZSB3cmFwcGluZyB0aGF0IHdhcyB1c2VkLiAqL1xuICAgIHdyYXBwaW5nPzogc3RyaW5nO1xufVxuXG4vKiogRnVsbCBpbmxpbmUgZmllbGQgbWV0YWRhdGEgZm9yIGFuIG9iamVjdC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5saW5lRmllbGQge1xuICAgIC8qKiBUaGUgYWN0dWFsIGtleSBkZXNjcmliaW5nIHRoZSBpbmxpbmUgZmllbGQuICovXG4gICAga2V5OiBzdHJpbmc7XG4gICAgLyoqIFRoZSByYXcgdmFsdWUgb2YgdGhlIGlubGluZSBmaWVsZC4gKi9cbiAgICByYXc6IHN0cmluZztcbiAgICAvKiogVGhlIHBhcnNlZCB2YWx1ZS4gKi9cbiAgICB2YWx1ZTogTGl0ZXJhbDtcbiAgICAvKiogRnVsbCBwb3NpdGlvbiBpbmZvcm1hdGlvbiBmb3Igd2hlcmUgdGhlIGlubGluZSBmaWVsZCBpcyBsb2NhdGVkIGluIHRoZSBkb2N1bWVudC4gKi9cbiAgICBwb3NpdGlvbjoge1xuICAgICAgICAvKiogVGhlIGxpbmUgbnVtYmVyIHRoZSBpbmxpbmUgZmllbGQgYXBwZWFycyBvbi4gKi9cbiAgICAgICAgbGluZTogbnVtYmVyO1xuICAgICAgICAvKiogVGhlIHN0YXJ0IGNvbHVtbiBvZiB0aGUgZmllbGQuICovXG4gICAgICAgIHN0YXJ0OiBudW1iZXI7XG4gICAgICAgIC8qKiBUaGUgc3RhcnQgY29sdW1uIG9mIHRoZSAqdmFsdWUqIGZvciB0aGUgZmllbGQuIEltbWVkaWF0ZWx5IGFmdGVyIHRoZSAnOjonLiAqL1xuICAgICAgICBzdGFydFZhbHVlOiBudW1iZXI7XG4gICAgICAgIC8qKiBUaGUgZW5kIGNvbHVtbiBvZiB0aGUgZmllbGQuICovXG4gICAgICAgIGVuZDogbnVtYmVyO1xuICAgIH07XG4gICAgLyoqIElmIHRoaXMgaW5saW5lIGZpZWxkIHdhcyBkZWZpbmVkIHZpYSBhIHdyYXBwaW5nICgnWycgb3IgJygnIG9yICdsaW5rJyksIHRoZW4gdGhlIHdyYXBwaW5nIHRoYXQgd2FzIHVzZWQuICovXG4gICAgd3JhcHBpbmc/OiBzdHJpbmc7XG59XG5cbi8qKiBKU09OLCBzZXJpYWxpemFibGUgcmVwcmVzZW50YXRpb24gb2YgYW4gaW5saW5lIGZpZWxkLiAqL1xuZXhwb3J0IGludGVyZmFjZSBKc29uSW5saW5lRmllbGQge1xuICAgIC8qKiBUaGUgYWN0dWFsIGtleSBkZXNjcmliaW5nIHRoZSBpbmxpbmUgZmllbGQuICovXG4gICAga2V5OiBzdHJpbmc7XG4gICAgLyoqIFRoZSByYXcgdmFsdWUgb2YgdGhlIGlubGluZSBmaWVsZC4gKi9cbiAgICByYXc6IHN0cmluZztcbiAgICAvKiogVGhlIHBhcnNlZCB2YWx1ZS4gKi9cbiAgICB2YWx1ZTogSnNvbkxpdGVyYWw7XG4gICAgLyoqIEZ1bGwgcG9zaXRpb24gaW5mb3JtYXRpb24gZm9yIHdoZXJlIHRoZSBpbmxpbmUgZmllbGQgaXMgbG9jYXRlZCBpbiB0aGUgZG9jdW1lbnQuICovXG4gICAgcG9zaXRpb246IHtcbiAgICAgICAgLyoqIFRoZSBsaW5lIG51bWJlciB0aGUgaW5saW5lIGZpZWxkIGFwcGVhcnMgb24uICovXG4gICAgICAgIGxpbmU6IG51bWJlcjtcbiAgICAgICAgLyoqIFRoZSBzdGFydCBjb2x1bW4gb2YgdGhlIGZpZWxkLiAqL1xuICAgICAgICBzdGFydDogbnVtYmVyO1xuICAgICAgICAvKiogVGhlIHN0YXJ0IGNvbHVtbiBvZiB0aGUgKnZhbHVlKiBmb3IgdGhlIGZpZWxkLiBJbW1lZGlhdGVseSBhZnRlciB0aGUgJzo6Jy4gKi9cbiAgICAgICAgc3RhcnRWYWx1ZTogbnVtYmVyO1xuICAgICAgICAvKiogVGhlIGVuZCBjb2x1bW4gb2YgdGhlIGZpZWxkLiAqL1xuICAgICAgICBlbmQ6IG51bWJlcjtcbiAgICB9O1xuICAgIC8qKiBJZiB0aGlzIGlubGluZSBmaWVsZCB3YXMgZGVmaW5lZCB2aWEgYSB3cmFwcGluZyAoJ1snIG9yICcoJyBvciAnbGluaycpLCB0aGVuIHRoZSB3cmFwcGluZyB0aGF0IHdhcyB1c2VkLiAqL1xuICAgIHdyYXBwaW5nPzogc3RyaW5nO1xufVxuXG4vKiogQ29udmVydCBhbiBpbmxpbmUgZmllbGQgdG8gYSBKU09OIGZvcm1hdC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBqc29uSW5saW5lRmllbGQoZmllbGQ6IElubGluZUZpZWxkKTogSnNvbklubGluZUZpZWxkIHtcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgZmllbGQsIHsgdmFsdWU6IEpzb25Db252ZXJzaW9uLmpzb24oZmllbGQudmFsdWUpIH0pO1xufVxuXG4vKiogQ29udmVydCBhIEpTT04gaW5saW5lIGZpZWxkIGJhY2sgdG8gYSByZWd1bGFyIGZpZWxkLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbHVlSW5saW5lRmllbGQoZmllbGQ6IEpzb25JbmxpbmVGaWVsZCk6IElubGluZUZpZWxkIHtcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgZmllbGQsIHsgdmFsdWU6IEpzb25Db252ZXJzaW9uLnZhbHVlKGZpZWxkLnZhbHVlKSB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFzSW5saW5lRmllbGQobG9jYWw6IExvY2FsSW5saW5lRmllbGQsIGxpbmVubzogbnVtYmVyKTogSW5saW5lRmllbGQ7XG5leHBvcnQgZnVuY3Rpb24gYXNJbmxpbmVGaWVsZChsb2NhbDogTG9jYWxJbmxpbmVGaWVsZFtdLCBsaW5lbm86IG51bWJlcik6IElubGluZUZpZWxkW107XG4vKiogQ29udmVydCBhIGxvY2FsIGlubGluZSBmaWVsZCBpbnRvIGEgZnVsbCBpbmxpbmUgZmllbGQgYnkgcGVyZm9ybWluZyBwYXJzaW5nIGFuZCBhZGRpbmcgdGhlIGNvcnJlY3QgbGluZSBudW1iZXIuICovXG5leHBvcnQgZnVuY3Rpb24gYXNJbmxpbmVGaWVsZChcbiAgICBsb2NhbDogTG9jYWxJbmxpbmVGaWVsZCB8IExvY2FsSW5saW5lRmllbGRbXSxcbiAgICBsaW5lbm86IG51bWJlclxuKTogSW5saW5lRmllbGQgfCBJbmxpbmVGaWVsZFtdIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShsb2NhbCkpIHtcbiAgICAgICAgcmV0dXJuIGxvY2FsLm1hcCgoZikgPT4gYXNJbmxpbmVGaWVsZChmLCBsaW5lbm8pKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBrZXk6IGxvY2FsLmtleSxcbiAgICAgICAgcmF3OiBsb2NhbC52YWx1ZSxcbiAgICAgICAgdmFsdWU6IHBhcnNlSW5saW5lVmFsdWUobG9jYWwudmFsdWUpLFxuICAgICAgICBwb3NpdGlvbjoge1xuICAgICAgICAgICAgbGluZTogbGluZW5vLFxuICAgICAgICAgICAgc3RhcnQ6IGxvY2FsLnN0YXJ0LFxuICAgICAgICAgICAgc3RhcnRWYWx1ZTogbG9jYWwuc3RhcnRWYWx1ZSxcbiAgICAgICAgICAgIGVuZDogbG9jYWwuZW5kLFxuICAgICAgICB9LFxuICAgICAgICB3cmFwcGluZzogbG9jYWwud3JhcHBpbmcsXG4gICAgfTtcbn1cblxuLyoqIFRoZSB3cmFwcGVyIGNoYXJhY3RlcnMgdGhhdCBjYW4gYmUgdXNlZCB0byBkZWZpbmUgYW4gaW5saW5lIGZpZWxkLiAqL1xuZXhwb3J0IGNvbnN0IElOTElORV9GSUVMRF9XUkFQUEVSUzogUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4gPSBPYmplY3QuZnJlZXplKHtcbiAgICBcIltcIjogXCJdXCIsXG4gICAgXCIoXCI6IFwiKVwiLFxufSk7XG5cbi8qKlxuICogRmluZCBhIG1hdGNoaW5nIGNsb3NpbmcgYnJhY2tldCB0aGF0IG9jY3VycyBhdCBvciBhZnRlciBgc3RhcnRgLCByZXNwZWN0aW5nIG5lc3RpbmcgYW5kIGVzY2FwZXMuIElmIGZvdW5kLFxuICogcmV0dXJucyB0aGUgdmFsdWUgY29udGFpbmVkIHdpdGhpbiBhbmQgdGhlIHN0cmluZyBpbmRleCBhZnRlciB0aGUgZW5kIG9mIHRoZSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gZmluZENsb3NpbmcoXG4gICAgbGluZTogc3RyaW5nLFxuICAgIHN0YXJ0OiBudW1iZXIsXG4gICAgb3Blbjogc3RyaW5nLFxuICAgIGNsb3NlOiBzdHJpbmdcbik6IHsgdmFsdWU6IHN0cmluZzsgZW5kSW5kZXg6IG51bWJlciB9IHwgdW5kZWZpbmVkIHtcbiAgICBsZXQgbmVzdGluZyA9IDA7XG4gICAgbGV0IGVzY2FwZWQgPSBmYWxzZTtcbiAgICBmb3IgKGxldCBpbmRleCA9IHN0YXJ0OyBpbmRleCA8IGxpbmUubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgIGxldCBjaGFyID0gbGluZS5jaGFyQXQoaW5kZXgpO1xuXG4gICAgICAgIC8vIEFsbG93cyBmb3IgZG91YmxlIGVzY2FwZXMgbGlrZSAnXFxcXCcgdG8gYmUgcmVuZGVyZWQgbm9ybWFsbHkuXG4gICAgICAgIGlmIChjaGFyID09IFwiXFxcXFwiKSB7XG4gICAgICAgICAgICBlc2NhcGVkID0gIWVzY2FwZWQ7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElmIGVzY2FwZWQsIGlnbm9yZSB0aGUgbmV4dCBjaGFyYWN0ZXIgZm9yIGNvbXB1dGluZyBuZXN0aW5nLCByZWdhcmRsZXNzIG9mIHdoYXQgaXQgaXMuXG4gICAgICAgIGlmIChlc2NhcGVkKSB7XG4gICAgICAgICAgICBlc2NhcGVkID0gZmFsc2U7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjaGFyID09IG9wZW4pIG5lc3RpbmcrKztcbiAgICAgICAgZWxzZSBpZiAoY2hhciA9PSBjbG9zZSkgbmVzdGluZy0tO1xuXG4gICAgICAgIC8vIE9ubHkgb2NjdXJzIGlmIHdlIGFyZSBvbiBhIGNsb3NlIGNoYXJhY3RlciBhbmQgdHJoZXJlIGlzIG5vIG1vcmUgbmVzdGluZy5cbiAgICAgICAgaWYgKG5lc3RpbmcgPCAwKSByZXR1cm4geyB2YWx1ZTogbGluZS5zdWJzdHJpbmcoc3RhcnQsIGluZGV4KS50cmltKCksIGVuZEluZGV4OiBpbmRleCArIDEgfTtcblxuICAgICAgICBlc2NhcGVkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLyoqIEZpbmQgdGhlICc6Oicgc2VwYXJhdG9yIGluIGFuIGlubGluZSBmaWVsZC4gKi9cbmZ1bmN0aW9uIGZpbmRTZXBhcmF0b3IobGluZTogc3RyaW5nLCBzdGFydDogbnVtYmVyKTogeyBrZXk6IHN0cmluZzsgdmFsdWVJbmRleDogbnVtYmVyIH0gfCB1bmRlZmluZWQge1xuICAgIGxldCBzZXAgPSBsaW5lLmluZGV4T2YoXCI6OlwiLCBzdGFydCk7XG4gICAgaWYgKHNlcCA8IDApIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICByZXR1cm4geyBrZXk6IGxpbmUuc3Vic3RyaW5nKHN0YXJ0LCBzZXApLnRyaW0oKSwgdmFsdWVJbmRleDogc2VwICsgMiB9O1xufVxuXG4vKiogVHJ5IHRvIGNvbXBsZXRlbHkgcGFyc2UgYW4gaW5saW5lIGZpZWxkIHN0YXJ0aW5nIGF0IHRoZSBnaXZlbiBwb3NpdGlvbi4gQXNzdW1lcyBgc3RhcnRgIGlzIG9uIGEgd3JhcHBpbmcgY2hhcmFjdGVyLiAqL1xuZnVuY3Rpb24gZmluZFNwZWNpZmljSW5saW5lRmllbGQobGluZTogc3RyaW5nLCBzdGFydDogbnVtYmVyKTogTG9jYWxJbmxpbmVGaWVsZCB8IHVuZGVmaW5lZCB7XG4gICAgbGV0IG9wZW4gPSBsaW5lLmNoYXJBdChzdGFydCk7XG5cbiAgICBsZXQga2V5ID0gZmluZFNlcGFyYXRvcihsaW5lLCBzdGFydCArIDEpO1xuICAgIGlmIChrZXkgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgIC8vIEZhaWwgdGhlIG1hdGNoIGlmIHdlIGZpbmQgYW55IHNlcGFyYXRvciBjaGFyYWN0ZXJzIChub3QgYWxsb3dlZCBpbiBrZXlzKS5cbiAgICBmb3IgKGxldCBzZXAgb2YgT2JqZWN0LmtleXMoSU5MSU5FX0ZJRUxEX1dSQVBQRVJTKS5jb25jYXQoT2JqZWN0LnZhbHVlcyhJTkxJTkVfRklFTERfV1JBUFBFUlMpKSkge1xuICAgICAgICBpZiAoa2V5LmtleS5pbmNsdWRlcyhzZXApKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGxldCB2YWx1ZSA9IGZpbmRDbG9zaW5nKGxpbmUsIGtleS52YWx1ZUluZGV4LCBvcGVuLCBJTkxJTkVfRklFTERfV1JBUFBFUlNbb3Blbl0pO1xuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAga2V5OiBrZXkua2V5LFxuICAgICAgICB2YWx1ZTogdmFsdWUudmFsdWUsXG4gICAgICAgIHN0YXJ0OiBzdGFydCxcbiAgICAgICAgc3RhcnRWYWx1ZToga2V5LnZhbHVlSW5kZXgsXG4gICAgICAgIGVuZDogdmFsdWUuZW5kSW5kZXgsXG4gICAgICAgIHdyYXBwaW5nOiBvcGVuLFxuICAgIH07XG59XG5cbi8qKiBQYXJzZSBhIHRleHR1YWwgaW5saW5lIGZpZWxkIHZhbHVlIGludG8gc29tZXRoaW5nIHdlIGNhbiB3b3JrIHdpdGguICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VJbmxpbmVWYWx1ZSh2YWx1ZTogc3RyaW5nKTogTGl0ZXJhbCB7XG4gICAgLy8gRW1wdHkgaW5saW5lIHZhbHVlcyAoaS5lLiwgbm8gdGV4dCkgc2hvdWxkIG1hcCB0byBudWxsIHRvIG1hdGNoIGxvbmctdGVybSBEYXRhdmlldyBzZW1hbnRpY3MuXG4gICAgLy8gTnVsbCBpcyBhbHNvIGEgbW9yZSB1bml2ZXJzYWwgdHlwZSB0byBkZWFsIHdpdGggdGhhbiBzdHJpbmdzLCBzaW5jZSBhbGwgZnVuY3Rpb25zIGFjY2VwdCBudWxscy5cbiAgICBpZiAodmFsdWUudHJpbSgpID09IFwiXCIpIHJldHVybiBudWxsO1xuXG4gICAgLy8gVGhlIHN0cmlwcGVkIGxpdGVyYWwgZmllbGQgcGFyc2VyIHVuZGVyc3RhbmRzIGFsbCBvZiB0aGUgbm9uLWFycmF5L25vbi1vYmplY3QgZmllbGRzIGFuZCBjYW4gcGFyc2UgdGhlbSBmb3IgdXMuXG4gICAgLy8gSW5saW5lIGZpZWxkIG9iamVjdHMgYXJlIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkOyBpbmxpbmUgYXJyYXkgb2JqZWN0cyBoYXZlIHRvIGJlIGhhbmRsZWQgYnkgdGhlIHBhcnNlclxuICAgIC8vIHNlcGFyYXRlbHkuXG4gICAgbGV0IGlubGluZSA9IFBSSU1JVElWRVMuaW5saW5lRmllbGQucGFyc2UodmFsdWUpO1xuICAgIGlmIChpbmxpbmUuc3RhdHVzKSByZXR1cm4gaW5saW5lLnZhbHVlO1xuICAgIGVsc2UgcmV0dXJuIHZhbHVlO1xufVxuXG4vKiogRXh0cmFjdHMgaW5saW5lIGZpZWxkcyBvZiB0aGUgZm9ybSAnW2tleTo6IHZhbHVlXScgZnJvbSBhIGxpbmUgb2YgdGV4dC4gVGhpcyBpcyBkb25lIGluIGEgcmVsYXRpdmVseVxuICogXCJyb2J1c3RcIiB3YXkgdG8gYXZvaWQgZmFpbGluZyBkdWUgdG8gYmFkIG5lc3Rpbmcgb3Igb3RoZXIgaW50ZXJmZXJpbmcgTWFya2Rvd24gc3ltYm9sczpcbiAqXG4gKiAtIExvb2sgZm9yIGFueSB3cmFwcGVycyAoJ1snIGFuZCAnKCcpIGluIHRoZSBsaW5lLCB0cnlpbmcgdG8gcGFyc2Ugd2hhdGV2ZXIgY29tZXMgYWZ0ZXIgaXQgYXMgYW4gaW5saW5lIGtleTo6LlxuICogLSBJZiBzdWNjZXNzZnVsLCBzY2FuIHVudGlsIHlvdSBmaW5kIGEgbWF0Y2hpbmcgZW5kIGJyYWNrZXQsIGFuZCBwYXJzZSB3aGF0ZXZlciByZW1haW5zIGFzIGFuIGlubGluZSB2YWx1ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RJbmxpbmVGaWVsZHMobGluZTogc3RyaW5nLCBpbmNsdWRlVGFza0ZpZWxkczogYm9vbGVhbiA9IGZhbHNlKTogTG9jYWxJbmxpbmVGaWVsZFtdIHtcbiAgICBsZXQgZmllbGRzOiBMb2NhbElubGluZUZpZWxkW10gPSBbXTtcbiAgICBmb3IgKGxldCB3cmFwcGVyIG9mIE9iamVjdC5rZXlzKElOTElORV9GSUVMRF9XUkFQUEVSUykpIHtcbiAgICAgICAgbGV0IGZvdW5kSW5kZXggPSBsaW5lLmluZGV4T2Yod3JhcHBlcik7XG4gICAgICAgIHdoaWxlIChmb3VuZEluZGV4ID49IDApIHtcbiAgICAgICAgICAgIGxldCBwYXJzZWRGaWVsZCA9IGZpbmRTcGVjaWZpY0lubGluZUZpZWxkKGxpbmUsIGZvdW5kSW5kZXgpO1xuICAgICAgICAgICAgaWYgKCFwYXJzZWRGaWVsZCkge1xuICAgICAgICAgICAgICAgIGZvdW5kSW5kZXggPSBsaW5lLmluZGV4T2Yod3JhcHBlciwgZm91bmRJbmRleCArIDEpO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmaWVsZHMucHVzaChwYXJzZWRGaWVsZCk7XG4gICAgICAgICAgICBmb3VuZEluZGV4ID0gbGluZS5pbmRleE9mKHdyYXBwZXIsIHBhcnNlZEZpZWxkLmVuZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaW5jbHVkZVRhc2tGaWVsZHMpIGZpZWxkcyA9IGZpZWxkcy5jb25jYXQoZXh0cmFjdFNwZWNpYWxUYXNrRmllbGRzKGxpbmUpKTtcblxuICAgIGZpZWxkcy5zb3J0KChhLCBiKSA9PiBhLnN0YXJ0IC0gYi5zdGFydCk7XG5cbiAgICBsZXQgZmlsdGVyZWRGaWVsZHM6IExvY2FsSW5saW5lRmllbGRbXSA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZmllbGRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChpID09IDAgfHwgZmlsdGVyZWRGaWVsZHNbZmlsdGVyZWRGaWVsZHMubGVuZ3RoIC0gMV0uZW5kIDwgZmllbGRzW2ldLnN0YXJ0KSB7XG4gICAgICAgICAgICBmaWx0ZXJlZEZpZWxkcy5wdXNoKGZpZWxkc1tpXSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZpbHRlcmVkRmllbGRzO1xufVxuXG4vKiogVmFsaWRhdGVzIHRoYXQgYSByYXcgZmllbGQgbmFtZSBoYXMgYSB2YWxpZCBmb3JtLiAqL1xuY29uc3QgRlVMTF9MSU5FX0tFWV9QQVJUOiBQLlBhcnNlcjxzdHJpbmc+ID0gUC5hbHQoXG4gICAgUC5yZWdleHAobmV3IFJlZ0V4cChlbW9qaVJlZ2V4KCksIFwidVwiKSksXG4gICAgUC5yZWdleHAoL1swLTlcXHB7TGV0dGVyfVxcd1xcc18vLV0rL3UpXG4pXG4gICAgLm1hbnkoKVxuICAgIC5tYXAoKHBhcnRzKSA9PiBwYXJ0cy5qb2luKFwiXCIpKTtcblxuY29uc3QgRlVMTF9MSU5FX0tFWV9QQVJTRVI6IFAuUGFyc2VyPHN0cmluZz4gPSBQLnJlZ2V4cCgvW14wLTlcXHdcXHB7TGV0dGVyfV0qL3UpXG4gICAgLnRoZW4oRlVMTF9MSU5FX0tFWV9QQVJUKVxuICAgIC5za2lwKFAucmVnZXhwKC9bX1xcKn5gXSovdSkpO1xuXG4vKiogQXR0ZW1wdCB0byBleHRyYWN0IGEgZnVsbC1saW5lIGZpZWxkIChLZXk6OiBWYWx1ZSBjb25zdW1pbmcgdGhlIGVudGlyZSBjb250ZW50IGxpbmUpLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RGdWxsTGluZUZpZWxkKHRleHQ6IHN0cmluZyk6IExvY2FsSW5saW5lRmllbGQgfCB1bmRlZmluZWQge1xuICAgIGxldCBzZXAgPSBmaW5kU2VwYXJhdG9yKHRleHQsIDApO1xuICAgIGlmICghc2VwKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgLy8gV2UgbmVlZCB0byBwb3N0LXByb2Nlc3MgdGhlIGtleSB0byBkcm9wIHVubmVjZXNzYXJ5IG9wZW5pbmcgYW5ub3RhdGlvbnMgYXMgd2VsbCBhc1xuICAgIC8vIGRyb3Agc3Vycm91bmRpbmcgTWFya2Rvd24uXG4gICAgbGV0IHJlYWxLZXkgPSBGVUxMX0xJTkVfS0VZX1BBUlNFUi5wYXJzZShzZXAua2V5KTtcbiAgICBpZiAoIXJlYWxLZXkuc3RhdHVzKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAga2V5OiByZWFsS2V5LnZhbHVlLFxuICAgICAgICB2YWx1ZTogdGV4dC5zdWJzdHJpbmcoc2VwLnZhbHVlSW5kZXgpLnRyaW0oKSxcbiAgICAgICAgc3RhcnQ6IDAsXG4gICAgICAgIHN0YXJ0VmFsdWU6IHNlcC52YWx1ZUluZGV4LFxuICAgICAgICBlbmQ6IHRleHQubGVuZ3RoLFxuICAgIH07XG59XG5cbmV4cG9ydCBjb25zdCBDUkVBVEVEX0RBVEVfUkVHRVggPSAvXFx1ezI3OTV9XFxzKihcXGR7NH0tXFxkezJ9LVxcZHsyfSkvdTtcbmV4cG9ydCBjb25zdCBEVUVfREFURV9SRUdFWCA9IC8oPzpcXHV7MUY0QzV9fFxcdXsxRjRDNn18XFx1ezFGNUQzfVxcdXtGRTBGfT8pXFxzKihcXGR7NH0tXFxkezJ9LVxcZHsyfSkvdTtcbmV4cG9ydCBjb25zdCBET05FX0RBVEVfUkVHRVggPSAvXFx1ezI3MDV9XFxzKihcXGR7NH0tXFxkezJ9LVxcZHsyfSkvdTtcbmV4cG9ydCBjb25zdCBTQ0hFRFVMRURfREFURV9SRUdFWCA9IC9bXFx1ezIzRjN9XFx1ezIzMUJ9XVxccyooXFxkezR9LVxcZHsyfS1cXGR7Mn0pL3U7XG5leHBvcnQgY29uc3QgU1RBUlRfREFURV9SRUdFWCA9IC9cXHV7MUY2RUJ9XFxzKihcXGR7NH0tXFxkezJ9LVxcZHsyfSkvdTtcblxuZXhwb3J0IGNvbnN0IEVNT0pJX1JFR0VYRVMgPSBbXG4gICAgeyByZWdleDogQ1JFQVRFRF9EQVRFX1JFR0VYLCBrZXk6IFwiY3JlYXRlZFwiIH0sXG4gICAgeyByZWdleDogU1RBUlRfREFURV9SRUdFWCwga2V5OiBcInN0YXJ0XCIgfSxcbiAgICB7IHJlZ2V4OiBTQ0hFRFVMRURfREFURV9SRUdFWCwga2V5OiBcInNjaGVkdWxlZFwiIH0sXG4gICAgeyByZWdleDogRFVFX0RBVEVfUkVHRVgsIGtleTogXCJkdWVcIiB9LFxuICAgIHsgcmVnZXg6IERPTkVfREFURV9SRUdFWCwga2V5OiBcImNvbXBsZXRpb25cIiB9LFxuXTtcblxuLyoqIFBhcnNlIHNwZWNpYWwgY29tcGxldGVkL2R1ZS9kb25lIHRhc2sgZmllbGRzIHdoaWNoIGFyZSBtYXJrZWQgdmlhIGVtb2ppLiAqL1xuZnVuY3Rpb24gZXh0cmFjdFNwZWNpYWxUYXNrRmllbGRzKGxpbmU6IHN0cmluZyk6IExvY2FsSW5saW5lRmllbGRbXSB7XG4gICAgbGV0IHJlc3VsdHM6IExvY2FsSW5saW5lRmllbGRbXSA9IFtdO1xuXG4gICAgZm9yIChsZXQgeyByZWdleCwga2V5IH0gb2YgRU1PSklfUkVHRVhFUykge1xuICAgICAgICBjb25zdCBtYXRjaCA9IHJlZ2V4LmV4ZWMobGluZSk7XG4gICAgICAgIGlmICghbWF0Y2gpIGNvbnRpbnVlO1xuXG4gICAgICAgIHJlc3VsdHMucHVzaCh7XG4gICAgICAgICAgICBrZXksXG4gICAgICAgICAgICB2YWx1ZTogbWF0Y2hbMV0sXG4gICAgICAgICAgICBzdGFydDogbWF0Y2guaW5kZXgsXG4gICAgICAgICAgICBzdGFydFZhbHVlOiBtYXRjaC5pbmRleCArIDEsXG4gICAgICAgICAgICBlbmQ6IG1hdGNoLmluZGV4ICsgbWF0Y2hbMF0ubGVuZ3RoLFxuICAgICAgICAgICAgd3JhcHBpbmc6IFwiZW1vamktc2hvcnRoYW5kXCIsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHRzO1xufVxuXG4vKiogU2V0cyBvciByZXBsYWNlcyB0aGUgdmFsdWUgb2YgYW4gaW5saW5lIGZpZWxkOyBpZiB0aGUgdmFsdWUgaXMgJ3VuZGVmaW5lZCcsIGRlbGV0ZXMgdGhlIGtleS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRJbmxpbmVGaWVsZChzb3VyY2U6IHN0cmluZywga2V5OiBzdHJpbmcsIHZhbHVlPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBsZXQgZXhpc3RpbmcgPSBleHRyYWN0SW5saW5lRmllbGRzKHNvdXJjZSk7XG4gICAgbGV0IGV4aXN0aW5nS2V5cyA9IGV4aXN0aW5nLmZpbHRlcigoZikgPT4gZi5rZXkgPT0ga2V5KTtcblxuICAgIC8vIERvbid0IGRvIGFueXRoaW5nIGlmIHRoZXJlIGFyZSBkdXBsaWNhdGUga2V5cyBPUiB0aGUga2V5IGFscmVhZHkgZG9lc24ndCBleGlzdC5cbiAgICBpZiAoZXhpc3RpbmdLZXlzLmxlbmd0aCA+IDIgfHwgKGV4aXN0aW5nS2V5cy5sZW5ndGggPT0gMCAmJiAhdmFsdWUpKSByZXR1cm4gc291cmNlO1xuICAgIGxldCBleGlzdGluZ0tleSA9IGV4aXN0aW5nS2V5c1swXTtcblxuICAgIGxldCBhbm5vdGF0aW9uID0gdmFsdWUgPyBgWyR7a2V5fTo6ICR7dmFsdWV9XWAgOiBcIlwiO1xuICAgIGlmIChleGlzdGluZ0tleSkge1xuICAgICAgICBsZXQgcHJlZml4ID0gc291cmNlLnN1YnN0cmluZygwLCBleGlzdGluZ0tleS5zdGFydCk7XG4gICAgICAgIGxldCBzdWZmaXggPSBzb3VyY2Uuc3Vic3RyaW5nKGV4aXN0aW5nS2V5LmVuZCk7XG5cbiAgICAgICAgaWYgKGFubm90YXRpb24pIHJldHVybiBgJHtwcmVmaXh9JHthbm5vdGF0aW9ufSR7c3VmZml4fWA7XG4gICAgICAgIGVsc2UgcmV0dXJuIGAke3ByZWZpeH0ke3N1ZmZpeC50cmltU3RhcnQoKX1gO1xuICAgIH0gZWxzZSBpZiAoYW5ub3RhdGlvbikge1xuICAgICAgICByZXR1cm4gYCR7c291cmNlLnRyaW1FbmQoKX0gJHthbm5vdGF0aW9ufWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNvdXJjZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldEVtb2ppU2hvcnRoYW5kQ29tcGxldGlvbkZpZWxkKHNvdXJjZTogc3RyaW5nLCB2YWx1ZT86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgZXhpc3RpbmcgPSBleHRyYWN0SW5saW5lRmllbGRzKHNvdXJjZSwgdHJ1ZSk7XG4gICAgY29uc3QgZXhpc3RpbmdLZXlzID0gZXhpc3RpbmcuZmlsdGVyKChmKSA9PiBmLmtleSA9PT0gXCJjb21wbGV0aW9uXCIgJiYgZi53cmFwcGluZyA9PT0gXCJlbW9qaS1zaG9ydGhhbmRcIik7XG5cbiAgICAvLyBEb24ndCBkbyBhbnl0aGluZyBpZiB0aGVyZSBhcmUgZHVwbGljYXRlIGtleXMgT1IgdGhlIGtleSBhbHJlYWR5IGRvZXNuJ3QgZXhpc3QuXG4gICAgaWYgKGV4aXN0aW5nS2V5cy5sZW5ndGggPiAyIHx8IChleGlzdGluZ0tleXMubGVuZ3RoID09IDAgJiYgIXZhbHVlKSkgcmV0dXJuIHNvdXJjZTtcblxuICAgIC8qIE5vIHdyYXBwZXIsIGFkZCBvd24gc3BhY2luZyBhdCBzdGFydCAqL1xuICAgIGNvbnN0IGFubm90YXRpb24gPSB2YWx1ZSA/IGAgXHUyNzA1ICR7dmFsdWV9YCA6IFwiXCI7XG4gICAgbGV0IGV4aXN0aW5nS2V5ID0gZXhpc3RpbmdLZXlzWzBdO1xuICAgIGlmIChleGlzdGluZ0tleSkge1xuICAgICAgICBjb25zdCBwcmVmaXggPSBzb3VyY2Uuc3Vic3RyaW5nKDAsIGV4aXN0aW5nS2V5LnN0YXJ0KTtcbiAgICAgICAgY29uc3Qgc3VmZml4ID0gc291cmNlLnN1YnN0cmluZyhleGlzdGluZ0tleS5lbmQpO1xuICAgICAgICByZXR1cm4gYCR7cHJlZml4LnRyaW1FbmQoKX0ke2Fubm90YXRpb259JHtzdWZmaXh9YDtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gYCR7c291cmNlLnRyaW1FbmQoKX0ke2Fubm90YXRpb259YDtcbiAgICB9XG59XG4iLCAiLyoqIE1hcCB0aGUgdmFsdWVzIG9mIGFuIG9iamVjdCwgcmV0dXJuaW5nIGEgbmV3IG9iamVjdC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXBPYmplY3RWYWx1ZXM8ViwgVT4ob2JqZWN0OiBSZWNvcmQ8c3RyaW5nLCBWPiwgZnVuYzogKHg6IFYpID0+IFUpOiBSZWNvcmQ8c3RyaW5nLCBVPiB7XG4gICAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBVPiA9IHt9O1xuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKG9iamVjdCkpIHtcbiAgICAgICAgcmVzdWx0W2tleV0gPSBmdW5jKHZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuIiwgImltcG9ydCB7IExpbmssIEpzb25MaW5rIH0gZnJvbSBcImV4cHJlc3Npb24vbGlua1wiO1xuaW1wb3J0IHsgTGl0ZXJhbCwgTGl0ZXJhbHMgfSBmcm9tIFwiZXhwcmVzc2lvbi9saXRlcmFsXCI7XG5pbXBvcnQgeyBEYXRlVGltZSwgRHVyYXRpb24gfSBmcm9tIFwibHV4b25cIjtcbmltcG9ydCB7IG1hcE9iamVjdFZhbHVlcyB9IGZyb20gXCJ1dGlscy9kYXRhXCI7XG5cbi8qKiBKU09OLXNlcmlhbGl6ZWQgZXF1aXZhbGVudHMgZm9yIGxpdGVyYWxzLiAqL1xuZXhwb3J0IHR5cGUgSnNvbkxpdGVyYWwgPVxuICAgIHwgYm9vbGVhblxuICAgIHwgbnVtYmVyXG4gICAgfCBzdHJpbmdcbiAgICB8IHsgJF90eXBlOiBcImRhdGVcIjsgdmFsdWU6IHN0cmluZyB9XG4gICAgfCB7ICRfdHlwZTogXCJkdXJhdGlvblwiOyB2YWx1ZTogc3RyaW5nIH1cbiAgICB8IHsgJF90eXBlOiBcImxpbmtcIjsgdmFsdWU6IEpzb25MaW5rIH1cbiAgICB8IEFycmF5PEpzb25MaXRlcmFsPlxuICAgIHwgUmVjb3JkPHN0cmluZywgYW55PlxuICAgIHwgbnVsbDtcblxuZXhwb3J0IG5hbWVzcGFjZSBKc29uQ29udmVyc2lvbiB7XG4gICAgZXhwb3J0IGNvbnN0IE5PT1BfTk9STUFMSVpFUjogKGlucHV0OiBMaXRlcmFsKSA9PiBMaXRlcmFsID0gKGlucHV0KSA9PiBpbnB1dDtcblxuICAgIC8qKiBDb252ZXJ0IGEgbGl0ZXJhbCB2YWx1ZSB0byBhIHNhZmUsIHBlcnNpc3RlbnQgSlNPTiBlcXVpdmFsZW50LiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiBqc29uKGxpdGVyYWw6IExpdGVyYWwpOiBKc29uTGl0ZXJhbCB7XG4gICAgICAgIGNvbnN0IHdyYXBwZWQgPSBMaXRlcmFscy53cmFwVmFsdWUobGl0ZXJhbCk7XG4gICAgICAgIGlmICghd3JhcHBlZCkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgc3dpdGNoICh3cmFwcGVkPy50eXBlKSB7XG4gICAgICAgICAgICBjYXNlIFwiYXJyYXlcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZS5tYXAoSnNvbkNvbnZlcnNpb24uanNvbik7XG4gICAgICAgICAgICBjYXNlIFwib2JqZWN0XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1hcE9iamVjdFZhbHVlcyh3cmFwcGVkLnZhbHVlLCBKc29uQ29udmVyc2lvbi5qc29uKTtcbiAgICAgICAgICAgIGNhc2UgXCJkYXRlXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgJF90eXBlOiBcImRhdGVcIiwgdmFsdWU6IHdyYXBwZWQudmFsdWUudG9JU08oeyBleHRlbmRlZFpvbmU6IHRydWUsIGluY2x1ZGVPZmZzZXQ6IHRydWUgfSkgfTtcbiAgICAgICAgICAgIGNhc2UgXCJsaW5rXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgJF90eXBlOiBcImxpbmtcIiwgdmFsdWU6IHdyYXBwZWQudmFsdWUudG9PYmplY3QoKSB9O1xuICAgICAgICAgICAgY2FzZSBcImR1cmF0aW9uXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgJF90eXBlOiBcImR1cmF0aW9uXCIsIHZhbHVlOiB3cmFwcGVkLnZhbHVlLnRvSVNPKCkgfTtcbiAgICAgICAgICAgIGNhc2UgXCJib29sZWFuXCI6XG4gICAgICAgICAgICBjYXNlIFwibnVtYmVyXCI6XG4gICAgICAgICAgICBjYXNlIFwic3RyaW5nXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWU7XG4gICAgICAgICAgICBjYXNlIFwiZnVuY3Rpb25cIjpcbiAgICAgICAgICAgIGNhc2UgXCJudWxsXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0IGEgSlNPTiBsaXRlcmFsIHRvIGl0J3MgY29ycmVzcG9uZGluZyBoeWRyYXRlZCB2YWx1ZSwgb3B0aW9uYWxseSBhcHBseWluZ1xuICAgICAqIGEgbm9ybWFsaXphdGlvbiBzdGVwIHRvIHRoZSByZXN1bHRpbmcgdmFsdWUgYW5kIGFueSBsaXRlcmFscyBjb250YWluZWQgd2l0aGluIGl0XG4gICAgICogKHN1Y2ggYXMgaWYgdGhlIGxpdGVyYWwgaXMgYSBsaXN0IG9yIG9iamVjdCkuXG4gICAgICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIHZhbHVlKGpzb246IEpzb25MaXRlcmFsLCBub3JtYWxpemVyOiAoaW5wdXQ6IExpdGVyYWwpID0+IExpdGVyYWwgPSBOT09QX05PUk1BTElaRVIpOiBMaXRlcmFsIHtcbiAgICAgICAgaWYgKGpzb24gPT09IG51bGwgfHwganNvbiA9PT0gdW5kZWZpbmVkKSByZXR1cm4gbnVsbDtcblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShqc29uKSkge1xuICAgICAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZXIoanNvbi5tYXAoKGlucHV0KSA9PiBKc29uQ29udmVyc2lvbi52YWx1ZShpbnB1dCwgbm9ybWFsaXplcikpKTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YganNvbiA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICAgICAgaWYgKCEoXCIkX3R5cGVcIiBpbiBqc29uKSlcbiAgICAgICAgICAgICAgICByZXR1cm4gbWFwT2JqZWN0VmFsdWVzKGpzb24sICh2KSA9PiBKc29uQ29udmVyc2lvbi52YWx1ZSh2IGFzIEpzb25MaXRlcmFsLCBub3JtYWxpemVyKSk7XG5cbiAgICAgICAgICAgIGNvbnN0IHR5cGUgPSBqc29uW1wiJF90eXBlXCJdO1xuICAgICAgICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBcImRhdGVcIjpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZXIoRGF0ZVRpbWUuZnJvbUlTTyhqc29uLnZhbHVlKSk7XG4gICAgICAgICAgICAgICAgY2FzZSBcImR1cmF0aW9uXCI6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBub3JtYWxpemVyKER1cmF0aW9uLmZyb21JU08oanNvbi52YWx1ZSkpO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJsaW5rXCI6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBub3JtYWxpemVyKExpbmsuZnJvbU9iamVjdChqc29uLnZhbHVlKSk7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnJlY29nbml6ZWQgc2VyaWFsaXplZCB0eXBlICcke3R5cGV9JyFgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFByaW1pdGl2ZSB0eXBlLCByZXR1cm4gYXMgaXMuXG4gICAgICAgIHJldHVybiBub3JtYWxpemVyKGpzb24gYXMgTGl0ZXJhbCk7XG4gICAgfVxufVxuIiwgIi8qKlxuICogQG1vZHVsZSBpbmRleGFibGVzXG4gKi9cbi8qKiBVdGlsaXRpZXMgZm9yIGNvbnZlcnRpbmcgbGl0ZXJhbCB0eXBlcyB0byBhbmQgZnJvbSB0aGVpciBZQU1MIGZyb250bWF0dGVyIHJlcHJlc2VudGF0aW9uLiAqL1xuXG5pbXBvcnQgeyBMaXRlcmFsLCBMaXRlcmFscyB9IGZyb20gXCJleHByZXNzaW9uL2xpdGVyYWxcIjtcbmltcG9ydCB7IFBSSU1JVElWRVMgfSBmcm9tIFwiZXhwcmVzc2lvbi9wYXJzZXJcIjtcbmltcG9ydCB7IERhdGVUaW1lIH0gZnJvbSBcImx1eG9uXCI7XG5pbXBvcnQgeyBtYXBPYmplY3RWYWx1ZXMgfSBmcm9tIFwidXRpbHMvZGF0YVwiO1xuXG4vKiogWUFNTC1mcmllbmRseSByZXByZXNlbnRhdGlvbiBmb3IgYSBsaXRlcmFsLiAqL1xuZXhwb3J0IHR5cGUgWWFtbExpdGVyYWwgPSBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgbnVsbCB8IFJlY29yZDxzdHJpbmcsIGFueT4gfCBBcnJheTxZYW1sTGl0ZXJhbD47XG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgbmFtZXNwYWNlIFlhbWxDb252ZXJzaW9uIHtcbiAgICAvKiogQ29udmVydCBhIGxpdGVyYWwgaW50byBhIHlhbWwgZnJpZW5kbHkgcmVwcmVzZW50YXRpb24uICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIHlhbWwodmFsdWU6IExpdGVyYWwpOiBZYW1sTGl0ZXJhbCB7XG4gICAgICAgIGNvbnN0IHdyYXBwZWQgPSBMaXRlcmFscy53cmFwVmFsdWUobGl0ZXJhbCk7XG4gICAgICAgIGlmICghd3JhcHBlZCkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgc3dpdGNoICh3cmFwcGVkLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgXCJzdHJpbmdcIjpcbiAgICAgICAgICAgIGNhc2UgXCJib29sZWFuXCI6XG4gICAgICAgICAgICBjYXNlIFwibnVsbFwiOlxuICAgICAgICAgICAgY2FzZSBcIm51bWJlclwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB3cmFwcGVkLnZhbHVlO1xuICAgICAgICAgICAgY2FzZSBcImFycmF5XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWUubWFwKHlhbWwpO1xuICAgICAgICAgICAgY2FzZSBcImRhdGVcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZS50b0lTTygpO1xuICAgICAgICAgICAgY2FzZSBcImR1cmF0aW9uXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWUudG9IdW1hbigpO1xuICAgICAgICAgICAgY2FzZSBcImZ1bmN0aW9uXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICBjYXNlIFwibGlua1wiOlxuICAgICAgICAgICAgICAgIHJldHVybiB3cmFwcGVkLnZhbHVlLm1hcmtkb3duKCk7XG4gICAgICAgICAgICBjYXNlIFwib2JqZWN0XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1hcE9iamVjdFZhbHVlcyh3cmFwcGVkLnZhbHVlLCB5YW1sKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBSZWN1cnNpdmVseSBjb252ZXJ0IGEgWUFNTCBsaXRlcmFsIGludG8gYSByZWd1bGFyIGxpdGVyYWwgdmFsdWUuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGxpdGVyYWwodmFsdWU6IFlhbWxMaXRlcmFsKTogTGl0ZXJhbCB7XG4gICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSBbXTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBjaGlsZCBvZiB2YWx1ZSBhcyBBcnJheTxhbnk+KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGxpdGVyYWwoY2hpbGQpKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgICAgICAgICAgICBsZXQgZGF0ZVBhcnNlID0gRGF0ZVRpbWUuZnJvbUpTRGF0ZSh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGVQYXJzZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbGV0IG9iamVjdCA9IHZhbHVlIGFzIFJlY29yZDxzdHJpbmcsIGFueT47XG4gICAgICAgICAgICAgICAgbGV0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgTGl0ZXJhbD4gPSB7fTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBrZXkgaW4gb2JqZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdFtrZXldID0gbGl0ZXJhbChvYmplY3Rba2V5XSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09IFwiYm9vbGVhblwiKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICBsZXQgZGF0ZVBhcnNlID0gUFJJTUlUSVZFUy5kYXRlLnBhcnNlKHZhbHVlKTtcbiAgICAgICAgICAgIGlmIChkYXRlUGFyc2Uuc3RhdHVzKSByZXR1cm4gZGF0ZVBhcnNlLnZhbHVlO1xuXG4gICAgICAgICAgICBsZXQgZHVyYXRpb25QYXJzZSA9IFBSSU1JVElWRVMuZHVyYXRpb24ucGFyc2UodmFsdWUpO1xuICAgICAgICAgICAgaWYgKGR1cmF0aW9uUGFyc2Uuc3RhdHVzKSByZXR1cm4gZHVyYXRpb25QYXJzZS52YWx1ZTtcblxuICAgICAgICAgICAgbGV0IGxpbmtQYXJzZSA9IFBSSU1JVElWRVMubGluay5wYXJzZSh2YWx1ZSk7XG4gICAgICAgICAgICBpZiAobGlua1BhcnNlLnN0YXR1cykgcmV0dXJuIGxpbmtQYXJzZS52YWx1ZTtcblxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQmFja3VwIGlmIHdlIGRvbid0IHVuZGVyc3RhbmQgdGhlIHR5cGUuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbn1cbiIsICJpbXBvcnQgeyBGaWxlU3RhdHMgfSBmcm9tIFwib2JzaWRpYW5cIjtcbmltcG9ydCB7IGl0ZXJhdGVJbmxpbmVGaWVsZHMsIG1hcmtkb3duU291cmNlSW1wb3J0LCBNZXRhZGF0YSwgU2VjdGlvbkRhdGEgfSBmcm9tIFwiLi9tYXJrZG93blwiO1xuaW1wb3J0IHsgSnNvbkZyb250bWF0dGVyRW50cnkgfSBmcm9tIFwiaW5kZXgvdHlwZXMvanNvbi9tYXJrZG93blwiO1xuaW1wb3J0IHtcbiAgICBDYW52YXNNZXRhZGF0YUluZGV4LFxuICAgIEpzb25CYXNlQ2FudmFzQ2FyZCxcbiAgICBKc29uQ2FudmFzLFxuICAgIEpzb25DYW52YXNDYXJkLFxuICAgIEpzb25DYW52YXNGaWxlQ2FyZCxcbiAgICBKc29uQ2FudmFzVGV4dENhcmQsXG4gICAgSnNvbkNhbnZhc1dlYkNhcmQsXG59IGZyb20gXCJpbmRleC90eXBlcy9qc29uL2NhbnZhc1wiO1xuaW1wb3J0IHsgQ2FudmFzRmlsZURhdGEsIENhbnZhc0xpbmtEYXRhLCBDYW52YXNUZXh0RGF0YSwgQ2FudmFzRGF0YSBhcyBJQ2FudmFzIH0gZnJvbSBcIm9ic2lkaWFuL2NhbnZhc1wiO1xuaW1wb3J0IHsgTGluayB9IGZyb20gXCJleHByZXNzaW9uL2xpbmtcIjtcblxuLyoqIEltcG9ydCBhIGNhbnZhcyBmaWxlIHVzaW5nIHRoZSBjYW52YXMgbWV0YWRhdGEuICovXG5leHBvcnQgZnVuY3Rpb24gY2FudmFzSW1wb3J0KFxuICAgIHBhdGg6IHN0cmluZyxcbiAgICBzb3VyY2U6IHN0cmluZyxcbiAgICBpbmRleDogQ2FudmFzTWV0YWRhdGFJbmRleFtcInN0cmluZ1wiXSxcbiAgICBzdGF0czogRmlsZVN0YXRzXG4pOiBKc29uQ2FudmFzIHtcbiAgICBjb25zdCBjYW52YXMgPSBuZXcgQ2FudmFzRGF0YShwYXRoLCBzdGF0cyk7XG4gICAgY29uc3QgcGFyc2VkID0gSlNPTi5wYXJzZShzb3VyY2UpIGFzIElDYW52YXM7XG5cbiAgICBmb3IgKGNvbnN0IGMgb2YgcGFyc2VkLm5vZGVzKSB7XG4gICAgICAgIGlmIChjLnR5cGUgPT0gXCJncm91cFwiKSBjb250aW51ZTtcbiAgICAgICAgaWYgKGMudHlwZSA9PSBcInRleHRcIikge1xuICAgICAgICAgICAgY29uc3QgeyBmcm9udG1hdHRlciwgbWV0YWRhdGEsIGxpbmVzLCBzZWN0aW9ucyB9ID0gbWFya2Rvd25Tb3VyY2VJbXBvcnQocGF0aCwgYy50ZXh0LCBpbmRleD8uY2FjaGVzW2MuaWRdKTtcbiAgICAgICAgICAgIGNvbnN0IGNhcmQgPSBuZXcgQ2FudmFzQ2FyZERhdGEocGF0aCwgYy5pZCwgYywgZnJvbnRtYXR0ZXIpO1xuICAgICAgICAgICAgc2VjdGlvbnMuZm9yRWFjaCgoaSkgPT4gY2FyZC5zZWN0aW9uKGkpKTtcbiAgICAgICAgICAgIGNhbnZhcy5jYXJkKGNhcmQpO1xuICAgICAgICAgICAgZm9yIChjb25zdCB0YWcgaW4gbWV0YWRhdGEudGFncykgY2FudmFzLm1ldGFkYXRhLnRhZyh0YWcpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBsaW5rIG9mIG1ldGFkYXRhLmxpbmtzID8/IFtdKSBjYW52YXMubWV0YWRhdGEubGluayhsaW5rKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZmllbGQgb2YgaXRlcmF0ZUlubGluZUZpZWxkcyhsaW5lcykpIGNhbnZhcy5tZXRhZGF0YS5pbmxpbmVGaWVsZChmaWVsZCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBjYXJkID0gbmV3IENhbnZhc0NhcmREYXRhKHBhdGgsIGMuaWQsIGMpO1xuICAgICAgICAgICAgY2FudmFzLmNhcmQoY2FyZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY2FudmFzLmJ1aWxkKCk7XG59XG5cbi8qKiBNZXRhZGF0YSBmb3IgYSBzcGVjaWZpYyBjYW52YXMgY2FyZC4gKi9cbmFic3RyYWN0IGNsYXNzIEFic3RyYWN0Q2FudmFzQ2FyZERhdGEge1xuICAgIHB1YmxpYyBtZXRhZGF0YTogTWV0YWRhdGEgPSBuZXcgTWV0YWRhdGEoKTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIHBhdGg6IHN0cmluZyxcbiAgICAgICAgcHVibGljIGlkOiBzdHJpbmcsXG4gICAgICAgIHByb3RlY3RlZCBub2RlSnNvbjogQ2FudmFzVGV4dERhdGEgfCBDYW52YXNMaW5rRGF0YSB8IENhbnZhc0ZpbGVEYXRhXG4gICAgKSB7fVxuXG4gICAgcHVibGljIGJ1aWxkKCk6IEpzb25CYXNlQ2FudmFzQ2FyZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAkZmlsZTogdGhpcy5wYXRoLFxuICAgICAgICAgICAgJGlkOiB0aGlzLmlkLFxuICAgICAgICAgICAgJHBvc2l0aW9uOiB7XG4gICAgICAgICAgICAgICAgeDogdGhpcy5ub2RlSnNvbi54LFxuICAgICAgICAgICAgICAgIHk6IHRoaXMubm9kZUpzb24ueSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAkZGltZW5zaW9uczoge1xuICAgICAgICAgICAgICAgIHdpZHRoOiB0aGlzLm5vZGVKc29uLndpZHRoLFxuICAgICAgICAgICAgICAgIGhlaWdodDogdGhpcy5ub2RlSnNvbi5oZWlnaHQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJGNvbG9yOiB0aGlzLm5vZGVKc29uLmNvbG9yLFxuICAgICAgICAgICAgJGxpbms6IExpbmsuZmlsZSh0aGlzLnBhdGgpLndpdGhCbG9jayh0aGlzLmlkKS50b09iamVjdCgpLFxuICAgICAgICB9O1xuICAgIH1cbn1cblxuLyoqIE1ldGFkYXRhIGZvciBhIHNwZWNpZmljIGNhcmQgaW4gYSBjYW52YXMgdmlldy4gKi9cbmV4cG9ydCBjbGFzcyBDYW52YXNDYXJkRGF0YSBleHRlbmRzIEFic3RyYWN0Q2FudmFzQ2FyZERhdGEge1xuICAgIHB1YmxpYyBzZWN0aW9uczogU2VjdGlvbkRhdGFbXSA9IFtdO1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIHBhdGg6IHN0cmluZyxcbiAgICAgICAgcHVibGljIGlkOiBzdHJpbmcsXG4gICAgICAgIHByb3RlY3RlZCBub2RlSnNvbjogQ2FudmFzVGV4dERhdGEgfCBDYW52YXNMaW5rRGF0YSB8IENhbnZhc0ZpbGVEYXRhLFxuICAgICAgICBwdWJsaWMgZnJvbnRtYXR0ZXI/OiBSZWNvcmQ8c3RyaW5nLCBKc29uRnJvbnRtYXR0ZXJFbnRyeT5cbiAgICApIHtcbiAgICAgICAgc3VwZXIocGF0aCwgaWQsIG5vZGVKc29uKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2VjdGlvbihzZWN0aW9uOiBTZWN0aW9uRGF0YSk6IFNlY3Rpb25EYXRhIHtcbiAgICAgICAgdGhpcy5zZWN0aW9ucy5wdXNoKHNlY3Rpb24pO1xuICAgICAgICByZXR1cm4gc2VjdGlvbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgYnVpbGQoKTogSnNvbkNhbnZhc0NhcmQge1xuICAgICAgICBzd2l0Y2ggKHRoaXMubm9kZUpzb24udHlwZSkge1xuICAgICAgICAgICAgY2FzZSBcInRleHRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAuLi4oc3VwZXIuYnVpbGQoKSBhcyBKc29uQmFzZUNhbnZhc0NhcmQpLFxuICAgICAgICAgICAgICAgICAgICAkaW5maWVsZHM6IHRoaXMubWV0YWRhdGEuZmluaXNoSW5saW5lRmllbGRzKCksXG4gICAgICAgICAgICAgICAgICAgICRmcm9udG1hdHRlcjogdGhpcy5mcm9udG1hdHRlcixcbiAgICAgICAgICAgICAgICAgICAgJHNlY3Rpb25zOiB0aGlzLnNlY3Rpb25zLm1hcCgoeCkgPT4geC5idWlsZCgpKSxcbiAgICAgICAgICAgICAgICAgICAgJHRhZ3M6IHRoaXMubWV0YWRhdGEuZmluaXNoVGFncygpLFxuICAgICAgICAgICAgICAgICAgICAkbGlua3M6IHRoaXMubWV0YWRhdGEuZmluaXNoTGlua3MoKSxcbiAgICAgICAgICAgICAgICAgICAgJHR5cGU6IFwidGV4dC1jYXJkXCIsXG4gICAgICAgICAgICAgICAgICAgICRjb2xvcjogdGhpcy5ub2RlSnNvbi5jb2xvcixcbiAgICAgICAgICAgICAgICB9IGFzIEpzb25DYW52YXNUZXh0Q2FyZDtcbiAgICAgICAgICAgIGNhc2UgXCJmaWxlXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgLi4uc3VwZXIuYnVpbGQoKSxcbiAgICAgICAgICAgICAgICAgICAgJGxpbmtlZEZpbGU6IHRoaXMubm9kZUpzb24uZmlsZSxcbiAgICAgICAgICAgICAgICB9IGFzIEpzb25DYW52YXNGaWxlQ2FyZDtcbiAgICAgICAgICAgIGNhc2UgXCJsaW5rXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgLi4uc3VwZXIuYnVpbGQoKSxcbiAgICAgICAgICAgICAgICAgICAgJHVybDogdGhpcy5ub2RlSnNvbi51cmwsXG4gICAgICAgICAgICAgICAgfSBhcyBKc29uQ2FudmFzV2ViQ2FyZDtcbiAgICAgICAgICAgIC8vIHJldHVybiBuZXdcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLyoqIE1ldGFkYXRhIGZvciB0aGUgd2hvbGUgY2FudmFzIHBhZ2UgYXMgYSB3aG9sZS4gKi9cbmV4cG9ydCBjbGFzcyBDYW52YXNEYXRhIHtcbiAgICBwdWJsaWMgY2FyZHM6IENhbnZhc0NhcmREYXRhW10gPSBbXTtcbiAgICBwdWJsaWMgbWV0YWRhdGE6IE1ldGFkYXRhID0gbmV3IE1ldGFkYXRhKCk7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IocHVibGljIHBhdGg6IHN0cmluZywgcHVibGljIHN0YXRzOiBGaWxlU3RhdHMpIHt9XG5cbiAgICBwdWJsaWMgY2FyZChkOiBDYW52YXNDYXJkRGF0YSk6IENhbnZhc0NhcmREYXRhIHtcbiAgICAgICAgdGhpcy5jYXJkcy5wdXNoKGQpO1xuICAgICAgICByZXR1cm4gZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYnVpbGQoKTogSnNvbkNhbnZhcyB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAkY2FyZHM6IHRoaXMuY2FyZHMubWFwKCh4KSA9PiB4LmJ1aWxkKCkpLFxuICAgICAgICAgICAgJGN0aW1lOiB0aGlzLnN0YXRzLmN0aW1lLFxuICAgICAgICAgICAgJG10aW1lOiB0aGlzLnN0YXRzLm10aW1lLFxuICAgICAgICAgICAgJGluZmllbGRzOiB0aGlzLm1ldGFkYXRhLmZpbmlzaElubGluZUZpZWxkcygpLFxuICAgICAgICAgICAgJGxpbmtzOiB0aGlzLm1ldGFkYXRhLmZpbmlzaExpbmtzKCksXG4gICAgICAgICAgICAkdGFnczogdGhpcy5tZXRhZGF0YS5maW5pc2hUYWdzKCksXG4gICAgICAgICAgICAkcGF0aDogdGhpcy5wYXRoLFxuICAgICAgICAgICAgJHNpemU6IHRoaXMuc3RhdHMuc2l6ZSxcbiAgICAgICAgfTtcbiAgICB9XG59XG4iLCAiaW1wb3J0IHsgY2FudmFzSW1wb3J0IH0gZnJvbSBcImluZGV4L2ltcG9ydC9jYW52YXNcIjtcbmltcG9ydCB7IG1hcmtkb3duSW1wb3J0IH0gZnJvbSBcImluZGV4L2ltcG9ydC9tYXJrZG93blwiO1xuaW1wb3J0IHsgQ2FudmFzSW1wb3J0UmVzdWx0LCBJbXBvcnRDb21tYW5kLCBNYXJrZG93bkltcG9ydFJlc3VsdCB9IGZyb20gXCJpbmRleC93ZWItd29ya2VyL21lc3NhZ2VcIjtcblxuLyoqIFdlYiB3b3JrZXIgZW50cnkgcG9pbnQgZm9yIGltcG9ydGluZy4gKi9cbm9ubWVzc2FnZSA9IGFzeW5jIChldmVudCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBldmVudC5kYXRhIGFzIEltcG9ydENvbW1hbmQ7XG5cbiAgICAgICAgaWYgKG1lc3NhZ2UudHlwZSA9PT0gXCJtYXJrZG93blwiKSB7XG4gICAgICAgICAgICBjb25zdCBtYXJrZG93biA9IG1hcmtkb3duSW1wb3J0KG1lc3NhZ2UucGF0aCwgbWVzc2FnZS5jb250ZW50cywgbWVzc2FnZS5tZXRhZGF0YSwgbWVzc2FnZS5zdGF0KTtcblxuICAgICAgICAgICAgcG9zdE1lc3NhZ2Uoe1xuICAgICAgICAgICAgICAgIHR5cGU6IFwibWFya2Rvd25cIixcbiAgICAgICAgICAgICAgICByZXN1bHQ6IG1hcmtkb3duLFxuICAgICAgICAgICAgfSBhcyBNYXJrZG93bkltcG9ydFJlc3VsdCk7XG4gICAgICAgIH0gZWxzZSBpZiAobWVzc2FnZS50eXBlID09PSBcImNhbnZhc1wiKSB7XG4gICAgICAgICAgICBjb25zdCBjYW52YXMgPSBjYW52YXNJbXBvcnQobWVzc2FnZS5wYXRoLCBtZXNzYWdlLmNvbnRlbnRzLCBtZXNzYWdlLmluZGV4LCBtZXNzYWdlLnN0YXQpO1xuXG4gICAgICAgICAgICBwb3N0TWVzc2FnZSh7XG4gICAgICAgICAgICAgICAgdHlwZTogXCJjYW52YXNcIixcbiAgICAgICAgICAgICAgICByZXN1bHQ6IGNhbnZhcyxcbiAgICAgICAgICAgIH0gYXMgQ2FudmFzSW1wb3J0UmVzdWx0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBvc3RNZXNzYWdlKHsgJGVycm9yOiBcIlVuc3VwcG9ydGVkIGltcG9ydCBtZXRob2QuXCIgfSk7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBEYXRhY29yZSBJbmRleGVyIGZhaWxlZCB0byBpbmRleCAke2V2ZW50LmRhdGEucGF0aH06ICR7ZXJyb3J9YCk7XG4gICAgICAgIHBvc3RNZXNzYWdlKHsgJGVycm9yOiBlcnJvci5tZXNzYWdlIH0pO1xuICAgIH1cbn07XG4iXSwKICAibWFwcGluZ3MiOiAiMGpEQUFBLElBQUFBLEdBQUFDLEdBQUEsQ0FBQUMsR0FBQUMsS0FBQSxFQUFDLFNBQVMsRUFBRUMsRUFBRSxDQUFXLE9BQU9GLElBQWpCLFVBQW9DLE9BQU9DLElBQWpCLFNBQXdCQSxHQUFPLFFBQVFDLEVBQUUsRUFBYyxPQUFPLFFBQW5CLFlBQTJCLE9BQU8sSUFBSSxPQUFPLENBQUMsRUFBRUEsQ0FBQyxFQUFZLE9BQU9GLElBQWpCLFNBQXlCQSxHQUFRLFVBQVVFLEVBQUUsRUFBRSxFQUFFLFVBQVVBLEVBQUUsQ0FBQyxHQUFlLE9BQU8sTUFBcEIsWUFBeUIsS0FBS0YsR0FBSyxVQUFVLENBQUMsT0FBTyxTQUFTLEVBQUUsQ0FBQyxJQUFJRSxFQUFFLENBQUMsRUFBRSxTQUFTQyxFQUFFQyxFQUFFLENBQUMsR0FBR0YsRUFBRUUsQ0FBQyxFQUFFLE9BQU9GLEVBQUVFLENBQUMsRUFBRSxRQUFRLElBQUlDLEVBQUVILEVBQUVFLENBQUMsRUFBRSxDQUFDLEVBQUVBLEVBQUUsRUFBRSxHQUFHLFFBQVEsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFQSxDQUFDLEVBQUUsS0FBS0MsRUFBRSxRQUFRQSxFQUFFQSxFQUFFLFFBQVFGLENBQUMsRUFBRUUsRUFBRSxFQUFFLEdBQUdBLEVBQUUsT0FBTyxDQUFDLE9BQU9GLEVBQUUsRUFBRSxFQUFFQSxFQUFFLEVBQUVELEVBQUVDLEVBQUUsRUFBRSxTQUFTRyxFQUFFSixFQUFFRSxFQUFFLENBQUNELEVBQUUsRUFBRUcsRUFBRUosQ0FBQyxHQUFHLE9BQU8sZUFBZUksRUFBRUosRUFBRSxDQUFDLGFBQWEsR0FBRyxXQUFXLEdBQUcsSUFBSUUsQ0FBQyxDQUFDLENBQUMsRUFBRUQsRUFBRSxFQUFFLFNBQVNHLEVBQUUsQ0FBQyxPQUFPLGVBQWVBLEVBQUUsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRUgsRUFBRSxFQUFFLFNBQVNHLEVBQUUsQ0FBQyxJQUFJSixFQUFFSSxHQUFHQSxFQUFFLFdBQVcsVUFBVSxDQUFDLE9BQU9BLEVBQUUsT0FBTyxFQUFFLFVBQVUsQ0FBQyxPQUFPQSxDQUFDLEVBQUUsT0FBT0gsRUFBRSxFQUFFRCxFQUFFLElBQUlBLENBQUMsRUFBRUEsQ0FBQyxFQUFFQyxFQUFFLEVBQUUsU0FBU0csRUFBRUosRUFBRSxDQUFDLE9BQU8sT0FBTyxVQUFVLGVBQWUsS0FBS0ksRUFBRUosQ0FBQyxDQUFDLEVBQUVDLEVBQUUsRUFBRSxHQUFHQSxFQUFFQSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUVELEVBQUVDLEVBQUUsQ0FBQyxhQUFhLFNBQVNDLEVBQUVFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsZ0JBQWdCRixHQUFHLE9BQU8sSUFBSUEsRUFBRUUsQ0FBQyxFQUFFLEtBQUssRUFBRUEsQ0FBQyxDQUFDLElBQUlELEVBQUVELEVBQUUsVUFBVSxTQUFTRyxFQUFFRCxFQUFFSixFQUFFLENBQUMsUUFBUUMsRUFBRSxFQUFFQSxFQUFFRyxFQUFFSCxJQUFJRCxFQUFFQyxDQUFDLENBQUMsQ0FBQyxTQUFTSyxFQUFFRixFQUFFSixFQUFFQyxFQUFFLENBQUMsT0FBTyxTQUFTRyxFQUFFSixFQUFFLENBQUNLLEVBQUVMLEVBQUUsT0FBTyxTQUFTQyxFQUFFLENBQUNHLEVBQUVKLEVBQUVDLENBQUMsRUFBRUEsRUFBRUQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVNDLEVBQUVDLEVBQUVDLEVBQUUsQ0FBQ0gsRUFBRUksRUFBRUosRUFBRUMsRUFBRUMsRUFBRUMsQ0FBQyxDQUFDLEVBQUVGLENBQUMsRUFBRUQsQ0FBQyxDQUFDLFNBQVMsRUFBRUksRUFBRUosRUFBRSxDQUFDLE9BQU9NLEVBQUUsU0FBU04sRUFBRUMsRUFBRUMsRUFBRUMsRUFBRSxDQUFDLE9BQU9ILEVBQUUsT0FBTyxDQUFDSSxFQUFFSCxFQUFFQyxFQUFFQyxDQUFDLENBQUMs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LENBQUMsQ0FBQyxFQUFFQSxFQUFFLENBQUMsR0FBR0ksQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLFNBQVNKLEVBQUVDLEVBQUUsQ0FBQyxNQUFNLENBQUNELEVBQUVJLEVBQUVILENBQUMsQ0FBQyxDQUFDLEVBQUVFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssU0FBU0MsRUFBRSxDQUFDLEdBQUdLLEVBQUUsRUFBRW1CLEdBQUV4QixDQUFDLEVBQUVBLEVBQUUsSUFBSSxNQUFNLElBQUksTUFBTSx3Q0FBd0NBLEVBQUUsTUFBTUEsRUFBRSxTQUFTLEVBQUUsRUFBRSwwQ0FBMEMsRUFBRSxJQUFJSixHQUFHSSxFQUFFLEdBQUcsS0FBSyxPQUFPQSxFQUFFLFNBQVMsRUFBRSxFQUFFLE9BQU9GLEVBQUUsU0FBU0QsRUFBRUMsRUFBRSxDQUFDLElBQUlDLEVBQUV3QixFQUFFMUIsRUFBRUMsQ0FBQyxFQUFFLE9BQU9DLElBQUlDLEVBQUVRLEVBQUVWLEVBQUUsRUFBRUMsQ0FBQyxFQUFFUSxFQUFFVCxFQUFFRixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxTQUFTSSxFQUFFLENBQUMsT0FBT1MsRUFBRSxTQUFTVCxDQUFDLEVBQUUsSUFBSSxTQUFTQSxFQUFFLENBQUMsT0FBTyxPQUFPLEtBQUtBLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxjQUFjLFNBQVNBLEVBQUVKLEVBQUUsQ0FBQyxPQUFPYSxFQUFFLFNBQVNiLENBQUMsRUFBRSxJQUFJLFNBQVNBLEVBQUUsQ0FBQyxPQUFPQSxFQUFFLFNBQVNJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPVyxFQUFFLFFBQVFBLEVBQUUsQ0FBQyxFQUFFLFNBQVNBLEVBQUUsQ0FBQyxFQUFFLFNBQVNBLEVBQUUsQ0FBQyxFQUFFLE9BQU9DLEVBQUUsUUFBUUEsRUFBRSxDQUFDLEVBQUUsU0FBU0EsRUFBRSxDQUFDLEVBQUUsU0FBU0EsRUFBRSxDQUFDLEVBQUUsTUFBTUMsRUFBRSxPQUFPQSxFQUFFLENBQUMsRUFBRSxR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RSxDQUFDLEVBRXJDLE1BQU9BLEVBQVMsV0FBVyxDQUFFLE9BQVEsQ0FBRSxDQUFDLEVBQ3hDLE9BQVFBLEVBQVMsV0FBVyxDQUFFLE9BQVEsQ0FBRSxDQUFDLEVBQ3pDLEdBQUlBLEVBQVMsV0FBVyxDQUFFLE9BQVEsQ0FBRSxDQUFDLEVBQ3JDLElBQUtBLEVBQVMsV0FBVyxDQUFFLE9BQVEsQ0FBRSxDQUFDLEVBRXRDLEtBQU1BLEVBQVMsV0FBVyxDQUFFLE1BQU8sQ0FBRSxDQUFDLEVBQ3RDLE1BQU9BLEVBQVMsV0FBVyxDQUFFLE1BQU8sQ0FBRSxDQUFDLEVBQ3ZDLEdBQUlBLEVBQVMsV0FBVyxDQUFFLE1BQU8sQ0FBRSxDQUFDLEVBQ3BDLElBQUtBLEVBQVMsV0FBVyxDQUFFLE1BQU8sQ0FBRSxDQUFDLEVBQ3JDLEVBQUdBLEVBQVMsV0FBVyxDQUFFLE1BQU8sQ0FBRSxDQUFDLEVBRW5DLElBQUtBLEVBQVMsV0FBVyxDQUFFLEtBQU0sQ0FBRSxDQUFDLEVBQ3BDLEtBQU1BLEVBQVMsV0FBVyxDQUFFLEtBQU0sQ0FBRSxDQUFDLEVBQ3JDLEVBQUdBLEVBQVMsV0FBVyxDQUFFLEtBQU0sQ0FBRSxDQUFDLEVBRWxDLEtBQU1BLEVBQVMsV0FBVyxDQUFFLE1BQU8sQ0FBRSxDQUFDLEVBQ3RDLE1BQU9BLEVBQVMsV0FBVyxDQUFFLE1BQU8sQ0FBRSxDQUFDLEVBQ3ZDLEdBQUlBLEVBQVMsV0FBVyxDQUFFLE1BQU8sQ0FBRSxDQUFDLEVBQ3BDLElBQUtBLEVBQVMsV0FBVyxDQUFFLE1BQU8sQ0FBRSxDQUFDLEVBQ3JDLEVBQUdBLEVBQVMsV0FBVyxDQUFFLE1BQU8sQ0FBRSxDQUFDLEVBRW5DLE9BQVFBLEVBQVMsV0FBVyxDQUFFLFFBQVMsQ0FBRSxDQUFDLEVBQzFDLFFBQVNBLEVBQVMsV0FBVyxDQUFFLFFBQVMsQ0FBRSxDQUFDLEVBQzNDLElBQUtBLEVBQVMsV0FBVyxDQUFFLFFBQVMsQ0FBRSxDQUFDLEVBQ3ZDLEtBQU1BLEVBQVMsV0FBVyxDQUFFLFFBQVMsQ0FBRSxDQUFDLEVBQ3hDLEVBQUdB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QVEsTUFBT0EsRUFBUSxJQUFJLEVBRXZGLFlBQVksQ0FDUixLQUFNLFNBQ04sT0FBUUcsQ0FDWixDQUF1QixDQUMzQixNQUNJLFlBQVksQ0FBRSxPQUFRLDRCQUE2QixDQUFDLENBRTVELE9BQVNFLEVBQU8sQ0FDWixRQUFRLE1BQU0sb0NBQW9DTixFQUFNLEtBQUssSUFBSSxLQUFLTSxDQUFLLEVBQUUsRUFDN0UsWUFBWSxDQUFFLE9BQVFBLEVBQU0sT0FBUSxDQUFDLENBQ3pDLENBQ0oiLAogICJuYW1lcyI6IFsicmVxdWlyZV9wYXJzaW1tb25fdW1kX21pbiIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgInQiLCAiciIsICJlIiwgInUiLCAibiIsICJvIiwgImkiLCAiZiIsICJjIiwgInMiLCAibCIsICJ4IiwgImIiLCAiaCIsICJwIiwgImQiLCAidiIsICJnIiwgIm0iLCAieSIsICJFIiwgInciLCAiQiIsICJhIiwgImoiLCAiUyIsICJfIiwgIkwiLCAiTyIsICJrIiwgIlAiLCAicSIsICJBIiwgIkkiLCAiRiIsICJNIiwgInoiLCAiUiIsICJVIiwgIlciLCAiRCIsICJOIiwgIkciLCAiQyIsICJKIiwgIlQiLCAiWSIsICJWIiwgIkgiLCAiWCIsICJLIiwgIlEiLCAiWiIsICIkIiwgIm5uIiwgInRuIiwgInJuIiwgImFuIiwgImVuIiwgInVuIiwgIm9uIiwgImZuIiwgImNuIiwgInNuIiwgImxuIiwgImhuIiwgInBuIiwgImRuIiwgInZuIiwgImduIiwgIm1uIiwgInluIiwgInJlcXVpcmVfYl90cmVlIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJfX2V4dGVuZHMiLCAiZXh0ZW5kU3RhdGljcyIsICJkIiwgImIiLCAicCIsICJfXyIsICJkZWZhdWx0Q29tcGFyYXRvciIsICJhIiwgInRhIiwgInRiIiwgInNpbXBsZUNvbXBhcmF0b3IiLCAiQlRyZWUiLCAiZW50cmllcyIsICJjb21wYXJlIiwgIm1heE5vZGVTaXplIiwgIkVtcHR5TGVhZiIsICJjYWxsYmFjayIsICJ0aGlzQXJnIiwgIl90aGlzIiwgImsiLCAidiIsICJpbml0aWFsQ291bnRlciIsICJsb3ciLCAiaGlnaCIsICJrZXkiLCAiZGVmYXVsdFZhbHVlIiwgInZhbHVlIiwgIm92ZXJ3cml0ZSIsICJyZXN1bHQiLCAiQk5vZGVJbnRlcm5hbCIsICJEZWxldGVSYW5nZSIsICJudSIsICJwYWlycyIsICJrZXlzIiwgInJldHVyblRoaXNJZlVuY2hhbmdlZCIsICJjaGFuZ2VkIiwgImluY2x1ZGVIaWdoIiwgImRlbCIsICJpIiwgIkRlbGV0ZSIsICJ0bXAiLCAiaW5pdGlhbFZhbHVlIiwgIml0IiwgIlJldXNlZEFycmF5IiwgIm5leHQiLCAibG93ZXN0S2V5IiwgInJldXNlZEFycmF5IiwgImluZm8iLCAiaXRlcmF0b3IiLCAibm9kZXF1ZXVlIiwgIm5vZGVpbmRleCIsICJsZWFmIiwgInN0YXRlIiwgImp1bXAiLCAibGV2ZWwiLCAiaGlnaGVzdEtleSIsICJza2lwSGlnaGVzdCIsICJfYSIsICJjaGVjayIsICJuZXh0bm9kZSIsICJFbXB0eUFycmF5IiwgIm90aGVyIiwgIm9ubHlUaGlzIiwgIm9ubHlPdGhlciIsICJkaWZmZXJlbnQiLCAiX2NvbXBhcmUiLCAidGhpc0N1cnNvciIsICJvdGhlckN1cnNvciIsICJ0aGlzU3VjY2VzcyIsICJvdGhlclN1Y2Nlc3MiLCAicHJldkN1cnNvck9yZGVyIiwgImN1cnNvck9yZGVyIiwgInRoaXNMZWFmIiwgInRoaXNJbnRlcm5hbFNwaW5lIiwgInRoaXNMZXZlbEluZGljZXMiLCAib3RoZXJMZWFmIiwgIm90aGVySW50ZXJuYWxTcGluZSIsICJvdGhlckxldmVsSW5kaWNlcyIsICJ2YWxUaGlzIiwgInZhbE90aGVyIiwgIm90aGVyVmFsIiwgImxhc3RUaGlzIiwgImxhc3RPdGhlciIsICJub2RlVGhpcyIsICJub2RlT3RoZXIiLCAiY3Vyc29yIiwgImN1cnNvckZpbmlzaGVkIiwgImNvbXBhcmVLZXlzIiwgImNvbXBhcmVkIiwgImNhblN0ZXAiLCAibGV2ZWxJbmRpY2VzIiwgImN1cnJlbnRLZXkiLCAidHJlZSIsICJfcm9vdCIsICJoZWlnaHQiLCAic3RlcFRvTm9kZSIsICJpbnRlcm5hbFNwaW5lIiwgImxldmVsc0xlbmd0aCIsICJzcGluZUxlbmd0aCIsICJub2RlTGV2ZWxJbmRleCIsICJsZXZlbEluZGV4V2Fsa0JhY2siLCAidmFsdWVJbmRleCIsICJuZXh0TGV2ZWwiLCAiY3VycmVudExldmVsIiwgIm5vZGUiLCAiY2hpbGRyZW4iLCAiY2hpbGRJbmRleCIsICJjdXJzb3JBIiwgImN1cnNvckIiLCAiaGVpZ2h0QSIsICJjdXJyZW50S2V5QSIsICJsZXZlbEluZGljZXNBIiwgImhlaWdodEIiLCAiY3VycmVudEtleUIiLCAibGV2ZWxJbmRpY2VzQiIsICJrZXlDb21wYXJpc29uIiwgImhlaWdodE1pbiIsICJkZXB0aEFOb3JtYWxpemVkIiwgImRlcHRoQk5vcm1hbGl6ZWQiLCAiZmlyc3RLZXkiLCAibiIsICJmb3JjZSIsICJtYXhMZW5ndGgiLCAibWluIiwgIm1heCIsICJyZXN1bHRzIiwgIkJyZWFrIiwgImFkZGVkIiwgIm9uRm91bmQiLCAiciIsICJyb290IiwgImlzU2hhcmVkIiwgInQiLCAic2l6ZSIsICJhc1NldCIsICJidHJlZSIsICJCTm9kZSIsICJ2YWx1ZXMiLCAidW5kZWZWYWxzIiwgImZhaWxYb3IiLCAiY21wIiwgImxvIiwgImhpIiwgIm1pZCIsICJjIiwgImxhc3RJbmRleCIsICJpbmNsdXNpdmUiLCAiaW5kZXhPckxvd2VyIiwgImRlcHRoIiwgImJhc2VJbmRleCIsICJrTCIsICJ2TCIsICJuZXdSaWdodFNpYmxpbmciLCAidGFyZ2V0IiwgInJocyIsICJsaHMiLCAiaGFsZiIsICJlZGl0TW9kZSIsICJjb3VudCIsICJpTG93IiwgImlIaWdoIiwgIl8iLCAiX3N1cGVyIiwgImxlbmd0aCIsICJjTCIsICJjaGlsZFNpemUiLCAidG9vZmV3IiwgImNoaWxkIiwgIm1heFNpemUiLCAib2xkTGVuZ3RoIiwgInJoc0NoaWxkcmVuIiwgImZhY3QiLCAiYXJncyIsICJfaSIsICJMdXhvbkVycm9yIiwgIkludmFsaWREYXRlVGltZUVycm9yIiwgInJlYXNvbiIsICJJbnZhbGlkSW50ZXJ2YWxFcnJvciIsICJJbnZhbGlkRHVyYXRpb25FcnJvciIsICJDb25mbGljdGluZ1NwZWNpZmljYXRpb25FcnJvciIsICJJbnZhbGlkVW5pdEVycm9yIiwgInVuaXQiLCAiSW52YWxpZEFyZ3VtZW50RXJyb3IiLCAiWm9uZUlzQWJzdHJhY3RFcnJvciIsICJuIiwgInMiLCAibCIsICJEQVRFX1NIT1JUIiwgIkRBVEVfTUVEIiwgIkRBVEVfTUVEX1dJVEhfV0VFS0RBWSIsICJEQVRFX0ZVTEwiLCAiREFURV9IVUdFIiwgIlRJTUVfU0lNUExFIiwgIlRJTUVfV0lUSF9TRUNPTkRTIiwgIlRJTUVfV0lUSF9TSE9SVF9PRkZTRVQiLCAiVElNRV9XSVRIX0xPTkdfT0ZGU0VUIiwgIlRJTUVfMjRfU0lNUExFIiwgIlRJTUVfMjRfV0lUSF9TRUNPTkRTIiwgIlRJTUVfMjRfV0lUSF9TSE9SVF9PRkZTRVQiLCAiVElNRV8yNF9XSVRIX0xPTkdfT0ZGU0VUIiwgIkRBVEVUSU1FX1NIT1JUIiwgIkRBVEVUSU1FX1NIT1JUX1dJVEhfU0VDT05EUyIsICJEQVRFVElNRV9NRUQiLCAiREFURVRJTUVfTUVEX1dJVEhfU0VDT05EUyIsICJEQVRFVElNRV9NRURfV0lUSF9XRUVLREFZIiwgIkRBVEVUSU1FX0ZVTEwiLCAiREFURVRJTUVfRlVMTF9XSVRIX1NFQ09ORFMiLCAiREFURVRJTUVfSFVHRSIsICJEQVRFVElNRV9IVUdFX1dJVEhfU0VDT05EUyIsICJpc1VuZGVmaW5lZCIsICJvIiwgImlzTnVtYmVyIiwgImlzSW50ZWdlciIsICJpc1N0cmluZyIsICJpc0RhdGUiLCAiaGFzUmVsYXRpdmUiLCAiZSIsICJtYXliZUFycmF5IiwgInRoaW5nIiwgImJlc3RCeSIsICJhcnIiLCAiYnkiLCAiY29tcGFyZSIsICJiZXN0IiwgIm5leHQiLCAicGFpciIsICJwaWNrIiwgIm9iaiIsICJrZXlzIiwgImEiLCAiayIsICJoYXNPd25Qcm9wZXJ0eSIsICJwcm9wIiwgImludGVnZXJCZXR3ZWVuIiwgImJvdHRvbSIsICJ0b3AiLCAiZmxvb3JNb2QiLCAieCIsICJuIiwgInBhZFN0YXJ0IiwgImlucHV0IiwgImlzTmVnIiwgInBhZGRlZCIsICJwYXJzZUludGVnZXIiLCAic3RyaW5nIiwgInBhcnNlRmxvYXRpbmciLCAicGFyc2VNaWxsaXMiLCAiZnJhY3Rpb24iLCAiZiIsICJyb3VuZFRvIiwgIm51bWJlciIsICJkaWdpdHMiLCAidG93YXJkWmVybyIsICJmYWN0b3IiLCAiaXNMZWFwWWVhciIsICJ5ZWFyIiwgImRheXNJblllYXIiLCAiZGF5c0luTW9udGgiLCAibW9udGgiLCAibW9kTW9udGgiLCAibW9kWWVhciIsICJvYmpUb0xvY2FsVFMiLCAiZCIsICJ3ZWVrc0luV2Vla1llYXIiLCAid2Vla1llYXIiLCAicDEiLCAibGFzdCIsICJwMiIsICJ1bnRydW5jYXRlWWVhciIsICJwYXJzZVpvbmVJbmZvIiwgInRzIiwgIm9mZnNldEZvcm1hdCIsICJsb2NhbGUiLCAidGltZVpvbmUiLCAiZGF0ZSIsICJpbnRsT3B0cyIsICJtb2RpZmllZCIsICJfX3NwcmVhZFZhbHVlcyIsICJwYXJzZWQiLCAibSIsICJzaWduZWRPZmZzZXQiLCAib2ZmSG91clN0ciIsICJvZmZNaW51dGVTdHIiLCAib2ZmSG91ciIsICJvZmZNaW4iLCAib2ZmTWluU2lnbmVkIiwgImFzTnVtYmVyIiwgInZhbHVlIiwgIm51bWVyaWNWYWx1ZSIsICJJbnZhbGlkQXJndW1lbnRFcnJvciIsICJub3JtYWxpemVPYmplY3QiLCAibm9ybWFsaXplciIsICJub3JtYWxpemVkIiwgInUiLCAidiIsICJmb3JtYXRPZmZzZXQiLCAib2Zmc2V0IiwgImZvcm1hdCIsICJob3VycyIsICJtaW51dGVzIiwgInNpZ24iLCAidGltZU9iamVjdCIsICJpYW5hUmVnZXgiLCAibW9udGhzTG9uZyIsICJtb250aHNTaG9ydCIsICJtb250aHNOYXJyb3ciLCAibW9udGhzIiwgImxlbmd0aCIsICJ3ZWVrZGF5c0xvbmciLCAid2Vla2RheXNTaG9ydCIsICJ3ZWVrZGF5c05hcnJvdyIsICJ3ZWVrZGF5cyIsICJtZXJpZGllbXMiLCAiZXJhc0xvbmciLCAiZXJhc1Nob3J0IiwgImVyYXNOYXJyb3ciLCAiZXJhcyIsICJtZXJpZGllbUZvckRhdGVUaW1lIiwgImR0IiwgIndlZWtkYXlGb3JEYXRlVGltZSIsICJtb250aEZvckRhdGVUaW1lIiwgImVyYUZvckRhdGVUaW1lIiwgImZvcm1hdFJlbGF0aXZlVGltZSIsICJ1bml0IiwgImNvdW50IiwgIm51bWVyaWMiLCAibmFycm93IiwgInVuaXRzIiwgImxhc3RhYmxlIiwgImlzRGF5IiwgImlzSW5QYXN0IiwgImZtdFZhbHVlIiwgInNpbmd1bGFyIiwgImxpbFVuaXRzIiwgImZtdFVuaXQiLCAic3RyaW5naWZ5VG9rZW5zIiwgInNwbGl0cyIsICJ0b2tlblRvU3RyaW5nIiwgInMiLCAidG9rZW4iLCAibWFjcm9Ub2tlblRvRm9ybWF0T3B0cyIsICJEQVRFX1NIT1JUIiwgIkRBVEVfTUVEIiwgIkRBVEVfRlVMTCIsICJEQVRFX0hVR0UiLCAiVElNRV9TSU1QTEUiLCAiVElNRV9XSVRIX1NFQ09ORFMiLCAiVElNRV9XSVRIX1NIT1JUX09GRlNFVCIsICJUSU1FX1dJVEhfTE9OR19PRkZTRVQiLCAiVElNRV8yNF9TSU1QTEUiLCAiVElNRV8yNF9XSVRIX1NFQ09ORFMiLCAiVElNRV8yNF9XSVRIX1NIT1JUX09GRlNFVCIsICJUSU1FXzI0X1dJVEhfTE9OR19PRkZTRVQiLCAiREFURVRJTUVfU0hPUlQiLCAiREFURVRJTUVfTUVEIiwgIkRBVEVUSU1FX0ZVTEwiLCAiREFURVRJTUVfSFVHRSIsICJEQVRFVElNRV9TSE9SVF9XSVRIX1NFQ09ORFMiLCAiREFURVRJTUVfTUVEX1dJVEhfU0VDT05EUyIsICJEQVRFVElNRV9GVUxMX1dJVEhfU0VDT05EUyIsICJEQVRFVElNRV9IVUdFX1dJVEhfU0VDT05EUyIsICJGb3JtYXR0ZXIiLCAiX0Zvcm1hdHRlciIsICJsb2NhbGUiLCAib3B0cyIsICJmbXQiLCAiY3VycmVudCIsICJjdXJyZW50RnVsbCIsICJicmFja2V0ZWQiLCAiaSIsICJjIiwgImZvcm1hdE9wdHMiLCAiZHQiLCAiX19zcHJlYWRWYWx1ZXMiLCAibiIsICJwIiwgInBhZFN0YXJ0IiwgImtub3duRW5nbGlzaCIsICJ1c2VEYXRlVGltZUZvcm1hdHRlciIsICJzdHJpbmciLCAiZXh0cmFjdCIsICJmb3JtYXRPZmZzZXQiLCAibWVyaWRpZW0iLCAibWVyaWRpZW1Gb3JEYXRlVGltZSIsICJtb250aCIsICJsZW5ndGgiLCAic3RhbmRhbG9uZSIsICJtb250aEZvckRhdGVUaW1lIiwgIndlZWtkYXkiLCAid2Vla2RheUZvckRhdGVUaW1lIiwgIm1heWJlTWFjcm8iLCAiZXJhIiwgImVyYUZvckRhdGVUaW1lIiwgImR1ciIsICJ0b2tlblRvRmllbGQiLCAibGlsZHVyIiwgIm1hcHBlZCIsICJ0b2tlbnMiLCAicmVhbFRva2VucyIsICJmb3VuZCIsICJsaXRlcmFsIiwgInZhbCIsICJjb2xsYXBzZWQiLCAidCIsICJJbnZhbGlkIiwgInJlYXNvbiIsICJleHBsYW5hdGlvbiIsICJab25lIiwgIlpvbmVJc0Fic3RyYWN0RXJyb3IiLCAidHMiLCAib3B0cyIsICJmb3JtYXQiLCAib3RoZXJab25lIiwgInNpbmdsZXRvbiIsICJTeXN0ZW1ab25lIiwgIl9TeXN0ZW1ab25lIiwgIlpvbmUiLCAidHMiLCAiZm9ybWF0IiwgImxvY2FsZSIsICJwYXJzZVpvbmVJbmZvIiwgImZvcm1hdE9mZnNldCIsICJvdGhlclpvbmUiLCAiZHRmQ2FjaGUiLCAibWFrZURURiIsICJ6b25lIiwgInR5cGVUb1BvcyIsICJoYWNreU9mZnNldCIsICJkdGYiLCAiZGF0ZSIsICJmb3JtYXR0ZWQiLCAicGFyc2VkIiwgImZNb250aCIsICJmRGF5IiwgImZZZWFyIiwgImZhZE9yQmMiLCAiZkhvdXIiLCAiZk1pbnV0ZSIsICJmU2Vjb25kIiwgInBhcnRzT2Zmc2V0IiwgImZpbGxlZCIsICJpIiwgInR5cGUiLCAidmFsdWUiLCAicG9zIiwgImlzVW5kZWZpbmVkIiwgImlhbmFab25lQ2FjaGUiLCAiSUFOQVpvbmUiLCAiX0lBTkFab25lIiwgIlpvbmUiLCAibmFtZSIsICJzIiwgImUiLCAidHMiLCAiZm9ybWF0IiwgImxvY2FsZSIsICJwYXJzZVpvbmVJbmZvIiwgImZvcm1hdE9mZnNldCIsICJ5ZWFyIiwgIm1vbnRoIiwgImRheSIsICJhZE9yQmMiLCAiaG91ciIsICJtaW51dGUiLCAic2Vjb25kIiwgImFzVVRDIiwgIm9ialRvTG9jYWxUUyIsICJhc1RTIiwgIm92ZXIiLCAib3RoZXJab25lIiwgInNpbmdsZXRvbiIsICJGaXhlZE9mZnNldFpvbmUiLCAiX0ZpeGVkT2Zmc2V0Wm9uZSIsICJab25lIiwgIm9mZnNldCIsICJzIiwgInIiLCAic2lnbmVkT2Zmc2V0IiwgImZvcm1hdE9mZnNldCIsICJ0cyIsICJmb3JtYXQiLCAib3RoZXJab25lIiwgIkludmFsaWRab25lIiwgIlpvbmUiLCAiem9uZU5hbWUiLCAibm9ybWFsaXplWm9uZSIsICJpbnB1dCIsICJkZWZhdWx0Wm9uZSIsICJvZmZzZXQiLCAiaXNVbmRlZmluZWQiLCAiWm9uZSIsICJpc1N0cmluZyIsICJsb3dlcmVkIiwgIkZpeGVkT2Zmc2V0Wm9uZSIsICJJQU5BWm9uZSIsICJpc051bWJlciIsICJJbnZhbGlkWm9uZSIsICJub3ciLCAiZGVmYXVsdFpvbmUiLCAiZGVmYXVsdExvY2FsZSIsICJkZWZhdWx0TnVtYmVyaW5nU3lzdGVtIiwgImRlZmF1bHRPdXRwdXRDYWxlbmRhciIsICJ0aHJvd09uSW52YWxpZCIsICJTZXR0aW5ncyIsICJuIiwgInpvbmUiLCAibm9ybWFsaXplWm9uZSIsICJTeXN0ZW1ab25lIiwgImxvY2FsZSIsICJudW1iZXJpbmdTeXN0ZW0iLCAib3V0cHV0Q2FsZW5kYXIiLCAidCIsICJMb2NhbGUiLCAiSUFOQVpvbmUiLCAiaW50bExGQ2FjaGUiLCAiZ2V0Q2FjaGVkTEYiLCAibG9jU3RyaW5nIiwgIm9wdHMiLCAia2V5IiwgImR0ZiIsICJpbnRsRFRDYWNoZSIsICJnZXRDYWNoZWREVEYiLCAiaW50bE51bUNhY2hlIiwgImdldENhY2hlZElORiIsICJpbmYiLCAiaW50bFJlbENhY2hlIiwgImdldENhY2hlZFJURiIsICJfYSIsICJiYXNlIiwgImNhY2hlS2V5T3B0cyIsICJfX29ialJlc3QiLCAic3lzTG9jYWxlQ2FjaGUiLCAic3lzdGVtTG9jYWxlIiwgInBhcnNlTG9jYWxlU3RyaW5nIiwgImxvY2FsZVN0ciIsICJ1SW5kZXgiLCAib3B0aW9ucyIsICJzbWFsbGVyIiwgImUiLCAibnVtYmVyaW5nU3lzdGVtIiwgImNhbGVuZGFyIiwgImludGxDb25maWdTdHJpbmciLCAib3V0cHV0Q2FsZW5kYXIiLCAibWFwTW9udGhzIiwgImYiLCAibXMiLCAiaSIsICJkdCIsICJEYXRlVGltZSIsICJtYXBXZWVrZGF5cyIsICJsaXN0U3R1ZmYiLCAibG9jIiwgImxlbmd0aCIsICJkZWZhdWx0T0siLCAiZW5nbGlzaEZuIiwgImludGxGbiIsICJtb2RlIiwgInN1cHBvcnRzRmFzdE51bWJlcnMiLCAiUG9seU51bWJlckZvcm1hdHRlciIsICJpbnRsIiwgImZvcmNlU2ltcGxlIiwgInBhZFRvIiwgImZsb29yIiwgIm90aGVyT3B0cyIsICJpbnRsT3B0cyIsICJfX3NwcmVhZFZhbHVlcyIsICJmaXhlZCIsICJyb3VuZFRvIiwgInBhZFN0YXJ0IiwgIlBvbHlEYXRlRm9ybWF0dGVyIiwgInoiLCAiZ210T2Zmc2V0IiwgIm9mZnNldFoiLCAiSUFOQVpvbmUiLCAiUG9seVJlbEZvcm1hdHRlciIsICJpc0VuZ2xpc2giLCAiaGFzUmVsYXRpdmUiLCAiY291bnQiLCAidW5pdCIsICJmb3JtYXRSZWxhdGl2ZVRpbWUiLCAiTG9jYWxlIiwgIl9Mb2NhbGUiLCAibG9jYWxlIiwgImRlZmF1bHRUb0VOIiwgInNwZWNpZmllZExvY2FsZSIsICJTZXR0aW5ncyIsICJsb2NhbGVSIiwgIm51bWJlcmluZ1N5c3RlbVIiLCAib3V0cHV0Q2FsZW5kYXJSIiwgIm51bWJlcmluZyIsICJwYXJzZWRMb2NhbGUiLCAicGFyc2VkTnVtYmVyaW5nU3lzdGVtIiwgInBhcnNlZE91dHB1dENhbGVuZGFyIiwgImlzQWN0dWFsbHlFbiIsICJoYXNOb1dlaXJkbmVzcyIsICJhbHRzIiwgIl9fc3ByZWFkUHJvcHMiLCAiZm9ybWF0IiwgIm1vbnRocyIsICJmb3JtYXRTdHIiLCAid2Vla2RheXMiLCAibWVyaWRpZW1zIiwgImVyYXMiLCAiZmllbGQiLCAiZGYiLCAicmVzdWx0cyIsICJtYXRjaGluZyIsICJtIiwgIm90aGVyIiwgImNvbWJpbmVSZWdleGVzIiwgInJlZ2V4ZXMiLCAiZnVsbCIsICJmIiwgImNvbWJpbmVFeHRyYWN0b3JzIiwgImV4dHJhY3RvcnMiLCAibSIsICJtZXJnZWRWYWxzIiwgIm1lcmdlZFpvbmUiLCAiY3Vyc29yIiwgImV4IiwgInZhbCIsICJ6b25lIiwgIm5leHQiLCAiX19zcHJlYWRWYWx1ZXMiLCAicGFyc2UiLCAicyIsICJwYXR0ZXJucyIsICJyZWdleCIsICJleHRyYWN0b3IiLCAic2ltcGxlUGFyc2UiLCAia2V5cyIsICJtYXRjaCIsICJyZXQiLCAiaSIsICJwYXJzZUludGVnZXIiLCAib2Zmc2V0UmVnZXgiLCAiaXNvRXh0ZW5kZWRab25lIiwgImlhbmFSZWdleCIsICJpc29UaW1lQmFzZVJlZ2V4IiwgImlzb1RpbWVSZWdleCIsICJpc29UaW1lRXh0ZW5zaW9uUmVnZXgiLCAiaXNvWW1kUmVnZXgiLCAiaXNvV2Vla1JlZ2V4IiwgImlzb09yZGluYWxSZWdleCIsICJleHRyYWN0SVNPV2Vla0RhdGEiLCAiZXh0cmFjdElTT09yZGluYWxEYXRhIiwgInNxbFltZFJlZ2V4IiwgInNxbFRpbWVSZWdleCIsICJzcWxUaW1lRXh0ZW5zaW9uUmVnZXgiLCAiaW50IiwgInBvcyIsICJmYWxsYmFjayIsICJpc1VuZGVmaW5lZCIsICJleHRyYWN0SVNPWW1kIiwgImV4dHJhY3RJU09UaW1lIiwgInBhcnNlTWlsbGlzIiwgImV4dHJhY3RJU09PZmZzZXQiLCAibG9jYWwiLCAiZnVsbE9mZnNldCIsICJzaWduZWRPZmZzZXQiLCAiRml4ZWRPZmZzZXRab25lIiwgImV4dHJhY3RJQU5BWm9uZSIsICJJQU5BWm9uZSIsICJpc29UaW1lT25seSIsICJpc29EdXJhdGlvbiIsICJleHRyYWN0SVNPRHVyYXRpb24iLCAieWVhclN0ciIsICJtb250aFN0ciIsICJ3ZWVrU3RyIiwgImRheVN0ciIsICJob3VyU3RyIiwgIm1pbnV0ZVN0ciIsICJzZWNvbmRTdHIiLCAibWlsbGlzZWNvbmRzU3RyIiwgImhhc05lZ2F0aXZlUHJlZml4IiwgIm5lZ2F0aXZlU2Vjb25kcyIsICJtYXliZU5lZ2F0ZSIsICJudW0iLCAiZm9yY2UiLCAicGFyc2VGbG9hdGluZyIsICJvYnNPZmZzZXRzIiwgImZyb21TdHJpbmdzIiwgIndlZWtkYXlTdHIiLCAicmVzdWx0IiwgInVudHJ1bmNhdGVZZWFyIiwgIm1vbnRoc1Nob3J0IiwgIndlZWtkYXlzTG9uZyIsICJ3ZWVrZGF5c1Nob3J0IiwgInJmYzI4MjIiLCAiZXh0cmFjdFJGQzI4MjIiLCAib2JzT2Zmc2V0IiwgIm1pbE9mZnNldCIsICJvZmZIb3VyU3RyIiwgIm9mZk1pbnV0ZVN0ciIsICJvZmZzZXQiLCAicHJlcHJvY2Vzc1JGQzI4MjIiLCAicmZjMTEyMyIsICJyZmM4NTAiLCAiYXNjaWkiLCAiZXh0cmFjdFJGQzExMjNPcjg1MCIsICJleHRyYWN0QVNDSUkiLCAiaXNvWW1kV2l0aFRpbWVFeHRlbnNpb25SZWdleCIsICJpc29XZWVrV2l0aFRpbWVFeHRlbnNpb25SZWdleCIsICJpc29PcmRpbmFsV2l0aFRpbWVFeHRlbnNpb25SZWdleCIsICJpc29UaW1lQ29tYmluZWRSZWdleCIsICJleHRyYWN0SVNPWW1kVGltZUFuZE9mZnNldCIsICJleHRyYWN0SVNPV2Vla1RpbWVBbmRPZmZzZXQiLCAiZXh0cmFjdElTT09yZGluYWxEYXRlQW5kVGltZSIsICJleHRyYWN0SVNPVGltZUFuZE9mZnNldCIsICJwYXJzZUlTT0RhdGUiLCAicGFyc2VSRkMyODIyRGF0ZSIsICJwYXJzZUhUVFBEYXRlIiwgInBhcnNlSVNPRHVyYXRpb24iLCAiZXh0cmFjdElTT1RpbWVPbmx5IiwgInBhcnNlSVNPVGltZU9ubHkiLCAic3FsWW1kV2l0aFRpbWVFeHRlbnNpb25SZWdleCIsICJzcWxUaW1lQ29tYmluZWRSZWdleCIsICJleHRyYWN0SVNPVGltZU9mZnNldEFuZElBTkFab25lIiwgInBhcnNlU1FMIiwgIklOVkFMSUQiLCAibG93T3JkZXJNYXRyaXgiLCAiY2FzdWFsTWF0cml4IiwgIl9fc3ByZWFkVmFsdWVzIiwgImRheXNJblllYXJBY2N1cmF0ZSIsICJkYXlzSW5Nb250aEFjY3VyYXRlIiwgImFjY3VyYXRlTWF0cml4IiwgIm9yZGVyZWRVbml0cyIsICJyZXZlcnNlVW5pdHMiLCAiY2xvbmUiLCAiZHVyIiwgImFsdHMiLCAiY2xlYXIiLCAiY29uZiIsICJEdXJhdGlvbiIsICJhbnRpVHJ1bmMiLCAiY29udmVydCIsICJtYXRyaXgiLCAiZnJvbU1hcCIsICJmcm9tVW5pdCIsICJ0b01hcCIsICJ0b1VuaXQiLCAiY29udiIsICJyYXciLCAic2FtZVNpZ24iLCAiYWRkZWQiLCAibm9ybWFsaXplVmFsdWVzIiwgInZhbHMiLCAicHJldmlvdXMiLCAiY3VycmVudCIsICJpc1VuZGVmaW5lZCIsICJfRHVyYXRpb24iLCAiY29uZmlnIiwgImFjY3VyYXRlIiwgIkxvY2FsZSIsICJjb3VudCIsICJvcHRzIiwgIm9iaiIsICJJbnZhbGlkQXJndW1lbnRFcnJvciIsICJub3JtYWxpemVPYmplY3QiLCAiZHVyYXRpb25MaWtlIiwgImlzTnVtYmVyIiwgInRleHQiLCAicGFyc2VkIiwgInBhcnNlSVNPRHVyYXRpb24iLCAicGFyc2VJU09UaW1lT25seSIsICJyZWFzb24iLCAiZXhwbGFuYXRpb24iLCAiaW52YWxpZCIsICJJbnZhbGlkIiwgIlNldHRpbmdzIiwgIkludmFsaWREdXJhdGlvbkVycm9yIiwgInVuaXQiLCAibm9ybWFsaXplZCIsICJJbnZhbGlkVW5pdEVycm9yIiwgIm8iLCAiZm10IiwgImZtdE9wdHMiLCAiX19zcHJlYWRQcm9wcyIsICJGb3JtYXR0ZXIiLCAibCIsICJ2YWwiLCAibiIsICJzIiwgInJvdW5kVG8iLCAibWlsbGlzIiwgInZhbHVlIiwgInN0ciIsICJkdXJhdGlvbiIsICJyZXN1bHQiLCAiayIsICJoYXNPd25Qcm9wZXJ0eSIsICJmbiIsICJhc051bWJlciIsICJ2YWx1ZXMiLCAibWl4ZWQiLCAibG9jYWxlIiwgIm51bWJlcmluZ1N5c3RlbSIsICJjb252ZXJzaW9uQWNjdXJhY3kiLCAibG9jIiwgInVuaXRzIiwgInUiLCAiYnVpbHQiLCAiYWNjdW11bGF0ZWQiLCAibGFzdFVuaXQiLCAib3duIiwgImFrIiwgImkiLCAiZG93biIsICJrZXkiLCAibmVnYXRlZCIsICJvdGhlciIsICJlcSIsICJ2MSIsICJ2MiIsICJJTlZBTElEIiwgInZhbGlkYXRlU3RhcnRFbmQiLCAic3RhcnQiLCAiZW5kIiwgIkludGVydmFsIiwgIl9JbnRlcnZhbCIsICJjb25maWciLCAicmVhc29uIiwgImV4cGxhbmF0aW9uIiwgIkludmFsaWRBcmd1bWVudEVycm9yIiwgImludmFsaWQiLCAiSW52YWxpZCIsICJTZXR0aW5ncyIsICJJbnZhbGlkSW50ZXJ2YWxFcnJvciIsICJidWlsdFN0YXJ0IiwgImZyaWVuZGx5RGF0ZVRpbWUiLCAiYnVpbHRFbmQiLCAidmFsaWRhdGVFcnJvciIsICJkdXJhdGlvbiIsICJkdXIiLCAiRHVyYXRpb24iLCAiZHQiLCAidGV4dCIsICJvcHRzIiwgInMiLCAiZSIsICJzdGFydElzVmFsaWQiLCAiRGF0ZVRpbWUiLCAiZW5kSXNWYWxpZCIsICJvIiwgInVuaXQiLCAiZGF0ZVRpbWUiLCAiZGF0ZVRpbWVzIiwgInNvcnRlZCIsICJkIiwgInJlc3VsdHMiLCAiYWRkZWQiLCAibmV4dCIsICJpZHgiLCAieCIsICJudW1iZXJPZlBhcnRzIiwgIm90aGVyIiwgImludGVydmFscyIsICJmb3VuZCIsICJmaW5hbCIsICJhIiwgImIiLCAic29mYXIiLCAiY3VycmVudCIsICJpdGVtIiwgImN1cnJlbnRDb3VudCIsICJlbmRzIiwgImkiLCAiZmxhdHRlbmVkIiwgImFyciIsICJkYXRlRm9ybWF0IiwgInNlcGFyYXRvciIsICJtYXBGbiIsICJJbmZvIiwgInpvbmUiLCAiU2V0dGluZ3MiLCAicHJvdG8iLCAiRGF0ZVRpbWUiLCAiSUFOQVpvbmUiLCAiaW5wdXQiLCAibm9ybWFsaXplWm9uZSIsICJsZW5ndGgiLCAibG9jYWxlIiwgIm51bWJlcmluZ1N5c3RlbSIsICJsb2NPYmoiLCAib3V0cHV0Q2FsZW5kYXIiLCAiTG9jYWxlIiwgImhhc1JlbGF0aXZlIiwgImRheURpZmYiLCAiZWFybGllciIsICJsYXRlciIsICJ1dGNEYXlTdGFydCIsICJkdCIsICJtcyIsICJEdXJhdGlvbiIsICJoaWdoT3JkZXJEaWZmcyIsICJjdXJzb3IiLCAidW5pdHMiLCAiZGlmZmVycyIsICJiIiwgImRheXMiLCAicmVzdWx0cyIsICJsb3dlc3RPcmRlciIsICJoaWdoV2F0ZXIiLCAidW5pdCIsICJkaWZmZXIiLCAiZGVsdGEiLCAiZGlmZl9kZWZhdWx0IiwgIm9wdHMiLCAicmVtYWluaW5nTWlsbGlzIiwgImxvd2VyT3JkZXJVbml0cyIsICJ1IiwgImR1cmF0aW9uIiwgIm51bWJlcmluZ1N5c3RlbXMiLCAibnVtYmVyaW5nU3lzdGVtc1VURjE2IiwgImhhbmlkZWNDaGFycyIsICJwYXJzZURpZ2l0cyIsICJzdHIiLCAidmFsdWUiLCAiaSIsICJjb2RlIiwgImtleSIsICJtaW4iLCAibWF4IiwgImRpZ2l0UmVnZXgiLCAibnVtYmVyaW5nU3lzdGVtIiwgImFwcGVuZCIsICJNSVNTSU5HX0ZUUCIsICJpbnRVbml0IiwgInJlZ2V4IiwgInBvc3QiLCAiaSIsICJzIiwgInBhcnNlRGlnaXRzIiwgIk5CU1AiLCAic3BhY2VPck5CU1AiLCAic3BhY2VPck5CU1BSZWdFeHAiLCAiZml4TGlzdFJlZ2V4IiwgInN0cmlwSW5zZW5zaXRpdml0aWVzIiwgIm9uZU9mIiwgInN0cmluZ3MiLCAic3RhcnRJbmRleCIsICJvZmZzZXQiLCAiZ3JvdXBzIiwgImgiLCAibSIsICJzaWduZWRPZmZzZXQiLCAic2ltcGxlIiwgImVzY2FwZVRva2VuIiwgInZhbHVlIiwgInVuaXRGb3JUb2tlbiIsICJ0b2tlbiIsICJsb2MiLCAib25lIiwgImRpZ2l0UmVnZXgiLCAidHdvIiwgInRocmVlIiwgImZvdXIiLCAic2l4IiwgIm9uZU9yVHdvIiwgIm9uZVRvVGhyZWUiLCAib25lVG9TaXgiLCAib25lVG9OaW5lIiwgInR3b1RvRm91ciIsICJmb3VyVG9TaXgiLCAibGl0ZXJhbCIsICJ0IiwgInVuaXQiLCAidW50cnVuY2F0ZVllYXIiLCAicGFydFR5cGVTdHlsZVRvVG9rZW5WYWwiLCAidG9rZW5Gb3JQYXJ0IiwgInBhcnQiLCAibG9jYWxlIiwgImZvcm1hdE9wdHMiLCAidHlwZSIsICJzdHlsZSIsICJ2YWwiLCAiYnVpbGRSZWdleCIsICJ1bml0cyIsICJ1IiwgImYiLCAibWF0Y2giLCAiaW5wdXQiLCAiaGFuZGxlcnMiLCAibWF0Y2hlcyIsICJhbGwiLCAibWF0Y2hJbmRleCIsICJoYXNPd25Qcm9wZXJ0eSIsICJkYXRlVGltZUZyb21NYXRjaGVzIiwgInRvRmllbGQiLCAiem9uZSIsICJzcGVjaWZpY09mZnNldCIsICJpc1VuZGVmaW5lZCIsICJJQU5BWm9uZSIsICJGaXhlZE9mZnNldFpvbmUiLCAicGFyc2VNaWxsaXMiLCAiciIsICJrIiwgImR1bW15RGF0ZVRpbWVDYWNoZSIsICJnZXREdW1teURhdGVUaW1lIiwgIkRhdGVUaW1lIiwgIm1heWJlRXhwYW5kTWFjcm9Ub2tlbiIsICJGb3JtYXR0ZXIiLCAidG9rZW5zIiwgInAiLCAiZXhwYW5kTWFjcm9Ub2tlbnMiLCAiZXhwbGFpbkZyb21Ub2tlbnMiLCAiZm9ybWF0IiwgImRpc3F1YWxpZnlpbmdVbml0IiwgInJlZ2V4U3RyaW5nIiwgInJhd01hdGNoZXMiLCAicmVzdWx0IiwgIkNvbmZsaWN0aW5nU3BlY2lmaWNhdGlvbkVycm9yIiwgInBhcnNlRnJvbVRva2VucyIsICJpbnZhbGlkUmVhc29uIiwgIm5vbkxlYXBMYWRkZXIiLCAibGVhcExhZGRlciIsICJ1bml0T3V0T2ZSYW5nZSIsICJ1bml0IiwgInZhbHVlIiwgIkludmFsaWQiLCAiZGF5T2ZXZWVrIiwgInllYXIiLCAibW9udGgiLCAiZGF5IiwgImQiLCAianMiLCAiY29tcHV0ZU9yZGluYWwiLCAiaXNMZWFwWWVhciIsICJ1bmNvbXB1dGVPcmRpbmFsIiwgIm9yZGluYWwiLCAidGFibGUiLCAibW9udGgwIiwgImdyZWdvcmlhblRvV2VlayIsICJncmVnT2JqIiwgIndlZWtkYXkiLCAid2Vla051bWJlciIsICJ3ZWVrWWVhciIsICJ3ZWVrc0luV2Vla1llYXIiLCAiX19zcHJlYWRWYWx1ZXMiLCAidGltZU9iamVjdCIsICJ3ZWVrVG9HcmVnb3JpYW4iLCAid2Vla0RhdGEiLCAid2Vla2RheU9mSmFuNCIsICJ5ZWFySW5EYXlzIiwgImRheXNJblllYXIiLCAiZ3JlZ29yaWFuVG9PcmRpbmFsIiwgImdyZWdEYXRhIiwgIm9yZGluYWxUb0dyZWdvcmlhbiIsICJvcmRpbmFsRGF0YSIsICJoYXNJbnZhbGlkV2Vla0RhdGEiLCAib2JqIiwgInZhbGlkWWVhciIsICJpc0ludGVnZXIiLCAidmFsaWRXZWVrIiwgImludGVnZXJCZXR3ZWVuIiwgInZhbGlkV2Vla2RheSIsICJoYXNJbnZhbGlkT3JkaW5hbERhdGEiLCAidmFsaWRPcmRpbmFsIiwgImhhc0ludmFsaWRHcmVnb3JpYW5EYXRhIiwgInZhbGlkTW9udGgiLCAidmFsaWREYXkiLCAiZGF5c0luTW9udGgiLCAiaGFzSW52YWxpZFRpbWVEYXRhIiwgImhvdXIiLCAibWludXRlIiwgInNlY29uZCIsICJtaWxsaXNlY29uZCIsICJ2YWxpZEhvdXIiLCAidmFsaWRNaW51dGUiLCAidmFsaWRTZWNvbmQiLCAidmFsaWRNaWxsaXNlY29uZCIsICJJTlZBTElEIiwgIk1BWF9EQVRFIiwgInVuc3VwcG9ydGVkWm9uZSIsICJ6b25lIiwgIkludmFsaWQiLCAicG9zc2libHlDYWNoZWRXZWVrRGF0YSIsICJkdCIsICJncmVnb3JpYW5Ub1dlZWsiLCAiY2xvbmUiLCAiaW5zdCIsICJhbHRzIiwgImN1cnJlbnQiLCAiRGF0ZVRpbWUiLCAiX19zcHJlYWRQcm9wcyIsICJfX3NwcmVhZFZhbHVlcyIsICJmaXhPZmZzZXQiLCAibG9jYWxUUyIsICJvIiwgInR6IiwgInV0Y0d1ZXNzIiwgIm8yIiwgIm8zIiwgInRzVG9PYmoiLCAidHMiLCAib2Zmc2V0IiwgImQiLCAib2JqVG9UUyIsICJvYmoiLCAib2JqVG9Mb2NhbFRTIiwgImFkanVzdFRpbWUiLCAiZHVyIiwgIm9QcmUiLCAieWVhciIsICJtb250aCIsICJjIiwgImRheXNJbk1vbnRoIiwgIm1pbGxpc1RvQWRkIiwgIkR1cmF0aW9uIiwgInBhcnNlRGF0YVRvRGF0ZVRpbWUiLCAicGFyc2VkIiwgInBhcnNlZFpvbmUiLCAib3B0cyIsICJmb3JtYXQiLCAidGV4dCIsICJzcGVjaWZpY09mZnNldCIsICJzZXRab25lIiwgImludGVycHJldGF0aW9uWm9uZSIsICJ0b1RlY2hGb3JtYXQiLCAiYWxsb3daIiwgIkZvcm1hdHRlciIsICJMb2NhbGUiLCAidG9JU09EYXRlIiwgImV4dGVuZGVkIiwgImxvbmdGb3JtYXQiLCAicGFkU3RhcnQiLCAidG9JU09UaW1lIiwgInN1cHByZXNzU2Vjb25kcyIsICJzdXBwcmVzc01pbGxpc2Vjb25kcyIsICJpbmNsdWRlT2Zmc2V0IiwgImV4dGVuZGVkWm9uZSIsICJkZWZhdWx0VW5pdFZhbHVlcyIsICJkZWZhdWx0V2Vla1VuaXRWYWx1ZXMiLCAiZGVmYXVsdE9yZGluYWxVbml0VmFsdWVzIiwgIm9yZGVyZWRVbml0cyIsICJvcmRlcmVkV2Vla1VuaXRzIiwgIm9yZGVyZWRPcmRpbmFsVW5pdHMiLCAibm9ybWFsaXplVW5pdCIsICJ1bml0IiwgIm5vcm1hbGl6ZWQiLCAiSW52YWxpZFVuaXRFcnJvciIsICJxdWlja0RUIiwgIm5vcm1hbGl6ZVpvbmUiLCAiU2V0dGluZ3MiLCAibG9jIiwgInRzTm93IiwgImlzVW5kZWZpbmVkIiwgInUiLCAiaW52YWxpZCIsICJoYXNJbnZhbGlkR3JlZ29yaWFuRGF0YSIsICJoYXNJbnZhbGlkVGltZURhdGEiLCAib2Zmc2V0UHJvdmlzIiwgImRpZmZSZWxhdGl2ZSIsICJzdGFydCIsICJlbmQiLCAicm91bmQiLCAicm91bmRUbyIsICJkaWZmZXIiLCAiY291bnQiLCAibGFzdE9wdHMiLCAiYXJnTGlzdCIsICJhcmdzIiwgIl9EYXRlVGltZSIsICJjb25maWciLCAib3QiLCAiZGF5IiwgImhvdXIiLCAibWludXRlIiwgInNlY29uZCIsICJtaWxsaXNlY29uZCIsICJGaXhlZE9mZnNldFpvbmUiLCAiZGF0ZSIsICJvcHRpb25zIiwgImlzRGF0ZSIsICJ6b25lVG9Vc2UiLCAibWlsbGlzZWNvbmRzIiwgImlzTnVtYmVyIiwgIkludmFsaWRBcmd1bWVudEVycm9yIiwgInNlY29uZHMiLCAibm9ybWFsaXplT2JqZWN0IiwgImNvbnRhaW5zT3JkaW5hbCIsICJjb250YWluc0dyZWdvclllYXIiLCAiY29udGFpbnNHcmVnb3JNRCIsICJjb250YWluc0dyZWdvciIsICJkZWZpbml0ZVdlZWtEZWYiLCAiQ29uZmxpY3RpbmdTcGVjaWZpY2F0aW9uRXJyb3IiLCAidXNlV2Vla0RhdGEiLCAidW5pdHMiLCAiZGVmYXVsdFZhbHVlcyIsICJvYmpOb3ciLCAiZ3JlZ29yaWFuVG9PcmRpbmFsIiwgImZvdW5kRmlyc3QiLCAidiIsICJoaWdoZXJPcmRlckludmFsaWQiLCAiaGFzSW52YWxpZFdlZWtEYXRhIiwgImhhc0ludmFsaWRPcmRpbmFsRGF0YSIsICJncmVnb3JpYW4iLCAid2Vla1RvR3JlZ29yaWFuIiwgIm9yZGluYWxUb0dyZWdvcmlhbiIsICJ0c0ZpbmFsIiwgIm9mZnNldEZpbmFsIiwgInZhbHMiLCAicGFyc2VJU09EYXRlIiwgInBhcnNlUkZDMjgyMkRhdGUiLCAicGFyc2VIVFRQRGF0ZSIsICJmbXQiLCAibG9jYWxlIiwgIm51bWJlcmluZ1N5c3RlbSIsICJsb2NhbGVUb1VzZSIsICJwYXJzZUZyb21Ub2tlbnMiLCAicGFyc2VTUUwiLCAicmVhc29uIiwgImV4cGxhbmF0aW9uIiwgIkludmFsaWREYXRlVGltZUVycm9yIiwgIkluZm8iLCAiaXNMZWFwWWVhciIsICJkYXlzSW5ZZWFyIiwgIndlZWtzSW5XZWVrWWVhciIsICJjYWxlbmRhciIsICJrZWVwTG9jYWxUaW1lIiwgImtlZXBDYWxlbmRhclRpbWUiLCAibmV3VFMiLCAib2Zmc2V0R3Vlc3MiLCAiYXNPYmoiLCAib3V0cHV0Q2FsZW5kYXIiLCAidmFsdWVzIiwgInNldHRpbmdXZWVrU3R1ZmYiLCAibWl4ZWQiLCAiZHVyYXRpb24iLCAibm9ybWFsaXplZFVuaXQiLCAicSIsICJmb3JtYXRPcHRzIiwgIkRBVEVfU0hPUlQiLCAiZXh0IiwgImluY2x1ZGVQcmVmaXgiLCAiaW5jbHVkZVpvbmUiLCAiaW5jbHVkZU9mZnNldFNwYWNlIiwgImJhc2UiLCAib3RoZXJEYXRlVGltZSIsICJkdXJPcHRzIiwgIm1heWJlQXJyYXkiLCAib3RoZXJJc0xhdGVyIiwgImVhcmxpZXIiLCAibGF0ZXIiLCAiZGlmZmVkIiwgImRpZmZfZGVmYXVsdCIsICJJbnRlcnZhbCIsICJpbnB1dE1zIiwgImFkanVzdGVkVG9ab25lIiwgIm90aGVyIiwgInBhZGRpbmciLCAiZGF0ZVRpbWVzIiwgImJlc3RCeSIsICJpIiwgImV4cGxhaW5Gcm9tVG9rZW5zIiwgIkRBVEVfTUVEIiwgIkRBVEVfTUVEX1dJVEhfV0VFS0RBWSIsICJEQVRFX0ZVTEwiLCAiREFURV9IVUdFIiwgIlRJTUVfU0lNUExFIiwgIlRJTUVfV0lUSF9TRUNPTkRTIiwgIlRJTUVfV0lUSF9TSE9SVF9PRkZTRVQiLCAiVElNRV9XSVRIX0xPTkdfT0ZGU0VUIiwgIlRJTUVfMjRfU0lNUExFIiwgIlRJTUVfMjRfV0lUSF9TRUNPTkRTIiwgIlRJTUVfMjRfV0lUSF9TSE9SVF9PRkZTRVQiLCAiVElNRV8yNF9XSVRIX0xPTkdfT0ZGU0VUIiwgIkRBVEVUSU1FX1NIT1JUIiwgIkRBVEVUSU1FX1NIT1JUX1dJVEhfU0VDT05EUyIsICJEQVRFVElNRV9NRUQiLCAiREFURVRJTUVfTUVEX1dJVEhfU0VDT05EUyIsICJEQVRFVElNRV9NRURfV0lUSF9XRUVLREFZIiwgIkRBVEVUSU1FX0ZVTEwiLCAiREFURVRJTUVfRlVMTF9XSVRIX1NFQ09ORFMiLCAiREFURVRJTUVfSFVHRSIsICJEQVRFVElNRV9IVUdFX1dJVEhfU0VDT05EUyIsICJmcmllbmRseURhdGVUaW1lIiwgImRhdGVUaW1laXNoIiwgIlAiLCAiZW1vamlfcmVnZXhfZGVmYXVsdCIsICJub3JtYWxpemVEdXJhdGlvbiIsICJkdXIiLCAicmVuZGVyTWluaW1hbERhdGUiLCAidGltZSIsICJkYXRlRm9ybWF0IiwgImRhdGVUaW1lRm9ybWF0IiwgImxvY2FsZSIsICJyZW5kZXJNaW5pbWFsRHVyYXRpb24iLCAiZHVyIiwgIm5vcm1hbGl6ZUR1cmF0aW9uIiwgInJlc3VsdCIsICJnZXRGaWxlVGl0bGUiLCAicGF0aCIsICJnZXRFeHRlbnNpb24iLCAiSEVBREVSX0NBTk9OSUNBTElaRVIiLCAiZW1vamlfcmVnZXhfZGVmYXVsdCIsICJfIiwgInJlc3VsdCIsICJub3JtYWxpemVIZWFkZXJGb3JMaW5rIiwgImhlYWRlciIsICJMaW5rIiwgIl9MaW5rIiwgInBhdGgiLCAiZW1iZWQiLCAiZGlzcGxheSIsICJsaW5rcGF0aCIsICJzcGxpdCIsICJoZWFkZXIiLCAibm9ybWFsaXplSGVhZGVyRm9yTGluayIsICJibG9ja0lkIiwgIm9iamVjdCIsICJyYXdsaW5rIiwgImxpbmsiLCAic3BsaXRPblVuZXNjYXBlZFBpcGUiLCAiZmllbGRzIiwgImJsb2NrIiwgIm90aGVyIiwgInJlc3VsdCIsICJnZXRGaWxlVGl0bGUiLCAiX2EiLCAiX2IiLCAiZXNjYXBlZCIsICJwaXBlIiwgIkFMSUFTIiwgIkRPQyIsICJNQVAiLCAiUEFJUiIsICJTQ0FMQVIiLCAiU0VRIiwgIk5PREVfVFlQRSIsICJpc0FsaWFzIiwgIm5vZGUiLCAiaXNEb2N1bWVudCIsICJpc01hcCIsICJpc1BhaXIiLCAiaXNTY2FsYXIiLCAiaXNTZXEiLCAiaXNDb2xsZWN0aW9uIiwgImlzTm9kZSIsICJoYXNBbmNob3IiLCAiQlJFQUsiLCAiU0tJUCIsICJSRU1PVkUiLCAidmlzaXQiLCAibm9kZSIsICJ2aXNpdG9yIiwgInZpc2l0b3JfIiwgImluaXRWaXNpdG9yIiwgImlzRG9jdW1lbnQiLCAidmlzaXRfIiwgImtleSIsICJwYXRoIiwgImN0cmwiLCAiY2FsbFZpc2l0b3IiLCAiaXNOb2RlIiwgImlzUGFpciIsICJyZXBsYWNlTm9kZSIsICJpc0NvbGxlY3Rpb24iLCAiY2kiLCAiY2siLCAiY3YiLCAidmlzaXRBc3luYyIsICJ2aXNpdEFzeW5jXyIsICJfYSIsICJfYiIsICJfYyIsICJfZCIsICJfZSIsICJpc01hcCIsICJpc1NlcSIsICJpc1NjYWxhciIsICJpc0FsaWFzIiwgInBhcmVudCIsICJwdCIsICJlc2NhcGVDaGFycyIsICJlc2NhcGVUYWdOYW1lIiwgInRuIiwgImNoIiwgIkRpcmVjdGl2ZXMiLCAiX0RpcmVjdGl2ZXMiLCAieWFtbCIsICJ0YWdzIiwgImNvcHkiLCAicmVzIiwgImxpbmUiLCAib25FcnJvciIsICJwYXJ0cyIsICJuYW1lIiwgImhhbmRsZSIsICJwcmVmaXgiLCAidmVyc2lvbiIsICJpc1ZhbGlkIiwgInNvdXJjZSIsICJ2ZXJiYXRpbSIsICJzdWZmaXgiLCAiZXJyb3IiLCAidGFnIiwgImRvYyIsICJsaW5lcyIsICJ0YWdFbnRyaWVzIiwgInRhZ05hbWVzIiwgImlzTm9kZSIsICJ2aXNpdCIsICJfa2V5IiwgIm5vZGUiLCAiYW5jaG9ySXNWYWxpZCIsICJhbmNob3IiLCAibXNnIiwgImFuY2hvck5hbWVzIiwgInJvb3QiLCAiYW5jaG9ycyIsICJ2aXNpdCIsICJfa2V5IiwgIm5vZGUiLCAiZmluZE5ld0FuY2hvciIsICJwcmVmaXgiLCAiZXhjbHVkZSIsICJpIiwgIm5hbWUiLCAiY3JlYXRlTm9kZUFuY2hvcnMiLCAiZG9jIiwgImFsaWFzT2JqZWN0cyIsICJzb3VyY2VPYmplY3RzIiwgInByZXZBbmNob3JzIiwgInNvdXJjZSIsICJyZWYiLCAiaXNTY2FsYXIiLCAiaXNDb2xsZWN0aW9uIiwgImVycm9yIiwgImFwcGx5UmV2aXZlciIsICJyZXZpdmVyIiwgIm9iaiIsICJrZXkiLCAidmFsIiwgImkiLCAibGVuIiwgInYwIiwgInYxIiwgImsiLCAidG9KUyIsICJ2YWx1ZSIsICJhcmciLCAiY3R4IiwgInYiLCAiaSIsICJoYXNBbmNob3IiLCAiZGF0YSIsICJyZXMiLCAiTm9kZUJhc2UiLCAidHlwZSIsICJOT0RFX1RZUEUiLCAiY29weSIsICJkb2MiLCAibWFwQXNNYXAiLCAibWF4QWxpYXNDb3VudCIsICJvbkFuY2hvciIsICJyZXZpdmVyIiwgImlzRG9jdW1lbnQiLCAiY3R4IiwgInJlcyIsICJ0b0pTIiwgImNvdW50IiwgImFwcGx5UmV2aXZlciIsICJBbGlhcyIsICJOb2RlQmFzZSIsICJzb3VyY2UiLCAiQUxJQVMiLCAiZG9jIiwgImZvdW5kIiwgInZpc2l0IiwgIl9rZXkiLCAibm9kZSIsICJfYXJnIiwgImN0eCIsICJhbmNob3JzIiwgIm1heEFsaWFzQ291bnQiLCAibXNnIiwgImRhdGEiLCAidG9KUyIsICJnZXRBbGlhc0NvdW50IiwgIl9vbkNvbW1lbnQiLCAiX29uQ2hvbXBLZWVwIiwgInNyYyIsICJhbmNob3JJc1ZhbGlkIiwgImlzQWxpYXMiLCAiYW5jaG9yIiwgImlzQ29sbGVjdGlvbiIsICJjb3VudCIsICJpdGVtIiwgImMiLCAiaXNQYWlyIiwgImtjIiwgInZjIiwgImlzU2NhbGFyVmFsdWUiLCAidmFsdWUiLCAiU2NhbGFyIiwgIk5vZGVCYXNlIiwgIlNDQUxBUiIsICJhcmciLCAiY3R4IiwgInRvSlMiLCAiZGVmYXVsdFRhZ1ByZWZpeCIsICJmaW5kVGFnT2JqZWN0IiwgInZhbHVlIiwgInRhZ05hbWUiLCAidGFncyIsICJfYSIsICJtYXRjaCIsICJ0IiwgInRhZ09iaiIsICJjcmVhdGVOb2RlIiwgImN0eCIsICJfYiIsICJfYyIsICJpc0RvY3VtZW50IiwgImlzTm9kZSIsICJpc1BhaXIiLCAibWFwIiwgIk1BUCIsICJhbGlhc0R1cGxpY2F0ZU9iamVjdHMiLCAib25BbmNob3IiLCAib25UYWdPYmoiLCAic2NoZW1hIiwgInNvdXJjZU9iamVjdHMiLCAicmVmIiwgIkFsaWFzIiwgIm5vZGUiLCAiU2NhbGFyIiwgIlNFUSIsICJjb2xsZWN0aW9uRnJvbVBhdGgiLCAic2NoZW1hIiwgInBhdGgiLCAidmFsdWUiLCAidiIsICJpIiwgImsiLCAiYSIsICJjcmVhdGVOb2RlIiwgImlzRW1wdHlQYXRoIiwgIkNvbGxlY3Rpb24iLCAiTm9kZUJhc2UiLCAidHlwZSIsICJjb3B5IiwgIml0IiwgImlzTm9kZSIsICJpc1BhaXIiLCAia2V5IiwgInJlc3QiLCAibm9kZSIsICJpc0NvbGxlY3Rpb24iLCAia2VlcFNjYWxhciIsICJpc1NjYWxhciIsICJhbGxvd1NjYWxhciIsICJuIiwgInN0cmluZ2lmeUNvbW1lbnQiLCAic3RyIiwgImluZGVudENvbW1lbnQiLCAiY29tbWVudCIsICJpbmRlbnQiLCAibGluZUNvbW1lbnQiLCAiRk9MRF9GTE9XIiwgIkZPTERfQkxPQ0siLCAiRk9MRF9RVU9URUQiLCAiZm9sZEZsb3dMaW5lcyIsICJ0ZXh0IiwgImluZGVudCIsICJtb2RlIiwgImluZGVudEF0U3RhcnQiLCAibGluZVdpZHRoIiwgIm1pbkNvbnRlbnRXaWR0aCIsICJvbkZvbGQiLCAib25PdmVyZmxvdyIsICJlbmRTdGVwIiwgImZvbGRzIiwgImVzY2FwZWRGb2xkcyIsICJlbmQiLCAic3BsaXQiLCAicHJldiIsICJvdmVyZmxvdyIsICJpIiwgImVzY1N0YXJ0IiwgImVzY0VuZCIsICJjb25zdW1lTW9yZUluZGVudGVkTGluZXMiLCAiY2giLCAibmV4dCIsICJqIiwgInJlcyIsICJmb2xkIiwgInN0YXJ0IiwgImdldEZvbGRPcHRpb25zIiwgImN0eCIsICJpc0Jsb2NrIiwgImNvbnRhaW5zRG9jdW1lbnRNYXJrZXIiLCAic3RyIiwgImxpbmVMZW5ndGhPdmVyTGltaXQiLCAibGluZVdpZHRoIiwgImluZGVudExlbmd0aCIsICJsaW1pdCIsICJzdHJMZW4iLCAic3RhcnQiLCAiZG91YmxlUXVvdGVkU3RyaW5nIiwgInZhbHVlIiwgImpzb24iLCAiaW1wbGljaXRLZXkiLCAibWluTXVsdGlMaW5lTGVuZ3RoIiwgImluZGVudCIsICJpIiwgImNoIiwgImNvZGUiLCAiZm9sZEZsb3dMaW5lcyIsICJGT0xEX1FVT1RFRCIsICJzaW5nbGVRdW90ZWRTdHJpbmciLCAicmVzIiwgIkZPTERfRkxPVyIsICJxdW90ZWRTdHJpbmciLCAic2luZ2xlUXVvdGUiLCAicXMiLCAiaGFzRG91YmxlIiwgImhhc1NpbmdsZSIsICJibG9ja0VuZE5ld2xpbmVzIiwgImUiLCAiYmxvY2tTdHJpbmciLCAiY29tbWVudCIsICJ0eXBlIiwgIm9uQ29tbWVudCIsICJvbkNob21wS2VlcCIsICJibG9ja1F1b3RlIiwgImNvbW1lbnRTdHJpbmciLCAibGl0ZXJhbCIsICJTY2FsYXIiLCAiY2hvbXAiLCAiZW5kU3RhcnQiLCAiZW5kIiwgImVuZE5sUG9zIiwgInN0YXJ0V2l0aFNwYWNlIiwgInN0YXJ0RW5kIiwgInN0YXJ0TmxQb3MiLCAiaGVhZGVyIiwgImJvZHkiLCAiRk9MRF9CTE9DSyIsICJwbGFpblN0cmluZyIsICJpdGVtIiwgImFjdHVhbFN0cmluZyIsICJpbmRlbnRTdGVwIiwgImluRmxvdyIsICJ0ZXN0IiwgInRhZyIsICJfYSIsICJjb21wYXQiLCAidGFncyIsICJzdHJpbmdpZnlTdHJpbmciLCAic3MiLCAiX3N0cmluZ2lmeSIsICJfdHlwZSIsICJkZWZhdWx0S2V5VHlwZSIsICJkZWZhdWx0U3RyaW5nVHlwZSIsICJ0IiwgImNyZWF0ZVN0cmluZ2lmeUNvbnRleHQiLCAiZG9jIiwgIm9wdGlvbnMiLCAib3B0IiwgInN0cmluZ2lmeUNvbW1lbnQiLCAiaW5GbG93IiwgImdldFRhZ09iamVjdCIsICJ0YWdzIiwgIml0ZW0iLCAiX2EiLCAiX2IiLCAiX2MiLCAiX2QiLCAibWF0Y2giLCAidCIsICJ0YWdPYmoiLCAib2JqIiwgImlzU2NhbGFyIiwgInRlc3RNYXRjaCIsICJuYW1lIiwgInN0cmluZ2lmeVByb3BzIiwgIm5vZGUiLCAiYW5jaG9ycyIsICJwcm9wcyIsICJhbmNob3IiLCAiaXNDb2xsZWN0aW9uIiwgImFuY2hvcklzVmFsaWQiLCAidGFnIiwgInN0cmluZ2lmeSIsICJjdHgiLCAib25Db21tZW50IiwgIm9uQ2hvbXBLZWVwIiwgImlzUGFpciIsICJpc0FsaWFzIiwgImlzTm9kZSIsICJvIiwgInN0ciIsICJzdHJpbmdpZnlTdHJpbmciLCAic3RyaW5naWZ5UGFpciIsICJrZXkiLCAidmFsdWUiLCAiY3R4IiwgIm9uQ29tbWVudCIsICJvbkNob21wS2VlcCIsICJfYSIsICJfYiIsICJhbGxOdWxsVmFsdWVzIiwgImRvYyIsICJpbmRlbnQiLCAiaW5kZW50U3RlcCIsICJjb21tZW50U3RyaW5nIiwgImluZGVudFNlcSIsICJzaW1wbGVLZXlzIiwgImtleUNvbW1lbnQiLCAiaXNOb2RlIiwgImlzQ29sbGVjdGlvbiIsICJtc2ciLCAiZXhwbGljaXRLZXkiLCAiaXNTY2FsYXIiLCAiU2NhbGFyIiwgImtleUNvbW1lbnREb25lIiwgImNob21wS2VlcCIsICJzdHIiLCAic3RyaW5naWZ5IiwgImxpbmVDb21tZW50IiwgInZzYiIsICJ2Y2IiLCAidmFsdWVDb21tZW50IiwgImlzU2VxIiwgInZhbHVlQ29tbWVudERvbmUiLCAidmFsdWVTdHIiLCAid3MiLCAiY3MiLCAiaW5kZW50Q29tbWVudCIsICJ2czAiLCAibmwwIiwgImhhc05ld2xpbmUiLCAiZmxvdyIsICJoYXNQcm9wc0xpbmUiLCAic3AwIiwgIndhcm4iLCAibG9nTGV2ZWwiLCAid2FybmluZyIsICJNRVJHRV9LRVkiLCAibWVyZ2UiLCAidmFsdWUiLCAiU2NhbGFyIiwgImFkZE1lcmdlVG9KU01hcCIsICJpc01lcmdlS2V5IiwgImN0eCIsICJrZXkiLCAiaXNTY2FsYXIiLCAidGFnIiwgIm1hcCIsICJpc0FsaWFzIiwgImlzU2VxIiwgIml0IiwgIm1lcmdlVmFsdWUiLCAic291cmNlIiwgImlzTWFwIiwgInNyY01hcCIsICJhZGRQYWlyVG9KU01hcCIsICJjdHgiLCAibWFwIiwgImtleSIsICJ2YWx1ZSIsICJpc05vZGUiLCAiaXNNZXJnZUtleSIsICJhZGRNZXJnZVRvSlNNYXAiLCAianNLZXkiLCAidG9KUyIsICJzdHJpbmdLZXkiLCAic3RyaW5naWZ5S2V5IiwgImpzVmFsdWUiLCAic3RyQ3R4IiwgImNyZWF0ZVN0cmluZ2lmeUNvbnRleHQiLCAibm9kZSIsICJzdHJLZXkiLCAianNvblN0ciIsICJ3YXJuIiwgImNyZWF0ZVBhaXIiLCAia2V5IiwgInZhbHVlIiwgImN0eCIsICJrIiwgImNyZWF0ZU5vZGUiLCAidiIsICJQYWlyIiwgIl9QYWlyIiwgIk5PREVfVFlQRSIsICJQQUlSIiwgInNjaGVtYSIsICJpc05vZGUiLCAiXyIsICJwYWlyIiwgImFkZFBhaXJUb0pTTWFwIiwgIm9uQ29tbWVudCIsICJvbkNob21wS2VlcCIsICJzdHJpbmdpZnlQYWlyIiwgInN0cmluZ2lmeUNvbGxlY3Rpb24iLCAiY29sbGVjdGlvbiIsICJjdHgiLCAib3B0aW9ucyIsICJfYSIsICJzdHJpbmdpZnlGbG93Q29sbGVjdGlvbiIsICJzdHJpbmdpZnlCbG9ja0NvbGxlY3Rpb24iLCAiY29tbWVudCIsICJpdGVtcyIsICJibG9ja0l0ZW1QcmVmaXgiLCAiZmxvd0NoYXJzIiwgIml0ZW1JbmRlbnQiLCAib25DaG9tcEtlZXAiLCAib25Db21tZW50IiwgImluZGVudCIsICJjb21tZW50U3RyaW5nIiwgIml0ZW1DdHgiLCAiY2hvbXBLZWVwIiwgImxpbmVzIiwgImkiLCAiaXRlbSIsICJpc05vZGUiLCAiYWRkQ29tbWVudEJlZm9yZSIsICJpc1BhaXIiLCAiaWsiLCAic3RyIiwgInN0cmluZ2lmeSIsICJsaW5lQ29tbWVudCIsICJsaW5lIiwgImluZGVudENvbW1lbnQiLCAiaW5kZW50U3RlcCIsICJmY1BhZGRpbmciLCAicmVxTmV3bGluZSIsICJsaW5lc0F0VmFsdWUiLCAiaXYiLCAic3RhcnQiLCAiZW5kIiwgImxlbiIsICJzdW0iLCAiaWMiLCAiZmluZFBhaXIiLCAiaXRlbXMiLCAia2V5IiwgImsiLCAiaXNTY2FsYXIiLCAiaXQiLCAiaXNQYWlyIiwgIllBTUxNYXAiLCAiQ29sbGVjdGlvbiIsICJzY2hlbWEiLCAiTUFQIiwgIm9iaiIsICJjdHgiLCAia2VlcFVuZGVmaW5lZCIsICJyZXBsYWNlciIsICJtYXAiLCAiYWRkIiwgInZhbHVlIiwgImNyZWF0ZVBhaXIiLCAicGFpciIsICJvdmVyd3JpdGUiLCAiX2EiLCAiX3BhaXIiLCAiUGFpciIsICJwcmV2IiwgInNvcnRFbnRyaWVzIiwgImlzU2NhbGFyVmFsdWUiLCAiaSIsICJpdGVtIiwgImtlZXBTY2FsYXIiLCAibm9kZSIsICJfIiwgIlR5cGUiLCAiYWRkUGFpclRvSlNNYXAiLCAib25Db21tZW50IiwgIm9uQ2hvbXBLZWVwIiwgInN0cmluZ2lmeUNvbGxlY3Rpb24iLCAibWFwIiwgIllBTUxNYXAiLCAib25FcnJvciIsICJpc01hcCIsICJzY2hlbWEiLCAib2JqIiwgImN0eCIsICJZQU1MU2VxIiwgIkNvbGxlY3Rpb24iLCAic2NoZW1hIiwgIlNFUSIsICJ2YWx1ZSIsICJrZXkiLCAiaWR4IiwgImFzSXRlbUluZGV4IiwgImtlZXBTY2FsYXIiLCAiaXQiLCAiaXNTY2FsYXIiLCAicHJldiIsICJpc1NjYWxhclZhbHVlIiwgIl8iLCAiY3R4IiwgInNlcSIsICJpIiwgIml0ZW0iLCAidG9KUyIsICJvbkNvbW1lbnQiLCAib25DaG9tcEtlZXAiLCAic3RyaW5naWZ5Q29sbGVjdGlvbiIsICJvYmoiLCAicmVwbGFjZXIiLCAiY3JlYXRlTm9kZSIsICJzZXEiLCAiWUFNTFNlcSIsICJvbkVycm9yIiwgImlzU2VxIiwgInNjaGVtYSIsICJvYmoiLCAiY3R4IiwgInN0cmluZyIsICJ2YWx1ZSIsICJzdHIiLCAiaXRlbSIsICJjdHgiLCAib25Db21tZW50IiwgIm9uQ2hvbXBLZWVwIiwgInN0cmluZ2lmeVN0cmluZyIsICJudWxsVGFnIiwgInZhbHVlIiwgIlNjYWxhciIsICJzb3VyY2UiLCAiY3R4IiwgImJvb2xUYWciLCAidmFsdWUiLCAic3RyIiwgIlNjYWxhciIsICJzb3VyY2UiLCAiY3R4IiwgInN2IiwgInN0cmluZ2lmeU51bWJlciIsICJmb3JtYXQiLCAibWluRnJhY3Rpb25EaWdpdHMiLCAidGFnIiwgInZhbHVlIiwgIm51bSIsICJuIiwgImkiLCAiZCIsICJmbG9hdE5hTiIsICJ2YWx1ZSIsICJzdHIiLCAic3RyaW5naWZ5TnVtYmVyIiwgImZsb2F0RXhwIiwgIm5vZGUiLCAibnVtIiwgImZsb2F0IiwgIlNjYWxhciIsICJkb3QiLCAiaW50SWRlbnRpZnkiLCAidmFsdWUiLCAiaW50UmVzb2x2ZSIsICJzdHIiLCAib2Zmc2V0IiwgInJhZGl4IiwgImludEFzQmlnSW50IiwgImludFN0cmluZ2lmeSIsICJub2RlIiwgInByZWZpeCIsICJzdHJpbmdpZnlOdW1iZXIiLCAiaW50T2N0IiwgIl9vbkVycm9yIiwgIm9wdCIsICJpbnQiLCAiaW50SGV4IiwgInNjaGVtYSIsICJtYXAiLCAic2VxIiwgInN0cmluZyIsICJudWxsVGFnIiwgImJvb2xUYWciLCAiaW50T2N0IiwgImludCIsICJpbnRIZXgiLCAiZmxvYXROYU4iLCAiZmxvYXRFeHAiLCAiZmxvYXQiLCAiaW50SWRlbnRpZnkiLCAidmFsdWUiLCAic3RyaW5naWZ5SlNPTiIsICJqc29uU2NhbGFycyIsICJzdHIiLCAiU2NhbGFyIiwgIl9vbkVycm9yIiwgImludEFzQmlnSW50IiwgImpzb25FcnJvciIsICJvbkVycm9yIiwgInNjaGVtYSIsICJtYXAiLCAic2VxIiwgImJpbmFyeSIsICJ2YWx1ZSIsICJzcmMiLCAib25FcnJvciIsICJzdHIiLCAiYnVmZmVyIiwgImkiLCAiY29tbWVudCIsICJ0eXBlIiwgImN0eCIsICJvbkNvbW1lbnQiLCAib25DaG9tcEtlZXAiLCAiYnVmIiwgInMiLCAiU2NhbGFyIiwgImxpbmVXaWR0aCIsICJuIiwgImxpbmVzIiwgIm8iLCAic3RyaW5naWZ5U3RyaW5nIiwgInJlc29sdmVQYWlycyIsICJzZXEiLCAib25FcnJvciIsICJfYSIsICJpc1NlcSIsICJpIiwgIml0ZW0iLCAiaXNQYWlyIiwgImlzTWFwIiwgInBhaXIiLCAiUGFpciIsICJTY2FsYXIiLCAiY24iLCAiY3JlYXRlUGFpcnMiLCAic2NoZW1hIiwgIml0ZXJhYmxlIiwgImN0eCIsICJyZXBsYWNlciIsICJwYWlycyIsICJZQU1MU2VxIiwgIml0IiwgImtleSIsICJ2YWx1ZSIsICJrZXlzIiwgImNyZWF0ZVBhaXIiLCAiWUFNTE9NYXAiLCAiX1lBTUxPTWFwIiwgIllBTUxTZXEiLCAiWUFNTE1hcCIsICJfIiwgImN0eCIsICJtYXAiLCAicGFpciIsICJrZXkiLCAidmFsdWUiLCAiaXNQYWlyIiwgInRvSlMiLCAic2NoZW1hIiwgIml0ZXJhYmxlIiwgInBhaXJzIiwgImNyZWF0ZVBhaXJzIiwgIm9tYXAiLCAic2VxIiwgIm9uRXJyb3IiLCAicmVzb2x2ZVBhaXJzIiwgInNlZW5LZXlzIiwgImlzU2NhbGFyIiwgImJvb2xTdHJpbmdpZnkiLCAidmFsdWUiLCAic291cmNlIiwgImN0eCIsICJ0cnVlVGFnIiwgImZhbHNlVGFnIiwgIlNjYWxhciIsICJmbG9hdE5hTiIsICJ2YWx1ZSIsICJzdHIiLCAic3RyaW5naWZ5TnVtYmVyIiwgImZsb2F0RXhwIiwgIm5vZGUiLCAibnVtIiwgImZsb2F0IiwgIlNjYWxhciIsICJkb3QiLCAiZiIsICJpbnRJZGVudGlmeSIsICJ2YWx1ZSIsICJpbnRSZXNvbHZlIiwgInN0ciIsICJvZmZzZXQiLCAicmFkaXgiLCAiaW50QXNCaWdJbnQiLCAic2lnbiIsICJuIiwgImludFN0cmluZ2lmeSIsICJub2RlIiwgInByZWZpeCIsICJzdHJpbmdpZnlOdW1iZXIiLCAiaW50QmluIiwgIl9vbkVycm9yIiwgIm9wdCIsICJpbnRPY3QiLCAiaW50IiwgImludEhleCIsICJZQU1MU2V0IiwgIl9ZQU1MU2V0IiwgIllBTUxNYXAiLCAic2NoZW1hIiwgImtleSIsICJwYWlyIiwgImlzUGFpciIsICJQYWlyIiwgImZpbmRQYWlyIiwgImtlZXBQYWlyIiwgImlzU2NhbGFyIiwgInZhbHVlIiwgInByZXYiLCAiXyIsICJjdHgiLCAib25Db21tZW50IiwgIm9uQ2hvbXBLZWVwIiwgIml0ZXJhYmxlIiwgInJlcGxhY2VyIiwgInNldCIsICJjcmVhdGVQYWlyIiwgIm1hcCIsICJvbkVycm9yIiwgImlzTWFwIiwgInBhcnNlU2V4YWdlc2ltYWwiLCAic3RyIiwgImFzQmlnSW50IiwgInNpZ24iLCAicGFydHMiLCAibnVtIiwgIm4iLCAicmVzIiwgInAiLCAic3RyaW5naWZ5U2V4YWdlc2ltYWwiLCAibm9kZSIsICJ2YWx1ZSIsICJzdHJpbmdpZnlOdW1iZXIiLCAiXzYwIiwgImludFRpbWUiLCAiX29uRXJyb3IiLCAiaW50QXNCaWdJbnQiLCAiZmxvYXRUaW1lIiwgInRpbWVzdGFtcCIsICJtYXRjaCIsICJ5ZWFyIiwgIm1vbnRoIiwgImRheSIsICJob3VyIiwgIm1pbnV0ZSIsICJzZWNvbmQiLCAibWlsbGlzZWMiLCAiZGF0ZSIsICJ0eiIsICJzY2hlbWEiLCAibWFwIiwgInNlcSIsICJzdHJpbmciLCAibnVsbFRhZyIsICJ0cnVlVGFnIiwgImZhbHNlVGFnIiwgImludEJpbiIsICJpbnRPY3QiLCAiaW50IiwgImludEhleCIsICJmbG9hdE5hTiIsICJmbG9hdEV4cCIsICJmbG9hdCIsICJiaW5hcnkiLCAibWVyZ2UiLCAib21hcCIsICJwYWlycyIsICJzZXQiLCAiaW50VGltZSIsICJmbG9hdFRpbWUiLCAidGltZXN0YW1wIiwgInNjaGVtYXMiLCAic2NoZW1hIiwgIm1hcCIsICJzZXEiLCAic3RyaW5nIiwgInRhZ3NCeU5hbWUiLCAiYmluYXJ5IiwgImJvb2xUYWciLCAiZmxvYXQiLCAiZmxvYXRFeHAiLCAiZmxvYXROYU4iLCAiZmxvYXRUaW1lIiwgImludCIsICJpbnRIZXgiLCAiaW50T2N0IiwgImludFRpbWUiLCAibWVyZ2UiLCAibnVsbFRhZyIsICJvbWFwIiwgInBhaXJzIiwgInNldCIsICJ0aW1lc3RhbXAiLCAiY29yZUtub3duVGFncyIsICJnZXRUYWdzIiwgImN1c3RvbVRhZ3MiLCAic2NoZW1hTmFtZSIsICJhZGRNZXJnZVRhZyIsICJzY2hlbWFUYWdzIiwgInRhZ3MiLCAia2V5cyIsICJrZXkiLCAidGFnIiwgInRhZ09iaiIsICJ0YWdOYW1lIiwgInNvcnRNYXBFbnRyaWVzQnlLZXkiLCAiYSIsICJiIiwgIlNjaGVtYSIsICJfU2NoZW1hIiwgImNvbXBhdCIsICJjdXN0b21UYWdzIiwgIm1lcmdlIiwgInJlc29sdmVLbm93blRhZ3MiLCAic2NoZW1hIiwgInNvcnRNYXBFbnRyaWVzIiwgInRvU3RyaW5nRGVmYXVsdHMiLCAiZ2V0VGFncyIsICJjb3JlS25vd25UYWdzIiwgIk1BUCIsICJtYXAiLCAiU0NBTEFSIiwgInN0cmluZyIsICJTRVEiLCAic2VxIiwgImNvcHkiLCAic3RyaW5naWZ5RG9jdW1lbnQiLCAiZG9jIiwgIm9wdGlvbnMiLCAiX2EiLCAibGluZXMiLCAiaGFzRGlyZWN0aXZlcyIsICJkaXIiLCAiY3R4IiwgImNyZWF0ZVN0cmluZ2lmeUNvbnRleHQiLCAiY29tbWVudFN0cmluZyIsICJjcyIsICJpbmRlbnRDb21tZW50IiwgImNob21wS2VlcCIsICJjb250ZW50Q29tbWVudCIsICJpc05vZGUiLCAib25DaG9tcEtlZXAiLCAiYm9keSIsICJzdHJpbmdpZnkiLCAibGluZUNvbW1lbnQiLCAiZGMiLCAiRG9jdW1lbnQiLCAiX0RvY3VtZW50IiwgInZhbHVlIiwgInJlcGxhY2VyIiwgIm9wdGlvbnMiLCAiTk9ERV9UWVBFIiwgIkRPQyIsICJfcmVwbGFjZXIiLCAib3B0IiwgInZlcnNpb24iLCAiRGlyZWN0aXZlcyIsICJjb3B5IiwgImlzTm9kZSIsICJhc3NlcnRDb2xsZWN0aW9uIiwgInBhdGgiLCAibm9kZSIsICJuYW1lIiwgInByZXYiLCAiYW5jaG9yTmFtZXMiLCAiZmluZE5ld0FuY2hvciIsICJBbGlhcyIsICJrZXlUb1N0ciIsICJ2IiwgImFzU3RyIiwgImFsaWFzRHVwbGljYXRlT2JqZWN0cyIsICJhbmNob3JQcmVmaXgiLCAiZmxvdyIsICJrZWVwVW5kZWZpbmVkIiwgIm9uVGFnT2JqIiwgInRhZyIsICJvbkFuY2hvciIsICJzZXRBbmNob3JzIiwgInNvdXJjZU9iamVjdHMiLCAiY3JlYXRlTm9kZUFuY2hvcnMiLCAiY3R4IiwgImNyZWF0ZU5vZGUiLCAiaXNDb2xsZWN0aW9uIiwgImtleSIsICJrIiwgIlBhaXIiLCAiaXNFbXB0eVBhdGgiLCAia2VlcFNjYWxhciIsICJpc1NjYWxhciIsICJjb2xsZWN0aW9uRnJvbVBhdGgiLCAic3YiLCAiU2NoZW1hIiwgImpzb24iLCAianNvbkFyZyIsICJtYXBBc01hcCIsICJtYXhBbGlhc0NvdW50IiwgInJldml2ZXIiLCAicmVzIiwgInRvSlMiLCAiY291bnQiLCAiYXBwbHlSZXZpdmVyIiwgInMiLCAic3RyaW5naWZ5RG9jdW1lbnQiLCAiY29udGVudHMiLCAiWUFNTEVycm9yIiwgIm5hbWUiLCAicG9zIiwgImNvZGUiLCAibWVzc2FnZSIsICJZQU1MUGFyc2VFcnJvciIsICJZQU1MV2FybmluZyIsICJwcmV0dGlmeUVycm9yIiwgInNyYyIsICJsYyIsICJlcnJvciIsICJsaW5lIiwgImNvbCIsICJjaSIsICJsaW5lU3RyIiwgInRyaW1TdGFydCIsICJwcmV2IiwgImNvdW50IiwgImVuZCIsICJwb2ludGVyIiwgInJlc29sdmVQcm9wcyIsICJ0b2tlbnMiLCAiZmxvdyIsICJpbmRpY2F0b3IiLCAibmV4dCIsICJvZmZzZXQiLCAib25FcnJvciIsICJwYXJlbnRJbmRlbnQiLCAic3RhcnRPbk5ld2xpbmUiLCAic3BhY2VCZWZvcmUiLCAiYXROZXdsaW5lIiwgImhhc1NwYWNlIiwgImNvbW1lbnQiLCAiY29tbWVudFNlcCIsICJoYXNOZXdsaW5lIiwgInJlcVNwYWNlIiwgInRhYiIsICJhbmNob3IiLCAidGFnIiwgIm5ld2xpbmVBZnRlclByb3AiLCAiY29tbWEiLCAiZm91bmQiLCAic3RhcnQiLCAidG9rZW4iLCAiY2IiLCAibGFzdCIsICJlbmQiLCAiY29udGFpbnNOZXdsaW5lIiwgImtleSIsICJzdCIsICJpdCIsICJmbG93SW5kZW50Q2hlY2siLCAiaW5kZW50IiwgImZjIiwgIm9uRXJyb3IiLCAiZW5kIiwgImNvbnRhaW5zTmV3bGluZSIsICJtYXBJbmNsdWRlcyIsICJjdHgiLCAiaXRlbXMiLCAic2VhcmNoIiwgInVuaXF1ZUtleXMiLCAiaXNFcXVhbCIsICJhIiwgImIiLCAiaXNTY2FsYXIiLCAicGFpciIsICJzdGFydENvbE1zZyIsICJyZXNvbHZlQmxvY2tNYXAiLCAiY29tcG9zZU5vZGUiLCAiY29tcG9zZUVtcHR5Tm9kZSIsICJjdHgiLCAiYm0iLCAib25FcnJvciIsICJ0YWciLCAiX2EiLCAiX2IiLCAiTm9kZUNsYXNzIiwgIllBTUxNYXAiLCAibWFwIiwgIm9mZnNldCIsICJjb21tZW50RW5kIiwgImNvbGxJdGVtIiwgInN0YXJ0IiwgImtleSIsICJzZXAiLCAidmFsdWUiLCAia2V5UHJvcHMiLCAicmVzb2x2ZVByb3BzIiwgImltcGxpY2l0S2V5IiwgImNvbnRhaW5zTmV3bGluZSIsICJrZXlTdGFydCIsICJrZXlOb2RlIiwgImZsb3dJbmRlbnRDaGVjayIsICJtYXBJbmNsdWRlcyIsICJ2YWx1ZVByb3BzIiwgInZhbHVlTm9kZSIsICJwYWlyIiwgIlBhaXIiLCAicmVzb2x2ZUJsb2NrU2VxIiwgImNvbXBvc2VOb2RlIiwgImNvbXBvc2VFbXB0eU5vZGUiLCAiY3R4IiwgImJzIiwgIm9uRXJyb3IiLCAidGFnIiwgIl9hIiwgIk5vZGVDbGFzcyIsICJZQU1MU2VxIiwgInNlcSIsICJvZmZzZXQiLCAiY29tbWVudEVuZCIsICJzdGFydCIsICJ2YWx1ZSIsICJwcm9wcyIsICJyZXNvbHZlUHJvcHMiLCAibm9kZSIsICJmbG93SW5kZW50Q2hlY2siLCAicmVzb2x2ZUVuZCIsICJlbmQiLCAib2Zmc2V0IiwgInJlcVNwYWNlIiwgIm9uRXJyb3IiLCAiY29tbWVudCIsICJoYXNTcGFjZSIsICJzZXAiLCAidG9rZW4iLCAic291cmNlIiwgInR5cGUiLCAiY2IiLCAiYmxvY2tNc2ciLCAiaXNCbG9jayIsICJ0b2tlbiIsICJyZXNvbHZlRmxvd0NvbGxlY3Rpb24iLCAiY29tcG9zZU5vZGUiLCAiY29tcG9zZUVtcHR5Tm9kZSIsICJjdHgiLCAiZmMiLCAib25FcnJvciIsICJ0YWciLCAiX2EiLCAiX2IiLCAiaXNNYXAiLCAiZmNOYW1lIiwgIk5vZGVDbGFzcyIsICJZQU1MTWFwIiwgIllBTUxTZXEiLCAiY29sbCIsICJhdFJvb3QiLCAib2Zmc2V0IiwgImkiLCAiY29sbEl0ZW0iLCAic3RhcnQiLCAia2V5IiwgInNlcCIsICJ2YWx1ZSIsICJwcm9wcyIsICJyZXNvbHZlUHJvcHMiLCAiY29udGFpbnNOZXdsaW5lIiwgInByZXZJdGVtQ29tbWVudCIsICJsb29wIiwgInN0IiwgInByZXYiLCAiaXNQYWlyIiwgInZhbHVlTm9kZSIsICJrZXlTdGFydCIsICJrZXlOb2RlIiwgInZhbHVlUHJvcHMiLCAicGFpciIsICJQYWlyIiwgIm1hcCIsICJtYXBJbmNsdWRlcyIsICJlbmRSYW5nZSIsICJleHBlY3RlZEVuZCIsICJjZSIsICJlZSIsICJjZVBvcyIsICJuYW1lIiwgIm1zZyIsICJlbmQiLCAicmVzb2x2ZUVuZCIsICJyZXNvbHZlQ29sbGVjdGlvbiIsICJDTiIsICJjdHgiLCAidG9rZW4iLCAib25FcnJvciIsICJ0YWdOYW1lIiwgInRhZyIsICJjb2xsIiwgInJlc29sdmVCbG9ja01hcCIsICJyZXNvbHZlQmxvY2tTZXEiLCAicmVzb2x2ZUZsb3dDb2xsZWN0aW9uIiwgIkNvbGwiLCAiY29tcG9zZUNvbGxlY3Rpb24iLCAicHJvcHMiLCAiX2EiLCAiX2IiLCAidGFnVG9rZW4iLCAibXNnIiwgImFuY2hvciIsICJubCIsICJsYXN0UHJvcCIsICJleHBUeXBlIiwgIllBTUxNYXAiLCAiWUFNTFNlcSIsICJ0IiwgImt0IiwgInJlcyIsICJub2RlIiwgImlzTm9kZSIsICJTY2FsYXIiLCAicmVzb2x2ZUJsb2NrU2NhbGFyIiwgImN0eCIsICJzY2FsYXIiLCAib25FcnJvciIsICJzdGFydCIsICJoZWFkZXIiLCAicGFyc2VCbG9ja1NjYWxhckhlYWRlciIsICJ0eXBlIiwgIlNjYWxhciIsICJsaW5lcyIsICJzcGxpdExpbmVzIiwgImNob21wU3RhcnQiLCAiaSIsICJjb250ZW50IiwgInZhbHVlIiwgImVuZCIsICJ0cmltSW5kZW50IiwgIm9mZnNldCIsICJjb250ZW50U3RhcnQiLCAiaW5kZW50IiwgInNlcCIsICJwcmV2TW9yZUluZGVudGVkIiwgImNybGYiLCAibWVzc2FnZSIsICJwcm9wcyIsICJzdHJpY3QiLCAic291cmNlIiwgIm1vZGUiLCAiY2hvbXAiLCAiZXJyb3IiLCAiY2giLCAibiIsICJoYXNTcGFjZSIsICJjb21tZW50IiwgImxlbmd0aCIsICJ0b2tlbiIsICJ0cyIsICJzcGxpdCIsICJmaXJzdCIsICJtIiwgInJlc29sdmVGbG93U2NhbGFyIiwgInNjYWxhciIsICJzdHJpY3QiLCAib25FcnJvciIsICJvZmZzZXQiLCAidHlwZSIsICJzb3VyY2UiLCAiZW5kIiwgIl90eXBlIiwgInZhbHVlIiwgIl9vbkVycm9yIiwgInJlbCIsICJjb2RlIiwgIm1zZyIsICJTY2FsYXIiLCAicGxhaW5WYWx1ZSIsICJzaW5nbGVRdW90ZWRWYWx1ZSIsICJkb3VibGVRdW90ZWRWYWx1ZSIsICJ2YWx1ZUVuZCIsICJyZSIsICJyZXNvbHZlRW5kIiwgImJhZENoYXIiLCAiZm9sZExpbmVzIiwgIl9hIiwgImZpcnN0IiwgImxpbmUiLCAiZSIsICJtYXRjaCIsICJyZXMiLCAic2VwIiwgInBvcyIsICJsYXN0IiwgImkiLCAiY2giLCAiZm9sZCIsICJmb2xkTmV3bGluZSIsICJuZXh0IiwgImNjIiwgImVzY2FwZUNvZGVzIiwgImxlbmd0aCIsICJwYXJzZUNoYXJDb2RlIiwgInJhdyIsICJ3c1N0YXJ0IiwgImNvbXBvc2VTY2FsYXIiLCAiY3R4IiwgInRva2VuIiwgInRhZ1Rva2VuIiwgIm9uRXJyb3IiLCAidmFsdWUiLCAidHlwZSIsICJjb21tZW50IiwgInJhbmdlIiwgInJlc29sdmVCbG9ja1NjYWxhciIsICJyZXNvbHZlRmxvd1NjYWxhciIsICJ0YWdOYW1lIiwgIm1zZyIsICJ0YWciLCAiU0NBTEFSIiwgImZpbmRTY2FsYXJUYWdCeU5hbWUiLCAiZmluZFNjYWxhclRhZ0J5VGVzdCIsICJzY2FsYXIiLCAicmVzIiwgImlzU2NhbGFyIiwgIlNjYWxhciIsICJlcnJvciIsICJzY2hlbWEiLCAiX2EiLCAibWF0Y2hXaXRoVGVzdCIsICJrdCIsICJhdEtleSIsICJkaXJlY3RpdmVzIiwgImNvbXBhdCIsICJ0cyIsICJjcyIsICJlbXB0eVNjYWxhclBvc2l0aW9uIiwgIm9mZnNldCIsICJiZWZvcmUiLCAicG9zIiwgImkiLCAic3QiLCAiQ04iLCAiY29tcG9zZU5vZGUiLCAiY29tcG9zZUVtcHR5Tm9kZSIsICJjdHgiLCAidG9rZW4iLCAicHJvcHMiLCAib25FcnJvciIsICJhdEtleSIsICJzcGFjZUJlZm9yZSIsICJjb21tZW50IiwgImFuY2hvciIsICJ0YWciLCAibm9kZSIsICJpc1NyY1Rva2VuIiwgImNvbXBvc2VBbGlhcyIsICJjb21wb3NlU2NhbGFyIiwgImNvbXBvc2VDb2xsZWN0aW9uIiwgIm1lc3NhZ2UiLCAiaXNTY2FsYXIiLCAib2Zmc2V0IiwgImJlZm9yZSIsICJwb3MiLCAiZW5kIiwgImVtcHR5U2NhbGFyUG9zaXRpb24iLCAib3B0aW9ucyIsICJzb3VyY2UiLCAiYWxpYXMiLCAiQWxpYXMiLCAidmFsdWVFbmQiLCAicmUiLCAicmVzb2x2ZUVuZCIsICJjb21wb3NlRG9jIiwgIm9wdGlvbnMiLCAiZGlyZWN0aXZlcyIsICJvZmZzZXQiLCAic3RhcnQiLCAidmFsdWUiLCAiZW5kIiwgIm9uRXJyb3IiLCAib3B0cyIsICJkb2MiLCAiRG9jdW1lbnQiLCAiY3R4IiwgInByb3BzIiwgInJlc29sdmVQcm9wcyIsICJjb21wb3NlTm9kZSIsICJjb21wb3NlRW1wdHlOb2RlIiwgImNvbnRlbnRFbmQiLCAicmUiLCAicmVzb2x2ZUVuZCIsICJnZXRFcnJvclBvcyIsICJzcmMiLCAib2Zmc2V0IiwgInNvdXJjZSIsICJwYXJzZVByZWx1ZGUiLCAicHJlbHVkZSIsICJfYSIsICJjb21tZW50IiwgImF0Q29tbWVudCIsICJhZnRlckVtcHR5TGluZSIsICJDb21wb3NlciIsICJvcHRpb25zIiwgImNvZGUiLCAibWVzc2FnZSIsICJ3YXJuaW5nIiwgInBvcyIsICJZQU1MV2FybmluZyIsICJZQU1MUGFyc2VFcnJvciIsICJEaXJlY3RpdmVzIiwgImRvYyIsICJhZnRlckRvYyIsICJkYyIsICJpc0NvbGxlY3Rpb24iLCAiaXQiLCAiaXNQYWlyIiwgImNiIiwgInRva2VucyIsICJmb3JjZURvYyIsICJlbmRPZmZzZXQiLCAidG9rZW4iLCAiX195aWVsZFN0YXIiLCAiY29tcG9zZURvYyIsICJtc2ciLCAiZXJyb3IiLCAiZW5kIiwgInJlc29sdmVFbmQiLCAib3B0cyIsICJEb2N1bWVudCIsICJCUkVBSyIsICJTS0lQIiwgIlJFTU9WRSIsICJ2aXNpdCIsICJjc3QiLCAidmlzaXRvciIsICJfdmlzaXQiLCAicGF0aCIsICJpdGVtIiwgImZpZWxkIiwgImluZGV4IiwgInRvayIsICJwYXJlbnQiLCAiY29sbCIsICJjdHJsIiwgInRva2VuIiwgImkiLCAiY2kiLCAiQk9NIiwgIkRPQ1VNRU5UIiwgIkZMT1dfRU5EIiwgIlNDQUxBUiIsICJ0b2tlblR5cGUiLCAic291cmNlIiwgIkJPTSIsICJET0NVTUVOVCIsICJGTE9XX0VORCIsICJTQ0FMQVIiLCAiaXNFbXB0eSIsICJjaCIsICJoZXhEaWdpdHMiLCAidGFnQ2hhcnMiLCAiZmxvd0luZGljYXRvckNoYXJzIiwgImludmFsaWRBbmNob3JDaGFycyIsICJpc05vdEFuY2hvckNoYXIiLCAiTGV4ZXIiLCAic291cmNlIiwgImluY29tcGxldGUiLCAiX2EiLCAibmV4dCIsICJfX3lpZWxkU3RhciIsICJpIiwgIm4iLCAib2Zmc2V0IiwgImluZGVudCIsICJkdCIsICJlbmQiLCAic3RhdGUiLCAibGluZSIsICJCT00iLCAiZGlyRW5kIiwgImNzIiwgInNwIiwgIkRPQ1VNRU5UIiwgInMiLCAiY2gwIiwgImNoMSIsICJubCIsICJGTE9XX0VORCIsICJxdW90ZSIsICJxYiIsICJsb29wIiwgImxhc3RDaGFyIiwgIlNDQUxBUiIsICJpbkZsb3ciLCAiYWxsb3dFbXB0eSIsICJhbGxvd1RhYnMiLCAidGVzdCIsICJMaW5lQ291bnRlciIsICJvZmZzZXQiLCAibG93IiwgImhpZ2giLCAibWlkIiwgInN0YXJ0IiwgImluY2x1ZGVzVG9rZW4iLCAibGlzdCIsICJ0eXBlIiwgImkiLCAiZmluZE5vbkVtcHR5SW5kZXgiLCAiaXNGbG93VG9rZW4iLCAidG9rZW4iLCAiZ2V0UHJldlByb3BzIiwgInBhcmVudCIsICJfYSIsICJpdCIsICJnZXRGaXJzdEtleVN0YXJ0UHJvcHMiLCAicHJldiIsICJsb29wIiwgImZpeEZsb3dTZXFJdGVtcyIsICJmYyIsICJQYXJzZXIiLCAib25OZXdMaW5lIiwgIkxleGVyIiwgInNvdXJjZSIsICJpbmNvbXBsZXRlIiwgImxleGVtZSIsICJfX3lpZWxkU3RhciIsICJ0b2tlblR5cGUiLCAibWVzc2FnZSIsICJ0b3AiLCAibiIsICJlcnJvciIsICJsYXN0IiwgInN0IiwgImRvYyIsICJidiIsICJzY2FsYXIiLCAic3RhcnQiLCAic2VwIiwgIm1hcCIsICJubCIsICJlbmQiLCAiYXRNYXBJbmRlbnQiLCAiYXROZXh0SXRlbSIsICJrZXkiLCAiZnMiLCAic2VxIiwgImluZGVudCIsICJkb2NFbmQiLCAicGFyc2VPcHRpb25zIiwgIm9wdGlvbnMiLCAicHJldHR5RXJyb3JzIiwgIkxpbmVDb3VudGVyIiwgInBhcnNlRG9jdW1lbnQiLCAic291cmNlIiwgIm9wdGlvbnMiLCAibGluZUNvdW50ZXIiLCAicHJldHR5RXJyb3JzIiwgInBhcnNlT3B0aW9ucyIsICJwYXJzZXIiLCAiUGFyc2VyIiwgImNvbXBvc2VyIiwgIkNvbXBvc2VyIiwgImRvYyIsICJfZG9jIiwgIllBTUxQYXJzZUVycm9yIiwgInByZXR0aWZ5RXJyb3IiLCAicGFyc2UiLCAic3JjIiwgInJldml2ZXIiLCAiX3Jldml2ZXIiLCAid2FybmluZyIsICJ3YXJuIiwgImltcG9ydF9zb3J0ZWRfYnRyZWUiLCAiUCIsICJMaXRlcmFscyIsICJ0b1N0cmluZyIsICJmaWVsZCIsICJzZXR0aW5nIiwgInJlY3Vyc2l2ZSIsICJ3cmFwcGVkIiwgIndyYXBWYWx1ZSIsICJyZXN1bHQiLCAiZiIsICJlIiwgInJlbmRlck1pbmltYWxEYXRlIiwgInJlbmRlck1pbmltYWxEdXJhdGlvbiIsICJ2YWwiLCAiaXNOdWxsIiwgImlzTnVtYmVyIiwgImlzU3RyaW5nIiwgImlzQm9vbGVhbiIsICJpc0R1cmF0aW9uIiwgImlzRGF0ZSIsICJpc0FycmF5IiwgImlzTGluayIsICJpc0Z1bmN0aW9uIiwgImlzT2JqZWN0IiwgIm1hcExlYXZlcyIsICJmdW5jIiwgImtleSIsICJ2YWx1ZSIsICJlcXVhbHMiLCAiZmlyc3QiLCAic2Vjb25kIiwgImNvbXBhcmUiLCAidmFsMSIsICJ2YWwyIiwgImxpbmtOb3JtYWxpemVyIiwgIl9hIiwgIl9iIiwgIndyYXAxIiwgIndyYXAyIiwgImxpbmsxIiwgImxpbmsyIiwgIm5vcm1hbGl6ZSIsICJ4IiwgInBhdGhDb21wYXJlIiwgInR5cGVDb21wYXJlIiwgImYxIiwgImYyIiwgImluZGV4IiwgImNvbXAiLCAibzEiLCAibzIiLCAiazEiLCAiazIiLCAia2V5Q29tcGFyZSIsICJ0eXBlT2YiLCAiaXNUcnV0aHkiLCAiZGVlcENvcHkiLCAidiIsICJEYXRlVGltZSIsICJEdXJhdGlvbiIsICJMaW5rIiwgIkdyb3VwaW5ncyIsICJpc0VsZW1lbnRHcm91cCIsICJlbnRyeSIsICJpc0dyb3VwaW5nIiwgImVsZW1lbnQiLCAiaXNMZWFmIiwgImNvdW50IiwgImVsZW1lbnRzIiwgInN1Ymdyb3VwIiwgInNsaWNlIiwgInN0YXJ0IiwgImVuZCIsICJzZWVuIiwgImdyb3VwIiwgImdyb3VwU2l6ZSIsICJncm91cFN0YXJ0IiwgImdyb3VwRW5kIiwgIlN1Y2Nlc3MiLCAiX1N1Y2Nlc3MiLCAidmFsdWUiLCAiZiIsICJzdWNjIiwgIl9mYWlsIiwgIl92YWx1ZSIsICJfbWVzc2FnZSIsICJGYWlsdXJlIiwgIl9GYWlsdXJlIiwgImVycm9yIiwgIl9mIiwgIl9zdWNjIiwgImZhaWwiLCAibWVzc2FnZSIsICJSZXN1bHQiLCAic3VjY2VzcyIsICJmYWlsdXJlIiwgImZsYXRNYXAyIiwgImZpcnN0IiwgInNlY29uZCIsICJtYXAyIiwgImEiLCAiYiIsICJtYXBBbGwiLCAiaW5wdXQiLCAiZnVuYyIsICJyZXN1bHQiLCAiZWxlbWVudCIsICJvdXRwdXQiLCAidHJ5aW5nIiwgImNhbGwiLCAiYXN5bmMiLCAicHJvbWlzZSIsICJGaWx0ZXJzIiwgImF0b20iLCAic2V0IiwgImNvbnN0YW50IiwgInZhbHVlIiwgIm51bGxhYmxlQXRvbSIsICJuZWdhdGVkIiwgIm5lZ2F0ZSIsICJmaWx0ZXIiLCAiZW1wdHkiLCAicmVzb2x2ZSIsICJldmVyeXRoaW5nIiwgInNldEludGVyc2VjdE5lZ2F0aW9uIiwgImludGVyc2VjdCIsICJlbGVtZW50cyIsICJsYXp5SW50ZXJzZWN0IiwgIngiLCAicHJvZHVjZSIsICJsYXp5RmFpbGFibGVJbnRlcnNlY3Rpb24iLCAiUmVzdWx0IiwgImF0b21zIiwgIm5lZ2F0aW9ucyIsICJlbGVtZW50IiwgIm1heWJlRmlsdGVyIiwgInNldEludGVyc2VjdCIsICJzZXRVbmlvbiIsICJ1bmlvbiIsICJmaWx0ZXJzIiwgImxhenlVbmlvbiIsICJsYXp5RmFpbGFibGVVbmlvbiIsICJzZXRzIiwgInNvcnRlZCIsICJhIiwgImIiLCAicmVzdWx0IiwgImxhcmdlc3QiLCAiRXhwcmVzc2lvbnMiLCAidmFyaWFibGUiLCAibmFtZSIsICJsaXRlcmFsIiwgInZhbHVlIiwgImJpbmFyeU9wIiwgImxlZnQiLCAib3AiLCAicmlnaHQiLCAiaW5kZXgiLCAib2JqIiwgImluZGV4VmFyaWFibGUiLCAicGFydHMiLCAicmVzdWx0IiwgImxhbWJkYSIsICJhcmdzIiwgImZ1bmMiLCAibGlzdCIsICJ2YWx1ZXMiLCAib2JqZWN0IiwgIm5lZ2F0ZSIsICJjaGlsZCIsICJpc0NvbXBhcmVPcCIsICJ1bmJvdW5kVmFyaWFibGVzIiwgImV4cHIiLCAiYm91bmQiLCAiTGl0ZXJhbHMiLCAiRmlsdGVycyIsICJhIiwgIm5ld0JvdW5kIiwgImFyZyIsICJ2IiwgInRvU3RyaW5nIiwgImsiLCAid3JhcHBlZCIsICJQUklNSVRJVkVTIiwgIl8iLCAic3RyIiwgInEiLCAiY2hhcnMiLCAiZXNjYXBlZCIsICJzdGFydCIsICJyZXN0IiwgIkVNT0pJX1JFR0VYIiwgImZpcnN0IiwgImxpbmtJbm5lciIsICJMaW5rIiwgInAiLCAibCIsICJfc3RyIiwgInllYXIiLCAibW9udGgiLCAiRGF0ZVRpbWUiLCAiREFURV9TSE9SVEhBTkRTIiwgImEiLCAiYiIsICJjaGFpbk9wdCIsICJ5bSIsICJkYXkiLCAieW1kIiwgImhvdXIiLCAieW1kaCIsICJtaW51dGUiLCAieW1kaG0iLCAic2Vjb25kIiwgInltZGhtcyIsICJtaWxsaXNlY29uZCIsICJkdCIsICJwbSIsICJociIsICJfYSIsICJ6b25lIiwgIl9iIiwgImQiLCAiRFVSQVRJT05fVFlQRVMiLCAiY291bnQiLCAidCIsICJ4IiwgImR1cmF0aW9ucyIsICJjIiwgIm5vcm1hbGl6ZUR1cmF0aW9uIiwgImYiLCAiX3MiLCAiZW1vamlfcmVnZXhfZGVmYXVsdCIsICJEdXJhdGlvbiIsICJFWFBSRVNTSU9OIiwgIkV4cHJlc3Npb25zIiwgImNyZWF0ZUZ1bmN0aW9uIiwgIl9mdW5jIiwgImRhdGUiLCAiZHVyIiwgIm5hbWUiLCAiX3NlcCIsICJ2YWx1ZSIsICJ2YWxzIiwgInJlcyIsICJlbnRyeSIsICJvYmoiLCAicG9zdGZpeGVzIiwgInJlc3VsdCIsICJwb3N0IiwgImZpZWxkIiwgImlkZW50IiwgIl9pZ25vcmUiLCAiZXhwciIsICJfMiIsICJfMyIsICJfNCIsICJfMSIsICJleHBycyIsICJjcmVhdGVCaW5hcnlQYXJzZXIiLCAiUVVFUlkiLCAiaWQiLCAiZnVuYyIsICJwYXRoIiwgImNoaWxkcmVuIiwgInBhcmVudHMiLCAibGluayIsICJzb3VyY2UiLCAibGVmdCIsICJfb3AiLCAicmlnaHQiLCAiY3JlYXRlQmluYXJ5UGFyc2VyIiwgImNoaWxkIiwgInNlcCIsICJjb21iaW5lIiwgImZpcnN0IiwgInJlc3QiLCAibm9kZSIsICJpbmRleCIsICJjcmVhdGVGdW5jdGlvbiIsICJmdW5jIiwgImFyZ3MiLCAicmVhbEZ1bmMiLCAiZiIsICJhIiwgImNoYWluT3B0IiwgImJhc2UiLCAiZnVuY3MiLCAiX3N1Y2Nlc3MiLCAiX2ZhaWx1cmUiLCAiaW5wdXQiLCAicmVzdWx0IiwgIm5leHQiLCAiUCIsICJtYXBPYmplY3RWYWx1ZXMiLCAib2JqZWN0IiwgImZ1bmMiLCAicmVzdWx0IiwgImtleSIsICJ2YWx1ZSIsICJKc29uQ29udmVyc2lvbiIsICJpbnB1dCIsICJqc29uIiwgImxpdGVyYWwiLCAid3JhcHBlZCIsICJMaXRlcmFscyIsICJtYXBPYmplY3RWYWx1ZXMiLCAidmFsdWUiLCAibm9ybWFsaXplciIsICJ2IiwgInR5cGUiLCAiRGF0ZVRpbWUiLCAiRHVyYXRpb24iLCAiTGluayIsICJqc29uSW5saW5lRmllbGQiLCAiZmllbGQiLCAiSnNvbkNvbnZlcnNpb24iLCAiYXNJbmxpbmVGaWVsZCIsICJsb2NhbCIsICJsaW5lbm8iLCAiZiIsICJwYXJzZUlubGluZVZhbHVlIiwgIklOTElORV9GSUVMRF9XUkFQUEVSUyIsICJmaW5kQ2xvc2luZyIsICJsaW5lIiwgInN0YXJ0IiwgIm9wZW4iLCAiY2xvc2UiLCAibmVzdGluZyIsICJlc2NhcGVkIiwgImluZGV4IiwgImNoYXIiLCAiZmluZFNlcGFyYXRvciIsICJzZXAiLCAiZmluZFNwZWNpZmljSW5saW5lRmllbGQiLCAia2V5IiwgInZhbHVlIiwgImlubGluZSIsICJQUklNSVRJVkVTIiwgImV4dHJhY3RJbmxpbmVGaWVsZHMiLCAiaW5jbHVkZVRhc2tGaWVsZHMiLCAiZmllbGRzIiwgIndyYXBwZXIiLCAiZm91bmRJbmRleCIsICJwYXJzZWRGaWVsZCIsICJleHRyYWN0U3BlY2lhbFRhc2tGaWVsZHMiLCAiYSIsICJiIiwgImZpbHRlcmVkRmllbGRzIiwgImkiLCAiRlVMTF9MSU5FX0tFWV9QQVJUIiwgImVtb2ppX3JlZ2V4X2RlZmF1bHQiLCAicGFydHMiLCAiRlVMTF9MSU5FX0tFWV9QQVJTRVIiLCAiZXh0cmFjdEZ1bGxMaW5lRmllbGQiLCAidGV4dCIsICJyZWFsS2V5IiwgIkNSRUFURURfREFURV9SRUdFWCIsICJEVUVfREFURV9SRUdFWCIsICJET05FX0RBVEVfUkVHRVgiLCAiU0NIRURVTEVEX0RBVEVfUkVHRVgiLCAiU1RBUlRfREFURV9SRUdFWCIsICJFTU9KSV9SRUdFWEVTIiwgInJlc3VsdHMiLCAicmVnZXgiLCAibWF0Y2giLCAiWWFtbENvbnZlcnNpb24iLCAieWFtbCIsICJ2YWx1ZSIsICJ3cmFwcGVkIiwgIkxpdGVyYWxzIiwgImxpdGVyYWwiLCAibWFwT2JqZWN0VmFsdWVzIiwgInJlc3VsdCIsICJjaGlsZCIsICJEYXRlVGltZSIsICJvYmplY3QiLCAia2V5IiwgImRhdGVQYXJzZSIsICJQUklNSVRJVkVTIiwgImR1cmF0aW9uUGFyc2UiLCAibGlua1BhcnNlIiwgIllBTUxfREFUQV9SRUdFWCIsICJDT0RFQkxPQ0tfRkVOQ0VfUkVHRVgiLCAiTElTVF9JVEVNX1JFR0VYIiwgIm1hcmtkb3duSW1wb3J0IiwgInBhdGgiLCAibWFya2Rvd24iLCAibWV0YWRhdGEiLCAic3RhdHMiLCAibGluZXMiLCAicGFnZU1ldGFkYXRhIiwgImZyb250bWF0dGVyIiwgInNlY3Rpb25zIiwgIm1hcmtkb3duU291cmNlSW1wb3J0IiwgIlBhZ2VEYXRhIiwgIl9hIiwgIl9iIiwgIl9jIiwgIl9kIiwgIl9lIiwgIl9mIiwgIl9nIiwgIl9oIiwgIl9pIiwgIl9qIiwgIl9rIiwgIl9sIiwgIl9tIiwgIl9uIiwgIl9vIiwgIl9wIiwgInBhcnNlRnJvbnRtYXR0ZXJCbG9jayIsICJtYXJrZG93bk1ldGFkYXRhIiwgIk1ldGFkYXRhIiwgInNlY3Rpb25BcnJheSIsICJtZXRhaGVhZGluZ3MiLCAiYSIsICJiIiwgIkJUcmVlIiwgImluZGV4IiwgImVudHJ5IiwgInN0YXJ0IiwgImVuZCIsICJzZWN0aW9uIiwgIlNlY3Rpb25EYXRhIiwgImVtcHR5bGluZXMiLCAiZ2V0RmlsZVRpdGxlIiwgImZpcnN0IiwgImJsb2NrcyIsICJibG9ja09yZGluYWwiLCAiYmxvY2siLCAic3RhcnRMaW5lIiwgIkxpc3RCbG9ja0RhdGEiLCAieWFtbCIsICJzcGxpdCIsICJwYXJzZSIsICJEYXRhYmxvY2tEYXRhIiwgIm1hdGNoIiwgIkNvZGVibG9ja0RhdGEiLCAibGFuZ3VhZ2VzIiwgIkJhc2VCbG9ja0RhdGEiLCAibG9va3VwIiwgImNvbnRlbnRSZWdleCIsICJtYXJrZXJSZWdleCIsICJsaXN0SXRlbXMiLCAibGlzdCIsICJzeW1ib2wiLCAidGV4dCIsICJpdGVtIiwgIkxpc3RJdGVtRGF0YSIsICJsaXN0QmxvY2siLCAidGFnZGVmIiwgInRhZyIsICJsaW5lIiwgInJhd3RhZyIsICJleHRyYWN0VGFncyIsICJsaW5rZGVmIiwgImxpbmsiLCAiTGluayIsICJmaWVsZCIsICJpdGVyYXRlSW5saW5lRmllbGRzIiwgImNvbnRlbnQiLCAibGluZW5vIiwgImlubGluZUZpZWxkcyIsICJleHRyYWN0SW5saW5lRmllbGRzIiwgImlmaWVsZCIsICJhc0lubGluZUZpZWxkIiwgImZ1bGxMaW5lIiwgImV4dHJhY3RGdWxsTGluZUZpZWxkIiwgInJlc3VsdCIsICJrZXkiLCAidmFsdWUiLCAiSnNvbkNvbnZlcnNpb24iLCAiWWFtbENvbnZlcnNpb24iLCAidHJlZSIsICJ0YXJnZXQiLCAiayIsICJzcGxpdEZyb250bWF0dGVyVGFnT3JBbGlhcyIsICJwIiwgImMiLCAic3RyIiwgImRhdGEiLCAib24iLCAicyIsICJ2IiwgImxvd2VyIiwgIm1hcE9iamVjdFZhbHVlcyIsICJqc29uSW5saW5lRmllbGQiLCAibGVuZ3RoIiwgImdldEV4dGVuc2lvbiIsICJ4IiwgInRpdGxlIiwgImxldmVsIiwgIm9yZGluYWwiLCAiYmxvY2tJZCIsICJzdHlsZSIsICJjb250ZW50U3RhcnQiLCAiY29udGVudEVuZCIsICJ0eXBlIiwgInBhcmVudExpbmUiLCAic3RhdHVzIiwgImVsZW1lbnQiLCAiY2FudmFzSW1wb3J0IiwgInBhdGgiLCAic291cmNlIiwgImluZGV4IiwgInN0YXRzIiwgIl9hIiwgImNhbnZhcyIsICJDYW52YXNEYXRhIiwgInBhcnNlZCIsICJjIiwgImZyb250bWF0dGVyIiwgIm1ldGFkYXRhIiwgImxpbmVzIiwgInNlY3Rpb25zIiwgIm1hcmtkb3duU291cmNlSW1wb3J0IiwgImNhcmQiLCAiQ2FudmFzQ2FyZERhdGEiLCAiaSIsICJ0YWciLCAibGluayIsICJmaWVsZCIsICJpdGVyYXRlSW5saW5lRmllbGRzIiwgIkFic3RyYWN0Q2FudmFzQ2FyZERhdGEiLCAiaWQiLCAibm9kZUpzb24iLCAiTWV0YWRhdGEiLCAiTGluayIsICJzZWN0aW9uIiwgIl9fc3ByZWFkUHJvcHMiLCAiX19zcHJlYWRWYWx1ZXMiLCAieCIsICJkIiwgImV2ZW50IiwgIm1lc3NhZ2UiLCAibWFya2Rvd24iLCAibWFya2Rvd25JbXBvcnQiLCAiY2FudmFzIiwgImNhbnZhc0ltcG9ydCIsICJlcnJvciJdCn0K\n');
}
// src/index/web-worker/importer.ts
@@ -53495,12 +50278,12 @@ var _DatacoreInitializer = class _DatacoreInitializer extends import_obsidian8.C
if (!this.active || this.current.length >= _DatacoreInitializer.BATCH_SIZE) {
return;
}
- const next2 = this.queue.pop();
- if (next2) {
- this.current.push(next2);
- this.init(next2).then((result) => this.handleResult(next2, result)).catch((result) => this.handleResult(next2, result));
+ const next3 = this.queue.pop();
+ if (next3) {
+ this.current.push(next3);
+ this.init(next3).then((result) => this.handleResult(next3, result)).catch((result) => this.handleResult(next3, result));
this.runNext();
- } else if (!next2 && this.current.length == 0) {
+ } else if (!next3 && this.current.length == 0) {
this.active = false;
this.done.resolve({
durationMs: Date.now() - this.start,
@@ -53572,13 +50355,13 @@ var CUSTOM_VIEW_CONTEXT = G(void 0);
function DatacoreViewSettings() {
const view = x2(CUSTOM_VIEW_CONTEXT);
const setViewState = T2(
- () => (0, import_obsidian9.debounce)((state) => view.setState(state, { history: false }), 500),
+ () => (0, import_obsidian9.debounce)((state2) => view.setState(state2, { history: false }), 500),
[view]
);
const [localState, setLocalState] = h2(view.getState());
const setState = q2(
- (state) => {
- const finalState = { ...localState, ...state };
+ (state2) => {
+ const finalState = { ...localState, ...state2 };
setLocalState(finalState);
setViewState(finalState);
},
@@ -53749,8 +50532,8 @@ var DatacoreQueryView = class extends import_obsidian9.ItemView {
return this.internalState;
}
/** Update the state of this view with new metadata. Generally controlled by the settings pane. */
- async setState(state, _result) {
- this.internalState = state;
+ async setState(state2, _result) {
+ this.internalState = state2;
this.rerender();
}
/** Swap the active view. */
@@ -54002,16 +50785,6 @@ var GeneralSettingsTab = class extends import_obsidian10.PluginSettingTab {
//! Provides utilities for executing queries against the storage layer.
/*! Bundled license information:
-react-is/cjs/react-is.production.min.js:
- (** @license React v16.13.1
- * react-is.production.min.js
- *
- * Copyright (c) Facebook, Inc. and its affiliates.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- *)
-
react-is/cjs/react-is.development.js:
(** @license React v16.13.1
* react-is.development.js
@@ -54045,6 +50818,6 @@ localforage/dist/localforage.js:
* @class
*)
*/
-//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vbm9kZV9tb2R1bGVzL3BhcnNpbW1vbi9zcmMvcGFyc2ltbW9uLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9lbW9qaS1yZWdleC9pbmRleC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvc3VjcmFzZS9kaXN0L3BhcnNlci90b2tlbml6ZXIva2V5d29yZHMuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL3N1Y3Jhc2UvZGlzdC9wYXJzZXIvdG9rZW5pemVyL3R5cGVzLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9zdWNyYXNlL2Rpc3QvcGFyc2VyL3Rva2VuaXplci9zdGF0ZS5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvc3VjcmFzZS9kaXN0L3BhcnNlci91dGlsL2NoYXJjb2Rlcy5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvc3VjcmFzZS9kaXN0L3BhcnNlci90cmF2ZXJzZXIvYmFzZS5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvc3VjcmFzZS9kaXN0L3BhcnNlci90cmF2ZXJzZXIvdXRpbC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvc3VjcmFzZS9kaXN0L3BhcnNlci91dGlsL3doaXRlc3BhY2UuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL3N1Y3Jhc2UvZGlzdC9wYXJzZXIvdXRpbC9pZGVudGlmaWVyLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9zdWNyYXNlL2Rpc3QvcGFyc2VyL3Rva2VuaXplci9yZWFkV29yZFRyZWUuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL3N1Y3Jhc2UvZGlzdC9wYXJzZXIvdG9rZW5pemVyL3JlYWRXb3JkLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9zdWNyYXNlL2Rpc3QvcGFyc2VyL3Rva2VuaXplci9pbmRleC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvc3VjcmFzZS9kaXN0L3V0aWwvZ2V0SW1wb3J0RXhwb3J0U3BlY2lmaWVySW5mby5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvc3VjcmFzZS9kaXN0L3BhcnNlci9wbHVnaW5zL2pzeC94aHRtbC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvc3VjcmFzZS9kaXN0L3V0aWwvZ2V0SlNYUHJhZ21hSW5mby5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvc3VjcmFzZS9kaXN0L3RyYW5zZm9ybWVycy9UcmFuc2Zvcm1lci5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvc3VjcmFzZS9kaXN0L3RyYW5zZm9ybWVycy9KU1hUcmFuc2Zvcm1lci5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvc3VjcmFzZS9kaXN0L3V0aWwvZ2V0Tm9uVHlwZUlkZW50aWZpZXJzLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9zdWNyYXNlL2Rpc3QvQ0pTSW1wb3J0UHJvY2Vzc29yLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9AanJpZGdld2VsbC9zZXQtYXJyYXkvc3JjL3NldC1hcnJheS50cyIsICIuLi8uLi9ub2RlX21vZHVsZXMvQGpyaWRnZXdlbGwvc291cmNlbWFwLWNvZGVjL3NyYy92bHEudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL0BqcmlkZ2V3ZWxsL3NvdXJjZW1hcC1jb2RlYy9zcmMvc3RyaW5ncy50cyIsICIuLi8uLi9ub2RlX21vZHVsZXMvQGpyaWRnZXdlbGwvc291cmNlbWFwLWNvZGVjL3NyYy9zY29wZXMudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL0BqcmlkZ2V3ZWxsL3NvdXJjZW1hcC1jb2RlYy9zcmMvc291cmNlbWFwLWNvZGVjLnRzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9AanJpZGdld2VsbC9yZXNvbHZlLXVyaS9zcmMvcmVzb2x2ZS11cmkudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL0BqcmlkZ2V3ZWxsL3RyYWNlLW1hcHBpbmcvc3JjL3Jlc29sdmUudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL0BqcmlkZ2V3ZWxsL3RyYWNlLW1hcHBpbmcvc3JjL3N0cmlwLWZpbGVuYW1lLnRzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9AanJpZGdld2VsbC90cmFjZS1tYXBwaW5nL3NyYy9zb3VyY2VtYXAtc2VnbWVudC50cyIsICIuLi8uLi9ub2RlX21vZHVsZXMvQGpyaWRnZXdlbGwvdHJhY2UtbWFwcGluZy9zcmMvc29ydC50cyIsICIuLi8uLi9ub2RlX21vZHVsZXMvQGpyaWRnZXdlbGwvdHJhY2UtbWFwcGluZy9zcmMvYmluYXJ5LXNlYXJjaC50cyIsICIuLi8uLi9ub2RlX21vZHVsZXMvQGpyaWRnZXdlbGwvdHJhY2UtbWFwcGluZy9zcmMvYnktc291cmNlLnRzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9AanJpZGdld2VsbC90cmFjZS1tYXBwaW5nL3NyYy9hbnktbWFwLnRzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9AanJpZGdld2VsbC90cmFjZS1tYXBwaW5nL3NyYy90cmFjZS1tYXBwaW5nLnRzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9AanJpZGdld2VsbC9nZW4tbWFwcGluZy9zcmMvc291cmNlbWFwLXNlZ21lbnQudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL0BqcmlkZ2V3ZWxsL2dlbi1tYXBwaW5nL3NyYy9nZW4tbWFwcGluZy50cyIsICIuLi8uLi9ub2RlX21vZHVsZXMvc3VjcmFzZS9kaXN0L2NvbXB1dGVTb3VyY2VNYXAuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL3N1Y3Jhc2UvZGlzdC9IZWxwZXJNYW5hZ2VyLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9zdWNyYXNlL2Rpc3QvaWRlbnRpZnlTaGFkb3dlZEdsb2JhbHMuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL3N1Y3Jhc2UvZGlzdC91dGlsL2dldElkZW50aWZpZXJOYW1lcy5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvc3VjcmFzZS9kaXN0L05hbWVNYW5hZ2VyLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy90cy1pbnRlcmZhY2UtY2hlY2tlci9kaXN0L3V0aWwuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWludGVyZmFjZS1jaGVja2VyL2Rpc3QvdHlwZXMuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWludGVyZmFjZS1jaGVja2VyL2Rpc3QvaW5kZXguanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL3N1Y3Jhc2UvZGlzdC9PcHRpb25zLWdlbi10eXBlcy5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvc3VjcmFzZS9kaXN0L09wdGlvbnMuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL3N1Y3Jhc2UvZGlzdC9wYXJzZXIvdHJhdmVyc2VyL2x2YWwuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL3N1Y3Jhc2UvZGlzdC9wYXJzZXIvcGx1Z2lucy90eXBlc2NyaXB0LmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9zdWNyYXNlL2Rpc3QvcGFyc2VyL3BsdWdpbnMvanN4L2luZGV4LmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9zdWNyYXNlL2Rpc3QvcGFyc2VyL3BsdWdpbnMvdHlwZXMuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL3N1Y3Jhc2UvZGlzdC9wYXJzZXIvdHJhdmVyc2VyL2V4cHJlc3Npb24uanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL3N1Y3Jhc2UvZGlzdC9wYXJzZXIvcGx1Z2lucy9mbG93LmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9zdWNyYXNlL2Rpc3QvcGFyc2VyL3RyYXZlcnNlci9zdGF0ZW1lbnQuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL3N1Y3Jhc2UvZGlzdC9wYXJzZXIvdHJhdmVyc2VyL2luZGV4LmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9zdWNyYXNlL2Rpc3QvcGFyc2VyL2luZGV4LmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9zdWNyYXNlL2Rpc3QvdXRpbC9pc0FzeW5jT3BlcmF0aW9uLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9zdWNyYXNlL2Rpc3QvVG9rZW5Qcm9jZXNzb3IuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL3N1Y3Jhc2UvZGlzdC91dGlsL2dldENsYXNzSW5mby5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvc3VjcmFzZS9kaXN0L3V0aWwvZWxpZGVJbXBvcnRFcXVhbHMuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL3N1Y3Jhc2UvZGlzdC91dGlsL2dldERlY2xhcmF0aW9uSW5mby5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvc3VjcmFzZS9kaXN0L3V0aWwvaXNFeHBvcnRGcm9tLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9zdWNyYXNlL2Rpc3QvdXRpbC9yZW1vdmVNYXliZUltcG9ydEF0dHJpYnV0ZXMuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL3N1Y3Jhc2UvZGlzdC91dGlsL3Nob3VsZEVsaWRlRGVmYXVsdEV4cG9ydC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvc3VjcmFzZS9kaXN0L3RyYW5zZm9ybWVycy9DSlNJbXBvcnRUcmFuc2Zvcm1lci5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvc3VjcmFzZS9kaXN0L3RyYW5zZm9ybWVycy9FU01JbXBvcnRUcmFuc2Zvcm1lci5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvc3VjcmFzZS9kaXN0L3RyYW5zZm9ybWVycy9GbG93VHJhbnNmb3JtZXIuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL3N1Y3Jhc2UvZGlzdC90cmFuc2Zvcm1lcnMvSmVzdEhvaXN0VHJhbnNmb3JtZXIuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL3N1Y3Jhc2UvZGlzdC90cmFuc2Zvcm1lcnMvTnVtZXJpY1NlcGFyYXRvclRyYW5zZm9ybWVyLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9zdWNyYXNlL2Rpc3QvdHJhbnNmb3JtZXJzL09wdGlvbmFsQ2F0Y2hCaW5kaW5nVHJhbnNmb3JtZXIuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL3N1Y3Jhc2UvZGlzdC90cmFuc2Zvcm1lcnMvT3B0aW9uYWxDaGFpbmluZ051bGxpc2hUcmFuc2Zvcm1lci5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvc3VjcmFzZS9kaXN0L3RyYW5zZm9ybWVycy9SZWFjdERpc3BsYXlOYW1lVHJhbnNmb3JtZXIuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL3N1Y3Jhc2UvZGlzdC90cmFuc2Zvcm1lcnMvUmVhY3RIb3RMb2FkZXJUcmFuc2Zvcm1lci5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvc3VjcmFzZS9kaXN0L3V0aWwvaXNJZGVudGlmaWVyLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9zdWNyYXNlL2Rpc3QvdHJhbnNmb3JtZXJzL1R5cGVTY3JpcHRUcmFuc2Zvcm1lci5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvc3VjcmFzZS9kaXN0L3RyYW5zZm9ybWVycy9Sb290VHJhbnNmb3JtZXIuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL2xpbmVzLWFuZC1jb2x1bW5zL2J1aWxkL2luZGV4LmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9zdWNyYXNlL2Rpc3QvdXRpbC9mb3JtYXRUb2tlbnMuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL3N1Y3Jhc2UvZGlzdC91dGlsL2dldFRTSW1wb3J0ZWROYW1lcy5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvc3VjcmFzZS9kaXN0L2luZGV4LmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1pcy9janMvcmVhY3QtaXMucHJvZHVjdGlvbi5taW4uanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LWlzL2Nqcy9yZWFjdC1pcy5kZXZlbG9wbWVudC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QtaXMvaW5kZXguanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL2hvaXN0LW5vbi1yZWFjdC1zdGF0aWNzL2Rpc3QvaG9pc3Qtbm9uLXJlYWN0LXN0YXRpY3MuY2pzLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2V4dGVuZHMuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL3ByZWFjdC9zcmMvY29uc3RhbnRzLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9wcmVhY3Qvc3JjL3V0aWwuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL3ByZWFjdC9zcmMvb3B0aW9ucy5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvcHJlYWN0L3NyYy9jcmVhdGUtZWxlbWVudC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvcHJlYWN0L3NyYy9jb21wb25lbnQuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL3ByZWFjdC9zcmMvZGlmZi9wcm9wcy5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvcHJlYWN0L3NyYy9jcmVhdGUtY29udGV4dC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvcHJlYWN0L3NyYy9kaWZmL2NoaWxkcmVuLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9wcmVhY3Qvc3JjL2RpZmYvaW5kZXguanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL3ByZWFjdC9zcmMvcmVuZGVyLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9wcmVhY3Qvc3JjL2RpZmYvY2F0Y2gtZXJyb3IuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL3ByZWFjdC9zcmMvY2xvbmUtZWxlbWVudC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvcHJlYWN0L2hvb2tzL3NyYy9pbmRleC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvcHJlYWN0L2NvbXBhdC9zcmMvdXRpbC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvcHJlYWN0L2NvbXBhdC9zcmMvUHVyZUNvbXBvbmVudC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvcHJlYWN0L2NvbXBhdC9zcmMvbWVtby5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvcHJlYWN0L2NvbXBhdC9zcmMvZm9yd2FyZFJlZi5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvcHJlYWN0L2NvbXBhdC9zcmMvQ2hpbGRyZW4uanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL3ByZWFjdC9jb21wYXQvc3JjL3N1c3BlbnNlLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9wcmVhY3QvY29tcGF0L3NyYy9zdXNwZW5zZS1saXN0LmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9wcmVhY3Qvc3JjL2NvbnN0YW50cy5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvcHJlYWN0L2NvbXBhdC9zcmMvcG9ydGFscy5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvcHJlYWN0L2NvbXBhdC9zcmMvcmVuZGVyLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9wcmVhY3QvY29tcGF0L3NyYy9pbmRleC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvdXNlLWlzb21vcnBoaWMtbGF5b3V0LWVmZmVjdC9kaXN0L3VzZS1pc29tb3JwaGljLWxheW91dC1lZmZlY3QuY2pzLnByb2QuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL3VzZS1pc29tb3JwaGljLWxheW91dC1lZmZlY3QvZGlzdC91c2UtaXNvbW9ycGhpYy1sYXlvdXQtZWZmZWN0LmNqcy5kZXYuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL3VzZS1pc29tb3JwaGljLWxheW91dC1lZmZlY3QvZGlzdC91c2UtaXNvbW9ycGhpYy1sYXlvdXQtZWZmZWN0LmNqcy5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvbWVtb2l6ZS1vbmUvZGlzdC9tZW1vaXplLW9uZS5janMuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdHlwZW9mLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvUHJpbWl0aXZlLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvUHJvcGVydHlLZXkuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHkuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0U3ByZWFkMi5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcnJheVdpdGhIb2xlcy5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pdGVyYWJsZVRvQXJyYXlMaW1pdC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcnJheUxpa2VUb0FycmF5LmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5LmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL25vbkl0ZXJhYmxlUmVzdC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9zbGljZWRUb0FycmF5LmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0V2l0aG91dFByb3BlcnRpZXMuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2suanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3MuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvc2V0UHJvdG90eXBlT2YuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5oZXJpdHMuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZ2V0UHJvdG90eXBlT2YuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0LmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2Fzc2VydFRoaXNJbml0aWFsaXplZC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZVN1cGVyLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2FycmF5V2l0aG91dEhvbGVzLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2l0ZXJhYmxlVG9BcnJheS5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9ub25JdGVyYWJsZVNwcmVhZC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy90b0NvbnN1bWFibGVBcnJheS5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy90YWdnZWRUZW1wbGF0ZUxpdGVyYWwuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL0Bmb3J0YXdlc29tZS9mb250YXdlc29tZS1zdmctY29yZS9pbmRleC5tanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL29iamVjdC1hc3NpZ24vaW5kZXguanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0LmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2xpYi9oYXMuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvY2hlY2tQcm9wVHlwZXMuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvZmFjdG9yeVdpdGhUeXBlQ2hlY2tlcnMuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvZmFjdG9yeVdpdGhUaHJvd2luZ1NoaW1zLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2luZGV4LmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9AZm9ydGF3ZXNvbWUvcmVhY3QtZm9udGF3ZXNvbWUvaW5kZXguanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL3NvcnRlZC1idHJlZS9iK3RyZWUuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL2xvY2FsZm9yYWdlL2Rpc3QvbG9jYWxmb3JhZ2UuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL0BkYXRhc3RydWN0dXJlcy1qcy9xdWV1ZS9zcmMvcXVldWUuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL0BkYXRhc3RydWN0dXJlcy1qcy9xdWV1ZS9pbmRleC5qcyIsICIuLi8uLi9zcmMvbWFpbi50cyIsICIuLi8uLi9ub2RlX21vZHVsZXMvbHV4b24vc3JjL2x1eG9uLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvZXJyb3JzLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvaW1wbC9mb3JtYXRzLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvaW1wbC91dGlsLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvaW1wbC9lbmdsaXNoLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvaW1wbC9mb3JtYXR0ZXIuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9pbXBsL2ludmFsaWQuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy96b25lLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvem9uZXMvc3lzdGVtWm9uZS5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvbHV4b24vc3JjL3pvbmVzL0lBTkFab25lLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvem9uZXMvZml4ZWRPZmZzZXRab25lLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvem9uZXMvaW52YWxpZFpvbmUuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9pbXBsL3pvbmVVdGlsLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvc2V0dGluZ3MuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9pbXBsL2xvY2FsZS5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvbHV4b24vc3JjL2ltcGwvcmVnZXhQYXJzZXIuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9kdXJhdGlvbi5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvbHV4b24vc3JjL2ludGVydmFsLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvaW5mby5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvbHV4b24vc3JjL2ltcGwvZGlmZi5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvbHV4b24vc3JjL2ltcGwvZGlnaXRzLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvaW1wbC90b2tlblBhcnNlci5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvbHV4b24vc3JjL2ltcGwvY29udmVyc2lvbnMuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9kYXRldGltZS5qcyIsICIuLi8uLi9zcmMvdXRpbHMvbm9ybWFsaXplcnMudHMiLCAiLi4vLi4vc3JjL2V4cHJlc3Npb24vbGluay50cyIsICIuLi8uLi9zcmMvZXhwcmVzc2lvbi9wYXJzZXIudHMiLCAiLi4vLi4vc3JjL2V4cHJlc3Npb24vbGl0ZXJhbC50cyIsICIuLi8uLi9zcmMvYXBpL3Jlc3VsdC50cyIsICIuLi8uLi9zcmMvZXhwcmVzc2lvbi9maWx0ZXJzLnRzIiwgIi4uLy4uL3NyYy9leHByZXNzaW9uL2V4cHJlc3Npb24udHMiLCAiLi4vLi4vc3JjL3VpL21hcmtkb3duLnRzeCIsICIuLi8uLi9zcmMvdXRpbHMvbWVkaWEudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL3ByZWFjdC9zcmMvY29uc3RhbnRzLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9wcmVhY3Qvc3JjL3V0aWwuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL3ByZWFjdC9zcmMvb3B0aW9ucy5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvcHJlYWN0L3NyYy9jcmVhdGUtZWxlbWVudC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvcHJlYWN0L3NyYy9jb21wb25lbnQuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL3ByZWFjdC9zcmMvZGlmZi9wcm9wcy5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvcHJlYWN0L3NyYy9jcmVhdGUtY29udGV4dC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvcHJlYWN0L3NyYy9kaWZmL2NoaWxkcmVuLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9wcmVhY3Qvc3JjL2RpZmYvaW5kZXguanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL3ByZWFjdC9zcmMvcmVuZGVyLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9wcmVhY3Qvc3JjL2Nsb25lLWVsZW1lbnQuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL3ByZWFjdC9zcmMvZGlmZi9jYXRjaC1lcnJvci5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvcHJlYWN0L2hvb2tzL3NyYy9pbmRleC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvcHJlYWN0L2NvbXBhdC9zcmMvdXRpbC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvcHJlYWN0L2NvbXBhdC9zcmMvUHVyZUNvbXBvbmVudC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvcHJlYWN0L2NvbXBhdC9zcmMvbWVtby5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvcHJlYWN0L2NvbXBhdC9zcmMvZm9yd2FyZFJlZi5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvcHJlYWN0L2NvbXBhdC9zcmMvQ2hpbGRyZW4uanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL3ByZWFjdC9jb21wYXQvc3JjL3N1c3BlbnNlLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9wcmVhY3QvY29tcGF0L3NyYy9zdXNwZW5zZS1saXN0LmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9wcmVhY3Qvc3JjL2NvbnN0YW50cy5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvcHJlYWN0L2NvbXBhdC9zcmMvcG9ydGFscy5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvcHJlYWN0L2NvbXBhdC9zcmMvcmVuZGVyLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9wcmVhY3QvY29tcGF0L3NyYy9pbmRleC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvcHJlYWN0L2pzeC1ydW50aW1lL3NyYy91dGlscy5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvcHJlYWN0L3NyYy9jb25zdGFudHMuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL3ByZWFjdC9qc3gtcnVudGltZS9zcmMvaW5kZXguanMiLCAiLi4vLi4vc3JjL2FwaS91aS9lbWJlZC50c3giLCAiLi4vLi4vc3JjL3VpL2phdmFzY3JpcHQudHN4IiwgIi4uLy4uL3NyYy91dGlscy9qYXZhc2NyaXB0LnRzIiwgIi4uLy4uL3NyYy91aS9ob29rcy50cyIsICIuLi8uLi9zcmMvdWkvbG9hZGluZy1ib3VuZGFyeS50c3giLCAiLi4vLi4vc3JjL2FwaS91aS9sYXlvdXQudHN4IiwgIi4uLy4uL3NyYy9hcGkvdWkvYmFzaWNzLnRzeCIsICIuLi8uLi9zcmMvaW5kZXgvdHlwZXMvaW5kZXhhYmxlLnRzIiwgIi4uLy4uL3NyYy9leHByZXNzaW9uL2ZpZWxkLnRzIiwgIi4uLy4uL3NyYy9pbmRleC9pbXBvcnQvaW5saW5lLWZpZWxkLnRzIiwgIi4uLy4uL3NyYy91dGlscy9kYXRhLnRzIiwgIi4uLy4uL3NyYy9pbmRleC90eXBlcy9qc29uL2NvbW1vbi50cyIsICIuLi8uLi9zcmMvaW5kZXgvdHlwZXMvbWFya2Rvd24udHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3R5cGVvZi5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdG9QcmltaXRpdmUuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3RvUHJvcGVydHlLZXkuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5LmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RTcHJlYWQyLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hcnJheVdpdGhIb2xlcy5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaXRlcmFibGVUb0FycmF5TGltaXQuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2FycmF5TGlrZVRvQXJyYXkuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5LmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9ub25JdGVyYWJsZVJlc3QuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3NsaWNlZFRvQXJyYXkuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1zZWxlY3QvZGlzdC91c2VTdGF0ZU1hbmFnZXItN2UxZTg0ODkuZXNtLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVjay5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlQ2xhc3MuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3NldFByb3RvdHlwZU9mLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0cy5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZ2V0UHJvdG90eXBlT2YuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdC5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXNzZXJ0VGhpc0luaXRpYWxpemVkLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVTdXBlci5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXJyYXlXaXRob3V0SG9sZXMuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2l0ZXJhYmxlVG9BcnJheS5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vbm9uSXRlcmFibGVTcHJlYWQuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3RvQ29uc3VtYWJsZUFycmF5LmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9AZW1vdGlvbi9zaGVldC9kaXN0L2Vtb3Rpb24tc2hlZXQuZXNtLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9zdHlsaXMvc3JjL0VudW0uanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxpcy9zcmMvVXRpbGl0eS5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGlzL3NyYy9Ub2tlbml6ZXIuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxpcy9zcmMvUGFyc2VyLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9zdHlsaXMvc3JjL1NlcmlhbGl6ZXIuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxpcy9zcmMvTWlkZGxld2FyZS5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvQGVtb3Rpb24vd2Vhay1tZW1vaXplL2Rpc3QvZW1vdGlvbi13ZWFrLW1lbW9pemUuZXNtLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9AZW1vdGlvbi9tZW1vaXplL2Rpc3QvZW1vdGlvbi1tZW1vaXplLmVzbS5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvQGVtb3Rpb24vY2FjaGUvZGlzdC9lbW90aW9uLWNhY2hlLmVzbS5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvQGVtb3Rpb24vdXRpbHMvZGlzdC9lbW90aW9uLXV0aWxzLmVzbS5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvQGVtb3Rpb24vaGFzaC9kaXN0L2Vtb3Rpb24taGFzaC5lc20uanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL0BlbW90aW9uL3VuaXRsZXNzL2Rpc3QvZW1vdGlvbi11bml0bGVzcy5lc20uanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL0BlbW90aW9uL3NlcmlhbGl6ZS9kaXN0L2Vtb3Rpb24tc2VyaWFsaXplLmVzbS5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvQGVtb3Rpb24vdXNlLWluc2VydGlvbi1lZmZlY3Qtd2l0aC1mYWxsYmFja3MvZGlzdC9lbW90aW9uLXVzZS1pbnNlcnRpb24tZWZmZWN0LXdpdGgtZmFsbGJhY2tzLmVzbS5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvQGVtb3Rpb24vcmVhY3QvZGlzdC9lbW90aW9uLWVsZW1lbnQtYjRjOGIyNjUuZXNtLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9AZW1vdGlvbi9yZWFjdC9kaXN0L2Vtb3Rpb24tcmVhY3QuZXNtLmpzIiwgIi4uLy4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90YWdnZWRUZW1wbGF0ZUxpdGVyYWwuanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL0BmbG9hdGluZy11aS91dGlscy9kaXN0L2Zsb2F0aW5nLXVpLnV0aWxzLm1qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvQGZsb2F0aW5nLXVpL3V0aWxzL2Rpc3QvZmxvYXRpbmctdWkudXRpbHMuZG9tLm1qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvQGZsb2F0aW5nLXVpL2RvbS9kaXN0L2Zsb2F0aW5nLXVpLmRvbS5tanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LXNlbGVjdC9kaXN0L2luZGV4LWEzMDFmNTI2LmVzbS5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvcmVhY3Qtc2VsZWN0L2Rpc3QvU2VsZWN0LTFmZDU4OGM5LmVzbS5qcyIsICIuLi8uLi9ub2RlX21vZHVsZXMvcmVhY3Qtc2VsZWN0L2Rpc3QvcmVhY3Qtc2VsZWN0LmVzbS5qcyIsICIuLi8uLi9zcmMvdWkvZmllbGRzL2Jvb2xlYW4tZmllbGQudHN4IiwgIi4uLy4uL3NyYy91aS9maWVsZHMvcHJvZ3Jlc3MtZmllbGQudHN4IiwgIi4uLy4uL3NyYy91aS9maWVsZHMvcmF0aW5nLnRzeCIsICIuLi8uLi9zcmMvdXRpbHMvdGFzay50cyIsICIuLi8uLi9zcmMvaW5kZXgvdHlwZXMveWFtbC50cyIsICIuLi8uLi9zcmMvaW5kZXgvZWRpdC9maWVsZC50cyIsICIuLi8uLi9zcmMvdXRpbHMvZmllbGRzLnRzIiwgIi4uLy4uL3NyYy91aS9maWVsZHMvZWRpdGFibGUudHN4IiwgIi4uLy4uL3NyYy9hcGkvdWkvdmlld3MvbGlzdC50c3giLCAiLi4vLi4vc3JjL2FwaS91aS92aWV3cy90YXNrLnRzeCIsICIuLi8uLi9zcmMvYXBpL3VpL3ZpZXdzL3BhZ2luZy50c3giLCAiLi4vLi4vbm9kZV9tb2R1bGVzL0Bmb3J0YXdlc29tZS9mcmVlLXNvbGlkLXN2Zy1pY29ucy9pbmRleC5tanMiLCAiLi4vLi4vc3JjL2FwaS91aS92aWV3cy90YWJsZS50c3giLCAiLi4vLi4vc3JjL2FwaS91aS92aWV3cy9jYWxsb3V0LnRzeCIsICIuLi8uLi9zcmMvYXBpL3VpL3ZpZXdzL2NhcmRzLnRzeCIsICIuLi8uLi9zcmMvYXBpL2RhdGEtYXJyYXkudHMiLCAiLi4vLi4vc3JjL2FwaS9jb2VyY2UudHMiLCAiLi4vLi4vc3JjL3V0aWxzL2RlZmVycmVkLnRzIiwgIi4uLy4uL3NyYy9hcGkvc2NyaXB0LWNhY2hlLnRzIiwgIi4uLy4uL3NyYy91aS9maWVsZHMvZWRpdGFibGUtZmllbGRzLnRzeCIsICIuLi8uLi9zcmMvYXBpL3VpL3ZpZXdzL3RyZWUtdGFibGUudHN4IiwgIi4uLy4uL3NyYy9hcGkvbG9jYWwtYXBpLnRzeCIsICIuLi8uLi9zcmMvYXBpL2FwaS50cyIsICIuLi8uLi9zcmMvaW5kZXgvc3RvcmFnZS9mb2xkZXIudHMiLCAiLi4vLi4vc3JjL2luZGV4L3N0b3JhZ2UvaW52ZXJ0ZWQudHMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL2ZsYXRxdWV1ZS9pbmRleC5qcyIsICIuLi8uLi9zcmMvaW5kZXgvc3RvcmFnZS9maWVsZHMudHMiLCAiLi4vLi4vc3JjL2V4cHJlc3Npb24vYmluYXJ5b3AudHMiLCAiLi4vLi4vc3JjL2V4cHJlc3Npb24vZnVuY3Rpb25zLnRzIiwgIi4uLy4uL3NyYy9leHByZXNzaW9uL2V2YWx1YXRvci50cyIsICIuLi8uLi9zcmMvaW5kZXgvc3RvcmFnZS9xdWVyeS1leGVjdXRvci50cyIsICIuLi8uLi9zcmMvaW5kZXgvZGF0YXN0b3JlLnRzIiwgIi4uLy4uL3NyYy9pbmRleC9wZXJzaXN0ZXIudHMiLCAiaW5saW5lLXdvcmtlcjpfX2lubGluZS13b3JrZXIiLCAiLi4vLi4vc3JjL2luZGV4L3dlYi13b3JrZXIvaW1wb3J0ZXIud29ya2VyLnRzIiwgIi4uLy4uL3NyYy9pbmRleC93ZWItd29ya2VyL2ltcG9ydGVyLnRzIiwgIi4uLy4uL3NyYy9pbmRleC9kYXRhY29yZS50cyIsICIuLi8uLi9zcmMvaW5kZXgvdHlwZXMvZmlsZXMudHMiLCAiLi4vLi4vc3JjL2luZGV4L2VtYmVkLXF1ZXVlLnRzIiwgIi4uLy4uL3NyYy9pbmRleC90eXBlcy9jYW52YXMudHMiLCAiLi4vLi4vc3JjL3NldHRpbmdzLnRzIiwgIi4uLy4uL3NyYy91aS92aWV3LXBhZ2UudHN4IiwgIi4uLy4uL3NyYy91aS9pbmRleC1zdGF0dXMudHN4Il0sCiAgInNvdXJjZXNDb250ZW50IjogWyJcInVzZSBzdHJpY3RcIjtcblxuZnVuY3Rpb24gUGFyc2ltbW9uKGFjdGlvbikge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgUGFyc2ltbW9uKSkge1xuICAgIHJldHVybiBuZXcgUGFyc2ltbW9uKGFjdGlvbik7XG4gIH1cbiAgdGhpcy5fID0gYWN0aW9uO1xufVxuXG52YXIgXyA9IFBhcnNpbW1vbi5wcm90b3R5cGU7XG5cbmZ1bmN0aW9uIHRpbWVzKG4sIGYpIHtcbiAgdmFyIGkgPSAwO1xuICBmb3IgKGk7IGkgPCBuOyBpKyspIHtcbiAgICBmKGkpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGZvckVhY2goZiwgYXJyKSB7XG4gIHRpbWVzKGFyci5sZW5ndGgsIGZ1bmN0aW9uKGkpIHtcbiAgICBmKGFycltpXSwgaSwgYXJyKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHJlZHVjZShmLCBzZWVkLCBhcnIpIHtcbiAgZm9yRWFjaChmdW5jdGlvbihlbGVtLCBpLCBhcnIpIHtcbiAgICBzZWVkID0gZihzZWVkLCBlbGVtLCBpLCBhcnIpO1xuICB9LCBhcnIpO1xuICByZXR1cm4gc2VlZDtcbn1cblxuZnVuY3Rpb24gbWFwKGYsIGFycikge1xuICByZXR1cm4gcmVkdWNlKFxuICAgIGZ1bmN0aW9uKGFjYywgZWxlbSwgaSwgYSkge1xuICAgICAgcmV0dXJuIGFjYy5jb25jYXQoW2YoZWxlbSwgaSwgYSldKTtcbiAgICB9LFxuICAgIFtdLFxuICAgIGFyclxuICApO1xufVxuXG5mdW5jdGlvbiBsc2hpZnRCdWZmZXIoaW5wdXQpIHtcbiAgdmFyIGFzVHdvQnl0ZXMgPSByZWR1Y2UoXG4gICAgZnVuY3Rpb24oYSwgdiwgaSwgYikge1xuICAgICAgcmV0dXJuIGEuY29uY2F0KFxuICAgICAgICBpID09PSBiLmxlbmd0aCAtIDFcbiAgICAgICAgICA/IEJ1ZmZlci5mcm9tKFt2LCAwXSkucmVhZFVJbnQxNkJFKDApXG4gICAgICAgICAgOiBiLnJlYWRVSW50MTZCRShpKVxuICAgICAgKTtcbiAgICB9LFxuICAgIFtdLFxuICAgIGlucHV0XG4gICk7XG4gIHJldHVybiBCdWZmZXIuZnJvbShcbiAgICBtYXAoZnVuY3Rpb24oeCkge1xuICAgICAgcmV0dXJuICgoeCA8PCAxKSAmIDB4ZmZmZikgPj4gODtcbiAgICB9LCBhc1R3b0J5dGVzKVxuICApO1xufVxuXG5mdW5jdGlvbiBjb25zdW1lQml0c0Zyb21CdWZmZXIobiwgaW5wdXQpIHtcbiAgdmFyIHN0YXRlID0geyB2OiAwLCBidWY6IGlucHV0IH07XG4gIHRpbWVzKG4sIGZ1bmN0aW9uKCkge1xuICAgIHN0YXRlID0ge1xuICAgICAgdjogKHN0YXRlLnYgPDwgMSkgfCBiaXRQZWVrQnVmZmVyKHN0YXRlLmJ1ZiksXG4gICAgICBidWY6IGxzaGlmdEJ1ZmZlcihzdGF0ZS5idWYpXG4gICAgfTtcbiAgfSk7XG4gIHJldHVybiBzdGF0ZTtcbn1cblxuZnVuY3Rpb24gYml0UGVla0J1ZmZlcihpbnB1dCkge1xuICByZXR1cm4gaW5wdXRbMF0gPj4gNztcbn1cblxuZnVuY3Rpb24gc3VtKG51bUFycikge1xuICByZXR1cm4gcmVkdWNlKFxuICAgIGZ1bmN0aW9uKHgsIHkpIHtcbiAgICAgIHJldHVybiB4ICsgeTtcbiAgICB9LFxuICAgIDAsXG4gICAgbnVtQXJyXG4gICk7XG59XG5cbmZ1bmN0aW9uIGZpbmQocHJlZCwgYXJyKSB7XG4gIHJldHVybiByZWR1Y2UoXG4gICAgZnVuY3Rpb24oZm91bmQsIGVsZW0pIHtcbiAgICAgIHJldHVybiBmb3VuZCB8fCAocHJlZChlbGVtKSA/IGVsZW0gOiBmb3VuZCk7XG4gICAgfSxcbiAgICBudWxsLFxuICAgIGFyclxuICApO1xufVxuXG5mdW5jdGlvbiBidWZmZXJFeGlzdHMoKSB7XG4gIHJldHVybiB0eXBlb2YgQnVmZmVyICE9PSBcInVuZGVmaW5lZFwiO1xufVxuXG5mdW5jdGlvbiBzZXRFeGlzdHMoKSB7XG4gIGlmIChQYXJzaW1tb24uX3N1cHBvcnRzU2V0ICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gUGFyc2ltbW9uLl9zdXBwb3J0c1NldDtcbiAgfVxuICB2YXIgZXhpc3RzID0gdHlwZW9mIFNldCAhPT0gXCJ1bmRlZmluZWRcIjtcbiAgUGFyc2ltbW9uLl9zdXBwb3J0c1NldCA9IGV4aXN0cztcbiAgcmV0dXJuIGV4aXN0cztcbn1cblxuZnVuY3Rpb24gZW5zdXJlQnVmZmVyKCkge1xuICBpZiAoIWJ1ZmZlckV4aXN0cygpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgXCJCdWZmZXIgZ2xvYmFsIGRvZXMgbm90IGV4aXN0OyBwbGVhc2UgdXNlIHdlYnBhY2sgaWYgeW91IG5lZWQgdG8gcGFyc2UgQnVmZmVycyBpbiB0aGUgYnJvd3Nlci5cIlxuICAgICk7XG4gIH1cbn1cblxuZnVuY3Rpb24gYml0U2VxKGFsaWdubWVudHMpIHtcbiAgZW5zdXJlQnVmZmVyKCk7XG4gIHZhciB0b3RhbEJpdHMgPSBzdW0oYWxpZ25tZW50cyk7XG4gIGlmICh0b3RhbEJpdHMgJSA4ICE9PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgXCJUaGUgYml0cyBbXCIgK1xuICAgICAgICBhbGlnbm1lbnRzLmpvaW4oXCIsIFwiKSArXG4gICAgICAgIFwiXSBhZGQgdXAgdG8gXCIgK1xuICAgICAgICB0b3RhbEJpdHMgK1xuICAgICAgICBcIiB3aGljaCBpcyBub3QgYW4gZXZlbiBudW1iZXIgb2YgYnl0ZXM7IHRoZSB0b3RhbCBzaG91bGQgYmUgZGl2aXNpYmxlIGJ5IDhcIlxuICAgICk7XG4gIH1cbiAgdmFyIGJ5dGVzID0gdG90YWxCaXRzIC8gODtcblxuICB2YXIgdG9vQmlnUmFuZ2UgPSBmaW5kKGZ1bmN0aW9uKHgpIHtcbiAgICByZXR1cm4geCA+IDQ4O1xuICB9LCBhbGlnbm1lbnRzKTtcbiAgaWYgKHRvb0JpZ1JhbmdlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgdG9vQmlnUmFuZ2UgKyBcIiBiaXQgcmFuZ2UgcmVxdWVzdGVkIGV4Y2VlZHMgNDggYml0ICg2IGJ5dGUpIE51bWJlciBtYXguXCJcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBQYXJzaW1tb24oZnVuY3Rpb24oaW5wdXQsIGkpIHtcbiAgICB2YXIgbmV3UG9zID0gYnl0ZXMgKyBpO1xuICAgIGlmIChuZXdQb3MgPiBpbnB1dC5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBtYWtlRmFpbHVyZShpLCBieXRlcy50b1N0cmluZygpICsgXCIgYnl0ZXNcIik7XG4gICAgfVxuICAgIHJldHVybiBtYWtlU3VjY2VzcyhcbiAgICAgIG5ld1BvcyxcbiAgICAgIHJlZHVjZShcbiAgICAgICAgZnVuY3Rpb24oYWNjLCBiaXRzKSB7XG4gICAgICAgICAgdmFyIHN0YXRlID0gY29uc3VtZUJpdHNGcm9tQnVmZmVyKGJpdHMsIGFjYy5idWYpO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb2xsOiBhY2MuY29sbC5jb25jYXQoc3RhdGUudiksXG4gICAgICAgICAgICBidWY6IHN0YXRlLmJ1ZlxuICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgICAgIHsgY29sbDogW10sIGJ1ZjogaW5wdXQuc2xpY2UoaSwgbmV3UG9zKSB9LFxuICAgICAgICBhbGlnbm1lbnRzXG4gICAgICApLmNvbGxcbiAgICApO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gYml0U2VxT2JqKG5hbWVkQWxpZ25tZW50cykge1xuICBlbnN1cmVCdWZmZXIoKTtcbiAgdmFyIHNlZW5LZXlzID0ge307XG4gIHZhciB0b3RhbEtleXMgPSAwO1xuICB2YXIgZnVsbEFsaWdubWVudHMgPSBtYXAoZnVuY3Rpb24oaXRlbSkge1xuICAgIGlmIChpc0FycmF5KGl0ZW0pKSB7XG4gICAgICB2YXIgcGFpciA9IGl0ZW07XG4gICAgICBpZiAocGFpci5sZW5ndGggIT09IDIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIFwiW1wiICtcbiAgICAgICAgICAgIHBhaXIuam9pbihcIiwgXCIpICtcbiAgICAgICAgICAgIFwiXSBzaG91bGQgYmUgbGVuZ3RoIDIsIGdvdCBsZW5ndGggXCIgK1xuICAgICAgICAgICAgcGFpci5sZW5ndGhcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGFzc2VydFN0cmluZyhwYWlyWzBdKTtcbiAgICAgIGFzc2VydE51bWJlcihwYWlyWzFdKTtcbiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc2VlbktleXMsIHBhaXJbMF0pKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcImR1cGxpY2F0ZSBrZXkgaW4gYml0U2VxT2JqOiBcIiArIHBhaXJbMF0pO1xuICAgICAgfVxuICAgICAgc2VlbktleXNbcGFpclswXV0gPSB0cnVlO1xuICAgICAgdG90YWxLZXlzKys7XG4gICAgICByZXR1cm4gcGFpcjtcbiAgICB9IGVsc2Uge1xuICAgICAgYXNzZXJ0TnVtYmVyKGl0ZW0pO1xuICAgICAgcmV0dXJuIFtudWxsLCBpdGVtXTtcbiAgICB9XG4gIH0sIG5hbWVkQWxpZ25tZW50cyk7XG4gIGlmICh0b3RhbEtleXMgPCAxKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgXCJiaXRTZXFPYmogZXhwZWN0cyBhdCBsZWFzdCBvbmUgbmFtZWQgcGFpciwgZ290IFtcIiArXG4gICAgICAgIG5hbWVkQWxpZ25tZW50cy5qb2luKFwiLCBcIikgK1xuICAgICAgICBcIl1cIlxuICAgICk7XG4gIH1cbiAgdmFyIG5hbWVzT25seSA9IG1hcChmdW5jdGlvbihwYWlyKSB7XG4gICAgcmV0dXJuIHBhaXJbMF07XG4gIH0sIGZ1bGxBbGlnbm1lbnRzKTtcbiAgdmFyIGFsaWdubWVudHNPbmx5ID0gbWFwKGZ1bmN0aW9uKHBhaXIpIHtcbiAgICByZXR1cm4gcGFpclsxXTtcbiAgfSwgZnVsbEFsaWdubWVudHMpO1xuXG4gIHJldHVybiBiaXRTZXEoYWxpZ25tZW50c09ubHkpLm1hcChmdW5jdGlvbihwYXJzZWQpIHtcbiAgICB2YXIgbmFtZWRQYXJzZWQgPSBtYXAoZnVuY3Rpb24obmFtZSwgaSkge1xuICAgICAgcmV0dXJuIFtuYW1lLCBwYXJzZWRbaV1dO1xuICAgIH0sIG5hbWVzT25seSk7XG5cbiAgICByZXR1cm4gcmVkdWNlKFxuICAgICAgZnVuY3Rpb24ob2JqLCBrdikge1xuICAgICAgICBpZiAoa3ZbMF0gIT09IG51bGwpIHtcbiAgICAgICAgICBvYmpba3ZbMF1dID0ga3ZbMV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9iajtcbiAgICAgIH0sXG4gICAgICB7fSxcbiAgICAgIG5hbWVkUGFyc2VkXG4gICAgKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHBhcnNlQnVmZmVyRm9yKG90aGVyLCBsZW5ndGgpIHtcbiAgcmV0dXJuIG5ldyBQYXJzaW1tb24oZnVuY3Rpb24oaW5wdXQsIGkpIHtcbiAgICBlbnN1cmVCdWZmZXIoKTtcbiAgICBpZiAoaSArIGxlbmd0aCA+IGlucHV0Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuIG1ha2VGYWlsdXJlKGksIGxlbmd0aCArIFwiIGJ5dGVzIGZvciBcIiArIG90aGVyKTtcbiAgICB9XG4gICAgcmV0dXJuIG1ha2VTdWNjZXNzKGkgKyBsZW5ndGgsIGlucHV0LnNsaWNlKGksIGkgKyBsZW5ndGgpKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHBhcnNlQnVmZmVyKGxlbmd0aCkge1xuICByZXR1cm4gcGFyc2VCdWZmZXJGb3IoXCJidWZmZXJcIiwgbGVuZ3RoKS5tYXAoZnVuY3Rpb24odW5zYWZlKSB7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKHVuc2FmZSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBlbmNvZGVkU3RyaW5nKGVuY29kaW5nLCBsZW5ndGgpIHtcbiAgcmV0dXJuIHBhcnNlQnVmZmVyRm9yKFwic3RyaW5nXCIsIGxlbmd0aCkubWFwKGZ1bmN0aW9uKGJ1ZmYpIHtcbiAgICByZXR1cm4gYnVmZi50b1N0cmluZyhlbmNvZGluZyk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBpc0ludGVnZXIodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gXCJudW1iZXJcIiAmJiBNYXRoLmZsb29yKHZhbHVlKSA9PT0gdmFsdWU7XG59XG5cbmZ1bmN0aW9uIGFzc2VydFZhbGlkSW50ZWdlckJ5dGVMZW5ndGhGb3Iod2hvLCBsZW5ndGgpIHtcbiAgaWYgKCFpc0ludGVnZXIobGVuZ3RoKSB8fCBsZW5ndGggPCAwIHx8IGxlbmd0aCA+IDYpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3Iod2hvICsgXCIgcmVxdWlyZXMgaW50ZWdlciBsZW5ndGggaW4gcmFuZ2UgWzAsIDZdLlwiKTtcbiAgfVxufVxuXG5mdW5jdGlvbiB1aW50QkUobGVuZ3RoKSB7XG4gIGFzc2VydFZhbGlkSW50ZWdlckJ5dGVMZW5ndGhGb3IoXCJ1aW50QkVcIiwgbGVuZ3RoKTtcbiAgcmV0dXJuIHBhcnNlQnVmZmVyRm9yKFwidWludEJFKFwiICsgbGVuZ3RoICsgXCIpXCIsIGxlbmd0aCkubWFwKGZ1bmN0aW9uKGJ1ZmYpIHtcbiAgICByZXR1cm4gYnVmZi5yZWFkVUludEJFKDAsIGxlbmd0aCk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiB1aW50TEUobGVuZ3RoKSB7XG4gIGFzc2VydFZhbGlkSW50ZWdlckJ5dGVMZW5ndGhGb3IoXCJ1aW50TEVcIiwgbGVuZ3RoKTtcbiAgcmV0dXJuIHBhcnNlQnVmZmVyRm9yKFwidWludExFKFwiICsgbGVuZ3RoICsgXCIpXCIsIGxlbmd0aCkubWFwKGZ1bmN0aW9uKGJ1ZmYpIHtcbiAgICByZXR1cm4gYnVmZi5yZWFkVUludExFKDAsIGxlbmd0aCk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBpbnRCRShsZW5ndGgpIHtcbiAgYXNzZXJ0VmFsaWRJbnRlZ2VyQnl0ZUxlbmd0aEZvcihcImludEJFXCIsIGxlbmd0aCk7XG4gIHJldHVybiBwYXJzZUJ1ZmZlckZvcihcImludEJFKFwiICsgbGVuZ3RoICsgXCIpXCIsIGxlbmd0aCkubWFwKGZ1bmN0aW9uKGJ1ZmYpIHtcbiAgICByZXR1cm4gYnVmZi5yZWFkSW50QkUoMCwgbGVuZ3RoKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGludExFKGxlbmd0aCkge1xuICBhc3NlcnRWYWxpZEludGVnZXJCeXRlTGVuZ3RoRm9yKFwiaW50TEVcIiwgbGVuZ3RoKTtcbiAgcmV0dXJuIHBhcnNlQnVmZmVyRm9yKFwiaW50TEUoXCIgKyBsZW5ndGggKyBcIilcIiwgbGVuZ3RoKS5tYXAoZnVuY3Rpb24oYnVmZikge1xuICAgIHJldHVybiBidWZmLnJlYWRJbnRMRSgwLCBsZW5ndGgpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gZmxvYXRCRSgpIHtcbiAgcmV0dXJuIHBhcnNlQnVmZmVyRm9yKFwiZmxvYXRCRVwiLCA0KS5tYXAoZnVuY3Rpb24oYnVmZikge1xuICAgIHJldHVybiBidWZmLnJlYWRGbG9hdEJFKDApO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gZmxvYXRMRSgpIHtcbiAgcmV0dXJuIHBhcnNlQnVmZmVyRm9yKFwiZmxvYXRMRVwiLCA0KS5tYXAoZnVuY3Rpb24oYnVmZikge1xuICAgIHJldHVybiBidWZmLnJlYWRGbG9hdExFKDApO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gZG91YmxlQkUoKSB7XG4gIHJldHVybiBwYXJzZUJ1ZmZlckZvcihcImRvdWJsZUJFXCIsIDgpLm1hcChmdW5jdGlvbihidWZmKSB7XG4gICAgcmV0dXJuIGJ1ZmYucmVhZERvdWJsZUJFKDApO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gZG91YmxlTEUoKSB7XG4gIHJldHVybiBwYXJzZUJ1ZmZlckZvcihcImRvdWJsZUxFXCIsIDgpLm1hcChmdW5jdGlvbihidWZmKSB7XG4gICAgcmV0dXJuIGJ1ZmYucmVhZERvdWJsZUxFKDApO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gdG9BcnJheShhcnJMaWtlKSB7XG4gIHJldHVybiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcnJMaWtlKTtcbn1cbi8vIC0qLSBIZWxwZXJzIC0qLVxuXG5mdW5jdGlvbiBpc1BhcnNlcihvYmopIHtcbiAgcmV0dXJuIG9iaiBpbnN0YW5jZW9mIFBhcnNpbW1vbjtcbn1cblxuZnVuY3Rpb24gaXNBcnJheSh4KSB7XG4gIHJldHVybiB7fS50b1N0cmluZy5jYWxsKHgpID09PSBcIltvYmplY3QgQXJyYXldXCI7XG59XG5cbmZ1bmN0aW9uIGlzQnVmZmVyKHgpIHtcbiAgLyogZ2xvYmFsIEJ1ZmZlciAqL1xuICByZXR1cm4gYnVmZmVyRXhpc3RzKCkgJiYgQnVmZmVyLmlzQnVmZmVyKHgpO1xufVxuXG5mdW5jdGlvbiBtYWtlU3VjY2VzcyhpbmRleCwgdmFsdWUpIHtcbiAgcmV0dXJuIHtcbiAgICBzdGF0dXM6IHRydWUsXG4gICAgaW5kZXg6IGluZGV4LFxuICAgIHZhbHVlOiB2YWx1ZSxcbiAgICBmdXJ0aGVzdDogLTEsXG4gICAgZXhwZWN0ZWQ6IFtdXG4gIH07XG59XG5cbmZ1bmN0aW9uIG1ha2VGYWlsdXJlKGluZGV4LCBleHBlY3RlZCkge1xuICBpZiAoIWlzQXJyYXkoZXhwZWN0ZWQpKSB7XG4gICAgZXhwZWN0ZWQgPSBbZXhwZWN0ZWRdO1xuICB9XG4gIHJldHVybiB7XG4gICAgc3RhdHVzOiBmYWxzZSxcbiAgICBpbmRleDogLTEsXG4gICAgdmFsdWU6IG51bGwsXG4gICAgZnVydGhlc3Q6IGluZGV4LFxuICAgIGV4cGVjdGVkOiBleHBlY3RlZFxuICB9O1xufVxuXG5mdW5jdGlvbiBtZXJnZVJlcGxpZXMocmVzdWx0LCBsYXN0KSB7XG4gIGlmICghbGFzdCkge1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbiAgaWYgKHJlc3VsdC5mdXJ0aGVzdCA+IGxhc3QuZnVydGhlc3QpIHtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG4gIHZhciBleHBlY3RlZCA9XG4gICAgcmVzdWx0LmZ1cnRoZXN0ID09PSBsYXN0LmZ1cnRoZXN0XG4gICAgICA/IHVuaW9uKHJlc3VsdC5leHBlY3RlZCwgbGFzdC5leHBlY3RlZClcbiAgICAgIDogbGFzdC5leHBlY3RlZDtcbiAgcmV0dXJuIHtcbiAgICBzdGF0dXM6IHJlc3VsdC5zdGF0dXMsXG4gICAgaW5kZXg6IHJlc3VsdC5pbmRleCxcbiAgICB2YWx1ZTogcmVzdWx0LnZhbHVlLFxuICAgIGZ1cnRoZXN0OiBsYXN0LmZ1cnRoZXN0LFxuICAgIGV4cGVjdGVkOiBleHBlY3RlZFxuICB9O1xufVxuXG4vLyBpbmRleCBvZiB7IGlucHV0ID0+IHsgaW5kZXggPT4geyBsaW5lTnVtYmVyLCBzdGFydE9mTGluZSB9IH0gfVxuLy8gd2hlbiB3ZSBzZWUgYSBuZXcgaW5kZXggd2UganVzdCB3YWxrIGJhY2t3YXJkcyB0byB0aGUgbGFzdCBzZWVuIGluZGV4IGFuZFxuLy8gY29tcHV0ZSB0aGUgbmV3IGxpbmVOdW1iZXIgYW5kIHN0YXJ0T2ZMaW5lIGZyb20gdGhlcmUgc28gd2UgZG9uJ3QgaGF2ZSB0b1xuLy8gcmVjb21wdXRlIGZyb20gdGhlIHdob2xlIGlucHV0XG52YXIgbGluZUNvbHVtbkluZGV4ID0ge307XG5mdW5jdGlvbiBtYWtlTGluZUNvbHVtbkluZGV4KGlucHV0LCBpKSB7XG4gIGlmIChpc0J1ZmZlcihpbnB1dCkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgb2Zmc2V0OiBpLFxuICAgICAgbGluZTogLTEsXG4gICAgICBjb2x1bW46IC0xXG4gICAgfTtcbiAgfVxuXG4gIC8vIGluaXRpYWxpemUgaWYgd2UgaGF2ZW4ndCBzZWVuIHRoaXMgaW5wdXQgeWV0XG4gIGlmICghKGlucHV0IGluIGxpbmVDb2x1bW5JbmRleCkpIHtcbiAgICBsaW5lQ29sdW1uSW5kZXhbaW5wdXRdID0ge307XG4gIH1cblxuICB2YXIgaW5wdXRJbmRleCA9IGxpbmVDb2x1bW5JbmRleFtpbnB1dF07XG5cbiAgdmFyIHByZXZMaW5lID0gMDtcbiAgdmFyIG5ld0xpbmVzID0gMDtcbiAgdmFyIGxpbmVTdGFydCA9IDA7XG4gIHZhciBqID0gaTtcbiAgd2hpbGUgKGogPj0gMCkge1xuICAgIGlmIChqIGluIGlucHV0SW5kZXgpIHtcbiAgICAgIHByZXZMaW5lID0gaW5wdXRJbmRleFtqXS5saW5lO1xuICAgICAgLy8gbGluZVN0YXJ0ID09PSAwIHdoZW4gd2UgaGF2ZW4ndCBmb3VuZCBhIG5ldyBsaW5lIG9uIHRoZSB3YWxrXG4gICAgICAvLyBiYWNrIGZyb20gaSwgc28gd2UgYXJlIG9uIHRoZSBzYW1lIGxpbmUgYXMgdGhlIHByZXZpb3VzbHkgY2FjaGVkXG4gICAgICAvLyBpbmRleFxuICAgICAgaWYgKGxpbmVTdGFydCA9PT0gMCkge1xuICAgICAgICBsaW5lU3RhcnQgPSBpbnB1dEluZGV4W2pdLmxpbmVTdGFydDtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIC8vIFVuaXggTEYgKFxcbikgb3IgV2luZG93cyBDUkxGIChcXHJcXG4pIGxpbmUgZW5kaW5nXG4gICAgICBpbnB1dC5jaGFyQXQoaikgPT09IFwiXFxuXCIgfHxcbiAgICAgIC8vIE9sZCBNYWMgQ1IgKFxccikgbGluZSBlbmRpbmdcbiAgICAgIChpbnB1dC5jaGFyQXQoaikgPT09IFwiXFxyXCIgJiYgaW5wdXQuY2hhckF0KGogKyAxKSAhPT0gXCJcXG5cIilcbiAgICApIHtcbiAgICAgIG5ld0xpbmVzKys7XG4gICAgICAvLyBsaW5lU3RhcnQgPT09IDAgd2hlbiB0aGlzIGlzIHRoZSBmaXJzdCBuZXcgbGluZSB3ZSBoYXZlIGZvdW5kXG4gICAgICBpZiAobGluZVN0YXJ0ID09PSAwKSB7XG4gICAgICAgIGxpbmVTdGFydCA9IGogKyAxO1xuICAgICAgfVxuICAgIH1cbiAgICBqLS07XG4gIH1cblxuICB2YXIgbGluZVdlQXJlVXBUbyA9IHByZXZMaW5lICsgbmV3TGluZXM7XG4gIHZhciBjb2x1bW5XZUFyZVVwVG8gPSBpIC0gbGluZVN0YXJ0O1xuXG4gIGlucHV0SW5kZXhbaV0gPSB7IGxpbmU6IGxpbmVXZUFyZVVwVG8sIGxpbmVTdGFydDogbGluZVN0YXJ0IH07XG5cbiAgLy8gbGluZXMgYW5kIGNvbHVtbnMgYXJlIDEtaW5kZXhlZFxuICByZXR1cm4ge1xuICAgIG9mZnNldDogaSxcbiAgICBsaW5lOiBsaW5lV2VBcmVVcFRvICsgMSxcbiAgICBjb2x1bW46IGNvbHVtbldlQXJlVXBUbyArIDFcbiAgfTtcbn1cblxuLy8gUmV0dXJucyB0aGUgc29ydGVkIHNldCB1bmlvbiBvZiB0d28gYXJyYXlzIG9mIHN0cmluZ3NcbmZ1bmN0aW9uIHVuaW9uKHhzLCB5cykge1xuICAvLyBmb3IgbmV3ZXIgYnJvd3NlcnMvbm9kZSB3ZSBjYW4gaW1wcm92ZSBwZXJmb3JtYW5jZSBieSB1c2luZ1xuICAvLyBtb2Rlcm4gSlNcbiAgaWYgKHNldEV4aXN0cygpICYmIEFycmF5LmZyb20pIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZWZcbiAgICB2YXIgc2V0ID0gbmV3IFNldCh4cyk7XG4gICAgZm9yICh2YXIgeSA9IDA7IHkgPCB5cy5sZW5ndGg7IHkrKykge1xuICAgICAgc2V0LmFkZCh5c1t5XSk7XG4gICAgfVxuICAgIHZhciBhcnIgPSBBcnJheS5mcm9tKHNldCk7XG4gICAgYXJyLnNvcnQoKTtcbiAgICByZXR1cm4gYXJyO1xuICB9XG4gIHZhciBvYmogPSB7fTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB4cy5sZW5ndGg7IGkrKykge1xuICAgIG9ialt4c1tpXV0gPSB0cnVlO1xuICB9XG4gIGZvciAodmFyIGogPSAwOyBqIDwgeXMubGVuZ3RoOyBqKyspIHtcbiAgICBvYmpbeXNbal1dID0gdHJ1ZTtcbiAgfVxuICB2YXIga2V5cyA9IFtdO1xuICBmb3IgKHZhciBrIGluIG9iaikge1xuICAgIGlmICh7fS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgaykpIHtcbiAgICAgIGtleXMucHVzaChrKTtcbiAgICB9XG4gIH1cbiAga2V5cy5zb3J0KCk7XG4gIHJldHVybiBrZXlzO1xufVxuXG5mdW5jdGlvbiBhc3NlcnRQYXJzZXIocCkge1xuICBpZiAoIWlzUGFyc2VyKHApKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwibm90IGEgcGFyc2VyOiBcIiArIHApO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldChpbnB1dCwgaSkge1xuICBpZiAodHlwZW9mIGlucHV0ID09PSBcInN0cmluZ1wiKSB7XG4gICAgcmV0dXJuIGlucHV0LmNoYXJBdChpKTtcbiAgfVxuICByZXR1cm4gaW5wdXRbaV07XG59XG5cbi8vIFRPRE9bRVM1XTogU3dpdGNoIHRvIEFycmF5LmlzQXJyYXkgZXZlbnR1YWxseS5cbmZ1bmN0aW9uIGFzc2VydEFycmF5KHgpIHtcbiAgaWYgKCFpc0FycmF5KHgpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwibm90IGFuIGFycmF5OiBcIiArIHgpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGFzc2VydE51bWJlcih4KSB7XG4gIGlmICh0eXBlb2YgeCAhPT0gXCJudW1iZXJcIikge1xuICAgIHRocm93IG5ldyBFcnJvcihcIm5vdCBhIG51bWJlcjogXCIgKyB4KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBhc3NlcnRSZWdleHAoeCkge1xuICBpZiAoISh4IGluc3RhbmNlb2YgUmVnRXhwKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIm5vdCBhIHJlZ2V4cDogXCIgKyB4KTtcbiAgfVxuICB2YXIgZiA9IGZsYWdzKHgpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGYubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgYyA9IGYuY2hhckF0KGkpO1xuICAgIC8vIE9ubHkgYWxsb3cgcmVnZXhwIGZsYWdzIFtpbXVzXSBmb3Igbm93LCBzaW5jZSBbZ10gYW5kIFt5XSBzcGVjaWZpY2FsbHlcbiAgICAvLyBtZXNzIHVwIFBhcnNpbW1vbi4gSWYgbW9yZSBub24tc3RhdGVmdWwgcmVnZXhwIGZsYWdzIGFyZSBhZGRlZCBpbiB0aGVcbiAgICAvLyBmdXR1cmUsIHRoaXMgd2lsbCBuZWVkIHRvIGJlIHJldmlzaXRlZC5cbiAgICBpZiAoYyAhPT0gXCJpXCIgJiYgYyAhPT0gXCJtXCIgJiYgYyAhPT0gXCJ1XCIgJiYgYyAhPT0gXCJzXCIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigndW5zdXBwb3J0ZWQgcmVnZXhwIGZsYWcgXCInICsgYyArICdcIjogJyArIHgpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBhc3NlcnRGdW5jdGlvbih4KSB7XG4gIGlmICh0eXBlb2YgeCAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwibm90IGEgZnVuY3Rpb246IFwiICsgeCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gYXNzZXJ0U3RyaW5nKHgpIHtcbiAgaWYgKHR5cGVvZiB4ICE9PSBcInN0cmluZ1wiKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwibm90IGEgc3RyaW5nOiBcIiArIHgpO1xuICB9XG59XG5cbi8vIC0qLSBFcnJvciBGb3JtYXR0aW5nIC0qLVxuXG52YXIgbGluZXNCZWZvcmVTdHJpbmdFcnJvciA9IDI7XG52YXIgbGluZXNBZnRlclN0cmluZ0Vycm9yID0gMztcbnZhciBieXRlc1BlckxpbmUgPSA4O1xudmFyIGJ5dGVzQmVmb3JlID0gYnl0ZXNQZXJMaW5lICogNTtcbnZhciBieXRlc0FmdGVyID0gYnl0ZXNQZXJMaW5lICogNDtcbnZhciBkZWZhdWx0TGluZVByZWZpeCA9IFwiICBcIjtcblxuZnVuY3Rpb24gcmVwZWF0KHN0cmluZywgYW1vdW50KSB7XG4gIHJldHVybiBuZXcgQXJyYXkoYW1vdW50ICsgMSkuam9pbihzdHJpbmcpO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRFeHBlY3RlZChleHBlY3RlZCkge1xuICBpZiAoZXhwZWN0ZWQubGVuZ3RoID09PSAxKSB7XG4gICAgcmV0dXJuIFwiRXhwZWN0ZWQ6XFxuXFxuXCIgKyBleHBlY3RlZFswXTtcbiAgfVxuICByZXR1cm4gXCJFeHBlY3RlZCBvbmUgb2YgdGhlIGZvbGxvd2luZzogXFxuXFxuXCIgKyBleHBlY3RlZC5qb2luKFwiLCBcIik7XG59XG5cbmZ1bmN0aW9uIGxlZnRQYWQoc3RyLCBwYWQsIGNoYXIpIHtcbiAgdmFyIGFkZCA9IHBhZCAtIHN0ci5sZW5ndGg7XG4gIGlmIChhZGQgPD0gMCkge1xuICAgIHJldHVybiBzdHI7XG4gIH1cbiAgcmV0dXJuIHJlcGVhdChjaGFyLCBhZGQpICsgc3RyO1xufVxuXG5mdW5jdGlvbiB0b0NodW5rcyhhcnIsIGNodW5rU2l6ZSkge1xuICB2YXIgbGVuZ3RoID0gYXJyLmxlbmd0aDtcbiAgdmFyIGNodW5rcyA9IFtdO1xuICB2YXIgY2h1bmtJbmRleCA9IDA7XG5cbiAgaWYgKGxlbmd0aCA8PSBjaHVua1NpemUpIHtcbiAgICByZXR1cm4gW2Fyci5zbGljZSgpXTtcbiAgfVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoIWNodW5rc1tjaHVua0luZGV4XSkge1xuICAgICAgY2h1bmtzLnB1c2goW10pO1xuICAgIH1cblxuICAgIGNodW5rc1tjaHVua0luZGV4XS5wdXNoKGFycltpXSk7XG5cbiAgICBpZiAoKGkgKyAxKSAlIGNodW5rU2l6ZSA9PT0gMCkge1xuICAgICAgY2h1bmtJbmRleCsrO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjaHVua3M7XG59XG5cbi8vIEdldCBhIHJhbmdlIG9mIGluZGV4ZXMgaW5jbHVkaW5nIGBpYC10aCBlbGVtZW50IGFuZCBgYmVmb3JlYCBhbmQgYGFmdGVyYCBhbW91bnQgb2YgZWxlbWVudHMgZnJvbSBgYXJyYC5cbmZ1bmN0aW9uIHJhbmdlRnJvbUluZGV4QW5kT2Zmc2V0cyhpLCBiZWZvcmUsIGFmdGVyLCBsZW5ndGgpIHtcbiAgcmV0dXJuIHtcbiAgICAvLyBHdWFyZCBhZ2FpbnN0IHRoZSBuZWdhdGl2ZSB1cHBlciBib3VuZCBmb3IgbGluZXMgaW5jbHVkZWQgaW4gdGhlIG91dHB1dC5cbiAgICBmcm9tOiBpIC0gYmVmb3JlID4gMCA/IGkgLSBiZWZvcmUgOiAwLFxuICAgIHRvOiBpICsgYWZ0ZXIgPiBsZW5ndGggPyBsZW5ndGggOiBpICsgYWZ0ZXJcbiAgfTtcbn1cblxuZnVuY3Rpb24gYnl0ZVJhbmdlVG9SYW5nZShieXRlUmFuZ2UpIHtcbiAgLy8gRXhjZXB0aW9uIGZvciBpbnB1dHMgc21hbGxlciB0aGFuIGBieXRlc1BlckxpbmVgXG4gIGlmIChieXRlUmFuZ2UuZnJvbSA9PT0gMCAmJiBieXRlUmFuZ2UudG8gPT09IDEpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZnJvbTogYnl0ZVJhbmdlLmZyb20sXG4gICAgICB0bzogYnl0ZVJhbmdlLnRvXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZnJvbTogYnl0ZVJhbmdlLmZyb20gLyBieXRlc1BlckxpbmUsXG4gICAgLy8gUm91bmQgYHRvYCwgc28gd2UgZG9uJ3QgZ2V0IGZsb2F0IGlmIHRoZSBhbW91bnQgb2YgYnl0ZXMgaXMgbm90IGRpdmlzaWJsZSBieSBgYnl0ZXNQZXJMaW5lYFxuICAgIHRvOiBNYXRoLmZsb29yKGJ5dGVSYW5nZS50byAvIGJ5dGVzUGVyTGluZSlcbiAgfTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0R290KGlucHV0LCBlcnJvcikge1xuICB2YXIgaW5kZXggPSBlcnJvci5pbmRleDtcbiAgdmFyIGkgPSBpbmRleC5vZmZzZXQ7XG5cbiAgdmFyIHZlcnRpY2FsTWFya2VyTGVuZ3RoID0gMTtcbiAgdmFyIGNvbHVtbjtcbiAgdmFyIGxpbmVXaXRoRXJyb3JJbmRleDtcbiAgdmFyIGxpbmVzO1xuICB2YXIgbGluZVJhbmdlO1xuICB2YXIgbGFzdExpbmVOdW1iZXJMYWJlbExlbmd0aDtcblxuICBpZiAoaSA9PT0gaW5wdXQubGVuZ3RoKSB7XG4gICAgcmV0dXJuIFwiR290IHRoZSBlbmQgb2YgdGhlIGlucHV0XCI7XG4gIH1cblxuICBpZiAoaXNCdWZmZXIoaW5wdXQpKSB7XG4gICAgdmFyIGJ5dGVMaW5lV2l0aEVycm9ySW5kZXggPSBpIC0gKGkgJSBieXRlc1BlckxpbmUpO1xuICAgIHZhciBjb2x1bW5CeXRlSW5kZXggPSBpIC0gYnl0ZUxpbmVXaXRoRXJyb3JJbmRleDtcbiAgICB2YXIgYnl0ZVJhbmdlID0gcmFuZ2VGcm9tSW5kZXhBbmRPZmZzZXRzKFxuICAgICAgYnl0ZUxpbmVXaXRoRXJyb3JJbmRleCxcbiAgICAgIGJ5dGVzQmVmb3JlLFxuICAgICAgYnl0ZXNBZnRlciArIGJ5dGVzUGVyTGluZSxcbiAgICAgIGlucHV0Lmxlbmd0aFxuICAgICk7XG4gICAgdmFyIGJ5dGVzID0gaW5wdXQuc2xpY2UoYnl0ZVJhbmdlLmZyb20sIGJ5dGVSYW5nZS50byk7XG4gICAgdmFyIGJ5dGVzSW5DaHVua3MgPSB0b0NodW5rcyhieXRlcy50b0pTT04oKS5kYXRhLCBieXRlc1BlckxpbmUpO1xuXG4gICAgdmFyIGJ5dGVMaW5lcyA9IG1hcChmdW5jdGlvbihieXRlUm93KSB7XG4gICAgICByZXR1cm4gbWFwKGZ1bmN0aW9uKGJ5dGVWYWx1ZSkge1xuICAgICAgICAvLyBQcmVmaXggYnl0ZSB2YWx1ZXMgd2l0aCBhIGAwYCBpZiB0aGV5IGFyZSBzaG9ydGVyIHRoYW4gMiBjaGFyYWN0ZXJzLlxuICAgICAgICByZXR1cm4gbGVmdFBhZChieXRlVmFsdWUudG9TdHJpbmcoMTYpLCAyLCBcIjBcIik7XG4gICAgICB9LCBieXRlUm93KTtcbiAgICB9LCBieXRlc0luQ2h1bmtzKTtcblxuICAgIGxpbmVSYW5nZSA9IGJ5dGVSYW5nZVRvUmFuZ2UoYnl0ZVJhbmdlKTtcbiAgICBsaW5lV2l0aEVycm9ySW5kZXggPSBieXRlTGluZVdpdGhFcnJvckluZGV4IC8gYnl0ZXNQZXJMaW5lO1xuICAgIGNvbHVtbiA9IGNvbHVtbkJ5dGVJbmRleCAqIDM7XG5cbiAgICAvLyBBY2NvdW50IGZvciBhbiBleHRyYSBzcGFjZS5cbiAgICBpZiAoY29sdW1uQnl0ZUluZGV4ID49IDQpIHtcbiAgICAgIGNvbHVtbiArPSAxO1xuICAgIH1cblxuICAgIHZlcnRpY2FsTWFya2VyTGVuZ3RoID0gMjtcbiAgICBsaW5lcyA9IG1hcChmdW5jdGlvbihieXRlTGluZSkge1xuICAgICAgcmV0dXJuIGJ5dGVMaW5lLmxlbmd0aCA8PSA0XG4gICAgICAgID8gYnl0ZUxpbmUuam9pbihcIiBcIilcbiAgICAgICAgOiBieXRlTGluZS5zbGljZSgwLCA0KS5qb2luKFwiIFwiKSArIFwiICBcIiArIGJ5dGVMaW5lLnNsaWNlKDQpLmpvaW4oXCIgXCIpO1xuICAgIH0sIGJ5dGVMaW5lcyk7XG4gICAgbGFzdExpbmVOdW1iZXJMYWJlbExlbmd0aCA9IChcbiAgICAgIChsaW5lUmFuZ2UudG8gPiAwID8gbGluZVJhbmdlLnRvIC0gMSA6IGxpbmVSYW5nZS50bykgKiA4XG4gICAgKS50b1N0cmluZygxNikubGVuZ3RoO1xuXG4gICAgaWYgKGxhc3RMaW5lTnVtYmVyTGFiZWxMZW5ndGggPCAyKSB7XG4gICAgICBsYXN0TGluZU51bWJlckxhYmVsTGVuZ3RoID0gMjtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdmFyIGlucHV0TGluZXMgPSBpbnB1dC5zcGxpdCgvXFxyXFxufFtcXG5cXHJcXHUyMDI4XFx1MjAyOV0vKTtcbiAgICBjb2x1bW4gPSBpbmRleC5jb2x1bW4gLSAxO1xuICAgIGxpbmVXaXRoRXJyb3JJbmRleCA9IGluZGV4LmxpbmUgLSAxO1xuICAgIGxpbmVSYW5nZSA9IHJhbmdlRnJvbUluZGV4QW5kT2Zmc2V0cyhcbiAgICAgIGxpbmVXaXRoRXJyb3JJbmRleCxcbiAgICAgIGxpbmVzQmVmb3JlU3RyaW5nRXJyb3IsXG4gICAgICBsaW5lc0FmdGVyU3RyaW5nRXJyb3IsXG4gICAgICBpbnB1dExpbmVzLmxlbmd0aFxuICAgICk7XG5cbiAgICBsaW5lcyA9IGlucHV0TGluZXMuc2xpY2UobGluZVJhbmdlLmZyb20sIGxpbmVSYW5nZS50byk7XG4gICAgbGFzdExpbmVOdW1iZXJMYWJlbExlbmd0aCA9IGxpbmVSYW5nZS50by50b1N0cmluZygpLmxlbmd0aDtcbiAgfVxuXG4gIHZhciBsaW5lV2l0aEVycm9yQ3VycmVudEluZGV4ID0gbGluZVdpdGhFcnJvckluZGV4IC0gbGluZVJhbmdlLmZyb207XG5cbiAgaWYgKGlzQnVmZmVyKGlucHV0KSkge1xuICAgIGxhc3RMaW5lTnVtYmVyTGFiZWxMZW5ndGggPSAoXG4gICAgICAobGluZVJhbmdlLnRvID4gMCA/IGxpbmVSYW5nZS50byAtIDEgOiBsaW5lUmFuZ2UudG8pICogOFxuICAgICkudG9TdHJpbmcoMTYpLmxlbmd0aDtcblxuICAgIGlmIChsYXN0TGluZU51bWJlckxhYmVsTGVuZ3RoIDwgMikge1xuICAgICAgbGFzdExpbmVOdW1iZXJMYWJlbExlbmd0aCA9IDI7XG4gICAgfVxuICB9XG5cbiAgdmFyIGxpbmVzV2l0aExpbmVOdW1iZXJzID0gcmVkdWNlKFxuICAgIGZ1bmN0aW9uKGFjYywgbGluZVNvdXJjZSwgaW5kZXgpIHtcbiAgICAgIHZhciBpc0xpbmVXaXRoRXJyb3IgPSBpbmRleCA9PT0gbGluZVdpdGhFcnJvckN1cnJlbnRJbmRleDtcbiAgICAgIHZhciBwcmVmaXggPSBpc0xpbmVXaXRoRXJyb3IgPyBcIj4gXCIgOiBkZWZhdWx0TGluZVByZWZpeDtcbiAgICAgIHZhciBsaW5lTnVtYmVyTGFiZWw7XG5cbiAgICAgIGlmIChpc0J1ZmZlcihpbnB1dCkpIHtcbiAgICAgICAgbGluZU51bWJlckxhYmVsID0gbGVmdFBhZChcbiAgICAgICAgICAoKGxpbmVSYW5nZS5mcm9tICsgaW5kZXgpICogOCkudG9TdHJpbmcoMTYpLFxuICAgICAgICAgIGxhc3RMaW5lTnVtYmVyTGFiZWxMZW5ndGgsXG4gICAgICAgICAgXCIwXCJcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxpbmVOdW1iZXJMYWJlbCA9IGxlZnRQYWQoXG4gICAgICAgICAgKGxpbmVSYW5nZS5mcm9tICsgaW5kZXggKyAxKS50b1N0cmluZygpLFxuICAgICAgICAgIGxhc3RMaW5lTnVtYmVyTGFiZWxMZW5ndGgsXG4gICAgICAgICAgXCIgXCJcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIFtdLmNvbmNhdChcbiAgICAgICAgYWNjLFxuICAgICAgICBbcHJlZml4ICsgbGluZU51bWJlckxhYmVsICsgXCIgfCBcIiArIGxpbmVTb3VyY2VdLFxuICAgICAgICBpc0xpbmVXaXRoRXJyb3JcbiAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgZGVmYXVsdExpbmVQcmVmaXggK1xuICAgICAgICAgICAgICAgIHJlcGVhdChcIiBcIiwgbGFzdExpbmVOdW1iZXJMYWJlbExlbmd0aCkgK1xuICAgICAgICAgICAgICAgIFwiIHwgXCIgK1xuICAgICAgICAgICAgICAgIGxlZnRQYWQoXCJcIiwgY29sdW1uLCBcIiBcIikgK1xuICAgICAgICAgICAgICAgIHJlcGVhdChcIl5cIiwgdmVydGljYWxNYXJrZXJMZW5ndGgpXG4gICAgICAgICAgICBdXG4gICAgICAgICAgOiBbXVxuICAgICAgKTtcbiAgICB9LFxuICAgIFtdLFxuICAgIGxpbmVzXG4gICk7XG5cbiAgcmV0dXJuIGxpbmVzV2l0aExpbmVOdW1iZXJzLmpvaW4oXCJcXG5cIik7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdEVycm9yKGlucHV0LCBlcnJvcikge1xuICByZXR1cm4gW1xuICAgIFwiXFxuXCIsXG4gICAgXCItLSBQQVJTSU5HIEZBSUxFRCBcIiArIHJlcGVhdChcIi1cIiwgNTApLFxuICAgIFwiXFxuXFxuXCIsXG4gICAgZm9ybWF0R290KGlucHV0LCBlcnJvciksXG4gICAgXCJcXG5cXG5cIixcbiAgICBmb3JtYXRFeHBlY3RlZChlcnJvci5leHBlY3RlZCksXG4gICAgXCJcXG5cIlxuICBdLmpvaW4oXCJcIik7XG59XG5cbmZ1bmN0aW9uIGZsYWdzKHJlKSB7XG4gIGlmIChyZS5mbGFncyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHJlLmZsYWdzO1xuICB9XG4gIC8vIGxlZ2FjeSBicm93c2VyIHN1cHBvcnRcbiAgcmV0dXJuIFtcbiAgICByZS5nbG9iYWwgPyBcImdcIiA6IFwiXCIsXG4gICAgcmUuaWdub3JlQ2FzZSA/IFwiaVwiIDogXCJcIixcbiAgICByZS5tdWx0aWxpbmUgPyBcIm1cIiA6IFwiXCIsXG4gICAgcmUudW5pY29kZSA/IFwidVwiIDogXCJcIixcbiAgICByZS5zdGlja3kgPyBcInlcIiA6IFwiXCJcbiAgXS5qb2luKFwiXCIpO1xufVxuXG5mdW5jdGlvbiBhbmNob3JlZFJlZ2V4cChyZSkge1xuICByZXR1cm4gUmVnRXhwKFwiXig/OlwiICsgcmUuc291cmNlICsgXCIpXCIsIGZsYWdzKHJlKSk7XG59XG5cbi8vIC0qLSBDb21iaW5hdG9ycyAtKi1cblxuZnVuY3Rpb24gc2VxKCkge1xuICB2YXIgcGFyc2VycyA9IFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtcbiAgdmFyIG51bVBhcnNlcnMgPSBwYXJzZXJzLmxlbmd0aDtcbiAgZm9yICh2YXIgaiA9IDA7IGogPCBudW1QYXJzZXJzOyBqICs9IDEpIHtcbiAgICBhc3NlcnRQYXJzZXIocGFyc2Vyc1tqXSk7XG4gIH1cbiAgcmV0dXJuIFBhcnNpbW1vbihmdW5jdGlvbihpbnB1dCwgaSkge1xuICAgIHZhciByZXN1bHQ7XG4gICAgdmFyIGFjY3VtID0gbmV3IEFycmF5KG51bVBhcnNlcnMpO1xuICAgIGZvciAodmFyIGogPSAwOyBqIDwgbnVtUGFyc2VyczsgaiArPSAxKSB7XG4gICAgICByZXN1bHQgPSBtZXJnZVJlcGxpZXMocGFyc2Vyc1tqXS5fKGlucHV0LCBpKSwgcmVzdWx0KTtcbiAgICAgIGlmICghcmVzdWx0LnN0YXR1cykge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgYWNjdW1bal0gPSByZXN1bHQudmFsdWU7XG4gICAgICBpID0gcmVzdWx0LmluZGV4O1xuICAgIH1cbiAgICByZXR1cm4gbWVyZ2VSZXBsaWVzKG1ha2VTdWNjZXNzKGksIGFjY3VtKSwgcmVzdWx0KTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHNlcU9iaigpIHtcbiAgdmFyIHNlZW5LZXlzID0ge307XG4gIHZhciB0b3RhbEtleXMgPSAwO1xuICB2YXIgcGFyc2VycyA9IHRvQXJyYXkoYXJndW1lbnRzKTtcbiAgdmFyIG51bVBhcnNlcnMgPSBwYXJzZXJzLmxlbmd0aDtcbiAgZm9yICh2YXIgaiA9IDA7IGogPCBudW1QYXJzZXJzOyBqICs9IDEpIHtcbiAgICB2YXIgcCA9IHBhcnNlcnNbal07XG4gICAgaWYgKGlzUGFyc2VyKHApKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaWYgKGlzQXJyYXkocCkpIHtcbiAgICAgIHZhciBpc1dlbGxGb3JtZWQgPVxuICAgICAgICBwLmxlbmd0aCA9PT0gMiAmJiB0eXBlb2YgcFswXSA9PT0gXCJzdHJpbmdcIiAmJiBpc1BhcnNlcihwWzFdKTtcbiAgICAgIGlmIChpc1dlbGxGb3JtZWQpIHtcbiAgICAgICAgdmFyIGtleSA9IHBbMF07XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc2VlbktleXMsIGtleSkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJzZXFPYmo6IGR1cGxpY2F0ZSBrZXkgXCIgKyBrZXkpO1xuICAgICAgICB9XG4gICAgICAgIHNlZW5LZXlzW2tleV0gPSB0cnVlO1xuICAgICAgICB0b3RhbEtleXMrKztcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIFwic2VxT2JqIGFyZ3VtZW50cyBtdXN0IGJlIHBhcnNlcnMgb3IgW3N0cmluZywgcGFyc2VyXSBhcnJheSBwYWlycy5cIlxuICAgICk7XG4gIH1cbiAgaWYgKHRvdGFsS2V5cyA9PT0gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcInNlcU9iaiBleHBlY3RzIGF0IGxlYXN0IG9uZSBuYW1lZCBwYXJzZXIsIGZvdW5kIHplcm9cIik7XG4gIH1cbiAgcmV0dXJuIFBhcnNpbW1vbihmdW5jdGlvbihpbnB1dCwgaSkge1xuICAgIHZhciByZXN1bHQ7XG4gICAgdmFyIGFjY3VtID0ge307XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBudW1QYXJzZXJzOyBqICs9IDEpIHtcbiAgICAgIHZhciBuYW1lO1xuICAgICAgdmFyIHBhcnNlcjtcbiAgICAgIGlmIChpc0FycmF5KHBhcnNlcnNbal0pKSB7XG4gICAgICAgIG5hbWUgPSBwYXJzZXJzW2pdWzBdO1xuICAgICAgICBwYXJzZXIgPSBwYXJzZXJzW2pdWzFdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbmFtZSA9IG51bGw7XG4gICAgICAgIHBhcnNlciA9IHBhcnNlcnNbal07XG4gICAgICB9XG4gICAgICByZXN1bHQgPSBtZXJnZVJlcGxpZXMocGFyc2VyLl8oaW5wdXQsIGkpLCByZXN1bHQpO1xuICAgICAgaWYgKCFyZXN1bHQuc3RhdHVzKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgICBpZiAobmFtZSkge1xuICAgICAgICBhY2N1bVtuYW1lXSA9IHJlc3VsdC52YWx1ZTtcbiAgICAgIH1cbiAgICAgIGkgPSByZXN1bHQuaW5kZXg7XG4gICAgfVxuICAgIHJldHVybiBtZXJnZVJlcGxpZXMobWFrZVN1Y2Nlc3MoaSwgYWNjdW0pLCByZXN1bHQpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gc2VxTWFwKCkge1xuICB2YXIgYXJncyA9IFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtcbiAgaWYgKGFyZ3MubGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwic2VxTWFwIG5lZWRzIGF0IGxlYXN0IG9uZSBhcmd1bWVudFwiKTtcbiAgfVxuICB2YXIgbWFwcGVyID0gYXJncy5wb3AoKTtcbiAgYXNzZXJ0RnVuY3Rpb24obWFwcGVyKTtcbiAgcmV0dXJuIHNlcS5hcHBseShudWxsLCBhcmdzKS5tYXAoZnVuY3Rpb24ocmVzdWx0cykge1xuICAgIHJldHVybiBtYXBwZXIuYXBwbHkobnVsbCwgcmVzdWx0cyk7XG4gIH0pO1xufVxuXG4vLyBUT0RPW0VTNV06IFJldmlzaXQgdGhpcyB3aXRoIE9iamVjdC5rZXlzIGFuZCAuYmluZC5cbmZ1bmN0aW9uIGNyZWF0ZUxhbmd1YWdlKHBhcnNlcnMpIHtcbiAgdmFyIGxhbmd1YWdlID0ge307XG4gIGZvciAodmFyIGtleSBpbiBwYXJzZXJzKSB7XG4gICAgaWYgKHt9Lmhhc093blByb3BlcnR5LmNhbGwocGFyc2Vycywga2V5KSkge1xuICAgICAgKGZ1bmN0aW9uKGtleSkge1xuICAgICAgICB2YXIgZnVuYyA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHJldHVybiBwYXJzZXJzW2tleV0obGFuZ3VhZ2UpO1xuICAgICAgICB9O1xuICAgICAgICBsYW5ndWFnZVtrZXldID0gbGF6eShmdW5jKTtcbiAgICAgIH0pKGtleSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBsYW5ndWFnZTtcbn1cblxuZnVuY3Rpb24gYWx0KCkge1xuICB2YXIgcGFyc2VycyA9IFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtcbiAgdmFyIG51bVBhcnNlcnMgPSBwYXJzZXJzLmxlbmd0aDtcbiAgaWYgKG51bVBhcnNlcnMgPT09IDApIHtcbiAgICByZXR1cm4gZmFpbChcInplcm8gYWx0ZXJuYXRlc1wiKTtcbiAgfVxuICBmb3IgKHZhciBqID0gMDsgaiA8IG51bVBhcnNlcnM7IGogKz0gMSkge1xuICAgIGFzc2VydFBhcnNlcihwYXJzZXJzW2pdKTtcbiAgfVxuICByZXR1cm4gUGFyc2ltbW9uKGZ1bmN0aW9uKGlucHV0LCBpKSB7XG4gICAgdmFyIHJlc3VsdDtcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IHBhcnNlcnMubGVuZ3RoOyBqICs9IDEpIHtcbiAgICAgIHJlc3VsdCA9IG1lcmdlUmVwbGllcyhwYXJzZXJzW2pdLl8oaW5wdXQsIGkpLCByZXN1bHQpO1xuICAgICAgaWYgKHJlc3VsdC5zdGF0dXMpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHNlcEJ5KHBhcnNlciwgc2VwYXJhdG9yKSB7XG4gIC8vIEFyZ3VtZW50IGFzc2VydGVkIGJ5IHNlcEJ5MVxuICByZXR1cm4gc2VwQnkxKHBhcnNlciwgc2VwYXJhdG9yKS5vcihzdWNjZWVkKFtdKSk7XG59XG5cbmZ1bmN0aW9uIHNlcEJ5MShwYXJzZXIsIHNlcGFyYXRvcikge1xuICBhc3NlcnRQYXJzZXIocGFyc2VyKTtcbiAgYXNzZXJ0UGFyc2VyKHNlcGFyYXRvcik7XG4gIHZhciBwYWlycyA9IHNlcGFyYXRvci50aGVuKHBhcnNlcikubWFueSgpO1xuICByZXR1cm4gc2VxTWFwKHBhcnNlciwgcGFpcnMsIGZ1bmN0aW9uKHIsIHJzKSB7XG4gICAgcmV0dXJuIFtyXS5jb25jYXQocnMpO1xuICB9KTtcbn1cblxuLy8gLSotIENvcmUgUGFyc2luZyBNZXRob2RzIC0qLVxuXG5fLnBhcnNlID0gZnVuY3Rpb24oaW5wdXQpIHtcbiAgaWYgKHR5cGVvZiBpbnB1dCAhPT0gXCJzdHJpbmdcIiAmJiAhaXNCdWZmZXIoaW5wdXQpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgXCIucGFyc2UgbXVzdCBiZSBjYWxsZWQgd2l0aCBhIHN0cmluZyBvciBCdWZmZXIgYXMgaXRzIGFyZ3VtZW50XCJcbiAgICApO1xuICB9XG4gIHZhciBwYXJzZVJlc3VsdCA9IHRoaXMuc2tpcChlb2YpLl8oaW5wdXQsIDApO1xuXG4gIHZhciByZXN1bHQ7XG4gIGlmIChwYXJzZVJlc3VsdC5zdGF0dXMpIHtcbiAgICByZXN1bHQgPSB7XG4gICAgICBzdGF0dXM6IHRydWUsXG4gICAgICB2YWx1ZTogcGFyc2VSZXN1bHQudmFsdWVcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIHJlc3VsdCA9IHtcbiAgICAgIHN0YXR1czogZmFsc2UsXG4gICAgICBpbmRleDogbWFrZUxpbmVDb2x1bW5JbmRleChpbnB1dCwgcGFyc2VSZXN1bHQuZnVydGhlc3QpLFxuICAgICAgZXhwZWN0ZWQ6IHBhcnNlUmVzdWx0LmV4cGVjdGVkXG4gICAgfTtcbiAgfVxuXG4gIC8vIHJlbGVhc2UgbWVtb3J5IGZyb20gbGluZUNvbHVtbkluZGV4IG5vdyB3ZSBhcmUgZG9uZSBwYXJzaW5nXG4gIGRlbGV0ZSBsaW5lQ29sdW1uSW5kZXhbaW5wdXRdO1xuXG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG4vLyAtKi0gT3RoZXIgTWV0aG9kcyAtKi1cblxuXy50cnlQYXJzZSA9IGZ1bmN0aW9uKHN0cikge1xuICB2YXIgcmVzdWx0ID0gdGhpcy5wYXJzZShzdHIpO1xuICBpZiAocmVzdWx0LnN0YXR1cykge1xuICAgIHJldHVybiByZXN1bHQudmFsdWU7XG4gIH0gZWxzZSB7XG4gICAgdmFyIG1zZyA9IGZvcm1hdEVycm9yKHN0ciwgcmVzdWx0KTtcbiAgICB2YXIgZXJyID0gbmV3IEVycm9yKG1zZyk7XG4gICAgZXJyLnR5cGUgPSBcIlBhcnNpbW1vbkVycm9yXCI7XG4gICAgZXJyLnJlc3VsdCA9IHJlc3VsdDtcbiAgICB0aHJvdyBlcnI7XG4gIH1cbn07XG5cbl8uYXNzZXJ0ID0gZnVuY3Rpb24oY29uZGl0aW9uLCBlcnJvck1lc3NhZ2UpIHtcbiAgcmV0dXJuIHRoaXMuY2hhaW4oZnVuY3Rpb24odmFsdWUpIHtcbiAgICByZXR1cm4gY29uZGl0aW9uKHZhbHVlKSA/IHN1Y2NlZWQodmFsdWUpIDogZmFpbChlcnJvck1lc3NhZ2UpO1xuICB9KTtcbn07XG5cbl8ub3IgPSBmdW5jdGlvbihhbHRlcm5hdGl2ZSkge1xuICByZXR1cm4gYWx0KHRoaXMsIGFsdGVybmF0aXZlKTtcbn07XG5cbl8udHJpbSA9IGZ1bmN0aW9uKHBhcnNlcikge1xuICByZXR1cm4gdGhpcy53cmFwKHBhcnNlciwgcGFyc2VyKTtcbn07XG5cbl8ud3JhcCA9IGZ1bmN0aW9uKGxlZnRQYXJzZXIsIHJpZ2h0UGFyc2VyKSB7XG4gIHJldHVybiBzZXFNYXAobGVmdFBhcnNlciwgdGhpcywgcmlnaHRQYXJzZXIsIGZ1bmN0aW9uKGxlZnQsIG1pZGRsZSkge1xuICAgIHJldHVybiBtaWRkbGU7XG4gIH0pO1xufTtcblxuXy50aHJ1ID0gZnVuY3Rpb24od3JhcHBlcikge1xuICByZXR1cm4gd3JhcHBlcih0aGlzKTtcbn07XG5cbl8udGhlbiA9IGZ1bmN0aW9uKG5leHQpIHtcbiAgYXNzZXJ0UGFyc2VyKG5leHQpO1xuICByZXR1cm4gc2VxKHRoaXMsIG5leHQpLm1hcChmdW5jdGlvbihyZXN1bHRzKSB7XG4gICAgcmV0dXJuIHJlc3VsdHNbMV07XG4gIH0pO1xufTtcblxuXy5tYW55ID0gZnVuY3Rpb24oKSB7XG4gIHZhciBzZWxmID0gdGhpcztcblxuICByZXR1cm4gUGFyc2ltbW9uKGZ1bmN0aW9uKGlucHV0LCBpKSB7XG4gICAgdmFyIGFjY3VtID0gW107XG4gICAgdmFyIHJlc3VsdCA9IHVuZGVmaW5lZDtcblxuICAgIGZvciAoOzspIHtcbiAgICAgIHJlc3VsdCA9IG1lcmdlUmVwbGllcyhzZWxmLl8oaW5wdXQsIGkpLCByZXN1bHQpO1xuICAgICAgaWYgKHJlc3VsdC5zdGF0dXMpIHtcbiAgICAgICAgaWYgKGkgPT09IHJlc3VsdC5pbmRleCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIFwiaW5maW5pdGUgbG9vcCBkZXRlY3RlZCBpbiAubWFueSgpIHBhcnNlciAtLS0gY2FsbGluZyAubWFueSgpIG9uIFwiICtcbiAgICAgICAgICAgICAgXCJhIHBhcnNlciB3aGljaCBjYW4gYWNjZXB0IHplcm8gY2hhcmFjdGVycyBpcyB1c3VhbGx5IHRoZSBjYXVzZVwiXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBpID0gcmVzdWx0LmluZGV4O1xuICAgICAgICBhY2N1bS5wdXNoKHJlc3VsdC52YWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbWVyZ2VSZXBsaWVzKG1ha2VTdWNjZXNzKGksIGFjY3VtKSwgcmVzdWx0KTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xufTtcblxuXy50aWVXaXRoID0gZnVuY3Rpb24oc2VwYXJhdG9yKSB7XG4gIGFzc2VydFN0cmluZyhzZXBhcmF0b3IpO1xuICByZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oYXJncykge1xuICAgIGFzc2VydEFycmF5KGFyZ3MpO1xuICAgIGlmIChhcmdzLmxlbmd0aCkge1xuICAgICAgYXNzZXJ0U3RyaW5nKGFyZ3NbMF0pO1xuICAgICAgdmFyIHMgPSBhcmdzWzBdO1xuICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGFzc2VydFN0cmluZyhhcmdzW2ldKTtcbiAgICAgICAgcyArPSBzZXBhcmF0b3IgKyBhcmdzW2ldO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cbiAgfSk7XG59O1xuXG5fLnRpZSA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy50aWVXaXRoKFwiXCIpO1xufTtcblxuXy50aW1lcyA9IGZ1bmN0aW9uKG1pbiwgbWF4KSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAyKSB7XG4gICAgbWF4ID0gbWluO1xuICB9XG4gIGFzc2VydE51bWJlcihtaW4pO1xuICBhc3NlcnROdW1iZXIobWF4KTtcbiAgcmV0dXJuIFBhcnNpbW1vbihmdW5jdGlvbihpbnB1dCwgaSkge1xuICAgIHZhciBhY2N1bSA9IFtdO1xuICAgIHZhciByZXN1bHQgPSB1bmRlZmluZWQ7XG4gICAgdmFyIHByZXZSZXN1bHQgPSB1bmRlZmluZWQ7XG4gICAgZm9yICh2YXIgdGltZXMgPSAwOyB0aW1lcyA8IG1pbjsgdGltZXMgKz0gMSkge1xuICAgICAgcmVzdWx0ID0gc2VsZi5fKGlucHV0LCBpKTtcbiAgICAgIHByZXZSZXN1bHQgPSBtZXJnZVJlcGxpZXMocmVzdWx0LCBwcmV2UmVzdWx0KTtcbiAgICAgIGlmIChyZXN1bHQuc3RhdHVzKSB7XG4gICAgICAgIGkgPSByZXN1bHQuaW5kZXg7XG4gICAgICAgIGFjY3VtLnB1c2gocmVzdWx0LnZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBwcmV2UmVzdWx0O1xuICAgICAgfVxuICAgIH1cbiAgICBmb3IgKDsgdGltZXMgPCBtYXg7IHRpbWVzICs9IDEpIHtcbiAgICAgIHJlc3VsdCA9IHNlbGYuXyhpbnB1dCwgaSk7XG4gICAgICBwcmV2UmVzdWx0ID0gbWVyZ2VSZXBsaWVzKHJlc3VsdCwgcHJldlJlc3VsdCk7XG4gICAgICBpZiAocmVzdWx0LnN0YXR1cykge1xuICAgICAgICBpID0gcmVzdWx0LmluZGV4O1xuICAgICAgICBhY2N1bS5wdXNoKHJlc3VsdC52YWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1lcmdlUmVwbGllcyhtYWtlU3VjY2VzcyhpLCBhY2N1bSksIHByZXZSZXN1bHQpO1xuICB9KTtcbn07XG5cbl8ucmVzdWx0ID0gZnVuY3Rpb24ocmVzKSB7XG4gIHJldHVybiB0aGlzLm1hcChmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gcmVzO1xuICB9KTtcbn07XG5cbl8uYXRNb3N0ID0gZnVuY3Rpb24obikge1xuICByZXR1cm4gdGhpcy50aW1lcygwLCBuKTtcbn07XG5cbl8uYXRMZWFzdCA9IGZ1bmN0aW9uKG4pIHtcbiAgcmV0dXJuIHNlcU1hcCh0aGlzLnRpbWVzKG4pLCB0aGlzLm1hbnkoKSwgZnVuY3Rpb24oaW5pdCwgcmVzdCkge1xuICAgIHJldHVybiBpbml0LmNvbmNhdChyZXN0KTtcbiAgfSk7XG59O1xuXG5fLm1hcCA9IGZ1bmN0aW9uKGZuKSB7XG4gIGFzc2VydEZ1bmN0aW9uKGZuKTtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICByZXR1cm4gUGFyc2ltbW9uKGZ1bmN0aW9uKGlucHV0LCBpKSB7XG4gICAgdmFyIHJlc3VsdCA9IHNlbGYuXyhpbnB1dCwgaSk7XG4gICAgaWYgKCFyZXN1bHQuc3RhdHVzKSB7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICByZXR1cm4gbWVyZ2VSZXBsaWVzKG1ha2VTdWNjZXNzKHJlc3VsdC5pbmRleCwgZm4ocmVzdWx0LnZhbHVlKSksIHJlc3VsdCk7XG4gIH0pO1xufTtcblxuXy5jb250cmFtYXAgPSBmdW5jdGlvbihmbikge1xuICBhc3NlcnRGdW5jdGlvbihmbik7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgcmV0dXJuIFBhcnNpbW1vbihmdW5jdGlvbihpbnB1dCwgaSkge1xuICAgIHZhciByZXN1bHQgPSBzZWxmLnBhcnNlKGZuKGlucHV0LnNsaWNlKGkpKSk7XG4gICAgaWYgKCFyZXN1bHQuc3RhdHVzKSB7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICByZXR1cm4gbWFrZVN1Y2Nlc3MoaSArIGlucHV0Lmxlbmd0aCwgcmVzdWx0LnZhbHVlKTtcbiAgfSk7XG59O1xuXG5fLnByb21hcCA9IGZ1bmN0aW9uKGYsIGcpIHtcbiAgYXNzZXJ0RnVuY3Rpb24oZik7XG4gIGFzc2VydEZ1bmN0aW9uKGcpO1xuICByZXR1cm4gdGhpcy5jb250cmFtYXAoZikubWFwKGcpO1xufTtcblxuXy5za2lwID0gZnVuY3Rpb24obmV4dCkge1xuICByZXR1cm4gc2VxKHRoaXMsIG5leHQpLm1hcChmdW5jdGlvbihyZXN1bHRzKSB7XG4gICAgcmV0dXJuIHJlc3VsdHNbMF07XG4gIH0pO1xufTtcblxuXy5tYXJrID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiBzZXFNYXAoaW5kZXgsIHRoaXMsIGluZGV4LCBmdW5jdGlvbihzdGFydCwgdmFsdWUsIGVuZCkge1xuICAgIHJldHVybiB7XG4gICAgICBzdGFydDogc3RhcnQsXG4gICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICBlbmQ6IGVuZFxuICAgIH07XG4gIH0pO1xufTtcblxuXy5ub2RlID0gZnVuY3Rpb24obmFtZSkge1xuICByZXR1cm4gc2VxTWFwKGluZGV4LCB0aGlzLCBpbmRleCwgZnVuY3Rpb24oc3RhcnQsIHZhbHVlLCBlbmQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogbmFtZSxcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgIHN0YXJ0OiBzdGFydCxcbiAgICAgIGVuZDogZW5kXG4gICAgfTtcbiAgfSk7XG59O1xuXG5fLnNlcEJ5ID0gZnVuY3Rpb24oc2VwYXJhdG9yKSB7XG4gIHJldHVybiBzZXBCeSh0aGlzLCBzZXBhcmF0b3IpO1xufTtcblxuXy5zZXBCeTEgPSBmdW5jdGlvbihzZXBhcmF0b3IpIHtcbiAgcmV0dXJuIHNlcEJ5MSh0aGlzLCBzZXBhcmF0b3IpO1xufTtcblxuXy5sb29rYWhlYWQgPSBmdW5jdGlvbih4KSB7XG4gIHJldHVybiB0aGlzLnNraXAobG9va2FoZWFkKHgpKTtcbn07XG5cbl8ubm90Rm9sbG93ZWRCeSA9IGZ1bmN0aW9uKHgpIHtcbiAgcmV0dXJuIHRoaXMuc2tpcChub3RGb2xsb3dlZEJ5KHgpKTtcbn07XG5cbl8uZGVzYyA9IGZ1bmN0aW9uKGV4cGVjdGVkKSB7XG4gIGlmICghaXNBcnJheShleHBlY3RlZCkpIHtcbiAgICBleHBlY3RlZCA9IFtleHBlY3RlZF07XG4gIH1cbiAgdmFyIHNlbGYgPSB0aGlzO1xuICByZXR1cm4gUGFyc2ltbW9uKGZ1bmN0aW9uKGlucHV0LCBpKSB7XG4gICAgdmFyIHJlcGx5ID0gc2VsZi5fKGlucHV0LCBpKTtcbiAgICBpZiAoIXJlcGx5LnN0YXR1cykge1xuICAgICAgcmVwbHkuZXhwZWN0ZWQgPSBleHBlY3RlZDtcbiAgICB9XG4gICAgcmV0dXJuIHJlcGx5O1xuICB9KTtcbn07XG5cbl8uZmFsbGJhY2sgPSBmdW5jdGlvbihyZXN1bHQpIHtcbiAgcmV0dXJuIHRoaXMub3Ioc3VjY2VlZChyZXN1bHQpKTtcbn07XG5cbl8uYXAgPSBmdW5jdGlvbihvdGhlcikge1xuICByZXR1cm4gc2VxTWFwKG90aGVyLCB0aGlzLCBmdW5jdGlvbihmLCB4KSB7XG4gICAgcmV0dXJuIGYoeCk7XG4gIH0pO1xufTtcblxuXy5jaGFpbiA9IGZ1bmN0aW9uKGYpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICByZXR1cm4gUGFyc2ltbW9uKGZ1bmN0aW9uKGlucHV0LCBpKSB7XG4gICAgdmFyIHJlc3VsdCA9IHNlbGYuXyhpbnB1dCwgaSk7XG4gICAgaWYgKCFyZXN1bHQuc3RhdHVzKSB7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICB2YXIgbmV4dFBhcnNlciA9IGYocmVzdWx0LnZhbHVlKTtcbiAgICByZXR1cm4gbWVyZ2VSZXBsaWVzKG5leHRQYXJzZXIuXyhpbnB1dCwgcmVzdWx0LmluZGV4KSwgcmVzdWx0KTtcbiAgfSk7XG59O1xuXG4vLyAtKi0gQ29uc3RydWN0b3JzIC0qLVxuXG5mdW5jdGlvbiBzdHJpbmcoc3RyKSB7XG4gIGFzc2VydFN0cmluZyhzdHIpO1xuICB2YXIgZXhwZWN0ZWQgPSBcIidcIiArIHN0ciArIFwiJ1wiO1xuICByZXR1cm4gUGFyc2ltbW9uKGZ1bmN0aW9uKGlucHV0LCBpKSB7XG4gICAgdmFyIGogPSBpICsgc3RyLmxlbmd0aDtcbiAgICB2YXIgaGVhZCA9IGlucHV0LnNsaWNlKGksIGopO1xuICAgIGlmIChoZWFkID09PSBzdHIpIHtcbiAgICAgIHJldHVybiBtYWtlU3VjY2VzcyhqLCBoZWFkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG1ha2VGYWlsdXJlKGksIGV4cGVjdGVkKTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBieXRlKGIpIHtcbiAgZW5zdXJlQnVmZmVyKCk7XG4gIGFzc2VydE51bWJlcihiKTtcbiAgaWYgKGIgPiAweGZmKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgXCJWYWx1ZSBzcGVjaWZpZWQgdG8gYnl0ZSBjb25zdHJ1Y3RvciAoXCIgK1xuICAgICAgICBiICtcbiAgICAgICAgXCI9MHhcIiArXG4gICAgICAgIGIudG9TdHJpbmcoMTYpICtcbiAgICAgICAgXCIpIGlzIGxhcmdlciBpbiB2YWx1ZSB0aGFuIGEgc2luZ2xlIGJ5dGUuXCJcbiAgICApO1xuICB9XG4gIHZhciBleHBlY3RlZCA9IChiID4gMHhmID8gXCIweFwiIDogXCIweDBcIikgKyBiLnRvU3RyaW5nKDE2KTtcbiAgcmV0dXJuIFBhcnNpbW1vbihmdW5jdGlvbihpbnB1dCwgaSkge1xuICAgIHZhciBoZWFkID0gZ2V0KGlucHV0LCBpKTtcbiAgICBpZiAoaGVhZCA9PT0gYikge1xuICAgICAgcmV0dXJuIG1ha2VTdWNjZXNzKGkgKyAxLCBoZWFkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG1ha2VGYWlsdXJlKGksIGV4cGVjdGVkKTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiByZWdleHAocmUsIGdyb3VwKSB7XG4gIGFzc2VydFJlZ2V4cChyZSk7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID49IDIpIHtcbiAgICBhc3NlcnROdW1iZXIoZ3JvdXApO1xuICB9IGVsc2Uge1xuICAgIGdyb3VwID0gMDtcbiAgfVxuICB2YXIgYW5jaG9yZWQgPSBhbmNob3JlZFJlZ2V4cChyZSk7XG4gIHZhciBleHBlY3RlZCA9IFwiXCIgKyByZTtcbiAgcmV0dXJuIFBhcnNpbW1vbihmdW5jdGlvbihpbnB1dCwgaSkge1xuICAgIHZhciBtYXRjaCA9IGFuY2hvcmVkLmV4ZWMoaW5wdXQuc2xpY2UoaSkpO1xuICAgIGlmIChtYXRjaCkge1xuICAgICAgaWYgKDAgPD0gZ3JvdXAgJiYgZ3JvdXAgPD0gbWF0Y2gubGVuZ3RoKSB7XG4gICAgICAgIHZhciBmdWxsTWF0Y2ggPSBtYXRjaFswXTtcbiAgICAgICAgdmFyIGdyb3VwTWF0Y2ggPSBtYXRjaFtncm91cF07XG4gICAgICAgIHJldHVybiBtYWtlU3VjY2VzcyhpICsgZnVsbE1hdGNoLmxlbmd0aCwgZ3JvdXBNYXRjaCk7XG4gICAgICB9XG4gICAgICB2YXIgbWVzc2FnZSA9XG4gICAgICAgIFwidmFsaWQgbWF0Y2ggZ3JvdXAgKDAgdG8gXCIgKyBtYXRjaC5sZW5ndGggKyBcIikgaW4gXCIgKyBleHBlY3RlZDtcbiAgICAgIHJldHVybiBtYWtlRmFpbHVyZShpLCBtZXNzYWdlKTtcbiAgICB9XG4gICAgcmV0dXJuIG1ha2VGYWlsdXJlKGksIGV4cGVjdGVkKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHN1Y2NlZWQodmFsdWUpIHtcbiAgcmV0dXJuIFBhcnNpbW1vbihmdW5jdGlvbihpbnB1dCwgaSkge1xuICAgIHJldHVybiBtYWtlU3VjY2VzcyhpLCB2YWx1ZSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBmYWlsKGV4cGVjdGVkKSB7XG4gIHJldHVybiBQYXJzaW1tb24oZnVuY3Rpb24oaW5wdXQsIGkpIHtcbiAgICByZXR1cm4gbWFrZUZhaWx1cmUoaSwgZXhwZWN0ZWQpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gbG9va2FoZWFkKHgpIHtcbiAgaWYgKGlzUGFyc2VyKHgpKSB7XG4gICAgcmV0dXJuIFBhcnNpbW1vbihmdW5jdGlvbihpbnB1dCwgaSkge1xuICAgICAgdmFyIHJlc3VsdCA9IHguXyhpbnB1dCwgaSk7XG4gICAgICByZXN1bHQuaW5kZXggPSBpO1xuICAgICAgcmVzdWx0LnZhbHVlID0gXCJcIjtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIHggPT09IFwic3RyaW5nXCIpIHtcbiAgICByZXR1cm4gbG9va2FoZWFkKHN0cmluZyh4KSk7XG4gIH0gZWxzZSBpZiAoeCBpbnN0YW5jZW9mIFJlZ0V4cCkge1xuICAgIHJldHVybiBsb29rYWhlYWQocmVnZXhwKHgpKTtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoXCJub3QgYSBzdHJpbmcsIHJlZ2V4cCwgb3IgcGFyc2VyOiBcIiArIHgpO1xufVxuXG5mdW5jdGlvbiBub3RGb2xsb3dlZEJ5KHBhcnNlcikge1xuICBhc3NlcnRQYXJzZXIocGFyc2VyKTtcbiAgcmV0dXJuIFBhcnNpbW1vbihmdW5jdGlvbihpbnB1dCwgaSkge1xuICAgIHZhciByZXN1bHQgPSBwYXJzZXIuXyhpbnB1dCwgaSk7XG4gICAgdmFyIHRleHQgPSBpbnB1dC5zbGljZShpLCByZXN1bHQuaW5kZXgpO1xuICAgIHJldHVybiByZXN1bHQuc3RhdHVzXG4gICAgICA/IG1ha2VGYWlsdXJlKGksICdub3QgXCInICsgdGV4dCArICdcIicpXG4gICAgICA6IG1ha2VTdWNjZXNzKGksIG51bGwpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gdGVzdChwcmVkaWNhdGUpIHtcbiAgYXNzZXJ0RnVuY3Rpb24ocHJlZGljYXRlKTtcbiAgcmV0dXJuIFBhcnNpbW1vbihmdW5jdGlvbihpbnB1dCwgaSkge1xuICAgIHZhciBjaGFyID0gZ2V0KGlucHV0LCBpKTtcbiAgICBpZiAoaSA8IGlucHV0Lmxlbmd0aCAmJiBwcmVkaWNhdGUoY2hhcikpIHtcbiAgICAgIHJldHVybiBtYWtlU3VjY2VzcyhpICsgMSwgY2hhcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBtYWtlRmFpbHVyZShpLCBcImEgY2hhcmFjdGVyL2J5dGUgbWF0Y2hpbmcgXCIgKyBwcmVkaWNhdGUpO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIG9uZU9mKHN0cikge1xuICB2YXIgZXhwZWN0ZWQgPSBzdHIuc3BsaXQoXCJcIik7XG4gIGZvciAodmFyIGlkeCA9IDA7IGlkeCA8IGV4cGVjdGVkLmxlbmd0aDsgaWR4KyspIHtcbiAgICBleHBlY3RlZFtpZHhdID0gXCInXCIgKyBleHBlY3RlZFtpZHhdICsgXCInXCI7XG4gIH1cbiAgcmV0dXJuIHRlc3QoZnVuY3Rpb24oY2gpIHtcbiAgICByZXR1cm4gc3RyLmluZGV4T2YoY2gpID49IDA7XG4gIH0pLmRlc2MoZXhwZWN0ZWQpO1xufVxuXG5mdW5jdGlvbiBub25lT2Yoc3RyKSB7XG4gIHJldHVybiB0ZXN0KGZ1bmN0aW9uKGNoKSB7XG4gICAgcmV0dXJuIHN0ci5pbmRleE9mKGNoKSA8IDA7XG4gIH0pLmRlc2MoXCJub25lIG9mICdcIiArIHN0ciArIFwiJ1wiKTtcbn1cblxuZnVuY3Rpb24gY3VzdG9tKHBhcnNpbmdGdW5jdGlvbikge1xuICByZXR1cm4gUGFyc2ltbW9uKHBhcnNpbmdGdW5jdGlvbihtYWtlU3VjY2VzcywgbWFrZUZhaWx1cmUpKTtcbn1cblxuLy8gVE9ET1tFUzVdOiBJbXByb3ZlIGVycm9yIG1lc3NhZ2UgdXNpbmcgSlNPTi5zdHJpbmdpZnkgZXZlbnR1YWxseS5cbmZ1bmN0aW9uIHJhbmdlKGJlZ2luLCBlbmQpIHtcbiAgcmV0dXJuIHRlc3QoZnVuY3Rpb24oY2gpIHtcbiAgICByZXR1cm4gYmVnaW4gPD0gY2ggJiYgY2ggPD0gZW5kO1xuICB9KS5kZXNjKGJlZ2luICsgXCItXCIgKyBlbmQpO1xufVxuXG5mdW5jdGlvbiB0YWtlV2hpbGUocHJlZGljYXRlKSB7XG4gIGFzc2VydEZ1bmN0aW9uKHByZWRpY2F0ZSk7XG5cbiAgcmV0dXJuIFBhcnNpbW1vbihmdW5jdGlvbihpbnB1dCwgaSkge1xuICAgIHZhciBqID0gaTtcbiAgICB3aGlsZSAoaiA8IGlucHV0Lmxlbmd0aCAmJiBwcmVkaWNhdGUoZ2V0KGlucHV0LCBqKSkpIHtcbiAgICAgIGorKztcbiAgICB9XG4gICAgcmV0dXJuIG1ha2VTdWNjZXNzKGosIGlucHV0LnNsaWNlKGksIGopKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGxhenkoZGVzYywgZikge1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8IDIpIHtcbiAgICBmID0gZGVzYztcbiAgICBkZXNjID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgdmFyIHBhcnNlciA9IFBhcnNpbW1vbihmdW5jdGlvbihpbnB1dCwgaSkge1xuICAgIHBhcnNlci5fID0gZigpLl87XG4gICAgcmV0dXJuIHBhcnNlci5fKGlucHV0LCBpKTtcbiAgfSk7XG5cbiAgaWYgKGRlc2MpIHtcbiAgICByZXR1cm4gcGFyc2VyLmRlc2MoZGVzYyk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHBhcnNlcjtcbiAgfVxufVxuXG4vLyAtKi0gRmFudGFzeSBMYW5kIEV4dHJhcyAtKi1cblxuZnVuY3Rpb24gZW1wdHkoKSB7XG4gIHJldHVybiBmYWlsKFwiZmFudGFzeS1sYW5kL2VtcHR5XCIpO1xufVxuXG5fLmNvbmNhdCA9IF8ub3I7XG5fLmVtcHR5ID0gZW1wdHk7XG5fLm9mID0gc3VjY2VlZDtcbl9bXCJmYW50YXN5LWxhbmQvYXBcIl0gPSBfLmFwO1xuX1tcImZhbnRhc3ktbGFuZC9jaGFpblwiXSA9IF8uY2hhaW47XG5fW1wiZmFudGFzeS1sYW5kL2NvbmNhdFwiXSA9IF8uY29uY2F0O1xuX1tcImZhbnRhc3ktbGFuZC9lbXB0eVwiXSA9IF8uZW1wdHk7XG5fW1wiZmFudGFzeS1sYW5kL29mXCJdID0gXy5vZjtcbl9bXCJmYW50YXN5LWxhbmQvbWFwXCJdID0gXy5tYXA7XG5cbi8vIC0qLSBCYXNlIFBhcnNlcnMgLSotXG5cbnZhciBpbmRleCA9IFBhcnNpbW1vbihmdW5jdGlvbihpbnB1dCwgaSkge1xuICByZXR1cm4gbWFrZVN1Y2Nlc3MoaSwgbWFrZUxpbmVDb2x1bW5JbmRleChpbnB1dCwgaSkpO1xufSk7XG5cbnZhciBhbnkgPSBQYXJzaW1tb24oZnVuY3Rpb24oaW5wdXQsIGkpIHtcbiAgaWYgKGkgPj0gaW5wdXQubGVuZ3RoKSB7XG4gICAgcmV0dXJuIG1ha2VGYWlsdXJlKGksIFwiYW55IGNoYXJhY3Rlci9ieXRlXCIpO1xuICB9XG4gIHJldHVybiBtYWtlU3VjY2VzcyhpICsgMSwgZ2V0KGlucHV0LCBpKSk7XG59KTtcblxudmFyIGFsbCA9IFBhcnNpbW1vbihmdW5jdGlvbihpbnB1dCwgaSkge1xuICByZXR1cm4gbWFrZVN1Y2Nlc3MoaW5wdXQubGVuZ3RoLCBpbnB1dC5zbGljZShpKSk7XG59KTtcblxudmFyIGVvZiA9IFBhcnNpbW1vbihmdW5jdGlvbihpbnB1dCwgaSkge1xuICBpZiAoaSA8IGlucHV0Lmxlbmd0aCkge1xuICAgIHJldHVybiBtYWtlRmFpbHVyZShpLCBcIkVPRlwiKTtcbiAgfVxuICByZXR1cm4gbWFrZVN1Y2Nlc3MoaSwgbnVsbCk7XG59KTtcblxudmFyIGRpZ2l0ID0gcmVnZXhwKC9bMC05XS8pLmRlc2MoXCJhIGRpZ2l0XCIpO1xudmFyIGRpZ2l0cyA9IHJlZ2V4cCgvWzAtOV0qLykuZGVzYyhcIm9wdGlvbmFsIGRpZ2l0c1wiKTtcbnZhciBsZXR0ZXIgPSByZWdleHAoL1thLXpdL2kpLmRlc2MoXCJhIGxldHRlclwiKTtcbnZhciBsZXR0ZXJzID0gcmVnZXhwKC9bYS16XSovaSkuZGVzYyhcIm9wdGlvbmFsIGxldHRlcnNcIik7XG52YXIgb3B0V2hpdGVzcGFjZSA9IHJlZ2V4cCgvXFxzKi8pLmRlc2MoXCJvcHRpb25hbCB3aGl0ZXNwYWNlXCIpO1xudmFyIHdoaXRlc3BhY2UgPSByZWdleHAoL1xccysvKS5kZXNjKFwid2hpdGVzcGFjZVwiKTtcbnZhciBjciA9IHN0cmluZyhcIlxcclwiKTtcbnZhciBsZiA9IHN0cmluZyhcIlxcblwiKTtcbnZhciBjcmxmID0gc3RyaW5nKFwiXFxyXFxuXCIpO1xudmFyIG5ld2xpbmUgPSBhbHQoY3JsZiwgbGYsIGNyKS5kZXNjKFwibmV3bGluZVwiKTtcbnZhciBlbmQgPSBhbHQobmV3bGluZSwgZW9mKTtcblxuUGFyc2ltbW9uLmFsbCA9IGFsbDtcblBhcnNpbW1vbi5hbHQgPSBhbHQ7XG5QYXJzaW1tb24uYW55ID0gYW55O1xuUGFyc2ltbW9uLmNyID0gY3I7XG5QYXJzaW1tb24uY3JlYXRlTGFuZ3VhZ2UgPSBjcmVhdGVMYW5ndWFnZTtcblBhcnNpbW1vbi5jcmxmID0gY3JsZjtcblBhcnNpbW1vbi5jdXN0b20gPSBjdXN0b207XG5QYXJzaW1tb24uZGlnaXQgPSBkaWdpdDtcblBhcnNpbW1vbi5kaWdpdHMgPSBkaWdpdHM7XG5QYXJzaW1tb24uZW1wdHkgPSBlbXB0eTtcblBhcnNpbW1vbi5lbmQgPSBlbmQ7XG5QYXJzaW1tb24uZW9mID0gZW9mO1xuUGFyc2ltbW9uLmZhaWwgPSBmYWlsO1xuUGFyc2ltbW9uLmZvcm1hdEVycm9yID0gZm9ybWF0RXJyb3I7XG5QYXJzaW1tb24uaW5kZXggPSBpbmRleDtcblBhcnNpbW1vbi5pc1BhcnNlciA9IGlzUGFyc2VyO1xuUGFyc2ltbW9uLmxhenkgPSBsYXp5O1xuUGFyc2ltbW9uLmxldHRlciA9IGxldHRlcjtcblBhcnNpbW1vbi5sZXR0ZXJzID0gbGV0dGVycztcblBhcnNpbW1vbi5sZiA9IGxmO1xuUGFyc2ltbW9uLmxvb2thaGVhZCA9IGxvb2thaGVhZDtcblBhcnNpbW1vbi5tYWtlRmFpbHVyZSA9IG1ha2VGYWlsdXJlO1xuUGFyc2ltbW9uLm1ha2VTdWNjZXNzID0gbWFrZVN1Y2Nlc3M7XG5QYXJzaW1tb24ubmV3bGluZSA9IG5ld2xpbmU7XG5QYXJzaW1tb24ubm9uZU9mID0gbm9uZU9mO1xuUGFyc2ltbW9uLm5vdEZvbGxvd2VkQnkgPSBub3RGb2xsb3dlZEJ5O1xuUGFyc2ltbW9uLm9mID0gc3VjY2VlZDtcblBhcnNpbW1vbi5vbmVPZiA9IG9uZU9mO1xuUGFyc2ltbW9uLm9wdFdoaXRlc3BhY2UgPSBvcHRXaGl0ZXNwYWNlO1xuUGFyc2ltbW9uLlBhcnNlciA9IFBhcnNpbW1vbjtcblBhcnNpbW1vbi5yYW5nZSA9IHJhbmdlO1xuUGFyc2ltbW9uLnJlZ2V4ID0gcmVnZXhwO1xuUGFyc2ltbW9uLnJlZ2V4cCA9IHJlZ2V4cDtcblBhcnNpbW1vbi5zZXBCeSA9IHNlcEJ5O1xuUGFyc2ltbW9uLnNlcEJ5MSA9IHNlcEJ5MTtcblBhcnNpbW1vbi5zZXEgPSBzZXE7XG5QYXJzaW1tb24uc2VxTWFwID0gc2VxTWFwO1xuUGFyc2ltbW9uLnNlcU9iaiA9IHNlcU9iajtcblBhcnNpbW1vbi5zdHJpbmcgPSBzdHJpbmc7XG5QYXJzaW1tb24uc3VjY2VlZCA9IHN1Y2NlZWQ7XG5QYXJzaW1tb24udGFrZVdoaWxlID0gdGFrZVdoaWxlO1xuUGFyc2ltbW9uLnRlc3QgPSB0ZXN0O1xuUGFyc2ltbW9uLndoaXRlc3BhY2UgPSB3aGl0ZXNwYWNlO1xuUGFyc2ltbW9uW1wiZmFudGFzeS1sYW5kL2VtcHR5XCJdID0gZW1wdHk7XG5QYXJzaW1tb25bXCJmYW50YXN5LWxhbmQvb2ZcIl0gPSBzdWNjZWVkO1xuXG5QYXJzaW1tb24uQmluYXJ5ID0ge1xuICBiaXRTZXE6IGJpdFNlcSxcbiAgYml0U2VxT2JqOiBiaXRTZXFPYmosXG4gIGJ5dGU6IGJ5dGUsXG4gIGJ1ZmZlcjogcGFyc2VCdWZmZXIsXG4gIGVuY29kZWRTdHJpbmc6IGVuY29kZWRTdHJpbmcsXG4gIHVpbnRCRTogdWludEJFLFxuICB1aW50OEJFOiB1aW50QkUoMSksXG4gIHVpbnQxNkJFOiB1aW50QkUoMiksXG4gIHVpbnQzMkJFOiB1aW50QkUoNCksXG4gIHVpbnRMRTogdWludExFLFxuICB1aW50OExFOiB1aW50TEUoMSksXG4gIHVpbnQxNkxFOiB1aW50TEUoMiksXG4gIHVpbnQzMkxFOiB1aW50TEUoNCksXG4gIGludEJFOiBpbnRCRSxcbiAgaW50OEJFOiBpbnRCRSgxKSxcbiAgaW50MTZCRTogaW50QkUoMiksXG4gIGludDMyQkU6IGludEJFKDQpLFxuICBpbnRMRTogaW50TEUsXG4gIGludDhMRTogaW50TEUoMSksXG4gIGludDE2TEU6IGludExFKDIpLFxuICBpbnQzMkxFOiBpbnRMRSg0KSxcbiAgZmxvYXRCRTogZmxvYXRCRSgpLFxuICBmbG9hdExFOiBmbG9hdExFKCksXG4gIGRvdWJsZUJFOiBkb3VibGVCRSgpLFxuICBkb3VibGVMRTogZG91YmxlTEUoKVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBQYXJzaW1tb247XG4iLCAibW9kdWxlLmV4cG9ydHMgPSAoKSA9PiB7XG5cdC8vIGh0dHBzOi8vbXRocy5iZS9lbW9qaVxuXHRyZXR1cm4gL1sjKjAtOV1cXHVGRTBGP1xcdTIwRTN8W1xceEE5XFx4QUVcXHUyMDNDXFx1MjA0OVxcdTIxMjJcXHUyMTM5XFx1MjE5NC1cXHUyMTk5XFx1MjFBOVxcdTIxQUFcXHUyMzFBXFx1MjMxQlxcdTIzMjhcXHUyM0NGXFx1MjNFRC1cXHUyM0VGXFx1MjNGMVxcdTIzRjJcXHUyM0Y4LVxcdTIzRkFcXHUyNEMyXFx1MjVBQVxcdTI1QUJcXHUyNUI2XFx1MjVDMFxcdTI1RkJcXHUyNUZDXFx1MjVGRVxcdTI2MDAtXFx1MjYwNFxcdTI2MEVcXHUyNjExXFx1MjYxNFxcdTI2MTVcXHUyNjE4XFx1MjYyMFxcdTI2MjJcXHUyNjIzXFx1MjYyNlxcdTI2MkFcXHUyNjJFXFx1MjYyRlxcdTI2MzgtXFx1MjYzQVxcdTI2NDBcXHUyNjQyXFx1MjY0OC1cXHUyNjUzXFx1MjY1RlxcdTI2NjBcXHUyNjYzXFx1MjY2NVxcdTI2NjZcXHUyNjY4XFx1MjY3QlxcdTI2N0VcXHUyNjdGXFx1MjY5MlxcdTI2OTQtXFx1MjY5N1xcdTI2OTlcXHUyNjlCXFx1MjY5Q1xcdTI2QTBcXHUyNkE3XFx1MjZBQVxcdTI2QjBcXHUyNkIxXFx1MjZCRFxcdTI2QkVcXHUyNkM0XFx1MjZDOFxcdTI2Q0ZcXHUyNkQxXFx1MjZFOVxcdTI2RjAtXFx1MjZGNVxcdTI2RjdcXHUyNkY4XFx1MjZGQVxcdTI3MDJcXHUyNzA4XFx1MjcwOVxcdTI3MEZcXHUyNzEyXFx1MjcxNFxcdTI3MTZcXHUyNzFEXFx1MjcyMVxcdTI3MzNcXHUyNzM0XFx1Mjc0NFxcdTI3NDdcXHUyNzU3XFx1Mjc2M1xcdTI3QTFcXHUyOTM0XFx1MjkzNVxcdTJCMDUtXFx1MkIwN1xcdTJCMUJcXHUyQjFDXFx1MkI1NVxcdTMwMzBcXHUzMDNEXFx1MzI5N1xcdTMyOTldXFx1RkUwRj98W1xcdTI2MURcXHUyNzBDXFx1MjcwRF0oPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl18XFx1RkUwRik/fFtcXHUyNzBBXFx1MjcwQl0oPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pP3xbXFx1MjNFOS1cXHUyM0VDXFx1MjNGMFxcdTIzRjNcXHUyNUZEXFx1MjY5M1xcdTI2QTFcXHUyNkFCXFx1MjZDNVxcdTI2Q0VcXHUyNkQ0XFx1MjZFQVxcdTI2RkRcXHUyNzA1XFx1MjcyOFxcdTI3NENcXHUyNzRFXFx1Mjc1My1cXHUyNzU1XFx1Mjc5NS1cXHUyNzk3XFx1MjdCMFxcdTI3QkZcXHUyQjUwXXxcXHUyNkQzXFx1RkUwRj8oPzpcXHUyMDBEXFx1RDgzRFxcdURDQTUpP3xcXHUyNkY5KD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdfFxcdUZFMEYpPyg/OlxcdTIwMERbXFx1MjY0MFxcdTI2NDJdXFx1RkUwRj8pP3xcXHUyNzY0XFx1RkUwRj8oPzpcXHUyMDBEKD86XFx1RDgzRFxcdUREMjV8XFx1RDgzRVxcdURFNzkpKT98XFx1RDgzQyg/OltcXHVEQzA0XFx1REQ3MFxcdURENzFcXHVERDdFXFx1REQ3RlxcdURFMDJcXHVERTM3XFx1REYyMVxcdURGMjQtXFx1REYyQ1xcdURGMzZcXHVERjdEXFx1REY5NlxcdURGOTdcXHVERjk5LVxcdURGOUJcXHVERjlFXFx1REY5RlxcdURGQ0RcXHVERkNFXFx1REZENC1cXHVERkRGXFx1REZGNVxcdURGRjddXFx1RkUwRj98W1xcdURGODVcXHVERkMyXFx1REZDN10oPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pP3xbXFx1REZDNFxcdURGQ0FdKD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKT8oPzpcXHUyMDBEW1xcdTI2NDBcXHUyNjQyXVxcdUZFMEY/KT98W1xcdURGQ0JcXHVERkNDXSg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXXxcXHVGRTBGKT8oPzpcXHUyMDBEW1xcdTI2NDBcXHUyNjQyXVxcdUZFMEY/KT98W1xcdURDQ0ZcXHVERDhFXFx1REQ5MS1cXHVERDlBXFx1REUwMVxcdURFMUFcXHVERTJGXFx1REUzMi1cXHVERTM2XFx1REUzOC1cXHVERTNBXFx1REU1MFxcdURFNTFcXHVERjAwLVxcdURGMjBcXHVERjJELVxcdURGMzVcXHVERjM3LVxcdURGNDNcXHVERjQ1LVxcdURGNEFcXHVERjRDLVxcdURGN0NcXHVERjdFLVxcdURGODRcXHVERjg2LVxcdURGOTNcXHVERkEwLVxcdURGQzFcXHVERkM1XFx1REZDNlxcdURGQzhcXHVERkM5XFx1REZDRi1cXHVERkQzXFx1REZFMC1cXHVERkYwXFx1REZGOC1cXHVERkZGXXxcXHVEREU2XFx1RDgzQ1tcXHVEREU4LVxcdURERUNcXHVEREVFXFx1RERGMVxcdURERjJcXHVEREY0XFx1RERGNi1cXHVEREZBXFx1RERGQ1xcdURERkRcXHVEREZGXXxcXHVEREU3XFx1RDgzQ1tcXHVEREU2XFx1RERFN1xcdURERTktXFx1RERFRlxcdURERjEtXFx1RERGNFxcdURERjYtXFx1RERGOVxcdURERkJcXHVEREZDXFx1RERGRVxcdURERkZdfFxcdURERThcXHVEODNDW1xcdURERTZcXHVEREU4XFx1RERFOVxcdURERUItXFx1RERFRVxcdURERjAtXFx1RERGN1xcdURERkEtXFx1RERGRl18XFx1RERFOVxcdUQ4M0NbXFx1RERFQVxcdURERUNcXHVEREVGXFx1RERGMFxcdURERjJcXHVEREY0XFx1RERGRl18XFx1RERFQVxcdUQ4M0NbXFx1RERFNlxcdURERThcXHVEREVBXFx1RERFQ1xcdURERURcXHVEREY3LVxcdURERkFdfFxcdURERUJcXHVEODNDW1xcdURERUUtXFx1RERGMFxcdURERjJcXHVEREY0XFx1RERGN118XFx1RERFQ1xcdUQ4M0NbXFx1RERFNlxcdURERTdcXHVEREU5LVxcdURERUVcXHVEREYxLVxcdURERjNcXHVEREY1LVxcdURERkFcXHVEREZDXFx1RERGRV18XFx1RERFRFxcdUQ4M0NbXFx1RERGMFxcdURERjJcXHVEREYzXFx1RERGN1xcdURERjlcXHVEREZBXXxcXHVEREVFXFx1RDgzQ1tcXHVEREU4LVxcdURERUFcXHVEREYxLVxcdURERjRcXHVEREY2LVxcdURERjldfFxcdURERUZcXHVEODNDW1xcdURERUFcXHVEREYyXFx1RERGNFxcdURERjVdfFxcdURERjBcXHVEODNDW1xcdURERUFcXHVEREVDLVxcdURERUVcXHVEREYyXFx1RERGM1xcdURERjVcXHVEREY3XFx1RERGQ1xcdURERkVcXHVEREZGXXxcXHVEREYxXFx1RDgzQ1tcXHVEREU2LVxcdURERThcXHVEREVFXFx1RERGMFxcdURERjctXFx1RERGQlxcdURERkVdfFxcdURERjJcXHVEODNDW1xcdURERTZcXHVEREU4LVxcdURERURcXHVEREYwLVxcdURERkZdfFxcdURERjNcXHVEODNDW1xcdURERTZcXHVEREU4XFx1RERFQS1cXHVEREVDXFx1RERFRVxcdURERjFcXHVEREY0XFx1RERGNVxcdURERjdcXHVEREZBXFx1RERGRl18XFx1RERGNFxcdUQ4M0NcXHVEREYyfFxcdURERjVcXHVEODNDW1xcdURERTZcXHVEREVBLVxcdURERURcXHVEREYwLVxcdURERjNcXHVEREY3LVxcdURERjlcXHVEREZDXFx1RERGRV18XFx1RERGNlxcdUQ4M0NcXHVEREU2fFxcdURERjdcXHVEODNDW1xcdURERUFcXHVEREY0XFx1RERGOFxcdURERkFcXHVEREZDXXxcXHVEREY4XFx1RDgzQ1tcXHVEREU2LVxcdURERUFcXHVEREVDLVxcdURERjRcXHVEREY3LVxcdURERjlcXHVEREZCXFx1RERGRC1cXHVEREZGXXxcXHVEREY5XFx1RDgzQ1tcXHVEREU2XFx1RERFOFxcdURERTlcXHVEREVCLVxcdURERURcXHVEREVGLVxcdURERjRcXHVEREY3XFx1RERGOVxcdURERkJcXHVEREZDXFx1RERGRl18XFx1RERGQVxcdUQ4M0NbXFx1RERFNlxcdURERUNcXHVEREYyXFx1RERGM1xcdURERjhcXHVEREZFXFx1RERGRl18XFx1RERGQlxcdUQ4M0NbXFx1RERFNlxcdURERThcXHVEREVBXFx1RERFQ1xcdURERUVcXHVEREYzXFx1RERGQV18XFx1RERGQ1xcdUQ4M0NbXFx1RERFQlxcdURERjhdfFxcdURERkRcXHVEODNDXFx1RERGMHxcXHVEREZFXFx1RDgzQ1tcXHVEREVBXFx1RERGOV18XFx1RERGRlxcdUQ4M0NbXFx1RERFNlxcdURERjJcXHVEREZDXXxcXHVERjQ0KD86XFx1MjAwRFxcdUQ4M0RcXHVERkVCKT98XFx1REY0Qig/OlxcdTIwMERcXHVEODNEXFx1REZFOSk/fFxcdURGQzMoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pPyg/OlxcdTIwMEQoPzpbXFx1MjY0MFxcdTI2NDJdXFx1RkUwRj8oPzpcXHUyMDBEXFx1MjdBMVxcdUZFMEY/KT98XFx1MjdBMVxcdUZFMEY/KSk/fFxcdURGRjNcXHVGRTBGPyg/OlxcdTIwMEQoPzpcXHUyNkE3XFx1RkUwRj98XFx1RDgzQ1xcdURGMDgpKT98XFx1REZGNCg/OlxcdTIwMERcXHUyNjIwXFx1RkUwRj98XFx1REI0MFxcdURDNjdcXHVEQjQwXFx1REM2MlxcdURCNDAoPzpcXHVEQzY1XFx1REI0MFxcdURDNkVcXHVEQjQwXFx1REM2N3xcXHVEQzczXFx1REI0MFxcdURDNjNcXHVEQjQwXFx1REM3NHxcXHVEQzc3XFx1REI0MFxcdURDNkNcXHVEQjQwXFx1REM3MylcXHVEQjQwXFx1REM3Rik/KXxcXHVEODNEKD86W1xcdURDM0ZcXHVEQ0ZEXFx1REQ0OVxcdURENEFcXHVERDZGXFx1REQ3MFxcdURENzNcXHVERDc2LVxcdURENzlcXHVERDg3XFx1REQ4QS1cXHVERDhEXFx1RERBNVxcdUREQThcXHVEREIxXFx1RERCMlxcdUREQkNcXHVEREMyLVxcdUREQzRcXHVEREQxLVxcdURERDNcXHVERERDLVxcdUREREVcXHVEREUxXFx1RERFM1xcdURERThcXHVEREVGXFx1RERGM1xcdURERkFcXHVERUNCXFx1REVDRC1cXHVERUNGXFx1REVFMC1cXHVERUU1XFx1REVFOVxcdURFRjBcXHVERUYzXVxcdUZFMEY/fFtcXHVEQzQyXFx1REM0M1xcdURDNDYtXFx1REM1MFxcdURDNjZcXHVEQzY3XFx1REM2Qi1cXHVEQzZEXFx1REM3MlxcdURDNzQtXFx1REM3NlxcdURDNzhcXHVEQzdDXFx1REM4M1xcdURDODVcXHVEQzhGXFx1REM5MVxcdURDQUFcXHVERDdBXFx1REQ5NVxcdUREOTZcXHVERTRDXFx1REU0RlxcdURFQzBcXHVERUNDXSg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSk/fFtcXHVEQzZFXFx1REM3MFxcdURDNzFcXHVEQzczXFx1REM3N1xcdURDODFcXHVEQzgyXFx1REM4NlxcdURDODdcXHVERTQ1LVxcdURFNDdcXHVERTRCXFx1REU0RFxcdURFNEVcXHVERUEzXFx1REVCNFxcdURFQjVdKD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKT8oPzpcXHUyMDBEW1xcdTI2NDBcXHUyNjQyXVxcdUZFMEY/KT98W1xcdURENzRcXHVERDkwXSg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXXxcXHVGRTBGKT98W1xcdURDMDAtXFx1REMwN1xcdURDMDktXFx1REMxNFxcdURDMTYtXFx1REMyNVxcdURDMjctXFx1REMzQVxcdURDM0MtXFx1REMzRVxcdURDNDBcXHVEQzQ0XFx1REM0NVxcdURDNTEtXFx1REM2NVxcdURDNkFcXHVEQzc5LVxcdURDN0JcXHVEQzdELVxcdURDODBcXHVEQzg0XFx1REM4OC1cXHVEQzhFXFx1REM5MFxcdURDOTItXFx1RENBOVxcdURDQUItXFx1RENGQ1xcdURDRkYtXFx1REQzRFxcdURENEItXFx1REQ0RVxcdURENTAtXFx1REQ2N1xcdUREQTRcXHVEREZCLVxcdURFMkRcXHVERTJGLVxcdURFMzRcXHVERTM3LVxcdURFNDFcXHVERTQzXFx1REU0NFxcdURFNDgtXFx1REU0QVxcdURFODAtXFx1REVBMlxcdURFQTQtXFx1REVCM1xcdURFQjctXFx1REVCRlxcdURFQzEtXFx1REVDNVxcdURFRDAtXFx1REVEMlxcdURFRDUtXFx1REVEN1xcdURFREMtXFx1REVERlxcdURFRUJcXHVERUVDXFx1REVGNC1cXHVERUZDXFx1REZFMC1cXHVERkVCXFx1REZGMF18XFx1REMwOCg/OlxcdTIwMERcXHUyQjFCKT98XFx1REMxNSg/OlxcdTIwMERcXHVEODNFXFx1RERCQSk/fFxcdURDMjYoPzpcXHUyMDBEKD86XFx1MkIxQnxcXHVEODNEXFx1REQyNSkpP3xcXHVEQzNCKD86XFx1MjAwRFxcdTI3NDRcXHVGRTBGPyk/fFxcdURDNDFcXHVGRTBGPyg/OlxcdTIwMERcXHVEODNEXFx1RERFOFxcdUZFMEY/KT98XFx1REM2OCg/OlxcdTIwMEQoPzpbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XVxcdUZFMEY/fFxcdTI3NjRcXHVGRTBGP1xcdTIwMERcXHVEODNEKD86XFx1REM4QlxcdTIwMERcXHVEODNEKT9cXHVEQzY4fFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0QoPzpbXFx1REM2OFxcdURDNjldXFx1MjAwRFxcdUQ4M0QoPzpcXHVEQzY2KD86XFx1MjAwRFxcdUQ4M0RcXHVEQzY2KT98XFx1REM2Nyg/OlxcdTIwMERcXHVEODNEW1xcdURDNjZcXHVEQzY3XSk/KXxbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEQzY2KD86XFx1MjAwRFxcdUQ4M0RcXHVEQzY2KT98XFx1REM2Nyg/OlxcdTIwMERcXHVEODNEW1xcdURDNjZcXHVEQzY3XSk/KXxcXHVEODNFKD86W1xcdUREQUZcXHVEREJDXFx1RERCRF0oPzpcXHUyMDBEXFx1MjdBMVxcdUZFMEY/KT98W1xcdUREQjAtXFx1RERCM10pKXxcXHVEODNDKD86XFx1REZGQig/OlxcdTIwMEQoPzpbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XVxcdUZFMEY/fFxcdTI3NjRcXHVGRTBGP1xcdTIwMERcXHVEODNEKD86XFx1REM4QlxcdTIwMERcXHVEODNEKT9cXHVEQzY4XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFKD86W1xcdUREQUZcXHVEREJDXFx1RERCRF0oPzpcXHUyMDBEXFx1MjdBMVxcdUZFMEY/KT98W1xcdUREQjAtXFx1RERCM118XFx1REQxRFxcdTIwMERcXHVEODNEXFx1REM2OFxcdUQ4M0NbXFx1REZGQy1cXHVERkZGXSkpKT98XFx1REZGQyg/OlxcdTIwMEQoPzpbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XVxcdUZFMEY/fFxcdTI3NjRcXHVGRTBGP1xcdTIwMERcXHVEODNEKD86XFx1REM4QlxcdTIwMERcXHVEODNEKT9cXHVEQzY4XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFKD86W1xcdUREQUZcXHVEREJDXFx1RERCRF0oPzpcXHUyMDBEXFx1MjdBMVxcdUZFMEY/KT98W1xcdUREQjAtXFx1RERCM118XFx1REQxRFxcdTIwMERcXHVEODNEXFx1REM2OFxcdUQ4M0NbXFx1REZGQlxcdURGRkQtXFx1REZGRl0pKSk/fFxcdURGRkQoPzpcXHUyMDBEKD86W1xcdTI2OTVcXHUyNjk2XFx1MjcwOF1cXHVGRTBGP3xcXHUyNzY0XFx1RkUwRj9cXHUyMDBEXFx1RDgzRCg/OlxcdURDOEJcXHUyMDBEXFx1RDgzRCk/XFx1REM2OFxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXXxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRSg/OltcXHVEREFGXFx1RERCQ1xcdUREQkRdKD86XFx1MjAwRFxcdTI3QTFcXHVGRTBGPyk/fFtcXHVEREIwLVxcdUREQjNdfFxcdUREMURcXHUyMDBEXFx1RDgzRFxcdURDNjhcXHVEODNDW1xcdURGRkJcXHVERkZDXFx1REZGRVxcdURGRkZdKSkpP3xcXHVERkZFKD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRFxcdUQ4M0QoPzpcXHVEQzhCXFx1MjAwRFxcdUQ4M0QpP1xcdURDNjhcXHVEODNDW1xcdURGRkItXFx1REZGRl18XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0UoPzpbXFx1RERBRlxcdUREQkNcXHVEREJEXSg/OlxcdTIwMERcXHUyN0ExXFx1RkUwRj8pP3xbXFx1RERCMC1cXHVEREIzXXxcXHVERDFEXFx1MjAwRFxcdUQ4M0RcXHVEQzY4XFx1RDgzQ1tcXHVERkZCLVxcdURGRkRcXHVERkZGXSkpKT98XFx1REZGRig/OlxcdTIwMEQoPzpbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XVxcdUZFMEY/fFxcdTI3NjRcXHVGRTBGP1xcdTIwMERcXHVEODNEKD86XFx1REM4QlxcdTIwMERcXHVEODNEKT9cXHVEQzY4XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFKD86W1xcdUREQUZcXHVEREJDXFx1RERCRF0oPzpcXHUyMDBEXFx1MjdBMVxcdUZFMEY/KT98W1xcdUREQjAtXFx1RERCM118XFx1REQxRFxcdTIwMERcXHVEODNEXFx1REM2OFxcdUQ4M0NbXFx1REZGQi1cXHVERkZFXSkpKT8pKT98XFx1REM2OSg/OlxcdTIwMEQoPzpbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XVxcdUZFMEY/fFxcdTI3NjRcXHVGRTBGP1xcdTIwMERcXHVEODNEKD86XFx1REM4QlxcdTIwMERcXHVEODNEKT9bXFx1REM2OFxcdURDNjldfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0QoPzpbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEQzY2KD86XFx1MjAwRFxcdUQ4M0RcXHVEQzY2KT98XFx1REM2Nyg/OlxcdTIwMERcXHVEODNEW1xcdURDNjZcXHVEQzY3XSk/fFxcdURDNjlcXHUyMDBEXFx1RDgzRCg/OlxcdURDNjYoPzpcXHUyMDBEXFx1RDgzRFxcdURDNjYpP3xcXHVEQzY3KD86XFx1MjAwRFxcdUQ4M0RbXFx1REM2NlxcdURDNjddKT8pKXxcXHVEODNFKD86W1xcdUREQUZcXHVEREJDXFx1RERCRF0oPzpcXHUyMDBEXFx1MjdBMVxcdUZFMEY/KT98W1xcdUREQjAtXFx1RERCM10pKXxcXHVEODNDKD86XFx1REZGQig/OlxcdTIwMEQoPzpbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XVxcdUZFMEY/fFxcdTI3NjRcXHVGRTBGP1xcdTIwMERcXHVEODNEKD86W1xcdURDNjhcXHVEQzY5XXxcXHVEQzhCXFx1MjAwRFxcdUQ4M0RbXFx1REM2OFxcdURDNjldKVxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXXxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRSg/OltcXHVEREFGXFx1RERCQ1xcdUREQkRdKD86XFx1MjAwRFxcdTI3QTFcXHVGRTBGPyk/fFtcXHVEREIwLVxcdUREQjNdfFxcdUREMURcXHUyMDBEXFx1RDgzRFtcXHVEQzY4XFx1REM2OV1cXHVEODNDW1xcdURGRkMtXFx1REZGRl0pKSk/fFxcdURGRkMoPzpcXHUyMDBEKD86W1xcdTI2OTVcXHUyNjk2XFx1MjcwOF1cXHVGRTBGP3xcXHUyNzY0XFx1RkUwRj9cXHUyMDBEXFx1RDgzRCg/OltcXHVEQzY4XFx1REM2OV18XFx1REM4QlxcdTIwMERcXHVEODNEW1xcdURDNjhcXHVEQzY5XSlcXHVEODNDW1xcdURGRkItXFx1REZGRl18XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0UoPzpbXFx1RERBRlxcdUREQkNcXHVEREJEXSg/OlxcdTIwMERcXHUyN0ExXFx1RkUwRj8pP3xbXFx1RERCMC1cXHVEREIzXXxcXHVERDFEXFx1MjAwRFxcdUQ4M0RbXFx1REM2OFxcdURDNjldXFx1RDgzQ1tcXHVERkZCXFx1REZGRC1cXHVERkZGXSkpKT98XFx1REZGRCg/OlxcdTIwMEQoPzpbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XVxcdUZFMEY/fFxcdTI3NjRcXHVGRTBGP1xcdTIwMERcXHVEODNEKD86W1xcdURDNjhcXHVEQzY5XXxcXHVEQzhCXFx1MjAwRFxcdUQ4M0RbXFx1REM2OFxcdURDNjldKVxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXXxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRSg/OltcXHVEREFGXFx1RERCQ1xcdUREQkRdKD86XFx1MjAwRFxcdTI3QTFcXHVGRTBGPyk/fFtcXHVEREIwLVxcdUREQjNdfFxcdUREMURcXHUyMDBEXFx1RDgzRFtcXHVEQzY4XFx1REM2OV1cXHVEODNDW1xcdURGRkJcXHVERkZDXFx1REZGRVxcdURGRkZdKSkpP3xcXHVERkZFKD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRFxcdUQ4M0QoPzpbXFx1REM2OFxcdURDNjldfFxcdURDOEJcXHUyMDBEXFx1RDgzRFtcXHVEQzY4XFx1REM2OV0pXFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFKD86W1xcdUREQUZcXHVEREJDXFx1RERCRF0oPzpcXHUyMDBEXFx1MjdBMVxcdUZFMEY/KT98W1xcdUREQjAtXFx1RERCM118XFx1REQxRFxcdTIwMERcXHVEODNEW1xcdURDNjhcXHVEQzY5XVxcdUQ4M0NbXFx1REZGQi1cXHVERkZEXFx1REZGRl0pKSk/fFxcdURGRkYoPzpcXHUyMDBEKD86W1xcdTI2OTVcXHUyNjk2XFx1MjcwOF1cXHVGRTBGP3xcXHUyNzY0XFx1RkUwRj9cXHUyMDBEXFx1RDgzRCg/OltcXHVEQzY4XFx1REM2OV18XFx1REM4QlxcdTIwMERcXHVEODNEW1xcdURDNjhcXHVEQzY5XSlcXHVEODNDW1xcdURGRkItXFx1REZGRl18XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0UoPzpbXFx1RERBRlxcdUREQkNcXHVEREJEXSg/OlxcdTIwMERcXHUyN0ExXFx1RkUwRj8pP3xbXFx1RERCMC1cXHVEREIzXXxcXHVERDFEXFx1MjAwRFxcdUQ4M0RbXFx1REM2OFxcdURDNjldXFx1RDgzQ1tcXHVERkZCLVxcdURGRkVdKSkpPykpP3xcXHVEQzZGKD86XFx1MjAwRFtcXHUyNjQwXFx1MjY0Ml1cXHVGRTBGPyk/fFxcdURENzUoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl18XFx1RkUwRik/KD86XFx1MjAwRFtcXHUyNjQwXFx1MjY0Ml1cXHVGRTBGPyk/fFxcdURFMkUoPzpcXHUyMDBEXFx1RDgzRFxcdURDQTgpP3xcXHVERTM1KD86XFx1MjAwRFxcdUQ4M0RcXHVEQ0FCKT98XFx1REUzNig/OlxcdTIwMERcXHVEODNDXFx1REYyQlxcdUZFMEY/KT98XFx1REU0Mig/OlxcdTIwMERbXFx1MjE5NFxcdTIxOTVdXFx1RkUwRj8pP3xcXHVERUI2KD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKT8oPzpcXHUyMDBEKD86W1xcdTI2NDBcXHUyNjQyXVxcdUZFMEY/KD86XFx1MjAwRFxcdTI3QTFcXHVGRTBGPyk/fFxcdTI3QTFcXHVGRTBGPykpPyl8XFx1RDgzRSg/OltcXHVERDBDXFx1REQwRlxcdUREMTgtXFx1REQxRlxcdUREMzAtXFx1REQzNFxcdUREMzZcXHVERDc3XFx1RERCNVxcdUREQjZcXHVEREJCXFx1REREMlxcdURERDNcXHVEREQ1XFx1REVDMy1cXHVERUM1XFx1REVGMFxcdURFRjItXFx1REVGOF0oPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pP3xbXFx1REQyNlxcdUREMzVcXHVERDM3LVxcdUREMzlcXHVERDNEXFx1REQzRVxcdUREQjhcXHVEREI5XFx1RERDRFxcdUREQ0ZcXHVEREQ0XFx1RERENi1cXHVEREREXSg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSk/KD86XFx1MjAwRFtcXHUyNjQwXFx1MjY0Ml1cXHVGRTBGPyk/fFtcXHVERERFXFx1RERERl0oPzpcXHUyMDBEW1xcdTI2NDBcXHUyNjQyXVxcdUZFMEY/KT98W1xcdUREMERcXHVERDBFXFx1REQxMC1cXHVERDE3XFx1REQyMC1cXHVERDI1XFx1REQyNy1cXHVERDJGXFx1REQzQVxcdUREM0YtXFx1REQ0NVxcdURENDctXFx1REQ3NlxcdURENzgtXFx1RERCNFxcdUREQjdcXHVEREJBXFx1RERCQy1cXHVERENDXFx1REREMFxcdURERTAtXFx1RERGRlxcdURFNzAtXFx1REU3Q1xcdURFODAtXFx1REU4OVxcdURFOEYtXFx1REVDMlxcdURFQzZcXHVERUNFLVxcdURFRENcXHVERURGLVxcdURFRTldfFxcdUREM0MoPzpcXHUyMDBEW1xcdTI2NDBcXHUyNjQyXVxcdUZFMEY/fFxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSk/fFxcdUREQ0UoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pPyg/OlxcdTIwMEQoPzpbXFx1MjY0MFxcdTI2NDJdXFx1RkUwRj8oPzpcXHUyMDBEXFx1MjdBMVxcdUZFMEY/KT98XFx1MjdBMVxcdUZFMEY/KSk/fFxcdURERDEoPzpcXHUyMDBEKD86W1xcdTI2OTVcXHUyNjk2XFx1MjcwOF1cXHVGRTBGP3xcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGODRcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0UoPzpbXFx1RERBRlxcdUREQkNcXHVEREJEXSg/OlxcdTIwMERcXHUyN0ExXFx1RkUwRj8pP3xbXFx1RERCMC1cXHVEREIzXXxcXHVERDFEXFx1MjAwRFxcdUQ4M0VcXHVEREQxfFxcdURERDFcXHUyMDBEXFx1RDgzRVxcdURERDIoPzpcXHUyMDBEXFx1RDgzRVxcdURERDIpP3xcXHVEREQyKD86XFx1MjAwRFxcdUQ4M0VcXHVEREQyKT8pKXxcXHVEODNDKD86XFx1REZGQig/OlxcdTIwMEQoPzpbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XVxcdUZFMEY/fFxcdTI3NjRcXHVGRTBGP1xcdTIwMEQoPzpcXHVEODNEXFx1REM4QlxcdTIwMEQpP1xcdUQ4M0VcXHVEREQxXFx1RDgzQ1tcXHVERkZDLVxcdURGRkZdfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRSg/OltcXHVEREFGXFx1RERCQ1xcdUREQkRdKD86XFx1MjAwRFxcdTI3QTFcXHVGRTBGPyk/fFtcXHVEREIwLVxcdUREQjNdfFxcdUREMURcXHUyMDBEXFx1RDgzRVxcdURERDFcXHVEODNDW1xcdURGRkItXFx1REZGRl0pKSk/fFxcdURGRkMoPzpcXHUyMDBEKD86W1xcdTI2OTVcXHUyNjk2XFx1MjcwOF1cXHVGRTBGP3xcXHUyNzY0XFx1RkUwRj9cXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEKT9cXHVEODNFXFx1REREMVxcdUQ4M0NbXFx1REZGQlxcdURGRkQtXFx1REZGRl18XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjg0XFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFKD86W1xcdUREQUZcXHVEREJDXFx1RERCRF0oPzpcXHUyMDBEXFx1MjdBMVxcdUZFMEY/KT98W1xcdUREQjAtXFx1RERCM118XFx1REQxRFxcdTIwMERcXHVEODNFXFx1REREMVxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSkpKT98XFx1REZGRCg/OlxcdTIwMEQoPzpbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XVxcdUZFMEY/fFxcdTI3NjRcXHVGRTBGP1xcdTIwMEQoPzpcXHVEODNEXFx1REM4QlxcdTIwMEQpP1xcdUQ4M0VcXHVEREQxXFx1RDgzQ1tcXHVERkZCXFx1REZGQ1xcdURGRkVcXHVERkZGXXxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGODRcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0UoPzpbXFx1RERBRlxcdUREQkNcXHVEREJEXSg/OlxcdTIwMERcXHUyN0ExXFx1RkUwRj8pP3xbXFx1RERCMC1cXHVEREIzXXxcXHVERDFEXFx1MjAwRFxcdUQ4M0VcXHVEREQxXFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKSkpP3xcXHVERkZFKD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRCg/OlxcdUQ4M0RcXHVEQzhCXFx1MjAwRCk/XFx1RDgzRVxcdURERDFcXHVEODNDW1xcdURGRkItXFx1REZGRFxcdURGRkZdfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRSg/OltcXHVEREFGXFx1RERCQ1xcdUREQkRdKD86XFx1MjAwRFxcdTI3QTFcXHVGRTBGPyk/fFtcXHVEREIwLVxcdUREQjNdfFxcdUREMURcXHUyMDBEXFx1RDgzRVxcdURERDFcXHVEODNDW1xcdURGRkItXFx1REZGRl0pKSk/fFxcdURGRkYoPzpcXHUyMDBEKD86W1xcdTI2OTVcXHUyNjk2XFx1MjcwOF1cXHVGRTBGP3xcXHUyNzY0XFx1RkUwRj9cXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEKT9cXHVEODNFXFx1REREMVxcdUQ4M0NbXFx1REZGQi1cXHVERkZFXXxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGODRcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0UoPzpbXFx1RERBRlxcdUREQkNcXHVEREJEXSg/OlxcdTIwMERcXHUyN0ExXFx1RkUwRj8pP3xbXFx1RERCMC1cXHVEREIzXXxcXHVERDFEXFx1MjAwRFxcdUQ4M0VcXHVEREQxXFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKSkpPykpP3xcXHVERUYxKD86XFx1RDgzQyg/OlxcdURGRkIoPzpcXHUyMDBEXFx1RDgzRVxcdURFRjJcXHVEODNDW1xcdURGRkMtXFx1REZGRl0pP3xcXHVERkZDKD86XFx1MjAwRFxcdUQ4M0VcXHVERUYyXFx1RDgzQ1tcXHVERkZCXFx1REZGRC1cXHVERkZGXSk/fFxcdURGRkQoPzpcXHUyMDBEXFx1RDgzRVxcdURFRjJcXHVEODNDW1xcdURGRkJcXHVERkZDXFx1REZGRVxcdURGRkZdKT98XFx1REZGRSg/OlxcdTIwMERcXHVEODNFXFx1REVGMlxcdUQ4M0NbXFx1REZGQi1cXHVERkZEXFx1REZGRl0pP3xcXHVERkZGKD86XFx1MjAwRFxcdUQ4M0VcXHVERUYyXFx1RDgzQ1tcXHVERkZCLVxcdURGRkVdKT8pKT8pL2c7XG59O1xuIiwgIlwidXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge3ZhbHVlOiB0cnVlfSk7dmFyIENvbnRleHR1YWxLZXl3b3JkOyAoZnVuY3Rpb24gKENvbnRleHR1YWxLZXl3b3JkKSB7XG4gIGNvbnN0IE5PTkUgPSAwOyBDb250ZXh0dWFsS2V5d29yZFtDb250ZXh0dWFsS2V5d29yZFtcIk5PTkVcIl0gPSBOT05FXSA9IFwiTk9ORVwiO1xuICBjb25zdCBfYWJzdHJhY3QgPSBOT05FICsgMTsgQ29udGV4dHVhbEtleXdvcmRbQ29udGV4dHVhbEtleXdvcmRbXCJfYWJzdHJhY3RcIl0gPSBfYWJzdHJhY3RdID0gXCJfYWJzdHJhY3RcIjtcbiAgY29uc3QgX2FjY2Vzc29yID0gX2Fic3RyYWN0ICsgMTsgQ29udGV4dHVhbEtleXdvcmRbQ29udGV4dHVhbEtleXdvcmRbXCJfYWNjZXNzb3JcIl0gPSBfYWNjZXNzb3JdID0gXCJfYWNjZXNzb3JcIjtcbiAgY29uc3QgX2FzID0gX2FjY2Vzc29yICsgMTsgQ29udGV4dHVhbEtleXdvcmRbQ29udGV4dHVhbEtleXdvcmRbXCJfYXNcIl0gPSBfYXNdID0gXCJfYXNcIjtcbiAgY29uc3QgX2Fzc2VydCA9IF9hcyArIDE7IENvbnRleHR1YWxLZXl3b3JkW0NvbnRleHR1YWxLZXl3b3JkW1wiX2Fzc2VydFwiXSA9IF9hc3NlcnRdID0gXCJfYXNzZXJ0XCI7XG4gIGNvbnN0IF9hc3NlcnRzID0gX2Fzc2VydCArIDE7IENvbnRleHR1YWxLZXl3b3JkW0NvbnRleHR1YWxLZXl3b3JkW1wiX2Fzc2VydHNcIl0gPSBfYXNzZXJ0c10gPSBcIl9hc3NlcnRzXCI7XG4gIGNvbnN0IF9hc3luYyA9IF9hc3NlcnRzICsgMTsgQ29udGV4dHVhbEtleXdvcmRbQ29udGV4dHVhbEtleXdvcmRbXCJfYXN5bmNcIl0gPSBfYXN5bmNdID0gXCJfYXN5bmNcIjtcbiAgY29uc3QgX2F3YWl0ID0gX2FzeW5jICsgMTsgQ29udGV4dHVhbEtleXdvcmRbQ29udGV4dHVhbEtleXdvcmRbXCJfYXdhaXRcIl0gPSBfYXdhaXRdID0gXCJfYXdhaXRcIjtcbiAgY29uc3QgX2NoZWNrcyA9IF9hd2FpdCArIDE7IENvbnRleHR1YWxLZXl3b3JkW0NvbnRleHR1YWxLZXl3b3JkW1wiX2NoZWNrc1wiXSA9IF9jaGVja3NdID0gXCJfY2hlY2tzXCI7XG4gIGNvbnN0IF9jb25zdHJ1Y3RvciA9IF9jaGVja3MgKyAxOyBDb250ZXh0dWFsS2V5d29yZFtDb250ZXh0dWFsS2V5d29yZFtcIl9jb25zdHJ1Y3RvclwiXSA9IF9jb25zdHJ1Y3Rvcl0gPSBcIl9jb25zdHJ1Y3RvclwiO1xuICBjb25zdCBfZGVjbGFyZSA9IF9jb25zdHJ1Y3RvciArIDE7IENvbnRleHR1YWxLZXl3b3JkW0NvbnRleHR1YWxLZXl3b3JkW1wiX2RlY2xhcmVcIl0gPSBfZGVjbGFyZV0gPSBcIl9kZWNsYXJlXCI7XG4gIGNvbnN0IF9lbnVtID0gX2RlY2xhcmUgKyAxOyBDb250ZXh0dWFsS2V5d29yZFtDb250ZXh0dWFsS2V5d29yZFtcIl9lbnVtXCJdID0gX2VudW1dID0gXCJfZW51bVwiO1xuICBjb25zdCBfZXhwb3J0cyA9IF9lbnVtICsgMTsgQ29udGV4dHVhbEtleXdvcmRbQ29udGV4dHVhbEtleXdvcmRbXCJfZXhwb3J0c1wiXSA9IF9leHBvcnRzXSA9IFwiX2V4cG9ydHNcIjtcbiAgY29uc3QgX2Zyb20gPSBfZXhwb3J0cyArIDE7IENvbnRleHR1YWxLZXl3b3JkW0NvbnRleHR1YWxLZXl3b3JkW1wiX2Zyb21cIl0gPSBfZnJvbV0gPSBcIl9mcm9tXCI7XG4gIGNvbnN0IF9nZXQgPSBfZnJvbSArIDE7IENvbnRleHR1YWxLZXl3b3JkW0NvbnRleHR1YWxLZXl3b3JkW1wiX2dldFwiXSA9IF9nZXRdID0gXCJfZ2V0XCI7XG4gIGNvbnN0IF9nbG9iYWwgPSBfZ2V0ICsgMTsgQ29udGV4dHVhbEtleXdvcmRbQ29udGV4dHVhbEtleXdvcmRbXCJfZ2xvYmFsXCJdID0gX2dsb2JhbF0gPSBcIl9nbG9iYWxcIjtcbiAgY29uc3QgX2ltcGxlbWVudHMgPSBfZ2xvYmFsICsgMTsgQ29udGV4dHVhbEtleXdvcmRbQ29udGV4dHVhbEtleXdvcmRbXCJfaW1wbGVtZW50c1wiXSA9IF9pbXBsZW1lbnRzXSA9IFwiX2ltcGxlbWVudHNcIjtcbiAgY29uc3QgX2luZmVyID0gX2ltcGxlbWVudHMgKyAxOyBDb250ZXh0dWFsS2V5d29yZFtDb250ZXh0dWFsS2V5d29yZFtcIl9pbmZlclwiXSA9IF9pbmZlcl0gPSBcIl9pbmZlclwiO1xuICBjb25zdCBfaW50ZXJmYWNlID0gX2luZmVyICsgMTsgQ29udGV4dHVhbEtleXdvcmRbQ29udGV4dHVhbEtleXdvcmRbXCJfaW50ZXJmYWNlXCJdID0gX2ludGVyZmFjZV0gPSBcIl9pbnRlcmZhY2VcIjtcbiAgY29uc3QgX2lzID0gX2ludGVyZmFjZSArIDE7IENvbnRleHR1YWxLZXl3b3JkW0NvbnRleHR1YWxLZXl3b3JkW1wiX2lzXCJdID0gX2lzXSA9IFwiX2lzXCI7XG4gIGNvbnN0IF9rZXlvZiA9IF9pcyArIDE7IENvbnRleHR1YWxLZXl3b3JkW0NvbnRleHR1YWxLZXl3b3JkW1wiX2tleW9mXCJdID0gX2tleW9mXSA9IFwiX2tleW9mXCI7XG4gIGNvbnN0IF9taXhpbnMgPSBfa2V5b2YgKyAxOyBDb250ZXh0dWFsS2V5d29yZFtDb250ZXh0dWFsS2V5d29yZFtcIl9taXhpbnNcIl0gPSBfbWl4aW5zXSA9IFwiX21peGluc1wiO1xuICBjb25zdCBfbW9kdWxlID0gX21peGlucyArIDE7IENvbnRleHR1YWxLZXl3b3JkW0NvbnRleHR1YWxLZXl3b3JkW1wiX21vZHVsZVwiXSA9IF9tb2R1bGVdID0gXCJfbW9kdWxlXCI7XG4gIGNvbnN0IF9uYW1lc3BhY2UgPSBfbW9kdWxlICsgMTsgQ29udGV4dHVhbEtleXdvcmRbQ29udGV4dHVhbEtleXdvcmRbXCJfbmFtZXNwYWNlXCJdID0gX25hbWVzcGFjZV0gPSBcIl9uYW1lc3BhY2VcIjtcbiAgY29uc3QgX29mID0gX25hbWVzcGFjZSArIDE7IENvbnRleHR1YWxLZXl3b3JkW0NvbnRleHR1YWxLZXl3b3JkW1wiX29mXCJdID0gX29mXSA9IFwiX29mXCI7XG4gIGNvbnN0IF9vcGFxdWUgPSBfb2YgKyAxOyBDb250ZXh0dWFsS2V5d29yZFtDb250ZXh0dWFsS2V5d29yZFtcIl9vcGFxdWVcIl0gPSBfb3BhcXVlXSA9IFwiX29wYXF1ZVwiO1xuICBjb25zdCBfb3V0ID0gX29wYXF1ZSArIDE7IENvbnRleHR1YWxLZXl3b3JkW0NvbnRleHR1YWxLZXl3b3JkW1wiX291dFwiXSA9IF9vdXRdID0gXCJfb3V0XCI7XG4gIGNvbnN0IF9vdmVycmlkZSA9IF9vdXQgKyAxOyBDb250ZXh0dWFsS2V5d29yZFtDb250ZXh0dWFsS2V5d29yZFtcIl9vdmVycmlkZVwiXSA9IF9vdmVycmlkZV0gPSBcIl9vdmVycmlkZVwiO1xuICBjb25zdCBfcHJpdmF0ZSA9IF9vdmVycmlkZSArIDE7IENvbnRleHR1YWxLZXl3b3JkW0NvbnRleHR1YWxLZXl3b3JkW1wiX3ByaXZhdGVcIl0gPSBfcHJpdmF0ZV0gPSBcIl9wcml2YXRlXCI7XG4gIGNvbnN0IF9wcm90ZWN0ZWQgPSBfcHJpdmF0ZSArIDE7IENvbnRleHR1YWxLZXl3b3JkW0NvbnRleHR1YWxLZXl3b3JkW1wiX3Byb3RlY3RlZFwiXSA9IF9wcm90ZWN0ZWRdID0gXCJfcHJvdGVjdGVkXCI7XG4gIGNvbnN0IF9wcm90byA9IF9wcm90ZWN0ZWQgKyAxOyBDb250ZXh0dWFsS2V5d29yZFtDb250ZXh0dWFsS2V5d29yZFtcIl9wcm90b1wiXSA9IF9wcm90b10gPSBcIl9wcm90b1wiO1xuICBjb25zdCBfcHVibGljID0gX3Byb3RvICsgMTsgQ29udGV4dHVhbEtleXdvcmRbQ29udGV4dHVhbEtleXdvcmRbXCJfcHVibGljXCJdID0gX3B1YmxpY10gPSBcIl9wdWJsaWNcIjtcbiAgY29uc3QgX3JlYWRvbmx5ID0gX3B1YmxpYyArIDE7IENvbnRleHR1YWxLZXl3b3JkW0NvbnRleHR1YWxLZXl3b3JkW1wiX3JlYWRvbmx5XCJdID0gX3JlYWRvbmx5XSA9IFwiX3JlYWRvbmx5XCI7XG4gIGNvbnN0IF9yZXF1aXJlID0gX3JlYWRvbmx5ICsgMTsgQ29udGV4dHVhbEtleXdvcmRbQ29udGV4dHVhbEtleXdvcmRbXCJfcmVxdWlyZVwiXSA9IF9yZXF1aXJlXSA9IFwiX3JlcXVpcmVcIjtcbiAgY29uc3QgX3NhdGlzZmllcyA9IF9yZXF1aXJlICsgMTsgQ29udGV4dHVhbEtleXdvcmRbQ29udGV4dHVhbEtleXdvcmRbXCJfc2F0aXNmaWVzXCJdID0gX3NhdGlzZmllc10gPSBcIl9zYXRpc2ZpZXNcIjtcbiAgY29uc3QgX3NldCA9IF9zYXRpc2ZpZXMgKyAxOyBDb250ZXh0dWFsS2V5d29yZFtDb250ZXh0dWFsS2V5d29yZFtcIl9zZXRcIl0gPSBfc2V0XSA9IFwiX3NldFwiO1xuICBjb25zdCBfc3RhdGljID0gX3NldCArIDE7IENvbnRleHR1YWxLZXl3b3JkW0NvbnRleHR1YWxLZXl3b3JkW1wiX3N0YXRpY1wiXSA9IF9zdGF0aWNdID0gXCJfc3RhdGljXCI7XG4gIGNvbnN0IF9zeW1ib2wgPSBfc3RhdGljICsgMTsgQ29udGV4dHVhbEtleXdvcmRbQ29udGV4dHVhbEtleXdvcmRbXCJfc3ltYm9sXCJdID0gX3N5bWJvbF0gPSBcIl9zeW1ib2xcIjtcbiAgY29uc3QgX3R5cGUgPSBfc3ltYm9sICsgMTsgQ29udGV4dHVhbEtleXdvcmRbQ29udGV4dHVhbEtleXdvcmRbXCJfdHlwZVwiXSA9IF90eXBlXSA9IFwiX3R5cGVcIjtcbiAgY29uc3QgX3VuaXF1ZSA9IF90eXBlICsgMTsgQ29udGV4dHVhbEtleXdvcmRbQ29udGV4dHVhbEtleXdvcmRbXCJfdW5pcXVlXCJdID0gX3VuaXF1ZV0gPSBcIl91bmlxdWVcIjtcbiAgY29uc3QgX3VzaW5nID0gX3VuaXF1ZSArIDE7IENvbnRleHR1YWxLZXl3b3JkW0NvbnRleHR1YWxLZXl3b3JkW1wiX3VzaW5nXCJdID0gX3VzaW5nXSA9IFwiX3VzaW5nXCI7XG59KShDb250ZXh0dWFsS2V5d29yZCB8fCAoZXhwb3J0cy5Db250ZXh0dWFsS2V5d29yZCA9IENvbnRleHR1YWxLZXl3b3JkID0ge30pKTtcbiIsICJcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHt2YWx1ZTogdHJ1ZX0pOy8vIEdlbmVyYXRlZCBmaWxlLCBkbyBub3QgZWRpdCEgUnVuIFwieWFybiBnZW5lcmF0ZVwiIHRvIHJlLWdlbmVyYXRlIHRoaXMgZmlsZS5cbi8qIGlzdGFuYnVsIGlnbm9yZSBmaWxlICovXG4vKipcbiAqIEVudW0gb2YgYWxsIHRva2VuIHR5cGVzLCB3aXRoIGJpdCBmaWVsZHMgdG8gc2lnbmlmeSBtZWFuaW5nZnVsIHByb3BlcnRpZXMuXG4gKi9cbnZhciBUb2tlblR5cGU7IChmdW5jdGlvbiAoVG9rZW5UeXBlKSB7XG4gIC8vIFByZWNlZGVuY2UgMCBtZWFucyBub3QgYW4gb3BlcmF0b3I7IG90aGVyd2lzZSBpdCBpcyBhIHBvc2l0aXZlIG51bWJlciB1cCB0byAxMi5cbiAgY29uc3QgUFJFQ0VERU5DRV9NQVNLID0gMHhmOyBUb2tlblR5cGVbVG9rZW5UeXBlW1wiUFJFQ0VERU5DRV9NQVNLXCJdID0gUFJFQ0VERU5DRV9NQVNLXSA9IFwiUFJFQ0VERU5DRV9NQVNLXCI7XG4gIGNvbnN0IElTX0tFWVdPUkQgPSAxIDw8IDQ7IFRva2VuVHlwZVtUb2tlblR5cGVbXCJJU19LRVlXT1JEXCJdID0gSVNfS0VZV09SRF0gPSBcIklTX0tFWVdPUkRcIjtcbiAgY29uc3QgSVNfQVNTSUdOID0gMSA8PCA1OyBUb2tlblR5cGVbVG9rZW5UeXBlW1wiSVNfQVNTSUdOXCJdID0gSVNfQVNTSUdOXSA9IFwiSVNfQVNTSUdOXCI7XG4gIGNvbnN0IElTX1JJR0hUX0FTU09DSUFUSVZFID0gMSA8PCA2OyBUb2tlblR5cGVbVG9rZW5UeXBlW1wiSVNfUklHSFRfQVNTT0NJQVRJVkVcIl0gPSBJU19SSUdIVF9BU1NPQ0lBVElWRV0gPSBcIklTX1JJR0hUX0FTU09DSUFUSVZFXCI7XG4gIGNvbnN0IElTX1BSRUZJWCA9IDEgPDwgNzsgVG9rZW5UeXBlW1Rva2VuVHlwZVtcIklTX1BSRUZJWFwiXSA9IElTX1BSRUZJWF0gPSBcIklTX1BSRUZJWFwiO1xuICBjb25zdCBJU19QT1NURklYID0gMSA8PCA4OyBUb2tlblR5cGVbVG9rZW5UeXBlW1wiSVNfUE9TVEZJWFwiXSA9IElTX1BPU1RGSVhdID0gXCJJU19QT1NURklYXCI7XG4gIGNvbnN0IElTX0VYUFJFU1NJT05fU1RBUlQgPSAxIDw8IDk7IFRva2VuVHlwZVtUb2tlblR5cGVbXCJJU19FWFBSRVNTSU9OX1NUQVJUXCJdID0gSVNfRVhQUkVTU0lPTl9TVEFSVF0gPSBcIklTX0VYUFJFU1NJT05fU1RBUlRcIjtcblxuICBjb25zdCBudW0gPSA1MTI7IFRva2VuVHlwZVtUb2tlblR5cGVbXCJudW1cIl0gPSBudW1dID0gXCJudW1cIjsgLy8gbnVtIHN0YXJ0c0V4cHJcbiAgY29uc3QgYmlnaW50ID0gMTUzNjsgVG9rZW5UeXBlW1Rva2VuVHlwZVtcImJpZ2ludFwiXSA9IGJpZ2ludF0gPSBcImJpZ2ludFwiOyAvLyBiaWdpbnQgc3RhcnRzRXhwclxuICBjb25zdCBkZWNpbWFsID0gMjU2MDsgVG9rZW5UeXBlW1Rva2VuVHlwZVtcImRlY2ltYWxcIl0gPSBkZWNpbWFsXSA9IFwiZGVjaW1hbFwiOyAvLyBkZWNpbWFsIHN0YXJ0c0V4cHJcbiAgY29uc3QgcmVnZXhwID0gMzU4NDsgVG9rZW5UeXBlW1Rva2VuVHlwZVtcInJlZ2V4cFwiXSA9IHJlZ2V4cF0gPSBcInJlZ2V4cFwiOyAvLyByZWdleHAgc3RhcnRzRXhwclxuICBjb25zdCBzdHJpbmcgPSA0NjA4OyBUb2tlblR5cGVbVG9rZW5UeXBlW1wic3RyaW5nXCJdID0gc3RyaW5nXSA9IFwic3RyaW5nXCI7IC8vIHN0cmluZyBzdGFydHNFeHByXG4gIGNvbnN0IG5hbWUgPSA1NjMyOyBUb2tlblR5cGVbVG9rZW5UeXBlW1wibmFtZVwiXSA9IG5hbWVdID0gXCJuYW1lXCI7IC8vIG5hbWUgc3RhcnRzRXhwclxuICBjb25zdCBlb2YgPSA2MTQ0OyBUb2tlblR5cGVbVG9rZW5UeXBlW1wiZW9mXCJdID0gZW9mXSA9IFwiZW9mXCI7IC8vIGVvZlxuICBjb25zdCBicmFja2V0TCA9IDc2ODA7IFRva2VuVHlwZVtUb2tlblR5cGVbXCJicmFja2V0TFwiXSA9IGJyYWNrZXRMXSA9IFwiYnJhY2tldExcIjsgLy8gWyBzdGFydHNFeHByXG4gIGNvbnN0IGJyYWNrZXRSID0gODE5MjsgVG9rZW5UeXBlW1Rva2VuVHlwZVtcImJyYWNrZXRSXCJdID0gYnJhY2tldFJdID0gXCJicmFja2V0UlwiOyAvLyBdXG4gIGNvbnN0IGJyYWNlTCA9IDk3Mjg7IFRva2VuVHlwZVtUb2tlblR5cGVbXCJicmFjZUxcIl0gPSBicmFjZUxdID0gXCJicmFjZUxcIjsgLy8geyBzdGFydHNFeHByXG4gIGNvbnN0IGJyYWNlQmFyTCA9IDEwNzUyOyBUb2tlblR5cGVbVG9rZW5UeXBlW1wiYnJhY2VCYXJMXCJdID0gYnJhY2VCYXJMXSA9IFwiYnJhY2VCYXJMXCI7IC8vIHt8IHN0YXJ0c0V4cHJcbiAgY29uc3QgYnJhY2VSID0gMTEyNjQ7IFRva2VuVHlwZVtUb2tlblR5cGVbXCJicmFjZVJcIl0gPSBicmFjZVJdID0gXCJicmFjZVJcIjsgLy8gfVxuICBjb25zdCBicmFjZUJhclIgPSAxMjI4ODsgVG9rZW5UeXBlW1Rva2VuVHlwZVtcImJyYWNlQmFyUlwiXSA9IGJyYWNlQmFyUl0gPSBcImJyYWNlQmFyUlwiOyAvLyB8fVxuICBjb25zdCBwYXJlbkwgPSAxMzgyNDsgVG9rZW5UeXBlW1Rva2VuVHlwZVtcInBhcmVuTFwiXSA9IHBhcmVuTF0gPSBcInBhcmVuTFwiOyAvLyAoIHN0YXJ0c0V4cHJcbiAgY29uc3QgcGFyZW5SID0gMTQzMzY7IFRva2VuVHlwZVtUb2tlblR5cGVbXCJwYXJlblJcIl0gPSBwYXJlblJdID0gXCJwYXJlblJcIjsgLy8gKVxuICBjb25zdCBjb21tYSA9IDE1MzYwOyBUb2tlblR5cGVbVG9rZW5UeXBlW1wiY29tbWFcIl0gPSBjb21tYV0gPSBcImNvbW1hXCI7IC8vICxcbiAgY29uc3Qgc2VtaSA9IDE2Mzg0OyBUb2tlblR5cGVbVG9rZW5UeXBlW1wic2VtaVwiXSA9IHNlbWldID0gXCJzZW1pXCI7IC8vIDtcbiAgY29uc3QgY29sb24gPSAxNzQwODsgVG9rZW5UeXBlW1Rva2VuVHlwZVtcImNvbG9uXCJdID0gY29sb25dID0gXCJjb2xvblwiOyAvLyA6XG4gIGNvbnN0IGRvdWJsZUNvbG9uID0gMTg0MzI7IFRva2VuVHlwZVtUb2tlblR5cGVbXCJkb3VibGVDb2xvblwiXSA9IGRvdWJsZUNvbG9uXSA9IFwiZG91YmxlQ29sb25cIjsgLy8gOjpcbiAgY29uc3QgZG90ID0gMTk0NTY7IFRva2VuVHlwZVtUb2tlblR5cGVbXCJkb3RcIl0gPSBkb3RdID0gXCJkb3RcIjsgLy8gLlxuICBjb25zdCBxdWVzdGlvbiA9IDIwNDgwOyBUb2tlblR5cGVbVG9rZW5UeXBlW1wicXVlc3Rpb25cIl0gPSBxdWVzdGlvbl0gPSBcInF1ZXN0aW9uXCI7IC8vID9cbiAgY29uc3QgcXVlc3Rpb25Eb3QgPSAyMTUwNDsgVG9rZW5UeXBlW1Rva2VuVHlwZVtcInF1ZXN0aW9uRG90XCJdID0gcXVlc3Rpb25Eb3RdID0gXCJxdWVzdGlvbkRvdFwiOyAvLyA/LlxuICBjb25zdCBhcnJvdyA9IDIyNTI4OyBUb2tlblR5cGVbVG9rZW5UeXBlW1wiYXJyb3dcIl0gPSBhcnJvd10gPSBcImFycm93XCI7IC8vID0+XG4gIGNvbnN0IHRlbXBsYXRlID0gMjM1NTI7IFRva2VuVHlwZVtUb2tlblR5cGVbXCJ0ZW1wbGF0ZVwiXSA9IHRlbXBsYXRlXSA9IFwidGVtcGxhdGVcIjsgLy8gdGVtcGxhdGVcbiAgY29uc3QgZWxsaXBzaXMgPSAyNDU3NjsgVG9rZW5UeXBlW1Rva2VuVHlwZVtcImVsbGlwc2lzXCJdID0gZWxsaXBzaXNdID0gXCJlbGxpcHNpc1wiOyAvLyAuLi5cbiAgY29uc3QgYmFja1F1b3RlID0gMjU2MDA7IFRva2VuVHlwZVtUb2tlblR5cGVbXCJiYWNrUXVvdGVcIl0gPSBiYWNrUXVvdGVdID0gXCJiYWNrUXVvdGVcIjsgLy8gYFxuICBjb25zdCBkb2xsYXJCcmFjZUwgPSAyNzEzNjsgVG9rZW5UeXBlW1Rva2VuVHlwZVtcImRvbGxhckJyYWNlTFwiXSA9IGRvbGxhckJyYWNlTF0gPSBcImRvbGxhckJyYWNlTFwiOyAvLyAkeyBzdGFydHNFeHByXG4gIGNvbnN0IGF0ID0gMjc2NDg7IFRva2VuVHlwZVtUb2tlblR5cGVbXCJhdFwiXSA9IGF0XSA9IFwiYXRcIjsgLy8gQFxuICBjb25zdCBoYXNoID0gMjkxODQ7IFRva2VuVHlwZVtUb2tlblR5cGVbXCJoYXNoXCJdID0gaGFzaF0gPSBcImhhc2hcIjsgLy8gIyBzdGFydHNFeHByXG4gIGNvbnN0IGVxID0gMjk3Mjg7IFRva2VuVHlwZVtUb2tlblR5cGVbXCJlcVwiXSA9IGVxXSA9IFwiZXFcIjsgLy8gPSBpc0Fzc2lnblxuICBjb25zdCBhc3NpZ24gPSAzMDc1MjsgVG9rZW5UeXBlW1Rva2VuVHlwZVtcImFzc2lnblwiXSA9IGFzc2lnbl0gPSBcImFzc2lnblwiOyAvLyBfPSBpc0Fzc2lnblxuICBjb25zdCBwcmVJbmNEZWMgPSAzMjY0MDsgVG9rZW5UeXBlW1Rva2VuVHlwZVtcInByZUluY0RlY1wiXSA9IHByZUluY0RlY10gPSBcInByZUluY0RlY1wiOyAvLyArKy8tLSBwcmVmaXggcG9zdGZpeCBzdGFydHNFeHByXG4gIGNvbnN0IHBvc3RJbmNEZWMgPSAzMzY2NDsgVG9rZW5UeXBlW1Rva2VuVHlwZVtcInBvc3RJbmNEZWNcIl0gPSBwb3N0SW5jRGVjXSA9IFwicG9zdEluY0RlY1wiOyAvLyArKy8tLSBwcmVmaXggcG9zdGZpeCBzdGFydHNFeHByXG4gIGNvbnN0IGJhbmcgPSAzNDQzMjsgVG9rZW5UeXBlW1Rva2VuVHlwZVtcImJhbmdcIl0gPSBiYW5nXSA9IFwiYmFuZ1wiOyAvLyAhIHByZWZpeCBzdGFydHNFeHByXG4gIGNvbnN0IHRpbGRlID0gMzU0NTY7IFRva2VuVHlwZVtUb2tlblR5cGVbXCJ0aWxkZVwiXSA9IHRpbGRlXSA9IFwidGlsZGVcIjsgLy8gfiBwcmVmaXggc3RhcnRzRXhwclxuICBjb25zdCBwaXBlbGluZSA9IDM1ODQxOyBUb2tlblR5cGVbVG9rZW5UeXBlW1wicGlwZWxpbmVcIl0gPSBwaXBlbGluZV0gPSBcInBpcGVsaW5lXCI7IC8vIHw+IHByZWM6MVxuICBjb25zdCBudWxsaXNoQ29hbGVzY2luZyA9IDM2ODY2OyBUb2tlblR5cGVbVG9rZW5UeXBlW1wibnVsbGlzaENvYWxlc2NpbmdcIl0gPSBudWxsaXNoQ29hbGVzY2luZ10gPSBcIm51bGxpc2hDb2FsZXNjaW5nXCI7IC8vID8/IHByZWM6MlxuICBjb25zdCBsb2dpY2FsT1IgPSAzNzg5MDsgVG9rZW5UeXBlW1Rva2VuVHlwZVtcImxvZ2ljYWxPUlwiXSA9IGxvZ2ljYWxPUl0gPSBcImxvZ2ljYWxPUlwiOyAvLyB8fCBwcmVjOjJcbiAgY29uc3QgbG9naWNhbEFORCA9IDM4OTE1OyBUb2tlblR5cGVbVG9rZW5UeXBlW1wibG9naWNhbEFORFwiXSA9IGxvZ2ljYWxBTkRdID0gXCJsb2dpY2FsQU5EXCI7IC8vICYmIHByZWM6M1xuICBjb25zdCBiaXR3aXNlT1IgPSAzOTk0MDsgVG9rZW5UeXBlW1Rva2VuVHlwZVtcImJpdHdpc2VPUlwiXSA9IGJpdHdpc2VPUl0gPSBcImJpdHdpc2VPUlwiOyAvLyB8IHByZWM6NFxuICBjb25zdCBiaXR3aXNlWE9SID0gNDA5NjU7IFRva2VuVHlwZVtUb2tlblR5cGVbXCJiaXR3aXNlWE9SXCJdID0gYml0d2lzZVhPUl0gPSBcImJpdHdpc2VYT1JcIjsgLy8gXiBwcmVjOjVcbiAgY29uc3QgYml0d2lzZUFORCA9IDQxOTkwOyBUb2tlblR5cGVbVG9rZW5UeXBlW1wiYml0d2lzZUFORFwiXSA9IGJpdHdpc2VBTkRdID0gXCJiaXR3aXNlQU5EXCI7IC8vICYgcHJlYzo2XG4gIGNvbnN0IGVxdWFsaXR5ID0gNDMwMTU7IFRva2VuVHlwZVtUb2tlblR5cGVbXCJlcXVhbGl0eVwiXSA9IGVxdWFsaXR5XSA9IFwiZXF1YWxpdHlcIjsgLy8gPT0vIT0gcHJlYzo3XG4gIGNvbnN0IGxlc3NUaGFuID0gNDQwNDA7IFRva2VuVHlwZVtUb2tlblR5cGVbXCJsZXNzVGhhblwiXSA9IGxlc3NUaGFuXSA9IFwibGVzc1RoYW5cIjsgLy8gPCBwcmVjOjhcbiAgY29uc3QgZ3JlYXRlclRoYW4gPSA0NTA2NDsgVG9rZW5UeXBlW1Rva2VuVHlwZVtcImdyZWF0ZXJUaGFuXCJdID0gZ3JlYXRlclRoYW5dID0gXCJncmVhdGVyVGhhblwiOyAvLyA+IHByZWM6OFxuICBjb25zdCByZWxhdGlvbmFsT3JFcXVhbCA9IDQ2MDg4OyBUb2tlblR5cGVbVG9rZW5UeXBlW1wicmVsYXRpb25hbE9yRXF1YWxcIl0gPSByZWxhdGlvbmFsT3JFcXVhbF0gPSBcInJlbGF0aW9uYWxPckVxdWFsXCI7IC8vIDw9Lz49IHByZWM6OFxuICBjb25zdCBiaXRTaGlmdEwgPSA0NzExMzsgVG9rZW5UeXBlW1Rva2VuVHlwZVtcImJpdFNoaWZ0TFwiXSA9IGJpdFNoaWZ0TF0gPSBcImJpdFNoaWZ0TFwiOyAvLyA8PCBwcmVjOjlcbiAgY29uc3QgYml0U2hpZnRSID0gNDgxMzc7IFRva2VuVHlwZVtUb2tlblR5cGVbXCJiaXRTaGlmdFJcIl0gPSBiaXRTaGlmdFJdID0gXCJiaXRTaGlmdFJcIjsgLy8gPj4vPj4+IHByZWM6OVxuICBjb25zdCBwbHVzID0gNDk4MDI7IFRva2VuVHlwZVtUb2tlblR5cGVbXCJwbHVzXCJdID0gcGx1c10gPSBcInBsdXNcIjsgLy8gKyBwcmVjOjEwIHByZWZpeCBzdGFydHNFeHByXG4gIGNvbnN0IG1pbnVzID0gNTA4MjY7IFRva2VuVHlwZVtUb2tlblR5cGVbXCJtaW51c1wiXSA9IG1pbnVzXSA9IFwibWludXNcIjsgLy8gLSBwcmVjOjEwIHByZWZpeCBzdGFydHNFeHByXG4gIGNvbnN0IG1vZHVsbyA9IDUxNzIzOyBUb2tlblR5cGVbVG9rZW5UeXBlW1wibW9kdWxvXCJdID0gbW9kdWxvXSA9IFwibW9kdWxvXCI7IC8vICUgcHJlYzoxMSBzdGFydHNFeHByXG4gIGNvbnN0IHN0YXIgPSA1MjIzNTsgVG9rZW5UeXBlW1Rva2VuVHlwZVtcInN0YXJcIl0gPSBzdGFyXSA9IFwic3RhclwiOyAvLyAqIHByZWM6MTFcbiAgY29uc3Qgc2xhc2ggPSA1MzI1OTsgVG9rZW5UeXBlW1Rva2VuVHlwZVtcInNsYXNoXCJdID0gc2xhc2hdID0gXCJzbGFzaFwiOyAvLyAvIHByZWM6MTFcbiAgY29uc3QgZXhwb25lbnQgPSA1NDM0ODsgVG9rZW5UeXBlW1Rva2VuVHlwZVtcImV4cG9uZW50XCJdID0gZXhwb25lbnRdID0gXCJleHBvbmVudFwiOyAvLyAqKiBwcmVjOjEyIHJpZ2h0QXNzb2NpYXRpdmVcbiAgY29uc3QganN4TmFtZSA9IDU1Mjk2OyBUb2tlblR5cGVbVG9rZW5UeXBlW1wianN4TmFtZVwiXSA9IGpzeE5hbWVdID0gXCJqc3hOYW1lXCI7IC8vIGpzeE5hbWVcbiAgY29uc3QganN4VGV4dCA9IDU2MzIwOyBUb2tlblR5cGVbVG9rZW5UeXBlW1wianN4VGV4dFwiXSA9IGpzeFRleHRdID0gXCJqc3hUZXh0XCI7IC8vIGpzeFRleHRcbiAgY29uc3QganN4RW1wdHlUZXh0ID0gNTczNDQ7IFRva2VuVHlwZVtUb2tlblR5cGVbXCJqc3hFbXB0eVRleHRcIl0gPSBqc3hFbXB0eVRleHRdID0gXCJqc3hFbXB0eVRleHRcIjsgLy8ganN4RW1wdHlUZXh0XG4gIGNvbnN0IGpzeFRhZ1N0YXJ0ID0gNTg4ODA7IFRva2VuVHlwZVtUb2tlblR5cGVbXCJqc3hUYWdTdGFydFwiXSA9IGpzeFRhZ1N0YXJ0XSA9IFwianN4VGFnU3RhcnRcIjsgLy8ganN4VGFnU3RhcnQgc3RhcnRzRXhwclxuICBjb25zdCBqc3hUYWdFbmQgPSA1OTM5MjsgVG9rZW5UeXBlW1Rva2VuVHlwZVtcImpzeFRhZ0VuZFwiXSA9IGpzeFRhZ0VuZF0gPSBcImpzeFRhZ0VuZFwiOyAvLyBqc3hUYWdFbmRcbiAgY29uc3QgdHlwZVBhcmFtZXRlclN0YXJ0ID0gNjA5Mjg7IFRva2VuVHlwZVtUb2tlblR5cGVbXCJ0eXBlUGFyYW1ldGVyU3RhcnRcIl0gPSB0eXBlUGFyYW1ldGVyU3RhcnRdID0gXCJ0eXBlUGFyYW1ldGVyU3RhcnRcIjsgLy8gdHlwZVBhcmFtZXRlclN0YXJ0IHN0YXJ0c0V4cHJcbiAgY29uc3Qgbm9uTnVsbEFzc2VydGlvbiA9IDYxNDQwOyBUb2tlblR5cGVbVG9rZW5UeXBlW1wibm9uTnVsbEFzc2VydGlvblwiXSA9IG5vbk51bGxBc3NlcnRpb25dID0gXCJub25OdWxsQXNzZXJ0aW9uXCI7IC8vIG5vbk51bGxBc3NlcnRpb25cbiAgY29uc3QgX2JyZWFrID0gNjI0ODA7IFRva2VuVHlwZVtUb2tlblR5cGVbXCJfYnJlYWtcIl0gPSBfYnJlYWtdID0gXCJfYnJlYWtcIjsgLy8gYnJlYWsga2V5d29yZFxuICBjb25zdCBfY2FzZSA9IDYzNTA0OyBUb2tlblR5cGVbVG9rZW5UeXBlW1wiX2Nhc2VcIl0gPSBfY2FzZV0gPSBcIl9jYXNlXCI7IC8vIGNhc2Uga2V5d29yZFxuICBjb25zdCBfY2F0Y2ggPSA2NDUyODsgVG9rZW5UeXBlW1Rva2VuVHlwZVtcIl9jYXRjaFwiXSA9IF9jYXRjaF0gPSBcIl9jYXRjaFwiOyAvLyBjYXRjaCBrZXl3b3JkXG4gIGNvbnN0IF9jb250aW51ZSA9IDY1NTUyOyBUb2tlblR5cGVbVG9rZW5UeXBlW1wiX2NvbnRpbnVlXCJdID0gX2NvbnRpbnVlXSA9IFwiX2NvbnRpbnVlXCI7IC8vIGNvbnRpbnVlIGtleXdvcmRcbiAgY29uc3QgX2RlYnVnZ2VyID0gNjY1NzY7IFRva2VuVHlwZVtUb2tlblR5cGVbXCJfZGVidWdnZXJcIl0gPSBfZGVidWdnZXJdID0gXCJfZGVidWdnZXJcIjsgLy8gZGVidWdnZXIga2V5d29yZFxuICBjb25zdCBfZGVmYXVsdCA9IDY3NjAwOyBUb2tlblR5cGVbVG9rZW5UeXBlW1wiX2RlZmF1bHRcIl0gPSBfZGVmYXVsdF0gPSBcIl9kZWZhdWx0XCI7IC8vIGRlZmF1bHQga2V5d29yZFxuICBjb25zdCBfZG8gPSA2ODYyNDsgVG9rZW5UeXBlW1Rva2VuVHlwZVtcIl9kb1wiXSA9IF9kb10gPSBcIl9kb1wiOyAvLyBkbyBrZXl3b3JkXG4gIGNvbnN0IF9lbHNlID0gNjk2NDg7IFRva2VuVHlwZVtUb2tlblR5cGVbXCJfZWxzZVwiXSA9IF9lbHNlXSA9IFwiX2Vsc2VcIjsgLy8gZWxzZSBrZXl3b3JkXG4gIGNvbnN0IF9maW5hbGx5ID0gNzA2NzI7IFRva2VuVHlwZVtUb2tlblR5cGVbXCJfZmluYWxseVwiXSA9IF9maW5hbGx5XSA9IFwiX2ZpbmFsbHlcIjsgLy8gZmluYWxseSBrZXl3b3JkXG4gIGNvbnN0IF9mb3IgPSA3MTY5NjsgVG9rZW5UeXBlW1Rva2VuVHlwZVtcIl9mb3JcIl0gPSBfZm9yXSA9IFwiX2ZvclwiOyAvLyBmb3Iga2V5d29yZFxuICBjb25zdCBfZnVuY3Rpb24gPSA3MzIzMjsgVG9rZW5UeXBlW1Rva2VuVHlwZVtcIl9mdW5jdGlvblwiXSA9IF9mdW5jdGlvbl0gPSBcIl9mdW5jdGlvblwiOyAvLyBmdW5jdGlvbiBrZXl3b3JkIHN0YXJ0c0V4cHJcbiAgY29uc3QgX2lmID0gNzM3NDQ7IFRva2VuVHlwZVtUb2tlblR5cGVbXCJfaWZcIl0gPSBfaWZdID0gXCJfaWZcIjsgLy8gaWYga2V5d29yZFxuICBjb25zdCBfcmV0dXJuID0gNzQ3Njg7IFRva2VuVHlwZVtUb2tlblR5cGVbXCJfcmV0dXJuXCJdID0gX3JldHVybl0gPSBcIl9yZXR1cm5cIjsgLy8gcmV0dXJuIGtleXdvcmRcbiAgY29uc3QgX3N3aXRjaCA9IDc1NzkyOyBUb2tlblR5cGVbVG9rZW5UeXBlW1wiX3N3aXRjaFwiXSA9IF9zd2l0Y2hdID0gXCJfc3dpdGNoXCI7IC8vIHN3aXRjaCBrZXl3b3JkXG4gIGNvbnN0IF90aHJvdyA9IDc3NDU2OyBUb2tlblR5cGVbVG9rZW5UeXBlW1wiX3Rocm93XCJdID0gX3Rocm93XSA9IFwiX3Rocm93XCI7IC8vIHRocm93IGtleXdvcmQgcHJlZml4IHN0YXJ0c0V4cHJcbiAgY29uc3QgX3RyeSA9IDc3ODQwOyBUb2tlblR5cGVbVG9rZW5UeXBlW1wiX3RyeVwiXSA9IF90cnldID0gXCJfdHJ5XCI7IC8vIHRyeSBrZXl3b3JkXG4gIGNvbnN0IF92YXIgPSA3ODg2NDsgVG9rZW5UeXBlW1Rva2VuVHlwZVtcIl92YXJcIl0gPSBfdmFyXSA9IFwiX3ZhclwiOyAvLyB2YXIga2V5d29yZFxuICBjb25zdCBfbGV0ID0gNzk4ODg7IFRva2VuVHlwZVtUb2tlblR5cGVbXCJfbGV0XCJdID0gX2xldF0gPSBcIl9sZXRcIjsgLy8gbGV0IGtleXdvcmRcbiAgY29uc3QgX2NvbnN0ID0gODA5MTI7IFRva2VuVHlwZVtUb2tlblR5cGVbXCJfY29uc3RcIl0gPSBfY29uc3RdID0gXCJfY29uc3RcIjsgLy8gY29uc3Qga2V5d29yZFxuICBjb25zdCBfd2hpbGUgPSA4MTkzNjsgVG9rZW5UeXBlW1Rva2VuVHlwZVtcIl93aGlsZVwiXSA9IF93aGlsZV0gPSBcIl93aGlsZVwiOyAvLyB3aGlsZSBrZXl3b3JkXG4gIGNvbnN0IF93aXRoID0gODI5NjA7IFRva2VuVHlwZVtUb2tlblR5cGVbXCJfd2l0aFwiXSA9IF93aXRoXSA9IFwiX3dpdGhcIjsgLy8gd2l0aCBrZXl3b3JkXG4gIGNvbnN0IF9uZXcgPSA4NDQ5NjsgVG9rZW5UeXBlW1Rva2VuVHlwZVtcIl9uZXdcIl0gPSBfbmV3XSA9IFwiX25ld1wiOyAvLyBuZXcga2V5d29yZCBzdGFydHNFeHByXG4gIGNvbnN0IF90aGlzID0gODU1MjA7IFRva2VuVHlwZVtUb2tlblR5cGVbXCJfdGhpc1wiXSA9IF90aGlzXSA9IFwiX3RoaXNcIjsgLy8gdGhpcyBrZXl3b3JkIHN0YXJ0c0V4cHJcbiAgY29uc3QgX3N1cGVyID0gODY1NDQ7IFRva2VuVHlwZVtUb2tlblR5cGVbXCJfc3VwZXJcIl0gPSBfc3VwZXJdID0gXCJfc3VwZXJcIjsgLy8gc3VwZXIga2V5d29yZCBzdGFydHNFeHByXG4gIGNvbnN0IF9jbGFzcyA9IDg3NTY4OyBUb2tlblR5cGVbVG9rZW5UeXBlW1wiX2NsYXNzXCJdID0gX2NsYXNzXSA9IFwiX2NsYXNzXCI7IC8vIGNsYXNzIGtleXdvcmQgc3RhcnRzRXhwclxuICBjb25zdCBfZXh0ZW5kcyA9IDg4MDgwOyBUb2tlblR5cGVbVG9rZW5UeXBlW1wiX2V4dGVuZHNcIl0gPSBfZXh0ZW5kc10gPSBcIl9leHRlbmRzXCI7IC8vIGV4dGVuZHMga2V5d29yZFxuICBjb25zdCBfZXhwb3J0ID0gODkxMDQ7IFRva2VuVHlwZVtUb2tlblR5cGVbXCJfZXhwb3J0XCJdID0gX2V4cG9ydF0gPSBcIl9leHBvcnRcIjsgLy8gZXhwb3J0IGtleXdvcmRcbiAgY29uc3QgX2ltcG9ydCA9IDkwNjQwOyBUb2tlblR5cGVbVG9rZW5UeXBlW1wiX2ltcG9ydFwiXSA9IF9pbXBvcnRdID0gXCJfaW1wb3J0XCI7IC8vIGltcG9ydCBrZXl3b3JkIHN0YXJ0c0V4cHJcbiAgY29uc3QgX3lpZWxkID0gOTE2NjQ7IFRva2VuVHlwZVtUb2tlblR5cGVbXCJfeWllbGRcIl0gPSBfeWllbGRdID0gXCJfeWllbGRcIjsgLy8geWllbGQga2V5d29yZCBzdGFydHNFeHByXG4gIGNvbnN0IF9udWxsID0gOTI2ODg7IFRva2VuVHlwZVtUb2tlblR5cGVbXCJfbnVsbFwiXSA9IF9udWxsXSA9IFwiX251bGxcIjsgLy8gbnVsbCBrZXl3b3JkIHN0YXJ0c0V4cHJcbiAgY29uc3QgX3RydWUgPSA5MzcxMjsgVG9rZW5UeXBlW1Rva2VuVHlwZVtcIl90cnVlXCJdID0gX3RydWVdID0gXCJfdHJ1ZVwiOyAvLyB0cnVlIGtleXdvcmQgc3RhcnRzRXhwclxuICBjb25zdCBfZmFsc2UgPSA5NDczNjsgVG9rZW5UeXBlW1Rva2VuVHlwZVtcIl9mYWxzZVwiXSA9IF9mYWxzZV0gPSBcIl9mYWxzZVwiOyAvLyBmYWxzZSBrZXl3b3JkIHN0YXJ0c0V4cHJcbiAgY29uc3QgX2luID0gOTUyNTY7IFRva2VuVHlwZVtUb2tlblR5cGVbXCJfaW5cIl0gPSBfaW5dID0gXCJfaW5cIjsgLy8gaW4gcHJlYzo4IGtleXdvcmRcbiAgY29uc3QgX2luc3RhbmNlb2YgPSA5NjI4MDsgVG9rZW5UeXBlW1Rva2VuVHlwZVtcIl9pbnN0YW5jZW9mXCJdID0gX2luc3RhbmNlb2ZdID0gXCJfaW5zdGFuY2VvZlwiOyAvLyBpbnN0YW5jZW9mIHByZWM6OCBrZXl3b3JkXG4gIGNvbnN0IF90eXBlb2YgPSA5NzkzNjsgVG9rZW5UeXBlW1Rva2VuVHlwZVtcIl90eXBlb2ZcIl0gPSBfdHlwZW9mXSA9IFwiX3R5cGVvZlwiOyAvLyB0eXBlb2Yga2V5d29yZCBwcmVmaXggc3RhcnRzRXhwclxuICBjb25zdCBfdm9pZCA9IDk4OTYwOyBUb2tlblR5cGVbVG9rZW5UeXBlW1wiX3ZvaWRcIl0gPSBfdm9pZF0gPSBcIl92b2lkXCI7IC8vIHZvaWQga2V5d29yZCBwcmVmaXggc3RhcnRzRXhwclxuICBjb25zdCBfZGVsZXRlID0gOTk5ODQ7IFRva2VuVHlwZVtUb2tlblR5cGVbXCJfZGVsZXRlXCJdID0gX2RlbGV0ZV0gPSBcIl9kZWxldGVcIjsgLy8gZGVsZXRlIGtleXdvcmQgcHJlZml4IHN0YXJ0c0V4cHJcbiAgY29uc3QgX2FzeW5jID0gMTAwODgwOyBUb2tlblR5cGVbVG9rZW5UeXBlW1wiX2FzeW5jXCJdID0gX2FzeW5jXSA9IFwiX2FzeW5jXCI7IC8vIGFzeW5jIGtleXdvcmQgc3RhcnRzRXhwclxuICBjb25zdCBfZ2V0ID0gMTAxOTA0OyBUb2tlblR5cGVbVG9rZW5UeXBlW1wiX2dldFwiXSA9IF9nZXRdID0gXCJfZ2V0XCI7IC8vIGdldCBrZXl3b3JkIHN0YXJ0c0V4cHJcbiAgY29uc3QgX3NldCA9IDEwMjkyODsgVG9rZW5UeXBlW1Rva2VuVHlwZVtcIl9zZXRcIl0gPSBfc2V0XSA9IFwiX3NldFwiOyAvLyBzZXQga2V5d29yZCBzdGFydHNFeHByXG4gIGNvbnN0IF9kZWNsYXJlID0gMTAzOTUyOyBUb2tlblR5cGVbVG9rZW5UeXBlW1wiX2RlY2xhcmVcIl0gPSBfZGVjbGFyZV0gPSBcIl9kZWNsYXJlXCI7IC8vIGRlY2xhcmUga2V5d29yZCBzdGFydHNFeHByXG4gIGNvbnN0IF9yZWFkb25seSA9IDEwNDk3NjsgVG9rZW5UeXBlW1Rva2VuVHlwZVtcIl9yZWFkb25seVwiXSA9IF9yZWFkb25seV0gPSBcIl9yZWFkb25seVwiOyAvLyByZWFkb25seSBrZXl3b3JkIHN0YXJ0c0V4cHJcbiAgY29uc3QgX2Fic3RyYWN0ID0gMTA2MDAwOyBUb2tlblR5cGVbVG9rZW5UeXBlW1wiX2Fic3RyYWN0XCJdID0gX2Fic3RyYWN0XSA9IFwiX2Fic3RyYWN0XCI7IC8vIGFic3RyYWN0IGtleXdvcmQgc3RhcnRzRXhwclxuICBjb25zdCBfc3RhdGljID0gMTA3MDI0OyBUb2tlblR5cGVbVG9rZW5UeXBlW1wiX3N0YXRpY1wiXSA9IF9zdGF0aWNdID0gXCJfc3RhdGljXCI7IC8vIHN0YXRpYyBrZXl3b3JkIHN0YXJ0c0V4cHJcbiAgY29uc3QgX3B1YmxpYyA9IDEwNzUzNjsgVG9rZW5UeXBlW1Rva2VuVHlwZVtcIl9wdWJsaWNcIl0gPSBfcHVibGljXSA9IFwiX3B1YmxpY1wiOyAvLyBwdWJsaWMga2V5d29yZFxuICBjb25zdCBfcHJpdmF0ZSA9IDEwODU2MDsgVG9rZW5UeXBlW1Rva2VuVHlwZVtcIl9wcml2YXRlXCJdID0gX3ByaXZhdGVdID0gXCJfcHJpdmF0ZVwiOyAvLyBwcml2YXRlIGtleXdvcmRcbiAgY29uc3QgX3Byb3RlY3RlZCA9IDEwOTU4NDsgVG9rZW5UeXBlW1Rva2VuVHlwZVtcIl9wcm90ZWN0ZWRcIl0gPSBfcHJvdGVjdGVkXSA9IFwiX3Byb3RlY3RlZFwiOyAvLyBwcm90ZWN0ZWQga2V5d29yZFxuICBjb25zdCBfb3ZlcnJpZGUgPSAxMTA2MDg7IFRva2VuVHlwZVtUb2tlblR5cGVbXCJfb3ZlcnJpZGVcIl0gPSBfb3ZlcnJpZGVdID0gXCJfb3ZlcnJpZGVcIjsgLy8gb3ZlcnJpZGUga2V5d29yZFxuICBjb25zdCBfYXMgPSAxMTIxNDQ7IFRva2VuVHlwZVtUb2tlblR5cGVbXCJfYXNcIl0gPSBfYXNdID0gXCJfYXNcIjsgLy8gYXMga2V5d29yZCBzdGFydHNFeHByXG4gIGNvbnN0IF9lbnVtID0gMTEzMTY4OyBUb2tlblR5cGVbVG9rZW5UeXBlW1wiX2VudW1cIl0gPSBfZW51bV0gPSBcIl9lbnVtXCI7IC8vIGVudW0ga2V5d29yZCBzdGFydHNFeHByXG4gIGNvbnN0IF90eXBlID0gMTE0MTkyOyBUb2tlblR5cGVbVG9rZW5UeXBlW1wiX3R5cGVcIl0gPSBfdHlwZV0gPSBcIl90eXBlXCI7IC8vIHR5cGUga2V5d29yZCBzdGFydHNFeHByXG4gIGNvbnN0IF9pbXBsZW1lbnRzID0gMTE1MjE2OyBUb2tlblR5cGVbVG9rZW5UeXBlW1wiX2ltcGxlbWVudHNcIl0gPSBfaW1wbGVtZW50c10gPSBcIl9pbXBsZW1lbnRzXCI7IC8vIGltcGxlbWVudHMga2V5d29yZCBzdGFydHNFeHByXG59KShUb2tlblR5cGUgfHwgKGV4cG9ydHMuVG9rZW5UeXBlID0gVG9rZW5UeXBlID0ge30pKTtcbiBmdW5jdGlvbiBmb3JtYXRUb2tlblR5cGUodG9rZW5UeXBlKSB7XG4gIHN3aXRjaCAodG9rZW5UeXBlKSB7XG4gICAgY2FzZSBUb2tlblR5cGUubnVtOlxuICAgICAgcmV0dXJuIFwibnVtXCI7XG4gICAgY2FzZSBUb2tlblR5cGUuYmlnaW50OlxuICAgICAgcmV0dXJuIFwiYmlnaW50XCI7XG4gICAgY2FzZSBUb2tlblR5cGUuZGVjaW1hbDpcbiAgICAgIHJldHVybiBcImRlY2ltYWxcIjtcbiAgICBjYXNlIFRva2VuVHlwZS5yZWdleHA6XG4gICAgICByZXR1cm4gXCJyZWdleHBcIjtcbiAgICBjYXNlIFRva2VuVHlwZS5zdHJpbmc6XG4gICAgICByZXR1cm4gXCJzdHJpbmdcIjtcbiAgICBjYXNlIFRva2VuVHlwZS5uYW1lOlxuICAgICAgcmV0dXJuIFwibmFtZVwiO1xuICAgIGNhc2UgVG9rZW5UeXBlLmVvZjpcbiAgICAgIHJldHVybiBcImVvZlwiO1xuICAgIGNhc2UgVG9rZW5UeXBlLmJyYWNrZXRMOlxuICAgICAgcmV0dXJuIFwiW1wiO1xuICAgIGNhc2UgVG9rZW5UeXBlLmJyYWNrZXRSOlxuICAgICAgcmV0dXJuIFwiXVwiO1xuICAgIGNhc2UgVG9rZW5UeXBlLmJyYWNlTDpcbiAgICAgIHJldHVybiBcIntcIjtcbiAgICBjYXNlIFRva2VuVHlwZS5icmFjZUJhckw6XG4gICAgICByZXR1cm4gXCJ7fFwiO1xuICAgIGNhc2UgVG9rZW5UeXBlLmJyYWNlUjpcbiAgICAgIHJldHVybiBcIn1cIjtcbiAgICBjYXNlIFRva2VuVHlwZS5icmFjZUJhclI6XG4gICAgICByZXR1cm4gXCJ8fVwiO1xuICAgIGNhc2UgVG9rZW5UeXBlLnBhcmVuTDpcbiAgICAgIHJldHVybiBcIihcIjtcbiAgICBjYXNlIFRva2VuVHlwZS5wYXJlblI6XG4gICAgICByZXR1cm4gXCIpXCI7XG4gICAgY2FzZSBUb2tlblR5cGUuY29tbWE6XG4gICAgICByZXR1cm4gXCIsXCI7XG4gICAgY2FzZSBUb2tlblR5cGUuc2VtaTpcbiAgICAgIHJldHVybiBcIjtcIjtcbiAgICBjYXNlIFRva2VuVHlwZS5jb2xvbjpcbiAgICAgIHJldHVybiBcIjpcIjtcbiAgICBjYXNlIFRva2VuVHlwZS5kb3VibGVDb2xvbjpcbiAgICAgIHJldHVybiBcIjo6XCI7XG4gICAgY2FzZSBUb2tlblR5cGUuZG90OlxuICAgICAgcmV0dXJuIFwiLlwiO1xuICAgIGNhc2UgVG9rZW5UeXBlLnF1ZXN0aW9uOlxuICAgICAgcmV0dXJuIFwiP1wiO1xuICAgIGNhc2UgVG9rZW5UeXBlLnF1ZXN0aW9uRG90OlxuICAgICAgcmV0dXJuIFwiPy5cIjtcbiAgICBjYXNlIFRva2VuVHlwZS5hcnJvdzpcbiAgICAgIHJldHVybiBcIj0+XCI7XG4gICAgY2FzZSBUb2tlblR5cGUudGVtcGxhdGU6XG4gICAgICByZXR1cm4gXCJ0ZW1wbGF0ZVwiO1xuICAgIGNhc2UgVG9rZW5UeXBlLmVsbGlwc2lzOlxuICAgICAgcmV0dXJuIFwiLi4uXCI7XG4gICAgY2FzZSBUb2tlblR5cGUuYmFja1F1b3RlOlxuICAgICAgcmV0dXJuIFwiYFwiO1xuICAgIGNhc2UgVG9rZW5UeXBlLmRvbGxhckJyYWNlTDpcbiAgICAgIHJldHVybiBcIiR7XCI7XG4gICAgY2FzZSBUb2tlblR5cGUuYXQ6XG4gICAgICByZXR1cm4gXCJAXCI7XG4gICAgY2FzZSBUb2tlblR5cGUuaGFzaDpcbiAgICAgIHJldHVybiBcIiNcIjtcbiAgICBjYXNlIFRva2VuVHlwZS5lcTpcbiAgICAgIHJldHVybiBcIj1cIjtcbiAgICBjYXNlIFRva2VuVHlwZS5hc3NpZ246XG4gICAgICByZXR1cm4gXCJfPVwiO1xuICAgIGNhc2UgVG9rZW5UeXBlLnByZUluY0RlYzpcbiAgICAgIHJldHVybiBcIisrLy0tXCI7XG4gICAgY2FzZSBUb2tlblR5cGUucG9zdEluY0RlYzpcbiAgICAgIHJldHVybiBcIisrLy0tXCI7XG4gICAgY2FzZSBUb2tlblR5cGUuYmFuZzpcbiAgICAgIHJldHVybiBcIiFcIjtcbiAgICBjYXNlIFRva2VuVHlwZS50aWxkZTpcbiAgICAgIHJldHVybiBcIn5cIjtcbiAgICBjYXNlIFRva2VuVHlwZS5waXBlbGluZTpcbiAgICAgIHJldHVybiBcInw+XCI7XG4gICAgY2FzZSBUb2tlblR5cGUubnVsbGlzaENvYWxlc2Npbmc6XG4gICAgICByZXR1cm4gXCI/P1wiO1xuICAgIGNhc2UgVG9rZW5UeXBlLmxvZ2ljYWxPUjpcbiAgICAgIHJldHVybiBcInx8XCI7XG4gICAgY2FzZSBUb2tlblR5cGUubG9naWNhbEFORDpcbiAgICAgIHJldHVybiBcIiYmXCI7XG4gICAgY2FzZSBUb2tlblR5cGUuYml0d2lzZU9SOlxuICAgICAgcmV0dXJuIFwifFwiO1xuICAgIGNhc2UgVG9rZW5UeXBlLmJpdHdpc2VYT1I6XG4gICAgICByZXR1cm4gXCJeXCI7XG4gICAgY2FzZSBUb2tlblR5cGUuYml0d2lzZUFORDpcbiAgICAgIHJldHVybiBcIiZcIjtcbiAgICBjYXNlIFRva2VuVHlwZS5lcXVhbGl0eTpcbiAgICAgIHJldHVybiBcIj09LyE9XCI7XG4gICAgY2FzZSBUb2tlblR5cGUubGVzc1RoYW46XG4gICAgICByZXR1cm4gXCI8XCI7XG4gICAgY2FzZSBUb2tlblR5cGUuZ3JlYXRlclRoYW46XG4gICAgICByZXR1cm4gXCI+XCI7XG4gICAgY2FzZSBUb2tlblR5cGUucmVsYXRpb25hbE9yRXF1YWw6XG4gICAgICByZXR1cm4gXCI8PS8+PVwiO1xuICAgIGNhc2UgVG9rZW5UeXBlLmJpdFNoaWZ0TDpcbiAgICAgIHJldHVybiBcIjw8XCI7XG4gICAgY2FzZSBUb2tlblR5cGUuYml0U2hpZnRSOlxuICAgICAgcmV0dXJuIFwiPj4vPj4+XCI7XG4gICAgY2FzZSBUb2tlblR5cGUucGx1czpcbiAgICAgIHJldHVybiBcIitcIjtcbiAgICBjYXNlIFRva2VuVHlwZS5taW51czpcbiAgICAgIHJldHVybiBcIi1cIjtcbiAgICBjYXNlIFRva2VuVHlwZS5tb2R1bG86XG4gICAgICByZXR1cm4gXCIlXCI7XG4gICAgY2FzZSBUb2tlblR5cGUuc3RhcjpcbiAgICAgIHJldHVybiBcIipcIjtcbiAgICBjYXNlIFRva2VuVHlwZS5zbGFzaDpcbiAgICAgIHJldHVybiBcIi9cIjtcbiAgICBjYXNlIFRva2VuVHlwZS5leHBvbmVudDpcbiAgICAgIHJldHVybiBcIioqXCI7XG4gICAgY2FzZSBUb2tlblR5cGUuanN4TmFtZTpcbiAgICAgIHJldHVybiBcImpzeE5hbWVcIjtcbiAgICBjYXNlIFRva2VuVHlwZS5qc3hUZXh0OlxuICAgICAgcmV0dXJuIFwianN4VGV4dFwiO1xuICAgIGNhc2UgVG9rZW5UeXBlLmpzeEVtcHR5VGV4dDpcbiAgICAgIHJldHVybiBcImpzeEVtcHR5VGV4dFwiO1xuICAgIGNhc2UgVG9rZW5UeXBlLmpzeFRhZ1N0YXJ0OlxuICAgICAgcmV0dXJuIFwianN4VGFnU3RhcnRcIjtcbiAgICBjYXNlIFRva2VuVHlwZS5qc3hUYWdFbmQ6XG4gICAgICByZXR1cm4gXCJqc3hUYWdFbmRcIjtcbiAgICBjYXNlIFRva2VuVHlwZS50eXBlUGFyYW1ldGVyU3RhcnQ6XG4gICAgICByZXR1cm4gXCJ0eXBlUGFyYW1ldGVyU3RhcnRcIjtcbiAgICBjYXNlIFRva2VuVHlwZS5ub25OdWxsQXNzZXJ0aW9uOlxuICAgICAgcmV0dXJuIFwibm9uTnVsbEFzc2VydGlvblwiO1xuICAgIGNhc2UgVG9rZW5UeXBlLl9icmVhazpcbiAgICAgIHJldHVybiBcImJyZWFrXCI7XG4gICAgY2FzZSBUb2tlblR5cGUuX2Nhc2U6XG4gICAgICByZXR1cm4gXCJjYXNlXCI7XG4gICAgY2FzZSBUb2tlblR5cGUuX2NhdGNoOlxuICAgICAgcmV0dXJuIFwiY2F0Y2hcIjtcbiAgICBjYXNlIFRva2VuVHlwZS5fY29udGludWU6XG4gICAgICByZXR1cm4gXCJjb250aW51ZVwiO1xuICAgIGNhc2UgVG9rZW5UeXBlLl9kZWJ1Z2dlcjpcbiAgICAgIHJldHVybiBcImRlYnVnZ2VyXCI7XG4gICAgY2FzZSBUb2tlblR5cGUuX2RlZmF1bHQ6XG4gICAgICByZXR1cm4gXCJkZWZhdWx0XCI7XG4gICAgY2FzZSBUb2tlblR5cGUuX2RvOlxuICAgICAgcmV0dXJuIFwiZG9cIjtcbiAgICBjYXNlIFRva2VuVHlwZS5fZWxzZTpcbiAgICAgIHJldHVybiBcImVsc2VcIjtcbiAgICBjYXNlIFRva2VuVHlwZS5fZmluYWxseTpcbiAgICAgIHJldHVybiBcImZpbmFsbHlcIjtcbiAgICBjYXNlIFRva2VuVHlwZS5fZm9yOlxuICAgICAgcmV0dXJuIFwiZm9yXCI7XG4gICAgY2FzZSBUb2tlblR5cGUuX2Z1bmN0aW9uOlxuICAgICAgcmV0dXJuIFwiZnVuY3Rpb25cIjtcbiAgICBjYXNlIFRva2VuVHlwZS5faWY6XG4gICAgICByZXR1cm4gXCJpZlwiO1xuICAgIGNhc2UgVG9rZW5UeXBlLl9yZXR1cm46XG4gICAgICByZXR1cm4gXCJyZXR1cm5cIjtcbiAgICBjYXNlIFRva2VuVHlwZS5fc3dpdGNoOlxuICAgICAgcmV0dXJuIFwic3dpdGNoXCI7XG4gICAgY2FzZSBUb2tlblR5cGUuX3Rocm93OlxuICAgICAgcmV0dXJuIFwidGhyb3dcIjtcbiAgICBjYXNlIFRva2VuVHlwZS5fdHJ5OlxuICAgICAgcmV0dXJuIFwidHJ5XCI7XG4gICAgY2FzZSBUb2tlblR5cGUuX3ZhcjpcbiAgICAgIHJldHVybiBcInZhclwiO1xuICAgIGNhc2UgVG9rZW5UeXBlLl9sZXQ6XG4gICAgICByZXR1cm4gXCJsZXRcIjtcbiAgICBjYXNlIFRva2VuVHlwZS5fY29uc3Q6XG4gICAgICByZXR1cm4gXCJjb25zdFwiO1xuICAgIGNhc2UgVG9rZW5UeXBlLl93aGlsZTpcbiAgICAgIHJldHVybiBcIndoaWxlXCI7XG4gICAgY2FzZSBUb2tlblR5cGUuX3dpdGg6XG4gICAgICByZXR1cm4gXCJ3aXRoXCI7XG4gICAgY2FzZSBUb2tlblR5cGUuX25ldzpcbiAgICAgIHJldHVybiBcIm5ld1wiO1xuICAgIGNhc2UgVG9rZW5UeXBlLl90aGlzOlxuICAgICAgcmV0dXJuIFwidGhpc1wiO1xuICAgIGNhc2UgVG9rZW5UeXBlLl9zdXBlcjpcbiAgICAgIHJldHVybiBcInN1cGVyXCI7XG4gICAgY2FzZSBUb2tlblR5cGUuX2NsYXNzOlxuICAgICAgcmV0dXJuIFwiY2xhc3NcIjtcbiAgICBjYXNlIFRva2VuVHlwZS5fZXh0ZW5kczpcbiAgICAgIHJldHVybiBcImV4dGVuZHNcIjtcbiAgICBjYXNlIFRva2VuVHlwZS5fZXhwb3J0OlxuICAgICAgcmV0dXJuIFwiZXhwb3J0XCI7XG4gICAgY2FzZSBUb2tlblR5cGUuX2ltcG9ydDpcbiAgICAgIHJldHVybiBcImltcG9ydFwiO1xuICAgIGNhc2UgVG9rZW5UeXBlLl95aWVsZDpcbiAgICAgIHJldHVybiBcInlpZWxkXCI7XG4gICAgY2FzZSBUb2tlblR5cGUuX251bGw6XG4gICAgICByZXR1cm4gXCJudWxsXCI7XG4gICAgY2FzZSBUb2tlblR5cGUuX3RydWU6XG4gICAgICByZXR1cm4gXCJ0cnVlXCI7XG4gICAgY2FzZSBUb2tlblR5cGUuX2ZhbHNlOlxuICAgICAgcmV0dXJuIFwiZmFsc2VcIjtcbiAgICBjYXNlIFRva2VuVHlwZS5faW46XG4gICAgICByZXR1cm4gXCJpblwiO1xuICAgIGNhc2UgVG9rZW5UeXBlLl9pbnN0YW5jZW9mOlxuICAgICAgcmV0dXJuIFwiaW5zdGFuY2VvZlwiO1xuICAgIGNhc2UgVG9rZW5UeXBlLl90eXBlb2Y6XG4gICAgICByZXR1cm4gXCJ0eXBlb2ZcIjtcbiAgICBjYXNlIFRva2VuVHlwZS5fdm9pZDpcbiAgICAgIHJldHVybiBcInZvaWRcIjtcbiAgICBjYXNlIFRva2VuVHlwZS5fZGVsZXRlOlxuICAgICAgcmV0dXJuIFwiZGVsZXRlXCI7XG4gICAgY2FzZSBUb2tlblR5cGUuX2FzeW5jOlxuICAgICAgcmV0dXJuIFwiYXN5bmNcIjtcbiAgICBjYXNlIFRva2VuVHlwZS5fZ2V0OlxuICAgICAgcmV0dXJuIFwiZ2V0XCI7XG4gICAgY2FzZSBUb2tlblR5cGUuX3NldDpcbiAgICAgIHJldHVybiBcInNldFwiO1xuICAgIGNhc2UgVG9rZW5UeXBlLl9kZWNsYXJlOlxuICAgICAgcmV0dXJuIFwiZGVjbGFyZVwiO1xuICAgIGNhc2UgVG9rZW5UeXBlLl9yZWFkb25seTpcbiAgICAgIHJldHVybiBcInJlYWRvbmx5XCI7XG4gICAgY2FzZSBUb2tlblR5cGUuX2Fic3RyYWN0OlxuICAgICAgcmV0dXJuIFwiYWJzdHJhY3RcIjtcbiAgICBjYXNlIFRva2VuVHlwZS5fc3RhdGljOlxuICAgICAgcmV0dXJuIFwic3RhdGljXCI7XG4gICAgY2FzZSBUb2tlblR5cGUuX3B1YmxpYzpcbiAgICAgIHJldHVybiBcInB1YmxpY1wiO1xuICAgIGNhc2UgVG9rZW5UeXBlLl9wcml2YXRlOlxuICAgICAgcmV0dXJuIFwicHJpdmF0ZVwiO1xuICAgIGNhc2UgVG9rZW5UeXBlLl9wcm90ZWN0ZWQ6XG4gICAgICByZXR1cm4gXCJwcm90ZWN0ZWRcIjtcbiAgICBjYXNlIFRva2VuVHlwZS5fb3ZlcnJpZGU6XG4gICAgICByZXR1cm4gXCJvdmVycmlkZVwiO1xuICAgIGNhc2UgVG9rZW5UeXBlLl9hczpcbiAgICAgIHJldHVybiBcImFzXCI7XG4gICAgY2FzZSBUb2tlblR5cGUuX2VudW06XG4gICAgICByZXR1cm4gXCJlbnVtXCI7XG4gICAgY2FzZSBUb2tlblR5cGUuX3R5cGU6XG4gICAgICByZXR1cm4gXCJ0eXBlXCI7XG4gICAgY2FzZSBUb2tlblR5cGUuX2ltcGxlbWVudHM6XG4gICAgICByZXR1cm4gXCJpbXBsZW1lbnRzXCI7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBcIlwiO1xuICB9XG59IGV4cG9ydHMuZm9ybWF0VG9rZW5UeXBlID0gZm9ybWF0VG9rZW5UeXBlO1xuIiwgIlwidXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge3ZhbHVlOiB0cnVlfSk7XG52YXIgX2tleXdvcmRzID0gcmVxdWlyZSgnLi9rZXl3b3JkcycpO1xudmFyIF90eXBlcyA9IHJlcXVpcmUoJy4vdHlwZXMnKTtcblxuIGNsYXNzIFNjb3BlIHtcbiAgXG4gIFxuICBcblxuICBjb25zdHJ1Y3RvcihzdGFydFRva2VuSW5kZXgsIGVuZFRva2VuSW5kZXgsIGlzRnVuY3Rpb25TY29wZSkge1xuICAgIHRoaXMuc3RhcnRUb2tlbkluZGV4ID0gc3RhcnRUb2tlbkluZGV4O1xuICAgIHRoaXMuZW5kVG9rZW5JbmRleCA9IGVuZFRva2VuSW5kZXg7XG4gICAgdGhpcy5pc0Z1bmN0aW9uU2NvcGUgPSBpc0Z1bmN0aW9uU2NvcGU7XG4gIH1cbn0gZXhwb3J0cy5TY29wZSA9IFNjb3BlO1xuXG4gY2xhc3MgU3RhdGVTbmFwc2hvdCB7XG4gIGNvbnN0cnVjdG9yKFxuICAgICBwb3RlbnRpYWxBcnJvd0F0LFxuICAgICBub0Fub25GdW5jdGlvblR5cGUsXG4gICAgIGluRGlzYWxsb3dDb25kaXRpb25hbFR5cGVzQ29udGV4dCxcbiAgICAgdG9rZW5zTGVuZ3RoLFxuICAgICBzY29wZXNMZW5ndGgsXG4gICAgIHBvcyxcbiAgICAgdHlwZSxcbiAgICAgY29udGV4dHVhbEtleXdvcmQsXG4gICAgIHN0YXJ0LFxuICAgICBlbmQsXG4gICAgIGlzVHlwZSxcbiAgICAgc2NvcGVEZXB0aCxcbiAgICAgZXJyb3IsXG4gICkgezt0aGlzLnBvdGVudGlhbEFycm93QXQgPSBwb3RlbnRpYWxBcnJvd0F0O3RoaXMubm9Bbm9uRnVuY3Rpb25UeXBlID0gbm9Bbm9uRnVuY3Rpb25UeXBlO3RoaXMuaW5EaXNhbGxvd0NvbmRpdGlvbmFsVHlwZXNDb250ZXh0ID0gaW5EaXNhbGxvd0NvbmRpdGlvbmFsVHlwZXNDb250ZXh0O3RoaXMudG9rZW5zTGVuZ3RoID0gdG9rZW5zTGVuZ3RoO3RoaXMuc2NvcGVzTGVuZ3RoID0gc2NvcGVzTGVuZ3RoO3RoaXMucG9zID0gcG9zO3RoaXMudHlwZSA9IHR5cGU7dGhpcy5jb250ZXh0dWFsS2V5d29yZCA9IGNvbnRleHR1YWxLZXl3b3JkO3RoaXMuc3RhcnQgPSBzdGFydDt0aGlzLmVuZCA9IGVuZDt0aGlzLmlzVHlwZSA9IGlzVHlwZTt0aGlzLnNjb3BlRGVwdGggPSBzY29wZURlcHRoO3RoaXMuZXJyb3IgPSBlcnJvcjt9XG59IGV4cG9ydHMuU3RhdGVTbmFwc2hvdCA9IFN0YXRlU25hcHNob3Q7XG5cbiBjbGFzcyBTdGF0ZSB7Y29uc3RydWN0b3IoKSB7IFN0YXRlLnByb3RvdHlwZS5fX2luaXQuY2FsbCh0aGlzKTtTdGF0ZS5wcm90b3R5cGUuX19pbml0Mi5jYWxsKHRoaXMpO1N0YXRlLnByb3RvdHlwZS5fX2luaXQzLmNhbGwodGhpcyk7U3RhdGUucHJvdG90eXBlLl9faW5pdDQuY2FsbCh0aGlzKTtTdGF0ZS5wcm90b3R5cGUuX19pbml0NS5jYWxsKHRoaXMpO1N0YXRlLnByb3RvdHlwZS5fX2luaXQ2LmNhbGwodGhpcyk7U3RhdGUucHJvdG90eXBlLl9faW5pdDcuY2FsbCh0aGlzKTtTdGF0ZS5wcm90b3R5cGUuX19pbml0OC5jYWxsKHRoaXMpO1N0YXRlLnByb3RvdHlwZS5fX2luaXQ5LmNhbGwodGhpcyk7U3RhdGUucHJvdG90eXBlLl9faW5pdDEwLmNhbGwodGhpcyk7U3RhdGUucHJvdG90eXBlLl9faW5pdDExLmNhbGwodGhpcyk7U3RhdGUucHJvdG90eXBlLl9faW5pdDEyLmNhbGwodGhpcyk7U3RhdGUucHJvdG90eXBlLl9faW5pdDEzLmNhbGwodGhpcyk7IH1cbiAgLy8gVXNlZCB0byBzaWduaWZ5IHRoZSBzdGFydCBvZiBhIHBvdGVudGlhbCBhcnJvdyBmdW5jdGlvblxuICBfX2luaXQoKSB7dGhpcy5wb3RlbnRpYWxBcnJvd0F0ID0gLTF9XG5cbiAgLy8gVXNlZCBieSBGbG93IHRvIGhhbmRsZSBhbiBlZGdlIGNhc2UgaW52b2x2aW5nIGZ1bmN0aW9uIHR5cGUgcGFyc2luZy5cbiAgX19pbml0MigpIHt0aGlzLm5vQW5vbkZ1bmN0aW9uVHlwZSA9IGZhbHNlfVxuXG4gIC8vIFVzZWQgYnkgVHlwZVNjcmlwdCB0byBoYW5kbGUgYW1iaWd1aXRpZXMgd2hlbiBwYXJzaW5nIGNvbmRpdGlvbmFsIHR5cGVzLlxuICBfX2luaXQzKCkge3RoaXMuaW5EaXNhbGxvd0NvbmRpdGlvbmFsVHlwZXNDb250ZXh0ID0gZmFsc2V9XG5cbiAgLy8gVG9rZW4gc3RvcmUuXG4gIF9faW5pdDQoKSB7dGhpcy50b2tlbnMgPSBbXX1cblxuICAvLyBBcnJheSBvZiBhbGwgb2JzZXJ2ZWQgc2NvcGVzLCBvcmRlcmVkIGJ5IHRoZWlyIGVuZGluZyBwb3NpdGlvbi5cbiAgX19pbml0NSgpIHt0aGlzLnNjb3BlcyA9IFtdfVxuXG4gIC8vIFRoZSBjdXJyZW50IHBvc2l0aW9uIG9mIHRoZSB0b2tlbml6ZXIgaW4gdGhlIGlucHV0LlxuICBfX2luaXQ2KCkge3RoaXMucG9zID0gMH1cblxuICAvLyBJbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudCB0b2tlbi5cbiAgX19pbml0NygpIHt0aGlzLnR5cGUgPSBfdHlwZXMuVG9rZW5UeXBlLmVvZn1cbiAgX19pbml0OCgpIHt0aGlzLmNvbnRleHR1YWxLZXl3b3JkID0gX2tleXdvcmRzLkNvbnRleHR1YWxLZXl3b3JkLk5PTkV9XG4gIF9faW5pdDkoKSB7dGhpcy5zdGFydCA9IDB9XG4gIF9faW5pdDEwKCkge3RoaXMuZW5kID0gMH1cblxuICBfX2luaXQxMSgpIHt0aGlzLmlzVHlwZSA9IGZhbHNlfVxuICBfX2luaXQxMigpIHt0aGlzLnNjb3BlRGVwdGggPSAwfVxuXG4gIC8qKlxuICAgKiBJZiB0aGUgcGFyc2VyIGlzIGluIGFuIGVycm9yIHN0YXRlLCB0aGVuIHRoZSB0b2tlbiBpcyBhbHdheXMgdHQuZW9mIGFuZCBhbGwgZnVuY3Rpb25zIGNhblxuICAgKiBrZWVwIGV4ZWN1dGluZyBidXQgc2hvdWxkIGJlIHdyaXR0ZW4gc28gdGhleSBkb24ndCBnZXQgaW50byBhbiBpbmZpbml0ZSBsb29wIGluIHRoaXMgc2l0dWF0aW9uLlxuICAgKlxuICAgKiBUaGlzIGFwcHJvYWNoLCBjb21iaW5lZCB3aXRoIHRoZSBhYmlsaXR5IHRvIHNuYXBzaG90IGFuZCByZXN0b3JlIHN0YXRlLCBhbGxvd3MgdXMgdG8gaW1wbGVtZW50XG4gICAqIGJhY2t0cmFja2luZyB3aXRob3V0IGV4Y2VwdGlvbnMgYW5kIHdpdGhvdXQgbmVlZGluZyB0byBleHBsaWNpdGx5IHByb3BhZ2F0ZSBlcnJvciBzdGF0ZXNcbiAgICogZXZlcnl3aGVyZS5cbiAgICovXG4gIF9faW5pdDEzKCkge3RoaXMuZXJyb3IgPSBudWxsfVxuXG4gIHNuYXBzaG90KCkge1xuICAgIHJldHVybiBuZXcgU3RhdGVTbmFwc2hvdChcbiAgICAgIHRoaXMucG90ZW50aWFsQXJyb3dBdCxcbiAgICAgIHRoaXMubm9Bbm9uRnVuY3Rpb25UeXBlLFxuICAgICAgdGhpcy5pbkRpc2FsbG93Q29uZGl0aW9uYWxUeXBlc0NvbnRleHQsXG4gICAgICB0aGlzLnRva2Vucy5sZW5ndGgsXG4gICAgICB0aGlzLnNjb3Blcy5sZW5ndGgsXG4gICAgICB0aGlzLnBvcyxcbiAgICAgIHRoaXMudHlwZSxcbiAgICAgIHRoaXMuY29udGV4dHVhbEtleXdvcmQsXG4gICAgICB0aGlzLnN0YXJ0LFxuICAgICAgdGhpcy5lbmQsXG4gICAgICB0aGlzLmlzVHlwZSxcbiAgICAgIHRoaXMuc2NvcGVEZXB0aCxcbiAgICAgIHRoaXMuZXJyb3IsXG4gICAgKTtcbiAgfVxuXG4gIHJlc3RvcmVGcm9tU25hcHNob3Qoc25hcHNob3QpIHtcbiAgICB0aGlzLnBvdGVudGlhbEFycm93QXQgPSBzbmFwc2hvdC5wb3RlbnRpYWxBcnJvd0F0O1xuICAgIHRoaXMubm9Bbm9uRnVuY3Rpb25UeXBlID0gc25hcHNob3Qubm9Bbm9uRnVuY3Rpb25UeXBlO1xuICAgIHRoaXMuaW5EaXNhbGxvd0NvbmRpdGlvbmFsVHlwZXNDb250ZXh0ID0gc25hcHNob3QuaW5EaXNhbGxvd0NvbmRpdGlvbmFsVHlwZXNDb250ZXh0O1xuICAgIHRoaXMudG9rZW5zLmxlbmd0aCA9IHNuYXBzaG90LnRva2Vuc0xlbmd0aDtcbiAgICB0aGlzLnNjb3Blcy5sZW5ndGggPSBzbmFwc2hvdC5zY29wZXNMZW5ndGg7XG4gICAgdGhpcy5wb3MgPSBzbmFwc2hvdC5wb3M7XG4gICAgdGhpcy50eXBlID0gc25hcHNob3QudHlwZTtcbiAgICB0aGlzLmNvbnRleHR1YWxLZXl3b3JkID0gc25hcHNob3QuY29udGV4dHVhbEtleXdvcmQ7XG4gICAgdGhpcy5zdGFydCA9IHNuYXBzaG90LnN0YXJ0O1xuICAgIHRoaXMuZW5kID0gc25hcHNob3QuZW5kO1xuICAgIHRoaXMuaXNUeXBlID0gc25hcHNob3QuaXNUeXBlO1xuICAgIHRoaXMuc2NvcGVEZXB0aCA9IHNuYXBzaG90LnNjb3BlRGVwdGg7XG4gICAgdGhpcy5lcnJvciA9IHNuYXBzaG90LmVycm9yO1xuICB9XG59IGV4cG9ydHMuZGVmYXVsdCA9IFN0YXRlO1xuIiwgIlwidXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge3ZhbHVlOiB0cnVlfSk7dmFyIGNoYXJDb2RlczsgKGZ1bmN0aW9uIChjaGFyQ29kZXMpIHtcbiAgY29uc3QgYmFja1NwYWNlID0gODsgY2hhckNvZGVzW2NoYXJDb2Rlc1tcImJhY2tTcGFjZVwiXSA9IGJhY2tTcGFjZV0gPSBcImJhY2tTcGFjZVwiO1xuICBjb25zdCBsaW5lRmVlZCA9IDEwOyBjaGFyQ29kZXNbY2hhckNvZGVzW1wibGluZUZlZWRcIl0gPSBsaW5lRmVlZF0gPSBcImxpbmVGZWVkXCI7IC8vICAnXFxuJ1xuICBjb25zdCB0YWIgPSA5OyBjaGFyQ29kZXNbY2hhckNvZGVzW1widGFiXCJdID0gdGFiXSA9IFwidGFiXCI7IC8vICAnXFx0J1xuICBjb25zdCBjYXJyaWFnZVJldHVybiA9IDEzOyBjaGFyQ29kZXNbY2hhckNvZGVzW1wiY2FycmlhZ2VSZXR1cm5cIl0gPSBjYXJyaWFnZVJldHVybl0gPSBcImNhcnJpYWdlUmV0dXJuXCI7IC8vICAnXFxyJ1xuICBjb25zdCBzaGlmdE91dCA9IDE0OyBjaGFyQ29kZXNbY2hhckNvZGVzW1wic2hpZnRPdXRcIl0gPSBzaGlmdE91dF0gPSBcInNoaWZ0T3V0XCI7XG4gIGNvbnN0IHNwYWNlID0gMzI7IGNoYXJDb2Rlc1tjaGFyQ29kZXNbXCJzcGFjZVwiXSA9IHNwYWNlXSA9IFwic3BhY2VcIjtcbiAgY29uc3QgZXhjbGFtYXRpb25NYXJrID0gMzM7IGNoYXJDb2Rlc1tjaGFyQ29kZXNbXCJleGNsYW1hdGlvbk1hcmtcIl0gPSBleGNsYW1hdGlvbk1hcmtdID0gXCJleGNsYW1hdGlvbk1hcmtcIjsgLy8gICchJ1xuICBjb25zdCBxdW90YXRpb25NYXJrID0gMzQ7IGNoYXJDb2Rlc1tjaGFyQ29kZXNbXCJxdW90YXRpb25NYXJrXCJdID0gcXVvdGF0aW9uTWFya10gPSBcInF1b3RhdGlvbk1hcmtcIjsgLy8gICdcIidcbiAgY29uc3QgbnVtYmVyU2lnbiA9IDM1OyBjaGFyQ29kZXNbY2hhckNvZGVzW1wibnVtYmVyU2lnblwiXSA9IG51bWJlclNpZ25dID0gXCJudW1iZXJTaWduXCI7IC8vICAnIydcbiAgY29uc3QgZG9sbGFyU2lnbiA9IDM2OyBjaGFyQ29kZXNbY2hhckNvZGVzW1wiZG9sbGFyU2lnblwiXSA9IGRvbGxhclNpZ25dID0gXCJkb2xsYXJTaWduXCI7IC8vICAnJCdcbiAgY29uc3QgcGVyY2VudFNpZ24gPSAzNzsgY2hhckNvZGVzW2NoYXJDb2Rlc1tcInBlcmNlbnRTaWduXCJdID0gcGVyY2VudFNpZ25dID0gXCJwZXJjZW50U2lnblwiOyAvLyAgJyUnXG4gIGNvbnN0IGFtcGVyc2FuZCA9IDM4OyBjaGFyQ29kZXNbY2hhckNvZGVzW1wiYW1wZXJzYW5kXCJdID0gYW1wZXJzYW5kXSA9IFwiYW1wZXJzYW5kXCI7IC8vICAnJidcbiAgY29uc3QgYXBvc3Ryb3BoZSA9IDM5OyBjaGFyQ29kZXNbY2hhckNvZGVzW1wiYXBvc3Ryb3BoZVwiXSA9IGFwb3N0cm9waGVdID0gXCJhcG9zdHJvcGhlXCI7IC8vICAnJydcbiAgY29uc3QgbGVmdFBhcmVudGhlc2lzID0gNDA7IGNoYXJDb2Rlc1tjaGFyQ29kZXNbXCJsZWZ0UGFyZW50aGVzaXNcIl0gPSBsZWZ0UGFyZW50aGVzaXNdID0gXCJsZWZ0UGFyZW50aGVzaXNcIjsgLy8gICcoJ1xuICBjb25zdCByaWdodFBhcmVudGhlc2lzID0gNDE7IGNoYXJDb2Rlc1tjaGFyQ29kZXNbXCJyaWdodFBhcmVudGhlc2lzXCJdID0gcmlnaHRQYXJlbnRoZXNpc10gPSBcInJpZ2h0UGFyZW50aGVzaXNcIjsgLy8gICcpJ1xuICBjb25zdCBhc3RlcmlzayA9IDQyOyBjaGFyQ29kZXNbY2hhckNvZGVzW1wiYXN0ZXJpc2tcIl0gPSBhc3Rlcmlza10gPSBcImFzdGVyaXNrXCI7IC8vICAnKidcbiAgY29uc3QgcGx1c1NpZ24gPSA0MzsgY2hhckNvZGVzW2NoYXJDb2Rlc1tcInBsdXNTaWduXCJdID0gcGx1c1NpZ25dID0gXCJwbHVzU2lnblwiOyAvLyAgJysnXG4gIGNvbnN0IGNvbW1hID0gNDQ7IGNoYXJDb2Rlc1tjaGFyQ29kZXNbXCJjb21tYVwiXSA9IGNvbW1hXSA9IFwiY29tbWFcIjsgLy8gICcsJ1xuICBjb25zdCBkYXNoID0gNDU7IGNoYXJDb2Rlc1tjaGFyQ29kZXNbXCJkYXNoXCJdID0gZGFzaF0gPSBcImRhc2hcIjsgLy8gICctJ1xuICBjb25zdCBkb3QgPSA0NjsgY2hhckNvZGVzW2NoYXJDb2Rlc1tcImRvdFwiXSA9IGRvdF0gPSBcImRvdFwiOyAvLyAgJy4nXG4gIGNvbnN0IHNsYXNoID0gNDc7IGNoYXJDb2Rlc1tjaGFyQ29kZXNbXCJzbGFzaFwiXSA9IHNsYXNoXSA9IFwic2xhc2hcIjsgLy8gICcvJ1xuICBjb25zdCBkaWdpdDAgPSA0ODsgY2hhckNvZGVzW2NoYXJDb2Rlc1tcImRpZ2l0MFwiXSA9IGRpZ2l0MF0gPSBcImRpZ2l0MFwiOyAvLyAgJzAnXG4gIGNvbnN0IGRpZ2l0MSA9IDQ5OyBjaGFyQ29kZXNbY2hhckNvZGVzW1wiZGlnaXQxXCJdID0gZGlnaXQxXSA9IFwiZGlnaXQxXCI7IC8vICAnMSdcbiAgY29uc3QgZGlnaXQyID0gNTA7IGNoYXJDb2Rlc1tjaGFyQ29kZXNbXCJkaWdpdDJcIl0gPSBkaWdpdDJdID0gXCJkaWdpdDJcIjsgLy8gICcyJ1xuICBjb25zdCBkaWdpdDMgPSA1MTsgY2hhckNvZGVzW2NoYXJDb2Rlc1tcImRpZ2l0M1wiXSA9IGRpZ2l0M10gPSBcImRpZ2l0M1wiOyAvLyAgJzMnXG4gIGNvbnN0IGRpZ2l0NCA9IDUyOyBjaGFyQ29kZXNbY2hhckNvZGVzW1wiZGlnaXQ0XCJdID0gZGlnaXQ0XSA9IFwiZGlnaXQ0XCI7IC8vICAnNCdcbiAgY29uc3QgZGlnaXQ1ID0gNTM7IGNoYXJDb2Rlc1tjaGFyQ29kZXNbXCJkaWdpdDVcIl0gPSBkaWdpdDVdID0gXCJkaWdpdDVcIjsgLy8gICc1J1xuICBjb25zdCBkaWdpdDYgPSA1NDsgY2hhckNvZGVzW2NoYXJDb2Rlc1tcImRpZ2l0NlwiXSA9IGRpZ2l0Nl0gPSBcImRpZ2l0NlwiOyAvLyAgJzYnXG4gIGNvbnN0IGRpZ2l0NyA9IDU1OyBjaGFyQ29kZXNbY2hhckNvZGVzW1wiZGlnaXQ3XCJdID0gZGlnaXQ3XSA9IFwiZGlnaXQ3XCI7IC8vICAnNydcbiAgY29uc3QgZGlnaXQ4ID0gNTY7IGNoYXJDb2Rlc1tjaGFyQ29kZXNbXCJkaWdpdDhcIl0gPSBkaWdpdDhdID0gXCJkaWdpdDhcIjsgLy8gICc4J1xuICBjb25zdCBkaWdpdDkgPSA1NzsgY2hhckNvZGVzW2NoYXJDb2Rlc1tcImRpZ2l0OVwiXSA9IGRpZ2l0OV0gPSBcImRpZ2l0OVwiOyAvLyAgJzknXG4gIGNvbnN0IGNvbG9uID0gNTg7IGNoYXJDb2Rlc1tjaGFyQ29kZXNbXCJjb2xvblwiXSA9IGNvbG9uXSA9IFwiY29sb25cIjsgLy8gICc6J1xuICBjb25zdCBzZW1pY29sb24gPSA1OTsgY2hhckNvZGVzW2NoYXJDb2Rlc1tcInNlbWljb2xvblwiXSA9IHNlbWljb2xvbl0gPSBcInNlbWljb2xvblwiOyAvLyAgJzsnXG4gIGNvbnN0IGxlc3NUaGFuID0gNjA7IGNoYXJDb2Rlc1tjaGFyQ29kZXNbXCJsZXNzVGhhblwiXSA9IGxlc3NUaGFuXSA9IFwibGVzc1RoYW5cIjsgLy8gICc8J1xuICBjb25zdCBlcXVhbHNUbyA9IDYxOyBjaGFyQ29kZXNbY2hhckNvZGVzW1wiZXF1YWxzVG9cIl0gPSBlcXVhbHNUb10gPSBcImVxdWFsc1RvXCI7IC8vICAnPSdcbiAgY29uc3QgZ3JlYXRlclRoYW4gPSA2MjsgY2hhckNvZGVzW2NoYXJDb2Rlc1tcImdyZWF0ZXJUaGFuXCJdID0gZ3JlYXRlclRoYW5dID0gXCJncmVhdGVyVGhhblwiOyAvLyAgJz4nXG4gIGNvbnN0IHF1ZXN0aW9uTWFyayA9IDYzOyBjaGFyQ29kZXNbY2hhckNvZGVzW1wicXVlc3Rpb25NYXJrXCJdID0gcXVlc3Rpb25NYXJrXSA9IFwicXVlc3Rpb25NYXJrXCI7IC8vICAnPydcbiAgY29uc3QgYXRTaWduID0gNjQ7IGNoYXJDb2Rlc1tjaGFyQ29kZXNbXCJhdFNpZ25cIl0gPSBhdFNpZ25dID0gXCJhdFNpZ25cIjsgLy8gICdAJ1xuICBjb25zdCB1cHBlcmNhc2VBID0gNjU7IGNoYXJDb2Rlc1tjaGFyQ29kZXNbXCJ1cHBlcmNhc2VBXCJdID0gdXBwZXJjYXNlQV0gPSBcInVwcGVyY2FzZUFcIjsgLy8gICdBJ1xuICBjb25zdCB1cHBlcmNhc2VCID0gNjY7IGNoYXJDb2Rlc1tjaGFyQ29kZXNbXCJ1cHBlcmNhc2VCXCJdID0gdXBwZXJjYXNlQl0gPSBcInVwcGVyY2FzZUJcIjsgLy8gICdCJ1xuICBjb25zdCB1cHBlcmNhc2VDID0gNjc7IGNoYXJDb2Rlc1tjaGFyQ29kZXNbXCJ1cHBlcmNhc2VDXCJdID0gdXBwZXJjYXNlQ10gPSBcInVwcGVyY2FzZUNcIjsgLy8gICdDJ1xuICBjb25zdCB1cHBlcmNhc2VEID0gNjg7IGNoYXJDb2Rlc1tjaGFyQ29kZXNbXCJ1cHBlcmNhc2VEXCJdID0gdXBwZXJjYXNlRF0gPSBcInVwcGVyY2FzZURcIjsgLy8gICdEJ1xuICBjb25zdCB1cHBlcmNhc2VFID0gNjk7IGNoYXJDb2Rlc1tjaGFyQ29kZXNbXCJ1cHBlcmNhc2VFXCJdID0gdXBwZXJjYXNlRV0gPSBcInVwcGVyY2FzZUVcIjsgLy8gICdFJ1xuICBjb25zdCB1cHBlcmNhc2VGID0gNzA7IGNoYXJDb2Rlc1tjaGFyQ29kZXNbXCJ1cHBlcmNhc2VGXCJdID0gdXBwZXJjYXNlRl0gPSBcInVwcGVyY2FzZUZcIjsgLy8gICdGJ1xuICBjb25zdCB1cHBlcmNhc2VHID0gNzE7IGNoYXJDb2Rlc1tjaGFyQ29kZXNbXCJ1cHBlcmNhc2VHXCJdID0gdXBwZXJjYXNlR10gPSBcInVwcGVyY2FzZUdcIjsgLy8gICdHJ1xuICBjb25zdCB1cHBlcmNhc2VIID0gNzI7IGNoYXJDb2Rlc1tjaGFyQ29kZXNbXCJ1cHBlcmNhc2VIXCJdID0gdXBwZXJjYXNlSF0gPSBcInVwcGVyY2FzZUhcIjsgLy8gICdIJ1xuICBjb25zdCB1cHBlcmNhc2VJID0gNzM7IGNoYXJDb2Rlc1tjaGFyQ29kZXNbXCJ1cHBlcmNhc2VJXCJdID0gdXBwZXJjYXNlSV0gPSBcInVwcGVyY2FzZUlcIjsgLy8gICdJJ1xuICBjb25zdCB1cHBlcmNhc2VKID0gNzQ7IGNoYXJDb2Rlc1tjaGFyQ29kZXNbXCJ1cHBlcmNhc2VKXCJdID0gdXBwZXJjYXNlSl0gPSBcInVwcGVyY2FzZUpcIjsgLy8gICdKJ1xuICBjb25zdCB1cHBlcmNhc2VLID0gNzU7IGNoYXJDb2Rlc1tjaGFyQ29kZXNbXCJ1cHBlcmNhc2VLXCJdID0gdXBwZXJjYXNlS10gPSBcInVwcGVyY2FzZUtcIjsgLy8gICdLJ1xuICBjb25zdCB1cHBlcmNhc2VMID0gNzY7IGNoYXJDb2Rlc1tjaGFyQ29kZXNbXCJ1cHBlcmNhc2VMXCJdID0gdXBwZXJjYXNlTF0gPSBcInVwcGVyY2FzZUxcIjsgLy8gICdMJ1xuICBjb25zdCB1cHBlcmNhc2VNID0gNzc7IGNoYXJDb2Rlc1tjaGFyQ29kZXNbXCJ1cHBlcmNhc2VNXCJdID0gdXBwZXJjYXNlTV0gPSBcInVwcGVyY2FzZU1cIjsgLy8gICdNJ1xuICBjb25zdCB1cHBlcmNhc2VOID0gNzg7IGNoYXJDb2Rlc1tjaGFyQ29kZXNbXCJ1cHBlcmNhc2VOXCJdID0gdXBwZXJjYXNlTl0gPSBcInVwcGVyY2FzZU5cIjsgLy8gICdOJ1xuICBjb25zdCB1cHBlcmNhc2VPID0gNzk7IGNoYXJDb2Rlc1tjaGFyQ29kZXNbXCJ1cHBlcmNhc2VPXCJdID0gdXBwZXJjYXNlT10gPSBcInVwcGVyY2FzZU9cIjsgLy8gICdPJ1xuICBjb25zdCB1cHBlcmNhc2VQID0gODA7IGNoYXJDb2Rlc1tjaGFyQ29kZXNbXCJ1cHBlcmNhc2VQXCJdID0gdXBwZXJjYXNlUF0gPSBcInVwcGVyY2FzZVBcIjsgLy8gICdQJ1xuICBjb25zdCB1cHBlcmNhc2VRID0gODE7IGNoYXJDb2Rlc1tjaGFyQ29kZXNbXCJ1cHBlcmNhc2VRXCJdID0gdXBwZXJjYXNlUV0gPSBcInVwcGVyY2FzZVFcIjsgLy8gICdRJ1xuICBjb25zdCB1cHBlcmNhc2VSID0gODI7IGNoYXJDb2Rlc1tjaGFyQ29kZXNbXCJ1cHBlcmNhc2VSXCJdID0gdXBwZXJjYXNlUl0gPSBcInVwcGVyY2FzZVJcIjsgLy8gICdSJ1xuICBjb25zdCB1cHBlcmNhc2VTID0gODM7IGNoYXJDb2Rlc1tjaGFyQ29kZXNbXCJ1cHBlcmNhc2VTXCJdID0gdXBwZXJjYXNlU10gPSBcInVwcGVyY2FzZVNcIjsgLy8gICdTJ1xuICBjb25zdCB1cHBlcmNhc2VUID0gODQ7IGNoYXJDb2Rlc1tjaGFyQ29kZXNbXCJ1cHBlcmNhc2VUXCJdID0gdXBwZXJjYXNlVF0gPSBcInVwcGVyY2FzZVRcIjsgLy8gICdUJ1xuICBjb25zdCB1cHBlcmNhc2VVID0gODU7IGNoYXJDb2Rlc1tjaGFyQ29kZXNbXCJ1cHBlcmNhc2VVXCJdID0gdXBwZXJjYXNlVV0gPSBcInVwcGVyY2FzZVVcIjsgLy8gICdVJ1xuICBjb25zdCB1cHBlcmNhc2VWID0gODY7IGNoYXJDb2Rlc1tjaGFyQ29kZXNbXCJ1cHBlcmNhc2VWXCJdID0gdXBwZXJjYXNlVl0gPSBcInVwcGVyY2FzZVZcIjsgLy8gICdWJ1xuICBjb25zdCB1cHBlcmNhc2VXID0gODc7IGNoYXJDb2Rlc1tjaGFyQ29kZXNbXCJ1cHBlcmNhc2VXXCJdID0gdXBwZXJjYXNlV10gPSBcInVwcGVyY2FzZVdcIjsgLy8gICdXJ1xuICBjb25zdCB1cHBlcmNhc2VYID0gODg7IGNoYXJDb2Rlc1tjaGFyQ29kZXNbXCJ1cHBlcmNhc2VYXCJdID0gdXBwZXJjYXNlWF0gPSBcInVwcGVyY2FzZVhcIjsgLy8gICdYJ1xuICBjb25zdCB1cHBlcmNhc2VZID0gODk7IGNoYXJDb2Rlc1tjaGFyQ29kZXNbXCJ1cHBlcmNhc2VZXCJdID0gdXBwZXJjYXNlWV0gPSBcInVwcGVyY2FzZVlcIjsgLy8gICdZJ1xuICBjb25zdCB1cHBlcmNhc2VaID0gOTA7IGNoYXJDb2Rlc1tjaGFyQ29kZXNbXCJ1cHBlcmNhc2VaXCJdID0gdXBwZXJjYXNlWl0gPSBcInVwcGVyY2FzZVpcIjsgLy8gICdaJ1xuICBjb25zdCBsZWZ0U3F1YXJlQnJhY2tldCA9IDkxOyBjaGFyQ29kZXNbY2hhckNvZGVzW1wibGVmdFNxdWFyZUJyYWNrZXRcIl0gPSBsZWZ0U3F1YXJlQnJhY2tldF0gPSBcImxlZnRTcXVhcmVCcmFja2V0XCI7IC8vICAnWydcbiAgY29uc3QgYmFja3NsYXNoID0gOTI7IGNoYXJDb2Rlc1tjaGFyQ29kZXNbXCJiYWNrc2xhc2hcIl0gPSBiYWNrc2xhc2hdID0gXCJiYWNrc2xhc2hcIjsgLy8gICdcXCAgICAnXG4gIGNvbnN0IHJpZ2h0U3F1YXJlQnJhY2tldCA9IDkzOyBjaGFyQ29kZXNbY2hhckNvZGVzW1wicmlnaHRTcXVhcmVCcmFja2V0XCJdID0gcmlnaHRTcXVhcmVCcmFja2V0XSA9IFwicmlnaHRTcXVhcmVCcmFja2V0XCI7IC8vICAnXSdcbiAgY29uc3QgY2FyZXQgPSA5NDsgY2hhckNvZGVzW2NoYXJDb2Rlc1tcImNhcmV0XCJdID0gY2FyZXRdID0gXCJjYXJldFwiOyAvLyAgJ14nXG4gIGNvbnN0IHVuZGVyc2NvcmUgPSA5NTsgY2hhckNvZGVzW2NoYXJDb2Rlc1tcInVuZGVyc2NvcmVcIl0gPSB1bmRlcnNjb3JlXSA9IFwidW5kZXJzY29yZVwiOyAvLyAgJ18nXG4gIGNvbnN0IGdyYXZlQWNjZW50ID0gOTY7IGNoYXJDb2Rlc1tjaGFyQ29kZXNbXCJncmF2ZUFjY2VudFwiXSA9IGdyYXZlQWNjZW50XSA9IFwiZ3JhdmVBY2NlbnRcIjsgLy8gICdgJ1xuICBjb25zdCBsb3dlcmNhc2VBID0gOTc7IGNoYXJDb2Rlc1tjaGFyQ29kZXNbXCJsb3dlcmNhc2VBXCJdID0gbG93ZXJjYXNlQV0gPSBcImxvd2VyY2FzZUFcIjsgLy8gICdhJ1xuICBjb25zdCBsb3dlcmNhc2VCID0gOTg7IGNoYXJDb2Rlc1tjaGFyQ29kZXNbXCJsb3dlcmNhc2VCXCJdID0gbG93ZXJjYXNlQl0gPSBcImxvd2VyY2FzZUJcIjsgLy8gICdiJ1xuICBjb25zdCBsb3dlcmNhc2VDID0gOTk7IGNoYXJDb2Rlc1tjaGFyQ29kZXNbXCJsb3dlcmNhc2VDXCJdID0gbG93ZXJjYXNlQ10gPSBcImxvd2VyY2FzZUNcIjsgLy8gICdjJ1xuICBjb25zdCBsb3dlcmNhc2VEID0gMTAwOyBjaGFyQ29kZXNbY2hhckNvZGVzW1wibG93ZXJjYXNlRFwiXSA9IGxvd2VyY2FzZURdID0gXCJsb3dlcmNhc2VEXCI7IC8vICAnZCdcbiAgY29uc3QgbG93ZXJjYXNlRSA9IDEwMTsgY2hhckNvZGVzW2NoYXJDb2Rlc1tcImxvd2VyY2FzZUVcIl0gPSBsb3dlcmNhc2VFXSA9IFwibG93ZXJjYXNlRVwiOyAvLyAgJ2UnXG4gIGNvbnN0IGxvd2VyY2FzZUYgPSAxMDI7IGNoYXJDb2Rlc1tjaGFyQ29kZXNbXCJsb3dlcmNhc2VGXCJdID0gbG93ZXJjYXNlRl0gPSBcImxvd2VyY2FzZUZcIjsgLy8gICdmJ1xuICBjb25zdCBsb3dlcmNhc2VHID0gMTAzOyBjaGFyQ29kZXNbY2hhckNvZGVzW1wibG93ZXJjYXNlR1wiXSA9IGxvd2VyY2FzZUddID0gXCJsb3dlcmNhc2VHXCI7IC8vICAnZydcbiAgY29uc3QgbG93ZXJjYXNlSCA9IDEwNDsgY2hhckNvZGVzW2NoYXJDb2Rlc1tcImxvd2VyY2FzZUhcIl0gPSBsb3dlcmNhc2VIXSA9IFwibG93ZXJjYXNlSFwiOyAvLyAgJ2gnXG4gIGNvbnN0IGxvd2VyY2FzZUkgPSAxMDU7IGNoYXJDb2Rlc1tjaGFyQ29kZXNbXCJsb3dlcmNhc2VJXCJdID0gbG93ZXJjYXNlSV0gPSBcImxvd2VyY2FzZUlcIjsgLy8gICdpJ1xuICBjb25zdCBsb3dlcmNhc2VKID0gMTA2OyBjaGFyQ29kZXNbY2hhckNvZGVzW1wibG93ZXJjYXNlSlwiXSA9IGxvd2VyY2FzZUpdID0gXCJsb3dlcmNhc2VKXCI7IC8vICAnaidcbiAgY29uc3QgbG93ZXJjYXNlSyA9IDEwNzsgY2hhckNvZGVzW2NoYXJDb2Rlc1tcImxvd2VyY2FzZUtcIl0gPSBsb3dlcmNhc2VLXSA9IFwibG93ZXJjYXNlS1wiOyAvLyAgJ2snXG4gIGNvbnN0IGxvd2VyY2FzZUwgPSAxMDg7IGNoYXJDb2Rlc1tjaGFyQ29kZXNbXCJsb3dlcmNhc2VMXCJdID0gbG93ZXJjYXNlTF0gPSBcImxvd2VyY2FzZUxcIjsgLy8gICdsJ1xuICBjb25zdCBsb3dlcmNhc2VNID0gMTA5OyBjaGFyQ29kZXNbY2hhckNvZGVzW1wibG93ZXJjYXNlTVwiXSA9IGxvd2VyY2FzZU1dID0gXCJsb3dlcmNhc2VNXCI7IC8vICAnbSdcbiAgY29uc3QgbG93ZXJjYXNlTiA9IDExMDsgY2hhckNvZGVzW2NoYXJDb2Rlc1tcImxvd2VyY2FzZU5cIl0gPSBsb3dlcmNhc2VOXSA9IFwibG93ZXJjYXNlTlwiOyAvLyAgJ24nXG4gIGNvbnN0IGxvd2VyY2FzZU8gPSAxMTE7IGNoYXJDb2Rlc1tjaGFyQ29kZXNbXCJsb3dlcmNhc2VPXCJdID0gbG93ZXJjYXNlT10gPSBcImxvd2VyY2FzZU9cIjsgLy8gICdvJ1xuICBjb25zdCBsb3dlcmNhc2VQID0gMTEyOyBjaGFyQ29kZXNbY2hhckNvZGVzW1wibG93ZXJjYXNlUFwiXSA9IGxvd2VyY2FzZVBdID0gXCJsb3dlcmNhc2VQXCI7IC8vICAncCdcbiAgY29uc3QgbG93ZXJjYXNlUSA9IDExMzsgY2hhckNvZGVzW2NoYXJDb2Rlc1tcImxvd2VyY2FzZVFcIl0gPSBsb3dlcmNhc2VRXSA9IFwibG93ZXJjYXNlUVwiOyAvLyAgJ3EnXG4gIGNvbnN0IGxvd2VyY2FzZVIgPSAxMTQ7IGNoYXJDb2Rlc1tjaGFyQ29kZXNbXCJsb3dlcmNhc2VSXCJdID0gbG93ZXJjYXNlUl0gPSBcImxvd2VyY2FzZVJcIjsgLy8gICdyJ1xuICBjb25zdCBsb3dlcmNhc2VTID0gMTE1OyBjaGFyQ29kZXNbY2hhckNvZGVzW1wibG93ZXJjYXNlU1wiXSA9IGxvd2VyY2FzZVNdID0gXCJsb3dlcmNhc2VTXCI7IC8vICAncydcbiAgY29uc3QgbG93ZXJjYXNlVCA9IDExNjsgY2hhckNvZGVzW2NoYXJDb2Rlc1tcImxvd2VyY2FzZVRcIl0gPSBsb3dlcmNhc2VUXSA9IFwibG93ZXJjYXNlVFwiOyAvLyAgJ3QnXG4gIGNvbnN0IGxvd2VyY2FzZVUgPSAxMTc7IGNoYXJDb2Rlc1tjaGFyQ29kZXNbXCJsb3dlcmNhc2VVXCJdID0gbG93ZXJjYXNlVV0gPSBcImxvd2VyY2FzZVVcIjsgLy8gICd1J1xuICBjb25zdCBsb3dlcmNhc2VWID0gMTE4OyBjaGFyQ29kZXNbY2hhckNvZGVzW1wibG93ZXJjYXNlVlwiXSA9IGxvd2VyY2FzZVZdID0gXCJsb3dlcmNhc2VWXCI7IC8vICAndidcbiAgY29uc3QgbG93ZXJjYXNlVyA9IDExOTsgY2hhckNvZGVzW2NoYXJDb2Rlc1tcImxvd2VyY2FzZVdcIl0gPSBsb3dlcmNhc2VXXSA9IFwibG93ZXJjYXNlV1wiOyAvLyAgJ3cnXG4gIGNvbnN0IGxvd2VyY2FzZVggPSAxMjA7IGNoYXJDb2Rlc1tjaGFyQ29kZXNbXCJsb3dlcmNhc2VYXCJdID0gbG93ZXJjYXNlWF0gPSBcImxvd2VyY2FzZVhcIjsgLy8gICd4J1xuICBjb25zdCBsb3dlcmNhc2VZID0gMTIxOyBjaGFyQ29kZXNbY2hhckNvZGVzW1wibG93ZXJjYXNlWVwiXSA9IGxvd2VyY2FzZVldID0gXCJsb3dlcmNhc2VZXCI7IC8vICAneSdcbiAgY29uc3QgbG93ZXJjYXNlWiA9IDEyMjsgY2hhckNvZGVzW2NoYXJDb2Rlc1tcImxvd2VyY2FzZVpcIl0gPSBsb3dlcmNhc2VaXSA9IFwibG93ZXJjYXNlWlwiOyAvLyAgJ3onXG4gIGNvbnN0IGxlZnRDdXJseUJyYWNlID0gMTIzOyBjaGFyQ29kZXNbY2hhckNvZGVzW1wibGVmdEN1cmx5QnJhY2VcIl0gPSBsZWZ0Q3VybHlCcmFjZV0gPSBcImxlZnRDdXJseUJyYWNlXCI7IC8vICAneydcbiAgY29uc3QgdmVydGljYWxCYXIgPSAxMjQ7IGNoYXJDb2Rlc1tjaGFyQ29kZXNbXCJ2ZXJ0aWNhbEJhclwiXSA9IHZlcnRpY2FsQmFyXSA9IFwidmVydGljYWxCYXJcIjsgLy8gICd8J1xuICBjb25zdCByaWdodEN1cmx5QnJhY2UgPSAxMjU7IGNoYXJDb2Rlc1tjaGFyQ29kZXNbXCJyaWdodEN1cmx5QnJhY2VcIl0gPSByaWdodEN1cmx5QnJhY2VdID0gXCJyaWdodEN1cmx5QnJhY2VcIjsgLy8gICd9J1xuICBjb25zdCB0aWxkZSA9IDEyNjsgY2hhckNvZGVzW2NoYXJDb2Rlc1tcInRpbGRlXCJdID0gdGlsZGVdID0gXCJ0aWxkZVwiOyAvLyAgJ34nXG4gIGNvbnN0IG5vbkJyZWFraW5nU3BhY2UgPSAxNjA7IGNoYXJDb2Rlc1tjaGFyQ29kZXNbXCJub25CcmVha2luZ1NwYWNlXCJdID0gbm9uQnJlYWtpbmdTcGFjZV0gPSBcIm5vbkJyZWFraW5nU3BhY2VcIjtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWlycmVndWxhci13aGl0ZXNwYWNlXG4gIGNvbnN0IG9naGFtU3BhY2VNYXJrID0gNTc2MDsgY2hhckNvZGVzW2NoYXJDb2Rlc1tcIm9naGFtU3BhY2VNYXJrXCJdID0gb2doYW1TcGFjZU1hcmtdID0gXCJvZ2hhbVNwYWNlTWFya1wiOyAvLyAnXHUxNjgwJ1xuICBjb25zdCBsaW5lU2VwYXJhdG9yID0gODIzMjsgY2hhckNvZGVzW2NoYXJDb2Rlc1tcImxpbmVTZXBhcmF0b3JcIl0gPSBsaW5lU2VwYXJhdG9yXSA9IFwibGluZVNlcGFyYXRvclwiO1xuICBjb25zdCBwYXJhZ3JhcGhTZXBhcmF0b3IgPSA4MjMzOyBjaGFyQ29kZXNbY2hhckNvZGVzW1wicGFyYWdyYXBoU2VwYXJhdG9yXCJdID0gcGFyYWdyYXBoU2VwYXJhdG9yXSA9IFwicGFyYWdyYXBoU2VwYXJhdG9yXCI7XG59KShjaGFyQ29kZXMgfHwgKGV4cG9ydHMuY2hhckNvZGVzID0gY2hhckNvZGVzID0ge30pKTtcblxuIGZ1bmN0aW9uIGlzRGlnaXQoY29kZSkge1xuICByZXR1cm4gKFxuICAgIChjb2RlID49IGNoYXJDb2Rlcy5kaWdpdDAgJiYgY29kZSA8PSBjaGFyQ29kZXMuZGlnaXQ5KSB8fFxuICAgIChjb2RlID49IGNoYXJDb2Rlcy5sb3dlcmNhc2VBICYmIGNvZGUgPD0gY2hhckNvZGVzLmxvd2VyY2FzZUYpIHx8XG4gICAgKGNvZGUgPj0gY2hhckNvZGVzLnVwcGVyY2FzZUEgJiYgY29kZSA8PSBjaGFyQ29kZXMudXBwZXJjYXNlRilcbiAgKTtcbn0gZXhwb3J0cy5pc0RpZ2l0ID0gaXNEaWdpdDtcbiIsICJcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHt2YWx1ZTogdHJ1ZX0pOyBmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfXZhciBfc3RhdGUgPSByZXF1aXJlKCcuLi90b2tlbml6ZXIvc3RhdGUnKTsgdmFyIF9zdGF0ZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9zdGF0ZSk7XG52YXIgX2NoYXJjb2RlcyA9IHJlcXVpcmUoJy4uL3V0aWwvY2hhcmNvZGVzJyk7XG5cbiBleHBvcnRzLmlzSlNYRW5hYmxlZDtcbiBleHBvcnRzLmlzVHlwZVNjcmlwdEVuYWJsZWQ7XG4gZXhwb3J0cy5pc0Zsb3dFbmFibGVkO1xuIGV4cG9ydHMuc3RhdGU7XG4gZXhwb3J0cy5pbnB1dDtcbiBleHBvcnRzLm5leHRDb250ZXh0SWQ7XG5cbiBmdW5jdGlvbiBnZXROZXh0Q29udGV4dElkKCkge1xuICByZXR1cm4gZXhwb3J0cy5uZXh0Q29udGV4dElkKys7XG59IGV4cG9ydHMuZ2V0TmV4dENvbnRleHRJZCA9IGdldE5leHRDb250ZXh0SWQ7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gZnVuY3Rpb24gYXVnbWVudEVycm9yKGVycm9yKSB7XG4gIGlmIChcInBvc1wiIGluIGVycm9yKSB7XG4gICAgY29uc3QgbG9jID0gbG9jYXRpb25Gb3JJbmRleChlcnJvci5wb3MpO1xuICAgIGVycm9yLm1lc3NhZ2UgKz0gYCAoJHtsb2MubGluZX06JHtsb2MuY29sdW1ufSlgO1xuICAgIGVycm9yLmxvYyA9IGxvYztcbiAgfVxuICByZXR1cm4gZXJyb3I7XG59IGV4cG9ydHMuYXVnbWVudEVycm9yID0gYXVnbWVudEVycm9yO1xuXG4gY2xhc3MgTG9jIHtcbiAgXG4gIFxuICBjb25zdHJ1Y3RvcihsaW5lLCBjb2x1bW4pIHtcbiAgICB0aGlzLmxpbmUgPSBsaW5lO1xuICAgIHRoaXMuY29sdW1uID0gY29sdW1uO1xuICB9XG59IGV4cG9ydHMuTG9jID0gTG9jO1xuXG4gZnVuY3Rpb24gbG9jYXRpb25Gb3JJbmRleChwb3MpIHtcbiAgbGV0IGxpbmUgPSAxO1xuICBsZXQgY29sdW1uID0gMTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3M7IGkrKykge1xuICAgIGlmIChleHBvcnRzLmlucHV0LmNoYXJDb2RlQXQoaSkgPT09IF9jaGFyY29kZXMuY2hhckNvZGVzLmxpbmVGZWVkKSB7XG4gICAgICBsaW5lKys7XG4gICAgICBjb2x1bW4gPSAxO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb2x1bW4rKztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG5ldyBMb2MobGluZSwgY29sdW1uKTtcbn0gZXhwb3J0cy5sb2NhdGlvbkZvckluZGV4ID0gbG9jYXRpb25Gb3JJbmRleDtcblxuIGZ1bmN0aW9uIGluaXRQYXJzZXIoXG4gIGlucHV0Q29kZSxcbiAgaXNKU1hFbmFibGVkQXJnLFxuICBpc1R5cGVTY3JpcHRFbmFibGVkQXJnLFxuICBpc0Zsb3dFbmFibGVkQXJnLFxuKSB7XG4gIGV4cG9ydHMuaW5wdXQgPSBpbnB1dENvZGU7XG4gIGV4cG9ydHMuc3RhdGUgPSBuZXcgKDAsIF9zdGF0ZTIuZGVmYXVsdCkoKTtcbiAgZXhwb3J0cy5uZXh0Q29udGV4dElkID0gMTtcbiAgZXhwb3J0cy5pc0pTWEVuYWJsZWQgPSBpc0pTWEVuYWJsZWRBcmc7XG4gIGV4cG9ydHMuaXNUeXBlU2NyaXB0RW5hYmxlZCA9IGlzVHlwZVNjcmlwdEVuYWJsZWRBcmc7XG4gIGV4cG9ydHMuaXNGbG93RW5hYmxlZCA9IGlzRmxvd0VuYWJsZWRBcmc7XG59IGV4cG9ydHMuaW5pdFBhcnNlciA9IGluaXRQYXJzZXI7XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7dmFsdWU6IHRydWV9KTt2YXIgX2luZGV4ID0gcmVxdWlyZSgnLi4vdG9rZW5pemVyL2luZGV4Jyk7XG5cbnZhciBfdHlwZXMgPSByZXF1aXJlKCcuLi90b2tlbml6ZXIvdHlwZXMnKTtcbnZhciBfY2hhcmNvZGVzID0gcmVxdWlyZSgnLi4vdXRpbC9jaGFyY29kZXMnKTtcbnZhciBfYmFzZSA9IHJlcXVpcmUoJy4vYmFzZScpO1xuXG4vLyAjIyBQYXJzZXIgdXRpbGl0aWVzXG5cbi8vIFRlc3RzIHdoZXRoZXIgcGFyc2VkIHRva2VuIGlzIGEgY29udGV4dHVhbCBrZXl3b3JkLlxuIGZ1bmN0aW9uIGlzQ29udGV4dHVhbChjb250ZXh0dWFsS2V5d29yZCkge1xuICByZXR1cm4gX2Jhc2Uuc3RhdGUuY29udGV4dHVhbEtleXdvcmQgPT09IGNvbnRleHR1YWxLZXl3b3JkO1xufSBleHBvcnRzLmlzQ29udGV4dHVhbCA9IGlzQ29udGV4dHVhbDtcblxuIGZ1bmN0aW9uIGlzTG9va2FoZWFkQ29udGV4dHVhbChjb250ZXh0dWFsS2V5d29yZCkge1xuICBjb25zdCBsID0gX2luZGV4Lmxvb2thaGVhZFR5cGVBbmRLZXl3b3JkLmNhbGwodm9pZCAwLCApO1xuICByZXR1cm4gbC50eXBlID09PSBfdHlwZXMuVG9rZW5UeXBlLm5hbWUgJiYgbC5jb250ZXh0dWFsS2V5d29yZCA9PT0gY29udGV4dHVhbEtleXdvcmQ7XG59IGV4cG9ydHMuaXNMb29rYWhlYWRDb250ZXh0dWFsID0gaXNMb29rYWhlYWRDb250ZXh0dWFsO1xuXG4vLyBDb25zdW1lcyBjb250ZXh0dWFsIGtleXdvcmQgaWYgcG9zc2libGUuXG4gZnVuY3Rpb24gZWF0Q29udGV4dHVhbChjb250ZXh0dWFsS2V5d29yZCkge1xuICByZXR1cm4gX2Jhc2Uuc3RhdGUuY29udGV4dHVhbEtleXdvcmQgPT09IGNvbnRleHR1YWxLZXl3b3JkICYmIF9pbmRleC5lYXQuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUubmFtZSk7XG59IGV4cG9ydHMuZWF0Q29udGV4dHVhbCA9IGVhdENvbnRleHR1YWw7XG5cbi8vIEFzc2VydHMgdGhhdCBmb2xsb3dpbmcgdG9rZW4gaXMgZ2l2ZW4gY29udGV4dHVhbCBrZXl3b3JkLlxuIGZ1bmN0aW9uIGV4cGVjdENvbnRleHR1YWwoY29udGV4dHVhbEtleXdvcmQpIHtcbiAgaWYgKCFlYXRDb250ZXh0dWFsKGNvbnRleHR1YWxLZXl3b3JkKSkge1xuICAgIHVuZXhwZWN0ZWQoKTtcbiAgfVxufSBleHBvcnRzLmV4cGVjdENvbnRleHR1YWwgPSBleHBlY3RDb250ZXh0dWFsO1xuXG4vLyBUZXN0IHdoZXRoZXIgYSBzZW1pY29sb24gY2FuIGJlIGluc2VydGVkIGF0IHRoZSBjdXJyZW50IHBvc2l0aW9uLlxuIGZ1bmN0aW9uIGNhbkluc2VydFNlbWljb2xvbigpIHtcbiAgcmV0dXJuIF9pbmRleC5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5lb2YpIHx8IF9pbmRleC5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5icmFjZVIpIHx8IGhhc1ByZWNlZGluZ0xpbmVCcmVhaygpO1xufSBleHBvcnRzLmNhbkluc2VydFNlbWljb2xvbiA9IGNhbkluc2VydFNlbWljb2xvbjtcblxuIGZ1bmN0aW9uIGhhc1ByZWNlZGluZ0xpbmVCcmVhaygpIHtcbiAgY29uc3QgcHJldlRva2VuID0gX2Jhc2Uuc3RhdGUudG9rZW5zW19iYXNlLnN0YXRlLnRva2Vucy5sZW5ndGggLSAxXTtcbiAgY29uc3QgbGFzdFRva0VuZCA9IHByZXZUb2tlbiA/IHByZXZUb2tlbi5lbmQgOiAwO1xuICBmb3IgKGxldCBpID0gbGFzdFRva0VuZDsgaSA8IF9iYXNlLnN0YXRlLnN0YXJ0OyBpKyspIHtcbiAgICBjb25zdCBjb2RlID0gX2Jhc2UuaW5wdXQuY2hhckNvZGVBdChpKTtcbiAgICBpZiAoXG4gICAgICBjb2RlID09PSBfY2hhcmNvZGVzLmNoYXJDb2Rlcy5saW5lRmVlZCB8fFxuICAgICAgY29kZSA9PT0gX2NoYXJjb2Rlcy5jaGFyQ29kZXMuY2FycmlhZ2VSZXR1cm4gfHxcbiAgICAgIGNvZGUgPT09IDB4MjAyOCB8fFxuICAgICAgY29kZSA9PT0gMHgyMDI5XG4gICAgKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufSBleHBvcnRzLmhhc1ByZWNlZGluZ0xpbmVCcmVhayA9IGhhc1ByZWNlZGluZ0xpbmVCcmVhaztcblxuIGZ1bmN0aW9uIGhhc0ZvbGxvd2luZ0xpbmVCcmVhaygpIHtcbiAgY29uc3QgbmV4dFN0YXJ0ID0gX2luZGV4Lm5leHRUb2tlblN0YXJ0LmNhbGwodm9pZCAwLCApO1xuICBmb3IgKGxldCBpID0gX2Jhc2Uuc3RhdGUuZW5kOyBpIDwgbmV4dFN0YXJ0OyBpKyspIHtcbiAgICBjb25zdCBjb2RlID0gX2Jhc2UuaW5wdXQuY2hhckNvZGVBdChpKTtcbiAgICBpZiAoXG4gICAgICBjb2RlID09PSBfY2hhcmNvZGVzLmNoYXJDb2Rlcy5saW5lRmVlZCB8fFxuICAgICAgY29kZSA9PT0gX2NoYXJjb2Rlcy5jaGFyQ29kZXMuY2FycmlhZ2VSZXR1cm4gfHxcbiAgICAgIGNvZGUgPT09IDB4MjAyOCB8fFxuICAgICAgY29kZSA9PT0gMHgyMDI5XG4gICAgKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufSBleHBvcnRzLmhhc0ZvbGxvd2luZ0xpbmVCcmVhayA9IGhhc0ZvbGxvd2luZ0xpbmVCcmVhaztcblxuIGZ1bmN0aW9uIGlzTGluZVRlcm1pbmF0b3IoKSB7XG4gIHJldHVybiBfaW5kZXguZWF0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLnNlbWkpIHx8IGNhbkluc2VydFNlbWljb2xvbigpO1xufSBleHBvcnRzLmlzTGluZVRlcm1pbmF0b3IgPSBpc0xpbmVUZXJtaW5hdG9yO1xuXG4vLyBDb25zdW1lIGEgc2VtaWNvbG9uLCBvciwgZmFpbGluZyB0aGF0LCBzZWUgaWYgd2UgYXJlIGFsbG93ZWQgdG9cbi8vIHByZXRlbmQgdGhhdCB0aGVyZSBpcyBhIHNlbWljb2xvbiBhdCB0aGlzIHBvc2l0aW9uLlxuIGZ1bmN0aW9uIHNlbWljb2xvbigpIHtcbiAgaWYgKCFpc0xpbmVUZXJtaW5hdG9yKCkpIHtcbiAgICB1bmV4cGVjdGVkKCdVbmV4cGVjdGVkIHRva2VuLCBleHBlY3RlZCBcIjtcIicpO1xuICB9XG59IGV4cG9ydHMuc2VtaWNvbG9uID0gc2VtaWNvbG9uO1xuXG4vLyBFeHBlY3QgYSB0b2tlbiBvZiBhIGdpdmVuIHR5cGUuIElmIGZvdW5kLCBjb25zdW1lIGl0LCBvdGhlcndpc2UsXG4vLyByYWlzZSBhbiB1bmV4cGVjdGVkIHRva2VuIGVycm9yIGF0IGdpdmVuIHBvcy5cbiBmdW5jdGlvbiBleHBlY3QodHlwZSkge1xuICBjb25zdCBtYXRjaGVkID0gX2luZGV4LmVhdC5jYWxsKHZvaWQgMCwgdHlwZSk7XG4gIGlmICghbWF0Y2hlZCkge1xuICAgIHVuZXhwZWN0ZWQoYFVuZXhwZWN0ZWQgdG9rZW4sIGV4cGVjdGVkIFwiJHtfdHlwZXMuZm9ybWF0VG9rZW5UeXBlLmNhbGwodm9pZCAwLCB0eXBlKX1cImApO1xuICB9XG59IGV4cG9ydHMuZXhwZWN0ID0gZXhwZWN0O1xuXG4vKipcbiAqIFRyYW5zaXRpb24gdGhlIHBhcnNlciB0byBhbiBlcnJvciBzdGF0ZS4gQWxsIGNvZGUgbmVlZHMgdG8gYmUgd3JpdHRlbiB0byBuYXR1cmFsbHkgdW53aW5kIGluIHRoaXNcbiAqIHN0YXRlLCB3aGljaCBhbGxvd3MgdXMgdG8gYmFja3RyYWNrIHdpdGhvdXQgZXhjZXB0aW9ucyBhbmQgd2l0aG91dCBlcnJvciBwbHVtYmluZyBldmVyeXdoZXJlLlxuICovXG4gZnVuY3Rpb24gdW5leHBlY3RlZChtZXNzYWdlID0gXCJVbmV4cGVjdGVkIHRva2VuXCIsIHBvcyA9IF9iYXNlLnN0YXRlLnN0YXJ0KSB7XG4gIGlmIChfYmFzZS5zdGF0ZS5lcnJvcikge1xuICAgIHJldHVybjtcbiAgfVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBjb25zdCBlcnIgPSBuZXcgU3ludGF4RXJyb3IobWVzc2FnZSk7XG4gIGVyci5wb3MgPSBwb3M7XG4gIF9iYXNlLnN0YXRlLmVycm9yID0gZXJyO1xuICBfYmFzZS5zdGF0ZS5wb3MgPSBfYmFzZS5pbnB1dC5sZW5ndGg7XG4gIF9pbmRleC5maW5pc2hUb2tlbi5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5lb2YpO1xufSBleHBvcnRzLnVuZXhwZWN0ZWQgPSB1bmV4cGVjdGVkO1xuIiwgIlwidXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge3ZhbHVlOiB0cnVlfSk7dmFyIF9jaGFyY29kZXMgPSByZXF1aXJlKCcuL2NoYXJjb2RlcycpO1xuXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy13aGl0ZS1zcGFjZVxuIGNvbnN0IFdISVRFU1BBQ0VfQ0hBUlMgPSBbXG4gIDB4MDAwOSxcbiAgMHgwMDBiLFxuICAweDAwMGMsXG4gIF9jaGFyY29kZXMuY2hhckNvZGVzLnNwYWNlLFxuICBfY2hhcmNvZGVzLmNoYXJDb2Rlcy5ub25CcmVha2luZ1NwYWNlLFxuICBfY2hhcmNvZGVzLmNoYXJDb2Rlcy5vZ2hhbVNwYWNlTWFyayxcbiAgMHgyMDAwLCAvLyBFTiBRVUFEXG4gIDB4MjAwMSwgLy8gRU0gUVVBRFxuICAweDIwMDIsIC8vIEVOIFNQQUNFXG4gIDB4MjAwMywgLy8gRU0gU1BBQ0VcbiAgMHgyMDA0LCAvLyBUSFJFRS1QRVItRU0gU1BBQ0VcbiAgMHgyMDA1LCAvLyBGT1VSLVBFUi1FTSBTUEFDRVxuICAweDIwMDYsIC8vIFNJWC1QRVItRU0gU1BBQ0VcbiAgMHgyMDA3LCAvLyBGSUdVUkUgU1BBQ0VcbiAgMHgyMDA4LCAvLyBQVU5DVFVBVElPTiBTUEFDRVxuICAweDIwMDksIC8vIFRISU4gU1BBQ0VcbiAgMHgyMDBhLCAvLyBIQUlSIFNQQUNFXG4gIDB4MjAyZiwgLy8gTkFSUk9XIE5PLUJSRUFLIFNQQUNFXG4gIDB4MjA1ZiwgLy8gTUVESVVNIE1BVEhFTUFUSUNBTCBTUEFDRVxuICAweDMwMDAsIC8vIElERU9HUkFQSElDIFNQQUNFXG4gIDB4ZmVmZiwgLy8gWkVSTyBXSURUSCBOTy1CUkVBSyBTUEFDRVxuXTsgZXhwb3J0cy5XSElURVNQQUNFX0NIQVJTID0gV0hJVEVTUEFDRV9DSEFSUztcblxuIGNvbnN0IHNraXBXaGl0ZVNwYWNlID0gLyg/Olxcc3xcXC9cXC8uKnxcXC9cXCpbXl0qP1xcKlxcLykqL2c7IGV4cG9ydHMuc2tpcFdoaXRlU3BhY2UgPSBza2lwV2hpdGVTcGFjZTtcblxuIGNvbnN0IElTX1dISVRFU1BBQ0UgPSBuZXcgVWludDhBcnJheSg2NTUzNik7IGV4cG9ydHMuSVNfV0hJVEVTUEFDRSA9IElTX1dISVRFU1BBQ0U7XG5mb3IgKGNvbnN0IGNoYXIgb2YgZXhwb3J0cy5XSElURVNQQUNFX0NIQVJTKSB7XG4gIGV4cG9ydHMuSVNfV0hJVEVTUEFDRVtjaGFyXSA9IDE7XG59XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7dmFsdWU6IHRydWV9KTt2YXIgX2NoYXJjb2RlcyA9IHJlcXVpcmUoJy4vY2hhcmNvZGVzJyk7XG52YXIgX3doaXRlc3BhY2UgPSByZXF1aXJlKCcuL3doaXRlc3BhY2UnKTtcblxuZnVuY3Rpb24gY29tcHV0ZUlzSWRlbnRpZmllckNoYXIoY29kZSkge1xuICBpZiAoY29kZSA8IDQ4KSByZXR1cm4gY29kZSA9PT0gMzY7XG4gIGlmIChjb2RlIDwgNTgpIHJldHVybiB0cnVlO1xuICBpZiAoY29kZSA8IDY1KSByZXR1cm4gZmFsc2U7XG4gIGlmIChjb2RlIDwgOTEpIHJldHVybiB0cnVlO1xuICBpZiAoY29kZSA8IDk3KSByZXR1cm4gY29kZSA9PT0gOTU7XG4gIGlmIChjb2RlIDwgMTIzKSByZXR1cm4gdHJ1ZTtcbiAgaWYgKGNvZGUgPCAxMjgpIHJldHVybiBmYWxzZTtcbiAgdGhyb3cgbmV3IEVycm9yKFwiU2hvdWxkIG5vdCBiZSBjYWxsZWQgd2l0aCBub24tQVNDSUkgY2hhciBjb2RlLlwiKTtcbn1cblxuIGNvbnN0IElTX0lERU5USUZJRVJfQ0hBUiA9IG5ldyBVaW50OEFycmF5KDY1NTM2KTsgZXhwb3J0cy5JU19JREVOVElGSUVSX0NIQVIgPSBJU19JREVOVElGSUVSX0NIQVI7XG5mb3IgKGxldCBpID0gMDsgaSA8IDEyODsgaSsrKSB7XG4gIGV4cG9ydHMuSVNfSURFTlRJRklFUl9DSEFSW2ldID0gY29tcHV0ZUlzSWRlbnRpZmllckNoYXIoaSkgPyAxIDogMDtcbn1cbmZvciAobGV0IGkgPSAxMjg7IGkgPCA2NTUzNjsgaSsrKSB7XG4gIGV4cG9ydHMuSVNfSURFTlRJRklFUl9DSEFSW2ldID0gMTtcbn1cbi8vIEFzaWRlIGZyb20gd2hpdGVzcGFjZSBhbmQgbmV3bGluZXMsIGFsbCBjaGFyYWN0ZXJzIG91dHNpZGUgdGhlIEFTQ0lJIHNwYWNlIGFyZSBlaXRoZXJcbi8vIGlkZW50aWZpZXIgY2hhcmFjdGVycyBvciBpbnZhbGlkLiBTaW5jZSB3ZSdyZSBub3QgcGVyZm9ybWluZyBjb2RlIHZhbGlkYXRpb24sIHdlIGNhbiBqdXN0XG4vLyB0cmVhdCBhbGwgaW52YWxpZCBjaGFyYWN0ZXJzIGFzIGlkZW50aWZpZXIgY2hhcmFjdGVycy5cbmZvciAoY29uc3Qgd2hpdGVzcGFjZUNoYXIgb2YgX3doaXRlc3BhY2UuV0hJVEVTUEFDRV9DSEFSUykge1xuICBleHBvcnRzLklTX0lERU5USUZJRVJfQ0hBUlt3aGl0ZXNwYWNlQ2hhcl0gPSAwO1xufVxuZXhwb3J0cy5JU19JREVOVElGSUVSX0NIQVJbMHgyMDI4XSA9IDA7XG5leHBvcnRzLklTX0lERU5USUZJRVJfQ0hBUlsweDIwMjldID0gMDtcblxuIGNvbnN0IElTX0lERU5USUZJRVJfU1RBUlQgPSBleHBvcnRzLklTX0lERU5USUZJRVJfQ0hBUi5zbGljZSgpOyBleHBvcnRzLklTX0lERU5USUZJRVJfU1RBUlQgPSBJU19JREVOVElGSUVSX1NUQVJUO1xuZm9yIChsZXQgbnVtQ2hhciA9IF9jaGFyY29kZXMuY2hhckNvZGVzLmRpZ2l0MDsgbnVtQ2hhciA8PSBfY2hhcmNvZGVzLmNoYXJDb2Rlcy5kaWdpdDk7IG51bUNoYXIrKykge1xuICBleHBvcnRzLklTX0lERU5USUZJRVJfU1RBUlRbbnVtQ2hhcl0gPSAwO1xufVxuIiwgIlwidXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge3ZhbHVlOiB0cnVlfSk7Ly8gR2VuZXJhdGVkIGZpbGUsIGRvIG5vdCBlZGl0ISBSdW4gXCJ5YXJuIGdlbmVyYXRlXCIgdG8gcmUtZ2VuZXJhdGUgdGhpcyBmaWxlLlxudmFyIF9rZXl3b3JkcyA9IHJlcXVpcmUoJy4va2V5d29yZHMnKTtcbnZhciBfdHlwZXMgPSByZXF1aXJlKCcuL3R5cGVzJyk7XG5cbi8vIHByZXR0aWVyLWlnbm9yZVxuIGNvbnN0IFJFQURfV09SRF9UUkVFID0gbmV3IEludDMyQXJyYXkoW1xuICAvLyBcIlwiXG4gIC0xLCAyNywgNzgzLCA5MTgsIDE3NTUsIDIzNzYsIDI4NjIsIDM0ODMsIC0xLCAzNjk5LCAtMSwgNDYxNywgNDc1MiwgNDgzMywgNTEzMCwgNTUwOCwgNTk0MCwgLTEsIDY0ODAsIDY5MzksIDc3NDksIDgxODEsIDg0NTEsIDg2MTMsIC0xLCA4ODI5LCAtMSxcbiAgLy8gXCJhXCJcbiAgLTEsIC0xLCA1NCwgMjQzLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCA0MzIsIC0xLCAtMSwgLTEsIDY3NSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJhYlwiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCA4MSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwiYWJzXCJcbiAgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAxMDgsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwiYWJzdFwiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIDEzNSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcImFic3RyXCJcbiAgLTEsIDE2MiwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwiYWJzdHJhXCJcbiAgLTEsIC0xLCAtMSwgMTg5LCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwiYWJzdHJhY1wiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgMjE2LCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcImFic3RyYWN0XCJcbiAgX2tleXdvcmRzLkNvbnRleHR1YWxLZXl3b3JkLl9hYnN0cmFjdCA8PCAxLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwiYWNcIlxuICAtMSwgLTEsIC0xLCAyNzAsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJhY2NcIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIDI5NywgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJhY2NlXCJcbiAgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIDMyNCwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwiYWNjZXNcIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgMzUxLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJhY2Nlc3NcIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAzNzgsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJhY2Nlc3NvXCJcbiAgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgNDA1LCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwiYWNjZXNzb3JcIlxuICBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX2FjY2Vzc29yIDw8IDEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJhc1wiXG4gIF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fYXMgPDwgMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgNDU5LCAtMSwgLTEsIC0xLCAtMSwgLTEsIDU5NCwgLTEsXG4gIC8vIFwiYXNzXCJcbiAgLTEsIC0xLCAtMSwgLTEsIC0xLCA0ODYsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwiYXNzZVwiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIDUxMywgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcImFzc2VyXCJcbiAgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCA1NDAsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwiYXNzZXJ0XCJcbiAgX2tleXdvcmRzLkNvbnRleHR1YWxLZXl3b3JkLl9hc3NlcnQgPDwgMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgNTY3LCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJhc3NlcnRzXCJcbiAgX2tleXdvcmRzLkNvbnRleHR1YWxLZXl3b3JkLl9hc3NlcnRzIDw8IDEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJhc3lcIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIDYyMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJhc3luXCJcbiAgLTEsIC0xLCAtMSwgNjQ4LCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwiYXN5bmNcIlxuICBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX2FzeW5jIDw8IDEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJhd1wiXG4gIC0xLCA3MDIsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcImF3YVwiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIDcyOSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcImF3YWlcIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIDc1NiwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJhd2FpdFwiXG4gIF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fYXdhaXQgPDwgMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcImJcIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCA4MTAsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJiclwiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgODM3LCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcImJyZVwiXG4gIC0xLCA4NjQsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcImJyZWFcIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIDg5MSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJicmVha1wiXG4gIChfdHlwZXMuVG9rZW5UeXBlLl9icmVhayA8PCAxKSArIDEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJjXCJcbiAgLTEsIDk0NSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgMTEwNywgLTEsIC0xLCAtMSwgMTI0MiwgLTEsIC0xLCAxMzUwLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwiY2FcIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgOTcyLCAxMDI2LCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcImNhc1wiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgOTk5LCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcImNhc2VcIlxuICAoX3R5cGVzLlRva2VuVHlwZS5fY2FzZSA8PCAxKSArIDEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJjYXRcIlxuICAtMSwgLTEsIC0xLCAxMDUzLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwiY2F0Y1wiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgMTA4MCwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJjYXRjaFwiXG4gIChfdHlwZXMuVG9rZW5UeXBlLl9jYXRjaCA8PCAxKSArIDEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJjaFwiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgMTEzNCwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJjaGVcIlxuICAtMSwgLTEsIC0xLCAxMTYxLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwiY2hlY1wiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgMTE4OCwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJjaGVja1wiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAxMjE1LCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJjaGVja3NcIlxuICBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX2NoZWNrcyA8PCAxLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwiY2xcIlxuICAtMSwgMTI2OSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwiY2xhXCJcbiAgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIDEyOTYsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcImNsYXNcIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgMTMyMywgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwiY2xhc3NcIlxuICAoX3R5cGVzLlRva2VuVHlwZS5fY2xhc3MgPDwgMSkgKyAxLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwiY29cIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIDEzNzcsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwiY29uXCJcbiAgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIDE0MDQsIDE2MjAsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwiY29uc1wiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgMTQzMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJjb25zdFwiXG4gIChfdHlwZXMuVG9rZW5UeXBlLl9jb25zdCA8PCAxKSArIDEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgMTQ1OCwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcImNvbnN0clwiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIDE0ODUsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJjb25zdHJ1XCJcbiAgLTEsIC0xLCAtMSwgMTUxMiwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcImNvbnN0cnVjXCJcbiAgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAxNTM5LCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcImNvbnN0cnVjdFwiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIDE1NjYsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJjb25zdHJ1Y3RvXCJcbiAgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgMTU5MywgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcImNvbnN0cnVjdG9yXCJcbiAgX2tleXdvcmRzLkNvbnRleHR1YWxLZXl3b3JkLl9jb25zdHJ1Y3RvciA8PCAxLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwiY29udFwiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIDE2NDcsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJjb250aVwiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgMTY3NCwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJjb250aW5cIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAxNzAxLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwiY29udGludVwiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgMTcyOCwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJjb250aW51ZVwiXG4gIChfdHlwZXMuVG9rZW5UeXBlLl9jb250aW51ZSA8PCAxKSArIDEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJkXCJcbiAgLTEsIC0xLCAtMSwgLTEsIC0xLCAxNzgyLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAyMzQ5LCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwiZGVcIlxuICAtMSwgLTEsIDE4MDksIDE5NzEsIC0xLCAtMSwgMjEwNiwgLTEsIC0xLCAtMSwgLTEsIC0xLCAyMjQxLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwiZGViXCJcbiAgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgMTgzNiwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcImRlYnVcIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgMTg2MywgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwiZGVidWdcIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgMTg5MCwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwiZGVidWdnXCJcbiAgLTEsIC0xLCAtMSwgLTEsIC0xLCAxOTE3LCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcImRlYnVnZ2VcIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAxOTQ0LCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwiZGVidWdnZXJcIlxuICAoX3R5cGVzLlRva2VuVHlwZS5fZGVidWdnZXIgPDwgMSkgKyAxLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwiZGVjXCJcbiAgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgMTk5OCwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcImRlY2xcIlxuICAtMSwgMjAyNSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwiZGVjbGFcIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAyMDUyLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwiZGVjbGFyXCJcbiAgLTEsIC0xLCAtMSwgLTEsIC0xLCAyMDc5LCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcImRlY2xhcmVcIlxuICBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX2RlY2xhcmUgPDwgMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcImRlZlwiXG4gIC0xLCAyMTMzLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJkZWZhXCJcbiAgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgMjE2MCwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcImRlZmF1XCJcbiAgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgMjE4NywgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcImRlZmF1bFwiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgMjIxNCwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJkZWZhdWx0XCJcbiAgKF90eXBlcy5Ub2tlblR5cGUuX2RlZmF1bHQgPDwgMSkgKyAxLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwiZGVsXCJcbiAgLTEsIC0xLCAtMSwgLTEsIC0xLCAyMjY4LCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcImRlbGVcIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIDIyOTUsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwiZGVsZXRcIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIDIzMjIsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwiZGVsZXRlXCJcbiAgKF90eXBlcy5Ub2tlblR5cGUuX2RlbGV0ZSA8PCAxKSArIDEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJkb1wiXG4gIChfdHlwZXMuVG9rZW5UeXBlLl9kbyA8PCAxKSArIDEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJlXCJcbiAgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgMjQwMywgLTEsIDI0ODQsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIDI1NjUsIC0xLCAtMSxcbiAgLy8gXCJlbFwiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAyNDMwLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJlbHNcIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIDI0NTcsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwiZWxzZVwiXG4gIChfdHlwZXMuVG9rZW5UeXBlLl9lbHNlIDw8IDEpICsgMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcImVuXCJcbiAgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgMjUxMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcImVudVwiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAyNTM4LCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJlbnVtXCJcbiAgX2tleXdvcmRzLkNvbnRleHR1YWxLZXl3b3JkLl9lbnVtIDw8IDEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJleFwiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAyNTkyLCAtMSwgLTEsIC0xLCAyNzI3LCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcImV4cFwiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIDI2MTksIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJleHBvXCJcbiAgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgMjY0NiwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcImV4cG9yXCJcbiAgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAyNjczLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcImV4cG9ydFwiXG4gIChfdHlwZXMuVG9rZW5UeXBlLl9leHBvcnQgPDwgMSkgKyAxLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAyNzAwLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJleHBvcnRzXCJcbiAgX2tleXdvcmRzLkNvbnRleHR1YWxLZXl3b3JkLl9leHBvcnRzIDw8IDEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJleHRcIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIDI3NTQsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwiZXh0ZVwiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgMjc4MSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJleHRlblwiXG4gIC0xLCAtMSwgLTEsIC0xLCAyODA4LCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJleHRlbmRcIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgMjgzNSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwiZXh0ZW5kc1wiXG4gIChfdHlwZXMuVG9rZW5UeXBlLl9leHRlbmRzIDw8IDEpICsgMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcImZcIlxuICAtMSwgMjg4OSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIDI5OTcsIC0xLCAtMSwgLTEsIC0xLCAtMSwgMzE1OSwgLTEsIC0xLCAzMjEzLCAtMSwgLTEsIDMyOTQsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJmYVwiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIDI5MTYsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJmYWxcIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgMjk0MywgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwiZmFsc1wiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgMjk3MCwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJmYWxzZVwiXG4gIChfdHlwZXMuVG9rZW5UeXBlLl9mYWxzZSA8PCAxKSArIDEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJmaVwiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgMzAyNCwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJmaW5cIlxuICAtMSwgMzA1MSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwiZmluYVwiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIDMwNzgsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJmaW5hbFwiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIDMxMDUsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJmaW5hbGxcIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgMzEzMiwgLTEsXG4gIC8vIFwiZmluYWxseVwiXG4gIChfdHlwZXMuVG9rZW5UeXBlLl9maW5hbGx5IDw8IDEpICsgMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcImZvXCJcbiAgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgMzE4NiwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcImZvclwiXG4gIChfdHlwZXMuVG9rZW5UeXBlLl9mb3IgPDwgMSkgKyAxLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwiZnJcIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAzMjQwLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwiZnJvXCJcbiAgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIDMyNjcsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcImZyb21cIlxuICBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX2Zyb20gPDwgMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcImZ1XCJcbiAgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAzMzIxLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcImZ1blwiXG4gIC0xLCAtMSwgLTEsIDMzNDgsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJmdW5jXCJcbiAgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAzMzc1LCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcImZ1bmN0XCJcbiAgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgMzQwMiwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcImZ1bmN0aVwiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIDM0MjksIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJmdW5jdGlvXCJcbiAgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAzNDU2LCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcImZ1bmN0aW9uXCJcbiAgKF90eXBlcy5Ub2tlblR5cGUuX2Z1bmN0aW9uIDw8IDEpICsgMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcImdcIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIDM1MTAsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIDM1NjQsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJnZVwiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgMzUzNywgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJnZXRcIlxuICBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX2dldCA8PCAxLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwiZ2xcIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAzNTkxLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwiZ2xvXCJcbiAgLTEsIC0xLCAzNjE4LCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcImdsb2JcIlxuICAtMSwgMzY0NSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwiZ2xvYmFcIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAzNjcyLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwiZ2xvYmFsXCJcbiAgX2tleXdvcmRzLkNvbnRleHR1YWxLZXl3b3JkLl9nbG9iYWwgPDwgMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcImlcIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAzNzI2LCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAzNzUzLCA0MDc3LCAtMSwgLTEsIC0xLCAtMSwgNDU5MCwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwiaWZcIlxuICAoX3R5cGVzLlRva2VuVHlwZS5faWYgPDwgMSkgKyAxLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwiaW1cIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgMzc4MCwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwiaW1wXCJcbiAgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgMzgwNywgLTEsIC0xLCAzOTk2LCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwiaW1wbFwiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgMzgzNCwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJpbXBsZVwiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAzODYxLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJpbXBsZW1cIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIDM4ODgsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwiaW1wbGVtZVwiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgMzkxNSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJpbXBsZW1lblwiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgMzk0MiwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJpbXBsZW1lbnRcIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgMzk2OSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwiaW1wbGVtZW50c1wiXG4gIF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5faW1wbGVtZW50cyA8PCAxLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwiaW1wb1wiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIDQwMjMsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJpbXBvclwiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgNDA1MCwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJpbXBvcnRcIlxuICAoX3R5cGVzLlRva2VuVHlwZS5faW1wb3J0IDw8IDEpICsgMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcImluXCJcbiAgKF90eXBlcy5Ub2tlblR5cGUuX2luIDw8IDEpICsgMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCA0MTA0LCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCA0MTg1LCA0NDAxLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcImluZlwiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgNDEzMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJpbmZlXCJcbiAgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgNDE1OCwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcImluZmVyXCJcbiAgX2tleXdvcmRzLkNvbnRleHR1YWxLZXl3b3JkLl9pbmZlciA8PCAxLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwiaW5zXCJcbiAgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCA0MjEyLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcImluc3RcIlxuICAtMSwgNDIzOSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwiaW5zdGFcIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIDQyNjYsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwiaW5zdGFuXCJcbiAgLTEsIC0xLCAtMSwgNDI5MywgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcImluc3RhbmNcIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIDQzMjAsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwiaW5zdGFuY2VcIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCA0MzQ3LCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwiaW5zdGFuY2VvXCJcbiAgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgNDM3NCwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcImluc3RhbmNlb2ZcIlxuICAoX3R5cGVzLlRva2VuVHlwZS5faW5zdGFuY2VvZiA8PCAxKSArIDEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJpbnRcIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIDQ0MjgsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwiaW50ZVwiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIDQ0NTUsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJpbnRlclwiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIDQ0ODIsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJpbnRlcmZcIlxuICAtMSwgNDUwOSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwiaW50ZXJmYVwiXG4gIC0xLCAtMSwgLTEsIDQ1MzYsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJpbnRlcmZhY1wiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgNDU2MywgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJpbnRlcmZhY2VcIlxuICBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX2ludGVyZmFjZSA8PCAxLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwiaXNcIlxuICBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX2lzIDw8IDEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJrXCJcbiAgLTEsIC0xLCAtMSwgLTEsIC0xLCA0NjQ0LCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcImtlXCJcbiAgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIDQ2NzEsIC0xLFxuICAvLyBcImtleVwiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIDQ2OTgsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJrZXlvXCJcbiAgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgNDcyNSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcImtleW9mXCJcbiAgX2tleXdvcmRzLkNvbnRleHR1YWxLZXl3b3JkLl9rZXlvZiA8PCAxLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwibFwiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgNDc3OSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJsZVwiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgNDgwNiwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJsZXRcIlxuICAoX3R5cGVzLlRva2VuVHlwZS5fbGV0IDw8IDEpICsgMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcIm1cIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCA0ODYwLCAtMSwgLTEsIC0xLCAtMSwgLTEsIDQ5OTUsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJtaVwiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIDQ4ODcsIC0xLCAtMSxcbiAgLy8gXCJtaXhcIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCA0OTE0LCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwibWl4aVwiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgNDk0MSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJtaXhpblwiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCA0OTY4LCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJtaXhpbnNcIlxuICBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX21peGlucyA8PCAxLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwibW9cIlxuICAtMSwgLTEsIC0xLCAtMSwgNTAyMiwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwibW9kXCJcbiAgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgNTA0OSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcIm1vZHVcIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCA1MDc2LCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwibW9kdWxcIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIDUxMDMsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwibW9kdWxlXCJcbiAgX2tleXdvcmRzLkNvbnRleHR1YWxLZXl3b3JkLl9tb2R1bGUgPDwgMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcIm5cIlxuICAtMSwgNTE1NywgLTEsIC0xLCAtMSwgNTM3MywgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgNTQyNywgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcIm5hXCJcbiAgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIDUxODQsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcIm5hbVwiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgNTIxMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJuYW1lXCJcbiAgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIDUyMzgsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcIm5hbWVzXCJcbiAgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIDUyNjUsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcIm5hbWVzcFwiXG4gIC0xLCA1MjkyLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJuYW1lc3BhXCJcbiAgLTEsIC0xLCAtMSwgNTMxOSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcIm5hbWVzcGFjXCJcbiAgLTEsIC0xLCAtMSwgLTEsIC0xLCA1MzQ2LCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcIm5hbWVzcGFjZVwiXG4gIF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fbmFtZXNwYWNlIDw8IDEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJuZVwiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgNTQwMCwgLTEsIC0xLCAtMSxcbiAgLy8gXCJuZXdcIlxuICAoX3R5cGVzLlRva2VuVHlwZS5fbmV3IDw8IDEpICsgMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcIm51XCJcbiAgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgNTQ1NCwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcIm51bFwiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIDU0ODEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJudWxsXCJcbiAgKF90eXBlcy5Ub2tlblR5cGUuX251bGwgPDwgMSkgKyAxLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwib1wiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIDU1MzUsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIDU1NjIsIC0xLCAtMSwgLTEsIC0xLCA1Njk3LCA1NzUxLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJvZlwiXG4gIF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fb2YgPDwgMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcIm9wXCJcbiAgLTEsIDU1ODksIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcIm9wYVwiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgNTYxNiwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJvcGFxXCJcbiAgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgNTY0MywgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcIm9wYXF1XCJcbiAgLTEsIC0xLCAtMSwgLTEsIC0xLCA1NjcwLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcIm9wYXF1ZVwiXG4gIF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fb3BhcXVlIDw8IDEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJvdVwiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgNTcyNCwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJvdXRcIlxuICBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX291dCA8PCAxLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwib3ZcIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIDU3NzgsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwib3ZlXCJcbiAgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgNTgwNSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcIm92ZXJcIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCA1ODMyLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwib3ZlcnJcIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCA1ODU5LCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwib3ZlcnJpXCJcbiAgLTEsIC0xLCAtMSwgLTEsIDU4ODYsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcIm92ZXJyaWRcIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIDU5MTMsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwib3ZlcnJpZGVcIlxuICBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX292ZXJyaWRlIDw8IDEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJwXCJcbiAgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgNTk2NywgLTEsIC0xLCA2MzQ1LCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwicHJcIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCA1OTk0LCAtMSwgLTEsIC0xLCAtMSwgLTEsIDYxMjksIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJwcmlcIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgNjAyMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwicHJpdlwiXG4gIC0xLCA2MDQ4LCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJwcml2YVwiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgNjA3NSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJwcml2YXRcIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIDYxMDIsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwicHJpdmF0ZVwiXG4gIF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fcHJpdmF0ZSA8PCAxLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwicHJvXCJcbiAgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCA2MTU2LCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcInByb3RcIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIDYxODMsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIDYzMTgsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJwcm90ZVwiXG4gIC0xLCAtMSwgLTEsIDYyMTAsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJwcm90ZWNcIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIDYyMzcsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwicHJvdGVjdFwiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgNjI2NCwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJwcm90ZWN0ZVwiXG4gIC0xLCAtMSwgLTEsIC0xLCA2MjkxLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJwcm90ZWN0ZWRcIlxuICBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX3Byb3RlY3RlZCA8PCAxLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwicHJvdG9cIlxuICBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX3Byb3RvIDw8IDEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJwdVwiXG4gIC0xLCAtMSwgNjM3MiwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJwdWJcIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCA2Mzk5LCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwicHVibFwiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIDY0MjYsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJwdWJsaVwiXG4gIC0xLCAtMSwgLTEsIDY0NTMsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJwdWJsaWNcIlxuICBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX3B1YmxpYyA8PCAxLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwiclwiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgNjUwNywgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJyZVwiXG4gIC0xLCA2NTM0LCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCA2Njk2LCAtMSwgLTEsIDY4MzEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwicmVhXCJcbiAgLTEsIC0xLCAtMSwgLTEsIDY1NjEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcInJlYWRcIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCA2NTg4LCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwicmVhZG9cIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIDY2MTUsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwicmVhZG9uXCJcbiAgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgNjY0MiwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcInJlYWRvbmxcIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgNjY2OSwgLTEsXG4gIC8vIFwicmVhZG9ubHlcIlxuICBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX3JlYWRvbmx5IDw8IDEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJyZXFcIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCA2NzIzLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwicmVxdVwiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIDY3NTAsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJyZXF1aVwiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIDY3NzcsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJyZXF1aXJcIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIDY4MDQsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwicmVxdWlyZVwiXG4gIF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fcmVxdWlyZSA8PCAxLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwicmV0XCJcbiAgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgNjg1OCwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcInJldHVcIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCA2ODg1LCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwicmV0dXJcIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIDY5MTIsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwicmV0dXJuXCJcbiAgKF90eXBlcy5Ub2tlblR5cGUuX3JldHVybiA8PCAxKSArIDEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJzXCJcbiAgLTEsIDY5NjYsIC0xLCAtMSwgLTEsIDcxODIsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgNzIzNiwgNzM3MSwgLTEsIDc0NzksIC0xLCA3NjE0LCAtMSxcbiAgLy8gXCJzYVwiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgNjk5MywgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJzYXRcIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCA3MDIwLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwic2F0aVwiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCA3MDQ3LCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJzYXRpc1wiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIDcwNzQsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJzYXRpc2ZcIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCA3MTAxLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwic2F0aXNmaVwiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgNzEyOCwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJzYXRpc2ZpZVwiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCA3MTU1LCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJzYXRpc2ZpZXNcIlxuICBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX3NhdGlzZmllcyA8PCAxLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwic2VcIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIDcyMDksIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwic2V0XCJcbiAgX2tleXdvcmRzLkNvbnRleHR1YWxLZXl3b3JkLl9zZXQgPDwgMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcInN0XCJcbiAgLTEsIDcyNjMsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcInN0YVwiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgNzI5MCwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJzdGF0XCJcbiAgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgNzMxNywgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcInN0YXRpXCJcbiAgLTEsIC0xLCAtMSwgNzM0NCwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcInN0YXRpY1wiXG4gIF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fc3RhdGljIDw8IDEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJzdVwiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCA3Mzk4LCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJzdXBcIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIDc0MjUsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwic3VwZVwiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIDc0NTIsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJzdXBlclwiXG4gIChfdHlwZXMuVG9rZW5UeXBlLl9zdXBlciA8PCAxKSArIDEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJzd1wiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIDc1MDYsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJzd2lcIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIDc1MzMsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwic3dpdFwiXG4gIC0xLCAtMSwgLTEsIDc1NjAsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJzd2l0Y1wiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgNzU4NywgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJzd2l0Y2hcIlxuICAoX3R5cGVzLlRva2VuVHlwZS5fc3dpdGNoIDw8IDEpICsgMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcInN5XCJcbiAgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIDc2NDEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcInN5bVwiXG4gIC0xLCAtMSwgNzY2OCwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJzeW1iXCJcbiAgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgNzY5NSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcInN5bWJvXCJcbiAgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgNzcyMiwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcInN5bWJvbFwiXG4gIF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fc3ltYm9sIDw8IDEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJ0XCJcbiAgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCA3Nzc2LCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCA3OTM4LCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCA4MDQ2LCAtMSxcbiAgLy8gXCJ0aFwiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIDc4MDMsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgNzg1NywgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcInRoaVwiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCA3ODMwLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJ0aGlzXCJcbiAgKF90eXBlcy5Ub2tlblR5cGUuX3RoaXMgPDwgMSkgKyAxLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwidGhyXCJcbiAgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgNzg4NCwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcInRocm9cIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIDc5MTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwidGhyb3dcIlxuICAoX3R5cGVzLlRva2VuVHlwZS5fdGhyb3cgPDwgMSkgKyAxLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwidHJcIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCA3OTY1LCAtMSwgLTEsIC0xLCA4MDE5LCAtMSxcbiAgLy8gXCJ0cnVcIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIDc5OTIsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwidHJ1ZVwiXG4gIChfdHlwZXMuVG9rZW5UeXBlLl90cnVlIDw8IDEpICsgMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcInRyeVwiXG4gIChfdHlwZXMuVG9rZW5UeXBlLl90cnkgPDwgMSkgKyAxLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwidHlcIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgODA3MywgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwidHlwXCJcbiAgLTEsIC0xLCAtMSwgLTEsIC0xLCA4MTAwLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcInR5cGVcIlxuICBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX3R5cGUgPDwgMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCA4MTI3LCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwidHlwZW9cIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCA4MTU0LCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwidHlwZW9mXCJcbiAgKF90eXBlcy5Ub2tlblR5cGUuX3R5cGVvZiA8PCAxKSArIDEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJ1XCJcbiAgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCA4MjA4LCAtMSwgLTEsIC0xLCAtMSwgODM0MywgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwidW5cIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCA4MjM1LCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwidW5pXCJcbiAgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCA4MjYyLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcInVuaXFcIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCA4Mjg5LCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwidW5pcXVcIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIDgzMTYsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwidW5pcXVlXCJcbiAgX2tleXdvcmRzLkNvbnRleHR1YWxLZXl3b3JkLl91bmlxdWUgPDwgMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcInVzXCJcbiAgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgODM3MCwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcInVzaVwiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgODM5NywgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJ1c2luXCJcbiAgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIDg0MjQsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcInVzaW5nXCJcbiAgX2tleXdvcmRzLkNvbnRleHR1YWxLZXl3b3JkLl91c2luZyA8PCAxLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwidlwiXG4gIC0xLCA4NDc4LCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgODUzMiwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcInZhXCJcbiAgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgODUwNSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcInZhclwiXG4gIChfdHlwZXMuVG9rZW5UeXBlLl92YXIgPDwgMSkgKyAxLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwidm9cIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCA4NTU5LCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwidm9pXCJcbiAgLTEsIC0xLCAtMSwgLTEsIDg1ODYsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcInZvaWRcIlxuICAoX3R5cGVzLlRva2VuVHlwZS5fdm9pZCA8PCAxKSArIDEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJ3XCJcbiAgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCA4NjQwLCA4NzQ4LCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwid2hcIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCA4NjY3LCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwid2hpXCJcbiAgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgODY5NCwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcIndoaWxcIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIDg3MjEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwid2hpbGVcIlxuICAoX3R5cGVzLlRva2VuVHlwZS5fd2hpbGUgPDwgMSkgKyAxLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwid2lcIlxuICAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIDg3NzUsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsXG4gIC8vIFwid2l0XCJcbiAgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCA4ODAyLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcIndpdGhcIlxuICAoX3R5cGVzLlRva2VuVHlwZS5fd2l0aCA8PCAxKSArIDEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJ5XCJcbiAgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgODg1NiwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcInlpXCJcbiAgLTEsIC0xLCAtMSwgLTEsIC0xLCA4ODgzLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcInlpZVwiXG4gIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIDg5MTAsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSxcbiAgLy8gXCJ5aWVsXCJcbiAgLTEsIC0xLCAtMSwgLTEsIDg5MzcsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuICAvLyBcInlpZWxkXCJcbiAgKF90eXBlcy5Ub2tlblR5cGUuX3lpZWxkIDw8IDEpICsgMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLFxuXSk7IGV4cG9ydHMuUkVBRF9XT1JEX1RSRUUgPSBSRUFEX1dPUkRfVFJFRTtcbiIsICJcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHt2YWx1ZTogdHJ1ZX0pO3ZhciBfYmFzZSA9IHJlcXVpcmUoJy4uL3RyYXZlcnNlci9iYXNlJyk7XG52YXIgX2NoYXJjb2RlcyA9IHJlcXVpcmUoJy4uL3V0aWwvY2hhcmNvZGVzJyk7XG52YXIgX2lkZW50aWZpZXIgPSByZXF1aXJlKCcuLi91dGlsL2lkZW50aWZpZXInKTtcbnZhciBfaW5kZXggPSByZXF1aXJlKCcuL2luZGV4Jyk7XG52YXIgX3JlYWRXb3JkVHJlZSA9IHJlcXVpcmUoJy4vcmVhZFdvcmRUcmVlJyk7XG52YXIgX3R5cGVzID0gcmVxdWlyZSgnLi90eXBlcycpO1xuXG4vKipcbiAqIFJlYWQgYW4gaWRlbnRpZmllciwgcHJvZHVjaW5nIGVpdGhlciBhIG5hbWUgdG9rZW4gb3IgbWF0Y2hpbmcgb24gb25lIG9mIHRoZSBleGlzdGluZyBrZXl3b3Jkcy5cbiAqIEZvciBwZXJmb3JtYW5jZSwgd2UgcHJlLWdlbmVyYXRlIGJpZyBkZWNpc2lvbiB0cmVlIHRoYXQgd2UgdHJhdmVyc2UuIEVhY2ggbm9kZSByZXByZXNlbnRzIGFcbiAqIHByZWZpeCBhbmQgaGFzIDI3IHZhbHVlcywgd2hlcmUgdGhlIGZpcnN0IHZhbHVlIGlzIHRoZSB0b2tlbiBvciBjb250ZXh0dWFsIHRva2VuLCBpZiBhbnkgKC0xIGlmXG4gKiBub3QpLCBhbmQgdGhlIG90aGVyIDI2IHZhbHVlcyBhcmUgdGhlIHRyYW5zaXRpb25zIHRvIG90aGVyIG5vZGVzLCBvciAtMSB0byBzdG9wLlxuICovXG4gZnVuY3Rpb24gcmVhZFdvcmQoKSB7XG4gIGxldCB0cmVlUG9zID0gMDtcbiAgbGV0IGNvZGUgPSAwO1xuICBsZXQgcG9zID0gX2Jhc2Uuc3RhdGUucG9zO1xuICB3aGlsZSAocG9zIDwgX2Jhc2UuaW5wdXQubGVuZ3RoKSB7XG4gICAgY29kZSA9IF9iYXNlLmlucHV0LmNoYXJDb2RlQXQocG9zKTtcbiAgICBpZiAoY29kZSA8IF9jaGFyY29kZXMuY2hhckNvZGVzLmxvd2VyY2FzZUEgfHwgY29kZSA+IF9jaGFyY29kZXMuY2hhckNvZGVzLmxvd2VyY2FzZVopIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjb25zdCBuZXh0ID0gX3JlYWRXb3JkVHJlZS5SRUFEX1dPUkRfVFJFRVt0cmVlUG9zICsgKGNvZGUgLSBfY2hhcmNvZGVzLmNoYXJDb2Rlcy5sb3dlcmNhc2VBKSArIDFdO1xuICAgIGlmIChuZXh0ID09PSAtMSkge1xuICAgICAgYnJlYWs7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRyZWVQb3MgPSBuZXh0O1xuICAgICAgcG9zKys7XG4gICAgfVxuICB9XG5cbiAgY29uc3Qga2V5d29yZFZhbHVlID0gX3JlYWRXb3JkVHJlZS5SRUFEX1dPUkRfVFJFRVt0cmVlUG9zXTtcbiAgaWYgKGtleXdvcmRWYWx1ZSA+IC0xICYmICFfaWRlbnRpZmllci5JU19JREVOVElGSUVSX0NIQVJbY29kZV0pIHtcbiAgICBfYmFzZS5zdGF0ZS5wb3MgPSBwb3M7XG4gICAgaWYgKGtleXdvcmRWYWx1ZSAmIDEpIHtcbiAgICAgIF9pbmRleC5maW5pc2hUb2tlbi5jYWxsKHZvaWQgMCwga2V5d29yZFZhbHVlID4+PiAxKTtcbiAgICB9IGVsc2Uge1xuICAgICAgX2luZGV4LmZpbmlzaFRva2VuLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLm5hbWUsIGtleXdvcmRWYWx1ZSA+Pj4gMSk7XG4gICAgfVxuICAgIHJldHVybjtcbiAgfVxuXG4gIHdoaWxlIChwb3MgPCBfYmFzZS5pbnB1dC5sZW5ndGgpIHtcbiAgICBjb25zdCBjaCA9IF9iYXNlLmlucHV0LmNoYXJDb2RlQXQocG9zKTtcbiAgICBpZiAoX2lkZW50aWZpZXIuSVNfSURFTlRJRklFUl9DSEFSW2NoXSkge1xuICAgICAgcG9zKys7XG4gICAgfSBlbHNlIGlmIChjaCA9PT0gX2NoYXJjb2Rlcy5jaGFyQ29kZXMuYmFja3NsYXNoKSB7XG4gICAgICAvLyBcXHVcbiAgICAgIHBvcyArPSAyO1xuICAgICAgaWYgKF9iYXNlLmlucHV0LmNoYXJDb2RlQXQocG9zKSA9PT0gX2NoYXJjb2Rlcy5jaGFyQ29kZXMubGVmdEN1cmx5QnJhY2UpIHtcbiAgICAgICAgd2hpbGUgKHBvcyA8IF9iYXNlLmlucHV0Lmxlbmd0aCAmJiBfYmFzZS5pbnB1dC5jaGFyQ29kZUF0KHBvcykgIT09IF9jaGFyY29kZXMuY2hhckNvZGVzLnJpZ2h0Q3VybHlCcmFjZSkge1xuICAgICAgICAgIHBvcysrO1xuICAgICAgICB9XG4gICAgICAgIHBvcysrO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY2ggPT09IF9jaGFyY29kZXMuY2hhckNvZGVzLmF0U2lnbiAmJiBfYmFzZS5pbnB1dC5jaGFyQ29kZUF0KHBvcyArIDEpID09PSBfY2hhcmNvZGVzLmNoYXJDb2Rlcy5hdFNpZ24pIHtcbiAgICAgIHBvcyArPSAyO1xuICAgIH0gZWxzZSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgX2Jhc2Uuc3RhdGUucG9zID0gcG9zO1xuICBfaW5kZXguZmluaXNoVG9rZW4uY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUubmFtZSk7XG59IGV4cG9ydHMuZGVmYXVsdCA9IHJlYWRXb3JkO1xuIiwgIlwidXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge3ZhbHVlOiB0cnVlfSk7IGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9LyogZXNsaW50IG1heC1sZW46IDAgKi9cblxudmFyIF9iYXNlID0gcmVxdWlyZSgnLi4vdHJhdmVyc2VyL2Jhc2UnKTtcbnZhciBfdXRpbCA9IHJlcXVpcmUoJy4uL3RyYXZlcnNlci91dGlsJyk7XG52YXIgX2NoYXJjb2RlcyA9IHJlcXVpcmUoJy4uL3V0aWwvY2hhcmNvZGVzJyk7XG52YXIgX2lkZW50aWZpZXIgPSByZXF1aXJlKCcuLi91dGlsL2lkZW50aWZpZXInKTtcbnZhciBfd2hpdGVzcGFjZSA9IHJlcXVpcmUoJy4uL3V0aWwvd2hpdGVzcGFjZScpO1xudmFyIF9rZXl3b3JkcyA9IHJlcXVpcmUoJy4va2V5d29yZHMnKTtcbnZhciBfcmVhZFdvcmQgPSByZXF1aXJlKCcuL3JlYWRXb3JkJyk7IHZhciBfcmVhZFdvcmQyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcmVhZFdvcmQpO1xudmFyIF90eXBlcyA9IHJlcXVpcmUoJy4vdHlwZXMnKTtcblxudmFyIElkZW50aWZpZXJSb2xlOyAoZnVuY3Rpb24gKElkZW50aWZpZXJSb2xlKSB7XG4gIGNvbnN0IEFjY2VzcyA9IDA7IElkZW50aWZpZXJSb2xlW0lkZW50aWZpZXJSb2xlW1wiQWNjZXNzXCJdID0gQWNjZXNzXSA9IFwiQWNjZXNzXCI7XG4gIGNvbnN0IEV4cG9ydEFjY2VzcyA9IEFjY2VzcyArIDE7IElkZW50aWZpZXJSb2xlW0lkZW50aWZpZXJSb2xlW1wiRXhwb3J0QWNjZXNzXCJdID0gRXhwb3J0QWNjZXNzXSA9IFwiRXhwb3J0QWNjZXNzXCI7XG4gIGNvbnN0IFRvcExldmVsRGVjbGFyYXRpb24gPSBFeHBvcnRBY2Nlc3MgKyAxOyBJZGVudGlmaWVyUm9sZVtJZGVudGlmaWVyUm9sZVtcIlRvcExldmVsRGVjbGFyYXRpb25cIl0gPSBUb3BMZXZlbERlY2xhcmF0aW9uXSA9IFwiVG9wTGV2ZWxEZWNsYXJhdGlvblwiO1xuICBjb25zdCBGdW5jdGlvblNjb3BlZERlY2xhcmF0aW9uID0gVG9wTGV2ZWxEZWNsYXJhdGlvbiArIDE7IElkZW50aWZpZXJSb2xlW0lkZW50aWZpZXJSb2xlW1wiRnVuY3Rpb25TY29wZWREZWNsYXJhdGlvblwiXSA9IEZ1bmN0aW9uU2NvcGVkRGVjbGFyYXRpb25dID0gXCJGdW5jdGlvblNjb3BlZERlY2xhcmF0aW9uXCI7XG4gIGNvbnN0IEJsb2NrU2NvcGVkRGVjbGFyYXRpb24gPSBGdW5jdGlvblNjb3BlZERlY2xhcmF0aW9uICsgMTsgSWRlbnRpZmllclJvbGVbSWRlbnRpZmllclJvbGVbXCJCbG9ja1Njb3BlZERlY2xhcmF0aW9uXCJdID0gQmxvY2tTY29wZWREZWNsYXJhdGlvbl0gPSBcIkJsb2NrU2NvcGVkRGVjbGFyYXRpb25cIjtcbiAgY29uc3QgT2JqZWN0U2hvcnRoYW5kVG9wTGV2ZWxEZWNsYXJhdGlvbiA9IEJsb2NrU2NvcGVkRGVjbGFyYXRpb24gKyAxOyBJZGVudGlmaWVyUm9sZVtJZGVudGlmaWVyUm9sZVtcIk9iamVjdFNob3J0aGFuZFRvcExldmVsRGVjbGFyYXRpb25cIl0gPSBPYmplY3RTaG9ydGhhbmRUb3BMZXZlbERlY2xhcmF0aW9uXSA9IFwiT2JqZWN0U2hvcnRoYW5kVG9wTGV2ZWxEZWNsYXJhdGlvblwiO1xuICBjb25zdCBPYmplY3RTaG9ydGhhbmRGdW5jdGlvblNjb3BlZERlY2xhcmF0aW9uID0gT2JqZWN0U2hvcnRoYW5kVG9wTGV2ZWxEZWNsYXJhdGlvbiArIDE7IElkZW50aWZpZXJSb2xlW0lkZW50aWZpZXJSb2xlW1wiT2JqZWN0U2hvcnRoYW5kRnVuY3Rpb25TY29wZWREZWNsYXJhdGlvblwiXSA9IE9iamVjdFNob3J0aGFuZEZ1bmN0aW9uU2NvcGVkRGVjbGFyYXRpb25dID0gXCJPYmplY3RTaG9ydGhhbmRGdW5jdGlvblNjb3BlZERlY2xhcmF0aW9uXCI7XG4gIGNvbnN0IE9iamVjdFNob3J0aGFuZEJsb2NrU2NvcGVkRGVjbGFyYXRpb24gPSBPYmplY3RTaG9ydGhhbmRGdW5jdGlvblNjb3BlZERlY2xhcmF0aW9uICsgMTsgSWRlbnRpZmllclJvbGVbSWRlbnRpZmllclJvbGVbXCJPYmplY3RTaG9ydGhhbmRCbG9ja1Njb3BlZERlY2xhcmF0aW9uXCJdID0gT2JqZWN0U2hvcnRoYW5kQmxvY2tTY29wZWREZWNsYXJhdGlvbl0gPSBcIk9iamVjdFNob3J0aGFuZEJsb2NrU2NvcGVkRGVjbGFyYXRpb25cIjtcbiAgY29uc3QgT2JqZWN0U2hvcnRoYW5kID0gT2JqZWN0U2hvcnRoYW5kQmxvY2tTY29wZWREZWNsYXJhdGlvbiArIDE7IElkZW50aWZpZXJSb2xlW0lkZW50aWZpZXJSb2xlW1wiT2JqZWN0U2hvcnRoYW5kXCJdID0gT2JqZWN0U2hvcnRoYW5kXSA9IFwiT2JqZWN0U2hvcnRoYW5kXCI7XG4gIC8vIEFueSBpZGVudGlmaWVyIGJvdW5kIGluIGFuIGltcG9ydCBzdGF0ZW1lbnQsIGUuZy4gYm90aCBBIGFuZCBiIGZyb21cbiAgLy8gYGltcG9ydCBBLCAqIGFzIGIgZnJvbSAnQSc7YFxuICBjb25zdCBJbXBvcnREZWNsYXJhdGlvbiA9IE9iamVjdFNob3J0aGFuZCArIDE7IElkZW50aWZpZXJSb2xlW0lkZW50aWZpZXJSb2xlW1wiSW1wb3J0RGVjbGFyYXRpb25cIl0gPSBJbXBvcnREZWNsYXJhdGlvbl0gPSBcIkltcG9ydERlY2xhcmF0aW9uXCI7XG4gIGNvbnN0IE9iamVjdEtleSA9IEltcG9ydERlY2xhcmF0aW9uICsgMTsgSWRlbnRpZmllclJvbGVbSWRlbnRpZmllclJvbGVbXCJPYmplY3RLZXlcIl0gPSBPYmplY3RLZXldID0gXCJPYmplY3RLZXlcIjtcbiAgLy8gVGhlIGBmb29gIGluIGBpbXBvcnQge2ZvbyBhcyBiYXJ9IGZyb20gXCIuL2FiY1wiO2AuXG4gIGNvbnN0IEltcG9ydEFjY2VzcyA9IE9iamVjdEtleSArIDE7IElkZW50aWZpZXJSb2xlW0lkZW50aWZpZXJSb2xlW1wiSW1wb3J0QWNjZXNzXCJdID0gSW1wb3J0QWNjZXNzXSA9IFwiSW1wb3J0QWNjZXNzXCI7XG59KShJZGVudGlmaWVyUm9sZSB8fCAoZXhwb3J0cy5JZGVudGlmaWVyUm9sZSA9IElkZW50aWZpZXJSb2xlID0ge30pKTtcblxuLyoqXG4gKiBFeHRyYSBpbmZvcm1hdGlvbiBvbiBqc3hUYWdTdGFydCB0b2tlbnMsIHVzZWQgdG8gZGV0ZXJtaW5lIHdoaWNoIG9mIHRoZSB0aHJlZVxuICoganN4IGZ1bmN0aW9ucyBhcmUgY2FsbGVkIGluIHRoZSBhdXRvbWF0aWMgdHJhbnNmb3JtLlxuICovXG52YXIgSlNYUm9sZTsgKGZ1bmN0aW9uIChKU1hSb2xlKSB7XG4gIC8vIFRoZSBlbGVtZW50IGlzIHNlbGYtY2xvc2luZyBvciBoYXMgYSBib2R5IHRoYXQgcmVzb2x2ZXMgdG8gZW1wdHkuIFdlXG4gIC8vIHNob3VsZG4ndCBlbWl0IGNoaWxkcmVuIGF0IGFsbCBpbiB0aGlzIGNhc2UuXG4gIGNvbnN0IE5vQ2hpbGRyZW4gPSAwOyBKU1hSb2xlW0pTWFJvbGVbXCJOb0NoaWxkcmVuXCJdID0gTm9DaGlsZHJlbl0gPSBcIk5vQ2hpbGRyZW5cIjtcbiAgLy8gVGhlIGVsZW1lbnQgaGFzIGEgc2luZ2xlIGV4cGxpY2l0IGNoaWxkLCB3aGljaCBtaWdodCBzdGlsbCBiZSBhbiBhcmJpdHJhcnlcbiAgLy8gZXhwcmVzc2lvbiBsaWtlIGFuIGFycmF5LiBXZSBzaG91bGQgZW1pdCB0aGF0IGV4cHJlc3Npb24gYXMgdGhlIGNoaWxkcmVuLlxuICBjb25zdCBPbmVDaGlsZCA9IE5vQ2hpbGRyZW4gKyAxOyBKU1hSb2xlW0pTWFJvbGVbXCJPbmVDaGlsZFwiXSA9IE9uZUNoaWxkXSA9IFwiT25lQ2hpbGRcIjtcbiAgLy8gVGhlIGVsZW1lbnQgaGFzIGF0IGxlYXN0IHR3byBleHBsaWNpdGx5LXNwZWNpZmllZCBjaGlsZHJlbiBvciBoYXMgc3ByZWFkXG4gIC8vIGNoaWxkcmVuLCBzbyBjaGlsZCBwb3NpdGlvbnMgYXJlIGFzc3VtZWQgdG8gYmUgXCJzdGF0aWNcIi4gV2Ugc2hvdWxkIHdyYXBcbiAgLy8gdGhlc2UgY2hpbGRyZW4gaW4gYW4gYXJyYXkuXG4gIGNvbnN0IFN0YXRpY0NoaWxkcmVuID0gT25lQ2hpbGQgKyAxOyBKU1hSb2xlW0pTWFJvbGVbXCJTdGF0aWNDaGlsZHJlblwiXSA9IFN0YXRpY0NoaWxkcmVuXSA9IFwiU3RhdGljQ2hpbGRyZW5cIjtcbiAgLy8gVGhlIGVsZW1lbnQgaGFzIGEgcHJvcCBuYW1lZCBcImtleVwiIGFmdGVyIGEgcHJvcCBzcHJlYWQsIHNvIHdlIHNob3VsZCBmYWxsXG4gIC8vIGJhY2sgdG8gdGhlIGNyZWF0ZUVsZW1lbnQgZnVuY3Rpb24uXG4gIGNvbnN0IEtleUFmdGVyUHJvcFNwcmVhZCA9IFN0YXRpY0NoaWxkcmVuICsgMTsgSlNYUm9sZVtKU1hSb2xlW1wiS2V5QWZ0ZXJQcm9wU3ByZWFkXCJdID0gS2V5QWZ0ZXJQcm9wU3ByZWFkXSA9IFwiS2V5QWZ0ZXJQcm9wU3ByZWFkXCI7XG59KShKU1hSb2xlIHx8IChleHBvcnRzLkpTWFJvbGUgPSBKU1hSb2xlID0ge30pKTtcblxuIGZ1bmN0aW9uIGlzRGVjbGFyYXRpb24odG9rZW4pIHtcbiAgY29uc3Qgcm9sZSA9IHRva2VuLmlkZW50aWZpZXJSb2xlO1xuICByZXR1cm4gKFxuICAgIHJvbGUgPT09IElkZW50aWZpZXJSb2xlLlRvcExldmVsRGVjbGFyYXRpb24gfHxcbiAgICByb2xlID09PSBJZGVudGlmaWVyUm9sZS5GdW5jdGlvblNjb3BlZERlY2xhcmF0aW9uIHx8XG4gICAgcm9sZSA9PT0gSWRlbnRpZmllclJvbGUuQmxvY2tTY29wZWREZWNsYXJhdGlvbiB8fFxuICAgIHJvbGUgPT09IElkZW50aWZpZXJSb2xlLk9iamVjdFNob3J0aGFuZFRvcExldmVsRGVjbGFyYXRpb24gfHxcbiAgICByb2xlID09PSBJZGVudGlmaWVyUm9sZS5PYmplY3RTaG9ydGhhbmRGdW5jdGlvblNjb3BlZERlY2xhcmF0aW9uIHx8XG4gICAgcm9sZSA9PT0gSWRlbnRpZmllclJvbGUuT2JqZWN0U2hvcnRoYW5kQmxvY2tTY29wZWREZWNsYXJhdGlvblxuICApO1xufSBleHBvcnRzLmlzRGVjbGFyYXRpb24gPSBpc0RlY2xhcmF0aW9uO1xuXG4gZnVuY3Rpb24gaXNOb25Ub3BMZXZlbERlY2xhcmF0aW9uKHRva2VuKSB7XG4gIGNvbnN0IHJvbGUgPSB0b2tlbi5pZGVudGlmaWVyUm9sZTtcbiAgcmV0dXJuIChcbiAgICByb2xlID09PSBJZGVudGlmaWVyUm9sZS5GdW5jdGlvblNjb3BlZERlY2xhcmF0aW9uIHx8XG4gICAgcm9sZSA9PT0gSWRlbnRpZmllclJvbGUuQmxvY2tTY29wZWREZWNsYXJhdGlvbiB8fFxuICAgIHJvbGUgPT09IElkZW50aWZpZXJSb2xlLk9iamVjdFNob3J0aGFuZEZ1bmN0aW9uU2NvcGVkRGVjbGFyYXRpb24gfHxcbiAgICByb2xlID09PSBJZGVudGlmaWVyUm9sZS5PYmplY3RTaG9ydGhhbmRCbG9ja1Njb3BlZERlY2xhcmF0aW9uXG4gICk7XG59IGV4cG9ydHMuaXNOb25Ub3BMZXZlbERlY2xhcmF0aW9uID0gaXNOb25Ub3BMZXZlbERlY2xhcmF0aW9uO1xuXG4gZnVuY3Rpb24gaXNUb3BMZXZlbERlY2xhcmF0aW9uKHRva2VuKSB7XG4gIGNvbnN0IHJvbGUgPSB0b2tlbi5pZGVudGlmaWVyUm9sZTtcbiAgcmV0dXJuIChcbiAgICByb2xlID09PSBJZGVudGlmaWVyUm9sZS5Ub3BMZXZlbERlY2xhcmF0aW9uIHx8XG4gICAgcm9sZSA9PT0gSWRlbnRpZmllclJvbGUuT2JqZWN0U2hvcnRoYW5kVG9wTGV2ZWxEZWNsYXJhdGlvbiB8fFxuICAgIHJvbGUgPT09IElkZW50aWZpZXJSb2xlLkltcG9ydERlY2xhcmF0aW9uXG4gICk7XG59IGV4cG9ydHMuaXNUb3BMZXZlbERlY2xhcmF0aW9uID0gaXNUb3BMZXZlbERlY2xhcmF0aW9uO1xuXG4gZnVuY3Rpb24gaXNCbG9ja1Njb3BlZERlY2xhcmF0aW9uKHRva2VuKSB7XG4gIGNvbnN0IHJvbGUgPSB0b2tlbi5pZGVudGlmaWVyUm9sZTtcbiAgLy8gVHJlYXQgdG9wLWxldmVsIGRlY2xhcmF0aW9ucyBhcyBibG9jayBzY29wZSBzaW5jZSB0aGUgZGlzdGluY3Rpb24gZG9lc24ndCBtYXR0ZXIgaGVyZS5cbiAgcmV0dXJuIChcbiAgICByb2xlID09PSBJZGVudGlmaWVyUm9sZS5Ub3BMZXZlbERlY2xhcmF0aW9uIHx8XG4gICAgcm9sZSA9PT0gSWRlbnRpZmllclJvbGUuQmxvY2tTY29wZWREZWNsYXJhdGlvbiB8fFxuICAgIHJvbGUgPT09IElkZW50aWZpZXJSb2xlLk9iamVjdFNob3J0aGFuZFRvcExldmVsRGVjbGFyYXRpb24gfHxcbiAgICByb2xlID09PSBJZGVudGlmaWVyUm9sZS5PYmplY3RTaG9ydGhhbmRCbG9ja1Njb3BlZERlY2xhcmF0aW9uXG4gICk7XG59IGV4cG9ydHMuaXNCbG9ja1Njb3BlZERlY2xhcmF0aW9uID0gaXNCbG9ja1Njb3BlZERlY2xhcmF0aW9uO1xuXG4gZnVuY3Rpb24gaXNGdW5jdGlvblNjb3BlZERlY2xhcmF0aW9uKHRva2VuKSB7XG4gIGNvbnN0IHJvbGUgPSB0b2tlbi5pZGVudGlmaWVyUm9sZTtcbiAgcmV0dXJuIChcbiAgICByb2xlID09PSBJZGVudGlmaWVyUm9sZS5GdW5jdGlvblNjb3BlZERlY2xhcmF0aW9uIHx8XG4gICAgcm9sZSA9PT0gSWRlbnRpZmllclJvbGUuT2JqZWN0U2hvcnRoYW5kRnVuY3Rpb25TY29wZWREZWNsYXJhdGlvblxuICApO1xufSBleHBvcnRzLmlzRnVuY3Rpb25TY29wZWREZWNsYXJhdGlvbiA9IGlzRnVuY3Rpb25TY29wZWREZWNsYXJhdGlvbjtcblxuIGZ1bmN0aW9uIGlzT2JqZWN0U2hvcnRoYW5kRGVjbGFyYXRpb24odG9rZW4pIHtcbiAgcmV0dXJuIChcbiAgICB0b2tlbi5pZGVudGlmaWVyUm9sZSA9PT0gSWRlbnRpZmllclJvbGUuT2JqZWN0U2hvcnRoYW5kVG9wTGV2ZWxEZWNsYXJhdGlvbiB8fFxuICAgIHRva2VuLmlkZW50aWZpZXJSb2xlID09PSBJZGVudGlmaWVyUm9sZS5PYmplY3RTaG9ydGhhbmRCbG9ja1Njb3BlZERlY2xhcmF0aW9uIHx8XG4gICAgdG9rZW4uaWRlbnRpZmllclJvbGUgPT09IElkZW50aWZpZXJSb2xlLk9iamVjdFNob3J0aGFuZEZ1bmN0aW9uU2NvcGVkRGVjbGFyYXRpb25cbiAgKTtcbn0gZXhwb3J0cy5pc09iamVjdFNob3J0aGFuZERlY2xhcmF0aW9uID0gaXNPYmplY3RTaG9ydGhhbmREZWNsYXJhdGlvbjtcblxuLy8gT2JqZWN0IHR5cGUgdXNlZCB0byByZXByZXNlbnQgdG9rZW5zLiBOb3RlIHRoYXQgbm9ybWFsbHksIHRva2Vuc1xuLy8gc2ltcGx5IGV4aXN0IGFzIHByb3BlcnRpZXMgb24gdGhlIHBhcnNlciBvYmplY3QuIFRoaXMgaXMgb25seVxuLy8gdXNlZCBmb3IgdGhlIG9uVG9rZW4gY2FsbGJhY2sgYW5kIHRoZSBleHRlcm5hbCB0b2tlbml6ZXIuXG4gY2xhc3MgVG9rZW4ge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnR5cGUgPSBfYmFzZS5zdGF0ZS50eXBlO1xuICAgIHRoaXMuY29udGV4dHVhbEtleXdvcmQgPSBfYmFzZS5zdGF0ZS5jb250ZXh0dWFsS2V5d29yZDtcbiAgICB0aGlzLnN0YXJ0ID0gX2Jhc2Uuc3RhdGUuc3RhcnQ7XG4gICAgdGhpcy5lbmQgPSBfYmFzZS5zdGF0ZS5lbmQ7XG4gICAgdGhpcy5zY29wZURlcHRoID0gX2Jhc2Uuc3RhdGUuc2NvcGVEZXB0aDtcbiAgICB0aGlzLmlzVHlwZSA9IF9iYXNlLnN0YXRlLmlzVHlwZTtcbiAgICB0aGlzLmlkZW50aWZpZXJSb2xlID0gbnVsbDtcbiAgICB0aGlzLmpzeFJvbGUgPSBudWxsO1xuICAgIHRoaXMuc2hhZG93c0dsb2JhbCA9IGZhbHNlO1xuICAgIHRoaXMuaXNBc3luY09wZXJhdGlvbiA9IGZhbHNlO1xuICAgIHRoaXMuY29udGV4dElkID0gbnVsbDtcbiAgICB0aGlzLnJoc0VuZEluZGV4ID0gbnVsbDtcbiAgICB0aGlzLmlzRXhwcmVzc2lvbiA9IGZhbHNlO1xuICAgIHRoaXMubnVtTnVsbGlzaENvYWxlc2NlU3RhcnRzID0gMDtcbiAgICB0aGlzLm51bU51bGxpc2hDb2FsZXNjZUVuZHMgPSAwO1xuICAgIHRoaXMuaXNPcHRpb25hbENoYWluU3RhcnQgPSBmYWxzZTtcbiAgICB0aGlzLmlzT3B0aW9uYWxDaGFpbkVuZCA9IGZhbHNlO1xuICAgIHRoaXMuc3Vic2NyaXB0U3RhcnRJbmRleCA9IG51bGw7XG4gICAgdGhpcy5udWxsaXNoU3RhcnRJbmRleCA9IG51bGw7XG4gIH1cblxuICBcbiAgXG4gIFxuICBcbiAgXG4gIFxuICBcbiAgXG4gIC8vIEluaXRpYWxseSBmYWxzZSBmb3IgYWxsIHRva2VucywgdGhlbiBtYXkgYmUgY29tcHV0ZWQgaW4gYSBmb2xsb3ctdXAgc3RlcCB0aGF0IGRvZXMgc2NvcGVcbiAgLy8gYW5hbHlzaXMuXG4gIFxuICAvLyBJbml0aWFsbHkgZmFsc2UgZm9yIGFsbCB0b2tlbnMsIGJ1dCBtYXkgYmUgc2V0IGR1cmluZyB0cmFuc2Zvcm0gdG8gbWFyayBpdCBhcyBjb250YWluaW5nIGFuXG4gIC8vIGF3YWl0IG9wZXJhdGlvbi5cbiAgXG4gIFxuICAvLyBGb3IgYXNzaWdubWVudHMsIHRoZSBpbmRleCBvZiB0aGUgUkhTLiBGb3IgZXhwb3J0IHRva2VucywgdGhlIGVuZCBvZiB0aGUgZXhwb3J0LlxuICBcbiAgLy8gRm9yIGNsYXNzIHRva2VucywgcmVjb3JkcyBpZiB0aGUgY2xhc3MgaXMgYSBjbGFzcyBleHByZXNzaW9uIG9yIGEgY2xhc3Mgc3RhdGVtZW50LlxuICBcbiAgLy8gTnVtYmVyIG9mIHRpbWVzIHRvIGluc2VydCBhIGBudWxsaXNoQ29hbGVzY2UoYCBzbmlwcGV0IGJlZm9yZSB0aGlzIHRva2VuLlxuICBcbiAgLy8gTnVtYmVyIG9mIHRpbWVzIHRvIGluc2VydCBhIGApYCBzbmlwcGV0IGFmdGVyIHRoaXMgdG9rZW4uXG4gIFxuICAvLyBJZiB0cnVlLCBpbnNlcnQgYW4gYG9wdGlvbmFsQ2hhaW4oW2Agc25pcHBldCBiZWZvcmUgdGhpcyB0b2tlbi5cbiAgXG4gIC8vIElmIHRydWUsIGluc2VydCBhIGBdKWAgc25pcHBldCBhZnRlciB0aGlzIHRva2VuLlxuICBcbiAgLy8gVGFnIGZvciBgLmAsIGA/LmAsIGBbYCwgYD8uW2AsIGAoYCwgYW5kIGA/LihgIHRvIGRlbm90ZSB0aGUgXCJyb290XCIgdG9rZW4gZm9yIHRoaXNcbiAgLy8gc3Vic2NyaXB0IGNoYWluLiBUaGlzIGNhbiBiZSB1c2VkIHRvIGRldGVybWluZSBpZiB0aGlzIGNoYWluIGlzIGFuIG9wdGlvbmFsIGNoYWluLlxuICBcbiAgLy8gVGFnIGZvciBgPz9gIG9wZXJhdG9ycyB0byBkZW5vdGUgdGhlIHJvb3QgdG9rZW4gZm9yIHRoaXMgbnVsbGlzaCBjb2FsZXNjaW5nIGNhbGwuXG4gIFxufSBleHBvcnRzLlRva2VuID0gVG9rZW47XG5cbi8vICMjIFRva2VuaXplclxuXG4vLyBNb3ZlIHRvIHRoZSBuZXh0IHRva2VuXG4gZnVuY3Rpb24gbmV4dCgpIHtcbiAgX2Jhc2Uuc3RhdGUudG9rZW5zLnB1c2gobmV3IFRva2VuKCkpO1xuICBuZXh0VG9rZW4oKTtcbn0gZXhwb3J0cy5uZXh0ID0gbmV4dDtcblxuLy8gQ2FsbCBpbnN0ZWFkIG9mIG5leHQgd2hlbiBpbnNpZGUgYSB0ZW1wbGF0ZSwgc2luY2UgdGhhdCBuZWVkcyB0byBiZSBoYW5kbGVkIGRpZmZlcmVudGx5LlxuIGZ1bmN0aW9uIG5leHRUZW1wbGF0ZVRva2VuKCkge1xuICBfYmFzZS5zdGF0ZS50b2tlbnMucHVzaChuZXcgVG9rZW4oKSk7XG4gIF9iYXNlLnN0YXRlLnN0YXJ0ID0gX2Jhc2Uuc3RhdGUucG9zO1xuICByZWFkVG1wbFRva2VuKCk7XG59IGV4cG9ydHMubmV4dFRlbXBsYXRlVG9rZW4gPSBuZXh0VGVtcGxhdGVUb2tlbjtcblxuLy8gVGhlIHRva2VuaXplciBuZXZlciBwYXJzZXMgcmVnZXhlcyBieSBkZWZhdWx0LiBJbnN0ZWFkLCB0aGUgcGFyc2VyIGlzIHJlc3BvbnNpYmxlIGZvclxuLy8gaW5zdHJ1Y3RpbmcgaXQgdG8gcGFyc2UgYSByZWdleCB3aGVuIHdlIHNlZSBhIHNsYXNoIGF0IHRoZSBzdGFydCBvZiBhbiBleHByZXNzaW9uLlxuIGZ1bmN0aW9uIHJldG9rZW5pemVTbGFzaEFzUmVnZXgoKSB7XG4gIGlmIChfYmFzZS5zdGF0ZS50eXBlID09PSBfdHlwZXMuVG9rZW5UeXBlLmFzc2lnbikge1xuICAgIC0tX2Jhc2Uuc3RhdGUucG9zO1xuICB9XG4gIHJlYWRSZWdleHAoKTtcbn0gZXhwb3J0cy5yZXRva2VuaXplU2xhc2hBc1JlZ2V4ID0gcmV0b2tlbml6ZVNsYXNoQXNSZWdleDtcblxuIGZ1bmN0aW9uIHB1c2hUeXBlQ29udGV4dChleGlzdGluZ1Rva2Vuc0luVHlwZSkge1xuICBmb3IgKGxldCBpID0gX2Jhc2Uuc3RhdGUudG9rZW5zLmxlbmd0aCAtIGV4aXN0aW5nVG9rZW5zSW5UeXBlOyBpIDwgX2Jhc2Uuc3RhdGUudG9rZW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgX2Jhc2Uuc3RhdGUudG9rZW5zW2ldLmlzVHlwZSA9IHRydWU7XG4gIH1cbiAgY29uc3Qgb2xkSXNUeXBlID0gX2Jhc2Uuc3RhdGUuaXNUeXBlO1xuICBfYmFzZS5zdGF0ZS5pc1R5cGUgPSB0cnVlO1xuICByZXR1cm4gb2xkSXNUeXBlO1xufSBleHBvcnRzLnB1c2hUeXBlQ29udGV4dCA9IHB1c2hUeXBlQ29udGV4dDtcblxuIGZ1bmN0aW9uIHBvcFR5cGVDb250ZXh0KG9sZElzVHlwZSkge1xuICBfYmFzZS5zdGF0ZS5pc1R5cGUgPSBvbGRJc1R5cGU7XG59IGV4cG9ydHMucG9wVHlwZUNvbnRleHQgPSBwb3BUeXBlQ29udGV4dDtcblxuIGZ1bmN0aW9uIGVhdCh0eXBlKSB7XG4gIGlmIChtYXRjaCh0eXBlKSkge1xuICAgIG5leHQoKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn0gZXhwb3J0cy5lYXQgPSBlYXQ7XG5cbiBmdW5jdGlvbiBlYXRUeXBlVG9rZW4odG9rZW5UeXBlKSB7XG4gIGNvbnN0IG9sZElzVHlwZSA9IF9iYXNlLnN0YXRlLmlzVHlwZTtcbiAgX2Jhc2Uuc3RhdGUuaXNUeXBlID0gdHJ1ZTtcbiAgZWF0KHRva2VuVHlwZSk7XG4gIF9iYXNlLnN0YXRlLmlzVHlwZSA9IG9sZElzVHlwZTtcbn0gZXhwb3J0cy5lYXRUeXBlVG9rZW4gPSBlYXRUeXBlVG9rZW47XG5cbiBmdW5jdGlvbiBtYXRjaCh0eXBlKSB7XG4gIHJldHVybiBfYmFzZS5zdGF0ZS50eXBlID09PSB0eXBlO1xufSBleHBvcnRzLm1hdGNoID0gbWF0Y2g7XG5cbiBmdW5jdGlvbiBsb29rYWhlYWRUeXBlKCkge1xuICBjb25zdCBzbmFwc2hvdCA9IF9iYXNlLnN0YXRlLnNuYXBzaG90KCk7XG4gIG5leHQoKTtcbiAgY29uc3QgdHlwZSA9IF9iYXNlLnN0YXRlLnR5cGU7XG4gIF9iYXNlLnN0YXRlLnJlc3RvcmVGcm9tU25hcHNob3Qoc25hcHNob3QpO1xuICByZXR1cm4gdHlwZTtcbn0gZXhwb3J0cy5sb29rYWhlYWRUeXBlID0gbG9va2FoZWFkVHlwZTtcblxuIGNsYXNzIFR5cGVBbmRLZXl3b3JkIHtcbiAgXG4gIFxuICBjb25zdHJ1Y3Rvcih0eXBlLCBjb250ZXh0dWFsS2V5d29yZCkge1xuICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gICAgdGhpcy5jb250ZXh0dWFsS2V5d29yZCA9IGNvbnRleHR1YWxLZXl3b3JkO1xuICB9XG59IGV4cG9ydHMuVHlwZUFuZEtleXdvcmQgPSBUeXBlQW5kS2V5d29yZDtcblxuIGZ1bmN0aW9uIGxvb2thaGVhZFR5cGVBbmRLZXl3b3JkKCkge1xuICBjb25zdCBzbmFwc2hvdCA9IF9iYXNlLnN0YXRlLnNuYXBzaG90KCk7XG4gIG5leHQoKTtcbiAgY29uc3QgdHlwZSA9IF9iYXNlLnN0YXRlLnR5cGU7XG4gIGNvbnN0IGNvbnRleHR1YWxLZXl3b3JkID0gX2Jhc2Uuc3RhdGUuY29udGV4dHVhbEtleXdvcmQ7XG4gIF9iYXNlLnN0YXRlLnJlc3RvcmVGcm9tU25hcHNob3Qoc25hcHNob3QpO1xuICByZXR1cm4gbmV3IFR5cGVBbmRLZXl3b3JkKHR5cGUsIGNvbnRleHR1YWxLZXl3b3JkKTtcbn0gZXhwb3J0cy5sb29rYWhlYWRUeXBlQW5kS2V5d29yZCA9IGxvb2thaGVhZFR5cGVBbmRLZXl3b3JkO1xuXG4gZnVuY3Rpb24gbmV4dFRva2VuU3RhcnQoKSB7XG4gIHJldHVybiBuZXh0VG9rZW5TdGFydFNpbmNlKF9iYXNlLnN0YXRlLnBvcyk7XG59IGV4cG9ydHMubmV4dFRva2VuU3RhcnQgPSBuZXh0VG9rZW5TdGFydDtcblxuIGZ1bmN0aW9uIG5leHRUb2tlblN0YXJ0U2luY2UocG9zKSB7XG4gIF93aGl0ZXNwYWNlLnNraXBXaGl0ZVNwYWNlLmxhc3RJbmRleCA9IHBvcztcbiAgY29uc3Qgc2tpcCA9IF93aGl0ZXNwYWNlLnNraXBXaGl0ZVNwYWNlLmV4ZWMoX2Jhc2UuaW5wdXQpO1xuICByZXR1cm4gcG9zICsgc2tpcFswXS5sZW5ndGg7XG59IGV4cG9ydHMubmV4dFRva2VuU3RhcnRTaW5jZSA9IG5leHRUb2tlblN0YXJ0U2luY2U7XG5cbiBmdW5jdGlvbiBsb29rYWhlYWRDaGFyQ29kZSgpIHtcbiAgcmV0dXJuIF9iYXNlLmlucHV0LmNoYXJDb2RlQXQobmV4dFRva2VuU3RhcnQoKSk7XG59IGV4cG9ydHMubG9va2FoZWFkQ2hhckNvZGUgPSBsb29rYWhlYWRDaGFyQ29kZTtcblxuLy8gUmVhZCBhIHNpbmdsZSB0b2tlbiwgdXBkYXRpbmcgdGhlIHBhcnNlciBvYmplY3QncyB0b2tlbi1yZWxhdGVkXG4vLyBwcm9wZXJ0aWVzLlxuIGZ1bmN0aW9uIG5leHRUb2tlbigpIHtcbiAgc2tpcFNwYWNlKCk7XG4gIF9iYXNlLnN0YXRlLnN0YXJ0ID0gX2Jhc2Uuc3RhdGUucG9zO1xuICBpZiAoX2Jhc2Uuc3RhdGUucG9zID49IF9iYXNlLmlucHV0Lmxlbmd0aCkge1xuICAgIGNvbnN0IHRva2VucyA9IF9iYXNlLnN0YXRlLnRva2VucztcbiAgICAvLyBXZSBub3JtYWxseSBydW4gcGFzdCB0aGUgZW5kIGEgYml0LCBidXQgaWYgd2UncmUgd2F5IHBhc3QgdGhlIGVuZCwgYXZvaWQgYW4gaW5maW5pdGUgbG9vcC5cbiAgICAvLyBBbHNvIGNoZWNrIHRoZSB0b2tlbiBwb3NpdGlvbnMgcmF0aGVyIHRoYW4gdGhlIHR5cGVzIHNpbmNlIHNvbWV0aW1lcyB3ZSByZXdyaXRlIHRoZSB0b2tlblxuICAgIC8vIHR5cGUgdG8gc29tZXRoaW5nIGVsc2UuXG4gICAgaWYgKFxuICAgICAgdG9rZW5zLmxlbmd0aCA+PSAyICYmXG4gICAgICB0b2tlbnNbdG9rZW5zLmxlbmd0aCAtIDFdLnN0YXJ0ID49IF9iYXNlLmlucHV0Lmxlbmd0aCAmJlxuICAgICAgdG9rZW5zW3Rva2Vucy5sZW5ndGggLSAyXS5zdGFydCA+PSBfYmFzZS5pbnB1dC5sZW5ndGhcbiAgICApIHtcbiAgICAgIF91dGlsLnVuZXhwZWN0ZWQuY2FsbCh2b2lkIDAsIFwiVW5leHBlY3RlZGx5IHJlYWNoZWQgdGhlIGVuZCBvZiBpbnB1dC5cIik7XG4gICAgfVxuICAgIGZpbmlzaFRva2VuKF90eXBlcy5Ub2tlblR5cGUuZW9mKTtcbiAgICByZXR1cm47XG4gIH1cbiAgcmVhZFRva2VuKF9iYXNlLmlucHV0LmNoYXJDb2RlQXQoX2Jhc2Uuc3RhdGUucG9zKSk7XG59IGV4cG9ydHMubmV4dFRva2VuID0gbmV4dFRva2VuO1xuXG5mdW5jdGlvbiByZWFkVG9rZW4oY29kZSkge1xuICAvLyBJZGVudGlmaWVyIG9yIGtleXdvcmQuICdcXHVYWFhYJyBzZXF1ZW5jZXMgYXJlIGFsbG93ZWQgaW5cbiAgLy8gaWRlbnRpZmllcnMsIHNvICdcXCcgYWxzbyBkaXNwYXRjaGVzIHRvIHRoYXQuXG4gIGlmIChcbiAgICBfaWRlbnRpZmllci5JU19JREVOVElGSUVSX1NUQVJUW2NvZGVdIHx8XG4gICAgY29kZSA9PT0gX2NoYXJjb2Rlcy5jaGFyQ29kZXMuYmFja3NsYXNoIHx8XG4gICAgKGNvZGUgPT09IF9jaGFyY29kZXMuY2hhckNvZGVzLmF0U2lnbiAmJiBfYmFzZS5pbnB1dC5jaGFyQ29kZUF0KF9iYXNlLnN0YXRlLnBvcyArIDEpID09PSBfY2hhcmNvZGVzLmNoYXJDb2Rlcy5hdFNpZ24pXG4gICkge1xuICAgIF9yZWFkV29yZDIuZGVmYXVsdC5jYWxsKHZvaWQgMCwgKTtcbiAgfSBlbHNlIHtcbiAgICBnZXRUb2tlbkZyb21Db2RlKGNvZGUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHNraXBCbG9ja0NvbW1lbnQoKSB7XG4gIHdoaWxlIChcbiAgICBfYmFzZS5pbnB1dC5jaGFyQ29kZUF0KF9iYXNlLnN0YXRlLnBvcykgIT09IF9jaGFyY29kZXMuY2hhckNvZGVzLmFzdGVyaXNrIHx8XG4gICAgX2Jhc2UuaW5wdXQuY2hhckNvZGVBdChfYmFzZS5zdGF0ZS5wb3MgKyAxKSAhPT0gX2NoYXJjb2Rlcy5jaGFyQ29kZXMuc2xhc2hcbiAgKSB7XG4gICAgX2Jhc2Uuc3RhdGUucG9zKys7XG4gICAgaWYgKF9iYXNlLnN0YXRlLnBvcyA+IF9iYXNlLmlucHV0Lmxlbmd0aCkge1xuICAgICAgX3V0aWwudW5leHBlY3RlZC5jYWxsKHZvaWQgMCwgXCJVbnRlcm1pbmF0ZWQgY29tbWVudFwiLCBfYmFzZS5zdGF0ZS5wb3MgLSAyKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cbiAgX2Jhc2Uuc3RhdGUucG9zICs9IDI7XG59XG5cbiBmdW5jdGlvbiBza2lwTGluZUNvbW1lbnQoc3RhcnRTa2lwKSB7XG4gIGxldCBjaCA9IF9iYXNlLmlucHV0LmNoYXJDb2RlQXQoKF9iYXNlLnN0YXRlLnBvcyArPSBzdGFydFNraXApKTtcbiAgaWYgKF9iYXNlLnN0YXRlLnBvcyA8IF9iYXNlLmlucHV0Lmxlbmd0aCkge1xuICAgIHdoaWxlIChcbiAgICAgIGNoICE9PSBfY2hhcmNvZGVzLmNoYXJDb2Rlcy5saW5lRmVlZCAmJlxuICAgICAgY2ggIT09IF9jaGFyY29kZXMuY2hhckNvZGVzLmNhcnJpYWdlUmV0dXJuICYmXG4gICAgICBjaCAhPT0gX2NoYXJjb2Rlcy5jaGFyQ29kZXMubGluZVNlcGFyYXRvciAmJlxuICAgICAgY2ggIT09IF9jaGFyY29kZXMuY2hhckNvZGVzLnBhcmFncmFwaFNlcGFyYXRvciAmJlxuICAgICAgKytfYmFzZS5zdGF0ZS5wb3MgPCBfYmFzZS5pbnB1dC5sZW5ndGhcbiAgICApIHtcbiAgICAgIGNoID0gX2Jhc2UuaW5wdXQuY2hhckNvZGVBdChfYmFzZS5zdGF0ZS5wb3MpO1xuICAgIH1cbiAgfVxufSBleHBvcnRzLnNraXBMaW5lQ29tbWVudCA9IHNraXBMaW5lQ29tbWVudDtcblxuLy8gQ2FsbGVkIGF0IHRoZSBzdGFydCBvZiB0aGUgcGFyc2UgYW5kIGFmdGVyIGV2ZXJ5IHRva2VuLiBTa2lwc1xuLy8gd2hpdGVzcGFjZSBhbmQgY29tbWVudHMuXG4gZnVuY3Rpb24gc2tpcFNwYWNlKCkge1xuICB3aGlsZSAoX2Jhc2Uuc3RhdGUucG9zIDwgX2Jhc2UuaW5wdXQubGVuZ3RoKSB7XG4gICAgY29uc3QgY2ggPSBfYmFzZS5pbnB1dC5jaGFyQ29kZUF0KF9iYXNlLnN0YXRlLnBvcyk7XG4gICAgc3dpdGNoIChjaCkge1xuICAgICAgY2FzZSBfY2hhcmNvZGVzLmNoYXJDb2Rlcy5jYXJyaWFnZVJldHVybjpcbiAgICAgICAgaWYgKF9iYXNlLmlucHV0LmNoYXJDb2RlQXQoX2Jhc2Uuc3RhdGUucG9zICsgMSkgPT09IF9jaGFyY29kZXMuY2hhckNvZGVzLmxpbmVGZWVkKSB7XG4gICAgICAgICAgKytfYmFzZS5zdGF0ZS5wb3M7XG4gICAgICAgIH1cblxuICAgICAgY2FzZSBfY2hhcmNvZGVzLmNoYXJDb2Rlcy5saW5lRmVlZDpcbiAgICAgIGNhc2UgX2NoYXJjb2Rlcy5jaGFyQ29kZXMubGluZVNlcGFyYXRvcjpcbiAgICAgIGNhc2UgX2NoYXJjb2Rlcy5jaGFyQ29kZXMucGFyYWdyYXBoU2VwYXJhdG9yOlxuICAgICAgICArK19iYXNlLnN0YXRlLnBvcztcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgX2NoYXJjb2Rlcy5jaGFyQ29kZXMuc2xhc2g6XG4gICAgICAgIHN3aXRjaCAoX2Jhc2UuaW5wdXQuY2hhckNvZGVBdChfYmFzZS5zdGF0ZS5wb3MgKyAxKSkge1xuICAgICAgICAgIGNhc2UgX2NoYXJjb2Rlcy5jaGFyQ29kZXMuYXN0ZXJpc2s6XG4gICAgICAgICAgICBfYmFzZS5zdGF0ZS5wb3MgKz0gMjtcbiAgICAgICAgICAgIHNraXBCbG9ja0NvbW1lbnQoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSBfY2hhcmNvZGVzLmNoYXJDb2Rlcy5zbGFzaDpcbiAgICAgICAgICAgIHNraXBMaW5lQ29tbWVudCgyKTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKF93aGl0ZXNwYWNlLklTX1dISVRFU1BBQ0VbY2hdKSB7XG4gICAgICAgICAgKytfYmFzZS5zdGF0ZS5wb3M7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgfVxuICB9XG59IGV4cG9ydHMuc2tpcFNwYWNlID0gc2tpcFNwYWNlO1xuXG4vLyBDYWxsZWQgYXQgdGhlIGVuZCBvZiBldmVyeSB0b2tlbi4gU2V0cyB2YXJpb3VzIGZpZWxkcywgYW5kIHNraXBzIHRoZSBzcGFjZSBhZnRlciB0aGUgdG9rZW4sIHNvXG4vLyB0aGF0IHRoZSBuZXh0IG9uZSdzIGBzdGFydGAgd2lsbCBwb2ludCBhdCB0aGUgcmlnaHQgcG9zaXRpb24uXG4gZnVuY3Rpb24gZmluaXNoVG9rZW4oXG4gIHR5cGUsXG4gIGNvbnRleHR1YWxLZXl3b3JkID0gX2tleXdvcmRzLkNvbnRleHR1YWxLZXl3b3JkLk5PTkUsXG4pIHtcbiAgX2Jhc2Uuc3RhdGUuZW5kID0gX2Jhc2Uuc3RhdGUucG9zO1xuICBfYmFzZS5zdGF0ZS50eXBlID0gdHlwZTtcbiAgX2Jhc2Uuc3RhdGUuY29udGV4dHVhbEtleXdvcmQgPSBjb250ZXh0dWFsS2V5d29yZDtcbn0gZXhwb3J0cy5maW5pc2hUb2tlbiA9IGZpbmlzaFRva2VuO1xuXG4vLyAjIyMgVG9rZW4gcmVhZGluZ1xuXG4vLyBUaGlzIGlzIHRoZSBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCB0byBmZXRjaCB0aGUgbmV4dCB0b2tlbi4gSXRcbi8vIGlzIHNvbWV3aGF0IG9ic2N1cmUsIGJlY2F1c2UgaXQgd29ya3MgaW4gY2hhcmFjdGVyIGNvZGVzIHJhdGhlclxuLy8gdGhhbiBjaGFyYWN0ZXJzLCBhbmQgYmVjYXVzZSBvcGVyYXRvciBwYXJzaW5nIGhhcyBiZWVuIGlubGluZWRcbi8vIGludG8gaXQuXG4vL1xuLy8gQWxsIGluIHRoZSBuYW1lIG9mIHNwZWVkLlxuZnVuY3Rpb24gcmVhZFRva2VuX2RvdCgpIHtcbiAgY29uc3QgbmV4dENoYXIgPSBfYmFzZS5pbnB1dC5jaGFyQ29kZUF0KF9iYXNlLnN0YXRlLnBvcyArIDEpO1xuICBpZiAobmV4dENoYXIgPj0gX2NoYXJjb2Rlcy5jaGFyQ29kZXMuZGlnaXQwICYmIG5leHRDaGFyIDw9IF9jaGFyY29kZXMuY2hhckNvZGVzLmRpZ2l0OSkge1xuICAgIHJlYWROdW1iZXIodHJ1ZSk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKG5leHRDaGFyID09PSBfY2hhcmNvZGVzLmNoYXJDb2Rlcy5kb3QgJiYgX2Jhc2UuaW5wdXQuY2hhckNvZGVBdChfYmFzZS5zdGF0ZS5wb3MgKyAyKSA9PT0gX2NoYXJjb2Rlcy5jaGFyQ29kZXMuZG90KSB7XG4gICAgX2Jhc2Uuc3RhdGUucG9zICs9IDM7XG4gICAgZmluaXNoVG9rZW4oX3R5cGVzLlRva2VuVHlwZS5lbGxpcHNpcyk7XG4gIH0gZWxzZSB7XG4gICAgKytfYmFzZS5zdGF0ZS5wb3M7XG4gICAgZmluaXNoVG9rZW4oX3R5cGVzLlRva2VuVHlwZS5kb3QpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlYWRUb2tlbl9zbGFzaCgpIHtcbiAgY29uc3QgbmV4dENoYXIgPSBfYmFzZS5pbnB1dC5jaGFyQ29kZUF0KF9iYXNlLnN0YXRlLnBvcyArIDEpO1xuICBpZiAobmV4dENoYXIgPT09IF9jaGFyY29kZXMuY2hhckNvZGVzLmVxdWFsc1RvKSB7XG4gICAgZmluaXNoT3AoX3R5cGVzLlRva2VuVHlwZS5hc3NpZ24sIDIpO1xuICB9IGVsc2Uge1xuICAgIGZpbmlzaE9wKF90eXBlcy5Ub2tlblR5cGUuc2xhc2gsIDEpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlYWRUb2tlbl9tdWx0X21vZHVsbyhjb2RlKSB7XG4gIC8vICclKidcbiAgbGV0IHRva2VuVHlwZSA9IGNvZGUgPT09IF9jaGFyY29kZXMuY2hhckNvZGVzLmFzdGVyaXNrID8gX3R5cGVzLlRva2VuVHlwZS5zdGFyIDogX3R5cGVzLlRva2VuVHlwZS5tb2R1bG87XG4gIGxldCB3aWR0aCA9IDE7XG4gIGxldCBuZXh0Q2hhciA9IF9iYXNlLmlucHV0LmNoYXJDb2RlQXQoX2Jhc2Uuc3RhdGUucG9zICsgMSk7XG5cbiAgLy8gRXhwb25lbnRpYXRpb24gb3BlcmF0b3IgKipcbiAgaWYgKGNvZGUgPT09IF9jaGFyY29kZXMuY2hhckNvZGVzLmFzdGVyaXNrICYmIG5leHRDaGFyID09PSBfY2hhcmNvZGVzLmNoYXJDb2Rlcy5hc3Rlcmlzaykge1xuICAgIHdpZHRoKys7XG4gICAgbmV4dENoYXIgPSBfYmFzZS5pbnB1dC5jaGFyQ29kZUF0KF9iYXNlLnN0YXRlLnBvcyArIDIpO1xuICAgIHRva2VuVHlwZSA9IF90eXBlcy5Ub2tlblR5cGUuZXhwb25lbnQ7XG4gIH1cblxuICAvLyBNYXRjaCAqPSBvciAlPSwgZGlzYWxsb3dpbmcgKj0+IHdoaWNoIGNhbiBiZSB2YWxpZCBpbiBmbG93LlxuICBpZiAoXG4gICAgbmV4dENoYXIgPT09IF9jaGFyY29kZXMuY2hhckNvZGVzLmVxdWFsc1RvICYmXG4gICAgX2Jhc2UuaW5wdXQuY2hhckNvZGVBdChfYmFzZS5zdGF0ZS5wb3MgKyAyKSAhPT0gX2NoYXJjb2Rlcy5jaGFyQ29kZXMuZ3JlYXRlclRoYW5cbiAgKSB7XG4gICAgd2lkdGgrKztcbiAgICB0b2tlblR5cGUgPSBfdHlwZXMuVG9rZW5UeXBlLmFzc2lnbjtcbiAgfVxuXG4gIGZpbmlzaE9wKHRva2VuVHlwZSwgd2lkdGgpO1xufVxuXG5mdW5jdGlvbiByZWFkVG9rZW5fcGlwZV9hbXAoY29kZSkge1xuICAvLyAnfCYnXG4gIGNvbnN0IG5leHRDaGFyID0gX2Jhc2UuaW5wdXQuY2hhckNvZGVBdChfYmFzZS5zdGF0ZS5wb3MgKyAxKTtcblxuICBpZiAobmV4dENoYXIgPT09IGNvZGUpIHtcbiAgICBpZiAoX2Jhc2UuaW5wdXQuY2hhckNvZGVBdChfYmFzZS5zdGF0ZS5wb3MgKyAyKSA9PT0gX2NoYXJjb2Rlcy5jaGFyQ29kZXMuZXF1YWxzVG8pIHtcbiAgICAgIC8vIHx8PSBvciAmJj1cbiAgICAgIGZpbmlzaE9wKF90eXBlcy5Ub2tlblR5cGUuYXNzaWduLCAzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gfHwgb3IgJiZcbiAgICAgIGZpbmlzaE9wKGNvZGUgPT09IF9jaGFyY29kZXMuY2hhckNvZGVzLnZlcnRpY2FsQmFyID8gX3R5cGVzLlRva2VuVHlwZS5sb2dpY2FsT1IgOiBfdHlwZXMuVG9rZW5UeXBlLmxvZ2ljYWxBTkQsIDIpO1xuICAgIH1cbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAoY29kZSA9PT0gX2NoYXJjb2Rlcy5jaGFyQ29kZXMudmVydGljYWxCYXIpIHtcbiAgICAvLyAnfD4nXG4gICAgaWYgKG5leHRDaGFyID09PSBfY2hhcmNvZGVzLmNoYXJDb2Rlcy5ncmVhdGVyVGhhbikge1xuICAgICAgZmluaXNoT3AoX3R5cGVzLlRva2VuVHlwZS5waXBlbGluZSwgMik7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIGlmIChuZXh0Q2hhciA9PT0gX2NoYXJjb2Rlcy5jaGFyQ29kZXMucmlnaHRDdXJseUJyYWNlICYmIF9iYXNlLmlzRmxvd0VuYWJsZWQpIHtcbiAgICAgIC8vICd8fSdcbiAgICAgIGZpbmlzaE9wKF90eXBlcy5Ub2tlblR5cGUuYnJhY2VCYXJSLCAyKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBpZiAobmV4dENoYXIgPT09IF9jaGFyY29kZXMuY2hhckNvZGVzLmVxdWFsc1RvKSB7XG4gICAgZmluaXNoT3AoX3R5cGVzLlRva2VuVHlwZS5hc3NpZ24sIDIpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGZpbmlzaE9wKGNvZGUgPT09IF9jaGFyY29kZXMuY2hhckNvZGVzLnZlcnRpY2FsQmFyID8gX3R5cGVzLlRva2VuVHlwZS5iaXR3aXNlT1IgOiBfdHlwZXMuVG9rZW5UeXBlLmJpdHdpc2VBTkQsIDEpO1xufVxuXG5mdW5jdGlvbiByZWFkVG9rZW5fY2FyZXQoKSB7XG4gIC8vICdeJ1xuICBjb25zdCBuZXh0Q2hhciA9IF9iYXNlLmlucHV0LmNoYXJDb2RlQXQoX2Jhc2Uuc3RhdGUucG9zICsgMSk7XG4gIGlmIChuZXh0Q2hhciA9PT0gX2NoYXJjb2Rlcy5jaGFyQ29kZXMuZXF1YWxzVG8pIHtcbiAgICBmaW5pc2hPcChfdHlwZXMuVG9rZW5UeXBlLmFzc2lnbiwgMik7XG4gIH0gZWxzZSB7XG4gICAgZmluaXNoT3AoX3R5cGVzLlRva2VuVHlwZS5iaXR3aXNlWE9SLCAxKTtcbiAgfVxufVxuXG5mdW5jdGlvbiByZWFkVG9rZW5fcGx1c19taW4oY29kZSkge1xuICAvLyAnKy0nXG4gIGNvbnN0IG5leHRDaGFyID0gX2Jhc2UuaW5wdXQuY2hhckNvZGVBdChfYmFzZS5zdGF0ZS5wb3MgKyAxKTtcblxuICBpZiAobmV4dENoYXIgPT09IGNvZGUpIHtcbiAgICAvLyBUZW50YXRpdmVseSBjYWxsIHRoaXMgYSBwcmVmaXggb3BlcmF0b3IsIGJ1dCBpdCBtaWdodCBiZSBjaGFuZ2VkIHRvIHBvc3RmaXggbGF0ZXIuXG4gICAgZmluaXNoT3AoX3R5cGVzLlRva2VuVHlwZS5wcmVJbmNEZWMsIDIpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChuZXh0Q2hhciA9PT0gX2NoYXJjb2Rlcy5jaGFyQ29kZXMuZXF1YWxzVG8pIHtcbiAgICBmaW5pc2hPcChfdHlwZXMuVG9rZW5UeXBlLmFzc2lnbiwgMik7XG4gIH0gZWxzZSBpZiAoY29kZSA9PT0gX2NoYXJjb2Rlcy5jaGFyQ29kZXMucGx1c1NpZ24pIHtcbiAgICBmaW5pc2hPcChfdHlwZXMuVG9rZW5UeXBlLnBsdXMsIDEpO1xuICB9IGVsc2Uge1xuICAgIGZpbmlzaE9wKF90eXBlcy5Ub2tlblR5cGUubWludXMsIDEpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlYWRUb2tlbl9sdCgpIHtcbiAgY29uc3QgbmV4dENoYXIgPSBfYmFzZS5pbnB1dC5jaGFyQ29kZUF0KF9iYXNlLnN0YXRlLnBvcyArIDEpO1xuXG4gIGlmIChuZXh0Q2hhciA9PT0gX2NoYXJjb2Rlcy5jaGFyQ29kZXMubGVzc1RoYW4pIHtcbiAgICBpZiAoX2Jhc2UuaW5wdXQuY2hhckNvZGVBdChfYmFzZS5zdGF0ZS5wb3MgKyAyKSA9PT0gX2NoYXJjb2Rlcy5jaGFyQ29kZXMuZXF1YWxzVG8pIHtcbiAgICAgIGZpbmlzaE9wKF90eXBlcy5Ub2tlblR5cGUuYXNzaWduLCAzKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gV2Ugc2VlIDw8LCBidXQgbmVlZCB0byBiZSByZWFsbHkgY2FyZWZ1bCBhYm91dCB3aGV0aGVyIHRvIHRyZWF0IGl0IGFzIGFcbiAgICAvLyB0cnVlIGxlZnQtc2hpZnQgb3IgYXMgdHdvIDwgdG9rZW5zLlxuICAgIGlmIChfYmFzZS5zdGF0ZS5pc1R5cGUpIHtcbiAgICAgIC8vIFdpdGhpbiBhIHR5cGUsIDw8IG1pZ2h0IGNvbWUgdXAgaW4gYSBzbmlwcGV0IGxpa2UgYEFycmF5PDxUPigpID0+IHZvaWQ+YCxcbiAgICAgIC8vIHNvIHRyZWF0IGl0IGFzIHR3byA8IHRva2Vucy4gSW1wb3J0YW50bHksIHRoaXMgc2hvdWxkIG9ubHkgb3ZlcnJpZGUgPDxcbiAgICAgIC8vIHJhdGhlciB0aGFuIG90aGVyIHRva2VucyBsaWtlIDw9IC4gSWYgd2UgdHJlYXRlZCA8PSBhcyA8IGluIGEgdHlwZVxuICAgICAgLy8gY29udGV4dCwgdGhlbiB0aGUgc25pcHBldCBgYSBhcyBUIDw9IDFgIHdvdWxkIGluY29ycmVjdGx5IHN0YXJ0IHBhcnNpbmdcbiAgICAgIC8vIGEgdHlwZSBhcmd1bWVudCBvbiBULiBXZSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IGBhIGFzIFQgPDwgMWBcbiAgICAgIC8vIGJlY2F1c2UgVHlwZVNjcmlwdCBkaXNhbGxvd3MgdGhhdCBzeW50YXguXG4gICAgICBmaW5pc2hPcChfdHlwZXMuVG9rZW5UeXBlLmxlc3NUaGFuLCAxKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gT3V0c2lkZSBhIHR5cGUsIHRoaXMgbWlnaHQgYmUgYSB0cnVlIGxlZnQtc2hpZnQgb3BlcmF0b3IsIG9yIGl0IG1pZ2h0XG4gICAgICAvLyBzdGlsbCBiZSB0d28gb3Blbi10eXBlLWFyZyB0b2tlbnMsIHN1Y2ggYXMgaW4gYGY8PFQ+KCkgPT4gdm9pZD4oKWAuIFdlXG4gICAgICAvLyBsb29rIGF0IHRoZSB0b2tlbiB3aGlsZSBjb25zaWRlcmluZyB0aGUgYGZgLCBzbyB3ZSBkb24ndCB5ZXQga25vdyB0aGF0XG4gICAgICAvLyB3ZSdyZSBpbiBhIHR5cGUgY29udGV4dC4gSW4gdGhpcyBjYXNlLCB3ZSBpbml0aWFsbHkgdG9rZW5pemUgYXMgYVxuICAgICAgLy8gbGVmdC1zaGlmdCBhbmQgY29ycmVjdCBhZnRlci10aGUtZmFjdCBhcyBuZWNlc3NhcnkgaW5cbiAgICAgIC8vIHRzUGFyc2VUeXBlQXJndW1lbnRzV2l0aFBvc3NpYmxlQml0c2hpZnQgLlxuICAgICAgZmluaXNoT3AoX3R5cGVzLlRva2VuVHlwZS5iaXRTaGlmdEwsIDIpO1xuICAgIH1cbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAobmV4dENoYXIgPT09IF9jaGFyY29kZXMuY2hhckNvZGVzLmVxdWFsc1RvKSB7XG4gICAgLy8gPD1cbiAgICBmaW5pc2hPcChfdHlwZXMuVG9rZW5UeXBlLnJlbGF0aW9uYWxPckVxdWFsLCAyKTtcbiAgfSBlbHNlIHtcbiAgICBmaW5pc2hPcChfdHlwZXMuVG9rZW5UeXBlLmxlc3NUaGFuLCAxKTtcbiAgfVxufVxuXG5mdW5jdGlvbiByZWFkVG9rZW5fZ3QoKSB7XG4gIGlmIChfYmFzZS5zdGF0ZS5pc1R5cGUpIHtcbiAgICAvLyBBdm9pZCByaWdodC1zaGlmdCBmb3IgdGhpbmdzIGxpa2UgYEFycmF5PEFycmF5PHN0cmluZz4+YCBhbmRcbiAgICAvLyBncmVhdGVyLXRoYW4tb3ItZXF1YWwgZm9yIHRoaW5ncyBsaWtlIGBjb25zdCBhOiBBcnJheTxudW1iZXI+PVtdO2AuXG4gICAgZmluaXNoT3AoX3R5cGVzLlRva2VuVHlwZS5ncmVhdGVyVGhhbiwgMSk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgbmV4dENoYXIgPSBfYmFzZS5pbnB1dC5jaGFyQ29kZUF0KF9iYXNlLnN0YXRlLnBvcyArIDEpO1xuXG4gIGlmIChuZXh0Q2hhciA9PT0gX2NoYXJjb2Rlcy5jaGFyQ29kZXMuZ3JlYXRlclRoYW4pIHtcbiAgICBjb25zdCBzaXplID0gX2Jhc2UuaW5wdXQuY2hhckNvZGVBdChfYmFzZS5zdGF0ZS5wb3MgKyAyKSA9PT0gX2NoYXJjb2Rlcy5jaGFyQ29kZXMuZ3JlYXRlclRoYW4gPyAzIDogMjtcbiAgICBpZiAoX2Jhc2UuaW5wdXQuY2hhckNvZGVBdChfYmFzZS5zdGF0ZS5wb3MgKyBzaXplKSA9PT0gX2NoYXJjb2Rlcy5jaGFyQ29kZXMuZXF1YWxzVG8pIHtcbiAgICAgIGZpbmlzaE9wKF90eXBlcy5Ub2tlblR5cGUuYXNzaWduLCBzaXplICsgMSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGZpbmlzaE9wKF90eXBlcy5Ub2tlblR5cGUuYml0U2hpZnRSLCBzaXplKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAobmV4dENoYXIgPT09IF9jaGFyY29kZXMuY2hhckNvZGVzLmVxdWFsc1RvKSB7XG4gICAgLy8gPj1cbiAgICBmaW5pc2hPcChfdHlwZXMuVG9rZW5UeXBlLnJlbGF0aW9uYWxPckVxdWFsLCAyKTtcbiAgfSBlbHNlIHtcbiAgICBmaW5pc2hPcChfdHlwZXMuVG9rZW5UeXBlLmdyZWF0ZXJUaGFuLCAxKTtcbiAgfVxufVxuXG4vKipcbiAqIFJlaW50ZXJwcmV0IGEgcG9zc2libGUgPiB0b2tlbiB3aGVuIHRyYW5zaXRpb25pbmcgZnJvbSBhIHR5cGUgdG8gYSBub24tdHlwZVxuICogY29udGV4dC5cbiAqXG4gKiBUaGlzIGNvbWVzIHVwIGluIHR3byBzaXR1YXRpb25zIHdoZXJlID49IG5lZWRzIHRvIGJlIHRyZWF0ZWQgYXMgb25lIHRva2VuOlxuICogLSBBZnRlciBhbiBgYXNgIGV4cHJlc3Npb24sIGxpa2UgaW4gdGhlIGNvZGUgYGEgYXMgVCA+PSAxYC5cbiAqIC0gSW4gYSB0eXBlIGFyZ3VtZW50IGluIGFuIGV4cHJlc3Npb24gY29udGV4dCwgZS5nLiBgZihhIDwgYiwgYyA+PSBkKWAsIHdlXG4gKiAgIG5lZWQgdG8gc2VlIHRoZSB0b2tlbiBhcyA+PSBzbyB0aGF0IHdlIGdldCBhbiBlcnJvciBhbmQgYmFja3RyYWNrIHRvXG4gKiAgIG5vcm1hbCBleHByZXNzaW9uIHBhcnNpbmcuXG4gKlxuICogT3RoZXIgc2l0dWF0aW9ucyByZXF1aXJlID49IHRvIGJlIHNlZW4gYXMgdHdvIHRva2VucywgZS5nLlxuICogYGNvbnN0IHg6IEFycmF5PFQ+PVtdO2AsIHNvIGl0J3MgaW1wb3J0YW50IHRvIHRyZWF0ID4gYXMgaXRzIG93biB0b2tlbiBpblxuICogdHlwaWNhbCB0eXBlIHBhcnNpbmcgc2l0dWF0aW9ucy5cbiAqL1xuIGZ1bmN0aW9uIHJlc2Nhbl9ndCgpIHtcbiAgaWYgKF9iYXNlLnN0YXRlLnR5cGUgPT09IF90eXBlcy5Ub2tlblR5cGUuZ3JlYXRlclRoYW4pIHtcbiAgICBfYmFzZS5zdGF0ZS5wb3MgLT0gMTtcbiAgICByZWFkVG9rZW5fZ3QoKTtcbiAgfVxufSBleHBvcnRzLnJlc2Nhbl9ndCA9IHJlc2Nhbl9ndDtcblxuZnVuY3Rpb24gcmVhZFRva2VuX2VxX2V4Y2woY29kZSkge1xuICAvLyAnPSEnXG4gIGNvbnN0IG5leHRDaGFyID0gX2Jhc2UuaW5wdXQuY2hhckNvZGVBdChfYmFzZS5zdGF0ZS5wb3MgKyAxKTtcbiAgaWYgKG5leHRDaGFyID09PSBfY2hhcmNvZGVzLmNoYXJDb2Rlcy5lcXVhbHNUbykge1xuICAgIGZpbmlzaE9wKF90eXBlcy5Ub2tlblR5cGUuZXF1YWxpdHksIF9iYXNlLmlucHV0LmNoYXJDb2RlQXQoX2Jhc2Uuc3RhdGUucG9zICsgMikgPT09IF9jaGFyY29kZXMuY2hhckNvZGVzLmVxdWFsc1RvID8gMyA6IDIpO1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAoY29kZSA9PT0gX2NoYXJjb2Rlcy5jaGFyQ29kZXMuZXF1YWxzVG8gJiYgbmV4dENoYXIgPT09IF9jaGFyY29kZXMuY2hhckNvZGVzLmdyZWF0ZXJUaGFuKSB7XG4gICAgLy8gJz0+J1xuICAgIF9iYXNlLnN0YXRlLnBvcyArPSAyO1xuICAgIGZpbmlzaFRva2VuKF90eXBlcy5Ub2tlblR5cGUuYXJyb3cpO1xuICAgIHJldHVybjtcbiAgfVxuICBmaW5pc2hPcChjb2RlID09PSBfY2hhcmNvZGVzLmNoYXJDb2Rlcy5lcXVhbHNUbyA/IF90eXBlcy5Ub2tlblR5cGUuZXEgOiBfdHlwZXMuVG9rZW5UeXBlLmJhbmcsIDEpO1xufVxuXG5mdW5jdGlvbiByZWFkVG9rZW5fcXVlc3Rpb24oKSB7XG4gIC8vICc/J1xuICBjb25zdCBuZXh0Q2hhciA9IF9iYXNlLmlucHV0LmNoYXJDb2RlQXQoX2Jhc2Uuc3RhdGUucG9zICsgMSk7XG4gIGNvbnN0IG5leHRDaGFyMiA9IF9iYXNlLmlucHV0LmNoYXJDb2RlQXQoX2Jhc2Uuc3RhdGUucG9zICsgMik7XG4gIGlmIChcbiAgICBuZXh0Q2hhciA9PT0gX2NoYXJjb2Rlcy5jaGFyQ29kZXMucXVlc3Rpb25NYXJrICYmXG4gICAgLy8gSW4gRmxvdyAoYnV0IG5vdCBUeXBlU2NyaXB0KSwgPz9zdHJpbmcgaXMgYSB2YWxpZCB0eXBlIHRoYXQgc2hvdWxkIGJlXG4gICAgLy8gdG9rZW5pemVkIGFzIHR3byBpbmRpdmlkdWFsID8gdG9rZW5zLlxuICAgICEoX2Jhc2UuaXNGbG93RW5hYmxlZCAmJiBfYmFzZS5zdGF0ZS5pc1R5cGUpXG4gICkge1xuICAgIGlmIChuZXh0Q2hhcjIgPT09IF9jaGFyY29kZXMuY2hhckNvZGVzLmVxdWFsc1RvKSB7XG4gICAgICAvLyAnPz89J1xuICAgICAgZmluaXNoT3AoX3R5cGVzLlRva2VuVHlwZS5hc3NpZ24sIDMpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyAnPz8nXG4gICAgICBmaW5pc2hPcChfdHlwZXMuVG9rZW5UeXBlLm51bGxpc2hDb2FsZXNjaW5nLCAyKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoXG4gICAgbmV4dENoYXIgPT09IF9jaGFyY29kZXMuY2hhckNvZGVzLmRvdCAmJlxuICAgICEobmV4dENoYXIyID49IF9jaGFyY29kZXMuY2hhckNvZGVzLmRpZ2l0MCAmJiBuZXh0Q2hhcjIgPD0gX2NoYXJjb2Rlcy5jaGFyQ29kZXMuZGlnaXQ5KVxuICApIHtcbiAgICAvLyAnLicgbm90IGZvbGxvd2VkIGJ5IGEgbnVtYmVyXG4gICAgX2Jhc2Uuc3RhdGUucG9zICs9IDI7XG4gICAgZmluaXNoVG9rZW4oX3R5cGVzLlRva2VuVHlwZS5xdWVzdGlvbkRvdCk7XG4gIH0gZWxzZSB7XG4gICAgKytfYmFzZS5zdGF0ZS5wb3M7XG4gICAgZmluaXNoVG9rZW4oX3R5cGVzLlRva2VuVHlwZS5xdWVzdGlvbik7XG4gIH1cbn1cblxuIGZ1bmN0aW9uIGdldFRva2VuRnJvbUNvZGUoY29kZSkge1xuICBzd2l0Y2ggKGNvZGUpIHtcbiAgICBjYXNlIF9jaGFyY29kZXMuY2hhckNvZGVzLm51bWJlclNpZ246XG4gICAgICArK19iYXNlLnN0YXRlLnBvcztcbiAgICAgIGZpbmlzaFRva2VuKF90eXBlcy5Ub2tlblR5cGUuaGFzaCk7XG4gICAgICByZXR1cm47XG5cbiAgICAvLyBUaGUgaW50ZXJwcmV0YXRpb24gb2YgYSBkb3QgZGVwZW5kcyBvbiB3aGV0aGVyIGl0IGlzIGZvbGxvd2VkXG4gICAgLy8gYnkgYSBkaWdpdCBvciBhbm90aGVyIHR3byBkb3RzLlxuXG4gICAgY2FzZSBfY2hhcmNvZGVzLmNoYXJDb2Rlcy5kb3Q6XG4gICAgICByZWFkVG9rZW5fZG90KCk7XG4gICAgICByZXR1cm47XG5cbiAgICAvLyBQdW5jdHVhdGlvbiB0b2tlbnMuXG4gICAgY2FzZSBfY2hhcmNvZGVzLmNoYXJDb2Rlcy5sZWZ0UGFyZW50aGVzaXM6XG4gICAgICArK19iYXNlLnN0YXRlLnBvcztcbiAgICAgIGZpbmlzaFRva2VuKF90eXBlcy5Ub2tlblR5cGUucGFyZW5MKTtcbiAgICAgIHJldHVybjtcbiAgICBjYXNlIF9jaGFyY29kZXMuY2hhckNvZGVzLnJpZ2h0UGFyZW50aGVzaXM6XG4gICAgICArK19iYXNlLnN0YXRlLnBvcztcbiAgICAgIGZpbmlzaFRva2VuKF90eXBlcy5Ub2tlblR5cGUucGFyZW5SKTtcbiAgICAgIHJldHVybjtcbiAgICBjYXNlIF9jaGFyY29kZXMuY2hhckNvZGVzLnNlbWljb2xvbjpcbiAgICAgICsrX2Jhc2Uuc3RhdGUucG9zO1xuICAgICAgZmluaXNoVG9rZW4oX3R5cGVzLlRva2VuVHlwZS5zZW1pKTtcbiAgICAgIHJldHVybjtcbiAgICBjYXNlIF9jaGFyY29kZXMuY2hhckNvZGVzLmNvbW1hOlxuICAgICAgKytfYmFzZS5zdGF0ZS5wb3M7XG4gICAgICBmaW5pc2hUb2tlbihfdHlwZXMuVG9rZW5UeXBlLmNvbW1hKTtcbiAgICAgIHJldHVybjtcbiAgICBjYXNlIF9jaGFyY29kZXMuY2hhckNvZGVzLmxlZnRTcXVhcmVCcmFja2V0OlxuICAgICAgKytfYmFzZS5zdGF0ZS5wb3M7XG4gICAgICBmaW5pc2hUb2tlbihfdHlwZXMuVG9rZW5UeXBlLmJyYWNrZXRMKTtcbiAgICAgIHJldHVybjtcbiAgICBjYXNlIF9jaGFyY29kZXMuY2hhckNvZGVzLnJpZ2h0U3F1YXJlQnJhY2tldDpcbiAgICAgICsrX2Jhc2Uuc3RhdGUucG9zO1xuICAgICAgZmluaXNoVG9rZW4oX3R5cGVzLlRva2VuVHlwZS5icmFja2V0Uik7XG4gICAgICByZXR1cm47XG5cbiAgICBjYXNlIF9jaGFyY29kZXMuY2hhckNvZGVzLmxlZnRDdXJseUJyYWNlOlxuICAgICAgaWYgKF9iYXNlLmlzRmxvd0VuYWJsZWQgJiYgX2Jhc2UuaW5wdXQuY2hhckNvZGVBdChfYmFzZS5zdGF0ZS5wb3MgKyAxKSA9PT0gX2NoYXJjb2Rlcy5jaGFyQ29kZXMudmVydGljYWxCYXIpIHtcbiAgICAgICAgZmluaXNoT3AoX3R5cGVzLlRva2VuVHlwZS5icmFjZUJhckwsIDIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgKytfYmFzZS5zdGF0ZS5wb3M7XG4gICAgICAgIGZpbmlzaFRva2VuKF90eXBlcy5Ub2tlblR5cGUuYnJhY2VMKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcblxuICAgIGNhc2UgX2NoYXJjb2Rlcy5jaGFyQ29kZXMucmlnaHRDdXJseUJyYWNlOlxuICAgICAgKytfYmFzZS5zdGF0ZS5wb3M7XG4gICAgICBmaW5pc2hUb2tlbihfdHlwZXMuVG9rZW5UeXBlLmJyYWNlUik7XG4gICAgICByZXR1cm47XG5cbiAgICBjYXNlIF9jaGFyY29kZXMuY2hhckNvZGVzLmNvbG9uOlxuICAgICAgaWYgKF9iYXNlLmlucHV0LmNoYXJDb2RlQXQoX2Jhc2Uuc3RhdGUucG9zICsgMSkgPT09IF9jaGFyY29kZXMuY2hhckNvZGVzLmNvbG9uKSB7XG4gICAgICAgIGZpbmlzaE9wKF90eXBlcy5Ub2tlblR5cGUuZG91YmxlQ29sb24sIDIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgKytfYmFzZS5zdGF0ZS5wb3M7XG4gICAgICAgIGZpbmlzaFRva2VuKF90eXBlcy5Ub2tlblR5cGUuY29sb24pO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuXG4gICAgY2FzZSBfY2hhcmNvZGVzLmNoYXJDb2Rlcy5xdWVzdGlvbk1hcms6XG4gICAgICByZWFkVG9rZW5fcXVlc3Rpb24oKTtcbiAgICAgIHJldHVybjtcbiAgICBjYXNlIF9jaGFyY29kZXMuY2hhckNvZGVzLmF0U2lnbjpcbiAgICAgICsrX2Jhc2Uuc3RhdGUucG9zO1xuICAgICAgZmluaXNoVG9rZW4oX3R5cGVzLlRva2VuVHlwZS5hdCk7XG4gICAgICByZXR1cm47XG5cbiAgICBjYXNlIF9jaGFyY29kZXMuY2hhckNvZGVzLmdyYXZlQWNjZW50OlxuICAgICAgKytfYmFzZS5zdGF0ZS5wb3M7XG4gICAgICBmaW5pc2hUb2tlbihfdHlwZXMuVG9rZW5UeXBlLmJhY2tRdW90ZSk7XG4gICAgICByZXR1cm47XG5cbiAgICBjYXNlIF9jaGFyY29kZXMuY2hhckNvZGVzLmRpZ2l0MDoge1xuICAgICAgY29uc3QgbmV4dENoYXIgPSBfYmFzZS5pbnB1dC5jaGFyQ29kZUF0KF9iYXNlLnN0YXRlLnBvcyArIDEpO1xuICAgICAgLy8gJzB4JywgJzBYJywgJzBvJywgJzBPJywgJzBiJywgJzBCJ1xuICAgICAgaWYgKFxuICAgICAgICBuZXh0Q2hhciA9PT0gX2NoYXJjb2Rlcy5jaGFyQ29kZXMubG93ZXJjYXNlWCB8fFxuICAgICAgICBuZXh0Q2hhciA9PT0gX2NoYXJjb2Rlcy5jaGFyQ29kZXMudXBwZXJjYXNlWCB8fFxuICAgICAgICBuZXh0Q2hhciA9PT0gX2NoYXJjb2Rlcy5jaGFyQ29kZXMubG93ZXJjYXNlTyB8fFxuICAgICAgICBuZXh0Q2hhciA9PT0gX2NoYXJjb2Rlcy5jaGFyQ29kZXMudXBwZXJjYXNlTyB8fFxuICAgICAgICBuZXh0Q2hhciA9PT0gX2NoYXJjb2Rlcy5jaGFyQ29kZXMubG93ZXJjYXNlQiB8fFxuICAgICAgICBuZXh0Q2hhciA9PT0gX2NoYXJjb2Rlcy5jaGFyQ29kZXMudXBwZXJjYXNlQlxuICAgICAgKSB7XG4gICAgICAgIHJlYWRSYWRpeE51bWJlcigpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICAgIC8vIEFueXRoaW5nIGVsc2UgYmVnaW5uaW5nIHdpdGggYSBkaWdpdCBpcyBhbiBpbnRlZ2VyLCBvY3RhbFxuICAgIC8vIG51bWJlciwgb3IgZmxvYXQuXG4gICAgY2FzZSBfY2hhcmNvZGVzLmNoYXJDb2Rlcy5kaWdpdDE6XG4gICAgY2FzZSBfY2hhcmNvZGVzLmNoYXJDb2Rlcy5kaWdpdDI6XG4gICAgY2FzZSBfY2hhcmNvZGVzLmNoYXJDb2Rlcy5kaWdpdDM6XG4gICAgY2FzZSBfY2hhcmNvZGVzLmNoYXJDb2Rlcy5kaWdpdDQ6XG4gICAgY2FzZSBfY2hhcmNvZGVzLmNoYXJDb2Rlcy5kaWdpdDU6XG4gICAgY2FzZSBfY2hhcmNvZGVzLmNoYXJDb2Rlcy5kaWdpdDY6XG4gICAgY2FzZSBfY2hhcmNvZGVzLmNoYXJDb2Rlcy5kaWdpdDc6XG4gICAgY2FzZSBfY2hhcmNvZGVzLmNoYXJDb2Rlcy5kaWdpdDg6XG4gICAgY2FzZSBfY2hhcmNvZGVzLmNoYXJDb2Rlcy5kaWdpdDk6XG4gICAgICByZWFkTnVtYmVyKGZhbHNlKTtcbiAgICAgIHJldHVybjtcblxuICAgIC8vIFF1b3RlcyBwcm9kdWNlIHN0cmluZ3MuXG4gICAgY2FzZSBfY2hhcmNvZGVzLmNoYXJDb2Rlcy5xdW90YXRpb25NYXJrOlxuICAgIGNhc2UgX2NoYXJjb2Rlcy5jaGFyQ29kZXMuYXBvc3Ryb3BoZTpcbiAgICAgIHJlYWRTdHJpbmcoY29kZSk7XG4gICAgICByZXR1cm47XG5cbiAgICAvLyBPcGVyYXRvcnMgYXJlIHBhcnNlZCBpbmxpbmUgaW4gdGlueSBzdGF0ZSBtYWNoaW5lcy4gJz0nIChjaGFyQ29kZXMuZXF1YWxzVG8pIGlzXG4gICAgLy8gb2Z0ZW4gcmVmZXJyZWQgdG8uIGBmaW5pc2hPcGAgc2ltcGx5IHNraXBzIHRoZSBhbW91bnQgb2ZcbiAgICAvLyBjaGFyYWN0ZXJzIGl0IGlzIGdpdmVuIGFzIHNlY29uZCBhcmd1bWVudCwgYW5kIHJldHVybnMgYSB0b2tlblxuICAgIC8vIG9mIHRoZSB0eXBlIGdpdmVuIGJ5IGl0cyBmaXJzdCBhcmd1bWVudC5cblxuICAgIGNhc2UgX2NoYXJjb2Rlcy5jaGFyQ29kZXMuc2xhc2g6XG4gICAgICByZWFkVG9rZW5fc2xhc2goKTtcbiAgICAgIHJldHVybjtcblxuICAgIGNhc2UgX2NoYXJjb2Rlcy5jaGFyQ29kZXMucGVyY2VudFNpZ246XG4gICAgY2FzZSBfY2hhcmNvZGVzLmNoYXJDb2Rlcy5hc3RlcmlzazpcbiAgICAgIHJlYWRUb2tlbl9tdWx0X21vZHVsbyhjb2RlKTtcbiAgICAgIHJldHVybjtcblxuICAgIGNhc2UgX2NoYXJjb2Rlcy5jaGFyQ29kZXMudmVydGljYWxCYXI6XG4gICAgY2FzZSBfY2hhcmNvZGVzLmNoYXJDb2Rlcy5hbXBlcnNhbmQ6XG4gICAgICByZWFkVG9rZW5fcGlwZV9hbXAoY29kZSk7XG4gICAgICByZXR1cm47XG5cbiAgICBjYXNlIF9jaGFyY29kZXMuY2hhckNvZGVzLmNhcmV0OlxuICAgICAgcmVhZFRva2VuX2NhcmV0KCk7XG4gICAgICByZXR1cm47XG5cbiAgICBjYXNlIF9jaGFyY29kZXMuY2hhckNvZGVzLnBsdXNTaWduOlxuICAgIGNhc2UgX2NoYXJjb2Rlcy5jaGFyQ29kZXMuZGFzaDpcbiAgICAgIHJlYWRUb2tlbl9wbHVzX21pbihjb2RlKTtcbiAgICAgIHJldHVybjtcblxuICAgIGNhc2UgX2NoYXJjb2Rlcy5jaGFyQ29kZXMubGVzc1RoYW46XG4gICAgICByZWFkVG9rZW5fbHQoKTtcbiAgICAgIHJldHVybjtcblxuICAgIGNhc2UgX2NoYXJjb2Rlcy5jaGFyQ29kZXMuZ3JlYXRlclRoYW46XG4gICAgICByZWFkVG9rZW5fZ3QoKTtcbiAgICAgIHJldHVybjtcblxuICAgIGNhc2UgX2NoYXJjb2Rlcy5jaGFyQ29kZXMuZXF1YWxzVG86XG4gICAgY2FzZSBfY2hhcmNvZGVzLmNoYXJDb2Rlcy5leGNsYW1hdGlvbk1hcms6XG4gICAgICByZWFkVG9rZW5fZXFfZXhjbChjb2RlKTtcbiAgICAgIHJldHVybjtcblxuICAgIGNhc2UgX2NoYXJjb2Rlcy5jaGFyQ29kZXMudGlsZGU6XG4gICAgICBmaW5pc2hPcChfdHlwZXMuVG9rZW5UeXBlLnRpbGRlLCAxKTtcbiAgICAgIHJldHVybjtcblxuICAgIGRlZmF1bHQ6XG4gICAgICBicmVhaztcbiAgfVxuXG4gIF91dGlsLnVuZXhwZWN0ZWQuY2FsbCh2b2lkIDAsIGBVbmV4cGVjdGVkIGNoYXJhY3RlciAnJHtTdHJpbmcuZnJvbUNoYXJDb2RlKGNvZGUpfSdgLCBfYmFzZS5zdGF0ZS5wb3MpO1xufSBleHBvcnRzLmdldFRva2VuRnJvbUNvZGUgPSBnZXRUb2tlbkZyb21Db2RlO1xuXG5mdW5jdGlvbiBmaW5pc2hPcCh0eXBlLCBzaXplKSB7XG4gIF9iYXNlLnN0YXRlLnBvcyArPSBzaXplO1xuICBmaW5pc2hUb2tlbih0eXBlKTtcbn1cblxuZnVuY3Rpb24gcmVhZFJlZ2V4cCgpIHtcbiAgY29uc3Qgc3RhcnQgPSBfYmFzZS5zdGF0ZS5wb3M7XG4gIGxldCBlc2NhcGVkID0gZmFsc2U7XG4gIGxldCBpbkNsYXNzID0gZmFsc2U7XG4gIGZvciAoOzspIHtcbiAgICBpZiAoX2Jhc2Uuc3RhdGUucG9zID49IF9iYXNlLmlucHV0Lmxlbmd0aCkge1xuICAgICAgX3V0aWwudW5leHBlY3RlZC5jYWxsKHZvaWQgMCwgXCJVbnRlcm1pbmF0ZWQgcmVndWxhciBleHByZXNzaW9uXCIsIHN0YXJ0KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgY29kZSA9IF9iYXNlLmlucHV0LmNoYXJDb2RlQXQoX2Jhc2Uuc3RhdGUucG9zKTtcbiAgICBpZiAoZXNjYXBlZCkge1xuICAgICAgZXNjYXBlZCA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoY29kZSA9PT0gX2NoYXJjb2Rlcy5jaGFyQ29kZXMubGVmdFNxdWFyZUJyYWNrZXQpIHtcbiAgICAgICAgaW5DbGFzcyA9IHRydWU7XG4gICAgICB9IGVsc2UgaWYgKGNvZGUgPT09IF9jaGFyY29kZXMuY2hhckNvZGVzLnJpZ2h0U3F1YXJlQnJhY2tldCAmJiBpbkNsYXNzKSB7XG4gICAgICAgIGluQ2xhc3MgPSBmYWxzZTtcbiAgICAgIH0gZWxzZSBpZiAoY29kZSA9PT0gX2NoYXJjb2Rlcy5jaGFyQ29kZXMuc2xhc2ggJiYgIWluQ2xhc3MpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBlc2NhcGVkID0gY29kZSA9PT0gX2NoYXJjb2Rlcy5jaGFyQ29kZXMuYmFja3NsYXNoO1xuICAgIH1cbiAgICArK19iYXNlLnN0YXRlLnBvcztcbiAgfVxuICArK19iYXNlLnN0YXRlLnBvcztcbiAgLy8gTmVlZCB0byB1c2UgYHNraXBXb3JkYCBiZWNhdXNlICdcXHVYWFhYJyBzZXF1ZW5jZXMgYXJlIGFsbG93ZWQgaGVyZSAoZG9uJ3QgYXNrKS5cbiAgc2tpcFdvcmQoKTtcblxuICBmaW5pc2hUb2tlbihfdHlwZXMuVG9rZW5UeXBlLnJlZ2V4cCk7XG59XG5cbi8qKlxuICogUmVhZCBhIGRlY2ltYWwgaW50ZWdlci4gTm90ZSB0aGF0IHRoaXMgY2FuJ3QgYmUgdW5pZmllZCB3aXRoIHRoZSBzaW1pbGFyIGNvZGVcbiAqIGluIHJlYWRSYWRpeE51bWJlciAod2hpY2ggYWxzbyBoYW5kbGVzIGhleCBkaWdpdHMpIGJlY2F1c2UgXCJlXCIgbmVlZHMgdG8gYmVcbiAqIHRoZSBlbmQgb2YgdGhlIGludGVnZXIgc28gdGhhdCB3ZSBjYW4gcHJvcGVybHkgaGFuZGxlIHNjaWVudGlmaWMgbm90YXRpb24uXG4gKi9cbmZ1bmN0aW9uIHJlYWRJbnQoKSB7XG4gIHdoaWxlICh0cnVlKSB7XG4gICAgY29uc3QgY29kZSA9IF9iYXNlLmlucHV0LmNoYXJDb2RlQXQoX2Jhc2Uuc3RhdGUucG9zKTtcbiAgICBpZiAoKGNvZGUgPj0gX2NoYXJjb2Rlcy5jaGFyQ29kZXMuZGlnaXQwICYmIGNvZGUgPD0gX2NoYXJjb2Rlcy5jaGFyQ29kZXMuZGlnaXQ5KSB8fCBjb2RlID09PSBfY2hhcmNvZGVzLmNoYXJDb2Rlcy51bmRlcnNjb3JlKSB7XG4gICAgICBfYmFzZS5zdGF0ZS5wb3MrKztcbiAgICB9IGVsc2Uge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHJlYWRSYWRpeE51bWJlcigpIHtcbiAgX2Jhc2Uuc3RhdGUucG9zICs9IDI7IC8vIDB4XG5cbiAgLy8gV2FsayB0byB0aGUgZW5kIG9mIHRoZSBudW1iZXIsIGFsbG93aW5nIGhleCBkaWdpdHMuXG4gIHdoaWxlICh0cnVlKSB7XG4gICAgY29uc3QgY29kZSA9IF9iYXNlLmlucHV0LmNoYXJDb2RlQXQoX2Jhc2Uuc3RhdGUucG9zKTtcbiAgICBpZiAoXG4gICAgICAoY29kZSA+PSBfY2hhcmNvZGVzLmNoYXJDb2Rlcy5kaWdpdDAgJiYgY29kZSA8PSBfY2hhcmNvZGVzLmNoYXJDb2Rlcy5kaWdpdDkpIHx8XG4gICAgICAoY29kZSA+PSBfY2hhcmNvZGVzLmNoYXJDb2Rlcy5sb3dlcmNhc2VBICYmIGNvZGUgPD0gX2NoYXJjb2Rlcy5jaGFyQ29kZXMubG93ZXJjYXNlRikgfHxcbiAgICAgIChjb2RlID49IF9jaGFyY29kZXMuY2hhckNvZGVzLnVwcGVyY2FzZUEgJiYgY29kZSA8PSBfY2hhcmNvZGVzLmNoYXJDb2Rlcy51cHBlcmNhc2VGKSB8fFxuICAgICAgY29kZSA9PT0gX2NoYXJjb2Rlcy5jaGFyQ29kZXMudW5kZXJzY29yZVxuICAgICkge1xuICAgICAgX2Jhc2Uuc3RhdGUucG9zKys7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IG5leHRDaGFyID0gX2Jhc2UuaW5wdXQuY2hhckNvZGVBdChfYmFzZS5zdGF0ZS5wb3MpO1xuICBpZiAobmV4dENoYXIgPT09IF9jaGFyY29kZXMuY2hhckNvZGVzLmxvd2VyY2FzZU4pIHtcbiAgICArK19iYXNlLnN0YXRlLnBvcztcbiAgICBmaW5pc2hUb2tlbihfdHlwZXMuVG9rZW5UeXBlLmJpZ2ludCk7XG4gIH0gZWxzZSB7XG4gICAgZmluaXNoVG9rZW4oX3R5cGVzLlRva2VuVHlwZS5udW0pO1xuICB9XG59XG5cbi8vIFJlYWQgYW4gaW50ZWdlciwgb2N0YWwgaW50ZWdlciwgb3IgZmxvYXRpbmctcG9pbnQgbnVtYmVyLlxuZnVuY3Rpb24gcmVhZE51bWJlcihzdGFydHNXaXRoRG90KSB7XG4gIGxldCBpc0JpZ0ludCA9IGZhbHNlO1xuICBsZXQgaXNEZWNpbWFsID0gZmFsc2U7XG5cbiAgaWYgKCFzdGFydHNXaXRoRG90KSB7XG4gICAgcmVhZEludCgpO1xuICB9XG5cbiAgbGV0IG5leHRDaGFyID0gX2Jhc2UuaW5wdXQuY2hhckNvZGVBdChfYmFzZS5zdGF0ZS5wb3MpO1xuICBpZiAobmV4dENoYXIgPT09IF9jaGFyY29kZXMuY2hhckNvZGVzLmRvdCkge1xuICAgICsrX2Jhc2Uuc3RhdGUucG9zO1xuICAgIHJlYWRJbnQoKTtcbiAgICBuZXh0Q2hhciA9IF9iYXNlLmlucHV0LmNoYXJDb2RlQXQoX2Jhc2Uuc3RhdGUucG9zKTtcbiAgfVxuXG4gIGlmIChuZXh0Q2hhciA9PT0gX2NoYXJjb2Rlcy5jaGFyQ29kZXMudXBwZXJjYXNlRSB8fCBuZXh0Q2hhciA9PT0gX2NoYXJjb2Rlcy5jaGFyQ29kZXMubG93ZXJjYXNlRSkge1xuICAgIG5leHRDaGFyID0gX2Jhc2UuaW5wdXQuY2hhckNvZGVBdCgrK19iYXNlLnN0YXRlLnBvcyk7XG4gICAgaWYgKG5leHRDaGFyID09PSBfY2hhcmNvZGVzLmNoYXJDb2Rlcy5wbHVzU2lnbiB8fCBuZXh0Q2hhciA9PT0gX2NoYXJjb2Rlcy5jaGFyQ29kZXMuZGFzaCkge1xuICAgICAgKytfYmFzZS5zdGF0ZS5wb3M7XG4gICAgfVxuICAgIHJlYWRJbnQoKTtcbiAgICBuZXh0Q2hhciA9IF9iYXNlLmlucHV0LmNoYXJDb2RlQXQoX2Jhc2Uuc3RhdGUucG9zKTtcbiAgfVxuXG4gIGlmIChuZXh0Q2hhciA9PT0gX2NoYXJjb2Rlcy5jaGFyQ29kZXMubG93ZXJjYXNlTikge1xuICAgICsrX2Jhc2Uuc3RhdGUucG9zO1xuICAgIGlzQmlnSW50ID0gdHJ1ZTtcbiAgfSBlbHNlIGlmIChuZXh0Q2hhciA9PT0gX2NoYXJjb2Rlcy5jaGFyQ29kZXMubG93ZXJjYXNlTSkge1xuICAgICsrX2Jhc2Uuc3RhdGUucG9zO1xuICAgIGlzRGVjaW1hbCA9IHRydWU7XG4gIH1cblxuICBpZiAoaXNCaWdJbnQpIHtcbiAgICBmaW5pc2hUb2tlbihfdHlwZXMuVG9rZW5UeXBlLmJpZ2ludCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKGlzRGVjaW1hbCkge1xuICAgIGZpbmlzaFRva2VuKF90eXBlcy5Ub2tlblR5cGUuZGVjaW1hbCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgZmluaXNoVG9rZW4oX3R5cGVzLlRva2VuVHlwZS5udW0pO1xufVxuXG5mdW5jdGlvbiByZWFkU3RyaW5nKHF1b3RlKSB7XG4gIF9iYXNlLnN0YXRlLnBvcysrO1xuICBmb3IgKDs7KSB7XG4gICAgaWYgKF9iYXNlLnN0YXRlLnBvcyA+PSBfYmFzZS5pbnB1dC5sZW5ndGgpIHtcbiAgICAgIF91dGlsLnVuZXhwZWN0ZWQuY2FsbCh2b2lkIDAsIFwiVW50ZXJtaW5hdGVkIHN0cmluZyBjb25zdGFudFwiKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgY2ggPSBfYmFzZS5pbnB1dC5jaGFyQ29kZUF0KF9iYXNlLnN0YXRlLnBvcyk7XG4gICAgaWYgKGNoID09PSBfY2hhcmNvZGVzLmNoYXJDb2Rlcy5iYWNrc2xhc2gpIHtcbiAgICAgIF9iYXNlLnN0YXRlLnBvcysrO1xuICAgIH0gZWxzZSBpZiAoY2ggPT09IHF1b3RlKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgX2Jhc2Uuc3RhdGUucG9zKys7XG4gIH1cbiAgX2Jhc2Uuc3RhdGUucG9zKys7XG4gIGZpbmlzaFRva2VuKF90eXBlcy5Ub2tlblR5cGUuc3RyaW5nKTtcbn1cblxuLy8gUmVhZHMgdGVtcGxhdGUgc3RyaW5nIHRva2Vucy5cbmZ1bmN0aW9uIHJlYWRUbXBsVG9rZW4oKSB7XG4gIGZvciAoOzspIHtcbiAgICBpZiAoX2Jhc2Uuc3RhdGUucG9zID49IF9iYXNlLmlucHV0Lmxlbmd0aCkge1xuICAgICAgX3V0aWwudW5leHBlY3RlZC5jYWxsKHZvaWQgMCwgXCJVbnRlcm1pbmF0ZWQgdGVtcGxhdGVcIik7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGNoID0gX2Jhc2UuaW5wdXQuY2hhckNvZGVBdChfYmFzZS5zdGF0ZS5wb3MpO1xuICAgIGlmIChcbiAgICAgIGNoID09PSBfY2hhcmNvZGVzLmNoYXJDb2Rlcy5ncmF2ZUFjY2VudCB8fFxuICAgICAgKGNoID09PSBfY2hhcmNvZGVzLmNoYXJDb2Rlcy5kb2xsYXJTaWduICYmIF9iYXNlLmlucHV0LmNoYXJDb2RlQXQoX2Jhc2Uuc3RhdGUucG9zICsgMSkgPT09IF9jaGFyY29kZXMuY2hhckNvZGVzLmxlZnRDdXJseUJyYWNlKVxuICAgICkge1xuICAgICAgaWYgKF9iYXNlLnN0YXRlLnBvcyA9PT0gX2Jhc2Uuc3RhdGUuc3RhcnQgJiYgbWF0Y2goX3R5cGVzLlRva2VuVHlwZS50ZW1wbGF0ZSkpIHtcbiAgICAgICAgaWYgKGNoID09PSBfY2hhcmNvZGVzLmNoYXJDb2Rlcy5kb2xsYXJTaWduKSB7XG4gICAgICAgICAgX2Jhc2Uuc3RhdGUucG9zICs9IDI7XG4gICAgICAgICAgZmluaXNoVG9rZW4oX3R5cGVzLlRva2VuVHlwZS5kb2xsYXJCcmFjZUwpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICArK19iYXNlLnN0YXRlLnBvcztcbiAgICAgICAgICBmaW5pc2hUb2tlbihfdHlwZXMuVG9rZW5UeXBlLmJhY2tRdW90ZSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBmaW5pc2hUb2tlbihfdHlwZXMuVG9rZW5UeXBlLnRlbXBsYXRlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGNoID09PSBfY2hhcmNvZGVzLmNoYXJDb2Rlcy5iYWNrc2xhc2gpIHtcbiAgICAgIF9iYXNlLnN0YXRlLnBvcysrO1xuICAgIH1cbiAgICBfYmFzZS5zdGF0ZS5wb3MrKztcbiAgfVxufVxuXG4vLyBTa2lwIHRvIHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgd29yZC4gTm90ZSB0aGF0IHRoaXMgaXMgdGhlIHNhbWUgYXMgdGhlIHNuaXBwZXQgYXQgdGhlIGVuZCBvZlxuLy8gcmVhZFdvcmQsIGJ1dCBjYWxsaW5nIHNraXBXb3JkIGZyb20gcmVhZFdvcmQgc2VlbXMgdG8gc2xpZ2h0bHkgaHVydCBwZXJmb3JtYW5jZSBmcm9tIHNvbWUgcm91Z2hcbi8vIG1lYXN1cmVtZW50cy5cbiBmdW5jdGlvbiBza2lwV29yZCgpIHtcbiAgd2hpbGUgKF9iYXNlLnN0YXRlLnBvcyA8IF9iYXNlLmlucHV0Lmxlbmd0aCkge1xuICAgIGNvbnN0IGNoID0gX2Jhc2UuaW5wdXQuY2hhckNvZGVBdChfYmFzZS5zdGF0ZS5wb3MpO1xuICAgIGlmIChfaWRlbnRpZmllci5JU19JREVOVElGSUVSX0NIQVJbY2hdKSB7XG4gICAgICBfYmFzZS5zdGF0ZS5wb3MrKztcbiAgICB9IGVsc2UgaWYgKGNoID09PSBfY2hhcmNvZGVzLmNoYXJDb2Rlcy5iYWNrc2xhc2gpIHtcbiAgICAgIC8vIFxcdVxuICAgICAgX2Jhc2Uuc3RhdGUucG9zICs9IDI7XG4gICAgICBpZiAoX2Jhc2UuaW5wdXQuY2hhckNvZGVBdChfYmFzZS5zdGF0ZS5wb3MpID09PSBfY2hhcmNvZGVzLmNoYXJDb2Rlcy5sZWZ0Q3VybHlCcmFjZSkge1xuICAgICAgICB3aGlsZSAoXG4gICAgICAgICAgX2Jhc2Uuc3RhdGUucG9zIDwgX2Jhc2UuaW5wdXQubGVuZ3RoICYmXG4gICAgICAgICAgX2Jhc2UuaW5wdXQuY2hhckNvZGVBdChfYmFzZS5zdGF0ZS5wb3MpICE9PSBfY2hhcmNvZGVzLmNoYXJDb2Rlcy5yaWdodEN1cmx5QnJhY2VcbiAgICAgICAgKSB7XG4gICAgICAgICAgX2Jhc2Uuc3RhdGUucG9zKys7XG4gICAgICAgIH1cbiAgICAgICAgX2Jhc2Uuc3RhdGUucG9zKys7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxufSBleHBvcnRzLnNraXBXb3JkID0gc2tpcFdvcmQ7XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7dmFsdWU6IHRydWV9KTt2YXIgX3R5cGVzID0gcmVxdWlyZSgnLi4vcGFyc2VyL3Rva2VuaXplci90eXBlcycpO1xuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG4vKipcbiAqIERldGVybWluZSBpbmZvcm1hdGlvbiBhYm91dCB0aGlzIG5hbWVkIGltcG9ydCBvciBuYW1lZCBleHBvcnQgc3BlY2lmaWVyLlxuICpcbiAqIFRoaXMgc3ludGF4IGlzIHRoZSBgYWAgZnJvbSBzdGF0ZW1lbnRzIGxpa2UgdGhlc2U6XG4gKiBpbXBvcnQge0F9IGZyb20gXCIuL2Zvb1wiO1xuICogZXhwb3J0IHtBfTtcbiAqIGV4cG9ydCB7QX0gZnJvbSBcIi4vZm9vXCI7XG4gKlxuICogQXMgaXQgdHVybnMgb3V0LCB3ZSBjYW4gZXhhY3RseSBjaGFyYWN0ZXJpemUgdGhlIHN5bnRheCBtZWFuaW5nIGJ5IHNpbXBseVxuICogY291bnRpbmcgdGhlIG51bWJlciBvZiB0b2tlbnMsIHdoaWNoIGNhbiBiZSBmcm9tIDEgdG8gNDpcbiAqIHtBfVxuICoge3R5cGUgQX1cbiAqIHtBIGFzIEJ9XG4gKiB7dHlwZSBBIGFzIEJ9XG4gKlxuICogSW4gdGhlIHR5cGUgY2FzZSwgd2UgbmV2ZXIgYWN0dWFsbHkgbmVlZCB0aGUgbmFtZXMgaW4gcHJhY3RpY2UsIHNvIGRvbid0IGdldFxuICogdGhlbS5cbiAqXG4gKiBUT0RPOiBUaGVyZSdzIHNvbWUgcmVkdW5kYW5jeSB3aXRoIHRoZSB0eXBlIGRldGVjdGlvbiBoZXJlIGFuZCB0aGUgaXNUeXBlXG4gKiBmbGFnIHRoYXQncyBhbHJlYWR5IHByZXNlbnQgb24gdG9rZW5zIGluIFRTIG1vZGUuIFRoaXMgZnVuY3Rpb24gY291bGRcbiAqIHBvdGVudGlhbGx5IGJlIHNpbXBsaWZpZWQgYW5kL29yIHB1c2hlZCB0byB0aGUgY2FsbCBzaXRlcyB0byBhdm9pZCB0aGUgb2JqZWN0XG4gKiBhbGxvY2F0aW9uLlxuICovXG4gZnVuY3Rpb24gZ2V0SW1wb3J0RXhwb3J0U3BlY2lmaWVySW5mbyhcbiAgdG9rZW5zLFxuICBpbmRleCA9IHRva2Vucy5jdXJyZW50SW5kZXgoKSxcbikge1xuICBsZXQgZW5kSW5kZXggPSBpbmRleCArIDE7XG4gIGlmIChpc1NwZWNpZmllckVuZCh0b2tlbnMsIGVuZEluZGV4KSkge1xuICAgIC8vIGltcG9ydCB7QX1cbiAgICBjb25zdCBuYW1lID0gdG9rZW5zLmlkZW50aWZpZXJOYW1lQXRJbmRleChpbmRleCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlzVHlwZTogZmFsc2UsXG4gICAgICBsZWZ0TmFtZTogbmFtZSxcbiAgICAgIHJpZ2h0TmFtZTogbmFtZSxcbiAgICAgIGVuZEluZGV4LFxuICAgIH07XG4gIH1cbiAgZW5kSW5kZXgrKztcbiAgaWYgKGlzU3BlY2lmaWVyRW5kKHRva2VucywgZW5kSW5kZXgpKSB7XG4gICAgLy8gaW1wb3J0IHt0eXBlIEF9XG4gICAgcmV0dXJuIHtcbiAgICAgIGlzVHlwZTogdHJ1ZSxcbiAgICAgIGxlZnROYW1lOiBudWxsLFxuICAgICAgcmlnaHROYW1lOiBudWxsLFxuICAgICAgZW5kSW5kZXgsXG4gICAgfTtcbiAgfVxuICBlbmRJbmRleCsrO1xuICBpZiAoaXNTcGVjaWZpZXJFbmQodG9rZW5zLCBlbmRJbmRleCkpIHtcbiAgICAvLyBpbXBvcnQge0EgYXMgQn1cbiAgICByZXR1cm4ge1xuICAgICAgaXNUeXBlOiBmYWxzZSxcbiAgICAgIGxlZnROYW1lOiB0b2tlbnMuaWRlbnRpZmllck5hbWVBdEluZGV4KGluZGV4KSxcbiAgICAgIHJpZ2h0TmFtZTogdG9rZW5zLmlkZW50aWZpZXJOYW1lQXRJbmRleChpbmRleCArIDIpLFxuICAgICAgZW5kSW5kZXgsXG4gICAgfTtcbiAgfVxuICBlbmRJbmRleCsrO1xuICBpZiAoaXNTcGVjaWZpZXJFbmQodG9rZW5zLCBlbmRJbmRleCkpIHtcbiAgICAvLyBpbXBvcnQge3R5cGUgQSBhcyBCfVxuICAgIHJldHVybiB7XG4gICAgICBpc1R5cGU6IHRydWUsXG4gICAgICBsZWZ0TmFtZTogbnVsbCxcbiAgICAgIHJpZ2h0TmFtZTogbnVsbCxcbiAgICAgIGVuZEluZGV4LFxuICAgIH07XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIGltcG9ydC9leHBvcnQgc3BlY2lmaWVyIGF0ICR7aW5kZXh9YCk7XG59IGV4cG9ydHMuZGVmYXVsdCA9IGdldEltcG9ydEV4cG9ydFNwZWNpZmllckluZm87XG5cbmZ1bmN0aW9uIGlzU3BlY2lmaWVyRW5kKHRva2VucywgaW5kZXgpIHtcbiAgY29uc3QgdG9rZW4gPSB0b2tlbnMudG9rZW5zW2luZGV4XTtcbiAgcmV0dXJuIHRva2VuLnR5cGUgPT09IF90eXBlcy5Ub2tlblR5cGUuYnJhY2VSIHx8IHRva2VuLnR5cGUgPT09IF90eXBlcy5Ub2tlblR5cGUuY29tbWE7XG59XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7dmFsdWU6IHRydWV9KTsvLyBVc2UgYSBNYXAgcmF0aGVyIHRoYW4gb2JqZWN0IHRvIGF2b2lkIHVuZXhwZWN0ZWQgX19wcm90b19fIGFjY2Vzcy5cbmV4cG9ydHMuIGRlZmF1bHQgPSBuZXcgTWFwKFtcbiAgW1wicXVvdFwiLCBcIlxcdTAwMjJcIl0sXG4gIFtcImFtcFwiLCBcIiZcIl0sXG4gIFtcImFwb3NcIiwgXCJcXHUwMDI3XCJdLFxuICBbXCJsdFwiLCBcIjxcIl0sXG4gIFtcImd0XCIsIFwiPlwiXSxcbiAgW1wibmJzcFwiLCBcIlxcdTAwQTBcIl0sXG4gIFtcImlleGNsXCIsIFwiXFx1MDBBMVwiXSxcbiAgW1wiY2VudFwiLCBcIlxcdTAwQTJcIl0sXG4gIFtcInBvdW5kXCIsIFwiXFx1MDBBM1wiXSxcbiAgW1wiY3VycmVuXCIsIFwiXFx1MDBBNFwiXSxcbiAgW1wieWVuXCIsIFwiXFx1MDBBNVwiXSxcbiAgW1wiYnJ2YmFyXCIsIFwiXFx1MDBBNlwiXSxcbiAgW1wic2VjdFwiLCBcIlxcdTAwQTdcIl0sXG4gIFtcInVtbFwiLCBcIlxcdTAwQThcIl0sXG4gIFtcImNvcHlcIiwgXCJcXHUwMEE5XCJdLFxuICBbXCJvcmRmXCIsIFwiXFx1MDBBQVwiXSxcbiAgW1wibGFxdW9cIiwgXCJcXHUwMEFCXCJdLFxuICBbXCJub3RcIiwgXCJcXHUwMEFDXCJdLFxuICBbXCJzaHlcIiwgXCJcXHUwMEFEXCJdLFxuICBbXCJyZWdcIiwgXCJcXHUwMEFFXCJdLFxuICBbXCJtYWNyXCIsIFwiXFx1MDBBRlwiXSxcbiAgW1wiZGVnXCIsIFwiXFx1MDBCMFwiXSxcbiAgW1wicGx1c21uXCIsIFwiXFx1MDBCMVwiXSxcbiAgW1wic3VwMlwiLCBcIlxcdTAwQjJcIl0sXG4gIFtcInN1cDNcIiwgXCJcXHUwMEIzXCJdLFxuICBbXCJhY3V0ZVwiLCBcIlxcdTAwQjRcIl0sXG4gIFtcIm1pY3JvXCIsIFwiXFx1MDBCNVwiXSxcbiAgW1wicGFyYVwiLCBcIlxcdTAwQjZcIl0sXG4gIFtcIm1pZGRvdFwiLCBcIlxcdTAwQjdcIl0sXG4gIFtcImNlZGlsXCIsIFwiXFx1MDBCOFwiXSxcbiAgW1wic3VwMVwiLCBcIlxcdTAwQjlcIl0sXG4gIFtcIm9yZG1cIiwgXCJcXHUwMEJBXCJdLFxuICBbXCJyYXF1b1wiLCBcIlxcdTAwQkJcIl0sXG4gIFtcImZyYWMxNFwiLCBcIlxcdTAwQkNcIl0sXG4gIFtcImZyYWMxMlwiLCBcIlxcdTAwQkRcIl0sXG4gIFtcImZyYWMzNFwiLCBcIlxcdTAwQkVcIl0sXG4gIFtcImlxdWVzdFwiLCBcIlxcdTAwQkZcIl0sXG4gIFtcIkFncmF2ZVwiLCBcIlxcdTAwQzBcIl0sXG4gIFtcIkFhY3V0ZVwiLCBcIlxcdTAwQzFcIl0sXG4gIFtcIkFjaXJjXCIsIFwiXFx1MDBDMlwiXSxcbiAgW1wiQXRpbGRlXCIsIFwiXFx1MDBDM1wiXSxcbiAgW1wiQXVtbFwiLCBcIlxcdTAwQzRcIl0sXG4gIFtcIkFyaW5nXCIsIFwiXFx1MDBDNVwiXSxcbiAgW1wiQUVsaWdcIiwgXCJcXHUwMEM2XCJdLFxuICBbXCJDY2VkaWxcIiwgXCJcXHUwMEM3XCJdLFxuICBbXCJFZ3JhdmVcIiwgXCJcXHUwMEM4XCJdLFxuICBbXCJFYWN1dGVcIiwgXCJcXHUwMEM5XCJdLFxuICBbXCJFY2lyY1wiLCBcIlxcdTAwQ0FcIl0sXG4gIFtcIkV1bWxcIiwgXCJcXHUwMENCXCJdLFxuICBbXCJJZ3JhdmVcIiwgXCJcXHUwMENDXCJdLFxuICBbXCJJYWN1dGVcIiwgXCJcXHUwMENEXCJdLFxuICBbXCJJY2lyY1wiLCBcIlxcdTAwQ0VcIl0sXG4gIFtcIkl1bWxcIiwgXCJcXHUwMENGXCJdLFxuICBbXCJFVEhcIiwgXCJcXHUwMEQwXCJdLFxuICBbXCJOdGlsZGVcIiwgXCJcXHUwMEQxXCJdLFxuICBbXCJPZ3JhdmVcIiwgXCJcXHUwMEQyXCJdLFxuICBbXCJPYWN1dGVcIiwgXCJcXHUwMEQzXCJdLFxuICBbXCJPY2lyY1wiLCBcIlxcdTAwRDRcIl0sXG4gIFtcIk90aWxkZVwiLCBcIlxcdTAwRDVcIl0sXG4gIFtcIk91bWxcIiwgXCJcXHUwMEQ2XCJdLFxuICBbXCJ0aW1lc1wiLCBcIlxcdTAwRDdcIl0sXG4gIFtcIk9zbGFzaFwiLCBcIlxcdTAwRDhcIl0sXG4gIFtcIlVncmF2ZVwiLCBcIlxcdTAwRDlcIl0sXG4gIFtcIlVhY3V0ZVwiLCBcIlxcdTAwREFcIl0sXG4gIFtcIlVjaXJjXCIsIFwiXFx1MDBEQlwiXSxcbiAgW1wiVXVtbFwiLCBcIlxcdTAwRENcIl0sXG4gIFtcIllhY3V0ZVwiLCBcIlxcdTAwRERcIl0sXG4gIFtcIlRIT1JOXCIsIFwiXFx1MDBERVwiXSxcbiAgW1wic3psaWdcIiwgXCJcXHUwMERGXCJdLFxuICBbXCJhZ3JhdmVcIiwgXCJcXHUwMEUwXCJdLFxuICBbXCJhYWN1dGVcIiwgXCJcXHUwMEUxXCJdLFxuICBbXCJhY2lyY1wiLCBcIlxcdTAwRTJcIl0sXG4gIFtcImF0aWxkZVwiLCBcIlxcdTAwRTNcIl0sXG4gIFtcImF1bWxcIiwgXCJcXHUwMEU0XCJdLFxuICBbXCJhcmluZ1wiLCBcIlxcdTAwRTVcIl0sXG4gIFtcImFlbGlnXCIsIFwiXFx1MDBFNlwiXSxcbiAgW1wiY2NlZGlsXCIsIFwiXFx1MDBFN1wiXSxcbiAgW1wiZWdyYXZlXCIsIFwiXFx1MDBFOFwiXSxcbiAgW1wiZWFjdXRlXCIsIFwiXFx1MDBFOVwiXSxcbiAgW1wiZWNpcmNcIiwgXCJcXHUwMEVBXCJdLFxuICBbXCJldW1sXCIsIFwiXFx1MDBFQlwiXSxcbiAgW1wiaWdyYXZlXCIsIFwiXFx1MDBFQ1wiXSxcbiAgW1wiaWFjdXRlXCIsIFwiXFx1MDBFRFwiXSxcbiAgW1wiaWNpcmNcIiwgXCJcXHUwMEVFXCJdLFxuICBbXCJpdW1sXCIsIFwiXFx1MDBFRlwiXSxcbiAgW1wiZXRoXCIsIFwiXFx1MDBGMFwiXSxcbiAgW1wibnRpbGRlXCIsIFwiXFx1MDBGMVwiXSxcbiAgW1wib2dyYXZlXCIsIFwiXFx1MDBGMlwiXSxcbiAgW1wib2FjdXRlXCIsIFwiXFx1MDBGM1wiXSxcbiAgW1wib2NpcmNcIiwgXCJcXHUwMEY0XCJdLFxuICBbXCJvdGlsZGVcIiwgXCJcXHUwMEY1XCJdLFxuICBbXCJvdW1sXCIsIFwiXFx1MDBGNlwiXSxcbiAgW1wiZGl2aWRlXCIsIFwiXFx1MDBGN1wiXSxcbiAgW1wib3NsYXNoXCIsIFwiXFx1MDBGOFwiXSxcbiAgW1widWdyYXZlXCIsIFwiXFx1MDBGOVwiXSxcbiAgW1widWFjdXRlXCIsIFwiXFx1MDBGQVwiXSxcbiAgW1widWNpcmNcIiwgXCJcXHUwMEZCXCJdLFxuICBbXCJ1dW1sXCIsIFwiXFx1MDBGQ1wiXSxcbiAgW1wieWFjdXRlXCIsIFwiXFx1MDBGRFwiXSxcbiAgW1widGhvcm5cIiwgXCJcXHUwMEZFXCJdLFxuICBbXCJ5dW1sXCIsIFwiXFx1MDBGRlwiXSxcbiAgW1wiT0VsaWdcIiwgXCJcXHUwMTUyXCJdLFxuICBbXCJvZWxpZ1wiLCBcIlxcdTAxNTNcIl0sXG4gIFtcIlNjYXJvblwiLCBcIlxcdTAxNjBcIl0sXG4gIFtcInNjYXJvblwiLCBcIlxcdTAxNjFcIl0sXG4gIFtcIll1bWxcIiwgXCJcXHUwMTc4XCJdLFxuICBbXCJmbm9mXCIsIFwiXFx1MDE5MlwiXSxcbiAgW1wiY2lyY1wiLCBcIlxcdTAyQzZcIl0sXG4gIFtcInRpbGRlXCIsIFwiXFx1MDJEQ1wiXSxcbiAgW1wiQWxwaGFcIiwgXCJcXHUwMzkxXCJdLFxuICBbXCJCZXRhXCIsIFwiXFx1MDM5MlwiXSxcbiAgW1wiR2FtbWFcIiwgXCJcXHUwMzkzXCJdLFxuICBbXCJEZWx0YVwiLCBcIlxcdTAzOTRcIl0sXG4gIFtcIkVwc2lsb25cIiwgXCJcXHUwMzk1XCJdLFxuICBbXCJaZXRhXCIsIFwiXFx1MDM5NlwiXSxcbiAgW1wiRXRhXCIsIFwiXFx1MDM5N1wiXSxcbiAgW1wiVGhldGFcIiwgXCJcXHUwMzk4XCJdLFxuICBbXCJJb3RhXCIsIFwiXFx1MDM5OVwiXSxcbiAgW1wiS2FwcGFcIiwgXCJcXHUwMzlBXCJdLFxuICBbXCJMYW1iZGFcIiwgXCJcXHUwMzlCXCJdLFxuICBbXCJNdVwiLCBcIlxcdTAzOUNcIl0sXG4gIFtcIk51XCIsIFwiXFx1MDM5RFwiXSxcbiAgW1wiWGlcIiwgXCJcXHUwMzlFXCJdLFxuICBbXCJPbWljcm9uXCIsIFwiXFx1MDM5RlwiXSxcbiAgW1wiUGlcIiwgXCJcXHUwM0EwXCJdLFxuICBbXCJSaG9cIiwgXCJcXHUwM0ExXCJdLFxuICBbXCJTaWdtYVwiLCBcIlxcdTAzQTNcIl0sXG4gIFtcIlRhdVwiLCBcIlxcdTAzQTRcIl0sXG4gIFtcIlVwc2lsb25cIiwgXCJcXHUwM0E1XCJdLFxuICBbXCJQaGlcIiwgXCJcXHUwM0E2XCJdLFxuICBbXCJDaGlcIiwgXCJcXHUwM0E3XCJdLFxuICBbXCJQc2lcIiwgXCJcXHUwM0E4XCJdLFxuICBbXCJPbWVnYVwiLCBcIlxcdTAzQTlcIl0sXG4gIFtcImFscGhhXCIsIFwiXFx1MDNCMVwiXSxcbiAgW1wiYmV0YVwiLCBcIlxcdTAzQjJcIl0sXG4gIFtcImdhbW1hXCIsIFwiXFx1MDNCM1wiXSxcbiAgW1wiZGVsdGFcIiwgXCJcXHUwM0I0XCJdLFxuICBbXCJlcHNpbG9uXCIsIFwiXFx1MDNCNVwiXSxcbiAgW1wiemV0YVwiLCBcIlxcdTAzQjZcIl0sXG4gIFtcImV0YVwiLCBcIlxcdTAzQjdcIl0sXG4gIFtcInRoZXRhXCIsIFwiXFx1MDNCOFwiXSxcbiAgW1wiaW90YVwiLCBcIlxcdTAzQjlcIl0sXG4gIFtcImthcHBhXCIsIFwiXFx1MDNCQVwiXSxcbiAgW1wibGFtYmRhXCIsIFwiXFx1MDNCQlwiXSxcbiAgW1wibXVcIiwgXCJcXHUwM0JDXCJdLFxuICBbXCJudVwiLCBcIlxcdTAzQkRcIl0sXG4gIFtcInhpXCIsIFwiXFx1MDNCRVwiXSxcbiAgW1wib21pY3JvblwiLCBcIlxcdTAzQkZcIl0sXG4gIFtcInBpXCIsIFwiXFx1MDNDMFwiXSxcbiAgW1wicmhvXCIsIFwiXFx1MDNDMVwiXSxcbiAgW1wic2lnbWFmXCIsIFwiXFx1MDNDMlwiXSxcbiAgW1wic2lnbWFcIiwgXCJcXHUwM0MzXCJdLFxuICBbXCJ0YXVcIiwgXCJcXHUwM0M0XCJdLFxuICBbXCJ1cHNpbG9uXCIsIFwiXFx1MDNDNVwiXSxcbiAgW1wicGhpXCIsIFwiXFx1MDNDNlwiXSxcbiAgW1wiY2hpXCIsIFwiXFx1MDNDN1wiXSxcbiAgW1wicHNpXCIsIFwiXFx1MDNDOFwiXSxcbiAgW1wib21lZ2FcIiwgXCJcXHUwM0M5XCJdLFxuICBbXCJ0aGV0YXN5bVwiLCBcIlxcdTAzRDFcIl0sXG4gIFtcInVwc2loXCIsIFwiXFx1MDNEMlwiXSxcbiAgW1wicGl2XCIsIFwiXFx1MDNENlwiXSxcbiAgW1wiZW5zcFwiLCBcIlxcdTIwMDJcIl0sXG4gIFtcImVtc3BcIiwgXCJcXHUyMDAzXCJdLFxuICBbXCJ0aGluc3BcIiwgXCJcXHUyMDA5XCJdLFxuICBbXCJ6d25qXCIsIFwiXFx1MjAwQ1wiXSxcbiAgW1wiendqXCIsIFwiXFx1MjAwRFwiXSxcbiAgW1wibHJtXCIsIFwiXFx1MjAwRVwiXSxcbiAgW1wicmxtXCIsIFwiXFx1MjAwRlwiXSxcbiAgW1wibmRhc2hcIiwgXCJcXHUyMDEzXCJdLFxuICBbXCJtZGFzaFwiLCBcIlxcdTIwMTRcIl0sXG4gIFtcImxzcXVvXCIsIFwiXFx1MjAxOFwiXSxcbiAgW1wicnNxdW9cIiwgXCJcXHUyMDE5XCJdLFxuICBbXCJzYnF1b1wiLCBcIlxcdTIwMUFcIl0sXG4gIFtcImxkcXVvXCIsIFwiXFx1MjAxQ1wiXSxcbiAgW1wicmRxdW9cIiwgXCJcXHUyMDFEXCJdLFxuICBbXCJiZHF1b1wiLCBcIlxcdTIwMUVcIl0sXG4gIFtcImRhZ2dlclwiLCBcIlxcdTIwMjBcIl0sXG4gIFtcIkRhZ2dlclwiLCBcIlxcdTIwMjFcIl0sXG4gIFtcImJ1bGxcIiwgXCJcXHUyMDIyXCJdLFxuICBbXCJoZWxsaXBcIiwgXCJcXHUyMDI2XCJdLFxuICBbXCJwZXJtaWxcIiwgXCJcXHUyMDMwXCJdLFxuICBbXCJwcmltZVwiLCBcIlxcdTIwMzJcIl0sXG4gIFtcIlByaW1lXCIsIFwiXFx1MjAzM1wiXSxcbiAgW1wibHNhcXVvXCIsIFwiXFx1MjAzOVwiXSxcbiAgW1wicnNhcXVvXCIsIFwiXFx1MjAzQVwiXSxcbiAgW1wib2xpbmVcIiwgXCJcXHUyMDNFXCJdLFxuICBbXCJmcmFzbFwiLCBcIlxcdTIwNDRcIl0sXG4gIFtcImV1cm9cIiwgXCJcXHUyMEFDXCJdLFxuICBbXCJpbWFnZVwiLCBcIlxcdTIxMTFcIl0sXG4gIFtcIndlaWVycFwiLCBcIlxcdTIxMThcIl0sXG4gIFtcInJlYWxcIiwgXCJcXHUyMTFDXCJdLFxuICBbXCJ0cmFkZVwiLCBcIlxcdTIxMjJcIl0sXG4gIFtcImFsZWZzeW1cIiwgXCJcXHUyMTM1XCJdLFxuICBbXCJsYXJyXCIsIFwiXFx1MjE5MFwiXSxcbiAgW1widWFyclwiLCBcIlxcdTIxOTFcIl0sXG4gIFtcInJhcnJcIiwgXCJcXHUyMTkyXCJdLFxuICBbXCJkYXJyXCIsIFwiXFx1MjE5M1wiXSxcbiAgW1wiaGFyclwiLCBcIlxcdTIxOTRcIl0sXG4gIFtcImNyYXJyXCIsIFwiXFx1MjFCNVwiXSxcbiAgW1wibEFyclwiLCBcIlxcdTIxRDBcIl0sXG4gIFtcInVBcnJcIiwgXCJcXHUyMUQxXCJdLFxuICBbXCJyQXJyXCIsIFwiXFx1MjFEMlwiXSxcbiAgW1wiZEFyclwiLCBcIlxcdTIxRDNcIl0sXG4gIFtcImhBcnJcIiwgXCJcXHUyMUQ0XCJdLFxuICBbXCJmb3JhbGxcIiwgXCJcXHUyMjAwXCJdLFxuICBbXCJwYXJ0XCIsIFwiXFx1MjIwMlwiXSxcbiAgW1wiZXhpc3RcIiwgXCJcXHUyMjAzXCJdLFxuICBbXCJlbXB0eVwiLCBcIlxcdTIyMDVcIl0sXG4gIFtcIm5hYmxhXCIsIFwiXFx1MjIwN1wiXSxcbiAgW1wiaXNpblwiLCBcIlxcdTIyMDhcIl0sXG4gIFtcIm5vdGluXCIsIFwiXFx1MjIwOVwiXSxcbiAgW1wibmlcIiwgXCJcXHUyMjBCXCJdLFxuICBbXCJwcm9kXCIsIFwiXFx1MjIwRlwiXSxcbiAgW1wic3VtXCIsIFwiXFx1MjIxMVwiXSxcbiAgW1wibWludXNcIiwgXCJcXHUyMjEyXCJdLFxuICBbXCJsb3dhc3RcIiwgXCJcXHUyMjE3XCJdLFxuICBbXCJyYWRpY1wiLCBcIlxcdTIyMUFcIl0sXG4gIFtcInByb3BcIiwgXCJcXHUyMjFEXCJdLFxuICBbXCJpbmZpblwiLCBcIlxcdTIyMUVcIl0sXG4gIFtcImFuZ1wiLCBcIlxcdTIyMjBcIl0sXG4gIFtcImFuZFwiLCBcIlxcdTIyMjdcIl0sXG4gIFtcIm9yXCIsIFwiXFx1MjIyOFwiXSxcbiAgW1wiY2FwXCIsIFwiXFx1MjIyOVwiXSxcbiAgW1wiY3VwXCIsIFwiXFx1MjIyQVwiXSxcbiAgW1wiaW50XCIsIFwiXFx1MjIyQlwiXSxcbiAgW1widGhlcmU0XCIsIFwiXFx1MjIzNFwiXSxcbiAgW1wic2ltXCIsIFwiXFx1MjIzQ1wiXSxcbiAgW1wiY29uZ1wiLCBcIlxcdTIyNDVcIl0sXG4gIFtcImFzeW1wXCIsIFwiXFx1MjI0OFwiXSxcbiAgW1wibmVcIiwgXCJcXHUyMjYwXCJdLFxuICBbXCJlcXVpdlwiLCBcIlxcdTIyNjFcIl0sXG4gIFtcImxlXCIsIFwiXFx1MjI2NFwiXSxcbiAgW1wiZ2VcIiwgXCJcXHUyMjY1XCJdLFxuICBbXCJzdWJcIiwgXCJcXHUyMjgyXCJdLFxuICBbXCJzdXBcIiwgXCJcXHUyMjgzXCJdLFxuICBbXCJuc3ViXCIsIFwiXFx1MjI4NFwiXSxcbiAgW1wic3ViZVwiLCBcIlxcdTIyODZcIl0sXG4gIFtcInN1cGVcIiwgXCJcXHUyMjg3XCJdLFxuICBbXCJvcGx1c1wiLCBcIlxcdTIyOTVcIl0sXG4gIFtcIm90aW1lc1wiLCBcIlxcdTIyOTdcIl0sXG4gIFtcInBlcnBcIiwgXCJcXHUyMkE1XCJdLFxuICBbXCJzZG90XCIsIFwiXFx1MjJDNVwiXSxcbiAgW1wibGNlaWxcIiwgXCJcXHUyMzA4XCJdLFxuICBbXCJyY2VpbFwiLCBcIlxcdTIzMDlcIl0sXG4gIFtcImxmbG9vclwiLCBcIlxcdTIzMEFcIl0sXG4gIFtcInJmbG9vclwiLCBcIlxcdTIzMEJcIl0sXG4gIFtcImxhbmdcIiwgXCJcXHUyMzI5XCJdLFxuICBbXCJyYW5nXCIsIFwiXFx1MjMyQVwiXSxcbiAgW1wibG96XCIsIFwiXFx1MjVDQVwiXSxcbiAgW1wic3BhZGVzXCIsIFwiXFx1MjY2MFwiXSxcbiAgW1wiY2x1YnNcIiwgXCJcXHUyNjYzXCJdLFxuICBbXCJoZWFydHNcIiwgXCJcXHUyNjY1XCJdLFxuICBbXCJkaWFtc1wiLCBcIlxcdTI2NjZcIl0sXG5dKTtcbiIsICJcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHt2YWx1ZTogdHJ1ZX0pO1xuXG5cblxuXG5cblxuXG5cbiBmdW5jdGlvbiBnZXRKU1hQcmFnbWFJbmZvKG9wdGlvbnMpIHtcbiAgY29uc3QgW2Jhc2UsIHN1ZmZpeF0gPSBzcGxpdFByYWdtYShvcHRpb25zLmpzeFByYWdtYSB8fCBcIlJlYWN0LmNyZWF0ZUVsZW1lbnRcIik7XG4gIGNvbnN0IFtmcmFnbWVudEJhc2UsIGZyYWdtZW50U3VmZml4XSA9IHNwbGl0UHJhZ21hKG9wdGlvbnMuanN4RnJhZ21lbnRQcmFnbWEgfHwgXCJSZWFjdC5GcmFnbWVudFwiKTtcbiAgcmV0dXJuIHtiYXNlLCBzdWZmaXgsIGZyYWdtZW50QmFzZSwgZnJhZ21lbnRTdWZmaXh9O1xufSBleHBvcnRzLmRlZmF1bHQgPSBnZXRKU1hQcmFnbWFJbmZvO1xuXG5mdW5jdGlvbiBzcGxpdFByYWdtYShwcmFnbWEpIHtcbiAgbGV0IGRvdEluZGV4ID0gcHJhZ21hLmluZGV4T2YoXCIuXCIpO1xuICBpZiAoZG90SW5kZXggPT09IC0xKSB7XG4gICAgZG90SW5kZXggPSBwcmFnbWEubGVuZ3RoO1xuICB9XG4gIHJldHVybiBbcHJhZ21hLnNsaWNlKDAsIGRvdEluZGV4KSwgcHJhZ21hLnNsaWNlKGRvdEluZGV4KV07XG59XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7dmFsdWU6IHRydWV9KTsgY2xhc3MgVHJhbnNmb3JtZXIge1xuICAvLyBSZXR1cm4gdHJ1ZSBpZiBhbnl0aGluZyB3YXMgcHJvY2Vzc2VkLCBmYWxzZSBvdGhlcndpc2UuXG4gIFxuXG4gIGdldFByZWZpeENvZGUoKSB7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICBnZXRIb2lzdGVkQ29kZSgpIHtcbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuXG4gIGdldFN1ZmZpeENvZGUoKSB7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cbn0gZXhwb3J0cy5kZWZhdWx0ID0gVHJhbnNmb3JtZXI7XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7dmFsdWU6IHRydWV9KTsgZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuXG52YXIgX3hodG1sID0gcmVxdWlyZSgnLi4vcGFyc2VyL3BsdWdpbnMvanN4L3hodG1sJyk7IHZhciBfeGh0bWwyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfeGh0bWwpO1xudmFyIF90b2tlbml6ZXIgPSByZXF1aXJlKCcuLi9wYXJzZXIvdG9rZW5pemVyJyk7XG52YXIgX3R5cGVzID0gcmVxdWlyZSgnLi4vcGFyc2VyL3Rva2VuaXplci90eXBlcycpO1xudmFyIF9jaGFyY29kZXMgPSByZXF1aXJlKCcuLi9wYXJzZXIvdXRpbC9jaGFyY29kZXMnKTtcblxudmFyIF9nZXRKU1hQcmFnbWFJbmZvID0gcmVxdWlyZSgnLi4vdXRpbC9nZXRKU1hQcmFnbWFJbmZvJyk7IHZhciBfZ2V0SlNYUHJhZ21hSW5mbzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9nZXRKU1hQcmFnbWFJbmZvKTtcblxudmFyIF9UcmFuc2Zvcm1lciA9IHJlcXVpcmUoJy4vVHJhbnNmb3JtZXInKTsgdmFyIF9UcmFuc2Zvcm1lcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9UcmFuc2Zvcm1lcik7XG5cbiBjbGFzcyBKU1hUcmFuc2Zvcm1lciBleHRlbmRzIF9UcmFuc2Zvcm1lcjIuZGVmYXVsdCB7XG4gIFxuICBcbiAgXG5cbiAgLy8gU3RhdGUgZm9yIGNhbGN1bGF0aW5nIHRoZSBsaW5lIG51bWJlciBvZiBlYWNoIEpTWCB0YWcgaW4gZGV2ZWxvcG1lbnQuXG4gIF9faW5pdCgpIHt0aGlzLmxhc3RMaW5lTnVtYmVyID0gMX1cbiAgX19pbml0MigpIHt0aGlzLmxhc3RJbmRleCA9IDB9XG5cbiAgLy8gSW4gZGV2ZWxvcG1lbnQsIHZhcmlhYmxlIG5hbWUgaG9sZGluZyB0aGUgbmFtZSBvZiB0aGUgY3VycmVudCBmaWxlLlxuICBfX2luaXQzKCkge3RoaXMuZmlsZW5hbWVWYXJOYW1lID0gbnVsbH1cbiAgLy8gTWFwcGluZyBvZiBjbGFpbWVkIG5hbWVzIGZvciBpbXBvcnRzIGluIHRoZSBhdXRvbWF0aWMgdHJhbnNmb3JtLCBlLGcuXG4gIC8vIHtqc3g6IFwiX2pzeFwifS4gVGhpcyBkZXRlcm1pbmVzIHdoaWNoIGltcG9ydHMgdG8gZ2VuZXJhdGUgaW4gdGhlIHByZWZpeC5cbiAgX19pbml0NCgpIHt0aGlzLmVzbUF1dG9tYXRpY0ltcG9ydE5hbWVSZXNvbHV0aW9ucyA9IHt9fVxuICAvLyBXaGVuIGF1dG9tYXRpY2FsbHkgYWRkaW5nIGltcG9ydHMgaW4gQ0pTIG1vZGUsIHdlIHN0b3JlIHRoZSB2YXJpYWJsZSBuYW1lXG4gIC8vIGhvbGRpbmcgdGhlIGltcG9ydGVkIENKUyBtb2R1bGUgc28gd2UgY2FuIHJlcXVpcmUgaXQgaW4gdGhlIHByZWZpeC5cbiAgX19pbml0NSgpIHt0aGlzLmNqc0F1dG9tYXRpY01vZHVsZU5hbWVSZXNvbHV0aW9ucyA9IHt9fVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgICByb290VHJhbnNmb3JtZXIsXG4gICAgIHRva2VucyxcbiAgICAgaW1wb3J0UHJvY2Vzc29yLFxuICAgICBuYW1lTWFuYWdlcixcbiAgICAgb3B0aW9ucyxcbiAgKSB7XG4gICAgc3VwZXIoKTt0aGlzLnJvb3RUcmFuc2Zvcm1lciA9IHJvb3RUcmFuc2Zvcm1lcjt0aGlzLnRva2VucyA9IHRva2Vuczt0aGlzLmltcG9ydFByb2Nlc3NvciA9IGltcG9ydFByb2Nlc3Nvcjt0aGlzLm5hbWVNYW5hZ2VyID0gbmFtZU1hbmFnZXI7dGhpcy5vcHRpb25zID0gb3B0aW9ucztKU1hUcmFuc2Zvcm1lci5wcm90b3R5cGUuX19pbml0LmNhbGwodGhpcyk7SlNYVHJhbnNmb3JtZXIucHJvdG90eXBlLl9faW5pdDIuY2FsbCh0aGlzKTtKU1hUcmFuc2Zvcm1lci5wcm90b3R5cGUuX19pbml0My5jYWxsKHRoaXMpO0pTWFRyYW5zZm9ybWVyLnByb3RvdHlwZS5fX2luaXQ0LmNhbGwodGhpcyk7SlNYVHJhbnNmb3JtZXIucHJvdG90eXBlLl9faW5pdDUuY2FsbCh0aGlzKTs7XG4gICAgdGhpcy5qc3hQcmFnbWFJbmZvID0gX2dldEpTWFByYWdtYUluZm8yLmRlZmF1bHQuY2FsbCh2b2lkIDAsIG9wdGlvbnMpO1xuICAgIHRoaXMuaXNBdXRvbWF0aWNSdW50aW1lID0gb3B0aW9ucy5qc3hSdW50aW1lID09PSBcImF1dG9tYXRpY1wiO1xuICAgIHRoaXMuanN4SW1wb3J0U291cmNlID0gb3B0aW9ucy5qc3hJbXBvcnRTb3VyY2UgfHwgXCJyZWFjdFwiO1xuICB9XG5cbiAgcHJvY2VzcygpIHtcbiAgICBpZiAodGhpcy50b2tlbnMubWF0Y2hlczEoX3R5cGVzLlRva2VuVHlwZS5qc3hUYWdTdGFydCkpIHtcbiAgICAgIHRoaXMucHJvY2Vzc0pTWFRhZygpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGdldFByZWZpeENvZGUoKSB7XG4gICAgbGV0IHByZWZpeCA9IFwiXCI7XG4gICAgaWYgKHRoaXMuZmlsZW5hbWVWYXJOYW1lKSB7XG4gICAgICBwcmVmaXggKz0gYGNvbnN0ICR7dGhpcy5maWxlbmFtZVZhck5hbWV9ID0gJHtKU09OLnN0cmluZ2lmeSh0aGlzLm9wdGlvbnMuZmlsZVBhdGggfHwgXCJcIil9O2A7XG4gICAgfVxuICAgIGlmICh0aGlzLmlzQXV0b21hdGljUnVudGltZSkge1xuICAgICAgaWYgKHRoaXMuaW1wb3J0UHJvY2Vzc29yKSB7XG4gICAgICAgIC8vIENKUyBtb2RlOiBlbWl0IHJlcXVpcmUgc3RhdGVtZW50cyBmb3IgYWxsIG1vZHVsZXMgdGhhdCB3ZXJlIHJlZmVyZW5jZWQuXG4gICAgICAgIGZvciAoY29uc3QgW3BhdGgsIHJlc29sdmVkTmFtZV0gb2YgT2JqZWN0LmVudHJpZXModGhpcy5janNBdXRvbWF0aWNNb2R1bGVOYW1lUmVzb2x1dGlvbnMpKSB7XG4gICAgICAgICAgcHJlZml4ICs9IGB2YXIgJHtyZXNvbHZlZE5hbWV9ID0gcmVxdWlyZShcIiR7cGF0aH1cIik7YDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gRVNNIG1vZGU6IGNvbnNvbGlkYXRlIGFuZCBlbWl0IGltcG9ydCBzdGF0ZW1lbnRzIGZvciByZWZlcmVuY2VkIG5hbWVzLlxuICAgICAgICBjb25zdCB7Y3JlYXRlRWxlbWVudDogY3JlYXRlRWxlbWVudFJlc29sdXRpb24sIC4uLm90aGVyUmVzb2x1dGlvbnN9ID1cbiAgICAgICAgICB0aGlzLmVzbUF1dG9tYXRpY0ltcG9ydE5hbWVSZXNvbHV0aW9ucztcbiAgICAgICAgaWYgKGNyZWF0ZUVsZW1lbnRSZXNvbHV0aW9uKSB7XG4gICAgICAgICAgcHJlZml4ICs9IGBpbXBvcnQge2NyZWF0ZUVsZW1lbnQgYXMgJHtjcmVhdGVFbGVtZW50UmVzb2x1dGlvbn19IGZyb20gXCIke3RoaXMuanN4SW1wb3J0U291cmNlfVwiO2A7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaW1wb3J0U3BlY2lmaWVycyA9IE9iamVjdC5lbnRyaWVzKG90aGVyUmVzb2x1dGlvbnMpXG4gICAgICAgICAgLm1hcCgoW25hbWUsIHJlc29sdmVkTmFtZV0pID0+IGAke25hbWV9IGFzICR7cmVzb2x2ZWROYW1lfWApXG4gICAgICAgICAgLmpvaW4oXCIsIFwiKTtcbiAgICAgICAgaWYgKGltcG9ydFNwZWNpZmllcnMpIHtcbiAgICAgICAgICBjb25zdCBpbXBvcnRQYXRoID1cbiAgICAgICAgICAgIHRoaXMuanN4SW1wb3J0U291cmNlICsgKHRoaXMub3B0aW9ucy5wcm9kdWN0aW9uID8gXCIvanN4LXJ1bnRpbWVcIiA6IFwiL2pzeC1kZXYtcnVudGltZVwiKTtcbiAgICAgICAgICBwcmVmaXggKz0gYGltcG9ydCB7JHtpbXBvcnRTcGVjaWZpZXJzfX0gZnJvbSBcIiR7aW1wb3J0UGF0aH1cIjtgO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBwcmVmaXg7XG4gIH1cblxuICBwcm9jZXNzSlNYVGFnKCkge1xuICAgIGNvbnN0IHtqc3hSb2xlLCBzdGFydH0gPSB0aGlzLnRva2Vucy5jdXJyZW50VG9rZW4oKTtcbiAgICAvLyBDYWxjdWxhdGUgbGluZSBudW1iZXIgaW5mb3JtYXRpb24gYXQgdGhlIHZlcnkgc3RhcnQgKGlmIGluIGRldmVsb3BtZW50XG4gICAgLy8gbW9kZSkgc28gdGhhdCB0aGUgaW5mb3JtYXRpb24gaXMgZ3VhcmFudGVlZCB0byBiZSBxdWVyaWVkIGluIHRva2VuIG9yZGVyLlxuICAgIGNvbnN0IGVsZW1lbnRMb2NhdGlvbkNvZGUgPSB0aGlzLm9wdGlvbnMucHJvZHVjdGlvbiA/IG51bGwgOiB0aGlzLmdldEVsZW1lbnRMb2NhdGlvbkNvZGUoc3RhcnQpO1xuICAgIGlmICh0aGlzLmlzQXV0b21hdGljUnVudGltZSAmJiBqc3hSb2xlICE9PSBfdG9rZW5pemVyLkpTWFJvbGUuS2V5QWZ0ZXJQcm9wU3ByZWFkKSB7XG4gICAgICB0aGlzLnRyYW5zZm9ybVRhZ1RvSlNYRnVuYyhlbGVtZW50TG9jYXRpb25Db2RlLCBqc3hSb2xlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50cmFuc2Zvcm1UYWdUb0NyZWF0ZUVsZW1lbnQoZWxlbWVudExvY2F0aW9uQ29kZSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0RWxlbWVudExvY2F0aW9uQ29kZShmaXJzdFRva2VuU3RhcnQpIHtcbiAgICBjb25zdCBsaW5lTnVtYmVyID0gdGhpcy5nZXRMaW5lTnVtYmVyRm9ySW5kZXgoZmlyc3RUb2tlblN0YXJ0KTtcbiAgICByZXR1cm4gYGxpbmVOdW1iZXI6ICR7bGluZU51bWJlcn1gO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgbGluZSBudW1iZXIgZm9yIHRoaXMgc291cmNlIHBvc2l0aW9uLiBUaGlzIGlzIGNhbGN1bGF0ZWQgbGF6aWx5IGFuZFxuICAgKiBtdXN0IGJlIGNhbGxlZCBpbiBpbmNyZWFzaW5nIG9yZGVyIGJ5IGluZGV4LlxuICAgKi9cbiAgZ2V0TGluZU51bWJlckZvckluZGV4KGluZGV4KSB7XG4gICAgY29uc3QgY29kZSA9IHRoaXMudG9rZW5zLmNvZGU7XG4gICAgd2hpbGUgKHRoaXMubGFzdEluZGV4IDwgaW5kZXggJiYgdGhpcy5sYXN0SW5kZXggPCBjb2RlLmxlbmd0aCkge1xuICAgICAgaWYgKGNvZGVbdGhpcy5sYXN0SW5kZXhdID09PSBcIlxcblwiKSB7XG4gICAgICAgIHRoaXMubGFzdExpbmVOdW1iZXIrKztcbiAgICAgIH1cbiAgICAgIHRoaXMubGFzdEluZGV4Kys7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmxhc3RMaW5lTnVtYmVyO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgdGhlIGN1cnJlbnQgSlNYIGVsZW1lbnQgdG8gYSBjYWxsIHRvIGpzeCwganN4cywgb3IganN4REVWLiBUaGlzIGlzXG4gICAqIHRoZSBwcmltYXJ5IHRyYW5zZm9ybWF0aW9uIGZvciB0aGUgYXV0b21hdGljIHRyYW5zZm9ybS5cbiAgICpcbiAgICogRXhhbXBsZTpcbiAgICogPGRpdiBhPXsxfSBrZXk9ezJ9PkhlbGxve3h9PC9kaXY+XG4gICAqIGJlY29tZXNcbiAgICoganN4cygnZGl2Jywge2E6IDEsIGNoaWxkcmVuOiBbXCJIZWxsb1wiLCB4XX0sIDIpXG4gICAqL1xuICB0cmFuc2Zvcm1UYWdUb0pTWEZ1bmMoZWxlbWVudExvY2F0aW9uQ29kZSwganN4Um9sZSkge1xuICAgIGNvbnN0IGlzU3RhdGljID0ganN4Um9sZSA9PT0gX3Rva2VuaXplci5KU1hSb2xlLlN0YXRpY0NoaWxkcmVuO1xuICAgIC8vIEZpcnN0IHRhZyBpcyBhbHdheXMganN4VGFnU3RhcnQuXG4gICAgdGhpcy50b2tlbnMucmVwbGFjZVRva2VuKHRoaXMuZ2V0SlNYRnVuY0ludm9jYXRpb25Db2RlKGlzU3RhdGljKSk7XG5cbiAgICBsZXQga2V5Q29kZSA9IG51bGw7XG4gICAgaWYgKHRoaXMudG9rZW5zLm1hdGNoZXMxKF90eXBlcy5Ub2tlblR5cGUuanN4VGFnRW5kKSkge1xuICAgICAgLy8gRnJhZ21lbnQgc3ludGF4LlxuICAgICAgdGhpcy50b2tlbnMucmVwbGFjZVRva2VuKGAke3RoaXMuZ2V0RnJhZ21lbnRDb2RlKCl9LCB7YCk7XG4gICAgICB0aGlzLnByb2Nlc3NBdXRvbWF0aWNDaGlsZHJlbkFuZEVuZFByb3BzKGpzeFJvbGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBOb3JtYWwgb3BlbiB0YWcgb3Igc2VsZi1jbG9zaW5nIHRhZy5cbiAgICAgIHRoaXMucHJvY2Vzc1RhZ0ludHJvKCk7XG4gICAgICB0aGlzLnRva2Vucy5hcHBlbmRDb2RlKFwiLCB7XCIpO1xuICAgICAga2V5Q29kZSA9IHRoaXMucHJvY2Vzc1Byb3BzKHRydWUpO1xuXG4gICAgICBpZiAodGhpcy50b2tlbnMubWF0Y2hlczIoX3R5cGVzLlRva2VuVHlwZS5zbGFzaCwgX3R5cGVzLlRva2VuVHlwZS5qc3hUYWdFbmQpKSB7XG4gICAgICAgIC8vIFNlbGYtY2xvc2luZyB0YWcsIG5vIGNoaWxkcmVuIHRvIGFkZCwgc28gY2xvc2UgdGhlIHByb3BzLlxuICAgICAgICB0aGlzLnRva2Vucy5hcHBlbmRDb2RlKFwifVwiKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy50b2tlbnMubWF0Y2hlczEoX3R5cGVzLlRva2VuVHlwZS5qc3hUYWdFbmQpKSB7XG4gICAgICAgIC8vIFRhZyB3aXRoIGNoaWxkcmVuLlxuICAgICAgICB0aGlzLnRva2Vucy5yZW1vdmVUb2tlbigpO1xuICAgICAgICB0aGlzLnByb2Nlc3NBdXRvbWF0aWNDaGlsZHJlbkFuZEVuZFByb3BzKGpzeFJvbGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRXhwZWN0ZWQgZWl0aGVyIC8+IG9yID4gYXQgdGhlIGVuZCBvZiB0aGUgdGFnLlwiKTtcbiAgICAgIH1cbiAgICAgIC8vIElmIGEga2V5IHdhcyBwcmVzZW50LCBtb3ZlIGl0IHRvIGl0cyBvd24gYXJnLiBOb3RlIHRoYXQgbW92aW5nIGNvZGVcbiAgICAgIC8vIGxpa2UgdGhpcyB3aWxsIGNhdXNlIGxpbmUgbnVtYmVycyB0byBnZXQgb3V0IG9mIHN5bmMgd2l0aGluIHRoZSBKU1hcbiAgICAgIC8vIGVsZW1lbnQgaWYgdGhlIGtleSBleHByZXNzaW9uIGhhcyBhIG5ld2xpbmUgaW4gaXQuIFRoaXMgaXMgdW5mb3J0dW5hdGUsXG4gICAgICAvLyBidXQgaG9wZWZ1bGx5IHNob3VsZCBiZSByYXJlLlxuICAgICAgaWYgKGtleUNvZGUpIHtcbiAgICAgICAgdGhpcy50b2tlbnMuYXBwZW5kQ29kZShgLCAke2tleUNvZGV9YCk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICghdGhpcy5vcHRpb25zLnByb2R1Y3Rpb24pIHtcbiAgICAgIC8vIElmIHRoZSBrZXkgd2Fzbid0IGFscmVhZHkgYWRkZWQsIGFkZCBpdCBub3cgc28gd2UgY2FuIGNvcnJlY3RseSBzZXRcbiAgICAgIC8vIHBvc2l0aW9uYWwgYXJncyBmb3IganN4REVWLlxuICAgICAgaWYgKGtleUNvZGUgPT09IG51bGwpIHtcbiAgICAgICAgdGhpcy50b2tlbnMuYXBwZW5kQ29kZShcIiwgdm9pZCAwXCIpO1xuICAgICAgfVxuICAgICAgdGhpcy50b2tlbnMuYXBwZW5kQ29kZShgLCAke2lzU3RhdGljfSwgJHt0aGlzLmdldERldlNvdXJjZShlbGVtZW50TG9jYXRpb25Db2RlKX0sIHRoaXNgKTtcbiAgICB9XG4gICAgLy8gV2UncmUgYXQgdGhlIGNsb3NlLXRhZyBvciB0aGUgZW5kIG9mIGEgc2VsZi1jbG9zaW5nIHRhZywgc28gcmVtb3ZlXG4gICAgLy8gZXZlcnl0aGluZyBlbHNlIGFuZCBjbG9zZSB0aGUgZnVuY3Rpb24gY2FsbC5cbiAgICB0aGlzLnRva2Vucy5yZW1vdmVJbml0aWFsVG9rZW4oKTtcbiAgICB3aGlsZSAoIXRoaXMudG9rZW5zLm1hdGNoZXMxKF90eXBlcy5Ub2tlblR5cGUuanN4VGFnRW5kKSkge1xuICAgICAgdGhpcy50b2tlbnMucmVtb3ZlVG9rZW4oKTtcbiAgICB9XG4gICAgdGhpcy50b2tlbnMucmVwbGFjZVRva2VuKFwiKVwiKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IHRoZSBjdXJyZW50IEpTWCBlbGVtZW50IHRvIGEgY3JlYXRlRWxlbWVudCBjYWxsLiBJbiB0aGUgY2xhc3NpY1xuICAgKiBydW50aW1lLCB0aGlzIGlzIHRoZSBvbmx5IGNhc2UuIEluIHRoZSBhdXRvbWF0aWMgcnVudGltZSwgdGhpcyBpcyBjYWxsZWRcbiAgICogYXMgYSBmYWxsYmFjayBpbiBzb21lIHNpdHVhdGlvbnMuXG4gICAqXG4gICAqIEV4YW1wbGU6XG4gICAqIDxkaXYgYT17MX0ga2V5PXsyfT5IZWxsb3t4fTwvZGl2PlxuICAgKiBiZWNvbWVzXG4gICAqIFJlYWN0LmNyZWF0ZUVsZW1lbnQoJ2RpdicsIHthOiAxLCBrZXk6IDJ9LCBcIkhlbGxvXCIsIHgpXG4gICAqL1xuICB0cmFuc2Zvcm1UYWdUb0NyZWF0ZUVsZW1lbnQoZWxlbWVudExvY2F0aW9uQ29kZSkge1xuICAgIC8vIEZpcnN0IHRhZyBpcyBhbHdheXMganN4VGFnU3RhcnQuXG4gICAgdGhpcy50b2tlbnMucmVwbGFjZVRva2VuKHRoaXMuZ2V0Q3JlYXRlRWxlbWVudEludm9jYXRpb25Db2RlKCkpO1xuXG4gICAgaWYgKHRoaXMudG9rZW5zLm1hdGNoZXMxKF90eXBlcy5Ub2tlblR5cGUuanN4VGFnRW5kKSkge1xuICAgICAgLy8gRnJhZ21lbnQgc3ludGF4LlxuICAgICAgdGhpcy50b2tlbnMucmVwbGFjZVRva2VuKGAke3RoaXMuZ2V0RnJhZ21lbnRDb2RlKCl9LCBudWxsYCk7XG4gICAgICB0aGlzLnByb2Nlc3NDaGlsZHJlbih0cnVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTm9ybWFsIG9wZW4gdGFnIG9yIHNlbGYtY2xvc2luZyB0YWcuXG4gICAgICB0aGlzLnByb2Nlc3NUYWdJbnRybygpO1xuICAgICAgdGhpcy5wcm9jZXNzUHJvcHNPYmplY3RXaXRoRGV2SW5mbyhlbGVtZW50TG9jYXRpb25Db2RlKTtcblxuICAgICAgaWYgKHRoaXMudG9rZW5zLm1hdGNoZXMyKF90eXBlcy5Ub2tlblR5cGUuc2xhc2gsIF90eXBlcy5Ub2tlblR5cGUuanN4VGFnRW5kKSkge1xuICAgICAgICAvLyBTZWxmLWNsb3NpbmcgdGFnOyBubyBjaGlsZHJlbiB0byBwcm9jZXNzLlxuICAgICAgfSBlbHNlIGlmICh0aGlzLnRva2Vucy5tYXRjaGVzMShfdHlwZXMuVG9rZW5UeXBlLmpzeFRhZ0VuZCkpIHtcbiAgICAgICAgLy8gVGFnIHdpdGggY2hpbGRyZW4gYW5kIGEgY2xvc2UtdGFnOyBwcm9jZXNzIHRoZSBjaGlsZHJlbiBhcyBhcmdzLlxuICAgICAgICB0aGlzLnRva2Vucy5yZW1vdmVUb2tlbigpO1xuICAgICAgICB0aGlzLnByb2Nlc3NDaGlsZHJlbih0cnVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkV4cGVjdGVkIGVpdGhlciAvPiBvciA+IGF0IHRoZSBlbmQgb2YgdGhlIHRhZy5cIik7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIFdlJ3JlIGF0IHRoZSBjbG9zZS10YWcgb3IgdGhlIGVuZCBvZiBhIHNlbGYtY2xvc2luZyB0YWcsIHNvIHJlbW92ZVxuICAgIC8vIGV2ZXJ5dGhpbmcgZWxzZSBhbmQgY2xvc2UgdGhlIGZ1bmN0aW9uIGNhbGwuXG4gICAgdGhpcy50b2tlbnMucmVtb3ZlSW5pdGlhbFRva2VuKCk7XG4gICAgd2hpbGUgKCF0aGlzLnRva2Vucy5tYXRjaGVzMShfdHlwZXMuVG9rZW5UeXBlLmpzeFRhZ0VuZCkpIHtcbiAgICAgIHRoaXMudG9rZW5zLnJlbW92ZVRva2VuKCk7XG4gICAgfVxuICAgIHRoaXMudG9rZW5zLnJlcGxhY2VUb2tlbihcIilcIik7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBjb2RlIGZvciB0aGUgcmVsZXZhbnQgZnVuY3Rpb24gZm9yIHRoaXMgY29udGV4dDoganN4LCBqc3hzLFxuICAgKiBvciBqc3hERVYuIFRoZSBmb2xsb3dpbmcgb3Blbi1wYXJlbiBpcyBpbmNsdWRlZCBhcyB3ZWxsLlxuICAgKlxuICAgKiBUaGVzZSBmdW5jdGlvbnMgYXJlIG9ubHkgdXNlZCBmb3IgdGhlIGF1dG9tYXRpYyBydW50aW1lLCBzbyB0aGV5IGFyZSBhbHdheXNcbiAgICogYXV0by1pbXBvcnRlZCwgYnV0IHRoZSBhdXRvLWltcG9ydCB3aWxsIGJlIGVpdGhlciBDSlMgb3IgRVNNIGJhc2VkIG9uIHRoZVxuICAgKiB0YXJnZXQgbW9kdWxlIGZvcm1hdC5cbiAgICovXG4gIGdldEpTWEZ1bmNJbnZvY2F0aW9uQ29kZShpc1N0YXRpYykge1xuICAgIGlmICh0aGlzLm9wdGlvbnMucHJvZHVjdGlvbikge1xuICAgICAgaWYgKGlzU3RhdGljKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNsYWltQXV0b0ltcG9ydGVkRnVuY0ludm9jYXRpb24oXCJqc3hzXCIsIFwiL2pzeC1ydW50aW1lXCIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2xhaW1BdXRvSW1wb3J0ZWRGdW5jSW52b2NhdGlvbihcImpzeFwiLCBcIi9qc3gtcnVudGltZVwiKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuY2xhaW1BdXRvSW1wb3J0ZWRGdW5jSW52b2NhdGlvbihcImpzeERFVlwiLCBcIi9qc3gtZGV2LXJ1bnRpbWVcIik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgY29kZSB0byB1c2UgZm9yIHRoZSBjcmVhdGVFbGVtZW50IGZ1bmN0aW9uLCBlLmcuXG4gICAqIGBSZWFjdC5jcmVhdGVFbGVtZW50YCwgaW5jbHVkaW5nIHRoZSBmb2xsb3dpbmcgb3Blbi1wYXJlbi5cbiAgICpcbiAgICogVGhpcyBpcyB0aGUgbWFpbiBmdW5jdGlvbiB0byB1c2UgZm9yIHRoZSBjbGFzc2ljIHJ1bnRpbWUuIEZvciB0aGVcbiAgICogYXV0b21hdGljIHJ1bnRpbWUsIHRoaXMgZnVuY3Rpb24gaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZ1bmN0aW9uIHRvXG4gICAqIHByZXNlcnZlIGJlaGF2aW9yIHdoZW4gdGhlcmUgaXMgYSBwcm9wIHNwcmVhZCBmb2xsb3dlZCBieSBhbiBleHBsaWNpdFxuICAgKiBrZXkuIEluIHRoYXQgYXV0b21hdGljIHJ1bnRpbWUgY2FzZSwgdGhlIGZ1bmN0aW9uIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5XG4gICAqIGltcG9ydGVkLlxuICAgKi9cbiAgZ2V0Q3JlYXRlRWxlbWVudEludm9jYXRpb25Db2RlKCkge1xuICAgIGlmICh0aGlzLmlzQXV0b21hdGljUnVudGltZSkge1xuICAgICAgcmV0dXJuIHRoaXMuY2xhaW1BdXRvSW1wb3J0ZWRGdW5jSW52b2NhdGlvbihcImNyZWF0ZUVsZW1lbnRcIiwgXCJcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHtqc3hQcmFnbWFJbmZvfSA9IHRoaXM7XG4gICAgICBjb25zdCByZXNvbHZlZFByYWdtYUJhc2VOYW1lID0gdGhpcy5pbXBvcnRQcm9jZXNzb3JcbiAgICAgICAgPyB0aGlzLmltcG9ydFByb2Nlc3Nvci5nZXRJZGVudGlmaWVyUmVwbGFjZW1lbnQoanN4UHJhZ21hSW5mby5iYXNlKSB8fCBqc3hQcmFnbWFJbmZvLmJhc2VcbiAgICAgICAgOiBqc3hQcmFnbWFJbmZvLmJhc2U7XG4gICAgICByZXR1cm4gYCR7cmVzb2x2ZWRQcmFnbWFCYXNlTmFtZX0ke2pzeFByYWdtYUluZm8uc3VmZml4fShgO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIGNvZGUgdG8gdXNlIGFzIHRoZSBjb21wb25lbnQgd2hlbiBjb21waWxpbmcgYSBzaG9ydGhhbmRcbiAgICogZnJhZ21lbnQsIGUuZy4gYFJlYWN0LkZyYWdtZW50YC5cbiAgICpcbiAgICogVGhpcyBtYXkgYmUgY2FsbGVkIGZyb20gZWl0aGVyIHRoZSBjbGFzc2ljIG9yIGF1dG9tYXRpYyBydW50aW1lLCBhbmRcbiAgICogdGhlIHZhbHVlIHNob3VsZCBiZSBhdXRvLWltcG9ydGVkIGZvciB0aGUgYXV0b21hdGljIHJ1bnRpbWUuXG4gICAqL1xuICBnZXRGcmFnbWVudENvZGUoKSB7XG4gICAgaWYgKHRoaXMuaXNBdXRvbWF0aWNSdW50aW1lKSB7XG4gICAgICByZXR1cm4gdGhpcy5jbGFpbUF1dG9JbXBvcnRlZE5hbWUoXG4gICAgICAgIFwiRnJhZ21lbnRcIixcbiAgICAgICAgdGhpcy5vcHRpb25zLnByb2R1Y3Rpb24gPyBcIi9qc3gtcnVudGltZVwiIDogXCIvanN4LWRldi1ydW50aW1lXCIsXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB7anN4UHJhZ21hSW5mb30gPSB0aGlzO1xuICAgICAgY29uc3QgcmVzb2x2ZWRGcmFnbWVudFByYWdtYUJhc2VOYW1lID0gdGhpcy5pbXBvcnRQcm9jZXNzb3JcbiAgICAgICAgPyB0aGlzLmltcG9ydFByb2Nlc3Nvci5nZXRJZGVudGlmaWVyUmVwbGFjZW1lbnQoanN4UHJhZ21hSW5mby5mcmFnbWVudEJhc2UpIHx8XG4gICAgICAgICAganN4UHJhZ21hSW5mby5mcmFnbWVudEJhc2VcbiAgICAgICAgOiBqc3hQcmFnbWFJbmZvLmZyYWdtZW50QmFzZTtcbiAgICAgIHJldHVybiByZXNvbHZlZEZyYWdtZW50UHJhZ21hQmFzZU5hbWUgKyBqc3hQcmFnbWFJbmZvLmZyYWdtZW50U3VmZml4O1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gY29kZSB0aGF0IGludm9rZXMgdGhlIGdpdmVuIGZ1bmN0aW9uLlxuICAgKlxuICAgKiBXaGVuIHRoZSBpbXBvcnRzIHRyYW5zZm9ybSBpcyBlbmFibGVkLCB1c2UgdGhlIENKU0ltcG9ydFRyYW5zZm9ybWVyXG4gICAqIHN0cmF0ZWd5IG9mIHVzaW5nIGAuY2FsbCh2b2lkIDAsIC4uLmAgdG8gYXZvaWQgcGFzc2luZyBhIGB0aGlzYCB2YWx1ZSBpbiBhXG4gICAqIHNpdHVhdGlvbiB0aGF0IHdvdWxkIG90aGVyd2lzZSBsb29rIGxpa2UgYSBtZXRob2QgY2FsbC5cbiAgICovXG4gIGNsYWltQXV0b0ltcG9ydGVkRnVuY0ludm9jYXRpb24oZnVuY05hbWUsIGltcG9ydFBhdGhTdWZmaXgpIHtcbiAgICBjb25zdCBmdW5jQ29kZSA9IHRoaXMuY2xhaW1BdXRvSW1wb3J0ZWROYW1lKGZ1bmNOYW1lLCBpbXBvcnRQYXRoU3VmZml4KTtcbiAgICBpZiAodGhpcy5pbXBvcnRQcm9jZXNzb3IpIHtcbiAgICAgIHJldHVybiBgJHtmdW5jQ29kZX0uY2FsbCh2b2lkIDAsIGA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBgJHtmdW5jQ29kZX0oYDtcbiAgICB9XG4gIH1cblxuICBjbGFpbUF1dG9JbXBvcnRlZE5hbWUoZnVuY05hbWUsIGltcG9ydFBhdGhTdWZmaXgpIHtcbiAgICBpZiAodGhpcy5pbXBvcnRQcm9jZXNzb3IpIHtcbiAgICAgIC8vIENKUyBtb2RlOiBjbGFpbSBhIG5hbWUgZm9yIHRoZSBtb2R1bGUgYW5kIG1hcmsgaXQgZm9yIGltcG9ydC5cbiAgICAgIGNvbnN0IHBhdGggPSB0aGlzLmpzeEltcG9ydFNvdXJjZSArIGltcG9ydFBhdGhTdWZmaXg7XG4gICAgICBpZiAoIXRoaXMuY2pzQXV0b21hdGljTW9kdWxlTmFtZVJlc29sdXRpb25zW3BhdGhdKSB7XG4gICAgICAgIHRoaXMuY2pzQXV0b21hdGljTW9kdWxlTmFtZVJlc29sdXRpb25zW3BhdGhdID1cbiAgICAgICAgICB0aGlzLmltcG9ydFByb2Nlc3Nvci5nZXRGcmVlSWRlbnRpZmllckZvclBhdGgocGF0aCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gYCR7dGhpcy5janNBdXRvbWF0aWNNb2R1bGVOYW1lUmVzb2x1dGlvbnNbcGF0aF19LiR7ZnVuY05hbWV9YDtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRVNNIG1vZGU6IGNsYWltIGEgbmFtZSBmb3IgdGhpcyBmdW5jdGlvbiBhbmQgYWRkIGl0IHRvIHRoZSBuYW1lcyB0aGF0XG4gICAgICAvLyBzaG91bGQgYmUgYXV0by1pbXBvcnRlZCB3aGVuIHRoZSBwcmVmaXggaXMgZ2VuZXJhdGVkLlxuICAgICAgaWYgKCF0aGlzLmVzbUF1dG9tYXRpY0ltcG9ydE5hbWVSZXNvbHV0aW9uc1tmdW5jTmFtZV0pIHtcbiAgICAgICAgdGhpcy5lc21BdXRvbWF0aWNJbXBvcnROYW1lUmVzb2x1dGlvbnNbZnVuY05hbWVdID0gdGhpcy5uYW1lTWFuYWdlci5jbGFpbUZyZWVOYW1lKFxuICAgICAgICAgIGBfJHtmdW5jTmFtZX1gLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuZXNtQXV0b21hdGljSW1wb3J0TmFtZVJlc29sdXRpb25zW2Z1bmNOYW1lXTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUHJvY2VzcyB0aGUgZmlyc3QgcGFydCBvZiBhIHRhZywgYmVmb3JlIGFueSBwcm9wcy5cbiAgICovXG4gIHByb2Nlc3NUYWdJbnRybygpIHtcbiAgICAvLyBXYWxrIGZvcndhcmQgdW50aWwgd2Ugc2VlIG9uZSBvZiB0aGVzZSBwYXR0ZXJuczpcbiAgICAvLyBqc3hOYW1lIHRvIHN0YXJ0IHRoZSBmaXJzdCBwcm9wLCBwcmVjZWRlZCBieSBhbm90aGVyIGpzeE5hbWUgdG8gZW5kIHRoZSB0YWcgbmFtZS5cbiAgICAvLyBqc3hOYW1lIHRvIHN0YXJ0IHRoZSBmaXJzdCBwcm9wLCBwcmVjZWRlZCBieSBncmVhdGVyVGhhbiB0byBlbmQgdGhlIHR5cGUgYXJndW1lbnQuXG4gICAgLy8gW29wZW4gYnJhY2VdIHRvIHN0YXJ0IHRoZSBmaXJzdCBwcm9wLlxuICAgIC8vIFtqc3hUYWdFbmRdIHRvIGVuZCB0aGUgb3Blbi10YWcuXG4gICAgLy8gW3NsYXNoLCBqc3hUYWdFbmRdIHRvIGVuZCB0aGUgc2VsZi1jbG9zaW5nIHRhZy5cbiAgICBsZXQgaW50cm9FbmQgPSB0aGlzLnRva2Vucy5jdXJyZW50SW5kZXgoKSArIDE7XG4gICAgd2hpbGUgKFxuICAgICAgdGhpcy50b2tlbnMudG9rZW5zW2ludHJvRW5kXS5pc1R5cGUgfHxcbiAgICAgICghdGhpcy50b2tlbnMubWF0Y2hlczJBdEluZGV4KGludHJvRW5kIC0gMSwgX3R5cGVzLlRva2VuVHlwZS5qc3hOYW1lLCBfdHlwZXMuVG9rZW5UeXBlLmpzeE5hbWUpICYmXG4gICAgICAgICF0aGlzLnRva2Vucy5tYXRjaGVzMkF0SW5kZXgoaW50cm9FbmQgLSAxLCBfdHlwZXMuVG9rZW5UeXBlLmdyZWF0ZXJUaGFuLCBfdHlwZXMuVG9rZW5UeXBlLmpzeE5hbWUpICYmXG4gICAgICAgICF0aGlzLnRva2Vucy5tYXRjaGVzMUF0SW5kZXgoaW50cm9FbmQsIF90eXBlcy5Ub2tlblR5cGUuYnJhY2VMKSAmJlxuICAgICAgICAhdGhpcy50b2tlbnMubWF0Y2hlczFBdEluZGV4KGludHJvRW5kLCBfdHlwZXMuVG9rZW5UeXBlLmpzeFRhZ0VuZCkgJiZcbiAgICAgICAgIXRoaXMudG9rZW5zLm1hdGNoZXMyQXRJbmRleChpbnRyb0VuZCwgX3R5cGVzLlRva2VuVHlwZS5zbGFzaCwgX3R5cGVzLlRva2VuVHlwZS5qc3hUYWdFbmQpKVxuICAgICkge1xuICAgICAgaW50cm9FbmQrKztcbiAgICB9XG4gICAgaWYgKGludHJvRW5kID09PSB0aGlzLnRva2Vucy5jdXJyZW50SW5kZXgoKSArIDEpIHtcbiAgICAgIGNvbnN0IHRhZ05hbWUgPSB0aGlzLnRva2Vucy5pZGVudGlmaWVyTmFtZSgpO1xuICAgICAgaWYgKHN0YXJ0c1dpdGhMb3dlckNhc2UodGFnTmFtZSkpIHtcbiAgICAgICAgdGhpcy50b2tlbnMucmVwbGFjZVRva2VuKGAnJHt0YWdOYW1lfSdgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgd2hpbGUgKHRoaXMudG9rZW5zLmN1cnJlbnRJbmRleCgpIDwgaW50cm9FbmQpIHtcbiAgICAgIHRoaXMucm9vdFRyYW5zZm9ybWVyLnByb2Nlc3NUb2tlbigpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTdGFydGluZyBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBwcm9wcywgYWRkIHRoZSBwcm9wcyBhcmd1bWVudCB0b1xuICAgKiBSZWFjdC5jcmVhdGVFbGVtZW50LCBpbmNsdWRpbmcgdGhlIGNvbW1hIGJlZm9yZSBpdC5cbiAgICovXG4gIHByb2Nlc3NQcm9wc09iamVjdFdpdGhEZXZJbmZvKGVsZW1lbnRMb2NhdGlvbkNvZGUpIHtcbiAgICBjb25zdCBkZXZQcm9wcyA9IHRoaXMub3B0aW9ucy5wcm9kdWN0aW9uXG4gICAgICA/IFwiXCJcbiAgICAgIDogYF9fc2VsZjogdGhpcywgX19zb3VyY2U6ICR7dGhpcy5nZXREZXZTb3VyY2UoZWxlbWVudExvY2F0aW9uQ29kZSl9YDtcbiAgICBpZiAoIXRoaXMudG9rZW5zLm1hdGNoZXMxKF90eXBlcy5Ub2tlblR5cGUuanN4TmFtZSkgJiYgIXRoaXMudG9rZW5zLm1hdGNoZXMxKF90eXBlcy5Ub2tlblR5cGUuYnJhY2VMKSkge1xuICAgICAgaWYgKGRldlByb3BzKSB7XG4gICAgICAgIHRoaXMudG9rZW5zLmFwcGVuZENvZGUoYCwgeyR7ZGV2UHJvcHN9fWApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy50b2tlbnMuYXBwZW5kQ29kZShgLCBudWxsYCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMudG9rZW5zLmFwcGVuZENvZGUoYCwge2ApO1xuICAgIHRoaXMucHJvY2Vzc1Byb3BzKGZhbHNlKTtcbiAgICBpZiAoZGV2UHJvcHMpIHtcbiAgICAgIHRoaXMudG9rZW5zLmFwcGVuZENvZGUoYCAke2RldlByb3BzfX1gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50b2tlbnMuYXBwZW5kQ29kZShcIn1cIik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybSB0aGUgY29yZSBwYXJ0IG9mIHRoZSBwcm9wcywgYXNzdW1pbmcgdGhhdCBhIHsgaGFzIGFscmVhZHkgYmVlblxuICAgKiBpbnNlcnRlZCBiZWZvcmUgdXMgYW5kIHRoYXQgYSB9IHdpbGwgYmUgaW5zZXJ0ZWQgYWZ0ZXIgdXMuXG4gICAqXG4gICAqIElmIGV4dHJhY3RLZXlDb2RlIGlzIHRydWUgKGkuZS4gd2hlbiB1c2luZyBhbnkganN4Li4uIGZ1bmN0aW9uKSwgYW55IHByb3BcbiAgICogbmFtZWQgXCJrZXlcIiBoYXMgaXRzIGNvZGUgY2FwdHVyZWQgYW5kIHJldHVybmVkIHJhdGhlciB0aGFuIGJlaW5nIGVtaXR0ZWQgdG9cbiAgICogdGhlIG91dHB1dCBjb2RlLiBUaGlzIHNoaWZ0cyBsaW5lIG51bWJlcnMsIGFuZCBlbWl0dGluZyB0aGUgY29kZSBsYXRlciB3aWxsXG4gICAqIGNvcnJlY3QgbGluZSBudW1iZXJzIGFnYWluLiBJZiBubyBrZXkgaXMgZm91bmQgb3IgaWYgZXh0cmFjdEtleUNvZGUgaXNcbiAgICogZmFsc2UsIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBudWxsLlxuICAgKi9cbiAgcHJvY2Vzc1Byb3BzKGV4dHJhY3RLZXlDb2RlKSB7XG4gICAgbGV0IGtleUNvZGUgPSBudWxsO1xuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICBpZiAodGhpcy50b2tlbnMubWF0Y2hlczIoX3R5cGVzLlRva2VuVHlwZS5qc3hOYW1lLCBfdHlwZXMuVG9rZW5UeXBlLmVxKSkge1xuICAgICAgICAvLyBUaGlzIGlzIGEgcmVndWxhciBrZXk9e3ZhbHVlfSBvciBrZXk9XCJ2YWx1ZVwiIHByb3AuXG4gICAgICAgIGNvbnN0IHByb3BOYW1lID0gdGhpcy50b2tlbnMuaWRlbnRpZmllck5hbWUoKTtcbiAgICAgICAgaWYgKGV4dHJhY3RLZXlDb2RlICYmIHByb3BOYW1lID09PSBcImtleVwiKSB7XG4gICAgICAgICAgaWYgKGtleUNvZGUgIT09IG51bGwpIHtcbiAgICAgICAgICAgIC8vIFRoZSBwcm9wcyBsaXN0IGhhcyBtdWx0aXBsZSBrZXlzLiBEaWZmZXJlbnQgaW1wbGVtZW50YXRpb25zIGFyZVxuICAgICAgICAgICAgLy8gaW5jb25zaXN0ZW50IGFib3V0IHdoYXQgdG8gZG8gaGVyZTogYXMgb2YgdGhpcyB3cml0aW5nLCBCYWJlbCBhbmRcbiAgICAgICAgICAgIC8vIHN3YyBrZWVwIHRoZSAqbGFzdCoga2V5IGFuZCBjb21wbGV0ZWx5IHJlbW92ZSB0aGUgcmVzdCwgd2hpbGVcbiAgICAgICAgICAgIC8vIFR5cGVTY3JpcHQgdXNlcyB0aGUgKmZpcnN0KiBrZXkgYW5kIGxlYXZlcyB0aGUgb3RoZXJzIGFzIHJlZ3VsYXJcbiAgICAgICAgICAgIC8vIHByb3BzLiBUaGUgUmVhY3QgdGVhbSBjb2xsYWJvcmF0ZWQgd2l0aCBCYWJlbCBvbiB0aGVcbiAgICAgICAgICAgIC8vIGltcGxlbWVudGF0aW9uIG9mIHRoaXMgYmVoYXZpb3IsIHNvIHByZXN1bWFibHkgdGhlIEJhYmVsIGJlaGF2aW9yXG4gICAgICAgICAgICAvLyBpcyB0aGUgb25lIHRvIHVzZS5cbiAgICAgICAgICAgIC8vIFNpbmNlIHdlIHdvbid0IGV2ZXIgYmUgZW1pdHRpbmcgdGhlIHByZXZpb3VzIGtleSBjb2RlLCB3ZSBuZWVkIHRvXG4gICAgICAgICAgICAvLyBhdCBsZWFzdCBlbWl0IGl0cyBuZXdsaW5lcyBoZXJlIHNvIHRoYXQgdGhlIGxpbmUgbnVtYmVycyBtYXRjaCB1cFxuICAgICAgICAgICAgLy8gaW4gdGhlIGxvbmcgcnVuLlxuICAgICAgICAgICAgdGhpcy50b2tlbnMuYXBwZW5kQ29kZShrZXlDb2RlLnJlcGxhY2UoL1teXFxuXS9nLCBcIlwiKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIGtleVxuICAgICAgICAgIHRoaXMudG9rZW5zLnJlbW92ZVRva2VuKCk7XG4gICAgICAgICAgLy8gPVxuICAgICAgICAgIHRoaXMudG9rZW5zLnJlbW92ZVRva2VuKCk7XG4gICAgICAgICAgY29uc3Qgc25hcHNob3QgPSB0aGlzLnRva2Vucy5zbmFwc2hvdCgpO1xuICAgICAgICAgIHRoaXMucHJvY2Vzc1Byb3BWYWx1ZSgpO1xuICAgICAgICAgIGtleUNvZGUgPSB0aGlzLnRva2Vucy5kYW5nZXJvdXNseUdldEFuZFJlbW92ZUNvZGVTaW5jZVNuYXBzaG90KHNuYXBzaG90KTtcbiAgICAgICAgICAvLyBEb24ndCBhZGQgYSBjb21tYVxuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMucHJvY2Vzc1Byb3BOYW1lKHByb3BOYW1lKTtcbiAgICAgICAgICB0aGlzLnRva2Vucy5yZXBsYWNlVG9rZW4oXCI6IFwiKTtcbiAgICAgICAgICB0aGlzLnByb2Nlc3NQcm9wVmFsdWUoKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICh0aGlzLnRva2Vucy5tYXRjaGVzMShfdHlwZXMuVG9rZW5UeXBlLmpzeE5hbWUpKSB7XG4gICAgICAgIC8vIFRoaXMgaXMgYSBzaG9ydGhhbmQgcHJvcCBsaWtlIDxpbnB1dCBkaXNhYmxlZCAvPi5cbiAgICAgICAgY29uc3QgcHJvcE5hbWUgPSB0aGlzLnRva2Vucy5pZGVudGlmaWVyTmFtZSgpO1xuICAgICAgICB0aGlzLnByb2Nlc3NQcm9wTmFtZShwcm9wTmFtZSk7XG4gICAgICAgIHRoaXMudG9rZW5zLmFwcGVuZENvZGUoXCI6IHRydWVcIik7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMudG9rZW5zLm1hdGNoZXMxKF90eXBlcy5Ub2tlblR5cGUuYnJhY2VMKSkge1xuICAgICAgICAvLyBUaGlzIGlzIHByb3Agc3ByZWFkLCBsaWtlIDxkaXYgey4uLmdldFByb3BzKCl9Piwgd2hpY2ggd2UgY2FuIHBhc3NcbiAgICAgICAgLy8gdGhyb3VnaCBmYWlybHkgZGlyZWN0bHkgYXMgYW4gb2JqZWN0IHNwcmVhZC5cbiAgICAgICAgdGhpcy50b2tlbnMucmVwbGFjZVRva2VuKFwiXCIpO1xuICAgICAgICB0aGlzLnJvb3RUcmFuc2Zvcm1lci5wcm9jZXNzQmFsYW5jZWRDb2RlKCk7XG4gICAgICAgIHRoaXMudG9rZW5zLnJlcGxhY2VUb2tlbihcIlwiKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgdGhpcy50b2tlbnMuYXBwZW5kQ29kZShcIixcIik7XG4gICAgfVxuICAgIHJldHVybiBrZXlDb2RlO1xuICB9XG5cbiAgcHJvY2Vzc1Byb3BOYW1lKHByb3BOYW1lKSB7XG4gICAgaWYgKHByb3BOYW1lLmluY2x1ZGVzKFwiLVwiKSkge1xuICAgICAgdGhpcy50b2tlbnMucmVwbGFjZVRva2VuKGAnJHtwcm9wTmFtZX0nYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudG9rZW5zLmNvcHlUb2tlbigpO1xuICAgIH1cbiAgfVxuXG4gIHByb2Nlc3NQcm9wVmFsdWUoKSB7XG4gICAgaWYgKHRoaXMudG9rZW5zLm1hdGNoZXMxKF90eXBlcy5Ub2tlblR5cGUuYnJhY2VMKSkge1xuICAgICAgdGhpcy50b2tlbnMucmVwbGFjZVRva2VuKFwiXCIpO1xuICAgICAgdGhpcy5yb290VHJhbnNmb3JtZXIucHJvY2Vzc0JhbGFuY2VkQ29kZSgpO1xuICAgICAgdGhpcy50b2tlbnMucmVwbGFjZVRva2VuKFwiXCIpO1xuICAgIH0gZWxzZSBpZiAodGhpcy50b2tlbnMubWF0Y2hlczEoX3R5cGVzLlRva2VuVHlwZS5qc3hUYWdTdGFydCkpIHtcbiAgICAgIHRoaXMucHJvY2Vzc0pTWFRhZygpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnByb2Nlc3NTdHJpbmdQcm9wVmFsdWUoKTtcbiAgICB9XG4gIH1cblxuICBwcm9jZXNzU3RyaW5nUHJvcFZhbHVlKCkge1xuICAgIGNvbnN0IHRva2VuID0gdGhpcy50b2tlbnMuY3VycmVudFRva2VuKCk7XG4gICAgY29uc3QgdmFsdWVDb2RlID0gdGhpcy50b2tlbnMuY29kZS5zbGljZSh0b2tlbi5zdGFydCArIDEsIHRva2VuLmVuZCAtIDEpO1xuICAgIGNvbnN0IHJlcGxhY2VtZW50Q29kZSA9IGZvcm1hdEpTWFRleHRSZXBsYWNlbWVudCh2YWx1ZUNvZGUpO1xuICAgIGNvbnN0IGxpdGVyYWxDb2RlID0gZm9ybWF0SlNYU3RyaW5nVmFsdWVMaXRlcmFsKHZhbHVlQ29kZSk7XG4gICAgdGhpcy50b2tlbnMucmVwbGFjZVRva2VuKGxpdGVyYWxDb2RlICsgcmVwbGFjZW1lbnRDb2RlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGFydGluZyBpbiB0aGUgbWlkZGxlIG9mIHRoZSBwcm9wcyBvYmplY3QgbGl0ZXJhbCwgcHJvZHVjZSBhbiBhZGRpdGlvbmFsXG4gICAqIHByb3AgZm9yIHRoZSBjaGlsZHJlbiBhbmQgY2xvc2UgdGhlIG9iamVjdCBsaXRlcmFsLlxuICAgKi9cbiAgcHJvY2Vzc0F1dG9tYXRpY0NoaWxkcmVuQW5kRW5kUHJvcHMoanN4Um9sZSkge1xuICAgIGlmIChqc3hSb2xlID09PSBfdG9rZW5pemVyLkpTWFJvbGUuU3RhdGljQ2hpbGRyZW4pIHtcbiAgICAgIHRoaXMudG9rZW5zLmFwcGVuZENvZGUoXCIgY2hpbGRyZW46IFtcIik7XG4gICAgICB0aGlzLnByb2Nlc3NDaGlsZHJlbihmYWxzZSk7XG4gICAgICB0aGlzLnRva2Vucy5hcHBlbmRDb2RlKFwiXX1cIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRoZSBwYXJzZXIgaW5mb3JtYXRpb24gdGVsbHMgdXMgd2hldGhlciB3ZSB3aWxsIHNlZSBhIHJlYWwgY2hpbGQgb3IgaWZcbiAgICAgIC8vIGFsbCByZW1haW5pbmcgY2hpbGRyZW4gKGlmIGFueSkgd2lsbCByZXNvbHZlIHRvIGVtcHR5LiBJZiB0aGVyZSBhcmUgbm9cbiAgICAgIC8vIG5vbi1lbXB0eSBjaGlsZHJlbiwgZG9uJ3QgZW1pdCBhIGNoaWxkcmVuIHByb3AgYXQgYWxsLCBidXQgc3RpbGxcbiAgICAgIC8vIHByb2Nlc3MgY2hpbGRyZW4gc28gdGhhdCB3ZSBwcm9wZXJseSB0cmFuc2Zvcm0gdGhlIGNvZGUgaW50byBub3RoaW5nLlxuICAgICAgaWYgKGpzeFJvbGUgPT09IF90b2tlbml6ZXIuSlNYUm9sZS5PbmVDaGlsZCkge1xuICAgICAgICB0aGlzLnRva2Vucy5hcHBlbmRDb2RlKFwiIGNoaWxkcmVuOiBcIik7XG4gICAgICB9XG4gICAgICB0aGlzLnByb2Nlc3NDaGlsZHJlbihmYWxzZSk7XG4gICAgICB0aGlzLnRva2Vucy5hcHBlbmRDb2RlKFwifVwiKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVHJhbnNmb3JtIGNoaWxkcmVuIGludG8gYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCwgd2hpY2ggd2lsbCBiZSBlaXRoZXJcbiAgICogYXJndW1lbnRzIHRvIGNyZWF0ZUVsZW1lbnQgb3IgYXJyYXkgZWxlbWVudHMgb2YgYSBjaGlsZHJlbiBwcm9wLlxuICAgKi9cbiAgcHJvY2Vzc0NoaWxkcmVuKG5lZWRzSW5pdGlhbENvbW1hKSB7XG4gICAgbGV0IG5lZWRzQ29tbWEgPSBuZWVkc0luaXRpYWxDb21tYTtcbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgaWYgKHRoaXMudG9rZW5zLm1hdGNoZXMyKF90eXBlcy5Ub2tlblR5cGUuanN4VGFnU3RhcnQsIF90eXBlcy5Ub2tlblR5cGUuc2xhc2gpKSB7XG4gICAgICAgIC8vIENsb3NpbmcgdGFnLCBzbyBubyBtb3JlIGNoaWxkcmVuLlxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBsZXQgZGlkRW1pdEVsZW1lbnQgPSBmYWxzZTtcbiAgICAgIGlmICh0aGlzLnRva2Vucy5tYXRjaGVzMShfdHlwZXMuVG9rZW5UeXBlLmJyYWNlTCkpIHtcbiAgICAgICAgaWYgKHRoaXMudG9rZW5zLm1hdGNoZXMyKF90eXBlcy5Ub2tlblR5cGUuYnJhY2VMLCBfdHlwZXMuVG9rZW5UeXBlLmJyYWNlUikpIHtcbiAgICAgICAgICAvLyBFbXB0eSBpbnRlcnBvbGF0aW9ucyBhbmQgY29tbWVudC1vbmx5IGludGVycG9sYXRpb25zIGFyZSBhbGxvd2VkXG4gICAgICAgICAgLy8gYW5kIGRvbid0IGNyZWF0ZSBhbiBleHRyYSBjaGlsZCBhcmcuXG4gICAgICAgICAgdGhpcy50b2tlbnMucmVwbGFjZVRva2VuKFwiXCIpO1xuICAgICAgICAgIHRoaXMudG9rZW5zLnJlcGxhY2VUb2tlbihcIlwiKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBJbnRlcnBvbGF0ZWQgZXhwcmVzc2lvbi5cbiAgICAgICAgICB0aGlzLnRva2Vucy5yZXBsYWNlVG9rZW4obmVlZHNDb21tYSA/IFwiLCBcIiA6IFwiXCIpO1xuICAgICAgICAgIHRoaXMucm9vdFRyYW5zZm9ybWVyLnByb2Nlc3NCYWxhbmNlZENvZGUoKTtcbiAgICAgICAgICB0aGlzLnRva2Vucy5yZXBsYWNlVG9rZW4oXCJcIik7XG4gICAgICAgICAgZGlkRW1pdEVsZW1lbnQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHRoaXMudG9rZW5zLm1hdGNoZXMxKF90eXBlcy5Ub2tlblR5cGUuanN4VGFnU3RhcnQpKSB7XG4gICAgICAgIC8vIENoaWxkIEpTWCBlbGVtZW50XG4gICAgICAgIHRoaXMudG9rZW5zLmFwcGVuZENvZGUobmVlZHNDb21tYSA/IFwiLCBcIiA6IFwiXCIpO1xuICAgICAgICB0aGlzLnByb2Nlc3NKU1hUYWcoKTtcbiAgICAgICAgZGlkRW1pdEVsZW1lbnQgPSB0cnVlO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnRva2Vucy5tYXRjaGVzMShfdHlwZXMuVG9rZW5UeXBlLmpzeFRleHQpIHx8IHRoaXMudG9rZW5zLm1hdGNoZXMxKF90eXBlcy5Ub2tlblR5cGUuanN4RW1wdHlUZXh0KSkge1xuICAgICAgICBkaWRFbWl0RWxlbWVudCA9IHRoaXMucHJvY2Vzc0NoaWxkVGV4dEVsZW1lbnQobmVlZHNDb21tYSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbmV4cGVjdGVkIHRva2VuIHdoZW4gcHJvY2Vzc2luZyBKU1ggY2hpbGRyZW4uXCIpO1xuICAgICAgfVxuICAgICAgaWYgKGRpZEVtaXRFbGVtZW50KSB7XG4gICAgICAgIG5lZWRzQ29tbWEgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUdXJuIGEgSlNYIHRleHQgZWxlbWVudCBpbnRvIGEgc3RyaW5nIGxpdGVyYWwsIG9yIG5vdGhpbmcgYXQgYWxsIGlmIHRoZSBKU1hcbiAgICogdGV4dCByZXNvbHZlcyB0byB0aGUgZW1wdHkgc3RyaW5nLlxuICAgKlxuICAgKiBSZXR1cm5zIHRydWUgaWYgYSBzdHJpbmcgbGl0ZXJhbCBpcyBlbWl0dGVkLCBmYWxzZSBvdGhlcndpc2UuXG4gICAqL1xuICBwcm9jZXNzQ2hpbGRUZXh0RWxlbWVudChuZWVkc0NvbW1hKSB7XG4gICAgY29uc3QgdG9rZW4gPSB0aGlzLnRva2Vucy5jdXJyZW50VG9rZW4oKTtcbiAgICBjb25zdCB2YWx1ZUNvZGUgPSB0aGlzLnRva2Vucy5jb2RlLnNsaWNlKHRva2VuLnN0YXJ0LCB0b2tlbi5lbmQpO1xuICAgIGNvbnN0IHJlcGxhY2VtZW50Q29kZSA9IGZvcm1hdEpTWFRleHRSZXBsYWNlbWVudCh2YWx1ZUNvZGUpO1xuICAgIGNvbnN0IGxpdGVyYWxDb2RlID0gZm9ybWF0SlNYVGV4dExpdGVyYWwodmFsdWVDb2RlKTtcbiAgICBpZiAobGl0ZXJhbENvZGUgPT09ICdcIlwiJykge1xuICAgICAgdGhpcy50b2tlbnMucmVwbGFjZVRva2VuKHJlcGxhY2VtZW50Q29kZSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudG9rZW5zLnJlcGxhY2VUb2tlbihgJHtuZWVkc0NvbW1hID8gXCIsIFwiIDogXCJcIn0ke2xpdGVyYWxDb2RlfSR7cmVwbGFjZW1lbnRDb2RlfWApO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgZ2V0RGV2U291cmNlKGVsZW1lbnRMb2NhdGlvbkNvZGUpIHtcbiAgICByZXR1cm4gYHtmaWxlTmFtZTogJHt0aGlzLmdldEZpbGVuYW1lVmFyTmFtZSgpfSwgJHtlbGVtZW50TG9jYXRpb25Db2RlfX1gO1xuICB9XG5cbiAgZ2V0RmlsZW5hbWVWYXJOYW1lKCkge1xuICAgIGlmICghdGhpcy5maWxlbmFtZVZhck5hbWUpIHtcbiAgICAgIHRoaXMuZmlsZW5hbWVWYXJOYW1lID0gdGhpcy5uYW1lTWFuYWdlci5jbGFpbUZyZWVOYW1lKFwiX2pzeEZpbGVOYW1lXCIpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5maWxlbmFtZVZhck5hbWU7XG4gIH1cbn0gZXhwb3J0cy5kZWZhdWx0ID0gSlNYVHJhbnNmb3JtZXI7XG5cbi8qKlxuICogU3BlYyBmb3IgaWRlbnRpZmllcnM6IGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jcHJvZC1JZGVudGlmaWVyU3RhcnQuXG4gKlxuICogUmVhbGx5IG9ubHkgdHJlYXQgYW55dGhpbmcgc3RhcnRpbmcgd2l0aCBhLXogYXMgdGFnIG5hbWVzLiAgYF9gLCBgJGAsIGBcdTAwRTlgXG4gKiBzaG91bGQgYmUgdHJlYXRlZCBhcyBjb21wb25lbnQgbmFtZXNcbiAqL1xuIGZ1bmN0aW9uIHN0YXJ0c1dpdGhMb3dlckNhc2Uocykge1xuICBjb25zdCBmaXJzdENoYXIgPSBzLmNoYXJDb2RlQXQoMCk7XG4gIHJldHVybiBmaXJzdENoYXIgPj0gX2NoYXJjb2Rlcy5jaGFyQ29kZXMubG93ZXJjYXNlQSAmJiBmaXJzdENoYXIgPD0gX2NoYXJjb2Rlcy5jaGFyQ29kZXMubG93ZXJjYXNlWjtcbn0gZXhwb3J0cy5zdGFydHNXaXRoTG93ZXJDYXNlID0gc3RhcnRzV2l0aExvd2VyQ2FzZTtcblxuLyoqXG4gKiBUdXJuIHRoZSBnaXZlbiBqc3hUZXh0IHN0cmluZyBpbnRvIGEgSlMgc3RyaW5nIGxpdGVyYWwuIExlYWRpbmcgYW5kIHRyYWlsaW5nXG4gKiB3aGl0ZXNwYWNlIG9uIGxpbmVzIGlzIHJlbW92ZWQsIGV4Y2VwdCBpbW1lZGlhdGVseSBhZnRlciB0aGUgb3Blbi10YWcgYW5kXG4gKiBiZWZvcmUgdGhlIGNsb3NlLXRhZy4gRW1wdHkgbGluZXMgYXJlIGNvbXBsZXRlbHkgcmVtb3ZlZCwgYW5kIHNwYWNlcyBhcmVcbiAqIGFkZGVkIGJldHdlZW4gbGluZXMgYWZ0ZXIgdGhhdC5cbiAqXG4gKiBXZSB1c2UgSlNPTi5zdHJpbmdpZnkgdG8gaW50cm9kdWNlIGVzY2FwZSBjaGFyYWN0ZXJzIGFzIG5lY2Vzc2FyeSwgYW5kIHRyaW1cbiAqIHRoZSBzdGFydCBhbmQgZW5kIG9mIGVhY2ggbGluZSBhbmQgcmVtb3ZlIGJsYW5rIGxpbmVzLlxuICovXG5mdW5jdGlvbiBmb3JtYXRKU1hUZXh0TGl0ZXJhbCh0ZXh0KSB7XG4gIGxldCByZXN1bHQgPSBcIlwiO1xuICBsZXQgd2hpdGVzcGFjZSA9IFwiXCI7XG5cbiAgbGV0IGlzSW5Jbml0aWFsTGluZVdoaXRlc3BhY2UgPSBmYWxzZTtcbiAgbGV0IHNlZW5Ob25XaGl0ZXNwYWNlID0gZmFsc2U7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdGV4dC5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGMgPSB0ZXh0W2ldO1xuICAgIGlmIChjID09PSBcIiBcIiB8fCBjID09PSBcIlxcdFwiIHx8IGMgPT09IFwiXFxyXCIpIHtcbiAgICAgIGlmICghaXNJbkluaXRpYWxMaW5lV2hpdGVzcGFjZSkge1xuICAgICAgICB3aGl0ZXNwYWNlICs9IGM7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjID09PSBcIlxcblwiKSB7XG4gICAgICB3aGl0ZXNwYWNlID0gXCJcIjtcbiAgICAgIGlzSW5Jbml0aWFsTGluZVdoaXRlc3BhY2UgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoc2Vlbk5vbldoaXRlc3BhY2UgJiYgaXNJbkluaXRpYWxMaW5lV2hpdGVzcGFjZSkge1xuICAgICAgICByZXN1bHQgKz0gXCIgXCI7XG4gICAgICB9XG4gICAgICByZXN1bHQgKz0gd2hpdGVzcGFjZTtcbiAgICAgIHdoaXRlc3BhY2UgPSBcIlwiO1xuICAgICAgaWYgKGMgPT09IFwiJlwiKSB7XG4gICAgICAgIGNvbnN0IHtlbnRpdHksIG5ld0l9ID0gcHJvY2Vzc0VudGl0eSh0ZXh0LCBpICsgMSk7XG4gICAgICAgIGkgPSBuZXdJIC0gMTtcbiAgICAgICAgcmVzdWx0ICs9IGVudGl0eTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdCArPSBjO1xuICAgICAgfVxuICAgICAgc2Vlbk5vbldoaXRlc3BhY2UgPSB0cnVlO1xuICAgICAgaXNJbkluaXRpYWxMaW5lV2hpdGVzcGFjZSA9IGZhbHNlO1xuICAgIH1cbiAgfVxuICBpZiAoIWlzSW5Jbml0aWFsTGluZVdoaXRlc3BhY2UpIHtcbiAgICByZXN1bHQgKz0gd2hpdGVzcGFjZTtcbiAgfVxuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkocmVzdWx0KTtcbn1cblxuLyoqXG4gKiBQcm9kdWNlIHRoZSBjb2RlIHRoYXQgc2hvdWxkIGJlIHByaW50ZWQgYWZ0ZXIgdGhlIEpTWCB0ZXh0IHN0cmluZyBsaXRlcmFsLFxuICogd2l0aCBtb3N0IGNvbnRlbnQgcmVtb3ZlZCwgYnV0IGFsbCBuZXdsaW5lcyBwcmVzZXJ2ZWQgYW5kIGFsbCBzcGFjaW5nIGF0IHRoZVxuICogZW5kIHByZXNlcnZlZC5cbiAqL1xuZnVuY3Rpb24gZm9ybWF0SlNYVGV4dFJlcGxhY2VtZW50KHRleHQpIHtcbiAgbGV0IG51bU5ld2xpbmVzID0gMDtcbiAgbGV0IG51bVNwYWNlcyA9IDA7XG4gIGZvciAoY29uc3QgYyBvZiB0ZXh0KSB7XG4gICAgaWYgKGMgPT09IFwiXFxuXCIpIHtcbiAgICAgIG51bU5ld2xpbmVzKys7XG4gICAgICBudW1TcGFjZXMgPSAwO1xuICAgIH0gZWxzZSBpZiAoYyA9PT0gXCIgXCIpIHtcbiAgICAgIG51bVNwYWNlcysrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gXCJcXG5cIi5yZXBlYXQobnVtTmV3bGluZXMpICsgXCIgXCIucmVwZWF0KG51bVNwYWNlcyk7XG59XG5cbi8qKlxuICogRm9ybWF0IGEgc3RyaW5nIGluIHRoZSB2YWx1ZSBwb3NpdGlvbiBvZiBhIEpTWCBwcm9wLlxuICpcbiAqIFVzZSB0aGUgc2FtZSBpbXBsZW1lbnRhdGlvbiBhcyBjb252ZXJ0QXR0cmlidXRlIGZyb21cbiAqIGJhYmVsLWhlbHBlci1idWlsZGVyLXJlYWN0LWpzeC5cbiAqL1xuZnVuY3Rpb24gZm9ybWF0SlNYU3RyaW5nVmFsdWVMaXRlcmFsKHRleHQpIHtcbiAgbGV0IHJlc3VsdCA9IFwiXCI7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdGV4dC5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGMgPSB0ZXh0W2ldO1xuICAgIGlmIChjID09PSBcIlxcblwiKSB7XG4gICAgICBpZiAoL1xccy8udGVzdCh0ZXh0W2kgKyAxXSkpIHtcbiAgICAgICAgcmVzdWx0ICs9IFwiIFwiO1xuICAgICAgICB3aGlsZSAoaSA8IHRleHQubGVuZ3RoICYmIC9cXHMvLnRlc3QodGV4dFtpICsgMV0pKSB7XG4gICAgICAgICAgaSsrO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHQgKz0gXCJcXG5cIjtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGMgPT09IFwiJlwiKSB7XG4gICAgICBjb25zdCB7ZW50aXR5LCBuZXdJfSA9IHByb2Nlc3NFbnRpdHkodGV4dCwgaSArIDEpO1xuICAgICAgcmVzdWx0ICs9IGVudGl0eTtcbiAgICAgIGkgPSBuZXdJIC0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0ICs9IGM7XG4gICAgfVxuICB9XG4gIHJldHVybiBKU09OLnN0cmluZ2lmeShyZXN1bHQpO1xufVxuXG4vKipcbiAqIFN0YXJ0aW5nIGF0IGEgJiwgc2VlIGlmIHRoZXJlJ3MgYW4gSFRNTCBlbnRpdHkgKHNwZWNpZmllZCBieSBuYW1lLCBkZWNpbWFsXG4gKiBjaGFyIGNvZGUsIG9yIGhleCBjaGFyIGNvZGUpIGFuZCByZXR1cm4gaXQgaWYgc28uXG4gKlxuICogTW9kaWZpZWQgZnJvbSBqc3hSZWFkU3RyaW5nIGluIGJhYmVsLXBhcnNlci5cbiAqL1xuZnVuY3Rpb24gcHJvY2Vzc0VudGl0eSh0ZXh0LCBpbmRleEFmdGVyQW1wZXJzYW5kKSB7XG4gIGxldCBzdHIgPSBcIlwiO1xuICBsZXQgY291bnQgPSAwO1xuICBsZXQgZW50aXR5O1xuICBsZXQgaSA9IGluZGV4QWZ0ZXJBbXBlcnNhbmQ7XG5cbiAgaWYgKHRleHRbaV0gPT09IFwiI1wiKSB7XG4gICAgbGV0IHJhZGl4ID0gMTA7XG4gICAgaSsrO1xuICAgIGxldCBudW1TdGFydDtcbiAgICBpZiAodGV4dFtpXSA9PT0gXCJ4XCIpIHtcbiAgICAgIHJhZGl4ID0gMTY7XG4gICAgICBpKys7XG4gICAgICBudW1TdGFydCA9IGk7XG4gICAgICB3aGlsZSAoaSA8IHRleHQubGVuZ3RoICYmIGlzSGV4RGlnaXQodGV4dC5jaGFyQ29kZUF0KGkpKSkge1xuICAgICAgICBpKys7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG51bVN0YXJ0ID0gaTtcbiAgICAgIHdoaWxlIChpIDwgdGV4dC5sZW5ndGggJiYgaXNEZWNpbWFsRGlnaXQodGV4dC5jaGFyQ29kZUF0KGkpKSkge1xuICAgICAgICBpKys7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0ZXh0W2ldID09PSBcIjtcIikge1xuICAgICAgY29uc3QgbnVtU3RyID0gdGV4dC5zbGljZShudW1TdGFydCwgaSk7XG4gICAgICBpZiAobnVtU3RyKSB7XG4gICAgICAgIGkrKztcbiAgICAgICAgZW50aXR5ID0gU3RyaW5nLmZyb21Db2RlUG9pbnQocGFyc2VJbnQobnVtU3RyLCByYWRpeCkpO1xuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB3aGlsZSAoaSA8IHRleHQubGVuZ3RoICYmIGNvdW50KysgPCAxMCkge1xuICAgICAgY29uc3QgY2ggPSB0ZXh0W2ldO1xuICAgICAgaSsrO1xuICAgICAgaWYgKGNoID09PSBcIjtcIikge1xuICAgICAgICBlbnRpdHkgPSBfeGh0bWwyLmRlZmF1bHQuZ2V0KHN0cik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgc3RyICs9IGNoO1xuICAgIH1cbiAgfVxuXG4gIGlmICghZW50aXR5KSB7XG4gICAgcmV0dXJuIHtlbnRpdHk6IFwiJlwiLCBuZXdJOiBpbmRleEFmdGVyQW1wZXJzYW5kfTtcbiAgfVxuICByZXR1cm4ge2VudGl0eSwgbmV3STogaX07XG59XG5cbmZ1bmN0aW9uIGlzRGVjaW1hbERpZ2l0KGNvZGUpIHtcbiAgcmV0dXJuIGNvZGUgPj0gX2NoYXJjb2Rlcy5jaGFyQ29kZXMuZGlnaXQwICYmIGNvZGUgPD0gX2NoYXJjb2Rlcy5jaGFyQ29kZXMuZGlnaXQ5O1xufVxuXG5mdW5jdGlvbiBpc0hleERpZ2l0KGNvZGUpIHtcbiAgcmV0dXJuIChcbiAgICAoY29kZSA+PSBfY2hhcmNvZGVzLmNoYXJDb2Rlcy5kaWdpdDAgJiYgY29kZSA8PSBfY2hhcmNvZGVzLmNoYXJDb2Rlcy5kaWdpdDkpIHx8XG4gICAgKGNvZGUgPj0gX2NoYXJjb2Rlcy5jaGFyQ29kZXMubG93ZXJjYXNlQSAmJiBjb2RlIDw9IF9jaGFyY29kZXMuY2hhckNvZGVzLmxvd2VyY2FzZUYpIHx8XG4gICAgKGNvZGUgPj0gX2NoYXJjb2Rlcy5jaGFyQ29kZXMudXBwZXJjYXNlQSAmJiBjb2RlIDw9IF9jaGFyY29kZXMuY2hhckNvZGVzLnVwcGVyY2FzZUYpXG4gICk7XG59XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7dmFsdWU6IHRydWV9KTsgZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cbnZhciBfdG9rZW5pemVyID0gcmVxdWlyZSgnLi4vcGFyc2VyL3Rva2VuaXplcicpO1xudmFyIF90eXBlcyA9IHJlcXVpcmUoJy4uL3BhcnNlci90b2tlbml6ZXIvdHlwZXMnKTtcblxudmFyIF9KU1hUcmFuc2Zvcm1lciA9IHJlcXVpcmUoJy4uL3RyYW5zZm9ybWVycy9KU1hUcmFuc2Zvcm1lcicpO1xudmFyIF9nZXRKU1hQcmFnbWFJbmZvID0gcmVxdWlyZSgnLi9nZXRKU1hQcmFnbWFJbmZvJyk7IHZhciBfZ2V0SlNYUHJhZ21hSW5mbzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9nZXRKU1hQcmFnbWFJbmZvKTtcblxuIGZ1bmN0aW9uIGdldE5vblR5cGVJZGVudGlmaWVycyh0b2tlbnMsIG9wdGlvbnMpIHtcbiAgY29uc3QganN4UHJhZ21hSW5mbyA9IF9nZXRKU1hQcmFnbWFJbmZvMi5kZWZhdWx0LmNhbGwodm9pZCAwLCBvcHRpb25zKTtcbiAgY29uc3Qgbm9uVHlwZUlkZW50aWZpZXJzID0gbmV3IFNldCgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHRva2Vucy50b2tlbnMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCB0b2tlbiA9IHRva2Vucy50b2tlbnNbaV07XG4gICAgaWYgKFxuICAgICAgdG9rZW4udHlwZSA9PT0gX3R5cGVzLlRva2VuVHlwZS5uYW1lICYmXG4gICAgICAhdG9rZW4uaXNUeXBlICYmXG4gICAgICAodG9rZW4uaWRlbnRpZmllclJvbGUgPT09IF90b2tlbml6ZXIuSWRlbnRpZmllclJvbGUuQWNjZXNzIHx8XG4gICAgICAgIHRva2VuLmlkZW50aWZpZXJSb2xlID09PSBfdG9rZW5pemVyLklkZW50aWZpZXJSb2xlLk9iamVjdFNob3J0aGFuZCB8fFxuICAgICAgICB0b2tlbi5pZGVudGlmaWVyUm9sZSA9PT0gX3Rva2VuaXplci5JZGVudGlmaWVyUm9sZS5FeHBvcnRBY2Nlc3MpICYmXG4gICAgICAhdG9rZW4uc2hhZG93c0dsb2JhbFxuICAgICkge1xuICAgICAgbm9uVHlwZUlkZW50aWZpZXJzLmFkZCh0b2tlbnMuaWRlbnRpZmllck5hbWVGb3JUb2tlbih0b2tlbikpO1xuICAgIH1cbiAgICBpZiAodG9rZW4udHlwZSA9PT0gX3R5cGVzLlRva2VuVHlwZS5qc3hUYWdTdGFydCkge1xuICAgICAgbm9uVHlwZUlkZW50aWZpZXJzLmFkZChqc3hQcmFnbWFJbmZvLmJhc2UpO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICB0b2tlbi50eXBlID09PSBfdHlwZXMuVG9rZW5UeXBlLmpzeFRhZ1N0YXJ0ICYmXG4gICAgICBpICsgMSA8IHRva2Vucy50b2tlbnMubGVuZ3RoICYmXG4gICAgICB0b2tlbnMudG9rZW5zW2kgKyAxXS50eXBlID09PSBfdHlwZXMuVG9rZW5UeXBlLmpzeFRhZ0VuZFxuICAgICkge1xuICAgICAgbm9uVHlwZUlkZW50aWZpZXJzLmFkZChqc3hQcmFnbWFJbmZvLmJhc2UpO1xuICAgICAgbm9uVHlwZUlkZW50aWZpZXJzLmFkZChqc3hQcmFnbWFJbmZvLmZyYWdtZW50QmFzZSk7XG4gICAgfVxuICAgIGlmICh0b2tlbi50eXBlID09PSBfdHlwZXMuVG9rZW5UeXBlLmpzeE5hbWUgJiYgdG9rZW4uaWRlbnRpZmllclJvbGUgPT09IF90b2tlbml6ZXIuSWRlbnRpZmllclJvbGUuQWNjZXNzKSB7XG4gICAgICBjb25zdCBpZGVudGlmaWVyTmFtZSA9IHRva2Vucy5pZGVudGlmaWVyTmFtZUZvclRva2VuKHRva2VuKTtcbiAgICAgIC8vIExvd2VyLWNhc2Ugc2luZ2xlLWNvbXBvbmVudCB0YWcgbmFtZXMgbGlrZSBcImRpdlwiIGRvbid0IGNvdW50LlxuICAgICAgaWYgKCFfSlNYVHJhbnNmb3JtZXIuc3RhcnRzV2l0aExvd2VyQ2FzZS5jYWxsKHZvaWQgMCwgaWRlbnRpZmllck5hbWUpIHx8IHRva2Vucy50b2tlbnNbaSArIDFdLnR5cGUgPT09IF90eXBlcy5Ub2tlblR5cGUuZG90KSB7XG4gICAgICAgIG5vblR5cGVJZGVudGlmaWVycy5hZGQodG9rZW5zLmlkZW50aWZpZXJOYW1lRm9yVG9rZW4odG9rZW4pKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIG5vblR5cGVJZGVudGlmaWVycztcbn0gZXhwb3J0cy5nZXROb25UeXBlSWRlbnRpZmllcnMgPSBnZXROb25UeXBlSWRlbnRpZmllcnM7XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7dmFsdWU6IHRydWV9KTsgZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuXG52YXIgX3Rva2VuaXplciA9IHJlcXVpcmUoJy4vcGFyc2VyL3Rva2VuaXplcicpO1xudmFyIF9rZXl3b3JkcyA9IHJlcXVpcmUoJy4vcGFyc2VyL3Rva2VuaXplci9rZXl3b3JkcycpO1xudmFyIF90eXBlcyA9IHJlcXVpcmUoJy4vcGFyc2VyL3Rva2VuaXplci90eXBlcycpO1xuXG52YXIgX2dldEltcG9ydEV4cG9ydFNwZWNpZmllckluZm8gPSByZXF1aXJlKCcuL3V0aWwvZ2V0SW1wb3J0RXhwb3J0U3BlY2lmaWVySW5mbycpOyB2YXIgX2dldEltcG9ydEV4cG9ydFNwZWNpZmllckluZm8yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZ2V0SW1wb3J0RXhwb3J0U3BlY2lmaWVySW5mbyk7XG52YXIgX2dldE5vblR5cGVJZGVudGlmaWVycyA9IHJlcXVpcmUoJy4vdXRpbC9nZXROb25UeXBlSWRlbnRpZmllcnMnKTtcblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuLyoqXG4gKiBDbGFzcyByZXNwb25zaWJsZSBmb3IgcHJlcHJvY2Vzc2luZyBhbmQgYm9va2tlZXBpbmcgaW1wb3J0IGFuZCBleHBvcnQgZGVjbGFyYXRpb25zIHdpdGhpbiB0aGVcbiAqIGZpbGUuXG4gKlxuICogVHlwZVNjcmlwdCB1c2VzIGEgc2ltcGxlciBtZWNoYW5pc20gdGhhdCBkb2VzIG5vdCB1c2UgZnVuY3Rpb25zIGxpa2UgaW50ZXJvcFJlcXVpcmVEZWZhdWx0IGFuZFxuICogaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCwgc28gd2UgYWxzbyBhbGxvdyB0aGF0IG1vZGUgZm9yIGNvbXBhdGliaWxpdHkuXG4gKi9cbiBjbGFzcyBDSlNJbXBvcnRQcm9jZXNzb3Ige1xuICAgX19pbml0KCkge3RoaXMubm9uVHlwZUlkZW50aWZpZXJzID0gbmV3IFNldCgpfVxuICAgX19pbml0MigpIHt0aGlzLmltcG9ydEluZm9CeVBhdGggPSBuZXcgTWFwKCl9XG4gICBfX2luaXQzKCkge3RoaXMuaW1wb3J0c1RvUmVwbGFjZSA9IG5ldyBNYXAoKX1cbiAgIF9faW5pdDQoKSB7dGhpcy5pZGVudGlmaWVyUmVwbGFjZW1lbnRzID0gbmV3IE1hcCgpfVxuICAgX19pbml0NSgpIHt0aGlzLmV4cG9ydEJpbmRpbmdzQnlMb2NhbE5hbWUgPSBuZXcgTWFwKCl9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgIG5hbWVNYW5hZ2VyLFxuICAgICB0b2tlbnMsXG4gICAgIGVuYWJsZUxlZ2FjeVR5cGVTY3JpcHRNb2R1bGVJbnRlcm9wLFxuICAgICBvcHRpb25zLFxuICAgICBpc1R5cGVTY3JpcHRUcmFuc2Zvcm1FbmFibGVkLFxuICAgICBrZWVwVW51c2VkSW1wb3J0cyxcbiAgICAgaGVscGVyTWFuYWdlcixcbiAgKSB7O3RoaXMubmFtZU1hbmFnZXIgPSBuYW1lTWFuYWdlcjt0aGlzLnRva2VucyA9IHRva2Vuczt0aGlzLmVuYWJsZUxlZ2FjeVR5cGVTY3JpcHRNb2R1bGVJbnRlcm9wID0gZW5hYmxlTGVnYWN5VHlwZVNjcmlwdE1vZHVsZUludGVyb3A7dGhpcy5vcHRpb25zID0gb3B0aW9uczt0aGlzLmlzVHlwZVNjcmlwdFRyYW5zZm9ybUVuYWJsZWQgPSBpc1R5cGVTY3JpcHRUcmFuc2Zvcm1FbmFibGVkO3RoaXMua2VlcFVudXNlZEltcG9ydHMgPSBrZWVwVW51c2VkSW1wb3J0czt0aGlzLmhlbHBlck1hbmFnZXIgPSBoZWxwZXJNYW5hZ2VyO0NKU0ltcG9ydFByb2Nlc3Nvci5wcm90b3R5cGUuX19pbml0LmNhbGwodGhpcyk7Q0pTSW1wb3J0UHJvY2Vzc29yLnByb3RvdHlwZS5fX2luaXQyLmNhbGwodGhpcyk7Q0pTSW1wb3J0UHJvY2Vzc29yLnByb3RvdHlwZS5fX2luaXQzLmNhbGwodGhpcyk7Q0pTSW1wb3J0UHJvY2Vzc29yLnByb3RvdHlwZS5fX2luaXQ0LmNhbGwodGhpcyk7Q0pTSW1wb3J0UHJvY2Vzc29yLnByb3RvdHlwZS5fX2luaXQ1LmNhbGwodGhpcyk7fVxuXG4gIHByZXByb2Nlc3NUb2tlbnMoKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnRva2Vucy50b2tlbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy50b2tlbnMubWF0Y2hlczFBdEluZGV4KGksIF90eXBlcy5Ub2tlblR5cGUuX2ltcG9ydCkgJiZcbiAgICAgICAgIXRoaXMudG9rZW5zLm1hdGNoZXMzQXRJbmRleChpLCBfdHlwZXMuVG9rZW5UeXBlLl9pbXBvcnQsIF90eXBlcy5Ub2tlblR5cGUubmFtZSwgX3R5cGVzLlRva2VuVHlwZS5lcSlcbiAgICAgICkge1xuICAgICAgICB0aGlzLnByZXByb2Nlc3NJbXBvcnRBdEluZGV4KGkpO1xuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICB0aGlzLnRva2Vucy5tYXRjaGVzMUF0SW5kZXgoaSwgX3R5cGVzLlRva2VuVHlwZS5fZXhwb3J0KSAmJlxuICAgICAgICAhdGhpcy50b2tlbnMubWF0Y2hlczJBdEluZGV4KGksIF90eXBlcy5Ub2tlblR5cGUuX2V4cG9ydCwgX3R5cGVzLlRva2VuVHlwZS5lcSlcbiAgICAgICkge1xuICAgICAgICB0aGlzLnByZXByb2Nlc3NFeHBvcnRBdEluZGV4KGkpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmdlbmVyYXRlSW1wb3J0UmVwbGFjZW1lbnRzKCk7XG4gIH1cblxuICAvKipcbiAgICogSW4gVHlwZVNjcmlwdCwgaW1wb3J0IHN0YXRlbWVudHMgdGhhdCBvbmx5IGltcG9ydCB0eXBlcyBzaG91bGQgYmUgcmVtb3ZlZC5cbiAgICogVGhpcyBpbmNsdWRlcyBgaW1wb3J0IHt9IGZyb20gJ2Zvbyc7YCwgYnV0IG5vdCBgaW1wb3J0ICdmb28nO2AuXG4gICAqL1xuICBwcnVuZVR5cGVPbmx5SW1wb3J0cygpIHtcbiAgICB0aGlzLm5vblR5cGVJZGVudGlmaWVycyA9IF9nZXROb25UeXBlSWRlbnRpZmllcnMuZ2V0Tm9uVHlwZUlkZW50aWZpZXJzLmNhbGwodm9pZCAwLCB0aGlzLnRva2VucywgdGhpcy5vcHRpb25zKTtcbiAgICBmb3IgKGNvbnN0IFtwYXRoLCBpbXBvcnRJbmZvXSBvZiB0aGlzLmltcG9ydEluZm9CeVBhdGguZW50cmllcygpKSB7XG4gICAgICBpZiAoXG4gICAgICAgIGltcG9ydEluZm8uaGFzQmFyZUltcG9ydCB8fFxuICAgICAgICBpbXBvcnRJbmZvLmhhc1N0YXJFeHBvcnQgfHxcbiAgICAgICAgaW1wb3J0SW5mby5leHBvcnRTdGFyTmFtZXMubGVuZ3RoID4gMCB8fFxuICAgICAgICBpbXBvcnRJbmZvLm5hbWVkRXhwb3J0cy5sZW5ndGggPiAwXG4gICAgICApIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBjb25zdCBuYW1lcyA9IFtcbiAgICAgICAgLi4uaW1wb3J0SW5mby5kZWZhdWx0TmFtZXMsXG4gICAgICAgIC4uLmltcG9ydEluZm8ud2lsZGNhcmROYW1lcyxcbiAgICAgICAgLi4uaW1wb3J0SW5mby5uYW1lZEltcG9ydHMubWFwKCh7bG9jYWxOYW1lfSkgPT4gbG9jYWxOYW1lKSxcbiAgICAgIF07XG4gICAgICBpZiAobmFtZXMuZXZlcnkoKG5hbWUpID0+IHRoaXMuc2hvdWxkQXV0b21hdGljYWxseUVsaWRlSW1wb3J0ZWROYW1lKG5hbWUpKSkge1xuICAgICAgICB0aGlzLmltcG9ydHNUb1JlcGxhY2Uuc2V0KHBhdGgsIFwiXCIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNob3VsZEF1dG9tYXRpY2FsbHlFbGlkZUltcG9ydGVkTmFtZShuYW1lKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuaXNUeXBlU2NyaXB0VHJhbnNmb3JtRW5hYmxlZCAmJlxuICAgICAgIXRoaXMua2VlcFVudXNlZEltcG9ydHMgJiZcbiAgICAgICF0aGlzLm5vblR5cGVJZGVudGlmaWVycy5oYXMobmFtZSlcbiAgICApO1xuICB9XG5cbiAgIGdlbmVyYXRlSW1wb3J0UmVwbGFjZW1lbnRzKCkge1xuICAgIGZvciAoY29uc3QgW3BhdGgsIGltcG9ydEluZm9dIG9mIHRoaXMuaW1wb3J0SW5mb0J5UGF0aC5lbnRyaWVzKCkpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgZGVmYXVsdE5hbWVzLFxuICAgICAgICB3aWxkY2FyZE5hbWVzLFxuICAgICAgICBuYW1lZEltcG9ydHMsXG4gICAgICAgIG5hbWVkRXhwb3J0cyxcbiAgICAgICAgZXhwb3J0U3Rhck5hbWVzLFxuICAgICAgICBoYXNTdGFyRXhwb3J0LFxuICAgICAgfSA9IGltcG9ydEluZm87XG5cbiAgICAgIGlmIChcbiAgICAgICAgZGVmYXVsdE5hbWVzLmxlbmd0aCA9PT0gMCAmJlxuICAgICAgICB3aWxkY2FyZE5hbWVzLmxlbmd0aCA9PT0gMCAmJlxuICAgICAgICBuYW1lZEltcG9ydHMubGVuZ3RoID09PSAwICYmXG4gICAgICAgIG5hbWVkRXhwb3J0cy5sZW5ndGggPT09IDAgJiZcbiAgICAgICAgZXhwb3J0U3Rhck5hbWVzLmxlbmd0aCA9PT0gMCAmJlxuICAgICAgICAhaGFzU3RhckV4cG9ydFxuICAgICAgKSB7XG4gICAgICAgIC8vIEltcG9ydCBpcyBuZXZlciB1c2VkLCBzbyBkb24ndCBldmVuIGFzc2lnbiBhIG5hbWUuXG4gICAgICAgIHRoaXMuaW1wb3J0c1RvUmVwbGFjZS5zZXQocGF0aCwgYHJlcXVpcmUoJyR7cGF0aH0nKTtgKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHByaW1hcnlJbXBvcnROYW1lID0gdGhpcy5nZXRGcmVlSWRlbnRpZmllckZvclBhdGgocGF0aCk7XG4gICAgICBsZXQgc2Vjb25kYXJ5SW1wb3J0TmFtZTtcbiAgICAgIGlmICh0aGlzLmVuYWJsZUxlZ2FjeVR5cGVTY3JpcHRNb2R1bGVJbnRlcm9wKSB7XG4gICAgICAgIHNlY29uZGFyeUltcG9ydE5hbWUgPSBwcmltYXJ5SW1wb3J0TmFtZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNlY29uZGFyeUltcG9ydE5hbWUgPVxuICAgICAgICAgIHdpbGRjYXJkTmFtZXMubGVuZ3RoID4gMCA/IHdpbGRjYXJkTmFtZXNbMF0gOiB0aGlzLmdldEZyZWVJZGVudGlmaWVyRm9yUGF0aChwYXRoKTtcbiAgICAgIH1cbiAgICAgIGxldCByZXF1aXJlQ29kZSA9IGB2YXIgJHtwcmltYXJ5SW1wb3J0TmFtZX0gPSByZXF1aXJlKCcke3BhdGh9Jyk7YDtcbiAgICAgIGlmICh3aWxkY2FyZE5hbWVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgZm9yIChjb25zdCB3aWxkY2FyZE5hbWUgb2Ygd2lsZGNhcmROYW1lcykge1xuICAgICAgICAgIGNvbnN0IG1vZHVsZUV4cHIgPSB0aGlzLmVuYWJsZUxlZ2FjeVR5cGVTY3JpcHRNb2R1bGVJbnRlcm9wXG4gICAgICAgICAgICA/IHByaW1hcnlJbXBvcnROYW1lXG4gICAgICAgICAgICA6IGAke3RoaXMuaGVscGVyTWFuYWdlci5nZXRIZWxwZXJOYW1lKFwiaW50ZXJvcFJlcXVpcmVXaWxkY2FyZFwiKX0oJHtwcmltYXJ5SW1wb3J0TmFtZX0pYDtcbiAgICAgICAgICByZXF1aXJlQ29kZSArPSBgIHZhciAke3dpbGRjYXJkTmFtZX0gPSAke21vZHVsZUV4cHJ9O2A7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoZXhwb3J0U3Rhck5hbWVzLmxlbmd0aCA+IDAgJiYgc2Vjb25kYXJ5SW1wb3J0TmFtZSAhPT0gcHJpbWFyeUltcG9ydE5hbWUpIHtcbiAgICAgICAgcmVxdWlyZUNvZGUgKz0gYCB2YXIgJHtzZWNvbmRhcnlJbXBvcnROYW1lfSA9ICR7dGhpcy5oZWxwZXJNYW5hZ2VyLmdldEhlbHBlck5hbWUoXG4gICAgICAgICAgXCJpbnRlcm9wUmVxdWlyZVdpbGRjYXJkXCIsXG4gICAgICAgICl9KCR7cHJpbWFyeUltcG9ydE5hbWV9KTtgO1xuICAgICAgfSBlbHNlIGlmIChkZWZhdWx0TmFtZXMubGVuZ3RoID4gMCAmJiBzZWNvbmRhcnlJbXBvcnROYW1lICE9PSBwcmltYXJ5SW1wb3J0TmFtZSkge1xuICAgICAgICByZXF1aXJlQ29kZSArPSBgIHZhciAke3NlY29uZGFyeUltcG9ydE5hbWV9ID0gJHt0aGlzLmhlbHBlck1hbmFnZXIuZ2V0SGVscGVyTmFtZShcbiAgICAgICAgICBcImludGVyb3BSZXF1aXJlRGVmYXVsdFwiLFxuICAgICAgICApfSgke3ByaW1hcnlJbXBvcnROYW1lfSk7YDtcbiAgICAgIH1cblxuICAgICAgZm9yIChjb25zdCB7aW1wb3J0ZWROYW1lLCBsb2NhbE5hbWV9IG9mIG5hbWVkRXhwb3J0cykge1xuICAgICAgICByZXF1aXJlQ29kZSArPSBgICR7dGhpcy5oZWxwZXJNYW5hZ2VyLmdldEhlbHBlck5hbWUoXG4gICAgICAgICAgXCJjcmVhdGVOYW1lZEV4cG9ydEZyb21cIixcbiAgICAgICAgKX0oJHtwcmltYXJ5SW1wb3J0TmFtZX0sICcke2xvY2FsTmFtZX0nLCAnJHtpbXBvcnRlZE5hbWV9Jyk7YDtcbiAgICAgIH1cbiAgICAgIGZvciAoY29uc3QgZXhwb3J0U3Rhck5hbWUgb2YgZXhwb3J0U3Rhck5hbWVzKSB7XG4gICAgICAgIHJlcXVpcmVDb2RlICs9IGAgZXhwb3J0cy4ke2V4cG9ydFN0YXJOYW1lfSA9ICR7c2Vjb25kYXJ5SW1wb3J0TmFtZX07YDtcbiAgICAgIH1cbiAgICAgIGlmIChoYXNTdGFyRXhwb3J0KSB7XG4gICAgICAgIHJlcXVpcmVDb2RlICs9IGAgJHt0aGlzLmhlbHBlck1hbmFnZXIuZ2V0SGVscGVyTmFtZShcbiAgICAgICAgICBcImNyZWF0ZVN0YXJFeHBvcnRcIixcbiAgICAgICAgKX0oJHtwcmltYXJ5SW1wb3J0TmFtZX0pO2A7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuaW1wb3J0c1RvUmVwbGFjZS5zZXQocGF0aCwgcmVxdWlyZUNvZGUpO1xuXG4gICAgICBmb3IgKGNvbnN0IGRlZmF1bHROYW1lIG9mIGRlZmF1bHROYW1lcykge1xuICAgICAgICB0aGlzLmlkZW50aWZpZXJSZXBsYWNlbWVudHMuc2V0KGRlZmF1bHROYW1lLCBgJHtzZWNvbmRhcnlJbXBvcnROYW1lfS5kZWZhdWx0YCk7XG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IHtpbXBvcnRlZE5hbWUsIGxvY2FsTmFtZX0gb2YgbmFtZWRJbXBvcnRzKSB7XG4gICAgICAgIHRoaXMuaWRlbnRpZmllclJlcGxhY2VtZW50cy5zZXQobG9jYWxOYW1lLCBgJHtwcmltYXJ5SW1wb3J0TmFtZX0uJHtpbXBvcnRlZE5hbWV9YCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0RnJlZUlkZW50aWZpZXJGb3JQYXRoKHBhdGgpIHtcbiAgICBjb25zdCBjb21wb25lbnRzID0gcGF0aC5zcGxpdChcIi9cIik7XG4gICAgY29uc3QgbGFzdENvbXBvbmVudCA9IGNvbXBvbmVudHNbY29tcG9uZW50cy5sZW5ndGggLSAxXTtcbiAgICBjb25zdCBiYXNlTmFtZSA9IGxhc3RDb21wb25lbnQucmVwbGFjZSgvXFxXL2csIFwiXCIpO1xuICAgIHJldHVybiB0aGlzLm5hbWVNYW5hZ2VyLmNsYWltRnJlZU5hbWUoYF8ke2Jhc2VOYW1lfWApO1xuICB9XG5cbiAgIHByZXByb2Nlc3NJbXBvcnRBdEluZGV4KGluZGV4KSB7XG4gICAgY29uc3QgZGVmYXVsdE5hbWVzID0gW107XG4gICAgY29uc3Qgd2lsZGNhcmROYW1lcyA9IFtdO1xuICAgIGNvbnN0IG5hbWVkSW1wb3J0cyA9IFtdO1xuXG4gICAgaW5kZXgrKztcbiAgICBpZiAoXG4gICAgICAodGhpcy50b2tlbnMubWF0Y2hlc0NvbnRleHR1YWxBdEluZGV4KGluZGV4LCBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX3R5cGUpIHx8XG4gICAgICAgIHRoaXMudG9rZW5zLm1hdGNoZXMxQXRJbmRleChpbmRleCwgX3R5cGVzLlRva2VuVHlwZS5fdHlwZW9mKSkgJiZcbiAgICAgICF0aGlzLnRva2Vucy5tYXRjaGVzMUF0SW5kZXgoaW5kZXggKyAxLCBfdHlwZXMuVG9rZW5UeXBlLmNvbW1hKSAmJlxuICAgICAgIXRoaXMudG9rZW5zLm1hdGNoZXNDb250ZXh0dWFsQXRJbmRleChpbmRleCArIDEsIF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fZnJvbSlcbiAgICApIHtcbiAgICAgIC8vIGltcG9ydCB0eXBlIGRlY2xhcmF0aW9uLCBzbyBubyBuZWVkIHRvIHByb2Nlc3MgYW55dGhpbmcuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudG9rZW5zLm1hdGNoZXMxQXRJbmRleChpbmRleCwgX3R5cGVzLlRva2VuVHlwZS5wYXJlbkwpKSB7XG4gICAgICAvLyBEeW5hbWljIGltcG9ydCwgc28gbm90aGluZyB0byBkb1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnRva2Vucy5tYXRjaGVzMUF0SW5kZXgoaW5kZXgsIF90eXBlcy5Ub2tlblR5cGUubmFtZSkpIHtcbiAgICAgIGRlZmF1bHROYW1lcy5wdXNoKHRoaXMudG9rZW5zLmlkZW50aWZpZXJOYW1lQXRJbmRleChpbmRleCkpO1xuICAgICAgaW5kZXgrKztcbiAgICAgIGlmICh0aGlzLnRva2Vucy5tYXRjaGVzMUF0SW5kZXgoaW5kZXgsIF90eXBlcy5Ub2tlblR5cGUuY29tbWEpKSB7XG4gICAgICAgIGluZGV4Kys7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudG9rZW5zLm1hdGNoZXMxQXRJbmRleChpbmRleCwgX3R5cGVzLlRva2VuVHlwZS5zdGFyKSkge1xuICAgICAgLy8gKiBhc1xuICAgICAgaW5kZXggKz0gMjtcbiAgICAgIHdpbGRjYXJkTmFtZXMucHVzaCh0aGlzLnRva2Vucy5pZGVudGlmaWVyTmFtZUF0SW5kZXgoaW5kZXgpKTtcbiAgICAgIGluZGV4Kys7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudG9rZW5zLm1hdGNoZXMxQXRJbmRleChpbmRleCwgX3R5cGVzLlRva2VuVHlwZS5icmFjZUwpKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmdldE5hbWVkSW1wb3J0cyhpbmRleCArIDEpO1xuICAgICAgaW5kZXggPSByZXN1bHQubmV3SW5kZXg7XG5cbiAgICAgIGZvciAoY29uc3QgbmFtZWRJbXBvcnQgb2YgcmVzdWx0Lm5hbWVkSW1wb3J0cykge1xuICAgICAgICAvLyBUcmVhdCB7ZGVmYXVsdCBhcyBYfSBhcyBhIGRlZmF1bHQgaW1wb3J0IHRvIGVuc3VyZSB1c2FnZSBvZiByZXF1aXJlIGludGVyb3AgaGVscGVyXG4gICAgICAgIGlmIChuYW1lZEltcG9ydC5pbXBvcnRlZE5hbWUgPT09IFwiZGVmYXVsdFwiKSB7XG4gICAgICAgICAgZGVmYXVsdE5hbWVzLnB1c2gobmFtZWRJbXBvcnQubG9jYWxOYW1lKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBuYW1lZEltcG9ydHMucHVzaChuYW1lZEltcG9ydCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy50b2tlbnMubWF0Y2hlc0NvbnRleHR1YWxBdEluZGV4KGluZGV4LCBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX2Zyb20pKSB7XG4gICAgICBpbmRleCsrO1xuICAgIH1cblxuICAgIGlmICghdGhpcy50b2tlbnMubWF0Y2hlczFBdEluZGV4KGluZGV4LCBfdHlwZXMuVG9rZW5UeXBlLnN0cmluZykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkV4cGVjdGVkIHN0cmluZyB0b2tlbiBhdCB0aGUgZW5kIG9mIGltcG9ydCBzdGF0ZW1lbnQuXCIpO1xuICAgIH1cbiAgICBjb25zdCBwYXRoID0gdGhpcy50b2tlbnMuc3RyaW5nVmFsdWVBdEluZGV4KGluZGV4KTtcbiAgICBjb25zdCBpbXBvcnRJbmZvID0gdGhpcy5nZXRJbXBvcnRJbmZvKHBhdGgpO1xuICAgIGltcG9ydEluZm8uZGVmYXVsdE5hbWVzLnB1c2goLi4uZGVmYXVsdE5hbWVzKTtcbiAgICBpbXBvcnRJbmZvLndpbGRjYXJkTmFtZXMucHVzaCguLi53aWxkY2FyZE5hbWVzKTtcbiAgICBpbXBvcnRJbmZvLm5hbWVkSW1wb3J0cy5wdXNoKC4uLm5hbWVkSW1wb3J0cyk7XG4gICAgaWYgKGRlZmF1bHROYW1lcy5sZW5ndGggPT09IDAgJiYgd2lsZGNhcmROYW1lcy5sZW5ndGggPT09IDAgJiYgbmFtZWRJbXBvcnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgaW1wb3J0SW5mby5oYXNCYXJlSW1wb3J0ID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICAgcHJlcHJvY2Vzc0V4cG9ydEF0SW5kZXgoaW5kZXgpIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLnRva2Vucy5tYXRjaGVzMkF0SW5kZXgoaW5kZXgsIF90eXBlcy5Ub2tlblR5cGUuX2V4cG9ydCwgX3R5cGVzLlRva2VuVHlwZS5fdmFyKSB8fFxuICAgICAgdGhpcy50b2tlbnMubWF0Y2hlczJBdEluZGV4KGluZGV4LCBfdHlwZXMuVG9rZW5UeXBlLl9leHBvcnQsIF90eXBlcy5Ub2tlblR5cGUuX2xldCkgfHxcbiAgICAgIHRoaXMudG9rZW5zLm1hdGNoZXMyQXRJbmRleChpbmRleCwgX3R5cGVzLlRva2VuVHlwZS5fZXhwb3J0LCBfdHlwZXMuVG9rZW5UeXBlLl9jb25zdClcbiAgICApIHtcbiAgICAgIHRoaXMucHJlcHJvY2Vzc1ZhckV4cG9ydEF0SW5kZXgoaW5kZXgpO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICB0aGlzLnRva2Vucy5tYXRjaGVzMkF0SW5kZXgoaW5kZXgsIF90eXBlcy5Ub2tlblR5cGUuX2V4cG9ydCwgX3R5cGVzLlRva2VuVHlwZS5fZnVuY3Rpb24pIHx8XG4gICAgICB0aGlzLnRva2Vucy5tYXRjaGVzMkF0SW5kZXgoaW5kZXgsIF90eXBlcy5Ub2tlblR5cGUuX2V4cG9ydCwgX3R5cGVzLlRva2VuVHlwZS5fY2xhc3MpXG4gICAgKSB7XG4gICAgICBjb25zdCBleHBvcnROYW1lID0gdGhpcy50b2tlbnMuaWRlbnRpZmllck5hbWVBdEluZGV4KGluZGV4ICsgMik7XG4gICAgICB0aGlzLmFkZEV4cG9ydEJpbmRpbmcoZXhwb3J0TmFtZSwgZXhwb3J0TmFtZSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnRva2Vucy5tYXRjaGVzM0F0SW5kZXgoaW5kZXgsIF90eXBlcy5Ub2tlblR5cGUuX2V4cG9ydCwgX3R5cGVzLlRva2VuVHlwZS5uYW1lLCBfdHlwZXMuVG9rZW5UeXBlLl9mdW5jdGlvbikpIHtcbiAgICAgIGNvbnN0IGV4cG9ydE5hbWUgPSB0aGlzLnRva2Vucy5pZGVudGlmaWVyTmFtZUF0SW5kZXgoaW5kZXggKyAzKTtcbiAgICAgIHRoaXMuYWRkRXhwb3J0QmluZGluZyhleHBvcnROYW1lLCBleHBvcnROYW1lKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMudG9rZW5zLm1hdGNoZXMyQXRJbmRleChpbmRleCwgX3R5cGVzLlRva2VuVHlwZS5fZXhwb3J0LCBfdHlwZXMuVG9rZW5UeXBlLmJyYWNlTCkpIHtcbiAgICAgIHRoaXMucHJlcHJvY2Vzc05hbWVkRXhwb3J0QXRJbmRleChpbmRleCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnRva2Vucy5tYXRjaGVzMkF0SW5kZXgoaW5kZXgsIF90eXBlcy5Ub2tlblR5cGUuX2V4cG9ydCwgX3R5cGVzLlRva2VuVHlwZS5zdGFyKSkge1xuICAgICAgdGhpcy5wcmVwcm9jZXNzRXhwb3J0U3RhckF0SW5kZXgoaW5kZXgpO1xuICAgIH1cbiAgfVxuXG4gICBwcmVwcm9jZXNzVmFyRXhwb3J0QXRJbmRleChpbmRleCkge1xuICAgIGxldCBkZXB0aCA9IDA7XG4gICAgLy8gSGFuZGxlIGNhc2VzIGxpa2UgYGV4cG9ydCBsZXQge3h9ID0geTtgLCBzdGFydGluZyBhdCB0aGUgb3Blbi1icmFjZSBpbiB0aGF0IGNhc2UuXG4gICAgZm9yIChsZXQgaSA9IGluZGV4ICsgMjsgOyBpKyspIHtcbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy50b2tlbnMubWF0Y2hlczFBdEluZGV4KGksIF90eXBlcy5Ub2tlblR5cGUuYnJhY2VMKSB8fFxuICAgICAgICB0aGlzLnRva2Vucy5tYXRjaGVzMUF0SW5kZXgoaSwgX3R5cGVzLlRva2VuVHlwZS5kb2xsYXJCcmFjZUwpIHx8XG4gICAgICAgIHRoaXMudG9rZW5zLm1hdGNoZXMxQXRJbmRleChpLCBfdHlwZXMuVG9rZW5UeXBlLmJyYWNrZXRMKVxuICAgICAgKSB7XG4gICAgICAgIGRlcHRoKys7XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICB0aGlzLnRva2Vucy5tYXRjaGVzMUF0SW5kZXgoaSwgX3R5cGVzLlRva2VuVHlwZS5icmFjZVIpIHx8XG4gICAgICAgIHRoaXMudG9rZW5zLm1hdGNoZXMxQXRJbmRleChpLCBfdHlwZXMuVG9rZW5UeXBlLmJyYWNrZXRSKVxuICAgICAgKSB7XG4gICAgICAgIGRlcHRoLS07XG4gICAgICB9IGVsc2UgaWYgKGRlcHRoID09PSAwICYmICF0aGlzLnRva2Vucy5tYXRjaGVzMUF0SW5kZXgoaSwgX3R5cGVzLlRva2VuVHlwZS5uYW1lKSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH0gZWxzZSBpZiAodGhpcy50b2tlbnMubWF0Y2hlczFBdEluZGV4KDEsIF90eXBlcy5Ub2tlblR5cGUuZXEpKSB7XG4gICAgICAgIGNvbnN0IGVuZEluZGV4ID0gdGhpcy50b2tlbnMuY3VycmVudFRva2VuKCkucmhzRW5kSW5kZXg7XG4gICAgICAgIGlmIChlbmRJbmRleCA9PSBudWxsKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRXhwZWN0ZWQgPSB0b2tlbiB3aXRoIGFuIGVuZCBpbmRleC5cIik7XG4gICAgICAgIH1cbiAgICAgICAgaSA9IGVuZEluZGV4IC0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHRva2VuID0gdGhpcy50b2tlbnMudG9rZW5zW2ldO1xuICAgICAgICBpZiAoX3Rva2VuaXplci5pc0RlY2xhcmF0aW9uLmNhbGwodm9pZCAwLCB0b2tlbikpIHtcbiAgICAgICAgICBjb25zdCBleHBvcnROYW1lID0gdGhpcy50b2tlbnMuaWRlbnRpZmllck5hbWVBdEluZGV4KGkpO1xuICAgICAgICAgIHRoaXMuaWRlbnRpZmllclJlcGxhY2VtZW50cy5zZXQoZXhwb3J0TmFtZSwgYGV4cG9ydHMuJHtleHBvcnROYW1lfWApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFdhbGsgdGhpcyBleHBvcnQgc3RhdGVtZW50IGp1c3QgaW4gY2FzZSBpdCdzIGFuIGV4cG9ydC4uLmZyb20gc3RhdGVtZW50LlxuICAgKiBJZiBpdCBpcywgY29tYmluZSBpdCBpbnRvIHRoZSBpbXBvcnQgaW5mbyBmb3IgdGhhdCBwYXRoLiBPdGhlcndpc2UsIGp1c3RcbiAgICogYmFpbCBvdXQ7IGl0J2xsIGJlIGhhbmRsZWQgbGF0ZXIuXG4gICAqL1xuICAgcHJlcHJvY2Vzc05hbWVkRXhwb3J0QXRJbmRleChpbmRleCkge1xuICAgIC8vIGV4cG9ydCB7XG4gICAgaW5kZXggKz0gMjtcbiAgICBjb25zdCB7bmV3SW5kZXgsIG5hbWVkSW1wb3J0c30gPSB0aGlzLmdldE5hbWVkSW1wb3J0cyhpbmRleCk7XG4gICAgaW5kZXggPSBuZXdJbmRleDtcblxuICAgIGlmICh0aGlzLnRva2Vucy5tYXRjaGVzQ29udGV4dHVhbEF0SW5kZXgoaW5kZXgsIF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fZnJvbSkpIHtcbiAgICAgIGluZGV4Kys7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFJlaW50ZXJwcmV0IFwiYSBhcyBiXCIgdG8gYmUgbG9jYWwvZXhwb3J0ZWQgcmF0aGVyIHRoYW4gaW1wb3J0ZWQvbG9jYWwuXG4gICAgICBmb3IgKGNvbnN0IHtpbXBvcnRlZE5hbWU6IGxvY2FsTmFtZSwgbG9jYWxOYW1lOiBleHBvcnRlZE5hbWV9IG9mIG5hbWVkSW1wb3J0cykge1xuICAgICAgICB0aGlzLmFkZEV4cG9ydEJpbmRpbmcobG9jYWxOYW1lLCBleHBvcnRlZE5hbWUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghdGhpcy50b2tlbnMubWF0Y2hlczFBdEluZGV4KGluZGV4LCBfdHlwZXMuVG9rZW5UeXBlLnN0cmluZykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkV4cGVjdGVkIHN0cmluZyB0b2tlbiBhdCB0aGUgZW5kIG9mIGltcG9ydCBzdGF0ZW1lbnQuXCIpO1xuICAgIH1cbiAgICBjb25zdCBwYXRoID0gdGhpcy50b2tlbnMuc3RyaW5nVmFsdWVBdEluZGV4KGluZGV4KTtcbiAgICBjb25zdCBpbXBvcnRJbmZvID0gdGhpcy5nZXRJbXBvcnRJbmZvKHBhdGgpO1xuICAgIGltcG9ydEluZm8ubmFtZWRFeHBvcnRzLnB1c2goLi4ubmFtZWRJbXBvcnRzKTtcbiAgfVxuXG4gICBwcmVwcm9jZXNzRXhwb3J0U3RhckF0SW5kZXgoaW5kZXgpIHtcbiAgICBsZXQgZXhwb3J0ZWROYW1lID0gbnVsbDtcbiAgICBpZiAodGhpcy50b2tlbnMubWF0Y2hlczNBdEluZGV4KGluZGV4LCBfdHlwZXMuVG9rZW5UeXBlLl9leHBvcnQsIF90eXBlcy5Ub2tlblR5cGUuc3RhciwgX3R5cGVzLlRva2VuVHlwZS5fYXMpKSB7XG4gICAgICAvLyBleHBvcnQgKiBhc1xuICAgICAgaW5kZXggKz0gMztcbiAgICAgIGV4cG9ydGVkTmFtZSA9IHRoaXMudG9rZW5zLmlkZW50aWZpZXJOYW1lQXRJbmRleChpbmRleCk7XG4gICAgICAvLyBmb28gZnJvbVxuICAgICAgaW5kZXggKz0gMjtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gZXhwb3J0ICogZnJvbVxuICAgICAgaW5kZXggKz0gMztcbiAgICB9XG4gICAgaWYgKCF0aGlzLnRva2Vucy5tYXRjaGVzMUF0SW5kZXgoaW5kZXgsIF90eXBlcy5Ub2tlblR5cGUuc3RyaW5nKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRXhwZWN0ZWQgc3RyaW5nIHRva2VuIGF0IHRoZSBlbmQgb2Ygc3RhciBleHBvcnQgc3RhdGVtZW50LlwiKTtcbiAgICB9XG4gICAgY29uc3QgcGF0aCA9IHRoaXMudG9rZW5zLnN0cmluZ1ZhbHVlQXRJbmRleChpbmRleCk7XG4gICAgY29uc3QgaW1wb3J0SW5mbyA9IHRoaXMuZ2V0SW1wb3J0SW5mbyhwYXRoKTtcbiAgICBpZiAoZXhwb3J0ZWROYW1lICE9PSBudWxsKSB7XG4gICAgICBpbXBvcnRJbmZvLmV4cG9ydFN0YXJOYW1lcy5wdXNoKGV4cG9ydGVkTmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGltcG9ydEluZm8uaGFzU3RhckV4cG9ydCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgIGdldE5hbWVkSW1wb3J0cyhpbmRleCkge1xuICAgIGNvbnN0IG5hbWVkSW1wb3J0cyA9IFtdO1xuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICBpZiAodGhpcy50b2tlbnMubWF0Y2hlczFBdEluZGV4KGluZGV4LCBfdHlwZXMuVG9rZW5UeXBlLmJyYWNlUikpIHtcbiAgICAgICAgaW5kZXgrKztcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHNwZWNpZmllckluZm8gPSBfZ2V0SW1wb3J0RXhwb3J0U3BlY2lmaWVySW5mbzIuZGVmYXVsdC5jYWxsKHZvaWQgMCwgdGhpcy50b2tlbnMsIGluZGV4KTtcbiAgICAgIGluZGV4ID0gc3BlY2lmaWVySW5mby5lbmRJbmRleDtcbiAgICAgIGlmICghc3BlY2lmaWVySW5mby5pc1R5cGUpIHtcbiAgICAgICAgbmFtZWRJbXBvcnRzLnB1c2goe1xuICAgICAgICAgIGltcG9ydGVkTmFtZTogc3BlY2lmaWVySW5mby5sZWZ0TmFtZSxcbiAgICAgICAgICBsb2NhbE5hbWU6IHNwZWNpZmllckluZm8ucmlnaHROYW1lLFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMudG9rZW5zLm1hdGNoZXMyQXRJbmRleChpbmRleCwgX3R5cGVzLlRva2VuVHlwZS5jb21tYSwgX3R5cGVzLlRva2VuVHlwZS5icmFjZVIpKSB7XG4gICAgICAgIGluZGV4ICs9IDI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnRva2Vucy5tYXRjaGVzMUF0SW5kZXgoaW5kZXgsIF90eXBlcy5Ub2tlblR5cGUuYnJhY2VSKSkge1xuICAgICAgICBpbmRleCsrO1xuICAgICAgICBicmVhaztcbiAgICAgIH0gZWxzZSBpZiAodGhpcy50b2tlbnMubWF0Y2hlczFBdEluZGV4KGluZGV4LCBfdHlwZXMuVG9rZW5UeXBlLmNvbW1hKSkge1xuICAgICAgICBpbmRleCsrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIHRva2VuOiAke0pTT04uc3RyaW5naWZ5KHRoaXMudG9rZW5zLnRva2Vuc1tpbmRleF0pfWApO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ge25ld0luZGV4OiBpbmRleCwgbmFtZWRJbXBvcnRzfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSBtdXRhYmxlIGltcG9ydCBpbmZvIG9iamVjdCBmb3IgdGhpcyBwYXRoLCBjcmVhdGluZyBvbmUgaWYgaXQgZG9lc24ndFxuICAgKiBleGlzdCB5ZXQuXG4gICAqL1xuICAgZ2V0SW1wb3J0SW5mbyhwYXRoKSB7XG4gICAgY29uc3QgZXhpc3RpbmdJbmZvID0gdGhpcy5pbXBvcnRJbmZvQnlQYXRoLmdldChwYXRoKTtcbiAgICBpZiAoZXhpc3RpbmdJbmZvKSB7XG4gICAgICByZXR1cm4gZXhpc3RpbmdJbmZvO1xuICAgIH1cbiAgICBjb25zdCBuZXdJbmZvID0ge1xuICAgICAgZGVmYXVsdE5hbWVzOiBbXSxcbiAgICAgIHdpbGRjYXJkTmFtZXM6IFtdLFxuICAgICAgbmFtZWRJbXBvcnRzOiBbXSxcbiAgICAgIG5hbWVkRXhwb3J0czogW10sXG4gICAgICBoYXNCYXJlSW1wb3J0OiBmYWxzZSxcbiAgICAgIGV4cG9ydFN0YXJOYW1lczogW10sXG4gICAgICBoYXNTdGFyRXhwb3J0OiBmYWxzZSxcbiAgICB9O1xuICAgIHRoaXMuaW1wb3J0SW5mb0J5UGF0aC5zZXQocGF0aCwgbmV3SW5mbyk7XG4gICAgcmV0dXJuIG5ld0luZm87XG4gIH1cblxuICAgYWRkRXhwb3J0QmluZGluZyhsb2NhbE5hbWUsIGV4cG9ydGVkTmFtZSkge1xuICAgIGlmICghdGhpcy5leHBvcnRCaW5kaW5nc0J5TG9jYWxOYW1lLmhhcyhsb2NhbE5hbWUpKSB7XG4gICAgICB0aGlzLmV4cG9ydEJpbmRpbmdzQnlMb2NhbE5hbWUuc2V0KGxvY2FsTmFtZSwgW10pO1xuICAgIH1cbiAgICB0aGlzLmV4cG9ydEJpbmRpbmdzQnlMb2NhbE5hbWUuZ2V0KGxvY2FsTmFtZSkucHVzaChleHBvcnRlZE5hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgY29kZSB0byB1c2UgZm9yIHRoZSBpbXBvcnQgZm9yIHRoaXMgcGF0aCwgb3IgdGhlIGVtcHR5IHN0cmluZyBpZlxuICAgKiB0aGUgY29kZSBoYXMgYWxyZWFkeSBiZWVuIFwiY2xhaW1lZFwiIGJ5IGEgcHJldmlvdXMgaW1wb3J0LlxuICAgKi9cbiAgY2xhaW1JbXBvcnRDb2RlKGltcG9ydFBhdGgpIHtcbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLmltcG9ydHNUb1JlcGxhY2UuZ2V0KGltcG9ydFBhdGgpO1xuICAgIHRoaXMuaW1wb3J0c1RvUmVwbGFjZS5zZXQoaW1wb3J0UGF0aCwgXCJcIik7XG4gICAgcmV0dXJuIHJlc3VsdCB8fCBcIlwiO1xuICB9XG5cbiAgZ2V0SWRlbnRpZmllclJlcGxhY2VtZW50KGlkZW50aWZpZXJOYW1lKSB7XG4gICAgcmV0dXJuIHRoaXMuaWRlbnRpZmllclJlcGxhY2VtZW50cy5nZXQoaWRlbnRpZmllck5hbWUpIHx8IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGEgc3RyaW5nIGxpa2UgYGV4cG9ydHMuZm9vID0gZXhwb3J0cy5iYXJgLlxuICAgKi9cbiAgcmVzb2x2ZUV4cG9ydEJpbmRpbmcoYXNzaWduZWROYW1lKSB7XG4gICAgY29uc3QgZXhwb3J0ZWROYW1lcyA9IHRoaXMuZXhwb3J0QmluZGluZ3NCeUxvY2FsTmFtZS5nZXQoYXNzaWduZWROYW1lKTtcbiAgICBpZiAoIWV4cG9ydGVkTmFtZXMgfHwgZXhwb3J0ZWROYW1lcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gZXhwb3J0ZWROYW1lcy5tYXAoKGV4cG9ydGVkTmFtZSkgPT4gYGV4cG9ydHMuJHtleHBvcnRlZE5hbWV9YCkuam9pbihcIiA9IFwiKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYWxsIGltcG9ydGVkL2V4cG9ydGVkIG5hbWVzIHdoZXJlIHdlIG1pZ2h0IGJlIGludGVyZXN0ZWQgaW4gd2hldGhlciB1c2FnZXMgb2YgdGhvc2VcbiAgICogbmFtZXMgYXJlIHNoYWRvd2VkLlxuICAgKi9cbiAgZ2V0R2xvYmFsTmFtZXMoKSB7XG4gICAgcmV0dXJuIG5ldyBTZXQoW1xuICAgICAgLi4udGhpcy5pZGVudGlmaWVyUmVwbGFjZW1lbnRzLmtleXMoKSxcbiAgICAgIC4uLnRoaXMuZXhwb3J0QmluZGluZ3NCeUxvY2FsTmFtZS5rZXlzKCksXG4gICAgXSk7XG4gIH1cbn0gZXhwb3J0cy5kZWZhdWx0ID0gQ0pTSW1wb3J0UHJvY2Vzc29yO1xuIiwgInR5cGUgS2V5ID0gc3RyaW5nIHwgbnVtYmVyIHwgc3ltYm9sO1xuXG4vKipcbiAqIFNldEFycmF5IGFjdHMgbGlrZSBhIGBTZXRgIChhbGxvd2luZyBvbmx5IG9uZSBvY2N1cnJlbmNlIG9mIGEgc3RyaW5nIGBrZXlgKSwgYnV0IHByb3ZpZGVzIHRoZVxuICogaW5kZXggb2YgdGhlIGBrZXlgIGluIHRoZSBiYWNraW5nIGFycmF5LlxuICpcbiAqIFRoaXMgaXMgZGVzaWduZWQgdG8gYWxsb3cgc3luY2hyb25pemluZyBhIHNlY29uZCBhcnJheSB3aXRoIHRoZSBjb250ZW50cyBvZiB0aGUgYmFja2luZyBhcnJheSxcbiAqIGxpa2UgaG93IGluIGEgc291cmNlbWFwIGBzb3VyY2VzQ29udGVudFtpXWAgaXMgdGhlIHNvdXJjZSBjb250ZW50IGFzc29jaWF0ZWQgd2l0aCBgc291cmNlW2ldYCxcbiAqIGFuZCB0aGVyZSBhcmUgbmV2ZXIgZHVwbGljYXRlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIFNldEFycmF5PFQgZXh0ZW5kcyBLZXkgPSBLZXk+IHtcbiAgcHJpdmF0ZSBkZWNsYXJlIF9pbmRleGVzOiBSZWNvcmQ8VCwgbnVtYmVyIHwgdW5kZWZpbmVkPjtcbiAgZGVjbGFyZSBhcnJheTogcmVhZG9ubHkgVFtdO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuX2luZGV4ZXMgPSB7IF9fcHJvdG9fXzogbnVsbCB9IGFzIGFueTtcbiAgICB0aGlzLmFycmF5ID0gW107XG4gIH1cbn1cblxuaW50ZXJmYWNlIFB1YmxpY1NldDxUIGV4dGVuZHMgS2V5PiB7XG4gIGFycmF5OiBUW107XG4gIF9pbmRleGVzOiBTZXRBcnJheTxUPlsnX2luZGV4ZXMnXTtcbn1cblxuLyoqXG4gKiBUeXBlc2NyaXB0IGRvZXNuJ3QgYWxsb3cgZnJpZW5kIGFjY2VzcyB0byBwcml2YXRlIGZpZWxkcywgc28gdGhpcyBqdXN0IGNhc3RzIHRoZSBzZXQgaW50byBhIHR5cGVcbiAqIHdpdGggcHVibGljIGFjY2VzcyBtb2RpZmllcnMuXG4gKi9cbmZ1bmN0aW9uIGNhc3Q8VCBleHRlbmRzIEtleT4oc2V0OiBTZXRBcnJheTxUPik6IFB1YmxpY1NldDxUPiB7XG4gIHJldHVybiBzZXQgYXMgYW55O1xufVxuXG4vKipcbiAqIEdldHMgdGhlIGluZGV4IGFzc29jaWF0ZWQgd2l0aCBga2V5YCBpbiB0aGUgYmFja2luZyBhcnJheSwgaWYgaXQgaXMgYWxyZWFkeSBwcmVzZW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0PFQgZXh0ZW5kcyBLZXk+KHNldGFycjogU2V0QXJyYXk8VD4sIGtleTogVCk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBjYXN0KHNldGFycikuX2luZGV4ZXNba2V5XTtcbn1cblxuLyoqXG4gKiBQdXRzIGBrZXlgIGludG8gdGhlIGJhY2tpbmcgYXJyYXksIGlmIGl0IGlzIG5vdCBhbHJlYWR5IHByZXNlbnQuIFJldHVybnNcbiAqIHRoZSBpbmRleCBvZiB0aGUgYGtleWAgaW4gdGhlIGJhY2tpbmcgYXJyYXkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwdXQ8VCBleHRlbmRzIEtleT4oc2V0YXJyOiBTZXRBcnJheTxUPiwga2V5OiBUKTogbnVtYmVyIHtcbiAgLy8gVGhlIGtleSBtYXkgb3IgbWF5IG5vdCBiZSBwcmVzZW50LiBJZiBpdCBpcyBwcmVzZW50LCBpdCdzIGEgbnVtYmVyLlxuICBjb25zdCBpbmRleCA9IGdldChzZXRhcnIsIGtleSk7XG4gIGlmIChpbmRleCAhPT0gdW5kZWZpbmVkKSByZXR1cm4gaW5kZXg7XG5cbiAgY29uc3QgeyBhcnJheSwgX2luZGV4ZXM6IGluZGV4ZXMgfSA9IGNhc3Qoc2V0YXJyKTtcblxuICBjb25zdCBsZW5ndGggPSBhcnJheS5wdXNoKGtleSk7XG4gIHJldHVybiAoaW5kZXhlc1trZXldID0gbGVuZ3RoIC0gMSk7XG59XG5cbi8qKlxuICogUG9wcyB0aGUgbGFzdCBhZGRlZCBpdGVtIG91dCBvZiB0aGUgU2V0QXJyYXkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwb3A8VCBleHRlbmRzIEtleT4oc2V0YXJyOiBTZXRBcnJheTxUPik6IHZvaWQge1xuICBjb25zdCB7IGFycmF5LCBfaW5kZXhlczogaW5kZXhlcyB9ID0gY2FzdChzZXRhcnIpO1xuICBpZiAoYXJyYXkubGVuZ3RoID09PSAwKSByZXR1cm47XG5cbiAgY29uc3QgbGFzdCA9IGFycmF5LnBvcCgpITtcbiAgaW5kZXhlc1tsYXN0XSA9IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBSZW1vdmVzIHRoZSBrZXksIGlmIGl0IGV4aXN0cyBpbiB0aGUgc2V0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlPFQgZXh0ZW5kcyBLZXk+KHNldGFycjogU2V0QXJyYXk8VD4sIGtleTogVCk6IHZvaWQge1xuICBjb25zdCBpbmRleCA9IGdldChzZXRhcnIsIGtleSk7XG4gIGlmIChpbmRleCA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG5cbiAgY29uc3QgeyBhcnJheSwgX2luZGV4ZXM6IGluZGV4ZXMgfSA9IGNhc3Qoc2V0YXJyKTtcbiAgZm9yIChsZXQgaSA9IGluZGV4ICsgMTsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgayA9IGFycmF5W2ldO1xuICAgIGFycmF5W2kgLSAxXSA9IGs7XG4gICAgaW5kZXhlc1trXSEtLTtcbiAgfVxuICBpbmRleGVzW2tleV0gPSB1bmRlZmluZWQ7XG4gIGFycmF5LnBvcCgpO1xufVxuIiwgImltcG9ydCB0eXBlIHsgU3RyaW5nUmVhZGVyLCBTdHJpbmdXcml0ZXIgfSBmcm9tICcuL3N0cmluZ3MnO1xuXG5leHBvcnQgY29uc3QgY29tbWEgPSAnLCcuY2hhckNvZGVBdCgwKTtcbmV4cG9ydCBjb25zdCBzZW1pY29sb24gPSAnOycuY2hhckNvZGVBdCgwKTtcblxuY29uc3QgY2hhcnMgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyc7XG5jb25zdCBpbnRUb0NoYXIgPSBuZXcgVWludDhBcnJheSg2NCk7IC8vIDY0IHBvc3NpYmxlIGNoYXJzLlxuY29uc3QgY2hhclRvSW50ID0gbmV3IFVpbnQ4QXJyYXkoMTI4KTsgLy8geiBpcyAxMjIgaW4gQVNDSUlcblxuZm9yIChsZXQgaSA9IDA7IGkgPCBjaGFycy5sZW5ndGg7IGkrKykge1xuICBjb25zdCBjID0gY2hhcnMuY2hhckNvZGVBdChpKTtcbiAgaW50VG9DaGFyW2ldID0gYztcbiAgY2hhclRvSW50W2NdID0gaTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZUludGVnZXIocmVhZGVyOiBTdHJpbmdSZWFkZXIsIHJlbGF0aXZlOiBudW1iZXIpOiBudW1iZXIge1xuICBsZXQgdmFsdWUgPSAwO1xuICBsZXQgc2hpZnQgPSAwO1xuICBsZXQgaW50ZWdlciA9IDA7XG5cbiAgZG8ge1xuICAgIGNvbnN0IGMgPSByZWFkZXIubmV4dCgpO1xuICAgIGludGVnZXIgPSBjaGFyVG9JbnRbY107XG4gICAgdmFsdWUgfD0gKGludGVnZXIgJiAzMSkgPDwgc2hpZnQ7XG4gICAgc2hpZnQgKz0gNTtcbiAgfSB3aGlsZSAoaW50ZWdlciAmIDMyKTtcblxuICBjb25zdCBzaG91bGROZWdhdGUgPSB2YWx1ZSAmIDE7XG4gIHZhbHVlID4+Pj0gMTtcblxuICBpZiAoc2hvdWxkTmVnYXRlKSB7XG4gICAgdmFsdWUgPSAtMHg4MDAwMDAwMCB8IC12YWx1ZTtcbiAgfVxuXG4gIHJldHVybiByZWxhdGl2ZSArIHZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZW5jb2RlSW50ZWdlcihidWlsZGVyOiBTdHJpbmdXcml0ZXIsIG51bTogbnVtYmVyLCByZWxhdGl2ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgbGV0IGRlbHRhID0gbnVtIC0gcmVsYXRpdmU7XG5cbiAgZGVsdGEgPSBkZWx0YSA8IDAgPyAoLWRlbHRhIDw8IDEpIHwgMSA6IGRlbHRhIDw8IDE7XG4gIGRvIHtcbiAgICBsZXQgY2xhbXBlZCA9IGRlbHRhICYgMGIwMTExMTE7XG4gICAgZGVsdGEgPj4+PSA1O1xuICAgIGlmIChkZWx0YSA+IDApIGNsYW1wZWQgfD0gMGIxMDAwMDA7XG4gICAgYnVpbGRlci53cml0ZShpbnRUb0NoYXJbY2xhbXBlZF0pO1xuICB9IHdoaWxlIChkZWx0YSA+IDApO1xuXG4gIHJldHVybiBudW07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYXNNb3JlVmxxKHJlYWRlcjogU3RyaW5nUmVhZGVyLCBtYXg6IG51bWJlcikge1xuICBpZiAocmVhZGVyLnBvcyA+PSBtYXgpIHJldHVybiBmYWxzZTtcbiAgcmV0dXJuIHJlYWRlci5wZWVrKCkgIT09IGNvbW1hO1xufVxuIiwgImNvbnN0IGJ1Zkxlbmd0aCA9IDEwMjQgKiAxNjtcblxuLy8gUHJvdmlkZSBhIGZhbGxiYWNrIGZvciBvbGRlciBlbnZpcm9ubWVudHMuXG5jb25zdCB0ZCA9XG4gIHR5cGVvZiBUZXh0RGVjb2RlciAhPT0gJ3VuZGVmaW5lZCdcbiAgICA/IC8qICNfX1BVUkVfXyAqLyBuZXcgVGV4dERlY29kZXIoKVxuICAgIDogdHlwZW9mIEJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCdcbiAgICA/IHtcbiAgICAgICAgZGVjb2RlKGJ1ZjogVWludDhBcnJheSk6IHN0cmluZyB7XG4gICAgICAgICAgY29uc3Qgb3V0ID0gQnVmZmVyLmZyb20oYnVmLmJ1ZmZlciwgYnVmLmJ5dGVPZmZzZXQsIGJ1Zi5ieXRlTGVuZ3RoKTtcbiAgICAgICAgICByZXR1cm4gb3V0LnRvU3RyaW5nKCk7XG4gICAgICAgIH0sXG4gICAgICB9XG4gICAgOiB7XG4gICAgICAgIGRlY29kZShidWY6IFVpbnQ4QXJyYXkpOiBzdHJpbmcge1xuICAgICAgICAgIGxldCBvdXQgPSAnJztcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJ1Zi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgb3V0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnVmW2ldKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG91dDtcbiAgICAgICAgfSxcbiAgICAgIH07XG5cbmV4cG9ydCBjbGFzcyBTdHJpbmdXcml0ZXIge1xuICBwb3MgPSAwO1xuICBwcml2YXRlIG91dCA9ICcnO1xuICBwcml2YXRlIGJ1ZmZlciA9IG5ldyBVaW50OEFycmF5KGJ1Zkxlbmd0aCk7XG5cbiAgd3JpdGUodjogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3QgeyBidWZmZXIgfSA9IHRoaXM7XG4gICAgYnVmZmVyW3RoaXMucG9zKytdID0gdjtcbiAgICBpZiAodGhpcy5wb3MgPT09IGJ1Zkxlbmd0aCkge1xuICAgICAgdGhpcy5vdXQgKz0gdGQuZGVjb2RlKGJ1ZmZlcik7XG4gICAgICB0aGlzLnBvcyA9IDA7XG4gICAgfVxuICB9XG5cbiAgZmx1c2goKTogc3RyaW5nIHtcbiAgICBjb25zdCB7IGJ1ZmZlciwgb3V0LCBwb3MgfSA9IHRoaXM7XG4gICAgcmV0dXJuIHBvcyA+IDAgPyBvdXQgKyB0ZC5kZWNvZGUoYnVmZmVyLnN1YmFycmF5KDAsIHBvcykpIDogb3V0O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTdHJpbmdSZWFkZXIge1xuICBwb3MgPSAwO1xuICBwcml2YXRlIGRlY2xhcmUgYnVmZmVyOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoYnVmZmVyOiBzdHJpbmcpIHtcbiAgICB0aGlzLmJ1ZmZlciA9IGJ1ZmZlcjtcbiAgfVxuXG4gIG5leHQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5idWZmZXIuY2hhckNvZGVBdCh0aGlzLnBvcysrKTtcbiAgfVxuXG4gIHBlZWsoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5idWZmZXIuY2hhckNvZGVBdCh0aGlzLnBvcyk7XG4gIH1cblxuICBpbmRleE9mKGNoYXI6IHN0cmluZyk6IG51bWJlciB7XG4gICAgY29uc3QgeyBidWZmZXIsIHBvcyB9ID0gdGhpcztcbiAgICBjb25zdCBpZHggPSBidWZmZXIuaW5kZXhPZihjaGFyLCBwb3MpO1xuICAgIHJldHVybiBpZHggPT09IC0xID8gYnVmZmVyLmxlbmd0aCA6IGlkeDtcbiAgfVxufVxuIiwgImltcG9ydCB7IFN0cmluZ1JlYWRlciwgU3RyaW5nV3JpdGVyIH0gZnJvbSAnLi9zdHJpbmdzJztcbmltcG9ydCB7IGNvbW1hLCBkZWNvZGVJbnRlZ2VyLCBlbmNvZGVJbnRlZ2VyLCBoYXNNb3JlVmxxLCBzZW1pY29sb24gfSBmcm9tICcuL3ZscSc7XG5cbmNvbnN0IEVNUFRZOiBhbnlbXSA9IFtdO1xuXG50eXBlIExpbmUgPSBudW1iZXI7XG50eXBlIENvbHVtbiA9IG51bWJlcjtcbnR5cGUgS2luZCA9IG51bWJlcjtcbnR5cGUgTmFtZSA9IG51bWJlcjtcbnR5cGUgVmFyID0gbnVtYmVyO1xudHlwZSBTb3VyY2VzSW5kZXggPSBudW1iZXI7XG50eXBlIFNjb3Blc0luZGV4ID0gbnVtYmVyO1xuXG50eXBlIE1peDxBLCBCLCBPPiA9IChBICYgTykgfCAoQiAmIE8pO1xuXG5leHBvcnQgdHlwZSBPcmlnaW5hbFNjb3BlID0gTWl4PFxuICBbTGluZSwgQ29sdW1uLCBMaW5lLCBDb2x1bW4sIEtpbmRdLFxuICBbTGluZSwgQ29sdW1uLCBMaW5lLCBDb2x1bW4sIEtpbmQsIE5hbWVdLFxuICB7IHZhcnM6IFZhcltdIH1cbj47XG5cbmV4cG9ydCB0eXBlIEdlbmVyYXRlZFJhbmdlID0gTWl4PFxuICBbTGluZSwgQ29sdW1uLCBMaW5lLCBDb2x1bW5dLFxuICBbTGluZSwgQ29sdW1uLCBMaW5lLCBDb2x1bW4sIFNvdXJjZXNJbmRleCwgU2NvcGVzSW5kZXhdLFxuICB7XG4gICAgY2FsbHNpdGU6IENhbGxTaXRlIHwgbnVsbDtcbiAgICBiaW5kaW5nczogQmluZGluZ1tdO1xuICAgIGlzU2NvcGU6IGJvb2xlYW47XG4gIH1cbj47XG5leHBvcnQgdHlwZSBDYWxsU2l0ZSA9IFtTb3VyY2VzSW5kZXgsIExpbmUsIENvbHVtbl07XG50eXBlIEJpbmRpbmcgPSBCaW5kaW5nRXhwcmVzc2lvblJhbmdlW107XG5leHBvcnQgdHlwZSBCaW5kaW5nRXhwcmVzc2lvblJhbmdlID0gW05hbWVdIHwgW05hbWUsIExpbmUsIENvbHVtbl07XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVPcmlnaW5hbFNjb3BlcyhpbnB1dDogc3RyaW5nKTogT3JpZ2luYWxTY29wZVtdIHtcbiAgY29uc3QgeyBsZW5ndGggfSA9IGlucHV0O1xuICBjb25zdCByZWFkZXIgPSBuZXcgU3RyaW5nUmVhZGVyKGlucHV0KTtcbiAgY29uc3Qgc2NvcGVzOiBPcmlnaW5hbFNjb3BlW10gPSBbXTtcbiAgY29uc3Qgc3RhY2s6IE9yaWdpbmFsU2NvcGVbXSA9IFtdO1xuICBsZXQgbGluZSA9IDA7XG5cbiAgZm9yICg7IHJlYWRlci5wb3MgPCBsZW5ndGg7IHJlYWRlci5wb3MrKykge1xuICAgIGxpbmUgPSBkZWNvZGVJbnRlZ2VyKHJlYWRlciwgbGluZSk7XG4gICAgY29uc3QgY29sdW1uID0gZGVjb2RlSW50ZWdlcihyZWFkZXIsIDApO1xuXG4gICAgaWYgKCFoYXNNb3JlVmxxKHJlYWRlciwgbGVuZ3RoKSkge1xuICAgICAgY29uc3QgbGFzdCA9IHN0YWNrLnBvcCgpITtcbiAgICAgIGxhc3RbMl0gPSBsaW5lO1xuICAgICAgbGFzdFszXSA9IGNvbHVtbjtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGtpbmQgPSBkZWNvZGVJbnRlZ2VyKHJlYWRlciwgMCk7XG4gICAgY29uc3QgZmllbGRzID0gZGVjb2RlSW50ZWdlcihyZWFkZXIsIDApO1xuICAgIGNvbnN0IGhhc05hbWUgPSBmaWVsZHMgJiAwYjAwMDE7XG5cbiAgICBjb25zdCBzY29wZTogT3JpZ2luYWxTY29wZSA9IChcbiAgICAgIGhhc05hbWUgPyBbbGluZSwgY29sdW1uLCAwLCAwLCBraW5kLCBkZWNvZGVJbnRlZ2VyKHJlYWRlciwgMCldIDogW2xpbmUsIGNvbHVtbiwgMCwgMCwga2luZF1cbiAgICApIGFzIE9yaWdpbmFsU2NvcGU7XG5cbiAgICBsZXQgdmFyczogVmFyW10gPSBFTVBUWTtcbiAgICBpZiAoaGFzTW9yZVZscShyZWFkZXIsIGxlbmd0aCkpIHtcbiAgICAgIHZhcnMgPSBbXTtcbiAgICAgIGRvIHtcbiAgICAgICAgY29uc3QgdmFyc0luZGV4ID0gZGVjb2RlSW50ZWdlcihyZWFkZXIsIDApO1xuICAgICAgICB2YXJzLnB1c2godmFyc0luZGV4KTtcbiAgICAgIH0gd2hpbGUgKGhhc01vcmVWbHEocmVhZGVyLCBsZW5ndGgpKTtcbiAgICB9XG4gICAgc2NvcGUudmFycyA9IHZhcnM7XG5cbiAgICBzY29wZXMucHVzaChzY29wZSk7XG4gICAgc3RhY2sucHVzaChzY29wZSk7XG4gIH1cblxuICByZXR1cm4gc2NvcGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZW5jb2RlT3JpZ2luYWxTY29wZXMoc2NvcGVzOiBPcmlnaW5hbFNjb3BlW10pOiBzdHJpbmcge1xuICBjb25zdCB3cml0ZXIgPSBuZXcgU3RyaW5nV3JpdGVyKCk7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzY29wZXMubGVuZ3RoOyApIHtcbiAgICBpID0gX2VuY29kZU9yaWdpbmFsU2NvcGVzKHNjb3BlcywgaSwgd3JpdGVyLCBbMF0pO1xuICB9XG5cbiAgcmV0dXJuIHdyaXRlci5mbHVzaCgpO1xufVxuXG5mdW5jdGlvbiBfZW5jb2RlT3JpZ2luYWxTY29wZXMoXG4gIHNjb3BlczogT3JpZ2luYWxTY29wZVtdLFxuICBpbmRleDogbnVtYmVyLFxuICB3cml0ZXI6IFN0cmluZ1dyaXRlcixcbiAgc3RhdGU6IFtcbiAgICBudW1iZXIsIC8vIEdlbkNvbHVtblxuICBdLFxuKTogbnVtYmVyIHtcbiAgY29uc3Qgc2NvcGUgPSBzY29wZXNbaW5kZXhdO1xuICBjb25zdCB7IDA6IHN0YXJ0TGluZSwgMTogc3RhcnRDb2x1bW4sIDI6IGVuZExpbmUsIDM6IGVuZENvbHVtbiwgNDoga2luZCwgdmFycyB9ID0gc2NvcGU7XG5cbiAgaWYgKGluZGV4ID4gMCkgd3JpdGVyLndyaXRlKGNvbW1hKTtcblxuICBzdGF0ZVswXSA9IGVuY29kZUludGVnZXIod3JpdGVyLCBzdGFydExpbmUsIHN0YXRlWzBdKTtcbiAgZW5jb2RlSW50ZWdlcih3cml0ZXIsIHN0YXJ0Q29sdW1uLCAwKTtcbiAgZW5jb2RlSW50ZWdlcih3cml0ZXIsIGtpbmQsIDApO1xuXG4gIGNvbnN0IGZpZWxkcyA9IHNjb3BlLmxlbmd0aCA9PT0gNiA/IDBiMDAwMSA6IDA7XG4gIGVuY29kZUludGVnZXIod3JpdGVyLCBmaWVsZHMsIDApO1xuICBpZiAoc2NvcGUubGVuZ3RoID09PSA2KSBlbmNvZGVJbnRlZ2VyKHdyaXRlciwgc2NvcGVbNV0sIDApO1xuXG4gIGZvciAoY29uc3QgdiBvZiB2YXJzKSB7XG4gICAgZW5jb2RlSW50ZWdlcih3cml0ZXIsIHYsIDApO1xuICB9XG5cbiAgZm9yIChpbmRleCsrOyBpbmRleCA8IHNjb3Blcy5sZW5ndGg7ICkge1xuICAgIGNvbnN0IG5leHQgPSBzY29wZXNbaW5kZXhdO1xuICAgIGNvbnN0IHsgMDogbCwgMTogYyB9ID0gbmV4dDtcbiAgICBpZiAobCA+IGVuZExpbmUgfHwgKGwgPT09IGVuZExpbmUgJiYgYyA+PSBlbmRDb2x1bW4pKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgaW5kZXggPSBfZW5jb2RlT3JpZ2luYWxTY29wZXMoc2NvcGVzLCBpbmRleCwgd3JpdGVyLCBzdGF0ZSk7XG4gIH1cblxuICB3cml0ZXIud3JpdGUoY29tbWEpO1xuICBzdGF0ZVswXSA9IGVuY29kZUludGVnZXIod3JpdGVyLCBlbmRMaW5lLCBzdGF0ZVswXSk7XG4gIGVuY29kZUludGVnZXIod3JpdGVyLCBlbmRDb2x1bW4sIDApO1xuXG4gIHJldHVybiBpbmRleDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZUdlbmVyYXRlZFJhbmdlcyhpbnB1dDogc3RyaW5nKTogR2VuZXJhdGVkUmFuZ2VbXSB7XG4gIGNvbnN0IHsgbGVuZ3RoIH0gPSBpbnB1dDtcbiAgY29uc3QgcmVhZGVyID0gbmV3IFN0cmluZ1JlYWRlcihpbnB1dCk7XG4gIGNvbnN0IHJhbmdlczogR2VuZXJhdGVkUmFuZ2VbXSA9IFtdO1xuICBjb25zdCBzdGFjazogR2VuZXJhdGVkUmFuZ2VbXSA9IFtdO1xuXG4gIGxldCBnZW5MaW5lID0gMDtcbiAgbGV0IGRlZmluaXRpb25Tb3VyY2VzSW5kZXggPSAwO1xuICBsZXQgZGVmaW5pdGlvblNjb3BlSW5kZXggPSAwO1xuICBsZXQgY2FsbHNpdGVTb3VyY2VzSW5kZXggPSAwO1xuICBsZXQgY2FsbHNpdGVMaW5lID0gMDtcbiAgbGV0IGNhbGxzaXRlQ29sdW1uID0gMDtcbiAgbGV0IGJpbmRpbmdMaW5lID0gMDtcbiAgbGV0IGJpbmRpbmdDb2x1bW4gPSAwO1xuXG4gIGRvIHtcbiAgICBjb25zdCBzZW1pID0gcmVhZGVyLmluZGV4T2YoJzsnKTtcbiAgICBsZXQgZ2VuQ29sdW1uID0gMDtcblxuICAgIGZvciAoOyByZWFkZXIucG9zIDwgc2VtaTsgcmVhZGVyLnBvcysrKSB7XG4gICAgICBnZW5Db2x1bW4gPSBkZWNvZGVJbnRlZ2VyKHJlYWRlciwgZ2VuQ29sdW1uKTtcblxuICAgICAgaWYgKCFoYXNNb3JlVmxxKHJlYWRlciwgc2VtaSkpIHtcbiAgICAgICAgY29uc3QgbGFzdCA9IHN0YWNrLnBvcCgpITtcbiAgICAgICAgbGFzdFsyXSA9IGdlbkxpbmU7XG4gICAgICAgIGxhc3RbM10gPSBnZW5Db2x1bW47XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBmaWVsZHMgPSBkZWNvZGVJbnRlZ2VyKHJlYWRlciwgMCk7XG4gICAgICBjb25zdCBoYXNEZWZpbml0aW9uID0gZmllbGRzICYgMGIwMDAxO1xuICAgICAgY29uc3QgaGFzQ2FsbHNpdGUgPSBmaWVsZHMgJiAwYjAwMTA7XG4gICAgICBjb25zdCBoYXNTY29wZSA9IGZpZWxkcyAmIDBiMDEwMDtcblxuICAgICAgbGV0IGNhbGxzaXRlOiBDYWxsU2l0ZSB8IG51bGwgPSBudWxsO1xuICAgICAgbGV0IGJpbmRpbmdzOiBCaW5kaW5nW10gPSBFTVBUWTtcbiAgICAgIGxldCByYW5nZTogR2VuZXJhdGVkUmFuZ2U7XG4gICAgICBpZiAoaGFzRGVmaW5pdGlvbikge1xuICAgICAgICBjb25zdCBkZWZTb3VyY2VzSW5kZXggPSBkZWNvZGVJbnRlZ2VyKHJlYWRlciwgZGVmaW5pdGlvblNvdXJjZXNJbmRleCk7XG4gICAgICAgIGRlZmluaXRpb25TY29wZUluZGV4ID0gZGVjb2RlSW50ZWdlcihcbiAgICAgICAgICByZWFkZXIsXG4gICAgICAgICAgZGVmaW5pdGlvblNvdXJjZXNJbmRleCA9PT0gZGVmU291cmNlc0luZGV4ID8gZGVmaW5pdGlvblNjb3BlSW5kZXggOiAwLFxuICAgICAgICApO1xuXG4gICAgICAgIGRlZmluaXRpb25Tb3VyY2VzSW5kZXggPSBkZWZTb3VyY2VzSW5kZXg7XG4gICAgICAgIHJhbmdlID0gW2dlbkxpbmUsIGdlbkNvbHVtbiwgMCwgMCwgZGVmU291cmNlc0luZGV4LCBkZWZpbml0aW9uU2NvcGVJbmRleF0gYXMgR2VuZXJhdGVkUmFuZ2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByYW5nZSA9IFtnZW5MaW5lLCBnZW5Db2x1bW4sIDAsIDBdIGFzIEdlbmVyYXRlZFJhbmdlO1xuICAgICAgfVxuXG4gICAgICByYW5nZS5pc1Njb3BlID0gISFoYXNTY29wZTtcblxuICAgICAgaWYgKGhhc0NhbGxzaXRlKSB7XG4gICAgICAgIGNvbnN0IHByZXZDc2kgPSBjYWxsc2l0ZVNvdXJjZXNJbmRleDtcbiAgICAgICAgY29uc3QgcHJldkxpbmUgPSBjYWxsc2l0ZUxpbmU7XG4gICAgICAgIGNhbGxzaXRlU291cmNlc0luZGV4ID0gZGVjb2RlSW50ZWdlcihyZWFkZXIsIGNhbGxzaXRlU291cmNlc0luZGV4KTtcbiAgICAgICAgY29uc3Qgc2FtZVNvdXJjZSA9IHByZXZDc2kgPT09IGNhbGxzaXRlU291cmNlc0luZGV4O1xuICAgICAgICBjYWxsc2l0ZUxpbmUgPSBkZWNvZGVJbnRlZ2VyKHJlYWRlciwgc2FtZVNvdXJjZSA/IGNhbGxzaXRlTGluZSA6IDApO1xuICAgICAgICBjYWxsc2l0ZUNvbHVtbiA9IGRlY29kZUludGVnZXIoXG4gICAgICAgICAgcmVhZGVyLFxuICAgICAgICAgIHNhbWVTb3VyY2UgJiYgcHJldkxpbmUgPT09IGNhbGxzaXRlTGluZSA/IGNhbGxzaXRlQ29sdW1uIDogMCxcbiAgICAgICAgKTtcblxuICAgICAgICBjYWxsc2l0ZSA9IFtjYWxsc2l0ZVNvdXJjZXNJbmRleCwgY2FsbHNpdGVMaW5lLCBjYWxsc2l0ZUNvbHVtbl07XG4gICAgICB9XG4gICAgICByYW5nZS5jYWxsc2l0ZSA9IGNhbGxzaXRlO1xuXG4gICAgICBpZiAoaGFzTW9yZVZscShyZWFkZXIsIHNlbWkpKSB7XG4gICAgICAgIGJpbmRpbmdzID0gW107XG4gICAgICAgIGRvIHtcbiAgICAgICAgICBiaW5kaW5nTGluZSA9IGdlbkxpbmU7XG4gICAgICAgICAgYmluZGluZ0NvbHVtbiA9IGdlbkNvbHVtbjtcbiAgICAgICAgICBjb25zdCBleHByZXNzaW9uc0NvdW50ID0gZGVjb2RlSW50ZWdlcihyZWFkZXIsIDApO1xuICAgICAgICAgIGxldCBleHByZXNzaW9uUmFuZ2VzOiBCaW5kaW5nRXhwcmVzc2lvblJhbmdlW107XG4gICAgICAgICAgaWYgKGV4cHJlc3Npb25zQ291bnQgPCAtMSkge1xuICAgICAgICAgICAgZXhwcmVzc2lvblJhbmdlcyA9IFtbZGVjb2RlSW50ZWdlcihyZWFkZXIsIDApXV07XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gLTE7IGkgPiBleHByZXNzaW9uc0NvdW50OyBpLS0pIHtcbiAgICAgICAgICAgICAgY29uc3QgcHJldkJsID0gYmluZGluZ0xpbmU7XG4gICAgICAgICAgICAgIGJpbmRpbmdMaW5lID0gZGVjb2RlSW50ZWdlcihyZWFkZXIsIGJpbmRpbmdMaW5lKTtcbiAgICAgICAgICAgICAgYmluZGluZ0NvbHVtbiA9IGRlY29kZUludGVnZXIocmVhZGVyLCBiaW5kaW5nTGluZSA9PT0gcHJldkJsID8gYmluZGluZ0NvbHVtbiA6IDApO1xuICAgICAgICAgICAgICBjb25zdCBleHByZXNzaW9uID0gZGVjb2RlSW50ZWdlcihyZWFkZXIsIDApO1xuICAgICAgICAgICAgICBleHByZXNzaW9uUmFuZ2VzLnB1c2goW2V4cHJlc3Npb24sIGJpbmRpbmdMaW5lLCBiaW5kaW5nQ29sdW1uXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGV4cHJlc3Npb25SYW5nZXMgPSBbW2V4cHJlc3Npb25zQ291bnRdXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYmluZGluZ3MucHVzaChleHByZXNzaW9uUmFuZ2VzKTtcbiAgICAgICAgfSB3aGlsZSAoaGFzTW9yZVZscShyZWFkZXIsIHNlbWkpKTtcbiAgICAgIH1cbiAgICAgIHJhbmdlLmJpbmRpbmdzID0gYmluZGluZ3M7XG5cbiAgICAgIHJhbmdlcy5wdXNoKHJhbmdlKTtcbiAgICAgIHN0YWNrLnB1c2gocmFuZ2UpO1xuICAgIH1cblxuICAgIGdlbkxpbmUrKztcbiAgICByZWFkZXIucG9zID0gc2VtaSArIDE7XG4gIH0gd2hpbGUgKHJlYWRlci5wb3MgPCBsZW5ndGgpO1xuXG4gIHJldHVybiByYW5nZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbmNvZGVHZW5lcmF0ZWRSYW5nZXMocmFuZ2VzOiBHZW5lcmF0ZWRSYW5nZVtdKTogc3RyaW5nIHtcbiAgaWYgKHJhbmdlcy5sZW5ndGggPT09IDApIHJldHVybiAnJztcblxuICBjb25zdCB3cml0ZXIgPSBuZXcgU3RyaW5nV3JpdGVyKCk7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCByYW5nZXMubGVuZ3RoOyApIHtcbiAgICBpID0gX2VuY29kZUdlbmVyYXRlZFJhbmdlcyhyYW5nZXMsIGksIHdyaXRlciwgWzAsIDAsIDAsIDAsIDAsIDAsIDBdKTtcbiAgfVxuXG4gIHJldHVybiB3cml0ZXIuZmx1c2goKTtcbn1cblxuZnVuY3Rpb24gX2VuY29kZUdlbmVyYXRlZFJhbmdlcyhcbiAgcmFuZ2VzOiBHZW5lcmF0ZWRSYW5nZVtdLFxuICBpbmRleDogbnVtYmVyLFxuICB3cml0ZXI6IFN0cmluZ1dyaXRlcixcbiAgc3RhdGU6IFtcbiAgICBudW1iZXIsIC8vIEdlbkxpbmVcbiAgICBudW1iZXIsIC8vIEdlbkNvbHVtblxuICAgIG51bWJlciwgLy8gRGVmU291cmNlc0luZGV4XG4gICAgbnVtYmVyLCAvLyBEZWZTY29wZXNJbmRleFxuICAgIG51bWJlciwgLy8gQ2FsbFNvdXJjZXNJbmRleFxuICAgIG51bWJlciwgLy8gQ2FsbExpbmVcbiAgICBudW1iZXIsIC8vIENhbGxDb2x1bW5cbiAgXSxcbik6IG51bWJlciB7XG4gIGNvbnN0IHJhbmdlID0gcmFuZ2VzW2luZGV4XTtcbiAgY29uc3Qge1xuICAgIDA6IHN0YXJ0TGluZSxcbiAgICAxOiBzdGFydENvbHVtbixcbiAgICAyOiBlbmRMaW5lLFxuICAgIDM6IGVuZENvbHVtbixcbiAgICBpc1Njb3BlLFxuICAgIGNhbGxzaXRlLFxuICAgIGJpbmRpbmdzLFxuICB9ID0gcmFuZ2U7XG5cbiAgaWYgKHN0YXRlWzBdIDwgc3RhcnRMaW5lKSB7XG4gICAgY2F0Y2h1cExpbmUod3JpdGVyLCBzdGF0ZVswXSwgc3RhcnRMaW5lKTtcbiAgICBzdGF0ZVswXSA9IHN0YXJ0TGluZTtcbiAgICBzdGF0ZVsxXSA9IDA7XG4gIH0gZWxzZSBpZiAoaW5kZXggPiAwKSB7XG4gICAgd3JpdGVyLndyaXRlKGNvbW1hKTtcbiAgfVxuXG4gIHN0YXRlWzFdID0gZW5jb2RlSW50ZWdlcih3cml0ZXIsIHJhbmdlWzFdLCBzdGF0ZVsxXSk7XG5cbiAgY29uc3QgZmllbGRzID1cbiAgICAocmFuZ2UubGVuZ3RoID09PSA2ID8gMGIwMDAxIDogMCkgfCAoY2FsbHNpdGUgPyAwYjAwMTAgOiAwKSB8IChpc1Njb3BlID8gMGIwMTAwIDogMCk7XG4gIGVuY29kZUludGVnZXIod3JpdGVyLCBmaWVsZHMsIDApO1xuXG4gIGlmIChyYW5nZS5sZW5ndGggPT09IDYpIHtcbiAgICBjb25zdCB7IDQ6IHNvdXJjZXNJbmRleCwgNTogc2NvcGVzSW5kZXggfSA9IHJhbmdlO1xuICAgIGlmIChzb3VyY2VzSW5kZXggIT09IHN0YXRlWzJdKSB7XG4gICAgICBzdGF0ZVszXSA9IDA7XG4gICAgfVxuICAgIHN0YXRlWzJdID0gZW5jb2RlSW50ZWdlcih3cml0ZXIsIHNvdXJjZXNJbmRleCwgc3RhdGVbMl0pO1xuICAgIHN0YXRlWzNdID0gZW5jb2RlSW50ZWdlcih3cml0ZXIsIHNjb3Blc0luZGV4LCBzdGF0ZVszXSk7XG4gIH1cblxuICBpZiAoY2FsbHNpdGUpIHtcbiAgICBjb25zdCB7IDA6IHNvdXJjZXNJbmRleCwgMTogY2FsbExpbmUsIDI6IGNhbGxDb2x1bW4gfSA9IHJhbmdlLmNhbGxzaXRlITtcbiAgICBpZiAoc291cmNlc0luZGV4ICE9PSBzdGF0ZVs0XSkge1xuICAgICAgc3RhdGVbNV0gPSAwO1xuICAgICAgc3RhdGVbNl0gPSAwO1xuICAgIH0gZWxzZSBpZiAoY2FsbExpbmUgIT09IHN0YXRlWzVdKSB7XG4gICAgICBzdGF0ZVs2XSA9IDA7XG4gICAgfVxuICAgIHN0YXRlWzRdID0gZW5jb2RlSW50ZWdlcih3cml0ZXIsIHNvdXJjZXNJbmRleCwgc3RhdGVbNF0pO1xuICAgIHN0YXRlWzVdID0gZW5jb2RlSW50ZWdlcih3cml0ZXIsIGNhbGxMaW5lLCBzdGF0ZVs1XSk7XG4gICAgc3RhdGVbNl0gPSBlbmNvZGVJbnRlZ2VyKHdyaXRlciwgY2FsbENvbHVtbiwgc3RhdGVbNl0pO1xuICB9XG5cbiAgaWYgKGJpbmRpbmdzKSB7XG4gICAgZm9yIChjb25zdCBiaW5kaW5nIG9mIGJpbmRpbmdzKSB7XG4gICAgICBpZiAoYmluZGluZy5sZW5ndGggPiAxKSBlbmNvZGVJbnRlZ2VyKHdyaXRlciwgLWJpbmRpbmcubGVuZ3RoLCAwKTtcbiAgICAgIGNvbnN0IGV4cHJlc3Npb24gPSBiaW5kaW5nWzBdWzBdO1xuICAgICAgZW5jb2RlSW50ZWdlcih3cml0ZXIsIGV4cHJlc3Npb24sIDApO1xuICAgICAgbGV0IGJpbmRpbmdTdGFydExpbmUgPSBzdGFydExpbmU7XG4gICAgICBsZXQgYmluZGluZ1N0YXJ0Q29sdW1uID0gc3RhcnRDb2x1bW47XG4gICAgICBmb3IgKGxldCBpID0gMTsgaSA8IGJpbmRpbmcubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgZXhwUmFuZ2UgPSBiaW5kaW5nW2ldO1xuICAgICAgICBiaW5kaW5nU3RhcnRMaW5lID0gZW5jb2RlSW50ZWdlcih3cml0ZXIsIGV4cFJhbmdlWzFdISwgYmluZGluZ1N0YXJ0TGluZSk7XG4gICAgICAgIGJpbmRpbmdTdGFydENvbHVtbiA9IGVuY29kZUludGVnZXIod3JpdGVyLCBleHBSYW5nZVsyXSEsIGJpbmRpbmdTdGFydENvbHVtbik7XG4gICAgICAgIGVuY29kZUludGVnZXIod3JpdGVyLCBleHBSYW5nZVswXSEsIDApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZvciAoaW5kZXgrKzsgaW5kZXggPCByYW5nZXMubGVuZ3RoOyApIHtcbiAgICBjb25zdCBuZXh0ID0gcmFuZ2VzW2luZGV4XTtcbiAgICBjb25zdCB7IDA6IGwsIDE6IGMgfSA9IG5leHQ7XG4gICAgaWYgKGwgPiBlbmRMaW5lIHx8IChsID09PSBlbmRMaW5lICYmIGMgPj0gZW5kQ29sdW1uKSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGluZGV4ID0gX2VuY29kZUdlbmVyYXRlZFJhbmdlcyhyYW5nZXMsIGluZGV4LCB3cml0ZXIsIHN0YXRlKTtcbiAgfVxuXG4gIGlmIChzdGF0ZVswXSA8IGVuZExpbmUpIHtcbiAgICBjYXRjaHVwTGluZSh3cml0ZXIsIHN0YXRlWzBdLCBlbmRMaW5lKTtcbiAgICBzdGF0ZVswXSA9IGVuZExpbmU7XG4gICAgc3RhdGVbMV0gPSAwO1xuICB9IGVsc2Uge1xuICAgIHdyaXRlci53cml0ZShjb21tYSk7XG4gIH1cbiAgc3RhdGVbMV0gPSBlbmNvZGVJbnRlZ2VyKHdyaXRlciwgZW5kQ29sdW1uLCBzdGF0ZVsxXSk7XG5cbiAgcmV0dXJuIGluZGV4O1xufVxuXG5mdW5jdGlvbiBjYXRjaHVwTGluZSh3cml0ZXI6IFN0cmluZ1dyaXRlciwgbGFzdExpbmU6IG51bWJlciwgbGluZTogbnVtYmVyKSB7XG4gIGRvIHtcbiAgICB3cml0ZXIud3JpdGUoc2VtaWNvbG9uKTtcbiAgfSB3aGlsZSAoKytsYXN0TGluZSA8IGxpbmUpO1xufVxuIiwgImltcG9ydCB7IGNvbW1hLCBkZWNvZGVJbnRlZ2VyLCBlbmNvZGVJbnRlZ2VyLCBoYXNNb3JlVmxxLCBzZW1pY29sb24gfSBmcm9tICcuL3ZscSc7XG5pbXBvcnQgeyBTdHJpbmdXcml0ZXIsIFN0cmluZ1JlYWRlciB9IGZyb20gJy4vc3RyaW5ncyc7XG5cbmV4cG9ydCB7XG4gIGRlY29kZU9yaWdpbmFsU2NvcGVzLFxuICBlbmNvZGVPcmlnaW5hbFNjb3BlcyxcbiAgZGVjb2RlR2VuZXJhdGVkUmFuZ2VzLFxuICBlbmNvZGVHZW5lcmF0ZWRSYW5nZXMsXG59IGZyb20gJy4vc2NvcGVzJztcbmV4cG9ydCB0eXBlIHsgT3JpZ2luYWxTY29wZSwgR2VuZXJhdGVkUmFuZ2UsIENhbGxTaXRlLCBCaW5kaW5nRXhwcmVzc2lvblJhbmdlIH0gZnJvbSAnLi9zY29wZXMnO1xuXG5leHBvcnQgdHlwZSBTb3VyY2VNYXBTZWdtZW50ID1cbiAgfCBbbnVtYmVyXVxuICB8IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdXG4gIHwgW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXTtcbmV4cG9ydCB0eXBlIFNvdXJjZU1hcExpbmUgPSBTb3VyY2VNYXBTZWdtZW50W107XG5leHBvcnQgdHlwZSBTb3VyY2VNYXBNYXBwaW5ncyA9IFNvdXJjZU1hcExpbmVbXTtcblxuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZShtYXBwaW5nczogc3RyaW5nKTogU291cmNlTWFwTWFwcGluZ3Mge1xuICBjb25zdCB7IGxlbmd0aCB9ID0gbWFwcGluZ3M7XG4gIGNvbnN0IHJlYWRlciA9IG5ldyBTdHJpbmdSZWFkZXIobWFwcGluZ3MpO1xuICBjb25zdCBkZWNvZGVkOiBTb3VyY2VNYXBNYXBwaW5ncyA9IFtdO1xuICBsZXQgZ2VuQ29sdW1uID0gMDtcbiAgbGV0IHNvdXJjZXNJbmRleCA9IDA7XG4gIGxldCBzb3VyY2VMaW5lID0gMDtcbiAgbGV0IHNvdXJjZUNvbHVtbiA9IDA7XG4gIGxldCBuYW1lc0luZGV4ID0gMDtcblxuICBkbyB7XG4gICAgY29uc3Qgc2VtaSA9IHJlYWRlci5pbmRleE9mKCc7Jyk7XG4gICAgY29uc3QgbGluZTogU291cmNlTWFwTGluZSA9IFtdO1xuICAgIGxldCBzb3J0ZWQgPSB0cnVlO1xuICAgIGxldCBsYXN0Q29sID0gMDtcbiAgICBnZW5Db2x1bW4gPSAwO1xuXG4gICAgd2hpbGUgKHJlYWRlci5wb3MgPCBzZW1pKSB7XG4gICAgICBsZXQgc2VnOiBTb3VyY2VNYXBTZWdtZW50O1xuXG4gICAgICBnZW5Db2x1bW4gPSBkZWNvZGVJbnRlZ2VyKHJlYWRlciwgZ2VuQ29sdW1uKTtcbiAgICAgIGlmIChnZW5Db2x1bW4gPCBsYXN0Q29sKSBzb3J0ZWQgPSBmYWxzZTtcbiAgICAgIGxhc3RDb2wgPSBnZW5Db2x1bW47XG5cbiAgICAgIGlmIChoYXNNb3JlVmxxKHJlYWRlciwgc2VtaSkpIHtcbiAgICAgICAgc291cmNlc0luZGV4ID0gZGVjb2RlSW50ZWdlcihyZWFkZXIsIHNvdXJjZXNJbmRleCk7XG4gICAgICAgIHNvdXJjZUxpbmUgPSBkZWNvZGVJbnRlZ2VyKHJlYWRlciwgc291cmNlTGluZSk7XG4gICAgICAgIHNvdXJjZUNvbHVtbiA9IGRlY29kZUludGVnZXIocmVhZGVyLCBzb3VyY2VDb2x1bW4pO1xuXG4gICAgICAgIGlmIChoYXNNb3JlVmxxKHJlYWRlciwgc2VtaSkpIHtcbiAgICAgICAgICBuYW1lc0luZGV4ID0gZGVjb2RlSW50ZWdlcihyZWFkZXIsIG5hbWVzSW5kZXgpO1xuICAgICAgICAgIHNlZyA9IFtnZW5Db2x1bW4sIHNvdXJjZXNJbmRleCwgc291cmNlTGluZSwgc291cmNlQ29sdW1uLCBuYW1lc0luZGV4XTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzZWcgPSBbZ2VuQ29sdW1uLCBzb3VyY2VzSW5kZXgsIHNvdXJjZUxpbmUsIHNvdXJjZUNvbHVtbl07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNlZyA9IFtnZW5Db2x1bW5dO1xuICAgICAgfVxuXG4gICAgICBsaW5lLnB1c2goc2VnKTtcbiAgICAgIHJlYWRlci5wb3MrKztcbiAgICB9XG5cbiAgICBpZiAoIXNvcnRlZCkgc29ydChsaW5lKTtcbiAgICBkZWNvZGVkLnB1c2gobGluZSk7XG4gICAgcmVhZGVyLnBvcyA9IHNlbWkgKyAxO1xuICB9IHdoaWxlIChyZWFkZXIucG9zIDw9IGxlbmd0aCk7XG5cbiAgcmV0dXJuIGRlY29kZWQ7XG59XG5cbmZ1bmN0aW9uIHNvcnQobGluZTogU291cmNlTWFwU2VnbWVudFtdKSB7XG4gIGxpbmUuc29ydChzb3J0Q29tcGFyYXRvcik7XG59XG5cbmZ1bmN0aW9uIHNvcnRDb21wYXJhdG9yKGE6IFNvdXJjZU1hcFNlZ21lbnQsIGI6IFNvdXJjZU1hcFNlZ21lbnQpOiBudW1iZXIge1xuICByZXR1cm4gYVswXSAtIGJbMF07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbmNvZGUoZGVjb2RlZDogU291cmNlTWFwTWFwcGluZ3MpOiBzdHJpbmc7XG5leHBvcnQgZnVuY3Rpb24gZW5jb2RlKGRlY29kZWQ6IFJlYWRvbmx5PFNvdXJjZU1hcE1hcHBpbmdzPik6IHN0cmluZztcbmV4cG9ydCBmdW5jdGlvbiBlbmNvZGUoZGVjb2RlZDogUmVhZG9ubHk8U291cmNlTWFwTWFwcGluZ3M+KTogc3RyaW5nIHtcbiAgY29uc3Qgd3JpdGVyID0gbmV3IFN0cmluZ1dyaXRlcigpO1xuICBsZXQgc291cmNlc0luZGV4ID0gMDtcbiAgbGV0IHNvdXJjZUxpbmUgPSAwO1xuICBsZXQgc291cmNlQ29sdW1uID0gMDtcbiAgbGV0IG5hbWVzSW5kZXggPSAwO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZGVjb2RlZC5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGxpbmUgPSBkZWNvZGVkW2ldO1xuICAgIGlmIChpID4gMCkgd3JpdGVyLndyaXRlKHNlbWljb2xvbik7XG4gICAgaWYgKGxpbmUubGVuZ3RoID09PSAwKSBjb250aW51ZTtcblxuICAgIGxldCBnZW5Db2x1bW4gPSAwO1xuXG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBsaW5lLmxlbmd0aDsgaisrKSB7XG4gICAgICBjb25zdCBzZWdtZW50ID0gbGluZVtqXTtcbiAgICAgIGlmIChqID4gMCkgd3JpdGVyLndyaXRlKGNvbW1hKTtcblxuICAgICAgZ2VuQ29sdW1uID0gZW5jb2RlSW50ZWdlcih3cml0ZXIsIHNlZ21lbnRbMF0sIGdlbkNvbHVtbik7XG5cbiAgICAgIGlmIChzZWdtZW50Lmxlbmd0aCA9PT0gMSkgY29udGludWU7XG4gICAgICBzb3VyY2VzSW5kZXggPSBlbmNvZGVJbnRlZ2VyKHdyaXRlciwgc2VnbWVudFsxXSwgc291cmNlc0luZGV4KTtcbiAgICAgIHNvdXJjZUxpbmUgPSBlbmNvZGVJbnRlZ2VyKHdyaXRlciwgc2VnbWVudFsyXSwgc291cmNlTGluZSk7XG4gICAgICBzb3VyY2VDb2x1bW4gPSBlbmNvZGVJbnRlZ2VyKHdyaXRlciwgc2VnbWVudFszXSwgc291cmNlQ29sdW1uKTtcblxuICAgICAgaWYgKHNlZ21lbnQubGVuZ3RoID09PSA0KSBjb250aW51ZTtcbiAgICAgIG5hbWVzSW5kZXggPSBlbmNvZGVJbnRlZ2VyKHdyaXRlciwgc2VnbWVudFs0XSwgbmFtZXNJbmRleCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHdyaXRlci5mbHVzaCgpO1xufVxuIiwgIi8vIE1hdGNoZXMgdGhlIHNjaGVtZSBvZiBhIFVSTCwgZWcgXCJodHRwOi8vXCJcbmNvbnN0IHNjaGVtZVJlZ2V4ID0gL15bXFx3Ky4tXSs6XFwvXFwvLztcblxuLyoqXG4gKiBNYXRjaGVzIHRoZSBwYXJ0cyBvZiBhIFVSTDpcbiAqIDEuIFNjaGVtZSwgaW5jbHVkaW5nIFwiOlwiLCBndWFyYW50ZWVkLlxuICogMi4gVXNlci9wYXNzd29yZCwgaW5jbHVkaW5nIFwiQFwiLCBvcHRpb25hbC5cbiAqIDMuIEhvc3QsIGd1YXJhbnRlZWQuXG4gKiA0LiBQb3J0LCBpbmNsdWRpbmcgXCI6XCIsIG9wdGlvbmFsLlxuICogNS4gUGF0aCwgaW5jbHVkaW5nIFwiL1wiLCBvcHRpb25hbC5cbiAqIDYuIFF1ZXJ5LCBpbmNsdWRpbmcgXCI/XCIsIG9wdGlvbmFsLlxuICogNy4gSGFzaCwgaW5jbHVkaW5nIFwiI1wiLCBvcHRpb25hbC5cbiAqL1xuY29uc3QgdXJsUmVnZXggPSAvXihbXFx3Ky4tXSs6KVxcL1xcLyhbXkAvIz9dKkApPyhbXjovIz9dKikoOlxcZCspPyhcXC9bXiM/XSopPyhcXD9bXiNdKik/KCMuKik/LztcblxuLyoqXG4gKiBGaWxlIFVSTHMgYXJlIHdlaXJkLiBUaGV5IGRvbnQnIG5lZWQgdGhlIHJlZ3VsYXIgYC8vYCBpbiB0aGUgc2NoZW1lLCB0aGV5IG1heSBvciBtYXkgbm90IHN0YXJ0XG4gKiB3aXRoIGEgbGVhZGluZyBgL2AsIHRoZXkgY2FuIGhhdmUgYSBkb21haW4gKGJ1dCBvbmx5IGlmIHRoZXkgZG9uJ3Qgc3RhcnQgd2l0aCBhIFdpbmRvd3MgZHJpdmUpLlxuICpcbiAqIDEuIEhvc3QsIG9wdGlvbmFsLlxuICogMi4gUGF0aCwgd2hpY2ggbWF5IGluY2x1ZGUgXCIvXCIsIGd1YXJhbnRlZWQuXG4gKiAzLiBRdWVyeSwgaW5jbHVkaW5nIFwiP1wiLCBvcHRpb25hbC5cbiAqIDQuIEhhc2gsIGluY2x1ZGluZyBcIiNcIiwgb3B0aW9uYWwuXG4gKi9cbmNvbnN0IGZpbGVSZWdleCA9IC9eZmlsZTooPzpcXC9cXC8oKD8hW2Etel06KVteLyM/XSopPyk/KFxcLz9bXiM/XSopKFxcP1teI10qKT8oIy4qKT8vaTtcblxudHlwZSBVcmwgPSB7XG4gIHNjaGVtZTogc3RyaW5nO1xuICB1c2VyOiBzdHJpbmc7XG4gIGhvc3Q6IHN0cmluZztcbiAgcG9ydDogc3RyaW5nO1xuICBwYXRoOiBzdHJpbmc7XG4gIHF1ZXJ5OiBzdHJpbmc7XG4gIGhhc2g6IHN0cmluZztcbiAgdHlwZTogVXJsVHlwZTtcbn07XG5cbmNvbnN0IGVudW0gVXJsVHlwZSB7XG4gIEVtcHR5ID0gMSxcbiAgSGFzaCA9IDIsXG4gIFF1ZXJ5ID0gMyxcbiAgUmVsYXRpdmVQYXRoID0gNCxcbiAgQWJzb2x1dGVQYXRoID0gNSxcbiAgU2NoZW1lUmVsYXRpdmUgPSA2LFxuICBBYnNvbHV0ZSA9IDcsXG59XG5cbmZ1bmN0aW9uIGlzQWJzb2x1dGVVcmwoaW5wdXQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gc2NoZW1lUmVnZXgudGVzdChpbnB1dCk7XG59XG5cbmZ1bmN0aW9uIGlzU2NoZW1lUmVsYXRpdmVVcmwoaW5wdXQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gaW5wdXQuc3RhcnRzV2l0aCgnLy8nKTtcbn1cblxuZnVuY3Rpb24gaXNBYnNvbHV0ZVBhdGgoaW5wdXQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gaW5wdXQuc3RhcnRzV2l0aCgnLycpO1xufVxuXG5mdW5jdGlvbiBpc0ZpbGVVcmwoaW5wdXQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gaW5wdXQuc3RhcnRzV2l0aCgnZmlsZTonKTtcbn1cblxuZnVuY3Rpb24gaXNSZWxhdGl2ZShpbnB1dDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiAvXlsuPyNdLy50ZXN0KGlucHV0KTtcbn1cblxuZnVuY3Rpb24gcGFyc2VBYnNvbHV0ZVVybChpbnB1dDogc3RyaW5nKTogVXJsIHtcbiAgY29uc3QgbWF0Y2ggPSB1cmxSZWdleC5leGVjKGlucHV0KSE7XG4gIHJldHVybiBtYWtlVXJsKFxuICAgIG1hdGNoWzFdLFxuICAgIG1hdGNoWzJdIHx8ICcnLFxuICAgIG1hdGNoWzNdLFxuICAgIG1hdGNoWzRdIHx8ICcnLFxuICAgIG1hdGNoWzVdIHx8ICcvJyxcbiAgICBtYXRjaFs2XSB8fCAnJyxcbiAgICBtYXRjaFs3XSB8fCAnJyxcbiAgKTtcbn1cblxuZnVuY3Rpb24gcGFyc2VGaWxlVXJsKGlucHV0OiBzdHJpbmcpOiBVcmwge1xuICBjb25zdCBtYXRjaCA9IGZpbGVSZWdleC5leGVjKGlucHV0KSE7XG4gIGNvbnN0IHBhdGggPSBtYXRjaFsyXTtcbiAgcmV0dXJuIG1ha2VVcmwoXG4gICAgJ2ZpbGU6JyxcbiAgICAnJyxcbiAgICBtYXRjaFsxXSB8fCAnJyxcbiAgICAnJyxcbiAgICBpc0Fic29sdXRlUGF0aChwYXRoKSA/IHBhdGggOiAnLycgKyBwYXRoLFxuICAgIG1hdGNoWzNdIHx8ICcnLFxuICAgIG1hdGNoWzRdIHx8ICcnLFxuICApO1xufVxuXG5mdW5jdGlvbiBtYWtlVXJsKFxuICBzY2hlbWU6IHN0cmluZyxcbiAgdXNlcjogc3RyaW5nLFxuICBob3N0OiBzdHJpbmcsXG4gIHBvcnQ6IHN0cmluZyxcbiAgcGF0aDogc3RyaW5nLFxuICBxdWVyeTogc3RyaW5nLFxuICBoYXNoOiBzdHJpbmcsXG4pOiBVcmwge1xuICByZXR1cm4ge1xuICAgIHNjaGVtZSxcbiAgICB1c2VyLFxuICAgIGhvc3QsXG4gICAgcG9ydCxcbiAgICBwYXRoLFxuICAgIHF1ZXJ5LFxuICAgIGhhc2gsXG4gICAgdHlwZTogVXJsVHlwZS5BYnNvbHV0ZSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gcGFyc2VVcmwoaW5wdXQ6IHN0cmluZyk6IFVybCB7XG4gIGlmIChpc1NjaGVtZVJlbGF0aXZlVXJsKGlucHV0KSkge1xuICAgIGNvbnN0IHVybCA9IHBhcnNlQWJzb2x1dGVVcmwoJ2h0dHA6JyArIGlucHV0KTtcbiAgICB1cmwuc2NoZW1lID0gJyc7XG4gICAgdXJsLnR5cGUgPSBVcmxUeXBlLlNjaGVtZVJlbGF0aXZlO1xuICAgIHJldHVybiB1cmw7XG4gIH1cblxuICBpZiAoaXNBYnNvbHV0ZVBhdGgoaW5wdXQpKSB7XG4gICAgY29uc3QgdXJsID0gcGFyc2VBYnNvbHV0ZVVybCgnaHR0cDovL2Zvby5jb20nICsgaW5wdXQpO1xuICAgIHVybC5zY2hlbWUgPSAnJztcbiAgICB1cmwuaG9zdCA9ICcnO1xuICAgIHVybC50eXBlID0gVXJsVHlwZS5BYnNvbHV0ZVBhdGg7XG4gICAgcmV0dXJuIHVybDtcbiAgfVxuXG4gIGlmIChpc0ZpbGVVcmwoaW5wdXQpKSByZXR1cm4gcGFyc2VGaWxlVXJsKGlucHV0KTtcblxuICBpZiAoaXNBYnNvbHV0ZVVybChpbnB1dCkpIHJldHVybiBwYXJzZUFic29sdXRlVXJsKGlucHV0KTtcblxuICBjb25zdCB1cmwgPSBwYXJzZUFic29sdXRlVXJsKCdodHRwOi8vZm9vLmNvbS8nICsgaW5wdXQpO1xuICB1cmwuc2NoZW1lID0gJyc7XG4gIHVybC5ob3N0ID0gJyc7XG4gIHVybC50eXBlID0gaW5wdXRcbiAgICA/IGlucHV0LnN0YXJ0c1dpdGgoJz8nKVxuICAgICAgPyBVcmxUeXBlLlF1ZXJ5XG4gICAgICA6IGlucHV0LnN0YXJ0c1dpdGgoJyMnKVxuICAgICAgPyBVcmxUeXBlLkhhc2hcbiAgICAgIDogVXJsVHlwZS5SZWxhdGl2ZVBhdGhcbiAgICA6IFVybFR5cGUuRW1wdHk7XG4gIHJldHVybiB1cmw7XG59XG5cbmZ1bmN0aW9uIHN0cmlwUGF0aEZpbGVuYW1lKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIC8vIElmIGEgcGF0aCBlbmRzIHdpdGggYSBwYXJlbnQgZGlyZWN0b3J5IFwiLi5cIiwgdGhlbiBpdCdzIGEgcmVsYXRpdmUgcGF0aCB3aXRoIGV4Y2VzcyBwYXJlbnRcbiAgLy8gcGF0aHMuIEl0J3Mgbm90IGEgZmlsZSwgc28gd2UgY2FuJ3Qgc3RyaXAgaXQuXG4gIGlmIChwYXRoLmVuZHNXaXRoKCcvLi4nKSkgcmV0dXJuIHBhdGg7XG4gIGNvbnN0IGluZGV4ID0gcGF0aC5sYXN0SW5kZXhPZignLycpO1xuICByZXR1cm4gcGF0aC5zbGljZSgwLCBpbmRleCArIDEpO1xufVxuXG5mdW5jdGlvbiBtZXJnZVBhdGhzKHVybDogVXJsLCBiYXNlOiBVcmwpIHtcbiAgbm9ybWFsaXplUGF0aChiYXNlLCBiYXNlLnR5cGUpO1xuXG4gIC8vIElmIHRoZSBwYXRoIGlzIGp1c3QgYSBcIi9cIiwgdGhlbiBpdCB3YXMgYW4gZW1wdHkgcGF0aCB0byBiZWdpbiB3aXRoIChyZW1lbWJlciwgd2UncmUgYSByZWxhdGl2ZVxuICAvLyBwYXRoKS5cbiAgaWYgKHVybC5wYXRoID09PSAnLycpIHtcbiAgICB1cmwucGF0aCA9IGJhc2UucGF0aDtcbiAgfSBlbHNlIHtcbiAgICAvLyBSZXNvbHV0aW9uIGhhcHBlbnMgcmVsYXRpdmUgdG8gdGhlIGJhc2UgcGF0aCdzIGRpcmVjdG9yeSwgbm90IHRoZSBmaWxlLlxuICAgIHVybC5wYXRoID0gc3RyaXBQYXRoRmlsZW5hbWUoYmFzZS5wYXRoKSArIHVybC5wYXRoO1xuICB9XG59XG5cbi8qKlxuICogVGhlIHBhdGggY2FuIGhhdmUgZW1wdHkgZGlyZWN0b3JpZXMgXCIvL1wiLCB1bm5lZWRlZCBwYXJlbnRzIFwiZm9vLy4uXCIsIG9yIGN1cnJlbnQgZGlyZWN0b3J5XG4gKiBcImZvby8uXCIuIFdlIG5lZWQgdG8gbm9ybWFsaXplIHRvIGEgc3RhbmRhcmQgcmVwcmVzZW50YXRpb24uXG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZVBhdGgodXJsOiBVcmwsIHR5cGU6IFVybFR5cGUpIHtcbiAgY29uc3QgcmVsID0gdHlwZSA8PSBVcmxUeXBlLlJlbGF0aXZlUGF0aDtcbiAgY29uc3QgcGllY2VzID0gdXJsLnBhdGguc3BsaXQoJy8nKTtcblxuICAvLyBXZSBuZWVkIHRvIHByZXNlcnZlIHRoZSBmaXJzdCBwaWVjZSBhbHdheXMsIHNvIHRoYXQgd2Ugb3V0cHV0IGEgbGVhZGluZyBzbGFzaC4gVGhlIGl0ZW0gYXRcbiAgLy8gcGllY2VzWzBdIGlzIGFuIGVtcHR5IHN0cmluZy5cbiAgbGV0IHBvaW50ZXIgPSAxO1xuXG4gIC8vIFBvc2l0aXZlIGlzIHRoZSBudW1iZXIgb2YgcmVhbCBkaXJlY3RvcmllcyB3ZSd2ZSBvdXRwdXQsIHVzZWQgZm9yIHBvcHBpbmcgYSBwYXJlbnQgZGlyZWN0b3J5LlxuICAvLyBFZywgXCJmb28vYmFyLy4uXCIgd2lsbCBoYXZlIGEgcG9zaXRpdmUgMiwgYW5kIHdlIGNhbiBkZWNyZW1lbnQgdG8gYmUgbGVmdCB3aXRoIGp1c3QgXCJmb29cIi5cbiAgbGV0IHBvc2l0aXZlID0gMDtcblxuICAvLyBXZSBuZWVkIHRvIGtlZXAgYSB0cmFpbGluZyBzbGFzaCBpZiB3ZSBlbmNvdW50ZXIgYW4gZW1wdHkgZGlyZWN0b3J5IChlZywgc3BsaXR0aW5nIFwiZm9vL1wiIHdpbGxcbiAgLy8gZ2VuZXJhdGUgYFtcImZvb1wiLCBcIlwiXWAgcGllY2VzKS4gQW5kLCBpZiB3ZSBwb3AgYSBwYXJlbnQgZGlyZWN0b3J5LiBCdXQgb25jZSB3ZSBlbmNvdW50ZXIgYVxuICAvLyByZWFsIGRpcmVjdG9yeSwgd2Ugd29uJ3QgbmVlZCB0byBhcHBlbmQsIHVubGVzcyB0aGUgb3RoZXIgY29uZGl0aW9ucyBoYXBwZW4gYWdhaW4uXG4gIGxldCBhZGRUcmFpbGluZ1NsYXNoID0gZmFsc2U7XG5cbiAgZm9yIChsZXQgaSA9IDE7IGkgPCBwaWVjZXMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBwaWVjZSA9IHBpZWNlc1tpXTtcblxuICAgIC8vIEFuIGVtcHR5IGRpcmVjdG9yeSwgY291bGQgYmUgYSB0cmFpbGluZyBzbGFzaCwgb3IganVzdCBhIGRvdWJsZSBcIi8vXCIgaW4gdGhlIHBhdGguXG4gICAgaWYgKCFwaWVjZSkge1xuICAgICAgYWRkVHJhaWxpbmdTbGFzaCA9IHRydWU7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvLyBJZiB3ZSBlbmNvdW50ZXIgYSByZWFsIGRpcmVjdG9yeSwgdGhlbiB3ZSBkb24ndCBuZWVkIHRvIGFwcGVuZCBhbnltb3JlLlxuICAgIGFkZFRyYWlsaW5nU2xhc2ggPSBmYWxzZTtcblxuICAgIC8vIEEgY3VycmVudCBkaXJlY3RvcnksIHdoaWNoIHdlIGNhbiBhbHdheXMgZHJvcC5cbiAgICBpZiAocGllY2UgPT09ICcuJykgY29udGludWU7XG5cbiAgICAvLyBBIHBhcmVudCBkaXJlY3RvcnksIHdlIG5lZWQgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgcmVhbCBkaXJlY3RvcmllcyB3ZSBjYW4gcG9wLiBFbHNlLCB3ZVxuICAgIC8vIGhhdmUgYW4gZXhjZXNzIG9mIHBhcmVudHMsIGFuZCB3ZSdsbCBuZWVkIHRvIGtlZXAgdGhlIFwiLi5cIi5cbiAgICBpZiAocGllY2UgPT09ICcuLicpIHtcbiAgICAgIGlmIChwb3NpdGl2ZSkge1xuICAgICAgICBhZGRUcmFpbGluZ1NsYXNoID0gdHJ1ZTtcbiAgICAgICAgcG9zaXRpdmUtLTtcbiAgICAgICAgcG9pbnRlci0tO1xuICAgICAgfSBlbHNlIGlmIChyZWwpIHtcbiAgICAgICAgLy8gSWYgd2UncmUgaW4gYSByZWxhdGl2ZVBhdGgsIHRoZW4gd2UgbmVlZCB0byBrZWVwIHRoZSBleGNlc3MgcGFyZW50cy4gRWxzZSwgaW4gYW4gYWJzb2x1dGVcbiAgICAgICAgLy8gVVJMLCBwcm90b2NvbCByZWxhdGl2ZSBVUkwsIG9yIGFuIGFic29sdXRlIHBhdGgsIHdlIGRvbid0IG5lZWQgdG8ga2VlcCBleGNlc3MuXG4gICAgICAgIHBpZWNlc1twb2ludGVyKytdID0gcGllY2U7XG4gICAgICB9XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvLyBXZSd2ZSBlbmNvdW50ZXJlZCBhIHJlYWwgZGlyZWN0b3J5LiBNb3ZlIGl0IHRvIHRoZSBuZXh0IGluc2VydGlvbiBwb2ludGVyLCB3aGljaCBhY2NvdW50cyBmb3JcbiAgICAvLyBhbnkgcG9wcGVkIG9yIGRyb3BwZWQgZGlyZWN0b3JpZXMuXG4gICAgcGllY2VzW3BvaW50ZXIrK10gPSBwaWVjZTtcbiAgICBwb3NpdGl2ZSsrO1xuICB9XG5cbiAgbGV0IHBhdGggPSAnJztcbiAgZm9yIChsZXQgaSA9IDE7IGkgPCBwb2ludGVyOyBpKyspIHtcbiAgICBwYXRoICs9ICcvJyArIHBpZWNlc1tpXTtcbiAgfVxuICBpZiAoIXBhdGggfHwgKGFkZFRyYWlsaW5nU2xhc2ggJiYgIXBhdGguZW5kc1dpdGgoJy8uLicpKSkge1xuICAgIHBhdGggKz0gJy8nO1xuICB9XG4gIHVybC5wYXRoID0gcGF0aDtcbn1cblxuLyoqXG4gKiBBdHRlbXB0cyB0byByZXNvbHZlIGBpbnB1dGAgVVJML3BhdGggcmVsYXRpdmUgdG8gYGJhc2VgLlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiByZXNvbHZlKGlucHV0OiBzdHJpbmcsIGJhc2U6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XG4gIGlmICghaW5wdXQgJiYgIWJhc2UpIHJldHVybiAnJztcblxuICBjb25zdCB1cmwgPSBwYXJzZVVybChpbnB1dCk7XG4gIGxldCBpbnB1dFR5cGUgPSB1cmwudHlwZTtcblxuICBpZiAoYmFzZSAmJiBpbnB1dFR5cGUgIT09IFVybFR5cGUuQWJzb2x1dGUpIHtcbiAgICBjb25zdCBiYXNlVXJsID0gcGFyc2VVcmwoYmFzZSk7XG4gICAgY29uc3QgYmFzZVR5cGUgPSBiYXNlVXJsLnR5cGU7XG5cbiAgICBzd2l0Y2ggKGlucHV0VHlwZSkge1xuICAgICAgY2FzZSBVcmxUeXBlLkVtcHR5OlxuICAgICAgICB1cmwuaGFzaCA9IGJhc2VVcmwuaGFzaDtcbiAgICAgIC8vIGZhbGwgdGhyb3VnaFxuXG4gICAgICBjYXNlIFVybFR5cGUuSGFzaDpcbiAgICAgICAgdXJsLnF1ZXJ5ID0gYmFzZVVybC5xdWVyeTtcbiAgICAgIC8vIGZhbGwgdGhyb3VnaFxuXG4gICAgICBjYXNlIFVybFR5cGUuUXVlcnk6XG4gICAgICBjYXNlIFVybFR5cGUuUmVsYXRpdmVQYXRoOlxuICAgICAgICBtZXJnZVBhdGhzKHVybCwgYmFzZVVybCk7XG4gICAgICAvLyBmYWxsIHRocm91Z2hcblxuICAgICAgY2FzZSBVcmxUeXBlLkFic29sdXRlUGF0aDpcbiAgICAgICAgLy8gVGhlIGhvc3QsIHVzZXIsIGFuZCBwb3J0IGFyZSBqb2luZWQsIHlvdSBjYW4ndCBjb3B5IG9uZSB3aXRob3V0IHRoZSBvdGhlcnMuXG4gICAgICAgIHVybC51c2VyID0gYmFzZVVybC51c2VyO1xuICAgICAgICB1cmwuaG9zdCA9IGJhc2VVcmwuaG9zdDtcbiAgICAgICAgdXJsLnBvcnQgPSBiYXNlVXJsLnBvcnQ7XG4gICAgICAvLyBmYWxsIHRocm91Z2hcblxuICAgICAgY2FzZSBVcmxUeXBlLlNjaGVtZVJlbGF0aXZlOlxuICAgICAgICAvLyBUaGUgaW5wdXQgZG9lc24ndCBoYXZlIGEgc2NoZW1hIGF0IGxlYXN0LCBzbyB3ZSBuZWVkIHRvIGNvcHkgYXQgbGVhc3QgdGhhdCBvdmVyLlxuICAgICAgICB1cmwuc2NoZW1lID0gYmFzZVVybC5zY2hlbWU7XG4gICAgfVxuICAgIGlmIChiYXNlVHlwZSA+IGlucHV0VHlwZSkgaW5wdXRUeXBlID0gYmFzZVR5cGU7XG4gIH1cblxuICBub3JtYWxpemVQYXRoKHVybCwgaW5wdXRUeXBlKTtcblxuICBjb25zdCBxdWVyeUhhc2ggPSB1cmwucXVlcnkgKyB1cmwuaGFzaDtcbiAgc3dpdGNoIChpbnB1dFR5cGUpIHtcbiAgICAvLyBUaGlzIGlzIGltcG9zc2libGUsIGJlY2F1c2Ugb2YgdGhlIGVtcHR5IGNoZWNrcyBhdCB0aGUgc3RhcnQgb2YgdGhlIGZ1bmN0aW9uLlxuICAgIC8vIGNhc2UgVXJsVHlwZS5FbXB0eTpcblxuICAgIGNhc2UgVXJsVHlwZS5IYXNoOlxuICAgIGNhc2UgVXJsVHlwZS5RdWVyeTpcbiAgICAgIHJldHVybiBxdWVyeUhhc2g7XG5cbiAgICBjYXNlIFVybFR5cGUuUmVsYXRpdmVQYXRoOiB7XG4gICAgICAvLyBUaGUgZmlyc3QgY2hhciBpcyBhbHdheXMgYSBcIi9cIiwgYW5kIHdlIG5lZWQgaXQgdG8gYmUgcmVsYXRpdmUuXG4gICAgICBjb25zdCBwYXRoID0gdXJsLnBhdGguc2xpY2UoMSk7XG5cbiAgICAgIGlmICghcGF0aCkgcmV0dXJuIHF1ZXJ5SGFzaCB8fCAnLic7XG5cbiAgICAgIGlmIChpc1JlbGF0aXZlKGJhc2UgfHwgaW5wdXQpICYmICFpc1JlbGF0aXZlKHBhdGgpKSB7XG4gICAgICAgIC8vIElmIGJhc2Ugc3RhcnRlZCB3aXRoIGEgbGVhZGluZyBcIi5cIiwgb3IgdGhlcmUgaXMgbm8gYmFzZSBhbmQgaW5wdXQgc3RhcnRlZCB3aXRoIGEgXCIuXCIsXG4gICAgICAgIC8vIHRoZW4gd2UgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGUgcmVsYXRpdmUgcGF0aCBzdGFydHMgd2l0aCBhIFwiLlwiLiBXZSBkb24ndCBrbm93IGlmXG4gICAgICAgIC8vIHJlbGF0aXZlIHN0YXJ0cyB3aXRoIGEgXCIuLlwiLCB0aG91Z2gsIHNvIGNoZWNrIGJlZm9yZSBwcmVwZW5kaW5nLlxuICAgICAgICByZXR1cm4gJy4vJyArIHBhdGggKyBxdWVyeUhhc2g7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBwYXRoICsgcXVlcnlIYXNoO1xuICAgIH1cblxuICAgIGNhc2UgVXJsVHlwZS5BYnNvbHV0ZVBhdGg6XG4gICAgICByZXR1cm4gdXJsLnBhdGggKyBxdWVyeUhhc2g7XG5cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHVybC5zY2hlbWUgKyAnLy8nICsgdXJsLnVzZXIgKyB1cmwuaG9zdCArIHVybC5wb3J0ICsgdXJsLnBhdGggKyBxdWVyeUhhc2g7XG4gIH1cbn1cbiIsICJpbXBvcnQgcmVzb2x2ZVVyaSBmcm9tICdAanJpZGdld2VsbC9yZXNvbHZlLXVyaSc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHJlc29sdmUoaW5wdXQ6IHN0cmluZywgYmFzZTogc3RyaW5nIHwgdW5kZWZpbmVkKTogc3RyaW5nIHtcbiAgLy8gVGhlIGJhc2UgaXMgYWx3YXlzIHRyZWF0ZWQgYXMgYSBkaXJlY3RvcnksIGlmIGl0J3Mgbm90IGVtcHR5LlxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS9zb3VyY2UtbWFwL2Jsb2IvOGNiM2VlNTcvbGliL3V0aWwuanMjTDMyN1xuICAvLyBodHRwczovL2dpdGh1Yi5jb20vY2hyb21pdW0vY2hyb21pdW0vYmxvYi9kYTRhZGJiMy90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9kZXZ0b29scy9mcm9udF9lbmQvc2RrL1NvdXJjZU1hcC5qcyNMNDAwLUw0MDFcbiAgaWYgKGJhc2UgJiYgIWJhc2UuZW5kc1dpdGgoJy8nKSkgYmFzZSArPSAnLyc7XG5cbiAgcmV0dXJuIHJlc29sdmVVcmkoaW5wdXQsIGJhc2UpO1xufVxuIiwgIi8qKlxuICogUmVtb3ZlcyBldmVyeXRoaW5nIGFmdGVyIHRoZSBsYXN0IFwiL1wiLCBidXQgbGVhdmVzIHRoZSBzbGFzaC5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc3RyaXBGaWxlbmFtZShwYXRoOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsKTogc3RyaW5nIHtcbiAgaWYgKCFwYXRoKSByZXR1cm4gJyc7XG4gIGNvbnN0IGluZGV4ID0gcGF0aC5sYXN0SW5kZXhPZignLycpO1xuICByZXR1cm4gcGF0aC5zbGljZSgwLCBpbmRleCArIDEpO1xufVxuIiwgInR5cGUgR2VuZXJhdGVkQ29sdW1uID0gbnVtYmVyO1xudHlwZSBTb3VyY2VzSW5kZXggPSBudW1iZXI7XG50eXBlIFNvdXJjZUxpbmUgPSBudW1iZXI7XG50eXBlIFNvdXJjZUNvbHVtbiA9IG51bWJlcjtcbnR5cGUgTmFtZXNJbmRleCA9IG51bWJlcjtcblxudHlwZSBHZW5lcmF0ZWRMaW5lID0gbnVtYmVyO1xuXG5leHBvcnQgdHlwZSBTb3VyY2VNYXBTZWdtZW50ID1cbiAgfCBbR2VuZXJhdGVkQ29sdW1uXVxuICB8IFtHZW5lcmF0ZWRDb2x1bW4sIFNvdXJjZXNJbmRleCwgU291cmNlTGluZSwgU291cmNlQ29sdW1uXVxuICB8IFtHZW5lcmF0ZWRDb2x1bW4sIFNvdXJjZXNJbmRleCwgU291cmNlTGluZSwgU291cmNlQ29sdW1uLCBOYW1lc0luZGV4XTtcblxuZXhwb3J0IHR5cGUgUmV2ZXJzZVNlZ21lbnQgPSBbU291cmNlQ29sdW1uLCBHZW5lcmF0ZWRMaW5lLCBHZW5lcmF0ZWRDb2x1bW5dO1xuXG5leHBvcnQgY29uc3QgQ09MVU1OID0gMDtcbmV4cG9ydCBjb25zdCBTT1VSQ0VTX0lOREVYID0gMTtcbmV4cG9ydCBjb25zdCBTT1VSQ0VfTElORSA9IDI7XG5leHBvcnQgY29uc3QgU09VUkNFX0NPTFVNTiA9IDM7XG5leHBvcnQgY29uc3QgTkFNRVNfSU5ERVggPSA0O1xuXG5leHBvcnQgY29uc3QgUkVWX0dFTkVSQVRFRF9MSU5FID0gMTtcbmV4cG9ydCBjb25zdCBSRVZfR0VORVJBVEVEX0NPTFVNTiA9IDI7XG4iLCAiaW1wb3J0IHsgQ09MVU1OIH0gZnJvbSAnLi9zb3VyY2VtYXAtc2VnbWVudCc7XG5cbmltcG9ydCB0eXBlIHsgU291cmNlTWFwU2VnbWVudCB9IGZyb20gJy4vc291cmNlbWFwLXNlZ21lbnQnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBtYXliZVNvcnQoXG4gIG1hcHBpbmdzOiBTb3VyY2VNYXBTZWdtZW50W11bXSxcbiAgb3duZWQ6IGJvb2xlYW4sXG4pOiBTb3VyY2VNYXBTZWdtZW50W11bXSB7XG4gIGNvbnN0IHVuc29ydGVkSW5kZXggPSBuZXh0VW5zb3J0ZWRTZWdtZW50TGluZShtYXBwaW5ncywgMCk7XG4gIGlmICh1bnNvcnRlZEluZGV4ID09PSBtYXBwaW5ncy5sZW5ndGgpIHJldHVybiBtYXBwaW5ncztcblxuICAvLyBJZiB3ZSBvd24gdGhlIGFycmF5IChtZWFuaW5nIHdlIHBhcnNlZCBpdCBmcm9tIEpTT04pLCB0aGVuIHdlJ3JlIGZyZWUgdG8gZGlyZWN0bHkgbXV0YXRlIGl0LiBJZlxuICAvLyBub3QsIHdlIGRvIG5vdCB3YW50IHRvIG1vZGlmeSB0aGUgY29uc3VtZXIncyBpbnB1dCBhcnJheS5cbiAgaWYgKCFvd25lZCkgbWFwcGluZ3MgPSBtYXBwaW5ncy5zbGljZSgpO1xuXG4gIGZvciAobGV0IGkgPSB1bnNvcnRlZEluZGV4OyBpIDwgbWFwcGluZ3MubGVuZ3RoOyBpID0gbmV4dFVuc29ydGVkU2VnbWVudExpbmUobWFwcGluZ3MsIGkgKyAxKSkge1xuICAgIG1hcHBpbmdzW2ldID0gc29ydFNlZ21lbnRzKG1hcHBpbmdzW2ldLCBvd25lZCk7XG4gIH1cbiAgcmV0dXJuIG1hcHBpbmdzO1xufVxuXG5mdW5jdGlvbiBuZXh0VW5zb3J0ZWRTZWdtZW50TGluZShtYXBwaW5nczogU291cmNlTWFwU2VnbWVudFtdW10sIHN0YXJ0OiBudW1iZXIpOiBudW1iZXIge1xuICBmb3IgKGxldCBpID0gc3RhcnQ7IGkgPCBtYXBwaW5ncy5sZW5ndGg7IGkrKykge1xuICAgIGlmICghaXNTb3J0ZWQobWFwcGluZ3NbaV0pKSByZXR1cm4gaTtcbiAgfVxuICByZXR1cm4gbWFwcGluZ3MubGVuZ3RoO1xufVxuXG5mdW5jdGlvbiBpc1NvcnRlZChsaW5lOiBTb3VyY2VNYXBTZWdtZW50W10pOiBib29sZWFuIHtcbiAgZm9yIChsZXQgaiA9IDE7IGogPCBsaW5lLmxlbmd0aDsgaisrKSB7XG4gICAgaWYgKGxpbmVbal1bQ09MVU1OXSA8IGxpbmVbaiAtIDFdW0NPTFVNTl0pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIHNvcnRTZWdtZW50cyhsaW5lOiBTb3VyY2VNYXBTZWdtZW50W10sIG93bmVkOiBib29sZWFuKTogU291cmNlTWFwU2VnbWVudFtdIHtcbiAgaWYgKCFvd25lZCkgbGluZSA9IGxpbmUuc2xpY2UoKTtcbiAgcmV0dXJuIGxpbmUuc29ydChzb3J0Q29tcGFyYXRvcik7XG59XG5cbmZ1bmN0aW9uIHNvcnRDb21wYXJhdG9yKGE6IFNvdXJjZU1hcFNlZ21lbnQsIGI6IFNvdXJjZU1hcFNlZ21lbnQpOiBudW1iZXIge1xuICByZXR1cm4gYVtDT0xVTU5dIC0gYltDT0xVTU5dO1xufVxuIiwgImltcG9ydCB0eXBlIHsgU291cmNlTWFwU2VnbWVudCwgUmV2ZXJzZVNlZ21lbnQgfSBmcm9tICcuL3NvdXJjZW1hcC1zZWdtZW50JztcbmltcG9ydCB7IENPTFVNTiB9IGZyb20gJy4vc291cmNlbWFwLXNlZ21lbnQnO1xuXG5leHBvcnQgdHlwZSBNZW1vU3RhdGUgPSB7XG4gIGxhc3RLZXk6IG51bWJlcjtcbiAgbGFzdE5lZWRsZTogbnVtYmVyO1xuICBsYXN0SW5kZXg6IG51bWJlcjtcbn07XG5cbmV4cG9ydCBsZXQgZm91bmQgPSBmYWxzZTtcblxuLyoqXG4gKiBBIGJpbmFyeSBzZWFyY2ggaW1wbGVtZW50YXRpb24gdGhhdCByZXR1cm5zIHRoZSBpbmRleCBpZiBhIG1hdGNoIGlzIGZvdW5kLlxuICogSWYgbm8gbWF0Y2ggaXMgZm91bmQsIHRoZW4gdGhlIGxlZnQtaW5kZXggKHRoZSBpbmRleCBhc3NvY2lhdGVkIHdpdGggdGhlIGl0ZW0gdGhhdCBjb21lcyBqdXN0XG4gKiBiZWZvcmUgdGhlIGRlc2lyZWQgaW5kZXgpIGlzIHJldHVybmVkLiBUbyBtYWludGFpbiBwcm9wZXIgc29ydCBvcmRlciwgYSBzcGxpY2Ugd291bGQgaGFwcGVuIGF0XG4gKiB0aGUgbmV4dCBpbmRleDpcbiAqXG4gKiBgYGBqc1xuICogY29uc3QgYXJyYXkgPSBbMSwgM107XG4gKiBjb25zdCBuZWVkbGUgPSAyO1xuICogY29uc3QgaW5kZXggPSBiaW5hcnlTZWFyY2goYXJyYXksIG5lZWRsZSwgKGl0ZW0sIG5lZWRsZSkgPT4gaXRlbSAtIG5lZWRsZSk7XG4gKlxuICogYXNzZXJ0LmVxdWFsKGluZGV4LCAwKTtcbiAqIGFycmF5LnNwbGljZShpbmRleCArIDEsIDAsIG5lZWRsZSk7XG4gKiBhc3NlcnQuZGVlcEVxdWFsKGFycmF5LCBbMSwgMiwgM10pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBiaW5hcnlTZWFyY2goXG4gIGhheXN0YWNrOiBTb3VyY2VNYXBTZWdtZW50W10gfCBSZXZlcnNlU2VnbWVudFtdLFxuICBuZWVkbGU6IG51bWJlcixcbiAgbG93OiBudW1iZXIsXG4gIGhpZ2g6IG51bWJlcixcbik6IG51bWJlciB7XG4gIHdoaWxlIChsb3cgPD0gaGlnaCkge1xuICAgIGNvbnN0IG1pZCA9IGxvdyArICgoaGlnaCAtIGxvdykgPj4gMSk7XG4gICAgY29uc3QgY21wID0gaGF5c3RhY2tbbWlkXVtDT0xVTU5dIC0gbmVlZGxlO1xuXG4gICAgaWYgKGNtcCA9PT0gMCkge1xuICAgICAgZm91bmQgPSB0cnVlO1xuICAgICAgcmV0dXJuIG1pZDtcbiAgICB9XG5cbiAgICBpZiAoY21wIDwgMCkge1xuICAgICAgbG93ID0gbWlkICsgMTtcbiAgICB9IGVsc2Uge1xuICAgICAgaGlnaCA9IG1pZCAtIDE7XG4gICAgfVxuICB9XG5cbiAgZm91bmQgPSBmYWxzZTtcbiAgcmV0dXJuIGxvdyAtIDE7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1cHBlckJvdW5kKFxuICBoYXlzdGFjazogU291cmNlTWFwU2VnbWVudFtdIHwgUmV2ZXJzZVNlZ21lbnRbXSxcbiAgbmVlZGxlOiBudW1iZXIsXG4gIGluZGV4OiBudW1iZXIsXG4pOiBudW1iZXIge1xuICBmb3IgKGxldCBpID0gaW5kZXggKyAxOyBpIDwgaGF5c3RhY2subGVuZ3RoOyBpbmRleCA9IGkrKykge1xuICAgIGlmIChoYXlzdGFja1tpXVtDT0xVTU5dICE9PSBuZWVkbGUpIGJyZWFrO1xuICB9XG4gIHJldHVybiBpbmRleDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvd2VyQm91bmQoXG4gIGhheXN0YWNrOiBTb3VyY2VNYXBTZWdtZW50W10gfCBSZXZlcnNlU2VnbWVudFtdLFxuICBuZWVkbGU6IG51bWJlcixcbiAgaW5kZXg6IG51bWJlcixcbik6IG51bWJlciB7XG4gIGZvciAobGV0IGkgPSBpbmRleCAtIDE7IGkgPj0gMDsgaW5kZXggPSBpLS0pIHtcbiAgICBpZiAoaGF5c3RhY2tbaV1bQ09MVU1OXSAhPT0gbmVlZGxlKSBicmVhaztcbiAgfVxuICByZXR1cm4gaW5kZXg7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZW1vaXplZFN0YXRlKCk6IE1lbW9TdGF0ZSB7XG4gIHJldHVybiB7XG4gICAgbGFzdEtleTogLTEsXG4gICAgbGFzdE5lZWRsZTogLTEsXG4gICAgbGFzdEluZGV4OiAtMSxcbiAgfTtcbn1cblxuLyoqXG4gKiBUaGlzIG92ZXJseSBjb21wbGljYXRlZCBiZWFzdCBpcyBqdXN0IHRvIHJlY29yZCB0aGUgbGFzdCB0ZXN0ZWQgbGluZS9jb2x1bW4gYW5kIHRoZSByZXN1bHRpbmdcbiAqIGluZGV4LCBhbGxvd2luZyB1cyB0byBza2lwIGEgZmV3IHRlc3RzIGlmIG1hcHBpbmdzIGFyZSBtb25vdG9uaWNhbGx5IGluY3JlYXNpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZW1vaXplZEJpbmFyeVNlYXJjaChcbiAgaGF5c3RhY2s6IFNvdXJjZU1hcFNlZ21lbnRbXSB8IFJldmVyc2VTZWdtZW50W10sXG4gIG5lZWRsZTogbnVtYmVyLFxuICBzdGF0ZTogTWVtb1N0YXRlLFxuICBrZXk6IG51bWJlcixcbik6IG51bWJlciB7XG4gIGNvbnN0IHsgbGFzdEtleSwgbGFzdE5lZWRsZSwgbGFzdEluZGV4IH0gPSBzdGF0ZTtcblxuICBsZXQgbG93ID0gMDtcbiAgbGV0IGhpZ2ggPSBoYXlzdGFjay5sZW5ndGggLSAxO1xuICBpZiAoa2V5ID09PSBsYXN0S2V5KSB7XG4gICAgaWYgKG5lZWRsZSA9PT0gbGFzdE5lZWRsZSkge1xuICAgICAgZm91bmQgPSBsYXN0SW5kZXggIT09IC0xICYmIGhheXN0YWNrW2xhc3RJbmRleF1bQ09MVU1OXSA9PT0gbmVlZGxlO1xuICAgICAgcmV0dXJuIGxhc3RJbmRleDtcbiAgICB9XG5cbiAgICBpZiAobmVlZGxlID49IGxhc3ROZWVkbGUpIHtcbiAgICAgIC8vIGxhc3RJbmRleCBtYXkgYmUgLTEgaWYgdGhlIHByZXZpb3VzIG5lZWRsZSB3YXMgbm90IGZvdW5kLlxuICAgICAgbG93ID0gbGFzdEluZGV4ID09PSAtMSA/IDAgOiBsYXN0SW5kZXg7XG4gICAgfSBlbHNlIHtcbiAgICAgIGhpZ2ggPSBsYXN0SW5kZXg7XG4gICAgfVxuICB9XG4gIHN0YXRlLmxhc3RLZXkgPSBrZXk7XG4gIHN0YXRlLmxhc3ROZWVkbGUgPSBuZWVkbGU7XG5cbiAgcmV0dXJuIChzdGF0ZS5sYXN0SW5kZXggPSBiaW5hcnlTZWFyY2goaGF5c3RhY2ssIG5lZWRsZSwgbG93LCBoaWdoKSk7XG59XG4iLCAiaW1wb3J0IHsgQ09MVU1OLCBTT1VSQ0VTX0lOREVYLCBTT1VSQ0VfTElORSwgU09VUkNFX0NPTFVNTiB9IGZyb20gJy4vc291cmNlbWFwLXNlZ21lbnQnO1xuaW1wb3J0IHsgbWVtb2l6ZWRCaW5hcnlTZWFyY2gsIHVwcGVyQm91bmQgfSBmcm9tICcuL2JpbmFyeS1zZWFyY2gnO1xuXG5pbXBvcnQgdHlwZSB7IFJldmVyc2VTZWdtZW50LCBTb3VyY2VNYXBTZWdtZW50IH0gZnJvbSAnLi9zb3VyY2VtYXAtc2VnbWVudCc7XG5pbXBvcnQgdHlwZSB7IE1lbW9TdGF0ZSB9IGZyb20gJy4vYmluYXJ5LXNlYXJjaCc7XG5cbmV4cG9ydCB0eXBlIFNvdXJjZSA9IHtcbiAgX19wcm90b19fOiBudWxsO1xuICBbbGluZTogbnVtYmVyXTogRXhjbHVkZTxSZXZlcnNlU2VnbWVudCwgW251bWJlcl0+W107XG59O1xuXG4vLyBSZWJ1aWxkcyB0aGUgb3JpZ2luYWwgc291cmNlIGZpbGVzLCB3aXRoIG1hcHBpbmdzIHRoYXQgYXJlIG9yZGVyZWQgYnkgc291cmNlIGxpbmUvY29sdW1uIGluc3RlYWRcbi8vIG9mIGdlbmVyYXRlZCBsaW5lL2NvbHVtbi5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGJ1aWxkQnlTb3VyY2VzKFxuICBkZWNvZGVkOiByZWFkb25seSBTb3VyY2VNYXBTZWdtZW50W11bXSxcbiAgbWVtb3M6IE1lbW9TdGF0ZVtdLFxuKTogU291cmNlW10ge1xuICBjb25zdCBzb3VyY2VzOiBTb3VyY2VbXSA9IG1lbW9zLm1hcChidWlsZE51bGxBcnJheSk7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBkZWNvZGVkLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgbGluZSA9IGRlY29kZWRbaV07XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBsaW5lLmxlbmd0aDsgaisrKSB7XG4gICAgICBjb25zdCBzZWcgPSBsaW5lW2pdO1xuICAgICAgaWYgKHNlZy5sZW5ndGggPT09IDEpIGNvbnRpbnVlO1xuXG4gICAgICBjb25zdCBzb3VyY2VJbmRleCA9IHNlZ1tTT1VSQ0VTX0lOREVYXTtcbiAgICAgIGNvbnN0IHNvdXJjZUxpbmUgPSBzZWdbU09VUkNFX0xJTkVdO1xuICAgICAgY29uc3Qgc291cmNlQ29sdW1uID0gc2VnW1NPVVJDRV9DT0xVTU5dO1xuICAgICAgY29uc3Qgb3JpZ2luYWxTb3VyY2UgPSBzb3VyY2VzW3NvdXJjZUluZGV4XTtcbiAgICAgIGNvbnN0IG9yaWdpbmFsTGluZSA9IChvcmlnaW5hbFNvdXJjZVtzb3VyY2VMaW5lXSB8fD0gW10pO1xuICAgICAgY29uc3QgbWVtbyA9IG1lbW9zW3NvdXJjZUluZGV4XTtcblxuICAgICAgLy8gVGhlIGJpbmFyeSBzZWFyY2ggZWl0aGVyIGZvdW5kIGEgbWF0Y2gsIG9yIGl0IGZvdW5kIHRoZSBsZWZ0LWluZGV4IGp1c3QgYmVmb3JlIHdoZXJlIHRoZVxuICAgICAgLy8gc2VnbWVudCBzaG91bGQgZ28uIEVpdGhlciB3YXksIHdlIHdhbnQgdG8gaW5zZXJ0IGFmdGVyIHRoYXQuIEFuZCB0aGVyZSBtYXkgYmUgbXVsdGlwbGVcbiAgICAgIC8vIGdlbmVyYXRlZCBzZWdtZW50cyBhc3NvY2lhdGVkIHdpdGggYW4gb3JpZ2luYWwgbG9jYXRpb24sIHNvIHRoZXJlIG1heSBuZWVkIHRvIG1vdmUgc2V2ZXJhbFxuICAgICAgLy8gaW5kZXhlcyBiZWZvcmUgd2UgZmluZCB3aGVyZSB3ZSBuZWVkIHRvIGluc2VydC5cbiAgICAgIGxldCBpbmRleCA9IHVwcGVyQm91bmQoXG4gICAgICAgIG9yaWdpbmFsTGluZSxcbiAgICAgICAgc291cmNlQ29sdW1uLFxuICAgICAgICBtZW1vaXplZEJpbmFyeVNlYXJjaChvcmlnaW5hbExpbmUsIHNvdXJjZUNvbHVtbiwgbWVtbywgc291cmNlTGluZSksXG4gICAgICApO1xuXG4gICAgICBtZW1vLmxhc3RJbmRleCA9ICsraW5kZXg7XG4gICAgICBpbnNlcnQob3JpZ2luYWxMaW5lLCBpbmRleCwgW3NvdXJjZUNvbHVtbiwgaSwgc2VnW0NPTFVNTl1dKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc291cmNlcztcbn1cblxuZnVuY3Rpb24gaW5zZXJ0PFQ+KGFycmF5OiBUW10sIGluZGV4OiBudW1iZXIsIHZhbHVlOiBUKSB7XG4gIGZvciAobGV0IGkgPSBhcnJheS5sZW5ndGg7IGkgPiBpbmRleDsgaS0tKSB7XG4gICAgYXJyYXlbaV0gPSBhcnJheVtpIC0gMV07XG4gIH1cbiAgYXJyYXlbaW5kZXhdID0gdmFsdWU7XG59XG5cbi8vIE51bGwgYXJyYXlzIGFsbG93IHVzIHRvIHVzZSBvcmRlcmVkIGluZGV4IGtleXMgd2l0aG91dCBhY3R1YWxseSBhbGxvY2F0aW5nIGNvbnRpZ3VvdXMgbWVtb3J5IGxpa2Vcbi8vIGEgcmVhbCBhcnJheS4gV2UgdXNlIGEgbnVsbC1wcm90b3R5cGUgb2JqZWN0IHRvIGF2b2lkIHByb3RvdHlwZSBwb2xsdXRpb24gYW5kIGRlb3B0aW1pemF0aW9ucy5cbi8vIE51bWVyaWMgcHJvcGVydGllcyBvbiBvYmplY3RzIGFyZSBtYWdpY2FsbHkgc29ydGVkIGluIGFzY2VuZGluZyBvcmRlciBieSB0aGUgZW5naW5lIHJlZ2FyZGxlc3Mgb2Zcbi8vIHRoZSBpbnNlcnRpb24gb3JkZXIuIFNvLCBieSBzZXR0aW5nIGFueSBudW1lcmljIGtleXMsIGV2ZW4gb3V0IG9mIG9yZGVyLCB3ZSdsbCBnZXQgYXNjZW5kaW5nXG4vLyBvcmRlciB3aGVuIGl0ZXJhdGluZyB3aXRoIGZvci1pbi5cbmZ1bmN0aW9uIGJ1aWxkTnVsbEFycmF5PFQgZXh0ZW5kcyB7IF9fcHJvdG9fXzogbnVsbCB9PigpOiBUIHtcbiAgcmV0dXJuIHsgX19wcm90b19fOiBudWxsIH0gYXMgVDtcbn1cbiIsICJpbXBvcnQgeyBUcmFjZU1hcCwgcHJlc29ydGVkRGVjb2RlZE1hcCwgZGVjb2RlZE1hcHBpbmdzIH0gZnJvbSAnLi90cmFjZS1tYXBwaW5nJztcbmltcG9ydCB7XG4gIENPTFVNTixcbiAgU09VUkNFU19JTkRFWCxcbiAgU09VUkNFX0xJTkUsXG4gIFNPVVJDRV9DT0xVTU4sXG4gIE5BTUVTX0lOREVYLFxufSBmcm9tICcuL3NvdXJjZW1hcC1zZWdtZW50JztcblxuaW1wb3J0IHR5cGUge1xuICBEZWNvZGVkU291cmNlTWFwLFxuICBEZWNvZGVkU291cmNlTWFwWElucHV0LFxuICBFbmNvZGVkU291cmNlTWFwWElucHV0LFxuICBTZWN0aW9uZWRTb3VyY2VNYXBYSW5wdXQsXG4gIFNlY3Rpb25lZFNvdXJjZU1hcElucHV0LFxuICBTZWN0aW9uWElucHV0LFxufSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB0eXBlIHsgU291cmNlTWFwU2VnbWVudCB9IGZyb20gJy4vc291cmNlbWFwLXNlZ21lbnQnO1xuXG50eXBlIEFueU1hcCA9IHtcbiAgbmV3IChtYXA6IFNlY3Rpb25lZFNvdXJjZU1hcElucHV0LCBtYXBVcmw/OiBzdHJpbmcgfCBudWxsKTogVHJhY2VNYXA7XG4gIChtYXA6IFNlY3Rpb25lZFNvdXJjZU1hcElucHV0LCBtYXBVcmw/OiBzdHJpbmcgfCBudWxsKTogVHJhY2VNYXA7XG59O1xuXG5leHBvcnQgY29uc3QgQW55TWFwOiBBbnlNYXAgPSBmdW5jdGlvbiAobWFwLCBtYXBVcmwpIHtcbiAgY29uc3QgcGFyc2VkID0gcGFyc2UobWFwKTtcblxuICBpZiAoISgnc2VjdGlvbnMnIGluIHBhcnNlZCkpIHtcbiAgICByZXR1cm4gbmV3IFRyYWNlTWFwKHBhcnNlZCBhcyBEZWNvZGVkU291cmNlTWFwWElucHV0IHwgRW5jb2RlZFNvdXJjZU1hcFhJbnB1dCwgbWFwVXJsKTtcbiAgfVxuXG4gIGNvbnN0IG1hcHBpbmdzOiBTb3VyY2VNYXBTZWdtZW50W11bXSA9IFtdO1xuICBjb25zdCBzb3VyY2VzOiBzdHJpbmdbXSA9IFtdO1xuICBjb25zdCBzb3VyY2VzQ29udGVudDogKHN0cmluZyB8IG51bGwpW10gPSBbXTtcbiAgY29uc3QgbmFtZXM6IHN0cmluZ1tdID0gW107XG4gIGNvbnN0IGlnbm9yZUxpc3Q6IG51bWJlcltdID0gW107XG5cbiAgcmVjdXJzZShcbiAgICBwYXJzZWQsXG4gICAgbWFwVXJsLFxuICAgIG1hcHBpbmdzLFxuICAgIHNvdXJjZXMsXG4gICAgc291cmNlc0NvbnRlbnQsXG4gICAgbmFtZXMsXG4gICAgaWdub3JlTGlzdCxcbiAgICAwLFxuICAgIDAsXG4gICAgSW5maW5pdHksXG4gICAgSW5maW5pdHksXG4gICk7XG5cbiAgY29uc3Qgam9pbmVkOiBEZWNvZGVkU291cmNlTWFwID0ge1xuICAgIHZlcnNpb246IDMsXG4gICAgZmlsZTogcGFyc2VkLmZpbGUsXG4gICAgbmFtZXMsXG4gICAgc291cmNlcyxcbiAgICBzb3VyY2VzQ29udGVudCxcbiAgICBtYXBwaW5ncyxcbiAgICBpZ25vcmVMaXN0LFxuICB9O1xuXG4gIHJldHVybiBwcmVzb3J0ZWREZWNvZGVkTWFwKGpvaW5lZCk7XG59IGFzIEFueU1hcDtcblxuZnVuY3Rpb24gcGFyc2U8VD4obWFwOiBUKTogRXhjbHVkZTxULCBzdHJpbmc+IHtcbiAgcmV0dXJuIHR5cGVvZiBtYXAgPT09ICdzdHJpbmcnID8gSlNPTi5wYXJzZShtYXApIDogbWFwO1xufVxuXG5mdW5jdGlvbiByZWN1cnNlKFxuICBpbnB1dDogU2VjdGlvbmVkU291cmNlTWFwWElucHV0LFxuICBtYXBVcmw6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQsXG4gIG1hcHBpbmdzOiBTb3VyY2VNYXBTZWdtZW50W11bXSxcbiAgc291cmNlczogc3RyaW5nW10sXG4gIHNvdXJjZXNDb250ZW50OiAoc3RyaW5nIHwgbnVsbClbXSxcbiAgbmFtZXM6IHN0cmluZ1tdLFxuICBpZ25vcmVMaXN0OiBudW1iZXJbXSxcbiAgbGluZU9mZnNldDogbnVtYmVyLFxuICBjb2x1bW5PZmZzZXQ6IG51bWJlcixcbiAgc3RvcExpbmU6IG51bWJlcixcbiAgc3RvcENvbHVtbjogbnVtYmVyLFxuKSB7XG4gIGNvbnN0IHsgc2VjdGlvbnMgfSA9IGlucHV0O1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHNlY3Rpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgeyBtYXAsIG9mZnNldCB9ID0gc2VjdGlvbnNbaV07XG5cbiAgICBsZXQgc2wgPSBzdG9wTGluZTtcbiAgICBsZXQgc2MgPSBzdG9wQ29sdW1uO1xuICAgIGlmIChpICsgMSA8IHNlY3Rpb25zLmxlbmd0aCkge1xuICAgICAgY29uc3QgbmV4dE9mZnNldCA9IHNlY3Rpb25zW2kgKyAxXS5vZmZzZXQ7XG4gICAgICBzbCA9IE1hdGgubWluKHN0b3BMaW5lLCBsaW5lT2Zmc2V0ICsgbmV4dE9mZnNldC5saW5lKTtcblxuICAgICAgaWYgKHNsID09PSBzdG9wTGluZSkge1xuICAgICAgICBzYyA9IE1hdGgubWluKHN0b3BDb2x1bW4sIGNvbHVtbk9mZnNldCArIG5leHRPZmZzZXQuY29sdW1uKTtcbiAgICAgIH0gZWxzZSBpZiAoc2wgPCBzdG9wTGluZSkge1xuICAgICAgICBzYyA9IGNvbHVtbk9mZnNldCArIG5leHRPZmZzZXQuY29sdW1uO1xuICAgICAgfVxuICAgIH1cblxuICAgIGFkZFNlY3Rpb24oXG4gICAgICBtYXAsXG4gICAgICBtYXBVcmwsXG4gICAgICBtYXBwaW5ncyxcbiAgICAgIHNvdXJjZXMsXG4gICAgICBzb3VyY2VzQ29udGVudCxcbiAgICAgIG5hbWVzLFxuICAgICAgaWdub3JlTGlzdCxcbiAgICAgIGxpbmVPZmZzZXQgKyBvZmZzZXQubGluZSxcbiAgICAgIGNvbHVtbk9mZnNldCArIG9mZnNldC5jb2x1bW4sXG4gICAgICBzbCxcbiAgICAgIHNjLFxuICAgICk7XG4gIH1cbn1cblxuZnVuY3Rpb24gYWRkU2VjdGlvbihcbiAgaW5wdXQ6IFNlY3Rpb25YSW5wdXRbJ21hcCddLFxuICBtYXBVcmw6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQsXG4gIG1hcHBpbmdzOiBTb3VyY2VNYXBTZWdtZW50W11bXSxcbiAgc291cmNlczogc3RyaW5nW10sXG4gIHNvdXJjZXNDb250ZW50OiAoc3RyaW5nIHwgbnVsbClbXSxcbiAgbmFtZXM6IHN0cmluZ1tdLFxuICBpZ25vcmVMaXN0OiBudW1iZXJbXSxcbiAgbGluZU9mZnNldDogbnVtYmVyLFxuICBjb2x1bW5PZmZzZXQ6IG51bWJlcixcbiAgc3RvcExpbmU6IG51bWJlcixcbiAgc3RvcENvbHVtbjogbnVtYmVyLFxuKSB7XG4gIGNvbnN0IHBhcnNlZCA9IHBhcnNlKGlucHV0KTtcbiAgaWYgKCdzZWN0aW9ucycgaW4gcGFyc2VkKSByZXR1cm4gcmVjdXJzZSguLi4oYXJndW1lbnRzIGFzIHVua25vd24gYXMgUGFyYW1ldGVyczx0eXBlb2YgcmVjdXJzZT4pKTtcblxuICBjb25zdCBtYXAgPSBuZXcgVHJhY2VNYXAocGFyc2VkLCBtYXBVcmwpO1xuICBjb25zdCBzb3VyY2VzT2Zmc2V0ID0gc291cmNlcy5sZW5ndGg7XG4gIGNvbnN0IG5hbWVzT2Zmc2V0ID0gbmFtZXMubGVuZ3RoO1xuICBjb25zdCBkZWNvZGVkID0gZGVjb2RlZE1hcHBpbmdzKG1hcCk7XG4gIGNvbnN0IHsgcmVzb2x2ZWRTb3VyY2VzLCBzb3VyY2VzQ29udGVudDogY29udGVudHMsIGlnbm9yZUxpc3Q6IGlnbm9yZXMgfSA9IG1hcDtcblxuICBhcHBlbmQoc291cmNlcywgcmVzb2x2ZWRTb3VyY2VzKTtcbiAgYXBwZW5kKG5hbWVzLCBtYXAubmFtZXMpO1xuXG4gIGlmIChjb250ZW50cykgYXBwZW5kKHNvdXJjZXNDb250ZW50LCBjb250ZW50cyk7XG4gIGVsc2UgZm9yIChsZXQgaSA9IDA7IGkgPCByZXNvbHZlZFNvdXJjZXMubGVuZ3RoOyBpKyspIHNvdXJjZXNDb250ZW50LnB1c2gobnVsbCk7XG5cbiAgaWYgKGlnbm9yZXMpIGZvciAobGV0IGkgPSAwOyBpIDwgaWdub3Jlcy5sZW5ndGg7IGkrKykgaWdub3JlTGlzdC5wdXNoKGlnbm9yZXNbaV0gKyBzb3VyY2VzT2Zmc2V0KTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGRlY29kZWQubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBsaW5lSSA9IGxpbmVPZmZzZXQgKyBpO1xuXG4gICAgLy8gV2UgY2FuIG9ubHkgYWRkIHNvIG1hbnkgbGluZXMgYmVmb3JlIHdlIHN0ZXAgaW50byB0aGUgcmFuZ2UgdGhhdCB0aGUgbmV4dCBzZWN0aW9uJ3MgbWFwXG4gICAgLy8gY29udHJvbHMuIFdoZW4gd2UgZ2V0IHRvIHRoZSBsYXN0IGxpbmUsIHRoZW4gd2UnbGwgc3RhcnQgY2hlY2tpbmcgdGhlIHNlZ21lbnRzIHRvIHNlZSBpZlxuICAgIC8vIHRoZXkndmUgY3Jvc3NlZCBpbnRvIHRoZSBjb2x1bW4gcmFuZ2UuIEJ1dCBpdCBtYXkgbm90IGhhdmUgYW55IGNvbHVtbnMgdGhhdCBvdmVyc3RlcCwgc28gd2VcbiAgICAvLyBzdGlsbCBuZWVkIHRvIGNoZWNrIHRoYXQgd2UgZG9uJ3Qgb3ZlcnN0ZXAgbGluZXMsIHRvby5cbiAgICBpZiAobGluZUkgPiBzdG9wTGluZSkgcmV0dXJuO1xuXG4gICAgLy8gVGhlIG91dCBsaW5lIG1heSBhbHJlYWR5IGV4aXN0IGluIG1hcHBpbmdzIChpZiB3ZSdyZSBjb250aW51aW5nIHRoZSBsaW5lIHN0YXJ0ZWQgYnkgYVxuICAgIC8vIHByZXZpb3VzIHNlY3Rpb24pLiBPciwgd2UgbWF5IGhhdmUganVtcGVkIGFoZWFkIHNldmVyYWwgbGluZXMgdG8gc3RhcnQgdGhpcyBzZWN0aW9uLlxuICAgIGNvbnN0IG91dCA9IGdldExpbmUobWFwcGluZ3MsIGxpbmVJKTtcbiAgICAvLyBPbiB0aGUgMHRoIGxvb3AsIHRoZSBzZWN0aW9uJ3MgY29sdW1uIG9mZnNldCBzaGlmdHMgdXMgZm9yd2FyZC4gT24gYWxsIG90aGVyIGxpbmVzIChzaW5jZSB0aGVcbiAgICAvLyBtYXAgY2FuIGJlIG11bHRpcGxlIGxpbmVzKSwgaXQgZG9lc24ndC5cbiAgICBjb25zdCBjT2Zmc2V0ID0gaSA9PT0gMCA/IGNvbHVtbk9mZnNldCA6IDA7XG5cbiAgICBjb25zdCBsaW5lID0gZGVjb2RlZFtpXTtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IGxpbmUubGVuZ3RoOyBqKyspIHtcbiAgICAgIGNvbnN0IHNlZyA9IGxpbmVbal07XG4gICAgICBjb25zdCBjb2x1bW4gPSBjT2Zmc2V0ICsgc2VnW0NPTFVNTl07XG5cbiAgICAgIC8vIElmIHRoaXMgc2VnbWVudCBzdGVwcyBpbnRvIHRoZSBjb2x1bW4gcmFuZ2UgdGhhdCB0aGUgbmV4dCBzZWN0aW9uJ3MgbWFwIGNvbnRyb2xzLCB3ZSBuZWVkXG4gICAgICAvLyB0byBzdG9wIGVhcmx5LlxuICAgICAgaWYgKGxpbmVJID09PSBzdG9wTGluZSAmJiBjb2x1bW4gPj0gc3RvcENvbHVtbikgcmV0dXJuO1xuXG4gICAgICBpZiAoc2VnLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICBvdXQucHVzaChbY29sdW1uXSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBzb3VyY2VzSW5kZXggPSBzb3VyY2VzT2Zmc2V0ICsgc2VnW1NPVVJDRVNfSU5ERVhdO1xuICAgICAgY29uc3Qgc291cmNlTGluZSA9IHNlZ1tTT1VSQ0VfTElORV07XG4gICAgICBjb25zdCBzb3VyY2VDb2x1bW4gPSBzZWdbU09VUkNFX0NPTFVNTl07XG4gICAgICBvdXQucHVzaChcbiAgICAgICAgc2VnLmxlbmd0aCA9PT0gNFxuICAgICAgICAgID8gW2NvbHVtbiwgc291cmNlc0luZGV4LCBzb3VyY2VMaW5lLCBzb3VyY2VDb2x1bW5dXG4gICAgICAgICAgOiBbY29sdW1uLCBzb3VyY2VzSW5kZXgsIHNvdXJjZUxpbmUsIHNvdXJjZUNvbHVtbiwgbmFtZXNPZmZzZXQgKyBzZWdbTkFNRVNfSU5ERVhdXSxcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGFwcGVuZDxUPihhcnI6IFRbXSwgb3RoZXI6IFRbXSkge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG90aGVyLmxlbmd0aDsgaSsrKSBhcnIucHVzaChvdGhlcltpXSk7XG59XG5cbmZ1bmN0aW9uIGdldExpbmU8VD4oYXJyOiBUW11bXSwgaW5kZXg6IG51bWJlcik6IFRbXSB7XG4gIGZvciAobGV0IGkgPSBhcnIubGVuZ3RoOyBpIDw9IGluZGV4OyBpKyspIGFycltpXSA9IFtdO1xuICByZXR1cm4gYXJyW2luZGV4XTtcbn1cbiIsICJpbXBvcnQgeyBlbmNvZGUsIGRlY29kZSB9IGZyb20gJ0BqcmlkZ2V3ZWxsL3NvdXJjZW1hcC1jb2RlYyc7XG5cbmltcG9ydCByZXNvbHZlIGZyb20gJy4vcmVzb2x2ZSc7XG5pbXBvcnQgc3RyaXBGaWxlbmFtZSBmcm9tICcuL3N0cmlwLWZpbGVuYW1lJztcbmltcG9ydCBtYXliZVNvcnQgZnJvbSAnLi9zb3J0JztcbmltcG9ydCBidWlsZEJ5U291cmNlcyBmcm9tICcuL2J5LXNvdXJjZSc7XG5pbXBvcnQge1xuICBtZW1vaXplZFN0YXRlLFxuICBtZW1vaXplZEJpbmFyeVNlYXJjaCxcbiAgdXBwZXJCb3VuZCxcbiAgbG93ZXJCb3VuZCxcbiAgZm91bmQgYXMgYnNGb3VuZCxcbn0gZnJvbSAnLi9iaW5hcnktc2VhcmNoJztcbmltcG9ydCB7XG4gIENPTFVNTixcbiAgU09VUkNFU19JTkRFWCxcbiAgU09VUkNFX0xJTkUsXG4gIFNPVVJDRV9DT0xVTU4sXG4gIE5BTUVTX0lOREVYLFxuICBSRVZfR0VORVJBVEVEX0xJTkUsXG4gIFJFVl9HRU5FUkFURURfQ09MVU1OLFxufSBmcm9tICcuL3NvdXJjZW1hcC1zZWdtZW50JztcblxuaW1wb3J0IHR5cGUgeyBTb3VyY2VNYXBTZWdtZW50LCBSZXZlcnNlU2VnbWVudCB9IGZyb20gJy4vc291cmNlbWFwLXNlZ21lbnQnO1xuaW1wb3J0IHR5cGUge1xuICBTb3VyY2VNYXBWMyxcbiAgRGVjb2RlZFNvdXJjZU1hcCxcbiAgRW5jb2RlZFNvdXJjZU1hcCxcbiAgSW52YWxpZE9yaWdpbmFsTWFwcGluZyxcbiAgT3JpZ2luYWxNYXBwaW5nLFxuICBJbnZhbGlkR2VuZXJhdGVkTWFwcGluZyxcbiAgR2VuZXJhdGVkTWFwcGluZyxcbiAgU291cmNlTWFwSW5wdXQsXG4gIE5lZWRsZSxcbiAgU291cmNlTmVlZGxlLFxuICBTb3VyY2VNYXAsXG4gIEVhY2hNYXBwaW5nLFxuICBCaWFzLFxuICBYSW5wdXQsXG59IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHR5cGUgeyBTb3VyY2UgfSBmcm9tICcuL2J5LXNvdXJjZSc7XG5pbXBvcnQgdHlwZSB7IE1lbW9TdGF0ZSB9IGZyb20gJy4vYmluYXJ5LXNlYXJjaCc7XG5cbmV4cG9ydCB0eXBlIHsgU291cmNlTWFwU2VnbWVudCB9IGZyb20gJy4vc291cmNlbWFwLXNlZ21lbnQnO1xuZXhwb3J0IHR5cGUge1xuICBTb3VyY2VNYXAsXG4gIERlY29kZWRTb3VyY2VNYXAsXG4gIEVuY29kZWRTb3VyY2VNYXAsXG4gIFNlY3Rpb24sXG4gIFNlY3Rpb25lZFNvdXJjZU1hcCxcbiAgU291cmNlTWFwVjMsXG4gIEJpYXMsXG4gIEVhY2hNYXBwaW5nLFxuICBHZW5lcmF0ZWRNYXBwaW5nLFxuICBJbnZhbGlkR2VuZXJhdGVkTWFwcGluZyxcbiAgSW52YWxpZE9yaWdpbmFsTWFwcGluZyxcbiAgTmVlZGxlLFxuICBPcmlnaW5hbE1hcHBpbmcsXG4gIE9yaWdpbmFsTWFwcGluZyBhcyBNYXBwaW5nLFxuICBTZWN0aW9uZWRTb3VyY2VNYXBJbnB1dCxcbiAgU291cmNlTWFwSW5wdXQsXG4gIFNvdXJjZU5lZWRsZSxcbiAgWElucHV0LFxuICBFbmNvZGVkU291cmNlTWFwWElucHV0LFxuICBEZWNvZGVkU291cmNlTWFwWElucHV0LFxuICBTZWN0aW9uZWRTb3VyY2VNYXBYSW5wdXQsXG4gIFNlY3Rpb25YSW5wdXQsXG59IGZyb20gJy4vdHlwZXMnO1xuXG5pbnRlcmZhY2UgUHVibGljTWFwIHtcbiAgX2VuY29kZWQ6IFRyYWNlTWFwWydfZW5jb2RlZCddO1xuICBfZGVjb2RlZDogVHJhY2VNYXBbJ19kZWNvZGVkJ107XG4gIF9kZWNvZGVkTWVtbzogVHJhY2VNYXBbJ19kZWNvZGVkTWVtbyddO1xuICBfYnlTb3VyY2VzOiBUcmFjZU1hcFsnX2J5U291cmNlcyddO1xuICBfYnlTb3VyY2VNZW1vczogVHJhY2VNYXBbJ19ieVNvdXJjZU1lbW9zJ107XG59XG5cbmNvbnN0IExJTkVfR1RSX1pFUk8gPSAnYGxpbmVgIG11c3QgYmUgZ3JlYXRlciB0aGFuIDAgKGxpbmVzIHN0YXJ0IGF0IGxpbmUgMSknO1xuY29uc3QgQ09MX0dUUl9FUV9aRVJPID0gJ2Bjb2x1bW5gIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDAgKGNvbHVtbnMgc3RhcnQgYXQgY29sdW1uIDApJztcblxuZXhwb3J0IGNvbnN0IExFQVNUX1VQUEVSX0JPVU5EID0gLTE7XG5leHBvcnQgY29uc3QgR1JFQVRFU1RfTE9XRVJfQk9VTkQgPSAxO1xuXG5leHBvcnQgeyBBbnlNYXAgfSBmcm9tICcuL2FueS1tYXAnO1xuXG5leHBvcnQgY2xhc3MgVHJhY2VNYXAgaW1wbGVtZW50cyBTb3VyY2VNYXAge1xuICBkZWNsYXJlIHZlcnNpb246IFNvdXJjZU1hcFYzWyd2ZXJzaW9uJ107XG4gIGRlY2xhcmUgZmlsZTogU291cmNlTWFwVjNbJ2ZpbGUnXTtcbiAgZGVjbGFyZSBuYW1lczogU291cmNlTWFwVjNbJ25hbWVzJ107XG4gIGRlY2xhcmUgc291cmNlUm9vdDogU291cmNlTWFwVjNbJ3NvdXJjZVJvb3QnXTtcbiAgZGVjbGFyZSBzb3VyY2VzOiBTb3VyY2VNYXBWM1snc291cmNlcyddO1xuICBkZWNsYXJlIHNvdXJjZXNDb250ZW50OiBTb3VyY2VNYXBWM1snc291cmNlc0NvbnRlbnQnXTtcbiAgZGVjbGFyZSBpZ25vcmVMaXN0OiBTb3VyY2VNYXBWM1snaWdub3JlTGlzdCddO1xuXG4gIGRlY2xhcmUgcmVzb2x2ZWRTb3VyY2VzOiBzdHJpbmdbXTtcbiAgcHJpdmF0ZSBkZWNsYXJlIF9lbmNvZGVkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgcHJpdmF0ZSBkZWNsYXJlIF9kZWNvZGVkOiBTb3VyY2VNYXBTZWdtZW50W11bXSB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBkZWNsYXJlIF9kZWNvZGVkTWVtbzogTWVtb1N0YXRlO1xuXG4gIHByaXZhdGUgZGVjbGFyZSBfYnlTb3VyY2VzOiBTb3VyY2VbXSB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBkZWNsYXJlIF9ieVNvdXJjZU1lbW9zOiBNZW1vU3RhdGVbXSB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihtYXA6IFNvdXJjZU1hcElucHV0LCBtYXBVcmw/OiBzdHJpbmcgfCBudWxsKSB7XG4gICAgY29uc3QgaXNTdHJpbmcgPSB0eXBlb2YgbWFwID09PSAnc3RyaW5nJztcblxuICAgIGlmICghaXNTdHJpbmcgJiYgKG1hcCBhcyB1bmtub3duIGFzIHsgX2RlY29kZWRNZW1vOiBhbnkgfSkuX2RlY29kZWRNZW1vKSByZXR1cm4gbWFwIGFzIFRyYWNlTWFwO1xuXG4gICAgY29uc3QgcGFyc2VkID0gKGlzU3RyaW5nID8gSlNPTi5wYXJzZShtYXApIDogbWFwKSBhcyBEZWNvZGVkU291cmNlTWFwIHwgRW5jb2RlZFNvdXJjZU1hcDtcblxuICAgIGNvbnN0IHsgdmVyc2lvbiwgZmlsZSwgbmFtZXMsIHNvdXJjZVJvb3QsIHNvdXJjZXMsIHNvdXJjZXNDb250ZW50IH0gPSBwYXJzZWQ7XG4gICAgdGhpcy52ZXJzaW9uID0gdmVyc2lvbjtcbiAgICB0aGlzLmZpbGUgPSBmaWxlO1xuICAgIHRoaXMubmFtZXMgPSBuYW1lcyB8fCBbXTtcbiAgICB0aGlzLnNvdXJjZVJvb3QgPSBzb3VyY2VSb290O1xuICAgIHRoaXMuc291cmNlcyA9IHNvdXJjZXM7XG4gICAgdGhpcy5zb3VyY2VzQ29udGVudCA9IHNvdXJjZXNDb250ZW50O1xuICAgIHRoaXMuaWdub3JlTGlzdCA9IHBhcnNlZC5pZ25vcmVMaXN0IHx8IChwYXJzZWQgYXMgWElucHV0KS54X2dvb2dsZV9pZ25vcmVMaXN0IHx8IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IGZyb20gPSByZXNvbHZlKHNvdXJjZVJvb3QgfHwgJycsIHN0cmlwRmlsZW5hbWUobWFwVXJsKSk7XG4gICAgdGhpcy5yZXNvbHZlZFNvdXJjZXMgPSBzb3VyY2VzLm1hcCgocykgPT4gcmVzb2x2ZShzIHx8ICcnLCBmcm9tKSk7XG5cbiAgICBjb25zdCB7IG1hcHBpbmdzIH0gPSBwYXJzZWQ7XG4gICAgaWYgKHR5cGVvZiBtYXBwaW5ncyA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRoaXMuX2VuY29kZWQgPSBtYXBwaW5ncztcbiAgICAgIHRoaXMuX2RlY29kZWQgPSB1bmRlZmluZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2VuY29kZWQgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLl9kZWNvZGVkID0gbWF5YmVTb3J0KG1hcHBpbmdzLCBpc1N0cmluZyk7XG4gICAgfVxuXG4gICAgdGhpcy5fZGVjb2RlZE1lbW8gPSBtZW1vaXplZFN0YXRlKCk7XG4gICAgdGhpcy5fYnlTb3VyY2VzID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuX2J5U291cmNlTWVtb3MgPSB1bmRlZmluZWQ7XG4gIH1cbn1cblxuLyoqXG4gKiBUeXBlc2NyaXB0IGRvZXNuJ3QgYWxsb3cgZnJpZW5kIGFjY2VzcyB0byBwcml2YXRlIGZpZWxkcywgc28gdGhpcyBqdXN0IGNhc3RzIHRoZSBtYXAgaW50byBhIHR5cGVcbiAqIHdpdGggcHVibGljIGFjY2VzcyBtb2RpZmllcnMuXG4gKi9cbmZ1bmN0aW9uIGNhc3QobWFwOiB1bmtub3duKTogUHVibGljTWFwIHtcbiAgcmV0dXJuIG1hcCBhcyBhbnk7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgZW5jb2RlZCAoVkxRIHN0cmluZykgZm9ybSBvZiB0aGUgU291cmNlTWFwJ3MgbWFwcGluZ3MgZmllbGQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbmNvZGVkTWFwcGluZ3MobWFwOiBUcmFjZU1hcCk6IEVuY29kZWRTb3VyY2VNYXBbJ21hcHBpbmdzJ10ge1xuICByZXR1cm4gKGNhc3QobWFwKS5fZW5jb2RlZCA/Pz0gZW5jb2RlKGNhc3QobWFwKS5fZGVjb2RlZCEpKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBkZWNvZGVkIChhcnJheSBvZiBsaW5lcyBvZiBzZWdtZW50cykgZm9ybSBvZiB0aGUgU291cmNlTWFwJ3MgbWFwcGluZ3MgZmllbGQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVkTWFwcGluZ3MobWFwOiBUcmFjZU1hcCk6IFJlYWRvbmx5PERlY29kZWRTb3VyY2VNYXBbJ21hcHBpbmdzJ10+IHtcbiAgcmV0dXJuIChjYXN0KG1hcCkuX2RlY29kZWQgfHw9IGRlY29kZShjYXN0KG1hcCkuX2VuY29kZWQhKSk7XG59XG5cbi8qKlxuICogQSBsb3ctbGV2ZWwgQVBJIHRvIGZpbmQgdGhlIHNlZ21lbnQgYXNzb2NpYXRlZCB3aXRoIGEgZ2VuZXJhdGVkIGxpbmUvY29sdW1uICh0aGluaywgZnJvbSBhXG4gKiBzdGFjayB0cmFjZSkuIExpbmUgYW5kIGNvbHVtbiBoZXJlIGFyZSAwLWJhc2VkLCB1bmxpa2UgYG9yaWdpbmFsUG9zaXRpb25Gb3JgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdHJhY2VTZWdtZW50KFxuICBtYXA6IFRyYWNlTWFwLFxuICBsaW5lOiBudW1iZXIsXG4gIGNvbHVtbjogbnVtYmVyLFxuKTogUmVhZG9ubHk8U291cmNlTWFwU2VnbWVudD4gfCBudWxsIHtcbiAgY29uc3QgZGVjb2RlZCA9IGRlY29kZWRNYXBwaW5ncyhtYXApO1xuXG4gIC8vIEl0J3MgY29tbW9uIGZvciBwYXJlbnQgc291cmNlIG1hcHMgdG8gaGF2ZSBwb2ludGVycyB0byBsaW5lcyB0aGF0IGhhdmUgbm9cbiAgLy8gbWFwcGluZyAobGlrZSBhIFwiLy8jIHNvdXJjZU1hcHBpbmdVUkw9XCIpIGF0IHRoZSBlbmQgb2YgdGhlIGNoaWxkIGZpbGUuXG4gIGlmIChsaW5lID49IGRlY29kZWQubGVuZ3RoKSByZXR1cm4gbnVsbDtcblxuICBjb25zdCBzZWdtZW50cyA9IGRlY29kZWRbbGluZV07XG4gIGNvbnN0IGluZGV4ID0gdHJhY2VTZWdtZW50SW50ZXJuYWwoXG4gICAgc2VnbWVudHMsXG4gICAgY2FzdChtYXApLl9kZWNvZGVkTWVtbyxcbiAgICBsaW5lLFxuICAgIGNvbHVtbixcbiAgICBHUkVBVEVTVF9MT1dFUl9CT1VORCxcbiAgKTtcblxuICByZXR1cm4gaW5kZXggPT09IC0xID8gbnVsbCA6IHNlZ21lbnRzW2luZGV4XTtcbn1cblxuLyoqXG4gKiBBIGhpZ2hlci1sZXZlbCBBUEkgdG8gZmluZCB0aGUgc291cmNlL2xpbmUvY29sdW1uIGFzc29jaWF0ZWQgd2l0aCBhIGdlbmVyYXRlZCBsaW5lL2NvbHVtblxuICogKHRoaW5rLCBmcm9tIGEgc3RhY2sgdHJhY2UpLiBMaW5lIGlzIDEtYmFzZWQsIGJ1dCBjb2x1bW4gaXMgMC1iYXNlZCwgZHVlIHRvIGxlZ2FjeSBiZWhhdmlvciBpblxuICogYHNvdXJjZS1tYXBgIGxpYnJhcnkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvcmlnaW5hbFBvc2l0aW9uRm9yKFxuICBtYXA6IFRyYWNlTWFwLFxuICBuZWVkbGU6IE5lZWRsZSxcbik6IE9yaWdpbmFsTWFwcGluZyB8IEludmFsaWRPcmlnaW5hbE1hcHBpbmcge1xuICBsZXQgeyBsaW5lLCBjb2x1bW4sIGJpYXMgfSA9IG5lZWRsZTtcbiAgbGluZS0tO1xuICBpZiAobGluZSA8IDApIHRocm93IG5ldyBFcnJvcihMSU5FX0dUUl9aRVJPKTtcbiAgaWYgKGNvbHVtbiA8IDApIHRocm93IG5ldyBFcnJvcihDT0xfR1RSX0VRX1pFUk8pO1xuXG4gIGNvbnN0IGRlY29kZWQgPSBkZWNvZGVkTWFwcGluZ3MobWFwKTtcblxuICAvLyBJdCdzIGNvbW1vbiBmb3IgcGFyZW50IHNvdXJjZSBtYXBzIHRvIGhhdmUgcG9pbnRlcnMgdG8gbGluZXMgdGhhdCBoYXZlIG5vXG4gIC8vIG1hcHBpbmcgKGxpa2UgYSBcIi8vIyBzb3VyY2VNYXBwaW5nVVJMPVwiKSBhdCB0aGUgZW5kIG9mIHRoZSBjaGlsZCBmaWxlLlxuICBpZiAobGluZSA+PSBkZWNvZGVkLmxlbmd0aCkgcmV0dXJuIE9NYXBwaW5nKG51bGwsIG51bGwsIG51bGwsIG51bGwpO1xuXG4gIGNvbnN0IHNlZ21lbnRzID0gZGVjb2RlZFtsaW5lXTtcbiAgY29uc3QgaW5kZXggPSB0cmFjZVNlZ21lbnRJbnRlcm5hbChcbiAgICBzZWdtZW50cyxcbiAgICBjYXN0KG1hcCkuX2RlY29kZWRNZW1vLFxuICAgIGxpbmUsXG4gICAgY29sdW1uLFxuICAgIGJpYXMgfHwgR1JFQVRFU1RfTE9XRVJfQk9VTkQsXG4gICk7XG5cbiAgaWYgKGluZGV4ID09PSAtMSkgcmV0dXJuIE9NYXBwaW5nKG51bGwsIG51bGwsIG51bGwsIG51bGwpO1xuXG4gIGNvbnN0IHNlZ21lbnQgPSBzZWdtZW50c1tpbmRleF07XG4gIGlmIChzZWdtZW50Lmxlbmd0aCA9PT0gMSkgcmV0dXJuIE9NYXBwaW5nKG51bGwsIG51bGwsIG51bGwsIG51bGwpO1xuXG4gIGNvbnN0IHsgbmFtZXMsIHJlc29sdmVkU291cmNlcyB9ID0gbWFwO1xuICByZXR1cm4gT01hcHBpbmcoXG4gICAgcmVzb2x2ZWRTb3VyY2VzW3NlZ21lbnRbU09VUkNFU19JTkRFWF1dLFxuICAgIHNlZ21lbnRbU09VUkNFX0xJTkVdICsgMSxcbiAgICBzZWdtZW50W1NPVVJDRV9DT0xVTU5dLFxuICAgIHNlZ21lbnQubGVuZ3RoID09PSA1ID8gbmFtZXNbc2VnbWVudFtOQU1FU19JTkRFWF1dIDogbnVsbCxcbiAgKTtcbn1cblxuLyoqXG4gKiBGaW5kcyB0aGUgZ2VuZXJhdGVkIGxpbmUvY29sdW1uIHBvc2l0aW9uIG9mIHRoZSBwcm92aWRlZCBzb3VyY2UvbGluZS9jb2x1bW4gc291cmNlIHBvc2l0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVkUG9zaXRpb25Gb3IoXG4gIG1hcDogVHJhY2VNYXAsXG4gIG5lZWRsZTogU291cmNlTmVlZGxlLFxuKTogR2VuZXJhdGVkTWFwcGluZyB8IEludmFsaWRHZW5lcmF0ZWRNYXBwaW5nIHtcbiAgY29uc3QgeyBzb3VyY2UsIGxpbmUsIGNvbHVtbiwgYmlhcyB9ID0gbmVlZGxlO1xuICByZXR1cm4gZ2VuZXJhdGVkUG9zaXRpb24obWFwLCBzb3VyY2UsIGxpbmUsIGNvbHVtbiwgYmlhcyB8fCBHUkVBVEVTVF9MT1dFUl9CT1VORCwgZmFsc2UpO1xufVxuXG4vKipcbiAqIEZpbmRzIGFsbCBnZW5lcmF0ZWQgbGluZS9jb2x1bW4gcG9zaXRpb25zIG9mIHRoZSBwcm92aWRlZCBzb3VyY2UvbGluZS9jb2x1bW4gc291cmNlIHBvc2l0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYWxsR2VuZXJhdGVkUG9zaXRpb25zRm9yKG1hcDogVHJhY2VNYXAsIG5lZWRsZTogU291cmNlTmVlZGxlKTogR2VuZXJhdGVkTWFwcGluZ1tdIHtcbiAgY29uc3QgeyBzb3VyY2UsIGxpbmUsIGNvbHVtbiwgYmlhcyB9ID0gbmVlZGxlO1xuICAvLyBTb3VyY2VNYXBDb25zdW1lciB1c2VzIExFQVNUX1VQUEVSX0JPVU5EIGZvciBzb21lIHJlYXNvbiwgc28gd2UgZm9sbG93IHN1aXQuXG4gIHJldHVybiBnZW5lcmF0ZWRQb3NpdGlvbihtYXAsIHNvdXJjZSwgbGluZSwgY29sdW1uLCBiaWFzIHx8IExFQVNUX1VQUEVSX0JPVU5ELCB0cnVlKTtcbn1cblxuLyoqXG4gKiBJdGVyYXRlcyBlYWNoIG1hcHBpbmcgaW4gZ2VuZXJhdGVkIHBvc2l0aW9uIG9yZGVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZWFjaE1hcHBpbmcobWFwOiBUcmFjZU1hcCwgY2I6IChtYXBwaW5nOiBFYWNoTWFwcGluZykgPT4gdm9pZCk6IHZvaWQge1xuICBjb25zdCBkZWNvZGVkID0gZGVjb2RlZE1hcHBpbmdzKG1hcCk7XG4gIGNvbnN0IHsgbmFtZXMsIHJlc29sdmVkU291cmNlcyB9ID0gbWFwO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZGVjb2RlZC5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGxpbmUgPSBkZWNvZGVkW2ldO1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgbGluZS5sZW5ndGg7IGorKykge1xuICAgICAgY29uc3Qgc2VnID0gbGluZVtqXTtcblxuICAgICAgY29uc3QgZ2VuZXJhdGVkTGluZSA9IGkgKyAxO1xuICAgICAgY29uc3QgZ2VuZXJhdGVkQ29sdW1uID0gc2VnWzBdO1xuICAgICAgbGV0IHNvdXJjZSA9IG51bGw7XG4gICAgICBsZXQgb3JpZ2luYWxMaW5lID0gbnVsbDtcbiAgICAgIGxldCBvcmlnaW5hbENvbHVtbiA9IG51bGw7XG4gICAgICBsZXQgbmFtZSA9IG51bGw7XG4gICAgICBpZiAoc2VnLmxlbmd0aCAhPT0gMSkge1xuICAgICAgICBzb3VyY2UgPSByZXNvbHZlZFNvdXJjZXNbc2VnWzFdXTtcbiAgICAgICAgb3JpZ2luYWxMaW5lID0gc2VnWzJdICsgMTtcbiAgICAgICAgb3JpZ2luYWxDb2x1bW4gPSBzZWdbM107XG4gICAgICB9XG4gICAgICBpZiAoc2VnLmxlbmd0aCA9PT0gNSkgbmFtZSA9IG5hbWVzW3NlZ1s0XV07XG5cbiAgICAgIGNiKHtcbiAgICAgICAgZ2VuZXJhdGVkTGluZSxcbiAgICAgICAgZ2VuZXJhdGVkQ29sdW1uLFxuICAgICAgICBzb3VyY2UsXG4gICAgICAgIG9yaWdpbmFsTGluZSxcbiAgICAgICAgb3JpZ2luYWxDb2x1bW4sXG4gICAgICAgIG5hbWUsXG4gICAgICB9IGFzIEVhY2hNYXBwaW5nKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gc291cmNlSW5kZXgobWFwOiBUcmFjZU1hcCwgc291cmNlOiBzdHJpbmcpOiBudW1iZXIge1xuICBjb25zdCB7IHNvdXJjZXMsIHJlc29sdmVkU291cmNlcyB9ID0gbWFwO1xuICBsZXQgaW5kZXggPSBzb3VyY2VzLmluZGV4T2Yoc291cmNlKTtcbiAgaWYgKGluZGV4ID09PSAtMSkgaW5kZXggPSByZXNvbHZlZFNvdXJjZXMuaW5kZXhPZihzb3VyY2UpO1xuICByZXR1cm4gaW5kZXg7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBzb3VyY2UgY29udGVudCBmb3IgYSBwYXJ0aWN1bGFyIHNvdXJjZSwgaWYgaXRzIGZvdW5kLiBSZXR1cm5zIG51bGwgaWYgbm90LlxuICovXG5leHBvcnQgZnVuY3Rpb24gc291cmNlQ29udGVudEZvcihtYXA6IFRyYWNlTWFwLCBzb3VyY2U6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICBjb25zdCB7IHNvdXJjZXNDb250ZW50IH0gPSBtYXA7XG4gIGlmIChzb3VyY2VzQ29udGVudCA9PSBudWxsKSByZXR1cm4gbnVsbDtcbiAgY29uc3QgaW5kZXggPSBzb3VyY2VJbmRleChtYXAsIHNvdXJjZSk7XG4gIHJldHVybiBpbmRleCA9PT0gLTEgPyBudWxsIDogc291cmNlc0NvbnRlbnRbaW5kZXhdO1xufVxuXG4vKipcbiAqIERldGVybWluZXMgaWYgdGhlIHNvdXJjZSBpcyBtYXJrZWQgdG8gaWdub3JlIGJ5IHRoZSBzb3VyY2UgbWFwLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNJZ25vcmVkKG1hcDogVHJhY2VNYXAsIHNvdXJjZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGNvbnN0IHsgaWdub3JlTGlzdCB9ID0gbWFwO1xuICBpZiAoaWdub3JlTGlzdCA9PSBudWxsKSByZXR1cm4gZmFsc2U7XG4gIGNvbnN0IGluZGV4ID0gc291cmNlSW5kZXgobWFwLCBzb3VyY2UpO1xuICByZXR1cm4gaW5kZXggPT09IC0xID8gZmFsc2UgOiBpZ25vcmVMaXN0LmluY2x1ZGVzKGluZGV4KTtcbn1cblxuLyoqXG4gKiBBIGhlbHBlciB0aGF0IHNraXBzIHNvcnRpbmcgb2YgdGhlIGlucHV0IG1hcCdzIG1hcHBpbmdzIGFycmF5LCB3aGljaCBjYW4gYmUgZXhwZW5zaXZlIGZvciBsYXJnZXJcbiAqIG1hcHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcmVzb3J0ZWREZWNvZGVkTWFwKG1hcDogRGVjb2RlZFNvdXJjZU1hcCwgbWFwVXJsPzogc3RyaW5nKTogVHJhY2VNYXAge1xuICBjb25zdCB0cmFjZXIgPSBuZXcgVHJhY2VNYXAoY2xvbmUobWFwLCBbXSksIG1hcFVybCk7XG4gIGNhc3QodHJhY2VyKS5fZGVjb2RlZCA9IG1hcC5tYXBwaW5ncztcbiAgcmV0dXJuIHRyYWNlcjtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgc291cmNlbWFwIG9iamVjdCAod2l0aCBkZWNvZGVkIG1hcHBpbmdzKSBzdWl0YWJsZSBmb3IgcGFzc2luZyB0byBhIGxpYnJhcnkgdGhhdCBleHBlY3RzXG4gKiBhIHNvdXJjZW1hcCwgb3IgdG8gSlNPTi5zdHJpbmdpZnkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVkTWFwKFxuICBtYXA6IFRyYWNlTWFwLFxuKTogT21pdDxEZWNvZGVkU291cmNlTWFwLCAnbWFwcGluZ3MnPiAmIHsgbWFwcGluZ3M6IHJlYWRvbmx5IFNvdXJjZU1hcFNlZ21lbnRbXVtdIH0ge1xuICByZXR1cm4gY2xvbmUobWFwLCBkZWNvZGVkTWFwcGluZ3MobWFwKSk7XG59XG5cbi8qKlxuICogUmV0dXJucyBhIHNvdXJjZW1hcCBvYmplY3QgKHdpdGggZW5jb2RlZCBtYXBwaW5ncykgc3VpdGFibGUgZm9yIHBhc3NpbmcgdG8gYSBsaWJyYXJ5IHRoYXQgZXhwZWN0c1xuICogYSBzb3VyY2VtYXAsIG9yIHRvIEpTT04uc3RyaW5naWZ5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZW5jb2RlZE1hcChtYXA6IFRyYWNlTWFwKTogRW5jb2RlZFNvdXJjZU1hcCB7XG4gIHJldHVybiBjbG9uZShtYXAsIGVuY29kZWRNYXBwaW5ncyhtYXApKTtcbn1cblxuZnVuY3Rpb24gY2xvbmU8VCBleHRlbmRzIHN0cmluZyB8IHJlYWRvbmx5IFNvdXJjZU1hcFNlZ21lbnRbXVtdPihcbiAgbWFwOiBUcmFjZU1hcCB8IERlY29kZWRTb3VyY2VNYXAsXG4gIG1hcHBpbmdzOiBULFxuKTogVCBleHRlbmRzIHN0cmluZyA/IEVuY29kZWRTb3VyY2VNYXAgOiBEZWNvZGVkU291cmNlTWFwIHtcbiAgcmV0dXJuIHtcbiAgICB2ZXJzaW9uOiBtYXAudmVyc2lvbixcbiAgICBmaWxlOiBtYXAuZmlsZSxcbiAgICBuYW1lczogbWFwLm5hbWVzLFxuICAgIHNvdXJjZVJvb3Q6IG1hcC5zb3VyY2VSb290LFxuICAgIHNvdXJjZXM6IG1hcC5zb3VyY2VzLFxuICAgIHNvdXJjZXNDb250ZW50OiBtYXAuc291cmNlc0NvbnRlbnQsXG4gICAgbWFwcGluZ3MsXG4gICAgaWdub3JlTGlzdDogbWFwLmlnbm9yZUxpc3QgfHwgKG1hcCBhcyBYSW5wdXQpLnhfZ29vZ2xlX2lnbm9yZUxpc3QsXG4gIH0gYXMgYW55O1xufVxuXG5mdW5jdGlvbiBPTWFwcGluZyhzb3VyY2U6IG51bGwsIGxpbmU6IG51bGwsIGNvbHVtbjogbnVsbCwgbmFtZTogbnVsbCk6IEludmFsaWRPcmlnaW5hbE1hcHBpbmc7XG5mdW5jdGlvbiBPTWFwcGluZyhcbiAgc291cmNlOiBzdHJpbmcsXG4gIGxpbmU6IG51bWJlcixcbiAgY29sdW1uOiBudW1iZXIsXG4gIG5hbWU6IHN0cmluZyB8IG51bGwsXG4pOiBPcmlnaW5hbE1hcHBpbmc7XG5mdW5jdGlvbiBPTWFwcGluZyhcbiAgc291cmNlOiBzdHJpbmcgfCBudWxsLFxuICBsaW5lOiBudW1iZXIgfCBudWxsLFxuICBjb2x1bW46IG51bWJlciB8IG51bGwsXG4gIG5hbWU6IHN0cmluZyB8IG51bGwsXG4pOiBPcmlnaW5hbE1hcHBpbmcgfCBJbnZhbGlkT3JpZ2luYWxNYXBwaW5nIHtcbiAgcmV0dXJuIHsgc291cmNlLCBsaW5lLCBjb2x1bW4sIG5hbWUgfSBhcyBhbnk7XG59XG5cbmZ1bmN0aW9uIEdNYXBwaW5nKGxpbmU6IG51bGwsIGNvbHVtbjogbnVsbCk6IEludmFsaWRHZW5lcmF0ZWRNYXBwaW5nO1xuZnVuY3Rpb24gR01hcHBpbmcobGluZTogbnVtYmVyLCBjb2x1bW46IG51bWJlcik6IEdlbmVyYXRlZE1hcHBpbmc7XG5mdW5jdGlvbiBHTWFwcGluZyhcbiAgbGluZTogbnVtYmVyIHwgbnVsbCxcbiAgY29sdW1uOiBudW1iZXIgfCBudWxsLFxuKTogR2VuZXJhdGVkTWFwcGluZyB8IEludmFsaWRHZW5lcmF0ZWRNYXBwaW5nIHtcbiAgcmV0dXJuIHsgbGluZSwgY29sdW1uIH0gYXMgYW55O1xufVxuXG5mdW5jdGlvbiB0cmFjZVNlZ21lbnRJbnRlcm5hbChcbiAgc2VnbWVudHM6IFNvdXJjZU1hcFNlZ21lbnRbXSxcbiAgbWVtbzogTWVtb1N0YXRlLFxuICBsaW5lOiBudW1iZXIsXG4gIGNvbHVtbjogbnVtYmVyLFxuICBiaWFzOiBCaWFzLFxuKTogbnVtYmVyO1xuZnVuY3Rpb24gdHJhY2VTZWdtZW50SW50ZXJuYWwoXG4gIHNlZ21lbnRzOiBSZXZlcnNlU2VnbWVudFtdLFxuICBtZW1vOiBNZW1vU3RhdGUsXG4gIGxpbmU6IG51bWJlcixcbiAgY29sdW1uOiBudW1iZXIsXG4gIGJpYXM6IEJpYXMsXG4pOiBudW1iZXI7XG5mdW5jdGlvbiB0cmFjZVNlZ21lbnRJbnRlcm5hbChcbiAgc2VnbWVudHM6IFNvdXJjZU1hcFNlZ21lbnRbXSB8IFJldmVyc2VTZWdtZW50W10sXG4gIG1lbW86IE1lbW9TdGF0ZSxcbiAgbGluZTogbnVtYmVyLFxuICBjb2x1bW46IG51bWJlcixcbiAgYmlhczogQmlhcyxcbik6IG51bWJlciB7XG4gIGxldCBpbmRleCA9IG1lbW9pemVkQmluYXJ5U2VhcmNoKHNlZ21lbnRzLCBjb2x1bW4sIG1lbW8sIGxpbmUpO1xuICBpZiAoYnNGb3VuZCkge1xuICAgIGluZGV4ID0gKGJpYXMgPT09IExFQVNUX1VQUEVSX0JPVU5EID8gdXBwZXJCb3VuZCA6IGxvd2VyQm91bmQpKHNlZ21lbnRzLCBjb2x1bW4sIGluZGV4KTtcbiAgfSBlbHNlIGlmIChiaWFzID09PSBMRUFTVF9VUFBFUl9CT1VORCkgaW5kZXgrKztcblxuICBpZiAoaW5kZXggPT09IC0xIHx8IGluZGV4ID09PSBzZWdtZW50cy5sZW5ndGgpIHJldHVybiAtMTtcbiAgcmV0dXJuIGluZGV4O1xufVxuXG5mdW5jdGlvbiBzbGljZUdlbmVyYXRlZFBvc2l0aW9ucyhcbiAgc2VnbWVudHM6IFJldmVyc2VTZWdtZW50W10sXG4gIG1lbW86IE1lbW9TdGF0ZSxcbiAgbGluZTogbnVtYmVyLFxuICBjb2x1bW46IG51bWJlcixcbiAgYmlhczogQmlhcyxcbik6IEdlbmVyYXRlZE1hcHBpbmdbXSB7XG4gIGxldCBtaW4gPSB0cmFjZVNlZ21lbnRJbnRlcm5hbChzZWdtZW50cywgbWVtbywgbGluZSwgY29sdW1uLCBHUkVBVEVTVF9MT1dFUl9CT1VORCk7XG5cbiAgLy8gV2UgaWdub3JlZCB0aGUgYmlhcyB3aGVuIHRyYWNpbmcgdGhlIHNlZ21lbnQgc28gdGhhdCB3ZSdyZSBndWFybmF0ZWVkIHRvIGZpbmQgdGhlIGZpcnN0IChpblxuICAvLyBpbnNlcnRpb24gb3JkZXIpIHNlZ21lbnQgdGhhdCBtYXRjaGVkLiBFdmVuIGlmIHdlIGRpZCByZXNwZWN0IHRoZSBiaWFzIHdoZW4gdHJhY2luZywgd2Ugd291bGRcbiAgLy8gc3RpbGwgbmVlZCB0byBjYWxsIGBsb3dlckJvdW5kKClgIHRvIGZpbmQgdGhlIGZpcnN0IHNlZ21lbnQsIHdoaWNoIGlzIHNsb3dlciB0aGFuIGp1c3QgbG9va2luZ1xuICAvLyBmb3IgdGhlIEdSRUFURVNUX0xPV0VSX0JPVU5EIHRvIGJlZ2luIHdpdGguIFRoZSBvbmx5IGRpZmZlcmVuY2UgdGhhdCBtYXR0ZXJzIGZvciB1cyBpcyB3aGVuIHRoZVxuICAvLyBiaW5hcnkgc2VhcmNoIGRpZG4ndCBtYXRjaCwgaW4gd2hpY2ggY2FzZSBHUkVBVEVTVF9MT1dFUl9CT1VORCBqdXN0IG5lZWRzIHRvIGluY3JlbWVudCB0b1xuICAvLyBtYXRjaCBMRUFTVF9VUFBFUl9CT1VORC5cbiAgaWYgKCFic0ZvdW5kICYmIGJpYXMgPT09IExFQVNUX1VQUEVSX0JPVU5EKSBtaW4rKztcblxuICBpZiAobWluID09PSAtMSB8fCBtaW4gPT09IHNlZ21lbnRzLmxlbmd0aCkgcmV0dXJuIFtdO1xuXG4gIC8vIFdlIG1heSBoYXZlIGZvdW5kIHRoZSBzZWdtZW50IHRoYXQgc3RhcnRlZCBhdCBhbiBlYXJsaWVyIGNvbHVtbi4gSWYgdGhpcyBpcyB0aGUgY2FzZSwgdGhlbiB3ZVxuICAvLyBuZWVkIHRvIHNsaWNlIGFsbCBnZW5lcmF0ZWQgc2VnbWVudHMgdGhhdCBtYXRjaCBfdGhhdF8gY29sdW1uLCBiZWNhdXNlIGFsbCBzdWNoIHNlZ21lbnRzIHNwYW5cbiAgLy8gdG8gb3VyIGRlc2lyZWQgY29sdW1uLlxuICBjb25zdCBtYXRjaGVkQ29sdW1uID0gYnNGb3VuZCA/IGNvbHVtbiA6IHNlZ21lbnRzW21pbl1bQ09MVU1OXTtcblxuICAvLyBUaGUgYmluYXJ5IHNlYXJjaCBpcyBub3QgZ3VhcmFudGVlZCB0byBmaW5kIHRoZSBsb3dlciBib3VuZCB3aGVuIGEgbWF0Y2ggd2Fzbid0IGZvdW5kLlxuICBpZiAoIWJzRm91bmQpIG1pbiA9IGxvd2VyQm91bmQoc2VnbWVudHMsIG1hdGNoZWRDb2x1bW4sIG1pbik7XG4gIGNvbnN0IG1heCA9IHVwcGVyQm91bmQoc2VnbWVudHMsIG1hdGNoZWRDb2x1bW4sIG1pbik7XG5cbiAgY29uc3QgcmVzdWx0ID0gW107XG4gIGZvciAoOyBtaW4gPD0gbWF4OyBtaW4rKykge1xuICAgIGNvbnN0IHNlZ21lbnQgPSBzZWdtZW50c1ttaW5dO1xuICAgIHJlc3VsdC5wdXNoKEdNYXBwaW5nKHNlZ21lbnRbUkVWX0dFTkVSQVRFRF9MSU5FXSArIDEsIHNlZ21lbnRbUkVWX0dFTkVSQVRFRF9DT0xVTU5dKSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gZ2VuZXJhdGVkUG9zaXRpb24oXG4gIG1hcDogVHJhY2VNYXAsXG4gIHNvdXJjZTogc3RyaW5nLFxuICBsaW5lOiBudW1iZXIsXG4gIGNvbHVtbjogbnVtYmVyLFxuICBiaWFzOiBCaWFzLFxuICBhbGw6IGZhbHNlLFxuKTogR2VuZXJhdGVkTWFwcGluZyB8IEludmFsaWRHZW5lcmF0ZWRNYXBwaW5nO1xuZnVuY3Rpb24gZ2VuZXJhdGVkUG9zaXRpb24oXG4gIG1hcDogVHJhY2VNYXAsXG4gIHNvdXJjZTogc3RyaW5nLFxuICBsaW5lOiBudW1iZXIsXG4gIGNvbHVtbjogbnVtYmVyLFxuICBiaWFzOiBCaWFzLFxuICBhbGw6IHRydWUsXG4pOiBHZW5lcmF0ZWRNYXBwaW5nW107XG5mdW5jdGlvbiBnZW5lcmF0ZWRQb3NpdGlvbihcbiAgbWFwOiBUcmFjZU1hcCxcbiAgc291cmNlOiBzdHJpbmcsXG4gIGxpbmU6IG51bWJlcixcbiAgY29sdW1uOiBudW1iZXIsXG4gIGJpYXM6IEJpYXMsXG4gIGFsbDogYm9vbGVhbixcbik6IEdlbmVyYXRlZE1hcHBpbmcgfCBJbnZhbGlkR2VuZXJhdGVkTWFwcGluZyB8IEdlbmVyYXRlZE1hcHBpbmdbXSB7XG4gIGxpbmUtLTtcbiAgaWYgKGxpbmUgPCAwKSB0aHJvdyBuZXcgRXJyb3IoTElORV9HVFJfWkVSTyk7XG4gIGlmIChjb2x1bW4gPCAwKSB0aHJvdyBuZXcgRXJyb3IoQ09MX0dUUl9FUV9aRVJPKTtcblxuICBjb25zdCB7IHNvdXJjZXMsIHJlc29sdmVkU291cmNlcyB9ID0gbWFwO1xuICBsZXQgc291cmNlSW5kZXggPSBzb3VyY2VzLmluZGV4T2Yoc291cmNlKTtcbiAgaWYgKHNvdXJjZUluZGV4ID09PSAtMSkgc291cmNlSW5kZXggPSByZXNvbHZlZFNvdXJjZXMuaW5kZXhPZihzb3VyY2UpO1xuICBpZiAoc291cmNlSW5kZXggPT09IC0xKSByZXR1cm4gYWxsID8gW10gOiBHTWFwcGluZyhudWxsLCBudWxsKTtcblxuICBjb25zdCBnZW5lcmF0ZWQgPSAoY2FzdChtYXApLl9ieVNvdXJjZXMgfHw9IGJ1aWxkQnlTb3VyY2VzKFxuICAgIGRlY29kZWRNYXBwaW5ncyhtYXApLFxuICAgIChjYXN0KG1hcCkuX2J5U291cmNlTWVtb3MgPSBzb3VyY2VzLm1hcChtZW1vaXplZFN0YXRlKSksXG4gICkpO1xuXG4gIGNvbnN0IHNlZ21lbnRzID0gZ2VuZXJhdGVkW3NvdXJjZUluZGV4XVtsaW5lXTtcbiAgaWYgKHNlZ21lbnRzID09IG51bGwpIHJldHVybiBhbGwgPyBbXSA6IEdNYXBwaW5nKG51bGwsIG51bGwpO1xuXG4gIGNvbnN0IG1lbW8gPSBjYXN0KG1hcCkuX2J5U291cmNlTWVtb3MhW3NvdXJjZUluZGV4XTtcblxuICBpZiAoYWxsKSByZXR1cm4gc2xpY2VHZW5lcmF0ZWRQb3NpdGlvbnMoc2VnbWVudHMsIG1lbW8sIGxpbmUsIGNvbHVtbiwgYmlhcyk7XG5cbiAgY29uc3QgaW5kZXggPSB0cmFjZVNlZ21lbnRJbnRlcm5hbChzZWdtZW50cywgbWVtbywgbGluZSwgY29sdW1uLCBiaWFzKTtcbiAgaWYgKGluZGV4ID09PSAtMSkgcmV0dXJuIEdNYXBwaW5nKG51bGwsIG51bGwpO1xuXG4gIGNvbnN0IHNlZ21lbnQgPSBzZWdtZW50c1tpbmRleF07XG4gIHJldHVybiBHTWFwcGluZyhzZWdtZW50W1JFVl9HRU5FUkFURURfTElORV0gKyAxLCBzZWdtZW50W1JFVl9HRU5FUkFURURfQ09MVU1OXSk7XG59XG4iLCAidHlwZSBHZW5lcmF0ZWRDb2x1bW4gPSBudW1iZXI7XG50eXBlIFNvdXJjZXNJbmRleCA9IG51bWJlcjtcbnR5cGUgU291cmNlTGluZSA9IG51bWJlcjtcbnR5cGUgU291cmNlQ29sdW1uID0gbnVtYmVyO1xudHlwZSBOYW1lc0luZGV4ID0gbnVtYmVyO1xuXG5leHBvcnQgdHlwZSBTb3VyY2VNYXBTZWdtZW50ID1cbiAgfCBbR2VuZXJhdGVkQ29sdW1uXVxuICB8IFtHZW5lcmF0ZWRDb2x1bW4sIFNvdXJjZXNJbmRleCwgU291cmNlTGluZSwgU291cmNlQ29sdW1uXVxuICB8IFtHZW5lcmF0ZWRDb2x1bW4sIFNvdXJjZXNJbmRleCwgU291cmNlTGluZSwgU291cmNlQ29sdW1uLCBOYW1lc0luZGV4XTtcblxuZXhwb3J0IGNvbnN0IENPTFVNTiA9IDA7XG5leHBvcnQgY29uc3QgU09VUkNFU19JTkRFWCA9IDE7XG5leHBvcnQgY29uc3QgU09VUkNFX0xJTkUgPSAyO1xuZXhwb3J0IGNvbnN0IFNPVVJDRV9DT0xVTU4gPSAzO1xuZXhwb3J0IGNvbnN0IE5BTUVTX0lOREVYID0gNDtcbiIsICJpbXBvcnQgeyBTZXRBcnJheSwgcHV0LCByZW1vdmUgfSBmcm9tICdAanJpZGdld2VsbC9zZXQtYXJyYXknO1xuaW1wb3J0IHsgZW5jb2RlIH0gZnJvbSAnQGpyaWRnZXdlbGwvc291cmNlbWFwLWNvZGVjJztcbmltcG9ydCB7IFRyYWNlTWFwLCBkZWNvZGVkTWFwcGluZ3MgfSBmcm9tICdAanJpZGdld2VsbC90cmFjZS1tYXBwaW5nJztcblxuaW1wb3J0IHtcbiAgQ09MVU1OLFxuICBTT1VSQ0VTX0lOREVYLFxuICBTT1VSQ0VfTElORSxcbiAgU09VUkNFX0NPTFVNTixcbiAgTkFNRVNfSU5ERVgsXG59IGZyb20gJy4vc291cmNlbWFwLXNlZ21lbnQnO1xuXG5pbXBvcnQgdHlwZSB7IFNvdXJjZU1hcElucHV0IH0gZnJvbSAnQGpyaWRnZXdlbGwvdHJhY2UtbWFwcGluZyc7XG5pbXBvcnQgdHlwZSB7IFNvdXJjZU1hcFNlZ21lbnQgfSBmcm9tICcuL3NvdXJjZW1hcC1zZWdtZW50JztcbmltcG9ydCB0eXBlIHsgRGVjb2RlZFNvdXJjZU1hcCwgRW5jb2RlZFNvdXJjZU1hcCwgUG9zLCBNYXBwaW5nIH0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCB0eXBlIHsgRGVjb2RlZFNvdXJjZU1hcCwgRW5jb2RlZFNvdXJjZU1hcCwgTWFwcGluZyB9O1xuXG5leHBvcnQgdHlwZSBPcHRpb25zID0ge1xuICBmaWxlPzogc3RyaW5nIHwgbnVsbDtcbiAgc291cmNlUm9vdD86IHN0cmluZyB8IG51bGw7XG59O1xuXG5jb25zdCBOT19OQU1FID0gLTE7XG5cbi8qKlxuICogUHJvdmlkZXMgdGhlIHN0YXRlIHRvIGdlbmVyYXRlIGEgc291cmNlbWFwLlxuICovXG5leHBvcnQgY2xhc3MgR2VuTWFwcGluZyB7XG4gIHByaXZhdGUgZGVjbGFyZSBfbmFtZXM6IFNldEFycmF5PHN0cmluZz47XG4gIHByaXZhdGUgZGVjbGFyZSBfc291cmNlczogU2V0QXJyYXk8c3RyaW5nPjtcbiAgcHJpdmF0ZSBkZWNsYXJlIF9zb3VyY2VzQ29udGVudDogKHN0cmluZyB8IG51bGwpW107XG4gIHByaXZhdGUgZGVjbGFyZSBfbWFwcGluZ3M6IFNvdXJjZU1hcFNlZ21lbnRbXVtdO1xuICBwcml2YXRlIGRlY2xhcmUgX2lnbm9yZUxpc3Q6IFNldEFycmF5PG51bWJlcj47XG4gIGRlY2xhcmUgZmlsZTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgZGVjbGFyZSBzb3VyY2VSb290OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKHsgZmlsZSwgc291cmNlUm9vdCB9OiBPcHRpb25zID0ge30pIHtcbiAgICB0aGlzLl9uYW1lcyA9IG5ldyBTZXRBcnJheSgpO1xuICAgIHRoaXMuX3NvdXJjZXMgPSBuZXcgU2V0QXJyYXkoKTtcbiAgICB0aGlzLl9zb3VyY2VzQ29udGVudCA9IFtdO1xuICAgIHRoaXMuX21hcHBpbmdzID0gW107XG4gICAgdGhpcy5maWxlID0gZmlsZTtcbiAgICB0aGlzLnNvdXJjZVJvb3QgPSBzb3VyY2VSb290O1xuICAgIHRoaXMuX2lnbm9yZUxpc3QgPSBuZXcgU2V0QXJyYXkoKTtcbiAgfVxufVxuXG5pbnRlcmZhY2UgUHVibGljTWFwIHtcbiAgX25hbWVzOiBHZW5NYXBwaW5nWydfbmFtZXMnXTtcbiAgX3NvdXJjZXM6IEdlbk1hcHBpbmdbJ19zb3VyY2VzJ107XG4gIF9zb3VyY2VzQ29udGVudDogR2VuTWFwcGluZ1snX3NvdXJjZXNDb250ZW50J107XG4gIF9tYXBwaW5nczogR2VuTWFwcGluZ1snX21hcHBpbmdzJ107XG4gIF9pZ25vcmVMaXN0OiBHZW5NYXBwaW5nWydfaWdub3JlTGlzdCddO1xufVxuXG4vKipcbiAqIFR5cGVzY3JpcHQgZG9lc24ndCBhbGxvdyBmcmllbmQgYWNjZXNzIHRvIHByaXZhdGUgZmllbGRzLCBzbyB0aGlzIGp1c3QgY2FzdHMgdGhlIG1hcCBpbnRvIGEgdHlwZVxuICogd2l0aCBwdWJsaWMgYWNjZXNzIG1vZGlmaWVycy5cbiAqL1xuZnVuY3Rpb24gY2FzdChtYXA6IHVua25vd24pOiBQdWJsaWNNYXAge1xuICByZXR1cm4gbWFwIGFzIGFueTtcbn1cblxuLyoqXG4gKiBBIGxvdy1sZXZlbCBBUEkgdG8gYXNzb2NpYXRlIGEgZ2VuZXJhdGVkIHBvc2l0aW9uIHdpdGggYW4gb3JpZ2luYWwgc291cmNlIHBvc2l0aW9uLiBMaW5lIGFuZFxuICogY29sdW1uIGhlcmUgYXJlIDAtYmFzZWQsIHVubGlrZSBgYWRkTWFwcGluZ2AuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRTZWdtZW50KFxuICBtYXA6IEdlbk1hcHBpbmcsXG4gIGdlbkxpbmU6IG51bWJlcixcbiAgZ2VuQ29sdW1uOiBudW1iZXIsXG4gIHNvdXJjZT86IG51bGwsXG4gIHNvdXJjZUxpbmU/OiBudWxsLFxuICBzb3VyY2VDb2x1bW4/OiBudWxsLFxuICBuYW1lPzogbnVsbCxcbiAgY29udGVudD86IG51bGwsXG4pOiB2b2lkO1xuZXhwb3J0IGZ1bmN0aW9uIGFkZFNlZ21lbnQoXG4gIG1hcDogR2VuTWFwcGluZyxcbiAgZ2VuTGluZTogbnVtYmVyLFxuICBnZW5Db2x1bW46IG51bWJlcixcbiAgc291cmNlOiBzdHJpbmcsXG4gIHNvdXJjZUxpbmU6IG51bWJlcixcbiAgc291cmNlQ29sdW1uOiBudW1iZXIsXG4gIG5hbWU/OiBudWxsLFxuICBjb250ZW50Pzogc3RyaW5nIHwgbnVsbCxcbik6IHZvaWQ7XG5leHBvcnQgZnVuY3Rpb24gYWRkU2VnbWVudChcbiAgbWFwOiBHZW5NYXBwaW5nLFxuICBnZW5MaW5lOiBudW1iZXIsXG4gIGdlbkNvbHVtbjogbnVtYmVyLFxuICBzb3VyY2U6IHN0cmluZyxcbiAgc291cmNlTGluZTogbnVtYmVyLFxuICBzb3VyY2VDb2x1bW46IG51bWJlcixcbiAgbmFtZTogc3RyaW5nLFxuICBjb250ZW50Pzogc3RyaW5nIHwgbnVsbCxcbik6IHZvaWQ7XG5leHBvcnQgZnVuY3Rpb24gYWRkU2VnbWVudChcbiAgbWFwOiBHZW5NYXBwaW5nLFxuICBnZW5MaW5lOiBudW1iZXIsXG4gIGdlbkNvbHVtbjogbnVtYmVyLFxuICBzb3VyY2U/OiBzdHJpbmcgfCBudWxsLFxuICBzb3VyY2VMaW5lPzogbnVtYmVyIHwgbnVsbCxcbiAgc291cmNlQ29sdW1uPzogbnVtYmVyIHwgbnVsbCxcbiAgbmFtZT86IHN0cmluZyB8IG51bGwsXG4gIGNvbnRlbnQ/OiBzdHJpbmcgfCBudWxsLFxuKTogdm9pZCB7XG4gIHJldHVybiBhZGRTZWdtZW50SW50ZXJuYWwoXG4gICAgZmFsc2UsXG4gICAgbWFwLFxuICAgIGdlbkxpbmUsXG4gICAgZ2VuQ29sdW1uLFxuICAgIHNvdXJjZSxcbiAgICBzb3VyY2VMaW5lLFxuICAgIHNvdXJjZUNvbHVtbixcbiAgICBuYW1lLFxuICAgIGNvbnRlbnQsXG4gICk7XG59XG5cbi8qKlxuICogQSBoaWdoLWxldmVsIEFQSSB0byBhc3NvY2lhdGUgYSBnZW5lcmF0ZWQgcG9zaXRpb24gd2l0aCBhbiBvcmlnaW5hbCBzb3VyY2UgcG9zaXRpb24uIExpbmUgaXNcbiAqIDEtYmFzZWQsIGJ1dCBjb2x1bW4gaXMgMC1iYXNlZCwgZHVlIHRvIGxlZ2FjeSBiZWhhdmlvciBpbiBgc291cmNlLW1hcGAgbGlicmFyeS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZE1hcHBpbmcoXG4gIG1hcDogR2VuTWFwcGluZyxcbiAgbWFwcGluZzoge1xuICAgIGdlbmVyYXRlZDogUG9zO1xuICAgIHNvdXJjZT86IG51bGw7XG4gICAgb3JpZ2luYWw/OiBudWxsO1xuICAgIG5hbWU/OiBudWxsO1xuICAgIGNvbnRlbnQ/OiBudWxsO1xuICB9LFxuKTogdm9pZDtcbmV4cG9ydCBmdW5jdGlvbiBhZGRNYXBwaW5nKFxuICBtYXA6IEdlbk1hcHBpbmcsXG4gIG1hcHBpbmc6IHtcbiAgICBnZW5lcmF0ZWQ6IFBvcztcbiAgICBzb3VyY2U6IHN0cmluZztcbiAgICBvcmlnaW5hbDogUG9zO1xuICAgIG5hbWU/OiBudWxsO1xuICAgIGNvbnRlbnQ/OiBzdHJpbmcgfCBudWxsO1xuICB9LFxuKTogdm9pZDtcbmV4cG9ydCBmdW5jdGlvbiBhZGRNYXBwaW5nKFxuICBtYXA6IEdlbk1hcHBpbmcsXG4gIG1hcHBpbmc6IHtcbiAgICBnZW5lcmF0ZWQ6IFBvcztcbiAgICBzb3VyY2U6IHN0cmluZztcbiAgICBvcmlnaW5hbDogUG9zO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBjb250ZW50Pzogc3RyaW5nIHwgbnVsbDtcbiAgfSxcbik6IHZvaWQ7XG5leHBvcnQgZnVuY3Rpb24gYWRkTWFwcGluZyhcbiAgbWFwOiBHZW5NYXBwaW5nLFxuICBtYXBwaW5nOiB7XG4gICAgZ2VuZXJhdGVkOiBQb3M7XG4gICAgc291cmNlPzogc3RyaW5nIHwgbnVsbDtcbiAgICBvcmlnaW5hbD86IFBvcyB8IG51bGw7XG4gICAgbmFtZT86IHN0cmluZyB8IG51bGw7XG4gICAgY29udGVudD86IHN0cmluZyB8IG51bGw7XG4gIH0sXG4pOiB2b2lkIHtcbiAgcmV0dXJuIGFkZE1hcHBpbmdJbnRlcm5hbChmYWxzZSwgbWFwLCBtYXBwaW5nIGFzIFBhcmFtZXRlcnM8dHlwZW9mIGFkZE1hcHBpbmdJbnRlcm5hbD5bMl0pO1xufVxuXG4vKipcbiAqIFNhbWUgYXMgYGFkZFNlZ21lbnRgLCBidXQgd2lsbCBvbmx5IGFkZCB0aGUgc2VnbWVudCBpZiBpdCBnZW5lcmF0ZXMgdXNlZnVsIGluZm9ybWF0aW9uIGluIHRoZVxuICogcmVzdWx0aW5nIG1hcC4gVGhpcyBvbmx5IHdvcmtzIGNvcnJlY3RseSBpZiBzZWdtZW50cyBhcmUgYWRkZWQgKippbiBvcmRlcioqLCBtZWFuaW5nIHlvdSBzaG91bGRcbiAqIG5vdCBhZGQgYSBzZWdtZW50IHdpdGggYSBsb3dlciBnZW5lcmF0ZWQgbGluZS9jb2x1bW4gdGhhbiBvbmUgdGhhdCBjYW1lIGJlZm9yZS5cbiAqL1xuZXhwb3J0IGNvbnN0IG1heWJlQWRkU2VnbWVudDogdHlwZW9mIGFkZFNlZ21lbnQgPSAoXG4gIG1hcCxcbiAgZ2VuTGluZSxcbiAgZ2VuQ29sdW1uLFxuICBzb3VyY2UsXG4gIHNvdXJjZUxpbmUsXG4gIHNvdXJjZUNvbHVtbixcbiAgbmFtZSxcbiAgY29udGVudCxcbikgPT4ge1xuICByZXR1cm4gYWRkU2VnbWVudEludGVybmFsKFxuICAgIHRydWUsXG4gICAgbWFwLFxuICAgIGdlbkxpbmUsXG4gICAgZ2VuQ29sdW1uLFxuICAgIHNvdXJjZSxcbiAgICBzb3VyY2VMaW5lLFxuICAgIHNvdXJjZUNvbHVtbixcbiAgICBuYW1lLFxuICAgIGNvbnRlbnQsXG4gICk7XG59O1xuXG4vKipcbiAqIFNhbWUgYXMgYGFkZE1hcHBpbmdgLCBidXQgd2lsbCBvbmx5IGFkZCB0aGUgbWFwcGluZyBpZiBpdCBnZW5lcmF0ZXMgdXNlZnVsIGluZm9ybWF0aW9uIGluIHRoZVxuICogcmVzdWx0aW5nIG1hcC4gVGhpcyBvbmx5IHdvcmtzIGNvcnJlY3RseSBpZiBtYXBwaW5ncyBhcmUgYWRkZWQgKippbiBvcmRlcioqLCBtZWFuaW5nIHlvdSBzaG91bGRcbiAqIG5vdCBhZGQgYSBtYXBwaW5nIHdpdGggYSBsb3dlciBnZW5lcmF0ZWQgbGluZS9jb2x1bW4gdGhhbiBvbmUgdGhhdCBjYW1lIGJlZm9yZS5cbiAqL1xuZXhwb3J0IGNvbnN0IG1heWJlQWRkTWFwcGluZzogdHlwZW9mIGFkZE1hcHBpbmcgPSAobWFwLCBtYXBwaW5nKSA9PiB7XG4gIHJldHVybiBhZGRNYXBwaW5nSW50ZXJuYWwodHJ1ZSwgbWFwLCBtYXBwaW5nIGFzIFBhcmFtZXRlcnM8dHlwZW9mIGFkZE1hcHBpbmdJbnRlcm5hbD5bMl0pO1xufTtcblxuLyoqXG4gKiBBZGRzL3JlbW92ZXMgdGhlIGNvbnRlbnQgb2YgdGhlIHNvdXJjZSBmaWxlIHRvIHRoZSBzb3VyY2UgbWFwLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0U291cmNlQ29udGVudChtYXA6IEdlbk1hcHBpbmcsIHNvdXJjZTogc3RyaW5nLCBjb250ZW50OiBzdHJpbmcgfCBudWxsKTogdm9pZCB7XG4gIGNvbnN0IHsgX3NvdXJjZXM6IHNvdXJjZXMsIF9zb3VyY2VzQ29udGVudDogc291cmNlc0NvbnRlbnQgfSA9IGNhc3QobWFwKTtcbiAgY29uc3QgaW5kZXggPSBwdXQoc291cmNlcywgc291cmNlKTtcbiAgc291cmNlc0NvbnRlbnRbaW5kZXhdID0gY29udGVudDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldElnbm9yZShtYXA6IEdlbk1hcHBpbmcsIHNvdXJjZTogc3RyaW5nLCBpZ25vcmUgPSB0cnVlKSB7XG4gIGNvbnN0IHsgX3NvdXJjZXM6IHNvdXJjZXMsIF9zb3VyY2VzQ29udGVudDogc291cmNlc0NvbnRlbnQsIF9pZ25vcmVMaXN0OiBpZ25vcmVMaXN0IH0gPSBjYXN0KG1hcCk7XG4gIGNvbnN0IGluZGV4ID0gcHV0KHNvdXJjZXMsIHNvdXJjZSk7XG4gIGlmIChpbmRleCA9PT0gc291cmNlc0NvbnRlbnQubGVuZ3RoKSBzb3VyY2VzQ29udGVudFtpbmRleF0gPSBudWxsO1xuICBpZiAoaWdub3JlKSBwdXQoaWdub3JlTGlzdCwgaW5kZXgpO1xuICBlbHNlIHJlbW92ZShpZ25vcmVMaXN0LCBpbmRleCk7XG59XG5cbi8qKlxuICogUmV0dXJucyBhIHNvdXJjZW1hcCBvYmplY3QgKHdpdGggZGVjb2RlZCBtYXBwaW5ncykgc3VpdGFibGUgZm9yIHBhc3NpbmcgdG8gYSBsaWJyYXJ5IHRoYXQgZXhwZWN0c1xuICogYSBzb3VyY2VtYXAsIG9yIHRvIEpTT04uc3RyaW5naWZ5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9EZWNvZGVkTWFwKG1hcDogR2VuTWFwcGluZyk6IERlY29kZWRTb3VyY2VNYXAge1xuICBjb25zdCB7XG4gICAgX21hcHBpbmdzOiBtYXBwaW5ncyxcbiAgICBfc291cmNlczogc291cmNlcyxcbiAgICBfc291cmNlc0NvbnRlbnQ6IHNvdXJjZXNDb250ZW50LFxuICAgIF9uYW1lczogbmFtZXMsXG4gICAgX2lnbm9yZUxpc3Q6IGlnbm9yZUxpc3QsXG4gIH0gPSBjYXN0KG1hcCk7XG4gIHJlbW92ZUVtcHR5RmluYWxMaW5lcyhtYXBwaW5ncyk7XG5cbiAgcmV0dXJuIHtcbiAgICB2ZXJzaW9uOiAzLFxuICAgIGZpbGU6IG1hcC5maWxlIHx8IHVuZGVmaW5lZCxcbiAgICBuYW1lczogbmFtZXMuYXJyYXksXG4gICAgc291cmNlUm9vdDogbWFwLnNvdXJjZVJvb3QgfHwgdW5kZWZpbmVkLFxuICAgIHNvdXJjZXM6IHNvdXJjZXMuYXJyYXksXG4gICAgc291cmNlc0NvbnRlbnQsXG4gICAgbWFwcGluZ3MsXG4gICAgaWdub3JlTGlzdDogaWdub3JlTGlzdC5hcnJheSxcbiAgfTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgc291cmNlbWFwIG9iamVjdCAod2l0aCBlbmNvZGVkIG1hcHBpbmdzKSBzdWl0YWJsZSBmb3IgcGFzc2luZyB0byBhIGxpYnJhcnkgdGhhdCBleHBlY3RzXG4gKiBhIHNvdXJjZW1hcCwgb3IgdG8gSlNPTi5zdHJpbmdpZnkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0VuY29kZWRNYXAobWFwOiBHZW5NYXBwaW5nKTogRW5jb2RlZFNvdXJjZU1hcCB7XG4gIGNvbnN0IGRlY29kZWQgPSB0b0RlY29kZWRNYXAobWFwKTtcbiAgcmV0dXJuIHtcbiAgICAuLi5kZWNvZGVkLFxuICAgIG1hcHBpbmdzOiBlbmNvZGUoZGVjb2RlZC5tYXBwaW5ncyBhcyBTb3VyY2VNYXBTZWdtZW50W11bXSksXG4gIH07XG59XG5cbi8qKlxuICogQ29uc3RydWN0cyBhIG5ldyBHZW5NYXBwaW5nLCB1c2luZyB0aGUgYWxyZWFkeSBwcmVzZW50IG1hcHBpbmdzIG9mIHRoZSBpbnB1dC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZyb21NYXAoaW5wdXQ6IFNvdXJjZU1hcElucHV0KTogR2VuTWFwcGluZyB7XG4gIGNvbnN0IG1hcCA9IG5ldyBUcmFjZU1hcChpbnB1dCk7XG4gIGNvbnN0IGdlbiA9IG5ldyBHZW5NYXBwaW5nKHsgZmlsZTogbWFwLmZpbGUsIHNvdXJjZVJvb3Q6IG1hcC5zb3VyY2VSb290IH0pO1xuXG4gIHB1dEFsbChjYXN0KGdlbikuX25hbWVzLCBtYXAubmFtZXMpO1xuICBwdXRBbGwoY2FzdChnZW4pLl9zb3VyY2VzLCBtYXAuc291cmNlcyBhcyBzdHJpbmdbXSk7XG4gIGNhc3QoZ2VuKS5fc291cmNlc0NvbnRlbnQgPSBtYXAuc291cmNlc0NvbnRlbnQgfHwgbWFwLnNvdXJjZXMubWFwKCgpID0+IG51bGwpO1xuICBjYXN0KGdlbikuX21hcHBpbmdzID0gZGVjb2RlZE1hcHBpbmdzKG1hcCkgYXMgR2VuTWFwcGluZ1snX21hcHBpbmdzJ107XG4gIGlmIChtYXAuaWdub3JlTGlzdCkgcHV0QWxsKGNhc3QoZ2VuKS5faWdub3JlTGlzdCwgbWFwLmlnbm9yZUxpc3QpO1xuXG4gIHJldHVybiBnZW47XG59XG5cbi8qKlxuICogUmV0dXJucyBhbiBhcnJheSBvZiBoaWdoLWxldmVsIG1hcHBpbmcgb2JqZWN0cyBmb3IgZXZlcnkgcmVjb3JkZWQgc2VnbWVudCwgd2hpY2ggY291bGQgdGhlbiBiZVxuICogcGFzc2VkIHRvIHRoZSBgc291cmNlLW1hcGAgbGlicmFyeS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFsbE1hcHBpbmdzKG1hcDogR2VuTWFwcGluZyk6IE1hcHBpbmdbXSB7XG4gIGNvbnN0IG91dDogTWFwcGluZ1tdID0gW107XG4gIGNvbnN0IHsgX21hcHBpbmdzOiBtYXBwaW5ncywgX3NvdXJjZXM6IHNvdXJjZXMsIF9uYW1lczogbmFtZXMgfSA9IGNhc3QobWFwKTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IG1hcHBpbmdzLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgbGluZSA9IG1hcHBpbmdzW2ldO1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgbGluZS5sZW5ndGg7IGorKykge1xuICAgICAgY29uc3Qgc2VnID0gbGluZVtqXTtcblxuICAgICAgY29uc3QgZ2VuZXJhdGVkID0geyBsaW5lOiBpICsgMSwgY29sdW1uOiBzZWdbQ09MVU1OXSB9O1xuICAgICAgbGV0IHNvdXJjZTogc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgICAgbGV0IG9yaWdpbmFsOiBQb3MgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgICBsZXQgbmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuXG4gICAgICBpZiAoc2VnLmxlbmd0aCAhPT0gMSkge1xuICAgICAgICBzb3VyY2UgPSBzb3VyY2VzLmFycmF5W3NlZ1tTT1VSQ0VTX0lOREVYXV07XG4gICAgICAgIG9yaWdpbmFsID0geyBsaW5lOiBzZWdbU09VUkNFX0xJTkVdICsgMSwgY29sdW1uOiBzZWdbU09VUkNFX0NPTFVNTl0gfTtcblxuICAgICAgICBpZiAoc2VnLmxlbmd0aCA9PT0gNSkgbmFtZSA9IG5hbWVzLmFycmF5W3NlZ1tOQU1FU19JTkRFWF1dO1xuICAgICAgfVxuXG4gICAgICBvdXQucHVzaCh7IGdlbmVyYXRlZCwgc291cmNlLCBvcmlnaW5hbCwgbmFtZSB9IGFzIE1hcHBpbmcpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvdXQ7XG59XG5cbi8vIFRoaXMgc3BsaXQgZGVjbGFyYXRpb24gaXMgb25seSBzbyB0aGF0IHRlcnNlciBjYW4gZWxtaW5pYXRlIHRoZSBzdGF0aWMgaW5pdGlhbGl6YXRpb24gYmxvY2suXG5mdW5jdGlvbiBhZGRTZWdtZW50SW50ZXJuYWw8UyBleHRlbmRzIHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ+KFxuICBza2lwYWJsZTogYm9vbGVhbixcbiAgbWFwOiBHZW5NYXBwaW5nLFxuICBnZW5MaW5lOiBudW1iZXIsXG4gIGdlbkNvbHVtbjogbnVtYmVyLFxuICBzb3VyY2U6IFMsXG4gIHNvdXJjZUxpbmU6IFMgZXh0ZW5kcyBzdHJpbmcgPyBudW1iZXIgOiBudWxsIHwgdW5kZWZpbmVkLFxuICBzb3VyY2VDb2x1bW46IFMgZXh0ZW5kcyBzdHJpbmcgPyBudW1iZXIgOiBudWxsIHwgdW5kZWZpbmVkLFxuICBuYW1lOiBTIGV4dGVuZHMgc3RyaW5nID8gc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCA6IG51bGwgfCB1bmRlZmluZWQsXG4gIGNvbnRlbnQ6IFMgZXh0ZW5kcyBzdHJpbmcgPyBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkIDogbnVsbCB8IHVuZGVmaW5lZCxcbik6IHZvaWQge1xuICBjb25zdCB7XG4gICAgX21hcHBpbmdzOiBtYXBwaW5ncyxcbiAgICBfc291cmNlczogc291cmNlcyxcbiAgICBfc291cmNlc0NvbnRlbnQ6IHNvdXJjZXNDb250ZW50LFxuICAgIF9uYW1lczogbmFtZXMsXG4gIH0gPSBjYXN0KG1hcCk7XG4gIGNvbnN0IGxpbmUgPSBnZXRMaW5lKG1hcHBpbmdzLCBnZW5MaW5lKTtcbiAgY29uc3QgaW5kZXggPSBnZXRDb2x1bW5JbmRleChsaW5lLCBnZW5Db2x1bW4pO1xuXG4gIGlmICghc291cmNlKSB7XG4gICAgaWYgKHNraXBhYmxlICYmIHNraXBTb3VyY2VsZXNzKGxpbmUsIGluZGV4KSkgcmV0dXJuO1xuICAgIHJldHVybiBpbnNlcnQobGluZSwgaW5kZXgsIFtnZW5Db2x1bW5dKTtcbiAgfVxuXG4gIC8vIFNpZ2gsIFR5cGVTY3JpcHQgY2FuJ3QgZmlndXJlIG91dCBzb3VyY2VMaW5lIGFuZCBzb3VyY2VDb2x1bW4gYXJlbid0IG51bGxpc2ggaWYgc291cmNlXG4gIC8vIGlzbid0IG51bGxpc2guXG4gIGFzc2VydDxudW1iZXI+KHNvdXJjZUxpbmUpO1xuICBhc3NlcnQ8bnVtYmVyPihzb3VyY2VDb2x1bW4pO1xuXG4gIGNvbnN0IHNvdXJjZXNJbmRleCA9IHB1dChzb3VyY2VzLCBzb3VyY2UpO1xuICBjb25zdCBuYW1lc0luZGV4ID0gbmFtZSA/IHB1dChuYW1lcywgbmFtZSkgOiBOT19OQU1FO1xuICBpZiAoc291cmNlc0luZGV4ID09PSBzb3VyY2VzQ29udGVudC5sZW5ndGgpIHNvdXJjZXNDb250ZW50W3NvdXJjZXNJbmRleF0gPSBjb250ZW50ID8/IG51bGw7XG5cbiAgaWYgKHNraXBhYmxlICYmIHNraXBTb3VyY2UobGluZSwgaW5kZXgsIHNvdXJjZXNJbmRleCwgc291cmNlTGluZSwgc291cmNlQ29sdW1uLCBuYW1lc0luZGV4KSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHJldHVybiBpbnNlcnQoXG4gICAgbGluZSxcbiAgICBpbmRleCxcbiAgICBuYW1lXG4gICAgICA/IFtnZW5Db2x1bW4sIHNvdXJjZXNJbmRleCwgc291cmNlTGluZSwgc291cmNlQ29sdW1uLCBuYW1lc0luZGV4XVxuICAgICAgOiBbZ2VuQ29sdW1uLCBzb3VyY2VzSW5kZXgsIHNvdXJjZUxpbmUsIHNvdXJjZUNvbHVtbl0sXG4gICk7XG59XG5cbmZ1bmN0aW9uIGFzc2VydDxUPihfdmFsOiB1bmtub3duKTogYXNzZXJ0cyBfdmFsIGlzIFQge1xuICAvLyBub29wLlxufVxuXG5mdW5jdGlvbiBnZXRMaW5lKG1hcHBpbmdzOiBTb3VyY2VNYXBTZWdtZW50W11bXSwgaW5kZXg6IG51bWJlcik6IFNvdXJjZU1hcFNlZ21lbnRbXSB7XG4gIGZvciAobGV0IGkgPSBtYXBwaW5ncy5sZW5ndGg7IGkgPD0gaW5kZXg7IGkrKykge1xuICAgIG1hcHBpbmdzW2ldID0gW107XG4gIH1cbiAgcmV0dXJuIG1hcHBpbmdzW2luZGV4XTtcbn1cblxuZnVuY3Rpb24gZ2V0Q29sdW1uSW5kZXgobGluZTogU291cmNlTWFwU2VnbWVudFtdLCBnZW5Db2x1bW46IG51bWJlcik6IG51bWJlciB7XG4gIGxldCBpbmRleCA9IGxpbmUubGVuZ3RoO1xuICBmb3IgKGxldCBpID0gaW5kZXggLSAxOyBpID49IDA7IGluZGV4ID0gaS0tKSB7XG4gICAgY29uc3QgY3VycmVudCA9IGxpbmVbaV07XG4gICAgaWYgKGdlbkNvbHVtbiA+PSBjdXJyZW50W0NPTFVNTl0pIGJyZWFrO1xuICB9XG4gIHJldHVybiBpbmRleDtcbn1cblxuZnVuY3Rpb24gaW5zZXJ0PFQ+KGFycmF5OiBUW10sIGluZGV4OiBudW1iZXIsIHZhbHVlOiBUKSB7XG4gIGZvciAobGV0IGkgPSBhcnJheS5sZW5ndGg7IGkgPiBpbmRleDsgaS0tKSB7XG4gICAgYXJyYXlbaV0gPSBhcnJheVtpIC0gMV07XG4gIH1cbiAgYXJyYXlbaW5kZXhdID0gdmFsdWU7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZUVtcHR5RmluYWxMaW5lcyhtYXBwaW5nczogU291cmNlTWFwU2VnbWVudFtdW10pIHtcbiAgY29uc3QgeyBsZW5ndGggfSA9IG1hcHBpbmdzO1xuICBsZXQgbGVuID0gbGVuZ3RoO1xuICBmb3IgKGxldCBpID0gbGVuIC0gMTsgaSA+PSAwOyBsZW4gPSBpLCBpLS0pIHtcbiAgICBpZiAobWFwcGluZ3NbaV0ubGVuZ3RoID4gMCkgYnJlYWs7XG4gIH1cbiAgaWYgKGxlbiA8IGxlbmd0aCkgbWFwcGluZ3MubGVuZ3RoID0gbGVuO1xufVxuXG5mdW5jdGlvbiBwdXRBbGw8VCBleHRlbmRzIHN0cmluZyB8IG51bWJlcj4oc2V0YXJyOiBTZXRBcnJheTxUPiwgYXJyYXk6IFRbXSkge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSBwdXQoc2V0YXJyLCBhcnJheVtpXSk7XG59XG5cbmZ1bmN0aW9uIHNraXBTb3VyY2VsZXNzKGxpbmU6IFNvdXJjZU1hcFNlZ21lbnRbXSwgaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAvLyBUaGUgc3RhcnQgb2YgYSBsaW5lIGlzIGFscmVhZHkgc291cmNlbGVzcywgc28gYWRkaW5nIGEgc291cmNlbGVzcyBzZWdtZW50IHRvIHRoZSBiZWdpbm5pbmdcbiAgLy8gZG9lc24ndCBnZW5lcmF0ZSBhbnkgdXNlZnVsIGluZm9ybWF0aW9uLlxuICBpZiAoaW5kZXggPT09IDApIHJldHVybiB0cnVlO1xuXG4gIGNvbnN0IHByZXYgPSBsaW5lW2luZGV4IC0gMV07XG4gIC8vIElmIHRoZSBwcmV2aW91cyBzZWdtZW50IGlzIGFsc28gc291cmNlbGVzcywgdGhlbiBhZGRpbmcgYW5vdGhlciBzb3VyY2VsZXNzIHNlZ21lbnQgZG9lc24ndFxuICAvLyBnZW5yYXRlIGFueSBuZXcgaW5mb3JtYXRpb24uIEVsc2UsIHRoaXMgc2VnbWVudCB3aWxsIGVuZCB0aGUgc291cmNlL25hbWVkIHNlZ21lbnQgYW5kIHBvaW50IHRvXG4gIC8vIGEgc291cmNlbGVzcyBwb3NpdGlvbiwgd2hpY2ggaXMgdXNlZnVsLlxuICByZXR1cm4gcHJldi5sZW5ndGggPT09IDE7XG59XG5cbmZ1bmN0aW9uIHNraXBTb3VyY2UoXG4gIGxpbmU6IFNvdXJjZU1hcFNlZ21lbnRbXSxcbiAgaW5kZXg6IG51bWJlcixcbiAgc291cmNlc0luZGV4OiBudW1iZXIsXG4gIHNvdXJjZUxpbmU6IG51bWJlcixcbiAgc291cmNlQ29sdW1uOiBudW1iZXIsXG4gIG5hbWVzSW5kZXg6IG51bWJlcixcbik6IGJvb2xlYW4ge1xuICAvLyBBIHNvdXJjZS9uYW1lZCBzZWdtZW50IGF0IHRoZSBzdGFydCBvZiBhIGxpbmUgZ2l2ZXMgcG9zaXRpb24gYXQgdGhhdCBnZW5Db2x1bW5cbiAgaWYgKGluZGV4ID09PSAwKSByZXR1cm4gZmFsc2U7XG5cbiAgY29uc3QgcHJldiA9IGxpbmVbaW5kZXggLSAxXTtcblxuICAvLyBJZiB0aGUgcHJldmlvdXMgc2VnbWVudCBpcyBzb3VyY2VsZXNzLCB0aGVuIHdlJ3JlIHRyYW5zaXRpb25pbmcgdG8gYSBzb3VyY2UuXG4gIGlmIChwcmV2Lmxlbmd0aCA9PT0gMSkgcmV0dXJuIGZhbHNlO1xuXG4gIC8vIElmIHRoZSBwcmV2aW91cyBzZWdtZW50IG1hcHMgdG8gdGhlIGV4YWN0IHNhbWUgc291cmNlIHBvc2l0aW9uLCB0aGVuIHRoaXMgc2VnbWVudCBkb2Vzbid0XG4gIC8vIHByb3ZpZGUgYW55IG5ldyBwb3NpdGlvbiBpbmZvcm1hdGlvbi5cbiAgcmV0dXJuIChcbiAgICBzb3VyY2VzSW5kZXggPT09IHByZXZbU09VUkNFU19JTkRFWF0gJiZcbiAgICBzb3VyY2VMaW5lID09PSBwcmV2W1NPVVJDRV9MSU5FXSAmJlxuICAgIHNvdXJjZUNvbHVtbiA9PT0gcHJldltTT1VSQ0VfQ09MVU1OXSAmJlxuICAgIG5hbWVzSW5kZXggPT09IChwcmV2Lmxlbmd0aCA9PT0gNSA/IHByZXZbTkFNRVNfSU5ERVhdIDogTk9fTkFNRSlcbiAgKTtcbn1cblxuZnVuY3Rpb24gYWRkTWFwcGluZ0ludGVybmFsPFMgZXh0ZW5kcyBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkPihcbiAgc2tpcGFibGU6IGJvb2xlYW4sXG4gIG1hcDogR2VuTWFwcGluZyxcbiAgbWFwcGluZzoge1xuICAgIGdlbmVyYXRlZDogUG9zO1xuICAgIHNvdXJjZTogUztcbiAgICBvcmlnaW5hbDogUyBleHRlbmRzIHN0cmluZyA/IFBvcyA6IG51bGwgfCB1bmRlZmluZWQ7XG4gICAgbmFtZTogUyBleHRlbmRzIHN0cmluZyA/IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQgOiBudWxsIHwgdW5kZWZpbmVkO1xuICAgIGNvbnRlbnQ6IFMgZXh0ZW5kcyBzdHJpbmcgPyBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkIDogbnVsbCB8IHVuZGVmaW5lZDtcbiAgfSxcbikge1xuICBjb25zdCB7IGdlbmVyYXRlZCwgc291cmNlLCBvcmlnaW5hbCwgbmFtZSwgY29udGVudCB9ID0gbWFwcGluZztcbiAgaWYgKCFzb3VyY2UpIHtcbiAgICByZXR1cm4gYWRkU2VnbWVudEludGVybmFsKFxuICAgICAgc2tpcGFibGUsXG4gICAgICBtYXAsXG4gICAgICBnZW5lcmF0ZWQubGluZSAtIDEsXG4gICAgICBnZW5lcmF0ZWQuY29sdW1uLFxuICAgICAgbnVsbCxcbiAgICAgIG51bGwsXG4gICAgICBudWxsLFxuICAgICAgbnVsbCxcbiAgICAgIG51bGwsXG4gICAgKTtcbiAgfVxuICBhc3NlcnQ8UG9zPihvcmlnaW5hbCk7XG4gIHJldHVybiBhZGRTZWdtZW50SW50ZXJuYWwoXG4gICAgc2tpcGFibGUsXG4gICAgbWFwLFxuICAgIGdlbmVyYXRlZC5saW5lIC0gMSxcbiAgICBnZW5lcmF0ZWQuY29sdW1uLFxuICAgIHNvdXJjZSBhcyBzdHJpbmcsXG4gICAgb3JpZ2luYWwubGluZSAtIDEsXG4gICAgb3JpZ2luYWwuY29sdW1uLFxuICAgIG5hbWUsXG4gICAgY29udGVudCxcbiAgKTtcbn1cbiIsICJcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHt2YWx1ZTogdHJ1ZX0pO3ZhciBfZ2VubWFwcGluZyA9IHJlcXVpcmUoJ0BqcmlkZ2V3ZWxsL2dlbi1tYXBwaW5nJyk7XG5cblxuXG52YXIgX2NoYXJjb2RlcyA9IHJlcXVpcmUoJy4vcGFyc2VyL3V0aWwvY2hhcmNvZGVzJyk7XG5cblxuXG5cblxuXG5cblxuXG5cblxuXG4vKipcbiAqIEdlbmVyYXRlIGEgc291cmNlIG1hcCBpbmRpY2F0aW5nIHRoYXQgZWFjaCBsaW5lIG1hcHMgZGlyZWN0bHkgdG8gdGhlIG9yaWdpbmFsIGxpbmUsXG4gKiB3aXRoIHRoZSB0b2tlbnMgaW4gdGhlaXIgbmV3IHBvc2l0aW9ucy5cbiAqL1xuIGZ1bmN0aW9uIGNvbXB1dGVTb3VyY2VNYXAoXG4gIHtjb2RlOiBnZW5lcmF0ZWRDb2RlLCBtYXBwaW5nczogcmF3TWFwcGluZ3N9LFxuICBmaWxlUGF0aCxcbiAgb3B0aW9ucyxcbiAgc291cmNlLFxuICB0b2tlbnMsXG4pIHtcbiAgY29uc3Qgc291cmNlQ29sdW1ucyA9IGNvbXB1dGVTb3VyY2VDb2x1bW5zKHNvdXJjZSwgdG9rZW5zKTtcbiAgY29uc3QgbWFwID0gbmV3ICgwLCBfZ2VubWFwcGluZy5HZW5NYXBwaW5nKSh7ZmlsZTogb3B0aW9ucy5jb21waWxlZEZpbGVuYW1lfSk7XG4gIGxldCB0b2tlbkluZGV4ID0gMDtcbiAgLy8gY3VycmVudE1hcHBpbmcgaXMgdGhlIG91dHB1dCBzb3VyY2UgaW5kZXggZm9yIHRoZSBjdXJyZW50IGlucHV0IHRva2VuIGJlaW5nXG4gIC8vIGNvbnNpZGVyZWQuXG4gIGxldCBjdXJyZW50TWFwcGluZyA9IHJhd01hcHBpbmdzWzBdO1xuICB3aGlsZSAoY3VycmVudE1hcHBpbmcgPT09IHVuZGVmaW5lZCAmJiB0b2tlbkluZGV4IDwgcmF3TWFwcGluZ3MubGVuZ3RoIC0gMSkge1xuICAgIHRva2VuSW5kZXgrKztcbiAgICBjdXJyZW50TWFwcGluZyA9IHJhd01hcHBpbmdzW3Rva2VuSW5kZXhdO1xuICB9XG4gIGxldCBsaW5lID0gMDtcbiAgbGV0IGxpbmVTdGFydCA9IDA7XG4gIGlmIChjdXJyZW50TWFwcGluZyAhPT0gbGluZVN0YXJ0KSB7XG4gICAgX2dlbm1hcHBpbmcubWF5YmVBZGRTZWdtZW50LmNhbGwodm9pZCAwLCBtYXAsIGxpbmUsIDAsIGZpbGVQYXRoLCBsaW5lLCAwKTtcbiAgfVxuICBmb3IgKGxldCBpID0gMDsgaSA8IGdlbmVyYXRlZENvZGUubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoaSA9PT0gY3VycmVudE1hcHBpbmcpIHtcbiAgICAgIGNvbnN0IGdlbkNvbHVtbiA9IGN1cnJlbnRNYXBwaW5nIC0gbGluZVN0YXJ0O1xuICAgICAgY29uc3Qgc291cmNlQ29sdW1uID0gc291cmNlQ29sdW1uc1t0b2tlbkluZGV4XTtcbiAgICAgIF9nZW5tYXBwaW5nLm1heWJlQWRkU2VnbWVudC5jYWxsKHZvaWQgMCwgbWFwLCBsaW5lLCBnZW5Db2x1bW4sIGZpbGVQYXRoLCBsaW5lLCBzb3VyY2VDb2x1bW4pO1xuICAgICAgd2hpbGUgKFxuICAgICAgICAoY3VycmVudE1hcHBpbmcgPT09IGkgfHwgY3VycmVudE1hcHBpbmcgPT09IHVuZGVmaW5lZCkgJiZcbiAgICAgICAgdG9rZW5JbmRleCA8IHJhd01hcHBpbmdzLmxlbmd0aCAtIDFcbiAgICAgICkge1xuICAgICAgICB0b2tlbkluZGV4Kys7XG4gICAgICAgIGN1cnJlbnRNYXBwaW5nID0gcmF3TWFwcGluZ3NbdG9rZW5JbmRleF07XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChnZW5lcmF0ZWRDb2RlLmNoYXJDb2RlQXQoaSkgPT09IF9jaGFyY29kZXMuY2hhckNvZGVzLmxpbmVGZWVkKSB7XG4gICAgICBsaW5lKys7XG4gICAgICBsaW5lU3RhcnQgPSBpICsgMTtcbiAgICAgIGlmIChjdXJyZW50TWFwcGluZyAhPT0gbGluZVN0YXJ0KSB7XG4gICAgICAgIF9nZW5tYXBwaW5nLm1heWJlQWRkU2VnbWVudC5jYWxsKHZvaWQgMCwgbWFwLCBsaW5lLCAwLCBmaWxlUGF0aCwgbGluZSwgMCk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGNvbnN0IHtzb3VyY2VSb290LCBzb3VyY2VzQ29udGVudCwgLi4uc291cmNlTWFwfSA9IF9nZW5tYXBwaW5nLnRvRW5jb2RlZE1hcC5jYWxsKHZvaWQgMCwgbWFwKTtcbiAgcmV0dXJuIHNvdXJjZU1hcCA7XG59IGV4cG9ydHMuZGVmYXVsdCA9IGNvbXB1dGVTb3VyY2VNYXA7XG5cbi8qKlxuICogQ3JlYXRlIGFuIGFycmF5IG1hcHBpbmcgZWFjaCB0b2tlbiBpbmRleCB0byB0aGUgMC1iYXNlZCBjb2x1bW4gb2YgdGhlIHN0YXJ0XG4gKiBwb3NpdGlvbiBvZiB0aGUgdG9rZW4uXG4gKi9cbmZ1bmN0aW9uIGNvbXB1dGVTb3VyY2VDb2x1bW5zKGNvZGUsIHRva2Vucykge1xuICBjb25zdCBzb3VyY2VDb2x1bW5zID0gbmV3IEFycmF5KHRva2Vucy5sZW5ndGgpO1xuICBsZXQgdG9rZW5JbmRleCA9IDA7XG4gIGxldCBjdXJyZW50TWFwcGluZyA9IHRva2Vuc1t0b2tlbkluZGV4XS5zdGFydDtcbiAgbGV0IGxpbmVTdGFydCA9IDA7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgY29kZS5sZW5ndGg7IGkrKykge1xuICAgIGlmIChpID09PSBjdXJyZW50TWFwcGluZykge1xuICAgICAgc291cmNlQ29sdW1uc1t0b2tlbkluZGV4XSA9IGN1cnJlbnRNYXBwaW5nIC0gbGluZVN0YXJ0O1xuICAgICAgdG9rZW5JbmRleCsrO1xuICAgICAgY3VycmVudE1hcHBpbmcgPSB0b2tlbnNbdG9rZW5JbmRleF0uc3RhcnQ7XG4gICAgfVxuICAgIGlmIChjb2RlLmNoYXJDb2RlQXQoaSkgPT09IF9jaGFyY29kZXMuY2hhckNvZGVzLmxpbmVGZWVkKSB7XG4gICAgICBsaW5lU3RhcnQgPSBpICsgMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHNvdXJjZUNvbHVtbnM7XG59XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7dmFsdWU6IHRydWV9KTtcblxuY29uc3QgSEVMUEVSUyA9IHtcbiAgcmVxdWlyZTogYFxuICAgIGltcG9ydCB7Y3JlYXRlUmVxdWlyZSBhcyBDUkVBVEVfUkVRVUlSRV9OQU1FfSBmcm9tIFwibW9kdWxlXCI7XG4gICAgY29uc3QgcmVxdWlyZSA9IENSRUFURV9SRVFVSVJFX05BTUUoaW1wb3J0Lm1ldGEudXJsKTtcbiAgYCxcbiAgaW50ZXJvcFJlcXVpcmVXaWxkY2FyZDogYFxuICAgIGZ1bmN0aW9uIGludGVyb3BSZXF1aXJlV2lsZGNhcmQob2JqKSB7XG4gICAgICBpZiAob2JqICYmIG9iai5fX2VzTW9kdWxlKSB7XG4gICAgICAgIHJldHVybiBvYmo7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgbmV3T2JqID0ge307XG4gICAgICAgIGlmIChvYmogIT0gbnVsbCkge1xuICAgICAgICAgIGZvciAodmFyIGtleSBpbiBvYmopIHtcbiAgICAgICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7XG4gICAgICAgICAgICAgIG5ld09ialtrZXldID0gb2JqW2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIG5ld09iai5kZWZhdWx0ID0gb2JqO1xuICAgICAgICByZXR1cm4gbmV3T2JqO1xuICAgICAgfVxuICAgIH1cbiAgYCxcbiAgaW50ZXJvcFJlcXVpcmVEZWZhdWx0OiBgXG4gICAgZnVuY3Rpb24gaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikge1xuICAgICAgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07XG4gICAgfVxuICBgLFxuICBjcmVhdGVOYW1lZEV4cG9ydEZyb206IGBcbiAgICBmdW5jdGlvbiBjcmVhdGVOYW1lZEV4cG9ydEZyb20ob2JqLCBsb2NhbE5hbWUsIGltcG9ydGVkTmFtZSkge1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGxvY2FsTmFtZSwge2VudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgZ2V0OiAoKSA9PiBvYmpbaW1wb3J0ZWROYW1lXX0pO1xuICAgIH1cbiAgYCxcbiAgLy8gTm90ZSB0aGF0IFR5cGVTY3JpcHQgYW5kIEJhYmVsIGRvIHRoaXMgZGlmZmVyZW50bHk7IFR5cGVTY3JpcHQgZG9lcyBhIHNpbXBsZSBleGlzdGVuY2VcbiAgLy8gY2hlY2sgaW4gdGhlIGV4cG9ydHMgb2JqZWN0IGFuZCBkb2VzIGEgcGxhaW4gYXNzaWdubWVudCwgd2hlcmVhcyBCYWJlbCB1c2VzXG4gIC8vIGRlZmluZVByb3BlcnR5IGFuZCBidWlsZHMgYW4gb2JqZWN0IG9mIGV4cGxpY2l0bHktZXhwb3J0ZWQgbmFtZXMgc28gdGhhdCBzdGFyIGV4cG9ydHMgY2FuXG4gIC8vIGFsd2F5cyB0YWtlIGxvd2VyIHByZWNlZGVuY2UuIEZvciBub3csIHdlIGRvIHRoZSBlYXNpZXIgVHlwZVNjcmlwdCB0aGluZy5cbiAgY3JlYXRlU3RhckV4cG9ydDogYFxuICAgIGZ1bmN0aW9uIGNyZWF0ZVN0YXJFeHBvcnQob2JqKSB7XG4gICAgICBPYmplY3Qua2V5cyhvYmopXG4gICAgICAgIC5maWx0ZXIoKGtleSkgPT4ga2V5ICE9PSBcImRlZmF1bHRcIiAmJiBrZXkgIT09IFwiX19lc01vZHVsZVwiKVxuICAgICAgICAuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgaWYgKGV4cG9ydHMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7ZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCBnZXQ6ICgpID0+IG9ialtrZXldfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgYCxcbiAgbnVsbGlzaENvYWxlc2NlOiBgXG4gICAgZnVuY3Rpb24gbnVsbGlzaENvYWxlc2NlKGxocywgcmhzRm4pIHtcbiAgICAgIGlmIChsaHMgIT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gbGhzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHJoc0ZuKCk7XG4gICAgICB9XG4gICAgfVxuICBgLFxuICBhc3luY051bGxpc2hDb2FsZXNjZTogYFxuICAgIGFzeW5jIGZ1bmN0aW9uIGFzeW5jTnVsbGlzaENvYWxlc2NlKGxocywgcmhzRm4pIHtcbiAgICAgIGlmIChsaHMgIT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gbGhzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHJoc0ZuKCk7XG4gICAgICB9XG4gICAgfVxuICBgLFxuICBvcHRpb25hbENoYWluOiBgXG4gICAgZnVuY3Rpb24gb3B0aW9uYWxDaGFpbihvcHMpIHtcbiAgICAgIGxldCBsYXN0QWNjZXNzTEhTID0gdW5kZWZpbmVkO1xuICAgICAgbGV0IHZhbHVlID0gb3BzWzBdO1xuICAgICAgbGV0IGkgPSAxO1xuICAgICAgd2hpbGUgKGkgPCBvcHMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IG9wID0gb3BzW2ldO1xuICAgICAgICBjb25zdCBmbiA9IG9wc1tpICsgMV07XG4gICAgICAgIGkgKz0gMjtcbiAgICAgICAgaWYgKChvcCA9PT0gJ29wdGlvbmFsQWNjZXNzJyB8fCBvcCA9PT0gJ29wdGlvbmFsQ2FsbCcpICYmIHZhbHVlID09IG51bGwpIHtcbiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcCA9PT0gJ2FjY2VzcycgfHwgb3AgPT09ICdvcHRpb25hbEFjY2VzcycpIHtcbiAgICAgICAgICBsYXN0QWNjZXNzTEhTID0gdmFsdWU7XG4gICAgICAgICAgdmFsdWUgPSBmbih2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSBpZiAob3AgPT09ICdjYWxsJyB8fCBvcCA9PT0gJ29wdGlvbmFsQ2FsbCcpIHtcbiAgICAgICAgICB2YWx1ZSA9IGZuKCguLi5hcmdzKSA9PiB2YWx1ZS5jYWxsKGxhc3RBY2Nlc3NMSFMsIC4uLmFyZ3MpKTtcbiAgICAgICAgICBsYXN0QWNjZXNzTEhTID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICBgLFxuICBhc3luY09wdGlvbmFsQ2hhaW46IGBcbiAgICBhc3luYyBmdW5jdGlvbiBhc3luY09wdGlvbmFsQ2hhaW4ob3BzKSB7XG4gICAgICBsZXQgbGFzdEFjY2Vzc0xIUyA9IHVuZGVmaW5lZDtcbiAgICAgIGxldCB2YWx1ZSA9IG9wc1swXTtcbiAgICAgIGxldCBpID0gMTtcbiAgICAgIHdoaWxlIChpIDwgb3BzLmxlbmd0aCkge1xuICAgICAgICBjb25zdCBvcCA9IG9wc1tpXTtcbiAgICAgICAgY29uc3QgZm4gPSBvcHNbaSArIDFdO1xuICAgICAgICBpICs9IDI7XG4gICAgICAgIGlmICgob3AgPT09ICdvcHRpb25hbEFjY2VzcycgfHwgb3AgPT09ICdvcHRpb25hbENhbGwnKSAmJiB2YWx1ZSA9PSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3AgPT09ICdhY2Nlc3MnIHx8IG9wID09PSAnb3B0aW9uYWxBY2Nlc3MnKSB7XG4gICAgICAgICAgbGFzdEFjY2Vzc0xIUyA9IHZhbHVlO1xuICAgICAgICAgIHZhbHVlID0gYXdhaXQgZm4odmFsdWUpO1xuICAgICAgICB9IGVsc2UgaWYgKG9wID09PSAnY2FsbCcgfHwgb3AgPT09ICdvcHRpb25hbENhbGwnKSB7XG4gICAgICAgICAgdmFsdWUgPSBhd2FpdCBmbigoLi4uYXJncykgPT4gdmFsdWUuY2FsbChsYXN0QWNjZXNzTEhTLCAuLi5hcmdzKSk7XG4gICAgICAgICAgbGFzdEFjY2Vzc0xIUyA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgYCxcbiAgb3B0aW9uYWxDaGFpbkRlbGV0ZTogYFxuICAgIGZ1bmN0aW9uIG9wdGlvbmFsQ2hhaW5EZWxldGUob3BzKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBPUFRJT05BTF9DSEFJTl9OQU1FKG9wcyk7XG4gICAgICByZXR1cm4gcmVzdWx0ID09IG51bGwgPyB0cnVlIDogcmVzdWx0O1xuICAgIH1cbiAgYCxcbiAgYXN5bmNPcHRpb25hbENoYWluRGVsZXRlOiBgXG4gICAgYXN5bmMgZnVuY3Rpb24gYXN5bmNPcHRpb25hbENoYWluRGVsZXRlKG9wcykge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgQVNZTkNfT1BUSU9OQUxfQ0hBSU5fTkFNRShvcHMpO1xuICAgICAgcmV0dXJuIHJlc3VsdCA9PSBudWxsID8gdHJ1ZSA6IHJlc3VsdDtcbiAgICB9XG4gIGAsXG59O1xuXG4gY2xhc3MgSGVscGVyTWFuYWdlciB7XG4gIF9faW5pdCgpIHt0aGlzLmhlbHBlck5hbWVzID0ge319XG4gIF9faW5pdDIoKSB7dGhpcy5jcmVhdGVSZXF1aXJlTmFtZSA9IG51bGx9XG4gIGNvbnN0cnVjdG9yKCBuYW1lTWFuYWdlcikgezt0aGlzLm5hbWVNYW5hZ2VyID0gbmFtZU1hbmFnZXI7SGVscGVyTWFuYWdlci5wcm90b3R5cGUuX19pbml0LmNhbGwodGhpcyk7SGVscGVyTWFuYWdlci5wcm90b3R5cGUuX19pbml0Mi5jYWxsKHRoaXMpO31cblxuICBnZXRIZWxwZXJOYW1lKGJhc2VOYW1lKSB7XG4gICAgbGV0IGhlbHBlck5hbWUgPSB0aGlzLmhlbHBlck5hbWVzW2Jhc2VOYW1lXTtcbiAgICBpZiAoaGVscGVyTmFtZSkge1xuICAgICAgcmV0dXJuIGhlbHBlck5hbWU7XG4gICAgfVxuICAgIGhlbHBlck5hbWUgPSB0aGlzLm5hbWVNYW5hZ2VyLmNsYWltRnJlZU5hbWUoYF8ke2Jhc2VOYW1lfWApO1xuICAgIHRoaXMuaGVscGVyTmFtZXNbYmFzZU5hbWVdID0gaGVscGVyTmFtZTtcbiAgICByZXR1cm4gaGVscGVyTmFtZTtcbiAgfVxuXG4gIGVtaXRIZWxwZXJzKCkge1xuICAgIGxldCByZXN1bHRDb2RlID0gXCJcIjtcbiAgICBpZiAodGhpcy5oZWxwZXJOYW1lcy5vcHRpb25hbENoYWluRGVsZXRlKSB7XG4gICAgICB0aGlzLmdldEhlbHBlck5hbWUoXCJvcHRpb25hbENoYWluXCIpO1xuICAgIH1cbiAgICBpZiAodGhpcy5oZWxwZXJOYW1lcy5hc3luY09wdGlvbmFsQ2hhaW5EZWxldGUpIHtcbiAgICAgIHRoaXMuZ2V0SGVscGVyTmFtZShcImFzeW5jT3B0aW9uYWxDaGFpblwiKTtcbiAgICB9XG4gICAgZm9yIChjb25zdCBbYmFzZU5hbWUsIGhlbHBlckNvZGVUZW1wbGF0ZV0gb2YgT2JqZWN0LmVudHJpZXMoSEVMUEVSUykpIHtcbiAgICAgIGNvbnN0IGhlbHBlck5hbWUgPSB0aGlzLmhlbHBlck5hbWVzW2Jhc2VOYW1lXTtcbiAgICAgIGxldCBoZWxwZXJDb2RlID0gaGVscGVyQ29kZVRlbXBsYXRlO1xuICAgICAgaWYgKGJhc2VOYW1lID09PSBcIm9wdGlvbmFsQ2hhaW5EZWxldGVcIikge1xuICAgICAgICBoZWxwZXJDb2RlID0gaGVscGVyQ29kZS5yZXBsYWNlKFwiT1BUSU9OQUxfQ0hBSU5fTkFNRVwiLCB0aGlzLmhlbHBlck5hbWVzLm9wdGlvbmFsQ2hhaW4pO1xuICAgICAgfSBlbHNlIGlmIChiYXNlTmFtZSA9PT0gXCJhc3luY09wdGlvbmFsQ2hhaW5EZWxldGVcIikge1xuICAgICAgICBoZWxwZXJDb2RlID0gaGVscGVyQ29kZS5yZXBsYWNlKFxuICAgICAgICAgIFwiQVNZTkNfT1BUSU9OQUxfQ0hBSU5fTkFNRVwiLFxuICAgICAgICAgIHRoaXMuaGVscGVyTmFtZXMuYXN5bmNPcHRpb25hbENoYWluLFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmIChiYXNlTmFtZSA9PT0gXCJyZXF1aXJlXCIpIHtcbiAgICAgICAgaWYgKHRoaXMuY3JlYXRlUmVxdWlyZU5hbWUgPT09IG51bGwpIHtcbiAgICAgICAgICB0aGlzLmNyZWF0ZVJlcXVpcmVOYW1lID0gdGhpcy5uYW1lTWFuYWdlci5jbGFpbUZyZWVOYW1lKFwiX2NyZWF0ZVJlcXVpcmVcIik7XG4gICAgICAgIH1cbiAgICAgICAgaGVscGVyQ29kZSA9IGhlbHBlckNvZGUucmVwbGFjZSgvQ1JFQVRFX1JFUVVJUkVfTkFNRS9nLCB0aGlzLmNyZWF0ZVJlcXVpcmVOYW1lKTtcbiAgICAgIH1cbiAgICAgIGlmIChoZWxwZXJOYW1lKSB7XG4gICAgICAgIHJlc3VsdENvZGUgKz0gXCIgXCI7XG4gICAgICAgIHJlc3VsdENvZGUgKz0gaGVscGVyQ29kZS5yZXBsYWNlKGJhc2VOYW1lLCBoZWxwZXJOYW1lKS5yZXBsYWNlKC9cXHMrL2csIFwiIFwiKS50cmltKCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHRDb2RlO1xuICB9XG59IGV4cG9ydHMuSGVscGVyTWFuYWdlciA9IEhlbHBlck1hbmFnZXI7XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7dmFsdWU6IHRydWV9KTtcblxuXG5cbnZhciBfdG9rZW5pemVyID0gcmVxdWlyZSgnLi9wYXJzZXIvdG9rZW5pemVyJyk7XG5cbnZhciBfdHlwZXMgPSByZXF1aXJlKCcuL3BhcnNlci90b2tlbml6ZXIvdHlwZXMnKTtcblxuXG4vKipcbiAqIFRyYXZlcnNlIHRoZSBnaXZlbiB0b2tlbnMgYW5kIG1vZGlmeSB0aGVtIGlmIG5lY2Vzc2FyeSB0byBpbmRpY2F0ZSB0aGF0IHNvbWUgbmFtZXMgc2hhZG93IGdsb2JhbFxuICogdmFyaWFibGVzLlxuICovXG4gZnVuY3Rpb24gaWRlbnRpZnlTaGFkb3dlZEdsb2JhbHMoXG4gIHRva2VucyxcbiAgc2NvcGVzLFxuICBnbG9iYWxOYW1lcyxcbikge1xuICBpZiAoIWhhc1NoYWRvd2VkR2xvYmFscyh0b2tlbnMsIGdsb2JhbE5hbWVzKSkge1xuICAgIHJldHVybjtcbiAgfVxuICBtYXJrU2hhZG93ZWRHbG9iYWxzKHRva2Vucywgc2NvcGVzLCBnbG9iYWxOYW1lcyk7XG59IGV4cG9ydHMuZGVmYXVsdCA9IGlkZW50aWZ5U2hhZG93ZWRHbG9iYWxzO1xuXG4vKipcbiAqIFdlIGNhbiBkbyBhIGZhc3QgdXAtZnJvbnQgY2hlY2sgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgZGVjbGFyYXRpb25zIHRvIGdsb2JhbCBuYW1lcy4gSWYgbm90LFxuICogdGhlbiB0aGVyZSdzIG5vIHBvaW50IGluIGNvbXB1dGluZyBzY29wZSBhc3NpZ25tZW50cy5cbiAqL1xuLy8gRXhwb3J0ZWQgZm9yIHRlc3RpbmcuXG4gZnVuY3Rpb24gaGFzU2hhZG93ZWRHbG9iYWxzKHRva2VucywgZ2xvYmFsTmFtZXMpIHtcbiAgZm9yIChjb25zdCB0b2tlbiBvZiB0b2tlbnMudG9rZW5zKSB7XG4gICAgaWYgKFxuICAgICAgdG9rZW4udHlwZSA9PT0gX3R5cGVzLlRva2VuVHlwZS5uYW1lICYmXG4gICAgICAhdG9rZW4uaXNUeXBlICYmXG4gICAgICBfdG9rZW5pemVyLmlzTm9uVG9wTGV2ZWxEZWNsYXJhdGlvbi5jYWxsKHZvaWQgMCwgdG9rZW4pICYmXG4gICAgICBnbG9iYWxOYW1lcy5oYXModG9rZW5zLmlkZW50aWZpZXJOYW1lRm9yVG9rZW4odG9rZW4pKVxuICAgICkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZTtcbn0gZXhwb3J0cy5oYXNTaGFkb3dlZEdsb2JhbHMgPSBoYXNTaGFkb3dlZEdsb2JhbHM7XG5cbmZ1bmN0aW9uIG1hcmtTaGFkb3dlZEdsb2JhbHMoXG4gIHRva2VucyxcbiAgc2NvcGVzLFxuICBnbG9iYWxOYW1lcyxcbikge1xuICBjb25zdCBzY29wZVN0YWNrID0gW107XG4gIGxldCBzY29wZUluZGV4ID0gc2NvcGVzLmxlbmd0aCAtIDE7XG4gIC8vIFNjb3BlcyB3ZXJlIGdlbmVyYXRlZCBhdCBjb21wbGV0aW9uIHRpbWUsIHNvIHRoZXkncmUgc29ydGVkIGJ5IGVuZCBpbmRleCwgc28gd2UgY2FuIG1haW50YWluIGFcbiAgLy8gZ29vZCBzdGFjayBieSBnb2luZyBiYWNrd2FyZHMgdGhyb3VnaCB0aGVtLlxuICBmb3IgKGxldCBpID0gdG9rZW5zLnRva2Vucy5sZW5ndGggLSAxOyA7IGktLSkge1xuICAgIHdoaWxlIChzY29wZVN0YWNrLmxlbmd0aCA+IDAgJiYgc2NvcGVTdGFja1tzY29wZVN0YWNrLmxlbmd0aCAtIDFdLnN0YXJ0VG9rZW5JbmRleCA9PT0gaSArIDEpIHtcbiAgICAgIHNjb3BlU3RhY2sucG9wKCk7XG4gICAgfVxuICAgIHdoaWxlIChzY29wZUluZGV4ID49IDAgJiYgc2NvcGVzW3Njb3BlSW5kZXhdLmVuZFRva2VuSW5kZXggPT09IGkgKyAxKSB7XG4gICAgICBzY29wZVN0YWNrLnB1c2goc2NvcGVzW3Njb3BlSW5kZXhdKTtcbiAgICAgIHNjb3BlSW5kZXgtLTtcbiAgICB9XG4gICAgLy8gUHJvY2VzcyBzY29wZXMgYWZ0ZXIgdGhlIGxhc3QgaXRlcmF0aW9uIHNvIHdlIGNhbiBtYWtlIHN1cmUgd2UgcG9wIGFsbCBvZiB0aGVtLlxuICAgIGlmIChpIDwgMCkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgY29uc3QgdG9rZW4gPSB0b2tlbnMudG9rZW5zW2ldO1xuICAgIGNvbnN0IG5hbWUgPSB0b2tlbnMuaWRlbnRpZmllck5hbWVGb3JUb2tlbih0b2tlbik7XG4gICAgaWYgKHNjb3BlU3RhY2subGVuZ3RoID4gMSAmJiAhdG9rZW4uaXNUeXBlICYmIHRva2VuLnR5cGUgPT09IF90eXBlcy5Ub2tlblR5cGUubmFtZSAmJiBnbG9iYWxOYW1lcy5oYXMobmFtZSkpIHtcbiAgICAgIGlmIChfdG9rZW5pemVyLmlzQmxvY2tTY29wZWREZWNsYXJhdGlvbi5jYWxsKHZvaWQgMCwgdG9rZW4pKSB7XG4gICAgICAgIG1hcmtTaGFkb3dlZEZvclNjb3BlKHNjb3BlU3RhY2tbc2NvcGVTdGFjay5sZW5ndGggLSAxXSwgdG9rZW5zLCBuYW1lKTtcbiAgICAgIH0gZWxzZSBpZiAoX3Rva2VuaXplci5pc0Z1bmN0aW9uU2NvcGVkRGVjbGFyYXRpb24uY2FsbCh2b2lkIDAsIHRva2VuKSkge1xuICAgICAgICBsZXQgc3RhY2tJbmRleCA9IHNjb3BlU3RhY2subGVuZ3RoIC0gMTtcbiAgICAgICAgd2hpbGUgKHN0YWNrSW5kZXggPiAwICYmICFzY29wZVN0YWNrW3N0YWNrSW5kZXhdLmlzRnVuY3Rpb25TY29wZSkge1xuICAgICAgICAgIHN0YWNrSW5kZXgtLTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RhY2tJbmRleCA8IDApIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJEaWQgbm90IGZpbmQgcGFyZW50IGZ1bmN0aW9uIHNjb3BlLlwiKTtcbiAgICAgICAgfVxuICAgICAgICBtYXJrU2hhZG93ZWRGb3JTY29wZShzY29wZVN0YWNrW3N0YWNrSW5kZXhdLCB0b2tlbnMsIG5hbWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBpZiAoc2NvcGVTdGFjay5sZW5ndGggPiAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiRXhwZWN0ZWQgZW1wdHkgc2NvcGUgc3RhY2sgYWZ0ZXIgcHJvY2Vzc2luZyBmaWxlLlwiKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBtYXJrU2hhZG93ZWRGb3JTY29wZShzY29wZSwgdG9rZW5zLCBuYW1lKSB7XG4gIGZvciAobGV0IGkgPSBzY29wZS5zdGFydFRva2VuSW5kZXg7IGkgPCBzY29wZS5lbmRUb2tlbkluZGV4OyBpKyspIHtcbiAgICBjb25zdCB0b2tlbiA9IHRva2Vucy50b2tlbnNbaV07XG4gICAgaWYgKFxuICAgICAgKHRva2VuLnR5cGUgPT09IF90eXBlcy5Ub2tlblR5cGUubmFtZSB8fCB0b2tlbi50eXBlID09PSBfdHlwZXMuVG9rZW5UeXBlLmpzeE5hbWUpICYmXG4gICAgICB0b2tlbnMuaWRlbnRpZmllck5hbWVGb3JUb2tlbih0b2tlbikgPT09IG5hbWVcbiAgICApIHtcbiAgICAgIHRva2VuLnNoYWRvd3NHbG9iYWwgPSB0cnVlO1xuICAgIH1cbiAgfVxufVxuIiwgIlwidXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge3ZhbHVlOiB0cnVlfSk7XG52YXIgX3R5cGVzID0gcmVxdWlyZSgnLi4vcGFyc2VyL3Rva2VuaXplci90eXBlcycpO1xuXG4vKipcbiAqIEdldCBhbGwgaWRlbnRpZmllciBuYW1lcyBpbiB0aGUgY29kZSwgaW4gb3JkZXIsIGluY2x1ZGluZyBkdXBsaWNhdGVzLlxuICovXG4gZnVuY3Rpb24gZ2V0SWRlbnRpZmllck5hbWVzKGNvZGUsIHRva2Vucykge1xuICBjb25zdCBuYW1lcyA9IFtdO1xuICBmb3IgKGNvbnN0IHRva2VuIG9mIHRva2Vucykge1xuICAgIGlmICh0b2tlbi50eXBlID09PSBfdHlwZXMuVG9rZW5UeXBlLm5hbWUpIHtcbiAgICAgIG5hbWVzLnB1c2goY29kZS5zbGljZSh0b2tlbi5zdGFydCwgdG9rZW4uZW5kKSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBuYW1lcztcbn0gZXhwb3J0cy5kZWZhdWx0ID0gZ2V0SWRlbnRpZmllck5hbWVzO1xuIiwgIlwidXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge3ZhbHVlOiB0cnVlfSk7IGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG52YXIgX2dldElkZW50aWZpZXJOYW1lcyA9IHJlcXVpcmUoJy4vdXRpbC9nZXRJZGVudGlmaWVyTmFtZXMnKTsgdmFyIF9nZXRJZGVudGlmaWVyTmFtZXMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZ2V0SWRlbnRpZmllck5hbWVzKTtcblxuIGNsYXNzIE5hbWVNYW5hZ2VyIHtcbiAgICBfX2luaXQoKSB7dGhpcy51c2VkTmFtZXMgPSBuZXcgU2V0KCl9XG5cbiAgY29uc3RydWN0b3IoY29kZSwgdG9rZW5zKSB7O05hbWVNYW5hZ2VyLnByb3RvdHlwZS5fX2luaXQuY2FsbCh0aGlzKTtcbiAgICB0aGlzLnVzZWROYW1lcyA9IG5ldyBTZXQoX2dldElkZW50aWZpZXJOYW1lczIuZGVmYXVsdC5jYWxsKHZvaWQgMCwgY29kZSwgdG9rZW5zKSk7XG4gIH1cblxuICBjbGFpbUZyZWVOYW1lKG5hbWUpIHtcbiAgICBjb25zdCBuZXdOYW1lID0gdGhpcy5maW5kRnJlZU5hbWUobmFtZSk7XG4gICAgdGhpcy51c2VkTmFtZXMuYWRkKG5ld05hbWUpO1xuICAgIHJldHVybiBuZXdOYW1lO1xuICB9XG5cbiAgZmluZEZyZWVOYW1lKG5hbWUpIHtcbiAgICBpZiAoIXRoaXMudXNlZE5hbWVzLmhhcyhuYW1lKSkge1xuICAgICAgcmV0dXJuIG5hbWU7XG4gICAgfVxuICAgIGxldCBzdWZmaXhOdW0gPSAyO1xuICAgIHdoaWxlICh0aGlzLnVzZWROYW1lcy5oYXMobmFtZSArIFN0cmluZyhzdWZmaXhOdW0pKSkge1xuICAgICAgc3VmZml4TnVtKys7XG4gICAgfVxuICAgIHJldHVybiBuYW1lICsgU3RyaW5nKHN1ZmZpeE51bSk7XG4gIH1cbn0gZXhwb3J0cy5kZWZhdWx0ID0gTmFtZU1hbmFnZXI7XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19leHRlbmRzID0gKHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XG4gICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XG4gICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTtcbiAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgfTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XG4gICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcbiAgICB9O1xufSkoKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuRGV0YWlsQ29udGV4dCA9IGV4cG9ydHMuTm9vcENvbnRleHQgPSBleHBvcnRzLlZFcnJvciA9IHZvaWQgMDtcbi8qKlxuICogRXJyb3IgdGhyb3duIGJ5IHZhbGlkYXRpb24uIEJlc2lkZXMgYW4gaW5mb3JtYXRpdmUgbWVzc2FnZSwgaXQgaW5jbHVkZXMgdGhlIHBhdGggdG8gdGhlXG4gKiBwcm9wZXJ0eSB3aGljaCB0cmlnZ2VyZWQgdGhlIGZhaWx1cmUuXG4gKi9cbnZhciBWRXJyb3IgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKFZFcnJvciwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBWRXJyb3IocGF0aCwgbWVzc2FnZSkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBtZXNzYWdlKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy5wYXRoID0gcGF0aDtcbiAgICAgICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC93aWtpL0JyZWFraW5nLUNoYW5nZXMjZXh0ZW5kaW5nLWJ1aWx0LWlucy1saWtlLWVycm9yLWFycmF5LWFuZC1tYXAtbWF5LW5vLWxvbmdlci13b3JrIGZvciBpbmZvIGFib3V0IHRoaXMgd29ya2Fyb3VuZC5cbiAgICAgICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKF90aGlzLCBWRXJyb3IucHJvdG90eXBlKTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICByZXR1cm4gVkVycm9yO1xufShFcnJvcikpO1xuZXhwb3J0cy5WRXJyb3IgPSBWRXJyb3I7XG4vKipcbiAqIEZhc3QgaW1wbGVtZW50YXRpb24gb2YgSUNvbnRleHQgdXNlZCBmb3IgZmlyc3QtcGFzcyB2YWxpZGF0aW9uLiBJZiB0aGF0IGZhaWxzLCB3ZSBjYW4gdmFsaWRhdGVcbiAqIHVzaW5nIERldGFpbENvbnRleHQgdG8gY29sbGVjdCBlcnJvciBtZXNzYWdlcy4gVGhhdCdzIGZhc3RlciBmb3IgdGhlIGNvbW1vbiBjYXNlIHdoZW4gbWVzc2FnZXNcbiAqIG5vcm1hbGx5IHBhc3MgdmFsaWRhdGlvbi5cbiAqL1xudmFyIE5vb3BDb250ZXh0ID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIE5vb3BDb250ZXh0KCkge1xuICAgIH1cbiAgICBOb29wQ29udGV4dC5wcm90b3R5cGUuZmFpbCA9IGZ1bmN0aW9uIChyZWxQYXRoLCBtZXNzYWdlLCBzY29yZSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfTtcbiAgICBOb29wQ29udGV4dC5wcm90b3R5cGUudW5pb25SZXNvbHZlciA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH07XG4gICAgTm9vcENvbnRleHQucHJvdG90eXBlLmNyZWF0ZUNvbnRleHQgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9O1xuICAgIE5vb3BDb250ZXh0LnByb3RvdHlwZS5yZXNvbHZlVW5pb24gPSBmdW5jdGlvbiAodXIpIHsgfTtcbiAgICByZXR1cm4gTm9vcENvbnRleHQ7XG59KCkpO1xuZXhwb3J0cy5Ob29wQ29udGV4dCA9IE5vb3BDb250ZXh0O1xuLyoqXG4gKiBDb21wbGV0ZSBpbXBsZW1lbnRhdGlvbiBvZiBJQ29udGV4dCB0aGF0IGNvbGxlY3RzIG1lYW5pbmdmdWxsIGVycm9ycy5cbiAqL1xudmFyIERldGFpbENvbnRleHQgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gRGV0YWlsQ29udGV4dCgpIHtcbiAgICAgICAgLy8gU3RhY2sgb2YgcHJvcGVydHkgbmFtZXMgYW5kIGFzc29jaWF0ZWQgbWVzc2FnZXMgZm9yIHJlcG9ydGluZyBoZWxwZnVsIGVycm9yIG1lc3NhZ2VzLlxuICAgICAgICB0aGlzLl9wcm9wTmFtZXMgPSBbXCJcIl07XG4gICAgICAgIHRoaXMuX21lc3NhZ2VzID0gW251bGxdO1xuICAgICAgICAvLyBTY29yZSBpcyB1c2VkIHRvIGNob29zZSB0aGUgYmVzdCB1bmlvbiBtZW1iZXIgd2hvc2UgRGV0YWlsQ29udGV4dCB0byB1c2UgZm9yIHJlcG9ydGluZy5cbiAgICAgICAgLy8gSGlnaGVyIHNjb3JlIG1lYW5zIGJldHRlciBtYXRjaCAob3IgcmF0aGVyIGxlc3Mgc2V2ZXJlIG1pc21hdGNoKS5cbiAgICAgICAgdGhpcy5fc2NvcmUgPSAwO1xuICAgIH1cbiAgICBEZXRhaWxDb250ZXh0LnByb3RvdHlwZS5mYWlsID0gZnVuY3Rpb24gKHJlbFBhdGgsIG1lc3NhZ2UsIHNjb3JlKSB7XG4gICAgICAgIHRoaXMuX3Byb3BOYW1lcy5wdXNoKHJlbFBhdGgpO1xuICAgICAgICB0aGlzLl9tZXNzYWdlcy5wdXNoKG1lc3NhZ2UpO1xuICAgICAgICB0aGlzLl9zY29yZSArPSBzY29yZTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH07XG4gICAgRGV0YWlsQ29udGV4dC5wcm90b3R5cGUudW5pb25SZXNvbHZlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBEZXRhaWxVbmlvblJlc29sdmVyKCk7XG4gICAgfTtcbiAgICBEZXRhaWxDb250ZXh0LnByb3RvdHlwZS5yZXNvbHZlVW5pb24gPSBmdW5jdGlvbiAodW5pb25SZXNvbHZlcikge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICB2YXIgdSA9IHVuaW9uUmVzb2x2ZXI7XG4gICAgICAgIHZhciBiZXN0ID0gbnVsbDtcbiAgICAgICAgZm9yICh2YXIgX2kgPSAwLCBfYyA9IHUuY29udGV4dHM7IF9pIDwgX2MubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICB2YXIgY3R4ID0gX2NbX2ldO1xuICAgICAgICAgICAgaWYgKCFiZXN0IHx8IGN0eC5fc2NvcmUgPj0gYmVzdC5fc2NvcmUpIHtcbiAgICAgICAgICAgICAgICBiZXN0ID0gY3R4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChiZXN0ICYmIGJlc3QuX3Njb3JlID4gMCkge1xuICAgICAgICAgICAgKF9hID0gdGhpcy5fcHJvcE5hbWVzKS5wdXNoLmFwcGx5KF9hLCBiZXN0Ll9wcm9wTmFtZXMpO1xuICAgICAgICAgICAgKF9iID0gdGhpcy5fbWVzc2FnZXMpLnB1c2guYXBwbHkoX2IsIGJlc3QuX21lc3NhZ2VzKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgRGV0YWlsQ29udGV4dC5wcm90b3R5cGUuZ2V0RXJyb3IgPSBmdW5jdGlvbiAocGF0aCkge1xuICAgICAgICB2YXIgbXNnUGFydHMgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgaSA9IHRoaXMuX3Byb3BOYW1lcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgdmFyIHAgPSB0aGlzLl9wcm9wTmFtZXNbaV07XG4gICAgICAgICAgICBwYXRoICs9ICh0eXBlb2YgcCA9PT0gXCJudW1iZXJcIikgPyBcIltcIiArIHAgKyBcIl1cIiA6IChwID8gXCIuXCIgKyBwIDogXCJcIik7XG4gICAgICAgICAgICB2YXIgbSA9IHRoaXMuX21lc3NhZ2VzW2ldO1xuICAgICAgICAgICAgaWYgKG0pIHtcbiAgICAgICAgICAgICAgICBtc2dQYXJ0cy5wdXNoKHBhdGggKyBcIiBcIiArIG0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgVkVycm9yKHBhdGgsIG1zZ1BhcnRzLmpvaW4oXCI7IFwiKSk7XG4gICAgfTtcbiAgICBEZXRhaWxDb250ZXh0LnByb3RvdHlwZS5nZXRFcnJvckRldGFpbCA9IGZ1bmN0aW9uIChwYXRoKSB7XG4gICAgICAgIHZhciBkZXRhaWxzID0gW107XG4gICAgICAgIGZvciAodmFyIGkgPSB0aGlzLl9wcm9wTmFtZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgIHZhciBwID0gdGhpcy5fcHJvcE5hbWVzW2ldO1xuICAgICAgICAgICAgcGF0aCArPSAodHlwZW9mIHAgPT09IFwibnVtYmVyXCIpID8gXCJbXCIgKyBwICsgXCJdXCIgOiAocCA/IFwiLlwiICsgcCA6IFwiXCIpO1xuICAgICAgICAgICAgdmFyIG1lc3NhZ2UgPSB0aGlzLl9tZXNzYWdlc1tpXTtcbiAgICAgICAgICAgIGlmIChtZXNzYWdlKSB7XG4gICAgICAgICAgICAgICAgZGV0YWlscy5wdXNoKHsgcGF0aDogcGF0aCwgbWVzc2FnZTogbWVzc2FnZSB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB2YXIgZGV0YWlsID0gbnVsbDtcbiAgICAgICAgZm9yICh2YXIgaSA9IGRldGFpbHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgIGlmIChkZXRhaWwpIHtcbiAgICAgICAgICAgICAgICBkZXRhaWxzW2ldLm5lc3RlZCA9IFtkZXRhaWxdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGV0YWlsID0gZGV0YWlsc1tpXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGV0YWlsO1xuICAgIH07XG4gICAgcmV0dXJuIERldGFpbENvbnRleHQ7XG59KCkpO1xuZXhwb3J0cy5EZXRhaWxDb250ZXh0ID0gRGV0YWlsQ29udGV4dDtcbnZhciBEZXRhaWxVbmlvblJlc29sdmVyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIERldGFpbFVuaW9uUmVzb2x2ZXIoKSB7XG4gICAgICAgIHRoaXMuY29udGV4dHMgPSBbXTtcbiAgICB9XG4gICAgRGV0YWlsVW5pb25SZXNvbHZlci5wcm90b3R5cGUuY3JlYXRlQ29udGV4dCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGN0eCA9IG5ldyBEZXRhaWxDb250ZXh0KCk7XG4gICAgICAgIHRoaXMuY29udGV4dHMucHVzaChjdHgpO1xuICAgICAgICByZXR1cm4gY3R4O1xuICAgIH07XG4gICAgcmV0dXJuIERldGFpbFVuaW9uUmVzb2x2ZXI7XG59KCkpO1xuIiwgIlwidXNlIHN0cmljdFwiO1xuLyoqXG4gKiBUaGlzIG1vZHVsZSBkZWZpbmVzIG5vZGVzIHVzZWQgdG8gZGVmaW5lIHR5cGVzIGFuZCB2YWxpZGF0aW9ucyBmb3Igb2JqZWN0cyBhbmQgaW50ZXJmYWNlcy5cbiAqL1xuLy8gdHNsaW50OmRpc2FibGU6bm8tc2hhZG93ZWQtdmFyaWFibGUgcHJlZmVyLWZvci1vZlxudmFyIF9fZXh0ZW5kcyA9ICh0aGlzICYmIHRoaXMuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkge1xuICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxuICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxuICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07XG4gICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgIH07XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxuICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XG4gICAgfTtcbn0pKCk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmJhc2ljVHlwZXMgPSBleHBvcnRzLkJhc2ljVHlwZSA9IGV4cG9ydHMuVFBhcmFtTGlzdCA9IGV4cG9ydHMuVFBhcmFtID0gZXhwb3J0cy5wYXJhbSA9IGV4cG9ydHMuVEZ1bmMgPSBleHBvcnRzLmZ1bmMgPSBleHBvcnRzLlRQcm9wID0gZXhwb3J0cy5UT3B0aW9uYWwgPSBleHBvcnRzLm9wdCA9IGV4cG9ydHMuVElmYWNlID0gZXhwb3J0cy5pZmFjZSA9IGV4cG9ydHMuVEVudW1MaXRlcmFsID0gZXhwb3J0cy5lbnVtbGl0ID0gZXhwb3J0cy5URW51bVR5cGUgPSBleHBvcnRzLmVudW10eXBlID0gZXhwb3J0cy5USW50ZXJzZWN0aW9uID0gZXhwb3J0cy5pbnRlcnNlY3Rpb24gPSBleHBvcnRzLlRVbmlvbiA9IGV4cG9ydHMudW5pb24gPSBleHBvcnRzLlRUdXBsZSA9IGV4cG9ydHMudHVwbGUgPSBleHBvcnRzLlRBcnJheSA9IGV4cG9ydHMuYXJyYXkgPSBleHBvcnRzLlRMaXRlcmFsID0gZXhwb3J0cy5saXQgPSBleHBvcnRzLlROYW1lID0gZXhwb3J0cy5uYW1lID0gZXhwb3J0cy5UVHlwZSA9IHZvaWQgMDtcbnZhciB1dGlsXzEgPSByZXF1aXJlKFwiLi91dGlsXCIpO1xuLyoqIE5vZGUgdGhhdCByZXByZXNlbnRzIGEgdHlwZS4gKi9cbnZhciBUVHlwZSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBUVHlwZSgpIHtcbiAgICB9XG4gICAgcmV0dXJuIFRUeXBlO1xufSgpKTtcbmV4cG9ydHMuVFR5cGUgPSBUVHlwZTtcbi8qKiBQYXJzZXMgYSB0eXBlIHNwZWMgaW50byBhIFRUeXBlIG5vZGUuICovXG5mdW5jdGlvbiBwYXJzZVNwZWModHlwZVNwZWMpIHtcbiAgICByZXR1cm4gdHlwZW9mIHR5cGVTcGVjID09PSBcInN0cmluZ1wiID8gbmFtZSh0eXBlU3BlYykgOiB0eXBlU3BlYztcbn1cbmZ1bmN0aW9uIGdldE5hbWVkVHlwZShzdWl0ZSwgbmFtZSkge1xuICAgIHZhciB0dHlwZSA9IHN1aXRlW25hbWVdO1xuICAgIGlmICghdHR5cGUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5rbm93biB0eXBlIFwiICsgbmFtZSk7XG4gICAgfVxuICAgIHJldHVybiB0dHlwZTtcbn1cbi8qKlxuICogRGVmaW5lcyBhIHR5cGUgbmFtZSwgZWl0aGVyIGJ1aWx0LWluLCBvciBkZWZpbmVkIGluIHRoaXMgc3VpdGUuIEl0IGNhbiB0eXBpY2FsbHkgYmUgaW5jbHVkZWQgaW5cbiAqIHRoZSBzcGVjcyBhcyBqdXN0IGEgcGxhaW4gc3RyaW5nLlxuICovXG5mdW5jdGlvbiBuYW1lKHZhbHVlKSB7IHJldHVybiBuZXcgVE5hbWUodmFsdWUpOyB9XG5leHBvcnRzLm5hbWUgPSBuYW1lO1xudmFyIFROYW1lID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhUTmFtZSwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBUTmFtZShuYW1lKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLm5hbWUgPSBuYW1lO1xuICAgICAgICBfdGhpcy5fZmFpbE1zZyA9IFwiaXMgbm90IGEgXCIgKyBuYW1lO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIFROYW1lLnByb3RvdHlwZS5nZXRDaGVja2VyID0gZnVuY3Rpb24gKHN1aXRlLCBzdHJpY3QsIGFsbG93ZWRQcm9wcykge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgdHR5cGUgPSBnZXROYW1lZFR5cGUoc3VpdGUsIHRoaXMubmFtZSk7XG4gICAgICAgIHZhciBjaGVja2VyID0gdHR5cGUuZ2V0Q2hlY2tlcihzdWl0ZSwgc3RyaWN0LCBhbGxvd2VkUHJvcHMpO1xuICAgICAgICBpZiAodHR5cGUgaW5zdGFuY2VvZiBCYXNpY1R5cGUgfHwgdHR5cGUgaW5zdGFuY2VvZiBUTmFtZSkge1xuICAgICAgICAgICAgcmV0dXJuIGNoZWNrZXI7XG4gICAgICAgIH1cbiAgICAgICAgLy8gRm9yIGNvbXBsZXggdHlwZXMsIGFkZCBhbiBhZGRpdGlvbmFsIFwiaXMgbm90IGEgPFR5cGU+XCIgbWVzc2FnZSBvbiBmYWlsdXJlLlxuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHZhbHVlLCBjdHgpIHsgcmV0dXJuIGNoZWNrZXIodmFsdWUsIGN0eCkgPyB0cnVlIDogY3R4LmZhaWwobnVsbCwgX3RoaXMuX2ZhaWxNc2csIDApOyB9O1xuICAgIH07XG4gICAgcmV0dXJuIFROYW1lO1xufShUVHlwZSkpO1xuZXhwb3J0cy5UTmFtZSA9IFROYW1lO1xuLyoqXG4gKiBEZWZpbmVzIGEgbGl0ZXJhbCB2YWx1ZSwgZS5nLiBsaXQoJ2hlbGxvJykgb3IgbGl0KDEyMykuXG4gKi9cbmZ1bmN0aW9uIGxpdCh2YWx1ZSkgeyByZXR1cm4gbmV3IFRMaXRlcmFsKHZhbHVlKTsgfVxuZXhwb3J0cy5saXQgPSBsaXQ7XG52YXIgVExpdGVyYWwgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKFRMaXRlcmFsLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIFRMaXRlcmFsKHZhbHVlKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIF90aGlzLm5hbWUgPSBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XG4gICAgICAgIF90aGlzLl9mYWlsTXNnID0gXCJpcyBub3QgXCIgKyBfdGhpcy5uYW1lO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIFRMaXRlcmFsLnByb3RvdHlwZS5nZXRDaGVja2VyID0gZnVuY3Rpb24gKHN1aXRlLCBzdHJpY3QpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICh2YWx1ZSwgY3R4KSB7IHJldHVybiAodmFsdWUgPT09IF90aGlzLnZhbHVlKSA/IHRydWUgOiBjdHguZmFpbChudWxsLCBfdGhpcy5fZmFpbE1zZywgLTEpOyB9O1xuICAgIH07XG4gICAgcmV0dXJuIFRMaXRlcmFsO1xufShUVHlwZSkpO1xuZXhwb3J0cy5UTGl0ZXJhbCA9IFRMaXRlcmFsO1xuLyoqXG4gKiBEZWZpbmVzIGFuIGFycmF5IHR5cGUsIGUuZy4gYXJyYXkoJ251bWJlcicpLlxuICovXG5mdW5jdGlvbiBhcnJheSh0eXBlU3BlYykgeyByZXR1cm4gbmV3IFRBcnJheShwYXJzZVNwZWModHlwZVNwZWMpKTsgfVxuZXhwb3J0cy5hcnJheSA9IGFycmF5O1xudmFyIFRBcnJheSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoVEFycmF5LCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIFRBcnJheSh0dHlwZSkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy50dHlwZSA9IHR0eXBlO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIFRBcnJheS5wcm90b3R5cGUuZ2V0Q2hlY2tlciA9IGZ1bmN0aW9uIChzdWl0ZSwgc3RyaWN0KSB7XG4gICAgICAgIHZhciBpdGVtQ2hlY2tlciA9IHRoaXMudHR5cGUuZ2V0Q2hlY2tlcihzdWl0ZSwgc3RyaWN0KTtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICh2YWx1ZSwgY3R4KSB7XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGN0eC5mYWlsKG51bGwsIFwiaXMgbm90IGFuIGFycmF5XCIsIDApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2YWx1ZS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIHZhciBvayA9IGl0ZW1DaGVja2VyKHZhbHVlW2ldLCBjdHgpO1xuICAgICAgICAgICAgICAgIGlmICghb2spIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGN0eC5mYWlsKGksIG51bGwsIDEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9O1xuICAgIH07XG4gICAgcmV0dXJuIFRBcnJheTtcbn0oVFR5cGUpKTtcbmV4cG9ydHMuVEFycmF5ID0gVEFycmF5O1xuLyoqXG4gKiBEZWZpbmVzIGEgdHVwbGUgdHlwZSwgZS5nLiB0dXBsZSgnc3RyaW5nJywgJ251bWJlcicpLlxuICovXG5mdW5jdGlvbiB0dXBsZSgpIHtcbiAgICB2YXIgdHlwZVNwZWMgPSBbXTtcbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICB0eXBlU3BlY1tfaV0gPSBhcmd1bWVudHNbX2ldO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IFRUdXBsZSh0eXBlU3BlYy5tYXAoZnVuY3Rpb24gKHQpIHsgcmV0dXJuIHBhcnNlU3BlYyh0KTsgfSkpO1xufVxuZXhwb3J0cy50dXBsZSA9IHR1cGxlO1xudmFyIFRUdXBsZSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoVFR1cGxlLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIFRUdXBsZSh0dHlwZXMpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMudHR5cGVzID0gdHR5cGVzO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIFRUdXBsZS5wcm90b3R5cGUuZ2V0Q2hlY2tlciA9IGZ1bmN0aW9uIChzdWl0ZSwgc3RyaWN0KSB7XG4gICAgICAgIHZhciBpdGVtQ2hlY2tlcnMgPSB0aGlzLnR0eXBlcy5tYXAoZnVuY3Rpb24gKHQpIHsgcmV0dXJuIHQuZ2V0Q2hlY2tlcihzdWl0ZSwgc3RyaWN0KTsgfSk7XG4gICAgICAgIHZhciBjaGVja2VyID0gZnVuY3Rpb24gKHZhbHVlLCBjdHgpIHtcbiAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY3R4LmZhaWwobnVsbCwgXCJpcyBub3QgYW4gYXJyYXlcIiwgMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGl0ZW1DaGVja2Vycy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIHZhciBvayA9IGl0ZW1DaGVja2Vyc1tpXSh2YWx1ZVtpXSwgY3R4KTtcbiAgICAgICAgICAgICAgICBpZiAoIW9rKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjdHguZmFpbChpLCBudWxsLCAxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKCFzdHJpY3QpIHtcbiAgICAgICAgICAgIHJldHVybiBjaGVja2VyO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAodmFsdWUsIGN0eCkge1xuICAgICAgICAgICAgaWYgKCFjaGVja2VyKHZhbHVlLCBjdHgpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmxlbmd0aCA8PSBpdGVtQ2hlY2tlcnMubGVuZ3RoID8gdHJ1ZSA6XG4gICAgICAgICAgICAgICAgY3R4LmZhaWwoaXRlbUNoZWNrZXJzLmxlbmd0aCwgXCJpcyBleHRyYW5lb3VzXCIsIDIpO1xuICAgICAgICB9O1xuICAgIH07XG4gICAgcmV0dXJuIFRUdXBsZTtcbn0oVFR5cGUpKTtcbmV4cG9ydHMuVFR1cGxlID0gVFR1cGxlO1xuLyoqXG4gKiBEZWZpbmVzIGEgdW5pb24gdHlwZSwgZS5nLiB1bmlvbignbnVtYmVyJywgJ251bGwnKS5cbiAqL1xuZnVuY3Rpb24gdW5pb24oKSB7XG4gICAgdmFyIHR5cGVTcGVjID0gW107XG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgdHlwZVNwZWNbX2ldID0gYXJndW1lbnRzW19pXTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBUVW5pb24odHlwZVNwZWMubWFwKGZ1bmN0aW9uICh0KSB7IHJldHVybiBwYXJzZVNwZWModCk7IH0pKTtcbn1cbmV4cG9ydHMudW5pb24gPSB1bmlvbjtcbnZhciBUVW5pb24gPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKFRVbmlvbiwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBUVW5pb24odHR5cGVzKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLnR0eXBlcyA9IHR0eXBlcztcbiAgICAgICAgdmFyIG5hbWVzID0gdHR5cGVzLm1hcChmdW5jdGlvbiAodCkgeyByZXR1cm4gdCBpbnN0YW5jZW9mIFROYW1lIHx8IHQgaW5zdGFuY2VvZiBUTGl0ZXJhbCA/IHQubmFtZSA6IG51bGw7IH0pXG4gICAgICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uIChuKSB7IHJldHVybiBuOyB9KTtcbiAgICAgICAgdmFyIG90aGVyVHlwZXMgPSB0dHlwZXMubGVuZ3RoIC0gbmFtZXMubGVuZ3RoO1xuICAgICAgICBpZiAobmFtZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICBpZiAob3RoZXJUeXBlcyA+IDApIHtcbiAgICAgICAgICAgICAgICBuYW1lcy5wdXNoKG90aGVyVHlwZXMgKyBcIiBtb3JlXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgX3RoaXMuX2ZhaWxNc2cgPSBcImlzIG5vbmUgb2YgXCIgKyBuYW1lcy5qb2luKFwiLCBcIik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBfdGhpcy5fZmFpbE1zZyA9IFwiaXMgbm9uZSBvZiBcIiArIG90aGVyVHlwZXMgKyBcIiB0eXBlc1wiO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgVFVuaW9uLnByb3RvdHlwZS5nZXRDaGVja2VyID0gZnVuY3Rpb24gKHN1aXRlLCBzdHJpY3QpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIGl0ZW1DaGVja2VycyA9IHRoaXMudHR5cGVzLm1hcChmdW5jdGlvbiAodCkgeyByZXR1cm4gdC5nZXRDaGVja2VyKHN1aXRlLCBzdHJpY3QpOyB9KTtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICh2YWx1ZSwgY3R4KSB7XG4gICAgICAgICAgICB2YXIgdXIgPSBjdHgudW5pb25SZXNvbHZlcigpO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpdGVtQ2hlY2tlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgb2sgPSBpdGVtQ2hlY2tlcnNbaV0odmFsdWUsIHVyLmNyZWF0ZUNvbnRleHQoKSk7XG4gICAgICAgICAgICAgICAgaWYgKG9rKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGN0eC5yZXNvbHZlVW5pb24odXIpO1xuICAgICAgICAgICAgcmV0dXJuIGN0eC5mYWlsKG51bGwsIF90aGlzLl9mYWlsTXNnLCAwKTtcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIHJldHVybiBUVW5pb247XG59KFRUeXBlKSk7XG5leHBvcnRzLlRVbmlvbiA9IFRVbmlvbjtcbi8qKlxuICogRGVmaW5lcyBhbiBpbnRlcnNlY3Rpb24gdHlwZSwgZS5nLiBpbnRlcnNlY3Rpb24oJ251bWJlcicsICdudWxsJykuXG4gKi9cbmZ1bmN0aW9uIGludGVyc2VjdGlvbigpIHtcbiAgICB2YXIgdHlwZVNwZWMgPSBbXTtcbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICB0eXBlU3BlY1tfaV0gPSBhcmd1bWVudHNbX2ldO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IFRJbnRlcnNlY3Rpb24odHlwZVNwZWMubWFwKGZ1bmN0aW9uICh0KSB7IHJldHVybiBwYXJzZVNwZWModCk7IH0pKTtcbn1cbmV4cG9ydHMuaW50ZXJzZWN0aW9uID0gaW50ZXJzZWN0aW9uO1xudmFyIFRJbnRlcnNlY3Rpb24gPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKFRJbnRlcnNlY3Rpb24sIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gVEludGVyc2VjdGlvbih0dHlwZXMpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMudHR5cGVzID0gdHR5cGVzO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIFRJbnRlcnNlY3Rpb24ucHJvdG90eXBlLmdldENoZWNrZXIgPSBmdW5jdGlvbiAoc3VpdGUsIHN0cmljdCkge1xuICAgICAgICB2YXIgYWxsb3dlZFByb3BzID0gbmV3IFNldCgpO1xuICAgICAgICB2YXIgaXRlbUNoZWNrZXJzID0gdGhpcy50dHlwZXMubWFwKGZ1bmN0aW9uICh0KSB7IHJldHVybiB0LmdldENoZWNrZXIoc3VpdGUsIHN0cmljdCwgYWxsb3dlZFByb3BzKTsgfSk7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAodmFsdWUsIGN0eCkge1xuICAgICAgICAgICAgdmFyIG9rID0gaXRlbUNoZWNrZXJzLmV2ZXJ5KGZ1bmN0aW9uIChjaGVja2VyKSB7IHJldHVybiBjaGVja2VyKHZhbHVlLCBjdHgpOyB9KTtcbiAgICAgICAgICAgIGlmIChvaykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGN0eC5mYWlsKG51bGwsIG51bGwsIDApO1xuICAgICAgICB9O1xuICAgIH07XG4gICAgcmV0dXJuIFRJbnRlcnNlY3Rpb247XG59KFRUeXBlKSk7XG5leHBvcnRzLlRJbnRlcnNlY3Rpb24gPSBUSW50ZXJzZWN0aW9uO1xuLyoqXG4gKiBEZWZpbmVzIGFuIGVudW0gdHlwZSwgZS5nLiBlbnVtKHsnQSc6IDEsICdCJzogMn0pLlxuICovXG5mdW5jdGlvbiBlbnVtdHlwZSh2YWx1ZXMpIHtcbiAgICByZXR1cm4gbmV3IFRFbnVtVHlwZSh2YWx1ZXMpO1xufVxuZXhwb3J0cy5lbnVtdHlwZSA9IGVudW10eXBlO1xudmFyIFRFbnVtVHlwZSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoVEVudW1UeXBlLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIFRFbnVtVHlwZShtZW1iZXJzKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLm1lbWJlcnMgPSBtZW1iZXJzO1xuICAgICAgICBfdGhpcy52YWxpZFZhbHVlcyA9IG5ldyBTZXQoKTtcbiAgICAgICAgX3RoaXMuX2ZhaWxNc2cgPSBcImlzIG5vdCBhIHZhbGlkIGVudW0gdmFsdWVcIjtcbiAgICAgICAgX3RoaXMudmFsaWRWYWx1ZXMgPSBuZXcgU2V0KE9iamVjdC5rZXlzKG1lbWJlcnMpLm1hcChmdW5jdGlvbiAobmFtZSkgeyByZXR1cm4gbWVtYmVyc1tuYW1lXTsgfSkpO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIFRFbnVtVHlwZS5wcm90b3R5cGUuZ2V0Q2hlY2tlciA9IGZ1bmN0aW9uIChzdWl0ZSwgc3RyaWN0KSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAodmFsdWUsIGN0eCkge1xuICAgICAgICAgICAgcmV0dXJuIChfdGhpcy52YWxpZFZhbHVlcy5oYXModmFsdWUpID8gdHJ1ZSA6IGN0eC5mYWlsKG51bGwsIF90aGlzLl9mYWlsTXNnLCAwKSk7XG4gICAgICAgIH07XG4gICAgfTtcbiAgICByZXR1cm4gVEVudW1UeXBlO1xufShUVHlwZSkpO1xuZXhwb3J0cy5URW51bVR5cGUgPSBURW51bVR5cGU7XG4vKipcbiAqIERlZmluZXMgYSBsaXRlcmFsIGVudW0gdmFsdWUsIHN1Y2ggYXMgRGlyZWN0aW9uLlVwLCBzcGVjaWZpZWQgYXMgZW51bWxpdChcIkRpcmVjdGlvblwiLCBcIlVwXCIpLlxuICovXG5mdW5jdGlvbiBlbnVtbGl0KG5hbWUsIHByb3ApIHtcbiAgICByZXR1cm4gbmV3IFRFbnVtTGl0ZXJhbChuYW1lLCBwcm9wKTtcbn1cbmV4cG9ydHMuZW51bWxpdCA9IGVudW1saXQ7XG52YXIgVEVudW1MaXRlcmFsID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhURW51bUxpdGVyYWwsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gVEVudW1MaXRlcmFsKGVudW1OYW1lLCBwcm9wKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLmVudW1OYW1lID0gZW51bU5hbWU7XG4gICAgICAgIF90aGlzLnByb3AgPSBwcm9wO1xuICAgICAgICBfdGhpcy5fZmFpbE1zZyA9IFwiaXMgbm90IFwiICsgZW51bU5hbWUgKyBcIi5cIiArIHByb3A7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgVEVudW1MaXRlcmFsLnByb3RvdHlwZS5nZXRDaGVja2VyID0gZnVuY3Rpb24gKHN1aXRlLCBzdHJpY3QpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIHR0eXBlID0gZ2V0TmFtZWRUeXBlKHN1aXRlLCB0aGlzLmVudW1OYW1lKTtcbiAgICAgICAgaWYgKCEodHR5cGUgaW5zdGFuY2VvZiBURW51bVR5cGUpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUeXBlIFwiICsgdGhpcy5lbnVtTmFtZSArIFwiIHVzZWQgaW4gZW51bWxpdCBpcyBub3QgYW4gZW51bSB0eXBlXCIpO1xuICAgICAgICB9XG4gICAgICAgIHZhciB2YWwgPSB0dHlwZS5tZW1iZXJzW3RoaXMucHJvcF07XG4gICAgICAgIGlmICghdHR5cGUubWVtYmVycy5oYXNPd25Qcm9wZXJ0eSh0aGlzLnByb3ApKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbmtub3duIHZhbHVlIFwiICsgdGhpcy5lbnVtTmFtZSArIFwiLlwiICsgdGhpcy5wcm9wICsgXCIgdXNlZCBpbiBlbnVtbGl0XCIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAodmFsdWUsIGN0eCkgeyByZXR1cm4gKHZhbHVlID09PSB2YWwpID8gdHJ1ZSA6IGN0eC5mYWlsKG51bGwsIF90aGlzLl9mYWlsTXNnLCAtMSk7IH07XG4gICAgfTtcbiAgICByZXR1cm4gVEVudW1MaXRlcmFsO1xufShUVHlwZSkpO1xuZXhwb3J0cy5URW51bUxpdGVyYWwgPSBURW51bUxpdGVyYWw7XG5mdW5jdGlvbiBtYWtlSWZhY2VQcm9wcyhwcm9wcykge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhwcm9wcykubWFwKGZ1bmN0aW9uIChuYW1lKSB7IHJldHVybiBtYWtlSWZhY2VQcm9wKG5hbWUsIHByb3BzW25hbWVdKTsgfSk7XG59XG5mdW5jdGlvbiBtYWtlSWZhY2VQcm9wKG5hbWUsIHByb3ApIHtcbiAgICByZXR1cm4gcHJvcCBpbnN0YW5jZW9mIFRPcHRpb25hbCA/XG4gICAgICAgIG5ldyBUUHJvcChuYW1lLCBwcm9wLnR0eXBlLCB0cnVlKSA6XG4gICAgICAgIG5ldyBUUHJvcChuYW1lLCBwYXJzZVNwZWMocHJvcCksIGZhbHNlKTtcbn1cbi8qKlxuICogRGVmaW5lcyBhbiBpbnRlcmZhY2UuIFRoZSBmaXJzdCBhcmd1bWVudCBpcyBhbiBhcnJheSBvZiBpbnRlcmZhY2VzIHRoYXQgaXQgZXh0ZW5kcywgYW5kIHRoZVxuICogc2Vjb25kIGlzIGFuIGFycmF5IG9mIHByb3BlcnRpZXMuXG4gKi9cbmZ1bmN0aW9uIGlmYWNlKGJhc2VzLCBwcm9wcykge1xuICAgIHJldHVybiBuZXcgVElmYWNlKGJhc2VzLCBtYWtlSWZhY2VQcm9wcyhwcm9wcykpO1xufVxuZXhwb3J0cy5pZmFjZSA9IGlmYWNlO1xudmFyIFRJZmFjZSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoVElmYWNlLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIFRJZmFjZShiYXNlcywgcHJvcHMpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMuYmFzZXMgPSBiYXNlcztcbiAgICAgICAgX3RoaXMucHJvcHMgPSBwcm9wcztcbiAgICAgICAgX3RoaXMucHJvcFNldCA9IG5ldyBTZXQocHJvcHMubWFwKGZ1bmN0aW9uIChwKSB7IHJldHVybiBwLm5hbWU7IH0pKTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBUSWZhY2UucHJvdG90eXBlLmdldENoZWNrZXIgPSBmdW5jdGlvbiAoc3VpdGUsIHN0cmljdCwgYWxsb3dlZFByb3BzKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBiYXNlQ2hlY2tlcnMgPSB0aGlzLmJhc2VzLm1hcChmdW5jdGlvbiAoYikgeyByZXR1cm4gZ2V0TmFtZWRUeXBlKHN1aXRlLCBiKS5nZXRDaGVja2VyKHN1aXRlLCBzdHJpY3QpOyB9KTtcbiAgICAgICAgdmFyIHByb3BDaGVja2VycyA9IHRoaXMucHJvcHMubWFwKGZ1bmN0aW9uIChwcm9wKSB7IHJldHVybiBwcm9wLnR0eXBlLmdldENoZWNrZXIoc3VpdGUsIHN0cmljdCk7IH0pO1xuICAgICAgICB2YXIgdGVzdEN0eCA9IG5ldyB1dGlsXzEuTm9vcENvbnRleHQoKTtcbiAgICAgICAgLy8gQ29uc2lkZXIgYSBwcm9wIHJlcXVpcmVkIGlmIGl0J3Mgbm90IG9wdGlvbmFsIEFORCBkb2VzIG5vdCBhbGxvdyBmb3IgdW5kZWZpbmVkIGFzIGEgdmFsdWUuXG4gICAgICAgIHZhciBpc1Byb3BSZXF1aXJlZCA9IHRoaXMucHJvcHMubWFwKGZ1bmN0aW9uIChwcm9wLCBpKSB7XG4gICAgICAgICAgICByZXR1cm4gIXByb3AuaXNPcHQgJiYgIXByb3BDaGVja2Vyc1tpXSh1bmRlZmluZWQsIHRlc3RDdHgpO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGNoZWNrZXIgPSBmdW5jdGlvbiAodmFsdWUsIGN0eCkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJvYmplY3RcIiB8fCB2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBjdHguZmFpbChudWxsLCBcImlzIG5vdCBhbiBvYmplY3RcIiwgMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJhc2VDaGVja2Vycy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmICghYmFzZUNoZWNrZXJzW2ldKHZhbHVlLCBjdHgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BDaGVja2Vycy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIHZhciBuYW1lXzEgPSBfdGhpcy5wcm9wc1tpXS5uYW1lO1xuICAgICAgICAgICAgICAgIHZhciB2ID0gdmFsdWVbbmFtZV8xXTtcbiAgICAgICAgICAgICAgICBpZiAodiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc1Byb3BSZXF1aXJlZFtpXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGN0eC5mYWlsKG5hbWVfMSwgXCJpcyBtaXNzaW5nXCIsIDEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB2YXIgb2sgPSBwcm9wQ2hlY2tlcnNbaV0odiwgY3R4KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFvaykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGN0eC5mYWlsKG5hbWVfMSwgbnVsbCwgMSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKCFzdHJpY3QpIHtcbiAgICAgICAgICAgIHJldHVybiBjaGVja2VyO1xuICAgICAgICB9XG4gICAgICAgIHZhciBwcm9wU2V0ID0gdGhpcy5wcm9wU2V0O1xuICAgICAgICBpZiAoYWxsb3dlZFByb3BzKSB7XG4gICAgICAgICAgICB0aGlzLnByb3BTZXQuZm9yRWFjaChmdW5jdGlvbiAocHJvcCkgeyByZXR1cm4gYWxsb3dlZFByb3BzLmFkZChwcm9wKTsgfSk7XG4gICAgICAgICAgICBwcm9wU2V0ID0gYWxsb3dlZFByb3BzO1xuICAgICAgICB9XG4gICAgICAgIC8vIEluIHN0cmljdCBtb2RlLCBjaGVjayBhbHNvIGZvciB1bmtub3duIGVudW1lcmFibGUgcHJvcGVydGllcy5cbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICh2YWx1ZSwgY3R4KSB7XG4gICAgICAgICAgICBpZiAoIWNoZWNrZXIodmFsdWUsIGN0eCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKHZhciBwcm9wIGluIHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFwcm9wU2V0Lmhhcyhwcm9wKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3R4LmZhaWwocHJvcCwgXCJpcyBleHRyYW5lb3VzXCIsIDIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9O1xuICAgIH07XG4gICAgcmV0dXJuIFRJZmFjZTtcbn0oVFR5cGUpKTtcbmV4cG9ydHMuVElmYWNlID0gVElmYWNlO1xuLyoqXG4gKiBEZWZpbmVzIGFuIG9wdGlvbmFsIHByb3BlcnR5IG9uIGFuIGludGVyZmFjZS5cbiAqL1xuZnVuY3Rpb24gb3B0KHR5cGVTcGVjKSB7IHJldHVybiBuZXcgVE9wdGlvbmFsKHBhcnNlU3BlYyh0eXBlU3BlYykpOyB9XG5leHBvcnRzLm9wdCA9IG9wdDtcbnZhciBUT3B0aW9uYWwgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKFRPcHRpb25hbCwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBUT3B0aW9uYWwodHR5cGUpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMudHR5cGUgPSB0dHlwZTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBUT3B0aW9uYWwucHJvdG90eXBlLmdldENoZWNrZXIgPSBmdW5jdGlvbiAoc3VpdGUsIHN0cmljdCkge1xuICAgICAgICB2YXIgaXRlbUNoZWNrZXIgPSB0aGlzLnR0eXBlLmdldENoZWNrZXIoc3VpdGUsIHN0cmljdCk7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAodmFsdWUsIGN0eCkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgfHwgaXRlbUNoZWNrZXIodmFsdWUsIGN0eCk7XG4gICAgICAgIH07XG4gICAgfTtcbiAgICByZXR1cm4gVE9wdGlvbmFsO1xufShUVHlwZSkpO1xuZXhwb3J0cy5UT3B0aW9uYWwgPSBUT3B0aW9uYWw7XG4vKipcbiAqIERlZmluZXMgYSBwcm9wZXJ0eSBpbiBhbiBpbnRlcmZhY2UuXG4gKi9cbnZhciBUUHJvcCA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBUUHJvcChuYW1lLCB0dHlwZSwgaXNPcHQpIHtcbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICAgICAgdGhpcy50dHlwZSA9IHR0eXBlO1xuICAgICAgICB0aGlzLmlzT3B0ID0gaXNPcHQ7XG4gICAgfVxuICAgIHJldHVybiBUUHJvcDtcbn0oKSk7XG5leHBvcnRzLlRQcm9wID0gVFByb3A7XG4vKipcbiAqIERlZmluZXMgYSBmdW5jdGlvbi4gVGhlIGZpcnN0IGFyZ3VtZW50IGRlY2xhcmVzIHRoZSBmdW5jdGlvbidzIHJldHVybiB0eXBlLCB0aGUgcmVzdCBkZWNsYXJlXG4gKiBpdHMgcGFyYW1ldGVycy5cbiAqL1xuZnVuY3Rpb24gZnVuYyhyZXN1bHRTcGVjKSB7XG4gICAgdmFyIHBhcmFtcyA9IFtdO1xuICAgIGZvciAodmFyIF9pID0gMTsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgIHBhcmFtc1tfaSAtIDFdID0gYXJndW1lbnRzW19pXTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBURnVuYyhuZXcgVFBhcmFtTGlzdChwYXJhbXMpLCBwYXJzZVNwZWMocmVzdWx0U3BlYykpO1xufVxuZXhwb3J0cy5mdW5jID0gZnVuYztcbnZhciBURnVuYyA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoVEZ1bmMsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gVEZ1bmMocGFyYW1MaXN0LCByZXN1bHQpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMucGFyYW1MaXN0ID0gcGFyYW1MaXN0O1xuICAgICAgICBfdGhpcy5yZXN1bHQgPSByZXN1bHQ7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgVEZ1bmMucHJvdG90eXBlLmdldENoZWNrZXIgPSBmdW5jdGlvbiAoc3VpdGUsIHN0cmljdCkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHZhbHVlLCBjdHgpIHtcbiAgICAgICAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09IFwiZnVuY3Rpb25cIiA/IHRydWUgOiBjdHguZmFpbChudWxsLCBcImlzIG5vdCBhIGZ1bmN0aW9uXCIsIDApO1xuICAgICAgICB9O1xuICAgIH07XG4gICAgcmV0dXJuIFRGdW5jO1xufShUVHlwZSkpO1xuZXhwb3J0cy5URnVuYyA9IFRGdW5jO1xuLyoqXG4gKiBEZWZpbmVzIGEgZnVuY3Rpb24gcGFyYW1ldGVyLlxuICovXG5mdW5jdGlvbiBwYXJhbShuYW1lLCB0eXBlU3BlYywgaXNPcHQpIHtcbiAgICByZXR1cm4gbmV3IFRQYXJhbShuYW1lLCBwYXJzZVNwZWModHlwZVNwZWMpLCBCb29sZWFuKGlzT3B0KSk7XG59XG5leHBvcnRzLnBhcmFtID0gcGFyYW07XG52YXIgVFBhcmFtID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFRQYXJhbShuYW1lLCB0dHlwZSwgaXNPcHQpIHtcbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICAgICAgdGhpcy50dHlwZSA9IHR0eXBlO1xuICAgICAgICB0aGlzLmlzT3B0ID0gaXNPcHQ7XG4gICAgfVxuICAgIHJldHVybiBUUGFyYW07XG59KCkpO1xuZXhwb3J0cy5UUGFyYW0gPSBUUGFyYW07XG4vKipcbiAqIERlZmluZXMgYSBmdW5jdGlvbiBwYXJhbWV0ZXIgbGlzdC5cbiAqL1xudmFyIFRQYXJhbUxpc3QgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKFRQYXJhbUxpc3QsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gVFBhcmFtTGlzdChwYXJhbXMpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMucGFyYW1zID0gcGFyYW1zO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIFRQYXJhbUxpc3QucHJvdG90eXBlLmdldENoZWNrZXIgPSBmdW5jdGlvbiAoc3VpdGUsIHN0cmljdCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgaXRlbUNoZWNrZXJzID0gdGhpcy5wYXJhbXMubWFwKGZ1bmN0aW9uICh0KSB7IHJldHVybiB0LnR0eXBlLmdldENoZWNrZXIoc3VpdGUsIHN0cmljdCk7IH0pO1xuICAgICAgICB2YXIgdGVzdEN0eCA9IG5ldyB1dGlsXzEuTm9vcENvbnRleHQoKTtcbiAgICAgICAgdmFyIGlzUGFyYW1SZXF1aXJlZCA9IHRoaXMucGFyYW1zLm1hcChmdW5jdGlvbiAocGFyYW0sIGkpIHtcbiAgICAgICAgICAgIHJldHVybiAhcGFyYW0uaXNPcHQgJiYgIWl0ZW1DaGVja2Vyc1tpXSh1bmRlZmluZWQsIHRlc3RDdHgpO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGNoZWNrZXIgPSBmdW5jdGlvbiAodmFsdWUsIGN0eCkge1xuICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBjdHguZmFpbChudWxsLCBcImlzIG5vdCBhbiBhcnJheVwiLCAwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaXRlbUNoZWNrZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdmFyIHAgPSBfdGhpcy5wYXJhbXNbaV07XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlW2ldID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzUGFyYW1SZXF1aXJlZFtpXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGN0eC5mYWlsKHAubmFtZSwgXCJpcyBtaXNzaW5nXCIsIDEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB2YXIgb2sgPSBpdGVtQ2hlY2tlcnNbaV0odmFsdWVbaV0sIGN0eCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghb2spIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjdHguZmFpbChwLm5hbWUsIG51bGwsIDEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH07XG4gICAgICAgIGlmICghc3RyaWN0KSB7XG4gICAgICAgICAgICByZXR1cm4gY2hlY2tlcjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHZhbHVlLCBjdHgpIHtcbiAgICAgICAgICAgIGlmICghY2hlY2tlcih2YWx1ZSwgY3R4KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB2YWx1ZS5sZW5ndGggPD0gaXRlbUNoZWNrZXJzLmxlbmd0aCA/IHRydWUgOlxuICAgICAgICAgICAgICAgIGN0eC5mYWlsKGl0ZW1DaGVja2Vycy5sZW5ndGgsIFwiaXMgZXh0cmFuZW91c1wiLCAyKTtcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIHJldHVybiBUUGFyYW1MaXN0O1xufShUVHlwZSkpO1xuZXhwb3J0cy5UUGFyYW1MaXN0ID0gVFBhcmFtTGlzdDtcbi8qKlxuICogU2luZ2xlIFRUeXBlIGltcGxlbWVudGF0aW9uIGZvciBhbGwgYmFzaWMgYnVpbHQtaW4gdHlwZXMuXG4gKi9cbnZhciBCYXNpY1R5cGUgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKEJhc2ljVHlwZSwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBCYXNpY1R5cGUodmFsaWRhdG9yLCBtZXNzYWdlKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLnZhbGlkYXRvciA9IHZhbGlkYXRvcjtcbiAgICAgICAgX3RoaXMubWVzc2FnZSA9IG1lc3NhZ2U7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgQmFzaWNUeXBlLnByb3RvdHlwZS5nZXRDaGVja2VyID0gZnVuY3Rpb24gKHN1aXRlLCBzdHJpY3QpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICh2YWx1ZSwgY3R4KSB7IHJldHVybiBfdGhpcy52YWxpZGF0b3IodmFsdWUpID8gdHJ1ZSA6IGN0eC5mYWlsKG51bGwsIF90aGlzLm1lc3NhZ2UsIDApOyB9O1xuICAgIH07XG4gICAgcmV0dXJuIEJhc2ljVHlwZTtcbn0oVFR5cGUpKTtcbmV4cG9ydHMuQmFzaWNUeXBlID0gQmFzaWNUeXBlO1xuLyoqXG4gKiBEZWZpbmVzIHRoZSBzdWl0ZSBvZiBiYXNpYyB0eXBlcy5cbiAqL1xuZXhwb3J0cy5iYXNpY1R5cGVzID0ge1xuICAgIGFueTogbmV3IEJhc2ljVHlwZShmdW5jdGlvbiAodikgeyByZXR1cm4gdHJ1ZTsgfSwgXCJpcyBpbnZhbGlkXCIpLFxuICAgIG51bWJlcjogbmV3IEJhc2ljVHlwZShmdW5jdGlvbiAodikgeyByZXR1cm4gKHR5cGVvZiB2ID09PSBcIm51bWJlclwiKTsgfSwgXCJpcyBub3QgYSBudW1iZXJcIiksXG4gICAgb2JqZWN0OiBuZXcgQmFzaWNUeXBlKGZ1bmN0aW9uICh2KSB7IHJldHVybiAodHlwZW9mIHYgPT09IFwib2JqZWN0XCIgJiYgdik7IH0sIFwiaXMgbm90IGFuIG9iamVjdFwiKSxcbiAgICBib29sZWFuOiBuZXcgQmFzaWNUeXBlKGZ1bmN0aW9uICh2KSB7IHJldHVybiAodHlwZW9mIHYgPT09IFwiYm9vbGVhblwiKTsgfSwgXCJpcyBub3QgYSBib29sZWFuXCIpLFxuICAgIHN0cmluZzogbmV3IEJhc2ljVHlwZShmdW5jdGlvbiAodikgeyByZXR1cm4gKHR5cGVvZiB2ID09PSBcInN0cmluZ1wiKTsgfSwgXCJpcyBub3QgYSBzdHJpbmdcIiksXG4gICAgc3ltYm9sOiBuZXcgQmFzaWNUeXBlKGZ1bmN0aW9uICh2KSB7IHJldHVybiAodHlwZW9mIHYgPT09IFwic3ltYm9sXCIpOyB9LCBcImlzIG5vdCBhIHN5bWJvbFwiKSxcbiAgICB2b2lkOiBuZXcgQmFzaWNUeXBlKGZ1bmN0aW9uICh2KSB7IHJldHVybiAodiA9PSBudWxsKTsgfSwgXCJpcyBub3Qgdm9pZFwiKSxcbiAgICB1bmRlZmluZWQ6IG5ldyBCYXNpY1R5cGUoZnVuY3Rpb24gKHYpIHsgcmV0dXJuICh2ID09PSB1bmRlZmluZWQpOyB9LCBcImlzIG5vdCB1bmRlZmluZWRcIiksXG4gICAgbnVsbDogbmV3IEJhc2ljVHlwZShmdW5jdGlvbiAodikgeyByZXR1cm4gKHYgPT09IG51bGwpOyB9LCBcImlzIG5vdCBudWxsXCIpLFxuICAgIG5ldmVyOiBuZXcgQmFzaWNUeXBlKGZ1bmN0aW9uICh2KSB7IHJldHVybiBmYWxzZTsgfSwgXCJpcyB1bmV4cGVjdGVkXCIpLFxuICAgIERhdGU6IG5ldyBCYXNpY1R5cGUoZ2V0SXNOYXRpdmVDaGVja2VyKFwiW29iamVjdCBEYXRlXVwiKSwgXCJpcyBub3QgYSBEYXRlXCIpLFxuICAgIFJlZ0V4cDogbmV3IEJhc2ljVHlwZShnZXRJc05hdGl2ZUNoZWNrZXIoXCJbb2JqZWN0IFJlZ0V4cF1cIiksIFwiaXMgbm90IGEgUmVnRXhwXCIpLFxufTtcbi8vIFRoaXMgYXBwcm9hY2ggZm9yIGNoZWNraW5nIG5hdGl2ZSBvYmplY3QgdHlwZXMgbWlycm9ycyB0aGF0IG9mIGxvZGFzaC4gSXRzIGFkdmFudGFnZSBvdmVyXG4vLyBgaXNpbnN0YW5jZWAgaXMgdGhhdCBpdCBjYW4gc3RpbGwgcmV0dXJuIHRydWUgZm9yIG5hdGl2ZSBvYmplY3RzIGNyZWF0ZWQgaW4gZGlmZmVyZW50IEpTXG4vLyBleGVjdXRpb24gZW52aXJvbm1lbnRzLlxudmFyIG5hdGl2ZVRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcbmZ1bmN0aW9uIGdldElzTmF0aXZlQ2hlY2tlcih0YWcpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHR5cGVvZiB2ID09PSBcIm9iamVjdFwiICYmIHYgJiYgbmF0aXZlVG9TdHJpbmcuY2FsbCh2KSA9PT0gdGFnOyB9O1xufVxuaWYgKHR5cGVvZiBCdWZmZXIgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICBleHBvcnRzLmJhc2ljVHlwZXMuQnVmZmVyID0gbmV3IEJhc2ljVHlwZShmdW5jdGlvbiAodikgeyByZXR1cm4gQnVmZmVyLmlzQnVmZmVyKHYpOyB9LCBcImlzIG5vdCBhIEJ1ZmZlclwiKTtcbn1cbnZhciBfbG9vcF8xID0gZnVuY3Rpb24gKGFycmF5XzEpIHtcbiAgICBleHBvcnRzLmJhc2ljVHlwZXNbYXJyYXlfMS5uYW1lXSA9IG5ldyBCYXNpY1R5cGUoZnVuY3Rpb24gKHYpIHsgcmV0dXJuICh2IGluc3RhbmNlb2YgYXJyYXlfMSk7IH0sIFwiaXMgbm90IGEgXCIgKyBhcnJheV8xLm5hbWUpO1xufTtcbi8vIFN1cHBvcnQgdHlwZWQgYXJyYXlzIG9mIHZhcmlvdXMgZmxhdm9yc1xuZm9yICh2YXIgX2kgPSAwLCBfYSA9IFtJbnQ4QXJyYXksIFVpbnQ4QXJyYXksIFVpbnQ4Q2xhbXBlZEFycmF5LCBJbnQxNkFycmF5LCBVaW50MTZBcnJheSxcbiAgICBJbnQzMkFycmF5LCBVaW50MzJBcnJheSwgRmxvYXQzMkFycmF5LCBGbG9hdDY0QXJyYXksIEFycmF5QnVmZmVyXTsgX2kgPCBfYS5sZW5ndGg7IF9pKyspIHtcbiAgICB2YXIgYXJyYXlfMSA9IF9hW19pXTtcbiAgICBfbG9vcF8xKGFycmF5XzEpO1xufVxuIiwgIlwidXNlIHN0cmljdFwiO1xudmFyIF9fc3ByZWFkQXJyYXlzID0gKHRoaXMgJiYgdGhpcy5fX3NwcmVhZEFycmF5cykgfHwgZnVuY3Rpb24gKCkge1xuICAgIGZvciAodmFyIHMgPSAwLCBpID0gMCwgaWwgPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgaWw7IGkrKykgcyArPSBhcmd1bWVudHNbaV0ubGVuZ3RoO1xuICAgIGZvciAodmFyIHIgPSBBcnJheShzKSwgayA9IDAsIGkgPSAwOyBpIDwgaWw7IGkrKylcbiAgICAgICAgZm9yICh2YXIgYSA9IGFyZ3VtZW50c1tpXSwgaiA9IDAsIGpsID0gYS5sZW5ndGg7IGogPCBqbDsgaisrLCBrKyspXG4gICAgICAgICAgICByW2tdID0gYVtqXTtcbiAgICByZXR1cm4gcjtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkNoZWNrZXIgPSBleHBvcnRzLmNyZWF0ZUNoZWNrZXJzID0gdm9pZCAwO1xudmFyIHR5cGVzXzEgPSByZXF1aXJlKFwiLi90eXBlc1wiKTtcbnZhciB1dGlsXzEgPSByZXF1aXJlKFwiLi91dGlsXCIpO1xuLyoqXG4gKiBFeHBvcnQgZnVuY3Rpb25zIHVzZWQgdG8gZGVmaW5lIGludGVyZmFjZXMuXG4gKi9cbnZhciB0eXBlc18yID0gcmVxdWlyZShcIi4vdHlwZXNcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJUQXJyYXlcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHR5cGVzXzIuVEFycmF5OyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiVEVudW1UeXBlXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiB0eXBlc18yLlRFbnVtVHlwZTsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlRFbnVtTGl0ZXJhbFwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdHlwZXNfMi5URW51bUxpdGVyYWw7IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJURnVuY1wiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdHlwZXNfMi5URnVuYzsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlRJZmFjZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdHlwZXNfMi5USWZhY2U7IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJUTGl0ZXJhbFwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdHlwZXNfMi5UTGl0ZXJhbDsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlROYW1lXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiB0eXBlc18yLlROYW1lOyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiVE9wdGlvbmFsXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiB0eXBlc18yLlRPcHRpb25hbDsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlRQYXJhbVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdHlwZXNfMi5UUGFyYW07IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJUUGFyYW1MaXN0XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiB0eXBlc18yLlRQYXJhbUxpc3Q7IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJUUHJvcFwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdHlwZXNfMi5UUHJvcDsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlRUdXBsZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdHlwZXNfMi5UVHVwbGU7IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJUVHlwZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdHlwZXNfMi5UVHlwZTsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlRVbmlvblwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdHlwZXNfMi5UVW5pb247IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJUSW50ZXJzZWN0aW9uXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiB0eXBlc18yLlRJbnRlcnNlY3Rpb247IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJhcnJheVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdHlwZXNfMi5hcnJheTsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImVudW1saXRcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHR5cGVzXzIuZW51bWxpdDsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImVudW10eXBlXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiB0eXBlc18yLmVudW10eXBlOyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiZnVuY1wiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdHlwZXNfMi5mdW5jOyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiaWZhY2VcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHR5cGVzXzIuaWZhY2U7IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJsaXRcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHR5cGVzXzIubGl0OyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwibmFtZVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdHlwZXNfMi5uYW1lOyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwib3B0XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiB0eXBlc18yLm9wdDsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcInBhcmFtXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiB0eXBlc18yLnBhcmFtOyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwidHVwbGVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHR5cGVzXzIudHVwbGU7IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJ1bmlvblwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdHlwZXNfMi51bmlvbjsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImludGVyc2VjdGlvblwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdHlwZXNfMi5pbnRlcnNlY3Rpb247IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJCYXNpY1R5cGVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHR5cGVzXzIuQmFzaWNUeXBlOyB9IH0pO1xudmFyIHV0aWxfMiA9IHJlcXVpcmUoXCIuL3V0aWxcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJWRXJyb3JcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHV0aWxfMi5WRXJyb3I7IH0gfSk7XG4vKipcbiAqIFRha2VzIG9uZSBvZiBtb3JlIHR5cGUgc3VpdGVzIChlLmcuIGEgbW9kdWxlIGdlbmVyYXRlZCBieSBgdHMtaW50ZXJmYWNlLWJ1aWxkZXJgKSwgYW5kIGNvbWJpbmVzXG4gKiB0aGVtIGludG8gYSBzdWl0ZSBvZiBpbnRlcmZhY2UgY2hlY2tlcnMuIElmIGEgdHlwZSBpcyB1c2VkIGJ5IG5hbWUsIHRoYXQgbmFtZSBzaG91bGQgYmUgcHJlc2VudFxuICogYW1vbmcgdGhlIHBhc3NlZC1pbiB0eXBlIHN1aXRlcy5cbiAqXG4gKiBUaGUgcmV0dXJuZWQgb2JqZWN0IG1hcHMgdHlwZSBuYW1lcyB0byBDaGVja2VyIG9iamVjdHMuXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUNoZWNrZXJzKCkge1xuICAgIHZhciB0eXBlU3VpdGUgPSBbXTtcbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICB0eXBlU3VpdGVbX2ldID0gYXJndW1lbnRzW19pXTtcbiAgICB9XG4gICAgdmFyIGZ1bGxTdWl0ZSA9IE9iamVjdC5hc3NpZ24uYXBwbHkoT2JqZWN0LCBfX3NwcmVhZEFycmF5cyhbe30sIHR5cGVzXzEuYmFzaWNUeXBlc10sIHR5cGVTdWl0ZSkpO1xuICAgIHZhciBjaGVja2VycyA9IHt9O1xuICAgIGZvciAodmFyIF9hID0gMCwgdHlwZVN1aXRlXzEgPSB0eXBlU3VpdGU7IF9hIDwgdHlwZVN1aXRlXzEubGVuZ3RoOyBfYSsrKSB7XG4gICAgICAgIHZhciBzdWl0ZV8xID0gdHlwZVN1aXRlXzFbX2FdO1xuICAgICAgICBmb3IgKHZhciBfYiA9IDAsIF9jID0gT2JqZWN0LmtleXMoc3VpdGVfMSk7IF9iIDwgX2MubGVuZ3RoOyBfYisrKSB7XG4gICAgICAgICAgICB2YXIgbmFtZSA9IF9jW19iXTtcbiAgICAgICAgICAgIGNoZWNrZXJzW25hbWVdID0gbmV3IENoZWNrZXIoZnVsbFN1aXRlLCBzdWl0ZV8xW25hbWVdKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY2hlY2tlcnM7XG59XG5leHBvcnRzLmNyZWF0ZUNoZWNrZXJzID0gY3JlYXRlQ2hlY2tlcnM7XG4vKipcbiAqIENoZWNrZXIgaW1wbGVtZW50cyB2YWxpZGF0aW9uIG9mIG9iamVjdHMsIGFuZCBhbHNvIGluY2x1ZGVzIGFjY2Vzc29ycyB0byB2YWxpZGF0ZSBtZXRob2QgY2FsbHMuXG4gKiBDaGVja2VycyBzaG91bGQgYmUgY3JlYXRlZCB1c2luZyBgY3JlYXRlQ2hlY2tlcnMoKWAuXG4gKi9cbnZhciBDaGVja2VyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIC8vIENyZWF0ZSBjaGVja2VycyBieSB1c2luZyBgY3JlYXRlQ2hlY2tlcnMoKWAgZnVuY3Rpb24uXG4gICAgZnVuY3Rpb24gQ2hlY2tlcihzdWl0ZSwgdHR5cGUsIF9wYXRoKSB7XG4gICAgICAgIGlmIChfcGF0aCA9PT0gdm9pZCAwKSB7IF9wYXRoID0gJ3ZhbHVlJzsgfVxuICAgICAgICB0aGlzLnN1aXRlID0gc3VpdGU7XG4gICAgICAgIHRoaXMudHR5cGUgPSB0dHlwZTtcbiAgICAgICAgdGhpcy5fcGF0aCA9IF9wYXRoO1xuICAgICAgICB0aGlzLnByb3BzID0gbmV3IE1hcCgpO1xuICAgICAgICBpZiAodHR5cGUgaW5zdGFuY2VvZiB0eXBlc18xLlRJZmFjZSkge1xuICAgICAgICAgICAgZm9yICh2YXIgX2kgPSAwLCBfYSA9IHR0eXBlLnByb3BzOyBfaSA8IF9hLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgICAgIHZhciBwID0gX2FbX2ldO1xuICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuc2V0KHAubmFtZSwgcC50dHlwZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jaGVja2VyUGxhaW4gPSB0aGlzLnR0eXBlLmdldENoZWNrZXIoc3VpdGUsIGZhbHNlKTtcbiAgICAgICAgdGhpcy5jaGVja2VyU3RyaWN0ID0gdGhpcy50dHlwZS5nZXRDaGVja2VyKHN1aXRlLCB0cnVlKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogU2V0IHRoZSBwYXRoIHRvIHJlcG9ydCBpbiBlcnJvcnMsIGluc3RlYWQgb2YgdGhlIGRlZmF1bHQgXCJ2YWx1ZVwiLiAoRS5nLiBpZiB0aGUgQ2hlY2tlciBpcyBmb3JcbiAgICAgKiBhIFwicGVyc29uXCIgaW50ZXJmYWNlLCBzZXQgcGF0aCB0byBcInBlcnNvblwiIHRvIHJlcG9ydCBlLmcuIFwicGVyc29uLm5hbWUgaXMgbm90IGEgc3RyaW5nXCIuKVxuICAgICAqL1xuICAgIENoZWNrZXIucHJvdG90eXBlLnNldFJlcG9ydGVkUGF0aCA9IGZ1bmN0aW9uIChwYXRoKSB7XG4gICAgICAgIHRoaXMuX3BhdGggPSBwYXRoO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQ2hlY2sgdGhhdCB0aGUgZ2l2ZW4gdmFsdWUgc2F0aXNmaWVzIHRoaXMgY2hlY2tlcidzIHR5cGUsIG9yIHRocm93IEVycm9yLlxuICAgICAqL1xuICAgIENoZWNrZXIucHJvdG90eXBlLmNoZWNrID0gZnVuY3Rpb24gKHZhbHVlKSB7IHJldHVybiB0aGlzLl9kb0NoZWNrKHRoaXMuY2hlY2tlclBsYWluLCB2YWx1ZSk7IH07XG4gICAgLyoqXG4gICAgICogQSBmYXN0IGNoZWNrIGZvciB3aGV0aGVyIG9yIG5vdCB0aGUgZ2l2ZW4gdmFsdWUgc2F0aXNmaWVzIHRoaXMgQ2hlY2tlcidzIHR5cGUuIFRoaXMgcmV0dXJuc1xuICAgICAqIHRydWUgb3IgZmFsc2UsIGRvZXMgbm90IHByb2R1Y2UgYW4gZXJyb3IgbWVzc2FnZSwgYW5kIGlzIGZhc3QgYm90aCBvbiBzdWNjZXNzIGFuZCBvbiBmYWlsdXJlLlxuICAgICAqL1xuICAgIENoZWNrZXIucHJvdG90eXBlLnRlc3QgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tlclBsYWluKHZhbHVlLCBuZXcgdXRpbF8xLk5vb3BDb250ZXh0KCkpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhbiBlcnJvciBvYmplY3QgZGVzY3JpYmluZyB0aGUgZXJyb3JzIGlmIHRoZSBnaXZlbiB2YWx1ZSBkb2VzIG5vdCBzYXRpc2Z5IHRoaXNcbiAgICAgKiBDaGVja2VyJ3MgdHlwZSwgb3IgbnVsbCBpZiBpdCBkb2VzLlxuICAgICAqL1xuICAgIENoZWNrZXIucHJvdG90eXBlLnZhbGlkYXRlID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kb1ZhbGlkYXRlKHRoaXMuY2hlY2tlclBsYWluLCB2YWx1ZSk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBDaGVjayB0aGF0IHRoZSBnaXZlbiB2YWx1ZSBzYXRpc2ZpZXMgdGhpcyBjaGVja2VyJ3MgdHlwZSBzdHJpY3RseS4gVGhpcyBjaGVja3MgdGhhdCBvYmplY3RzXG4gICAgICogYW5kIHR1cGxlcyBoYXZlIG5vIGV4dHJhIG1lbWJlcnMuIE5vdGUgdGhhdCB0aGlzIHByZXZlbnRzIGJhY2t3YXJkIGNvbXBhdGliaWxpdHksIHNvIHVzdWFsbHlcbiAgICAgKiBhIHBsYWluIGNoZWNrKCkgaXMgbW9yZSBhcHByb3ByaWF0ZS5cbiAgICAgKi9cbiAgICBDaGVja2VyLnByb3RvdHlwZS5zdHJpY3RDaGVjayA9IGZ1bmN0aW9uICh2YWx1ZSkgeyByZXR1cm4gdGhpcy5fZG9DaGVjayh0aGlzLmNoZWNrZXJTdHJpY3QsIHZhbHVlKTsgfTtcbiAgICAvKipcbiAgICAgKiBBIGZhc3Qgc3RyaWN0IGNoZWNrIGZvciB3aGV0aGVyIG9yIG5vdCB0aGUgZ2l2ZW4gdmFsdWUgc2F0aXNmaWVzIHRoaXMgQ2hlY2tlcidzIHR5cGUuIFJldHVybnNcbiAgICAgKiB0cnVlIG9yIGZhbHNlLCBkb2VzIG5vdCBwcm9kdWNlIGFuIGVycm9yIG1lc3NhZ2UsIGFuZCBpcyBmYXN0IGJvdGggb24gc3VjY2VzcyBhbmQgb24gZmFpbHVyZS5cbiAgICAgKi9cbiAgICBDaGVja2VyLnByb3RvdHlwZS5zdHJpY3RUZXN0ID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNoZWNrZXJTdHJpY3QodmFsdWUsIG5ldyB1dGlsXzEuTm9vcENvbnRleHQoKSk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGFuIGVycm9yIG9iamVjdCBkZXNjcmliaW5nIHRoZSBlcnJvcnMgaWYgdGhlIGdpdmVuIHZhbHVlIGRvZXMgbm90IHNhdGlzZnkgdGhpc1xuICAgICAqIENoZWNrZXIncyB0eXBlIHN0cmljdGx5LCBvciBudWxsIGlmIGl0IGRvZXMuXG4gICAgICovXG4gICAgQ2hlY2tlci5wcm90b3R5cGUuc3RyaWN0VmFsaWRhdGUgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RvVmFsaWRhdGUodGhpcy5jaGVja2VyU3RyaWN0LCB2YWx1ZSk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBJZiB0aGlzIGNoZWNrZXIgaXMgZm9yIGFuIGludGVyZmFjZSwgcmV0dXJucyBhIENoZWNrZXIgZm9yIHRoZSB0eXBlIHJlcXVpcmVkIGZvciB0aGUgZ2l2ZW5cbiAgICAgKiBwcm9wZXJ0eSBvZiB0aGlzIGludGVyZmFjZS5cbiAgICAgKi9cbiAgICBDaGVja2VyLnByb3RvdHlwZS5nZXRQcm9wID0gZnVuY3Rpb24gKHByb3ApIHtcbiAgICAgICAgdmFyIHR0eXBlID0gdGhpcy5wcm9wcy5nZXQocHJvcCk7XG4gICAgICAgIGlmICghdHR5cGUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlR5cGUgaGFzIG5vIHByb3BlcnR5IFwiICsgcHJvcCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBDaGVja2VyKHRoaXMuc3VpdGUsIHR0eXBlLCB0aGlzLl9wYXRoICsgXCIuXCIgKyBwcm9wKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIElmIHRoaXMgY2hlY2tlciBpcyBmb3IgYW4gaW50ZXJmYWNlLCByZXR1cm5zIGEgQ2hlY2tlciBmb3IgdGhlIGFyZ3VtZW50LWxpc3QgcmVxdWlyZWQgdG8gY2FsbFxuICAgICAqIHRoZSBnaXZlbiBtZXRob2Qgb2YgdGhpcyBpbnRlcmZhY2UuIEUuZy4gaWYgdGhpcyBDaGVja2VyIGlzIGZvciB0aGUgaW50ZXJmYWNlOlxuICAgICAqICAgIGludGVyZmFjZSBGb28ge1xuICAgICAqICAgICAgZmluZChzOiBzdHJpbmcsIHBvcz86IG51bWJlcik6IG51bWJlcjtcbiAgICAgKiAgICB9XG4gICAgICogVGhlbiBtZXRob2RBcmdzKFwiZmluZFwiKS5jaGVjayguLi4pIHdpbGwgc3VjY2VlZCBmb3IgW1wiZm9vXCJdIGFuZCBbXCJmb29cIiwgM10sIGJ1dCBub3QgZm9yIFsxN10uXG4gICAgICovXG4gICAgQ2hlY2tlci5wcm90b3R5cGUubWV0aG9kQXJncyA9IGZ1bmN0aW9uIChtZXRob2ROYW1lKSB7XG4gICAgICAgIHZhciB0ZnVuYyA9IHRoaXMuX2dldE1ldGhvZChtZXRob2ROYW1lKTtcbiAgICAgICAgcmV0dXJuIG5ldyBDaGVja2VyKHRoaXMuc3VpdGUsIHRmdW5jLnBhcmFtTGlzdCk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBJZiB0aGlzIGNoZWNrZXIgaXMgZm9yIGFuIGludGVyZmFjZSwgcmV0dXJucyBhIENoZWNrZXIgZm9yIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGdpdmVuXG4gICAgICogbWV0aG9kIG9mIHRoaXMgaW50ZXJmYWNlLlxuICAgICAqL1xuICAgIENoZWNrZXIucHJvdG90eXBlLm1ldGhvZFJlc3VsdCA9IGZ1bmN0aW9uIChtZXRob2ROYW1lKSB7XG4gICAgICAgIHZhciB0ZnVuYyA9IHRoaXMuX2dldE1ldGhvZChtZXRob2ROYW1lKTtcbiAgICAgICAgcmV0dXJuIG5ldyBDaGVja2VyKHRoaXMuc3VpdGUsIHRmdW5jLnJlc3VsdCk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBJZiB0aGlzIGNoZWNrZXIgaXMgZm9yIGEgZnVuY3Rpb24sIHJldHVybnMgYSBDaGVja2VyIGZvciBpdHMgYXJndW1lbnQtbGlzdC5cbiAgICAgKi9cbiAgICBDaGVja2VyLnByb3RvdHlwZS5nZXRBcmdzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoISh0aGlzLnR0eXBlIGluc3RhbmNlb2YgdHlwZXNfMS5URnVuYykpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImdldEFyZ3MoKSBhcHBsaWVkIHRvIG5vbi1mdW5jdGlvblwiKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IENoZWNrZXIodGhpcy5zdWl0ZSwgdGhpcy50dHlwZS5wYXJhbUxpc3QpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogSWYgdGhpcyBjaGVja2VyIGlzIGZvciBhIGZ1bmN0aW9uLCByZXR1cm5zIGEgQ2hlY2tlciBmb3IgaXRzIHJlc3VsdC5cbiAgICAgKi9cbiAgICBDaGVja2VyLnByb3RvdHlwZS5nZXRSZXN1bHQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICghKHRoaXMudHR5cGUgaW5zdGFuY2VvZiB0eXBlc18xLlRGdW5jKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiZ2V0UmVzdWx0KCkgYXBwbGllZCB0byBub24tZnVuY3Rpb25cIik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBDaGVja2VyKHRoaXMuc3VpdGUsIHRoaXMudHR5cGUucmVzdWx0KTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFJldHVybiB0aGUgdHlwZSBmb3Igd2hpY2ggdGhpcyBpcyBhIGNoZWNrZXIuXG4gICAgICovXG4gICAgQ2hlY2tlci5wcm90b3R5cGUuZ2V0VHlwZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHR5cGU7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBBY3R1YWwgaW1wbGVtZW50YXRpb24gb2YgY2hlY2soKSBhbmQgc3RyaWN0Q2hlY2soKS5cbiAgICAgKi9cbiAgICBDaGVja2VyLnByb3RvdHlwZS5fZG9DaGVjayA9IGZ1bmN0aW9uIChjaGVja2VyRnVuYywgdmFsdWUpIHtcbiAgICAgICAgdmFyIG5vb3BDdHggPSBuZXcgdXRpbF8xLk5vb3BDb250ZXh0KCk7XG4gICAgICAgIGlmICghY2hlY2tlckZ1bmModmFsdWUsIG5vb3BDdHgpKSB7XG4gICAgICAgICAgICB2YXIgZGV0YWlsQ3R4ID0gbmV3IHV0aWxfMS5EZXRhaWxDb250ZXh0KCk7XG4gICAgICAgICAgICBjaGVja2VyRnVuYyh2YWx1ZSwgZGV0YWlsQ3R4KTtcbiAgICAgICAgICAgIHRocm93IGRldGFpbEN0eC5nZXRFcnJvcih0aGlzLl9wYXRoKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgQ2hlY2tlci5wcm90b3R5cGUuX2RvVmFsaWRhdGUgPSBmdW5jdGlvbiAoY2hlY2tlckZ1bmMsIHZhbHVlKSB7XG4gICAgICAgIHZhciBub29wQ3R4ID0gbmV3IHV0aWxfMS5Ob29wQ29udGV4dCgpO1xuICAgICAgICBpZiAoY2hlY2tlckZ1bmModmFsdWUsIG5vb3BDdHgpKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICB2YXIgZGV0YWlsQ3R4ID0gbmV3IHV0aWxfMS5EZXRhaWxDb250ZXh0KCk7XG4gICAgICAgIGNoZWNrZXJGdW5jKHZhbHVlLCBkZXRhaWxDdHgpO1xuICAgICAgICByZXR1cm4gZGV0YWlsQ3R4LmdldEVycm9yRGV0YWlsKHRoaXMuX3BhdGgpO1xuICAgIH07XG4gICAgQ2hlY2tlci5wcm90b3R5cGUuX2dldE1ldGhvZCA9IGZ1bmN0aW9uIChtZXRob2ROYW1lKSB7XG4gICAgICAgIHZhciB0dHlwZSA9IHRoaXMucHJvcHMuZ2V0KG1ldGhvZE5hbWUpO1xuICAgICAgICBpZiAoIXR0eXBlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUeXBlIGhhcyBubyBwcm9wZXJ0eSBcIiArIG1ldGhvZE5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghKHR0eXBlIGluc3RhbmNlb2YgdHlwZXNfMS5URnVuYykpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlByb3BlcnR5IFwiICsgbWV0aG9kTmFtZSArIFwiIGlzIG5vdCBhIG1ldGhvZFwiKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHR5cGU7XG4gICAgfTtcbiAgICByZXR1cm4gQ2hlY2tlcjtcbn0oKSk7XG5leHBvcnRzLkNoZWNrZXIgPSBDaGVja2VyO1xuIiwgIlwidXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge3ZhbHVlOiB0cnVlfSk7IGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKG9iaikgeyBpZiAob2JqICYmIG9iai5fX2VzTW9kdWxlKSB7IHJldHVybiBvYmo7IH0gZWxzZSB7IHZhciBuZXdPYmogPSB7fTsgaWYgKG9iaiAhPSBudWxsKSB7IGZvciAodmFyIGtleSBpbiBvYmopIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHsgbmV3T2JqW2tleV0gPSBvYmpba2V5XTsgfSB9IH0gbmV3T2JqLmRlZmF1bHQgPSBvYmo7IHJldHVybiBuZXdPYmo7IH0gfS8qKlxuICogVGhpcyBtb2R1bGUgd2FzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IGB0cy1pbnRlcmZhY2UtYnVpbGRlcmBcbiAqL1xudmFyIF90c2ludGVyZmFjZWNoZWNrZXIgPSByZXF1aXJlKCd0cy1pbnRlcmZhY2UtY2hlY2tlcicpOyB2YXIgdCA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKF90c2ludGVyZmFjZWNoZWNrZXIpO1xuLy8gdHNsaW50OmRpc2FibGU6b2JqZWN0LWxpdGVyYWwta2V5LXF1b3Rlc1xuXG4gY29uc3QgVHJhbnNmb3JtID0gdC51bmlvbihcbiAgdC5saXQoXCJqc3hcIiksXG4gIHQubGl0KFwidHlwZXNjcmlwdFwiKSxcbiAgdC5saXQoXCJmbG93XCIpLFxuICB0LmxpdChcImltcG9ydHNcIiksXG4gIHQubGl0KFwicmVhY3QtaG90LWxvYWRlclwiKSxcbiAgdC5saXQoXCJqZXN0XCIpLFxuKTsgZXhwb3J0cy5UcmFuc2Zvcm0gPSBUcmFuc2Zvcm07XG5cbiBjb25zdCBTb3VyY2VNYXBPcHRpb25zID0gdC5pZmFjZShbXSwge1xuICBjb21waWxlZEZpbGVuYW1lOiBcInN0cmluZ1wiLFxufSk7IGV4cG9ydHMuU291cmNlTWFwT3B0aW9ucyA9IFNvdXJjZU1hcE9wdGlvbnM7XG5cbiBjb25zdCBPcHRpb25zID0gdC5pZmFjZShbXSwge1xuICB0cmFuc2Zvcm1zOiB0LmFycmF5KFwiVHJhbnNmb3JtXCIpLFxuICBkaXNhYmxlRVNUcmFuc2Zvcm1zOiB0Lm9wdChcImJvb2xlYW5cIiksXG4gIGpzeFJ1bnRpbWU6IHQub3B0KHQudW5pb24odC5saXQoXCJjbGFzc2ljXCIpLCB0LmxpdChcImF1dG9tYXRpY1wiKSwgdC5saXQoXCJwcmVzZXJ2ZVwiKSkpLFxuICBwcm9kdWN0aW9uOiB0Lm9wdChcImJvb2xlYW5cIiksXG4gIGpzeEltcG9ydFNvdXJjZTogdC5vcHQoXCJzdHJpbmdcIiksXG4gIGpzeFByYWdtYTogdC5vcHQoXCJzdHJpbmdcIiksXG4gIGpzeEZyYWdtZW50UHJhZ21hOiB0Lm9wdChcInN0cmluZ1wiKSxcbiAga2VlcFVudXNlZEltcG9ydHM6IHQub3B0KFwiYm9vbGVhblwiKSxcbiAgcHJlc2VydmVEeW5hbWljSW1wb3J0OiB0Lm9wdChcImJvb2xlYW5cIiksXG4gIGluamVjdENyZWF0ZVJlcXVpcmVGb3JJbXBvcnRSZXF1aXJlOiB0Lm9wdChcImJvb2xlYW5cIiksXG4gIGVuYWJsZUxlZ2FjeVR5cGVTY3JpcHRNb2R1bGVJbnRlcm9wOiB0Lm9wdChcImJvb2xlYW5cIiksXG4gIGVuYWJsZUxlZ2FjeUJhYmVsNU1vZHVsZUludGVyb3A6IHQub3B0KFwiYm9vbGVhblwiKSxcbiAgc291cmNlTWFwT3B0aW9uczogdC5vcHQoXCJTb3VyY2VNYXBPcHRpb25zXCIpLFxuICBmaWxlUGF0aDogdC5vcHQoXCJzdHJpbmdcIiksXG59KTsgZXhwb3J0cy5PcHRpb25zID0gT3B0aW9ucztcblxuY29uc3QgZXhwb3J0ZWRUeXBlU3VpdGUgPSB7XG4gIFRyYW5zZm9ybTogZXhwb3J0cy5UcmFuc2Zvcm0sXG4gIFNvdXJjZU1hcE9wdGlvbnM6IGV4cG9ydHMuU291cmNlTWFwT3B0aW9ucyxcbiAgT3B0aW9uczogZXhwb3J0cy5PcHRpb25zLFxufTtcbmV4cG9ydHMuIGRlZmF1bHQgPSBleHBvcnRlZFR5cGVTdWl0ZTtcbiIsICJcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHt2YWx1ZTogdHJ1ZX0pOyBmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfXZhciBfdHNpbnRlcmZhY2VjaGVja2VyID0gcmVxdWlyZSgndHMtaW50ZXJmYWNlLWNoZWNrZXInKTtcblxudmFyIF9PcHRpb25zZ2VudHlwZXMgPSByZXF1aXJlKCcuL09wdGlvbnMtZ2VuLXR5cGVzJyk7IHZhciBfT3B0aW9uc2dlbnR5cGVzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX09wdGlvbnNnZW50eXBlcyk7XG5cbmNvbnN0IHtPcHRpb25zOiBPcHRpb25zQ2hlY2tlcn0gPSBfdHNpbnRlcmZhY2VjaGVja2VyLmNyZWF0ZUNoZWNrZXJzLmNhbGwodm9pZCAwLCBfT3B0aW9uc2dlbnR5cGVzMi5kZWZhdWx0KTtcblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbiBmdW5jdGlvbiB2YWxpZGF0ZU9wdGlvbnMob3B0aW9ucykge1xuICBPcHRpb25zQ2hlY2tlci5zdHJpY3RDaGVjayhvcHRpb25zKTtcbn0gZXhwb3J0cy52YWxpZGF0ZU9wdGlvbnMgPSB2YWxpZGF0ZU9wdGlvbnM7XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7dmFsdWU6IHRydWV9KTt2YXIgX2Zsb3cgPSByZXF1aXJlKCcuLi9wbHVnaW5zL2Zsb3cnKTtcbnZhciBfdHlwZXNjcmlwdCA9IHJlcXVpcmUoJy4uL3BsdWdpbnMvdHlwZXNjcmlwdCcpO1xuXG5cblxuXG5cblxuXG52YXIgX2luZGV4ID0gcmVxdWlyZSgnLi4vdG9rZW5pemVyL2luZGV4Jyk7XG52YXIgX2tleXdvcmRzID0gcmVxdWlyZSgnLi4vdG9rZW5pemVyL2tleXdvcmRzJyk7XG52YXIgX3R5cGVzID0gcmVxdWlyZSgnLi4vdG9rZW5pemVyL3R5cGVzJyk7XG52YXIgX2Jhc2UgPSByZXF1aXJlKCcuL2Jhc2UnKTtcbnZhciBfZXhwcmVzc2lvbiA9IHJlcXVpcmUoJy4vZXhwcmVzc2lvbicpO1xudmFyIF91dGlsID0gcmVxdWlyZSgnLi91dGlsJyk7XG5cbiBmdW5jdGlvbiBwYXJzZVNwcmVhZCgpIHtcbiAgX2luZGV4Lm5leHQuY2FsbCh2b2lkIDAsICk7XG4gIF9leHByZXNzaW9uLnBhcnNlTWF5YmVBc3NpZ24uY2FsbCh2b2lkIDAsIGZhbHNlKTtcbn0gZXhwb3J0cy5wYXJzZVNwcmVhZCA9IHBhcnNlU3ByZWFkO1xuXG4gZnVuY3Rpb24gcGFyc2VSZXN0KGlzQmxvY2tTY29wZSkge1xuICBfaW5kZXgubmV4dC5jYWxsKHZvaWQgMCwgKTtcbiAgcGFyc2VCaW5kaW5nQXRvbShpc0Jsb2NrU2NvcGUpO1xufSBleHBvcnRzLnBhcnNlUmVzdCA9IHBhcnNlUmVzdDtcblxuIGZ1bmN0aW9uIHBhcnNlQmluZGluZ0lkZW50aWZpZXIoaXNCbG9ja1Njb3BlKSB7XG4gIF9leHByZXNzaW9uLnBhcnNlSWRlbnRpZmllci5jYWxsKHZvaWQgMCwgKTtcbiAgbWFya1ByaW9yQmluZGluZ0lkZW50aWZpZXIoaXNCbG9ja1Njb3BlKTtcbn0gZXhwb3J0cy5wYXJzZUJpbmRpbmdJZGVudGlmaWVyID0gcGFyc2VCaW5kaW5nSWRlbnRpZmllcjtcblxuIGZ1bmN0aW9uIHBhcnNlSW1wb3J0ZWRJZGVudGlmaWVyKCkge1xuICBfZXhwcmVzc2lvbi5wYXJzZUlkZW50aWZpZXIuY2FsbCh2b2lkIDAsICk7XG4gIF9iYXNlLnN0YXRlLnRva2Vuc1tfYmFzZS5zdGF0ZS50b2tlbnMubGVuZ3RoIC0gMV0uaWRlbnRpZmllclJvbGUgPSBfaW5kZXguSWRlbnRpZmllclJvbGUuSW1wb3J0RGVjbGFyYXRpb247XG59IGV4cG9ydHMucGFyc2VJbXBvcnRlZElkZW50aWZpZXIgPSBwYXJzZUltcG9ydGVkSWRlbnRpZmllcjtcblxuIGZ1bmN0aW9uIG1hcmtQcmlvckJpbmRpbmdJZGVudGlmaWVyKGlzQmxvY2tTY29wZSkge1xuICBsZXQgaWRlbnRpZmllclJvbGU7XG4gIGlmIChfYmFzZS5zdGF0ZS5zY29wZURlcHRoID09PSAwKSB7XG4gICAgaWRlbnRpZmllclJvbGUgPSBfaW5kZXguSWRlbnRpZmllclJvbGUuVG9wTGV2ZWxEZWNsYXJhdGlvbjtcbiAgfSBlbHNlIGlmIChpc0Jsb2NrU2NvcGUpIHtcbiAgICBpZGVudGlmaWVyUm9sZSA9IF9pbmRleC5JZGVudGlmaWVyUm9sZS5CbG9ja1Njb3BlZERlY2xhcmF0aW9uO1xuICB9IGVsc2Uge1xuICAgIGlkZW50aWZpZXJSb2xlID0gX2luZGV4LklkZW50aWZpZXJSb2xlLkZ1bmN0aW9uU2NvcGVkRGVjbGFyYXRpb247XG4gIH1cbiAgX2Jhc2Uuc3RhdGUudG9rZW5zW19iYXNlLnN0YXRlLnRva2Vucy5sZW5ndGggLSAxXS5pZGVudGlmaWVyUm9sZSA9IGlkZW50aWZpZXJSb2xlO1xufSBleHBvcnRzLm1hcmtQcmlvckJpbmRpbmdJZGVudGlmaWVyID0gbWFya1ByaW9yQmluZGluZ0lkZW50aWZpZXI7XG5cbi8vIFBhcnNlcyBsdmFsdWUgKGFzc2lnbmFibGUpIGF0b20uXG4gZnVuY3Rpb24gcGFyc2VCaW5kaW5nQXRvbShpc0Jsb2NrU2NvcGUpIHtcbiAgc3dpdGNoIChfYmFzZS5zdGF0ZS50eXBlKSB7XG4gICAgY2FzZSBfdHlwZXMuVG9rZW5UeXBlLl90aGlzOiB7XG4gICAgICAvLyBJbiBUeXBlU2NyaXB0LCBcInRoaXNcIiBtYXkgYmUgdGhlIG5hbWUgb2YgYSBwYXJhbWV0ZXIsIHNvIGFsbG93IGl0LlxuICAgICAgY29uc3Qgb2xkSXNUeXBlID0gX2luZGV4LnB1c2hUeXBlQ29udGV4dC5jYWxsKHZvaWQgMCwgMCk7XG4gICAgICBfaW5kZXgubmV4dC5jYWxsKHZvaWQgMCwgKTtcbiAgICAgIF9pbmRleC5wb3BUeXBlQ29udGV4dC5jYWxsKHZvaWQgMCwgb2xkSXNUeXBlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjYXNlIF90eXBlcy5Ub2tlblR5cGUuX3lpZWxkOlxuICAgIGNhc2UgX3R5cGVzLlRva2VuVHlwZS5uYW1lOiB7XG4gICAgICBfYmFzZS5zdGF0ZS50eXBlID0gX3R5cGVzLlRva2VuVHlwZS5uYW1lO1xuICAgICAgcGFyc2VCaW5kaW5nSWRlbnRpZmllcihpc0Jsb2NrU2NvcGUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNhc2UgX3R5cGVzLlRva2VuVHlwZS5icmFja2V0TDoge1xuICAgICAgX2luZGV4Lm5leHQuY2FsbCh2b2lkIDAsICk7XG4gICAgICBwYXJzZUJpbmRpbmdMaXN0KF90eXBlcy5Ub2tlblR5cGUuYnJhY2tldFIsIGlzQmxvY2tTY29wZSwgdHJ1ZSAvKiBhbGxvd0VtcHR5ICovKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjYXNlIF90eXBlcy5Ub2tlblR5cGUuYnJhY2VMOlxuICAgICAgX2V4cHJlc3Npb24ucGFyc2VPYmouY2FsbCh2b2lkIDAsIHRydWUsIGlzQmxvY2tTY29wZSk7XG4gICAgICByZXR1cm47XG5cbiAgICBkZWZhdWx0OlxuICAgICAgX3V0aWwudW5leHBlY3RlZC5jYWxsKHZvaWQgMCwgKTtcbiAgfVxufSBleHBvcnRzLnBhcnNlQmluZGluZ0F0b20gPSBwYXJzZUJpbmRpbmdBdG9tO1xuXG4gZnVuY3Rpb24gcGFyc2VCaW5kaW5nTGlzdChcbiAgY2xvc2UsXG4gIGlzQmxvY2tTY29wZSxcbiAgYWxsb3dFbXB0eSA9IGZhbHNlLFxuICBhbGxvd01vZGlmaWVycyA9IGZhbHNlLFxuICBjb250ZXh0SWQgPSAwLFxuKSB7XG4gIGxldCBmaXJzdCA9IHRydWU7XG5cbiAgbGV0IGhhc1JlbW92ZWRDb21tYSA9IGZhbHNlO1xuICBjb25zdCBmaXJzdEl0ZW1Ub2tlbkluZGV4ID0gX2Jhc2Uuc3RhdGUudG9rZW5zLmxlbmd0aDtcblxuICB3aGlsZSAoIV9pbmRleC5lYXQuY2FsbCh2b2lkIDAsIGNsb3NlKSAmJiAhX2Jhc2Uuc3RhdGUuZXJyb3IpIHtcbiAgICBpZiAoZmlyc3QpIHtcbiAgICAgIGZpcnN0ID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIF91dGlsLmV4cGVjdC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5jb21tYSk7XG4gICAgICBfYmFzZS5zdGF0ZS50b2tlbnNbX2Jhc2Uuc3RhdGUudG9rZW5zLmxlbmd0aCAtIDFdLmNvbnRleHRJZCA9IGNvbnRleHRJZDtcbiAgICAgIC8vIEFmdGVyIGEgXCJ0aGlzXCIgdHlwZSBpbiBUeXBlU2NyaXB0LCB3ZSBuZWVkIHRvIHNldCB0aGUgZm9sbG93aW5nIGNvbW1hIChpZiBhbnkpIHRvIGFsc28gYmVcbiAgICAgIC8vIGEgdHlwZSB0b2tlbiBzbyB0aGF0IGl0IHdpbGwgYmUgcmVtb3ZlZC5cbiAgICAgIGlmICghaGFzUmVtb3ZlZENvbW1hICYmIF9iYXNlLnN0YXRlLnRva2Vuc1tmaXJzdEl0ZW1Ub2tlbkluZGV4XS5pc1R5cGUpIHtcbiAgICAgICAgX2Jhc2Uuc3RhdGUudG9rZW5zW19iYXNlLnN0YXRlLnRva2Vucy5sZW5ndGggLSAxXS5pc1R5cGUgPSB0cnVlO1xuICAgICAgICBoYXNSZW1vdmVkQ29tbWEgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoYWxsb3dFbXB0eSAmJiBfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuY29tbWEpKSB7XG4gICAgICAvLyBFbXB0eSBpdGVtOyBub3RoaW5nIGZ1cnRoZXIgdG8gcGFyc2UgZm9yIHRoaXMgaXRlbS5cbiAgICB9IGVsc2UgaWYgKF9pbmRleC5lYXQuY2FsbCh2b2lkIDAsIGNsb3NlKSkge1xuICAgICAgYnJlYWs7XG4gICAgfSBlbHNlIGlmIChfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuZWxsaXBzaXMpKSB7XG4gICAgICBwYXJzZVJlc3QoaXNCbG9ja1Njb3BlKTtcbiAgICAgIHBhcnNlQXNzaWduYWJsZUxpc3RJdGVtVHlwZXMoKTtcbiAgICAgIC8vIFN1cHBvcnQgcmVzdCBlbGVtZW50IHRyYWlsaW5nIGNvbW1hcyBhbGxvd2VkIGJ5IFR5cGVTY3JpcHQgPDIuOS5cbiAgICAgIF9pbmRleC5lYXQuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuY29tbWEpO1xuICAgICAgX3V0aWwuZXhwZWN0LmNhbGwodm9pZCAwLCBjbG9zZSk7XG4gICAgICBicmVhaztcbiAgICB9IGVsc2Uge1xuICAgICAgcGFyc2VBc3NpZ25hYmxlTGlzdEl0ZW0oYWxsb3dNb2RpZmllcnMsIGlzQmxvY2tTY29wZSk7XG4gICAgfVxuICB9XG59IGV4cG9ydHMucGFyc2VCaW5kaW5nTGlzdCA9IHBhcnNlQmluZGluZ0xpc3Q7XG5cbmZ1bmN0aW9uIHBhcnNlQXNzaWduYWJsZUxpc3RJdGVtKGFsbG93TW9kaWZpZXJzLCBpc0Jsb2NrU2NvcGUpIHtcbiAgaWYgKGFsbG93TW9kaWZpZXJzKSB7XG4gICAgX3R5cGVzY3JpcHQudHNQYXJzZU1vZGlmaWVycy5jYWxsKHZvaWQgMCwgW1xuICAgICAgX2tleXdvcmRzLkNvbnRleHR1YWxLZXl3b3JkLl9wdWJsaWMsXG4gICAgICBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX3Byb3RlY3RlZCxcbiAgICAgIF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fcHJpdmF0ZSxcbiAgICAgIF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fcmVhZG9ubHksXG4gICAgICBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX292ZXJyaWRlLFxuICAgIF0pO1xuICB9XG5cbiAgcGFyc2VNYXliZURlZmF1bHQoaXNCbG9ja1Njb3BlKTtcbiAgcGFyc2VBc3NpZ25hYmxlTGlzdEl0ZW1UeXBlcygpO1xuICBwYXJzZU1heWJlRGVmYXVsdChpc0Jsb2NrU2NvcGUsIHRydWUgLyogbGVmdEFscmVhZHlQYXJzZWQgKi8pO1xufVxuXG5mdW5jdGlvbiBwYXJzZUFzc2lnbmFibGVMaXN0SXRlbVR5cGVzKCkge1xuICBpZiAoX2Jhc2UuaXNGbG93RW5hYmxlZCkge1xuICAgIF9mbG93LmZsb3dQYXJzZUFzc2lnbmFibGVMaXN0SXRlbVR5cGVzLmNhbGwodm9pZCAwLCApO1xuICB9IGVsc2UgaWYgKF9iYXNlLmlzVHlwZVNjcmlwdEVuYWJsZWQpIHtcbiAgICBfdHlwZXNjcmlwdC50c1BhcnNlQXNzaWduYWJsZUxpc3RJdGVtVHlwZXMuY2FsbCh2b2lkIDAsICk7XG4gIH1cbn1cblxuLy8gUGFyc2VzIGFzc2lnbm1lbnQgcGF0dGVybiBhcm91bmQgZ2l2ZW4gYXRvbSBpZiBwb3NzaWJsZS5cbiBmdW5jdGlvbiBwYXJzZU1heWJlRGVmYXVsdChpc0Jsb2NrU2NvcGUsIGxlZnRBbHJlYWR5UGFyc2VkID0gZmFsc2UpIHtcbiAgaWYgKCFsZWZ0QWxyZWFkeVBhcnNlZCkge1xuICAgIHBhcnNlQmluZGluZ0F0b20oaXNCbG9ja1Njb3BlKTtcbiAgfVxuICBpZiAoIV9pbmRleC5lYXQuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuZXEpKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IGVxSW5kZXggPSBfYmFzZS5zdGF0ZS50b2tlbnMubGVuZ3RoIC0gMTtcbiAgX2V4cHJlc3Npb24ucGFyc2VNYXliZUFzc2lnbi5jYWxsKHZvaWQgMCwgKTtcbiAgX2Jhc2Uuc3RhdGUudG9rZW5zW2VxSW5kZXhdLnJoc0VuZEluZGV4ID0gX2Jhc2Uuc3RhdGUudG9rZW5zLmxlbmd0aDtcbn0gZXhwb3J0cy5wYXJzZU1heWJlRGVmYXVsdCA9IHBhcnNlTWF5YmVEZWZhdWx0O1xuIiwgIlwidXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge3ZhbHVlOiB0cnVlfSk7XG5cblxuXG5cblxuXG5cblxuXG5cblxudmFyIF9pbmRleCA9IHJlcXVpcmUoJy4uL3Rva2VuaXplci9pbmRleCcpO1xudmFyIF9rZXl3b3JkcyA9IHJlcXVpcmUoJy4uL3Rva2VuaXplci9rZXl3b3JkcycpO1xudmFyIF90eXBlcyA9IHJlcXVpcmUoJy4uL3Rva2VuaXplci90eXBlcycpO1xudmFyIF9iYXNlID0gcmVxdWlyZSgnLi4vdHJhdmVyc2VyL2Jhc2UnKTtcblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbnZhciBfZXhwcmVzc2lvbiA9IHJlcXVpcmUoJy4uL3RyYXZlcnNlci9leHByZXNzaW9uJyk7XG52YXIgX2x2YWwgPSByZXF1aXJlKCcuLi90cmF2ZXJzZXIvbHZhbCcpO1xuXG5cblxuXG5cblxuXG5cbnZhciBfc3RhdGVtZW50ID0gcmVxdWlyZSgnLi4vdHJhdmVyc2VyL3N0YXRlbWVudCcpO1xuXG5cblxuXG5cblxuXG5cblxuXG5cbnZhciBfdXRpbCA9IHJlcXVpcmUoJy4uL3RyYXZlcnNlci91dGlsJyk7XG52YXIgX2pzeCA9IHJlcXVpcmUoJy4vanN4Jyk7XG5cbmZ1bmN0aW9uIHRzSXNJZGVudGlmaWVyKCkge1xuICAvLyBUT0RPOiBhY3R1YWxseSBhIGJpdCBtb3JlIGNvbXBsZXggaW4gVHlwZVNjcmlwdCwgYnV0IHNob3VsZG4ndCBtYXR0ZXIuXG4gIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQvaXNzdWVzLzE1MDA4XG4gIHJldHVybiBfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUubmFtZSk7XG59XG5cbmZ1bmN0aW9uIGlzTGl0ZXJhbFByb3BlcnR5TmFtZSgpIHtcbiAgcmV0dXJuIChcbiAgICBfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUubmFtZSkgfHxcbiAgICBCb29sZWFuKF9iYXNlLnN0YXRlLnR5cGUgJiBfdHlwZXMuVG9rZW5UeXBlLklTX0tFWVdPUkQpIHx8XG4gICAgX2luZGV4Lm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLnN0cmluZykgfHxcbiAgICBfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUubnVtKSB8fFxuICAgIF9pbmRleC5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5iaWdpbnQpIHx8XG4gICAgX2luZGV4Lm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmRlY2ltYWwpXG4gICk7XG59XG5cbmZ1bmN0aW9uIHRzTmV4dFRva2VuQ2FuRm9sbG93TW9kaWZpZXIoKSB7XG4gIC8vIE5vdGU6IFR5cGVTY3JpcHQncyBpbXBsZW1lbnRhdGlvbiBpcyBtdWNoIG1vcmUgY29tcGxpY2F0ZWQgYmVjYXVzZVxuICAvLyBtb3JlIHRoaW5ncyBhcmUgY29uc2lkZXJlZCBtb2RpZmllcnMgdGhlcmUuXG4gIC8vIFRoaXMgaW1wbGVtZW50YXRpb24gb25seSBoYW5kbGVzIG1vZGlmaWVycyBub3QgaGFuZGxlZCBieSBiYWJ5bG9uIGl0c2VsZi4gQW5kIFwic3RhdGljXCIuXG4gIC8vIFRPRE86IFdvdWxkIGJlIG5pY2UgdG8gYXZvaWQgbG9va2FoZWFkLiBXYW50IGEgaGFzTGluZUJyZWFrVXBOZXh0KCkgbWV0aG9kLi4uXG4gIGNvbnN0IHNuYXBzaG90ID0gX2Jhc2Uuc3RhdGUuc25hcHNob3QoKTtcblxuICBfaW5kZXgubmV4dC5jYWxsKHZvaWQgMCwgKTtcbiAgY29uc3QgY2FuRm9sbG93TW9kaWZpZXIgPVxuICAgIChfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuYnJhY2tldEwpIHx8XG4gICAgICBfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuYnJhY2VMKSB8fFxuICAgICAgX2luZGV4Lm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLnN0YXIpIHx8XG4gICAgICBfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuZWxsaXBzaXMpIHx8XG4gICAgICBfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuaGFzaCkgfHxcbiAgICAgIGlzTGl0ZXJhbFByb3BlcnR5TmFtZSgpKSAmJlxuICAgICFfdXRpbC5oYXNQcmVjZWRpbmdMaW5lQnJlYWsuY2FsbCh2b2lkIDAsICk7XG5cbiAgaWYgKGNhbkZvbGxvd01vZGlmaWVyKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gZWxzZSB7XG4gICAgX2Jhc2Uuc3RhdGUucmVzdG9yZUZyb21TbmFwc2hvdChzbmFwc2hvdCk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbiBmdW5jdGlvbiB0c1BhcnNlTW9kaWZpZXJzKGFsbG93ZWRNb2RpZmllcnMpIHtcbiAgd2hpbGUgKHRydWUpIHtcbiAgICBjb25zdCBtb2RpZmllciA9IHRzUGFyc2VNb2RpZmllcihhbGxvd2VkTW9kaWZpZXJzKTtcbiAgICBpZiAobW9kaWZpZXIgPT09IG51bGwpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxufSBleHBvcnRzLnRzUGFyc2VNb2RpZmllcnMgPSB0c1BhcnNlTW9kaWZpZXJzO1xuXG4vKiogUGFyc2VzIGEgbW9kaWZpZXIgbWF0Y2hpbmcgb25lIHRoZSBnaXZlbiBtb2RpZmllciBuYW1lcy4gKi9cbiBmdW5jdGlvbiB0c1BhcnNlTW9kaWZpZXIoXG4gIGFsbG93ZWRNb2RpZmllcnMsXG4pIHtcbiAgaWYgKCFfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUubmFtZSkpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IG1vZGlmaWVyID0gX2Jhc2Uuc3RhdGUuY29udGV4dHVhbEtleXdvcmQ7XG4gIGlmIChhbGxvd2VkTW9kaWZpZXJzLmluZGV4T2YobW9kaWZpZXIpICE9PSAtMSAmJiB0c05leHRUb2tlbkNhbkZvbGxvd01vZGlmaWVyKCkpIHtcbiAgICBzd2l0Y2ggKG1vZGlmaWVyKSB7XG4gICAgICBjYXNlIF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fcmVhZG9ubHk6XG4gICAgICAgIF9iYXNlLnN0YXRlLnRva2Vuc1tfYmFzZS5zdGF0ZS50b2tlbnMubGVuZ3RoIC0gMV0udHlwZSA9IF90eXBlcy5Ub2tlblR5cGUuX3JlYWRvbmx5O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgX2tleXdvcmRzLkNvbnRleHR1YWxLZXl3b3JkLl9hYnN0cmFjdDpcbiAgICAgICAgX2Jhc2Uuc3RhdGUudG9rZW5zW19iYXNlLnN0YXRlLnRva2Vucy5sZW5ndGggLSAxXS50eXBlID0gX3R5cGVzLlRva2VuVHlwZS5fYWJzdHJhY3Q7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX3N0YXRpYzpcbiAgICAgICAgX2Jhc2Uuc3RhdGUudG9rZW5zW19iYXNlLnN0YXRlLnRva2Vucy5sZW5ndGggLSAxXS50eXBlID0gX3R5cGVzLlRva2VuVHlwZS5fc3RhdGljO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgX2tleXdvcmRzLkNvbnRleHR1YWxLZXl3b3JkLl9wdWJsaWM6XG4gICAgICAgIF9iYXNlLnN0YXRlLnRva2Vuc1tfYmFzZS5zdGF0ZS50b2tlbnMubGVuZ3RoIC0gMV0udHlwZSA9IF90eXBlcy5Ub2tlblR5cGUuX3B1YmxpYztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fcHJpdmF0ZTpcbiAgICAgICAgX2Jhc2Uuc3RhdGUudG9rZW5zW19iYXNlLnN0YXRlLnRva2Vucy5sZW5ndGggLSAxXS50eXBlID0gX3R5cGVzLlRva2VuVHlwZS5fcHJpdmF0ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fcHJvdGVjdGVkOlxuICAgICAgICBfYmFzZS5zdGF0ZS50b2tlbnNbX2Jhc2Uuc3RhdGUudG9rZW5zLmxlbmd0aCAtIDFdLnR5cGUgPSBfdHlwZXMuVG9rZW5UeXBlLl9wcm90ZWN0ZWQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX292ZXJyaWRlOlxuICAgICAgICBfYmFzZS5zdGF0ZS50b2tlbnNbX2Jhc2Uuc3RhdGUudG9rZW5zLmxlbmd0aCAtIDFdLnR5cGUgPSBfdHlwZXMuVG9rZW5UeXBlLl9vdmVycmlkZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fZGVjbGFyZTpcbiAgICAgICAgX2Jhc2Uuc3RhdGUudG9rZW5zW19iYXNlLnN0YXRlLnRva2Vucy5sZW5ndGggLSAxXS50eXBlID0gX3R5cGVzLlRva2VuVHlwZS5fZGVjbGFyZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIG1vZGlmaWVyO1xuICB9XG4gIHJldHVybiBudWxsO1xufSBleHBvcnRzLnRzUGFyc2VNb2RpZmllciA9IHRzUGFyc2VNb2RpZmllcjtcblxuZnVuY3Rpb24gdHNQYXJzZUVudGl0eU5hbWUoKSB7XG4gIF9leHByZXNzaW9uLnBhcnNlSWRlbnRpZmllci5jYWxsKHZvaWQgMCwgKTtcbiAgd2hpbGUgKF9pbmRleC5lYXQuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuZG90KSkge1xuICAgIF9leHByZXNzaW9uLnBhcnNlSWRlbnRpZmllci5jYWxsKHZvaWQgMCwgKTtcbiAgfVxufVxuXG5mdW5jdGlvbiB0c1BhcnNlVHlwZVJlZmVyZW5jZSgpIHtcbiAgdHNQYXJzZUVudGl0eU5hbWUoKTtcbiAgaWYgKCFfdXRpbC5oYXNQcmVjZWRpbmdMaW5lQnJlYWsuY2FsbCh2b2lkIDAsICkgJiYgX2luZGV4Lm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmxlc3NUaGFuKSkge1xuICAgIHRzUGFyc2VUeXBlQXJndW1lbnRzKCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gdHNQYXJzZVRoaXNUeXBlUHJlZGljYXRlKCkge1xuICBfaW5kZXgubmV4dC5jYWxsKHZvaWQgMCwgKTtcbiAgdHNQYXJzZVR5cGVBbm5vdGF0aW9uKCk7XG59XG5cbmZ1bmN0aW9uIHRzUGFyc2VUaGlzVHlwZU5vZGUoKSB7XG4gIF9pbmRleC5uZXh0LmNhbGwodm9pZCAwLCApO1xufVxuXG5mdW5jdGlvbiB0c1BhcnNlVHlwZVF1ZXJ5KCkge1xuICBfdXRpbC5leHBlY3QuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuX3R5cGVvZik7XG4gIGlmIChfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuX2ltcG9ydCkpIHtcbiAgICB0c1BhcnNlSW1wb3J0VHlwZSgpO1xuICB9IGVsc2Uge1xuICAgIHRzUGFyc2VFbnRpdHlOYW1lKCk7XG4gIH1cbiAgaWYgKCFfdXRpbC5oYXNQcmVjZWRpbmdMaW5lQnJlYWsuY2FsbCh2b2lkIDAsICkgJiYgX2luZGV4Lm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmxlc3NUaGFuKSkge1xuICAgIHRzUGFyc2VUeXBlQXJndW1lbnRzKCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gdHNQYXJzZUltcG9ydFR5cGUoKSB7XG4gIF91dGlsLmV4cGVjdC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5faW1wb3J0KTtcbiAgX3V0aWwuZXhwZWN0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLnBhcmVuTCk7XG4gIF91dGlsLmV4cGVjdC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5zdHJpbmcpO1xuICBfdXRpbC5leHBlY3QuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUucGFyZW5SKTtcbiAgaWYgKF9pbmRleC5lYXQuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuZG90KSkge1xuICAgIHRzUGFyc2VFbnRpdHlOYW1lKCk7XG4gIH1cbiAgaWYgKF9pbmRleC5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5sZXNzVGhhbikpIHtcbiAgICB0c1BhcnNlVHlwZUFyZ3VtZW50cygpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHRzUGFyc2VUeXBlUGFyYW1ldGVyKCkge1xuICBfaW5kZXguZWF0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLl9jb25zdCk7XG4gIGNvbnN0IGhhZEluID0gX2luZGV4LmVhdC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5faW4pO1xuICBjb25zdCBoYWRPdXQgPSBfdXRpbC5lYXRDb250ZXh0dWFsLmNhbGwodm9pZCAwLCBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX291dCk7XG4gIF9pbmRleC5lYXQuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuX2NvbnN0KTtcbiAgaWYgKChoYWRJbiB8fCBoYWRPdXQpICYmICFfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUubmFtZSkpIHtcbiAgICAvLyBUaGUgXCJpblwiIG9yIFwib3V0XCIga2V5d29yZCBtdXN0IGhhdmUgYWN0dWFsbHkgYmVlbiB0aGUgdHlwZSBwYXJhbWV0ZXJcbiAgICAvLyBuYW1lLCBzbyBzZXQgaXQgYXMgdGhlIG5hbWUuXG4gICAgX2Jhc2Uuc3RhdGUudG9rZW5zW19iYXNlLnN0YXRlLnRva2Vucy5sZW5ndGggLSAxXS50eXBlID0gX3R5cGVzLlRva2VuVHlwZS5uYW1lO1xuICB9IGVsc2Uge1xuICAgIF9leHByZXNzaW9uLnBhcnNlSWRlbnRpZmllci5jYWxsKHZvaWQgMCwgKTtcbiAgfVxuXG4gIGlmIChfaW5kZXguZWF0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLl9leHRlbmRzKSkge1xuICAgIHRzUGFyc2VUeXBlKCk7XG4gIH1cbiAgaWYgKF9pbmRleC5lYXQuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuZXEpKSB7XG4gICAgdHNQYXJzZVR5cGUoKTtcbiAgfVxufVxuXG4gZnVuY3Rpb24gdHNUcnlQYXJzZVR5cGVQYXJhbWV0ZXJzKCkge1xuICBpZiAoX2luZGV4Lm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmxlc3NUaGFuKSkge1xuICAgIHRzUGFyc2VUeXBlUGFyYW1ldGVycygpO1xuICB9XG59IGV4cG9ydHMudHNUcnlQYXJzZVR5cGVQYXJhbWV0ZXJzID0gdHNUcnlQYXJzZVR5cGVQYXJhbWV0ZXJzO1xuXG5mdW5jdGlvbiB0c1BhcnNlVHlwZVBhcmFtZXRlcnMoKSB7XG4gIGNvbnN0IG9sZElzVHlwZSA9IF9pbmRleC5wdXNoVHlwZUNvbnRleHQuY2FsbCh2b2lkIDAsIDApO1xuICBpZiAoX2luZGV4Lm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmxlc3NUaGFuKSB8fCBfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUudHlwZVBhcmFtZXRlclN0YXJ0KSkge1xuICAgIF9pbmRleC5uZXh0LmNhbGwodm9pZCAwLCApO1xuICB9IGVsc2Uge1xuICAgIF91dGlsLnVuZXhwZWN0ZWQuY2FsbCh2b2lkIDAsICk7XG4gIH1cblxuICB3aGlsZSAoIV9pbmRleC5lYXQuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuZ3JlYXRlclRoYW4pICYmICFfYmFzZS5zdGF0ZS5lcnJvcikge1xuICAgIHRzUGFyc2VUeXBlUGFyYW1ldGVyKCk7XG4gICAgX2luZGV4LmVhdC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5jb21tYSk7XG4gIH1cbiAgX2luZGV4LnBvcFR5cGVDb250ZXh0LmNhbGwodm9pZCAwLCBvbGRJc1R5cGUpO1xufVxuXG4vLyBOb3RlOiBJbiBUeXBlU2NyaXB0IGltcGxlbWVudGF0aW9uIHdlIG11c3QgcHJvdmlkZSBgeWllbGRDb250ZXh0YCBhbmQgYGF3YWl0Q29udGV4dGAsXG4vLyBidXQgaGVyZSBpdCdzIGFsd2F5cyBmYWxzZSwgYmVjYXVzZSB0aGlzIGlzIG9ubHkgdXNlZCBmb3IgdHlwZXMuXG5mdW5jdGlvbiB0c0ZpbGxTaWduYXR1cmUocmV0dXJuVG9rZW4pIHtcbiAgLy8gQXJyb3cgZm5zICptdXN0KiBoYXZlIHJldHVybiB0b2tlbiAoYD0+YCkuIE5vcm1hbCBmdW5jdGlvbnMgY2FuIG9taXQgaXQuXG4gIGNvbnN0IHJldHVyblRva2VuUmVxdWlyZWQgPSByZXR1cm5Ub2tlbiA9PT0gX3R5cGVzLlRva2VuVHlwZS5hcnJvdztcbiAgdHNUcnlQYXJzZVR5cGVQYXJhbWV0ZXJzKCk7XG4gIF91dGlsLmV4cGVjdC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5wYXJlbkwpO1xuICAvLyBDcmVhdGUgYSBzY29wZSBldmVuIHRob3VnaCB3ZSdyZSBkb2luZyB0eXBlIHBhcnNpbmcgc28gd2UgZG9uJ3QgYWNjaWRlbnRhbGx5XG4gIC8vIHRyZWF0IHBhcmFtcyBhcyB0b3AtbGV2ZWwgYmluZGluZ3MuXG4gIF9iYXNlLnN0YXRlLnNjb3BlRGVwdGgrKztcbiAgdHNQYXJzZUJpbmRpbmdMaXN0Rm9yU2lnbmF0dXJlKGZhbHNlIC8qIGlzQmxvY2tTY29wZSAqLyk7XG4gIF9iYXNlLnN0YXRlLnNjb3BlRGVwdGgtLTtcbiAgaWYgKHJldHVyblRva2VuUmVxdWlyZWQpIHtcbiAgICB0c1BhcnNlVHlwZU9yVHlwZVByZWRpY2F0ZUFubm90YXRpb24ocmV0dXJuVG9rZW4pO1xuICB9IGVsc2UgaWYgKF9pbmRleC5tYXRjaC5jYWxsKHZvaWQgMCwgcmV0dXJuVG9rZW4pKSB7XG4gICAgdHNQYXJzZVR5cGVPclR5cGVQcmVkaWNhdGVBbm5vdGF0aW9uKHJldHVyblRva2VuKTtcbiAgfVxufVxuXG5mdW5jdGlvbiB0c1BhcnNlQmluZGluZ0xpc3RGb3JTaWduYXR1cmUoaXNCbG9ja1Njb3BlKSB7XG4gIF9sdmFsLnBhcnNlQmluZGluZ0xpc3QuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUucGFyZW5SLCBpc0Jsb2NrU2NvcGUpO1xufVxuXG5mdW5jdGlvbiB0c1BhcnNlVHlwZU1lbWJlclNlbWljb2xvbigpIHtcbiAgaWYgKCFfaW5kZXguZWF0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmNvbW1hKSkge1xuICAgIF91dGlsLnNlbWljb2xvbi5jYWxsKHZvaWQgMCwgKTtcbiAgfVxufVxuXG5mdW5jdGlvbiB0c1BhcnNlU2lnbmF0dXJlTWVtYmVyKCkge1xuICB0c0ZpbGxTaWduYXR1cmUoX3R5cGVzLlRva2VuVHlwZS5jb2xvbik7XG4gIHRzUGFyc2VUeXBlTWVtYmVyU2VtaWNvbG9uKCk7XG59XG5cbmZ1bmN0aW9uIHRzSXNVbmFtYmlndW91c2x5SW5kZXhTaWduYXR1cmUoKSB7XG4gIGNvbnN0IHNuYXBzaG90ID0gX2Jhc2Uuc3RhdGUuc25hcHNob3QoKTtcbiAgX2luZGV4Lm5leHQuY2FsbCh2b2lkIDAsICk7IC8vIFNraXAgJ3snXG4gIGNvbnN0IGlzSW5kZXhTaWduYXR1cmUgPSBfaW5kZXguZWF0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLm5hbWUpICYmIF9pbmRleC5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5jb2xvbik7XG4gIF9iYXNlLnN0YXRlLnJlc3RvcmVGcm9tU25hcHNob3Qoc25hcHNob3QpO1xuICByZXR1cm4gaXNJbmRleFNpZ25hdHVyZTtcbn1cblxuZnVuY3Rpb24gdHNUcnlQYXJzZUluZGV4U2lnbmF0dXJlKCkge1xuICBpZiAoIShfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuYnJhY2tldEwpICYmIHRzSXNVbmFtYmlndW91c2x5SW5kZXhTaWduYXR1cmUoKSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBvbGRJc1R5cGUgPSBfaW5kZXgucHVzaFR5cGVDb250ZXh0LmNhbGwodm9pZCAwLCAwKTtcblxuICBfdXRpbC5leHBlY3QuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuYnJhY2tldEwpO1xuICBfZXhwcmVzc2lvbi5wYXJzZUlkZW50aWZpZXIuY2FsbCh2b2lkIDAsICk7XG4gIHRzUGFyc2VUeXBlQW5ub3RhdGlvbigpO1xuICBfdXRpbC5leHBlY3QuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuYnJhY2tldFIpO1xuXG4gIHRzVHJ5UGFyc2VUeXBlQW5ub3RhdGlvbigpO1xuICB0c1BhcnNlVHlwZU1lbWJlclNlbWljb2xvbigpO1xuXG4gIF9pbmRleC5wb3BUeXBlQ29udGV4dC5jYWxsKHZvaWQgMCwgb2xkSXNUeXBlKTtcbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIHRzUGFyc2VQcm9wZXJ0eU9yTWV0aG9kU2lnbmF0dXJlKGlzUmVhZG9ubHkpIHtcbiAgX2luZGV4LmVhdC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5xdWVzdGlvbik7XG5cbiAgaWYgKCFpc1JlYWRvbmx5ICYmIChfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUucGFyZW5MKSB8fCBfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUubGVzc1RoYW4pKSkge1xuICAgIHRzRmlsbFNpZ25hdHVyZShfdHlwZXMuVG9rZW5UeXBlLmNvbG9uKTtcbiAgICB0c1BhcnNlVHlwZU1lbWJlclNlbWljb2xvbigpO1xuICB9IGVsc2Uge1xuICAgIHRzVHJ5UGFyc2VUeXBlQW5ub3RhdGlvbigpO1xuICAgIHRzUGFyc2VUeXBlTWVtYmVyU2VtaWNvbG9uKCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gdHNQYXJzZVR5cGVNZW1iZXIoKSB7XG4gIGlmIChfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUucGFyZW5MKSB8fCBfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUubGVzc1RoYW4pKSB7XG4gICAgLy8gY2FsbCBzaWduYXR1cmVcbiAgICB0c1BhcnNlU2lnbmF0dXJlTWVtYmVyKCk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuX25ldykpIHtcbiAgICBfaW5kZXgubmV4dC5jYWxsKHZvaWQgMCwgKTtcbiAgICBpZiAoX2luZGV4Lm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLnBhcmVuTCkgfHwgX2luZGV4Lm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmxlc3NUaGFuKSkge1xuICAgICAgLy8gY29uc3RydWN0b3Igc2lnbmF0dXJlXG4gICAgICB0c1BhcnNlU2lnbmF0dXJlTWVtYmVyKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRzUGFyc2VQcm9wZXJ0eU9yTWV0aG9kU2lnbmF0dXJlKGZhbHNlKTtcbiAgICB9XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IHJlYWRvbmx5ID0gISF0c1BhcnNlTW9kaWZpZXIoW19rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fcmVhZG9ubHldKTtcblxuICBjb25zdCBmb3VuZCA9IHRzVHJ5UGFyc2VJbmRleFNpZ25hdHVyZSgpO1xuICBpZiAoZm91bmQpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKFxuICAgIChfdXRpbC5pc0NvbnRleHR1YWwuY2FsbCh2b2lkIDAsIF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fZ2V0KSB8fCBfdXRpbC5pc0NvbnRleHR1YWwuY2FsbCh2b2lkIDAsIF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fc2V0KSkgJiZcbiAgICB0c05leHRUb2tlbkNhbkZvbGxvd01vZGlmaWVyKClcbiAgKSB7XG4gICAgLy8gVGhpcyBpcyBhIGdldHRlci9zZXR0ZXIgb24gYSB0eXBlLiBUaGUgdHNOZXh0VG9rZW5DYW5Gb2xsb3dNb2RpZmllclxuICAgIC8vIGZ1bmN0aW9uIGFscmVhZHkgY2FsbGVkIG5leHQoKSBmb3IgdXMsIHNvIGNvbnRpbnVlIHBhcnNpbmcgdGhlIG5hbWUuXG4gIH1cbiAgX2V4cHJlc3Npb24ucGFyc2VQcm9wZXJ0eU5hbWUuY2FsbCh2b2lkIDAsIC0xIC8qIFR5cGVzIGRvbid0IG5lZWQgY29udGV4dCBJRHMuICovKTtcbiAgdHNQYXJzZVByb3BlcnR5T3JNZXRob2RTaWduYXR1cmUocmVhZG9ubHkpO1xufVxuXG5mdW5jdGlvbiB0c1BhcnNlVHlwZUxpdGVyYWwoKSB7XG4gIHRzUGFyc2VPYmplY3RUeXBlTWVtYmVycygpO1xufVxuXG5mdW5jdGlvbiB0c1BhcnNlT2JqZWN0VHlwZU1lbWJlcnMoKSB7XG4gIF91dGlsLmV4cGVjdC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5icmFjZUwpO1xuICB3aGlsZSAoIV9pbmRleC5lYXQuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuYnJhY2VSKSAmJiAhX2Jhc2Uuc3RhdGUuZXJyb3IpIHtcbiAgICB0c1BhcnNlVHlwZU1lbWJlcigpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHRzTG9va2FoZWFkSXNTdGFydE9mTWFwcGVkVHlwZSgpIHtcbiAgY29uc3Qgc25hcHNob3QgPSBfYmFzZS5zdGF0ZS5zbmFwc2hvdCgpO1xuICBjb25zdCBpc1N0YXJ0T2ZNYXBwZWRUeXBlID0gdHNJc1N0YXJ0T2ZNYXBwZWRUeXBlKCk7XG4gIF9iYXNlLnN0YXRlLnJlc3RvcmVGcm9tU25hcHNob3Qoc25hcHNob3QpO1xuICByZXR1cm4gaXNTdGFydE9mTWFwcGVkVHlwZTtcbn1cblxuZnVuY3Rpb24gdHNJc1N0YXJ0T2ZNYXBwZWRUeXBlKCkge1xuICBfaW5kZXgubmV4dC5jYWxsKHZvaWQgMCwgKTtcbiAgaWYgKF9pbmRleC5lYXQuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUucGx1cykgfHwgX2luZGV4LmVhdC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5taW51cykpIHtcbiAgICByZXR1cm4gX3V0aWwuaXNDb250ZXh0dWFsLmNhbGwodm9pZCAwLCBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX3JlYWRvbmx5KTtcbiAgfVxuICBpZiAoX3V0aWwuaXNDb250ZXh0dWFsLmNhbGwodm9pZCAwLCBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX3JlYWRvbmx5KSkge1xuICAgIF9pbmRleC5uZXh0LmNhbGwodm9pZCAwLCApO1xuICB9XG4gIGlmICghX2luZGV4Lm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmJyYWNrZXRMKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBfaW5kZXgubmV4dC5jYWxsKHZvaWQgMCwgKTtcbiAgaWYgKCF0c0lzSWRlbnRpZmllcigpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIF9pbmRleC5uZXh0LmNhbGwodm9pZCAwLCApO1xuICByZXR1cm4gX2luZGV4Lm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLl9pbik7XG59XG5cbmZ1bmN0aW9uIHRzUGFyc2VNYXBwZWRUeXBlUGFyYW1ldGVyKCkge1xuICBfZXhwcmVzc2lvbi5wYXJzZUlkZW50aWZpZXIuY2FsbCh2b2lkIDAsICk7XG4gIF91dGlsLmV4cGVjdC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5faW4pO1xuICB0c1BhcnNlVHlwZSgpO1xufVxuXG5mdW5jdGlvbiB0c1BhcnNlTWFwcGVkVHlwZSgpIHtcbiAgX3V0aWwuZXhwZWN0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmJyYWNlTCk7XG4gIGlmIChfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUucGx1cykgfHwgX2luZGV4Lm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLm1pbnVzKSkge1xuICAgIF9pbmRleC5uZXh0LmNhbGwodm9pZCAwLCApO1xuICAgIF91dGlsLmV4cGVjdENvbnRleHR1YWwuY2FsbCh2b2lkIDAsIF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fcmVhZG9ubHkpO1xuICB9IGVsc2Uge1xuICAgIF91dGlsLmVhdENvbnRleHR1YWwuY2FsbCh2b2lkIDAsIF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fcmVhZG9ubHkpO1xuICB9XG4gIF91dGlsLmV4cGVjdC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5icmFja2V0TCk7XG4gIHRzUGFyc2VNYXBwZWRUeXBlUGFyYW1ldGVyKCk7XG4gIGlmIChfdXRpbC5lYXRDb250ZXh0dWFsLmNhbGwodm9pZCAwLCBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX2FzKSkge1xuICAgIHRzUGFyc2VUeXBlKCk7XG4gIH1cbiAgX3V0aWwuZXhwZWN0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmJyYWNrZXRSKTtcbiAgaWYgKF9pbmRleC5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5wbHVzKSB8fCBfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUubWludXMpKSB7XG4gICAgX2luZGV4Lm5leHQuY2FsbCh2b2lkIDAsICk7XG4gICAgX3V0aWwuZXhwZWN0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLnF1ZXN0aW9uKTtcbiAgfSBlbHNlIHtcbiAgICBfaW5kZXguZWF0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLnF1ZXN0aW9uKTtcbiAgfVxuICB0c1RyeVBhcnNlVHlwZSgpO1xuICBfdXRpbC5zZW1pY29sb24uY2FsbCh2b2lkIDAsICk7XG4gIF91dGlsLmV4cGVjdC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5icmFjZVIpO1xufVxuXG5mdW5jdGlvbiB0c1BhcnNlVHVwbGVUeXBlKCkge1xuICBfdXRpbC5leHBlY3QuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuYnJhY2tldEwpO1xuICB3aGlsZSAoIV9pbmRleC5lYXQuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuYnJhY2tldFIpICYmICFfYmFzZS5zdGF0ZS5lcnJvcikge1xuICAgIC8vIERvIG5vdCB2YWxpZGF0ZSBwcmVzZW5jZSBvZiBlaXRoZXIgbm9uZSBvciBvbmx5IGxhYmVsZWQgZWxlbWVudHNcbiAgICB0c1BhcnNlVHVwbGVFbGVtZW50VHlwZSgpO1xuICAgIF9pbmRleC5lYXQuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuY29tbWEpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHRzUGFyc2VUdXBsZUVsZW1lbnRUeXBlKCkge1xuICAvLyBwYXJzZXMgYC4uLlRzVHlwZVtdYFxuICBpZiAoX2luZGV4LmVhdC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5lbGxpcHNpcykpIHtcbiAgICB0c1BhcnNlVHlwZSgpO1xuICB9IGVsc2Uge1xuICAgIC8vIHBhcnNlcyBgVHNUeXBlP2BcbiAgICB0c1BhcnNlVHlwZSgpO1xuICAgIF9pbmRleC5lYXQuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUucXVlc3Rpb24pO1xuICB9XG5cbiAgLy8gVGhlIHR5cGUgd2UgcGFyc2VkIGFib3ZlIHdhcyBhY3R1YWxseSBhIGxhYmVsXG4gIGlmIChfaW5kZXguZWF0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmNvbG9uKSkge1xuICAgIC8vIExhYmVsZWQgdHVwbGUgdHlwZXMgbXVzdCBhZmZpeCB0aGUgbGFiZWwgd2l0aCBgLi4uYCBvciBgP2AsIHNvIG5vIG5lZWQgdG8gaGFuZGxlIHRob3NlIGhlcmVcbiAgICB0c1BhcnNlVHlwZSgpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHRzUGFyc2VQYXJlbnRoZXNpemVkVHlwZSgpIHtcbiAgX3V0aWwuZXhwZWN0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLnBhcmVuTCk7XG4gIHRzUGFyc2VUeXBlKCk7XG4gIF91dGlsLmV4cGVjdC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5wYXJlblIpO1xufVxuXG5mdW5jdGlvbiB0c1BhcnNlVGVtcGxhdGVMaXRlcmFsVHlwZSgpIHtcbiAgLy8gRmluaXNoIGAsIHJlYWQgcXVhc2lcbiAgX2luZGV4Lm5leHRUZW1wbGF0ZVRva2VuLmNhbGwodm9pZCAwLCApO1xuICAvLyBGaW5pc2ggcXVhc2ksIHJlYWQgJHtcbiAgX2luZGV4Lm5leHRUZW1wbGF0ZVRva2VuLmNhbGwodm9pZCAwLCApO1xuICB3aGlsZSAoIV9pbmRleC5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5iYWNrUXVvdGUpICYmICFfYmFzZS5zdGF0ZS5lcnJvcikge1xuICAgIF91dGlsLmV4cGVjdC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5kb2xsYXJCcmFjZUwpO1xuICAgIHRzUGFyc2VUeXBlKCk7XG4gICAgLy8gRmluaXNoIH0sIHJlYWQgcXVhc2lcbiAgICBfaW5kZXgubmV4dFRlbXBsYXRlVG9rZW4uY2FsbCh2b2lkIDAsICk7XG4gICAgLy8gRmluaXNoIHF1YXNpLCByZWFkIGVpdGhlciAkeyBvciBgXG4gICAgX2luZGV4Lm5leHRUZW1wbGF0ZVRva2VuLmNhbGwodm9pZCAwLCApO1xuICB9XG4gIF9pbmRleC5uZXh0LmNhbGwodm9pZCAwLCApO1xufVxuXG52YXIgRnVuY3Rpb25UeXBlOyAoZnVuY3Rpb24gKEZ1bmN0aW9uVHlwZSkge1xuICBjb25zdCBUU0Z1bmN0aW9uVHlwZSA9IDA7IEZ1bmN0aW9uVHlwZVtGdW5jdGlvblR5cGVbXCJUU0Z1bmN0aW9uVHlwZVwiXSA9IFRTRnVuY3Rpb25UeXBlXSA9IFwiVFNGdW5jdGlvblR5cGVcIjtcbiAgY29uc3QgVFNDb25zdHJ1Y3RvclR5cGUgPSBUU0Z1bmN0aW9uVHlwZSArIDE7IEZ1bmN0aW9uVHlwZVtGdW5jdGlvblR5cGVbXCJUU0NvbnN0cnVjdG9yVHlwZVwiXSA9IFRTQ29uc3RydWN0b3JUeXBlXSA9IFwiVFNDb25zdHJ1Y3RvclR5cGVcIjtcbiAgY29uc3QgVFNBYnN0cmFjdENvbnN0cnVjdG9yVHlwZSA9IFRTQ29uc3RydWN0b3JUeXBlICsgMTsgRnVuY3Rpb25UeXBlW0Z1bmN0aW9uVHlwZVtcIlRTQWJzdHJhY3RDb25zdHJ1Y3RvclR5cGVcIl0gPSBUU0Fic3RyYWN0Q29uc3RydWN0b3JUeXBlXSA9IFwiVFNBYnN0cmFjdENvbnN0cnVjdG9yVHlwZVwiO1xufSkoRnVuY3Rpb25UeXBlIHx8IChGdW5jdGlvblR5cGUgPSB7fSkpO1xuXG5mdW5jdGlvbiB0c1BhcnNlRnVuY3Rpb25PckNvbnN0cnVjdG9yVHlwZSh0eXBlKSB7XG4gIGlmICh0eXBlID09PSBGdW5jdGlvblR5cGUuVFNBYnN0cmFjdENvbnN0cnVjdG9yVHlwZSkge1xuICAgIF91dGlsLmV4cGVjdENvbnRleHR1YWwuY2FsbCh2b2lkIDAsIF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fYWJzdHJhY3QpO1xuICB9XG4gIGlmICh0eXBlID09PSBGdW5jdGlvblR5cGUuVFNDb25zdHJ1Y3RvclR5cGUgfHwgdHlwZSA9PT0gRnVuY3Rpb25UeXBlLlRTQWJzdHJhY3RDb25zdHJ1Y3RvclR5cGUpIHtcbiAgICBfdXRpbC5leHBlY3QuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuX25ldyk7XG4gIH1cbiAgY29uc3Qgb2xkSW5EaXNhbGxvd0NvbmRpdGlvbmFsVHlwZXNDb250ZXh0ID0gX2Jhc2Uuc3RhdGUuaW5EaXNhbGxvd0NvbmRpdGlvbmFsVHlwZXNDb250ZXh0O1xuICBfYmFzZS5zdGF0ZS5pbkRpc2FsbG93Q29uZGl0aW9uYWxUeXBlc0NvbnRleHQgPSBmYWxzZTtcbiAgdHNGaWxsU2lnbmF0dXJlKF90eXBlcy5Ub2tlblR5cGUuYXJyb3cpO1xuICBfYmFzZS5zdGF0ZS5pbkRpc2FsbG93Q29uZGl0aW9uYWxUeXBlc0NvbnRleHQgPSBvbGRJbkRpc2FsbG93Q29uZGl0aW9uYWxUeXBlc0NvbnRleHQ7XG59XG5cbmZ1bmN0aW9uIHRzUGFyc2VOb25BcnJheVR5cGUoKSB7XG4gIHN3aXRjaCAoX2Jhc2Uuc3RhdGUudHlwZSkge1xuICAgIGNhc2UgX3R5cGVzLlRva2VuVHlwZS5uYW1lOlxuICAgICAgdHNQYXJzZVR5cGVSZWZlcmVuY2UoKTtcbiAgICAgIHJldHVybjtcbiAgICBjYXNlIF90eXBlcy5Ub2tlblR5cGUuX3ZvaWQ6XG4gICAgY2FzZSBfdHlwZXMuVG9rZW5UeXBlLl9udWxsOlxuICAgICAgX2luZGV4Lm5leHQuY2FsbCh2b2lkIDAsICk7XG4gICAgICByZXR1cm47XG4gICAgY2FzZSBfdHlwZXMuVG9rZW5UeXBlLnN0cmluZzpcbiAgICBjYXNlIF90eXBlcy5Ub2tlblR5cGUubnVtOlxuICAgIGNhc2UgX3R5cGVzLlRva2VuVHlwZS5iaWdpbnQ6XG4gICAgY2FzZSBfdHlwZXMuVG9rZW5UeXBlLmRlY2ltYWw6XG4gICAgY2FzZSBfdHlwZXMuVG9rZW5UeXBlLl90cnVlOlxuICAgIGNhc2UgX3R5cGVzLlRva2VuVHlwZS5fZmFsc2U6XG4gICAgICBfZXhwcmVzc2lvbi5wYXJzZUxpdGVyYWwuY2FsbCh2b2lkIDAsICk7XG4gICAgICByZXR1cm47XG4gICAgY2FzZSBfdHlwZXMuVG9rZW5UeXBlLm1pbnVzOlxuICAgICAgX2luZGV4Lm5leHQuY2FsbCh2b2lkIDAsICk7XG4gICAgICBfZXhwcmVzc2lvbi5wYXJzZUxpdGVyYWwuY2FsbCh2b2lkIDAsICk7XG4gICAgICByZXR1cm47XG4gICAgY2FzZSBfdHlwZXMuVG9rZW5UeXBlLl90aGlzOiB7XG4gICAgICB0c1BhcnNlVGhpc1R5cGVOb2RlKCk7XG4gICAgICBpZiAoX3V0aWwuaXNDb250ZXh0dWFsLmNhbGwodm9pZCAwLCBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX2lzKSAmJiAhX3V0aWwuaGFzUHJlY2VkaW5nTGluZUJyZWFrLmNhbGwodm9pZCAwLCApKSB7XG4gICAgICAgIHRzUGFyc2VUaGlzVHlwZVByZWRpY2F0ZSgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjYXNlIF90eXBlcy5Ub2tlblR5cGUuX3R5cGVvZjpcbiAgICAgIHRzUGFyc2VUeXBlUXVlcnkoKTtcbiAgICAgIHJldHVybjtcbiAgICBjYXNlIF90eXBlcy5Ub2tlblR5cGUuX2ltcG9ydDpcbiAgICAgIHRzUGFyc2VJbXBvcnRUeXBlKCk7XG4gICAgICByZXR1cm47XG4gICAgY2FzZSBfdHlwZXMuVG9rZW5UeXBlLmJyYWNlTDpcbiAgICAgIGlmICh0c0xvb2thaGVhZElzU3RhcnRPZk1hcHBlZFR5cGUoKSkge1xuICAgICAgICB0c1BhcnNlTWFwcGVkVHlwZSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdHNQYXJzZVR5cGVMaXRlcmFsKCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgY2FzZSBfdHlwZXMuVG9rZW5UeXBlLmJyYWNrZXRMOlxuICAgICAgdHNQYXJzZVR1cGxlVHlwZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIGNhc2UgX3R5cGVzLlRva2VuVHlwZS5wYXJlbkw6XG4gICAgICB0c1BhcnNlUGFyZW50aGVzaXplZFR5cGUoKTtcbiAgICAgIHJldHVybjtcbiAgICBjYXNlIF90eXBlcy5Ub2tlblR5cGUuYmFja1F1b3RlOlxuICAgICAgdHNQYXJzZVRlbXBsYXRlTGl0ZXJhbFR5cGUoKTtcbiAgICAgIHJldHVybjtcbiAgICBkZWZhdWx0OlxuICAgICAgaWYgKF9iYXNlLnN0YXRlLnR5cGUgJiBfdHlwZXMuVG9rZW5UeXBlLklTX0tFWVdPUkQpIHtcbiAgICAgICAgX2luZGV4Lm5leHQuY2FsbCh2b2lkIDAsICk7XG4gICAgICAgIF9iYXNlLnN0YXRlLnRva2Vuc1tfYmFzZS5zdGF0ZS50b2tlbnMubGVuZ3RoIC0gMV0udHlwZSA9IF90eXBlcy5Ub2tlblR5cGUubmFtZTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gIH1cblxuICBfdXRpbC51bmV4cGVjdGVkLmNhbGwodm9pZCAwLCApO1xufVxuXG5mdW5jdGlvbiB0c1BhcnNlQXJyYXlUeXBlT3JIaWdoZXIoKSB7XG4gIHRzUGFyc2VOb25BcnJheVR5cGUoKTtcbiAgd2hpbGUgKCFfdXRpbC5oYXNQcmVjZWRpbmdMaW5lQnJlYWsuY2FsbCh2b2lkIDAsICkgJiYgX2luZGV4LmVhdC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5icmFja2V0TCkpIHtcbiAgICBpZiAoIV9pbmRleC5lYXQuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuYnJhY2tldFIpKSB7XG4gICAgICAvLyBJZiB3ZSBoaXQgXSBpbW1lZGlhdGVseSwgdGhpcyBpcyBhbiBhcnJheSB0eXBlLCBvdGhlcndpc2UgaXQncyBhbiBpbmRleGVkIGFjY2VzcyB0eXBlLlxuICAgICAgdHNQYXJzZVR5cGUoKTtcbiAgICAgIF91dGlsLmV4cGVjdC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5icmFja2V0Uik7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHRzUGFyc2VJbmZlclR5cGUoKSB7XG4gIF91dGlsLmV4cGVjdENvbnRleHR1YWwuY2FsbCh2b2lkIDAsIF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5faW5mZXIpO1xuICBfZXhwcmVzc2lvbi5wYXJzZUlkZW50aWZpZXIuY2FsbCh2b2lkIDAsICk7XG4gIGlmIChfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuX2V4dGVuZHMpKSB7XG4gICAgLy8gSW5mZXIgdHlwZSBjb25zdHJhaW50cyBpbnRyb2R1Y2UgYW4gYW1iaWd1aXR5IGFib3V0IHdoZXRoZXIgdGhlIFwiZXh0ZW5kc1wiXG4gICAgLy8gaXMgYSBjb25zdHJhaW50IGZvciB0aGlzIGluZmVyIHR5cGUgb3IgaXMgYW5vdGhlciBjb25kaXRpb25hbCB0eXBlLlxuICAgIGNvbnN0IHNuYXBzaG90ID0gX2Jhc2Uuc3RhdGUuc25hcHNob3QoKTtcbiAgICBfdXRpbC5leHBlY3QuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuX2V4dGVuZHMpO1xuICAgIGNvbnN0IG9sZEluRGlzYWxsb3dDb25kaXRpb25hbFR5cGVzQ29udGV4dCA9IF9iYXNlLnN0YXRlLmluRGlzYWxsb3dDb25kaXRpb25hbFR5cGVzQ29udGV4dDtcbiAgICBfYmFzZS5zdGF0ZS5pbkRpc2FsbG93Q29uZGl0aW9uYWxUeXBlc0NvbnRleHQgPSB0cnVlO1xuICAgIHRzUGFyc2VUeXBlKCk7XG4gICAgX2Jhc2Uuc3RhdGUuaW5EaXNhbGxvd0NvbmRpdGlvbmFsVHlwZXNDb250ZXh0ID0gb2xkSW5EaXNhbGxvd0NvbmRpdGlvbmFsVHlwZXNDb250ZXh0O1xuICAgIGlmIChfYmFzZS5zdGF0ZS5lcnJvciB8fCAoIV9iYXNlLnN0YXRlLmluRGlzYWxsb3dDb25kaXRpb25hbFR5cGVzQ29udGV4dCAmJiBfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUucXVlc3Rpb24pKSkge1xuICAgICAgX2Jhc2Uuc3RhdGUucmVzdG9yZUZyb21TbmFwc2hvdChzbmFwc2hvdCk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHRzUGFyc2VUeXBlT3BlcmF0b3JPckhpZ2hlcigpIHtcbiAgaWYgKFxuICAgIF91dGlsLmlzQ29udGV4dHVhbC5jYWxsKHZvaWQgMCwgX2tleXdvcmRzLkNvbnRleHR1YWxLZXl3b3JkLl9rZXlvZikgfHxcbiAgICBfdXRpbC5pc0NvbnRleHR1YWwuY2FsbCh2b2lkIDAsIF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fdW5pcXVlKSB8fFxuICAgIF91dGlsLmlzQ29udGV4dHVhbC5jYWxsKHZvaWQgMCwgX2tleXdvcmRzLkNvbnRleHR1YWxLZXl3b3JkLl9yZWFkb25seSlcbiAgKSB7XG4gICAgX2luZGV4Lm5leHQuY2FsbCh2b2lkIDAsICk7XG4gICAgdHNQYXJzZVR5cGVPcGVyYXRvck9ySGlnaGVyKCk7XG4gIH0gZWxzZSBpZiAoX3V0aWwuaXNDb250ZXh0dWFsLmNhbGwodm9pZCAwLCBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX2luZmVyKSkge1xuICAgIHRzUGFyc2VJbmZlclR5cGUoKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBvbGRJbkRpc2FsbG93Q29uZGl0aW9uYWxUeXBlc0NvbnRleHQgPSBfYmFzZS5zdGF0ZS5pbkRpc2FsbG93Q29uZGl0aW9uYWxUeXBlc0NvbnRleHQ7XG4gICAgX2Jhc2Uuc3RhdGUuaW5EaXNhbGxvd0NvbmRpdGlvbmFsVHlwZXNDb250ZXh0ID0gZmFsc2U7XG4gICAgdHNQYXJzZUFycmF5VHlwZU9ySGlnaGVyKCk7XG4gICAgX2Jhc2Uuc3RhdGUuaW5EaXNhbGxvd0NvbmRpdGlvbmFsVHlwZXNDb250ZXh0ID0gb2xkSW5EaXNhbGxvd0NvbmRpdGlvbmFsVHlwZXNDb250ZXh0O1xuICB9XG59XG5cbmZ1bmN0aW9uIHRzUGFyc2VJbnRlcnNlY3Rpb25UeXBlT3JIaWdoZXIoKSB7XG4gIF9pbmRleC5lYXQuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuYml0d2lzZUFORCk7XG4gIHRzUGFyc2VUeXBlT3BlcmF0b3JPckhpZ2hlcigpO1xuICBpZiAoX2luZGV4Lm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmJpdHdpc2VBTkQpKSB7XG4gICAgd2hpbGUgKF9pbmRleC5lYXQuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuYml0d2lzZUFORCkpIHtcbiAgICAgIHRzUGFyc2VUeXBlT3BlcmF0b3JPckhpZ2hlcigpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiB0c1BhcnNlVW5pb25UeXBlT3JIaWdoZXIoKSB7XG4gIF9pbmRleC5lYXQuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuYml0d2lzZU9SKTtcbiAgdHNQYXJzZUludGVyc2VjdGlvblR5cGVPckhpZ2hlcigpO1xuICBpZiAoX2luZGV4Lm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmJpdHdpc2VPUikpIHtcbiAgICB3aGlsZSAoX2luZGV4LmVhdC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5iaXR3aXNlT1IpKSB7XG4gICAgICB0c1BhcnNlSW50ZXJzZWN0aW9uVHlwZU9ySGlnaGVyKCk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHRzSXNTdGFydE9mRnVuY3Rpb25UeXBlKCkge1xuICBpZiAoX2luZGV4Lm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmxlc3NUaGFuKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUucGFyZW5MKSAmJiB0c0xvb2thaGVhZElzVW5hbWJpZ3VvdXNseVN0YXJ0T2ZGdW5jdGlvblR5cGUoKTtcbn1cblxuZnVuY3Rpb24gdHNTa2lwUGFyYW1ldGVyU3RhcnQoKSB7XG4gIGlmIChfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUubmFtZSkgfHwgX2luZGV4Lm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLl90aGlzKSkge1xuICAgIF9pbmRleC5uZXh0LmNhbGwodm9pZCAwLCApO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIC8vIElmIHRoaXMgaXMgYSBwb3NzaWJsZSBhcnJheS9vYmplY3QgZGVzdHJ1Y3R1cmUsIHdhbGsgdG8gdGhlIG1hdGNoaW5nIGJyYWNrZXQvYnJhY2UuXG4gIC8vIFRoZSBuZXh0IHRva2VuIGFmdGVyIHdpbGwgdGVsbCB1cyBkZWZpbml0aXZlbHkgd2hldGhlciB0aGlzIGlzIGEgZnVuY3Rpb24gcGFyYW0uXG4gIGlmIChfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuYnJhY2VMKSB8fCBfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuYnJhY2tldEwpKSB7XG4gICAgbGV0IGRlcHRoID0gMTtcbiAgICBfaW5kZXgubmV4dC5jYWxsKHZvaWQgMCwgKTtcbiAgICB3aGlsZSAoZGVwdGggPiAwICYmICFfYmFzZS5zdGF0ZS5lcnJvcikge1xuICAgICAgaWYgKF9pbmRleC5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5icmFjZUwpIHx8IF9pbmRleC5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5icmFja2V0TCkpIHtcbiAgICAgICAgZGVwdGgrKztcbiAgICAgIH0gZWxzZSBpZiAoX2luZGV4Lm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmJyYWNlUikgfHwgX2luZGV4Lm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmJyYWNrZXRSKSkge1xuICAgICAgICBkZXB0aC0tO1xuICAgICAgfVxuICAgICAgX2luZGV4Lm5leHQuY2FsbCh2b2lkIDAsICk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gdHNMb29rYWhlYWRJc1VuYW1iaWd1b3VzbHlTdGFydE9mRnVuY3Rpb25UeXBlKCkge1xuICBjb25zdCBzbmFwc2hvdCA9IF9iYXNlLnN0YXRlLnNuYXBzaG90KCk7XG4gIGNvbnN0IGlzVW5hbWJpZ3VvdXNseVN0YXJ0T2ZGdW5jdGlvblR5cGUgPSB0c0lzVW5hbWJpZ3VvdXNseVN0YXJ0T2ZGdW5jdGlvblR5cGUoKTtcbiAgX2Jhc2Uuc3RhdGUucmVzdG9yZUZyb21TbmFwc2hvdChzbmFwc2hvdCk7XG4gIHJldHVybiBpc1VuYW1iaWd1b3VzbHlTdGFydE9mRnVuY3Rpb25UeXBlO1xufVxuXG5mdW5jdGlvbiB0c0lzVW5hbWJpZ3VvdXNseVN0YXJ0T2ZGdW5jdGlvblR5cGUoKSB7XG4gIF9pbmRleC5uZXh0LmNhbGwodm9pZCAwLCApO1xuICBpZiAoX2luZGV4Lm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLnBhcmVuUikgfHwgX2luZGV4Lm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmVsbGlwc2lzKSkge1xuICAgIC8vICggKVxuICAgIC8vICggLi4uXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKHRzU2tpcFBhcmFtZXRlclN0YXJ0KCkpIHtcbiAgICBpZiAoX2luZGV4Lm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmNvbG9uKSB8fCBfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuY29tbWEpIHx8IF9pbmRleC5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5xdWVzdGlvbikgfHwgX2luZGV4Lm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmVxKSkge1xuICAgICAgLy8gKCB4eHggOlxuICAgICAgLy8gKCB4eHggLFxuICAgICAgLy8gKCB4eHggP1xuICAgICAgLy8gKCB4eHggPVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmIChfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUucGFyZW5SKSkge1xuICAgICAgX2luZGV4Lm5leHQuY2FsbCh2b2lkIDAsICk7XG4gICAgICBpZiAoX2luZGV4Lm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmFycm93KSkge1xuICAgICAgICAvLyAoIHh4eCApID0+XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIHRzUGFyc2VUeXBlT3JUeXBlUHJlZGljYXRlQW5ub3RhdGlvbihyZXR1cm5Ub2tlbikge1xuICBjb25zdCBvbGRJc1R5cGUgPSBfaW5kZXgucHVzaFR5cGVDb250ZXh0LmNhbGwodm9pZCAwLCAwKTtcbiAgX3V0aWwuZXhwZWN0LmNhbGwodm9pZCAwLCByZXR1cm5Ub2tlbik7XG4gIGNvbnN0IGZpbmlzaGVkUmV0dXJuID0gdHNQYXJzZVR5cGVQcmVkaWNhdGVPckFzc2VydHNQcmVmaXgoKTtcbiAgaWYgKCFmaW5pc2hlZFJldHVybikge1xuICAgIHRzUGFyc2VUeXBlKCk7XG4gIH1cbiAgX2luZGV4LnBvcFR5cGVDb250ZXh0LmNhbGwodm9pZCAwLCBvbGRJc1R5cGUpO1xufVxuXG5mdW5jdGlvbiB0c1RyeVBhcnNlVHlwZU9yVHlwZVByZWRpY2F0ZUFubm90YXRpb24oKSB7XG4gIGlmIChfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuY29sb24pKSB7XG4gICAgdHNQYXJzZVR5cGVPclR5cGVQcmVkaWNhdGVBbm5vdGF0aW9uKF90eXBlcy5Ub2tlblR5cGUuY29sb24pO1xuICB9XG59XG5cbiBmdW5jdGlvbiB0c1RyeVBhcnNlVHlwZUFubm90YXRpb24oKSB7XG4gIGlmIChfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuY29sb24pKSB7XG4gICAgdHNQYXJzZVR5cGVBbm5vdGF0aW9uKCk7XG4gIH1cbn0gZXhwb3J0cy50c1RyeVBhcnNlVHlwZUFubm90YXRpb24gPSB0c1RyeVBhcnNlVHlwZUFubm90YXRpb247XG5cbmZ1bmN0aW9uIHRzVHJ5UGFyc2VUeXBlKCkge1xuICBpZiAoX2luZGV4LmVhdC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5jb2xvbikpIHtcbiAgICB0c1BhcnNlVHlwZSgpO1xuICB9XG59XG5cbi8qKlxuICogRGV0ZWN0IGEgZmV3IHNwZWNpYWwgcmV0dXJuIHN5bnRheCBjYXNlczogYHggaXMgVGAsIGBhc3NlcnRzIHhgLCBgYXNzZXJ0cyB4IGlzIFRgLFxuICogYGFzc2VydHMgdGhpcyBpcyBUYC5cbiAqXG4gKiBSZXR1cm5zIHRydWUgaWYgd2UgcGFyc2VkIHRoZSByZXR1cm4gdHlwZSwgZmFsc2UgaWYgdGhlcmUncyBzdGlsbCBhIHR5cGUgdG8gYmUgcGFyc2VkLlxuICovXG5mdW5jdGlvbiB0c1BhcnNlVHlwZVByZWRpY2F0ZU9yQXNzZXJ0c1ByZWZpeCgpIHtcbiAgY29uc3Qgc25hcHNob3QgPSBfYmFzZS5zdGF0ZS5zbmFwc2hvdCgpO1xuICBpZiAoX3V0aWwuaXNDb250ZXh0dWFsLmNhbGwodm9pZCAwLCBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX2Fzc2VydHMpKSB7XG4gICAgLy8gTm9ybWFsbHkgdGhpcyBpcyBgYXNzZXJ0cyB4IGlzIFRgLCBidXQgYXQgdGhpcyBwb2ludCwgaXQgbWlnaHQgYmUgYGFzc2VydHMgaXMgVGAgKGEgdXNlci1cbiAgICAvLyBkZWZpbmVkIHR5cGUgZ3VhcmQgb24gdGhlIGBhc3NlcnRzYCB2YXJpYWJsZSkgb3IganVzdCBhIHR5cGUgY2FsbGVkIGBhc3NlcnRzYC5cbiAgICBfaW5kZXgubmV4dC5jYWxsKHZvaWQgMCwgKTtcbiAgICBpZiAoX3V0aWwuZWF0Q29udGV4dHVhbC5jYWxsKHZvaWQgMCwgX2tleXdvcmRzLkNvbnRleHR1YWxLZXl3b3JkLl9pcykpIHtcbiAgICAgIC8vIElmIHdlIHNlZSBgYXNzZXJ0cyBpc2AsIHRoZW4gdGhpcyBtdXN0IGJlIG9mIHRoZSBmb3JtIGBhc3NlcnRzIGlzIFRgLCBzaW5jZVxuICAgICAgLy8gYGFzc2VydHMgaXMgaXMgVGAgaXNuJ3QgdmFsaWQuXG4gICAgICB0c1BhcnNlVHlwZSgpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIGlmICh0c0lzSWRlbnRpZmllcigpIHx8IF9pbmRleC5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5fdGhpcykpIHtcbiAgICAgIF9pbmRleC5uZXh0LmNhbGwodm9pZCAwLCApO1xuICAgICAgaWYgKF91dGlsLmVhdENvbnRleHR1YWwuY2FsbCh2b2lkIDAsIF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5faXMpKSB7XG4gICAgICAgIC8vIElmIHdlIHNlZSBgaXNgLCB0aGVuIHRoaXMgaXMgYGFzc2VydHMgeCBpcyBUYC4gT3RoZXJ3aXNlLCBpdCdzIGBhc3NlcnRzIHhgLlxuICAgICAgICB0c1BhcnNlVHlwZSgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFJlZ3VsYXIgdHlwZSwgc28gYmFpbCBvdXQgYW5kIHN0YXJ0IHR5cGUgcGFyc2luZyBmcm9tIHNjcmF0Y2guXG4gICAgICBfYmFzZS5zdGF0ZS5yZXN0b3JlRnJvbVNuYXBzaG90KHNuYXBzaG90KTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH0gZWxzZSBpZiAodHNJc0lkZW50aWZpZXIoKSB8fCBfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuX3RoaXMpKSB7XG4gICAgLy8gVGhpcyBpcyBhIHJlZ3VsYXIgaWRlbnRpZmllciwgd2hpY2ggbWF5IG9yIG1heSBub3QgaGF2ZSBcImlzXCIgYWZ0ZXIgaXQuXG4gICAgX2luZGV4Lm5leHQuY2FsbCh2b2lkIDAsICk7XG4gICAgaWYgKF91dGlsLmlzQ29udGV4dHVhbC5jYWxsKHZvaWQgMCwgX2tleXdvcmRzLkNvbnRleHR1YWxLZXl3b3JkLl9pcykgJiYgIV91dGlsLmhhc1ByZWNlZGluZ0xpbmVCcmVhay5jYWxsKHZvaWQgMCwgKSkge1xuICAgICAgX2luZGV4Lm5leHQuY2FsbCh2b2lkIDAsICk7XG4gICAgICB0c1BhcnNlVHlwZSgpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFJlZ3VsYXIgdHlwZSwgc28gYmFpbCBvdXQgYW5kIHN0YXJ0IHR5cGUgcGFyc2luZyBmcm9tIHNjcmF0Y2guXG4gICAgICBfYmFzZS5zdGF0ZS5yZXN0b3JlRnJvbVNuYXBzaG90KHNuYXBzaG90KTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4gZnVuY3Rpb24gdHNQYXJzZVR5cGVBbm5vdGF0aW9uKCkge1xuICBjb25zdCBvbGRJc1R5cGUgPSBfaW5kZXgucHVzaFR5cGVDb250ZXh0LmNhbGwodm9pZCAwLCAwKTtcbiAgX3V0aWwuZXhwZWN0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmNvbG9uKTtcbiAgdHNQYXJzZVR5cGUoKTtcbiAgX2luZGV4LnBvcFR5cGVDb250ZXh0LmNhbGwodm9pZCAwLCBvbGRJc1R5cGUpO1xufSBleHBvcnRzLnRzUGFyc2VUeXBlQW5ub3RhdGlvbiA9IHRzUGFyc2VUeXBlQW5ub3RhdGlvbjtcblxuIGZ1bmN0aW9uIHRzUGFyc2VUeXBlKCkge1xuICB0c1BhcnNlTm9uQ29uZGl0aW9uYWxUeXBlKCk7XG4gIGlmIChfYmFzZS5zdGF0ZS5pbkRpc2FsbG93Q29uZGl0aW9uYWxUeXBlc0NvbnRleHQgfHwgX3V0aWwuaGFzUHJlY2VkaW5nTGluZUJyZWFrLmNhbGwodm9pZCAwLCApIHx8ICFfaW5kZXguZWF0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLl9leHRlbmRzKSkge1xuICAgIHJldHVybjtcbiAgfVxuICAvLyBleHRlbmRzIHR5cGVcbiAgY29uc3Qgb2xkSW5EaXNhbGxvd0NvbmRpdGlvbmFsVHlwZXNDb250ZXh0ID0gX2Jhc2Uuc3RhdGUuaW5EaXNhbGxvd0NvbmRpdGlvbmFsVHlwZXNDb250ZXh0O1xuICBfYmFzZS5zdGF0ZS5pbkRpc2FsbG93Q29uZGl0aW9uYWxUeXBlc0NvbnRleHQgPSB0cnVlO1xuICB0c1BhcnNlTm9uQ29uZGl0aW9uYWxUeXBlKCk7XG4gIF9iYXNlLnN0YXRlLmluRGlzYWxsb3dDb25kaXRpb25hbFR5cGVzQ29udGV4dCA9IG9sZEluRGlzYWxsb3dDb25kaXRpb25hbFR5cGVzQ29udGV4dDtcblxuICBfdXRpbC5leHBlY3QuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUucXVlc3Rpb24pO1xuICAvLyB0cnVlIHR5cGVcbiAgdHNQYXJzZVR5cGUoKTtcbiAgX3V0aWwuZXhwZWN0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmNvbG9uKTtcbiAgLy8gZmFsc2UgdHlwZVxuICB0c1BhcnNlVHlwZSgpO1xufSBleHBvcnRzLnRzUGFyc2VUeXBlID0gdHNQYXJzZVR5cGU7XG5cbmZ1bmN0aW9uIGlzQWJzdHJhY3RDb25zdHJ1Y3RvclNpZ25hdHVyZSgpIHtcbiAgcmV0dXJuIF91dGlsLmlzQ29udGV4dHVhbC5jYWxsKHZvaWQgMCwgX2tleXdvcmRzLkNvbnRleHR1YWxLZXl3b3JkLl9hYnN0cmFjdCkgJiYgX2luZGV4Lmxvb2thaGVhZFR5cGUuY2FsbCh2b2lkIDAsICkgPT09IF90eXBlcy5Ub2tlblR5cGUuX25ldztcbn1cblxuIGZ1bmN0aW9uIHRzUGFyc2VOb25Db25kaXRpb25hbFR5cGUoKSB7XG4gIGlmICh0c0lzU3RhcnRPZkZ1bmN0aW9uVHlwZSgpKSB7XG4gICAgdHNQYXJzZUZ1bmN0aW9uT3JDb25zdHJ1Y3RvclR5cGUoRnVuY3Rpb25UeXBlLlRTRnVuY3Rpb25UeXBlKTtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKF9pbmRleC5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5fbmV3KSkge1xuICAgIC8vIEFzIGluIGBuZXcgKCkgPT4gRGF0ZWBcbiAgICB0c1BhcnNlRnVuY3Rpb25PckNvbnN0cnVjdG9yVHlwZShGdW5jdGlvblR5cGUuVFNDb25zdHJ1Y3RvclR5cGUpO1xuICAgIHJldHVybjtcbiAgfSBlbHNlIGlmIChpc0Fic3RyYWN0Q29uc3RydWN0b3JTaWduYXR1cmUoKSkge1xuICAgIC8vIEFzIGluIGBhYnN0cmFjdCBuZXcgKCkgPT4gRGF0ZWBcbiAgICB0c1BhcnNlRnVuY3Rpb25PckNvbnN0cnVjdG9yVHlwZShGdW5jdGlvblR5cGUuVFNBYnN0cmFjdENvbnN0cnVjdG9yVHlwZSk7XG4gICAgcmV0dXJuO1xuICB9XG4gIHRzUGFyc2VVbmlvblR5cGVPckhpZ2hlcigpO1xufSBleHBvcnRzLnRzUGFyc2VOb25Db25kaXRpb25hbFR5cGUgPSB0c1BhcnNlTm9uQ29uZGl0aW9uYWxUeXBlO1xuXG4gZnVuY3Rpb24gdHNQYXJzZVR5cGVBc3NlcnRpb24oKSB7XG4gIGNvbnN0IG9sZElzVHlwZSA9IF9pbmRleC5wdXNoVHlwZUNvbnRleHQuY2FsbCh2b2lkIDAsIDEpO1xuICB0c1BhcnNlVHlwZSgpO1xuICBfdXRpbC5leHBlY3QuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuZ3JlYXRlclRoYW4pO1xuICBfaW5kZXgucG9wVHlwZUNvbnRleHQuY2FsbCh2b2lkIDAsIG9sZElzVHlwZSk7XG4gIF9leHByZXNzaW9uLnBhcnNlTWF5YmVVbmFyeS5jYWxsKHZvaWQgMCwgKTtcbn0gZXhwb3J0cy50c1BhcnNlVHlwZUFzc2VydGlvbiA9IHRzUGFyc2VUeXBlQXNzZXJ0aW9uO1xuXG4gZnVuY3Rpb24gdHNUcnlQYXJzZUpTWFR5cGVBcmd1bWVudCgpIHtcbiAgaWYgKF9pbmRleC5lYXQuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuanN4VGFnU3RhcnQpKSB7XG4gICAgX2Jhc2Uuc3RhdGUudG9rZW5zW19iYXNlLnN0YXRlLnRva2Vucy5sZW5ndGggLSAxXS50eXBlID0gX3R5cGVzLlRva2VuVHlwZS50eXBlUGFyYW1ldGVyU3RhcnQ7XG4gICAgY29uc3Qgb2xkSXNUeXBlID0gX2luZGV4LnB1c2hUeXBlQ29udGV4dC5jYWxsKHZvaWQgMCwgMSk7XG4gICAgd2hpbGUgKCFfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuZ3JlYXRlclRoYW4pICYmICFfYmFzZS5zdGF0ZS5lcnJvcikge1xuICAgICAgdHNQYXJzZVR5cGUoKTtcbiAgICAgIF9pbmRleC5lYXQuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuY29tbWEpO1xuICAgIH1cbiAgICAvLyBQcm9jZXNzID4sIGJ1dCB0aGUgb25lIGFmdGVyIG5lZWRzIHRvIGJlIHBhcnNlZCBKU1gtc3R5bGUuXG4gICAgX2pzeC5uZXh0SlNYVGFnVG9rZW4uY2FsbCh2b2lkIDAsICk7XG4gICAgX2luZGV4LnBvcFR5cGVDb250ZXh0LmNhbGwodm9pZCAwLCBvbGRJc1R5cGUpO1xuICB9XG59IGV4cG9ydHMudHNUcnlQYXJzZUpTWFR5cGVBcmd1bWVudCA9IHRzVHJ5UGFyc2VKU1hUeXBlQXJndW1lbnQ7XG5cbmZ1bmN0aW9uIHRzUGFyc2VIZXJpdGFnZUNsYXVzZSgpIHtcbiAgd2hpbGUgKCFfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuYnJhY2VMKSAmJiAhX2Jhc2Uuc3RhdGUuZXJyb3IpIHtcbiAgICB0c1BhcnNlRXhwcmVzc2lvbldpdGhUeXBlQXJndW1lbnRzKCk7XG4gICAgX2luZGV4LmVhdC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5jb21tYSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gdHNQYXJzZUV4cHJlc3Npb25XaXRoVHlwZUFyZ3VtZW50cygpIHtcbiAgLy8gTm90ZTogVFMgdXNlcyBwYXJzZUxlZnRIYW5kU2lkZUV4cHJlc3Npb25PckhpZ2hlcixcbiAgLy8gdGhlbiBoYXMgZ3JhbW1hciBlcnJvcnMgbGF0ZXIgaWYgaXQncyBub3QgYW4gRW50aXR5TmFtZS5cbiAgdHNQYXJzZUVudGl0eU5hbWUoKTtcbiAgaWYgKF9pbmRleC5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5sZXNzVGhhbikpIHtcbiAgICB0c1BhcnNlVHlwZUFyZ3VtZW50cygpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHRzUGFyc2VJbnRlcmZhY2VEZWNsYXJhdGlvbigpIHtcbiAgX2x2YWwucGFyc2VCaW5kaW5nSWRlbnRpZmllci5jYWxsKHZvaWQgMCwgZmFsc2UpO1xuICB0c1RyeVBhcnNlVHlwZVBhcmFtZXRlcnMoKTtcbiAgaWYgKF9pbmRleC5lYXQuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuX2V4dGVuZHMpKSB7XG4gICAgdHNQYXJzZUhlcml0YWdlQ2xhdXNlKCk7XG4gIH1cbiAgdHNQYXJzZU9iamVjdFR5cGVNZW1iZXJzKCk7XG59XG5cbmZ1bmN0aW9uIHRzUGFyc2VUeXBlQWxpYXNEZWNsYXJhdGlvbigpIHtcbiAgX2x2YWwucGFyc2VCaW5kaW5nSWRlbnRpZmllci5jYWxsKHZvaWQgMCwgZmFsc2UpO1xuICB0c1RyeVBhcnNlVHlwZVBhcmFtZXRlcnMoKTtcbiAgX3V0aWwuZXhwZWN0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmVxKTtcbiAgdHNQYXJzZVR5cGUoKTtcbiAgX3V0aWwuc2VtaWNvbG9uLmNhbGwodm9pZCAwLCApO1xufVxuXG5mdW5jdGlvbiB0c1BhcnNlRW51bU1lbWJlcigpIHtcbiAgLy8gQ29tcHV0ZWQgcHJvcGVydHkgbmFtZXMgYXJlIGdyYW1tYXIgZXJyb3JzIGluIGFuIGVudW0sIHNvIGFjY2VwdCBqdXN0IHN0cmluZyBsaXRlcmFsIG9yIGlkZW50aWZpZXIuXG4gIGlmIChfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuc3RyaW5nKSkge1xuICAgIF9leHByZXNzaW9uLnBhcnNlTGl0ZXJhbC5jYWxsKHZvaWQgMCwgKTtcbiAgfSBlbHNlIHtcbiAgICBfZXhwcmVzc2lvbi5wYXJzZUlkZW50aWZpZXIuY2FsbCh2b2lkIDAsICk7XG4gIH1cbiAgaWYgKF9pbmRleC5lYXQuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuZXEpKSB7XG4gICAgY29uc3QgZXFJbmRleCA9IF9iYXNlLnN0YXRlLnRva2Vucy5sZW5ndGggLSAxO1xuICAgIF9leHByZXNzaW9uLnBhcnNlTWF5YmVBc3NpZ24uY2FsbCh2b2lkIDAsICk7XG4gICAgX2Jhc2Uuc3RhdGUudG9rZW5zW2VxSW5kZXhdLnJoc0VuZEluZGV4ID0gX2Jhc2Uuc3RhdGUudG9rZW5zLmxlbmd0aDtcbiAgfVxufVxuXG5mdW5jdGlvbiB0c1BhcnNlRW51bURlY2xhcmF0aW9uKCkge1xuICBfbHZhbC5wYXJzZUJpbmRpbmdJZGVudGlmaWVyLmNhbGwodm9pZCAwLCBmYWxzZSk7XG4gIF91dGlsLmV4cGVjdC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5icmFjZUwpO1xuICB3aGlsZSAoIV9pbmRleC5lYXQuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuYnJhY2VSKSAmJiAhX2Jhc2Uuc3RhdGUuZXJyb3IpIHtcbiAgICB0c1BhcnNlRW51bU1lbWJlcigpO1xuICAgIF9pbmRleC5lYXQuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuY29tbWEpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHRzUGFyc2VNb2R1bGVCbG9jaygpIHtcbiAgX3V0aWwuZXhwZWN0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmJyYWNlTCk7XG4gIF9zdGF0ZW1lbnQucGFyc2VCbG9ja0JvZHkuY2FsbCh2b2lkIDAsIC8qIGVuZCAqLyBfdHlwZXMuVG9rZW5UeXBlLmJyYWNlUik7XG59XG5cbmZ1bmN0aW9uIHRzUGFyc2VNb2R1bGVPck5hbWVzcGFjZURlY2xhcmF0aW9uKCkge1xuICBfbHZhbC5wYXJzZUJpbmRpbmdJZGVudGlmaWVyLmNhbGwodm9pZCAwLCBmYWxzZSk7XG4gIGlmIChfaW5kZXguZWF0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmRvdCkpIHtcbiAgICB0c1BhcnNlTW9kdWxlT3JOYW1lc3BhY2VEZWNsYXJhdGlvbigpO1xuICB9IGVsc2Uge1xuICAgIHRzUGFyc2VNb2R1bGVCbG9jaygpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHRzUGFyc2VBbWJpZW50RXh0ZXJuYWxNb2R1bGVEZWNsYXJhdGlvbigpIHtcbiAgaWYgKF91dGlsLmlzQ29udGV4dHVhbC5jYWxsKHZvaWQgMCwgX2tleXdvcmRzLkNvbnRleHR1YWxLZXl3b3JkLl9nbG9iYWwpKSB7XG4gICAgX2V4cHJlc3Npb24ucGFyc2VJZGVudGlmaWVyLmNhbGwodm9pZCAwLCApO1xuICB9IGVsc2UgaWYgKF9pbmRleC5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5zdHJpbmcpKSB7XG4gICAgX2V4cHJlc3Npb24ucGFyc2VFeHByQXRvbS5jYWxsKHZvaWQgMCwgKTtcbiAgfSBlbHNlIHtcbiAgICBfdXRpbC51bmV4cGVjdGVkLmNhbGwodm9pZCAwLCApO1xuICB9XG5cbiAgaWYgKF9pbmRleC5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5icmFjZUwpKSB7XG4gICAgdHNQYXJzZU1vZHVsZUJsb2NrKCk7XG4gIH0gZWxzZSB7XG4gICAgX3V0aWwuc2VtaWNvbG9uLmNhbGwodm9pZCAwLCApO1xuICB9XG59XG5cbiBmdW5jdGlvbiB0c1BhcnNlSW1wb3J0RXF1YWxzRGVjbGFyYXRpb24oKSB7XG4gIF9sdmFsLnBhcnNlSW1wb3J0ZWRJZGVudGlmaWVyLmNhbGwodm9pZCAwLCApO1xuICBfdXRpbC5leHBlY3QuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuZXEpO1xuICB0c1BhcnNlTW9kdWxlUmVmZXJlbmNlKCk7XG4gIF91dGlsLnNlbWljb2xvbi5jYWxsKHZvaWQgMCwgKTtcbn0gZXhwb3J0cy50c1BhcnNlSW1wb3J0RXF1YWxzRGVjbGFyYXRpb24gPSB0c1BhcnNlSW1wb3J0RXF1YWxzRGVjbGFyYXRpb247XG5cbmZ1bmN0aW9uIHRzSXNFeHRlcm5hbE1vZHVsZVJlZmVyZW5jZSgpIHtcbiAgcmV0dXJuIF91dGlsLmlzQ29udGV4dHVhbC5jYWxsKHZvaWQgMCwgX2tleXdvcmRzLkNvbnRleHR1YWxLZXl3b3JkLl9yZXF1aXJlKSAmJiBfaW5kZXgubG9va2FoZWFkVHlwZS5jYWxsKHZvaWQgMCwgKSA9PT0gX3R5cGVzLlRva2VuVHlwZS5wYXJlbkw7XG59XG5cbmZ1bmN0aW9uIHRzUGFyc2VNb2R1bGVSZWZlcmVuY2UoKSB7XG4gIGlmICh0c0lzRXh0ZXJuYWxNb2R1bGVSZWZlcmVuY2UoKSkge1xuICAgIHRzUGFyc2VFeHRlcm5hbE1vZHVsZVJlZmVyZW5jZSgpO1xuICB9IGVsc2Uge1xuICAgIHRzUGFyc2VFbnRpdHlOYW1lKCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gdHNQYXJzZUV4dGVybmFsTW9kdWxlUmVmZXJlbmNlKCkge1xuICBfdXRpbC5leHBlY3RDb250ZXh0dWFsLmNhbGwodm9pZCAwLCBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX3JlcXVpcmUpO1xuICBfdXRpbC5leHBlY3QuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUucGFyZW5MKTtcbiAgaWYgKCFfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuc3RyaW5nKSkge1xuICAgIF91dGlsLnVuZXhwZWN0ZWQuY2FsbCh2b2lkIDAsICk7XG4gIH1cbiAgX2V4cHJlc3Npb24ucGFyc2VMaXRlcmFsLmNhbGwodm9pZCAwLCApO1xuICBfdXRpbC5leHBlY3QuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUucGFyZW5SKTtcbn1cblxuLy8gVXRpbGl0aWVzXG5cbi8vIFJldHVybnMgdHJ1ZSBpZiBhIHN0YXRlbWVudCBtYXRjaGVkLlxuZnVuY3Rpb24gdHNUcnlQYXJzZURlY2xhcmUoKSB7XG4gIGlmIChfdXRpbC5pc0xpbmVUZXJtaW5hdG9yLmNhbGwodm9pZCAwLCApKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHN3aXRjaCAoX2Jhc2Uuc3RhdGUudHlwZSkge1xuICAgIGNhc2UgX3R5cGVzLlRva2VuVHlwZS5fZnVuY3Rpb246IHtcbiAgICAgIGNvbnN0IG9sZElzVHlwZSA9IF9pbmRleC5wdXNoVHlwZUNvbnRleHQuY2FsbCh2b2lkIDAsIDEpO1xuICAgICAgX2luZGV4Lm5leHQuY2FsbCh2b2lkIDAsICk7XG4gICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIHByZWNpc2VseSBnZXQgdGhlIGZ1bmN0aW9uIHN0YXJ0IGhlcmUsIHNpbmNlIGl0J3Mgb25seSB1c2VkIHRvIG1hcmtcbiAgICAgIC8vIHRoZSBmdW5jdGlvbiBhcyBhIHR5cGUgaWYgaXQncyBib2RpbGVzcywgYW5kIGl0J3MgYWxyZWFkeSBhIHR5cGUgaGVyZS5cbiAgICAgIGNvbnN0IGZ1bmN0aW9uU3RhcnQgPSBfYmFzZS5zdGF0ZS5zdGFydDtcbiAgICAgIF9zdGF0ZW1lbnQucGFyc2VGdW5jdGlvbi5jYWxsKHZvaWQgMCwgZnVuY3Rpb25TdGFydCwgLyogaXNTdGF0ZW1lbnQgKi8gdHJ1ZSk7XG4gICAgICBfaW5kZXgucG9wVHlwZUNvbnRleHQuY2FsbCh2b2lkIDAsIG9sZElzVHlwZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgY2FzZSBfdHlwZXMuVG9rZW5UeXBlLl9jbGFzczoge1xuICAgICAgY29uc3Qgb2xkSXNUeXBlID0gX2luZGV4LnB1c2hUeXBlQ29udGV4dC5jYWxsKHZvaWQgMCwgMSk7XG4gICAgICBfc3RhdGVtZW50LnBhcnNlQ2xhc3MuY2FsbCh2b2lkIDAsIC8qIGlzU3RhdGVtZW50ICovIHRydWUsIC8qIG9wdGlvbmFsSWQgKi8gZmFsc2UpO1xuICAgICAgX2luZGV4LnBvcFR5cGVDb250ZXh0LmNhbGwodm9pZCAwLCBvbGRJc1R5cGUpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGNhc2UgX3R5cGVzLlRva2VuVHlwZS5fY29uc3Q6IHtcbiAgICAgIGlmIChfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuX2NvbnN0KSAmJiBfdXRpbC5pc0xvb2thaGVhZENvbnRleHR1YWwuY2FsbCh2b2lkIDAsIF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fZW51bSkpIHtcbiAgICAgICAgY29uc3Qgb2xkSXNUeXBlID0gX2luZGV4LnB1c2hUeXBlQ29udGV4dC5jYWxsKHZvaWQgMCwgMSk7XG4gICAgICAgIC8vIGBjb25zdCBlbnVtID0gMDtgIG5vdCBhbGxvd2VkIGJlY2F1c2UgXCJlbnVtXCIgaXMgYSBzdHJpY3QgbW9kZSByZXNlcnZlZCB3b3JkLlxuICAgICAgICBfdXRpbC5leHBlY3QuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuX2NvbnN0KTtcbiAgICAgICAgX3V0aWwuZXhwZWN0Q29udGV4dHVhbC5jYWxsKHZvaWQgMCwgX2tleXdvcmRzLkNvbnRleHR1YWxLZXl3b3JkLl9lbnVtKTtcbiAgICAgICAgX2Jhc2Uuc3RhdGUudG9rZW5zW19iYXNlLnN0YXRlLnRva2Vucy5sZW5ndGggLSAxXS50eXBlID0gX3R5cGVzLlRva2VuVHlwZS5fZW51bTtcbiAgICAgICAgdHNQYXJzZUVudW1EZWNsYXJhdGlvbigpO1xuICAgICAgICBfaW5kZXgucG9wVHlwZUNvbnRleHQuY2FsbCh2b2lkIDAsIG9sZElzVHlwZSk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBmYWxscyB0aHJvdWdoXG4gICAgY2FzZSBfdHlwZXMuVG9rZW5UeXBlLl92YXI6XG4gICAgY2FzZSBfdHlwZXMuVG9rZW5UeXBlLl9sZXQ6IHtcbiAgICAgIGNvbnN0IG9sZElzVHlwZSA9IF9pbmRleC5wdXNoVHlwZUNvbnRleHQuY2FsbCh2b2lkIDAsIDEpO1xuICAgICAgX3N0YXRlbWVudC5wYXJzZVZhclN0YXRlbWVudC5jYWxsKHZvaWQgMCwgX2Jhc2Uuc3RhdGUudHlwZSAhPT0gX3R5cGVzLlRva2VuVHlwZS5fdmFyKTtcbiAgICAgIF9pbmRleC5wb3BUeXBlQ29udGV4dC5jYWxsKHZvaWQgMCwgb2xkSXNUeXBlKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBjYXNlIF90eXBlcy5Ub2tlblR5cGUubmFtZToge1xuICAgICAgY29uc3Qgb2xkSXNUeXBlID0gX2luZGV4LnB1c2hUeXBlQ29udGV4dC5jYWxsKHZvaWQgMCwgMSk7XG4gICAgICBjb25zdCBjb250ZXh0dWFsS2V5d29yZCA9IF9iYXNlLnN0YXRlLmNvbnRleHR1YWxLZXl3b3JkO1xuICAgICAgbGV0IG1hdGNoZWQgPSBmYWxzZTtcbiAgICAgIGlmIChjb250ZXh0dWFsS2V5d29yZCA9PT0gX2tleXdvcmRzLkNvbnRleHR1YWxLZXl3b3JkLl9nbG9iYWwpIHtcbiAgICAgICAgdHNQYXJzZUFtYmllbnRFeHRlcm5hbE1vZHVsZURlY2xhcmF0aW9uKCk7XG4gICAgICAgIG1hdGNoZWQgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWF0Y2hlZCA9IHRzUGFyc2VEZWNsYXJhdGlvbihjb250ZXh0dWFsS2V5d29yZCwgLyogaXNCZWZvcmVUb2tlbiAqLyB0cnVlKTtcbiAgICAgIH1cbiAgICAgIF9pbmRleC5wb3BUeXBlQ29udGV4dC5jYWxsKHZvaWQgMCwgb2xkSXNUeXBlKTtcbiAgICAgIHJldHVybiBtYXRjaGVkO1xuICAgIH1cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8vIE5vdGU6IHRoaXMgd29uJ3QgYmUgY2FsbGVkIHVubGVzcyB0aGUga2V5d29yZCBpcyBhbGxvd2VkIGluIGBzaG91bGRQYXJzZUV4cG9ydERlY2xhcmF0aW9uYC5cbi8vIFJldHVybnMgdHJ1ZSBpZiBpdCBtYXRjaGVkIGEgZGVjbGFyYXRpb24uXG5mdW5jdGlvbiB0c1RyeVBhcnNlRXhwb3J0RGVjbGFyYXRpb24oKSB7XG4gIHJldHVybiB0c1BhcnNlRGVjbGFyYXRpb24oX2Jhc2Uuc3RhdGUuY29udGV4dHVhbEtleXdvcmQsIC8qIGlzQmVmb3JlVG9rZW4gKi8gdHJ1ZSk7XG59XG5cbi8vIFJldHVybnMgdHJ1ZSBpZiBpdCBtYXRjaGVkIGEgc3RhdGVtZW50LlxuZnVuY3Rpb24gdHNQYXJzZUV4cHJlc3Npb25TdGF0ZW1lbnQoY29udGV4dHVhbEtleXdvcmQpIHtcbiAgc3dpdGNoIChjb250ZXh0dWFsS2V5d29yZCkge1xuICAgIGNhc2UgX2tleXdvcmRzLkNvbnRleHR1YWxLZXl3b3JkLl9kZWNsYXJlOiB7XG4gICAgICBjb25zdCBkZWNsYXJlVG9rZW5JbmRleCA9IF9iYXNlLnN0YXRlLnRva2Vucy5sZW5ndGggLSAxO1xuICAgICAgY29uc3QgbWF0Y2hlZCA9IHRzVHJ5UGFyc2VEZWNsYXJlKCk7XG4gICAgICBpZiAobWF0Y2hlZCkge1xuICAgICAgICBfYmFzZS5zdGF0ZS50b2tlbnNbZGVjbGFyZVRva2VuSW5kZXhdLnR5cGUgPSBfdHlwZXMuVG9rZW5UeXBlLl9kZWNsYXJlO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlIF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fZ2xvYmFsOlxuICAgICAgLy8gYGdsb2JhbCB7IH1gICh3aXRoIG5vIGBkZWNsYXJlYCkgbWF5IGFwcGVhciBpbnNpZGUgYW4gYW1iaWVudCBtb2R1bGUgZGVjbGFyYXRpb24uXG4gICAgICAvLyBXb3VsZCBsaWtlIHRvIHVzZSB0c1BhcnNlQW1iaWVudEV4dGVybmFsTW9kdWxlRGVjbGFyYXRpb24gaGVyZSwgYnV0IGFscmVhZHkgcmFuIHBhc3QgXCJnbG9iYWxcIi5cbiAgICAgIGlmIChfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuYnJhY2VMKSkge1xuICAgICAgICB0c1BhcnNlTW9kdWxlQmxvY2soKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBicmVhaztcblxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gdHNQYXJzZURlY2xhcmF0aW9uKGNvbnRleHR1YWxLZXl3b3JkLCAvKiBpc0JlZm9yZVRva2VuICovIGZhbHNlKTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICogQ29tbW9uIGNvZGUgZm9yIHBhcnNpbmcgYSBkZWNsYXJhdGlvbi5cbiAqXG4gKiBpc0JlZm9yZVRva2VuIGluZGljYXRlcyB0aGF0IHRoZSBjdXJyZW50IHBhcnNlciBzdGF0ZSBpcyBhdCB0aGUgY29udGV4dHVhbFxuICoga2V5d29yZCAoYW5kIHRoYXQgaXQgaXMgbm90IHlldCBlbWl0dGVkKSByYXRoZXIgdGhhbiByZWFkaW5nIHRoZSB0b2tlbiBhZnRlclxuICogaXQuIFdoZW4gaXNCZWZvcmVUb2tlbiBpcyB0cnVlLCB3ZSBtYXkgYmUgcHJlY2VkZWQgYnkgYW4gYGV4cG9ydGAgdG9rZW4gYW5kXG4gKiBzaG91bGQgaW5jbHVkZSB0aGF0IHRva2VuIGluIGEgdHlwZSBjb250ZXh0IHdlIGNyZWF0ZSwgZS5nLiB0byBoYW5kbGVcbiAqIGBleHBvcnQgaW50ZXJmYWNlYCBvciBgZXhwb3J0IHR5cGVgLiAoVGhpcyBpcyBhIGJpdCBvZiBhIGhhY2sgYW5kIHNob3VsZCBiZVxuICogY2xlYW5lZCB1cCBhdCBzb21lIHBvaW50LilcbiAqXG4gKiBSZXR1cm5zIHRydWUgaWYgaXQgbWF0Y2hlZCBhIGRlY2xhcmF0aW9uLlxuICovXG5mdW5jdGlvbiB0c1BhcnNlRGVjbGFyYXRpb24oY29udGV4dHVhbEtleXdvcmQsIGlzQmVmb3JlVG9rZW4pIHtcbiAgc3dpdGNoIChjb250ZXh0dWFsS2V5d29yZCkge1xuICAgIGNhc2UgX2tleXdvcmRzLkNvbnRleHR1YWxLZXl3b3JkLl9hYnN0cmFjdDpcbiAgICAgIGlmICh0c0NoZWNrTGluZVRlcm1pbmF0b3IoaXNCZWZvcmVUb2tlbikgJiYgX2luZGV4Lm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLl9jbGFzcykpIHtcbiAgICAgICAgX2Jhc2Uuc3RhdGUudG9rZW5zW19iYXNlLnN0YXRlLnRva2Vucy5sZW5ndGggLSAxXS50eXBlID0gX3R5cGVzLlRva2VuVHlwZS5fYWJzdHJhY3Q7XG4gICAgICAgIF9zdGF0ZW1lbnQucGFyc2VDbGFzcy5jYWxsKHZvaWQgMCwgLyogaXNTdGF0ZW1lbnQgKi8gdHJ1ZSwgLyogb3B0aW9uYWxJZCAqLyBmYWxzZSk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlIF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fZW51bTpcbiAgICAgIGlmICh0c0NoZWNrTGluZVRlcm1pbmF0b3IoaXNCZWZvcmVUb2tlbikgJiYgX2luZGV4Lm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLm5hbWUpKSB7XG4gICAgICAgIF9iYXNlLnN0YXRlLnRva2Vuc1tfYmFzZS5zdGF0ZS50b2tlbnMubGVuZ3RoIC0gMV0udHlwZSA9IF90eXBlcy5Ub2tlblR5cGUuX2VudW07XG4gICAgICAgIHRzUGFyc2VFbnVtRGVjbGFyYXRpb24oKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgX2tleXdvcmRzLkNvbnRleHR1YWxLZXl3b3JkLl9pbnRlcmZhY2U6XG4gICAgICBpZiAodHNDaGVja0xpbmVUZXJtaW5hdG9yKGlzQmVmb3JlVG9rZW4pICYmIF9pbmRleC5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5uYW1lKSkge1xuICAgICAgICAvLyBgbmV4dGAgaXMgdHJ1ZSBpbiBcImV4cG9ydFwiIGFuZCBcImRlY2xhcmVcIiBjb250ZXh0cywgc28gd2Ugd2FudCB0byByZW1vdmUgdGhhdCB0b2tlblxuICAgICAgICAvLyBhcyB3ZWxsLlxuICAgICAgICBjb25zdCBvbGRJc1R5cGUgPSBfaW5kZXgucHVzaFR5cGVDb250ZXh0LmNhbGwodm9pZCAwLCBpc0JlZm9yZVRva2VuID8gMiA6IDEpO1xuICAgICAgICB0c1BhcnNlSW50ZXJmYWNlRGVjbGFyYXRpb24oKTtcbiAgICAgICAgX2luZGV4LnBvcFR5cGVDb250ZXh0LmNhbGwodm9pZCAwLCBvbGRJc1R5cGUpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX21vZHVsZTpcbiAgICAgIGlmICh0c0NoZWNrTGluZVRlcm1pbmF0b3IoaXNCZWZvcmVUb2tlbikpIHtcbiAgICAgICAgaWYgKF9pbmRleC5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5zdHJpbmcpKSB7XG4gICAgICAgICAgY29uc3Qgb2xkSXNUeXBlID0gX2luZGV4LnB1c2hUeXBlQ29udGV4dC5jYWxsKHZvaWQgMCwgaXNCZWZvcmVUb2tlbiA/IDIgOiAxKTtcbiAgICAgICAgICB0c1BhcnNlQW1iaWVudEV4dGVybmFsTW9kdWxlRGVjbGFyYXRpb24oKTtcbiAgICAgICAgICBfaW5kZXgucG9wVHlwZUNvbnRleHQuY2FsbCh2b2lkIDAsIG9sZElzVHlwZSk7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAoX2luZGV4Lm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLm5hbWUpKSB7XG4gICAgICAgICAgY29uc3Qgb2xkSXNUeXBlID0gX2luZGV4LnB1c2hUeXBlQ29udGV4dC5jYWxsKHZvaWQgMCwgaXNCZWZvcmVUb2tlbiA/IDIgOiAxKTtcbiAgICAgICAgICB0c1BhcnNlTW9kdWxlT3JOYW1lc3BhY2VEZWNsYXJhdGlvbigpO1xuICAgICAgICAgIF9pbmRleC5wb3BUeXBlQ29udGV4dC5jYWxsKHZvaWQgMCwgb2xkSXNUeXBlKTtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlIF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fbmFtZXNwYWNlOlxuICAgICAgaWYgKHRzQ2hlY2tMaW5lVGVybWluYXRvcihpc0JlZm9yZVRva2VuKSAmJiBfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUubmFtZSkpIHtcbiAgICAgICAgY29uc3Qgb2xkSXNUeXBlID0gX2luZGV4LnB1c2hUeXBlQ29udGV4dC5jYWxsKHZvaWQgMCwgaXNCZWZvcmVUb2tlbiA/IDIgOiAxKTtcbiAgICAgICAgdHNQYXJzZU1vZHVsZU9yTmFtZXNwYWNlRGVjbGFyYXRpb24oKTtcbiAgICAgICAgX2luZGV4LnBvcFR5cGVDb250ZXh0LmNhbGwodm9pZCAwLCBvbGRJc1R5cGUpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX3R5cGU6XG4gICAgICBpZiAodHNDaGVja0xpbmVUZXJtaW5hdG9yKGlzQmVmb3JlVG9rZW4pICYmIF9pbmRleC5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5uYW1lKSkge1xuICAgICAgICBjb25zdCBvbGRJc1R5cGUgPSBfaW5kZXgucHVzaFR5cGVDb250ZXh0LmNhbGwodm9pZCAwLCBpc0JlZm9yZVRva2VuID8gMiA6IDEpO1xuICAgICAgICB0c1BhcnNlVHlwZUFsaWFzRGVjbGFyYXRpb24oKTtcbiAgICAgICAgX2luZGV4LnBvcFR5cGVDb250ZXh0LmNhbGwodm9pZCAwLCBvbGRJc1R5cGUpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIGJyZWFrO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gdHNDaGVja0xpbmVUZXJtaW5hdG9yKGlzQmVmb3JlVG9rZW4pIHtcbiAgaWYgKGlzQmVmb3JlVG9rZW4pIHtcbiAgICAvLyBCYWJlbCBjaGVja3MgaGFzRm9sbG93aW5nTGluZUJyZWFrIGhlcmUgYW5kIHJldHVybnMgZmFsc2UsIGJ1dCB0aGlzXG4gICAgLy8gZG9lc24ndCBhY3R1YWxseSBjb21lIHVwLCBlLmcuIGBleHBvcnQgaW50ZXJmYWNlYCBjYW4gbmV2ZXIgYmUgb24gaXRzIG93blxuICAgIC8vIGxpbmUgaW4gdmFsaWQgY29kZS5cbiAgICBfaW5kZXgubmV4dC5jYWxsKHZvaWQgMCwgKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gIV91dGlsLmlzTGluZVRlcm1pbmF0b3IuY2FsbCh2b2lkIDAsICk7XG4gIH1cbn1cblxuLy8gUmV0dXJucyB0cnVlIGlmIHRoZXJlIHdhcyBhIGdlbmVyaWMgYXN5bmMgYXJyb3cgZnVuY3Rpb24uXG5mdW5jdGlvbiB0c1RyeVBhcnNlR2VuZXJpY0FzeW5jQXJyb3dGdW5jdGlvbigpIHtcbiAgY29uc3Qgc25hcHNob3QgPSBfYmFzZS5zdGF0ZS5zbmFwc2hvdCgpO1xuXG4gIHRzUGFyc2VUeXBlUGFyYW1ldGVycygpO1xuICBfc3RhdGVtZW50LnBhcnNlRnVuY3Rpb25QYXJhbXMuY2FsbCh2b2lkIDAsICk7XG4gIHRzVHJ5UGFyc2VUeXBlT3JUeXBlUHJlZGljYXRlQW5ub3RhdGlvbigpO1xuICBfdXRpbC5leHBlY3QuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuYXJyb3cpO1xuXG4gIGlmIChfYmFzZS5zdGF0ZS5lcnJvcikge1xuICAgIF9iYXNlLnN0YXRlLnJlc3RvcmVGcm9tU25hcHNob3Qoc25hcHNob3QpO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIF9leHByZXNzaW9uLnBhcnNlRnVuY3Rpb25Cb2R5LmNhbGwodm9pZCAwLCB0cnVlKTtcbiAgcmV0dXJuIHRydWU7XG59XG5cbi8qKlxuICogSWYgbmVjZXNzYXJ5LCBoYWNrIHRoZSB0b2tlbml6ZXIgc3RhdGUgc28gdGhhdCB0aGlzIGJpdHNoaWZ0IHdhcyBhY3R1YWxseSBhXG4gKiBsZXNzLXRoYW4gdG9rZW4sIHRoZW4ga2VlcCBwYXJzaW5nLiBUaGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgaW4gc2l0dWF0aW9uc1xuICogd2hlcmUgd2UgcmVzdG9yZSBmcm9tIHNuYXBzaG90IG9uIGVycm9yICh3aGljaCByZXZlcnRzIHRoaXMgY2hhbmdlKSBvclxuICogd2hlcmUgYml0c2hpZnQgd291bGQgYmUgaWxsZWdhbCBhbnl3YXkgKGUuZy4gaW4gYSBjbGFzcyBcImV4dGVuZHNcIiBjbGF1c2UpLlxuICpcbiAqIFRoaXMgaGFjayBpcyB1c2VmdWwgdG8gaGFuZGxlIHNpdHVhdGlvbnMgbGlrZSBmb288PFQ+KCkgPT4gdm9pZD4oKSB3aGVyZVxuICogdGhlcmUgY2FuIGxlZ2l0aW1hdGVseSBiZSB0d28gb3Blbi1hbmdsZS1icmFja2V0cyBpbiBhIHJvdyBpbiBUUy5cbiAqL1xuZnVuY3Rpb24gdHNQYXJzZVR5cGVBcmd1bWVudHNXaXRoUG9zc2libGVCaXRzaGlmdCgpIHtcbiAgaWYgKF9iYXNlLnN0YXRlLnR5cGUgPT09IF90eXBlcy5Ub2tlblR5cGUuYml0U2hpZnRMKSB7XG4gICAgX2Jhc2Uuc3RhdGUucG9zIC09IDE7XG4gICAgX2luZGV4LmZpbmlzaFRva2VuLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmxlc3NUaGFuKTtcbiAgfVxuICB0c1BhcnNlVHlwZUFyZ3VtZW50cygpO1xufVxuXG5mdW5jdGlvbiB0c1BhcnNlVHlwZUFyZ3VtZW50cygpIHtcbiAgY29uc3Qgb2xkSXNUeXBlID0gX2luZGV4LnB1c2hUeXBlQ29udGV4dC5jYWxsKHZvaWQgMCwgMCk7XG4gIF91dGlsLmV4cGVjdC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5sZXNzVGhhbik7XG4gIHdoaWxlICghX2luZGV4Lm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmdyZWF0ZXJUaGFuKSAmJiAhX2Jhc2Uuc3RhdGUuZXJyb3IpIHtcbiAgICB0c1BhcnNlVHlwZSgpO1xuICAgIF9pbmRleC5lYXQuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuY29tbWEpO1xuICB9XG4gIGlmICghb2xkSXNUeXBlKSB7XG4gICAgLy8gSWYgdGhlIHR5cGUgYXJndW1lbnRzIGFyZSBwcmVzZW50IGluIGFuIGV4cHJlc3Npb24gY29udGV4dCwgZS5nLlxuICAgIC8vIGY8bnVtYmVyPigpLCB0aGVuIHRoZSA+IHNpZ24gc2hvdWxkIGJlIHRva2VuaXplZCBhcyBhIG5vbi10eXBlIHRva2VuLlxuICAgIC8vIEluIHBhcnRpY3VsYXIsIGYoYSA8IGIsIGMgPj0gZCkgc2hvdWxkIHBhcnNlIHRoZSA+PSBhcyBhIHNpbmdsZSB0b2tlbixcbiAgICAvLyByZXN1bHRpbmcgaW4gYSBzeW50YXggZXJyb3IgYW5kIGZhbGxiYWNrIHRvIHRoZSBub24tdHlwZS1hcmdzXG4gICAgLy8gaW50ZXJwcmV0YXRpb24uIEluIHRoZSBzdWNjZXNzIGNhc2UsIGV2ZW4gdGhvdWdoIHRoZSA+IGlzIHRva2VuaXplZCBhcyBhXG4gICAgLy8gbm9uLXR5cGUgdG9rZW4sIGl0IHN0aWxsIG11c3QgYmUgbWFya2VkIGFzIGEgdHlwZSB0b2tlbiBzbyB0aGF0IGl0IGlzXG4gICAgLy8gZXJhc2VkLlxuICAgIF9pbmRleC5wb3BUeXBlQ29udGV4dC5jYWxsKHZvaWQgMCwgb2xkSXNUeXBlKTtcbiAgICBfaW5kZXgucmVzY2FuX2d0LmNhbGwodm9pZCAwLCApO1xuICAgIF91dGlsLmV4cGVjdC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5ncmVhdGVyVGhhbik7XG4gICAgX2Jhc2Uuc3RhdGUudG9rZW5zW19iYXNlLnN0YXRlLnRva2Vucy5sZW5ndGggLSAxXS5pc1R5cGUgPSB0cnVlO1xuICB9IGVsc2Uge1xuICAgIF91dGlsLmV4cGVjdC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5ncmVhdGVyVGhhbik7XG4gICAgX2luZGV4LnBvcFR5cGVDb250ZXh0LmNhbGwodm9pZCAwLCBvbGRJc1R5cGUpO1xuICB9XG59XG5cbiBmdW5jdGlvbiB0c0lzRGVjbGFyYXRpb25TdGFydCgpIHtcbiAgaWYgKF9pbmRleC5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5uYW1lKSkge1xuICAgIHN3aXRjaCAoX2Jhc2Uuc3RhdGUuY29udGV4dHVhbEtleXdvcmQpIHtcbiAgICAgIGNhc2UgX2tleXdvcmRzLkNvbnRleHR1YWxLZXl3b3JkLl9hYnN0cmFjdDpcbiAgICAgIGNhc2UgX2tleXdvcmRzLkNvbnRleHR1YWxLZXl3b3JkLl9kZWNsYXJlOlxuICAgICAgY2FzZSBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX2VudW06XG4gICAgICBjYXNlIF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5faW50ZXJmYWNlOlxuICAgICAgY2FzZSBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX21vZHVsZTpcbiAgICAgIGNhc2UgX2tleXdvcmRzLkNvbnRleHR1YWxLZXl3b3JkLl9uYW1lc3BhY2U6XG4gICAgICBjYXNlIF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fdHlwZTpcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59IGV4cG9ydHMudHNJc0RlY2xhcmF0aW9uU3RhcnQgPSB0c0lzRGVjbGFyYXRpb25TdGFydDtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBPVkVSUklERVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gZnVuY3Rpb24gdHNQYXJzZUZ1bmN0aW9uQm9keUFuZEZpbmlzaChmdW5jdGlvblN0YXJ0LCBmdW5jQ29udGV4dElkKSB7XG4gIC8vIEZvciBhcnJvdyBmdW5jdGlvbnMsIGBwYXJzZUFycm93YCBoYW5kbGVzIHRoZSByZXR1cm4gdHlwZSBpdHNlbGYuXG4gIGlmIChfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuY29sb24pKSB7XG4gICAgdHNQYXJzZVR5cGVPclR5cGVQcmVkaWNhdGVBbm5vdGF0aW9uKF90eXBlcy5Ub2tlblR5cGUuY29sb24pO1xuICB9XG5cbiAgLy8gVGhlIG9yaWdpbmFsIGNvZGUgY2hlY2tlZCB0aGUgbm9kZSB0eXBlIHRvIG1ha2Ugc3VyZSB0aGlzIGZ1bmN0aW9uIHR5cGUgYWxsb3dzIGEgbWlzc2luZ1xuICAvLyBib2R5LCBidXQgd2Ugc2tpcCB0aGF0IHRvIGF2b2lkIHNlbmRpbmcgYXJvdW5kIHRoZSBub2RlIHR5cGUuIFdlIGluc3RlYWQganVzdCB1c2UgdGhlXG4gIC8vIGFsbG93RXhwcmVzc2lvbkJvZHkgYm9vbGVhbiB0byBtYWtlIHN1cmUgaXQncyBub3QgYW4gYXJyb3cgZnVuY3Rpb24uXG4gIGlmICghX2luZGV4Lm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmJyYWNlTCkgJiYgX3V0aWwuaXNMaW5lVGVybWluYXRvci5jYWxsKHZvaWQgMCwgKSkge1xuICAgIC8vIFJldHJvYWN0aXZlbHkgbWFyayB0aGUgZnVuY3Rpb24gZGVjbGFyYXRpb24gYXMgYSB0eXBlLlxuICAgIGxldCBpID0gX2Jhc2Uuc3RhdGUudG9rZW5zLmxlbmd0aCAtIDE7XG4gICAgd2hpbGUgKFxuICAgICAgaSA+PSAwICYmXG4gICAgICAoX2Jhc2Uuc3RhdGUudG9rZW5zW2ldLnN0YXJ0ID49IGZ1bmN0aW9uU3RhcnQgfHxcbiAgICAgICAgX2Jhc2Uuc3RhdGUudG9rZW5zW2ldLnR5cGUgPT09IF90eXBlcy5Ub2tlblR5cGUuX2RlZmF1bHQgfHxcbiAgICAgICAgX2Jhc2Uuc3RhdGUudG9rZW5zW2ldLnR5cGUgPT09IF90eXBlcy5Ub2tlblR5cGUuX2V4cG9ydClcbiAgICApIHtcbiAgICAgIF9iYXNlLnN0YXRlLnRva2Vuc1tpXS5pc1R5cGUgPSB0cnVlO1xuICAgICAgaS0tO1xuICAgIH1cbiAgICByZXR1cm47XG4gIH1cblxuICBfZXhwcmVzc2lvbi5wYXJzZUZ1bmN0aW9uQm9keS5jYWxsKHZvaWQgMCwgZmFsc2UsIGZ1bmNDb250ZXh0SWQpO1xufSBleHBvcnRzLnRzUGFyc2VGdW5jdGlvbkJvZHlBbmRGaW5pc2ggPSB0c1BhcnNlRnVuY3Rpb25Cb2R5QW5kRmluaXNoO1xuXG4gZnVuY3Rpb24gdHNQYXJzZVN1YnNjcmlwdChcbiAgc3RhcnRUb2tlbkluZGV4LFxuICBub0NhbGxzLFxuICBzdG9wU3RhdGUsXG4pIHtcbiAgaWYgKCFfdXRpbC5oYXNQcmVjZWRpbmdMaW5lQnJlYWsuY2FsbCh2b2lkIDAsICkgJiYgX2luZGV4LmVhdC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5iYW5nKSkge1xuICAgIF9iYXNlLnN0YXRlLnRva2Vuc1tfYmFzZS5zdGF0ZS50b2tlbnMubGVuZ3RoIC0gMV0udHlwZSA9IF90eXBlcy5Ub2tlblR5cGUubm9uTnVsbEFzc2VydGlvbjtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAoX2luZGV4Lm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmxlc3NUaGFuKSB8fCBfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuYml0U2hpZnRMKSkge1xuICAgIC8vIFRoZXJlIGFyZSBudW1iZXIgb2YgdGhpbmdzIHdlIGFyZSBnb2luZyB0byBcIm1heWJlXCIgcGFyc2UsIGxpa2UgdHlwZSBhcmd1bWVudHMgb25cbiAgICAvLyB0YWdnZWQgdGVtcGxhdGUgZXhwcmVzc2lvbnMuIElmIGFueSBvZiB0aGVtIGZhaWwsIHdhbGsgaXQgYmFjayBhbmQgY29udGludWUuXG4gICAgY29uc3Qgc25hcHNob3QgPSBfYmFzZS5zdGF0ZS5zbmFwc2hvdCgpO1xuXG4gICAgaWYgKCFub0NhbGxzICYmIF9leHByZXNzaW9uLmF0UG9zc2libGVBc3luYy5jYWxsKHZvaWQgMCwgKSkge1xuICAgICAgLy8gQWxtb3N0IGNlcnRhaW5seSB0aGlzIGlzIGEgZ2VuZXJpYyBhc3luYyBmdW5jdGlvbiBgYXN5bmMgPFQ+KCkgPT4gLi4uXG4gICAgICAvLyBCdXQgaXQgbWlnaHQgYmUgYSBjYWxsIHdpdGggYSB0eXBlIGFyZ3VtZW50IGBhc3luYzxUPigpO2BcbiAgICAgIGNvbnN0IGFzeW5jQXJyb3dGbiA9IHRzVHJ5UGFyc2VHZW5lcmljQXN5bmNBcnJvd0Z1bmN0aW9uKCk7XG4gICAgICBpZiAoYXN5bmNBcnJvd0ZuKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gICAgdHNQYXJzZVR5cGVBcmd1bWVudHNXaXRoUG9zc2libGVCaXRzaGlmdCgpO1xuICAgIGlmICghbm9DYWxscyAmJiBfaW5kZXguZWF0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLnBhcmVuTCkpIHtcbiAgICAgIC8vIFdpdGggZjxUPigpLCB0aGUgc3Vic2NyaXB0U3RhcnRJbmRleCBtYXJrZXIgaXMgb24gdGhlICggdG9rZW4uXG4gICAgICBfYmFzZS5zdGF0ZS50b2tlbnNbX2Jhc2Uuc3RhdGUudG9rZW5zLmxlbmd0aCAtIDFdLnN1YnNjcmlwdFN0YXJ0SW5kZXggPSBzdGFydFRva2VuSW5kZXg7XG4gICAgICBfZXhwcmVzc2lvbi5wYXJzZUNhbGxFeHByZXNzaW9uQXJndW1lbnRzLmNhbGwodm9pZCAwLCApO1xuICAgIH0gZWxzZSBpZiAoX2luZGV4Lm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmJhY2tRdW90ZSkpIHtcbiAgICAgIC8vIFRhZ2dlZCB0ZW1wbGF0ZSB3aXRoIGEgdHlwZSBhcmd1bWVudC5cbiAgICAgIF9leHByZXNzaW9uLnBhcnNlVGVtcGxhdGUuY2FsbCh2b2lkIDAsICk7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIC8vIFRoZSByZW1haW5pbmcgcG9zc2libGUgY2FzZSBpcyBhbiBpbnN0YW50aWF0aW9uIGV4cHJlc3Npb24sIGUuZy5cbiAgICAgIC8vIEFycmF5PG51bWJlcj4gLiBDaGVjayBmb3IgYSBmZXcgY2FzZXMgdGhhdCB3b3VsZCBkaXNxdWFsaWZ5IGl0IGFuZFxuICAgICAgLy8gY2F1c2UgdXMgdG8gYmFpbCBvdXQuXG4gICAgICAvLyBhPGI+PmMgaXMgbm90IChhPGI+KT5jLCBidXQgYTwoYj4+YylcbiAgICAgIF9iYXNlLnN0YXRlLnR5cGUgPT09IF90eXBlcy5Ub2tlblR5cGUuZ3JlYXRlclRoYW4gfHxcbiAgICAgIC8vIGE8Yj5jIGlzIChhPGIpPmNcbiAgICAgIChfYmFzZS5zdGF0ZS50eXBlICE9PSBfdHlwZXMuVG9rZW5UeXBlLnBhcmVuTCAmJlxuICAgICAgICBCb29sZWFuKF9iYXNlLnN0YXRlLnR5cGUgJiBfdHlwZXMuVG9rZW5UeXBlLklTX0VYUFJFU1NJT05fU1RBUlQpICYmXG4gICAgICAgICFfdXRpbC5oYXNQcmVjZWRpbmdMaW5lQnJlYWsuY2FsbCh2b2lkIDAsICkpXG4gICAgKSB7XG4gICAgICAvLyBCYWlsIG91dC4gV2UgaGF2ZSBzb21ldGhpbmcgbGlrZSBhPGI+Yywgd2hpY2ggaXMgbm90IGFuIGV4cHJlc3Npb24gd2l0aFxuICAgICAgLy8gdHlwZSBhcmd1bWVudHMgYnV0IGFuIChhIDwgYikgPiBjIGNvbXBhcmlzb24uXG4gICAgICBfdXRpbC51bmV4cGVjdGVkLmNhbGwodm9pZCAwLCApO1xuICAgIH1cblxuICAgIGlmIChfYmFzZS5zdGF0ZS5lcnJvcikge1xuICAgICAgX2Jhc2Uuc3RhdGUucmVzdG9yZUZyb21TbmFwc2hvdChzbmFwc2hvdCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH0gZWxzZSBpZiAoIW5vQ2FsbHMgJiYgX2luZGV4Lm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLnF1ZXN0aW9uRG90KSAmJiBfaW5kZXgubG9va2FoZWFkVHlwZS5jYWxsKHZvaWQgMCwgKSA9PT0gX3R5cGVzLlRva2VuVHlwZS5sZXNzVGhhbikge1xuICAgIC8vIElmIHdlIHNlZSBmPy48LCB0aGVuIHRoaXMgbXVzdCBiZSBhbiBvcHRpb25hbCBjYWxsIHdpdGggYSB0eXBlIGFyZ3VtZW50LlxuICAgIF9pbmRleC5uZXh0LmNhbGwodm9pZCAwLCApO1xuICAgIF9iYXNlLnN0YXRlLnRva2Vuc1tzdGFydFRva2VuSW5kZXhdLmlzT3B0aW9uYWxDaGFpblN0YXJ0ID0gdHJ1ZTtcbiAgICAvLyBXaXRoIGY/LjxUPigpLCB0aGUgc3Vic2NyaXB0U3RhcnRJbmRleCBtYXJrZXIgaXMgb24gdGhlID8uIHRva2VuLlxuICAgIF9iYXNlLnN0YXRlLnRva2Vuc1tfYmFzZS5zdGF0ZS50b2tlbnMubGVuZ3RoIC0gMV0uc3Vic2NyaXB0U3RhcnRJbmRleCA9IHN0YXJ0VG9rZW5JbmRleDtcblxuICAgIHRzUGFyc2VUeXBlQXJndW1lbnRzKCk7XG4gICAgX3V0aWwuZXhwZWN0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLnBhcmVuTCk7XG4gICAgX2V4cHJlc3Npb24ucGFyc2VDYWxsRXhwcmVzc2lvbkFyZ3VtZW50cy5jYWxsKHZvaWQgMCwgKTtcbiAgfVxuICBfZXhwcmVzc2lvbi5iYXNlUGFyc2VTdWJzY3JpcHQuY2FsbCh2b2lkIDAsIHN0YXJ0VG9rZW5JbmRleCwgbm9DYWxscywgc3RvcFN0YXRlKTtcbn0gZXhwb3J0cy50c1BhcnNlU3Vic2NyaXB0ID0gdHNQYXJzZVN1YnNjcmlwdDtcblxuIGZ1bmN0aW9uIHRzVHJ5UGFyc2VFeHBvcnQoKSB7XG4gIGlmIChfaW5kZXguZWF0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLl9pbXBvcnQpKSB7XG4gICAgLy8gT25lIG9mIHRoZXNlIGNhc2VzOlxuICAgIC8vIGV4cG9ydCBpbXBvcnQgQSA9IEI7XG4gICAgLy8gZXhwb3J0IGltcG9ydCB0eXBlIEEgPSByZXF1aXJlKFwiQVwiKTtcbiAgICBpZiAoX3V0aWwuaXNDb250ZXh0dWFsLmNhbGwodm9pZCAwLCBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX3R5cGUpICYmIF9pbmRleC5sb29rYWhlYWRUeXBlLmNhbGwodm9pZCAwLCApICE9PSBfdHlwZXMuVG9rZW5UeXBlLmVxKSB7XG4gICAgICAvLyBFYXQgYSBgdHlwZWAgdG9rZW4sIHVubGVzcyBpdCdzIGFjdHVhbGx5IGFuIGlkZW50aWZpZXIgbmFtZS5cbiAgICAgIF91dGlsLmV4cGVjdENvbnRleHR1YWwuY2FsbCh2b2lkIDAsIF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fdHlwZSk7XG4gICAgfVxuICAgIHRzUGFyc2VJbXBvcnRFcXVhbHNEZWNsYXJhdGlvbigpO1xuICAgIHJldHVybiB0cnVlO1xuICB9IGVsc2UgaWYgKF9pbmRleC5lYXQuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuZXEpKSB7XG4gICAgLy8gYGV4cG9ydCA9IHg7YFxuICAgIF9leHByZXNzaW9uLnBhcnNlRXhwcmVzc2lvbi5jYWxsKHZvaWQgMCwgKTtcbiAgICBfdXRpbC5zZW1pY29sb24uY2FsbCh2b2lkIDAsICk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gZWxzZSBpZiAoX3V0aWwuZWF0Q29udGV4dHVhbC5jYWxsKHZvaWQgMCwgX2tleXdvcmRzLkNvbnRleHR1YWxLZXl3b3JkLl9hcykpIHtcbiAgICAvLyBgZXhwb3J0IGFzIG5hbWVzcGFjZSBBO2BcbiAgICAvLyBTZWUgYHBhcnNlTmFtZXNwYWNlRXhwb3J0RGVjbGFyYXRpb25gIGluIFR5cGVTY3JpcHQncyBvd24gcGFyc2VyXG4gICAgX3V0aWwuZXhwZWN0Q29udGV4dHVhbC5jYWxsKHZvaWQgMCwgX2tleXdvcmRzLkNvbnRleHR1YWxLZXl3b3JkLl9uYW1lc3BhY2UpO1xuICAgIF9leHByZXNzaW9uLnBhcnNlSWRlbnRpZmllci5jYWxsKHZvaWQgMCwgKTtcbiAgICBfdXRpbC5zZW1pY29sb24uY2FsbCh2b2lkIDAsICk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gZWxzZSB7XG4gICAgaWYgKF91dGlsLmlzQ29udGV4dHVhbC5jYWxsKHZvaWQgMCwgX2tleXdvcmRzLkNvbnRleHR1YWxLZXl3b3JkLl90eXBlKSkge1xuICAgICAgY29uc3QgbmV4dFR5cGUgPSBfaW5kZXgubG9va2FoZWFkVHlwZS5jYWxsKHZvaWQgMCwgKTtcbiAgICAgIC8vIGV4cG9ydCB0eXBlIHtmb299IGZyb20gJ2EnO1xuICAgICAgLy8gZXhwb3J0IHR5cGUgKiBmcm9tICdhJzsnXG4gICAgICAvLyBleHBvcnQgdHlwZSAqIGFzIG5zIGZyb20gJ2EnOydcbiAgICAgIGlmIChuZXh0VHlwZSA9PT0gX3R5cGVzLlRva2VuVHlwZS5icmFjZUwgfHwgbmV4dFR5cGUgPT09IF90eXBlcy5Ub2tlblR5cGUuc3Rhcikge1xuICAgICAgICBfaW5kZXgubmV4dC5jYWxsKHZvaWQgMCwgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59IGV4cG9ydHMudHNUcnlQYXJzZUV4cG9ydCA9IHRzVHJ5UGFyc2VFeHBvcnQ7XG5cbi8qKlxuICogUGFyc2UgYSBUUyBpbXBvcnQgc3BlY2lmaWVyLCB3aGljaCBtYXkgYmUgcHJlZml4ZWQgd2l0aCBcInR5cGVcIiBhbmQgbWF5IGJlIG9mXG4gKiB0aGUgZm9ybSBgZm9vIGFzIGJhcmAuXG4gKlxuICogVGhlIG51bWJlciBvZiBpZGVudGlmaWVyLWxpa2UgdG9rZW5zIHdlIHNlZSBoYXBwZW5zIHRvIGJlIGVub3VnaCB0byB1bmlxdWVseVxuICogaWRlbnRpZnkgdGhlIGZvcm0sIHNvIHNpbXBseSBjb3VudCB0aGUgbnVtYmVyIG9mIGlkZW50aWZpZXJzIHJhdGhlciB0aGFuXG4gKiBtYXRjaGluZyB0aGUgd29yZHMgYHR5cGVgIG9yIGBhc2AuIFRoaXMgaXMgcGFydGljdWxhcmx5IGltcG9ydGFudCBiZWNhdXNlXG4gKiBgdHlwZWAgYW5kIGBhc2AgY291bGQgZWFjaCBhY3R1YWxseSBiZSBwbGFpbiBpZGVudGlmaWVycyByYXRoZXIgdGhhblxuICoga2V5d29yZHMuXG4gKi9cbiBmdW5jdGlvbiB0c1BhcnNlSW1wb3J0U3BlY2lmaWVyKCkge1xuICBfZXhwcmVzc2lvbi5wYXJzZUlkZW50aWZpZXIuY2FsbCh2b2lkIDAsICk7XG4gIGlmIChfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuY29tbWEpIHx8IF9pbmRleC5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5icmFjZVIpKSB7XG4gICAgLy8gaW1wb3J0IHtmb299XG4gICAgX2Jhc2Uuc3RhdGUudG9rZW5zW19iYXNlLnN0YXRlLnRva2Vucy5sZW5ndGggLSAxXS5pZGVudGlmaWVyUm9sZSA9IF9pbmRleC5JZGVudGlmaWVyUm9sZS5JbXBvcnREZWNsYXJhdGlvbjtcbiAgICByZXR1cm47XG4gIH1cbiAgX2V4cHJlc3Npb24ucGFyc2VJZGVudGlmaWVyLmNhbGwodm9pZCAwLCApO1xuICBpZiAoX2luZGV4Lm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmNvbW1hKSB8fCBfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuYnJhY2VSKSkge1xuICAgIC8vIGltcG9ydCB7dHlwZSBmb299XG4gICAgX2Jhc2Uuc3RhdGUudG9rZW5zW19iYXNlLnN0YXRlLnRva2Vucy5sZW5ndGggLSAxXS5pZGVudGlmaWVyUm9sZSA9IF9pbmRleC5JZGVudGlmaWVyUm9sZS5JbXBvcnREZWNsYXJhdGlvbjtcbiAgICBfYmFzZS5zdGF0ZS50b2tlbnNbX2Jhc2Uuc3RhdGUudG9rZW5zLmxlbmd0aCAtIDJdLmlzVHlwZSA9IHRydWU7XG4gICAgX2Jhc2Uuc3RhdGUudG9rZW5zW19iYXNlLnN0YXRlLnRva2Vucy5sZW5ndGggLSAxXS5pc1R5cGUgPSB0cnVlO1xuICAgIHJldHVybjtcbiAgfVxuICBfZXhwcmVzc2lvbi5wYXJzZUlkZW50aWZpZXIuY2FsbCh2b2lkIDAsICk7XG4gIGlmIChfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuY29tbWEpIHx8IF9pbmRleC5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5icmFjZVIpKSB7XG4gICAgLy8gaW1wb3J0IHtmb28gYXMgYmFyfVxuICAgIF9iYXNlLnN0YXRlLnRva2Vuc1tfYmFzZS5zdGF0ZS50b2tlbnMubGVuZ3RoIC0gM10uaWRlbnRpZmllclJvbGUgPSBfaW5kZXguSWRlbnRpZmllclJvbGUuSW1wb3J0QWNjZXNzO1xuICAgIF9iYXNlLnN0YXRlLnRva2Vuc1tfYmFzZS5zdGF0ZS50b2tlbnMubGVuZ3RoIC0gMV0uaWRlbnRpZmllclJvbGUgPSBfaW5kZXguSWRlbnRpZmllclJvbGUuSW1wb3J0RGVjbGFyYXRpb247XG4gICAgcmV0dXJuO1xuICB9XG4gIF9leHByZXNzaW9uLnBhcnNlSWRlbnRpZmllci5jYWxsKHZvaWQgMCwgKTtcbiAgLy8gaW1wb3J0IHt0eXBlIGZvbyBhcyBiYXJ9XG4gIF9iYXNlLnN0YXRlLnRva2Vuc1tfYmFzZS5zdGF0ZS50b2tlbnMubGVuZ3RoIC0gM10uaWRlbnRpZmllclJvbGUgPSBfaW5kZXguSWRlbnRpZmllclJvbGUuSW1wb3J0QWNjZXNzO1xuICBfYmFzZS5zdGF0ZS50b2tlbnNbX2Jhc2Uuc3RhdGUudG9rZW5zLmxlbmd0aCAtIDFdLmlkZW50aWZpZXJSb2xlID0gX2luZGV4LklkZW50aWZpZXJSb2xlLkltcG9ydERlY2xhcmF0aW9uO1xuICBfYmFzZS5zdGF0ZS50b2tlbnNbX2Jhc2Uuc3RhdGUudG9rZW5zLmxlbmd0aCAtIDRdLmlzVHlwZSA9IHRydWU7XG4gIF9iYXNlLnN0YXRlLnRva2Vuc1tfYmFzZS5zdGF0ZS50b2tlbnMubGVuZ3RoIC0gM10uaXNUeXBlID0gdHJ1ZTtcbiAgX2Jhc2Uuc3RhdGUudG9rZW5zW19iYXNlLnN0YXRlLnRva2Vucy5sZW5ndGggLSAyXS5pc1R5cGUgPSB0cnVlO1xuICBfYmFzZS5zdGF0ZS50b2tlbnNbX2Jhc2Uuc3RhdGUudG9rZW5zLmxlbmd0aCAtIDFdLmlzVHlwZSA9IHRydWU7XG59IGV4cG9ydHMudHNQYXJzZUltcG9ydFNwZWNpZmllciA9IHRzUGFyc2VJbXBvcnRTcGVjaWZpZXI7XG5cbi8qKlxuICogSnVzdCBsaWtlIG5hbWVkIGltcG9ydCBzcGVjaWZpZXJzLCBleHBvcnQgc3BlY2lmaWVycyBjYW4gaGF2ZSBmcm9tIDEgdG8gNFxuICogdG9rZW5zLCBpbmNsdXNpdmUsIGFuZCB0aGUgbnVtYmVyIG9mIHRva2VucyBkZXRlcm1pbmVzIHRoZSByb2xlIG9mIGVhY2ggdG9rZW4uXG4gKi9cbiBmdW5jdGlvbiB0c1BhcnNlRXhwb3J0U3BlY2lmaWVyKCkge1xuICBfZXhwcmVzc2lvbi5wYXJzZUlkZW50aWZpZXIuY2FsbCh2b2lkIDAsICk7XG4gIGlmIChfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuY29tbWEpIHx8IF9pbmRleC5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5icmFjZVIpKSB7XG4gICAgLy8gZXhwb3J0IHtmb299XG4gICAgX2Jhc2Uuc3RhdGUudG9rZW5zW19iYXNlLnN0YXRlLnRva2Vucy5sZW5ndGggLSAxXS5pZGVudGlmaWVyUm9sZSA9IF9pbmRleC5JZGVudGlmaWVyUm9sZS5FeHBvcnRBY2Nlc3M7XG4gICAgcmV0dXJuO1xuICB9XG4gIF9leHByZXNzaW9uLnBhcnNlSWRlbnRpZmllci5jYWxsKHZvaWQgMCwgKTtcbiAgaWYgKF9pbmRleC5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5jb21tYSkgfHwgX2luZGV4Lm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmJyYWNlUikpIHtcbiAgICAvLyBleHBvcnQge3R5cGUgZm9vfVxuICAgIF9iYXNlLnN0YXRlLnRva2Vuc1tfYmFzZS5zdGF0ZS50b2tlbnMubGVuZ3RoIC0gMV0uaWRlbnRpZmllclJvbGUgPSBfaW5kZXguSWRlbnRpZmllclJvbGUuRXhwb3J0QWNjZXNzO1xuICAgIF9iYXNlLnN0YXRlLnRva2Vuc1tfYmFzZS5zdGF0ZS50b2tlbnMubGVuZ3RoIC0gMl0uaXNUeXBlID0gdHJ1ZTtcbiAgICBfYmFzZS5zdGF0ZS50b2tlbnNbX2Jhc2Uuc3RhdGUudG9rZW5zLmxlbmd0aCAtIDFdLmlzVHlwZSA9IHRydWU7XG4gICAgcmV0dXJuO1xuICB9XG4gIF9leHByZXNzaW9uLnBhcnNlSWRlbnRpZmllci5jYWxsKHZvaWQgMCwgKTtcbiAgaWYgKF9pbmRleC5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5jb21tYSkgfHwgX2luZGV4Lm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmJyYWNlUikpIHtcbiAgICAvLyBleHBvcnQge2ZvbyBhcyBiYXJ9XG4gICAgX2Jhc2Uuc3RhdGUudG9rZW5zW19iYXNlLnN0YXRlLnRva2Vucy5sZW5ndGggLSAzXS5pZGVudGlmaWVyUm9sZSA9IF9pbmRleC5JZGVudGlmaWVyUm9sZS5FeHBvcnRBY2Nlc3M7XG4gICAgcmV0dXJuO1xuICB9XG4gIF9leHByZXNzaW9uLnBhcnNlSWRlbnRpZmllci5jYWxsKHZvaWQgMCwgKTtcbiAgLy8gZXhwb3J0IHt0eXBlIGZvbyBhcyBiYXJ9XG4gIF9iYXNlLnN0YXRlLnRva2Vuc1tfYmFzZS5zdGF0ZS50b2tlbnMubGVuZ3RoIC0gM10uaWRlbnRpZmllclJvbGUgPSBfaW5kZXguSWRlbnRpZmllclJvbGUuRXhwb3J0QWNjZXNzO1xuICBfYmFzZS5zdGF0ZS50b2tlbnNbX2Jhc2Uuc3RhdGUudG9rZW5zLmxlbmd0aCAtIDRdLmlzVHlwZSA9IHRydWU7XG4gIF9iYXNlLnN0YXRlLnRva2Vuc1tfYmFzZS5zdGF0ZS50b2tlbnMubGVuZ3RoIC0gM10uaXNUeXBlID0gdHJ1ZTtcbiAgX2Jhc2Uuc3RhdGUudG9rZW5zW19iYXNlLnN0YXRlLnRva2Vucy5sZW5ndGggLSAyXS5pc1R5cGUgPSB0cnVlO1xuICBfYmFzZS5zdGF0ZS50b2tlbnNbX2Jhc2Uuc3RhdGUudG9rZW5zLmxlbmd0aCAtIDFdLmlzVHlwZSA9IHRydWU7XG59IGV4cG9ydHMudHNQYXJzZUV4cG9ydFNwZWNpZmllciA9IHRzUGFyc2VFeHBvcnRTcGVjaWZpZXI7XG5cbiBmdW5jdGlvbiB0c1RyeVBhcnNlRXhwb3J0RGVmYXVsdEV4cHJlc3Npb24oKSB7XG4gIGlmIChfdXRpbC5pc0NvbnRleHR1YWwuY2FsbCh2b2lkIDAsIF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fYWJzdHJhY3QpICYmIF9pbmRleC5sb29rYWhlYWRUeXBlLmNhbGwodm9pZCAwLCApID09PSBfdHlwZXMuVG9rZW5UeXBlLl9jbGFzcykge1xuICAgIF9iYXNlLnN0YXRlLnR5cGUgPSBfdHlwZXMuVG9rZW5UeXBlLl9hYnN0cmFjdDtcbiAgICBfaW5kZXgubmV4dC5jYWxsKHZvaWQgMCwgKTsgLy8gU2tpcCBcImFic3RyYWN0XCJcbiAgICBfc3RhdGVtZW50LnBhcnNlQ2xhc3MuY2FsbCh2b2lkIDAsIHRydWUsIHRydWUpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmIChfdXRpbC5pc0NvbnRleHR1YWwuY2FsbCh2b2lkIDAsIF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5faW50ZXJmYWNlKSkge1xuICAgIC8vIE1ha2Ugc3VyZSBcImV4cG9ydCBkZWZhdWx0XCIgYXJlIGNvbnNpZGVyZWQgdHlwZSB0b2tlbnMgc28gdGhlIHdob2xlIHRoaW5nIGlzIHJlbW92ZWQuXG4gICAgY29uc3Qgb2xkSXNUeXBlID0gX2luZGV4LnB1c2hUeXBlQ29udGV4dC5jYWxsKHZvaWQgMCwgMik7XG4gICAgdHNQYXJzZURlY2xhcmF0aW9uKF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5faW50ZXJmYWNlLCB0cnVlKTtcbiAgICBfaW5kZXgucG9wVHlwZUNvbnRleHQuY2FsbCh2b2lkIDAsIG9sZElzVHlwZSk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufSBleHBvcnRzLnRzVHJ5UGFyc2VFeHBvcnREZWZhdWx0RXhwcmVzc2lvbiA9IHRzVHJ5UGFyc2VFeHBvcnREZWZhdWx0RXhwcmVzc2lvbjtcblxuIGZ1bmN0aW9uIHRzVHJ5UGFyc2VTdGF0ZW1lbnRDb250ZW50KCkge1xuICBpZiAoX2Jhc2Uuc3RhdGUudHlwZSA9PT0gX3R5cGVzLlRva2VuVHlwZS5fY29uc3QpIHtcbiAgICBjb25zdCBhaGVhZCA9IF9pbmRleC5sb29rYWhlYWRUeXBlQW5kS2V5d29yZC5jYWxsKHZvaWQgMCwgKTtcbiAgICBpZiAoYWhlYWQudHlwZSA9PT0gX3R5cGVzLlRva2VuVHlwZS5uYW1lICYmIGFoZWFkLmNvbnRleHR1YWxLZXl3b3JkID09PSBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX2VudW0pIHtcbiAgICAgIF91dGlsLmV4cGVjdC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5fY29uc3QpO1xuICAgICAgX3V0aWwuZXhwZWN0Q29udGV4dHVhbC5jYWxsKHZvaWQgMCwgX2tleXdvcmRzLkNvbnRleHR1YWxLZXl3b3JkLl9lbnVtKTtcbiAgICAgIF9iYXNlLnN0YXRlLnRva2Vuc1tfYmFzZS5zdGF0ZS50b2tlbnMubGVuZ3RoIC0gMV0udHlwZSA9IF90eXBlcy5Ub2tlblR5cGUuX2VudW07XG4gICAgICB0c1BhcnNlRW51bURlY2xhcmF0aW9uKCk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufSBleHBvcnRzLnRzVHJ5UGFyc2VTdGF0ZW1lbnRDb250ZW50ID0gdHNUcnlQYXJzZVN0YXRlbWVudENvbnRlbnQ7XG5cbiBmdW5jdGlvbiB0c1RyeVBhcnNlQ2xhc3NNZW1iZXJXaXRoSXNTdGF0aWMoaXNTdGF0aWMpIHtcbiAgY29uc3QgbWVtYmVyU3RhcnRJbmRleEFmdGVyU3RhdGljID0gX2Jhc2Uuc3RhdGUudG9rZW5zLmxlbmd0aDtcbiAgdHNQYXJzZU1vZGlmaWVycyhbXG4gICAgX2tleXdvcmRzLkNvbnRleHR1YWxLZXl3b3JkLl9hYnN0cmFjdCxcbiAgICBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX3JlYWRvbmx5LFxuICAgIF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fZGVjbGFyZSxcbiAgICBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX3N0YXRpYyxcbiAgICBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX292ZXJyaWRlLFxuICBdKTtcblxuICBjb25zdCBtb2RpZmllcnNFbmRJbmRleCA9IF9iYXNlLnN0YXRlLnRva2Vucy5sZW5ndGg7XG4gIGNvbnN0IGZvdW5kID0gdHNUcnlQYXJzZUluZGV4U2lnbmF0dXJlKCk7XG4gIGlmIChmb3VuZCkge1xuICAgIC8vIEluZGV4IHNpZ25hdHVyZXMgYXJlIHR5cGUgZGVjbGFyYXRpb25zLCBzbyBzZXQgdGhlIG1vZGlmaWVyIHRva2VucyBhc1xuICAgIC8vIHR5cGUgdG9rZW5zLiBNb3N0IHRva2VucyBjb3VsZCBiZSBhc3N1bWVkIHRvIGJlIHR5cGUgdG9rZW5zLCBidXQgYHN0YXRpY2BcbiAgICAvLyBpcyBhbWJpZ3VvdXMgdW5sZXNzIHdlIHNldCBpdCBleHBsaWNpdGx5IGhlcmUuXG4gICAgY29uc3QgbWVtYmVyU3RhcnRJbmRleCA9IGlzU3RhdGljXG4gICAgICA/IG1lbWJlclN0YXJ0SW5kZXhBZnRlclN0YXRpYyAtIDFcbiAgICAgIDogbWVtYmVyU3RhcnRJbmRleEFmdGVyU3RhdGljO1xuICAgIGZvciAobGV0IGkgPSBtZW1iZXJTdGFydEluZGV4OyBpIDwgbW9kaWZpZXJzRW5kSW5kZXg7IGkrKykge1xuICAgICAgX2Jhc2Uuc3RhdGUudG9rZW5zW2ldLmlzVHlwZSA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn0gZXhwb3J0cy50c1RyeVBhcnNlQ2xhc3NNZW1iZXJXaXRoSXNTdGF0aWMgPSB0c1RyeVBhcnNlQ2xhc3NNZW1iZXJXaXRoSXNTdGF0aWM7XG5cbi8vIE5vdGU6IFRoZSByZWFzb24gd2UgZG8gdGhpcyBpbiBgcGFyc2VJZGVudGlmaWVyU3RhdGVtZW50YCBhbmQgbm90IGBwYXJzZVN0YXRlbWVudGBcbi8vIGlzIHRoYXQgZS5nLiBgdHlwZSgpYCBpcyB2YWxpZCBKUywgc28gd2UgbXVzdCB0cnkgcGFyc2luZyB0aGF0IGZpcnN0LlxuLy8gSWYgaXQncyByZWFsbHkgYSB0eXBlLCB3ZSB3aWxsIHBhcnNlIGB0eXBlYCBhcyB0aGUgc3RhdGVtZW50LCBhbmQgY2FuIGNvcnJlY3QgaXQgaGVyZVxuLy8gYnkgcGFyc2luZyB0aGUgcmVzdC5cbiBmdW5jdGlvbiB0c1BhcnNlSWRlbnRpZmllclN0YXRlbWVudChjb250ZXh0dWFsS2V5d29yZCkge1xuICBjb25zdCBtYXRjaGVkID0gdHNQYXJzZUV4cHJlc3Npb25TdGF0ZW1lbnQoY29udGV4dHVhbEtleXdvcmQpO1xuICBpZiAoIW1hdGNoZWQpIHtcbiAgICBfdXRpbC5zZW1pY29sb24uY2FsbCh2b2lkIDAsICk7XG4gIH1cbn0gZXhwb3J0cy50c1BhcnNlSWRlbnRpZmllclN0YXRlbWVudCA9IHRzUGFyc2VJZGVudGlmaWVyU3RhdGVtZW50O1xuXG4gZnVuY3Rpb24gdHNQYXJzZUV4cG9ydERlY2xhcmF0aW9uKCkge1xuICAvLyBcImV4cG9ydCBkZWNsYXJlXCIgaXMgZXF1aXZhbGVudCB0byBqdXN0IFwiZXhwb3J0XCIuXG4gIGNvbnN0IGlzRGVjbGFyZSA9IF91dGlsLmVhdENvbnRleHR1YWwuY2FsbCh2b2lkIDAsIF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fZGVjbGFyZSk7XG4gIGlmIChpc0RlY2xhcmUpIHtcbiAgICBfYmFzZS5zdGF0ZS50b2tlbnNbX2Jhc2Uuc3RhdGUudG9rZW5zLmxlbmd0aCAtIDFdLnR5cGUgPSBfdHlwZXMuVG9rZW5UeXBlLl9kZWNsYXJlO1xuICB9XG5cbiAgbGV0IG1hdGNoZWREZWNsYXJhdGlvbiA9IGZhbHNlO1xuICBpZiAoX2luZGV4Lm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLm5hbWUpKSB7XG4gICAgaWYgKGlzRGVjbGFyZSkge1xuICAgICAgY29uc3Qgb2xkSXNUeXBlID0gX2luZGV4LnB1c2hUeXBlQ29udGV4dC5jYWxsKHZvaWQgMCwgMik7XG4gICAgICBtYXRjaGVkRGVjbGFyYXRpb24gPSB0c1RyeVBhcnNlRXhwb3J0RGVjbGFyYXRpb24oKTtcbiAgICAgIF9pbmRleC5wb3BUeXBlQ29udGV4dC5jYWxsKHZvaWQgMCwgb2xkSXNUeXBlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbWF0Y2hlZERlY2xhcmF0aW9uID0gdHNUcnlQYXJzZUV4cG9ydERlY2xhcmF0aW9uKCk7XG4gICAgfVxuICB9XG4gIGlmICghbWF0Y2hlZERlY2xhcmF0aW9uKSB7XG4gICAgaWYgKGlzRGVjbGFyZSkge1xuICAgICAgY29uc3Qgb2xkSXNUeXBlID0gX2luZGV4LnB1c2hUeXBlQ29udGV4dC5jYWxsKHZvaWQgMCwgMik7XG4gICAgICBfc3RhdGVtZW50LnBhcnNlU3RhdGVtZW50LmNhbGwodm9pZCAwLCB0cnVlKTtcbiAgICAgIF9pbmRleC5wb3BUeXBlQ29udGV4dC5jYWxsKHZvaWQgMCwgb2xkSXNUeXBlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgX3N0YXRlbWVudC5wYXJzZVN0YXRlbWVudC5jYWxsKHZvaWQgMCwgdHJ1ZSk7XG4gICAgfVxuICB9XG59IGV4cG9ydHMudHNQYXJzZUV4cG9ydERlY2xhcmF0aW9uID0gdHNQYXJzZUV4cG9ydERlY2xhcmF0aW9uO1xuXG4gZnVuY3Rpb24gdHNBZnRlclBhcnNlQ2xhc3NTdXBlcihoYXNTdXBlcikge1xuICBpZiAoaGFzU3VwZXIgJiYgKF9pbmRleC5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5sZXNzVGhhbikgfHwgX2luZGV4Lm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmJpdFNoaWZ0TCkpKSB7XG4gICAgdHNQYXJzZVR5cGVBcmd1bWVudHNXaXRoUG9zc2libGVCaXRzaGlmdCgpO1xuICB9XG4gIGlmIChfdXRpbC5lYXRDb250ZXh0dWFsLmNhbGwodm9pZCAwLCBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX2ltcGxlbWVudHMpKSB7XG4gICAgX2Jhc2Uuc3RhdGUudG9rZW5zW19iYXNlLnN0YXRlLnRva2Vucy5sZW5ndGggLSAxXS50eXBlID0gX3R5cGVzLlRva2VuVHlwZS5faW1wbGVtZW50cztcbiAgICBjb25zdCBvbGRJc1R5cGUgPSBfaW5kZXgucHVzaFR5cGVDb250ZXh0LmNhbGwodm9pZCAwLCAxKTtcbiAgICB0c1BhcnNlSGVyaXRhZ2VDbGF1c2UoKTtcbiAgICBfaW5kZXgucG9wVHlwZUNvbnRleHQuY2FsbCh2b2lkIDAsIG9sZElzVHlwZSk7XG4gIH1cbn0gZXhwb3J0cy50c0FmdGVyUGFyc2VDbGFzc1N1cGVyID0gdHNBZnRlclBhcnNlQ2xhc3NTdXBlcjtcblxuIGZ1bmN0aW9uIHRzU3RhcnRQYXJzZU9ialByb3BWYWx1ZSgpIHtcbiAgdHNUcnlQYXJzZVR5cGVQYXJhbWV0ZXJzKCk7XG59IGV4cG9ydHMudHNTdGFydFBhcnNlT2JqUHJvcFZhbHVlID0gdHNTdGFydFBhcnNlT2JqUHJvcFZhbHVlO1xuXG4gZnVuY3Rpb24gdHNTdGFydFBhcnNlRnVuY3Rpb25QYXJhbXMoKSB7XG4gIHRzVHJ5UGFyc2VUeXBlUGFyYW1ldGVycygpO1xufSBleHBvcnRzLnRzU3RhcnRQYXJzZUZ1bmN0aW9uUGFyYW1zID0gdHNTdGFydFBhcnNlRnVuY3Rpb25QYXJhbXM7XG5cbi8vIGBsZXQgeDogbnVtYmVyO2BcbiBmdW5jdGlvbiB0c0FmdGVyUGFyc2VWYXJIZWFkKCkge1xuICBjb25zdCBvbGRJc1R5cGUgPSBfaW5kZXgucHVzaFR5cGVDb250ZXh0LmNhbGwodm9pZCAwLCAwKTtcbiAgaWYgKCFfdXRpbC5oYXNQcmVjZWRpbmdMaW5lQnJlYWsuY2FsbCh2b2lkIDAsICkpIHtcbiAgICBfaW5kZXguZWF0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmJhbmcpO1xuICB9XG4gIHRzVHJ5UGFyc2VUeXBlQW5ub3RhdGlvbigpO1xuICBfaW5kZXgucG9wVHlwZUNvbnRleHQuY2FsbCh2b2lkIDAsIG9sZElzVHlwZSk7XG59IGV4cG9ydHMudHNBZnRlclBhcnNlVmFySGVhZCA9IHRzQWZ0ZXJQYXJzZVZhckhlYWQ7XG5cbi8vIHBhcnNlIHRoZSByZXR1cm4gdHlwZSBvZiBhbiBhc3luYyBhcnJvdyBmdW5jdGlvbiAtIGxldCBmb28gPSAoYXN5bmMgKCk6IG51bWJlciA9PiB7fSk7XG4gZnVuY3Rpb24gdHNTdGFydFBhcnNlQXN5bmNBcnJvd0Zyb21DYWxsRXhwcmVzc2lvbigpIHtcbiAgaWYgKF9pbmRleC5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5jb2xvbikpIHtcbiAgICB0c1BhcnNlVHlwZUFubm90YXRpb24oKTtcbiAgfVxufSBleHBvcnRzLnRzU3RhcnRQYXJzZUFzeW5jQXJyb3dGcm9tQ2FsbEV4cHJlc3Npb24gPSB0c1N0YXJ0UGFyc2VBc3luY0Fycm93RnJvbUNhbGxFeHByZXNzaW9uO1xuXG4vLyBSZXR1cm5zIHRydWUgaWYgdGhlIGV4cHJlc3Npb24gd2FzIGFuIGFycm93IGZ1bmN0aW9uLlxuIGZ1bmN0aW9uIHRzUGFyc2VNYXliZUFzc2lnbihub0luLCBpc1dpdGhpblBhcmVucykge1xuICAvLyBOb3RlOiBXaGVuIHRoZSBKU1ggcGx1Z2luIGlzIG9uLCB0eXBlIGFzc2VydGlvbnMgKGA8VD4geGApIGFyZW4ndCB2YWxpZCBzeW50YXguXG4gIGlmIChfYmFzZS5pc0pTWEVuYWJsZWQpIHtcbiAgICByZXR1cm4gdHNQYXJzZU1heWJlQXNzaWduV2l0aEpTWChub0luLCBpc1dpdGhpblBhcmVucyk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHRzUGFyc2VNYXliZUFzc2lnbldpdGhvdXRKU1gobm9JbiwgaXNXaXRoaW5QYXJlbnMpO1xuICB9XG59IGV4cG9ydHMudHNQYXJzZU1heWJlQXNzaWduID0gdHNQYXJzZU1heWJlQXNzaWduO1xuXG4gZnVuY3Rpb24gdHNQYXJzZU1heWJlQXNzaWduV2l0aEpTWChub0luLCBpc1dpdGhpblBhcmVucykge1xuICBpZiAoIV9pbmRleC5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5sZXNzVGhhbikpIHtcbiAgICByZXR1cm4gX2V4cHJlc3Npb24uYmFzZVBhcnNlTWF5YmVBc3NpZ24uY2FsbCh2b2lkIDAsIG5vSW4sIGlzV2l0aGluUGFyZW5zKTtcbiAgfVxuXG4gIC8vIFByZWZlciB0byBwYXJzZSBKU1ggaWYgcG9zc2libGUuIEJ1dCBtYXkgYmUgYW4gYXJyb3cgZm4uXG4gIGNvbnN0IHNuYXBzaG90ID0gX2Jhc2Uuc3RhdGUuc25hcHNob3QoKTtcbiAgbGV0IHdhc0Fycm93ID0gX2V4cHJlc3Npb24uYmFzZVBhcnNlTWF5YmVBc3NpZ24uY2FsbCh2b2lkIDAsIG5vSW4sIGlzV2l0aGluUGFyZW5zKTtcbiAgaWYgKF9iYXNlLnN0YXRlLmVycm9yKSB7XG4gICAgX2Jhc2Uuc3RhdGUucmVzdG9yZUZyb21TbmFwc2hvdChzbmFwc2hvdCk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHdhc0Fycm93O1xuICB9XG5cbiAgLy8gT3RoZXJ3aXNlLCB0cnkgYXMgdHlwZS1wYXJhbWV0ZXJpemVkIGFycm93IGZ1bmN0aW9uLlxuICBfYmFzZS5zdGF0ZS50eXBlID0gX3R5cGVzLlRva2VuVHlwZS50eXBlUGFyYW1ldGVyU3RhcnQ7XG4gIC8vIFRoaXMgaXMgc2ltaWxhciB0byBUeXBlU2NyaXB0J3MgYHRyeVBhcnNlUGFyZW50aGVzaXplZEFycm93RnVuY3Rpb25FeHByZXNzaW9uYC5cbiAgdHNQYXJzZVR5cGVQYXJhbWV0ZXJzKCk7XG4gIHdhc0Fycm93ID0gX2V4cHJlc3Npb24uYmFzZVBhcnNlTWF5YmVBc3NpZ24uY2FsbCh2b2lkIDAsIG5vSW4sIGlzV2l0aGluUGFyZW5zKTtcbiAgaWYgKCF3YXNBcnJvdykge1xuICAgIF91dGlsLnVuZXhwZWN0ZWQuY2FsbCh2b2lkIDAsICk7XG4gIH1cblxuICByZXR1cm4gd2FzQXJyb3c7XG59IGV4cG9ydHMudHNQYXJzZU1heWJlQXNzaWduV2l0aEpTWCA9IHRzUGFyc2VNYXliZUFzc2lnbldpdGhKU1g7XG5cbiBmdW5jdGlvbiB0c1BhcnNlTWF5YmVBc3NpZ25XaXRob3V0SlNYKG5vSW4sIGlzV2l0aGluUGFyZW5zKSB7XG4gIGlmICghX2luZGV4Lm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmxlc3NUaGFuKSkge1xuICAgIHJldHVybiBfZXhwcmVzc2lvbi5iYXNlUGFyc2VNYXliZUFzc2lnbi5jYWxsKHZvaWQgMCwgbm9JbiwgaXNXaXRoaW5QYXJlbnMpO1xuICB9XG5cbiAgY29uc3Qgc25hcHNob3QgPSBfYmFzZS5zdGF0ZS5zbmFwc2hvdCgpO1xuICAvLyBUaGlzIGlzIHNpbWlsYXIgdG8gVHlwZVNjcmlwdCdzIGB0cnlQYXJzZVBhcmVudGhlc2l6ZWRBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbmAuXG4gIHRzUGFyc2VUeXBlUGFyYW1ldGVycygpO1xuICBjb25zdCB3YXNBcnJvdyA9IF9leHByZXNzaW9uLmJhc2VQYXJzZU1heWJlQXNzaWduLmNhbGwodm9pZCAwLCBub0luLCBpc1dpdGhpblBhcmVucyk7XG4gIGlmICghd2FzQXJyb3cpIHtcbiAgICBfdXRpbC51bmV4cGVjdGVkLmNhbGwodm9pZCAwLCApO1xuICB9XG4gIGlmIChfYmFzZS5zdGF0ZS5lcnJvcikge1xuICAgIF9iYXNlLnN0YXRlLnJlc3RvcmVGcm9tU25hcHNob3Qoc25hcHNob3QpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB3YXNBcnJvdztcbiAgfVxuXG4gIC8vIFRyeSBwYXJzaW5nIGEgdHlwZSBjYXN0IGluc3RlYWQgb2YgYW4gYXJyb3cgZnVuY3Rpb24uXG4gIC8vIFRoaXMgd2lsbCBzdGFydCB3aXRoIGEgdHlwZSBhc3NlcnRpb24gKHZpYSBwYXJzZU1heWJlVW5hcnkpLlxuICAvLyBCdXQgZG9uJ3QgZGlyZWN0bHkgY2FsbCBgdHNQYXJzZVR5cGVBc3NlcnRpb25gIGJlY2F1c2Ugd2Ugd2FudCB0byBoYW5kbGUgYW55IGJpbmFyeSBhZnRlciBpdC5cbiAgcmV0dXJuIF9leHByZXNzaW9uLmJhc2VQYXJzZU1heWJlQXNzaWduLmNhbGwodm9pZCAwLCBub0luLCBpc1dpdGhpblBhcmVucyk7XG59IGV4cG9ydHMudHNQYXJzZU1heWJlQXNzaWduV2l0aG91dEpTWCA9IHRzUGFyc2VNYXliZUFzc2lnbldpdGhvdXRKU1g7XG5cbiBmdW5jdGlvbiB0c1BhcnNlQXJyb3coKSB7XG4gIGlmIChfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuY29sb24pKSB7XG4gICAgLy8gVGhpcyBpcyBkaWZmZXJlbnQgZnJvbSBob3cgdGhlIFRTIHBhcnNlciBkb2VzIGl0LlxuICAgIC8vIFRTIHVzZXMgbG9va2FoZWFkLiBCYWJ5bG9uIHBhcnNlcyBpdCBhcyBhIHBhcmVudGhlc2l6ZWQgZXhwcmVzc2lvbiBhbmQgY29udmVydHMuXG4gICAgY29uc3Qgc25hcHNob3QgPSBfYmFzZS5zdGF0ZS5zbmFwc2hvdCgpO1xuXG4gICAgdHNQYXJzZVR5cGVPclR5cGVQcmVkaWNhdGVBbm5vdGF0aW9uKF90eXBlcy5Ub2tlblR5cGUuY29sb24pO1xuICAgIGlmIChfdXRpbC5jYW5JbnNlcnRTZW1pY29sb24uY2FsbCh2b2lkIDAsICkpIF91dGlsLnVuZXhwZWN0ZWQuY2FsbCh2b2lkIDAsICk7XG4gICAgaWYgKCFfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuYXJyb3cpKSBfdXRpbC51bmV4cGVjdGVkLmNhbGwodm9pZCAwLCApO1xuXG4gICAgaWYgKF9iYXNlLnN0YXRlLmVycm9yKSB7XG4gICAgICBfYmFzZS5zdGF0ZS5yZXN0b3JlRnJvbVNuYXBzaG90KHNuYXBzaG90KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIF9pbmRleC5lYXQuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuYXJyb3cpO1xufSBleHBvcnRzLnRzUGFyc2VBcnJvdyA9IHRzUGFyc2VBcnJvdztcblxuLy8gQWxsb3cgdHlwZSBhbm5vdGF0aW9ucyBpbnNpZGUgb2YgYSBwYXJhbWV0ZXIgbGlzdC5cbiBmdW5jdGlvbiB0c1BhcnNlQXNzaWduYWJsZUxpc3RJdGVtVHlwZXMoKSB7XG4gIGNvbnN0IG9sZElzVHlwZSA9IF9pbmRleC5wdXNoVHlwZUNvbnRleHQuY2FsbCh2b2lkIDAsIDApO1xuICBfaW5kZXguZWF0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLnF1ZXN0aW9uKTtcbiAgdHNUcnlQYXJzZVR5cGVBbm5vdGF0aW9uKCk7XG4gIF9pbmRleC5wb3BUeXBlQ29udGV4dC5jYWxsKHZvaWQgMCwgb2xkSXNUeXBlKTtcbn0gZXhwb3J0cy50c1BhcnNlQXNzaWduYWJsZUxpc3RJdGVtVHlwZXMgPSB0c1BhcnNlQXNzaWduYWJsZUxpc3RJdGVtVHlwZXM7XG5cbiBmdW5jdGlvbiB0c1BhcnNlTWF5YmVEZWNvcmF0b3JBcmd1bWVudHMoKSB7XG4gIGlmIChfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUubGVzc1RoYW4pIHx8IF9pbmRleC5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5iaXRTaGlmdEwpKSB7XG4gICAgdHNQYXJzZVR5cGVBcmd1bWVudHNXaXRoUG9zc2libGVCaXRzaGlmdCgpO1xuICB9XG4gIF9zdGF0ZW1lbnQuYmFzZVBhcnNlTWF5YmVEZWNvcmF0b3JBcmd1bWVudHMuY2FsbCh2b2lkIDAsICk7XG59IGV4cG9ydHMudHNQYXJzZU1heWJlRGVjb3JhdG9yQXJndW1lbnRzID0gdHNQYXJzZU1heWJlRGVjb3JhdG9yQXJndW1lbnRzO1xuIiwgIlwidXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge3ZhbHVlOiB0cnVlfSk7XG5cblxuXG5cblxuXG5cblxuXG52YXIgX2luZGV4ID0gcmVxdWlyZSgnLi4vLi4vdG9rZW5pemVyL2luZGV4Jyk7XG52YXIgX3R5cGVzID0gcmVxdWlyZSgnLi4vLi4vdG9rZW5pemVyL3R5cGVzJyk7XG52YXIgX2Jhc2UgPSByZXF1aXJlKCcuLi8uLi90cmF2ZXJzZXIvYmFzZScpO1xudmFyIF9leHByZXNzaW9uID0gcmVxdWlyZSgnLi4vLi4vdHJhdmVyc2VyL2V4cHJlc3Npb24nKTtcbnZhciBfdXRpbCA9IHJlcXVpcmUoJy4uLy4uL3RyYXZlcnNlci91dGlsJyk7XG52YXIgX2NoYXJjb2RlcyA9IHJlcXVpcmUoJy4uLy4uL3V0aWwvY2hhcmNvZGVzJyk7XG52YXIgX2lkZW50aWZpZXIgPSByZXF1aXJlKCcuLi8uLi91dGlsL2lkZW50aWZpZXInKTtcbnZhciBfdHlwZXNjcmlwdCA9IHJlcXVpcmUoJy4uL3R5cGVzY3JpcHQnKTtcblxuLyoqXG4gKiBSZWFkIHRva2VuIHdpdGggSlNYIGNvbnRlbnRzLlxuICpcbiAqIEluIGFkZGl0aW9uIHRvIGRldGVjdGluZyBqc3hUYWdTdGFydCBhbmQgYWxzbyByZWd1bGFyIHRva2VucyB0aGF0IG1pZ2h0IGJlXG4gKiBwYXJ0IG9mIGFuIGV4cHJlc3Npb24sIHRoaXMgY29kZSBkZXRlY3RzIHRoZSBzdGFydCBhbmQgZW5kIG9mIHRleHQgcmFuZ2VzXG4gKiB3aXRoaW4gSlNYIGNoaWxkcmVuLiBJbiBvcmRlciB0byBwcm9wZXJseSBjb3VudCB0aGUgbnVtYmVyIG9mIGNoaWxkcmVuLCB3ZVxuICogZGlzdGluZ3Vpc2gganN4VGV4dCBmcm9tIGpzeEVtcHR5VGV4dCwgd2hpY2ggaXMgYSB0ZXh0IHJhbmdlIHRoYXQgc2ltcGxpZmllc1xuICogdG8gdGhlIGVtcHR5IHN0cmluZyBhZnRlciBKU1ggd2hpdGVzcGFjZSB0cmltbWluZy5cbiAqXG4gKiBJdCB0dXJucyBvdXQgdGhhdCBhIEpTWCB0ZXh0IHJhbmdlIHdpbGwgc2ltcGxpZnkgdG8gdGhlIGVtcHR5IHN0cmluZyBpZiBhbmRcbiAqIG9ubHkgaWYgYm90aCBvZiB0aGVzZSBjb25kaXRpb25zIGhvbGQ6XG4gKiAtIFRoZSByYW5nZSBjb25zaXN0cyBlbnRpcmVseSBvZiB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMgKG9ubHkgY291bnRpbmcgc3BhY2UsXG4gKiAgIHRhYiwgXFxyLCBhbmQgXFxuKS5cbiAqIC0gVGhlIHJhbmdlIGhhcyBhdCBsZWFzdCBvbmUgbmV3bGluZS5cbiAqIFRoaXMgY2FuIGJlIHByb3ZlbiBieSBhbmFseXppbmcgYW55IGltcGxlbWVudGF0aW9uIG9mIHdoaXRlc3BhY2UgdHJpbW1pbmcsXG4gKiBlLmcuIGZvcm1hdEpTWFRleHRMaXRlcmFsIGluIFN1Y3Jhc2Ugb3IgY2xlYW5KU1hFbGVtZW50TGl0ZXJhbENoaWxkIGluIEJhYmVsLlxuICovXG5mdW5jdGlvbiBqc3hSZWFkVG9rZW4oKSB7XG4gIGxldCBzYXdOZXdsaW5lID0gZmFsc2U7XG4gIGxldCBzYXdOb25XaGl0ZXNwYWNlID0gZmFsc2U7XG4gIHdoaWxlICh0cnVlKSB7XG4gICAgaWYgKF9iYXNlLnN0YXRlLnBvcyA+PSBfYmFzZS5pbnB1dC5sZW5ndGgpIHtcbiAgICAgIF91dGlsLnVuZXhwZWN0ZWQuY2FsbCh2b2lkIDAsIFwiVW50ZXJtaW5hdGVkIEpTWCBjb250ZW50c1wiKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjaCA9IF9iYXNlLmlucHV0LmNoYXJDb2RlQXQoX2Jhc2Uuc3RhdGUucG9zKTtcbiAgICBpZiAoY2ggPT09IF9jaGFyY29kZXMuY2hhckNvZGVzLmxlc3NUaGFuIHx8IGNoID09PSBfY2hhcmNvZGVzLmNoYXJDb2Rlcy5sZWZ0Q3VybHlCcmFjZSkge1xuICAgICAgaWYgKF9iYXNlLnN0YXRlLnBvcyA9PT0gX2Jhc2Uuc3RhdGUuc3RhcnQpIHtcbiAgICAgICAgaWYgKGNoID09PSBfY2hhcmNvZGVzLmNoYXJDb2Rlcy5sZXNzVGhhbikge1xuICAgICAgICAgIF9iYXNlLnN0YXRlLnBvcysrO1xuICAgICAgICAgIF9pbmRleC5maW5pc2hUb2tlbi5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5qc3hUYWdTdGFydCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIF9pbmRleC5nZXRUb2tlbkZyb21Db2RlLmNhbGwodm9pZCAwLCBjaCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChzYXdOZXdsaW5lICYmICFzYXdOb25XaGl0ZXNwYWNlKSB7XG4gICAgICAgIF9pbmRleC5maW5pc2hUb2tlbi5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5qc3hFbXB0eVRleHQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgX2luZGV4LmZpbmlzaFRva2VuLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmpzeFRleHQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFRoaXMgaXMgcGFydCBvZiBKU1ggdGV4dC5cbiAgICBpZiAoY2ggPT09IF9jaGFyY29kZXMuY2hhckNvZGVzLmxpbmVGZWVkKSB7XG4gICAgICBzYXdOZXdsaW5lID0gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKGNoICE9PSBfY2hhcmNvZGVzLmNoYXJDb2Rlcy5zcGFjZSAmJiBjaCAhPT0gX2NoYXJjb2Rlcy5jaGFyQ29kZXMuY2FycmlhZ2VSZXR1cm4gJiYgY2ggIT09IF9jaGFyY29kZXMuY2hhckNvZGVzLnRhYikge1xuICAgICAgc2F3Tm9uV2hpdGVzcGFjZSA9IHRydWU7XG4gICAgfVxuICAgIF9iYXNlLnN0YXRlLnBvcysrO1xuICB9XG59XG5cbmZ1bmN0aW9uIGpzeFJlYWRTdHJpbmcocXVvdGUpIHtcbiAgX2Jhc2Uuc3RhdGUucG9zKys7XG4gIGZvciAoOzspIHtcbiAgICBpZiAoX2Jhc2Uuc3RhdGUucG9zID49IF9iYXNlLmlucHV0Lmxlbmd0aCkge1xuICAgICAgX3V0aWwudW5leHBlY3RlZC5jYWxsKHZvaWQgMCwgXCJVbnRlcm1pbmF0ZWQgc3RyaW5nIGNvbnN0YW50XCIpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGNoID0gX2Jhc2UuaW5wdXQuY2hhckNvZGVBdChfYmFzZS5zdGF0ZS5wb3MpO1xuICAgIGlmIChjaCA9PT0gcXVvdGUpIHtcbiAgICAgIF9iYXNlLnN0YXRlLnBvcysrO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIF9iYXNlLnN0YXRlLnBvcysrO1xuICB9XG4gIF9pbmRleC5maW5pc2hUb2tlbi5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5zdHJpbmcpO1xufVxuXG4vLyBSZWFkIGEgSlNYIGlkZW50aWZpZXIgKHZhbGlkIHRhZyBvciBhdHRyaWJ1dGUgbmFtZSkuXG4vL1xuLy8gT3B0aW1pemVkIHZlcnNpb24gc2luY2UgSlNYIGlkZW50aWZpZXJzIGNhbid0IGNvbnRhaW5cbi8vIGVzY2FwZSBjaGFyYWN0ZXJzIGFuZCBzbyBjYW4gYmUgcmVhZCBhcyBzaW5nbGUgc2xpY2UuXG4vLyBBbHNvIGFzc3VtZXMgdGhhdCBmaXJzdCBjaGFyYWN0ZXIgd2FzIGFscmVhZHkgY2hlY2tlZFxuLy8gYnkgaXNJZGVudGlmaWVyU3RhcnQgaW4gcmVhZFRva2VuLlxuXG5mdW5jdGlvbiBqc3hSZWFkV29yZCgpIHtcbiAgbGV0IGNoO1xuICBkbyB7XG4gICAgaWYgKF9iYXNlLnN0YXRlLnBvcyA+IF9iYXNlLmlucHV0Lmxlbmd0aCkge1xuICAgICAgX3V0aWwudW5leHBlY3RlZC5jYWxsKHZvaWQgMCwgXCJVbmV4cGVjdGVkbHkgcmVhY2hlZCB0aGUgZW5kIG9mIGlucHV0LlwiKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY2ggPSBfYmFzZS5pbnB1dC5jaGFyQ29kZUF0KCsrX2Jhc2Uuc3RhdGUucG9zKTtcbiAgfSB3aGlsZSAoX2lkZW50aWZpZXIuSVNfSURFTlRJRklFUl9DSEFSW2NoXSB8fCBjaCA9PT0gX2NoYXJjb2Rlcy5jaGFyQ29kZXMuZGFzaCk7XG4gIF9pbmRleC5maW5pc2hUb2tlbi5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5qc3hOYW1lKTtcbn1cblxuLy8gUGFyc2UgbmV4dCB0b2tlbiBhcyBKU1ggaWRlbnRpZmllclxuZnVuY3Rpb24ganN4UGFyc2VJZGVudGlmaWVyKCkge1xuICBuZXh0SlNYVGFnVG9rZW4oKTtcbn1cblxuLy8gUGFyc2UgbmFtZXNwYWNlZCBpZGVudGlmaWVyLlxuZnVuY3Rpb24ganN4UGFyc2VOYW1lc3BhY2VkTmFtZShpZGVudGlmaWVyUm9sZSkge1xuICBqc3hQYXJzZUlkZW50aWZpZXIoKTtcbiAgaWYgKCFfaW5kZXguZWF0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmNvbG9uKSkge1xuICAgIC8vIFBsYWluIGlkZW50aWZpZXIsIHNvIHRoaXMgaXMgYW4gYWNjZXNzLlxuICAgIF9iYXNlLnN0YXRlLnRva2Vuc1tfYmFzZS5zdGF0ZS50b2tlbnMubGVuZ3RoIC0gMV0uaWRlbnRpZmllclJvbGUgPSBpZGVudGlmaWVyUm9sZTtcbiAgICByZXR1cm47XG4gIH1cbiAgLy8gUHJvY2VzcyB0aGUgc2Vjb25kIGhhbGYgb2YgdGhlIG5hbWVzcGFjZWQgbmFtZS5cbiAganN4UGFyc2VJZGVudGlmaWVyKCk7XG59XG5cbi8vIFBhcnNlcyBlbGVtZW50IG5hbWUgaW4gYW55IGZvcm0gLSBuYW1lc3BhY2VkLCBtZW1iZXJcbi8vIG9yIHNpbmdsZSBpZGVudGlmaWVyLlxuZnVuY3Rpb24ganN4UGFyc2VFbGVtZW50TmFtZSgpIHtcbiAgY29uc3QgZmlyc3RUb2tlbkluZGV4ID0gX2Jhc2Uuc3RhdGUudG9rZW5zLmxlbmd0aDtcbiAganN4UGFyc2VOYW1lc3BhY2VkTmFtZShfaW5kZXguSWRlbnRpZmllclJvbGUuQWNjZXNzKTtcbiAgbGV0IGhhZERvdCA9IGZhbHNlO1xuICB3aGlsZSAoX2luZGV4Lm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmRvdCkpIHtcbiAgICBoYWREb3QgPSB0cnVlO1xuICAgIG5leHRKU1hUYWdUb2tlbigpO1xuICAgIGpzeFBhcnNlSWRlbnRpZmllcigpO1xuICB9XG4gIC8vIEZvciB0YWdzIGxpa2UgPGRpdj4gd2l0aCBhIGxvd2VyY2FzZSBsZXR0ZXIgYW5kIG5vIGRvdHMsIHRoZSBuYW1lIGlzXG4gIC8vIGFjdHVhbGx5ICpub3QqIGFuIGlkZW50aWZpZXIgYWNjZXNzLCBzaW5jZSBpdCdzIHJlZmVycmluZyB0byBhIGJ1aWx0LWluXG4gIC8vIHRhZyBuYW1lLiBSZW1vdmUgdGhlIGlkZW50aWZpZXIgcm9sZSBpbiB0aGlzIGNhc2Ugc28gdGhhdCBpdCdzIG5vdFxuICAvLyBhY2NpZGVudGFsbHkgdHJhbnNmb3JtZWQgYnkgdGhlIGltcG9ydHMgdHJhbnNmb3JtIHdoZW4gcHJlc2VydmluZyBKU1guXG4gIGlmICghaGFkRG90KSB7XG4gICAgY29uc3QgZmlyc3RUb2tlbiA9IF9iYXNlLnN0YXRlLnRva2Vuc1tmaXJzdFRva2VuSW5kZXhdO1xuICAgIGNvbnN0IGZpcnN0Q2hhciA9IF9iYXNlLmlucHV0LmNoYXJDb2RlQXQoZmlyc3RUb2tlbi5zdGFydCk7XG4gICAgaWYgKGZpcnN0Q2hhciA+PSBfY2hhcmNvZGVzLmNoYXJDb2Rlcy5sb3dlcmNhc2VBICYmIGZpcnN0Q2hhciA8PSBfY2hhcmNvZGVzLmNoYXJDb2Rlcy5sb3dlcmNhc2VaKSB7XG4gICAgICBmaXJzdFRva2VuLmlkZW50aWZpZXJSb2xlID0gbnVsbDtcbiAgICB9XG4gIH1cbn1cblxuLy8gUGFyc2VzIGFueSB0eXBlIG9mIEpTWCBhdHRyaWJ1dGUgdmFsdWUuXG5mdW5jdGlvbiBqc3hQYXJzZUF0dHJpYnV0ZVZhbHVlKCkge1xuICBzd2l0Y2ggKF9iYXNlLnN0YXRlLnR5cGUpIHtcbiAgICBjYXNlIF90eXBlcy5Ub2tlblR5cGUuYnJhY2VMOlxuICAgICAgX2luZGV4Lm5leHQuY2FsbCh2b2lkIDAsICk7XG4gICAgICBfZXhwcmVzc2lvbi5wYXJzZUV4cHJlc3Npb24uY2FsbCh2b2lkIDAsICk7XG4gICAgICBuZXh0SlNYVGFnVG9rZW4oKTtcbiAgICAgIHJldHVybjtcblxuICAgIGNhc2UgX3R5cGVzLlRva2VuVHlwZS5qc3hUYWdTdGFydDpcbiAgICAgIGpzeFBhcnNlRWxlbWVudCgpO1xuICAgICAgbmV4dEpTWFRhZ1Rva2VuKCk7XG4gICAgICByZXR1cm47XG5cbiAgICBjYXNlIF90eXBlcy5Ub2tlblR5cGUuc3RyaW5nOlxuICAgICAgbmV4dEpTWFRhZ1Rva2VuKCk7XG4gICAgICByZXR1cm47XG5cbiAgICBkZWZhdWx0OlxuICAgICAgX3V0aWwudW5leHBlY3RlZC5jYWxsKHZvaWQgMCwgXCJKU1ggdmFsdWUgc2hvdWxkIGJlIGVpdGhlciBhbiBleHByZXNzaW9uIG9yIGEgcXVvdGVkIEpTWCB0ZXh0XCIpO1xuICB9XG59XG5cbi8vIFBhcnNlIEpTWCBzcHJlYWQgY2hpbGQsIGFmdGVyIGFscmVhZHkgcHJvY2Vzc2luZyB0aGUge1xuLy8gRG9lcyBub3QgcGFyc2UgdGhlIGNsb3NpbmcgfVxuZnVuY3Rpb24ganN4UGFyc2VTcHJlYWRDaGlsZCgpIHtcbiAgX3V0aWwuZXhwZWN0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmVsbGlwc2lzKTtcbiAgX2V4cHJlc3Npb24ucGFyc2VFeHByZXNzaW9uLmNhbGwodm9pZCAwLCApO1xufVxuXG4vLyBQYXJzZXMgSlNYIG9wZW5pbmcgdGFnIHN0YXJ0aW5nIGFmdGVyIFwiPFwiLlxuLy8gUmV0dXJucyB0cnVlIGlmIHRoZSB0YWcgd2FzIHNlbGYtY2xvc2luZy5cbi8vIERvZXMgbm90IHBhcnNlIHRoZSBsYXN0IHRva2VuLlxuZnVuY3Rpb24ganN4UGFyc2VPcGVuaW5nRWxlbWVudChpbml0aWFsVG9rZW5JbmRleCkge1xuICBpZiAoX2luZGV4Lm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmpzeFRhZ0VuZCkpIHtcbiAgICAvLyBUaGlzIGlzIGFuIG9wZW4tZnJhZ21lbnQuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGpzeFBhcnNlRWxlbWVudE5hbWUoKTtcbiAgaWYgKF9iYXNlLmlzVHlwZVNjcmlwdEVuYWJsZWQpIHtcbiAgICBfdHlwZXNjcmlwdC50c1RyeVBhcnNlSlNYVHlwZUFyZ3VtZW50LmNhbGwodm9pZCAwLCApO1xuICB9XG4gIGxldCBoYXNTZWVuUHJvcFNwcmVhZCA9IGZhbHNlO1xuICB3aGlsZSAoIV9pbmRleC5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5zbGFzaCkgJiYgIV9pbmRleC5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5qc3hUYWdFbmQpICYmICFfYmFzZS5zdGF0ZS5lcnJvcikge1xuICAgIGlmIChfaW5kZXguZWF0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmJyYWNlTCkpIHtcbiAgICAgIGhhc1NlZW5Qcm9wU3ByZWFkID0gdHJ1ZTtcbiAgICAgIF91dGlsLmV4cGVjdC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5lbGxpcHNpcyk7XG4gICAgICBfZXhwcmVzc2lvbi5wYXJzZU1heWJlQXNzaWduLmNhbGwodm9pZCAwLCApO1xuICAgICAgLy8gfVxuICAgICAgbmV4dEpTWFRhZ1Rva2VuKCk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgaGFzU2VlblByb3BTcHJlYWQgJiZcbiAgICAgIF9iYXNlLnN0YXRlLmVuZCAtIF9iYXNlLnN0YXRlLnN0YXJ0ID09PSAzICYmXG4gICAgICBfYmFzZS5pbnB1dC5jaGFyQ29kZUF0KF9iYXNlLnN0YXRlLnN0YXJ0KSA9PT0gX2NoYXJjb2Rlcy5jaGFyQ29kZXMubG93ZXJjYXNlSyAmJlxuICAgICAgX2Jhc2UuaW5wdXQuY2hhckNvZGVBdChfYmFzZS5zdGF0ZS5zdGFydCArIDEpID09PSBfY2hhcmNvZGVzLmNoYXJDb2Rlcy5sb3dlcmNhc2VFICYmXG4gICAgICBfYmFzZS5pbnB1dC5jaGFyQ29kZUF0KF9iYXNlLnN0YXRlLnN0YXJ0ICsgMikgPT09IF9jaGFyY29kZXMuY2hhckNvZGVzLmxvd2VyY2FzZVlcbiAgICApIHtcbiAgICAgIF9iYXNlLnN0YXRlLnRva2Vuc1tpbml0aWFsVG9rZW5JbmRleF0uanN4Um9sZSA9IF9pbmRleC5KU1hSb2xlLktleUFmdGVyUHJvcFNwcmVhZDtcbiAgICB9XG4gICAganN4UGFyc2VOYW1lc3BhY2VkTmFtZShfaW5kZXguSWRlbnRpZmllclJvbGUuT2JqZWN0S2V5KTtcbiAgICBpZiAoX2luZGV4Lm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmVxKSkge1xuICAgICAgbmV4dEpTWFRhZ1Rva2VuKCk7XG4gICAgICBqc3hQYXJzZUF0dHJpYnV0ZVZhbHVlKCk7XG4gICAgfVxuICB9XG4gIGNvbnN0IGlzU2VsZkNsb3NpbmcgPSBfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuc2xhc2gpO1xuICBpZiAoaXNTZWxmQ2xvc2luZykge1xuICAgIC8vIC9cbiAgICBuZXh0SlNYVGFnVG9rZW4oKTtcbiAgfVxuICByZXR1cm4gaXNTZWxmQ2xvc2luZztcbn1cblxuLy8gUGFyc2VzIEpTWCBjbG9zaW5nIHRhZyBzdGFydGluZyBhZnRlciBcIjwvXCIuXG4vLyBEb2VzIG5vdCBwYXJzZSB0aGUgbGFzdCB0b2tlbi5cbmZ1bmN0aW9uIGpzeFBhcnNlQ2xvc2luZ0VsZW1lbnQoKSB7XG4gIGlmIChfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuanN4VGFnRW5kKSkge1xuICAgIC8vIEZyYWdtZW50IHN5bnRheCwgc28gd2UgaW1tZWRpYXRlbHkgaGF2ZSBhIHRhZyBlbmQuXG4gICAgcmV0dXJuO1xuICB9XG4gIGpzeFBhcnNlRWxlbWVudE5hbWUoKTtcbn1cblxuLy8gUGFyc2VzIGVudGlyZSBKU1ggZWxlbWVudCwgaW5jbHVkaW5nIGl0cyBvcGVuaW5nIHRhZ1xuLy8gKHN0YXJ0aW5nIGFmdGVyIFwiPFwiKSwgYXR0cmlidXRlcywgY29udGVudHMgYW5kIGNsb3NpbmcgdGFnLlxuLy8gRG9lcyBub3QgcGFyc2UgdGhlIGxhc3QgdG9rZW4uXG5mdW5jdGlvbiBqc3hQYXJzZUVsZW1lbnRBdCgpIHtcbiAgY29uc3QgaW5pdGlhbFRva2VuSW5kZXggPSBfYmFzZS5zdGF0ZS50b2tlbnMubGVuZ3RoIC0gMTtcbiAgX2Jhc2Uuc3RhdGUudG9rZW5zW2luaXRpYWxUb2tlbkluZGV4XS5qc3hSb2xlID0gX2luZGV4LkpTWFJvbGUuTm9DaGlsZHJlbjtcbiAgbGV0IG51bUV4cGxpY2l0Q2hpbGRyZW4gPSAwO1xuICBjb25zdCBpc1NlbGZDbG9zaW5nID0ganN4UGFyc2VPcGVuaW5nRWxlbWVudChpbml0aWFsVG9rZW5JbmRleCk7XG4gIGlmICghaXNTZWxmQ2xvc2luZykge1xuICAgIG5leHRKU1hFeHByVG9rZW4oKTtcbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgc3dpdGNoIChfYmFzZS5zdGF0ZS50eXBlKSB7XG4gICAgICAgIGNhc2UgX3R5cGVzLlRva2VuVHlwZS5qc3hUYWdTdGFydDpcbiAgICAgICAgICBuZXh0SlNYVGFnVG9rZW4oKTtcbiAgICAgICAgICBpZiAoX2luZGV4Lm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLnNsYXNoKSkge1xuICAgICAgICAgICAgbmV4dEpTWFRhZ1Rva2VuKCk7XG4gICAgICAgICAgICBqc3hQYXJzZUNsb3NpbmdFbGVtZW50KCk7XG4gICAgICAgICAgICAvLyBLZXkgYWZ0ZXIgcHJvcCBzcHJlYWQgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIG51bWJlciBvZiBjaGlsZHJlbixcbiAgICAgICAgICAgIC8vIHNpbmNlIGl0IG1lYW5zIHdlIHN3aXRjaCB0byBjcmVhdGVFbGVtZW50LCB3aGljaCBkb2Vzbid0IGNhcmVcbiAgICAgICAgICAgIC8vIGFib3V0IG51bWJlciBvZiBjaGlsZHJlbi5cbiAgICAgICAgICAgIGlmIChfYmFzZS5zdGF0ZS50b2tlbnNbaW5pdGlhbFRva2VuSW5kZXhdLmpzeFJvbGUgIT09IF9pbmRleC5KU1hSb2xlLktleUFmdGVyUHJvcFNwcmVhZCkge1xuICAgICAgICAgICAgICBpZiAobnVtRXhwbGljaXRDaGlsZHJlbiA9PT0gMSkge1xuICAgICAgICAgICAgICAgIF9iYXNlLnN0YXRlLnRva2Vuc1tpbml0aWFsVG9rZW5JbmRleF0uanN4Um9sZSA9IF9pbmRleC5KU1hSb2xlLk9uZUNoaWxkO1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKG51bUV4cGxpY2l0Q2hpbGRyZW4gPiAxKSB7XG4gICAgICAgICAgICAgICAgX2Jhc2Uuc3RhdGUudG9rZW5zW2luaXRpYWxUb2tlbkluZGV4XS5qc3hSb2xlID0gX2luZGV4LkpTWFJvbGUuU3RhdGljQ2hpbGRyZW47XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgbnVtRXhwbGljaXRDaGlsZHJlbisrO1xuICAgICAgICAgIGpzeFBhcnNlRWxlbWVudEF0KCk7XG4gICAgICAgICAgbmV4dEpTWEV4cHJUb2tlbigpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgX3R5cGVzLlRva2VuVHlwZS5qc3hUZXh0OlxuICAgICAgICAgIG51bUV4cGxpY2l0Q2hpbGRyZW4rKztcbiAgICAgICAgICBuZXh0SlNYRXhwclRva2VuKCk7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSBfdHlwZXMuVG9rZW5UeXBlLmpzeEVtcHR5VGV4dDpcbiAgICAgICAgICBuZXh0SlNYRXhwclRva2VuKCk7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSBfdHlwZXMuVG9rZW5UeXBlLmJyYWNlTDpcbiAgICAgICAgICBfaW5kZXgubmV4dC5jYWxsKHZvaWQgMCwgKTtcbiAgICAgICAgICBpZiAoX2luZGV4Lm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmVsbGlwc2lzKSkge1xuICAgICAgICAgICAganN4UGFyc2VTcHJlYWRDaGlsZCgpO1xuICAgICAgICAgICAgbmV4dEpTWEV4cHJUb2tlbigpO1xuICAgICAgICAgICAgLy8gU3ByZWFkIGNoaWxkcmVuIGFyZSBhIG1lY2hhbmlzbSB0byBleHBsaWNpdGx5IG1hcmsgY2hpbGRyZW4gYXNcbiAgICAgICAgICAgIC8vIHN0YXRpYywgc28gY291bnQgaXQgYXMgMiBjaGlsZHJlbiB0byBzYXRpc2Z5IHRoZSBcIm1vcmUgdGhhbiBvbmVcbiAgICAgICAgICAgIC8vIGNoaWxkXCIgY29uZGl0aW9uLlxuICAgICAgICAgICAgbnVtRXhwbGljaXRDaGlsZHJlbiArPSAyO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBJZiB3ZSBzZWUge30sIHRoaXMgaXMgYW4gZW1wdHkgcHNldWRvLWV4cHJlc3Npb24gdGhhdCBkb2Vzbid0XG4gICAgICAgICAgICAvLyBjb3VudCBhcyBhIGNoaWxkLlxuICAgICAgICAgICAgaWYgKCFfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuYnJhY2VSKSkge1xuICAgICAgICAgICAgICBudW1FeHBsaWNpdENoaWxkcmVuKys7XG4gICAgICAgICAgICAgIF9leHByZXNzaW9uLnBhcnNlRXhwcmVzc2lvbi5jYWxsKHZvaWQgMCwgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5leHRKU1hFeHByVG9rZW4oKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAtIHNob3VsZCBuZXZlciBoYXBwZW5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBfdXRpbC51bmV4cGVjdGVkLmNhbGwodm9pZCAwLCApO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8gUGFyc2VzIGVudGlyZSBKU1ggZWxlbWVudCBmcm9tIGN1cnJlbnQgcG9zaXRpb24uXG4vLyBEb2VzIG5vdCBwYXJzZSB0aGUgbGFzdCB0b2tlbi5cbiBmdW5jdGlvbiBqc3hQYXJzZUVsZW1lbnQoKSB7XG4gIG5leHRKU1hUYWdUb2tlbigpO1xuICBqc3hQYXJzZUVsZW1lbnRBdCgpO1xufSBleHBvcnRzLmpzeFBhcnNlRWxlbWVudCA9IGpzeFBhcnNlRWxlbWVudDtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gT3ZlcnJpZGVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiBmdW5jdGlvbiBuZXh0SlNYVGFnVG9rZW4oKSB7XG4gIF9iYXNlLnN0YXRlLnRva2Vucy5wdXNoKG5ldyAoMCwgX2luZGV4LlRva2VuKSgpKTtcbiAgX2luZGV4LnNraXBTcGFjZS5jYWxsKHZvaWQgMCwgKTtcbiAgX2Jhc2Uuc3RhdGUuc3RhcnQgPSBfYmFzZS5zdGF0ZS5wb3M7XG4gIGNvbnN0IGNvZGUgPSBfYmFzZS5pbnB1dC5jaGFyQ29kZUF0KF9iYXNlLnN0YXRlLnBvcyk7XG5cbiAgaWYgKF9pZGVudGlmaWVyLklTX0lERU5USUZJRVJfU1RBUlRbY29kZV0pIHtcbiAgICBqc3hSZWFkV29yZCgpO1xuICB9IGVsc2UgaWYgKGNvZGUgPT09IF9jaGFyY29kZXMuY2hhckNvZGVzLnF1b3RhdGlvbk1hcmsgfHwgY29kZSA9PT0gX2NoYXJjb2Rlcy5jaGFyQ29kZXMuYXBvc3Ryb3BoZSkge1xuICAgIGpzeFJlYWRTdHJpbmcoY29kZSk7XG4gIH0gZWxzZSB7XG4gICAgLy8gVGhlIGZvbGxvd2luZyB0b2tlbnMgYXJlIGp1c3Qgb25lIGNoYXJhY3RlciBlYWNoLlxuICAgICsrX2Jhc2Uuc3RhdGUucG9zO1xuICAgIHN3aXRjaCAoY29kZSkge1xuICAgICAgY2FzZSBfY2hhcmNvZGVzLmNoYXJDb2Rlcy5ncmVhdGVyVGhhbjpcbiAgICAgICAgX2luZGV4LmZpbmlzaFRva2VuLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmpzeFRhZ0VuZCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBfY2hhcmNvZGVzLmNoYXJDb2Rlcy5sZXNzVGhhbjpcbiAgICAgICAgX2luZGV4LmZpbmlzaFRva2VuLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmpzeFRhZ1N0YXJ0KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIF9jaGFyY29kZXMuY2hhckNvZGVzLnNsYXNoOlxuICAgICAgICBfaW5kZXguZmluaXNoVG9rZW4uY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuc2xhc2gpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgX2NoYXJjb2Rlcy5jaGFyQ29kZXMuZXF1YWxzVG86XG4gICAgICAgIF9pbmRleC5maW5pc2hUb2tlbi5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5lcSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBfY2hhcmNvZGVzLmNoYXJDb2Rlcy5sZWZ0Q3VybHlCcmFjZTpcbiAgICAgICAgX2luZGV4LmZpbmlzaFRva2VuLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmJyYWNlTCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBfY2hhcmNvZGVzLmNoYXJDb2Rlcy5kb3Q6XG4gICAgICAgIF9pbmRleC5maW5pc2hUb2tlbi5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5kb3QpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgX2NoYXJjb2Rlcy5jaGFyQ29kZXMuY29sb246XG4gICAgICAgIF9pbmRleC5maW5pc2hUb2tlbi5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5jb2xvbik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgX3V0aWwudW5leHBlY3RlZC5jYWxsKHZvaWQgMCwgKTtcbiAgICB9XG4gIH1cbn0gZXhwb3J0cy5uZXh0SlNYVGFnVG9rZW4gPSBuZXh0SlNYVGFnVG9rZW47XG5cbmZ1bmN0aW9uIG5leHRKU1hFeHByVG9rZW4oKSB7XG4gIF9iYXNlLnN0YXRlLnRva2Vucy5wdXNoKG5ldyAoMCwgX2luZGV4LlRva2VuKSgpKTtcbiAgX2Jhc2Uuc3RhdGUuc3RhcnQgPSBfYmFzZS5zdGF0ZS5wb3M7XG4gIGpzeFJlYWRUb2tlbigpO1xufVxuIiwgIlwidXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge3ZhbHVlOiB0cnVlfSk7dmFyIF9pbmRleCA9IHJlcXVpcmUoJy4uL3Rva2VuaXplci9pbmRleCcpO1xudmFyIF90eXBlcyA9IHJlcXVpcmUoJy4uL3Rva2VuaXplci90eXBlcycpO1xudmFyIF9iYXNlID0gcmVxdWlyZSgnLi4vdHJhdmVyc2VyL2Jhc2UnKTtcbnZhciBfZXhwcmVzc2lvbiA9IHJlcXVpcmUoJy4uL3RyYXZlcnNlci9leHByZXNzaW9uJyk7XG52YXIgX2Zsb3cgPSByZXF1aXJlKCcuL2Zsb3cnKTtcbnZhciBfdHlwZXNjcmlwdCA9IHJlcXVpcmUoJy4vdHlwZXNjcmlwdCcpO1xuXG4vKipcbiAqIENvbW1vbiBwYXJzZXIgY29kZSBmb3IgVHlwZVNjcmlwdCBhbmQgRmxvdy5cbiAqL1xuXG4vLyBBbiBhcHBhcmVudCBjb25kaXRpb25hbCBleHByZXNzaW9uIGNvdWxkIGFjdHVhbGx5IGJlIGFuIG9wdGlvbmFsIHBhcmFtZXRlciBpbiBhbiBhcnJvdyBmdW5jdGlvbi5cbiBmdW5jdGlvbiB0eXBlZFBhcnNlQ29uZGl0aW9uYWwobm9Jbikge1xuICAvLyBJZiB3ZSBzZWUgPzosIHRoaXMgY2FuJ3QgcG9zc2libHkgYmUgYSB2YWxpZCBjb25kaXRpb25hbC4gdHlwZWRQYXJzZVBhcmVuSXRlbSB3aWxsIGJlIGNhbGxlZFxuICAvLyBsYXRlciB0byBmaW5pc2ggb2ZmIHRoZSBhcnJvdyBwYXJhbWV0ZXIuIFdlIGFsc28gbmVlZCB0byBoYW5kbGUgYmFyZSA/IHRva2VucyBmb3Igb3B0aW9uYWxcbiAgLy8gcGFyYW1ldGVycyB3aXRob3V0IHR5cGUgYW5ub3RhdGlvbnMsIGkuZS4gPywgYW5kID8pIC5cbiAgaWYgKF9pbmRleC5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5xdWVzdGlvbikpIHtcbiAgICBjb25zdCBuZXh0VHlwZSA9IF9pbmRleC5sb29rYWhlYWRUeXBlLmNhbGwodm9pZCAwLCApO1xuICAgIGlmIChuZXh0VHlwZSA9PT0gX3R5cGVzLlRva2VuVHlwZS5jb2xvbiB8fCBuZXh0VHlwZSA9PT0gX3R5cGVzLlRva2VuVHlwZS5jb21tYSB8fCBuZXh0VHlwZSA9PT0gX3R5cGVzLlRva2VuVHlwZS5wYXJlblIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cbiAgX2V4cHJlc3Npb24uYmFzZVBhcnNlQ29uZGl0aW9uYWwuY2FsbCh2b2lkIDAsIG5vSW4pO1xufSBleHBvcnRzLnR5cGVkUGFyc2VDb25kaXRpb25hbCA9IHR5cGVkUGFyc2VDb25kaXRpb25hbDtcblxuLy8gTm90ZTogVGhlc2UgXCJ0eXBlIGNhc3RzXCIgYXJlICpub3QqIHZhbGlkIFRTIGV4cHJlc3Npb25zLlxuLy8gQnV0IHdlIHBhcnNlIHRoZW0gaGVyZSBhbmQgY2hhbmdlIHRoZW0gd2hlbiBjb21wbGV0aW5nIHRoZSBhcnJvdyBmdW5jdGlvbi5cbiBmdW5jdGlvbiB0eXBlZFBhcnNlUGFyZW5JdGVtKCkge1xuICBfaW5kZXguZWF0VHlwZVRva2VuLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLnF1ZXN0aW9uKTtcbiAgaWYgKF9pbmRleC5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5jb2xvbikpIHtcbiAgICBpZiAoX2Jhc2UuaXNUeXBlU2NyaXB0RW5hYmxlZCkge1xuICAgICAgX3R5cGVzY3JpcHQudHNQYXJzZVR5cGVBbm5vdGF0aW9uLmNhbGwodm9pZCAwLCApO1xuICAgIH0gZWxzZSBpZiAoX2Jhc2UuaXNGbG93RW5hYmxlZCkge1xuICAgICAgX2Zsb3cuZmxvd1BhcnNlVHlwZUFubm90YXRpb24uY2FsbCh2b2lkIDAsICk7XG4gICAgfVxuICB9XG59IGV4cG9ydHMudHlwZWRQYXJzZVBhcmVuSXRlbSA9IHR5cGVkUGFyc2VQYXJlbkl0ZW07XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7dmFsdWU6IHRydWV9KTsvKiBlc2xpbnQgbWF4LWxlbjogMCAqL1xuXG4vLyBBIHJlY3Vyc2l2ZSBkZXNjZW50IHBhcnNlciBvcGVyYXRlcyBieSBkZWZpbmluZyBmdW5jdGlvbnMgZm9yIGFsbFxuLy8gc3ludGFjdGljIGVsZW1lbnRzLCBhbmQgcmVjdXJzaXZlbHkgY2FsbGluZyB0aG9zZSwgZWFjaCBmdW5jdGlvblxuLy8gYWR2YW5jaW5nIHRoZSBpbnB1dCBzdHJlYW0gYW5kIHJldHVybmluZyBhbiBBU1Qgbm9kZS4gUHJlY2VkZW5jZVxuLy8gb2YgY29uc3RydWN0cyAoZm9yIGV4YW1wbGUsIHRoZSBmYWN0IHRoYXQgYCF4WzFdYCBtZWFucyBgISh4WzFdKWBcbi8vIGluc3RlYWQgb2YgYCgheClbMV1gIGlzIGhhbmRsZWQgYnkgdGhlIGZhY3QgdGhhdCB0aGUgcGFyc2VyXG4vLyBmdW5jdGlvbiB0aGF0IHBhcnNlcyB1bmFyeSBwcmVmaXggb3BlcmF0b3JzIGlzIGNhbGxlZCBmaXJzdCwgYW5kXG4vLyBpbiB0dXJuIGNhbGxzIHRoZSBmdW5jdGlvbiB0aGF0IHBhcnNlcyBgW11gIHN1YnNjcmlwdHMgXHUyMDE0IHRoYXRcbi8vIHdheSwgaXQnbGwgcmVjZWl2ZSB0aGUgbm9kZSBmb3IgYHhbMV1gIGFscmVhZHkgcGFyc2VkLCBhbmQgd3JhcHNcbi8vICp0aGF0KiBpbiB0aGUgdW5hcnkgb3BlcmF0b3Igbm9kZS5cbi8vXG4vLyBBY29ybiB1c2VzIGFuIFtvcGVyYXRvciBwcmVjZWRlbmNlIHBhcnNlcl1bb3BwXSB0byBoYW5kbGUgYmluYXJ5XG4vLyBvcGVyYXRvciBwcmVjZWRlbmNlLCBiZWNhdXNlIGl0IGlzIG11Y2ggbW9yZSBjb21wYWN0IHRoYW4gdXNpbmdcbi8vIHRoZSB0ZWNobmlxdWUgb3V0bGluZWQgYWJvdmUsIHdoaWNoIHVzZXMgZGlmZmVyZW50LCBuZXN0aW5nXG4vLyBmdW5jdGlvbnMgdG8gc3BlY2lmeSBwcmVjZWRlbmNlLCBmb3IgYWxsIG9mIHRoZSB0ZW4gYmluYXJ5XG4vLyBwcmVjZWRlbmNlIGxldmVscyB0aGF0IEphdmFTY3JpcHQgZGVmaW5lcy5cbi8vXG4vLyBbb3BwXTogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9PcGVyYXRvci1wcmVjZWRlbmNlX3BhcnNlclxuXG5cblxuXG5cblxuXG5cblxuXG5cbnZhciBfZmxvdyA9IHJlcXVpcmUoJy4uL3BsdWdpbnMvZmxvdycpO1xudmFyIF9pbmRleCA9IHJlcXVpcmUoJy4uL3BsdWdpbnMvanN4L2luZGV4Jyk7XG52YXIgX3R5cGVzID0gcmVxdWlyZSgnLi4vcGx1Z2lucy90eXBlcycpO1xuXG5cblxuXG5cblxuXG5cblxudmFyIF90eXBlc2NyaXB0ID0gcmVxdWlyZSgnLi4vcGx1Z2lucy90eXBlc2NyaXB0Jyk7XG5cblxuXG5cblxuXG5cblxuXG5cblxuXG52YXIgX2luZGV4MyA9IHJlcXVpcmUoJy4uL3Rva2VuaXplci9pbmRleCcpO1xudmFyIF9rZXl3b3JkcyA9IHJlcXVpcmUoJy4uL3Rva2VuaXplci9rZXl3b3JkcycpO1xudmFyIF9zdGF0ZSA9IHJlcXVpcmUoJy4uL3Rva2VuaXplci9zdGF0ZScpO1xudmFyIF90eXBlczMgPSByZXF1aXJlKCcuLi90b2tlbml6ZXIvdHlwZXMnKTtcbnZhciBfY2hhcmNvZGVzID0gcmVxdWlyZSgnLi4vdXRpbC9jaGFyY29kZXMnKTtcbnZhciBfaWRlbnRpZmllciA9IHJlcXVpcmUoJy4uL3V0aWwvaWRlbnRpZmllcicpO1xudmFyIF9iYXNlID0gcmVxdWlyZSgnLi9iYXNlJyk7XG5cblxuXG5cblxuXG52YXIgX2x2YWwgPSByZXF1aXJlKCcuL2x2YWwnKTtcblxuXG5cblxuXG5cblxudmFyIF9zdGF0ZW1lbnQgPSByZXF1aXJlKCcuL3N0YXRlbWVudCcpO1xuXG5cblxuXG5cblxuXG5cblxudmFyIF91dGlsID0gcmVxdWlyZSgnLi91dGlsJyk7XG5cbiBjbGFzcyBTdG9wU3RhdGUge1xuICBcbiAgY29uc3RydWN0b3Ioc3RvcCkge1xuICAgIHRoaXMuc3RvcCA9IHN0b3A7XG4gIH1cbn0gZXhwb3J0cy5TdG9wU3RhdGUgPSBTdG9wU3RhdGU7XG5cbi8vICMjIyBFeHByZXNzaW9uIHBhcnNpbmdcblxuLy8gVGhlc2UgbmVzdCwgZnJvbSB0aGUgbW9zdCBnZW5lcmFsIGV4cHJlc3Npb24gdHlwZSBhdCB0aGUgdG9wIHRvXG4vLyAnYXRvbWljJywgbm9uZGl2aXNpYmxlIGV4cHJlc3Npb24gdHlwZXMgYXQgdGhlIGJvdHRvbS4gTW9zdCBvZlxuLy8gdGhlIGZ1bmN0aW9ucyB3aWxsIHNpbXBseSBsZXQgdGhlIGZ1bmN0aW9uIChzKSBiZWxvdyB0aGVtIHBhcnNlLFxuLy8gYW5kLCAqaWYqIHRoZSBzeW50YWN0aWMgY29uc3RydWN0IHRoZXkgaGFuZGxlIGlzIHByZXNlbnQsIHdyYXBcbi8vIHRoZSBBU1Qgbm9kZSB0aGF0IHRoZSBpbm5lciBwYXJzZXIgZ2F2ZSB0aGVtIGluIGFub3RoZXIgbm9kZS5cbiBmdW5jdGlvbiBwYXJzZUV4cHJlc3Npb24obm9JbiA9IGZhbHNlKSB7XG4gIHBhcnNlTWF5YmVBc3NpZ24obm9Jbik7XG4gIGlmIChfaW5kZXgzLm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMzLlRva2VuVHlwZS5jb21tYSkpIHtcbiAgICB3aGlsZSAoX2luZGV4My5lYXQuY2FsbCh2b2lkIDAsIF90eXBlczMuVG9rZW5UeXBlLmNvbW1hKSkge1xuICAgICAgcGFyc2VNYXliZUFzc2lnbihub0luKTtcbiAgICB9XG4gIH1cbn0gZXhwb3J0cy5wYXJzZUV4cHJlc3Npb24gPSBwYXJzZUV4cHJlc3Npb247XG5cbi8qKlxuICogbm9JbiBpcyB1c2VkIHdoZW4gcGFyc2luZyBhIGZvciBsb29wIHNvIHRoYXQgd2UgZG9uJ3QgaW50ZXJwcmV0IGEgZm9sbG93aW5nIFwiaW5cIiBhcyB0aGUgYmluYXJ5XG4gKiBvcGVyYXRpb3IuXG4gKiBpc1dpdGhpblBhcmVucyBpcyB1c2VkIHRvIGluZGljYXRlIHRoYXQgd2UncmUgcGFyc2luZyBzb21ldGhpbmcgdGhhdCBtaWdodCBiZSBhIGNvbW1hIGV4cHJlc3Npb25cbiAqIG9yIG1pZ2h0IGJlIGFuIGFycm93IGZ1bmN0aW9uIG9yIG1pZ2h0IGJlIGEgRmxvdyB0eXBlIGFzc2VydGlvbiAod2hpY2ggcmVxdWlyZXMgZXhwbGljaXQgcGFyZW5zKS5cbiAqIEluIHRoZXNlIGNhc2VzLCB3ZSBzaG91bGQgYWxsb3cgOiBhbmQgPzogYWZ0ZXIgdGhlIGluaXRpYWwgXCJsZWZ0XCIgcGFydC5cbiAqL1xuIGZ1bmN0aW9uIHBhcnNlTWF5YmVBc3NpZ24obm9JbiA9IGZhbHNlLCBpc1dpdGhpblBhcmVucyA9IGZhbHNlKSB7XG4gIGlmIChfYmFzZS5pc1R5cGVTY3JpcHRFbmFibGVkKSB7XG4gICAgcmV0dXJuIF90eXBlc2NyaXB0LnRzUGFyc2VNYXliZUFzc2lnbi5jYWxsKHZvaWQgMCwgbm9JbiwgaXNXaXRoaW5QYXJlbnMpO1xuICB9IGVsc2UgaWYgKF9iYXNlLmlzRmxvd0VuYWJsZWQpIHtcbiAgICByZXR1cm4gX2Zsb3cuZmxvd1BhcnNlTWF5YmVBc3NpZ24uY2FsbCh2b2lkIDAsIG5vSW4sIGlzV2l0aGluUGFyZW5zKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gYmFzZVBhcnNlTWF5YmVBc3NpZ24obm9JbiwgaXNXaXRoaW5QYXJlbnMpO1xuICB9XG59IGV4cG9ydHMucGFyc2VNYXliZUFzc2lnbiA9IHBhcnNlTWF5YmVBc3NpZ247XG5cbi8vIFBhcnNlIGFuIGFzc2lnbm1lbnQgZXhwcmVzc2lvbi4gVGhpcyBpbmNsdWRlcyBhcHBsaWNhdGlvbnMgb2Zcbi8vIG9wZXJhdG9ycyBsaWtlIGArPWAuXG4vLyBSZXR1cm5zIHRydWUgaWYgdGhlIGV4cHJlc3Npb24gd2FzIGFuIGFycm93IGZ1bmN0aW9uLlxuIGZ1bmN0aW9uIGJhc2VQYXJzZU1heWJlQXNzaWduKG5vSW4sIGlzV2l0aGluUGFyZW5zKSB7XG4gIGlmIChfaW5kZXgzLm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMzLlRva2VuVHlwZS5feWllbGQpKSB7XG4gICAgcGFyc2VZaWVsZCgpO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChfaW5kZXgzLm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMzLlRva2VuVHlwZS5wYXJlbkwpIHx8IF9pbmRleDMubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlczMuVG9rZW5UeXBlLm5hbWUpIHx8IF9pbmRleDMubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlczMuVG9rZW5UeXBlLl95aWVsZCkpIHtcbiAgICBfYmFzZS5zdGF0ZS5wb3RlbnRpYWxBcnJvd0F0ID0gX2Jhc2Uuc3RhdGUuc3RhcnQ7XG4gIH1cblxuICBjb25zdCB3YXNBcnJvdyA9IHBhcnNlTWF5YmVDb25kaXRpb25hbChub0luKTtcbiAgaWYgKGlzV2l0aGluUGFyZW5zKSB7XG4gICAgcGFyc2VQYXJlbkl0ZW0oKTtcbiAgfVxuICBpZiAoX2Jhc2Uuc3RhdGUudHlwZSAmIF90eXBlczMuVG9rZW5UeXBlLklTX0FTU0lHTikge1xuICAgIF9pbmRleDMubmV4dC5jYWxsKHZvaWQgMCwgKTtcbiAgICBwYXJzZU1heWJlQXNzaWduKG5vSW4pO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gd2FzQXJyb3c7XG59IGV4cG9ydHMuYmFzZVBhcnNlTWF5YmVBc3NpZ24gPSBiYXNlUGFyc2VNYXliZUFzc2lnbjtcblxuLy8gUGFyc2UgYSB0ZXJuYXJ5IGNvbmRpdGlvbmFsIChgPzpgKSBvcGVyYXRvci5cbi8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgZXhwcmVzc2lvbiB3YXMgYW4gYXJyb3cgZnVuY3Rpb24uXG5mdW5jdGlvbiBwYXJzZU1heWJlQ29uZGl0aW9uYWwobm9Jbikge1xuICBjb25zdCB3YXNBcnJvdyA9IHBhcnNlRXhwck9wcyhub0luKTtcbiAgaWYgKHdhc0Fycm93KSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcGFyc2VDb25kaXRpb25hbChub0luKTtcbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBwYXJzZUNvbmRpdGlvbmFsKG5vSW4pIHtcbiAgaWYgKF9iYXNlLmlzVHlwZVNjcmlwdEVuYWJsZWQgfHwgX2Jhc2UuaXNGbG93RW5hYmxlZCkge1xuICAgIF90eXBlcy50eXBlZFBhcnNlQ29uZGl0aW9uYWwuY2FsbCh2b2lkIDAsIG5vSW4pO1xuICB9IGVsc2Uge1xuICAgIGJhc2VQYXJzZUNvbmRpdGlvbmFsKG5vSW4pO1xuICB9XG59XG5cbiBmdW5jdGlvbiBiYXNlUGFyc2VDb25kaXRpb25hbChub0luKSB7XG4gIGlmIChfaW5kZXgzLmVhdC5jYWxsKHZvaWQgMCwgX3R5cGVzMy5Ub2tlblR5cGUucXVlc3Rpb24pKSB7XG4gICAgcGFyc2VNYXliZUFzc2lnbigpO1xuICAgIF91dGlsLmV4cGVjdC5jYWxsKHZvaWQgMCwgX3R5cGVzMy5Ub2tlblR5cGUuY29sb24pO1xuICAgIHBhcnNlTWF5YmVBc3NpZ24obm9Jbik7XG4gIH1cbn0gZXhwb3J0cy5iYXNlUGFyc2VDb25kaXRpb25hbCA9IGJhc2VQYXJzZUNvbmRpdGlvbmFsO1xuXG4vLyBTdGFydCB0aGUgcHJlY2VkZW5jZSBwYXJzZXIuXG4vLyBSZXR1cm5zIHRydWUgaWYgdGhpcyB3YXMgYW4gYXJyb3cgZnVuY3Rpb25cbmZ1bmN0aW9uIHBhcnNlRXhwck9wcyhub0luKSB7XG4gIGNvbnN0IHN0YXJ0VG9rZW5JbmRleCA9IF9iYXNlLnN0YXRlLnRva2Vucy5sZW5ndGg7XG4gIGNvbnN0IHdhc0Fycm93ID0gcGFyc2VNYXliZVVuYXJ5KCk7XG4gIGlmICh3YXNBcnJvdykge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHBhcnNlRXhwck9wKHN0YXJ0VG9rZW5JbmRleCwgLTEsIG5vSW4pO1xuICByZXR1cm4gZmFsc2U7XG59XG5cbi8vIFBhcnNlIGJpbmFyeSBvcGVyYXRvcnMgd2l0aCB0aGUgb3BlcmF0b3IgcHJlY2VkZW5jZSBwYXJzaW5nXG4vLyBhbGdvcml0aG0uIGBsZWZ0YCBpcyB0aGUgbGVmdC1oYW5kIHNpZGUgb2YgdGhlIG9wZXJhdG9yLlxuLy8gYG1pblByZWNgIHByb3ZpZGVzIGNvbnRleHQgdGhhdCBhbGxvd3MgdGhlIGZ1bmN0aW9uIHRvIHN0b3AgYW5kXG4vLyBkZWZlciBmdXJ0aGVyIHBhcnNlciB0byBvbmUgb2YgaXRzIGNhbGxlcnMgd2hlbiBpdCBlbmNvdW50ZXJzIGFuXG4vLyBvcGVyYXRvciB0aGF0IGhhcyBhIGxvd2VyIHByZWNlZGVuY2UgdGhhbiB0aGUgc2V0IGl0IGlzIHBhcnNpbmcuXG5mdW5jdGlvbiBwYXJzZUV4cHJPcChzdGFydFRva2VuSW5kZXgsIG1pblByZWMsIG5vSW4pIHtcbiAgaWYgKFxuICAgIF9iYXNlLmlzVHlwZVNjcmlwdEVuYWJsZWQgJiZcbiAgICAoX3R5cGVzMy5Ub2tlblR5cGUuX2luICYgX3R5cGVzMy5Ub2tlblR5cGUuUFJFQ0VERU5DRV9NQVNLKSA+IG1pblByZWMgJiZcbiAgICAhX3V0aWwuaGFzUHJlY2VkaW5nTGluZUJyZWFrLmNhbGwodm9pZCAwLCApICYmXG4gICAgKF91dGlsLmVhdENvbnRleHR1YWwuY2FsbCh2b2lkIDAsIF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fYXMpIHx8IF91dGlsLmVhdENvbnRleHR1YWwuY2FsbCh2b2lkIDAsIF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fc2F0aXNmaWVzKSlcbiAgKSB7XG4gICAgY29uc3Qgb2xkSXNUeXBlID0gX2luZGV4My5wdXNoVHlwZUNvbnRleHQuY2FsbCh2b2lkIDAsIDEpO1xuICAgIF90eXBlc2NyaXB0LnRzUGFyc2VUeXBlLmNhbGwodm9pZCAwLCApO1xuICAgIF9pbmRleDMucG9wVHlwZUNvbnRleHQuY2FsbCh2b2lkIDAsIG9sZElzVHlwZSk7XG4gICAgX2luZGV4My5yZXNjYW5fZ3QuY2FsbCh2b2lkIDAsICk7XG4gICAgcGFyc2VFeHByT3Aoc3RhcnRUb2tlbkluZGV4LCBtaW5QcmVjLCBub0luKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBwcmVjID0gX2Jhc2Uuc3RhdGUudHlwZSAmIF90eXBlczMuVG9rZW5UeXBlLlBSRUNFREVOQ0VfTUFTSztcbiAgaWYgKHByZWMgPiAwICYmICghbm9JbiB8fCAhX2luZGV4My5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzMy5Ub2tlblR5cGUuX2luKSkpIHtcbiAgICBpZiAocHJlYyA+IG1pblByZWMpIHtcbiAgICAgIGNvbnN0IG9wID0gX2Jhc2Uuc3RhdGUudHlwZTtcbiAgICAgIF9pbmRleDMubmV4dC5jYWxsKHZvaWQgMCwgKTtcbiAgICAgIGlmIChvcCA9PT0gX3R5cGVzMy5Ub2tlblR5cGUubnVsbGlzaENvYWxlc2NpbmcpIHtcbiAgICAgICAgX2Jhc2Uuc3RhdGUudG9rZW5zW19iYXNlLnN0YXRlLnRva2Vucy5sZW5ndGggLSAxXS5udWxsaXNoU3RhcnRJbmRleCA9IHN0YXJ0VG9rZW5JbmRleDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmhzU3RhcnRUb2tlbkluZGV4ID0gX2Jhc2Uuc3RhdGUudG9rZW5zLmxlbmd0aDtcbiAgICAgIHBhcnNlTWF5YmVVbmFyeSgpO1xuICAgICAgLy8gRXh0ZW5kIHRoZSByaWdodCBvcGVyYW5kIG9mIHRoaXMgb3BlcmF0b3IgaWYgcG9zc2libGUuXG4gICAgICBwYXJzZUV4cHJPcChyaHNTdGFydFRva2VuSW5kZXgsIG9wICYgX3R5cGVzMy5Ub2tlblR5cGUuSVNfUklHSFRfQVNTT0NJQVRJVkUgPyBwcmVjIC0gMSA6IHByZWMsIG5vSW4pO1xuICAgICAgaWYgKG9wID09PSBfdHlwZXMzLlRva2VuVHlwZS5udWxsaXNoQ29hbGVzY2luZykge1xuICAgICAgICBfYmFzZS5zdGF0ZS50b2tlbnNbc3RhcnRUb2tlbkluZGV4XS5udW1OdWxsaXNoQ29hbGVzY2VTdGFydHMrKztcbiAgICAgICAgX2Jhc2Uuc3RhdGUudG9rZW5zW19iYXNlLnN0YXRlLnRva2Vucy5sZW5ndGggLSAxXS5udW1OdWxsaXNoQ29hbGVzY2VFbmRzKys7XG4gICAgICB9XG4gICAgICAvLyBDb250aW51ZSB3aXRoIGFueSBmdXR1cmUgb3BlcmF0b3IgaG9sZGluZyB0aGlzIGV4cHJlc3Npb24gYXMgdGhlIGxlZnQgb3BlcmFuZC5cbiAgICAgIHBhcnNlRXhwck9wKHN0YXJ0VG9rZW5JbmRleCwgbWluUHJlYywgbm9Jbik7XG4gICAgfVxuICB9XG59XG5cbi8vIFBhcnNlIHVuYXJ5IG9wZXJhdG9ycywgYm90aCBwcmVmaXggYW5kIHBvc3RmaXguXG4vLyBSZXR1cm5zIHRydWUgaWYgdGhpcyB3YXMgYW4gYXJyb3cgZnVuY3Rpb24uXG4gZnVuY3Rpb24gcGFyc2VNYXliZVVuYXJ5KCkge1xuICBpZiAoX2Jhc2UuaXNUeXBlU2NyaXB0RW5hYmxlZCAmJiAhX2Jhc2UuaXNKU1hFbmFibGVkICYmIF9pbmRleDMuZWF0LmNhbGwodm9pZCAwLCBfdHlwZXMzLlRva2VuVHlwZS5sZXNzVGhhbikpIHtcbiAgICBfdHlwZXNjcmlwdC50c1BhcnNlVHlwZUFzc2VydGlvbi5jYWxsKHZvaWQgMCwgKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKFxuICAgIF91dGlsLmlzQ29udGV4dHVhbC5jYWxsKHZvaWQgMCwgX2tleXdvcmRzLkNvbnRleHR1YWxLZXl3b3JkLl9tb2R1bGUpICYmXG4gICAgX2luZGV4My5sb29rYWhlYWRDaGFyQ29kZS5jYWxsKHZvaWQgMCwgKSA9PT0gX2NoYXJjb2Rlcy5jaGFyQ29kZXMubGVmdEN1cmx5QnJhY2UgJiZcbiAgICAhX3V0aWwuaGFzRm9sbG93aW5nTGluZUJyZWFrLmNhbGwodm9pZCAwLCApXG4gICkge1xuICAgIHBhcnNlTW9kdWxlRXhwcmVzc2lvbigpO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoX2Jhc2Uuc3RhdGUudHlwZSAmIF90eXBlczMuVG9rZW5UeXBlLklTX1BSRUZJWCkge1xuICAgIF9pbmRleDMubmV4dC5jYWxsKHZvaWQgMCwgKTtcbiAgICBwYXJzZU1heWJlVW5hcnkoKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCB3YXNBcnJvdyA9IHBhcnNlRXhwclN1YnNjcmlwdHMoKTtcbiAgaWYgKHdhc0Fycm93KSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgd2hpbGUgKF9iYXNlLnN0YXRlLnR5cGUgJiBfdHlwZXMzLlRva2VuVHlwZS5JU19QT1NURklYICYmICFfdXRpbC5jYW5JbnNlcnRTZW1pY29sb24uY2FsbCh2b2lkIDAsICkpIHtcbiAgICAvLyBUaGUgdG9rZW5pemVyIGNhbGxzIGV2ZXJ5dGhpbmcgYSBwcmVpbmNyZW1lbnQsIHNvIG1ha2UgaXQgYSBwb3N0aW5jcmVtZW50IHdoZW5cbiAgICAvLyB3ZSBzZWUgaXQgaW4gdGhhdCBjb250ZXh0LlxuICAgIGlmIChfYmFzZS5zdGF0ZS50eXBlID09PSBfdHlwZXMzLlRva2VuVHlwZS5wcmVJbmNEZWMpIHtcbiAgICAgIF9iYXNlLnN0YXRlLnR5cGUgPSBfdHlwZXMzLlRva2VuVHlwZS5wb3N0SW5jRGVjO1xuICAgIH1cbiAgICBfaW5kZXgzLm5leHQuY2FsbCh2b2lkIDAsICk7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufSBleHBvcnRzLnBhcnNlTWF5YmVVbmFyeSA9IHBhcnNlTWF5YmVVbmFyeTtcblxuLy8gUGFyc2UgY2FsbCwgZG90LCBhbmQgYFtdYC1zdWJzY3JpcHQgZXhwcmVzc2lvbnMuXG4vLyBSZXR1cm5zIHRydWUgaWYgdGhpcyB3YXMgYW4gYXJyb3cgZnVuY3Rpb24uXG4gZnVuY3Rpb24gcGFyc2VFeHByU3Vic2NyaXB0cygpIHtcbiAgY29uc3Qgc3RhcnRUb2tlbkluZGV4ID0gX2Jhc2Uuc3RhdGUudG9rZW5zLmxlbmd0aDtcbiAgY29uc3Qgd2FzQXJyb3cgPSBwYXJzZUV4cHJBdG9tKCk7XG4gIGlmICh3YXNBcnJvdykge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHBhcnNlU3Vic2NyaXB0cyhzdGFydFRva2VuSW5kZXgpO1xuICAvLyBJZiB0aGVyZSB3YXMgYW55IG9wdGlvbmFsIGNoYWluIG9wZXJhdGlvbiwgdGhlIHN0YXJ0IHRva2VuIHdvdWxkIGJlIG1hcmtlZFxuICAvLyBhcyBzdWNoLCBzbyBhbHNvIG1hcmsgdGhlIGVuZCBub3cuXG4gIGlmIChfYmFzZS5zdGF0ZS50b2tlbnMubGVuZ3RoID4gc3RhcnRUb2tlbkluZGV4ICYmIF9iYXNlLnN0YXRlLnRva2Vuc1tzdGFydFRva2VuSW5kZXhdLmlzT3B0aW9uYWxDaGFpblN0YXJ0KSB7XG4gICAgX2Jhc2Uuc3RhdGUudG9rZW5zW19iYXNlLnN0YXRlLnRva2Vucy5sZW5ndGggLSAxXS5pc09wdGlvbmFsQ2hhaW5FbmQgPSB0cnVlO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn0gZXhwb3J0cy5wYXJzZUV4cHJTdWJzY3JpcHRzID0gcGFyc2VFeHByU3Vic2NyaXB0cztcblxuZnVuY3Rpb24gcGFyc2VTdWJzY3JpcHRzKHN0YXJ0VG9rZW5JbmRleCwgbm9DYWxscyA9IGZhbHNlKSB7XG4gIGlmIChfYmFzZS5pc0Zsb3dFbmFibGVkKSB7XG4gICAgX2Zsb3cuZmxvd1BhcnNlU3Vic2NyaXB0cy5jYWxsKHZvaWQgMCwgc3RhcnRUb2tlbkluZGV4LCBub0NhbGxzKTtcbiAgfSBlbHNlIHtcbiAgICBiYXNlUGFyc2VTdWJzY3JpcHRzKHN0YXJ0VG9rZW5JbmRleCwgbm9DYWxscyk7XG4gIH1cbn1cblxuIGZ1bmN0aW9uIGJhc2VQYXJzZVN1YnNjcmlwdHMoc3RhcnRUb2tlbkluZGV4LCBub0NhbGxzID0gZmFsc2UpIHtcbiAgY29uc3Qgc3RvcFN0YXRlID0gbmV3IFN0b3BTdGF0ZShmYWxzZSk7XG4gIGRvIHtcbiAgICBwYXJzZVN1YnNjcmlwdChzdGFydFRva2VuSW5kZXgsIG5vQ2FsbHMsIHN0b3BTdGF0ZSk7XG4gIH0gd2hpbGUgKCFzdG9wU3RhdGUuc3RvcCAmJiAhX2Jhc2Uuc3RhdGUuZXJyb3IpO1xufSBleHBvcnRzLmJhc2VQYXJzZVN1YnNjcmlwdHMgPSBiYXNlUGFyc2VTdWJzY3JpcHRzO1xuXG5mdW5jdGlvbiBwYXJzZVN1YnNjcmlwdChzdGFydFRva2VuSW5kZXgsIG5vQ2FsbHMsIHN0b3BTdGF0ZSkge1xuICBpZiAoX2Jhc2UuaXNUeXBlU2NyaXB0RW5hYmxlZCkge1xuICAgIF90eXBlc2NyaXB0LnRzUGFyc2VTdWJzY3JpcHQuY2FsbCh2b2lkIDAsIHN0YXJ0VG9rZW5JbmRleCwgbm9DYWxscywgc3RvcFN0YXRlKTtcbiAgfSBlbHNlIGlmIChfYmFzZS5pc0Zsb3dFbmFibGVkKSB7XG4gICAgX2Zsb3cuZmxvd1BhcnNlU3Vic2NyaXB0LmNhbGwodm9pZCAwLCBzdGFydFRva2VuSW5kZXgsIG5vQ2FsbHMsIHN0b3BTdGF0ZSk7XG4gIH0gZWxzZSB7XG4gICAgYmFzZVBhcnNlU3Vic2NyaXB0KHN0YXJ0VG9rZW5JbmRleCwgbm9DYWxscywgc3RvcFN0YXRlKTtcbiAgfVxufVxuXG4vKiogU2V0ICdzdGF0ZS5zdG9wID0gdHJ1ZScgdG8gaW5kaWNhdGUgdGhhdCB3ZSBzaG91bGQgc3RvcCBwYXJzaW5nIHN1YnNjcmlwdHMuICovXG4gZnVuY3Rpb24gYmFzZVBhcnNlU3Vic2NyaXB0KFxuICBzdGFydFRva2VuSW5kZXgsXG4gIG5vQ2FsbHMsXG4gIHN0b3BTdGF0ZSxcbikge1xuICBpZiAoIW5vQ2FsbHMgJiYgX2luZGV4My5lYXQuY2FsbCh2b2lkIDAsIF90eXBlczMuVG9rZW5UeXBlLmRvdWJsZUNvbG9uKSkge1xuICAgIHBhcnNlTm9DYWxsRXhwcigpO1xuICAgIHN0b3BTdGF0ZS5zdG9wID0gdHJ1ZTtcbiAgICAvLyBQcm9wYWdhdGUgc3RhcnRUb2tlbkluZGV4IHNvIHRoYXQgYGE6OmI/LigpYCB3aWxsIGtlZXAgYGFgIGFzIHRoZSBmaXJzdCB0b2tlbi4gV2UgbWF5IHdhbnRcbiAgICAvLyB0byByZXZpc2l0IHRoaXMgaW4gdGhlIGZ1dHVyZSB3aGVuIGZ1bGx5IHN1cHBvcnRpbmcgYmluZCBzeW50YXguXG4gICAgcGFyc2VTdWJzY3JpcHRzKHN0YXJ0VG9rZW5JbmRleCwgbm9DYWxscyk7XG4gIH0gZWxzZSBpZiAoX2luZGV4My5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzMy5Ub2tlblR5cGUucXVlc3Rpb25Eb3QpKSB7XG4gICAgX2Jhc2Uuc3RhdGUudG9rZW5zW3N0YXJ0VG9rZW5JbmRleF0uaXNPcHRpb25hbENoYWluU3RhcnQgPSB0cnVlO1xuICAgIGlmIChub0NhbGxzICYmIF9pbmRleDMubG9va2FoZWFkVHlwZS5jYWxsKHZvaWQgMCwgKSA9PT0gX3R5cGVzMy5Ub2tlblR5cGUucGFyZW5MKSB7XG4gICAgICBzdG9wU3RhdGUuc3RvcCA9IHRydWU7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIF9pbmRleDMubmV4dC5jYWxsKHZvaWQgMCwgKTtcbiAgICBfYmFzZS5zdGF0ZS50b2tlbnNbX2Jhc2Uuc3RhdGUudG9rZW5zLmxlbmd0aCAtIDFdLnN1YnNjcmlwdFN0YXJ0SW5kZXggPSBzdGFydFRva2VuSW5kZXg7XG5cbiAgICBpZiAoX2luZGV4My5lYXQuY2FsbCh2b2lkIDAsIF90eXBlczMuVG9rZW5UeXBlLmJyYWNrZXRMKSkge1xuICAgICAgcGFyc2VFeHByZXNzaW9uKCk7XG4gICAgICBfdXRpbC5leHBlY3QuY2FsbCh2b2lkIDAsIF90eXBlczMuVG9rZW5UeXBlLmJyYWNrZXRSKTtcbiAgICB9IGVsc2UgaWYgKF9pbmRleDMuZWF0LmNhbGwodm9pZCAwLCBfdHlwZXMzLlRva2VuVHlwZS5wYXJlbkwpKSB7XG4gICAgICBwYXJzZUNhbGxFeHByZXNzaW9uQXJndW1lbnRzKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhcnNlTWF5YmVQcml2YXRlTmFtZSgpO1xuICAgIH1cbiAgfSBlbHNlIGlmIChfaW5kZXgzLmVhdC5jYWxsKHZvaWQgMCwgX3R5cGVzMy5Ub2tlblR5cGUuZG90KSkge1xuICAgIF9iYXNlLnN0YXRlLnRva2Vuc1tfYmFzZS5zdGF0ZS50b2tlbnMubGVuZ3RoIC0gMV0uc3Vic2NyaXB0U3RhcnRJbmRleCA9IHN0YXJ0VG9rZW5JbmRleDtcbiAgICBwYXJzZU1heWJlUHJpdmF0ZU5hbWUoKTtcbiAgfSBlbHNlIGlmIChfaW5kZXgzLmVhdC5jYWxsKHZvaWQgMCwgX3R5cGVzMy5Ub2tlblR5cGUuYnJhY2tldEwpKSB7XG4gICAgX2Jhc2Uuc3RhdGUudG9rZW5zW19iYXNlLnN0YXRlLnRva2Vucy5sZW5ndGggLSAxXS5zdWJzY3JpcHRTdGFydEluZGV4ID0gc3RhcnRUb2tlbkluZGV4O1xuICAgIHBhcnNlRXhwcmVzc2lvbigpO1xuICAgIF91dGlsLmV4cGVjdC5jYWxsKHZvaWQgMCwgX3R5cGVzMy5Ub2tlblR5cGUuYnJhY2tldFIpO1xuICB9IGVsc2UgaWYgKCFub0NhbGxzICYmIF9pbmRleDMubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlczMuVG9rZW5UeXBlLnBhcmVuTCkpIHtcbiAgICBpZiAoYXRQb3NzaWJsZUFzeW5jKCkpIHtcbiAgICAgIC8vIFdlIHNlZSBcImFzeW5jXCIsIGJ1dCBpdCdzIHBvc3NpYmxlIGl0J3MgYSB1c2FnZSBvZiB0aGUgbmFtZSBcImFzeW5jXCIuIFBhcnNlIGFzIGlmIGl0J3MgYVxuICAgICAgLy8gZnVuY3Rpb24gY2FsbCwgYW5kIGlmIHdlIHNlZSBhbiBhcnJvdyBsYXRlciwgYmFja3RyYWNrIGFuZCByZS1wYXJzZSBhcyBhIHBhcmFtZXRlciBsaXN0LlxuICAgICAgY29uc3Qgc25hcHNob3QgPSBfYmFzZS5zdGF0ZS5zbmFwc2hvdCgpO1xuICAgICAgY29uc3QgYXN5bmNTdGFydFRva2VuSW5kZXggPSBfYmFzZS5zdGF0ZS50b2tlbnMubGVuZ3RoO1xuICAgICAgX2luZGV4My5uZXh0LmNhbGwodm9pZCAwLCApO1xuICAgICAgX2Jhc2Uuc3RhdGUudG9rZW5zW19iYXNlLnN0YXRlLnRva2Vucy5sZW5ndGggLSAxXS5zdWJzY3JpcHRTdGFydEluZGV4ID0gc3RhcnRUb2tlbkluZGV4O1xuXG4gICAgICBjb25zdCBjYWxsQ29udGV4dElkID0gX2Jhc2UuZ2V0TmV4dENvbnRleHRJZC5jYWxsKHZvaWQgMCwgKTtcblxuICAgICAgX2Jhc2Uuc3RhdGUudG9rZW5zW19iYXNlLnN0YXRlLnRva2Vucy5sZW5ndGggLSAxXS5jb250ZXh0SWQgPSBjYWxsQ29udGV4dElkO1xuICAgICAgcGFyc2VDYWxsRXhwcmVzc2lvbkFyZ3VtZW50cygpO1xuICAgICAgX2Jhc2Uuc3RhdGUudG9rZW5zW19iYXNlLnN0YXRlLnRva2Vucy5sZW5ndGggLSAxXS5jb250ZXh0SWQgPSBjYWxsQ29udGV4dElkO1xuXG4gICAgICBpZiAoc2hvdWxkUGFyc2VBc3luY0Fycm93KCkpIHtcbiAgICAgICAgLy8gV2UgaGl0IGFuIGFycm93LCBzbyBiYWNrdHJhY2sgYW5kIHN0YXJ0IGFnYWluIHBhcnNpbmcgZnVuY3Rpb24gcGFyYW1ldGVycy5cbiAgICAgICAgX2Jhc2Uuc3RhdGUucmVzdG9yZUZyb21TbmFwc2hvdChzbmFwc2hvdCk7XG4gICAgICAgIHN0b3BTdGF0ZS5zdG9wID0gdHJ1ZTtcbiAgICAgICAgX2Jhc2Uuc3RhdGUuc2NvcGVEZXB0aCsrO1xuXG4gICAgICAgIF9zdGF0ZW1lbnQucGFyc2VGdW5jdGlvblBhcmFtcy5jYWxsKHZvaWQgMCwgKTtcbiAgICAgICAgcGFyc2VBc3luY0Fycm93RnJvbUNhbGxFeHByZXNzaW9uKGFzeW5jU3RhcnRUb2tlbkluZGV4KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgX2luZGV4My5uZXh0LmNhbGwodm9pZCAwLCApO1xuICAgICAgX2Jhc2Uuc3RhdGUudG9rZW5zW19iYXNlLnN0YXRlLnRva2Vucy5sZW5ndGggLSAxXS5zdWJzY3JpcHRTdGFydEluZGV4ID0gc3RhcnRUb2tlbkluZGV4O1xuICAgICAgY29uc3QgY2FsbENvbnRleHRJZCA9IF9iYXNlLmdldE5leHRDb250ZXh0SWQuY2FsbCh2b2lkIDAsICk7XG4gICAgICBfYmFzZS5zdGF0ZS50b2tlbnNbX2Jhc2Uuc3RhdGUudG9rZW5zLmxlbmd0aCAtIDFdLmNvbnRleHRJZCA9IGNhbGxDb250ZXh0SWQ7XG4gICAgICBwYXJzZUNhbGxFeHByZXNzaW9uQXJndW1lbnRzKCk7XG4gICAgICBfYmFzZS5zdGF0ZS50b2tlbnNbX2Jhc2Uuc3RhdGUudG9rZW5zLmxlbmd0aCAtIDFdLmNvbnRleHRJZCA9IGNhbGxDb250ZXh0SWQ7XG4gICAgfVxuICB9IGVsc2UgaWYgKF9pbmRleDMubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlczMuVG9rZW5UeXBlLmJhY2tRdW90ZSkpIHtcbiAgICAvLyBUYWdnZWQgdGVtcGxhdGUgZXhwcmVzc2lvbi5cbiAgICBwYXJzZVRlbXBsYXRlKCk7XG4gIH0gZWxzZSB7XG4gICAgc3RvcFN0YXRlLnN0b3AgPSB0cnVlO1xuICB9XG59IGV4cG9ydHMuYmFzZVBhcnNlU3Vic2NyaXB0ID0gYmFzZVBhcnNlU3Vic2NyaXB0O1xuXG4gZnVuY3Rpb24gYXRQb3NzaWJsZUFzeW5jKCkge1xuICAvLyBUaGlzIHdhcyBtYWRlIGxlc3Mgc3RyaWN0IHRoYW4gdGhlIG9yaWdpbmFsIHZlcnNpb24gdG8gYXZvaWQgcGFzc2luZyBhcm91bmQgbm9kZXMsIGJ1dCBpdFxuICAvLyBzaG91bGQgYmUgc2FmZSB0byBoYXZlIHJhcmUgZmFsc2UgcG9zaXRpdmVzIGhlcmUuXG4gIHJldHVybiAoXG4gICAgX2Jhc2Uuc3RhdGUudG9rZW5zW19iYXNlLnN0YXRlLnRva2Vucy5sZW5ndGggLSAxXS5jb250ZXh0dWFsS2V5d29yZCA9PT0gX2tleXdvcmRzLkNvbnRleHR1YWxLZXl3b3JkLl9hc3luYyAmJlxuICAgICFfdXRpbC5jYW5JbnNlcnRTZW1pY29sb24uY2FsbCh2b2lkIDAsIClcbiAgKTtcbn0gZXhwb3J0cy5hdFBvc3NpYmxlQXN5bmMgPSBhdFBvc3NpYmxlQXN5bmM7XG5cbiBmdW5jdGlvbiBwYXJzZUNhbGxFeHByZXNzaW9uQXJndW1lbnRzKCkge1xuICBsZXQgZmlyc3QgPSB0cnVlO1xuICB3aGlsZSAoIV9pbmRleDMuZWF0LmNhbGwodm9pZCAwLCBfdHlwZXMzLlRva2VuVHlwZS5wYXJlblIpICYmICFfYmFzZS5zdGF0ZS5lcnJvcikge1xuICAgIGlmIChmaXJzdCkge1xuICAgICAgZmlyc3QgPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgX3V0aWwuZXhwZWN0LmNhbGwodm9pZCAwLCBfdHlwZXMzLlRva2VuVHlwZS5jb21tYSk7XG4gICAgICBpZiAoX2luZGV4My5lYXQuY2FsbCh2b2lkIDAsIF90eXBlczMuVG9rZW5UeXBlLnBhcmVuUikpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcGFyc2VFeHByTGlzdEl0ZW0oZmFsc2UpO1xuICB9XG59IGV4cG9ydHMucGFyc2VDYWxsRXhwcmVzc2lvbkFyZ3VtZW50cyA9IHBhcnNlQ2FsbEV4cHJlc3Npb25Bcmd1bWVudHM7XG5cbmZ1bmN0aW9uIHNob3VsZFBhcnNlQXN5bmNBcnJvdygpIHtcbiAgcmV0dXJuIF9pbmRleDMubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlczMuVG9rZW5UeXBlLmNvbG9uKSB8fCBfaW5kZXgzLm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMzLlRva2VuVHlwZS5hcnJvdyk7XG59XG5cbmZ1bmN0aW9uIHBhcnNlQXN5bmNBcnJvd0Zyb21DYWxsRXhwcmVzc2lvbihzdGFydFRva2VuSW5kZXgpIHtcbiAgaWYgKF9iYXNlLmlzVHlwZVNjcmlwdEVuYWJsZWQpIHtcbiAgICBfdHlwZXNjcmlwdC50c1N0YXJ0UGFyc2VBc3luY0Fycm93RnJvbUNhbGxFeHByZXNzaW9uLmNhbGwodm9pZCAwLCApO1xuICB9IGVsc2UgaWYgKF9iYXNlLmlzRmxvd0VuYWJsZWQpIHtcbiAgICBfZmxvdy5mbG93U3RhcnRQYXJzZUFzeW5jQXJyb3dGcm9tQ2FsbEV4cHJlc3Npb24uY2FsbCh2b2lkIDAsICk7XG4gIH1cbiAgX3V0aWwuZXhwZWN0LmNhbGwodm9pZCAwLCBfdHlwZXMzLlRva2VuVHlwZS5hcnJvdyk7XG4gIHBhcnNlQXJyb3dFeHByZXNzaW9uKHN0YXJ0VG9rZW5JbmRleCk7XG59XG5cbi8vIFBhcnNlIGEgbm8tY2FsbCBleHByZXNzaW9uIChsaWtlIGFyZ3VtZW50IG9mIGBuZXdgIG9yIGA6OmAgb3BlcmF0b3JzKS5cblxuZnVuY3Rpb24gcGFyc2VOb0NhbGxFeHByKCkge1xuICBjb25zdCBzdGFydFRva2VuSW5kZXggPSBfYmFzZS5zdGF0ZS50b2tlbnMubGVuZ3RoO1xuICBwYXJzZUV4cHJBdG9tKCk7XG4gIHBhcnNlU3Vic2NyaXB0cyhzdGFydFRva2VuSW5kZXgsIHRydWUpO1xufVxuXG4vLyBQYXJzZSBhbiBhdG9taWMgZXhwcmVzc2lvbiBcdTIwMTQgZWl0aGVyIGEgc2luZ2xlIHRva2VuIHRoYXQgaXMgYW5cbi8vIGV4cHJlc3Npb24sIGFuIGV4cHJlc3Npb24gc3RhcnRlZCBieSBhIGtleXdvcmQgbGlrZSBgZnVuY3Rpb25gIG9yXG4vLyBgbmV3YCwgb3IgYW4gZXhwcmVzc2lvbiB3cmFwcGVkIGluIHB1bmN0dWF0aW9uIGxpa2UgYCgpYCwgYFtdYCxcbi8vIG9yIGB7fWAuXG4vLyBSZXR1cm5zIHRydWUgaWYgdGhlIHBhcnNlZCBleHByZXNzaW9uIHdhcyBhbiBhcnJvdyBmdW5jdGlvbi5cbiBmdW5jdGlvbiBwYXJzZUV4cHJBdG9tKCkge1xuICBpZiAoX2luZGV4My5lYXQuY2FsbCh2b2lkIDAsIF90eXBlczMuVG9rZW5UeXBlLm1vZHVsbykpIHtcbiAgICAvLyBWOCBpbnRyaW5zaWMgZXhwcmVzc2lvbi4gSnVzdCBwYXJzZSB0aGUgaWRlbnRpZmllciwgYW5kIHRoZSBmdW5jdGlvbiBpbnZvY2F0aW9uIGlzIHBhcnNlZFxuICAgIC8vIG5hdHVyYWxseS5cbiAgICBwYXJzZUlkZW50aWZpZXIoKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoX2luZGV4My5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzMy5Ub2tlblR5cGUuanN4VGV4dCkgfHwgX2luZGV4My5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzMy5Ub2tlblR5cGUuanN4RW1wdHlUZXh0KSkge1xuICAgIHBhcnNlTGl0ZXJhbCgpO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfSBlbHNlIGlmIChfaW5kZXgzLm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMzLlRva2VuVHlwZS5sZXNzVGhhbikgJiYgX2Jhc2UuaXNKU1hFbmFibGVkKSB7XG4gICAgX2Jhc2Uuc3RhdGUudHlwZSA9IF90eXBlczMuVG9rZW5UeXBlLmpzeFRhZ1N0YXJ0O1xuICAgIF9pbmRleC5qc3hQYXJzZUVsZW1lbnQuY2FsbCh2b2lkIDAsICk7XG4gICAgX2luZGV4My5uZXh0LmNhbGwodm9pZCAwLCApO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IGNhbkJlQXJyb3cgPSBfYmFzZS5zdGF0ZS5wb3RlbnRpYWxBcnJvd0F0ID09PSBfYmFzZS5zdGF0ZS5zdGFydDtcbiAgc3dpdGNoIChfYmFzZS5zdGF0ZS50eXBlKSB7XG4gICAgY2FzZSBfdHlwZXMzLlRva2VuVHlwZS5zbGFzaDpcbiAgICBjYXNlIF90eXBlczMuVG9rZW5UeXBlLmFzc2lnbjpcbiAgICAgIF9pbmRleDMucmV0b2tlbml6ZVNsYXNoQXNSZWdleC5jYWxsKHZvaWQgMCwgKTtcbiAgICAvLyBGYWxsIHRocm91Z2guXG5cbiAgICBjYXNlIF90eXBlczMuVG9rZW5UeXBlLl9zdXBlcjpcbiAgICBjYXNlIF90eXBlczMuVG9rZW5UeXBlLl90aGlzOlxuICAgIGNhc2UgX3R5cGVzMy5Ub2tlblR5cGUucmVnZXhwOlxuICAgIGNhc2UgX3R5cGVzMy5Ub2tlblR5cGUubnVtOlxuICAgIGNhc2UgX3R5cGVzMy5Ub2tlblR5cGUuYmlnaW50OlxuICAgIGNhc2UgX3R5cGVzMy5Ub2tlblR5cGUuZGVjaW1hbDpcbiAgICBjYXNlIF90eXBlczMuVG9rZW5UeXBlLnN0cmluZzpcbiAgICBjYXNlIF90eXBlczMuVG9rZW5UeXBlLl9udWxsOlxuICAgIGNhc2UgX3R5cGVzMy5Ub2tlblR5cGUuX3RydWU6XG4gICAgY2FzZSBfdHlwZXMzLlRva2VuVHlwZS5fZmFsc2U6XG4gICAgICBfaW5kZXgzLm5leHQuY2FsbCh2b2lkIDAsICk7XG4gICAgICByZXR1cm4gZmFsc2U7XG5cbiAgICBjYXNlIF90eXBlczMuVG9rZW5UeXBlLl9pbXBvcnQ6XG4gICAgICBfaW5kZXgzLm5leHQuY2FsbCh2b2lkIDAsICk7XG4gICAgICBpZiAoX2luZGV4My5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzMy5Ub2tlblR5cGUuZG90KSkge1xuICAgICAgICAvLyBpbXBvcnQubWV0YVxuICAgICAgICBfYmFzZS5zdGF0ZS50b2tlbnNbX2Jhc2Uuc3RhdGUudG9rZW5zLmxlbmd0aCAtIDFdLnR5cGUgPSBfdHlwZXMzLlRva2VuVHlwZS5uYW1lO1xuICAgICAgICBfaW5kZXgzLm5leHQuY2FsbCh2b2lkIDAsICk7XG4gICAgICAgIHBhcnNlSWRlbnRpZmllcigpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gICAgY2FzZSBfdHlwZXMzLlRva2VuVHlwZS5uYW1lOiB7XG4gICAgICBjb25zdCBzdGFydFRva2VuSW5kZXggPSBfYmFzZS5zdGF0ZS50b2tlbnMubGVuZ3RoO1xuICAgICAgY29uc3QgZnVuY3Rpb25TdGFydCA9IF9iYXNlLnN0YXRlLnN0YXJ0O1xuICAgICAgY29uc3QgY29udGV4dHVhbEtleXdvcmQgPSBfYmFzZS5zdGF0ZS5jb250ZXh0dWFsS2V5d29yZDtcbiAgICAgIHBhcnNlSWRlbnRpZmllcigpO1xuICAgICAgaWYgKGNvbnRleHR1YWxLZXl3b3JkID09PSBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX2F3YWl0KSB7XG4gICAgICAgIHBhcnNlQXdhaXQoKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgY29udGV4dHVhbEtleXdvcmQgPT09IF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fYXN5bmMgJiZcbiAgICAgICAgX2luZGV4My5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzMy5Ub2tlblR5cGUuX2Z1bmN0aW9uKSAmJlxuICAgICAgICAhX3V0aWwuY2FuSW5zZXJ0U2VtaWNvbG9uLmNhbGwodm9pZCAwLCApXG4gICAgICApIHtcbiAgICAgICAgX2luZGV4My5uZXh0LmNhbGwodm9pZCAwLCApO1xuICAgICAgICBfc3RhdGVtZW50LnBhcnNlRnVuY3Rpb24uY2FsbCh2b2lkIDAsIGZ1bmN0aW9uU3RhcnQsIGZhbHNlKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgY2FuQmVBcnJvdyAmJlxuICAgICAgICBjb250ZXh0dWFsS2V5d29yZCA9PT0gX2tleXdvcmRzLkNvbnRleHR1YWxLZXl3b3JkLl9hc3luYyAmJlxuICAgICAgICAhX3V0aWwuY2FuSW5zZXJ0U2VtaWNvbG9uLmNhbGwodm9pZCAwLCApICYmXG4gICAgICAgIF9pbmRleDMubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlczMuVG9rZW5UeXBlLm5hbWUpXG4gICAgICApIHtcbiAgICAgICAgX2Jhc2Uuc3RhdGUuc2NvcGVEZXB0aCsrO1xuICAgICAgICBfbHZhbC5wYXJzZUJpbmRpbmdJZGVudGlmaWVyLmNhbGwodm9pZCAwLCBmYWxzZSk7XG4gICAgICAgIF91dGlsLmV4cGVjdC5jYWxsKHZvaWQgMCwgX3R5cGVzMy5Ub2tlblR5cGUuYXJyb3cpO1xuICAgICAgICAvLyBsZXQgZm9vID0gYXN5bmMgYmFyID0+IHt9O1xuICAgICAgICBwYXJzZUFycm93RXhwcmVzc2lvbihzdGFydFRva2VuSW5kZXgpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0gZWxzZSBpZiAoX2luZGV4My5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzMy5Ub2tlblR5cGUuX2RvKSAmJiAhX3V0aWwuY2FuSW5zZXJ0U2VtaWNvbG9uLmNhbGwodm9pZCAwLCApKSB7XG4gICAgICAgIF9pbmRleDMubmV4dC5jYWxsKHZvaWQgMCwgKTtcbiAgICAgICAgX3N0YXRlbWVudC5wYXJzZUJsb2NrLmNhbGwodm9pZCAwLCApO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGlmIChjYW5CZUFycm93ICYmICFfdXRpbC5jYW5JbnNlcnRTZW1pY29sb24uY2FsbCh2b2lkIDAsICkgJiYgX2luZGV4My5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzMy5Ub2tlblR5cGUuYXJyb3cpKSB7XG4gICAgICAgIF9iYXNlLnN0YXRlLnNjb3BlRGVwdGgrKztcbiAgICAgICAgX2x2YWwubWFya1ByaW9yQmluZGluZ0lkZW50aWZpZXIuY2FsbCh2b2lkIDAsIGZhbHNlKTtcbiAgICAgICAgX3V0aWwuZXhwZWN0LmNhbGwodm9pZCAwLCBfdHlwZXMzLlRva2VuVHlwZS5hcnJvdyk7XG4gICAgICAgIHBhcnNlQXJyb3dFeHByZXNzaW9uKHN0YXJ0VG9rZW5JbmRleCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICBfYmFzZS5zdGF0ZS50b2tlbnNbX2Jhc2Uuc3RhdGUudG9rZW5zLmxlbmd0aCAtIDFdLmlkZW50aWZpZXJSb2xlID0gX2luZGV4My5JZGVudGlmaWVyUm9sZS5BY2Nlc3M7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY2FzZSBfdHlwZXMzLlRva2VuVHlwZS5fZG86IHtcbiAgICAgIF9pbmRleDMubmV4dC5jYWxsKHZvaWQgMCwgKTtcbiAgICAgIF9zdGF0ZW1lbnQucGFyc2VCbG9jay5jYWxsKHZvaWQgMCwgKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjYXNlIF90eXBlczMuVG9rZW5UeXBlLnBhcmVuTDoge1xuICAgICAgY29uc3Qgd2FzQXJyb3cgPSBwYXJzZVBhcmVuQW5kRGlzdGluZ3Vpc2hFeHByZXNzaW9uKGNhbkJlQXJyb3cpO1xuICAgICAgcmV0dXJuIHdhc0Fycm93O1xuICAgIH1cblxuICAgIGNhc2UgX3R5cGVzMy5Ub2tlblR5cGUuYnJhY2tldEw6XG4gICAgICBfaW5kZXgzLm5leHQuY2FsbCh2b2lkIDAsICk7XG4gICAgICBwYXJzZUV4cHJMaXN0KF90eXBlczMuVG9rZW5UeXBlLmJyYWNrZXRSLCB0cnVlKTtcbiAgICAgIHJldHVybiBmYWxzZTtcblxuICAgIGNhc2UgX3R5cGVzMy5Ub2tlblR5cGUuYnJhY2VMOlxuICAgICAgcGFyc2VPYmooZmFsc2UsIGZhbHNlKTtcbiAgICAgIHJldHVybiBmYWxzZTtcblxuICAgIGNhc2UgX3R5cGVzMy5Ub2tlblR5cGUuX2Z1bmN0aW9uOlxuICAgICAgcGFyc2VGdW5jdGlvbkV4cHJlc3Npb24oKTtcbiAgICAgIHJldHVybiBmYWxzZTtcblxuICAgIGNhc2UgX3R5cGVzMy5Ub2tlblR5cGUuYXQ6XG4gICAgICBfc3RhdGVtZW50LnBhcnNlRGVjb3JhdG9ycy5jYWxsKHZvaWQgMCwgKTtcbiAgICAvLyBGYWxsIHRocm91Z2guXG5cbiAgICBjYXNlIF90eXBlczMuVG9rZW5UeXBlLl9jbGFzczpcbiAgICAgIF9zdGF0ZW1lbnQucGFyc2VDbGFzcy5jYWxsKHZvaWQgMCwgZmFsc2UpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gICAgY2FzZSBfdHlwZXMzLlRva2VuVHlwZS5fbmV3OlxuICAgICAgcGFyc2VOZXcoKTtcbiAgICAgIHJldHVybiBmYWxzZTtcblxuICAgIGNhc2UgX3R5cGVzMy5Ub2tlblR5cGUuYmFja1F1b3RlOlxuICAgICAgcGFyc2VUZW1wbGF0ZSgpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gICAgY2FzZSBfdHlwZXMzLlRva2VuVHlwZS5kb3VibGVDb2xvbjoge1xuICAgICAgX2luZGV4My5uZXh0LmNhbGwodm9pZCAwLCApO1xuICAgICAgcGFyc2VOb0NhbGxFeHByKCk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY2FzZSBfdHlwZXMzLlRva2VuVHlwZS5oYXNoOiB7XG4gICAgICBjb25zdCBjb2RlID0gX2luZGV4My5sb29rYWhlYWRDaGFyQ29kZS5jYWxsKHZvaWQgMCwgKTtcbiAgICAgIGlmIChfaWRlbnRpZmllci5JU19JREVOVElGSUVSX1NUQVJUW2NvZGVdIHx8IGNvZGUgPT09IF9jaGFyY29kZXMuY2hhckNvZGVzLmJhY2tzbGFzaCkge1xuICAgICAgICBwYXJzZU1heWJlUHJpdmF0ZU5hbWUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIF9pbmRleDMubmV4dC5jYWxsKHZvaWQgMCwgKTtcbiAgICAgIH1cbiAgICAgIC8vIFNtYXJ0IHBpcGVsaW5lIHRvcGljIHJlZmVyZW5jZS5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBkZWZhdWx0OlxuICAgICAgX3V0aWwudW5leHBlY3RlZC5jYWxsKHZvaWQgMCwgKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgfVxufSBleHBvcnRzLnBhcnNlRXhwckF0b20gPSBwYXJzZUV4cHJBdG9tO1xuXG5mdW5jdGlvbiBwYXJzZU1heWJlUHJpdmF0ZU5hbWUoKSB7XG4gIF9pbmRleDMuZWF0LmNhbGwodm9pZCAwLCBfdHlwZXMzLlRva2VuVHlwZS5oYXNoKTtcbiAgcGFyc2VJZGVudGlmaWVyKCk7XG59XG5cbmZ1bmN0aW9uIHBhcnNlRnVuY3Rpb25FeHByZXNzaW9uKCkge1xuICBjb25zdCBmdW5jdGlvblN0YXJ0ID0gX2Jhc2Uuc3RhdGUuc3RhcnQ7XG4gIHBhcnNlSWRlbnRpZmllcigpO1xuICBpZiAoX2luZGV4My5lYXQuY2FsbCh2b2lkIDAsIF90eXBlczMuVG9rZW5UeXBlLmRvdCkpIHtcbiAgICAvLyBmdW5jdGlvbi5zZW50XG4gICAgcGFyc2VJZGVudGlmaWVyKCk7XG4gIH1cbiAgX3N0YXRlbWVudC5wYXJzZUZ1bmN0aW9uLmNhbGwodm9pZCAwLCBmdW5jdGlvblN0YXJ0LCBmYWxzZSk7XG59XG5cbiBmdW5jdGlvbiBwYXJzZUxpdGVyYWwoKSB7XG4gIF9pbmRleDMubmV4dC5jYWxsKHZvaWQgMCwgKTtcbn0gZXhwb3J0cy5wYXJzZUxpdGVyYWwgPSBwYXJzZUxpdGVyYWw7XG5cbiBmdW5jdGlvbiBwYXJzZVBhcmVuRXhwcmVzc2lvbigpIHtcbiAgX3V0aWwuZXhwZWN0LmNhbGwodm9pZCAwLCBfdHlwZXMzLlRva2VuVHlwZS5wYXJlbkwpO1xuICBwYXJzZUV4cHJlc3Npb24oKTtcbiAgX3V0aWwuZXhwZWN0LmNhbGwodm9pZCAwLCBfdHlwZXMzLlRva2VuVHlwZS5wYXJlblIpO1xufSBleHBvcnRzLnBhcnNlUGFyZW5FeHByZXNzaW9uID0gcGFyc2VQYXJlbkV4cHJlc3Npb247XG5cbi8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIHdhcyBhbiBhcnJvdyBleHByZXNzaW9uLlxuZnVuY3Rpb24gcGFyc2VQYXJlbkFuZERpc3Rpbmd1aXNoRXhwcmVzc2lvbihjYW5CZUFycm93KSB7XG4gIC8vIEFzc3VtZSB0aGlzIGlzIGEgbm9ybWFsIHBhcmVudGhlc2l6ZWQgZXhwcmVzc2lvbiwgYnV0IGlmIHdlIHNlZSBhbiBhcnJvdywgd2UnbGwgYmFpbCBhbmRcbiAgLy8gc3RhcnQgb3ZlciBhcyBhIHBhcmFtZXRlciBsaXN0LlxuICBjb25zdCBzbmFwc2hvdCA9IF9iYXNlLnN0YXRlLnNuYXBzaG90KCk7XG5cbiAgY29uc3Qgc3RhcnRUb2tlbkluZGV4ID0gX2Jhc2Uuc3RhdGUudG9rZW5zLmxlbmd0aDtcbiAgX3V0aWwuZXhwZWN0LmNhbGwodm9pZCAwLCBfdHlwZXMzLlRva2VuVHlwZS5wYXJlbkwpO1xuXG4gIGxldCBmaXJzdCA9IHRydWU7XG5cbiAgd2hpbGUgKCFfaW5kZXgzLm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMzLlRva2VuVHlwZS5wYXJlblIpICYmICFfYmFzZS5zdGF0ZS5lcnJvcikge1xuICAgIGlmIChmaXJzdCkge1xuICAgICAgZmlyc3QgPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgX3V0aWwuZXhwZWN0LmNhbGwodm9pZCAwLCBfdHlwZXMzLlRva2VuVHlwZS5jb21tYSk7XG4gICAgICBpZiAoX2luZGV4My5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzMy5Ub2tlblR5cGUucGFyZW5SKSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoX2luZGV4My5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzMy5Ub2tlblR5cGUuZWxsaXBzaXMpKSB7XG4gICAgICBfbHZhbC5wYXJzZVJlc3QuY2FsbCh2b2lkIDAsIGZhbHNlIC8qIGlzQmxvY2tTY29wZSAqLyk7XG4gICAgICBwYXJzZVBhcmVuSXRlbSgpO1xuICAgICAgYnJlYWs7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhcnNlTWF5YmVBc3NpZ24oZmFsc2UsIHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIF91dGlsLmV4cGVjdC5jYWxsKHZvaWQgMCwgX3R5cGVzMy5Ub2tlblR5cGUucGFyZW5SKTtcblxuICBpZiAoY2FuQmVBcnJvdyAmJiBzaG91bGRQYXJzZUFycm93KCkpIHtcbiAgICBjb25zdCB3YXNBcnJvdyA9IHBhcnNlQXJyb3coKTtcbiAgICBpZiAod2FzQXJyb3cpIHtcbiAgICAgIC8vIEl0IHdhcyBhbiBhcnJvdyBmdW5jdGlvbiB0aGlzIHdob2xlIHRpbWUsIHNvIHN0YXJ0IG92ZXIgYW5kIHBhcnNlIGl0IGFzIHBhcmFtcyBzbyB0aGF0IHdlXG4gICAgICAvLyBnZXQgcHJvcGVyIHRva2VuIGFubm90YXRpb25zLlxuICAgICAgX2Jhc2Uuc3RhdGUucmVzdG9yZUZyb21TbmFwc2hvdChzbmFwc2hvdCk7XG4gICAgICBfYmFzZS5zdGF0ZS5zY29wZURlcHRoKys7XG4gICAgICAvLyBEb24ndCBzcGVjaWZ5IGEgY29udGV4dCBJRCBiZWNhdXNlIGFycm93IGZ1bmN0aW9ucyBkb24ndCBuZWVkIGEgY29udGV4dCBJRC5cbiAgICAgIF9zdGF0ZW1lbnQucGFyc2VGdW5jdGlvblBhcmFtcy5jYWxsKHZvaWQgMCwgKTtcbiAgICAgIHBhcnNlQXJyb3coKTtcbiAgICAgIHBhcnNlQXJyb3dFeHByZXNzaW9uKHN0YXJ0VG9rZW5JbmRleCk7XG4gICAgICBpZiAoX2Jhc2Uuc3RhdGUuZXJyb3IpIHtcbiAgICAgICAgLy8gTmV2ZXJtaW5kISBUaGlzIG11c3QgaGF2ZSBiZWVuIHNvbWV0aGluZyB0aGF0IGxvb2tzIHZlcnkgbXVjaCBsaWtlIGFuXG4gICAgICAgIC8vIGFycm93IGZ1bmN0aW9uIGJ1dCB3aGVyZSBpdHMgXCJwYXJhbWV0ZXIgbGlzdFwiIGlzbid0IGFjdHVhbGx5IGEgdmFsaWRcbiAgICAgICAgLy8gcGFyYW1ldGVyIGxpc3QuIEZvcmNlIG5vbi1hcnJvdyBwYXJzaW5nLlxuICAgICAgICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2FsYW5ncGllcmNlL3N1Y3Jhc2UvaXNzdWVzLzY2NiBmb3IgYW4gZXhhbXBsZS5cbiAgICAgICAgX2Jhc2Uuc3RhdGUucmVzdG9yZUZyb21TbmFwc2hvdChzbmFwc2hvdCk7XG4gICAgICAgIHBhcnNlUGFyZW5BbmREaXN0aW5ndWlzaEV4cHJlc3Npb24oZmFsc2UpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIHNob3VsZFBhcnNlQXJyb3coKSB7XG4gIHJldHVybiBfaW5kZXgzLm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMzLlRva2VuVHlwZS5jb2xvbikgfHwgIV91dGlsLmNhbkluc2VydFNlbWljb2xvbi5jYWxsKHZvaWQgMCwgKTtcbn1cblxuLy8gUmV0dXJucyB3aGV0aGVyIHRoZXJlIHdhcyBhbiBhcnJvdyB0b2tlbi5cbiBmdW5jdGlvbiBwYXJzZUFycm93KCkge1xuICBpZiAoX2Jhc2UuaXNUeXBlU2NyaXB0RW5hYmxlZCkge1xuICAgIHJldHVybiBfdHlwZXNjcmlwdC50c1BhcnNlQXJyb3cuY2FsbCh2b2lkIDAsICk7XG4gIH0gZWxzZSBpZiAoX2Jhc2UuaXNGbG93RW5hYmxlZCkge1xuICAgIHJldHVybiBfZmxvdy5mbG93UGFyc2VBcnJvdy5jYWxsKHZvaWQgMCwgKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gX2luZGV4My5lYXQuY2FsbCh2b2lkIDAsIF90eXBlczMuVG9rZW5UeXBlLmFycm93KTtcbiAgfVxufSBleHBvcnRzLnBhcnNlQXJyb3cgPSBwYXJzZUFycm93O1xuXG5mdW5jdGlvbiBwYXJzZVBhcmVuSXRlbSgpIHtcbiAgaWYgKF9iYXNlLmlzVHlwZVNjcmlwdEVuYWJsZWQgfHwgX2Jhc2UuaXNGbG93RW5hYmxlZCkge1xuICAgIF90eXBlcy50eXBlZFBhcnNlUGFyZW5JdGVtLmNhbGwodm9pZCAwLCApO1xuICB9XG59XG5cbi8vIE5ldydzIHByZWNlZGVuY2UgaXMgc2xpZ2h0bHkgdHJpY2t5LiBJdCBtdXN0IGFsbG93IGl0cyBhcmd1bWVudCB0b1xuLy8gYmUgYSBgW11gIG9yIGRvdCBzdWJzY3JpcHQgZXhwcmVzc2lvbiwgYnV0IG5vdCBhIGNhbGwgXHUyMDE0IGF0IGxlYXN0LFxuLy8gbm90IHdpdGhvdXQgd3JhcHBpbmcgaXQgaW4gcGFyZW50aGVzZXMuIFRodXMsIGl0IHVzZXMgdGhlIG5vQ2FsbHNcbi8vIGFyZ3VtZW50IHRvIHBhcnNlU3Vic2NyaXB0cyB0byBwcmV2ZW50IGl0IGZyb20gY29uc3VtaW5nIHRoZVxuLy8gYXJndW1lbnQgbGlzdC5cbmZ1bmN0aW9uIHBhcnNlTmV3KCkge1xuICBfdXRpbC5leHBlY3QuY2FsbCh2b2lkIDAsIF90eXBlczMuVG9rZW5UeXBlLl9uZXcpO1xuICBpZiAoX2luZGV4My5lYXQuY2FsbCh2b2lkIDAsIF90eXBlczMuVG9rZW5UeXBlLmRvdCkpIHtcbiAgICAvLyBuZXcudGFyZ2V0XG4gICAgcGFyc2VJZGVudGlmaWVyKCk7XG4gICAgcmV0dXJuO1xuICB9XG4gIHBhcnNlTmV3Q2FsbGVlKCk7XG4gIGlmIChfYmFzZS5pc0Zsb3dFbmFibGVkKSB7XG4gICAgX2Zsb3cuZmxvd1N0YXJ0UGFyc2VOZXdBcmd1bWVudHMuY2FsbCh2b2lkIDAsICk7XG4gIH1cbiAgaWYgKF9pbmRleDMuZWF0LmNhbGwodm9pZCAwLCBfdHlwZXMzLlRva2VuVHlwZS5wYXJlbkwpKSB7XG4gICAgcGFyc2VFeHByTGlzdChfdHlwZXMzLlRva2VuVHlwZS5wYXJlblIpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHBhcnNlTmV3Q2FsbGVlKCkge1xuICBwYXJzZU5vQ2FsbEV4cHIoKTtcbiAgX2luZGV4My5lYXQuY2FsbCh2b2lkIDAsIF90eXBlczMuVG9rZW5UeXBlLnF1ZXN0aW9uRG90KTtcbn1cblxuIGZ1bmN0aW9uIHBhcnNlVGVtcGxhdGUoKSB7XG4gIC8vIEZpbmlzaCBgLCByZWFkIHF1YXNpXG4gIF9pbmRleDMubmV4dFRlbXBsYXRlVG9rZW4uY2FsbCh2b2lkIDAsICk7XG4gIC8vIEZpbmlzaCBxdWFzaSwgcmVhZCAke1xuICBfaW5kZXgzLm5leHRUZW1wbGF0ZVRva2VuLmNhbGwodm9pZCAwLCApO1xuICB3aGlsZSAoIV9pbmRleDMubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlczMuVG9rZW5UeXBlLmJhY2tRdW90ZSkgJiYgIV9iYXNlLnN0YXRlLmVycm9yKSB7XG4gICAgX3V0aWwuZXhwZWN0LmNhbGwodm9pZCAwLCBfdHlwZXMzLlRva2VuVHlwZS5kb2xsYXJCcmFjZUwpO1xuICAgIHBhcnNlRXhwcmVzc2lvbigpO1xuICAgIC8vIEZpbmlzaCB9LCByZWFkIHF1YXNpXG4gICAgX2luZGV4My5uZXh0VGVtcGxhdGVUb2tlbi5jYWxsKHZvaWQgMCwgKTtcbiAgICAvLyBGaW5pc2ggcXVhc2ksIHJlYWQgZWl0aGVyICR7IG9yIGBcbiAgICBfaW5kZXgzLm5leHRUZW1wbGF0ZVRva2VuLmNhbGwodm9pZCAwLCApO1xuICB9XG4gIF9pbmRleDMubmV4dC5jYWxsKHZvaWQgMCwgKTtcbn0gZXhwb3J0cy5wYXJzZVRlbXBsYXRlID0gcGFyc2VUZW1wbGF0ZTtcblxuLy8gUGFyc2UgYW4gb2JqZWN0IGxpdGVyYWwgb3IgYmluZGluZyBwYXR0ZXJuLlxuIGZ1bmN0aW9uIHBhcnNlT2JqKGlzUGF0dGVybiwgaXNCbG9ja1Njb3BlKSB7XG4gIC8vIEF0dGFjaCBhIGNvbnRleHQgSUQgdG8gdGhlIG9iamVjdCBvcGVuIGFuZCBjbG9zZSBicmFjZSBhbmQgZWFjaCBvYmplY3Qga2V5LlxuICBjb25zdCBjb250ZXh0SWQgPSBfYmFzZS5nZXROZXh0Q29udGV4dElkLmNhbGwodm9pZCAwLCApO1xuICBsZXQgZmlyc3QgPSB0cnVlO1xuXG4gIF9pbmRleDMubmV4dC5jYWxsKHZvaWQgMCwgKTtcbiAgX2Jhc2Uuc3RhdGUudG9rZW5zW19iYXNlLnN0YXRlLnRva2Vucy5sZW5ndGggLSAxXS5jb250ZXh0SWQgPSBjb250ZXh0SWQ7XG5cbiAgd2hpbGUgKCFfaW5kZXgzLmVhdC5jYWxsKHZvaWQgMCwgX3R5cGVzMy5Ub2tlblR5cGUuYnJhY2VSKSAmJiAhX2Jhc2Uuc3RhdGUuZXJyb3IpIHtcbiAgICBpZiAoZmlyc3QpIHtcbiAgICAgIGZpcnN0ID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIF91dGlsLmV4cGVjdC5jYWxsKHZvaWQgMCwgX3R5cGVzMy5Ub2tlblR5cGUuY29tbWEpO1xuICAgICAgaWYgKF9pbmRleDMuZWF0LmNhbGwodm9pZCAwLCBfdHlwZXMzLlRva2VuVHlwZS5icmFjZVIpKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBpc0dlbmVyYXRvciA9IGZhbHNlO1xuICAgIGlmIChfaW5kZXgzLm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMzLlRva2VuVHlwZS5lbGxpcHNpcykpIHtcbiAgICAgIGNvbnN0IHByZXZpb3VzSW5kZXggPSBfYmFzZS5zdGF0ZS50b2tlbnMubGVuZ3RoO1xuICAgICAgX2x2YWwucGFyc2VTcHJlYWQuY2FsbCh2b2lkIDAsICk7XG4gICAgICBpZiAoaXNQYXR0ZXJuKSB7XG4gICAgICAgIC8vIE1hcmsgcm9sZSB3aGVuIHRoZSBvbmx5IHRoaW5nIGJlaW5nIHNwcmVhZCBvdmVyIGlzIGFuIGlkZW50aWZpZXIuXG4gICAgICAgIGlmIChfYmFzZS5zdGF0ZS50b2tlbnMubGVuZ3RoID09PSBwcmV2aW91c0luZGV4ICsgMikge1xuICAgICAgICAgIF9sdmFsLm1hcmtQcmlvckJpbmRpbmdJZGVudGlmaWVyLmNhbGwodm9pZCAwLCBpc0Jsb2NrU2NvcGUpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChfaW5kZXgzLmVhdC5jYWxsKHZvaWQgMCwgX3R5cGVzMy5Ub2tlblR5cGUuYnJhY2VSKSkge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoIWlzUGF0dGVybikge1xuICAgICAgaXNHZW5lcmF0b3IgPSBfaW5kZXgzLmVhdC5jYWxsKHZvaWQgMCwgX3R5cGVzMy5Ub2tlblR5cGUuc3Rhcik7XG4gICAgfVxuXG4gICAgaWYgKCFpc1BhdHRlcm4gJiYgX3V0aWwuaXNDb250ZXh0dWFsLmNhbGwodm9pZCAwLCBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX2FzeW5jKSkge1xuICAgICAgaWYgKGlzR2VuZXJhdG9yKSBfdXRpbC51bmV4cGVjdGVkLmNhbGwodm9pZCAwLCApO1xuXG4gICAgICBwYXJzZUlkZW50aWZpZXIoKTtcbiAgICAgIGlmIChcbiAgICAgICAgX2luZGV4My5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzMy5Ub2tlblR5cGUuY29sb24pIHx8XG4gICAgICAgIF9pbmRleDMubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlczMuVG9rZW5UeXBlLnBhcmVuTCkgfHxcbiAgICAgICAgX2luZGV4My5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzMy5Ub2tlblR5cGUuYnJhY2VSKSB8fFxuICAgICAgICBfaW5kZXgzLm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMzLlRva2VuVHlwZS5lcSkgfHxcbiAgICAgICAgX2luZGV4My5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzMy5Ub2tlblR5cGUuY29tbWEpXG4gICAgICApIHtcbiAgICAgICAgLy8gVGhpcyBpcyBhIGtleSBjYWxsZWQgXCJhc3luY1wiIHJhdGhlciB0aGFuIGFuIGFzeW5jIGZ1bmN0aW9uLlxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKF9pbmRleDMubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlczMuVG9rZW5UeXBlLnN0YXIpKSB7XG4gICAgICAgICAgX2luZGV4My5uZXh0LmNhbGwodm9pZCAwLCApO1xuICAgICAgICAgIGlzR2VuZXJhdG9yID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBwYXJzZVByb3BlcnR5TmFtZShjb250ZXh0SWQpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwYXJzZVByb3BlcnR5TmFtZShjb250ZXh0SWQpO1xuICAgIH1cblxuICAgIHBhcnNlT2JqUHJvcFZhbHVlKGlzUGF0dGVybiwgaXNCbG9ja1Njb3BlLCBjb250ZXh0SWQpO1xuICB9XG5cbiAgX2Jhc2Uuc3RhdGUudG9rZW5zW19iYXNlLnN0YXRlLnRva2Vucy5sZW5ndGggLSAxXS5jb250ZXh0SWQgPSBjb250ZXh0SWQ7XG59IGV4cG9ydHMucGFyc2VPYmogPSBwYXJzZU9iajtcblxuZnVuY3Rpb24gaXNHZXR0ZXJPclNldHRlck1ldGhvZChpc1BhdHRlcm4pIHtcbiAgLy8gV2UgZ28gb2ZmIG9mIHRoZSBuZXh0IGFuZCBkb24ndCBib3RoZXIgY2hlY2tpbmcgaWYgdGhlIG5vZGUga2V5IGlzIGFjdHVhbGx5IFwiZ2V0XCIgb3IgXCJzZXRcIi5cbiAgLy8gVGhpcyBsZXRzIHVzIGF2b2lkIGdlbmVyYXRpbmcgYSBub2RlLCBhbmQgc2hvdWxkIG9ubHkgbWFrZSB0aGUgdmFsaWRhdGlvbiB3b3JzZS5cbiAgcmV0dXJuIChcbiAgICAhaXNQYXR0ZXJuICYmXG4gICAgKF9pbmRleDMubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlczMuVG9rZW5UeXBlLnN0cmluZykgfHwgLy8gZ2V0IFwic3RyaW5nXCIoKSB7fVxuICAgICAgX2luZGV4My5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzMy5Ub2tlblR5cGUubnVtKSB8fCAvLyBnZXQgMSgpIHt9XG4gICAgICBfaW5kZXgzLm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMzLlRva2VuVHlwZS5icmFja2V0TCkgfHwgLy8gZ2V0IFtcInN0cmluZ1wiXSgpIHt9XG4gICAgICBfaW5kZXgzLm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMzLlRva2VuVHlwZS5uYW1lKSB8fCAvLyBnZXQgZm9vKCkge31cbiAgICAgICEhKF9iYXNlLnN0YXRlLnR5cGUgJiBfdHlwZXMzLlRva2VuVHlwZS5JU19LRVlXT1JEKSkgLy8gZ2V0IGRlYnVnZ2VyKCkge31cbiAgKTtcbn1cblxuLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMgd2FzIGEgbWV0aG9kLlxuZnVuY3Rpb24gcGFyc2VPYmplY3RNZXRob2QoaXNQYXR0ZXJuLCBvYmplY3RDb250ZXh0SWQpIHtcbiAgLy8gV2UgZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dCBtb2RpZmllcnMgYmVjYXVzZSBvYmplY3QgbWV0aG9kcyBjYW4ndCBoYXZlIG9wdGlvbmFsIGJvZGllcywgc29cbiAgLy8gdGhlIHN0YXJ0IHdpbGwgbmV2ZXIgYmUgdXNlZC5cbiAgY29uc3QgZnVuY3Rpb25TdGFydCA9IF9iYXNlLnN0YXRlLnN0YXJ0O1xuICBpZiAoX2luZGV4My5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzMy5Ub2tlblR5cGUucGFyZW5MKSkge1xuICAgIGlmIChpc1BhdHRlcm4pIF91dGlsLnVuZXhwZWN0ZWQuY2FsbCh2b2lkIDAsICk7XG4gICAgcGFyc2VNZXRob2QoZnVuY3Rpb25TdGFydCwgLyogaXNDb25zdHJ1Y3RvciAqLyBmYWxzZSk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpZiAoaXNHZXR0ZXJPclNldHRlck1ldGhvZChpc1BhdHRlcm4pKSB7XG4gICAgcGFyc2VQcm9wZXJ0eU5hbWUob2JqZWN0Q29udGV4dElkKTtcbiAgICBwYXJzZU1ldGhvZChmdW5jdGlvblN0YXJ0LCAvKiBpc0NvbnN0cnVjdG9yICovIGZhbHNlKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIHBhcnNlT2JqZWN0UHJvcGVydHkoaXNQYXR0ZXJuLCBpc0Jsb2NrU2NvcGUpIHtcbiAgaWYgKF9pbmRleDMuZWF0LmNhbGwodm9pZCAwLCBfdHlwZXMzLlRva2VuVHlwZS5jb2xvbikpIHtcbiAgICBpZiAoaXNQYXR0ZXJuKSB7XG4gICAgICBfbHZhbC5wYXJzZU1heWJlRGVmYXVsdC5jYWxsKHZvaWQgMCwgaXNCbG9ja1Njb3BlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcGFyc2VNYXliZUFzc2lnbihmYWxzZSk7XG4gICAgfVxuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIFNpbmNlIHRoZXJlJ3Mgbm8gY29sb24sIHdlIGFzc3VtZSB0aGlzIGlzIGFuIG9iamVjdCBzaG9ydGhhbmQuXG5cbiAgLy8gSWYgd2UncmUgaW4gYSBkZXN0cnVjdHVyaW5nLCB3ZSd2ZSBub3cgZGlzY292ZXJlZCB0aGF0IHRoZSBrZXkgd2FzIGFjdHVhbGx5IGFuIGFzc2lnbmVlLCBzb1xuICAvLyB3ZSBuZWVkIHRvIHRhZyBpdCBhcyBhIGRlY2xhcmF0aW9uIHdpdGggdGhlIGFwcHJvcHJpYXRlIHNjb3BlLiBPdGhlcndpc2UsIHdlIG1pZ2h0IG5lZWQgdG9cbiAgLy8gdHJhbnNmb3JtIGl0IG9uIGFjY2Vzcywgc28gbWFyayBpdCBhcyBhIG5vcm1hbCBvYmplY3Qgc2hvcnRoYW5kLlxuICBsZXQgaWRlbnRpZmllclJvbGU7XG4gIGlmIChpc1BhdHRlcm4pIHtcbiAgICBpZiAoX2Jhc2Uuc3RhdGUuc2NvcGVEZXB0aCA9PT0gMCkge1xuICAgICAgaWRlbnRpZmllclJvbGUgPSBfaW5kZXgzLklkZW50aWZpZXJSb2xlLk9iamVjdFNob3J0aGFuZFRvcExldmVsRGVjbGFyYXRpb247XG4gICAgfSBlbHNlIGlmIChpc0Jsb2NrU2NvcGUpIHtcbiAgICAgIGlkZW50aWZpZXJSb2xlID0gX2luZGV4My5JZGVudGlmaWVyUm9sZS5PYmplY3RTaG9ydGhhbmRCbG9ja1Njb3BlZERlY2xhcmF0aW9uO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZGVudGlmaWVyUm9sZSA9IF9pbmRleDMuSWRlbnRpZmllclJvbGUuT2JqZWN0U2hvcnRoYW5kRnVuY3Rpb25TY29wZWREZWNsYXJhdGlvbjtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaWRlbnRpZmllclJvbGUgPSBfaW5kZXgzLklkZW50aWZpZXJSb2xlLk9iamVjdFNob3J0aGFuZDtcbiAgfVxuICBfYmFzZS5zdGF0ZS50b2tlbnNbX2Jhc2Uuc3RhdGUudG9rZW5zLmxlbmd0aCAtIDFdLmlkZW50aWZpZXJSb2xlID0gaWRlbnRpZmllclJvbGU7XG5cbiAgLy8gUmVnYXJkbGVzcyBvZiB3aGV0aGVyIHdlIGtub3cgdGhpcyB0byBiZSBhIHBhdHRlcm4gb3IgaWYgd2UncmUgaW4gYW4gYW1iaWd1b3VzIGNvbnRleHQsIGFsbG93XG4gIC8vIHBhcnNpbmcgYXMgaWYgdGhlcmUncyBhIGRlZmF1bHQgdmFsdWUuXG4gIF9sdmFsLnBhcnNlTWF5YmVEZWZhdWx0LmNhbGwodm9pZCAwLCBpc0Jsb2NrU2NvcGUsIHRydWUpO1xufVxuXG5mdW5jdGlvbiBwYXJzZU9ialByb3BWYWx1ZShcbiAgaXNQYXR0ZXJuLFxuICBpc0Jsb2NrU2NvcGUsXG4gIG9iamVjdENvbnRleHRJZCxcbikge1xuICBpZiAoX2Jhc2UuaXNUeXBlU2NyaXB0RW5hYmxlZCkge1xuICAgIF90eXBlc2NyaXB0LnRzU3RhcnRQYXJzZU9ialByb3BWYWx1ZS5jYWxsKHZvaWQgMCwgKTtcbiAgfSBlbHNlIGlmIChfYmFzZS5pc0Zsb3dFbmFibGVkKSB7XG4gICAgX2Zsb3cuZmxvd1N0YXJ0UGFyc2VPYmpQcm9wVmFsdWUuY2FsbCh2b2lkIDAsICk7XG4gIH1cbiAgY29uc3Qgd2FzTWV0aG9kID0gcGFyc2VPYmplY3RNZXRob2QoaXNQYXR0ZXJuLCBvYmplY3RDb250ZXh0SWQpO1xuICBpZiAoIXdhc01ldGhvZCkge1xuICAgIHBhcnNlT2JqZWN0UHJvcGVydHkoaXNQYXR0ZXJuLCBpc0Jsb2NrU2NvcGUpO1xuICB9XG59XG5cbiBmdW5jdGlvbiBwYXJzZVByb3BlcnR5TmFtZShvYmplY3RDb250ZXh0SWQpIHtcbiAgaWYgKF9iYXNlLmlzRmxvd0VuYWJsZWQpIHtcbiAgICBfZmxvdy5mbG93UGFyc2VWYXJpYW5jZS5jYWxsKHZvaWQgMCwgKTtcbiAgfVxuICBpZiAoX2luZGV4My5lYXQuY2FsbCh2b2lkIDAsIF90eXBlczMuVG9rZW5UeXBlLmJyYWNrZXRMKSkge1xuICAgIF9iYXNlLnN0YXRlLnRva2Vuc1tfYmFzZS5zdGF0ZS50b2tlbnMubGVuZ3RoIC0gMV0uY29udGV4dElkID0gb2JqZWN0Q29udGV4dElkO1xuICAgIHBhcnNlTWF5YmVBc3NpZ24oKTtcbiAgICBfdXRpbC5leHBlY3QuY2FsbCh2b2lkIDAsIF90eXBlczMuVG9rZW5UeXBlLmJyYWNrZXRSKTtcbiAgICBfYmFzZS5zdGF0ZS50b2tlbnNbX2Jhc2Uuc3RhdGUudG9rZW5zLmxlbmd0aCAtIDFdLmNvbnRleHRJZCA9IG9iamVjdENvbnRleHRJZDtcbiAgfSBlbHNlIHtcbiAgICBpZiAoX2luZGV4My5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzMy5Ub2tlblR5cGUubnVtKSB8fCBfaW5kZXgzLm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMzLlRva2VuVHlwZS5zdHJpbmcpIHx8IF9pbmRleDMubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlczMuVG9rZW5UeXBlLmJpZ2ludCkgfHwgX2luZGV4My5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzMy5Ub2tlblR5cGUuZGVjaW1hbCkpIHtcbiAgICAgIHBhcnNlRXhwckF0b20oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcGFyc2VNYXliZVByaXZhdGVOYW1lKCk7XG4gICAgfVxuXG4gICAgX2Jhc2Uuc3RhdGUudG9rZW5zW19iYXNlLnN0YXRlLnRva2Vucy5sZW5ndGggLSAxXS5pZGVudGlmaWVyUm9sZSA9IF9pbmRleDMuSWRlbnRpZmllclJvbGUuT2JqZWN0S2V5O1xuICAgIF9iYXNlLnN0YXRlLnRva2Vuc1tfYmFzZS5zdGF0ZS50b2tlbnMubGVuZ3RoIC0gMV0uY29udGV4dElkID0gb2JqZWN0Q29udGV4dElkO1xuICB9XG59IGV4cG9ydHMucGFyc2VQcm9wZXJ0eU5hbWUgPSBwYXJzZVByb3BlcnR5TmFtZTtcblxuLy8gUGFyc2Ugb2JqZWN0IG9yIGNsYXNzIG1ldGhvZC5cbiBmdW5jdGlvbiBwYXJzZU1ldGhvZChmdW5jdGlvblN0YXJ0LCBpc0NvbnN0cnVjdG9yKSB7XG4gIGNvbnN0IGZ1bmNDb250ZXh0SWQgPSBfYmFzZS5nZXROZXh0Q29udGV4dElkLmNhbGwodm9pZCAwLCApO1xuXG4gIF9iYXNlLnN0YXRlLnNjb3BlRGVwdGgrKztcbiAgY29uc3Qgc3RhcnRUb2tlbkluZGV4ID0gX2Jhc2Uuc3RhdGUudG9rZW5zLmxlbmd0aDtcbiAgY29uc3QgYWxsb3dNb2RpZmllcnMgPSBpc0NvbnN0cnVjdG9yOyAvLyBGb3IgVHlwZVNjcmlwdCBwYXJhbWV0ZXIgcHJvcGVydGllc1xuICBfc3RhdGVtZW50LnBhcnNlRnVuY3Rpb25QYXJhbXMuY2FsbCh2b2lkIDAsIGFsbG93TW9kaWZpZXJzLCBmdW5jQ29udGV4dElkKTtcbiAgcGFyc2VGdW5jdGlvbkJvZHlBbmRGaW5pc2goZnVuY3Rpb25TdGFydCwgZnVuY0NvbnRleHRJZCk7XG4gIGNvbnN0IGVuZFRva2VuSW5kZXggPSBfYmFzZS5zdGF0ZS50b2tlbnMubGVuZ3RoO1xuICBfYmFzZS5zdGF0ZS5zY29wZXMucHVzaChuZXcgKDAsIF9zdGF0ZS5TY29wZSkoc3RhcnRUb2tlbkluZGV4LCBlbmRUb2tlbkluZGV4LCB0cnVlKSk7XG4gIF9iYXNlLnN0YXRlLnNjb3BlRGVwdGgtLTtcbn0gZXhwb3J0cy5wYXJzZU1ldGhvZCA9IHBhcnNlTWV0aG9kO1xuXG4vLyBQYXJzZSBhcnJvdyBmdW5jdGlvbiBleHByZXNzaW9uLlxuLy8gSWYgdGhlIHBhcmFtZXRlcnMgYXJlIHByb3ZpZGVkLCB0aGV5IHdpbGwgYmUgY29udmVydGVkIHRvIGFuXG4vLyBhc3NpZ25hYmxlIGxpc3QuXG4gZnVuY3Rpb24gcGFyc2VBcnJvd0V4cHJlc3Npb24oc3RhcnRUb2tlbkluZGV4KSB7XG4gIHBhcnNlRnVuY3Rpb25Cb2R5KHRydWUpO1xuICBjb25zdCBlbmRUb2tlbkluZGV4ID0gX2Jhc2Uuc3RhdGUudG9rZW5zLmxlbmd0aDtcbiAgX2Jhc2Uuc3RhdGUuc2NvcGVzLnB1c2gobmV3ICgwLCBfc3RhdGUuU2NvcGUpKHN0YXJ0VG9rZW5JbmRleCwgZW5kVG9rZW5JbmRleCwgdHJ1ZSkpO1xuICBfYmFzZS5zdGF0ZS5zY29wZURlcHRoLS07XG59IGV4cG9ydHMucGFyc2VBcnJvd0V4cHJlc3Npb24gPSBwYXJzZUFycm93RXhwcmVzc2lvbjtcblxuIGZ1bmN0aW9uIHBhcnNlRnVuY3Rpb25Cb2R5QW5kRmluaXNoKGZ1bmN0aW9uU3RhcnQsIGZ1bmNDb250ZXh0SWQgPSAwKSB7XG4gIGlmIChfYmFzZS5pc1R5cGVTY3JpcHRFbmFibGVkKSB7XG4gICAgX3R5cGVzY3JpcHQudHNQYXJzZUZ1bmN0aW9uQm9keUFuZEZpbmlzaC5jYWxsKHZvaWQgMCwgZnVuY3Rpb25TdGFydCwgZnVuY0NvbnRleHRJZCk7XG4gIH0gZWxzZSBpZiAoX2Jhc2UuaXNGbG93RW5hYmxlZCkge1xuICAgIF9mbG93LmZsb3dQYXJzZUZ1bmN0aW9uQm9keUFuZEZpbmlzaC5jYWxsKHZvaWQgMCwgZnVuY0NvbnRleHRJZCk7XG4gIH0gZWxzZSB7XG4gICAgcGFyc2VGdW5jdGlvbkJvZHkoZmFsc2UsIGZ1bmNDb250ZXh0SWQpO1xuICB9XG59IGV4cG9ydHMucGFyc2VGdW5jdGlvbkJvZHlBbmRGaW5pc2ggPSBwYXJzZUZ1bmN0aW9uQm9keUFuZEZpbmlzaDtcblxuIGZ1bmN0aW9uIHBhcnNlRnVuY3Rpb25Cb2R5KGFsbG93RXhwcmVzc2lvbiwgZnVuY0NvbnRleHRJZCA9IDApIHtcbiAgY29uc3QgaXNFeHByZXNzaW9uID0gYWxsb3dFeHByZXNzaW9uICYmICFfaW5kZXgzLm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMzLlRva2VuVHlwZS5icmFjZUwpO1xuXG4gIGlmIChpc0V4cHJlc3Npb24pIHtcbiAgICBwYXJzZU1heWJlQXNzaWduKCk7XG4gIH0gZWxzZSB7XG4gICAgX3N0YXRlbWVudC5wYXJzZUJsb2NrLmNhbGwodm9pZCAwLCB0cnVlIC8qIGlzRnVuY3Rpb25TY29wZSAqLywgZnVuY0NvbnRleHRJZCk7XG4gIH1cbn0gZXhwb3J0cy5wYXJzZUZ1bmN0aW9uQm9keSA9IHBhcnNlRnVuY3Rpb25Cb2R5O1xuXG4vLyBQYXJzZXMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBleHByZXNzaW9ucywgYW5kIHJldHVybnMgdGhlbSBhc1xuLy8gYW4gYXJyYXkuIGBjbG9zZWAgaXMgdGhlIHRva2VuIHR5cGUgdGhhdCBlbmRzIHRoZSBsaXN0LCBhbmRcbi8vIGBhbGxvd0VtcHR5YCBjYW4gYmUgdHVybmVkIG9uIHRvIGFsbG93IHN1YnNlcXVlbnQgY29tbWFzIHdpdGhcbi8vIG5vdGhpbmcgaW4gYmV0d2VlbiB0aGVtIHRvIGJlIHBhcnNlZCBhcyBgbnVsbGAgKHdoaWNoIGlzIG5lZWRlZFxuLy8gZm9yIGFycmF5IGxpdGVyYWxzKS5cblxuZnVuY3Rpb24gcGFyc2VFeHByTGlzdChjbG9zZSwgYWxsb3dFbXB0eSA9IGZhbHNlKSB7XG4gIGxldCBmaXJzdCA9IHRydWU7XG4gIHdoaWxlICghX2luZGV4My5lYXQuY2FsbCh2b2lkIDAsIGNsb3NlKSAmJiAhX2Jhc2Uuc3RhdGUuZXJyb3IpIHtcbiAgICBpZiAoZmlyc3QpIHtcbiAgICAgIGZpcnN0ID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIF91dGlsLmV4cGVjdC5jYWxsKHZvaWQgMCwgX3R5cGVzMy5Ub2tlblR5cGUuY29tbWEpO1xuICAgICAgaWYgKF9pbmRleDMuZWF0LmNhbGwodm9pZCAwLCBjbG9zZSkpIGJyZWFrO1xuICAgIH1cbiAgICBwYXJzZUV4cHJMaXN0SXRlbShhbGxvd0VtcHR5KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBwYXJzZUV4cHJMaXN0SXRlbShhbGxvd0VtcHR5KSB7XG4gIGlmIChhbGxvd0VtcHR5ICYmIF9pbmRleDMubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlczMuVG9rZW5UeXBlLmNvbW1hKSkge1xuICAgIC8vIEVtcHR5IGl0ZW07IG5vdGhpbmcgbW9yZSB0byBwYXJzZSBmb3IgdGhpcyBpdGVtLlxuICB9IGVsc2UgaWYgKF9pbmRleDMubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlczMuVG9rZW5UeXBlLmVsbGlwc2lzKSkge1xuICAgIF9sdmFsLnBhcnNlU3ByZWFkLmNhbGwodm9pZCAwLCApO1xuICAgIHBhcnNlUGFyZW5JdGVtKCk7XG4gIH0gZWxzZSBpZiAoX2luZGV4My5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzMy5Ub2tlblR5cGUucXVlc3Rpb24pKSB7XG4gICAgLy8gUGFydGlhbCBmdW5jdGlvbiBhcHBsaWNhdGlvbiBwcm9wb3NhbC5cbiAgICBfaW5kZXgzLm5leHQuY2FsbCh2b2lkIDAsICk7XG4gIH0gZWxzZSB7XG4gICAgcGFyc2VNYXliZUFzc2lnbihmYWxzZSwgdHJ1ZSk7XG4gIH1cbn1cblxuLy8gUGFyc2UgdGhlIG5leHQgdG9rZW4gYXMgYW4gaWRlbnRpZmllci5cbiBmdW5jdGlvbiBwYXJzZUlkZW50aWZpZXIoKSB7XG4gIF9pbmRleDMubmV4dC5jYWxsKHZvaWQgMCwgKTtcbiAgX2Jhc2Uuc3RhdGUudG9rZW5zW19iYXNlLnN0YXRlLnRva2Vucy5sZW5ndGggLSAxXS50eXBlID0gX3R5cGVzMy5Ub2tlblR5cGUubmFtZTtcbn0gZXhwb3J0cy5wYXJzZUlkZW50aWZpZXIgPSBwYXJzZUlkZW50aWZpZXI7XG5cbi8vIFBhcnNlcyBhd2FpdCBleHByZXNzaW9uIGluc2lkZSBhc3luYyBmdW5jdGlvbi5cbmZ1bmN0aW9uIHBhcnNlQXdhaXQoKSB7XG4gIHBhcnNlTWF5YmVVbmFyeSgpO1xufVxuXG4vLyBQYXJzZXMgeWllbGQgZXhwcmVzc2lvbiBpbnNpZGUgZ2VuZXJhdG9yLlxuZnVuY3Rpb24gcGFyc2VZaWVsZCgpIHtcbiAgX2luZGV4My5uZXh0LmNhbGwodm9pZCAwLCApO1xuICBpZiAoIV9pbmRleDMubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlczMuVG9rZW5UeXBlLnNlbWkpICYmICFfdXRpbC5jYW5JbnNlcnRTZW1pY29sb24uY2FsbCh2b2lkIDAsICkpIHtcbiAgICBfaW5kZXgzLmVhdC5jYWxsKHZvaWQgMCwgX3R5cGVzMy5Ub2tlblR5cGUuc3Rhcik7XG4gICAgcGFyc2VNYXliZUFzc2lnbigpO1xuICB9XG59XG5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWpzLW1vZHVsZS1ibG9ja3NcbmZ1bmN0aW9uIHBhcnNlTW9kdWxlRXhwcmVzc2lvbigpIHtcbiAgX3V0aWwuZXhwZWN0Q29udGV4dHVhbC5jYWxsKHZvaWQgMCwgX2tleXdvcmRzLkNvbnRleHR1YWxLZXl3b3JkLl9tb2R1bGUpO1xuICBfdXRpbC5leHBlY3QuY2FsbCh2b2lkIDAsIF90eXBlczMuVG9rZW5UeXBlLmJyYWNlTCk7XG4gIC8vIEZvciBub3csIGp1c3QgY2FsbCBwYXJzZUJsb2NrQm9keSB0byBwYXJzZSB0aGUgYmxvY2suIEluIHRoZSBmdXR1cmUgd2hlbiB3ZVxuICAvLyBpbXBsZW1lbnQgZnVsbCBzdXBwb3J0LCB3ZSdsbCB3YW50IHRvIGVtaXQgc2NvcGVzIGFuZCBwb3NzaWJseSBvdGhlclxuICAvLyBpbmZvcm1hdGlvbi5cbiAgX3N0YXRlbWVudC5wYXJzZUJsb2NrQm9keS5jYWxsKHZvaWQgMCwgX3R5cGVzMy5Ub2tlblR5cGUuYnJhY2VSKTtcbn1cbiIsICJcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHt2YWx1ZTogdHJ1ZX0pOy8qIGVzbGludCBtYXgtbGVuOiAwICovXG5cblxuXG5cblxuXG5cblxuXG5cbnZhciBfaW5kZXggPSByZXF1aXJlKCcuLi90b2tlbml6ZXIvaW5kZXgnKTtcbnZhciBfa2V5d29yZHMgPSByZXF1aXJlKCcuLi90b2tlbml6ZXIva2V5d29yZHMnKTtcbnZhciBfdHlwZXMgPSByZXF1aXJlKCcuLi90b2tlbml6ZXIvdHlwZXMnKTtcbnZhciBfYmFzZSA9IHJlcXVpcmUoJy4uL3RyYXZlcnNlci9iYXNlJyk7XG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbnZhciBfZXhwcmVzc2lvbiA9IHJlcXVpcmUoJy4uL3RyYXZlcnNlci9leHByZXNzaW9uJyk7XG5cblxuXG5cblxuXG5cblxudmFyIF9zdGF0ZW1lbnQgPSByZXF1aXJlKCcuLi90cmF2ZXJzZXIvc3RhdGVtZW50Jyk7XG5cblxuXG5cblxuXG5cblxuXG52YXIgX3V0aWwgPSByZXF1aXJlKCcuLi90cmF2ZXJzZXIvdXRpbCcpO1xuXG5mdW5jdGlvbiBpc01heWJlRGVmYXVsdEltcG9ydChsb29rYWhlYWQpIHtcbiAgcmV0dXJuIChcbiAgICAobG9va2FoZWFkLnR5cGUgPT09IF90eXBlcy5Ub2tlblR5cGUubmFtZSB8fCAhIShsb29rYWhlYWQudHlwZSAmIF90eXBlcy5Ub2tlblR5cGUuSVNfS0VZV09SRCkpICYmXG4gICAgbG9va2FoZWFkLmNvbnRleHR1YWxLZXl3b3JkICE9PSBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX2Zyb21cbiAgKTtcbn1cblxuZnVuY3Rpb24gZmxvd1BhcnNlVHlwZUluaXRpYWxpc2VyKHRvaykge1xuICBjb25zdCBvbGRJc1R5cGUgPSBfaW5kZXgucHVzaFR5cGVDb250ZXh0LmNhbGwodm9pZCAwLCAwKTtcbiAgX3V0aWwuZXhwZWN0LmNhbGwodm9pZCAwLCB0b2sgfHwgX3R5cGVzLlRva2VuVHlwZS5jb2xvbik7XG4gIGZsb3dQYXJzZVR5cGUoKTtcbiAgX2luZGV4LnBvcFR5cGVDb250ZXh0LmNhbGwodm9pZCAwLCBvbGRJc1R5cGUpO1xufVxuXG5mdW5jdGlvbiBmbG93UGFyc2VQcmVkaWNhdGUoKSB7XG4gIF91dGlsLmV4cGVjdC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5tb2R1bG8pO1xuICBfdXRpbC5leHBlY3RDb250ZXh0dWFsLmNhbGwodm9pZCAwLCBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX2NoZWNrcyk7XG4gIGlmIChfaW5kZXguZWF0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLnBhcmVuTCkpIHtcbiAgICBfZXhwcmVzc2lvbi5wYXJzZUV4cHJlc3Npb24uY2FsbCh2b2lkIDAsICk7XG4gICAgX3V0aWwuZXhwZWN0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLnBhcmVuUik7XG4gIH1cbn1cblxuZnVuY3Rpb24gZmxvd1BhcnNlVHlwZUFuZFByZWRpY2F0ZUluaXRpYWxpc2VyKCkge1xuICBjb25zdCBvbGRJc1R5cGUgPSBfaW5kZXgucHVzaFR5cGVDb250ZXh0LmNhbGwodm9pZCAwLCAwKTtcbiAgX3V0aWwuZXhwZWN0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmNvbG9uKTtcbiAgaWYgKF9pbmRleC5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5tb2R1bG8pKSB7XG4gICAgZmxvd1BhcnNlUHJlZGljYXRlKCk7XG4gIH0gZWxzZSB7XG4gICAgZmxvd1BhcnNlVHlwZSgpO1xuICAgIGlmIChfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUubW9kdWxvKSkge1xuICAgICAgZmxvd1BhcnNlUHJlZGljYXRlKCk7XG4gICAgfVxuICB9XG4gIF9pbmRleC5wb3BUeXBlQ29udGV4dC5jYWxsKHZvaWQgMCwgb2xkSXNUeXBlKTtcbn1cblxuZnVuY3Rpb24gZmxvd1BhcnNlRGVjbGFyZUNsYXNzKCkge1xuICBfaW5kZXgubmV4dC5jYWxsKHZvaWQgMCwgKTtcbiAgZmxvd1BhcnNlSW50ZXJmYWNlaXNoKC8qIGlzQ2xhc3MgKi8gdHJ1ZSk7XG59XG5cbmZ1bmN0aW9uIGZsb3dQYXJzZURlY2xhcmVGdW5jdGlvbigpIHtcbiAgX2luZGV4Lm5leHQuY2FsbCh2b2lkIDAsICk7XG4gIF9leHByZXNzaW9uLnBhcnNlSWRlbnRpZmllci5jYWxsKHZvaWQgMCwgKTtcblxuICBpZiAoX2luZGV4Lm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmxlc3NUaGFuKSkge1xuICAgIGZsb3dQYXJzZVR5cGVQYXJhbWV0ZXJEZWNsYXJhdGlvbigpO1xuICB9XG5cbiAgX3V0aWwuZXhwZWN0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLnBhcmVuTCk7XG4gIGZsb3dQYXJzZUZ1bmN0aW9uVHlwZVBhcmFtcygpO1xuICBfdXRpbC5leHBlY3QuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUucGFyZW5SKTtcblxuICBmbG93UGFyc2VUeXBlQW5kUHJlZGljYXRlSW5pdGlhbGlzZXIoKTtcblxuICBfdXRpbC5zZW1pY29sb24uY2FsbCh2b2lkIDAsICk7XG59XG5cbmZ1bmN0aW9uIGZsb3dQYXJzZURlY2xhcmUoKSB7XG4gIGlmIChfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuX2NsYXNzKSkge1xuICAgIGZsb3dQYXJzZURlY2xhcmVDbGFzcygpO1xuICB9IGVsc2UgaWYgKF9pbmRleC5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5fZnVuY3Rpb24pKSB7XG4gICAgZmxvd1BhcnNlRGVjbGFyZUZ1bmN0aW9uKCk7XG4gIH0gZWxzZSBpZiAoX2luZGV4Lm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLl92YXIpKSB7XG4gICAgZmxvd1BhcnNlRGVjbGFyZVZhcmlhYmxlKCk7XG4gIH0gZWxzZSBpZiAoX3V0aWwuZWF0Q29udGV4dHVhbC5jYWxsKHZvaWQgMCwgX2tleXdvcmRzLkNvbnRleHR1YWxLZXl3b3JkLl9tb2R1bGUpKSB7XG4gICAgaWYgKF9pbmRleC5lYXQuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuZG90KSkge1xuICAgICAgZmxvd1BhcnNlRGVjbGFyZU1vZHVsZUV4cG9ydHMoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZmxvd1BhcnNlRGVjbGFyZU1vZHVsZSgpO1xuICAgIH1cbiAgfSBlbHNlIGlmIChfdXRpbC5pc0NvbnRleHR1YWwuY2FsbCh2b2lkIDAsIF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fdHlwZSkpIHtcbiAgICBmbG93UGFyc2VEZWNsYXJlVHlwZUFsaWFzKCk7XG4gIH0gZWxzZSBpZiAoX3V0aWwuaXNDb250ZXh0dWFsLmNhbGwodm9pZCAwLCBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX29wYXF1ZSkpIHtcbiAgICBmbG93UGFyc2VEZWNsYXJlT3BhcXVlVHlwZSgpO1xuICB9IGVsc2UgaWYgKF91dGlsLmlzQ29udGV4dHVhbC5jYWxsKHZvaWQgMCwgX2tleXdvcmRzLkNvbnRleHR1YWxLZXl3b3JkLl9pbnRlcmZhY2UpKSB7XG4gICAgZmxvd1BhcnNlRGVjbGFyZUludGVyZmFjZSgpO1xuICB9IGVsc2UgaWYgKF9pbmRleC5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5fZXhwb3J0KSkge1xuICAgIGZsb3dQYXJzZURlY2xhcmVFeHBvcnREZWNsYXJhdGlvbigpO1xuICB9IGVsc2Uge1xuICAgIF91dGlsLnVuZXhwZWN0ZWQuY2FsbCh2b2lkIDAsICk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZmxvd1BhcnNlRGVjbGFyZVZhcmlhYmxlKCkge1xuICBfaW5kZXgubmV4dC5jYWxsKHZvaWQgMCwgKTtcbiAgZmxvd1BhcnNlVHlwZUFubm90YXRhYmxlSWRlbnRpZmllcigpO1xuICBfdXRpbC5zZW1pY29sb24uY2FsbCh2b2lkIDAsICk7XG59XG5cbmZ1bmN0aW9uIGZsb3dQYXJzZURlY2xhcmVNb2R1bGUoKSB7XG4gIGlmIChfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuc3RyaW5nKSkge1xuICAgIF9leHByZXNzaW9uLnBhcnNlRXhwckF0b20uY2FsbCh2b2lkIDAsICk7XG4gIH0gZWxzZSB7XG4gICAgX2V4cHJlc3Npb24ucGFyc2VJZGVudGlmaWVyLmNhbGwodm9pZCAwLCApO1xuICB9XG5cbiAgX3V0aWwuZXhwZWN0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmJyYWNlTCk7XG4gIHdoaWxlICghX2luZGV4Lm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmJyYWNlUikgJiYgIV9iYXNlLnN0YXRlLmVycm9yKSB7XG4gICAgaWYgKF9pbmRleC5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5faW1wb3J0KSkge1xuICAgICAgX2luZGV4Lm5leHQuY2FsbCh2b2lkIDAsICk7XG4gICAgICBfc3RhdGVtZW50LnBhcnNlSW1wb3J0LmNhbGwodm9pZCAwLCApO1xuICAgIH0gZWxzZSB7XG4gICAgICBfdXRpbC51bmV4cGVjdGVkLmNhbGwodm9pZCAwLCApO1xuICAgIH1cbiAgfVxuICBfdXRpbC5leHBlY3QuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuYnJhY2VSKTtcbn1cblxuZnVuY3Rpb24gZmxvd1BhcnNlRGVjbGFyZUV4cG9ydERlY2xhcmF0aW9uKCkge1xuICBfdXRpbC5leHBlY3QuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuX2V4cG9ydCk7XG5cbiAgaWYgKF9pbmRleC5lYXQuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuX2RlZmF1bHQpKSB7XG4gICAgaWYgKF9pbmRleC5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5fZnVuY3Rpb24pIHx8IF9pbmRleC5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5fY2xhc3MpKSB7XG4gICAgICAvLyBkZWNsYXJlIGV4cG9ydCBkZWZhdWx0IGNsYXNzIC4uLlxuICAgICAgLy8gZGVjbGFyZSBleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAuLi5cbiAgICAgIGZsb3dQYXJzZURlY2xhcmUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gZGVjbGFyZSBleHBvcnQgZGVmYXVsdCBbdHlwZV07XG4gICAgICBmbG93UGFyc2VUeXBlKCk7XG4gICAgICBfdXRpbC5zZW1pY29sb24uY2FsbCh2b2lkIDAsICk7XG4gICAgfVxuICB9IGVsc2UgaWYgKFxuICAgIF9pbmRleC5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5fdmFyKSB8fCAvLyBkZWNsYXJlIGV4cG9ydCB2YXIgLi4uXG4gICAgX2luZGV4Lm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLl9mdW5jdGlvbikgfHwgLy8gZGVjbGFyZSBleHBvcnQgZnVuY3Rpb24gLi4uXG4gICAgX2luZGV4Lm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLl9jbGFzcykgfHwgLy8gZGVjbGFyZSBleHBvcnQgY2xhc3MgLi4uXG4gICAgX3V0aWwuaXNDb250ZXh0dWFsLmNhbGwodm9pZCAwLCBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX29wYXF1ZSkgLy8gZGVjbGFyZSBleHBvcnQgb3BhcXVlIC4uXG4gICkge1xuICAgIGZsb3dQYXJzZURlY2xhcmUoKTtcbiAgfSBlbHNlIGlmIChcbiAgICBfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuc3RhcikgfHwgLy8gZGVjbGFyZSBleHBvcnQgKiBmcm9tICcnXG4gICAgX2luZGV4Lm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmJyYWNlTCkgfHwgLy8gZGVjbGFyZSBleHBvcnQge30gLi4uXG4gICAgX3V0aWwuaXNDb250ZXh0dWFsLmNhbGwodm9pZCAwLCBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX2ludGVyZmFjZSkgfHwgLy8gZGVjbGFyZSBleHBvcnQgaW50ZXJmYWNlIC4uLlxuICAgIF91dGlsLmlzQ29udGV4dHVhbC5jYWxsKHZvaWQgMCwgX2tleXdvcmRzLkNvbnRleHR1YWxLZXl3b3JkLl90eXBlKSB8fCAvLyBkZWNsYXJlIGV4cG9ydCB0eXBlIC4uLlxuICAgIF91dGlsLmlzQ29udGV4dHVhbC5jYWxsKHZvaWQgMCwgX2tleXdvcmRzLkNvbnRleHR1YWxLZXl3b3JkLl9vcGFxdWUpIC8vIGRlY2xhcmUgZXhwb3J0IG9wYXF1ZSB0eXBlIC4uLlxuICApIHtcbiAgICBfc3RhdGVtZW50LnBhcnNlRXhwb3J0LmNhbGwodm9pZCAwLCApO1xuICB9IGVsc2Uge1xuICAgIF91dGlsLnVuZXhwZWN0ZWQuY2FsbCh2b2lkIDAsICk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZmxvd1BhcnNlRGVjbGFyZU1vZHVsZUV4cG9ydHMoKSB7XG4gIF91dGlsLmV4cGVjdENvbnRleHR1YWwuY2FsbCh2b2lkIDAsIF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fZXhwb3J0cyk7XG4gIGZsb3dQYXJzZVR5cGVBbm5vdGF0aW9uKCk7XG4gIF91dGlsLnNlbWljb2xvbi5jYWxsKHZvaWQgMCwgKTtcbn1cblxuZnVuY3Rpb24gZmxvd1BhcnNlRGVjbGFyZVR5cGVBbGlhcygpIHtcbiAgX2luZGV4Lm5leHQuY2FsbCh2b2lkIDAsICk7XG4gIGZsb3dQYXJzZVR5cGVBbGlhcygpO1xufVxuXG5mdW5jdGlvbiBmbG93UGFyc2VEZWNsYXJlT3BhcXVlVHlwZSgpIHtcbiAgX2luZGV4Lm5leHQuY2FsbCh2b2lkIDAsICk7XG4gIGZsb3dQYXJzZU9wYXF1ZVR5cGUodHJ1ZSk7XG59XG5cbmZ1bmN0aW9uIGZsb3dQYXJzZURlY2xhcmVJbnRlcmZhY2UoKSB7XG4gIF9pbmRleC5uZXh0LmNhbGwodm9pZCAwLCApO1xuICBmbG93UGFyc2VJbnRlcmZhY2Vpc2goKTtcbn1cblxuLy8gSW50ZXJmYWNlc1xuXG5mdW5jdGlvbiBmbG93UGFyc2VJbnRlcmZhY2Vpc2goaXNDbGFzcyA9IGZhbHNlKSB7XG4gIGZsb3dQYXJzZVJlc3RyaWN0ZWRJZGVudGlmaWVyKCk7XG5cbiAgaWYgKF9pbmRleC5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5sZXNzVGhhbikpIHtcbiAgICBmbG93UGFyc2VUeXBlUGFyYW1ldGVyRGVjbGFyYXRpb24oKTtcbiAgfVxuXG4gIGlmIChfaW5kZXguZWF0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLl9leHRlbmRzKSkge1xuICAgIGRvIHtcbiAgICAgIGZsb3dQYXJzZUludGVyZmFjZUV4dGVuZHMoKTtcbiAgICB9IHdoaWxlICghaXNDbGFzcyAmJiBfaW5kZXguZWF0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmNvbW1hKSk7XG4gIH1cblxuICBpZiAoX3V0aWwuaXNDb250ZXh0dWFsLmNhbGwodm9pZCAwLCBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX21peGlucykpIHtcbiAgICBfaW5kZXgubmV4dC5jYWxsKHZvaWQgMCwgKTtcbiAgICBkbyB7XG4gICAgICBmbG93UGFyc2VJbnRlcmZhY2VFeHRlbmRzKCk7XG4gICAgfSB3aGlsZSAoX2luZGV4LmVhdC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5jb21tYSkpO1xuICB9XG5cbiAgaWYgKF91dGlsLmlzQ29udGV4dHVhbC5jYWxsKHZvaWQgMCwgX2tleXdvcmRzLkNvbnRleHR1YWxLZXl3b3JkLl9pbXBsZW1lbnRzKSkge1xuICAgIF9pbmRleC5uZXh0LmNhbGwodm9pZCAwLCApO1xuICAgIGRvIHtcbiAgICAgIGZsb3dQYXJzZUludGVyZmFjZUV4dGVuZHMoKTtcbiAgICB9IHdoaWxlIChfaW5kZXguZWF0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmNvbW1hKSk7XG4gIH1cblxuICBmbG93UGFyc2VPYmplY3RUeXBlKGlzQ2xhc3MsIGZhbHNlLCBpc0NsYXNzKTtcbn1cblxuZnVuY3Rpb24gZmxvd1BhcnNlSW50ZXJmYWNlRXh0ZW5kcygpIHtcbiAgZmxvd1BhcnNlUXVhbGlmaWVkVHlwZUlkZW50aWZpZXIoZmFsc2UpO1xuICBpZiAoX2luZGV4Lm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmxlc3NUaGFuKSkge1xuICAgIGZsb3dQYXJzZVR5cGVQYXJhbWV0ZXJJbnN0YW50aWF0aW9uKCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZmxvd1BhcnNlSW50ZXJmYWNlKCkge1xuICBmbG93UGFyc2VJbnRlcmZhY2Vpc2goKTtcbn1cblxuZnVuY3Rpb24gZmxvd1BhcnNlUmVzdHJpY3RlZElkZW50aWZpZXIoKSB7XG4gIF9leHByZXNzaW9uLnBhcnNlSWRlbnRpZmllci5jYWxsKHZvaWQgMCwgKTtcbn1cblxuZnVuY3Rpb24gZmxvd1BhcnNlVHlwZUFsaWFzKCkge1xuICBmbG93UGFyc2VSZXN0cmljdGVkSWRlbnRpZmllcigpO1xuXG4gIGlmIChfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUubGVzc1RoYW4pKSB7XG4gICAgZmxvd1BhcnNlVHlwZVBhcmFtZXRlckRlY2xhcmF0aW9uKCk7XG4gIH1cblxuICBmbG93UGFyc2VUeXBlSW5pdGlhbGlzZXIoX3R5cGVzLlRva2VuVHlwZS5lcSk7XG4gIF91dGlsLnNlbWljb2xvbi5jYWxsKHZvaWQgMCwgKTtcbn1cblxuZnVuY3Rpb24gZmxvd1BhcnNlT3BhcXVlVHlwZShkZWNsYXJlKSB7XG4gIF91dGlsLmV4cGVjdENvbnRleHR1YWwuY2FsbCh2b2lkIDAsIF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fdHlwZSk7XG4gIGZsb3dQYXJzZVJlc3RyaWN0ZWRJZGVudGlmaWVyKCk7XG5cbiAgaWYgKF9pbmRleC5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5sZXNzVGhhbikpIHtcbiAgICBmbG93UGFyc2VUeXBlUGFyYW1ldGVyRGVjbGFyYXRpb24oKTtcbiAgfVxuXG4gIC8vIFBhcnNlIHRoZSBzdXBlcnR5cGVcbiAgaWYgKF9pbmRleC5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5jb2xvbikpIHtcbiAgICBmbG93UGFyc2VUeXBlSW5pdGlhbGlzZXIoX3R5cGVzLlRva2VuVHlwZS5jb2xvbik7XG4gIH1cblxuICBpZiAoIWRlY2xhcmUpIHtcbiAgICBmbG93UGFyc2VUeXBlSW5pdGlhbGlzZXIoX3R5cGVzLlRva2VuVHlwZS5lcSk7XG4gIH1cbiAgX3V0aWwuc2VtaWNvbG9uLmNhbGwodm9pZCAwLCApO1xufVxuXG5mdW5jdGlvbiBmbG93UGFyc2VUeXBlUGFyYW1ldGVyKCkge1xuICBmbG93UGFyc2VWYXJpYW5jZSgpO1xuICBmbG93UGFyc2VUeXBlQW5ub3RhdGFibGVJZGVudGlmaWVyKCk7XG5cbiAgaWYgKF9pbmRleC5lYXQuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuZXEpKSB7XG4gICAgZmxvd1BhcnNlVHlwZSgpO1xuICB9XG59XG5cbiBmdW5jdGlvbiBmbG93UGFyc2VUeXBlUGFyYW1ldGVyRGVjbGFyYXRpb24oKSB7XG4gIGNvbnN0IG9sZElzVHlwZSA9IF9pbmRleC5wdXNoVHlwZUNvbnRleHQuY2FsbCh2b2lkIDAsIDApO1xuICAvLyBpc3RhbmJ1bCBpZ25vcmUgZWxzZTogdGhpcyBjb25kaXRpb24gaXMgYWxyZWFkeSBjaGVja2VkIGF0IGFsbCBjYWxsIHNpdGVzXG4gIGlmIChfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUubGVzc1RoYW4pIHx8IF9pbmRleC5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS50eXBlUGFyYW1ldGVyU3RhcnQpKSB7XG4gICAgX2luZGV4Lm5leHQuY2FsbCh2b2lkIDAsICk7XG4gIH0gZWxzZSB7XG4gICAgX3V0aWwudW5leHBlY3RlZC5jYWxsKHZvaWQgMCwgKTtcbiAgfVxuXG4gIGRvIHtcbiAgICBmbG93UGFyc2VUeXBlUGFyYW1ldGVyKCk7XG4gICAgaWYgKCFfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuZ3JlYXRlclRoYW4pKSB7XG4gICAgICBfdXRpbC5leHBlY3QuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuY29tbWEpO1xuICAgIH1cbiAgfSB3aGlsZSAoIV9pbmRleC5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5ncmVhdGVyVGhhbikgJiYgIV9iYXNlLnN0YXRlLmVycm9yKTtcbiAgX3V0aWwuZXhwZWN0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmdyZWF0ZXJUaGFuKTtcbiAgX2luZGV4LnBvcFR5cGVDb250ZXh0LmNhbGwodm9pZCAwLCBvbGRJc1R5cGUpO1xufSBleHBvcnRzLmZsb3dQYXJzZVR5cGVQYXJhbWV0ZXJEZWNsYXJhdGlvbiA9IGZsb3dQYXJzZVR5cGVQYXJhbWV0ZXJEZWNsYXJhdGlvbjtcblxuZnVuY3Rpb24gZmxvd1BhcnNlVHlwZVBhcmFtZXRlckluc3RhbnRpYXRpb24oKSB7XG4gIGNvbnN0IG9sZElzVHlwZSA9IF9pbmRleC5wdXNoVHlwZUNvbnRleHQuY2FsbCh2b2lkIDAsIDApO1xuICBfdXRpbC5leHBlY3QuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUubGVzc1RoYW4pO1xuICB3aGlsZSAoIV9pbmRleC5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5ncmVhdGVyVGhhbikgJiYgIV9iYXNlLnN0YXRlLmVycm9yKSB7XG4gICAgZmxvd1BhcnNlVHlwZSgpO1xuICAgIGlmICghX2luZGV4Lm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmdyZWF0ZXJUaGFuKSkge1xuICAgICAgX3V0aWwuZXhwZWN0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmNvbW1hKTtcbiAgICB9XG4gIH1cbiAgX3V0aWwuZXhwZWN0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmdyZWF0ZXJUaGFuKTtcbiAgX2luZGV4LnBvcFR5cGVDb250ZXh0LmNhbGwodm9pZCAwLCBvbGRJc1R5cGUpO1xufVxuXG5mdW5jdGlvbiBmbG93UGFyc2VJbnRlcmZhY2VUeXBlKCkge1xuICBfdXRpbC5leHBlY3RDb250ZXh0dWFsLmNhbGwodm9pZCAwLCBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX2ludGVyZmFjZSk7XG4gIGlmIChfaW5kZXguZWF0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLl9leHRlbmRzKSkge1xuICAgIGRvIHtcbiAgICAgIGZsb3dQYXJzZUludGVyZmFjZUV4dGVuZHMoKTtcbiAgICB9IHdoaWxlIChfaW5kZXguZWF0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmNvbW1hKSk7XG4gIH1cbiAgZmxvd1BhcnNlT2JqZWN0VHlwZShmYWxzZSwgZmFsc2UsIGZhbHNlKTtcbn1cblxuZnVuY3Rpb24gZmxvd1BhcnNlT2JqZWN0UHJvcGVydHlLZXkoKSB7XG4gIGlmIChfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUubnVtKSB8fCBfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuc3RyaW5nKSkge1xuICAgIF9leHByZXNzaW9uLnBhcnNlRXhwckF0b20uY2FsbCh2b2lkIDAsICk7XG4gIH0gZWxzZSB7XG4gICAgX2V4cHJlc3Npb24ucGFyc2VJZGVudGlmaWVyLmNhbGwodm9pZCAwLCApO1xuICB9XG59XG5cbmZ1bmN0aW9uIGZsb3dQYXJzZU9iamVjdFR5cGVJbmRleGVyKCkge1xuICAvLyBOb3RlOiBicmFja2V0TCBoYXMgYWxyZWFkeSBiZWVuIGNvbnN1bWVkXG4gIGlmIChfaW5kZXgubG9va2FoZWFkVHlwZS5jYWxsKHZvaWQgMCwgKSA9PT0gX3R5cGVzLlRva2VuVHlwZS5jb2xvbikge1xuICAgIGZsb3dQYXJzZU9iamVjdFByb3BlcnR5S2V5KCk7XG4gICAgZmxvd1BhcnNlVHlwZUluaXRpYWxpc2VyKCk7XG4gIH0gZWxzZSB7XG4gICAgZmxvd1BhcnNlVHlwZSgpO1xuICB9XG4gIF91dGlsLmV4cGVjdC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5icmFja2V0Uik7XG4gIGZsb3dQYXJzZVR5cGVJbml0aWFsaXNlcigpO1xufVxuXG5mdW5jdGlvbiBmbG93UGFyc2VPYmplY3RUeXBlSW50ZXJuYWxTbG90KCkge1xuICAvLyBOb3RlOiBib3RoIGJyYWNrZXRMIGhhdmUgYWxyZWFkeSBiZWVuIGNvbnN1bWVkXG4gIGZsb3dQYXJzZU9iamVjdFByb3BlcnR5S2V5KCk7XG4gIF91dGlsLmV4cGVjdC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5icmFja2V0Uik7XG4gIF91dGlsLmV4cGVjdC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5icmFja2V0Uik7XG4gIGlmIChfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUubGVzc1RoYW4pIHx8IF9pbmRleC5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5wYXJlbkwpKSB7XG4gICAgZmxvd1BhcnNlT2JqZWN0VHlwZU1ldGhvZGlzaCgpO1xuICB9IGVsc2Uge1xuICAgIF9pbmRleC5lYXQuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUucXVlc3Rpb24pO1xuICAgIGZsb3dQYXJzZVR5cGVJbml0aWFsaXNlcigpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGZsb3dQYXJzZU9iamVjdFR5cGVNZXRob2Rpc2goKSB7XG4gIGlmIChfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUubGVzc1RoYW4pKSB7XG4gICAgZmxvd1BhcnNlVHlwZVBhcmFtZXRlckRlY2xhcmF0aW9uKCk7XG4gIH1cblxuICBfdXRpbC5leHBlY3QuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUucGFyZW5MKTtcbiAgd2hpbGUgKCFfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUucGFyZW5SKSAmJiAhX2luZGV4Lm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmVsbGlwc2lzKSAmJiAhX2Jhc2Uuc3RhdGUuZXJyb3IpIHtcbiAgICBmbG93UGFyc2VGdW5jdGlvblR5cGVQYXJhbSgpO1xuICAgIGlmICghX2luZGV4Lm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLnBhcmVuUikpIHtcbiAgICAgIF91dGlsLmV4cGVjdC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5jb21tYSk7XG4gICAgfVxuICB9XG5cbiAgaWYgKF9pbmRleC5lYXQuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuZWxsaXBzaXMpKSB7XG4gICAgZmxvd1BhcnNlRnVuY3Rpb25UeXBlUGFyYW0oKTtcbiAgfVxuICBfdXRpbC5leHBlY3QuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUucGFyZW5SKTtcbiAgZmxvd1BhcnNlVHlwZUluaXRpYWxpc2VyKCk7XG59XG5cbmZ1bmN0aW9uIGZsb3dQYXJzZU9iamVjdFR5cGVDYWxsUHJvcGVydHkoKSB7XG4gIGZsb3dQYXJzZU9iamVjdFR5cGVNZXRob2Rpc2goKTtcbn1cblxuZnVuY3Rpb24gZmxvd1BhcnNlT2JqZWN0VHlwZShhbGxvd1N0YXRpYywgYWxsb3dFeGFjdCwgYWxsb3dQcm90bykge1xuICBsZXQgZW5kRGVsaW07XG4gIGlmIChhbGxvd0V4YWN0ICYmIF9pbmRleC5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5icmFjZUJhckwpKSB7XG4gICAgX3V0aWwuZXhwZWN0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmJyYWNlQmFyTCk7XG4gICAgZW5kRGVsaW0gPSBfdHlwZXMuVG9rZW5UeXBlLmJyYWNlQmFyUjtcbiAgfSBlbHNlIHtcbiAgICBfdXRpbC5leHBlY3QuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuYnJhY2VMKTtcbiAgICBlbmREZWxpbSA9IF90eXBlcy5Ub2tlblR5cGUuYnJhY2VSO1xuICB9XG5cbiAgd2hpbGUgKCFfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIGVuZERlbGltKSAmJiAhX2Jhc2Uuc3RhdGUuZXJyb3IpIHtcbiAgICBpZiAoYWxsb3dQcm90byAmJiBfdXRpbC5pc0NvbnRleHR1YWwuY2FsbCh2b2lkIDAsIF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fcHJvdG8pKSB7XG4gICAgICBjb25zdCBsb29rYWhlYWQgPSBfaW5kZXgubG9va2FoZWFkVHlwZS5jYWxsKHZvaWQgMCwgKTtcbiAgICAgIGlmIChsb29rYWhlYWQgIT09IF90eXBlcy5Ub2tlblR5cGUuY29sb24gJiYgbG9va2FoZWFkICE9PSBfdHlwZXMuVG9rZW5UeXBlLnF1ZXN0aW9uKSB7XG4gICAgICAgIF9pbmRleC5uZXh0LmNhbGwodm9pZCAwLCApO1xuICAgICAgICBhbGxvd1N0YXRpYyA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoYWxsb3dTdGF0aWMgJiYgX3V0aWwuaXNDb250ZXh0dWFsLmNhbGwodm9pZCAwLCBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX3N0YXRpYykpIHtcbiAgICAgIGNvbnN0IGxvb2thaGVhZCA9IF9pbmRleC5sb29rYWhlYWRUeXBlLmNhbGwodm9pZCAwLCApO1xuICAgICAgaWYgKGxvb2thaGVhZCAhPT0gX3R5cGVzLlRva2VuVHlwZS5jb2xvbiAmJiBsb29rYWhlYWQgIT09IF90eXBlcy5Ub2tlblR5cGUucXVlc3Rpb24pIHtcbiAgICAgICAgX2luZGV4Lm5leHQuY2FsbCh2b2lkIDAsICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZmxvd1BhcnNlVmFyaWFuY2UoKTtcblxuICAgIGlmIChfaW5kZXguZWF0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmJyYWNrZXRMKSkge1xuICAgICAgaWYgKF9pbmRleC5lYXQuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuYnJhY2tldEwpKSB7XG4gICAgICAgIGZsb3dQYXJzZU9iamVjdFR5cGVJbnRlcm5hbFNsb3QoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZsb3dQYXJzZU9iamVjdFR5cGVJbmRleGVyKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUucGFyZW5MKSB8fCBfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUubGVzc1RoYW4pKSB7XG4gICAgICBmbG93UGFyc2VPYmplY3RUeXBlQ2FsbFByb3BlcnR5KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChfdXRpbC5pc0NvbnRleHR1YWwuY2FsbCh2b2lkIDAsIF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fZ2V0KSB8fCBfdXRpbC5pc0NvbnRleHR1YWwuY2FsbCh2b2lkIDAsIF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fc2V0KSkge1xuICAgICAgICBjb25zdCBsb29rYWhlYWQgPSBfaW5kZXgubG9va2FoZWFkVHlwZS5jYWxsKHZvaWQgMCwgKTtcbiAgICAgICAgaWYgKGxvb2thaGVhZCA9PT0gX3R5cGVzLlRva2VuVHlwZS5uYW1lIHx8IGxvb2thaGVhZCA9PT0gX3R5cGVzLlRva2VuVHlwZS5zdHJpbmcgfHwgbG9va2FoZWFkID09PSBfdHlwZXMuVG9rZW5UeXBlLm51bSkge1xuICAgICAgICAgIF9pbmRleC5uZXh0LmNhbGwodm9pZCAwLCApO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGZsb3dQYXJzZU9iamVjdFR5cGVQcm9wZXJ0eSgpO1xuICAgIH1cblxuICAgIGZsb3dPYmplY3RUeXBlU2VtaWNvbG9uKCk7XG4gIH1cblxuICBfdXRpbC5leHBlY3QuY2FsbCh2b2lkIDAsIGVuZERlbGltKTtcbn1cblxuZnVuY3Rpb24gZmxvd1BhcnNlT2JqZWN0VHlwZVByb3BlcnR5KCkge1xuICBpZiAoX2luZGV4Lm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmVsbGlwc2lzKSkge1xuICAgIF91dGlsLmV4cGVjdC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5lbGxpcHNpcyk7XG4gICAgaWYgKCFfaW5kZXguZWF0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmNvbW1hKSkge1xuICAgICAgX2luZGV4LmVhdC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5zZW1pKTtcbiAgICB9XG4gICAgLy8gRXhwbGljaXQgaW5leGFjdCBvYmplY3Qgc3ludGF4LlxuICAgIGlmIChfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuYnJhY2VSKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBmbG93UGFyc2VUeXBlKCk7XG4gIH0gZWxzZSB7XG4gICAgZmxvd1BhcnNlT2JqZWN0UHJvcGVydHlLZXkoKTtcbiAgICBpZiAoX2luZGV4Lm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmxlc3NUaGFuKSB8fCBfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUucGFyZW5MKSkge1xuICAgICAgLy8gVGhpcyBpcyBhIG1ldGhvZCBwcm9wZXJ0eVxuICAgICAgZmxvd1BhcnNlT2JqZWN0VHlwZU1ldGhvZGlzaCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBfaW5kZXguZWF0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLnF1ZXN0aW9uKTtcbiAgICAgIGZsb3dQYXJzZVR5cGVJbml0aWFsaXNlcigpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBmbG93T2JqZWN0VHlwZVNlbWljb2xvbigpIHtcbiAgaWYgKCFfaW5kZXguZWF0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLnNlbWkpICYmICFfaW5kZXguZWF0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmNvbW1hKSAmJiAhX2luZGV4Lm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmJyYWNlUikgJiYgIV9pbmRleC5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5icmFjZUJhclIpKSB7XG4gICAgX3V0aWwudW5leHBlY3RlZC5jYWxsKHZvaWQgMCwgKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBmbG93UGFyc2VRdWFsaWZpZWRUeXBlSWRlbnRpZmllcihpbml0aWFsSWRBbHJlYWR5UGFyc2VkKSB7XG4gIGlmICghaW5pdGlhbElkQWxyZWFkeVBhcnNlZCkge1xuICAgIF9leHByZXNzaW9uLnBhcnNlSWRlbnRpZmllci5jYWxsKHZvaWQgMCwgKTtcbiAgfVxuICB3aGlsZSAoX2luZGV4LmVhdC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5kb3QpKSB7XG4gICAgX2V4cHJlc3Npb24ucGFyc2VJZGVudGlmaWVyLmNhbGwodm9pZCAwLCApO1xuICB9XG59XG5cbmZ1bmN0aW9uIGZsb3dQYXJzZUdlbmVyaWNUeXBlKCkge1xuICBmbG93UGFyc2VRdWFsaWZpZWRUeXBlSWRlbnRpZmllcih0cnVlKTtcbiAgaWYgKF9pbmRleC5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5sZXNzVGhhbikpIHtcbiAgICBmbG93UGFyc2VUeXBlUGFyYW1ldGVySW5zdGFudGlhdGlvbigpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGZsb3dQYXJzZVR5cGVvZlR5cGUoKSB7XG4gIF91dGlsLmV4cGVjdC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5fdHlwZW9mKTtcbiAgZmxvd1BhcnNlUHJpbWFyeVR5cGUoKTtcbn1cblxuZnVuY3Rpb24gZmxvd1BhcnNlVHVwbGVUeXBlKCkge1xuICBfdXRpbC5leHBlY3QuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuYnJhY2tldEwpO1xuICAvLyBXZSBhbGxvdyB0cmFpbGluZyBjb21tYXNcbiAgd2hpbGUgKF9iYXNlLnN0YXRlLnBvcyA8IF9iYXNlLmlucHV0Lmxlbmd0aCAmJiAhX2luZGV4Lm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmJyYWNrZXRSKSkge1xuICAgIGZsb3dQYXJzZVR5cGUoKTtcbiAgICBpZiAoX2luZGV4Lm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmJyYWNrZXRSKSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIF91dGlsLmV4cGVjdC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5jb21tYSk7XG4gIH1cbiAgX3V0aWwuZXhwZWN0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmJyYWNrZXRSKTtcbn1cblxuZnVuY3Rpb24gZmxvd1BhcnNlRnVuY3Rpb25UeXBlUGFyYW0oKSB7XG4gIGNvbnN0IGxvb2thaGVhZCA9IF9pbmRleC5sb29rYWhlYWRUeXBlLmNhbGwodm9pZCAwLCApO1xuICBpZiAobG9va2FoZWFkID09PSBfdHlwZXMuVG9rZW5UeXBlLmNvbG9uIHx8IGxvb2thaGVhZCA9PT0gX3R5cGVzLlRva2VuVHlwZS5xdWVzdGlvbikge1xuICAgIF9leHByZXNzaW9uLnBhcnNlSWRlbnRpZmllci5jYWxsKHZvaWQgMCwgKTtcbiAgICBfaW5kZXguZWF0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLnF1ZXN0aW9uKTtcbiAgICBmbG93UGFyc2VUeXBlSW5pdGlhbGlzZXIoKTtcbiAgfSBlbHNlIHtcbiAgICBmbG93UGFyc2VUeXBlKCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZmxvd1BhcnNlRnVuY3Rpb25UeXBlUGFyYW1zKCkge1xuICB3aGlsZSAoIV9pbmRleC5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5wYXJlblIpICYmICFfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuZWxsaXBzaXMpICYmICFfYmFzZS5zdGF0ZS5lcnJvcikge1xuICAgIGZsb3dQYXJzZUZ1bmN0aW9uVHlwZVBhcmFtKCk7XG4gICAgaWYgKCFfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUucGFyZW5SKSkge1xuICAgICAgX3V0aWwuZXhwZWN0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmNvbW1hKTtcbiAgICB9XG4gIH1cbiAgaWYgKF9pbmRleC5lYXQuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuZWxsaXBzaXMpKSB7XG4gICAgZmxvd1BhcnNlRnVuY3Rpb25UeXBlUGFyYW0oKTtcbiAgfVxufVxuXG4vLyBUaGUgcGFyc2luZyBvZiB0eXBlcyByb3VnaGx5IHBhcmFsbGVscyB0aGUgcGFyc2luZyBvZiBleHByZXNzaW9ucywgYW5kXG4vLyBwcmltYXJ5IHR5cGVzIGFyZSBraW5kIG9mIGxpa2UgcHJpbWFyeSBleHByZXNzaW9ucy4uLnRoZXkncmUgdGhlXG4vLyBwcmltaXRpdmVzIHdpdGggd2hpY2ggb3RoZXIgdHlwZXMgYXJlIGNvbnN0cnVjdGVkLlxuZnVuY3Rpb24gZmxvd1BhcnNlUHJpbWFyeVR5cGUoKSB7XG4gIGxldCBpc0dyb3VwZWRUeXBlID0gZmFsc2U7XG4gIGNvbnN0IG9sZE5vQW5vbkZ1bmN0aW9uVHlwZSA9IF9iYXNlLnN0YXRlLm5vQW5vbkZ1bmN0aW9uVHlwZTtcblxuICBzd2l0Y2ggKF9iYXNlLnN0YXRlLnR5cGUpIHtcbiAgICBjYXNlIF90eXBlcy5Ub2tlblR5cGUubmFtZToge1xuICAgICAgaWYgKF91dGlsLmlzQ29udGV4dHVhbC5jYWxsKHZvaWQgMCwgX2tleXdvcmRzLkNvbnRleHR1YWxLZXl3b3JkLl9pbnRlcmZhY2UpKSB7XG4gICAgICAgIGZsb3dQYXJzZUludGVyZmFjZVR5cGUoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgX2V4cHJlc3Npb24ucGFyc2VJZGVudGlmaWVyLmNhbGwodm9pZCAwLCApO1xuICAgICAgZmxvd1BhcnNlR2VuZXJpY1R5cGUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjYXNlIF90eXBlcy5Ub2tlblR5cGUuYnJhY2VMOlxuICAgICAgZmxvd1BhcnNlT2JqZWN0VHlwZShmYWxzZSwgZmFsc2UsIGZhbHNlKTtcbiAgICAgIHJldHVybjtcblxuICAgIGNhc2UgX3R5cGVzLlRva2VuVHlwZS5icmFjZUJhckw6XG4gICAgICBmbG93UGFyc2VPYmplY3RUeXBlKGZhbHNlLCB0cnVlLCBmYWxzZSk7XG4gICAgICByZXR1cm47XG5cbiAgICBjYXNlIF90eXBlcy5Ub2tlblR5cGUuYnJhY2tldEw6XG4gICAgICBmbG93UGFyc2VUdXBsZVR5cGUoKTtcbiAgICAgIHJldHVybjtcblxuICAgIGNhc2UgX3R5cGVzLlRva2VuVHlwZS5sZXNzVGhhbjpcbiAgICAgIGZsb3dQYXJzZVR5cGVQYXJhbWV0ZXJEZWNsYXJhdGlvbigpO1xuICAgICAgX3V0aWwuZXhwZWN0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLnBhcmVuTCk7XG4gICAgICBmbG93UGFyc2VGdW5jdGlvblR5cGVQYXJhbXMoKTtcbiAgICAgIF91dGlsLmV4cGVjdC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5wYXJlblIpO1xuICAgICAgX3V0aWwuZXhwZWN0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmFycm93KTtcbiAgICAgIGZsb3dQYXJzZVR5cGUoKTtcbiAgICAgIHJldHVybjtcblxuICAgIGNhc2UgX3R5cGVzLlRva2VuVHlwZS5wYXJlbkw6XG4gICAgICBfaW5kZXgubmV4dC5jYWxsKHZvaWQgMCwgKTtcblxuICAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHRoaXMgaXMgYWN0dWFsbHkgYSBncm91cGVkIHR5cGVcbiAgICAgIGlmICghX2luZGV4Lm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLnBhcmVuUikgJiYgIV9pbmRleC5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5lbGxpcHNpcykpIHtcbiAgICAgICAgaWYgKF9pbmRleC5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5uYW1lKSkge1xuICAgICAgICAgIGNvbnN0IHRva2VuID0gX2luZGV4Lmxvb2thaGVhZFR5cGUuY2FsbCh2b2lkIDAsICk7XG4gICAgICAgICAgaXNHcm91cGVkVHlwZSA9IHRva2VuICE9PSBfdHlwZXMuVG9rZW5UeXBlLnF1ZXN0aW9uICYmIHRva2VuICE9PSBfdHlwZXMuVG9rZW5UeXBlLmNvbG9uO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlzR3JvdXBlZFR5cGUgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChpc0dyb3VwZWRUeXBlKSB7XG4gICAgICAgIF9iYXNlLnN0YXRlLm5vQW5vbkZ1bmN0aW9uVHlwZSA9IGZhbHNlO1xuICAgICAgICBmbG93UGFyc2VUeXBlKCk7XG4gICAgICAgIF9iYXNlLnN0YXRlLm5vQW5vbkZ1bmN0aW9uVHlwZSA9IG9sZE5vQW5vbkZ1bmN0aW9uVHlwZTtcblxuICAgICAgICAvLyBBIGAsYCBvciBhIGApID0+YCBtZWFucyB0aGlzIGlzIGFuIGFub255bW91cyBmdW5jdGlvbiB0eXBlXG4gICAgICAgIGlmIChcbiAgICAgICAgICBfYmFzZS5zdGF0ZS5ub0Fub25GdW5jdGlvblR5cGUgfHxcbiAgICAgICAgICAhKF9pbmRleC5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5jb21tYSkgfHwgKF9pbmRleC5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5wYXJlblIpICYmIF9pbmRleC5sb29rYWhlYWRUeXBlLmNhbGwodm9pZCAwLCApID09PSBfdHlwZXMuVG9rZW5UeXBlLmFycm93KSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgX3V0aWwuZXhwZWN0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLnBhcmVuUik7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIEVhdCBhIGNvbW1hIGlmIHRoZXJlIGlzIG9uZVxuICAgICAgICAgIF9pbmRleC5lYXQuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuY29tbWEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGZsb3dQYXJzZUZ1bmN0aW9uVHlwZVBhcmFtcygpO1xuXG4gICAgICBfdXRpbC5leHBlY3QuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUucGFyZW5SKTtcbiAgICAgIF91dGlsLmV4cGVjdC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5hcnJvdyk7XG4gICAgICBmbG93UGFyc2VUeXBlKCk7XG4gICAgICByZXR1cm47XG5cbiAgICBjYXNlIF90eXBlcy5Ub2tlblR5cGUubWludXM6XG4gICAgICBfaW5kZXgubmV4dC5jYWxsKHZvaWQgMCwgKTtcbiAgICAgIF9leHByZXNzaW9uLnBhcnNlTGl0ZXJhbC5jYWxsKHZvaWQgMCwgKTtcbiAgICAgIHJldHVybjtcblxuICAgIGNhc2UgX3R5cGVzLlRva2VuVHlwZS5zdHJpbmc6XG4gICAgY2FzZSBfdHlwZXMuVG9rZW5UeXBlLm51bTpcbiAgICBjYXNlIF90eXBlcy5Ub2tlblR5cGUuX3RydWU6XG4gICAgY2FzZSBfdHlwZXMuVG9rZW5UeXBlLl9mYWxzZTpcbiAgICBjYXNlIF90eXBlcy5Ub2tlblR5cGUuX251bGw6XG4gICAgY2FzZSBfdHlwZXMuVG9rZW5UeXBlLl90aGlzOlxuICAgIGNhc2UgX3R5cGVzLlRva2VuVHlwZS5fdm9pZDpcbiAgICBjYXNlIF90eXBlcy5Ub2tlblR5cGUuc3RhcjpcbiAgICAgIF9pbmRleC5uZXh0LmNhbGwodm9pZCAwLCApO1xuICAgICAgcmV0dXJuO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIGlmIChfYmFzZS5zdGF0ZS50eXBlID09PSBfdHlwZXMuVG9rZW5UeXBlLl90eXBlb2YpIHtcbiAgICAgICAgZmxvd1BhcnNlVHlwZW9mVHlwZSgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9IGVsc2UgaWYgKF9iYXNlLnN0YXRlLnR5cGUgJiBfdHlwZXMuVG9rZW5UeXBlLklTX0tFWVdPUkQpIHtcbiAgICAgICAgX2luZGV4Lm5leHQuY2FsbCh2b2lkIDAsICk7XG4gICAgICAgIF9iYXNlLnN0YXRlLnRva2Vuc1tfYmFzZS5zdGF0ZS50b2tlbnMubGVuZ3RoIC0gMV0udHlwZSA9IF90eXBlcy5Ub2tlblR5cGUubmFtZTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICB9XG5cbiAgX3V0aWwudW5leHBlY3RlZC5jYWxsKHZvaWQgMCwgKTtcbn1cblxuZnVuY3Rpb24gZmxvd1BhcnNlUG9zdGZpeFR5cGUoKSB7XG4gIGZsb3dQYXJzZVByaW1hcnlUeXBlKCk7XG4gIHdoaWxlICghX3V0aWwuY2FuSW5zZXJ0U2VtaWNvbG9uLmNhbGwodm9pZCAwLCApICYmIChfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuYnJhY2tldEwpIHx8IF9pbmRleC5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5xdWVzdGlvbkRvdCkpKSB7XG4gICAgX2luZGV4LmVhdC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5xdWVzdGlvbkRvdCk7XG4gICAgX3V0aWwuZXhwZWN0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmJyYWNrZXRMKTtcbiAgICBpZiAoX2luZGV4LmVhdC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5icmFja2V0UikpIHtcbiAgICAgIC8vIEFycmF5IHR5cGVcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSW5kZXhlZCBhY2Nlc3MgdHlwZVxuICAgICAgZmxvd1BhcnNlVHlwZSgpO1xuICAgICAgX3V0aWwuZXhwZWN0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmJyYWNrZXRSKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZmxvd1BhcnNlUHJlZml4VHlwZSgpIHtcbiAgaWYgKF9pbmRleC5lYXQuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUucXVlc3Rpb24pKSB7XG4gICAgZmxvd1BhcnNlUHJlZml4VHlwZSgpO1xuICB9IGVsc2Uge1xuICAgIGZsb3dQYXJzZVBvc3RmaXhUeXBlKCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZmxvd1BhcnNlQW5vbkZ1bmN0aW9uV2l0aG91dFBhcmVucygpIHtcbiAgZmxvd1BhcnNlUHJlZml4VHlwZSgpO1xuICBpZiAoIV9iYXNlLnN0YXRlLm5vQW5vbkZ1bmN0aW9uVHlwZSAmJiBfaW5kZXguZWF0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmFycm93KSkge1xuICAgIGZsb3dQYXJzZVR5cGUoKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBmbG93UGFyc2VJbnRlcnNlY3Rpb25UeXBlKCkge1xuICBfaW5kZXguZWF0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmJpdHdpc2VBTkQpO1xuICBmbG93UGFyc2VBbm9uRnVuY3Rpb25XaXRob3V0UGFyZW5zKCk7XG4gIHdoaWxlIChfaW5kZXguZWF0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmJpdHdpc2VBTkQpKSB7XG4gICAgZmxvd1BhcnNlQW5vbkZ1bmN0aW9uV2l0aG91dFBhcmVucygpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGZsb3dQYXJzZVVuaW9uVHlwZSgpIHtcbiAgX2luZGV4LmVhdC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5iaXR3aXNlT1IpO1xuICBmbG93UGFyc2VJbnRlcnNlY3Rpb25UeXBlKCk7XG4gIHdoaWxlIChfaW5kZXguZWF0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmJpdHdpc2VPUikpIHtcbiAgICBmbG93UGFyc2VJbnRlcnNlY3Rpb25UeXBlKCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZmxvd1BhcnNlVHlwZSgpIHtcbiAgZmxvd1BhcnNlVW5pb25UeXBlKCk7XG59XG5cbiBmdW5jdGlvbiBmbG93UGFyc2VUeXBlQW5ub3RhdGlvbigpIHtcbiAgZmxvd1BhcnNlVHlwZUluaXRpYWxpc2VyKCk7XG59IGV4cG9ydHMuZmxvd1BhcnNlVHlwZUFubm90YXRpb24gPSBmbG93UGFyc2VUeXBlQW5ub3RhdGlvbjtcblxuZnVuY3Rpb24gZmxvd1BhcnNlVHlwZUFubm90YXRhYmxlSWRlbnRpZmllcigpIHtcbiAgX2V4cHJlc3Npb24ucGFyc2VJZGVudGlmaWVyLmNhbGwodm9pZCAwLCApO1xuICBpZiAoX2luZGV4Lm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmNvbG9uKSkge1xuICAgIGZsb3dQYXJzZVR5cGVBbm5vdGF0aW9uKCk7XG4gIH1cbn1cblxuIGZ1bmN0aW9uIGZsb3dQYXJzZVZhcmlhbmNlKCkge1xuICBpZiAoX2luZGV4Lm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLnBsdXMpIHx8IF9pbmRleC5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5taW51cykpIHtcbiAgICBfaW5kZXgubmV4dC5jYWxsKHZvaWQgMCwgKTtcbiAgICBfYmFzZS5zdGF0ZS50b2tlbnNbX2Jhc2Uuc3RhdGUudG9rZW5zLmxlbmd0aCAtIDFdLmlzVHlwZSA9IHRydWU7XG4gIH1cbn0gZXhwb3J0cy5mbG93UGFyc2VWYXJpYW5jZSA9IGZsb3dQYXJzZVZhcmlhbmNlO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBPdmVycmlkZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuIGZ1bmN0aW9uIGZsb3dQYXJzZUZ1bmN0aW9uQm9keUFuZEZpbmlzaChmdW5jQ29udGV4dElkKSB7XG4gIC8vIEZvciBhcnJvdyBmdW5jdGlvbnMsIGBwYXJzZUFycm93YCBoYW5kbGVzIHRoZSByZXR1cm4gdHlwZSBpdHNlbGYuXG4gIGlmIChfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuY29sb24pKSB7XG4gICAgZmxvd1BhcnNlVHlwZUFuZFByZWRpY2F0ZUluaXRpYWxpc2VyKCk7XG4gIH1cblxuICBfZXhwcmVzc2lvbi5wYXJzZUZ1bmN0aW9uQm9keS5jYWxsKHZvaWQgMCwgZmFsc2UsIGZ1bmNDb250ZXh0SWQpO1xufSBleHBvcnRzLmZsb3dQYXJzZUZ1bmN0aW9uQm9keUFuZEZpbmlzaCA9IGZsb3dQYXJzZUZ1bmN0aW9uQm9keUFuZEZpbmlzaDtcblxuIGZ1bmN0aW9uIGZsb3dQYXJzZVN1YnNjcmlwdChcbiAgc3RhcnRUb2tlbkluZGV4LFxuICBub0NhbGxzLFxuICBzdG9wU3RhdGUsXG4pIHtcbiAgaWYgKF9pbmRleC5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5xdWVzdGlvbkRvdCkgJiYgX2luZGV4Lmxvb2thaGVhZFR5cGUuY2FsbCh2b2lkIDAsICkgPT09IF90eXBlcy5Ub2tlblR5cGUubGVzc1RoYW4pIHtcbiAgICBpZiAobm9DYWxscykge1xuICAgICAgc3RvcFN0YXRlLnN0b3AgPSB0cnVlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBfaW5kZXgubmV4dC5jYWxsKHZvaWQgMCwgKTtcbiAgICBmbG93UGFyc2VUeXBlUGFyYW1ldGVySW5zdGFudGlhdGlvbigpO1xuICAgIF91dGlsLmV4cGVjdC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5wYXJlbkwpO1xuICAgIF9leHByZXNzaW9uLnBhcnNlQ2FsbEV4cHJlc3Npb25Bcmd1bWVudHMuY2FsbCh2b2lkIDAsICk7XG4gICAgcmV0dXJuO1xuICB9IGVsc2UgaWYgKCFub0NhbGxzICYmIF9pbmRleC5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5sZXNzVGhhbikpIHtcbiAgICBjb25zdCBzbmFwc2hvdCA9IF9iYXNlLnN0YXRlLnNuYXBzaG90KCk7XG4gICAgZmxvd1BhcnNlVHlwZVBhcmFtZXRlckluc3RhbnRpYXRpb24oKTtcbiAgICBfdXRpbC5leHBlY3QuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUucGFyZW5MKTtcbiAgICBfZXhwcmVzc2lvbi5wYXJzZUNhbGxFeHByZXNzaW9uQXJndW1lbnRzLmNhbGwodm9pZCAwLCApO1xuICAgIGlmIChfYmFzZS5zdGF0ZS5lcnJvcikge1xuICAgICAgX2Jhc2Uuc3RhdGUucmVzdG9yZUZyb21TbmFwc2hvdChzbmFwc2hvdCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cbiAgX2V4cHJlc3Npb24uYmFzZVBhcnNlU3Vic2NyaXB0LmNhbGwodm9pZCAwLCBzdGFydFRva2VuSW5kZXgsIG5vQ2FsbHMsIHN0b3BTdGF0ZSk7XG59IGV4cG9ydHMuZmxvd1BhcnNlU3Vic2NyaXB0ID0gZmxvd1BhcnNlU3Vic2NyaXB0O1xuXG4gZnVuY3Rpb24gZmxvd1N0YXJ0UGFyc2VOZXdBcmd1bWVudHMoKSB7XG4gIGlmIChfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUubGVzc1RoYW4pKSB7XG4gICAgY29uc3Qgc25hcHNob3QgPSBfYmFzZS5zdGF0ZS5zbmFwc2hvdCgpO1xuICAgIGZsb3dQYXJzZVR5cGVQYXJhbWV0ZXJJbnN0YW50aWF0aW9uKCk7XG4gICAgaWYgKF9iYXNlLnN0YXRlLmVycm9yKSB7XG4gICAgICBfYmFzZS5zdGF0ZS5yZXN0b3JlRnJvbVNuYXBzaG90KHNuYXBzaG90KTtcbiAgICB9XG4gIH1cbn0gZXhwb3J0cy5mbG93U3RhcnRQYXJzZU5ld0FyZ3VtZW50cyA9IGZsb3dTdGFydFBhcnNlTmV3QXJndW1lbnRzO1xuXG4vLyBpbnRlcmZhY2VzXG4gZnVuY3Rpb24gZmxvd1RyeVBhcnNlU3RhdGVtZW50KCkge1xuICBpZiAoX2luZGV4Lm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLm5hbWUpICYmIF9iYXNlLnN0YXRlLmNvbnRleHR1YWxLZXl3b3JkID09PSBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX2ludGVyZmFjZSkge1xuICAgIGNvbnN0IG9sZElzVHlwZSA9IF9pbmRleC5wdXNoVHlwZUNvbnRleHQuY2FsbCh2b2lkIDAsIDApO1xuICAgIF9pbmRleC5uZXh0LmNhbGwodm9pZCAwLCApO1xuICAgIGZsb3dQYXJzZUludGVyZmFjZSgpO1xuICAgIF9pbmRleC5wb3BUeXBlQ29udGV4dC5jYWxsKHZvaWQgMCwgb2xkSXNUeXBlKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBlbHNlIGlmIChfdXRpbC5pc0NvbnRleHR1YWwuY2FsbCh2b2lkIDAsIF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fZW51bSkpIHtcbiAgICBmbG93UGFyc2VFbnVtRGVjbGFyYXRpb24oKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59IGV4cG9ydHMuZmxvd1RyeVBhcnNlU3RhdGVtZW50ID0gZmxvd1RyeVBhcnNlU3RhdGVtZW50O1xuXG4gZnVuY3Rpb24gZmxvd1RyeVBhcnNlRXhwb3J0RGVmYXVsdEV4cHJlc3Npb24oKSB7XG4gIGlmIChfdXRpbC5pc0NvbnRleHR1YWwuY2FsbCh2b2lkIDAsIF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fZW51bSkpIHtcbiAgICBmbG93UGFyc2VFbnVtRGVjbGFyYXRpb24oKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59IGV4cG9ydHMuZmxvd1RyeVBhcnNlRXhwb3J0RGVmYXVsdEV4cHJlc3Npb24gPSBmbG93VHJ5UGFyc2VFeHBvcnREZWZhdWx0RXhwcmVzc2lvbjtcblxuLy8gZGVjbGFyZXMsIGludGVyZmFjZXMgYW5kIHR5cGUgYWxpYXNlc1xuIGZ1bmN0aW9uIGZsb3dQYXJzZUlkZW50aWZpZXJTdGF0ZW1lbnQoY29udGV4dHVhbEtleXdvcmQpIHtcbiAgaWYgKGNvbnRleHR1YWxLZXl3b3JkID09PSBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX2RlY2xhcmUpIHtcbiAgICBpZiAoXG4gICAgICBfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuX2NsYXNzKSB8fFxuICAgICAgX2luZGV4Lm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLm5hbWUpIHx8XG4gICAgICBfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuX2Z1bmN0aW9uKSB8fFxuICAgICAgX2luZGV4Lm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLl92YXIpIHx8XG4gICAgICBfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuX2V4cG9ydClcbiAgICApIHtcbiAgICAgIGNvbnN0IG9sZElzVHlwZSA9IF9pbmRleC5wdXNoVHlwZUNvbnRleHQuY2FsbCh2b2lkIDAsIDEpO1xuICAgICAgZmxvd1BhcnNlRGVjbGFyZSgpO1xuICAgICAgX2luZGV4LnBvcFR5cGVDb250ZXh0LmNhbGwodm9pZCAwLCBvbGRJc1R5cGUpO1xuICAgIH1cbiAgfSBlbHNlIGlmIChfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUubmFtZSkpIHtcbiAgICBpZiAoY29udGV4dHVhbEtleXdvcmQgPT09IF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5faW50ZXJmYWNlKSB7XG4gICAgICBjb25zdCBvbGRJc1R5cGUgPSBfaW5kZXgucHVzaFR5cGVDb250ZXh0LmNhbGwodm9pZCAwLCAxKTtcbiAgICAgIGZsb3dQYXJzZUludGVyZmFjZSgpO1xuICAgICAgX2luZGV4LnBvcFR5cGVDb250ZXh0LmNhbGwodm9pZCAwLCBvbGRJc1R5cGUpO1xuICAgIH0gZWxzZSBpZiAoY29udGV4dHVhbEtleXdvcmQgPT09IF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fdHlwZSkge1xuICAgICAgY29uc3Qgb2xkSXNUeXBlID0gX2luZGV4LnB1c2hUeXBlQ29udGV4dC5jYWxsKHZvaWQgMCwgMSk7XG4gICAgICBmbG93UGFyc2VUeXBlQWxpYXMoKTtcbiAgICAgIF9pbmRleC5wb3BUeXBlQ29udGV4dC5jYWxsKHZvaWQgMCwgb2xkSXNUeXBlKTtcbiAgICB9IGVsc2UgaWYgKGNvbnRleHR1YWxLZXl3b3JkID09PSBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX29wYXF1ZSkge1xuICAgICAgY29uc3Qgb2xkSXNUeXBlID0gX2luZGV4LnB1c2hUeXBlQ29udGV4dC5jYWxsKHZvaWQgMCwgMSk7XG4gICAgICBmbG93UGFyc2VPcGFxdWVUeXBlKGZhbHNlKTtcbiAgICAgIF9pbmRleC5wb3BUeXBlQ29udGV4dC5jYWxsKHZvaWQgMCwgb2xkSXNUeXBlKTtcbiAgICB9XG4gIH1cbiAgX3V0aWwuc2VtaWNvbG9uLmNhbGwodm9pZCAwLCApO1xufSBleHBvcnRzLmZsb3dQYXJzZUlkZW50aWZpZXJTdGF0ZW1lbnQgPSBmbG93UGFyc2VJZGVudGlmaWVyU3RhdGVtZW50O1xuXG4vLyBleHBvcnQgdHlwZVxuIGZ1bmN0aW9uIGZsb3dTaG91bGRQYXJzZUV4cG9ydERlY2xhcmF0aW9uKCkge1xuICByZXR1cm4gKFxuICAgIF91dGlsLmlzQ29udGV4dHVhbC5jYWxsKHZvaWQgMCwgX2tleXdvcmRzLkNvbnRleHR1YWxLZXl3b3JkLl90eXBlKSB8fFxuICAgIF91dGlsLmlzQ29udGV4dHVhbC5jYWxsKHZvaWQgMCwgX2tleXdvcmRzLkNvbnRleHR1YWxLZXl3b3JkLl9pbnRlcmZhY2UpIHx8XG4gICAgX3V0aWwuaXNDb250ZXh0dWFsLmNhbGwodm9pZCAwLCBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX29wYXF1ZSkgfHxcbiAgICBfdXRpbC5pc0NvbnRleHR1YWwuY2FsbCh2b2lkIDAsIF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fZW51bSlcbiAgKTtcbn0gZXhwb3J0cy5mbG93U2hvdWxkUGFyc2VFeHBvcnREZWNsYXJhdGlvbiA9IGZsb3dTaG91bGRQYXJzZUV4cG9ydERlY2xhcmF0aW9uO1xuXG4gZnVuY3Rpb24gZmxvd1Nob3VsZERpc2FsbG93RXhwb3J0RGVmYXVsdFNwZWNpZmllcigpIHtcbiAgcmV0dXJuIChcbiAgICBfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUubmFtZSkgJiZcbiAgICAoX2Jhc2Uuc3RhdGUuY29udGV4dHVhbEtleXdvcmQgPT09IF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fdHlwZSB8fFxuICAgICAgX2Jhc2Uuc3RhdGUuY29udGV4dHVhbEtleXdvcmQgPT09IF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5faW50ZXJmYWNlIHx8XG4gICAgICBfYmFzZS5zdGF0ZS5jb250ZXh0dWFsS2V5d29yZCA9PT0gX2tleXdvcmRzLkNvbnRleHR1YWxLZXl3b3JkLl9vcGFxdWUgfHxcbiAgICAgIF9iYXNlLnN0YXRlLmNvbnRleHR1YWxLZXl3b3JkID09PSBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX2VudW0pXG4gICk7XG59IGV4cG9ydHMuZmxvd1Nob3VsZERpc2FsbG93RXhwb3J0RGVmYXVsdFNwZWNpZmllciA9IGZsb3dTaG91bGREaXNhbGxvd0V4cG9ydERlZmF1bHRTcGVjaWZpZXI7XG5cbiBmdW5jdGlvbiBmbG93UGFyc2VFeHBvcnREZWNsYXJhdGlvbigpIHtcbiAgaWYgKF91dGlsLmlzQ29udGV4dHVhbC5jYWxsKHZvaWQgMCwgX2tleXdvcmRzLkNvbnRleHR1YWxLZXl3b3JkLl90eXBlKSkge1xuICAgIGNvbnN0IG9sZElzVHlwZSA9IF9pbmRleC5wdXNoVHlwZUNvbnRleHQuY2FsbCh2b2lkIDAsIDEpO1xuICAgIF9pbmRleC5uZXh0LmNhbGwodm9pZCAwLCApO1xuXG4gICAgaWYgKF9pbmRleC5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5icmFjZUwpKSB7XG4gICAgICAvLyBleHBvcnQgdHlwZSB7IGZvbywgYmFyIH07XG4gICAgICBfc3RhdGVtZW50LnBhcnNlRXhwb3J0U3BlY2lmaWVycy5jYWxsKHZvaWQgMCwgKTtcbiAgICAgIF9zdGF0ZW1lbnQucGFyc2VFeHBvcnRGcm9tLmNhbGwodm9pZCAwLCApO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBleHBvcnQgdHlwZSBGb28gPSBCYXI7XG4gICAgICBmbG93UGFyc2VUeXBlQWxpYXMoKTtcbiAgICB9XG4gICAgX2luZGV4LnBvcFR5cGVDb250ZXh0LmNhbGwodm9pZCAwLCBvbGRJc1R5cGUpO1xuICB9IGVsc2UgaWYgKF91dGlsLmlzQ29udGV4dHVhbC5jYWxsKHZvaWQgMCwgX2tleXdvcmRzLkNvbnRleHR1YWxLZXl3b3JkLl9vcGFxdWUpKSB7XG4gICAgY29uc3Qgb2xkSXNUeXBlID0gX2luZGV4LnB1c2hUeXBlQ29udGV4dC5jYWxsKHZvaWQgMCwgMSk7XG4gICAgX2luZGV4Lm5leHQuY2FsbCh2b2lkIDAsICk7XG4gICAgLy8gZXhwb3J0IG9wYXF1ZSB0eXBlIEZvbyA9IEJhcjtcbiAgICBmbG93UGFyc2VPcGFxdWVUeXBlKGZhbHNlKTtcbiAgICBfaW5kZXgucG9wVHlwZUNvbnRleHQuY2FsbCh2b2lkIDAsIG9sZElzVHlwZSk7XG4gIH0gZWxzZSBpZiAoX3V0aWwuaXNDb250ZXh0dWFsLmNhbGwodm9pZCAwLCBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX2ludGVyZmFjZSkpIHtcbiAgICBjb25zdCBvbGRJc1R5cGUgPSBfaW5kZXgucHVzaFR5cGVDb250ZXh0LmNhbGwodm9pZCAwLCAxKTtcbiAgICBfaW5kZXgubmV4dC5jYWxsKHZvaWQgMCwgKTtcbiAgICBmbG93UGFyc2VJbnRlcmZhY2UoKTtcbiAgICBfaW5kZXgucG9wVHlwZUNvbnRleHQuY2FsbCh2b2lkIDAsIG9sZElzVHlwZSk7XG4gIH0gZWxzZSB7XG4gICAgX3N0YXRlbWVudC5wYXJzZVN0YXRlbWVudC5jYWxsKHZvaWQgMCwgdHJ1ZSk7XG4gIH1cbn0gZXhwb3J0cy5mbG93UGFyc2VFeHBvcnREZWNsYXJhdGlvbiA9IGZsb3dQYXJzZUV4cG9ydERlY2xhcmF0aW9uO1xuXG4gZnVuY3Rpb24gZmxvd1Nob3VsZFBhcnNlRXhwb3J0U3RhcigpIHtcbiAgcmV0dXJuIF9pbmRleC5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5zdGFyKSB8fCAoX3V0aWwuaXNDb250ZXh0dWFsLmNhbGwodm9pZCAwLCBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX3R5cGUpICYmIF9pbmRleC5sb29rYWhlYWRUeXBlLmNhbGwodm9pZCAwLCApID09PSBfdHlwZXMuVG9rZW5UeXBlLnN0YXIpO1xufSBleHBvcnRzLmZsb3dTaG91bGRQYXJzZUV4cG9ydFN0YXIgPSBmbG93U2hvdWxkUGFyc2VFeHBvcnRTdGFyO1xuXG4gZnVuY3Rpb24gZmxvd1BhcnNlRXhwb3J0U3RhcigpIHtcbiAgaWYgKF91dGlsLmVhdENvbnRleHR1YWwuY2FsbCh2b2lkIDAsIF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fdHlwZSkpIHtcbiAgICBjb25zdCBvbGRJc1R5cGUgPSBfaW5kZXgucHVzaFR5cGVDb250ZXh0LmNhbGwodm9pZCAwLCAyKTtcbiAgICBfc3RhdGVtZW50LmJhc2VQYXJzZUV4cG9ydFN0YXIuY2FsbCh2b2lkIDAsICk7XG4gICAgX2luZGV4LnBvcFR5cGVDb250ZXh0LmNhbGwodm9pZCAwLCBvbGRJc1R5cGUpO1xuICB9IGVsc2Uge1xuICAgIF9zdGF0ZW1lbnQuYmFzZVBhcnNlRXhwb3J0U3Rhci5jYWxsKHZvaWQgMCwgKTtcbiAgfVxufSBleHBvcnRzLmZsb3dQYXJzZUV4cG9ydFN0YXIgPSBmbG93UGFyc2VFeHBvcnRTdGFyO1xuXG4vLyBwYXJzZSBhIHRoZSBzdXBlciBjbGFzcyB0eXBlIHBhcmFtZXRlcnMgYW5kIGltcGxlbWVudHNcbiBmdW5jdGlvbiBmbG93QWZ0ZXJQYXJzZUNsYXNzU3VwZXIoaGFzU3VwZXIpIHtcbiAgaWYgKGhhc1N1cGVyICYmIF9pbmRleC5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5sZXNzVGhhbikpIHtcbiAgICBmbG93UGFyc2VUeXBlUGFyYW1ldGVySW5zdGFudGlhdGlvbigpO1xuICB9XG4gIGlmIChfdXRpbC5pc0NvbnRleHR1YWwuY2FsbCh2b2lkIDAsIF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5faW1wbGVtZW50cykpIHtcbiAgICBjb25zdCBvbGRJc1R5cGUgPSBfaW5kZXgucHVzaFR5cGVDb250ZXh0LmNhbGwodm9pZCAwLCAwKTtcbiAgICBfaW5kZXgubmV4dC5jYWxsKHZvaWQgMCwgKTtcbiAgICBfYmFzZS5zdGF0ZS50b2tlbnNbX2Jhc2Uuc3RhdGUudG9rZW5zLmxlbmd0aCAtIDFdLnR5cGUgPSBfdHlwZXMuVG9rZW5UeXBlLl9pbXBsZW1lbnRzO1xuICAgIGRvIHtcbiAgICAgIGZsb3dQYXJzZVJlc3RyaWN0ZWRJZGVudGlmaWVyKCk7XG4gICAgICBpZiAoX2luZGV4Lm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmxlc3NUaGFuKSkge1xuICAgICAgICBmbG93UGFyc2VUeXBlUGFyYW1ldGVySW5zdGFudGlhdGlvbigpO1xuICAgICAgfVxuICAgIH0gd2hpbGUgKF9pbmRleC5lYXQuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuY29tbWEpKTtcbiAgICBfaW5kZXgucG9wVHlwZUNvbnRleHQuY2FsbCh2b2lkIDAsIG9sZElzVHlwZSk7XG4gIH1cbn0gZXhwb3J0cy5mbG93QWZ0ZXJQYXJzZUNsYXNzU3VwZXIgPSBmbG93QWZ0ZXJQYXJzZUNsYXNzU3VwZXI7XG5cbi8vIHBhcnNlIHR5cGUgcGFyYW1ldGVycyBmb3Igb2JqZWN0IG1ldGhvZCBzaG9ydGhhbmRcbiBmdW5jdGlvbiBmbG93U3RhcnRQYXJzZU9ialByb3BWYWx1ZSgpIHtcbiAgLy8gbWV0aG9kIHNob3J0aGFuZFxuICBpZiAoX2luZGV4Lm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmxlc3NUaGFuKSkge1xuICAgIGZsb3dQYXJzZVR5cGVQYXJhbWV0ZXJEZWNsYXJhdGlvbigpO1xuICAgIGlmICghX2luZGV4Lm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLnBhcmVuTCkpIF91dGlsLnVuZXhwZWN0ZWQuY2FsbCh2b2lkIDAsICk7XG4gIH1cbn0gZXhwb3J0cy5mbG93U3RhcnRQYXJzZU9ialByb3BWYWx1ZSA9IGZsb3dTdGFydFBhcnNlT2JqUHJvcFZhbHVlO1xuXG4gZnVuY3Rpb24gZmxvd1BhcnNlQXNzaWduYWJsZUxpc3RJdGVtVHlwZXMoKSB7XG4gIGNvbnN0IG9sZElzVHlwZSA9IF9pbmRleC5wdXNoVHlwZUNvbnRleHQuY2FsbCh2b2lkIDAsIDApO1xuICBfaW5kZXguZWF0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLnF1ZXN0aW9uKTtcbiAgaWYgKF9pbmRleC5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5jb2xvbikpIHtcbiAgICBmbG93UGFyc2VUeXBlQW5ub3RhdGlvbigpO1xuICB9XG4gIF9pbmRleC5wb3BUeXBlQ29udGV4dC5jYWxsKHZvaWQgMCwgb2xkSXNUeXBlKTtcbn0gZXhwb3J0cy5mbG93UGFyc2VBc3NpZ25hYmxlTGlzdEl0ZW1UeXBlcyA9IGZsb3dQYXJzZUFzc2lnbmFibGVMaXN0SXRlbVR5cGVzO1xuXG4vLyBwYXJzZSB0eXBlb2YgYW5kIHR5cGUgaW1wb3J0c1xuIGZ1bmN0aW9uIGZsb3dTdGFydFBhcnNlSW1wb3J0U3BlY2lmaWVycygpIHtcbiAgaWYgKF9pbmRleC5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5fdHlwZW9mKSB8fCBfdXRpbC5pc0NvbnRleHR1YWwuY2FsbCh2b2lkIDAsIF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fdHlwZSkpIHtcbiAgICBjb25zdCBsaCA9IF9pbmRleC5sb29rYWhlYWRUeXBlQW5kS2V5d29yZC5jYWxsKHZvaWQgMCwgKTtcbiAgICBpZiAoaXNNYXliZURlZmF1bHRJbXBvcnQobGgpIHx8IGxoLnR5cGUgPT09IF90eXBlcy5Ub2tlblR5cGUuYnJhY2VMIHx8IGxoLnR5cGUgPT09IF90eXBlcy5Ub2tlblR5cGUuc3Rhcikge1xuICAgICAgX2luZGV4Lm5leHQuY2FsbCh2b2lkIDAsICk7XG4gICAgfVxuICB9XG59IGV4cG9ydHMuZmxvd1N0YXJ0UGFyc2VJbXBvcnRTcGVjaWZpZXJzID0gZmxvd1N0YXJ0UGFyc2VJbXBvcnRTcGVjaWZpZXJzO1xuXG4vLyBwYXJzZSBpbXBvcnQtdHlwZS90eXBlb2Ygc2hvcnRoYW5kXG4gZnVuY3Rpb24gZmxvd1BhcnNlSW1wb3J0U3BlY2lmaWVyKCkge1xuICBjb25zdCBpc1R5cGVLZXl3b3JkID1cbiAgICBfYmFzZS5zdGF0ZS5jb250ZXh0dWFsS2V5d29yZCA9PT0gX2tleXdvcmRzLkNvbnRleHR1YWxLZXl3b3JkLl90eXBlIHx8IF9iYXNlLnN0YXRlLnR5cGUgPT09IF90eXBlcy5Ub2tlblR5cGUuX3R5cGVvZjtcbiAgaWYgKGlzVHlwZUtleXdvcmQpIHtcbiAgICBfaW5kZXgubmV4dC5jYWxsKHZvaWQgMCwgKTtcbiAgfSBlbHNlIHtcbiAgICBfZXhwcmVzc2lvbi5wYXJzZUlkZW50aWZpZXIuY2FsbCh2b2lkIDAsICk7XG4gIH1cblxuICBpZiAoX3V0aWwuaXNDb250ZXh0dWFsLmNhbGwodm9pZCAwLCBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX2FzKSAmJiAhX3V0aWwuaXNMb29rYWhlYWRDb250ZXh0dWFsLmNhbGwodm9pZCAwLCBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX2FzKSkge1xuICAgIF9leHByZXNzaW9uLnBhcnNlSWRlbnRpZmllci5jYWxsKHZvaWQgMCwgKTtcbiAgICBpZiAoaXNUeXBlS2V5d29yZCAmJiAhX2luZGV4Lm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLm5hbWUpICYmICEoX2Jhc2Uuc3RhdGUudHlwZSAmIF90eXBlcy5Ub2tlblR5cGUuSVNfS0VZV09SRCkpIHtcbiAgICAgIC8vIGBpbXBvcnQge3R5cGUgYXMgLGAgb3IgYGltcG9ydCB7dHlwZSBhcyB9YFxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBgaW1wb3J0IHt0eXBlIGFzIGZvb2BcbiAgICAgIF9leHByZXNzaW9uLnBhcnNlSWRlbnRpZmllci5jYWxsKHZvaWQgMCwgKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaWYgKGlzVHlwZUtleXdvcmQgJiYgKF9pbmRleC5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5uYW1lKSB8fCAhIShfYmFzZS5zdGF0ZS50eXBlICYgX3R5cGVzLlRva2VuVHlwZS5JU19LRVlXT1JEKSkpIHtcbiAgICAgIC8vIGBpbXBvcnQge3R5cGUgZm9vYFxuICAgICAgX2V4cHJlc3Npb24ucGFyc2VJZGVudGlmaWVyLmNhbGwodm9pZCAwLCApO1xuICAgIH1cbiAgICBpZiAoX3V0aWwuZWF0Q29udGV4dHVhbC5jYWxsKHZvaWQgMCwgX2tleXdvcmRzLkNvbnRleHR1YWxLZXl3b3JkLl9hcykpIHtcbiAgICAgIF9leHByZXNzaW9uLnBhcnNlSWRlbnRpZmllci5jYWxsKHZvaWQgMCwgKTtcbiAgICB9XG4gIH1cbn0gZXhwb3J0cy5mbG93UGFyc2VJbXBvcnRTcGVjaWZpZXIgPSBmbG93UGFyc2VJbXBvcnRTcGVjaWZpZXI7XG5cbi8vIHBhcnNlIGZ1bmN0aW9uIHR5cGUgcGFyYW1ldGVycyAtIGZ1bmN0aW9uIGZvbzxUPigpIHt9XG4gZnVuY3Rpb24gZmxvd1N0YXJ0UGFyc2VGdW5jdGlvblBhcmFtcygpIHtcbiAgLy8gT3JpZ2luYWxseSB0aGlzIGNoZWNrZWQgaWYgdGhlIG1ldGhvZCBpcyBhIGdldHRlci9zZXR0ZXIsIGJ1dCBpZiBpdCB3YXMsIHdlJ2QgY3Jhc2ggc29vblxuICAvLyBhbnl3YXksIHNvIGRvbid0IHRyeSB0byBwcm9wYWdhdGUgdGhhdCBpbmZvcm1hdGlvbi5cbiAgaWYgKF9pbmRleC5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5sZXNzVGhhbikpIHtcbiAgICBjb25zdCBvbGRJc1R5cGUgPSBfaW5kZXgucHVzaFR5cGVDb250ZXh0LmNhbGwodm9pZCAwLCAwKTtcbiAgICBmbG93UGFyc2VUeXBlUGFyYW1ldGVyRGVjbGFyYXRpb24oKTtcbiAgICBfaW5kZXgucG9wVHlwZUNvbnRleHQuY2FsbCh2b2lkIDAsIG9sZElzVHlwZSk7XG4gIH1cbn0gZXhwb3J0cy5mbG93U3RhcnRQYXJzZUZ1bmN0aW9uUGFyYW1zID0gZmxvd1N0YXJ0UGFyc2VGdW5jdGlvblBhcmFtcztcblxuLy8gcGFyc2UgZmxvdyB0eXBlIGFubm90YXRpb25zIG9uIHZhcmlhYmxlIGRlY2xhcmF0b3IgaGVhZHMgLSBsZXQgZm9vOiBzdHJpbmcgPSBiYXJcbiBmdW5jdGlvbiBmbG93QWZ0ZXJQYXJzZVZhckhlYWQoKSB7XG4gIGlmIChfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuY29sb24pKSB7XG4gICAgZmxvd1BhcnNlVHlwZUFubm90YXRpb24oKTtcbiAgfVxufSBleHBvcnRzLmZsb3dBZnRlclBhcnNlVmFySGVhZCA9IGZsb3dBZnRlclBhcnNlVmFySGVhZDtcblxuLy8gcGFyc2UgdGhlIHJldHVybiB0eXBlIG9mIGFuIGFzeW5jIGFycm93IGZ1bmN0aW9uIC0gbGV0IGZvbyA9IChhc3luYyAoKTogbnVtYmVyID0+IHt9KTtcbiBmdW5jdGlvbiBmbG93U3RhcnRQYXJzZUFzeW5jQXJyb3dGcm9tQ2FsbEV4cHJlc3Npb24oKSB7XG4gIGlmIChfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuY29sb24pKSB7XG4gICAgY29uc3Qgb2xkTm9Bbm9uRnVuY3Rpb25UeXBlID0gX2Jhc2Uuc3RhdGUubm9Bbm9uRnVuY3Rpb25UeXBlO1xuICAgIF9iYXNlLnN0YXRlLm5vQW5vbkZ1bmN0aW9uVHlwZSA9IHRydWU7XG4gICAgZmxvd1BhcnNlVHlwZUFubm90YXRpb24oKTtcbiAgICBfYmFzZS5zdGF0ZS5ub0Fub25GdW5jdGlvblR5cGUgPSBvbGROb0Fub25GdW5jdGlvblR5cGU7XG4gIH1cbn0gZXhwb3J0cy5mbG93U3RhcnRQYXJzZUFzeW5jQXJyb3dGcm9tQ2FsbEV4cHJlc3Npb24gPSBmbG93U3RhcnRQYXJzZUFzeW5jQXJyb3dGcm9tQ2FsbEV4cHJlc3Npb247XG5cbi8vIFdlIG5lZWQgdG8gc3VwcG9ydCB0eXBlIHBhcmFtZXRlciBkZWNsYXJhdGlvbnMgZm9yIGFycm93IGZ1bmN0aW9ucy4gVGhpc1xuLy8gaXMgdHJpY2t5LiBUaGVyZSBhcmUgdGhyZWUgc2l0dWF0aW9ucyB3ZSBuZWVkIHRvIGhhbmRsZVxuLy9cbi8vIDEuIFRoaXMgaXMgZWl0aGVyIEpTWCBvciBhbiBhcnJvdyBmdW5jdGlvbi4gV2UnbGwgdHJ5IEpTWCBmaXJzdC4gSWYgdGhhdFxuLy8gICAgZmFpbHMsIHdlJ2xsIHRyeSBhbiBhcnJvdyBmdW5jdGlvbi4gSWYgdGhhdCBmYWlscywgd2UnbGwgdGhyb3cgdGhlIEpTWFxuLy8gICAgZXJyb3IuXG4vLyAyLiBUaGlzIGlzIGFuIGFycm93IGZ1bmN0aW9uLiBXZSdsbCBwYXJzZSB0aGUgdHlwZSBwYXJhbWV0ZXIgZGVjbGFyYXRpb24sXG4vLyAgICBwYXJzZSB0aGUgcmVzdCwgbWFrZSBzdXJlIHRoZSByZXN0IGlzIGFuIGFycm93IGZ1bmN0aW9uLCBhbmQgZ28gZnJvbVxuLy8gICAgdGhlcmVcbi8vIDMuIFRoaXMgaXMgbmVpdGhlci4gSnVzdCBjYWxsIHRoZSBzdXBlciBtZXRob2RcbiBmdW5jdGlvbiBmbG93UGFyc2VNYXliZUFzc2lnbihub0luLCBpc1dpdGhpblBhcmVucykge1xuICBpZiAoX2luZGV4Lm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmxlc3NUaGFuKSkge1xuICAgIGNvbnN0IHNuYXBzaG90ID0gX2Jhc2Uuc3RhdGUuc25hcHNob3QoKTtcbiAgICBsZXQgd2FzQXJyb3cgPSBfZXhwcmVzc2lvbi5iYXNlUGFyc2VNYXliZUFzc2lnbi5jYWxsKHZvaWQgMCwgbm9JbiwgaXNXaXRoaW5QYXJlbnMpO1xuICAgIGlmIChfYmFzZS5zdGF0ZS5lcnJvcikge1xuICAgICAgX2Jhc2Uuc3RhdGUucmVzdG9yZUZyb21TbmFwc2hvdChzbmFwc2hvdCk7XG4gICAgICBfYmFzZS5zdGF0ZS50eXBlID0gX3R5cGVzLlRva2VuVHlwZS50eXBlUGFyYW1ldGVyU3RhcnQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB3YXNBcnJvdztcbiAgICB9XG5cbiAgICBjb25zdCBvbGRJc1R5cGUgPSBfaW5kZXgucHVzaFR5cGVDb250ZXh0LmNhbGwodm9pZCAwLCAwKTtcbiAgICBmbG93UGFyc2VUeXBlUGFyYW1ldGVyRGVjbGFyYXRpb24oKTtcbiAgICBfaW5kZXgucG9wVHlwZUNvbnRleHQuY2FsbCh2b2lkIDAsIG9sZElzVHlwZSk7XG4gICAgd2FzQXJyb3cgPSBfZXhwcmVzc2lvbi5iYXNlUGFyc2VNYXliZUFzc2lnbi5jYWxsKHZvaWQgMCwgbm9JbiwgaXNXaXRoaW5QYXJlbnMpO1xuICAgIGlmICh3YXNBcnJvdykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIF91dGlsLnVuZXhwZWN0ZWQuY2FsbCh2b2lkIDAsICk7XG4gIH1cblxuICByZXR1cm4gX2V4cHJlc3Npb24uYmFzZVBhcnNlTWF5YmVBc3NpZ24uY2FsbCh2b2lkIDAsIG5vSW4sIGlzV2l0aGluUGFyZW5zKTtcbn0gZXhwb3J0cy5mbG93UGFyc2VNYXliZUFzc2lnbiA9IGZsb3dQYXJzZU1heWJlQXNzaWduO1xuXG4vLyBoYW5kbGUgcmV0dXJuIHR5cGVzIGZvciBhcnJvdyBmdW5jdGlvbnNcbiBmdW5jdGlvbiBmbG93UGFyc2VBcnJvdygpIHtcbiAgaWYgKF9pbmRleC5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5jb2xvbikpIHtcbiAgICBjb25zdCBvbGRJc1R5cGUgPSBfaW5kZXgucHVzaFR5cGVDb250ZXh0LmNhbGwodm9pZCAwLCAwKTtcbiAgICBjb25zdCBzbmFwc2hvdCA9IF9iYXNlLnN0YXRlLnNuYXBzaG90KCk7XG5cbiAgICBjb25zdCBvbGROb0Fub25GdW5jdGlvblR5cGUgPSBfYmFzZS5zdGF0ZS5ub0Fub25GdW5jdGlvblR5cGU7XG4gICAgX2Jhc2Uuc3RhdGUubm9Bbm9uRnVuY3Rpb25UeXBlID0gdHJ1ZTtcbiAgICBmbG93UGFyc2VUeXBlQW5kUHJlZGljYXRlSW5pdGlhbGlzZXIoKTtcbiAgICBfYmFzZS5zdGF0ZS5ub0Fub25GdW5jdGlvblR5cGUgPSBvbGROb0Fub25GdW5jdGlvblR5cGU7XG5cbiAgICBpZiAoX3V0aWwuY2FuSW5zZXJ0U2VtaWNvbG9uLmNhbGwodm9pZCAwLCApKSBfdXRpbC51bmV4cGVjdGVkLmNhbGwodm9pZCAwLCApO1xuICAgIGlmICghX2luZGV4Lm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmFycm93KSkgX3V0aWwudW5leHBlY3RlZC5jYWxsKHZvaWQgMCwgKTtcblxuICAgIGlmIChfYmFzZS5zdGF0ZS5lcnJvcikge1xuICAgICAgX2Jhc2Uuc3RhdGUucmVzdG9yZUZyb21TbmFwc2hvdChzbmFwc2hvdCk7XG4gICAgfVxuICAgIF9pbmRleC5wb3BUeXBlQ29udGV4dC5jYWxsKHZvaWQgMCwgb2xkSXNUeXBlKTtcbiAgfVxuICByZXR1cm4gX2luZGV4LmVhdC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5hcnJvdyk7XG59IGV4cG9ydHMuZmxvd1BhcnNlQXJyb3cgPSBmbG93UGFyc2VBcnJvdztcblxuIGZ1bmN0aW9uIGZsb3dQYXJzZVN1YnNjcmlwdHMoc3RhcnRUb2tlbkluZGV4LCBub0NhbGxzID0gZmFsc2UpIHtcbiAgaWYgKFxuICAgIF9iYXNlLnN0YXRlLnRva2Vuc1tfYmFzZS5zdGF0ZS50b2tlbnMubGVuZ3RoIC0gMV0uY29udGV4dHVhbEtleXdvcmQgPT09IF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fYXN5bmMgJiZcbiAgICBfaW5kZXgubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUubGVzc1RoYW4pXG4gICkge1xuICAgIGNvbnN0IHNuYXBzaG90ID0gX2Jhc2Uuc3RhdGUuc25hcHNob3QoKTtcbiAgICBjb25zdCB3YXNBcnJvdyA9IHBhcnNlQXN5bmNBcnJvd1dpdGhUeXBlUGFyYW1ldGVycygpO1xuICAgIGlmICh3YXNBcnJvdyAmJiAhX2Jhc2Uuc3RhdGUuZXJyb3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgX2Jhc2Uuc3RhdGUucmVzdG9yZUZyb21TbmFwc2hvdChzbmFwc2hvdCk7XG4gIH1cblxuICBfZXhwcmVzc2lvbi5iYXNlUGFyc2VTdWJzY3JpcHRzLmNhbGwodm9pZCAwLCBzdGFydFRva2VuSW5kZXgsIG5vQ2FsbHMpO1xufSBleHBvcnRzLmZsb3dQYXJzZVN1YnNjcmlwdHMgPSBmbG93UGFyc2VTdWJzY3JpcHRzO1xuXG4vLyBSZXR1cm5zIHRydWUgaWYgdGhlcmUgd2FzIGFuIGFycm93IGZ1bmN0aW9uIGhlcmUuXG5mdW5jdGlvbiBwYXJzZUFzeW5jQXJyb3dXaXRoVHlwZVBhcmFtZXRlcnMoKSB7XG4gIF9iYXNlLnN0YXRlLnNjb3BlRGVwdGgrKztcbiAgY29uc3Qgc3RhcnRUb2tlbkluZGV4ID0gX2Jhc2Uuc3RhdGUudG9rZW5zLmxlbmd0aDtcbiAgX3N0YXRlbWVudC5wYXJzZUZ1bmN0aW9uUGFyYW1zLmNhbGwodm9pZCAwLCApO1xuICBpZiAoIV9leHByZXNzaW9uLnBhcnNlQXJyb3cuY2FsbCh2b2lkIDAsICkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgX2V4cHJlc3Npb24ucGFyc2VBcnJvd0V4cHJlc3Npb24uY2FsbCh2b2lkIDAsIHN0YXJ0VG9rZW5JbmRleCk7XG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBmbG93UGFyc2VFbnVtRGVjbGFyYXRpb24oKSB7XG4gIF91dGlsLmV4cGVjdENvbnRleHR1YWwuY2FsbCh2b2lkIDAsIF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fZW51bSk7XG4gIF9iYXNlLnN0YXRlLnRva2Vuc1tfYmFzZS5zdGF0ZS50b2tlbnMubGVuZ3RoIC0gMV0udHlwZSA9IF90eXBlcy5Ub2tlblR5cGUuX2VudW07XG4gIF9leHByZXNzaW9uLnBhcnNlSWRlbnRpZmllci5jYWxsKHZvaWQgMCwgKTtcbiAgZmxvd1BhcnNlRW51bUJvZHkoKTtcbn1cblxuZnVuY3Rpb24gZmxvd1BhcnNlRW51bUJvZHkoKSB7XG4gIGlmIChfdXRpbC5lYXRDb250ZXh0dWFsLmNhbGwodm9pZCAwLCBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX29mKSkge1xuICAgIF9pbmRleC5uZXh0LmNhbGwodm9pZCAwLCApO1xuICB9XG4gIF91dGlsLmV4cGVjdC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5icmFjZUwpO1xuICBmbG93UGFyc2VFbnVtTWVtYmVycygpO1xuICBfdXRpbC5leHBlY3QuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuYnJhY2VSKTtcbn1cblxuZnVuY3Rpb24gZmxvd1BhcnNlRW51bU1lbWJlcnMoKSB7XG4gIHdoaWxlICghX2luZGV4Lm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmJyYWNlUikgJiYgIV9iYXNlLnN0YXRlLmVycm9yKSB7XG4gICAgaWYgKF9pbmRleC5lYXQuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuZWxsaXBzaXMpKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgZmxvd1BhcnNlRW51bU1lbWJlcigpO1xuICAgIGlmICghX2luZGV4Lm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmJyYWNlUikpIHtcbiAgICAgIF91dGlsLmV4cGVjdC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5jb21tYSk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGZsb3dQYXJzZUVudW1NZW1iZXIoKSB7XG4gIF9leHByZXNzaW9uLnBhcnNlSWRlbnRpZmllci5jYWxsKHZvaWQgMCwgKTtcbiAgaWYgKF9pbmRleC5lYXQuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuZXEpKSB7XG4gICAgLy8gRmxvdyBlbnVtIHZhbHVlcyBhcmUgYWx3YXlzIGp1c3Qgb25lIHRva2VuIChhIHN0cmluZywgbnVtYmVyLCBvciBib29sZWFuIGxpdGVyYWwpLlxuICAgIF9pbmRleC5uZXh0LmNhbGwodm9pZCAwLCApO1xuICB9XG59XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7dmFsdWU6IHRydWV9KTsvKiBlc2xpbnQgbWF4LWxlbjogMCAqL1xuXG52YXIgX2luZGV4ID0gcmVxdWlyZSgnLi4vaW5kZXgnKTtcblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxudmFyIF9mbG93ID0gcmVxdWlyZSgnLi4vcGx1Z2lucy9mbG93Jyk7XG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG52YXIgX3R5cGVzY3JpcHQgPSByZXF1aXJlKCcuLi9wbHVnaW5zL3R5cGVzY3JpcHQnKTtcblxuXG5cblxuXG5cblxuXG5cblxuXG5cbnZhciBfdG9rZW5pemVyID0gcmVxdWlyZSgnLi4vdG9rZW5pemVyJyk7XG52YXIgX2tleXdvcmRzID0gcmVxdWlyZSgnLi4vdG9rZW5pemVyL2tleXdvcmRzJyk7XG52YXIgX3N0YXRlID0gcmVxdWlyZSgnLi4vdG9rZW5pemVyL3N0YXRlJyk7XG52YXIgX3R5cGVzID0gcmVxdWlyZSgnLi4vdG9rZW5pemVyL3R5cGVzJyk7XG52YXIgX2NoYXJjb2RlcyA9IHJlcXVpcmUoJy4uL3V0aWwvY2hhcmNvZGVzJyk7XG52YXIgX2Jhc2UgPSByZXF1aXJlKCcuL2Jhc2UnKTtcblxuXG5cblxuXG5cblxuXG5cblxuXG5cbnZhciBfZXhwcmVzc2lvbiA9IHJlcXVpcmUoJy4vZXhwcmVzc2lvbicpO1xuXG5cblxuXG5cbnZhciBfbHZhbCA9IHJlcXVpcmUoJy4vbHZhbCcpO1xuXG5cblxuXG5cblxuXG5cblxuXG5cblxudmFyIF91dGlsID0gcmVxdWlyZSgnLi91dGlsJyk7XG5cbiBmdW5jdGlvbiBwYXJzZVRvcExldmVsKCkge1xuICBwYXJzZUJsb2NrQm9keShfdHlwZXMuVG9rZW5UeXBlLmVvZik7XG4gIF9iYXNlLnN0YXRlLnNjb3Blcy5wdXNoKG5ldyAoMCwgX3N0YXRlLlNjb3BlKSgwLCBfYmFzZS5zdGF0ZS50b2tlbnMubGVuZ3RoLCB0cnVlKSk7XG4gIGlmIChfYmFzZS5zdGF0ZS5zY29wZURlcHRoICE9PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHNjb3BlIGRlcHRoIGF0IGVuZCBvZiBmaWxlOiAke19iYXNlLnN0YXRlLnNjb3BlRGVwdGh9YCk7XG4gIH1cbiAgcmV0dXJuIG5ldyAoMCwgX2luZGV4LkZpbGUpKF9iYXNlLnN0YXRlLnRva2VucywgX2Jhc2Uuc3RhdGUuc2NvcGVzKTtcbn0gZXhwb3J0cy5wYXJzZVRvcExldmVsID0gcGFyc2VUb3BMZXZlbDtcblxuLy8gUGFyc2UgYSBzaW5nbGUgc3RhdGVtZW50LlxuLy9cbi8vIElmIGV4cGVjdGluZyBhIHN0YXRlbWVudCBhbmQgZmluZGluZyBhIHNsYXNoIG9wZXJhdG9yLCBwYXJzZSBhXG4vLyByZWd1bGFyIGV4cHJlc3Npb24gbGl0ZXJhbC4gVGhpcyBpcyB0byBoYW5kbGUgY2FzZXMgbGlrZVxuLy8gYGlmIChmb28pIC9ibGFoLy5leGVjKGZvbylgLCB3aGVyZSBsb29raW5nIGF0IHRoZSBwcmV2aW91cyB0b2tlblxuLy8gZG9lcyBub3QgaGVscC5cblxuIGZ1bmN0aW9uIHBhcnNlU3RhdGVtZW50KGRlY2xhcmF0aW9uKSB7XG4gIGlmIChfYmFzZS5pc0Zsb3dFbmFibGVkKSB7XG4gICAgaWYgKF9mbG93LmZsb3dUcnlQYXJzZVN0YXRlbWVudC5jYWxsKHZvaWQgMCwgKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuICBpZiAoX3Rva2VuaXplci5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5hdCkpIHtcbiAgICBwYXJzZURlY29yYXRvcnMoKTtcbiAgfVxuICBwYXJzZVN0YXRlbWVudENvbnRlbnQoZGVjbGFyYXRpb24pO1xufSBleHBvcnRzLnBhcnNlU3RhdGVtZW50ID0gcGFyc2VTdGF0ZW1lbnQ7XG5cbmZ1bmN0aW9uIHBhcnNlU3RhdGVtZW50Q29udGVudChkZWNsYXJhdGlvbikge1xuICBpZiAoX2Jhc2UuaXNUeXBlU2NyaXB0RW5hYmxlZCkge1xuICAgIGlmIChfdHlwZXNjcmlwdC50c1RyeVBhcnNlU3RhdGVtZW50Q29udGVudC5jYWxsKHZvaWQgMCwgKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHN0YXJ0dHlwZSA9IF9iYXNlLnN0YXRlLnR5cGU7XG5cbiAgLy8gTW9zdCB0eXBlcyBvZiBzdGF0ZW1lbnRzIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBrZXl3b3JkIHRoZXlcbiAgLy8gc3RhcnQgd2l0aC4gTWFueSBhcmUgdHJpdmlhbCB0byBwYXJzZSwgc29tZSByZXF1aXJlIGEgYml0IG9mXG4gIC8vIGNvbXBsZXhpdHkuXG5cbiAgc3dpdGNoIChzdGFydHR5cGUpIHtcbiAgICBjYXNlIF90eXBlcy5Ub2tlblR5cGUuX2JyZWFrOlxuICAgIGNhc2UgX3R5cGVzLlRva2VuVHlwZS5fY29udGludWU6XG4gICAgICBwYXJzZUJyZWFrQ29udGludWVTdGF0ZW1lbnQoKTtcbiAgICAgIHJldHVybjtcbiAgICBjYXNlIF90eXBlcy5Ub2tlblR5cGUuX2RlYnVnZ2VyOlxuICAgICAgcGFyc2VEZWJ1Z2dlclN0YXRlbWVudCgpO1xuICAgICAgcmV0dXJuO1xuICAgIGNhc2UgX3R5cGVzLlRva2VuVHlwZS5fZG86XG4gICAgICBwYXJzZURvU3RhdGVtZW50KCk7XG4gICAgICByZXR1cm47XG4gICAgY2FzZSBfdHlwZXMuVG9rZW5UeXBlLl9mb3I6XG4gICAgICBwYXJzZUZvclN0YXRlbWVudCgpO1xuICAgICAgcmV0dXJuO1xuICAgIGNhc2UgX3R5cGVzLlRva2VuVHlwZS5fZnVuY3Rpb246XG4gICAgICBpZiAoX3Rva2VuaXplci5sb29rYWhlYWRUeXBlLmNhbGwodm9pZCAwLCApID09PSBfdHlwZXMuVG9rZW5UeXBlLmRvdCkgYnJlYWs7XG4gICAgICBpZiAoIWRlY2xhcmF0aW9uKSBfdXRpbC51bmV4cGVjdGVkLmNhbGwodm9pZCAwLCApO1xuICAgICAgcGFyc2VGdW5jdGlvblN0YXRlbWVudCgpO1xuICAgICAgcmV0dXJuO1xuXG4gICAgY2FzZSBfdHlwZXMuVG9rZW5UeXBlLl9jbGFzczpcbiAgICAgIGlmICghZGVjbGFyYXRpb24pIF91dGlsLnVuZXhwZWN0ZWQuY2FsbCh2b2lkIDAsICk7XG4gICAgICBwYXJzZUNsYXNzKHRydWUpO1xuICAgICAgcmV0dXJuO1xuXG4gICAgY2FzZSBfdHlwZXMuVG9rZW5UeXBlLl9pZjpcbiAgICAgIHBhcnNlSWZTdGF0ZW1lbnQoKTtcbiAgICAgIHJldHVybjtcbiAgICBjYXNlIF90eXBlcy5Ub2tlblR5cGUuX3JldHVybjpcbiAgICAgIHBhcnNlUmV0dXJuU3RhdGVtZW50KCk7XG4gICAgICByZXR1cm47XG4gICAgY2FzZSBfdHlwZXMuVG9rZW5UeXBlLl9zd2l0Y2g6XG4gICAgICBwYXJzZVN3aXRjaFN0YXRlbWVudCgpO1xuICAgICAgcmV0dXJuO1xuICAgIGNhc2UgX3R5cGVzLlRva2VuVHlwZS5fdGhyb3c6XG4gICAgICBwYXJzZVRocm93U3RhdGVtZW50KCk7XG4gICAgICByZXR1cm47XG4gICAgY2FzZSBfdHlwZXMuVG9rZW5UeXBlLl90cnk6XG4gICAgICBwYXJzZVRyeVN0YXRlbWVudCgpO1xuICAgICAgcmV0dXJuO1xuXG4gICAgY2FzZSBfdHlwZXMuVG9rZW5UeXBlLl9sZXQ6XG4gICAgY2FzZSBfdHlwZXMuVG9rZW5UeXBlLl9jb25zdDpcbiAgICAgIGlmICghZGVjbGFyYXRpb24pIF91dGlsLnVuZXhwZWN0ZWQuY2FsbCh2b2lkIDAsICk7IC8vIE5PVEU6IGZhbGxzIHRocm91Z2ggdG8gX3ZhclxuXG4gICAgY2FzZSBfdHlwZXMuVG9rZW5UeXBlLl92YXI6XG4gICAgICBwYXJzZVZhclN0YXRlbWVudChzdGFydHR5cGUgIT09IF90eXBlcy5Ub2tlblR5cGUuX3Zhcik7XG4gICAgICByZXR1cm47XG5cbiAgICBjYXNlIF90eXBlcy5Ub2tlblR5cGUuX3doaWxlOlxuICAgICAgcGFyc2VXaGlsZVN0YXRlbWVudCgpO1xuICAgICAgcmV0dXJuO1xuICAgIGNhc2UgX3R5cGVzLlRva2VuVHlwZS5icmFjZUw6XG4gICAgICBwYXJzZUJsb2NrKCk7XG4gICAgICByZXR1cm47XG4gICAgY2FzZSBfdHlwZXMuVG9rZW5UeXBlLnNlbWk6XG4gICAgICBwYXJzZUVtcHR5U3RhdGVtZW50KCk7XG4gICAgICByZXR1cm47XG4gICAgY2FzZSBfdHlwZXMuVG9rZW5UeXBlLl9leHBvcnQ6XG4gICAgY2FzZSBfdHlwZXMuVG9rZW5UeXBlLl9pbXBvcnQ6IHtcbiAgICAgIGNvbnN0IG5leHRUeXBlID0gX3Rva2VuaXplci5sb29rYWhlYWRUeXBlLmNhbGwodm9pZCAwLCApO1xuICAgICAgaWYgKG5leHRUeXBlID09PSBfdHlwZXMuVG9rZW5UeXBlLnBhcmVuTCB8fCBuZXh0VHlwZSA9PT0gX3R5cGVzLlRva2VuVHlwZS5kb3QpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBfdG9rZW5pemVyLm5leHQuY2FsbCh2b2lkIDAsICk7XG4gICAgICBpZiAoc3RhcnR0eXBlID09PSBfdHlwZXMuVG9rZW5UeXBlLl9pbXBvcnQpIHtcbiAgICAgICAgcGFyc2VJbXBvcnQoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBhcnNlRXhwb3J0KCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNhc2UgX3R5cGVzLlRva2VuVHlwZS5uYW1lOlxuICAgICAgaWYgKF9iYXNlLnN0YXRlLmNvbnRleHR1YWxLZXl3b3JkID09PSBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX2FzeW5jKSB7XG4gICAgICAgIGNvbnN0IGZ1bmN0aW9uU3RhcnQgPSBfYmFzZS5zdGF0ZS5zdGFydDtcbiAgICAgICAgLy8gcGVlayBhaGVhZCBhbmQgc2VlIGlmIG5leHQgdG9rZW4gaXMgYSBmdW5jdGlvblxuICAgICAgICBjb25zdCBzbmFwc2hvdCA9IF9iYXNlLnN0YXRlLnNuYXBzaG90KCk7XG4gICAgICAgIF90b2tlbml6ZXIubmV4dC5jYWxsKHZvaWQgMCwgKTtcbiAgICAgICAgaWYgKF90b2tlbml6ZXIubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuX2Z1bmN0aW9uKSAmJiAhX3V0aWwuY2FuSW5zZXJ0U2VtaWNvbG9uLmNhbGwodm9pZCAwLCApKSB7XG4gICAgICAgICAgX3V0aWwuZXhwZWN0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLl9mdW5jdGlvbik7XG4gICAgICAgICAgcGFyc2VGdW5jdGlvbihmdW5jdGlvblN0YXJ0LCB0cnVlKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgX2Jhc2Uuc3RhdGUucmVzdG9yZUZyb21TbmFwc2hvdChzbmFwc2hvdCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIF9iYXNlLnN0YXRlLmNvbnRleHR1YWxLZXl3b3JkID09PSBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX3VzaW5nICYmXG4gICAgICAgICFfdXRpbC5oYXNGb2xsb3dpbmdMaW5lQnJlYWsuY2FsbCh2b2lkIDAsICkgJiZcbiAgICAgICAgLy8gU3RhdGVtZW50cyBsaWtlIGB1c2luZ1swXWAgYW5kIGB1c2luZyBpbiBmb29gIGFyZW4ndCBhY3R1YWwgdXNpbmdcbiAgICAgICAgLy8gZGVjbGFyYXRpb25zLlxuICAgICAgICBfdG9rZW5pemVyLmxvb2thaGVhZFR5cGUuY2FsbCh2b2lkIDAsICkgPT09IF90eXBlcy5Ub2tlblR5cGUubmFtZVxuICAgICAgKSB7XG4gICAgICAgIHBhcnNlVmFyU3RhdGVtZW50KHRydWUpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9IGVsc2UgaWYgKHN0YXJ0c0F3YWl0VXNpbmcoKSkge1xuICAgICAgICBfdXRpbC5leHBlY3RDb250ZXh0dWFsLmNhbGwodm9pZCAwLCBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX2F3YWl0KTtcbiAgICAgICAgcGFyc2VWYXJTdGF0ZW1lbnQodHJ1ZSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICBkZWZhdWx0OlxuICAgICAgLy8gRG8gbm90aGluZy5cbiAgICAgIGJyZWFrO1xuICB9XG5cbiAgLy8gSWYgdGhlIHN0YXRlbWVudCBkb2VzIG5vdCBzdGFydCB3aXRoIGEgc3RhdGVtZW50IGtleXdvcmQgb3IgYVxuICAvLyBicmFjZSwgaXQncyBhbiBFeHByZXNzaW9uU3RhdGVtZW50IG9yIExhYmVsZWRTdGF0ZW1lbnQuIFdlXG4gIC8vIHNpbXBseSBzdGFydCBwYXJzaW5nIGFuIGV4cHJlc3Npb24sIGFuZCBhZnRlcndhcmRzLCBpZiB0aGVcbiAgLy8gbmV4dCB0b2tlbiBpcyBhIGNvbG9uIGFuZCB0aGUgZXhwcmVzc2lvbiB3YXMgYSBzaW1wbGVcbiAgLy8gSWRlbnRpZmllciBub2RlLCB3ZSBzd2l0Y2ggdG8gaW50ZXJwcmV0aW5nIGl0IGFzIGEgbGFiZWwuXG4gIGNvbnN0IGluaXRpYWxUb2tlbnNMZW5ndGggPSBfYmFzZS5zdGF0ZS50b2tlbnMubGVuZ3RoO1xuICBfZXhwcmVzc2lvbi5wYXJzZUV4cHJlc3Npb24uY2FsbCh2b2lkIDAsICk7XG4gIGxldCBzaW1wbGVOYW1lID0gbnVsbDtcbiAgaWYgKF9iYXNlLnN0YXRlLnRva2Vucy5sZW5ndGggPT09IGluaXRpYWxUb2tlbnNMZW5ndGggKyAxKSB7XG4gICAgY29uc3QgdG9rZW4gPSBfYmFzZS5zdGF0ZS50b2tlbnNbX2Jhc2Uuc3RhdGUudG9rZW5zLmxlbmd0aCAtIDFdO1xuICAgIGlmICh0b2tlbi50eXBlID09PSBfdHlwZXMuVG9rZW5UeXBlLm5hbWUpIHtcbiAgICAgIHNpbXBsZU5hbWUgPSB0b2tlbi5jb250ZXh0dWFsS2V5d29yZDtcbiAgICB9XG4gIH1cbiAgaWYgKHNpbXBsZU5hbWUgPT0gbnVsbCkge1xuICAgIF91dGlsLnNlbWljb2xvbi5jYWxsKHZvaWQgMCwgKTtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKF90b2tlbml6ZXIuZWF0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmNvbG9uKSkge1xuICAgIHBhcnNlTGFiZWxlZFN0YXRlbWVudCgpO1xuICB9IGVsc2Uge1xuICAgIC8vIFRoaXMgd2FzIGFuIGlkZW50aWZpZXIsIHNvIHdlIG1pZ2h0IHdhbnQgdG8gaGFuZGxlIGZsb3cvdHlwZXNjcmlwdC1zcGVjaWZpYyBjYXNlcy5cbiAgICBwYXJzZUlkZW50aWZpZXJTdGF0ZW1lbnQoc2ltcGxlTmFtZSk7XG4gIH1cbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgd2UncmUgcG9zaXRpb25lZCBhdCBhbiBgYXdhaXQgdXNpbmdgIGRlY2xhcmF0aW9uLlxuICpcbiAqIE5vdGUgdGhhdCB0aGlzIGNhbiBoYXBwZW4gZWl0aGVyIGluIHBsYWNlIG9mIGEgcmVndWxhciB2YXJpYWJsZSBkZWNsYXJhdGlvblxuICogb3IgaW4gYSBsb29wIGJvZHksIGFuZCBpbiBib3RoIHBsYWNlcywgdGhlcmUgYXJlIHNpbWlsYXItbG9va2luZyBjYXNlcyB3aGVyZVxuICogd2UgbmVlZCB0byByZXR1cm4gZmFsc2UuXG4gKlxuICogRXhhbXBsZXMgcmV0dXJuaW5nIHRydWU6XG4gKiBhd2FpdCB1c2luZyBmb28gPSBiYXIoKTtcbiAqIGZvciAoYXdhaXQgdXNpbmcgYSBvZiBiKSB7fVxuICpcbiAqIEV4YW1wbGVzIHJldHVybmluZyBmYWxzZTpcbiAqIGF3YWl0IHVzaW5nXG4gKiBhd2FpdCB1c2luZyArIDFcbiAqIGF3YWl0IHVzaW5nIGluc3RhbmNlb2YgVFxuICogZm9yIChhd2FpdCB1c2luZzs7KSB7fVxuICpcbiAqIEZvciBub3csIHdlIGVhcmx5IHJldHVybiBpZiB3ZSBkb24ndCBzZWUgYGF3YWl0YCwgdGhlbiBkbyBhIHNpbXBsZVxuICogYmFja3RyYWNraW5nLWJhc2VkIGxvb2thaGVhZCBmb3IgdGhlIGB1c2luZ2AgYW5kIGlkZW50aWZpZXIgdG9rZW5zLiBJbiB0aGVcbiAqIGZ1dHVyZSwgdGhpcyBjb3VsZCBiZSBvcHRpbWl6ZWQgd2l0aCBhIGNoYXJhY3Rlci1iYXNlZCBhcHByb2FjaC5cbiAqL1xuZnVuY3Rpb24gc3RhcnRzQXdhaXRVc2luZygpIHtcbiAgaWYgKCFfdXRpbC5pc0NvbnRleHR1YWwuY2FsbCh2b2lkIDAsIF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fYXdhaXQpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGNvbnN0IHNuYXBzaG90ID0gX2Jhc2Uuc3RhdGUuc25hcHNob3QoKTtcbiAgLy8gYXdhaXRcbiAgX3Rva2VuaXplci5uZXh0LmNhbGwodm9pZCAwLCApO1xuICBpZiAoIV91dGlsLmlzQ29udGV4dHVhbC5jYWxsKHZvaWQgMCwgX2tleXdvcmRzLkNvbnRleHR1YWxLZXl3b3JkLl91c2luZykgfHwgX3V0aWwuaGFzUHJlY2VkaW5nTGluZUJyZWFrLmNhbGwodm9pZCAwLCApKSB7XG4gICAgX2Jhc2Uuc3RhdGUucmVzdG9yZUZyb21TbmFwc2hvdChzbmFwc2hvdCk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIC8vIHVzaW5nXG4gIF90b2tlbml6ZXIubmV4dC5jYWxsKHZvaWQgMCwgKTtcbiAgaWYgKCFfdG9rZW5pemVyLm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLm5hbWUpIHx8IF91dGlsLmhhc1ByZWNlZGluZ0xpbmVCcmVhay5jYWxsKHZvaWQgMCwgKSkge1xuICAgIF9iYXNlLnN0YXRlLnJlc3RvcmVGcm9tU25hcHNob3Qoc25hcHNob3QpO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBfYmFzZS5zdGF0ZS5yZXN0b3JlRnJvbVNuYXBzaG90KHNuYXBzaG90KTtcbiAgcmV0dXJuIHRydWU7XG59XG5cbiBmdW5jdGlvbiBwYXJzZURlY29yYXRvcnMoKSB7XG4gIHdoaWxlIChfdG9rZW5pemVyLm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmF0KSkge1xuICAgIHBhcnNlRGVjb3JhdG9yKCk7XG4gIH1cbn0gZXhwb3J0cy5wYXJzZURlY29yYXRvcnMgPSBwYXJzZURlY29yYXRvcnM7XG5cbmZ1bmN0aW9uIHBhcnNlRGVjb3JhdG9yKCkge1xuICBfdG9rZW5pemVyLm5leHQuY2FsbCh2b2lkIDAsICk7XG4gIGlmIChfdG9rZW5pemVyLmVhdC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5wYXJlbkwpKSB7XG4gICAgX2V4cHJlc3Npb24ucGFyc2VFeHByZXNzaW9uLmNhbGwodm9pZCAwLCApO1xuICAgIF91dGlsLmV4cGVjdC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5wYXJlblIpO1xuICB9IGVsc2Uge1xuICAgIF9leHByZXNzaW9uLnBhcnNlSWRlbnRpZmllci5jYWxsKHZvaWQgMCwgKTtcbiAgICB3aGlsZSAoX3Rva2VuaXplci5lYXQuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuZG90KSkge1xuICAgICAgX2V4cHJlc3Npb24ucGFyc2VJZGVudGlmaWVyLmNhbGwodm9pZCAwLCApO1xuICAgIH1cbiAgICBwYXJzZU1heWJlRGVjb3JhdG9yQXJndW1lbnRzKCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gcGFyc2VNYXliZURlY29yYXRvckFyZ3VtZW50cygpIHtcbiAgaWYgKF9iYXNlLmlzVHlwZVNjcmlwdEVuYWJsZWQpIHtcbiAgICBfdHlwZXNjcmlwdC50c1BhcnNlTWF5YmVEZWNvcmF0b3JBcmd1bWVudHMuY2FsbCh2b2lkIDAsICk7XG4gIH0gZWxzZSB7XG4gICAgYmFzZVBhcnNlTWF5YmVEZWNvcmF0b3JBcmd1bWVudHMoKTtcbiAgfVxufVxuXG4gZnVuY3Rpb24gYmFzZVBhcnNlTWF5YmVEZWNvcmF0b3JBcmd1bWVudHMoKSB7XG4gIGlmIChfdG9rZW5pemVyLmVhdC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5wYXJlbkwpKSB7XG4gICAgX2V4cHJlc3Npb24ucGFyc2VDYWxsRXhwcmVzc2lvbkFyZ3VtZW50cy5jYWxsKHZvaWQgMCwgKTtcbiAgfVxufSBleHBvcnRzLmJhc2VQYXJzZU1heWJlRGVjb3JhdG9yQXJndW1lbnRzID0gYmFzZVBhcnNlTWF5YmVEZWNvcmF0b3JBcmd1bWVudHM7XG5cbmZ1bmN0aW9uIHBhcnNlQnJlYWtDb250aW51ZVN0YXRlbWVudCgpIHtcbiAgX3Rva2VuaXplci5uZXh0LmNhbGwodm9pZCAwLCApO1xuICBpZiAoIV91dGlsLmlzTGluZVRlcm1pbmF0b3IuY2FsbCh2b2lkIDAsICkpIHtcbiAgICBfZXhwcmVzc2lvbi5wYXJzZUlkZW50aWZpZXIuY2FsbCh2b2lkIDAsICk7XG4gICAgX3V0aWwuc2VtaWNvbG9uLmNhbGwodm9pZCAwLCApO1xuICB9XG59XG5cbmZ1bmN0aW9uIHBhcnNlRGVidWdnZXJTdGF0ZW1lbnQoKSB7XG4gIF90b2tlbml6ZXIubmV4dC5jYWxsKHZvaWQgMCwgKTtcbiAgX3V0aWwuc2VtaWNvbG9uLmNhbGwodm9pZCAwLCApO1xufVxuXG5mdW5jdGlvbiBwYXJzZURvU3RhdGVtZW50KCkge1xuICBfdG9rZW5pemVyLm5leHQuY2FsbCh2b2lkIDAsICk7XG4gIHBhcnNlU3RhdGVtZW50KGZhbHNlKTtcbiAgX3V0aWwuZXhwZWN0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLl93aGlsZSk7XG4gIF9leHByZXNzaW9uLnBhcnNlUGFyZW5FeHByZXNzaW9uLmNhbGwodm9pZCAwLCApO1xuICBfdG9rZW5pemVyLmVhdC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5zZW1pKTtcbn1cblxuZnVuY3Rpb24gcGFyc2VGb3JTdGF0ZW1lbnQoKSB7XG4gIF9iYXNlLnN0YXRlLnNjb3BlRGVwdGgrKztcbiAgY29uc3Qgc3RhcnRUb2tlbkluZGV4ID0gX2Jhc2Uuc3RhdGUudG9rZW5zLmxlbmd0aDtcbiAgcGFyc2VBbWJpZ3VvdXNGb3JTdGF0ZW1lbnQoKTtcbiAgY29uc3QgZW5kVG9rZW5JbmRleCA9IF9iYXNlLnN0YXRlLnRva2Vucy5sZW5ndGg7XG4gIF9iYXNlLnN0YXRlLnNjb3Blcy5wdXNoKG5ldyAoMCwgX3N0YXRlLlNjb3BlKShzdGFydFRva2VuSW5kZXgsIGVuZFRva2VuSW5kZXgsIGZhbHNlKSk7XG4gIF9iYXNlLnN0YXRlLnNjb3BlRGVwdGgtLTtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgdGhpcyB0b2tlbiBpcyBhIGB1c2luZ2AgZGVjbGFyYXRpb24gKGV4cGxpY2l0IHJlc291cmNlXG4gKiBtYW5hZ2VtZW50KSBhcyBwYXJ0IG9mIGEgbG9vcC5cbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWV4cGxpY2l0LXJlc291cmNlLW1hbmFnZW1lbnRcbiAqL1xuZnVuY3Rpb24gaXNVc2luZ0luTG9vcCgpIHtcbiAgaWYgKCFfdXRpbC5pc0NvbnRleHR1YWwuY2FsbCh2b2lkIDAsIF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fdXNpbmcpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIC8vIFRoaXMgbXVzdCBiZSBgZm9yICh1c2luZyBvZmAsIHdoZXJlIGB1c2luZ2AgaXMgdGhlIG5hbWUgb2YgdGhlIGxvb3BcbiAgLy8gdmFyaWFibGUuXG4gIGlmIChfdXRpbC5pc0xvb2thaGVhZENvbnRleHR1YWwuY2FsbCh2b2lkIDAsIF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fb2YpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG4vLyBEaXNhbWJpZ3VhdGluZyBiZXR3ZWVuIGEgYGZvcmAgYW5kIGEgYGZvcmAvYGluYCBvciBgZm9yYC9gb2ZgXG4vLyBsb29wIGlzIG5vbi10cml2aWFsLiBCYXNpY2FsbHksIHdlIGhhdmUgdG8gcGFyc2UgdGhlIGluaXQgYHZhcmBcbi8vIHN0YXRlbWVudCBvciBleHByZXNzaW9uLCBkaXNhbGxvd2luZyB0aGUgYGluYCBvcGVyYXRvciAoc2VlXG4vLyB0aGUgc2Vjb25kIHBhcmFtZXRlciB0byBgcGFyc2VFeHByZXNzaW9uYCksIGFuZCB0aGVuIGNoZWNrXG4vLyB3aGV0aGVyIHRoZSBuZXh0IHRva2VuIGlzIGBpbmAgb3IgYG9mYC4gV2hlbiB0aGVyZSBpcyBubyBpbml0XG4vLyBwYXJ0IChzZW1pY29sb24gaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIG9wZW5pbmcgcGFyZW50aGVzaXMpLCBpdFxuLy8gaXMgYSByZWd1bGFyIGBmb3JgIGxvb3AuXG5mdW5jdGlvbiBwYXJzZUFtYmlndW91c0ZvclN0YXRlbWVudCgpIHtcbiAgX3Rva2VuaXplci5uZXh0LmNhbGwodm9pZCAwLCApO1xuXG4gIGxldCBmb3JBd2FpdCA9IGZhbHNlO1xuICBpZiAoX3V0aWwuaXNDb250ZXh0dWFsLmNhbGwodm9pZCAwLCBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX2F3YWl0KSkge1xuICAgIGZvckF3YWl0ID0gdHJ1ZTtcbiAgICBfdG9rZW5pemVyLm5leHQuY2FsbCh2b2lkIDAsICk7XG4gIH1cbiAgX3V0aWwuZXhwZWN0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLnBhcmVuTCk7XG5cbiAgaWYgKF90b2tlbml6ZXIubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuc2VtaSkpIHtcbiAgICBpZiAoZm9yQXdhaXQpIHtcbiAgICAgIF91dGlsLnVuZXhwZWN0ZWQuY2FsbCh2b2lkIDAsICk7XG4gICAgfVxuICAgIHBhcnNlRm9yKCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgaXNBd2FpdFVzaW5nID0gc3RhcnRzQXdhaXRVc2luZygpO1xuICBpZiAoaXNBd2FpdFVzaW5nIHx8IF90b2tlbml6ZXIubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuX3ZhcikgfHwgX3Rva2VuaXplci5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5fbGV0KSB8fCBfdG9rZW5pemVyLm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLl9jb25zdCkgfHwgaXNVc2luZ0luTG9vcCgpKSB7XG4gICAgaWYgKGlzQXdhaXRVc2luZykge1xuICAgICAgX3V0aWwuZXhwZWN0Q29udGV4dHVhbC5jYWxsKHZvaWQgMCwgX2tleXdvcmRzLkNvbnRleHR1YWxLZXl3b3JkLl9hd2FpdCk7XG4gICAgfVxuICAgIF90b2tlbml6ZXIubmV4dC5jYWxsKHZvaWQgMCwgKTtcbiAgICBwYXJzZVZhcih0cnVlLCBfYmFzZS5zdGF0ZS50eXBlICE9PSBfdHlwZXMuVG9rZW5UeXBlLl92YXIpO1xuICAgIGlmIChfdG9rZW5pemVyLm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLl9pbikgfHwgX3V0aWwuaXNDb250ZXh0dWFsLmNhbGwodm9pZCAwLCBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX29mKSkge1xuICAgICAgcGFyc2VGb3JJbihmb3JBd2FpdCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHBhcnNlRm9yKCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgX2V4cHJlc3Npb24ucGFyc2VFeHByZXNzaW9uLmNhbGwodm9pZCAwLCB0cnVlKTtcbiAgaWYgKF90b2tlbml6ZXIubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuX2luKSB8fCBfdXRpbC5pc0NvbnRleHR1YWwuY2FsbCh2b2lkIDAsIF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fb2YpKSB7XG4gICAgcGFyc2VGb3JJbihmb3JBd2FpdCk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChmb3JBd2FpdCkge1xuICAgIF91dGlsLnVuZXhwZWN0ZWQuY2FsbCh2b2lkIDAsICk7XG4gIH1cbiAgcGFyc2VGb3IoKTtcbn1cblxuZnVuY3Rpb24gcGFyc2VGdW5jdGlvblN0YXRlbWVudCgpIHtcbiAgY29uc3QgZnVuY3Rpb25TdGFydCA9IF9iYXNlLnN0YXRlLnN0YXJ0O1xuICBfdG9rZW5pemVyLm5leHQuY2FsbCh2b2lkIDAsICk7XG4gIHBhcnNlRnVuY3Rpb24oZnVuY3Rpb25TdGFydCwgdHJ1ZSk7XG59XG5cbmZ1bmN0aW9uIHBhcnNlSWZTdGF0ZW1lbnQoKSB7XG4gIF90b2tlbml6ZXIubmV4dC5jYWxsKHZvaWQgMCwgKTtcbiAgX2V4cHJlc3Npb24ucGFyc2VQYXJlbkV4cHJlc3Npb24uY2FsbCh2b2lkIDAsICk7XG4gIHBhcnNlU3RhdGVtZW50KGZhbHNlKTtcbiAgaWYgKF90b2tlbml6ZXIuZWF0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLl9lbHNlKSkge1xuICAgIHBhcnNlU3RhdGVtZW50KGZhbHNlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBwYXJzZVJldHVyblN0YXRlbWVudCgpIHtcbiAgX3Rva2VuaXplci5uZXh0LmNhbGwodm9pZCAwLCApO1xuXG4gIC8vIEluIGByZXR1cm5gIChhbmQgYGJyZWFrYC9gY29udGludWVgKSwgdGhlIGtleXdvcmRzIHdpdGhcbiAgLy8gb3B0aW9uYWwgYXJndW1lbnRzLCB3ZSBlYWdlcmx5IGxvb2sgZm9yIGEgc2VtaWNvbG9uIG9yIHRoZVxuICAvLyBwb3NzaWJpbGl0eSB0byBpbnNlcnQgb25lLlxuXG4gIGlmICghX3V0aWwuaXNMaW5lVGVybWluYXRvci5jYWxsKHZvaWQgMCwgKSkge1xuICAgIF9leHByZXNzaW9uLnBhcnNlRXhwcmVzc2lvbi5jYWxsKHZvaWQgMCwgKTtcbiAgICBfdXRpbC5zZW1pY29sb24uY2FsbCh2b2lkIDAsICk7XG4gIH1cbn1cblxuZnVuY3Rpb24gcGFyc2VTd2l0Y2hTdGF0ZW1lbnQoKSB7XG4gIF90b2tlbml6ZXIubmV4dC5jYWxsKHZvaWQgMCwgKTtcbiAgX2V4cHJlc3Npb24ucGFyc2VQYXJlbkV4cHJlc3Npb24uY2FsbCh2b2lkIDAsICk7XG4gIF9iYXNlLnN0YXRlLnNjb3BlRGVwdGgrKztcbiAgY29uc3Qgc3RhcnRUb2tlbkluZGV4ID0gX2Jhc2Uuc3RhdGUudG9rZW5zLmxlbmd0aDtcbiAgX3V0aWwuZXhwZWN0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmJyYWNlTCk7XG5cbiAgLy8gRG9uJ3QgYm90aGVyIHZhbGlkYXRpb247IGp1c3QgZ28gdGhyb3VnaCBhbnkgc2VxdWVuY2Ugb2YgY2FzZXMsIGRlZmF1bHRzLCBhbmQgc3RhdGVtZW50cy5cbiAgd2hpbGUgKCFfdG9rZW5pemVyLm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmJyYWNlUikgJiYgIV9iYXNlLnN0YXRlLmVycm9yKSB7XG4gICAgaWYgKF90b2tlbml6ZXIubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuX2Nhc2UpIHx8IF90b2tlbml6ZXIubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuX2RlZmF1bHQpKSB7XG4gICAgICBjb25zdCBpc0Nhc2UgPSBfdG9rZW5pemVyLm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLl9jYXNlKTtcbiAgICAgIF90b2tlbml6ZXIubmV4dC5jYWxsKHZvaWQgMCwgKTtcbiAgICAgIGlmIChpc0Nhc2UpIHtcbiAgICAgICAgX2V4cHJlc3Npb24ucGFyc2VFeHByZXNzaW9uLmNhbGwodm9pZCAwLCApO1xuICAgICAgfVxuICAgICAgX3V0aWwuZXhwZWN0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmNvbG9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcGFyc2VTdGF0ZW1lbnQodHJ1ZSk7XG4gICAgfVxuICB9XG4gIF90b2tlbml6ZXIubmV4dC5jYWxsKHZvaWQgMCwgKTsgLy8gQ2xvc2luZyBicmFjZVxuICBjb25zdCBlbmRUb2tlbkluZGV4ID0gX2Jhc2Uuc3RhdGUudG9rZW5zLmxlbmd0aDtcbiAgX2Jhc2Uuc3RhdGUuc2NvcGVzLnB1c2gobmV3ICgwLCBfc3RhdGUuU2NvcGUpKHN0YXJ0VG9rZW5JbmRleCwgZW5kVG9rZW5JbmRleCwgZmFsc2UpKTtcbiAgX2Jhc2Uuc3RhdGUuc2NvcGVEZXB0aC0tO1xufVxuXG5mdW5jdGlvbiBwYXJzZVRocm93U3RhdGVtZW50KCkge1xuICBfdG9rZW5pemVyLm5leHQuY2FsbCh2b2lkIDAsICk7XG4gIF9leHByZXNzaW9uLnBhcnNlRXhwcmVzc2lvbi5jYWxsKHZvaWQgMCwgKTtcbiAgX3V0aWwuc2VtaWNvbG9uLmNhbGwodm9pZCAwLCApO1xufVxuXG5mdW5jdGlvbiBwYXJzZUNhdGNoQ2xhdXNlUGFyYW0oKSB7XG4gIF9sdmFsLnBhcnNlQmluZGluZ0F0b20uY2FsbCh2b2lkIDAsIHRydWUgLyogaXNCbG9ja1Njb3BlICovKTtcblxuICBpZiAoX2Jhc2UuaXNUeXBlU2NyaXB0RW5hYmxlZCkge1xuICAgIF90eXBlc2NyaXB0LnRzVHJ5UGFyc2VUeXBlQW5ub3RhdGlvbi5jYWxsKHZvaWQgMCwgKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBwYXJzZVRyeVN0YXRlbWVudCgpIHtcbiAgX3Rva2VuaXplci5uZXh0LmNhbGwodm9pZCAwLCApO1xuXG4gIHBhcnNlQmxvY2soKTtcblxuICBpZiAoX3Rva2VuaXplci5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5fY2F0Y2gpKSB7XG4gICAgX3Rva2VuaXplci5uZXh0LmNhbGwodm9pZCAwLCApO1xuICAgIGxldCBjYXRjaEJpbmRpbmdTdGFydFRva2VuSW5kZXggPSBudWxsO1xuICAgIGlmIChfdG9rZW5pemVyLm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLnBhcmVuTCkpIHtcbiAgICAgIF9iYXNlLnN0YXRlLnNjb3BlRGVwdGgrKztcbiAgICAgIGNhdGNoQmluZGluZ1N0YXJ0VG9rZW5JbmRleCA9IF9iYXNlLnN0YXRlLnRva2Vucy5sZW5ndGg7XG4gICAgICBfdXRpbC5leHBlY3QuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUucGFyZW5MKTtcbiAgICAgIHBhcnNlQ2F0Y2hDbGF1c2VQYXJhbSgpO1xuICAgICAgX3V0aWwuZXhwZWN0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLnBhcmVuUik7XG4gICAgfVxuICAgIHBhcnNlQmxvY2soKTtcbiAgICBpZiAoY2F0Y2hCaW5kaW5nU3RhcnRUb2tlbkluZGV4ICE9IG51bGwpIHtcbiAgICAgIC8vIFdlIG5lZWQgYSBzcGVjaWFsIHNjb3BlIGZvciB0aGUgY2F0Y2ggYmluZGluZyB3aGljaCBpbmNsdWRlcyB0aGUgYmluZGluZyBpdHNlbGYgYW5kIHRoZVxuICAgICAgLy8gY2F0Y2ggYmxvY2suXG4gICAgICBjb25zdCBlbmRUb2tlbkluZGV4ID0gX2Jhc2Uuc3RhdGUudG9rZW5zLmxlbmd0aDtcbiAgICAgIF9iYXNlLnN0YXRlLnNjb3Blcy5wdXNoKG5ldyAoMCwgX3N0YXRlLlNjb3BlKShjYXRjaEJpbmRpbmdTdGFydFRva2VuSW5kZXgsIGVuZFRva2VuSW5kZXgsIGZhbHNlKSk7XG4gICAgICBfYmFzZS5zdGF0ZS5zY29wZURlcHRoLS07XG4gICAgfVxuICB9XG4gIGlmIChfdG9rZW5pemVyLmVhdC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5fZmluYWxseSkpIHtcbiAgICBwYXJzZUJsb2NrKCk7XG4gIH1cbn1cblxuIGZ1bmN0aW9uIHBhcnNlVmFyU3RhdGVtZW50KGlzQmxvY2tTY29wZSkge1xuICBfdG9rZW5pemVyLm5leHQuY2FsbCh2b2lkIDAsICk7XG4gIHBhcnNlVmFyKGZhbHNlLCBpc0Jsb2NrU2NvcGUpO1xuICBfdXRpbC5zZW1pY29sb24uY2FsbCh2b2lkIDAsICk7XG59IGV4cG9ydHMucGFyc2VWYXJTdGF0ZW1lbnQgPSBwYXJzZVZhclN0YXRlbWVudDtcblxuZnVuY3Rpb24gcGFyc2VXaGlsZVN0YXRlbWVudCgpIHtcbiAgX3Rva2VuaXplci5uZXh0LmNhbGwodm9pZCAwLCApO1xuICBfZXhwcmVzc2lvbi5wYXJzZVBhcmVuRXhwcmVzc2lvbi5jYWxsKHZvaWQgMCwgKTtcbiAgcGFyc2VTdGF0ZW1lbnQoZmFsc2UpO1xufVxuXG5mdW5jdGlvbiBwYXJzZUVtcHR5U3RhdGVtZW50KCkge1xuICBfdG9rZW5pemVyLm5leHQuY2FsbCh2b2lkIDAsICk7XG59XG5cbmZ1bmN0aW9uIHBhcnNlTGFiZWxlZFN0YXRlbWVudCgpIHtcbiAgcGFyc2VTdGF0ZW1lbnQodHJ1ZSk7XG59XG5cbi8qKlxuICogUGFyc2UgYSBzdGF0ZW1lbnQgc3RhcnRpbmcgd2l0aCBhbiBpZGVudGlmaWVyIG9mIHRoZSBnaXZlbiBuYW1lLiBTdWJjbGFzc2VzIG1hdGNoIG9uIHRoZSBuYW1lXG4gKiB0byBoYW5kbGUgc3RhdGVtZW50cyBsaWtlIFwiZGVjbGFyZVwiLlxuICovXG5mdW5jdGlvbiBwYXJzZUlkZW50aWZpZXJTdGF0ZW1lbnQoY29udGV4dHVhbEtleXdvcmQpIHtcbiAgaWYgKF9iYXNlLmlzVHlwZVNjcmlwdEVuYWJsZWQpIHtcbiAgICBfdHlwZXNjcmlwdC50c1BhcnNlSWRlbnRpZmllclN0YXRlbWVudC5jYWxsKHZvaWQgMCwgY29udGV4dHVhbEtleXdvcmQpO1xuICB9IGVsc2UgaWYgKF9iYXNlLmlzRmxvd0VuYWJsZWQpIHtcbiAgICBfZmxvdy5mbG93UGFyc2VJZGVudGlmaWVyU3RhdGVtZW50LmNhbGwodm9pZCAwLCBjb250ZXh0dWFsS2V5d29yZCk7XG4gIH0gZWxzZSB7XG4gICAgX3V0aWwuc2VtaWNvbG9uLmNhbGwodm9pZCAwLCApO1xuICB9XG59XG5cbi8vIFBhcnNlIGEgc2VtaWNvbG9uLWVuY2xvc2VkIGJsb2NrIG9mIHN0YXRlbWVudHMuXG4gZnVuY3Rpb24gcGFyc2VCbG9jayhpc0Z1bmN0aW9uU2NvcGUgPSBmYWxzZSwgY29udGV4dElkID0gMCkge1xuICBjb25zdCBzdGFydFRva2VuSW5kZXggPSBfYmFzZS5zdGF0ZS50b2tlbnMubGVuZ3RoO1xuICBfYmFzZS5zdGF0ZS5zY29wZURlcHRoKys7XG4gIF91dGlsLmV4cGVjdC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5icmFjZUwpO1xuICBpZiAoY29udGV4dElkKSB7XG4gICAgX2Jhc2Uuc3RhdGUudG9rZW5zW19iYXNlLnN0YXRlLnRva2Vucy5sZW5ndGggLSAxXS5jb250ZXh0SWQgPSBjb250ZXh0SWQ7XG4gIH1cbiAgcGFyc2VCbG9ja0JvZHkoX3R5cGVzLlRva2VuVHlwZS5icmFjZVIpO1xuICBpZiAoY29udGV4dElkKSB7XG4gICAgX2Jhc2Uuc3RhdGUudG9rZW5zW19iYXNlLnN0YXRlLnRva2Vucy5sZW5ndGggLSAxXS5jb250ZXh0SWQgPSBjb250ZXh0SWQ7XG4gIH1cbiAgY29uc3QgZW5kVG9rZW5JbmRleCA9IF9iYXNlLnN0YXRlLnRva2Vucy5sZW5ndGg7XG4gIF9iYXNlLnN0YXRlLnNjb3Blcy5wdXNoKG5ldyAoMCwgX3N0YXRlLlNjb3BlKShzdGFydFRva2VuSW5kZXgsIGVuZFRva2VuSW5kZXgsIGlzRnVuY3Rpb25TY29wZSkpO1xuICBfYmFzZS5zdGF0ZS5zY29wZURlcHRoLS07XG59IGV4cG9ydHMucGFyc2VCbG9jayA9IHBhcnNlQmxvY2s7XG5cbiBmdW5jdGlvbiBwYXJzZUJsb2NrQm9keShlbmQpIHtcbiAgd2hpbGUgKCFfdG9rZW5pemVyLmVhdC5jYWxsKHZvaWQgMCwgZW5kKSAmJiAhX2Jhc2Uuc3RhdGUuZXJyb3IpIHtcbiAgICBwYXJzZVN0YXRlbWVudCh0cnVlKTtcbiAgfVxufSBleHBvcnRzLnBhcnNlQmxvY2tCb2R5ID0gcGFyc2VCbG9ja0JvZHk7XG5cbi8vIFBhcnNlIGEgcmVndWxhciBgZm9yYCBsb29wLiBUaGUgZGlzYW1iaWd1YXRpb24gY29kZSBpblxuLy8gYHBhcnNlU3RhdGVtZW50YCB3aWxsIGFscmVhZHkgaGF2ZSBwYXJzZWQgdGhlIGluaXQgc3RhdGVtZW50IG9yXG4vLyBleHByZXNzaW9uLlxuXG5mdW5jdGlvbiBwYXJzZUZvcigpIHtcbiAgX3V0aWwuZXhwZWN0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLnNlbWkpO1xuICBpZiAoIV90b2tlbml6ZXIubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuc2VtaSkpIHtcbiAgICBfZXhwcmVzc2lvbi5wYXJzZUV4cHJlc3Npb24uY2FsbCh2b2lkIDAsICk7XG4gIH1cbiAgX3V0aWwuZXhwZWN0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLnNlbWkpO1xuICBpZiAoIV90b2tlbml6ZXIubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUucGFyZW5SKSkge1xuICAgIF9leHByZXNzaW9uLnBhcnNlRXhwcmVzc2lvbi5jYWxsKHZvaWQgMCwgKTtcbiAgfVxuICBfdXRpbC5leHBlY3QuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUucGFyZW5SKTtcbiAgcGFyc2VTdGF0ZW1lbnQoZmFsc2UpO1xufVxuXG4vLyBQYXJzZSBhIGBmb3JgL2BpbmAgYW5kIGBmb3JgL2BvZmAgbG9vcCwgd2hpY2ggYXJlIGFsbW9zdFxuLy8gc2FtZSBmcm9tIHBhcnNlcidzIHBlcnNwZWN0aXZlLlxuXG5mdW5jdGlvbiBwYXJzZUZvckluKGZvckF3YWl0KSB7XG4gIGlmIChmb3JBd2FpdCkge1xuICAgIF91dGlsLmVhdENvbnRleHR1YWwuY2FsbCh2b2lkIDAsIF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fb2YpO1xuICB9IGVsc2Uge1xuICAgIF90b2tlbml6ZXIubmV4dC5jYWxsKHZvaWQgMCwgKTtcbiAgfVxuICBfZXhwcmVzc2lvbi5wYXJzZUV4cHJlc3Npb24uY2FsbCh2b2lkIDAsICk7XG4gIF91dGlsLmV4cGVjdC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5wYXJlblIpO1xuICBwYXJzZVN0YXRlbWVudChmYWxzZSk7XG59XG5cbi8vIFBhcnNlIGEgbGlzdCBvZiB2YXJpYWJsZSBkZWNsYXJhdGlvbnMuXG5cbmZ1bmN0aW9uIHBhcnNlVmFyKGlzRm9yLCBpc0Jsb2NrU2NvcGUpIHtcbiAgd2hpbGUgKHRydWUpIHtcbiAgICBwYXJzZVZhckhlYWQoaXNCbG9ja1Njb3BlKTtcbiAgICBpZiAoX3Rva2VuaXplci5lYXQuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuZXEpKSB7XG4gICAgICBjb25zdCBlcUluZGV4ID0gX2Jhc2Uuc3RhdGUudG9rZW5zLmxlbmd0aCAtIDE7XG4gICAgICBfZXhwcmVzc2lvbi5wYXJzZU1heWJlQXNzaWduLmNhbGwodm9pZCAwLCBpc0Zvcik7XG4gICAgICBfYmFzZS5zdGF0ZS50b2tlbnNbZXFJbmRleF0ucmhzRW5kSW5kZXggPSBfYmFzZS5zdGF0ZS50b2tlbnMubGVuZ3RoO1xuICAgIH1cbiAgICBpZiAoIV90b2tlbml6ZXIuZWF0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmNvbW1hKSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHBhcnNlVmFySGVhZChpc0Jsb2NrU2NvcGUpIHtcbiAgX2x2YWwucGFyc2VCaW5kaW5nQXRvbS5jYWxsKHZvaWQgMCwgaXNCbG9ja1Njb3BlKTtcbiAgaWYgKF9iYXNlLmlzVHlwZVNjcmlwdEVuYWJsZWQpIHtcbiAgICBfdHlwZXNjcmlwdC50c0FmdGVyUGFyc2VWYXJIZWFkLmNhbGwodm9pZCAwLCApO1xuICB9IGVsc2UgaWYgKF9iYXNlLmlzRmxvd0VuYWJsZWQpIHtcbiAgICBfZmxvdy5mbG93QWZ0ZXJQYXJzZVZhckhlYWQuY2FsbCh2b2lkIDAsICk7XG4gIH1cbn1cblxuLy8gUGFyc2UgYSBmdW5jdGlvbiBkZWNsYXJhdGlvbiBvciBsaXRlcmFsIChkZXBlbmRpbmcgb24gdGhlXG4vLyBgaXNTdGF0ZW1lbnRgIHBhcmFtZXRlcikuXG5cbiBmdW5jdGlvbiBwYXJzZUZ1bmN0aW9uKFxuICBmdW5jdGlvblN0YXJ0LFxuICBpc1N0YXRlbWVudCxcbiAgb3B0aW9uYWxJZCA9IGZhbHNlLFxuKSB7XG4gIGlmIChfdG9rZW5pemVyLm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLnN0YXIpKSB7XG4gICAgX3Rva2VuaXplci5uZXh0LmNhbGwodm9pZCAwLCApO1xuICB9XG5cbiAgaWYgKGlzU3RhdGVtZW50ICYmICFvcHRpb25hbElkICYmICFfdG9rZW5pemVyLm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLm5hbWUpICYmICFfdG9rZW5pemVyLm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLl95aWVsZCkpIHtcbiAgICBfdXRpbC51bmV4cGVjdGVkLmNhbGwodm9pZCAwLCApO1xuICB9XG5cbiAgbGV0IG5hbWVTY29wZVN0YXJ0VG9rZW5JbmRleCA9IG51bGw7XG5cbiAgaWYgKF90b2tlbml6ZXIubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUubmFtZSkpIHtcbiAgICAvLyBFeHByZXNzaW9uLXN0eWxlIGZ1bmN0aW9ucyBzaG91bGQgbGltaXQgdGhlaXIgbmFtZSdzIHNjb3BlIHRvIHRoZSBmdW5jdGlvbiBib2R5LCBzbyB3ZSBtYWtlXG4gICAgLy8gYSBuZXcgZnVuY3Rpb24gc2NvcGUgdG8gZW5mb3JjZSB0aGF0LlxuICAgIGlmICghaXNTdGF0ZW1lbnQpIHtcbiAgICAgIG5hbWVTY29wZVN0YXJ0VG9rZW5JbmRleCA9IF9iYXNlLnN0YXRlLnRva2Vucy5sZW5ndGg7XG4gICAgICBfYmFzZS5zdGF0ZS5zY29wZURlcHRoKys7XG4gICAgfVxuICAgIF9sdmFsLnBhcnNlQmluZGluZ0lkZW50aWZpZXIuY2FsbCh2b2lkIDAsIGZhbHNlKTtcbiAgfVxuXG4gIGNvbnN0IHN0YXJ0VG9rZW5JbmRleCA9IF9iYXNlLnN0YXRlLnRva2Vucy5sZW5ndGg7XG4gIF9iYXNlLnN0YXRlLnNjb3BlRGVwdGgrKztcbiAgcGFyc2VGdW5jdGlvblBhcmFtcygpO1xuICBfZXhwcmVzc2lvbi5wYXJzZUZ1bmN0aW9uQm9keUFuZEZpbmlzaC5jYWxsKHZvaWQgMCwgZnVuY3Rpb25TdGFydCk7XG4gIGNvbnN0IGVuZFRva2VuSW5kZXggPSBfYmFzZS5zdGF0ZS50b2tlbnMubGVuZ3RoO1xuICAvLyBJbiBhZGRpdGlvbiB0byB0aGUgYmxvY2sgc2NvcGUgb2YgdGhlIGZ1bmN0aW9uIGJvZHksIHdlIG5lZWQgYSBzZXBhcmF0ZSBmdW5jdGlvbi1zdHlsZSBzY29wZVxuICAvLyB0aGF0IGluY2x1ZGVzIHRoZSBwYXJhbXMuXG4gIF9iYXNlLnN0YXRlLnNjb3Blcy5wdXNoKG5ldyAoMCwgX3N0YXRlLlNjb3BlKShzdGFydFRva2VuSW5kZXgsIGVuZFRva2VuSW5kZXgsIHRydWUpKTtcbiAgX2Jhc2Uuc3RhdGUuc2NvcGVEZXB0aC0tO1xuICBpZiAobmFtZVNjb3BlU3RhcnRUb2tlbkluZGV4ICE9PSBudWxsKSB7XG4gICAgX2Jhc2Uuc3RhdGUuc2NvcGVzLnB1c2gobmV3ICgwLCBfc3RhdGUuU2NvcGUpKG5hbWVTY29wZVN0YXJ0VG9rZW5JbmRleCwgZW5kVG9rZW5JbmRleCwgdHJ1ZSkpO1xuICAgIF9iYXNlLnN0YXRlLnNjb3BlRGVwdGgtLTtcbiAgfVxufSBleHBvcnRzLnBhcnNlRnVuY3Rpb24gPSBwYXJzZUZ1bmN0aW9uO1xuXG4gZnVuY3Rpb24gcGFyc2VGdW5jdGlvblBhcmFtcyhcbiAgYWxsb3dNb2RpZmllcnMgPSBmYWxzZSxcbiAgZnVuY0NvbnRleHRJZCA9IDAsXG4pIHtcbiAgaWYgKF9iYXNlLmlzVHlwZVNjcmlwdEVuYWJsZWQpIHtcbiAgICBfdHlwZXNjcmlwdC50c1N0YXJ0UGFyc2VGdW5jdGlvblBhcmFtcy5jYWxsKHZvaWQgMCwgKTtcbiAgfSBlbHNlIGlmIChfYmFzZS5pc0Zsb3dFbmFibGVkKSB7XG4gICAgX2Zsb3cuZmxvd1N0YXJ0UGFyc2VGdW5jdGlvblBhcmFtcy5jYWxsKHZvaWQgMCwgKTtcbiAgfVxuXG4gIF91dGlsLmV4cGVjdC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5wYXJlbkwpO1xuICBpZiAoZnVuY0NvbnRleHRJZCkge1xuICAgIF9iYXNlLnN0YXRlLnRva2Vuc1tfYmFzZS5zdGF0ZS50b2tlbnMubGVuZ3RoIC0gMV0uY29udGV4dElkID0gZnVuY0NvbnRleHRJZDtcbiAgfVxuICBfbHZhbC5wYXJzZUJpbmRpbmdMaXN0LmNhbGwodm9pZCAwLCBcbiAgICBfdHlwZXMuVG9rZW5UeXBlLnBhcmVuUixcbiAgICBmYWxzZSAvKiBpc0Jsb2NrU2NvcGUgKi8sXG4gICAgZmFsc2UgLyogYWxsb3dFbXB0eSAqLyxcbiAgICBhbGxvd01vZGlmaWVycyxcbiAgICBmdW5jQ29udGV4dElkLFxuICApO1xuICBpZiAoZnVuY0NvbnRleHRJZCkge1xuICAgIF9iYXNlLnN0YXRlLnRva2Vuc1tfYmFzZS5zdGF0ZS50b2tlbnMubGVuZ3RoIC0gMV0uY29udGV4dElkID0gZnVuY0NvbnRleHRJZDtcbiAgfVxufSBleHBvcnRzLnBhcnNlRnVuY3Rpb25QYXJhbXMgPSBwYXJzZUZ1bmN0aW9uUGFyYW1zO1xuXG4vLyBQYXJzZSBhIGNsYXNzIGRlY2xhcmF0aW9uIG9yIGxpdGVyYWwgKGRlcGVuZGluZyBvbiB0aGVcbi8vIGBpc1N0YXRlbWVudGAgcGFyYW1ldGVyKS5cblxuIGZ1bmN0aW9uIHBhcnNlQ2xhc3MoaXNTdGF0ZW1lbnQsIG9wdGlvbmFsSWQgPSBmYWxzZSkge1xuICAvLyBQdXQgYSBjb250ZXh0IElEIG9uIHRoZSBjbGFzcyBrZXl3b3JkLCB0aGUgb3Blbi1icmFjZSwgYW5kIHRoZSBjbG9zZS1icmFjZSwgc28gdGhhdCBsYXRlclxuICAvLyBjb2RlIGNhbiBlYXNpbHkgbmF2aWdhdGUgdG8gbWVhbmluZ2Z1bCBwb2ludHMgb24gdGhlIGNsYXNzLlxuICBjb25zdCBjb250ZXh0SWQgPSBfYmFzZS5nZXROZXh0Q29udGV4dElkLmNhbGwodm9pZCAwLCApO1xuXG4gIF90b2tlbml6ZXIubmV4dC5jYWxsKHZvaWQgMCwgKTtcbiAgX2Jhc2Uuc3RhdGUudG9rZW5zW19iYXNlLnN0YXRlLnRva2Vucy5sZW5ndGggLSAxXS5jb250ZXh0SWQgPSBjb250ZXh0SWQ7XG4gIF9iYXNlLnN0YXRlLnRva2Vuc1tfYmFzZS5zdGF0ZS50b2tlbnMubGVuZ3RoIC0gMV0uaXNFeHByZXNzaW9uID0gIWlzU3RhdGVtZW50O1xuICAvLyBMaWtlIHdpdGggZnVuY3Rpb25zLCB3ZSBkZWNsYXJlIGEgc3BlY2lhbCBcIm5hbWUgc2NvcGVcIiBmcm9tIHRoZSBzdGFydCBvZiB0aGUgbmFtZSB0byB0aGUgZW5kXG4gIC8vIG9mIHRoZSBjbGFzcywgYnV0IG9ubHkgd2l0aCBleHByZXNzaW9uLXN0eWxlIGNsYXNzZXMsIHRvIHJlcHJlc2VudCB0aGUgZmFjdCB0aGF0IHRoZSBuYW1lIGlzXG4gIC8vIGF2YWlsYWJsZSB0byB0aGUgYm9keSBvZiB0aGUgY2xhc3MgYnV0IG5vdCBhbiBvdXRlciBkZWNsYXJhdGlvbi5cbiAgbGV0IG5hbWVTY29wZVN0YXJ0VG9rZW5JbmRleCA9IG51bGw7XG4gIGlmICghaXNTdGF0ZW1lbnQpIHtcbiAgICBuYW1lU2NvcGVTdGFydFRva2VuSW5kZXggPSBfYmFzZS5zdGF0ZS50b2tlbnMubGVuZ3RoO1xuICAgIF9iYXNlLnN0YXRlLnNjb3BlRGVwdGgrKztcbiAgfVxuICBwYXJzZUNsYXNzSWQoaXNTdGF0ZW1lbnQsIG9wdGlvbmFsSWQpO1xuICBwYXJzZUNsYXNzU3VwZXIoKTtcbiAgY29uc3Qgb3BlbkJyYWNlSW5kZXggPSBfYmFzZS5zdGF0ZS50b2tlbnMubGVuZ3RoO1xuICBwYXJzZUNsYXNzQm9keShjb250ZXh0SWQpO1xuICBpZiAoX2Jhc2Uuc3RhdGUuZXJyb3IpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgX2Jhc2Uuc3RhdGUudG9rZW5zW29wZW5CcmFjZUluZGV4XS5jb250ZXh0SWQgPSBjb250ZXh0SWQ7XG4gIF9iYXNlLnN0YXRlLnRva2Vuc1tfYmFzZS5zdGF0ZS50b2tlbnMubGVuZ3RoIC0gMV0uY29udGV4dElkID0gY29udGV4dElkO1xuICBpZiAobmFtZVNjb3BlU3RhcnRUb2tlbkluZGV4ICE9PSBudWxsKSB7XG4gICAgY29uc3QgZW5kVG9rZW5JbmRleCA9IF9iYXNlLnN0YXRlLnRva2Vucy5sZW5ndGg7XG4gICAgX2Jhc2Uuc3RhdGUuc2NvcGVzLnB1c2gobmV3ICgwLCBfc3RhdGUuU2NvcGUpKG5hbWVTY29wZVN0YXJ0VG9rZW5JbmRleCwgZW5kVG9rZW5JbmRleCwgZmFsc2UpKTtcbiAgICBfYmFzZS5zdGF0ZS5zY29wZURlcHRoLS07XG4gIH1cbn0gZXhwb3J0cy5wYXJzZUNsYXNzID0gcGFyc2VDbGFzcztcblxuZnVuY3Rpb24gaXNDbGFzc1Byb3BlcnR5KCkge1xuICByZXR1cm4gX3Rva2VuaXplci5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5lcSkgfHwgX3Rva2VuaXplci5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5zZW1pKSB8fCBfdG9rZW5pemVyLm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmJyYWNlUikgfHwgX3Rva2VuaXplci5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5iYW5nKSB8fCBfdG9rZW5pemVyLm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmNvbG9uKTtcbn1cblxuZnVuY3Rpb24gaXNDbGFzc01ldGhvZCgpIHtcbiAgcmV0dXJuIF90b2tlbml6ZXIubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUucGFyZW5MKSB8fCBfdG9rZW5pemVyLm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmxlc3NUaGFuKTtcbn1cblxuZnVuY3Rpb24gcGFyc2VDbGFzc0JvZHkoY2xhc3NDb250ZXh0SWQpIHtcbiAgX3V0aWwuZXhwZWN0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmJyYWNlTCk7XG5cbiAgd2hpbGUgKCFfdG9rZW5pemVyLmVhdC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5icmFjZVIpICYmICFfYmFzZS5zdGF0ZS5lcnJvcikge1xuICAgIGlmIChfdG9rZW5pemVyLmVhdC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5zZW1pKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKF90b2tlbml6ZXIubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuYXQpKSB7XG4gICAgICBwYXJzZURlY29yYXRvcigpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGNvbnN0IG1lbWJlclN0YXJ0ID0gX2Jhc2Uuc3RhdGUuc3RhcnQ7XG4gICAgcGFyc2VDbGFzc01lbWJlcihtZW1iZXJTdGFydCwgY2xhc3NDb250ZXh0SWQpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHBhcnNlQ2xhc3NNZW1iZXIobWVtYmVyU3RhcnQsIGNsYXNzQ29udGV4dElkKSB7XG4gIGlmIChfYmFzZS5pc1R5cGVTY3JpcHRFbmFibGVkKSB7XG4gICAgX3R5cGVzY3JpcHQudHNQYXJzZU1vZGlmaWVycy5jYWxsKHZvaWQgMCwgW1xuICAgICAgX2tleXdvcmRzLkNvbnRleHR1YWxLZXl3b3JkLl9kZWNsYXJlLFxuICAgICAgX2tleXdvcmRzLkNvbnRleHR1YWxLZXl3b3JkLl9wdWJsaWMsXG4gICAgICBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX3Byb3RlY3RlZCxcbiAgICAgIF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fcHJpdmF0ZSxcbiAgICAgIF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fb3ZlcnJpZGUsXG4gICAgXSk7XG4gIH1cbiAgbGV0IGlzU3RhdGljID0gZmFsc2U7XG4gIGlmIChfdG9rZW5pemVyLm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLm5hbWUpICYmIF9iYXNlLnN0YXRlLmNvbnRleHR1YWxLZXl3b3JkID09PSBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX3N0YXRpYykge1xuICAgIF9leHByZXNzaW9uLnBhcnNlSWRlbnRpZmllci5jYWxsKHZvaWQgMCwgKTsgLy8gZWF0cyAnc3RhdGljJ1xuICAgIGlmIChpc0NsYXNzTWV0aG9kKCkpIHtcbiAgICAgIHBhcnNlQ2xhc3NNZXRob2QobWVtYmVyU3RhcnQsIC8qIGlzQ29uc3RydWN0b3IgKi8gZmFsc2UpO1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSBpZiAoaXNDbGFzc1Byb3BlcnR5KCkpIHtcbiAgICAgIHBhcnNlQ2xhc3NQcm9wZXJ0eSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBvdGhlcndpc2Ugc29tZXRoaW5nIHN0YXRpY1xuICAgIF9iYXNlLnN0YXRlLnRva2Vuc1tfYmFzZS5zdGF0ZS50b2tlbnMubGVuZ3RoIC0gMV0udHlwZSA9IF90eXBlcy5Ub2tlblR5cGUuX3N0YXRpYztcbiAgICBpc1N0YXRpYyA9IHRydWU7XG5cbiAgICBpZiAoX3Rva2VuaXplci5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5icmFjZUwpKSB7XG4gICAgICAvLyBUaGlzIGlzIGEgc3RhdGljIGJsb2NrLiBNYXJrIHRoZSB3b3JkIFwic3RhdGljXCIgd2l0aCB0aGUgY2xhc3MgY29udGV4dCBJRCBmb3IgY2xhc3MgZWxlbWVudFxuICAgICAgLy8gZGV0ZWN0aW9uIGFuZCBwYXJzZSBhcyBhIHJlZ3VsYXIgYmxvY2suXG4gICAgICBfYmFzZS5zdGF0ZS50b2tlbnNbX2Jhc2Uuc3RhdGUudG9rZW5zLmxlbmd0aCAtIDFdLmNvbnRleHRJZCA9IGNsYXNzQ29udGV4dElkO1xuICAgICAgcGFyc2VCbG9jaygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIHBhcnNlQ2xhc3NNZW1iZXJXaXRoSXNTdGF0aWMobWVtYmVyU3RhcnQsIGlzU3RhdGljLCBjbGFzc0NvbnRleHRJZCk7XG59XG5cbmZ1bmN0aW9uIHBhcnNlQ2xhc3NNZW1iZXJXaXRoSXNTdGF0aWMoXG4gIG1lbWJlclN0YXJ0LFxuICBpc1N0YXRpYyxcbiAgY2xhc3NDb250ZXh0SWQsXG4pIHtcbiAgaWYgKF9iYXNlLmlzVHlwZVNjcmlwdEVuYWJsZWQpIHtcbiAgICBpZiAoX3R5cGVzY3JpcHQudHNUcnlQYXJzZUNsYXNzTWVtYmVyV2l0aElzU3RhdGljLmNhbGwodm9pZCAwLCBpc1N0YXRpYykpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cbiAgaWYgKF90b2tlbml6ZXIuZWF0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLnN0YXIpKSB7XG4gICAgLy8gYSBnZW5lcmF0b3JcbiAgICBwYXJzZUNsYXNzUHJvcGVydHlOYW1lKGNsYXNzQ29udGV4dElkKTtcbiAgICBwYXJzZUNsYXNzTWV0aG9kKG1lbWJlclN0YXJ0LCAvKiBpc0NvbnN0cnVjdG9yICovIGZhbHNlKTtcbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBHZXQgdGhlIGlkZW50aWZpZXIgbmFtZSBzbyB3ZSBjYW4gdGVsbCBpZiBpdCdzIGFjdHVhbGx5IGEga2V5d29yZCBsaWtlIFwiYXN5bmNcIiwgXCJnZXRcIiwgb3JcbiAgLy8gXCJzZXRcIi5cbiAgcGFyc2VDbGFzc1Byb3BlcnR5TmFtZShjbGFzc0NvbnRleHRJZCk7XG4gIGxldCBpc0NvbnN0cnVjdG9yID0gZmFsc2U7XG4gIGNvbnN0IHRva2VuID0gX2Jhc2Uuc3RhdGUudG9rZW5zW19iYXNlLnN0YXRlLnRva2Vucy5sZW5ndGggLSAxXTtcbiAgLy8gV2UgYWxsb3cgXCJjb25zdHJ1Y3RvclwiIGFzIGVpdGhlciBhbiBpZGVudGlmaWVyIG9yIGEgc3RyaW5nLlxuICBpZiAodG9rZW4uY29udGV4dHVhbEtleXdvcmQgPT09IF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fY29uc3RydWN0b3IpIHtcbiAgICBpc0NvbnN0cnVjdG9yID0gdHJ1ZTtcbiAgfVxuICBwYXJzZVBvc3RNZW1iZXJOYW1lTW9kaWZpZXJzKCk7XG5cbiAgaWYgKGlzQ2xhc3NNZXRob2QoKSkge1xuICAgIHBhcnNlQ2xhc3NNZXRob2QobWVtYmVyU3RhcnQsIGlzQ29uc3RydWN0b3IpO1xuICB9IGVsc2UgaWYgKGlzQ2xhc3NQcm9wZXJ0eSgpKSB7XG4gICAgcGFyc2VDbGFzc1Byb3BlcnR5KCk7XG4gIH0gZWxzZSBpZiAodG9rZW4uY29udGV4dHVhbEtleXdvcmQgPT09IF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fYXN5bmMgJiYgIV91dGlsLmlzTGluZVRlcm1pbmF0b3IuY2FsbCh2b2lkIDAsICkpIHtcbiAgICBfYmFzZS5zdGF0ZS50b2tlbnNbX2Jhc2Uuc3RhdGUudG9rZW5zLmxlbmd0aCAtIDFdLnR5cGUgPSBfdHlwZXMuVG9rZW5UeXBlLl9hc3luYztcbiAgICAvLyBhbiBhc3luYyBtZXRob2RcbiAgICBjb25zdCBpc0dlbmVyYXRvciA9IF90b2tlbml6ZXIubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuc3Rhcik7XG4gICAgaWYgKGlzR2VuZXJhdG9yKSB7XG4gICAgICBfdG9rZW5pemVyLm5leHQuY2FsbCh2b2lkIDAsICk7XG4gICAgfVxuXG4gICAgLy8gVGhlIHNvLWNhbGxlZCBwYXJzZWQgbmFtZSB3b3VsZCBoYXZlIGJlZW4gXCJhc3luY1wiOiBnZXQgdGhlIHJlYWwgbmFtZS5cbiAgICBwYXJzZUNsYXNzUHJvcGVydHlOYW1lKGNsYXNzQ29udGV4dElkKTtcbiAgICBwYXJzZVBvc3RNZW1iZXJOYW1lTW9kaWZpZXJzKCk7XG4gICAgcGFyc2VDbGFzc01ldGhvZChtZW1iZXJTdGFydCwgZmFsc2UgLyogaXNDb25zdHJ1Y3RvciAqLyk7XG4gIH0gZWxzZSBpZiAoXG4gICAgKHRva2VuLmNvbnRleHR1YWxLZXl3b3JkID09PSBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX2dldCB8fFxuICAgICAgdG9rZW4uY29udGV4dHVhbEtleXdvcmQgPT09IF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fc2V0KSAmJlxuICAgICEoX3V0aWwuaXNMaW5lVGVybWluYXRvci5jYWxsKHZvaWQgMCwgKSAmJiBfdG9rZW5pemVyLm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLnN0YXIpKVxuICApIHtcbiAgICBpZiAodG9rZW4uY29udGV4dHVhbEtleXdvcmQgPT09IF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fZ2V0KSB7XG4gICAgICBfYmFzZS5zdGF0ZS50b2tlbnNbX2Jhc2Uuc3RhdGUudG9rZW5zLmxlbmd0aCAtIDFdLnR5cGUgPSBfdHlwZXMuVG9rZW5UeXBlLl9nZXQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIF9iYXNlLnN0YXRlLnRva2Vuc1tfYmFzZS5zdGF0ZS50b2tlbnMubGVuZ3RoIC0gMV0udHlwZSA9IF90eXBlcy5Ub2tlblR5cGUuX3NldDtcbiAgICB9XG4gICAgLy8gYGdldFxcbipgIGlzIGFuIHVuaW5pdGlhbGl6ZWQgcHJvcGVydHkgbmFtZWQgJ2dldCcgZm9sbG93ZWQgYnkgYSBnZW5lcmF0b3IuXG4gICAgLy8gYSBnZXR0ZXIgb3Igc2V0dGVyXG4gICAgLy8gVGhlIHNvLWNhbGxlZCBwYXJzZWQgbmFtZSB3b3VsZCBoYXZlIGJlZW4gXCJnZXQvc2V0XCI6IGdldCB0aGUgcmVhbCBuYW1lLlxuICAgIHBhcnNlQ2xhc3NQcm9wZXJ0eU5hbWUoY2xhc3NDb250ZXh0SWQpO1xuICAgIHBhcnNlQ2xhc3NNZXRob2QobWVtYmVyU3RhcnQsIC8qIGlzQ29uc3RydWN0b3IgKi8gZmFsc2UpO1xuICB9IGVsc2UgaWYgKHRva2VuLmNvbnRleHR1YWxLZXl3b3JkID09PSBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX2FjY2Vzc29yICYmICFfdXRpbC5pc0xpbmVUZXJtaW5hdG9yLmNhbGwodm9pZCAwLCApKSB7XG4gICAgcGFyc2VDbGFzc1Byb3BlcnR5TmFtZShjbGFzc0NvbnRleHRJZCk7XG4gICAgcGFyc2VDbGFzc1Byb3BlcnR5KCk7XG4gIH0gZWxzZSBpZiAoX3V0aWwuaXNMaW5lVGVybWluYXRvci5jYWxsKHZvaWQgMCwgKSkge1xuICAgIC8vIGFuIHVuaW5pdGlhbGl6ZWQgY2xhc3MgcHJvcGVydHkgKGR1ZSB0byBBU0ksIHNpbmNlIHdlIGRvbid0IG90aGVyd2lzZSByZWNvZ25pemUgdGhlIG5leHQgdG9rZW4pXG4gICAgcGFyc2VDbGFzc1Byb3BlcnR5KCk7XG4gIH0gZWxzZSB7XG4gICAgX3V0aWwudW5leHBlY3RlZC5jYWxsKHZvaWQgMCwgKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBwYXJzZUNsYXNzTWV0aG9kKGZ1bmN0aW9uU3RhcnQsIGlzQ29uc3RydWN0b3IpIHtcbiAgaWYgKF9iYXNlLmlzVHlwZVNjcmlwdEVuYWJsZWQpIHtcbiAgICBfdHlwZXNjcmlwdC50c1RyeVBhcnNlVHlwZVBhcmFtZXRlcnMuY2FsbCh2b2lkIDAsICk7XG4gIH0gZWxzZSBpZiAoX2Jhc2UuaXNGbG93RW5hYmxlZCkge1xuICAgIGlmIChfdG9rZW5pemVyLm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmxlc3NUaGFuKSkge1xuICAgICAgX2Zsb3cuZmxvd1BhcnNlVHlwZVBhcmFtZXRlckRlY2xhcmF0aW9uLmNhbGwodm9pZCAwLCApO1xuICAgIH1cbiAgfVxuICBfZXhwcmVzc2lvbi5wYXJzZU1ldGhvZC5jYWxsKHZvaWQgMCwgZnVuY3Rpb25TdGFydCwgaXNDb25zdHJ1Y3Rvcik7XG59XG5cbi8vIFJldHVybiB0aGUgbmFtZSBvZiB0aGUgY2xhc3MgcHJvcGVydHksIGlmIGl0IGlzIGEgc2ltcGxlIGlkZW50aWZpZXIuXG4gZnVuY3Rpb24gcGFyc2VDbGFzc1Byb3BlcnR5TmFtZShjbGFzc0NvbnRleHRJZCkge1xuICBfZXhwcmVzc2lvbi5wYXJzZVByb3BlcnR5TmFtZS5jYWxsKHZvaWQgMCwgY2xhc3NDb250ZXh0SWQpO1xufSBleHBvcnRzLnBhcnNlQ2xhc3NQcm9wZXJ0eU5hbWUgPSBwYXJzZUNsYXNzUHJvcGVydHlOYW1lO1xuXG4gZnVuY3Rpb24gcGFyc2VQb3N0TWVtYmVyTmFtZU1vZGlmaWVycygpIHtcbiAgaWYgKF9iYXNlLmlzVHlwZVNjcmlwdEVuYWJsZWQpIHtcbiAgICBjb25zdCBvbGRJc1R5cGUgPSBfdG9rZW5pemVyLnB1c2hUeXBlQ29udGV4dC5jYWxsKHZvaWQgMCwgMCk7XG4gICAgX3Rva2VuaXplci5lYXQuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUucXVlc3Rpb24pO1xuICAgIF90b2tlbml6ZXIucG9wVHlwZUNvbnRleHQuY2FsbCh2b2lkIDAsIG9sZElzVHlwZSk7XG4gIH1cbn0gZXhwb3J0cy5wYXJzZVBvc3RNZW1iZXJOYW1lTW9kaWZpZXJzID0gcGFyc2VQb3N0TWVtYmVyTmFtZU1vZGlmaWVycztcblxuIGZ1bmN0aW9uIHBhcnNlQ2xhc3NQcm9wZXJ0eSgpIHtcbiAgaWYgKF9iYXNlLmlzVHlwZVNjcmlwdEVuYWJsZWQpIHtcbiAgICBfdG9rZW5pemVyLmVhdFR5cGVUb2tlbi5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5iYW5nKTtcbiAgICBfdHlwZXNjcmlwdC50c1RyeVBhcnNlVHlwZUFubm90YXRpb24uY2FsbCh2b2lkIDAsICk7XG4gIH0gZWxzZSBpZiAoX2Jhc2UuaXNGbG93RW5hYmxlZCkge1xuICAgIGlmIChfdG9rZW5pemVyLm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmNvbG9uKSkge1xuICAgICAgX2Zsb3cuZmxvd1BhcnNlVHlwZUFubm90YXRpb24uY2FsbCh2b2lkIDAsICk7XG4gICAgfVxuICB9XG5cbiAgaWYgKF90b2tlbml6ZXIubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuZXEpKSB7XG4gICAgY29uc3QgZXF1YWxzVG9rZW5JbmRleCA9IF9iYXNlLnN0YXRlLnRva2Vucy5sZW5ndGg7XG4gICAgX3Rva2VuaXplci5uZXh0LmNhbGwodm9pZCAwLCApO1xuICAgIF9leHByZXNzaW9uLnBhcnNlTWF5YmVBc3NpZ24uY2FsbCh2b2lkIDAsICk7XG4gICAgX2Jhc2Uuc3RhdGUudG9rZW5zW2VxdWFsc1Rva2VuSW5kZXhdLnJoc0VuZEluZGV4ID0gX2Jhc2Uuc3RhdGUudG9rZW5zLmxlbmd0aDtcbiAgfVxuICBfdXRpbC5zZW1pY29sb24uY2FsbCh2b2lkIDAsICk7XG59IGV4cG9ydHMucGFyc2VDbGFzc1Byb3BlcnR5ID0gcGFyc2VDbGFzc1Byb3BlcnR5O1xuXG5mdW5jdGlvbiBwYXJzZUNsYXNzSWQoaXNTdGF0ZW1lbnQsIG9wdGlvbmFsSWQgPSBmYWxzZSkge1xuICBpZiAoXG4gICAgX2Jhc2UuaXNUeXBlU2NyaXB0RW5hYmxlZCAmJlxuICAgICghaXNTdGF0ZW1lbnQgfHwgb3B0aW9uYWxJZCkgJiZcbiAgICBfdXRpbC5pc0NvbnRleHR1YWwuY2FsbCh2b2lkIDAsIF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5faW1wbGVtZW50cylcbiAgKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKF90b2tlbml6ZXIubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUubmFtZSkpIHtcbiAgICBfbHZhbC5wYXJzZUJpbmRpbmdJZGVudGlmaWVyLmNhbGwodm9pZCAwLCB0cnVlKTtcbiAgfVxuXG4gIGlmIChfYmFzZS5pc1R5cGVTY3JpcHRFbmFibGVkKSB7XG4gICAgX3R5cGVzY3JpcHQudHNUcnlQYXJzZVR5cGVQYXJhbWV0ZXJzLmNhbGwodm9pZCAwLCApO1xuICB9IGVsc2UgaWYgKF9iYXNlLmlzRmxvd0VuYWJsZWQpIHtcbiAgICBpZiAoX3Rva2VuaXplci5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5sZXNzVGhhbikpIHtcbiAgICAgIF9mbG93LmZsb3dQYXJzZVR5cGVQYXJhbWV0ZXJEZWNsYXJhdGlvbi5jYWxsKHZvaWQgMCwgKTtcbiAgICB9XG4gIH1cbn1cblxuLy8gUmV0dXJucyB0cnVlIGlmIHRoZXJlIHdhcyBhIHN1cGVyY2xhc3MuXG5mdW5jdGlvbiBwYXJzZUNsYXNzU3VwZXIoKSB7XG4gIGxldCBoYXNTdXBlciA9IGZhbHNlO1xuICBpZiAoX3Rva2VuaXplci5lYXQuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuX2V4dGVuZHMpKSB7XG4gICAgX2V4cHJlc3Npb24ucGFyc2VFeHByU3Vic2NyaXB0cy5jYWxsKHZvaWQgMCwgKTtcbiAgICBoYXNTdXBlciA9IHRydWU7XG4gIH0gZWxzZSB7XG4gICAgaGFzU3VwZXIgPSBmYWxzZTtcbiAgfVxuICBpZiAoX2Jhc2UuaXNUeXBlU2NyaXB0RW5hYmxlZCkge1xuICAgIF90eXBlc2NyaXB0LnRzQWZ0ZXJQYXJzZUNsYXNzU3VwZXIuY2FsbCh2b2lkIDAsIGhhc1N1cGVyKTtcbiAgfSBlbHNlIGlmIChfYmFzZS5pc0Zsb3dFbmFibGVkKSB7XG4gICAgX2Zsb3cuZmxvd0FmdGVyUGFyc2VDbGFzc1N1cGVyLmNhbGwodm9pZCAwLCBoYXNTdXBlcik7XG4gIH1cbn1cblxuLy8gUGFyc2VzIG1vZHVsZSBleHBvcnQgZGVjbGFyYXRpb24uXG5cbiBmdW5jdGlvbiBwYXJzZUV4cG9ydCgpIHtcbiAgY29uc3QgZXhwb3J0SW5kZXggPSBfYmFzZS5zdGF0ZS50b2tlbnMubGVuZ3RoIC0gMTtcbiAgaWYgKF9iYXNlLmlzVHlwZVNjcmlwdEVuYWJsZWQpIHtcbiAgICBpZiAoX3R5cGVzY3JpcHQudHNUcnlQYXJzZUV4cG9ydC5jYWxsKHZvaWQgMCwgKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuICAvLyBleHBvcnQgKiBmcm9tICcuLi4nXG4gIGlmIChzaG91bGRQYXJzZUV4cG9ydFN0YXIoKSkge1xuICAgIHBhcnNlRXhwb3J0U3RhcigpO1xuICB9IGVsc2UgaWYgKGlzRXhwb3J0RGVmYXVsdFNwZWNpZmllcigpKSB7XG4gICAgLy8gZXhwb3J0IGRlZmF1bHQgZnJvbVxuICAgIF9leHByZXNzaW9uLnBhcnNlSWRlbnRpZmllci5jYWxsKHZvaWQgMCwgKTtcbiAgICBpZiAoX3Rva2VuaXplci5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5jb21tYSkgJiYgX3Rva2VuaXplci5sb29rYWhlYWRUeXBlLmNhbGwodm9pZCAwLCApID09PSBfdHlwZXMuVG9rZW5UeXBlLnN0YXIpIHtcbiAgICAgIF91dGlsLmV4cGVjdC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5jb21tYSk7XG4gICAgICBfdXRpbC5leHBlY3QuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuc3Rhcik7XG4gICAgICBfdXRpbC5leHBlY3RDb250ZXh0dWFsLmNhbGwodm9pZCAwLCBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX2FzKTtcbiAgICAgIF9leHByZXNzaW9uLnBhcnNlSWRlbnRpZmllci5jYWxsKHZvaWQgMCwgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcGFyc2VFeHBvcnRTcGVjaWZpZXJzTWF5YmUoKTtcbiAgICB9XG4gICAgcGFyc2VFeHBvcnRGcm9tKCk7XG4gIH0gZWxzZSBpZiAoX3Rva2VuaXplci5lYXQuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuX2RlZmF1bHQpKSB7XG4gICAgLy8gZXhwb3J0IGRlZmF1bHQgLi4uXG4gICAgcGFyc2VFeHBvcnREZWZhdWx0RXhwcmVzc2lvbigpO1xuICB9IGVsc2UgaWYgKHNob3VsZFBhcnNlRXhwb3J0RGVjbGFyYXRpb24oKSkge1xuICAgIHBhcnNlRXhwb3J0RGVjbGFyYXRpb24oKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBleHBvcnQgeyB4LCB5IGFzIHogfSBbZnJvbSAnLi4uJ11cbiAgICBwYXJzZUV4cG9ydFNwZWNpZmllcnMoKTtcbiAgICBwYXJzZUV4cG9ydEZyb20oKTtcbiAgfVxuICBfYmFzZS5zdGF0ZS50b2tlbnNbZXhwb3J0SW5kZXhdLnJoc0VuZEluZGV4ID0gX2Jhc2Uuc3RhdGUudG9rZW5zLmxlbmd0aDtcbn0gZXhwb3J0cy5wYXJzZUV4cG9ydCA9IHBhcnNlRXhwb3J0O1xuXG5mdW5jdGlvbiBwYXJzZUV4cG9ydERlZmF1bHRFeHByZXNzaW9uKCkge1xuICBpZiAoX2Jhc2UuaXNUeXBlU2NyaXB0RW5hYmxlZCkge1xuICAgIGlmIChfdHlwZXNjcmlwdC50c1RyeVBhcnNlRXhwb3J0RGVmYXVsdEV4cHJlc3Npb24uY2FsbCh2b2lkIDAsICkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cbiAgaWYgKF9iYXNlLmlzRmxvd0VuYWJsZWQpIHtcbiAgICBpZiAoX2Zsb3cuZmxvd1RyeVBhcnNlRXhwb3J0RGVmYXVsdEV4cHJlc3Npb24uY2FsbCh2b2lkIDAsICkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cbiAgY29uc3QgZnVuY3Rpb25TdGFydCA9IF9iYXNlLnN0YXRlLnN0YXJ0O1xuICBpZiAoX3Rva2VuaXplci5lYXQuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuX2Z1bmN0aW9uKSkge1xuICAgIHBhcnNlRnVuY3Rpb24oZnVuY3Rpb25TdGFydCwgdHJ1ZSwgdHJ1ZSk7XG4gIH0gZWxzZSBpZiAoX3V0aWwuaXNDb250ZXh0dWFsLmNhbGwodm9pZCAwLCBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX2FzeW5jKSAmJiBfdG9rZW5pemVyLmxvb2thaGVhZFR5cGUuY2FsbCh2b2lkIDAsICkgPT09IF90eXBlcy5Ub2tlblR5cGUuX2Z1bmN0aW9uKSB7XG4gICAgLy8gYXN5bmMgZnVuY3Rpb24gZGVjbGFyYXRpb25cbiAgICBfdXRpbC5lYXRDb250ZXh0dWFsLmNhbGwodm9pZCAwLCBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX2FzeW5jKTtcbiAgICBfdG9rZW5pemVyLmVhdC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5fZnVuY3Rpb24pO1xuICAgIHBhcnNlRnVuY3Rpb24oZnVuY3Rpb25TdGFydCwgdHJ1ZSwgdHJ1ZSk7XG4gIH0gZWxzZSBpZiAoX3Rva2VuaXplci5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5fY2xhc3MpKSB7XG4gICAgcGFyc2VDbGFzcyh0cnVlLCB0cnVlKTtcbiAgfSBlbHNlIGlmIChfdG9rZW5pemVyLm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmF0KSkge1xuICAgIHBhcnNlRGVjb3JhdG9ycygpO1xuICAgIHBhcnNlQ2xhc3ModHJ1ZSwgdHJ1ZSk7XG4gIH0gZWxzZSB7XG4gICAgX2V4cHJlc3Npb24ucGFyc2VNYXliZUFzc2lnbi5jYWxsKHZvaWQgMCwgKTtcbiAgICBfdXRpbC5zZW1pY29sb24uY2FsbCh2b2lkIDAsICk7XG4gIH1cbn1cblxuZnVuY3Rpb24gcGFyc2VFeHBvcnREZWNsYXJhdGlvbigpIHtcbiAgaWYgKF9iYXNlLmlzVHlwZVNjcmlwdEVuYWJsZWQpIHtcbiAgICBfdHlwZXNjcmlwdC50c1BhcnNlRXhwb3J0RGVjbGFyYXRpb24uY2FsbCh2b2lkIDAsICk7XG4gIH0gZWxzZSBpZiAoX2Jhc2UuaXNGbG93RW5hYmxlZCkge1xuICAgIF9mbG93LmZsb3dQYXJzZUV4cG9ydERlY2xhcmF0aW9uLmNhbGwodm9pZCAwLCApO1xuICB9IGVsc2Uge1xuICAgIHBhcnNlU3RhdGVtZW50KHRydWUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlzRXhwb3J0RGVmYXVsdFNwZWNpZmllcigpIHtcbiAgaWYgKF9iYXNlLmlzVHlwZVNjcmlwdEVuYWJsZWQgJiYgX3R5cGVzY3JpcHQudHNJc0RlY2xhcmF0aW9uU3RhcnQuY2FsbCh2b2lkIDAsICkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH0gZWxzZSBpZiAoX2Jhc2UuaXNGbG93RW5hYmxlZCAmJiBfZmxvdy5mbG93U2hvdWxkRGlzYWxsb3dFeHBvcnREZWZhdWx0U3BlY2lmaWVyLmNhbGwodm9pZCAwLCApKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmIChfdG9rZW5pemVyLm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLm5hbWUpKSB7XG4gICAgcmV0dXJuIF9iYXNlLnN0YXRlLmNvbnRleHR1YWxLZXl3b3JkICE9PSBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX2FzeW5jO1xuICB9XG5cbiAgaWYgKCFfdG9rZW5pemVyLm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLl9kZWZhdWx0KSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IF9uZXh0ID0gX3Rva2VuaXplci5uZXh0VG9rZW5TdGFydC5jYWxsKHZvaWQgMCwgKTtcbiAgY29uc3QgbG9va2FoZWFkID0gX3Rva2VuaXplci5sb29rYWhlYWRUeXBlQW5kS2V5d29yZC5jYWxsKHZvaWQgMCwgKTtcbiAgY29uc3QgaGFzRnJvbSA9XG4gICAgbG9va2FoZWFkLnR5cGUgPT09IF90eXBlcy5Ub2tlblR5cGUubmFtZSAmJiBsb29rYWhlYWQuY29udGV4dHVhbEtleXdvcmQgPT09IF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fZnJvbTtcbiAgaWYgKGxvb2thaGVhZC50eXBlID09PSBfdHlwZXMuVG9rZW5UeXBlLmNvbW1hKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgLy8gbG9va2FoZWFkIGFnYWluIHdoZW4gYGV4cG9ydCBkZWZhdWx0IGZyb21gIGlzIHNlZW5cbiAgaWYgKGhhc0Zyb20pIHtcbiAgICBjb25zdCBuZXh0QWZ0ZXJGcm9tID0gX2Jhc2UuaW5wdXQuY2hhckNvZGVBdChfdG9rZW5pemVyLm5leHRUb2tlblN0YXJ0U2luY2UuY2FsbCh2b2lkIDAsIF9uZXh0ICsgNCkpO1xuICAgIHJldHVybiBuZXh0QWZ0ZXJGcm9tID09PSBfY2hhcmNvZGVzLmNoYXJDb2Rlcy5xdW90YXRpb25NYXJrIHx8IG5leHRBZnRlckZyb20gPT09IF9jaGFyY29kZXMuY2hhckNvZGVzLmFwb3N0cm9waGU7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBwYXJzZUV4cG9ydFNwZWNpZmllcnNNYXliZSgpIHtcbiAgaWYgKF90b2tlbml6ZXIuZWF0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmNvbW1hKSkge1xuICAgIHBhcnNlRXhwb3J0U3BlY2lmaWVycygpO1xuICB9XG59XG5cbiBmdW5jdGlvbiBwYXJzZUV4cG9ydEZyb20oKSB7XG4gIGlmIChfdXRpbC5lYXRDb250ZXh0dWFsLmNhbGwodm9pZCAwLCBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX2Zyb20pKSB7XG4gICAgX2V4cHJlc3Npb24ucGFyc2VFeHByQXRvbS5jYWxsKHZvaWQgMCwgKTtcbiAgICBtYXliZVBhcnNlSW1wb3J0QXR0cmlidXRlcygpO1xuICB9XG4gIF91dGlsLnNlbWljb2xvbi5jYWxsKHZvaWQgMCwgKTtcbn0gZXhwb3J0cy5wYXJzZUV4cG9ydEZyb20gPSBwYXJzZUV4cG9ydEZyb207XG5cbmZ1bmN0aW9uIHNob3VsZFBhcnNlRXhwb3J0U3RhcigpIHtcbiAgaWYgKF9iYXNlLmlzRmxvd0VuYWJsZWQpIHtcbiAgICByZXR1cm4gX2Zsb3cuZmxvd1Nob3VsZFBhcnNlRXhwb3J0U3Rhci5jYWxsKHZvaWQgMCwgKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gX3Rva2VuaXplci5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5zdGFyKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBwYXJzZUV4cG9ydFN0YXIoKSB7XG4gIGlmIChfYmFzZS5pc0Zsb3dFbmFibGVkKSB7XG4gICAgX2Zsb3cuZmxvd1BhcnNlRXhwb3J0U3Rhci5jYWxsKHZvaWQgMCwgKTtcbiAgfSBlbHNlIHtcbiAgICBiYXNlUGFyc2VFeHBvcnRTdGFyKCk7XG4gIH1cbn1cblxuIGZ1bmN0aW9uIGJhc2VQYXJzZUV4cG9ydFN0YXIoKSB7XG4gIF91dGlsLmV4cGVjdC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5zdGFyKTtcblxuICBpZiAoX3V0aWwuaXNDb250ZXh0dWFsLmNhbGwodm9pZCAwLCBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX2FzKSkge1xuICAgIHBhcnNlRXhwb3J0TmFtZXNwYWNlKCk7XG4gIH0gZWxzZSB7XG4gICAgcGFyc2VFeHBvcnRGcm9tKCk7XG4gIH1cbn0gZXhwb3J0cy5iYXNlUGFyc2VFeHBvcnRTdGFyID0gYmFzZVBhcnNlRXhwb3J0U3RhcjtcblxuZnVuY3Rpb24gcGFyc2VFeHBvcnROYW1lc3BhY2UoKSB7XG4gIF90b2tlbml6ZXIubmV4dC5jYWxsKHZvaWQgMCwgKTtcbiAgX2Jhc2Uuc3RhdGUudG9rZW5zW19iYXNlLnN0YXRlLnRva2Vucy5sZW5ndGggLSAxXS50eXBlID0gX3R5cGVzLlRva2VuVHlwZS5fYXM7XG4gIF9leHByZXNzaW9uLnBhcnNlSWRlbnRpZmllci5jYWxsKHZvaWQgMCwgKTtcbiAgcGFyc2VFeHBvcnRTcGVjaWZpZXJzTWF5YmUoKTtcbiAgcGFyc2VFeHBvcnRGcm9tKCk7XG59XG5cbmZ1bmN0aW9uIHNob3VsZFBhcnNlRXhwb3J0RGVjbGFyYXRpb24oKSB7XG4gIHJldHVybiAoXG4gICAgKF9iYXNlLmlzVHlwZVNjcmlwdEVuYWJsZWQgJiYgX3R5cGVzY3JpcHQudHNJc0RlY2xhcmF0aW9uU3RhcnQuY2FsbCh2b2lkIDAsICkpIHx8XG4gICAgKF9iYXNlLmlzRmxvd0VuYWJsZWQgJiYgX2Zsb3cuZmxvd1Nob3VsZFBhcnNlRXhwb3J0RGVjbGFyYXRpb24uY2FsbCh2b2lkIDAsICkpIHx8XG4gICAgX2Jhc2Uuc3RhdGUudHlwZSA9PT0gX3R5cGVzLlRva2VuVHlwZS5fdmFyIHx8XG4gICAgX2Jhc2Uuc3RhdGUudHlwZSA9PT0gX3R5cGVzLlRva2VuVHlwZS5fY29uc3QgfHxcbiAgICBfYmFzZS5zdGF0ZS50eXBlID09PSBfdHlwZXMuVG9rZW5UeXBlLl9sZXQgfHxcbiAgICBfYmFzZS5zdGF0ZS50eXBlID09PSBfdHlwZXMuVG9rZW5UeXBlLl9mdW5jdGlvbiB8fFxuICAgIF9iYXNlLnN0YXRlLnR5cGUgPT09IF90eXBlcy5Ub2tlblR5cGUuX2NsYXNzIHx8XG4gICAgX3V0aWwuaXNDb250ZXh0dWFsLmNhbGwodm9pZCAwLCBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX2FzeW5jKSB8fFxuICAgIF90b2tlbml6ZXIubWF0Y2guY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuYXQpXG4gICk7XG59XG5cbi8vIFBhcnNlcyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIG1vZHVsZSBleHBvcnRzLlxuIGZ1bmN0aW9uIHBhcnNlRXhwb3J0U3BlY2lmaWVycygpIHtcbiAgbGV0IGZpcnN0ID0gdHJ1ZTtcblxuICAvLyBleHBvcnQgeyB4LCB5IGFzIHogfSBbZnJvbSAnLi4uJ11cbiAgX3V0aWwuZXhwZWN0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmJyYWNlTCk7XG5cbiAgd2hpbGUgKCFfdG9rZW5pemVyLmVhdC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5icmFjZVIpICYmICFfYmFzZS5zdGF0ZS5lcnJvcikge1xuICAgIGlmIChmaXJzdCkge1xuICAgICAgZmlyc3QgPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgX3V0aWwuZXhwZWN0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmNvbW1hKTtcbiAgICAgIGlmIChfdG9rZW5pemVyLmVhdC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5icmFjZVIpKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICBwYXJzZUV4cG9ydFNwZWNpZmllcigpO1xuICB9XG59IGV4cG9ydHMucGFyc2VFeHBvcnRTcGVjaWZpZXJzID0gcGFyc2VFeHBvcnRTcGVjaWZpZXJzO1xuXG5mdW5jdGlvbiBwYXJzZUV4cG9ydFNwZWNpZmllcigpIHtcbiAgaWYgKF9iYXNlLmlzVHlwZVNjcmlwdEVuYWJsZWQpIHtcbiAgICBfdHlwZXNjcmlwdC50c1BhcnNlRXhwb3J0U3BlY2lmaWVyLmNhbGwodm9pZCAwLCApO1xuICAgIHJldHVybjtcbiAgfVxuICBfZXhwcmVzc2lvbi5wYXJzZUlkZW50aWZpZXIuY2FsbCh2b2lkIDAsICk7XG4gIF9iYXNlLnN0YXRlLnRva2Vuc1tfYmFzZS5zdGF0ZS50b2tlbnMubGVuZ3RoIC0gMV0uaWRlbnRpZmllclJvbGUgPSBfdG9rZW5pemVyLklkZW50aWZpZXJSb2xlLkV4cG9ydEFjY2VzcztcbiAgaWYgKF91dGlsLmVhdENvbnRleHR1YWwuY2FsbCh2b2lkIDAsIF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fYXMpKSB7XG4gICAgX2V4cHJlc3Npb24ucGFyc2VJZGVudGlmaWVyLmNhbGwodm9pZCAwLCApO1xuICB9XG59XG5cbi8qKlxuICogU3RhcnRpbmcgYXQgdGhlIGBtb2R1bGVgIHRva2VuIGluIGFuIGltcG9ydCwgZGV0ZXJtaW5lIGlmIGl0IHdhcyB0cnVseSBhblxuICogaW1wb3J0IHJlZmxlY3Rpb24gdG9rZW4gb3IganVzdCBsb29rcyBsaWtlIG9uZS5cbiAqXG4gKiBSZXR1cm5zIHRydWUgZm9yOlxuICogaW1wb3J0IG1vZHVsZSBmb28gZnJvbSBcImZvb1wiO1xuICogaW1wb3J0IG1vZHVsZSBmcm9tIGZyb20gXCJmb29cIjtcbiAqXG4gKiBSZXR1cm5zIGZhbHNlIGZvcjpcbiAqIGltcG9ydCBtb2R1bGUgZnJvbSBcImZvb1wiO1xuICogaW1wb3J0IG1vZHVsZSwge2Jhcn0gZnJvbSBcImZvb1wiO1xuICovXG5mdW5jdGlvbiBpc0ltcG9ydFJlZmxlY3Rpb24oKSB7XG4gIGNvbnN0IHNuYXBzaG90ID0gX2Jhc2Uuc3RhdGUuc25hcHNob3QoKTtcbiAgX3V0aWwuZXhwZWN0Q29udGV4dHVhbC5jYWxsKHZvaWQgMCwgX2tleXdvcmRzLkNvbnRleHR1YWxLZXl3b3JkLl9tb2R1bGUpO1xuICBpZiAoX3V0aWwuZWF0Q29udGV4dHVhbC5jYWxsKHZvaWQgMCwgX2tleXdvcmRzLkNvbnRleHR1YWxLZXl3b3JkLl9mcm9tKSkge1xuICAgIGlmIChfdXRpbC5pc0NvbnRleHR1YWwuY2FsbCh2b2lkIDAsIF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fZnJvbSkpIHtcbiAgICAgIF9iYXNlLnN0YXRlLnJlc3RvcmVGcm9tU25hcHNob3Qoc25hcHNob3QpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIF9iYXNlLnN0YXRlLnJlc3RvcmVGcm9tU25hcHNob3Qoc25hcHNob3QpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfSBlbHNlIGlmIChfdG9rZW5pemVyLm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmNvbW1hKSkge1xuICAgIF9iYXNlLnN0YXRlLnJlc3RvcmVGcm9tU25hcHNob3Qoc25hcHNob3QpO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfSBlbHNlIHtcbiAgICBfYmFzZS5zdGF0ZS5yZXN0b3JlRnJvbVNuYXBzaG90KHNuYXBzaG90KTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuXG4vKipcbiAqIEVhdCB0aGUgXCJtb2R1bGVcIiB0b2tlbiBmcm9tIHRoZSBpbXBvcnQgcmVmbGVjdGlvbiBwcm9wb3NhbC5cbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWltcG9ydC1yZWZsZWN0aW9uXG4gKi9cbmZ1bmN0aW9uIHBhcnNlTWF5YmVJbXBvcnRSZWZsZWN0aW9uKCkge1xuICAvLyBpc0ltcG9ydFJlZmxlY3Rpb24gZG9lcyBzbmFwc2hvdC9yZXN0b3JlLCBzbyBvbmx5IHJ1biBpdCBpZiB3ZSBzZWUgdGhlIHdvcmRcbiAgLy8gXCJtb2R1bGVcIi5cbiAgaWYgKF91dGlsLmlzQ29udGV4dHVhbC5jYWxsKHZvaWQgMCwgX2tleXdvcmRzLkNvbnRleHR1YWxLZXl3b3JkLl9tb2R1bGUpICYmIGlzSW1wb3J0UmVmbGVjdGlvbigpKSB7XG4gICAgX3Rva2VuaXplci5uZXh0LmNhbGwodm9pZCAwLCApO1xuICB9XG59XG5cbi8vIFBhcnNlcyBpbXBvcnQgZGVjbGFyYXRpb24uXG5cbiBmdW5jdGlvbiBwYXJzZUltcG9ydCgpIHtcbiAgaWYgKF9iYXNlLmlzVHlwZVNjcmlwdEVuYWJsZWQgJiYgX3Rva2VuaXplci5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5uYW1lKSAmJiBfdG9rZW5pemVyLmxvb2thaGVhZFR5cGUuY2FsbCh2b2lkIDAsICkgPT09IF90eXBlcy5Ub2tlblR5cGUuZXEpIHtcbiAgICBfdHlwZXNjcmlwdC50c1BhcnNlSW1wb3J0RXF1YWxzRGVjbGFyYXRpb24uY2FsbCh2b2lkIDAsICk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChfYmFzZS5pc1R5cGVTY3JpcHRFbmFibGVkICYmIF91dGlsLmlzQ29udGV4dHVhbC5jYWxsKHZvaWQgMCwgX2tleXdvcmRzLkNvbnRleHR1YWxLZXl3b3JkLl90eXBlKSkge1xuICAgIGNvbnN0IGxvb2thaGVhZCA9IF90b2tlbml6ZXIubG9va2FoZWFkVHlwZUFuZEtleXdvcmQuY2FsbCh2b2lkIDAsICk7XG4gICAgaWYgKGxvb2thaGVhZC50eXBlID09PSBfdHlwZXMuVG9rZW5UeXBlLm5hbWUgJiYgbG9va2FoZWFkLmNvbnRleHR1YWxLZXl3b3JkICE9PSBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX2Zyb20pIHtcbiAgICAgIC8vIE9uZSBvZiB0aGVzZSBgaW1wb3J0IHR5cGVgIGNhc2VzOlxuICAgICAgLy8gaW1wb3J0IHR5cGUgVCA9IHJlcXVpcmUoJ1QnKTtcbiAgICAgIC8vIGltcG9ydCB0eXBlIEEgZnJvbSAnQSc7XG4gICAgICBfdXRpbC5leHBlY3RDb250ZXh0dWFsLmNhbGwodm9pZCAwLCBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX3R5cGUpO1xuICAgICAgaWYgKF90b2tlbml6ZXIubG9va2FoZWFkVHlwZS5jYWxsKHZvaWQgMCwgKSA9PT0gX3R5cGVzLlRva2VuVHlwZS5lcSkge1xuICAgICAgICBfdHlwZXNjcmlwdC50c1BhcnNlSW1wb3J0RXF1YWxzRGVjbGFyYXRpb24uY2FsbCh2b2lkIDAsICk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIC8vIElmIHRoaXMgaXMgYW4gYGltcG9ydCB0eXBlLi4uZnJvbWAgc3RhdGVtZW50LCB0aGVuIHdlIGFscmVhZHkgYXRlIHRoZVxuICAgICAgLy8gdHlwZSB0b2tlbiwgc28gcHJvY2VlZCB0byB0aGUgcmVndWxhciBpbXBvcnQgcGFyc2VyLlxuICAgIH0gZWxzZSBpZiAobG9va2FoZWFkLnR5cGUgPT09IF90eXBlcy5Ub2tlblR5cGUuc3RhciB8fCBsb29rYWhlYWQudHlwZSA9PT0gX3R5cGVzLlRva2VuVHlwZS5icmFjZUwpIHtcbiAgICAgIC8vIE9uZSBvZiB0aGVzZSBgaW1wb3J0IHR5cGVgIGNhc2VzLCBpbiB3aGljaCBjYXNlIHdlIGNhbiBlYXQgdGhlIHR5cGUgdG9rZW5cbiAgICAgIC8vIGFuZCBwcm9jZWVkIGFzIG5vcm1hbDpcbiAgICAgIC8vIGltcG9ydCB0eXBlICogYXMgQSBmcm9tICdBJztcbiAgICAgIC8vIGltcG9ydCB0eXBlIHthfSBmcm9tICdBJztcbiAgICAgIF91dGlsLmV4cGVjdENvbnRleHR1YWwuY2FsbCh2b2lkIDAsIF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fdHlwZSk7XG4gICAgfVxuICAgIC8vIE90aGVyd2lzZSwgd2UgYXJlIGltcG9ydGluZyB0aGUgbmFtZSBcInR5cGVcIi5cbiAgfVxuXG4gIC8vIGltcG9ydCAnLi4uJ1xuICBpZiAoX3Rva2VuaXplci5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5zdHJpbmcpKSB7XG4gICAgX2V4cHJlc3Npb24ucGFyc2VFeHByQXRvbS5jYWxsKHZvaWQgMCwgKTtcbiAgfSBlbHNlIHtcbiAgICBwYXJzZU1heWJlSW1wb3J0UmVmbGVjdGlvbigpO1xuICAgIHBhcnNlSW1wb3J0U3BlY2lmaWVycygpO1xuICAgIF91dGlsLmV4cGVjdENvbnRleHR1YWwuY2FsbCh2b2lkIDAsIF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fZnJvbSk7XG4gICAgX2V4cHJlc3Npb24ucGFyc2VFeHByQXRvbS5jYWxsKHZvaWQgMCwgKTtcbiAgfVxuICBtYXliZVBhcnNlSW1wb3J0QXR0cmlidXRlcygpO1xuICBfdXRpbC5zZW1pY29sb24uY2FsbCh2b2lkIDAsICk7XG59IGV4cG9ydHMucGFyc2VJbXBvcnQgPSBwYXJzZUltcG9ydDtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG5mdW5jdGlvbiBzaG91bGRQYXJzZURlZmF1bHRJbXBvcnQoKSB7XG4gIHJldHVybiBfdG9rZW5pemVyLm1hdGNoLmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLm5hbWUpO1xufVxuXG5mdW5jdGlvbiBwYXJzZUltcG9ydFNwZWNpZmllckxvY2FsKCkge1xuICBfbHZhbC5wYXJzZUltcG9ydGVkSWRlbnRpZmllci5jYWxsKHZvaWQgMCwgKTtcbn1cblxuLy8gUGFyc2VzIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgbW9kdWxlIGltcG9ydHMuXG5mdW5jdGlvbiBwYXJzZUltcG9ydFNwZWNpZmllcnMoKSB7XG4gIGlmIChfYmFzZS5pc0Zsb3dFbmFibGVkKSB7XG4gICAgX2Zsb3cuZmxvd1N0YXJ0UGFyc2VJbXBvcnRTcGVjaWZpZXJzLmNhbGwodm9pZCAwLCApO1xuICB9XG5cbiAgbGV0IGZpcnN0ID0gdHJ1ZTtcbiAgaWYgKHNob3VsZFBhcnNlRGVmYXVsdEltcG9ydCgpKSB7XG4gICAgLy8gaW1wb3J0IGRlZmF1bHRPYmosIHsgeCwgeSBhcyB6IH0gZnJvbSAnLi4uJ1xuICAgIHBhcnNlSW1wb3J0U3BlY2lmaWVyTG9jYWwoKTtcblxuICAgIGlmICghX3Rva2VuaXplci5lYXQuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuY29tbWEpKSByZXR1cm47XG4gIH1cblxuICBpZiAoX3Rva2VuaXplci5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5zdGFyKSkge1xuICAgIF90b2tlbml6ZXIubmV4dC5jYWxsKHZvaWQgMCwgKTtcbiAgICBfdXRpbC5leHBlY3RDb250ZXh0dWFsLmNhbGwodm9pZCAwLCBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX2FzKTtcblxuICAgIHBhcnNlSW1wb3J0U3BlY2lmaWVyTG9jYWwoKTtcblxuICAgIHJldHVybjtcbiAgfVxuXG4gIF91dGlsLmV4cGVjdC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5icmFjZUwpO1xuICB3aGlsZSAoIV90b2tlbml6ZXIuZWF0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmJyYWNlUikgJiYgIV9iYXNlLnN0YXRlLmVycm9yKSB7XG4gICAgaWYgKGZpcnN0KSB7XG4gICAgICBmaXJzdCA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBEZXRlY3QgYW4gYXR0ZW1wdCB0byBkZWVwIGRlc3RydWN0dXJlXG4gICAgICBpZiAoX3Rva2VuaXplci5lYXQuY2FsbCh2b2lkIDAsIF90eXBlcy5Ub2tlblR5cGUuY29sb24pKSB7XG4gICAgICAgIF91dGlsLnVuZXhwZWN0ZWQuY2FsbCh2b2lkIDAsIFxuICAgICAgICAgIFwiRVMyMDE1IG5hbWVkIGltcG9ydHMgZG8gbm90IGRlc3RydWN0dXJlLiBVc2UgYW5vdGhlciBzdGF0ZW1lbnQgZm9yIGRlc3RydWN0dXJpbmcgYWZ0ZXIgdGhlIGltcG9ydC5cIixcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgX3V0aWwuZXhwZWN0LmNhbGwodm9pZCAwLCBfdHlwZXMuVG9rZW5UeXBlLmNvbW1hKTtcbiAgICAgIGlmIChfdG9rZW5pemVyLmVhdC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5icmFjZVIpKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHBhcnNlSW1wb3J0U3BlY2lmaWVyKCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gcGFyc2VJbXBvcnRTcGVjaWZpZXIoKSB7XG4gIGlmIChfYmFzZS5pc1R5cGVTY3JpcHRFbmFibGVkKSB7XG4gICAgX3R5cGVzY3JpcHQudHNQYXJzZUltcG9ydFNwZWNpZmllci5jYWxsKHZvaWQgMCwgKTtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKF9iYXNlLmlzRmxvd0VuYWJsZWQpIHtcbiAgICBfZmxvdy5mbG93UGFyc2VJbXBvcnRTcGVjaWZpZXIuY2FsbCh2b2lkIDAsICk7XG4gICAgcmV0dXJuO1xuICB9XG4gIF9sdmFsLnBhcnNlSW1wb3J0ZWRJZGVudGlmaWVyLmNhbGwodm9pZCAwLCApO1xuICBpZiAoX3V0aWwuaXNDb250ZXh0dWFsLmNhbGwodm9pZCAwLCBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX2FzKSkge1xuICAgIF9iYXNlLnN0YXRlLnRva2Vuc1tfYmFzZS5zdGF0ZS50b2tlbnMubGVuZ3RoIC0gMV0uaWRlbnRpZmllclJvbGUgPSBfdG9rZW5pemVyLklkZW50aWZpZXJSb2xlLkltcG9ydEFjY2VzcztcbiAgICBfdG9rZW5pemVyLm5leHQuY2FsbCh2b2lkIDAsICk7XG4gICAgX2x2YWwucGFyc2VJbXBvcnRlZElkZW50aWZpZXIuY2FsbCh2b2lkIDAsICk7XG4gIH1cbn1cblxuLyoqXG4gKiBQYXJzZSBpbXBvcnQgYXR0cmlidXRlcyBsaWtlIGB3aXRoIHt0eXBlOiBcImpzb25cIn1gLCBvciB0aGUgbGVnYWN5IGZvcm1cbiAqIGBhc3NlcnQge3R5cGU6IFwianNvblwifWAuXG4gKlxuICogSW1wb3J0IGF0dHJpYnV0ZXMgdGVjaG5pY2FsbHkgaGF2ZSB0aGVpciBvd24gc3ludGF4LCBidXQgYXJlIGFsd2F5cyBwYXJzZWFibGVcbiAqIGFzIGEgcGxhaW4gSlMgb2JqZWN0LCBzbyBqdXN0IGRvIHRoYXQgZm9yIHNpbXBsaWNpdHkuXG4gKi9cbmZ1bmN0aW9uIG1heWJlUGFyc2VJbXBvcnRBdHRyaWJ1dGVzKCkge1xuICBpZiAoX3Rva2VuaXplci5tYXRjaC5jYWxsKHZvaWQgMCwgX3R5cGVzLlRva2VuVHlwZS5fd2l0aCkgfHwgKF91dGlsLmlzQ29udGV4dHVhbC5jYWxsKHZvaWQgMCwgX2tleXdvcmRzLkNvbnRleHR1YWxLZXl3b3JkLl9hc3NlcnQpICYmICFfdXRpbC5oYXNQcmVjZWRpbmdMaW5lQnJlYWsuY2FsbCh2b2lkIDAsICkpKSB7XG4gICAgX3Rva2VuaXplci5uZXh0LmNhbGwodm9pZCAwLCApO1xuICAgIF9leHByZXNzaW9uLnBhcnNlT2JqLmNhbGwodm9pZCAwLCBmYWxzZSwgZmFsc2UpO1xuICB9XG59XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7dmFsdWU6IHRydWV9KTtcbnZhciBfaW5kZXggPSByZXF1aXJlKCcuLi90b2tlbml6ZXIvaW5kZXgnKTtcbnZhciBfY2hhcmNvZGVzID0gcmVxdWlyZSgnLi4vdXRpbC9jaGFyY29kZXMnKTtcbnZhciBfYmFzZSA9IHJlcXVpcmUoJy4vYmFzZScpO1xudmFyIF9zdGF0ZW1lbnQgPSByZXF1aXJlKCcuL3N0YXRlbWVudCcpO1xuXG4gZnVuY3Rpb24gcGFyc2VGaWxlKCkge1xuICAvLyBJZiBlbmFibGVkLCBza2lwIGxlYWRpbmcgaGFzaGJhbmcgbGluZS5cbiAgaWYgKFxuICAgIF9iYXNlLnN0YXRlLnBvcyA9PT0gMCAmJlxuICAgIF9iYXNlLmlucHV0LmNoYXJDb2RlQXQoMCkgPT09IF9jaGFyY29kZXMuY2hhckNvZGVzLm51bWJlclNpZ24gJiZcbiAgICBfYmFzZS5pbnB1dC5jaGFyQ29kZUF0KDEpID09PSBfY2hhcmNvZGVzLmNoYXJDb2Rlcy5leGNsYW1hdGlvbk1hcmtcbiAgKSB7XG4gICAgX2luZGV4LnNraXBMaW5lQ29tbWVudC5jYWxsKHZvaWQgMCwgMik7XG4gIH1cbiAgX2luZGV4Lm5leHRUb2tlbi5jYWxsKHZvaWQgMCwgKTtcbiAgcmV0dXJuIF9zdGF0ZW1lbnQucGFyc2VUb3BMZXZlbC5jYWxsKHZvaWQgMCwgKTtcbn0gZXhwb3J0cy5wYXJzZUZpbGUgPSBwYXJzZUZpbGU7XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7dmFsdWU6IHRydWV9KTtcblxudmFyIF9iYXNlID0gcmVxdWlyZSgnLi90cmF2ZXJzZXIvYmFzZScpO1xudmFyIF9pbmRleCA9IHJlcXVpcmUoJy4vdHJhdmVyc2VyL2luZGV4Jyk7XG5cbiBjbGFzcyBGaWxlIHtcbiAgXG4gIFxuXG4gIGNvbnN0cnVjdG9yKHRva2Vucywgc2NvcGVzKSB7XG4gICAgdGhpcy50b2tlbnMgPSB0b2tlbnM7XG4gICAgdGhpcy5zY29wZXMgPSBzY29wZXM7XG4gIH1cbn0gZXhwb3J0cy5GaWxlID0gRmlsZTtcblxuIGZ1bmN0aW9uIHBhcnNlKFxuICBpbnB1dCxcbiAgaXNKU1hFbmFibGVkLFxuICBpc1R5cGVTY3JpcHRFbmFibGVkLFxuICBpc0Zsb3dFbmFibGVkLFxuKSB7XG4gIGlmIChpc0Zsb3dFbmFibGVkICYmIGlzVHlwZVNjcmlwdEVuYWJsZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgY29tYmluZSBmbG93IGFuZCB0eXBlc2NyaXB0IHBsdWdpbnMuXCIpO1xuICB9XG4gIF9iYXNlLmluaXRQYXJzZXIuY2FsbCh2b2lkIDAsIGlucHV0LCBpc0pTWEVuYWJsZWQsIGlzVHlwZVNjcmlwdEVuYWJsZWQsIGlzRmxvd0VuYWJsZWQpO1xuICBjb25zdCByZXN1bHQgPSBfaW5kZXgucGFyc2VGaWxlLmNhbGwodm9pZCAwLCApO1xuICBpZiAoX2Jhc2Uuc3RhdGUuZXJyb3IpIHtcbiAgICB0aHJvdyBfYmFzZS5hdWdtZW50RXJyb3IuY2FsbCh2b2lkIDAsIF9iYXNlLnN0YXRlLmVycm9yKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufSBleHBvcnRzLnBhcnNlID0gcGFyc2U7XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7dmFsdWU6IHRydWV9KTt2YXIgX2tleXdvcmRzID0gcmVxdWlyZSgnLi4vcGFyc2VyL3Rva2VuaXplci9rZXl3b3JkcycpO1xuXG5cbi8qKlxuICogRGV0ZXJtaW5lIHdoZXRoZXIgdGhpcyBvcHRpb25hbCBjaGFpbiBvciBudWxsaXNoIGNvYWxlc2Npbmcgb3BlcmF0aW9uIGhhcyBhbnkgYXdhaXQgc3RhdGVtZW50cyBpblxuICogaXQuIElmIHNvLCB3ZSdsbCBuZWVkIHRvIHRyYW5zcGlsZSB0byBhbiBhc3luYyBvcGVyYXRpb24uXG4gKlxuICogV2UgY29tcHV0ZSB0aGlzIGJ5IHdhbGtpbmcgdGhlIGxlbmd0aCBvZiB0aGUgb3BlcmF0aW9uIGFuZCByZXR1cm5pbmcgdHJ1ZSBpZiB3ZSBzZWUgYW4gYXdhaXRcbiAqIGtleXdvcmQgdXNlZCBhcyBhIHJlYWwgYXdhaXQgKHJhdGhlciB0aGFuIGFuIG9iamVjdCBrZXkgb3IgcHJvcGVydHkgYWNjZXNzKS4gTmVzdGVkIG9wdGlvbmFsXG4gKiBjaGFpbi9udWxsaXNoIG9wZXJhdGlvbnMgbmVlZCB0byBiZSB0cmFja2VkIGJ1dCBkb24ndCBzaWxlbmNlIGF3YWl0LCBidXQgYSBuZXN0ZWQgYXN5bmMgZnVuY3Rpb25cbiAqIChvciBhbnkgb3RoZXIgbmVzdGVkIHNjb3BlKSB3aWxsIG1ha2UgdGhlIGF3YWl0IG5vdCBjb3VudC5cbiAqL1xuIGZ1bmN0aW9uIGlzQXN5bmNPcGVyYXRpb24odG9rZW5zKSB7XG4gIGxldCBpbmRleCA9IHRva2Vucy5jdXJyZW50SW5kZXgoKTtcbiAgbGV0IGRlcHRoID0gMDtcbiAgY29uc3Qgc3RhcnRUb2tlbiA9IHRva2Vucy5jdXJyZW50VG9rZW4oKTtcbiAgZG8ge1xuICAgIGNvbnN0IHRva2VuID0gdG9rZW5zLnRva2Vuc1tpbmRleF07XG4gICAgaWYgKHRva2VuLmlzT3B0aW9uYWxDaGFpblN0YXJ0KSB7XG4gICAgICBkZXB0aCsrO1xuICAgIH1cbiAgICBpZiAodG9rZW4uaXNPcHRpb25hbENoYWluRW5kKSB7XG4gICAgICBkZXB0aC0tO1xuICAgIH1cbiAgICBkZXB0aCArPSB0b2tlbi5udW1OdWxsaXNoQ29hbGVzY2VTdGFydHM7XG4gICAgZGVwdGggLT0gdG9rZW4ubnVtTnVsbGlzaENvYWxlc2NlRW5kcztcblxuICAgIGlmIChcbiAgICAgIHRva2VuLmNvbnRleHR1YWxLZXl3b3JkID09PSBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX2F3YWl0ICYmXG4gICAgICB0b2tlbi5pZGVudGlmaWVyUm9sZSA9PSBudWxsICYmXG4gICAgICB0b2tlbi5zY29wZURlcHRoID09PSBzdGFydFRva2VuLnNjb3BlRGVwdGhcbiAgICApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpbmRleCArPSAxO1xuICB9IHdoaWxlIChkZXB0aCA+IDAgJiYgaW5kZXggPCB0b2tlbnMudG9rZW5zLmxlbmd0aCk7XG4gIHJldHVybiBmYWxzZTtcbn0gZXhwb3J0cy5kZWZhdWx0ID0gaXNBc3luY09wZXJhdGlvbjtcbiIsICJcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHt2YWx1ZTogdHJ1ZX0pOyBmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5cbnZhciBfdHlwZXMgPSByZXF1aXJlKCcuL3BhcnNlci90b2tlbml6ZXIvdHlwZXMnKTtcbnZhciBfaXNBc3luY09wZXJhdGlvbiA9IHJlcXVpcmUoJy4vdXRpbC9pc0FzeW5jT3BlcmF0aW9uJyk7IHZhciBfaXNBc3luY09wZXJhdGlvbjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pc0FzeW5jT3BlcmF0aW9uKTtcblxuXG5cblxuXG5cblxuXG5cblxuXG4gY2xhc3MgVG9rZW5Qcm9jZXNzb3Ige1xuICAgX19pbml0KCkge3RoaXMucmVzdWx0Q29kZSA9IFwiXCJ9XG4gIC8vIEFycmF5IG1hcHBpbmcgaW5wdXQgdG9rZW4gaW5kZXggdG8gb3B0aW9uYWwgc3RyaW5nIGluZGV4IHBvc2l0aW9uIGluIHRoZVxuICAvLyBvdXRwdXQgY29kZS5cbiAgIF9faW5pdDIoKSB7dGhpcy5yZXN1bHRNYXBwaW5ncyA9IG5ldyBBcnJheSh0aGlzLnRva2Vucy5sZW5ndGgpfVxuICAgX19pbml0MygpIHt0aGlzLnRva2VuSW5kZXggPSAwfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgICBjb2RlLFxuICAgICB0b2tlbnMsXG4gICAgIGlzRmxvd0VuYWJsZWQsXG4gICAgIGRpc2FibGVFU1RyYW5zZm9ybXMsXG4gICAgIGhlbHBlck1hbmFnZXIsXG4gICkgezt0aGlzLmNvZGUgPSBjb2RlO3RoaXMudG9rZW5zID0gdG9rZW5zO3RoaXMuaXNGbG93RW5hYmxlZCA9IGlzRmxvd0VuYWJsZWQ7dGhpcy5kaXNhYmxlRVNUcmFuc2Zvcm1zID0gZGlzYWJsZUVTVHJhbnNmb3Jtczt0aGlzLmhlbHBlck1hbmFnZXIgPSBoZWxwZXJNYW5hZ2VyO1Rva2VuUHJvY2Vzc29yLnByb3RvdHlwZS5fX2luaXQuY2FsbCh0aGlzKTtUb2tlblByb2Nlc3Nvci5wcm90b3R5cGUuX19pbml0Mi5jYWxsKHRoaXMpO1Rva2VuUHJvY2Vzc29yLnByb3RvdHlwZS5fX2luaXQzLmNhbGwodGhpcyk7fVxuXG4gIC8qKlxuICAgKiBTbmFwc2hvdCB0aGUgdG9rZW4gc3RhdGUgaW4gYSB3YXkgdGhhdCBjYW4gYmUgcmVzdG9yZWQgbGF0ZXIsIHVzZWZ1bCBmb3JcbiAgICogdGhpbmdzIGxpa2UgbG9va2FoZWFkLlxuICAgKlxuICAgKiByZXN1bHRNYXBwaW5ncyBkbyBub3QgbmVlZCB0byBiZSBjb3BpZWQgc2luY2UgaW4gYWxsIHVzZSBjYXNlcywgdGhleSB3aWxsXG4gICAqIGJlIG92ZXJ3cml0dGVuIGFueXdheSBhZnRlciByZXN0b3JlLlxuICAgKi9cbiAgc25hcHNob3QoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHJlc3VsdENvZGU6IHRoaXMucmVzdWx0Q29kZSxcbiAgICAgIHRva2VuSW5kZXg6IHRoaXMudG9rZW5JbmRleCxcbiAgICB9O1xuICB9XG5cbiAgcmVzdG9yZVRvU25hcHNob3Qoc25hcHNob3QpIHtcbiAgICB0aGlzLnJlc3VsdENvZGUgPSBzbmFwc2hvdC5yZXN1bHRDb2RlO1xuICAgIHRoaXMudG9rZW5JbmRleCA9IHNuYXBzaG90LnRva2VuSW5kZXg7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIGFuZCByZXR1cm4gdGhlIGNvZGUgZ2VuZXJhdGVkIHNpbmNlIHRoZSBzbmFwc2hvdCwgbGVhdmluZyB0aGVcbiAgICogY3VycmVudCB0b2tlbiBwb3NpdGlvbiBpbi1wbGFjZS4gVW5saWtlIG1vc3QgVG9rZW5Qcm9jZXNzb3Igb3BlcmF0aW9ucyxcbiAgICogdGhpcyBvcGVyYXRpb24gY2FuIHJlc3VsdCBpbiBpbnB1dC9vdXRwdXQgbGluZSBudW1iZXIgbWlzbWF0Y2hlcyBiZWNhdXNlXG4gICAqIHRoZSByZW1vdmVkIGNvZGUgbWF5IGNvbnRhaW4gbmV3bGluZXMsIHNvIHRoaXMgb3BlcmF0aW9uIHNob3VsZCBiZSB1c2VkXG4gICAqIHNwYXJpbmdseS5cbiAgICovXG4gIGRhbmdlcm91c2x5R2V0QW5kUmVtb3ZlQ29kZVNpbmNlU25hcHNob3Qoc25hcHNob3QpIHtcbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLnJlc3VsdENvZGUuc2xpY2Uoc25hcHNob3QucmVzdWx0Q29kZS5sZW5ndGgpO1xuICAgIHRoaXMucmVzdWx0Q29kZSA9IHNuYXBzaG90LnJlc3VsdENvZGU7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHJlc2V0KCkge1xuICAgIHRoaXMucmVzdWx0Q29kZSA9IFwiXCI7XG4gICAgdGhpcy5yZXN1bHRNYXBwaW5ncyA9IG5ldyBBcnJheSh0aGlzLnRva2Vucy5sZW5ndGgpO1xuICAgIHRoaXMudG9rZW5JbmRleCA9IDA7XG4gIH1cblxuICBtYXRjaGVzQ29udGV4dHVhbEF0SW5kZXgoaW5kZXgsIGNvbnRleHR1YWxLZXl3b3JkKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMubWF0Y2hlczFBdEluZGV4KGluZGV4LCBfdHlwZXMuVG9rZW5UeXBlLm5hbWUpICYmXG4gICAgICB0aGlzLnRva2Vuc1tpbmRleF0uY29udGV4dHVhbEtleXdvcmQgPT09IGNvbnRleHR1YWxLZXl3b3JkXG4gICAgKTtcbiAgfVxuXG4gIGlkZW50aWZpZXJOYW1lQXRJbmRleChpbmRleCkge1xuICAgIC8vIFRPRE86IFdlIG5lZWQgdG8gcHJvY2VzcyBlc2NhcGVzIHNpbmNlIHRlY2huaWNhbGx5IHlvdSBjYW4gaGF2ZSB1bmljb2RlIGVzY2FwZXMgaW4gdmFyaWFibGVcbiAgICAvLyBuYW1lcy5cbiAgICByZXR1cm4gdGhpcy5pZGVudGlmaWVyTmFtZUZvclRva2VuKHRoaXMudG9rZW5zW2luZGV4XSk7XG4gIH1cblxuICBpZGVudGlmaWVyTmFtZUF0UmVsYXRpdmVJbmRleChyZWxhdGl2ZUluZGV4KSB7XG4gICAgcmV0dXJuIHRoaXMuaWRlbnRpZmllck5hbWVGb3JUb2tlbih0aGlzLnRva2VuQXRSZWxhdGl2ZUluZGV4KHJlbGF0aXZlSW5kZXgpKTtcbiAgfVxuXG4gIGlkZW50aWZpZXJOYW1lKCkge1xuICAgIHJldHVybiB0aGlzLmlkZW50aWZpZXJOYW1lRm9yVG9rZW4odGhpcy5jdXJyZW50VG9rZW4oKSk7XG4gIH1cblxuICBpZGVudGlmaWVyTmFtZUZvclRva2VuKHRva2VuKSB7XG4gICAgcmV0dXJuIHRoaXMuY29kZS5zbGljZSh0b2tlbi5zdGFydCwgdG9rZW4uZW5kKTtcbiAgfVxuXG4gIHJhd0NvZGVGb3JUb2tlbih0b2tlbikge1xuICAgIHJldHVybiB0aGlzLmNvZGUuc2xpY2UodG9rZW4uc3RhcnQsIHRva2VuLmVuZCk7XG4gIH1cblxuICBzdHJpbmdWYWx1ZUF0SW5kZXgoaW5kZXgpIHtcbiAgICByZXR1cm4gdGhpcy5zdHJpbmdWYWx1ZUZvclRva2VuKHRoaXMudG9rZW5zW2luZGV4XSk7XG4gIH1cblxuICBzdHJpbmdWYWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5zdHJpbmdWYWx1ZUZvclRva2VuKHRoaXMuY3VycmVudFRva2VuKCkpO1xuICB9XG5cbiAgc3RyaW5nVmFsdWVGb3JUb2tlbih0b2tlbikge1xuICAgIC8vIFRoaXMgaXMgdXNlZCB0byBpZGVudGlmeSB3aGVuIHR3byBpbXBvcnRzIGFyZSB0aGUgc2FtZSBhbmQgdG8gcmVzb2x2ZSBUeXBlU2NyaXB0IGVudW0ga2V5cy5cbiAgICAvLyBJZGVhbGx5IHdlJ2QgcHJvY2VzcyBlc2NhcGVzIHdpdGhpbiB0aGUgc3RyaW5ncywgYnV0IGZvciBub3cgd2UgcHJldHR5IG11Y2ggdGFrZSB0aGUgcmF3XG4gICAgLy8gY29kZS5cbiAgICByZXR1cm4gdGhpcy5jb2RlLnNsaWNlKHRva2VuLnN0YXJ0ICsgMSwgdG9rZW4uZW5kIC0gMSk7XG4gIH1cblxuICBtYXRjaGVzMUF0SW5kZXgoaW5kZXgsIHQxKSB7XG4gICAgcmV0dXJuIHRoaXMudG9rZW5zW2luZGV4XS50eXBlID09PSB0MTtcbiAgfVxuXG4gIG1hdGNoZXMyQXRJbmRleChpbmRleCwgdDEsIHQyKSB7XG4gICAgcmV0dXJuIHRoaXMudG9rZW5zW2luZGV4XS50eXBlID09PSB0MSAmJiB0aGlzLnRva2Vuc1tpbmRleCArIDFdLnR5cGUgPT09IHQyO1xuICB9XG5cbiAgbWF0Y2hlczNBdEluZGV4KGluZGV4LCB0MSwgdDIsIHQzKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMudG9rZW5zW2luZGV4XS50eXBlID09PSB0MSAmJlxuICAgICAgdGhpcy50b2tlbnNbaW5kZXggKyAxXS50eXBlID09PSB0MiAmJlxuICAgICAgdGhpcy50b2tlbnNbaW5kZXggKyAyXS50eXBlID09PSB0M1xuICAgICk7XG4gIH1cblxuICBtYXRjaGVzMSh0MSkge1xuICAgIHJldHVybiB0aGlzLnRva2Vuc1t0aGlzLnRva2VuSW5kZXhdLnR5cGUgPT09IHQxO1xuICB9XG5cbiAgbWF0Y2hlczIodDEsIHQyKSB7XG4gICAgcmV0dXJuIHRoaXMudG9rZW5zW3RoaXMudG9rZW5JbmRleF0udHlwZSA9PT0gdDEgJiYgdGhpcy50b2tlbnNbdGhpcy50b2tlbkluZGV4ICsgMV0udHlwZSA9PT0gdDI7XG4gIH1cblxuICBtYXRjaGVzMyh0MSwgdDIsIHQzKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMudG9rZW5zW3RoaXMudG9rZW5JbmRleF0udHlwZSA9PT0gdDEgJiZcbiAgICAgIHRoaXMudG9rZW5zW3RoaXMudG9rZW5JbmRleCArIDFdLnR5cGUgPT09IHQyICYmXG4gICAgICB0aGlzLnRva2Vuc1t0aGlzLnRva2VuSW5kZXggKyAyXS50eXBlID09PSB0M1xuICAgICk7XG4gIH1cblxuICBtYXRjaGVzNCh0MSwgdDIsIHQzLCB0NCkge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLnRva2Vuc1t0aGlzLnRva2VuSW5kZXhdLnR5cGUgPT09IHQxICYmXG4gICAgICB0aGlzLnRva2Vuc1t0aGlzLnRva2VuSW5kZXggKyAxXS50eXBlID09PSB0MiAmJlxuICAgICAgdGhpcy50b2tlbnNbdGhpcy50b2tlbkluZGV4ICsgMl0udHlwZSA9PT0gdDMgJiZcbiAgICAgIHRoaXMudG9rZW5zW3RoaXMudG9rZW5JbmRleCArIDNdLnR5cGUgPT09IHQ0XG4gICAgKTtcbiAgfVxuXG4gIG1hdGNoZXM1KHQxLCB0MiwgdDMsIHQ0LCB0NSkge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLnRva2Vuc1t0aGlzLnRva2VuSW5kZXhdLnR5cGUgPT09IHQxICYmXG4gICAgICB0aGlzLnRva2Vuc1t0aGlzLnRva2VuSW5kZXggKyAxXS50eXBlID09PSB0MiAmJlxuICAgICAgdGhpcy50b2tlbnNbdGhpcy50b2tlbkluZGV4ICsgMl0udHlwZSA9PT0gdDMgJiZcbiAgICAgIHRoaXMudG9rZW5zW3RoaXMudG9rZW5JbmRleCArIDNdLnR5cGUgPT09IHQ0ICYmXG4gICAgICB0aGlzLnRva2Vuc1t0aGlzLnRva2VuSW5kZXggKyA0XS50eXBlID09PSB0NVxuICAgICk7XG4gIH1cblxuICBtYXRjaGVzQ29udGV4dHVhbChjb250ZXh0dWFsS2V5d29yZCkge1xuICAgIHJldHVybiB0aGlzLm1hdGNoZXNDb250ZXh0dWFsQXRJbmRleCh0aGlzLnRva2VuSW5kZXgsIGNvbnRleHR1YWxLZXl3b3JkKTtcbiAgfVxuXG4gIG1hdGNoZXNDb250ZXh0SWRBbmRMYWJlbCh0eXBlLCBjb250ZXh0SWQpIHtcbiAgICByZXR1cm4gdGhpcy5tYXRjaGVzMSh0eXBlKSAmJiB0aGlzLmN1cnJlbnRUb2tlbigpLmNvbnRleHRJZCA9PT0gY29udGV4dElkO1xuICB9XG5cbiAgcHJldmlvdXNXaGl0ZXNwYWNlQW5kQ29tbWVudHMoKSB7XG4gICAgbGV0IHdoaXRlc3BhY2VBbmRDb21tZW50cyA9IHRoaXMuY29kZS5zbGljZShcbiAgICAgIHRoaXMudG9rZW5JbmRleCA+IDAgPyB0aGlzLnRva2Vuc1t0aGlzLnRva2VuSW5kZXggLSAxXS5lbmQgOiAwLFxuICAgICAgdGhpcy50b2tlbkluZGV4IDwgdGhpcy50b2tlbnMubGVuZ3RoID8gdGhpcy50b2tlbnNbdGhpcy50b2tlbkluZGV4XS5zdGFydCA6IHRoaXMuY29kZS5sZW5ndGgsXG4gICAgKTtcbiAgICBpZiAodGhpcy5pc0Zsb3dFbmFibGVkKSB7XG4gICAgICB3aGl0ZXNwYWNlQW5kQ29tbWVudHMgPSB3aGl0ZXNwYWNlQW5kQ29tbWVudHMucmVwbGFjZSgvQGZsb3cvZywgXCJcIik7XG4gICAgfVxuICAgIHJldHVybiB3aGl0ZXNwYWNlQW5kQ29tbWVudHM7XG4gIH1cblxuICByZXBsYWNlVG9rZW4obmV3Q29kZSkge1xuICAgIHRoaXMucmVzdWx0Q29kZSArPSB0aGlzLnByZXZpb3VzV2hpdGVzcGFjZUFuZENvbW1lbnRzKCk7XG4gICAgdGhpcy5hcHBlbmRUb2tlblByZWZpeCgpO1xuICAgIHRoaXMucmVzdWx0TWFwcGluZ3NbdGhpcy50b2tlbkluZGV4XSA9IHRoaXMucmVzdWx0Q29kZS5sZW5ndGg7XG4gICAgdGhpcy5yZXN1bHRDb2RlICs9IG5ld0NvZGU7XG4gICAgdGhpcy5hcHBlbmRUb2tlblN1ZmZpeCgpO1xuICAgIHRoaXMudG9rZW5JbmRleCsrO1xuICB9XG5cbiAgcmVwbGFjZVRva2VuVHJpbW1pbmdMZWZ0V2hpdGVzcGFjZShuZXdDb2RlKSB7XG4gICAgdGhpcy5yZXN1bHRDb2RlICs9IHRoaXMucHJldmlvdXNXaGl0ZXNwYWNlQW5kQ29tbWVudHMoKS5yZXBsYWNlKC9bXlxcclxcbl0vZywgXCJcIik7XG4gICAgdGhpcy5hcHBlbmRUb2tlblByZWZpeCgpO1xuICAgIHRoaXMucmVzdWx0TWFwcGluZ3NbdGhpcy50b2tlbkluZGV4XSA9IHRoaXMucmVzdWx0Q29kZS5sZW5ndGg7XG4gICAgdGhpcy5yZXN1bHRDb2RlICs9IG5ld0NvZGU7XG4gICAgdGhpcy5hcHBlbmRUb2tlblN1ZmZpeCgpO1xuICAgIHRoaXMudG9rZW5JbmRleCsrO1xuICB9XG5cbiAgcmVtb3ZlSW5pdGlhbFRva2VuKCkge1xuICAgIHRoaXMucmVwbGFjZVRva2VuKFwiXCIpO1xuICB9XG5cbiAgcmVtb3ZlVG9rZW4oKSB7XG4gICAgdGhpcy5yZXBsYWNlVG9rZW5UcmltbWluZ0xlZnRXaGl0ZXNwYWNlKFwiXCIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhbGwgY29kZSB1bnRpbCB0aGUgbmV4dCB9LCBhY2NvdW50aW5nIGZvciBiYWxhbmNlZCBicmFjZXMuXG4gICAqL1xuICByZW1vdmVCYWxhbmNlZENvZGUoKSB7XG4gICAgbGV0IGJyYWNlRGVwdGggPSAwO1xuICAgIHdoaWxlICghdGhpcy5pc0F0RW5kKCkpIHtcbiAgICAgIGlmICh0aGlzLm1hdGNoZXMxKF90eXBlcy5Ub2tlblR5cGUuYnJhY2VMKSkge1xuICAgICAgICBicmFjZURlcHRoKys7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMubWF0Y2hlczEoX3R5cGVzLlRva2VuVHlwZS5icmFjZVIpKSB7XG4gICAgICAgIGlmIChicmFjZURlcHRoID09PSAwKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGJyYWNlRGVwdGgtLTtcbiAgICAgIH1cbiAgICAgIHRoaXMucmVtb3ZlVG9rZW4oKTtcbiAgICB9XG4gIH1cblxuICBjb3B5RXhwZWN0ZWRUb2tlbih0b2tlblR5cGUpIHtcbiAgICBpZiAodGhpcy50b2tlbnNbdGhpcy50b2tlbkluZGV4XS50eXBlICE9PSB0b2tlblR5cGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgdG9rZW4gJHt0b2tlblR5cGV9YCk7XG4gICAgfVxuICAgIHRoaXMuY29weVRva2VuKCk7XG4gIH1cblxuICBjb3B5VG9rZW4oKSB7XG4gICAgdGhpcy5yZXN1bHRDb2RlICs9IHRoaXMucHJldmlvdXNXaGl0ZXNwYWNlQW5kQ29tbWVudHMoKTtcbiAgICB0aGlzLmFwcGVuZFRva2VuUHJlZml4KCk7XG4gICAgdGhpcy5yZXN1bHRNYXBwaW5nc1t0aGlzLnRva2VuSW5kZXhdID0gdGhpcy5yZXN1bHRDb2RlLmxlbmd0aDtcbiAgICB0aGlzLnJlc3VsdENvZGUgKz0gdGhpcy5jb2RlLnNsaWNlKFxuICAgICAgdGhpcy50b2tlbnNbdGhpcy50b2tlbkluZGV4XS5zdGFydCxcbiAgICAgIHRoaXMudG9rZW5zW3RoaXMudG9rZW5JbmRleF0uZW5kLFxuICAgICk7XG4gICAgdGhpcy5hcHBlbmRUb2tlblN1ZmZpeCgpO1xuICAgIHRoaXMudG9rZW5JbmRleCsrO1xuICB9XG5cbiAgY29weVRva2VuV2l0aFByZWZpeChwcmVmaXgpIHtcbiAgICB0aGlzLnJlc3VsdENvZGUgKz0gdGhpcy5wcmV2aW91c1doaXRlc3BhY2VBbmRDb21tZW50cygpO1xuICAgIHRoaXMuYXBwZW5kVG9rZW5QcmVmaXgoKTtcbiAgICB0aGlzLnJlc3VsdENvZGUgKz0gcHJlZml4O1xuICAgIHRoaXMucmVzdWx0TWFwcGluZ3NbdGhpcy50b2tlbkluZGV4XSA9IHRoaXMucmVzdWx0Q29kZS5sZW5ndGg7XG4gICAgdGhpcy5yZXN1bHRDb2RlICs9IHRoaXMuY29kZS5zbGljZShcbiAgICAgIHRoaXMudG9rZW5zW3RoaXMudG9rZW5JbmRleF0uc3RhcnQsXG4gICAgICB0aGlzLnRva2Vuc1t0aGlzLnRva2VuSW5kZXhdLmVuZCxcbiAgICApO1xuICAgIHRoaXMuYXBwZW5kVG9rZW5TdWZmaXgoKTtcbiAgICB0aGlzLnRva2VuSW5kZXgrKztcbiAgfVxuXG4gICBhcHBlbmRUb2tlblByZWZpeCgpIHtcbiAgICBjb25zdCB0b2tlbiA9IHRoaXMuY3VycmVudFRva2VuKCk7XG4gICAgaWYgKHRva2VuLm51bU51bGxpc2hDb2FsZXNjZVN0YXJ0cyB8fCB0b2tlbi5pc09wdGlvbmFsQ2hhaW5TdGFydCkge1xuICAgICAgdG9rZW4uaXNBc3luY09wZXJhdGlvbiA9IF9pc0FzeW5jT3BlcmF0aW9uMi5kZWZhdWx0LmNhbGwodm9pZCAwLCB0aGlzKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZGlzYWJsZUVTVHJhbnNmb3Jtcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodG9rZW4ubnVtTnVsbGlzaENvYWxlc2NlU3RhcnRzKSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRva2VuLm51bU51bGxpc2hDb2FsZXNjZVN0YXJ0czsgaSsrKSB7XG4gICAgICAgIGlmICh0b2tlbi5pc0FzeW5jT3BlcmF0aW9uKSB7XG4gICAgICAgICAgdGhpcy5yZXN1bHRDb2RlICs9IFwiYXdhaXQgXCI7XG4gICAgICAgICAgdGhpcy5yZXN1bHRDb2RlICs9IHRoaXMuaGVscGVyTWFuYWdlci5nZXRIZWxwZXJOYW1lKFwiYXN5bmNOdWxsaXNoQ29hbGVzY2VcIik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5yZXN1bHRDb2RlICs9IHRoaXMuaGVscGVyTWFuYWdlci5nZXRIZWxwZXJOYW1lKFwibnVsbGlzaENvYWxlc2NlXCIpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVzdWx0Q29kZSArPSBcIihcIjtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRva2VuLmlzT3B0aW9uYWxDaGFpblN0YXJ0KSB7XG4gICAgICBpZiAodG9rZW4uaXNBc3luY09wZXJhdGlvbikge1xuICAgICAgICB0aGlzLnJlc3VsdENvZGUgKz0gXCJhd2FpdCBcIjtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnRva2VuSW5kZXggPiAwICYmIHRoaXMudG9rZW5BdFJlbGF0aXZlSW5kZXgoLTEpLnR5cGUgPT09IF90eXBlcy5Ub2tlblR5cGUuX2RlbGV0ZSkge1xuICAgICAgICBpZiAodG9rZW4uaXNBc3luY09wZXJhdGlvbikge1xuICAgICAgICAgIHRoaXMucmVzdWx0Q29kZSArPSB0aGlzLmhlbHBlck1hbmFnZXIuZ2V0SGVscGVyTmFtZShcImFzeW5jT3B0aW9uYWxDaGFpbkRlbGV0ZVwiKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnJlc3VsdENvZGUgKz0gdGhpcy5oZWxwZXJNYW5hZ2VyLmdldEhlbHBlck5hbWUoXCJvcHRpb25hbENoYWluRGVsZXRlXCIpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHRva2VuLmlzQXN5bmNPcGVyYXRpb24pIHtcbiAgICAgICAgdGhpcy5yZXN1bHRDb2RlICs9IHRoaXMuaGVscGVyTWFuYWdlci5nZXRIZWxwZXJOYW1lKFwiYXN5bmNPcHRpb25hbENoYWluXCIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yZXN1bHRDb2RlICs9IHRoaXMuaGVscGVyTWFuYWdlci5nZXRIZWxwZXJOYW1lKFwib3B0aW9uYWxDaGFpblwiKTtcbiAgICAgIH1cbiAgICAgIHRoaXMucmVzdWx0Q29kZSArPSBcIihbXCI7XG4gICAgfVxuICB9XG5cbiAgIGFwcGVuZFRva2VuU3VmZml4KCkge1xuICAgIGNvbnN0IHRva2VuID0gdGhpcy5jdXJyZW50VG9rZW4oKTtcbiAgICBpZiAodG9rZW4uaXNPcHRpb25hbENoYWluRW5kICYmICF0aGlzLmRpc2FibGVFU1RyYW5zZm9ybXMpIHtcbiAgICAgIHRoaXMucmVzdWx0Q29kZSArPSBcIl0pXCI7XG4gICAgfVxuICAgIGlmICh0b2tlbi5udW1OdWxsaXNoQ29hbGVzY2VFbmRzICYmICF0aGlzLmRpc2FibGVFU1RyYW5zZm9ybXMpIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdG9rZW4ubnVtTnVsbGlzaENvYWxlc2NlRW5kczsgaSsrKSB7XG4gICAgICAgIHRoaXMucmVzdWx0Q29kZSArPSBcIikpXCI7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYXBwZW5kQ29kZShjb2RlKSB7XG4gICAgdGhpcy5yZXN1bHRDb2RlICs9IGNvZGU7XG4gIH1cblxuICBjdXJyZW50VG9rZW4oKSB7XG4gICAgcmV0dXJuIHRoaXMudG9rZW5zW3RoaXMudG9rZW5JbmRleF07XG4gIH1cblxuICBjdXJyZW50VG9rZW5Db2RlKCkge1xuICAgIGNvbnN0IHRva2VuID0gdGhpcy5jdXJyZW50VG9rZW4oKTtcbiAgICByZXR1cm4gdGhpcy5jb2RlLnNsaWNlKHRva2VuLnN0YXJ0LCB0b2tlbi5lbmQpO1xuICB9XG5cbiAgdG9rZW5BdFJlbGF0aXZlSW5kZXgocmVsYXRpdmVJbmRleCkge1xuICAgIHJldHVybiB0aGlzLnRva2Vuc1t0aGlzLnRva2VuSW5kZXggKyByZWxhdGl2ZUluZGV4XTtcbiAgfVxuXG4gIGN1cnJlbnRJbmRleCgpIHtcbiAgICByZXR1cm4gdGhpcy50b2tlbkluZGV4O1xuICB9XG5cbiAgLyoqXG4gICAqIE1vdmUgdG8gdGhlIG5leHQgdG9rZW4uIE9ubHkgc3VpdGFibGUgaW4gcHJlcHJvY2Vzc2luZyBzdGVwcy4gV2hlblxuICAgKiBnZW5lcmF0aW5nIG5ldyBjb2RlLCB5b3Ugc2hvdWxkIHVzZSBjb3B5VG9rZW4gb3IgcmVtb3ZlVG9rZW4uXG4gICAqL1xuICBuZXh0VG9rZW4oKSB7XG4gICAgaWYgKHRoaXMudG9rZW5JbmRleCA9PT0gdGhpcy50b2tlbnMubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbmV4cGVjdGVkbHkgcmVhY2hlZCBlbmQgb2YgaW5wdXQuXCIpO1xuICAgIH1cbiAgICB0aGlzLnRva2VuSW5kZXgrKztcbiAgfVxuXG4gIHByZXZpb3VzVG9rZW4oKSB7XG4gICAgdGhpcy50b2tlbkluZGV4LS07XG4gIH1cblxuICBmaW5pc2goKSB7XG4gICAgaWYgKHRoaXMudG9rZW5JbmRleCAhPT0gdGhpcy50b2tlbnMubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUcmllZCB0byBmaW5pc2ggcHJvY2Vzc2luZyB0b2tlbnMgYmVmb3JlIHJlYWNoaW5nIHRoZSBlbmQuXCIpO1xuICAgIH1cbiAgICB0aGlzLnJlc3VsdENvZGUgKz0gdGhpcy5wcmV2aW91c1doaXRlc3BhY2VBbmRDb21tZW50cygpO1xuICAgIHJldHVybiB7Y29kZTogdGhpcy5yZXN1bHRDb2RlLCBtYXBwaW5nczogdGhpcy5yZXN1bHRNYXBwaW5nc307XG4gIH1cblxuICBpc0F0RW5kKCkge1xuICAgIHJldHVybiB0aGlzLnRva2VuSW5kZXggPT09IHRoaXMudG9rZW5zLmxlbmd0aDtcbiAgfVxufSBleHBvcnRzLmRlZmF1bHQgPSBUb2tlblByb2Nlc3NvcjtcbiIsICJcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHt2YWx1ZTogdHJ1ZX0pO1xuXG52YXIgX2tleXdvcmRzID0gcmVxdWlyZSgnLi4vcGFyc2VyL3Rva2VuaXplci9rZXl3b3JkcycpO1xudmFyIF90eXBlcyA9IHJlcXVpcmUoJy4uL3BhcnNlci90b2tlbml6ZXIvdHlwZXMnKTtcblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbi8qKlxuICogR2V0IGluZm9ybWF0aW9uIGFib3V0IHRoZSBjbGFzcyBmaWVsZHMgZm9yIHRoaXMgY2xhc3MsIGdpdmVuIGEgdG9rZW4gcHJvY2Vzc29yIHBvaW50aW5nIHRvIHRoZVxuICogb3Blbi1icmFjZSBhdCB0aGUgc3RhcnQgb2YgdGhlIGNsYXNzLlxuICovXG4gZnVuY3Rpb24gZ2V0Q2xhc3NJbmZvKFxuICByb290VHJhbnNmb3JtZXIsXG4gIHRva2VucyxcbiAgbmFtZU1hbmFnZXIsXG4gIGRpc2FibGVFU1RyYW5zZm9ybXMsXG4pIHtcbiAgY29uc3Qgc25hcHNob3QgPSB0b2tlbnMuc25hcHNob3QoKTtcblxuICBjb25zdCBoZWFkZXJJbmZvID0gcHJvY2Vzc0NsYXNzSGVhZGVyKHRva2Vucyk7XG5cbiAgbGV0IGNvbnN0cnVjdG9ySW5pdGlhbGl6ZXJTdGF0ZW1lbnRzID0gW107XG4gIGNvbnN0IGluc3RhbmNlSW5pdGlhbGl6ZXJOYW1lcyA9IFtdO1xuICBjb25zdCBzdGF0aWNJbml0aWFsaXplck5hbWVzID0gW107XG4gIGxldCBjb25zdHJ1Y3Rvckluc2VydFBvcyA9IG51bGw7XG4gIGNvbnN0IGZpZWxkcyA9IFtdO1xuICBjb25zdCByYW5nZXNUb1JlbW92ZSA9IFtdO1xuXG4gIGNvbnN0IGNsYXNzQ29udGV4dElkID0gdG9rZW5zLmN1cnJlbnRUb2tlbigpLmNvbnRleHRJZDtcbiAgaWYgKGNsYXNzQ29udGV4dElkID09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJFeHBlY3RlZCBub24tbnVsbCBjbGFzcyBjb250ZXh0IElEIG9uIGNsYXNzIG9wZW4tYnJhY2UuXCIpO1xuICB9XG5cbiAgdG9rZW5zLm5leHRUb2tlbigpO1xuICB3aGlsZSAoIXRva2Vucy5tYXRjaGVzQ29udGV4dElkQW5kTGFiZWwoX3R5cGVzLlRva2VuVHlwZS5icmFjZVIsIGNsYXNzQ29udGV4dElkKSkge1xuICAgIGlmICh0b2tlbnMubWF0Y2hlc0NvbnRleHR1YWwoX2tleXdvcmRzLkNvbnRleHR1YWxLZXl3b3JkLl9jb25zdHJ1Y3RvcikgJiYgIXRva2Vucy5jdXJyZW50VG9rZW4oKS5pc1R5cGUpIHtcbiAgICAgICh7Y29uc3RydWN0b3JJbml0aWFsaXplclN0YXRlbWVudHMsIGNvbnN0cnVjdG9ySW5zZXJ0UG9zfSA9IHByb2Nlc3NDb25zdHJ1Y3Rvcih0b2tlbnMpKTtcbiAgICB9IGVsc2UgaWYgKHRva2Vucy5tYXRjaGVzMShfdHlwZXMuVG9rZW5UeXBlLnNlbWkpKSB7XG4gICAgICBpZiAoIWRpc2FibGVFU1RyYW5zZm9ybXMpIHtcbiAgICAgICAgcmFuZ2VzVG9SZW1vdmUucHVzaCh7c3RhcnQ6IHRva2Vucy5jdXJyZW50SW5kZXgoKSwgZW5kOiB0b2tlbnMuY3VycmVudEluZGV4KCkgKyAxfSk7XG4gICAgICB9XG4gICAgICB0b2tlbnMubmV4dFRva2VuKCk7XG4gICAgfSBlbHNlIGlmICh0b2tlbnMuY3VycmVudFRva2VuKCkuaXNUeXBlKSB7XG4gICAgICB0b2tlbnMubmV4dFRva2VuKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEVpdGhlciBhIG1ldGhvZCBvciBhIGZpZWxkLiBTa2lwIHRvIHRoZSBpZGVudGlmaWVyIHBhcnQuXG4gICAgICBjb25zdCBzdGF0ZW1lbnRTdGFydEluZGV4ID0gdG9rZW5zLmN1cnJlbnRJbmRleCgpO1xuICAgICAgbGV0IGlzU3RhdGljID0gZmFsc2U7XG4gICAgICBsZXQgaXNFU1ByaXZhdGUgPSBmYWxzZTtcbiAgICAgIGxldCBpc0RlY2xhcmVPckFic3RyYWN0ID0gZmFsc2U7XG4gICAgICB3aGlsZSAoaXNBY2Nlc3NNb2RpZmllcih0b2tlbnMuY3VycmVudFRva2VuKCkpKSB7XG4gICAgICAgIGlmICh0b2tlbnMubWF0Y2hlczEoX3R5cGVzLlRva2VuVHlwZS5fc3RhdGljKSkge1xuICAgICAgICAgIGlzU3RhdGljID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodG9rZW5zLm1hdGNoZXMxKF90eXBlcy5Ub2tlblR5cGUuaGFzaCkpIHtcbiAgICAgICAgICBpc0VTUHJpdmF0ZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRva2Vucy5tYXRjaGVzMShfdHlwZXMuVG9rZW5UeXBlLl9kZWNsYXJlKSB8fCB0b2tlbnMubWF0Y2hlczEoX3R5cGVzLlRva2VuVHlwZS5fYWJzdHJhY3QpKSB7XG4gICAgICAgICAgaXNEZWNsYXJlT3JBYnN0cmFjdCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgdG9rZW5zLm5leHRUb2tlbigpO1xuICAgICAgfVxuICAgICAgaWYgKGlzU3RhdGljICYmIHRva2Vucy5tYXRjaGVzMShfdHlwZXMuVG9rZW5UeXBlLmJyYWNlTCkpIHtcbiAgICAgICAgLy8gVGhpcyBpcyBhIHN0YXRpYyBibG9jaywgc28gZG9uJ3QgcHJvY2VzcyBpdCBpbiBhbnkgc3BlY2lhbCB3YXkuXG4gICAgICAgIHNraXBUb05leHRDbGFzc0VsZW1lbnQodG9rZW5zLCBjbGFzc0NvbnRleHRJZCk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKGlzRVNQcml2YXRlKSB7XG4gICAgICAgIC8vIFN1Y3Jhc2UgZG9lc24ndCBhdHRlbXB0IHRvIHRyYW5zcGlsZSBwcml2YXRlIGZpZWxkczsganVzdCBsZWF2ZSB0aGVtIGFzLWlzLlxuICAgICAgICBza2lwVG9OZXh0Q2xhc3NFbGVtZW50KHRva2VucywgY2xhc3NDb250ZXh0SWQpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgdG9rZW5zLm1hdGNoZXNDb250ZXh0dWFsKF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fY29uc3RydWN0b3IpICYmXG4gICAgICAgICF0b2tlbnMuY3VycmVudFRva2VuKCkuaXNUeXBlXG4gICAgICApIHtcbiAgICAgICAgKHtjb25zdHJ1Y3RvckluaXRpYWxpemVyU3RhdGVtZW50cywgY29uc3RydWN0b3JJbnNlcnRQb3N9ID0gcHJvY2Vzc0NvbnN0cnVjdG9yKHRva2VucykpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbmFtZVN0YXJ0SW5kZXggPSB0b2tlbnMuY3VycmVudEluZGV4KCk7XG4gICAgICBza2lwRmllbGROYW1lKHRva2Vucyk7XG4gICAgICBpZiAodG9rZW5zLm1hdGNoZXMxKF90eXBlcy5Ub2tlblR5cGUubGVzc1RoYW4pIHx8IHRva2Vucy5tYXRjaGVzMShfdHlwZXMuVG9rZW5UeXBlLnBhcmVuTCkpIHtcbiAgICAgICAgLy8gVGhpcyBpcyBhIG1ldGhvZCwgc28gbm90aGluZyB0byBwcm9jZXNzLlxuICAgICAgICBza2lwVG9OZXh0Q2xhc3NFbGVtZW50KHRva2VucywgY2xhc3NDb250ZXh0SWQpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIC8vIFRoZXJlIG1pZ2h0IGJlIGEgdHlwZSBhbm5vdGF0aW9uIHRoYXQgd2UgbmVlZCB0byBza2lwLlxuICAgICAgd2hpbGUgKHRva2Vucy5jdXJyZW50VG9rZW4oKS5pc1R5cGUpIHtcbiAgICAgICAgdG9rZW5zLm5leHRUb2tlbigpO1xuICAgICAgfVxuICAgICAgaWYgKHRva2Vucy5tYXRjaGVzMShfdHlwZXMuVG9rZW5UeXBlLmVxKSkge1xuICAgICAgICBjb25zdCBlcXVhbHNJbmRleCA9IHRva2Vucy5jdXJyZW50SW5kZXgoKTtcbiAgICAgICAgLy8gVGhpcyBpcyBhbiBpbml0aWFsaXplciwgc28gd2UgbmVlZCB0byB3cmFwIGluIGFuIGluaXRpYWxpemVyIG1ldGhvZC5cbiAgICAgICAgY29uc3QgdmFsdWVFbmQgPSB0b2tlbnMuY3VycmVudFRva2VuKCkucmhzRW5kSW5kZXg7XG4gICAgICAgIGlmICh2YWx1ZUVuZCA9PSBudWxsKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRXhwZWN0ZWQgcmhzRW5kSW5kZXggb24gY2xhc3MgZmllbGQgYXNzaWdubWVudC5cIik7XG4gICAgICAgIH1cbiAgICAgICAgdG9rZW5zLm5leHRUb2tlbigpO1xuICAgICAgICB3aGlsZSAodG9rZW5zLmN1cnJlbnRJbmRleCgpIDwgdmFsdWVFbmQpIHtcbiAgICAgICAgICByb290VHJhbnNmb3JtZXIucHJvY2Vzc1Rva2VuKCk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGluaXRpYWxpemVyTmFtZTtcbiAgICAgICAgaWYgKGlzU3RhdGljKSB7XG4gICAgICAgICAgaW5pdGlhbGl6ZXJOYW1lID0gbmFtZU1hbmFnZXIuY2xhaW1GcmVlTmFtZShcIl9faW5pdFN0YXRpY1wiKTtcbiAgICAgICAgICBzdGF0aWNJbml0aWFsaXplck5hbWVzLnB1c2goaW5pdGlhbGl6ZXJOYW1lKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpbml0aWFsaXplck5hbWUgPSBuYW1lTWFuYWdlci5jbGFpbUZyZWVOYW1lKFwiX19pbml0XCIpO1xuICAgICAgICAgIGluc3RhbmNlSW5pdGlhbGl6ZXJOYW1lcy5wdXNoKGluaXRpYWxpemVyTmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gRmllbGRzIHN0YXJ0IGF0IHRoZSBuYW1lLCBzbyBgc3RhdGljIHggPSAxO2AgaGFzIGEgZmllbGQgcmFuZ2Ugb2YgYHggPSAxO2AuXG4gICAgICAgIGZpZWxkcy5wdXNoKHtcbiAgICAgICAgICBpbml0aWFsaXplck5hbWUsXG4gICAgICAgICAgZXF1YWxzSW5kZXgsXG4gICAgICAgICAgc3RhcnQ6IG5hbWVTdGFydEluZGV4LFxuICAgICAgICAgIGVuZDogdG9rZW5zLmN1cnJlbnRJbmRleCgpLFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAoIWRpc2FibGVFU1RyYW5zZm9ybXMgfHwgaXNEZWNsYXJlT3JBYnN0cmFjdCkge1xuICAgICAgICAvLyBUaGlzIGlzIGEgcmVndWxhciBmaWVsZCBkZWNsYXJhdGlvbiwgbGlrZSBgeDtgLiBXaXRoIHRoZSBjbGFzcyB0cmFuc2Zvcm0gZW5hYmxlZCwgd2UganVzdFxuICAgICAgICAvLyByZW1vdmUgdGhlIGxpbmUgc28gdGhhdCBubyBvdXRwdXQgaXMgcHJvZHVjZWQuIFdpdGggdGhlIGNsYXNzIHRyYW5zZm9ybSBkaXNhYmxlZCwgd2VcbiAgICAgICAgLy8gdXN1YWxseSB3YW50IHRvIHByZXNlcnZlIHRoZSBkZWNsYXJhdGlvbiAoYnV0IHN0aWxsIHN0cmlwIHR5cGVzKSwgYnV0IGlmIHRoZSBgZGVjbGFyZWBcbiAgICAgICAgLy8gb3IgYGFic3RyYWN0YCBrZXl3b3JkIGlzIHNwZWNpZmllZCwgd2Ugc2hvdWxkIHJlbW92ZSB0aGUgbGluZSB0byBhdm9pZCBpbml0aWFsaXppbmcgdGhlXG4gICAgICAgIC8vIHZhbHVlIHRvIHVuZGVmaW5lZC5cbiAgICAgICAgcmFuZ2VzVG9SZW1vdmUucHVzaCh7c3RhcnQ6IHN0YXRlbWVudFN0YXJ0SW5kZXgsIGVuZDogdG9rZW5zLmN1cnJlbnRJbmRleCgpfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdG9rZW5zLnJlc3RvcmVUb1NuYXBzaG90KHNuYXBzaG90KTtcbiAgaWYgKGRpc2FibGVFU1RyYW5zZm9ybXMpIHtcbiAgICAvLyBXaXRoIEVTIHRyYW5zZm9ybXMgZGlzYWJsZWQsIHdlIGRvbid0IHdhbnQgdG8gdHJhbnNmb3JtIHJlZ3VsYXIgY2xhc3NcbiAgICAvLyBmaWVsZCBkZWNsYXJhdGlvbnMsIGFuZCB3ZSBkb24ndCBuZWVkIHRvIGRvIGFueSBhZGRpdGlvbmFsIHRyaWNrcyB0b1xuICAgIC8vIHJlZmVyZW5jZSB0aGUgY29uc3RydWN0b3IgZm9yIHN0YXRpYyBpbml0LCBidXQgd2Ugc3RpbGwgbmVlZCB0byB0cmFuc2Zvcm1cbiAgICAvLyBUeXBlU2NyaXB0IGZpZWxkIGluaXRpYWxpemVycyBkZWZpbmVkIGFzIGNvbnN0cnVjdG9yIHBhcmFtZXRlcnMgYW5kIHdlXG4gICAgLy8gc3RpbGwgbmVlZCB0byByZW1vdmUgYGRlY2xhcmVgIGZpZWxkcy4gRm9yIG5vdywgd2UgcnVuIHRoZSBzYW1lIGNvZGVcbiAgICAvLyBwYXRoIGJ1dCBvbWl0IGFueSBmaWVsZCBpbmZvcm1hdGlvbiwgYXMgaWYgdGhlIGNsYXNzIGhhZCBubyBmaWVsZFxuICAgIC8vIGRlY2xhcmF0aW9ucy4gSW4gdGhlIGZ1dHVyZSwgd2hlbiB3ZSBmdWxseSBkcm9wIHRoZSBjbGFzcyBmaWVsZHNcbiAgICAvLyB0cmFuc2Zvcm0sIHdlIGNhbiBzaW1wbGlmeSB0aGlzIGNvZGUgc2lnbmlmaWNhbnRseS5cbiAgICByZXR1cm4ge1xuICAgICAgaGVhZGVySW5mbyxcbiAgICAgIGNvbnN0cnVjdG9ySW5pdGlhbGl6ZXJTdGF0ZW1lbnRzLFxuICAgICAgaW5zdGFuY2VJbml0aWFsaXplck5hbWVzOiBbXSxcbiAgICAgIHN0YXRpY0luaXRpYWxpemVyTmFtZXM6IFtdLFxuICAgICAgY29uc3RydWN0b3JJbnNlcnRQb3MsXG4gICAgICBmaWVsZHM6IFtdLFxuICAgICAgcmFuZ2VzVG9SZW1vdmUsXG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4ge1xuICAgICAgaGVhZGVySW5mbyxcbiAgICAgIGNvbnN0cnVjdG9ySW5pdGlhbGl6ZXJTdGF0ZW1lbnRzLFxuICAgICAgaW5zdGFuY2VJbml0aWFsaXplck5hbWVzLFxuICAgICAgc3RhdGljSW5pdGlhbGl6ZXJOYW1lcyxcbiAgICAgIGNvbnN0cnVjdG9ySW5zZXJ0UG9zLFxuICAgICAgZmllbGRzLFxuICAgICAgcmFuZ2VzVG9SZW1vdmUsXG4gICAgfTtcbiAgfVxufSBleHBvcnRzLmRlZmF1bHQgPSBnZXRDbGFzc0luZm87XG5cbi8qKlxuICogTW92ZSB0aGUgdG9rZW4gcHJvY2Vzc29yIHRvIHRoZSBuZXh0IG1ldGhvZC9maWVsZCBpbiB0aGUgY2xhc3MuXG4gKlxuICogVG8gZG8gdGhhdCwgd2Ugc2VlayBmb3J3YXJkIHRvIHRoZSBuZXh0IHN0YXJ0IG9mIGEgY2xhc3MgbmFtZSAoZWl0aGVyIGFuIG9wZW5cbiAqIGJyYWNrZXQgb3IgYW4gaWRlbnRpZmllciwgb3IgdGhlIGNsb3NpbmcgY3VybHkgYnJhY2UpLCB0aGVuIHNlZWsgYmFja3dhcmQgdG9cbiAqIGluY2x1ZGUgYW55IGFjY2VzcyBtb2RpZmllcnMuXG4gKi9cbmZ1bmN0aW9uIHNraXBUb05leHRDbGFzc0VsZW1lbnQodG9rZW5zLCBjbGFzc0NvbnRleHRJZCkge1xuICB0b2tlbnMubmV4dFRva2VuKCk7XG4gIHdoaWxlICh0b2tlbnMuY3VycmVudFRva2VuKCkuY29udGV4dElkICE9PSBjbGFzc0NvbnRleHRJZCkge1xuICAgIHRva2Vucy5uZXh0VG9rZW4oKTtcbiAgfVxuICB3aGlsZSAoaXNBY2Nlc3NNb2RpZmllcih0b2tlbnMudG9rZW5BdFJlbGF0aXZlSW5kZXgoLTEpKSkge1xuICAgIHRva2Vucy5wcmV2aW91c1Rva2VuKCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gcHJvY2Vzc0NsYXNzSGVhZGVyKHRva2Vucykge1xuICBjb25zdCBjbGFzc1Rva2VuID0gdG9rZW5zLmN1cnJlbnRUb2tlbigpO1xuICBjb25zdCBjb250ZXh0SWQgPSBjbGFzc1Rva2VuLmNvbnRleHRJZDtcbiAgaWYgKGNvbnRleHRJZCA9PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiRXhwZWN0ZWQgY29udGV4dCBJRCBvbiBjbGFzcyB0b2tlbi5cIik7XG4gIH1cbiAgY29uc3QgaXNFeHByZXNzaW9uID0gY2xhc3NUb2tlbi5pc0V4cHJlc3Npb247XG4gIGlmIChpc0V4cHJlc3Npb24gPT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkV4cGVjdGVkIGlzRXhwcmVzc2lvbiBvbiBjbGFzcyB0b2tlbi5cIik7XG4gIH1cbiAgbGV0IGNsYXNzTmFtZSA9IG51bGw7XG4gIGxldCBoYXNTdXBlcmNsYXNzID0gZmFsc2U7XG4gIHRva2Vucy5uZXh0VG9rZW4oKTtcbiAgaWYgKHRva2Vucy5tYXRjaGVzMShfdHlwZXMuVG9rZW5UeXBlLm5hbWUpKSB7XG4gICAgY2xhc3NOYW1lID0gdG9rZW5zLmlkZW50aWZpZXJOYW1lKCk7XG4gIH1cbiAgd2hpbGUgKCF0b2tlbnMubWF0Y2hlc0NvbnRleHRJZEFuZExhYmVsKF90eXBlcy5Ub2tlblR5cGUuYnJhY2VMLCBjb250ZXh0SWQpKSB7XG4gICAgLy8gSWYgdGhpcyBoYXMgYSBzdXBlcmNsYXNzLCB0aGVyZSB3aWxsIGFsd2F5cyBiZSBhbiBgZXh0ZW5kc2AgdG9rZW4uIElmIGl0IGRvZXNuJ3QgaGF2ZSBhXG4gICAgLy8gc3VwZXJjbGFzcywgb25seSB0eXBlIHBhcmFtZXRlcnMgYW5kIGBpbXBsZW1lbnRzYCBjbGF1c2VzIGNhbiBzaG93IHVwIGhlcmUsIGFsbCBvZiB3aGljaFxuICAgIC8vIGNvbnNpc3Qgb25seSBvZiB0eXBlIHRva2Vucy4gQSBkZWNsYXJhdGlvbiBsaWtlIGBjbGFzcyBBPEIgZXh0ZW5kcyBDPiB7YCBzaG91bGQgKm5vdCogY291bnRcbiAgICAvLyBhcyBoYXZpbmcgYSBzdXBlcmNsYXNzLlxuICAgIGlmICh0b2tlbnMubWF0Y2hlczEoX3R5cGVzLlRva2VuVHlwZS5fZXh0ZW5kcykgJiYgIXRva2Vucy5jdXJyZW50VG9rZW4oKS5pc1R5cGUpIHtcbiAgICAgIGhhc1N1cGVyY2xhc3MgPSB0cnVlO1xuICAgIH1cbiAgICB0b2tlbnMubmV4dFRva2VuKCk7XG4gIH1cbiAgcmV0dXJuIHtpc0V4cHJlc3Npb24sIGNsYXNzTmFtZSwgaGFzU3VwZXJjbGFzc307XG59XG5cbi8qKlxuICogRXh0cmFjdCB1c2VmdWwgaW5mb3JtYXRpb24gb3V0IG9mIGEgY29uc3RydWN0b3IsIHN0YXJ0aW5nIGF0IHRoZSBcImNvbnN0cnVjdG9yXCIgbmFtZS5cbiAqL1xuZnVuY3Rpb24gcHJvY2Vzc0NvbnN0cnVjdG9yKHRva2VucylcblxuXG4ge1xuICBjb25zdCBjb25zdHJ1Y3RvckluaXRpYWxpemVyU3RhdGVtZW50cyA9IFtdO1xuXG4gIHRva2Vucy5uZXh0VG9rZW4oKTtcbiAgY29uc3QgY29uc3RydWN0b3JDb250ZXh0SWQgPSB0b2tlbnMuY3VycmVudFRva2VuKCkuY29udGV4dElkO1xuICBpZiAoY29uc3RydWN0b3JDb250ZXh0SWQgPT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkV4cGVjdGVkIGNvbnRleHQgSUQgb24gb3Blbi1wYXJlbiBzdGFydGluZyBjb25zdHJ1Y3RvciBwYXJhbXMuXCIpO1xuICB9XG4gIC8vIEFkdmFuY2UgdGhyb3VnaCBwYXJhbWV0ZXJzIGxvb2tpbmcgZm9yIGFjY2VzcyBtb2RpZmllcnMuXG4gIHdoaWxlICghdG9rZW5zLm1hdGNoZXNDb250ZXh0SWRBbmRMYWJlbChfdHlwZXMuVG9rZW5UeXBlLnBhcmVuUiwgY29uc3RydWN0b3JDb250ZXh0SWQpKSB7XG4gICAgaWYgKHRva2Vucy5jdXJyZW50VG9rZW4oKS5jb250ZXh0SWQgPT09IGNvbnN0cnVjdG9yQ29udGV4dElkKSB7XG4gICAgICAvLyBDdXJyZW50IHRva2VuIGlzIGFuIG9wZW4gcGFyZW4gb3IgY29tbWEganVzdCBiZWZvcmUgYSBwYXJhbSwgc28gY2hlY2tcbiAgICAgIC8vIHRoYXQgcGFyYW0gZm9yIGFjY2VzcyBtb2RpZmllcnMuXG4gICAgICB0b2tlbnMubmV4dFRva2VuKCk7XG4gICAgICBpZiAoaXNBY2Nlc3NNb2RpZmllcih0b2tlbnMuY3VycmVudFRva2VuKCkpKSB7XG4gICAgICAgIHRva2Vucy5uZXh0VG9rZW4oKTtcbiAgICAgICAgd2hpbGUgKGlzQWNjZXNzTW9kaWZpZXIodG9rZW5zLmN1cnJlbnRUb2tlbigpKSkge1xuICAgICAgICAgIHRva2Vucy5uZXh0VG9rZW4oKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB0b2tlbiA9IHRva2Vucy5jdXJyZW50VG9rZW4oKTtcbiAgICAgICAgaWYgKHRva2VuLnR5cGUgIT09IF90eXBlcy5Ub2tlblR5cGUubmFtZSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkV4cGVjdGVkIGlkZW50aWZpZXIgYWZ0ZXIgYWNjZXNzIG1vZGlmaWVycyBpbiBjb25zdHJ1Y3RvciBhcmcuXCIpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5hbWUgPSB0b2tlbnMuaWRlbnRpZmllck5hbWVGb3JUb2tlbih0b2tlbik7XG4gICAgICAgIGNvbnN0cnVjdG9ySW5pdGlhbGl6ZXJTdGF0ZW1lbnRzLnB1c2goYHRoaXMuJHtuYW1lfSA9ICR7bmFtZX1gKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdG9rZW5zLm5leHRUb2tlbigpO1xuICAgIH1cbiAgfVxuICAvLyApXG4gIHRva2Vucy5uZXh0VG9rZW4oKTtcbiAgLy8gQ29uc3RydWN0b3IgdHlwZSBhbm5vdGF0aW9ucyBhcmUgaW52YWxpZCwgYnV0IHNraXAgdGhlbSBhbnl3YXkgc2luY2VcbiAgLy8gdGhleSdyZSBlYXN5IHRvIHNraXAuXG4gIHdoaWxlICh0b2tlbnMuY3VycmVudFRva2VuKCkuaXNUeXBlKSB7XG4gICAgdG9rZW5zLm5leHRUb2tlbigpO1xuICB9XG4gIGxldCBjb25zdHJ1Y3Rvckluc2VydFBvcyA9IHRva2Vucy5jdXJyZW50SW5kZXgoKTtcblxuICAvLyBBZHZhbmNlIHRocm91Z2ggYm9keSBsb29raW5nIGZvciBhIHN1cGVyIGNhbGwuXG4gIGxldCBmb3VuZFN1cGVyQ2FsbCA9IGZhbHNlO1xuICB3aGlsZSAoIXRva2Vucy5tYXRjaGVzQ29udGV4dElkQW5kTGFiZWwoX3R5cGVzLlRva2VuVHlwZS5icmFjZVIsIGNvbnN0cnVjdG9yQ29udGV4dElkKSkge1xuICAgIGlmICghZm91bmRTdXBlckNhbGwgJiYgdG9rZW5zLm1hdGNoZXMyKF90eXBlcy5Ub2tlblR5cGUuX3N1cGVyLCBfdHlwZXMuVG9rZW5UeXBlLnBhcmVuTCkpIHtcbiAgICAgIHRva2Vucy5uZXh0VG9rZW4oKTtcbiAgICAgIGNvbnN0IHN1cGVyQ2FsbENvbnRleHRJZCA9IHRva2Vucy5jdXJyZW50VG9rZW4oKS5jb250ZXh0SWQ7XG4gICAgICBpZiAoc3VwZXJDYWxsQ29udGV4dElkID09IG51bGwpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRXhwZWN0ZWQgYSBjb250ZXh0IElEIG9uIHRoZSBzdXBlciBjYWxsXCIpO1xuICAgICAgfVxuICAgICAgd2hpbGUgKCF0b2tlbnMubWF0Y2hlc0NvbnRleHRJZEFuZExhYmVsKF90eXBlcy5Ub2tlblR5cGUucGFyZW5SLCBzdXBlckNhbGxDb250ZXh0SWQpKSB7XG4gICAgICAgIHRva2Vucy5uZXh0VG9rZW4oKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0cnVjdG9ySW5zZXJ0UG9zID0gdG9rZW5zLmN1cnJlbnRJbmRleCgpO1xuICAgICAgZm91bmRTdXBlckNhbGwgPSB0cnVlO1xuICAgIH1cbiAgICB0b2tlbnMubmV4dFRva2VuKCk7XG4gIH1cbiAgLy8gfVxuICB0b2tlbnMubmV4dFRva2VuKCk7XG5cbiAgcmV0dXJuIHtjb25zdHJ1Y3RvckluaXRpYWxpemVyU3RhdGVtZW50cywgY29uc3RydWN0b3JJbnNlcnRQb3N9O1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiB0aGlzIGlzIGFueSB0b2tlbiB0aGF0IGNhbiBnbyBiZWZvcmUgdGhlIG5hbWUgaW4gYSBtZXRob2QvZmllbGQuXG4gKi9cbmZ1bmN0aW9uIGlzQWNjZXNzTW9kaWZpZXIodG9rZW4pIHtcbiAgcmV0dXJuIFtcbiAgICBfdHlwZXMuVG9rZW5UeXBlLl9hc3luYyxcbiAgICBfdHlwZXMuVG9rZW5UeXBlLl9nZXQsXG4gICAgX3R5cGVzLlRva2VuVHlwZS5fc2V0LFxuICAgIF90eXBlcy5Ub2tlblR5cGUucGx1cyxcbiAgICBfdHlwZXMuVG9rZW5UeXBlLm1pbnVzLFxuICAgIF90eXBlcy5Ub2tlblR5cGUuX3JlYWRvbmx5LFxuICAgIF90eXBlcy5Ub2tlblR5cGUuX3N0YXRpYyxcbiAgICBfdHlwZXMuVG9rZW5UeXBlLl9wdWJsaWMsXG4gICAgX3R5cGVzLlRva2VuVHlwZS5fcHJpdmF0ZSxcbiAgICBfdHlwZXMuVG9rZW5UeXBlLl9wcm90ZWN0ZWQsXG4gICAgX3R5cGVzLlRva2VuVHlwZS5fb3ZlcnJpZGUsXG4gICAgX3R5cGVzLlRva2VuVHlwZS5fYWJzdHJhY3QsXG4gICAgX3R5cGVzLlRva2VuVHlwZS5zdGFyLFxuICAgIF90eXBlcy5Ub2tlblR5cGUuX2RlY2xhcmUsXG4gICAgX3R5cGVzLlRva2VuVHlwZS5oYXNoLFxuICBdLmluY2x1ZGVzKHRva2VuLnR5cGUpO1xufVxuXG4vKipcbiAqIFRoZSBuZXh0IHRva2VuIG9yIHNldCBvZiB0b2tlbnMgaXMgZWl0aGVyIGFuIGlkZW50aWZpZXIgb3IgYW4gZXhwcmVzc2lvbiBpbiBzcXVhcmUgYnJhY2tldHMsIGZvclxuICogYSBtZXRob2Qgb3IgZmllbGQgbmFtZS5cbiAqL1xuZnVuY3Rpb24gc2tpcEZpZWxkTmFtZSh0b2tlbnMpIHtcbiAgaWYgKHRva2Vucy5tYXRjaGVzMShfdHlwZXMuVG9rZW5UeXBlLmJyYWNrZXRMKSkge1xuICAgIGNvbnN0IHN0YXJ0VG9rZW4gPSB0b2tlbnMuY3VycmVudFRva2VuKCk7XG4gICAgY29uc3QgY2xhc3NDb250ZXh0SWQgPSBzdGFydFRva2VuLmNvbnRleHRJZDtcbiAgICBpZiAoY2xhc3NDb250ZXh0SWQgPT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRXhwZWN0ZWQgY2xhc3MgY29udGV4dCBJRCBvbiBjb21wdXRlZCBuYW1lIG9wZW4gYnJhY2tldC5cIik7XG4gICAgfVxuICAgIHdoaWxlICghdG9rZW5zLm1hdGNoZXNDb250ZXh0SWRBbmRMYWJlbChfdHlwZXMuVG9rZW5UeXBlLmJyYWNrZXRSLCBjbGFzc0NvbnRleHRJZCkpIHtcbiAgICAgIHRva2Vucy5uZXh0VG9rZW4oKTtcbiAgICB9XG4gICAgdG9rZW5zLm5leHRUb2tlbigpO1xuICB9IGVsc2Uge1xuICAgIHRva2Vucy5uZXh0VG9rZW4oKTtcbiAgfVxufVxuIiwgIlwidXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge3ZhbHVlOiB0cnVlfSk7dmFyIF90eXBlcyA9IHJlcXVpcmUoJy4uL3BhcnNlci90b2tlbml6ZXIvdHlwZXMnKTtcblxuXG4gZnVuY3Rpb24gZWxpZGVJbXBvcnRFcXVhbHModG9rZW5zKSB7XG4gIC8vIGltcG9ydFxuICB0b2tlbnMucmVtb3ZlSW5pdGlhbFRva2VuKCk7XG4gIC8vIG5hbWVcbiAgdG9rZW5zLnJlbW92ZVRva2VuKCk7XG4gIC8vID1cbiAgdG9rZW5zLnJlbW92ZVRva2VuKCk7XG4gIC8vIG5hbWUgb3IgcmVxdWlyZVxuICB0b2tlbnMucmVtb3ZlVG9rZW4oKTtcbiAgLy8gSGFuZGxlIGVpdGhlciBgaW1wb3J0IEEgPSByZXF1aXJlKCdBJylgIG9yIGBpbXBvcnQgQSA9IEIuQy5EYC5cbiAgaWYgKHRva2Vucy5tYXRjaGVzMShfdHlwZXMuVG9rZW5UeXBlLnBhcmVuTCkpIHtcbiAgICAvLyAoXG4gICAgdG9rZW5zLnJlbW92ZVRva2VuKCk7XG4gICAgLy8gcGF0aCBzdHJpbmdcbiAgICB0b2tlbnMucmVtb3ZlVG9rZW4oKTtcbiAgICAvLyApXG4gICAgdG9rZW5zLnJlbW92ZVRva2VuKCk7XG4gIH0gZWxzZSB7XG4gICAgd2hpbGUgKHRva2Vucy5tYXRjaGVzMShfdHlwZXMuVG9rZW5UeXBlLmRvdCkpIHtcbiAgICAgIC8vIC5cbiAgICAgIHRva2Vucy5yZW1vdmVUb2tlbigpO1xuICAgICAgLy8gbmFtZVxuICAgICAgdG9rZW5zLnJlbW92ZVRva2VuKCk7XG4gICAgfVxuICB9XG59IGV4cG9ydHMuZGVmYXVsdCA9IGVsaWRlSW1wb3J0RXF1YWxzO1xuIiwgIlwidXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge3ZhbHVlOiB0cnVlfSk7dmFyIF90b2tlbml6ZXIgPSByZXF1aXJlKCcuLi9wYXJzZXIvdG9rZW5pemVyJyk7XG52YXIgX3R5cGVzID0gcmVxdWlyZSgnLi4vcGFyc2VyL3Rva2VuaXplci90eXBlcycpO1xuXG5cblxuXG5cblxuXG4gY29uc3QgRU1QVFlfREVDTEFSQVRJT05fSU5GTyA9IHtcbiAgdHlwZURlY2xhcmF0aW9uczogbmV3IFNldCgpLFxuICB2YWx1ZURlY2xhcmF0aW9uczogbmV3IFNldCgpLFxufTsgZXhwb3J0cy5FTVBUWV9ERUNMQVJBVElPTl9JTkZPID0gRU1QVFlfREVDTEFSQVRJT05fSU5GTztcblxuLyoqXG4gKiBHZXQgYWxsIHRvcC1sZXZlbCBpZGVudGlmaWVycyB0aGF0IHNob3VsZCBiZSBwcmVzZXJ2ZWQgd2hlbiBleHBvcnRlZCBpbiBUeXBlU2NyaXB0LlxuICpcbiAqIEV4YW1wbGVzOlxuICogLSBJZiBhbiBpZGVudGlmaWVyIGlzIGRlY2xhcmVkIGFzIGBjb25zdCB4YCwgdGhlbiBgZXhwb3J0IHt4fWAgc2hvdWxkIGJlIHByZXNlcnZlZC5cbiAqIC0gSWYgaXQncyBkZWNsYXJlZCBhcyBgdHlwZSB4YCwgdGhlbiBgZXhwb3J0IHt4fWAgc2hvdWxkIGJlIHJlbW92ZWQuXG4gKiAtIElmIGl0J3MgZGVjbGFyZWQgYXMgYm90aCBgY29uc3QgeGAgYW5kIGB0eXBlIHhgLCB0aGVuIHRoZSBleHBvcnQgc2hvdWxkIGJlIHByZXNlcnZlZC5cbiAqIC0gQ2xhc3NlcyBhbmQgZW51bXMgc2hvdWxkIGJlIHByZXNlcnZlZCAoZXZlbiB0aG91Z2ggdGhleSBhbHNvIGludHJvZHVjZSB0eXBlcykuXG4gKiAtIEltcG9ydGVkIGlkZW50aWZpZXJzIHNob3VsZCBiZSBwcmVzZXJ2ZWQgc2luY2Ugd2UgZG9uJ3QgaGF2ZSBlbm91Z2ggaW5mb3JtYXRpb24gdG9cbiAqICAgcnVsZSB0aGVtIG91dC4gLS1pc29sYXRlZE1vZHVsZXMgZGlzYWxsb3dzIHJlLWV4cG9ydHMsIHdoaWNoIGNhdGNoZXMgZXJyb3JzIGhlcmUuXG4gKi9cbiBmdW5jdGlvbiBnZXREZWNsYXJhdGlvbkluZm8odG9rZW5zKSB7XG4gIGNvbnN0IHR5cGVEZWNsYXJhdGlvbnMgPSBuZXcgU2V0KCk7XG4gIGNvbnN0IHZhbHVlRGVjbGFyYXRpb25zID0gbmV3IFNldCgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHRva2Vucy50b2tlbnMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCB0b2tlbiA9IHRva2Vucy50b2tlbnNbaV07XG4gICAgaWYgKHRva2VuLnR5cGUgPT09IF90eXBlcy5Ub2tlblR5cGUubmFtZSAmJiBfdG9rZW5pemVyLmlzVG9wTGV2ZWxEZWNsYXJhdGlvbi5jYWxsKHZvaWQgMCwgdG9rZW4pKSB7XG4gICAgICBpZiAodG9rZW4uaXNUeXBlKSB7XG4gICAgICAgIHR5cGVEZWNsYXJhdGlvbnMuYWRkKHRva2Vucy5pZGVudGlmaWVyTmFtZUZvclRva2VuKHRva2VuKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YWx1ZURlY2xhcmF0aW9ucy5hZGQodG9rZW5zLmlkZW50aWZpZXJOYW1lRm9yVG9rZW4odG9rZW4pKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHt0eXBlRGVjbGFyYXRpb25zLCB2YWx1ZURlY2xhcmF0aW9uc307XG59IGV4cG9ydHMuZGVmYXVsdCA9IGdldERlY2xhcmF0aW9uSW5mbztcbiIsICJcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHt2YWx1ZTogdHJ1ZX0pO3ZhciBfa2V5d29yZHMgPSByZXF1aXJlKCcuLi9wYXJzZXIvdG9rZW5pemVyL2tleXdvcmRzJyk7XG52YXIgX3R5cGVzID0gcmVxdWlyZSgnLi4vcGFyc2VyL3Rva2VuaXplci90eXBlcycpO1xuXG5cbi8qKlxuICogU3RhcnRpbmcgYXQgYGV4cG9ydCB7YCwgbG9vayBhaGVhZCBhbmQgcmV0dXJuIGB0cnVlYCBpZiB0aGlzIGlzIGFuXG4gKiBgZXhwb3J0IHsuLi59IGZyb21gIHN0YXRlbWVudCBhbmQgYGZhbHNlYCBpZiB0aGlzIGlzIGEgcGxhaW4gbXVsdGktZXhwb3J0LlxuICovXG4gZnVuY3Rpb24gaXNFeHBvcnRGcm9tKHRva2Vucykge1xuICBsZXQgY2xvc2VCcmFjZUluZGV4ID0gdG9rZW5zLmN1cnJlbnRJbmRleCgpO1xuICB3aGlsZSAoIXRva2Vucy5tYXRjaGVzMUF0SW5kZXgoY2xvc2VCcmFjZUluZGV4LCBfdHlwZXMuVG9rZW5UeXBlLmJyYWNlUikpIHtcbiAgICBjbG9zZUJyYWNlSW5kZXgrKztcbiAgfVxuICByZXR1cm4gKFxuICAgIHRva2Vucy5tYXRjaGVzQ29udGV4dHVhbEF0SW5kZXgoY2xvc2VCcmFjZUluZGV4ICsgMSwgX2tleXdvcmRzLkNvbnRleHR1YWxLZXl3b3JkLl9mcm9tKSAmJlxuICAgIHRva2Vucy5tYXRjaGVzMUF0SW5kZXgoY2xvc2VCcmFjZUluZGV4ICsgMiwgX3R5cGVzLlRva2VuVHlwZS5zdHJpbmcpXG4gICk7XG59IGV4cG9ydHMuZGVmYXVsdCA9IGlzRXhwb3J0RnJvbTtcbiIsICJcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHt2YWx1ZTogdHJ1ZX0pO3ZhciBfa2V5d29yZHMgPSByZXF1aXJlKCcuLi9wYXJzZXIvdG9rZW5pemVyL2tleXdvcmRzJyk7XG52YXIgX3R5cGVzID0gcmVxdWlyZSgnLi4vcGFyc2VyL3Rva2VuaXplci90eXBlcycpO1xuXG5cbi8qKlxuICogU3RhcnRpbmcgYXQgYSBwb3RlbnRpYWwgYHdpdGhgIG9yIChsZWdhY3kpIGBhc3NlcnRgIHRva2VuLCByZW1vdmUgdGhlIGltcG9ydFxuICogYXR0cmlidXRlcyBpZiB0aGV5IGV4aXN0LlxuICovXG4gZnVuY3Rpb24gcmVtb3ZlTWF5YmVJbXBvcnRBdHRyaWJ1dGVzKHRva2Vucykge1xuICBpZiAoXG4gICAgdG9rZW5zLm1hdGNoZXMyKF90eXBlcy5Ub2tlblR5cGUuX3dpdGgsIF90eXBlcy5Ub2tlblR5cGUuYnJhY2VMKSB8fFxuICAgICh0b2tlbnMubWF0Y2hlczIoX3R5cGVzLlRva2VuVHlwZS5uYW1lLCBfdHlwZXMuVG9rZW5UeXBlLmJyYWNlTCkgJiYgdG9rZW5zLm1hdGNoZXNDb250ZXh0dWFsKF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fYXNzZXJ0KSlcbiAgKSB7XG4gICAgLy8gYXNzZXJ0XG4gICAgdG9rZW5zLnJlbW92ZVRva2VuKCk7XG4gICAgLy8ge1xuICAgIHRva2Vucy5yZW1vdmVUb2tlbigpO1xuICAgIHRva2Vucy5yZW1vdmVCYWxhbmNlZENvZGUoKTtcbiAgICAvLyB9XG4gICAgdG9rZW5zLnJlbW92ZVRva2VuKCk7XG4gIH1cbn0gZXhwb3J0cy5yZW1vdmVNYXliZUltcG9ydEF0dHJpYnV0ZXMgPSByZW1vdmVNYXliZUltcG9ydEF0dHJpYnV0ZXM7XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7dmFsdWU6IHRydWV9KTt2YXIgX3R5cGVzID0gcmVxdWlyZSgnLi4vcGFyc2VyL3Rva2VuaXplci90eXBlcycpO1xuXG5cblxuLyoqXG4gKiBDb21tb24gbWV0aG9kIHNoYXJpbmcgY29kZSBiZXR3ZWVuIENKUyBhbmQgRVNNIGNhc2VzLCBzaW5jZSB0aGV5J3JlIHRoZSBzYW1lIGhlcmUuXG4gKi9cbiBmdW5jdGlvbiBzaG91bGRFbGlkZURlZmF1bHRFeHBvcnQoXG4gIGlzVHlwZVNjcmlwdFRyYW5zZm9ybUVuYWJsZWQsXG4gIGtlZXBVbnVzZWRJbXBvcnRzLFxuICB0b2tlbnMsXG4gIGRlY2xhcmF0aW9uSW5mbyxcbikge1xuICBpZiAoIWlzVHlwZVNjcmlwdFRyYW5zZm9ybUVuYWJsZWQgfHwga2VlcFVudXNlZEltcG9ydHMpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgY29uc3QgZXhwb3J0VG9rZW4gPSB0b2tlbnMuY3VycmVudFRva2VuKCk7XG4gIGlmIChleHBvcnRUb2tlbi5yaHNFbmRJbmRleCA9PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiRXhwZWN0ZWQgbm9uLW51bGwgcmhzRW5kSW5kZXggb24gZXhwb3J0IHRva2VuLlwiKTtcbiAgfVxuICAvLyBUaGUgZXhwb3J0IG11c3QgYmUgb2YgdGhlIGZvcm0gYGV4cG9ydCBkZWZhdWx0IGFgIG9yIGBleHBvcnQgZGVmYXVsdCBhO2AuXG4gIGNvbnN0IG51bVRva2VucyA9IGV4cG9ydFRva2VuLnJoc0VuZEluZGV4IC0gdG9rZW5zLmN1cnJlbnRJbmRleCgpO1xuICBpZiAoXG4gICAgbnVtVG9rZW5zICE9PSAzICYmXG4gICAgIShudW1Ub2tlbnMgPT09IDQgJiYgdG9rZW5zLm1hdGNoZXMxQXRJbmRleChleHBvcnRUb2tlbi5yaHNFbmRJbmRleCAtIDEsIF90eXBlcy5Ub2tlblR5cGUuc2VtaSkpXG4gICkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBjb25zdCBpZGVudGlmaWVyVG9rZW4gPSB0b2tlbnMudG9rZW5BdFJlbGF0aXZlSW5kZXgoMik7XG4gIGlmIChpZGVudGlmaWVyVG9rZW4udHlwZSAhPT0gX3R5cGVzLlRva2VuVHlwZS5uYW1lKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGNvbnN0IGV4cG9ydGVkTmFtZSA9IHRva2Vucy5pZGVudGlmaWVyTmFtZUZvclRva2VuKGlkZW50aWZpZXJUb2tlbik7XG4gIHJldHVybiAoXG4gICAgZGVjbGFyYXRpb25JbmZvLnR5cGVEZWNsYXJhdGlvbnMuaGFzKGV4cG9ydGVkTmFtZSkgJiZcbiAgICAhZGVjbGFyYXRpb25JbmZvLnZhbHVlRGVjbGFyYXRpb25zLmhhcyhleHBvcnRlZE5hbWUpXG4gICk7XG59IGV4cG9ydHMuZGVmYXVsdCA9IHNob3VsZEVsaWRlRGVmYXVsdEV4cG9ydDtcbiIsICJcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHt2YWx1ZTogdHJ1ZX0pOyBmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5cbnZhciBfdG9rZW5pemVyID0gcmVxdWlyZSgnLi4vcGFyc2VyL3Rva2VuaXplcicpO1xudmFyIF9rZXl3b3JkcyA9IHJlcXVpcmUoJy4uL3BhcnNlci90b2tlbml6ZXIva2V5d29yZHMnKTtcbnZhciBfdHlwZXMgPSByZXF1aXJlKCcuLi9wYXJzZXIvdG9rZW5pemVyL3R5cGVzJyk7XG5cbnZhciBfZWxpZGVJbXBvcnRFcXVhbHMgPSByZXF1aXJlKCcuLi91dGlsL2VsaWRlSW1wb3J0RXF1YWxzJyk7IHZhciBfZWxpZGVJbXBvcnRFcXVhbHMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZWxpZGVJbXBvcnRFcXVhbHMpO1xuXG5cblxudmFyIF9nZXREZWNsYXJhdGlvbkluZm8gPSByZXF1aXJlKCcuLi91dGlsL2dldERlY2xhcmF0aW9uSW5mbycpOyB2YXIgX2dldERlY2xhcmF0aW9uSW5mbzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9nZXREZWNsYXJhdGlvbkluZm8pO1xudmFyIF9nZXRJbXBvcnRFeHBvcnRTcGVjaWZpZXJJbmZvID0gcmVxdWlyZSgnLi4vdXRpbC9nZXRJbXBvcnRFeHBvcnRTcGVjaWZpZXJJbmZvJyk7IHZhciBfZ2V0SW1wb3J0RXhwb3J0U3BlY2lmaWVySW5mbzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9nZXRJbXBvcnRFeHBvcnRTcGVjaWZpZXJJbmZvKTtcbnZhciBfaXNFeHBvcnRGcm9tID0gcmVxdWlyZSgnLi4vdXRpbC9pc0V4cG9ydEZyb20nKTsgdmFyIF9pc0V4cG9ydEZyb20yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaXNFeHBvcnRGcm9tKTtcbnZhciBfcmVtb3ZlTWF5YmVJbXBvcnRBdHRyaWJ1dGVzID0gcmVxdWlyZSgnLi4vdXRpbC9yZW1vdmVNYXliZUltcG9ydEF0dHJpYnV0ZXMnKTtcbnZhciBfc2hvdWxkRWxpZGVEZWZhdWx0RXhwb3J0ID0gcmVxdWlyZSgnLi4vdXRpbC9zaG91bGRFbGlkZURlZmF1bHRFeHBvcnQnKTsgdmFyIF9zaG91bGRFbGlkZURlZmF1bHRFeHBvcnQyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfc2hvdWxkRWxpZGVEZWZhdWx0RXhwb3J0KTtcblxuXG52YXIgX1RyYW5zZm9ybWVyID0gcmVxdWlyZSgnLi9UcmFuc2Zvcm1lcicpOyB2YXIgX1RyYW5zZm9ybWVyMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX1RyYW5zZm9ybWVyKTtcblxuLyoqXG4gKiBDbGFzcyBmb3IgZWRpdGluZyBpbXBvcnQgc3RhdGVtZW50cyB3aGVuIHdlIGFyZSB0cmFuc2Zvcm1pbmcgdG8gY29tbW9uanMuXG4gKi9cbiBjbGFzcyBDSlNJbXBvcnRUcmFuc2Zvcm1lciBleHRlbmRzIF9UcmFuc2Zvcm1lcjIuZGVmYXVsdCB7XG4gICBfX2luaXQoKSB7dGhpcy5oYWRFeHBvcnQgPSBmYWxzZX1cbiAgIF9faW5pdDIoKSB7dGhpcy5oYWROYW1lZEV4cG9ydCA9IGZhbHNlfVxuICAgX19pbml0MygpIHt0aGlzLmhhZERlZmF1bHRFeHBvcnQgPSBmYWxzZX1cbiAgXG5cbiAgY29uc3RydWN0b3IoXG4gICAgIHJvb3RUcmFuc2Zvcm1lcixcbiAgICAgdG9rZW5zLFxuICAgICBpbXBvcnRQcm9jZXNzb3IsXG4gICAgIG5hbWVNYW5hZ2VyLFxuICAgICBoZWxwZXJNYW5hZ2VyLFxuICAgICByZWFjdEhvdExvYWRlclRyYW5zZm9ybWVyLFxuICAgICBlbmFibGVMZWdhY3lCYWJlbDVNb2R1bGVJbnRlcm9wLFxuICAgICBlbmFibGVMZWdhY3lUeXBlU2NyaXB0TW9kdWxlSW50ZXJvcCxcbiAgICAgaXNUeXBlU2NyaXB0VHJhbnNmb3JtRW5hYmxlZCxcbiAgICAgaXNGbG93VHJhbnNmb3JtRW5hYmxlZCxcbiAgICAgcHJlc2VydmVEeW5hbWljSW1wb3J0LFxuICAgICBrZWVwVW51c2VkSW1wb3J0cyxcbiAgKSB7XG4gICAgc3VwZXIoKTt0aGlzLnJvb3RUcmFuc2Zvcm1lciA9IHJvb3RUcmFuc2Zvcm1lcjt0aGlzLnRva2VucyA9IHRva2Vuczt0aGlzLmltcG9ydFByb2Nlc3NvciA9IGltcG9ydFByb2Nlc3Nvcjt0aGlzLm5hbWVNYW5hZ2VyID0gbmFtZU1hbmFnZXI7dGhpcy5oZWxwZXJNYW5hZ2VyID0gaGVscGVyTWFuYWdlcjt0aGlzLnJlYWN0SG90TG9hZGVyVHJhbnNmb3JtZXIgPSByZWFjdEhvdExvYWRlclRyYW5zZm9ybWVyO3RoaXMuZW5hYmxlTGVnYWN5QmFiZWw1TW9kdWxlSW50ZXJvcCA9IGVuYWJsZUxlZ2FjeUJhYmVsNU1vZHVsZUludGVyb3A7dGhpcy5lbmFibGVMZWdhY3lUeXBlU2NyaXB0TW9kdWxlSW50ZXJvcCA9IGVuYWJsZUxlZ2FjeVR5cGVTY3JpcHRNb2R1bGVJbnRlcm9wO3RoaXMuaXNUeXBlU2NyaXB0VHJhbnNmb3JtRW5hYmxlZCA9IGlzVHlwZVNjcmlwdFRyYW5zZm9ybUVuYWJsZWQ7dGhpcy5pc0Zsb3dUcmFuc2Zvcm1FbmFibGVkID0gaXNGbG93VHJhbnNmb3JtRW5hYmxlZDt0aGlzLnByZXNlcnZlRHluYW1pY0ltcG9ydCA9IHByZXNlcnZlRHluYW1pY0ltcG9ydDt0aGlzLmtlZXBVbnVzZWRJbXBvcnRzID0ga2VlcFVudXNlZEltcG9ydHM7Q0pTSW1wb3J0VHJhbnNmb3JtZXIucHJvdG90eXBlLl9faW5pdC5jYWxsKHRoaXMpO0NKU0ltcG9ydFRyYW5zZm9ybWVyLnByb3RvdHlwZS5fX2luaXQyLmNhbGwodGhpcyk7Q0pTSW1wb3J0VHJhbnNmb3JtZXIucHJvdG90eXBlLl9faW5pdDMuY2FsbCh0aGlzKTs7XG4gICAgdGhpcy5kZWNsYXJhdGlvbkluZm8gPSBpc1R5cGVTY3JpcHRUcmFuc2Zvcm1FbmFibGVkXG4gICAgICA/IF9nZXREZWNsYXJhdGlvbkluZm8yLmRlZmF1bHQuY2FsbCh2b2lkIDAsIHRva2VucylcbiAgICAgIDogX2dldERlY2xhcmF0aW9uSW5mby5FTVBUWV9ERUNMQVJBVElPTl9JTkZPO1xuICB9XG5cbiAgZ2V0UHJlZml4Q29kZSgpIHtcbiAgICBsZXQgcHJlZml4ID0gXCJcIjtcbiAgICBpZiAodGhpcy5oYWRFeHBvcnQpIHtcbiAgICAgIHByZWZpeCArPSAnT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7dmFsdWU6IHRydWV9KTsnO1xuICAgIH1cbiAgICByZXR1cm4gcHJlZml4O1xuICB9XG5cbiAgZ2V0U3VmZml4Q29kZSgpIHtcbiAgICBpZiAodGhpcy5lbmFibGVMZWdhY3lCYWJlbDVNb2R1bGVJbnRlcm9wICYmIHRoaXMuaGFkRGVmYXVsdEV4cG9ydCAmJiAhdGhpcy5oYWROYW1lZEV4cG9ydCkge1xuICAgICAgcmV0dXJuIFwiXFxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XFxuXCI7XG4gICAgfVxuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgcHJvY2VzcygpIHtcbiAgICAvLyBUeXBlU2NyaXB0IGBpbXBvcnQgZm9vID0gcmVxdWlyZSgnZm9vJyk7YCBzaG91bGQgYWx3YXlzIGp1c3QgYmUgdHJhbnNsYXRlZCB0byBwbGFpbiByZXF1aXJlLlxuICAgIGlmICh0aGlzLnRva2Vucy5tYXRjaGVzMyhfdHlwZXMuVG9rZW5UeXBlLl9pbXBvcnQsIF90eXBlcy5Ub2tlblR5cGUubmFtZSwgX3R5cGVzLlRva2VuVHlwZS5lcSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NJbXBvcnRFcXVhbHMoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMudG9rZW5zLm1hdGNoZXMxKF90eXBlcy5Ub2tlblR5cGUuX2ltcG9ydCkpIHtcbiAgICAgIHRoaXMucHJvY2Vzc0ltcG9ydCgpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmICh0aGlzLnRva2Vucy5tYXRjaGVzMihfdHlwZXMuVG9rZW5UeXBlLl9leHBvcnQsIF90eXBlcy5Ub2tlblR5cGUuZXEpKSB7XG4gICAgICB0aGlzLnRva2Vucy5yZXBsYWNlVG9rZW4oXCJtb2R1bGUuZXhwb3J0c1wiKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAodGhpcy50b2tlbnMubWF0Y2hlczEoX3R5cGVzLlRva2VuVHlwZS5fZXhwb3J0KSAmJiAhdGhpcy50b2tlbnMuY3VycmVudFRva2VuKCkuaXNUeXBlKSB7XG4gICAgICB0aGlzLmhhZEV4cG9ydCA9IHRydWU7XG4gICAgICByZXR1cm4gdGhpcy5wcm9jZXNzRXhwb3J0KCk7XG4gICAgfVxuICAgIGlmICh0aGlzLnRva2Vucy5tYXRjaGVzMihfdHlwZXMuVG9rZW5UeXBlLm5hbWUsIF90eXBlcy5Ub2tlblR5cGUucG9zdEluY0RlYykpIHtcbiAgICAgIC8vIEZhbGwgdGhyb3VnaCB0byBub3JtYWwgaWRlbnRpZmllciBtYXRjaGluZyBpZiB0aGlzIGRvZXNuJ3QgYXBwbHkuXG4gICAgICBpZiAodGhpcy5wcm9jZXNzUG9zdEluY0RlYygpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGhpcy50b2tlbnMubWF0Y2hlczEoX3R5cGVzLlRva2VuVHlwZS5uYW1lKSB8fCB0aGlzLnRva2Vucy5tYXRjaGVzMShfdHlwZXMuVG9rZW5UeXBlLmpzeE5hbWUpKSB7XG4gICAgICByZXR1cm4gdGhpcy5wcm9jZXNzSWRlbnRpZmllcigpO1xuICAgIH1cbiAgICBpZiAodGhpcy50b2tlbnMubWF0Y2hlczEoX3R5cGVzLlRva2VuVHlwZS5lcSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NBc3NpZ25tZW50KCk7XG4gICAgfVxuICAgIGlmICh0aGlzLnRva2Vucy5tYXRjaGVzMShfdHlwZXMuVG9rZW5UeXBlLmFzc2lnbikpIHtcbiAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NDb21wbGV4QXNzaWdubWVudCgpO1xuICAgIH1cbiAgICBpZiAodGhpcy50b2tlbnMubWF0Y2hlczEoX3R5cGVzLlRva2VuVHlwZS5wcmVJbmNEZWMpKSB7XG4gICAgICByZXR1cm4gdGhpcy5wcm9jZXNzUHJlSW5jRGVjKCk7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gICBwcm9jZXNzSW1wb3J0RXF1YWxzKCkge1xuICAgIGNvbnN0IGltcG9ydE5hbWUgPSB0aGlzLnRva2Vucy5pZGVudGlmaWVyTmFtZUF0SW5kZXgodGhpcy50b2tlbnMuY3VycmVudEluZGV4KCkgKyAxKTtcbiAgICBpZiAodGhpcy5pbXBvcnRQcm9jZXNzb3Iuc2hvdWxkQXV0b21hdGljYWxseUVsaWRlSW1wb3J0ZWROYW1lKGltcG9ydE5hbWUpKSB7XG4gICAgICAvLyBJZiB0aGlzIG5hbWUgaXMgb25seSB1c2VkIGFzIGEgdHlwZSwgZWxpZGUgdGhlIHdob2xlIGltcG9ydC5cbiAgICAgIF9lbGlkZUltcG9ydEVxdWFsczIuZGVmYXVsdC5jYWxsKHZvaWQgMCwgdGhpcy50b2tlbnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBPdGhlcndpc2UsIHN3aXRjaCBgaW1wb3J0YCB0byBgY29uc3RgLlxuICAgICAgdGhpcy50b2tlbnMucmVwbGFjZVRva2VuKFwiY29uc3RcIik7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybSB0aGlzOlxuICAgKiBpbXBvcnQgZm9vLCB7YmFyfSBmcm9tICdiYXonO1xuICAgKiBpbnRvXG4gICAqIHZhciBfYmF6ID0gcmVxdWlyZSgnYmF6Jyk7IHZhciBfYmF6MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Jheik7XG4gICAqXG4gICAqIFRoZSBpbXBvcnQgY29kZSB3YXMgYWxyZWFkeSBnZW5lcmF0ZWQgaW4gdGhlIGltcG9ydCBwcmVwcm9jZXNzaW5nIHN0ZXAsIHNvXG4gICAqIHdlIGp1c3QgbmVlZCB0byBsb29rIGl0IHVwLlxuICAgKi9cbiAgIHByb2Nlc3NJbXBvcnQoKSB7XG4gICAgaWYgKHRoaXMudG9rZW5zLm1hdGNoZXMyKF90eXBlcy5Ub2tlblR5cGUuX2ltcG9ydCwgX3R5cGVzLlRva2VuVHlwZS5wYXJlbkwpKSB7XG4gICAgICBpZiAodGhpcy5wcmVzZXJ2ZUR5bmFtaWNJbXBvcnQpIHtcbiAgICAgICAgLy8gQmFpbCBvdXQsIG9ubHkgbWFraW5nIHByb2dyZXNzIGZvciB0aGlzIG9uZSB0b2tlbi5cbiAgICAgICAgdGhpcy50b2tlbnMuY29weVRva2VuKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJlcXVpcmVXcmFwcGVyID0gdGhpcy5lbmFibGVMZWdhY3lUeXBlU2NyaXB0TW9kdWxlSW50ZXJvcFxuICAgICAgICA/IFwiXCJcbiAgICAgICAgOiBgJHt0aGlzLmhlbHBlck1hbmFnZXIuZ2V0SGVscGVyTmFtZShcImludGVyb3BSZXF1aXJlV2lsZGNhcmRcIil9KGA7XG4gICAgICB0aGlzLnRva2Vucy5yZXBsYWNlVG9rZW4oYFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4gJHtyZXF1aXJlV3JhcHBlcn1yZXF1aXJlYCk7XG4gICAgICBjb25zdCBjb250ZXh0SWQgPSB0aGlzLnRva2Vucy5jdXJyZW50VG9rZW4oKS5jb250ZXh0SWQ7XG4gICAgICBpZiAoY29udGV4dElkID09IG51bGwpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRXhwZWN0ZWQgY29udGV4dCBJRCBvbiBkeW5hbWljIGltcG9ydCBpbnZvY2F0aW9uLlwiKTtcbiAgICAgIH1cbiAgICAgIHRoaXMudG9rZW5zLmNvcHlUb2tlbigpO1xuICAgICAgd2hpbGUgKCF0aGlzLnRva2Vucy5tYXRjaGVzQ29udGV4dElkQW5kTGFiZWwoX3R5cGVzLlRva2VuVHlwZS5wYXJlblIsIGNvbnRleHRJZCkpIHtcbiAgICAgICAgdGhpcy5yb290VHJhbnNmb3JtZXIucHJvY2Vzc1Rva2VuKCk7XG4gICAgICB9XG4gICAgICB0aGlzLnRva2Vucy5yZXBsYWNlVG9rZW4ocmVxdWlyZVdyYXBwZXIgPyBcIikpKVwiIDogXCIpKVwiKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzaG91bGRFbGlkZUltcG9ydCA9IHRoaXMucmVtb3ZlSW1wb3J0QW5kRGV0ZWN0SWZTaG91bGRFbGlkZSgpO1xuICAgIGlmIChzaG91bGRFbGlkZUltcG9ydCkge1xuICAgICAgdGhpcy50b2tlbnMucmVtb3ZlVG9rZW4oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcGF0aCA9IHRoaXMudG9rZW5zLnN0cmluZ1ZhbHVlKCk7XG4gICAgICB0aGlzLnRva2Vucy5yZXBsYWNlVG9rZW5UcmltbWluZ0xlZnRXaGl0ZXNwYWNlKHRoaXMuaW1wb3J0UHJvY2Vzc29yLmNsYWltSW1wb3J0Q29kZShwYXRoKSk7XG4gICAgICB0aGlzLnRva2Vucy5hcHBlbmRDb2RlKHRoaXMuaW1wb3J0UHJvY2Vzc29yLmNsYWltSW1wb3J0Q29kZShwYXRoKSk7XG4gICAgfVxuICAgIF9yZW1vdmVNYXliZUltcG9ydEF0dHJpYnV0ZXMucmVtb3ZlTWF5YmVJbXBvcnRBdHRyaWJ1dGVzLmNhbGwodm9pZCAwLCB0aGlzLnRva2Vucyk7XG4gICAgaWYgKHRoaXMudG9rZW5zLm1hdGNoZXMxKF90eXBlcy5Ub2tlblR5cGUuc2VtaSkpIHtcbiAgICAgIHRoaXMudG9rZW5zLnJlbW92ZVRva2VuKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEVyYXNlIHRoaXMgaW1wb3J0IChzaW5jZSBhbnkgQ0pTIG91dHB1dCB3b3VsZCBiZSBjb21wbGV0ZWx5IGRpZmZlcmVudCksIGFuZFxuICAgKiByZXR1cm4gdHJ1ZSBpZiB0aGlzIGltcG9ydCBpcyBzaG91bGQgYmUgZWxpZGVkIGR1ZSB0byBiZWluZyBhIHR5cGUtb25seVxuICAgKiBpbXBvcnQuIFN1Y2ggaW1wb3J0cyB3aWxsIG5vdCBiZSBlbWl0dGVkIGF0IGFsbCB0byBhdm9pZCBzaWRlIGVmZmVjdHMuXG4gICAqXG4gICAqIEltcG9ydCBlbGlzaW9uIG9ubHkgaGFwcGVucyB3aXRoIHRoZSBUeXBlU2NyaXB0IG9yIEZsb3cgdHJhbnNmb3JtcyBlbmFibGVkLlxuICAgKlxuICAgKiBUT0RPOiBUaGlzIGZ1bmN0aW9uIGhhcyBzb21lIGF3a3dhcmQgb3ZlcmxhcCB3aXRoXG4gICAqICBDSlNJbXBvcnRQcm9jZXNzb3IucHJ1bmVUeXBlT25seUltcG9ydHMgLCBhbmQgdGhlIHR3byBzaG91bGQgYmUgdW5pZmllZC5cbiAgICogIFRoYXQgZnVuY3Rpb24gaGFuZGxlcyBUeXBlU2NyaXB0IGltcGxpY2l0IGltcG9ydCBuYW1lIGVsaXNpb24sIGFuZCByZW1vdmVzXG4gICAqICBhbiBpbXBvcnQgaWYgYWxsIHR5cGljYWwgaW1wb3J0ZWQgbmFtZXMgKHdpdGhvdXQgYHR5cGVgKSBhcmUgcmVtb3ZlZCBkdWVcbiAgICogIHRvIGJlaW5nIHR5cGUtb25seSBpbXBvcnRzLiBUaGlzIGZ1bmN0aW9uIGhhbmRsZXMgRmxvdyBpbXBvcnQgcmVtb3ZhbCBhbmRcbiAgICogIHByb3Blcmx5IGRpc3Rpbmd1aXNoZXMgYGltcG9ydCAnZm9vJ2AgZnJvbSBgaW1wb3J0IHt9IGZyb20gJ2ZvbydgIGZvciBUU1xuICAgKiAgcHVycG9zZXMuXG4gICAqXG4gICAqIFRoZSBwb3NpdGlvbiBzaG91bGQgZW5kIGF0IHRoZSBpbXBvcnQgc3RyaW5nLlxuICAgKi9cbiAgIHJlbW92ZUltcG9ydEFuZERldGVjdElmU2hvdWxkRWxpZGUoKSB7XG4gICAgdGhpcy50b2tlbnMucmVtb3ZlSW5pdGlhbFRva2VuKCk7XG4gICAgaWYgKFxuICAgICAgdGhpcy50b2tlbnMubWF0Y2hlc0NvbnRleHR1YWwoX2tleXdvcmRzLkNvbnRleHR1YWxLZXl3b3JkLl90eXBlKSAmJlxuICAgICAgIXRoaXMudG9rZW5zLm1hdGNoZXMxQXRJbmRleCh0aGlzLnRva2Vucy5jdXJyZW50SW5kZXgoKSArIDEsIF90eXBlcy5Ub2tlblR5cGUuY29tbWEpICYmXG4gICAgICAhdGhpcy50b2tlbnMubWF0Y2hlc0NvbnRleHR1YWxBdEluZGV4KHRoaXMudG9rZW5zLmN1cnJlbnRJbmRleCgpICsgMSwgX2tleXdvcmRzLkNvbnRleHR1YWxLZXl3b3JkLl9mcm9tKVxuICAgICkge1xuICAgICAgLy8gVGhpcyBpcyBhbiBcImltcG9ydCB0eXBlXCIgc3RhdGVtZW50LCBzbyBleGl0IGVhcmx5LlxuICAgICAgdGhpcy5yZW1vdmVSZW1haW5pbmdJbXBvcnQoKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnRva2Vucy5tYXRjaGVzMShfdHlwZXMuVG9rZW5UeXBlLm5hbWUpIHx8IHRoaXMudG9rZW5zLm1hdGNoZXMxKF90eXBlcy5Ub2tlblR5cGUuc3RhcikpIHtcbiAgICAgIC8vIFdlIGhhdmUgYSBkZWZhdWx0IGltcG9ydCBvciBuYW1lc3BhY2UgaW1wb3J0LCBzbyB0aGVyZSBtdXN0IGJlIHNvbWVcbiAgICAgIC8vIG5vbi10eXBlIGltcG9ydC5cbiAgICAgIHRoaXMucmVtb3ZlUmVtYWluaW5nSW1wb3J0KCk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudG9rZW5zLm1hdGNoZXMxKF90eXBlcy5Ub2tlblR5cGUuc3RyaW5nKSkge1xuICAgICAgLy8gVGhpcyBpcyBhIGJhcmUgaW1wb3J0LCBzbyB3ZSBzaG91bGQgcHJvY2VlZCB3aXRoIHRoZSBpbXBvcnQuXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgbGV0IGZvdW5kTm9uVHlwZUltcG9ydCA9IGZhbHNlO1xuICAgIGxldCBmb3VuZEFueU5hbWVkSW1wb3J0ID0gZmFsc2U7XG4gICAgd2hpbGUgKCF0aGlzLnRva2Vucy5tYXRjaGVzMShfdHlwZXMuVG9rZW5UeXBlLnN0cmluZykpIHtcbiAgICAgIC8vIENoZWNrIGlmIGFueSBuYW1lZCBpbXBvcnRzIGFyZSBvZiB0aGUgZm9ybSBcImZvb1wiIG9yIFwiZm9vIGFzIGJhclwiLCB3aXRoXG4gICAgICAvLyBubyBsZWFkaW5nIFwidHlwZVwiLlxuICAgICAgaWYgKFxuICAgICAgICAoIWZvdW5kTm9uVHlwZUltcG9ydCAmJiB0aGlzLnRva2Vucy5tYXRjaGVzMShfdHlwZXMuVG9rZW5UeXBlLmJyYWNlTCkpIHx8XG4gICAgICAgIHRoaXMudG9rZW5zLm1hdGNoZXMxKF90eXBlcy5Ub2tlblR5cGUuY29tbWEpXG4gICAgICApIHtcbiAgICAgICAgdGhpcy50b2tlbnMucmVtb3ZlVG9rZW4oKTtcbiAgICAgICAgaWYgKCF0aGlzLnRva2Vucy5tYXRjaGVzMShfdHlwZXMuVG9rZW5UeXBlLmJyYWNlUikpIHtcbiAgICAgICAgICBmb3VuZEFueU5hbWVkSW1wb3J0ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgdGhpcy50b2tlbnMubWF0Y2hlczIoX3R5cGVzLlRva2VuVHlwZS5uYW1lLCBfdHlwZXMuVG9rZW5UeXBlLmNvbW1hKSB8fFxuICAgICAgICAgIHRoaXMudG9rZW5zLm1hdGNoZXMyKF90eXBlcy5Ub2tlblR5cGUubmFtZSwgX3R5cGVzLlRva2VuVHlwZS5icmFjZVIpIHx8XG4gICAgICAgICAgdGhpcy50b2tlbnMubWF0Y2hlczQoX3R5cGVzLlRva2VuVHlwZS5uYW1lLCBfdHlwZXMuVG9rZW5UeXBlLm5hbWUsIF90eXBlcy5Ub2tlblR5cGUubmFtZSwgX3R5cGVzLlRva2VuVHlwZS5jb21tYSkgfHxcbiAgICAgICAgICB0aGlzLnRva2Vucy5tYXRjaGVzNChfdHlwZXMuVG9rZW5UeXBlLm5hbWUsIF90eXBlcy5Ub2tlblR5cGUubmFtZSwgX3R5cGVzLlRva2VuVHlwZS5uYW1lLCBfdHlwZXMuVG9rZW5UeXBlLmJyYWNlUilcbiAgICAgICAgKSB7XG4gICAgICAgICAgZm91bmROb25UeXBlSW1wb3J0ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy50b2tlbnMucmVtb3ZlVG9rZW4oKTtcbiAgICB9XG4gICAgaWYgKHRoaXMua2VlcFVudXNlZEltcG9ydHMpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKHRoaXMuaXNUeXBlU2NyaXB0VHJhbnNmb3JtRW5hYmxlZCkge1xuICAgICAgcmV0dXJuICFmb3VuZE5vblR5cGVJbXBvcnQ7XG4gICAgfSBlbHNlIGlmICh0aGlzLmlzRmxvd1RyYW5zZm9ybUVuYWJsZWQpIHtcbiAgICAgIC8vIEluIEZsb3csIHVubGlrZSBUUywgYGltcG9ydCB7fSBmcm9tICdmb28nO2AgcHJlc2VydmVzIHRoZSBpbXBvcnQuXG4gICAgICByZXR1cm4gZm91bmRBbnlOYW1lZEltcG9ydCAmJiAhZm91bmROb25UeXBlSW1wb3J0O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgIHJlbW92ZVJlbWFpbmluZ0ltcG9ydCgpIHtcbiAgICB3aGlsZSAoIXRoaXMudG9rZW5zLm1hdGNoZXMxKF90eXBlcy5Ub2tlblR5cGUuc3RyaW5nKSkge1xuICAgICAgdGhpcy50b2tlbnMucmVtb3ZlVG9rZW4oKTtcbiAgICB9XG4gIH1cblxuICAgcHJvY2Vzc0lkZW50aWZpZXIoKSB7XG4gICAgY29uc3QgdG9rZW4gPSB0aGlzLnRva2Vucy5jdXJyZW50VG9rZW4oKTtcbiAgICBpZiAodG9rZW4uc2hhZG93c0dsb2JhbCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICh0b2tlbi5pZGVudGlmaWVyUm9sZSA9PT0gX3Rva2VuaXplci5JZGVudGlmaWVyUm9sZS5PYmplY3RTaG9ydGhhbmQpIHtcbiAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NPYmplY3RTaG9ydGhhbmQoKTtcbiAgICB9XG5cbiAgICBpZiAodG9rZW4uaWRlbnRpZmllclJvbGUgIT09IF90b2tlbml6ZXIuSWRlbnRpZmllclJvbGUuQWNjZXNzKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IHJlcGxhY2VtZW50ID0gdGhpcy5pbXBvcnRQcm9jZXNzb3IuZ2V0SWRlbnRpZmllclJlcGxhY2VtZW50KFxuICAgICAgdGhpcy50b2tlbnMuaWRlbnRpZmllck5hbWVGb3JUb2tlbih0b2tlbiksXG4gICAgKTtcbiAgICBpZiAoIXJlcGxhY2VtZW50KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIC8vIFRvbGVyYXRlIGFueSBudW1iZXIgb2YgY2xvc2luZyBwYXJlbnMgd2hpbGUgbG9va2luZyBmb3IgYW4gb3BlbmluZyBwYXJlblxuICAgIC8vIHRoYXQgaW5kaWNhdGVzIGEgZnVuY3Rpb24gY2FsbC5cbiAgICBsZXQgcG9zc2libGVPcGVuUGFyZW5JbmRleCA9IHRoaXMudG9rZW5zLmN1cnJlbnRJbmRleCgpICsgMTtcbiAgICB3aGlsZSAoXG4gICAgICBwb3NzaWJsZU9wZW5QYXJlbkluZGV4IDwgdGhpcy50b2tlbnMudG9rZW5zLmxlbmd0aCAmJlxuICAgICAgdGhpcy50b2tlbnMudG9rZW5zW3Bvc3NpYmxlT3BlblBhcmVuSW5kZXhdLnR5cGUgPT09IF90eXBlcy5Ub2tlblR5cGUucGFyZW5SXG4gICAgKSB7XG4gICAgICBwb3NzaWJsZU9wZW5QYXJlbkluZGV4Kys7XG4gICAgfVxuICAgIC8vIEF2b2lkIHRyZWF0aW5nIGltcG9ydGVkIGZ1bmN0aW9ucyBhcyBtZXRob2RzIG9mIHRoZWlyIGBleHBvcnRzYCBvYmplY3RcbiAgICAvLyBieSB1c2luZyBgKDAsIGYpYCB3aGVuIHRoZSBpZGVudGlmaWVyIGlzIGluIGEgcGFyZW4gZXhwcmVzc2lvbi4gRWxzZVxuICAgIC8vIHVzZSBgRnVuY3Rpb24ucHJvdG90eXBlLmNhbGxgIHdoZW4gdGhlIGlkZW50aWZpZXIgaXMgYSBndWFyYW50ZWVkXG4gICAgLy8gZnVuY3Rpb24gY2FsbC4gV2hlbiB1c2luZyBgY2FsbGAsIHBhc3MgdW5kZWZpbmVkIGFzIHRoZSBjb250ZXh0LlxuICAgIGlmICh0aGlzLnRva2Vucy50b2tlbnNbcG9zc2libGVPcGVuUGFyZW5JbmRleF0udHlwZSA9PT0gX3R5cGVzLlRva2VuVHlwZS5wYXJlbkwpIHtcbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy50b2tlbnMudG9rZW5BdFJlbGF0aXZlSW5kZXgoMSkudHlwZSA9PT0gX3R5cGVzLlRva2VuVHlwZS5wYXJlbkwgJiZcbiAgICAgICAgdGhpcy50b2tlbnMudG9rZW5BdFJlbGF0aXZlSW5kZXgoLTEpLnR5cGUgIT09IF90eXBlcy5Ub2tlblR5cGUuX25ld1xuICAgICAgKSB7XG4gICAgICAgIHRoaXMudG9rZW5zLnJlcGxhY2VUb2tlbihgJHtyZXBsYWNlbWVudH0uY2FsbCh2b2lkIDAsIGApO1xuICAgICAgICAvLyBSZW1vdmUgdGhlIG9sZCBwYXJlbi5cbiAgICAgICAgdGhpcy50b2tlbnMucmVtb3ZlVG9rZW4oKTtcbiAgICAgICAgLy8gQmFsYW5jZSBvdXQgdGhlIG5ldyBwYXJlbi5cbiAgICAgICAgdGhpcy5yb290VHJhbnNmb3JtZXIucHJvY2Vzc0JhbGFuY2VkQ29kZSgpO1xuICAgICAgICB0aGlzLnRva2Vucy5jb3B5RXhwZWN0ZWRUb2tlbihfdHlwZXMuVG9rZW5UeXBlLnBhcmVuUik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBTZWUgaGVyZTogaHR0cDovLzJhbGl0eS5jb20vMjAxNS8xMi9yZWZlcmVuY2VzLmh0bWxcbiAgICAgICAgdGhpcy50b2tlbnMucmVwbGFjZVRva2VuKGAoMCwgJHtyZXBsYWNlbWVudH0pYCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudG9rZW5zLnJlcGxhY2VUb2tlbihyZXBsYWNlbWVudCk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJvY2Vzc09iamVjdFNob3J0aGFuZCgpIHtcbiAgICBjb25zdCBpZGVudGlmaWVyID0gdGhpcy50b2tlbnMuaWRlbnRpZmllck5hbWUoKTtcbiAgICBjb25zdCByZXBsYWNlbWVudCA9IHRoaXMuaW1wb3J0UHJvY2Vzc29yLmdldElkZW50aWZpZXJSZXBsYWNlbWVudChpZGVudGlmaWVyKTtcbiAgICBpZiAoIXJlcGxhY2VtZW50KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHRoaXMudG9rZW5zLnJlcGxhY2VUb2tlbihgJHtpZGVudGlmaWVyfTogJHtyZXBsYWNlbWVudH1gKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHByb2Nlc3NFeHBvcnQoKSB7XG4gICAgaWYgKFxuICAgICAgdGhpcy50b2tlbnMubWF0Y2hlczIoX3R5cGVzLlRva2VuVHlwZS5fZXhwb3J0LCBfdHlwZXMuVG9rZW5UeXBlLl9lbnVtKSB8fFxuICAgICAgdGhpcy50b2tlbnMubWF0Y2hlczMoX3R5cGVzLlRva2VuVHlwZS5fZXhwb3J0LCBfdHlwZXMuVG9rZW5UeXBlLl9jb25zdCwgX3R5cGVzLlRva2VuVHlwZS5fZW51bSlcbiAgICApIHtcbiAgICAgIHRoaXMuaGFkTmFtZWRFeHBvcnQgPSB0cnVlO1xuICAgICAgLy8gTGV0IHRoZSBUeXBlU2NyaXB0IHRyYW5zZm9ybSBoYW5kbGUgaXQuXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmICh0aGlzLnRva2Vucy5tYXRjaGVzMihfdHlwZXMuVG9rZW5UeXBlLl9leHBvcnQsIF90eXBlcy5Ub2tlblR5cGUuX2RlZmF1bHQpKSB7XG4gICAgICBpZiAodGhpcy50b2tlbnMubWF0Y2hlczMoX3R5cGVzLlRva2VuVHlwZS5fZXhwb3J0LCBfdHlwZXMuVG9rZW5UeXBlLl9kZWZhdWx0LCBfdHlwZXMuVG9rZW5UeXBlLl9lbnVtKSkge1xuICAgICAgICB0aGlzLmhhZERlZmF1bHRFeHBvcnQgPSB0cnVlO1xuICAgICAgICAvLyBGbG93IGV4cG9ydCBkZWZhdWx0IGVudW1zIG5lZWQgc29tZSBzcGVjaWFsIGhhbmRsaW5nLCBzbyBoYW5kbGUgdGhlbVxuICAgICAgICAvLyBpbiB0aGF0IHRyYW5mb3JtIHJhdGhlciB0aGFuIHRoaXMgb25lLlxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICB0aGlzLnByb2Nlc3NFeHBvcnREZWZhdWx0KCk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKHRoaXMudG9rZW5zLm1hdGNoZXMyKF90eXBlcy5Ub2tlblR5cGUuX2V4cG9ydCwgX3R5cGVzLlRva2VuVHlwZS5icmFjZUwpKSB7XG4gICAgICB0aGlzLnByb2Nlc3NFeHBvcnRCaW5kaW5ncygpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIHRoaXMudG9rZW5zLm1hdGNoZXMyKF90eXBlcy5Ub2tlblR5cGUuX2V4cG9ydCwgX3R5cGVzLlRva2VuVHlwZS5uYW1lKSAmJlxuICAgICAgdGhpcy50b2tlbnMubWF0Y2hlc0NvbnRleHR1YWxBdEluZGV4KHRoaXMudG9rZW5zLmN1cnJlbnRJbmRleCgpICsgMSwgX2tleXdvcmRzLkNvbnRleHR1YWxLZXl3b3JkLl90eXBlKVxuICAgICkge1xuICAgICAgLy8gZXhwb3J0IHR5cGUge2F9O1xuICAgICAgLy8gZXhwb3J0IHR5cGUge2EgYXMgYn07XG4gICAgICAvLyBleHBvcnQgdHlwZSB7YX0gZnJvbSAnLi9iJztcbiAgICAgIC8vIGV4cG9ydCB0eXBlICogZnJvbSAnLi9iJztcbiAgICAgIC8vIGV4cG9ydCB0eXBlICogYXMgbnMgZnJvbSAnLi9iJztcbiAgICAgIHRoaXMudG9rZW5zLnJlbW92ZUluaXRpYWxUb2tlbigpO1xuICAgICAgdGhpcy50b2tlbnMucmVtb3ZlVG9rZW4oKTtcbiAgICAgIGlmICh0aGlzLnRva2Vucy5tYXRjaGVzMShfdHlwZXMuVG9rZW5UeXBlLmJyYWNlTCkpIHtcbiAgICAgICAgd2hpbGUgKCF0aGlzLnRva2Vucy5tYXRjaGVzMShfdHlwZXMuVG9rZW5UeXBlLmJyYWNlUikpIHtcbiAgICAgICAgICB0aGlzLnRva2Vucy5yZW1vdmVUb2tlbigpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudG9rZW5zLnJlbW92ZVRva2VuKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyAqXG4gICAgICAgIHRoaXMudG9rZW5zLnJlbW92ZVRva2VuKCk7XG4gICAgICAgIGlmICh0aGlzLnRva2Vucy5tYXRjaGVzMShfdHlwZXMuVG9rZW5UeXBlLl9hcykpIHtcbiAgICAgICAgICAvLyBhc1xuICAgICAgICAgIHRoaXMudG9rZW5zLnJlbW92ZVRva2VuKCk7XG4gICAgICAgICAgLy8gbnNcbiAgICAgICAgICB0aGlzLnRva2Vucy5yZW1vdmVUb2tlbigpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBSZW1vdmUgdHlwZSByZS1leHBvcnQgYC4uLiB9IGZyb20gJy4vVCdgXG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMudG9rZW5zLm1hdGNoZXNDb250ZXh0dWFsKF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fZnJvbSkgJiZcbiAgICAgICAgdGhpcy50b2tlbnMubWF0Y2hlczFBdEluZGV4KHRoaXMudG9rZW5zLmN1cnJlbnRJbmRleCgpICsgMSwgX3R5cGVzLlRva2VuVHlwZS5zdHJpbmcpXG4gICAgICApIHtcbiAgICAgICAgdGhpcy50b2tlbnMucmVtb3ZlVG9rZW4oKTtcbiAgICAgICAgdGhpcy50b2tlbnMucmVtb3ZlVG9rZW4oKTtcbiAgICAgICAgX3JlbW92ZU1heWJlSW1wb3J0QXR0cmlidXRlcy5yZW1vdmVNYXliZUltcG9ydEF0dHJpYnV0ZXMuY2FsbCh2b2lkIDAsIHRoaXMudG9rZW5zKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICB0aGlzLmhhZE5hbWVkRXhwb3J0ID0gdHJ1ZTtcbiAgICBpZiAoXG4gICAgICB0aGlzLnRva2Vucy5tYXRjaGVzMihfdHlwZXMuVG9rZW5UeXBlLl9leHBvcnQsIF90eXBlcy5Ub2tlblR5cGUuX3ZhcikgfHxcbiAgICAgIHRoaXMudG9rZW5zLm1hdGNoZXMyKF90eXBlcy5Ub2tlblR5cGUuX2V4cG9ydCwgX3R5cGVzLlRva2VuVHlwZS5fbGV0KSB8fFxuICAgICAgdGhpcy50b2tlbnMubWF0Y2hlczIoX3R5cGVzLlRva2VuVHlwZS5fZXhwb3J0LCBfdHlwZXMuVG9rZW5UeXBlLl9jb25zdClcbiAgICApIHtcbiAgICAgIHRoaXMucHJvY2Vzc0V4cG9ydFZhcigpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIHRoaXMudG9rZW5zLm1hdGNoZXMyKF90eXBlcy5Ub2tlblR5cGUuX2V4cG9ydCwgX3R5cGVzLlRva2VuVHlwZS5fZnVuY3Rpb24pIHx8XG4gICAgICAvLyBleHBvcnQgYXN5bmMgZnVuY3Rpb25cbiAgICAgIHRoaXMudG9rZW5zLm1hdGNoZXMzKF90eXBlcy5Ub2tlblR5cGUuX2V4cG9ydCwgX3R5cGVzLlRva2VuVHlwZS5uYW1lLCBfdHlwZXMuVG9rZW5UeXBlLl9mdW5jdGlvbilcbiAgICApIHtcbiAgICAgIHRoaXMucHJvY2Vzc0V4cG9ydEZ1bmN0aW9uKCk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgdGhpcy50b2tlbnMubWF0Y2hlczIoX3R5cGVzLlRva2VuVHlwZS5fZXhwb3J0LCBfdHlwZXMuVG9rZW5UeXBlLl9jbGFzcykgfHxcbiAgICAgIHRoaXMudG9rZW5zLm1hdGNoZXMzKF90eXBlcy5Ub2tlblR5cGUuX2V4cG9ydCwgX3R5cGVzLlRva2VuVHlwZS5fYWJzdHJhY3QsIF90eXBlcy5Ub2tlblR5cGUuX2NsYXNzKSB8fFxuICAgICAgdGhpcy50b2tlbnMubWF0Y2hlczIoX3R5cGVzLlRva2VuVHlwZS5fZXhwb3J0LCBfdHlwZXMuVG9rZW5UeXBlLmF0KVxuICAgICkge1xuICAgICAgdGhpcy5wcm9jZXNzRXhwb3J0Q2xhc3MoKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSBpZiAodGhpcy50b2tlbnMubWF0Y2hlczIoX3R5cGVzLlRva2VuVHlwZS5fZXhwb3J0LCBfdHlwZXMuVG9rZW5UeXBlLnN0YXIpKSB7XG4gICAgICB0aGlzLnByb2Nlc3NFeHBvcnRTdGFyKCk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5yZWNvZ25pemVkIGV4cG9ydCBzeW50YXguXCIpO1xuICAgIH1cbiAgfVxuXG4gICBwcm9jZXNzQXNzaWdubWVudCgpIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMudG9rZW5zLmN1cnJlbnRJbmRleCgpO1xuICAgIGNvbnN0IGlkZW50aWZpZXJUb2tlbiA9IHRoaXMudG9rZW5zLnRva2Vuc1tpbmRleCAtIDFdO1xuICAgIC8vIElmIHRoZSBMSFMgaXMgYSB0eXBlIGlkZW50aWZpZXIsIHRoaXMgbXVzdCBiZSBhIGRlY2xhcmF0aW9uIGxpa2UgYGxldCBhOiBiID0gYztgLFxuICAgIC8vIHdpdGggYGJgIGFzIHRoZSBpZGVudGlmaWVyLCBzbyBub3RoaW5nIG5lZWRzIHRvIGJlIGRvbmUgaW4gdGhhdCBjYXNlLlxuICAgIGlmIChpZGVudGlmaWVyVG9rZW4uaXNUeXBlIHx8IGlkZW50aWZpZXJUb2tlbi50eXBlICE9PSBfdHlwZXMuVG9rZW5UeXBlLm5hbWUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKGlkZW50aWZpZXJUb2tlbi5zaGFkb3dzR2xvYmFsKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmIChpbmRleCA+PSAyICYmIHRoaXMudG9rZW5zLm1hdGNoZXMxQXRJbmRleChpbmRleCAtIDIsIF90eXBlcy5Ub2tlblR5cGUuZG90KSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoaW5kZXggPj0gMiAmJiBbX3R5cGVzLlRva2VuVHlwZS5fdmFyLCBfdHlwZXMuVG9rZW5UeXBlLl9sZXQsIF90eXBlcy5Ub2tlblR5cGUuX2NvbnN0XS5pbmNsdWRlcyh0aGlzLnRva2Vucy50b2tlbnNbaW5kZXggLSAyXS50eXBlKSkge1xuICAgICAgLy8gRGVjbGFyYXRpb25zIGRvbid0IG5lZWQgYW4gZXh0cmEgYXNzaWdubWVudC4gVGhpcyBkb2Vzbid0IGF2b2lkIHRoZVxuICAgICAgLy8gYXNzaWdubWVudCBmb3IgY29tbWEtc2VwYXJhdGVkIGRlY2xhcmF0aW9ucywgYnV0IGl0J3Mgc3RpbGwgY29ycmVjdFxuICAgICAgLy8gc2luY2UgdGhlIGFzc2lnbm1lbnQgaXMganVzdCByZWR1bmRhbnQuXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IGFzc2lnbm1lbnRTbmlwcGV0ID0gdGhpcy5pbXBvcnRQcm9jZXNzb3IucmVzb2x2ZUV4cG9ydEJpbmRpbmcoXG4gICAgICB0aGlzLnRva2Vucy5pZGVudGlmaWVyTmFtZUZvclRva2VuKGlkZW50aWZpZXJUb2tlbiksXG4gICAgKTtcbiAgICBpZiAoIWFzc2lnbm1lbnRTbmlwcGV0KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHRoaXMudG9rZW5zLmNvcHlUb2tlbigpO1xuICAgIHRoaXMudG9rZW5zLmFwcGVuZENvZGUoYCAke2Fzc2lnbm1lbnRTbmlwcGV0fSA9YCk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogUHJvY2VzcyBzb21ldGhpbmcgbGlrZSBgYSArPSAzYCwgd2hlcmUgYGFgIG1pZ2h0IGJlIGFuIGV4cG9ydGVkIHZhbHVlLlxuICAgKi9cbiAgIHByb2Nlc3NDb21wbGV4QXNzaWdubWVudCgpIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMudG9rZW5zLmN1cnJlbnRJbmRleCgpO1xuICAgIGNvbnN0IGlkZW50aWZpZXJUb2tlbiA9IHRoaXMudG9rZW5zLnRva2Vuc1tpbmRleCAtIDFdO1xuICAgIGlmIChpZGVudGlmaWVyVG9rZW4udHlwZSAhPT0gX3R5cGVzLlRva2VuVHlwZS5uYW1lKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmIChpZGVudGlmaWVyVG9rZW4uc2hhZG93c0dsb2JhbCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoaW5kZXggPj0gMiAmJiB0aGlzLnRva2Vucy5tYXRjaGVzMUF0SW5kZXgoaW5kZXggLSAyLCBfdHlwZXMuVG9rZW5UeXBlLmRvdCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgYXNzaWdubWVudFNuaXBwZXQgPSB0aGlzLmltcG9ydFByb2Nlc3Nvci5yZXNvbHZlRXhwb3J0QmluZGluZyhcbiAgICAgIHRoaXMudG9rZW5zLmlkZW50aWZpZXJOYW1lRm9yVG9rZW4oaWRlbnRpZmllclRva2VuKSxcbiAgICApO1xuICAgIGlmICghYXNzaWdubWVudFNuaXBwZXQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdGhpcy50b2tlbnMuYXBwZW5kQ29kZShgID0gJHthc3NpZ25tZW50U25pcHBldH1gKTtcbiAgICB0aGlzLnRva2Vucy5jb3B5VG9rZW4oKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9jZXNzIHNvbWV0aGluZyBsaWtlIGArK2FgLCB3aGVyZSBgYWAgbWlnaHQgYmUgYW4gZXhwb3J0ZWQgdmFsdWUuXG4gICAqL1xuICAgcHJvY2Vzc1ByZUluY0RlYygpIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMudG9rZW5zLmN1cnJlbnRJbmRleCgpO1xuICAgIGNvbnN0IGlkZW50aWZpZXJUb2tlbiA9IHRoaXMudG9rZW5zLnRva2Vuc1tpbmRleCArIDFdO1xuICAgIGlmIChpZGVudGlmaWVyVG9rZW4udHlwZSAhPT0gX3R5cGVzLlRva2VuVHlwZS5uYW1lKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmIChpZGVudGlmaWVyVG9rZW4uc2hhZG93c0dsb2JhbCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICAvLyBJZ25vcmUgdGhpbmdzIGxpa2UgKythLmIgYW5kICsrYVtiXSBhbmQgKythKCkuYi5cbiAgICBpZiAoXG4gICAgICBpbmRleCArIDIgPCB0aGlzLnRva2Vucy50b2tlbnMubGVuZ3RoICYmXG4gICAgICAodGhpcy50b2tlbnMubWF0Y2hlczFBdEluZGV4KGluZGV4ICsgMiwgX3R5cGVzLlRva2VuVHlwZS5kb3QpIHx8XG4gICAgICAgIHRoaXMudG9rZW5zLm1hdGNoZXMxQXRJbmRleChpbmRleCArIDIsIF90eXBlcy5Ub2tlblR5cGUuYnJhY2tldEwpIHx8XG4gICAgICAgIHRoaXMudG9rZW5zLm1hdGNoZXMxQXRJbmRleChpbmRleCArIDIsIF90eXBlcy5Ub2tlblR5cGUucGFyZW5MKSlcbiAgICApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgaWRlbnRpZmllck5hbWUgPSB0aGlzLnRva2Vucy5pZGVudGlmaWVyTmFtZUZvclRva2VuKGlkZW50aWZpZXJUb2tlbik7XG4gICAgY29uc3QgYXNzaWdubWVudFNuaXBwZXQgPSB0aGlzLmltcG9ydFByb2Nlc3Nvci5yZXNvbHZlRXhwb3J0QmluZGluZyhpZGVudGlmaWVyTmFtZSk7XG4gICAgaWYgKCFhc3NpZ25tZW50U25pcHBldCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB0aGlzLnRva2Vucy5hcHBlbmRDb2RlKGAke2Fzc2lnbm1lbnRTbmlwcGV0fSA9IGApO1xuICAgIHRoaXMudG9rZW5zLmNvcHlUb2tlbigpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFByb2Nlc3Mgc29tZXRoaW5nIGxpa2UgYGErK2AsIHdoZXJlIGBhYCBtaWdodCBiZSBhbiBleHBvcnRlZCB2YWx1ZS5cbiAgICogVGhpcyBzdGFydHMgYXQgdGhlIGBhYCwgbm90IGF0IHRoZSBgKytgLlxuICAgKi9cbiAgIHByb2Nlc3NQb3N0SW5jRGVjKCkge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy50b2tlbnMuY3VycmVudEluZGV4KCk7XG4gICAgY29uc3QgaWRlbnRpZmllclRva2VuID0gdGhpcy50b2tlbnMudG9rZW5zW2luZGV4XTtcbiAgICBjb25zdCBvcGVyYXRvclRva2VuID0gdGhpcy50b2tlbnMudG9rZW5zW2luZGV4ICsgMV07XG4gICAgaWYgKGlkZW50aWZpZXJUb2tlbi50eXBlICE9PSBfdHlwZXMuVG9rZW5UeXBlLm5hbWUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKGlkZW50aWZpZXJUb2tlbi5zaGFkb3dzR2xvYmFsKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmIChpbmRleCA+PSAxICYmIHRoaXMudG9rZW5zLm1hdGNoZXMxQXRJbmRleChpbmRleCAtIDEsIF90eXBlcy5Ub2tlblR5cGUuZG90KSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBpZGVudGlmaWVyTmFtZSA9IHRoaXMudG9rZW5zLmlkZW50aWZpZXJOYW1lRm9yVG9rZW4oaWRlbnRpZmllclRva2VuKTtcbiAgICBjb25zdCBhc3NpZ25tZW50U25pcHBldCA9IHRoaXMuaW1wb3J0UHJvY2Vzc29yLnJlc29sdmVFeHBvcnRCaW5kaW5nKGlkZW50aWZpZXJOYW1lKTtcbiAgICBpZiAoIWFzc2lnbm1lbnRTbmlwcGV0KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IG9wZXJhdG9yQ29kZSA9IHRoaXMudG9rZW5zLnJhd0NvZGVGb3JUb2tlbihvcGVyYXRvclRva2VuKTtcbiAgICAvLyBXZSBtaWdodCBhbHNvIHJlcGxhY2UgdGhlIGlkZW50aWZpZXIgd2l0aCBzb21ldGhpbmcgbGlrZSBleHBvcnRzLngsIHNvXG4gICAgLy8gZG8gdGhhdCByZXBsYWNlbWVudCBoZXJlIGFzIHdlbGwuXG4gICAgY29uc3QgYmFzZSA9IHRoaXMuaW1wb3J0UHJvY2Vzc29yLmdldElkZW50aWZpZXJSZXBsYWNlbWVudChpZGVudGlmaWVyTmFtZSkgfHwgaWRlbnRpZmllck5hbWU7XG4gICAgaWYgKG9wZXJhdG9yQ29kZSA9PT0gXCIrK1wiKSB7XG4gICAgICB0aGlzLnRva2Vucy5yZXBsYWNlVG9rZW4oYCgke2Jhc2V9ID0gJHthc3NpZ25tZW50U25pcHBldH0gPSAke2Jhc2V9ICsgMSwgJHtiYXNlfSAtIDEpYCk7XG4gICAgfSBlbHNlIGlmIChvcGVyYXRvckNvZGUgPT09IFwiLS1cIikge1xuICAgICAgdGhpcy50b2tlbnMucmVwbGFjZVRva2VuKGAoJHtiYXNlfSA9ICR7YXNzaWdubWVudFNuaXBwZXR9ID0gJHtiYXNlfSAtIDEsICR7YmFzZX0gKyAxKWApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgb3BlcmF0b3I6ICR7b3BlcmF0b3JDb2RlfWApO1xuICAgIH1cbiAgICB0aGlzLnRva2Vucy5yZW1vdmVUb2tlbigpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgIHByb2Nlc3NFeHBvcnREZWZhdWx0KCkge1xuICAgIGxldCBleHBvcnRlZFJ1bnRpbWVWYWx1ZSA9IHRydWU7XG4gICAgaWYgKFxuICAgICAgdGhpcy50b2tlbnMubWF0Y2hlczQoX3R5cGVzLlRva2VuVHlwZS5fZXhwb3J0LCBfdHlwZXMuVG9rZW5UeXBlLl9kZWZhdWx0LCBfdHlwZXMuVG9rZW5UeXBlLl9mdW5jdGlvbiwgX3R5cGVzLlRva2VuVHlwZS5uYW1lKSB8fFxuICAgICAgLy8gZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb25cbiAgICAgICh0aGlzLnRva2Vucy5tYXRjaGVzNShfdHlwZXMuVG9rZW5UeXBlLl9leHBvcnQsIF90eXBlcy5Ub2tlblR5cGUuX2RlZmF1bHQsIF90eXBlcy5Ub2tlblR5cGUubmFtZSwgX3R5cGVzLlRva2VuVHlwZS5fZnVuY3Rpb24sIF90eXBlcy5Ub2tlblR5cGUubmFtZSkgJiZcbiAgICAgICAgdGhpcy50b2tlbnMubWF0Y2hlc0NvbnRleHR1YWxBdEluZGV4KFxuICAgICAgICAgIHRoaXMudG9rZW5zLmN1cnJlbnRJbmRleCgpICsgMixcbiAgICAgICAgICBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX2FzeW5jLFxuICAgICAgICApKVxuICAgICkge1xuICAgICAgdGhpcy50b2tlbnMucmVtb3ZlSW5pdGlhbFRva2VuKCk7XG4gICAgICB0aGlzLnRva2Vucy5yZW1vdmVUb2tlbigpO1xuICAgICAgLy8gTmFtZWQgZnVuY3Rpb24gZXhwb3J0IGNhc2U6IGNoYW5nZSBpdCB0byBhIHRvcC1sZXZlbCBmdW5jdGlvblxuICAgICAgLy8gZGVjbGFyYXRpb24gZm9sbG93ZWQgYnkgZXhwb3J0cyBzdGF0ZW1lbnQuXG4gICAgICBjb25zdCBuYW1lID0gdGhpcy5wcm9jZXNzTmFtZWRGdW5jdGlvbigpO1xuICAgICAgdGhpcy50b2tlbnMuYXBwZW5kQ29kZShgIGV4cG9ydHMuZGVmYXVsdCA9ICR7bmFtZX07YCk7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIHRoaXMudG9rZW5zLm1hdGNoZXM0KF90eXBlcy5Ub2tlblR5cGUuX2V4cG9ydCwgX3R5cGVzLlRva2VuVHlwZS5fZGVmYXVsdCwgX3R5cGVzLlRva2VuVHlwZS5fY2xhc3MsIF90eXBlcy5Ub2tlblR5cGUubmFtZSkgfHxcbiAgICAgIHRoaXMudG9rZW5zLm1hdGNoZXM1KF90eXBlcy5Ub2tlblR5cGUuX2V4cG9ydCwgX3R5cGVzLlRva2VuVHlwZS5fZGVmYXVsdCwgX3R5cGVzLlRva2VuVHlwZS5fYWJzdHJhY3QsIF90eXBlcy5Ub2tlblR5cGUuX2NsYXNzLCBfdHlwZXMuVG9rZW5UeXBlLm5hbWUpIHx8XG4gICAgICB0aGlzLnRva2Vucy5tYXRjaGVzMyhfdHlwZXMuVG9rZW5UeXBlLl9leHBvcnQsIF90eXBlcy5Ub2tlblR5cGUuX2RlZmF1bHQsIF90eXBlcy5Ub2tlblR5cGUuYXQpXG4gICAgKSB7XG4gICAgICB0aGlzLnRva2Vucy5yZW1vdmVJbml0aWFsVG9rZW4oKTtcbiAgICAgIHRoaXMudG9rZW5zLnJlbW92ZVRva2VuKCk7XG4gICAgICB0aGlzLmNvcHlEZWNvcmF0b3JzKCk7XG4gICAgICBpZiAodGhpcy50b2tlbnMubWF0Y2hlczEoX3R5cGVzLlRva2VuVHlwZS5fYWJzdHJhY3QpKSB7XG4gICAgICAgIHRoaXMudG9rZW5zLnJlbW92ZVRva2VuKCk7XG4gICAgICB9XG4gICAgICBjb25zdCBuYW1lID0gdGhpcy5yb290VHJhbnNmb3JtZXIucHJvY2Vzc05hbWVkQ2xhc3MoKTtcbiAgICAgIHRoaXMudG9rZW5zLmFwcGVuZENvZGUoYCBleHBvcnRzLmRlZmF1bHQgPSAke25hbWV9O2ApO1xuICAgICAgLy8gQWZ0ZXIgdGhpcyBwb2ludCwgdGhpcyBpcyBhIHBsYWluIFwiZXhwb3J0IGRlZmF1bHQgRVwiIHN0YXRlbWVudC5cbiAgICB9IGVsc2UgaWYgKFxuICAgICAgX3Nob3VsZEVsaWRlRGVmYXVsdEV4cG9ydDIuZGVmYXVsdC5jYWxsKHZvaWQgMCwgXG4gICAgICAgIHRoaXMuaXNUeXBlU2NyaXB0VHJhbnNmb3JtRW5hYmxlZCxcbiAgICAgICAgdGhpcy5rZWVwVW51c2VkSW1wb3J0cyxcbiAgICAgICAgdGhpcy50b2tlbnMsXG4gICAgICAgIHRoaXMuZGVjbGFyYXRpb25JbmZvLFxuICAgICAgKVxuICAgICkge1xuICAgICAgLy8gSWYgdGhlIGV4cG9ydGVkIHZhbHVlIGlzIGp1c3QgYW4gaWRlbnRpZmllciBhbmQgc2hvdWxkIGJlIGVsaWRlZCBieSBUeXBlU2NyaXB0XG4gICAgICAvLyBydWxlcywgdGhlbiByZW1vdmUgaXQgZW50aXJlbHkuIEl0IHdpbGwgYWx3YXlzIGhhdmUgdGhlIGZvcm0gYGV4cG9ydCBkZWZhdWx0IGVgLFxuICAgICAgLy8gd2hlcmUgYGVgIGlzIGFuIGlkZW50aWZpZXIuXG4gICAgICBleHBvcnRlZFJ1bnRpbWVWYWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy50b2tlbnMucmVtb3ZlSW5pdGlhbFRva2VuKCk7XG4gICAgICB0aGlzLnRva2Vucy5yZW1vdmVUb2tlbigpO1xuICAgICAgdGhpcy50b2tlbnMucmVtb3ZlVG9rZW4oKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMucmVhY3RIb3RMb2FkZXJUcmFuc2Zvcm1lcikge1xuICAgICAgLy8gV2UgbmVlZCB0byBhc3NpZ24gRSB0byBhIHZhcmlhYmxlLiBDaGFuZ2UgXCJleHBvcnQgZGVmYXVsdCBFXCIgdG9cbiAgICAgIC8vIFwibGV0IF9kZWZhdWx0OyBleHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdCA9IEVcIlxuICAgICAgY29uc3QgZGVmYXVsdFZhck5hbWUgPSB0aGlzLm5hbWVNYW5hZ2VyLmNsYWltRnJlZU5hbWUoXCJfZGVmYXVsdFwiKTtcbiAgICAgIHRoaXMudG9rZW5zLnJlcGxhY2VUb2tlbihgbGV0ICR7ZGVmYXVsdFZhck5hbWV9OyBleHBvcnRzLmApO1xuICAgICAgdGhpcy50b2tlbnMuY29weVRva2VuKCk7XG4gICAgICB0aGlzLnRva2Vucy5hcHBlbmRDb2RlKGAgPSAke2RlZmF1bHRWYXJOYW1lfSA9YCk7XG4gICAgICB0aGlzLnJlYWN0SG90TG9hZGVyVHJhbnNmb3JtZXIuc2V0RXh0cmFjdGVkRGVmYXVsdEV4cG9ydE5hbWUoZGVmYXVsdFZhck5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBDaGFuZ2UgXCJleHBvcnQgZGVmYXVsdCBFXCIgdG8gXCJleHBvcnRzLmRlZmF1bHQgPSBFXCJcbiAgICAgIHRoaXMudG9rZW5zLnJlcGxhY2VUb2tlbihcImV4cG9ydHMuXCIpO1xuICAgICAgdGhpcy50b2tlbnMuY29weVRva2VuKCk7XG4gICAgICB0aGlzLnRva2Vucy5hcHBlbmRDb2RlKFwiID1cIik7XG4gICAgfVxuICAgIGlmIChleHBvcnRlZFJ1bnRpbWVWYWx1ZSkge1xuICAgICAgdGhpcy5oYWREZWZhdWx0RXhwb3J0ID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICAgY29weURlY29yYXRvcnMoKSB7XG4gICAgd2hpbGUgKHRoaXMudG9rZW5zLm1hdGNoZXMxKF90eXBlcy5Ub2tlblR5cGUuYXQpKSB7XG4gICAgICB0aGlzLnRva2Vucy5jb3B5VG9rZW4oKTtcbiAgICAgIGlmICh0aGlzLnRva2Vucy5tYXRjaGVzMShfdHlwZXMuVG9rZW5UeXBlLnBhcmVuTCkpIHtcbiAgICAgICAgdGhpcy50b2tlbnMuY29weUV4cGVjdGVkVG9rZW4oX3R5cGVzLlRva2VuVHlwZS5wYXJlbkwpO1xuICAgICAgICB0aGlzLnJvb3RUcmFuc2Zvcm1lci5wcm9jZXNzQmFsYW5jZWRDb2RlKCk7XG4gICAgICAgIHRoaXMudG9rZW5zLmNvcHlFeHBlY3RlZFRva2VuKF90eXBlcy5Ub2tlblR5cGUucGFyZW5SKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudG9rZW5zLmNvcHlFeHBlY3RlZFRva2VuKF90eXBlcy5Ub2tlblR5cGUubmFtZSk7XG4gICAgICAgIHdoaWxlICh0aGlzLnRva2Vucy5tYXRjaGVzMShfdHlwZXMuVG9rZW5UeXBlLmRvdCkpIHtcbiAgICAgICAgICB0aGlzLnRva2Vucy5jb3B5RXhwZWN0ZWRUb2tlbihfdHlwZXMuVG9rZW5UeXBlLmRvdCk7XG4gICAgICAgICAgdGhpcy50b2tlbnMuY29weUV4cGVjdGVkVG9rZW4oX3R5cGVzLlRva2VuVHlwZS5uYW1lKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy50b2tlbnMubWF0Y2hlczEoX3R5cGVzLlRva2VuVHlwZS5wYXJlbkwpKSB7XG4gICAgICAgICAgdGhpcy50b2tlbnMuY29weUV4cGVjdGVkVG9rZW4oX3R5cGVzLlRva2VuVHlwZS5wYXJlbkwpO1xuICAgICAgICAgIHRoaXMucm9vdFRyYW5zZm9ybWVyLnByb2Nlc3NCYWxhbmNlZENvZGUoKTtcbiAgICAgICAgICB0aGlzLnRva2Vucy5jb3B5RXhwZWN0ZWRUb2tlbihfdHlwZXMuVG9rZW5UeXBlLnBhcmVuUik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVHJhbnNmb3JtIGEgZGVjbGFyYXRpb24gbGlrZSBgZXhwb3J0IHZhcmAsIGBleHBvcnQgbGV0YCwgb3IgYGV4cG9ydCBjb25zdGAuXG4gICAqL1xuICAgcHJvY2Vzc0V4cG9ydFZhcigpIHtcbiAgICBpZiAodGhpcy5pc1NpbXBsZUV4cG9ydFZhcigpKSB7XG4gICAgICB0aGlzLnByb2Nlc3NTaW1wbGVFeHBvcnRWYXIoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wcm9jZXNzQ29tcGxleEV4cG9ydFZhcigpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmUgaWYgdGhlIGV4cG9ydCBpcyBvZiB0aGUgZm9ybTpcbiAgICogZXhwb3J0IHZhci9sZXQvY29uc3QgW3Zhck5hbWVdID0gW2V4cHJdO1xuICAgKiBJbiBvdGhlciB3b3JkcywgZGV0ZXJtaW5lIGlmIGZ1bmN0aW9uIG5hbWUgaW5mZXJlbmNlIG1pZ2h0IGFwcGx5LlxuICAgKi9cbiAgIGlzU2ltcGxlRXhwb3J0VmFyKCkge1xuICAgIGxldCB0b2tlbkluZGV4ID0gdGhpcy50b2tlbnMuY3VycmVudEluZGV4KCk7XG4gICAgLy8gZXhwb3J0XG4gICAgdG9rZW5JbmRleCsrO1xuICAgIC8vIHZhci9sZXQvY29uc3RcbiAgICB0b2tlbkluZGV4Kys7XG4gICAgaWYgKCF0aGlzLnRva2Vucy5tYXRjaGVzMUF0SW5kZXgodG9rZW5JbmRleCwgX3R5cGVzLlRva2VuVHlwZS5uYW1lKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB0b2tlbkluZGV4Kys7XG4gICAgd2hpbGUgKHRva2VuSW5kZXggPCB0aGlzLnRva2Vucy50b2tlbnMubGVuZ3RoICYmIHRoaXMudG9rZW5zLnRva2Vuc1t0b2tlbkluZGV4XS5pc1R5cGUpIHtcbiAgICAgIHRva2VuSW5kZXgrKztcbiAgICB9XG4gICAgaWYgKCF0aGlzLnRva2Vucy5tYXRjaGVzMUF0SW5kZXgodG9rZW5JbmRleCwgX3R5cGVzLlRva2VuVHlwZS5lcSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogVHJhbnNmb3JtIGFuIGBleHBvcnQgdmFyYCBkZWNsYXJhdGlvbiBpbml0aWFsaXppbmcgYSBzaW5nbGUgdmFyaWFibGUuXG4gICAqXG4gICAqIEZvciBleGFtcGxlLCB0aGlzOlxuICAgKiBleHBvcnQgY29uc3QgZiA9ICgpID0+IHt9O1xuICAgKiBiZWNvbWVzIHRoaXM6XG4gICAqIGNvbnN0IGYgPSAoKSA9PiB7fTsgZXhwb3J0cy5mID0gZjtcbiAgICpcbiAgICogVGhlIHZhcmlhYmxlIGlzIHVudXNlZCAoZS5nLiBleHBvcnRzLmYgaGFzIHRoZSB0cnVlIHZhbHVlIG9mIHRoZSBleHBvcnQpLlxuICAgKiBXZSBuZWVkIHRvIHByb2R1Y2UgYW4gYXNzaWdubWVudCBvZiB0aGlzIGZvcm0gc28gdGhhdCB0aGUgZnVuY3Rpb24gd2lsbFxuICAgKiBoYXZlIGFuIGluZmVycmVkIG5hbWUgb2YgXCJmXCIsIHdoaWNoIHdvdWxkbid0IGhhcHBlbiBpbiB0aGUgbW9yZSBnZW5lcmFsXG4gICAqIGNhc2UgYmVsb3cuXG4gICAqL1xuICAgcHJvY2Vzc1NpbXBsZUV4cG9ydFZhcigpIHtcbiAgICAvLyBleHBvcnRcbiAgICB0aGlzLnRva2Vucy5yZW1vdmVJbml0aWFsVG9rZW4oKTtcbiAgICAvLyB2YXIvbGV0L2NvbnN0XG4gICAgdGhpcy50b2tlbnMuY29weVRva2VuKCk7XG4gICAgY29uc3QgdmFyTmFtZSA9IHRoaXMudG9rZW5zLmlkZW50aWZpZXJOYW1lKCk7XG4gICAgLy8geDogbnVtYmVyICAtPiAgeFxuICAgIHdoaWxlICghdGhpcy50b2tlbnMubWF0Y2hlczEoX3R5cGVzLlRva2VuVHlwZS5lcSkpIHtcbiAgICAgIHRoaXMucm9vdFRyYW5zZm9ybWVyLnByb2Nlc3NUb2tlbigpO1xuICAgIH1cbiAgICBjb25zdCBlbmRJbmRleCA9IHRoaXMudG9rZW5zLmN1cnJlbnRUb2tlbigpLnJoc0VuZEluZGV4O1xuICAgIGlmIChlbmRJbmRleCA9PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJFeHBlY3RlZCA9IHRva2VuIHdpdGggYW4gZW5kIGluZGV4LlwiKTtcbiAgICB9XG4gICAgd2hpbGUgKHRoaXMudG9rZW5zLmN1cnJlbnRJbmRleCgpIDwgZW5kSW5kZXgpIHtcbiAgICAgIHRoaXMucm9vdFRyYW5zZm9ybWVyLnByb2Nlc3NUb2tlbigpO1xuICAgIH1cbiAgICB0aGlzLnRva2Vucy5hcHBlbmRDb2RlKGA7IGV4cG9ydHMuJHt2YXJOYW1lfSA9ICR7dmFyTmFtZX1gKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmFuc2Zvcm0gbm9ybWFsIGRlY2xhcmF0aW9uIGV4cG9ydHMsIGluY2x1ZGluZyBoYW5kbGluZyBkZXN0cnVjdHVyaW5nLlxuICAgKiBGb3IgZXhhbXBsZSwgdGhpczpcbiAgICogZXhwb3J0IGNvbnN0IHt4OiBbYSA9IDIsIGJdLCBjfSA9IGQ7XG4gICAqIGJlY29tZXMgdGhpczpcbiAgICogKHt4OiBbZXhwb3J0cy5hID0gMiwgZXhwb3J0cy5iXSwgYzogZXhwb3J0cy5jfSA9IGQ7KVxuICAgKi9cbiAgIHByb2Nlc3NDb21wbGV4RXhwb3J0VmFyKCkge1xuICAgIHRoaXMudG9rZW5zLnJlbW92ZUluaXRpYWxUb2tlbigpO1xuICAgIHRoaXMudG9rZW5zLnJlbW92ZVRva2VuKCk7XG4gICAgY29uc3QgbmVlZHNQYXJlbnMgPSB0aGlzLnRva2Vucy5tYXRjaGVzMShfdHlwZXMuVG9rZW5UeXBlLmJyYWNlTCk7XG4gICAgaWYgKG5lZWRzUGFyZW5zKSB7XG4gICAgICB0aGlzLnRva2Vucy5hcHBlbmRDb2RlKFwiKFwiKTtcbiAgICB9XG5cbiAgICBsZXQgZGVwdGggPSAwO1xuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMudG9rZW5zLm1hdGNoZXMxKF90eXBlcy5Ub2tlblR5cGUuYnJhY2VMKSB8fFxuICAgICAgICB0aGlzLnRva2Vucy5tYXRjaGVzMShfdHlwZXMuVG9rZW5UeXBlLmRvbGxhckJyYWNlTCkgfHxcbiAgICAgICAgdGhpcy50b2tlbnMubWF0Y2hlczEoX3R5cGVzLlRva2VuVHlwZS5icmFja2V0TClcbiAgICAgICkge1xuICAgICAgICBkZXB0aCsrO1xuICAgICAgICB0aGlzLnRva2Vucy5jb3B5VG9rZW4oKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy50b2tlbnMubWF0Y2hlczEoX3R5cGVzLlRva2VuVHlwZS5icmFjZVIpIHx8IHRoaXMudG9rZW5zLm1hdGNoZXMxKF90eXBlcy5Ub2tlblR5cGUuYnJhY2tldFIpKSB7XG4gICAgICAgIGRlcHRoLS07XG4gICAgICAgIHRoaXMudG9rZW5zLmNvcHlUb2tlbigpO1xuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgZGVwdGggPT09IDAgJiZcbiAgICAgICAgIXRoaXMudG9rZW5zLm1hdGNoZXMxKF90eXBlcy5Ub2tlblR5cGUubmFtZSkgJiZcbiAgICAgICAgIXRoaXMudG9rZW5zLmN1cnJlbnRUb2tlbigpLmlzVHlwZVxuICAgICAgKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnRva2Vucy5tYXRjaGVzMShfdHlwZXMuVG9rZW5UeXBlLmVxKSkge1xuICAgICAgICAvLyBEZWZhdWx0IHZhbHVlcyBtaWdodCBoYXZlIGFzc2lnbm1lbnRzIGluIHRoZSBSSFMgdGhhdCB3ZSB3YW50IHRvIGlnbm9yZSwgc28gc2tpcCBwYXN0XG4gICAgICAgIC8vIHRoZW0uXG4gICAgICAgIGNvbnN0IGVuZEluZGV4ID0gdGhpcy50b2tlbnMuY3VycmVudFRva2VuKCkucmhzRW5kSW5kZXg7XG4gICAgICAgIGlmIChlbmRJbmRleCA9PSBudWxsKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRXhwZWN0ZWQgPSB0b2tlbiB3aXRoIGFuIGVuZCBpbmRleC5cIik7XG4gICAgICAgIH1cbiAgICAgICAgd2hpbGUgKHRoaXMudG9rZW5zLmN1cnJlbnRJbmRleCgpIDwgZW5kSW5kZXgpIHtcbiAgICAgICAgICB0aGlzLnJvb3RUcmFuc2Zvcm1lci5wcm9jZXNzVG9rZW4oKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgdG9rZW4gPSB0aGlzLnRva2Vucy5jdXJyZW50VG9rZW4oKTtcbiAgICAgICAgaWYgKF90b2tlbml6ZXIuaXNEZWNsYXJhdGlvbi5jYWxsKHZvaWQgMCwgdG9rZW4pKSB7XG4gICAgICAgICAgY29uc3QgbmFtZSA9IHRoaXMudG9rZW5zLmlkZW50aWZpZXJOYW1lKCk7XG4gICAgICAgICAgbGV0IHJlcGxhY2VtZW50ID0gdGhpcy5pbXBvcnRQcm9jZXNzb3IuZ2V0SWRlbnRpZmllclJlcGxhY2VtZW50KG5hbWUpO1xuICAgICAgICAgIGlmIChyZXBsYWNlbWVudCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBhIHJlcGxhY2VtZW50IGZvciAke25hbWV9IGluIFxcYGV4cG9ydCB2YXJcXGAgc3ludGF4LmApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoX3Rva2VuaXplci5pc09iamVjdFNob3J0aGFuZERlY2xhcmF0aW9uLmNhbGwodm9pZCAwLCB0b2tlbikpIHtcbiAgICAgICAgICAgIHJlcGxhY2VtZW50ID0gYCR7bmFtZX06ICR7cmVwbGFjZW1lbnR9YDtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy50b2tlbnMucmVwbGFjZVRva2VuKHJlcGxhY2VtZW50KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnJvb3RUcmFuc2Zvcm1lci5wcm9jZXNzVG9rZW4oKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChuZWVkc1BhcmVucykge1xuICAgICAgLy8gU2VlayB0byB0aGUgZW5kIG9mIHRoZSBSSFMuXG4gICAgICBjb25zdCBlbmRJbmRleCA9IHRoaXMudG9rZW5zLmN1cnJlbnRUb2tlbigpLnJoc0VuZEluZGV4O1xuICAgICAgaWYgKGVuZEluZGV4ID09IG51bGwpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRXhwZWN0ZWQgPSB0b2tlbiB3aXRoIGFuIGVuZCBpbmRleC5cIik7XG4gICAgICB9XG4gICAgICB3aGlsZSAodGhpcy50b2tlbnMuY3VycmVudEluZGV4KCkgPCBlbmRJbmRleCkge1xuICAgICAgICB0aGlzLnJvb3RUcmFuc2Zvcm1lci5wcm9jZXNzVG9rZW4oKTtcbiAgICAgIH1cbiAgICAgIHRoaXMudG9rZW5zLmFwcGVuZENvZGUoXCIpXCIpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUcmFuc2Zvcm0gdGhpczpcbiAgICogZXhwb3J0IGZ1bmN0aW9uIGZvbygpIHt9XG4gICAqIGludG8gdGhpczpcbiAgICogZnVuY3Rpb24gZm9vKCkge30gZXhwb3J0cy5mb28gPSBmb287XG4gICAqL1xuICAgcHJvY2Vzc0V4cG9ydEZ1bmN0aW9uKCkge1xuICAgIHRoaXMudG9rZW5zLnJlcGxhY2VUb2tlbihcIlwiKTtcbiAgICBjb25zdCBuYW1lID0gdGhpcy5wcm9jZXNzTmFtZWRGdW5jdGlvbigpO1xuICAgIHRoaXMudG9rZW5zLmFwcGVuZENvZGUoYCBleHBvcnRzLiR7bmFtZX0gPSAke25hbWV9O2ApO1xuICB9XG5cbiAgLyoqXG4gICAqIFNraXAgcGFzdCBhIGZ1bmN0aW9uIHdpdGggYSBuYW1lIGFuZCByZXR1cm4gdGhhdCBuYW1lLlxuICAgKi9cbiAgIHByb2Nlc3NOYW1lZEZ1bmN0aW9uKCkge1xuICAgIGlmICh0aGlzLnRva2Vucy5tYXRjaGVzMShfdHlwZXMuVG9rZW5UeXBlLl9mdW5jdGlvbikpIHtcbiAgICAgIHRoaXMudG9rZW5zLmNvcHlUb2tlbigpO1xuICAgIH0gZWxzZSBpZiAodGhpcy50b2tlbnMubWF0Y2hlczIoX3R5cGVzLlRva2VuVHlwZS5uYW1lLCBfdHlwZXMuVG9rZW5UeXBlLl9mdW5jdGlvbikpIHtcbiAgICAgIGlmICghdGhpcy50b2tlbnMubWF0Y2hlc0NvbnRleHR1YWwoX2tleXdvcmRzLkNvbnRleHR1YWxLZXl3b3JkLl9hc3luYykpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRXhwZWN0ZWQgYXN5bmMga2V5d29yZCBpbiBmdW5jdGlvbiBleHBvcnQuXCIpO1xuICAgICAgfVxuICAgICAgdGhpcy50b2tlbnMuY29weVRva2VuKCk7XG4gICAgICB0aGlzLnRva2Vucy5jb3B5VG9rZW4oKTtcbiAgICB9XG4gICAgaWYgKHRoaXMudG9rZW5zLm1hdGNoZXMxKF90eXBlcy5Ub2tlblR5cGUuc3RhcikpIHtcbiAgICAgIHRoaXMudG9rZW5zLmNvcHlUb2tlbigpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMudG9rZW5zLm1hdGNoZXMxKF90eXBlcy5Ub2tlblR5cGUubmFtZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkV4cGVjdGVkIGlkZW50aWZpZXIgZm9yIGV4cG9ydGVkIGZ1bmN0aW9uIG5hbWUuXCIpO1xuICAgIH1cbiAgICBjb25zdCBuYW1lID0gdGhpcy50b2tlbnMuaWRlbnRpZmllck5hbWUoKTtcbiAgICB0aGlzLnRva2Vucy5jb3B5VG9rZW4oKTtcbiAgICBpZiAodGhpcy50b2tlbnMuY3VycmVudFRva2VuKCkuaXNUeXBlKSB7XG4gICAgICB0aGlzLnRva2Vucy5yZW1vdmVJbml0aWFsVG9rZW4oKTtcbiAgICAgIHdoaWxlICh0aGlzLnRva2Vucy5jdXJyZW50VG9rZW4oKS5pc1R5cGUpIHtcbiAgICAgICAgdGhpcy50b2tlbnMucmVtb3ZlVG9rZW4oKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy50b2tlbnMuY29weUV4cGVjdGVkVG9rZW4oX3R5cGVzLlRva2VuVHlwZS5wYXJlbkwpO1xuICAgIHRoaXMucm9vdFRyYW5zZm9ybWVyLnByb2Nlc3NCYWxhbmNlZENvZGUoKTtcbiAgICB0aGlzLnRva2Vucy5jb3B5RXhwZWN0ZWRUb2tlbihfdHlwZXMuVG9rZW5UeXBlLnBhcmVuUik7XG4gICAgdGhpcy5yb290VHJhbnNmb3JtZXIucHJvY2Vzc1Bvc3NpYmxlVHlwZVJhbmdlKCk7XG4gICAgdGhpcy50b2tlbnMuY29weUV4cGVjdGVkVG9rZW4oX3R5cGVzLlRva2VuVHlwZS5icmFjZUwpO1xuICAgIHRoaXMucm9vdFRyYW5zZm9ybWVyLnByb2Nlc3NCYWxhbmNlZENvZGUoKTtcbiAgICB0aGlzLnRva2Vucy5jb3B5RXhwZWN0ZWRUb2tlbihfdHlwZXMuVG9rZW5UeXBlLmJyYWNlUik7XG4gICAgcmV0dXJuIG5hbWU7XG4gIH1cblxuICAvKipcbiAgICogVHJhbnNmb3JtIHRoaXM6XG4gICAqIGV4cG9ydCBjbGFzcyBBIHt9XG4gICAqIGludG8gdGhpczpcbiAgICogY2xhc3MgQSB7fSBleHBvcnRzLkEgPSBBO1xuICAgKi9cbiAgIHByb2Nlc3NFeHBvcnRDbGFzcygpIHtcbiAgICB0aGlzLnRva2Vucy5yZW1vdmVJbml0aWFsVG9rZW4oKTtcbiAgICB0aGlzLmNvcHlEZWNvcmF0b3JzKCk7XG4gICAgaWYgKHRoaXMudG9rZW5zLm1hdGNoZXMxKF90eXBlcy5Ub2tlblR5cGUuX2Fic3RyYWN0KSkge1xuICAgICAgdGhpcy50b2tlbnMucmVtb3ZlVG9rZW4oKTtcbiAgICB9XG4gICAgY29uc3QgbmFtZSA9IHRoaXMucm9vdFRyYW5zZm9ybWVyLnByb2Nlc3NOYW1lZENsYXNzKCk7XG4gICAgdGhpcy50b2tlbnMuYXBwZW5kQ29kZShgIGV4cG9ydHMuJHtuYW1lfSA9ICR7bmFtZX07YCk7XG4gIH1cblxuICAvKipcbiAgICogVHJhbnNmb3JtIHRoaXM6XG4gICAqIGV4cG9ydCB7YSwgYiBhcyBjfTtcbiAgICogaW50byB0aGlzOlxuICAgKiBleHBvcnRzLmEgPSBhOyBleHBvcnRzLmMgPSBiO1xuICAgKlxuICAgKiBPUlxuICAgKlxuICAgKiBUcmFuc2Zvcm0gdGhpczpcbiAgICogZXhwb3J0IHthLCBiIGFzIGN9IGZyb20gJy4vZm9vJztcbiAgICogaW50byB0aGUgcHJlLWdlbmVyYXRlZCBPYmplY3QuZGVmaW5lUHJvcGVydHkgY29kZSBmcm9tIHRoZSBJbXBvcnRQcm9jZXNzb3IuXG4gICAqXG4gICAqIEZvciB0aGUgZmlyc3QgY2FzZSwgaWYgdGhlIFR5cGVTY3JpcHQgdHJhbnNmb3JtIGlzIGVuYWJsZWQsIHdlIG5lZWQgdG8gc2tpcFxuICAgKiBleHBvcnRzIHRoYXQgYXJlIG9ubHkgZGVmaW5lZCBhcyB0eXBlcy5cbiAgICovXG4gICBwcm9jZXNzRXhwb3J0QmluZGluZ3MoKSB7XG4gICAgdGhpcy50b2tlbnMucmVtb3ZlSW5pdGlhbFRva2VuKCk7XG4gICAgdGhpcy50b2tlbnMucmVtb3ZlVG9rZW4oKTtcblxuICAgIGNvbnN0IGlzUmVFeHBvcnQgPSBfaXNFeHBvcnRGcm9tMi5kZWZhdWx0LmNhbGwodm9pZCAwLCB0aGlzLnRva2Vucyk7XG5cbiAgICBjb25zdCBleHBvcnRTdGF0ZW1lbnRzID0gW107XG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIGlmICh0aGlzLnRva2Vucy5tYXRjaGVzMShfdHlwZXMuVG9rZW5UeXBlLmJyYWNlUikpIHtcbiAgICAgICAgdGhpcy50b2tlbnMucmVtb3ZlVG9rZW4oKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHNwZWNpZmllckluZm8gPSBfZ2V0SW1wb3J0RXhwb3J0U3BlY2lmaWVySW5mbzIuZGVmYXVsdC5jYWxsKHZvaWQgMCwgdGhpcy50b2tlbnMpO1xuXG4gICAgICB3aGlsZSAodGhpcy50b2tlbnMuY3VycmVudEluZGV4KCkgPCBzcGVjaWZpZXJJbmZvLmVuZEluZGV4KSB7XG4gICAgICAgIHRoaXMudG9rZW5zLnJlbW92ZVRva2VuKCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHNob3VsZFJlbW92ZUV4cG9ydCA9XG4gICAgICAgIHNwZWNpZmllckluZm8uaXNUeXBlIHx8XG4gICAgICAgICghaXNSZUV4cG9ydCAmJiB0aGlzLnNob3VsZEVsaWRlRXhwb3J0ZWRJZGVudGlmaWVyKHNwZWNpZmllckluZm8ubGVmdE5hbWUpKTtcbiAgICAgIGlmICghc2hvdWxkUmVtb3ZlRXhwb3J0KSB7XG4gICAgICAgIGNvbnN0IGV4cG9ydGVkTmFtZSA9IHNwZWNpZmllckluZm8ucmlnaHROYW1lO1xuICAgICAgICBpZiAoZXhwb3J0ZWROYW1lID09PSBcImRlZmF1bHRcIikge1xuICAgICAgICAgIHRoaXMuaGFkRGVmYXVsdEV4cG9ydCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5oYWROYW1lZEV4cG9ydCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbG9jYWxOYW1lID0gc3BlY2lmaWVySW5mby5sZWZ0TmFtZTtcbiAgICAgICAgY29uc3QgbmV3TG9jYWxOYW1lID0gdGhpcy5pbXBvcnRQcm9jZXNzb3IuZ2V0SWRlbnRpZmllclJlcGxhY2VtZW50KGxvY2FsTmFtZSk7XG4gICAgICAgIGV4cG9ydFN0YXRlbWVudHMucHVzaChgZXhwb3J0cy4ke2V4cG9ydGVkTmFtZX0gPSAke25ld0xvY2FsTmFtZSB8fCBsb2NhbE5hbWV9O2ApO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy50b2tlbnMubWF0Y2hlczEoX3R5cGVzLlRva2VuVHlwZS5icmFjZVIpKSB7XG4gICAgICAgIHRoaXMudG9rZW5zLnJlbW92ZVRva2VuKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMudG9rZW5zLm1hdGNoZXMyKF90eXBlcy5Ub2tlblR5cGUuY29tbWEsIF90eXBlcy5Ub2tlblR5cGUuYnJhY2VSKSkge1xuICAgICAgICB0aGlzLnRva2Vucy5yZW1vdmVUb2tlbigpO1xuICAgICAgICB0aGlzLnRva2Vucy5yZW1vdmVUb2tlbigpO1xuICAgICAgICBicmVhaztcbiAgICAgIH0gZWxzZSBpZiAodGhpcy50b2tlbnMubWF0Y2hlczEoX3R5cGVzLlRva2VuVHlwZS5jb21tYSkpIHtcbiAgICAgICAgdGhpcy50b2tlbnMucmVtb3ZlVG9rZW4oKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCB0b2tlbjogJHtKU09OLnN0cmluZ2lmeSh0aGlzLnRva2Vucy5jdXJyZW50VG9rZW4oKSl9YCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudG9rZW5zLm1hdGNoZXNDb250ZXh0dWFsKF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fZnJvbSkpIHtcbiAgICAgIC8vIFRoaXMgaXMgYW4gZXhwb3J0Li4uZnJvbSwgc28gdGhyb3cgYXdheSB0aGUgbm9ybWFsIG5hbWVkIGV4cG9ydCBjb2RlXG4gICAgICAvLyBhbmQgdXNlIHRoZSBPYmplY3QuZGVmaW5lUHJvcGVydHkgY29kZSBmcm9tIEltcG9ydFByb2Nlc3Nvci5cbiAgICAgIHRoaXMudG9rZW5zLnJlbW92ZVRva2VuKCk7XG4gICAgICBjb25zdCBwYXRoID0gdGhpcy50b2tlbnMuc3RyaW5nVmFsdWUoKTtcbiAgICAgIHRoaXMudG9rZW5zLnJlcGxhY2VUb2tlblRyaW1taW5nTGVmdFdoaXRlc3BhY2UodGhpcy5pbXBvcnRQcm9jZXNzb3IuY2xhaW1JbXBvcnRDb2RlKHBhdGgpKTtcbiAgICAgIF9yZW1vdmVNYXliZUltcG9ydEF0dHJpYnV0ZXMucmVtb3ZlTWF5YmVJbXBvcnRBdHRyaWJ1dGVzLmNhbGwodm9pZCAwLCB0aGlzLnRva2Vucyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRoaXMgaXMgYSBub3JtYWwgbmFtZWQgZXhwb3J0LCBzbyB1c2UgdGhhdC5cbiAgICAgIHRoaXMudG9rZW5zLmFwcGVuZENvZGUoZXhwb3J0U3RhdGVtZW50cy5qb2luKFwiIFwiKSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudG9rZW5zLm1hdGNoZXMxKF90eXBlcy5Ub2tlblR5cGUuc2VtaSkpIHtcbiAgICAgIHRoaXMudG9rZW5zLnJlbW92ZVRva2VuKCk7XG4gICAgfVxuICB9XG5cbiAgIHByb2Nlc3NFeHBvcnRTdGFyKCkge1xuICAgIHRoaXMudG9rZW5zLnJlbW92ZUluaXRpYWxUb2tlbigpO1xuICAgIHdoaWxlICghdGhpcy50b2tlbnMubWF0Y2hlczEoX3R5cGVzLlRva2VuVHlwZS5zdHJpbmcpKSB7XG4gICAgICB0aGlzLnRva2Vucy5yZW1vdmVUb2tlbigpO1xuICAgIH1cbiAgICBjb25zdCBwYXRoID0gdGhpcy50b2tlbnMuc3RyaW5nVmFsdWUoKTtcbiAgICB0aGlzLnRva2Vucy5yZXBsYWNlVG9rZW5UcmltbWluZ0xlZnRXaGl0ZXNwYWNlKHRoaXMuaW1wb3J0UHJvY2Vzc29yLmNsYWltSW1wb3J0Q29kZShwYXRoKSk7XG4gICAgX3JlbW92ZU1heWJlSW1wb3J0QXR0cmlidXRlcy5yZW1vdmVNYXliZUltcG9ydEF0dHJpYnV0ZXMuY2FsbCh2b2lkIDAsIHRoaXMudG9rZW5zKTtcbiAgICBpZiAodGhpcy50b2tlbnMubWF0Y2hlczEoX3R5cGVzLlRva2VuVHlwZS5zZW1pKSkge1xuICAgICAgdGhpcy50b2tlbnMucmVtb3ZlVG9rZW4oKTtcbiAgICB9XG4gIH1cblxuICAgc2hvdWxkRWxpZGVFeHBvcnRlZElkZW50aWZpZXIobmFtZSkge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmlzVHlwZVNjcmlwdFRyYW5zZm9ybUVuYWJsZWQgJiZcbiAgICAgICF0aGlzLmtlZXBVbnVzZWRJbXBvcnRzICYmXG4gICAgICAhdGhpcy5kZWNsYXJhdGlvbkluZm8udmFsdWVEZWNsYXJhdGlvbnMuaGFzKG5hbWUpXG4gICAgKTtcbiAgfVxufSBleHBvcnRzLmRlZmF1bHQgPSBDSlNJbXBvcnRUcmFuc2Zvcm1lcjtcbiIsICJcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHt2YWx1ZTogdHJ1ZX0pOyBmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5cbnZhciBfa2V5d29yZHMgPSByZXF1aXJlKCcuLi9wYXJzZXIvdG9rZW5pemVyL2tleXdvcmRzJyk7XG52YXIgX3R5cGVzID0gcmVxdWlyZSgnLi4vcGFyc2VyL3Rva2VuaXplci90eXBlcycpO1xuXG52YXIgX2VsaWRlSW1wb3J0RXF1YWxzID0gcmVxdWlyZSgnLi4vdXRpbC9lbGlkZUltcG9ydEVxdWFscycpOyB2YXIgX2VsaWRlSW1wb3J0RXF1YWxzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2VsaWRlSW1wb3J0RXF1YWxzKTtcblxuXG5cbnZhciBfZ2V0RGVjbGFyYXRpb25JbmZvID0gcmVxdWlyZSgnLi4vdXRpbC9nZXREZWNsYXJhdGlvbkluZm8nKTsgdmFyIF9nZXREZWNsYXJhdGlvbkluZm8yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZ2V0RGVjbGFyYXRpb25JbmZvKTtcbnZhciBfZ2V0SW1wb3J0RXhwb3J0U3BlY2lmaWVySW5mbyA9IHJlcXVpcmUoJy4uL3V0aWwvZ2V0SW1wb3J0RXhwb3J0U3BlY2lmaWVySW5mbycpOyB2YXIgX2dldEltcG9ydEV4cG9ydFNwZWNpZmllckluZm8yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZ2V0SW1wb3J0RXhwb3J0U3BlY2lmaWVySW5mbyk7XG52YXIgX2dldE5vblR5cGVJZGVudGlmaWVycyA9IHJlcXVpcmUoJy4uL3V0aWwvZ2V0Tm9uVHlwZUlkZW50aWZpZXJzJyk7XG52YXIgX2lzRXhwb3J0RnJvbSA9IHJlcXVpcmUoJy4uL3V0aWwvaXNFeHBvcnRGcm9tJyk7IHZhciBfaXNFeHBvcnRGcm9tMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2lzRXhwb3J0RnJvbSk7XG52YXIgX3JlbW92ZU1heWJlSW1wb3J0QXR0cmlidXRlcyA9IHJlcXVpcmUoJy4uL3V0aWwvcmVtb3ZlTWF5YmVJbXBvcnRBdHRyaWJ1dGVzJyk7XG52YXIgX3Nob3VsZEVsaWRlRGVmYXVsdEV4cG9ydCA9IHJlcXVpcmUoJy4uL3V0aWwvc2hvdWxkRWxpZGVEZWZhdWx0RXhwb3J0Jyk7IHZhciBfc2hvdWxkRWxpZGVEZWZhdWx0RXhwb3J0MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3Nob3VsZEVsaWRlRGVmYXVsdEV4cG9ydCk7XG5cbnZhciBfVHJhbnNmb3JtZXIgPSByZXF1aXJlKCcuL1RyYW5zZm9ybWVyJyk7IHZhciBfVHJhbnNmb3JtZXIyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfVHJhbnNmb3JtZXIpO1xuXG4vKipcbiAqIENsYXNzIGZvciBlZGl0aW5nIGltcG9ydCBzdGF0ZW1lbnRzIHdoZW4gd2UgYXJlIGtlZXBpbmcgdGhlIGNvZGUgYXMgRVNNLiBXZSBzdGlsbCBuZWVkIHRvIHJlbW92ZVxuICogdHlwZS1vbmx5IGltcG9ydHMgaW4gVHlwZVNjcmlwdCBhbmQgRmxvdy5cbiAqL1xuIGNsYXNzIEVTTUltcG9ydFRyYW5zZm9ybWVyIGV4dGVuZHMgX1RyYW5zZm9ybWVyMi5kZWZhdWx0IHtcbiAgXG4gIFxuICBcblxuICBjb25zdHJ1Y3RvcihcbiAgICAgdG9rZW5zLFxuICAgICBuYW1lTWFuYWdlcixcbiAgICAgaGVscGVyTWFuYWdlcixcbiAgICAgcmVhY3RIb3RMb2FkZXJUcmFuc2Zvcm1lcixcbiAgICAgaXNUeXBlU2NyaXB0VHJhbnNmb3JtRW5hYmxlZCxcbiAgICAgaXNGbG93VHJhbnNmb3JtRW5hYmxlZCxcbiAgICAga2VlcFVudXNlZEltcG9ydHMsXG4gICAgb3B0aW9ucyxcbiAgKSB7XG4gICAgc3VwZXIoKTt0aGlzLnRva2VucyA9IHRva2Vuczt0aGlzLm5hbWVNYW5hZ2VyID0gbmFtZU1hbmFnZXI7dGhpcy5oZWxwZXJNYW5hZ2VyID0gaGVscGVyTWFuYWdlcjt0aGlzLnJlYWN0SG90TG9hZGVyVHJhbnNmb3JtZXIgPSByZWFjdEhvdExvYWRlclRyYW5zZm9ybWVyO3RoaXMuaXNUeXBlU2NyaXB0VHJhbnNmb3JtRW5hYmxlZCA9IGlzVHlwZVNjcmlwdFRyYW5zZm9ybUVuYWJsZWQ7dGhpcy5pc0Zsb3dUcmFuc2Zvcm1FbmFibGVkID0gaXNGbG93VHJhbnNmb3JtRW5hYmxlZDt0aGlzLmtlZXBVbnVzZWRJbXBvcnRzID0ga2VlcFVudXNlZEltcG9ydHM7O1xuICAgIHRoaXMubm9uVHlwZUlkZW50aWZpZXJzID1cbiAgICAgIGlzVHlwZVNjcmlwdFRyYW5zZm9ybUVuYWJsZWQgJiYgIWtlZXBVbnVzZWRJbXBvcnRzXG4gICAgICAgID8gX2dldE5vblR5cGVJZGVudGlmaWVycy5nZXROb25UeXBlSWRlbnRpZmllcnMuY2FsbCh2b2lkIDAsIHRva2Vucywgb3B0aW9ucylcbiAgICAgICAgOiBuZXcgU2V0KCk7XG4gICAgdGhpcy5kZWNsYXJhdGlvbkluZm8gPVxuICAgICAgaXNUeXBlU2NyaXB0VHJhbnNmb3JtRW5hYmxlZCAmJiAha2VlcFVudXNlZEltcG9ydHNcbiAgICAgICAgPyBfZ2V0RGVjbGFyYXRpb25JbmZvMi5kZWZhdWx0LmNhbGwodm9pZCAwLCB0b2tlbnMpXG4gICAgICAgIDogX2dldERlY2xhcmF0aW9uSW5mby5FTVBUWV9ERUNMQVJBVElPTl9JTkZPO1xuICAgIHRoaXMuaW5qZWN0Q3JlYXRlUmVxdWlyZUZvckltcG9ydFJlcXVpcmUgPSBCb29sZWFuKG9wdGlvbnMuaW5qZWN0Q3JlYXRlUmVxdWlyZUZvckltcG9ydFJlcXVpcmUpO1xuICB9XG5cbiAgcHJvY2VzcygpIHtcbiAgICAvLyBUeXBlU2NyaXB0IGBpbXBvcnQgZm9vID0gcmVxdWlyZSgnZm9vJyk7YCBzaG91bGQgYWx3YXlzIGp1c3QgYmUgdHJhbnNsYXRlZCB0byBwbGFpbiByZXF1aXJlLlxuICAgIGlmICh0aGlzLnRva2Vucy5tYXRjaGVzMyhfdHlwZXMuVG9rZW5UeXBlLl9pbXBvcnQsIF90eXBlcy5Ub2tlblR5cGUubmFtZSwgX3R5cGVzLlRva2VuVHlwZS5lcSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NJbXBvcnRFcXVhbHMoKTtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgdGhpcy50b2tlbnMubWF0Y2hlczQoX3R5cGVzLlRva2VuVHlwZS5faW1wb3J0LCBfdHlwZXMuVG9rZW5UeXBlLm5hbWUsIF90eXBlcy5Ub2tlblR5cGUubmFtZSwgX3R5cGVzLlRva2VuVHlwZS5lcSkgJiZcbiAgICAgIHRoaXMudG9rZW5zLm1hdGNoZXNDb250ZXh0dWFsQXRJbmRleCh0aGlzLnRva2Vucy5jdXJyZW50SW5kZXgoKSArIDEsIF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fdHlwZSlcbiAgICApIHtcbiAgICAgIC8vIGltcG9ydCB0eXBlIFQgPSByZXF1aXJlKCdUJylcbiAgICAgIHRoaXMudG9rZW5zLnJlbW92ZUluaXRpYWxUb2tlbigpO1xuICAgICAgLy8gVGhpcyBjb25zdHJ1Y3QgaXMgYWx3YXlzIGV4YWN0bHkgOCB0b2tlbnMgbG9uZywgc28gcmVtb3ZlIHRoZSA3IHJlbWFpbmluZyB0b2tlbnMuXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDc7IGkrKykge1xuICAgICAgICB0aGlzLnRva2Vucy5yZW1vdmVUb2tlbigpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmICh0aGlzLnRva2Vucy5tYXRjaGVzMihfdHlwZXMuVG9rZW5UeXBlLl9leHBvcnQsIF90eXBlcy5Ub2tlblR5cGUuZXEpKSB7XG4gICAgICB0aGlzLnRva2Vucy5yZXBsYWNlVG9rZW4oXCJtb2R1bGUuZXhwb3J0c1wiKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICB0aGlzLnRva2Vucy5tYXRjaGVzNShfdHlwZXMuVG9rZW5UeXBlLl9leHBvcnQsIF90eXBlcy5Ub2tlblR5cGUuX2ltcG9ydCwgX3R5cGVzLlRva2VuVHlwZS5uYW1lLCBfdHlwZXMuVG9rZW5UeXBlLm5hbWUsIF90eXBlcy5Ub2tlblR5cGUuZXEpICYmXG4gICAgICB0aGlzLnRva2Vucy5tYXRjaGVzQ29udGV4dHVhbEF0SW5kZXgodGhpcy50b2tlbnMuY3VycmVudEluZGV4KCkgKyAyLCBfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX3R5cGUpXG4gICAgKSB7XG4gICAgICAvLyBleHBvcnQgaW1wb3J0IHR5cGUgVCA9IHJlcXVpcmUoJ1QnKVxuICAgICAgdGhpcy50b2tlbnMucmVtb3ZlSW5pdGlhbFRva2VuKCk7XG4gICAgICAvLyBUaGlzIGNvbnN0cnVjdCBpcyBhbHdheXMgZXhhY3RseSA5IHRva2VucyBsb25nLCBzbyByZW1vdmUgdGhlIDggcmVtYWluaW5nIHRva2Vucy5cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgODsgaSsrKSB7XG4gICAgICAgIHRoaXMudG9rZW5zLnJlbW92ZVRva2VuKCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKHRoaXMudG9rZW5zLm1hdGNoZXMxKF90eXBlcy5Ub2tlblR5cGUuX2ltcG9ydCkpIHtcbiAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NJbXBvcnQoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMudG9rZW5zLm1hdGNoZXMyKF90eXBlcy5Ub2tlblR5cGUuX2V4cG9ydCwgX3R5cGVzLlRva2VuVHlwZS5fZGVmYXVsdCkpIHtcbiAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NFeHBvcnREZWZhdWx0KCk7XG4gICAgfVxuICAgIGlmICh0aGlzLnRva2Vucy5tYXRjaGVzMihfdHlwZXMuVG9rZW5UeXBlLl9leHBvcnQsIF90eXBlcy5Ub2tlblR5cGUuYnJhY2VMKSkge1xuICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc05hbWVkRXhwb3J0cygpO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICB0aGlzLnRva2Vucy5tYXRjaGVzMihfdHlwZXMuVG9rZW5UeXBlLl9leHBvcnQsIF90eXBlcy5Ub2tlblR5cGUubmFtZSkgJiZcbiAgICAgIHRoaXMudG9rZW5zLm1hdGNoZXNDb250ZXh0dWFsQXRJbmRleCh0aGlzLnRva2Vucy5jdXJyZW50SW5kZXgoKSArIDEsIF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fdHlwZSlcbiAgICApIHtcbiAgICAgIC8vIGV4cG9ydCB0eXBlIHthfTtcbiAgICAgIC8vIGV4cG9ydCB0eXBlIHthIGFzIGJ9O1xuICAgICAgLy8gZXhwb3J0IHR5cGUge2F9IGZyb20gJy4vYic7XG4gICAgICAvLyBleHBvcnQgdHlwZSAqIGZyb20gJy4vYic7XG4gICAgICAvLyBleHBvcnQgdHlwZSAqIGFzIG5zIGZyb20gJy4vYic7XG4gICAgICB0aGlzLnRva2Vucy5yZW1vdmVJbml0aWFsVG9rZW4oKTtcbiAgICAgIHRoaXMudG9rZW5zLnJlbW92ZVRva2VuKCk7XG4gICAgICBpZiAodGhpcy50b2tlbnMubWF0Y2hlczEoX3R5cGVzLlRva2VuVHlwZS5icmFjZUwpKSB7XG4gICAgICAgIHdoaWxlICghdGhpcy50b2tlbnMubWF0Y2hlczEoX3R5cGVzLlRva2VuVHlwZS5icmFjZVIpKSB7XG4gICAgICAgICAgdGhpcy50b2tlbnMucmVtb3ZlVG9rZW4oKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRva2Vucy5yZW1vdmVUb2tlbigpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gKlxuICAgICAgICB0aGlzLnRva2Vucy5yZW1vdmVUb2tlbigpO1xuICAgICAgICBpZiAodGhpcy50b2tlbnMubWF0Y2hlczEoX3R5cGVzLlRva2VuVHlwZS5fYXMpKSB7XG4gICAgICAgICAgLy8gYXNcbiAgICAgICAgICB0aGlzLnRva2Vucy5yZW1vdmVUb2tlbigpO1xuICAgICAgICAgIC8vIG5zXG4gICAgICAgICAgdGhpcy50b2tlbnMucmVtb3ZlVG9rZW4oKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gUmVtb3ZlIHR5cGUgcmUtZXhwb3J0IGAuLi4gfSBmcm9tICcuL1QnYFxuICAgICAgaWYgKFxuICAgICAgICB0aGlzLnRva2Vucy5tYXRjaGVzQ29udGV4dHVhbChfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX2Zyb20pICYmXG4gICAgICAgIHRoaXMudG9rZW5zLm1hdGNoZXMxQXRJbmRleCh0aGlzLnRva2Vucy5jdXJyZW50SW5kZXgoKSArIDEsIF90eXBlcy5Ub2tlblR5cGUuc3RyaW5nKVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMudG9rZW5zLnJlbW92ZVRva2VuKCk7XG4gICAgICAgIHRoaXMudG9rZW5zLnJlbW92ZVRva2VuKCk7XG4gICAgICAgIF9yZW1vdmVNYXliZUltcG9ydEF0dHJpYnV0ZXMucmVtb3ZlTWF5YmVJbXBvcnRBdHRyaWJ1dGVzLmNhbGwodm9pZCAwLCB0aGlzLnRva2Vucyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgIHByb2Nlc3NJbXBvcnRFcXVhbHMoKSB7XG4gICAgY29uc3QgaW1wb3J0TmFtZSA9IHRoaXMudG9rZW5zLmlkZW50aWZpZXJOYW1lQXRJbmRleCh0aGlzLnRva2Vucy5jdXJyZW50SW5kZXgoKSArIDEpO1xuICAgIGlmICh0aGlzLnNob3VsZEF1dG9tYXRpY2FsbHlFbGlkZUltcG9ydGVkTmFtZShpbXBvcnROYW1lKSkge1xuICAgICAgLy8gSWYgdGhpcyBuYW1lIGlzIG9ubHkgdXNlZCBhcyBhIHR5cGUsIGVsaWRlIHRoZSB3aG9sZSBpbXBvcnQuXG4gICAgICBfZWxpZGVJbXBvcnRFcXVhbHMyLmRlZmF1bHQuY2FsbCh2b2lkIDAsIHRoaXMudG9rZW5zKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaW5qZWN0Q3JlYXRlUmVxdWlyZUZvckltcG9ydFJlcXVpcmUpIHtcbiAgICAgIC8vIFdlJ3JlIHVzaW5nIHJlcXVpcmUgaW4gYW4gZW52aXJvbm1lbnQgKE5vZGUgRVNNKSB0aGF0IGRvZXNuJ3QgcHJvdmlkZVxuICAgICAgLy8gaXQgYXMgYSBnbG9iYWwsIHNvIGdlbmVyYXRlIGEgaGVscGVyIHRvIGltcG9ydCBpdC5cbiAgICAgIC8vIGltcG9ydCAtPiBjb25zdFxuICAgICAgdGhpcy50b2tlbnMucmVwbGFjZVRva2VuKFwiY29uc3RcIik7XG4gICAgICAvLyBGb29cbiAgICAgIHRoaXMudG9rZW5zLmNvcHlUb2tlbigpO1xuICAgICAgLy8gPVxuICAgICAgdGhpcy50b2tlbnMuY29weVRva2VuKCk7XG4gICAgICAvLyByZXF1aXJlXG4gICAgICB0aGlzLnRva2Vucy5yZXBsYWNlVG9rZW4odGhpcy5oZWxwZXJNYW5hZ2VyLmdldEhlbHBlck5hbWUoXCJyZXF1aXJlXCIpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gT3RoZXJ3aXNlLCBqdXN0IHN3aXRjaCBgaW1wb3J0YCB0byBgY29uc3RgLlxuICAgICAgdGhpcy50b2tlbnMucmVwbGFjZVRva2VuKFwiY29uc3RcIik7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgIHByb2Nlc3NJbXBvcnQoKSB7XG4gICAgaWYgKHRoaXMudG9rZW5zLm1hdGNoZXMyKF90eXBlcy5Ub2tlblR5cGUuX2ltcG9ydCwgX3R5cGVzLlRva2VuVHlwZS5wYXJlbkwpKSB7XG4gICAgICAvLyBEeW5hbWljIGltcG9ydHMgZG9uJ3QgbmVlZCB0byBiZSB0cmFuc2Zvcm1lZC5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBzbmFwc2hvdCA9IHRoaXMudG9rZW5zLnNuYXBzaG90KCk7XG4gICAgY29uc3QgYWxsSW1wb3J0c1JlbW92ZWQgPSB0aGlzLnJlbW92ZUltcG9ydFR5cGVCaW5kaW5ncygpO1xuICAgIGlmIChhbGxJbXBvcnRzUmVtb3ZlZCkge1xuICAgICAgdGhpcy50b2tlbnMucmVzdG9yZVRvU25hcHNob3Qoc25hcHNob3QpO1xuICAgICAgd2hpbGUgKCF0aGlzLnRva2Vucy5tYXRjaGVzMShfdHlwZXMuVG9rZW5UeXBlLnN0cmluZykpIHtcbiAgICAgICAgdGhpcy50b2tlbnMucmVtb3ZlVG9rZW4oKTtcbiAgICAgIH1cbiAgICAgIHRoaXMudG9rZW5zLnJlbW92ZVRva2VuKCk7XG4gICAgICBfcmVtb3ZlTWF5YmVJbXBvcnRBdHRyaWJ1dGVzLnJlbW92ZU1heWJlSW1wb3J0QXR0cmlidXRlcy5jYWxsKHZvaWQgMCwgdGhpcy50b2tlbnMpO1xuICAgICAgaWYgKHRoaXMudG9rZW5zLm1hdGNoZXMxKF90eXBlcy5Ub2tlblR5cGUuc2VtaSkpIHtcbiAgICAgICAgdGhpcy50b2tlbnMucmVtb3ZlVG9rZW4oKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIHR5cGUgYmluZGluZ3MgZnJvbSB0aGlzIGltcG9ydCwgbGVhdmluZyB0aGUgcmVzdCBvZiB0aGUgaW1wb3J0IGludGFjdC5cbiAgICpcbiAgICogUmV0dXJuIHRydWUgaWYgdGhpcyBpbXBvcnQgd2FzIE9OTFkgdHlwZXMsIGFuZCB0aHVzIGlzIGVsaWdpYmxlIGZvciByZW1vdmFsLiBUaGlzIHdpbGwgYmFpbCBvdXRcbiAgICogb2YgdGhlIHJlcGxhY2VtZW50IG9wZXJhdGlvbiwgc28gd2UgY2FuIHJldHVybiBlYXJseSBoZXJlLlxuICAgKi9cbiAgIHJlbW92ZUltcG9ydFR5cGVCaW5kaW5ncygpIHtcbiAgICB0aGlzLnRva2Vucy5jb3B5RXhwZWN0ZWRUb2tlbihfdHlwZXMuVG9rZW5UeXBlLl9pbXBvcnQpO1xuICAgIGlmIChcbiAgICAgIHRoaXMudG9rZW5zLm1hdGNoZXNDb250ZXh0dWFsKF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fdHlwZSkgJiZcbiAgICAgICF0aGlzLnRva2Vucy5tYXRjaGVzMUF0SW5kZXgodGhpcy50b2tlbnMuY3VycmVudEluZGV4KCkgKyAxLCBfdHlwZXMuVG9rZW5UeXBlLmNvbW1hKSAmJlxuICAgICAgIXRoaXMudG9rZW5zLm1hdGNoZXNDb250ZXh0dWFsQXRJbmRleCh0aGlzLnRva2Vucy5jdXJyZW50SW5kZXgoKSArIDEsIF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fZnJvbSlcbiAgICApIHtcbiAgICAgIC8vIFRoaXMgaXMgYW4gXCJpbXBvcnQgdHlwZVwiIHN0YXRlbWVudCwgc28gZXhpdCBlYXJseS5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnRva2Vucy5tYXRjaGVzMShfdHlwZXMuVG9rZW5UeXBlLnN0cmluZykpIHtcbiAgICAgIC8vIFRoaXMgaXMgYSBiYXJlIGltcG9ydCwgc28gd2Ugc2hvdWxkIHByb2NlZWQgd2l0aCB0aGUgaW1wb3J0LlxuICAgICAgdGhpcy50b2tlbnMuY29weVRva2VuKCk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gU2tpcCB0aGUgXCJtb2R1bGVcIiB0b2tlbiBpbiBpbXBvcnQgcmVmbGVjdGlvbi5cbiAgICBpZiAoXG4gICAgICB0aGlzLnRva2Vucy5tYXRjaGVzQ29udGV4dHVhbChfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX21vZHVsZSkgJiZcbiAgICAgIHRoaXMudG9rZW5zLm1hdGNoZXNDb250ZXh0dWFsQXRJbmRleCh0aGlzLnRva2Vucy5jdXJyZW50SW5kZXgoKSArIDIsIF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fZnJvbSlcbiAgICApIHtcbiAgICAgIHRoaXMudG9rZW5zLmNvcHlUb2tlbigpO1xuICAgIH1cblxuICAgIGxldCBmb3VuZE5vblR5cGVJbXBvcnQgPSBmYWxzZTtcbiAgICBsZXQgZm91bmRBbnlOYW1lZEltcG9ydCA9IGZhbHNlO1xuICAgIGxldCBuZWVkc0NvbW1hID0gZmFsc2U7XG5cbiAgICAvLyBIYW5kbGUgZGVmYXVsdCBpbXBvcnQuXG4gICAgaWYgKHRoaXMudG9rZW5zLm1hdGNoZXMxKF90eXBlcy5Ub2tlblR5cGUubmFtZSkpIHtcbiAgICAgIGlmICh0aGlzLnNob3VsZEF1dG9tYXRpY2FsbHlFbGlkZUltcG9ydGVkTmFtZSh0aGlzLnRva2Vucy5pZGVudGlmaWVyTmFtZSgpKSkge1xuICAgICAgICB0aGlzLnRva2Vucy5yZW1vdmVUb2tlbigpO1xuICAgICAgICBpZiAodGhpcy50b2tlbnMubWF0Y2hlczEoX3R5cGVzLlRva2VuVHlwZS5jb21tYSkpIHtcbiAgICAgICAgICB0aGlzLnRva2Vucy5yZW1vdmVUb2tlbigpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb3VuZE5vblR5cGVJbXBvcnQgPSB0cnVlO1xuICAgICAgICB0aGlzLnRva2Vucy5jb3B5VG9rZW4oKTtcbiAgICAgICAgaWYgKHRoaXMudG9rZW5zLm1hdGNoZXMxKF90eXBlcy5Ub2tlblR5cGUuY29tbWEpKSB7XG4gICAgICAgICAgLy8gV2UncmUgaW4gYSBzdGF0ZW1lbnQgbGlrZTpcbiAgICAgICAgICAvLyBpbXBvcnQgQSwgKiBhcyBCIGZyb20gJy4vQSc7XG4gICAgICAgICAgLy8gb3JcbiAgICAgICAgICAvLyBpbXBvcnQgQSwge2Zvb30gZnJvbSAnLi9BJztcbiAgICAgICAgICAvLyB3aGVyZSB0aGUgYEFgIGlzIGJlaW5nIGtlcHQuIFRoZSBjb21tYSBzaG91bGQgYmUgcmVtb3ZlZCBpZiBhbiBvbmx5XG4gICAgICAgICAgLy8gaWYgdGhlIG5leHQgcGFydCBvZiB0aGUgaW1wb3J0IHN0YXRlbWVudCBpcyBlbGlkZWQsIGJ1dCB0aGF0J3MgaGFyZFxuICAgICAgICAgIC8vIHRvIGRldGVybWluZSBhdCB0aGlzIHBvaW50IGluIHRoZSBjb2RlLiBJbnN0ZWFkLCBhbHdheXMgcmVtb3ZlIGl0XG4gICAgICAgICAgLy8gYW5kIHNldCBhIGZsYWcgdG8gYWRkIGl0IGJhY2sgaWYgbmVjZXNzYXJ5LlxuICAgICAgICAgIG5lZWRzQ29tbWEgPSB0cnVlO1xuICAgICAgICAgIHRoaXMudG9rZW5zLnJlbW92ZVRva2VuKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy50b2tlbnMubWF0Y2hlczEoX3R5cGVzLlRva2VuVHlwZS5zdGFyKSkge1xuICAgICAgaWYgKHRoaXMuc2hvdWxkQXV0b21hdGljYWxseUVsaWRlSW1wb3J0ZWROYW1lKHRoaXMudG9rZW5zLmlkZW50aWZpZXJOYW1lQXRSZWxhdGl2ZUluZGV4KDIpKSkge1xuICAgICAgICB0aGlzLnRva2Vucy5yZW1vdmVUb2tlbigpO1xuICAgICAgICB0aGlzLnRva2Vucy5yZW1vdmVUb2tlbigpO1xuICAgICAgICB0aGlzLnRva2Vucy5yZW1vdmVUb2tlbigpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKG5lZWRzQ29tbWEpIHtcbiAgICAgICAgICB0aGlzLnRva2Vucy5hcHBlbmRDb2RlKFwiLFwiKTtcbiAgICAgICAgfVxuICAgICAgICBmb3VuZE5vblR5cGVJbXBvcnQgPSB0cnVlO1xuICAgICAgICB0aGlzLnRva2Vucy5jb3B5RXhwZWN0ZWRUb2tlbihfdHlwZXMuVG9rZW5UeXBlLnN0YXIpO1xuICAgICAgICB0aGlzLnRva2Vucy5jb3B5RXhwZWN0ZWRUb2tlbihfdHlwZXMuVG9rZW5UeXBlLm5hbWUpO1xuICAgICAgICB0aGlzLnRva2Vucy5jb3B5RXhwZWN0ZWRUb2tlbihfdHlwZXMuVG9rZW5UeXBlLm5hbWUpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy50b2tlbnMubWF0Y2hlczEoX3R5cGVzLlRva2VuVHlwZS5icmFjZUwpKSB7XG4gICAgICBpZiAobmVlZHNDb21tYSkge1xuICAgICAgICB0aGlzLnRva2Vucy5hcHBlbmRDb2RlKFwiLFwiKTtcbiAgICAgIH1cbiAgICAgIHRoaXMudG9rZW5zLmNvcHlUb2tlbigpO1xuICAgICAgd2hpbGUgKCF0aGlzLnRva2Vucy5tYXRjaGVzMShfdHlwZXMuVG9rZW5UeXBlLmJyYWNlUikpIHtcbiAgICAgICAgZm91bmRBbnlOYW1lZEltcG9ydCA9IHRydWU7XG4gICAgICAgIGNvbnN0IHNwZWNpZmllckluZm8gPSBfZ2V0SW1wb3J0RXhwb3J0U3BlY2lmaWVySW5mbzIuZGVmYXVsdC5jYWxsKHZvaWQgMCwgdGhpcy50b2tlbnMpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgc3BlY2lmaWVySW5mby5pc1R5cGUgfHxcbiAgICAgICAgICB0aGlzLnNob3VsZEF1dG9tYXRpY2FsbHlFbGlkZUltcG9ydGVkTmFtZShzcGVjaWZpZXJJbmZvLnJpZ2h0TmFtZSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgd2hpbGUgKHRoaXMudG9rZW5zLmN1cnJlbnRJbmRleCgpIDwgc3BlY2lmaWVySW5mby5lbmRJbmRleCkge1xuICAgICAgICAgICAgdGhpcy50b2tlbnMucmVtb3ZlVG9rZW4oKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHRoaXMudG9rZW5zLm1hdGNoZXMxKF90eXBlcy5Ub2tlblR5cGUuY29tbWEpKSB7XG4gICAgICAgICAgICB0aGlzLnRva2Vucy5yZW1vdmVUb2tlbigpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBmb3VuZE5vblR5cGVJbXBvcnQgPSB0cnVlO1xuICAgICAgICAgIHdoaWxlICh0aGlzLnRva2Vucy5jdXJyZW50SW5kZXgoKSA8IHNwZWNpZmllckluZm8uZW5kSW5kZXgpIHtcbiAgICAgICAgICAgIHRoaXMudG9rZW5zLmNvcHlUb2tlbigpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodGhpcy50b2tlbnMubWF0Y2hlczEoX3R5cGVzLlRva2VuVHlwZS5jb21tYSkpIHtcbiAgICAgICAgICAgIHRoaXMudG9rZW5zLmNvcHlUb2tlbigpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy50b2tlbnMuY29weUV4cGVjdGVkVG9rZW4oX3R5cGVzLlRva2VuVHlwZS5icmFjZVIpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmtlZXBVbnVzZWRJbXBvcnRzKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmICh0aGlzLmlzVHlwZVNjcmlwdFRyYW5zZm9ybUVuYWJsZWQpIHtcbiAgICAgIHJldHVybiAhZm91bmROb25UeXBlSW1wb3J0O1xuICAgIH0gZWxzZSBpZiAodGhpcy5pc0Zsb3dUcmFuc2Zvcm1FbmFibGVkKSB7XG4gICAgICAvLyBJbiBGbG93LCB1bmxpa2UgVFMsIGBpbXBvcnQge30gZnJvbSAnZm9vJztgIHByZXNlcnZlcyB0aGUgaW1wb3J0LlxuICAgICAgcmV0dXJuIGZvdW5kQW55TmFtZWRJbXBvcnQgJiYgIWZvdW5kTm9uVHlwZUltcG9ydDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gICBzaG91bGRBdXRvbWF0aWNhbGx5RWxpZGVJbXBvcnRlZE5hbWUobmFtZSkge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmlzVHlwZVNjcmlwdFRyYW5zZm9ybUVuYWJsZWQgJiZcbiAgICAgICF0aGlzLmtlZXBVbnVzZWRJbXBvcnRzICYmXG4gICAgICAhdGhpcy5ub25UeXBlSWRlbnRpZmllcnMuaGFzKG5hbWUpXG4gICAgKTtcbiAgfVxuXG4gICBwcm9jZXNzRXhwb3J0RGVmYXVsdCgpIHtcbiAgICBpZiAoXG4gICAgICBfc2hvdWxkRWxpZGVEZWZhdWx0RXhwb3J0Mi5kZWZhdWx0LmNhbGwodm9pZCAwLCBcbiAgICAgICAgdGhpcy5pc1R5cGVTY3JpcHRUcmFuc2Zvcm1FbmFibGVkLFxuICAgICAgICB0aGlzLmtlZXBVbnVzZWRJbXBvcnRzLFxuICAgICAgICB0aGlzLnRva2VucyxcbiAgICAgICAgdGhpcy5kZWNsYXJhdGlvbkluZm8sXG4gICAgICApXG4gICAgKSB7XG4gICAgICAvLyBJZiB0aGUgZXhwb3J0ZWQgdmFsdWUgaXMganVzdCBhbiBpZGVudGlmaWVyIGFuZCBzaG91bGQgYmUgZWxpZGVkIGJ5IFR5cGVTY3JpcHRcbiAgICAgIC8vIHJ1bGVzLCB0aGVuIHJlbW92ZSBpdCBlbnRpcmVseS4gSXQgd2lsbCBhbHdheXMgaGF2ZSB0aGUgZm9ybSBgZXhwb3J0IGRlZmF1bHQgZWAsXG4gICAgICAvLyB3aGVyZSBgZWAgaXMgYW4gaWRlbnRpZmllci5cbiAgICAgIHRoaXMudG9rZW5zLnJlbW92ZUluaXRpYWxUb2tlbigpO1xuICAgICAgdGhpcy50b2tlbnMucmVtb3ZlVG9rZW4oKTtcbiAgICAgIHRoaXMudG9rZW5zLnJlbW92ZVRva2VuKCk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBjb25zdCBhbHJlYWR5SGFzTmFtZSA9XG4gICAgICB0aGlzLnRva2Vucy5tYXRjaGVzNChfdHlwZXMuVG9rZW5UeXBlLl9leHBvcnQsIF90eXBlcy5Ub2tlblR5cGUuX2RlZmF1bHQsIF90eXBlcy5Ub2tlblR5cGUuX2Z1bmN0aW9uLCBfdHlwZXMuVG9rZW5UeXBlLm5hbWUpIHx8XG4gICAgICAvLyBleHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvblxuICAgICAgKHRoaXMudG9rZW5zLm1hdGNoZXM1KF90eXBlcy5Ub2tlblR5cGUuX2V4cG9ydCwgX3R5cGVzLlRva2VuVHlwZS5fZGVmYXVsdCwgX3R5cGVzLlRva2VuVHlwZS5uYW1lLCBfdHlwZXMuVG9rZW5UeXBlLl9mdW5jdGlvbiwgX3R5cGVzLlRva2VuVHlwZS5uYW1lKSAmJlxuICAgICAgICB0aGlzLnRva2Vucy5tYXRjaGVzQ29udGV4dHVhbEF0SW5kZXgoXG4gICAgICAgICAgdGhpcy50b2tlbnMuY3VycmVudEluZGV4KCkgKyAyLFxuICAgICAgICAgIF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fYXN5bmMsXG4gICAgICAgICkpIHx8XG4gICAgICB0aGlzLnRva2Vucy5tYXRjaGVzNChfdHlwZXMuVG9rZW5UeXBlLl9leHBvcnQsIF90eXBlcy5Ub2tlblR5cGUuX2RlZmF1bHQsIF90eXBlcy5Ub2tlblR5cGUuX2NsYXNzLCBfdHlwZXMuVG9rZW5UeXBlLm5hbWUpIHx8XG4gICAgICB0aGlzLnRva2Vucy5tYXRjaGVzNShfdHlwZXMuVG9rZW5UeXBlLl9leHBvcnQsIF90eXBlcy5Ub2tlblR5cGUuX2RlZmF1bHQsIF90eXBlcy5Ub2tlblR5cGUuX2Fic3RyYWN0LCBfdHlwZXMuVG9rZW5UeXBlLl9jbGFzcywgX3R5cGVzLlRva2VuVHlwZS5uYW1lKTtcblxuICAgIGlmICghYWxyZWFkeUhhc05hbWUgJiYgdGhpcy5yZWFjdEhvdExvYWRlclRyYW5zZm9ybWVyKSB7XG4gICAgICAvLyBUaGlzIGlzIGEgcGxhaW4gXCJleHBvcnQgZGVmYXVsdCBFXCIgc3RhdGVtZW50IGFuZCB3ZSBuZWVkIHRvIGFzc2lnbiBFIHRvIGEgdmFyaWFibGUuXG4gICAgICAvLyBDaGFuZ2UgXCJleHBvcnQgZGVmYXVsdCBFXCIgdG8gXCJsZXQgX2RlZmF1bHQ7IGV4cG9ydCBkZWZhdWx0IF9kZWZhdWx0ID0gRVwiXG4gICAgICBjb25zdCBkZWZhdWx0VmFyTmFtZSA9IHRoaXMubmFtZU1hbmFnZXIuY2xhaW1GcmVlTmFtZShcIl9kZWZhdWx0XCIpO1xuICAgICAgdGhpcy50b2tlbnMucmVwbGFjZVRva2VuKGBsZXQgJHtkZWZhdWx0VmFyTmFtZX07IGV4cG9ydGApO1xuICAgICAgdGhpcy50b2tlbnMuY29weVRva2VuKCk7XG4gICAgICB0aGlzLnRva2Vucy5hcHBlbmRDb2RlKGAgJHtkZWZhdWx0VmFyTmFtZX0gPWApO1xuICAgICAgdGhpcy5yZWFjdEhvdExvYWRlclRyYW5zZm9ybWVyLnNldEV4dHJhY3RlZERlZmF1bHRFeHBvcnROYW1lKGRlZmF1bHRWYXJOYW1lKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlIGEgc3RhdGVtZW50IHdpdGggb25lIG9mIHRoZXNlIGZvcm1zOlxuICAgKiBleHBvcnQge2EsIHR5cGUgYn07XG4gICAqIGV4cG9ydCB7YywgdHlwZSBkfSBmcm9tICdmb28nO1xuICAgKlxuICAgKiBJbiBib3RoIGNhc2VzLCBhbnkgZXhwbGljaXQgdHlwZSBleHBvcnRzIHNob3VsZCBiZSByZW1vdmVkLiBJbiB0aGUgZmlyc3RcbiAgICogY2FzZSwgd2UgYWxzbyBuZWVkIHRvIGhhbmRsZSBpbXBsaWNpdCBleHBvcnQgZWxpc2lvbiBmb3IgbmFtZXMgZGVjbGFyZWQgYXNcbiAgICogdHlwZXMuIEluIHRoZSBzZWNvbmQgY2FzZSwgd2UgbXVzdCBOT1QgZG8gaW1wbGljaXQgbmFtZWQgZXhwb3J0IGVsaXNpb24sXG4gICAqIGJ1dCB3ZSBtdXN0IHJlbW92ZSB0aGUgcnVudGltZSBpbXBvcnQgaWYgYWxsIGV4cG9ydHMgYXJlIHR5cGUgZXhwb3J0cy5cbiAgICovXG4gICBwcm9jZXNzTmFtZWRFeHBvcnRzKCkge1xuICAgIGlmICghdGhpcy5pc1R5cGVTY3JpcHRUcmFuc2Zvcm1FbmFibGVkKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHRoaXMudG9rZW5zLmNvcHlFeHBlY3RlZFRva2VuKF90eXBlcy5Ub2tlblR5cGUuX2V4cG9ydCk7XG4gICAgdGhpcy50b2tlbnMuY29weUV4cGVjdGVkVG9rZW4oX3R5cGVzLlRva2VuVHlwZS5icmFjZUwpO1xuXG4gICAgY29uc3QgaXNSZUV4cG9ydCA9IF9pc0V4cG9ydEZyb20yLmRlZmF1bHQuY2FsbCh2b2lkIDAsIHRoaXMudG9rZW5zKTtcbiAgICBsZXQgZm91bmROb25UeXBlRXhwb3J0ID0gZmFsc2U7XG4gICAgd2hpbGUgKCF0aGlzLnRva2Vucy5tYXRjaGVzMShfdHlwZXMuVG9rZW5UeXBlLmJyYWNlUikpIHtcbiAgICAgIGNvbnN0IHNwZWNpZmllckluZm8gPSBfZ2V0SW1wb3J0RXhwb3J0U3BlY2lmaWVySW5mbzIuZGVmYXVsdC5jYWxsKHZvaWQgMCwgdGhpcy50b2tlbnMpO1xuICAgICAgaWYgKFxuICAgICAgICBzcGVjaWZpZXJJbmZvLmlzVHlwZSB8fFxuICAgICAgICAoIWlzUmVFeHBvcnQgJiYgdGhpcy5zaG91bGRFbGlkZUV4cG9ydGVkTmFtZShzcGVjaWZpZXJJbmZvLmxlZnROYW1lKSlcbiAgICAgICkge1xuICAgICAgICAvLyBUeXBlIGV4cG9ydCwgc28gcmVtb3ZlIGFsbCB0b2tlbnMsIGluY2x1ZGluZyBhbnkgY29tbWEuXG4gICAgICAgIHdoaWxlICh0aGlzLnRva2Vucy5jdXJyZW50SW5kZXgoKSA8IHNwZWNpZmllckluZm8uZW5kSW5kZXgpIHtcbiAgICAgICAgICB0aGlzLnRva2Vucy5yZW1vdmVUb2tlbigpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnRva2Vucy5tYXRjaGVzMShfdHlwZXMuVG9rZW5UeXBlLmNvbW1hKSkge1xuICAgICAgICAgIHRoaXMudG9rZW5zLnJlbW92ZVRva2VuKCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIE5vbi10eXBlIGV4cG9ydCwgc28gY29weSBhbGwgdG9rZW5zLCBpbmNsdWRpbmcgYW55IGNvbW1hLlxuICAgICAgICBmb3VuZE5vblR5cGVFeHBvcnQgPSB0cnVlO1xuICAgICAgICB3aGlsZSAodGhpcy50b2tlbnMuY3VycmVudEluZGV4KCkgPCBzcGVjaWZpZXJJbmZvLmVuZEluZGV4KSB7XG4gICAgICAgICAgdGhpcy50b2tlbnMuY29weVRva2VuKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMudG9rZW5zLm1hdGNoZXMxKF90eXBlcy5Ub2tlblR5cGUuY29tbWEpKSB7XG4gICAgICAgICAgdGhpcy50b2tlbnMuY29weVRva2VuKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy50b2tlbnMuY29weUV4cGVjdGVkVG9rZW4oX3R5cGVzLlRva2VuVHlwZS5icmFjZVIpO1xuXG4gICAgaWYgKCF0aGlzLmtlZXBVbnVzZWRJbXBvcnRzICYmIGlzUmVFeHBvcnQgJiYgIWZvdW5kTm9uVHlwZUV4cG9ydCkge1xuICAgICAgLy8gVGhpcyBpcyBhIHR5cGUtb25seSByZS1leHBvcnQsIHNvIHNraXAgZXZhbHVhdGluZyB0aGUgb3RoZXIgbW9kdWxlLiBUZWNobmljYWxseSB0aGlzXG4gICAgICAvLyBsZWF2ZXMgdGhlIHN0YXRlbWVudCBhcyBgZXhwb3J0IHt9YCwgYnV0IHRoYXQncyBvayBzaW5jZSB0aGF0J3MgYSBuby1vcC5cbiAgICAgIHRoaXMudG9rZW5zLnJlbW92ZVRva2VuKCk7XG4gICAgICB0aGlzLnRva2Vucy5yZW1vdmVUb2tlbigpO1xuICAgICAgX3JlbW92ZU1heWJlSW1wb3J0QXR0cmlidXRlcy5yZW1vdmVNYXliZUltcG9ydEF0dHJpYnV0ZXMuY2FsbCh2b2lkIDAsIHRoaXMudG9rZW5zKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFU00gZWxpZGVzIGFsbCBpbXBvcnRzIHdpdGggdGhlIHJ1bGUgdGhhdCB3ZSBvbmx5IGVsaWRlIGlmIHdlIHNlZSB0aGF0IGl0J3NcbiAgICogYSB0eXBlIGFuZCBuZXZlciBzZWUgaXQgYXMgYSB2YWx1ZS4gVGhpcyBpcyBpbiBjb250cmFzdCB0byBDSlMsIHdoaWNoXG4gICAqIGVsaWRlcyBpbXBvcnRzIHRoYXQgYXJlIGNvbXBsZXRlbHkgdW5rbm93bi5cbiAgICovXG4gICBzaG91bGRFbGlkZUV4cG9ydGVkTmFtZShuYW1lKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuaXNUeXBlU2NyaXB0VHJhbnNmb3JtRW5hYmxlZCAmJlxuICAgICAgIXRoaXMua2VlcFVudXNlZEltcG9ydHMgJiZcbiAgICAgIHRoaXMuZGVjbGFyYXRpb25JbmZvLnR5cGVEZWNsYXJhdGlvbnMuaGFzKG5hbWUpICYmXG4gICAgICAhdGhpcy5kZWNsYXJhdGlvbkluZm8udmFsdWVEZWNsYXJhdGlvbnMuaGFzKG5hbWUpXG4gICAgKTtcbiAgfVxufSBleHBvcnRzLmRlZmF1bHQgPSBFU01JbXBvcnRUcmFuc2Zvcm1lcjtcbiIsICJcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHt2YWx1ZTogdHJ1ZX0pOyBmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfXZhciBfa2V5d29yZHMgPSByZXF1aXJlKCcuLi9wYXJzZXIvdG9rZW5pemVyL2tleXdvcmRzJyk7XG52YXIgX3R5cGVzID0gcmVxdWlyZSgnLi4vcGFyc2VyL3Rva2VuaXplci90eXBlcycpO1xuXG5cbnZhciBfVHJhbnNmb3JtZXIgPSByZXF1aXJlKCcuL1RyYW5zZm9ybWVyJyk7IHZhciBfVHJhbnNmb3JtZXIyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfVHJhbnNmb3JtZXIpO1xuXG4gY2xhc3MgRmxvd1RyYW5zZm9ybWVyIGV4dGVuZHMgX1RyYW5zZm9ybWVyMi5kZWZhdWx0IHtcbiAgY29uc3RydWN0b3IoXG4gICAgIHJvb3RUcmFuc2Zvcm1lcixcbiAgICAgdG9rZW5zLFxuICAgICBpc0ltcG9ydHNUcmFuc2Zvcm1FbmFibGVkLFxuICApIHtcbiAgICBzdXBlcigpO3RoaXMucm9vdFRyYW5zZm9ybWVyID0gcm9vdFRyYW5zZm9ybWVyO3RoaXMudG9rZW5zID0gdG9rZW5zO3RoaXMuaXNJbXBvcnRzVHJhbnNmb3JtRW5hYmxlZCA9IGlzSW1wb3J0c1RyYW5zZm9ybUVuYWJsZWQ7O1xuICB9XG5cbiAgcHJvY2VzcygpIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLnJvb3RUcmFuc2Zvcm1lci5wcm9jZXNzUG9zc2libGVBcnJvd1BhcmFtRW5kKCkgfHxcbiAgICAgIHRoaXMucm9vdFRyYW5zZm9ybWVyLnByb2Nlc3NQb3NzaWJsZUFzeW5jQXJyb3dXaXRoVHlwZVBhcmFtcygpIHx8XG4gICAgICB0aGlzLnJvb3RUcmFuc2Zvcm1lci5wcm9jZXNzUG9zc2libGVUeXBlUmFuZ2UoKVxuICAgICkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmICh0aGlzLnRva2Vucy5tYXRjaGVzMShfdHlwZXMuVG9rZW5UeXBlLl9lbnVtKSkge1xuICAgICAgdGhpcy5wcm9jZXNzRW51bSgpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmICh0aGlzLnRva2Vucy5tYXRjaGVzMihfdHlwZXMuVG9rZW5UeXBlLl9leHBvcnQsIF90eXBlcy5Ub2tlblR5cGUuX2VudW0pKSB7XG4gICAgICB0aGlzLnByb2Nlc3NOYW1lZEV4cG9ydEVudW0oKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAodGhpcy50b2tlbnMubWF0Y2hlczMoX3R5cGVzLlRva2VuVHlwZS5fZXhwb3J0LCBfdHlwZXMuVG9rZW5UeXBlLl9kZWZhdWx0LCBfdHlwZXMuVG9rZW5UeXBlLl9lbnVtKSkge1xuICAgICAgdGhpcy5wcm9jZXNzRGVmYXVsdEV4cG9ydEVudW0oKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlIGEgZGVjbGFyYXRpb24gbGlrZTpcbiAgICogZXhwb3J0IGVudW0gRSAuLi5cbiAgICpcbiAgICogV2l0aCB0aGlzIGltcG9ydHMgdHJhbnNmb3JtLCB0aGlzIGJlY29tZXM6XG4gICAqIGNvbnN0IEUgPSBbW2VudW1dXTsgZXhwb3J0cy5FID0gRTtcbiAgICpcbiAgICogb3RoZXJ3aXNlLCBpdCBiZWNvbWVzOlxuICAgKiBleHBvcnQgY29uc3QgRSA9IFtbZW51bV1dO1xuICAgKi9cbiAgcHJvY2Vzc05hbWVkRXhwb3J0RW51bSgpIHtcbiAgICBpZiAodGhpcy5pc0ltcG9ydHNUcmFuc2Zvcm1FbmFibGVkKSB7XG4gICAgICAvLyBleHBvcnRcbiAgICAgIHRoaXMudG9rZW5zLnJlbW92ZUluaXRpYWxUb2tlbigpO1xuICAgICAgY29uc3QgZW51bU5hbWUgPSB0aGlzLnRva2Vucy5pZGVudGlmaWVyTmFtZUF0UmVsYXRpdmVJbmRleCgxKTtcbiAgICAgIHRoaXMucHJvY2Vzc0VudW0oKTtcbiAgICAgIHRoaXMudG9rZW5zLmFwcGVuZENvZGUoYCBleHBvcnRzLiR7ZW51bU5hbWV9ID0gJHtlbnVtTmFtZX07YCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudG9rZW5zLmNvcHlUb2tlbigpO1xuICAgICAgdGhpcy5wcm9jZXNzRW51bSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgYSBkZWNsYXJhdGlvbiBsaWtlOlxuICAgKiBleHBvcnQgZGVmYXVsdCBlbnVtIEVcbiAgICpcbiAgICogV2l0aCB0aGUgaW1wb3J0cyB0cmFuc2Zvcm0sIHRoaXMgYmVjb21lczpcbiAgICogY29uc3QgRSA9IFtbZW51bV1dOyBleHBvcnRzLmRlZmF1bHQgPSBFO1xuICAgKlxuICAgKiBvdGhlcndpc2UsIGl0IGJlY29tZXM6XG4gICAqIGNvbnN0IEUgPSBbW2VudW1dXTsgZXhwb3J0IGRlZmF1bHQgRTtcbiAgICovXG4gIHByb2Nlc3NEZWZhdWx0RXhwb3J0RW51bSgpIHtcbiAgICAvLyBleHBvcnRcbiAgICB0aGlzLnRva2Vucy5yZW1vdmVJbml0aWFsVG9rZW4oKTtcbiAgICAvLyBkZWZhdWx0XG4gICAgdGhpcy50b2tlbnMucmVtb3ZlVG9rZW4oKTtcbiAgICBjb25zdCBlbnVtTmFtZSA9IHRoaXMudG9rZW5zLmlkZW50aWZpZXJOYW1lQXRSZWxhdGl2ZUluZGV4KDEpO1xuICAgIHRoaXMucHJvY2Vzc0VudW0oKTtcbiAgICBpZiAodGhpcy5pc0ltcG9ydHNUcmFuc2Zvcm1FbmFibGVkKSB7XG4gICAgICB0aGlzLnRva2Vucy5hcHBlbmRDb2RlKGAgZXhwb3J0cy5kZWZhdWx0ID0gJHtlbnVtTmFtZX07YCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudG9rZW5zLmFwcGVuZENvZGUoYCBleHBvcnQgZGVmYXVsdCAke2VudW1OYW1lfTtgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVHJhbnNwaWxlIGZsb3cgZW51bXMgdG8gaW52b2tlIHRoZSBcImZsb3ctZW51bXMtcnVudGltZVwiIGxpYnJhcnkuXG4gICAqXG4gICAqIEN1cnJlbnRseSwgdGhlIHRyYW5zcGlsZWQgY29kZSBhbHdheXMgdXNlcyBgcmVxdWlyZShcImZsb3ctZW51bXMtcnVudGltZVwiKWAsXG4gICAqIGJ1dCBpZiBmdXR1cmUgZmxleGliaWxpdHkgaXMgbmVlZGVkLCB3ZSBjb3VsZCBleHBvc2UgYSBjb25maWcgb3B0aW9uIGZvclxuICAgKiB0aGlzIHN0cmluZyAoc2ltaWxhciB0byBjb25maWd1cmFibGUgSlNYKS4gRXZlbiB3aGVuIHRhcmdldGluZyBFU00sIHRoZVxuICAgKiBkZWZhdWx0IGJlaGF2aW9yIG9mIGJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZmxvdy1lbnVtcyBpcyB0byB1c2UgcmVxdWlyZVxuICAgKiByYXRoZXIgdGhhbiBpbmplY3RpbmcgYW4gaW1wb3J0LlxuICAgKlxuICAgKiBGbG93IGVudW1zIGFyZSBxdWl0ZSBhIGJpdCBzaW1wbGVyIHRoYW4gVFMgZW51bXMgYW5kIGhhdmUgc29tZSBjb252ZW5pZW50XG4gICAqIGNvbnN0cmFpbnRzOlxuICAgKiAtIEVsZW1lbnQgaW5pdGlhbGl6ZXJzIG11c3QgYmUgZWl0aGVyIGFsd2F5cyBwcmVzZW50IG9yIGFsd2F5cyBhYnNlbnQuIFRoYXRcbiAgICogICBtZWFucyB0aGF0IHdlIGNhbiB1c2UgZml4ZWQgbG9va2FoZWFkIG9uIHRoZSBmaXJzdCBlbGVtZW50IChpZiBhbnkpIGFuZFxuICAgKiAgIGFzc3VtZSB0aGF0IGFsbCBlbGVtZW50cyBhcmUgbGlrZSB0aGF0LlxuICAgKiAtIFRoZSByaWdodC1oYW5kIHNpZGUgb2YgYW4gZWxlbWVudCBpbml0aWFsaXplciBtdXN0IGJlIGEgbGl0ZXJhbCB2YWx1ZSxcbiAgICogICBub3QgYSBjb21wbGV4IGV4cHJlc3Npb24gYW5kIG5vdCByZWZlcmVuY2luZyBvdGhlciBlbGVtZW50cy4gVGhhdCBtZWFuc1xuICAgKiAgIHdlIGNhbiBzaW1wbHkgY29weSBhIHNpbmdsZSB0b2tlbi5cbiAgICpcbiAgICogRW51bXMgY2FuIGJlIGJyb2tlbiB1cCBpbnRvIHRocmVlIGJhc2ljIGNhc2VzOlxuICAgKlxuICAgKiBNaXJyb3JlZCBlbnVtczpcbiAgICogZW51bSBFIHtBLCBCfVxuICAgKiAgIC0+XG4gICAqIGNvbnN0IEUgPSByZXF1aXJlKFwiZmxvdy1lbnVtcy1ydW50aW1lXCIpLk1pcnJvcmVkKFtcIkFcIiwgXCJCXCJdKTtcbiAgICpcbiAgICogSW5pdGlhbGl6ZXIgZW51bXM6XG4gICAqIGVudW0gRSB7QSA9IDEsIEIgPSAyfVxuICAgKiAgIC0+XG4gICAqIGNvbnN0IEUgPSByZXF1aXJlKFwiZmxvdy1lbnVtcy1ydW50aW1lXCIpKHtBOiAxLCBCOiAyfSk7XG4gICAqXG4gICAqIFN5bWJvbCBlbnVtczpcbiAgICogZW51bSBFIG9mIHN5bWJvbCB7QSwgQn1cbiAgICogICAtPlxuICAgKiBjb25zdCBFID0gcmVxdWlyZShcImZsb3ctZW51bXMtcnVudGltZVwiKSh7QTogU3ltYm9sKFwiQVwiKSwgQjogU3ltYm9sKFwiQlwiKX0pO1xuICAgKlxuICAgKiBXZSBjYW4gc3RhdGljYWxseSBkZXRlY3Qgd2hpY2ggb2YgdGhlIHRocmVlIGNhc2VzIHRoaXMgaXMgYnkgbG9va2luZyBhdCB0aGVcbiAgICogXCJvZlwiIGRlY2xhcmF0aW9uIChpZiBhbnkpIGFuZCBzZWVpbmcgaWYgdGhlIGZpcnN0IGVsZW1lbnQgaGFzIGFuIGluaXRpYWxpemVyLlxuICAgKiBTaW5jZSB0aGUgb3RoZXIgdHJhbnNmb3JtIGRldGFpbHMgYXJlIHNvIHNpbWlsYXIgYmV0d2VlbiB0aGUgdGhyZWUgY2FzZXMsIHdlXG4gICAqIHVzZSBhIHNpbmdsZSBpbXBsZW1lbnRhdGlvbiBhbmQgdmFyeSB0aGUgdHJhbnNmb3JtIHdpdGhpbiBwcm9jZXNzRW51bUVsZW1lbnRcbiAgICogYmFzZWQgb24gY2FzZS5cbiAgICovXG4gIHByb2Nlc3NFbnVtKCkge1xuICAgIC8vIGVudW0gRSAtPiBjb25zdCBFXG4gICAgdGhpcy50b2tlbnMucmVwbGFjZVRva2VuKFwiY29uc3RcIik7XG4gICAgdGhpcy50b2tlbnMuY29weUV4cGVjdGVkVG9rZW4oX3R5cGVzLlRva2VuVHlwZS5uYW1lKTtcblxuICAgIGxldCBpc1N5bWJvbEVudW0gPSBmYWxzZTtcbiAgICBpZiAodGhpcy50b2tlbnMubWF0Y2hlc0NvbnRleHR1YWwoX2tleXdvcmRzLkNvbnRleHR1YWxLZXl3b3JkLl9vZikpIHtcbiAgICAgIHRoaXMudG9rZW5zLnJlbW92ZVRva2VuKCk7XG4gICAgICBpc1N5bWJvbEVudW0gPSB0aGlzLnRva2Vucy5tYXRjaGVzQ29udGV4dHVhbChfa2V5d29yZHMuQ29udGV4dHVhbEtleXdvcmQuX3N5bWJvbCk7XG4gICAgICB0aGlzLnRva2Vucy5yZW1vdmVUb2tlbigpO1xuICAgIH1cbiAgICBjb25zdCBoYXNJbml0aWFsaXplcnMgPSB0aGlzLnRva2Vucy5tYXRjaGVzMyhfdHlwZXMuVG9rZW5UeXBlLmJyYWNlTCwgX3R5cGVzLlRva2VuVHlwZS5uYW1lLCBfdHlwZXMuVG9rZW5UeXBlLmVxKTtcbiAgICB0aGlzLnRva2Vucy5hcHBlbmRDb2RlKCcgPSByZXF1aXJlKFwiZmxvdy1lbnVtcy1ydW50aW1lXCIpJyk7XG5cbiAgICBjb25zdCBpc01pcnJvcmVkID0gIWlzU3ltYm9sRW51bSAmJiAhaGFzSW5pdGlhbGl6ZXJzO1xuICAgIHRoaXMudG9rZW5zLnJlcGxhY2VUb2tlblRyaW1taW5nTGVmdFdoaXRlc3BhY2UoaXNNaXJyb3JlZCA/IFwiLk1pcnJvcmVkKFtcIiA6IFwiKHtcIik7XG5cbiAgICB3aGlsZSAoIXRoaXMudG9rZW5zLm1hdGNoZXMxKF90eXBlcy5Ub2tlblR5cGUuYnJhY2VSKSkge1xuICAgICAgLy8gLi4uIGlzIGFsbG93ZWQgYXQgdGhlIGVuZCBhbmQgaGFzIG5vIHJ1bnRpbWUgYmVoYXZpb3IuXG4gICAgICBpZiAodGhpcy50b2tlbnMubWF0Y2hlczEoX3R5cGVzLlRva2VuVHlwZS5lbGxpcHNpcykpIHtcbiAgICAgICAgdGhpcy50b2tlbnMucmVtb3ZlVG9rZW4oKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICB0aGlzLnByb2Nlc3NFbnVtRWxlbWVudChpc1N5bWJvbEVudW0sIGhhc0luaXRpYWxpemVycyk7XG4gICAgICBpZiAodGhpcy50b2tlbnMubWF0Y2hlczEoX3R5cGVzLlRva2VuVHlwZS5jb21tYSkpIHtcbiAgICAgICAgdGhpcy50b2tlbnMuY29weVRva2VuKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy50b2tlbnMucmVwbGFjZVRva2VuKGlzTWlycm9yZWQgPyBcIl0pO1wiIDogXCJ9KTtcIik7XG4gIH1cblxuICAvKipcbiAgICogUHJvY2VzcyBhbiBpbmRpdmlkdWFsIGVudW0gZWxlbWVudCwgcHJvZHVjaW5nIGVpdGhlciBhbiBhcnJheSBlbGVtZW50IG9yIGFuXG4gICAqIG9iamVjdCBlbGVtZW50IGJhc2VkIG9uIHdoYXQgdHlwZSBvZiBlbnVtIHRoaXMgaXMuXG4gICAqL1xuICBwcm9jZXNzRW51bUVsZW1lbnQoaXNTeW1ib2xFbnVtLCBoYXNJbml0aWFsaXplcnMpIHtcbiAgICBpZiAoaXNTeW1ib2xFbnVtKSB7XG4gICAgICAvLyBTeW1ib2wgZW51bXMgbmV2ZXIgaGF2ZSBpbml0aWFsaXplcnMgYW5kIGFyZSBleHBhbmRlZCB0byBvYmplY3QgZWxlbWVudHMuXG4gICAgICAvLyBBLCAtPiBBOiBTeW1ib2woXCJBXCIpLFxuICAgICAgY29uc3QgZWxlbWVudE5hbWUgPSB0aGlzLnRva2Vucy5pZGVudGlmaWVyTmFtZSgpO1xuICAgICAgdGhpcy50b2tlbnMuY29weVRva2VuKCk7XG4gICAgICB0aGlzLnRva2Vucy5hcHBlbmRDb2RlKGA6IFN5bWJvbChcIiR7ZWxlbWVudE5hbWV9XCIpYCk7XG4gICAgfSBlbHNlIGlmIChoYXNJbml0aWFsaXplcnMpIHtcbiAgICAgIC8vIEluaXRpYWxpemVycyBhcmUgZXhwYW5kZWQgdG8gb2JqZWN0IGVsZW1lbnRzLlxuICAgICAgLy8gQSA9IDEsIC0+IEE6IDEsXG4gICAgICB0aGlzLnRva2Vucy5jb3B5VG9rZW4oKTtcbiAgICAgIHRoaXMudG9rZW5zLnJlcGxhY2VUb2tlblRyaW1taW5nTGVmdFdoaXRlc3BhY2UoXCI6XCIpO1xuICAgICAgdGhpcy50b2tlbnMuY29weVRva2VuKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEVudW0gZWxlbWVudHMgd2l0aG91dCBpbml0aWFsaXplcnMgYmVjb21lIHN0cmluZyBsaXRlcmFsIGFycmF5IGVsZW1lbnRzLlxuICAgICAgLy8gQSwgLT4gXCJBXCIsXG4gICAgICB0aGlzLnRva2Vucy5yZXBsYWNlVG9rZW4oYFwiJHt0aGlzLnRva2Vucy5pZGVudGlmaWVyTmFtZSgpfVwiYCk7XG4gICAgfVxuICB9XG59IGV4cG9ydHMuZGVmYXVsdCA9IEZsb3dUcmFuc2Zvcm1lcjtcbiIsICJcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHt2YWx1ZTogdHJ1ZX0pOyBmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfSBmdW5jdGlvbiBfb3B0aW9uYWxDaGFpbihvcHMpIHsgbGV0IGxhc3RBY2Nlc3NMSFMgPSB1bmRlZmluZWQ7IGxldCB2YWx1ZSA9IG9wc1swXTsgbGV0IGkgPSAxOyB3aGlsZSAoaSA8IG9wcy5sZW5ndGgpIHsgY29uc3Qgb3AgPSBvcHNbaV07IGNvbnN0IGZuID0gb3BzW2kgKyAxXTsgaSArPSAyOyBpZiAoKG9wID09PSAnb3B0aW9uYWxBY2Nlc3MnIHx8IG9wID09PSAnb3B0aW9uYWxDYWxsJykgJiYgdmFsdWUgPT0gbnVsbCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9IGlmIChvcCA9PT0gJ2FjY2VzcycgfHwgb3AgPT09ICdvcHRpb25hbEFjY2VzcycpIHsgbGFzdEFjY2Vzc0xIUyA9IHZhbHVlOyB2YWx1ZSA9IGZuKHZhbHVlKTsgfSBlbHNlIGlmIChvcCA9PT0gJ2NhbGwnIHx8IG9wID09PSAnb3B0aW9uYWxDYWxsJykgeyB2YWx1ZSA9IGZuKCguLi5hcmdzKSA9PiB2YWx1ZS5jYWxsKGxhc3RBY2Nlc3NMSFMsIC4uLmFyZ3MpKTsgbGFzdEFjY2Vzc0xIUyA9IHVuZGVmaW5lZDsgfSB9IHJldHVybiB2YWx1ZTsgfVxuXG52YXIgX3R5cGVzID0gcmVxdWlyZSgnLi4vcGFyc2VyL3Rva2VuaXplci90eXBlcycpO1xuXG5cbnZhciBfVHJhbnNmb3JtZXIgPSByZXF1aXJlKCcuL1RyYW5zZm9ybWVyJyk7IHZhciBfVHJhbnNmb3JtZXIyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfVHJhbnNmb3JtZXIpO1xuXG5jb25zdCBKRVNUX0dMT0JBTF9OQU1FID0gXCJqZXN0XCI7XG5jb25zdCBIT0lTVEVEX01FVEhPRFMgPSBbXCJtb2NrXCIsIFwidW5tb2NrXCIsIFwiZW5hYmxlQXV0b21vY2tcIiwgXCJkaXNhYmxlQXV0b21vY2tcIl07XG5cbi8qKlxuICogSW1wbGVtZW50YXRpb24gb2YgYmFiZWwtcGx1Z2luLWplc3QtaG9pc3QsIHdoaWNoIGhvaXN0cyB1cCBzb21lIGplc3QgbWV0aG9kXG4gKiBjYWxscyBhYm92ZSB0aGUgaW1wb3J0cyB0byBhbGxvdyB0aGVtIHRvIG92ZXJyaWRlIG90aGVyIGltcG9ydHMuXG4gKlxuICogVG8gcHJlc2VydmUgbGluZSBudW1iZXJzLCByYXRoZXIgdGhhbiBkaXJlY3RseSBtb3ZpbmcgdGhlIGplc3QubW9jayBjb2RlLCB3ZVxuICogd3JhcCBlYWNoIGludm9jYXRpb24gaW4gYSBmdW5jdGlvbiBzdGF0ZW1lbnQgYW5kIHRoZW4gY2FsbCB0aGUgZnVuY3Rpb24gZnJvbVxuICogdGhlIHRvcCBvZiB0aGUgZmlsZS5cbiAqL1xuIGNsYXNzIEplc3RIb2lzdFRyYW5zZm9ybWVyIGV4dGVuZHMgX1RyYW5zZm9ybWVyMi5kZWZhdWx0IHtcbiAgICBfX2luaXQoKSB7dGhpcy5ob2lzdGVkRnVuY3Rpb25OYW1lcyA9IFtdfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgICByb290VHJhbnNmb3JtZXIsXG4gICAgIHRva2VucyxcbiAgICAgbmFtZU1hbmFnZXIsXG4gICAgIGltcG9ydFByb2Nlc3NvcixcbiAgKSB7XG4gICAgc3VwZXIoKTt0aGlzLnJvb3RUcmFuc2Zvcm1lciA9IHJvb3RUcmFuc2Zvcm1lcjt0aGlzLnRva2VucyA9IHRva2Vuczt0aGlzLm5hbWVNYW5hZ2VyID0gbmFtZU1hbmFnZXI7dGhpcy5pbXBvcnRQcm9jZXNzb3IgPSBpbXBvcnRQcm9jZXNzb3I7SmVzdEhvaXN0VHJhbnNmb3JtZXIucHJvdG90eXBlLl9faW5pdC5jYWxsKHRoaXMpOztcbiAgfVxuXG4gIHByb2Nlc3MoKSB7XG4gICAgaWYgKFxuICAgICAgdGhpcy50b2tlbnMuY3VycmVudFRva2VuKCkuc2NvcGVEZXB0aCA9PT0gMCAmJlxuICAgICAgdGhpcy50b2tlbnMubWF0Y2hlczQoX3R5cGVzLlRva2VuVHlwZS5uYW1lLCBfdHlwZXMuVG9rZW5UeXBlLmRvdCwgX3R5cGVzLlRva2VuVHlwZS5uYW1lLCBfdHlwZXMuVG9rZW5UeXBlLnBhcmVuTCkgJiZcbiAgICAgIHRoaXMudG9rZW5zLmlkZW50aWZpZXJOYW1lKCkgPT09IEpFU1RfR0xPQkFMX05BTUVcbiAgICApIHtcbiAgICAgIC8vIFRPRE86IFRoaXMgb25seSB3b3JrcyBpZiBpbXBvcnRzIHRyYW5zZm9ybSBpcyBhY3RpdmUsIHdoaWNoIGl0IHdpbGwgYmUgZm9yIGplc3QuXG4gICAgICAvLyAgICAgICBCdXQgaWYgamVzdCBhZGRzIG1vZHVsZSBzdXBwb3J0IGFuZCB3ZSBubyBsb25nZXIgbmVlZCB0aGUgaW1wb3J0IHRyYW5zZm9ybSwgdGhpcyBuZWVkcyBmaXhpbmcuXG4gICAgICBpZiAoX29wdGlvbmFsQ2hhaW4oW3RoaXMsICdhY2Nlc3MnLCBfID0+IF8uaW1wb3J0UHJvY2Vzc29yLCAnb3B0aW9uYWxBY2Nlc3MnLCBfMiA9PiBfMi5nZXRHbG9iYWxOYW1lcywgJ2NhbGwnLCBfMyA9PiBfMygpLCAnb3B0aW9uYWxBY2Nlc3MnLCBfNCA9PiBfNC5oYXMsICdjYWxsJywgXzUgPT4gXzUoSkVTVF9HTE9CQUxfTkFNRSldKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5leHRyYWN0SG9pc3RlZENhbGxzKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZ2V0SG9pc3RlZENvZGUoKSB7XG4gICAgaWYgKHRoaXMuaG9pc3RlZEZ1bmN0aW9uTmFtZXMubGVuZ3RoID4gMCkge1xuICAgICAgLy8gVGhpcyB3aWxsIGJlIHBsYWNlZCBiZWZvcmUgbW9kdWxlIGludGVyb3AgY29kZSwgYnV0IHRoYXQncyBmaW5lIHNpbmNlXG4gICAgICAvLyBpbXBvcnRzIGFyZW4ndCBhbGxvd2VkIGluIG1vZHVsZSBtb2NrIGZhY3Rvcmllcy5cbiAgICAgIHJldHVybiB0aGlzLmhvaXN0ZWRGdW5jdGlvbk5hbWVzLm1hcCgobmFtZSkgPT4gYCR7bmFtZX0oKTtgKS5qb2luKFwiXCIpO1xuICAgIH1cbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHRyYWN0cyBhbnkgbWV0aG9kcyBjYWxscyBvbiB0aGUgamVzdC1vYmplY3QgdGhhdCBzaG91bGQgYmUgaG9pc3RlZC5cbiAgICpcbiAgICogQWNjb3JkaW5nIHRvIHRoZSBqZXN0IGRvY3MsIGh0dHBzOi8vamVzdGpzLmlvL2RvY3MvZW4vamVzdC1vYmplY3QjamVzdG1vY2ttb2R1bGVuYW1lLWZhY3Rvcnktb3B0aW9ucyxcbiAgICogbW9jaywgdW5tb2NrLCBlbmFibGVBdXRvbW9jaywgZGlzYWJsZUF1dG9tb2NrLCBhcmUgdGhlIG1ldGhvZHMgdGhhdCBzaG91bGQgYmUgaG9pc3RlZC5cbiAgICpcbiAgICogV2UgZG8gbm90IGFwcGx5IHRoZSBzYW1lIGNoZWNrcyBvZiB0aGUgYXJndW1lbnRzIGFzIGJhYmVsLXBsdWdpbi1qZXN0LWhvaXN0IGRvZXMuXG4gICAqL1xuICAgZXh0cmFjdEhvaXN0ZWRDYWxscygpIHtcbiAgICAvLyBXZSdyZSBoYW5kbGluZyBhIGNoYWluIG9mIGNhbGxzIHdoZXJlIGBqZXN0YCBtYXkgb3IgbWF5IG5vdCBuZWVkIHRvIGJlIGluc2VydGVkIGZvciBlYWNoIGNhbGxcbiAgICAvLyBpbiB0aGUgY2hhaW4sIHNvIHJlbW92ZSB0aGUgaW5pdGlhbCBgamVzdGAgdG8gbWFrZSB0aGUgbG9vcCBpbXBsZW1lbnRhdGlvbiBjbGVhbmVyLlxuICAgIHRoaXMudG9rZW5zLnJlbW92ZVRva2VuKCk7XG4gICAgLy8gVHJhY2sgc29tZSBzdGF0ZSBzbyB0aGF0IG11bHRpcGxlIG5vbi1ob2lzdGVkIGNoYWluZWQgY2FsbHMgaW4gYSByb3cga2VlcCB0aGVpciBjaGFpbmluZ1xuICAgIC8vIHN5bnRheC5cbiAgICBsZXQgZm9sbG93c05vbkhvaXN0ZWRKZXN0Q2FsbCA9IGZhbHNlO1xuXG4gICAgLy8gSXRlcmF0ZSB0aHJvdWdoIGFsbCBjaGFpbmVkIGNhbGxzIG9uIHRoZSBqZXN0IG9iamVjdC5cbiAgICB3aGlsZSAodGhpcy50b2tlbnMubWF0Y2hlczMoX3R5cGVzLlRva2VuVHlwZS5kb3QsIF90eXBlcy5Ub2tlblR5cGUubmFtZSwgX3R5cGVzLlRva2VuVHlwZS5wYXJlbkwpKSB7XG4gICAgICBjb25zdCBtZXRob2ROYW1lID0gdGhpcy50b2tlbnMuaWRlbnRpZmllck5hbWVBdEluZGV4KHRoaXMudG9rZW5zLmN1cnJlbnRJbmRleCgpICsgMSk7XG4gICAgICBjb25zdCBzaG91bGRIb2lzdCA9IEhPSVNURURfTUVUSE9EUy5pbmNsdWRlcyhtZXRob2ROYW1lKTtcbiAgICAgIGlmIChzaG91bGRIb2lzdCkge1xuICAgICAgICAvLyBXZSd2ZSBtYXRjaGVkIGUuZy4gYC5tb2NrKC4uLilgIG9yIHNpbWlsYXIgY2FsbC5cbiAgICAgICAgLy8gUmVwbGFjZSB0aGUgaW5pdGlhbCBgLmAgd2l0aCBgZnVuY3Rpb24gX19qZXN0SG9pc3QoKXtqZXN0LmBcbiAgICAgICAgY29uc3QgaG9pc3RlZEZ1bmN0aW9uTmFtZSA9IHRoaXMubmFtZU1hbmFnZXIuY2xhaW1GcmVlTmFtZShcIl9famVzdEhvaXN0XCIpO1xuICAgICAgICB0aGlzLmhvaXN0ZWRGdW5jdGlvbk5hbWVzLnB1c2goaG9pc3RlZEZ1bmN0aW9uTmFtZSk7XG4gICAgICAgIHRoaXMudG9rZW5zLnJlcGxhY2VUb2tlbihgZnVuY3Rpb24gJHtob2lzdGVkRnVuY3Rpb25OYW1lfSgpeyR7SkVTVF9HTE9CQUxfTkFNRX0uYCk7XG4gICAgICAgIHRoaXMudG9rZW5zLmNvcHlUb2tlbigpO1xuICAgICAgICB0aGlzLnRva2Vucy5jb3B5VG9rZW4oKTtcbiAgICAgICAgdGhpcy5yb290VHJhbnNmb3JtZXIucHJvY2Vzc0JhbGFuY2VkQ29kZSgpO1xuICAgICAgICB0aGlzLnRva2Vucy5jb3B5RXhwZWN0ZWRUb2tlbihfdHlwZXMuVG9rZW5UeXBlLnBhcmVuUik7XG4gICAgICAgIHRoaXMudG9rZW5zLmFwcGVuZENvZGUoXCI7fVwiKTtcbiAgICAgICAgZm9sbG93c05vbkhvaXN0ZWRKZXN0Q2FsbCA9IGZhbHNlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gVGhpcyBpcyBhIG5vbi1ob2lzdGVkIG1ldGhvZCwgc28ganVzdCB0cmFuc2Zvcm0gdGhlIGNvZGUgYXMgdXN1YWwuXG4gICAgICAgIGlmIChmb2xsb3dzTm9uSG9pc3RlZEplc3RDYWxsKSB7XG4gICAgICAgICAgLy8gSWYgd2UgZGlkbid0IGhvaXN0IHRoZSBwcmV2aW91cyBjYWxsLCB3ZSBjYW4gbGVhdmUgdGhlIGNvZGUgYXMtaXMgdG8gY2hhaW4gb2ZmIG9mIHRoZVxuICAgICAgICAgIC8vIHByZXZpb3VzIG1ldGhvZCBjYWxsLiBJdCdzIGltcG9ydGFudCB0byBwcmVzZXJ2ZSB0aGUgY29kZSBoZXJlIGJlY2F1c2Ugd2UgZG9uJ3Qga25vd1xuICAgICAgICAgIC8vIGZvciBzdXJlIHRoYXQgdGhlIG1ldGhvZCBhY3R1YWxseSByZXR1cm5lZCB0aGUgamVzdCBvYmplY3QgZm9yIGNoYWluaW5nLlxuICAgICAgICAgIHRoaXMudG9rZW5zLmNvcHlUb2tlbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIElmIHdlIGhvaXN0ZWQgdGhlIHByZXZpb3VzIGNhbGwsIHdlIGtub3cgaXQgcmV0dXJucyB0aGUgamVzdCBvYmplY3QgYmFjaywgc28gd2UgaW5zZXJ0XG4gICAgICAgICAgLy8gdGhlIGlkZW50aWZpZXIgYGplc3RgIHRvIGNvbnRpbnVlIHRoZSBjaGFpbi5cbiAgICAgICAgICB0aGlzLnRva2Vucy5yZXBsYWNlVG9rZW4oYCR7SkVTVF9HTE9CQUxfTkFNRX0uYCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50b2tlbnMuY29weVRva2VuKCk7XG4gICAgICAgIHRoaXMudG9rZW5zLmNvcHlUb2tlbigpO1xuICAgICAgICB0aGlzLnJvb3RUcmFuc2Zvcm1lci5wcm9jZXNzQmFsYW5jZWRDb2RlKCk7XG4gICAgICAgIHRoaXMudG9rZW5zLmNvcHlFeHBlY3RlZFRva2VuKF90eXBlcy5Ub2tlblR5cGUucGFyZW5SKTtcbiAgICAgICAgZm9sbG93c05vbkhvaXN0ZWRKZXN0Q2FsbCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn0gZXhwb3J0cy5kZWZhdWx0ID0gSmVzdEhvaXN0VHJhbnNmb3JtZXI7XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7dmFsdWU6IHRydWV9KTsgZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH12YXIgX3R5cGVzID0gcmVxdWlyZSgnLi4vcGFyc2VyL3Rva2VuaXplci90eXBlcycpO1xuXG52YXIgX1RyYW5zZm9ybWVyID0gcmVxdWlyZSgnLi9UcmFuc2Zvcm1lcicpOyB2YXIgX1RyYW5zZm9ybWVyMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX1RyYW5zZm9ybWVyKTtcblxuIGNsYXNzIE51bWVyaWNTZXBhcmF0b3JUcmFuc2Zvcm1lciBleHRlbmRzIF9UcmFuc2Zvcm1lcjIuZGVmYXVsdCB7XG4gIGNvbnN0cnVjdG9yKCB0b2tlbnMpIHtcbiAgICBzdXBlcigpO3RoaXMudG9rZW5zID0gdG9rZW5zOztcbiAgfVxuXG4gIHByb2Nlc3MoKSB7XG4gICAgaWYgKHRoaXMudG9rZW5zLm1hdGNoZXMxKF90eXBlcy5Ub2tlblR5cGUubnVtKSkge1xuICAgICAgY29uc3QgY29kZSA9IHRoaXMudG9rZW5zLmN1cnJlbnRUb2tlbkNvZGUoKTtcbiAgICAgIGlmIChjb2RlLmluY2x1ZGVzKFwiX1wiKSkge1xuICAgICAgICB0aGlzLnRva2Vucy5yZXBsYWNlVG9rZW4oY29kZS5yZXBsYWNlKC9fL2csIFwiXCIpKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufSBleHBvcnRzLmRlZmF1bHQgPSBOdW1lcmljU2VwYXJhdG9yVHJhbnNmb3JtZXI7XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7dmFsdWU6IHRydWV9KTsgZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cbnZhciBfdHlwZXMgPSByZXF1aXJlKCcuLi9wYXJzZXIvdG9rZW5pemVyL3R5cGVzJyk7XG5cbnZhciBfVHJhbnNmb3JtZXIgPSByZXF1aXJlKCcuL1RyYW5zZm9ybWVyJyk7IHZhciBfVHJhbnNmb3JtZXIyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfVHJhbnNmb3JtZXIpO1xuXG4gY2xhc3MgT3B0aW9uYWxDYXRjaEJpbmRpbmdUcmFuc2Zvcm1lciBleHRlbmRzIF9UcmFuc2Zvcm1lcjIuZGVmYXVsdCB7XG4gIGNvbnN0cnVjdG9yKCB0b2tlbnMsICBuYW1lTWFuYWdlcikge1xuICAgIHN1cGVyKCk7dGhpcy50b2tlbnMgPSB0b2tlbnM7dGhpcy5uYW1lTWFuYWdlciA9IG5hbWVNYW5hZ2VyOztcbiAgfVxuXG4gIHByb2Nlc3MoKSB7XG4gICAgaWYgKHRoaXMudG9rZW5zLm1hdGNoZXMyKF90eXBlcy5Ub2tlblR5cGUuX2NhdGNoLCBfdHlwZXMuVG9rZW5UeXBlLmJyYWNlTCkpIHtcbiAgICAgIHRoaXMudG9rZW5zLmNvcHlUb2tlbigpO1xuICAgICAgdGhpcy50b2tlbnMuYXBwZW5kQ29kZShgICgke3RoaXMubmFtZU1hbmFnZXIuY2xhaW1GcmVlTmFtZShcImVcIil9KWApO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufSBleHBvcnRzLmRlZmF1bHQgPSBPcHRpb25hbENhdGNoQmluZGluZ1RyYW5zZm9ybWVyO1xuIiwgIlwidXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge3ZhbHVlOiB0cnVlfSk7IGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG52YXIgX3R5cGVzID0gcmVxdWlyZSgnLi4vcGFyc2VyL3Rva2VuaXplci90eXBlcycpO1xuXG52YXIgX1RyYW5zZm9ybWVyID0gcmVxdWlyZSgnLi9UcmFuc2Zvcm1lcicpOyB2YXIgX1RyYW5zZm9ybWVyMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX1RyYW5zZm9ybWVyKTtcblxuLyoqXG4gKiBUcmFuc2Zvcm1lciBzdXBwb3J0aW5nIHRoZSBvcHRpb25hbCBjaGFpbmluZyBhbmQgbnVsbGlzaCBjb2FsZXNjaW5nIG9wZXJhdG9ycy5cbiAqXG4gKiBUZWNoIHBsYW4gaGVyZTpcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9hbGFuZ3BpZXJjZS9zdWNyYXNlL3dpa2kvU3VjcmFzZS1PcHRpb25hbC1DaGFpbmluZy1hbmQtTnVsbGlzaC1Db2FsZXNjaW5nLVRlY2huaWNhbC1QbGFuXG4gKlxuICogVGhlIHByZWZpeCBhbmQgc3VmZml4IGNvZGUgc25pcHBldHMgYXJlIGhhbmRsZWQgYnkgVG9rZW5Qcm9jZXNzb3IsIGFuZCB0aGlzIHRyYW5zZm9ybWVyIGhhbmRsZXNcbiAqIHRoZSBvcGVyYXRvcnMgdGhlbXNlbHZlcy5cbiAqL1xuIGNsYXNzIE9wdGlvbmFsQ2hhaW5pbmdOdWxsaXNoVHJhbnNmb3JtZXIgZXh0ZW5kcyBfVHJhbnNmb3JtZXIyLmRlZmF1bHQge1xuICBjb25zdHJ1Y3RvciggdG9rZW5zLCAgbmFtZU1hbmFnZXIpIHtcbiAgICBzdXBlcigpO3RoaXMudG9rZW5zID0gdG9rZW5zO3RoaXMubmFtZU1hbmFnZXIgPSBuYW1lTWFuYWdlcjs7XG4gIH1cblxuICBwcm9jZXNzKCkge1xuICAgIGlmICh0aGlzLnRva2Vucy5tYXRjaGVzMShfdHlwZXMuVG9rZW5UeXBlLm51bGxpc2hDb2FsZXNjaW5nKSkge1xuICAgICAgY29uc3QgdG9rZW4gPSB0aGlzLnRva2Vucy5jdXJyZW50VG9rZW4oKTtcbiAgICAgIGlmICh0aGlzLnRva2Vucy50b2tlbnNbdG9rZW4ubnVsbGlzaFN0YXJ0SW5kZXhdLmlzQXN5bmNPcGVyYXRpb24pIHtcbiAgICAgICAgdGhpcy50b2tlbnMucmVwbGFjZVRva2VuVHJpbW1pbmdMZWZ0V2hpdGVzcGFjZShcIiwgYXN5bmMgKCkgPT4gKFwiKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudG9rZW5zLnJlcGxhY2VUb2tlblRyaW1taW5nTGVmdFdoaXRlc3BhY2UoXCIsICgpID0+IChcIik7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKHRoaXMudG9rZW5zLm1hdGNoZXMxKF90eXBlcy5Ub2tlblR5cGUuX2RlbGV0ZSkpIHtcbiAgICAgIGNvbnN0IG5leHRUb2tlbiA9IHRoaXMudG9rZW5zLnRva2VuQXRSZWxhdGl2ZUluZGV4KDEpO1xuICAgICAgaWYgKG5leHRUb2tlbi5pc09wdGlvbmFsQ2hhaW5TdGFydCkge1xuICAgICAgICB0aGlzLnRva2Vucy5yZW1vdmVJbml0aWFsVG9rZW4oKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IHRva2VuID0gdGhpcy50b2tlbnMuY3VycmVudFRva2VuKCk7XG4gICAgY29uc3QgY2hhaW5TdGFydCA9IHRva2VuLnN1YnNjcmlwdFN0YXJ0SW5kZXg7XG4gICAgaWYgKFxuICAgICAgY2hhaW5TdGFydCAhPSBudWxsICYmXG4gICAgICB0aGlzLnRva2Vucy50b2tlbnNbY2hhaW5TdGFydF0uaXNPcHRpb25hbENoYWluU3RhcnQgJiZcbiAgICAgIC8vIFN1cGVyIHN1YnNjcmlwdHMgY2FuJ3QgYmUgb3B0aW9uYWwgKHNpbmNlIHN1cGVyIGlzIG5ldmVyIG51bGwvdW5kZWZpbmVkKSwgYW5kIHRoZSBzeW50YXhcbiAgICAgIC8vIHJlbGllcyBvbiB0aGUgc3Vic2NyaXB0IGJlaW5nIGludGFjdCwgc28gbGVhdmUgdGhpcyB0b2tlbiBhbG9uZS5cbiAgICAgIHRoaXMudG9rZW5zLnRva2VuQXRSZWxhdGl2ZUluZGV4KC0xKS50eXBlICE9PSBfdHlwZXMuVG9rZW5UeXBlLl9zdXBlclxuICAgICkge1xuICAgICAgY29uc3QgcGFyYW0gPSB0aGlzLm5hbWVNYW5hZ2VyLmNsYWltRnJlZU5hbWUoXCJfXCIpO1xuICAgICAgbGV0IGFycm93U3RhcnRTbmlwcGV0O1xuICAgICAgaWYgKFxuICAgICAgICBjaGFpblN0YXJ0ID4gMCAmJlxuICAgICAgICB0aGlzLnRva2Vucy5tYXRjaGVzMUF0SW5kZXgoY2hhaW5TdGFydCAtIDEsIF90eXBlcy5Ub2tlblR5cGUuX2RlbGV0ZSkgJiZcbiAgICAgICAgdGhpcy5pc0xhc3RTdWJzY3JpcHRJbkNoYWluKClcbiAgICAgICkge1xuICAgICAgICAvLyBEZWxldGUgb3BlcmF0aW9ucyBhcmUgc3BlY2lhbDogd2UgYWxyZWFkeSByZW1vdmVkIHRoZSBkZWxldGUga2V5d29yZCwgYW5kIHRvIHN0aWxsXG4gICAgICAgIC8vIHBlcmZvcm0gYSBkZWxldGUsIHdlIG5lZWQgdG8gaW5zZXJ0IGEgZGVsZXRlIGluIHRoZSB2ZXJ5IGxhc3QgcGFydCBvZiB0aGUgY2hhaW4sIHdoaWNoXG4gICAgICAgIC8vIGluIGNvcnJlY3QgY29kZSB3aWxsIGFsd2F5cyBiZSBhIHByb3BlcnR5IGFjY2Vzcy5cbiAgICAgICAgYXJyb3dTdGFydFNuaXBwZXQgPSBgJHtwYXJhbX0gPT4gZGVsZXRlICR7cGFyYW19YDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFycm93U3RhcnRTbmlwcGV0ID0gYCR7cGFyYW19ID0+ICR7cGFyYW19YDtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnRva2Vucy50b2tlbnNbY2hhaW5TdGFydF0uaXNBc3luY09wZXJhdGlvbikge1xuICAgICAgICBhcnJvd1N0YXJ0U25pcHBldCA9IGBhc3luYyAke2Fycm93U3RhcnRTbmlwcGV0fWA7XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMudG9rZW5zLm1hdGNoZXMyKF90eXBlcy5Ub2tlblR5cGUucXVlc3Rpb25Eb3QsIF90eXBlcy5Ub2tlblR5cGUucGFyZW5MKSB8fFxuICAgICAgICB0aGlzLnRva2Vucy5tYXRjaGVzMihfdHlwZXMuVG9rZW5UeXBlLnF1ZXN0aW9uRG90LCBfdHlwZXMuVG9rZW5UeXBlLmxlc3NUaGFuKVxuICAgICAgKSB7XG4gICAgICAgIGlmICh0aGlzLmp1c3RTa2lwcGVkU3VwZXIoKSkge1xuICAgICAgICAgIHRoaXMudG9rZW5zLmFwcGVuZENvZGUoXCIuYmluZCh0aGlzKVwiKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRva2Vucy5yZXBsYWNlVG9rZW5UcmltbWluZ0xlZnRXaGl0ZXNwYWNlKGAsICdvcHRpb25hbENhbGwnLCAke2Fycm93U3RhcnRTbmlwcGV0fWApO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnRva2Vucy5tYXRjaGVzMihfdHlwZXMuVG9rZW5UeXBlLnF1ZXN0aW9uRG90LCBfdHlwZXMuVG9rZW5UeXBlLmJyYWNrZXRMKSkge1xuICAgICAgICB0aGlzLnRva2Vucy5yZXBsYWNlVG9rZW5UcmltbWluZ0xlZnRXaGl0ZXNwYWNlKGAsICdvcHRpb25hbEFjY2VzcycsICR7YXJyb3dTdGFydFNuaXBwZXR9YCk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMudG9rZW5zLm1hdGNoZXMxKF90eXBlcy5Ub2tlblR5cGUucXVlc3Rpb25Eb3QpKSB7XG4gICAgICAgIHRoaXMudG9rZW5zLnJlcGxhY2VUb2tlblRyaW1taW5nTGVmdFdoaXRlc3BhY2UoYCwgJ29wdGlvbmFsQWNjZXNzJywgJHthcnJvd1N0YXJ0U25pcHBldH0uYCk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMudG9rZW5zLm1hdGNoZXMxKF90eXBlcy5Ub2tlblR5cGUuZG90KSkge1xuICAgICAgICB0aGlzLnRva2Vucy5yZXBsYWNlVG9rZW5UcmltbWluZ0xlZnRXaGl0ZXNwYWNlKGAsICdhY2Nlc3MnLCAke2Fycm93U3RhcnRTbmlwcGV0fS5gKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy50b2tlbnMubWF0Y2hlczEoX3R5cGVzLlRva2VuVHlwZS5icmFja2V0TCkpIHtcbiAgICAgICAgdGhpcy50b2tlbnMucmVwbGFjZVRva2VuVHJpbW1pbmdMZWZ0V2hpdGVzcGFjZShgLCAnYWNjZXNzJywgJHthcnJvd1N0YXJ0U25pcHBldH1bYCk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMudG9rZW5zLm1hdGNoZXMxKF90eXBlcy5Ub2tlblR5cGUucGFyZW5MKSkge1xuICAgICAgICBpZiAodGhpcy5qdXN0U2tpcHBlZFN1cGVyKCkpIHtcbiAgICAgICAgICB0aGlzLnRva2Vucy5hcHBlbmRDb2RlKFwiLmJpbmQodGhpcylcIik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50b2tlbnMucmVwbGFjZVRva2VuVHJpbW1pbmdMZWZ0V2hpdGVzcGFjZShgLCAnY2FsbCcsICR7YXJyb3dTdGFydFNuaXBwZXR9KGApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5leHBlY3RlZCBzdWJzY3JpcHQgb3BlcmF0b3IgaW4gb3B0aW9uYWwgY2hhaW4uXCIpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmUgaWYgdGhlIGN1cnJlbnQgdG9rZW4gaXMgdGhlIGxhc3Qgb2YgaXRzIGNoYWluLCBzbyB0aGF0IHdlIGtub3cgd2hldGhlciBpdCdzIGVsaWdpYmxlXG4gICAqIHRvIGhhdmUgYSBkZWxldGUgb3AgaW5zZXJ0ZWQuXG4gICAqXG4gICAqIFdlIGNhbiBkbyB0aGlzIGJ5IHdhbGtpbmcgZm9yd2FyZCB1bnRpbCB3ZSBkZXRlcm1pbmUgb25lIHdheSBvciBhbm90aGVyLiBFYWNoXG4gICAqIGlzT3B0aW9uYWxDaGFpblN0YXJ0IHRva2VuIG11c3QgYmUgcGFpcmVkIHdpdGggZXhhY3RseSBvbmUgaXNPcHRpb25hbENoYWluRW5kIHRva2VuIGFmdGVyIGl0IGluXG4gICAqIGEgbmVzdGluZyB3YXksIHNvIHdlIGNhbiB0cmFjayBkZXB0aCBhbmQgd2FsayB0byB0aGUgZW5kIG9mIHRoZSBjaGFpbiAodGhlIHBvaW50IHdoZXJlIHRoZVxuICAgKiBkZXB0aCBnb2VzIG5lZ2F0aXZlKSBhbmQgc2VlIGlmIGFueSBvdGhlciBzdWJzY3JpcHQgdG9rZW4gaXMgYWZ0ZXIgdXMgaW4gdGhlIGNoYWluLlxuICAgKi9cbiAgaXNMYXN0U3Vic2NyaXB0SW5DaGFpbigpIHtcbiAgICBsZXQgZGVwdGggPSAwO1xuICAgIGZvciAobGV0IGkgPSB0aGlzLnRva2Vucy5jdXJyZW50SW5kZXgoKSArIDE7IDsgaSsrKSB7XG4gICAgICBpZiAoaSA+PSB0aGlzLnRva2Vucy50b2tlbnMubGVuZ3RoKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgY29kZSB3aGlsZSBmaW5kaW5nIHRoZSBlbmQgb2YgdGhlIGFjY2VzcyBjaGFpbi5cIik7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy50b2tlbnMudG9rZW5zW2ldLmlzT3B0aW9uYWxDaGFpblN0YXJ0KSB7XG4gICAgICAgIGRlcHRoKys7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMudG9rZW5zLnRva2Vuc1tpXS5pc09wdGlvbmFsQ2hhaW5FbmQpIHtcbiAgICAgICAgZGVwdGgtLTtcbiAgICAgIH1cbiAgICAgIGlmIChkZXB0aCA8IDApIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICAgIC8vIFRoaXMgc3Vic2NyaXB0IHRva2VuIGlzIGEgbGF0ZXIgb25lIGluIHRoZSBzYW1lIGNoYWluLlxuICAgICAgaWYgKGRlcHRoID09PSAwICYmIHRoaXMudG9rZW5zLnRva2Vuc1tpXS5zdWJzY3JpcHRTdGFydEluZGV4ICE9IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmUgaWYgd2UgYXJlIHRoZSBvcGVuLXBhcmVuIGluIGFuIGV4cHJlc3Npb24gbGlrZSBzdXBlci5hKCk/LmIuXG4gICAqXG4gICAqIFdlIGNhbiBkbyB0aGlzIGJ5IHdhbGtpbmcgYmFja3dhcmQgdG8gZmluZCB0aGUgcHJldmlvdXMgc3Vic2NyaXB0LiBJZiB0aGF0IHN1YnNjcmlwdCB3YXNcbiAgICogcHJlY2VkZWQgYnkgYSBzdXBlciwgdGhlbiB3ZSBtdXN0IGJlIHRoZSBzdWJzY3JpcHQgYWZ0ZXIgaXQsIHNvIGlmIHRoaXMgaXMgYSBjYWxsIGV4cHJlc3Npb24sXG4gICAqIHdlJ2xsIG5lZWQgdG8gYXR0YWNoIHRoZSByaWdodCBjb250ZXh0LlxuICAgKi9cbiAganVzdFNraXBwZWRTdXBlcigpIHtcbiAgICBsZXQgZGVwdGggPSAwO1xuICAgIGxldCBpbmRleCA9IHRoaXMudG9rZW5zLmN1cnJlbnRJbmRleCgpIC0gMTtcbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgaWYgKGluZGV4IDwgMCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgXCJSZWFjaGVkIHRoZSBzdGFydCBvZiB0aGUgY29kZSB3aGlsZSBmaW5kaW5nIHRoZSBzdGFydCBvZiB0aGUgYWNjZXNzIGNoYWluLlwiLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMudG9rZW5zLnRva2Vuc1tpbmRleF0uaXNPcHRpb25hbENoYWluU3RhcnQpIHtcbiAgICAgICAgZGVwdGgtLTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy50b2tlbnMudG9rZW5zW2luZGV4XS5pc09wdGlvbmFsQ2hhaW5FbmQpIHtcbiAgICAgICAgZGVwdGgrKztcbiAgICAgIH1cbiAgICAgIGlmIChkZXB0aCA8IDApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICAvLyBUaGlzIHN1YnNjcmlwdCB0b2tlbiBpcyBhIGxhdGVyIG9uZSBpbiB0aGUgc2FtZSBjaGFpbi5cbiAgICAgIGlmIChkZXB0aCA9PT0gMCAmJiB0aGlzLnRva2Vucy50b2tlbnNbaW5kZXhdLnN1YnNjcmlwdFN0YXJ0SW5kZXggIT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gdGhpcy50b2tlbnMudG9rZW5zW2luZGV4IC0gMV0udHlwZSA9PT0gX3R5cGVzLlRva2VuVHlwZS5fc3VwZXI7XG4gICAgICB9XG4gICAgICBpbmRleC0tO1xuICAgIH1cbiAgfVxufSBleHBvcnRzLmRlZmF1bHQgPSBPcHRpb25hbENoYWluaW5nTnVsbGlzaFRyYW5zZm9ybWVyO1xuIiwgIlwidXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge3ZhbHVlOiB0cnVlfSk7IGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbnZhciBfdG9rZW5pemVyID0gcmVxdWlyZSgnLi4vcGFyc2VyL3Rva2VuaXplcicpO1xudmFyIF90eXBlcyA9IHJlcXVpcmUoJy4uL3BhcnNlci90b2tlbml6ZXIvdHlwZXMnKTtcblxuXG52YXIgX1RyYW5zZm9ybWVyID0gcmVxdWlyZSgnLi9UcmFuc2Zvcm1lcicpOyB2YXIgX1RyYW5zZm9ybWVyMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX1RyYW5zZm9ybWVyKTtcblxuLyoqXG4gKiBJbXBsZW1lbnRhdGlvbiBvZiBiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLXJlYWN0LWRpc3BsYXktbmFtZSwgd2hpY2ggYWRkcyBhXG4gKiBkaXNwbGF5IG5hbWUgdG8gdXNhZ2VzIG9mIFJlYWN0LmNyZWF0ZUNsYXNzIGFuZCBjcmVhdGVSZWFjdENsYXNzLlxuICovXG4gY2xhc3MgUmVhY3REaXNwbGF5TmFtZVRyYW5zZm9ybWVyIGV4dGVuZHMgX1RyYW5zZm9ybWVyMi5kZWZhdWx0IHtcbiAgY29uc3RydWN0b3IoXG4gICAgIHJvb3RUcmFuc2Zvcm1lcixcbiAgICAgdG9rZW5zLFxuICAgICBpbXBvcnRQcm9jZXNzb3IsXG4gICAgIG9wdGlvbnMsXG4gICkge1xuICAgIHN1cGVyKCk7dGhpcy5yb290VHJhbnNmb3JtZXIgPSByb290VHJhbnNmb3JtZXI7dGhpcy50b2tlbnMgPSB0b2tlbnM7dGhpcy5pbXBvcnRQcm9jZXNzb3IgPSBpbXBvcnRQcm9jZXNzb3I7dGhpcy5vcHRpb25zID0gb3B0aW9uczs7XG4gIH1cblxuICBwcm9jZXNzKCkge1xuICAgIGNvbnN0IHN0YXJ0SW5kZXggPSB0aGlzLnRva2Vucy5jdXJyZW50SW5kZXgoKTtcbiAgICBpZiAodGhpcy50b2tlbnMuaWRlbnRpZmllck5hbWUoKSA9PT0gXCJjcmVhdGVSZWFjdENsYXNzXCIpIHtcbiAgICAgIGNvbnN0IG5ld05hbWUgPVxuICAgICAgICB0aGlzLmltcG9ydFByb2Nlc3NvciAmJiB0aGlzLmltcG9ydFByb2Nlc3Nvci5nZXRJZGVudGlmaWVyUmVwbGFjZW1lbnQoXCJjcmVhdGVSZWFjdENsYXNzXCIpO1xuICAgICAgaWYgKG5ld05hbWUpIHtcbiAgICAgICAgdGhpcy50b2tlbnMucmVwbGFjZVRva2VuKGAoMCwgJHtuZXdOYW1lfSlgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudG9rZW5zLmNvcHlUb2tlbigpO1xuICAgICAgfVxuICAgICAgdGhpcy50cnlQcm9jZXNzQ3JlYXRlQ2xhc3NDYWxsKHN0YXJ0SW5kZXgpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmIChcbiAgICAgIHRoaXMudG9rZW5zLm1hdGNoZXMzKF90eXBlcy5Ub2tlblR5cGUubmFtZSwgX3R5cGVzLlRva2VuVHlwZS5kb3QsIF90eXBlcy5Ub2tlblR5cGUubmFtZSkgJiZcbiAgICAgIHRoaXMudG9rZW5zLmlkZW50aWZpZXJOYW1lKCkgPT09IFwiUmVhY3RcIiAmJlxuICAgICAgdGhpcy50b2tlbnMuaWRlbnRpZmllck5hbWVBdEluZGV4KHRoaXMudG9rZW5zLmN1cnJlbnRJbmRleCgpICsgMikgPT09IFwiY3JlYXRlQ2xhc3NcIlxuICAgICkge1xuICAgICAgY29uc3QgbmV3TmFtZSA9IHRoaXMuaW1wb3J0UHJvY2Vzc29yXG4gICAgICAgID8gdGhpcy5pbXBvcnRQcm9jZXNzb3IuZ2V0SWRlbnRpZmllclJlcGxhY2VtZW50KFwiUmVhY3RcIikgfHwgXCJSZWFjdFwiXG4gICAgICAgIDogXCJSZWFjdFwiO1xuICAgICAgaWYgKG5ld05hbWUpIHtcbiAgICAgICAgdGhpcy50b2tlbnMucmVwbGFjZVRva2VuKG5ld05hbWUpO1xuICAgICAgICB0aGlzLnRva2Vucy5jb3B5VG9rZW4oKTtcbiAgICAgICAgdGhpcy50b2tlbnMuY29weVRva2VuKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnRva2Vucy5jb3B5VG9rZW4oKTtcbiAgICAgICAgdGhpcy50b2tlbnMuY29weVRva2VuKCk7XG4gICAgICAgIHRoaXMudG9rZW5zLmNvcHlUb2tlbigpO1xuICAgICAgfVxuICAgICAgdGhpcy50cnlQcm9jZXNzQ3JlYXRlQ2xhc3NDYWxsKHN0YXJ0SW5kZXgpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIGlzIGNhbGxlZCB3aXRoIHRoZSB0b2tlbiBwb3NpdGlvbiBhdCB0aGUgb3Blbi1wYXJlbi5cbiAgICovXG4gICB0cnlQcm9jZXNzQ3JlYXRlQ2xhc3NDYWxsKHN0YXJ0SW5kZXgpIHtcbiAgICBjb25zdCBkaXNwbGF5TmFtZSA9IHRoaXMuZmluZERpc3BsYXlOYW1lKHN0YXJ0SW5kZXgpO1xuICAgIGlmICghZGlzcGxheU5hbWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jbGFzc05lZWRzRGlzcGxheU5hbWUoKSkge1xuICAgICAgdGhpcy50b2tlbnMuY29weUV4cGVjdGVkVG9rZW4oX3R5cGVzLlRva2VuVHlwZS5wYXJlbkwpO1xuICAgICAgdGhpcy50b2tlbnMuY29weUV4cGVjdGVkVG9rZW4oX3R5cGVzLlRva2VuVHlwZS5icmFjZUwpO1xuICAgICAgdGhpcy50b2tlbnMuYXBwZW5kQ29kZShgZGlzcGxheU5hbWU6ICcke2Rpc3BsYXlOYW1lfScsYCk7XG4gICAgICB0aGlzLnJvb3RUcmFuc2Zvcm1lci5wcm9jZXNzQmFsYW5jZWRDb2RlKCk7XG4gICAgICB0aGlzLnRva2Vucy5jb3B5RXhwZWN0ZWRUb2tlbihfdHlwZXMuVG9rZW5UeXBlLmJyYWNlUik7XG4gICAgICB0aGlzLnRva2Vucy5jb3B5RXhwZWN0ZWRUb2tlbihfdHlwZXMuVG9rZW5UeXBlLnBhcmVuUik7XG4gICAgfVxuICB9XG5cbiAgIGZpbmREaXNwbGF5TmFtZShzdGFydEluZGV4KSB7XG4gICAgaWYgKHN0YXJ0SW5kZXggPCAyKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgaWYgKHRoaXMudG9rZW5zLm1hdGNoZXMyQXRJbmRleChzdGFydEluZGV4IC0gMiwgX3R5cGVzLlRva2VuVHlwZS5uYW1lLCBfdHlwZXMuVG9rZW5UeXBlLmVxKSkge1xuICAgICAgLy8gVGhpcyBpcyBhbiBhc3NpZ25tZW50IChvciBkZWNsYXJhdGlvbikgYW5kIHRoZSBMSFMgaXMgZWl0aGVyIGFuIGlkZW50aWZpZXIgb3IgYSBtZW1iZXJcbiAgICAgIC8vIGV4cHJlc3Npb24gZW5kaW5nIGluIGFuIGlkZW50aWZpZXIsIHNvIHVzZSB0aGF0IGlkZW50aWZpZXIgbmFtZS5cbiAgICAgIHJldHVybiB0aGlzLnRva2Vucy5pZGVudGlmaWVyTmFtZUF0SW5kZXgoc3RhcnRJbmRleCAtIDIpO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICBzdGFydEluZGV4ID49IDIgJiZcbiAgICAgIHRoaXMudG9rZW5zLnRva2Vuc1tzdGFydEluZGV4IC0gMl0uaWRlbnRpZmllclJvbGUgPT09IF90b2tlbml6ZXIuSWRlbnRpZmllclJvbGUuT2JqZWN0S2V5XG4gICAgKSB7XG4gICAgICAvLyBUaGlzIGlzIGFuIG9iamVjdCBsaXRlcmFsIHZhbHVlLlxuICAgICAgcmV0dXJuIHRoaXMudG9rZW5zLmlkZW50aWZpZXJOYW1lQXRJbmRleChzdGFydEluZGV4IC0gMik7XG4gICAgfVxuICAgIGlmICh0aGlzLnRva2Vucy5tYXRjaGVzMkF0SW5kZXgoc3RhcnRJbmRleCAtIDIsIF90eXBlcy5Ub2tlblR5cGUuX2V4cG9ydCwgX3R5cGVzLlRva2VuVHlwZS5fZGVmYXVsdCkpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldERpc3BsYXlOYW1lRnJvbUZpbGVuYW1lKCk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgIGdldERpc3BsYXlOYW1lRnJvbUZpbGVuYW1lKCkge1xuICAgIGNvbnN0IGZpbGVQYXRoID0gdGhpcy5vcHRpb25zLmZpbGVQYXRoIHx8IFwidW5rbm93blwiO1xuICAgIGNvbnN0IHBhdGhTZWdtZW50cyA9IGZpbGVQYXRoLnNwbGl0KFwiL1wiKTtcbiAgICBjb25zdCBmaWxlbmFtZSA9IHBhdGhTZWdtZW50c1twYXRoU2VnbWVudHMubGVuZ3RoIC0gMV07XG4gICAgY29uc3QgZG90SW5kZXggPSBmaWxlbmFtZS5sYXN0SW5kZXhPZihcIi5cIik7XG4gICAgY29uc3QgYmFzZUZpbGVuYW1lID0gZG90SW5kZXggPT09IC0xID8gZmlsZW5hbWUgOiBmaWxlbmFtZS5zbGljZSgwLCBkb3RJbmRleCk7XG4gICAgaWYgKGJhc2VGaWxlbmFtZSA9PT0gXCJpbmRleFwiICYmIHBhdGhTZWdtZW50c1twYXRoU2VnbWVudHMubGVuZ3RoIC0gMl0pIHtcbiAgICAgIHJldHVybiBwYXRoU2VnbWVudHNbcGF0aFNlZ21lbnRzLmxlbmd0aCAtIDJdO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYmFzZUZpbGVuYW1lO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBXZSBvbmx5IHdhbnQgdG8gYWRkIGEgZGlzcGxheSBuYW1lIHdoZW4gdGhpcyBpcyBhIGZ1bmN0aW9uIGNhbGwgY29udGFpbmluZ1xuICAgKiBvbmUgYXJndW1lbnQsIHdoaWNoIGlzIGFuIG9iamVjdCBsaXRlcmFsIHdpdGhvdXQgYGRpc3BsYXlOYW1lYCBhcyBhblxuICAgKiBleGlzdGluZyBrZXkuXG4gICAqL1xuICAgY2xhc3NOZWVkc0Rpc3BsYXlOYW1lKCkge1xuICAgIGxldCBpbmRleCA9IHRoaXMudG9rZW5zLmN1cnJlbnRJbmRleCgpO1xuICAgIGlmICghdGhpcy50b2tlbnMubWF0Y2hlczIoX3R5cGVzLlRva2VuVHlwZS5wYXJlbkwsIF90eXBlcy5Ub2tlblR5cGUuYnJhY2VMKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICAvLyBUaGUgYmxvY2sgc3RhcnRzIG9uIHRoZSB7LCBhbmQgd2UgZXhwZWN0IGFueSBkaXNwbGF5TmFtZSBrZXkgdG8gYmUgaW5cbiAgICAvLyB0aGF0IGNvbnRleHQuIFdlIG5lZWQgdG8gaWdub3JlIG90aGVyIG90aGVyIGNvbnRleHRzIHRvIGF2b2lkIG1hdGNoaW5nXG4gICAgLy8gbmVzdGVkIGRpc3BsYXlOYW1lIGtleXMuXG4gICAgY29uc3Qgb2JqZWN0U3RhcnRJbmRleCA9IGluZGV4ICsgMTtcbiAgICBjb25zdCBvYmplY3RDb250ZXh0SWQgPSB0aGlzLnRva2Vucy50b2tlbnNbb2JqZWN0U3RhcnRJbmRleF0uY29udGV4dElkO1xuICAgIGlmIChvYmplY3RDb250ZXh0SWQgPT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRXhwZWN0ZWQgbm9uLW51bGwgY29udGV4dCBJRCBvbiBvYmplY3Qgb3Blbi1icmFjZS5cIik7XG4gICAgfVxuXG4gICAgZm9yICg7IGluZGV4IDwgdGhpcy50b2tlbnMudG9rZW5zLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgY29uc3QgdG9rZW4gPSB0aGlzLnRva2Vucy50b2tlbnNbaW5kZXhdO1xuICAgICAgaWYgKHRva2VuLnR5cGUgPT09IF90eXBlcy5Ub2tlblR5cGUuYnJhY2VSICYmIHRva2VuLmNvbnRleHRJZCA9PT0gb2JqZWN0Q29udGV4dElkKSB7XG4gICAgICAgIGluZGV4Kys7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMudG9rZW5zLmlkZW50aWZpZXJOYW1lQXRJbmRleChpbmRleCkgPT09IFwiZGlzcGxheU5hbWVcIiAmJlxuICAgICAgICB0aGlzLnRva2Vucy50b2tlbnNbaW5kZXhdLmlkZW50aWZpZXJSb2xlID09PSBfdG9rZW5pemVyLklkZW50aWZpZXJSb2xlLk9iamVjdEtleSAmJlxuICAgICAgICB0b2tlbi5jb250ZXh0SWQgPT09IG9iamVjdENvbnRleHRJZFxuICAgICAgKSB7XG4gICAgICAgIC8vIFdlIGZvdW5kIGEgZGlzcGxheU5hbWUga2V5LCBzbyBiYWlsIG91dC5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChpbmRleCA9PT0gdGhpcy50b2tlbnMudG9rZW5zLmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXQgd2hlbiBwcm9jZXNzaW5nIFJlYWN0IGNsYXNzLlwiKTtcbiAgICB9XG5cbiAgICAvLyBJZiB3ZSBnb3QgdGhpcyBmYXIsIHdlIGtub3cgd2UgaGF2ZSBjcmVhdGVDbGFzcyB3aXRoIGFuIG9iamVjdCB3aXRoIG5vXG4gICAgLy8gZGlzcGxheSBuYW1lLCBzbyB3ZSB3YW50IHRvIHByb2NlZWQgYXMgbG9uZyBhcyB0aGF0IHdhcyB0aGUgb25seSBhcmd1bWVudC5cbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy50b2tlbnMubWF0Y2hlczFBdEluZGV4KGluZGV4LCBfdHlwZXMuVG9rZW5UeXBlLnBhcmVuUikgfHxcbiAgICAgIHRoaXMudG9rZW5zLm1hdGNoZXMyQXRJbmRleChpbmRleCwgX3R5cGVzLlRva2VuVHlwZS5jb21tYSwgX3R5cGVzLlRva2VuVHlwZS5wYXJlblIpXG4gICAgKTtcbiAgfVxufSBleHBvcnRzLmRlZmF1bHQgPSBSZWFjdERpc3BsYXlOYW1lVHJhbnNmb3JtZXI7XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7dmFsdWU6IHRydWV9KTsgZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH12YXIgX3Rva2VuaXplciA9IHJlcXVpcmUoJy4uL3BhcnNlci90b2tlbml6ZXInKTtcblxudmFyIF9UcmFuc2Zvcm1lciA9IHJlcXVpcmUoJy4vVHJhbnNmb3JtZXInKTsgdmFyIF9UcmFuc2Zvcm1lcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9UcmFuc2Zvcm1lcik7XG5cbiBjbGFzcyBSZWFjdEhvdExvYWRlclRyYW5zZm9ybWVyIGV4dGVuZHMgX1RyYW5zZm9ybWVyMi5kZWZhdWx0IHtcbiAgIF9faW5pdCgpIHt0aGlzLmV4dHJhY3RlZERlZmF1bHRFeHBvcnROYW1lID0gbnVsbH1cblxuICBjb25zdHJ1Y3RvciggdG9rZW5zLCAgZmlsZVBhdGgpIHtcbiAgICBzdXBlcigpO3RoaXMudG9rZW5zID0gdG9rZW5zO3RoaXMuZmlsZVBhdGggPSBmaWxlUGF0aDtSZWFjdEhvdExvYWRlclRyYW5zZm9ybWVyLnByb3RvdHlwZS5fX2luaXQuY2FsbCh0aGlzKTs7XG4gIH1cblxuICBzZXRFeHRyYWN0ZWREZWZhdWx0RXhwb3J0TmFtZShleHRyYWN0ZWREZWZhdWx0RXhwb3J0TmFtZSkge1xuICAgIHRoaXMuZXh0cmFjdGVkRGVmYXVsdEV4cG9ydE5hbWUgPSBleHRyYWN0ZWREZWZhdWx0RXhwb3J0TmFtZTtcbiAgfVxuXG4gIGdldFByZWZpeENvZGUoKSB7XG4gICAgcmV0dXJuIGBcbiAgICAgIChmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBlbnRlck1vZHVsZSA9IHJlcXVpcmUoJ3JlYWN0LWhvdC1sb2FkZXInKS5lbnRlck1vZHVsZTtcbiAgICAgICAgZW50ZXJNb2R1bGUgJiYgZW50ZXJNb2R1bGUobW9kdWxlKTtcbiAgICAgIH0pKCk7YFxuICAgICAgLnJlcGxhY2UoL1xccysvZywgXCIgXCIpXG4gICAgICAudHJpbSgpO1xuICB9XG5cbiAgZ2V0U3VmZml4Q29kZSgpIHtcbiAgICBjb25zdCB0b3BMZXZlbE5hbWVzID0gbmV3IFNldCgpO1xuICAgIGZvciAoY29uc3QgdG9rZW4gb2YgdGhpcy50b2tlbnMudG9rZW5zKSB7XG4gICAgICBpZiAoXG4gICAgICAgICF0b2tlbi5pc1R5cGUgJiZcbiAgICAgICAgX3Rva2VuaXplci5pc1RvcExldmVsRGVjbGFyYXRpb24uY2FsbCh2b2lkIDAsIHRva2VuKSAmJlxuICAgICAgICB0b2tlbi5pZGVudGlmaWVyUm9sZSAhPT0gX3Rva2VuaXplci5JZGVudGlmaWVyUm9sZS5JbXBvcnREZWNsYXJhdGlvblxuICAgICAgKSB7XG4gICAgICAgIHRvcExldmVsTmFtZXMuYWRkKHRoaXMudG9rZW5zLmlkZW50aWZpZXJOYW1lRm9yVG9rZW4odG9rZW4pKTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgbmFtZXNUb1JlZ2lzdGVyID0gQXJyYXkuZnJvbSh0b3BMZXZlbE5hbWVzKS5tYXAoKG5hbWUpID0+ICh7XG4gICAgICB2YXJpYWJsZU5hbWU6IG5hbWUsXG4gICAgICB1bmlxdWVMb2NhbE5hbWU6IG5hbWUsXG4gICAgfSkpO1xuICAgIGlmICh0aGlzLmV4dHJhY3RlZERlZmF1bHRFeHBvcnROYW1lKSB7XG4gICAgICBuYW1lc1RvUmVnaXN0ZXIucHVzaCh7XG4gICAgICAgIHZhcmlhYmxlTmFtZTogdGhpcy5leHRyYWN0ZWREZWZhdWx0RXhwb3J0TmFtZSxcbiAgICAgICAgdW5pcXVlTG9jYWxOYW1lOiBcImRlZmF1bHRcIixcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gYFxuOyhmdW5jdGlvbiAoKSB7XG4gIHZhciByZWFjdEhvdExvYWRlciA9IHJlcXVpcmUoJ3JlYWN0LWhvdC1sb2FkZXInKS5kZWZhdWx0O1xuICB2YXIgbGVhdmVNb2R1bGUgPSByZXF1aXJlKCdyZWFjdC1ob3QtbG9hZGVyJykubGVhdmVNb2R1bGU7XG4gIGlmICghcmVhY3RIb3RMb2FkZXIpIHtcbiAgICByZXR1cm47XG4gIH1cbiR7bmFtZXNUb1JlZ2lzdGVyXG4gIC5tYXAoXG4gICAgKHt2YXJpYWJsZU5hbWUsIHVuaXF1ZUxvY2FsTmFtZX0pID0+XG4gICAgICBgICByZWFjdEhvdExvYWRlci5yZWdpc3Rlcigke3ZhcmlhYmxlTmFtZX0sIFwiJHt1bmlxdWVMb2NhbE5hbWV9XCIsICR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgIHRoaXMuZmlsZVBhdGggfHwgXCJcIixcbiAgICAgICl9KTtgLFxuICApXG4gIC5qb2luKFwiXFxuXCIpfVxuICBsZWF2ZU1vZHVsZShtb2R1bGUpO1xufSkoKTtgO1xuICB9XG5cbiAgcHJvY2VzcygpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn0gZXhwb3J0cy5kZWZhdWx0ID0gUmVhY3RIb3RMb2FkZXJUcmFuc2Zvcm1lcjtcbiIsICJcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHt2YWx1ZTogdHJ1ZX0pO3ZhciBfaWRlbnRpZmllciA9IHJlcXVpcmUoJy4uL3BhcnNlci91dGlsL2lkZW50aWZpZXInKTtcblxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvTGV4aWNhbF9ncmFtbWFyXG4vLyBIYXJkLWNvZGUgYSBsaXN0IG9mIHJlc2VydmVkIHdvcmRzIHJhdGhlciB0aGFuIHRyeWluZyB0byB1c2Uga2V5d29yZHMgb3IgY29udGV4dHVhbCBrZXl3b3Jkc1xuLy8gZnJvbSB0aGUgcGFyc2VyLCBzaW5jZSBjdXJyZW50bHkgdGhlcmUgYXJlIHZhcmlvdXMgZXhjZXB0aW9ucywgbGlrZSBgcGFja2FnZWAgYmVpbmcgcmVzZXJ2ZWRcbi8vIGJ1dCB1bnVzZWQgYW5kIHZhcmlvdXMgY29udGV4dHVhbCBrZXl3b3JkcyBiZWluZyByZXNlcnZlZC4gTm90ZSB0aGF0IHdlIGFzc3VtZSB0aGF0IGFsbCBjb2RlXG4vLyBjb21waWxlZCBieSBTdWNyYXNlIGlzIGluIGEgbW9kdWxlLCBzbyBzdHJpY3QgbW9kZSB3b3JkcyBhbmQgYXdhaXQgYXJlIGFsbCBjb25zaWRlcmVkIHJlc2VydmVkXG4vLyBoZXJlLlxuY29uc3QgUkVTRVJWRURfV09SRFMgPSBuZXcgU2V0KFtcbiAgLy8gUmVzZXJ2ZWQga2V5d29yZHMgYXMgb2YgRUNNQVNjcmlwdCAyMDE1XG4gIFwiYnJlYWtcIixcbiAgXCJjYXNlXCIsXG4gIFwiY2F0Y2hcIixcbiAgXCJjbGFzc1wiLFxuICBcImNvbnN0XCIsXG4gIFwiY29udGludWVcIixcbiAgXCJkZWJ1Z2dlclwiLFxuICBcImRlZmF1bHRcIixcbiAgXCJkZWxldGVcIixcbiAgXCJkb1wiLFxuICBcImVsc2VcIixcbiAgXCJleHBvcnRcIixcbiAgXCJleHRlbmRzXCIsXG4gIFwiZmluYWxseVwiLFxuICBcImZvclwiLFxuICBcImZ1bmN0aW9uXCIsXG4gIFwiaWZcIixcbiAgXCJpbXBvcnRcIixcbiAgXCJpblwiLFxuICBcImluc3RhbmNlb2ZcIixcbiAgXCJuZXdcIixcbiAgXCJyZXR1cm5cIixcbiAgXCJzdXBlclwiLFxuICBcInN3aXRjaFwiLFxuICBcInRoaXNcIixcbiAgXCJ0aHJvd1wiLFxuICBcInRyeVwiLFxuICBcInR5cGVvZlwiLFxuICBcInZhclwiLFxuICBcInZvaWRcIixcbiAgXCJ3aGlsZVwiLFxuICBcIndpdGhcIixcbiAgXCJ5aWVsZFwiLFxuICAvLyBGdXR1cmUgcmVzZXJ2ZWQga2V5d29yZHNcbiAgXCJlbnVtXCIsXG4gIFwiaW1wbGVtZW50c1wiLFxuICBcImludGVyZmFjZVwiLFxuICBcImxldFwiLFxuICBcInBhY2thZ2VcIixcbiAgXCJwcml2YXRlXCIsXG4gIFwicHJvdGVjdGVkXCIsXG4gIFwicHVibGljXCIsXG4gIFwic3RhdGljXCIsXG4gIFwiYXdhaXRcIixcbiAgLy8gTGl0ZXJhbHMgdGhhdCBjYW5ub3QgYmUgdXNlZCBhcyBpZGVudGlmaWVyc1xuICBcImZhbHNlXCIsXG4gIFwibnVsbFwiLFxuICBcInRydWVcIixcbl0pO1xuXG4vKipcbiAqIERldGVybWluZSBpZiB0aGUgZ2l2ZW4gbmFtZSBpcyBhIGxlZ2FsIHZhcmlhYmxlIG5hbWUuXG4gKlxuICogVGhpcyBpcyBuZWVkZWQgd2hlbiB0cmFuc2Zvcm1pbmcgVHlwZVNjcmlwdCBlbnVtczsgaWYgYW4gZW51bSBrZXkgaXMgYSB2YWxpZFxuICogdmFyaWFibGUgbmFtZSwgaXQgbWlnaHQgYmUgcmVmZXJlbmNlZCBsYXRlciBpbiB0aGUgZW51bSwgc28gd2UgbmVlZCB0b1xuICogZGVjbGFyZSBhIHZhcmlhYmxlLlxuICovXG4gZnVuY3Rpb24gaXNJZGVudGlmaWVyKG5hbWUpIHtcbiAgaWYgKG5hbWUubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmICghX2lkZW50aWZpZXIuSVNfSURFTlRJRklFUl9TVEFSVFtuYW1lLmNoYXJDb2RlQXQoMCldKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGZvciAobGV0IGkgPSAxOyBpIDwgbmFtZS5sZW5ndGg7IGkrKykge1xuICAgIGlmICghX2lkZW50aWZpZXIuSVNfSURFTlRJRklFUl9DSEFSW25hbWUuY2hhckNvZGVBdChpKV0pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuICFSRVNFUlZFRF9XT1JEUy5oYXMobmFtZSk7XG59IGV4cG9ydHMuZGVmYXVsdCA9IGlzSWRlbnRpZmllcjtcbiIsICJcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHt2YWx1ZTogdHJ1ZX0pOyBmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxudmFyIF90eXBlcyA9IHJlcXVpcmUoJy4uL3BhcnNlci90b2tlbml6ZXIvdHlwZXMnKTtcblxudmFyIF9pc0lkZW50aWZpZXIgPSByZXF1aXJlKCcuLi91dGlsL2lzSWRlbnRpZmllcicpOyB2YXIgX2lzSWRlbnRpZmllcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pc0lkZW50aWZpZXIpO1xuXG52YXIgX1RyYW5zZm9ybWVyID0gcmVxdWlyZSgnLi9UcmFuc2Zvcm1lcicpOyB2YXIgX1RyYW5zZm9ybWVyMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX1RyYW5zZm9ybWVyKTtcblxuIGNsYXNzIFR5cGVTY3JpcHRUcmFuc2Zvcm1lciBleHRlbmRzIF9UcmFuc2Zvcm1lcjIuZGVmYXVsdCB7XG4gIGNvbnN0cnVjdG9yKFxuICAgICByb290VHJhbnNmb3JtZXIsXG4gICAgIHRva2VucyxcbiAgICAgaXNJbXBvcnRzVHJhbnNmb3JtRW5hYmxlZCxcbiAgKSB7XG4gICAgc3VwZXIoKTt0aGlzLnJvb3RUcmFuc2Zvcm1lciA9IHJvb3RUcmFuc2Zvcm1lcjt0aGlzLnRva2VucyA9IHRva2Vuczt0aGlzLmlzSW1wb3J0c1RyYW5zZm9ybUVuYWJsZWQgPSBpc0ltcG9ydHNUcmFuc2Zvcm1FbmFibGVkOztcbiAgfVxuXG4gIHByb2Nlc3MoKSB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5yb290VHJhbnNmb3JtZXIucHJvY2Vzc1Bvc3NpYmxlQXJyb3dQYXJhbUVuZCgpIHx8XG4gICAgICB0aGlzLnJvb3RUcmFuc2Zvcm1lci5wcm9jZXNzUG9zc2libGVBc3luY0Fycm93V2l0aFR5cGVQYXJhbXMoKSB8fFxuICAgICAgdGhpcy5yb290VHJhbnNmb3JtZXIucHJvY2Vzc1Bvc3NpYmxlVHlwZVJhbmdlKClcbiAgICApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICB0aGlzLnRva2Vucy5tYXRjaGVzMShfdHlwZXMuVG9rZW5UeXBlLl9wdWJsaWMpIHx8XG4gICAgICB0aGlzLnRva2Vucy5tYXRjaGVzMShfdHlwZXMuVG9rZW5UeXBlLl9wcm90ZWN0ZWQpIHx8XG4gICAgICB0aGlzLnRva2Vucy5tYXRjaGVzMShfdHlwZXMuVG9rZW5UeXBlLl9wcml2YXRlKSB8fFxuICAgICAgdGhpcy50b2tlbnMubWF0Y2hlczEoX3R5cGVzLlRva2VuVHlwZS5fYWJzdHJhY3QpIHx8XG4gICAgICB0aGlzLnRva2Vucy5tYXRjaGVzMShfdHlwZXMuVG9rZW5UeXBlLl9yZWFkb25seSkgfHxcbiAgICAgIHRoaXMudG9rZW5zLm1hdGNoZXMxKF90eXBlcy5Ub2tlblR5cGUuX292ZXJyaWRlKSB8fFxuICAgICAgdGhpcy50b2tlbnMubWF0Y2hlczEoX3R5cGVzLlRva2VuVHlwZS5ub25OdWxsQXNzZXJ0aW9uKVxuICAgICkge1xuICAgICAgdGhpcy50b2tlbnMucmVtb3ZlSW5pdGlhbFRva2VuKCk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKHRoaXMudG9rZW5zLm1hdGNoZXMxKF90eXBlcy5Ub2tlblR5cGUuX2VudW0pIHx8IHRoaXMudG9rZW5zLm1hdGNoZXMyKF90eXBlcy5Ub2tlblR5cGUuX2NvbnN0LCBfdHlwZXMuVG9rZW5UeXBlLl9lbnVtKSkge1xuICAgICAgdGhpcy5wcm9jZXNzRW51bSgpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmIChcbiAgICAgIHRoaXMudG9rZW5zLm1hdGNoZXMyKF90eXBlcy5Ub2tlblR5cGUuX2V4cG9ydCwgX3R5cGVzLlRva2VuVHlwZS5fZW51bSkgfHxcbiAgICAgIHRoaXMudG9rZW5zLm1hdGNoZXMzKF90eXBlcy5Ub2tlblR5cGUuX2V4cG9ydCwgX3R5cGVzLlRva2VuVHlwZS5fY29uc3QsIF90eXBlcy5Ub2tlblR5cGUuX2VudW0pXG4gICAgKSB7XG4gICAgICB0aGlzLnByb2Nlc3NFbnVtKHRydWUpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByb2Nlc3NFbnVtKGlzRXhwb3J0ID0gZmFsc2UpIHtcbiAgICAvLyBXZSBtaWdodCBoYXZlIFwiZXhwb3J0IGNvbnN0IGVudW1cIiwgc28ganVzdCByZW1vdmUgYWxsIHJlbGV2YW50IHRva2Vucy5cbiAgICB0aGlzLnRva2Vucy5yZW1vdmVJbml0aWFsVG9rZW4oKTtcbiAgICB3aGlsZSAodGhpcy50b2tlbnMubWF0Y2hlczEoX3R5cGVzLlRva2VuVHlwZS5fY29uc3QpIHx8IHRoaXMudG9rZW5zLm1hdGNoZXMxKF90eXBlcy5Ub2tlblR5cGUuX2VudW0pKSB7XG4gICAgICB0aGlzLnRva2Vucy5yZW1vdmVUb2tlbigpO1xuICAgIH1cbiAgICBjb25zdCBlbnVtTmFtZSA9IHRoaXMudG9rZW5zLmlkZW50aWZpZXJOYW1lKCk7XG4gICAgdGhpcy50b2tlbnMucmVtb3ZlVG9rZW4oKTtcbiAgICBpZiAoaXNFeHBvcnQgJiYgIXRoaXMuaXNJbXBvcnRzVHJhbnNmb3JtRW5hYmxlZCkge1xuICAgICAgdGhpcy50b2tlbnMuYXBwZW5kQ29kZShcImV4cG9ydCBcIik7XG4gICAgfVxuICAgIHRoaXMudG9rZW5zLmFwcGVuZENvZGUoYHZhciAke2VudW1OYW1lfTsgKGZ1bmN0aW9uICgke2VudW1OYW1lfSlgKTtcbiAgICB0aGlzLnRva2Vucy5jb3B5RXhwZWN0ZWRUb2tlbihfdHlwZXMuVG9rZW5UeXBlLmJyYWNlTCk7XG4gICAgdGhpcy5wcm9jZXNzRW51bUJvZHkoZW51bU5hbWUpO1xuICAgIHRoaXMudG9rZW5zLmNvcHlFeHBlY3RlZFRva2VuKF90eXBlcy5Ub2tlblR5cGUuYnJhY2VSKTtcbiAgICBpZiAoaXNFeHBvcnQgJiYgdGhpcy5pc0ltcG9ydHNUcmFuc2Zvcm1FbmFibGVkKSB7XG4gICAgICB0aGlzLnRva2Vucy5hcHBlbmRDb2RlKGApKCR7ZW51bU5hbWV9IHx8IChleHBvcnRzLiR7ZW51bU5hbWV9ID0gJHtlbnVtTmFtZX0gPSB7fSkpO2ApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRva2Vucy5hcHBlbmRDb2RlKGApKCR7ZW51bU5hbWV9IHx8ICgke2VudW1OYW1lfSA9IHt9KSk7YCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybSBhbiBlbnVtIGludG8gZXF1aXZhbGVudCBKUy4gVGhpcyBoYXMgY29tcGxleGl0eSBpbiBhIGZldyBwbGFjZXM6XG4gICAqIC0gVFMgYWxsb3dzIHN0cmluZyBlbnVtcywgbnVtZXJpYyBlbnVtcywgYW5kIGEgbWl4IG9mIHRoZSB0d28gc3R5bGVzIHdpdGhpbiBhbiBlbnVtLlxuICAgKiAtIEVudW0ga2V5cyBhcmUgYWxsb3dlZCB0byBiZSByZWZlcmVuY2VkIGluIGxhdGVyIGVudW0gdmFsdWVzLlxuICAgKiAtIEVudW0ga2V5cyBhcmUgYWxsb3dlZCB0byBiZSBzdHJpbmdzLlxuICAgKiAtIFdoZW4gZW51bSB2YWx1ZXMgYXJlIG9taXR0ZWQsIHRoZXkgc2hvdWxkIGZvbGxvdyBhbiBhdXRvLWluY3JlbWVudCBiZWhhdmlvci5cbiAgICovXG4gIHByb2Nlc3NFbnVtQm9keShlbnVtTmFtZSkge1xuICAgIC8vIENvZGUgdGhhdCBjYW4gYmUgdXNlZCB0byByZWZlcmVuY2UgdGhlIHByZXZpb3VzIGVudW0gbWVtYmVyLCBvciBudWxsIGlmIHRoaXMgaXMgdGhlIGZpcnN0XG4gICAgLy8gZW51bSBtZW1iZXIuXG4gICAgbGV0IHByZXZpb3VzVmFsdWVDb2RlID0gbnVsbDtcbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgaWYgKHRoaXMudG9rZW5zLm1hdGNoZXMxKF90eXBlcy5Ub2tlblR5cGUuYnJhY2VSKSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNvbnN0IHtuYW1lU3RyaW5nQ29kZSwgdmFyaWFibGVOYW1lfSA9IHRoaXMuZXh0cmFjdEVudW1LZXlJbmZvKHRoaXMudG9rZW5zLmN1cnJlbnRUb2tlbigpKTtcbiAgICAgIHRoaXMudG9rZW5zLnJlbW92ZUluaXRpYWxUb2tlbigpO1xuXG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMudG9rZW5zLm1hdGNoZXMzKF90eXBlcy5Ub2tlblR5cGUuZXEsIF90eXBlcy5Ub2tlblR5cGUuc3RyaW5nLCBfdHlwZXMuVG9rZW5UeXBlLmNvbW1hKSB8fFxuICAgICAgICB0aGlzLnRva2Vucy5tYXRjaGVzMyhfdHlwZXMuVG9rZW5UeXBlLmVxLCBfdHlwZXMuVG9rZW5UeXBlLnN0cmluZywgX3R5cGVzLlRva2VuVHlwZS5icmFjZVIpXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5wcm9jZXNzU3RyaW5nTGl0ZXJhbEVudW1NZW1iZXIoZW51bU5hbWUsIG5hbWVTdHJpbmdDb2RlLCB2YXJpYWJsZU5hbWUpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnRva2Vucy5tYXRjaGVzMShfdHlwZXMuVG9rZW5UeXBlLmVxKSkge1xuICAgICAgICB0aGlzLnByb2Nlc3NFeHBsaWNpdFZhbHVlRW51bU1lbWJlcihlbnVtTmFtZSwgbmFtZVN0cmluZ0NvZGUsIHZhcmlhYmxlTmFtZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnByb2Nlc3NJbXBsaWNpdFZhbHVlRW51bU1lbWJlcihcbiAgICAgICAgICBlbnVtTmFtZSxcbiAgICAgICAgICBuYW1lU3RyaW5nQ29kZSxcbiAgICAgICAgICB2YXJpYWJsZU5hbWUsXG4gICAgICAgICAgcHJldmlvdXNWYWx1ZUNvZGUsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy50b2tlbnMubWF0Y2hlczEoX3R5cGVzLlRva2VuVHlwZS5jb21tYSkpIHtcbiAgICAgICAgdGhpcy50b2tlbnMucmVtb3ZlVG9rZW4oKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHZhcmlhYmxlTmFtZSAhPSBudWxsKSB7XG4gICAgICAgIHByZXZpb3VzVmFsdWVDb2RlID0gdmFyaWFibGVOYW1lO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHJldmlvdXNWYWx1ZUNvZGUgPSBgJHtlbnVtTmFtZX1bJHtuYW1lU3RyaW5nQ29kZX1dYDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRGV0ZWN0IG5hbWUgaW5mb3JtYXRpb24gYWJvdXQgdGhpcyBlbnVtIGtleSwgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGRldGVybWluZSB3aGljaCBjb2RlIHRvIGVtaXRcbiAgICogYW5kIHdoZXRoZXIgd2Ugc2hvdWxkIGRlY2xhcmUgYSB2YXJpYWJsZSBhcyBwYXJ0IG9mIHRoaXMgZGVjbGFyYXRpb24uXG4gICAqXG4gICAqIFNvbWUgY2FzZXMgdG8ga2VlcCBpbiBtaW5kOlxuICAgKiAtIEVudW0ga2V5cyBjYW4gYmUgaW1wbGljaXRseSByZWZlcmVuY2VkIGxhdGVyLCBlLmcuIGBYID0gMSwgWSA9IFhgLiBJbiBTdWNyYXNlLCB3ZSBpbXBsZW1lbnRcbiAgICogICB0aGlzIGJ5IGRlY2xhcmluZyBhIHZhcmlhYmxlIGBYYCBzbyB0aGF0IGxhdGVyIGV4cHJlc3Npb25zIGNhbiB1c2UgaXQuXG4gICAqIC0gSW4gYWRkaXRpb24gdG8gdGhlIHVzdWFsIGlkZW50aWZpZXIga2V5IHN5bnRheCwgZW51bSBrZXlzIGFyZSBhbGxvd2VkIHRvIGJlIHN0cmluZyBsaXRlcmFscyxcbiAgICogICBlLmcuIGBcImhlbGxvIHdvcmxkXCIgPSAzLGAuIFRlbXBsYXRlIGxpdGVyYWwgc3ludGF4IGlzIE5PVCBhbGxvd2VkLlxuICAgKiAtIEV2ZW4gaWYgdGhlIGVudW0ga2V5IGlzIGRlZmluZWQgYXMgYSBzdHJpbmcgbGl0ZXJhbCwgaXQgbWF5IHN0aWxsIGJlIHJlZmVyZW5jZWQgYnkgaWRlbnRpZmllclxuICAgKiAgIGxhdGVyLCBlLmcuIGBcIlhcIiA9IDEsIFkgPSBYYC4gVGhhdCBtZWFucyB0aGF0IHdlIG5lZWQgdG8gZGV0ZWN0IHdoZXRoZXIgb3Igbm90IGEgc3RyaW5nXG4gICAqICAgbGl0ZXJhbCBpcyBpZGVudGlmaWVyLWxpa2UgYW5kIGVtaXQgYSB2YXJpYWJsZSBpZiBzbywgZXZlbiBpZiB0aGUgZGVjbGFyYXRpb24gZGlkIG5vdCB1c2UgYW5cbiAgICogICBpZGVudGlmaWVyLlxuICAgKiAtIFJlc2VydmVkIGtleXdvcmRzIGxpa2UgYGJyZWFrYCBhcmUgdmFsaWQgZW51bSBrZXlzLCBidXQgYXJlIG5vdCB2YWxpZCB0byBiZSByZWZlcmVuY2VkIGxhdGVyXG4gICAqICAgYW5kIHdvdWxkIGJlIGEgc3ludGF4IGVycm9yIGlmIHdlIGVtaXR0ZWQgYSB2YXJpYWJsZSwgc28gd2UgbmVlZCB0byBza2lwIHRoZSB2YXJpYWJsZVxuICAgKiAgIGRlY2xhcmF0aW9uIGluIHRob3NlIGNhc2VzLlxuICAgKlxuICAgKiBUaGUgdmFyaWFibGVOYW1lIHJldHVybiB2YWx1ZSBjYXB0dXJlcyB0aGVzZSBudWFuY2VzOiBpZiBub24tbnVsbCwgd2UgY2FuIGFuZCBtdXN0IGVtaXQgYVxuICAgKiB2YXJpYWJsZSBkZWNsYXJhdGlvbiwgYW5kIGlmIG51bGwsIHdlIGNhbid0IGFuZCBzaG91bGRuJ3QuXG4gICAqL1xuICBleHRyYWN0RW51bUtleUluZm8obmFtZVRva2VuKSB7XG4gICAgaWYgKG5hbWVUb2tlbi50eXBlID09PSBfdHlwZXMuVG9rZW5UeXBlLm5hbWUpIHtcbiAgICAgIGNvbnN0IG5hbWUgPSB0aGlzLnRva2Vucy5pZGVudGlmaWVyTmFtZUZvclRva2VuKG5hbWVUb2tlbik7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBuYW1lU3RyaW5nQ29kZTogYFwiJHtuYW1lfVwiYCxcbiAgICAgICAgdmFyaWFibGVOYW1lOiBfaXNJZGVudGlmaWVyMi5kZWZhdWx0LmNhbGwodm9pZCAwLCBuYW1lKSA/IG5hbWUgOiBudWxsLFxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKG5hbWVUb2tlbi50eXBlID09PSBfdHlwZXMuVG9rZW5UeXBlLnN0cmluZykge1xuICAgICAgY29uc3QgbmFtZSA9IHRoaXMudG9rZW5zLnN0cmluZ1ZhbHVlRm9yVG9rZW4obmFtZVRva2VuKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5hbWVTdHJpbmdDb2RlOiB0aGlzLnRva2Vucy5jb2RlLnNsaWNlKG5hbWVUb2tlbi5zdGFydCwgbmFtZVRva2VuLmVuZCksXG4gICAgICAgIHZhcmlhYmxlTmFtZTogX2lzSWRlbnRpZmllcjIuZGVmYXVsdC5jYWxsKHZvaWQgMCwgbmFtZSkgPyBuYW1lIDogbnVsbCxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkV4cGVjdGVkIG5hbWUgb3Igc3RyaW5nIGF0IGJlZ2lubmluZyBvZiBlbnVtIGVsZW1lbnQuXCIpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgYW4gZW51bSBtZW1iZXIgd2hlcmUgdGhlIFJIUyBpcyBqdXN0IGEgc3RyaW5nIGxpdGVyYWwgKG5vdCBvbWl0dGVkLCBub3QgYSBudW1iZXIsIGFuZFxuICAgKiBub3QgYSBjb21wbGV4IGV4cHJlc3Npb24pLiBUaGlzIGlzIHRoZSB0eXBpY2FsIGZvcm0gZm9yIFRTIHN0cmluZyBlbnVtcywgYW5kIGluIHRoaXMgY2FzZSwgd2VcbiAgICogZG8gKm5vdCogY3JlYXRlIGEgcmV2ZXJzZSBtYXBwaW5nLlxuICAgKlxuICAgKiBUaGlzIGlzIGNhbGxlZCBhZnRlciBkZWxldGluZyB0aGUga2V5IHRva2VuLCB3aGVuIHRoZSB0b2tlbiBwcm9jZXNzb3IgaXMgYXQgdGhlIGVxdWFscyBzaWduLlxuICAgKlxuICAgKiBFeGFtcGxlIDE6XG4gICAqIHNvbWVLZXkgPSBcInNvbWUgdmFsdWVcIlxuICAgKiAtPlxuICAgKiBjb25zdCBzb21lS2V5ID0gXCJzb21lIHZhbHVlXCI7IE15RW51bVtcInNvbWVLZXlcIl0gPSBzb21lS2V5O1xuICAgKlxuICAgKiBFeGFtcGxlIDI6XG4gICAqIFwic29tZSBrZXlcIiA9IFwic29tZSB2YWx1ZVwiXG4gICAqIC0+XG4gICAqIE15RW51bVtcInNvbWUga2V5XCJdID0gXCJzb21lIHZhbHVlXCI7XG4gICAqL1xuICBwcm9jZXNzU3RyaW5nTGl0ZXJhbEVudW1NZW1iZXIoXG4gICAgZW51bU5hbWUsXG4gICAgbmFtZVN0cmluZ0NvZGUsXG4gICAgdmFyaWFibGVOYW1lLFxuICApIHtcbiAgICBpZiAodmFyaWFibGVOYW1lICE9IG51bGwpIHtcbiAgICAgIHRoaXMudG9rZW5zLmFwcGVuZENvZGUoYGNvbnN0ICR7dmFyaWFibGVOYW1lfWApO1xuICAgICAgLy8gPVxuICAgICAgdGhpcy50b2tlbnMuY29weVRva2VuKCk7XG4gICAgICAvLyB2YWx1ZSBzdHJpbmdcbiAgICAgIHRoaXMudG9rZW5zLmNvcHlUb2tlbigpO1xuICAgICAgdGhpcy50b2tlbnMuYXBwZW5kQ29kZShgOyAke2VudW1OYW1lfVske25hbWVTdHJpbmdDb2RlfV0gPSAke3ZhcmlhYmxlTmFtZX07YCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudG9rZW5zLmFwcGVuZENvZGUoYCR7ZW51bU5hbWV9WyR7bmFtZVN0cmluZ0NvZGV9XWApO1xuICAgICAgLy8gPVxuICAgICAgdGhpcy50b2tlbnMuY29weVRva2VuKCk7XG4gICAgICAvLyB2YWx1ZSBzdHJpbmdcbiAgICAgIHRoaXMudG9rZW5zLmNvcHlUb2tlbigpO1xuICAgICAgdGhpcy50b2tlbnMuYXBwZW5kQ29kZShcIjtcIik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSBhbiBlbnVtIG1lbWJlciBpbml0aWFsaXplZCB3aXRoIGFuIGV4cHJlc3Npb24gb24gdGhlIHJpZ2h0LWhhbmQgc2lkZSAob3RoZXIgdGhhbiBhXG4gICAqIHN0cmluZyBsaXRlcmFsKS4gSW4gdGhlc2UgY2FzZXMsIHdlIHNob3VsZCB0cmFuc2Zvcm0gdGhlIGV4cHJlc3Npb24gYW5kIGVtaXQgY29kZSB0aGF0IHNldHMgdXBcbiAgICogYSByZXZlcnNlIG1hcHBpbmcuXG4gICAqXG4gICAqIFRoZSBUeXBlU2NyaXB0IGltcGxlbWVudGF0aW9uIG9mIHRoaXMgb3BlcmF0aW9uIGRpc3Rpbmd1aXNoZXMgYmV0d2VlbiBleHByZXNzaW9ucyB0aGF0IGNhbiBiZVxuICAgKiBcImNvbnN0YW50IGZvbGRlZFwiIGF0IGNvbXBpbGUgdGltZSAoaS5lLiBjb25zaXN0IG9mIG51bWJlciBsaXRlcmFscyBhbmQgc2ltcGxlIG1hdGggb3BlcmF0aW9uc1xuICAgKiBvbiB0aG9zZSBudW1iZXJzKSBhbmQgb25lcyB0aGF0IGFyZSBkeW5hbWljLiBGb3IgY29uc3RhbnQgZXhwcmVzc2lvbnMsIGl0IGVtaXRzIHRoZSByZXNvbHZlZFxuICAgKiBudW1lcmljIHZhbHVlLCBhbmQgYXV0by1pbmNyZW1lbnRpbmcgaXMgb25seSBhbGxvd2VkIGluIHRoYXQgY2FzZS4gRXZhbHVhdGluZyBleHByZXNzaW9ucyBhdFxuICAgKiBjb21waWxlIHRpbWUgd291bGQgYWRkIHNpZ25pZmljYW50IGNvbXBsZXhpdHkgdG8gU3VjcmFzZSwgc28gU3VjcmFzZSBpbnN0ZWFkIGxlYXZlcyB0aGVcbiAgICogZXhwcmVzc2lvbiBhcy1pcywgYW5kIHdpbGwgbGF0ZXIgZW1pdCBzb21ldGhpbmcgbGlrZSBgTXlFbnVtW1wicHJldmlvdXNLZXlcIl0gKyAxYCB0byBpbXBsZW1lbnRcbiAgICogYXV0by1pbmNyZW1lbnRpbmcuXG4gICAqXG4gICAqIFRoaXMgaXMgY2FsbGVkIGFmdGVyIGRlbGV0aW5nIHRoZSBrZXkgdG9rZW4sIHdoZW4gdGhlIHRva2VuIHByb2Nlc3NvciBpcyBhdCB0aGUgZXF1YWxzIHNpZ24uXG4gICAqXG4gICAqIEV4YW1wbGUgMTpcbiAgICogc29tZUtleSA9IDEgKyAxXG4gICAqIC0+XG4gICAqIGNvbnN0IHNvbWVLZXkgPSAxICsgMTsgTXlFbnVtW015RW51bVtcInNvbWVLZXlcIl0gPSBzb21lS2V5XSA9IFwic29tZUtleVwiO1xuICAgKlxuICAgKiBFeGFtcGxlIDI6XG4gICAqIFwic29tZSBrZXlcIiA9IDEgKyAxXG4gICAqIC0+XG4gICAqIE15RW51bVtNeUVudW1bXCJzb21lIGtleVwiXSA9IDEgKyAxXSA9IFwic29tZSBrZXlcIjtcbiAgICovXG4gIHByb2Nlc3NFeHBsaWNpdFZhbHVlRW51bU1lbWJlcihcbiAgICBlbnVtTmFtZSxcbiAgICBuYW1lU3RyaW5nQ29kZSxcbiAgICB2YXJpYWJsZU5hbWUsXG4gICkge1xuICAgIGNvbnN0IHJoc0VuZEluZGV4ID0gdGhpcy50b2tlbnMuY3VycmVudFRva2VuKCkucmhzRW5kSW5kZXg7XG4gICAgaWYgKHJoc0VuZEluZGV4ID09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkV4cGVjdGVkIHJoc0VuZEluZGV4IG9uIGVudW0gYXNzaWduLlwiKTtcbiAgICB9XG5cbiAgICBpZiAodmFyaWFibGVOYW1lICE9IG51bGwpIHtcbiAgICAgIHRoaXMudG9rZW5zLmFwcGVuZENvZGUoYGNvbnN0ICR7dmFyaWFibGVOYW1lfWApO1xuICAgICAgdGhpcy50b2tlbnMuY29weVRva2VuKCk7XG4gICAgICB3aGlsZSAodGhpcy50b2tlbnMuY3VycmVudEluZGV4KCkgPCByaHNFbmRJbmRleCkge1xuICAgICAgICB0aGlzLnJvb3RUcmFuc2Zvcm1lci5wcm9jZXNzVG9rZW4oKTtcbiAgICAgIH1cbiAgICAgIHRoaXMudG9rZW5zLmFwcGVuZENvZGUoXG4gICAgICAgIGA7ICR7ZW51bU5hbWV9WyR7ZW51bU5hbWV9WyR7bmFtZVN0cmluZ0NvZGV9XSA9ICR7dmFyaWFibGVOYW1lfV0gPSAke25hbWVTdHJpbmdDb2RlfTtgLFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50b2tlbnMuYXBwZW5kQ29kZShgJHtlbnVtTmFtZX1bJHtlbnVtTmFtZX1bJHtuYW1lU3RyaW5nQ29kZX1dYCk7XG4gICAgICB0aGlzLnRva2Vucy5jb3B5VG9rZW4oKTtcbiAgICAgIHdoaWxlICh0aGlzLnRva2Vucy5jdXJyZW50SW5kZXgoKSA8IHJoc0VuZEluZGV4KSB7XG4gICAgICAgIHRoaXMucm9vdFRyYW5zZm9ybWVyLnByb2Nlc3NUb2tlbigpO1xuICAgICAgfVxuICAgICAgdGhpcy50b2tlbnMuYXBwZW5kQ29kZShgXSA9ICR7bmFtZVN0cmluZ0NvZGV9O2ApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgYW4gZW51bSBtZW1iZXIgd2l0aCBubyByaWdodC1oYW5kIHNpZGUgZXhwcmVzc2lvbi4gSW4gdGhpcyBjYXNlLCB0aGUgdmFsdWUgaXMgdGhlXG4gICAqIHByZXZpb3VzIHZhbHVlIHBsdXMgMSwgb3IgMCBpZiB0aGVyZSB3YXMgbm8gcHJldmlvdXMgdmFsdWUuIFdlIHNob3VsZCBhbHNvIGFsd2F5cyBlbWl0IGFcbiAgICogcmV2ZXJzZSBtYXBwaW5nLlxuICAgKlxuICAgKiBFeGFtcGxlIDE6XG4gICAqIHNvbWVLZXkyXG4gICAqIC0+XG4gICAqIGNvbnN0IHNvbWVLZXkyID0gc29tZUtleTEgKyAxOyBNeUVudW1bTXlFbnVtW1wic29tZUtleTJcIl0gPSBzb21lS2V5Ml0gPSBcInNvbWVLZXkyXCI7XG4gICAqXG4gICAqIEV4YW1wbGUgMjpcbiAgICogXCJzb21lIGtleSAyXCJcbiAgICogLT5cbiAgICogTXlFbnVtW015RW51bVtcInNvbWUga2V5IDJcIl0gPSBzb21lS2V5MSArIDFdID0gXCJzb21lIGtleSAyXCI7XG4gICAqL1xuICBwcm9jZXNzSW1wbGljaXRWYWx1ZUVudW1NZW1iZXIoXG4gICAgZW51bU5hbWUsXG4gICAgbmFtZVN0cmluZ0NvZGUsXG4gICAgdmFyaWFibGVOYW1lLFxuICAgIHByZXZpb3VzVmFsdWVDb2RlLFxuICApIHtcbiAgICBsZXQgdmFsdWVDb2RlID0gcHJldmlvdXNWYWx1ZUNvZGUgIT0gbnVsbCA/IGAke3ByZXZpb3VzVmFsdWVDb2RlfSArIDFgIDogXCIwXCI7XG4gICAgaWYgKHZhcmlhYmxlTmFtZSAhPSBudWxsKSB7XG4gICAgICB0aGlzLnRva2Vucy5hcHBlbmRDb2RlKGBjb25zdCAke3ZhcmlhYmxlTmFtZX0gPSAke3ZhbHVlQ29kZX07IGApO1xuICAgICAgdmFsdWVDb2RlID0gdmFyaWFibGVOYW1lO1xuICAgIH1cbiAgICB0aGlzLnRva2Vucy5hcHBlbmRDb2RlKFxuICAgICAgYCR7ZW51bU5hbWV9WyR7ZW51bU5hbWV9WyR7bmFtZVN0cmluZ0NvZGV9XSA9ICR7dmFsdWVDb2RlfV0gPSAke25hbWVTdHJpbmdDb2RlfTtgLFxuICAgICk7XG4gIH1cbn0gZXhwb3J0cy5kZWZhdWx0ID0gVHlwZVNjcmlwdFRyYW5zZm9ybWVyO1xuIiwgIlwidXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge3ZhbHVlOiB0cnVlfSk7IGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cblxudmFyIF9rZXl3b3JkcyA9IHJlcXVpcmUoJy4uL3BhcnNlci90b2tlbml6ZXIva2V5d29yZHMnKTtcbnZhciBfdHlwZXMgPSByZXF1aXJlKCcuLi9wYXJzZXIvdG9rZW5pemVyL3R5cGVzJyk7XG5cbnZhciBfZ2V0Q2xhc3NJbmZvID0gcmVxdWlyZSgnLi4vdXRpbC9nZXRDbGFzc0luZm8nKTsgdmFyIF9nZXRDbGFzc0luZm8yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZ2V0Q2xhc3NJbmZvKTtcbnZhciBfQ0pTSW1wb3J0VHJhbnNmb3JtZXIgPSByZXF1aXJlKCcuL0NKU0ltcG9ydFRyYW5zZm9ybWVyJyk7IHZhciBfQ0pTSW1wb3J0VHJhbnNmb3JtZXIyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfQ0pTSW1wb3J0VHJhbnNmb3JtZXIpO1xudmFyIF9FU01JbXBvcnRUcmFuc2Zvcm1lciA9IHJlcXVpcmUoJy4vRVNNSW1wb3J0VHJhbnNmb3JtZXInKTsgdmFyIF9FU01JbXBvcnRUcmFuc2Zvcm1lcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9FU01JbXBvcnRUcmFuc2Zvcm1lcik7XG52YXIgX0Zsb3dUcmFuc2Zvcm1lciA9IHJlcXVpcmUoJy4vRmxvd1RyYW5zZm9ybWVyJyk7IHZhciBfRmxvd1RyYW5zZm9ybWVyMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX0Zsb3dUcmFuc2Zvcm1lcik7XG52YXIgX0plc3RIb2lzdFRyYW5zZm9ybWVyID0gcmVxdWlyZSgnLi9KZXN0SG9pc3RUcmFuc2Zvcm1lcicpOyB2YXIgX0plc3RIb2lzdFRyYW5zZm9ybWVyMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX0plc3RIb2lzdFRyYW5zZm9ybWVyKTtcbnZhciBfSlNYVHJhbnNmb3JtZXIgPSByZXF1aXJlKCcuL0pTWFRyYW5zZm9ybWVyJyk7IHZhciBfSlNYVHJhbnNmb3JtZXIyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfSlNYVHJhbnNmb3JtZXIpO1xudmFyIF9OdW1lcmljU2VwYXJhdG9yVHJhbnNmb3JtZXIgPSByZXF1aXJlKCcuL051bWVyaWNTZXBhcmF0b3JUcmFuc2Zvcm1lcicpOyB2YXIgX051bWVyaWNTZXBhcmF0b3JUcmFuc2Zvcm1lcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9OdW1lcmljU2VwYXJhdG9yVHJhbnNmb3JtZXIpO1xudmFyIF9PcHRpb25hbENhdGNoQmluZGluZ1RyYW5zZm9ybWVyID0gcmVxdWlyZSgnLi9PcHRpb25hbENhdGNoQmluZGluZ1RyYW5zZm9ybWVyJyk7IHZhciBfT3B0aW9uYWxDYXRjaEJpbmRpbmdUcmFuc2Zvcm1lcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9PcHRpb25hbENhdGNoQmluZGluZ1RyYW5zZm9ybWVyKTtcbnZhciBfT3B0aW9uYWxDaGFpbmluZ051bGxpc2hUcmFuc2Zvcm1lciA9IHJlcXVpcmUoJy4vT3B0aW9uYWxDaGFpbmluZ051bGxpc2hUcmFuc2Zvcm1lcicpOyB2YXIgX09wdGlvbmFsQ2hhaW5pbmdOdWxsaXNoVHJhbnNmb3JtZXIyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfT3B0aW9uYWxDaGFpbmluZ051bGxpc2hUcmFuc2Zvcm1lcik7XG52YXIgX1JlYWN0RGlzcGxheU5hbWVUcmFuc2Zvcm1lciA9IHJlcXVpcmUoJy4vUmVhY3REaXNwbGF5TmFtZVRyYW5zZm9ybWVyJyk7IHZhciBfUmVhY3REaXNwbGF5TmFtZVRyYW5zZm9ybWVyMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX1JlYWN0RGlzcGxheU5hbWVUcmFuc2Zvcm1lcik7XG52YXIgX1JlYWN0SG90TG9hZGVyVHJhbnNmb3JtZXIgPSByZXF1aXJlKCcuL1JlYWN0SG90TG9hZGVyVHJhbnNmb3JtZXInKTsgdmFyIF9SZWFjdEhvdExvYWRlclRyYW5zZm9ybWVyMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX1JlYWN0SG90TG9hZGVyVHJhbnNmb3JtZXIpO1xuXG52YXIgX1R5cGVTY3JpcHRUcmFuc2Zvcm1lciA9IHJlcXVpcmUoJy4vVHlwZVNjcmlwdFRyYW5zZm9ybWVyJyk7IHZhciBfVHlwZVNjcmlwdFRyYW5zZm9ybWVyMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX1R5cGVTY3JpcHRUcmFuc2Zvcm1lcik7XG5cblxuXG5cblxuXG5cblxuIGNsYXNzIFJvb3RUcmFuc2Zvcm1lciB7XG4gICBfX2luaXQoKSB7dGhpcy50cmFuc2Zvcm1lcnMgPSBbXX1cbiAgXG4gIFxuICAgX19pbml0MigpIHt0aGlzLmdlbmVyYXRlZFZhcmlhYmxlcyA9IFtdfVxuICBcbiAgXG4gIFxuICBcblxuICBjb25zdHJ1Y3RvcihcbiAgICBzdWNyYXNlQ29udGV4dCxcbiAgICB0cmFuc2Zvcm1zLFxuICAgIGVuYWJsZUxlZ2FjeUJhYmVsNU1vZHVsZUludGVyb3AsXG4gICAgb3B0aW9ucyxcbiAgKSB7O1Jvb3RUcmFuc2Zvcm1lci5wcm90b3R5cGUuX19pbml0LmNhbGwodGhpcyk7Um9vdFRyYW5zZm9ybWVyLnByb3RvdHlwZS5fX2luaXQyLmNhbGwodGhpcyk7XG4gICAgdGhpcy5uYW1lTWFuYWdlciA9IHN1Y3Jhc2VDb250ZXh0Lm5hbWVNYW5hZ2VyO1xuICAgIHRoaXMuaGVscGVyTWFuYWdlciA9IHN1Y3Jhc2VDb250ZXh0LmhlbHBlck1hbmFnZXI7XG4gICAgY29uc3Qge3Rva2VuUHJvY2Vzc29yLCBpbXBvcnRQcm9jZXNzb3J9ID0gc3VjcmFzZUNvbnRleHQ7XG4gICAgdGhpcy50b2tlbnMgPSB0b2tlblByb2Nlc3NvcjtcbiAgICB0aGlzLmlzSW1wb3J0c1RyYW5zZm9ybUVuYWJsZWQgPSB0cmFuc2Zvcm1zLmluY2x1ZGVzKFwiaW1wb3J0c1wiKTtcbiAgICB0aGlzLmlzUmVhY3RIb3RMb2FkZXJUcmFuc2Zvcm1FbmFibGVkID0gdHJhbnNmb3Jtcy5pbmNsdWRlcyhcInJlYWN0LWhvdC1sb2FkZXJcIik7XG4gICAgdGhpcy5kaXNhYmxlRVNUcmFuc2Zvcm1zID0gQm9vbGVhbihvcHRpb25zLmRpc2FibGVFU1RyYW5zZm9ybXMpO1xuXG4gICAgaWYgKCFvcHRpb25zLmRpc2FibGVFU1RyYW5zZm9ybXMpIHtcbiAgICAgIHRoaXMudHJhbnNmb3JtZXJzLnB1c2goXG4gICAgICAgIG5ldyAoMCwgX09wdGlvbmFsQ2hhaW5pbmdOdWxsaXNoVHJhbnNmb3JtZXIyLmRlZmF1bHQpKHRva2VuUHJvY2Vzc29yLCB0aGlzLm5hbWVNYW5hZ2VyKSxcbiAgICAgICk7XG4gICAgICB0aGlzLnRyYW5zZm9ybWVycy5wdXNoKG5ldyAoMCwgX051bWVyaWNTZXBhcmF0b3JUcmFuc2Zvcm1lcjIuZGVmYXVsdCkodG9rZW5Qcm9jZXNzb3IpKTtcbiAgICAgIHRoaXMudHJhbnNmb3JtZXJzLnB1c2gobmV3ICgwLCBfT3B0aW9uYWxDYXRjaEJpbmRpbmdUcmFuc2Zvcm1lcjIuZGVmYXVsdCkodG9rZW5Qcm9jZXNzb3IsIHRoaXMubmFtZU1hbmFnZXIpKTtcbiAgICB9XG5cbiAgICBpZiAodHJhbnNmb3Jtcy5pbmNsdWRlcyhcImpzeFwiKSkge1xuICAgICAgaWYgKG9wdGlvbnMuanN4UnVudGltZSAhPT0gXCJwcmVzZXJ2ZVwiKSB7XG4gICAgICAgIHRoaXMudHJhbnNmb3JtZXJzLnB1c2goXG4gICAgICAgICAgbmV3ICgwLCBfSlNYVHJhbnNmb3JtZXIyLmRlZmF1bHQpKHRoaXMsIHRva2VuUHJvY2Vzc29yLCBpbXBvcnRQcm9jZXNzb3IsIHRoaXMubmFtZU1hbmFnZXIsIG9wdGlvbnMpLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgdGhpcy50cmFuc2Zvcm1lcnMucHVzaChcbiAgICAgICAgbmV3ICgwLCBfUmVhY3REaXNwbGF5TmFtZVRyYW5zZm9ybWVyMi5kZWZhdWx0KSh0aGlzLCB0b2tlblByb2Nlc3NvciwgaW1wb3J0UHJvY2Vzc29yLCBvcHRpb25zKSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgbGV0IHJlYWN0SG90TG9hZGVyVHJhbnNmb3JtZXIgPSBudWxsO1xuICAgIGlmICh0cmFuc2Zvcm1zLmluY2x1ZGVzKFwicmVhY3QtaG90LWxvYWRlclwiKSkge1xuICAgICAgaWYgKCFvcHRpb25zLmZpbGVQYXRoKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcImZpbGVQYXRoIGlzIHJlcXVpcmVkIHdoZW4gdXNpbmcgdGhlIHJlYWN0LWhvdC1sb2FkZXIgdHJhbnNmb3JtLlwiKTtcbiAgICAgIH1cbiAgICAgIHJlYWN0SG90TG9hZGVyVHJhbnNmb3JtZXIgPSBuZXcgKDAsIF9SZWFjdEhvdExvYWRlclRyYW5zZm9ybWVyMi5kZWZhdWx0KSh0b2tlblByb2Nlc3Nvciwgb3B0aW9ucy5maWxlUGF0aCk7XG4gICAgICB0aGlzLnRyYW5zZm9ybWVycy5wdXNoKHJlYWN0SG90TG9hZGVyVHJhbnNmb3JtZXIpO1xuICAgIH1cblxuICAgIC8vIE5vdGUgdGhhdCB3ZSBhbHdheXMgd2FudCB0byBlbmFibGUgdGhlIGltcG9ydHMgdHJhbnNmb3JtZXIsIGV2ZW4gd2hlbiB0aGUgaW1wb3J0IHRyYW5zZm9ybVxuICAgIC8vIGl0c2VsZiBpc24ndCBlbmFibGVkLCBzaW5jZSB3ZSBuZWVkIHRvIGRvIHR5cGUtb25seSBpbXBvcnQgcHJ1bmluZyBmb3IgYm90aCBGbG93IGFuZFxuICAgIC8vIFR5cGVTY3JpcHQuXG4gICAgaWYgKHRyYW5zZm9ybXMuaW5jbHVkZXMoXCJpbXBvcnRzXCIpKSB7XG4gICAgICBpZiAoaW1wb3J0UHJvY2Vzc29yID09PSBudWxsKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkV4cGVjdGVkIG5vbi1udWxsIGltcG9ydFByb2Nlc3NvciB3aXRoIGltcG9ydHMgdHJhbnNmb3JtIGVuYWJsZWQuXCIpO1xuICAgICAgfVxuICAgICAgdGhpcy50cmFuc2Zvcm1lcnMucHVzaChcbiAgICAgICAgbmV3ICgwLCBfQ0pTSW1wb3J0VHJhbnNmb3JtZXIyLmRlZmF1bHQpKFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgdG9rZW5Qcm9jZXNzb3IsXG4gICAgICAgICAgaW1wb3J0UHJvY2Vzc29yLFxuICAgICAgICAgIHRoaXMubmFtZU1hbmFnZXIsXG4gICAgICAgICAgdGhpcy5oZWxwZXJNYW5hZ2VyLFxuICAgICAgICAgIHJlYWN0SG90TG9hZGVyVHJhbnNmb3JtZXIsXG4gICAgICAgICAgZW5hYmxlTGVnYWN5QmFiZWw1TW9kdWxlSW50ZXJvcCxcbiAgICAgICAgICBCb29sZWFuKG9wdGlvbnMuZW5hYmxlTGVnYWN5VHlwZVNjcmlwdE1vZHVsZUludGVyb3ApLFxuICAgICAgICAgIHRyYW5zZm9ybXMuaW5jbHVkZXMoXCJ0eXBlc2NyaXB0XCIpLFxuICAgICAgICAgIHRyYW5zZm9ybXMuaW5jbHVkZXMoXCJmbG93XCIpLFxuICAgICAgICAgIEJvb2xlYW4ob3B0aW9ucy5wcmVzZXJ2ZUR5bmFtaWNJbXBvcnQpLFxuICAgICAgICAgIEJvb2xlYW4ob3B0aW9ucy5rZWVwVW51c2VkSW1wb3J0cyksXG4gICAgICAgICksXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRyYW5zZm9ybWVycy5wdXNoKFxuICAgICAgICBuZXcgKDAsIF9FU01JbXBvcnRUcmFuc2Zvcm1lcjIuZGVmYXVsdCkoXG4gICAgICAgICAgdG9rZW5Qcm9jZXNzb3IsXG4gICAgICAgICAgdGhpcy5uYW1lTWFuYWdlcixcbiAgICAgICAgICB0aGlzLmhlbHBlck1hbmFnZXIsXG4gICAgICAgICAgcmVhY3RIb3RMb2FkZXJUcmFuc2Zvcm1lcixcbiAgICAgICAgICB0cmFuc2Zvcm1zLmluY2x1ZGVzKFwidHlwZXNjcmlwdFwiKSxcbiAgICAgICAgICB0cmFuc2Zvcm1zLmluY2x1ZGVzKFwiZmxvd1wiKSxcbiAgICAgICAgICBCb29sZWFuKG9wdGlvbnMua2VlcFVudXNlZEltcG9ydHMpLFxuICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICksXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICh0cmFuc2Zvcm1zLmluY2x1ZGVzKFwiZmxvd1wiKSkge1xuICAgICAgdGhpcy50cmFuc2Zvcm1lcnMucHVzaChcbiAgICAgICAgbmV3ICgwLCBfRmxvd1RyYW5zZm9ybWVyMi5kZWZhdWx0KSh0aGlzLCB0b2tlblByb2Nlc3NvciwgdHJhbnNmb3Jtcy5pbmNsdWRlcyhcImltcG9ydHNcIikpLFxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKHRyYW5zZm9ybXMuaW5jbHVkZXMoXCJ0eXBlc2NyaXB0XCIpKSB7XG4gICAgICB0aGlzLnRyYW5zZm9ybWVycy5wdXNoKFxuICAgICAgICBuZXcgKDAsIF9UeXBlU2NyaXB0VHJhbnNmb3JtZXIyLmRlZmF1bHQpKHRoaXMsIHRva2VuUHJvY2Vzc29yLCB0cmFuc2Zvcm1zLmluY2x1ZGVzKFwiaW1wb3J0c1wiKSksXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAodHJhbnNmb3Jtcy5pbmNsdWRlcyhcImplc3RcIikpIHtcbiAgICAgIHRoaXMudHJhbnNmb3JtZXJzLnB1c2goXG4gICAgICAgIG5ldyAoMCwgX0plc3RIb2lzdFRyYW5zZm9ybWVyMi5kZWZhdWx0KSh0aGlzLCB0b2tlblByb2Nlc3NvciwgdGhpcy5uYW1lTWFuYWdlciwgaW1wb3J0UHJvY2Vzc29yKSxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgdHJhbnNmb3JtKCkge1xuICAgIHRoaXMudG9rZW5zLnJlc2V0KCk7XG4gICAgdGhpcy5wcm9jZXNzQmFsYW5jZWRDb2RlKCk7XG4gICAgY29uc3Qgc2hvdWxkQWRkVXNlU3RyaWN0ID0gdGhpcy5pc0ltcG9ydHNUcmFuc2Zvcm1FbmFibGVkO1xuICAgIC8vIFwidXNlIHN0cmljdFwiIGFsd2F5cyBuZWVkcyB0byBiZSBmaXJzdCwgc28gb3ZlcnJpZGUgdGhlIG5vcm1hbCB0cmFuc2Zvcm1lciBvcmRlci5cbiAgICBsZXQgcHJlZml4ID0gc2hvdWxkQWRkVXNlU3RyaWN0ID8gJ1widXNlIHN0cmljdFwiOycgOiBcIlwiO1xuICAgIGZvciAoY29uc3QgdHJhbnNmb3JtZXIgb2YgdGhpcy50cmFuc2Zvcm1lcnMpIHtcbiAgICAgIHByZWZpeCArPSB0cmFuc2Zvcm1lci5nZXRQcmVmaXhDb2RlKCk7XG4gICAgfVxuICAgIHByZWZpeCArPSB0aGlzLmhlbHBlck1hbmFnZXIuZW1pdEhlbHBlcnMoKTtcbiAgICBwcmVmaXggKz0gdGhpcy5nZW5lcmF0ZWRWYXJpYWJsZXMubWFwKCh2KSA9PiBgIHZhciAke3Z9O2ApLmpvaW4oXCJcIik7XG4gICAgZm9yIChjb25zdCB0cmFuc2Zvcm1lciBvZiB0aGlzLnRyYW5zZm9ybWVycykge1xuICAgICAgcHJlZml4ICs9IHRyYW5zZm9ybWVyLmdldEhvaXN0ZWRDb2RlKCk7XG4gICAgfVxuICAgIGxldCBzdWZmaXggPSBcIlwiO1xuICAgIGZvciAoY29uc3QgdHJhbnNmb3JtZXIgb2YgdGhpcy50cmFuc2Zvcm1lcnMpIHtcbiAgICAgIHN1ZmZpeCArPSB0cmFuc2Zvcm1lci5nZXRTdWZmaXhDb2RlKCk7XG4gICAgfVxuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMudG9rZW5zLmZpbmlzaCgpO1xuICAgIGxldCB7Y29kZX0gPSByZXN1bHQ7XG4gICAgaWYgKGNvZGUuc3RhcnRzV2l0aChcIiMhXCIpKSB7XG4gICAgICBsZXQgbmV3bGluZUluZGV4ID0gY29kZS5pbmRleE9mKFwiXFxuXCIpO1xuICAgICAgaWYgKG5ld2xpbmVJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgbmV3bGluZUluZGV4ID0gY29kZS5sZW5ndGg7XG4gICAgICAgIGNvZGUgKz0gXCJcXG5cIjtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvZGU6IGNvZGUuc2xpY2UoMCwgbmV3bGluZUluZGV4ICsgMSkgKyBwcmVmaXggKyBjb2RlLnNsaWNlKG5ld2xpbmVJbmRleCArIDEpICsgc3VmZml4LFxuICAgICAgICAvLyBUaGUgaGFzaGJhbmcgbGluZSBoYXMgbm8gdG9rZW5zLCBzbyBzaGlmdGluZyB0aGUgdG9rZW5zIHRvIGFjY291bnRcbiAgICAgICAgLy8gZm9yIHByZWZpeCBjYW4gaGFwcGVuIG5vcm1hbGx5LlxuICAgICAgICBtYXBwaW5nczogdGhpcy5zaGlmdE1hcHBpbmdzKHJlc3VsdC5tYXBwaW5ncywgcHJlZml4Lmxlbmd0aCksXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb2RlOiBwcmVmaXggKyBjb2RlICsgc3VmZml4LFxuICAgICAgICBtYXBwaW5nczogdGhpcy5zaGlmdE1hcHBpbmdzKHJlc3VsdC5tYXBwaW5ncywgcHJlZml4Lmxlbmd0aCksXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHByb2Nlc3NCYWxhbmNlZENvZGUoKSB7XG4gICAgbGV0IGJyYWNlRGVwdGggPSAwO1xuICAgIGxldCBwYXJlbkRlcHRoID0gMDtcbiAgICB3aGlsZSAoIXRoaXMudG9rZW5zLmlzQXRFbmQoKSkge1xuICAgICAgaWYgKHRoaXMudG9rZW5zLm1hdGNoZXMxKF90eXBlcy5Ub2tlblR5cGUuYnJhY2VMKSB8fCB0aGlzLnRva2Vucy5tYXRjaGVzMShfdHlwZXMuVG9rZW5UeXBlLmRvbGxhckJyYWNlTCkpIHtcbiAgICAgICAgYnJhY2VEZXB0aCsrO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnRva2Vucy5tYXRjaGVzMShfdHlwZXMuVG9rZW5UeXBlLmJyYWNlUikpIHtcbiAgICAgICAgaWYgKGJyYWNlRGVwdGggPT09IDApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgYnJhY2VEZXB0aC0tO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMudG9rZW5zLm1hdGNoZXMxKF90eXBlcy5Ub2tlblR5cGUucGFyZW5MKSkge1xuICAgICAgICBwYXJlbkRlcHRoKys7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMudG9rZW5zLm1hdGNoZXMxKF90eXBlcy5Ub2tlblR5cGUucGFyZW5SKSkge1xuICAgICAgICBpZiAocGFyZW5EZXB0aCA9PT0gMCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBwYXJlbkRlcHRoLS07XG4gICAgICB9XG4gICAgICB0aGlzLnByb2Nlc3NUb2tlbigpO1xuICAgIH1cbiAgfVxuXG4gIHByb2Nlc3NUb2tlbigpIHtcbiAgICBpZiAodGhpcy50b2tlbnMubWF0Y2hlczEoX3R5cGVzLlRva2VuVHlwZS5fY2xhc3MpKSB7XG4gICAgICB0aGlzLnByb2Nlc3NDbGFzcygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IHRyYW5zZm9ybWVyIG9mIHRoaXMudHJhbnNmb3JtZXJzKSB7XG4gICAgICBjb25zdCB3YXNQcm9jZXNzZWQgPSB0cmFuc2Zvcm1lci5wcm9jZXNzKCk7XG4gICAgICBpZiAod2FzUHJvY2Vzc2VkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy50b2tlbnMuY29weVRva2VuKCk7XG4gIH1cblxuICAvKipcbiAgICogU2tpcCBwYXN0IGEgY2xhc3Mgd2l0aCBhIG5hbWUgYW5kIHJldHVybiB0aGF0IG5hbWUuXG4gICAqL1xuICBwcm9jZXNzTmFtZWRDbGFzcygpIHtcbiAgICBpZiAoIXRoaXMudG9rZW5zLm1hdGNoZXMyKF90eXBlcy5Ub2tlblR5cGUuX2NsYXNzLCBfdHlwZXMuVG9rZW5UeXBlLm5hbWUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJFeHBlY3RlZCBpZGVudGlmaWVyIGZvciBleHBvcnRlZCBjbGFzcyBuYW1lLlwiKTtcbiAgICB9XG4gICAgY29uc3QgbmFtZSA9IHRoaXMudG9rZW5zLmlkZW50aWZpZXJOYW1lQXRJbmRleCh0aGlzLnRva2Vucy5jdXJyZW50SW5kZXgoKSArIDEpO1xuICAgIHRoaXMucHJvY2Vzc0NsYXNzKCk7XG4gICAgcmV0dXJuIG5hbWU7XG4gIH1cblxuICBwcm9jZXNzQ2xhc3MoKSB7XG4gICAgY29uc3QgY2xhc3NJbmZvID0gX2dldENsYXNzSW5mbzIuZGVmYXVsdC5jYWxsKHZvaWQgMCwgdGhpcywgdGhpcy50b2tlbnMsIHRoaXMubmFtZU1hbmFnZXIsIHRoaXMuZGlzYWJsZUVTVHJhbnNmb3Jtcyk7XG5cbiAgICAvLyBCb3RoIHN0YXRpYyBhbmQgaW5zdGFuY2UgaW5pdGlhbGl6ZXJzIG5lZWQgYSBjbGFzcyBuYW1lIHRvIHVzZSB0byBpbnZva2UgdGhlIGluaXRpYWxpemVyLCBzb1xuICAgIC8vIGFzc2lnbiB0byBvbmUgaWYgbmVjZXNzYXJ5LlxuICAgIGNvbnN0IG5lZWRzQ29tbWFFeHByZXNzaW9uID1cbiAgICAgIChjbGFzc0luZm8uaGVhZGVySW5mby5pc0V4cHJlc3Npb24gfHwgIWNsYXNzSW5mby5oZWFkZXJJbmZvLmNsYXNzTmFtZSkgJiZcbiAgICAgIGNsYXNzSW5mby5zdGF0aWNJbml0aWFsaXplck5hbWVzLmxlbmd0aCArIGNsYXNzSW5mby5pbnN0YW5jZUluaXRpYWxpemVyTmFtZXMubGVuZ3RoID4gMDtcblxuICAgIGxldCBjbGFzc05hbWUgPSBjbGFzc0luZm8uaGVhZGVySW5mby5jbGFzc05hbWU7XG4gICAgaWYgKG5lZWRzQ29tbWFFeHByZXNzaW9uKSB7XG4gICAgICBjbGFzc05hbWUgPSB0aGlzLm5hbWVNYW5hZ2VyLmNsYWltRnJlZU5hbWUoXCJfY2xhc3NcIik7XG4gICAgICB0aGlzLmdlbmVyYXRlZFZhcmlhYmxlcy5wdXNoKGNsYXNzTmFtZSk7XG4gICAgICB0aGlzLnRva2Vucy5hcHBlbmRDb2RlKGAgKCR7Y2xhc3NOYW1lfSA9YCk7XG4gICAgfVxuXG4gICAgY29uc3QgY2xhc3NUb2tlbiA9IHRoaXMudG9rZW5zLmN1cnJlbnRUb2tlbigpO1xuICAgIGNvbnN0IGNvbnRleHRJZCA9IGNsYXNzVG9rZW4uY29udGV4dElkO1xuICAgIGlmIChjb250ZXh0SWQgPT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRXhwZWN0ZWQgY2xhc3MgdG8gaGF2ZSBhIGNvbnRleHQgSUQuXCIpO1xuICAgIH1cbiAgICB0aGlzLnRva2Vucy5jb3B5RXhwZWN0ZWRUb2tlbihfdHlwZXMuVG9rZW5UeXBlLl9jbGFzcyk7XG4gICAgd2hpbGUgKCF0aGlzLnRva2Vucy5tYXRjaGVzQ29udGV4dElkQW5kTGFiZWwoX3R5cGVzLlRva2VuVHlwZS5icmFjZUwsIGNvbnRleHRJZCkpIHtcbiAgICAgIHRoaXMucHJvY2Vzc1Rva2VuKCk7XG4gICAgfVxuXG4gICAgdGhpcy5wcm9jZXNzQ2xhc3NCb2R5KGNsYXNzSW5mbywgY2xhc3NOYW1lKTtcblxuICAgIGNvbnN0IHN0YXRpY0luaXRpYWxpemVyU3RhdGVtZW50cyA9IGNsYXNzSW5mby5zdGF0aWNJbml0aWFsaXplck5hbWVzLm1hcChcbiAgICAgIChuYW1lKSA9PiBgJHtjbGFzc05hbWV9LiR7bmFtZX0oKWAsXG4gICAgKTtcbiAgICBpZiAobmVlZHNDb21tYUV4cHJlc3Npb24pIHtcbiAgICAgIHRoaXMudG9rZW5zLmFwcGVuZENvZGUoXG4gICAgICAgIGAsICR7c3RhdGljSW5pdGlhbGl6ZXJTdGF0ZW1lbnRzLm1hcCgocykgPT4gYCR7c30sIGApLmpvaW4oXCJcIil9JHtjbGFzc05hbWV9KWAsXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAoY2xhc3NJbmZvLnN0YXRpY0luaXRpYWxpemVyTmFtZXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy50b2tlbnMuYXBwZW5kQ29kZShgICR7c3RhdGljSW5pdGlhbGl6ZXJTdGF0ZW1lbnRzLm1hcCgocykgPT4gYCR7c307YCkuam9pbihcIiBcIil9YCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFdlIHdhbnQgdG8ganVzdCBoYW5kbGUgY2xhc3MgZmllbGRzIGluIGFsbCBjb250ZXh0cywgc2luY2UgVHlwZVNjcmlwdCBzdXBwb3J0cyB0aGVtLiBMYXRlcixcbiAgICogd2hlbiBzb21lIEpTIGltcGxlbWVudGF0aW9ucyBzdXBwb3J0IGNsYXNzIGZpZWxkcywgdGhpcyBzaG91bGQgYmUgbWFkZSBvcHRpb25hbC5cbiAgICovXG4gIHByb2Nlc3NDbGFzc0JvZHkoY2xhc3NJbmZvLCBjbGFzc05hbWUpIHtcbiAgICBjb25zdCB7XG4gICAgICBoZWFkZXJJbmZvLFxuICAgICAgY29uc3RydWN0b3JJbnNlcnRQb3MsXG4gICAgICBjb25zdHJ1Y3RvckluaXRpYWxpemVyU3RhdGVtZW50cyxcbiAgICAgIGZpZWxkcyxcbiAgICAgIGluc3RhbmNlSW5pdGlhbGl6ZXJOYW1lcyxcbiAgICAgIHJhbmdlc1RvUmVtb3ZlLFxuICAgIH0gPSBjbGFzc0luZm87XG4gICAgbGV0IGZpZWxkSW5kZXggPSAwO1xuICAgIGxldCByYW5nZVRvUmVtb3ZlSW5kZXggPSAwO1xuICAgIGNvbnN0IGNsYXNzQ29udGV4dElkID0gdGhpcy50b2tlbnMuY3VycmVudFRva2VuKCkuY29udGV4dElkO1xuICAgIGlmIChjbGFzc0NvbnRleHRJZCA9PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJFeHBlY3RlZCBub24tbnVsbCBjb250ZXh0IElEIG9uIGNsYXNzLlwiKTtcbiAgICB9XG4gICAgdGhpcy50b2tlbnMuY29weUV4cGVjdGVkVG9rZW4oX3R5cGVzLlRva2VuVHlwZS5icmFjZUwpO1xuICAgIGlmICh0aGlzLmlzUmVhY3RIb3RMb2FkZXJUcmFuc2Zvcm1FbmFibGVkKSB7XG4gICAgICB0aGlzLnRva2Vucy5hcHBlbmRDb2RlKFxuICAgICAgICBcIl9fcmVhY3RzdGFuZGluX19yZWdlbmVyYXRlQnlFdmFsKGtleSwgY29kZSkge3RoaXNba2V5XSA9IGV2YWwoY29kZSk7fVwiLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBuZWVkc0NvbnN0cnVjdG9ySW5pdCA9XG4gICAgICBjb25zdHJ1Y3RvckluaXRpYWxpemVyU3RhdGVtZW50cy5sZW5ndGggKyBpbnN0YW5jZUluaXRpYWxpemVyTmFtZXMubGVuZ3RoID4gMDtcblxuICAgIGlmIChjb25zdHJ1Y3Rvckluc2VydFBvcyA9PT0gbnVsbCAmJiBuZWVkc0NvbnN0cnVjdG9ySW5pdCkge1xuICAgICAgY29uc3QgY29uc3RydWN0b3JJbml0aWFsaXplcnNDb2RlID0gdGhpcy5tYWtlQ29uc3RydWN0b3JJbml0Q29kZShcbiAgICAgICAgY29uc3RydWN0b3JJbml0aWFsaXplclN0YXRlbWVudHMsXG4gICAgICAgIGluc3RhbmNlSW5pdGlhbGl6ZXJOYW1lcyxcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKTtcbiAgICAgIGlmIChoZWFkZXJJbmZvLmhhc1N1cGVyY2xhc3MpIHtcbiAgICAgICAgY29uc3QgYXJnc05hbWUgPSB0aGlzLm5hbWVNYW5hZ2VyLmNsYWltRnJlZU5hbWUoXCJhcmdzXCIpO1xuICAgICAgICB0aGlzLnRva2Vucy5hcHBlbmRDb2RlKFxuICAgICAgICAgIGBjb25zdHJ1Y3RvciguLi4ke2FyZ3NOYW1lfSkgeyBzdXBlciguLi4ke2FyZ3NOYW1lfSk7ICR7Y29uc3RydWN0b3JJbml0aWFsaXplcnNDb2RlfTsgfWAsXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnRva2Vucy5hcHBlbmRDb2RlKGBjb25zdHJ1Y3RvcigpIHsgJHtjb25zdHJ1Y3RvckluaXRpYWxpemVyc0NvZGV9OyB9YCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgd2hpbGUgKCF0aGlzLnRva2Vucy5tYXRjaGVzQ29udGV4dElkQW5kTGFiZWwoX3R5cGVzLlRva2VuVHlwZS5icmFjZVIsIGNsYXNzQ29udGV4dElkKSkge1xuICAgICAgaWYgKGZpZWxkSW5kZXggPCBmaWVsZHMubGVuZ3RoICYmIHRoaXMudG9rZW5zLmN1cnJlbnRJbmRleCgpID09PSBmaWVsZHNbZmllbGRJbmRleF0uc3RhcnQpIHtcbiAgICAgICAgbGV0IG5lZWRzQ2xvc2VCcmFjZSA9IGZhbHNlO1xuICAgICAgICBpZiAodGhpcy50b2tlbnMubWF0Y2hlczEoX3R5cGVzLlRva2VuVHlwZS5icmFja2V0TCkpIHtcbiAgICAgICAgICB0aGlzLnRva2Vucy5jb3B5VG9rZW5XaXRoUHJlZml4KGAke2ZpZWxkc1tmaWVsZEluZGV4XS5pbml0aWFsaXplck5hbWV9KCkge3RoaXNgKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnRva2Vucy5tYXRjaGVzMShfdHlwZXMuVG9rZW5UeXBlLnN0cmluZykgfHwgdGhpcy50b2tlbnMubWF0Y2hlczEoX3R5cGVzLlRva2VuVHlwZS5udW0pKSB7XG4gICAgICAgICAgdGhpcy50b2tlbnMuY29weVRva2VuV2l0aFByZWZpeChgJHtmaWVsZHNbZmllbGRJbmRleF0uaW5pdGlhbGl6ZXJOYW1lfSgpIHt0aGlzW2ApO1xuICAgICAgICAgIG5lZWRzQ2xvc2VCcmFjZSA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy50b2tlbnMuY29weVRva2VuV2l0aFByZWZpeChgJHtmaWVsZHNbZmllbGRJbmRleF0uaW5pdGlhbGl6ZXJOYW1lfSgpIHt0aGlzLmApO1xuICAgICAgICB9XG4gICAgICAgIHdoaWxlICh0aGlzLnRva2Vucy5jdXJyZW50SW5kZXgoKSA8IGZpZWxkc1tmaWVsZEluZGV4XS5lbmQpIHtcbiAgICAgICAgICBpZiAobmVlZHNDbG9zZUJyYWNlICYmIHRoaXMudG9rZW5zLmN1cnJlbnRJbmRleCgpID09PSBmaWVsZHNbZmllbGRJbmRleF0uZXF1YWxzSW5kZXgpIHtcbiAgICAgICAgICAgIHRoaXMudG9rZW5zLmFwcGVuZENvZGUoXCJdXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnByb2Nlc3NUb2tlbigpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudG9rZW5zLmFwcGVuZENvZGUoXCJ9XCIpO1xuICAgICAgICBmaWVsZEluZGV4Kys7XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICByYW5nZVRvUmVtb3ZlSW5kZXggPCByYW5nZXNUb1JlbW92ZS5sZW5ndGggJiZcbiAgICAgICAgdGhpcy50b2tlbnMuY3VycmVudEluZGV4KCkgPj0gcmFuZ2VzVG9SZW1vdmVbcmFuZ2VUb1JlbW92ZUluZGV4XS5zdGFydFxuICAgICAgKSB7XG4gICAgICAgIGlmICh0aGlzLnRva2Vucy5jdXJyZW50SW5kZXgoKSA8IHJhbmdlc1RvUmVtb3ZlW3JhbmdlVG9SZW1vdmVJbmRleF0uZW5kKSB7XG4gICAgICAgICAgdGhpcy50b2tlbnMucmVtb3ZlSW5pdGlhbFRva2VuKCk7XG4gICAgICAgIH1cbiAgICAgICAgd2hpbGUgKHRoaXMudG9rZW5zLmN1cnJlbnRJbmRleCgpIDwgcmFuZ2VzVG9SZW1vdmVbcmFuZ2VUb1JlbW92ZUluZGV4XS5lbmQpIHtcbiAgICAgICAgICB0aGlzLnRva2Vucy5yZW1vdmVUb2tlbigpO1xuICAgICAgICB9XG4gICAgICAgIHJhbmdlVG9SZW1vdmVJbmRleCsrO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnRva2Vucy5jdXJyZW50SW5kZXgoKSA9PT0gY29uc3RydWN0b3JJbnNlcnRQb3MpIHtcbiAgICAgICAgdGhpcy50b2tlbnMuY29weVRva2VuKCk7XG4gICAgICAgIGlmIChuZWVkc0NvbnN0cnVjdG9ySW5pdCkge1xuICAgICAgICAgIHRoaXMudG9rZW5zLmFwcGVuZENvZGUoXG4gICAgICAgICAgICBgOyR7dGhpcy5tYWtlQ29uc3RydWN0b3JJbml0Q29kZShcbiAgICAgICAgICAgICAgY29uc3RydWN0b3JJbml0aWFsaXplclN0YXRlbWVudHMsXG4gICAgICAgICAgICAgIGluc3RhbmNlSW5pdGlhbGl6ZXJOYW1lcyxcbiAgICAgICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICAgICAgKX07YCxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucHJvY2Vzc1Rva2VuKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnByb2Nlc3NUb2tlbigpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnRva2Vucy5jb3B5RXhwZWN0ZWRUb2tlbihfdHlwZXMuVG9rZW5UeXBlLmJyYWNlUik7XG4gIH1cblxuICBtYWtlQ29uc3RydWN0b3JJbml0Q29kZShcbiAgICBjb25zdHJ1Y3RvckluaXRpYWxpemVyU3RhdGVtZW50cyxcbiAgICBpbnN0YW5jZUluaXRpYWxpemVyTmFtZXMsXG4gICAgY2xhc3NOYW1lLFxuICApIHtcbiAgICByZXR1cm4gW1xuICAgICAgLi4uY29uc3RydWN0b3JJbml0aWFsaXplclN0YXRlbWVudHMsXG4gICAgICAuLi5pbnN0YW5jZUluaXRpYWxpemVyTmFtZXMubWFwKChuYW1lKSA9PiBgJHtjbGFzc05hbWV9LnByb3RvdHlwZS4ke25hbWV9LmNhbGwodGhpcylgKSxcbiAgICBdLmpvaW4oXCI7XCIpO1xuICB9XG5cbiAgLyoqXG4gICAqIE5vcm1hbGx5IGl0J3Mgb2sgdG8gc2ltcGx5IHJlbW92ZSB0eXBlIHRva2VucywgYnV0IHdlIG5lZWQgdG8gYmUgbW9yZSBjYXJlZnVsIHdoZW4gZGVhbGluZyB3aXRoXG4gICAqIGFycm93IGZ1bmN0aW9uIHJldHVybiB0eXBlcyBzaW5jZSB0aGV5IGNhbiBjb25mdXNlIHRoZSBwYXJzZXIuIEluIHRoYXQgY2FzZSwgd2Ugd2FudCB0byBtb3ZlXG4gICAqIHRoZSBjbG9zZS1wYXJlbiB0byB0aGUgc2FtZSBsaW5lIGFzIHRoZSBhcnJvdy5cbiAgICpcbiAgICogU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hbGFuZ3BpZXJjZS9zdWNyYXNlL2lzc3Vlcy8zOTEgZm9yIG1vcmUgZGV0YWlscy5cbiAgICovXG4gIHByb2Nlc3NQb3NzaWJsZUFycm93UGFyYW1FbmQoKSB7XG4gICAgaWYgKHRoaXMudG9rZW5zLm1hdGNoZXMyKF90eXBlcy5Ub2tlblR5cGUucGFyZW5SLCBfdHlwZXMuVG9rZW5UeXBlLmNvbG9uKSAmJiB0aGlzLnRva2Vucy50b2tlbkF0UmVsYXRpdmVJbmRleCgxKS5pc1R5cGUpIHtcbiAgICAgIGxldCBuZXh0Tm9uVHlwZUluZGV4ID0gdGhpcy50b2tlbnMuY3VycmVudEluZGV4KCkgKyAxO1xuICAgICAgLy8gTG9vayBhaGVhZCB0byBzZWUgaWYgdGhpcyBpcyBhbiBhcnJvdyBmdW5jdGlvbiBvciBzb21ldGhpbmcgZWxzZS5cbiAgICAgIHdoaWxlICh0aGlzLnRva2Vucy50b2tlbnNbbmV4dE5vblR5cGVJbmRleF0uaXNUeXBlKSB7XG4gICAgICAgIG5leHROb25UeXBlSW5kZXgrKztcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnRva2Vucy5tYXRjaGVzMUF0SW5kZXgobmV4dE5vblR5cGVJbmRleCwgX3R5cGVzLlRva2VuVHlwZS5hcnJvdykpIHtcbiAgICAgICAgdGhpcy50b2tlbnMucmVtb3ZlSW5pdGlhbFRva2VuKCk7XG4gICAgICAgIHdoaWxlICh0aGlzLnRva2Vucy5jdXJyZW50SW5kZXgoKSA8IG5leHROb25UeXBlSW5kZXgpIHtcbiAgICAgICAgICB0aGlzLnRva2Vucy5yZW1vdmVUb2tlbigpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudG9rZW5zLnJlcGxhY2VUb2tlblRyaW1taW5nTGVmdFdoaXRlc3BhY2UoXCIpID0+XCIpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEFuIGFzeW5jIGFycm93IGZ1bmN0aW9uIG1pZ2h0IGJlIG9mIHRoZSBmb3JtOlxuICAgKlxuICAgKiBhc3luYyA8XG4gICAqICAgVFxuICAgKiA+KCkgPT4ge31cbiAgICpcbiAgICogaW4gd2hpY2ggY2FzZSwgcmVtb3ZpbmcgdGhlIHR5cGUgcGFyYW1ldGVycyB3aWxsIGNhdXNlIGEgc3ludGF4IGVycm9yLiBEZXRlY3QgdGhpcyBjYXNlIGFuZFxuICAgKiBtb3ZlIHRoZSBvcGVuLXBhcmVuIGVhcmxpZXIuXG4gICAqL1xuICBwcm9jZXNzUG9zc2libGVBc3luY0Fycm93V2l0aFR5cGVQYXJhbXMoKSB7XG4gICAgaWYgKFxuICAgICAgIXRoaXMudG9rZW5zLm1hdGNoZXNDb250ZXh0dWFsKF9rZXl3b3Jkcy5Db250ZXh0dWFsS2V5d29yZC5fYXN5bmMpICYmXG4gICAgICAhdGhpcy50b2tlbnMubWF0Y2hlczEoX3R5cGVzLlRva2VuVHlwZS5fYXN5bmMpXG4gICAgKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IG5leHRUb2tlbiA9IHRoaXMudG9rZW5zLnRva2VuQXRSZWxhdGl2ZUluZGV4KDEpO1xuICAgIGlmIChuZXh0VG9rZW4udHlwZSAhPT0gX3R5cGVzLlRva2VuVHlwZS5sZXNzVGhhbiB8fCAhbmV4dFRva2VuLmlzVHlwZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGxldCBuZXh0Tm9uVHlwZUluZGV4ID0gdGhpcy50b2tlbnMuY3VycmVudEluZGV4KCkgKyAxO1xuICAgIC8vIExvb2sgYWhlYWQgdG8gc2VlIGlmIHRoaXMgaXMgYW4gYXJyb3cgZnVuY3Rpb24gb3Igc29tZXRoaW5nIGVsc2UuXG4gICAgd2hpbGUgKHRoaXMudG9rZW5zLnRva2Vuc1tuZXh0Tm9uVHlwZUluZGV4XS5pc1R5cGUpIHtcbiAgICAgIG5leHROb25UeXBlSW5kZXgrKztcbiAgICB9XG4gICAgaWYgKHRoaXMudG9rZW5zLm1hdGNoZXMxQXRJbmRleChuZXh0Tm9uVHlwZUluZGV4LCBfdHlwZXMuVG9rZW5UeXBlLnBhcmVuTCkpIHtcbiAgICAgIHRoaXMudG9rZW5zLnJlcGxhY2VUb2tlbihcImFzeW5jIChcIik7XG4gICAgICB0aGlzLnRva2Vucy5yZW1vdmVJbml0aWFsVG9rZW4oKTtcbiAgICAgIHdoaWxlICh0aGlzLnRva2Vucy5jdXJyZW50SW5kZXgoKSA8IG5leHROb25UeXBlSW5kZXgpIHtcbiAgICAgICAgdGhpcy50b2tlbnMucmVtb3ZlVG9rZW4oKTtcbiAgICAgIH1cbiAgICAgIHRoaXMudG9rZW5zLnJlbW92ZVRva2VuKCk7XG4gICAgICAvLyBXZSBhdGUgYSAoIHRva2VuLCBzbyB3ZSBuZWVkIHRvIHByb2Nlc3MgdGhlIHRva2VucyBpbiBiZXR3ZWVuIGFuZCB0aGVuIHRoZSApIHRva2VuIHNvIHRoYXRcbiAgICAgIC8vIHdlIHJlbWFpbiBiYWxhbmNlZC5cbiAgICAgIHRoaXMucHJvY2Vzc0JhbGFuY2VkQ29kZSgpO1xuICAgICAgdGhpcy5wcm9jZXNzVG9rZW4oKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcm9jZXNzUG9zc2libGVUeXBlUmFuZ2UoKSB7XG4gICAgaWYgKHRoaXMudG9rZW5zLmN1cnJlbnRUb2tlbigpLmlzVHlwZSkge1xuICAgICAgdGhpcy50b2tlbnMucmVtb3ZlSW5pdGlhbFRva2VuKCk7XG4gICAgICB3aGlsZSAodGhpcy50b2tlbnMuY3VycmVudFRva2VuKCkuaXNUeXBlKSB7XG4gICAgICAgIHRoaXMudG9rZW5zLnJlbW92ZVRva2VuKCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgc2hpZnRNYXBwaW5ncyhcbiAgICBtYXBwaW5ncyxcbiAgICBwcmVmaXhMZW5ndGgsXG4gICkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWFwcGluZ3MubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IG1hcHBpbmcgPSBtYXBwaW5nc1tpXTtcbiAgICAgIGlmIChtYXBwaW5nICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbWFwcGluZ3NbaV0gPSBtYXBwaW5nICsgcHJlZml4TGVuZ3RoO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbWFwcGluZ3M7XG4gIH1cbn0gZXhwb3J0cy5kZWZhdWx0ID0gUm9vdFRyYW5zZm9ybWVyO1xuIiwgIlwidXNlIHN0cmljdFwiO1xuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcbmV4cG9ydHMuTGluZXNBbmRDb2x1bW5zID0gdm9pZCAwO1xudmFyIExGID0gJ1xcbic7XG52YXIgQ1IgPSAnXFxyJztcbnZhciBMaW5lc0FuZENvbHVtbnMgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gTGluZXNBbmRDb2x1bW5zKHN0cmluZykge1xuICAgICAgICB0aGlzLnN0cmluZyA9IHN0cmluZztcbiAgICAgICAgdmFyIG9mZnNldHMgPSBbMF07XG4gICAgICAgIGZvciAodmFyIG9mZnNldCA9IDA7IG9mZnNldCA8IHN0cmluZy5sZW5ndGg7KSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHN0cmluZ1tvZmZzZXRdKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBMRjpcbiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IExGLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0cy5wdXNoKG9mZnNldCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgQ1I6XG4gICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSBDUi5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzdHJpbmdbb2Zmc2V0XSA9PT0gTEYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSBMRi5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0cy5wdXNoKG9mZnNldCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIG9mZnNldCsrO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9mZnNldHMgPSBvZmZzZXRzO1xuICAgIH1cbiAgICBMaW5lc0FuZENvbHVtbnMucHJvdG90eXBlLmxvY2F0aW9uRm9ySW5kZXggPSBmdW5jdGlvbiAoaW5kZXgpIHtcbiAgICAgICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+IHRoaXMuc3RyaW5nLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGxpbmUgPSAwO1xuICAgICAgICB2YXIgb2Zmc2V0cyA9IHRoaXMub2Zmc2V0cztcbiAgICAgICAgd2hpbGUgKG9mZnNldHNbbGluZSArIDFdIDw9IGluZGV4KSB7XG4gICAgICAgICAgICBsaW5lKys7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGNvbHVtbiA9IGluZGV4IC0gb2Zmc2V0c1tsaW5lXTtcbiAgICAgICAgcmV0dXJuIHsgbGluZTogbGluZSwgY29sdW1uOiBjb2x1bW4gfTtcbiAgICB9O1xuICAgIExpbmVzQW5kQ29sdW1ucy5wcm90b3R5cGUuaW5kZXhGb3JMb2NhdGlvbiA9IGZ1bmN0aW9uIChsb2NhdGlvbikge1xuICAgICAgICB2YXIgbGluZSA9IGxvY2F0aW9uLmxpbmUsIGNvbHVtbiA9IGxvY2F0aW9uLmNvbHVtbjtcbiAgICAgICAgaWYgKGxpbmUgPCAwIHx8IGxpbmUgPj0gdGhpcy5vZmZzZXRzLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbHVtbiA8IDAgfHwgY29sdW1uID4gdGhpcy5sZW5ndGhPZkxpbmUobGluZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLm9mZnNldHNbbGluZV0gKyBjb2x1bW47XG4gICAgfTtcbiAgICBMaW5lc0FuZENvbHVtbnMucHJvdG90eXBlLmxlbmd0aE9mTGluZSA9IGZ1bmN0aW9uIChsaW5lKSB7XG4gICAgICAgIHZhciBvZmZzZXQgPSB0aGlzLm9mZnNldHNbbGluZV07XG4gICAgICAgIHZhciBuZXh0T2Zmc2V0ID0gbGluZSA9PT0gdGhpcy5vZmZzZXRzLmxlbmd0aCAtIDFcbiAgICAgICAgICAgID8gdGhpcy5zdHJpbmcubGVuZ3RoXG4gICAgICAgICAgICA6IHRoaXMub2Zmc2V0c1tsaW5lICsgMV07XG4gICAgICAgIHJldHVybiBuZXh0T2Zmc2V0IC0gb2Zmc2V0O1xuICAgIH07XG4gICAgcmV0dXJuIExpbmVzQW5kQ29sdW1ucztcbn0oKSk7XG5leHBvcnRzLkxpbmVzQW5kQ29sdW1ucyA9IExpbmVzQW5kQ29sdW1ucztcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gTGluZXNBbmRDb2x1bW5zO1xuIiwgIlwidXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge3ZhbHVlOiB0cnVlfSk7IGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9dmFyIF9saW5lc2FuZGNvbHVtbnMgPSByZXF1aXJlKCdsaW5lcy1hbmQtY29sdW1ucycpOyB2YXIgX2xpbmVzYW5kY29sdW1uczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9saW5lc2FuZGNvbHVtbnMpO1xuXG5cbnZhciBfdHlwZXMgPSByZXF1aXJlKCcuLi9wYXJzZXIvdG9rZW5pemVyL3R5cGVzJyk7XG5cbiBmdW5jdGlvbiBmb3JtYXRUb2tlbnMoY29kZSwgdG9rZW5zKSB7XG4gIGlmICh0b2tlbnMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICBjb25zdCB0b2tlbktleXMgPSBPYmplY3Qua2V5cyh0b2tlbnNbMF0pLmZpbHRlcihcbiAgICAoaykgPT4gayAhPT0gXCJ0eXBlXCIgJiYgayAhPT0gXCJ2YWx1ZVwiICYmIGsgIT09IFwic3RhcnRcIiAmJiBrICE9PSBcImVuZFwiICYmIGsgIT09IFwibG9jXCIsXG4gICk7XG4gIGNvbnN0IHR5cGVLZXlzID0gT2JqZWN0LmtleXModG9rZW5zWzBdLnR5cGUpLmZpbHRlcigoaykgPT4gayAhPT0gXCJsYWJlbFwiICYmIGsgIT09IFwia2V5d29yZFwiKTtcblxuICBjb25zdCBoZWFkaW5ncyA9IFtcIkxvY2F0aW9uXCIsIFwiTGFiZWxcIiwgXCJSYXdcIiwgLi4udG9rZW5LZXlzLCAuLi50eXBlS2V5c107XG5cbiAgY29uc3QgbGluZXMgPSBuZXcgKDAsIF9saW5lc2FuZGNvbHVtbnMyLmRlZmF1bHQpKGNvZGUpO1xuICBjb25zdCByb3dzID0gW2hlYWRpbmdzLCAuLi50b2tlbnMubWFwKGdldFRva2VuQ29tcG9uZW50cyldO1xuICBjb25zdCBwYWRkaW5nID0gaGVhZGluZ3MubWFwKCgpID0+IDApO1xuICBmb3IgKGNvbnN0IGNvbXBvbmVudHMgb2Ygcm93cykge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29tcG9uZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgcGFkZGluZ1tpXSA9IE1hdGgubWF4KHBhZGRpbmdbaV0sIGNvbXBvbmVudHNbaV0ubGVuZ3RoKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJvd3NcbiAgICAubWFwKChjb21wb25lbnRzKSA9PiBjb21wb25lbnRzLm1hcCgoY29tcG9uZW50LCBpKSA9PiBjb21wb25lbnQucGFkRW5kKHBhZGRpbmdbaV0pKS5qb2luKFwiIFwiKSlcbiAgICAuam9pbihcIlxcblwiKTtcblxuICBmdW5jdGlvbiBnZXRUb2tlbkNvbXBvbmVudHModG9rZW4pIHtcbiAgICBjb25zdCByYXcgPSBjb2RlLnNsaWNlKHRva2VuLnN0YXJ0LCB0b2tlbi5lbmQpO1xuICAgIHJldHVybiBbXG4gICAgICBmb3JtYXRSYW5nZSh0b2tlbi5zdGFydCwgdG9rZW4uZW5kKSxcbiAgICAgIF90eXBlcy5mb3JtYXRUb2tlblR5cGUuY2FsbCh2b2lkIDAsIHRva2VuLnR5cGUpLFxuICAgICAgdHJ1bmNhdGUoU3RyaW5nKHJhdyksIDE0KSxcbiAgICAgIC8vIEB0cy1pZ25vcmU6IEludGVudGlvbmFsIGR5bmFtaWMgYWNjZXNzIGJ5IGtleS5cbiAgICAgIC4uLnRva2VuS2V5cy5tYXAoKGtleSkgPT4gZm9ybWF0VmFsdWUodG9rZW5ba2V5XSwga2V5KSksXG4gICAgICAvLyBAdHMtaWdub3JlOiBJbnRlbnRpb25hbCBkeW5hbWljIGFjY2VzcyBieSBrZXkuXG4gICAgICAuLi50eXBlS2V5cy5tYXAoKGtleSkgPT4gZm9ybWF0VmFsdWUodG9rZW4udHlwZVtrZXldLCBrZXkpKSxcbiAgICBdO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgZnVuY3Rpb24gZm9ybWF0VmFsdWUodmFsdWUsIGtleSkge1xuICAgIGlmICh2YWx1ZSA9PT0gdHJ1ZSkge1xuICAgICAgcmV0dXJuIGtleTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlID09PSBmYWxzZSB8fCB2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGZvcm1hdFJhbmdlKHN0YXJ0LCBlbmQpIHtcbiAgICByZXR1cm4gYCR7Zm9ybWF0UG9zKHN0YXJ0KX0tJHtmb3JtYXRQb3MoZW5kKX1gO1xuICB9XG5cbiAgZnVuY3Rpb24gZm9ybWF0UG9zKHBvcykge1xuICAgIGNvbnN0IGxvY2F0aW9uID0gbGluZXMubG9jYXRpb25Gb3JJbmRleChwb3MpO1xuICAgIGlmICghbG9jYXRpb24pIHtcbiAgICAgIHJldHVybiBcIlVua25vd25cIjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGAke2xvY2F0aW9uLmxpbmUgKyAxfToke2xvY2F0aW9uLmNvbHVtbiArIDF9YDtcbiAgICB9XG4gIH1cbn0gZXhwb3J0cy5kZWZhdWx0ID0gZm9ybWF0VG9rZW5zO1xuXG5mdW5jdGlvbiB0cnVuY2F0ZShzLCBsZW5ndGgpIHtcbiAgaWYgKHMubGVuZ3RoID4gbGVuZ3RoKSB7XG4gICAgcmV0dXJuIGAke3Muc2xpY2UoMCwgbGVuZ3RoIC0gMyl9Li4uYDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gcztcbiAgfVxufVxuIiwgIlwidXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge3ZhbHVlOiB0cnVlfSk7IGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9dmFyIF90eXBlcyA9IHJlcXVpcmUoJy4uL3BhcnNlci90b2tlbml6ZXIvdHlwZXMnKTtcblxudmFyIF9nZXRJbXBvcnRFeHBvcnRTcGVjaWZpZXJJbmZvID0gcmVxdWlyZSgnLi9nZXRJbXBvcnRFeHBvcnRTcGVjaWZpZXJJbmZvJyk7IHZhciBfZ2V0SW1wb3J0RXhwb3J0U3BlY2lmaWVySW5mbzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9nZXRJbXBvcnRFeHBvcnRTcGVjaWZpZXJJbmZvKTtcblxuLyoqXG4gKiBTcGVjaWFsIGNhc2UgY29kZSB0byBzY2FuIGZvciBpbXBvcnRlZCBuYW1lcyBpbiBFU00gVHlwZVNjcmlwdC4gV2UgbmVlZCB0byBkbyB0aGlzIHNvIHdlIGNhblxuICogcHJvcGVybHkgZ2V0IGdsb2JhbHMgc28gd2UgY2FuIGNvbXB1dGUgc2hhZG93ZWQgZ2xvYmFscy5cbiAqXG4gKiBUaGlzIGlzIHNpbWlsYXIgdG8gbG9naWMgaW4gQ0pTSW1wb3J0UHJvY2Vzc29yLCBidXQgdHJpbW1lZCBkb3duIHRvIGF2b2lkIGxvZ2ljIHdpdGggQ0pTXG4gKiByZXBsYWNlbWVudCBhbmQgZmxvdyB0eXBlIGltcG9ydHMuXG4gKi9cbiBmdW5jdGlvbiBnZXRUU0ltcG9ydGVkTmFtZXModG9rZW5zKSB7XG4gIGNvbnN0IGltcG9ydGVkTmFtZXMgPSBuZXcgU2V0KCk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdG9rZW5zLnRva2Vucy5sZW5ndGg7IGkrKykge1xuICAgIGlmIChcbiAgICAgIHRva2Vucy5tYXRjaGVzMUF0SW5kZXgoaSwgX3R5cGVzLlRva2VuVHlwZS5faW1wb3J0KSAmJlxuICAgICAgIXRva2Vucy5tYXRjaGVzM0F0SW5kZXgoaSwgX3R5cGVzLlRva2VuVHlwZS5faW1wb3J0LCBfdHlwZXMuVG9rZW5UeXBlLm5hbWUsIF90eXBlcy5Ub2tlblR5cGUuZXEpXG4gICAgKSB7XG4gICAgICBjb2xsZWN0TmFtZXNGb3JJbXBvcnQodG9rZW5zLCBpLCBpbXBvcnRlZE5hbWVzKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGltcG9ydGVkTmFtZXM7XG59IGV4cG9ydHMuZGVmYXVsdCA9IGdldFRTSW1wb3J0ZWROYW1lcztcblxuZnVuY3Rpb24gY29sbGVjdE5hbWVzRm9ySW1wb3J0KFxuICB0b2tlbnMsXG4gIGluZGV4LFxuICBpbXBvcnRlZE5hbWVzLFxuKSB7XG4gIGluZGV4Kys7XG5cbiAgaWYgKHRva2Vucy5tYXRjaGVzMUF0SW5kZXgoaW5kZXgsIF90eXBlcy5Ub2tlblR5cGUucGFyZW5MKSkge1xuICAgIC8vIER5bmFtaWMgaW1wb3J0LCBzbyBub3RoaW5nIHRvIGRvXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKHRva2Vucy5tYXRjaGVzMUF0SW5kZXgoaW5kZXgsIF90eXBlcy5Ub2tlblR5cGUubmFtZSkpIHtcbiAgICBpbXBvcnRlZE5hbWVzLmFkZCh0b2tlbnMuaWRlbnRpZmllck5hbWVBdEluZGV4KGluZGV4KSk7XG4gICAgaW5kZXgrKztcbiAgICBpZiAodG9rZW5zLm1hdGNoZXMxQXRJbmRleChpbmRleCwgX3R5cGVzLlRva2VuVHlwZS5jb21tYSkpIHtcbiAgICAgIGluZGV4Kys7XG4gICAgfVxuICB9XG5cbiAgaWYgKHRva2Vucy5tYXRjaGVzMUF0SW5kZXgoaW5kZXgsIF90eXBlcy5Ub2tlblR5cGUuc3RhcikpIHtcbiAgICAvLyAqIGFzXG4gICAgaW5kZXggKz0gMjtcbiAgICBpbXBvcnRlZE5hbWVzLmFkZCh0b2tlbnMuaWRlbnRpZmllck5hbWVBdEluZGV4KGluZGV4KSk7XG4gICAgaW5kZXgrKztcbiAgfVxuXG4gIGlmICh0b2tlbnMubWF0Y2hlczFBdEluZGV4KGluZGV4LCBfdHlwZXMuVG9rZW5UeXBlLmJyYWNlTCkpIHtcbiAgICBpbmRleCsrO1xuICAgIGNvbGxlY3ROYW1lc0Zvck5hbWVkSW1wb3J0KHRva2VucywgaW5kZXgsIGltcG9ydGVkTmFtZXMpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNvbGxlY3ROYW1lc0Zvck5hbWVkSW1wb3J0KFxuICB0b2tlbnMsXG4gIGluZGV4LFxuICBpbXBvcnRlZE5hbWVzLFxuKSB7XG4gIHdoaWxlICh0cnVlKSB7XG4gICAgaWYgKHRva2Vucy5tYXRjaGVzMUF0SW5kZXgoaW5kZXgsIF90eXBlcy5Ub2tlblR5cGUuYnJhY2VSKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHNwZWNpZmllckluZm8gPSBfZ2V0SW1wb3J0RXhwb3J0U3BlY2lmaWVySW5mbzIuZGVmYXVsdC5jYWxsKHZvaWQgMCwgdG9rZW5zLCBpbmRleCk7XG4gICAgaW5kZXggPSBzcGVjaWZpZXJJbmZvLmVuZEluZGV4O1xuICAgIGlmICghc3BlY2lmaWVySW5mby5pc1R5cGUpIHtcbiAgICAgIGltcG9ydGVkTmFtZXMuYWRkKHNwZWNpZmllckluZm8ucmlnaHROYW1lKTtcbiAgICB9XG5cbiAgICBpZiAodG9rZW5zLm1hdGNoZXMyQXRJbmRleChpbmRleCwgX3R5cGVzLlRva2VuVHlwZS5jb21tYSwgX3R5cGVzLlRva2VuVHlwZS5icmFjZVIpKSB7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIGlmICh0b2tlbnMubWF0Y2hlczFBdEluZGV4KGluZGV4LCBfdHlwZXMuVG9rZW5UeXBlLmJyYWNlUikpIHtcbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2UgaWYgKHRva2Vucy5tYXRjaGVzMUF0SW5kZXgoaW5kZXgsIF90eXBlcy5Ub2tlblR5cGUuY29tbWEpKSB7XG4gICAgICBpbmRleCsrO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgdG9rZW46ICR7SlNPTi5zdHJpbmdpZnkodG9rZW5zLnRva2Vuc1tpbmRleF0pfWApO1xuICAgIH1cbiAgfVxufVxuIiwgIlwidXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge3ZhbHVlOiB0cnVlfSk7IGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9dmFyIF9DSlNJbXBvcnRQcm9jZXNzb3IgPSByZXF1aXJlKCcuL0NKU0ltcG9ydFByb2Nlc3NvcicpOyB2YXIgX0NKU0ltcG9ydFByb2Nlc3NvcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9DSlNJbXBvcnRQcm9jZXNzb3IpO1xudmFyIF9jb21wdXRlU291cmNlTWFwID0gcmVxdWlyZSgnLi9jb21wdXRlU291cmNlTWFwJyk7IHZhciBfY29tcHV0ZVNvdXJjZU1hcDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jb21wdXRlU291cmNlTWFwKTtcbnZhciBfSGVscGVyTWFuYWdlciA9IHJlcXVpcmUoJy4vSGVscGVyTWFuYWdlcicpO1xudmFyIF9pZGVudGlmeVNoYWRvd2VkR2xvYmFscyA9IHJlcXVpcmUoJy4vaWRlbnRpZnlTaGFkb3dlZEdsb2JhbHMnKTsgdmFyIF9pZGVudGlmeVNoYWRvd2VkR2xvYmFsczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pZGVudGlmeVNoYWRvd2VkR2xvYmFscyk7XG52YXIgX05hbWVNYW5hZ2VyID0gcmVxdWlyZSgnLi9OYW1lTWFuYWdlcicpOyB2YXIgX05hbWVNYW5hZ2VyMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX05hbWVNYW5hZ2VyKTtcbnZhciBfT3B0aW9ucyA9IHJlcXVpcmUoJy4vT3B0aW9ucycpO1xuXG52YXIgX3BhcnNlciA9IHJlcXVpcmUoJy4vcGFyc2VyJyk7XG5cbnZhciBfVG9rZW5Qcm9jZXNzb3IgPSByZXF1aXJlKCcuL1Rva2VuUHJvY2Vzc29yJyk7IHZhciBfVG9rZW5Qcm9jZXNzb3IyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfVG9rZW5Qcm9jZXNzb3IpO1xudmFyIF9Sb290VHJhbnNmb3JtZXIgPSByZXF1aXJlKCcuL3RyYW5zZm9ybWVycy9Sb290VHJhbnNmb3JtZXInKTsgdmFyIF9Sb290VHJhbnNmb3JtZXIyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfUm9vdFRyYW5zZm9ybWVyKTtcbnZhciBfZm9ybWF0VG9rZW5zID0gcmVxdWlyZSgnLi91dGlsL2Zvcm1hdFRva2VucycpOyB2YXIgX2Zvcm1hdFRva2VuczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9mb3JtYXRUb2tlbnMpO1xudmFyIF9nZXRUU0ltcG9ydGVkTmFtZXMgPSByZXF1aXJlKCcuL3V0aWwvZ2V0VFNJbXBvcnRlZE5hbWVzJyk7IHZhciBfZ2V0VFNJbXBvcnRlZE5hbWVzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2dldFRTSW1wb3J0ZWROYW1lcyk7XG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuO1xuXG4gZnVuY3Rpb24gZ2V0VmVyc2lvbigpIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgcmV0dXJuIFwiMy4zNS4wXCI7XG59IGV4cG9ydHMuZ2V0VmVyc2lvbiA9IGdldFZlcnNpb247XG5cbiBmdW5jdGlvbiB0cmFuc2Zvcm0oY29kZSwgb3B0aW9ucykge1xuICBfT3B0aW9ucy52YWxpZGF0ZU9wdGlvbnMuY2FsbCh2b2lkIDAsIG9wdGlvbnMpO1xuICB0cnkge1xuICAgIGNvbnN0IHN1Y3Jhc2VDb250ZXh0ID0gZ2V0U3VjcmFzZUNvbnRleHQoY29kZSwgb3B0aW9ucyk7XG4gICAgY29uc3QgdHJhbnNmb3JtZXIgPSBuZXcgKDAsIF9Sb290VHJhbnNmb3JtZXIyLmRlZmF1bHQpKFxuICAgICAgc3VjcmFzZUNvbnRleHQsXG4gICAgICBvcHRpb25zLnRyYW5zZm9ybXMsXG4gICAgICBCb29sZWFuKG9wdGlvbnMuZW5hYmxlTGVnYWN5QmFiZWw1TW9kdWxlSW50ZXJvcCksXG4gICAgICBvcHRpb25zLFxuICAgICk7XG4gICAgY29uc3QgdHJhbnNmb3JtZXJSZXN1bHQgPSB0cmFuc2Zvcm1lci50cmFuc2Zvcm0oKTtcbiAgICBsZXQgcmVzdWx0ID0ge2NvZGU6IHRyYW5zZm9ybWVyUmVzdWx0LmNvZGV9O1xuICAgIGlmIChvcHRpb25zLnNvdXJjZU1hcE9wdGlvbnMpIHtcbiAgICAgIGlmICghb3B0aW9ucy5maWxlUGF0aCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJmaWxlUGF0aCBtdXN0IGJlIHNwZWNpZmllZCB3aGVuIGdlbmVyYXRpbmcgYSBzb3VyY2UgbWFwLlwiKTtcbiAgICAgIH1cbiAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgLi4ucmVzdWx0LFxuICAgICAgICBzb3VyY2VNYXA6IF9jb21wdXRlU291cmNlTWFwMi5kZWZhdWx0LmNhbGwodm9pZCAwLCBcbiAgICAgICAgICB0cmFuc2Zvcm1lclJlc3VsdCxcbiAgICAgICAgICBvcHRpb25zLmZpbGVQYXRoLFxuICAgICAgICAgIG9wdGlvbnMuc291cmNlTWFwT3B0aW9ucyxcbiAgICAgICAgICBjb2RlLFxuICAgICAgICAgIHN1Y3Jhc2VDb250ZXh0LnRva2VuUHJvY2Vzc29yLnRva2VucyxcbiAgICAgICAgKSxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgfSBjYXRjaCAoZSkge1xuICAgIGlmIChvcHRpb25zLmZpbGVQYXRoKSB7XG4gICAgICBlLm1lc3NhZ2UgPSBgRXJyb3IgdHJhbnNmb3JtaW5nICR7b3B0aW9ucy5maWxlUGF0aH06ICR7ZS5tZXNzYWdlfWA7XG4gICAgfVxuICAgIHRocm93IGU7XG4gIH1cbn0gZXhwb3J0cy50cmFuc2Zvcm0gPSB0cmFuc2Zvcm07XG5cbi8qKlxuICogUmV0dXJuIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBzdWNyYXNlIHRva2VucywgbW9zdGx5IHVzZWZ1bCBmb3JcbiAqIGRpYWdub3N0aWMgcHVycG9zZXMuXG4gKi9cbiBmdW5jdGlvbiBnZXRGb3JtYXR0ZWRUb2tlbnMoY29kZSwgb3B0aW9ucykge1xuICBjb25zdCB0b2tlbnMgPSBnZXRTdWNyYXNlQ29udGV4dChjb2RlLCBvcHRpb25zKS50b2tlblByb2Nlc3Nvci50b2tlbnM7XG4gIHJldHVybiBfZm9ybWF0VG9rZW5zMi5kZWZhdWx0LmNhbGwodm9pZCAwLCBjb2RlLCB0b2tlbnMpO1xufSBleHBvcnRzLmdldEZvcm1hdHRlZFRva2VucyA9IGdldEZvcm1hdHRlZFRva2VucztcblxuLyoqXG4gKiBDYWxsIGludG8gdGhlIHBhcnNlci90b2tlbml6ZXIgYW5kIGRvIHNvbWUgZnVydGhlciBwcmVwcm9jZXNzaW5nOlxuICogLSBDb21lIHVwIHdpdGggYSBzZXQgb2YgdXNlZCBuYW1lcyBzbyB0aGF0IHdlIGNhbiBhc3NpZ24gbmV3IG5hbWVzLlxuICogLSBQcmVwcm9jZXNzIGFsbCBpbXBvcnQvZXhwb3J0IHN0YXRlbWVudHMgc28gd2Uga25vdyB3aGljaCBnbG9iYWxzIHdlIGFyZSBpbnRlcmVzdGVkIGluLlxuICogLSBDb21wdXRlIHNpdHVhdGlvbnMgd2hlcmUgYW55IG9mIHRob3NlIGdsb2JhbHMgYXJlIHNoYWRvd2VkLlxuICpcbiAqIEluIHRoZSBmdXR1cmUsIHNvbWUgb2YgdGhlc2UgcHJlcHJvY2Vzc2luZyBzdGVwcyBjYW4gYmUgc2tpcHBlZCBiYXNlZCBvbiB3aGF0IGFjdHVhbCB3b3JrIGlzXG4gKiBiZWluZyBkb25lLlxuICovXG5mdW5jdGlvbiBnZXRTdWNyYXNlQ29udGV4dChjb2RlLCBvcHRpb25zKSB7XG4gIGNvbnN0IGlzSlNYRW5hYmxlZCA9IG9wdGlvbnMudHJhbnNmb3Jtcy5pbmNsdWRlcyhcImpzeFwiKTtcbiAgY29uc3QgaXNUeXBlU2NyaXB0RW5hYmxlZCA9IG9wdGlvbnMudHJhbnNmb3Jtcy5pbmNsdWRlcyhcInR5cGVzY3JpcHRcIik7XG4gIGNvbnN0IGlzRmxvd0VuYWJsZWQgPSBvcHRpb25zLnRyYW5zZm9ybXMuaW5jbHVkZXMoXCJmbG93XCIpO1xuICBjb25zdCBkaXNhYmxlRVNUcmFuc2Zvcm1zID0gb3B0aW9ucy5kaXNhYmxlRVNUcmFuc2Zvcm1zID09PSB0cnVlO1xuICBjb25zdCBmaWxlID0gX3BhcnNlci5wYXJzZS5jYWxsKHZvaWQgMCwgY29kZSwgaXNKU1hFbmFibGVkLCBpc1R5cGVTY3JpcHRFbmFibGVkLCBpc0Zsb3dFbmFibGVkKTtcbiAgY29uc3QgdG9rZW5zID0gZmlsZS50b2tlbnM7XG4gIGNvbnN0IHNjb3BlcyA9IGZpbGUuc2NvcGVzO1xuXG4gIGNvbnN0IG5hbWVNYW5hZ2VyID0gbmV3ICgwLCBfTmFtZU1hbmFnZXIyLmRlZmF1bHQpKGNvZGUsIHRva2Vucyk7XG4gIGNvbnN0IGhlbHBlck1hbmFnZXIgPSBuZXcgKDAsIF9IZWxwZXJNYW5hZ2VyLkhlbHBlck1hbmFnZXIpKG5hbWVNYW5hZ2VyKTtcbiAgY29uc3QgdG9rZW5Qcm9jZXNzb3IgPSBuZXcgKDAsIF9Ub2tlblByb2Nlc3NvcjIuZGVmYXVsdCkoXG4gICAgY29kZSxcbiAgICB0b2tlbnMsXG4gICAgaXNGbG93RW5hYmxlZCxcbiAgICBkaXNhYmxlRVNUcmFuc2Zvcm1zLFxuICAgIGhlbHBlck1hbmFnZXIsXG4gICk7XG4gIGNvbnN0IGVuYWJsZUxlZ2FjeVR5cGVTY3JpcHRNb2R1bGVJbnRlcm9wID0gQm9vbGVhbihvcHRpb25zLmVuYWJsZUxlZ2FjeVR5cGVTY3JpcHRNb2R1bGVJbnRlcm9wKTtcblxuICBsZXQgaW1wb3J0UHJvY2Vzc29yID0gbnVsbDtcbiAgaWYgKG9wdGlvbnMudHJhbnNmb3Jtcy5pbmNsdWRlcyhcImltcG9ydHNcIikpIHtcbiAgICBpbXBvcnRQcm9jZXNzb3IgPSBuZXcgKDAsIF9DSlNJbXBvcnRQcm9jZXNzb3IyLmRlZmF1bHQpKFxuICAgICAgbmFtZU1hbmFnZXIsXG4gICAgICB0b2tlblByb2Nlc3NvcixcbiAgICAgIGVuYWJsZUxlZ2FjeVR5cGVTY3JpcHRNb2R1bGVJbnRlcm9wLFxuICAgICAgb3B0aW9ucyxcbiAgICAgIG9wdGlvbnMudHJhbnNmb3Jtcy5pbmNsdWRlcyhcInR5cGVzY3JpcHRcIiksXG4gICAgICBCb29sZWFuKG9wdGlvbnMua2VlcFVudXNlZEltcG9ydHMpLFxuICAgICAgaGVscGVyTWFuYWdlcixcbiAgICApO1xuICAgIGltcG9ydFByb2Nlc3Nvci5wcmVwcm9jZXNzVG9rZW5zKCk7XG4gICAgLy8gV2UgbmVlZCB0byBtYXJrIHNoYWRvd2VkIGdsb2JhbHMgYWZ0ZXIgcHJvY2Vzc2luZyBpbXBvcnRzIHNvIHdlIGtub3cgdGhhdCB0aGUgZ2xvYmFscyBhcmUsXG4gICAgLy8gYnV0IGJlZm9yZSB0eXBlLW9ubHkgaW1wb3J0IHBydW5pbmcsIHNpbmNlIHRoYXQgcmVsaWVzIG9uIHNoYWRvd2luZyBpbmZvcm1hdGlvbi5cbiAgICBfaWRlbnRpZnlTaGFkb3dlZEdsb2JhbHMyLmRlZmF1bHQuY2FsbCh2b2lkIDAsIHRva2VuUHJvY2Vzc29yLCBzY29wZXMsIGltcG9ydFByb2Nlc3Nvci5nZXRHbG9iYWxOYW1lcygpKTtcbiAgICBpZiAob3B0aW9ucy50cmFuc2Zvcm1zLmluY2x1ZGVzKFwidHlwZXNjcmlwdFwiKSAmJiAhb3B0aW9ucy5rZWVwVW51c2VkSW1wb3J0cykge1xuICAgICAgaW1wb3J0UHJvY2Vzc29yLnBydW5lVHlwZU9ubHlJbXBvcnRzKCk7XG4gICAgfVxuICB9IGVsc2UgaWYgKG9wdGlvbnMudHJhbnNmb3Jtcy5pbmNsdWRlcyhcInR5cGVzY3JpcHRcIikgJiYgIW9wdGlvbnMua2VlcFVudXNlZEltcG9ydHMpIHtcbiAgICAvLyBTaGFkb3dlZCBnbG9iYWwgZGV0ZWN0aW9uIGlzIG5lZWRlZCBmb3IgVFMgaW1wbGljaXQgZWxpc2lvbiBvZiBpbXBvcnRlZCBuYW1lcy5cbiAgICBfaWRlbnRpZnlTaGFkb3dlZEdsb2JhbHMyLmRlZmF1bHQuY2FsbCh2b2lkIDAsIHRva2VuUHJvY2Vzc29yLCBzY29wZXMsIF9nZXRUU0ltcG9ydGVkTmFtZXMyLmRlZmF1bHQuY2FsbCh2b2lkIDAsIHRva2VuUHJvY2Vzc29yKSk7XG4gIH1cbiAgcmV0dXJuIHt0b2tlblByb2Nlc3Nvciwgc2NvcGVzLCBuYW1lTWFuYWdlciwgaW1wb3J0UHJvY2Vzc29yLCBoZWxwZXJNYW5hZ2VyfTtcbn1cbiIsICIvKiogQGxpY2Vuc2UgUmVhY3QgdjE2LjEzLjFcbiAqIHJlYWN0LWlzLnByb2R1Y3Rpb24ubWluLmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO3ZhciBiPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5mb3IsYz1iP1N5bWJvbC5mb3IoXCJyZWFjdC5lbGVtZW50XCIpOjYwMTAzLGQ9Yj9TeW1ib2wuZm9yKFwicmVhY3QucG9ydGFsXCIpOjYwMTA2LGU9Yj9TeW1ib2wuZm9yKFwicmVhY3QuZnJhZ21lbnRcIik6NjAxMDcsZj1iP1N5bWJvbC5mb3IoXCJyZWFjdC5zdHJpY3RfbW9kZVwiKTo2MDEwOCxnPWI/U3ltYm9sLmZvcihcInJlYWN0LnByb2ZpbGVyXCIpOjYwMTE0LGg9Yj9TeW1ib2wuZm9yKFwicmVhY3QucHJvdmlkZXJcIik6NjAxMDksaz1iP1N5bWJvbC5mb3IoXCJyZWFjdC5jb250ZXh0XCIpOjYwMTEwLGw9Yj9TeW1ib2wuZm9yKFwicmVhY3QuYXN5bmNfbW9kZVwiKTo2MDExMSxtPWI/U3ltYm9sLmZvcihcInJlYWN0LmNvbmN1cnJlbnRfbW9kZVwiKTo2MDExMSxuPWI/U3ltYm9sLmZvcihcInJlYWN0LmZvcndhcmRfcmVmXCIpOjYwMTEyLHA9Yj9TeW1ib2wuZm9yKFwicmVhY3Quc3VzcGVuc2VcIik6NjAxMTMscT1iP1xuU3ltYm9sLmZvcihcInJlYWN0LnN1c3BlbnNlX2xpc3RcIik6NjAxMjAscj1iP1N5bWJvbC5mb3IoXCJyZWFjdC5tZW1vXCIpOjYwMTE1LHQ9Yj9TeW1ib2wuZm9yKFwicmVhY3QubGF6eVwiKTo2MDExNix2PWI/U3ltYm9sLmZvcihcInJlYWN0LmJsb2NrXCIpOjYwMTIxLHc9Yj9TeW1ib2wuZm9yKFwicmVhY3QuZnVuZGFtZW50YWxcIik6NjAxMTcseD1iP1N5bWJvbC5mb3IoXCJyZWFjdC5yZXNwb25kZXJcIik6NjAxMTgseT1iP1N5bWJvbC5mb3IoXCJyZWFjdC5zY29wZVwiKTo2MDExOTtcbmZ1bmN0aW9uIHooYSl7aWYoXCJvYmplY3RcIj09PXR5cGVvZiBhJiZudWxsIT09YSl7dmFyIHU9YS4kJHR5cGVvZjtzd2l0Y2godSl7Y2FzZSBjOnN3aXRjaChhPWEudHlwZSxhKXtjYXNlIGw6Y2FzZSBtOmNhc2UgZTpjYXNlIGc6Y2FzZSBmOmNhc2UgcDpyZXR1cm4gYTtkZWZhdWx0OnN3aXRjaChhPWEmJmEuJCR0eXBlb2YsYSl7Y2FzZSBrOmNhc2UgbjpjYXNlIHQ6Y2FzZSByOmNhc2UgaDpyZXR1cm4gYTtkZWZhdWx0OnJldHVybiB1fX1jYXNlIGQ6cmV0dXJuIHV9fX1mdW5jdGlvbiBBKGEpe3JldHVybiB6KGEpPT09bX1leHBvcnRzLkFzeW5jTW9kZT1sO2V4cG9ydHMuQ29uY3VycmVudE1vZGU9bTtleHBvcnRzLkNvbnRleHRDb25zdW1lcj1rO2V4cG9ydHMuQ29udGV4dFByb3ZpZGVyPWg7ZXhwb3J0cy5FbGVtZW50PWM7ZXhwb3J0cy5Gb3J3YXJkUmVmPW47ZXhwb3J0cy5GcmFnbWVudD1lO2V4cG9ydHMuTGF6eT10O2V4cG9ydHMuTWVtbz1yO2V4cG9ydHMuUG9ydGFsPWQ7XG5leHBvcnRzLlByb2ZpbGVyPWc7ZXhwb3J0cy5TdHJpY3RNb2RlPWY7ZXhwb3J0cy5TdXNwZW5zZT1wO2V4cG9ydHMuaXNBc3luY01vZGU9ZnVuY3Rpb24oYSl7cmV0dXJuIEEoYSl8fHooYSk9PT1sfTtleHBvcnRzLmlzQ29uY3VycmVudE1vZGU9QTtleHBvcnRzLmlzQ29udGV4dENvbnN1bWVyPWZ1bmN0aW9uKGEpe3JldHVybiB6KGEpPT09a307ZXhwb3J0cy5pc0NvbnRleHRQcm92aWRlcj1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PWh9O2V4cG9ydHMuaXNFbGVtZW50PWZ1bmN0aW9uKGEpe3JldHVyblwib2JqZWN0XCI9PT10eXBlb2YgYSYmbnVsbCE9PWEmJmEuJCR0eXBlb2Y9PT1jfTtleHBvcnRzLmlzRm9yd2FyZFJlZj1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PW59O2V4cG9ydHMuaXNGcmFnbWVudD1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PWV9O2V4cG9ydHMuaXNMYXp5PWZ1bmN0aW9uKGEpe3JldHVybiB6KGEpPT09dH07XG5leHBvcnRzLmlzTWVtbz1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PXJ9O2V4cG9ydHMuaXNQb3J0YWw9ZnVuY3Rpb24oYSl7cmV0dXJuIHooYSk9PT1kfTtleHBvcnRzLmlzUHJvZmlsZXI9ZnVuY3Rpb24oYSl7cmV0dXJuIHooYSk9PT1nfTtleHBvcnRzLmlzU3RyaWN0TW9kZT1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PWZ9O2V4cG9ydHMuaXNTdXNwZW5zZT1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PXB9O1xuZXhwb3J0cy5pc1ZhbGlkRWxlbWVudFR5cGU9ZnVuY3Rpb24oYSl7cmV0dXJuXCJzdHJpbmdcIj09PXR5cGVvZiBhfHxcImZ1bmN0aW9uXCI9PT10eXBlb2YgYXx8YT09PWV8fGE9PT1tfHxhPT09Z3x8YT09PWZ8fGE9PT1wfHxhPT09cXx8XCJvYmplY3RcIj09PXR5cGVvZiBhJiZudWxsIT09YSYmKGEuJCR0eXBlb2Y9PT10fHxhLiQkdHlwZW9mPT09cnx8YS4kJHR5cGVvZj09PWh8fGEuJCR0eXBlb2Y9PT1rfHxhLiQkdHlwZW9mPT09bnx8YS4kJHR5cGVvZj09PXd8fGEuJCR0eXBlb2Y9PT14fHxhLiQkdHlwZW9mPT09eXx8YS4kJHR5cGVvZj09PXYpfTtleHBvcnRzLnR5cGVPZj16O1xuIiwgIi8qKiBAbGljZW5zZSBSZWFjdCB2MTYuMTMuMVxuICogcmVhY3QtaXMuZGV2ZWxvcG1lbnQuanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cblxuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gIChmdW5jdGlvbigpIHtcbid1c2Ugc3RyaWN0JztcblxuLy8gVGhlIFN5bWJvbCB1c2VkIHRvIHRhZyB0aGUgUmVhY3RFbGVtZW50LWxpa2UgdHlwZXMuIElmIHRoZXJlIGlzIG5vIG5hdGl2ZSBTeW1ib2xcbi8vIG5vciBwb2x5ZmlsbCwgdGhlbiBhIHBsYWluIG51bWJlciBpcyB1c2VkIGZvciBwZXJmb3JtYW5jZS5cbnZhciBoYXNTeW1ib2wgPSB0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nICYmIFN5bWJvbC5mb3I7XG52YXIgUkVBQ1RfRUxFTUVOVF9UWVBFID0gaGFzU3ltYm9sID8gU3ltYm9sLmZvcigncmVhY3QuZWxlbWVudCcpIDogMHhlYWM3O1xudmFyIFJFQUNUX1BPUlRBTF9UWVBFID0gaGFzU3ltYm9sID8gU3ltYm9sLmZvcigncmVhY3QucG9ydGFsJykgOiAweGVhY2E7XG52YXIgUkVBQ1RfRlJBR01FTlRfVFlQRSA9IGhhc1N5bWJvbCA/IFN5bWJvbC5mb3IoJ3JlYWN0LmZyYWdtZW50JykgOiAweGVhY2I7XG52YXIgUkVBQ1RfU1RSSUNUX01PREVfVFlQRSA9IGhhc1N5bWJvbCA/IFN5bWJvbC5mb3IoJ3JlYWN0LnN0cmljdF9tb2RlJykgOiAweGVhY2M7XG52YXIgUkVBQ1RfUFJPRklMRVJfVFlQRSA9IGhhc1N5bWJvbCA/IFN5bWJvbC5mb3IoJ3JlYWN0LnByb2ZpbGVyJykgOiAweGVhZDI7XG52YXIgUkVBQ1RfUFJPVklERVJfVFlQRSA9IGhhc1N5bWJvbCA/IFN5bWJvbC5mb3IoJ3JlYWN0LnByb3ZpZGVyJykgOiAweGVhY2Q7XG52YXIgUkVBQ1RfQ09OVEVYVF9UWVBFID0gaGFzU3ltYm9sID8gU3ltYm9sLmZvcigncmVhY3QuY29udGV4dCcpIDogMHhlYWNlOyAvLyBUT0RPOiBXZSBkb24ndCB1c2UgQXN5bmNNb2RlIG9yIENvbmN1cnJlbnRNb2RlIGFueW1vcmUuIFRoZXkgd2VyZSB0ZW1wb3Jhcnlcbi8vICh1bnN0YWJsZSkgQVBJcyB0aGF0IGhhdmUgYmVlbiByZW1vdmVkLiBDYW4gd2UgcmVtb3ZlIHRoZSBzeW1ib2xzP1xuXG52YXIgUkVBQ1RfQVNZTkNfTU9ERV9UWVBFID0gaGFzU3ltYm9sID8gU3ltYm9sLmZvcigncmVhY3QuYXN5bmNfbW9kZScpIDogMHhlYWNmO1xudmFyIFJFQUNUX0NPTkNVUlJFTlRfTU9ERV9UWVBFID0gaGFzU3ltYm9sID8gU3ltYm9sLmZvcigncmVhY3QuY29uY3VycmVudF9tb2RlJykgOiAweGVhY2Y7XG52YXIgUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRSA9IGhhc1N5bWJvbCA/IFN5bWJvbC5mb3IoJ3JlYWN0LmZvcndhcmRfcmVmJykgOiAweGVhZDA7XG52YXIgUkVBQ1RfU1VTUEVOU0VfVFlQRSA9IGhhc1N5bWJvbCA/IFN5bWJvbC5mb3IoJ3JlYWN0LnN1c3BlbnNlJykgOiAweGVhZDE7XG52YXIgUkVBQ1RfU1VTUEVOU0VfTElTVF9UWVBFID0gaGFzU3ltYm9sID8gU3ltYm9sLmZvcigncmVhY3Quc3VzcGVuc2VfbGlzdCcpIDogMHhlYWQ4O1xudmFyIFJFQUNUX01FTU9fVFlQRSA9IGhhc1N5bWJvbCA/IFN5bWJvbC5mb3IoJ3JlYWN0Lm1lbW8nKSA6IDB4ZWFkMztcbnZhciBSRUFDVF9MQVpZX1RZUEUgPSBoYXNTeW1ib2wgPyBTeW1ib2wuZm9yKCdyZWFjdC5sYXp5JykgOiAweGVhZDQ7XG52YXIgUkVBQ1RfQkxPQ0tfVFlQRSA9IGhhc1N5bWJvbCA/IFN5bWJvbC5mb3IoJ3JlYWN0LmJsb2NrJykgOiAweGVhZDk7XG52YXIgUkVBQ1RfRlVOREFNRU5UQUxfVFlQRSA9IGhhc1N5bWJvbCA/IFN5bWJvbC5mb3IoJ3JlYWN0LmZ1bmRhbWVudGFsJykgOiAweGVhZDU7XG52YXIgUkVBQ1RfUkVTUE9OREVSX1RZUEUgPSBoYXNTeW1ib2wgPyBTeW1ib2wuZm9yKCdyZWFjdC5yZXNwb25kZXInKSA6IDB4ZWFkNjtcbnZhciBSRUFDVF9TQ09QRV9UWVBFID0gaGFzU3ltYm9sID8gU3ltYm9sLmZvcigncmVhY3Quc2NvcGUnKSA6IDB4ZWFkNztcblxuZnVuY3Rpb24gaXNWYWxpZEVsZW1lbnRUeXBlKHR5cGUpIHtcbiAgcmV0dXJuIHR5cGVvZiB0eXBlID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdHlwZSA9PT0gJ2Z1bmN0aW9uJyB8fCAvLyBOb3RlOiBpdHMgdHlwZW9mIG1pZ2h0IGJlIG90aGVyIHRoYW4gJ3N5bWJvbCcgb3IgJ251bWJlcicgaWYgaXQncyBhIHBvbHlmaWxsLlxuICB0eXBlID09PSBSRUFDVF9GUkFHTUVOVF9UWVBFIHx8IHR5cGUgPT09IFJFQUNUX0NPTkNVUlJFTlRfTU9ERV9UWVBFIHx8IHR5cGUgPT09IFJFQUNUX1BST0ZJTEVSX1RZUEUgfHwgdHlwZSA9PT0gUkVBQ1RfU1RSSUNUX01PREVfVFlQRSB8fCB0eXBlID09PSBSRUFDVF9TVVNQRU5TRV9UWVBFIHx8IHR5cGUgPT09IFJFQUNUX1NVU1BFTlNFX0xJU1RfVFlQRSB8fCB0eXBlb2YgdHlwZSA9PT0gJ29iamVjdCcgJiYgdHlwZSAhPT0gbnVsbCAmJiAodHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfTEFaWV9UWVBFIHx8IHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX01FTU9fVFlQRSB8fCB0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9QUk9WSURFUl9UWVBFIHx8IHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX0NPTlRFWFRfVFlQRSB8fCB0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9GT1JXQVJEX1JFRl9UWVBFIHx8IHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX0ZVTkRBTUVOVEFMX1RZUEUgfHwgdHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfUkVTUE9OREVSX1RZUEUgfHwgdHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfU0NPUEVfVFlQRSB8fCB0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9CTE9DS19UWVBFKTtcbn1cblxuZnVuY3Rpb24gdHlwZU9mKG9iamVjdCkge1xuICBpZiAodHlwZW9mIG9iamVjdCA9PT0gJ29iamVjdCcgJiYgb2JqZWN0ICE9PSBudWxsKSB7XG4gICAgdmFyICQkdHlwZW9mID0gb2JqZWN0LiQkdHlwZW9mO1xuXG4gICAgc3dpdGNoICgkJHR5cGVvZikge1xuICAgICAgY2FzZSBSRUFDVF9FTEVNRU5UX1RZUEU6XG4gICAgICAgIHZhciB0eXBlID0gb2JqZWN0LnR5cGU7XG5cbiAgICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgICAgY2FzZSBSRUFDVF9BU1lOQ19NT0RFX1RZUEU6XG4gICAgICAgICAgY2FzZSBSRUFDVF9DT05DVVJSRU5UX01PREVfVFlQRTpcbiAgICAgICAgICBjYXNlIFJFQUNUX0ZSQUdNRU5UX1RZUEU6XG4gICAgICAgICAgY2FzZSBSRUFDVF9QUk9GSUxFUl9UWVBFOlxuICAgICAgICAgIGNhc2UgUkVBQ1RfU1RSSUNUX01PREVfVFlQRTpcbiAgICAgICAgICBjYXNlIFJFQUNUX1NVU1BFTlNFX1RZUEU6XG4gICAgICAgICAgICByZXR1cm4gdHlwZTtcblxuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB2YXIgJCR0eXBlb2ZUeXBlID0gdHlwZSAmJiB0eXBlLiQkdHlwZW9mO1xuXG4gICAgICAgICAgICBzd2l0Y2ggKCQkdHlwZW9mVHlwZSkge1xuICAgICAgICAgICAgICBjYXNlIFJFQUNUX0NPTlRFWFRfVFlQRTpcbiAgICAgICAgICAgICAgY2FzZSBSRUFDVF9GT1JXQVJEX1JFRl9UWVBFOlxuICAgICAgICAgICAgICBjYXNlIFJFQUNUX0xBWllfVFlQRTpcbiAgICAgICAgICAgICAgY2FzZSBSRUFDVF9NRU1PX1RZUEU6XG4gICAgICAgICAgICAgIGNhc2UgUkVBQ1RfUFJPVklERVJfVFlQRTpcbiAgICAgICAgICAgICAgICByZXR1cm4gJCR0eXBlb2ZUeXBlO1xuXG4gICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuICQkdHlwZW9mO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgICAgY2FzZSBSRUFDVF9QT1JUQUxfVFlQRTpcbiAgICAgICAgcmV0dXJuICQkdHlwZW9mO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59IC8vIEFzeW5jTW9kZSBpcyBkZXByZWNhdGVkIGFsb25nIHdpdGggaXNBc3luY01vZGVcblxudmFyIEFzeW5jTW9kZSA9IFJFQUNUX0FTWU5DX01PREVfVFlQRTtcbnZhciBDb25jdXJyZW50TW9kZSA9IFJFQUNUX0NPTkNVUlJFTlRfTU9ERV9UWVBFO1xudmFyIENvbnRleHRDb25zdW1lciA9IFJFQUNUX0NPTlRFWFRfVFlQRTtcbnZhciBDb250ZXh0UHJvdmlkZXIgPSBSRUFDVF9QUk9WSURFUl9UWVBFO1xudmFyIEVsZW1lbnQgPSBSRUFDVF9FTEVNRU5UX1RZUEU7XG52YXIgRm9yd2FyZFJlZiA9IFJFQUNUX0ZPUldBUkRfUkVGX1RZUEU7XG52YXIgRnJhZ21lbnQgPSBSRUFDVF9GUkFHTUVOVF9UWVBFO1xudmFyIExhenkgPSBSRUFDVF9MQVpZX1RZUEU7XG52YXIgTWVtbyA9IFJFQUNUX01FTU9fVFlQRTtcbnZhciBQb3J0YWwgPSBSRUFDVF9QT1JUQUxfVFlQRTtcbnZhciBQcm9maWxlciA9IFJFQUNUX1BST0ZJTEVSX1RZUEU7XG52YXIgU3RyaWN0TW9kZSA9IFJFQUNUX1NUUklDVF9NT0RFX1RZUEU7XG52YXIgU3VzcGVuc2UgPSBSRUFDVF9TVVNQRU5TRV9UWVBFO1xudmFyIGhhc1dhcm5lZEFib3V0RGVwcmVjYXRlZElzQXN5bmNNb2RlID0gZmFsc2U7IC8vIEFzeW5jTW9kZSBzaG91bGQgYmUgZGVwcmVjYXRlZFxuXG5mdW5jdGlvbiBpc0FzeW5jTW9kZShvYmplY3QpIHtcbiAge1xuICAgIGlmICghaGFzV2FybmVkQWJvdXREZXByZWNhdGVkSXNBc3luY01vZGUpIHtcbiAgICAgIGhhc1dhcm5lZEFib3V0RGVwcmVjYXRlZElzQXN5bmNNb2RlID0gdHJ1ZTsgLy8gVXNpbmcgY29uc29sZVsnd2FybiddIHRvIGV2YWRlIEJhYmVsIGFuZCBFU0xpbnRcblxuICAgICAgY29uc29sZVsnd2FybiddKCdUaGUgUmVhY3RJcy5pc0FzeW5jTW9kZSgpIGFsaWFzIGhhcyBiZWVuIGRlcHJlY2F0ZWQsICcgKyAnYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBSZWFjdCAxNysuIFVwZGF0ZSB5b3VyIGNvZGUgdG8gdXNlICcgKyAnUmVhY3RJcy5pc0NvbmN1cnJlbnRNb2RlKCkgaW5zdGVhZC4gSXQgaGFzIHRoZSBleGFjdCBzYW1lIEFQSS4nKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gaXNDb25jdXJyZW50TW9kZShvYmplY3QpIHx8IHR5cGVPZihvYmplY3QpID09PSBSRUFDVF9BU1lOQ19NT0RFX1RZUEU7XG59XG5mdW5jdGlvbiBpc0NvbmN1cnJlbnRNb2RlKG9iamVjdCkge1xuICByZXR1cm4gdHlwZU9mKG9iamVjdCkgPT09IFJFQUNUX0NPTkNVUlJFTlRfTU9ERV9UWVBFO1xufVxuZnVuY3Rpb24gaXNDb250ZXh0Q29uc3VtZXIob2JqZWN0KSB7XG4gIHJldHVybiB0eXBlT2Yob2JqZWN0KSA9PT0gUkVBQ1RfQ09OVEVYVF9UWVBFO1xufVxuZnVuY3Rpb24gaXNDb250ZXh0UHJvdmlkZXIob2JqZWN0KSB7XG4gIHJldHVybiB0eXBlT2Yob2JqZWN0KSA9PT0gUkVBQ1RfUFJPVklERVJfVFlQRTtcbn1cbmZ1bmN0aW9uIGlzRWxlbWVudChvYmplY3QpIHtcbiAgcmV0dXJuIHR5cGVvZiBvYmplY3QgPT09ICdvYmplY3QnICYmIG9iamVjdCAhPT0gbnVsbCAmJiBvYmplY3QuJCR0eXBlb2YgPT09IFJFQUNUX0VMRU1FTlRfVFlQRTtcbn1cbmZ1bmN0aW9uIGlzRm9yd2FyZFJlZihvYmplY3QpIHtcbiAgcmV0dXJuIHR5cGVPZihvYmplY3QpID09PSBSRUFDVF9GT1JXQVJEX1JFRl9UWVBFO1xufVxuZnVuY3Rpb24gaXNGcmFnbWVudChvYmplY3QpIHtcbiAgcmV0dXJuIHR5cGVPZihvYmplY3QpID09PSBSRUFDVF9GUkFHTUVOVF9UWVBFO1xufVxuZnVuY3Rpb24gaXNMYXp5KG9iamVjdCkge1xuICByZXR1cm4gdHlwZU9mKG9iamVjdCkgPT09IFJFQUNUX0xBWllfVFlQRTtcbn1cbmZ1bmN0aW9uIGlzTWVtbyhvYmplY3QpIHtcbiAgcmV0dXJuIHR5cGVPZihvYmplY3QpID09PSBSRUFDVF9NRU1PX1RZUEU7XG59XG5mdW5jdGlvbiBpc1BvcnRhbChvYmplY3QpIHtcbiAgcmV0dXJuIHR5cGVPZihvYmplY3QpID09PSBSRUFDVF9QT1JUQUxfVFlQRTtcbn1cbmZ1bmN0aW9uIGlzUHJvZmlsZXIob2JqZWN0KSB7XG4gIHJldHVybiB0eXBlT2Yob2JqZWN0KSA9PT0gUkVBQ1RfUFJPRklMRVJfVFlQRTtcbn1cbmZ1bmN0aW9uIGlzU3RyaWN0TW9kZShvYmplY3QpIHtcbiAgcmV0dXJuIHR5cGVPZihvYmplY3QpID09PSBSRUFDVF9TVFJJQ1RfTU9ERV9UWVBFO1xufVxuZnVuY3Rpb24gaXNTdXNwZW5zZShvYmplY3QpIHtcbiAgcmV0dXJuIHR5cGVPZihvYmplY3QpID09PSBSRUFDVF9TVVNQRU5TRV9UWVBFO1xufVxuXG5leHBvcnRzLkFzeW5jTW9kZSA9IEFzeW5jTW9kZTtcbmV4cG9ydHMuQ29uY3VycmVudE1vZGUgPSBDb25jdXJyZW50TW9kZTtcbmV4cG9ydHMuQ29udGV4dENvbnN1bWVyID0gQ29udGV4dENvbnN1bWVyO1xuZXhwb3J0cy5Db250ZXh0UHJvdmlkZXIgPSBDb250ZXh0UHJvdmlkZXI7XG5leHBvcnRzLkVsZW1lbnQgPSBFbGVtZW50O1xuZXhwb3J0cy5Gb3J3YXJkUmVmID0gRm9yd2FyZFJlZjtcbmV4cG9ydHMuRnJhZ21lbnQgPSBGcmFnbWVudDtcbmV4cG9ydHMuTGF6eSA9IExhenk7XG5leHBvcnRzLk1lbW8gPSBNZW1vO1xuZXhwb3J0cy5Qb3J0YWwgPSBQb3J0YWw7XG5leHBvcnRzLlByb2ZpbGVyID0gUHJvZmlsZXI7XG5leHBvcnRzLlN0cmljdE1vZGUgPSBTdHJpY3RNb2RlO1xuZXhwb3J0cy5TdXNwZW5zZSA9IFN1c3BlbnNlO1xuZXhwb3J0cy5pc0FzeW5jTW9kZSA9IGlzQXN5bmNNb2RlO1xuZXhwb3J0cy5pc0NvbmN1cnJlbnRNb2RlID0gaXNDb25jdXJyZW50TW9kZTtcbmV4cG9ydHMuaXNDb250ZXh0Q29uc3VtZXIgPSBpc0NvbnRleHRDb25zdW1lcjtcbmV4cG9ydHMuaXNDb250ZXh0UHJvdmlkZXIgPSBpc0NvbnRleHRQcm92aWRlcjtcbmV4cG9ydHMuaXNFbGVtZW50ID0gaXNFbGVtZW50O1xuZXhwb3J0cy5pc0ZvcndhcmRSZWYgPSBpc0ZvcndhcmRSZWY7XG5leHBvcnRzLmlzRnJhZ21lbnQgPSBpc0ZyYWdtZW50O1xuZXhwb3J0cy5pc0xhenkgPSBpc0xhenk7XG5leHBvcnRzLmlzTWVtbyA9IGlzTWVtbztcbmV4cG9ydHMuaXNQb3J0YWwgPSBpc1BvcnRhbDtcbmV4cG9ydHMuaXNQcm9maWxlciA9IGlzUHJvZmlsZXI7XG5leHBvcnRzLmlzU3RyaWN0TW9kZSA9IGlzU3RyaWN0TW9kZTtcbmV4cG9ydHMuaXNTdXNwZW5zZSA9IGlzU3VzcGVuc2U7XG5leHBvcnRzLmlzVmFsaWRFbGVtZW50VHlwZSA9IGlzVmFsaWRFbGVtZW50VHlwZTtcbmV4cG9ydHMudHlwZU9mID0gdHlwZU9mO1xuICB9KSgpO1xufVxuIiwgIid1c2Ugc3RyaWN0JztcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1pcy5wcm9kdWN0aW9uLm1pbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1pcy5kZXZlbG9wbWVudC5qcycpO1xufVxuIiwgIid1c2Ugc3RyaWN0JztcblxudmFyIHJlYWN0SXMgPSByZXF1aXJlKCdyZWFjdC1pcycpO1xuXG4vKipcbiAqIENvcHlyaWdodCAyMDE1LCBZYWhvbyEgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG52YXIgUkVBQ1RfU1RBVElDUyA9IHtcbiAgY2hpbGRDb250ZXh0VHlwZXM6IHRydWUsXG4gIGNvbnRleHRUeXBlOiB0cnVlLFxuICBjb250ZXh0VHlwZXM6IHRydWUsXG4gIGRlZmF1bHRQcm9wczogdHJ1ZSxcbiAgZGlzcGxheU5hbWU6IHRydWUsXG4gIGdldERlZmF1bHRQcm9wczogdHJ1ZSxcbiAgZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yOiB0cnVlLFxuICBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHM6IHRydWUsXG4gIG1peGluczogdHJ1ZSxcbiAgcHJvcFR5cGVzOiB0cnVlLFxuICB0eXBlOiB0cnVlXG59O1xudmFyIEtOT1dOX1NUQVRJQ1MgPSB7XG4gIG5hbWU6IHRydWUsXG4gIGxlbmd0aDogdHJ1ZSxcbiAgcHJvdG90eXBlOiB0cnVlLFxuICBjYWxsZXI6IHRydWUsXG4gIGNhbGxlZTogdHJ1ZSxcbiAgYXJndW1lbnRzOiB0cnVlLFxuICBhcml0eTogdHJ1ZVxufTtcbnZhciBGT1JXQVJEX1JFRl9TVEFUSUNTID0ge1xuICAnJCR0eXBlb2YnOiB0cnVlLFxuICByZW5kZXI6IHRydWUsXG4gIGRlZmF1bHRQcm9wczogdHJ1ZSxcbiAgZGlzcGxheU5hbWU6IHRydWUsXG4gIHByb3BUeXBlczogdHJ1ZVxufTtcbnZhciBNRU1PX1NUQVRJQ1MgPSB7XG4gICckJHR5cGVvZic6IHRydWUsXG4gIGNvbXBhcmU6IHRydWUsXG4gIGRlZmF1bHRQcm9wczogdHJ1ZSxcbiAgZGlzcGxheU5hbWU6IHRydWUsXG4gIHByb3BUeXBlczogdHJ1ZSxcbiAgdHlwZTogdHJ1ZVxufTtcbnZhciBUWVBFX1NUQVRJQ1MgPSB7fTtcblRZUEVfU1RBVElDU1tyZWFjdElzLkZvcndhcmRSZWZdID0gRk9SV0FSRF9SRUZfU1RBVElDUztcblRZUEVfU1RBVElDU1tyZWFjdElzLk1lbW9dID0gTUVNT19TVEFUSUNTO1xuXG5mdW5jdGlvbiBnZXRTdGF0aWNzKGNvbXBvbmVudCkge1xuICAvLyBSZWFjdCB2MTYuMTEgYW5kIGJlbG93XG4gIGlmIChyZWFjdElzLmlzTWVtbyhjb21wb25lbnQpKSB7XG4gICAgcmV0dXJuIE1FTU9fU1RBVElDUztcbiAgfSAvLyBSZWFjdCB2MTYuMTIgYW5kIGFib3ZlXG5cblxuICByZXR1cm4gVFlQRV9TVEFUSUNTW2NvbXBvbmVudFsnJCR0eXBlb2YnXV0gfHwgUkVBQ1RfU1RBVElDUztcbn1cblxudmFyIGRlZmluZVByb3BlcnR5ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIGdldE93blByb3BlcnR5TmFtZXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcztcbnZhciBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Y7XG52YXIgb2JqZWN0UHJvdG90eXBlID0gT2JqZWN0LnByb3RvdHlwZTtcbmZ1bmN0aW9uIGhvaXN0Tm9uUmVhY3RTdGF0aWNzKHRhcmdldENvbXBvbmVudCwgc291cmNlQ29tcG9uZW50LCBibGFja2xpc3QpIHtcbiAgaWYgKHR5cGVvZiBzb3VyY2VDb21wb25lbnQgIT09ICdzdHJpbmcnKSB7XG4gICAgLy8gZG9uJ3QgaG9pc3Qgb3ZlciBzdHJpbmcgKGh0bWwpIGNvbXBvbmVudHNcbiAgICBpZiAob2JqZWN0UHJvdG90eXBlKSB7XG4gICAgICB2YXIgaW5oZXJpdGVkQ29tcG9uZW50ID0gZ2V0UHJvdG90eXBlT2Yoc291cmNlQ29tcG9uZW50KTtcblxuICAgICAgaWYgKGluaGVyaXRlZENvbXBvbmVudCAmJiBpbmhlcml0ZWRDb21wb25lbnQgIT09IG9iamVjdFByb3RvdHlwZSkge1xuICAgICAgICBob2lzdE5vblJlYWN0U3RhdGljcyh0YXJnZXRDb21wb25lbnQsIGluaGVyaXRlZENvbXBvbmVudCwgYmxhY2tsaXN0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIga2V5cyA9IGdldE93blByb3BlcnR5TmFtZXMoc291cmNlQ29tcG9uZW50KTtcblxuICAgIGlmIChnZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHtcbiAgICAgIGtleXMgPSBrZXlzLmNvbmNhdChnZXRPd25Qcm9wZXJ0eVN5bWJvbHMoc291cmNlQ29tcG9uZW50KSk7XG4gICAgfVxuXG4gICAgdmFyIHRhcmdldFN0YXRpY3MgPSBnZXRTdGF0aWNzKHRhcmdldENvbXBvbmVudCk7XG4gICAgdmFyIHNvdXJjZVN0YXRpY3MgPSBnZXRTdGF0aWNzKHNvdXJjZUNvbXBvbmVudCk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyArK2kpIHtcbiAgICAgIHZhciBrZXkgPSBrZXlzW2ldO1xuXG4gICAgICBpZiAoIUtOT1dOX1NUQVRJQ1Nba2V5XSAmJiAhKGJsYWNrbGlzdCAmJiBibGFja2xpc3Rba2V5XSkgJiYgIShzb3VyY2VTdGF0aWNzICYmIHNvdXJjZVN0YXRpY3Nba2V5XSkgJiYgISh0YXJnZXRTdGF0aWNzICYmIHRhcmdldFN0YXRpY3Nba2V5XSkpIHtcbiAgICAgICAgdmFyIGRlc2NyaXB0b3IgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlQ29tcG9uZW50LCBrZXkpO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgLy8gQXZvaWQgZmFpbHVyZXMgZnJvbSByZWFkLW9ubHkgcHJvcGVydGllc1xuICAgICAgICAgIGRlZmluZVByb3BlcnR5KHRhcmdldENvbXBvbmVudCwga2V5LCBkZXNjcmlwdG9yKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge31cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGFyZ2V0Q29tcG9uZW50O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhvaXN0Tm9uUmVhY3RTdGF0aWNzO1xuIiwgImZ1bmN0aW9uIF9leHRlbmRzKCkge1xuICByZXR1cm4gbW9kdWxlLmV4cG9ydHMgPSBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gPyBPYmplY3QuYXNzaWduLmJpbmQoKSA6IGZ1bmN0aW9uIChuKSB7XG4gICAgZm9yICh2YXIgZSA9IDE7IGUgPCBhcmd1bWVudHMubGVuZ3RoOyBlKyspIHtcbiAgICAgIHZhciB0ID0gYXJndW1lbnRzW2VdO1xuICAgICAgZm9yICh2YXIgciBpbiB0KSAoe30pLmhhc093blByb3BlcnR5LmNhbGwodCwgcikgJiYgKG5bcl0gPSB0W3JdKTtcbiAgICB9XG4gICAgcmV0dXJuIG47XG4gIH0sIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cywgX2V4dGVuZHMuYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2V4dGVuZHMsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCAiLyoqIE5vcm1hbCBoeWRyYXRpb24gdGhhdCBhdHRhY2hlcyB0byBhIERPTSB0cmVlIGJ1dCBkb2VzIG5vdCBkaWZmIGl0LiAqL1xuZXhwb3J0IGNvbnN0IE1PREVfSFlEUkFURSA9IDEgPDwgNTtcbi8qKiBTaWduaWZpZXMgdGhpcyBWTm9kZSBzdXNwZW5kZWQgb24gdGhlIHByZXZpb3VzIHJlbmRlciAqL1xuZXhwb3J0IGNvbnN0IE1PREVfU1VTUEVOREVEID0gMSA8PCA3O1xuLyoqIEluZGljYXRlcyB0aGF0IHRoaXMgbm9kZSBuZWVkcyB0byBiZSBpbnNlcnRlZCB3aGlsZSBwYXRjaGluZyBjaGlsZHJlbiAqL1xuZXhwb3J0IGNvbnN0IElOU0VSVF9WTk9ERSA9IDEgPDwgMTY7XG4vKiogSW5kaWNhdGVzIGEgVk5vZGUgaGFzIGJlZW4gbWF0Y2hlZCB3aXRoIGFub3RoZXIgVk5vZGUgaW4gdGhlIGRpZmYgKi9cbmV4cG9ydCBjb25zdCBNQVRDSEVEID0gMSA8PCAxNztcblxuLyoqIFJlc2V0IGFsbCBtb2RlIGZsYWdzICovXG5leHBvcnQgY29uc3QgUkVTRVRfTU9ERSA9IH4oTU9ERV9IWURSQVRFIHwgTU9ERV9TVVNQRU5ERUQpO1xuXG5leHBvcnQgY29uc3QgRU1QVFlfT0JKID0gLyoqIEB0eXBlIHthbnl9ICovICh7fSk7XG5leHBvcnQgY29uc3QgRU1QVFlfQVJSID0gW107XG5leHBvcnQgY29uc3QgSVNfTk9OX0RJTUVOU0lPTkFMID1cblx0L2FjaXR8ZXgoPzpzfGd8bnxwfCQpfHJwaHxncmlkfG93c3xtbmN8bnR3fGluZVtjaF18em9vfF5vcmR8aXRlcmEvaTtcbiIsICJpbXBvcnQgeyBFTVBUWV9BUlIgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5cbmV4cG9ydCBjb25zdCBpc0FycmF5ID0gQXJyYXkuaXNBcnJheTtcblxuLyoqXG4gKiBBc3NpZ24gcHJvcGVydGllcyBmcm9tIGBwcm9wc2AgdG8gYG9iamBcbiAqIEB0ZW1wbGF0ZSBPLCBQIFRoZSBvYmogYW5kIHByb3BzIHR5cGVzXG4gKiBAcGFyYW0ge099IG9iaiBUaGUgb2JqZWN0IHRvIGNvcHkgcHJvcGVydGllcyB0b1xuICogQHBhcmFtIHtQfSBwcm9wcyBUaGUgb2JqZWN0IHRvIGNvcHkgcHJvcGVydGllcyBmcm9tXG4gKiBAcmV0dXJucyB7TyAmIFB9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NpZ24ob2JqLCBwcm9wcykge1xuXHQvLyBAdHMtZXhwZWN0LWVycm9yIFdlIGNoYW5nZSB0aGUgdHlwZSBvZiBgb2JqYCB0byBiZSBgTyAmIFBgXG5cdGZvciAobGV0IGkgaW4gcHJvcHMpIG9ialtpXSA9IHByb3BzW2ldO1xuXHRyZXR1cm4gLyoqIEB0eXBlIHtPICYgUH0gKi8gKG9iaik7XG59XG5cbi8qKlxuICogUmVtb3ZlIGEgY2hpbGQgbm9kZSBmcm9tIGl0cyBwYXJlbnQgaWYgYXR0YWNoZWQuIFRoaXMgaXMgYSB3b3JrYXJvdW5kIGZvclxuICogSUUxMSB3aGljaCBkb2Vzbid0IHN1cHBvcnQgYEVsZW1lbnQucHJvdG90eXBlLnJlbW92ZSgpYC4gVXNpbmcgdGhpcyBmdW5jdGlvblxuICogaXMgc21hbGxlciB0aGFuIGluY2x1ZGluZyBhIGRlZGljYXRlZCBwb2x5ZmlsbC5cbiAqIEBwYXJhbSB7cHJlYWN0LkNvbnRhaW5lck5vZGV9IG5vZGUgVGhlIG5vZGUgdG8gcmVtb3ZlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVOb2RlKG5vZGUpIHtcblx0aWYgKG5vZGUgJiYgbm9kZS5wYXJlbnROb2RlKSBub2RlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobm9kZSk7XG59XG5cbmV4cG9ydCBjb25zdCBzbGljZSA9IEVNUFRZX0FSUi5zbGljZTtcbiIsICJpbXBvcnQgeyBfY2F0Y2hFcnJvciB9IGZyb20gJy4vZGlmZi9jYXRjaC1lcnJvcic7XG5cbi8qKlxuICogVGhlIGBvcHRpb25gIG9iamVjdCBjYW4gcG90ZW50aWFsbHkgY29udGFpbiBjYWxsYmFjayBmdW5jdGlvbnNcbiAqIHRoYXQgYXJlIGNhbGxlZCBkdXJpbmcgdmFyaW91cyBzdGFnZXMgb2Ygb3VyIHJlbmRlcmVyLiBUaGlzIGlzIHRoZVxuICogZm91bmRhdGlvbiBvbiB3aGljaCBhbGwgb3VyIGFkZG9ucyBsaWtlIGBwcmVhY3QvZGVidWdgLCBgcHJlYWN0L2NvbXBhdGAsXG4gKiBhbmQgYHByZWFjdC9ob29rc2AgYXJlIGJhc2VkIG9uLiBTZWUgdGhlIGBPcHRpb25zYCB0eXBlIGluIGBpbnRlcm5hbC5kLnRzYFxuICogZm9yIGEgZnVsbCBsaXN0IG9mIGF2YWlsYWJsZSBvcHRpb24gaG9va3MgKG1vc3QgZWRpdG9ycy9JREVzIGFsbG93IHlvdSB0b1xuICogY3RybCtjbGljayBvciBjbWQrY2xpY2sgb24gbWFjIHRoZSB0eXBlIGRlZmluaXRpb24gYmVsb3cpLlxuICogQHR5cGUge09wdGlvbnN9XG4gKi9cbmNvbnN0IG9wdGlvbnMgPSB7XG5cdF9jYXRjaEVycm9yXG59O1xuXG5leHBvcnQgZGVmYXVsdCBvcHRpb25zO1xuIiwgImltcG9ydCB7IHNsaWNlIH0gZnJvbSAnLi91dGlsJztcbmltcG9ydCBvcHRpb25zIGZyb20gJy4vb3B0aW9ucyc7XG5cbmxldCB2bm9kZUlkID0gMDtcblxuLyoqXG4gKiBDcmVhdGUgYW4gdmlydHVhbCBub2RlICh1c2VkIGZvciBKU1gpXG4gKiBAcGFyYW0ge1ZOb2RlW1widHlwZVwiXX0gdHlwZSBUaGUgbm9kZSBuYW1lIG9yIENvbXBvbmVudCBjb25zdHJ1Y3RvciBmb3IgdGhpc1xuICogdmlydHVhbCBub2RlXG4gKiBAcGFyYW0ge29iamVjdCB8IG51bGwgfCB1bmRlZmluZWR9IFtwcm9wc10gVGhlIHByb3BlcnRpZXMgb2YgdGhlIHZpcnR1YWwgbm9kZVxuICogQHBhcmFtIHtBcnJheTxpbXBvcnQoJy4nKS5Db21wb25lbnRDaGlsZHJlbj59IFtjaGlsZHJlbl0gVGhlIGNoaWxkcmVuIG9mIHRoZVxuICogdmlydHVhbCBub2RlXG4gKiBAcmV0dXJucyB7Vk5vZGV9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVFbGVtZW50KHR5cGUsIHByb3BzLCBjaGlsZHJlbikge1xuXHRsZXQgbm9ybWFsaXplZFByb3BzID0ge30sXG5cdFx0a2V5LFxuXHRcdHJlZixcblx0XHRpO1xuXHRmb3IgKGkgaW4gcHJvcHMpIHtcblx0XHRpZiAoaSA9PSAna2V5Jykga2V5ID0gcHJvcHNbaV07XG5cdFx0ZWxzZSBpZiAoaSA9PSAncmVmJykgcmVmID0gcHJvcHNbaV07XG5cdFx0ZWxzZSBub3JtYWxpemVkUHJvcHNbaV0gPSBwcm9wc1tpXTtcblx0fVxuXG5cdGlmIChhcmd1bWVudHMubGVuZ3RoID4gMikge1xuXHRcdG5vcm1hbGl6ZWRQcm9wcy5jaGlsZHJlbiA9XG5cdFx0XHRhcmd1bWVudHMubGVuZ3RoID4gMyA/IHNsaWNlLmNhbGwoYXJndW1lbnRzLCAyKSA6IGNoaWxkcmVuO1xuXHR9XG5cblx0Ly8gSWYgYSBDb21wb25lbnQgVk5vZGUsIGNoZWNrIGZvciBhbmQgYXBwbHkgZGVmYXVsdFByb3BzXG5cdC8vIE5vdGU6IHR5cGUgbWF5IGJlIHVuZGVmaW5lZCBpbiBkZXZlbG9wbWVudCwgbXVzdCBuZXZlciBlcnJvciBoZXJlLlxuXHRpZiAodHlwZW9mIHR5cGUgPT0gJ2Z1bmN0aW9uJyAmJiB0eXBlLmRlZmF1bHRQcm9wcyAhPSBudWxsKSB7XG5cdFx0Zm9yIChpIGluIHR5cGUuZGVmYXVsdFByb3BzKSB7XG5cdFx0XHRpZiAobm9ybWFsaXplZFByb3BzW2ldID09PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0bm9ybWFsaXplZFByb3BzW2ldID0gdHlwZS5kZWZhdWx0UHJvcHNbaV07XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGNyZWF0ZVZOb2RlKHR5cGUsIG5vcm1hbGl6ZWRQcm9wcywga2V5LCByZWYsIG51bGwpO1xufVxuXG4vKipcbiAqIENyZWF0ZSBhIFZOb2RlICh1c2VkIGludGVybmFsbHkgYnkgUHJlYWN0KVxuICogQHBhcmFtIHtWTm9kZVtcInR5cGVcIl19IHR5cGUgVGhlIG5vZGUgbmFtZSBvciBDb21wb25lbnRcbiAqIENvbnN0cnVjdG9yIGZvciB0aGlzIHZpcnR1YWwgbm9kZVxuICogQHBhcmFtIHtvYmplY3QgfCBzdHJpbmcgfCBudW1iZXIgfCBudWxsfSBwcm9wcyBUaGUgcHJvcGVydGllcyBvZiB0aGlzIHZpcnR1YWwgbm9kZS5cbiAqIElmIHRoaXMgdmlydHVhbCBub2RlIHJlcHJlc2VudHMgYSB0ZXh0IG5vZGUsIHRoaXMgaXMgdGhlIHRleHQgb2YgdGhlIG5vZGUgKHN0cmluZyBvciBudW1iZXIpLlxuICogQHBhcmFtIHtzdHJpbmcgfCBudW1iZXIgfCBudWxsfSBrZXkgVGhlIGtleSBmb3IgdGhpcyB2aXJ0dWFsIG5vZGUsIHVzZWQgd2hlblxuICogZGlmZmluZyBpdCBhZ2FpbnN0IGl0cyBjaGlsZHJlblxuICogQHBhcmFtIHtWTm9kZVtcInJlZlwiXX0gcmVmIFRoZSByZWYgcHJvcGVydHkgdGhhdCB3aWxsXG4gKiByZWNlaXZlIGEgcmVmZXJlbmNlIHRvIGl0cyBjcmVhdGVkIGNoaWxkXG4gKiBAcmV0dXJucyB7Vk5vZGV9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVWTm9kZSh0eXBlLCBwcm9wcywga2V5LCByZWYsIG9yaWdpbmFsKSB7XG5cdC8vIFY4IHNlZW1zIHRvIGJlIGJldHRlciBhdCBkZXRlY3RpbmcgdHlwZSBzaGFwZXMgaWYgdGhlIG9iamVjdCBpcyBhbGxvY2F0ZWQgZnJvbSB0aGUgc2FtZSBjYWxsIHNpdGVcblx0Ly8gRG8gbm90IGlubGluZSBpbnRvIGNyZWF0ZUVsZW1lbnQgYW5kIGNvZXJjZVRvVk5vZGUhXG5cdC8qKiBAdHlwZSB7Vk5vZGV9ICovXG5cdGNvbnN0IHZub2RlID0ge1xuXHRcdHR5cGUsXG5cdFx0cHJvcHMsXG5cdFx0a2V5LFxuXHRcdHJlZixcblx0XHRfY2hpbGRyZW46IG51bGwsXG5cdFx0X3BhcmVudDogbnVsbCxcblx0XHRfZGVwdGg6IDAsXG5cdFx0X2RvbTogbnVsbCxcblx0XHQvLyBfbmV4dERvbSBtdXN0IGJlIGluaXRpYWxpemVkIHRvIHVuZGVmaW5lZCBiL2MgaXQgd2lsbCBldmVudHVhbGx5XG5cdFx0Ly8gYmUgc2V0IHRvIGRvbS5uZXh0U2libGluZyB3aGljaCBjYW4gcmV0dXJuIGBudWxsYCBhbmQgaXQgaXMgaW1wb3J0YW50XG5cdFx0Ly8gdG8gYmUgYWJsZSB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIGFuIHVuaW5pdGlhbGl6ZWQgX25leHREb20gYW5kXG5cdFx0Ly8gYSBfbmV4dERvbSB0aGF0IGhhcyBiZWVuIHNldCB0byBgbnVsbGBcblx0XHRfbmV4dERvbTogdW5kZWZpbmVkLFxuXHRcdF9jb21wb25lbnQ6IG51bGwsXG5cdFx0Y29uc3RydWN0b3I6IHVuZGVmaW5lZCxcblx0XHRfb3JpZ2luYWw6IG9yaWdpbmFsID09IG51bGwgPyArK3Zub2RlSWQgOiBvcmlnaW5hbCxcblx0XHRfaW5kZXg6IC0xLFxuXHRcdF9mbGFnczogMFxuXHR9O1xuXG5cdC8vIE9ubHkgaW52b2tlIHRoZSB2bm9kZSBob29rIGlmIHRoaXMgd2FzICpub3QqIGEgZGlyZWN0IGNvcHk6XG5cdGlmIChvcmlnaW5hbCA9PSBudWxsICYmIG9wdGlvbnMudm5vZGUgIT0gbnVsbCkgb3B0aW9ucy52bm9kZSh2bm9kZSk7XG5cblx0cmV0dXJuIHZub2RlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUmVmKCkge1xuXHRyZXR1cm4geyBjdXJyZW50OiBudWxsIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBGcmFnbWVudChwcm9wcykge1xuXHRyZXR1cm4gcHJvcHMuY2hpbGRyZW47XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgYSB0aGUgYXJndW1lbnQgaXMgYSB2YWxpZCBQcmVhY3QgVk5vZGUuXG4gKiBAcGFyYW0geyp9IHZub2RlXG4gKiBAcmV0dXJucyB7dm5vZGUgaXMgVk5vZGV9XG4gKi9cbmV4cG9ydCBjb25zdCBpc1ZhbGlkRWxlbWVudCA9IHZub2RlID0+XG5cdHZub2RlICE9IG51bGwgJiYgdm5vZGUuY29uc3RydWN0b3IgPT0gdW5kZWZpbmVkO1xuIiwgImltcG9ydCB7IGFzc2lnbiB9IGZyb20gJy4vdXRpbCc7XG5pbXBvcnQgeyBkaWZmLCBjb21taXRSb290IH0gZnJvbSAnLi9kaWZmL2luZGV4JztcbmltcG9ydCBvcHRpb25zIGZyb20gJy4vb3B0aW9ucyc7XG5pbXBvcnQgeyBGcmFnbWVudCB9IGZyb20gJy4vY3JlYXRlLWVsZW1lbnQnO1xuaW1wb3J0IHsgTU9ERV9IWURSQVRFIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuXG4vKipcbiAqIEJhc2UgQ29tcG9uZW50IGNsYXNzLiBQcm92aWRlcyBgc2V0U3RhdGUoKWAgYW5kIGBmb3JjZVVwZGF0ZSgpYCwgd2hpY2hcbiAqIHRyaWdnZXIgcmVuZGVyaW5nXG4gKiBAcGFyYW0ge29iamVjdH0gcHJvcHMgVGhlIGluaXRpYWwgY29tcG9uZW50IHByb3BzXG4gKiBAcGFyYW0ge29iamVjdH0gY29udGV4dCBUaGUgaW5pdGlhbCBjb250ZXh0IGZyb20gcGFyZW50IGNvbXBvbmVudHMnXG4gKiBnZXRDaGlsZENvbnRleHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEJhc2VDb21wb25lbnQocHJvcHMsIGNvbnRleHQpIHtcblx0dGhpcy5wcm9wcyA9IHByb3BzO1xuXHR0aGlzLmNvbnRleHQgPSBjb250ZXh0O1xufVxuXG4vKipcbiAqIFVwZGF0ZSBjb21wb25lbnQgc3RhdGUgYW5kIHNjaGVkdWxlIGEgcmUtcmVuZGVyLlxuICogQHRoaXMge0NvbXBvbmVudH1cbiAqIEBwYXJhbSB7b2JqZWN0IHwgKChzOiBvYmplY3QsIHA6IG9iamVjdCkgPT4gb2JqZWN0KX0gdXBkYXRlIEEgaGFzaCBvZiBzdGF0ZVxuICogcHJvcGVydGllcyB0byB1cGRhdGUgd2l0aCBuZXcgdmFsdWVzIG9yIGEgZnVuY3Rpb24gdGhhdCBnaXZlbiB0aGUgY3VycmVudFxuICogc3RhdGUgYW5kIHByb3BzIHJldHVybnMgYSBuZXcgcGFydGlhbCBzdGF0ZVxuICogQHBhcmFtIHsoKSA9PiB2b2lkfSBbY2FsbGJhY2tdIEEgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIG9uY2UgY29tcG9uZW50IHN0YXRlIGlzXG4gKiB1cGRhdGVkXG4gKi9cbkJhc2VDb21wb25lbnQucHJvdG90eXBlLnNldFN0YXRlID0gZnVuY3Rpb24gKHVwZGF0ZSwgY2FsbGJhY2spIHtcblx0Ly8gb25seSBjbG9uZSBzdGF0ZSB3aGVuIGNvcHlpbmcgdG8gbmV4dFN0YXRlIHRoZSBmaXJzdCB0aW1lLlxuXHRsZXQgcztcblx0aWYgKHRoaXMuX25leHRTdGF0ZSAhPSBudWxsICYmIHRoaXMuX25leHRTdGF0ZSAhPT0gdGhpcy5zdGF0ZSkge1xuXHRcdHMgPSB0aGlzLl9uZXh0U3RhdGU7XG5cdH0gZWxzZSB7XG5cdFx0cyA9IHRoaXMuX25leHRTdGF0ZSA9IGFzc2lnbih7fSwgdGhpcy5zdGF0ZSk7XG5cdH1cblxuXHRpZiAodHlwZW9mIHVwZGF0ZSA9PSAnZnVuY3Rpb24nKSB7XG5cdFx0Ly8gU29tZSBsaWJyYXJpZXMgbGlrZSBgaW1tZXJgIG1hcmsgdGhlIGN1cnJlbnQgc3RhdGUgYXMgcmVhZG9ubHksXG5cdFx0Ly8gcHJldmVudGluZyB1cyBmcm9tIG11dGF0aW5nIGl0LCBzbyB3ZSBuZWVkIHRvIGNsb25lIGl0LiBTZWUgIzI3MTZcblx0XHR1cGRhdGUgPSB1cGRhdGUoYXNzaWduKHt9LCBzKSwgdGhpcy5wcm9wcyk7XG5cdH1cblxuXHRpZiAodXBkYXRlKSB7XG5cdFx0YXNzaWduKHMsIHVwZGF0ZSk7XG5cdH1cblxuXHQvLyBTa2lwIHVwZGF0ZSBpZiB1cGRhdGVyIGZ1bmN0aW9uIHJldHVybmVkIG51bGxcblx0aWYgKHVwZGF0ZSA9PSBudWxsKSByZXR1cm47XG5cblx0aWYgKHRoaXMuX3Zub2RlKSB7XG5cdFx0aWYgKGNhbGxiYWNrKSB7XG5cdFx0XHR0aGlzLl9zdGF0ZUNhbGxiYWNrcy5wdXNoKGNhbGxiYWNrKTtcblx0XHR9XG5cdFx0ZW5xdWV1ZVJlbmRlcih0aGlzKTtcblx0fVxufTtcblxuLyoqXG4gKiBJbW1lZGlhdGVseSBwZXJmb3JtIGEgc3luY2hyb25vdXMgcmUtcmVuZGVyIG9mIHRoZSBjb21wb25lbnRcbiAqIEB0aGlzIHtDb21wb25lbnR9XG4gKiBAcGFyYW0geygpID0+IHZvaWR9IFtjYWxsYmFja10gQSBmdW5jdGlvbiB0byBiZSBjYWxsZWQgYWZ0ZXIgY29tcG9uZW50IGlzXG4gKiByZS1yZW5kZXJlZFxuICovXG5CYXNlQ29tcG9uZW50LnByb3RvdHlwZS5mb3JjZVVwZGF0ZSA9IGZ1bmN0aW9uIChjYWxsYmFjaykge1xuXHRpZiAodGhpcy5fdm5vZGUpIHtcblx0XHQvLyBTZXQgcmVuZGVyIG1vZGUgc28gdGhhdCB3ZSBjYW4gZGlmZmVyZW50aWF0ZSB3aGVyZSB0aGUgcmVuZGVyIHJlcXVlc3Rcblx0XHQvLyBpcyBjb21pbmcgZnJvbS4gV2UgbmVlZCB0aGlzIGJlY2F1c2UgZm9yY2VVcGRhdGUgc2hvdWxkIG5ldmVyIGNhbGxcblx0XHQvLyBzaG91bGRDb21wb25lbnRVcGRhdGVcblx0XHR0aGlzLl9mb3JjZSA9IHRydWU7XG5cdFx0aWYgKGNhbGxiYWNrKSB0aGlzLl9yZW5kZXJDYWxsYmFja3MucHVzaChjYWxsYmFjayk7XG5cdFx0ZW5xdWV1ZVJlbmRlcih0aGlzKTtcblx0fVxufTtcblxuLyoqXG4gKiBBY2NlcHRzIGBwcm9wc2AgYW5kIGBzdGF0ZWAsIGFuZCByZXR1cm5zIGEgbmV3IFZpcnR1YWwgRE9NIHRyZWUgdG8gYnVpbGQuXG4gKiBWaXJ0dWFsIERPTSBpcyBnZW5lcmFsbHkgY29uc3RydWN0ZWQgdmlhIFtKU1hdKGh0dHA6Ly9qYXNvbmZvcm1hdC5jb20vd3RmLWlzLWpzeCkuXG4gKiBAcGFyYW0ge29iamVjdH0gcHJvcHMgUHJvcHMgKGVnOiBKU1ggYXR0cmlidXRlcykgcmVjZWl2ZWQgZnJvbSBwYXJlbnRcbiAqIGVsZW1lbnQvY29tcG9uZW50XG4gKiBAcGFyYW0ge29iamVjdH0gc3RhdGUgVGhlIGNvbXBvbmVudCdzIGN1cnJlbnQgc3RhdGVcbiAqIEBwYXJhbSB7b2JqZWN0fSBjb250ZXh0IENvbnRleHQgb2JqZWN0LCBhcyByZXR1cm5lZCBieSB0aGUgbmVhcmVzdFxuICogYW5jZXN0b3IncyBgZ2V0Q2hpbGRDb250ZXh0KClgXG4gKiBAcmV0dXJucyB7Q29tcG9uZW50Q2hpbGRyZW4gfCB2b2lkfVxuICovXG5CYXNlQ29tcG9uZW50LnByb3RvdHlwZS5yZW5kZXIgPSBGcmFnbWVudDtcblxuLyoqXG4gKiBAcGFyYW0ge1ZOb2RlfSB2bm9kZVxuICogQHBhcmFtIHtudW1iZXIgfCBudWxsfSBbY2hpbGRJbmRleF1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldERvbVNpYmxpbmcodm5vZGUsIGNoaWxkSW5kZXgpIHtcblx0aWYgKGNoaWxkSW5kZXggPT0gbnVsbCkge1xuXHRcdC8vIFVzZSBjaGlsZEluZGV4PT1udWxsIGFzIGEgc2lnbmFsIHRvIHJlc3VtZSB0aGUgc2VhcmNoIGZyb20gdGhlIHZub2RlJ3Mgc2libGluZ1xuXHRcdHJldHVybiB2bm9kZS5fcGFyZW50XG5cdFx0XHQ/IGdldERvbVNpYmxpbmcodm5vZGUuX3BhcmVudCwgdm5vZGUuX2luZGV4ICsgMSlcblx0XHRcdDogbnVsbDtcblx0fVxuXG5cdGxldCBzaWJsaW5nO1xuXHRmb3IgKDsgY2hpbGRJbmRleCA8IHZub2RlLl9jaGlsZHJlbi5sZW5ndGg7IGNoaWxkSW5kZXgrKykge1xuXHRcdHNpYmxpbmcgPSB2bm9kZS5fY2hpbGRyZW5bY2hpbGRJbmRleF07XG5cblx0XHRpZiAoc2libGluZyAhPSBudWxsICYmIHNpYmxpbmcuX2RvbSAhPSBudWxsKSB7XG5cdFx0XHQvLyBTaW5jZSB1cGRhdGVQYXJlbnREb21Qb2ludGVycyBrZWVwcyBfZG9tIHBvaW50ZXIgY29ycmVjdCxcblx0XHRcdC8vIHdlIGNhbiByZWx5IG9uIF9kb20gdG8gdGVsbCB1cyBpZiB0aGlzIHN1YnRyZWUgY29udGFpbnMgYVxuXHRcdFx0Ly8gcmVuZGVyZWQgRE9NIG5vZGUsIGFuZCB3aGF0IHRoZSBmaXJzdCByZW5kZXJlZCBET00gbm9kZSBpc1xuXHRcdFx0cmV0dXJuIHNpYmxpbmcuX2RvbTtcblx0XHR9XG5cdH1cblxuXHQvLyBJZiB3ZSBnZXQgaGVyZSwgd2UgaGF2ZSBub3QgZm91bmQgYSBET00gbm9kZSBpbiB0aGlzIHZub2RlJ3MgY2hpbGRyZW4uXG5cdC8vIFdlIG11c3QgcmVzdW1lIGZyb20gdGhpcyB2bm9kZSdzIHNpYmxpbmcgKGluIGl0J3MgcGFyZW50IF9jaGlsZHJlbiBhcnJheSlcblx0Ly8gT25seSBjbGltYiB1cCBhbmQgc2VhcmNoIHRoZSBwYXJlbnQgaWYgd2UgYXJlbid0IHNlYXJjaGluZyB0aHJvdWdoIGEgRE9NXG5cdC8vIFZOb2RlIChtZWFuaW5nIHdlIHJlYWNoZWQgdGhlIERPTSBwYXJlbnQgb2YgdGhlIG9yaWdpbmFsIHZub2RlIHRoYXQgYmVnYW5cblx0Ly8gdGhlIHNlYXJjaClcblx0cmV0dXJuIHR5cGVvZiB2bm9kZS50eXBlID09ICdmdW5jdGlvbicgPyBnZXREb21TaWJsaW5nKHZub2RlKSA6IG51bGw7XG59XG5cbi8qKlxuICogVHJpZ2dlciBpbi1wbGFjZSByZS1yZW5kZXJpbmcgb2YgYSBjb21wb25lbnQuXG4gKiBAcGFyYW0ge0NvbXBvbmVudH0gY29tcG9uZW50IFRoZSBjb21wb25lbnQgdG8gcmVyZW5kZXJcbiAqL1xuZnVuY3Rpb24gcmVuZGVyQ29tcG9uZW50KGNvbXBvbmVudCkge1xuXHRsZXQgb2xkVk5vZGUgPSBjb21wb25lbnQuX3Zub2RlLFxuXHRcdG9sZERvbSA9IG9sZFZOb2RlLl9kb20sXG5cdFx0Y29tbWl0UXVldWUgPSBbXSxcblx0XHRyZWZRdWV1ZSA9IFtdO1xuXG5cdGlmIChjb21wb25lbnQuX3BhcmVudERvbSkge1xuXHRcdGNvbnN0IG5ld1ZOb2RlID0gYXNzaWduKHt9LCBvbGRWTm9kZSk7XG5cdFx0bmV3Vk5vZGUuX29yaWdpbmFsID0gb2xkVk5vZGUuX29yaWdpbmFsICsgMTtcblx0XHRpZiAob3B0aW9ucy52bm9kZSkgb3B0aW9ucy52bm9kZShuZXdWTm9kZSk7XG5cblx0XHRkaWZmKFxuXHRcdFx0Y29tcG9uZW50Ll9wYXJlbnREb20sXG5cdFx0XHRuZXdWTm9kZSxcblx0XHRcdG9sZFZOb2RlLFxuXHRcdFx0Y29tcG9uZW50Ll9nbG9iYWxDb250ZXh0LFxuXHRcdFx0Y29tcG9uZW50Ll9wYXJlbnREb20ubmFtZXNwYWNlVVJJLFxuXHRcdFx0b2xkVk5vZGUuX2ZsYWdzICYgTU9ERV9IWURSQVRFID8gW29sZERvbV0gOiBudWxsLFxuXHRcdFx0Y29tbWl0UXVldWUsXG5cdFx0XHRvbGREb20gPT0gbnVsbCA/IGdldERvbVNpYmxpbmcob2xkVk5vZGUpIDogb2xkRG9tLFxuXHRcdFx0ISEob2xkVk5vZGUuX2ZsYWdzICYgTU9ERV9IWURSQVRFKSxcblx0XHRcdHJlZlF1ZXVlXG5cdFx0KTtcblxuXHRcdG5ld1ZOb2RlLl9vcmlnaW5hbCA9IG9sZFZOb2RlLl9vcmlnaW5hbDtcblx0XHRuZXdWTm9kZS5fcGFyZW50Ll9jaGlsZHJlbltuZXdWTm9kZS5faW5kZXhdID0gbmV3Vk5vZGU7XG5cdFx0Y29tbWl0Um9vdChjb21taXRRdWV1ZSwgbmV3Vk5vZGUsIHJlZlF1ZXVlKTtcblxuXHRcdGlmIChuZXdWTm9kZS5fZG9tICE9IG9sZERvbSkge1xuXHRcdFx0dXBkYXRlUGFyZW50RG9tUG9pbnRlcnMobmV3Vk5vZGUpO1xuXHRcdH1cblx0fVxufVxuXG4vKipcbiAqIEBwYXJhbSB7Vk5vZGV9IHZub2RlXG4gKi9cbmZ1bmN0aW9uIHVwZGF0ZVBhcmVudERvbVBvaW50ZXJzKHZub2RlKSB7XG5cdGlmICgodm5vZGUgPSB2bm9kZS5fcGFyZW50KSAhPSBudWxsICYmIHZub2RlLl9jb21wb25lbnQgIT0gbnVsbCkge1xuXHRcdHZub2RlLl9kb20gPSB2bm9kZS5fY29tcG9uZW50LmJhc2UgPSBudWxsO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgdm5vZGUuX2NoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRsZXQgY2hpbGQgPSB2bm9kZS5fY2hpbGRyZW5baV07XG5cdFx0XHRpZiAoY2hpbGQgIT0gbnVsbCAmJiBjaGlsZC5fZG9tICE9IG51bGwpIHtcblx0XHRcdFx0dm5vZGUuX2RvbSA9IHZub2RlLl9jb21wb25lbnQuYmFzZSA9IGNoaWxkLl9kb207XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiB1cGRhdGVQYXJlbnREb21Qb2ludGVycyh2bm9kZSk7XG5cdH1cbn1cblxuLyoqXG4gKiBUaGUgcmVuZGVyIHF1ZXVlXG4gKiBAdHlwZSB7QXJyYXk8Q29tcG9uZW50Pn1cbiAqL1xubGV0IHJlcmVuZGVyUXVldWUgPSBbXTtcblxuLypcbiAqIFRoZSB2YWx1ZSBvZiBgQ29tcG9uZW50LmRlYm91bmNlYCBtdXN0IGFzeW5jaHJvbm91c2x5IGludm9rZSB0aGUgcGFzc2VkIGluIGNhbGxiYWNrLiBJdCBpc1xuICogaW1wb3J0YW50IHRoYXQgY29udHJpYnV0b3JzIHRvIFByZWFjdCBjYW4gY29uc2lzdGVudGx5IHJlYXNvbiBhYm91dCB3aGF0IGNhbGxzIHRvIGBzZXRTdGF0ZWAsIGV0Yy5cbiAqIGRvLCBhbmQgd2hlbiB0aGVpciBlZmZlY3RzIHdpbGwgYmUgYXBwbGllZC4gU2VlIHRoZSBsaW5rcyBiZWxvdyBmb3Igc29tZSBmdXJ0aGVyIHJlYWRpbmcgb24gZGVzaWduaW5nXG4gKiBhc3luY2hyb25vdXMgQVBJcy5cbiAqICogW0Rlc2lnbmluZyBBUElzIGZvciBBc3luY2hyb255XShodHRwczovL2Jsb2cuaXpzLm1lLzIwMTMvMDgvZGVzaWduaW5nLWFwaXMtZm9yLWFzeW5jaHJvbnkpXG4gKiAqIFtDYWxsYmFja3Mgc3luY2hyb25vdXMgYW5kIGFzeW5jaHJvbm91c10oaHR0cHM6Ly9ibG9nLm9tZXRlci5jb20vMjAxMS8wNy8yNC9jYWxsYmFja3Mtc3luY2hyb25vdXMtYW5kLWFzeW5jaHJvbm91cy8pXG4gKi9cblxubGV0IHByZXZEZWJvdW5jZTtcblxuY29uc3QgZGVmZXIgPVxuXHR0eXBlb2YgUHJvbWlzZSA9PSAnZnVuY3Rpb24nXG5cdFx0PyBQcm9taXNlLnByb3RvdHlwZS50aGVuLmJpbmQoUHJvbWlzZS5yZXNvbHZlKCkpXG5cdFx0OiBzZXRUaW1lb3V0O1xuXG4vKipcbiAqIEVucXVldWUgYSByZXJlbmRlciBvZiBhIGNvbXBvbmVudFxuICogQHBhcmFtIHtDb21wb25lbnR9IGMgVGhlIGNvbXBvbmVudCB0byByZXJlbmRlclxuICovXG5leHBvcnQgZnVuY3Rpb24gZW5xdWV1ZVJlbmRlcihjKSB7XG5cdGlmIChcblx0XHQoIWMuX2RpcnR5ICYmXG5cdFx0XHQoYy5fZGlydHkgPSB0cnVlKSAmJlxuXHRcdFx0cmVyZW5kZXJRdWV1ZS5wdXNoKGMpICYmXG5cdFx0XHQhcHJvY2Vzcy5fcmVyZW5kZXJDb3VudCsrKSB8fFxuXHRcdHByZXZEZWJvdW5jZSAhPT0gb3B0aW9ucy5kZWJvdW5jZVJlbmRlcmluZ1xuXHQpIHtcblx0XHRwcmV2RGVib3VuY2UgPSBvcHRpb25zLmRlYm91bmNlUmVuZGVyaW5nO1xuXHRcdChwcmV2RGVib3VuY2UgfHwgZGVmZXIpKHByb2Nlc3MpO1xuXHR9XG59XG5cbi8qKlxuICogQHBhcmFtIHtDb21wb25lbnR9IGFcbiAqIEBwYXJhbSB7Q29tcG9uZW50fSBiXG4gKi9cbmNvbnN0IGRlcHRoU29ydCA9IChhLCBiKSA9PiBhLl92bm9kZS5fZGVwdGggLSBiLl92bm9kZS5fZGVwdGg7XG5cbi8qKiBGbHVzaCB0aGUgcmVuZGVyIHF1ZXVlIGJ5IHJlcmVuZGVyaW5nIGFsbCBxdWV1ZWQgY29tcG9uZW50cyAqL1xuZnVuY3Rpb24gcHJvY2VzcygpIHtcblx0bGV0IGM7XG5cdHJlcmVuZGVyUXVldWUuc29ydChkZXB0aFNvcnQpO1xuXHQvLyBEb24ndCB1cGRhdGUgYHJlbmRlckNvdW50YCB5ZXQuIEtlZXAgaXRzIHZhbHVlIG5vbi16ZXJvIHRvIHByZXZlbnQgdW5uZWNlc3Nhcnlcblx0Ly8gcHJvY2VzcygpIGNhbGxzIGZyb20gZ2V0dGluZyBzY2hlZHVsZWQgd2hpbGUgYHF1ZXVlYCBpcyBzdGlsbCBiZWluZyBjb25zdW1lZC5cblx0d2hpbGUgKChjID0gcmVyZW5kZXJRdWV1ZS5zaGlmdCgpKSkge1xuXHRcdGlmIChjLl9kaXJ0eSkge1xuXHRcdFx0bGV0IHJlbmRlclF1ZXVlTGVuZ3RoID0gcmVyZW5kZXJRdWV1ZS5sZW5ndGg7XG5cdFx0XHRyZW5kZXJDb21wb25lbnQoYyk7XG5cdFx0XHRpZiAocmVyZW5kZXJRdWV1ZS5sZW5ndGggPiByZW5kZXJRdWV1ZUxlbmd0aCkge1xuXHRcdFx0XHQvLyBXaGVuIGkuZS4gcmVyZW5kZXJpbmcgYSBwcm92aWRlciBhZGRpdGlvbmFsIG5ldyBpdGVtcyBjYW4gYmUgaW5qZWN0ZWQsIHdlIHdhbnQgdG9cblx0XHRcdFx0Ly8ga2VlcCB0aGUgb3JkZXIgZnJvbSB0b3AgdG8gYm90dG9tIHdpdGggdGhvc2UgbmV3IGl0ZW1zIHNvIHdlIGNhbiBoYW5kbGUgdGhlbSBpbiBhXG5cdFx0XHRcdC8vIHNpbmdsZSBwYXNzXG5cdFx0XHRcdHJlcmVuZGVyUXVldWUuc29ydChkZXB0aFNvcnQpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRwcm9jZXNzLl9yZXJlbmRlckNvdW50ID0gMDtcbn1cblxucHJvY2Vzcy5fcmVyZW5kZXJDb3VudCA9IDA7XG4iLCAiaW1wb3J0IHsgSVNfTk9OX0RJTUVOU0lPTkFMIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCBvcHRpb25zIGZyb20gJy4uL29wdGlvbnMnO1xuXG5mdW5jdGlvbiBzZXRTdHlsZShzdHlsZSwga2V5LCB2YWx1ZSkge1xuXHRpZiAoa2V5WzBdID09PSAnLScpIHtcblx0XHRzdHlsZS5zZXRQcm9wZXJ0eShrZXksIHZhbHVlID09IG51bGwgPyAnJyA6IHZhbHVlKTtcblx0fSBlbHNlIGlmICh2YWx1ZSA9PSBudWxsKSB7XG5cdFx0c3R5bGVba2V5XSA9ICcnO1xuXHR9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSAhPSAnbnVtYmVyJyB8fCBJU19OT05fRElNRU5TSU9OQUwudGVzdChrZXkpKSB7XG5cdFx0c3R5bGVba2V5XSA9IHZhbHVlO1xuXHR9IGVsc2Uge1xuXHRcdHN0eWxlW2tleV0gPSB2YWx1ZSArICdweCc7XG5cdH1cbn1cblxuLy8gQSBsb2dpY2FsIGNsb2NrIHRvIHNvbHZlIGlzc3VlcyBsaWtlIGh0dHBzOi8vZ2l0aHViLmNvbS9wcmVhY3Rqcy9wcmVhY3QvaXNzdWVzLzM5MjcuXG4vLyBXaGVuIHRoZSBET00gcGVyZm9ybXMgYW4gZXZlbnQgaXQgbGVhdmVzIG1pY3JvLXRpY2tzIGluIGJldHdlZW4gYnViYmxpbmcgdXAgd2hpY2ggbWVhbnMgdGhhdFxuLy8gYW4gZXZlbnQgY2FuIHRyaWdnZXIgb24gYSBuZXdseSByZWF0ZWQgRE9NLW5vZGUgd2hpbGUgdGhlIGV2ZW50IGJ1YmJsZXMgdXAuXG4vL1xuLy8gT3JpZ2luYWxseSBpbnNwaXJlZCBieSBWdWVcbi8vIChodHRwczovL2dpdGh1Yi5jb20vdnVlanMvY29yZS9ibG9iL2NhZWI4YTY4ODExYTFiMGY3OS9wYWNrYWdlcy9ydW50aW1lLWRvbS9zcmMvbW9kdWxlcy9ldmVudHMudHMjTDkwLUwxMDEpLFxuLy8gYnV0IG1vZGlmaWVkIHRvIHVzZSBhIGxvZ2ljYWwgY2xvY2sgaW5zdGVhZCBvZiBEYXRlLm5vdygpIGluIGNhc2UgZXZlbnQgaGFuZGxlcnMgZ2V0IGF0dGFjaGVkXG4vLyBhbmQgZXZlbnRzIGdldCBkaXNwYXRjaGVkIGR1cmluZyB0aGUgc2FtZSBtaWxsaXNlY29uZC5cbi8vXG4vLyBUaGUgY2xvY2sgaXMgaW5jcmVtZW50ZWQgYWZ0ZXIgZWFjaCBuZXcgZXZlbnQgZGlzcGF0Y2guIFRoaXMgYWxsb3dzIDEgMDAwIDAwMCBuZXcgZXZlbnRzXG4vLyBwZXIgc2Vjb25kIGZvciBvdmVyIDI4MCB5ZWFycyBiZWZvcmUgdGhlIHZhbHVlIHJlYWNoZXMgTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIgKDIqKjUzIC0gMSkuXG5sZXQgZXZlbnRDbG9jayA9IDA7XG5cbi8qKlxuICogU2V0IGEgcHJvcGVydHkgdmFsdWUgb24gYSBET00gbm9kZVxuICogQHBhcmFtIHtQcmVhY3RFbGVtZW50fSBkb20gVGhlIERPTSBub2RlIHRvIG1vZGlmeVxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5IHRvIHNldFxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0IHRoZSBwcm9wZXJ0eSB0b1xuICogQHBhcmFtIHsqfSBvbGRWYWx1ZSBUaGUgb2xkIHZhbHVlIHRoZSBwcm9wZXJ0eSBoYWRcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lc3BhY2UgV2hldGhlciBvciBub3QgdGhpcyBET00gbm9kZSBpcyBhbiBTVkcgbm9kZSBvciBub3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldFByb3BlcnR5KGRvbSwgbmFtZSwgdmFsdWUsIG9sZFZhbHVlLCBuYW1lc3BhY2UpIHtcblx0bGV0IHVzZUNhcHR1cmU7XG5cblx0bzogaWYgKG5hbWUgPT09ICdzdHlsZScpIHtcblx0XHRpZiAodHlwZW9mIHZhbHVlID09ICdzdHJpbmcnKSB7XG5cdFx0XHRkb20uc3R5bGUuY3NzVGV4dCA9IHZhbHVlO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRpZiAodHlwZW9mIG9sZFZhbHVlID09ICdzdHJpbmcnKSB7XG5cdFx0XHRcdGRvbS5zdHlsZS5jc3NUZXh0ID0gb2xkVmFsdWUgPSAnJztcblx0XHRcdH1cblxuXHRcdFx0aWYgKG9sZFZhbHVlKSB7XG5cdFx0XHRcdGZvciAobmFtZSBpbiBvbGRWYWx1ZSkge1xuXHRcdFx0XHRcdGlmICghKHZhbHVlICYmIG5hbWUgaW4gdmFsdWUpKSB7XG5cdFx0XHRcdFx0XHRzZXRTdHlsZShkb20uc3R5bGUsIG5hbWUsICcnKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0aWYgKHZhbHVlKSB7XG5cdFx0XHRcdGZvciAobmFtZSBpbiB2YWx1ZSkge1xuXHRcdFx0XHRcdGlmICghb2xkVmFsdWUgfHwgdmFsdWVbbmFtZV0gIT09IG9sZFZhbHVlW25hbWVdKSB7XG5cdFx0XHRcdFx0XHRzZXRTdHlsZShkb20uc3R5bGUsIG5hbWUsIHZhbHVlW25hbWVdKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblx0Ly8gQmVuY2htYXJrIGZvciBjb21wYXJpc29uOiBodHRwczovL2VzYmVuY2guY29tL2JlbmNoLzU3NGM5NTRiZGI5NjViOWEwMDk2NWFjNlxuXHRlbHNlIGlmIChuYW1lWzBdID09PSAnbycgJiYgbmFtZVsxXSA9PT0gJ24nKSB7XG5cdFx0dXNlQ2FwdHVyZSA9XG5cdFx0XHRuYW1lICE9PSAobmFtZSA9IG5hbWUucmVwbGFjZSgvKFBvaW50ZXJDYXB0dXJlKSR8Q2FwdHVyZSQvaSwgJyQxJykpO1xuXG5cdFx0Ly8gSW5mZXIgY29ycmVjdCBjYXNpbmcgZm9yIERPTSBidWlsdC1pbiBldmVudHM6XG5cdFx0aWYgKFxuXHRcdFx0bmFtZS50b0xvd2VyQ2FzZSgpIGluIGRvbSB8fFxuXHRcdFx0bmFtZSA9PT0gJ29uRm9jdXNPdXQnIHx8XG5cdFx0XHRuYW1lID09PSAnb25Gb2N1c0luJ1xuXHRcdClcblx0XHRcdG5hbWUgPSBuYW1lLnRvTG93ZXJDYXNlKCkuc2xpY2UoMik7XG5cdFx0ZWxzZSBuYW1lID0gbmFtZS5zbGljZSgyKTtcblxuXHRcdGlmICghZG9tLl9saXN0ZW5lcnMpIGRvbS5fbGlzdGVuZXJzID0ge307XG5cdFx0ZG9tLl9saXN0ZW5lcnNbbmFtZSArIHVzZUNhcHR1cmVdID0gdmFsdWU7XG5cblx0XHRpZiAodmFsdWUpIHtcblx0XHRcdGlmICghb2xkVmFsdWUpIHtcblx0XHRcdFx0dmFsdWUuX2F0dGFjaGVkID0gZXZlbnRDbG9jaztcblx0XHRcdFx0ZG9tLmFkZEV2ZW50TGlzdGVuZXIoXG5cdFx0XHRcdFx0bmFtZSxcblx0XHRcdFx0XHR1c2VDYXB0dXJlID8gZXZlbnRQcm94eUNhcHR1cmUgOiBldmVudFByb3h5LFxuXHRcdFx0XHRcdHVzZUNhcHR1cmVcblx0XHRcdFx0KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHZhbHVlLl9hdHRhY2hlZCA9IG9sZFZhbHVlLl9hdHRhY2hlZDtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0ZG9tLnJlbW92ZUV2ZW50TGlzdGVuZXIoXG5cdFx0XHRcdG5hbWUsXG5cdFx0XHRcdHVzZUNhcHR1cmUgPyBldmVudFByb3h5Q2FwdHVyZSA6IGV2ZW50UHJveHksXG5cdFx0XHRcdHVzZUNhcHR1cmVcblx0XHRcdCk7XG5cdFx0fVxuXHR9IGVsc2Uge1xuXHRcdGlmIChuYW1lc3BhY2UgPT0gJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJykge1xuXHRcdFx0Ly8gTm9ybWFsaXplIGluY29ycmVjdCBwcm9wIHVzYWdlIGZvciBTVkc6XG5cdFx0XHQvLyAtIHhsaW5rOmhyZWYgLyB4bGlua0hyZWYgLS0+IGhyZWYgKHhsaW5rOmhyZWYgd2FzIHJlbW92ZWQgZnJvbSBTVkcgYW5kIGlzbid0IG5lZWRlZClcblx0XHRcdC8vIC0gY2xhc3NOYW1lIC0tPiBjbGFzc1xuXHRcdFx0bmFtZSA9IG5hbWUucmVwbGFjZSgveGxpbmsoSHw6aCkvLCAnaCcpLnJlcGxhY2UoL3NOYW1lJC8sICdzJyk7XG5cdFx0fSBlbHNlIGlmIChcblx0XHRcdG5hbWUgIT0gJ3dpZHRoJyAmJlxuXHRcdFx0bmFtZSAhPSAnaGVpZ2h0JyAmJlxuXHRcdFx0bmFtZSAhPSAnaHJlZicgJiZcblx0XHRcdG5hbWUgIT0gJ2xpc3QnICYmXG5cdFx0XHRuYW1lICE9ICdmb3JtJyAmJlxuXHRcdFx0Ly8gRGVmYXVsdCB2YWx1ZSBpbiBicm93c2VycyBpcyBgLTFgIGFuZCBhbiBlbXB0eSBzdHJpbmcgaXNcblx0XHRcdC8vIGNhc3QgdG8gYDBgIGluc3RlYWRcblx0XHRcdG5hbWUgIT0gJ3RhYkluZGV4JyAmJlxuXHRcdFx0bmFtZSAhPSAnZG93bmxvYWQnICYmXG5cdFx0XHRuYW1lICE9ICdyb3dTcGFuJyAmJlxuXHRcdFx0bmFtZSAhPSAnY29sU3BhbicgJiZcblx0XHRcdG5hbWUgIT0gJ3JvbGUnICYmXG5cdFx0XHRuYW1lICE9ICdwb3BvdmVyJyAmJlxuXHRcdFx0bmFtZSBpbiBkb21cblx0XHQpIHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGRvbVtuYW1lXSA9IHZhbHVlID09IG51bGwgPyAnJyA6IHZhbHVlO1xuXHRcdFx0XHQvLyBsYWJlbGxlZCBicmVhayBpcyAxYiBzbWFsbGVyIGhlcmUgdGhhbiBhIHJldHVybiBzdGF0ZW1lbnQgKHNvcnJ5KVxuXHRcdFx0XHRicmVhayBvO1xuXHRcdFx0fSBjYXRjaCAoZSkge31cblx0XHR9XG5cblx0XHQvLyBhcmlhLSBhbmQgZGF0YS0gYXR0cmlidXRlcyBoYXZlIG5vIGJvb2xlYW4gcmVwcmVzZW50YXRpb24uXG5cdFx0Ly8gQSBgZmFsc2VgIHZhbHVlIGlzIGRpZmZlcmVudCBmcm9tIHRoZSBhdHRyaWJ1dGUgbm90IGJlaW5nXG5cdFx0Ly8gcHJlc2VudCwgc28gd2UgY2FuJ3QgcmVtb3ZlIGl0LiBGb3Igbm9uLWJvb2xlYW4gYXJpYVxuXHRcdC8vIGF0dHJpYnV0ZXMgd2UgY291bGQgdHJlYXQgZmFsc2UgYXMgYSByZW1vdmFsLCBidXQgdGhlXG5cdFx0Ly8gYW1vdW50IG9mIGV4Y2VwdGlvbnMgd291bGQgY29zdCB0b28gbWFueSBieXRlcy4gT24gdG9wIG9mXG5cdFx0Ly8gdGhhdCBvdGhlciBmcmFtZXdvcmtzIGdlbmVyYWxseSBzdHJpbmdpZnkgYGZhbHNlYC5cblxuXHRcdGlmICh0eXBlb2YgdmFsdWUgPT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0Ly8gbmV2ZXIgc2VyaWFsaXplIGZ1bmN0aW9ucyBhcyBhdHRyaWJ1dGUgdmFsdWVzXG5cdFx0fSBlbHNlIGlmICh2YWx1ZSAhPSBudWxsICYmICh2YWx1ZSAhPT0gZmFsc2UgfHwgbmFtZVs0XSA9PT0gJy0nKSkge1xuXHRcdFx0ZG9tLnNldEF0dHJpYnV0ZShuYW1lLCBuYW1lID09ICdwb3BvdmVyJyAmJiB2YWx1ZSA9PSB0cnVlID8gJycgOiB2YWx1ZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGRvbS5yZW1vdmVBdHRyaWJ1dGUobmFtZSk7XG5cdFx0fVxuXHR9XG59XG5cbi8qKlxuICogQ3JlYXRlIGFuIGV2ZW50IHByb3h5IGZ1bmN0aW9uLlxuICogQHBhcmFtIHtib29sZWFufSB1c2VDYXB0dXJlIElzIHRoZSBldmVudCBoYW5kbGVyIGZvciB0aGUgY2FwdHVyZSBwaGFzZS5cbiAqIEBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUV2ZW50UHJveHkodXNlQ2FwdHVyZSkge1xuXHQvKipcblx0ICogUHJveHkgYW4gZXZlbnQgdG8gaG9va2VkIGV2ZW50IGhhbmRsZXJzXG5cdCAqIEBwYXJhbSB7UHJlYWN0RXZlbnR9IGUgVGhlIGV2ZW50IG9iamVjdCBmcm9tIHRoZSBicm93c2VyXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRyZXR1cm4gZnVuY3Rpb24gKGUpIHtcblx0XHRpZiAodGhpcy5fbGlzdGVuZXJzKSB7XG5cdFx0XHRjb25zdCBldmVudEhhbmRsZXIgPSB0aGlzLl9saXN0ZW5lcnNbZS50eXBlICsgdXNlQ2FwdHVyZV07XG5cdFx0XHRpZiAoZS5fZGlzcGF0Y2hlZCA9PSBudWxsKSB7XG5cdFx0XHRcdGUuX2Rpc3BhdGNoZWQgPSBldmVudENsb2NrKys7XG5cblx0XHRcdFx0Ly8gV2hlbiBgZS5fZGlzcGF0Y2hlZGAgaXMgc21hbGxlciB0aGFuIHRoZSB0aW1lIHdoZW4gdGhlIHRhcmdldGVkIGV2ZW50XG5cdFx0XHRcdC8vIGhhbmRsZXIgd2FzIGF0dGFjaGVkIHdlIGtub3cgd2UgaGF2ZSBidWJibGVkIHVwIHRvIGFuIGVsZW1lbnQgdGhhdCB3YXMgYWRkZWRcblx0XHRcdFx0Ly8gZHVyaW5nIHBhdGNoaW5nIHRoZSBET00uXG5cdFx0XHR9IGVsc2UgaWYgKGUuX2Rpc3BhdGNoZWQgPCBldmVudEhhbmRsZXIuX2F0dGFjaGVkKSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdHJldHVybiBldmVudEhhbmRsZXIob3B0aW9ucy5ldmVudCA/IG9wdGlvbnMuZXZlbnQoZSkgOiBlKTtcblx0XHR9XG5cdH07XG59XG5cbmNvbnN0IGV2ZW50UHJveHkgPSBjcmVhdGVFdmVudFByb3h5KGZhbHNlKTtcbmNvbnN0IGV2ZW50UHJveHlDYXB0dXJlID0gY3JlYXRlRXZlbnRQcm94eSh0cnVlKTtcbiIsICJpbXBvcnQgeyBlbnF1ZXVlUmVuZGVyIH0gZnJvbSAnLi9jb21wb25lbnQnO1xuXG5leHBvcnQgbGV0IGkgPSAwO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ29udGV4dChkZWZhdWx0VmFsdWUsIGNvbnRleHRJZCkge1xuXHRjb250ZXh0SWQgPSAnX19jQycgKyBpKys7XG5cblx0Y29uc3QgY29udGV4dCA9IHtcblx0XHRfaWQ6IGNvbnRleHRJZCxcblx0XHRfZGVmYXVsdFZhbHVlOiBkZWZhdWx0VmFsdWUsXG5cdFx0LyoqIEB0eXBlIHtGdW5jdGlvbkNvbXBvbmVudH0gKi9cblx0XHRDb25zdW1lcihwcm9wcywgY29udGV4dFZhbHVlKSB7XG5cdFx0XHQvLyByZXR1cm4gcHJvcHMuY2hpbGRyZW4oXG5cdFx0XHQvLyBcdGNvbnRleHRbY29udGV4dElkXSA/IGNvbnRleHRbY29udGV4dElkXS5wcm9wcy52YWx1ZSA6IGRlZmF1bHRWYWx1ZVxuXHRcdFx0Ly8gKTtcblx0XHRcdHJldHVybiBwcm9wcy5jaGlsZHJlbihjb250ZXh0VmFsdWUpO1xuXHRcdH0sXG5cdFx0LyoqIEB0eXBlIHtGdW5jdGlvbkNvbXBvbmVudH0gKi9cblx0XHRQcm92aWRlcihwcm9wcykge1xuXHRcdFx0aWYgKCF0aGlzLmdldENoaWxkQ29udGV4dCkge1xuXHRcdFx0XHQvKiogQHR5cGUge1NldDxDb21wb25lbnQ+IHwgbnVsbH0gKi9cblx0XHRcdFx0bGV0IHN1YnMgPSBuZXcgU2V0KCk7XG5cdFx0XHRcdGxldCBjdHggPSB7fTtcblx0XHRcdFx0Y3R4W2NvbnRleHRJZF0gPSB0aGlzO1xuXG5cdFx0XHRcdHRoaXMuZ2V0Q2hpbGRDb250ZXh0ID0gKCkgPT4gY3R4O1xuXG5cdFx0XHRcdHRoaXMuY29tcG9uZW50V2lsbFVubW91bnQgPSAoKSA9PiB7XG5cdFx0XHRcdFx0c3VicyA9IG51bGw7XG5cdFx0XHRcdH07XG5cblx0XHRcdFx0dGhpcy5zaG91bGRDb21wb25lbnRVcGRhdGUgPSBmdW5jdGlvbiAoX3Byb3BzKSB7XG5cdFx0XHRcdFx0aWYgKHRoaXMucHJvcHMudmFsdWUgIT09IF9wcm9wcy52YWx1ZSkge1xuXHRcdFx0XHRcdFx0c3Vicy5mb3JFYWNoKGMgPT4ge1xuXHRcdFx0XHRcdFx0XHRjLl9mb3JjZSA9IHRydWU7XG5cdFx0XHRcdFx0XHRcdGVucXVldWVSZW5kZXIoYyk7XG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH07XG5cblx0XHRcdFx0dGhpcy5zdWIgPSBjID0+IHtcblx0XHRcdFx0XHRzdWJzLmFkZChjKTtcblx0XHRcdFx0XHRsZXQgb2xkID0gYy5jb21wb25lbnRXaWxsVW5tb3VudDtcblx0XHRcdFx0XHRjLmNvbXBvbmVudFdpbGxVbm1vdW50ID0gKCkgPT4ge1xuXHRcdFx0XHRcdFx0aWYgKHN1YnMpIHtcblx0XHRcdFx0XHRcdFx0c3Vicy5kZWxldGUoYyk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRpZiAob2xkKSBvbGQuY2FsbChjKTtcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9O1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gcHJvcHMuY2hpbGRyZW47XG5cdFx0fVxuXHR9O1xuXG5cdC8vIERldnRvb2xzIG5lZWRzIGFjY2VzcyB0byB0aGUgY29udGV4dCBvYmplY3Qgd2hlbiBpdFxuXHQvLyBlbmNvdW50ZXJzIGEgUHJvdmlkZXIuIFRoaXMgaXMgbmVjZXNzYXJ5IHRvIHN1cHBvcnRcblx0Ly8gc2V0dGluZyBgZGlzcGxheU5hbWVgIG9uIHRoZSBjb250ZXh0IG9iamVjdCBpbnN0ZWFkXG5cdC8vIG9mIG9uIHRoZSBjb21wb25lbnQgaXRzZWxmLiBTZWU6XG5cdC8vIGh0dHBzOi8vcmVhY3Rqcy5vcmcvZG9jcy9jb250ZXh0Lmh0bWwjY29udGV4dGRpc3BsYXluYW1lXG5cblx0cmV0dXJuIChjb250ZXh0LlByb3ZpZGVyLl9jb250ZXh0UmVmID0gY29udGV4dC5Db25zdW1lci5jb250ZXh0VHlwZSA9XG5cdFx0Y29udGV4dCk7XG59XG4iLCAiaW1wb3J0IHsgZGlmZiwgdW5tb3VudCwgYXBwbHlSZWYgfSBmcm9tICcuL2luZGV4JztcbmltcG9ydCB7IGNyZWF0ZVZOb2RlLCBGcmFnbWVudCB9IGZyb20gJy4uL2NyZWF0ZS1lbGVtZW50JztcbmltcG9ydCB7IEVNUFRZX09CSiwgRU1QVFlfQVJSLCBJTlNFUlRfVk5PREUsIE1BVENIRUQgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgaXNBcnJheSB9IGZyb20gJy4uL3V0aWwnO1xuaW1wb3J0IHsgZ2V0RG9tU2libGluZyB9IGZyb20gJy4uL2NvbXBvbmVudCc7XG5cbi8qKlxuICogRGlmZiB0aGUgY2hpbGRyZW4gb2YgYSB2aXJ0dWFsIG5vZGVcbiAqIEBwYXJhbSB7UHJlYWN0RWxlbWVudH0gcGFyZW50RG9tIFRoZSBET00gZWxlbWVudCB3aG9zZSBjaGlsZHJlbiBhcmUgYmVpbmdcbiAqIGRpZmZlZFxuICogQHBhcmFtIHtDb21wb25lbnRDaGlsZHJlbltdfSByZW5kZXJSZXN1bHRcbiAqIEBwYXJhbSB7Vk5vZGV9IG5ld1BhcmVudFZOb2RlIFRoZSBuZXcgdmlydHVhbCBub2RlIHdob3NlIGNoaWxkcmVuIHNob3VsZCBiZVxuICogZGlmZidlZCBhZ2FpbnN0IG9sZFBhcmVudFZOb2RlXG4gKiBAcGFyYW0ge1ZOb2RlfSBvbGRQYXJlbnRWTm9kZSBUaGUgb2xkIHZpcnR1YWwgbm9kZSB3aG9zZSBjaGlsZHJlbiBzaG91bGQgYmVcbiAqIGRpZmYnZWQgYWdhaW5zdCBuZXdQYXJlbnRWTm9kZVxuICogQHBhcmFtIHtvYmplY3R9IGdsb2JhbENvbnRleHQgVGhlIGN1cnJlbnQgY29udGV4dCBvYmplY3QgLSBtb2RpZmllZCBieVxuICogZ2V0Q2hpbGRDb250ZXh0XG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZXNwYWNlIEN1cnJlbnQgbmFtZXNwYWNlIG9mIHRoZSBET00gbm9kZSAoSFRNTCwgU1ZHLCBvciBNYXRoTUwpXG4gKiBAcGFyYW0ge0FycmF5PFByZWFjdEVsZW1lbnQ+fSBleGNlc3NEb21DaGlsZHJlblxuICogQHBhcmFtIHtBcnJheTxDb21wb25lbnQ+fSBjb21taXRRdWV1ZSBMaXN0IG9mIGNvbXBvbmVudHMgd2hpY2ggaGF2ZSBjYWxsYmFja3NcbiAqIHRvIGludm9rZSBpbiBjb21taXRSb290XG4gKiBAcGFyYW0ge1ByZWFjdEVsZW1lbnR9IG9sZERvbSBUaGUgY3VycmVudCBhdHRhY2hlZCBET00gZWxlbWVudCBhbnkgbmV3IGRvbVxuICogZWxlbWVudHMgc2hvdWxkIGJlIHBsYWNlZCBhcm91bmQuIExpa2VseSBgbnVsbGAgb24gZmlyc3QgcmVuZGVyIChleGNlcHQgd2hlblxuICogaHlkcmF0aW5nKS4gQ2FuIGJlIGEgc2libGluZyBET00gZWxlbWVudCB3aGVuIGRpZmZpbmcgRnJhZ21lbnRzIHRoYXQgaGF2ZVxuICogc2libGluZ3MuIEluIG1vc3QgY2FzZXMsIGl0IHN0YXJ0cyBvdXQgYXMgYG9sZENoaWxkcmVuWzBdLl9kb21gLlxuICogQHBhcmFtIHtib29sZWFufSBpc0h5ZHJhdGluZyBXaGV0aGVyIG9yIG5vdCB3ZSBhcmUgaW4gaHlkcmF0aW9uXG4gKiBAcGFyYW0ge2FueVtdfSByZWZRdWV1ZSBhbiBhcnJheSBvZiBlbGVtZW50cyBuZWVkZWQgdG8gaW52b2tlIHJlZnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRpZmZDaGlsZHJlbihcblx0cGFyZW50RG9tLFxuXHRyZW5kZXJSZXN1bHQsXG5cdG5ld1BhcmVudFZOb2RlLFxuXHRvbGRQYXJlbnRWTm9kZSxcblx0Z2xvYmFsQ29udGV4dCxcblx0bmFtZXNwYWNlLFxuXHRleGNlc3NEb21DaGlsZHJlbixcblx0Y29tbWl0UXVldWUsXG5cdG9sZERvbSxcblx0aXNIeWRyYXRpbmcsXG5cdHJlZlF1ZXVlXG4pIHtcblx0bGV0IGksXG5cdFx0LyoqIEB0eXBlIHtWTm9kZX0gKi9cblx0XHRvbGRWTm9kZSxcblx0XHQvKiogQHR5cGUge1ZOb2RlfSAqL1xuXHRcdGNoaWxkVk5vZGUsXG5cdFx0LyoqIEB0eXBlIHtQcmVhY3RFbGVtZW50fSAqL1xuXHRcdG5ld0RvbSxcblx0XHQvKiogQHR5cGUge1ByZWFjdEVsZW1lbnR9ICovXG5cdFx0Zmlyc3RDaGlsZERvbTtcblxuXHQvLyBUaGlzIGlzIGEgY29tcHJlc3Npb24gb2Ygb2xkUGFyZW50Vk5vZGUhPW51bGwgJiYgb2xkUGFyZW50Vk5vZGUgIT0gRU1QVFlfT0JKICYmIG9sZFBhcmVudFZOb2RlLl9jaGlsZHJlbiB8fCBFTVBUWV9BUlJcblx0Ly8gYXMgRU1QVFlfT0JKLl9jaGlsZHJlbiBzaG91bGQgYmUgYHVuZGVmaW5lZGAuXG5cdC8qKiBAdHlwZSB7Vk5vZGVbXX0gKi9cblx0bGV0IG9sZENoaWxkcmVuID0gKG9sZFBhcmVudFZOb2RlICYmIG9sZFBhcmVudFZOb2RlLl9jaGlsZHJlbikgfHwgRU1QVFlfQVJSO1xuXG5cdGxldCBuZXdDaGlsZHJlbkxlbmd0aCA9IHJlbmRlclJlc3VsdC5sZW5ndGg7XG5cblx0bmV3UGFyZW50Vk5vZGUuX25leHREb20gPSBvbGREb207XG5cdGNvbnN0cnVjdE5ld0NoaWxkcmVuQXJyYXkobmV3UGFyZW50Vk5vZGUsIHJlbmRlclJlc3VsdCwgb2xkQ2hpbGRyZW4pO1xuXHRvbGREb20gPSBuZXdQYXJlbnRWTm9kZS5fbmV4dERvbTtcblxuXHRmb3IgKGkgPSAwOyBpIDwgbmV3Q2hpbGRyZW5MZW5ndGg7IGkrKykge1xuXHRcdGNoaWxkVk5vZGUgPSBuZXdQYXJlbnRWTm9kZS5fY2hpbGRyZW5baV07XG5cdFx0aWYgKGNoaWxkVk5vZGUgPT0gbnVsbCkgY29udGludWU7XG5cblx0XHQvLyBBdCB0aGlzIHBvaW50LCBjb25zdHJ1Y3ROZXdDaGlsZHJlbkFycmF5IGhhcyBhc3NpZ25lZCBfaW5kZXggdG8gYmUgdGhlXG5cdFx0Ly8gbWF0Y2hpbmdJbmRleCBmb3IgdGhpcyBWTm9kZSdzIG9sZFZOb2RlIChvciAtMSBpZiB0aGVyZSBpcyBubyBvbGRWTm9kZSkuXG5cdFx0aWYgKGNoaWxkVk5vZGUuX2luZGV4ID09PSAtMSkge1xuXHRcdFx0b2xkVk5vZGUgPSBFTVBUWV9PQko7XG5cdFx0fSBlbHNlIHtcblx0XHRcdG9sZFZOb2RlID0gb2xkQ2hpbGRyZW5bY2hpbGRWTm9kZS5faW5kZXhdIHx8IEVNUFRZX09CSjtcblx0XHR9XG5cblx0XHQvLyBVcGRhdGUgY2hpbGRWTm9kZS5faW5kZXggdG8gaXRzIGZpbmFsIGluZGV4XG5cdFx0Y2hpbGRWTm9kZS5faW5kZXggPSBpO1xuXG5cdFx0Ly8gTW9ycGggdGhlIG9sZCBlbGVtZW50IGludG8gdGhlIG5ldyBvbmUsIGJ1dCBkb24ndCBhcHBlbmQgaXQgdG8gdGhlIGRvbSB5ZXRcblx0XHRkaWZmKFxuXHRcdFx0cGFyZW50RG9tLFxuXHRcdFx0Y2hpbGRWTm9kZSxcblx0XHRcdG9sZFZOb2RlLFxuXHRcdFx0Z2xvYmFsQ29udGV4dCxcblx0XHRcdG5hbWVzcGFjZSxcblx0XHRcdGV4Y2Vzc0RvbUNoaWxkcmVuLFxuXHRcdFx0Y29tbWl0UXVldWUsXG5cdFx0XHRvbGREb20sXG5cdFx0XHRpc0h5ZHJhdGluZyxcblx0XHRcdHJlZlF1ZXVlXG5cdFx0KTtcblxuXHRcdC8vIEFkanVzdCBET00gbm9kZXNcblx0XHRuZXdEb20gPSBjaGlsZFZOb2RlLl9kb207XG5cdFx0aWYgKGNoaWxkVk5vZGUucmVmICYmIG9sZFZOb2RlLnJlZiAhPSBjaGlsZFZOb2RlLnJlZikge1xuXHRcdFx0aWYgKG9sZFZOb2RlLnJlZikge1xuXHRcdFx0XHRhcHBseVJlZihvbGRWTm9kZS5yZWYsIG51bGwsIGNoaWxkVk5vZGUpO1xuXHRcdFx0fVxuXHRcdFx0cmVmUXVldWUucHVzaChcblx0XHRcdFx0Y2hpbGRWTm9kZS5yZWYsXG5cdFx0XHRcdGNoaWxkVk5vZGUuX2NvbXBvbmVudCB8fCBuZXdEb20sXG5cdFx0XHRcdGNoaWxkVk5vZGVcblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0aWYgKGZpcnN0Q2hpbGREb20gPT0gbnVsbCAmJiBuZXdEb20gIT0gbnVsbCkge1xuXHRcdFx0Zmlyc3RDaGlsZERvbSA9IG5ld0RvbTtcblx0XHR9XG5cblx0XHRpZiAoXG5cdFx0XHRjaGlsZFZOb2RlLl9mbGFncyAmIElOU0VSVF9WTk9ERSB8fFxuXHRcdFx0b2xkVk5vZGUuX2NoaWxkcmVuID09PSBjaGlsZFZOb2RlLl9jaGlsZHJlblxuXHRcdCkge1xuXHRcdFx0b2xkRG9tID0gaW5zZXJ0KGNoaWxkVk5vZGUsIG9sZERvbSwgcGFyZW50RG9tKTtcblx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0dHlwZW9mIGNoaWxkVk5vZGUudHlwZSA9PSAnZnVuY3Rpb24nICYmXG5cdFx0XHRjaGlsZFZOb2RlLl9uZXh0RG9tICE9PSB1bmRlZmluZWRcblx0XHQpIHtcblx0XHRcdC8vIFNpbmNlIEZyYWdtZW50cyBvciBjb21wb25lbnRzIHRoYXQgcmV0dXJuIEZyYWdtZW50IGxpa2UgVk5vZGVzIGNhblxuXHRcdFx0Ly8gY29udGFpbiBtdWx0aXBsZSBET00gbm9kZXMgYXMgdGhlIHNhbWUgbGV2ZWwsIGNvbnRpbnVlIHRoZSBkaWZmIGZyb21cblx0XHRcdC8vIHRoZSBzaWJsaW5nIG9mIGxhc3QgRE9NIGNoaWxkIG9mIHRoaXMgY2hpbGQgVk5vZGVcblx0XHRcdG9sZERvbSA9IGNoaWxkVk5vZGUuX25leHREb207XG5cdFx0fSBlbHNlIGlmIChuZXdEb20pIHtcblx0XHRcdG9sZERvbSA9IG5ld0RvbS5uZXh0U2libGluZztcblx0XHR9XG5cblx0XHQvLyBFYWdlcmx5IGNsZWFudXAgX25leHREb20uIFdlIGRvbid0IG5lZWQgdG8gcGVyc2lzdCB0aGUgdmFsdWUgYmVjYXVzZSBpdFxuXHRcdC8vIGlzIG9ubHkgdXNlZCBieSBgZGlmZkNoaWxkcmVuYCB0byBkZXRlcm1pbmUgd2hlcmUgdG8gcmVzdW1lIHRoZSBkaWZmXG5cdFx0Ly8gYWZ0ZXIgZGlmZmluZyBDb21wb25lbnRzIGFuZCBGcmFnbWVudHMuIE9uY2Ugd2Ugc3RvcmUgaXQgdGhlIG5leHRET01cblx0XHQvLyBsb2NhbCB2YXIsIHdlIGNhbiBjbGVhbiB1cCB0aGUgcHJvcGVydHkuIEFsc28gcHJldmVudHMgdXMgaGFuZ2luZyBvbiB0b1xuXHRcdC8vIERPTSBub2RlcyB0aGF0IG1heSBoYXZlIGJlZW4gdW5tb3VudGVkLlxuXHRcdGNoaWxkVk5vZGUuX25leHREb20gPSB1bmRlZmluZWQ7XG5cblx0XHQvLyBVbnNldCBkaWZmaW5nIGZsYWdzXG5cdFx0Y2hpbGRWTm9kZS5fZmxhZ3MgJj0gfihJTlNFUlRfVk5PREUgfCBNQVRDSEVEKTtcblx0fVxuXG5cdC8vIFRPRE86IFdpdGggbmV3IGNoaWxkIGRpZmZpbmcgYWxnbywgY29uc2lkZXIgYWx0IHdheXMgdG8gZGlmZiBGcmFnbWVudHMuXG5cdC8vIFN1Y2ggYXMgZHJvcHBpbmcgb2xkRG9tIGFuZCBtb3ZpbmcgZnJhZ21lbnRzIGluIHBsYWNlXG5cdC8vXG5cdC8vIEJlY2F1c2UgdGhlIG5ld1BhcmVudFZOb2RlIGlzIEZyYWdtZW50LWxpa2UsIHdlIG5lZWQgdG8gc2V0IGl0J3Ncblx0Ly8gX25leHREb20gcHJvcGVydHkgdG8gdGhlIG5leHRTaWJsaW5nIG9mIGl0cyBsYXN0IGNoaWxkIERPTSBub2RlLlxuXHQvL1xuXHQvLyBgb2xkRG9tYCBjb250YWlucyB0aGUgY29ycmVjdCB2YWx1ZSBoZXJlIGJlY2F1c2UgaWYgdGhlIGxhc3QgY2hpbGRcblx0Ly8gaXMgYSBGcmFnbWVudC1saWtlLCB0aGVuIG9sZERvbSBoYXMgYWxyZWFkeSBiZWVuIHNldCB0byB0aGF0IGNoaWxkJ3MgX25leHREb20uXG5cdC8vIElmIHRoZSBsYXN0IGNoaWxkIGlzIGEgRE9NIFZOb2RlLCB0aGVuIG9sZERvbSB3aWxsIGJlIHNldCB0byB0aGF0IERPTVxuXHQvLyBub2RlJ3MgbmV4dFNpYmxpbmcuXG5cdG5ld1BhcmVudFZOb2RlLl9uZXh0RG9tID0gb2xkRG9tO1xuXHRuZXdQYXJlbnRWTm9kZS5fZG9tID0gZmlyc3RDaGlsZERvbTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge1ZOb2RlfSBuZXdQYXJlbnRWTm9kZVxuICogQHBhcmFtIHtDb21wb25lbnRDaGlsZHJlbltdfSByZW5kZXJSZXN1bHRcbiAqIEBwYXJhbSB7Vk5vZGVbXX0gb2xkQ2hpbGRyZW5cbiAqL1xuZnVuY3Rpb24gY29uc3RydWN0TmV3Q2hpbGRyZW5BcnJheShuZXdQYXJlbnRWTm9kZSwgcmVuZGVyUmVzdWx0LCBvbGRDaGlsZHJlbikge1xuXHQvKiogQHR5cGUge251bWJlcn0gKi9cblx0bGV0IGk7XG5cdC8qKiBAdHlwZSB7Vk5vZGV9ICovXG5cdGxldCBjaGlsZFZOb2RlO1xuXHQvKiogQHR5cGUge1ZOb2RlfSAqL1xuXHRsZXQgb2xkVk5vZGU7XG5cblx0Y29uc3QgbmV3Q2hpbGRyZW5MZW5ndGggPSByZW5kZXJSZXN1bHQubGVuZ3RoO1xuXHRsZXQgb2xkQ2hpbGRyZW5MZW5ndGggPSBvbGRDaGlsZHJlbi5sZW5ndGgsXG5cdFx0cmVtYWluaW5nT2xkQ2hpbGRyZW4gPSBvbGRDaGlsZHJlbkxlbmd0aDtcblxuXHRsZXQgc2tldyA9IDA7XG5cblx0bmV3UGFyZW50Vk5vZGUuX2NoaWxkcmVuID0gW107XG5cdGZvciAoaSA9IDA7IGkgPCBuZXdDaGlsZHJlbkxlbmd0aDsgaSsrKSB7XG5cdFx0Ly8gQHRzLWV4cGVjdC1lcnJvciBXZSBhcmUgcmV1c2luZyB0aGUgY2hpbGRWTm9kZSB2YXJpYWJsZSB0byBob2xkIGJvdGggdGhlXG5cdFx0Ly8gcHJlIGFuZCBwb3N0IG5vcm1hbGl6ZWQgY2hpbGRWTm9kZVxuXHRcdGNoaWxkVk5vZGUgPSByZW5kZXJSZXN1bHRbaV07XG5cblx0XHRpZiAoXG5cdFx0XHRjaGlsZFZOb2RlID09IG51bGwgfHxcblx0XHRcdHR5cGVvZiBjaGlsZFZOb2RlID09ICdib29sZWFuJyB8fFxuXHRcdFx0dHlwZW9mIGNoaWxkVk5vZGUgPT0gJ2Z1bmN0aW9uJ1xuXHRcdCkge1xuXHRcdFx0Y2hpbGRWTm9kZSA9IG5ld1BhcmVudFZOb2RlLl9jaGlsZHJlbltpXSA9IG51bGw7XG5cdFx0XHRjb250aW51ZTtcblx0XHR9XG5cdFx0Ly8gSWYgdGhpcyBuZXdWTm9kZSBpcyBiZWluZyByZXVzZWQgKGUuZy4gPGRpdj57cmV1c2V9e3JldXNlfTwvZGl2PikgaW4gdGhlIHNhbWUgZGlmZixcblx0XHQvLyBvciB3ZSBhcmUgcmVuZGVyaW5nIGEgY29tcG9uZW50IChlLmcuIHNldFN0YXRlKSBjb3B5IHRoZSBvbGRWTm9kZXMgc28gaXQgY2FuIGhhdmVcblx0XHQvLyBpdCdzIG93biBET00gJiBldGMuIHBvaW50ZXJzXG5cdFx0ZWxzZSBpZiAoXG5cdFx0XHR0eXBlb2YgY2hpbGRWTm9kZSA9PSAnc3RyaW5nJyB8fFxuXHRcdFx0dHlwZW9mIGNoaWxkVk5vZGUgPT0gJ251bWJlcicgfHxcblx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB2YWxpZC10eXBlb2Zcblx0XHRcdHR5cGVvZiBjaGlsZFZOb2RlID09ICdiaWdpbnQnIHx8XG5cdFx0XHRjaGlsZFZOb2RlLmNvbnN0cnVjdG9yID09IFN0cmluZ1xuXHRcdCkge1xuXHRcdFx0Y2hpbGRWTm9kZSA9IG5ld1BhcmVudFZOb2RlLl9jaGlsZHJlbltpXSA9IGNyZWF0ZVZOb2RlKFxuXHRcdFx0XHRudWxsLFxuXHRcdFx0XHRjaGlsZFZOb2RlLFxuXHRcdFx0XHRudWxsLFxuXHRcdFx0XHRudWxsLFxuXHRcdFx0XHRudWxsXG5cdFx0XHQpO1xuXHRcdH0gZWxzZSBpZiAoaXNBcnJheShjaGlsZFZOb2RlKSkge1xuXHRcdFx0Y2hpbGRWTm9kZSA9IG5ld1BhcmVudFZOb2RlLl9jaGlsZHJlbltpXSA9IGNyZWF0ZVZOb2RlKFxuXHRcdFx0XHRGcmFnbWVudCxcblx0XHRcdFx0eyBjaGlsZHJlbjogY2hpbGRWTm9kZSB9LFxuXHRcdFx0XHRudWxsLFxuXHRcdFx0XHRudWxsLFxuXHRcdFx0XHRudWxsXG5cdFx0XHQpO1xuXHRcdH0gZWxzZSBpZiAoY2hpbGRWTm9kZS5jb25zdHJ1Y3RvciA9PT0gdW5kZWZpbmVkICYmIGNoaWxkVk5vZGUuX2RlcHRoID4gMCkge1xuXHRcdFx0Ly8gVk5vZGUgaXMgYWxyZWFkeSBpbiB1c2UsIGNsb25lIGl0LiBUaGlzIGNhbiBoYXBwZW4gaW4gdGhlIGZvbGxvd2luZ1xuXHRcdFx0Ly8gc2NlbmFyaW86XG5cdFx0XHQvLyAgIGNvbnN0IHJldXNlID0gPGRpdiAvPlxuXHRcdFx0Ly8gICA8ZGl2PntyZXVzZX08c3BhbiAvPntyZXVzZX08L2Rpdj5cblx0XHRcdGNoaWxkVk5vZGUgPSBuZXdQYXJlbnRWTm9kZS5fY2hpbGRyZW5baV0gPSBjcmVhdGVWTm9kZShcblx0XHRcdFx0Y2hpbGRWTm9kZS50eXBlLFxuXHRcdFx0XHRjaGlsZFZOb2RlLnByb3BzLFxuXHRcdFx0XHRjaGlsZFZOb2RlLmtleSxcblx0XHRcdFx0Y2hpbGRWTm9kZS5yZWYgPyBjaGlsZFZOb2RlLnJlZiA6IG51bGwsXG5cdFx0XHRcdGNoaWxkVk5vZGUuX29yaWdpbmFsXG5cdFx0XHQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjaGlsZFZOb2RlID0gbmV3UGFyZW50Vk5vZGUuX2NoaWxkcmVuW2ldID0gY2hpbGRWTm9kZTtcblx0XHR9XG5cblx0XHRjb25zdCBza2V3ZWRJbmRleCA9IGkgKyBza2V3O1xuXHRcdGNoaWxkVk5vZGUuX3BhcmVudCA9IG5ld1BhcmVudFZOb2RlO1xuXHRcdGNoaWxkVk5vZGUuX2RlcHRoID0gbmV3UGFyZW50Vk5vZGUuX2RlcHRoICsgMTtcblxuXHRcdC8vIFRlbXBvcmFyaWx5IHN0b3JlIHRoZSBtYXRjaGluZ0luZGV4IG9uIHRoZSBfaW5kZXggcHJvcGVydHkgc28gd2UgY2FuIHB1bGxcblx0XHQvLyBvdXQgdGhlIG9sZFZOb2RlIGluIGRpZmZDaGlsZHJlbi4gV2UnbGwgb3ZlcnJpZGUgdGhpcyB0byB0aGUgVk5vZGUnc1xuXHRcdC8vIGZpbmFsIGluZGV4IGFmdGVyIHVzaW5nIHRoaXMgcHJvcGVydHkgdG8gZ2V0IHRoZSBvbGRWTm9kZVxuXHRcdGNvbnN0IG1hdGNoaW5nSW5kZXggPSAoY2hpbGRWTm9kZS5faW5kZXggPSBmaW5kTWF0Y2hpbmdJbmRleChcblx0XHRcdGNoaWxkVk5vZGUsXG5cdFx0XHRvbGRDaGlsZHJlbixcblx0XHRcdHNrZXdlZEluZGV4LFxuXHRcdFx0cmVtYWluaW5nT2xkQ2hpbGRyZW5cblx0XHQpKTtcblxuXHRcdG9sZFZOb2RlID0gbnVsbDtcblx0XHRpZiAobWF0Y2hpbmdJbmRleCAhPT0gLTEpIHtcblx0XHRcdG9sZFZOb2RlID0gb2xkQ2hpbGRyZW5bbWF0Y2hpbmdJbmRleF07XG5cdFx0XHRyZW1haW5pbmdPbGRDaGlsZHJlbi0tO1xuXHRcdFx0aWYgKG9sZFZOb2RlKSB7XG5cdFx0XHRcdG9sZFZOb2RlLl9mbGFncyB8PSBNQVRDSEVEO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIEhlcmUsIHdlIGRlZmluZSBpc01vdW50aW5nIGZvciB0aGUgcHVycG9zZXMgb2YgdGhlIHNrZXcgZGlmZmluZ1xuXHRcdC8vIGFsZ29yaXRobS4gTm9kZXMgdGhhdCBhcmUgdW5zdXNwZW5kaW5nIGFyZSBjb25zaWRlcmVkIG1vdW50aW5nIGFuZCB3ZSBkZXRlY3Rcblx0XHQvLyB0aGlzIGJ5IGNoZWNraW5nIGlmIG9sZFZOb2RlLl9vcmlnaW5hbCA9PT0gbnVsbFxuXHRcdGNvbnN0IGlzTW91bnRpbmcgPSBvbGRWTm9kZSA9PSBudWxsIHx8IG9sZFZOb2RlLl9vcmlnaW5hbCA9PT0gbnVsbDtcblxuXHRcdGlmIChpc01vdW50aW5nKSB7XG5cdFx0XHRpZiAobWF0Y2hpbmdJbmRleCA9PSAtMSkge1xuXHRcdFx0XHRza2V3LS07XG5cdFx0XHR9XG5cblx0XHRcdC8vIElmIHdlIGFyZSBtb3VudGluZyBhIERPTSBWTm9kZSwgbWFyayBpdCBmb3IgaW5zZXJ0aW9uXG5cdFx0XHRpZiAodHlwZW9mIGNoaWxkVk5vZGUudHlwZSAhPSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRcdGNoaWxkVk5vZGUuX2ZsYWdzIHw9IElOU0VSVF9WTk9ERTtcblx0XHRcdH1cblx0XHR9IGVsc2UgaWYgKG1hdGNoaW5nSW5kZXggIT09IHNrZXdlZEluZGV4KSB7XG5cdFx0XHQvLyBXaGVuIHdlIG1vdmUgZWxlbWVudHMgYXJvdW5kIGkuZS4gWzAsIDEsIDJdIC0tPiBbMSwgMCwgMl1cblx0XHRcdC8vIC0tPiB3ZSBkaWZmIDEsIHdlIGZpbmQgaXQgYXQgcG9zaXRpb24gMSB3aGlsZSBvdXIgc2tld2VkIGluZGV4IGlzIDAgYW5kIG91ciBza2V3IGlzIDBcblx0XHRcdC8vICAgICB3ZSBzZXQgdGhlIHNrZXcgdG8gMSBhcyB3ZSBmb3VuZCBhbiBvZmZzZXQuXG5cdFx0XHQvLyAtLT4gd2UgZGlmZiAwLCB3ZSBmaW5kIGl0IGF0IHBvc2l0aW9uIDAgd2hpbGUgb3VyIHNrZXdlZCBpbmRleCBpcyBhdCAyIGFuZCBvdXIgc2tldyBpcyAxXG5cdFx0XHQvLyAgICAgdGhpcyBtYWtlcyB1cyBpbmNyZWFzZSB0aGUgc2tldyBhZ2Fpbi5cblx0XHRcdC8vIC0tPiB3ZSBkaWZmIDIsIHdlIGZpbmQgaXQgYXQgcG9zaXRpb24gMiB3aGlsZSBvdXIgc2tld2VkIGluZGV4IGlzIGF0IDQgYW5kIG91ciBza2V3IGlzIDJcblx0XHRcdC8vXG5cdFx0XHQvLyB0aGlzIGJlY29tZXMgYW4gb3B0aW1pemF0aW9uIHF1ZXN0aW9uIHdoZXJlIGN1cnJlbnRseSB3ZSBzZWUgYSAxIGVsZW1lbnQgb2Zmc2V0IGFzIGFuIGluc2VydGlvblxuXHRcdFx0Ly8gb3IgZGVsZXRpb24gaS5lLiB3ZSBvcHRpbWl6ZSBmb3IgWzAsIDEsIDJdIC0tPiBbOSwgMCwgMSwgMl1cblx0XHRcdC8vIHdoaWxlIGEgbW9yZSB0aGFuIDEgb2Zmc2V0IHdlIHNlZSBhcyBhIHN3YXAuXG5cdFx0XHQvLyBXZSBjb3VsZCBwcm9iYWJseSBidWlsZCBoZXVyaXN0aWNzIGZvciBoYXZpbmcgYW4gb3B0aW1pemVkIGNvdXJzZSBvZiBhY3Rpb24gaGVyZSBhcyB3ZWxsLCBidXRcblx0XHRcdC8vIG1pZ2h0IGdvIGF0IHRoZSBjb3N0IG9mIHNvbWUgYnl0ZXMuXG5cdFx0XHQvL1xuXHRcdFx0Ly8gSWYgd2Ugd2FudGVkIHRvIG9wdGltaXplIGZvciBpLmUuIG9ubHkgc3dhcHMgd2UnZCBqdXN0IGRvIHRoZSBsYXN0IHR3byBjb2RlLWJyYW5jaGVzIGFuZCBoYXZlXG5cdFx0XHQvLyBvbmx5IHRoZSBmaXJzdCBpdGVtIGJlIGEgcmUtc2NvdXRpbmcgYW5kIGFsbCB0aGUgb3RoZXJzIGZhbGwgaW4gdGhlaXIgc2tld2VkIGNvdW50ZXItcGFydC5cblx0XHRcdC8vIFdlIGNvdWxkIGFsc28gZnVydGhlciBvcHRpbWl6ZSBmb3Igc3dhcHNcblx0XHRcdGlmIChtYXRjaGluZ0luZGV4ID09IHNrZXdlZEluZGV4IC0gMSkge1xuXHRcdFx0XHRza2V3LS07XG5cdFx0XHR9IGVsc2UgaWYgKG1hdGNoaW5nSW5kZXggPT0gc2tld2VkSW5kZXggKyAxKSB7XG5cdFx0XHRcdHNrZXcrKztcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGlmIChtYXRjaGluZ0luZGV4ID4gc2tld2VkSW5kZXgpIHtcblx0XHRcdFx0XHRza2V3LS07XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0c2tldysrO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gTW92ZSB0aGlzIFZOb2RlJ3MgRE9NIGlmIHRoZSBvcmlnaW5hbCBpbmRleCAobWF0Y2hpbmdJbmRleCkgZG9lc24ndFxuXHRcdFx0XHQvLyBtYXRjaCB0aGUgbmV3IHNrZXcgaW5kZXggKGkgKyBuZXcgc2tldylcblx0XHRcdFx0Ly8gSW4gdGhlIGZvcm1lciB0d28gYnJhbmNoZXMgd2Uga25vdyB0aGF0IGl0IG1hdGNoZXMgYWZ0ZXIgc2tld2luZ1xuXHRcdFx0XHRjaGlsZFZOb2RlLl9mbGFncyB8PSBJTlNFUlRfVk5PREU7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gUmVtb3ZlIHJlbWFpbmluZyBvbGRDaGlsZHJlbiBpZiB0aGVyZSBhcmUgYW55LiBMb29wIGZvcndhcmRzIHNvIHRoYXQgYXMgd2Vcblx0Ly8gdW5tb3VudCBET00gZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBvbGRDaGlsZHJlbiwgd2UgY2FuIGFkanVzdCBvbGREb20gdG9cblx0Ly8gcG9pbnQgdG8gdGhlIG5leHQgY2hpbGQsIHdoaWNoIG5lZWRzIHRvIGJlIHRoZSBmaXJzdCBET00gbm9kZSB0aGF0IHdvbid0IGJlXG5cdC8vIHVubW91bnRlZC5cblx0aWYgKHJlbWFpbmluZ09sZENoaWxkcmVuKSB7XG5cdFx0Zm9yIChpID0gMDsgaSA8IG9sZENoaWxkcmVuTGVuZ3RoOyBpKyspIHtcblx0XHRcdG9sZFZOb2RlID0gb2xkQ2hpbGRyZW5baV07XG5cdFx0XHRpZiAob2xkVk5vZGUgIT0gbnVsbCAmJiAob2xkVk5vZGUuX2ZsYWdzICYgTUFUQ0hFRCkgPT09IDApIHtcblx0XHRcdFx0aWYgKG9sZFZOb2RlLl9kb20gPT0gbmV3UGFyZW50Vk5vZGUuX25leHREb20pIHtcblx0XHRcdFx0XHRuZXdQYXJlbnRWTm9kZS5fbmV4dERvbSA9IGdldERvbVNpYmxpbmcob2xkVk5vZGUpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0dW5tb3VudChvbGRWTm9kZSwgb2xkVk5vZGUpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG4vKipcbiAqIEBwYXJhbSB7Vk5vZGV9IHBhcmVudFZOb2RlXG4gKiBAcGFyYW0ge1ByZWFjdEVsZW1lbnR9IG9sZERvbVxuICogQHBhcmFtIHtQcmVhY3RFbGVtZW50fSBwYXJlbnREb21cbiAqIEByZXR1cm5zIHtQcmVhY3RFbGVtZW50fVxuICovXG5mdW5jdGlvbiBpbnNlcnQocGFyZW50Vk5vZGUsIG9sZERvbSwgcGFyZW50RG9tKSB7XG5cdC8vIE5vdGU6IFZOb2RlcyBpbiBuZXN0ZWQgc3VzcGVuZGVkIHRyZWVzIG1heSBiZSBtaXNzaW5nIF9jaGlsZHJlbi5cblxuXHRpZiAodHlwZW9mIHBhcmVudFZOb2RlLnR5cGUgPT0gJ2Z1bmN0aW9uJykge1xuXHRcdGxldCBjaGlsZHJlbiA9IHBhcmVudFZOb2RlLl9jaGlsZHJlbjtcblx0XHRmb3IgKGxldCBpID0gMDsgY2hpbGRyZW4gJiYgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRpZiAoY2hpbGRyZW5baV0pIHtcblx0XHRcdFx0Ly8gSWYgd2UgZW50ZXIgdGhpcyBjb2RlIHBhdGggb24gc0NVIGJhaWxvdXQsIHdoZXJlIHdlIGNvcHlcblx0XHRcdFx0Ly8gb2xkVk5vZGUuX2NoaWxkcmVuIHRvIG5ld1ZOb2RlLl9jaGlsZHJlbiwgd2UgbmVlZCB0byB1cGRhdGUgdGhlIG9sZFxuXHRcdFx0XHQvLyBjaGlsZHJlbidzIF9wYXJlbnQgcG9pbnRlciB0byBwb2ludCB0byB0aGUgbmV3Vk5vZGUgKHBhcmVudFZOb2RlXG5cdFx0XHRcdC8vIGhlcmUpLlxuXHRcdFx0XHRjaGlsZHJlbltpXS5fcGFyZW50ID0gcGFyZW50Vk5vZGU7XG5cdFx0XHRcdG9sZERvbSA9IGluc2VydChjaGlsZHJlbltpXSwgb2xkRG9tLCBwYXJlbnREb20pO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBvbGREb207XG5cdH0gZWxzZSBpZiAocGFyZW50Vk5vZGUuX2RvbSAhPSBvbGREb20pIHtcblx0XHRpZiAob2xkRG9tICYmIHBhcmVudFZOb2RlLnR5cGUgJiYgIXBhcmVudERvbS5jb250YWlucyhvbGREb20pKSB7XG5cdFx0XHRvbGREb20gPSBnZXREb21TaWJsaW5nKHBhcmVudFZOb2RlKTtcblx0XHR9XG5cdFx0cGFyZW50RG9tLmluc2VydEJlZm9yZShwYXJlbnRWTm9kZS5fZG9tLCBvbGREb20gfHwgbnVsbCk7XG5cdFx0b2xkRG9tID0gcGFyZW50Vk5vZGUuX2RvbTtcblx0fVxuXG5cdGRvIHtcblx0XHRvbGREb20gPSBvbGREb20gJiYgb2xkRG9tLm5leHRTaWJsaW5nO1xuXHR9IHdoaWxlIChvbGREb20gIT0gbnVsbCAmJiBvbGREb20ubm9kZVR5cGUgPT09IDgpO1xuXG5cdHJldHVybiBvbGREb207XG59XG5cbi8qKlxuICogRmxhdHRlbiBhbmQgbG9vcCB0aHJvdWdoIHRoZSBjaGlsZHJlbiBvZiBhIHZpcnR1YWwgbm9kZVxuICogQHBhcmFtIHtDb21wb25lbnRDaGlsZHJlbn0gY2hpbGRyZW4gVGhlIHVuZmxhdHRlbmVkIGNoaWxkcmVuIG9mIGEgdmlydHVhbFxuICogbm9kZVxuICogQHJldHVybnMge1ZOb2RlW119XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0NoaWxkQXJyYXkoY2hpbGRyZW4sIG91dCkge1xuXHRvdXQgPSBvdXQgfHwgW107XG5cdGlmIChjaGlsZHJlbiA9PSBudWxsIHx8IHR5cGVvZiBjaGlsZHJlbiA9PSAnYm9vbGVhbicpIHtcblx0fSBlbHNlIGlmIChpc0FycmF5KGNoaWxkcmVuKSkge1xuXHRcdGNoaWxkcmVuLnNvbWUoY2hpbGQgPT4ge1xuXHRcdFx0dG9DaGlsZEFycmF5KGNoaWxkLCBvdXQpO1xuXHRcdH0pO1xuXHR9IGVsc2Uge1xuXHRcdG91dC5wdXNoKGNoaWxkcmVuKTtcblx0fVxuXHRyZXR1cm4gb3V0O1xufVxuXG4vKipcbiAqIEBwYXJhbSB7Vk5vZGV9IGNoaWxkVk5vZGVcbiAqIEBwYXJhbSB7Vk5vZGVbXX0gb2xkQ2hpbGRyZW5cbiAqIEBwYXJhbSB7bnVtYmVyfSBza2V3ZWRJbmRleFxuICogQHBhcmFtIHtudW1iZXJ9IHJlbWFpbmluZ09sZENoaWxkcmVuXG4gKiBAcmV0dXJucyB7bnVtYmVyfVxuICovXG5mdW5jdGlvbiBmaW5kTWF0Y2hpbmdJbmRleChcblx0Y2hpbGRWTm9kZSxcblx0b2xkQ2hpbGRyZW4sXG5cdHNrZXdlZEluZGV4LFxuXHRyZW1haW5pbmdPbGRDaGlsZHJlblxuKSB7XG5cdGNvbnN0IGtleSA9IGNoaWxkVk5vZGUua2V5O1xuXHRjb25zdCB0eXBlID0gY2hpbGRWTm9kZS50eXBlO1xuXHRsZXQgeCA9IHNrZXdlZEluZGV4IC0gMTtcblx0bGV0IHkgPSBza2V3ZWRJbmRleCArIDE7XG5cdGxldCBvbGRWTm9kZSA9IG9sZENoaWxkcmVuW3NrZXdlZEluZGV4XTtcblxuXHQvLyBXZSBvbmx5IG5lZWQgdG8gcGVyZm9ybSBhIHNlYXJjaCBpZiB0aGVyZSBhcmUgbW9yZSBjaGlsZHJlblxuXHQvLyAocmVtYWluaW5nT2xkQ2hpbGRyZW4pIHRvIHNlYXJjaC4gSG93ZXZlciwgaWYgdGhlIG9sZFZOb2RlIHdlIGp1c3QgbG9va2VkXG5cdC8vIGF0IHNrZXdlZEluZGV4IHdhcyBub3QgYWxyZWFkeSB1c2VkIGluIHRoaXMgZGlmZiwgdGhlbiB0aGVyZSBtdXN0IGJlIGF0XG5cdC8vIGxlYXN0IDEgb3RoZXIgKHNvIGdyZWF0ZXIgdGhhbiAxKSByZW1haW5pbmdPbGRDaGlsZHJlbiB0byBhdHRlbXB0IHRvIG1hdGNoXG5cdC8vIGFnYWluc3QuIFNvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uIGNoZWNrcyB0aGF0IGVuc3VyaW5nXG5cdC8vIHJlbWFpbmluZ09sZENoaWxkcmVuID4gMSBpZiB0aGUgb2xkVk5vZGUgaXMgbm90IGFscmVhZHkgdXNlZC9tYXRjaGVkLiBFbHNlXG5cdC8vIGlmIHRoZSBvbGRWTm9kZSB3YXMgbnVsbCBvciBtYXRjaGVkLCB0aGVuIHRoZXJlIGNvdWxkIG5lZWRzIHRvIGJlIGF0IGxlYXN0XG5cdC8vIDEgKGFrYSBgcmVtYWluaW5nT2xkQ2hpbGRyZW4gPiAwYCkgY2hpbGRyZW4gdG8gZmluZCBhbmQgY29tcGFyZSBhZ2FpbnN0LlxuXHRsZXQgc2hvdWxkU2VhcmNoID1cblx0XHRyZW1haW5pbmdPbGRDaGlsZHJlbiA+XG5cdFx0KG9sZFZOb2RlICE9IG51bGwgJiYgKG9sZFZOb2RlLl9mbGFncyAmIE1BVENIRUQpID09PSAwID8gMSA6IDApO1xuXG5cdGlmIChcblx0XHRvbGRWTm9kZSA9PT0gbnVsbCB8fFxuXHRcdChvbGRWTm9kZSAmJlxuXHRcdFx0a2V5ID09IG9sZFZOb2RlLmtleSAmJlxuXHRcdFx0dHlwZSA9PT0gb2xkVk5vZGUudHlwZSAmJlxuXHRcdFx0KG9sZFZOb2RlLl9mbGFncyAmIE1BVENIRUQpID09PSAwKVxuXHQpIHtcblx0XHRyZXR1cm4gc2tld2VkSW5kZXg7XG5cdH0gZWxzZSBpZiAoc2hvdWxkU2VhcmNoKSB7XG5cdFx0d2hpbGUgKHggPj0gMCB8fCB5IDwgb2xkQ2hpbGRyZW4ubGVuZ3RoKSB7XG5cdFx0XHRpZiAoeCA+PSAwKSB7XG5cdFx0XHRcdG9sZFZOb2RlID0gb2xkQ2hpbGRyZW5beF07XG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHRvbGRWTm9kZSAmJlxuXHRcdFx0XHRcdChvbGRWTm9kZS5fZmxhZ3MgJiBNQVRDSEVEKSA9PT0gMCAmJlxuXHRcdFx0XHRcdGtleSA9PSBvbGRWTm9kZS5rZXkgJiZcblx0XHRcdFx0XHR0eXBlID09PSBvbGRWTm9kZS50eXBlXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdHJldHVybiB4O1xuXHRcdFx0XHR9XG5cdFx0XHRcdHgtLTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKHkgPCBvbGRDaGlsZHJlbi5sZW5ndGgpIHtcblx0XHRcdFx0b2xkVk5vZGUgPSBvbGRDaGlsZHJlblt5XTtcblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdG9sZFZOb2RlICYmXG5cdFx0XHRcdFx0KG9sZFZOb2RlLl9mbGFncyAmIE1BVENIRUQpID09PSAwICYmXG5cdFx0XHRcdFx0a2V5ID09IG9sZFZOb2RlLmtleSAmJlxuXHRcdFx0XHRcdHR5cGUgPT09IG9sZFZOb2RlLnR5cGVcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0cmV0dXJuIHk7XG5cdFx0XHRcdH1cblx0XHRcdFx0eSsrO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiAtMTtcbn1cbiIsICJpbXBvcnQge1xuXHRFTVBUWV9PQkosXG5cdE1PREVfSFlEUkFURSxcblx0TU9ERV9TVVNQRU5ERUQsXG5cdFJFU0VUX01PREVcbn0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IEJhc2VDb21wb25lbnQsIGdldERvbVNpYmxpbmcgfSBmcm9tICcuLi9jb21wb25lbnQnO1xuaW1wb3J0IHsgRnJhZ21lbnQgfSBmcm9tICcuLi9jcmVhdGUtZWxlbWVudCc7XG5pbXBvcnQgeyBkaWZmQ2hpbGRyZW4gfSBmcm9tICcuL2NoaWxkcmVuJztcbmltcG9ydCB7IHNldFByb3BlcnR5IH0gZnJvbSAnLi9wcm9wcyc7XG5pbXBvcnQgeyBhc3NpZ24sIGlzQXJyYXksIHJlbW92ZU5vZGUsIHNsaWNlIH0gZnJvbSAnLi4vdXRpbCc7XG5pbXBvcnQgb3B0aW9ucyBmcm9tICcuLi9vcHRpb25zJztcblxuLyoqXG4gKiBEaWZmIHR3byB2aXJ0dWFsIG5vZGVzIGFuZCBhcHBseSBwcm9wZXIgY2hhbmdlcyB0byB0aGUgRE9NXG4gKiBAcGFyYW0ge1ByZWFjdEVsZW1lbnR9IHBhcmVudERvbSBUaGUgcGFyZW50IG9mIHRoZSBET00gZWxlbWVudFxuICogQHBhcmFtIHtWTm9kZX0gbmV3Vk5vZGUgVGhlIG5ldyB2aXJ0dWFsIG5vZGVcbiAqIEBwYXJhbSB7Vk5vZGV9IG9sZFZOb2RlIFRoZSBvbGQgdmlydHVhbCBub2RlXG4gKiBAcGFyYW0ge29iamVjdH0gZ2xvYmFsQ29udGV4dCBUaGUgY3VycmVudCBjb250ZXh0IG9iamVjdC4gTW9kaWZpZWQgYnlcbiAqIGdldENoaWxkQ29udGV4dFxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWVzcGFjZSBDdXJyZW50IG5hbWVzcGFjZSBvZiB0aGUgRE9NIG5vZGUgKEhUTUwsIFNWRywgb3IgTWF0aE1MKVxuICogQHBhcmFtIHtBcnJheTxQcmVhY3RFbGVtZW50Pn0gZXhjZXNzRG9tQ2hpbGRyZW5cbiAqIEBwYXJhbSB7QXJyYXk8Q29tcG9uZW50Pn0gY29tbWl0UXVldWUgTGlzdCBvZiBjb21wb25lbnRzIHdoaWNoIGhhdmUgY2FsbGJhY2tzXG4gKiB0byBpbnZva2UgaW4gY29tbWl0Um9vdFxuICogQHBhcmFtIHtQcmVhY3RFbGVtZW50fSBvbGREb20gVGhlIGN1cnJlbnQgYXR0YWNoZWQgRE9NIGVsZW1lbnQgYW55IG5ldyBkb21cbiAqIGVsZW1lbnRzIHNob3VsZCBiZSBwbGFjZWQgYXJvdW5kLiBMaWtlbHkgYG51bGxgIG9uIGZpcnN0IHJlbmRlciAoZXhjZXB0IHdoZW5cbiAqIGh5ZHJhdGluZykuIENhbiBiZSBhIHNpYmxpbmcgRE9NIGVsZW1lbnQgd2hlbiBkaWZmaW5nIEZyYWdtZW50cyB0aGF0IGhhdmVcbiAqIHNpYmxpbmdzLiBJbiBtb3N0IGNhc2VzLCBpdCBzdGFydHMgb3V0IGFzIGBvbGRDaGlsZHJlblswXS5fZG9tYC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNIeWRyYXRpbmcgV2hldGhlciBvciBub3Qgd2UgYXJlIGluIGh5ZHJhdGlvblxuICogQHBhcmFtIHthbnlbXX0gcmVmUXVldWUgYW4gYXJyYXkgb2YgZWxlbWVudHMgbmVlZGVkIHRvIGludm9rZSByZWZzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaWZmKFxuXHRwYXJlbnREb20sXG5cdG5ld1ZOb2RlLFxuXHRvbGRWTm9kZSxcblx0Z2xvYmFsQ29udGV4dCxcblx0bmFtZXNwYWNlLFxuXHRleGNlc3NEb21DaGlsZHJlbixcblx0Y29tbWl0UXVldWUsXG5cdG9sZERvbSxcblx0aXNIeWRyYXRpbmcsXG5cdHJlZlF1ZXVlXG4pIHtcblx0LyoqIEB0eXBlIHthbnl9ICovXG5cdGxldCB0bXAsXG5cdFx0bmV3VHlwZSA9IG5ld1ZOb2RlLnR5cGU7XG5cblx0Ly8gV2hlbiBwYXNzaW5nIHRocm91Z2ggY3JlYXRlRWxlbWVudCBpdCBhc3NpZ25zIHRoZSBvYmplY3Rcblx0Ly8gY29uc3RydWN0b3IgYXMgdW5kZWZpbmVkLiBUaGlzIHRvIHByZXZlbnQgSlNPTi1pbmplY3Rpb24uXG5cdGlmIChuZXdWTm9kZS5jb25zdHJ1Y3RvciAhPT0gdW5kZWZpbmVkKSByZXR1cm4gbnVsbDtcblxuXHQvLyBJZiB0aGUgcHJldmlvdXMgZGlmZiBiYWlsZWQgb3V0LCByZXN1bWUgY3JlYXRpbmcvaHlkcmF0aW5nLlxuXHRpZiAob2xkVk5vZGUuX2ZsYWdzICYgTU9ERV9TVVNQRU5ERUQpIHtcblx0XHRpc0h5ZHJhdGluZyA9ICEhKG9sZFZOb2RlLl9mbGFncyAmIE1PREVfSFlEUkFURSk7XG5cdFx0b2xkRG9tID0gbmV3Vk5vZGUuX2RvbSA9IG9sZFZOb2RlLl9kb207XG5cdFx0ZXhjZXNzRG9tQ2hpbGRyZW4gPSBbb2xkRG9tXTtcblx0fVxuXG5cdGlmICgodG1wID0gb3B0aW9ucy5fZGlmZikpIHRtcChuZXdWTm9kZSk7XG5cblx0b3V0ZXI6IGlmICh0eXBlb2YgbmV3VHlwZSA9PSAnZnVuY3Rpb24nKSB7XG5cdFx0dHJ5IHtcblx0XHRcdGxldCBjLCBpc05ldywgb2xkUHJvcHMsIG9sZFN0YXRlLCBzbmFwc2hvdCwgY2xlYXJQcm9jZXNzaW5nRXhjZXB0aW9uO1xuXHRcdFx0bGV0IG5ld1Byb3BzID0gbmV3Vk5vZGUucHJvcHM7XG5cdFx0XHRjb25zdCBpc0NsYXNzQ29tcG9uZW50ID1cblx0XHRcdFx0J3Byb3RvdHlwZScgaW4gbmV3VHlwZSAmJiBuZXdUeXBlLnByb3RvdHlwZS5yZW5kZXI7XG5cblx0XHRcdC8vIE5lY2Vzc2FyeSBmb3IgY3JlYXRlQ29udGV4dCBhcGkuIFNldHRpbmcgdGhpcyBwcm9wZXJ0eSB3aWxsIHBhc3Ncblx0XHRcdC8vIHRoZSBjb250ZXh0IHZhbHVlIGFzIGB0aGlzLmNvbnRleHRgIGp1c3QgZm9yIHRoaXMgY29tcG9uZW50LlxuXHRcdFx0dG1wID0gbmV3VHlwZS5jb250ZXh0VHlwZTtcblx0XHRcdGxldCBwcm92aWRlciA9IHRtcCAmJiBnbG9iYWxDb250ZXh0W3RtcC5faWRdO1xuXHRcdFx0bGV0IGNvbXBvbmVudENvbnRleHQgPSB0bXBcblx0XHRcdFx0PyBwcm92aWRlclxuXHRcdFx0XHRcdD8gcHJvdmlkZXIucHJvcHMudmFsdWVcblx0XHRcdFx0XHQ6IHRtcC5fZGVmYXVsdFZhbHVlXG5cdFx0XHRcdDogZ2xvYmFsQ29udGV4dDtcblxuXHRcdFx0Ly8gR2V0IGNvbXBvbmVudCBhbmQgc2V0IGl0IHRvIGBjYFxuXHRcdFx0aWYgKG9sZFZOb2RlLl9jb21wb25lbnQpIHtcblx0XHRcdFx0YyA9IG5ld1ZOb2RlLl9jb21wb25lbnQgPSBvbGRWTm9kZS5fY29tcG9uZW50O1xuXHRcdFx0XHRjbGVhclByb2Nlc3NpbmdFeGNlcHRpb24gPSBjLl9wcm9jZXNzaW5nRXhjZXB0aW9uID0gYy5fcGVuZGluZ0Vycm9yO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Ly8gSW5zdGFudGlhdGUgdGhlIG5ldyBjb21wb25lbnRcblx0XHRcdFx0aWYgKGlzQ2xhc3NDb21wb25lbnQpIHtcblx0XHRcdFx0XHQvLyBAdHMtZXhwZWN0LWVycm9yIFRoZSBjaGVjayBhYm92ZSB2ZXJpZmllcyB0aGF0IG5ld1R5cGUgaXMgc3VwcG9zZSB0byBiZSBjb25zdHJ1Y3RlZFxuXHRcdFx0XHRcdG5ld1ZOb2RlLl9jb21wb25lbnQgPSBjID0gbmV3IG5ld1R5cGUobmV3UHJvcHMsIGNvbXBvbmVudENvbnRleHQpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5ldy1jYXBcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQvLyBAdHMtZXhwZWN0LWVycm9yIFRydXN0IG1lLCBDb21wb25lbnQgaW1wbGVtZW50cyB0aGUgaW50ZXJmYWNlIHdlIHdhbnRcblx0XHRcdFx0XHRuZXdWTm9kZS5fY29tcG9uZW50ID0gYyA9IG5ldyBCYXNlQ29tcG9uZW50KFxuXHRcdFx0XHRcdFx0bmV3UHJvcHMsXG5cdFx0XHRcdFx0XHRjb21wb25lbnRDb250ZXh0XG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRjLmNvbnN0cnVjdG9yID0gbmV3VHlwZTtcblx0XHRcdFx0XHRjLnJlbmRlciA9IGRvUmVuZGVyO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChwcm92aWRlcikgcHJvdmlkZXIuc3ViKGMpO1xuXG5cdFx0XHRcdGMucHJvcHMgPSBuZXdQcm9wcztcblx0XHRcdFx0aWYgKCFjLnN0YXRlKSBjLnN0YXRlID0ge307XG5cdFx0XHRcdGMuY29udGV4dCA9IGNvbXBvbmVudENvbnRleHQ7XG5cdFx0XHRcdGMuX2dsb2JhbENvbnRleHQgPSBnbG9iYWxDb250ZXh0O1xuXHRcdFx0XHRpc05ldyA9IGMuX2RpcnR5ID0gdHJ1ZTtcblx0XHRcdFx0Yy5fcmVuZGVyQ2FsbGJhY2tzID0gW107XG5cdFx0XHRcdGMuX3N0YXRlQ2FsbGJhY2tzID0gW107XG5cdFx0XHR9XG5cblx0XHRcdC8vIEludm9rZSBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHNcblx0XHRcdGlmIChpc0NsYXNzQ29tcG9uZW50ICYmIGMuX25leHRTdGF0ZSA9PSBudWxsKSB7XG5cdFx0XHRcdGMuX25leHRTdGF0ZSA9IGMuc3RhdGU7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChpc0NsYXNzQ29tcG9uZW50ICYmIG5ld1R5cGUuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzICE9IG51bGwpIHtcblx0XHRcdFx0aWYgKGMuX25leHRTdGF0ZSA9PSBjLnN0YXRlKSB7XG5cdFx0XHRcdFx0Yy5fbmV4dFN0YXRlID0gYXNzaWduKHt9LCBjLl9uZXh0U3RhdGUpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0YXNzaWduKFxuXHRcdFx0XHRcdGMuX25leHRTdGF0ZSxcblx0XHRcdFx0XHRuZXdUeXBlLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyhuZXdQcm9wcywgYy5fbmV4dFN0YXRlKVxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXG5cdFx0XHRvbGRQcm9wcyA9IGMucHJvcHM7XG5cdFx0XHRvbGRTdGF0ZSA9IGMuc3RhdGU7XG5cdFx0XHRjLl92bm9kZSA9IG5ld1ZOb2RlO1xuXG5cdFx0XHQvLyBJbnZva2UgcHJlLXJlbmRlciBsaWZlY3ljbGUgbWV0aG9kc1xuXHRcdFx0aWYgKGlzTmV3KSB7XG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHRpc0NsYXNzQ29tcG9uZW50ICYmXG5cdFx0XHRcdFx0bmV3VHlwZS5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMgPT0gbnVsbCAmJlxuXHRcdFx0XHRcdGMuY29tcG9uZW50V2lsbE1vdW50ICE9IG51bGxcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0Yy5jb21wb25lbnRXaWxsTW91bnQoKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChpc0NsYXNzQ29tcG9uZW50ICYmIGMuY29tcG9uZW50RGlkTW91bnQgIT0gbnVsbCkge1xuXHRcdFx0XHRcdGMuX3JlbmRlckNhbGxiYWNrcy5wdXNoKGMuY29tcG9uZW50RGlkTW91bnQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0aXNDbGFzc0NvbXBvbmVudCAmJlxuXHRcdFx0XHRcdG5ld1R5cGUuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzID09IG51bGwgJiZcblx0XHRcdFx0XHRuZXdQcm9wcyAhPT0gb2xkUHJvcHMgJiZcblx0XHRcdFx0XHRjLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMgIT0gbnVsbFxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRjLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMobmV3UHJvcHMsIGNvbXBvbmVudENvbnRleHQpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdCFjLl9mb3JjZSAmJlxuXHRcdFx0XHRcdCgoYy5zaG91bGRDb21wb25lbnRVcGRhdGUgIT0gbnVsbCAmJlxuXHRcdFx0XHRcdFx0Yy5zaG91bGRDb21wb25lbnRVcGRhdGUoXG5cdFx0XHRcdFx0XHRcdG5ld1Byb3BzLFxuXHRcdFx0XHRcdFx0XHRjLl9uZXh0U3RhdGUsXG5cdFx0XHRcdFx0XHRcdGNvbXBvbmVudENvbnRleHRcblx0XHRcdFx0XHRcdCkgPT09IGZhbHNlKSB8fFxuXHRcdFx0XHRcdFx0bmV3Vk5vZGUuX29yaWdpbmFsID09PSBvbGRWTm9kZS5fb3JpZ2luYWwpXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdC8vIE1vcmUgaW5mbyBhYm91dCB0aGlzIGhlcmU6IGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL0pvdmlEZUNyb29jay9iZWM1ZjJjZTkzNTQ0ZDJlNjA3MGVmOGUwMDM2ZTRlOFxuXHRcdFx0XHRcdGlmIChuZXdWTm9kZS5fb3JpZ2luYWwgIT09IG9sZFZOb2RlLl9vcmlnaW5hbCkge1xuXHRcdFx0XHRcdFx0Ly8gV2hlbiB3ZSBhcmUgZGVhbGluZyB3aXRoIGEgYmFpbCBiZWNhdXNlIG9mIHNDVSB3ZSBoYXZlIHRvIHVwZGF0ZVxuXHRcdFx0XHRcdFx0Ly8gdGhlIHByb3BzLCBzdGF0ZSBhbmQgZGlydHktc3RhdGUuXG5cdFx0XHRcdFx0XHQvLyB3aGVuIHdlIGFyZSBkZWFsaW5nIHdpdGggc3RyaWN0LWVxdWFsaXR5IHdlIGRvbid0IGFzIHRoZSBjaGlsZCBjb3VsZCBzdGlsbFxuXHRcdFx0XHRcdFx0Ly8gYmUgZGlydGllZCBzZWUgIzM4ODNcblx0XHRcdFx0XHRcdGMucHJvcHMgPSBuZXdQcm9wcztcblx0XHRcdFx0XHRcdGMuc3RhdGUgPSBjLl9uZXh0U3RhdGU7XG5cdFx0XHRcdFx0XHRjLl9kaXJ0eSA9IGZhbHNlO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdG5ld1ZOb2RlLl9kb20gPSBvbGRWTm9kZS5fZG9tO1xuXHRcdFx0XHRcdG5ld1ZOb2RlLl9jaGlsZHJlbiA9IG9sZFZOb2RlLl9jaGlsZHJlbjtcblx0XHRcdFx0XHRuZXdWTm9kZS5fY2hpbGRyZW4uc29tZSh2bm9kZSA9PiB7XG5cdFx0XHRcdFx0XHRpZiAodm5vZGUpIHZub2RlLl9wYXJlbnQgPSBuZXdWTm9kZTtcblx0XHRcdFx0XHR9KTtcblxuXHRcdFx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgYy5fc3RhdGVDYWxsYmFja3MubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHRcdGMuX3JlbmRlckNhbGxiYWNrcy5wdXNoKGMuX3N0YXRlQ2FsbGJhY2tzW2ldKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Yy5fc3RhdGVDYWxsYmFja3MgPSBbXTtcblxuXHRcdFx0XHRcdGlmIChjLl9yZW5kZXJDYWxsYmFja3MubGVuZ3RoKSB7XG5cdFx0XHRcdFx0XHRjb21taXRRdWV1ZS5wdXNoKGMpO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGJyZWFrIG91dGVyO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKGMuY29tcG9uZW50V2lsbFVwZGF0ZSAhPSBudWxsKSB7XG5cdFx0XHRcdFx0Yy5jb21wb25lbnRXaWxsVXBkYXRlKG5ld1Byb3BzLCBjLl9uZXh0U3RhdGUsIGNvbXBvbmVudENvbnRleHQpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKGlzQ2xhc3NDb21wb25lbnQgJiYgYy5jb21wb25lbnREaWRVcGRhdGUgIT0gbnVsbCkge1xuXHRcdFx0XHRcdGMuX3JlbmRlckNhbGxiYWNrcy5wdXNoKCgpID0+IHtcblx0XHRcdFx0XHRcdGMuY29tcG9uZW50RGlkVXBkYXRlKG9sZFByb3BzLCBvbGRTdGF0ZSwgc25hcHNob3QpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGMuY29udGV4dCA9IGNvbXBvbmVudENvbnRleHQ7XG5cdFx0XHRjLnByb3BzID0gbmV3UHJvcHM7XG5cdFx0XHRjLl9wYXJlbnREb20gPSBwYXJlbnREb207XG5cdFx0XHRjLl9mb3JjZSA9IGZhbHNlO1xuXG5cdFx0XHRsZXQgcmVuZGVySG9vayA9IG9wdGlvbnMuX3JlbmRlcixcblx0XHRcdFx0Y291bnQgPSAwO1xuXHRcdFx0aWYgKGlzQ2xhc3NDb21wb25lbnQpIHtcblx0XHRcdFx0Yy5zdGF0ZSA9IGMuX25leHRTdGF0ZTtcblx0XHRcdFx0Yy5fZGlydHkgPSBmYWxzZTtcblxuXHRcdFx0XHRpZiAocmVuZGVySG9vaykgcmVuZGVySG9vayhuZXdWTm9kZSk7XG5cblx0XHRcdFx0dG1wID0gYy5yZW5kZXIoYy5wcm9wcywgYy5zdGF0ZSwgYy5jb250ZXh0KTtcblxuXHRcdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGMuX3N0YXRlQ2FsbGJhY2tzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0Yy5fcmVuZGVyQ2FsbGJhY2tzLnB1c2goYy5fc3RhdGVDYWxsYmFja3NbaV0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGMuX3N0YXRlQ2FsbGJhY2tzID0gW107XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRkbyB7XG5cdFx0XHRcdFx0Yy5fZGlydHkgPSBmYWxzZTtcblx0XHRcdFx0XHRpZiAocmVuZGVySG9vaykgcmVuZGVySG9vayhuZXdWTm9kZSk7XG5cblx0XHRcdFx0XHR0bXAgPSBjLnJlbmRlcihjLnByb3BzLCBjLnN0YXRlLCBjLmNvbnRleHQpO1xuXG5cdFx0XHRcdFx0Ly8gSGFuZGxlIHNldFN0YXRlIGNhbGxlZCBpbiByZW5kZXIsIHNlZSAjMjU1M1xuXHRcdFx0XHRcdGMuc3RhdGUgPSBjLl9uZXh0U3RhdGU7XG5cdFx0XHRcdH0gd2hpbGUgKGMuX2RpcnR5ICYmICsrY291bnQgPCAyNSk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEhhbmRsZSBzZXRTdGF0ZSBjYWxsZWQgaW4gcmVuZGVyLCBzZWUgIzI1NTNcblx0XHRcdGMuc3RhdGUgPSBjLl9uZXh0U3RhdGU7XG5cblx0XHRcdGlmIChjLmdldENoaWxkQ29udGV4dCAhPSBudWxsKSB7XG5cdFx0XHRcdGdsb2JhbENvbnRleHQgPSBhc3NpZ24oYXNzaWduKHt9LCBnbG9iYWxDb250ZXh0KSwgYy5nZXRDaGlsZENvbnRleHQoKSk7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChpc0NsYXNzQ29tcG9uZW50ICYmICFpc05ldyAmJiBjLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlICE9IG51bGwpIHtcblx0XHRcdFx0c25hcHNob3QgPSBjLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlKG9sZFByb3BzLCBvbGRTdGF0ZSk7XG5cdFx0XHR9XG5cblx0XHRcdGxldCBpc1RvcExldmVsRnJhZ21lbnQgPVxuXHRcdFx0XHR0bXAgIT0gbnVsbCAmJiB0bXAudHlwZSA9PT0gRnJhZ21lbnQgJiYgdG1wLmtleSA9PSBudWxsO1xuXHRcdFx0bGV0IHJlbmRlclJlc3VsdCA9IGlzVG9wTGV2ZWxGcmFnbWVudCA/IHRtcC5wcm9wcy5jaGlsZHJlbiA6IHRtcDtcblxuXHRcdFx0ZGlmZkNoaWxkcmVuKFxuXHRcdFx0XHRwYXJlbnREb20sXG5cdFx0XHRcdGlzQXJyYXkocmVuZGVyUmVzdWx0KSA/IHJlbmRlclJlc3VsdCA6IFtyZW5kZXJSZXN1bHRdLFxuXHRcdFx0XHRuZXdWTm9kZSxcblx0XHRcdFx0b2xkVk5vZGUsXG5cdFx0XHRcdGdsb2JhbENvbnRleHQsXG5cdFx0XHRcdG5hbWVzcGFjZSxcblx0XHRcdFx0ZXhjZXNzRG9tQ2hpbGRyZW4sXG5cdFx0XHRcdGNvbW1pdFF1ZXVlLFxuXHRcdFx0XHRvbGREb20sXG5cdFx0XHRcdGlzSHlkcmF0aW5nLFxuXHRcdFx0XHRyZWZRdWV1ZVxuXHRcdFx0KTtcblxuXHRcdFx0Yy5iYXNlID0gbmV3Vk5vZGUuX2RvbTtcblxuXHRcdFx0Ly8gV2Ugc3VjY2Vzc2Z1bGx5IHJlbmRlcmVkIHRoaXMgVk5vZGUsIHVuc2V0IGFueSBzdG9yZWQgaHlkcmF0aW9uL2JhaWxvdXQgc3RhdGU6XG5cdFx0XHRuZXdWTm9kZS5fZmxhZ3MgJj0gUkVTRVRfTU9ERTtcblxuXHRcdFx0aWYgKGMuX3JlbmRlckNhbGxiYWNrcy5sZW5ndGgpIHtcblx0XHRcdFx0Y29tbWl0UXVldWUucHVzaChjKTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKGNsZWFyUHJvY2Vzc2luZ0V4Y2VwdGlvbikge1xuXHRcdFx0XHRjLl9wZW5kaW5nRXJyb3IgPSBjLl9wcm9jZXNzaW5nRXhjZXB0aW9uID0gbnVsbDtcblx0XHRcdH1cblx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRuZXdWTm9kZS5fb3JpZ2luYWwgPSBudWxsO1xuXHRcdFx0Ly8gaWYgaHlkcmF0aW5nIG9yIGNyZWF0aW5nIGluaXRpYWwgdHJlZSwgYmFpbG91dCBwcmVzZXJ2ZXMgRE9NOlxuXHRcdFx0aWYgKGlzSHlkcmF0aW5nIHx8IGV4Y2Vzc0RvbUNoaWxkcmVuICE9IG51bGwpIHtcblx0XHRcdFx0bmV3Vk5vZGUuX2ZsYWdzIHw9IGlzSHlkcmF0aW5nXG5cdFx0XHRcdFx0PyBNT0RFX0hZRFJBVEUgfCBNT0RFX1NVU1BFTkRFRFxuXHRcdFx0XHRcdDogTU9ERV9TVVNQRU5ERUQ7XG5cblx0XHRcdFx0d2hpbGUgKG9sZERvbSAmJiBvbGREb20ubm9kZVR5cGUgPT09IDggJiYgb2xkRG9tLm5leHRTaWJsaW5nKSB7XG5cdFx0XHRcdFx0b2xkRG9tID0gb2xkRG9tLm5leHRTaWJsaW5nO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGV4Y2Vzc0RvbUNoaWxkcmVuW2V4Y2Vzc0RvbUNoaWxkcmVuLmluZGV4T2Yob2xkRG9tKV0gPSBudWxsO1xuXHRcdFx0XHRuZXdWTm9kZS5fZG9tID0gb2xkRG9tO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0bmV3Vk5vZGUuX2RvbSA9IG9sZFZOb2RlLl9kb207XG5cdFx0XHRcdG5ld1ZOb2RlLl9jaGlsZHJlbiA9IG9sZFZOb2RlLl9jaGlsZHJlbjtcblx0XHRcdH1cblx0XHRcdG9wdGlvbnMuX2NhdGNoRXJyb3IoZSwgbmV3Vk5vZGUsIG9sZFZOb2RlKTtcblx0XHR9XG5cdH0gZWxzZSBpZiAoXG5cdFx0ZXhjZXNzRG9tQ2hpbGRyZW4gPT0gbnVsbCAmJlxuXHRcdG5ld1ZOb2RlLl9vcmlnaW5hbCA9PT0gb2xkVk5vZGUuX29yaWdpbmFsXG5cdCkge1xuXHRcdG5ld1ZOb2RlLl9jaGlsZHJlbiA9IG9sZFZOb2RlLl9jaGlsZHJlbjtcblx0XHRuZXdWTm9kZS5fZG9tID0gb2xkVk5vZGUuX2RvbTtcblx0fSBlbHNlIHtcblx0XHRuZXdWTm9kZS5fZG9tID0gZGlmZkVsZW1lbnROb2Rlcyhcblx0XHRcdG9sZFZOb2RlLl9kb20sXG5cdFx0XHRuZXdWTm9kZSxcblx0XHRcdG9sZFZOb2RlLFxuXHRcdFx0Z2xvYmFsQ29udGV4dCxcblx0XHRcdG5hbWVzcGFjZSxcblx0XHRcdGV4Y2Vzc0RvbUNoaWxkcmVuLFxuXHRcdFx0Y29tbWl0UXVldWUsXG5cdFx0XHRpc0h5ZHJhdGluZyxcblx0XHRcdHJlZlF1ZXVlXG5cdFx0KTtcblx0fVxuXG5cdGlmICgodG1wID0gb3B0aW9ucy5kaWZmZWQpKSB0bXAobmV3Vk5vZGUpO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7QXJyYXk8Q29tcG9uZW50Pn0gY29tbWl0UXVldWUgTGlzdCBvZiBjb21wb25lbnRzXG4gKiB3aGljaCBoYXZlIGNhbGxiYWNrcyB0byBpbnZva2UgaW4gY29tbWl0Um9vdFxuICogQHBhcmFtIHtWTm9kZX0gcm9vdFxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tbWl0Um9vdChjb21taXRRdWV1ZSwgcm9vdCwgcmVmUXVldWUpIHtcblx0cm9vdC5fbmV4dERvbSA9IHVuZGVmaW5lZDtcblxuXHRmb3IgKGxldCBpID0gMDsgaSA8IHJlZlF1ZXVlLmxlbmd0aDsgaSsrKSB7XG5cdFx0YXBwbHlSZWYocmVmUXVldWVbaV0sIHJlZlF1ZXVlWysraV0sIHJlZlF1ZXVlWysraV0pO1xuXHR9XG5cblx0aWYgKG9wdGlvbnMuX2NvbW1pdCkgb3B0aW9ucy5fY29tbWl0KHJvb3QsIGNvbW1pdFF1ZXVlKTtcblxuXHRjb21taXRRdWV1ZS5zb21lKGMgPT4ge1xuXHRcdHRyeSB7XG5cdFx0XHQvLyBAdHMtZXhwZWN0LWVycm9yIFJldXNlIHRoZSBjb21taXRRdWV1ZSB2YXJpYWJsZSBoZXJlIHNvIHRoZSB0eXBlIGNoYW5nZXNcblx0XHRcdGNvbW1pdFF1ZXVlID0gYy5fcmVuZGVyQ2FsbGJhY2tzO1xuXHRcdFx0Yy5fcmVuZGVyQ2FsbGJhY2tzID0gW107XG5cdFx0XHRjb21taXRRdWV1ZS5zb21lKGNiID0+IHtcblx0XHRcdFx0Ly8gQHRzLWV4cGVjdC1lcnJvciBTZWUgYWJvdmUgY29tbWVudCBvbiBjb21taXRRdWV1ZVxuXHRcdFx0XHRjYi5jYWxsKGMpO1xuXHRcdFx0fSk7XG5cdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0b3B0aW9ucy5fY2F0Y2hFcnJvcihlLCBjLl92bm9kZSk7XG5cdFx0fVxuXHR9KTtcbn1cblxuLyoqXG4gKiBEaWZmIHR3byB2aXJ0dWFsIG5vZGVzIHJlcHJlc2VudGluZyBET00gZWxlbWVudFxuICogQHBhcmFtIHtQcmVhY3RFbGVtZW50fSBkb20gVGhlIERPTSBlbGVtZW50IHJlcHJlc2VudGluZyB0aGUgdmlydHVhbCBub2Rlc1xuICogYmVpbmcgZGlmZmVkXG4gKiBAcGFyYW0ge1ZOb2RlfSBuZXdWTm9kZSBUaGUgbmV3IHZpcnR1YWwgbm9kZVxuICogQHBhcmFtIHtWTm9kZX0gb2xkVk5vZGUgVGhlIG9sZCB2aXJ0dWFsIG5vZGVcbiAqIEBwYXJhbSB7b2JqZWN0fSBnbG9iYWxDb250ZXh0IFRoZSBjdXJyZW50IGNvbnRleHQgb2JqZWN0XG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZXNwYWNlIEN1cnJlbnQgbmFtZXNwYWNlIG9mIHRoZSBET00gbm9kZSAoSFRNTCwgU1ZHLCBvciBNYXRoTUwpXG4gKiBAcGFyYW0ge0FycmF5PFByZWFjdEVsZW1lbnQ+fSBleGNlc3NEb21DaGlsZHJlblxuICogQHBhcmFtIHtBcnJheTxDb21wb25lbnQ+fSBjb21taXRRdWV1ZSBMaXN0IG9mIGNvbXBvbmVudHMgd2hpY2ggaGF2ZSBjYWxsYmFja3NcbiAqIHRvIGludm9rZSBpbiBjb21taXRSb290XG4gKiBAcGFyYW0ge2Jvb2xlYW59IGlzSHlkcmF0aW5nIFdoZXRoZXIgb3Igbm90IHdlIGFyZSBpbiBoeWRyYXRpb25cbiAqIEBwYXJhbSB7YW55W119IHJlZlF1ZXVlIGFuIGFycmF5IG9mIGVsZW1lbnRzIG5lZWRlZCB0byBpbnZva2UgcmVmc1xuICogQHJldHVybnMge1ByZWFjdEVsZW1lbnR9XG4gKi9cbmZ1bmN0aW9uIGRpZmZFbGVtZW50Tm9kZXMoXG5cdGRvbSxcblx0bmV3Vk5vZGUsXG5cdG9sZFZOb2RlLFxuXHRnbG9iYWxDb250ZXh0LFxuXHRuYW1lc3BhY2UsXG5cdGV4Y2Vzc0RvbUNoaWxkcmVuLFxuXHRjb21taXRRdWV1ZSxcblx0aXNIeWRyYXRpbmcsXG5cdHJlZlF1ZXVlXG4pIHtcblx0bGV0IG9sZFByb3BzID0gb2xkVk5vZGUucHJvcHM7XG5cdGxldCBuZXdQcm9wcyA9IG5ld1ZOb2RlLnByb3BzO1xuXHRsZXQgbm9kZVR5cGUgPSAvKiogQHR5cGUge3N0cmluZ30gKi8gKG5ld1ZOb2RlLnR5cGUpO1xuXHQvKiogQHR5cGUge2FueX0gKi9cblx0bGV0IGk7XG5cdC8qKiBAdHlwZSB7eyBfX2h0bWw/OiBzdHJpbmcgfX0gKi9cblx0bGV0IG5ld0h0bWw7XG5cdC8qKiBAdHlwZSB7eyBfX2h0bWw/OiBzdHJpbmcgfX0gKi9cblx0bGV0IG9sZEh0bWw7XG5cdC8qKiBAdHlwZSB7Q29tcG9uZW50Q2hpbGRyZW59ICovXG5cdGxldCBuZXdDaGlsZHJlbjtcblx0bGV0IHZhbHVlO1xuXHRsZXQgaW5wdXRWYWx1ZTtcblx0bGV0IGNoZWNrZWQ7XG5cblx0Ly8gVHJhY2tzIGVudGVyaW5nIGFuZCBleGl0aW5nIG5hbWVzcGFjZXMgd2hlbiBkZXNjZW5kaW5nIHRocm91Z2ggdGhlIHRyZWUuXG5cdGlmIChub2RlVHlwZSA9PT0gJ3N2ZycpIG5hbWVzcGFjZSA9ICdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zyc7XG5cdGVsc2UgaWYgKG5vZGVUeXBlID09PSAnbWF0aCcpXG5cdFx0bmFtZXNwYWNlID0gJ2h0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwnO1xuXHRlbHNlIGlmICghbmFtZXNwYWNlKSBuYW1lc3BhY2UgPSAnaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCc7XG5cblx0aWYgKGV4Y2Vzc0RvbUNoaWxkcmVuICE9IG51bGwpIHtcblx0XHRmb3IgKGkgPSAwOyBpIDwgZXhjZXNzRG9tQ2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcblx0XHRcdHZhbHVlID0gZXhjZXNzRG9tQ2hpbGRyZW5baV07XG5cblx0XHRcdC8vIGlmIG5ld1ZOb2RlIG1hdGNoZXMgYW4gZWxlbWVudCBpbiBleGNlc3NEb21DaGlsZHJlbiBvciB0aGUgYGRvbWBcblx0XHRcdC8vIGFyZ3VtZW50IG1hdGNoZXMgYW4gZWxlbWVudCBpbiBleGNlc3NEb21DaGlsZHJlbiwgcmVtb3ZlIGl0IGZyb21cblx0XHRcdC8vIGV4Y2Vzc0RvbUNoaWxkcmVuIHNvIGl0IGlzbid0IGxhdGVyIHJlbW92ZWQgaW4gZGlmZkNoaWxkcmVuXG5cdFx0XHRpZiAoXG5cdFx0XHRcdHZhbHVlICYmXG5cdFx0XHRcdCdzZXRBdHRyaWJ1dGUnIGluIHZhbHVlID09PSAhIW5vZGVUeXBlICYmXG5cdFx0XHRcdChub2RlVHlwZSA/IHZhbHVlLmxvY2FsTmFtZSA9PT0gbm9kZVR5cGUgOiB2YWx1ZS5ub2RlVHlwZSA9PT0gMylcblx0XHRcdCkge1xuXHRcdFx0XHRkb20gPSB2YWx1ZTtcblx0XHRcdFx0ZXhjZXNzRG9tQ2hpbGRyZW5baV0gPSBudWxsO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRpZiAoZG9tID09IG51bGwpIHtcblx0XHRpZiAobm9kZVR5cGUgPT09IG51bGwpIHtcblx0XHRcdHJldHVybiBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShuZXdQcm9wcyk7XG5cdFx0fVxuXG5cdFx0ZG9tID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKFxuXHRcdFx0bmFtZXNwYWNlLFxuXHRcdFx0bm9kZVR5cGUsXG5cdFx0XHRuZXdQcm9wcy5pcyAmJiBuZXdQcm9wc1xuXHRcdCk7XG5cblx0XHQvLyB3ZSBhcmUgY3JlYXRpbmcgYSBuZXcgbm9kZSwgc28gd2UgY2FuIGFzc3VtZSB0aGlzIGlzIGEgbmV3IHN1YnRyZWUgKGluXG5cdFx0Ly8gY2FzZSB3ZSBhcmUgaHlkcmF0aW5nKSwgdGhpcyBkZW9wdHMgdGhlIGh5ZHJhdGVcblx0XHRpZiAoaXNIeWRyYXRpbmcpIHtcblx0XHRcdGlmIChvcHRpb25zLl9oeWRyYXRpb25NaXNtYXRjaClcblx0XHRcdFx0b3B0aW9ucy5faHlkcmF0aW9uTWlzbWF0Y2gobmV3Vk5vZGUsIGV4Y2Vzc0RvbUNoaWxkcmVuKTtcblx0XHRcdGlzSHlkcmF0aW5nID0gZmFsc2U7XG5cdFx0fVxuXHRcdC8vIHdlIGNyZWF0ZWQgYSBuZXcgcGFyZW50LCBzbyBub25lIG9mIHRoZSBwcmV2aW91c2x5IGF0dGFjaGVkIGNoaWxkcmVuIGNhbiBiZSByZXVzZWQ6XG5cdFx0ZXhjZXNzRG9tQ2hpbGRyZW4gPSBudWxsO1xuXHR9XG5cblx0aWYgKG5vZGVUeXBlID09PSBudWxsKSB7XG5cdFx0Ly8gRHVyaW5nIGh5ZHJhdGlvbiwgd2Ugc3RpbGwgaGF2ZSB0byBzcGxpdCBtZXJnZWQgdGV4dCBmcm9tIFNTUidkIEhUTUwuXG5cdFx0aWYgKG9sZFByb3BzICE9PSBuZXdQcm9wcyAmJiAoIWlzSHlkcmF0aW5nIHx8IGRvbS5kYXRhICE9PSBuZXdQcm9wcykpIHtcblx0XHRcdGRvbS5kYXRhID0gbmV3UHJvcHM7XG5cdFx0fVxuXHR9IGVsc2Uge1xuXHRcdC8vIElmIGV4Y2Vzc0RvbUNoaWxkcmVuIHdhcyBub3QgbnVsbCwgcmVwb3B1bGF0ZSBpdCB3aXRoIHRoZSBjdXJyZW50IGVsZW1lbnQncyBjaGlsZHJlbjpcblx0XHRleGNlc3NEb21DaGlsZHJlbiA9IGV4Y2Vzc0RvbUNoaWxkcmVuICYmIHNsaWNlLmNhbGwoZG9tLmNoaWxkTm9kZXMpO1xuXG5cdFx0b2xkUHJvcHMgPSBvbGRWTm9kZS5wcm9wcyB8fCBFTVBUWV9PQko7XG5cblx0XHQvLyBJZiB3ZSBhcmUgaW4gYSBzaXR1YXRpb24gd2hlcmUgd2UgYXJlIG5vdCBoeWRyYXRpbmcgYnV0IGFyZSB1c2luZ1xuXHRcdC8vIGV4aXN0aW5nIERPTSAoZS5nLiByZXBsYWNlTm9kZSkgd2Ugc2hvdWxkIHJlYWQgdGhlIGV4aXN0aW5nIERPTVxuXHRcdC8vIGF0dHJpYnV0ZXMgdG8gZGlmZiB0aGVtXG5cdFx0aWYgKCFpc0h5ZHJhdGluZyAmJiBleGNlc3NEb21DaGlsZHJlbiAhPSBudWxsKSB7XG5cdFx0XHRvbGRQcm9wcyA9IHt9O1xuXHRcdFx0Zm9yIChpID0gMDsgaSA8IGRvbS5hdHRyaWJ1dGVzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdHZhbHVlID0gZG9tLmF0dHJpYnV0ZXNbaV07XG5cdFx0XHRcdG9sZFByb3BzW3ZhbHVlLm5hbWVdID0gdmFsdWUudmFsdWU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Zm9yIChpIGluIG9sZFByb3BzKSB7XG5cdFx0XHR2YWx1ZSA9IG9sZFByb3BzW2ldO1xuXHRcdFx0aWYgKGkgPT0gJ2NoaWxkcmVuJykge1xuXHRcdFx0fSBlbHNlIGlmIChpID09ICdkYW5nZXJvdXNseVNldElubmVySFRNTCcpIHtcblx0XHRcdFx0b2xkSHRtbCA9IHZhbHVlO1xuXHRcdFx0fSBlbHNlIGlmICghKGkgaW4gbmV3UHJvcHMpKSB7XG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHQoaSA9PSAndmFsdWUnICYmICdkZWZhdWx0VmFsdWUnIGluIG5ld1Byb3BzKSB8fFxuXHRcdFx0XHRcdChpID09ICdjaGVja2VkJyAmJiAnZGVmYXVsdENoZWNrZWQnIGluIG5ld1Byb3BzKVxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0fVxuXHRcdFx0XHRzZXRQcm9wZXJ0eShkb20sIGksIG51bGwsIHZhbHVlLCBuYW1lc3BhY2UpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIER1cmluZyBoeWRyYXRpb24sIHByb3BzIGFyZSBub3QgZGlmZmVkIGF0IGFsbCAoaW5jbHVkaW5nIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MKVxuXHRcdC8vIEBUT0RPIHdlIHNob3VsZCB3YXJuIGluIGRlYnVnIG1vZGUgd2hlbiBwcm9wcyBkb24ndCBtYXRjaCBoZXJlLlxuXHRcdGZvciAoaSBpbiBuZXdQcm9wcykge1xuXHRcdFx0dmFsdWUgPSBuZXdQcm9wc1tpXTtcblx0XHRcdGlmIChpID09ICdjaGlsZHJlbicpIHtcblx0XHRcdFx0bmV3Q2hpbGRyZW4gPSB2YWx1ZTtcblx0XHRcdH0gZWxzZSBpZiAoaSA9PSAnZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwnKSB7XG5cdFx0XHRcdG5ld0h0bWwgPSB2YWx1ZTtcblx0XHRcdH0gZWxzZSBpZiAoaSA9PSAndmFsdWUnKSB7XG5cdFx0XHRcdGlucHV0VmFsdWUgPSB2YWx1ZTtcblx0XHRcdH0gZWxzZSBpZiAoaSA9PSAnY2hlY2tlZCcpIHtcblx0XHRcdFx0Y2hlY2tlZCA9IHZhbHVlO1xuXHRcdFx0fSBlbHNlIGlmIChcblx0XHRcdFx0KCFpc0h5ZHJhdGluZyB8fCB0eXBlb2YgdmFsdWUgPT0gJ2Z1bmN0aW9uJykgJiZcblx0XHRcdFx0b2xkUHJvcHNbaV0gIT09IHZhbHVlXG5cdFx0XHQpIHtcblx0XHRcdFx0c2V0UHJvcGVydHkoZG9tLCBpLCB2YWx1ZSwgb2xkUHJvcHNbaV0sIG5hbWVzcGFjZSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gSWYgdGhlIG5ldyB2bm9kZSBkaWRuJ3QgaGF2ZSBkYW5nZXJvdXNseVNldElubmVySFRNTCwgZGlmZiBpdHMgY2hpbGRyZW5cblx0XHRpZiAobmV3SHRtbCkge1xuXHRcdFx0Ly8gQXZvaWQgcmUtYXBwbHlpbmcgdGhlIHNhbWUgJ19faHRtbCcgaWYgaXQgZGlkIG5vdCBjaGFuZ2VkIGJldHdlZW4gcmUtcmVuZGVyXG5cdFx0XHRpZiAoXG5cdFx0XHRcdCFpc0h5ZHJhdGluZyAmJlxuXHRcdFx0XHQoIW9sZEh0bWwgfHxcblx0XHRcdFx0XHQobmV3SHRtbC5fX2h0bWwgIT09IG9sZEh0bWwuX19odG1sICYmXG5cdFx0XHRcdFx0XHRuZXdIdG1sLl9faHRtbCAhPT0gZG9tLmlubmVySFRNTCkpXG5cdFx0XHQpIHtcblx0XHRcdFx0ZG9tLmlubmVySFRNTCA9IG5ld0h0bWwuX19odG1sO1xuXHRcdFx0fVxuXG5cdFx0XHRuZXdWTm9kZS5fY2hpbGRyZW4gPSBbXTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0aWYgKG9sZEh0bWwpIGRvbS5pbm5lckhUTUwgPSAnJztcblxuXHRcdFx0ZGlmZkNoaWxkcmVuKFxuXHRcdFx0XHRkb20sXG5cdFx0XHRcdGlzQXJyYXkobmV3Q2hpbGRyZW4pID8gbmV3Q2hpbGRyZW4gOiBbbmV3Q2hpbGRyZW5dLFxuXHRcdFx0XHRuZXdWTm9kZSxcblx0XHRcdFx0b2xkVk5vZGUsXG5cdFx0XHRcdGdsb2JhbENvbnRleHQsXG5cdFx0XHRcdG5vZGVUeXBlID09PSAnZm9yZWlnbk9iamVjdCdcblx0XHRcdFx0XHQ/ICdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJ1xuXHRcdFx0XHRcdDogbmFtZXNwYWNlLFxuXHRcdFx0XHRleGNlc3NEb21DaGlsZHJlbixcblx0XHRcdFx0Y29tbWl0UXVldWUsXG5cdFx0XHRcdGV4Y2Vzc0RvbUNoaWxkcmVuXG5cdFx0XHRcdFx0PyBleGNlc3NEb21DaGlsZHJlblswXVxuXHRcdFx0XHRcdDogb2xkVk5vZGUuX2NoaWxkcmVuICYmIGdldERvbVNpYmxpbmcob2xkVk5vZGUsIDApLFxuXHRcdFx0XHRpc0h5ZHJhdGluZyxcblx0XHRcdFx0cmVmUXVldWVcblx0XHRcdCk7XG5cblx0XHRcdC8vIFJlbW92ZSBjaGlsZHJlbiB0aGF0IGFyZSBub3QgcGFydCBvZiBhbnkgdm5vZGUuXG5cdFx0XHRpZiAoZXhjZXNzRG9tQ2hpbGRyZW4gIT0gbnVsbCkge1xuXHRcdFx0XHRmb3IgKGkgPSBleGNlc3NEb21DaGlsZHJlbi5sZW5ndGg7IGktLTsgKSB7XG5cdFx0XHRcdFx0cmVtb3ZlTm9kZShleGNlc3NEb21DaGlsZHJlbltpXSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBBcyBhYm92ZSwgZG9uJ3QgZGlmZiBwcm9wcyBkdXJpbmcgaHlkcmF0aW9uXG5cdFx0aWYgKCFpc0h5ZHJhdGluZykge1xuXHRcdFx0aSA9ICd2YWx1ZSc7XG5cdFx0XHRpZiAobm9kZVR5cGUgPT09ICdwcm9ncmVzcycgJiYgaW5wdXRWYWx1ZSA9PSBudWxsKSB7XG5cdFx0XHRcdGRvbS5yZW1vdmVBdHRyaWJ1dGUoJ3ZhbHVlJyk7XG5cdFx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0XHRpbnB1dFZhbHVlICE9PSB1bmRlZmluZWQgJiZcblx0XHRcdFx0Ly8gIzI3NTYgRm9yIHRoZSA8cHJvZ3Jlc3M+LWVsZW1lbnQgdGhlIGluaXRpYWwgdmFsdWUgaXMgMCxcblx0XHRcdFx0Ly8gZGVzcGl0ZSB0aGUgYXR0cmlidXRlIG5vdCBiZWluZyBwcmVzZW50LiBXaGVuIHRoZSBhdHRyaWJ1dGVcblx0XHRcdFx0Ly8gaXMgbWlzc2luZyB0aGUgcHJvZ3Jlc3MgYmFyIGlzIHRyZWF0ZWQgYXMgaW5kZXRlcm1pbmF0ZS5cblx0XHRcdFx0Ly8gVG8gZml4IHRoYXQgd2UnbGwgYWx3YXlzIHVwZGF0ZSBpdCB3aGVuIGl0IGlzIDAgZm9yIHByb2dyZXNzIGVsZW1lbnRzXG5cdFx0XHRcdChpbnB1dFZhbHVlICE9PSBkb21baV0gfHxcblx0XHRcdFx0XHQobm9kZVR5cGUgPT09ICdwcm9ncmVzcycgJiYgIWlucHV0VmFsdWUpIHx8XG5cdFx0XHRcdFx0Ly8gVGhpcyBpcyBvbmx5IGZvciBJRSAxMSB0byBmaXggPHNlbGVjdD4gdmFsdWUgbm90IGJlaW5nIHVwZGF0ZWQuXG5cdFx0XHRcdFx0Ly8gVG8gYXZvaWQgYSBzdGFsZSBzZWxlY3QgdmFsdWUgd2UgbmVlZCB0byBzZXQgdGhlIG9wdGlvbi52YWx1ZVxuXHRcdFx0XHRcdC8vIGFnYWluLCB3aGljaCB0cmlnZ2VycyBJRTExIHRvIHJlLWV2YWx1YXRlIHRoZSBzZWxlY3QgdmFsdWVcblx0XHRcdFx0XHQobm9kZVR5cGUgPT09ICdvcHRpb24nICYmIGlucHV0VmFsdWUgIT09IG9sZFByb3BzW2ldKSlcblx0XHRcdCkge1xuXHRcdFx0XHRzZXRQcm9wZXJ0eShkb20sIGksIGlucHV0VmFsdWUsIG9sZFByb3BzW2ldLCBuYW1lc3BhY2UpO1xuXHRcdFx0fVxuXG5cdFx0XHRpID0gJ2NoZWNrZWQnO1xuXHRcdFx0aWYgKGNoZWNrZWQgIT09IHVuZGVmaW5lZCAmJiBjaGVja2VkICE9PSBkb21baV0pIHtcblx0XHRcdFx0c2V0UHJvcGVydHkoZG9tLCBpLCBjaGVja2VkLCBvbGRQcm9wc1tpXSwgbmFtZXNwYWNlKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gZG9tO1xufVxuXG4vKipcbiAqIEludm9rZSBvciB1cGRhdGUgYSByZWYsIGRlcGVuZGluZyBvbiB3aGV0aGVyIGl0IGlzIGEgZnVuY3Rpb24gb3Igb2JqZWN0IHJlZi5cbiAqIEBwYXJhbSB7UmVmPGFueT4gJiB7IF91bm1vdW50PzogdW5rbm93biB9fSByZWZcbiAqIEBwYXJhbSB7YW55fSB2YWx1ZVxuICogQHBhcmFtIHtWTm9kZX0gdm5vZGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5UmVmKHJlZiwgdmFsdWUsIHZub2RlKSB7XG5cdHRyeSB7XG5cdFx0aWYgKHR5cGVvZiByZWYgPT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0bGV0IGhhc1JlZlVubW91bnQgPSB0eXBlb2YgcmVmLl91bm1vdW50ID09ICdmdW5jdGlvbic7XG5cdFx0XHRpZiAoaGFzUmVmVW5tb3VudCkge1xuXHRcdFx0XHQvLyBAdHMtaWdub3JlIFRTIGRvZXNuJ3QgbGlrZSBtb3ZpbmcgbmFycm93aW5nIGNoZWNrcyBpbnRvIHZhcmlhYmxlc1xuXHRcdFx0XHRyZWYuX3VubW91bnQoKTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCFoYXNSZWZVbm1vdW50IHx8IHZhbHVlICE9IG51bGwpIHtcblx0XHRcdFx0Ly8gU3RvcmUgdGhlIGNsZWFudXAgZnVuY3Rpb24gb24gdGhlIGZ1bmN0aW9uXG5cdFx0XHRcdC8vIGluc3RhbmNlIG9iamVjdCBpdHNlbGYgdG8gYXZvaWQgc2hhcGVcblx0XHRcdFx0Ly8gdHJhbnNpdGlvbmluZyB2bm9kZVxuXHRcdFx0XHRyZWYuX3VubW91bnQgPSByZWYodmFsdWUpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSByZWYuY3VycmVudCA9IHZhbHVlO1xuXHR9IGNhdGNoIChlKSB7XG5cdFx0b3B0aW9ucy5fY2F0Y2hFcnJvcihlLCB2bm9kZSk7XG5cdH1cbn1cblxuLyoqXG4gKiBVbm1vdW50IGEgdmlydHVhbCBub2RlIGZyb20gdGhlIHRyZWUgYW5kIGFwcGx5IERPTSBjaGFuZ2VzXG4gKiBAcGFyYW0ge1ZOb2RlfSB2bm9kZSBUaGUgdmlydHVhbCBub2RlIHRvIHVubW91bnRcbiAqIEBwYXJhbSB7Vk5vZGV9IHBhcmVudFZOb2RlIFRoZSBwYXJlbnQgb2YgdGhlIFZOb2RlIHRoYXQgaW5pdGlhdGVkIHRoZSB1bm1vdW50XG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtza2lwUmVtb3ZlXSBGbGFnIHRoYXQgaW5kaWNhdGVzIHRoYXQgYSBwYXJlbnQgbm9kZSBvZiB0aGVcbiAqIGN1cnJlbnQgZWxlbWVudCBpcyBhbHJlYWR5IGRldGFjaGVkIGZyb20gdGhlIERPTS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVubW91bnQodm5vZGUsIHBhcmVudFZOb2RlLCBza2lwUmVtb3ZlKSB7XG5cdGxldCByO1xuXHRpZiAob3B0aW9ucy51bm1vdW50KSBvcHRpb25zLnVubW91bnQodm5vZGUpO1xuXG5cdGlmICgociA9IHZub2RlLnJlZikpIHtcblx0XHRpZiAoIXIuY3VycmVudCB8fCByLmN1cnJlbnQgPT09IHZub2RlLl9kb20pIHtcblx0XHRcdGFwcGx5UmVmKHIsIG51bGwsIHBhcmVudFZOb2RlKTtcblx0XHR9XG5cdH1cblxuXHRpZiAoKHIgPSB2bm9kZS5fY29tcG9uZW50KSAhPSBudWxsKSB7XG5cdFx0aWYgKHIuY29tcG9uZW50V2lsbFVubW91bnQpIHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdHIuY29tcG9uZW50V2lsbFVubW91bnQoKTtcblx0XHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdFx0b3B0aW9ucy5fY2F0Y2hFcnJvcihlLCBwYXJlbnRWTm9kZSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0ci5iYXNlID0gci5fcGFyZW50RG9tID0gbnVsbDtcblx0fVxuXG5cdGlmICgociA9IHZub2RlLl9jaGlsZHJlbikpIHtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHIubGVuZ3RoOyBpKyspIHtcblx0XHRcdGlmIChyW2ldKSB7XG5cdFx0XHRcdHVubW91bnQoXG5cdFx0XHRcdFx0cltpXSxcblx0XHRcdFx0XHRwYXJlbnRWTm9kZSxcblx0XHRcdFx0XHRza2lwUmVtb3ZlIHx8IHR5cGVvZiB2bm9kZS50eXBlICE9ICdmdW5jdGlvbidcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRpZiAoIXNraXBSZW1vdmUpIHtcblx0XHRyZW1vdmVOb2RlKHZub2RlLl9kb20pO1xuXHR9XG5cblx0Ly8gTXVzdCBiZSBzZXQgdG8gYHVuZGVmaW5lZGAgdG8gcHJvcGVybHkgY2xlYW4gdXAgYF9uZXh0RG9tYFxuXHQvLyBmb3Igd2hpY2ggYG51bGxgIGlzIGEgdmFsaWQgdmFsdWUuIFNlZSBjb21tZW50IGluIGBjcmVhdGUtZWxlbWVudC5qc2Bcblx0dm5vZGUuX2NvbXBvbmVudCA9IHZub2RlLl9wYXJlbnQgPSB2bm9kZS5fZG9tID0gdm5vZGUuX25leHREb20gPSB1bmRlZmluZWQ7XG59XG5cbi8qKiBUaGUgYC5yZW5kZXIoKWAgbWV0aG9kIGZvciBhIFBGQyBiYWNraW5nIGluc3RhbmNlLiAqL1xuZnVuY3Rpb24gZG9SZW5kZXIocHJvcHMsIHN0YXRlLCBjb250ZXh0KSB7XG5cdHJldHVybiB0aGlzLmNvbnN0cnVjdG9yKHByb3BzLCBjb250ZXh0KTtcbn1cbiIsICJpbXBvcnQgeyBFTVBUWV9PQkogfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBjb21taXRSb290LCBkaWZmIH0gZnJvbSAnLi9kaWZmL2luZGV4JztcbmltcG9ydCB7IGNyZWF0ZUVsZW1lbnQsIEZyYWdtZW50IH0gZnJvbSAnLi9jcmVhdGUtZWxlbWVudCc7XG5pbXBvcnQgb3B0aW9ucyBmcm9tICcuL29wdGlvbnMnO1xuaW1wb3J0IHsgc2xpY2UgfSBmcm9tICcuL3V0aWwnO1xuXG4vKipcbiAqIFJlbmRlciBhIFByZWFjdCB2aXJ0dWFsIG5vZGUgaW50byBhIERPTSBlbGVtZW50XG4gKiBAcGFyYW0ge0NvbXBvbmVudENoaWxkfSB2bm9kZSBUaGUgdmlydHVhbCBub2RlIHRvIHJlbmRlclxuICogQHBhcmFtIHtQcmVhY3RFbGVtZW50fSBwYXJlbnREb20gVGhlIERPTSBlbGVtZW50IHRvIHJlbmRlciBpbnRvXG4gKiBAcGFyYW0ge1ByZWFjdEVsZW1lbnQgfCBvYmplY3R9IFtyZXBsYWNlTm9kZV0gT3B0aW9uYWw6IEF0dGVtcHQgdG8gcmUtdXNlIGFuXG4gKiBleGlzdGluZyBET00gdHJlZSByb290ZWQgYXQgYHJlcGxhY2VOb2RlYFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyKHZub2RlLCBwYXJlbnREb20sIHJlcGxhY2VOb2RlKSB7XG5cdGlmIChvcHRpb25zLl9yb290KSBvcHRpb25zLl9yb290KHZub2RlLCBwYXJlbnREb20pO1xuXG5cdC8vIFdlIGFidXNlIHRoZSBgcmVwbGFjZU5vZGVgIHBhcmFtZXRlciBpbiBgaHlkcmF0ZSgpYCB0byBzaWduYWwgaWYgd2UgYXJlIGluXG5cdC8vIGh5ZHJhdGlvbiBtb2RlIG9yIG5vdCBieSBwYXNzaW5nIHRoZSBgaHlkcmF0ZWAgZnVuY3Rpb24gaW5zdGVhZCBvZiBhIERPTVxuXHQvLyBlbGVtZW50Li5cblx0bGV0IGlzSHlkcmF0aW5nID0gdHlwZW9mIHJlcGxhY2VOb2RlID09ICdmdW5jdGlvbic7XG5cblx0Ly8gVG8gYmUgYWJsZSB0byBzdXBwb3J0IGNhbGxpbmcgYHJlbmRlcigpYCBtdWx0aXBsZSB0aW1lcyBvbiB0aGUgc2FtZVxuXHQvLyBET00gbm9kZSwgd2UgbmVlZCB0byBvYnRhaW4gYSByZWZlcmVuY2UgdG8gdGhlIHByZXZpb3VzIHRyZWUuIFdlIGRvXG5cdC8vIHRoaXMgYnkgYXNzaWduaW5nIGEgbmV3IGBfY2hpbGRyZW5gIHByb3BlcnR5IHRvIERPTSBub2RlcyB3aGljaCBwb2ludHNcblx0Ly8gdG8gdGhlIGxhc3QgcmVuZGVyZWQgdHJlZS4gQnkgZGVmYXVsdCB0aGlzIHByb3BlcnR5IGlzIG5vdCBwcmVzZW50LCB3aGljaFxuXHQvLyBtZWFucyB0aGF0IHdlIGFyZSBtb3VudGluZyBhIG5ldyB0cmVlIGZvciB0aGUgZmlyc3QgdGltZS5cblx0bGV0IG9sZFZOb2RlID0gaXNIeWRyYXRpbmdcblx0XHQ/IG51bGxcblx0XHQ6IChyZXBsYWNlTm9kZSAmJiByZXBsYWNlTm9kZS5fY2hpbGRyZW4pIHx8IHBhcmVudERvbS5fY2hpbGRyZW47XG5cblx0dm5vZGUgPSAoKCFpc0h5ZHJhdGluZyAmJiByZXBsYWNlTm9kZSkgfHwgcGFyZW50RG9tKS5fY2hpbGRyZW4gPVxuXHRcdGNyZWF0ZUVsZW1lbnQoRnJhZ21lbnQsIG51bGwsIFt2bm9kZV0pO1xuXG5cdC8vIExpc3Qgb2YgZWZmZWN0cyB0aGF0IG5lZWQgdG8gYmUgY2FsbGVkIGFmdGVyIGRpZmZpbmcuXG5cdGxldCBjb21taXRRdWV1ZSA9IFtdLFxuXHRcdHJlZlF1ZXVlID0gW107XG5cdGRpZmYoXG5cdFx0cGFyZW50RG9tLFxuXHRcdC8vIERldGVybWluZSB0aGUgbmV3IHZub2RlIHRyZWUgYW5kIHN0b3JlIGl0IG9uIHRoZSBET00gZWxlbWVudCBvblxuXHRcdC8vIG91ciBjdXN0b20gYF9jaGlsZHJlbmAgcHJvcGVydHkuXG5cdFx0dm5vZGUsXG5cdFx0b2xkVk5vZGUgfHwgRU1QVFlfT0JKLFxuXHRcdEVNUFRZX09CSixcblx0XHRwYXJlbnREb20ubmFtZXNwYWNlVVJJLFxuXHRcdCFpc0h5ZHJhdGluZyAmJiByZXBsYWNlTm9kZVxuXHRcdFx0PyBbcmVwbGFjZU5vZGVdXG5cdFx0XHQ6IG9sZFZOb2RlXG5cdFx0XHRcdD8gbnVsbFxuXHRcdFx0XHQ6IHBhcmVudERvbS5maXJzdENoaWxkXG5cdFx0XHRcdFx0PyBzbGljZS5jYWxsKHBhcmVudERvbS5jaGlsZE5vZGVzKVxuXHRcdFx0XHRcdDogbnVsbCxcblx0XHRjb21taXRRdWV1ZSxcblx0XHQhaXNIeWRyYXRpbmcgJiYgcmVwbGFjZU5vZGVcblx0XHRcdD8gcmVwbGFjZU5vZGVcblx0XHRcdDogb2xkVk5vZGVcblx0XHRcdFx0PyBvbGRWTm9kZS5fZG9tXG5cdFx0XHRcdDogcGFyZW50RG9tLmZpcnN0Q2hpbGQsXG5cdFx0aXNIeWRyYXRpbmcsXG5cdFx0cmVmUXVldWVcblx0KTtcblxuXHQvLyBGbHVzaCBhbGwgcXVldWVkIGVmZmVjdHNcblx0Y29tbWl0Um9vdChjb21taXRRdWV1ZSwgdm5vZGUsIHJlZlF1ZXVlKTtcbn1cblxuLyoqXG4gKiBVcGRhdGUgYW4gZXhpc3RpbmcgRE9NIGVsZW1lbnQgd2l0aCBkYXRhIGZyb20gYSBQcmVhY3QgdmlydHVhbCBub2RlXG4gKiBAcGFyYW0ge0NvbXBvbmVudENoaWxkfSB2bm9kZSBUaGUgdmlydHVhbCBub2RlIHRvIHJlbmRlclxuICogQHBhcmFtIHtQcmVhY3RFbGVtZW50fSBwYXJlbnREb20gVGhlIERPTSBlbGVtZW50IHRvIHVwZGF0ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gaHlkcmF0ZSh2bm9kZSwgcGFyZW50RG9tKSB7XG5cdHJlbmRlcih2bm9kZSwgcGFyZW50RG9tLCBoeWRyYXRlKTtcbn1cbiIsICIvKipcbiAqIEZpbmQgdGhlIGNsb3Nlc3QgZXJyb3IgYm91bmRhcnkgdG8gYSB0aHJvd24gZXJyb3IgYW5kIGNhbGwgaXRcbiAqIEBwYXJhbSB7b2JqZWN0fSBlcnJvciBUaGUgdGhyb3duIHZhbHVlXG4gKiBAcGFyYW0ge1ZOb2RlfSB2bm9kZSBUaGUgdm5vZGUgdGhhdCB0aHJldyB0aGUgZXJyb3IgdGhhdCB3YXMgY2F1Z2h0IChleGNlcHRcbiAqIGZvciB1bm1vdW50aW5nIHdoZW4gdGhpcyBwYXJhbWV0ZXIgaXMgdGhlIGhpZ2hlc3QgcGFyZW50IHRoYXQgd2FzIGJlaW5nXG4gKiB1bm1vdW50ZWQpXG4gKiBAcGFyYW0ge1ZOb2RlfSBbb2xkVk5vZGVdXG4gKiBAcGFyYW0ge0Vycm9ySW5mb30gW2Vycm9ySW5mb11cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIF9jYXRjaEVycm9yKGVycm9yLCB2bm9kZSwgb2xkVk5vZGUsIGVycm9ySW5mbykge1xuXHQvKiogQHR5cGUge0NvbXBvbmVudH0gKi9cblx0bGV0IGNvbXBvbmVudCxcblx0XHQvKiogQHR5cGUge0NvbXBvbmVudFR5cGV9ICovXG5cdFx0Y3Rvcixcblx0XHQvKiogQHR5cGUge2Jvb2xlYW59ICovXG5cdFx0aGFuZGxlZDtcblxuXHRmb3IgKDsgKHZub2RlID0gdm5vZGUuX3BhcmVudCk7ICkge1xuXHRcdGlmICgoY29tcG9uZW50ID0gdm5vZGUuX2NvbXBvbmVudCkgJiYgIWNvbXBvbmVudC5fcHJvY2Vzc2luZ0V4Y2VwdGlvbikge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0Y3RvciA9IGNvbXBvbmVudC5jb25zdHJ1Y3RvcjtcblxuXHRcdFx0XHRpZiAoY3RvciAmJiBjdG9yLmdldERlcml2ZWRTdGF0ZUZyb21FcnJvciAhPSBudWxsKSB7XG5cdFx0XHRcdFx0Y29tcG9uZW50LnNldFN0YXRlKGN0b3IuZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yKGVycm9yKSk7XG5cdFx0XHRcdFx0aGFuZGxlZCA9IGNvbXBvbmVudC5fZGlydHk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoY29tcG9uZW50LmNvbXBvbmVudERpZENhdGNoICE9IG51bGwpIHtcblx0XHRcdFx0XHRjb21wb25lbnQuY29tcG9uZW50RGlkQ2F0Y2goZXJyb3IsIGVycm9ySW5mbyB8fCB7fSk7XG5cdFx0XHRcdFx0aGFuZGxlZCA9IGNvbXBvbmVudC5fZGlydHk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBUaGlzIGlzIGFuIGVycm9yIGJvdW5kYXJ5LiBNYXJrIGl0IGFzIGhhdmluZyBiYWlsZWQgb3V0LCBhbmQgd2hldGhlciBpdCB3YXMgbWlkLWh5ZHJhdGlvbi5cblx0XHRcdFx0aWYgKGhhbmRsZWQpIHtcblx0XHRcdFx0XHRyZXR1cm4gKGNvbXBvbmVudC5fcGVuZGluZ0Vycm9yID0gY29tcG9uZW50KTtcblx0XHRcdFx0fVxuXHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHRlcnJvciA9IGU7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0dGhyb3cgZXJyb3I7XG59XG4iLCAiaW1wb3J0IHsgYXNzaWduLCBzbGljZSB9IGZyb20gJy4vdXRpbCc7XG5pbXBvcnQgeyBjcmVhdGVWTm9kZSB9IGZyb20gJy4vY3JlYXRlLWVsZW1lbnQnO1xuXG4vKipcbiAqIENsb25lcyB0aGUgZ2l2ZW4gVk5vZGUsIG9wdGlvbmFsbHkgYWRkaW5nIGF0dHJpYnV0ZXMvcHJvcHMgYW5kIHJlcGxhY2luZyBpdHNcbiAqIGNoaWxkcmVuLlxuICogQHBhcmFtIHtWTm9kZX0gdm5vZGUgVGhlIHZpcnR1YWwgRE9NIGVsZW1lbnQgdG8gY2xvbmVcbiAqIEBwYXJhbSB7b2JqZWN0fSBwcm9wcyBBdHRyaWJ1dGVzL3Byb3BzIHRvIGFkZCB3aGVuIGNsb25pbmdcbiAqIEBwYXJhbSB7QXJyYXk8Q29tcG9uZW50Q2hpbGRyZW4+fSByZXN0IEFueSBhZGRpdGlvbmFsIGFyZ3VtZW50cyB3aWxsIGJlIHVzZWRcbiAqIGFzIHJlcGxhY2VtZW50IGNoaWxkcmVuLlxuICogQHJldHVybnMge1ZOb2RlfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY2xvbmVFbGVtZW50KHZub2RlLCBwcm9wcywgY2hpbGRyZW4pIHtcblx0bGV0IG5vcm1hbGl6ZWRQcm9wcyA9IGFzc2lnbih7fSwgdm5vZGUucHJvcHMpLFxuXHRcdGtleSxcblx0XHRyZWYsXG5cdFx0aTtcblxuXHRsZXQgZGVmYXVsdFByb3BzO1xuXG5cdGlmICh2bm9kZS50eXBlICYmIHZub2RlLnR5cGUuZGVmYXVsdFByb3BzKSB7XG5cdFx0ZGVmYXVsdFByb3BzID0gdm5vZGUudHlwZS5kZWZhdWx0UHJvcHM7XG5cdH1cblxuXHRmb3IgKGkgaW4gcHJvcHMpIHtcblx0XHRpZiAoaSA9PSAna2V5Jykga2V5ID0gcHJvcHNbaV07XG5cdFx0ZWxzZSBpZiAoaSA9PSAncmVmJykgcmVmID0gcHJvcHNbaV07XG5cdFx0ZWxzZSBpZiAocHJvcHNbaV0gPT09IHVuZGVmaW5lZCAmJiBkZWZhdWx0UHJvcHMgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0bm9ybWFsaXplZFByb3BzW2ldID0gZGVmYXVsdFByb3BzW2ldO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRub3JtYWxpemVkUHJvcHNbaV0gPSBwcm9wc1tpXTtcblx0XHR9XG5cdH1cblxuXHRpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDIpIHtcblx0XHRub3JtYWxpemVkUHJvcHMuY2hpbGRyZW4gPVxuXHRcdFx0YXJndW1lbnRzLmxlbmd0aCA+IDMgPyBzbGljZS5jYWxsKGFyZ3VtZW50cywgMikgOiBjaGlsZHJlbjtcblx0fVxuXG5cdHJldHVybiBjcmVhdGVWTm9kZShcblx0XHR2bm9kZS50eXBlLFxuXHRcdG5vcm1hbGl6ZWRQcm9wcyxcblx0XHRrZXkgfHwgdm5vZGUua2V5LFxuXHRcdHJlZiB8fCB2bm9kZS5yZWYsXG5cdFx0bnVsbFxuXHQpO1xufVxuIiwgImltcG9ydCB7IG9wdGlvbnMgYXMgX29wdGlvbnMgfSBmcm9tICdwcmVhY3QnO1xuXG4vKiogQHR5cGUge251bWJlcn0gKi9cbmxldCBjdXJyZW50SW5kZXg7XG5cbi8qKiBAdHlwZSB7aW1wb3J0KCcuL2ludGVybmFsJykuQ29tcG9uZW50fSAqL1xubGV0IGN1cnJlbnRDb21wb25lbnQ7XG5cbi8qKiBAdHlwZSB7aW1wb3J0KCcuL2ludGVybmFsJykuQ29tcG9uZW50fSAqL1xubGV0IHByZXZpb3VzQ29tcG9uZW50O1xuXG4vKiogQHR5cGUge251bWJlcn0gKi9cbmxldCBjdXJyZW50SG9vayA9IDA7XG5cbi8qKiBAdHlwZSB7QXJyYXk8aW1wb3J0KCcuL2ludGVybmFsJykuQ29tcG9uZW50Pn0gKi9cbmxldCBhZnRlclBhaW50RWZmZWN0cyA9IFtdO1xuXG4vLyBDYXN0IHRvIHVzZSBpbnRlcm5hbCBPcHRpb25zIHR5cGVcbmNvbnN0IG9wdGlvbnMgPSAvKiogQHR5cGUge2ltcG9ydCgnLi9pbnRlcm5hbCcpLk9wdGlvbnN9ICovIChfb3B0aW9ucyk7XG5cbmxldCBvbGRCZWZvcmVEaWZmID0gb3B0aW9ucy5fZGlmZjtcbmxldCBvbGRCZWZvcmVSZW5kZXIgPSBvcHRpb25zLl9yZW5kZXI7XG5sZXQgb2xkQWZ0ZXJEaWZmID0gb3B0aW9ucy5kaWZmZWQ7XG5sZXQgb2xkQ29tbWl0ID0gb3B0aW9ucy5fY29tbWl0O1xubGV0IG9sZEJlZm9yZVVubW91bnQgPSBvcHRpb25zLnVubW91bnQ7XG5sZXQgb2xkUm9vdCA9IG9wdGlvbnMuX3Jvb3Q7XG5cbmNvbnN0IFJBRl9USU1FT1VUID0gMTAwO1xubGV0IHByZXZSYWY7XG5cbi8qKiBAdHlwZSB7KHZub2RlOiBpbXBvcnQoJy4vaW50ZXJuYWwnKS5WTm9kZSkgPT4gdm9pZH0gKi9cbm9wdGlvbnMuX2RpZmYgPSB2bm9kZSA9PiB7XG5cdGN1cnJlbnRDb21wb25lbnQgPSBudWxsO1xuXHRpZiAob2xkQmVmb3JlRGlmZikgb2xkQmVmb3JlRGlmZih2bm9kZSk7XG59O1xuXG5vcHRpb25zLl9yb290ID0gKHZub2RlLCBwYXJlbnREb20pID0+IHtcblx0aWYgKHZub2RlICYmIHBhcmVudERvbS5fY2hpbGRyZW4gJiYgcGFyZW50RG9tLl9jaGlsZHJlbi5fbWFzaykge1xuXHRcdHZub2RlLl9tYXNrID0gcGFyZW50RG9tLl9jaGlsZHJlbi5fbWFzaztcblx0fVxuXG5cdGlmIChvbGRSb290KSBvbGRSb290KHZub2RlLCBwYXJlbnREb20pO1xufTtcblxuLyoqIEB0eXBlIHsodm5vZGU6IGltcG9ydCgnLi9pbnRlcm5hbCcpLlZOb2RlKSA9PiB2b2lkfSAqL1xub3B0aW9ucy5fcmVuZGVyID0gdm5vZGUgPT4ge1xuXHRpZiAob2xkQmVmb3JlUmVuZGVyKSBvbGRCZWZvcmVSZW5kZXIodm5vZGUpO1xuXG5cdGN1cnJlbnRDb21wb25lbnQgPSB2bm9kZS5fY29tcG9uZW50O1xuXHRjdXJyZW50SW5kZXggPSAwO1xuXG5cdGNvbnN0IGhvb2tzID0gY3VycmVudENvbXBvbmVudC5fX2hvb2tzO1xuXHRpZiAoaG9va3MpIHtcblx0XHRpZiAocHJldmlvdXNDb21wb25lbnQgPT09IGN1cnJlbnRDb21wb25lbnQpIHtcblx0XHRcdGhvb2tzLl9wZW5kaW5nRWZmZWN0cyA9IFtdO1xuXHRcdFx0Y3VycmVudENvbXBvbmVudC5fcmVuZGVyQ2FsbGJhY2tzID0gW107XG5cdFx0XHRob29rcy5fbGlzdC5mb3JFYWNoKGhvb2tJdGVtID0+IHtcblx0XHRcdFx0aWYgKGhvb2tJdGVtLl9uZXh0VmFsdWUpIHtcblx0XHRcdFx0XHRob29rSXRlbS5fdmFsdWUgPSBob29rSXRlbS5fbmV4dFZhbHVlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGhvb2tJdGVtLl9wZW5kaW5nQXJncyA9IGhvb2tJdGVtLl9uZXh0VmFsdWUgPSB1bmRlZmluZWQ7XG5cdFx0XHR9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0aG9va3MuX3BlbmRpbmdFZmZlY3RzLmZvckVhY2goaW52b2tlQ2xlYW51cCk7XG5cdFx0XHRob29rcy5fcGVuZGluZ0VmZmVjdHMuZm9yRWFjaChpbnZva2VFZmZlY3QpO1xuXHRcdFx0aG9va3MuX3BlbmRpbmdFZmZlY3RzID0gW107XG5cdFx0XHRjdXJyZW50SW5kZXggPSAwO1xuXHRcdH1cblx0fVxuXHRwcmV2aW91c0NvbXBvbmVudCA9IGN1cnJlbnRDb21wb25lbnQ7XG59O1xuXG4vKiogQHR5cGUgeyh2bm9kZTogaW1wb3J0KCcuL2ludGVybmFsJykuVk5vZGUpID0+IHZvaWR9ICovXG5vcHRpb25zLmRpZmZlZCA9IHZub2RlID0+IHtcblx0aWYgKG9sZEFmdGVyRGlmZikgb2xkQWZ0ZXJEaWZmKHZub2RlKTtcblxuXHRjb25zdCBjID0gdm5vZGUuX2NvbXBvbmVudDtcblx0aWYgKGMgJiYgYy5fX2hvb2tzKSB7XG5cdFx0aWYgKGMuX19ob29rcy5fcGVuZGluZ0VmZmVjdHMubGVuZ3RoKSBhZnRlclBhaW50KGFmdGVyUGFpbnRFZmZlY3RzLnB1c2goYykpO1xuXHRcdGMuX19ob29rcy5fbGlzdC5mb3JFYWNoKGhvb2tJdGVtID0+IHtcblx0XHRcdGlmIChob29rSXRlbS5fcGVuZGluZ0FyZ3MpIHtcblx0XHRcdFx0aG9va0l0ZW0uX2FyZ3MgPSBob29rSXRlbS5fcGVuZGluZ0FyZ3M7XG5cdFx0XHR9XG5cdFx0XHRob29rSXRlbS5fcGVuZGluZ0FyZ3MgPSB1bmRlZmluZWQ7XG5cdFx0fSk7XG5cdH1cblx0cHJldmlvdXNDb21wb25lbnQgPSBjdXJyZW50Q29tcG9uZW50ID0gbnVsbDtcbn07XG5cbi8vIFRPRE86IEltcHJvdmUgdHlwaW5nIG9mIGNvbW1pdFF1ZXVlIHBhcmFtZXRlclxuLyoqIEB0eXBlIHsodm5vZGU6IGltcG9ydCgnLi9pbnRlcm5hbCcpLlZOb2RlLCBjb21taXRRdWV1ZTogYW55KSA9PiB2b2lkfSAqL1xub3B0aW9ucy5fY29tbWl0ID0gKHZub2RlLCBjb21taXRRdWV1ZSkgPT4ge1xuXHRjb21taXRRdWV1ZS5zb21lKGNvbXBvbmVudCA9PiB7XG5cdFx0dHJ5IHtcblx0XHRcdGNvbXBvbmVudC5fcmVuZGVyQ2FsbGJhY2tzLmZvckVhY2goaW52b2tlQ2xlYW51cCk7XG5cdFx0XHRjb21wb25lbnQuX3JlbmRlckNhbGxiYWNrcyA9IGNvbXBvbmVudC5fcmVuZGVyQ2FsbGJhY2tzLmZpbHRlcihjYiA9PlxuXHRcdFx0XHRjYi5fdmFsdWUgPyBpbnZva2VFZmZlY3QoY2IpIDogdHJ1ZVxuXHRcdFx0KTtcblx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRjb21taXRRdWV1ZS5zb21lKGMgPT4ge1xuXHRcdFx0XHRpZiAoYy5fcmVuZGVyQ2FsbGJhY2tzKSBjLl9yZW5kZXJDYWxsYmFja3MgPSBbXTtcblx0XHRcdH0pO1xuXHRcdFx0Y29tbWl0UXVldWUgPSBbXTtcblx0XHRcdG9wdGlvbnMuX2NhdGNoRXJyb3IoZSwgY29tcG9uZW50Ll92bm9kZSk7XG5cdFx0fVxuXHR9KTtcblxuXHRpZiAob2xkQ29tbWl0KSBvbGRDb21taXQodm5vZGUsIGNvbW1pdFF1ZXVlKTtcbn07XG5cbi8qKiBAdHlwZSB7KHZub2RlOiBpbXBvcnQoJy4vaW50ZXJuYWwnKS5WTm9kZSkgPT4gdm9pZH0gKi9cbm9wdGlvbnMudW5tb3VudCA9IHZub2RlID0+IHtcblx0aWYgKG9sZEJlZm9yZVVubW91bnQpIG9sZEJlZm9yZVVubW91bnQodm5vZGUpO1xuXG5cdGNvbnN0IGMgPSB2bm9kZS5fY29tcG9uZW50O1xuXHRpZiAoYyAmJiBjLl9faG9va3MpIHtcblx0XHRsZXQgaGFzRXJyb3JlZDtcblx0XHRjLl9faG9va3MuX2xpc3QuZm9yRWFjaChzID0+IHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGludm9rZUNsZWFudXAocyk7XG5cdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdGhhc0Vycm9yZWQgPSBlO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdGMuX19ob29rcyA9IHVuZGVmaW5lZDtcblx0XHRpZiAoaGFzRXJyb3JlZCkgb3B0aW9ucy5fY2F0Y2hFcnJvcihoYXNFcnJvcmVkLCBjLl92bm9kZSk7XG5cdH1cbn07XG5cbi8qKlxuICogR2V0IGEgaG9vaydzIHN0YXRlIGZyb20gdGhlIGN1cnJlbnRDb21wb25lbnRcbiAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleCBUaGUgaW5kZXggb2YgdGhlIGhvb2sgdG8gZ2V0XG4gKiBAcGFyYW0ge251bWJlcn0gdHlwZSBUaGUgaW5kZXggb2YgdGhlIGhvb2sgdG8gZ2V0XG4gKiBAcmV0dXJucyB7YW55fVxuICovXG5mdW5jdGlvbiBnZXRIb29rU3RhdGUoaW5kZXgsIHR5cGUpIHtcblx0aWYgKG9wdGlvbnMuX2hvb2spIHtcblx0XHRvcHRpb25zLl9ob29rKGN1cnJlbnRDb21wb25lbnQsIGluZGV4LCBjdXJyZW50SG9vayB8fCB0eXBlKTtcblx0fVxuXHRjdXJyZW50SG9vayA9IDA7XG5cblx0Ly8gTGFyZ2VseSBpbnNwaXJlZCBieTpcblx0Ly8gKiBodHRwczovL2dpdGh1Yi5jb20vbWljaGFlbC1rbGVpbi9mdW5jeS5qcy9ibG9iL2Y2YmU3MzQ2OGU2ZWM0NmIwZmY1YWEzY2M0YzliYWY3MmEyOTAyNWEvc3JjL2hvb2tzL2NvcmVfaG9va3MubWpzXG5cdC8vICogaHR0cHM6Ly9naXRodWIuY29tL21pY2hhZWwta2xlaW4vZnVuY3kuanMvYmxvYi82NTBiZWFhNThjNDNjMzNhNzQ4MjBhM2M5OGIzYzcwNzljZjJlMzMzL3NyYy9yZW5kZXJlci5tanNcblx0Ly8gT3RoZXIgaW1wbGVtZW50YXRpb25zIHRvIGxvb2sgYXQ6XG5cdC8vICogaHR0cHM6Ly9jb2Rlc2FuZGJveC5pby9zL21ub3gwNXFwOFxuXHRjb25zdCBob29rcyA9XG5cdFx0Y3VycmVudENvbXBvbmVudC5fX2hvb2tzIHx8XG5cdFx0KGN1cnJlbnRDb21wb25lbnQuX19ob29rcyA9IHtcblx0XHRcdF9saXN0OiBbXSxcblx0XHRcdF9wZW5kaW5nRWZmZWN0czogW11cblx0XHR9KTtcblxuXHRpZiAoaW5kZXggPj0gaG9va3MuX2xpc3QubGVuZ3RoKSB7XG5cdFx0aG9va3MuX2xpc3QucHVzaCh7fSk7XG5cdH1cblxuXHRyZXR1cm4gaG9va3MuX2xpc3RbaW5kZXhdO1xufVxuXG4vKipcbiAqIEB0ZW1wbGF0ZSB7dW5rbm93bn0gU1xuICogQHBhcmFtIHtpbXBvcnQoJy4vaW5kZXgnKS5EaXNwYXRjaDxpbXBvcnQoJy4vaW5kZXgnKS5TdGF0ZVVwZGF0ZXI8Uz4+fSBbaW5pdGlhbFN0YXRlXVxuICogQHJldHVybnMge1tTLCAoc3RhdGU6IFMpID0+IHZvaWRdfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlU3RhdGUoaW5pdGlhbFN0YXRlKSB7XG5cdGN1cnJlbnRIb29rID0gMTtcblx0cmV0dXJuIHVzZVJlZHVjZXIoaW52b2tlT3JSZXR1cm4sIGluaXRpYWxTdGF0ZSk7XG59XG5cbi8qKlxuICogQHRlbXBsYXRlIHt1bmtub3dufSBTXG4gKiBAdGVtcGxhdGUge3Vua25vd259IEFcbiAqIEBwYXJhbSB7aW1wb3J0KCcuL2luZGV4JykuUmVkdWNlcjxTLCBBPn0gcmVkdWNlclxuICogQHBhcmFtIHtpbXBvcnQoJy4vaW5kZXgnKS5EaXNwYXRjaDxpbXBvcnQoJy4vaW5kZXgnKS5TdGF0ZVVwZGF0ZXI8Uz4+fSBpbml0aWFsU3RhdGVcbiAqIEBwYXJhbSB7KGluaXRpYWxTdGF0ZTogYW55KSA9PiB2b2lkfSBbaW5pdF1cbiAqIEByZXR1cm5zIHtbIFMsIChzdGF0ZTogUykgPT4gdm9pZCBdfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlUmVkdWNlcihyZWR1Y2VyLCBpbml0aWFsU3RhdGUsIGluaXQpIHtcblx0LyoqIEB0eXBlIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5SZWR1Y2VySG9va1N0YXRlfSAqL1xuXHRjb25zdCBob29rU3RhdGUgPSBnZXRIb29rU3RhdGUoY3VycmVudEluZGV4KyssIDIpO1xuXHRob29rU3RhdGUuX3JlZHVjZXIgPSByZWR1Y2VyO1xuXHRpZiAoIWhvb2tTdGF0ZS5fY29tcG9uZW50KSB7XG5cdFx0aG9va1N0YXRlLl92YWx1ZSA9IFtcblx0XHRcdCFpbml0ID8gaW52b2tlT3JSZXR1cm4odW5kZWZpbmVkLCBpbml0aWFsU3RhdGUpIDogaW5pdChpbml0aWFsU3RhdGUpLFxuXG5cdFx0XHRhY3Rpb24gPT4ge1xuXHRcdFx0XHRjb25zdCBjdXJyZW50VmFsdWUgPSBob29rU3RhdGUuX25leHRWYWx1ZVxuXHRcdFx0XHRcdD8gaG9va1N0YXRlLl9uZXh0VmFsdWVbMF1cblx0XHRcdFx0XHQ6IGhvb2tTdGF0ZS5fdmFsdWVbMF07XG5cdFx0XHRcdGNvbnN0IG5leHRWYWx1ZSA9IGhvb2tTdGF0ZS5fcmVkdWNlcihjdXJyZW50VmFsdWUsIGFjdGlvbik7XG5cblx0XHRcdFx0aWYgKGN1cnJlbnRWYWx1ZSAhPT0gbmV4dFZhbHVlKSB7XG5cdFx0XHRcdFx0aG9va1N0YXRlLl9uZXh0VmFsdWUgPSBbbmV4dFZhbHVlLCBob29rU3RhdGUuX3ZhbHVlWzFdXTtcblx0XHRcdFx0XHRob29rU3RhdGUuX2NvbXBvbmVudC5zZXRTdGF0ZSh7fSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRdO1xuXG5cdFx0aG9va1N0YXRlLl9jb21wb25lbnQgPSBjdXJyZW50Q29tcG9uZW50O1xuXG5cdFx0aWYgKCFjdXJyZW50Q29tcG9uZW50Ll9oYXNTY3VGcm9tSG9va3MpIHtcblx0XHRcdGN1cnJlbnRDb21wb25lbnQuX2hhc1NjdUZyb21Ib29rcyA9IHRydWU7XG5cdFx0XHRsZXQgcHJldlNjdSA9IGN1cnJlbnRDb21wb25lbnQuc2hvdWxkQ29tcG9uZW50VXBkYXRlO1xuXHRcdFx0Y29uc3QgcHJldkNXVSA9IGN1cnJlbnRDb21wb25lbnQuY29tcG9uZW50V2lsbFVwZGF0ZTtcblxuXHRcdFx0Ly8gSWYgd2UncmUgZGVhbGluZyB3aXRoIGEgZm9yY2VkIHVwZGF0ZSBgc2hvdWxkQ29tcG9uZW50VXBkYXRlYCB3aWxsXG5cdFx0XHQvLyBub3QgYmUgY2FsbGVkLiBCdXQgd2UgdXNlIHRoYXQgdG8gdXBkYXRlIHRoZSBob29rIHZhbHVlcywgc28gd2Vcblx0XHRcdC8vIG5lZWQgdG8gY2FsbCBpdC5cblx0XHRcdGN1cnJlbnRDb21wb25lbnQuY29tcG9uZW50V2lsbFVwZGF0ZSA9IGZ1bmN0aW9uIChwLCBzLCBjKSB7XG5cdFx0XHRcdGlmICh0aGlzLl9mb3JjZSkge1xuXHRcdFx0XHRcdGxldCB0bXAgPSBwcmV2U2N1O1xuXHRcdFx0XHRcdC8vIENsZWFyIHRvIGF2b2lkIG90aGVyIHNDVSBob29rcyBmcm9tIGJlaW5nIGNhbGxlZFxuXHRcdFx0XHRcdHByZXZTY3UgPSB1bmRlZmluZWQ7XG5cdFx0XHRcdFx0dXBkYXRlSG9va1N0YXRlKHAsIHMsIGMpO1xuXHRcdFx0XHRcdHByZXZTY3UgPSB0bXA7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAocHJldkNXVSkgcHJldkNXVS5jYWxsKHRoaXMsIHAsIHMsIGMpO1xuXHRcdFx0fTtcblxuXHRcdFx0Ly8gVGhpcyBTQ1UgaGFzIHRoZSBwdXJwb3NlIG9mIGJhaWxpbmcgb3V0IGFmdGVyIHJlcGVhdGVkIHVwZGF0ZXNcblx0XHRcdC8vIHRvIHN0YXRlZnVsIGhvb2tzLlxuXHRcdFx0Ly8gd2Ugc3RvcmUgdGhlIG5leHQgdmFsdWUgaW4gX25leHRWYWx1ZVswXSBhbmQga2VlcCBkb2luZyB0aGF0IGZvciBhbGxcblx0XHRcdC8vIHN0YXRlIHNldHRlcnMsIGlmIHdlIGhhdmUgbmV4dCBzdGF0ZXMgYW5kXG5cdFx0XHQvLyBhbGwgbmV4dCBzdGF0ZXMgd2l0aGluIGEgY29tcG9uZW50IGVuZCB1cCBiZWluZyBlcXVhbCB0byB0aGVpciBvcmlnaW5hbCBzdGF0ZVxuXHRcdFx0Ly8gd2UgYXJlIHNhZmUgdG8gYmFpbCBvdXQgZm9yIHRoaXMgc3BlY2lmaWMgY29tcG9uZW50LlxuXHRcdFx0LyoqXG5cdFx0XHQgKlxuXHRcdFx0ICogQHR5cGUge2ltcG9ydCgnLi9pbnRlcm5hbCcpLkNvbXBvbmVudFtcInNob3VsZENvbXBvbmVudFVwZGF0ZVwiXX1cblx0XHRcdCAqL1xuXHRcdFx0Ly8gQHRzLWlnbm9yZSAtIFdlIGRvbid0IHVzZSBUUyB0byBkb3dudHJhbnNwaWxlXG5cdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8taW5uZXItZGVjbGFyYXRpb25zXG5cdFx0XHRmdW5jdGlvbiB1cGRhdGVIb29rU3RhdGUocCwgcywgYykge1xuXHRcdFx0XHRpZiAoIWhvb2tTdGF0ZS5fY29tcG9uZW50Ll9faG9va3MpIHJldHVybiB0cnVlO1xuXG5cdFx0XHRcdC8qKiBAdHlwZSB7KHg6IGltcG9ydCgnLi9pbnRlcm5hbCcpLkhvb2tTdGF0ZSkgPT4geCBpcyBpbXBvcnQoJy4vaW50ZXJuYWwnKS5SZWR1Y2VySG9va1N0YXRlfSAqL1xuXHRcdFx0XHRjb25zdCBpc1N0YXRlSG9vayA9IHggPT4gISF4Ll9jb21wb25lbnQ7XG5cdFx0XHRcdGNvbnN0IHN0YXRlSG9va3MgPVxuXHRcdFx0XHRcdGhvb2tTdGF0ZS5fY29tcG9uZW50Ll9faG9va3MuX2xpc3QuZmlsdGVyKGlzU3RhdGVIb29rKTtcblxuXHRcdFx0XHRjb25zdCBhbGxIb29rc0VtcHR5ID0gc3RhdGVIb29rcy5ldmVyeSh4ID0+ICF4Ll9uZXh0VmFsdWUpO1xuXHRcdFx0XHQvLyBXaGVuIHdlIGhhdmUgbm8gdXBkYXRlZCBob29rcyBpbiB0aGUgY29tcG9uZW50IHdlIGludm9rZSB0aGUgcHJldmlvdXMgU0NVIG9yXG5cdFx0XHRcdC8vIHRyYXZlcnNlIHRoZSBWRE9NIHRyZWUgZnVydGhlci5cblx0XHRcdFx0aWYgKGFsbEhvb2tzRW1wdHkpIHtcblx0XHRcdFx0XHRyZXR1cm4gcHJldlNjdSA/IHByZXZTY3UuY2FsbCh0aGlzLCBwLCBzLCBjKSA6IHRydWU7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBXZSBjaGVjayB3aGV0aGVyIHdlIGhhdmUgY29tcG9uZW50cyB3aXRoIGEgbmV4dFZhbHVlIHNldCB0aGF0XG5cdFx0XHRcdC8vIGhhdmUgdmFsdWVzIHRoYXQgYXJlbid0IGVxdWFsIHRvIG9uZSBhbm90aGVyIHRoaXMgcHVzaGVzXG5cdFx0XHRcdC8vIHVzIHRvIHVwZGF0ZSBmdXJ0aGVyIGRvd24gdGhlIHRyZWVcblx0XHRcdFx0bGV0IHNob3VsZFVwZGF0ZSA9IGZhbHNlO1xuXHRcdFx0XHRzdGF0ZUhvb2tzLmZvckVhY2goaG9va0l0ZW0gPT4ge1xuXHRcdFx0XHRcdGlmIChob29rSXRlbS5fbmV4dFZhbHVlKSB7XG5cdFx0XHRcdFx0XHRjb25zdCBjdXJyZW50VmFsdWUgPSBob29rSXRlbS5fdmFsdWVbMF07XG5cdFx0XHRcdFx0XHRob29rSXRlbS5fdmFsdWUgPSBob29rSXRlbS5fbmV4dFZhbHVlO1xuXHRcdFx0XHRcdFx0aG9va0l0ZW0uX25leHRWYWx1ZSA9IHVuZGVmaW5lZDtcblx0XHRcdFx0XHRcdGlmIChjdXJyZW50VmFsdWUgIT09IGhvb2tJdGVtLl92YWx1ZVswXSkgc2hvdWxkVXBkYXRlID0gdHJ1ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXG5cdFx0XHRcdHJldHVybiBzaG91bGRVcGRhdGUgfHwgaG9va1N0YXRlLl9jb21wb25lbnQucHJvcHMgIT09IHBcblx0XHRcdFx0XHQ/IHByZXZTY3Vcblx0XHRcdFx0XHRcdD8gcHJldlNjdS5jYWxsKHRoaXMsIHAsIHMsIGMpXG5cdFx0XHRcdFx0XHQ6IHRydWVcblx0XHRcdFx0XHQ6IGZhbHNlO1xuXHRcdFx0fVxuXG5cdFx0XHRjdXJyZW50Q29tcG9uZW50LnNob3VsZENvbXBvbmVudFVwZGF0ZSA9IHVwZGF0ZUhvb2tTdGF0ZTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gaG9va1N0YXRlLl9uZXh0VmFsdWUgfHwgaG9va1N0YXRlLl92YWx1ZTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi9pbnRlcm5hbCcpLkVmZmVjdH0gY2FsbGJhY2tcbiAqIEBwYXJhbSB7dW5rbm93bltdfSBhcmdzXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUVmZmVjdChjYWxsYmFjaywgYXJncykge1xuXHQvKiogQHR5cGUge2ltcG9ydCgnLi9pbnRlcm5hbCcpLkVmZmVjdEhvb2tTdGF0ZX0gKi9cblx0Y29uc3Qgc3RhdGUgPSBnZXRIb29rU3RhdGUoY3VycmVudEluZGV4KyssIDMpO1xuXHRpZiAoIW9wdGlvbnMuX3NraXBFZmZlY3RzICYmIGFyZ3NDaGFuZ2VkKHN0YXRlLl9hcmdzLCBhcmdzKSkge1xuXHRcdHN0YXRlLl92YWx1ZSA9IGNhbGxiYWNrO1xuXHRcdHN0YXRlLl9wZW5kaW5nQXJncyA9IGFyZ3M7XG5cblx0XHRjdXJyZW50Q29tcG9uZW50Ll9faG9va3MuX3BlbmRpbmdFZmZlY3RzLnB1c2goc3RhdGUpO1xuXHR9XG59XG5cbi8qKlxuICogQHBhcmFtIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5FZmZlY3R9IGNhbGxiYWNrXG4gKiBAcGFyYW0ge3Vua25vd25bXX0gYXJnc1xuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VMYXlvdXRFZmZlY3QoY2FsbGJhY2ssIGFyZ3MpIHtcblx0LyoqIEB0eXBlIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5FZmZlY3RIb29rU3RhdGV9ICovXG5cdGNvbnN0IHN0YXRlID0gZ2V0SG9va1N0YXRlKGN1cnJlbnRJbmRleCsrLCA0KTtcblx0aWYgKCFvcHRpb25zLl9za2lwRWZmZWN0cyAmJiBhcmdzQ2hhbmdlZChzdGF0ZS5fYXJncywgYXJncykpIHtcblx0XHRzdGF0ZS5fdmFsdWUgPSBjYWxsYmFjaztcblx0XHRzdGF0ZS5fcGVuZGluZ0FyZ3MgPSBhcmdzO1xuXG5cdFx0Y3VycmVudENvbXBvbmVudC5fcmVuZGVyQ2FsbGJhY2tzLnB1c2goc3RhdGUpO1xuXHR9XG59XG5cbi8qKiBAdHlwZSB7KGluaXRpYWxWYWx1ZTogdW5rbm93bikgPT4gdW5rbm93bn0gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VSZWYoaW5pdGlhbFZhbHVlKSB7XG5cdGN1cnJlbnRIb29rID0gNTtcblx0cmV0dXJuIHVzZU1lbW8oKCkgPT4gKHsgY3VycmVudDogaW5pdGlhbFZhbHVlIH0pLCBbXSk7XG59XG5cbi8qKlxuICogQHBhcmFtIHtvYmplY3R9IHJlZlxuICogQHBhcmFtIHsoKSA9PiBvYmplY3R9IGNyZWF0ZUhhbmRsZVxuICogQHBhcmFtIHt1bmtub3duW119IGFyZ3NcbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlSW1wZXJhdGl2ZUhhbmRsZShyZWYsIGNyZWF0ZUhhbmRsZSwgYXJncykge1xuXHRjdXJyZW50SG9vayA9IDY7XG5cdHVzZUxheW91dEVmZmVjdChcblx0XHQoKSA9PiB7XG5cdFx0XHRpZiAodHlwZW9mIHJlZiA9PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRcdHJlZihjcmVhdGVIYW5kbGUoKSk7XG5cdFx0XHRcdHJldHVybiAoKSA9PiByZWYobnVsbCk7XG5cdFx0XHR9IGVsc2UgaWYgKHJlZikge1xuXHRcdFx0XHRyZWYuY3VycmVudCA9IGNyZWF0ZUhhbmRsZSgpO1xuXHRcdFx0XHRyZXR1cm4gKCkgPT4gKHJlZi5jdXJyZW50ID0gbnVsbCk7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRhcmdzID09IG51bGwgPyBhcmdzIDogYXJncy5jb25jYXQocmVmKVxuXHQpO1xufVxuXG4vKipcbiAqIEB0ZW1wbGF0ZSB7dW5rbm93bn0gVFxuICogQHBhcmFtIHsoKSA9PiBUfSBmYWN0b3J5XG4gKiBAcGFyYW0ge3Vua25vd25bXX0gYXJnc1xuICogQHJldHVybnMge1R9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VNZW1vKGZhY3RvcnksIGFyZ3MpIHtcblx0LyoqIEB0eXBlIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5NZW1vSG9va1N0YXRlPFQ+fSAqL1xuXHRjb25zdCBzdGF0ZSA9IGdldEhvb2tTdGF0ZShjdXJyZW50SW5kZXgrKywgNyk7XG5cdGlmIChhcmdzQ2hhbmdlZChzdGF0ZS5fYXJncywgYXJncykpIHtcblx0XHRzdGF0ZS5fdmFsdWUgPSBmYWN0b3J5KCk7XG5cdFx0c3RhdGUuX2FyZ3MgPSBhcmdzO1xuXHRcdHN0YXRlLl9mYWN0b3J5ID0gZmFjdG9yeTtcblx0fVxuXG5cdHJldHVybiBzdGF0ZS5fdmFsdWU7XG59XG5cbi8qKlxuICogQHBhcmFtIHsoKSA9PiB2b2lkfSBjYWxsYmFja1xuICogQHBhcmFtIHt1bmtub3duW119IGFyZ3NcbiAqIEByZXR1cm5zIHsoKSA9PiB2b2lkfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlQ2FsbGJhY2soY2FsbGJhY2ssIGFyZ3MpIHtcblx0Y3VycmVudEhvb2sgPSA4O1xuXHRyZXR1cm4gdXNlTWVtbygoKSA9PiBjYWxsYmFjaywgYXJncyk7XG59XG5cbi8qKlxuICogQHBhcmFtIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5QcmVhY3RDb250ZXh0fSBjb250ZXh0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VDb250ZXh0KGNvbnRleHQpIHtcblx0Y29uc3QgcHJvdmlkZXIgPSBjdXJyZW50Q29tcG9uZW50LmNvbnRleHRbY29udGV4dC5faWRdO1xuXHQvLyBXZSBjb3VsZCBza2lwIHRoaXMgY2FsbCBoZXJlLCBidXQgdGhhbiB3ZSdkIG5vdCBjYWxsXG5cdC8vIGBvcHRpb25zLl9ob29rYC4gV2UgbmVlZCB0byBkbyB0aGF0IGluIG9yZGVyIHRvIG1ha2Vcblx0Ly8gdGhlIGRldnRvb2xzIGF3YXJlIG9mIHRoaXMgaG9vay5cblx0LyoqIEB0eXBlIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5Db250ZXh0SG9va1N0YXRlfSAqL1xuXHRjb25zdCBzdGF0ZSA9IGdldEhvb2tTdGF0ZShjdXJyZW50SW5kZXgrKywgOSk7XG5cdC8vIFRoZSBkZXZ0b29scyBuZWVkcyBhY2Nlc3MgdG8gdGhlIGNvbnRleHQgb2JqZWN0IHRvXG5cdC8vIGJlIGFibGUgdG8gcHVsbCBvZiB0aGUgZGVmYXVsdCB2YWx1ZSB3aGVuIG5vIHByb3ZpZGVyXG5cdC8vIGlzIHByZXNlbnQgaW4gdGhlIHRyZWUuXG5cdHN0YXRlLl9jb250ZXh0ID0gY29udGV4dDtcblx0aWYgKCFwcm92aWRlcikgcmV0dXJuIGNvbnRleHQuX2RlZmF1bHRWYWx1ZTtcblx0Ly8gVGhpcyBpcyBwcm9iYWJseSBub3Qgc2FmZSB0byBjb252ZXJ0IHRvIFwiIVwiXG5cdGlmIChzdGF0ZS5fdmFsdWUgPT0gbnVsbCkge1xuXHRcdHN0YXRlLl92YWx1ZSA9IHRydWU7XG5cdFx0cHJvdmlkZXIuc3ViKGN1cnJlbnRDb21wb25lbnQpO1xuXHR9XG5cdHJldHVybiBwcm92aWRlci5wcm9wcy52YWx1ZTtcbn1cblxuLyoqXG4gKiBEaXNwbGF5IGEgY3VzdG9tIGxhYmVsIGZvciBhIGN1c3RvbSBob29rIGZvciB0aGUgZGV2dG9vbHMgcGFuZWxcbiAqIEB0eXBlIHs8VD4odmFsdWU6IFQsIGNiPzogKHZhbHVlOiBUKSA9PiBzdHJpbmcgfCBudW1iZXIpID0+IHZvaWR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VEZWJ1Z1ZhbHVlKHZhbHVlLCBmb3JtYXR0ZXIpIHtcblx0aWYgKG9wdGlvbnMudXNlRGVidWdWYWx1ZSkge1xuXHRcdG9wdGlvbnMudXNlRGVidWdWYWx1ZShcblx0XHRcdGZvcm1hdHRlciA/IGZvcm1hdHRlcih2YWx1ZSkgOiAvKiogQHR5cGUge2FueX0qLyAodmFsdWUpXG5cdFx0KTtcblx0fVxufVxuXG4vKipcbiAqIEBwYXJhbSB7KGVycm9yOiB1bmtub3duLCBlcnJvckluZm86IGltcG9ydCgncHJlYWN0JykuRXJyb3JJbmZvKSA9PiB2b2lkfSBjYlxuICogQHJldHVybnMge1t1bmtub3duLCAoKSA9PiB2b2lkXX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUVycm9yQm91bmRhcnkoY2IpIHtcblx0LyoqIEB0eXBlIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5FcnJvckJvdW5kYXJ5SG9va1N0YXRlfSAqL1xuXHRjb25zdCBzdGF0ZSA9IGdldEhvb2tTdGF0ZShjdXJyZW50SW5kZXgrKywgMTApO1xuXHRjb25zdCBlcnJTdGF0ZSA9IHVzZVN0YXRlKCk7XG5cdHN0YXRlLl92YWx1ZSA9IGNiO1xuXHRpZiAoIWN1cnJlbnRDb21wb25lbnQuY29tcG9uZW50RGlkQ2F0Y2gpIHtcblx0XHRjdXJyZW50Q29tcG9uZW50LmNvbXBvbmVudERpZENhdGNoID0gKGVyciwgZXJyb3JJbmZvKSA9PiB7XG5cdFx0XHRpZiAoc3RhdGUuX3ZhbHVlKSBzdGF0ZS5fdmFsdWUoZXJyLCBlcnJvckluZm8pO1xuXHRcdFx0ZXJyU3RhdGVbMV0oZXJyKTtcblx0XHR9O1xuXHR9XG5cdHJldHVybiBbXG5cdFx0ZXJyU3RhdGVbMF0sXG5cdFx0KCkgPT4ge1xuXHRcdFx0ZXJyU3RhdGVbMV0odW5kZWZpbmVkKTtcblx0XHR9XG5cdF07XG59XG5cbi8qKiBAdHlwZSB7KCkgPT4gc3RyaW5nfSAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUlkKCkge1xuXHQvKiogQHR5cGUge2ltcG9ydCgnLi9pbnRlcm5hbCcpLklkSG9va1N0YXRlfSAqL1xuXHRjb25zdCBzdGF0ZSA9IGdldEhvb2tTdGF0ZShjdXJyZW50SW5kZXgrKywgMTEpO1xuXHRpZiAoIXN0YXRlLl92YWx1ZSkge1xuXHRcdC8vIEdyYWIgZWl0aGVyIHRoZSByb290IG5vZGUgb3IgdGhlIG5lYXJlc3QgYXN5bmMgYm91bmRhcnkgbm9kZS5cblx0XHQvKiogQHR5cGUge2ltcG9ydCgnLi9pbnRlcm5hbC5kJykuVk5vZGV9ICovXG5cdFx0bGV0IHJvb3QgPSBjdXJyZW50Q29tcG9uZW50Ll92bm9kZTtcblx0XHR3aGlsZSAocm9vdCAhPT0gbnVsbCAmJiAhcm9vdC5fbWFzayAmJiByb290Ll9wYXJlbnQgIT09IG51bGwpIHtcblx0XHRcdHJvb3QgPSByb290Ll9wYXJlbnQ7XG5cdFx0fVxuXG5cdFx0bGV0IG1hc2sgPSByb290Ll9tYXNrIHx8IChyb290Ll9tYXNrID0gWzAsIDBdKTtcblx0XHRzdGF0ZS5fdmFsdWUgPSAnUCcgKyBtYXNrWzBdICsgJy0nICsgbWFza1sxXSsrO1xuXHR9XG5cblx0cmV0dXJuIHN0YXRlLl92YWx1ZTtcbn1cblxuLyoqXG4gKiBBZnRlciBwYWludCBlZmZlY3RzIGNvbnN1bWVyLlxuICovXG5mdW5jdGlvbiBmbHVzaEFmdGVyUGFpbnRFZmZlY3RzKCkge1xuXHRsZXQgY29tcG9uZW50O1xuXHR3aGlsZSAoKGNvbXBvbmVudCA9IGFmdGVyUGFpbnRFZmZlY3RzLnNoaWZ0KCkpKSB7XG5cdFx0aWYgKCFjb21wb25lbnQuX3BhcmVudERvbSB8fCAhY29tcG9uZW50Ll9faG9va3MpIGNvbnRpbnVlO1xuXHRcdHRyeSB7XG5cdFx0XHRjb21wb25lbnQuX19ob29rcy5fcGVuZGluZ0VmZmVjdHMuZm9yRWFjaChpbnZva2VDbGVhbnVwKTtcblx0XHRcdGNvbXBvbmVudC5fX2hvb2tzLl9wZW5kaW5nRWZmZWN0cy5mb3JFYWNoKGludm9rZUVmZmVjdCk7XG5cdFx0XHRjb21wb25lbnQuX19ob29rcy5fcGVuZGluZ0VmZmVjdHMgPSBbXTtcblx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRjb21wb25lbnQuX19ob29rcy5fcGVuZGluZ0VmZmVjdHMgPSBbXTtcblx0XHRcdG9wdGlvbnMuX2NhdGNoRXJyb3IoZSwgY29tcG9uZW50Ll92bm9kZSk7XG5cdFx0fVxuXHR9XG59XG5cbmxldCBIQVNfUkFGID0gdHlwZW9mIHJlcXVlc3RBbmltYXRpb25GcmFtZSA9PSAnZnVuY3Rpb24nO1xuXG4vKipcbiAqIFNjaGVkdWxlIGEgY2FsbGJhY2sgdG8gYmUgaW52b2tlZCBhZnRlciB0aGUgYnJvd3NlciBoYXMgYSBjaGFuY2UgdG8gcGFpbnQgYSBuZXcgZnJhbWUuXG4gKiBEbyB0aGlzIGJ5IGNvbWJpbmluZyByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgKHJBRikgKyBzZXRUaW1lb3V0IHRvIGludm9rZSBhIGNhbGxiYWNrIGFmdGVyXG4gKiB0aGUgbmV4dCBicm93c2VyIGZyYW1lLlxuICpcbiAqIEFsc28sIHNjaGVkdWxlIGEgdGltZW91dCBpbiBwYXJhbGxlbCB0byB0aGUgdGhlIHJBRiB0byBlbnN1cmUgdGhlIGNhbGxiYWNrIGlzIGludm9rZWRcbiAqIGV2ZW4gaWYgUkFGIGRvZXNuJ3QgZmlyZSAoZm9yIGV4YW1wbGUgaWYgdGhlIGJyb3dzZXIgdGFiIGlzIG5vdCB2aXNpYmxlKVxuICpcbiAqIEBwYXJhbSB7KCkgPT4gdm9pZH0gY2FsbGJhY2tcbiAqL1xuZnVuY3Rpb24gYWZ0ZXJOZXh0RnJhbWUoY2FsbGJhY2spIHtcblx0Y29uc3QgZG9uZSA9ICgpID0+IHtcblx0XHRjbGVhclRpbWVvdXQodGltZW91dCk7XG5cdFx0aWYgKEhBU19SQUYpIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHJhZik7XG5cdFx0c2V0VGltZW91dChjYWxsYmFjayk7XG5cdH07XG5cdGNvbnN0IHRpbWVvdXQgPSBzZXRUaW1lb3V0KGRvbmUsIFJBRl9USU1FT1VUKTtcblxuXHRsZXQgcmFmO1xuXHRpZiAoSEFTX1JBRikge1xuXHRcdHJhZiA9IHJlcXVlc3RBbmltYXRpb25GcmFtZShkb25lKTtcblx0fVxufVxuXG4vLyBOb3RlOiBpZiBzb21lb25lIHVzZWQgb3B0aW9ucy5kZWJvdW5jZVJlbmRlcmluZyA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSxcbi8vIHRoZW4gZWZmZWN0cyB3aWxsIEFMV0FZUyBydW4gb24gdGhlIE5FWFQgZnJhbWUgaW5zdGVhZCBvZiB0aGUgY3VycmVudCBvbmUsIGluY3VycmluZyBhIH4xNm1zIGRlbGF5LlxuLy8gUGVyaGFwcyB0aGlzIGlzIG5vdCBzdWNoIGEgYmlnIGRlYWwuXG4vKipcbiAqIFNjaGVkdWxlIGFmdGVyUGFpbnRFZmZlY3RzIGZsdXNoIGFmdGVyIHRoZSBicm93c2VyIHBhaW50c1xuICogQHBhcmFtIHtudW1iZXJ9IG5ld1F1ZXVlTGVuZ3RoXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuZnVuY3Rpb24gYWZ0ZXJQYWludChuZXdRdWV1ZUxlbmd0aCkge1xuXHRpZiAobmV3UXVldWVMZW5ndGggPT09IDEgfHwgcHJldlJhZiAhPT0gb3B0aW9ucy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUpIHtcblx0XHRwcmV2UmFmID0gb3B0aW9ucy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWU7XG5cdFx0KHByZXZSYWYgfHwgYWZ0ZXJOZXh0RnJhbWUpKGZsdXNoQWZ0ZXJQYWludEVmZmVjdHMpO1xuXHR9XG59XG5cbi8qKlxuICogQHBhcmFtIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5Ib29rU3RhdGV9IGhvb2tcbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5mdW5jdGlvbiBpbnZva2VDbGVhbnVwKGhvb2spIHtcblx0Ly8gQSBob29rIGNsZWFudXAgY2FuIGludHJvZHVjZSBhIGNhbGwgdG8gcmVuZGVyIHdoaWNoIGNyZWF0ZXMgYSBuZXcgcm9vdCwgdGhpcyB3aWxsIGNhbGwgb3B0aW9ucy52bm9kZVxuXHQvLyBhbmQgbW92ZSB0aGUgY3VycmVudENvbXBvbmVudCBhd2F5LlxuXHRjb25zdCBjb21wID0gY3VycmVudENvbXBvbmVudDtcblx0bGV0IGNsZWFudXAgPSBob29rLl9jbGVhbnVwO1xuXHRpZiAodHlwZW9mIGNsZWFudXAgPT0gJ2Z1bmN0aW9uJykge1xuXHRcdGhvb2suX2NsZWFudXAgPSB1bmRlZmluZWQ7XG5cdFx0Y2xlYW51cCgpO1xuXHR9XG5cblx0Y3VycmVudENvbXBvbmVudCA9IGNvbXA7XG59XG5cbi8qKlxuICogSW52b2tlIGEgSG9vaydzIGVmZmVjdFxuICogQHBhcmFtIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5FZmZlY3RIb29rU3RhdGV9IGhvb2tcbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5mdW5jdGlvbiBpbnZva2VFZmZlY3QoaG9vaykge1xuXHQvLyBBIGhvb2sgY2FsbCBjYW4gaW50cm9kdWNlIGEgY2FsbCB0byByZW5kZXIgd2hpY2ggY3JlYXRlcyBhIG5ldyByb290LCB0aGlzIHdpbGwgY2FsbCBvcHRpb25zLnZub2RlXG5cdC8vIGFuZCBtb3ZlIHRoZSBjdXJyZW50Q29tcG9uZW50IGF3YXkuXG5cdGNvbnN0IGNvbXAgPSBjdXJyZW50Q29tcG9uZW50O1xuXHRob29rLl9jbGVhbnVwID0gaG9vay5fdmFsdWUoKTtcblx0Y3VycmVudENvbXBvbmVudCA9IGNvbXA7XG59XG5cbi8qKlxuICogQHBhcmFtIHt1bmtub3duW119IG9sZEFyZ3NcbiAqIEBwYXJhbSB7dW5rbm93bltdfSBuZXdBcmdzXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gYXJnc0NoYW5nZWQob2xkQXJncywgbmV3QXJncykge1xuXHRyZXR1cm4gKFxuXHRcdCFvbGRBcmdzIHx8XG5cdFx0b2xkQXJncy5sZW5ndGggIT09IG5ld0FyZ3MubGVuZ3RoIHx8XG5cdFx0bmV3QXJncy5zb21lKChhcmcsIGluZGV4KSA9PiBhcmcgIT09IG9sZEFyZ3NbaW5kZXhdKVxuXHQpO1xufVxuXG4vKipcbiAqIEB0ZW1wbGF0ZSBBcmdcbiAqIEBwYXJhbSB7QXJnfSBhcmdcbiAqIEBwYXJhbSB7KGFyZzogQXJnKSA9PiBhbnl9IGZcbiAqIEByZXR1cm5zIHthbnl9XG4gKi9cbmZ1bmN0aW9uIGludm9rZU9yUmV0dXJuKGFyZywgZikge1xuXHRyZXR1cm4gdHlwZW9mIGYgPT0gJ2Z1bmN0aW9uJyA/IGYoYXJnKSA6IGY7XG59XG4iLCAiLyoqXG4gKiBBc3NpZ24gcHJvcGVydGllcyBmcm9tIGBwcm9wc2AgdG8gYG9iamBcbiAqIEB0ZW1wbGF0ZSBPLCBQIFRoZSBvYmogYW5kIHByb3BzIHR5cGVzXG4gKiBAcGFyYW0ge099IG9iaiBUaGUgb2JqZWN0IHRvIGNvcHkgcHJvcGVydGllcyB0b1xuICogQHBhcmFtIHtQfSBwcm9wcyBUaGUgb2JqZWN0IHRvIGNvcHkgcHJvcGVydGllcyBmcm9tXG4gKiBAcmV0dXJucyB7TyAmIFB9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NpZ24ob2JqLCBwcm9wcykge1xuXHRmb3IgKGxldCBpIGluIHByb3BzKSBvYmpbaV0gPSBwcm9wc1tpXTtcblx0cmV0dXJuIC8qKiBAdHlwZSB7TyAmIFB9ICovIChvYmopO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIHR3byBvYmplY3RzIGhhdmUgYSBkaWZmZXJlbnQgc2hhcGVcbiAqIEBwYXJhbSB7b2JqZWN0fSBhXG4gKiBAcGFyYW0ge29iamVjdH0gYlxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzaGFsbG93RGlmZmVycyhhLCBiKSB7XG5cdGZvciAobGV0IGkgaW4gYSkgaWYgKGkgIT09ICdfX3NvdXJjZScgJiYgIShpIGluIGIpKSByZXR1cm4gdHJ1ZTtcblx0Zm9yIChsZXQgaSBpbiBiKSBpZiAoaSAhPT0gJ19fc291cmNlJyAmJiBhW2ldICE9PSBiW2ldKSByZXR1cm4gdHJ1ZTtcblx0cmV0dXJuIGZhbHNlO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIHR3byB2YWx1ZXMgYXJlIHRoZSBzYW1lIHZhbHVlXG4gKiBAcGFyYW0geyp9IHhcbiAqIEBwYXJhbSB7Kn0geVxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpcyh4LCB5KSB7XG5cdHJldHVybiAoeCA9PT0geSAmJiAoeCAhPT0gMCB8fCAxIC8geCA9PT0gMSAvIHkpKSB8fCAoeCAhPT0geCAmJiB5ICE9PSB5KTtcbn1cbiIsICJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdwcmVhY3QnO1xuaW1wb3J0IHsgc2hhbGxvd0RpZmZlcnMgfSBmcm9tICcuL3V0aWwnO1xuXG4vKipcbiAqIENvbXBvbmVudCBjbGFzcyB3aXRoIGEgcHJlZGVmaW5lZCBgc2hvdWxkQ29tcG9uZW50VXBkYXRlYCBpbXBsZW1lbnRhdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gUHVyZUNvbXBvbmVudChwLCBjKSB7XG5cdHRoaXMucHJvcHMgPSBwO1xuXHR0aGlzLmNvbnRleHQgPSBjO1xufVxuUHVyZUNvbXBvbmVudC5wcm90b3R5cGUgPSBuZXcgQ29tcG9uZW50KCk7XG4vLyBTb21lIHRoaXJkLXBhcnR5IGxpYnJhcmllcyBjaGVjayBpZiB0aGlzIHByb3BlcnR5IGlzIHByZXNlbnRcblB1cmVDb21wb25lbnQucHJvdG90eXBlLmlzUHVyZVJlYWN0Q29tcG9uZW50ID0gdHJ1ZTtcblB1cmVDb21wb25lbnQucHJvdG90eXBlLnNob3VsZENvbXBvbmVudFVwZGF0ZSA9IGZ1bmN0aW9uIChwcm9wcywgc3RhdGUpIHtcblx0cmV0dXJuIHNoYWxsb3dEaWZmZXJzKHRoaXMucHJvcHMsIHByb3BzKSB8fCBzaGFsbG93RGlmZmVycyh0aGlzLnN0YXRlLCBzdGF0ZSk7XG59O1xuIiwgImltcG9ydCB7IGNyZWF0ZUVsZW1lbnQgfSBmcm9tICdwcmVhY3QnO1xuaW1wb3J0IHsgc2hhbGxvd0RpZmZlcnMgfSBmcm9tICcuL3V0aWwnO1xuXG4vKipcbiAqIE1lbW9pemUgYSBjb21wb25lbnQsIHNvIHRoYXQgaXQgb25seSB1cGRhdGVzIHdoZW4gdGhlIHByb3BzIGFjdHVhbGx5IGhhdmVcbiAqIGNoYW5nZWQuIFRoaXMgd2FzIHByZXZpb3VzbHkga25vd24gYXMgYFJlYWN0LnB1cmVgLlxuICogQHBhcmFtIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5GdW5jdGlvbkNvbXBvbmVudH0gYyBmdW5jdGlvbmFsIGNvbXBvbmVudFxuICogQHBhcmFtIHsocHJldjogb2JqZWN0LCBuZXh0OiBvYmplY3QpID0+IGJvb2xlYW59IFtjb21wYXJlcl0gQ3VzdG9tIGVxdWFsaXR5IGZ1bmN0aW9uXG4gKiBAcmV0dXJucyB7aW1wb3J0KCcuL2ludGVybmFsJykuRnVuY3Rpb25Db21wb25lbnR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZW1vKGMsIGNvbXBhcmVyKSB7XG5cdGZ1bmN0aW9uIHNob3VsZFVwZGF0ZShuZXh0UHJvcHMpIHtcblx0XHRsZXQgcmVmID0gdGhpcy5wcm9wcy5yZWY7XG5cdFx0bGV0IHVwZGF0ZVJlZiA9IHJlZiA9PSBuZXh0UHJvcHMucmVmO1xuXHRcdGlmICghdXBkYXRlUmVmICYmIHJlZikge1xuXHRcdFx0cmVmLmNhbGwgPyByZWYobnVsbCkgOiAocmVmLmN1cnJlbnQgPSBudWxsKTtcblx0XHR9XG5cblx0XHRpZiAoIWNvbXBhcmVyKSB7XG5cdFx0XHRyZXR1cm4gc2hhbGxvd0RpZmZlcnModGhpcy5wcm9wcywgbmV4dFByb3BzKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gIWNvbXBhcmVyKHRoaXMucHJvcHMsIG5leHRQcm9wcykgfHwgIXVwZGF0ZVJlZjtcblx0fVxuXG5cdGZ1bmN0aW9uIE1lbW9lZChwcm9wcykge1xuXHRcdHRoaXMuc2hvdWxkQ29tcG9uZW50VXBkYXRlID0gc2hvdWxkVXBkYXRlO1xuXHRcdHJldHVybiBjcmVhdGVFbGVtZW50KGMsIHByb3BzKTtcblx0fVxuXHRNZW1vZWQuZGlzcGxheU5hbWUgPSAnTWVtbygnICsgKGMuZGlzcGxheU5hbWUgfHwgYy5uYW1lKSArICcpJztcblx0TWVtb2VkLnByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50ID0gdHJ1ZTtcblx0TWVtb2VkLl9mb3J3YXJkZWQgPSB0cnVlO1xuXHRyZXR1cm4gTWVtb2VkO1xufVxuIiwgImltcG9ydCB7IG9wdGlvbnMgfSBmcm9tICdwcmVhY3QnO1xuXG5sZXQgb2xkRGlmZkhvb2sgPSBvcHRpb25zLl9kaWZmO1xub3B0aW9ucy5fZGlmZiA9IHZub2RlID0+IHtcblx0aWYgKHZub2RlLnR5cGUgJiYgdm5vZGUudHlwZS5fZm9yd2FyZGVkICYmIHZub2RlLnJlZikge1xuXHRcdHZub2RlLnByb3BzLnJlZiA9IHZub2RlLnJlZjtcblx0XHR2bm9kZS5yZWYgPSBudWxsO1xuXHR9XG5cdGlmIChvbGREaWZmSG9vaykgb2xkRGlmZkhvb2sodm5vZGUpO1xufTtcblxuZXhwb3J0IGNvbnN0IFJFQUNUX0ZPUldBUkRfU1lNQk9MID1cblx0KHR5cGVvZiBTeW1ib2wgIT0gJ3VuZGVmaW5lZCcgJiZcblx0XHRTeW1ib2wuZm9yICYmXG5cdFx0U3ltYm9sLmZvcigncmVhY3QuZm9yd2FyZF9yZWYnKSkgfHxcblx0MHhmNDc7XG5cbi8qKlxuICogUGFzcyByZWYgZG93biB0byBhIGNoaWxkLiBUaGlzIGlzIG1haW5seSB1c2VkIGluIGxpYnJhcmllcyB3aXRoIEhPQ3MgdGhhdFxuICogd3JhcCBjb21wb25lbnRzLiBVc2luZyBgZm9yd2FyZFJlZmAgdGhlcmUgaXMgYW4gZWFzeSB3YXkgdG8gZ2V0IGEgcmVmZXJlbmNlXG4gKiBvZiB0aGUgd3JhcHBlZCBjb21wb25lbnQgaW5zdGVhZCBvZiBvbmUgb2YgdGhlIHdyYXBwZXIgaXRzZWxmLlxuICogQHBhcmFtIHtpbXBvcnQoJy4vaW5kZXgnKS5Gb3J3YXJkRm59IGZuXG4gKiBAcmV0dXJucyB7aW1wb3J0KCcuL2ludGVybmFsJykuRnVuY3Rpb25Db21wb25lbnR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3J3YXJkUmVmKGZuKSB7XG5cdGZ1bmN0aW9uIEZvcndhcmRlZChwcm9wcykge1xuXHRcdGlmICghKCdyZWYnIGluIHByb3BzKSkgcmV0dXJuIGZuKHByb3BzLCBudWxsKTtcblxuXHRcdGxldCByZWYgPSBwcm9wcy5yZWY7XG5cdFx0ZGVsZXRlIHByb3BzLnJlZjtcblx0XHRjb25zdCByZXN1bHQgPSBmbihwcm9wcywgcmVmKTtcblx0XHRwcm9wcy5yZWYgPSByZWY7XG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fVxuXG5cdC8vIG1vYngtcmVhY3QgY2hlY2tzIGZvciB0aGlzIGJlaW5nIHByZXNlbnRcblx0Rm9yd2FyZGVkLiQkdHlwZW9mID0gUkVBQ1RfRk9SV0FSRF9TWU1CT0w7XG5cdC8vIG1vYngtcmVhY3QgaGVhdmlseSByZWxpZXMgb24gaW1wbGVtZW50YXRpb24gZGV0YWlscy5cblx0Ly8gSXQgZXhwZWN0cyBhbiBvYmplY3QgaGVyZSB3aXRoIGEgYHJlbmRlcmAgcHJvcGVydHksXG5cdC8vIGFuZCBwcm90b3R5cGUucmVuZGVyIHdpbGwgZmFpbC4gV2l0aG91dCB0aGlzXG5cdC8vIG1vYngtcmVhY3QgdGhyb3dzLlxuXHRGb3J3YXJkZWQucmVuZGVyID0gRm9yd2FyZGVkO1xuXG5cdEZvcndhcmRlZC5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudCA9IEZvcndhcmRlZC5fZm9yd2FyZGVkID0gdHJ1ZTtcblx0Rm9yd2FyZGVkLmRpc3BsYXlOYW1lID0gJ0ZvcndhcmRSZWYoJyArIChmbi5kaXNwbGF5TmFtZSB8fCBmbi5uYW1lKSArICcpJztcblx0cmV0dXJuIEZvcndhcmRlZDtcbn1cbiIsICJpbXBvcnQgeyB0b0NoaWxkQXJyYXkgfSBmcm9tICdwcmVhY3QnO1xuXG5jb25zdCBtYXBGbiA9IChjaGlsZHJlbiwgZm4pID0+IHtcblx0aWYgKGNoaWxkcmVuID09IG51bGwpIHJldHVybiBudWxsO1xuXHRyZXR1cm4gdG9DaGlsZEFycmF5KHRvQ2hpbGRBcnJheShjaGlsZHJlbikubWFwKGZuKSk7XG59O1xuXG4vLyBUaGlzIEFQSSBpcyBjb21wbGV0ZWx5IHVubmVjZXNzYXJ5IGZvciBQcmVhY3QsIHNvIGl0J3MgYmFzaWNhbGx5IHBhc3N0aHJvdWdoLlxuZXhwb3J0IGNvbnN0IENoaWxkcmVuID0ge1xuXHRtYXA6IG1hcEZuLFxuXHRmb3JFYWNoOiBtYXBGbixcblx0Y291bnQoY2hpbGRyZW4pIHtcblx0XHRyZXR1cm4gY2hpbGRyZW4gPyB0b0NoaWxkQXJyYXkoY2hpbGRyZW4pLmxlbmd0aCA6IDA7XG5cdH0sXG5cdG9ubHkoY2hpbGRyZW4pIHtcblx0XHRjb25zdCBub3JtYWxpemVkID0gdG9DaGlsZEFycmF5KGNoaWxkcmVuKTtcblx0XHRpZiAobm9ybWFsaXplZC5sZW5ndGggIT09IDEpIHRocm93ICdDaGlsZHJlbi5vbmx5Jztcblx0XHRyZXR1cm4gbm9ybWFsaXplZFswXTtcblx0fSxcblx0dG9BcnJheTogdG9DaGlsZEFycmF5XG59O1xuIiwgImltcG9ydCB7IENvbXBvbmVudCwgY3JlYXRlRWxlbWVudCwgb3B0aW9ucywgRnJhZ21lbnQgfSBmcm9tICdwcmVhY3QnO1xuaW1wb3J0IHsgTU9ERV9IWURSQVRFIH0gZnJvbSAnLi4vLi4vc3JjL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBhc3NpZ24gfSBmcm9tICcuL3V0aWwnO1xuXG5jb25zdCBvbGRDYXRjaEVycm9yID0gb3B0aW9ucy5fY2F0Y2hFcnJvcjtcbm9wdGlvbnMuX2NhdGNoRXJyb3IgPSBmdW5jdGlvbiAoZXJyb3IsIG5ld1ZOb2RlLCBvbGRWTm9kZSwgZXJyb3JJbmZvKSB7XG5cdGlmIChlcnJvci50aGVuKSB7XG5cdFx0LyoqIEB0eXBlIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5Db21wb25lbnR9ICovXG5cdFx0bGV0IGNvbXBvbmVudDtcblx0XHRsZXQgdm5vZGUgPSBuZXdWTm9kZTtcblxuXHRcdGZvciAoOyAodm5vZGUgPSB2bm9kZS5fcGFyZW50KTsgKSB7XG5cdFx0XHRpZiAoKGNvbXBvbmVudCA9IHZub2RlLl9jb21wb25lbnQpICYmIGNvbXBvbmVudC5fY2hpbGREaWRTdXNwZW5kKSB7XG5cdFx0XHRcdGlmIChuZXdWTm9kZS5fZG9tID09IG51bGwpIHtcblx0XHRcdFx0XHRuZXdWTm9kZS5fZG9tID0gb2xkVk5vZGUuX2RvbTtcblx0XHRcdFx0XHRuZXdWTm9kZS5fY2hpbGRyZW4gPSBvbGRWTm9kZS5fY2hpbGRyZW47XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gRG9uJ3QgY2FsbCBvbGRDYXRjaEVycm9yIGlmIHdlIGZvdW5kIGEgU3VzcGVuc2Vcblx0XHRcdFx0cmV0dXJuIGNvbXBvbmVudC5fY2hpbGREaWRTdXNwZW5kKGVycm9yLCBuZXdWTm9kZSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdG9sZENhdGNoRXJyb3IoZXJyb3IsIG5ld1ZOb2RlLCBvbGRWTm9kZSwgZXJyb3JJbmZvKTtcbn07XG5cbmNvbnN0IG9sZFVubW91bnQgPSBvcHRpb25zLnVubW91bnQ7XG5vcHRpb25zLnVubW91bnQgPSBmdW5jdGlvbiAodm5vZGUpIHtcblx0LyoqIEB0eXBlIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5Db21wb25lbnR9ICovXG5cdGNvbnN0IGNvbXBvbmVudCA9IHZub2RlLl9jb21wb25lbnQ7XG5cdGlmIChjb21wb25lbnQgJiYgY29tcG9uZW50Ll9vblJlc29sdmUpIHtcblx0XHRjb21wb25lbnQuX29uUmVzb2x2ZSgpO1xuXHR9XG5cblx0Ly8gaWYgdGhlIGNvbXBvbmVudCBpcyBzdGlsbCBoeWRyYXRpbmdcblx0Ly8gbW9zdCBsaWtlbHkgaXQgaXMgYmVjYXVzZSB0aGUgY29tcG9uZW50IGlzIHN1c3BlbmRlZFxuXHQvLyB3ZSBzZXQgdGhlIHZub2RlLnR5cGUgYXMgYG51bGxgIHNvIHRoYXQgaXQgaXMgbm90IGEgdHlwZW9mIGZ1bmN0aW9uXG5cdC8vIHNvIHRoZSB1bm1vdW50IHdpbGwgcmVtb3ZlIHRoZSB2bm9kZS5fZG9tXG5cdGlmIChjb21wb25lbnQgJiYgdm5vZGUuX2ZsYWdzICYgTU9ERV9IWURSQVRFKSB7XG5cdFx0dm5vZGUudHlwZSA9IG51bGw7XG5cdH1cblxuXHRpZiAob2xkVW5tb3VudCkgb2xkVW5tb3VudCh2bm9kZSk7XG59O1xuXG5mdW5jdGlvbiBkZXRhY2hlZENsb25lKHZub2RlLCBkZXRhY2hlZFBhcmVudCwgcGFyZW50RG9tKSB7XG5cdGlmICh2bm9kZSkge1xuXHRcdGlmICh2bm9kZS5fY29tcG9uZW50ICYmIHZub2RlLl9jb21wb25lbnQuX19ob29rcykge1xuXHRcdFx0dm5vZGUuX2NvbXBvbmVudC5fX2hvb2tzLl9saXN0LmZvckVhY2goZWZmZWN0ID0+IHtcblx0XHRcdFx0aWYgKHR5cGVvZiBlZmZlY3QuX2NsZWFudXAgPT0gJ2Z1bmN0aW9uJykgZWZmZWN0Ll9jbGVhbnVwKCk7XG5cdFx0XHR9KTtcblxuXHRcdFx0dm5vZGUuX2NvbXBvbmVudC5fX2hvb2tzID0gbnVsbDtcblx0XHR9XG5cblx0XHR2bm9kZSA9IGFzc2lnbih7fSwgdm5vZGUpO1xuXHRcdGlmICh2bm9kZS5fY29tcG9uZW50ICE9IG51bGwpIHtcblx0XHRcdGlmICh2bm9kZS5fY29tcG9uZW50Ll9wYXJlbnREb20gPT09IHBhcmVudERvbSkge1xuXHRcdFx0XHR2bm9kZS5fY29tcG9uZW50Ll9wYXJlbnREb20gPSBkZXRhY2hlZFBhcmVudDtcblx0XHRcdH1cblx0XHRcdHZub2RlLl9jb21wb25lbnQgPSBudWxsO1xuXHRcdH1cblxuXHRcdHZub2RlLl9jaGlsZHJlbiA9XG5cdFx0XHR2bm9kZS5fY2hpbGRyZW4gJiZcblx0XHRcdHZub2RlLl9jaGlsZHJlbi5tYXAoY2hpbGQgPT5cblx0XHRcdFx0ZGV0YWNoZWRDbG9uZShjaGlsZCwgZGV0YWNoZWRQYXJlbnQsIHBhcmVudERvbSlcblx0XHRcdCk7XG5cdH1cblxuXHRyZXR1cm4gdm5vZGU7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZU9yaWdpbmFsKHZub2RlLCBkZXRhY2hlZFBhcmVudCwgb3JpZ2luYWxQYXJlbnQpIHtcblx0aWYgKHZub2RlICYmIG9yaWdpbmFsUGFyZW50KSB7XG5cdFx0dm5vZGUuX29yaWdpbmFsID0gbnVsbDtcblx0XHR2bm9kZS5fY2hpbGRyZW4gPVxuXHRcdFx0dm5vZGUuX2NoaWxkcmVuICYmXG5cdFx0XHR2bm9kZS5fY2hpbGRyZW4ubWFwKGNoaWxkID0+XG5cdFx0XHRcdHJlbW92ZU9yaWdpbmFsKGNoaWxkLCBkZXRhY2hlZFBhcmVudCwgb3JpZ2luYWxQYXJlbnQpXG5cdFx0XHQpO1xuXG5cdFx0aWYgKHZub2RlLl9jb21wb25lbnQpIHtcblx0XHRcdGlmICh2bm9kZS5fY29tcG9uZW50Ll9wYXJlbnREb20gPT09IGRldGFjaGVkUGFyZW50KSB7XG5cdFx0XHRcdGlmICh2bm9kZS5fZG9tKSB7XG5cdFx0XHRcdFx0b3JpZ2luYWxQYXJlbnQuYXBwZW5kQ2hpbGQodm5vZGUuX2RvbSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0dm5vZGUuX2NvbXBvbmVudC5fZm9yY2UgPSB0cnVlO1xuXHRcdFx0XHR2bm9kZS5fY29tcG9uZW50Ll9wYXJlbnREb20gPSBvcmlnaW5hbFBhcmVudDtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gdm5vZGU7XG59XG5cbi8vIGhhdmluZyBjdXN0b20gaW5oZXJpdGFuY2UgaW5zdGVhZCBvZiBhIGNsYXNzIGhlcmUgc2F2ZXMgYSBsb3Qgb2YgYnl0ZXNcbmV4cG9ydCBmdW5jdGlvbiBTdXNwZW5zZSgpIHtcblx0Ly8gd2UgZG8gbm90IGNhbGwgc3VwZXIgaGVyZSB0byBnb2xmIHNvbWUgYnl0ZXMuLi5cblx0dGhpcy5fcGVuZGluZ1N1c3BlbnNpb25Db3VudCA9IDA7XG5cdHRoaXMuX3N1c3BlbmRlcnMgPSBudWxsO1xuXHR0aGlzLl9kZXRhY2hPbk5leHRSZW5kZXIgPSBudWxsO1xufVxuXG4vLyBUaGluZ3Mgd2UgZG8gaGVyZSB0byBzYXZlIHNvbWUgYnl0ZXMgYnV0IGFyZSBub3QgcHJvcGVyIEpTIGluaGVyaXRhbmNlOlxuLy8gLSBjYWxsIGBuZXcgQ29tcG9uZW50KClgIGFzIHRoZSBwcm90b3R5cGVcbi8vIC0gZG8gbm90IHNldCBgU3VzcGVuc2UucHJvdG90eXBlLmNvbnN0cnVjdG9yYCB0byBgU3VzcGVuc2VgXG5TdXNwZW5zZS5wcm90b3R5cGUgPSBuZXcgQ29tcG9uZW50KCk7XG5cbi8qKlxuICogQHRoaXMge2ltcG9ydCgnLi9pbnRlcm5hbCcpLlN1c3BlbnNlQ29tcG9uZW50fVxuICogQHBhcmFtIHtQcm9taXNlfSBwcm9taXNlIFRoZSB0aHJvd24gcHJvbWlzZVxuICogQHBhcmFtIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5WTm9kZTxhbnksIGFueT59IHN1c3BlbmRpbmdWTm9kZSBUaGUgc3VzcGVuZGluZyBjb21wb25lbnRcbiAqL1xuU3VzcGVuc2UucHJvdG90eXBlLl9jaGlsZERpZFN1c3BlbmQgPSBmdW5jdGlvbiAocHJvbWlzZSwgc3VzcGVuZGluZ1ZOb2RlKSB7XG5cdGNvbnN0IHN1c3BlbmRpbmdDb21wb25lbnQgPSBzdXNwZW5kaW5nVk5vZGUuX2NvbXBvbmVudDtcblxuXHQvKiogQHR5cGUge2ltcG9ydCgnLi9pbnRlcm5hbCcpLlN1c3BlbnNlQ29tcG9uZW50fSAqL1xuXHRjb25zdCBjID0gdGhpcztcblxuXHRpZiAoYy5fc3VzcGVuZGVycyA9PSBudWxsKSB7XG5cdFx0Yy5fc3VzcGVuZGVycyA9IFtdO1xuXHR9XG5cdGMuX3N1c3BlbmRlcnMucHVzaChzdXNwZW5kaW5nQ29tcG9uZW50KTtcblxuXHRjb25zdCByZXNvbHZlID0gc3VzcGVuZGVkKGMuX3Zub2RlKTtcblxuXHRsZXQgcmVzb2x2ZWQgPSBmYWxzZTtcblx0Y29uc3Qgb25SZXNvbHZlZCA9ICgpID0+IHtcblx0XHRpZiAocmVzb2x2ZWQpIHJldHVybjtcblxuXHRcdHJlc29sdmVkID0gdHJ1ZTtcblx0XHRzdXNwZW5kaW5nQ29tcG9uZW50Ll9vblJlc29sdmUgPSBudWxsO1xuXG5cdFx0aWYgKHJlc29sdmUpIHtcblx0XHRcdHJlc29sdmUob25TdXNwZW5zaW9uQ29tcGxldGUpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRvblN1c3BlbnNpb25Db21wbGV0ZSgpO1xuXHRcdH1cblx0fTtcblxuXHRzdXNwZW5kaW5nQ29tcG9uZW50Ll9vblJlc29sdmUgPSBvblJlc29sdmVkO1xuXG5cdGNvbnN0IG9uU3VzcGVuc2lvbkNvbXBsZXRlID0gKCkgPT4ge1xuXHRcdGlmICghLS1jLl9wZW5kaW5nU3VzcGVuc2lvbkNvdW50KSB7XG5cdFx0XHQvLyBJZiB0aGUgc3VzcGVuc2lvbiB3YXMgZHVyaW5nIGh5ZHJhdGlvbiB3ZSBkb24ndCBuZWVkIHRvIHJlc3RvcmUgdGhlXG5cdFx0XHQvLyBzdXNwZW5kZWQgY2hpbGRyZW4gaW50byB0aGUgX2NoaWxkcmVuIGFycmF5XG5cdFx0XHRpZiAoYy5zdGF0ZS5fc3VzcGVuZGVkKSB7XG5cdFx0XHRcdGNvbnN0IHN1c3BlbmRlZFZOb2RlID0gYy5zdGF0ZS5fc3VzcGVuZGVkO1xuXHRcdFx0XHRjLl92bm9kZS5fY2hpbGRyZW5bMF0gPSByZW1vdmVPcmlnaW5hbChcblx0XHRcdFx0XHRzdXNwZW5kZWRWTm9kZSxcblx0XHRcdFx0XHRzdXNwZW5kZWRWTm9kZS5fY29tcG9uZW50Ll9wYXJlbnREb20sXG5cdFx0XHRcdFx0c3VzcGVuZGVkVk5vZGUuX2NvbXBvbmVudC5fb3JpZ2luYWxQYXJlbnREb21cblx0XHRcdFx0KTtcblx0XHRcdH1cblxuXHRcdFx0Yy5zZXRTdGF0ZSh7IF9zdXNwZW5kZWQ6IChjLl9kZXRhY2hPbk5leHRSZW5kZXIgPSBudWxsKSB9KTtcblxuXHRcdFx0bGV0IHN1c3BlbmRlZDtcblx0XHRcdHdoaWxlICgoc3VzcGVuZGVkID0gYy5fc3VzcGVuZGVycy5wb3AoKSkpIHtcblx0XHRcdFx0c3VzcGVuZGVkLmZvcmNlVXBkYXRlKCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xuXG5cdC8qKlxuXHQgKiBXZSBkbyBub3Qgc2V0IGBzdXNwZW5kZWQ6IHRydWVgIGR1cmluZyBoeWRyYXRpb24gYmVjYXVzZSB3ZSB3YW50IHRoZSBhY3R1YWwgbWFya3VwXG5cdCAqIHRvIHJlbWFpbiBvbiBzY3JlZW4gYW5kIGh5ZHJhdGUgaXQgd2hlbiB0aGUgc3VzcGVuc2UgYWN0dWFsbHkgZ2V0cyByZXNvbHZlZC5cblx0ICogV2hpbGUgaW4gbm9uLWh5ZHJhdGlvbiBjYXNlcyB0aGUgdXN1YWwgZmFsbGJhY2sgLT4gY29tcG9uZW50IGZsb3cgd291bGQgb2Njb3VyLlxuXHQgKi9cblx0aWYgKFxuXHRcdCFjLl9wZW5kaW5nU3VzcGVuc2lvbkNvdW50KysgJiZcblx0XHQhKHN1c3BlbmRpbmdWTm9kZS5fZmxhZ3MgJiBNT0RFX0hZRFJBVEUpXG5cdCkge1xuXHRcdGMuc2V0U3RhdGUoeyBfc3VzcGVuZGVkOiAoYy5fZGV0YWNoT25OZXh0UmVuZGVyID0gYy5fdm5vZGUuX2NoaWxkcmVuWzBdKSB9KTtcblx0fVxuXHRwcm9taXNlLnRoZW4ob25SZXNvbHZlZCwgb25SZXNvbHZlZCk7XG59O1xuXG5TdXNwZW5zZS5wcm90b3R5cGUuY29tcG9uZW50V2lsbFVubW91bnQgPSBmdW5jdGlvbiAoKSB7XG5cdHRoaXMuX3N1c3BlbmRlcnMgPSBbXTtcbn07XG5cbi8qKlxuICogQHRoaXMge2ltcG9ydCgnLi9pbnRlcm5hbCcpLlN1c3BlbnNlQ29tcG9uZW50fVxuICogQHBhcmFtIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5TdXNwZW5zZUNvbXBvbmVudFtcInByb3BzXCJdfSBwcm9wc1xuICogQHBhcmFtIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5TdXNwZW5zZVN0YXRlfSBzdGF0ZVxuICovXG5TdXNwZW5zZS5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKHByb3BzLCBzdGF0ZSkge1xuXHRpZiAodGhpcy5fZGV0YWNoT25OZXh0UmVuZGVyKSB7XG5cdFx0Ly8gV2hlbiB0aGUgU3VzcGVuc2UncyBfdm5vZGUgd2FzIGNyZWF0ZWQgYnkgYSBjYWxsIHRvIGNyZWF0ZVZOb2RlXG5cdFx0Ly8gKGkuZS4gZHVlIHRvIGEgc2V0U3RhdGUgZnVydGhlciB1cCBpbiB0aGUgdHJlZSlcblx0XHQvLyBpdCdzIF9jaGlsZHJlbiBwcm9wIGlzIG51bGwsIGluIHRoaXMgY2FzZSB3ZSBcImZvcmdldFwiIGFib3V0IHRoZSBwYXJrZWQgdm5vZGVzIHRvIGRldGFjaFxuXHRcdGlmICh0aGlzLl92bm9kZS5fY2hpbGRyZW4pIHtcblx0XHRcdGNvbnN0IGRldGFjaGVkUGFyZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cdFx0XHRjb25zdCBkZXRhY2hlZENvbXBvbmVudCA9IHRoaXMuX3Zub2RlLl9jaGlsZHJlblswXS5fY29tcG9uZW50O1xuXHRcdFx0dGhpcy5fdm5vZGUuX2NoaWxkcmVuWzBdID0gZGV0YWNoZWRDbG9uZShcblx0XHRcdFx0dGhpcy5fZGV0YWNoT25OZXh0UmVuZGVyLFxuXHRcdFx0XHRkZXRhY2hlZFBhcmVudCxcblx0XHRcdFx0KGRldGFjaGVkQ29tcG9uZW50Ll9vcmlnaW5hbFBhcmVudERvbSA9IGRldGFjaGVkQ29tcG9uZW50Ll9wYXJlbnREb20pXG5cdFx0XHQpO1xuXHRcdH1cblxuXHRcdHRoaXMuX2RldGFjaE9uTmV4dFJlbmRlciA9IG51bGw7XG5cdH1cblxuXHQvLyBXcmFwIGZhbGxiYWNrIHRyZWUgaW4gYSBWTm9kZSB0aGF0IHByZXZlbnRzIGl0c2VsZiBmcm9tIGJlaW5nIG1hcmtlZCBhcyBhYm9ydGluZyBtaWQtaHlkcmF0aW9uOlxuXHQvKiogQHR5cGUge2ltcG9ydCgnLi9pbnRlcm5hbCcpLlZOb2RlfSAqL1xuXHRjb25zdCBmYWxsYmFjayA9XG5cdFx0c3RhdGUuX3N1c3BlbmRlZCAmJiBjcmVhdGVFbGVtZW50KEZyYWdtZW50LCBudWxsLCBwcm9wcy5mYWxsYmFjayk7XG5cdGlmIChmYWxsYmFjaykgZmFsbGJhY2suX2ZsYWdzICY9IH5NT0RFX0hZRFJBVEU7XG5cblx0cmV0dXJuIFtcblx0XHRjcmVhdGVFbGVtZW50KEZyYWdtZW50LCBudWxsLCBzdGF0ZS5fc3VzcGVuZGVkID8gbnVsbCA6IHByb3BzLmNoaWxkcmVuKSxcblx0XHRmYWxsYmFja1xuXHRdO1xufTtcblxuLyoqXG4gKiBDaGVja3MgYW5kIGNhbGxzIHRoZSBwYXJlbnQgY29tcG9uZW50J3MgX3N1c3BlbmRlZCBtZXRob2QsIHBhc3NpbmcgaW4gdGhlXG4gKiBzdXNwZW5kZWQgdm5vZGUuIFRoaXMgaXMgYSB3YXkgZm9yIGEgcGFyZW50IChlLmcuIFN1c3BlbnNlTGlzdCkgdG8gZ2V0IG5vdGlmaWVkXG4gKiB0aGF0IG9uZSBvZiBpdHMgY2hpbGRyZW4vZGVzY2VuZGFudHMgc3VzcGVuZGVkLlxuICpcbiAqIFRoZSBwYXJlbnQgTUFZIHJldHVybiBhIGNhbGxiYWNrLiBUaGUgY2FsbGJhY2sgd2lsbCBnZXQgY2FsbGVkIHdoZW4gdGhlXG4gKiBzdXNwZW5zaW9uIHJlc29sdmVzLCBub3RpZnlpbmcgdGhlIHBhcmVudCBvZiB0aGUgZmFjdC5cbiAqIE1vcmVvdmVyLCB0aGUgY2FsbGJhY2sgZ2V0cyBmdW5jdGlvbiBgdW5zdXNwZW5kYCBhcyBhIHBhcmFtZXRlci4gVGhlIHJlc29sdmVkXG4gKiBjaGlsZCBkZXNjZW5kYW50IHdpbGwgbm90IGFjdHVhbGx5IGdldCB1bnN1c3BlbmRlZCB1bnRpbCBgdW5zdXNwZW5kYCBnZXRzIGNhbGxlZC5cbiAqIFRoaXMgaXMgYSB3YXkgZm9yIHRoZSBwYXJlbnQgdG8gZGVsYXkgdW5zdXNwZW5kaW5nLlxuICpcbiAqIElmIHRoZSBwYXJlbnQgZG9lcyBub3QgcmV0dXJuIGEgY2FsbGJhY2sgdGhlbiB0aGUgcmVzb2x2ZWQgdm5vZGVcbiAqIGdldHMgdW5zdXNwZW5kZWQgaW1tZWRpYXRlbHkgd2hlbiBpdCByZXNvbHZlcy5cbiAqXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi9pbnRlcm5hbCcpLlZOb2RlfSB2bm9kZVxuICogQHJldHVybnMgeygodW5zdXNwZW5kOiAoKSA9PiB2b2lkKSA9PiB2b2lkKT99XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdXNwZW5kZWQodm5vZGUpIHtcblx0LyoqIEB0eXBlIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5Db21wb25lbnR9ICovXG5cdGxldCBjb21wb25lbnQgPSB2bm9kZS5fcGFyZW50Ll9jb21wb25lbnQ7XG5cdHJldHVybiBjb21wb25lbnQgJiYgY29tcG9uZW50Ll9zdXNwZW5kZWQgJiYgY29tcG9uZW50Ll9zdXNwZW5kZWQodm5vZGUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGF6eShsb2FkZXIpIHtcblx0bGV0IHByb207XG5cdGxldCBjb21wb25lbnQ7XG5cdGxldCBlcnJvcjtcblxuXHRmdW5jdGlvbiBMYXp5KHByb3BzKSB7XG5cdFx0aWYgKCFwcm9tKSB7XG5cdFx0XHRwcm9tID0gbG9hZGVyKCk7XG5cdFx0XHRwcm9tLnRoZW4oXG5cdFx0XHRcdGV4cG9ydHMgPT4ge1xuXHRcdFx0XHRcdGNvbXBvbmVudCA9IGV4cG9ydHMuZGVmYXVsdCB8fCBleHBvcnRzO1xuXHRcdFx0XHR9LFxuXHRcdFx0XHRlID0+IHtcblx0XHRcdFx0XHRlcnJvciA9IGU7XG5cdFx0XHRcdH1cblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0aWYgKGVycm9yKSB7XG5cdFx0XHR0aHJvdyBlcnJvcjtcblx0XHR9XG5cblx0XHRpZiAoIWNvbXBvbmVudCkge1xuXHRcdFx0dGhyb3cgcHJvbTtcblx0XHR9XG5cblx0XHRyZXR1cm4gY3JlYXRlRWxlbWVudChjb21wb25lbnQsIHByb3BzKTtcblx0fVxuXG5cdExhenkuZGlzcGxheU5hbWUgPSAnTGF6eSc7XG5cdExhenkuX2ZvcndhcmRlZCA9IHRydWU7XG5cdHJldHVybiBMYXp5O1xufVxuIiwgImltcG9ydCB7IENvbXBvbmVudCwgdG9DaGlsZEFycmF5IH0gZnJvbSAncHJlYWN0JztcbmltcG9ydCB7IHN1c3BlbmRlZCB9IGZyb20gJy4vc3VzcGVuc2UuanMnO1xuXG4vLyBJbmRleGVzIHRvIGxpbmtlZCBsaXN0IG5vZGVzIChub2RlcyBhcmUgc3RvcmVkIGFzIGFycmF5cyB0byBzYXZlIGJ5dGVzKS5cbmNvbnN0IFNVU1BFTkRFRF9DT1VOVCA9IDA7XG5jb25zdCBSRVNPTFZFRF9DT1VOVCA9IDE7XG5jb25zdCBORVhUX05PREUgPSAyO1xuXG4vLyBIYXZpbmcgY3VzdG9tIGluaGVyaXRhbmNlIGluc3RlYWQgb2YgYSBjbGFzcyBoZXJlIHNhdmVzIGEgbG90IG9mIGJ5dGVzLlxuZXhwb3J0IGZ1bmN0aW9uIFN1c3BlbnNlTGlzdCgpIHtcblx0dGhpcy5fbmV4dCA9IG51bGw7XG5cdHRoaXMuX21hcCA9IG51bGw7XG59XG5cbi8vIE1hcmsgb25lIG9mIGNoaWxkJ3MgZWFybGllciBzdXNwZW5zaW9ucyBhcyByZXNvbHZlZC5cbi8vIFNvbWUgcGVuZGluZyBjYWxsYmFja3MgbWF5IGJlY29tZSBjYWxsYWJsZSBkdWUgdG8gdGhpc1xuLy8gKGUuZy4gdGhlIGxhc3Qgc3VzcGVuZGVkIGRlc2NlbmRhbnQgZ2V0cyByZXNvbHZlZCB3aGVuXG4vLyByZXZlYWxPcmRlciA9PT0gJ3RvZ2V0aGVyJykuIFByb2Nlc3MgdGhvc2UgY2FsbGJhY2tzIGFzIHdlbGwuXG5jb25zdCByZXNvbHZlID0gKGxpc3QsIGNoaWxkLCBub2RlKSA9PiB7XG5cdGlmICgrK25vZGVbUkVTT0xWRURfQ09VTlRdID09PSBub2RlW1NVU1BFTkRFRF9DT1VOVF0pIHtcblx0XHQvLyBUaGUgbnVtYmVyIGEgY2hpbGQgKG9yIGFueSBvZiBpdHMgZGVzY2VuZGFudHMpIGhhcyBiZWVuIHN1c3BlbmRlZFxuXHRcdC8vIG1hdGNoZXMgdGhlIG51bWJlciBvZiB0aW1lcyBpdCdzIGJlZW4gcmVzb2x2ZWQuIFRoZXJlZm9yZSB3ZVxuXHRcdC8vIG1hcmsgdGhlIGNoaWxkIGFzIGNvbXBsZXRlbHkgcmVzb2x2ZWQgYnkgZGVsZXRpbmcgaXQgZnJvbSAuX21hcC5cblx0XHQvLyBUaGlzIGlzIHVzZWQgdG8gZmlndXJlIG91dCB3aGVuICphbGwqIGNoaWxkcmVuIGhhdmUgYmVlbiBjb21wbGV0ZWx5XG5cdFx0Ly8gcmVzb2x2ZWQgd2hlbiByZXZlYWxPcmRlciBpcyAndG9nZXRoZXInLlxuXHRcdGxpc3QuX21hcC5kZWxldGUoY2hpbGQpO1xuXHR9XG5cblx0Ly8gSWYgcmV2ZWFsT3JkZXIgaXMgZmFsc3kgdGhlbiB3ZSBjYW4gZG8gYW4gZWFybHkgZXhpdCwgYXMgdGhlXG5cdC8vIGNhbGxiYWNrcyB3b24ndCBnZXQgcXVldWVkIGluIHRoZSBub2RlIGFueXdheS5cblx0Ly8gSWYgcmV2ZWFsT3JkZXIgaXMgJ3RvZ2V0aGVyJyB0aGVuIGFsc28gZG8gYW4gZWFybHkgZXhpdFxuXHQvLyBpZiBhbGwgc3VzcGVuZGVkIGRlc2NlbmRhbnRzIGhhdmUgbm90IHlldCBiZWVuIHJlc29sdmVkLlxuXHRpZiAoXG5cdFx0IWxpc3QucHJvcHMucmV2ZWFsT3JkZXIgfHxcblx0XHQobGlzdC5wcm9wcy5yZXZlYWxPcmRlclswXSA9PT0gJ3QnICYmIGxpc3QuX21hcC5zaXplKVxuXHQpIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHQvLyBXYWxrIHRoZSBjdXJyZW50bHkgc3VzcGVuZGVkIGNoaWxkcmVuIGluIG9yZGVyLCBjYWxsaW5nIHRoZWlyXG5cdC8vIHN0b3JlZCBjYWxsYmFja3Mgb24gdGhlIHdheS4gU3RvcCBpZiB3ZSBlbmNvdW50ZXIgYSBjaGlsZCB0aGF0XG5cdC8vIGhhcyBub3QgYmVlbiBjb21wbGV0ZWx5IHJlc29sdmVkIHlldC5cblx0bm9kZSA9IGxpc3QuX25leHQ7XG5cdHdoaWxlIChub2RlKSB7XG5cdFx0d2hpbGUgKG5vZGUubGVuZ3RoID4gMykge1xuXHRcdFx0bm9kZS5wb3AoKSgpO1xuXHRcdH1cblx0XHRpZiAobm9kZVtSRVNPTFZFRF9DT1VOVF0gPCBub2RlW1NVU1BFTkRFRF9DT1VOVF0pIHtcblx0XHRcdGJyZWFrO1xuXHRcdH1cblx0XHRsaXN0Ll9uZXh0ID0gbm9kZSA9IG5vZGVbTkVYVF9OT0RFXTtcblx0fVxufTtcblxuLy8gVGhpbmdzIHdlIGRvIGhlcmUgdG8gc2F2ZSBzb21lIGJ5dGVzIGJ1dCBhcmUgbm90IHByb3BlciBKUyBpbmhlcml0YW5jZTpcbi8vIC0gY2FsbCBgbmV3IENvbXBvbmVudCgpYCBhcyB0aGUgcHJvdG90eXBlXG4vLyAtIGRvIG5vdCBzZXQgYFN1c3BlbnNlLnByb3RvdHlwZS5jb25zdHJ1Y3RvcmAgdG8gYFN1c3BlbnNlYFxuU3VzcGVuc2VMaXN0LnByb3RvdHlwZSA9IG5ldyBDb21wb25lbnQoKTtcblxuU3VzcGVuc2VMaXN0LnByb3RvdHlwZS5fc3VzcGVuZGVkID0gZnVuY3Rpb24gKGNoaWxkKSB7XG5cdGNvbnN0IGxpc3QgPSB0aGlzO1xuXHRjb25zdCBkZWxlZ2F0ZWQgPSBzdXNwZW5kZWQobGlzdC5fdm5vZGUpO1xuXG5cdGxldCBub2RlID0gbGlzdC5fbWFwLmdldChjaGlsZCk7XG5cdG5vZGVbU1VTUEVOREVEX0NPVU5UXSsrO1xuXG5cdHJldHVybiB1bnN1c3BlbmQgPT4ge1xuXHRcdGNvbnN0IHdyYXBwZWRVbnN1c3BlbmQgPSAoKSA9PiB7XG5cdFx0XHRpZiAoIWxpc3QucHJvcHMucmV2ZWFsT3JkZXIpIHtcblx0XHRcdFx0Ly8gU3BlY2lhbCBjYXNlIHRoZSB1bmRlZmluZWQgKGZhbHN5KSByZXZlYWxPcmRlciwgYXMgdGhlcmVcblx0XHRcdFx0Ly8gaXMgbm8gbmVlZCB0byBjb29yZGluYXRlIGEgc3BlY2lmaWMgb3JkZXIgb3IgdW5zdXNwZW5kcy5cblx0XHRcdFx0dW5zdXNwZW5kKCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRub2RlLnB1c2godW5zdXNwZW5kKTtcblx0XHRcdFx0cmVzb2x2ZShsaXN0LCBjaGlsZCwgbm9kZSk7XG5cdFx0XHR9XG5cdFx0fTtcblx0XHRpZiAoZGVsZWdhdGVkKSB7XG5cdFx0XHRkZWxlZ2F0ZWQod3JhcHBlZFVuc3VzcGVuZCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHdyYXBwZWRVbnN1c3BlbmQoKTtcblx0XHR9XG5cdH07XG59O1xuXG5TdXNwZW5zZUxpc3QucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uIChwcm9wcykge1xuXHR0aGlzLl9uZXh0ID0gbnVsbDtcblx0dGhpcy5fbWFwID0gbmV3IE1hcCgpO1xuXG5cdGNvbnN0IGNoaWxkcmVuID0gdG9DaGlsZEFycmF5KHByb3BzLmNoaWxkcmVuKTtcblx0aWYgKHByb3BzLnJldmVhbE9yZGVyICYmIHByb3BzLnJldmVhbE9yZGVyWzBdID09PSAnYicpIHtcblx0XHQvLyBJZiBvcmRlciA9PT0gJ2JhY2t3YXJkcycgKG9yLCB3ZWxsLCBhbnl0aGluZyBzdGFydGluZyB3aXRoIGEgJ2InKVxuXHRcdC8vIHRoZW4gZmxpcCB0aGUgY2hpbGQgbGlzdCBhcm91bmQgc28gdGhhdCB0aGUgbGFzdCBjaGlsZCB3aWxsIGJlXG5cdFx0Ly8gdGhlIGZpcnN0IGluIHRoZSBsaW5rZWQgbGlzdC5cblx0XHRjaGlsZHJlbi5yZXZlcnNlKCk7XG5cdH1cblx0Ly8gQnVpbGQgdGhlIGxpbmtlZCBsaXN0LiBJdGVyYXRlIHRocm91Z2ggdGhlIGNoaWxkcmVuIGluIHJldmVyc2Ugb3JkZXJcblx0Ly8gc28gdGhhdCBgX25leHRgIHBvaW50cyB0byB0aGUgZmlyc3QgbGlua2VkIGxpc3Qgbm9kZSB0byBiZSByZXNvbHZlZC5cblx0Zm9yIChsZXQgaSA9IGNoaWxkcmVuLmxlbmd0aDsgaS0tOyApIHtcblx0XHQvLyBDcmVhdGUgYSBuZXcgbGlua2VkIGxpc3Qgbm9kZSBhcyBhbiBhcnJheSBvZiBmb3JtOlxuXHRcdC8vIFx0W3N1c3BlbmRlZF9jb3VudCwgcmVzb2x2ZWRfY291bnQsIG5leHRfbm9kZV1cblx0XHQvLyB3aGVyZSBzdXNwZW5kZWRfY291bnQgYW5kIHJlc29sdmVkX2NvdW50IGFyZSBudW1lcmljIGNvdW50ZXJzIGZvclxuXHRcdC8vIGtlZXBpbmcgdHJhY2sgaG93IG1hbnkgdGltZXMgYSBub2RlIGhhcyBiZWVuIHN1c3BlbmRlZCBhbmQgcmVzb2x2ZWQuXG5cdFx0Ly9cblx0XHQvLyBOb3RlIHRoYXQgc3VzcGVuZGVkX2NvdW50IHN0YXJ0cyBmcm9tIDEgaW5zdGVhZCBvZiAwLCBzbyB3ZSBjYW4gYmxvY2tcblx0XHQvLyBwcm9jZXNzaW5nIGNhbGxiYWNrcyB1bnRpbCBjb21wb25lbnREaWRNb3VudCBoYXMgYmVlbiBjYWxsZWQuIEluIGEgc2Vuc2Vcblx0XHQvLyBub2RlIGlzIHN1c3BlbmRlZCBhdCBsZWFzdCB1bnRpbCBjb21wb25lbnREaWRNb3VudCBnZXRzIGNhbGxlZCFcblx0XHQvL1xuXHRcdC8vIFBlbmRpbmcgY2FsbGJhY2tzIGFyZSBhZGRlZCB0byB0aGUgZW5kIG9mIHRoZSBub2RlOlxuXHRcdC8vIFx0W3N1c3BlbmRlZF9jb3VudCwgcmVzb2x2ZWRfY291bnQsIG5leHRfbm9kZSwgY2FsbGJhY2tfMCwgY2FsbGJhY2tfMSwgLi4uXVxuXHRcdHRoaXMuX21hcC5zZXQoY2hpbGRyZW5baV0sICh0aGlzLl9uZXh0ID0gWzEsIDAsIHRoaXMuX25leHRdKSk7XG5cdH1cblx0cmV0dXJuIHByb3BzLmNoaWxkcmVuO1xufTtcblxuU3VzcGVuc2VMaXN0LnByb3RvdHlwZS5jb21wb25lbnREaWRVcGRhdGUgPVxuXHRTdXNwZW5zZUxpc3QucHJvdG90eXBlLmNvbXBvbmVudERpZE1vdW50ID0gZnVuY3Rpb24gKCkge1xuXHRcdC8vIEl0ZXJhdGUgdGhyb3VnaCBhbGwgY2hpbGRyZW4gYWZ0ZXIgbW91bnRpbmcgZm9yIHR3byByZWFzb25zOlxuXHRcdC8vIDEuIEFzIGVhY2ggbm9kZVtTVVNQRU5ERURfQ09VTlRdIHN0YXJ0cyBmcm9tIDEsIHRoaXMgaXRlcmF0aW9uIGluY3JlYXNlc1xuXHRcdC8vICAgIGVhY2ggbm9kZVtSRUxFQVNFRF9DT1VOVF0gYnkgMSwgdGhlcmVmb3JlIGJhbGFuY2luZyB0aGUgY291bnRlcnMuXG5cdFx0Ly8gICAgVGhlIG5vZGVzIGNhbiBub3cgYmUgY29tcGxldGVseSBjb25zdW1lZCBmcm9tIHRoZSBsaW5rZWQgbGlzdC5cblx0XHQvLyAyLiBIYW5kbGUgbm9kZXMgdGhhdCBtaWdodCBoYXZlIGdvdHRlbiByZXNvbHZlZCBiZXR3ZWVuIHJlbmRlciBhbmRcblx0XHQvLyAgICBjb21wb25lbnREaWRNb3VudC5cblx0XHR0aGlzLl9tYXAuZm9yRWFjaCgobm9kZSwgY2hpbGQpID0+IHtcblx0XHRcdHJlc29sdmUodGhpcywgY2hpbGQsIG5vZGUpO1xuXHRcdH0pO1xuXHR9O1xuIiwgIi8qKiBOb3JtYWwgaHlkcmF0aW9uIHRoYXQgYXR0YWNoZXMgdG8gYSBET00gdHJlZSBidXQgZG9lcyBub3QgZGlmZiBpdC4gKi9cbmV4cG9ydCBjb25zdCBNT0RFX0hZRFJBVEUgPSAxIDw8IDU7XG4vKiogU2lnbmlmaWVzIHRoaXMgVk5vZGUgc3VzcGVuZGVkIG9uIHRoZSBwcmV2aW91cyByZW5kZXIgKi9cbmV4cG9ydCBjb25zdCBNT0RFX1NVU1BFTkRFRCA9IDEgPDwgNztcbi8qKiBJbmRpY2F0ZXMgdGhhdCB0aGlzIG5vZGUgbmVlZHMgdG8gYmUgaW5zZXJ0ZWQgd2hpbGUgcGF0Y2hpbmcgY2hpbGRyZW4gKi9cbmV4cG9ydCBjb25zdCBJTlNFUlRfVk5PREUgPSAxIDw8IDE2O1xuLyoqIEluZGljYXRlcyBhIFZOb2RlIGhhcyBiZWVuIG1hdGNoZWQgd2l0aCBhbm90aGVyIFZOb2RlIGluIHRoZSBkaWZmICovXG5leHBvcnQgY29uc3QgTUFUQ0hFRCA9IDEgPDwgMTc7XG5cbi8qKiBSZXNldCBhbGwgbW9kZSBmbGFncyAqL1xuZXhwb3J0IGNvbnN0IFJFU0VUX01PREUgPSB+KE1PREVfSFlEUkFURSB8IE1PREVfU1VTUEVOREVEKTtcblxuZXhwb3J0IGNvbnN0IEVNUFRZX09CSiA9IC8qKiBAdHlwZSB7YW55fSAqLyAoe30pO1xuZXhwb3J0IGNvbnN0IEVNUFRZX0FSUiA9IFtdO1xuZXhwb3J0IGNvbnN0IElTX05PTl9ESU1FTlNJT05BTCA9XG5cdC9hY2l0fGV4KD86c3xnfG58cHwkKXxycGh8Z3JpZHxvd3N8bW5jfG50d3xpbmVbY2hdfHpvb3xeb3JkfGl0ZXJhL2k7XG4iLCAiaW1wb3J0IHsgY3JlYXRlRWxlbWVudCwgcmVuZGVyIH0gZnJvbSAncHJlYWN0JztcblxuLyoqXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi4vLi4vc3JjL2luZGV4JykuUmVuZGVyYWJsZVByb3BzPHsgY29udGV4dDogYW55IH0+fSBwcm9wc1xuICovXG5mdW5jdGlvbiBDb250ZXh0UHJvdmlkZXIocHJvcHMpIHtcblx0dGhpcy5nZXRDaGlsZENvbnRleHQgPSAoKSA9PiBwcm9wcy5jb250ZXh0O1xuXHRyZXR1cm4gcHJvcHMuY2hpbGRyZW47XG59XG5cbi8qKlxuICogUG9ydGFsIGNvbXBvbmVudFxuICogQHRoaXMge2ltcG9ydCgnLi9pbnRlcm5hbCcpLkNvbXBvbmVudH1cbiAqIEBwYXJhbSB7b2JqZWN0IHwgbnVsbCB8IHVuZGVmaW5lZH0gcHJvcHNcbiAqXG4gKiBUT0RPOiB1c2UgY3JlYXRlUm9vdCgpIGluc3RlYWQgb2YgZmFrZSByb290XG4gKi9cbmZ1bmN0aW9uIFBvcnRhbChwcm9wcykge1xuXHRjb25zdCBfdGhpcyA9IHRoaXM7XG5cdGxldCBjb250YWluZXIgPSBwcm9wcy5fY29udGFpbmVyO1xuXG5cdF90aGlzLmNvbXBvbmVudFdpbGxVbm1vdW50ID0gZnVuY3Rpb24gKCkge1xuXHRcdHJlbmRlcihudWxsLCBfdGhpcy5fdGVtcCk7XG5cdFx0X3RoaXMuX3RlbXAgPSBudWxsO1xuXHRcdF90aGlzLl9jb250YWluZXIgPSBudWxsO1xuXHR9O1xuXG5cdC8vIFdoZW4gd2UgY2hhbmdlIGNvbnRhaW5lciB3ZSBzaG91bGQgY2xlYXIgb3VyIG9sZCBjb250YWluZXIgYW5kXG5cdC8vIGluZGljYXRlIGEgbmV3IG1vdW50LlxuXHRpZiAoX3RoaXMuX2NvbnRhaW5lciAmJiBfdGhpcy5fY29udGFpbmVyICE9PSBjb250YWluZXIpIHtcblx0XHRfdGhpcy5jb21wb25lbnRXaWxsVW5tb3VudCgpO1xuXHR9XG5cblx0aWYgKCFfdGhpcy5fdGVtcCkge1xuXHRcdF90aGlzLl9jb250YWluZXIgPSBjb250YWluZXI7XG5cblx0XHQvLyBDcmVhdGUgYSBmYWtlIERPTSBwYXJlbnQgbm9kZSB0aGF0IG1hbmFnZXMgYSBzdWJzZXQgb2YgYGNvbnRhaW5lcmAncyBjaGlsZHJlbjpcblx0XHRfdGhpcy5fdGVtcCA9IHtcblx0XHRcdG5vZGVUeXBlOiAxLFxuXHRcdFx0cGFyZW50Tm9kZTogY29udGFpbmVyLFxuXHRcdFx0Y2hpbGROb2RlczogW10sXG5cdFx0XHRjb250YWluczogKCkgPT4gdHJ1ZSxcblx0XHRcdGFwcGVuZENoaWxkKGNoaWxkKSB7XG5cdFx0XHRcdHRoaXMuY2hpbGROb2Rlcy5wdXNoKGNoaWxkKTtcblx0XHRcdFx0X3RoaXMuX2NvbnRhaW5lci5hcHBlbmRDaGlsZChjaGlsZCk7XG5cdFx0XHR9LFxuXHRcdFx0aW5zZXJ0QmVmb3JlKGNoaWxkLCBiZWZvcmUpIHtcblx0XHRcdFx0dGhpcy5jaGlsZE5vZGVzLnB1c2goY2hpbGQpO1xuXHRcdFx0XHRfdGhpcy5fY29udGFpbmVyLmFwcGVuZENoaWxkKGNoaWxkKTtcblx0XHRcdH0sXG5cdFx0XHRyZW1vdmVDaGlsZChjaGlsZCkge1xuXHRcdFx0XHR0aGlzLmNoaWxkTm9kZXMuc3BsaWNlKHRoaXMuY2hpbGROb2Rlcy5pbmRleE9mKGNoaWxkKSA+Pj4gMSwgMSk7XG5cdFx0XHRcdF90aGlzLl9jb250YWluZXIucmVtb3ZlQ2hpbGQoY2hpbGQpO1xuXHRcdFx0fVxuXHRcdH07XG5cdH1cblxuXHQvLyBSZW5kZXIgb3VyIHdyYXBwaW5nIGVsZW1lbnQgaW50byB0ZW1wLlxuXHRyZW5kZXIoXG5cdFx0Y3JlYXRlRWxlbWVudChDb250ZXh0UHJvdmlkZXIsIHsgY29udGV4dDogX3RoaXMuY29udGV4dCB9LCBwcm9wcy5fdm5vZGUpLFxuXHRcdF90aGlzLl90ZW1wXG5cdCk7XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgYFBvcnRhbGAgdG8gY29udGludWUgcmVuZGVyaW5nIHRoZSB2bm9kZSB0cmVlIGF0IGEgZGlmZmVyZW50IERPTSBub2RlXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi9pbnRlcm5hbCcpLlZOb2RlfSB2bm9kZSBUaGUgdm5vZGUgdG8gcmVuZGVyXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi9pbnRlcm5hbCcpLlByZWFjdEVsZW1lbnR9IGNvbnRhaW5lciBUaGUgRE9NIG5vZGUgdG8gY29udGludWUgcmVuZGVyaW5nIGluIHRvLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUG9ydGFsKHZub2RlLCBjb250YWluZXIpIHtcblx0Y29uc3QgZWwgPSBjcmVhdGVFbGVtZW50KFBvcnRhbCwgeyBfdm5vZGU6IHZub2RlLCBfY29udGFpbmVyOiBjb250YWluZXIgfSk7XG5cdGVsLmNvbnRhaW5lckluZm8gPSBjb250YWluZXI7XG5cdHJldHVybiBlbDtcbn1cbiIsICJpbXBvcnQge1xuXHRyZW5kZXIgYXMgcHJlYWN0UmVuZGVyLFxuXHRoeWRyYXRlIGFzIHByZWFjdEh5ZHJhdGUsXG5cdG9wdGlvbnMsXG5cdHRvQ2hpbGRBcnJheSxcblx0Q29tcG9uZW50XG59IGZyb20gJ3ByZWFjdCc7XG5pbXBvcnQge1xuXHR1c2VDYWxsYmFjayxcblx0dXNlQ29udGV4dCxcblx0dXNlRGVidWdWYWx1ZSxcblx0dXNlRWZmZWN0LFxuXHR1c2VJZCxcblx0dXNlSW1wZXJhdGl2ZUhhbmRsZSxcblx0dXNlTGF5b3V0RWZmZWN0LFxuXHR1c2VNZW1vLFxuXHR1c2VSZWR1Y2VyLFxuXHR1c2VSZWYsXG5cdHVzZVN0YXRlXG59IGZyb20gJ3ByZWFjdC9ob29rcyc7XG5pbXBvcnQge1xuXHR1c2VEZWZlcnJlZFZhbHVlLFxuXHR1c2VJbnNlcnRpb25FZmZlY3QsXG5cdHVzZVN5bmNFeHRlcm5hbFN0b3JlLFxuXHR1c2VUcmFuc2l0aW9uXG59IGZyb20gJy4vaW5kZXgnO1xuXG5leHBvcnQgY29uc3QgUkVBQ1RfRUxFTUVOVF9UWVBFID1cblx0KHR5cGVvZiBTeW1ib2wgIT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLmZvciAmJiBTeW1ib2wuZm9yKCdyZWFjdC5lbGVtZW50JykpIHx8XG5cdDB4ZWFjNztcblxuY29uc3QgQ0FNRUxfUFJPUFMgPVxuXHQvXig/OmFjY2VudHxhbGlnbm1lbnR8YXJhYmljfGJhc2VsaW5lfGNhcHxjbGlwKD8hUGF0aFUpfGNvbG9yfGRvbWluYW50fGZpbGx8Zmxvb2R8Zm9udHxnbHlwaCg/IVIpfGhvcml6fGltYWdlKCFTKXxsZXR0ZXJ8bGlnaHRpbmd8bWFya2VyKD8hSHxXfFUpfG92ZXJsaW5lfHBhaW50fHBvaW50ZXJ8c2hhcGV8c3RvcHxzdHJpa2V0aHJvdWdofHN0cm9rZXx0ZXh0KD8hTCl8dHJhbnNmb3JtfHVuZGVybGluZXx1bmljb2RlfHVuaXRzfHZ8dmVjdG9yfHZlcnR8d29yZHx3cml0aW5nfHgoPyFDKSlbQS1aXS87XG5jb25zdCBPTl9BTkkgPSAvXm9uKEFuaXxUcmF8VG91fEJlZm9yZUlucHxDb21wbykvO1xuY29uc3QgQ0FNRUxfUkVQTEFDRSA9IC9bQS1aMC05XS9nO1xuY29uc3QgSVNfRE9NID0gdHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJztcblxuLy8gSW5wdXQgdHlwZXMgZm9yIHdoaWNoIG9uY2hhbmdlIHNob3VsZCBub3QgYmUgY29udmVydGVkIHRvIG9uaW5wdXQuXG4vLyB0eXBlPVwiZmlsZXxjaGVja2JveHxyYWRpb1wiLCBwbHVzIFwicmFuZ2VcIiBpbiBJRTExLlxuLy8gKElFMTEgZG9lc24ndCBzdXBwb3J0IFN5bWJvbCwgd2hpY2ggd2UgdXNlIGhlcmUgdG8gdHVybiBgcmFkYCBpbnRvIGByYWAgd2hpY2ggbWF0Y2hlcyBcInJhbmdlXCIpXG5jb25zdCBvbkNoYW5nZUlucHV0VHlwZSA9IHR5cGUgPT5cblx0KHR5cGVvZiBTeW1ib2wgIT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIFN5bWJvbCgpID09ICdzeW1ib2wnXG5cdFx0PyAvZmlsfGNoZXxyYWQvXG5cdFx0OiAvZmlsfGNoZXxyYS9cblx0KS50ZXN0KHR5cGUpO1xuXG4vLyBTb21lIGxpYnJhcmllcyBsaWtlIGByZWFjdC12aXJ0dWFsaXplZGAgZXhwbGljaXRseSBjaGVjayBmb3IgdGhpcy5cbkNvbXBvbmVudC5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudCA9IHt9O1xuXG4vLyBgVU5TQUZFXypgIGxpZmVjeWNsZSBob29rc1xuLy8gUHJlYWN0IG9ubHkgZXZlciBpbnZva2VzIHRoZSB1bnByZWZpeGVkIG1ldGhvZHMuXG4vLyBIZXJlIHdlIHByb3ZpZGUgYSBiYXNlIFwiZmFsbGJhY2tcIiBpbXBsZW1lbnRhdGlvbiB0aGF0IGNhbGxzIGFueSBkZWZpbmVkIFVOU0FGRV8gcHJlZml4ZWQgbWV0aG9kLlxuLy8gLSBJZiBhIGNvbXBvbmVudCBkZWZpbmVzIGl0cyBvd24gYGNvbXBvbmVudERpZE1vdW50KClgIChpbmNsdWRpbmcgdmlhIGRlZmluZVByb3BlcnR5KSwgdXNlIHRoYXQuXG4vLyAtIElmIGEgY29tcG9uZW50IGRlZmluZXMgYFVOU0FGRV9jb21wb25lbnREaWRNb3VudCgpYCwgYGNvbXBvbmVudERpZE1vdW50YCBpcyB0aGUgYWxpYXMgZ2V0dGVyL3NldHRlci5cbi8vIC0gSWYgYW55dGhpbmcgYXNzaWducyB0byBhbiBgVU5TQUZFXypgIHByb3BlcnR5LCB0aGUgYXNzaWdubWVudCBpcyBmb3J3YXJkZWQgdG8gdGhlIHVucHJlZml4ZWQgcHJvcGVydHkuXG4vLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3ByZWFjdGpzL3ByZWFjdC9pc3N1ZXMvMTk0MVxuW1xuXHQnY29tcG9uZW50V2lsbE1vdW50Jyxcblx0J2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMnLFxuXHQnY29tcG9uZW50V2lsbFVwZGF0ZSdcbl0uZm9yRWFjaChrZXkgPT4ge1xuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoQ29tcG9uZW50LnByb3RvdHlwZSwga2V5LCB7XG5cdFx0Y29uZmlndXJhYmxlOiB0cnVlLFxuXHRcdGdldCgpIHtcblx0XHRcdHJldHVybiB0aGlzWydVTlNBRkVfJyArIGtleV07XG5cdFx0fSxcblx0XHRzZXQodikge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIGtleSwge1xuXHRcdFx0XHRjb25maWd1cmFibGU6IHRydWUsXG5cdFx0XHRcdHdyaXRhYmxlOiB0cnVlLFxuXHRcdFx0XHR2YWx1ZTogdlxuXHRcdFx0fSk7XG5cdFx0fVxuXHR9KTtcbn0pO1xuXG4vKipcbiAqIFByb3h5IHJlbmRlcigpIHNpbmNlIFJlYWN0IHJldHVybnMgYSBDb21wb25lbnQgcmVmZXJlbmNlLlxuICogQHBhcmFtIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5WTm9kZX0gdm5vZGUgVk5vZGUgdHJlZSB0byByZW5kZXJcbiAqIEBwYXJhbSB7aW1wb3J0KCcuL2ludGVybmFsJykuUHJlYWN0RWxlbWVudH0gcGFyZW50IERPTSBub2RlIHRvIHJlbmRlciB2bm9kZSB0cmVlIGludG9cbiAqIEBwYXJhbSB7KCkgPT4gdm9pZH0gW2NhbGxiYWNrXSBPcHRpb25hbCBjYWxsYmFjayB0aGF0IHdpbGwgYmUgY2FsbGVkIGFmdGVyIHJlbmRlcmluZ1xuICogQHJldHVybnMge2ltcG9ydCgnLi9pbnRlcm5hbCcpLkNvbXBvbmVudCB8IG51bGx9IFRoZSByb290IGNvbXBvbmVudCByZWZlcmVuY2Ugb3IgbnVsbFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyKHZub2RlLCBwYXJlbnQsIGNhbGxiYWNrKSB7XG5cdC8vIFJlYWN0IGRlc3Ryb3lzIGFueSBleGlzdGluZyBET00gbm9kZXMsIHNlZSAjMTcyN1xuXHQvLyAuLi5idXQgb25seSBvbiB0aGUgZmlyc3QgcmVuZGVyLCBzZWUgIzE4Mjhcblx0aWYgKHBhcmVudC5fY2hpbGRyZW4gPT0gbnVsbCkge1xuXHRcdHBhcmVudC50ZXh0Q29udGVudCA9ICcnO1xuXHR9XG5cblx0cHJlYWN0UmVuZGVyKHZub2RlLCBwYXJlbnQpO1xuXHRpZiAodHlwZW9mIGNhbGxiYWNrID09ICdmdW5jdGlvbicpIGNhbGxiYWNrKCk7XG5cblx0cmV0dXJuIHZub2RlID8gdm5vZGUuX2NvbXBvbmVudCA6IG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoeWRyYXRlKHZub2RlLCBwYXJlbnQsIGNhbGxiYWNrKSB7XG5cdHByZWFjdEh5ZHJhdGUodm5vZGUsIHBhcmVudCk7XG5cdGlmICh0eXBlb2YgY2FsbGJhY2sgPT0gJ2Z1bmN0aW9uJykgY2FsbGJhY2soKTtcblxuXHRyZXR1cm4gdm5vZGUgPyB2bm9kZS5fY29tcG9uZW50IDogbnVsbDtcbn1cblxubGV0IG9sZEV2ZW50SG9vayA9IG9wdGlvbnMuZXZlbnQ7XG5vcHRpb25zLmV2ZW50ID0gZSA9PiB7XG5cdGlmIChvbGRFdmVudEhvb2spIGUgPSBvbGRFdmVudEhvb2soZSk7XG5cblx0ZS5wZXJzaXN0ID0gZW1wdHk7XG5cdGUuaXNQcm9wYWdhdGlvblN0b3BwZWQgPSBpc1Byb3BhZ2F0aW9uU3RvcHBlZDtcblx0ZS5pc0RlZmF1bHRQcmV2ZW50ZWQgPSBpc0RlZmF1bHRQcmV2ZW50ZWQ7XG5cdHJldHVybiAoZS5uYXRpdmVFdmVudCA9IGUpO1xufTtcblxuZnVuY3Rpb24gZW1wdHkoKSB7fVxuXG5mdW5jdGlvbiBpc1Byb3BhZ2F0aW9uU3RvcHBlZCgpIHtcblx0cmV0dXJuIHRoaXMuY2FuY2VsQnViYmxlO1xufVxuXG5mdW5jdGlvbiBpc0RlZmF1bHRQcmV2ZW50ZWQoKSB7XG5cdHJldHVybiB0aGlzLmRlZmF1bHRQcmV2ZW50ZWQ7XG59XG5cbmNvbnN0IGNsYXNzTmFtZURlc2NyaXB0b3JOb25FbnVtYmVyYWJsZSA9IHtcblx0ZW51bWVyYWJsZTogZmFsc2UsXG5cdGNvbmZpZ3VyYWJsZTogdHJ1ZSxcblx0Z2V0KCkge1xuXHRcdHJldHVybiB0aGlzLmNsYXNzO1xuXHR9XG59O1xuXG5mdW5jdGlvbiBoYW5kbGVEb21WTm9kZSh2bm9kZSkge1xuXHRsZXQgcHJvcHMgPSB2bm9kZS5wcm9wcyxcblx0XHR0eXBlID0gdm5vZGUudHlwZSxcblx0XHRub3JtYWxpemVkUHJvcHMgPSB7fTtcblxuXHRsZXQgaXNOb25EYXNoZWRUeXBlID0gdHlwZS5pbmRleE9mKCctJykgPT09IC0xO1xuXHRmb3IgKGxldCBpIGluIHByb3BzKSB7XG5cdFx0bGV0IHZhbHVlID0gcHJvcHNbaV07XG5cblx0XHRpZiAoXG5cdFx0XHQoaSA9PT0gJ3ZhbHVlJyAmJiAnZGVmYXVsdFZhbHVlJyBpbiBwcm9wcyAmJiB2YWx1ZSA9PSBudWxsKSB8fFxuXHRcdFx0Ly8gRW11bGF0ZSBSZWFjdCdzIGJlaGF2aW9yIG9mIG5vdCByZW5kZXJpbmcgdGhlIGNvbnRlbnRzIG9mIG5vc2NyaXB0IHRhZ3Mgb24gdGhlIGNsaWVudC5cblx0XHRcdChJU19ET00gJiYgaSA9PT0gJ2NoaWxkcmVuJyAmJiB0eXBlID09PSAnbm9zY3JpcHQnKSB8fFxuXHRcdFx0aSA9PT0gJ2NsYXNzJyB8fFxuXHRcdFx0aSA9PT0gJ2NsYXNzTmFtZSdcblx0XHQpIHtcblx0XHRcdC8vIFNraXAgYXBwbHlpbmcgdmFsdWUgaWYgaXQgaXMgbnVsbC91bmRlZmluZWQgYW5kIHdlIGFscmVhZHkgc2V0XG5cdFx0XHQvLyBhIGRlZmF1bHQgdmFsdWVcblx0XHRcdGNvbnRpbnVlO1xuXHRcdH1cblxuXHRcdGxldCBsb3dlckNhc2VkID0gaS50b0xvd2VyQ2FzZSgpO1xuXHRcdGlmIChpID09PSAnZGVmYXVsdFZhbHVlJyAmJiAndmFsdWUnIGluIHByb3BzICYmIHByb3BzLnZhbHVlID09IG51bGwpIHtcblx0XHRcdC8vIGBkZWZhdWx0VmFsdWVgIGlzIHRyZWF0ZWQgYXMgYSBmYWxsYmFjayBgdmFsdWVgIHdoZW4gYSB2YWx1ZSBwcm9wIGlzIHByZXNlbnQgYnV0IG51bGwvdW5kZWZpbmVkLlxuXHRcdFx0Ly8gYGRlZmF1bHRWYWx1ZWAgZm9yIEVsZW1lbnRzIHdpdGggbm8gdmFsdWUgcHJvcCBpcyB0aGUgc2FtZSBhcyB0aGUgRE9NIGRlZmF1bHRWYWx1ZSBwcm9wZXJ0eS5cblx0XHRcdGkgPSAndmFsdWUnO1xuXHRcdH0gZWxzZSBpZiAoaSA9PT0gJ2Rvd25sb2FkJyAmJiB2YWx1ZSA9PT0gdHJ1ZSkge1xuXHRcdFx0Ly8gQ2FsbGluZyBgc2V0QXR0cmlidXRlYCB3aXRoIGEgdHJ1dGh5IHZhbHVlIHdpbGwgbGVhZCB0byBpdCBiZWluZ1xuXHRcdFx0Ly8gcGFzc2VkIGFzIGEgc3RyaW5naWZpZWQgdmFsdWUsIGUuZy4gYGRvd25sb2FkPVwidHJ1ZVwiYC4gUmVhY3Rcblx0XHRcdC8vIGNvbnZlcnRzIGl0IHRvIGFuIGVtcHR5IHN0cmluZyBpbnN0ZWFkLCBvdGhlcndpc2UgdGhlIGF0dHJpYnV0ZVxuXHRcdFx0Ly8gdmFsdWUgd2lsbCBiZSB1c2VkIGFzIHRoZSBmaWxlIG5hbWUgYW5kIHRoZSBmaWxlIHdpbGwgYmUgY2FsbGVkXG5cdFx0XHQvLyBcInRydWVcIiB1cG9uIGRvd25sb2FkaW5nIGl0LlxuXHRcdFx0dmFsdWUgPSAnJztcblx0XHR9IGVsc2UgaWYgKGxvd2VyQ2FzZWQgPT09ICd0cmFuc2xhdGUnICYmIHZhbHVlID09PSAnbm8nKSB7XG5cdFx0XHR2YWx1ZSA9IGZhbHNlO1xuXHRcdH0gZWxzZSBpZiAobG93ZXJDYXNlZFswXSA9PT0gJ28nICYmIGxvd2VyQ2FzZWRbMV0gPT09ICduJykge1xuXHRcdFx0aWYgKGxvd2VyQ2FzZWQgPT09ICdvbmRvdWJsZWNsaWNrJykge1xuXHRcdFx0XHRpID0gJ29uZGJsY2xpY2snO1xuXHRcdFx0fSBlbHNlIGlmIChcblx0XHRcdFx0bG93ZXJDYXNlZCA9PT0gJ29uY2hhbmdlJyAmJlxuXHRcdFx0XHQodHlwZSA9PT0gJ2lucHV0JyB8fCB0eXBlID09PSAndGV4dGFyZWEnKSAmJlxuXHRcdFx0XHQhb25DaGFuZ2VJbnB1dFR5cGUocHJvcHMudHlwZSlcblx0XHRcdCkge1xuXHRcdFx0XHRsb3dlckNhc2VkID0gaSA9ICdvbmlucHV0Jztcblx0XHRcdH0gZWxzZSBpZiAobG93ZXJDYXNlZCA9PT0gJ29uZm9jdXMnKSB7XG5cdFx0XHRcdGkgPSAnb25mb2N1c2luJztcblx0XHRcdH0gZWxzZSBpZiAobG93ZXJDYXNlZCA9PT0gJ29uYmx1cicpIHtcblx0XHRcdFx0aSA9ICdvbmZvY3Vzb3V0Jztcblx0XHRcdH0gZWxzZSBpZiAoT05fQU5JLnRlc3QoaSkpIHtcblx0XHRcdFx0aSA9IGxvd2VyQ2FzZWQ7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIGlmIChpc05vbkRhc2hlZFR5cGUgJiYgQ0FNRUxfUFJPUFMudGVzdChpKSkge1xuXHRcdFx0aSA9IGkucmVwbGFjZShDQU1FTF9SRVBMQUNFLCAnLSQmJykudG9Mb3dlckNhc2UoKTtcblx0XHR9IGVsc2UgaWYgKHZhbHVlID09PSBudWxsKSB7XG5cdFx0XHR2YWx1ZSA9IHVuZGVmaW5lZDtcblx0XHR9XG5cblx0XHQvLyBBZGQgc3VwcG9ydCBmb3Igb25JbnB1dCBhbmQgb25DaGFuZ2UsIHNlZSAjMzU2MVxuXHRcdC8vIGlmIHdlIGhhdmUgYW4gb25pbnB1dCBwcm9wIGFscmVhZHkgY2hhbmdlIGl0IHRvIG9uaW5wdXRDYXB0dXJlXG5cdFx0aWYgKGxvd2VyQ2FzZWQgPT09ICdvbmlucHV0Jykge1xuXHRcdFx0aSA9IGxvd2VyQ2FzZWQ7XG5cdFx0XHRpZiAobm9ybWFsaXplZFByb3BzW2ldKSB7XG5cdFx0XHRcdGkgPSAnb25pbnB1dENhcHR1cmUnO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdG5vcm1hbGl6ZWRQcm9wc1tpXSA9IHZhbHVlO1xuXHR9XG5cblx0Ly8gQWRkIHN1cHBvcnQgZm9yIGFycmF5IHNlbGVjdCB2YWx1ZXM6IDxzZWxlY3QgbXVsdGlwbGUgdmFsdWU9e1tdfSAvPlxuXHRpZiAoXG5cdFx0dHlwZSA9PSAnc2VsZWN0JyAmJlxuXHRcdG5vcm1hbGl6ZWRQcm9wcy5tdWx0aXBsZSAmJlxuXHRcdEFycmF5LmlzQXJyYXkobm9ybWFsaXplZFByb3BzLnZhbHVlKVxuXHQpIHtcblx0XHQvLyBmb3JFYWNoKCkgYWx3YXlzIHJldHVybnMgdW5kZWZpbmVkLCB3aGljaCB3ZSBhYnVzZSBoZXJlIHRvIHVuc2V0IHRoZSB2YWx1ZSBwcm9wLlxuXHRcdG5vcm1hbGl6ZWRQcm9wcy52YWx1ZSA9IHRvQ2hpbGRBcnJheShwcm9wcy5jaGlsZHJlbikuZm9yRWFjaChjaGlsZCA9PiB7XG5cdFx0XHRjaGlsZC5wcm9wcy5zZWxlY3RlZCA9XG5cdFx0XHRcdG5vcm1hbGl6ZWRQcm9wcy52YWx1ZS5pbmRleE9mKGNoaWxkLnByb3BzLnZhbHVlKSAhPSAtMTtcblx0XHR9KTtcblx0fVxuXG5cdC8vIEFkZGluZyBzdXBwb3J0IGZvciBkZWZhdWx0VmFsdWUgaW4gc2VsZWN0IHRhZ1xuXHRpZiAodHlwZSA9PSAnc2VsZWN0JyAmJiBub3JtYWxpemVkUHJvcHMuZGVmYXVsdFZhbHVlICE9IG51bGwpIHtcblx0XHRub3JtYWxpemVkUHJvcHMudmFsdWUgPSB0b0NoaWxkQXJyYXkocHJvcHMuY2hpbGRyZW4pLmZvckVhY2goY2hpbGQgPT4ge1xuXHRcdFx0aWYgKG5vcm1hbGl6ZWRQcm9wcy5tdWx0aXBsZSkge1xuXHRcdFx0XHRjaGlsZC5wcm9wcy5zZWxlY3RlZCA9XG5cdFx0XHRcdFx0bm9ybWFsaXplZFByb3BzLmRlZmF1bHRWYWx1ZS5pbmRleE9mKGNoaWxkLnByb3BzLnZhbHVlKSAhPSAtMTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGNoaWxkLnByb3BzLnNlbGVjdGVkID1cblx0XHRcdFx0XHRub3JtYWxpemVkUHJvcHMuZGVmYXVsdFZhbHVlID09IGNoaWxkLnByb3BzLnZhbHVlO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0aWYgKHByb3BzLmNsYXNzICYmICFwcm9wcy5jbGFzc05hbWUpIHtcblx0XHRub3JtYWxpemVkUHJvcHMuY2xhc3MgPSBwcm9wcy5jbGFzcztcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoXG5cdFx0XHRub3JtYWxpemVkUHJvcHMsXG5cdFx0XHQnY2xhc3NOYW1lJyxcblx0XHRcdGNsYXNzTmFtZURlc2NyaXB0b3JOb25FbnVtYmVyYWJsZVxuXHRcdCk7XG5cdH0gZWxzZSBpZiAocHJvcHMuY2xhc3NOYW1lICYmICFwcm9wcy5jbGFzcykge1xuXHRcdG5vcm1hbGl6ZWRQcm9wcy5jbGFzcyA9IG5vcm1hbGl6ZWRQcm9wcy5jbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWU7XG5cdH0gZWxzZSBpZiAocHJvcHMuY2xhc3MgJiYgcHJvcHMuY2xhc3NOYW1lKSB7XG5cdFx0bm9ybWFsaXplZFByb3BzLmNsYXNzID0gbm9ybWFsaXplZFByb3BzLmNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZTtcblx0fVxuXG5cdHZub2RlLnByb3BzID0gbm9ybWFsaXplZFByb3BzO1xufVxuXG5sZXQgb2xkVk5vZGVIb29rID0gb3B0aW9ucy52bm9kZTtcbm9wdGlvbnMudm5vZGUgPSB2bm9kZSA9PiB7XG5cdC8vIG9ubHkgbm9ybWFsaXplIHByb3BzIG9uIEVsZW1lbnQgbm9kZXNcblx0aWYgKHR5cGVvZiB2bm9kZS50eXBlID09PSAnc3RyaW5nJykge1xuXHRcdGhhbmRsZURvbVZOb2RlKHZub2RlKTtcblx0fVxuXG5cdHZub2RlLiQkdHlwZW9mID0gUkVBQ1RfRUxFTUVOVF9UWVBFO1xuXG5cdGlmIChvbGRWTm9kZUhvb2spIG9sZFZOb2RlSG9vayh2bm9kZSk7XG59O1xuXG4vLyBPbmx5IG5lZWRlZCBmb3IgcmVhY3QtcmVsYXlcbmxldCBjdXJyZW50Q29tcG9uZW50O1xuY29uc3Qgb2xkQmVmb3JlUmVuZGVyID0gb3B0aW9ucy5fcmVuZGVyO1xub3B0aW9ucy5fcmVuZGVyID0gZnVuY3Rpb24gKHZub2RlKSB7XG5cdGlmIChvbGRCZWZvcmVSZW5kZXIpIHtcblx0XHRvbGRCZWZvcmVSZW5kZXIodm5vZGUpO1xuXHR9XG5cdGN1cnJlbnRDb21wb25lbnQgPSB2bm9kZS5fY29tcG9uZW50O1xufTtcblxuY29uc3Qgb2xkRGlmZmVkID0gb3B0aW9ucy5kaWZmZWQ7XG4vKiogQHR5cGUgeyh2bm9kZTogaW1wb3J0KCcuL2ludGVybmFsJykuVk5vZGUpID0+IHZvaWR9ICovXG5vcHRpb25zLmRpZmZlZCA9IGZ1bmN0aW9uICh2bm9kZSkge1xuXHRpZiAob2xkRGlmZmVkKSB7XG5cdFx0b2xkRGlmZmVkKHZub2RlKTtcblx0fVxuXG5cdGNvbnN0IHByb3BzID0gdm5vZGUucHJvcHM7XG5cdGNvbnN0IGRvbSA9IHZub2RlLl9kb207XG5cblx0aWYgKFxuXHRcdGRvbSAhPSBudWxsICYmXG5cdFx0dm5vZGUudHlwZSA9PT0gJ3RleHRhcmVhJyAmJlxuXHRcdCd2YWx1ZScgaW4gcHJvcHMgJiZcblx0XHRwcm9wcy52YWx1ZSAhPT0gZG9tLnZhbHVlXG5cdCkge1xuXHRcdGRvbS52YWx1ZSA9IHByb3BzLnZhbHVlID09IG51bGwgPyAnJyA6IHByb3BzLnZhbHVlO1xuXHR9XG5cblx0Y3VycmVudENvbXBvbmVudCA9IG51bGw7XG59O1xuXG4vLyBUaGlzIGlzIGEgdmVyeSB2ZXJ5IHByaXZhdGUgaW50ZXJuYWwgZnVuY3Rpb24gZm9yIFJlYWN0IGl0XG4vLyBpcyB1c2VkIHRvIHNvcnQtb2YgZG8gcnVudGltZSBkZXBlbmRlbmN5IGluamVjdGlvbi5cbmV4cG9ydCBjb25zdCBfX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRCA9IHtcblx0UmVhY3RDdXJyZW50RGlzcGF0Y2hlcjoge1xuXHRcdGN1cnJlbnQ6IHtcblx0XHRcdHJlYWRDb250ZXh0KGNvbnRleHQpIHtcblx0XHRcdFx0cmV0dXJuIGN1cnJlbnRDb21wb25lbnQuX2dsb2JhbENvbnRleHRbY29udGV4dC5faWRdLnByb3BzLnZhbHVlO1xuXHRcdFx0fSxcblx0XHRcdHVzZUNhbGxiYWNrLFxuXHRcdFx0dXNlQ29udGV4dCxcblx0XHRcdHVzZURlYnVnVmFsdWUsXG5cdFx0XHR1c2VEZWZlcnJlZFZhbHVlLFxuXHRcdFx0dXNlRWZmZWN0LFxuXHRcdFx0dXNlSWQsXG5cdFx0XHR1c2VJbXBlcmF0aXZlSGFuZGxlLFxuXHRcdFx0dXNlSW5zZXJ0aW9uRWZmZWN0LFxuXHRcdFx0dXNlTGF5b3V0RWZmZWN0LFxuXHRcdFx0dXNlTWVtbyxcblx0XHRcdC8vIHVzZU11dGFibGVTb3VyY2UsIC8vIGV4cGVyaW1lbnRhbC1vbmx5IGFuZCByZXBsYWNlZCBieSB1U0VTLCBsaWtlbHkgbm90IHdvcnRoIHN1cHBvcnRpbmdcblx0XHRcdHVzZVJlZHVjZXIsXG5cdFx0XHR1c2VSZWYsXG5cdFx0XHR1c2VTdGF0ZSxcblx0XHRcdHVzZVN5bmNFeHRlcm5hbFN0b3JlLFxuXHRcdFx0dXNlVHJhbnNpdGlvblxuXHRcdH1cblx0fVxufTtcbiIsICJpbXBvcnQge1xuXHRjcmVhdGVFbGVtZW50LFxuXHRyZW5kZXIgYXMgcHJlYWN0UmVuZGVyLFxuXHRjbG9uZUVsZW1lbnQgYXMgcHJlYWN0Q2xvbmVFbGVtZW50LFxuXHRjcmVhdGVSZWYsXG5cdENvbXBvbmVudCxcblx0Y3JlYXRlQ29udGV4dCxcblx0RnJhZ21lbnRcbn0gZnJvbSAncHJlYWN0JztcbmltcG9ydCB7XG5cdHVzZVN0YXRlLFxuXHR1c2VJZCxcblx0dXNlUmVkdWNlcixcblx0dXNlRWZmZWN0LFxuXHR1c2VMYXlvdXRFZmZlY3QsXG5cdHVzZVJlZixcblx0dXNlSW1wZXJhdGl2ZUhhbmRsZSxcblx0dXNlTWVtbyxcblx0dXNlQ2FsbGJhY2ssXG5cdHVzZUNvbnRleHQsXG5cdHVzZURlYnVnVmFsdWVcbn0gZnJvbSAncHJlYWN0L2hvb2tzJztcbmltcG9ydCB7IFB1cmVDb21wb25lbnQgfSBmcm9tICcuL1B1cmVDb21wb25lbnQnO1xuaW1wb3J0IHsgbWVtbyB9IGZyb20gJy4vbWVtbyc7XG5pbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSAnLi9mb3J3YXJkUmVmJztcbmltcG9ydCB7IENoaWxkcmVuIH0gZnJvbSAnLi9DaGlsZHJlbic7XG5pbXBvcnQgeyBTdXNwZW5zZSwgbGF6eSB9IGZyb20gJy4vc3VzcGVuc2UnO1xuaW1wb3J0IHsgU3VzcGVuc2VMaXN0IH0gZnJvbSAnLi9zdXNwZW5zZS1saXN0JztcbmltcG9ydCB7IGNyZWF0ZVBvcnRhbCB9IGZyb20gJy4vcG9ydGFscyc7XG5pbXBvcnQgeyBpcyB9IGZyb20gJy4vdXRpbCc7XG5pbXBvcnQge1xuXHRoeWRyYXRlLFxuXHRyZW5kZXIsXG5cdFJFQUNUX0VMRU1FTlRfVFlQRSxcblx0X19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRURcbn0gZnJvbSAnLi9yZW5kZXInO1xuXG5jb25zdCB2ZXJzaW9uID0gJzE4LjMuMSc7IC8vIHRyaWNrIGxpYnJhcmllcyB0byB0aGluayB3ZSBhcmUgcmVhY3RcblxuLyoqXG4gKiBMZWdhY3kgdmVyc2lvbiBvZiBjcmVhdGVFbGVtZW50LlxuICogQHBhcmFtIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5WTm9kZVtcInR5cGVcIl19IHR5cGUgVGhlIG5vZGUgbmFtZSBvciBDb21wb25lbnQgY29uc3RydWN0b3JcbiAqL1xuZnVuY3Rpb24gY3JlYXRlRmFjdG9yeSh0eXBlKSB7XG5cdHJldHVybiBjcmVhdGVFbGVtZW50LmJpbmQobnVsbCwgdHlwZSk7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgdGhlIHBhc3NlZCBlbGVtZW50IGlzIGEgdmFsaWQgKHApcmVhY3Qgbm9kZS5cbiAqIEBwYXJhbSB7Kn0gZWxlbWVudCBUaGUgZWxlbWVudCB0byBjaGVja1xuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGlzVmFsaWRFbGVtZW50KGVsZW1lbnQpIHtcblx0cmV0dXJuICEhZWxlbWVudCAmJiBlbGVtZW50LiQkdHlwZW9mID09PSBSRUFDVF9FTEVNRU5UX1RZUEU7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgdGhlIHBhc3NlZCBlbGVtZW50IGlzIGEgRnJhZ21lbnQgbm9kZS5cbiAqIEBwYXJhbSB7Kn0gZWxlbWVudCBUaGUgZWxlbWVudCB0byBjaGVja1xuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGlzRnJhZ21lbnQoZWxlbWVudCkge1xuXHRyZXR1cm4gaXNWYWxpZEVsZW1lbnQoZWxlbWVudCkgJiYgZWxlbWVudC50eXBlID09PSBGcmFnbWVudDtcbn1cblxuLyoqXG4gKiBDaGVjayBpZiB0aGUgcGFzc2VkIGVsZW1lbnQgaXMgYSBNZW1vIG5vZGUuXG4gKiBAcGFyYW0geyp9IGVsZW1lbnQgVGhlIGVsZW1lbnQgdG8gY2hlY2tcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBpc01lbW8oZWxlbWVudCkge1xuXHRyZXR1cm4gKFxuXHRcdCEhZWxlbWVudCAmJlxuXHRcdCEhZWxlbWVudC5kaXNwbGF5TmFtZSAmJlxuXHRcdCh0eXBlb2YgZWxlbWVudC5kaXNwbGF5TmFtZSA9PT0gJ3N0cmluZycgfHxcblx0XHRcdGVsZW1lbnQuZGlzcGxheU5hbWUgaW5zdGFuY2VvZiBTdHJpbmcpICYmXG5cdFx0ZWxlbWVudC5kaXNwbGF5TmFtZS5zdGFydHNXaXRoKCdNZW1vKCcpXG5cdCk7XG59XG5cbi8qKlxuICogV3JhcCBgY2xvbmVFbGVtZW50YCB0byBhYm9ydCBpZiB0aGUgcGFzc2VkIGVsZW1lbnQgaXMgbm90IGEgdmFsaWQgZWxlbWVudCBhbmQgYXBwbHlcbiAqIGFsbCB2bm9kZSBub3JtYWxpemF0aW9ucy5cbiAqIEBwYXJhbSB7aW1wb3J0KCcuL2ludGVybmFsJykuVk5vZGV9IGVsZW1lbnQgVGhlIHZub2RlIHRvIGNsb25lXG4gKiBAcGFyYW0ge29iamVjdH0gcHJvcHMgUHJvcHMgdG8gYWRkIHdoZW4gY2xvbmluZ1xuICogQHBhcmFtIHtBcnJheTxpbXBvcnQoJy4vaW50ZXJuYWwnKS5Db21wb25lbnRDaGlsZHJlbj59IHJlc3QgT3B0aW9uYWwgY29tcG9uZW50IGNoaWxkcmVuXG4gKi9cbmZ1bmN0aW9uIGNsb25lRWxlbWVudChlbGVtZW50KSB7XG5cdGlmICghaXNWYWxpZEVsZW1lbnQoZWxlbWVudCkpIHJldHVybiBlbGVtZW50O1xuXHRyZXR1cm4gcHJlYWN0Q2xvbmVFbGVtZW50LmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7XG59XG5cbi8qKlxuICogUmVtb3ZlIGEgY29tcG9uZW50IHRyZWUgZnJvbSB0aGUgRE9NLCBpbmNsdWRpbmcgc3RhdGUgYW5kIGV2ZW50IGhhbmRsZXJzLlxuICogQHBhcmFtIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5QcmVhY3RFbGVtZW50fSBjb250YWluZXJcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5mdW5jdGlvbiB1bm1vdW50Q29tcG9uZW50QXROb2RlKGNvbnRhaW5lcikge1xuXHRpZiAoY29udGFpbmVyLl9jaGlsZHJlbikge1xuXHRcdHByZWFjdFJlbmRlcihudWxsLCBjb250YWluZXIpO1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cdHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIG1hdGNoaW5nIERPTSBub2RlIGZvciBhIGNvbXBvbmVudFxuICogQHBhcmFtIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5Db21wb25lbnR9IGNvbXBvbmVudFxuICogQHJldHVybnMge2ltcG9ydCgnLi9pbnRlcm5hbCcpLlByZWFjdEVsZW1lbnQgfCBudWxsfVxuICovXG5mdW5jdGlvbiBmaW5kRE9NTm9kZShjb21wb25lbnQpIHtcblx0cmV0dXJuIChcblx0XHQoY29tcG9uZW50ICYmXG5cdFx0XHQoY29tcG9uZW50LmJhc2UgfHwgKGNvbXBvbmVudC5ub2RlVHlwZSA9PT0gMSAmJiBjb21wb25lbnQpKSkgfHxcblx0XHRudWxsXG5cdCk7XG59XG5cbi8qKlxuICogRGVwcmVjYXRlZCB3YXkgdG8gY29udHJvbCBiYXRjaGVkIHJlbmRlcmluZyBpbnNpZGUgdGhlIHJlY29uY2lsZXIsIGJ1dCB3ZVxuICogYWxyZWFkeSBzY2hlZHVsZSBpbiBiYXRjaGVzIGluc2lkZSBvdXIgcmVuZGVyaW5nIGNvZGVcbiAqIEB0ZW1wbGF0ZSBBcmdcbiAqIEBwYXJhbSB7KGFyZzogQXJnKSA9PiB2b2lkfSBjYWxsYmFjayBmdW5jdGlvbiB0aGF0IHRyaWdnZXJzIHRoZSB1cGRhdGVkXG4gKiBAcGFyYW0ge0FyZ30gW2FyZ10gT3B0aW9uYWwgYXJndW1lbnQgdGhhdCBjYW4gYmUgcGFzc2VkIHRvIHRoZSBjYWxsYmFja1xuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY2FtZWxjYXNlXG5jb25zdCB1bnN0YWJsZV9iYXRjaGVkVXBkYXRlcyA9IChjYWxsYmFjaywgYXJnKSA9PiBjYWxsYmFjayhhcmcpO1xuXG4vKipcbiAqIEluIFJlYWN0LCBgZmx1c2hTeW5jYCBmbHVzaGVzIHRoZSBlbnRpcmUgdHJlZSBhbmQgZm9yY2VzIGEgcmVyZW5kZXIuIEl0J3NcbiAqIGltcGxtZW50ZWQgaGVyZSBhcyBhIG5vLW9wLlxuICogQHRlbXBsYXRlIEFyZ1xuICogQHRlbXBsYXRlIFJlc3VsdFxuICogQHBhcmFtIHsoYXJnOiBBcmcpID0+IFJlc3VsdH0gY2FsbGJhY2sgZnVuY3Rpb24gdGhhdCBydW5zIGJlZm9yZSB0aGUgZmx1c2hcbiAqIEBwYXJhbSB7QXJnfSBbYXJnXSBPcHRpb25hbCBhcmd1bWVudCB0aGF0IGNhbiBiZSBwYXNzZWQgdG8gdGhlIGNhbGxiYWNrXG4gKiBAcmV0dXJuc1xuICovXG5jb25zdCBmbHVzaFN5bmMgPSAoY2FsbGJhY2ssIGFyZykgPT4gY2FsbGJhY2soYXJnKTtcblxuLyoqXG4gKiBTdHJpY3QgTW9kZSBpcyBub3QgaW1wbGVtZW50ZWQgaW4gUHJlYWN0LCBzbyB3ZSBwcm92aWRlIGEgc3RhbmQtaW4gZm9yIGl0XG4gKiB0aGF0IGp1c3QgcmVuZGVycyBpdHMgY2hpbGRyZW4gd2l0aG91dCBpbXBvc2luZyBhbnkgcmVzdHJpY3Rpb25zLlxuICovXG5jb25zdCBTdHJpY3RNb2RlID0gRnJhZ21lbnQ7XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGFydFRyYW5zaXRpb24oY2IpIHtcblx0Y2IoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZURlZmVycmVkVmFsdWUodmFsKSB7XG5cdHJldHVybiB2YWw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VUcmFuc2l0aW9uKCkge1xuXHRyZXR1cm4gW2ZhbHNlLCBzdGFydFRyYW5zaXRpb25dO1xufVxuXG4vLyBUT0RPOiBpbiB0aGVvcnkgdGhpcyBzaG91bGQgYmUgZG9uZSBhZnRlciBhIFZOb2RlIGlzIGRpZmZlZCBhcyB3ZSB3YW50IHRvIGluc2VydFxuLy8gc3R5bGVzLy4uLiBiZWZvcmUgaXQgYXR0YWNoZXNcbmV4cG9ydCBjb25zdCB1c2VJbnNlcnRpb25FZmZlY3QgPSB1c2VMYXlvdXRFZmZlY3Q7XG5cbi8vIGNvbXBhdCB0byByZWFjdC1pc1xuZXhwb3J0IGNvbnN0IGlzRWxlbWVudCA9IGlzVmFsaWRFbGVtZW50O1xuXG4vKipcbiAqIFRoaXMgaXMgdGFrZW4gZnJvbSBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvYmxvYi9tYWluL3BhY2thZ2VzL3VzZS1zeW5jLWV4dGVybmFsLXN0b3JlL3NyYy91c2VTeW5jRXh0ZXJuYWxTdG9yZVNoaW1DbGllbnQuanMjTDg0XG4gKiBvbiBhIGhpZ2ggbGV2ZWwgdGhpcyBjdXRzIG91dCB0aGUgd2FybmluZ3MsIC4uLiBhbmQgYXR0ZW1wdHMgYSBzbWFsbGVyIGltcGxlbWVudGF0aW9uXG4gKiBAdHlwZWRlZiB7eyBfdmFsdWU6IGFueTsgX2dldFNuYXBzaG90OiAoKSA9PiBhbnkgfX0gU3RvcmVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVN5bmNFeHRlcm5hbFN0b3JlKHN1YnNjcmliZSwgZ2V0U25hcHNob3QpIHtcblx0Y29uc3QgdmFsdWUgPSBnZXRTbmFwc2hvdCgpO1xuXG5cdC8qKlxuXHQgKiBAdHlwZWRlZiB7eyBfaW5zdGFuY2U6IFN0b3JlIH19IFN0b3JlUmVmXG5cdCAqIEB0eXBlIHtbU3RvcmVSZWYsIChzdG9yZTogU3RvcmVSZWYpID0+IHZvaWRdfVxuXHQgKi9cblx0Y29uc3QgW3sgX2luc3RhbmNlIH0sIGZvcmNlVXBkYXRlXSA9IHVzZVN0YXRlKHtcblx0XHRfaW5zdGFuY2U6IHsgX3ZhbHVlOiB2YWx1ZSwgX2dldFNuYXBzaG90OiBnZXRTbmFwc2hvdCB9XG5cdH0pO1xuXG5cdHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG5cdFx0X2luc3RhbmNlLl92YWx1ZSA9IHZhbHVlO1xuXHRcdF9pbnN0YW5jZS5fZ2V0U25hcHNob3QgPSBnZXRTbmFwc2hvdDtcblxuXHRcdGlmIChkaWRTbmFwc2hvdENoYW5nZShfaW5zdGFuY2UpKSB7XG5cdFx0XHRmb3JjZVVwZGF0ZSh7IF9pbnN0YW5jZSB9KTtcblx0XHR9XG5cdH0sIFtzdWJzY3JpYmUsIHZhbHVlLCBnZXRTbmFwc2hvdF0pO1xuXG5cdHVzZUVmZmVjdCgoKSA9PiB7XG5cdFx0aWYgKGRpZFNuYXBzaG90Q2hhbmdlKF9pbnN0YW5jZSkpIHtcblx0XHRcdGZvcmNlVXBkYXRlKHsgX2luc3RhbmNlIH0pO1xuXHRcdH1cblxuXHRcdHJldHVybiBzdWJzY3JpYmUoKCkgPT4ge1xuXHRcdFx0aWYgKGRpZFNuYXBzaG90Q2hhbmdlKF9pbnN0YW5jZSkpIHtcblx0XHRcdFx0Zm9yY2VVcGRhdGUoeyBfaW5zdGFuY2UgfSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH0sIFtzdWJzY3JpYmVdKTtcblxuXHRyZXR1cm4gdmFsdWU7XG59XG5cbi8qKiBAdHlwZSB7KGluc3Q6IFN0b3JlKSA9PiBib29sZWFufSAqL1xuZnVuY3Rpb24gZGlkU25hcHNob3RDaGFuZ2UoaW5zdCkge1xuXHRjb25zdCBsYXRlc3RHZXRTbmFwc2hvdCA9IGluc3QuX2dldFNuYXBzaG90O1xuXHRjb25zdCBwcmV2VmFsdWUgPSBpbnN0Ll92YWx1ZTtcblx0dHJ5IHtcblx0XHRjb25zdCBuZXh0VmFsdWUgPSBsYXRlc3RHZXRTbmFwc2hvdCgpO1xuXHRcdHJldHVybiAhaXMocHJldlZhbHVlLCBuZXh0VmFsdWUpO1xuXHR9IGNhdGNoIChlcnJvcikge1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG59XG5cbmV4cG9ydCAqIGZyb20gJ3ByZWFjdC9ob29rcyc7XG5leHBvcnQge1xuXHR2ZXJzaW9uLFxuXHRDaGlsZHJlbixcblx0cmVuZGVyLFxuXHRoeWRyYXRlLFxuXHR1bm1vdW50Q29tcG9uZW50QXROb2RlLFxuXHRjcmVhdGVQb3J0YWwsXG5cdGNyZWF0ZUVsZW1lbnQsXG5cdGNyZWF0ZUNvbnRleHQsXG5cdGNyZWF0ZUZhY3RvcnksXG5cdGNsb25lRWxlbWVudCxcblx0Y3JlYXRlUmVmLFxuXHRGcmFnbWVudCxcblx0aXNWYWxpZEVsZW1lbnQsXG5cdGlzRnJhZ21lbnQsXG5cdGlzTWVtbyxcblx0ZmluZERPTU5vZGUsXG5cdENvbXBvbmVudCxcblx0UHVyZUNvbXBvbmVudCxcblx0bWVtbyxcblx0Zm9yd2FyZFJlZixcblx0Zmx1c2hTeW5jLFxuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY2FtZWxjYXNlXG5cdHVuc3RhYmxlX2JhdGNoZWRVcGRhdGVzLFxuXHRTdHJpY3RNb2RlLFxuXHRTdXNwZW5zZSxcblx0U3VzcGVuc2VMaXN0LFxuXHRsYXp5LFxuXHRfX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRFxufTtcblxuLy8gUmVhY3QgY29waWVzIHRoZSBuYW1lZCBleHBvcnRzIHRvIHRoZSBkZWZhdWx0IG9uZS5cbmV4cG9ydCBkZWZhdWx0IHtcblx0dXNlU3RhdGUsXG5cdHVzZUlkLFxuXHR1c2VSZWR1Y2VyLFxuXHR1c2VFZmZlY3QsXG5cdHVzZUxheW91dEVmZmVjdCxcblx0dXNlSW5zZXJ0aW9uRWZmZWN0LFxuXHR1c2VUcmFuc2l0aW9uLFxuXHR1c2VEZWZlcnJlZFZhbHVlLFxuXHR1c2VTeW5jRXh0ZXJuYWxTdG9yZSxcblx0c3RhcnRUcmFuc2l0aW9uLFxuXHR1c2VSZWYsXG5cdHVzZUltcGVyYXRpdmVIYW5kbGUsXG5cdHVzZU1lbW8sXG5cdHVzZUNhbGxiYWNrLFxuXHR1c2VDb250ZXh0LFxuXHR1c2VEZWJ1Z1ZhbHVlLFxuXHR2ZXJzaW9uLFxuXHRDaGlsZHJlbixcblx0cmVuZGVyLFxuXHRoeWRyYXRlLFxuXHR1bm1vdW50Q29tcG9uZW50QXROb2RlLFxuXHRjcmVhdGVQb3J0YWwsXG5cdGNyZWF0ZUVsZW1lbnQsXG5cdGNyZWF0ZUNvbnRleHQsXG5cdGNyZWF0ZUZhY3RvcnksXG5cdGNsb25lRWxlbWVudCxcblx0Y3JlYXRlUmVmLFxuXHRGcmFnbWVudCxcblx0aXNWYWxpZEVsZW1lbnQsXG5cdGlzRWxlbWVudCxcblx0aXNGcmFnbWVudCxcblx0aXNNZW1vLFxuXHRmaW5kRE9NTm9kZSxcblx0Q29tcG9uZW50LFxuXHRQdXJlQ29tcG9uZW50LFxuXHRtZW1vLFxuXHRmb3J3YXJkUmVmLFxuXHRmbHVzaFN5bmMsXG5cdHVuc3RhYmxlX2JhdGNoZWRVcGRhdGVzLFxuXHRTdHJpY3RNb2RlLFxuXHRTdXNwZW5zZSxcblx0U3VzcGVuc2VMaXN0LFxuXHRsYXp5LFxuXHRfX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRFxufTtcbiIsICJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiAhMFxufSk7XG5cbnZhciByZWFjdCA9IHJlcXVpcmUoXCJyZWFjdFwiKSwgaW5kZXggPSBcInVuZGVmaW5lZFwiICE9IHR5cGVvZiBkb2N1bWVudCA/IHJlYWN0LnVzZUxheW91dEVmZmVjdCA6IHJlYWN0LnVzZUVmZmVjdDtcblxuZXhwb3J0cy5kZWZhdWx0ID0gaW5kZXg7XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuXG52YXIgcmVhY3QgPSByZXF1aXJlKCdyZWFjdCcpO1xuXG52YXIgaW5kZXggPSB0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnID8gcmVhY3QudXNlTGF5b3V0RWZmZWN0IDogcmVhY3QudXNlRWZmZWN0O1xuXG5leHBvcnRzLmRlZmF1bHQgPSBpbmRleDtcbiIsICIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiLi91c2UtaXNvbW9ycGhpYy1sYXlvdXQtZWZmZWN0LmNqcy5wcm9kLmpzXCIpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiLi91c2UtaXNvbW9ycGhpYy1sYXlvdXQtZWZmZWN0LmNqcy5kZXYuanNcIik7XG59XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG52YXIgc2FmZUlzTmFOID0gTnVtYmVyLmlzTmFOIHx8XG4gICAgZnVuY3Rpb24gcG9ueWZpbGwodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgJiYgdmFsdWUgIT09IHZhbHVlO1xuICAgIH07XG5mdW5jdGlvbiBpc0VxdWFsKGZpcnN0LCBzZWNvbmQpIHtcbiAgICBpZiAoZmlyc3QgPT09IHNlY29uZCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKHNhZmVJc05hTihmaXJzdCkgJiYgc2FmZUlzTmFOKHNlY29uZCkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn1cbmZ1bmN0aW9uIGFyZUlucHV0c0VxdWFsKG5ld0lucHV0cywgbGFzdElucHV0cykge1xuICAgIGlmIChuZXdJbnB1dHMubGVuZ3RoICE9PSBsYXN0SW5wdXRzLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmV3SW5wdXRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmICghaXNFcXVhbChuZXdJbnB1dHNbaV0sIGxhc3RJbnB1dHNbaV0pKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIG1lbW9pemVPbmUocmVzdWx0Rm4sIGlzRXF1YWwpIHtcbiAgICBpZiAoaXNFcXVhbCA9PT0gdm9pZCAwKSB7IGlzRXF1YWwgPSBhcmVJbnB1dHNFcXVhbDsgfVxuICAgIHZhciBjYWNoZSA9IG51bGw7XG4gICAgZnVuY3Rpb24gbWVtb2l6ZWQoKSB7XG4gICAgICAgIHZhciBuZXdBcmdzID0gW107XG4gICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICBuZXdBcmdzW19pXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNhY2hlICYmIGNhY2hlLmxhc3RUaGlzID09PSB0aGlzICYmIGlzRXF1YWwobmV3QXJncywgY2FjaGUubGFzdEFyZ3MpKSB7XG4gICAgICAgICAgICByZXR1cm4gY2FjaGUubGFzdFJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgICB2YXIgbGFzdFJlc3VsdCA9IHJlc3VsdEZuLmFwcGx5KHRoaXMsIG5ld0FyZ3MpO1xuICAgICAgICBjYWNoZSA9IHtcbiAgICAgICAgICAgIGxhc3RSZXN1bHQ6IGxhc3RSZXN1bHQsXG4gICAgICAgICAgICBsYXN0QXJnczogbmV3QXJncyxcbiAgICAgICAgICAgIGxhc3RUaGlzOiB0aGlzLFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gbGFzdFJlc3VsdDtcbiAgICB9XG4gICAgbWVtb2l6ZWQuY2xlYXIgPSBmdW5jdGlvbiBjbGVhcigpIHtcbiAgICAgICAgY2FjaGUgPSBudWxsO1xuICAgIH07XG4gICAgcmV0dXJuIG1lbW9pemVkO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1lbW9pemVPbmU7XG4iLCAiZnVuY3Rpb24gX3R5cGVvZihvKSB7XG4gIFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjtcblxuICByZXR1cm4gbW9kdWxlLmV4cG9ydHMgPSBfdHlwZW9mID0gXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgXCJzeW1ib2xcIiA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID8gZnVuY3Rpb24gKG8pIHtcbiAgICByZXR1cm4gdHlwZW9mIG87XG4gIH0gOiBmdW5jdGlvbiAobykge1xuICAgIHJldHVybiBvICYmIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIG8uY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvO1xuICB9LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHMsIF90eXBlb2Yobyk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF90eXBlb2YsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCAidmFyIF90eXBlb2YgPSByZXF1aXJlKFwiLi90eXBlb2YuanNcIilbXCJkZWZhdWx0XCJdO1xuZnVuY3Rpb24gdG9QcmltaXRpdmUodCwgcikge1xuICBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKHQpIHx8ICF0KSByZXR1cm4gdDtcbiAgdmFyIGUgPSB0W1N5bWJvbC50b1ByaW1pdGl2ZV07XG4gIGlmICh2b2lkIDAgIT09IGUpIHtcbiAgICB2YXIgaSA9IGUuY2FsbCh0LCByIHx8IFwiZGVmYXVsdFwiKTtcbiAgICBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKGkpKSByZXR1cm4gaTtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIik7XG4gIH1cbiAgcmV0dXJuIChcInN0cmluZ1wiID09PSByID8gU3RyaW5nIDogTnVtYmVyKSh0KTtcbn1cbm1vZHVsZS5leHBvcnRzID0gdG9QcmltaXRpdmUsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCAidmFyIF90eXBlb2YgPSByZXF1aXJlKFwiLi90eXBlb2YuanNcIilbXCJkZWZhdWx0XCJdO1xudmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZShcIi4vdG9QcmltaXRpdmUuanNcIik7XG5mdW5jdGlvbiB0b1Byb3BlcnR5S2V5KHQpIHtcbiAgdmFyIGkgPSB0b1ByaW1pdGl2ZSh0LCBcInN0cmluZ1wiKTtcbiAgcmV0dXJuIFwic3ltYm9sXCIgPT0gX3R5cGVvZihpKSA/IGkgOiBpICsgXCJcIjtcbn1cbm1vZHVsZS5leHBvcnRzID0gdG9Qcm9wZXJ0eUtleSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsICJ2YXIgdG9Qcm9wZXJ0eUtleSA9IHJlcXVpcmUoXCIuL3RvUHJvcGVydHlLZXkuanNcIik7XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkoZSwgciwgdCkge1xuICByZXR1cm4gKHIgPSB0b1Byb3BlcnR5S2V5KHIpKSBpbiBlID8gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIsIHtcbiAgICB2YWx1ZTogdCxcbiAgICBlbnVtZXJhYmxlOiAhMCxcbiAgICBjb25maWd1cmFibGU6ICEwLFxuICAgIHdyaXRhYmxlOiAhMFxuICB9KSA6IGVbcl0gPSB0LCBlO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfZGVmaW5lUHJvcGVydHksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCAidmFyIGRlZmluZVByb3BlcnR5ID0gcmVxdWlyZShcIi4vZGVmaW5lUHJvcGVydHkuanNcIik7XG5mdW5jdGlvbiBvd25LZXlzKGUsIHIpIHtcbiAgdmFyIHQgPSBPYmplY3Qua2V5cyhlKTtcbiAgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHtcbiAgICB2YXIgbyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7XG4gICAgciAmJiAobyA9IG8uZmlsdGVyKGZ1bmN0aW9uIChyKSB7XG4gICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCByKS5lbnVtZXJhYmxlO1xuICAgIH0pKSwgdC5wdXNoLmFwcGx5KHQsIG8pO1xuICB9XG4gIHJldHVybiB0O1xufVxuZnVuY3Rpb24gX29iamVjdFNwcmVhZDIoZSkge1xuICBmb3IgKHZhciByID0gMTsgciA8IGFyZ3VtZW50cy5sZW5ndGg7IHIrKykge1xuICAgIHZhciB0ID0gbnVsbCAhPSBhcmd1bWVudHNbcl0gPyBhcmd1bWVudHNbcl0gOiB7fTtcbiAgICByICUgMiA/IG93bktleXMoT2JqZWN0KHQpLCAhMCkuZm9yRWFjaChmdW5jdGlvbiAocikge1xuICAgICAgZGVmaW5lUHJvcGVydHkoZSwgciwgdFtyXSk7XG4gICAgfSkgOiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHQpKSA6IG93bktleXMoT2JqZWN0KHQpKS5mb3JFYWNoKGZ1bmN0aW9uIChyKSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgciwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LCByKSk7XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIGU7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9vYmplY3RTcHJlYWQyLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwgImZ1bmN0aW9uIF9hcnJheVdpdGhIb2xlcyhyKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHIpKSByZXR1cm4gcjtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2FycmF5V2l0aEhvbGVzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwgImZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXlMaW1pdChyLCBsKSB7XG4gIHZhciB0ID0gbnVsbCA9PSByID8gbnVsbCA6IFwidW5kZWZpbmVkXCIgIT0gdHlwZW9mIFN5bWJvbCAmJiByW1N5bWJvbC5pdGVyYXRvcl0gfHwgcltcIkBAaXRlcmF0b3JcIl07XG4gIGlmIChudWxsICE9IHQpIHtcbiAgICB2YXIgZSxcbiAgICAgIG4sXG4gICAgICBpLFxuICAgICAgdSxcbiAgICAgIGEgPSBbXSxcbiAgICAgIGYgPSAhMCxcbiAgICAgIG8gPSAhMTtcbiAgICB0cnkge1xuICAgICAgaWYgKGkgPSAodCA9IHQuY2FsbChyKSkubmV4dCwgMCA9PT0gbCkge1xuICAgICAgICBpZiAoT2JqZWN0KHQpICE9PSB0KSByZXR1cm47XG4gICAgICAgIGYgPSAhMTtcbiAgICAgIH0gZWxzZSBmb3IgKDsgIShmID0gKGUgPSBpLmNhbGwodCkpLmRvbmUpICYmIChhLnB1c2goZS52YWx1ZSksIGEubGVuZ3RoICE9PSBsKTsgZiA9ICEwKTtcbiAgICB9IGNhdGNoIChyKSB7XG4gICAgICBvID0gITAsIG4gPSByO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAoIWYgJiYgbnVsbCAhPSB0W1wicmV0dXJuXCJdICYmICh1ID0gdFtcInJldHVyblwiXSgpLCBPYmplY3QodSkgIT09IHUpKSByZXR1cm47XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBpZiAobykgdGhyb3cgbjtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGE7XG4gIH1cbn1cbm1vZHVsZS5leHBvcnRzID0gX2l0ZXJhYmxlVG9BcnJheUxpbWl0LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwgImZ1bmN0aW9uIF9hcnJheUxpa2VUb0FycmF5KHIsIGEpIHtcbiAgKG51bGwgPT0gYSB8fCBhID4gci5sZW5ndGgpICYmIChhID0gci5sZW5ndGgpO1xuICBmb3IgKHZhciBlID0gMCwgbiA9IEFycmF5KGEpOyBlIDwgYTsgZSsrKSBuW2VdID0gcltlXTtcbiAgcmV0dXJuIG47XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9hcnJheUxpa2VUb0FycmF5LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwgInZhciBhcnJheUxpa2VUb0FycmF5ID0gcmVxdWlyZShcIi4vYXJyYXlMaWtlVG9BcnJheS5qc1wiKTtcbmZ1bmN0aW9uIF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShyLCBhKSB7XG4gIGlmIChyKSB7XG4gICAgaWYgKFwic3RyaW5nXCIgPT0gdHlwZW9mIHIpIHJldHVybiBhcnJheUxpa2VUb0FycmF5KHIsIGEpO1xuICAgIHZhciB0ID0ge30udG9TdHJpbmcuY2FsbChyKS5zbGljZSg4LCAtMSk7XG4gICAgcmV0dXJuIFwiT2JqZWN0XCIgPT09IHQgJiYgci5jb25zdHJ1Y3RvciAmJiAodCA9IHIuY29uc3RydWN0b3IubmFtZSksIFwiTWFwXCIgPT09IHQgfHwgXCJTZXRcIiA9PT0gdCA/IEFycmF5LmZyb20ocikgOiBcIkFyZ3VtZW50c1wiID09PSB0IHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KHQpID8gYXJyYXlMaWtlVG9BcnJheShyLCBhKSA6IHZvaWQgMDtcbiAgfVxufVxubW9kdWxlLmV4cG9ydHMgPSBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCAiZnVuY3Rpb24gX25vbkl0ZXJhYmxlUmVzdCgpIHtcbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX25vbkl0ZXJhYmxlUmVzdCwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsICJ2YXIgYXJyYXlXaXRoSG9sZXMgPSByZXF1aXJlKFwiLi9hcnJheVdpdGhIb2xlcy5qc1wiKTtcbnZhciBpdGVyYWJsZVRvQXJyYXlMaW1pdCA9IHJlcXVpcmUoXCIuL2l0ZXJhYmxlVG9BcnJheUxpbWl0LmpzXCIpO1xudmFyIHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5ID0gcmVxdWlyZShcIi4vdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkuanNcIik7XG52YXIgbm9uSXRlcmFibGVSZXN0ID0gcmVxdWlyZShcIi4vbm9uSXRlcmFibGVSZXN0LmpzXCIpO1xuZnVuY3Rpb24gX3NsaWNlZFRvQXJyYXkociwgZSkge1xuICByZXR1cm4gYXJyYXlXaXRoSG9sZXMocikgfHwgaXRlcmFibGVUb0FycmF5TGltaXQociwgZSkgfHwgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkociwgZSkgfHwgbm9uSXRlcmFibGVSZXN0KCk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9zbGljZWRUb0FycmF5LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwgImZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHIsIGUpIHtcbiAgaWYgKG51bGwgPT0gcikgcmV0dXJuIHt9O1xuICB2YXIgdCA9IHt9O1xuICBmb3IgKHZhciBuIGluIHIpIGlmICh7fS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHIsIG4pKSB7XG4gICAgaWYgKGUuaW5jbHVkZXMobikpIGNvbnRpbnVlO1xuICAgIHRbbl0gPSByW25dO1xuICB9XG4gIHJldHVybiB0O1xufVxubW9kdWxlLmV4cG9ydHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsICJ2YXIgb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSA9IHJlcXVpcmUoXCIuL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UuanNcIik7XG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoZSwgdCkge1xuICBpZiAobnVsbCA9PSBlKSByZXR1cm4ge307XG4gIHZhciBvLFxuICAgIHIsXG4gICAgaSA9IG9iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UoZSwgdCk7XG4gIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7XG4gICAgdmFyIHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO1xuICAgIGZvciAociA9IDA7IHIgPCBzLmxlbmd0aDsgcisrKSBvID0gc1tyXSwgdC5pbmNsdWRlcyhvKSB8fCB7fS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUsIG8pICYmIChpW29dID0gZVtvXSk7XG4gIH1cbiAgcmV0dXJuIGk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsICJmdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soYSwgbikge1xuICBpZiAoIShhIGluc3RhbmNlb2YgbikpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9jbGFzc0NhbGxDaGVjaywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsICJ2YXIgdG9Qcm9wZXJ0eUtleSA9IHJlcXVpcmUoXCIuL3RvUHJvcGVydHlLZXkuanNcIik7XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyhlLCByKSB7XG4gIGZvciAodmFyIHQgPSAwOyB0IDwgci5sZW5ndGg7IHQrKykge1xuICAgIHZhciBvID0gclt0XTtcbiAgICBvLmVudW1lcmFibGUgPSBvLmVudW1lcmFibGUgfHwgITEsIG8uY29uZmlndXJhYmxlID0gITAsIFwidmFsdWVcIiBpbiBvICYmIChvLndyaXRhYmxlID0gITApLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgdG9Qcm9wZXJ0eUtleShvLmtleSksIG8pO1xuICB9XG59XG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoZSwgciwgdCkge1xuICByZXR1cm4gciAmJiBfZGVmaW5lUHJvcGVydGllcyhlLnByb3RvdHlwZSwgciksIHQgJiYgX2RlZmluZVByb3BlcnRpZXMoZSwgdCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCBcInByb3RvdHlwZVwiLCB7XG4gICAgd3JpdGFibGU6ICExXG4gIH0pLCBlO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfY3JlYXRlQ2xhc3MsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCAiZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKHQsIGUpIHtcbiAgcmV0dXJuIG1vZHVsZS5leHBvcnRzID0gX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKSA6IGZ1bmN0aW9uICh0LCBlKSB7XG4gICAgcmV0dXJuIHQuX19wcm90b19fID0gZSwgdDtcbiAgfSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzLCBfc2V0UHJvdG90eXBlT2YodCwgZSk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9zZXRQcm90b3R5cGVPZiwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsICJ2YXIgc2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKFwiLi9zZXRQcm90b3R5cGVPZi5qc1wiKTtcbmZ1bmN0aW9uIF9pbmhlcml0cyh0LCBlKSB7XG4gIGlmIChcImZ1bmN0aW9uXCIgIT0gdHlwZW9mIGUgJiYgbnVsbCAhPT0gZSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpO1xuICB0LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZSAmJiBlLnByb3RvdHlwZSwge1xuICAgIGNvbnN0cnVjdG9yOiB7XG4gICAgICB2YWx1ZTogdCxcbiAgICAgIHdyaXRhYmxlOiAhMCxcbiAgICAgIGNvbmZpZ3VyYWJsZTogITBcbiAgICB9XG4gIH0pLCBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgXCJwcm90b3R5cGVcIiwge1xuICAgIHdyaXRhYmxlOiAhMVxuICB9KSwgZSAmJiBzZXRQcm90b3R5cGVPZih0LCBlKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2luaGVyaXRzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwgImZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZih0KSB7XG4gIHJldHVybiBtb2R1bGUuZXhwb3J0cyA9IF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCkgOiBmdW5jdGlvbiAodCkge1xuICAgIHJldHVybiB0Ll9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodCk7XG4gIH0sIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cywgX2dldFByb3RvdHlwZU9mKHQpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfZ2V0UHJvdG90eXBlT2YsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCAiZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHtcbiAgdHJ5IHtcbiAgICB2YXIgdCA9ICFCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbiwgW10sIGZ1bmN0aW9uICgpIHt9KSk7XG4gIH0gY2F0Y2ggKHQpIHt9XG4gIHJldHVybiAobW9kdWxlLmV4cG9ydHMgPSBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHtcbiAgICByZXR1cm4gISF0O1xuICB9LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHMpKCk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCAiZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChlKSB7XG4gIGlmICh2b2lkIDAgPT09IGUpIHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTtcbiAgcmV0dXJuIGU7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCAidmFyIF90eXBlb2YgPSByZXF1aXJlKFwiLi90eXBlb2YuanNcIilbXCJkZWZhdWx0XCJdO1xudmFyIGFzc2VydFRoaXNJbml0aWFsaXplZCA9IHJlcXVpcmUoXCIuL2Fzc2VydFRoaXNJbml0aWFsaXplZC5qc1wiKTtcbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHQsIGUpIHtcbiAgaWYgKGUgJiYgKFwib2JqZWN0XCIgPT0gX3R5cGVvZihlKSB8fCBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIGUpKSByZXR1cm4gZTtcbiAgaWYgKHZvaWQgMCAhPT0gZSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkXCIpO1xuICByZXR1cm4gYXNzZXJ0VGhpc0luaXRpYWxpemVkKHQpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybiwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsICJ2YXIgZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKFwiLi9nZXRQcm90b3R5cGVPZi5qc1wiKTtcbnZhciBpc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSByZXF1aXJlKFwiLi9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QuanNcIik7XG52YXIgcG9zc2libGVDb25zdHJ1Y3RvclJldHVybiA9IHJlcXVpcmUoXCIuL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4uanNcIik7XG5mdW5jdGlvbiBfY3JlYXRlU3VwZXIodCkge1xuICB2YXIgciA9IGlzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpO1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBlLFxuICAgICAgbyA9IGdldFByb3RvdHlwZU9mKHQpO1xuICAgIGlmIChyKSB7XG4gICAgICB2YXIgcyA9IGdldFByb3RvdHlwZU9mKHRoaXMpLmNvbnN0cnVjdG9yO1xuICAgICAgZSA9IFJlZmxlY3QuY29uc3RydWN0KG8sIGFyZ3VtZW50cywgcyk7XG4gICAgfSBlbHNlIGUgPSBvLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgcmV0dXJuIHBvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgZSk7XG4gIH07XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9jcmVhdGVTdXBlciwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsICJ2YXIgYXJyYXlMaWtlVG9BcnJheSA9IHJlcXVpcmUoXCIuL2FycmF5TGlrZVRvQXJyYXkuanNcIik7XG5mdW5jdGlvbiBfYXJyYXlXaXRob3V0SG9sZXMocikge1xuICBpZiAoQXJyYXkuaXNBcnJheShyKSkgcmV0dXJuIGFycmF5TGlrZVRvQXJyYXkocik7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9hcnJheVdpdGhvdXRIb2xlcywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsICJmdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5KHIpIHtcbiAgaWYgKFwidW5kZWZpbmVkXCIgIT0gdHlwZW9mIFN5bWJvbCAmJiBudWxsICE9IHJbU3ltYm9sLml0ZXJhdG9yXSB8fCBudWxsICE9IHJbXCJAQGl0ZXJhdG9yXCJdKSByZXR1cm4gQXJyYXkuZnJvbShyKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2l0ZXJhYmxlVG9BcnJheSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsICJmdW5jdGlvbiBfbm9uSXRlcmFibGVTcHJlYWQoKSB7XG4gIHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfbm9uSXRlcmFibGVTcHJlYWQsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCAidmFyIGFycmF5V2l0aG91dEhvbGVzID0gcmVxdWlyZShcIi4vYXJyYXlXaXRob3V0SG9sZXMuanNcIik7XG52YXIgaXRlcmFibGVUb0FycmF5ID0gcmVxdWlyZShcIi4vaXRlcmFibGVUb0FycmF5LmpzXCIpO1xudmFyIHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5ID0gcmVxdWlyZShcIi4vdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkuanNcIik7XG52YXIgbm9uSXRlcmFibGVTcHJlYWQgPSByZXF1aXJlKFwiLi9ub25JdGVyYWJsZVNwcmVhZC5qc1wiKTtcbmZ1bmN0aW9uIF90b0NvbnN1bWFibGVBcnJheShyKSB7XG4gIHJldHVybiBhcnJheVdpdGhvdXRIb2xlcyhyKSB8fCBpdGVyYWJsZVRvQXJyYXkocikgfHwgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkocikgfHwgbm9uSXRlcmFibGVTcHJlYWQoKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX3RvQ29uc3VtYWJsZUFycmF5LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwgImZ1bmN0aW9uIF90YWdnZWRUZW1wbGF0ZUxpdGVyYWwoZSwgdCkge1xuICByZXR1cm4gdCB8fCAodCA9IGUuc2xpY2UoMCkpLCBPYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsIHtcbiAgICByYXc6IHtcbiAgICAgIHZhbHVlOiBPYmplY3QuZnJlZXplKHQpXG4gICAgfVxuICB9KSk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF90YWdnZWRUZW1wbGF0ZUxpdGVyYWwsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCAiY29uc3Qgbm9vcCA9ICgpID0+IHt9O1xuXG5sZXQgX1dJTkRPVyA9IHt9O1xubGV0IF9ET0NVTUVOVCA9IHt9O1xubGV0IF9NVVRBVElPTl9PQlNFUlZFUiA9IG51bGw7XG5sZXQgX1BFUkZPUk1BTkNFID0ge1xuICBtYXJrOiBub29wLFxuICBtZWFzdXJlOiBub29wXG59O1xuXG50cnkge1xuICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIF9XSU5ET1cgPSB3aW5kb3c7XG4gIGlmICh0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnKSBfRE9DVU1FTlQgPSBkb2N1bWVudDtcbiAgaWYgKHR5cGVvZiBNdXRhdGlvbk9ic2VydmVyICE9PSAndW5kZWZpbmVkJykgX01VVEFUSU9OX09CU0VSVkVSID0gTXV0YXRpb25PYnNlcnZlcjtcbiAgaWYgKHR5cGVvZiBwZXJmb3JtYW5jZSAhPT0gJ3VuZGVmaW5lZCcpIF9QRVJGT1JNQU5DRSA9IHBlcmZvcm1hbmNlO1xufSBjYXRjaCAoZSkge31cblxuY29uc3Qge1xuICB1c2VyQWdlbnQgPSAnJ1xufSA9IF9XSU5ET1cubmF2aWdhdG9yIHx8IHt9O1xuY29uc3QgV0lORE9XID0gX1dJTkRPVztcbmNvbnN0IERPQ1VNRU5UID0gX0RPQ1VNRU5UO1xuY29uc3QgTVVUQVRJT05fT0JTRVJWRVIgPSBfTVVUQVRJT05fT0JTRVJWRVI7XG5jb25zdCBQRVJGT1JNQU5DRSA9IF9QRVJGT1JNQU5DRTtcbmNvbnN0IElTX0JST1dTRVIgPSAhIVdJTkRPVy5kb2N1bWVudDtcbmNvbnN0IElTX0RPTSA9ICEhRE9DVU1FTlQuZG9jdW1lbnRFbGVtZW50ICYmICEhRE9DVU1FTlQuaGVhZCAmJiB0eXBlb2YgRE9DVU1FTlQuYWRkRXZlbnRMaXN0ZW5lciA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgRE9DVU1FTlQuY3JlYXRlRWxlbWVudCA9PT0gJ2Z1bmN0aW9uJztcbmNvbnN0IElTX0lFID0gfnVzZXJBZ2VudC5pbmRleE9mKCdNU0lFJykgfHwgfnVzZXJBZ2VudC5pbmRleE9mKCdUcmlkZW50LycpO1xuXG52YXIgYSA9IFwiY2xhc3NpY1wiLFxuICAgIHQgPSBcImR1b3RvbmVcIixcbiAgICByID0gXCJzaGFycFwiLFxuICAgIG8gPSBcInNoYXJwLWR1b3RvbmVcIixcbiAgICBjID0gW2EsIHQsIHIsIG9dO1xuXG52YXIgZXQkMSA9IHtcbiAgY2xhc3NpYzoge1xuICAgIDkwMDogXCJmYXNcIixcbiAgICA0MDA6IFwiZmFyXCIsXG4gICAgbm9ybWFsOiBcImZhclwiLFxuICAgIDMwMDogXCJmYWxcIixcbiAgICAxMDA6IFwiZmF0XCJcbiAgfSxcbiAgc2hhcnA6IHtcbiAgICA5MDA6IFwiZmFzc1wiLFxuICAgIDQwMDogXCJmYXNyXCIsXG4gICAgMzAwOiBcImZhc2xcIixcbiAgICAxMDA6IFwiZmFzdFwiXG4gIH0sXG4gIFwic2hhcnAtZHVvdG9uZVwiOiB7XG4gICAgOTAwOiBcImZhc2RzXCJcbiAgfVxufTtcbnZhciBidCA9IHtcbiAga2l0OiB7XG4gICAgZmFrOiBcImtpdFwiLFxuICAgIFwiZmEta2l0XCI6IFwia2l0XCJcbiAgfSxcbiAgXCJraXQtZHVvdG9uZVwiOiB7XG4gICAgZmFrZDogXCJraXQtZHVvdG9uZVwiLFxuICAgIFwiZmEta2l0LWR1b3RvbmVcIjogXCJraXQtZHVvdG9uZVwiXG4gIH1cbn0sXG4gICAgQ3QgPSBbXCJraXRcIl07XG52YXIgRHQgPSAvZmEoc3xyfGx8dHxkfGJ8a3xrZHxzc3xzcnxzbHxzdHxzZHMpP1tcXC1cXCBdLyxcbiAgICBLdCA9IC9Gb250ID9Bd2Vzb21lID8oWzU2IF0qKShTb2xpZHxSZWd1bGFyfExpZ2h0fFRoaW58RHVvdG9uZXxCcmFuZHN8RnJlZXxQcm98U2hhcnAgRHVvdG9uZXxTaGFycHxLaXQpPy4qL2k7XG52YXIgYW8gPSB7XG4gIFwiRm9udCBBd2Vzb21lIDUgRnJlZVwiOiB7XG4gICAgOTAwOiBcImZhc1wiLFxuICAgIDQwMDogXCJmYXJcIlxuICB9LFxuICBcIkZvbnQgQXdlc29tZSA1IFByb1wiOiB7XG4gICAgOTAwOiBcImZhc1wiLFxuICAgIDQwMDogXCJmYXJcIixcbiAgICBub3JtYWw6IFwiZmFyXCIsXG4gICAgMzAwOiBcImZhbFwiXG4gIH0sXG4gIFwiRm9udCBBd2Vzb21lIDUgQnJhbmRzXCI6IHtcbiAgICA0MDA6IFwiZmFiXCIsXG4gICAgbm9ybWFsOiBcImZhYlwiXG4gIH0sXG4gIFwiRm9udCBBd2Vzb21lIDUgRHVvdG9uZVwiOiB7XG4gICAgOTAwOiBcImZhZFwiXG4gIH1cbn07XG52YXIgZW8gPSB7XG4gIFwiRm9udCBBd2Vzb21lIDYgRnJlZVwiOiB7XG4gICAgOTAwOiBcImZhc1wiLFxuICAgIDQwMDogXCJmYXJcIlxuICB9LFxuICBcIkZvbnQgQXdlc29tZSA2IFByb1wiOiB7XG4gICAgOTAwOiBcImZhc1wiLFxuICAgIDQwMDogXCJmYXJcIixcbiAgICBub3JtYWw6IFwiZmFyXCIsXG4gICAgMzAwOiBcImZhbFwiLFxuICAgIDEwMDogXCJmYXRcIlxuICB9LFxuICBcIkZvbnQgQXdlc29tZSA2IEJyYW5kc1wiOiB7XG4gICAgNDAwOiBcImZhYlwiLFxuICAgIG5vcm1hbDogXCJmYWJcIlxuICB9LFxuICBcIkZvbnQgQXdlc29tZSA2IER1b3RvbmVcIjoge1xuICAgIDkwMDogXCJmYWRcIlxuICB9LFxuICBcIkZvbnQgQXdlc29tZSA2IFNoYXJwXCI6IHtcbiAgICA5MDA6IFwiZmFzc1wiLFxuICAgIDQwMDogXCJmYXNyXCIsXG4gICAgbm9ybWFsOiBcImZhc3JcIixcbiAgICAzMDA6IFwiZmFzbFwiLFxuICAgIDEwMDogXCJmYXN0XCJcbiAgfSxcbiAgXCJGb250IEF3ZXNvbWUgNiBTaGFycCBEdW90b25lXCI6IHtcbiAgICA5MDA6IFwiZmFzZHNcIlxuICB9XG59LFxuICAgIGxvID0ge1xuICBjbGFzc2ljOiB7XG4gICAgXCJmYS1icmFuZHNcIjogXCJmYWJcIixcbiAgICBcImZhLWR1b3RvbmVcIjogXCJmYWRcIixcbiAgICBcImZhLWxpZ2h0XCI6IFwiZmFsXCIsXG4gICAgXCJmYS1yZWd1bGFyXCI6IFwiZmFyXCIsXG4gICAgXCJmYS1zb2xpZFwiOiBcImZhc1wiLFxuICAgIFwiZmEtdGhpblwiOiBcImZhdFwiXG4gIH0sXG4gIHNoYXJwOiB7XG4gICAgXCJmYS1zb2xpZFwiOiBcImZhc3NcIixcbiAgICBcImZhLXJlZ3VsYXJcIjogXCJmYXNyXCIsXG4gICAgXCJmYS1saWdodFwiOiBcImZhc2xcIixcbiAgICBcImZhLXRoaW5cIjogXCJmYXN0XCJcbiAgfSxcbiAgXCJzaGFycC1kdW90b25lXCI6IHtcbiAgICBcImZhLXNvbGlkXCI6IFwiZmFzZHNcIlxuICB9XG59LFxuICAgIHkgPSB7XG4gIGNsYXNzaWM6IFtcImZhc1wiLCBcImZhclwiLCBcImZhbFwiLCBcImZhdFwiXSxcbiAgc2hhcnA6IFtcImZhc3NcIiwgXCJmYXNyXCIsIFwiZmFzbFwiLCBcImZhc3RcIl0sXG4gIFwic2hhcnAtZHVvdG9uZVwiOiBbXCJmYXNkc1wiXVxufSxcbiAgICBubyA9IHtcbiAgY2xhc3NpYzoge1xuICAgIGZhYjogXCJmYS1icmFuZHNcIixcbiAgICBmYWQ6IFwiZmEtZHVvdG9uZVwiLFxuICAgIGZhbDogXCJmYS1saWdodFwiLFxuICAgIGZhcjogXCJmYS1yZWd1bGFyXCIsXG4gICAgZmFzOiBcImZhLXNvbGlkXCIsXG4gICAgZmF0OiBcImZhLXRoaW5cIlxuICB9LFxuICBzaGFycDoge1xuICAgIGZhc3M6IFwiZmEtc29saWRcIixcbiAgICBmYXNyOiBcImZhLXJlZ3VsYXJcIixcbiAgICBmYXNsOiBcImZhLWxpZ2h0XCIsXG4gICAgZmFzdDogXCJmYS10aGluXCJcbiAgfSxcbiAgXCJzaGFycC1kdW90b25lXCI6IHtcbiAgICBmYXNkczogXCJmYS1zb2xpZFwiXG4gIH1cbn0sXG4gICAgZm8gPSB7XG4gIGNsYXNzaWM6IHtcbiAgICBzb2xpZDogXCJmYXNcIixcbiAgICByZWd1bGFyOiBcImZhclwiLFxuICAgIGxpZ2h0OiBcImZhbFwiLFxuICAgIHRoaW46IFwiZmF0XCIsXG4gICAgZHVvdG9uZTogXCJmYWRcIixcbiAgICBicmFuZHM6IFwiZmFiXCJcbiAgfSxcbiAgc2hhcnA6IHtcbiAgICBzb2xpZDogXCJmYXNzXCIsXG4gICAgcmVndWxhcjogXCJmYXNyXCIsXG4gICAgbGlnaHQ6IFwiZmFzbFwiLFxuICAgIHRoaW46IFwiZmFzdFwiXG4gIH0sXG4gIFwic2hhcnAtZHVvdG9uZVwiOiB7XG4gICAgc29saWQ6IFwiZmFzZHNcIlxuICB9XG59LFxuICAgIGhvID0ge1xuICBjbGFzc2ljOiB7XG4gICAgZmE6IFwic29saWRcIixcbiAgICBmYXM6IFwic29saWRcIixcbiAgICBcImZhLXNvbGlkXCI6IFwic29saWRcIixcbiAgICBmYXI6IFwicmVndWxhclwiLFxuICAgIFwiZmEtcmVndWxhclwiOiBcInJlZ3VsYXJcIixcbiAgICBmYWw6IFwibGlnaHRcIixcbiAgICBcImZhLWxpZ2h0XCI6IFwibGlnaHRcIixcbiAgICBmYXQ6IFwidGhpblwiLFxuICAgIFwiZmEtdGhpblwiOiBcInRoaW5cIixcbiAgICBmYWQ6IFwiZHVvdG9uZVwiLFxuICAgIFwiZmEtZHVvdG9uZVwiOiBcImR1b3RvbmVcIixcbiAgICBmYWI6IFwiYnJhbmRzXCIsXG4gICAgXCJmYS1icmFuZHNcIjogXCJicmFuZHNcIlxuICB9LFxuICBzaGFycDoge1xuICAgIGZhOiBcInNvbGlkXCIsXG4gICAgZmFzczogXCJzb2xpZFwiLFxuICAgIFwiZmEtc29saWRcIjogXCJzb2xpZFwiLFxuICAgIGZhc3I6IFwicmVndWxhclwiLFxuICAgIFwiZmEtcmVndWxhclwiOiBcInJlZ3VsYXJcIixcbiAgICBmYXNsOiBcImxpZ2h0XCIsXG4gICAgXCJmYS1saWdodFwiOiBcImxpZ2h0XCIsXG4gICAgZmFzdDogXCJ0aGluXCIsXG4gICAgXCJmYS10aGluXCI6IFwidGhpblwiXG4gIH0sXG4gIFwic2hhcnAtZHVvdG9uZVwiOiB7XG4gICAgZmE6IFwic29saWRcIixcbiAgICBmYXNkczogXCJzb2xpZFwiLFxuICAgIFwiZmEtc29saWRcIjogXCJzb2xpZFwiXG4gIH1cbn0sXG4gICAgeCQxID0gW1wic29saWRcIiwgXCJyZWd1bGFyXCIsIFwibGlnaHRcIiwgXCJ0aGluXCIsIFwiZHVvdG9uZVwiLCBcImJyYW5kc1wiXSxcbiAgICB1JDEgPSBbMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTBdLFxuICAgIG0kMSA9IHUkMS5jb25jYXQoWzExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDE3LCAxOCwgMTksIDIwXSksXG4gICAgdCQxID0ge1xuICBHUk9VUDogXCJkdW90b25lLWdyb3VwXCIsXG4gIFNXQVBfT1BBQ0lUWTogXCJzd2FwLW9wYWNpdHlcIixcbiAgUFJJTUFSWTogXCJwcmltYXJ5XCIsXG4gIFNFQ09OREFSWTogXCJzZWNvbmRhcnlcIlxufSxcbiAgICB5byA9IFsuLi5PYmplY3Qua2V5cyh5KSwgLi4ueCQxLCBcIjJ4c1wiLCBcInhzXCIsIFwic21cIiwgXCJsZ1wiLCBcInhsXCIsIFwiMnhsXCIsIFwiYmVhdFwiLCBcImJvcmRlclwiLCBcImZhZGVcIiwgXCJiZWF0LWZhZGVcIiwgXCJib3VuY2VcIiwgXCJmbGlwLWJvdGhcIiwgXCJmbGlwLWhvcml6b250YWxcIiwgXCJmbGlwLXZlcnRpY2FsXCIsIFwiZmxpcFwiLCBcImZ3XCIsIFwiaW52ZXJzZVwiLCBcImxheWVycy1jb3VudGVyXCIsIFwibGF5ZXJzLXRleHRcIiwgXCJsYXllcnNcIiwgXCJsaVwiLCBcInB1bGwtbGVmdFwiLCBcInB1bGwtcmlnaHRcIiwgXCJwdWxzZVwiLCBcInJvdGF0ZS0xODBcIiwgXCJyb3RhdGUtMjcwXCIsIFwicm90YXRlLTkwXCIsIFwicm90YXRlLWJ5XCIsIFwic2hha2VcIiwgXCJzcGluLXB1bHNlXCIsIFwic3Bpbi1yZXZlcnNlXCIsIFwic3BpblwiLCBcInN0YWNrLTF4XCIsIFwic3RhY2stMnhcIiwgXCJzdGFja1wiLCBcInVsXCIsIHQkMS5HUk9VUCwgdCQxLlNXQVBfT1BBQ0lUWSwgdCQxLlBSSU1BUlksIHQkMS5TRUNPTkRBUlldLmNvbmNhdCh1JDEubWFwKG8gPT4gXCJcIi5jb25jYXQobywgXCJ4XCIpKSkuY29uY2F0KG0kMS5tYXAobyA9PiBcInctXCIuY29uY2F0KG8pKSk7XG52YXIgbW8gPSB7XG4gIFwiRm9udCBBd2Vzb21lIEtpdFwiOiB7XG4gICAgNDAwOiBcImZha1wiLFxuICAgIG5vcm1hbDogXCJmYWtcIlxuICB9LFxuICBcIkZvbnQgQXdlc29tZSBLaXQgRHVvdG9uZVwiOiB7XG4gICAgNDAwOiBcImZha2RcIixcbiAgICBub3JtYWw6IFwiZmFrZFwiXG4gIH1cbn0sXG4gICAgSW8gPSB7XG4gIGtpdDoge1xuICAgIFwiZmEta2l0XCI6IFwiZmFrXCJcbiAgfSxcbiAgXCJraXQtZHVvdG9uZVwiOiB7XG4gICAgXCJmYS1raXQtZHVvdG9uZVwiOiBcImZha2RcIlxuICB9XG59LFxuICAgIEZvID0ge1xuICBraXQ6IHtcbiAgICBmYWs6IFwiZmEta2l0XCJcbiAgfSxcbiAgXCJraXQtZHVvdG9uZVwiOiB7XG4gICAgZmFrZDogXCJmYS1raXQtZHVvdG9uZVwiXG4gIH1cbn0sXG4gICAgU28gPSB7XG4gIGtpdDoge1xuICAgIGtpdDogXCJmYWtcIlxuICB9LFxuICBcImtpdC1kdW90b25lXCI6IHtcbiAgICBcImtpdC1kdW90b25lXCI6IFwiZmFrZFwiXG4gIH1cbn07XG5cbmNvbnN0IE5BTUVTUEFDRV9JREVOVElGSUVSID0gJ19fX0ZPTlRfQVdFU09NRV9fXyc7XG5jb25zdCBVTklUU19JTl9HUklEID0gMTY7XG5jb25zdCBERUZBVUxUX0NTU19QUkVGSVggPSAnZmEnO1xuY29uc3QgREVGQVVMVF9SRVBMQUNFTUVOVF9DTEFTUyA9ICdzdmctaW5saW5lLS1mYSc7XG5jb25zdCBEQVRBX0ZBX0kyU1ZHID0gJ2RhdGEtZmEtaTJzdmcnO1xuY29uc3QgREFUQV9GQV9QU0VVRE9fRUxFTUVOVCA9ICdkYXRhLWZhLXBzZXVkby1lbGVtZW50JztcbmNvbnN0IERBVEFfRkFfUFNFVURPX0VMRU1FTlRfUEVORElORyA9ICdkYXRhLWZhLXBzZXVkby1lbGVtZW50LXBlbmRpbmcnO1xuY29uc3QgREFUQV9QUkVGSVggPSAnZGF0YS1wcmVmaXgnO1xuY29uc3QgREFUQV9JQ09OID0gJ2RhdGEtaWNvbic7XG5jb25zdCBIVE1MX0NMQVNTX0kyU1ZHX0JBU0VfQ0xBU1MgPSAnZm9udGF3ZXNvbWUtaTJzdmcnO1xuY29uc3QgTVVUQVRJT05fQVBQUk9BQ0hfQVNZTkMgPSAnYXN5bmMnO1xuY29uc3QgVEFHTkFNRVNfVE9fU0tJUF9GT1JfUFNFVURPRUxFTUVOVFMgPSBbJ0hUTUwnLCAnSEVBRCcsICdTVFlMRScsICdTQ1JJUFQnXTtcbmNvbnN0IFBST0RVQ1RJT04gPSAoKCkgPT4ge1xuICB0cnkge1xuICAgIHJldHVybiBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nO1xuICB9IGNhdGNoIChlJCQxKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59KSgpO1xuY29uc3QgRkFNSUxJRVMgPSBbYSwgciwgb107XG5cbmZ1bmN0aW9uIGZhbWlseVByb3h5KG9iaikge1xuICAvLyBEZWZhdWx0cyB0byB0aGUgY2xhc3NpYyBmYW1pbHkgaWYgZmFtaWx5IGlzIG5vdCBhdmFpbGFibGVcbiAgcmV0dXJuIG5ldyBQcm94eShvYmosIHtcbiAgICBnZXQodGFyZ2V0LCBwcm9wKSB7XG4gICAgICByZXR1cm4gcHJvcCBpbiB0YXJnZXQgPyB0YXJnZXRbcHJvcF0gOiB0YXJnZXRbYV07XG4gICAgfVxuXG4gIH0pO1xufVxuXG5jb25zdCBfUFJFRklYX1RPX1NUWUxFID0geyAuLi5ob1xufTtcbl9QUkVGSVhfVE9fU1RZTEVbYV0gPSB7IC4uLmhvW2FdLFxuICAuLi5idFsna2l0J10sXG4gIC4uLmJ0WydraXQtZHVvdG9uZSddXG59O1xuY29uc3QgUFJFRklYX1RPX1NUWUxFID0gZmFtaWx5UHJveHkoX1BSRUZJWF9UT19TVFlMRSk7XG5jb25zdCBfU1RZTEVfVE9fUFJFRklYID0geyAuLi5mb1xufTtcbl9TVFlMRV9UT19QUkVGSVhbYV0gPSB7IC4uLl9TVFlMRV9UT19QUkVGSVhbYV0sXG4gIC4uLlNvWydraXQnXSxcbiAgLi4uU29bJ2tpdC1kdW90b25lJ11cbn07XG5jb25zdCBTVFlMRV9UT19QUkVGSVggPSBmYW1pbHlQcm94eShfU1RZTEVfVE9fUFJFRklYKTtcbmNvbnN0IF9QUkVGSVhfVE9fTE9OR19TVFlMRSA9IHsgLi4ubm9cbn07XG5fUFJFRklYX1RPX0xPTkdfU1RZTEVbYV0gPSB7IC4uLl9QUkVGSVhfVE9fTE9OR19TVFlMRVthXSxcbiAgLi4uRm9bJ2tpdCddXG59O1xuY29uc3QgUFJFRklYX1RPX0xPTkdfU1RZTEUgPSBmYW1pbHlQcm94eShfUFJFRklYX1RPX0xPTkdfU1RZTEUpO1xuY29uc3QgX0xPTkdfU1RZTEVfVE9fUFJFRklYID0geyAuLi5sb1xufTtcbl9MT05HX1NUWUxFX1RPX1BSRUZJWFthXSA9IHsgLi4uX0xPTkdfU1RZTEVfVE9fUFJFRklYW2FdLFxuICAuLi5Jb1sna2l0J11cbn07XG5jb25zdCBMT05HX1NUWUxFX1RPX1BSRUZJWCA9IGZhbWlseVByb3h5KF9MT05HX1NUWUxFX1RPX1BSRUZJWCk7XG5jb25zdCBJQ09OX1NFTEVDVElPTl9TWU5UQVhfUEFUVEVSTiA9IER0OyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVzZWxlc3MtZXNjYXBlXG5cbmNvbnN0IExBWUVSU19URVhUX0NMQVNTTkFNRSA9ICdmYS1sYXllcnMtdGV4dCc7XG5jb25zdCBGT05UX0ZBTUlMWV9QQVRURVJOID0gS3Q7XG5jb25zdCBfRk9OVF9XRUlHSFRfVE9fUFJFRklYID0geyAuLi5ldCQxXG59O1xuY29uc3QgRk9OVF9XRUlHSFRfVE9fUFJFRklYID0gZmFtaWx5UHJveHkoX0ZPTlRfV0VJR0hUX1RPX1BSRUZJWCk7XG5jb25zdCBBVFRSSUJVVEVTX1dBVENIRURfRk9SX01VVEFUSU9OID0gWydjbGFzcycsICdkYXRhLXByZWZpeCcsICdkYXRhLWljb24nLCAnZGF0YS1mYS10cmFuc2Zvcm0nLCAnZGF0YS1mYS1tYXNrJ107XG5jb25zdCBEVU9UT05FX0NMQVNTRVMgPSB0JDE7XG5jb25zdCBwcmVmaXhlcyA9IG5ldyBTZXQoKTtcbk9iamVjdC5rZXlzKFNUWUxFX1RPX1BSRUZJWFthXSkubWFwKHByZWZpeGVzLmFkZC5iaW5kKHByZWZpeGVzKSk7XG5PYmplY3Qua2V5cyhTVFlMRV9UT19QUkVGSVhbcl0pLm1hcChwcmVmaXhlcy5hZGQuYmluZChwcmVmaXhlcykpO1xuT2JqZWN0LmtleXMoU1RZTEVfVE9fUFJFRklYW29dKS5tYXAocHJlZml4ZXMuYWRkLmJpbmQocHJlZml4ZXMpKTtcbmNvbnN0IFJFU0VSVkVEX0NMQVNTRVMgPSBbLi4uQ3QsIC4uLnlvXTtcblxuY29uc3QgaW5pdGlhbCA9IFdJTkRPVy5Gb250QXdlc29tZUNvbmZpZyB8fCB7fTtcblxuZnVuY3Rpb24gZ2V0QXR0ckNvbmZpZyhhdHRyKSB7XG4gIHZhciBlbGVtZW50ID0gRE9DVU1FTlQucXVlcnlTZWxlY3Rvcignc2NyaXB0WycgKyBhdHRyICsgJ10nKTtcblxuICBpZiAoZWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50LmdldEF0dHJpYnV0ZShhdHRyKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjb2VyY2UodmFsKSB7XG4gIC8vIEdldHRpbmcgYW4gZW1wdHkgc3RyaW5nIHdpbGwgb2NjdXIgaWYgdGhlIGF0dHJpYnV0ZSBpcyBzZXQgb24gdGhlIEhUTUwgdGFnIGJ1dCB3aXRob3V0IGEgdmFsdWVcbiAgLy8gV2UnbGwgYXNzdW1lIHRoYXQgdGhpcyBpcyBhbiBpbmRpY2F0aW9uIHRoYXQgaXQgc2hvdWxkIGJlIHRvZ2dsZWQgdG8gdHJ1ZVxuICBpZiAodmFsID09PSAnJykgcmV0dXJuIHRydWU7XG4gIGlmICh2YWwgPT09ICdmYWxzZScpIHJldHVybiBmYWxzZTtcbiAgaWYgKHZhbCA9PT0gJ3RydWUnKSByZXR1cm4gdHJ1ZTtcbiAgcmV0dXJuIHZhbDtcbn1cblxuaWYgKERPQ1VNRU5UICYmIHR5cGVvZiBET0NVTUVOVC5xdWVyeVNlbGVjdG9yID09PSAnZnVuY3Rpb24nKSB7XG4gIGNvbnN0IGF0dHJzID0gW1snZGF0YS1mYW1pbHktcHJlZml4JywgJ2ZhbWlseVByZWZpeCddLCBbJ2RhdGEtY3NzLXByZWZpeCcsICdjc3NQcmVmaXgnXSwgWydkYXRhLWZhbWlseS1kZWZhdWx0JywgJ2ZhbWlseURlZmF1bHQnXSwgWydkYXRhLXN0eWxlLWRlZmF1bHQnLCAnc3R5bGVEZWZhdWx0J10sIFsnZGF0YS1yZXBsYWNlbWVudC1jbGFzcycsICdyZXBsYWNlbWVudENsYXNzJ10sIFsnZGF0YS1hdXRvLXJlcGxhY2Utc3ZnJywgJ2F1dG9SZXBsYWNlU3ZnJ10sIFsnZGF0YS1hdXRvLWFkZC1jc3MnLCAnYXV0b0FkZENzcyddLCBbJ2RhdGEtYXV0by1hMTF5JywgJ2F1dG9BMTF5J10sIFsnZGF0YS1zZWFyY2gtcHNldWRvLWVsZW1lbnRzJywgJ3NlYXJjaFBzZXVkb0VsZW1lbnRzJ10sIFsnZGF0YS1vYnNlcnZlLW11dGF0aW9ucycsICdvYnNlcnZlTXV0YXRpb25zJ10sIFsnZGF0YS1tdXRhdGUtYXBwcm9hY2gnLCAnbXV0YXRlQXBwcm9hY2gnXSwgWydkYXRhLWtlZXAtb3JpZ2luYWwtc291cmNlJywgJ2tlZXBPcmlnaW5hbFNvdXJjZSddLCBbJ2RhdGEtbWVhc3VyZS1wZXJmb3JtYW5jZScsICdtZWFzdXJlUGVyZm9ybWFuY2UnXSwgWydkYXRhLXNob3ctbWlzc2luZy1pY29ucycsICdzaG93TWlzc2luZ0ljb25zJ11dO1xuICBhdHRycy5mb3JFYWNoKF9yZWYgPT4ge1xuICAgIGxldCBbYXR0ciwga2V5XSA9IF9yZWY7XG4gICAgY29uc3QgdmFsID0gY29lcmNlKGdldEF0dHJDb25maWcoYXR0cikpO1xuXG4gICAgaWYgKHZhbCAhPT0gdW5kZWZpbmVkICYmIHZhbCAhPT0gbnVsbCkge1xuICAgICAgaW5pdGlhbFtrZXldID0gdmFsO1xuICAgIH1cbiAgfSk7XG59XG5cbmNvbnN0IF9kZWZhdWx0ID0ge1xuICBzdHlsZURlZmF1bHQ6ICdzb2xpZCcsXG4gIGZhbWlseURlZmF1bHQ6ICdjbGFzc2ljJyxcbiAgY3NzUHJlZml4OiBERUZBVUxUX0NTU19QUkVGSVgsXG4gIHJlcGxhY2VtZW50Q2xhc3M6IERFRkFVTFRfUkVQTEFDRU1FTlRfQ0xBU1MsXG4gIGF1dG9SZXBsYWNlU3ZnOiB0cnVlLFxuICBhdXRvQWRkQ3NzOiB0cnVlLFxuICBhdXRvQTExeTogdHJ1ZSxcbiAgc2VhcmNoUHNldWRvRWxlbWVudHM6IGZhbHNlLFxuICBvYnNlcnZlTXV0YXRpb25zOiB0cnVlLFxuICBtdXRhdGVBcHByb2FjaDogJ2FzeW5jJyxcbiAga2VlcE9yaWdpbmFsU291cmNlOiB0cnVlLFxuICBtZWFzdXJlUGVyZm9ybWFuY2U6IGZhbHNlLFxuICBzaG93TWlzc2luZ0ljb25zOiB0cnVlXG59OyAvLyBmYW1pbHlQcmVmaXggaXMgZGVwcmVjYXRlZCBidXQgd2UgbXVzdCBzdGlsbCBzdXBwb3J0IGl0IGlmIHByZXNlbnRcblxuaWYgKGluaXRpYWwuZmFtaWx5UHJlZml4KSB7XG4gIGluaXRpYWwuY3NzUHJlZml4ID0gaW5pdGlhbC5mYW1pbHlQcmVmaXg7XG59XG5cbmNvbnN0IF9jb25maWcgPSB7IC4uLl9kZWZhdWx0LFxuICAuLi5pbml0aWFsXG59O1xuaWYgKCFfY29uZmlnLmF1dG9SZXBsYWNlU3ZnKSBfY29uZmlnLm9ic2VydmVNdXRhdGlvbnMgPSBmYWxzZTtcbmNvbnN0IGNvbmZpZyA9IHt9O1xuT2JqZWN0LmtleXMoX2RlZmF1bHQpLmZvckVhY2goa2V5ID0+IHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvbmZpZywga2V5LCB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBzZXQ6IGZ1bmN0aW9uICh2YWwpIHtcbiAgICAgIF9jb25maWdba2V5XSA9IHZhbDtcblxuICAgICAgX29uQ2hhbmdlQ2IuZm9yRWFjaChjYiA9PiBjYihjb25maWcpKTtcbiAgICB9LFxuICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIF9jb25maWdba2V5XTtcbiAgICB9XG4gIH0pO1xufSk7IC8vIGZhbWlseVByZWZpeCBpcyBkZXByZWNhdGVkIGFzIG9mIDYuMi4wIGFuZCBzaG91bGQgYmUgcmVtb3ZlZCBpbiA3LjAuMFxuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoY29uZmlnLCAnZmFtaWx5UHJlZml4Jywge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBzZXQ6IGZ1bmN0aW9uICh2YWwpIHtcbiAgICBfY29uZmlnLmNzc1ByZWZpeCA9IHZhbDtcblxuICAgIF9vbkNoYW5nZUNiLmZvckVhY2goY2IgPT4gY2IoY29uZmlnKSk7XG4gIH0sXG4gIGdldDogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBfY29uZmlnLmNzc1ByZWZpeDtcbiAgfVxufSk7XG5XSU5ET1cuRm9udEF3ZXNvbWVDb25maWcgPSBjb25maWc7XG5jb25zdCBfb25DaGFuZ2VDYiA9IFtdO1xuZnVuY3Rpb24gb25DaGFuZ2UoY2IpIHtcbiAgX29uQ2hhbmdlQ2IucHVzaChjYik7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBfb25DaGFuZ2VDYi5zcGxpY2UoX29uQ2hhbmdlQ2IuaW5kZXhPZihjYiksIDEpO1xuICB9O1xufVxuXG5jb25zdCBkJDIgPSBVTklUU19JTl9HUklEO1xuY29uc3QgbWVhbmluZ2xlc3NUcmFuc2Zvcm0gPSB7XG4gIHNpemU6IDE2LFxuICB4OiAwLFxuICB5OiAwLFxuICByb3RhdGU6IDAsXG4gIGZsaXBYOiBmYWxzZSxcbiAgZmxpcFk6IGZhbHNlXG59O1xuZnVuY3Rpb24gaW5zZXJ0Q3NzKGNzcykge1xuICBpZiAoIWNzcyB8fCAhSVNfRE9NKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3Qgc3R5bGUgPSBET0NVTUVOVC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuICBzdHlsZS5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAndGV4dC9jc3MnKTtcbiAgc3R5bGUuaW5uZXJIVE1MID0gY3NzO1xuICBjb25zdCBoZWFkQ2hpbGRyZW4gPSBET0NVTUVOVC5oZWFkLmNoaWxkTm9kZXM7XG4gIGxldCBiZWZvcmVDaGlsZCA9IG51bGw7XG5cbiAgZm9yIChsZXQgaSA9IGhlYWRDaGlsZHJlbi5sZW5ndGggLSAxOyBpID4gLTE7IGktLSkge1xuICAgIGNvbnN0IGNoaWxkID0gaGVhZENoaWxkcmVuW2ldO1xuICAgIGNvbnN0IHRhZ05hbWUgPSAoY2hpbGQudGFnTmFtZSB8fCAnJykudG9VcHBlckNhc2UoKTtcblxuICAgIGlmIChbJ1NUWUxFJywgJ0xJTksnXS5pbmRleE9mKHRhZ05hbWUpID4gLTEpIHtcbiAgICAgIGJlZm9yZUNoaWxkID0gY2hpbGQ7XG4gICAgfVxuICB9XG5cbiAgRE9DVU1FTlQuaGVhZC5pbnNlcnRCZWZvcmUoc3R5bGUsIGJlZm9yZUNoaWxkKTtcbiAgcmV0dXJuIGNzcztcbn1cbmNvbnN0IGlkUG9vbCA9ICcwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWic7XG5mdW5jdGlvbiBuZXh0VW5pcXVlSWQoKSB7XG4gIGxldCBzaXplID0gMTI7XG4gIGxldCBpZCA9ICcnO1xuXG4gIHdoaWxlIChzaXplLS0gPiAwKSB7XG4gICAgaWQgKz0gaWRQb29sW01hdGgucmFuZG9tKCkgKiA2MiB8IDBdO1xuICB9XG5cbiAgcmV0dXJuIGlkO1xufVxuZnVuY3Rpb24gdG9BcnJheShvYmopIHtcbiAgY29uc3QgYXJyYXkgPSBbXTtcblxuICBmb3IgKGxldCBpID0gKG9iaiB8fCBbXSkubGVuZ3RoID4+PiAwOyBpLS07KSB7XG4gICAgYXJyYXlbaV0gPSBvYmpbaV07XG4gIH1cblxuICByZXR1cm4gYXJyYXk7XG59XG5mdW5jdGlvbiBjbGFzc0FycmF5KG5vZGUpIHtcbiAgaWYgKG5vZGUuY2xhc3NMaXN0KSB7XG4gICAgcmV0dXJuIHRvQXJyYXkobm9kZS5jbGFzc0xpc3QpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiAobm9kZS5nZXRBdHRyaWJ1dGUoJ2NsYXNzJykgfHwgJycpLnNwbGl0KCcgJykuZmlsdGVyKGkgPT4gaSk7XG4gIH1cbn1cbmZ1bmN0aW9uIGh0bWxFc2NhcGUoc3RyKSB7XG4gIHJldHVybiBcIlwiLmNvbmNhdChzdHIpLnJlcGxhY2UoLyYvZywgJyZhbXA7JykucmVwbGFjZSgvXCIvZywgJyZxdW90OycpLnJlcGxhY2UoLycvZywgJyYjMzk7JykucmVwbGFjZSgvPC9nLCAnJmx0OycpLnJlcGxhY2UoLz4vZywgJyZndDsnKTtcbn1cbmZ1bmN0aW9uIGpvaW5BdHRyaWJ1dGVzKGF0dHJpYnV0ZXMpIHtcbiAgcmV0dXJuIE9iamVjdC5rZXlzKGF0dHJpYnV0ZXMgfHwge30pLnJlZHVjZSgoYWNjLCBhdHRyaWJ1dGVOYW1lKSA9PiB7XG4gICAgcmV0dXJuIGFjYyArIFwiXCIuY29uY2F0KGF0dHJpYnV0ZU5hbWUsIFwiPVxcXCJcIikuY29uY2F0KGh0bWxFc2NhcGUoYXR0cmlidXRlc1thdHRyaWJ1dGVOYW1lXSksIFwiXFxcIiBcIik7XG4gIH0sICcnKS50cmltKCk7XG59XG5mdW5jdGlvbiBqb2luU3R5bGVzKHN0eWxlcykge1xuICByZXR1cm4gT2JqZWN0LmtleXMoc3R5bGVzIHx8IHt9KS5yZWR1Y2UoKGFjYywgc3R5bGVOYW1lKSA9PiB7XG4gICAgcmV0dXJuIGFjYyArIFwiXCIuY29uY2F0KHN0eWxlTmFtZSwgXCI6IFwiKS5jb25jYXQoc3R5bGVzW3N0eWxlTmFtZV0udHJpbSgpLCBcIjtcIik7XG4gIH0sICcnKTtcbn1cbmZ1bmN0aW9uIHRyYW5zZm9ybUlzTWVhbmluZ2Z1bCh0cmFuc2Zvcm0pIHtcbiAgcmV0dXJuIHRyYW5zZm9ybS5zaXplICE9PSBtZWFuaW5nbGVzc1RyYW5zZm9ybS5zaXplIHx8IHRyYW5zZm9ybS54ICE9PSBtZWFuaW5nbGVzc1RyYW5zZm9ybS54IHx8IHRyYW5zZm9ybS55ICE9PSBtZWFuaW5nbGVzc1RyYW5zZm9ybS55IHx8IHRyYW5zZm9ybS5yb3RhdGUgIT09IG1lYW5pbmdsZXNzVHJhbnNmb3JtLnJvdGF0ZSB8fCB0cmFuc2Zvcm0uZmxpcFggfHwgdHJhbnNmb3JtLmZsaXBZO1xufVxuZnVuY3Rpb24gdHJhbnNmb3JtRm9yU3ZnKF9yZWYpIHtcbiAgbGV0IHtcbiAgICB0cmFuc2Zvcm0sXG4gICAgY29udGFpbmVyV2lkdGgsXG4gICAgaWNvbldpZHRoXG4gIH0gPSBfcmVmO1xuICBjb25zdCBvdXRlciA9IHtcbiAgICB0cmFuc2Zvcm06IFwidHJhbnNsYXRlKFwiLmNvbmNhdChjb250YWluZXJXaWR0aCAvIDIsIFwiIDI1NilcIilcbiAgfTtcbiAgY29uc3QgaW5uZXJUcmFuc2xhdGUgPSBcInRyYW5zbGF0ZShcIi5jb25jYXQodHJhbnNmb3JtLnggKiAzMiwgXCIsIFwiKS5jb25jYXQodHJhbnNmb3JtLnkgKiAzMiwgXCIpIFwiKTtcbiAgY29uc3QgaW5uZXJTY2FsZSA9IFwic2NhbGUoXCIuY29uY2F0KHRyYW5zZm9ybS5zaXplIC8gMTYgKiAodHJhbnNmb3JtLmZsaXBYID8gLTEgOiAxKSwgXCIsIFwiKS5jb25jYXQodHJhbnNmb3JtLnNpemUgLyAxNiAqICh0cmFuc2Zvcm0uZmxpcFkgPyAtMSA6IDEpLCBcIikgXCIpO1xuICBjb25zdCBpbm5lclJvdGF0ZSA9IFwicm90YXRlKFwiLmNvbmNhdCh0cmFuc2Zvcm0ucm90YXRlLCBcIiAwIDApXCIpO1xuICBjb25zdCBpbm5lciA9IHtcbiAgICB0cmFuc2Zvcm06IFwiXCIuY29uY2F0KGlubmVyVHJhbnNsYXRlLCBcIiBcIikuY29uY2F0KGlubmVyU2NhbGUsIFwiIFwiKS5jb25jYXQoaW5uZXJSb3RhdGUpXG4gIH07XG4gIGNvbnN0IHBhdGggPSB7XG4gICAgdHJhbnNmb3JtOiBcInRyYW5zbGF0ZShcIi5jb25jYXQoaWNvbldpZHRoIC8gMiAqIC0xLCBcIiAtMjU2KVwiKVxuICB9O1xuICByZXR1cm4ge1xuICAgIG91dGVyLFxuICAgIGlubmVyLFxuICAgIHBhdGhcbiAgfTtcbn1cbmZ1bmN0aW9uIHRyYW5zZm9ybUZvckNzcyhfcmVmMikge1xuICBsZXQge1xuICAgIHRyYW5zZm9ybSxcbiAgICB3aWR0aCA9IFVOSVRTX0lOX0dSSUQsXG4gICAgaGVpZ2h0ID0gVU5JVFNfSU5fR1JJRCxcbiAgICBzdGFydENlbnRlcmVkID0gZmFsc2VcbiAgfSA9IF9yZWYyO1xuICBsZXQgdmFsID0gJyc7XG5cbiAgaWYgKHN0YXJ0Q2VudGVyZWQgJiYgSVNfSUUpIHtcbiAgICB2YWwgKz0gXCJ0cmFuc2xhdGUoXCIuY29uY2F0KHRyYW5zZm9ybS54IC8gZCQyIC0gd2lkdGggLyAyLCBcImVtLCBcIikuY29uY2F0KHRyYW5zZm9ybS55IC8gZCQyIC0gaGVpZ2h0IC8gMiwgXCJlbSkgXCIpO1xuICB9IGVsc2UgaWYgKHN0YXJ0Q2VudGVyZWQpIHtcbiAgICB2YWwgKz0gXCJ0cmFuc2xhdGUoY2FsYygtNTAlICsgXCIuY29uY2F0KHRyYW5zZm9ybS54IC8gZCQyLCBcImVtKSwgY2FsYygtNTAlICsgXCIpLmNvbmNhdCh0cmFuc2Zvcm0ueSAvIGQkMiwgXCJlbSkpIFwiKTtcbiAgfSBlbHNlIHtcbiAgICB2YWwgKz0gXCJ0cmFuc2xhdGUoXCIuY29uY2F0KHRyYW5zZm9ybS54IC8gZCQyLCBcImVtLCBcIikuY29uY2F0KHRyYW5zZm9ybS55IC8gZCQyLCBcImVtKSBcIik7XG4gIH1cblxuICB2YWwgKz0gXCJzY2FsZShcIi5jb25jYXQodHJhbnNmb3JtLnNpemUgLyBkJDIgKiAodHJhbnNmb3JtLmZsaXBYID8gLTEgOiAxKSwgXCIsIFwiKS5jb25jYXQodHJhbnNmb3JtLnNpemUgLyBkJDIgKiAodHJhbnNmb3JtLmZsaXBZID8gLTEgOiAxKSwgXCIpIFwiKTtcbiAgdmFsICs9IFwicm90YXRlKFwiLmNvbmNhdCh0cmFuc2Zvcm0ucm90YXRlLCBcImRlZykgXCIpO1xuICByZXR1cm4gdmFsO1xufVxuXG52YXIgYmFzZVN0eWxlcyA9IFwiOnJvb3QsIDpob3N0IHtcXG4gIC0tZmEtZm9udC1zb2xpZDogbm9ybWFsIDkwMCAxZW0vMSBcXFwiRm9udCBBd2Vzb21lIDYgRnJlZVxcXCI7XFxuICAtLWZhLWZvbnQtcmVndWxhcjogbm9ybWFsIDQwMCAxZW0vMSBcXFwiRm9udCBBd2Vzb21lIDYgRnJlZVxcXCI7XFxuICAtLWZhLWZvbnQtbGlnaHQ6IG5vcm1hbCAzMDAgMWVtLzEgXFxcIkZvbnQgQXdlc29tZSA2IFByb1xcXCI7XFxuICAtLWZhLWZvbnQtdGhpbjogbm9ybWFsIDEwMCAxZW0vMSBcXFwiRm9udCBBd2Vzb21lIDYgUHJvXFxcIjtcXG4gIC0tZmEtZm9udC1kdW90b25lOiBub3JtYWwgOTAwIDFlbS8xIFxcXCJGb250IEF3ZXNvbWUgNiBEdW90b25lXFxcIjtcXG4gIC0tZmEtZm9udC1icmFuZHM6IG5vcm1hbCA0MDAgMWVtLzEgXFxcIkZvbnQgQXdlc29tZSA2IEJyYW5kc1xcXCI7XFxuICAtLWZhLWZvbnQtc2hhcnAtc29saWQ6IG5vcm1hbCA5MDAgMWVtLzEgXFxcIkZvbnQgQXdlc29tZSA2IFNoYXJwXFxcIjtcXG4gIC0tZmEtZm9udC1zaGFycC1yZWd1bGFyOiBub3JtYWwgNDAwIDFlbS8xIFxcXCJGb250IEF3ZXNvbWUgNiBTaGFycFxcXCI7XFxuICAtLWZhLWZvbnQtc2hhcnAtbGlnaHQ6IG5vcm1hbCAzMDAgMWVtLzEgXFxcIkZvbnQgQXdlc29tZSA2IFNoYXJwXFxcIjtcXG4gIC0tZmEtZm9udC1zaGFycC10aGluOiBub3JtYWwgMTAwIDFlbS8xIFxcXCJGb250IEF3ZXNvbWUgNiBTaGFycFxcXCI7XFxuICAtLWZhLWZvbnQtc2hhcnAtZHVvdG9uZS1zb2xpZDogbm9ybWFsIDkwMCAxZW0vMSBcXFwiRm9udCBBd2Vzb21lIDYgU2hhcnAgRHVvdG9uZVxcXCI7XFxufVxcblxcbnN2Zzpub3QoOnJvb3QpLnN2Zy1pbmxpbmUtLWZhLCBzdmc6bm90KDpob3N0KS5zdmctaW5saW5lLS1mYSB7XFxuICBvdmVyZmxvdzogdmlzaWJsZTtcXG4gIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xcbn1cXG5cXG4uc3ZnLWlubGluZS0tZmEge1xcbiAgZGlzcGxheTogdmFyKC0tZmEtZGlzcGxheSwgaW5saW5lLWJsb2NrKTtcXG4gIGhlaWdodDogMWVtO1xcbiAgb3ZlcmZsb3c6IHZpc2libGU7XFxuICB2ZXJ0aWNhbC1hbGlnbjogLTAuMTI1ZW07XFxufVxcbi5zdmctaW5saW5lLS1mYS5mYS0yeHMge1xcbiAgdmVydGljYWwtYWxpZ246IDAuMWVtO1xcbn1cXG4uc3ZnLWlubGluZS0tZmEuZmEteHMge1xcbiAgdmVydGljYWwtYWxpZ246IDBlbTtcXG59XFxuLnN2Zy1pbmxpbmUtLWZhLmZhLXNtIHtcXG4gIHZlcnRpY2FsLWFsaWduOiAtMC4wNzE0Mjg1NzA1ZW07XFxufVxcbi5zdmctaW5saW5lLS1mYS5mYS1sZyB7XFxuICB2ZXJ0aWNhbC1hbGlnbjogLTAuMmVtO1xcbn1cXG4uc3ZnLWlubGluZS0tZmEuZmEteGwge1xcbiAgdmVydGljYWwtYWxpZ246IC0wLjI1ZW07XFxufVxcbi5zdmctaW5saW5lLS1mYS5mYS0yeGwge1xcbiAgdmVydGljYWwtYWxpZ246IC0wLjMxMjVlbTtcXG59XFxuLnN2Zy1pbmxpbmUtLWZhLmZhLXB1bGwtbGVmdCB7XFxuICBtYXJnaW4tcmlnaHQ6IHZhcigtLWZhLXB1bGwtbWFyZ2luLCAwLjNlbSk7XFxuICB3aWR0aDogYXV0bztcXG59XFxuLnN2Zy1pbmxpbmUtLWZhLmZhLXB1bGwtcmlnaHQge1xcbiAgbWFyZ2luLWxlZnQ6IHZhcigtLWZhLXB1bGwtbWFyZ2luLCAwLjNlbSk7XFxuICB3aWR0aDogYXV0bztcXG59XFxuLnN2Zy1pbmxpbmUtLWZhLmZhLWxpIHtcXG4gIHdpZHRoOiB2YXIoLS1mYS1saS13aWR0aCwgMmVtKTtcXG4gIHRvcDogMC4yNWVtO1xcbn1cXG4uc3ZnLWlubGluZS0tZmEuZmEtZncge1xcbiAgd2lkdGg6IHZhcigtLWZhLWZ3LXdpZHRoLCAxLjI1ZW0pO1xcbn1cXG5cXG4uZmEtbGF5ZXJzIHN2Zy5zdmctaW5saW5lLS1mYSB7XFxuICBib3R0b206IDA7XFxuICBsZWZ0OiAwO1xcbiAgbWFyZ2luOiBhdXRvO1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgcmlnaHQ6IDA7XFxuICB0b3A6IDA7XFxufVxcblxcbi5mYS1sYXllcnMtY291bnRlciwgLmZhLWxheWVycy10ZXh0IHtcXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXG59XFxuXFxuLmZhLWxheWVycyB7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICBoZWlnaHQ6IDFlbTtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gIHZlcnRpY2FsLWFsaWduOiAtMC4xMjVlbTtcXG4gIHdpZHRoOiAxZW07XFxufVxcbi5mYS1sYXllcnMgc3ZnLnN2Zy1pbmxpbmUtLWZhIHtcXG4gIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciBjZW50ZXI7XFxufVxcblxcbi5mYS1sYXllcnMtdGV4dCB7XFxuICBsZWZ0OiA1MCU7XFxuICB0b3A6IDUwJTtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xcbiAgdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGNlbnRlcjtcXG59XFxuXFxuLmZhLWxheWVycy1jb3VudGVyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWZhLWNvdW50ZXItYmFja2dyb3VuZC1jb2xvciwgI2ZmMjUzYSk7XFxuICBib3JkZXItcmFkaXVzOiB2YXIoLS1mYS1jb3VudGVyLWJvcmRlci1yYWRpdXMsIDFlbSk7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgY29sb3I6IHZhcigtLWZhLWludmVyc2UsICNmZmYpO1xcbiAgbGluZS1oZWlnaHQ6IHZhcigtLWZhLWNvdW50ZXItbGluZS1oZWlnaHQsIDEpO1xcbiAgbWF4LXdpZHRoOiB2YXIoLS1mYS1jb3VudGVyLW1heC13aWR0aCwgNWVtKTtcXG4gIG1pbi13aWR0aDogdmFyKC0tZmEtY291bnRlci1taW4td2lkdGgsIDEuNWVtKTtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICBwYWRkaW5nOiB2YXIoLS1mYS1jb3VudGVyLXBhZGRpbmcsIDAuMjVlbSAwLjVlbSk7XFxuICByaWdodDogdmFyKC0tZmEtcmlnaHQsIDApO1xcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XFxuICB0b3A6IHZhcigtLWZhLXRvcCwgMCk7XFxuICB0cmFuc2Zvcm06IHNjYWxlKHZhcigtLWZhLWNvdW50ZXItc2NhbGUsIDAuMjUpKTtcXG4gIHRyYW5zZm9ybS1vcmlnaW46IHRvcCByaWdodDtcXG59XFxuXFxuLmZhLWxheWVycy1ib3R0b20tcmlnaHQge1xcbiAgYm90dG9tOiB2YXIoLS1mYS1ib3R0b20sIDApO1xcbiAgcmlnaHQ6IHZhcigtLWZhLXJpZ2h0LCAwKTtcXG4gIHRvcDogYXV0bztcXG4gIHRyYW5zZm9ybTogc2NhbGUodmFyKC0tZmEtbGF5ZXJzLXNjYWxlLCAwLjI1KSk7XFxuICB0cmFuc2Zvcm0tb3JpZ2luOiBib3R0b20gcmlnaHQ7XFxufVxcblxcbi5mYS1sYXllcnMtYm90dG9tLWxlZnQge1xcbiAgYm90dG9tOiB2YXIoLS1mYS1ib3R0b20sIDApO1xcbiAgbGVmdDogdmFyKC0tZmEtbGVmdCwgMCk7XFxuICByaWdodDogYXV0bztcXG4gIHRvcDogYXV0bztcXG4gIHRyYW5zZm9ybTogc2NhbGUodmFyKC0tZmEtbGF5ZXJzLXNjYWxlLCAwLjI1KSk7XFxuICB0cmFuc2Zvcm0tb3JpZ2luOiBib3R0b20gbGVmdDtcXG59XFxuXFxuLmZhLWxheWVycy10b3AtcmlnaHQge1xcbiAgdG9wOiB2YXIoLS1mYS10b3AsIDApO1xcbiAgcmlnaHQ6IHZhcigtLWZhLXJpZ2h0LCAwKTtcXG4gIHRyYW5zZm9ybTogc2NhbGUodmFyKC0tZmEtbGF5ZXJzLXNjYWxlLCAwLjI1KSk7XFxuICB0cmFuc2Zvcm0tb3JpZ2luOiB0b3AgcmlnaHQ7XFxufVxcblxcbi5mYS1sYXllcnMtdG9wLWxlZnQge1xcbiAgbGVmdDogdmFyKC0tZmEtbGVmdCwgMCk7XFxuICByaWdodDogYXV0bztcXG4gIHRvcDogdmFyKC0tZmEtdG9wLCAwKTtcXG4gIHRyYW5zZm9ybTogc2NhbGUodmFyKC0tZmEtbGF5ZXJzLXNjYWxlLCAwLjI1KSk7XFxuICB0cmFuc2Zvcm0tb3JpZ2luOiB0b3AgbGVmdDtcXG59XFxuXFxuLmZhLTF4IHtcXG4gIGZvbnQtc2l6ZTogMWVtO1xcbn1cXG5cXG4uZmEtMngge1xcbiAgZm9udC1zaXplOiAyZW07XFxufVxcblxcbi5mYS0zeCB7XFxuICBmb250LXNpemU6IDNlbTtcXG59XFxuXFxuLmZhLTR4IHtcXG4gIGZvbnQtc2l6ZTogNGVtO1xcbn1cXG5cXG4uZmEtNXgge1xcbiAgZm9udC1zaXplOiA1ZW07XFxufVxcblxcbi5mYS02eCB7XFxuICBmb250LXNpemU6IDZlbTtcXG59XFxuXFxuLmZhLTd4IHtcXG4gIGZvbnQtc2l6ZTogN2VtO1xcbn1cXG5cXG4uZmEtOHgge1xcbiAgZm9udC1zaXplOiA4ZW07XFxufVxcblxcbi5mYS05eCB7XFxuICBmb250LXNpemU6IDllbTtcXG59XFxuXFxuLmZhLTEweCB7XFxuICBmb250LXNpemU6IDEwZW07XFxufVxcblxcbi5mYS0yeHMge1xcbiAgZm9udC1zaXplOiAwLjYyNWVtO1xcbiAgbGluZS1oZWlnaHQ6IDAuMWVtO1xcbiAgdmVydGljYWwtYWxpZ246IDAuMjI1ZW07XFxufVxcblxcbi5mYS14cyB7XFxuICBmb250LXNpemU6IDAuNzVlbTtcXG4gIGxpbmUtaGVpZ2h0OiAwLjA4MzMzMzMzMzdlbTtcXG4gIHZlcnRpY2FsLWFsaWduOiAwLjEyNWVtO1xcbn1cXG5cXG4uZmEtc20ge1xcbiAgZm9udC1zaXplOiAwLjg3NWVtO1xcbiAgbGluZS1oZWlnaHQ6IDAuMDcxNDI4NTcxOGVtO1xcbiAgdmVydGljYWwtYWxpZ246IDAuMDUzNTcxNDI5NWVtO1xcbn1cXG5cXG4uZmEtbGcge1xcbiAgZm9udC1zaXplOiAxLjI1ZW07XFxuICBsaW5lLWhlaWdodDogMC4wNWVtO1xcbiAgdmVydGljYWwtYWxpZ246IC0wLjA3NWVtO1xcbn1cXG5cXG4uZmEteGwge1xcbiAgZm9udC1zaXplOiAxLjVlbTtcXG4gIGxpbmUtaGVpZ2h0OiAwLjA0MTY2NjY2ODJlbTtcXG4gIHZlcnRpY2FsLWFsaWduOiAtMC4xMjVlbTtcXG59XFxuXFxuLmZhLTJ4bCB7XFxuICBmb250LXNpemU6IDJlbTtcXG4gIGxpbmUtaGVpZ2h0OiAwLjAzMTI1ZW07XFxuICB2ZXJ0aWNhbC1hbGlnbjogLTAuMTg3NWVtO1xcbn1cXG5cXG4uZmEtZncge1xcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgd2lkdGg6IDEuMjVlbTtcXG59XFxuXFxuLmZhLXVsIHtcXG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcXG4gIG1hcmdpbi1sZWZ0OiB2YXIoLS1mYS1saS1tYXJnaW4sIDIuNWVtKTtcXG4gIHBhZGRpbmctbGVmdDogMDtcXG59XFxuLmZhLXVsID4gbGkge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbn1cXG5cXG4uZmEtbGkge1xcbiAgbGVmdDogY2FsYygtMSAqIHZhcigtLWZhLWxpLXdpZHRoLCAyZW0pKTtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gIHdpZHRoOiB2YXIoLS1mYS1saS13aWR0aCwgMmVtKTtcXG4gIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xcbn1cXG5cXG4uZmEtYm9yZGVyIHtcXG4gIGJvcmRlci1jb2xvcjogdmFyKC0tZmEtYm9yZGVyLWNvbG9yLCAjZWVlKTtcXG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLWZhLWJvcmRlci1yYWRpdXMsIDAuMWVtKTtcXG4gIGJvcmRlci1zdHlsZTogdmFyKC0tZmEtYm9yZGVyLXN0eWxlLCBzb2xpZCk7XFxuICBib3JkZXItd2lkdGg6IHZhcigtLWZhLWJvcmRlci13aWR0aCwgMC4wOGVtKTtcXG4gIHBhZGRpbmc6IHZhcigtLWZhLWJvcmRlci1wYWRkaW5nLCAwLjJlbSAwLjI1ZW0gMC4xNWVtKTtcXG59XFxuXFxuLmZhLXB1bGwtbGVmdCB7XFxuICBmbG9hdDogbGVmdDtcXG4gIG1hcmdpbi1yaWdodDogdmFyKC0tZmEtcHVsbC1tYXJnaW4sIDAuM2VtKTtcXG59XFxuXFxuLmZhLXB1bGwtcmlnaHQge1xcbiAgZmxvYXQ6IHJpZ2h0O1xcbiAgbWFyZ2luLWxlZnQ6IHZhcigtLWZhLXB1bGwtbWFyZ2luLCAwLjNlbSk7XFxufVxcblxcbi5mYS1iZWF0IHtcXG4gIGFuaW1hdGlvbi1uYW1lOiBmYS1iZWF0O1xcbiAgYW5pbWF0aW9uLWRlbGF5OiB2YXIoLS1mYS1hbmltYXRpb24tZGVsYXksIDBzKTtcXG4gIGFuaW1hdGlvbi1kaXJlY3Rpb246IHZhcigtLWZhLWFuaW1hdGlvbi1kaXJlY3Rpb24sIG5vcm1hbCk7XFxuICBhbmltYXRpb24tZHVyYXRpb246IHZhcigtLWZhLWFuaW1hdGlvbi1kdXJhdGlvbiwgMXMpO1xcbiAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogdmFyKC0tZmEtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCwgaW5maW5pdGUpO1xcbiAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLXRpbWluZywgZWFzZS1pbi1vdXQpO1xcbn1cXG5cXG4uZmEtYm91bmNlIHtcXG4gIGFuaW1hdGlvbi1uYW1lOiBmYS1ib3VuY2U7XFxuICBhbmltYXRpb24tZGVsYXk6IHZhcigtLWZhLWFuaW1hdGlvbi1kZWxheSwgMHMpO1xcbiAgYW5pbWF0aW9uLWRpcmVjdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLWRpcmVjdGlvbiwgbm9ybWFsKTtcXG4gIGFuaW1hdGlvbi1kdXJhdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLWR1cmF0aW9uLCAxcyk7XFxuICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiB2YXIoLS1mYS1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50LCBpbmZpbml0ZSk7XFxuICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tdGltaW5nLCBjdWJpYy1iZXppZXIoMC4yOCwgMC44NCwgMC40MiwgMSkpO1xcbn1cXG5cXG4uZmEtZmFkZSB7XFxuICBhbmltYXRpb24tbmFtZTogZmEtZmFkZTtcXG4gIGFuaW1hdGlvbi1kZWxheTogdmFyKC0tZmEtYW5pbWF0aW9uLWRlbGF5LCAwcyk7XFxuICBhbmltYXRpb24tZGlyZWN0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tZGlyZWN0aW9uLCBub3JtYWwpO1xcbiAgYW5pbWF0aW9uLWR1cmF0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tZHVyYXRpb24sIDFzKTtcXG4gIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IHZhcigtLWZhLWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQsIGluZmluaXRlKTtcXG4gIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IHZhcigtLWZhLWFuaW1hdGlvbi10aW1pbmcsIGN1YmljLWJlemllcigwLjQsIDAsIDAuNiwgMSkpO1xcbn1cXG5cXG4uZmEtYmVhdC1mYWRlIHtcXG4gIGFuaW1hdGlvbi1uYW1lOiBmYS1iZWF0LWZhZGU7XFxuICBhbmltYXRpb24tZGVsYXk6IHZhcigtLWZhLWFuaW1hdGlvbi1kZWxheSwgMHMpO1xcbiAgYW5pbWF0aW9uLWRpcmVjdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLWRpcmVjdGlvbiwgbm9ybWFsKTtcXG4gIGFuaW1hdGlvbi1kdXJhdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLWR1cmF0aW9uLCAxcyk7XFxuICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiB2YXIoLS1mYS1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50LCBpbmZpbml0ZSk7XFxuICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tdGltaW5nLCBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjYsIDEpKTtcXG59XFxuXFxuLmZhLWZsaXAge1xcbiAgYW5pbWF0aW9uLW5hbWU6IGZhLWZsaXA7XFxuICBhbmltYXRpb24tZGVsYXk6IHZhcigtLWZhLWFuaW1hdGlvbi1kZWxheSwgMHMpO1xcbiAgYW5pbWF0aW9uLWRpcmVjdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLWRpcmVjdGlvbiwgbm9ybWFsKTtcXG4gIGFuaW1hdGlvbi1kdXJhdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLWR1cmF0aW9uLCAxcyk7XFxuICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiB2YXIoLS1mYS1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50LCBpbmZpbml0ZSk7XFxuICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tdGltaW5nLCBlYXNlLWluLW91dCk7XFxufVxcblxcbi5mYS1zaGFrZSB7XFxuICBhbmltYXRpb24tbmFtZTogZmEtc2hha2U7XFxuICBhbmltYXRpb24tZGVsYXk6IHZhcigtLWZhLWFuaW1hdGlvbi1kZWxheSwgMHMpO1xcbiAgYW5pbWF0aW9uLWRpcmVjdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLWRpcmVjdGlvbiwgbm9ybWFsKTtcXG4gIGFuaW1hdGlvbi1kdXJhdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLWR1cmF0aW9uLCAxcyk7XFxuICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiB2YXIoLS1mYS1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50LCBpbmZpbml0ZSk7XFxuICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tdGltaW5nLCBsaW5lYXIpO1xcbn1cXG5cXG4uZmEtc3BpbiB7XFxuICBhbmltYXRpb24tbmFtZTogZmEtc3BpbjtcXG4gIGFuaW1hdGlvbi1kZWxheTogdmFyKC0tZmEtYW5pbWF0aW9uLWRlbGF5LCAwcyk7XFxuICBhbmltYXRpb24tZGlyZWN0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tZGlyZWN0aW9uLCBub3JtYWwpO1xcbiAgYW5pbWF0aW9uLWR1cmF0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tZHVyYXRpb24sIDJzKTtcXG4gIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IHZhcigtLWZhLWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQsIGluZmluaXRlKTtcXG4gIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IHZhcigtLWZhLWFuaW1hdGlvbi10aW1pbmcsIGxpbmVhcik7XFxufVxcblxcbi5mYS1zcGluLXJldmVyc2Uge1xcbiAgLS1mYS1hbmltYXRpb24tZGlyZWN0aW9uOiByZXZlcnNlO1xcbn1cXG5cXG4uZmEtcHVsc2UsXFxuLmZhLXNwaW4tcHVsc2Uge1xcbiAgYW5pbWF0aW9uLW5hbWU6IGZhLXNwaW47XFxuICBhbmltYXRpb24tZGlyZWN0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tZGlyZWN0aW9uLCBub3JtYWwpO1xcbiAgYW5pbWF0aW9uLWR1cmF0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tZHVyYXRpb24sIDFzKTtcXG4gIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IHZhcigtLWZhLWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQsIGluZmluaXRlKTtcXG4gIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IHZhcigtLWZhLWFuaW1hdGlvbi10aW1pbmcsIHN0ZXBzKDgpKTtcXG59XFxuXFxuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcXG4gIC5mYS1iZWF0LFxcbi5mYS1ib3VuY2UsXFxuLmZhLWZhZGUsXFxuLmZhLWJlYXQtZmFkZSxcXG4uZmEtZmxpcCxcXG4uZmEtcHVsc2UsXFxuLmZhLXNoYWtlLFxcbi5mYS1zcGluLFxcbi5mYS1zcGluLXB1bHNlIHtcXG4gICAgYW5pbWF0aW9uLWRlbGF5OiAtMW1zO1xcbiAgICBhbmltYXRpb24tZHVyYXRpb246IDFtcztcXG4gICAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogMTtcXG4gICAgdHJhbnNpdGlvbi1kZWxheTogMHM7XFxuICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDBzO1xcbiAgfVxcbn1cXG5Aa2V5ZnJhbWVzIGZhLWJlYXQge1xcbiAgMCUsIDkwJSB7XFxuICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XFxuICB9XFxuICA0NSUge1xcbiAgICB0cmFuc2Zvcm06IHNjYWxlKHZhcigtLWZhLWJlYXQtc2NhbGUsIDEuMjUpKTtcXG4gIH1cXG59XFxuQGtleWZyYW1lcyBmYS1ib3VuY2Uge1xcbiAgMCUge1xcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEsIDEpIHRyYW5zbGF0ZVkoMCk7XFxuICB9XFxuICAxMCUge1xcbiAgICB0cmFuc2Zvcm06IHNjYWxlKHZhcigtLWZhLWJvdW5jZS1zdGFydC1zY2FsZS14LCAxLjEpLCB2YXIoLS1mYS1ib3VuY2Utc3RhcnQtc2NhbGUteSwgMC45KSkgdHJhbnNsYXRlWSgwKTtcXG4gIH1cXG4gIDMwJSB7XFxuICAgIHRyYW5zZm9ybTogc2NhbGUodmFyKC0tZmEtYm91bmNlLWp1bXAtc2NhbGUteCwgMC45KSwgdmFyKC0tZmEtYm91bmNlLWp1bXAtc2NhbGUteSwgMS4xKSkgdHJhbnNsYXRlWSh2YXIoLS1mYS1ib3VuY2UtaGVpZ2h0LCAtMC41ZW0pKTtcXG4gIH1cXG4gIDUwJSB7XFxuICAgIHRyYW5zZm9ybTogc2NhbGUodmFyKC0tZmEtYm91bmNlLWxhbmQtc2NhbGUteCwgMS4wNSksIHZhcigtLWZhLWJvdW5jZS1sYW5kLXNjYWxlLXksIDAuOTUpKSB0cmFuc2xhdGVZKDApO1xcbiAgfVxcbiAgNTclIHtcXG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxLCAxKSB0cmFuc2xhdGVZKHZhcigtLWZhLWJvdW5jZS1yZWJvdW5kLCAtMC4xMjVlbSkpO1xcbiAgfVxcbiAgNjQlIHtcXG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxLCAxKSB0cmFuc2xhdGVZKDApO1xcbiAgfVxcbiAgMTAwJSB7XFxuICAgIHRyYW5zZm9ybTogc2NhbGUoMSwgMSkgdHJhbnNsYXRlWSgwKTtcXG4gIH1cXG59XFxuQGtleWZyYW1lcyBmYS1mYWRlIHtcXG4gIDUwJSB7XFxuICAgIG9wYWNpdHk6IHZhcigtLWZhLWZhZGUtb3BhY2l0eSwgMC40KTtcXG4gIH1cXG59XFxuQGtleWZyYW1lcyBmYS1iZWF0LWZhZGUge1xcbiAgMCUsIDEwMCUge1xcbiAgICBvcGFjaXR5OiB2YXIoLS1mYS1iZWF0LWZhZGUtb3BhY2l0eSwgMC40KTtcXG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcXG4gIH1cXG4gIDUwJSB7XFxuICAgIG9wYWNpdHk6IDE7XFxuICAgIHRyYW5zZm9ybTogc2NhbGUodmFyKC0tZmEtYmVhdC1mYWRlLXNjYWxlLCAxLjEyNSkpO1xcbiAgfVxcbn1cXG5Aa2V5ZnJhbWVzIGZhLWZsaXAge1xcbiAgNTAlIHtcXG4gICAgdHJhbnNmb3JtOiByb3RhdGUzZCh2YXIoLS1mYS1mbGlwLXgsIDApLCB2YXIoLS1mYS1mbGlwLXksIDEpLCB2YXIoLS1mYS1mbGlwLXosIDApLCB2YXIoLS1mYS1mbGlwLWFuZ2xlLCAtMTgwZGVnKSk7XFxuICB9XFxufVxcbkBrZXlmcmFtZXMgZmEtc2hha2Uge1xcbiAgMCUge1xcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtMTVkZWcpO1xcbiAgfVxcbiAgNCUge1xcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxNWRlZyk7XFxuICB9XFxuICA4JSwgMjQlIHtcXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoLTE4ZGVnKTtcXG4gIH1cXG4gIDEyJSwgMjglIHtcXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMThkZWcpO1xcbiAgfVxcbiAgMTYlIHtcXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoLTIyZGVnKTtcXG4gIH1cXG4gIDIwJSB7XFxuICAgIHRyYW5zZm9ybTogcm90YXRlKDIyZGVnKTtcXG4gIH1cXG4gIDMyJSB7XFxuICAgIHRyYW5zZm9ybTogcm90YXRlKC0xMmRlZyk7XFxuICB9XFxuICAzNiUge1xcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxMmRlZyk7XFxuICB9XFxuICA0MCUsIDEwMCUge1xcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcXG4gIH1cXG59XFxuQGtleWZyYW1lcyBmYS1zcGluIHtcXG4gIDAlIHtcXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XFxuICB9XFxuICAxMDAlIHtcXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcXG4gIH1cXG59XFxuLmZhLXJvdGF0ZS05MCB7XFxuICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7XFxufVxcblxcbi5mYS1yb3RhdGUtMTgwIHtcXG4gIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7XFxufVxcblxcbi5mYS1yb3RhdGUtMjcwIHtcXG4gIHRyYW5zZm9ybTogcm90YXRlKDI3MGRlZyk7XFxufVxcblxcbi5mYS1mbGlwLWhvcml6b250YWwge1xcbiAgdHJhbnNmb3JtOiBzY2FsZSgtMSwgMSk7XFxufVxcblxcbi5mYS1mbGlwLXZlcnRpY2FsIHtcXG4gIHRyYW5zZm9ybTogc2NhbGUoMSwgLTEpO1xcbn1cXG5cXG4uZmEtZmxpcC1ib3RoLFxcbi5mYS1mbGlwLWhvcml6b250YWwuZmEtZmxpcC12ZXJ0aWNhbCB7XFxuICB0cmFuc2Zvcm06IHNjYWxlKC0xLCAtMSk7XFxufVxcblxcbi5mYS1yb3RhdGUtYnkge1xcbiAgdHJhbnNmb3JtOiByb3RhdGUodmFyKC0tZmEtcm90YXRlLWFuZ2xlLCAwKSk7XFxufVxcblxcbi5mYS1zdGFjayB7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xcbiAgaGVpZ2h0OiAyZW07XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICB3aWR0aDogMi41ZW07XFxufVxcblxcbi5mYS1zdGFjay0xeCxcXG4uZmEtc3RhY2stMngge1xcbiAgYm90dG9tOiAwO1xcbiAgbGVmdDogMDtcXG4gIG1hcmdpbjogYXV0bztcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHJpZ2h0OiAwO1xcbiAgdG9wOiAwO1xcbiAgei1pbmRleDogdmFyKC0tZmEtc3RhY2stei1pbmRleCwgYXV0byk7XFxufVxcblxcbi5zdmctaW5saW5lLS1mYS5mYS1zdGFjay0xeCB7XFxuICBoZWlnaHQ6IDFlbTtcXG4gIHdpZHRoOiAxLjI1ZW07XFxufVxcbi5zdmctaW5saW5lLS1mYS5mYS1zdGFjay0yeCB7XFxuICBoZWlnaHQ6IDJlbTtcXG4gIHdpZHRoOiAyLjVlbTtcXG59XFxuXFxuLmZhLWludmVyc2Uge1xcbiAgY29sb3I6IHZhcigtLWZhLWludmVyc2UsICNmZmYpO1xcbn1cXG5cXG4uc3Itb25seSxcXG4uZmEtc3Itb25seSB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB3aWR0aDogMXB4O1xcbiAgaGVpZ2h0OiAxcHg7XFxuICBwYWRkaW5nOiAwO1xcbiAgbWFyZ2luOiAtMXB4O1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIGNsaXA6IHJlY3QoMCwgMCwgMCwgMCk7XFxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xcbiAgYm9yZGVyLXdpZHRoOiAwO1xcbn1cXG5cXG4uc3Itb25seS1mb2N1c2FibGU6bm90KDpmb2N1cyksXFxuLmZhLXNyLW9ubHktZm9jdXNhYmxlOm5vdCg6Zm9jdXMpIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHdpZHRoOiAxcHg7XFxuICBoZWlnaHQ6IDFweDtcXG4gIHBhZGRpbmc6IDA7XFxuICBtYXJnaW46IC0xcHg7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgY2xpcDogcmVjdCgwLCAwLCAwLCAwKTtcXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XFxuICBib3JkZXItd2lkdGg6IDA7XFxufVxcblxcbi5zdmctaW5saW5lLS1mYSAuZmEtcHJpbWFyeSB7XFxuICBmaWxsOiB2YXIoLS1mYS1wcmltYXJ5LWNvbG9yLCBjdXJyZW50Q29sb3IpO1xcbiAgb3BhY2l0eTogdmFyKC0tZmEtcHJpbWFyeS1vcGFjaXR5LCAxKTtcXG59XFxuXFxuLnN2Zy1pbmxpbmUtLWZhIC5mYS1zZWNvbmRhcnkge1xcbiAgZmlsbDogdmFyKC0tZmEtc2Vjb25kYXJ5LWNvbG9yLCBjdXJyZW50Q29sb3IpO1xcbiAgb3BhY2l0eTogdmFyKC0tZmEtc2Vjb25kYXJ5LW9wYWNpdHksIDAuNCk7XFxufVxcblxcbi5zdmctaW5saW5lLS1mYS5mYS1zd2FwLW9wYWNpdHkgLmZhLXByaW1hcnkge1xcbiAgb3BhY2l0eTogdmFyKC0tZmEtc2Vjb25kYXJ5LW9wYWNpdHksIDAuNCk7XFxufVxcblxcbi5zdmctaW5saW5lLS1mYS5mYS1zd2FwLW9wYWNpdHkgLmZhLXNlY29uZGFyeSB7XFxuICBvcGFjaXR5OiB2YXIoLS1mYS1wcmltYXJ5LW9wYWNpdHksIDEpO1xcbn1cXG5cXG4uc3ZnLWlubGluZS0tZmEgbWFzayAuZmEtcHJpbWFyeSxcXG4uc3ZnLWlubGluZS0tZmEgbWFzayAuZmEtc2Vjb25kYXJ5IHtcXG4gIGZpbGw6IGJsYWNrO1xcbn1cXG5cXG4uZmFkLmZhLWludmVyc2UsXFxuLmZhLWR1b3RvbmUuZmEtaW52ZXJzZSB7XFxuICBjb2xvcjogdmFyKC0tZmEtaW52ZXJzZSwgI2ZmZik7XFxufVwiO1xuXG5mdW5jdGlvbiBjc3MoKSB7XG4gIGNvbnN0IGRjcCA9IERFRkFVTFRfQ1NTX1BSRUZJWDtcbiAgY29uc3QgZHJjID0gREVGQVVMVF9SRVBMQUNFTUVOVF9DTEFTUztcbiAgY29uc3QgZnAgPSBjb25maWcuY3NzUHJlZml4O1xuICBjb25zdCByYyA9IGNvbmZpZy5yZXBsYWNlbWVudENsYXNzO1xuICBsZXQgcyA9IGJhc2VTdHlsZXM7XG5cbiAgaWYgKGZwICE9PSBkY3AgfHwgcmMgIT09IGRyYykge1xuICAgIGNvbnN0IGRQYXR0ID0gbmV3IFJlZ0V4cChcIlxcXFwuXCIuY29uY2F0KGRjcCwgXCJcXFxcLVwiKSwgJ2cnKTtcbiAgICBjb25zdCBjdXN0b21Qcm9wUGF0dCA9IG5ldyBSZWdFeHAoXCJcXFxcLS1cIi5jb25jYXQoZGNwLCBcIlxcXFwtXCIpLCAnZycpO1xuICAgIGNvbnN0IHJQYXR0ID0gbmV3IFJlZ0V4cChcIlxcXFwuXCIuY29uY2F0KGRyYyksICdnJyk7XG4gICAgcyA9IHMucmVwbGFjZShkUGF0dCwgXCIuXCIuY29uY2F0KGZwLCBcIi1cIikpLnJlcGxhY2UoY3VzdG9tUHJvcFBhdHQsIFwiLS1cIi5jb25jYXQoZnAsIFwiLVwiKSkucmVwbGFjZShyUGF0dCwgXCIuXCIuY29uY2F0KHJjKSk7XG4gIH1cblxuICByZXR1cm4gcztcbn1cblxubGV0IF9jc3NJbnNlcnRlZCA9IGZhbHNlO1xuXG5mdW5jdGlvbiBlbnN1cmVDc3MoKSB7XG4gIGlmIChjb25maWcuYXV0b0FkZENzcyAmJiAhX2Nzc0luc2VydGVkKSB7XG4gICAgaW5zZXJ0Q3NzKGNzcygpKTtcbiAgICBfY3NzSW5zZXJ0ZWQgPSB0cnVlO1xuICB9XG59XG5cbnZhciBJbmplY3RDU1MgPSB7XG4gIG1peG91dCgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZG9tOiB7XG4gICAgICAgIGNzcyxcbiAgICAgICAgaW5zZXJ0Q3NzOiBlbnN1cmVDc3NcbiAgICAgIH1cbiAgICB9O1xuICB9LFxuXG4gIGhvb2tzKCkge1xuICAgIHJldHVybiB7XG4gICAgICBiZWZvcmVET01FbGVtZW50Q3JlYXRpb24oKSB7XG4gICAgICAgIGVuc3VyZUNzcygpO1xuICAgICAgfSxcblxuICAgICAgYmVmb3JlSTJzdmcoKSB7XG4gICAgICAgIGVuc3VyZUNzcygpO1xuICAgICAgfVxuXG4gICAgfTtcbiAgfVxuXG59O1xuXG5jb25zdCB3JDEgPSBXSU5ET1cgfHwge307XG5pZiAoIXckMVtOQU1FU1BBQ0VfSURFTlRJRklFUl0pIHckMVtOQU1FU1BBQ0VfSURFTlRJRklFUl0gPSB7fTtcbmlmICghdyQxW05BTUVTUEFDRV9JREVOVElGSUVSXS5zdHlsZXMpIHckMVtOQU1FU1BBQ0VfSURFTlRJRklFUl0uc3R5bGVzID0ge307XG5pZiAoIXckMVtOQU1FU1BBQ0VfSURFTlRJRklFUl0uaG9va3MpIHckMVtOQU1FU1BBQ0VfSURFTlRJRklFUl0uaG9va3MgPSB7fTtcbmlmICghdyQxW05BTUVTUEFDRV9JREVOVElGSUVSXS5zaGltcykgdyQxW05BTUVTUEFDRV9JREVOVElGSUVSXS5zaGltcyA9IFtdO1xudmFyIG5hbWVzcGFjZSA9IHckMVtOQU1FU1BBQ0VfSURFTlRJRklFUl07XG5cbmNvbnN0IGZ1bmN0aW9ucyA9IFtdO1xuXG5jb25zdCBsaXN0ZW5lciA9IGZ1bmN0aW9uICgpIHtcbiAgRE9DVU1FTlQucmVtb3ZlRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGxpc3RlbmVyKTtcbiAgbG9hZGVkID0gMTtcbiAgZnVuY3Rpb25zLm1hcChmbiA9PiBmbigpKTtcbn07XG5cbmxldCBsb2FkZWQgPSBmYWxzZTtcblxuaWYgKElTX0RPTSkge1xuICBsb2FkZWQgPSAoRE9DVU1FTlQuZG9jdW1lbnRFbGVtZW50LmRvU2Nyb2xsID8gL15sb2FkZWR8XmMvIDogL15sb2FkZWR8Xml8XmMvKS50ZXN0KERPQ1VNRU5ULnJlYWR5U3RhdGUpO1xuICBpZiAoIWxvYWRlZCkgRE9DVU1FTlQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGxpc3RlbmVyKTtcbn1cblxuZnVuY3Rpb24gZG9tcmVhZHkgKGZuKSB7XG4gIGlmICghSVNfRE9NKSByZXR1cm47XG4gIGxvYWRlZCA/IHNldFRpbWVvdXQoZm4sIDApIDogZnVuY3Rpb25zLnB1c2goZm4pO1xufVxuXG5mdW5jdGlvbiB0b0h0bWwoYWJzdHJhY3ROb2Rlcykge1xuICBjb25zdCB7XG4gICAgdGFnLFxuICAgIGF0dHJpYnV0ZXMgPSB7fSxcbiAgICBjaGlsZHJlbiA9IFtdXG4gIH0gPSBhYnN0cmFjdE5vZGVzO1xuXG4gIGlmICh0eXBlb2YgYWJzdHJhY3ROb2RlcyA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gaHRtbEVzY2FwZShhYnN0cmFjdE5vZGVzKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gXCI8XCIuY29uY2F0KHRhZywgXCIgXCIpLmNvbmNhdChqb2luQXR0cmlidXRlcyhhdHRyaWJ1dGVzKSwgXCI+XCIpLmNvbmNhdChjaGlsZHJlbi5tYXAodG9IdG1sKS5qb2luKCcnKSwgXCI8L1wiKS5jb25jYXQodGFnLCBcIj5cIik7XG4gIH1cbn1cblxuZnVuY3Rpb24gaWNvbkZyb21NYXBwaW5nKG1hcHBpbmcsIHByZWZpeCwgaWNvbk5hbWUpIHtcbiAgaWYgKG1hcHBpbmcgJiYgbWFwcGluZ1twcmVmaXhdICYmIG1hcHBpbmdbcHJlZml4XVtpY29uTmFtZV0pIHtcbiAgICByZXR1cm4ge1xuICAgICAgcHJlZml4LFxuICAgICAgaWNvbk5hbWUsXG4gICAgICBpY29uOiBtYXBwaW5nW3ByZWZpeF1baWNvbk5hbWVdXG4gICAgfTtcbiAgfVxufVxuXG4vKipcbiAqIEludGVybmFsIGhlbHBlciB0byBiaW5kIGEgZnVuY3Rpb24ga25vd24gdG8gaGF2ZSA0IGFyZ3VtZW50c1xuICogdG8gYSBnaXZlbiBjb250ZXh0LlxuICovXG5cbnZhciBiaW5kSW50ZXJuYWw0ID0gZnVuY3Rpb24gYmluZEludGVybmFsNChmdW5jLCB0aGlzQ29udGV4dCkge1xuICByZXR1cm4gZnVuY3Rpb24gKGEsIGIsIGMsIGQpIHtcbiAgICByZXR1cm4gZnVuYy5jYWxsKHRoaXNDb250ZXh0LCBhLCBiLCBjLCBkKTtcbiAgfTtcbn07XG5cbi8qKlxuICogIyBSZWR1Y2VcbiAqXG4gKiBBIGZhc3Qgb2JqZWN0IGAucmVkdWNlKClgIGltcGxlbWVudGF0aW9uLlxuICpcbiAqIEBwYXJhbSAge09iamVjdH0gICBzdWJqZWN0ICAgICAgVGhlIG9iamVjdCB0byByZWR1Y2Ugb3Zlci5cbiAqIEBwYXJhbSAge0Z1bmN0aW9ufSBmbiAgICAgICAgICAgVGhlIHJlZHVjZXIgZnVuY3Rpb24uXG4gKiBAcGFyYW0gIHttaXhlZH0gICAgaW5pdGlhbFZhbHVlIFRoZSBpbml0aWFsIHZhbHVlIGZvciB0aGUgcmVkdWNlciwgZGVmYXVsdHMgdG8gc3ViamVjdFswXS5cbiAqIEBwYXJhbSAge09iamVjdH0gICB0aGlzQ29udGV4dCAgVGhlIGNvbnRleHQgZm9yIHRoZSByZWR1Y2VyLlxuICogQHJldHVybiB7bWl4ZWR9ICAgICAgICAgICAgICAgICBUaGUgZmluYWwgcmVzdWx0LlxuICovXG5cblxudmFyIHJlZHVjZSA9IGZ1bmN0aW9uIGZhc3RSZWR1Y2VPYmplY3Qoc3ViamVjdCwgZm4sIGluaXRpYWxWYWx1ZSwgdGhpc0NvbnRleHQpIHtcbiAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhzdWJqZWN0KSxcbiAgICAgIGxlbmd0aCA9IGtleXMubGVuZ3RoLFxuICAgICAgaXRlcmF0b3IgPSB0aGlzQ29udGV4dCAhPT0gdW5kZWZpbmVkID8gYmluZEludGVybmFsNChmbiwgdGhpc0NvbnRleHQpIDogZm4sXG4gICAgICBpLFxuICAgICAga2V5LFxuICAgICAgcmVzdWx0O1xuXG4gIGlmIChpbml0aWFsVmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgIGkgPSAxO1xuICAgIHJlc3VsdCA9IHN1YmplY3Rba2V5c1swXV07XG4gIH0gZWxzZSB7XG4gICAgaSA9IDA7XG4gICAgcmVzdWx0ID0gaW5pdGlhbFZhbHVlO1xuICB9XG5cbiAgZm9yICg7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgIGtleSA9IGtleXNbaV07XG4gICAgcmVzdWx0ID0gaXRlcmF0b3IocmVzdWx0LCBzdWJqZWN0W2tleV0sIGtleSwgc3ViamVjdCk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuLyoqXG4gKiB1Y3MyZGVjb2RlKCkgYW5kIGNvZGVQb2ludEF0KCkgYXJlIGJvdGggd29ya3Mgb2YgTWF0aGlhcyBCeW5lbnMgYW5kIGxpY2Vuc2VkIHVuZGVyIE1JVFxuICpcbiAqIENvcHlyaWdodCBNYXRoaWFzIEJ5bmVucyA8aHR0cHM6Ly9tYXRoaWFzYnluZW5zLmJlLz5cblxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nXG4gKiBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbiAqIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuICogZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvXG4gKiBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG9cbiAqIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcblxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmVcbiAqIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELFxuICogRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4gKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORFxuICogTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRVxuICogTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTlxuICogT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OXG4gKiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cbiAqL1xuZnVuY3Rpb24gdWNzMmRlY29kZShzdHJpbmcpIHtcbiAgY29uc3Qgb3V0cHV0ID0gW107XG4gIGxldCBjb3VudGVyID0gMDtcbiAgY29uc3QgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aDtcblxuICB3aGlsZSAoY291bnRlciA8IGxlbmd0aCkge1xuICAgIGNvbnN0IHZhbHVlID0gc3RyaW5nLmNoYXJDb2RlQXQoY291bnRlcisrKTtcblxuICAgIGlmICh2YWx1ZSA+PSAweEQ4MDAgJiYgdmFsdWUgPD0gMHhEQkZGICYmIGNvdW50ZXIgPCBsZW5ndGgpIHtcbiAgICAgIGNvbnN0IGV4dHJhID0gc3RyaW5nLmNoYXJDb2RlQXQoY291bnRlcisrKTtcblxuICAgICAgaWYgKChleHRyYSAmIDB4RkMwMCkgPT0gMHhEQzAwKSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgZXFlcWVxXG4gICAgICAgIG91dHB1dC5wdXNoKCgodmFsdWUgJiAweDNGRikgPDwgMTApICsgKGV4dHJhICYgMHgzRkYpICsgMHgxMDAwMCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvdXRwdXQucHVzaCh2YWx1ZSk7XG4gICAgICAgIGNvdW50ZXItLTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgb3V0cHV0LnB1c2godmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvdXRwdXQ7XG59XG5cbmZ1bmN0aW9uIHRvSGV4KHVuaWNvZGUpIHtcbiAgY29uc3QgZGVjb2RlZCA9IHVjczJkZWNvZGUodW5pY29kZSk7XG4gIHJldHVybiBkZWNvZGVkLmxlbmd0aCA9PT0gMSA/IGRlY29kZWRbMF0udG9TdHJpbmcoMTYpIDogbnVsbDtcbn1cbmZ1bmN0aW9uIGNvZGVQb2ludEF0KHN0cmluZywgaW5kZXgpIHtcbiAgY29uc3Qgc2l6ZSA9IHN0cmluZy5sZW5ndGg7XG4gIGxldCBmaXJzdCA9IHN0cmluZy5jaGFyQ29kZUF0KGluZGV4KTtcbiAgbGV0IHNlY29uZDtcblxuICBpZiAoZmlyc3QgPj0gMHhEODAwICYmIGZpcnN0IDw9IDB4REJGRiAmJiBzaXplID4gaW5kZXggKyAxKSB7XG4gICAgc2Vjb25kID0gc3RyaW5nLmNoYXJDb2RlQXQoaW5kZXggKyAxKTtcblxuICAgIGlmIChzZWNvbmQgPj0gMHhEQzAwICYmIHNlY29uZCA8PSAweERGRkYpIHtcbiAgICAgIHJldHVybiAoZmlyc3QgLSAweEQ4MDApICogMHg0MDAgKyBzZWNvbmQgLSAweERDMDAgKyAweDEwMDAwO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmaXJzdDtcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplSWNvbnMoaWNvbnMpIHtcbiAgcmV0dXJuIE9iamVjdC5rZXlzKGljb25zKS5yZWR1Y2UoKGFjYywgaWNvbk5hbWUpID0+IHtcbiAgICBjb25zdCBpY29uID0gaWNvbnNbaWNvbk5hbWVdO1xuICAgIGNvbnN0IGV4cGFuZGVkID0gISFpY29uLmljb247XG5cbiAgICBpZiAoZXhwYW5kZWQpIHtcbiAgICAgIGFjY1tpY29uLmljb25OYW1lXSA9IGljb24uaWNvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgYWNjW2ljb25OYW1lXSA9IGljb247XG4gICAgfVxuXG4gICAgcmV0dXJuIGFjYztcbiAgfSwge30pO1xufVxuXG5mdW5jdGlvbiBkZWZpbmVJY29ucyhwcmVmaXgsIGljb25zKSB7XG4gIGxldCBwYXJhbXMgPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6IHt9O1xuICBjb25zdCB7XG4gICAgc2tpcEhvb2tzID0gZmFsc2VcbiAgfSA9IHBhcmFtcztcbiAgY29uc3Qgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZUljb25zKGljb25zKTtcblxuICBpZiAodHlwZW9mIG5hbWVzcGFjZS5ob29rcy5hZGRQYWNrID09PSAnZnVuY3Rpb24nICYmICFza2lwSG9va3MpIHtcbiAgICBuYW1lc3BhY2UuaG9va3MuYWRkUGFjayhwcmVmaXgsIG5vcm1hbGl6ZUljb25zKGljb25zKSk7XG4gIH0gZWxzZSB7XG4gICAgbmFtZXNwYWNlLnN0eWxlc1twcmVmaXhdID0geyAuLi4obmFtZXNwYWNlLnN0eWxlc1twcmVmaXhdIHx8IHt9KSxcbiAgICAgIC4uLm5vcm1hbGl6ZWRcbiAgICB9O1xuICB9XG4gIC8qKlxuICAgKiBGb250IEF3ZXNvbWUgNCB1c2VkIHRoZSBwcmVmaXggb2YgYGZhYCBmb3IgYWxsIGljb25zLiBXaXRoIHRoZSBpbnRyb2R1Y3Rpb25cbiAgICogb2YgbmV3IHN0eWxlcyB3ZSBuZWVkZWQgdG8gZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIHRoZW0uIFByZWZpeCBgZmFgIGlzIG5vdyBhbiBhbGlhc1xuICAgKiBmb3IgYGZhc2Agc28gd2UnbGwgZWFzZSB0aGUgdXBncmFkZSBwcm9jZXNzIGZvciBvdXIgdXNlcnMgYnkgYXV0b21hdGljYWxseSBkZWZpbmluZ1xuICAgKiB0aGlzIGFzIHdlbGwuXG4gICAqL1xuXG5cbiAgaWYgKHByZWZpeCA9PT0gJ2ZhcycpIHtcbiAgICBkZWZpbmVJY29ucygnZmEnLCBpY29ucyk7XG4gIH1cbn1cblxuY29uc3Qge1xuICBzdHlsZXMsXG4gIHNoaW1zXG59ID0gbmFtZXNwYWNlO1xuY29uc3QgTE9OR19TVFlMRSA9IHtcbiAgW2FdOiBPYmplY3QudmFsdWVzKFBSRUZJWF9UT19MT05HX1NUWUxFW2FdKSxcbiAgW3JdOiBPYmplY3QudmFsdWVzKFBSRUZJWF9UT19MT05HX1NUWUxFW3JdKSxcbiAgW29dOiBPYmplY3QudmFsdWVzKFBSRUZJWF9UT19MT05HX1NUWUxFW29dKVxufTtcbmxldCBfZGVmYXVsdFVzYWJsZVByZWZpeCA9IG51bGw7XG5sZXQgX2J5VW5pY29kZSA9IHt9O1xubGV0IF9ieUxpZ2F0dXJlID0ge307XG5sZXQgX2J5T2xkTmFtZSA9IHt9O1xubGV0IF9ieU9sZFVuaWNvZGUgPSB7fTtcbmxldCBfYnlBbGlhcyA9IHt9O1xuY29uc3QgUFJFRklYRVMgPSB7XG4gIFthXTogT2JqZWN0LmtleXMoUFJFRklYX1RPX1NUWUxFW2FdKSxcbiAgW3JdOiBPYmplY3Qua2V5cyhQUkVGSVhfVE9fU1RZTEVbcl0pLFxuICBbb106IE9iamVjdC5rZXlzKFBSRUZJWF9UT19TVFlMRVtvXSlcbn07XG5cbmZ1bmN0aW9uIGlzUmVzZXJ2ZWQobmFtZSkge1xuICByZXR1cm4gflJFU0VSVkVEX0NMQVNTRVMuaW5kZXhPZihuYW1lKTtcbn1cblxuZnVuY3Rpb24gZ2V0SWNvbk5hbWUoY3NzUHJlZml4LCBjbHMpIHtcbiAgY29uc3QgcGFydHMgPSBjbHMuc3BsaXQoJy0nKTtcbiAgY29uc3QgcHJlZml4ID0gcGFydHNbMF07XG4gIGNvbnN0IGljb25OYW1lID0gcGFydHMuc2xpY2UoMSkuam9pbignLScpO1xuXG4gIGlmIChwcmVmaXggPT09IGNzc1ByZWZpeCAmJiBpY29uTmFtZSAhPT0gJycgJiYgIWlzUmVzZXJ2ZWQoaWNvbk5hbWUpKSB7XG4gICAgcmV0dXJuIGljb25OYW1lO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5jb25zdCBidWlsZCA9ICgpID0+IHtcbiAgY29uc3QgbG9va3VwID0gcmVkdWNlciA9PiB7XG4gICAgcmV0dXJuIHJlZHVjZShzdHlsZXMsIChvJCQxLCBzdHlsZSwgcHJlZml4KSA9PiB7XG4gICAgICBvJCQxW3ByZWZpeF0gPSByZWR1Y2Uoc3R5bGUsIHJlZHVjZXIsIHt9KTtcbiAgICAgIHJldHVybiBvJCQxO1xuICAgIH0sIHt9KTtcbiAgfTtcblxuICBfYnlVbmljb2RlID0gbG9va3VwKChhY2MsIGljb24sIGljb25OYW1lKSA9PiB7XG4gICAgaWYgKGljb25bM10pIHtcbiAgICAgIGFjY1tpY29uWzNdXSA9IGljb25OYW1lO1xuICAgIH1cblxuICAgIGlmIChpY29uWzJdKSB7XG4gICAgICBjb25zdCBhbGlhc2VzID0gaWNvblsyXS5maWx0ZXIoYSQkMSA9PiB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgYSQkMSA9PT0gJ251bWJlcic7XG4gICAgICB9KTtcbiAgICAgIGFsaWFzZXMuZm9yRWFjaChhbGlhcyA9PiB7XG4gICAgICAgIGFjY1thbGlhcy50b1N0cmluZygxNildID0gaWNvbk5hbWU7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gYWNjO1xuICB9KTtcbiAgX2J5TGlnYXR1cmUgPSBsb29rdXAoKGFjYywgaWNvbiwgaWNvbk5hbWUpID0+IHtcbiAgICBhY2NbaWNvbk5hbWVdID0gaWNvbk5hbWU7XG5cbiAgICBpZiAoaWNvblsyXSkge1xuICAgICAgY29uc3QgYWxpYXNlcyA9IGljb25bMl0uZmlsdGVyKGEkJDEgPT4ge1xuICAgICAgICByZXR1cm4gdHlwZW9mIGEkJDEgPT09ICdzdHJpbmcnO1xuICAgICAgfSk7XG4gICAgICBhbGlhc2VzLmZvckVhY2goYWxpYXMgPT4ge1xuICAgICAgICBhY2NbYWxpYXNdID0gaWNvbk5hbWU7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gYWNjO1xuICB9KTtcbiAgX2J5QWxpYXMgPSBsb29rdXAoKGFjYywgaWNvbiwgaWNvbk5hbWUpID0+IHtcbiAgICBjb25zdCBhbGlhc2VzID0gaWNvblsyXTtcbiAgICBhY2NbaWNvbk5hbWVdID0gaWNvbk5hbWU7XG4gICAgYWxpYXNlcy5mb3JFYWNoKGFsaWFzID0+IHtcbiAgICAgIGFjY1thbGlhc10gPSBpY29uTmFtZTtcbiAgICB9KTtcbiAgICByZXR1cm4gYWNjO1xuICB9KTsgLy8gSWYgd2UgaGF2ZSBhIEtpdCwgd2UgY2FuJ3QgZGV0ZXJtaW5lIGlmIHJlZ3VsYXIgaXMgYXZhaWxhYmxlIHNpbmNlIHdlXG4gIC8vIGNvdWxkIGJlIGF1dG8tZmV0Y2hpbmcgaXQuIFdlJ2xsIGhhdmUgdG8gYXNzdW1lIHRoYXQgaXQgaXMgYXZhaWxhYmxlLlxuXG4gIGNvbnN0IGhhc1JlZ3VsYXIgPSAnZmFyJyBpbiBzdHlsZXMgfHwgY29uZmlnLmF1dG9GZXRjaFN2ZztcbiAgY29uc3Qgc2hpbUxvb2t1cHMgPSByZWR1Y2Uoc2hpbXMsIChhY2MsIHNoaW0pID0+IHtcbiAgICBjb25zdCBtYXliZU5hbWVNYXliZVVuaWNvZGUgPSBzaGltWzBdO1xuICAgIGxldCBwcmVmaXggPSBzaGltWzFdO1xuICAgIGNvbnN0IGljb25OYW1lID0gc2hpbVsyXTtcblxuICAgIGlmIChwcmVmaXggPT09ICdmYXInICYmICFoYXNSZWd1bGFyKSB7XG4gICAgICBwcmVmaXggPSAnZmFzJztcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG1heWJlTmFtZU1heWJlVW5pY29kZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGFjYy5uYW1lc1ttYXliZU5hbWVNYXliZVVuaWNvZGVdID0ge1xuICAgICAgICBwcmVmaXgsXG4gICAgICAgIGljb25OYW1lXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgbWF5YmVOYW1lTWF5YmVVbmljb2RlID09PSAnbnVtYmVyJykge1xuICAgICAgYWNjLnVuaWNvZGVzW21heWJlTmFtZU1heWJlVW5pY29kZS50b1N0cmluZygxNildID0ge1xuICAgICAgICBwcmVmaXgsXG4gICAgICAgIGljb25OYW1lXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiBhY2M7XG4gIH0sIHtcbiAgICBuYW1lczoge30sXG4gICAgdW5pY29kZXM6IHt9XG4gIH0pO1xuICBfYnlPbGROYW1lID0gc2hpbUxvb2t1cHMubmFtZXM7XG4gIF9ieU9sZFVuaWNvZGUgPSBzaGltTG9va3Vwcy51bmljb2RlcztcbiAgX2RlZmF1bHRVc2FibGVQcmVmaXggPSBnZXRDYW5vbmljYWxQcmVmaXgoY29uZmlnLnN0eWxlRGVmYXVsdCwge1xuICAgIGZhbWlseTogY29uZmlnLmZhbWlseURlZmF1bHRcbiAgfSk7XG59O1xub25DaGFuZ2UoYyQkMSA9PiB7XG4gIF9kZWZhdWx0VXNhYmxlUHJlZml4ID0gZ2V0Q2Fub25pY2FsUHJlZml4KGMkJDEuc3R5bGVEZWZhdWx0LCB7XG4gICAgZmFtaWx5OiBjb25maWcuZmFtaWx5RGVmYXVsdFxuICB9KTtcbn0pO1xuYnVpbGQoKTtcbmZ1bmN0aW9uIGJ5VW5pY29kZShwcmVmaXgsIHVuaWNvZGUpIHtcbiAgcmV0dXJuIChfYnlVbmljb2RlW3ByZWZpeF0gfHwge30pW3VuaWNvZGVdO1xufVxuZnVuY3Rpb24gYnlMaWdhdHVyZShwcmVmaXgsIGxpZ2F0dXJlKSB7XG4gIHJldHVybiAoX2J5TGlnYXR1cmVbcHJlZml4XSB8fCB7fSlbbGlnYXR1cmVdO1xufVxuZnVuY3Rpb24gYnlBbGlhcyhwcmVmaXgsIGFsaWFzKSB7XG4gIHJldHVybiAoX2J5QWxpYXNbcHJlZml4XSB8fCB7fSlbYWxpYXNdO1xufVxuZnVuY3Rpb24gYnlPbGROYW1lKG5hbWUpIHtcbiAgcmV0dXJuIF9ieU9sZE5hbWVbbmFtZV0gfHwge1xuICAgIHByZWZpeDogbnVsbCxcbiAgICBpY29uTmFtZTogbnVsbFxuICB9O1xufVxuZnVuY3Rpb24gYnlPbGRVbmljb2RlKHVuaWNvZGUpIHtcbiAgY29uc3Qgb2xkVW5pY29kZSA9IF9ieU9sZFVuaWNvZGVbdW5pY29kZV07XG4gIGNvbnN0IG5ld1VuaWNvZGUgPSBieVVuaWNvZGUoJ2ZhcycsIHVuaWNvZGUpO1xuICByZXR1cm4gb2xkVW5pY29kZSB8fCAobmV3VW5pY29kZSA/IHtcbiAgICBwcmVmaXg6ICdmYXMnLFxuICAgIGljb25OYW1lOiBuZXdVbmljb2RlXG4gIH0gOiBudWxsKSB8fCB7XG4gICAgcHJlZml4OiBudWxsLFxuICAgIGljb25OYW1lOiBudWxsXG4gIH07XG59XG5mdW5jdGlvbiBnZXREZWZhdWx0VXNhYmxlUHJlZml4KCkge1xuICByZXR1cm4gX2RlZmF1bHRVc2FibGVQcmVmaXg7XG59XG5jb25zdCBlbXB0eUNhbm9uaWNhbEljb24gPSAoKSA9PiB7XG4gIHJldHVybiB7XG4gICAgcHJlZml4OiBudWxsLFxuICAgIGljb25OYW1lOiBudWxsLFxuICAgIHJlc3Q6IFtdXG4gIH07XG59O1xuZnVuY3Rpb24gZ2V0Q2Fub25pY2FsUHJlZml4KHN0eWxlT3JQcmVmaXgpIHtcbiAgbGV0IHBhcmFtcyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge307XG4gIGNvbnN0IHtcbiAgICBmYW1pbHkgPSBhXG4gIH0gPSBwYXJhbXM7XG4gIGNvbnN0IHN0eWxlID0gUFJFRklYX1RPX1NUWUxFW2ZhbWlseV1bc3R5bGVPclByZWZpeF07XG4gIGNvbnN0IHByZWZpeCA9IFNUWUxFX1RPX1BSRUZJWFtmYW1pbHldW3N0eWxlT3JQcmVmaXhdIHx8IFNUWUxFX1RPX1BSRUZJWFtmYW1pbHldW3N0eWxlXTtcbiAgY29uc3QgZGVmaW5lZCA9IHN0eWxlT3JQcmVmaXggaW4gbmFtZXNwYWNlLnN0eWxlcyA/IHN0eWxlT3JQcmVmaXggOiBudWxsO1xuICBjb25zdCByZXN1bHQgPSBwcmVmaXggfHwgZGVmaW5lZCB8fCBudWxsO1xuICByZXR1cm4gcmVzdWx0O1xufVxuY29uc3QgUFJFRklYRVNfRk9SX0ZBTUlMWSA9IHtcbiAgW2FdOiBPYmplY3Qua2V5cyhQUkVGSVhfVE9fTE9OR19TVFlMRVthXSksXG4gIFtyXTogT2JqZWN0LmtleXMoUFJFRklYX1RPX0xPTkdfU1RZTEVbcl0pLFxuICBbb106IE9iamVjdC5rZXlzKFBSRUZJWF9UT19MT05HX1NUWUxFW29dKVxufTtcbmZ1bmN0aW9uIGdldENhbm9uaWNhbEljb24odmFsdWVzKSB7XG4gIGxldCBwYXJhbXMgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9O1xuICBjb25zdCB7XG4gICAgc2tpcExvb2t1cHMgPSBmYWxzZVxuICB9ID0gcGFyYW1zO1xuICBjb25zdCBmYW1Qcm9wcyA9IHtcbiAgICBbYV06IFwiXCIuY29uY2F0KGNvbmZpZy5jc3NQcmVmaXgsIFwiLVwiKS5jb25jYXQoYSksXG4gICAgW3JdOiBcIlwiLmNvbmNhdChjb25maWcuY3NzUHJlZml4LCBcIi1cIikuY29uY2F0KHIpLFxuICAgIFtvXTogXCJcIi5jb25jYXQoY29uZmlnLmNzc1ByZWZpeCwgXCItXCIpLmNvbmNhdChvKVxuICB9O1xuICBsZXQgZ2l2ZW5QcmVmaXggPSBudWxsO1xuICBsZXQgZmFtaWx5ID0gYTtcbiAgY29uc3Qgbm9uRHVvdG9uZUZhbWlseUlkcyA9IGMuZmlsdGVyKGZhbWlseUlkID0+IGZhbWlseUlkICE9PSB0KTtcbiAgbm9uRHVvdG9uZUZhbWlseUlkcy5mb3JFYWNoKGZhbWlseUlkID0+IHtcbiAgICBpZiAodmFsdWVzLmluY2x1ZGVzKGZhbVByb3BzW2ZhbWlseUlkXSkgfHwgdmFsdWVzLnNvbWUodiQkMSA9PiBQUkVGSVhFU19GT1JfRkFNSUxZW2ZhbWlseUlkXS5pbmNsdWRlcyh2JCQxKSkpIHtcbiAgICAgIGZhbWlseSA9IGZhbWlseUlkO1xuICAgIH1cbiAgfSk7XG4gIGNvbnN0IGNhbm9uaWNhbCA9IHZhbHVlcy5yZWR1Y2UoKGFjYywgY2xzKSA9PiB7XG4gICAgY29uc3QgaWNvbk5hbWUgPSBnZXRJY29uTmFtZShjb25maWcuY3NzUHJlZml4LCBjbHMpO1xuXG4gICAgaWYgKHN0eWxlc1tjbHNdKSB7XG4gICAgICBjbHMgPSBMT05HX1NUWUxFW2ZhbWlseV0uaW5jbHVkZXMoY2xzKSA/IExPTkdfU1RZTEVfVE9fUFJFRklYW2ZhbWlseV1bY2xzXSA6IGNscztcbiAgICAgIGdpdmVuUHJlZml4ID0gY2xzO1xuICAgICAgYWNjLnByZWZpeCA9IGNscztcbiAgICB9IGVsc2UgaWYgKFBSRUZJWEVTW2ZhbWlseV0uaW5kZXhPZihjbHMpID4gLTEpIHtcbiAgICAgIGdpdmVuUHJlZml4ID0gY2xzO1xuICAgICAgYWNjLnByZWZpeCA9IGdldENhbm9uaWNhbFByZWZpeChjbHMsIHtcbiAgICAgICAgZmFtaWx5XG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKGljb25OYW1lKSB7XG4gICAgICBhY2MuaWNvbk5hbWUgPSBpY29uTmFtZTtcbiAgICB9IGVsc2UgaWYgKGNscyAhPT0gY29uZmlnLnJlcGxhY2VtZW50Q2xhc3MgJiYgIW5vbkR1b3RvbmVGYW1pbHlJZHMuc29tZShmYW1pbHlOYW1lID0+IGNscyA9PT0gZmFtUHJvcHNbZmFtaWx5TmFtZV0pKSB7XG4gICAgICBhY2MucmVzdC5wdXNoKGNscyk7XG4gICAgfVxuXG4gICAgaWYgKCFza2lwTG9va3VwcyAmJiBhY2MucHJlZml4ICYmIGFjYy5pY29uTmFtZSkge1xuICAgICAgY29uc3Qgc2hpbSA9IGdpdmVuUHJlZml4ID09PSAnZmEnID8gYnlPbGROYW1lKGFjYy5pY29uTmFtZSkgOiB7fTtcbiAgICAgIGNvbnN0IGFsaWFzSWNvbk5hbWUgPSBieUFsaWFzKGFjYy5wcmVmaXgsIGFjYy5pY29uTmFtZSk7XG5cbiAgICAgIGlmIChzaGltLnByZWZpeCkge1xuICAgICAgICBnaXZlblByZWZpeCA9IG51bGw7XG4gICAgICB9XG5cbiAgICAgIGFjYy5pY29uTmFtZSA9IHNoaW0uaWNvbk5hbWUgfHwgYWxpYXNJY29uTmFtZSB8fCBhY2MuaWNvbk5hbWU7XG4gICAgICBhY2MucHJlZml4ID0gc2hpbS5wcmVmaXggfHwgYWNjLnByZWZpeDtcblxuICAgICAgaWYgKGFjYy5wcmVmaXggPT09ICdmYXInICYmICFzdHlsZXNbJ2ZhciddICYmIHN0eWxlc1snZmFzJ10gJiYgIWNvbmZpZy5hdXRvRmV0Y2hTdmcpIHtcbiAgICAgICAgLy8gQWxsb3cgYSBmYWxsYmFjayBmcm9tIHRoZSByZWd1bGFyIHN0eWxlIHRvIHNvbGlkIGlmIHJlZ3VsYXIgaXMgbm90IGF2YWlsYWJsZVxuICAgICAgICAvLyBidXQgb25seSBpZiB3ZSBhcmVuJ3QgYXV0by1mZXRjaGluZyBTVkdzXG4gICAgICAgIGFjYy5wcmVmaXggPSAnZmFzJztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gYWNjO1xuICB9LCBlbXB0eUNhbm9uaWNhbEljb24oKSk7XG5cbiAgaWYgKHZhbHVlcy5pbmNsdWRlcygnZmEtYnJhbmRzJykgfHwgdmFsdWVzLmluY2x1ZGVzKCdmYWInKSkge1xuICAgIGNhbm9uaWNhbC5wcmVmaXggPSAnZmFiJztcbiAgfVxuXG4gIGlmICh2YWx1ZXMuaW5jbHVkZXMoJ2ZhLWR1b3RvbmUnKSB8fCB2YWx1ZXMuaW5jbHVkZXMoJ2ZhZCcpKSB7XG4gICAgY2Fub25pY2FsLnByZWZpeCA9ICdmYWQnO1xuICB9XG5cbiAgaWYgKCFjYW5vbmljYWwucHJlZml4ICYmIGZhbWlseSA9PT0gciAmJiAoc3R5bGVzWydmYXNzJ10gfHwgY29uZmlnLmF1dG9GZXRjaFN2ZykpIHtcbiAgICBjYW5vbmljYWwucHJlZml4ID0gJ2Zhc3MnO1xuICAgIGNhbm9uaWNhbC5pY29uTmFtZSA9IGJ5QWxpYXMoY2Fub25pY2FsLnByZWZpeCwgY2Fub25pY2FsLmljb25OYW1lKSB8fCBjYW5vbmljYWwuaWNvbk5hbWU7XG4gIH1cblxuICBpZiAoIWNhbm9uaWNhbC5wcmVmaXggJiYgZmFtaWx5ID09PSBvICYmIChzdHlsZXNbJ2Zhc2RzJ10gfHwgY29uZmlnLmF1dG9GZXRjaFN2ZykpIHtcbiAgICBjYW5vbmljYWwucHJlZml4ID0gJ2Zhc2RzJztcbiAgICBjYW5vbmljYWwuaWNvbk5hbWUgPSBieUFsaWFzKGNhbm9uaWNhbC5wcmVmaXgsIGNhbm9uaWNhbC5pY29uTmFtZSkgfHwgY2Fub25pY2FsLmljb25OYW1lO1xuICB9XG5cbiAgaWYgKGNhbm9uaWNhbC5wcmVmaXggPT09ICdmYScgfHwgZ2l2ZW5QcmVmaXggPT09ICdmYScpIHtcbiAgICAvLyBUaGUgZmEgcHJlZml4IGlzIG5vdCBjYW5vbmljYWwuIFNvIGlmIGl0IGhhcyBtYWRlIGl0IHRocm91Z2ggdW50aWwgdGhpcyBwb2ludFxuICAgIC8vIHdlIHdpbGwgc2hpZnQgaXQgdG8gdGhlIGNvcnJlY3QgcHJlZml4LlxuICAgIGNhbm9uaWNhbC5wcmVmaXggPSBnZXREZWZhdWx0VXNhYmxlUHJlZml4KCkgfHwgJ2Zhcyc7XG4gIH1cblxuICByZXR1cm4gY2Fub25pY2FsO1xufVxuXG5jbGFzcyBMaWJyYXJ5IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5kZWZpbml0aW9ucyA9IHt9O1xuICB9XG5cbiAgYWRkKCkge1xuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBkZWZpbml0aW9ucyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGRlZmluaXRpb25zW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cblxuICAgIGNvbnN0IGFkZGl0aW9ucyA9IGRlZmluaXRpb25zLnJlZHVjZSh0aGlzLl9wdWxsRGVmaW5pdGlvbnMsIHt9KTtcbiAgICBPYmplY3Qua2V5cyhhZGRpdGlvbnMpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIHRoaXMuZGVmaW5pdGlvbnNba2V5XSA9IHsgLi4uKHRoaXMuZGVmaW5pdGlvbnNba2V5XSB8fCB7fSksXG4gICAgICAgIC4uLmFkZGl0aW9uc1trZXldXG4gICAgICB9O1xuICAgICAgZGVmaW5lSWNvbnMoa2V5LCBhZGRpdGlvbnNba2V5XSk7IC8vIFRPRE8gY2FuIHdlIHN0b3AgZG9pbmcgdGhpcz8gV2UgY2FuJ3QgZ2V0IHRoZSBpY29ucyBieSAnZmEtc29saWQnIGFueSBsb25nZXIgc28gdGhpcyBwcm9iYWJseSBuZWVkcyB0byBjaGFuZ2VcblxuICAgICAgY29uc3QgbG9uZ1ByZWZpeCA9IFBSRUZJWF9UT19MT05HX1NUWUxFW2FdW2tleV07XG4gICAgICBpZiAobG9uZ1ByZWZpeCkgZGVmaW5lSWNvbnMobG9uZ1ByZWZpeCwgYWRkaXRpb25zW2tleV0pO1xuICAgICAgYnVpbGQoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJlc2V0KCkge1xuICAgIHRoaXMuZGVmaW5pdGlvbnMgPSB7fTtcbiAgfVxuXG4gIF9wdWxsRGVmaW5pdGlvbnMoYWRkaXRpb25zLCBkZWZpbml0aW9uKSB7XG4gICAgY29uc3Qgbm9ybWFsaXplZCA9IGRlZmluaXRpb24ucHJlZml4ICYmIGRlZmluaXRpb24uaWNvbk5hbWUgJiYgZGVmaW5pdGlvbi5pY29uID8ge1xuICAgICAgMDogZGVmaW5pdGlvblxuICAgIH0gOiBkZWZpbml0aW9uO1xuICAgIE9iamVjdC5rZXlzKG5vcm1hbGl6ZWQpLm1hcChrZXkgPT4ge1xuICAgICAgY29uc3Qge1xuICAgICAgICBwcmVmaXgsXG4gICAgICAgIGljb25OYW1lLFxuICAgICAgICBpY29uXG4gICAgICB9ID0gbm9ybWFsaXplZFtrZXldO1xuICAgICAgY29uc3QgYWxpYXNlcyA9IGljb25bMl07XG4gICAgICBpZiAoIWFkZGl0aW9uc1twcmVmaXhdKSBhZGRpdGlvbnNbcHJlZml4XSA9IHt9O1xuXG4gICAgICBpZiAoYWxpYXNlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGFsaWFzZXMuZm9yRWFjaChhbGlhcyA9PiB7XG4gICAgICAgICAgaWYgKHR5cGVvZiBhbGlhcyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGFkZGl0aW9uc1twcmVmaXhdW2FsaWFzXSA9IGljb247XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgYWRkaXRpb25zW3ByZWZpeF1baWNvbk5hbWVdID0gaWNvbjtcbiAgICB9KTtcbiAgICByZXR1cm4gYWRkaXRpb25zO1xuICB9XG5cbn1cblxubGV0IF9wbHVnaW5zID0gW107XG5sZXQgX2hvb2tzID0ge307XG5jb25zdCBwcm92aWRlcnMgPSB7fTtcbmNvbnN0IGRlZmF1bHRQcm92aWRlcktleXMgPSBPYmplY3Qua2V5cyhwcm92aWRlcnMpO1xuZnVuY3Rpb24gcmVnaXN0ZXJQbHVnaW5zKG5leHRQbHVnaW5zLCBfcmVmKSB7XG4gIGxldCB7XG4gICAgbWl4b3V0c1RvOiBvYmpcbiAgfSA9IF9yZWY7XG4gIF9wbHVnaW5zID0gbmV4dFBsdWdpbnM7XG4gIF9ob29rcyA9IHt9O1xuICBPYmplY3Qua2V5cyhwcm92aWRlcnMpLmZvckVhY2goayA9PiB7XG4gICAgaWYgKGRlZmF1bHRQcm92aWRlcktleXMuaW5kZXhPZihrKSA9PT0gLTEpIHtcbiAgICAgIGRlbGV0ZSBwcm92aWRlcnNba107XG4gICAgfVxuICB9KTtcblxuICBfcGx1Z2lucy5mb3JFYWNoKHBsdWdpbiA9PiB7XG4gICAgY29uc3QgbWl4b3V0ID0gcGx1Z2luLm1peG91dCA/IHBsdWdpbi5taXhvdXQoKSA6IHt9O1xuICAgIE9iamVjdC5rZXlzKG1peG91dCkuZm9yRWFjaCh0ayA9PiB7XG4gICAgICBpZiAodHlwZW9mIG1peG91dFt0a10gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgb2JqW3RrXSA9IG1peG91dFt0a107XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgbWl4b3V0W3RrXSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgT2JqZWN0LmtleXMobWl4b3V0W3RrXSkuZm9yRWFjaChzayA9PiB7XG4gICAgICAgICAgaWYgKCFvYmpbdGtdKSB7XG4gICAgICAgICAgICBvYmpbdGtdID0ge307XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgb2JqW3RrXVtza10gPSBtaXhvdXRbdGtdW3NrXTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAocGx1Z2luLmhvb2tzKSB7XG4gICAgICBjb25zdCBob29rcyA9IHBsdWdpbi5ob29rcygpO1xuICAgICAgT2JqZWN0LmtleXMoaG9va3MpLmZvckVhY2goaG9vayA9PiB7XG4gICAgICAgIGlmICghX2hvb2tzW2hvb2tdKSB7XG4gICAgICAgICAgX2hvb2tzW2hvb2tdID0gW107XG4gICAgICAgIH1cblxuICAgICAgICBfaG9va3NbaG9va10ucHVzaChob29rc1tob29rXSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAocGx1Z2luLnByb3ZpZGVzKSB7XG4gICAgICBwbHVnaW4ucHJvdmlkZXMocHJvdmlkZXJzKTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBvYmo7XG59XG5mdW5jdGlvbiBjaGFpbkhvb2tzKGhvb2ssIGFjY3VtdWxhdG9yKSB7XG4gIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4gPiAyID8gX2xlbiAtIDIgOiAwKSwgX2tleSA9IDI7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICBhcmdzW19rZXkgLSAyXSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgfVxuXG4gIGNvbnN0IGhvb2tGbnMgPSBfaG9va3NbaG9va10gfHwgW107XG4gIGhvb2tGbnMuZm9yRWFjaChob29rRm4gPT4ge1xuICAgIGFjY3VtdWxhdG9yID0gaG9va0ZuLmFwcGx5KG51bGwsIFthY2N1bXVsYXRvciwgLi4uYXJnc10pOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVzZWxlc3MtY2FsbFxuICB9KTtcbiAgcmV0dXJuIGFjY3VtdWxhdG9yO1xufVxuZnVuY3Rpb24gY2FsbEhvb2tzKGhvb2spIHtcbiAgZm9yICh2YXIgX2xlbjIgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4yID4gMSA/IF9sZW4yIC0gMSA6IDApLCBfa2V5MiA9IDE7IF9rZXkyIDwgX2xlbjI7IF9rZXkyKyspIHtcbiAgICBhcmdzW19rZXkyIC0gMV0gPSBhcmd1bWVudHNbX2tleTJdO1xuICB9XG5cbiAgY29uc3QgaG9va0ZucyA9IF9ob29rc1tob29rXSB8fCBbXTtcbiAgaG9va0Zucy5mb3JFYWNoKGhvb2tGbiA9PiB7XG4gICAgaG9va0ZuLmFwcGx5KG51bGwsIGFyZ3MpO1xuICB9KTtcbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cbmZ1bmN0aW9uIGNhbGxQcm92aWRlZCgpIHtcbiAgY29uc3QgaG9vayA9IGFyZ3VtZW50c1swXTtcbiAgY29uc3QgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7XG4gIHJldHVybiBwcm92aWRlcnNbaG9va10gPyBwcm92aWRlcnNbaG9va10uYXBwbHkobnVsbCwgYXJncykgOiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGZpbmRJY29uRGVmaW5pdGlvbihpY29uTG9va3VwKSB7XG4gIGlmIChpY29uTG9va3VwLnByZWZpeCA9PT0gJ2ZhJykge1xuICAgIGljb25Mb29rdXAucHJlZml4ID0gJ2Zhcyc7XG4gIH1cblxuICBsZXQge1xuICAgIGljb25OYW1lXG4gIH0gPSBpY29uTG9va3VwO1xuICBjb25zdCBwcmVmaXggPSBpY29uTG9va3VwLnByZWZpeCB8fCBnZXREZWZhdWx0VXNhYmxlUHJlZml4KCk7XG4gIGlmICghaWNvbk5hbWUpIHJldHVybjtcbiAgaWNvbk5hbWUgPSBieUFsaWFzKHByZWZpeCwgaWNvbk5hbWUpIHx8IGljb25OYW1lO1xuICByZXR1cm4gaWNvbkZyb21NYXBwaW5nKGxpYnJhcnkuZGVmaW5pdGlvbnMsIHByZWZpeCwgaWNvbk5hbWUpIHx8IGljb25Gcm9tTWFwcGluZyhuYW1lc3BhY2Uuc3R5bGVzLCBwcmVmaXgsIGljb25OYW1lKTtcbn1cbmNvbnN0IGxpYnJhcnkgPSBuZXcgTGlicmFyeSgpO1xuY29uc3Qgbm9BdXRvID0gKCkgPT4ge1xuICBjb25maWcuYXV0b1JlcGxhY2VTdmcgPSBmYWxzZTtcbiAgY29uZmlnLm9ic2VydmVNdXRhdGlvbnMgPSBmYWxzZTtcbiAgY2FsbEhvb2tzKCdub0F1dG8nKTtcbn07XG5jb25zdCBkb20gPSB7XG4gIGkyc3ZnOiBmdW5jdGlvbiAoKSB7XG4gICAgbGV0IHBhcmFtcyA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDoge307XG5cbiAgICBpZiAoSVNfRE9NKSB7XG4gICAgICBjYWxsSG9va3MoJ2JlZm9yZUkyc3ZnJywgcGFyYW1zKTtcbiAgICAgIGNhbGxQcm92aWRlZCgncHNldWRvRWxlbWVudHMyc3ZnJywgcGFyYW1zKTtcbiAgICAgIHJldHVybiBjYWxsUHJvdmlkZWQoJ2kyc3ZnJywgcGFyYW1zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcignT3BlcmF0aW9uIHJlcXVpcmVzIGEgRE9NIG9mIHNvbWUga2luZC4nKSk7XG4gICAgfVxuICB9LFxuICB3YXRjaDogZnVuY3Rpb24gKCkge1xuICAgIGxldCBwYXJhbXMgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IHt9O1xuICAgIGNvbnN0IHtcbiAgICAgIGF1dG9SZXBsYWNlU3ZnUm9vdFxuICAgIH0gPSBwYXJhbXM7XG5cbiAgICBpZiAoY29uZmlnLmF1dG9SZXBsYWNlU3ZnID09PSBmYWxzZSkge1xuICAgICAgY29uZmlnLmF1dG9SZXBsYWNlU3ZnID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBjb25maWcub2JzZXJ2ZU11dGF0aW9ucyA9IHRydWU7XG4gICAgZG9tcmVhZHkoKCkgPT4ge1xuICAgICAgYXV0b1JlcGxhY2Uoe1xuICAgICAgICBhdXRvUmVwbGFjZVN2Z1Jvb3RcbiAgICAgIH0pO1xuICAgICAgY2FsbEhvb2tzKCd3YXRjaCcsIHBhcmFtcyk7XG4gICAgfSk7XG4gIH1cbn07XG5jb25zdCBwYXJzZSA9IHtcbiAgaWNvbjogaWNvbiA9PiB7XG4gICAgaWYgKGljb24gPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgaWNvbiA9PT0gJ29iamVjdCcgJiYgaWNvbi5wcmVmaXggJiYgaWNvbi5pY29uTmFtZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcHJlZml4OiBpY29uLnByZWZpeCxcbiAgICAgICAgaWNvbk5hbWU6IGJ5QWxpYXMoaWNvbi5wcmVmaXgsIGljb24uaWNvbk5hbWUpIHx8IGljb24uaWNvbk5hbWVcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoaWNvbikgJiYgaWNvbi5sZW5ndGggPT09IDIpIHtcbiAgICAgIGNvbnN0IGljb25OYW1lID0gaWNvblsxXS5pbmRleE9mKCdmYS0nKSA9PT0gMCA/IGljb25bMV0uc2xpY2UoMykgOiBpY29uWzFdO1xuICAgICAgY29uc3QgcHJlZml4ID0gZ2V0Q2Fub25pY2FsUHJlZml4KGljb25bMF0pO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcHJlZml4LFxuICAgICAgICBpY29uTmFtZTogYnlBbGlhcyhwcmVmaXgsIGljb25OYW1lKSB8fCBpY29uTmFtZVxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGljb24gPT09ICdzdHJpbmcnICYmIChpY29uLmluZGV4T2YoXCJcIi5jb25jYXQoY29uZmlnLmNzc1ByZWZpeCwgXCItXCIpKSA+IC0xIHx8IGljb24ubWF0Y2goSUNPTl9TRUxFQ1RJT05fU1lOVEFYX1BBVFRFUk4pKSkge1xuICAgICAgY29uc3QgY2Fub25pY2FsSWNvbiA9IGdldENhbm9uaWNhbEljb24oaWNvbi5zcGxpdCgnICcpLCB7XG4gICAgICAgIHNraXBMb29rdXBzOiB0cnVlXG4gICAgICB9KTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHByZWZpeDogY2Fub25pY2FsSWNvbi5wcmVmaXggfHwgZ2V0RGVmYXVsdFVzYWJsZVByZWZpeCgpLFxuICAgICAgICBpY29uTmFtZTogYnlBbGlhcyhjYW5vbmljYWxJY29uLnByZWZpeCwgY2Fub25pY2FsSWNvbi5pY29uTmFtZSkgfHwgY2Fub25pY2FsSWNvbi5pY29uTmFtZVxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGljb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICBjb25zdCBwcmVmaXggPSBnZXREZWZhdWx0VXNhYmxlUHJlZml4KCk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwcmVmaXgsXG4gICAgICAgIGljb25OYW1lOiBieUFsaWFzKHByZWZpeCwgaWNvbikgfHwgaWNvblxuICAgICAgfTtcbiAgICB9XG4gIH1cbn07XG5jb25zdCBhcGkgPSB7XG4gIG5vQXV0byxcbiAgY29uZmlnLFxuICBkb20sXG4gIHBhcnNlLFxuICBsaWJyYXJ5LFxuICBmaW5kSWNvbkRlZmluaXRpb24sXG4gIHRvSHRtbFxufTtcblxuY29uc3QgYXV0b1JlcGxhY2UgPSBmdW5jdGlvbiAoKSB7XG4gIGxldCBwYXJhbXMgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IHt9O1xuICBjb25zdCB7XG4gICAgYXV0b1JlcGxhY2VTdmdSb290ID0gRE9DVU1FTlRcbiAgfSA9IHBhcmFtcztcbiAgaWYgKChPYmplY3Qua2V5cyhuYW1lc3BhY2Uuc3R5bGVzKS5sZW5ndGggPiAwIHx8IGNvbmZpZy5hdXRvRmV0Y2hTdmcpICYmIElTX0RPTSAmJiBjb25maWcuYXV0b1JlcGxhY2VTdmcpIGFwaS5kb20uaTJzdmcoe1xuICAgIG5vZGU6IGF1dG9SZXBsYWNlU3ZnUm9vdFxuICB9KTtcbn07XG5cbmZ1bmN0aW9uIGRvbVZhcmlhbnRzKHZhbCwgYWJzdHJhY3RDcmVhdG9yKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh2YWwsICdhYnN0cmFjdCcsIHtcbiAgICBnZXQ6IGFic3RyYWN0Q3JlYXRvclxuICB9KTtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHZhbCwgJ2h0bWwnLCB7XG4gICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gdmFsLmFic3RyYWN0Lm1hcChhID0+IHRvSHRtbChhKSk7XG4gICAgfVxuICB9KTtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHZhbCwgJ25vZGUnLCB7XG4gICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoIUlTX0RPTSkgcmV0dXJuO1xuICAgICAgY29uc3QgY29udGFpbmVyID0gRE9DVU1FTlQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICBjb250YWluZXIuaW5uZXJIVE1MID0gdmFsLmh0bWw7XG4gICAgICByZXR1cm4gY29udGFpbmVyLmNoaWxkcmVuO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiB2YWw7XG59XG5cbmZ1bmN0aW9uIGFzSWNvbiAoX3JlZikge1xuICBsZXQge1xuICAgIGNoaWxkcmVuLFxuICAgIG1haW4sXG4gICAgbWFzayxcbiAgICBhdHRyaWJ1dGVzLFxuICAgIHN0eWxlcyxcbiAgICB0cmFuc2Zvcm1cbiAgfSA9IF9yZWY7XG5cbiAgaWYgKHRyYW5zZm9ybUlzTWVhbmluZ2Z1bCh0cmFuc2Zvcm0pICYmIG1haW4uZm91bmQgJiYgIW1hc2suZm91bmQpIHtcbiAgICBjb25zdCB7XG4gICAgICB3aWR0aCxcbiAgICAgIGhlaWdodFxuICAgIH0gPSBtYWluO1xuICAgIGNvbnN0IG9mZnNldCA9IHtcbiAgICAgIHg6IHdpZHRoIC8gaGVpZ2h0IC8gMixcbiAgICAgIHk6IDAuNVxuICAgIH07XG4gICAgYXR0cmlidXRlc1snc3R5bGUnXSA9IGpvaW5TdHlsZXMoeyAuLi5zdHlsZXMsXG4gICAgICAndHJhbnNmb3JtLW9yaWdpbic6IFwiXCIuY29uY2F0KG9mZnNldC54ICsgdHJhbnNmb3JtLnggLyAxNiwgXCJlbSBcIikuY29uY2F0KG9mZnNldC55ICsgdHJhbnNmb3JtLnkgLyAxNiwgXCJlbVwiKVxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIFt7XG4gICAgdGFnOiAnc3ZnJyxcbiAgICBhdHRyaWJ1dGVzLFxuICAgIGNoaWxkcmVuXG4gIH1dO1xufVxuXG5mdW5jdGlvbiBhc1N5bWJvbCAoX3JlZikge1xuICBsZXQge1xuICAgIHByZWZpeCxcbiAgICBpY29uTmFtZSxcbiAgICBjaGlsZHJlbixcbiAgICBhdHRyaWJ1dGVzLFxuICAgIHN5bWJvbFxuICB9ID0gX3JlZjtcbiAgY29uc3QgaWQgPSBzeW1ib2wgPT09IHRydWUgPyBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLVwiKS5jb25jYXQoY29uZmlnLmNzc1ByZWZpeCwgXCItXCIpLmNvbmNhdChpY29uTmFtZSkgOiBzeW1ib2w7XG4gIHJldHVybiBbe1xuICAgIHRhZzogJ3N2ZycsXG4gICAgYXR0cmlidXRlczoge1xuICAgICAgc3R5bGU6ICdkaXNwbGF5OiBub25lOydcbiAgICB9LFxuICAgIGNoaWxkcmVuOiBbe1xuICAgICAgdGFnOiAnc3ltYm9sJyxcbiAgICAgIGF0dHJpYnV0ZXM6IHsgLi4uYXR0cmlidXRlcyxcbiAgICAgICAgaWRcbiAgICAgIH0sXG4gICAgICBjaGlsZHJlblxuICAgIH1dXG4gIH1dO1xufVxuXG5mdW5jdGlvbiBtYWtlSW5saW5lU3ZnQWJzdHJhY3QocGFyYW1zKSB7XG4gIGNvbnN0IHtcbiAgICBpY29uczoge1xuICAgICAgbWFpbixcbiAgICAgIG1hc2tcbiAgICB9LFxuICAgIHByZWZpeCxcbiAgICBpY29uTmFtZSxcbiAgICB0cmFuc2Zvcm0sXG4gICAgc3ltYm9sLFxuICAgIHRpdGxlLFxuICAgIG1hc2tJZCxcbiAgICB0aXRsZUlkLFxuICAgIGV4dHJhLFxuICAgIHdhdGNoYWJsZSA9IGZhbHNlXG4gIH0gPSBwYXJhbXM7XG4gIGNvbnN0IHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHRcbiAgfSA9IG1hc2suZm91bmQgPyBtYXNrIDogbWFpbjtcbiAgY29uc3QgaXNVcGxvYWRlZEljb24gPSBwcmVmaXggPT09ICdmYWsnO1xuICBjb25zdCBhdHRyQ2xhc3MgPSBbY29uZmlnLnJlcGxhY2VtZW50Q2xhc3MsIGljb25OYW1lID8gXCJcIi5jb25jYXQoY29uZmlnLmNzc1ByZWZpeCwgXCItXCIpLmNvbmNhdChpY29uTmFtZSkgOiAnJ10uZmlsdGVyKGMgPT4gZXh0cmEuY2xhc3Nlcy5pbmRleE9mKGMpID09PSAtMSkuZmlsdGVyKGMgPT4gYyAhPT0gJycgfHwgISFjKS5jb25jYXQoZXh0cmEuY2xhc3Nlcykuam9pbignICcpO1xuICBsZXQgY29udGVudCA9IHtcbiAgICBjaGlsZHJlbjogW10sXG4gICAgYXR0cmlidXRlczogeyAuLi5leHRyYS5hdHRyaWJ1dGVzLFxuICAgICAgJ2RhdGEtcHJlZml4JzogcHJlZml4LFxuICAgICAgJ2RhdGEtaWNvbic6IGljb25OYW1lLFxuICAgICAgJ2NsYXNzJzogYXR0ckNsYXNzLFxuICAgICAgJ3JvbGUnOiBleHRyYS5hdHRyaWJ1dGVzLnJvbGUgfHwgJ2ltZycsXG4gICAgICAneG1sbnMnOiAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnLFxuICAgICAgJ3ZpZXdCb3gnOiBcIjAgMCBcIi5jb25jYXQod2lkdGgsIFwiIFwiKS5jb25jYXQoaGVpZ2h0KVxuICAgIH1cbiAgfTtcbiAgY29uc3QgdXBsb2FkZWRJY29uV2lkdGhTdHlsZSA9IGlzVXBsb2FkZWRJY29uICYmICF+ZXh0cmEuY2xhc3Nlcy5pbmRleE9mKCdmYS1mdycpID8ge1xuICAgIHdpZHRoOiBcIlwiLmNvbmNhdCh3aWR0aCAvIGhlaWdodCAqIDE2ICogMC4wNjI1LCBcImVtXCIpXG4gIH0gOiB7fTtcblxuICBpZiAod2F0Y2hhYmxlKSB7XG4gICAgY29udGVudC5hdHRyaWJ1dGVzW0RBVEFfRkFfSTJTVkddID0gJyc7XG4gIH1cblxuICBpZiAodGl0bGUpIHtcbiAgICBjb250ZW50LmNoaWxkcmVuLnB1c2goe1xuICAgICAgdGFnOiAndGl0bGUnLFxuICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICBpZDogY29udGVudC5hdHRyaWJ1dGVzWydhcmlhLWxhYmVsbGVkYnknXSB8fCBcInRpdGxlLVwiLmNvbmNhdCh0aXRsZUlkIHx8IG5leHRVbmlxdWVJZCgpKVxuICAgICAgfSxcbiAgICAgIGNoaWxkcmVuOiBbdGl0bGVdXG4gICAgfSk7XG4gICAgZGVsZXRlIGNvbnRlbnQuYXR0cmlidXRlcy50aXRsZTtcbiAgfVxuXG4gIGNvbnN0IGFyZ3MgPSB7IC4uLmNvbnRlbnQsXG4gICAgcHJlZml4LFxuICAgIGljb25OYW1lLFxuICAgIG1haW4sXG4gICAgbWFzayxcbiAgICBtYXNrSWQsXG4gICAgdHJhbnNmb3JtLFxuICAgIHN5bWJvbCxcbiAgICBzdHlsZXM6IHsgLi4udXBsb2FkZWRJY29uV2lkdGhTdHlsZSxcbiAgICAgIC4uLmV4dHJhLnN0eWxlc1xuICAgIH1cbiAgfTtcbiAgY29uc3Qge1xuICAgIGNoaWxkcmVuLFxuICAgIGF0dHJpYnV0ZXNcbiAgfSA9IG1hc2suZm91bmQgJiYgbWFpbi5mb3VuZCA/IGNhbGxQcm92aWRlZCgnZ2VuZXJhdGVBYnN0cmFjdE1hc2snLCBhcmdzKSB8fCB7XG4gICAgY2hpbGRyZW46IFtdLFxuICAgIGF0dHJpYnV0ZXM6IHt9XG4gIH0gOiBjYWxsUHJvdmlkZWQoJ2dlbmVyYXRlQWJzdHJhY3RJY29uJywgYXJncykgfHwge1xuICAgIGNoaWxkcmVuOiBbXSxcbiAgICBhdHRyaWJ1dGVzOiB7fVxuICB9O1xuICBhcmdzLmNoaWxkcmVuID0gY2hpbGRyZW47XG4gIGFyZ3MuYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXM7XG5cbiAgaWYgKHN5bWJvbCkge1xuICAgIHJldHVybiBhc1N5bWJvbChhcmdzKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gYXNJY29uKGFyZ3MpO1xuICB9XG59XG5mdW5jdGlvbiBtYWtlTGF5ZXJzVGV4dEFic3RyYWN0KHBhcmFtcykge1xuICBjb25zdCB7XG4gICAgY29udGVudCxcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgdHJhbnNmb3JtLFxuICAgIHRpdGxlLFxuICAgIGV4dHJhLFxuICAgIHdhdGNoYWJsZSA9IGZhbHNlXG4gIH0gPSBwYXJhbXM7XG4gIGNvbnN0IGF0dHJpYnV0ZXMgPSB7IC4uLmV4dHJhLmF0dHJpYnV0ZXMsXG4gICAgLi4uKHRpdGxlID8ge1xuICAgICAgJ3RpdGxlJzogdGl0bGVcbiAgICB9IDoge30pLFxuICAgICdjbGFzcyc6IGV4dHJhLmNsYXNzZXMuam9pbignICcpXG4gIH07XG5cbiAgaWYgKHdhdGNoYWJsZSkge1xuICAgIGF0dHJpYnV0ZXNbREFUQV9GQV9JMlNWR10gPSAnJztcbiAgfVxuXG4gIGNvbnN0IHN0eWxlcyA9IHsgLi4uZXh0cmEuc3R5bGVzXG4gIH07XG5cbiAgaWYgKHRyYW5zZm9ybUlzTWVhbmluZ2Z1bCh0cmFuc2Zvcm0pKSB7XG4gICAgc3R5bGVzWyd0cmFuc2Zvcm0nXSA9IHRyYW5zZm9ybUZvckNzcyh7XG4gICAgICB0cmFuc2Zvcm0sXG4gICAgICBzdGFydENlbnRlcmVkOiB0cnVlLFxuICAgICAgd2lkdGgsXG4gICAgICBoZWlnaHRcbiAgICB9KTtcbiAgICBzdHlsZXNbJy13ZWJraXQtdHJhbnNmb3JtJ10gPSBzdHlsZXNbJ3RyYW5zZm9ybSddO1xuICB9XG5cbiAgY29uc3Qgc3R5bGVTdHJpbmcgPSBqb2luU3R5bGVzKHN0eWxlcyk7XG5cbiAgaWYgKHN0eWxlU3RyaW5nLmxlbmd0aCA+IDApIHtcbiAgICBhdHRyaWJ1dGVzWydzdHlsZSddID0gc3R5bGVTdHJpbmc7XG4gIH1cblxuICBjb25zdCB2YWwgPSBbXTtcbiAgdmFsLnB1c2goe1xuICAgIHRhZzogJ3NwYW4nLFxuICAgIGF0dHJpYnV0ZXMsXG4gICAgY2hpbGRyZW46IFtjb250ZW50XVxuICB9KTtcblxuICBpZiAodGl0bGUpIHtcbiAgICB2YWwucHVzaCh7XG4gICAgICB0YWc6ICdzcGFuJyxcbiAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgY2xhc3M6ICdzci1vbmx5J1xuICAgICAgfSxcbiAgICAgIGNoaWxkcmVuOiBbdGl0bGVdXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gdmFsO1xufVxuZnVuY3Rpb24gbWFrZUxheWVyc0NvdW50ZXJBYnN0cmFjdChwYXJhbXMpIHtcbiAgY29uc3Qge1xuICAgIGNvbnRlbnQsXG4gICAgdGl0bGUsXG4gICAgZXh0cmFcbiAgfSA9IHBhcmFtcztcbiAgY29uc3QgYXR0cmlidXRlcyA9IHsgLi4uZXh0cmEuYXR0cmlidXRlcyxcbiAgICAuLi4odGl0bGUgPyB7XG4gICAgICAndGl0bGUnOiB0aXRsZVxuICAgIH0gOiB7fSksXG4gICAgJ2NsYXNzJzogZXh0cmEuY2xhc3Nlcy5qb2luKCcgJylcbiAgfTtcbiAgY29uc3Qgc3R5bGVTdHJpbmcgPSBqb2luU3R5bGVzKGV4dHJhLnN0eWxlcyk7XG5cbiAgaWYgKHN0eWxlU3RyaW5nLmxlbmd0aCA+IDApIHtcbiAgICBhdHRyaWJ1dGVzWydzdHlsZSddID0gc3R5bGVTdHJpbmc7XG4gIH1cblxuICBjb25zdCB2YWwgPSBbXTtcbiAgdmFsLnB1c2goe1xuICAgIHRhZzogJ3NwYW4nLFxuICAgIGF0dHJpYnV0ZXMsXG4gICAgY2hpbGRyZW46IFtjb250ZW50XVxuICB9KTtcblxuICBpZiAodGl0bGUpIHtcbiAgICB2YWwucHVzaCh7XG4gICAgICB0YWc6ICdzcGFuJyxcbiAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgY2xhc3M6ICdzci1vbmx5J1xuICAgICAgfSxcbiAgICAgIGNoaWxkcmVuOiBbdGl0bGVdXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gdmFsO1xufVxuXG5jb25zdCB7XG4gIHN0eWxlczogc3R5bGVzJDFcbn0gPSBuYW1lc3BhY2U7XG5mdW5jdGlvbiBhc0ZvdW5kSWNvbihpY29uKSB7XG4gIGNvbnN0IHdpZHRoID0gaWNvblswXTtcbiAgY29uc3QgaGVpZ2h0ID0gaWNvblsxXTtcbiAgY29uc3QgW3ZlY3RvckRhdGFdID0gaWNvbi5zbGljZSg0KTtcbiAgbGV0IGVsZW1lbnQgPSBudWxsO1xuXG4gIGlmIChBcnJheS5pc0FycmF5KHZlY3RvckRhdGEpKSB7XG4gICAgZWxlbWVudCA9IHtcbiAgICAgIHRhZzogJ2cnLFxuICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICBjbGFzczogXCJcIi5jb25jYXQoY29uZmlnLmNzc1ByZWZpeCwgXCItXCIpLmNvbmNhdChEVU9UT05FX0NMQVNTRVMuR1JPVVApXG4gICAgICB9LFxuICAgICAgY2hpbGRyZW46IFt7XG4gICAgICAgIHRhZzogJ3BhdGgnLFxuICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgY2xhc3M6IFwiXCIuY29uY2F0KGNvbmZpZy5jc3NQcmVmaXgsIFwiLVwiKS5jb25jYXQoRFVPVE9ORV9DTEFTU0VTLlNFQ09OREFSWSksXG4gICAgICAgICAgZmlsbDogJ2N1cnJlbnRDb2xvcicsXG4gICAgICAgICAgZDogdmVjdG9yRGF0YVswXVxuICAgICAgICB9XG4gICAgICB9LCB7XG4gICAgICAgIHRhZzogJ3BhdGgnLFxuICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgY2xhc3M6IFwiXCIuY29uY2F0KGNvbmZpZy5jc3NQcmVmaXgsIFwiLVwiKS5jb25jYXQoRFVPVE9ORV9DTEFTU0VTLlBSSU1BUlkpLFxuICAgICAgICAgIGZpbGw6ICdjdXJyZW50Q29sb3InLFxuICAgICAgICAgIGQ6IHZlY3RvckRhdGFbMV1cbiAgICAgICAgfVxuICAgICAgfV1cbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIGVsZW1lbnQgPSB7XG4gICAgICB0YWc6ICdwYXRoJyxcbiAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgZmlsbDogJ2N1cnJlbnRDb2xvcicsXG4gICAgICAgIGQ6IHZlY3RvckRhdGFcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBmb3VuZDogdHJ1ZSxcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgaWNvbjogZWxlbWVudFxuICB9O1xufVxuY29uc3QgbWlzc2luZ0ljb25SZXNvbHV0aW9uTWl4aW4gPSB7XG4gIGZvdW5kOiBmYWxzZSxcbiAgd2lkdGg6IDUxMixcbiAgaGVpZ2h0OiA1MTJcbn07XG5cbmZ1bmN0aW9uIG1heWJlTm90aWZ5TWlzc2luZyhpY29uTmFtZSwgcHJlZml4KSB7XG4gIGlmICghUFJPRFVDVElPTiAmJiAhY29uZmlnLnNob3dNaXNzaW5nSWNvbnMgJiYgaWNvbk5hbWUpIHtcbiAgICBjb25zb2xlLmVycm9yKFwiSWNvbiB3aXRoIG5hbWUgXFxcIlwiLmNvbmNhdChpY29uTmFtZSwgXCJcXFwiIGFuZCBwcmVmaXggXFxcIlwiKS5jb25jYXQocHJlZml4LCBcIlxcXCIgaXMgbWlzc2luZy5cIikpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGZpbmRJY29uKGljb25OYW1lLCBwcmVmaXgpIHtcbiAgbGV0IGdpdmVuUHJlZml4ID0gcHJlZml4O1xuXG4gIGlmIChwcmVmaXggPT09ICdmYScgJiYgY29uZmlnLnN0eWxlRGVmYXVsdCAhPT0gbnVsbCkge1xuICAgIHByZWZpeCA9IGdldERlZmF1bHRVc2FibGVQcmVmaXgoKTtcbiAgfVxuXG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgaWYgKGdpdmVuUHJlZml4ID09PSAnZmEnKSB7XG4gICAgICBjb25zdCBzaGltID0gYnlPbGROYW1lKGljb25OYW1lKSB8fCB7fTtcbiAgICAgIGljb25OYW1lID0gc2hpbS5pY29uTmFtZSB8fCBpY29uTmFtZTtcbiAgICAgIHByZWZpeCA9IHNoaW0ucHJlZml4IHx8IHByZWZpeDtcbiAgICB9XG5cbiAgICBpZiAoaWNvbk5hbWUgJiYgcHJlZml4ICYmIHN0eWxlcyQxW3ByZWZpeF0gJiYgc3R5bGVzJDFbcHJlZml4XVtpY29uTmFtZV0pIHtcbiAgICAgIGNvbnN0IGljb24gPSBzdHlsZXMkMVtwcmVmaXhdW2ljb25OYW1lXTtcbiAgICAgIHJldHVybiByZXNvbHZlKGFzRm91bmRJY29uKGljb24pKTtcbiAgICB9XG5cbiAgICBtYXliZU5vdGlmeU1pc3NpbmcoaWNvbk5hbWUsIHByZWZpeCk7XG4gICAgcmVzb2x2ZSh7IC4uLm1pc3NpbmdJY29uUmVzb2x1dGlvbk1peGluLFxuICAgICAgaWNvbjogY29uZmlnLnNob3dNaXNzaW5nSWNvbnMgJiYgaWNvbk5hbWUgPyBjYWxsUHJvdmlkZWQoJ21pc3NpbmdJY29uQWJzdHJhY3QnKSB8fCB7fSA6IHt9XG4gICAgfSk7XG4gIH0pO1xufVxuXG5jb25zdCBub29wJDEgPSAoKSA9PiB7fTtcblxuY29uc3QgcCQyID0gY29uZmlnLm1lYXN1cmVQZXJmb3JtYW5jZSAmJiBQRVJGT1JNQU5DRSAmJiBQRVJGT1JNQU5DRS5tYXJrICYmIFBFUkZPUk1BTkNFLm1lYXN1cmUgPyBQRVJGT1JNQU5DRSA6IHtcbiAgbWFyazogbm9vcCQxLFxuICBtZWFzdXJlOiBub29wJDFcbn07XG5jb25zdCBwcmVhbWJsZSA9IFwiRkEgXFxcIjYuNi4wXFxcIlwiO1xuXG5jb25zdCBiZWdpbiA9IG5hbWUgPT4ge1xuICBwJDIubWFyayhcIlwiLmNvbmNhdChwcmVhbWJsZSwgXCIgXCIpLmNvbmNhdChuYW1lLCBcIiBiZWdpbnNcIikpO1xuICByZXR1cm4gKCkgPT4gZW5kKG5hbWUpO1xufTtcblxuY29uc3QgZW5kID0gbmFtZSA9PiB7XG4gIHAkMi5tYXJrKFwiXCIuY29uY2F0KHByZWFtYmxlLCBcIiBcIikuY29uY2F0KG5hbWUsIFwiIGVuZHNcIikpO1xuICBwJDIubWVhc3VyZShcIlwiLmNvbmNhdChwcmVhbWJsZSwgXCIgXCIpLmNvbmNhdChuYW1lKSwgXCJcIi5jb25jYXQocHJlYW1ibGUsIFwiIFwiKS5jb25jYXQobmFtZSwgXCIgYmVnaW5zXCIpLCBcIlwiLmNvbmNhdChwcmVhbWJsZSwgXCIgXCIpLmNvbmNhdChuYW1lLCBcIiBlbmRzXCIpKTtcbn07XG5cbnZhciBwZXJmID0ge1xuICBiZWdpbixcbiAgZW5kXG59O1xuXG5jb25zdCBub29wJDIgPSAoKSA9PiB7fTtcblxuZnVuY3Rpb24gaXNXYXRjaGVkKG5vZGUpIHtcbiAgY29uc3QgaTJzdmcgPSBub2RlLmdldEF0dHJpYnV0ZSA/IG5vZGUuZ2V0QXR0cmlidXRlKERBVEFfRkFfSTJTVkcpIDogbnVsbDtcbiAgcmV0dXJuIHR5cGVvZiBpMnN2ZyA9PT0gJ3N0cmluZyc7XG59XG5cbmZ1bmN0aW9uIGhhc1ByZWZpeEFuZEljb24obm9kZSkge1xuICBjb25zdCBwcmVmaXggPSBub2RlLmdldEF0dHJpYnV0ZSA/IG5vZGUuZ2V0QXR0cmlidXRlKERBVEFfUFJFRklYKSA6IG51bGw7XG4gIGNvbnN0IGljb24gPSBub2RlLmdldEF0dHJpYnV0ZSA/IG5vZGUuZ2V0QXR0cmlidXRlKERBVEFfSUNPTikgOiBudWxsO1xuICByZXR1cm4gcHJlZml4ICYmIGljb247XG59XG5cbmZ1bmN0aW9uIGhhc0JlZW5SZXBsYWNlZChub2RlKSB7XG4gIHJldHVybiBub2RlICYmIG5vZGUuY2xhc3NMaXN0ICYmIG5vZGUuY2xhc3NMaXN0LmNvbnRhaW5zICYmIG5vZGUuY2xhc3NMaXN0LmNvbnRhaW5zKGNvbmZpZy5yZXBsYWNlbWVudENsYXNzKTtcbn1cblxuZnVuY3Rpb24gZ2V0TXV0YXRvcigpIHtcbiAgaWYgKGNvbmZpZy5hdXRvUmVwbGFjZVN2ZyA9PT0gdHJ1ZSkge1xuICAgIHJldHVybiBtdXRhdG9ycy5yZXBsYWNlO1xuICB9XG5cbiAgY29uc3QgbXV0YXRvciA9IG11dGF0b3JzW2NvbmZpZy5hdXRvUmVwbGFjZVN2Z107XG4gIHJldHVybiBtdXRhdG9yIHx8IG11dGF0b3JzLnJlcGxhY2U7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnROUyh0YWcpIHtcbiAgcmV0dXJuIERPQ1VNRU5ULmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnLCB0YWcpO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVFbGVtZW50KHRhZykge1xuICByZXR1cm4gRE9DVU1FTlQuY3JlYXRlRWxlbWVudCh0YWcpO1xufVxuXG5mdW5jdGlvbiBjb252ZXJ0U1ZHKGFic3RyYWN0T2JqKSB7XG4gIGxldCBwYXJhbXMgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9O1xuICBjb25zdCB7XG4gICAgY2VGbiA9IGFic3RyYWN0T2JqLnRhZyA9PT0gJ3N2ZycgPyBjcmVhdGVFbGVtZW50TlMgOiBjcmVhdGVFbGVtZW50XG4gIH0gPSBwYXJhbXM7XG5cbiAgaWYgKHR5cGVvZiBhYnN0cmFjdE9iaiA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gRE9DVU1FTlQuY3JlYXRlVGV4dE5vZGUoYWJzdHJhY3RPYmopO1xuICB9XG5cbiAgY29uc3QgdGFnID0gY2VGbihhYnN0cmFjdE9iai50YWcpO1xuICBPYmplY3Qua2V5cyhhYnN0cmFjdE9iai5hdHRyaWJ1dGVzIHx8IFtdKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICB0YWcuc2V0QXR0cmlidXRlKGtleSwgYWJzdHJhY3RPYmouYXR0cmlidXRlc1trZXldKTtcbiAgfSk7XG4gIGNvbnN0IGNoaWxkcmVuID0gYWJzdHJhY3RPYmouY2hpbGRyZW4gfHwgW107XG4gIGNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgdGFnLmFwcGVuZENoaWxkKGNvbnZlcnRTVkcoY2hpbGQsIHtcbiAgICAgIGNlRm5cbiAgICB9KSk7XG4gIH0pO1xuICByZXR1cm4gdGFnO1xufVxuXG5mdW5jdGlvbiBub2RlQXNDb21tZW50KG5vZGUpIHtcbiAgbGV0IGNvbW1lbnQgPSBcIiBcIi5jb25jYXQobm9kZS5vdXRlckhUTUwsIFwiIFwiKTtcbiAgLyogQkVHSU4uQVRUUklCVVRJT04gKi9cblxuICBjb21tZW50ID0gXCJcIi5jb25jYXQoY29tbWVudCwgXCJGb250IEF3ZXNvbWUgZm9udGF3ZXNvbWUuY29tIFwiKTtcbiAgLyogRU5ELkFUVFJJQlVUSU9OICovXG5cbiAgcmV0dXJuIGNvbW1lbnQ7XG59XG5cbmNvbnN0IG11dGF0b3JzID0ge1xuICByZXBsYWNlOiBmdW5jdGlvbiAobXV0YXRpb24pIHtcbiAgICBjb25zdCBub2RlID0gbXV0YXRpb25bMF07XG5cbiAgICBpZiAobm9kZS5wYXJlbnROb2RlKSB7XG4gICAgICBtdXRhdGlvblsxXS5mb3JFYWNoKGFic3RyYWN0ID0+IHtcbiAgICAgICAgbm9kZS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShjb252ZXJ0U1ZHKGFic3RyYWN0KSwgbm9kZSk7XG4gICAgICB9KTtcblxuICAgICAgaWYgKG5vZGUuZ2V0QXR0cmlidXRlKERBVEFfRkFfSTJTVkcpID09PSBudWxsICYmIGNvbmZpZy5rZWVwT3JpZ2luYWxTb3VyY2UpIHtcbiAgICAgICAgbGV0IGNvbW1lbnQgPSBET0NVTUVOVC5jcmVhdGVDb21tZW50KG5vZGVBc0NvbW1lbnQobm9kZSkpO1xuICAgICAgICBub2RlLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKGNvbW1lbnQsIG5vZGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbm9kZS5yZW1vdmUoKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIG5lc3Q6IGZ1bmN0aW9uIChtdXRhdGlvbikge1xuICAgIGNvbnN0IG5vZGUgPSBtdXRhdGlvblswXTtcbiAgICBjb25zdCBhYnN0cmFjdCA9IG11dGF0aW9uWzFdOyAvLyBJZiB3ZSBhbHJlYWR5IGhhdmUgYSByZXBsYWNlZCBub2RlIHdlIGRvIG5vdCB3YW50IHRvIGNvbnRpbnVlIG5lc3Rpbmcgd2l0aGluIGl0LlxuICAgIC8vIFNob3J0LWNpcmN1aXQgdG8gdGhlIHN0YW5kYXJkIHJlcGxhY2VtZW50XG5cbiAgICBpZiAofmNsYXNzQXJyYXkobm9kZSkuaW5kZXhPZihjb25maWcucmVwbGFjZW1lbnRDbGFzcykpIHtcbiAgICAgIHJldHVybiBtdXRhdG9ycy5yZXBsYWNlKG11dGF0aW9uKTtcbiAgICB9XG5cbiAgICBjb25zdCBmb3JTdmcgPSBuZXcgUmVnRXhwKFwiXCIuY29uY2F0KGNvbmZpZy5jc3NQcmVmaXgsIFwiLS4qXCIpKTtcbiAgICBkZWxldGUgYWJzdHJhY3RbMF0uYXR0cmlidXRlcy5pZDtcblxuICAgIGlmIChhYnN0cmFjdFswXS5hdHRyaWJ1dGVzLmNsYXNzKSB7XG4gICAgICBjb25zdCBzcGxpdENsYXNzZXMgPSBhYnN0cmFjdFswXS5hdHRyaWJ1dGVzLmNsYXNzLnNwbGl0KCcgJykucmVkdWNlKChhY2MsIGNscykgPT4ge1xuICAgICAgICBpZiAoY2xzID09PSBjb25maWcucmVwbGFjZW1lbnRDbGFzcyB8fCBjbHMubWF0Y2goZm9yU3ZnKSkge1xuICAgICAgICAgIGFjYy50b1N2Zy5wdXNoKGNscyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYWNjLnRvTm9kZS5wdXNoKGNscyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfSwge1xuICAgICAgICB0b05vZGU6IFtdLFxuICAgICAgICB0b1N2ZzogW11cbiAgICAgIH0pO1xuICAgICAgYWJzdHJhY3RbMF0uYXR0cmlidXRlcy5jbGFzcyA9IHNwbGl0Q2xhc3Nlcy50b1N2Zy5qb2luKCcgJyk7XG5cbiAgICAgIGlmIChzcGxpdENsYXNzZXMudG9Ob2RlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZSgnY2xhc3MnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKCdjbGFzcycsIHNwbGl0Q2xhc3Nlcy50b05vZGUuam9pbignICcpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBuZXdJbm5lckhUTUwgPSBhYnN0cmFjdC5tYXAoYSA9PiB0b0h0bWwoYSkpLmpvaW4oJ1xcbicpO1xuICAgIG5vZGUuc2V0QXR0cmlidXRlKERBVEFfRkFfSTJTVkcsICcnKTtcbiAgICBub2RlLmlubmVySFRNTCA9IG5ld0lubmVySFRNTDtcbiAgfVxufTtcblxuZnVuY3Rpb24gcGVyZm9ybU9wZXJhdGlvblN5bmMob3ApIHtcbiAgb3AoKTtcbn1cblxuZnVuY3Rpb24gcGVyZm9ybShtdXRhdGlvbnMsIGNhbGxiYWNrKSB7XG4gIGNvbnN0IGNhbGxiYWNrRnVuY3Rpb24gPSB0eXBlb2YgY2FsbGJhY2sgPT09ICdmdW5jdGlvbicgPyBjYWxsYmFjayA6IG5vb3AkMjtcblxuICBpZiAobXV0YXRpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgIGNhbGxiYWNrRnVuY3Rpb24oKTtcbiAgfSBlbHNlIHtcbiAgICBsZXQgZnJhbWUgPSBwZXJmb3JtT3BlcmF0aW9uU3luYztcblxuICAgIGlmIChjb25maWcubXV0YXRlQXBwcm9hY2ggPT09IE1VVEFUSU9OX0FQUFJPQUNIX0FTWU5DKSB7XG4gICAgICBmcmFtZSA9IFdJTkRPVy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUgfHwgcGVyZm9ybU9wZXJhdGlvblN5bmM7XG4gICAgfVxuXG4gICAgZnJhbWUoKCkgPT4ge1xuICAgICAgY29uc3QgbXV0YXRvciA9IGdldE11dGF0b3IoKTtcbiAgICAgIGNvbnN0IG1hcmsgPSBwZXJmLmJlZ2luKCdtdXRhdGUnKTtcbiAgICAgIG11dGF0aW9ucy5tYXAobXV0YXRvcik7XG4gICAgICBtYXJrKCk7XG4gICAgICBjYWxsYmFja0Z1bmN0aW9uKCk7XG4gICAgfSk7XG4gIH1cbn1cbmxldCBkaXNhYmxlZCA9IGZhbHNlO1xuZnVuY3Rpb24gZGlzYWJsZU9ic2VydmF0aW9uKCkge1xuICBkaXNhYmxlZCA9IHRydWU7XG59XG5mdW5jdGlvbiBlbmFibGVPYnNlcnZhdGlvbigpIHtcbiAgZGlzYWJsZWQgPSBmYWxzZTtcbn1cbmxldCBtbyQxID0gbnVsbDtcbmZ1bmN0aW9uIG9ic2VydmUob3B0aW9ucykge1xuICBpZiAoIU1VVEFUSU9OX09CU0VSVkVSKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKCFjb25maWcub2JzZXJ2ZU11dGF0aW9ucykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHtcbiAgICB0cmVlQ2FsbGJhY2sgPSBub29wJDIsXG4gICAgbm9kZUNhbGxiYWNrID0gbm9vcCQyLFxuICAgIHBzZXVkb0VsZW1lbnRzQ2FsbGJhY2sgPSBub29wJDIsXG4gICAgb2JzZXJ2ZU11dGF0aW9uc1Jvb3QgPSBET0NVTUVOVFxuICB9ID0gb3B0aW9ucztcbiAgbW8kMSA9IG5ldyBNVVRBVElPTl9PQlNFUlZFUihvYmplY3RzID0+IHtcbiAgICBpZiAoZGlzYWJsZWQpIHJldHVybjtcbiAgICBjb25zdCBkZWZhdWx0UHJlZml4ID0gZ2V0RGVmYXVsdFVzYWJsZVByZWZpeCgpO1xuICAgIHRvQXJyYXkob2JqZWN0cykuZm9yRWFjaChtdXRhdGlvblJlY29yZCA9PiB7XG4gICAgICBpZiAobXV0YXRpb25SZWNvcmQudHlwZSA9PT0gJ2NoaWxkTGlzdCcgJiYgbXV0YXRpb25SZWNvcmQuYWRkZWROb2Rlcy5sZW5ndGggPiAwICYmICFpc1dhdGNoZWQobXV0YXRpb25SZWNvcmQuYWRkZWROb2Rlc1swXSkpIHtcbiAgICAgICAgaWYgKGNvbmZpZy5zZWFyY2hQc2V1ZG9FbGVtZW50cykge1xuICAgICAgICAgIHBzZXVkb0VsZW1lbnRzQ2FsbGJhY2sobXV0YXRpb25SZWNvcmQudGFyZ2V0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRyZWVDYWxsYmFjayhtdXRhdGlvblJlY29yZC50YXJnZXQpO1xuICAgICAgfVxuXG4gICAgICBpZiAobXV0YXRpb25SZWNvcmQudHlwZSA9PT0gJ2F0dHJpYnV0ZXMnICYmIG11dGF0aW9uUmVjb3JkLnRhcmdldC5wYXJlbnROb2RlICYmIGNvbmZpZy5zZWFyY2hQc2V1ZG9FbGVtZW50cykge1xuICAgICAgICBwc2V1ZG9FbGVtZW50c0NhbGxiYWNrKG11dGF0aW9uUmVjb3JkLnRhcmdldC5wYXJlbnROb2RlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG11dGF0aW9uUmVjb3JkLnR5cGUgPT09ICdhdHRyaWJ1dGVzJyAmJiBpc1dhdGNoZWQobXV0YXRpb25SZWNvcmQudGFyZ2V0KSAmJiB+QVRUUklCVVRFU19XQVRDSEVEX0ZPUl9NVVRBVElPTi5pbmRleE9mKG11dGF0aW9uUmVjb3JkLmF0dHJpYnV0ZU5hbWUpKSB7XG4gICAgICAgIGlmIChtdXRhdGlvblJlY29yZC5hdHRyaWJ1dGVOYW1lID09PSAnY2xhc3MnICYmIGhhc1ByZWZpeEFuZEljb24obXV0YXRpb25SZWNvcmQudGFyZ2V0KSkge1xuICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIHByZWZpeCxcbiAgICAgICAgICAgIGljb25OYW1lXG4gICAgICAgICAgfSA9IGdldENhbm9uaWNhbEljb24oY2xhc3NBcnJheShtdXRhdGlvblJlY29yZC50YXJnZXQpKTtcbiAgICAgICAgICBtdXRhdGlvblJlY29yZC50YXJnZXQuc2V0QXR0cmlidXRlKERBVEFfUFJFRklYLCBwcmVmaXggfHwgZGVmYXVsdFByZWZpeCk7XG4gICAgICAgICAgaWYgKGljb25OYW1lKSBtdXRhdGlvblJlY29yZC50YXJnZXQuc2V0QXR0cmlidXRlKERBVEFfSUNPTiwgaWNvbk5hbWUpO1xuICAgICAgICB9IGVsc2UgaWYgKGhhc0JlZW5SZXBsYWNlZChtdXRhdGlvblJlY29yZC50YXJnZXQpKSB7XG4gICAgICAgICAgbm9kZUNhbGxiYWNrKG11dGF0aW9uUmVjb3JkLnRhcmdldCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG4gIGlmICghSVNfRE9NKSByZXR1cm47XG4gIG1vJDEub2JzZXJ2ZShvYnNlcnZlTXV0YXRpb25zUm9vdCwge1xuICAgIGNoaWxkTGlzdDogdHJ1ZSxcbiAgICBhdHRyaWJ1dGVzOiB0cnVlLFxuICAgIGNoYXJhY3RlckRhdGE6IHRydWUsXG4gICAgc3VidHJlZTogdHJ1ZVxuICB9KTtcbn1cbmZ1bmN0aW9uIGRpc2Nvbm5lY3QoKSB7XG4gIGlmICghbW8kMSkgcmV0dXJuO1xuICBtbyQxLmRpc2Nvbm5lY3QoKTtcbn1cblxuZnVuY3Rpb24gc3R5bGVQYXJzZXIgKG5vZGUpIHtcbiAgY29uc3Qgc3R5bGUgPSBub2RlLmdldEF0dHJpYnV0ZSgnc3R5bGUnKTtcbiAgbGV0IHZhbCA9IFtdO1xuXG4gIGlmIChzdHlsZSkge1xuICAgIHZhbCA9IHN0eWxlLnNwbGl0KCc7JykucmVkdWNlKChhY2MsIHN0eWxlKSA9PiB7XG4gICAgICBjb25zdCBzdHlsZXMgPSBzdHlsZS5zcGxpdCgnOicpO1xuICAgICAgY29uc3QgcHJvcCA9IHN0eWxlc1swXTtcbiAgICAgIGNvbnN0IHZhbHVlID0gc3R5bGVzLnNsaWNlKDEpO1xuXG4gICAgICBpZiAocHJvcCAmJiB2YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgIGFjY1twcm9wXSA9IHZhbHVlLmpvaW4oJzonKS50cmltKCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwge30pO1xuICB9XG5cbiAgcmV0dXJuIHZhbDtcbn1cblxuZnVuY3Rpb24gY2xhc3NQYXJzZXIgKG5vZGUpIHtcbiAgY29uc3QgZXhpc3RpbmdQcmVmaXggPSBub2RlLmdldEF0dHJpYnV0ZSgnZGF0YS1wcmVmaXgnKTtcbiAgY29uc3QgZXhpc3RpbmdJY29uTmFtZSA9IG5vZGUuZ2V0QXR0cmlidXRlKCdkYXRhLWljb24nKTtcbiAgY29uc3QgaW5uZXJUZXh0ID0gbm9kZS5pbm5lclRleHQgIT09IHVuZGVmaW5lZCA/IG5vZGUuaW5uZXJUZXh0LnRyaW0oKSA6ICcnO1xuICBsZXQgdmFsID0gZ2V0Q2Fub25pY2FsSWNvbihjbGFzc0FycmF5KG5vZGUpKTtcblxuICBpZiAoIXZhbC5wcmVmaXgpIHtcbiAgICB2YWwucHJlZml4ID0gZ2V0RGVmYXVsdFVzYWJsZVByZWZpeCgpO1xuICB9XG5cbiAgaWYgKGV4aXN0aW5nUHJlZml4ICYmIGV4aXN0aW5nSWNvbk5hbWUpIHtcbiAgICB2YWwucHJlZml4ID0gZXhpc3RpbmdQcmVmaXg7XG4gICAgdmFsLmljb25OYW1lID0gZXhpc3RpbmdJY29uTmFtZTtcbiAgfVxuXG4gIGlmICh2YWwuaWNvbk5hbWUgJiYgdmFsLnByZWZpeCkge1xuICAgIHJldHVybiB2YWw7XG4gIH1cblxuICBpZiAodmFsLnByZWZpeCAmJiBpbm5lclRleHQubGVuZ3RoID4gMCkge1xuICAgIHZhbC5pY29uTmFtZSA9IGJ5TGlnYXR1cmUodmFsLnByZWZpeCwgbm9kZS5pbm5lclRleHQpIHx8IGJ5VW5pY29kZSh2YWwucHJlZml4LCB0b0hleChub2RlLmlubmVyVGV4dCkpO1xuICB9XG5cbiAgaWYgKCF2YWwuaWNvbk5hbWUgJiYgY29uZmlnLmF1dG9GZXRjaFN2ZyAmJiBub2RlLmZpcnN0Q2hpbGQgJiYgbm9kZS5maXJzdENoaWxkLm5vZGVUeXBlID09PSBOb2RlLlRFWFRfTk9ERSkge1xuICAgIHZhbC5pY29uTmFtZSA9IG5vZGUuZmlyc3RDaGlsZC5kYXRhO1xuICB9XG5cbiAgcmV0dXJuIHZhbDtcbn1cblxuZnVuY3Rpb24gYXR0cmlidXRlc1BhcnNlciAobm9kZSkge1xuICBjb25zdCBleHRyYUF0dHJpYnV0ZXMgPSB0b0FycmF5KG5vZGUuYXR0cmlidXRlcykucmVkdWNlKChhY2MsIGF0dHIpID0+IHtcbiAgICBpZiAoYWNjLm5hbWUgIT09ICdjbGFzcycgJiYgYWNjLm5hbWUgIT09ICdzdHlsZScpIHtcbiAgICAgIGFjY1thdHRyLm5hbWVdID0gYXR0ci52YWx1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gYWNjO1xuICB9LCB7fSk7XG4gIGNvbnN0IHRpdGxlID0gbm9kZS5nZXRBdHRyaWJ1dGUoJ3RpdGxlJyk7XG4gIGNvbnN0IHRpdGxlSWQgPSBub2RlLmdldEF0dHJpYnV0ZSgnZGF0YS1mYS10aXRsZS1pZCcpO1xuXG4gIGlmIChjb25maWcuYXV0b0ExMXkpIHtcbiAgICBpZiAodGl0bGUpIHtcbiAgICAgIGV4dHJhQXR0cmlidXRlc1snYXJpYS1sYWJlbGxlZGJ5J10gPSBcIlwiLmNvbmNhdChjb25maWcucmVwbGFjZW1lbnRDbGFzcywgXCItdGl0bGUtXCIpLmNvbmNhdCh0aXRsZUlkIHx8IG5leHRVbmlxdWVJZCgpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZXh0cmFBdHRyaWJ1dGVzWydhcmlhLWhpZGRlbiddID0gJ3RydWUnO1xuICAgICAgZXh0cmFBdHRyaWJ1dGVzWydmb2N1c2FibGUnXSA9ICdmYWxzZSc7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGV4dHJhQXR0cmlidXRlcztcbn1cblxuZnVuY3Rpb24gYmxhbmtNZXRhKCkge1xuICByZXR1cm4ge1xuICAgIGljb25OYW1lOiBudWxsLFxuICAgIHRpdGxlOiBudWxsLFxuICAgIHRpdGxlSWQ6IG51bGwsXG4gICAgcHJlZml4OiBudWxsLFxuICAgIHRyYW5zZm9ybTogbWVhbmluZ2xlc3NUcmFuc2Zvcm0sXG4gICAgc3ltYm9sOiBmYWxzZSxcbiAgICBtYXNrOiB7XG4gICAgICBpY29uTmFtZTogbnVsbCxcbiAgICAgIHByZWZpeDogbnVsbCxcbiAgICAgIHJlc3Q6IFtdXG4gICAgfSxcbiAgICBtYXNrSWQ6IG51bGwsXG4gICAgZXh0cmE6IHtcbiAgICAgIGNsYXNzZXM6IFtdLFxuICAgICAgc3R5bGVzOiB7fSxcbiAgICAgIGF0dHJpYnV0ZXM6IHt9XG4gICAgfVxuICB9O1xufVxuZnVuY3Rpb24gcGFyc2VNZXRhKG5vZGUpIHtcbiAgbGV0IHBhcnNlciA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge1xuICAgIHN0eWxlUGFyc2VyOiB0cnVlXG4gIH07XG4gIGNvbnN0IHtcbiAgICBpY29uTmFtZSxcbiAgICBwcmVmaXgsXG4gICAgcmVzdDogZXh0cmFDbGFzc2VzXG4gIH0gPSBjbGFzc1BhcnNlcihub2RlKTtcbiAgY29uc3QgZXh0cmFBdHRyaWJ1dGVzID0gYXR0cmlidXRlc1BhcnNlcihub2RlKTtcbiAgY29uc3QgcGx1Z2luTWV0YSA9IGNoYWluSG9va3MoJ3BhcnNlTm9kZUF0dHJpYnV0ZXMnLCB7fSwgbm9kZSk7XG4gIGxldCBleHRyYVN0eWxlcyA9IHBhcnNlci5zdHlsZVBhcnNlciA/IHN0eWxlUGFyc2VyKG5vZGUpIDogW107XG4gIHJldHVybiB7XG4gICAgaWNvbk5hbWUsXG4gICAgdGl0bGU6IG5vZGUuZ2V0QXR0cmlidXRlKCd0aXRsZScpLFxuICAgIHRpdGxlSWQ6IG5vZGUuZ2V0QXR0cmlidXRlKCdkYXRhLWZhLXRpdGxlLWlkJyksXG4gICAgcHJlZml4LFxuICAgIHRyYW5zZm9ybTogbWVhbmluZ2xlc3NUcmFuc2Zvcm0sXG4gICAgbWFzazoge1xuICAgICAgaWNvbk5hbWU6IG51bGwsXG4gICAgICBwcmVmaXg6IG51bGwsXG4gICAgICByZXN0OiBbXVxuICAgIH0sXG4gICAgbWFza0lkOiBudWxsLFxuICAgIHN5bWJvbDogZmFsc2UsXG4gICAgZXh0cmE6IHtcbiAgICAgIGNsYXNzZXM6IGV4dHJhQ2xhc3NlcyxcbiAgICAgIHN0eWxlczogZXh0cmFTdHlsZXMsXG4gICAgICBhdHRyaWJ1dGVzOiBleHRyYUF0dHJpYnV0ZXNcbiAgICB9LFxuICAgIC4uLnBsdWdpbk1ldGFcbiAgfTtcbn1cblxuY29uc3Qge1xuICBzdHlsZXM6IHN0eWxlcyQyXG59ID0gbmFtZXNwYWNlO1xuXG5mdW5jdGlvbiBnZW5lcmF0ZU11dGF0aW9uKG5vZGUpIHtcbiAgY29uc3Qgbm9kZU1ldGEgPSBjb25maWcuYXV0b1JlcGxhY2VTdmcgPT09ICduZXN0JyA/IHBhcnNlTWV0YShub2RlLCB7XG4gICAgc3R5bGVQYXJzZXI6IGZhbHNlXG4gIH0pIDogcGFyc2VNZXRhKG5vZGUpO1xuXG4gIGlmICh+bm9kZU1ldGEuZXh0cmEuY2xhc3Nlcy5pbmRleE9mKExBWUVSU19URVhUX0NMQVNTTkFNRSkpIHtcbiAgICByZXR1cm4gY2FsbFByb3ZpZGVkKCdnZW5lcmF0ZUxheWVyc1RleHQnLCBub2RlLCBub2RlTWV0YSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGNhbGxQcm92aWRlZCgnZ2VuZXJhdGVTdmdSZXBsYWNlbWVudE11dGF0aW9uJywgbm9kZSwgbm9kZU1ldGEpO1xuICB9XG59XG5cbmxldCBrbm93blByZWZpeGVzID0gbmV3IFNldCgpO1xuRkFNSUxJRVMubWFwKGZhbWlseSA9PiB7XG4gIGtub3duUHJlZml4ZXMuYWRkKFwiZmEtXCIuY29uY2F0KGZhbWlseSkpO1xufSk7XG5PYmplY3Qua2V5cyhQUkVGSVhfVE9fU1RZTEVbYV0pLm1hcChrbm93blByZWZpeGVzLmFkZC5iaW5kKGtub3duUHJlZml4ZXMpKTtcbk9iamVjdC5rZXlzKFBSRUZJWF9UT19TVFlMRVtyXSkubWFwKGtub3duUHJlZml4ZXMuYWRkLmJpbmQoa25vd25QcmVmaXhlcykpO1xuT2JqZWN0LmtleXMoUFJFRklYX1RPX1NUWUxFW29dKS5tYXAoa25vd25QcmVmaXhlcy5hZGQuYmluZChrbm93blByZWZpeGVzKSk7XG5rbm93blByZWZpeGVzID0gWy4uLmtub3duUHJlZml4ZXNdO1xuXG5mdW5jdGlvbiBvblRyZWUocm9vdCkge1xuICBsZXQgY2FsbGJhY2sgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IG51bGw7XG4gIGlmICghSVNfRE9NKSByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gIGNvbnN0IGh0bWxDbGFzc0xpc3QgPSBET0NVTUVOVC5kb2N1bWVudEVsZW1lbnQuY2xhc3NMaXN0O1xuXG4gIGNvbnN0IGhjbEFkZCA9IHN1ZmZpeCA9PiBodG1sQ2xhc3NMaXN0LmFkZChcIlwiLmNvbmNhdChIVE1MX0NMQVNTX0kyU1ZHX0JBU0VfQ0xBU1MsIFwiLVwiKS5jb25jYXQoc3VmZml4KSk7XG5cbiAgY29uc3QgaGNsUmVtb3ZlID0gc3VmZml4ID0+IGh0bWxDbGFzc0xpc3QucmVtb3ZlKFwiXCIuY29uY2F0KEhUTUxfQ0xBU1NfSTJTVkdfQkFTRV9DTEFTUywgXCItXCIpLmNvbmNhdChzdWZmaXgpKTtcblxuICBjb25zdCBwcmVmaXhlcyA9IGNvbmZpZy5hdXRvRmV0Y2hTdmcgPyBrbm93blByZWZpeGVzIDogRkFNSUxJRVMubWFwKGYkJDEgPT4gXCJmYS1cIi5jb25jYXQoZiQkMSkpLmNvbmNhdChPYmplY3Qua2V5cyhzdHlsZXMkMikpO1xuXG4gIGlmICghcHJlZml4ZXMuaW5jbHVkZXMoJ2ZhJykpIHtcbiAgICBwcmVmaXhlcy5wdXNoKCdmYScpO1xuICB9XG5cbiAgY29uc3QgcHJlZml4ZXNEb21RdWVyeSA9IFtcIi5cIi5jb25jYXQoTEFZRVJTX1RFWFRfQ0xBU1NOQU1FLCBcIjpub3QoW1wiKS5jb25jYXQoREFUQV9GQV9JMlNWRywgXCJdKVwiKV0uY29uY2F0KHByZWZpeGVzLm1hcChwJCQxID0+IFwiLlwiLmNvbmNhdChwJCQxLCBcIjpub3QoW1wiKS5jb25jYXQoREFUQV9GQV9JMlNWRywgXCJdKVwiKSkpLmpvaW4oJywgJyk7XG5cbiAgaWYgKHByZWZpeGVzRG9tUXVlcnkubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICB9XG5cbiAgbGV0IGNhbmRpZGF0ZXMgPSBbXTtcblxuICB0cnkge1xuICAgIGNhbmRpZGF0ZXMgPSB0b0FycmF5KHJvb3QucXVlcnlTZWxlY3RvckFsbChwcmVmaXhlc0RvbVF1ZXJ5KSk7XG4gIH0gY2F0Y2ggKGUkJDEpIHsvLyBub29wXG4gIH1cblxuICBpZiAoY2FuZGlkYXRlcy5sZW5ndGggPiAwKSB7XG4gICAgaGNsQWRkKCdwZW5kaW5nJyk7XG4gICAgaGNsUmVtb3ZlKCdjb21wbGV0ZScpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgfVxuXG4gIGNvbnN0IG1hcmsgPSBwZXJmLmJlZ2luKCdvblRyZWUnKTtcbiAgY29uc3QgbXV0YXRpb25zID0gY2FuZGlkYXRlcy5yZWR1Y2UoKGFjYywgbm9kZSkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBtdXRhdGlvbiA9IGdlbmVyYXRlTXV0YXRpb24obm9kZSk7XG5cbiAgICAgIGlmIChtdXRhdGlvbikge1xuICAgICAgICBhY2MucHVzaChtdXRhdGlvbik7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSQkMSkge1xuICAgICAgaWYgKCFQUk9EVUNUSU9OKSB7XG4gICAgICAgIGlmIChlJCQxLm5hbWUgPT09ICdNaXNzaW5nSWNvbicpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGUkJDEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGFjYztcbiAgfSwgW10pO1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIFByb21pc2UuYWxsKG11dGF0aW9ucykudGhlbihyZXNvbHZlZE11dGF0aW9ucyA9PiB7XG4gICAgICBwZXJmb3JtKHJlc29sdmVkTXV0YXRpb25zLCAoKSA9PiB7XG4gICAgICAgIGhjbEFkZCgnYWN0aXZlJyk7XG4gICAgICAgIGhjbEFkZCgnY29tcGxldGUnKTtcbiAgICAgICAgaGNsUmVtb3ZlKCdwZW5kaW5nJyk7XG4gICAgICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgPT09ICdmdW5jdGlvbicpIGNhbGxiYWNrKCk7XG4gICAgICAgIG1hcmsoKTtcbiAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgfSk7XG4gICAgfSkuY2F0Y2goZSQkMSA9PiB7XG4gICAgICBtYXJrKCk7XG4gICAgICByZWplY3QoZSQkMSk7XG4gICAgfSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBvbk5vZGUobm9kZSkge1xuICBsZXQgY2FsbGJhY2sgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IG51bGw7XG4gIGdlbmVyYXRlTXV0YXRpb24obm9kZSkudGhlbihtdXRhdGlvbiA9PiB7XG4gICAgaWYgKG11dGF0aW9uKSB7XG4gICAgICBwZXJmb3JtKFttdXRhdGlvbl0sIGNhbGxiYWNrKTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiByZXNvbHZlSWNvbnMobmV4dCkge1xuICByZXR1cm4gZnVuY3Rpb24gKG1heWJlSWNvbkRlZmluaXRpb24pIHtcbiAgICBsZXQgcGFyYW1zID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fTtcbiAgICBjb25zdCBpY29uRGVmaW5pdGlvbiA9IChtYXliZUljb25EZWZpbml0aW9uIHx8IHt9KS5pY29uID8gbWF5YmVJY29uRGVmaW5pdGlvbiA6IGZpbmRJY29uRGVmaW5pdGlvbihtYXliZUljb25EZWZpbml0aW9uIHx8IHt9KTtcbiAgICBsZXQge1xuICAgICAgbWFza1xuICAgIH0gPSBwYXJhbXM7XG5cbiAgICBpZiAobWFzaykge1xuICAgICAgbWFzayA9IChtYXNrIHx8IHt9KS5pY29uID8gbWFzayA6IGZpbmRJY29uRGVmaW5pdGlvbihtYXNrIHx8IHt9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV4dChpY29uRGVmaW5pdGlvbiwgeyAuLi5wYXJhbXMsXG4gICAgICBtYXNrXG4gICAgfSk7XG4gIH07XG59XG5cbmNvbnN0IHJlbmRlciA9IGZ1bmN0aW9uIChpY29uRGVmaW5pdGlvbikge1xuICBsZXQgcGFyYW1zID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fTtcbiAgY29uc3Qge1xuICAgIHRyYW5zZm9ybSA9IG1lYW5pbmdsZXNzVHJhbnNmb3JtLFxuICAgIHN5bWJvbCA9IGZhbHNlLFxuICAgIG1hc2sgPSBudWxsLFxuICAgIG1hc2tJZCA9IG51bGwsXG4gICAgdGl0bGUgPSBudWxsLFxuICAgIHRpdGxlSWQgPSBudWxsLFxuICAgIGNsYXNzZXMgPSBbXSxcbiAgICBhdHRyaWJ1dGVzID0ge30sXG4gICAgc3R5bGVzID0ge31cbiAgfSA9IHBhcmFtcztcbiAgaWYgKCFpY29uRGVmaW5pdGlvbikgcmV0dXJuO1xuICBjb25zdCB7XG4gICAgcHJlZml4LFxuICAgIGljb25OYW1lLFxuICAgIGljb25cbiAgfSA9IGljb25EZWZpbml0aW9uO1xuICByZXR1cm4gZG9tVmFyaWFudHMoe1xuICAgIHR5cGU6ICdpY29uJyxcbiAgICAuLi5pY29uRGVmaW5pdGlvblxuICB9LCAoKSA9PiB7XG4gICAgY2FsbEhvb2tzKCdiZWZvcmVET01FbGVtZW50Q3JlYXRpb24nLCB7XG4gICAgICBpY29uRGVmaW5pdGlvbixcbiAgICAgIHBhcmFtc1xuICAgIH0pO1xuXG4gICAgaWYgKGNvbmZpZy5hdXRvQTExeSkge1xuICAgICAgaWYgKHRpdGxlKSB7XG4gICAgICAgIGF0dHJpYnV0ZXNbJ2FyaWEtbGFiZWxsZWRieSddID0gXCJcIi5jb25jYXQoY29uZmlnLnJlcGxhY2VtZW50Q2xhc3MsIFwiLXRpdGxlLVwiKS5jb25jYXQodGl0bGVJZCB8fCBuZXh0VW5pcXVlSWQoKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhdHRyaWJ1dGVzWydhcmlhLWhpZGRlbiddID0gJ3RydWUnO1xuICAgICAgICBhdHRyaWJ1dGVzWydmb2N1c2FibGUnXSA9ICdmYWxzZSc7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG1ha2VJbmxpbmVTdmdBYnN0cmFjdCh7XG4gICAgICBpY29uczoge1xuICAgICAgICBtYWluOiBhc0ZvdW5kSWNvbihpY29uKSxcbiAgICAgICAgbWFzazogbWFzayA/IGFzRm91bmRJY29uKG1hc2suaWNvbikgOiB7XG4gICAgICAgICAgZm91bmQ6IGZhbHNlLFxuICAgICAgICAgIHdpZHRoOiBudWxsLFxuICAgICAgICAgIGhlaWdodDogbnVsbCxcbiAgICAgICAgICBpY29uOiB7fVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgcHJlZml4LFxuICAgICAgaWNvbk5hbWUsXG4gICAgICB0cmFuc2Zvcm06IHsgLi4ubWVhbmluZ2xlc3NUcmFuc2Zvcm0sXG4gICAgICAgIC4uLnRyYW5zZm9ybVxuICAgICAgfSxcbiAgICAgIHN5bWJvbCxcbiAgICAgIHRpdGxlLFxuICAgICAgbWFza0lkLFxuICAgICAgdGl0bGVJZCxcbiAgICAgIGV4dHJhOiB7XG4gICAgICAgIGF0dHJpYnV0ZXMsXG4gICAgICAgIHN0eWxlcyxcbiAgICAgICAgY2xhc3Nlc1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbn07XG52YXIgUmVwbGFjZUVsZW1lbnRzID0ge1xuICBtaXhvdXQoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGljb246IHJlc29sdmVJY29ucyhyZW5kZXIpXG4gICAgfTtcbiAgfSxcblxuICBob29rcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbXV0YXRpb25PYnNlcnZlckNhbGxiYWNrcyhhY2N1bXVsYXRvcikge1xuICAgICAgICBhY2N1bXVsYXRvci50cmVlQ2FsbGJhY2sgPSBvblRyZWU7XG4gICAgICAgIGFjY3VtdWxhdG9yLm5vZGVDYWxsYmFjayA9IG9uTm9kZTtcbiAgICAgICAgcmV0dXJuIGFjY3VtdWxhdG9yO1xuICAgICAgfVxuXG4gICAgfTtcbiAgfSxcblxuICBwcm92aWRlcyhwcm92aWRlcnMkJDEpIHtcbiAgICBwcm92aWRlcnMkJDEuaTJzdmcgPSBmdW5jdGlvbiAocGFyYW1zKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIG5vZGUgPSBET0NVTUVOVCxcbiAgICAgICAgY2FsbGJhY2sgPSAoKSA9PiB7fVxuICAgICAgfSA9IHBhcmFtcztcbiAgICAgIHJldHVybiBvblRyZWUobm9kZSwgY2FsbGJhY2spO1xuICAgIH07XG5cbiAgICBwcm92aWRlcnMkJDEuZ2VuZXJhdGVTdmdSZXBsYWNlbWVudE11dGF0aW9uID0gZnVuY3Rpb24gKG5vZGUsIG5vZGVNZXRhKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIGljb25OYW1lLFxuICAgICAgICB0aXRsZSxcbiAgICAgICAgdGl0bGVJZCxcbiAgICAgICAgcHJlZml4LFxuICAgICAgICB0cmFuc2Zvcm0sXG4gICAgICAgIHN5bWJvbCxcbiAgICAgICAgbWFzayxcbiAgICAgICAgbWFza0lkLFxuICAgICAgICBleHRyYVxuICAgICAgfSA9IG5vZGVNZXRhO1xuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgUHJvbWlzZS5hbGwoW2ZpbmRJY29uKGljb25OYW1lLCBwcmVmaXgpLCBtYXNrLmljb25OYW1lID8gZmluZEljb24obWFzay5pY29uTmFtZSwgbWFzay5wcmVmaXgpIDogUHJvbWlzZS5yZXNvbHZlKHtcbiAgICAgICAgICBmb3VuZDogZmFsc2UsXG4gICAgICAgICAgd2lkdGg6IDUxMixcbiAgICAgICAgICBoZWlnaHQ6IDUxMixcbiAgICAgICAgICBpY29uOiB7fVxuICAgICAgICB9KV0pLnRoZW4oX3JlZiA9PiB7XG4gICAgICAgICAgbGV0IFttYWluLCBtYXNrXSA9IF9yZWY7XG4gICAgICAgICAgcmVzb2x2ZShbbm9kZSwgbWFrZUlubGluZVN2Z0Fic3RyYWN0KHtcbiAgICAgICAgICAgIGljb25zOiB7XG4gICAgICAgICAgICAgIG1haW4sXG4gICAgICAgICAgICAgIG1hc2tcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwcmVmaXgsXG4gICAgICAgICAgICBpY29uTmFtZSxcbiAgICAgICAgICAgIHRyYW5zZm9ybSxcbiAgICAgICAgICAgIHN5bWJvbCxcbiAgICAgICAgICAgIG1hc2tJZCxcbiAgICAgICAgICAgIHRpdGxlLFxuICAgICAgICAgICAgdGl0bGVJZCxcbiAgICAgICAgICAgIGV4dHJhLFxuICAgICAgICAgICAgd2F0Y2hhYmxlOiB0cnVlXG4gICAgICAgICAgfSldKTtcbiAgICAgICAgfSkuY2F0Y2gocmVqZWN0KTtcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICBwcm92aWRlcnMkJDEuZ2VuZXJhdGVBYnN0cmFjdEljb24gPSBmdW5jdGlvbiAoX3JlZjIpIHtcbiAgICAgIGxldCB7XG4gICAgICAgIGNoaWxkcmVuLFxuICAgICAgICBhdHRyaWJ1dGVzLFxuICAgICAgICBtYWluLFxuICAgICAgICB0cmFuc2Zvcm0sXG4gICAgICAgIHN0eWxlc1xuICAgICAgfSA9IF9yZWYyO1xuICAgICAgY29uc3Qgc3R5bGVTdHJpbmcgPSBqb2luU3R5bGVzKHN0eWxlcyk7XG5cbiAgICAgIGlmIChzdHlsZVN0cmluZy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGF0dHJpYnV0ZXNbJ3N0eWxlJ10gPSBzdHlsZVN0cmluZztcbiAgICAgIH1cblxuICAgICAgbGV0IG5leHRDaGlsZDtcblxuICAgICAgaWYgKHRyYW5zZm9ybUlzTWVhbmluZ2Z1bCh0cmFuc2Zvcm0pKSB7XG4gICAgICAgIG5leHRDaGlsZCA9IGNhbGxQcm92aWRlZCgnZ2VuZXJhdGVBYnN0cmFjdFRyYW5zZm9ybUdyb3VwaW5nJywge1xuICAgICAgICAgIG1haW4sXG4gICAgICAgICAgdHJhbnNmb3JtLFxuICAgICAgICAgIGNvbnRhaW5lcldpZHRoOiBtYWluLndpZHRoLFxuICAgICAgICAgIGljb25XaWR0aDogbWFpbi53aWR0aFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgY2hpbGRyZW4ucHVzaChuZXh0Q2hpbGQgfHwgbWFpbi5pY29uKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNoaWxkcmVuLFxuICAgICAgICBhdHRyaWJ1dGVzXG4gICAgICB9O1xuICAgIH07XG4gIH1cblxufTtcblxudmFyIExheWVycyA9IHtcbiAgbWl4b3V0KCkge1xuICAgIHJldHVybiB7XG4gICAgICBsYXllcihhc3NlbWJsZXIpIHtcbiAgICAgICAgbGV0IHBhcmFtcyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge307XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBjbGFzc2VzID0gW11cbiAgICAgICAgfSA9IHBhcmFtcztcbiAgICAgICAgcmV0dXJuIGRvbVZhcmlhbnRzKHtcbiAgICAgICAgICB0eXBlOiAnbGF5ZXInXG4gICAgICAgIH0sICgpID0+IHtcbiAgICAgICAgICBjYWxsSG9va3MoJ2JlZm9yZURPTUVsZW1lbnRDcmVhdGlvbicsIHtcbiAgICAgICAgICAgIGFzc2VtYmxlcixcbiAgICAgICAgICAgIHBhcmFtc1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGxldCBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgIGFzc2VtYmxlcihhcmdzID0+IHtcbiAgICAgICAgICAgIEFycmF5LmlzQXJyYXkoYXJncykgPyBhcmdzLm1hcChhID0+IHtcbiAgICAgICAgICAgICAgY2hpbGRyZW4gPSBjaGlsZHJlbi5jb25jYXQoYS5hYnN0cmFjdCk7XG4gICAgICAgICAgICB9KSA6IGNoaWxkcmVuID0gY2hpbGRyZW4uY29uY2F0KGFyZ3MuYWJzdHJhY3QpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiBbe1xuICAgICAgICAgICAgdGFnOiAnc3BhbicsXG4gICAgICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICAgIGNsYXNzOiBbXCJcIi5jb25jYXQoY29uZmlnLmNzc1ByZWZpeCwgXCItbGF5ZXJzXCIpLCAuLi5jbGFzc2VzXS5qb2luKCcgJylcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjaGlsZHJlblxuICAgICAgICAgIH1dO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgIH07XG4gIH1cblxufTtcblxudmFyIExheWVyc0NvdW50ZXIgPSB7XG4gIG1peG91dCgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY291bnRlcihjb250ZW50KSB7XG4gICAgICAgIGxldCBwYXJhbXMgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9O1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgdGl0bGUgPSBudWxsLFxuICAgICAgICAgIGNsYXNzZXMgPSBbXSxcbiAgICAgICAgICBhdHRyaWJ1dGVzID0ge30sXG4gICAgICAgICAgc3R5bGVzID0ge31cbiAgICAgICAgfSA9IHBhcmFtcztcbiAgICAgICAgcmV0dXJuIGRvbVZhcmlhbnRzKHtcbiAgICAgICAgICB0eXBlOiAnY291bnRlcicsXG4gICAgICAgICAgY29udGVudFxuICAgICAgICB9LCAoKSA9PiB7XG4gICAgICAgICAgY2FsbEhvb2tzKCdiZWZvcmVET01FbGVtZW50Q3JlYXRpb24nLCB7XG4gICAgICAgICAgICBjb250ZW50LFxuICAgICAgICAgICAgcGFyYW1zXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuIG1ha2VMYXllcnNDb3VudGVyQWJzdHJhY3Qoe1xuICAgICAgICAgICAgY29udGVudDogY29udGVudC50b1N0cmluZygpLFxuICAgICAgICAgICAgdGl0bGUsXG4gICAgICAgICAgICBleHRyYToge1xuICAgICAgICAgICAgICBhdHRyaWJ1dGVzLFxuICAgICAgICAgICAgICBzdHlsZXMsXG4gICAgICAgICAgICAgIGNsYXNzZXM6IFtcIlwiLmNvbmNhdChjb25maWcuY3NzUHJlZml4LCBcIi1sYXllcnMtY291bnRlclwiKSwgLi4uY2xhc3Nlc11cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICB9O1xuICB9XG5cbn07XG5cbnZhciBMYXllcnNUZXh0ID0ge1xuICBtaXhvdXQoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRleHQoY29udGVudCkge1xuICAgICAgICBsZXQgcGFyYW1zID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fTtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIHRyYW5zZm9ybSA9IG1lYW5pbmdsZXNzVHJhbnNmb3JtLFxuICAgICAgICAgIHRpdGxlID0gbnVsbCxcbiAgICAgICAgICBjbGFzc2VzID0gW10sXG4gICAgICAgICAgYXR0cmlidXRlcyA9IHt9LFxuICAgICAgICAgIHN0eWxlcyA9IHt9XG4gICAgICAgIH0gPSBwYXJhbXM7XG4gICAgICAgIHJldHVybiBkb21WYXJpYW50cyh7XG4gICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgIGNvbnRlbnRcbiAgICAgICAgfSwgKCkgPT4ge1xuICAgICAgICAgIGNhbGxIb29rcygnYmVmb3JlRE9NRWxlbWVudENyZWF0aW9uJywge1xuICAgICAgICAgICAgY29udGVudCxcbiAgICAgICAgICAgIHBhcmFtc1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiBtYWtlTGF5ZXJzVGV4dEFic3RyYWN0KHtcbiAgICAgICAgICAgIGNvbnRlbnQsXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHsgLi4ubWVhbmluZ2xlc3NUcmFuc2Zvcm0sXG4gICAgICAgICAgICAgIC4uLnRyYW5zZm9ybVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRpdGxlLFxuICAgICAgICAgICAgZXh0cmE6IHtcbiAgICAgICAgICAgICAgYXR0cmlidXRlcyxcbiAgICAgICAgICAgICAgc3R5bGVzLFxuICAgICAgICAgICAgICBjbGFzc2VzOiBbXCJcIi5jb25jYXQoY29uZmlnLmNzc1ByZWZpeCwgXCItbGF5ZXJzLXRleHRcIiksIC4uLmNsYXNzZXNdXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgfTtcbiAgfSxcblxuICBwcm92aWRlcyhwcm92aWRlcnMkJDEpIHtcbiAgICBwcm92aWRlcnMkJDEuZ2VuZXJhdGVMYXllcnNUZXh0ID0gZnVuY3Rpb24gKG5vZGUsIG5vZGVNZXRhKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHRpdGxlLFxuICAgICAgICB0cmFuc2Zvcm0sXG4gICAgICAgIGV4dHJhXG4gICAgICB9ID0gbm9kZU1ldGE7XG4gICAgICBsZXQgd2lkdGggPSBudWxsO1xuICAgICAgbGV0IGhlaWdodCA9IG51bGw7XG5cbiAgICAgIGlmIChJU19JRSkge1xuICAgICAgICBjb25zdCBjb21wdXRlZEZvbnRTaXplID0gcGFyc2VJbnQoZ2V0Q29tcHV0ZWRTdHlsZShub2RlKS5mb250U2l6ZSwgMTApO1xuICAgICAgICBjb25zdCBib3VuZGluZ0NsaWVudFJlY3QgPSBub2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICB3aWR0aCA9IGJvdW5kaW5nQ2xpZW50UmVjdC53aWR0aCAvIGNvbXB1dGVkRm9udFNpemU7XG4gICAgICAgIGhlaWdodCA9IGJvdW5kaW5nQ2xpZW50UmVjdC5oZWlnaHQgLyBjb21wdXRlZEZvbnRTaXplO1xuICAgICAgfVxuXG4gICAgICBpZiAoY29uZmlnLmF1dG9BMTF5ICYmICF0aXRsZSkge1xuICAgICAgICBleHRyYS5hdHRyaWJ1dGVzWydhcmlhLWhpZGRlbiddID0gJ3RydWUnO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFtub2RlLCBtYWtlTGF5ZXJzVGV4dEFic3RyYWN0KHtcbiAgICAgICAgY29udGVudDogbm9kZS5pbm5lckhUTUwsXG4gICAgICAgIHdpZHRoLFxuICAgICAgICBoZWlnaHQsXG4gICAgICAgIHRyYW5zZm9ybSxcbiAgICAgICAgdGl0bGUsXG4gICAgICAgIGV4dHJhLFxuICAgICAgICB3YXRjaGFibGU6IHRydWVcbiAgICAgIH0pXSk7XG4gICAgfTtcbiAgfVxuXG59O1xuXG5jb25zdCBDTEVBTl9DT05URU5UX1BBVFRFUk4gPSBuZXcgUmVnRXhwKCdcXHV7MjJ9JywgJ3VnJyk7XG5jb25zdCBTRUNPTkRBUllfVU5JQ09ERV9SQU5HRSA9IFsxMTA1OTIwLCAxMTEyMzE5XTtcbmNvbnN0IF9GT05UX0ZBTUlMWV9XRUlHSFRfVE9fUFJFRklYID0geyAuLi57XG4gICAgRm9udEF3ZXNvbWU6IHtcbiAgICAgIG5vcm1hbDogJ2ZhcycsXG4gICAgICA0MDA6ICdmYXMnXG4gICAgfVxuICB9LFxuICAuLi5lbyxcbiAgLi4uYW8sXG4gIC4uLm1vXG59O1xuY29uc3QgRk9OVF9GQU1JTFlfV0VJR0hUX1RPX1BSRUZJWCA9IE9iamVjdC5rZXlzKF9GT05UX0ZBTUlMWV9XRUlHSFRfVE9fUFJFRklYKS5yZWR1Y2UoKGFjYywga2V5KSA9PiB7XG4gIGFjY1trZXkudG9Mb3dlckNhc2UoKV0gPSBfRk9OVF9GQU1JTFlfV0VJR0hUX1RPX1BSRUZJWFtrZXldO1xuICByZXR1cm4gYWNjO1xufSwge30pO1xuY29uc3QgRk9OVF9GQU1JTFlfV0VJR0hUX0ZBTExCQUNLID0gT2JqZWN0LmtleXMoRk9OVF9GQU1JTFlfV0VJR0hUX1RPX1BSRUZJWCkucmVkdWNlKChhY2MsIGZvbnRGYW1pbHkpID0+IHtcbiAgY29uc3Qgd2VpZ2h0cyA9IEZPTlRfRkFNSUxZX1dFSUdIVF9UT19QUkVGSVhbZm9udEZhbWlseV07XG4gIGFjY1tmb250RmFtaWx5XSA9IHdlaWdodHNbOTAwXSB8fCBbLi4uT2JqZWN0LmVudHJpZXMod2VpZ2h0cyldWzBdWzFdO1xuICByZXR1cm4gYWNjO1xufSwge30pO1xuZnVuY3Rpb24gaGV4VmFsdWVGcm9tQ29udGVudChjb250ZW50KSB7XG4gIGNvbnN0IGNsZWFuZWQgPSBjb250ZW50LnJlcGxhY2UoQ0xFQU5fQ09OVEVOVF9QQVRURVJOLCAnJyk7XG4gIGNvbnN0IGNvZGVQb2ludCA9IGNvZGVQb2ludEF0KGNsZWFuZWQsIDApO1xuICBjb25zdCBpc1ByZXBlbmRUZW4gPSBjb2RlUG9pbnQgPj0gU0VDT05EQVJZX1VOSUNPREVfUkFOR0VbMF0gJiYgY29kZVBvaW50IDw9IFNFQ09OREFSWV9VTklDT0RFX1JBTkdFWzFdO1xuICBjb25zdCBpc0RvdWJsZWQgPSBjbGVhbmVkLmxlbmd0aCA9PT0gMiA/IGNsZWFuZWRbMF0gPT09IGNsZWFuZWRbMV0gOiBmYWxzZTtcbiAgcmV0dXJuIHtcbiAgICB2YWx1ZTogaXNEb3VibGVkID8gdG9IZXgoY2xlYW5lZFswXSkgOiB0b0hleChjbGVhbmVkKSxcbiAgICBpc1NlY29uZGFyeTogaXNQcmVwZW5kVGVuIHx8IGlzRG91YmxlZFxuICB9O1xufVxuZnVuY3Rpb24gZ2V0UHJlZml4KGZvbnRGYW1pbHksIGZvbnRXZWlnaHQpIHtcbiAgY29uc3QgZm9udEZhbWlseVNhbml0aXplZCA9IGZvbnRGYW1pbHkucmVwbGFjZSgvXlsnXCJdfFsnXCJdJC9nLCAnJykudG9Mb3dlckNhc2UoKTtcbiAgY29uc3QgZm9udFdlaWdodEludGVnZXIgPSBwYXJzZUludChmb250V2VpZ2h0KTtcbiAgY29uc3QgZm9udFdlaWdodFNhbml0aXplZCA9IGlzTmFOKGZvbnRXZWlnaHRJbnRlZ2VyKSA/ICdub3JtYWwnIDogZm9udFdlaWdodEludGVnZXI7XG4gIHJldHVybiAoRk9OVF9GQU1JTFlfV0VJR0hUX1RPX1BSRUZJWFtmb250RmFtaWx5U2FuaXRpemVkXSB8fCB7fSlbZm9udFdlaWdodFNhbml0aXplZF0gfHwgRk9OVF9GQU1JTFlfV0VJR0hUX0ZBTExCQUNLW2ZvbnRGYW1pbHlTYW5pdGl6ZWRdO1xufVxuXG5mdW5jdGlvbiByZXBsYWNlRm9yUG9zaXRpb24obm9kZSwgcG9zaXRpb24pIHtcbiAgY29uc3QgcGVuZGluZ0F0dHJpYnV0ZSA9IFwiXCIuY29uY2F0KERBVEFfRkFfUFNFVURPX0VMRU1FTlRfUEVORElORykuY29uY2F0KHBvc2l0aW9uLnJlcGxhY2UoJzonLCAnLScpKTtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBpZiAobm9kZS5nZXRBdHRyaWJ1dGUocGVuZGluZ0F0dHJpYnV0ZSkgIT09IG51bGwpIHtcbiAgICAgIC8vIFRoaXMgbm9kZSBpcyBhbHJlYWR5IGJlaW5nIHByb2Nlc3NlZFxuICAgICAgcmV0dXJuIHJlc29sdmUoKTtcbiAgICB9XG5cbiAgICBjb25zdCBjaGlsZHJlbiA9IHRvQXJyYXkobm9kZS5jaGlsZHJlbik7XG4gICAgY29uc3QgYWxyZWFkeVByb2Nlc3NlZFBzZXVkb0VsZW1lbnQgPSBjaGlsZHJlbi5maWx0ZXIoYyA9PiBjLmdldEF0dHJpYnV0ZShEQVRBX0ZBX1BTRVVET19FTEVNRU5UKSA9PT0gcG9zaXRpb24pWzBdO1xuICAgIGNvbnN0IHN0eWxlcyA9IFdJTkRPVy5nZXRDb21wdXRlZFN0eWxlKG5vZGUsIHBvc2l0aW9uKTtcbiAgICBjb25zdCBmb250RmFtaWx5ID0gc3R5bGVzLmdldFByb3BlcnR5VmFsdWUoJ2ZvbnQtZmFtaWx5Jyk7XG4gICAgY29uc3QgZm9udEZhbWlseU1hdGNoID0gZm9udEZhbWlseS5tYXRjaChGT05UX0ZBTUlMWV9QQVRURVJOKTtcbiAgICBjb25zdCBmb250V2VpZ2h0ID0gc3R5bGVzLmdldFByb3BlcnR5VmFsdWUoJ2ZvbnQtd2VpZ2h0Jyk7XG4gICAgY29uc3QgY29udGVudCA9IHN0eWxlcy5nZXRQcm9wZXJ0eVZhbHVlKCdjb250ZW50Jyk7XG5cbiAgICBpZiAoYWxyZWFkeVByb2Nlc3NlZFBzZXVkb0VsZW1lbnQgJiYgIWZvbnRGYW1pbHlNYXRjaCkge1xuICAgICAgLy8gSWYgd2UndmUgYWxyZWFkeSBwcm9jZXNzZWQgaXQgYnV0IHRoZSBjdXJyZW50IGNvbXB1dGVkIHN0eWxlIGRvZXMgbm90IHJlc3VsdCBpbiBhIGZvbnQtZmFtaWx5LFxuICAgICAgLy8gdGhhdCBwcm9iYWJseSBtZWFucyB0aGF0IGEgY2xhc3MgbmFtZSB0aGF0IHdhcyBwcmV2aW91c2x5IHByZXNlbnQgdG8gbWFrZSB0aGUgaWNvbiBoYXMgYmVlblxuICAgICAgLy8gcmVtb3ZlZC4gU28gd2Ugbm93IHNob3VsZCBkZWxldGUgdGhlIGljb24uXG4gICAgICBub2RlLnJlbW92ZUNoaWxkKGFscmVhZHlQcm9jZXNzZWRQc2V1ZG9FbGVtZW50KTtcbiAgICAgIHJldHVybiByZXNvbHZlKCk7XG4gICAgfSBlbHNlIGlmIChmb250RmFtaWx5TWF0Y2ggJiYgY29udGVudCAhPT0gJ25vbmUnICYmIGNvbnRlbnQgIT09ICcnKSB7XG4gICAgICBjb25zdCBjb250ZW50ID0gc3R5bGVzLmdldFByb3BlcnR5VmFsdWUoJ2NvbnRlbnQnKTtcbiAgICAgIGxldCBwcmVmaXggPSBnZXRQcmVmaXgoZm9udEZhbWlseSwgZm9udFdlaWdodCk7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHZhbHVlOiBoZXhWYWx1ZSxcbiAgICAgICAgaXNTZWNvbmRhcnlcbiAgICAgIH0gPSBoZXhWYWx1ZUZyb21Db250ZW50KGNvbnRlbnQpO1xuICAgICAgY29uc3QgaXNWNCA9IGZvbnRGYW1pbHlNYXRjaFswXS5zdGFydHNXaXRoKCdGb250QXdlc29tZScpO1xuICAgICAgbGV0IGljb25OYW1lID0gYnlVbmljb2RlKHByZWZpeCwgaGV4VmFsdWUpO1xuICAgICAgbGV0IGljb25JZGVudGlmaWVyID0gaWNvbk5hbWU7XG5cbiAgICAgIGlmIChpc1Y0KSB7XG4gICAgICAgIGNvbnN0IGljb25OYW1lNCA9IGJ5T2xkVW5pY29kZShoZXhWYWx1ZSk7XG5cbiAgICAgICAgaWYgKGljb25OYW1lNC5pY29uTmFtZSAmJiBpY29uTmFtZTQucHJlZml4KSB7XG4gICAgICAgICAgaWNvbk5hbWUgPSBpY29uTmFtZTQuaWNvbk5hbWU7XG4gICAgICAgICAgcHJlZml4ID0gaWNvbk5hbWU0LnByZWZpeDtcbiAgICAgICAgfVxuICAgICAgfSAvLyBPbmx5IGNvbnZlcnQgdGhlIHBzZXVkbyBlbGVtZW50IGluIHRoaXMgOjpiZWZvcmUvOjphZnRlciBwb3NpdGlvbiBpbnRvIGFuIGljb24gaWYgd2UgaGF2ZW4ndFxuICAgICAgLy8gYWxyZWFkeSBkb25lIHNvIHdpdGggdGhlIHNhbWUgcHJlZml4IGFuZCBpY29uTmFtZVxuXG5cbiAgICAgIGlmIChpY29uTmFtZSAmJiAhaXNTZWNvbmRhcnkgJiYgKCFhbHJlYWR5UHJvY2Vzc2VkUHNldWRvRWxlbWVudCB8fCBhbHJlYWR5UHJvY2Vzc2VkUHNldWRvRWxlbWVudC5nZXRBdHRyaWJ1dGUoREFUQV9QUkVGSVgpICE9PSBwcmVmaXggfHwgYWxyZWFkeVByb2Nlc3NlZFBzZXVkb0VsZW1lbnQuZ2V0QXR0cmlidXRlKERBVEFfSUNPTikgIT09IGljb25JZGVudGlmaWVyKSkge1xuICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShwZW5kaW5nQXR0cmlidXRlLCBpY29uSWRlbnRpZmllcik7XG5cbiAgICAgICAgaWYgKGFscmVhZHlQcm9jZXNzZWRQc2V1ZG9FbGVtZW50KSB7XG4gICAgICAgICAgLy8gRGVsZXRlIHRoZSBvbGQgb25lLCBzaW5jZSB3ZSdyZSByZXBsYWNpbmcgaXQgd2l0aCBhIG5ldyBvbmVcbiAgICAgICAgICBub2RlLnJlbW92ZUNoaWxkKGFscmVhZHlQcm9jZXNzZWRQc2V1ZG9FbGVtZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG1ldGEgPSBibGFua01ldGEoKTtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIGV4dHJhXG4gICAgICAgIH0gPSBtZXRhO1xuICAgICAgICBleHRyYS5hdHRyaWJ1dGVzW0RBVEFfRkFfUFNFVURPX0VMRU1FTlRdID0gcG9zaXRpb247XG4gICAgICAgIGZpbmRJY29uKGljb25OYW1lLCBwcmVmaXgpLnRoZW4obWFpbiA9PiB7XG4gICAgICAgICAgY29uc3QgYWJzdHJhY3QgPSBtYWtlSW5saW5lU3ZnQWJzdHJhY3QoeyAuLi5tZXRhLFxuICAgICAgICAgICAgaWNvbnM6IHtcbiAgICAgICAgICAgICAgbWFpbixcbiAgICAgICAgICAgICAgbWFzazogZW1wdHlDYW5vbmljYWxJY29uKClcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwcmVmaXgsXG4gICAgICAgICAgICBpY29uTmFtZTogaWNvbklkZW50aWZpZXIsXG4gICAgICAgICAgICBleHRyYSxcbiAgICAgICAgICAgIHdhdGNoYWJsZTogdHJ1ZVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSBET0NVTUVOVC5jcmVhdGVFbGVtZW50TlMoJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJywgJ3N2ZycpO1xuXG4gICAgICAgICAgaWYgKHBvc2l0aW9uID09PSAnOjpiZWZvcmUnKSB7XG4gICAgICAgICAgICBub2RlLmluc2VydEJlZm9yZShlbGVtZW50LCBub2RlLmZpcnN0Q2hpbGQpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBub2RlLmFwcGVuZENoaWxkKGVsZW1lbnQpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGVsZW1lbnQub3V0ZXJIVE1MID0gYWJzdHJhY3QubWFwKGEgPT4gdG9IdG1sKGEpKS5qb2luKCdcXG4nKTtcbiAgICAgICAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZShwZW5kaW5nQXR0cmlidXRlKTtcbiAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgIH0pLmNhdGNoKHJlamVjdCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc29sdmUoKTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiByZXBsYWNlKG5vZGUpIHtcbiAgcmV0dXJuIFByb21pc2UuYWxsKFtyZXBsYWNlRm9yUG9zaXRpb24obm9kZSwgJzo6YmVmb3JlJyksIHJlcGxhY2VGb3JQb3NpdGlvbihub2RlLCAnOjphZnRlcicpXSk7XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NhYmxlKG5vZGUpIHtcbiAgcmV0dXJuIG5vZGUucGFyZW50Tm9kZSAhPT0gZG9jdW1lbnQuaGVhZCAmJiAhflRBR05BTUVTX1RPX1NLSVBfRk9SX1BTRVVET0VMRU1FTlRTLmluZGV4T2Yobm9kZS50YWdOYW1lLnRvVXBwZXJDYXNlKCkpICYmICFub2RlLmdldEF0dHJpYnV0ZShEQVRBX0ZBX1BTRVVET19FTEVNRU5UKSAmJiAoIW5vZGUucGFyZW50Tm9kZSB8fCBub2RlLnBhcmVudE5vZGUudGFnTmFtZSAhPT0gJ3N2ZycpO1xufVxuXG5mdW5jdGlvbiBzZWFyY2hQc2V1ZG9FbGVtZW50cyhyb290KSB7XG4gIGlmICghSVNfRE9NKSByZXR1cm47XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3Qgb3BlcmF0aW9ucyA9IHRvQXJyYXkocm9vdC5xdWVyeVNlbGVjdG9yQWxsKCcqJykpLmZpbHRlcihwcm9jZXNzYWJsZSkubWFwKHJlcGxhY2UpO1xuICAgIGNvbnN0IGVuZCA9IHBlcmYuYmVnaW4oJ3NlYXJjaFBzZXVkb0VsZW1lbnRzJyk7XG4gICAgZGlzYWJsZU9ic2VydmF0aW9uKCk7XG4gICAgUHJvbWlzZS5hbGwob3BlcmF0aW9ucykudGhlbigoKSA9PiB7XG4gICAgICBlbmQoKTtcbiAgICAgIGVuYWJsZU9ic2VydmF0aW9uKCk7XG4gICAgICByZXNvbHZlKCk7XG4gICAgfSkuY2F0Y2goKCkgPT4ge1xuICAgICAgZW5kKCk7XG4gICAgICBlbmFibGVPYnNlcnZhdGlvbigpO1xuICAgICAgcmVqZWN0KCk7XG4gICAgfSk7XG4gIH0pO1xufVxuXG52YXIgUHNldWRvRWxlbWVudHMgPSB7XG4gIGhvb2tzKCkge1xuICAgIHJldHVybiB7XG4gICAgICBtdXRhdGlvbk9ic2VydmVyQ2FsbGJhY2tzKGFjY3VtdWxhdG9yKSB7XG4gICAgICAgIGFjY3VtdWxhdG9yLnBzZXVkb0VsZW1lbnRzQ2FsbGJhY2sgPSBzZWFyY2hQc2V1ZG9FbGVtZW50cztcbiAgICAgICAgcmV0dXJuIGFjY3VtdWxhdG9yO1xuICAgICAgfVxuXG4gICAgfTtcbiAgfSxcblxuICBwcm92aWRlcyhwcm92aWRlcnMpIHtcbiAgICBwcm92aWRlcnMucHNldWRvRWxlbWVudHMyc3ZnID0gZnVuY3Rpb24gKHBhcmFtcykge1xuICAgICAgY29uc3Qge1xuICAgICAgICBub2RlID0gRE9DVU1FTlRcbiAgICAgIH0gPSBwYXJhbXM7XG5cbiAgICAgIGlmIChjb25maWcuc2VhcmNoUHNldWRvRWxlbWVudHMpIHtcbiAgICAgICAgc2VhcmNoUHNldWRvRWxlbWVudHMobm9kZSk7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG59O1xuXG5sZXQgX3Vud2F0Y2hlZCA9IGZhbHNlO1xudmFyIE11dGF0aW9uT2JzZXJ2ZXIkMSA9IHtcbiAgbWl4b3V0KCkge1xuICAgIHJldHVybiB7XG4gICAgICBkb206IHtcbiAgICAgICAgdW53YXRjaCgpIHtcbiAgICAgICAgICBkaXNhYmxlT2JzZXJ2YXRpb24oKTtcbiAgICAgICAgICBfdW53YXRjaGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICB9XG4gICAgfTtcbiAgfSxcblxuICBob29rcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYm9vdHN0cmFwKCkge1xuICAgICAgICBvYnNlcnZlKGNoYWluSG9va3MoJ211dGF0aW9uT2JzZXJ2ZXJDYWxsYmFja3MnLCB7fSkpO1xuICAgICAgfSxcblxuICAgICAgbm9BdXRvKCkge1xuICAgICAgICBkaXNjb25uZWN0KCk7XG4gICAgICB9LFxuXG4gICAgICB3YXRjaChwYXJhbXMpIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIG9ic2VydmVNdXRhdGlvbnNSb290XG4gICAgICAgIH0gPSBwYXJhbXM7XG5cbiAgICAgICAgaWYgKF91bndhdGNoZWQpIHtcbiAgICAgICAgICBlbmFibGVPYnNlcnZhdGlvbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9ic2VydmUoY2hhaW5Ib29rcygnbXV0YXRpb25PYnNlcnZlckNhbGxiYWNrcycsIHtcbiAgICAgICAgICAgIG9ic2VydmVNdXRhdGlvbnNSb290XG4gICAgICAgICAgfSkpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICB9O1xuICB9XG5cbn07XG5cbmNvbnN0IHBhcnNlVHJhbnNmb3JtU3RyaW5nID0gdHJhbnNmb3JtU3RyaW5nID0+IHtcbiAgbGV0IHRyYW5zZm9ybSA9IHtcbiAgICBzaXplOiAxNixcbiAgICB4OiAwLFxuICAgIHk6IDAsXG4gICAgZmxpcFg6IGZhbHNlLFxuICAgIGZsaXBZOiBmYWxzZSxcbiAgICByb3RhdGU6IDBcbiAgfTtcbiAgcmV0dXJuIHRyYW5zZm9ybVN0cmluZy50b0xvd2VyQ2FzZSgpLnNwbGl0KCcgJykucmVkdWNlKChhY2MsIG4pID0+IHtcbiAgICBjb25zdCBwYXJ0cyA9IG4udG9Mb3dlckNhc2UoKS5zcGxpdCgnLScpO1xuICAgIGNvbnN0IGZpcnN0ID0gcGFydHNbMF07XG4gICAgbGV0IHJlc3QgPSBwYXJ0cy5zbGljZSgxKS5qb2luKCctJyk7XG5cbiAgICBpZiAoZmlyc3QgJiYgcmVzdCA9PT0gJ2gnKSB7XG4gICAgICBhY2MuZmxpcFggPSB0cnVlO1xuICAgICAgcmV0dXJuIGFjYztcbiAgICB9XG5cbiAgICBpZiAoZmlyc3QgJiYgcmVzdCA9PT0gJ3YnKSB7XG4gICAgICBhY2MuZmxpcFkgPSB0cnVlO1xuICAgICAgcmV0dXJuIGFjYztcbiAgICB9XG5cbiAgICByZXN0ID0gcGFyc2VGbG9hdChyZXN0KTtcblxuICAgIGlmIChpc05hTihyZXN0KSkge1xuICAgICAgcmV0dXJuIGFjYztcbiAgICB9XG5cbiAgICBzd2l0Y2ggKGZpcnN0KSB7XG4gICAgICBjYXNlICdncm93JzpcbiAgICAgICAgYWNjLnNpemUgPSBhY2Muc2l6ZSArIHJlc3Q7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdzaHJpbmsnOlxuICAgICAgICBhY2Muc2l6ZSA9IGFjYy5zaXplIC0gcmVzdDtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICBhY2MueCA9IGFjYy54IC0gcmVzdDtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgICAgYWNjLnggPSBhY2MueCArIHJlc3Q7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICd1cCc6XG4gICAgICAgIGFjYy55ID0gYWNjLnkgLSByZXN0O1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnZG93bic6XG4gICAgICAgIGFjYy55ID0gYWNjLnkgKyByZXN0O1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAncm90YXRlJzpcbiAgICAgICAgYWNjLnJvdGF0ZSA9IGFjYy5yb3RhdGUgKyByZXN0O1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICByZXR1cm4gYWNjO1xuICB9LCB0cmFuc2Zvcm0pO1xufTtcbnZhciBQb3dlclRyYW5zZm9ybXMgPSB7XG4gIG1peG91dCgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgcGFyc2U6IHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2Zvcm1TdHJpbmcgPT4ge1xuICAgICAgICAgIHJldHVybiBwYXJzZVRyYW5zZm9ybVN0cmluZyh0cmFuc2Zvcm1TdHJpbmcpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgfSxcblxuICBob29rcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgcGFyc2VOb2RlQXR0cmlidXRlcyhhY2N1bXVsYXRvciwgbm9kZSkge1xuICAgICAgICBjb25zdCB0cmFuc2Zvcm1TdHJpbmcgPSBub2RlLmdldEF0dHJpYnV0ZSgnZGF0YS1mYS10cmFuc2Zvcm0nKTtcblxuICAgICAgICBpZiAodHJhbnNmb3JtU3RyaW5nKSB7XG4gICAgICAgICAgYWNjdW11bGF0b3IudHJhbnNmb3JtID0gcGFyc2VUcmFuc2Zvcm1TdHJpbmcodHJhbnNmb3JtU3RyaW5nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhY2N1bXVsYXRvcjtcbiAgICAgIH1cblxuICAgIH07XG4gIH0sXG5cbiAgcHJvdmlkZXMocHJvdmlkZXJzKSB7XG4gICAgcHJvdmlkZXJzLmdlbmVyYXRlQWJzdHJhY3RUcmFuc2Zvcm1Hcm91cGluZyA9IGZ1bmN0aW9uIChfcmVmKSB7XG4gICAgICBsZXQge1xuICAgICAgICBtYWluLFxuICAgICAgICB0cmFuc2Zvcm0sXG4gICAgICAgIGNvbnRhaW5lcldpZHRoLFxuICAgICAgICBpY29uV2lkdGhcbiAgICAgIH0gPSBfcmVmO1xuICAgICAgY29uc3Qgb3V0ZXIgPSB7XG4gICAgICAgIHRyYW5zZm9ybTogXCJ0cmFuc2xhdGUoXCIuY29uY2F0KGNvbnRhaW5lcldpZHRoIC8gMiwgXCIgMjU2KVwiKVxuICAgICAgfTtcbiAgICAgIGNvbnN0IGlubmVyVHJhbnNsYXRlID0gXCJ0cmFuc2xhdGUoXCIuY29uY2F0KHRyYW5zZm9ybS54ICogMzIsIFwiLCBcIikuY29uY2F0KHRyYW5zZm9ybS55ICogMzIsIFwiKSBcIik7XG4gICAgICBjb25zdCBpbm5lclNjYWxlID0gXCJzY2FsZShcIi5jb25jYXQodHJhbnNmb3JtLnNpemUgLyAxNiAqICh0cmFuc2Zvcm0uZmxpcFggPyAtMSA6IDEpLCBcIiwgXCIpLmNvbmNhdCh0cmFuc2Zvcm0uc2l6ZSAvIDE2ICogKHRyYW5zZm9ybS5mbGlwWSA/IC0xIDogMSksIFwiKSBcIik7XG4gICAgICBjb25zdCBpbm5lclJvdGF0ZSA9IFwicm90YXRlKFwiLmNvbmNhdCh0cmFuc2Zvcm0ucm90YXRlLCBcIiAwIDApXCIpO1xuICAgICAgY29uc3QgaW5uZXIgPSB7XG4gICAgICAgIHRyYW5zZm9ybTogXCJcIi5jb25jYXQoaW5uZXJUcmFuc2xhdGUsIFwiIFwiKS5jb25jYXQoaW5uZXJTY2FsZSwgXCIgXCIpLmNvbmNhdChpbm5lclJvdGF0ZSlcbiAgICAgIH07XG4gICAgICBjb25zdCBwYXRoID0ge1xuICAgICAgICB0cmFuc2Zvcm06IFwidHJhbnNsYXRlKFwiLmNvbmNhdChpY29uV2lkdGggLyAyICogLTEsIFwiIC0yNTYpXCIpXG4gICAgICB9O1xuICAgICAgY29uc3Qgb3BlcmF0aW9ucyA9IHtcbiAgICAgICAgb3V0ZXIsXG4gICAgICAgIGlubmVyLFxuICAgICAgICBwYXRoXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdGFnOiAnZycsXG4gICAgICAgIGF0dHJpYnV0ZXM6IHsgLi4ub3BlcmF0aW9ucy5vdXRlclxuICAgICAgICB9LFxuICAgICAgICBjaGlsZHJlbjogW3tcbiAgICAgICAgICB0YWc6ICdnJyxcbiAgICAgICAgICBhdHRyaWJ1dGVzOiB7IC4uLm9wZXJhdGlvbnMuaW5uZXJcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNoaWxkcmVuOiBbe1xuICAgICAgICAgICAgdGFnOiBtYWluLmljb24udGFnLFxuICAgICAgICAgICAgY2hpbGRyZW46IG1haW4uaWNvbi5jaGlsZHJlbixcbiAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHsgLi4ubWFpbi5pY29uLmF0dHJpYnV0ZXMsXG4gICAgICAgICAgICAgIC4uLm9wZXJhdGlvbnMucGF0aFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1dXG4gICAgICAgIH1dXG4gICAgICB9O1xuICAgIH07XG4gIH1cblxufTtcblxuY29uc3QgQUxMX1NQQUNFID0ge1xuICB4OiAwLFxuICB5OiAwLFxuICB3aWR0aDogJzEwMCUnLFxuICBoZWlnaHQ6ICcxMDAlJ1xufTtcblxuZnVuY3Rpb24gZmlsbEJsYWNrKGFic3RyYWN0KSB7XG4gIGxldCBmb3JjZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogdHJ1ZTtcblxuICBpZiAoYWJzdHJhY3QuYXR0cmlidXRlcyAmJiAoYWJzdHJhY3QuYXR0cmlidXRlcy5maWxsIHx8IGZvcmNlKSkge1xuICAgIGFic3RyYWN0LmF0dHJpYnV0ZXMuZmlsbCA9ICdibGFjayc7XG4gIH1cblxuICByZXR1cm4gYWJzdHJhY3Q7XG59XG5cbmZ1bmN0aW9uIGRlR3JvdXAoYWJzdHJhY3QpIHtcbiAgaWYgKGFic3RyYWN0LnRhZyA9PT0gJ2cnKSB7XG4gICAgcmV0dXJuIGFic3RyYWN0LmNoaWxkcmVuO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBbYWJzdHJhY3RdO1xuICB9XG59XG5cbnZhciBNYXNrcyA9IHtcbiAgaG9va3MoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHBhcnNlTm9kZUF0dHJpYnV0ZXMoYWNjdW11bGF0b3IsIG5vZGUpIHtcbiAgICAgICAgY29uc3QgbWFza0RhdGEgPSBub2RlLmdldEF0dHJpYnV0ZSgnZGF0YS1mYS1tYXNrJyk7XG4gICAgICAgIGNvbnN0IG1hc2sgPSAhbWFza0RhdGEgPyBlbXB0eUNhbm9uaWNhbEljb24oKSA6IGdldENhbm9uaWNhbEljb24obWFza0RhdGEuc3BsaXQoJyAnKS5tYXAoaSA9PiBpLnRyaW0oKSkpO1xuXG4gICAgICAgIGlmICghbWFzay5wcmVmaXgpIHtcbiAgICAgICAgICBtYXNrLnByZWZpeCA9IGdldERlZmF1bHRVc2FibGVQcmVmaXgoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGFjY3VtdWxhdG9yLm1hc2sgPSBtYXNrO1xuICAgICAgICBhY2N1bXVsYXRvci5tYXNrSWQgPSBub2RlLmdldEF0dHJpYnV0ZSgnZGF0YS1mYS1tYXNrLWlkJyk7XG4gICAgICAgIHJldHVybiBhY2N1bXVsYXRvcjtcbiAgICAgIH1cblxuICAgIH07XG4gIH0sXG5cbiAgcHJvdmlkZXMocHJvdmlkZXJzKSB7XG4gICAgcHJvdmlkZXJzLmdlbmVyYXRlQWJzdHJhY3RNYXNrID0gZnVuY3Rpb24gKF9yZWYpIHtcbiAgICAgIGxldCB7XG4gICAgICAgIGNoaWxkcmVuLFxuICAgICAgICBhdHRyaWJ1dGVzLFxuICAgICAgICBtYWluLFxuICAgICAgICBtYXNrLFxuICAgICAgICBtYXNrSWQ6IGV4cGxpY2l0TWFza0lkLFxuICAgICAgICB0cmFuc2Zvcm1cbiAgICAgIH0gPSBfcmVmO1xuICAgICAgY29uc3Qge1xuICAgICAgICB3aWR0aDogbWFpbldpZHRoLFxuICAgICAgICBpY29uOiBtYWluUGF0aFxuICAgICAgfSA9IG1haW47XG4gICAgICBjb25zdCB7XG4gICAgICAgIHdpZHRoOiBtYXNrV2lkdGgsXG4gICAgICAgIGljb246IG1hc2tQYXRoXG4gICAgICB9ID0gbWFzaztcbiAgICAgIGNvbnN0IHRyYW5zID0gdHJhbnNmb3JtRm9yU3ZnKHtcbiAgICAgICAgdHJhbnNmb3JtLFxuICAgICAgICBjb250YWluZXJXaWR0aDogbWFza1dpZHRoLFxuICAgICAgICBpY29uV2lkdGg6IG1haW5XaWR0aFxuICAgICAgfSk7XG4gICAgICBjb25zdCBtYXNrUmVjdCA9IHtcbiAgICAgICAgdGFnOiAncmVjdCcsXG4gICAgICAgIGF0dHJpYnV0ZXM6IHsgLi4uQUxMX1NQQUNFLFxuICAgICAgICAgIGZpbGw6ICd3aGl0ZSdcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIGNvbnN0IG1hc2tJbm5lckdyb3VwQ2hpbGRyZW5NaXhpbiA9IG1haW5QYXRoLmNoaWxkcmVuID8ge1xuICAgICAgICBjaGlsZHJlbjogbWFpblBhdGguY2hpbGRyZW4ubWFwKGZpbGxCbGFjaylcbiAgICAgIH0gOiB7fTtcbiAgICAgIGNvbnN0IG1hc2tJbm5lckdyb3VwID0ge1xuICAgICAgICB0YWc6ICdnJyxcbiAgICAgICAgYXR0cmlidXRlczogeyAuLi50cmFucy5pbm5lclxuICAgICAgICB9LFxuICAgICAgICBjaGlsZHJlbjogW2ZpbGxCbGFjayh7XG4gICAgICAgICAgdGFnOiBtYWluUGF0aC50YWcsXG4gICAgICAgICAgYXR0cmlidXRlczogeyAuLi5tYWluUGF0aC5hdHRyaWJ1dGVzLFxuICAgICAgICAgICAgLi4udHJhbnMucGF0aFxuICAgICAgICAgIH0sXG4gICAgICAgICAgLi4ubWFza0lubmVyR3JvdXBDaGlsZHJlbk1peGluXG4gICAgICAgIH0pXVxuICAgICAgfTtcbiAgICAgIGNvbnN0IG1hc2tPdXRlckdyb3VwID0ge1xuICAgICAgICB0YWc6ICdnJyxcbiAgICAgICAgYXR0cmlidXRlczogeyAuLi50cmFucy5vdXRlclxuICAgICAgICB9LFxuICAgICAgICBjaGlsZHJlbjogW21hc2tJbm5lckdyb3VwXVxuICAgICAgfTtcbiAgICAgIGNvbnN0IG1hc2tJZCA9IFwibWFzay1cIi5jb25jYXQoZXhwbGljaXRNYXNrSWQgfHwgbmV4dFVuaXF1ZUlkKCkpO1xuICAgICAgY29uc3QgY2xpcElkID0gXCJjbGlwLVwiLmNvbmNhdChleHBsaWNpdE1hc2tJZCB8fCBuZXh0VW5pcXVlSWQoKSk7XG4gICAgICBjb25zdCBtYXNrVGFnID0ge1xuICAgICAgICB0YWc6ICdtYXNrJyxcbiAgICAgICAgYXR0cmlidXRlczogeyAuLi5BTExfU1BBQ0UsXG4gICAgICAgICAgaWQ6IG1hc2tJZCxcbiAgICAgICAgICBtYXNrVW5pdHM6ICd1c2VyU3BhY2VPblVzZScsXG4gICAgICAgICAgbWFza0NvbnRlbnRVbml0czogJ3VzZXJTcGFjZU9uVXNlJ1xuICAgICAgICB9LFxuICAgICAgICBjaGlsZHJlbjogW21hc2tSZWN0LCBtYXNrT3V0ZXJHcm91cF1cbiAgICAgIH07XG4gICAgICBjb25zdCBkZWZzID0ge1xuICAgICAgICB0YWc6ICdkZWZzJyxcbiAgICAgICAgY2hpbGRyZW46IFt7XG4gICAgICAgICAgdGFnOiAnY2xpcFBhdGgnLFxuICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgIGlkOiBjbGlwSWRcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNoaWxkcmVuOiBkZUdyb3VwKG1hc2tQYXRoKVxuICAgICAgICB9LCBtYXNrVGFnXVxuICAgICAgfTtcbiAgICAgIGNoaWxkcmVuLnB1c2goZGVmcywge1xuICAgICAgICB0YWc6ICdyZWN0JyxcbiAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgIGZpbGw6ICdjdXJyZW50Q29sb3InLFxuICAgICAgICAgICdjbGlwLXBhdGgnOiBcInVybCgjXCIuY29uY2F0KGNsaXBJZCwgXCIpXCIpLFxuICAgICAgICAgIG1hc2s6IFwidXJsKCNcIi5jb25jYXQobWFza0lkLCBcIilcIiksXG4gICAgICAgICAgLi4uQUxMX1NQQUNFXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY2hpbGRyZW4sXG4gICAgICAgIGF0dHJpYnV0ZXNcbiAgICAgIH07XG4gICAgfTtcbiAgfVxuXG59O1xuXG52YXIgTWlzc2luZ0ljb25JbmRpY2F0b3IgPSB7XG4gIHByb3ZpZGVzKHByb3ZpZGVycykge1xuICAgIGxldCByZWR1Y2VNb3Rpb24gPSBmYWxzZTtcblxuICAgIGlmIChXSU5ET1cubWF0Y2hNZWRpYSkge1xuICAgICAgcmVkdWNlTW90aW9uID0gV0lORE9XLm1hdGNoTWVkaWEoJyhwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpJykubWF0Y2hlcztcbiAgICB9XG5cbiAgICBwcm92aWRlcnMubWlzc2luZ0ljb25BYnN0cmFjdCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGdDaGlsZHJlbiA9IFtdO1xuICAgICAgY29uc3QgRklMTCA9IHtcbiAgICAgICAgZmlsbDogJ2N1cnJlbnRDb2xvcidcbiAgICAgIH07XG4gICAgICBjb25zdCBBTklNQVRJT05fQkFTRSA9IHtcbiAgICAgICAgYXR0cmlidXRlVHlwZTogJ1hNTCcsXG4gICAgICAgIHJlcGVhdENvdW50OiAnaW5kZWZpbml0ZScsXG4gICAgICAgIGR1cjogJzJzJ1xuICAgICAgfTsgLy8gUmluZ1xuXG4gICAgICBnQ2hpbGRyZW4ucHVzaCh7XG4gICAgICAgIHRhZzogJ3BhdGgnLFxuICAgICAgICBhdHRyaWJ1dGVzOiB7IC4uLkZJTEwsXG4gICAgICAgICAgZDogJ00xNTYuNSw0NDcuN2wtMTIuNiwyOS41Yy0xOC43LTkuNS0zNS45LTIxLjItNTEuNS0zNC45bDIyLjctMjIuN0MxMjcuNiw0MzAuNSwxNDEuNSw0NDAsMTU2LjUsNDQ3Ljd6IE00MC42LDI3Mkg4LjUgYzEuNCwyMS4yLDUuNCw0MS43LDExLjcsNjEuMUw1MCwzMjEuMkM0NS4xLDMwNS41LDQxLjgsMjg5LDQwLjYsMjcyeiBNNDAuNiwyNDBjMS40LTE4LjgsNS4yLTM3LDExLjEtNTQuMWwtMjkuNS0xMi42IEMxNC43LDE5NC4zLDEwLDIxNi43LDguNSwyNDBINDAuNnogTTY0LjMsMTU2LjVjNy44LTE0LjksMTcuMi0yOC44LDI4LjEtNDEuNUw2OS43LDkyLjNjLTEzLjcsMTUuNi0yNS41LDMyLjgtMzQuOSw1MS41IEw2NC4zLDE1Ni41eiBNMzk3LDQxOS42Yy0xMy45LDEyLTI5LjQsMjIuMy00Ni4xLDMwLjRsMTEuOSwyOS44YzIwLjctOS45LDM5LjgtMjIuNiw1Ni45LTM3LjZMMzk3LDQxOS42eiBNMTE1LDkyLjQgYzEzLjktMTIsMjkuNC0yMi4zLDQ2LjEtMzAuNGwtMTEuOS0yOS44Yy0yMC43LDkuOS0zOS44LDIyLjYtNTYuOCwzNy42TDExNSw5Mi40eiBNNDQ3LjcsMzU1LjVjLTcuOCwxNC45LTE3LjIsMjguOC0yOC4xLDQxLjUgbDIyLjcsMjIuN2MxMy43LTE1LjYsMjUuNS0zMi45LDM0LjktNTEuNUw0NDcuNywzNTUuNXogTTQ3MS40LDI3MmMtMS40LDE4LjgtNS4yLDM3LTExLjEsNTQuMWwyOS41LDEyLjYgYzcuNS0yMS4xLDEyLjItNDMuNSwxMy42LTY2LjhINDcxLjR6IE0zMjEuMiw0NjJjLTE1LjcsNS0zMi4yLDguMi00OS4yLDkuNHYzMi4xYzIxLjItMS40LDQxLjctNS40LDYxLjEtMTEuN0wzMjEuMiw0NjJ6IE0yNDAsNDcxLjRjLTE4LjgtMS40LTM3LTUuMi01NC4xLTExLjFsLTEyLjYsMjkuNWMyMS4xLDcuNSw0My41LDEyLjIsNjYuOCwxMy42VjQ3MS40eiBNNDYyLDE5MC44YzUsMTUuNyw4LjIsMzIuMiw5LjQsNDkuMmgzMi4xIGMtMS40LTIxLjItNS40LTQxLjctMTEuNy02MS4xTDQ2MiwxOTAuOHogTTkyLjQsMzk3Yy0xMi0xMy45LTIyLjMtMjkuNC0zMC40LTQ2LjFsLTI5LjgsMTEuOWM5LjksMjAuNywyMi42LDM5LjgsMzcuNiw1Ni45IEw5Mi40LDM5N3ogTTI3Miw0MC42YzE4LjgsMS40LDM2LjksNS4yLDU0LjEsMTEuMWwxMi42LTI5LjVDMzE3LjcsMTQuNywyOTUuMywxMCwyNzIsOC41VjQwLjZ6IE0xOTAuOCw1MCBjMTUuNy01LDMyLjItOC4yLDQ5LjItOS40VjguNWMtMjEuMiwxLjQtNDEuNyw1LjQtNjEuMSwxMS43TDE5MC44LDUweiBNNDQyLjMsOTIuM0w0MTkuNiwxMTVjMTIsMTMuOSwyMi4zLDI5LjQsMzAuNSw0Ni4xIGwyOS44LTExLjlDNDcwLDEyOC41LDQ1Ny4zLDEwOS40LDQ0Mi4zLDkyLjN6IE0zOTcsOTIuNGwyMi43LTIyLjdjLTE1LjYtMTMuNy0zMi44LTI1LjUtNTEuNS0zNC45bC0xMi42LDI5LjUgQzM3MC40LDcyLjEsMzg0LjQsODEuNSwzOTcsOTIuNHonXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgY29uc3QgT1BBQ0lUWV9BTklNQVRFID0geyAuLi5BTklNQVRJT05fQkFTRSxcbiAgICAgICAgYXR0cmlidXRlTmFtZTogJ29wYWNpdHknXG4gICAgICB9O1xuICAgICAgY29uc3QgZG90ID0ge1xuICAgICAgICB0YWc6ICdjaXJjbGUnLFxuICAgICAgICBhdHRyaWJ1dGVzOiB7IC4uLkZJTEwsXG4gICAgICAgICAgY3g6ICcyNTYnLFxuICAgICAgICAgIGN5OiAnMzY0JyxcbiAgICAgICAgICByOiAnMjgnXG4gICAgICAgIH0sXG4gICAgICAgIGNoaWxkcmVuOiBbXVxuICAgICAgfTtcblxuICAgICAgaWYgKCFyZWR1Y2VNb3Rpb24pIHtcbiAgICAgICAgZG90LmNoaWxkcmVuLnB1c2goe1xuICAgICAgICAgIHRhZzogJ2FuaW1hdGUnLFxuICAgICAgICAgIGF0dHJpYnV0ZXM6IHsgLi4uQU5JTUFUSU9OX0JBU0UsXG4gICAgICAgICAgICBhdHRyaWJ1dGVOYW1lOiAncicsXG4gICAgICAgICAgICB2YWx1ZXM6ICcyODsxNDsyODsyODsxNDsyODsnXG4gICAgICAgICAgfVxuICAgICAgICB9LCB7XG4gICAgICAgICAgdGFnOiAnYW5pbWF0ZScsXG4gICAgICAgICAgYXR0cmlidXRlczogeyAuLi5PUEFDSVRZX0FOSU1BVEUsXG4gICAgICAgICAgICB2YWx1ZXM6ICcxOzA7MTsxOzA7MTsnXG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgZ0NoaWxkcmVuLnB1c2goZG90KTtcbiAgICAgIGdDaGlsZHJlbi5wdXNoKHtcbiAgICAgICAgdGFnOiAncGF0aCcsXG4gICAgICAgIGF0dHJpYnV0ZXM6IHsgLi4uRklMTCxcbiAgICAgICAgICBvcGFjaXR5OiAnMScsXG4gICAgICAgICAgZDogJ00yNjMuNywzMTJoLTE2Yy02LjYsMC0xMi01LjQtMTItMTJjMC03MSw3Ny40LTYzLjksNzcuNC0xMDcuOGMwLTIwLTE3LjgtNDAuMi01Ny40LTQwLjJjLTI5LjEsMC00NC4zLDkuNi01OS4yLDI4LjcgYy0zLjksNS0xMS4xLDYtMTYuMiwyLjRsLTEzLjEtOS4yYy01LjYtMy45LTYuOS0xMS44LTIuNi0xNy4yYzIxLjItMjcuMiw0Ni40LTQ0LjcsOTEuMi00NC43YzUyLjMsMCw5Ny40LDI5LjgsOTcuNCw4MC4yIGMwLDY3LjYtNzcuNCw2My41LTc3LjQsMTA3LjhDMjc1LjcsMzA2LjYsMjcwLjMsMzEyLDI2My43LDMxMnonXG4gICAgICAgIH0sXG4gICAgICAgIGNoaWxkcmVuOiByZWR1Y2VNb3Rpb24gPyBbXSA6IFt7XG4gICAgICAgICAgdGFnOiAnYW5pbWF0ZScsXG4gICAgICAgICAgYXR0cmlidXRlczogeyAuLi5PUEFDSVRZX0FOSU1BVEUsXG4gICAgICAgICAgICB2YWx1ZXM6ICcxOzA7MDswOzA7MTsnXG4gICAgICAgICAgfVxuICAgICAgICB9XVxuICAgICAgfSk7XG5cbiAgICAgIGlmICghcmVkdWNlTW90aW9uKSB7XG4gICAgICAgIC8vIEV4Y2xhbWF0aW9uXG4gICAgICAgIGdDaGlsZHJlbi5wdXNoKHtcbiAgICAgICAgICB0YWc6ICdwYXRoJyxcbiAgICAgICAgICBhdHRyaWJ1dGVzOiB7IC4uLkZJTEwsXG4gICAgICAgICAgICBvcGFjaXR5OiAnMCcsXG4gICAgICAgICAgICBkOiAnTTIzMi41LDEzNC41bDcsMTY4YzAuMyw2LjQsNS42LDExLjUsMTIsMTEuNWg5YzYuNCwwLDExLjctNS4xLDEyLTExLjVsNy0xNjhjMC4zLTYuOC01LjItMTIuNS0xMi0xMi41aC0yMyBDMjM3LjcsMTIyLDIzMi4yLDEyNy43LDIzMi41LDEzNC41eidcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNoaWxkcmVuOiBbe1xuICAgICAgICAgICAgdGFnOiAnYW5pbWF0ZScsXG4gICAgICAgICAgICBhdHRyaWJ1dGVzOiB7IC4uLk9QQUNJVFlfQU5JTUFURSxcbiAgICAgICAgICAgICAgdmFsdWVzOiAnMDswOzE7MTswOzA7J1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1dXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICB0YWc6ICdnJyxcbiAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICdjbGFzcyc6ICdtaXNzaW5nJ1xuICAgICAgICB9LFxuICAgICAgICBjaGlsZHJlbjogZ0NoaWxkcmVuXG4gICAgICB9O1xuICAgIH07XG4gIH1cblxufTtcblxudmFyIFN2Z1N5bWJvbHMgPSB7XG4gIGhvb2tzKCkge1xuICAgIHJldHVybiB7XG4gICAgICBwYXJzZU5vZGVBdHRyaWJ1dGVzKGFjY3VtdWxhdG9yLCBub2RlKSB7XG4gICAgICAgIGNvbnN0IHN5bWJvbERhdGEgPSBub2RlLmdldEF0dHJpYnV0ZSgnZGF0YS1mYS1zeW1ib2wnKTtcbiAgICAgICAgY29uc3Qgc3ltYm9sID0gc3ltYm9sRGF0YSA9PT0gbnVsbCA/IGZhbHNlIDogc3ltYm9sRGF0YSA9PT0gJycgPyB0cnVlIDogc3ltYm9sRGF0YTtcbiAgICAgICAgYWNjdW11bGF0b3JbJ3N5bWJvbCddID0gc3ltYm9sO1xuICAgICAgICByZXR1cm4gYWNjdW11bGF0b3I7XG4gICAgICB9XG5cbiAgICB9O1xuICB9XG5cbn07XG5cbnZhciBwbHVnaW5zID0gW0luamVjdENTUywgUmVwbGFjZUVsZW1lbnRzLCBMYXllcnMsIExheWVyc0NvdW50ZXIsIExheWVyc1RleHQsIFBzZXVkb0VsZW1lbnRzLCBNdXRhdGlvbk9ic2VydmVyJDEsIFBvd2VyVHJhbnNmb3JtcywgTWFza3MsIE1pc3NpbmdJY29uSW5kaWNhdG9yLCBTdmdTeW1ib2xzXTtcblxucmVnaXN0ZXJQbHVnaW5zKHBsdWdpbnMsIHtcbiAgbWl4b3V0c1RvOiBhcGlcbn0pO1xuY29uc3Qgbm9BdXRvJDEgPSBhcGkubm9BdXRvO1xuY29uc3QgY29uZmlnJDEgPSBhcGkuY29uZmlnO1xuY29uc3QgbGlicmFyeSQxID0gYXBpLmxpYnJhcnk7XG5jb25zdCBkb20kMSA9IGFwaS5kb207XG5jb25zdCBwYXJzZSQxID0gYXBpLnBhcnNlO1xuY29uc3QgZmluZEljb25EZWZpbml0aW9uJDEgPSBhcGkuZmluZEljb25EZWZpbml0aW9uO1xuY29uc3QgdG9IdG1sJDEgPSBhcGkudG9IdG1sO1xuY29uc3QgaWNvbiA9IGFwaS5pY29uO1xuY29uc3QgbGF5ZXIgPSBhcGkubGF5ZXI7XG5jb25zdCB0ZXh0ID0gYXBpLnRleHQ7XG5jb25zdCBjb3VudGVyID0gYXBpLmNvdW50ZXI7XG5cbmV4cG9ydCB7IG5vQXV0byQxIGFzIG5vQXV0bywgY29uZmlnJDEgYXMgY29uZmlnLCBsaWJyYXJ5JDEgYXMgbGlicmFyeSwgZG9tJDEgYXMgZG9tLCBwYXJzZSQxIGFzIHBhcnNlLCBmaW5kSWNvbkRlZmluaXRpb24kMSBhcyBmaW5kSWNvbkRlZmluaXRpb24sIHRvSHRtbCQxIGFzIHRvSHRtbCwgaWNvbiwgbGF5ZXIsIHRleHQsIGNvdW50ZXIsIGFwaSB9O1xuIiwgIi8qXG5vYmplY3QtYXNzaWduXG4oYykgU2luZHJlIFNvcmh1c1xuQGxpY2Vuc2UgTUlUXG4qL1xuXG4ndXNlIHN0cmljdCc7XG4vKiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtdmFycyAqL1xudmFyIGdldE93blByb3BlcnR5U3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG52YXIgaGFzT3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIHByb3BJc0VudW1lcmFibGUgPSBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xuXG5mdW5jdGlvbiB0b09iamVjdCh2YWwpIHtcblx0aWYgKHZhbCA9PT0gbnVsbCB8fCB2YWwgPT09IHVuZGVmaW5lZCkge1xuXHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ09iamVjdC5hc3NpZ24gY2Fubm90IGJlIGNhbGxlZCB3aXRoIG51bGwgb3IgdW5kZWZpbmVkJyk7XG5cdH1cblxuXHRyZXR1cm4gT2JqZWN0KHZhbCk7XG59XG5cbmZ1bmN0aW9uIHNob3VsZFVzZU5hdGl2ZSgpIHtcblx0dHJ5IHtcblx0XHRpZiAoIU9iamVjdC5hc3NpZ24pIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHQvLyBEZXRlY3QgYnVnZ3kgcHJvcGVydHkgZW51bWVyYXRpb24gb3JkZXIgaW4gb2xkZXIgVjggdmVyc2lvbnMuXG5cblx0XHQvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD00MTE4XG5cdFx0dmFyIHRlc3QxID0gbmV3IFN0cmluZygnYWJjJyk7ICAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLW5ldy13cmFwcGVyc1xuXHRcdHRlc3QxWzVdID0gJ2RlJztcblx0XHRpZiAoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGVzdDEpWzBdID09PSAnNScpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHQvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0zMDU2XG5cdFx0dmFyIHRlc3QyID0ge307XG5cdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCAxMDsgaSsrKSB7XG5cdFx0XHR0ZXN0MlsnXycgKyBTdHJpbmcuZnJvbUNoYXJDb2RlKGkpXSA9IGk7XG5cdFx0fVxuXHRcdHZhciBvcmRlcjIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0ZXN0MikubWFwKGZ1bmN0aW9uIChuKSB7XG5cdFx0XHRyZXR1cm4gdGVzdDJbbl07XG5cdFx0fSk7XG5cdFx0aWYgKG9yZGVyMi5qb2luKCcnKSAhPT0gJzAxMjM0NTY3ODknKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0Ly8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MzA1NlxuXHRcdHZhciB0ZXN0MyA9IHt9O1xuXHRcdCdhYmNkZWZnaGlqa2xtbm9wcXJzdCcuc3BsaXQoJycpLmZvckVhY2goZnVuY3Rpb24gKGxldHRlcikge1xuXHRcdFx0dGVzdDNbbGV0dGVyXSA9IGxldHRlcjtcblx0XHR9KTtcblx0XHRpZiAoT2JqZWN0LmtleXMoT2JqZWN0LmFzc2lnbih7fSwgdGVzdDMpKS5qb2luKCcnKSAhPT1cblx0XHRcdFx0J2FiY2RlZmdoaWprbG1ub3BxcnN0Jykge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdHJldHVybiB0cnVlO1xuXHR9IGNhdGNoIChlcnIpIHtcblx0XHQvLyBXZSBkb24ndCBleHBlY3QgYW55IG9mIHRoZSBhYm92ZSB0byB0aHJvdywgYnV0IGJldHRlciB0byBiZSBzYWZlLlxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNob3VsZFVzZU5hdGl2ZSgpID8gT2JqZWN0LmFzc2lnbiA6IGZ1bmN0aW9uICh0YXJnZXQsIHNvdXJjZSkge1xuXHR2YXIgZnJvbTtcblx0dmFyIHRvID0gdG9PYmplY3QodGFyZ2V0KTtcblx0dmFyIHN5bWJvbHM7XG5cblx0Zm9yICh2YXIgcyA9IDE7IHMgPCBhcmd1bWVudHMubGVuZ3RoOyBzKyspIHtcblx0XHRmcm9tID0gT2JqZWN0KGFyZ3VtZW50c1tzXSk7XG5cblx0XHRmb3IgKHZhciBrZXkgaW4gZnJvbSkge1xuXHRcdFx0aWYgKGhhc093blByb3BlcnR5LmNhbGwoZnJvbSwga2V5KSkge1xuXHRcdFx0XHR0b1trZXldID0gZnJvbVtrZXldO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmIChnZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHtcblx0XHRcdHN5bWJvbHMgPSBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZnJvbSk7XG5cdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IHN5bWJvbHMubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0aWYgKHByb3BJc0VudW1lcmFibGUuY2FsbChmcm9tLCBzeW1ib2xzW2ldKSkge1xuXHRcdFx0XHRcdHRvW3N5bWJvbHNbaV1dID0gZnJvbVtzeW1ib2xzW2ldXTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiB0bztcbn07XG4iLCAiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9ICdTRUNSRVRfRE9fTk9UX1BBU1NfVEhJU19PUl9ZT1VfV0lMTF9CRV9GSVJFRCc7XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RQcm9wVHlwZXNTZWNyZXQ7XG4iLCAibW9kdWxlLmV4cG9ydHMgPSBGdW5jdGlvbi5jYWxsLmJpbmQoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSk7XG4iLCAiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBwcmludFdhcm5pbmcgPSBmdW5jdGlvbigpIHt9O1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXQgPSByZXF1aXJlKCcuL2xpYi9SZWFjdFByb3BUeXBlc1NlY3JldCcpO1xuICB2YXIgbG9nZ2VkVHlwZUZhaWx1cmVzID0ge307XG4gIHZhciBoYXMgPSByZXF1aXJlKCcuL2xpYi9oYXMnKTtcblxuICBwcmludFdhcm5pbmcgPSBmdW5jdGlvbih0ZXh0KSB7XG4gICAgdmFyIG1lc3NhZ2UgPSAnV2FybmluZzogJyArIHRleHQ7XG4gICAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgY29uc29sZS5lcnJvcihtZXNzYWdlKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIC8vIC0tLSBXZWxjb21lIHRvIGRlYnVnZ2luZyBSZWFjdCAtLS1cbiAgICAgIC8vIFRoaXMgZXJyb3Igd2FzIHRocm93biBhcyBhIGNvbnZlbmllbmNlIHNvIHRoYXQgeW91IGNhbiB1c2UgdGhpcyBzdGFja1xuICAgICAgLy8gdG8gZmluZCB0aGUgY2FsbHNpdGUgdGhhdCBjYXVzZWQgdGhpcyB3YXJuaW5nIHRvIGZpcmUuXG4gICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gICAgfSBjYXRjaCAoeCkgeyAvKiovIH1cbiAgfTtcbn1cblxuLyoqXG4gKiBBc3NlcnQgdGhhdCB0aGUgdmFsdWVzIG1hdGNoIHdpdGggdGhlIHR5cGUgc3BlY3MuXG4gKiBFcnJvciBtZXNzYWdlcyBhcmUgbWVtb3JpemVkIGFuZCB3aWxsIG9ubHkgYmUgc2hvd24gb25jZS5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gdHlwZVNwZWNzIE1hcCBvZiBuYW1lIHRvIGEgUmVhY3RQcm9wVHlwZVxuICogQHBhcmFtIHtvYmplY3R9IHZhbHVlcyBSdW50aW1lIHZhbHVlcyB0aGF0IG5lZWQgdG8gYmUgdHlwZS1jaGVja2VkXG4gKiBAcGFyYW0ge3N0cmluZ30gbG9jYXRpb24gZS5nLiBcInByb3BcIiwgXCJjb250ZXh0XCIsIFwiY2hpbGQgY29udGV4dFwiXG4gKiBAcGFyYW0ge3N0cmluZ30gY29tcG9uZW50TmFtZSBOYW1lIG9mIHRoZSBjb21wb25lbnQgZm9yIGVycm9yIG1lc3NhZ2VzLlxuICogQHBhcmFtIHs/RnVuY3Rpb259IGdldFN0YWNrIFJldHVybnMgdGhlIGNvbXBvbmVudCBzdGFjay5cbiAqIEBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIGNoZWNrUHJvcFR5cGVzKHR5cGVTcGVjcywgdmFsdWVzLCBsb2NhdGlvbiwgY29tcG9uZW50TmFtZSwgZ2V0U3RhY2spIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBmb3IgKHZhciB0eXBlU3BlY05hbWUgaW4gdHlwZVNwZWNzKSB7XG4gICAgICBpZiAoaGFzKHR5cGVTcGVjcywgdHlwZVNwZWNOYW1lKSkge1xuICAgICAgICB2YXIgZXJyb3I7XG4gICAgICAgIC8vIFByb3AgdHlwZSB2YWxpZGF0aW9uIG1heSB0aHJvdy4gSW4gY2FzZSB0aGV5IGRvLCB3ZSBkb24ndCB3YW50IHRvXG4gICAgICAgIC8vIGZhaWwgdGhlIHJlbmRlciBwaGFzZSB3aGVyZSBpdCBkaWRuJ3QgZmFpbCBiZWZvcmUuIFNvIHdlIGxvZyBpdC5cbiAgICAgICAgLy8gQWZ0ZXIgdGhlc2UgaGF2ZSBiZWVuIGNsZWFuZWQgdXAsIHdlJ2xsIGxldCB0aGVtIHRocm93LlxuICAgICAgICB0cnkge1xuICAgICAgICAgIC8vIFRoaXMgaXMgaW50ZW50aW9uYWxseSBhbiBpbnZhcmlhbnQgdGhhdCBnZXRzIGNhdWdodC4gSXQncyB0aGUgc2FtZVxuICAgICAgICAgIC8vIGJlaGF2aW9yIGFzIHdpdGhvdXQgdGhpcyBzdGF0ZW1lbnQgZXhjZXB0IHdpdGggYSBiZXR0ZXIgbWVzc2FnZS5cbiAgICAgICAgICBpZiAodHlwZW9mIHR5cGVTcGVjc1t0eXBlU3BlY05hbWVdICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICB2YXIgZXJyID0gRXJyb3IoXG4gICAgICAgICAgICAgIChjb21wb25lbnROYW1lIHx8ICdSZWFjdCBjbGFzcycpICsgJzogJyArIGxvY2F0aW9uICsgJyB0eXBlIGAnICsgdHlwZVNwZWNOYW1lICsgJ2AgaXMgaW52YWxpZDsgJyArXG4gICAgICAgICAgICAgICdpdCBtdXN0IGJlIGEgZnVuY3Rpb24sIHVzdWFsbHkgZnJvbSB0aGUgYHByb3AtdHlwZXNgIHBhY2thZ2UsIGJ1dCByZWNlaXZlZCBgJyArIHR5cGVvZiB0eXBlU3BlY3NbdHlwZVNwZWNOYW1lXSArICdgLicgK1xuICAgICAgICAgICAgICAnVGhpcyBvZnRlbiBoYXBwZW5zIGJlY2F1c2Ugb2YgdHlwb3Mgc3VjaCBhcyBgUHJvcFR5cGVzLmZ1bmN0aW9uYCBpbnN0ZWFkIG9mIGBQcm9wVHlwZXMuZnVuY2AuJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGVyci5uYW1lID0gJ0ludmFyaWFudCBWaW9sYXRpb24nO1xuICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlcnJvciA9IHR5cGVTcGVjc1t0eXBlU3BlY05hbWVdKHZhbHVlcywgdHlwZVNwZWNOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgbnVsbCwgUmVhY3RQcm9wVHlwZXNTZWNyZXQpO1xuICAgICAgICB9IGNhdGNoIChleCkge1xuICAgICAgICAgIGVycm9yID0gZXg7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVycm9yICYmICEoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikpIHtcbiAgICAgICAgICBwcmludFdhcm5pbmcoXG4gICAgICAgICAgICAoY29tcG9uZW50TmFtZSB8fCAnUmVhY3QgY2xhc3MnKSArICc6IHR5cGUgc3BlY2lmaWNhdGlvbiBvZiAnICtcbiAgICAgICAgICAgIGxvY2F0aW9uICsgJyBgJyArIHR5cGVTcGVjTmFtZSArICdgIGlzIGludmFsaWQ7IHRoZSB0eXBlIGNoZWNrZXIgJyArXG4gICAgICAgICAgICAnZnVuY3Rpb24gbXVzdCByZXR1cm4gYG51bGxgIG9yIGFuIGBFcnJvcmAgYnV0IHJldHVybmVkIGEgJyArIHR5cGVvZiBlcnJvciArICcuICcgK1xuICAgICAgICAgICAgJ1lvdSBtYXkgaGF2ZSBmb3Jnb3R0ZW4gdG8gcGFzcyBhbiBhcmd1bWVudCB0byB0aGUgdHlwZSBjaGVja2VyICcgK1xuICAgICAgICAgICAgJ2NyZWF0b3IgKGFycmF5T2YsIGluc3RhbmNlT2YsIG9iamVjdE9mLCBvbmVPZiwgb25lT2ZUeXBlLCBhbmQgJyArXG4gICAgICAgICAgICAnc2hhcGUgYWxsIHJlcXVpcmUgYW4gYXJndW1lbnQpLidcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yICYmICEoZXJyb3IubWVzc2FnZSBpbiBsb2dnZWRUeXBlRmFpbHVyZXMpKSB7XG4gICAgICAgICAgLy8gT25seSBtb25pdG9yIHRoaXMgZmFpbHVyZSBvbmNlIGJlY2F1c2UgdGhlcmUgdGVuZHMgdG8gYmUgYSBsb3Qgb2YgdGhlXG4gICAgICAgICAgLy8gc2FtZSBlcnJvci5cbiAgICAgICAgICBsb2dnZWRUeXBlRmFpbHVyZXNbZXJyb3IubWVzc2FnZV0gPSB0cnVlO1xuXG4gICAgICAgICAgdmFyIHN0YWNrID0gZ2V0U3RhY2sgPyBnZXRTdGFjaygpIDogJyc7XG5cbiAgICAgICAgICBwcmludFdhcm5pbmcoXG4gICAgICAgICAgICAnRmFpbGVkICcgKyBsb2NhdGlvbiArICcgdHlwZTogJyArIGVycm9yLm1lc3NhZ2UgKyAoc3RhY2sgIT0gbnVsbCA/IHN0YWNrIDogJycpXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFJlc2V0cyB3YXJuaW5nIGNhY2hlIHdoZW4gdGVzdGluZy5cbiAqXG4gKiBAcHJpdmF0ZVxuICovXG5jaGVja1Byb3BUeXBlcy5yZXNldFdhcm5pbmdDYWNoZSA9IGZ1bmN0aW9uKCkge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGxvZ2dlZFR5cGVGYWlsdXJlcyA9IHt9O1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2hlY2tQcm9wVHlwZXM7XG4iLCAiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdElzID0gcmVxdWlyZSgncmVhY3QtaXMnKTtcbnZhciBhc3NpZ24gPSByZXF1aXJlKCdvYmplY3QtYXNzaWduJyk7XG5cbnZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9IHJlcXVpcmUoJy4vbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0Jyk7XG52YXIgaGFzID0gcmVxdWlyZSgnLi9saWIvaGFzJyk7XG52YXIgY2hlY2tQcm9wVHlwZXMgPSByZXF1aXJlKCcuL2NoZWNrUHJvcFR5cGVzJyk7XG5cbnZhciBwcmludFdhcm5pbmcgPSBmdW5jdGlvbigpIHt9O1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICBwcmludFdhcm5pbmcgPSBmdW5jdGlvbih0ZXh0KSB7XG4gICAgdmFyIG1lc3NhZ2UgPSAnV2FybmluZzogJyArIHRleHQ7XG4gICAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgY29uc29sZS5lcnJvcihtZXNzYWdlKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIC8vIC0tLSBXZWxjb21lIHRvIGRlYnVnZ2luZyBSZWFjdCAtLS1cbiAgICAgIC8vIFRoaXMgZXJyb3Igd2FzIHRocm93biBhcyBhIGNvbnZlbmllbmNlIHNvIHRoYXQgeW91IGNhbiB1c2UgdGhpcyBzdGFja1xuICAgICAgLy8gdG8gZmluZCB0aGUgY2FsbHNpdGUgdGhhdCBjYXVzZWQgdGhpcyB3YXJuaW5nIHRvIGZpcmUuXG4gICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gICAgfSBjYXRjaCAoeCkge31cbiAgfTtcbn1cblxuZnVuY3Rpb24gZW1wdHlGdW5jdGlvblRoYXRSZXR1cm5zTnVsbCgpIHtcbiAgcmV0dXJuIG51bGw7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXNWYWxpZEVsZW1lbnQsIHRocm93T25EaXJlY3RBY2Nlc3MpIHtcbiAgLyogZ2xvYmFsIFN5bWJvbCAqL1xuICB2YXIgSVRFUkFUT1JfU1lNQk9MID0gdHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiBTeW1ib2wuaXRlcmF0b3I7XG4gIHZhciBGQVVYX0lURVJBVE9SX1NZTUJPTCA9ICdAQGl0ZXJhdG9yJzsgLy8gQmVmb3JlIFN5bWJvbCBzcGVjLlxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBpdGVyYXRvciBtZXRob2QgZnVuY3Rpb24gY29udGFpbmVkIG9uIHRoZSBpdGVyYWJsZSBvYmplY3QuXG4gICAqXG4gICAqIEJlIHN1cmUgdG8gaW52b2tlIHRoZSBmdW5jdGlvbiB3aXRoIHRoZSBpdGVyYWJsZSBhcyBjb250ZXh0OlxuICAgKlxuICAgKiAgICAgdmFyIGl0ZXJhdG9yRm4gPSBnZXRJdGVyYXRvckZuKG15SXRlcmFibGUpO1xuICAgKiAgICAgaWYgKGl0ZXJhdG9yRm4pIHtcbiAgICogICAgICAgdmFyIGl0ZXJhdG9yID0gaXRlcmF0b3JGbi5jYWxsKG15SXRlcmFibGUpO1xuICAgKiAgICAgICAuLi5cbiAgICogICAgIH1cbiAgICpcbiAgICogQHBhcmFtIHs/b2JqZWN0fSBtYXliZUl0ZXJhYmxlXG4gICAqIEByZXR1cm4gez9mdW5jdGlvbn1cbiAgICovXG4gIGZ1bmN0aW9uIGdldEl0ZXJhdG9yRm4obWF5YmVJdGVyYWJsZSkge1xuICAgIHZhciBpdGVyYXRvckZuID0gbWF5YmVJdGVyYWJsZSAmJiAoSVRFUkFUT1JfU1lNQk9MICYmIG1heWJlSXRlcmFibGVbSVRFUkFUT1JfU1lNQk9MXSB8fCBtYXliZUl0ZXJhYmxlW0ZBVVhfSVRFUkFUT1JfU1lNQk9MXSk7XG4gICAgaWYgKHR5cGVvZiBpdGVyYXRvckZuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gaXRlcmF0b3JGbjtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ29sbGVjdGlvbiBvZiBtZXRob2RzIHRoYXQgYWxsb3cgZGVjbGFyYXRpb24gYW5kIHZhbGlkYXRpb24gb2YgcHJvcHMgdGhhdCBhcmVcbiAgICogc3VwcGxpZWQgdG8gUmVhY3QgY29tcG9uZW50cy4gRXhhbXBsZSB1c2FnZTpcbiAgICpcbiAgICogICB2YXIgUHJvcHMgPSByZXF1aXJlKCdSZWFjdFByb3BUeXBlcycpO1xuICAgKiAgIHZhciBNeUFydGljbGUgPSBSZWFjdC5jcmVhdGVDbGFzcyh7XG4gICAqICAgICBwcm9wVHlwZXM6IHtcbiAgICogICAgICAgLy8gQW4gb3B0aW9uYWwgc3RyaW5nIHByb3AgbmFtZWQgXCJkZXNjcmlwdGlvblwiLlxuICAgKiAgICAgICBkZXNjcmlwdGlvbjogUHJvcHMuc3RyaW5nLFxuICAgKlxuICAgKiAgICAgICAvLyBBIHJlcXVpcmVkIGVudW0gcHJvcCBuYW1lZCBcImNhdGVnb3J5XCIuXG4gICAqICAgICAgIGNhdGVnb3J5OiBQcm9wcy5vbmVPZihbJ05ld3MnLCdQaG90b3MnXSkuaXNSZXF1aXJlZCxcbiAgICpcbiAgICogICAgICAgLy8gQSBwcm9wIG5hbWVkIFwiZGlhbG9nXCIgdGhhdCByZXF1aXJlcyBhbiBpbnN0YW5jZSBvZiBEaWFsb2cuXG4gICAqICAgICAgIGRpYWxvZzogUHJvcHMuaW5zdGFuY2VPZihEaWFsb2cpLmlzUmVxdWlyZWRcbiAgICogICAgIH0sXG4gICAqICAgICByZW5kZXI6IGZ1bmN0aW9uKCkgeyAuLi4gfVxuICAgKiAgIH0pO1xuICAgKlxuICAgKiBBIG1vcmUgZm9ybWFsIHNwZWNpZmljYXRpb24gb2YgaG93IHRoZXNlIG1ldGhvZHMgYXJlIHVzZWQ6XG4gICAqXG4gICAqICAgdHlwZSA6PSBhcnJheXxib29sfGZ1bmN8b2JqZWN0fG51bWJlcnxzdHJpbmd8b25lT2YoWy4uLl0pfGluc3RhbmNlT2YoLi4uKVxuICAgKiAgIGRlY2wgOj0gUmVhY3RQcm9wVHlwZXMue3R5cGV9KC5pc1JlcXVpcmVkKT9cbiAgICpcbiAgICogRWFjaCBhbmQgZXZlcnkgZGVjbGFyYXRpb24gcHJvZHVjZXMgYSBmdW5jdGlvbiB3aXRoIHRoZSBzYW1lIHNpZ25hdHVyZS4gVGhpc1xuICAgKiBhbGxvd3MgdGhlIGNyZWF0aW9uIG9mIGN1c3RvbSB2YWxpZGF0aW9uIGZ1bmN0aW9ucy4gRm9yIGV4YW1wbGU6XG4gICAqXG4gICAqICB2YXIgTXlMaW5rID0gUmVhY3QuY3JlYXRlQ2xhc3Moe1xuICAgKiAgICBwcm9wVHlwZXM6IHtcbiAgICogICAgICAvLyBBbiBvcHRpb25hbCBzdHJpbmcgb3IgVVJJIHByb3AgbmFtZWQgXCJocmVmXCIuXG4gICAqICAgICAgaHJlZjogZnVuY3Rpb24ocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lKSB7XG4gICAqICAgICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5hbWVdO1xuICAgKiAgICAgICAgaWYgKHByb3BWYWx1ZSAhPSBudWxsICYmIHR5cGVvZiBwcm9wVmFsdWUgIT09ICdzdHJpbmcnICYmXG4gICAqICAgICAgICAgICAgIShwcm9wVmFsdWUgaW5zdGFuY2VvZiBVUkkpKSB7XG4gICAqICAgICAgICAgIHJldHVybiBuZXcgRXJyb3IoXG4gICAqICAgICAgICAgICAgJ0V4cGVjdGVkIGEgc3RyaW5nIG9yIGFuIFVSSSBmb3IgJyArIHByb3BOYW1lICsgJyBpbiAnICtcbiAgICogICAgICAgICAgICBjb21wb25lbnROYW1lXG4gICAqICAgICAgICAgICk7XG4gICAqICAgICAgICB9XG4gICAqICAgICAgfVxuICAgKiAgICB9LFxuICAgKiAgICByZW5kZXI6IGZ1bmN0aW9uKCkgey4uLn1cbiAgICogIH0pO1xuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG5cbiAgdmFyIEFOT05ZTU9VUyA9ICc8PGFub255bW91cz4+JztcblxuICAvLyBJbXBvcnRhbnQhXG4gIC8vIEtlZXAgdGhpcyBsaXN0IGluIHN5bmMgd2l0aCBwcm9kdWN0aW9uIHZlcnNpb24gaW4gYC4vZmFjdG9yeVdpdGhUaHJvd2luZ1NoaW1zLmpzYC5cbiAgdmFyIFJlYWN0UHJvcFR5cGVzID0ge1xuICAgIGFycmF5OiBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcignYXJyYXknKSxcbiAgICBiaWdpbnQ6IGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyKCdiaWdpbnQnKSxcbiAgICBib29sOiBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcignYm9vbGVhbicpLFxuICAgIGZ1bmM6IGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyKCdmdW5jdGlvbicpLFxuICAgIG51bWJlcjogY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIoJ251bWJlcicpLFxuICAgIG9iamVjdDogY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIoJ29iamVjdCcpLFxuICAgIHN0cmluZzogY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIoJ3N0cmluZycpLFxuICAgIHN5bWJvbDogY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIoJ3N5bWJvbCcpLFxuXG4gICAgYW55OiBjcmVhdGVBbnlUeXBlQ2hlY2tlcigpLFxuICAgIGFycmF5T2Y6IGNyZWF0ZUFycmF5T2ZUeXBlQ2hlY2tlcixcbiAgICBlbGVtZW50OiBjcmVhdGVFbGVtZW50VHlwZUNoZWNrZXIoKSxcbiAgICBlbGVtZW50VHlwZTogY3JlYXRlRWxlbWVudFR5cGVUeXBlQ2hlY2tlcigpLFxuICAgIGluc3RhbmNlT2Y6IGNyZWF0ZUluc3RhbmNlVHlwZUNoZWNrZXIsXG4gICAgbm9kZTogY3JlYXRlTm9kZUNoZWNrZXIoKSxcbiAgICBvYmplY3RPZjogY3JlYXRlT2JqZWN0T2ZUeXBlQ2hlY2tlcixcbiAgICBvbmVPZjogY3JlYXRlRW51bVR5cGVDaGVja2VyLFxuICAgIG9uZU9mVHlwZTogY3JlYXRlVW5pb25UeXBlQ2hlY2tlcixcbiAgICBzaGFwZTogY3JlYXRlU2hhcGVUeXBlQ2hlY2tlcixcbiAgICBleGFjdDogY3JlYXRlU3RyaWN0U2hhcGVUeXBlQ2hlY2tlcixcbiAgfTtcblxuICAvKipcbiAgICogaW5saW5lZCBPYmplY3QuaXMgcG9seWZpbGwgdG8gYXZvaWQgcmVxdWlyaW5nIGNvbnN1bWVycyBzaGlwIHRoZWlyIG93blxuICAgKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9PYmplY3QvaXNcbiAgICovXG4gIC8qZXNsaW50LWRpc2FibGUgbm8tc2VsZi1jb21wYXJlKi9cbiAgZnVuY3Rpb24gaXMoeCwgeSkge1xuICAgIC8vIFNhbWVWYWx1ZSBhbGdvcml0aG1cbiAgICBpZiAoeCA9PT0geSkge1xuICAgICAgLy8gU3RlcHMgMS01LCA3LTEwXG4gICAgICAvLyBTdGVwcyA2LmItNi5lOiArMCAhPSAtMFxuICAgICAgcmV0dXJuIHggIT09IDAgfHwgMSAvIHggPT09IDEgLyB5O1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBTdGVwIDYuYTogTmFOID09IE5hTlxuICAgICAgcmV0dXJuIHggIT09IHggJiYgeSAhPT0geTtcbiAgICB9XG4gIH1cbiAgLyplc2xpbnQtZW5hYmxlIG5vLXNlbGYtY29tcGFyZSovXG5cbiAgLyoqXG4gICAqIFdlIHVzZSBhbiBFcnJvci1saWtlIG9iamVjdCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBhcyBwZW9wbGUgbWF5IGNhbGxcbiAgICogUHJvcFR5cGVzIGRpcmVjdGx5IGFuZCBpbnNwZWN0IHRoZWlyIG91dHB1dC4gSG93ZXZlciwgd2UgZG9uJ3QgdXNlIHJlYWxcbiAgICogRXJyb3JzIGFueW1vcmUuIFdlIGRvbid0IGluc3BlY3QgdGhlaXIgc3RhY2sgYW55d2F5LCBhbmQgY3JlYXRpbmcgdGhlbVxuICAgKiBpcyBwcm9oaWJpdGl2ZWx5IGV4cGVuc2l2ZSBpZiB0aGV5IGFyZSBjcmVhdGVkIHRvbyBvZnRlbiwgc3VjaCBhcyB3aGF0XG4gICAqIGhhcHBlbnMgaW4gb25lT2ZUeXBlKCkgZm9yIGFueSB0eXBlIGJlZm9yZSB0aGUgb25lIHRoYXQgbWF0Y2hlZC5cbiAgICovXG4gIGZ1bmN0aW9uIFByb3BUeXBlRXJyb3IobWVzc2FnZSwgZGF0YSkge1xuICAgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2U7XG4gICAgdGhpcy5kYXRhID0gZGF0YSAmJiB0eXBlb2YgZGF0YSA9PT0gJ29iamVjdCcgPyBkYXRhOiB7fTtcbiAgICB0aGlzLnN0YWNrID0gJyc7XG4gIH1cbiAgLy8gTWFrZSBgaW5zdGFuY2VvZiBFcnJvcmAgc3RpbGwgd29yayBmb3IgcmV0dXJuZWQgZXJyb3JzLlxuICBQcm9wVHlwZUVycm9yLnByb3RvdHlwZSA9IEVycm9yLnByb3RvdHlwZTtcblxuICBmdW5jdGlvbiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSkge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB2YXIgbWFudWFsUHJvcFR5cGVDYWxsQ2FjaGUgPSB7fTtcbiAgICAgIHZhciBtYW51YWxQcm9wVHlwZVdhcm5pbmdDb3VudCA9IDA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGNoZWNrVHlwZShpc1JlcXVpcmVkLCBwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUsIHNlY3JldCkge1xuICAgICAgY29tcG9uZW50TmFtZSA9IGNvbXBvbmVudE5hbWUgfHwgQU5PTllNT1VTO1xuICAgICAgcHJvcEZ1bGxOYW1lID0gcHJvcEZ1bGxOYW1lIHx8IHByb3BOYW1lO1xuXG4gICAgICBpZiAoc2VjcmV0ICE9PSBSZWFjdFByb3BUeXBlc1NlY3JldCkge1xuICAgICAgICBpZiAodGhyb3dPbkRpcmVjdEFjY2Vzcykge1xuICAgICAgICAgIC8vIE5ldyBiZWhhdmlvciBvbmx5IGZvciB1c2VycyBvZiBgcHJvcC10eXBlc2AgcGFja2FnZVxuICAgICAgICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoXG4gICAgICAgICAgICAnQ2FsbGluZyBQcm9wVHlwZXMgdmFsaWRhdG9ycyBkaXJlY3RseSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBgcHJvcC10eXBlc2AgcGFja2FnZS4gJyArXG4gICAgICAgICAgICAnVXNlIGBQcm9wVHlwZXMuY2hlY2tQcm9wVHlwZXMoKWAgdG8gY2FsbCB0aGVtLiAnICtcbiAgICAgICAgICAgICdSZWFkIG1vcmUgYXQgaHR0cDovL2ZiLm1lL3VzZS1jaGVjay1wcm9wLXR5cGVzJ1xuICAgICAgICAgICk7XG4gICAgICAgICAgZXJyLm5hbWUgPSAnSW52YXJpYW50IFZpb2xhdGlvbic7XG4gICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICB9IGVsc2UgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgdHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgLy8gT2xkIGJlaGF2aW9yIGZvciBwZW9wbGUgdXNpbmcgUmVhY3QuUHJvcFR5cGVzXG4gICAgICAgICAgdmFyIGNhY2hlS2V5ID0gY29tcG9uZW50TmFtZSArICc6JyArIHByb3BOYW1lO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICFtYW51YWxQcm9wVHlwZUNhbGxDYWNoZVtjYWNoZUtleV0gJiZcbiAgICAgICAgICAgIC8vIEF2b2lkIHNwYW1taW5nIHRoZSBjb25zb2xlIGJlY2F1c2UgdGhleSBhcmUgb2Z0ZW4gbm90IGFjdGlvbmFibGUgZXhjZXB0IGZvciBsaWIgYXV0aG9yc1xuICAgICAgICAgICAgbWFudWFsUHJvcFR5cGVXYXJuaW5nQ291bnQgPCAzXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBwcmludFdhcm5pbmcoXG4gICAgICAgICAgICAgICdZb3UgYXJlIG1hbnVhbGx5IGNhbGxpbmcgYSBSZWFjdC5Qcm9wVHlwZXMgdmFsaWRhdGlvbiAnICtcbiAgICAgICAgICAgICAgJ2Z1bmN0aW9uIGZvciB0aGUgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBwcm9wIG9uIGAnICsgY29tcG9uZW50TmFtZSArICdgLiBUaGlzIGlzIGRlcHJlY2F0ZWQgJyArXG4gICAgICAgICAgICAgICdhbmQgd2lsbCB0aHJvdyBpbiB0aGUgc3RhbmRhbG9uZSBgcHJvcC10eXBlc2AgcGFja2FnZS4gJyArXG4gICAgICAgICAgICAgICdZb3UgbWF5IGJlIHNlZWluZyB0aGlzIHdhcm5pbmcgZHVlIHRvIGEgdGhpcmQtcGFydHkgUHJvcFR5cGVzICcgK1xuICAgICAgICAgICAgICAnbGlicmFyeS4gU2VlIGh0dHBzOi8vZmIubWUvcmVhY3Qtd2FybmluZy1kb250LWNhbGwtcHJvcHR5cGVzICcgKyAnZm9yIGRldGFpbHMuJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIG1hbnVhbFByb3BUeXBlQ2FsbENhY2hlW2NhY2hlS2V5XSA9IHRydWU7XG4gICAgICAgICAgICBtYW51YWxQcm9wVHlwZVdhcm5pbmdDb3VudCsrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHByb3BzW3Byb3BOYW1lXSA9PSBudWxsKSB7XG4gICAgICAgIGlmIChpc1JlcXVpcmVkKSB7XG4gICAgICAgICAgaWYgKHByb3BzW3Byb3BOYW1lXSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdUaGUgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIGlzIG1hcmtlZCBhcyByZXF1aXJlZCAnICsgKCdpbiBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgYnV0IGl0cyB2YWx1ZSBpcyBgbnVsbGAuJykpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ1RoZSAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2AgaXMgbWFya2VkIGFzIHJlcXVpcmVkIGluICcgKyAoJ2AnICsgY29tcG9uZW50TmFtZSArICdgLCBidXQgaXRzIHZhbHVlIGlzIGB1bmRlZmluZWRgLicpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBjaGFpbmVkQ2hlY2tUeXBlID0gY2hlY2tUeXBlLmJpbmQobnVsbCwgZmFsc2UpO1xuICAgIGNoYWluZWRDaGVja1R5cGUuaXNSZXF1aXJlZCA9IGNoZWNrVHlwZS5iaW5kKG51bGwsIHRydWUpO1xuXG4gICAgcmV0dXJuIGNoYWluZWRDaGVja1R5cGU7XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcihleHBlY3RlZFR5cGUpIHtcbiAgICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUsIHNlY3JldCkge1xuICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtcbiAgICAgIHZhciBwcm9wVHlwZSA9IGdldFByb3BUeXBlKHByb3BWYWx1ZSk7XG4gICAgICBpZiAocHJvcFR5cGUgIT09IGV4cGVjdGVkVHlwZSkge1xuICAgICAgICAvLyBgcHJvcFZhbHVlYCBiZWluZyBpbnN0YW5jZSBvZiwgc2F5LCBkYXRlL3JlZ2V4cCwgcGFzcyB0aGUgJ29iamVjdCdcbiAgICAgICAgLy8gY2hlY2ssIGJ1dCB3ZSBjYW4gb2ZmZXIgYSBtb3JlIHByZWNpc2UgZXJyb3IgbWVzc2FnZSBoZXJlIHJhdGhlciB0aGFuXG4gICAgICAgIC8vICdvZiB0eXBlIGBvYmplY3RgJy5cbiAgICAgICAgdmFyIHByZWNpc2VUeXBlID0gZ2V0UHJlY2lzZVR5cGUocHJvcFZhbHVlKTtcblxuICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoXG4gICAgICAgICAgJ0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIG9mIHR5cGUgJyArICgnYCcgKyBwcmVjaXNlVHlwZSArICdgIHN1cHBsaWVkIHRvIGAnICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCAnKSArICgnYCcgKyBleHBlY3RlZFR5cGUgKyAnYC4nKSxcbiAgICAgICAgICB7ZXhwZWN0ZWRUeXBlOiBleHBlY3RlZFR5cGV9XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZUFueVR5cGVDaGVja2VyKCkge1xuICAgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcihlbXB0eUZ1bmN0aW9uVGhhdFJldHVybnNOdWxsKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZUFycmF5T2ZUeXBlQ2hlY2tlcih0eXBlQ2hlY2tlcikge1xuICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuICAgICAgaWYgKHR5cGVvZiB0eXBlQ2hlY2tlciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ1Byb3BlcnR5IGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgY29tcG9uZW50IGAnICsgY29tcG9uZW50TmFtZSArICdgIGhhcyBpbnZhbGlkIFByb3BUeXBlIG5vdGF0aW9uIGluc2lkZSBhcnJheU9mLicpO1xuICAgICAgfVxuICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShwcm9wVmFsdWUpKSB7XG4gICAgICAgIHZhciBwcm9wVHlwZSA9IGdldFByb3BUeXBlKHByb3BWYWx1ZSk7XG4gICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgdHlwZSAnICsgKCdgJyArIHByb3BUeXBlICsgJ2Agc3VwcGxpZWQgdG8gYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGV4cGVjdGVkIGFuIGFycmF5LicpKTtcbiAgICAgIH1cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcFZhbHVlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBlcnJvciA9IHR5cGVDaGVja2VyKHByb3BWYWx1ZSwgaSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSArICdbJyArIGkgKyAnXScsIFJlYWN0UHJvcFR5cGVzU2VjcmV0KTtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICByZXR1cm4gZXJyb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlRWxlbWVudFR5cGVDaGVja2VyKCkge1xuICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtcbiAgICAgIGlmICghaXNWYWxpZEVsZW1lbnQocHJvcFZhbHVlKSkge1xuICAgICAgICB2YXIgcHJvcFR5cGUgPSBnZXRQcm9wVHlwZShwcm9wVmFsdWUpO1xuICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIG9mIHR5cGUgJyArICgnYCcgKyBwcm9wVHlwZSArICdgIHN1cHBsaWVkIHRvIGAnICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCBhIHNpbmdsZSBSZWFjdEVsZW1lbnQuJykpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVFbGVtZW50VHlwZVR5cGVDaGVja2VyKCkge1xuICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtcbiAgICAgIGlmICghUmVhY3RJcy5pc1ZhbGlkRWxlbWVudFR5cGUocHJvcFZhbHVlKSkge1xuICAgICAgICB2YXIgcHJvcFR5cGUgPSBnZXRQcm9wVHlwZShwcm9wVmFsdWUpO1xuICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIG9mIHR5cGUgJyArICgnYCcgKyBwcm9wVHlwZSArICdgIHN1cHBsaWVkIHRvIGAnICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCBhIHNpbmdsZSBSZWFjdEVsZW1lbnQgdHlwZS4nKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZUluc3RhbmNlVHlwZUNoZWNrZXIoZXhwZWN0ZWRDbGFzcykge1xuICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuICAgICAgaWYgKCEocHJvcHNbcHJvcE5hbWVdIGluc3RhbmNlb2YgZXhwZWN0ZWRDbGFzcykpIHtcbiAgICAgICAgdmFyIGV4cGVjdGVkQ2xhc3NOYW1lID0gZXhwZWN0ZWRDbGFzcy5uYW1lIHx8IEFOT05ZTU9VUztcbiAgICAgICAgdmFyIGFjdHVhbENsYXNzTmFtZSA9IGdldENsYXNzTmFtZShwcm9wc1twcm9wTmFtZV0pO1xuICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIG9mIHR5cGUgJyArICgnYCcgKyBhY3R1YWxDbGFzc05hbWUgKyAnYCBzdXBwbGllZCB0byBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgZXhwZWN0ZWQgJykgKyAoJ2luc3RhbmNlIG9mIGAnICsgZXhwZWN0ZWRDbGFzc05hbWUgKyAnYC4nKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZUVudW1UeXBlQ2hlY2tlcihleHBlY3RlZFZhbHVlcykge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShleHBlY3RlZFZhbHVlcykpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgICAgIHByaW50V2FybmluZyhcbiAgICAgICAgICAgICdJbnZhbGlkIGFyZ3VtZW50cyBzdXBwbGllZCB0byBvbmVPZiwgZXhwZWN0ZWQgYW4gYXJyYXksIGdvdCAnICsgYXJndW1lbnRzLmxlbmd0aCArICcgYXJndW1lbnRzLiAnICtcbiAgICAgICAgICAgICdBIGNvbW1vbiBtaXN0YWtlIGlzIHRvIHdyaXRlIG9uZU9mKHgsIHksIHopIGluc3RlYWQgb2Ygb25lT2YoW3gsIHksIHpdKS4nXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwcmludFdhcm5pbmcoJ0ludmFsaWQgYXJndW1lbnQgc3VwcGxpZWQgdG8gb25lT2YsIGV4cGVjdGVkIGFuIGFycmF5LicpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZW1wdHlGdW5jdGlvblRoYXRSZXR1cm5zTnVsbDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpIHtcbiAgICAgIHZhciBwcm9wVmFsdWUgPSBwcm9wc1twcm9wTmFtZV07XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGV4cGVjdGVkVmFsdWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChpcyhwcm9wVmFsdWUsIGV4cGVjdGVkVmFsdWVzW2ldKSkge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHZhciB2YWx1ZXNTdHJpbmcgPSBKU09OLnN0cmluZ2lmeShleHBlY3RlZFZhbHVlcywgZnVuY3Rpb24gcmVwbGFjZXIoa2V5LCB2YWx1ZSkge1xuICAgICAgICB2YXIgdHlwZSA9IGdldFByZWNpc2VUeXBlKHZhbHVlKTtcbiAgICAgICAgaWYgKHR5cGUgPT09ICdzeW1ib2wnKSB7XG4gICAgICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIG9mIHZhbHVlIGAnICsgU3RyaW5nKHByb3BWYWx1ZSkgKyAnYCAnICsgKCdzdXBwbGllZCB0byBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgZXhwZWN0ZWQgb25lIG9mICcgKyB2YWx1ZXNTdHJpbmcgKyAnLicpKTtcbiAgICB9XG4gICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZU9iamVjdE9mVHlwZUNoZWNrZXIodHlwZUNoZWNrZXIpIHtcbiAgICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpIHtcbiAgICAgIGlmICh0eXBlb2YgdHlwZUNoZWNrZXIgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdQcm9wZXJ0eSBgJyArIHByb3BGdWxsTmFtZSArICdgIG9mIGNvbXBvbmVudCBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCBoYXMgaW52YWxpZCBQcm9wVHlwZSBub3RhdGlvbiBpbnNpZGUgb2JqZWN0T2YuJyk7XG4gICAgICB9XG4gICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5hbWVdO1xuICAgICAgdmFyIHByb3BUeXBlID0gZ2V0UHJvcFR5cGUocHJvcFZhbHVlKTtcbiAgICAgIGlmIChwcm9wVHlwZSAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbiArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBvZiB0eXBlICcgKyAoJ2AnICsgcHJvcFR5cGUgKyAnYCBzdXBwbGllZCB0byBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgZXhwZWN0ZWQgYW4gb2JqZWN0LicpKTtcbiAgICAgIH1cbiAgICAgIGZvciAodmFyIGtleSBpbiBwcm9wVmFsdWUpIHtcbiAgICAgICAgaWYgKGhhcyhwcm9wVmFsdWUsIGtleSkpIHtcbiAgICAgICAgICB2YXIgZXJyb3IgPSB0eXBlQ2hlY2tlcihwcm9wVmFsdWUsIGtleSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSArICcuJyArIGtleSwgUmVhY3RQcm9wVHlwZXNTZWNyZXQpO1xuICAgICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gZXJyb3I7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZVVuaW9uVHlwZUNoZWNrZXIoYXJyYXlPZlR5cGVDaGVja2Vycykge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShhcnJheU9mVHlwZUNoZWNrZXJzKSkge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHByaW50V2FybmluZygnSW52YWxpZCBhcmd1bWVudCBzdXBwbGllZCB0byBvbmVPZlR5cGUsIGV4cGVjdGVkIGFuIGluc3RhbmNlIG9mIGFycmF5LicpIDogdm9pZCAwO1xuICAgICAgcmV0dXJuIGVtcHR5RnVuY3Rpb25UaGF0UmV0dXJuc051bGw7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheU9mVHlwZUNoZWNrZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgY2hlY2tlciA9IGFycmF5T2ZUeXBlQ2hlY2tlcnNbaV07XG4gICAgICBpZiAodHlwZW9mIGNoZWNrZXIgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcHJpbnRXYXJuaW5nKFxuICAgICAgICAgICdJbnZhbGlkIGFyZ3VtZW50IHN1cHBsaWVkIHRvIG9uZU9mVHlwZS4gRXhwZWN0ZWQgYW4gYXJyYXkgb2YgY2hlY2sgZnVuY3Rpb25zLCBidXQgJyArXG4gICAgICAgICAgJ3JlY2VpdmVkICcgKyBnZXRQb3N0Zml4Rm9yVHlwZVdhcm5pbmcoY2hlY2tlcikgKyAnIGF0IGluZGV4ICcgKyBpICsgJy4nXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBlbXB0eUZ1bmN0aW9uVGhhdFJldHVybnNOdWxsO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuICAgICAgdmFyIGV4cGVjdGVkVHlwZXMgPSBbXTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXlPZlR5cGVDaGVja2Vycy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgY2hlY2tlciA9IGFycmF5T2ZUeXBlQ2hlY2tlcnNbaV07XG4gICAgICAgIHZhciBjaGVja2VyUmVzdWx0ID0gY2hlY2tlcihwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUsIFJlYWN0UHJvcFR5cGVzU2VjcmV0KTtcbiAgICAgICAgaWYgKGNoZWNrZXJSZXN1bHQgPT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjaGVja2VyUmVzdWx0LmRhdGEgJiYgaGFzKGNoZWNrZXJSZXN1bHQuZGF0YSwgJ2V4cGVjdGVkVHlwZScpKSB7XG4gICAgICAgICAgZXhwZWN0ZWRUeXBlcy5wdXNoKGNoZWNrZXJSZXN1bHQuZGF0YS5leHBlY3RlZFR5cGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB2YXIgZXhwZWN0ZWRUeXBlc01lc3NhZ2UgPSAoZXhwZWN0ZWRUeXBlcy5sZW5ndGggPiAwKSA/ICcsIGV4cGVjdGVkIG9uZSBvZiB0eXBlIFsnICsgZXhwZWN0ZWRUeXBlcy5qb2luKCcsICcpICsgJ10nOiAnJztcbiAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agc3VwcGxpZWQgdG8gJyArICgnYCcgKyBjb21wb25lbnROYW1lICsgJ2AnICsgZXhwZWN0ZWRUeXBlc01lc3NhZ2UgKyAnLicpKTtcbiAgICB9XG4gICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZU5vZGVDaGVja2VyKCkge1xuICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuICAgICAgaWYgKCFpc05vZGUocHJvcHNbcHJvcE5hbWVdKSkge1xuICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIHN1cHBsaWVkIHRvICcgKyAoJ2AnICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCBhIFJlYWN0Tm9kZS4nKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGludmFsaWRWYWxpZGF0b3JFcnJvcihjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lLCBrZXksIHR5cGUpIHtcbiAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoXG4gICAgICAoY29tcG9uZW50TmFtZSB8fCAnUmVhY3QgY2xhc3MnKSArICc6ICcgKyBsb2NhdGlvbiArICcgdHlwZSBgJyArIHByb3BGdWxsTmFtZSArICcuJyArIGtleSArICdgIGlzIGludmFsaWQ7ICcgK1xuICAgICAgJ2l0IG11c3QgYmUgYSBmdW5jdGlvbiwgdXN1YWxseSBmcm9tIHRoZSBgcHJvcC10eXBlc2AgcGFja2FnZSwgYnV0IHJlY2VpdmVkIGAnICsgdHlwZSArICdgLidcbiAgICApO1xuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlU2hhcGVUeXBlQ2hlY2tlcihzaGFwZVR5cGVzKSB7XG4gICAgZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7XG4gICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5hbWVdO1xuICAgICAgdmFyIHByb3BUeXBlID0gZ2V0UHJvcFR5cGUocHJvcFZhbHVlKTtcbiAgICAgIGlmIChwcm9wVHlwZSAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbiArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBvZiB0eXBlIGAnICsgcHJvcFR5cGUgKyAnYCAnICsgKCdzdXBwbGllZCB0byBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgZXhwZWN0ZWQgYG9iamVjdGAuJykpO1xuICAgICAgfVxuICAgICAgZm9yICh2YXIga2V5IGluIHNoYXBlVHlwZXMpIHtcbiAgICAgICAgdmFyIGNoZWNrZXIgPSBzaGFwZVR5cGVzW2tleV07XG4gICAgICAgIGlmICh0eXBlb2YgY2hlY2tlciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHJldHVybiBpbnZhbGlkVmFsaWRhdG9yRXJyb3IoY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSwga2V5LCBnZXRQcmVjaXNlVHlwZShjaGVja2VyKSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGVycm9yID0gY2hlY2tlcihwcm9wVmFsdWUsIGtleSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSArICcuJyArIGtleSwgUmVhY3RQcm9wVHlwZXNTZWNyZXQpO1xuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICByZXR1cm4gZXJyb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlU3RyaWN0U2hhcGVUeXBlQ2hlY2tlcihzaGFwZVR5cGVzKSB7XG4gICAgZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7XG4gICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5hbWVdO1xuICAgICAgdmFyIHByb3BUeXBlID0gZ2V0UHJvcFR5cGUocHJvcFZhbHVlKTtcbiAgICAgIGlmIChwcm9wVHlwZSAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbiArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBvZiB0eXBlIGAnICsgcHJvcFR5cGUgKyAnYCAnICsgKCdzdXBwbGllZCB0byBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgZXhwZWN0ZWQgYG9iamVjdGAuJykpO1xuICAgICAgfVxuICAgICAgLy8gV2UgbmVlZCB0byBjaGVjayBhbGwga2V5cyBpbiBjYXNlIHNvbWUgYXJlIHJlcXVpcmVkIGJ1dCBtaXNzaW5nIGZyb20gcHJvcHMuXG4gICAgICB2YXIgYWxsS2V5cyA9IGFzc2lnbih7fSwgcHJvcHNbcHJvcE5hbWVdLCBzaGFwZVR5cGVzKTtcbiAgICAgIGZvciAodmFyIGtleSBpbiBhbGxLZXlzKSB7XG4gICAgICAgIHZhciBjaGVja2VyID0gc2hhcGVUeXBlc1trZXldO1xuICAgICAgICBpZiAoaGFzKHNoYXBlVHlwZXMsIGtleSkgJiYgdHlwZW9mIGNoZWNrZXIgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICByZXR1cm4gaW52YWxpZFZhbGlkYXRvckVycm9yKGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUsIGtleSwgZ2V0UHJlY2lzZVR5cGUoY2hlY2tlcikpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghY2hlY2tlcikge1xuICAgICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcihcbiAgICAgICAgICAgICdJbnZhbGlkICcgKyBsb2NhdGlvbiArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBrZXkgYCcgKyBrZXkgKyAnYCBzdXBwbGllZCB0byBgJyArIGNvbXBvbmVudE5hbWUgKyAnYC4nICtcbiAgICAgICAgICAgICdcXG5CYWQgb2JqZWN0OiAnICsgSlNPTi5zdHJpbmdpZnkocHJvcHNbcHJvcE5hbWVdLCBudWxsLCAnICAnKSArXG4gICAgICAgICAgICAnXFxuVmFsaWQga2V5czogJyArIEpTT04uc3RyaW5naWZ5KE9iamVjdC5rZXlzKHNoYXBlVHlwZXMpLCBudWxsLCAnICAnKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGVycm9yID0gY2hlY2tlcihwcm9wVmFsdWUsIGtleSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSArICcuJyArIGtleSwgUmVhY3RQcm9wVHlwZXNTZWNyZXQpO1xuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICByZXR1cm4gZXJyb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7XG4gIH1cblxuICBmdW5jdGlvbiBpc05vZGUocHJvcFZhbHVlKSB7XG4gICAgc3dpdGNoICh0eXBlb2YgcHJvcFZhbHVlKSB7XG4gICAgICBjYXNlICdudW1iZXInOlxuICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgIGNhc2UgJ3VuZGVmaW5lZCc6XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICAgIHJldHVybiAhcHJvcFZhbHVlO1xuICAgICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocHJvcFZhbHVlKSkge1xuICAgICAgICAgIHJldHVybiBwcm9wVmFsdWUuZXZlcnkoaXNOb2RlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocHJvcFZhbHVlID09PSBudWxsIHx8IGlzVmFsaWRFbGVtZW50KHByb3BWYWx1ZSkpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBpdGVyYXRvckZuID0gZ2V0SXRlcmF0b3JGbihwcm9wVmFsdWUpO1xuICAgICAgICBpZiAoaXRlcmF0b3JGbikge1xuICAgICAgICAgIHZhciBpdGVyYXRvciA9IGl0ZXJhdG9yRm4uY2FsbChwcm9wVmFsdWUpO1xuICAgICAgICAgIHZhciBzdGVwO1xuICAgICAgICAgIGlmIChpdGVyYXRvckZuICE9PSBwcm9wVmFsdWUuZW50cmllcykge1xuICAgICAgICAgICAgd2hpbGUgKCEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZSkge1xuICAgICAgICAgICAgICBpZiAoIWlzTm9kZShzdGVwLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBJdGVyYXRvciB3aWxsIHByb3ZpZGUgZW50cnkgW2ssdl0gdHVwbGVzIHJhdGhlciB0aGFuIHZhbHVlcy5cbiAgICAgICAgICAgIHdoaWxlICghKHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmUpIHtcbiAgICAgICAgICAgICAgdmFyIGVudHJ5ID0gc3RlcC52YWx1ZTtcbiAgICAgICAgICAgICAgaWYgKGVudHJ5KSB7XG4gICAgICAgICAgICAgICAgaWYgKCFpc05vZGUoZW50cnlbMV0pKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGlzU3ltYm9sKHByb3BUeXBlLCBwcm9wVmFsdWUpIHtcbiAgICAvLyBOYXRpdmUgU3ltYm9sLlxuICAgIGlmIChwcm9wVHlwZSA9PT0gJ3N5bWJvbCcpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vIGZhbHN5IHZhbHVlIGNhbid0IGJlIGEgU3ltYm9sXG4gICAgaWYgKCFwcm9wVmFsdWUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyAxOS40LjMuNSBTeW1ib2wucHJvdG90eXBlW0BAdG9TdHJpbmdUYWddID09PSAnU3ltYm9sJ1xuICAgIGlmIChwcm9wVmFsdWVbJ0BAdG9TdHJpbmdUYWcnXSA9PT0gJ1N5bWJvbCcpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vIEZhbGxiYWNrIGZvciBub24tc3BlYyBjb21wbGlhbnQgU3ltYm9scyB3aGljaCBhcmUgcG9seWZpbGxlZC5cbiAgICBpZiAodHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiBwcm9wVmFsdWUgaW5zdGFuY2VvZiBTeW1ib2wpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIEVxdWl2YWxlbnQgb2YgYHR5cGVvZmAgYnV0IHdpdGggc3BlY2lhbCBoYW5kbGluZyBmb3IgYXJyYXkgYW5kIHJlZ2V4cC5cbiAgZnVuY3Rpb24gZ2V0UHJvcFR5cGUocHJvcFZhbHVlKSB7XG4gICAgdmFyIHByb3BUeXBlID0gdHlwZW9mIHByb3BWYWx1ZTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShwcm9wVmFsdWUpKSB7XG4gICAgICByZXR1cm4gJ2FycmF5JztcbiAgICB9XG4gICAgaWYgKHByb3BWYWx1ZSBpbnN0YW5jZW9mIFJlZ0V4cCkge1xuICAgICAgLy8gT2xkIHdlYmtpdHMgKGF0IGxlYXN0IHVudGlsIEFuZHJvaWQgNC4wKSByZXR1cm4gJ2Z1bmN0aW9uJyByYXRoZXIgdGhhblxuICAgICAgLy8gJ29iamVjdCcgZm9yIHR5cGVvZiBhIFJlZ0V4cC4gV2UnbGwgbm9ybWFsaXplIHRoaXMgaGVyZSBzbyB0aGF0IC9ibGEvXG4gICAgICAvLyBwYXNzZXMgUHJvcFR5cGVzLm9iamVjdC5cbiAgICAgIHJldHVybiAnb2JqZWN0JztcbiAgICB9XG4gICAgaWYgKGlzU3ltYm9sKHByb3BUeXBlLCBwcm9wVmFsdWUpKSB7XG4gICAgICByZXR1cm4gJ3N5bWJvbCc7XG4gICAgfVxuICAgIHJldHVybiBwcm9wVHlwZTtcbiAgfVxuXG4gIC8vIFRoaXMgaGFuZGxlcyBtb3JlIHR5cGVzIHRoYW4gYGdldFByb3BUeXBlYC4gT25seSB1c2VkIGZvciBlcnJvciBtZXNzYWdlcy5cbiAgLy8gU2VlIGBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcmAuXG4gIGZ1bmN0aW9uIGdldFByZWNpc2VUeXBlKHByb3BWYWx1ZSkge1xuICAgIGlmICh0eXBlb2YgcHJvcFZhbHVlID09PSAndW5kZWZpbmVkJyB8fCBwcm9wVmFsdWUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiAnJyArIHByb3BWYWx1ZTtcbiAgICB9XG4gICAgdmFyIHByb3BUeXBlID0gZ2V0UHJvcFR5cGUocHJvcFZhbHVlKTtcbiAgICBpZiAocHJvcFR5cGUgPT09ICdvYmplY3QnKSB7XG4gICAgICBpZiAocHJvcFZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICByZXR1cm4gJ2RhdGUnO1xuICAgICAgfSBlbHNlIGlmIChwcm9wVmFsdWUgaW5zdGFuY2VvZiBSZWdFeHApIHtcbiAgICAgICAgcmV0dXJuICdyZWdleHAnO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcHJvcFR5cGU7XG4gIH1cblxuICAvLyBSZXR1cm5zIGEgc3RyaW5nIHRoYXQgaXMgcG9zdGZpeGVkIHRvIGEgd2FybmluZyBhYm91dCBhbiBpbnZhbGlkIHR5cGUuXG4gIC8vIEZvciBleGFtcGxlLCBcInVuZGVmaW5lZFwiIG9yIFwib2YgdHlwZSBhcnJheVwiXG4gIGZ1bmN0aW9uIGdldFBvc3RmaXhGb3JUeXBlV2FybmluZyh2YWx1ZSkge1xuICAgIHZhciB0eXBlID0gZ2V0UHJlY2lzZVR5cGUodmFsdWUpO1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnYXJyYXknOlxuICAgICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgICAgcmV0dXJuICdhbiAnICsgdHlwZTtcbiAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgY2FzZSAnZGF0ZSc6XG4gICAgICBjYXNlICdyZWdleHAnOlxuICAgICAgICByZXR1cm4gJ2EgJyArIHR5cGU7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdHlwZTtcbiAgICB9XG4gIH1cblxuICAvLyBSZXR1cm5zIGNsYXNzIG5hbWUgb2YgdGhlIG9iamVjdCwgaWYgYW55LlxuICBmdW5jdGlvbiBnZXRDbGFzc05hbWUocHJvcFZhbHVlKSB7XG4gICAgaWYgKCFwcm9wVmFsdWUuY29uc3RydWN0b3IgfHwgIXByb3BWYWx1ZS5jb25zdHJ1Y3Rvci5uYW1lKSB7XG4gICAgICByZXR1cm4gQU5PTllNT1VTO1xuICAgIH1cbiAgICByZXR1cm4gcHJvcFZhbHVlLmNvbnN0cnVjdG9yLm5hbWU7XG4gIH1cblxuICBSZWFjdFByb3BUeXBlcy5jaGVja1Byb3BUeXBlcyA9IGNoZWNrUHJvcFR5cGVzO1xuICBSZWFjdFByb3BUeXBlcy5yZXNldFdhcm5pbmdDYWNoZSA9IGNoZWNrUHJvcFR5cGVzLnJlc2V0V2FybmluZ0NhY2hlO1xuICBSZWFjdFByb3BUeXBlcy5Qcm9wVHlwZXMgPSBSZWFjdFByb3BUeXBlcztcblxuICByZXR1cm4gUmVhY3RQcm9wVHlwZXM7XG59O1xuIiwgIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXQgPSByZXF1aXJlKCcuL2xpYi9SZWFjdFByb3BUeXBlc1NlY3JldCcpO1xuXG5mdW5jdGlvbiBlbXB0eUZ1bmN0aW9uKCkge31cbmZ1bmN0aW9uIGVtcHR5RnVuY3Rpb25XaXRoUmVzZXQoKSB7fVxuZW1wdHlGdW5jdGlvbldpdGhSZXNldC5yZXNldFdhcm5pbmdDYWNoZSA9IGVtcHR5RnVuY3Rpb247XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oKSB7XG4gIGZ1bmN0aW9uIHNoaW0ocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lLCBzZWNyZXQpIHtcbiAgICBpZiAoc2VjcmV0ID09PSBSZWFjdFByb3BUeXBlc1NlY3JldCkge1xuICAgICAgLy8gSXQgaXMgc3RpbGwgc2FmZSB3aGVuIGNhbGxlZCBmcm9tIFJlYWN0LlxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgZXJyID0gbmV3IEVycm9yKFxuICAgICAgJ0NhbGxpbmcgUHJvcFR5cGVzIHZhbGlkYXRvcnMgZGlyZWN0bHkgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgYHByb3AtdHlwZXNgIHBhY2thZ2UuICcgK1xuICAgICAgJ1VzZSBQcm9wVHlwZXMuY2hlY2tQcm9wVHlwZXMoKSB0byBjYWxsIHRoZW0uICcgK1xuICAgICAgJ1JlYWQgbW9yZSBhdCBodHRwOi8vZmIubWUvdXNlLWNoZWNrLXByb3AtdHlwZXMnXG4gICAgKTtcbiAgICBlcnIubmFtZSA9ICdJbnZhcmlhbnQgVmlvbGF0aW9uJztcbiAgICB0aHJvdyBlcnI7XG4gIH07XG4gIHNoaW0uaXNSZXF1aXJlZCA9IHNoaW07XG4gIGZ1bmN0aW9uIGdldFNoaW0oKSB7XG4gICAgcmV0dXJuIHNoaW07XG4gIH07XG4gIC8vIEltcG9ydGFudCFcbiAgLy8gS2VlcCB0aGlzIGxpc3QgaW4gc3luYyB3aXRoIHByb2R1Y3Rpb24gdmVyc2lvbiBpbiBgLi9mYWN0b3J5V2l0aFR5cGVDaGVja2Vycy5qc2AuXG4gIHZhciBSZWFjdFByb3BUeXBlcyA9IHtcbiAgICBhcnJheTogc2hpbSxcbiAgICBiaWdpbnQ6IHNoaW0sXG4gICAgYm9vbDogc2hpbSxcbiAgICBmdW5jOiBzaGltLFxuICAgIG51bWJlcjogc2hpbSxcbiAgICBvYmplY3Q6IHNoaW0sXG4gICAgc3RyaW5nOiBzaGltLFxuICAgIHN5bWJvbDogc2hpbSxcblxuICAgIGFueTogc2hpbSxcbiAgICBhcnJheU9mOiBnZXRTaGltLFxuICAgIGVsZW1lbnQ6IHNoaW0sXG4gICAgZWxlbWVudFR5cGU6IHNoaW0sXG4gICAgaW5zdGFuY2VPZjogZ2V0U2hpbSxcbiAgICBub2RlOiBzaGltLFxuICAgIG9iamVjdE9mOiBnZXRTaGltLFxuICAgIG9uZU9mOiBnZXRTaGltLFxuICAgIG9uZU9mVHlwZTogZ2V0U2hpbSxcbiAgICBzaGFwZTogZ2V0U2hpbSxcbiAgICBleGFjdDogZ2V0U2hpbSxcblxuICAgIGNoZWNrUHJvcFR5cGVzOiBlbXB0eUZ1bmN0aW9uV2l0aFJlc2V0LFxuICAgIHJlc2V0V2FybmluZ0NhY2hlOiBlbXB0eUZ1bmN0aW9uXG4gIH07XG5cbiAgUmVhY3RQcm9wVHlwZXMuUHJvcFR5cGVzID0gUmVhY3RQcm9wVHlwZXM7XG5cbiAgcmV0dXJuIFJlYWN0UHJvcFR5cGVzO1xufTtcbiIsICIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciBSZWFjdElzID0gcmVxdWlyZSgncmVhY3QtaXMnKTtcblxuICAvLyBCeSBleHBsaWNpdGx5IHVzaW5nIGBwcm9wLXR5cGVzYCB5b3UgYXJlIG9wdGluZyBpbnRvIG5ldyBkZXZlbG9wbWVudCBiZWhhdmlvci5cbiAgLy8gaHR0cDovL2ZiLm1lL3Byb3AtdHlwZXMtaW4tcHJvZFxuICB2YXIgdGhyb3dPbkRpcmVjdEFjY2VzcyA9IHRydWU7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9mYWN0b3J5V2l0aFR5cGVDaGVja2VycycpKFJlYWN0SXMuaXNFbGVtZW50LCB0aHJvd09uRGlyZWN0QWNjZXNzKTtcbn0gZWxzZSB7XG4gIC8vIEJ5IGV4cGxpY2l0bHkgdXNpbmcgYHByb3AtdHlwZXNgIHlvdSBhcmUgb3B0aW5nIGludG8gbmV3IHByb2R1Y3Rpb24gYmVoYXZpb3IuXG4gIC8vIGh0dHA6Ly9mYi5tZS9wcm9wLXR5cGVzLWluLXByb2RcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2ZhY3RvcnlXaXRoVGhyb3dpbmdTaGltcycpKCk7XG59XG4iLCAiKGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnID8gZmFjdG9yeShleHBvcnRzLCByZXF1aXJlKCdAZm9ydGF3ZXNvbWUvZm9udGF3ZXNvbWUtc3ZnLWNvcmUnKSwgcmVxdWlyZSgncHJvcC10eXBlcycpLCByZXF1aXJlKCdyZWFjdCcpKSA6XG4gIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJ2V4cG9ydHMnLCAnQGZvcnRhd2Vzb21lL2ZvbnRhd2Vzb21lLXN2Zy1jb3JlJywgJ3Byb3AtdHlwZXMnLCAncmVhY3QnXSwgZmFjdG9yeSkgOlxuICAoZ2xvYmFsID0gdHlwZW9mIGdsb2JhbFRoaXMgIT09ICd1bmRlZmluZWQnID8gZ2xvYmFsVGhpcyA6IGdsb2JhbCB8fCBzZWxmLCBmYWN0b3J5KGdsb2JhbFtcInJlYWN0LWZvbnRhd2Vzb21lXCJdID0ge30sIGdsb2JhbC5Gb250QXdlc29tZSwgZ2xvYmFsLlByb3BUeXBlcywgZ2xvYmFsLlJlYWN0KSk7XG59KSh0aGlzLCAoZnVuY3Rpb24gKGV4cG9ydHMsIGZvbnRhd2Vzb21lU3ZnQ29yZSwgUHJvcFR5cGVzLCBSZWFjdCkgeyAndXNlIHN0cmljdCc7XG5cbiAgZnVuY3Rpb24gX2ludGVyb3BEZWZhdWx0TGVnYWN5IChlKSB7IHJldHVybiBlICYmIHR5cGVvZiBlID09PSAnb2JqZWN0JyAmJiAnZGVmYXVsdCcgaW4gZSA/IGUgOiB7ICdkZWZhdWx0JzogZSB9OyB9XG5cbiAgdmFyIFByb3BUeXBlc19fZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9faW50ZXJvcERlZmF1bHRMZWdhY3koUHJvcFR5cGVzKTtcbiAgdmFyIFJlYWN0X19kZWZhdWx0ID0gLyojX19QVVJFX18qL19pbnRlcm9wRGVmYXVsdExlZ2FjeShSZWFjdCk7XG5cbiAgZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7XG4gICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpO1xuXG4gICAgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHtcbiAgICAgIHZhciBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpO1xuICAgICAgZW51bWVyYWJsZU9ubHkgJiYgKHN5bWJvbHMgPSBzeW1ib2xzLmZpbHRlcihmdW5jdGlvbiAoc3ltKSB7XG4gICAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgc3ltKS5lbnVtZXJhYmxlO1xuICAgICAgfSkpLCBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGtleXM7XG4gIH1cblxuICBmdW5jdGlvbiBfb2JqZWN0U3ByZWFkMih0YXJnZXQpIHtcbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHNvdXJjZSA9IG51bGwgIT0gYXJndW1lbnRzW2ldID8gYXJndW1lbnRzW2ldIDoge307XG4gICAgICBpICUgMiA/IG93bktleXMoT2JqZWN0KHNvdXJjZSksICEwKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7XG4gICAgICB9KSA6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzID8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKSA6IG93bktleXMoT2JqZWN0KHNvdXJjZSkpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB0YXJnZXQ7XG4gIH1cblxuICBmdW5jdGlvbiBfdHlwZW9mKG9iaikge1xuICAgIFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjtcblxuICAgIHJldHVybiBfdHlwZW9mID0gXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgXCJzeW1ib2xcIiA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID8gZnVuY3Rpb24gKG9iaikge1xuICAgICAgcmV0dXJuIHR5cGVvZiBvYmo7XG4gICAgfSA6IGZ1bmN0aW9uIChvYmopIHtcbiAgICAgIHJldHVybiBvYmogJiYgXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7XG4gICAgfSwgX3R5cGVvZihvYmopO1xuICB9XG5cbiAgZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkge1xuICAgIGlmIChrZXkgaW4gb2JqKSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHtcbiAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgb2JqW2tleV0gPSB2YWx1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gb2JqO1xuICB9XG5cbiAgZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCkge1xuICAgIGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9O1xuICAgIHZhciB0YXJnZXQgPSB7fTtcbiAgICB2YXIgc291cmNlS2V5cyA9IE9iamVjdC5rZXlzKHNvdXJjZSk7XG4gICAgdmFyIGtleSwgaTtcblxuICAgIGZvciAoaSA9IDA7IGkgPCBzb3VyY2VLZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBrZXkgPSBzb3VyY2VLZXlzW2ldO1xuICAgICAgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTtcbiAgICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfVxuXG4gIGZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhzb3VyY2UsIGV4Y2x1ZGVkKSB7XG4gICAgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307XG5cbiAgICB2YXIgdGFyZ2V0ID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCk7XG5cbiAgICB2YXIga2V5LCBpO1xuXG4gICAgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHtcbiAgICAgIHZhciBzb3VyY2VTeW1ib2xLZXlzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzb3VyY2UpO1xuXG4gICAgICBmb3IgKGkgPSAwOyBpIDwgc291cmNlU3ltYm9sS2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgICBrZXkgPSBzb3VyY2VTeW1ib2xLZXlzW2ldO1xuICAgICAgICBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlO1xuICAgICAgICBpZiAoIU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzb3VyY2UsIGtleSkpIGNvbnRpbnVlO1xuICAgICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0YXJnZXQ7XG4gIH1cblxuICBmdW5jdGlvbiBfdG9Db25zdW1hYmxlQXJyYXkoYXJyKSB7XG4gICAgcmV0dXJuIF9hcnJheVdpdGhvdXRIb2xlcyhhcnIpIHx8IF9pdGVyYWJsZVRvQXJyYXkoYXJyKSB8fCBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkoYXJyKSB8fCBfbm9uSXRlcmFibGVTcHJlYWQoKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIF9hcnJheVdpdGhvdXRIb2xlcyhhcnIpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkoYXJyKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXkoaXRlcikge1xuICAgIGlmICh0eXBlb2YgU3ltYm9sICE9PSBcInVuZGVmaW5lZFwiICYmIGl0ZXJbU3ltYm9sLml0ZXJhdG9yXSAhPSBudWxsIHx8IGl0ZXJbXCJAQGl0ZXJhdG9yXCJdICE9IG51bGwpIHJldHVybiBBcnJheS5mcm9tKGl0ZXIpO1xuICB9XG5cbiAgZnVuY3Rpb24gX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KG8sIG1pbkxlbikge1xuICAgIGlmICghbykgcmV0dXJuO1xuICAgIGlmICh0eXBlb2YgbyA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7XG4gICAgdmFyIG4gPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobykuc2xpY2UoOCwgLTEpO1xuICAgIGlmIChuID09PSBcIk9iamVjdFwiICYmIG8uY29uc3RydWN0b3IpIG4gPSBvLmNvbnN0cnVjdG9yLm5hbWU7XG4gICAgaWYgKG4gPT09IFwiTWFwXCIgfHwgbiA9PT0gXCJTZXRcIikgcmV0dXJuIEFycmF5LmZyb20obyk7XG4gICAgaWYgKG4gPT09IFwiQXJndW1lbnRzXCIgfHwgL14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pO1xuICB9XG5cbiAgZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkoYXJyLCBsZW4pIHtcbiAgICBpZiAobGVuID09IG51bGwgfHwgbGVuID4gYXJyLmxlbmd0aCkgbGVuID0gYXJyLmxlbmd0aDtcblxuICAgIGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGxlbik7IGkgPCBsZW47IGkrKykgYXJyMltpXSA9IGFycltpXTtcblxuICAgIHJldHVybiBhcnIyO1xuICB9XG5cbiAgZnVuY3Rpb24gX25vbkl0ZXJhYmxlU3ByZWFkKCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpO1xuICB9XG5cbiAgLy8gR2V0IENTUyBjbGFzcyBsaXN0IGZyb20gYSBwcm9wcyBvYmplY3RcbiAgZnVuY3Rpb24gY2xhc3NMaXN0KHByb3BzKSB7XG4gICAgdmFyIF9jbGFzc2VzO1xuXG4gICAgdmFyIGJlYXQgPSBwcm9wcy5iZWF0LFxuICAgICAgICBmYWRlID0gcHJvcHMuZmFkZSxcbiAgICAgICAgYmVhdEZhZGUgPSBwcm9wcy5iZWF0RmFkZSxcbiAgICAgICAgYm91bmNlID0gcHJvcHMuYm91bmNlLFxuICAgICAgICBzaGFrZSA9IHByb3BzLnNoYWtlLFxuICAgICAgICBmbGFzaCA9IHByb3BzLmZsYXNoLFxuICAgICAgICBzcGluID0gcHJvcHMuc3BpbixcbiAgICAgICAgc3BpblB1bHNlID0gcHJvcHMuc3BpblB1bHNlLFxuICAgICAgICBzcGluUmV2ZXJzZSA9IHByb3BzLnNwaW5SZXZlcnNlLFxuICAgICAgICBwdWxzZSA9IHByb3BzLnB1bHNlLFxuICAgICAgICBmaXhlZFdpZHRoID0gcHJvcHMuZml4ZWRXaWR0aCxcbiAgICAgICAgaW52ZXJzZSA9IHByb3BzLmludmVyc2UsXG4gICAgICAgIGJvcmRlciA9IHByb3BzLmJvcmRlcixcbiAgICAgICAgbGlzdEl0ZW0gPSBwcm9wcy5saXN0SXRlbSxcbiAgICAgICAgZmxpcCA9IHByb3BzLmZsaXAsXG4gICAgICAgIHNpemUgPSBwcm9wcy5zaXplLFxuICAgICAgICByb3RhdGlvbiA9IHByb3BzLnJvdGF0aW9uLFxuICAgICAgICBwdWxsID0gcHJvcHMucHVsbDsgLy8gbWFwIG9mIENTUyBjbGFzcyBuYW1lcyB0byBwcm9wZXJ0aWVzXG5cbiAgICB2YXIgY2xhc3NlcyA9IChfY2xhc3NlcyA9IHtcbiAgICAgICdmYS1iZWF0JzogYmVhdCxcbiAgICAgICdmYS1mYWRlJzogZmFkZSxcbiAgICAgICdmYS1iZWF0LWZhZGUnOiBiZWF0RmFkZSxcbiAgICAgICdmYS1ib3VuY2UnOiBib3VuY2UsXG4gICAgICAnZmEtc2hha2UnOiBzaGFrZSxcbiAgICAgICdmYS1mbGFzaCc6IGZsYXNoLFxuICAgICAgJ2ZhLXNwaW4nOiBzcGluLFxuICAgICAgJ2ZhLXNwaW4tcmV2ZXJzZSc6IHNwaW5SZXZlcnNlLFxuICAgICAgJ2ZhLXNwaW4tcHVsc2UnOiBzcGluUHVsc2UsXG4gICAgICAnZmEtcHVsc2UnOiBwdWxzZSxcbiAgICAgICdmYS1mdyc6IGZpeGVkV2lkdGgsXG4gICAgICAnZmEtaW52ZXJzZSc6IGludmVyc2UsXG4gICAgICAnZmEtYm9yZGVyJzogYm9yZGVyLFxuICAgICAgJ2ZhLWxpJzogbGlzdEl0ZW0sXG4gICAgICAnZmEtZmxpcCc6IGZsaXAgPT09IHRydWUsXG4gICAgICAnZmEtZmxpcC1ob3Jpem9udGFsJzogZmxpcCA9PT0gJ2hvcml6b250YWwnIHx8IGZsaXAgPT09ICdib3RoJyxcbiAgICAgICdmYS1mbGlwLXZlcnRpY2FsJzogZmxpcCA9PT0gJ3ZlcnRpY2FsJyB8fCBmbGlwID09PSAnYm90aCdcbiAgICB9LCBfZGVmaW5lUHJvcGVydHkoX2NsYXNzZXMsIFwiZmEtXCIuY29uY2F0KHNpemUpLCB0eXBlb2Ygc2l6ZSAhPT0gJ3VuZGVmaW5lZCcgJiYgc2l6ZSAhPT0gbnVsbCksIF9kZWZpbmVQcm9wZXJ0eShfY2xhc3NlcywgXCJmYS1yb3RhdGUtXCIuY29uY2F0KHJvdGF0aW9uKSwgdHlwZW9mIHJvdGF0aW9uICE9PSAndW5kZWZpbmVkJyAmJiByb3RhdGlvbiAhPT0gbnVsbCAmJiByb3RhdGlvbiAhPT0gMCksIF9kZWZpbmVQcm9wZXJ0eShfY2xhc3NlcywgXCJmYS1wdWxsLVwiLmNvbmNhdChwdWxsKSwgdHlwZW9mIHB1bGwgIT09ICd1bmRlZmluZWQnICYmIHB1bGwgIT09IG51bGwpLCBfZGVmaW5lUHJvcGVydHkoX2NsYXNzZXMsICdmYS1zd2FwLW9wYWNpdHknLCBwcm9wcy5zd2FwT3BhY2l0eSksIF9jbGFzc2VzKTsgLy8gbWFwIG92ZXIgYWxsIHRoZSBrZXlzIGluIHRoZSBjbGFzc2VzIG9iamVjdFxuICAgIC8vIHJldHVybiBhbiBhcnJheSBvZiB0aGUga2V5cyB3aGVyZSB0aGUgdmFsdWUgZm9yIHRoZSBrZXkgaXMgbm90IG51bGxcblxuICAgIHJldHVybiBPYmplY3Qua2V5cyhjbGFzc2VzKS5tYXAoZnVuY3Rpb24gKGtleSkge1xuICAgICAgcmV0dXJuIGNsYXNzZXNba2V5XSA/IGtleSA6IG51bGw7XG4gICAgfSkuZmlsdGVyKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIHJldHVybiBrZXk7XG4gICAgfSk7XG4gIH1cblxuICAvLyBDYW1lbGl6ZSB0YWtlbiBmcm9tIGh1bXBzXG4gIC8vIGh1bXBzIGlzIGNvcHlyaWdodCBcdTAwQTkgMjAxMisgRG9tIENocmlzdGllXG4gIC8vIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cbiAgLy8gUGVyZm9ybWFudCB3YXkgdG8gZGV0ZXJtaW5lIGlmIG9iamVjdCBjb2VyY2VzIHRvIGEgbnVtYmVyXG4gIGZ1bmN0aW9uIF9pc051bWVyaWNhbChvYmopIHtcbiAgICBvYmogPSBvYmogLSAwOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG5cbiAgICByZXR1cm4gb2JqID09PSBvYmo7XG4gIH1cblxuICBmdW5jdGlvbiBjYW1lbGl6ZShzdHJpbmcpIHtcbiAgICBpZiAoX2lzTnVtZXJpY2FsKHN0cmluZykpIHtcbiAgICAgIHJldHVybiBzdHJpbmc7XG4gICAgfSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlbGVzcy1lc2NhcGVcblxuXG4gICAgc3RyaW5nID0gc3RyaW5nLnJlcGxhY2UoL1tcXC1fXFxzXSsoLik/L2csIGZ1bmN0aW9uIChtYXRjaCwgY2hyKSB7XG4gICAgICByZXR1cm4gY2hyID8gY2hyLnRvVXBwZXJDYXNlKCkgOiAnJztcbiAgICB9KTsgLy8gRW5zdXJlIDFzdCBjaGFyIGlzIGFsd2F5cyBsb3dlcmNhc2VcblxuICAgIHJldHVybiBzdHJpbmcuc3Vic3RyKDAsIDEpLnRvTG93ZXJDYXNlKCkgKyBzdHJpbmcuc3Vic3RyKDEpO1xuICB9XG5cbiAgdmFyIF9leGNsdWRlZCA9IFtcInN0eWxlXCJdO1xuXG4gIGZ1bmN0aW9uIGNhcGl0YWxpemUodmFsKSB7XG4gICAgcmV0dXJuIHZhbC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHZhbC5zbGljZSgxKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHN0eWxlVG9PYmplY3Qoc3R5bGUpIHtcbiAgICByZXR1cm4gc3R5bGUuc3BsaXQoJzsnKS5tYXAoZnVuY3Rpb24gKHMpIHtcbiAgICAgIHJldHVybiBzLnRyaW0oKTtcbiAgICB9KS5maWx0ZXIoZnVuY3Rpb24gKHMpIHtcbiAgICAgIHJldHVybiBzO1xuICAgIH0pLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBwYWlyKSB7XG4gICAgICB2YXIgaSA9IHBhaXIuaW5kZXhPZignOicpO1xuICAgICAgdmFyIHByb3AgPSBjYW1lbGl6ZShwYWlyLnNsaWNlKDAsIGkpKTtcbiAgICAgIHZhciB2YWx1ZSA9IHBhaXIuc2xpY2UoaSArIDEpLnRyaW0oKTtcbiAgICAgIHByb3Auc3RhcnRzV2l0aCgnd2Via2l0JykgPyBhY2NbY2FwaXRhbGl6ZShwcm9wKV0gPSB2YWx1ZSA6IGFjY1twcm9wXSA9IHZhbHVlO1xuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCB7fSk7XG4gIH1cblxuICBmdW5jdGlvbiBjb252ZXJ0KGNyZWF0ZUVsZW1lbnQsIGVsZW1lbnQpIHtcbiAgICB2YXIgZXh0cmFQcm9wcyA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDoge307XG5cbiAgICBpZiAodHlwZW9mIGVsZW1lbnQgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gZWxlbWVudDtcbiAgICB9XG5cbiAgICB2YXIgY2hpbGRyZW4gPSAoZWxlbWVudC5jaGlsZHJlbiB8fCBbXSkubWFwKGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgcmV0dXJuIGNvbnZlcnQoY3JlYXRlRWxlbWVudCwgY2hpbGQpO1xuICAgIH0pO1xuICAgIC8qIGVzbGludC1kaXNhYmxlIGRvdC1ub3RhdGlvbiAqL1xuXG4gICAgdmFyIG1peGlucyA9IE9iamVjdC5rZXlzKGVsZW1lbnQuYXR0cmlidXRlcyB8fCB7fSkucmVkdWNlKGZ1bmN0aW9uIChhY2MsIGtleSkge1xuICAgICAgdmFyIHZhbCA9IGVsZW1lbnQuYXR0cmlidXRlc1trZXldO1xuXG4gICAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgICBjYXNlICdjbGFzcyc6XG4gICAgICAgICAgYWNjLmF0dHJzWydjbGFzc05hbWUnXSA9IHZhbDtcbiAgICAgICAgICBkZWxldGUgZWxlbWVudC5hdHRyaWJ1dGVzWydjbGFzcyddO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ3N0eWxlJzpcbiAgICAgICAgICBhY2MuYXR0cnNbJ3N0eWxlJ10gPSBzdHlsZVRvT2JqZWN0KHZhbCk7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBpZiAoa2V5LmluZGV4T2YoJ2FyaWEtJykgPT09IDAgfHwga2V5LmluZGV4T2YoJ2RhdGEtJykgPT09IDApIHtcbiAgICAgICAgICAgIGFjYy5hdHRyc1trZXkudG9Mb3dlckNhc2UoKV0gPSB2YWw7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFjYy5hdHRyc1tjYW1lbGl6ZShrZXkpXSA9IHZhbDtcbiAgICAgICAgICB9XG5cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCB7XG4gICAgICBhdHRyczoge31cbiAgICB9KTtcblxuICAgIHZhciBfZXh0cmFQcm9wcyRzdHlsZSA9IGV4dHJhUHJvcHMuc3R5bGUsXG4gICAgICAgIGV4aXN0aW5nU3R5bGUgPSBfZXh0cmFQcm9wcyRzdHlsZSA9PT0gdm9pZCAwID8ge30gOiBfZXh0cmFQcm9wcyRzdHlsZSxcbiAgICAgICAgcmVtYWluaW5nID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKGV4dHJhUHJvcHMsIF9leGNsdWRlZCk7XG5cbiAgICBtaXhpbnMuYXR0cnNbJ3N0eWxlJ10gPSBfb2JqZWN0U3ByZWFkMihfb2JqZWN0U3ByZWFkMih7fSwgbWl4aW5zLmF0dHJzWydzdHlsZSddKSwgZXhpc3RpbmdTdHlsZSk7XG4gICAgLyogZXNsaW50LWVuYWJsZSAqL1xuXG4gICAgcmV0dXJuIGNyZWF0ZUVsZW1lbnQuYXBwbHkodm9pZCAwLCBbZWxlbWVudC50YWcsIF9vYmplY3RTcHJlYWQyKF9vYmplY3RTcHJlYWQyKHt9LCBtaXhpbnMuYXR0cnMpLCByZW1haW5pbmcpXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KGNoaWxkcmVuKSkpO1xuICB9XG5cbiAgdmFyIFBST0RVQ1RJT04gPSBmYWxzZTtcblxuICB0cnkge1xuICAgIFBST0RVQ1RJT04gPSBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nO1xuICB9IGNhdGNoIChlKSB7fVxuXG4gIGZ1bmN0aW9uIGxvZyAoKSB7XG4gICAgaWYgKCFQUk9EVUNUSU9OICYmIGNvbnNvbGUgJiYgdHlwZW9mIGNvbnNvbGUuZXJyb3IgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHZhciBfY29uc29sZTtcblxuICAgICAgKF9jb25zb2xlID0gY29uc29sZSkuZXJyb3IuYXBwbHkoX2NvbnNvbGUsIGFyZ3VtZW50cyk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gbm9ybWFsaXplSWNvbkFyZ3MoaWNvbikge1xuICAgIC8vIHRoaXMgaGFzIGV2ZXJ5dGhpbmcgdGhhdCBpdCBuZWVkcyB0byBiZSByZW5kZXJlZCB3aGljaCBtZWFucyBpdCB3YXMgcHJvYmFibHkgaW1wb3J0ZWRcbiAgICAvLyBkaXJlY3RseSBmcm9tIGFuIGljb24gc3ZnIHBhY2thZ2VcbiAgICBpZiAoaWNvbiAmJiBfdHlwZW9mKGljb24pID09PSAnb2JqZWN0JyAmJiBpY29uLnByZWZpeCAmJiBpY29uLmljb25OYW1lICYmIGljb24uaWNvbikge1xuICAgICAgcmV0dXJuIGljb247XG4gICAgfVxuXG4gICAgaWYgKGZvbnRhd2Vzb21lU3ZnQ29yZS5wYXJzZS5pY29uKSB7XG4gICAgICByZXR1cm4gZm9udGF3ZXNvbWVTdmdDb3JlLnBhcnNlLmljb24oaWNvbik7XG4gICAgfSAvLyBpZiB0aGUgaWNvbiBpcyBudWxsLCB0aGVyZSdzIG5vdGhpbmcgdG8gZG9cblxuXG4gICAgaWYgKGljb24gPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0gLy8gaWYgdGhlIGljb24gaXMgYW4gb2JqZWN0IGFuZCBoYXMgYSBwcmVmaXggYW5kIGFuIGljb24gbmFtZSwgcmV0dXJuIGl0XG5cblxuICAgIGlmIChpY29uICYmIF90eXBlb2YoaWNvbikgPT09ICdvYmplY3QnICYmIGljb24ucHJlZml4ICYmIGljb24uaWNvbk5hbWUpIHtcbiAgICAgIHJldHVybiBpY29uO1xuICAgIH0gLy8gaWYgaXQncyBhbiBhcnJheSB3aXRoIGxlbmd0aCBvZiB0d29cblxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoaWNvbikgJiYgaWNvbi5sZW5ndGggPT09IDIpIHtcbiAgICAgIC8vIHVzZSB0aGUgZmlyc3QgaXRlbSBhcyBwcmVmaXgsIHNlY29uZCBhcyBpY29uIG5hbWVcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHByZWZpeDogaWNvblswXSxcbiAgICAgICAgaWNvbk5hbWU6IGljb25bMV1cbiAgICAgIH07XG4gICAgfSAvLyBpZiBpdCdzIGEgc3RyaW5nLCB1c2UgaXQgYXMgdGhlIGljb24gbmFtZVxuXG5cbiAgICBpZiAodHlwZW9mIGljb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwcmVmaXg6ICdmYXMnLFxuICAgICAgICBpY29uTmFtZTogaWNvblxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICAvLyBjcmVhdGVzIGFuIG9iamVjdCB3aXRoIGEga2V5IG9mIGtleVxuICAvLyBhbmQgYSB2YWx1ZSBvZiB2YWx1ZVxuICAvLyBpZiBjZXJ0YWluIGNvbmRpdGlvbnMgYXJlIG1ldFxuICBmdW5jdGlvbiBvYmplY3RXaXRoS2V5KGtleSwgdmFsdWUpIHtcbiAgICAvLyBpZiB0aGUgdmFsdWUgaXMgYSBub24tZW1wdHkgYXJyYXlcbiAgICAvLyBvciBpdCdzIG5vdCBhbiBhcnJheSBidXQgaXQgaXMgdHJ1dGh5XG4gICAgLy8gdGhlbiBjcmVhdGUgdGhlIG9iamVjdCB3aXRoIHRoZSBrZXkgYW5kIHRoZSB2YWx1ZVxuICAgIC8vIGlmIG5vdCwgcmV0dXJuIGFuIGVtcHR5IGFycmF5XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA+IDAgfHwgIUFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlID8gX2RlZmluZVByb3BlcnR5KHt9LCBrZXksIHZhbHVlKSA6IHt9O1xuICB9XG5cbiAgdmFyIGRlZmF1bHRQcm9wcyA9IHtcbiAgICBib3JkZXI6IGZhbHNlLFxuICAgIGNsYXNzTmFtZTogJycsXG4gICAgbWFzazogbnVsbCxcbiAgICBtYXNrSWQ6IG51bGwsXG4gICAgZml4ZWRXaWR0aDogZmFsc2UsXG4gICAgaW52ZXJzZTogZmFsc2UsXG4gICAgZmxpcDogZmFsc2UsXG4gICAgaWNvbjogbnVsbCxcbiAgICBsaXN0SXRlbTogZmFsc2UsXG4gICAgcHVsbDogbnVsbCxcbiAgICBwdWxzZTogZmFsc2UsXG4gICAgcm90YXRpb246IG51bGwsXG4gICAgc2l6ZTogbnVsbCxcbiAgICBzcGluOiBmYWxzZSxcbiAgICBzcGluUHVsc2U6IGZhbHNlLFxuICAgIHNwaW5SZXZlcnNlOiBmYWxzZSxcbiAgICBiZWF0OiBmYWxzZSxcbiAgICBmYWRlOiBmYWxzZSxcbiAgICBiZWF0RmFkZTogZmFsc2UsXG4gICAgYm91bmNlOiBmYWxzZSxcbiAgICBzaGFrZTogZmFsc2UsXG4gICAgc3ltYm9sOiBmYWxzZSxcbiAgICB0aXRsZTogJycsXG4gICAgdGl0bGVJZDogbnVsbCxcbiAgICB0cmFuc2Zvcm06IG51bGwsXG4gICAgc3dhcE9wYWNpdHk6IGZhbHNlXG4gIH07XG4gIHZhciBGb250QXdlc29tZUljb24gPSAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHRbXCJkZWZhdWx0XCJdLmZvcndhcmRSZWYoZnVuY3Rpb24gKHByb3BzLCByZWYpIHtcbiAgICB2YXIgYWxsUHJvcHMgPSBfb2JqZWN0U3ByZWFkMihfb2JqZWN0U3ByZWFkMih7fSwgZGVmYXVsdFByb3BzKSwgcHJvcHMpO1xuXG4gICAgdmFyIGljb25BcmdzID0gYWxsUHJvcHMuaWNvbixcbiAgICAgICAgbWFza0FyZ3MgPSBhbGxQcm9wcy5tYXNrLFxuICAgICAgICBzeW1ib2wgPSBhbGxQcm9wcy5zeW1ib2wsXG4gICAgICAgIGNsYXNzTmFtZSA9IGFsbFByb3BzLmNsYXNzTmFtZSxcbiAgICAgICAgdGl0bGUgPSBhbGxQcm9wcy50aXRsZSxcbiAgICAgICAgdGl0bGVJZCA9IGFsbFByb3BzLnRpdGxlSWQsXG4gICAgICAgIG1hc2tJZCA9IGFsbFByb3BzLm1hc2tJZDtcbiAgICB2YXIgaWNvbkxvb2t1cCA9IG5vcm1hbGl6ZUljb25BcmdzKGljb25BcmdzKTtcbiAgICB2YXIgY2xhc3NlcyA9IG9iamVjdFdpdGhLZXkoJ2NsYXNzZXMnLCBbXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KGNsYXNzTGlzdChhbGxQcm9wcykpLCBfdG9Db25zdW1hYmxlQXJyYXkoKGNsYXNzTmFtZSB8fCAnJykuc3BsaXQoJyAnKSkpKTtcbiAgICB2YXIgdHJhbnNmb3JtID0gb2JqZWN0V2l0aEtleSgndHJhbnNmb3JtJywgdHlwZW9mIGFsbFByb3BzLnRyYW5zZm9ybSA9PT0gJ3N0cmluZycgPyBmb250YXdlc29tZVN2Z0NvcmUucGFyc2UudHJhbnNmb3JtKGFsbFByb3BzLnRyYW5zZm9ybSkgOiBhbGxQcm9wcy50cmFuc2Zvcm0pO1xuICAgIHZhciBtYXNrID0gb2JqZWN0V2l0aEtleSgnbWFzaycsIG5vcm1hbGl6ZUljb25BcmdzKG1hc2tBcmdzKSk7XG4gICAgdmFyIHJlbmRlcmVkSWNvbiA9IGZvbnRhd2Vzb21lU3ZnQ29yZS5pY29uKGljb25Mb29rdXAsIF9vYmplY3RTcHJlYWQyKF9vYmplY3RTcHJlYWQyKF9vYmplY3RTcHJlYWQyKF9vYmplY3RTcHJlYWQyKHt9LCBjbGFzc2VzKSwgdHJhbnNmb3JtKSwgbWFzayksIHt9LCB7XG4gICAgICBzeW1ib2w6IHN5bWJvbCxcbiAgICAgIHRpdGxlOiB0aXRsZSxcbiAgICAgIHRpdGxlSWQ6IHRpdGxlSWQsXG4gICAgICBtYXNrSWQ6IG1hc2tJZFxuICAgIH0pKTtcblxuICAgIGlmICghcmVuZGVyZWRJY29uKSB7XG4gICAgICBsb2coJ0NvdWxkIG5vdCBmaW5kIGljb24nLCBpY29uTG9va3VwKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHZhciBhYnN0cmFjdCA9IHJlbmRlcmVkSWNvbi5hYnN0cmFjdDtcbiAgICB2YXIgZXh0cmFQcm9wcyA9IHtcbiAgICAgIHJlZjogcmVmXG4gICAgfTtcbiAgICBPYmplY3Qua2V5cyhhbGxQcm9wcykuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zXG4gICAgICBpZiAoIWRlZmF1bHRQcm9wcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgIGV4dHJhUHJvcHNba2V5XSA9IGFsbFByb3BzW2tleV07XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGNvbnZlcnRDdXJyeShhYnN0cmFjdFswXSwgZXh0cmFQcm9wcyk7XG4gIH0pO1xuICBGb250QXdlc29tZUljb24uZGlzcGxheU5hbWUgPSAnRm9udEF3ZXNvbWVJY29uJztcbiAgRm9udEF3ZXNvbWVJY29uLnByb3BUeXBlcyA9IHtcbiAgICBiZWF0OiBQcm9wVHlwZXNfX2RlZmF1bHRbXCJkZWZhdWx0XCJdLmJvb2wsXG4gICAgYm9yZGVyOiBQcm9wVHlwZXNfX2RlZmF1bHRbXCJkZWZhdWx0XCJdLmJvb2wsXG4gICAgYmVhdEZhZGU6IFByb3BUeXBlc19fZGVmYXVsdFtcImRlZmF1bHRcIl0uYm9vbCxcbiAgICBib3VuY2U6IFByb3BUeXBlc19fZGVmYXVsdFtcImRlZmF1bHRcIl0uYm9vbCxcbiAgICBjbGFzc05hbWU6IFByb3BUeXBlc19fZGVmYXVsdFtcImRlZmF1bHRcIl0uc3RyaW5nLFxuICAgIGZhZGU6IFByb3BUeXBlc19fZGVmYXVsdFtcImRlZmF1bHRcIl0uYm9vbCxcbiAgICBmbGFzaDogUHJvcFR5cGVzX19kZWZhdWx0W1wiZGVmYXVsdFwiXS5ib29sLFxuICAgIG1hc2s6IFByb3BUeXBlc19fZGVmYXVsdFtcImRlZmF1bHRcIl0ub25lT2ZUeXBlKFtQcm9wVHlwZXNfX2RlZmF1bHRbXCJkZWZhdWx0XCJdLm9iamVjdCwgUHJvcFR5cGVzX19kZWZhdWx0W1wiZGVmYXVsdFwiXS5hcnJheSwgUHJvcFR5cGVzX19kZWZhdWx0W1wiZGVmYXVsdFwiXS5zdHJpbmddKSxcbiAgICBtYXNrSWQ6IFByb3BUeXBlc19fZGVmYXVsdFtcImRlZmF1bHRcIl0uc3RyaW5nLFxuICAgIGZpeGVkV2lkdGg6IFByb3BUeXBlc19fZGVmYXVsdFtcImRlZmF1bHRcIl0uYm9vbCxcbiAgICBpbnZlcnNlOiBQcm9wVHlwZXNfX2RlZmF1bHRbXCJkZWZhdWx0XCJdLmJvb2wsXG4gICAgZmxpcDogUHJvcFR5cGVzX19kZWZhdWx0W1wiZGVmYXVsdFwiXS5vbmVPZihbdHJ1ZSwgZmFsc2UsICdob3Jpem9udGFsJywgJ3ZlcnRpY2FsJywgJ2JvdGgnXSksXG4gICAgaWNvbjogUHJvcFR5cGVzX19kZWZhdWx0W1wiZGVmYXVsdFwiXS5vbmVPZlR5cGUoW1Byb3BUeXBlc19fZGVmYXVsdFtcImRlZmF1bHRcIl0ub2JqZWN0LCBQcm9wVHlwZXNfX2RlZmF1bHRbXCJkZWZhdWx0XCJdLmFycmF5LCBQcm9wVHlwZXNfX2RlZmF1bHRbXCJkZWZhdWx0XCJdLnN0cmluZ10pLFxuICAgIGxpc3RJdGVtOiBQcm9wVHlwZXNfX2RlZmF1bHRbXCJkZWZhdWx0XCJdLmJvb2wsXG4gICAgcHVsbDogUHJvcFR5cGVzX19kZWZhdWx0W1wiZGVmYXVsdFwiXS5vbmVPZihbJ3JpZ2h0JywgJ2xlZnQnXSksXG4gICAgcHVsc2U6IFByb3BUeXBlc19fZGVmYXVsdFtcImRlZmF1bHRcIl0uYm9vbCxcbiAgICByb3RhdGlvbjogUHJvcFR5cGVzX19kZWZhdWx0W1wiZGVmYXVsdFwiXS5vbmVPZihbMCwgOTAsIDE4MCwgMjcwXSksXG4gICAgc2hha2U6IFByb3BUeXBlc19fZGVmYXVsdFtcImRlZmF1bHRcIl0uYm9vbCxcbiAgICBzaXplOiBQcm9wVHlwZXNfX2RlZmF1bHRbXCJkZWZhdWx0XCJdLm9uZU9mKFsnMnhzJywgJ3hzJywgJ3NtJywgJ2xnJywgJ3hsJywgJzJ4bCcsICcxeCcsICcyeCcsICczeCcsICc0eCcsICc1eCcsICc2eCcsICc3eCcsICc4eCcsICc5eCcsICcxMHgnXSksXG4gICAgc3BpbjogUHJvcFR5cGVzX19kZWZhdWx0W1wiZGVmYXVsdFwiXS5ib29sLFxuICAgIHNwaW5QdWxzZTogUHJvcFR5cGVzX19kZWZhdWx0W1wiZGVmYXVsdFwiXS5ib29sLFxuICAgIHNwaW5SZXZlcnNlOiBQcm9wVHlwZXNfX2RlZmF1bHRbXCJkZWZhdWx0XCJdLmJvb2wsXG4gICAgc3ltYm9sOiBQcm9wVHlwZXNfX2RlZmF1bHRbXCJkZWZhdWx0XCJdLm9uZU9mVHlwZShbUHJvcFR5cGVzX19kZWZhdWx0W1wiZGVmYXVsdFwiXS5ib29sLCBQcm9wVHlwZXNfX2RlZmF1bHRbXCJkZWZhdWx0XCJdLnN0cmluZ10pLFxuICAgIHRpdGxlOiBQcm9wVHlwZXNfX2RlZmF1bHRbXCJkZWZhdWx0XCJdLnN0cmluZyxcbiAgICB0aXRsZUlkOiBQcm9wVHlwZXNfX2RlZmF1bHRbXCJkZWZhdWx0XCJdLnN0cmluZyxcbiAgICB0cmFuc2Zvcm06IFByb3BUeXBlc19fZGVmYXVsdFtcImRlZmF1bHRcIl0ub25lT2ZUeXBlKFtQcm9wVHlwZXNfX2RlZmF1bHRbXCJkZWZhdWx0XCJdLnN0cmluZywgUHJvcFR5cGVzX19kZWZhdWx0W1wiZGVmYXVsdFwiXS5vYmplY3RdKSxcbiAgICBzd2FwT3BhY2l0eTogUHJvcFR5cGVzX19kZWZhdWx0W1wiZGVmYXVsdFwiXS5ib29sXG4gIH07XG4gIHZhciBjb252ZXJ0Q3VycnkgPSBjb252ZXJ0LmJpbmQobnVsbCwgUmVhY3RfX2RlZmF1bHRbXCJkZWZhdWx0XCJdLmNyZWF0ZUVsZW1lbnQpO1xuXG4gIGV4cG9ydHMuRm9udEF3ZXNvbWVJY29uID0gRm9udEF3ZXNvbWVJY29uO1xuXG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG5cbn0pKTtcbiIsICJcInVzZSBzdHJpY3RcIjtcclxudmFyIF9fZXh0ZW5kcyA9ICh0aGlzICYmIHRoaXMuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkge1xyXG4gICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikge1xyXG4gICAgICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcclxuICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxyXG4gICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYiwgcCkpIGRbcF0gPSBiW3BdOyB9O1xyXG4gICAgICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xyXG4gICAgfTtcclxuICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xyXG4gICAgICAgIGlmICh0eXBlb2YgYiAhPT0gXCJmdW5jdGlvblwiICYmIGIgIT09IG51bGwpXHJcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDbGFzcyBleHRlbmRzIHZhbHVlIFwiICsgU3RyaW5nKGIpICsgXCIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbFwiKTtcclxuICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xyXG4gICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxyXG4gICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcclxuICAgIH07XHJcbn0pKCk7XHJcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcclxuZXhwb3J0cy5FbXB0eUJUcmVlID0gZXhwb3J0cy5hc1NldCA9IGV4cG9ydHMuc2ltcGxlQ29tcGFyYXRvciA9IGV4cG9ydHMuZGVmYXVsdENvbXBhcmF0b3IgPSB2b2lkIDA7XHJcbi8qKlxyXG4gKiBDb21wYXJlcyBEZWZhdWx0Q29tcGFyYWJsZXMgdG8gZm9ybSBhIHN0cmljdCBwYXJ0aWFsIG9yZGVyaW5nLlxyXG4gKlxyXG4gKiBIYW5kbGVzICsvLTAgYW5kIE5hTiBsaWtlIE1hcDogTmFOIGlzIGVxdWFsIHRvIE5hTiwgYW5kIC0wIGlzIGVxdWFsIHRvICswLlxyXG4gKlxyXG4gKiBBcnJheXMgYXJlIGNvbXBhcmVkIHVzaW5nICc8JyBhbmQgJz4nLCB3aGljaCBtYXkgY2F1c2UgdW5leHBlY3RlZCBlcXVhbGl0eTpcclxuICogZm9yIGV4YW1wbGUgWzFdIHdpbGwgYmUgY29uc2lkZXJlZCBlcXVhbCB0byBbJzEnXS5cclxuICpcclxuICogVHdvIG9iamVjdHMgd2l0aCBlcXVhbCB2YWx1ZU9mIGNvbXBhcmUgdGhlIHNhbWUsIGJ1dCBjb21wYXJlIHVuZXF1YWwgdG9cclxuICogcHJpbWl0aXZlcyB0aGF0IGhhdmUgdGhlIHNhbWUgdmFsdWUuXHJcbiAqL1xyXG5mdW5jdGlvbiBkZWZhdWx0Q29tcGFyYXRvcihhLCBiKSB7XHJcbiAgICAvLyBTcGVjaWFsIGNhc2UgZmluaXRlIG51bWJlcnMgZmlyc3QgZm9yIHBlcmZvcm1hbmNlLlxyXG4gICAgLy8gTm90ZSB0aGF0IHRoZSB0cmljayBvZiB1c2luZyAnYSAtIGInIGFuZCBjaGVja2luZyBmb3IgTmFOIHRvIGRldGVjdCBub24tbnVtYmVyc1xyXG4gICAgLy8gZG9lcyBub3Qgd29yayBpZiB0aGUgc3RyaW5ncyBhcmUgbnVtZXJpYyAoZXg6IFwiNVwiKS4gVGhpcyB3b3VsZCBsZWFkaW5nIG1vc3QgXHJcbiAgICAvLyBjb21wYXJpc29uIGZ1bmN0aW9ucyB1c2luZyB0aGF0IGFwcHJvYWNoIHRvIGZhaWwgdG8gaGF2ZSB0cmFuc2l0aXZpdHkuXHJcbiAgICBpZiAoTnVtYmVyLmlzRmluaXRlKGEpICYmIE51bWJlci5pc0Zpbml0ZShiKSkge1xyXG4gICAgICAgIHJldHVybiBhIC0gYjtcclxuICAgIH1cclxuICAgIC8vIFRoZSBkZWZhdWx0IDwgYW5kID4gb3BlcmF0b3JzIGFyZSBub3QgdG90YWxseSBvcmRlcmVkLiBUbyBhbGxvdyB0eXBlcyB0byBiZSBtaXhlZFxyXG4gICAgLy8gaW4gYSBzaW5nbGUgY29sbGVjdGlvbiwgY29tcGFyZSB0eXBlcyBhbmQgb3JkZXIgdmFsdWVzIG9mIGRpZmZlcmVudCB0eXBlcyBieSB0eXBlLlxyXG4gICAgdmFyIHRhID0gdHlwZW9mIGE7XHJcbiAgICB2YXIgdGIgPSB0eXBlb2YgYjtcclxuICAgIGlmICh0YSAhPT0gdGIpIHtcclxuICAgICAgICByZXR1cm4gdGEgPCB0YiA/IC0xIDogMTtcclxuICAgIH1cclxuICAgIGlmICh0YSA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICAvLyBzdGFuZGFyZGl6ZWQgSmF2YVNjcmlwdCBidWc6IG51bGwgaXMgbm90IGFuIG9iamVjdCwgYnV0IHR5cGVvZiBzYXlzIGl0IGlzXHJcbiAgICAgICAgaWYgKGEgPT09IG51bGwpXHJcbiAgICAgICAgICAgIHJldHVybiBiID09PSBudWxsID8gMCA6IC0xO1xyXG4gICAgICAgIGVsc2UgaWYgKGIgPT09IG51bGwpXHJcbiAgICAgICAgICAgIHJldHVybiAxO1xyXG4gICAgICAgIGEgPSBhLnZhbHVlT2YoKTtcclxuICAgICAgICBiID0gYi52YWx1ZU9mKCk7XHJcbiAgICAgICAgdGEgPSB0eXBlb2YgYTtcclxuICAgICAgICB0YiA9IHR5cGVvZiBiO1xyXG4gICAgICAgIC8vIERlYWwgd2l0aCB0aGUgdHdvIHZhbHVlT2YoKXMgcHJvZHVjaW5nIGRpZmZlcmVudCB0eXBlc1xyXG4gICAgICAgIGlmICh0YSAhPT0gdGIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRhIDwgdGIgPyAtMSA6IDE7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gYSBhbmQgYiBhcmUgbm93IHRoZSBzYW1lIHR5cGUsIGFuZCB3aWxsIGJlIGEgbnVtYmVyLCBzdHJpbmcgb3IgYXJyYXkgXHJcbiAgICAvLyAod2hpY2ggd2UgYXNzdW1lIGhvbGRzIG51bWJlcnMgb3Igc3RyaW5ncyksIG9yIHNvbWV0aGluZyB1bnN1cHBvcnRlZC5cclxuICAgIGlmIChhIDwgYilcclxuICAgICAgICByZXR1cm4gLTE7XHJcbiAgICBpZiAoYSA+IGIpXHJcbiAgICAgICAgcmV0dXJuIDE7XHJcbiAgICBpZiAoYSA9PT0gYilcclxuICAgICAgICByZXR1cm4gMDtcclxuICAgIC8vIE9yZGVyIE5hTiBsZXNzIHRoYW4gb3RoZXIgbnVtYmVyc1xyXG4gICAgaWYgKE51bWJlci5pc05hTihhKSlcclxuICAgICAgICByZXR1cm4gTnVtYmVyLmlzTmFOKGIpID8gMCA6IC0xO1xyXG4gICAgZWxzZSBpZiAoTnVtYmVyLmlzTmFOKGIpKVxyXG4gICAgICAgIHJldHVybiAxO1xyXG4gICAgLy8gVGhpcyBjb3VsZCBiZSB0d28gb2JqZWN0cyAoZS5nLiBbN10gYW5kIFsnNyddKSB0aGF0IGFyZW4ndCBvcmRlcmVkXHJcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheShhKSA/IDAgOiBOdW1iZXIuTmFOO1xyXG59XHJcbmV4cG9ydHMuZGVmYXVsdENvbXBhcmF0b3IgPSBkZWZhdWx0Q29tcGFyYXRvcjtcclxuO1xyXG5mdW5jdGlvbiBzaW1wbGVDb21wYXJhdG9yKGEsIGIpIHtcclxuICAgIHJldHVybiBhID4gYiA/IDEgOiBhIDwgYiA/IC0xIDogMDtcclxufVxyXG5leHBvcnRzLnNpbXBsZUNvbXBhcmF0b3IgPSBzaW1wbGVDb21wYXJhdG9yO1xyXG47XHJcbi8qKlxyXG4gKiBBIHJlYXNvbmFibHkgZmFzdCBjb2xsZWN0aW9uIG9mIGtleS12YWx1ZSBwYWlycyB3aXRoIGEgcG93ZXJmdWwgQVBJLlxyXG4gKiBMYXJnZWx5IGNvbXBhdGlibGUgd2l0aCB0aGUgc3RhbmRhcmQgTWFwLiBCVHJlZSBpcyBhIEIrIHRyZWUgZGF0YSBzdHJ1Y3R1cmUsXHJcbiAqIHNvIHRoZSBjb2xsZWN0aW9uIGlzIHNvcnRlZCBieSBrZXkuXHJcbiAqXHJcbiAqIEIrIHRyZWVzIHRlbmQgdG8gdXNlIG1lbW9yeSBtb3JlIGVmZmljaWVudGx5IHRoYW4gaGFzaHRhYmxlcyBzdWNoIGFzIHRoZVxyXG4gKiBzdGFuZGFyZCBNYXAsIGVzcGVjaWFsbHkgd2hlbiB0aGUgY29sbGVjdGlvbiBjb250YWlucyBhIGxhcmdlIG51bWJlciBvZlxyXG4gKiBpdGVtcy4gSG93ZXZlciwgbWFpbnRhaW5pbmcgdGhlIHNvcnQgb3JkZXIgbWFrZXMgdGhlbSBtb2Rlc3RseSBzbG93ZXI6XHJcbiAqIE8obG9nIHNpemUpIHJhdGhlciB0aGFuIE8oMSkuIFRoaXMgQisgdHJlZSBpbXBsZW1lbnRhdGlvbiBzdXBwb3J0cyBPKDEpXHJcbiAqIGZhc3QgY2xvbmluZy4gSXQgYWxzbyBzdXBwb3J0cyBmcmVlemUoKSwgd2hpY2ggY2FuIGJlIHVzZWQgdG8gZW5zdXJlIHRoYXRcclxuICogYSBCVHJlZSBpcyBub3QgY2hhbmdlZCBhY2NpZGVudGFsbHkuXHJcbiAqXHJcbiAqIENvbmZ1c2luZ2x5LCB0aGUgRVM2IE1hcC5mb3JFYWNoKGMpIG1ldGhvZCBjYWxscyBjKHZhbHVlLGtleSkgaW5zdGVhZCBvZlxyXG4gKiBjKGtleSx2YWx1ZSksIGluIGNvbnRyYXN0IHRvIG90aGVyIG1ldGhvZHMgc3VjaCBhcyBzZXQoKSBhbmQgZW50cmllcygpXHJcbiAqIHdoaWNoIHB1dCB0aGUga2V5IGZpcnN0LiBJIGNhbiBvbmx5IGFzc3VtZSB0aGF0IHRoZSBvcmRlciB3YXMgcmV2ZXJzZWQgb25cclxuICogdGhlIHRoZW9yeSB0aGF0IHVzZXJzIHdvdWxkIHVzdWFsbHkgd2FudCB0byBleGFtaW5lIHZhbHVlcyBhbmQgaWdub3JlIGtleXMuXHJcbiAqIEJUcmVlJ3MgZm9yRWFjaCgpIHRoZXJlZm9yZSB3b3JrcyB0aGUgc2FtZSB3YXksIGJ1dCBhIHNlY29uZCBtZXRob2RcclxuICogYC5mb3JFYWNoUGFpcigoa2V5LHZhbHVlKT0+ey4uLn0pYCBpcyBwcm92aWRlZCB3aGljaCBzZW5kcyB5b3UgdGhlIGtleVxyXG4gKiBmaXJzdCBhbmQgdGhlIHZhbHVlIHNlY29uZDsgdGhpcyBtZXRob2QgaXMgc2xpZ2h0bHkgZmFzdGVyIGJlY2F1c2UgaXQgaXNcclxuICogdGhlIFwibmF0aXZlXCIgZm9yLWVhY2ggbWV0aG9kIGZvciB0aGlzIGNsYXNzLlxyXG4gKlxyXG4gKiBPdXQgb2YgdGhlIGJveCwgQlRyZWUgc3VwcG9ydHMga2V5cyB0aGF0IGFyZSBudW1iZXJzLCBzdHJpbmdzLCBhcnJheXMgb2ZcclxuICogbnVtYmVycy9zdHJpbmdzLCBEYXRlLCBhbmQgb2JqZWN0cyB0aGF0IGhhdmUgYSB2YWx1ZU9mKCkgbWV0aG9kIHJldHVybmluZyBhXHJcbiAqIG51bWJlciBvciBzdHJpbmcuIE90aGVyIGRhdGEgdHlwZXMsIHN1Y2ggYXMgYXJyYXlzIG9mIERhdGUgb3IgY3VzdG9tXHJcbiAqIG9iamVjdHMsIHJlcXVpcmUgYSBjdXN0b20gY29tcGFyYXRvciwgd2hpY2ggeW91IG11c3QgcGFzcyBhcyB0aGUgc2Vjb25kXHJcbiAqIGFyZ3VtZW50IHRvIHRoZSBjb25zdHJ1Y3RvciAodGhlIGZpcnN0IGFyZ3VtZW50IGlzIGFuIG9wdGlvbmFsIGxpc3Qgb2ZcclxuICogaW5pdGlhbCBpdGVtcykuIFN5bWJvbHMgY2Fubm90IGJlIHVzZWQgYXMga2V5cyBiZWNhdXNlIHRoZXkgYXJlIHVub3JkZXJlZFxyXG4gKiAob25lIFN5bWJvbCBpcyBuZXZlciBcImdyZWF0ZXJcIiBvciBcImxlc3NcIiB0aGFuIGFub3RoZXIpLlxyXG4gKlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBHaXZlbiBhIHtuYW1lOiBzdHJpbmcsIGFnZTogbnVtYmVyfSBvYmplY3QsIHlvdSBjYW4gY3JlYXRlIGEgdHJlZSBzb3J0ZWQgYnlcclxuICogbmFtZSBhbmQgdGhlbiBieSBhZ2UgbGlrZSB0aGlzOlxyXG4gKlxyXG4gKiAgICAgdmFyIHRyZWUgPSBuZXcgQlRyZWUodW5kZWZpbmVkLCAoYSwgYikgPT4ge1xyXG4gKiAgICAgICBpZiAoYS5uYW1lID4gYi5uYW1lKVxyXG4gKiAgICAgICAgIHJldHVybiAxOyAvLyBSZXR1cm4gYSBudW1iZXIgPjAgd2hlbiBhID4gYlxyXG4gKiAgICAgICBlbHNlIGlmIChhLm5hbWUgPCBiLm5hbWUpXHJcbiAqICAgICAgICAgcmV0dXJuIC0xOyAvLyBSZXR1cm4gYSBudW1iZXIgPDAgd2hlbiBhIDwgYlxyXG4gKiAgICAgICBlbHNlIC8vIG5hbWVzIGFyZSBlcXVhbCAob3IgaW5jb21wYXJhYmxlKVxyXG4gKiAgICAgICAgIHJldHVybiBhLmFnZSAtIGIuYWdlOyAvLyBSZXR1cm4gPjAgd2hlbiBhLmFnZSA+IGIuYWdlXHJcbiAqICAgICB9KTtcclxuICpcclxuICogICAgIHRyZWUuc2V0KHtuYW1lOlwiQmlsbFwiLCBhZ2U6MTd9LCBcImhhcHB5XCIpO1xyXG4gKiAgICAgdHJlZS5zZXQoe25hbWU6XCJGcmFuXCIsIGFnZTo0MH0sIFwiYnVzeSAmIHN0cmVzc2VkXCIpO1xyXG4gKiAgICAgdHJlZS5zZXQoe25hbWU6XCJCaWxsXCIsIGFnZTo1NX0sIFwicmVjZW50bHkgbGFpZCBvZmZcIik7XHJcbiAqICAgICB0cmVlLmZvckVhY2hQYWlyKChrLCB2KSA9PiB7XHJcbiAqICAgICAgIGNvbnNvbGUubG9nKGBOYW1lOiAke2submFtZX0gQWdlOiAke2suYWdlfSBTdGF0dXM6ICR7dn1gKTtcclxuICogICAgIH0pO1xyXG4gKlxyXG4gKiBAZGVzY3JpcHRpb25cclxuICogVGhlIFwicmFuZ2VcIiBtZXRob2RzIChgZm9yRWFjaCwgZm9yUmFuZ2UsIGVkaXRSYW5nZWApIHdpbGwgcmV0dXJuIHRoZSBudW1iZXJcclxuICogb2YgZWxlbWVudHMgdGhhdCB3ZXJlIHNjYW5uZWQuIEluIGFkZGl0aW9uLCB0aGUgY2FsbGJhY2sgY2FuIHJldHVybiB7YnJlYWs6Un1cclxuICogdG8gc3RvcCBlYXJseSBhbmQgcmV0dXJuIFIgZnJvbSB0aGUgb3V0ZXIgZnVuY3Rpb24uXHJcbiAqXHJcbiAqIC0gVE9ETzogVGVzdCBwZXJmb3JtYW5jZSBvZiBwcmVhbGxvY2F0aW5nIHZhbHVlcyBhcnJheSBhdCBtYXggc2l6ZVxyXG4gKiAtIFRPRE86IEFkZCBmYXN0IGluaXRpYWxpemF0aW9uIHdoZW4gYSBzb3J0ZWQgYXJyYXkgaXMgcHJvdmlkZWQgdG8gY29uc3RydWN0b3JcclxuICpcclxuICogRm9yIG1vcmUgZG9jdW1lbnRhdGlvbiBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3F3ZXJ0aWUvYnRyZWUtdHlwZXNjcmlwdFxyXG4gKlxyXG4gKiBBcmUgeW91IGEgQyMgZGV2ZWxvcGVyPyBZb3UgbWlnaHQgbGlrZSB0aGUgc2ltaWxhciBkYXRhIHN0cnVjdHVyZXMgSSBtYWRlIGZvciBDIzpcclxuICogQkRpY3Rpb25hcnksIEJMaXN0LCBldGMuIFNlZSBodHRwOi8vY29yZS5sb3ljLm5ldC9jb2xsZWN0aW9ucy9cclxuICpcclxuICogQGF1dGhvciBEYXZpZCBQaWVwZ3Jhc3NcclxuICovXHJcbnZhciBCVHJlZSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcclxuICAgIC8qKlxyXG4gICAgICogSW5pdGlhbGl6ZXMgYW4gZW1wdHkgQisgdHJlZS5cclxuICAgICAqIEBwYXJhbSBjb21wYXJlIEN1c3RvbSBmdW5jdGlvbiB0byBjb21wYXJlIHBhaXJzIG9mIGVsZW1lbnRzIGluIHRoZSB0cmVlLlxyXG4gICAgICogICBJZiBub3Qgc3BlY2lmaWVkLCBkZWZhdWx0Q29tcGFyYXRvciB3aWxsIGJlIHVzZWQgd2hpY2ggaXMgdmFsaWQgYXMgbG9uZyBhcyBLIGV4dGVuZHMgRGVmYXVsdENvbXBhcmFibGUuXHJcbiAgICAgKiBAcGFyYW0gZW50cmllcyBBIHNldCBvZiBrZXktdmFsdWUgcGFpcnMgdG8gaW5pdGlhbGl6ZSB0aGUgdHJlZVxyXG4gICAgICogQHBhcmFtIG1heE5vZGVTaXplIEJyYW5jaGluZyBmYWN0b3IgKG1heGltdW0gaXRlbXMgb3IgY2hpbGRyZW4gcGVyIG5vZGUpXHJcbiAgICAgKiAgIE11c3QgYmUgaW4gcmFuZ2UgNC4uMjU2LiBJZiB1bmRlZmluZWQgb3IgPDQgdGhlbiBkZWZhdWx0IGlzIHVzZWQ7IGlmID4yNTYgdGhlbiAyNTYuXHJcbiAgICAgKi9cclxuICAgIGZ1bmN0aW9uIEJUcmVlKGVudHJpZXMsIGNvbXBhcmUsIG1heE5vZGVTaXplKSB7XHJcbiAgICAgICAgdGhpcy5fcm9vdCA9IEVtcHR5TGVhZjtcclxuICAgICAgICB0aGlzLl9zaXplID0gMDtcclxuICAgICAgICB0aGlzLl9tYXhOb2RlU2l6ZSA9IG1heE5vZGVTaXplID49IDQgPyBNYXRoLm1pbihtYXhOb2RlU2l6ZSwgMjU2KSA6IDMyO1xyXG4gICAgICAgIHRoaXMuX2NvbXBhcmUgPSBjb21wYXJlIHx8IGRlZmF1bHRDb21wYXJhdG9yO1xyXG4gICAgICAgIGlmIChlbnRyaWVzKVxyXG4gICAgICAgICAgICB0aGlzLnNldFBhaXJzKGVudHJpZXMpO1xyXG4gICAgfVxyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEJUcmVlLnByb3RvdHlwZSwgXCJzaXplXCIsIHtcclxuICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG4gICAgICAgIC8vIEVTNiBNYXA8SyxWPiBtZXRob2RzIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbiAgICAgICAgLyoqIEdldHMgdGhlIG51bWJlciBvZiBrZXktdmFsdWUgcGFpcnMgaW4gdGhlIHRyZWUuICovXHJcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLl9zaXplOyB9LFxyXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxyXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxyXG4gICAgfSk7XHJcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoQlRyZWUucHJvdG90eXBlLCBcImxlbmd0aFwiLCB7XHJcbiAgICAgICAgLyoqIEdldHMgdGhlIG51bWJlciBvZiBrZXktdmFsdWUgcGFpcnMgaW4gdGhlIHRyZWUuICovXHJcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLl9zaXplOyB9LFxyXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxyXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxyXG4gICAgfSk7XHJcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoQlRyZWUucHJvdG90eXBlLCBcImlzRW1wdHlcIiwge1xyXG4gICAgICAgIC8qKiBSZXR1cm5zIHRydWUgaWZmIHRoZSB0cmVlIGNvbnRhaW5zIG5vIGtleS12YWx1ZSBwYWlycy4gKi9cclxuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuX3NpemUgPT09IDA7IH0sXHJcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXHJcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXHJcbiAgICB9KTtcclxuICAgIC8qKiBSZWxlYXNlcyB0aGUgdHJlZSBzbyB0aGF0IGl0cyBzaXplIGlzIDAuICovXHJcbiAgICBCVHJlZS5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdGhpcy5fcm9vdCA9IEVtcHR5TGVhZjtcclxuICAgICAgICB0aGlzLl9zaXplID0gMDtcclxuICAgIH07XHJcbiAgICAvKiogUnVucyBhIGZ1bmN0aW9uIGZvciBlYWNoIGtleS12YWx1ZSBwYWlyLCBpbiBvcmRlciBmcm9tIHNtYWxsZXN0IHRvXHJcbiAgICAgKiAgbGFyZ2VzdCBrZXkuIEZvciBjb21wYXRpYmlsaXR5IHdpdGggRVM2IE1hcCwgdGhlIGFyZ3VtZW50IG9yZGVyIHRvXHJcbiAgICAgKiAgdGhlIGNhbGxiYWNrIGlzIGJhY2t3YXJkczogdmFsdWUgZmlyc3QsIHRoZW4ga2V5LiBDYWxsIGZvckVhY2hQYWlyXHJcbiAgICAgKiAgaW5zdGVhZCB0byByZWNlaXZlIHRoZSBrZXkgYXMgdGhlIGZpcnN0IGFyZ3VtZW50LlxyXG4gICAgICogQHBhcmFtIHRoaXNBcmcgSWYgcHJvdmlkZWQsIHRoaXMgcGFyYW1ldGVyIGlzIGFzc2lnbmVkIGFzIHRoZSBgdGhpc2BcclxuICAgICAqICAgICAgICB2YWx1ZSBmb3IgZWFjaCBjYWxsYmFjay5cclxuICAgICAqIEByZXR1cm5zIHRoZSBudW1iZXIgb2YgdmFsdWVzIHRoYXQgd2VyZSBzZW50IHRvIHRoZSBjYWxsYmFjayxcclxuICAgICAqICAgICAgICBvciB0aGUgUiB2YWx1ZSBpZiB0aGUgY2FsbGJhY2sgcmV0dXJuZWQge2JyZWFrOlJ9LiAqL1xyXG4gICAgQlRyZWUucHJvdG90eXBlLmZvckVhY2ggPSBmdW5jdGlvbiAoY2FsbGJhY2ssIHRoaXNBcmcpIHtcclxuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xyXG4gICAgICAgIGlmICh0aGlzQXJnICE9PSB1bmRlZmluZWQpXHJcbiAgICAgICAgICAgIGNhbGxiYWNrID0gY2FsbGJhY2suYmluZCh0aGlzQXJnKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5mb3JFYWNoUGFpcihmdW5jdGlvbiAoaywgdikgeyByZXR1cm4gY2FsbGJhY2sodiwgaywgX3RoaXMpOyB9KTtcclxuICAgIH07XHJcbiAgICAvKiogUnVucyBhIGZ1bmN0aW9uIGZvciBlYWNoIGtleS12YWx1ZSBwYWlyLCBpbiBvcmRlciBmcm9tIHNtYWxsZXN0IHRvXHJcbiAgICAgKiAgbGFyZ2VzdCBrZXkuIFRoZSBjYWxsYmFjayBjYW4gcmV0dXJuIHticmVhazpSfSAod2hlcmUgUiBpcyBhbnkgdmFsdWVcclxuICAgICAqICBleGNlcHQgdW5kZWZpbmVkKSB0byBzdG9wIGltbWVkaWF0ZWx5IGFuZCByZXR1cm4gUiBmcm9tIGZvckVhY2hQYWlyLlxyXG4gICAgICogQHBhcmFtIG9uRm91bmQgQSBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCBmb3IgZWFjaCBrZXktdmFsdWUgcGFpci4gVGhpc1xyXG4gICAgICogICAgICAgIGZ1bmN0aW9uIGNhbiByZXR1cm4ge2JyZWFrOlJ9IHRvIHN0b3AgZWFybHkgd2l0aCByZXN1bHQgUi5cclxuICAgICAqICAgICAgICBUaGUgcmVhc29uIHRoYXQgeW91IG11c3QgcmV0dXJuIHticmVhazpSfSBpbnN0ZWFkIG9mIHNpbXBseSBSXHJcbiAgICAgKiAgICAgICAgaXRzZWxmIGlzIGZvciBjb25zaXN0ZW5jeSB3aXRoIGVkaXRSYW5nZSgpLCB3aGljaCBhbGxvd3NcclxuICAgICAqICAgICAgICBtdWx0aXBsZSBhY3Rpb25zLCBub3QganVzdCBicmVha2luZy5cclxuICAgICAqIEBwYXJhbSBpbml0aWFsQ291bnRlciBUaGlzIGlzIHRoZSB2YWx1ZSBvZiB0aGUgdGhpcmQgYXJndW1lbnQgb2ZcclxuICAgICAqICAgICAgICBgb25Gb3VuZGAgdGhlIGZpcnN0IHRpbWUgaXQgaXMgY2FsbGVkLiBUaGUgY291bnRlciBpbmNyZWFzZXNcclxuICAgICAqICAgICAgICBieSBvbmUgZWFjaCB0aW1lIGBvbkZvdW5kYCBpcyBjYWxsZWQuIERlZmF1bHQgdmFsdWU6IDBcclxuICAgICAqIEByZXR1cm5zIHRoZSBudW1iZXIgb2YgcGFpcnMgc2VudCB0byB0aGUgY2FsbGJhY2sgKHBsdXMgaW5pdGlhbENvdW50ZXIsXHJcbiAgICAgKiAgICAgICAgaWYgeW91IHByb3ZpZGVkIG9uZSkuIElmIHRoZSBjYWxsYmFjayByZXR1cm5lZCB7YnJlYWs6Un0gdGhlblxyXG4gICAgICogICAgICAgIHRoZSBSIHZhbHVlIGlzIHJldHVybmVkIGluc3RlYWQuICovXHJcbiAgICBCVHJlZS5wcm90b3R5cGUuZm9yRWFjaFBhaXIgPSBmdW5jdGlvbiAoY2FsbGJhY2ssIGluaXRpYWxDb3VudGVyKSB7XHJcbiAgICAgICAgdmFyIGxvdyA9IHRoaXMubWluS2V5KCksIGhpZ2ggPSB0aGlzLm1heEtleSgpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmZvclJhbmdlKGxvdywgaGlnaCwgdHJ1ZSwgY2FsbGJhY2ssIGluaXRpYWxDb3VudGVyKTtcclxuICAgIH07XHJcbiAgICAvKipcclxuICAgICAqIEZpbmRzIGEgcGFpciBpbiB0aGUgdHJlZSBhbmQgcmV0dXJucyB0aGUgYXNzb2NpYXRlZCB2YWx1ZS5cclxuICAgICAqIEBwYXJhbSBkZWZhdWx0VmFsdWUgYSB2YWx1ZSB0byByZXR1cm4gaWYgdGhlIGtleSB3YXMgbm90IGZvdW5kLlxyXG4gICAgICogQHJldHVybnMgdGhlIHZhbHVlLCBvciBkZWZhdWx0VmFsdWUgaWYgdGhlIGtleSB3YXMgbm90IGZvdW5kLlxyXG4gICAgICogQGRlc2NyaXB0aW9uIENvbXB1dGF0aW9uYWwgY29tcGxleGl0eTogTyhsb2cgc2l6ZSlcclxuICAgICAqL1xyXG4gICAgQlRyZWUucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIChrZXksIGRlZmF1bHRWYWx1ZSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9yb290LmdldChrZXksIGRlZmF1bHRWYWx1ZSwgdGhpcyk7XHJcbiAgICB9O1xyXG4gICAgLyoqXHJcbiAgICAgKiBBZGRzIG9yIG92ZXJ3cml0ZXMgYSBrZXktdmFsdWUgcGFpciBpbiB0aGUgQisgdHJlZS5cclxuICAgICAqIEBwYXJhbSBrZXkgdGhlIGtleSBpcyB1c2VkIHRvIGRldGVybWluZSB0aGUgc29ydCBvcmRlciBvZlxyXG4gICAgICogICAgICAgIGRhdGEgaW4gdGhlIHRyZWUuXHJcbiAgICAgKiBAcGFyYW0gdmFsdWUgZGF0YSB0byBhc3NvY2lhdGUgd2l0aCB0aGUga2V5IChvcHRpb25hbClcclxuICAgICAqIEBwYXJhbSBvdmVyd3JpdGUgV2hldGhlciB0byBvdmVyd3JpdGUgYW4gZXhpc3Rpbmcga2V5LXZhbHVlIHBhaXJcclxuICAgICAqICAgICAgICAoZGVmYXVsdDogdHJ1ZSkuIElmIHRoaXMgaXMgZmFsc2UgYW5kIHRoZXJlIGlzIGFuIGV4aXN0aW5nXHJcbiAgICAgKiAgICAgICAga2V5LXZhbHVlIHBhaXIgdGhlbiB0aGlzIG1ldGhvZCBoYXMgbm8gZWZmZWN0LlxyXG4gICAgICogQHJldHVybnMgdHJ1ZSBpZiBhIG5ldyBrZXktdmFsdWUgcGFpciB3YXMgYWRkZWQuXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gQ29tcHV0YXRpb25hbCBjb21wbGV4aXR5OiBPKGxvZyBzaXplKVxyXG4gICAgICogTm90ZTogd2hlbiBvdmVyd3JpdGluZyBhIHByZXZpb3VzIGVudHJ5LCB0aGUga2V5IGlzIHVwZGF0ZWRcclxuICAgICAqIGFzIHdlbGwgYXMgdGhlIHZhbHVlLiBUaGlzIGhhcyBubyBlZmZlY3QgdW5sZXNzIHRoZSBuZXcga2V5XHJcbiAgICAgKiBoYXMgZGF0YSB0aGF0IGRvZXMgbm90IGFmZmVjdCBpdHMgc29ydCBvcmRlci5cclxuICAgICAqL1xyXG4gICAgQlRyZWUucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uIChrZXksIHZhbHVlLCBvdmVyd3JpdGUpIHtcclxuICAgICAgICBpZiAodGhpcy5fcm9vdC5pc1NoYXJlZClcclxuICAgICAgICAgICAgdGhpcy5fcm9vdCA9IHRoaXMuX3Jvb3QuY2xvbmUoKTtcclxuICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5fcm9vdC5zZXQoa2V5LCB2YWx1ZSwgb3ZlcndyaXRlLCB0aGlzKTtcclxuICAgICAgICBpZiAocmVzdWx0ID09PSB0cnVlIHx8IHJlc3VsdCA9PT0gZmFsc2UpXHJcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgLy8gUm9vdCBub2RlIGhhcyBzcGxpdCwgc28gY3JlYXRlIGEgbmV3IHJvb3Qgbm9kZS5cclxuICAgICAgICB0aGlzLl9yb290ID0gbmV3IEJOb2RlSW50ZXJuYWwoW3RoaXMuX3Jvb3QsIHJlc3VsdF0pO1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfTtcclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJucyB0cnVlIGlmIHRoZSBrZXkgZXhpc3RzIGluIHRoZSBCKyB0cmVlLCBmYWxzZSBpZiBub3QuXHJcbiAgICAgKiBVc2UgZ2V0KCkgZm9yIGJlc3QgcGVyZm9ybWFuY2U7IHVzZSBoYXMoKSBpZiB5b3UgbmVlZCB0b1xyXG4gICAgICogZGlzdGluZ3Vpc2ggYmV0d2VlbiBcInVuZGVmaW5lZCB2YWx1ZVwiIGFuZCBcImtleSBub3QgcHJlc2VudFwiLlxyXG4gICAgICogQHBhcmFtIGtleSBLZXkgdG8gZGV0ZWN0XHJcbiAgICAgKiBAZGVzY3JpcHRpb24gQ29tcHV0YXRpb25hbCBjb21wbGV4aXR5OiBPKGxvZyBzaXplKVxyXG4gICAgICovXHJcbiAgICBCVHJlZS5wcm90b3R5cGUuaGFzID0gZnVuY3Rpb24gKGtleSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmZvclJhbmdlKGtleSwga2V5LCB0cnVlLCB1bmRlZmluZWQpICE9PSAwO1xyXG4gICAgfTtcclxuICAgIC8qKlxyXG4gICAgICogUmVtb3ZlcyBhIHNpbmdsZSBrZXktdmFsdWUgcGFpciBmcm9tIHRoZSBCKyB0cmVlLlxyXG4gICAgICogQHBhcmFtIGtleSBLZXkgdG8gZmluZFxyXG4gICAgICogQHJldHVybnMgdHJ1ZSBpZiBhIHBhaXIgd2FzIGZvdW5kIGFuZCByZW1vdmVkLCBmYWxzZSBvdGhlcndpc2UuXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gQ29tcHV0YXRpb25hbCBjb21wbGV4aXR5OiBPKGxvZyBzaXplKVxyXG4gICAgICovXHJcbiAgICBCVHJlZS5wcm90b3R5cGUuZGVsZXRlID0gZnVuY3Rpb24gKGtleSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmVkaXRSYW5nZShrZXksIGtleSwgdHJ1ZSwgRGVsZXRlUmFuZ2UpICE9PSAwO1xyXG4gICAgfTtcclxuICAgIEJUcmVlLnByb3RvdHlwZS53aXRoID0gZnVuY3Rpb24gKGtleSwgdmFsdWUsIG92ZXJ3cml0ZSkge1xyXG4gICAgICAgIHZhciBudSA9IHRoaXMuY2xvbmUoKTtcclxuICAgICAgICByZXR1cm4gbnUuc2V0KGtleSwgdmFsdWUsIG92ZXJ3cml0ZSkgfHwgb3ZlcndyaXRlID8gbnUgOiB0aGlzO1xyXG4gICAgfTtcclxuICAgIC8qKiBSZXR1cm5zIGEgY29weSBvZiB0aGUgdHJlZSB3aXRoIHRoZSBzcGVjaWZpZWQga2V5LXZhbHVlIHBhaXJzIHNldC4gKi9cclxuICAgIEJUcmVlLnByb3RvdHlwZS53aXRoUGFpcnMgPSBmdW5jdGlvbiAocGFpcnMsIG92ZXJ3cml0ZSkge1xyXG4gICAgICAgIHZhciBudSA9IHRoaXMuY2xvbmUoKTtcclxuICAgICAgICByZXR1cm4gbnUuc2V0UGFpcnMocGFpcnMsIG92ZXJ3cml0ZSkgIT09IDAgfHwgb3ZlcndyaXRlID8gbnUgOiB0aGlzO1xyXG4gICAgfTtcclxuICAgIC8qKiBSZXR1cm5zIGEgY29weSBvZiB0aGUgdHJlZSB3aXRoIHRoZSBzcGVjaWZpZWQga2V5cyBwcmVzZW50LlxyXG4gICAgICogIEBwYXJhbSBrZXlzIFRoZSBrZXlzIHRvIGFkZC4gSWYgYSBrZXkgaXMgYWxyZWFkeSBwcmVzZW50IGluIHRoZSB0cmVlLFxyXG4gICAgICogICAgICAgICBuZWl0aGVyIHRoZSBleGlzdGluZyBrZXkgbm9yIHRoZSBleGlzdGluZyB2YWx1ZSBpcyBtb2RpZmllZC5cclxuICAgICAqICBAcGFyYW0gcmV0dXJuVGhpc0lmVW5jaGFuZ2VkIGlmIHRydWUsIHJldHVybnMgdGhpcyBpZiBhbGwga2V5cyBhbHJlYWR5XHJcbiAgICAgKiAgZXhpc3RlZC4gUGVyZm9ybWFuY2Ugbm90ZTogZHVlIHRvIHRoZSBhcmNoaXRlY3R1cmUgb2YgdGhpcyBjbGFzcywgYWxsXHJcbiAgICAgKiAgbm9kZShzKSBsZWFkaW5nIHRvIGV4aXN0aW5nIGtleXMgYXJlIGNsb25lZCBldmVuIGlmIHRoZSBjb2xsZWN0aW9uIGlzXHJcbiAgICAgKiAgdWx0aW1hdGVseSB1bmNoYW5nZWQuXHJcbiAgICAqL1xyXG4gICAgQlRyZWUucHJvdG90eXBlLndpdGhLZXlzID0gZnVuY3Rpb24gKGtleXMsIHJldHVyblRoaXNJZlVuY2hhbmdlZCkge1xyXG4gICAgICAgIHZhciBudSA9IHRoaXMuY2xvbmUoKSwgY2hhbmdlZCA9IGZhbHNlO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKylcclxuICAgICAgICAgICAgY2hhbmdlZCA9IG51LnNldChrZXlzW2ldLCB1bmRlZmluZWQsIGZhbHNlKSB8fCBjaGFuZ2VkO1xyXG4gICAgICAgIHJldHVybiByZXR1cm5UaGlzSWZVbmNoYW5nZWQgJiYgIWNoYW5nZWQgPyB0aGlzIDogbnU7XHJcbiAgICB9O1xyXG4gICAgLyoqIFJldHVybnMgYSBjb3B5IG9mIHRoZSB0cmVlIHdpdGggdGhlIHNwZWNpZmllZCBrZXkgcmVtb3ZlZC5cclxuICAgICAqIEBwYXJhbSByZXR1cm5UaGlzSWZVbmNoYW5nZWQgaWYgdHJ1ZSwgcmV0dXJucyB0aGlzIGlmIHRoZSBrZXkgZGlkbid0IGV4aXN0LlxyXG4gICAgICogIFBlcmZvcm1hbmNlIG5vdGU6IGR1ZSB0byB0aGUgYXJjaGl0ZWN0dXJlIG9mIHRoaXMgY2xhc3MsIG5vZGUocykgbGVhZGluZ1xyXG4gICAgICogIHRvIHdoZXJlIHRoZSBrZXkgd291bGQgaGF2ZSBiZWVuIHN0b3JlZCBhcmUgY2xvbmVkIGV2ZW4gd2hlbiB0aGUga2V5XHJcbiAgICAgKiAgdHVybnMgb3V0IG5vdCB0byBleGlzdCBhbmQgdGhlIGNvbGxlY3Rpb24gaXMgdW5jaGFuZ2VkLlxyXG4gICAgICovXHJcbiAgICBCVHJlZS5wcm90b3R5cGUud2l0aG91dCA9IGZ1bmN0aW9uIChrZXksIHJldHVyblRoaXNJZlVuY2hhbmdlZCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLndpdGhvdXRSYW5nZShrZXksIGtleSwgdHJ1ZSwgcmV0dXJuVGhpc0lmVW5jaGFuZ2VkKTtcclxuICAgIH07XHJcbiAgICAvKiogUmV0dXJucyBhIGNvcHkgb2YgdGhlIHRyZWUgd2l0aCB0aGUgc3BlY2lmaWVkIGtleXMgcmVtb3ZlZC5cclxuICAgICAqIEBwYXJhbSByZXR1cm5UaGlzSWZVbmNoYW5nZWQgaWYgdHJ1ZSwgcmV0dXJucyB0aGlzIGlmIG5vbmUgb2YgdGhlIGtleXNcclxuICAgICAqICBleGlzdGVkLiBQZXJmb3JtYW5jZSBub3RlOiBkdWUgdG8gdGhlIGFyY2hpdGVjdHVyZSBvZiB0aGlzIGNsYXNzLFxyXG4gICAgICogIG5vZGUocykgbGVhZGluZyB0byB3aGVyZSB0aGUga2V5IHdvdWxkIGhhdmUgYmVlbiBzdG9yZWQgYXJlIGNsb25lZFxyXG4gICAgICogIGV2ZW4gd2hlbiB0aGUga2V5IHR1cm5zIG91dCBub3QgdG8gZXhpc3QuXHJcbiAgICAgKi9cclxuICAgIEJUcmVlLnByb3RvdHlwZS53aXRob3V0S2V5cyA9IGZ1bmN0aW9uIChrZXlzLCByZXR1cm5UaGlzSWZVbmNoYW5nZWQpIHtcclxuICAgICAgICB2YXIgbnUgPSB0aGlzLmNsb25lKCk7XHJcbiAgICAgICAgcmV0dXJuIG51LmRlbGV0ZUtleXMoa2V5cykgfHwgIXJldHVyblRoaXNJZlVuY2hhbmdlZCA/IG51IDogdGhpcztcclxuICAgIH07XHJcbiAgICAvKiogUmV0dXJucyBhIGNvcHkgb2YgdGhlIHRyZWUgd2l0aCB0aGUgc3BlY2lmaWVkIHJhbmdlIG9mIGtleXMgcmVtb3ZlZC4gKi9cclxuICAgIEJUcmVlLnByb3RvdHlwZS53aXRob3V0UmFuZ2UgPSBmdW5jdGlvbiAobG93LCBoaWdoLCBpbmNsdWRlSGlnaCwgcmV0dXJuVGhpc0lmVW5jaGFuZ2VkKSB7XHJcbiAgICAgICAgdmFyIG51ID0gdGhpcy5jbG9uZSgpO1xyXG4gICAgICAgIGlmIChudS5kZWxldGVSYW5nZShsb3csIGhpZ2gsIGluY2x1ZGVIaWdoKSA9PT0gMCAmJiByZXR1cm5UaGlzSWZVbmNoYW5nZWQpXHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgICAgIHJldHVybiBudTtcclxuICAgIH07XHJcbiAgICAvKiogUmV0dXJucyBhIGNvcHkgb2YgdGhlIHRyZWUgd2l0aCBwYWlycyByZW1vdmVkIHdoZW5ldmVyIHRoZSBjYWxsYmFja1xyXG4gICAgICogIGZ1bmN0aW9uIHJldHVybnMgZmFsc2UuIGB3aGVyZSgpYCBpcyBhIHN5bm9ueW0gZm9yIHRoaXMgbWV0aG9kLiAqL1xyXG4gICAgQlRyZWUucHJvdG90eXBlLmZpbHRlciA9IGZ1bmN0aW9uIChjYWxsYmFjaywgcmV0dXJuVGhpc0lmVW5jaGFuZ2VkKSB7XHJcbiAgICAgICAgdmFyIG51ID0gdGhpcy5ncmVlZHlDbG9uZSgpO1xyXG4gICAgICAgIHZhciBkZWw7XHJcbiAgICAgICAgbnUuZWRpdEFsbChmdW5jdGlvbiAoaywgdiwgaSkge1xyXG4gICAgICAgICAgICBpZiAoIWNhbGxiYWNrKGssIHYsIGkpKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRlbCA9IERlbGV0ZTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAoIWRlbCAmJiByZXR1cm5UaGlzSWZVbmNoYW5nZWQpXHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgICAgIHJldHVybiBudTtcclxuICAgIH07XHJcbiAgICAvKiogUmV0dXJucyBhIGNvcHkgb2YgdGhlIHRyZWUgd2l0aCBhbGwgdmFsdWVzIGFsdGVyZWQgYnkgYSBjYWxsYmFjayBmdW5jdGlvbi4gKi9cclxuICAgIEJUcmVlLnByb3RvdHlwZS5tYXBWYWx1ZXMgPSBmdW5jdGlvbiAoY2FsbGJhY2spIHtcclxuICAgICAgICB2YXIgdG1wID0ge307XHJcbiAgICAgICAgdmFyIG51ID0gdGhpcy5ncmVlZHlDbG9uZSgpO1xyXG4gICAgICAgIG51LmVkaXRBbGwoZnVuY3Rpb24gKGssIHYsIGkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRtcC52YWx1ZSA9IGNhbGxiYWNrKHYsIGssIGkpLCB0bXA7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIG51O1xyXG4gICAgfTtcclxuICAgIEJUcmVlLnByb3RvdHlwZS5yZWR1Y2UgPSBmdW5jdGlvbiAoY2FsbGJhY2ssIGluaXRpYWxWYWx1ZSkge1xyXG4gICAgICAgIHZhciBpID0gMCwgcCA9IGluaXRpYWxWYWx1ZTtcclxuICAgICAgICB2YXIgaXQgPSB0aGlzLmVudHJpZXModGhpcy5taW5LZXkoKSwgUmV1c2VkQXJyYXkpLCBuZXh0O1xyXG4gICAgICAgIHdoaWxlICghKG5leHQgPSBpdC5uZXh0KCkpLmRvbmUpXHJcbiAgICAgICAgICAgIHAgPSBjYWxsYmFjayhwLCBuZXh0LnZhbHVlLCBpKyssIHRoaXMpO1xyXG4gICAgICAgIHJldHVybiBwO1xyXG4gICAgfTtcclxuICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbiAgICAvLyBJdGVyYXRvciBtZXRob2RzIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG4gICAgLyoqIFJldHVybnMgYW4gaXRlcmF0b3IgdGhhdCBwcm92aWRlcyBpdGVtcyBpbiBvcmRlciAoYXNjZW5kaW5nIG9yZGVyIGlmXHJcbiAgICAgKiAgdGhlIGNvbGxlY3Rpb24ncyBjb21wYXJhdG9yIHVzZXMgYXNjZW5kaW5nIG9yZGVyLCBhcyBpcyB0aGUgZGVmYXVsdC4pXHJcbiAgICAgKiAgQHBhcmFtIGxvd2VzdEtleSBGaXJzdCBrZXkgdG8gYmUgaXRlcmF0ZWQsIG9yIHVuZGVmaW5lZCB0byBzdGFydCBhdFxyXG4gICAgICogICAgICAgICBtaW5LZXkoKS4gSWYgdGhlIHNwZWNpZmllZCBrZXkgZG9lc24ndCBleGlzdCB0aGVuIGl0ZXJhdGlvblxyXG4gICAgICogICAgICAgICBzdGFydHMgYXQgdGhlIG5leHQgaGlnaGVyIGtleSAoYWNjb3JkaW5nIHRvIHRoZSBjb21wYXJhdG9yKS5cclxuICAgICAqICBAcGFyYW0gcmV1c2VkQXJyYXkgT3B0aW9uYWwgYXJyYXkgdXNlZCByZXBlYXRlZGx5IHRvIHN0b3JlIGtleS12YWx1ZVxyXG4gICAgICogICAgICAgICBwYWlycywgdG8gYXZvaWQgY3JlYXRpbmcgYSBuZXcgYXJyYXkgb24gZXZlcnkgaXRlcmF0aW9uLlxyXG4gICAgICovXHJcbiAgICBCVHJlZS5wcm90b3R5cGUuZW50cmllcyA9IGZ1bmN0aW9uIChsb3dlc3RLZXksIHJldXNlZEFycmF5KSB7XHJcbiAgICAgICAgdmFyIGluZm8gPSB0aGlzLmZpbmRQYXRoKGxvd2VzdEtleSk7XHJcbiAgICAgICAgaWYgKGluZm8gPT09IHVuZGVmaW5lZClcclxuICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yKCk7XHJcbiAgICAgICAgdmFyIG5vZGVxdWV1ZSA9IGluZm8ubm9kZXF1ZXVlLCBub2RlaW5kZXggPSBpbmZvLm5vZGVpbmRleCwgbGVhZiA9IGluZm8ubGVhZjtcclxuICAgICAgICB2YXIgc3RhdGUgPSByZXVzZWRBcnJheSAhPT0gdW5kZWZpbmVkID8gMSA6IDA7XHJcbiAgICAgICAgdmFyIGkgPSAobG93ZXN0S2V5ID09PSB1bmRlZmluZWQgPyAtMSA6IGxlYWYuaW5kZXhPZihsb3dlc3RLZXksIDAsIHRoaXMuX2NvbXBhcmUpIC0gMSk7XHJcbiAgICAgICAgcmV0dXJuIGl0ZXJhdG9yKGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAganVtcDogZm9yICg7Oykge1xyXG4gICAgICAgICAgICAgICAgc3dpdGNoIChzdGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCsraSA8IGxlYWYua2V5cy5sZW5ndGgpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBkb25lOiBmYWxzZSwgdmFsdWU6IFtsZWFmLmtleXNbaV0sIGxlYWYudmFsdWVzW2ldXSB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IDI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCsraSA8IGxlYWYua2V5cy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldXNlZEFycmF5WzBdID0gbGVhZi5rZXlzW2ldLCByZXVzZWRBcnJheVsxXSA9IGxlYWYudmFsdWVzW2ldO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgZG9uZTogZmFsc2UsIHZhbHVlOiByZXVzZWRBcnJheSB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gMjtcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFkdmFuY2UgdG8gdGhlIG5leHQgbGVhZiBub2RlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGxldmVsID0gLTE7Oykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCsrbGV2ZWwgPj0gbm9kZXF1ZXVlLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gMztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZSBqdW1wO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCsrbm9kZWluZGV4W2xldmVsXSA8IG5vZGVxdWV1ZVtsZXZlbF0ubGVuZ3RoKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBsZXZlbCA+IDA7IGxldmVsLS0pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVxdWV1ZVtsZXZlbCAtIDFdID0gbm9kZXF1ZXVlW2xldmVsXVtub2RlaW5kZXhbbGV2ZWxdXS5jaGlsZHJlbjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVpbmRleFtsZXZlbCAtIDFdID0gMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZWFmID0gbm9kZXF1ZXVlWzBdW25vZGVpbmRleFswXV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAtMTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSByZXVzZWRBcnJheSAhPT0gdW5kZWZpbmVkID8gMSA6IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgZG9uZTogdHJ1ZSwgdmFsdWU6IHVuZGVmaW5lZCB9O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9O1xyXG4gICAgLyoqIFJldHVybnMgYW4gaXRlcmF0b3IgdGhhdCBwcm92aWRlcyBpdGVtcyBpbiByZXZlcnNlZCBvcmRlci5cclxuICAgICAqICBAcGFyYW0gaGlnaGVzdEtleSBLZXkgYXQgd2hpY2ggdG8gc3RhcnQgaXRlcmF0aW5nLCBvciB1bmRlZmluZWQgdG9cclxuICAgICAqICAgICAgICAgc3RhcnQgYXQgbWF4S2V5KCkuIElmIHRoZSBzcGVjaWZpZWQga2V5IGRvZXNuJ3QgZXhpc3QgdGhlbiBpdGVyYXRpb25cclxuICAgICAqICAgICAgICAgc3RhcnRzIGF0IHRoZSBuZXh0IGxvd2VyIGtleSAoYWNjb3JkaW5nIHRvIHRoZSBjb21wYXJhdG9yKS5cclxuICAgICAqICBAcGFyYW0gcmV1c2VkQXJyYXkgT3B0aW9uYWwgYXJyYXkgdXNlZCByZXBlYXRlZGx5IHRvIHN0b3JlIGtleS12YWx1ZVxyXG4gICAgICogICAgICAgICBwYWlycywgdG8gYXZvaWQgY3JlYXRpbmcgYSBuZXcgYXJyYXkgb24gZXZlcnkgaXRlcmF0aW9uLlxyXG4gICAgICogIEBwYXJhbSBza2lwSGlnaGVzdCBJZmYgdGhpcyBmbGFnIGlzIHRydWUgYW5kIHRoZSBoaWdoZXN0S2V5IGV4aXN0cyBpbiB0aGVcclxuICAgICAqICAgICAgICAgY29sbGVjdGlvbiwgdGhlIHBhaXIgbWF0Y2hpbmcgaGlnaGVzdEtleSBpcyBza2lwcGVkLCBub3QgaXRlcmF0ZWQuXHJcbiAgICAgKi9cclxuICAgIEJUcmVlLnByb3RvdHlwZS5lbnRyaWVzUmV2ZXJzZWQgPSBmdW5jdGlvbiAoaGlnaGVzdEtleSwgcmV1c2VkQXJyYXksIHNraXBIaWdoZXN0KSB7XHJcbiAgICAgICAgaWYgKGhpZ2hlc3RLZXkgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBoaWdoZXN0S2V5ID0gdGhpcy5tYXhLZXkoKTtcclxuICAgICAgICAgICAgc2tpcEhpZ2hlc3QgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgIGlmIChoaWdoZXN0S2V5ID09PSB1bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gaXRlcmF0b3IoKTsgLy8gY29sbGVjdGlvbiBpcyBlbXB0eVxyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgX2EgPSB0aGlzLmZpbmRQYXRoKGhpZ2hlc3RLZXkpIHx8IHRoaXMuZmluZFBhdGgodGhpcy5tYXhLZXkoKSksIG5vZGVxdWV1ZSA9IF9hLm5vZGVxdWV1ZSwgbm9kZWluZGV4ID0gX2Eubm9kZWluZGV4LCBsZWFmID0gX2EubGVhZjtcclxuICAgICAgICBjaGVjayghbm9kZXF1ZXVlWzBdIHx8IGxlYWYgPT09IG5vZGVxdWV1ZVswXVtub2RlaW5kZXhbMF1dLCBcIndhdCFcIik7XHJcbiAgICAgICAgdmFyIGkgPSBsZWFmLmluZGV4T2YoaGlnaGVzdEtleSwgMCwgdGhpcy5fY29tcGFyZSk7XHJcbiAgICAgICAgaWYgKCFza2lwSGlnaGVzdCAmJiBpIDwgbGVhZi5rZXlzLmxlbmd0aCAmJiB0aGlzLl9jb21wYXJlKGxlYWYua2V5c1tpXSwgaGlnaGVzdEtleSkgPD0gMClcclxuICAgICAgICAgICAgaSsrO1xyXG4gICAgICAgIHZhciBzdGF0ZSA9IHJldXNlZEFycmF5ICE9PSB1bmRlZmluZWQgPyAxIDogMDtcclxuICAgICAgICByZXR1cm4gaXRlcmF0b3IoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICBqdW1wOiBmb3IgKDs7KSB7XHJcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHN0YXRlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoLS1pID49IDApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBkb25lOiBmYWxzZSwgdmFsdWU6IFtsZWFmLmtleXNbaV0sIGxlYWYudmFsdWVzW2ldXSB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IDI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKC0taSA+PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXVzZWRBcnJheVswXSA9IGxlYWYua2V5c1tpXSwgcmV1c2VkQXJyYXlbMV0gPSBsZWFmLnZhbHVlc1tpXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGRvbmU6IGZhbHNlLCB2YWx1ZTogcmV1c2VkQXJyYXkgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IDI7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBBZHZhbmNlIHRvIHRoZSBuZXh0IGxlYWYgbm9kZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBsZXZlbCA9IC0xOzspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgrK2xldmVsID49IG5vZGVxdWV1ZS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IDM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUganVtcDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgtLW5vZGVpbmRleFtsZXZlbF0gPj0gMClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKDsgbGV2ZWwgPiAwOyBsZXZlbC0tKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlcXVldWVbbGV2ZWwgLSAxXSA9IG5vZGVxdWV1ZVtsZXZlbF1bbm9kZWluZGV4W2xldmVsXV0uY2hpbGRyZW47XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlaW5kZXhbbGV2ZWwgLSAxXSA9IG5vZGVxdWV1ZVtsZXZlbCAtIDFdLmxlbmd0aCAtIDE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgbGVhZiA9IG5vZGVxdWV1ZVswXVtub2RlaW5kZXhbMF1dO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpID0gbGVhZi5rZXlzLmxlbmd0aDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSByZXVzZWRBcnJheSAhPT0gdW5kZWZpbmVkID8gMSA6IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgZG9uZTogdHJ1ZSwgdmFsdWU6IHVuZGVmaW5lZCB9O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9O1xyXG4gICAgLyogVXNlZCBieSBlbnRyaWVzKCkgYW5kIGVudHJpZXNSZXZlcnNlZCgpIHRvIHByZXBhcmUgdG8gc3RhcnQgaXRlcmF0aW5nLlxyXG4gICAgICogSXQgZGV2ZWxvcHMgYSBcIm5vZGUgcXVldWVcIiBmb3IgZWFjaCBub24tbGVhZiBsZXZlbCBvZiB0aGUgdHJlZS5cclxuICAgICAqIExldmVscyBhcmUgbnVtYmVyZWQgXCJib3R0b20tdXBcIiBzbyB0aGF0IGxldmVsIDAgaXMgYSBsaXN0IG9mIGxlYWZcclxuICAgICAqIG5vZGVzIGZyb20gYSBsb3ctbGV2ZWwgbm9uLWxlYWYgbm9kZS4gVGhlIHF1ZXVlIGF0IGEgZ2l2ZW4gbGV2ZWwgTFxyXG4gICAgICogY29uc2lzdHMgb2Ygbm9kZXF1ZXVlW0xdIHdoaWNoIGlzIHRoZSBjaGlsZHJlbiBvZiBhIEJOb2RlSW50ZXJuYWwsXHJcbiAgICAgKiBhbmQgbm9kZWluZGV4W0xdLCB0aGUgY3VycmVudCBpbmRleCB3aXRoaW4gdGhhdCBjaGlsZCBsaXN0LCBzdWNoXHJcbiAgICAgKiBzdWNoIHRoYXQgbm9kZXF1ZXVlW0wtMV0gPT09IG5vZGVxdWV1ZVtMXVtub2RlaW5kZXhbTF1dLmNoaWxkcmVuLlxyXG4gICAgICogKEhvd2V2ZXIgaW5zaWRlIHRoaXMgZnVuY3Rpb24gdGhlIG9yZGVyIGlzIHJldmVyc2VkLilcclxuICAgICAqL1xyXG4gICAgQlRyZWUucHJvdG90eXBlLmZpbmRQYXRoID0gZnVuY3Rpb24gKGtleSkge1xyXG4gICAgICAgIHZhciBuZXh0bm9kZSA9IHRoaXMuX3Jvb3Q7XHJcbiAgICAgICAgdmFyIG5vZGVxdWV1ZSwgbm9kZWluZGV4O1xyXG4gICAgICAgIGlmIChuZXh0bm9kZS5pc0xlYWYpIHtcclxuICAgICAgICAgICAgbm9kZXF1ZXVlID0gRW1wdHlBcnJheSwgbm9kZWluZGV4ID0gRW1wdHlBcnJheTsgLy8gYXZvaWQgYWxsb2NhdGlvbnNcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIG5vZGVxdWV1ZSA9IFtdLCBub2RlaW5kZXggPSBbXTtcclxuICAgICAgICAgICAgZm9yICh2YXIgZCA9IDA7ICFuZXh0bm9kZS5pc0xlYWY7IGQrKykge1xyXG4gICAgICAgICAgICAgICAgbm9kZXF1ZXVlW2RdID0gbmV4dG5vZGUuY2hpbGRyZW47XHJcbiAgICAgICAgICAgICAgICBub2RlaW5kZXhbZF0gPSBrZXkgPT09IHVuZGVmaW5lZCA/IDAgOiBuZXh0bm9kZS5pbmRleE9mKGtleSwgMCwgdGhpcy5fY29tcGFyZSk7XHJcbiAgICAgICAgICAgICAgICBpZiAobm9kZWluZGV4W2RdID49IG5vZGVxdWV1ZVtkXS5sZW5ndGgpXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOyAvLyBmaXJzdCBrZXkgPiBtYXhLZXkoKVxyXG4gICAgICAgICAgICAgICAgbmV4dG5vZGUgPSBub2RlcXVldWVbZF1bbm9kZWluZGV4W2RdXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBub2RlcXVldWUucmV2ZXJzZSgpO1xyXG4gICAgICAgICAgICBub2RlaW5kZXgucmV2ZXJzZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4geyBub2RlcXVldWU6IG5vZGVxdWV1ZSwgbm9kZWluZGV4OiBub2RlaW5kZXgsIGxlYWY6IG5leHRub2RlIH07XHJcbiAgICB9O1xyXG4gICAgLyoqXHJcbiAgICAgKiBDb21wdXRlcyB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiBgdGhpc2AgYW5kIGBvdGhlcmAuXHJcbiAgICAgKiBGb3IgZWZmaWNpZW5jeSwgdGhlIGRpZmYgaXMgcmV0dXJuZWQgdmlhIGludm9jYXRpb25zIG9mIHN1cHBsaWVkIGhhbmRsZXJzLlxyXG4gICAgICogVGhlIGNvbXB1dGF0aW9uIGlzIG9wdGltaXplZCBmb3IgdGhlIGNhc2UgaW4gd2hpY2ggdGhlIHR3byB0cmVlcyBoYXZlIGxhcmdlIGFtb3VudHNcclxuICAgICAqIG9mIHNoYXJlZCBkYXRhIChvYnRhaW5lZCBieSBjYWxsaW5nIHRoZSBgY2xvbmVgIG9yIGB3aXRoYCBBUElzKSBhbmQgd2lsbCBhdm9pZFxyXG4gICAgICogYW55IGl0ZXJhdGlvbiBvZiBzaGFyZWQgc3RhdGUuXHJcbiAgICAgKiBUaGUgaGFuZGxlcnMgY2FuIGNhdXNlIGNvbXB1dGF0aW9uIHRvIGVhcmx5IGV4aXQgYnkgcmV0dXJuaW5nIHticmVhazogUn0uXHJcbiAgICAgKiBOZWl0aGVyIG9mIHRoZSBjb2xsZWN0aW9ucyBzaG91bGQgYmUgY2hhbmdlZCBkdXJpbmcgdGhlIGNvbXBhcmlzb24gcHJvY2VzcyAoaW4geW91ciBjYWxsYmFja3MpLCBhcyB0aGlzIG1ldGhvZCBhc3N1bWVzIHRoZXkgd2lsbCBub3QgYmUgbXV0YXRlZC5cclxuICAgICAqIEBwYXJhbSBvdGhlciBUaGUgdHJlZSB0byBjb21wdXRlIGEgZGlmZiBhZ2FpbnN0LlxyXG4gICAgICogQHBhcmFtIG9ubHlUaGlzIENhbGxiYWNrIGludm9rZWQgZm9yIGFsbCBrZXlzIG9ubHkgcHJlc2VudCBpbiBgdGhpc2AuXHJcbiAgICAgKiBAcGFyYW0gb25seU90aGVyIENhbGxiYWNrIGludm9rZWQgZm9yIGFsbCBrZXlzIG9ubHkgcHJlc2VudCBpbiBgb3RoZXJgLlxyXG4gICAgICogQHBhcmFtIGRpZmZlcmVudCBDYWxsYmFjayBpbnZva2VkIGZvciBhbGwga2V5cyB3aXRoIGRpZmZlcmluZyB2YWx1ZXMuXHJcbiAgICAgKi9cclxuICAgIEJUcmVlLnByb3RvdHlwZS5kaWZmQWdhaW5zdCA9IGZ1bmN0aW9uIChvdGhlciwgb25seVRoaXMsIG9ubHlPdGhlciwgZGlmZmVyZW50KSB7XHJcbiAgICAgICAgaWYgKG90aGVyLl9jb21wYXJlICE9PSB0aGlzLl9jb21wYXJlKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRyZWUgY29tcGFyYXRvcnMgYXJlIG5vdCB0aGUgc2FtZS5cIik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmlzRW1wdHkgfHwgb3RoZXIuaXNFbXB0eSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5pc0VtcHR5ICYmIG90aGVyLmlzRW1wdHkpXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAvLyBJZiBvbmUgdHJlZSBpcyBlbXB0eSwgZXZlcnl0aGluZyB3aWxsIGJlIGFuIG9ubHlUaGlzL29ubHlPdGhlci5cclxuICAgICAgICAgICAgaWYgKHRoaXMuaXNFbXB0eSlcclxuICAgICAgICAgICAgICAgIHJldHVybiBvbmx5T3RoZXIgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IEJUcmVlLnN0ZXBUb0VuZChCVHJlZS5tYWtlRGlmZkN1cnNvcihvdGhlciksIG9ubHlPdGhlcik7XHJcbiAgICAgICAgICAgIHJldHVybiBvbmx5VGhpcyA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogQlRyZWUuc3RlcFRvRW5kKEJUcmVlLm1ha2VEaWZmQ3Vyc29yKHRoaXMpLCBvbmx5VGhpcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIEN1cnNvci1iYXNlZCBkaWZmIGFsZ29yaXRobSBpcyBhcyBmb2xsb3dzOlxyXG4gICAgICAgIC8vIC0gVW50aWwgbmVpdGhlciBjdXJzb3IgaGFzIG5hdmlnYXRlZCB0byB0aGUgZW5kIG9mIHRoZSB0cmVlLCBkbyB0aGUgZm9sbG93aW5nOlxyXG4gICAgICAgIC8vICAtIElmIHRoZSBgdGhpc2AgY3Vyc29yIGlzIFwiYmVoaW5kXCIgdGhlIGBvdGhlcmAgY3Vyc29yIChzdHJpY3RseSA8LCB2aWEgY29tcGFyZSksIGFkdmFuY2UgaXQuXHJcbiAgICAgICAgLy8gIC0gT3RoZXJ3aXNlLCBhZHZhbmNlIHRoZSBgb3RoZXJgIGN1cnNvci5cclxuICAgICAgICAvLyAgLSBBbnkgdGltZSBhIGN1cnNvciBpcyBzdGVwcGVkLCBwZXJmb3JtIHRoZSBmb2xsb3dpbmc6XHJcbiAgICAgICAgLy8gICAgLSBJZiBlaXRoZXIgY3Vyc29yIHBvaW50cyB0byBhIGtleS92YWx1ZSBwYWlyOlxyXG4gICAgICAgIC8vICAgICAgLSBJZiB0aGlzQ3Vyc29yID09PSBvdGhlckN1cnNvciBhbmQgdGhlIHZhbHVlcyBkaWZmZXIsIGl0IGlzIGEgRGlmZmVyZW50LlxyXG4gICAgICAgIC8vICAgICAgLSBJZiB0aGlzQ3Vyc29yID4gb3RoZXJDdXJzb3IgYW5kIG90aGVyQ3Vyc29yIGlzIGF0IGEga2V5L3ZhbHVlIHBhaXIsIGl0IGlzIGFuIE9ubHlPdGhlci5cclxuICAgICAgICAvLyAgICAgIC0gSWYgdGhpc0N1cnNvciA8IG90aGVyQ3Vyc29yIGFuZCB0aGlzQ3Vyc29yIGlzIGF0IGEga2V5L3ZhbHVlIHBhaXIsIGl0IGlzIGFuIE9ubHlUaGlzIGFzIGxvbmcgYXMgdGhlIG1vc3QgcmVjZW50IFxyXG4gICAgICAgIC8vICAgICAgICBjdXJzb3Igc3RlcCB3YXMgKm5vdCogb3RoZXJDdXJzb3IgYWR2YW5jaW5nIGZyb20gYSB0aWUuIFRoZSBleHRyYSBjb25kaXRpb24gYXZvaWRzIGVycm9uZW91cyBPbmx5T3RoZXIgY2FsbHMgXHJcbiAgICAgICAgLy8gICAgICAgIHRoYXQgd291bGQgb2NjdXIgZHVlIHRvIG90aGVyQ3Vyc29yIGJlaW5nIHRoZSBcImxlYWRlclwiLlxyXG4gICAgICAgIC8vICAgIC0gT3RoZXJ3aXNlLCBpZiBib3RoIGN1cnNvcnMgcG9pbnQgdG8gbm9kZXMsIGNvbXBhcmUgdGhlbS4gSWYgdGhleSBhcmUgZXF1YWwgYnkgcmVmZXJlbmNlIChzaGFyZWQpLCBza2lwXHJcbiAgICAgICAgLy8gICAgICBib3RoIGN1cnNvcnMgdG8gdGhlIG5leHQgbm9kZSBpbiB0aGUgd2Fsay5cclxuICAgICAgICAvLyAtIE9uY2Ugb25lIGN1cnNvciBoYXMgZmluaXNoZWQgc3RlcHBpbmcsIGFueSByZW1haW5pbmcgc3RlcHMgKGlmIGFueSkgYXJlIHRha2VuIGFuZCBrZXkvdmFsdWUgcGFpcnMgYXJlIGxvZ2dlZFxyXG4gICAgICAgIC8vICAgYXMgT25seU90aGVyIChpZiBvdGhlckN1cnNvciBpcyBzdGVwcGluZykgb3IgT25seVRoaXMgKGlmIHRoaXNDdXJzb3IgaXMgc3RlcHBpbmcpLlxyXG4gICAgICAgIC8vIFRoaXMgYWxnb3JpdGhtIGdpdmVzIHRoZSBjcml0aWNhbCBndWFyYW50ZWUgdGhhdCBhbGwgbG9jYXRpb25zIChib3RoIG5vZGVzIGFuZCBrZXkvdmFsdWUgcGFpcnMpIGluIGJvdGggdHJlZXMgdGhhdCBcclxuICAgICAgICAvLyBhcmUgaWRlbnRpY2FsIGJ5IHZhbHVlIChhbmQgcG9zc2libHkgYnkgcmVmZXJlbmNlKSB3aWxsIGJlIHZpc2l0ZWQgKmF0IHRoZSBzYW1lIHRpbWUqIGJ5IHRoZSBjdXJzb3JzLlxyXG4gICAgICAgIC8vIFRoaXMgcmVtb3ZlcyB0aGUgcG9zc2liaWxpdHkgb2YgZW1pdHRpbmcgaW5jb3JyZWN0IGRpZmZzLCBhcyB3ZWxsIGFzIGFsbG93aW5nIGZvciBza2lwcGluZyBzaGFyZWQgbm9kZXMuXHJcbiAgICAgICAgdmFyIF9jb21wYXJlID0gdGhpcy5fY29tcGFyZTtcclxuICAgICAgICB2YXIgdGhpc0N1cnNvciA9IEJUcmVlLm1ha2VEaWZmQ3Vyc29yKHRoaXMpO1xyXG4gICAgICAgIHZhciBvdGhlckN1cnNvciA9IEJUcmVlLm1ha2VEaWZmQ3Vyc29yKG90aGVyKTtcclxuICAgICAgICAvLyBJdCBkb2Vzbid0IG1hdHRlciBob3cgdGhpc1N0ZXBwZWRMYXN0IGlzIGluaXRpYWxpemVkLlxyXG4gICAgICAgIC8vIFN0ZXAgb3JkZXIgaXMgb25seSB1c2VkIHdoZW4gZWl0aGVyIGN1cnNvciBpcyBhdCBhIGxlYWYsIGFuZCBjdXJzb3JzIGFsd2F5cyBzdGFydCBhdCBhIG5vZGUuXHJcbiAgICAgICAgdmFyIHRoaXNTdWNjZXNzID0gdHJ1ZSwgb3RoZXJTdWNjZXNzID0gdHJ1ZSwgcHJldkN1cnNvck9yZGVyID0gQlRyZWUuY29tcGFyZSh0aGlzQ3Vyc29yLCBvdGhlckN1cnNvciwgX2NvbXBhcmUpO1xyXG4gICAgICAgIHdoaWxlICh0aGlzU3VjY2VzcyAmJiBvdGhlclN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgdmFyIGN1cnNvck9yZGVyID0gQlRyZWUuY29tcGFyZSh0aGlzQ3Vyc29yLCBvdGhlckN1cnNvciwgX2NvbXBhcmUpO1xyXG4gICAgICAgICAgICB2YXIgdGhpc0xlYWYgPSB0aGlzQ3Vyc29yLmxlYWYsIHRoaXNJbnRlcm5hbFNwaW5lID0gdGhpc0N1cnNvci5pbnRlcm5hbFNwaW5lLCB0aGlzTGV2ZWxJbmRpY2VzID0gdGhpc0N1cnNvci5sZXZlbEluZGljZXM7XHJcbiAgICAgICAgICAgIHZhciBvdGhlckxlYWYgPSBvdGhlckN1cnNvci5sZWFmLCBvdGhlckludGVybmFsU3BpbmUgPSBvdGhlckN1cnNvci5pbnRlcm5hbFNwaW5lLCBvdGhlckxldmVsSW5kaWNlcyA9IG90aGVyQ3Vyc29yLmxldmVsSW5kaWNlcztcclxuICAgICAgICAgICAgaWYgKHRoaXNMZWFmIHx8IG90aGVyTGVhZikge1xyXG4gICAgICAgICAgICAgICAgLy8gSWYgdGhlIGN1cnNvcnMgd2VyZSBhdCB0aGUgc2FtZSBsb2NhdGlvbiBsYXN0IHN0ZXAsIHRoZW4gdGhlcmUgaXMgbm8gd29yayB0byBiZSBkb25lLlxyXG4gICAgICAgICAgICAgICAgaWYgKHByZXZDdXJzb3JPcmRlciAhPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjdXJzb3JPcmRlciA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpc0xlYWYgJiYgb3RoZXJMZWFmICYmIGRpZmZlcmVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRXF1YWwga2V5cywgY2hlY2sgZm9yIG1vZGlmaWNhdGlvbnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2YWxUaGlzID0gdGhpc0xlYWYudmFsdWVzW3RoaXNMZXZlbEluZGljZXNbdGhpc0xldmVsSW5kaWNlcy5sZW5ndGggLSAxXV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdmFsT3RoZXIgPSBvdGhlckxlYWYudmFsdWVzW290aGVyTGV2ZWxJbmRpY2VzW290aGVyTGV2ZWxJbmRpY2VzLmxlbmd0aCAtIDFdXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghT2JqZWN0LmlzKHZhbFRoaXMsIHZhbE90aGVyKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSBkaWZmZXJlbnQodGhpc0N1cnNvci5jdXJyZW50S2V5LCB2YWxUaGlzLCB2YWxPdGhlcik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCAmJiByZXN1bHQuYnJlYWspXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQuYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY3Vyc29yT3JkZXIgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgaXMgdGhlIGNhc2UsIHdlIGtub3cgdGhhdCBlaXRoZXI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIDEuIG90aGVyQ3Vyc29yIHN0ZXBwZWQgbGFzdCBmcm9tIGEgc3RhcnRpbmcgcG9zaXRpb24gdGhhdCB0cmFpbGVkIHRoaXNDdXJzb3IsIGFuZCBpcyBzdGlsbCBiZWhpbmQsIG9yXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIDIuIHRoaXNDdXJzb3Igc3RlcHBlZCBsYXN0IGFuZCBsZWFwZnJvZ2dlZCBvdGhlckN1cnNvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBFaXRoZXIgb2YgdGhlc2UgY2FzZXMgaXMgYW4gXCJvbmx5IG90aGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG90aGVyTGVhZiAmJiBvbmx5T3RoZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvdGhlclZhbCA9IG90aGVyTGVhZi52YWx1ZXNbb3RoZXJMZXZlbEluZGljZXNbb3RoZXJMZXZlbEluZGljZXMubGVuZ3RoIC0gMV1dO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IG9ubHlPdGhlcihvdGhlckN1cnNvci5jdXJyZW50S2V5LCBvdGhlclZhbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICYmIHJlc3VsdC5icmVhaylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LmJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG9ubHlUaGlzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzTGVhZiAmJiBwcmV2Q3Vyc29yT3JkZXIgIT09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2YWxUaGlzID0gdGhpc0xlYWYudmFsdWVzW3RoaXNMZXZlbEluZGljZXNbdGhpc0xldmVsSW5kaWNlcy5sZW5ndGggLSAxXV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gb25seVRoaXModGhpc0N1cnNvci5jdXJyZW50S2V5LCB2YWxUaGlzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgJiYgcmVzdWx0LmJyZWFrKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQuYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoIXRoaXNMZWFmICYmICFvdGhlckxlYWYgJiYgY3Vyc29yT3JkZXIgPT09IDApIHtcclxuICAgICAgICAgICAgICAgIHZhciBsYXN0VGhpcyA9IHRoaXNJbnRlcm5hbFNwaW5lLmxlbmd0aCAtIDE7XHJcbiAgICAgICAgICAgICAgICB2YXIgbGFzdE90aGVyID0gb3RoZXJJbnRlcm5hbFNwaW5lLmxlbmd0aCAtIDE7XHJcbiAgICAgICAgICAgICAgICB2YXIgbm9kZVRoaXMgPSB0aGlzSW50ZXJuYWxTcGluZVtsYXN0VGhpc11bdGhpc0xldmVsSW5kaWNlc1tsYXN0VGhpc11dO1xyXG4gICAgICAgICAgICAgICAgdmFyIG5vZGVPdGhlciA9IG90aGVySW50ZXJuYWxTcGluZVtsYXN0T3RoZXJdW290aGVyTGV2ZWxJbmRpY2VzW2xhc3RPdGhlcl1dO1xyXG4gICAgICAgICAgICAgICAgaWYgKG5vZGVPdGhlciA9PT0gbm9kZVRoaXMpIHtcclxuICAgICAgICAgICAgICAgICAgICBwcmV2Q3Vyc29yT3JkZXIgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXNTdWNjZXNzID0gQlRyZWUuc3RlcCh0aGlzQ3Vyc29yLCB0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICBvdGhlclN1Y2Nlc3MgPSBCVHJlZS5zdGVwKG90aGVyQ3Vyc29yLCB0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBwcmV2Q3Vyc29yT3JkZXIgPSBjdXJzb3JPcmRlcjtcclxuICAgICAgICAgICAgaWYgKGN1cnNvck9yZGVyIDwgMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpc1N1Y2Nlc3MgPSBCVHJlZS5zdGVwKHRoaXNDdXJzb3IpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgb3RoZXJTdWNjZXNzID0gQlRyZWUuc3RlcChvdGhlckN1cnNvcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXNTdWNjZXNzICYmIG9ubHlUaGlzKVxyXG4gICAgICAgICAgICByZXR1cm4gQlRyZWUuZmluaXNoQ3Vyc29yV2Fsayh0aGlzQ3Vyc29yLCBvdGhlckN1cnNvciwgX2NvbXBhcmUsIG9ubHlUaGlzKTtcclxuICAgICAgICBpZiAob3RoZXJTdWNjZXNzICYmIG9ubHlPdGhlcilcclxuICAgICAgICAgICAgcmV0dXJuIEJUcmVlLmZpbmlzaEN1cnNvcldhbGsob3RoZXJDdXJzb3IsIHRoaXNDdXJzb3IsIF9jb21wYXJlLCBvbmx5T3RoZXIpO1xyXG4gICAgfTtcclxuICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG4gICAgLy8gSGVscGVyIG1ldGhvZHMgZm9yIGRpZmZBZ2FpbnN0IC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbiAgICBCVHJlZS5maW5pc2hDdXJzb3JXYWxrID0gZnVuY3Rpb24gKGN1cnNvciwgY3Vyc29yRmluaXNoZWQsIGNvbXBhcmVLZXlzLCBjYWxsYmFjaykge1xyXG4gICAgICAgIHZhciBjb21wYXJlZCA9IEJUcmVlLmNvbXBhcmUoY3Vyc29yLCBjdXJzb3JGaW5pc2hlZCwgY29tcGFyZUtleXMpO1xyXG4gICAgICAgIGlmIChjb21wYXJlZCA9PT0gMCkge1xyXG4gICAgICAgICAgICBpZiAoIUJUcmVlLnN0ZXAoY3Vyc29yKSlcclxuICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGNvbXBhcmVkIDwgMCkge1xyXG4gICAgICAgICAgICBjaGVjayhmYWxzZSwgXCJjdXJzb3Igd2FsayB0ZXJtaW5hdGVkIGVhcmx5XCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gQlRyZWUuc3RlcFRvRW5kKGN1cnNvciwgY2FsbGJhY2spO1xyXG4gICAgfTtcclxuICAgIEJUcmVlLnN0ZXBUb0VuZCA9IGZ1bmN0aW9uIChjdXJzb3IsIGNhbGxiYWNrKSB7XHJcbiAgICAgICAgdmFyIGNhblN0ZXAgPSB0cnVlO1xyXG4gICAgICAgIHdoaWxlIChjYW5TdGVwKSB7XHJcbiAgICAgICAgICAgIHZhciBsZWFmID0gY3Vyc29yLmxlYWYsIGxldmVsSW5kaWNlcyA9IGN1cnNvci5sZXZlbEluZGljZXMsIGN1cnJlbnRLZXkgPSBjdXJzb3IuY3VycmVudEtleTtcclxuICAgICAgICAgICAgaWYgKGxlYWYpIHtcclxuICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9IGxlYWYudmFsdWVzW2xldmVsSW5kaWNlc1tsZXZlbEluZGljZXMubGVuZ3RoIC0gMV1dO1xyXG4gICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGNhbGxiYWNrKGN1cnJlbnRLZXksIHZhbHVlKTtcclxuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgJiYgcmVzdWx0LmJyZWFrKVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQuYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2FuU3RlcCA9IEJUcmVlLnN0ZXAoY3Vyc29yKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIH07XHJcbiAgICBCVHJlZS5tYWtlRGlmZkN1cnNvciA9IGZ1bmN0aW9uICh0cmVlKSB7XHJcbiAgICAgICAgdmFyIF9yb290ID0gdHJlZS5fcm9vdCwgaGVpZ2h0ID0gdHJlZS5oZWlnaHQ7XHJcbiAgICAgICAgcmV0dXJuIHsgaGVpZ2h0OiBoZWlnaHQsIGludGVybmFsU3BpbmU6IFtbX3Jvb3RdXSwgbGV2ZWxJbmRpY2VzOiBbMF0sIGxlYWY6IHVuZGVmaW5lZCwgY3VycmVudEtleTogX3Jvb3QubWF4S2V5KCkgfTtcclxuICAgIH07XHJcbiAgICAvKipcclxuICAgICAqIEFkdmFuY2VzIHRoZSBjdXJzb3IgdG8gdGhlIG5leHQgc3RlcCBpbiB0aGUgd2FsayBvZiBpdHMgdHJlZS5cclxuICAgICAqIEN1cnNvcnMgYXJlIHdhbGtlZCBiYWNrd2FyZHMgaW4gc29ydCBvcmRlciwgYXMgdGhpcyBhbGxvd3MgdGhlbSB0byBsZXZlcmFnZSBtYXhLZXkoKSBpbiBvcmRlciB0byBiZSBjb21wYXJlZCBpbiBPKDEpLlxyXG4gICAgICogQHBhcmFtIGN1cnNvciBUaGUgY3Vyc29yIHRvIHN0ZXBcclxuICAgICAqIEBwYXJhbSBzdGVwVG9Ob2RlIElmIHRydWUsIHRoZSBjdXJzb3Igd2lsbCBiZSBhZHZhbmNlZCB0byB0aGUgbmV4dCBub2RlIChza2lwcGluZyB2YWx1ZXMpXHJcbiAgICAgKiBAcmV0dXJucyB0cnVlIGlmIHRoZSBzdGVwIHdhcyBjb21wbGV0ZWQgYW5kIGZhbHNlIGlmIHRoZSBzdGVwIHdvdWxkIGhhdmUgY2F1c2VkIHRoZSBjdXJzb3IgdG8gbW92ZSBiZXlvbmQgdGhlIGVuZCBvZiB0aGUgdHJlZS5cclxuICAgICAqL1xyXG4gICAgQlRyZWUuc3RlcCA9IGZ1bmN0aW9uIChjdXJzb3IsIHN0ZXBUb05vZGUpIHtcclxuICAgICAgICB2YXIgaW50ZXJuYWxTcGluZSA9IGN1cnNvci5pbnRlcm5hbFNwaW5lLCBsZXZlbEluZGljZXMgPSBjdXJzb3IubGV2ZWxJbmRpY2VzLCBsZWFmID0gY3Vyc29yLmxlYWY7XHJcbiAgICAgICAgaWYgKHN0ZXBUb05vZGUgPT09IHRydWUgfHwgbGVhZikge1xyXG4gICAgICAgICAgICB2YXIgbGV2ZWxzTGVuZ3RoID0gbGV2ZWxJbmRpY2VzLmxlbmd0aDtcclxuICAgICAgICAgICAgLy8gU3RlcCB0byB0aGUgbmV4dCBub2RlIG9ubHkgaWY6XHJcbiAgICAgICAgICAgIC8vIC0gV2UgYXJlIGV4cGxpY2l0bHkgZGlyZWN0ZWQgdG8gdmlhIHN0ZXBUb05vZGUsIG9yXHJcbiAgICAgICAgICAgIC8vIC0gVGhlcmUgYXJlIG5vIGtleS92YWx1ZSBwYWlycyBsZWZ0IHRvIHN0ZXAgdG8gaW4gdGhpcyBsZWFmXHJcbiAgICAgICAgICAgIGlmIChzdGVwVG9Ob2RlID09PSB0cnVlIHx8IGxldmVsSW5kaWNlc1tsZXZlbHNMZW5ndGggLSAxXSA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgdmFyIHNwaW5lTGVuZ3RoID0gaW50ZXJuYWxTcGluZS5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICAvLyBSb290IGlzIGxlYWZcclxuICAgICAgICAgICAgICAgIGlmIChzcGluZUxlbmd0aCA9PT0gMClcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAvLyBXYWxrIGJhY2sgdXAgdGhlIHRyZWUgdW50aWwgd2UgZmluZCBhIG5ldyBzdWJ0cmVlIHRvIGRlc2NlbmQgaW50b1xyXG4gICAgICAgICAgICAgICAgdmFyIG5vZGVMZXZlbEluZGV4ID0gc3BpbmVMZW5ndGggLSAxO1xyXG4gICAgICAgICAgICAgICAgdmFyIGxldmVsSW5kZXhXYWxrQmFjayA9IG5vZGVMZXZlbEluZGV4O1xyXG4gICAgICAgICAgICAgICAgd2hpbGUgKGxldmVsSW5kZXhXYWxrQmFjayA+PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxldmVsSW5kaWNlc1tsZXZlbEluZGV4V2Fsa0JhY2tdID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobGV2ZWxJbmRleFdhbGtCYWNrIDwgbGV2ZWxzTGVuZ3RoIC0gMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVtb3ZlIGxlYWYgc3RhdGUgZnJvbSBjdXJzb3JcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNvci5sZWFmID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxJbmRpY2VzLnBvcCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHdlIHdhbGtlZCB1cHdhcmRzIHBhc3QgYW55IGludGVybmFsIG5vZGUsIHNsaWNlIHRoZW0gb3V0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsZXZlbEluZGV4V2Fsa0JhY2sgPCBub2RlTGV2ZWxJbmRleClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNvci5pbnRlcm5hbFNwaW5lID0gaW50ZXJuYWxTcGluZS5zbGljZSgwLCBsZXZlbEluZGV4V2Fsa0JhY2sgKyAxKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gTW92ZSB0byBuZXcgaW50ZXJuYWwgbm9kZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJzb3IuY3VycmVudEtleSA9IGludGVybmFsU3BpbmVbbGV2ZWxJbmRleFdhbGtCYWNrXVstLWxldmVsSW5kaWNlc1tsZXZlbEluZGV4V2Fsa0JhY2tdXS5tYXhLZXkoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGxldmVsSW5kZXhXYWxrQmFjay0tO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gQ3Vyc29yIGlzIGluIHRoZSBmYXIgbGVmdCBsZWFmIG9mIHRoZSB0cmVlLCBubyBtb3JlIG5vZGVzIHRvIGVudW1lcmF0ZVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gTW92ZSB0byBuZXcgbGVhZiB2YWx1ZVxyXG4gICAgICAgICAgICAgICAgdmFyIHZhbHVlSW5kZXggPSAtLWxldmVsSW5kaWNlc1tsZXZlbHNMZW5ndGggLSAxXTtcclxuICAgICAgICAgICAgICAgIGN1cnNvci5jdXJyZW50S2V5ID0gbGVhZi5rZXlzW3ZhbHVlSW5kZXhdO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7IC8vIEN1cnNvciBkb2VzIG5vdCBwb2ludCB0byBhIHZhbHVlIGluIGEgbGVhZiwgc28gbW92ZSBkb3dud2FyZHNcclxuICAgICAgICAgICAgdmFyIG5leHRMZXZlbCA9IGludGVybmFsU3BpbmUubGVuZ3RoO1xyXG4gICAgICAgICAgICB2YXIgY3VycmVudExldmVsID0gbmV4dExldmVsIC0gMTtcclxuICAgICAgICAgICAgdmFyIG5vZGUgPSBpbnRlcm5hbFNwaW5lW2N1cnJlbnRMZXZlbF1bbGV2ZWxJbmRpY2VzW2N1cnJlbnRMZXZlbF1dO1xyXG4gICAgICAgICAgICBpZiAobm9kZS5pc0xlYWYpIHtcclxuICAgICAgICAgICAgICAgIC8vIEVudGVyaW5nIGludG8gYSBsZWFmLiBTZXQgdGhlIGN1cnNvciB0byBwb2ludCBhdCB0aGUgbGFzdCBrZXkvdmFsdWUgcGFpci5cclxuICAgICAgICAgICAgICAgIGN1cnNvci5sZWFmID0gbm9kZTtcclxuICAgICAgICAgICAgICAgIHZhciB2YWx1ZUluZGV4ID0gbGV2ZWxJbmRpY2VzW25leHRMZXZlbF0gPSBub2RlLnZhbHVlcy5sZW5ndGggLSAxO1xyXG4gICAgICAgICAgICAgICAgY3Vyc29yLmN1cnJlbnRLZXkgPSBub2RlLmtleXNbdmFsdWVJbmRleF07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgY2hpbGRyZW4gPSBub2RlLmNoaWxkcmVuO1xyXG4gICAgICAgICAgICAgICAgaW50ZXJuYWxTcGluZVtuZXh0TGV2ZWxdID0gY2hpbGRyZW47XHJcbiAgICAgICAgICAgICAgICB2YXIgY2hpbGRJbmRleCA9IGNoaWxkcmVuLmxlbmd0aCAtIDE7XHJcbiAgICAgICAgICAgICAgICBsZXZlbEluZGljZXNbbmV4dExldmVsXSA9IGNoaWxkSW5kZXg7XHJcbiAgICAgICAgICAgICAgICBjdXJzb3IuY3VycmVudEtleSA9IGNoaWxkcmVuW2NoaWxkSW5kZXhdLm1heEtleSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICAvKipcclxuICAgICAqIENvbXBhcmVzIHRoZSB0d28gY3Vyc29ycy4gUmV0dXJucyBhIHZhbHVlIGluZGljYXRpbmcgd2hpY2ggY3Vyc29yIGlzIGFoZWFkIGluIGEgd2Fsay5cclxuICAgICAqIE5vdGUgdGhhdCBjdXJzb3JzIGFyZSBhZHZhbmNlZCBpbiByZXZlcnNlIHNvcnRpbmcgb3JkZXIuXHJcbiAgICAgKi9cclxuICAgIEJUcmVlLmNvbXBhcmUgPSBmdW5jdGlvbiAoY3Vyc29yQSwgY3Vyc29yQiwgY29tcGFyZUtleXMpIHtcclxuICAgICAgICB2YXIgaGVpZ2h0QSA9IGN1cnNvckEuaGVpZ2h0LCBjdXJyZW50S2V5QSA9IGN1cnNvckEuY3VycmVudEtleSwgbGV2ZWxJbmRpY2VzQSA9IGN1cnNvckEubGV2ZWxJbmRpY2VzO1xyXG4gICAgICAgIHZhciBoZWlnaHRCID0gY3Vyc29yQi5oZWlnaHQsIGN1cnJlbnRLZXlCID0gY3Vyc29yQi5jdXJyZW50S2V5LCBsZXZlbEluZGljZXNCID0gY3Vyc29yQi5sZXZlbEluZGljZXM7XHJcbiAgICAgICAgLy8gUmV2ZXJzZSB0aGUgY29tcGFyaXNvbiBvcmRlciwgYXMgY3Vyc29ycyBhcmUgYWR2YW5jZWQgaW4gcmV2ZXJzZSBzb3J0aW5nIG9yZGVyXHJcbiAgICAgICAgdmFyIGtleUNvbXBhcmlzb24gPSBjb21wYXJlS2V5cyhjdXJyZW50S2V5QiwgY3VycmVudEtleUEpO1xyXG4gICAgICAgIGlmIChrZXlDb21wYXJpc29uICE9PSAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBrZXlDb21wYXJpc29uO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBOb3JtYWxpemUgZGVwdGggdmFsdWVzIHJlbGF0aXZlIHRvIHRoZSBzaG9ydGVzdCB0cmVlLlxyXG4gICAgICAgIC8vIFRoaXMgZW5zdXJlcyB0aGF0IGNvbmN1cnJlbnQgY3Vyc29yIHdhbGtzIG9mIHRyZWVzIG9mIGRpZmZlcmluZyBoZWlnaHRzIGNhbiByZWxpYWJseSBsYW5kIG9uIHNoYXJlZCBub2RlcyBhdCB0aGUgc2FtZSB0aW1lLlxyXG4gICAgICAgIC8vIFRvIGFjY29tcGxpc2ggdGhpcywgYSBjdXJzb3IgdGhhdCBpcyBvbiBhbiBpbnRlcm5hbCBub2RlIGF0IGRlcHRoIEQxIHdpdGggbWF4S2V5IFggaXMgY29uc2lkZXJlZCBcImJlaGluZFwiIGEgY3Vyc29yIG9uIGFuXHJcbiAgICAgICAgLy8gaW50ZXJuYWwgbm9kZSBhdCBkZXB0aCBEMiB3aXRoIG1heEtleSBZLCB3aGVuIEQxIDwgRDIuIFRodXMsIGFsd2F5cyB3YWxraW5nIHRoZSBjdXJzb3IgdGhhdCBpcyBcImJlaGluZFwiIHdpbGwgYWxsb3cgdGhlIGN1cnNvclxyXG4gICAgICAgIC8vIGF0IHNoYWxsb3dlciBkZXB0aCAoYnV0IGVxdWFsIG1heEtleSkgdG8gXCJjYXRjaCB1cFwiIGFuZCBsYW5kIG9uIHNoYXJlZCBub2Rlcy5cclxuICAgICAgICB2YXIgaGVpZ2h0TWluID0gaGVpZ2h0QSA8IGhlaWdodEIgPyBoZWlnaHRBIDogaGVpZ2h0QjtcclxuICAgICAgICB2YXIgZGVwdGhBTm9ybWFsaXplZCA9IGxldmVsSW5kaWNlc0EubGVuZ3RoIC0gKGhlaWdodEEgLSBoZWlnaHRNaW4pO1xyXG4gICAgICAgIHZhciBkZXB0aEJOb3JtYWxpemVkID0gbGV2ZWxJbmRpY2VzQi5sZW5ndGggLSAoaGVpZ2h0QiAtIGhlaWdodE1pbik7XHJcbiAgICAgICAgcmV0dXJuIGRlcHRoQU5vcm1hbGl6ZWQgLSBkZXB0aEJOb3JtYWxpemVkO1xyXG4gICAgfTtcclxuICAgIC8vIEVuZCBvZiBoZWxwZXIgbWV0aG9kcyBmb3IgZGlmZkFnYWluc3QgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG4gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbiAgICAvKiogUmV0dXJucyBhIG5ldyBpdGVyYXRvciBmb3IgaXRlcmF0aW5nIHRoZSBrZXlzIG9mIGVhY2ggcGFpciBpbiBhc2NlbmRpbmcgb3JkZXIuXHJcbiAgICAgKiAgQHBhcmFtIGZpcnN0S2V5OiBNaW5pbXVtIGtleSB0byBpbmNsdWRlIGluIHRoZSBvdXRwdXQuICovXHJcbiAgICBCVHJlZS5wcm90b3R5cGUua2V5cyA9IGZ1bmN0aW9uIChmaXJzdEtleSkge1xyXG4gICAgICAgIHZhciBpdCA9IHRoaXMuZW50cmllcyhmaXJzdEtleSwgUmV1c2VkQXJyYXkpO1xyXG4gICAgICAgIHJldHVybiBpdGVyYXRvcihmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIHZhciBuID0gaXQubmV4dCgpO1xyXG4gICAgICAgICAgICBpZiAobi52YWx1ZSlcclxuICAgICAgICAgICAgICAgIG4udmFsdWUgPSBuLnZhbHVlWzBdO1xyXG4gICAgICAgICAgICByZXR1cm4gbjtcclxuICAgICAgICB9KTtcclxuICAgIH07XHJcbiAgICAvKiogUmV0dXJucyBhIG5ldyBpdGVyYXRvciBmb3IgaXRlcmF0aW5nIHRoZSB2YWx1ZXMgb2YgZWFjaCBwYWlyIGluIG9yZGVyIGJ5IGtleS5cclxuICAgICAqICBAcGFyYW0gZmlyc3RLZXk6IE1pbmltdW0ga2V5IHdob3NlIGFzc29jaWF0ZWQgdmFsdWUgaXMgaW5jbHVkZWQgaW4gdGhlIG91dHB1dC4gKi9cclxuICAgIEJUcmVlLnByb3RvdHlwZS52YWx1ZXMgPSBmdW5jdGlvbiAoZmlyc3RLZXkpIHtcclxuICAgICAgICB2YXIgaXQgPSB0aGlzLmVudHJpZXMoZmlyc3RLZXksIFJldXNlZEFycmF5KTtcclxuICAgICAgICByZXR1cm4gaXRlcmF0b3IoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICB2YXIgbiA9IGl0Lm5leHQoKTtcclxuICAgICAgICAgICAgaWYgKG4udmFsdWUpXHJcbiAgICAgICAgICAgICAgICBuLnZhbHVlID0gbi52YWx1ZVsxXTtcclxuICAgICAgICAgICAgcmV0dXJuIG47XHJcbiAgICAgICAgfSk7XHJcbiAgICB9O1xyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEJUcmVlLnByb3RvdHlwZSwgXCJtYXhOb2RlU2l6ZVwiLCB7XHJcbiAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuICAgICAgICAvLyBBZGRpdGlvbmFsIG1ldGhvZHMgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG4gICAgICAgIC8qKiBSZXR1cm5zIHRoZSBtYXhpbXVtIG51bWJlciBvZiBjaGlsZHJlbi92YWx1ZXMgYmVmb3JlIG5vZGVzIHdpbGwgc3BsaXQuICovXHJcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9tYXhOb2RlU2l6ZTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxyXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxyXG4gICAgfSk7XHJcbiAgICAvKiogR2V0cyB0aGUgbG93ZXN0IGtleSBpbiB0aGUgdHJlZS4gQ29tcGxleGl0eTogTyhsb2cgc2l6ZSkgKi9cclxuICAgIEJUcmVlLnByb3RvdHlwZS5taW5LZXkgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLl9yb290Lm1pbktleSgpOyB9O1xyXG4gICAgLyoqIEdldHMgdGhlIGhpZ2hlc3Qga2V5IGluIHRoZSB0cmVlLiBDb21wbGV4aXR5OiBPKDEpICovXHJcbiAgICBCVHJlZS5wcm90b3R5cGUubWF4S2V5ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5fcm9vdC5tYXhLZXkoKTsgfTtcclxuICAgIC8qKiBRdWlja2x5IGNsb25lcyB0aGUgdHJlZSBieSBtYXJraW5nIHRoZSByb290IG5vZGUgYXMgc2hhcmVkLlxyXG4gICAgICogIEJvdGggY29waWVzIHJlbWFpbiBlZGl0YWJsZS4gV2hlbiB5b3UgbW9kaWZ5IGVpdGhlciBjb3B5LCBhbnlcclxuICAgICAqICBub2RlcyB0aGF0IGFyZSBzaGFyZWQgKG9yIHBvdGVudGlhbGx5IHNoYXJlZCkgYmV0d2VlbiB0aGUgdHdvXHJcbiAgICAgKiAgY29waWVzIGFyZSBjbG9uZWQgc28gdGhhdCB0aGUgY2hhbmdlcyBkbyBub3QgYWZmZWN0IG90aGVyIGNvcGllcy5cclxuICAgICAqICBUaGlzIGlzIGtub3duIGFzIGNvcHktb24td3JpdGUgYmVoYXZpb3IsIG9yIFwibGF6eSBjb3B5aW5nXCIuICovXHJcbiAgICBCVHJlZS5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdGhpcy5fcm9vdC5pc1NoYXJlZCA9IHRydWU7XHJcbiAgICAgICAgdmFyIHJlc3VsdCA9IG5ldyBCVHJlZSh1bmRlZmluZWQsIHRoaXMuX2NvbXBhcmUsIHRoaXMuX21heE5vZGVTaXplKTtcclxuICAgICAgICByZXN1bHQuX3Jvb3QgPSB0aGlzLl9yb290O1xyXG4gICAgICAgIHJlc3VsdC5fc2l6ZSA9IHRoaXMuX3NpemU7XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH07XHJcbiAgICAvKiogUGVyZm9ybXMgYSBncmVlZHkgY2xvbmUsIGltbWVkaWF0ZWx5IGR1cGxpY2F0aW5nIGFueSBub2RlcyB0aGF0IGFyZVxyXG4gICAgICogIG5vdCBjdXJyZW50bHkgbWFya2VkIGFzIHNoYXJlZCwgaW4gb3JkZXIgdG8gYXZvaWQgbWFya2luZyBhbnlcclxuICAgICAqICBhZGRpdGlvbmFsIG5vZGVzIGFzIHNoYXJlZC5cclxuICAgICAqICBAcGFyYW0gZm9yY2UgQ2xvbmUgYWxsIG5vZGVzLCBldmVuIHNoYXJlZCBvbmVzLlxyXG4gICAgICovXHJcbiAgICBCVHJlZS5wcm90b3R5cGUuZ3JlZWR5Q2xvbmUgPSBmdW5jdGlvbiAoZm9yY2UpIHtcclxuICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IEJUcmVlKHVuZGVmaW5lZCwgdGhpcy5fY29tcGFyZSwgdGhpcy5fbWF4Tm9kZVNpemUpO1xyXG4gICAgICAgIHJlc3VsdC5fcm9vdCA9IHRoaXMuX3Jvb3QuZ3JlZWR5Q2xvbmUoZm9yY2UpO1xyXG4gICAgICAgIHJlc3VsdC5fc2l6ZSA9IHRoaXMuX3NpemU7XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH07XHJcbiAgICAvKiogR2V0cyBhbiBhcnJheSBmaWxsZWQgd2l0aCB0aGUgY29udGVudHMgb2YgdGhlIHRyZWUsIHNvcnRlZCBieSBrZXkgKi9cclxuICAgIEJUcmVlLnByb3RvdHlwZS50b0FycmF5ID0gZnVuY3Rpb24gKG1heExlbmd0aCkge1xyXG4gICAgICAgIGlmIChtYXhMZW5ndGggPT09IHZvaWQgMCkgeyBtYXhMZW5ndGggPSAweDdGRkZGRkZGOyB9XHJcbiAgICAgICAgdmFyIG1pbiA9IHRoaXMubWluS2V5KCksIG1heCA9IHRoaXMubWF4S2V5KCk7XHJcbiAgICAgICAgaWYgKG1pbiAhPT0gdW5kZWZpbmVkKVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRSYW5nZShtaW4sIG1heCwgdHJ1ZSwgbWF4TGVuZ3RoKTtcclxuICAgICAgICByZXR1cm4gW107XHJcbiAgICB9O1xyXG4gICAgLyoqIEdldHMgYW4gYXJyYXkgb2YgYWxsIGtleXMsIHNvcnRlZCAqL1xyXG4gICAgQlRyZWUucHJvdG90eXBlLmtleXNBcnJheSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB2YXIgcmVzdWx0cyA9IFtdO1xyXG4gICAgICAgIHRoaXMuX3Jvb3QuZm9yUmFuZ2UodGhpcy5taW5LZXkoKSwgdGhpcy5tYXhLZXkoKSwgdHJ1ZSwgZmFsc2UsIHRoaXMsIDAsIGZ1bmN0aW9uIChrLCB2KSB7IHJlc3VsdHMucHVzaChrKTsgfSk7XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdHM7XHJcbiAgICB9O1xyXG4gICAgLyoqIEdldHMgYW4gYXJyYXkgb2YgYWxsIHZhbHVlcywgc29ydGVkIGJ5IGtleSAqL1xyXG4gICAgQlRyZWUucHJvdG90eXBlLnZhbHVlc0FycmF5ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHZhciByZXN1bHRzID0gW107XHJcbiAgICAgICAgdGhpcy5fcm9vdC5mb3JSYW5nZSh0aGlzLm1pbktleSgpLCB0aGlzLm1heEtleSgpLCB0cnVlLCBmYWxzZSwgdGhpcywgMCwgZnVuY3Rpb24gKGssIHYpIHsgcmVzdWx0cy5wdXNoKHYpOyB9KTtcclxuICAgICAgICByZXR1cm4gcmVzdWx0cztcclxuICAgIH07XHJcbiAgICAvKiogR2V0cyBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHRyZWUncyBkYXRhIGJhc2VkIG9uIHRvQXJyYXkoKS4gKi9cclxuICAgIEJUcmVlLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy50b0FycmF5KCkudG9TdHJpbmcoKTtcclxuICAgIH07XHJcbiAgICAvKiogU3RvcmVzIGEga2V5LXZhbHVlIHBhaXIgb25seSBpZiB0aGUga2V5IGRvZXNuJ3QgYWxyZWFkeSBleGlzdCBpbiB0aGUgdHJlZS5cclxuICAgICAqIEByZXR1cm5zIHRydWUgaWYgYSBuZXcga2V5IHdhcyBhZGRlZFxyXG4gICAgKi9cclxuICAgIEJUcmVlLnByb3RvdHlwZS5zZXRJZk5vdFByZXNlbnQgPSBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNldChrZXksIHZhbHVlLCBmYWxzZSk7XHJcbiAgICB9O1xyXG4gICAgLyoqIFJldHVybnMgdGhlIG5leHQgcGFpciB3aG9zZSBrZXkgaXMgbGFyZ2VyIHRoYW4gdGhlIHNwZWNpZmllZCBrZXkgKG9yIHVuZGVmaW5lZCBpZiB0aGVyZSBpcyBub25lKS5cclxuICAgICAqIElmIGtleSA9PT0gdW5kZWZpbmVkLCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIGxvd2VzdCBwYWlyLlxyXG4gICAgICogQHBhcmFtIGtleSBUaGUga2V5IHRvIHNlYXJjaCBmb3IuXHJcbiAgICAgKiBAcGFyYW0gcmV1c2VkQXJyYXkgT3B0aW9uYWwgYXJyYXkgdXNlZCByZXBlYXRlZGx5IHRvIHN0b3JlIGtleS12YWx1ZSBwYWlycywgdG9cclxuICAgICAqIGF2b2lkIGNyZWF0aW5nIGEgbmV3IGFycmF5IG9uIGV2ZXJ5IGl0ZXJhdGlvbi5cclxuICAgICAqL1xyXG4gICAgQlRyZWUucHJvdG90eXBlLm5leHRIaWdoZXJQYWlyID0gZnVuY3Rpb24gKGtleSwgcmV1c2VkQXJyYXkpIHtcclxuICAgICAgICByZXVzZWRBcnJheSA9IHJldXNlZEFycmF5IHx8IFtdO1xyXG4gICAgICAgIGlmIChrZXkgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fcm9vdC5taW5QYWlyKHJldXNlZEFycmF5KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jvb3QuZ2V0UGFpck9yTmV4dEhpZ2hlcihrZXksIHRoaXMuX2NvbXBhcmUsIGZhbHNlLCByZXVzZWRBcnJheSk7XHJcbiAgICB9O1xyXG4gICAgLyoqIFJldHVybnMgdGhlIG5leHQga2V5IGxhcmdlciB0aGFuIHRoZSBzcGVjaWZpZWQga2V5LCBvciB1bmRlZmluZWQgaWYgdGhlcmUgaXMgbm9uZS5cclxuICAgICAqICBBbHNvLCBuZXh0SGlnaGVyS2V5KHVuZGVmaW5lZCkgcmV0dXJucyB0aGUgbG93ZXN0IGtleS5cclxuICAgICAqL1xyXG4gICAgQlRyZWUucHJvdG90eXBlLm5leHRIaWdoZXJLZXkgPSBmdW5jdGlvbiAoa2V5KSB7XHJcbiAgICAgICAgdmFyIHAgPSB0aGlzLm5leHRIaWdoZXJQYWlyKGtleSwgUmV1c2VkQXJyYXkpO1xyXG4gICAgICAgIHJldHVybiBwICYmIHBbMF07XHJcbiAgICB9O1xyXG4gICAgLyoqIFJldHVybnMgdGhlIG5leHQgcGFpciB3aG9zZSBrZXkgaXMgc21hbGxlciB0aGFuIHRoZSBzcGVjaWZpZWQga2V5IChvciB1bmRlZmluZWQgaWYgdGhlcmUgaXMgbm9uZSkuXHJcbiAgICAgKiAgSWYga2V5ID09PSB1bmRlZmluZWQsIHRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgaGlnaGVzdCBwYWlyLlxyXG4gICAgICogQHBhcmFtIGtleSBUaGUga2V5IHRvIHNlYXJjaCBmb3IuXHJcbiAgICAgKiBAcGFyYW0gcmV1c2VkQXJyYXkgT3B0aW9uYWwgYXJyYXkgdXNlZCByZXBlYXRlZGx5IHRvIHN0b3JlIGtleS12YWx1ZSBwYWlycywgdG9cclxuICAgICAqICAgICAgICBhdm9pZCBjcmVhdGluZyBhIG5ldyBhcnJheSBlYWNoIHRpbWUgeW91IGNhbGwgdGhpcyBtZXRob2QuXHJcbiAgICAgKi9cclxuICAgIEJUcmVlLnByb3RvdHlwZS5uZXh0TG93ZXJQYWlyID0gZnVuY3Rpb24gKGtleSwgcmV1c2VkQXJyYXkpIHtcclxuICAgICAgICByZXVzZWRBcnJheSA9IHJldXNlZEFycmF5IHx8IFtdO1xyXG4gICAgICAgIGlmIChrZXkgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fcm9vdC5tYXhQYWlyKHJldXNlZEFycmF5KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jvb3QuZ2V0UGFpck9yTmV4dExvd2VyKGtleSwgdGhpcy5fY29tcGFyZSwgZmFsc2UsIHJldXNlZEFycmF5KTtcclxuICAgIH07XHJcbiAgICAvKiogUmV0dXJucyB0aGUgbmV4dCBrZXkgc21hbGxlciB0aGFuIHRoZSBzcGVjaWZpZWQga2V5LCBvciB1bmRlZmluZWQgaWYgdGhlcmUgaXMgbm9uZS5cclxuICAgICAqICBBbHNvLCBuZXh0TG93ZXJLZXkodW5kZWZpbmVkKSByZXR1cm5zIHRoZSBoaWdoZXN0IGtleS5cclxuICAgICAqL1xyXG4gICAgQlRyZWUucHJvdG90eXBlLm5leHRMb3dlcktleSA9IGZ1bmN0aW9uIChrZXkpIHtcclxuICAgICAgICB2YXIgcCA9IHRoaXMubmV4dExvd2VyUGFpcihrZXksIFJldXNlZEFycmF5KTtcclxuICAgICAgICByZXR1cm4gcCAmJiBwWzBdO1xyXG4gICAgfTtcclxuICAgIC8qKiBSZXR1cm5zIHRoZSBrZXktdmFsdWUgcGFpciBhc3NvY2lhdGVkIHdpdGggdGhlIHN1cHBsaWVkIGtleSBpZiBpdCBleGlzdHNcclxuICAgICAqICBvciB0aGUgcGFpciBhc3NvY2lhdGVkIHdpdGggdGhlIG5leHQgbG93ZXIgcGFpciBvdGhlcndpc2UuIElmIHRoZXJlIGlzIG5vXHJcbiAgICAgKiAgbmV4dCBsb3dlciBwYWlyLCB1bmRlZmluZWQgaXMgcmV0dXJuZWQuXHJcbiAgICAgKiBAcGFyYW0ga2V5IFRoZSBrZXkgdG8gc2VhcmNoIGZvci5cclxuICAgICAqIEBwYXJhbSByZXVzZWRBcnJheSBPcHRpb25hbCBhcnJheSB1c2VkIHJlcGVhdGVkbHkgdG8gc3RvcmUga2V5LXZhbHVlIHBhaXJzLCB0b1xyXG4gICAgICogICAgICAgIGF2b2lkIGNyZWF0aW5nIGEgbmV3IGFycmF5IGVhY2ggdGltZSB5b3UgY2FsbCB0aGlzIG1ldGhvZC5cclxuICAgICAqICovXHJcbiAgICBCVHJlZS5wcm90b3R5cGUuZ2V0UGFpck9yTmV4dExvd2VyID0gZnVuY3Rpb24gKGtleSwgcmV1c2VkQXJyYXkpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fcm9vdC5nZXRQYWlyT3JOZXh0TG93ZXIoa2V5LCB0aGlzLl9jb21wYXJlLCB0cnVlLCByZXVzZWRBcnJheSB8fCBbXSk7XHJcbiAgICB9O1xyXG4gICAgLyoqIFJldHVybnMgdGhlIGtleS12YWx1ZSBwYWlyIGFzc29jaWF0ZWQgd2l0aCB0aGUgc3VwcGxpZWQga2V5IGlmIGl0IGV4aXN0c1xyXG4gICAgICogIG9yIHRoZSBwYWlyIGFzc29jaWF0ZWQgd2l0aCB0aGUgbmV4dCBsb3dlciBwYWlyIG90aGVyd2lzZS4gSWYgdGhlcmUgaXMgbm9cclxuICAgICAqICBuZXh0IGxvd2VyIHBhaXIsIHVuZGVmaW5lZCBpcyByZXR1cm5lZC5cclxuICAgICAqIEBwYXJhbSBrZXkgVGhlIGtleSB0byBzZWFyY2ggZm9yLlxyXG4gICAgICogQHBhcmFtIHJldXNlZEFycmF5IE9wdGlvbmFsIGFycmF5IHVzZWQgcmVwZWF0ZWRseSB0byBzdG9yZSBrZXktdmFsdWUgcGFpcnMsIHRvXHJcbiAgICAgKiAgICAgICAgYXZvaWQgY3JlYXRpbmcgYSBuZXcgYXJyYXkgZWFjaCB0aW1lIHlvdSBjYWxsIHRoaXMgbWV0aG9kLlxyXG4gICAgICogKi9cclxuICAgIEJUcmVlLnByb3RvdHlwZS5nZXRQYWlyT3JOZXh0SGlnaGVyID0gZnVuY3Rpb24gKGtleSwgcmV1c2VkQXJyYXkpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fcm9vdC5nZXRQYWlyT3JOZXh0SGlnaGVyKGtleSwgdGhpcy5fY29tcGFyZSwgdHJ1ZSwgcmV1c2VkQXJyYXkgfHwgW10pO1xyXG4gICAgfTtcclxuICAgIC8qKiBFZGl0cyB0aGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIGEga2V5IGluIHRoZSB0cmVlLCBpZiBpdCBhbHJlYWR5IGV4aXN0cy5cclxuICAgICAqIEByZXR1cm5zIHRydWUgaWYgdGhlIGtleSBleGlzdGVkLCBmYWxzZSBpZiBub3QuXHJcbiAgICAqL1xyXG4gICAgQlRyZWUucHJvdG90eXBlLmNoYW5nZUlmUHJlc2VudCA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZWRpdFJhbmdlKGtleSwga2V5LCB0cnVlLCBmdW5jdGlvbiAoaywgdikgeyByZXR1cm4gKHsgdmFsdWU6IHZhbHVlIH0pOyB9KSAhPT0gMDtcclxuICAgIH07XHJcbiAgICAvKipcclxuICAgICAqIEJ1aWxkcyBhbiBhcnJheSBvZiBwYWlycyBmcm9tIHRoZSBzcGVjaWZpZWQgcmFuZ2Ugb2Yga2V5cywgc29ydGVkIGJ5IGtleS5cclxuICAgICAqIEVhY2ggcmV0dXJuZWQgcGFpciBpcyBhbHNvIGFuIGFycmF5OiBwYWlyWzBdIGlzIHRoZSBrZXksIHBhaXJbMV0gaXMgdGhlIHZhbHVlLlxyXG4gICAgICogQHBhcmFtIGxvdyBUaGUgZmlyc3Qga2V5IGluIHRoZSBhcnJheSB3aWxsIGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBgbG93YC5cclxuICAgICAqIEBwYXJhbSBoaWdoIFRoaXMgbWV0aG9kIHJldHVybnMgd2hlbiBhIGtleSBsYXJnZXIgdGhhbiB0aGlzIGlzIHJlYWNoZWQuXHJcbiAgICAgKiBAcGFyYW0gaW5jbHVkZUhpZ2ggSWYgdGhlIGBoaWdoYCBrZXkgaXMgcHJlc2VudCwgaXRzIHBhaXIgd2lsbCBiZSBpbmNsdWRlZFxyXG4gICAgICogICAgICAgIGluIHRoZSBvdXRwdXQgaWYgYW5kIG9ubHkgaWYgdGhpcyBwYXJhbWV0ZXIgaXMgdHJ1ZS4gTm90ZTogaWYgdGhlXHJcbiAgICAgKiAgICAgICAgYGxvd2Aga2V5IGlzIHByZXNlbnQsIGl0IGlzIGFsd2F5cyBpbmNsdWRlZCBpbiB0aGUgb3V0cHV0LlxyXG4gICAgICogQHBhcmFtIG1heExlbmd0aCBMZW5ndGggbGltaXQuIGdldFJhbmdlIHdpbGwgc3RvcCBzY2FubmluZyB0aGUgdHJlZSB3aGVuXHJcbiAgICAgKiAgICAgICAgICAgICAgICAgIHRoZSBhcnJheSByZWFjaGVzIHRoaXMgc2l6ZS5cclxuICAgICAqIEBkZXNjcmlwdGlvbiBDb21wdXRhdGlvbmFsIGNvbXBsZXhpdHk6IE8ocmVzdWx0Lmxlbmd0aCArIGxvZyBzaXplKVxyXG4gICAgICovXHJcbiAgICBCVHJlZS5wcm90b3R5cGUuZ2V0UmFuZ2UgPSBmdW5jdGlvbiAobG93LCBoaWdoLCBpbmNsdWRlSGlnaCwgbWF4TGVuZ3RoKSB7XHJcbiAgICAgICAgaWYgKG1heExlbmd0aCA9PT0gdm9pZCAwKSB7IG1heExlbmd0aCA9IDB4M0ZGRkZGRjsgfVxyXG4gICAgICAgIHZhciByZXN1bHRzID0gW107XHJcbiAgICAgICAgdGhpcy5fcm9vdC5mb3JSYW5nZShsb3csIGhpZ2gsIGluY2x1ZGVIaWdoLCBmYWxzZSwgdGhpcywgMCwgZnVuY3Rpb24gKGssIHYpIHtcclxuICAgICAgICAgICAgcmVzdWx0cy5wdXNoKFtrLCB2XSk7XHJcbiAgICAgICAgICAgIHJldHVybiByZXN1bHRzLmxlbmd0aCA+IG1heExlbmd0aCA/IEJyZWFrIDogdW5kZWZpbmVkO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiByZXN1bHRzO1xyXG4gICAgfTtcclxuICAgIC8qKiBBZGRzIGFsbCBwYWlycyBmcm9tIGEgbGlzdCBvZiBrZXktdmFsdWUgcGFpcnMuXHJcbiAgICAgKiBAcGFyYW0gcGFpcnMgUGFpcnMgdG8gYWRkIHRvIHRoaXMgdHJlZS4gSWYgdGhlcmUgYXJlIGR1cGxpY2F0ZSBrZXlzLFxyXG4gICAgICogICAgICAgIGxhdGVyIHBhaXJzIGN1cnJlbnRseSBvdmVyd3JpdGUgZWFybGllciBvbmVzIChlLmcuIFtbMCwxXSxbMCw3XV1cclxuICAgICAqICAgICAgICBhc3NvY2lhdGVzIDAgd2l0aCA3LilcclxuICAgICAqIEBwYXJhbSBvdmVyd3JpdGUgV2hldGhlciB0byBvdmVyd3JpdGUgcGFpcnMgdGhhdCBhbHJlYWR5IGV4aXN0IChpZiBmYWxzZSxcclxuICAgICAqICAgICAgICBwYWlyc1tpXSBpcyBpZ25vcmVkIHdoZW4gdGhlIGtleSBwYWlyc1tpXVswXSBhbHJlYWR5IGV4aXN0cy4pXHJcbiAgICAgKiBAcmV0dXJucyBUaGUgbnVtYmVyIG9mIHBhaXJzIGFkZGVkIHRvIHRoZSBjb2xsZWN0aW9uLlxyXG4gICAgICogQGRlc2NyaXB0aW9uIENvbXB1dGF0aW9uYWwgY29tcGxleGl0eTogTyhwYWlycy5sZW5ndGggKiBsb2coc2l6ZSArIHBhaXJzLmxlbmd0aCkpXHJcbiAgICAgKi9cclxuICAgIEJUcmVlLnByb3RvdHlwZS5zZXRQYWlycyA9IGZ1bmN0aW9uIChwYWlycywgb3ZlcndyaXRlKSB7XHJcbiAgICAgICAgdmFyIGFkZGVkID0gMDtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhaXJzLmxlbmd0aDsgaSsrKVxyXG4gICAgICAgICAgICBpZiAodGhpcy5zZXQocGFpcnNbaV1bMF0sIHBhaXJzW2ldWzFdLCBvdmVyd3JpdGUpKVxyXG4gICAgICAgICAgICAgICAgYWRkZWQrKztcclxuICAgICAgICByZXR1cm4gYWRkZWQ7XHJcbiAgICB9O1xyXG4gICAgLyoqXHJcbiAgICAgKiBTY2FucyB0aGUgc3BlY2lmaWVkIHJhbmdlIG9mIGtleXMsIGluIGFzY2VuZGluZyBvcmRlciBieSBrZXkuXHJcbiAgICAgKiBOb3RlOiB0aGUgY2FsbGJhY2sgYG9uRm91bmRgIG11c3Qgbm90IGluc2VydCBvciByZW1vdmUgaXRlbXMgaW4gdGhlXHJcbiAgICAgKiBjb2xsZWN0aW9uLiBEb2luZyBzbyBtYXkgY2F1c2UgaW5jb3JyZWN0IGRhdGEgdG8gYmUgc2VudCB0byB0aGVcclxuICAgICAqIGNhbGxiYWNrIGFmdGVyd2FyZC5cclxuICAgICAqIEBwYXJhbSBsb3cgVGhlIGZpcnN0IGtleSBzY2FubmVkIHdpbGwgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIGBsb3dgLlxyXG4gICAgICogQHBhcmFtIGhpZ2ggU2Nhbm5pbmcgc3RvcHMgd2hlbiBhIGtleSBsYXJnZXIgdGhhbiB0aGlzIGlzIHJlYWNoZWQuXHJcbiAgICAgKiBAcGFyYW0gaW5jbHVkZUhpZ2ggSWYgdGhlIGBoaWdoYCBrZXkgaXMgcHJlc2VudCwgYG9uRm91bmRgIGlzIGNhbGxlZCBmb3JcclxuICAgICAqICAgICAgICB0aGF0IGZpbmFsIHBhaXIgaWYgYW5kIG9ubHkgaWYgdGhpcyBwYXJhbWV0ZXIgaXMgdHJ1ZS5cclxuICAgICAqIEBwYXJhbSBvbkZvdW5kIEEgZnVuY3Rpb24gdGhhdCBpcyBjYWxsZWQgZm9yIGVhY2gga2V5LXZhbHVlIHBhaXIuIFRoaXNcclxuICAgICAqICAgICAgICBmdW5jdGlvbiBjYW4gcmV0dXJuIHticmVhazpSfSB0byBzdG9wIGVhcmx5IHdpdGggcmVzdWx0IFIuXHJcbiAgICAgKiBAcGFyYW0gaW5pdGlhbENvdW50ZXIgSW5pdGlhbCB0aGlyZCBhcmd1bWVudCBvZiBvbkZvdW5kLiBUaGlzIHZhbHVlXHJcbiAgICAgKiAgICAgICAgaW5jcmVhc2VzIGJ5IG9uZSBlYWNoIHRpbWUgYG9uRm91bmRgIGlzIGNhbGxlZC4gRGVmYXVsdDogMFxyXG4gICAgICogQHJldHVybnMgVGhlIG51bWJlciBvZiB2YWx1ZXMgZm91bmQsIG9yIFIgaWYgdGhlIGNhbGxiYWNrIHJldHVybmVkXHJcbiAgICAgKiAgICAgICAgYHticmVhazpSfWAgdG8gc3RvcCBlYXJseS5cclxuICAgICAqIEBkZXNjcmlwdGlvbiBDb21wdXRhdGlvbmFsIGNvbXBsZXhpdHk6IE8obnVtYmVyIG9mIGl0ZW1zIHNjYW5uZWQgKyBsb2cgc2l6ZSlcclxuICAgICAqL1xyXG4gICAgQlRyZWUucHJvdG90eXBlLmZvclJhbmdlID0gZnVuY3Rpb24gKGxvdywgaGlnaCwgaW5jbHVkZUhpZ2gsIG9uRm91bmQsIGluaXRpYWxDb3VudGVyKSB7XHJcbiAgICAgICAgdmFyIHIgPSB0aGlzLl9yb290LmZvclJhbmdlKGxvdywgaGlnaCwgaW5jbHVkZUhpZ2gsIGZhbHNlLCB0aGlzLCBpbml0aWFsQ291bnRlciB8fCAwLCBvbkZvdW5kKTtcclxuICAgICAgICByZXR1cm4gdHlwZW9mIHIgPT09IFwibnVtYmVyXCIgPyByIDogci5icmVhaztcclxuICAgIH07XHJcbiAgICAvKipcclxuICAgICAqIFNjYW5zIGFuZCBwb3RlbnRpYWxseSBtb2RpZmllcyB2YWx1ZXMgZm9yIGEgc3Vic2VxdWVuY2Ugb2Yga2V5cy5cclxuICAgICAqIE5vdGU6IHRoZSBjYWxsYmFjayBgb25Gb3VuZGAgc2hvdWxkIGlkZWFsbHkgYmUgYSBwdXJlIGZ1bmN0aW9uLlxyXG4gICAgICogICBTcGVjZmljYWxseSwgaXQgbXVzdCBub3QgaW5zZXJ0IGl0ZW1zLCBjYWxsIGNsb25lKCksIG9yIGNoYW5nZVxyXG4gICAgICogICB0aGUgY29sbGVjdGlvbiBleGNlcHQgdmlhIHJldHVybiB2YWx1ZTsgb3V0LW9mLWJhbmQgZWRpdGluZyBtYXlcclxuICAgICAqICAgY2F1c2UgYW4gZXhjZXB0aW9uIG9yIG1heSBjYXVzZSBpbmNvcnJlY3QgZGF0YSB0byBiZSBzZW50IHRvXHJcbiAgICAgKiAgIHRoZSBjYWxsYmFjayAoZHVwbGljYXRlIG9yIG1pc3NlZCBpdGVtcykuIEl0IG11c3Qgbm90IGNhdXNlIGFcclxuICAgICAqICAgY2xvbmUoKSBvZiB0aGUgY29sbGVjdGlvbiwgb3RoZXJ3aXNlIHRoZSBjbG9uZSBjb3VsZCBiZSBtb2RpZmllZFxyXG4gICAgICogICBieSBjaGFuZ2VzIHJlcXVlc3RlZCBieSB0aGUgY2FsbGJhY2suXHJcbiAgICAgKiBAcGFyYW0gbG93IFRoZSBmaXJzdCBrZXkgc2Nhbm5lZCB3aWxsIGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBgbG93YC5cclxuICAgICAqIEBwYXJhbSBoaWdoIFNjYW5uaW5nIHN0b3BzIHdoZW4gYSBrZXkgbGFyZ2VyIHRoYW4gdGhpcyBpcyByZWFjaGVkLlxyXG4gICAgICogQHBhcmFtIGluY2x1ZGVIaWdoIElmIHRoZSBgaGlnaGAga2V5IGlzIHByZXNlbnQsIGBvbkZvdW5kYCBpcyBjYWxsZWQgZm9yXHJcbiAgICAgKiAgICAgICAgdGhhdCBmaW5hbCBwYWlyIGlmIGFuZCBvbmx5IGlmIHRoaXMgcGFyYW1ldGVyIGlzIHRydWUuXHJcbiAgICAgKiBAcGFyYW0gb25Gb3VuZCBBIGZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIGZvciBlYWNoIGtleS12YWx1ZSBwYWlyLiBUaGlzXHJcbiAgICAgKiAgICAgICAgZnVuY3Rpb24gY2FuIHJldHVybiBge3ZhbHVlOnZ9YCB0byBjaGFuZ2UgdGhlIHZhbHVlIGFzc29jaWF0ZWRcclxuICAgICAqICAgICAgICB3aXRoIHRoZSBjdXJyZW50IGtleSwgYHtkZWxldGU6dHJ1ZX1gIHRvIGRlbGV0ZSB0aGUgY3VycmVudCBwYWlyLFxyXG4gICAgICogICAgICAgIGB7YnJlYWs6Un1gIHRvIHN0b3AgZWFybHkgd2l0aCByZXN1bHQgUiwgb3IgaXQgY2FuIHJldHVybiBub3RoaW5nXHJcbiAgICAgKiAgICAgICAgKHVuZGVmaW5lZCBvciB7fSkgdG8gY2F1c2Ugbm8gZWZmZWN0IGFuZCBjb250aW51ZSBpdGVyYXRpbmcuXHJcbiAgICAgKiAgICAgICAgYHticmVhazpSfWAgY2FuIGJlIGNvbWJpbmVkIHdpdGggb25lIG9mIHRoZSBvdGhlciB0d28gY29tbWFuZHMuXHJcbiAgICAgKiAgICAgICAgVGhlIHRoaXJkIGFyZ3VtZW50IGBjb3VudGVyYCBpcyB0aGUgbnVtYmVyIG9mIGl0ZW1zIGl0ZXJhdGVkXHJcbiAgICAgKiAgICAgICAgcHJldmlvdXNseTsgaXQgZXF1YWxzIDAgd2hlbiBgb25Gb3VuZGAgaXMgY2FsbGVkIHRoZSBmaXJzdCB0aW1lLlxyXG4gICAgICogQHJldHVybnMgVGhlIG51bWJlciBvZiB2YWx1ZXMgc2Nhbm5lZCwgb3IgUiBpZiB0aGUgY2FsbGJhY2sgcmV0dXJuZWRcclxuICAgICAqICAgICAgICBge2JyZWFrOlJ9YCB0byBzdG9wIGVhcmx5LlxyXG4gICAgICogQGRlc2NyaXB0aW9uXHJcbiAgICAgKiAgIENvbXB1dGF0aW9uYWwgY29tcGxleGl0eTogTyhudW1iZXIgb2YgaXRlbXMgc2Nhbm5lZCArIGxvZyBzaXplKVxyXG4gICAgICogICBOb3RlOiBpZiB0aGUgdHJlZSBoYXMgYmVlbiBjbG9uZWQgd2l0aCBjbG9uZSgpLCBhbnkgc2hhcmVkXHJcbiAgICAgKiAgIG5vZGVzIGFyZSBjb3BpZWQgYmVmb3JlIGBvbkZvdW5kYCBpcyBjYWxsZWQuIFRoaXMgdGFrZXMgTyhuKSB0aW1lXHJcbiAgICAgKiAgIHdoZXJlIG4gaXMgcHJvcG9ydGlvbmFsIHRvIHRoZSBhbW91bnQgb2Ygc2hhcmVkIGRhdGEgc2Nhbm5lZC5cclxuICAgICAqL1xyXG4gICAgQlRyZWUucHJvdG90eXBlLmVkaXRSYW5nZSA9IGZ1bmN0aW9uIChsb3csIGhpZ2gsIGluY2x1ZGVIaWdoLCBvbkZvdW5kLCBpbml0aWFsQ291bnRlcikge1xyXG4gICAgICAgIHZhciByb290ID0gdGhpcy5fcm9vdDtcclxuICAgICAgICBpZiAocm9vdC5pc1NoYXJlZClcclxuICAgICAgICAgICAgdGhpcy5fcm9vdCA9IHJvb3QgPSByb290LmNsb25lKCk7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgdmFyIHIgPSByb290LmZvclJhbmdlKGxvdywgaGlnaCwgaW5jbHVkZUhpZ2gsIHRydWUsIHRoaXMsIGluaXRpYWxDb3VudGVyIHx8IDAsIG9uRm91bmQpO1xyXG4gICAgICAgICAgICByZXR1cm4gdHlwZW9mIHIgPT09IFwibnVtYmVyXCIgPyByIDogci5icmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgZmluYWxseSB7XHJcbiAgICAgICAgICAgIHZhciBpc1NoYXJlZCA9IHZvaWQgMDtcclxuICAgICAgICAgICAgd2hpbGUgKHJvb3Qua2V5cy5sZW5ndGggPD0gMSAmJiAhcm9vdC5pc0xlYWYpIHtcclxuICAgICAgICAgICAgICAgIGlzU2hhcmVkIHx8IChpc1NoYXJlZCA9IHJvb3QuaXNTaGFyZWQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fcm9vdCA9IHJvb3QgPSByb290LmtleXMubGVuZ3RoID09PSAwID8gRW1wdHlMZWFmIDpcclxuICAgICAgICAgICAgICAgICAgICByb290LmNoaWxkcmVuWzBdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIElmIGFueSBhbmNlc3RvciBvZiB0aGUgbmV3IHJvb3Qgd2FzIHNoYXJlZCwgdGhlIG5ldyByb290IG11c3QgYWxzbyBiZSBzaGFyZWRcclxuICAgICAgICAgICAgaWYgKGlzU2hhcmVkKSB7XHJcbiAgICAgICAgICAgICAgICByb290LmlzU2hhcmVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICAvKiogU2FtZSBhcyBgZWRpdFJhbmdlYCBleGNlcHQgdGhhdCB0aGUgY2FsbGJhY2sgaXMgY2FsbGVkIGZvciBhbGwgcGFpcnMuICovXHJcbiAgICBCVHJlZS5wcm90b3R5cGUuZWRpdEFsbCA9IGZ1bmN0aW9uIChvbkZvdW5kLCBpbml0aWFsQ291bnRlcikge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmVkaXRSYW5nZSh0aGlzLm1pbktleSgpLCB0aGlzLm1heEtleSgpLCB0cnVlLCBvbkZvdW5kLCBpbml0aWFsQ291bnRlcik7XHJcbiAgICB9O1xyXG4gICAgLyoqXHJcbiAgICAgKiBSZW1vdmVzIGEgcmFuZ2Ugb2Yga2V5LXZhbHVlIHBhaXJzIGZyb20gdGhlIEIrIHRyZWUuXHJcbiAgICAgKiBAcGFyYW0gbG93IFRoZSBmaXJzdCBrZXkgc2Nhbm5lZCB3aWxsIGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBgbG93YC5cclxuICAgICAqIEBwYXJhbSBoaWdoIFNjYW5uaW5nIHN0b3BzIHdoZW4gYSBrZXkgbGFyZ2VyIHRoYW4gdGhpcyBpcyByZWFjaGVkLlxyXG4gICAgICogQHBhcmFtIGluY2x1ZGVIaWdoIFNwZWNpZmllcyB3aGV0aGVyIHRoZSBgaGlnaGAga2V5LCBpZiBwcmVzZW50LCBpcyBkZWxldGVkLlxyXG4gICAgICogQHJldHVybnMgVGhlIG51bWJlciBvZiBrZXktdmFsdWUgcGFpcnMgdGhhdCB3ZXJlIGRlbGV0ZWQuXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gQ29tcHV0YXRpb25hbCBjb21wbGV4aXR5OiBPKGxvZyBzaXplICsgbnVtYmVyIG9mIGl0ZW1zIGRlbGV0ZWQpXHJcbiAgICAgKi9cclxuICAgIEJUcmVlLnByb3RvdHlwZS5kZWxldGVSYW5nZSA9IGZ1bmN0aW9uIChsb3csIGhpZ2gsIGluY2x1ZGVIaWdoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZWRpdFJhbmdlKGxvdywgaGlnaCwgaW5jbHVkZUhpZ2gsIERlbGV0ZVJhbmdlKTtcclxuICAgIH07XHJcbiAgICAvKiogRGVsZXRlcyBhIHNlcmllcyBvZiBrZXlzIGZyb20gdGhlIGNvbGxlY3Rpb24uICovXHJcbiAgICBCVHJlZS5wcm90b3R5cGUuZGVsZXRlS2V5cyA9IGZ1bmN0aW9uIChrZXlzKSB7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHIgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKylcclxuICAgICAgICAgICAgaWYgKHRoaXMuZGVsZXRlKGtleXNbaV0pKVxyXG4gICAgICAgICAgICAgICAgcisrO1xyXG4gICAgICAgIHJldHVybiByO1xyXG4gICAgfTtcclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShCVHJlZS5wcm90b3R5cGUsIFwiaGVpZ2h0XCIsIHtcclxuICAgICAgICAvKiogR2V0cyB0aGUgaGVpZ2h0IG9mIHRoZSB0cmVlOiB0aGUgbnVtYmVyIG9mIGludGVybmFsIG5vZGVzIGJldHdlZW4gdGhlXHJcbiAgICAgICAgICogIEJUcmVlIG9iamVjdCBhbmQgaXRzIGxlYWYgbm9kZXMgKHplcm8gaWYgdGhlcmUgYXJlIG5vIGludGVybmFsIG5vZGVzKS4gKi9cclxuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgdmFyIG5vZGUgPSB0aGlzLl9yb290O1xyXG4gICAgICAgICAgICB2YXIgaGVpZ2h0ID0gLTE7XHJcbiAgICAgICAgICAgIHdoaWxlIChub2RlKSB7XHJcbiAgICAgICAgICAgICAgICBoZWlnaHQrKztcclxuICAgICAgICAgICAgICAgIG5vZGUgPSBub2RlLmlzTGVhZiA/IHVuZGVmaW5lZCA6IG5vZGUuY2hpbGRyZW5bMF07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIGhlaWdodDtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxyXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxyXG4gICAgfSk7XHJcbiAgICAvKiogTWFrZXMgdGhlIG9iamVjdCByZWFkLW9ubHkgdG8gZW5zdXJlIGl0IGlzIG5vdCBhY2NpZGVudGFsbHkgbW9kaWZpZWQuXHJcbiAgICAgKiAgRnJlZXppbmcgZG9lcyBub3QgaGF2ZSB0byBiZSBwZXJtYW5lbnQ7IHVuZnJlZXplKCkgcmV2ZXJzZXMgdGhlIGVmZmVjdC5cclxuICAgICAqICBUaGlzIGlzIGFjY29tcGxpc2hlZCBieSByZXBsYWNpbmcgbXV0YXRvciBmdW5jdGlvbnMgd2l0aCBhIGZ1bmN0aW9uXHJcbiAgICAgKiAgdGhhdCB0aHJvd3MgYW4gRXJyb3IuIENvbXBhcmVkIHRvIHVzaW5nIGEgcHJvcGVydHkgKGUuZy4gdGhpcy5pc0Zyb3plbilcclxuICAgICAqICB0aGlzIGltcGxlbWVudGF0aW9uIGdpdmVzIGJldHRlciBwZXJmb3JtYW5jZSBpbiBub24tZnJvemVuIEJUcmVlcy5cclxuICAgICAqL1xyXG4gICAgQlRyZWUucHJvdG90eXBlLmZyZWV6ZSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB2YXIgdCA9IHRoaXM7XHJcbiAgICAgICAgLy8gTm90ZTogYWxsIG90aGVyIG11dGF0b3JzIHVsdGltYXRlbHkgY2FsbCBzZXQoKSBvciBlZGl0UmFuZ2UoKSBcclxuICAgICAgICAvLyAgICAgICBzbyB3ZSBkb24ndCBuZWVkIHRvIG92ZXJyaWRlIHRob3NlIG90aGVycy5cclxuICAgICAgICB0LmNsZWFyID0gdC5zZXQgPSB0LmVkaXRSYW5nZSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQXR0ZW1wdGVkIHRvIG1vZGlmeSBhIGZyb3plbiBCVHJlZVwiKTtcclxuICAgICAgICB9O1xyXG4gICAgfTtcclxuICAgIC8qKiBFbnN1cmVzIG11dGF0aW9ucyBhcmUgYWxsb3dlZCwgcmV2ZXJzaW5nIHRoZSBlZmZlY3Qgb2YgZnJlZXplKCkuICovXHJcbiAgICBCVHJlZS5wcm90b3R5cGUudW5mcmVlemUgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZSBcIlRoZSBvcGVyYW5kIG9mIGEgJ2RlbGV0ZScgb3BlcmF0b3IgbXVzdCBiZSBvcHRpb25hbC5cIlxyXG4gICAgICAgIC8vICAgICAgICAgICAgKHdyb25nOiBkZWxldGUgZG9lcyBub3QgYWZmZWN0IHRoZSBwcm90b3R5cGUuKVxyXG4gICAgICAgIGRlbGV0ZSB0aGlzLmNsZWFyO1xyXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICBkZWxldGUgdGhpcy5zZXQ7XHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgIGRlbGV0ZSB0aGlzLmVkaXRSYW5nZTtcclxuICAgIH07XHJcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoQlRyZWUucHJvdG90eXBlLCBcImlzRnJvemVuXCIsIHtcclxuICAgICAgICAvKiogUmV0dXJucyB0cnVlIGlmIHRoZSB0cmVlIGFwcGVhcnMgdG8gYmUgZnJvemVuLiAqL1xyXG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5oYXNPd25Qcm9wZXJ0eSgnZWRpdFJhbmdlJyk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcclxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcclxuICAgIH0pO1xyXG4gICAgLyoqIFNjYW5zIHRoZSB0cmVlIGZvciBzaWducyBvZiBzZXJpb3VzIGJ1Z3MgKGUuZy4gdGhpcy5zaXplIGRvZXNuJ3QgbWF0Y2hcclxuICAgICAqICBudW1iZXIgb2YgZWxlbWVudHMsIGludGVybmFsIG5vZGVzIG5vdCBjYWNoaW5nIG1heCBlbGVtZW50IHByb3Blcmx5Li4uKVxyXG4gICAgICogIENvbXB1dGF0aW9uYWwgY29tcGxleGl0eTogTyhudW1iZXIgb2Ygbm9kZXMpLCBpLmUuIE8oc2l6ZSkuIFRoaXMgbWV0aG9kXHJcbiAgICAgKiAgc2tpcHMgdGhlIG1vc3QgZXhwZW5zaXZlIHRlc3QgLSB3aGV0aGVyIGFsbCBrZXlzIGFyZSBzb3J0ZWQgLSBidXQgaXRcclxuICAgICAqICBkb2VzIGNoZWNrIHRoYXQgbWF4S2V5KCkgb2YgdGhlIGNoaWxkcmVuIG9mIGludGVybmFsIG5vZGVzIGFyZSBzb3J0ZWQuICovXHJcbiAgICBCVHJlZS5wcm90b3R5cGUuY2hlY2tWYWxpZCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB2YXIgc2l6ZSA9IHRoaXMuX3Jvb3QuY2hlY2tWYWxpZCgwLCB0aGlzLCAwKTtcclxuICAgICAgICBjaGVjayhzaXplID09PSB0aGlzLnNpemUsIFwic2l6ZSBtaXNtYXRjaDogY291bnRlZCBcIiwgc2l6ZSwgXCJidXQgc3RvcmVkXCIsIHRoaXMuc2l6ZSk7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIEJUcmVlO1xyXG59KCkpO1xyXG5leHBvcnRzLmRlZmF1bHQgPSBCVHJlZTtcclxuLyoqIEEgVHlwZVNjcmlwdCBoZWxwZXIgZnVuY3Rpb24gdGhhdCBzaW1wbHkgcmV0dXJucyBpdHMgYXJndW1lbnQsIHR5cGVkIGFzXHJcbiAqICBgSVNvcnRlZFNldDxLPmAgaWYgdGhlIEJUcmVlIGltcGxlbWVudHMgaXQsIGFzIGl0IGRvZXMgaWYgYFYgZXh0ZW5kcyB1bmRlZmluZWRgLlxyXG4gKiAgSWYgYFZgIGNhbm5vdCBiZSBgdW5kZWZpbmVkYCwgaXQgcmV0dXJucyBgdW5rbm93bmAgaW5zdGVhZC4gT3IgYXQgbGVhc3QsIHRoYXRcclxuICogIHdhcyB0aGUgaW50ZW50aW9uLCBidXQgVHlwZVNjcmlwdCBpcyBhY3Rpbmcgd2VpcmQgYW5kIG1heSByZXR1cm4gYElTb3J0ZWRTZXQ8Sz5gXHJcbiAqICBldmVuIGlmIGBWYCBjYW4ndCBiZSBgdW5kZWZpbmVkYCAoZGlzY3Vzc2lvbjogYnRyZWUtdHlwZXNjcmlwdCBpc3N1ZSAjMTQpICovXHJcbmZ1bmN0aW9uIGFzU2V0KGJ0cmVlKSB7XHJcbiAgICByZXR1cm4gYnRyZWU7XHJcbn1cclxuZXhwb3J0cy5hc1NldCA9IGFzU2V0O1xyXG5pZiAoU3ltYm9sICYmIFN5bWJvbC5pdGVyYXRvcikgLy8gaXRlcmF0b3IgaXMgZXF1aXZhbGVudCB0byBlbnRyaWVzKClcclxuICAgIEJUcmVlLnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdID0gQlRyZWUucHJvdG90eXBlLmVudHJpZXM7XHJcbkJUcmVlLnByb3RvdHlwZS53aGVyZSA9IEJUcmVlLnByb3RvdHlwZS5maWx0ZXI7XHJcbkJUcmVlLnByb3RvdHlwZS5zZXRSYW5nZSA9IEJUcmVlLnByb3RvdHlwZS5zZXRQYWlycztcclxuQlRyZWUucHJvdG90eXBlLmFkZCA9IEJUcmVlLnByb3RvdHlwZS5zZXQ7IC8vIGZvciBjb21wYXRpYmlsaXR5IHdpdGggSVNldFNpbms8Sz5cclxuZnVuY3Rpb24gaXRlcmF0b3IobmV4dCkge1xyXG4gICAgaWYgKG5leHQgPT09IHZvaWQgMCkgeyBuZXh0ID0gKGZ1bmN0aW9uICgpIHsgcmV0dXJuICh7IGRvbmU6IHRydWUsIHZhbHVlOiB1bmRlZmluZWQgfSk7IH0pOyB9XHJcbiAgICB2YXIgcmVzdWx0ID0geyBuZXh0OiBuZXh0IH07XHJcbiAgICBpZiAoU3ltYm9sICYmIFN5bWJvbC5pdGVyYXRvcilcclxuICAgICAgICByZXN1bHRbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH07XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG59XHJcbi8qKiBMZWFmIG5vZGUgLyBiYXNlIGNsYXNzLiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cclxudmFyIEJOb2RlID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gQk5vZGUoa2V5cywgdmFsdWVzKSB7XHJcbiAgICAgICAgaWYgKGtleXMgPT09IHZvaWQgMCkgeyBrZXlzID0gW107IH1cclxuICAgICAgICB0aGlzLmtleXMgPSBrZXlzO1xyXG4gICAgICAgIHRoaXMudmFsdWVzID0gdmFsdWVzIHx8IHVuZGVmVmFscztcclxuICAgICAgICB0aGlzLmlzU2hhcmVkID0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEJOb2RlLnByb3RvdHlwZSwgXCJpc0xlYWZcIiwge1xyXG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5jaGlsZHJlbiA9PT0gdW5kZWZpbmVkOyB9LFxyXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxyXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxyXG4gICAgfSk7XHJcbiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuICAgIC8vIFNoYXJlZCBtZXRob2RzIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG4gICAgQk5vZGUucHJvdG90eXBlLm1heEtleSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5rZXlzW3RoaXMua2V5cy5sZW5ndGggLSAxXTtcclxuICAgIH07XHJcbiAgICAvLyBJZiBrZXkgbm90IGZvdW5kLCByZXR1cm5zIGleZmFpbFhvciB3aGVyZSBpIGlzIHRoZSBpbnNlcnRpb24gaW5kZXguXHJcbiAgICAvLyBDYWxsZXJzIHRoYXQgZG9uJ3QgY2FyZSB3aGV0aGVyIHRoZXJlIHdhcyBhIG1hdGNoIHdpbGwgc2V0IGZhaWxYb3I9MC5cclxuICAgIEJOb2RlLnByb3RvdHlwZS5pbmRleE9mID0gZnVuY3Rpb24gKGtleSwgZmFpbFhvciwgY21wKSB7XHJcbiAgICAgICAgdmFyIGtleXMgPSB0aGlzLmtleXM7XHJcbiAgICAgICAgdmFyIGxvID0gMCwgaGkgPSBrZXlzLmxlbmd0aCwgbWlkID0gaGkgPj4gMTtcclxuICAgICAgICB3aGlsZSAobG8gPCBoaSkge1xyXG4gICAgICAgICAgICB2YXIgYyA9IGNtcChrZXlzW21pZF0sIGtleSk7XHJcbiAgICAgICAgICAgIGlmIChjIDwgMClcclxuICAgICAgICAgICAgICAgIGxvID0gbWlkICsgMTtcclxuICAgICAgICAgICAgZWxzZSBpZiAoYyA+IDApIC8vIGtleSA8IGtleXNbbWlkXVxyXG4gICAgICAgICAgICAgICAgaGkgPSBtaWQ7XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGMgPT09IDApXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbWlkO1xyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIGMgaXMgTmFOIG9yIG90aGVyd2lzZSBpbnZhbGlkXHJcbiAgICAgICAgICAgICAgICBpZiAoa2V5ID09PSBrZXkpIC8vIGF0IGxlYXN0IHRoZSBzZWFyY2gga2V5IGlzIG5vdCBOYU5cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ga2V5cy5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQlRyZWU6IE5hTiB3YXMgdXNlZCBhcyBhIGtleVwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBtaWQgPSAobG8gKyBoaSkgPj4gMTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG1pZCBeIGZhaWxYb3I7XHJcbiAgICAgICAgLy8gVW5yb2xsZWQgdmVyc2lvbjogYmVuY2htYXJrcyBzaG93IHNhbWUgc3BlZWQsIG5vdCB3b3J0aCB1c2luZ1xyXG4gICAgICAgIC8qdmFyIGkgPSAxLCBjOiBudW1iZXIgPSAwLCBzdW0gPSAwO1xyXG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA+PSA0KSB7XHJcbiAgICAgICAgICBpID0gMztcclxuICAgICAgICAgIGlmIChrZXlzLmxlbmd0aCA+PSA4KSB7XHJcbiAgICAgICAgICAgIGkgPSA3O1xyXG4gICAgICAgICAgICBpZiAoa2V5cy5sZW5ndGggPj0gMTYpIHtcclxuICAgICAgICAgICAgICBpID0gMTU7XHJcbiAgICAgICAgICAgICAgaWYgKGtleXMubGVuZ3RoID49IDMyKSB7XHJcbiAgICAgICAgICAgICAgICBpID0gMzE7XHJcbiAgICAgICAgICAgICAgICBpZiAoa2V5cy5sZW5ndGggPj0gNjQpIHtcclxuICAgICAgICAgICAgICAgICAgaSA9IDEyNztcclxuICAgICAgICAgICAgICAgICAgaSArPSAoYyA9IGkgPCBrZXlzLmxlbmd0aCA/IGNtcChrZXlzW2ldLCBrZXkpIDogMSkgPCAwID8gNjQgOiAtNjQ7XHJcbiAgICAgICAgICAgICAgICAgIHN1bSArPSBjO1xyXG4gICAgICAgICAgICAgICAgICBpICs9IChjID0gaSA8IGtleXMubGVuZ3RoID8gY21wKGtleXNbaV0sIGtleSkgOiAxKSA8IDAgPyAzMiA6IC0zMjtcclxuICAgICAgICAgICAgICAgICAgc3VtICs9IGM7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpICs9IChjID0gaSA8IGtleXMubGVuZ3RoID8gY21wKGtleXNbaV0sIGtleSkgOiAxKSA8IDAgPyAxNiA6IC0xNjtcclxuICAgICAgICAgICAgICAgIHN1bSArPSBjO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpICs9IChjID0gaSA8IGtleXMubGVuZ3RoID8gY21wKGtleXNbaV0sIGtleSkgOiAxKSA8IDAgPyA4IDogLTg7XHJcbiAgICAgICAgICAgICAgc3VtICs9IGM7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaSArPSAoYyA9IGkgPCBrZXlzLmxlbmd0aCA/IGNtcChrZXlzW2ldLCBrZXkpIDogMSkgPCAwID8gNCA6IC00O1xyXG4gICAgICAgICAgICBzdW0gKz0gYztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGkgKz0gKGMgPSBpIDwga2V5cy5sZW5ndGggPyBjbXAoa2V5c1tpXSwga2V5KSA6IDEpIDwgMCA/IDIgOiAtMjtcclxuICAgICAgICAgIHN1bSArPSBjO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpICs9IChjID0gaSA8IGtleXMubGVuZ3RoID8gY21wKGtleXNbaV0sIGtleSkgOiAxKSA8IDAgPyAxIDogLTE7XHJcbiAgICAgICAgYyA9IGkgPCBrZXlzLmxlbmd0aCA/IGNtcChrZXlzW2ldLCBrZXkpIDogMTtcclxuICAgICAgICBzdW0gKz0gYztcclxuICAgICAgICBpZiAoYyA8IDApIHtcclxuICAgICAgICAgICsraTtcclxuICAgICAgICAgIGMgPSBpIDwga2V5cy5sZW5ndGggPyBjbXAoa2V5c1tpXSwga2V5KSA6IDE7XHJcbiAgICAgICAgICBzdW0gKz0gYztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHN1bSAhPT0gc3VtKSB7XHJcbiAgICAgICAgICBpZiAoa2V5ID09PSBrZXkpIC8vIGF0IGxlYXN0IHRoZSBzZWFyY2gga2V5IGlzIG5vdCBOYU5cclxuICAgICAgICAgICAgcmV0dXJuIGtleXMubGVuZ3RoIF4gZmFpbFhvcjtcclxuICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQlRyZWU6IE5hTiB3YXMgdXNlZCBhcyBhIGtleVwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGMgPT09IDAgPyBpIDogaSBeIGZhaWxYb3I7Ki9cclxuICAgIH07XHJcbiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG4gICAgLy8gTGVhZiBOb2RlOiBtaXNjIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuICAgIEJOb2RlLnByb3RvdHlwZS5taW5LZXkgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMua2V5c1swXTtcclxuICAgIH07XHJcbiAgICBCTm9kZS5wcm90b3R5cGUubWluUGFpciA9IGZ1bmN0aW9uIChyZXVzZWRBcnJheSkge1xyXG4gICAgICAgIGlmICh0aGlzLmtleXMubGVuZ3RoID09PSAwKVxyXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgIHJldXNlZEFycmF5WzBdID0gdGhpcy5rZXlzWzBdO1xyXG4gICAgICAgIHJldXNlZEFycmF5WzFdID0gdGhpcy52YWx1ZXNbMF07XHJcbiAgICAgICAgcmV0dXJuIHJldXNlZEFycmF5O1xyXG4gICAgfTtcclxuICAgIEJOb2RlLnByb3RvdHlwZS5tYXhQYWlyID0gZnVuY3Rpb24gKHJldXNlZEFycmF5KSB7XHJcbiAgICAgICAgaWYgKHRoaXMua2V5cy5sZW5ndGggPT09IDApXHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgdmFyIGxhc3RJbmRleCA9IHRoaXMua2V5cy5sZW5ndGggLSAxO1xyXG4gICAgICAgIHJldXNlZEFycmF5WzBdID0gdGhpcy5rZXlzW2xhc3RJbmRleF07XHJcbiAgICAgICAgcmV1c2VkQXJyYXlbMV0gPSB0aGlzLnZhbHVlc1tsYXN0SW5kZXhdO1xyXG4gICAgICAgIHJldHVybiByZXVzZWRBcnJheTtcclxuICAgIH07XHJcbiAgICBCTm9kZS5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdmFyIHYgPSB0aGlzLnZhbHVlcztcclxuICAgICAgICByZXR1cm4gbmV3IEJOb2RlKHRoaXMua2V5cy5zbGljZSgwKSwgdiA9PT0gdW5kZWZWYWxzID8gdiA6IHYuc2xpY2UoMCkpO1xyXG4gICAgfTtcclxuICAgIEJOb2RlLnByb3RvdHlwZS5ncmVlZHlDbG9uZSA9IGZ1bmN0aW9uIChmb3JjZSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmlzU2hhcmVkICYmICFmb3JjZSA/IHRoaXMgOiB0aGlzLmNsb25lKCk7XHJcbiAgICB9O1xyXG4gICAgQk5vZGUucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIChrZXksIGRlZmF1bHRWYWx1ZSwgdHJlZSkge1xyXG4gICAgICAgIHZhciBpID0gdGhpcy5pbmRleE9mKGtleSwgLTEsIHRyZWUuX2NvbXBhcmUpO1xyXG4gICAgICAgIHJldHVybiBpIDwgMCA/IGRlZmF1bHRWYWx1ZSA6IHRoaXMudmFsdWVzW2ldO1xyXG4gICAgfTtcclxuICAgIEJOb2RlLnByb3RvdHlwZS5nZXRQYWlyT3JOZXh0TG93ZXIgPSBmdW5jdGlvbiAoa2V5LCBjb21wYXJlLCBpbmNsdXNpdmUsIHJldXNlZEFycmF5KSB7XHJcbiAgICAgICAgdmFyIGkgPSB0aGlzLmluZGV4T2Yoa2V5LCAtMSwgY29tcGFyZSk7XHJcbiAgICAgICAgdmFyIGluZGV4T3JMb3dlciA9IGkgPCAwID8gfmkgLSAxIDogKGluY2x1c2l2ZSA/IGkgOiBpIC0gMSk7XHJcbiAgICAgICAgaWYgKGluZGV4T3JMb3dlciA+PSAwKSB7XHJcbiAgICAgICAgICAgIHJldXNlZEFycmF5WzBdID0gdGhpcy5rZXlzW2luZGV4T3JMb3dlcl07XHJcbiAgICAgICAgICAgIHJldXNlZEFycmF5WzFdID0gdGhpcy52YWx1ZXNbaW5kZXhPckxvd2VyXTtcclxuICAgICAgICAgICAgcmV0dXJuIHJldXNlZEFycmF5O1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgfTtcclxuICAgIEJOb2RlLnByb3RvdHlwZS5nZXRQYWlyT3JOZXh0SGlnaGVyID0gZnVuY3Rpb24gKGtleSwgY29tcGFyZSwgaW5jbHVzaXZlLCByZXVzZWRBcnJheSkge1xyXG4gICAgICAgIHZhciBpID0gdGhpcy5pbmRleE9mKGtleSwgLTEsIGNvbXBhcmUpO1xyXG4gICAgICAgIHZhciBpbmRleE9yTG93ZXIgPSBpIDwgMCA/IH5pIDogKGluY2x1c2l2ZSA/IGkgOiBpICsgMSk7XHJcbiAgICAgICAgdmFyIGtleXMgPSB0aGlzLmtleXM7XHJcbiAgICAgICAgaWYgKGluZGV4T3JMb3dlciA8IGtleXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHJldXNlZEFycmF5WzBdID0ga2V5c1tpbmRleE9yTG93ZXJdO1xyXG4gICAgICAgICAgICByZXVzZWRBcnJheVsxXSA9IHRoaXMudmFsdWVzW2luZGV4T3JMb3dlcl07XHJcbiAgICAgICAgICAgIHJldHVybiByZXVzZWRBcnJheTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIH07XHJcbiAgICBCTm9kZS5wcm90b3R5cGUuY2hlY2tWYWxpZCA9IGZ1bmN0aW9uIChkZXB0aCwgdHJlZSwgYmFzZUluZGV4KSB7XHJcbiAgICAgICAgdmFyIGtMID0gdGhpcy5rZXlzLmxlbmd0aCwgdkwgPSB0aGlzLnZhbHVlcy5sZW5ndGg7XHJcbiAgICAgICAgY2hlY2sodGhpcy52YWx1ZXMgPT09IHVuZGVmVmFscyA/IGtMIDw9IHZMIDoga0wgPT09IHZMLCBcImtleXMvdmFsdWVzIGxlbmd0aCBtaXNtYXRjaDogZGVwdGhcIiwgZGVwdGgsIFwid2l0aCBsZW5ndGhzXCIsIGtMLCB2TCwgXCJhbmQgYmFzZUluZGV4XCIsIGJhc2VJbmRleCk7XHJcbiAgICAgICAgLy8gTm90ZTogd2UgZG9uJ3QgY2hlY2sgZm9yIFwibm9kZSB0b28gc21hbGxcIiBiZWNhdXNlIHNvbWV0aW1lcyBhIG5vZGVcclxuICAgICAgICAvLyBjYW4gbGVnaXRpbWF0ZWx5IGhhdmUgc2l6ZSAxLiBUaGlzIG9jY3VycyBpZiB0aGVyZSBpcyBhIGJhdGNoIFxyXG4gICAgICAgIC8vIGRlbGV0aW9uLCBsZWF2aW5nIGEgbm9kZSBvZiBzaXplIDEsIGFuZCB0aGUgc2libGluZ3MgYXJlIGZ1bGwgc29cclxuICAgICAgICAvLyBpdCBjYW4ndCBiZSBtZXJnZWQgd2l0aCBhZGphY2VudCBub2Rlcy4gSG93ZXZlciwgdGhlIHBhcmVudCB3aWxsXHJcbiAgICAgICAgLy8gdmVyaWZ5IHRoYXQgdGhlIGF2ZXJhZ2Ugbm9kZSBzaXplIGlzIGF0IGxlYXN0IGhhbGYgb2YgdGhlIG1heGltdW0uXHJcbiAgICAgICAgY2hlY2soZGVwdGggPT0gMCB8fCBrTCA+IDAsIFwiZW1wdHkgbGVhZiBhdCBkZXB0aFwiLCBkZXB0aCwgXCJhbmQgYmFzZUluZGV4XCIsIGJhc2VJbmRleCk7XHJcbiAgICAgICAgcmV0dXJuIGtMO1xyXG4gICAgfTtcclxuICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbiAgICAvLyBMZWFmIE5vZGU6IHNldCAmIG5vZGUgc3BsaXR0aW5nIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG4gICAgQk5vZGUucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uIChrZXksIHZhbHVlLCBvdmVyd3JpdGUsIHRyZWUpIHtcclxuICAgICAgICB2YXIgaSA9IHRoaXMuaW5kZXhPZihrZXksIC0xLCB0cmVlLl9jb21wYXJlKTtcclxuICAgICAgICBpZiAoaSA8IDApIHtcclxuICAgICAgICAgICAgLy8ga2V5IGRvZXMgbm90IGV4aXN0IHlldFxyXG4gICAgICAgICAgICBpID0gfmk7XHJcbiAgICAgICAgICAgIHRyZWUuX3NpemUrKztcclxuICAgICAgICAgICAgaWYgKHRoaXMua2V5cy5sZW5ndGggPCB0cmVlLl9tYXhOb2RlU2l6ZSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaW5zZXJ0SW5MZWFmKGksIGtleSwgdmFsdWUsIHRyZWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gVGhpcyBsZWFmIG5vZGUgaXMgZnVsbCBhbmQgbXVzdCBzcGxpdFxyXG4gICAgICAgICAgICAgICAgdmFyIG5ld1JpZ2h0U2libGluZyA9IHRoaXMuc3BsaXRPZmZSaWdodFNpZGUoKSwgdGFyZ2V0ID0gdGhpcztcclxuICAgICAgICAgICAgICAgIGlmIChpID4gdGhpcy5rZXlzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGkgLT0gdGhpcy5rZXlzLmxlbmd0aDtcclxuICAgICAgICAgICAgICAgICAgICB0YXJnZXQgPSBuZXdSaWdodFNpYmxpbmc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0YXJnZXQuaW5zZXJ0SW5MZWFmKGksIGtleSwgdmFsdWUsIHRyZWUpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ld1JpZ2h0U2libGluZztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgLy8gS2V5IGFscmVhZHkgZXhpc3RzXHJcbiAgICAgICAgICAgIGlmIChvdmVyd3JpdGUgIT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZClcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlaWZ5VmFsdWVzKCk7XHJcbiAgICAgICAgICAgICAgICAvLyB1c3VhbGx5IHRoaXMgaXMgYSBuby1vcCwgYnV0IHNvbWUgdXNlcnMgbWF5IHdpc2ggdG8gZWRpdCB0aGUga2V5XHJcbiAgICAgICAgICAgICAgICB0aGlzLmtleXNbaV0gPSBrZXk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlc1tpXSA9IHZhbHVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgQk5vZGUucHJvdG90eXBlLnJlaWZ5VmFsdWVzID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGlmICh0aGlzLnZhbHVlcyA9PT0gdW5kZWZWYWxzKVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy52YWx1ZXMgPSB0aGlzLnZhbHVlcy5zbGljZSgwLCB0aGlzLmtleXMubGVuZ3RoKTtcclxuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZXM7XHJcbiAgICB9O1xyXG4gICAgQk5vZGUucHJvdG90eXBlLmluc2VydEluTGVhZiA9IGZ1bmN0aW9uIChpLCBrZXksIHZhbHVlLCB0cmVlKSB7XHJcbiAgICAgICAgdGhpcy5rZXlzLnNwbGljZShpLCAwLCBrZXkpO1xyXG4gICAgICAgIGlmICh0aGlzLnZhbHVlcyA9PT0gdW5kZWZWYWxzKSB7XHJcbiAgICAgICAgICAgIHdoaWxlICh1bmRlZlZhbHMubGVuZ3RoIDwgdHJlZS5fbWF4Tm9kZVNpemUpXHJcbiAgICAgICAgICAgICAgICB1bmRlZlZhbHMucHVzaCh1bmRlZmluZWQpO1xyXG4gICAgICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlcyA9IHVuZGVmVmFscy5zbGljZSgwLCB0aGlzLmtleXMubGVuZ3RoIC0gMSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy52YWx1ZXMuc3BsaWNlKGksIDAsIHZhbHVlKTtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH07XHJcbiAgICBCTm9kZS5wcm90b3R5cGUudGFrZUZyb21SaWdodCA9IGZ1bmN0aW9uIChyaHMpIHtcclxuICAgICAgICAvLyBSZW1pbmRlcjogcGFyZW50IG5vZGUgbXVzdCB1cGRhdGUgaXRzIGNvcHkgb2Yga2V5IGZvciB0aGlzIG5vZGVcclxuICAgICAgICAvLyBhc3NlcnQ6IG5laXRoZXIgbm9kZSBpcyBzaGFyZWRcclxuICAgICAgICAvLyBhc3NlcnQgcmhzLmtleXMubGVuZ3RoID4gKG1heE5vZGVTaXplLzIgJiYgdGhpcy5rZXlzLmxlbmd0aDxtYXhOb2RlU2l6ZSlcclxuICAgICAgICB2YXIgdiA9IHRoaXMudmFsdWVzO1xyXG4gICAgICAgIGlmIChyaHMudmFsdWVzID09PSB1bmRlZlZhbHMpIHtcclxuICAgICAgICAgICAgaWYgKHYgIT09IHVuZGVmVmFscylcclxuICAgICAgICAgICAgICAgIHYucHVzaCh1bmRlZmluZWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdiA9IHRoaXMucmVpZnlWYWx1ZXMoKTtcclxuICAgICAgICAgICAgdi5wdXNoKHJocy52YWx1ZXMuc2hpZnQoKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMua2V5cy5wdXNoKHJocy5rZXlzLnNoaWZ0KCkpO1xyXG4gICAgfTtcclxuICAgIEJOb2RlLnByb3RvdHlwZS50YWtlRnJvbUxlZnQgPSBmdW5jdGlvbiAobGhzKSB7XHJcbiAgICAgICAgLy8gUmVtaW5kZXI6IHBhcmVudCBub2RlIG11c3QgdXBkYXRlIGl0cyBjb3B5IG9mIGtleSBmb3IgdGhpcyBub2RlXHJcbiAgICAgICAgLy8gYXNzZXJ0OiBuZWl0aGVyIG5vZGUgaXMgc2hhcmVkXHJcbiAgICAgICAgLy8gYXNzZXJ0IHJocy5rZXlzLmxlbmd0aCA+IChtYXhOb2RlU2l6ZS8yICYmIHRoaXMua2V5cy5sZW5ndGg8bWF4Tm9kZVNpemUpXHJcbiAgICAgICAgdmFyIHYgPSB0aGlzLnZhbHVlcztcclxuICAgICAgICBpZiAobGhzLnZhbHVlcyA9PT0gdW5kZWZWYWxzKSB7XHJcbiAgICAgICAgICAgIGlmICh2ICE9PSB1bmRlZlZhbHMpXHJcbiAgICAgICAgICAgICAgICB2LnVuc2hpZnQodW5kZWZpbmVkKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHYgPSB0aGlzLnJlaWZ5VmFsdWVzKCk7XHJcbiAgICAgICAgICAgIHYudW5zaGlmdChsaHMudmFsdWVzLnBvcCgpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5rZXlzLnVuc2hpZnQobGhzLmtleXMucG9wKCkpO1xyXG4gICAgfTtcclxuICAgIEJOb2RlLnByb3RvdHlwZS5zcGxpdE9mZlJpZ2h0U2lkZSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAvLyBSZW1pbmRlcjogcGFyZW50IG5vZGUgbXVzdCB1cGRhdGUgaXRzIGNvcHkgb2Yga2V5IGZvciB0aGlzIG5vZGVcclxuICAgICAgICB2YXIgaGFsZiA9IHRoaXMua2V5cy5sZW5ndGggPj4gMSwga2V5cyA9IHRoaXMua2V5cy5zcGxpY2UoaGFsZik7XHJcbiAgICAgICAgdmFyIHZhbHVlcyA9IHRoaXMudmFsdWVzID09PSB1bmRlZlZhbHMgPyB1bmRlZlZhbHMgOiB0aGlzLnZhbHVlcy5zcGxpY2UoaGFsZik7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBCTm9kZShrZXlzLCB2YWx1ZXMpO1xyXG4gICAgfTtcclxuICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbiAgICAvLyBMZWFmIE5vZGU6IHNjYW5uaW5nICYgZGVsZXRpb25zIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG4gICAgQk5vZGUucHJvdG90eXBlLmZvclJhbmdlID0gZnVuY3Rpb24gKGxvdywgaGlnaCwgaW5jbHVkZUhpZ2gsIGVkaXRNb2RlLCB0cmVlLCBjb3VudCwgb25Gb3VuZCkge1xyXG4gICAgICAgIHZhciBjbXAgPSB0cmVlLl9jb21wYXJlO1xyXG4gICAgICAgIHZhciBpTG93LCBpSGlnaDtcclxuICAgICAgICBpZiAoaGlnaCA9PT0gbG93KSB7XHJcbiAgICAgICAgICAgIGlmICghaW5jbHVkZUhpZ2gpXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY291bnQ7XHJcbiAgICAgICAgICAgIGlIaWdoID0gKGlMb3cgPSB0aGlzLmluZGV4T2YobG93LCAtMSwgY21wKSkgKyAxO1xyXG4gICAgICAgICAgICBpZiAoaUxvdyA8IDApXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY291bnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpTG93ID0gdGhpcy5pbmRleE9mKGxvdywgMCwgY21wKTtcclxuICAgICAgICAgICAgaUhpZ2ggPSB0aGlzLmluZGV4T2YoaGlnaCwgLTEsIGNtcCk7XHJcbiAgICAgICAgICAgIGlmIChpSGlnaCA8IDApXHJcbiAgICAgICAgICAgICAgICBpSGlnaCA9IH5pSGlnaDtcclxuICAgICAgICAgICAgZWxzZSBpZiAoaW5jbHVkZUhpZ2ggPT09IHRydWUpXHJcbiAgICAgICAgICAgICAgICBpSGlnaCsrO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIga2V5cyA9IHRoaXMua2V5cywgdmFsdWVzID0gdGhpcy52YWx1ZXM7XHJcbiAgICAgICAgaWYgKG9uRm91bmQgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gaUxvdzsgaSA8IGlIaWdoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIHZhciBrZXkgPSBrZXlzW2ldO1xyXG4gICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IG9uRm91bmQoa2V5LCB2YWx1ZXNbaV0sIGNvdW50KyspO1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVkaXRNb2RlID09PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrZXkgIT09IGtleXNbaV0gfHwgdGhpcy5pc1NoYXJlZCA9PT0gdHJ1ZSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkJUcmVlIGlsbGVnYWxseSBjaGFuZ2VkIG9yIGNsb25lZCBpbiBlZGl0UmFuZ2VcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuZGVsZXRlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmtleXMuc3BsaWNlKGksIDEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudmFsdWVzICE9PSB1bmRlZlZhbHMpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52YWx1ZXMuc3BsaWNlKGksIDEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJlZS5fc2l6ZS0tO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaS0tO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaUhpZ2gtLTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChyZXN1bHQuaGFzT3duUHJvcGVydHkoJ3ZhbHVlJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlc1tpXSA9IHJlc3VsdC52YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0LmJyZWFrICE9PSB1bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICBjb3VudCArPSBpSGlnaCAtIGlMb3c7XHJcbiAgICAgICAgcmV0dXJuIGNvdW50O1xyXG4gICAgfTtcclxuICAgIC8qKiBBZGRzIGVudGlyZSBjb250ZW50cyBvZiByaWdodC1oYW5kIHNpYmxpbmcgKHJocyBpcyBsZWZ0IHVuY2hhbmdlZCkgKi9cclxuICAgIEJOb2RlLnByb3RvdHlwZS5tZXJnZVNpYmxpbmcgPSBmdW5jdGlvbiAocmhzLCBfKSB7XHJcbiAgICAgICAgdGhpcy5rZXlzLnB1c2guYXBwbHkodGhpcy5rZXlzLCByaHMua2V5cyk7XHJcbiAgICAgICAgaWYgKHRoaXMudmFsdWVzID09PSB1bmRlZlZhbHMpIHtcclxuICAgICAgICAgICAgaWYgKHJocy52YWx1ZXMgPT09IHVuZGVmVmFscylcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgdGhpcy52YWx1ZXMgPSB0aGlzLnZhbHVlcy5zbGljZSgwLCB0aGlzLmtleXMubGVuZ3RoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy52YWx1ZXMucHVzaC5hcHBseSh0aGlzLnZhbHVlcywgcmhzLnJlaWZ5VmFsdWVzKCkpO1xyXG4gICAgfTtcclxuICAgIHJldHVybiBCTm9kZTtcclxufSgpKTtcclxuLyoqIEludGVybmFsIG5vZGUgKG5vbi1sZWFmIG5vZGUpICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xyXG52YXIgQk5vZGVJbnRlcm5hbCA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcclxuICAgIF9fZXh0ZW5kcyhCTm9kZUludGVybmFsLCBfc3VwZXIpO1xyXG4gICAgLyoqXHJcbiAgICAgKiBUaGlzIGRvZXMgbm90IG1hcmsgYGNoaWxkcmVuYCBhcyBzaGFyZWQsIHNvIGl0IGlzIHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGUgY2FsbGVyXHJcbiAgICAgKiB0byBlbnN1cmUgY2hpbGRyZW4gYXJlIGVpdGhlciBtYXJrZWQgc2hhcmVkLCBvciBhcmVuJ3QgaW5jbHVkZWQgaW4gYW5vdGhlciB0cmVlLlxyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiBCTm9kZUludGVybmFsKGNoaWxkcmVuLCBrZXlzKSB7XHJcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcclxuICAgICAgICBpZiAoIWtleXMpIHtcclxuICAgICAgICAgICAga2V5cyA9IFtdO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKVxyXG4gICAgICAgICAgICAgICAga2V5c1tpXSA9IGNoaWxkcmVuW2ldLm1heEtleSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMsIGtleXMpIHx8IHRoaXM7XHJcbiAgICAgICAgX3RoaXMuY2hpbGRyZW4gPSBjaGlsZHJlbjtcclxuICAgICAgICByZXR1cm4gX3RoaXM7XHJcbiAgICB9XHJcbiAgICBCTm9kZUludGVybmFsLnByb3RvdHlwZS5jbG9uZSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLmNoaWxkcmVuLnNsaWNlKDApO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspXHJcbiAgICAgICAgICAgIGNoaWxkcmVuW2ldLmlzU2hhcmVkID0gdHJ1ZTtcclxuICAgICAgICByZXR1cm4gbmV3IEJOb2RlSW50ZXJuYWwoY2hpbGRyZW4sIHRoaXMua2V5cy5zbGljZSgwKSk7XHJcbiAgICB9O1xyXG4gICAgQk5vZGVJbnRlcm5hbC5wcm90b3R5cGUuZ3JlZWR5Q2xvbmUgPSBmdW5jdGlvbiAoZm9yY2UpIHtcclxuICAgICAgICBpZiAodGhpcy5pc1NoYXJlZCAmJiAhZm9yY2UpXHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgICAgIHZhciBudSA9IG5ldyBCTm9kZUludGVybmFsKHRoaXMuY2hpbGRyZW4uc2xpY2UoMCksIHRoaXMua2V5cy5zbGljZSgwKSk7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudS5jaGlsZHJlbi5sZW5ndGg7IGkrKylcclxuICAgICAgICAgICAgbnUuY2hpbGRyZW5baV0gPSBudS5jaGlsZHJlbltpXS5ncmVlZHlDbG9uZShmb3JjZSk7XHJcbiAgICAgICAgcmV0dXJuIG51O1xyXG4gICAgfTtcclxuICAgIEJOb2RlSW50ZXJuYWwucHJvdG90eXBlLm1pbktleSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jaGlsZHJlblswXS5taW5LZXkoKTtcclxuICAgIH07XHJcbiAgICBCTm9kZUludGVybmFsLnByb3RvdHlwZS5taW5QYWlyID0gZnVuY3Rpb24gKHJldXNlZEFycmF5KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hpbGRyZW5bMF0ubWluUGFpcihyZXVzZWRBcnJheSk7XHJcbiAgICB9O1xyXG4gICAgQk5vZGVJbnRlcm5hbC5wcm90b3R5cGUubWF4UGFpciA9IGZ1bmN0aW9uIChyZXVzZWRBcnJheSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNoaWxkcmVuW3RoaXMuY2hpbGRyZW4ubGVuZ3RoIC0gMV0ubWF4UGFpcihyZXVzZWRBcnJheSk7XHJcbiAgICB9O1xyXG4gICAgQk5vZGVJbnRlcm5hbC5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gKGtleSwgZGVmYXVsdFZhbHVlLCB0cmVlKSB7XHJcbiAgICAgICAgdmFyIGkgPSB0aGlzLmluZGV4T2Yoa2V5LCAwLCB0cmVlLl9jb21wYXJlKSwgY2hpbGRyZW4gPSB0aGlzLmNoaWxkcmVuO1xyXG4gICAgICAgIHJldHVybiBpIDwgY2hpbGRyZW4ubGVuZ3RoID8gY2hpbGRyZW5baV0uZ2V0KGtleSwgZGVmYXVsdFZhbHVlLCB0cmVlKSA6IHVuZGVmaW5lZDtcclxuICAgIH07XHJcbiAgICBCTm9kZUludGVybmFsLnByb3RvdHlwZS5nZXRQYWlyT3JOZXh0TG93ZXIgPSBmdW5jdGlvbiAoa2V5LCBjb21wYXJlLCBpbmNsdXNpdmUsIHJldXNlZEFycmF5KSB7XHJcbiAgICAgICAgdmFyIGkgPSB0aGlzLmluZGV4T2Yoa2V5LCAwLCBjb21wYXJlKSwgY2hpbGRyZW4gPSB0aGlzLmNoaWxkcmVuO1xyXG4gICAgICAgIGlmIChpID49IGNoaWxkcmVuLmxlbmd0aClcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubWF4UGFpcihyZXVzZWRBcnJheSk7XHJcbiAgICAgICAgdmFyIHJlc3VsdCA9IGNoaWxkcmVuW2ldLmdldFBhaXJPck5leHRMb3dlcihrZXksIGNvbXBhcmUsIGluY2x1c2l2ZSwgcmV1c2VkQXJyYXkpO1xyXG4gICAgICAgIGlmIChyZXN1bHQgPT09IHVuZGVmaW5lZCAmJiBpID4gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gY2hpbGRyZW5baSAtIDFdLm1heFBhaXIocmV1c2VkQXJyYXkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfTtcclxuICAgIEJOb2RlSW50ZXJuYWwucHJvdG90eXBlLmdldFBhaXJPck5leHRIaWdoZXIgPSBmdW5jdGlvbiAoa2V5LCBjb21wYXJlLCBpbmNsdXNpdmUsIHJldXNlZEFycmF5KSB7XHJcbiAgICAgICAgdmFyIGkgPSB0aGlzLmluZGV4T2Yoa2V5LCAwLCBjb21wYXJlKSwgY2hpbGRyZW4gPSB0aGlzLmNoaWxkcmVuLCBsZW5ndGggPSBjaGlsZHJlbi5sZW5ndGg7XHJcbiAgICAgICAgaWYgKGkgPj0gbGVuZ3RoKVxyXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgIHZhciByZXN1bHQgPSBjaGlsZHJlbltpXS5nZXRQYWlyT3JOZXh0SGlnaGVyKGtleSwgY29tcGFyZSwgaW5jbHVzaXZlLCByZXVzZWRBcnJheSk7XHJcbiAgICAgICAgaWYgKHJlc3VsdCA9PT0gdW5kZWZpbmVkICYmIGkgPCBsZW5ndGggLSAxKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBjaGlsZHJlbltpICsgMV0ubWluUGFpcihyZXVzZWRBcnJheSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9O1xyXG4gICAgQk5vZGVJbnRlcm5hbC5wcm90b3R5cGUuY2hlY2tWYWxpZCA9IGZ1bmN0aW9uIChkZXB0aCwgdHJlZSwgYmFzZUluZGV4KSB7XHJcbiAgICAgICAgdmFyIGtMID0gdGhpcy5rZXlzLmxlbmd0aCwgY0wgPSB0aGlzLmNoaWxkcmVuLmxlbmd0aDtcclxuICAgICAgICBjaGVjayhrTCA9PT0gY0wsIFwia2V5cy9jaGlsZHJlbiBsZW5ndGggbWlzbWF0Y2g6IGRlcHRoXCIsIGRlcHRoLCBcImxlbmd0aHNcIiwga0wsIGNMLCBcImJhc2VJbmRleFwiLCBiYXNlSW5kZXgpO1xyXG4gICAgICAgIGNoZWNrKGtMID4gMSB8fCBkZXB0aCA+IDAsIFwiaW50ZXJuYWwgbm9kZSBoYXMgbGVuZ3RoXCIsIGtMLCBcImF0IGRlcHRoXCIsIGRlcHRoLCBcImJhc2VJbmRleFwiLCBiYXNlSW5kZXgpO1xyXG4gICAgICAgIHZhciBzaXplID0gMCwgYyA9IHRoaXMuY2hpbGRyZW4sIGsgPSB0aGlzLmtleXMsIGNoaWxkU2l6ZSA9IDA7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjTDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHNpemUgKz0gY1tpXS5jaGVja1ZhbGlkKGRlcHRoICsgMSwgdHJlZSwgYmFzZUluZGV4ICsgc2l6ZSk7XHJcbiAgICAgICAgICAgIGNoaWxkU2l6ZSArPSBjW2ldLmtleXMubGVuZ3RoO1xyXG4gICAgICAgICAgICBjaGVjayhzaXplID49IGNoaWxkU2l6ZSwgXCJ3dGZcIiwgYmFzZUluZGV4KTsgLy8gbm8gd2F5IHRoaXMgd2lsbCBldmVyIGZhaWxcclxuICAgICAgICAgICAgY2hlY2soaSA9PT0gMCB8fCBjW2kgLSAxXS5jb25zdHJ1Y3RvciA9PT0gY1tpXS5jb25zdHJ1Y3RvciwgXCJ0eXBlIG1pc21hdGNoLCBiYXNlSW5kZXg6XCIsIGJhc2VJbmRleCk7XHJcbiAgICAgICAgICAgIGlmIChjW2ldLm1heEtleSgpICE9IGtbaV0pXHJcbiAgICAgICAgICAgICAgICBjaGVjayhmYWxzZSwgXCJrZXlzW1wiLCBpLCBcIl0gPVwiLCBrW2ldLCBcImlzIHdyb25nLCBzaG91bGQgYmUgXCIsIGNbaV0ubWF4S2V5KCksIFwiYXQgZGVwdGhcIiwgZGVwdGgsIFwiYmFzZUluZGV4XCIsIGJhc2VJbmRleCk7XHJcbiAgICAgICAgICAgIGlmICghKGkgPT09IDAgfHwgdHJlZS5fY29tcGFyZShrW2kgLSAxXSwga1tpXSkgPCAwKSlcclxuICAgICAgICAgICAgICAgIGNoZWNrKGZhbHNlLCBcInNvcnQgdmlvbGF0aW9uIGF0IGRlcHRoXCIsIGRlcHRoLCBcImluZGV4XCIsIGksIFwia2V5c1wiLCBrW2kgLSAxXSwga1tpXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIDIwMjAvMDg6IEJUcmVlIGRvZXNuJ3QgYWx3YXlzIGF2b2lkIGdyb3NzbHkgdW5kZXJzaXplZCBub2RlcyxcclxuICAgICAgICAvLyBidXQgQUZBSUsgc3VjaCBub2RlcyBhcmUgcHJldHR5IGhhcm1sZXNzLCBzbyBhY2NlcHQgdGhlbS5cclxuICAgICAgICB2YXIgdG9vZmV3ID0gY2hpbGRTaXplID09PSAwOyAvLyBjaGlsZFNpemUgPCAodHJlZS5tYXhOb2RlU2l6ZSA+PiAxKSpjTDtcclxuICAgICAgICBpZiAodG9vZmV3IHx8IGNoaWxkU2l6ZSA+IHRyZWUubWF4Tm9kZVNpemUgKiBjTClcclxuICAgICAgICAgICAgY2hlY2soZmFsc2UsIHRvb2ZldyA/IFwidG9vIGZld1wiIDogXCJ0b28gbWFueVwiLCBcImNoaWxkcmVuIChcIiwgY2hpbGRTaXplLCBzaXplLCBcIikgYXQgZGVwdGhcIiwgZGVwdGgsIFwibWF4Tm9kZVNpemU6XCIsIHRyZWUubWF4Tm9kZVNpemUsIFwiY2hpbGRyZW4ubGVuZ3RoOlwiLCBjTCwgXCJiYXNlSW5kZXg6XCIsIGJhc2VJbmRleCk7XHJcbiAgICAgICAgcmV0dXJuIHNpemU7XHJcbiAgICB9O1xyXG4gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuICAgIC8vIEludGVybmFsIE5vZGU6IHNldCAmIG5vZGUgc3BsaXR0aW5nIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbiAgICBCTm9kZUludGVybmFsLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbiAoa2V5LCB2YWx1ZSwgb3ZlcndyaXRlLCB0cmVlKSB7XHJcbiAgICAgICAgdmFyIGMgPSB0aGlzLmNoaWxkcmVuLCBtYXggPSB0cmVlLl9tYXhOb2RlU2l6ZSwgY21wID0gdHJlZS5fY29tcGFyZTtcclxuICAgICAgICB2YXIgaSA9IE1hdGgubWluKHRoaXMuaW5kZXhPZihrZXksIDAsIGNtcCksIGMubGVuZ3RoIC0gMSksIGNoaWxkID0gY1tpXTtcclxuICAgICAgICBpZiAoY2hpbGQuaXNTaGFyZWQpXHJcbiAgICAgICAgICAgIGNbaV0gPSBjaGlsZCA9IGNoaWxkLmNsb25lKCk7XHJcbiAgICAgICAgaWYgKGNoaWxkLmtleXMubGVuZ3RoID49IG1heCkge1xyXG4gICAgICAgICAgICAvLyBjaGlsZCBpcyBmdWxsOyBpbnNlcnRpbmcgYW55dGhpbmcgZWxzZSB3aWxsIGNhdXNlIGEgc3BsaXQuXHJcbiAgICAgICAgICAgIC8vIFNoaWZ0aW5nIGFuIGl0ZW0gdG8gdGhlIGxlZnQgb3IgcmlnaHQgc2libGluZyBtYXkgYXZvaWQgYSBzcGxpdC5cclxuICAgICAgICAgICAgLy8gV2UgY2FuIGRvIGEgc2hpZnQgaWYgdGhlIGFkamFjZW50IG5vZGUgaXMgbm90IGZ1bGwgYW5kIGlmIHRoZVxyXG4gICAgICAgICAgICAvLyBjdXJyZW50IGtleSBjYW4gc3RpbGwgYmUgcGxhY2VkIGluIHRoZSBzYW1lIG5vZGUgYWZ0ZXIgdGhlIHNoaWZ0LlxyXG4gICAgICAgICAgICB2YXIgb3RoZXI7XHJcbiAgICAgICAgICAgIGlmIChpID4gMCAmJiAob3RoZXIgPSBjW2kgLSAxXSkua2V5cy5sZW5ndGggPCBtYXggJiYgY21wKGNoaWxkLmtleXNbMF0sIGtleSkgPCAwKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAob3RoZXIuaXNTaGFyZWQpXHJcbiAgICAgICAgICAgICAgICAgICAgY1tpIC0gMV0gPSBvdGhlciA9IG90aGVyLmNsb25lKCk7XHJcbiAgICAgICAgICAgICAgICBvdGhlci50YWtlRnJvbVJpZ2h0KGNoaWxkKTtcclxuICAgICAgICAgICAgICAgIHRoaXMua2V5c1tpIC0gMV0gPSBvdGhlci5tYXhLZXkoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmICgob3RoZXIgPSBjW2kgKyAxXSkgIT09IHVuZGVmaW5lZCAmJiBvdGhlci5rZXlzLmxlbmd0aCA8IG1heCAmJiBjbXAoY2hpbGQubWF4S2V5KCksIGtleSkgPCAwKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAob3RoZXIuaXNTaGFyZWQpXHJcbiAgICAgICAgICAgICAgICAgICAgY1tpICsgMV0gPSBvdGhlciA9IG90aGVyLmNsb25lKCk7XHJcbiAgICAgICAgICAgICAgICBvdGhlci50YWtlRnJvbUxlZnQoY2hpbGQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5rZXlzW2ldID0gY1tpXS5tYXhLZXkoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgcmVzdWx0ID0gY2hpbGQuc2V0KGtleSwgdmFsdWUsIG92ZXJ3cml0ZSwgdHJlZSk7XHJcbiAgICAgICAgaWYgKHJlc3VsdCA9PT0gZmFsc2UpXHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB0aGlzLmtleXNbaV0gPSBjaGlsZC5tYXhLZXkoKTtcclxuICAgICAgICBpZiAocmVzdWx0ID09PSB0cnVlKVxyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAvLyBUaGUgY2hpbGQgaGFzIHNwbGl0IGFuZCBgcmVzdWx0YCBpcyBhIG5ldyByaWdodCBjaGlsZC4uLiBkb2VzIGl0IGZpdD9cclxuICAgICAgICBpZiAodGhpcy5rZXlzLmxlbmd0aCA8IG1heCkgeyAvLyB5ZXNcclxuICAgICAgICAgICAgdGhpcy5pbnNlcnQoaSArIDEsIHJlc3VsdCk7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHsgLy8gbm8sIHdlIG11c3Qgc3BsaXQgYWxzb1xyXG4gICAgICAgICAgICB2YXIgbmV3UmlnaHRTaWJsaW5nID0gdGhpcy5zcGxpdE9mZlJpZ2h0U2lkZSgpLCB0YXJnZXQgPSB0aGlzO1xyXG4gICAgICAgICAgICBpZiAoY21wKHJlc3VsdC5tYXhLZXkoKSwgdGhpcy5tYXhLZXkoKSkgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICB0YXJnZXQgPSBuZXdSaWdodFNpYmxpbmc7XHJcbiAgICAgICAgICAgICAgICBpIC09IHRoaXMua2V5cy5sZW5ndGg7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGFyZ2V0Lmluc2VydChpICsgMSwgcmVzdWx0KTtcclxuICAgICAgICAgICAgcmV0dXJuIG5ld1JpZ2h0U2libGluZztcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgLyoqXHJcbiAgICAgKiBJbnNlcnRzIGBjaGlsZGAgYXQgaW5kZXggYGlgLlxyXG4gICAgICogVGhpcyBkb2VzIG5vdCBtYXJrIGBjaGlsZGAgYXMgc2hhcmVkLCBzbyBpdCBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGNhbGxlclxyXG4gICAgICogdG8gZW5zdXJlIHRoYXQgZWl0aGVyIGNoaWxkIGlzIG1hcmtlZCBzaGFyZWQsIG9yIGl0IGlzIG5vdCBpbmNsdWRlZCBpbiBhbm90aGVyIHRyZWUuXHJcbiAgICAgKi9cclxuICAgIEJOb2RlSW50ZXJuYWwucHJvdG90eXBlLmluc2VydCA9IGZ1bmN0aW9uIChpLCBjaGlsZCkge1xyXG4gICAgICAgIHRoaXMuY2hpbGRyZW4uc3BsaWNlKGksIDAsIGNoaWxkKTtcclxuICAgICAgICB0aGlzLmtleXMuc3BsaWNlKGksIDAsIGNoaWxkLm1heEtleSgpKTtcclxuICAgIH07XHJcbiAgICAvKipcclxuICAgICAqIFNwbGl0IHRoaXMgbm9kZS5cclxuICAgICAqIE1vZGlmaWVzIHRoaXMgdG8gcmVtb3ZlIHRoZSBzZWNvbmQgaGFsZiBvZiB0aGUgaXRlbXMsIHJldHVybmluZyBhIHNlcGFyYXRlIG5vZGUgY29udGFpbmluZyB0aGVtLlxyXG4gICAgICovXHJcbiAgICBCTm9kZUludGVybmFsLnByb3RvdHlwZS5zcGxpdE9mZlJpZ2h0U2lkZSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAvLyBhc3NlcnQgIXRoaXMuaXNTaGFyZWQ7XHJcbiAgICAgICAgdmFyIGhhbGYgPSB0aGlzLmNoaWxkcmVuLmxlbmd0aCA+PiAxO1xyXG4gICAgICAgIHJldHVybiBuZXcgQk5vZGVJbnRlcm5hbCh0aGlzLmNoaWxkcmVuLnNwbGljZShoYWxmKSwgdGhpcy5rZXlzLnNwbGljZShoYWxmKSk7XHJcbiAgICB9O1xyXG4gICAgQk5vZGVJbnRlcm5hbC5wcm90b3R5cGUudGFrZUZyb21SaWdodCA9IGZ1bmN0aW9uIChyaHMpIHtcclxuICAgICAgICAvLyBSZW1pbmRlcjogcGFyZW50IG5vZGUgbXVzdCB1cGRhdGUgaXRzIGNvcHkgb2Yga2V5IGZvciB0aGlzIG5vZGVcclxuICAgICAgICAvLyBhc3NlcnQ6IG5laXRoZXIgbm9kZSBpcyBzaGFyZWRcclxuICAgICAgICAvLyBhc3NlcnQgcmhzLmtleXMubGVuZ3RoID4gKG1heE5vZGVTaXplLzIgJiYgdGhpcy5rZXlzLmxlbmd0aDxtYXhOb2RlU2l6ZSlcclxuICAgICAgICB0aGlzLmtleXMucHVzaChyaHMua2V5cy5zaGlmdCgpKTtcclxuICAgICAgICB0aGlzLmNoaWxkcmVuLnB1c2gocmhzLmNoaWxkcmVuLnNoaWZ0KCkpO1xyXG4gICAgfTtcclxuICAgIEJOb2RlSW50ZXJuYWwucHJvdG90eXBlLnRha2VGcm9tTGVmdCA9IGZ1bmN0aW9uIChsaHMpIHtcclxuICAgICAgICAvLyBSZW1pbmRlcjogcGFyZW50IG5vZGUgbXVzdCB1cGRhdGUgaXRzIGNvcHkgb2Yga2V5IGZvciB0aGlzIG5vZGVcclxuICAgICAgICAvLyBhc3NlcnQ6IG5laXRoZXIgbm9kZSBpcyBzaGFyZWRcclxuICAgICAgICAvLyBhc3NlcnQgcmhzLmtleXMubGVuZ3RoID4gKG1heE5vZGVTaXplLzIgJiYgdGhpcy5rZXlzLmxlbmd0aDxtYXhOb2RlU2l6ZSlcclxuICAgICAgICB0aGlzLmtleXMudW5zaGlmdChsaHMua2V5cy5wb3AoKSk7XHJcbiAgICAgICAgdGhpcy5jaGlsZHJlbi51bnNoaWZ0KGxocy5jaGlsZHJlbi5wb3AoKSk7XHJcbiAgICB9O1xyXG4gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuICAgIC8vIEludGVybmFsIE5vZGU6IHNjYW5uaW5nICYgZGVsZXRpb25zIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbiAgICAvLyBOb3RlOiBgY291bnRgIGlzIHRoZSBuZXh0IHZhbHVlIG9mIHRoZSB0aGlyZCBhcmd1bWVudCB0byBgb25Gb3VuZGAuIFxyXG4gICAgLy8gICAgICAgQSBsZWFmIG5vZGUncyBgZm9yUmFuZ2VgIGZ1bmN0aW9uIHJldHVybnMgYSBuZXcgdmFsdWUgZm9yIHRoaXMgY291bnRlcixcclxuICAgIC8vICAgICAgIHVubGVzcyB0aGUgb3BlcmF0aW9uIGlzIHRvIHN0b3AgZWFybHkuXHJcbiAgICBCTm9kZUludGVybmFsLnByb3RvdHlwZS5mb3JSYW5nZSA9IGZ1bmN0aW9uIChsb3csIGhpZ2gsIGluY2x1ZGVIaWdoLCBlZGl0TW9kZSwgdHJlZSwgY291bnQsIG9uRm91bmQpIHtcclxuICAgICAgICB2YXIgY21wID0gdHJlZS5fY29tcGFyZTtcclxuICAgICAgICB2YXIga2V5cyA9IHRoaXMua2V5cywgY2hpbGRyZW4gPSB0aGlzLmNoaWxkcmVuO1xyXG4gICAgICAgIHZhciBpTG93ID0gdGhpcy5pbmRleE9mKGxvdywgMCwgY21wKSwgaSA9IGlMb3c7XHJcbiAgICAgICAgdmFyIGlIaWdoID0gTWF0aC5taW4oaGlnaCA9PT0gbG93ID8gaUxvdyA6IHRoaXMuaW5kZXhPZihoaWdoLCAwLCBjbXApLCBrZXlzLmxlbmd0aCAtIDEpO1xyXG4gICAgICAgIGlmICghZWRpdE1vZGUpIHtcclxuICAgICAgICAgICAgLy8gU2ltcGxlIGNhc2VcclxuICAgICAgICAgICAgZm9yICg7IGkgPD0gaUhpZ2g7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGNoaWxkcmVuW2ldLmZvclJhbmdlKGxvdywgaGlnaCwgaW5jbHVkZUhpZ2gsIGVkaXRNb2RlLCB0cmVlLCBjb3VudCwgb25Gb3VuZCk7XHJcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHJlc3VsdCAhPT0gJ251bWJlcicpXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICAgICAgICAgIGNvdW50ID0gcmVzdWx0O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGkgPD0gaUhpZ2gpIHtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIGZvciAoOyBpIDw9IGlIaWdoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGRyZW5baV0uaXNTaGFyZWQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuW2ldID0gY2hpbGRyZW5baV0uY2xvbmUoKTtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gY2hpbGRyZW5baV0uZm9yUmFuZ2UobG93LCBoaWdoLCBpbmNsdWRlSGlnaCwgZWRpdE1vZGUsIHRyZWUsIGNvdW50LCBvbkZvdW5kKTtcclxuICAgICAgICAgICAgICAgICAgICAvLyBOb3RlOiBpZiBjaGlsZHJlbltpXSBpcyBlbXB0eSB0aGVuIGtleXNbaV09dW5kZWZpbmVkLlxyXG4gICAgICAgICAgICAgICAgICAgIC8vICAgICAgIFRoaXMgaXMgYW4gaW52YWxpZCBzdGF0ZSwgYnV0IGl0IGlzIGZpeGVkIGJlbG93LlxyXG4gICAgICAgICAgICAgICAgICAgIGtleXNbaV0gPSBjaGlsZHJlbltpXS5tYXhLZXkoKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHJlc3VsdCAhPT0gJ251bWJlcicpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgY291bnQgPSByZXN1bHQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZmluYWxseSB7XHJcbiAgICAgICAgICAgICAgICAvLyBEZWxldGlvbnMgbWF5IGhhdmUgb2NjdXJyZWQsIHNvIGxvb2sgZm9yIG9wcG9ydHVuaXRpZXMgdG8gbWVyZ2Ugbm9kZXMuXHJcbiAgICAgICAgICAgICAgICB2YXIgaGFsZiA9IHRyZWUuX21heE5vZGVTaXplID4+IDE7XHJcbiAgICAgICAgICAgICAgICBpZiAoaUxvdyA+IDApXHJcbiAgICAgICAgICAgICAgICAgICAgaUxvdy0tO1xyXG4gICAgICAgICAgICAgICAgZm9yIChpID0gaUhpZ2g7IGkgPj0gaUxvdzsgaS0tKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkcmVuW2ldLmtleXMubGVuZ3RoIDw9IGhhbGYpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkcmVuW2ldLmtleXMubGVuZ3RoICE9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRyeU1lcmdlKGksIHRyZWUuX21heE5vZGVTaXplKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsgLy8gY2hpbGQgaXMgZW1wdHkhIGRlbGV0ZSBpdCFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleXMuc3BsaWNlKGksIDEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4uc3BsaWNlKGksIDEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGNoaWxkcmVuLmxlbmd0aCAhPT0gMCAmJiBjaGlsZHJlblswXS5rZXlzLmxlbmd0aCA9PT0gMClcclxuICAgICAgICAgICAgICAgICAgICBjaGVjayhmYWxzZSwgXCJlbXB0aW5lc3MgYnVnXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBjb3VudDtcclxuICAgIH07XHJcbiAgICAvKiogTWVyZ2VzIGNoaWxkIGkgd2l0aCBjaGlsZCBpKzEgaWYgdGhlaXIgY29tYmluZWQgc2l6ZSBpcyBub3QgdG9vIGxhcmdlICovXHJcbiAgICBCTm9kZUludGVybmFsLnByb3RvdHlwZS50cnlNZXJnZSA9IGZ1bmN0aW9uIChpLCBtYXhTaXplKSB7XHJcbiAgICAgICAgdmFyIGNoaWxkcmVuID0gdGhpcy5jaGlsZHJlbjtcclxuICAgICAgICBpZiAoaSA+PSAwICYmIGkgKyAxIDwgY2hpbGRyZW4ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIGlmIChjaGlsZHJlbltpXS5rZXlzLmxlbmd0aCArIGNoaWxkcmVuW2kgKyAxXS5rZXlzLmxlbmd0aCA8PSBtYXhTaXplKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoY2hpbGRyZW5baV0uaXNTaGFyZWQpIC8vIGNsb25lZCBhbHJlYWR5IFVOTEVTUyBpIGlzIG91dHNpZGUgc2NhbiByYW5nZVxyXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuW2ldID0gY2hpbGRyZW5baV0uY2xvbmUoKTtcclxuICAgICAgICAgICAgICAgIGNoaWxkcmVuW2ldLm1lcmdlU2libGluZyhjaGlsZHJlbltpICsgMV0sIG1heFNpemUpO1xyXG4gICAgICAgICAgICAgICAgY2hpbGRyZW4uc3BsaWNlKGkgKyAxLCAxKTtcclxuICAgICAgICAgICAgICAgIHRoaXMua2V5cy5zcGxpY2UoaSArIDEsIDEpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5rZXlzW2ldID0gY2hpbGRyZW5baV0ubWF4S2V5KCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9O1xyXG4gICAgLyoqXHJcbiAgICAgKiBNb3ZlIGNoaWxkcmVuIGZyb20gYHJoc2AgaW50byB0aGlzLlxyXG4gICAgICogYHJoc2AgbXVzdCBiZSBwYXJ0IG9mIHRoaXMgdHJlZSwgYW5kIGJlIHJlbW92ZWQgZnJvbSBpdCBhZnRlciB0aGlzIGNhbGxcclxuICAgICAqIChvdGhlcndpc2UgaXNTaGFyZWQgZm9yIGl0cyBjaGlsZHJlbiBjb3VsZCBiZSBpbmNvcnJlY3QpLlxyXG4gICAgICovXHJcbiAgICBCTm9kZUludGVybmFsLnByb3RvdHlwZS5tZXJnZVNpYmxpbmcgPSBmdW5jdGlvbiAocmhzLCBtYXhOb2RlU2l6ZSkge1xyXG4gICAgICAgIC8vIGFzc2VydCAhdGhpcy5pc1NoYXJlZDtcclxuICAgICAgICB2YXIgb2xkTGVuZ3RoID0gdGhpcy5rZXlzLmxlbmd0aDtcclxuICAgICAgICB0aGlzLmtleXMucHVzaC5hcHBseSh0aGlzLmtleXMsIHJocy5rZXlzKTtcclxuICAgICAgICB2YXIgcmhzQ2hpbGRyZW4gPSByaHMuY2hpbGRyZW47XHJcbiAgICAgICAgdGhpcy5jaGlsZHJlbi5wdXNoLmFwcGx5KHRoaXMuY2hpbGRyZW4sIHJoc0NoaWxkcmVuKTtcclxuICAgICAgICBpZiAocmhzLmlzU2hhcmVkICYmICF0aGlzLmlzU2hhcmVkKSB7XHJcbiAgICAgICAgICAgIC8vIEFsbCBjaGlsZHJlbiBvZiBhIHNoYXJlZCBub2RlIGFyZSBpbXBsaWNpdGx5IHNoYXJlZCwgYW5kIHNpbmNlIHRoZWlyIG5ld1xyXG4gICAgICAgICAgICAvLyBwYXJlbnQgaXMgbm90IHNoYXJlZCwgdGhleSBtdXN0IG5vdyBiZSBleHBsaWNpdGx5IG1hcmtlZCBhcyBzaGFyZWQuXHJcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmhzQ2hpbGRyZW4ubGVuZ3RoOyBpKyspXHJcbiAgICAgICAgICAgICAgICByaHNDaGlsZHJlbltpXS5pc1NoYXJlZCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIElmIG91ciBjaGlsZHJlbiBhcmUgdGhlbXNlbHZlcyBhbG1vc3QgZW1wdHkgZHVlIHRvIGEgbWFzcy1kZWxldGUsXHJcbiAgICAgICAgLy8gdGhleSBtYXkgbmVlZCB0byBiZSBtZXJnZWQgdG9vIChidXQgb25seSB0aGUgb2xkTGVuZ3RoLTEgYW5kIGl0c1xyXG4gICAgICAgIC8vIHJpZ2h0IHNpYmxpbmcgc2hvdWxkIG5lZWQgdGhpcykuXHJcbiAgICAgICAgdGhpcy50cnlNZXJnZShvbGRMZW5ndGggLSAxLCBtYXhOb2RlU2l6ZSk7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIEJOb2RlSW50ZXJuYWw7XHJcbn0oQk5vZGUpKTtcclxuLy8gT3B0aW1pemF0aW9uOiB0aGlzIGFycmF5IG9mIGB1bmRlZmluZWRgcyBpcyB1c2VkIGluc3RlYWQgb2YgYSBub3JtYWxcclxuLy8gYXJyYXkgb2YgdmFsdWVzIGluIG5vZGVzIHdoZXJlIGB1bmRlZmluZWRgIGlzIHRoZSBvbmx5IHZhbHVlLlxyXG4vLyBJdHMgbGVuZ3RoIGlzIGV4dGVuZGVkIHRvIG1heCBub2RlIHNpemUgb24gZmlyc3QgdXNlOyBzaW5jZSBpdCBjYW5cclxuLy8gYmUgc2hhcmVkIGJldHdlZW4gdHJlZXMgd2l0aCBkaWZmZXJlbnQgbWF4aW11bXMsIGl0cyBsZW5ndGggY2FuIG9ubHlcclxuLy8gaW5jcmVhc2UsIG5ldmVyIGRlY3JlYXNlLiBJdHMgdHlwZSBzaG91bGQgYmUgdW5kZWZpbmVkW10gYnV0IHN0cmFuZ2VseVxyXG4vLyBUeXBlU2NyaXB0IHdvbid0IGFsbG93IHRoZSBjb21wYXJpc29uIFZbXSA9PT0gdW5kZWZpbmVkW10uIFRvIHByZXZlbnRcclxuLy8gdXNlcnMgZnJvbSBtYWtpbmcgdGhpcyBhcnJheSB0b28gbGFyZ2UsIEJUcmVlIGhhcyBhIG1heGltdW0gbm9kZSBzaXplLlxyXG4vL1xyXG4vLyBGQVE6IHVuZGVmVmFsc1tpXSBpcyBhbHJlYWR5IHVuZGVmaW5lZCwgc28gd2h5IGluY3JlYXNlIHRoZSBhcnJheSBzaXplP1xyXG4vLyBSZWFkaW5nIG91dHNpZGUgdGhlIGJvdW5kcyBvZiBhbiBhcnJheSBpcyByZWxhdGl2ZWx5IHNsb3cgYmVjYXVzZSBpdFxyXG4vLyBoYXMgdGhlIHNpZGUgZWZmZWN0IG9mIHNjYW5uaW5nIHRoZSBwcm90b3R5cGUgY2hhaW4uXHJcbnZhciB1bmRlZlZhbHMgPSBbXTtcclxudmFyIERlbGV0ZSA9IHsgZGVsZXRlOiB0cnVlIH0sIERlbGV0ZVJhbmdlID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gRGVsZXRlOyB9O1xyXG52YXIgQnJlYWsgPSB7IGJyZWFrOiB0cnVlIH07XHJcbnZhciBFbXB0eUxlYWYgPSAoZnVuY3Rpb24gKCkge1xyXG4gICAgdmFyIG4gPSBuZXcgQk5vZGUoKTtcclxuICAgIG4uaXNTaGFyZWQgPSB0cnVlO1xyXG4gICAgcmV0dXJuIG47XHJcbn0pKCk7XHJcbnZhciBFbXB0eUFycmF5ID0gW107XHJcbnZhciBSZXVzZWRBcnJheSA9IFtdOyAvLyBhc3N1bWVkIHRocmVhZC1sb2NhbFxyXG5mdW5jdGlvbiBjaGVjayhmYWN0KSB7XHJcbiAgICB2YXIgYXJncyA9IFtdO1xyXG4gICAgZm9yICh2YXIgX2kgPSAxOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcclxuICAgICAgICBhcmdzW19pIC0gMV0gPSBhcmd1bWVudHNbX2ldO1xyXG4gICAgfVxyXG4gICAgaWYgKCFmYWN0KSB7XHJcbiAgICAgICAgYXJncy51bnNoaWZ0KCdCKyB0cmVlJyk7IC8vIGF0IGJlZ2lubmluZyBvZiBtZXNzYWdlXHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGFyZ3Muam9pbignICcpKTtcclxuICAgIH1cclxufVxyXG4vKiogQSBCVHJlZSBmcm96ZW4gaW4gdGhlIGVtcHR5IHN0YXRlLiAqL1xyXG5leHBvcnRzLkVtcHR5QlRyZWUgPSAoZnVuY3Rpb24gKCkgeyB2YXIgdCA9IG5ldyBCVHJlZSgpOyB0LmZyZWV6ZSgpOyByZXR1cm4gdDsgfSkoKTtcclxuIiwgIi8qIVxuICAgIGxvY2FsRm9yYWdlIC0tIE9mZmxpbmUgU3RvcmFnZSwgSW1wcm92ZWRcbiAgICBWZXJzaW9uIDEuMTAuMFxuICAgIGh0dHBzOi8vbG9jYWxmb3JhZ2UuZ2l0aHViLmlvL2xvY2FsRm9yYWdlXG4gICAgKGMpIDIwMTMtMjAxNyBNb3ppbGxhLCBBcGFjaGUgTGljZW5zZSAyLjBcbiovXG4oZnVuY3Rpb24oZil7aWYodHlwZW9mIGV4cG9ydHM9PT1cIm9iamVjdFwiJiZ0eXBlb2YgbW9kdWxlIT09XCJ1bmRlZmluZWRcIil7bW9kdWxlLmV4cG9ydHM9ZigpfWVsc2UgaWYodHlwZW9mIGRlZmluZT09PVwiZnVuY3Rpb25cIiYmZGVmaW5lLmFtZCl7ZGVmaW5lKFtdLGYpfWVsc2V7dmFyIGc7aWYodHlwZW9mIHdpbmRvdyE9PVwidW5kZWZpbmVkXCIpe2c9d2luZG93fWVsc2UgaWYodHlwZW9mIGdsb2JhbCE9PVwidW5kZWZpbmVkXCIpe2c9Z2xvYmFsfWVsc2UgaWYodHlwZW9mIHNlbGYhPT1cInVuZGVmaW5lZFwiKXtnPXNlbGZ9ZWxzZXtnPXRoaXN9Zy5sb2NhbGZvcmFnZSA9IGYoKX19KShmdW5jdGlvbigpe3ZhciBkZWZpbmUsbW9kdWxlLGV4cG9ydHM7cmV0dXJuIChmdW5jdGlvbiBlKHQsbixyKXtmdW5jdGlvbiBzKG8sdSl7aWYoIW5bb10pe2lmKCF0W29dKXt2YXIgYT10eXBlb2YgcmVxdWlyZT09XCJmdW5jdGlvblwiJiZyZXF1aXJlO2lmKCF1JiZhKXJldHVybiBhKG8sITApO2lmKGkpcmV0dXJuIGkobywhMCk7dmFyIGY9bmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIitvK1wiJ1wiKTt0aHJvdyAoZi5jb2RlPVwiTU9EVUxFX05PVF9GT1VORFwiLCBmKX12YXIgbD1uW29dPXtleHBvcnRzOnt9fTt0W29dWzBdLmNhbGwobC5leHBvcnRzLGZ1bmN0aW9uKGUpe3ZhciBuPXRbb11bMV1bZV07cmV0dXJuIHMobj9uOmUpfSxsLGwuZXhwb3J0cyxlLHQsbixyKX1yZXR1cm4gbltvXS5leHBvcnRzfXZhciBpPXR5cGVvZiByZXF1aXJlPT1cImZ1bmN0aW9uXCImJnJlcXVpcmU7Zm9yKHZhciBvPTA7bzxyLmxlbmd0aDtvKyspcyhyW29dKTtyZXR1cm4gc30pKHsxOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcbihmdW5jdGlvbiAoZ2xvYmFsKXtcbid1c2Ugc3RyaWN0JztcbnZhciBNdXRhdGlvbiA9IGdsb2JhbC5NdXRhdGlvbk9ic2VydmVyIHx8IGdsb2JhbC5XZWJLaXRNdXRhdGlvbk9ic2VydmVyO1xuXG52YXIgc2NoZWR1bGVEcmFpbjtcblxue1xuICBpZiAoTXV0YXRpb24pIHtcbiAgICB2YXIgY2FsbGVkID0gMDtcbiAgICB2YXIgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb24obmV4dFRpY2spO1xuICAgIHZhciBlbGVtZW50ID0gZ2xvYmFsLmRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCcnKTtcbiAgICBvYnNlcnZlci5vYnNlcnZlKGVsZW1lbnQsIHtcbiAgICAgIGNoYXJhY3RlckRhdGE6IHRydWVcbiAgICB9KTtcbiAgICBzY2hlZHVsZURyYWluID0gZnVuY3Rpb24gKCkge1xuICAgICAgZWxlbWVudC5kYXRhID0gKGNhbGxlZCA9ICsrY2FsbGVkICUgMik7XG4gICAgfTtcbiAgfSBlbHNlIGlmICghZ2xvYmFsLnNldEltbWVkaWF0ZSAmJiB0eXBlb2YgZ2xvYmFsLk1lc3NhZ2VDaGFubmVsICE9PSAndW5kZWZpbmVkJykge1xuICAgIHZhciBjaGFubmVsID0gbmV3IGdsb2JhbC5NZXNzYWdlQ2hhbm5lbCgpO1xuICAgIGNoYW5uZWwucG9ydDEub25tZXNzYWdlID0gbmV4dFRpY2s7XG4gICAgc2NoZWR1bGVEcmFpbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNoYW5uZWwucG9ydDIucG9zdE1lc3NhZ2UoMCk7XG4gICAgfTtcbiAgfSBlbHNlIGlmICgnZG9jdW1lbnQnIGluIGdsb2JhbCAmJiAnb25yZWFkeXN0YXRlY2hhbmdlJyBpbiBnbG9iYWwuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0JykpIHtcbiAgICBzY2hlZHVsZURyYWluID0gZnVuY3Rpb24gKCkge1xuXG4gICAgICAvLyBDcmVhdGUgYSA8c2NyaXB0PiBlbGVtZW50OyBpdHMgcmVhZHlzdGF0ZWNoYW5nZSBldmVudCB3aWxsIGJlIGZpcmVkIGFzeW5jaHJvbm91c2x5IG9uY2UgaXQgaXMgaW5zZXJ0ZWRcbiAgICAgIC8vIGludG8gdGhlIGRvY3VtZW50LiBEbyBzbywgdGh1cyBxdWV1aW5nIHVwIHRoZSB0YXNrLiBSZW1lbWJlciB0byBjbGVhbiB1cCBvbmNlIGl0J3MgYmVlbiBjYWxsZWQuXG4gICAgICB2YXIgc2NyaXB0RWwgPSBnbG9iYWwuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XG4gICAgICBzY3JpcHRFbC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIG5leHRUaWNrKCk7XG5cbiAgICAgICAgc2NyaXB0RWwub25yZWFkeXN0YXRlY2hhbmdlID0gbnVsbDtcbiAgICAgICAgc2NyaXB0RWwucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzY3JpcHRFbCk7XG4gICAgICAgIHNjcmlwdEVsID0gbnVsbDtcbiAgICAgIH07XG4gICAgICBnbG9iYWwuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmFwcGVuZENoaWxkKHNjcmlwdEVsKTtcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIHNjaGVkdWxlRHJhaW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgICBzZXRUaW1lb3V0KG5leHRUaWNrLCAwKTtcbiAgICB9O1xuICB9XG59XG5cbnZhciBkcmFpbmluZztcbnZhciBxdWV1ZSA9IFtdO1xuLy9uYW1lZCBuZXh0VGljayBmb3IgbGVzcyBjb25mdXNpbmcgc3RhY2sgdHJhY2VzXG5mdW5jdGlvbiBuZXh0VGljaygpIHtcbiAgZHJhaW5pbmcgPSB0cnVlO1xuICB2YXIgaSwgb2xkUXVldWU7XG4gIHZhciBsZW4gPSBxdWV1ZS5sZW5ndGg7XG4gIHdoaWxlIChsZW4pIHtcbiAgICBvbGRRdWV1ZSA9IHF1ZXVlO1xuICAgIHF1ZXVlID0gW107XG4gICAgaSA9IC0xO1xuICAgIHdoaWxlICgrK2kgPCBsZW4pIHtcbiAgICAgIG9sZFF1ZXVlW2ldKCk7XG4gICAgfVxuICAgIGxlbiA9IHF1ZXVlLmxlbmd0aDtcbiAgfVxuICBkcmFpbmluZyA9IGZhbHNlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGltbWVkaWF0ZTtcbmZ1bmN0aW9uIGltbWVkaWF0ZSh0YXNrKSB7XG4gIGlmIChxdWV1ZS5wdXNoKHRhc2spID09PSAxICYmICFkcmFpbmluZykge1xuICAgIHNjaGVkdWxlRHJhaW4oKTtcbiAgfVxufVxuXG59KS5jYWxsKHRoaXMsdHlwZW9mIGdsb2JhbCAhPT0gXCJ1bmRlZmluZWRcIiA/IGdsb2JhbCA6IHR5cGVvZiBzZWxmICE9PSBcInVuZGVmaW5lZFwiID8gc2VsZiA6IHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIgPyB3aW5kb3cgOiB7fSlcbn0se31dLDI6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuJ3VzZSBzdHJpY3QnO1xudmFyIGltbWVkaWF0ZSA9IF9kZXJlcV8oMSk7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5mdW5jdGlvbiBJTlRFUk5BTCgpIHt9XG5cbnZhciBoYW5kbGVycyA9IHt9O1xuXG52YXIgUkVKRUNURUQgPSBbJ1JFSkVDVEVEJ107XG52YXIgRlVMRklMTEVEID0gWydGVUxGSUxMRUQnXTtcbnZhciBQRU5ESU5HID0gWydQRU5ESU5HJ107XG5cbm1vZHVsZS5leHBvcnRzID0gUHJvbWlzZTtcblxuZnVuY3Rpb24gUHJvbWlzZShyZXNvbHZlcikge1xuICBpZiAodHlwZW9mIHJlc29sdmVyICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcigncmVzb2x2ZXIgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7XG4gIH1cbiAgdGhpcy5zdGF0ZSA9IFBFTkRJTkc7XG4gIHRoaXMucXVldWUgPSBbXTtcbiAgdGhpcy5vdXRjb21lID0gdm9pZCAwO1xuICBpZiAocmVzb2x2ZXIgIT09IElOVEVSTkFMKSB7XG4gICAgc2FmZWx5UmVzb2x2ZVRoZW5hYmxlKHRoaXMsIHJlc29sdmVyKTtcbiAgfVxufVxuXG5Qcm9taXNlLnByb3RvdHlwZVtcImNhdGNoXCJdID0gZnVuY3Rpb24gKG9uUmVqZWN0ZWQpIHtcbiAgcmV0dXJuIHRoaXMudGhlbihudWxsLCBvblJlamVjdGVkKTtcbn07XG5Qcm9taXNlLnByb3RvdHlwZS50aGVuID0gZnVuY3Rpb24gKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKSB7XG4gIGlmICh0eXBlb2Ygb25GdWxmaWxsZWQgIT09ICdmdW5jdGlvbicgJiYgdGhpcy5zdGF0ZSA9PT0gRlVMRklMTEVEIHx8XG4gICAgdHlwZW9mIG9uUmVqZWN0ZWQgIT09ICdmdW5jdGlvbicgJiYgdGhpcy5zdGF0ZSA9PT0gUkVKRUNURUQpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICB2YXIgcHJvbWlzZSA9IG5ldyB0aGlzLmNvbnN0cnVjdG9yKElOVEVSTkFMKTtcbiAgaWYgKHRoaXMuc3RhdGUgIT09IFBFTkRJTkcpIHtcbiAgICB2YXIgcmVzb2x2ZXIgPSB0aGlzLnN0YXRlID09PSBGVUxGSUxMRUQgPyBvbkZ1bGZpbGxlZCA6IG9uUmVqZWN0ZWQ7XG4gICAgdW53cmFwKHByb21pc2UsIHJlc29sdmVyLCB0aGlzLm91dGNvbWUpO1xuICB9IGVsc2Uge1xuICAgIHRoaXMucXVldWUucHVzaChuZXcgUXVldWVJdGVtKHByb21pc2UsIG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKSk7XG4gIH1cblxuICByZXR1cm4gcHJvbWlzZTtcbn07XG5mdW5jdGlvbiBRdWV1ZUl0ZW0ocHJvbWlzZSwgb25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpIHtcbiAgdGhpcy5wcm9taXNlID0gcHJvbWlzZTtcbiAgaWYgKHR5cGVvZiBvbkZ1bGZpbGxlZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHRoaXMub25GdWxmaWxsZWQgPSBvbkZ1bGZpbGxlZDtcbiAgICB0aGlzLmNhbGxGdWxmaWxsZWQgPSB0aGlzLm90aGVyQ2FsbEZ1bGZpbGxlZDtcbiAgfVxuICBpZiAodHlwZW9mIG9uUmVqZWN0ZWQgPT09ICdmdW5jdGlvbicpIHtcbiAgICB0aGlzLm9uUmVqZWN0ZWQgPSBvblJlamVjdGVkO1xuICAgIHRoaXMuY2FsbFJlamVjdGVkID0gdGhpcy5vdGhlckNhbGxSZWplY3RlZDtcbiAgfVxufVxuUXVldWVJdGVtLnByb3RvdHlwZS5jYWxsRnVsZmlsbGVkID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gIGhhbmRsZXJzLnJlc29sdmUodGhpcy5wcm9taXNlLCB2YWx1ZSk7XG59O1xuUXVldWVJdGVtLnByb3RvdHlwZS5vdGhlckNhbGxGdWxmaWxsZWQgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgdW53cmFwKHRoaXMucHJvbWlzZSwgdGhpcy5vbkZ1bGZpbGxlZCwgdmFsdWUpO1xufTtcblF1ZXVlSXRlbS5wcm90b3R5cGUuY2FsbFJlamVjdGVkID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gIGhhbmRsZXJzLnJlamVjdCh0aGlzLnByb21pc2UsIHZhbHVlKTtcbn07XG5RdWV1ZUl0ZW0ucHJvdG90eXBlLm90aGVyQ2FsbFJlamVjdGVkID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gIHVud3JhcCh0aGlzLnByb21pc2UsIHRoaXMub25SZWplY3RlZCwgdmFsdWUpO1xufTtcblxuZnVuY3Rpb24gdW53cmFwKHByb21pc2UsIGZ1bmMsIHZhbHVlKSB7XG4gIGltbWVkaWF0ZShmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHJldHVyblZhbHVlO1xuICAgIHRyeSB7XG4gICAgICByZXR1cm5WYWx1ZSA9IGZ1bmModmFsdWUpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBoYW5kbGVycy5yZWplY3QocHJvbWlzZSwgZSk7XG4gICAgfVxuICAgIGlmIChyZXR1cm5WYWx1ZSA9PT0gcHJvbWlzZSkge1xuICAgICAgaGFuZGxlcnMucmVqZWN0KHByb21pc2UsIG5ldyBUeXBlRXJyb3IoJ0Nhbm5vdCByZXNvbHZlIHByb21pc2Ugd2l0aCBpdHNlbGYnKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGhhbmRsZXJzLnJlc29sdmUocHJvbWlzZSwgcmV0dXJuVmFsdWUpO1xuICAgIH1cbiAgfSk7XG59XG5cbmhhbmRsZXJzLnJlc29sdmUgPSBmdW5jdGlvbiAoc2VsZiwgdmFsdWUpIHtcbiAgdmFyIHJlc3VsdCA9IHRyeUNhdGNoKGdldFRoZW4sIHZhbHVlKTtcbiAgaWYgKHJlc3VsdC5zdGF0dXMgPT09ICdlcnJvcicpIHtcbiAgICByZXR1cm4gaGFuZGxlcnMucmVqZWN0KHNlbGYsIHJlc3VsdC52YWx1ZSk7XG4gIH1cbiAgdmFyIHRoZW5hYmxlID0gcmVzdWx0LnZhbHVlO1xuXG4gIGlmICh0aGVuYWJsZSkge1xuICAgIHNhZmVseVJlc29sdmVUaGVuYWJsZShzZWxmLCB0aGVuYWJsZSk7XG4gIH0gZWxzZSB7XG4gICAgc2VsZi5zdGF0ZSA9IEZVTEZJTExFRDtcbiAgICBzZWxmLm91dGNvbWUgPSB2YWx1ZTtcbiAgICB2YXIgaSA9IC0xO1xuICAgIHZhciBsZW4gPSBzZWxmLnF1ZXVlLmxlbmd0aDtcbiAgICB3aGlsZSAoKytpIDwgbGVuKSB7XG4gICAgICBzZWxmLnF1ZXVlW2ldLmNhbGxGdWxmaWxsZWQodmFsdWUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gc2VsZjtcbn07XG5oYW5kbGVycy5yZWplY3QgPSBmdW5jdGlvbiAoc2VsZiwgZXJyb3IpIHtcbiAgc2VsZi5zdGF0ZSA9IFJFSkVDVEVEO1xuICBzZWxmLm91dGNvbWUgPSBlcnJvcjtcbiAgdmFyIGkgPSAtMTtcbiAgdmFyIGxlbiA9IHNlbGYucXVldWUubGVuZ3RoO1xuICB3aGlsZSAoKytpIDwgbGVuKSB7XG4gICAgc2VsZi5xdWV1ZVtpXS5jYWxsUmVqZWN0ZWQoZXJyb3IpO1xuICB9XG4gIHJldHVybiBzZWxmO1xufTtcblxuZnVuY3Rpb24gZ2V0VGhlbihvYmopIHtcbiAgLy8gTWFrZSBzdXJlIHdlIG9ubHkgYWNjZXNzIHRoZSBhY2Nlc3NvciBvbmNlIGFzIHJlcXVpcmVkIGJ5IHRoZSBzcGVjXG4gIHZhciB0aGVuID0gb2JqICYmIG9iai50aGVuO1xuICBpZiAob2JqICYmICh0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyB8fCB0eXBlb2Ygb2JqID09PSAnZnVuY3Rpb24nKSAmJiB0eXBlb2YgdGhlbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBmdW5jdGlvbiBhcHB5VGhlbigpIHtcbiAgICAgIHRoZW4uYXBwbHkob2JqLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH1cbn1cblxuZnVuY3Rpb24gc2FmZWx5UmVzb2x2ZVRoZW5hYmxlKHNlbGYsIHRoZW5hYmxlKSB7XG4gIC8vIEVpdGhlciBmdWxmaWxsLCByZWplY3Qgb3IgcmVqZWN0IHdpdGggZXJyb3JcbiAgdmFyIGNhbGxlZCA9IGZhbHNlO1xuICBmdW5jdGlvbiBvbkVycm9yKHZhbHVlKSB7XG4gICAgaWYgKGNhbGxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjYWxsZWQgPSB0cnVlO1xuICAgIGhhbmRsZXJzLnJlamVjdChzZWxmLCB2YWx1ZSk7XG4gIH1cblxuICBmdW5jdGlvbiBvblN1Y2Nlc3ModmFsdWUpIHtcbiAgICBpZiAoY2FsbGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNhbGxlZCA9IHRydWU7XG4gICAgaGFuZGxlcnMucmVzb2x2ZShzZWxmLCB2YWx1ZSk7XG4gIH1cblxuICBmdW5jdGlvbiB0cnlUb1Vud3JhcCgpIHtcbiAgICB0aGVuYWJsZShvblN1Y2Nlc3MsIG9uRXJyb3IpO1xuICB9XG5cbiAgdmFyIHJlc3VsdCA9IHRyeUNhdGNoKHRyeVRvVW53cmFwKTtcbiAgaWYgKHJlc3VsdC5zdGF0dXMgPT09ICdlcnJvcicpIHtcbiAgICBvbkVycm9yKHJlc3VsdC52YWx1ZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gdHJ5Q2F0Y2goZnVuYywgdmFsdWUpIHtcbiAgdmFyIG91dCA9IHt9O1xuICB0cnkge1xuICAgIG91dC52YWx1ZSA9IGZ1bmModmFsdWUpO1xuICAgIG91dC5zdGF0dXMgPSAnc3VjY2Vzcyc7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBvdXQuc3RhdHVzID0gJ2Vycm9yJztcbiAgICBvdXQudmFsdWUgPSBlO1xuICB9XG4gIHJldHVybiBvdXQ7XG59XG5cblByb21pc2UucmVzb2x2ZSA9IHJlc29sdmU7XG5mdW5jdGlvbiByZXNvbHZlKHZhbHVlKSB7XG4gIGlmICh2YWx1ZSBpbnN0YW5jZW9mIHRoaXMpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIGhhbmRsZXJzLnJlc29sdmUobmV3IHRoaXMoSU5URVJOQUwpLCB2YWx1ZSk7XG59XG5cblByb21pc2UucmVqZWN0ID0gcmVqZWN0O1xuZnVuY3Rpb24gcmVqZWN0KHJlYXNvbikge1xuICB2YXIgcHJvbWlzZSA9IG5ldyB0aGlzKElOVEVSTkFMKTtcbiAgcmV0dXJuIGhhbmRsZXJzLnJlamVjdChwcm9taXNlLCByZWFzb24pO1xufVxuXG5Qcm9taXNlLmFsbCA9IGFsbDtcbmZ1bmN0aW9uIGFsbChpdGVyYWJsZSkge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoaXRlcmFibGUpICE9PSAnW29iamVjdCBBcnJheV0nKSB7XG4gICAgcmV0dXJuIHRoaXMucmVqZWN0KG5ldyBUeXBlRXJyb3IoJ211c3QgYmUgYW4gYXJyYXknKSk7XG4gIH1cblxuICB2YXIgbGVuID0gaXRlcmFibGUubGVuZ3RoO1xuICB2YXIgY2FsbGVkID0gZmFsc2U7XG4gIGlmICghbGVuKSB7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZShbXSk7XG4gIH1cblxuICB2YXIgdmFsdWVzID0gbmV3IEFycmF5KGxlbik7XG4gIHZhciByZXNvbHZlZCA9IDA7XG4gIHZhciBpID0gLTE7XG4gIHZhciBwcm9taXNlID0gbmV3IHRoaXMoSU5URVJOQUwpO1xuXG4gIHdoaWxlICgrK2kgPCBsZW4pIHtcbiAgICBhbGxSZXNvbHZlcihpdGVyYWJsZVtpXSwgaSk7XG4gIH1cbiAgcmV0dXJuIHByb21pc2U7XG4gIGZ1bmN0aW9uIGFsbFJlc29sdmVyKHZhbHVlLCBpKSB7XG4gICAgc2VsZi5yZXNvbHZlKHZhbHVlKS50aGVuKHJlc29sdmVGcm9tQWxsLCBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgIGlmICghY2FsbGVkKSB7XG4gICAgICAgIGNhbGxlZCA9IHRydWU7XG4gICAgICAgIGhhbmRsZXJzLnJlamVjdChwcm9taXNlLCBlcnJvcik7XG4gICAgICB9XG4gICAgfSk7XG4gICAgZnVuY3Rpb24gcmVzb2x2ZUZyb21BbGwob3V0VmFsdWUpIHtcbiAgICAgIHZhbHVlc1tpXSA9IG91dFZhbHVlO1xuICAgICAgaWYgKCsrcmVzb2x2ZWQgPT09IGxlbiAmJiAhY2FsbGVkKSB7XG4gICAgICAgIGNhbGxlZCA9IHRydWU7XG4gICAgICAgIGhhbmRsZXJzLnJlc29sdmUocHJvbWlzZSwgdmFsdWVzKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuUHJvbWlzZS5yYWNlID0gcmFjZTtcbmZ1bmN0aW9uIHJhY2UoaXRlcmFibGUpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICBpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGl0ZXJhYmxlKSAhPT0gJ1tvYmplY3QgQXJyYXldJykge1xuICAgIHJldHVybiB0aGlzLnJlamVjdChuZXcgVHlwZUVycm9yKCdtdXN0IGJlIGFuIGFycmF5JykpO1xuICB9XG5cbiAgdmFyIGxlbiA9IGl0ZXJhYmxlLmxlbmd0aDtcbiAgdmFyIGNhbGxlZCA9IGZhbHNlO1xuICBpZiAoIWxlbikge1xuICAgIHJldHVybiB0aGlzLnJlc29sdmUoW10pO1xuICB9XG5cbiAgdmFyIGkgPSAtMTtcbiAgdmFyIHByb21pc2UgPSBuZXcgdGhpcyhJTlRFUk5BTCk7XG5cbiAgd2hpbGUgKCsraSA8IGxlbikge1xuICAgIHJlc29sdmVyKGl0ZXJhYmxlW2ldKTtcbiAgfVxuICByZXR1cm4gcHJvbWlzZTtcbiAgZnVuY3Rpb24gcmVzb2x2ZXIodmFsdWUpIHtcbiAgICBzZWxmLnJlc29sdmUodmFsdWUpLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG4gICAgICBpZiAoIWNhbGxlZCkge1xuICAgICAgICBjYWxsZWQgPSB0cnVlO1xuICAgICAgICBoYW5kbGVycy5yZXNvbHZlKHByb21pc2UsIHJlc3BvbnNlKTtcbiAgICAgIH1cbiAgICB9LCBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgIGlmICghY2FsbGVkKSB7XG4gICAgICAgIGNhbGxlZCA9IHRydWU7XG4gICAgICAgIGhhbmRsZXJzLnJlamVjdChwcm9taXNlLCBlcnJvcik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cblxufSx7XCIxXCI6MX1dLDM6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuKGZ1bmN0aW9uIChnbG9iYWwpe1xuJ3VzZSBzdHJpY3QnO1xuaWYgKHR5cGVvZiBnbG9iYWwuUHJvbWlzZSAhPT0gJ2Z1bmN0aW9uJykge1xuICBnbG9iYWwuUHJvbWlzZSA9IF9kZXJlcV8oMik7XG59XG5cbn0pLmNhbGwodGhpcyx0eXBlb2YgZ2xvYmFsICE9PSBcInVuZGVmaW5lZFwiID8gZ2xvYmFsIDogdHlwZW9mIHNlbGYgIT09IFwidW5kZWZpbmVkXCIgPyBzZWxmIDogdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiA/IHdpbmRvdyA6IHt9KVxufSx7XCIyXCI6Mn1dLDQ6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuJ3VzZSBzdHJpY3QnO1xuXG52YXIgX3R5cGVvZiA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiID8gZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfSA6IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbmZ1bmN0aW9uIGdldElEQigpIHtcbiAgICAvKiBnbG9iYWwgaW5kZXhlZERCLHdlYmtpdEluZGV4ZWREQixtb3pJbmRleGVkREIsT0luZGV4ZWREQixtc0luZGV4ZWREQiAqL1xuICAgIHRyeSB7XG4gICAgICAgIGlmICh0eXBlb2YgaW5kZXhlZERCICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgcmV0dXJuIGluZGV4ZWREQjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHdlYmtpdEluZGV4ZWREQiAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHJldHVybiB3ZWJraXRJbmRleGVkREI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBtb3pJbmRleGVkREIgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICByZXR1cm4gbW96SW5kZXhlZERCO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgT0luZGV4ZWREQiAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHJldHVybiBPSW5kZXhlZERCO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgbXNJbmRleGVkREIgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICByZXR1cm4gbXNJbmRleGVkREI7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG59XG5cbnZhciBpZGIgPSBnZXRJREIoKTtcblxuZnVuY3Rpb24gaXNJbmRleGVkREJWYWxpZCgpIHtcbiAgICB0cnkge1xuICAgICAgICAvLyBJbml0aWFsaXplIEluZGV4ZWREQjsgZmFsbCBiYWNrIHRvIHZlbmRvci1wcmVmaXhlZCB2ZXJzaW9uc1xuICAgICAgICAvLyBpZiBuZWVkZWQuXG4gICAgICAgIGlmICghaWRiIHx8ICFpZGIub3Blbikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIC8vIFdlIG1pbWljIFBvdWNoREIgaGVyZTtcbiAgICAgICAgLy9cbiAgICAgICAgLy8gV2UgdGVzdCBmb3Igb3BlbkRhdGFiYXNlIGJlY2F1c2UgSUUgTW9iaWxlIGlkZW50aWZpZXMgaXRzZWxmXG4gICAgICAgIC8vIGFzIFNhZmFyaS4gT2ggdGhlIGx1bHouLi5cbiAgICAgICAgdmFyIGlzU2FmYXJpID0gdHlwZW9mIG9wZW5EYXRhYmFzZSAhPT0gJ3VuZGVmaW5lZCcgJiYgLyhTYWZhcml8aVBob25lfGlQYWR8aVBvZCkvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkgJiYgIS9DaHJvbWUvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkgJiYgIS9CbGFja0JlcnJ5Ly50ZXN0KG5hdmlnYXRvci5wbGF0Zm9ybSk7XG5cbiAgICAgICAgdmFyIGhhc0ZldGNoID0gdHlwZW9mIGZldGNoID09PSAnZnVuY3Rpb24nICYmIGZldGNoLnRvU3RyaW5nKCkuaW5kZXhPZignW25hdGl2ZSBjb2RlJykgIT09IC0xO1xuXG4gICAgICAgIC8vIFNhZmFyaSA8MTAuMSBkb2VzIG5vdCBtZWV0IG91ciByZXF1aXJlbWVudHMgZm9yIElEQiBzdXBwb3J0XG4gICAgICAgIC8vIChzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9wb3VjaGRiL3BvdWNoZGIvaXNzdWVzLzU1NzIpLlxuICAgICAgICAvLyBTYWZhcmkgMTAuMSBzaGlwcGVkIHdpdGggZmV0Y2gsIHdlIGNhbiB1c2UgdGhhdCB0byBkZXRlY3QgaXQuXG4gICAgICAgIC8vIE5vdGU6IHRoaXMgY3JlYXRlcyBpc3N1ZXMgd2l0aCBgd2luZG93LmZldGNoYCBwb2x5ZmlsbHMgYW5kXG4gICAgICAgIC8vIG92ZXJyaWRlczsgc2VlOlxuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbG9jYWxGb3JhZ2UvbG9jYWxGb3JhZ2UvaXNzdWVzLzg1NlxuICAgICAgICByZXR1cm4gKCFpc1NhZmFyaSB8fCBoYXNGZXRjaCkgJiYgdHlwZW9mIGluZGV4ZWREQiAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAgICAgLy8gc29tZSBvdXRkYXRlZCBpbXBsZW1lbnRhdGlvbnMgb2YgSURCIHRoYXQgYXBwZWFyIG9uIFNhbXN1bmdcbiAgICAgICAgLy8gYW5kIEhUQyBBbmRyb2lkIGRldmljZXMgPDQuNCBhcmUgbWlzc2luZyBJREJLZXlSYW5nZVxuICAgICAgICAvLyBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9tb3ppbGxhL2xvY2FsRm9yYWdlL2lzc3Vlcy8xMjhcbiAgICAgICAgLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS9sb2NhbEZvcmFnZS9pc3N1ZXMvMjcyXG4gICAgICAgIHR5cGVvZiBJREJLZXlSYW5nZSAhPT0gJ3VuZGVmaW5lZCc7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuXG4vLyBBYnN0cmFjdHMgY29uc3RydWN0aW5nIGEgQmxvYiBvYmplY3QsIHNvIGl0IGFsc28gd29ya3MgaW4gb2xkZXJcbi8vIGJyb3dzZXJzIHRoYXQgZG9uJ3Qgc3VwcG9ydCB0aGUgbmF0aXZlIEJsb2IgY29uc3RydWN0b3IuIChpLmUuXG4vLyBvbGQgUXRXZWJLaXQgdmVyc2lvbnMsIGF0IGxlYXN0KS5cbi8vIEFic3RyYWN0cyBjb25zdHJ1Y3RpbmcgYSBCbG9iIG9iamVjdCwgc28gaXQgYWxzbyB3b3JrcyBpbiBvbGRlclxuLy8gYnJvd3NlcnMgdGhhdCBkb24ndCBzdXBwb3J0IHRoZSBuYXRpdmUgQmxvYiBjb25zdHJ1Y3Rvci4gKGkuZS5cbi8vIG9sZCBRdFdlYktpdCB2ZXJzaW9ucywgYXQgbGVhc3QpLlxuZnVuY3Rpb24gY3JlYXRlQmxvYihwYXJ0cywgcHJvcGVydGllcykge1xuICAgIC8qIGdsb2JhbCBCbG9iQnVpbGRlcixNU0Jsb2JCdWlsZGVyLE1vekJsb2JCdWlsZGVyLFdlYktpdEJsb2JCdWlsZGVyICovXG4gICAgcGFydHMgPSBwYXJ0cyB8fCBbXTtcbiAgICBwcm9wZXJ0aWVzID0gcHJvcGVydGllcyB8fCB7fTtcbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gbmV3IEJsb2IocGFydHMsIHByb3BlcnRpZXMpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgaWYgKGUubmFtZSAhPT0gJ1R5cGVFcnJvcicpIHtcbiAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIEJ1aWxkZXIgPSB0eXBlb2YgQmxvYkJ1aWxkZXIgIT09ICd1bmRlZmluZWQnID8gQmxvYkJ1aWxkZXIgOiB0eXBlb2YgTVNCbG9iQnVpbGRlciAhPT0gJ3VuZGVmaW5lZCcgPyBNU0Jsb2JCdWlsZGVyIDogdHlwZW9mIE1vekJsb2JCdWlsZGVyICE9PSAndW5kZWZpbmVkJyA/IE1vekJsb2JCdWlsZGVyIDogV2ViS2l0QmxvYkJ1aWxkZXI7XG4gICAgICAgIHZhciBidWlsZGVyID0gbmV3IEJ1aWxkZXIoKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXJ0cy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQocGFydHNbaV0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBidWlsZGVyLmdldEJsb2IocHJvcGVydGllcy50eXBlKTtcbiAgICB9XG59XG5cbi8vIFRoaXMgaXMgQ29tbW9uSlMgYmVjYXVzZSBsaWUgaXMgYW4gZXh0ZXJuYWwgZGVwZW5kZW5jeSwgc28gUm9sbHVwXG4vLyBjYW4ganVzdCBpZ25vcmUgaXQuXG5pZiAodHlwZW9mIFByb21pc2UgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgLy8gSW4gdGhlIFwibm9wcm9taXNlc1wiIGJ1aWxkIHRoaXMgd2lsbCBqdXN0IHRocm93IGlmIHlvdSBkb24ndCBoYXZlXG4gICAgLy8gYSBnbG9iYWwgcHJvbWlzZSBvYmplY3QsIGJ1dCBpdCB3b3VsZCB0aHJvdyBhbnl3YXkgbGF0ZXIuXG4gICAgX2RlcmVxXygzKTtcbn1cbnZhciBQcm9taXNlJDEgPSBQcm9taXNlO1xuXG5mdW5jdGlvbiBleGVjdXRlQ2FsbGJhY2socHJvbWlzZSwgY2FsbGJhY2spIHtcbiAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgICAgcHJvbWlzZS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICAgICAgICAgIGNhbGxiYWNrKG51bGwsIHJlc3VsdCk7XG4gICAgICAgIH0sIGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgY2FsbGJhY2soZXJyb3IpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGV4ZWN1dGVUd29DYWxsYmFja3MocHJvbWlzZSwgY2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spIHtcbiAgICBpZiAodHlwZW9mIGNhbGxiYWNrID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHByb21pc2UudGhlbihjYWxsYmFjayk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBlcnJvckNhbGxiYWNrID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHByb21pc2VbXCJjYXRjaFwiXShlcnJvckNhbGxiYWNrKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZUtleShrZXkpIHtcbiAgICAvLyBDYXN0IHRoZSBrZXkgdG8gYSBzdHJpbmcsIGFzIHRoYXQncyBhbGwgd2UgY2FuIHNldCBhcyBhIGtleS5cbiAgICBpZiAodHlwZW9mIGtleSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgY29uc29sZS53YXJuKGtleSArICcgdXNlZCBhcyBhIGtleSwgYnV0IGl0IGlzIG5vdCBhIHN0cmluZy4nKTtcbiAgICAgICAga2V5ID0gU3RyaW5nKGtleSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGtleTtcbn1cblxuZnVuY3Rpb24gZ2V0Q2FsbGJhY2soKSB7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggJiYgdHlwZW9mIGFyZ3VtZW50c1thcmd1bWVudHMubGVuZ3RoIC0gMV0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIGFyZ3VtZW50c1thcmd1bWVudHMubGVuZ3RoIC0gMV07XG4gICAgfVxufVxuXG4vLyBTb21lIGNvZGUgb3JpZ2luYWxseSBmcm9tIGFzeW5jX3N0b3JhZ2UuanMgaW5cbi8vIFtHYWlhXShodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS1iMmcvZ2FpYSkuXG5cbnZhciBERVRFQ1RfQkxPQl9TVVBQT1JUX1NUT1JFID0gJ2xvY2FsLWZvcmFnZS1kZXRlY3QtYmxvYi1zdXBwb3J0JztcbnZhciBzdXBwb3J0c0Jsb2JzID0gdm9pZCAwO1xudmFyIGRiQ29udGV4dHMgPSB7fTtcbnZhciB0b1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG5cbi8vIFRyYW5zYWN0aW9uIE1vZGVzXG52YXIgUkVBRF9PTkxZID0gJ3JlYWRvbmx5JztcbnZhciBSRUFEX1dSSVRFID0gJ3JlYWR3cml0ZSc7XG5cbi8vIFRyYW5zZm9ybSBhIGJpbmFyeSBzdHJpbmcgdG8gYW4gYXJyYXkgYnVmZmVyLCBiZWNhdXNlIG90aGVyd2lzZVxuLy8gd2VpcmQgc3R1ZmYgaGFwcGVucyB3aGVuIHlvdSB0cnkgdG8gd29yayB3aXRoIHRoZSBiaW5hcnkgc3RyaW5nIGRpcmVjdGx5LlxuLy8gSXQgaXMga25vd24uXG4vLyBGcm9tIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTQ5Njc2NDcvIChjb250aW51ZXMgb24gbmV4dCBsaW5lKVxuLy8gZW5jb2RlLWRlY29kZS1pbWFnZS13aXRoLWJhc2U2NC1icmVha3MtaW1hZ2UgKDIwMTMtMDQtMjEpXG5mdW5jdGlvbiBfYmluU3RyaW5nVG9BcnJheUJ1ZmZlcihiaW4pIHtcbiAgICB2YXIgbGVuZ3RoID0gYmluLmxlbmd0aDtcbiAgICB2YXIgYnVmID0gbmV3IEFycmF5QnVmZmVyKGxlbmd0aCk7XG4gICAgdmFyIGFyciA9IG5ldyBVaW50OEFycmF5KGJ1Zik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICBhcnJbaV0gPSBiaW4uY2hhckNvZGVBdChpKTtcbiAgICB9XG4gICAgcmV0dXJuIGJ1Zjtcbn1cblxuLy9cbi8vIEJsb2JzIGFyZSBub3Qgc3VwcG9ydGVkIGluIGFsbCB2ZXJzaW9ucyBvZiBJbmRleGVkREIsIG5vdGFibHlcbi8vIENocm9tZSA8MzcgYW5kIEFuZHJvaWQgPDUuIEluIHRob3NlIHZlcnNpb25zLCBzdG9yaW5nIGEgYmxvYiB3aWxsIHRocm93LlxuLy9cbi8vIFZhcmlvdXMgb3RoZXIgYmxvYiBidWdzIGV4aXN0IGluIENocm9tZSB2MzctNDIgKGluY2x1c2l2ZSkuXG4vLyBEZXRlY3RpbmcgdGhlbSBpcyBleHBlbnNpdmUgYW5kIGNvbmZ1c2luZyB0byB1c2VycywgYW5kIENocm9tZSAzNy00MlxuLy8gaXMgYXQgdmVyeSBsb3cgdXNhZ2Ugd29ybGR3aWRlLCBzbyB3ZSBkbyBhIGhhY2t5IHVzZXJBZ2VudCBjaGVjayBpbnN0ZWFkLlxuLy9cbi8vIGNvbnRlbnQtdHlwZSBidWc6IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD00MDgxMjBcbi8vIDQwNCBidWc6IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD00NDc5MTZcbi8vIEZpbGVSZWFkZXIgYnVnOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9NDQ3ODM2XG4vL1xuLy8gQ29kZSBib3Jyb3dlZCBmcm9tIFBvdWNoREIuIFNlZTpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9wb3VjaGRiL3BvdWNoZGIvYmxvYi9tYXN0ZXIvcGFja2FnZXMvbm9kZV9tb2R1bGVzL3BvdWNoZGItYWRhcHRlci1pZGIvc3JjL2Jsb2JTdXBwb3J0LmpzXG4vL1xuZnVuY3Rpb24gX2NoZWNrQmxvYlN1cHBvcnRXaXRob3V0Q2FjaGluZyhpZGIpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UkMShmdW5jdGlvbiAocmVzb2x2ZSkge1xuICAgICAgICB2YXIgdHhuID0gaWRiLnRyYW5zYWN0aW9uKERFVEVDVF9CTE9CX1NVUFBPUlRfU1RPUkUsIFJFQURfV1JJVEUpO1xuICAgICAgICB2YXIgYmxvYiA9IGNyZWF0ZUJsb2IoWycnXSk7XG4gICAgICAgIHR4bi5vYmplY3RTdG9yZShERVRFQ1RfQkxPQl9TVVBQT1JUX1NUT1JFKS5wdXQoYmxvYiwgJ2tleScpO1xuXG4gICAgICAgIHR4bi5vbmFib3J0ID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgIC8vIElmIHRoZSB0cmFuc2FjdGlvbiBhYm9ydHMgbm93IGl0cyBkdWUgdG8gbm90IGJlaW5nIGFibGUgdG9cbiAgICAgICAgICAgIC8vIHdyaXRlIHRvIHRoZSBkYXRhYmFzZSwgbGlrZWx5IGR1ZSB0byB0aGUgZGlzayBiZWluZyBmdWxsXG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgdHhuLm9uY29tcGxldGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgbWF0Y2hlZENocm9tZSA9IG5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL0Nocm9tZVxcLyhcXGQrKS8pO1xuICAgICAgICAgICAgdmFyIG1hdGNoZWRFZGdlID0gbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvRWRnZVxcLy8pO1xuICAgICAgICAgICAgLy8gTVMgRWRnZSBwcmV0ZW5kcyB0byBiZSBDaHJvbWUgNDI6XG4gICAgICAgICAgICAvLyBodHRwczovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L2hoODY5MzAxJTI4dj12cy44NSUyOS5hc3B4XG4gICAgICAgICAgICByZXNvbHZlKG1hdGNoZWRFZGdlIHx8ICFtYXRjaGVkQ2hyb21lIHx8IHBhcnNlSW50KG1hdGNoZWRDaHJvbWVbMV0sIDEwKSA+PSA0Myk7XG4gICAgICAgIH07XG4gICAgfSlbXCJjYXRjaFwiXShmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTsgLy8gZXJyb3IsIHNvIGFzc3VtZSB1bnN1cHBvcnRlZFxuICAgIH0pO1xufVxuXG5mdW5jdGlvbiBfY2hlY2tCbG9iU3VwcG9ydChpZGIpIHtcbiAgICBpZiAodHlwZW9mIHN1cHBvcnRzQmxvYnMgPT09ICdib29sZWFuJykge1xuICAgICAgICByZXR1cm4gUHJvbWlzZSQxLnJlc29sdmUoc3VwcG9ydHNCbG9icyk7XG4gICAgfVxuICAgIHJldHVybiBfY2hlY2tCbG9iU3VwcG9ydFdpdGhvdXRDYWNoaW5nKGlkYikudGhlbihmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgc3VwcG9ydHNCbG9icyA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gc3VwcG9ydHNCbG9icztcbiAgICB9KTtcbn1cblxuZnVuY3Rpb24gX2RlZmVyUmVhZGluZXNzKGRiSW5mbykge1xuICAgIHZhciBkYkNvbnRleHQgPSBkYkNvbnRleHRzW2RiSW5mby5uYW1lXTtcblxuICAgIC8vIENyZWF0ZSBhIGRlZmVycmVkIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIGN1cnJlbnQgZGF0YWJhc2Ugb3BlcmF0aW9uLlxuICAgIHZhciBkZWZlcnJlZE9wZXJhdGlvbiA9IHt9O1xuXG4gICAgZGVmZXJyZWRPcGVyYXRpb24ucHJvbWlzZSA9IG5ldyBQcm9taXNlJDEoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBkZWZlcnJlZE9wZXJhdGlvbi5yZXNvbHZlID0gcmVzb2x2ZTtcbiAgICAgICAgZGVmZXJyZWRPcGVyYXRpb24ucmVqZWN0ID0gcmVqZWN0O1xuICAgIH0pO1xuXG4gICAgLy8gRW5xdWV1ZSB0aGUgZGVmZXJyZWQgb3BlcmF0aW9uLlxuICAgIGRiQ29udGV4dC5kZWZlcnJlZE9wZXJhdGlvbnMucHVzaChkZWZlcnJlZE9wZXJhdGlvbik7XG5cbiAgICAvLyBDaGFpbiBpdHMgcHJvbWlzZSB0byB0aGUgZGF0YWJhc2UgcmVhZGluZXNzLlxuICAgIGlmICghZGJDb250ZXh0LmRiUmVhZHkpIHtcbiAgICAgICAgZGJDb250ZXh0LmRiUmVhZHkgPSBkZWZlcnJlZE9wZXJhdGlvbi5wcm9taXNlO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGRiQ29udGV4dC5kYlJlYWR5ID0gZGJDb250ZXh0LmRiUmVhZHkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gZGVmZXJyZWRPcGVyYXRpb24ucHJvbWlzZTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBfYWR2YW5jZVJlYWRpbmVzcyhkYkluZm8pIHtcbiAgICB2YXIgZGJDb250ZXh0ID0gZGJDb250ZXh0c1tkYkluZm8ubmFtZV07XG5cbiAgICAvLyBEZXF1ZXVlIGEgZGVmZXJyZWQgb3BlcmF0aW9uLlxuICAgIHZhciBkZWZlcnJlZE9wZXJhdGlvbiA9IGRiQ29udGV4dC5kZWZlcnJlZE9wZXJhdGlvbnMucG9wKCk7XG5cbiAgICAvLyBSZXNvbHZlIGl0cyBwcm9taXNlICh3aGljaCBpcyBwYXJ0IG9mIHRoZSBkYXRhYmFzZSByZWFkaW5lc3NcbiAgICAvLyBjaGFpbiBvZiBwcm9taXNlcykuXG4gICAgaWYgKGRlZmVycmVkT3BlcmF0aW9uKSB7XG4gICAgICAgIGRlZmVycmVkT3BlcmF0aW9uLnJlc29sdmUoKTtcbiAgICAgICAgcmV0dXJuIGRlZmVycmVkT3BlcmF0aW9uLnByb21pc2U7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBfcmVqZWN0UmVhZGluZXNzKGRiSW5mbywgZXJyKSB7XG4gICAgdmFyIGRiQ29udGV4dCA9IGRiQ29udGV4dHNbZGJJbmZvLm5hbWVdO1xuXG4gICAgLy8gRGVxdWV1ZSBhIGRlZmVycmVkIG9wZXJhdGlvbi5cbiAgICB2YXIgZGVmZXJyZWRPcGVyYXRpb24gPSBkYkNvbnRleHQuZGVmZXJyZWRPcGVyYXRpb25zLnBvcCgpO1xuXG4gICAgLy8gUmVqZWN0IGl0cyBwcm9taXNlICh3aGljaCBpcyBwYXJ0IG9mIHRoZSBkYXRhYmFzZSByZWFkaW5lc3NcbiAgICAvLyBjaGFpbiBvZiBwcm9taXNlcykuXG4gICAgaWYgKGRlZmVycmVkT3BlcmF0aW9uKSB7XG4gICAgICAgIGRlZmVycmVkT3BlcmF0aW9uLnJlamVjdChlcnIpO1xuICAgICAgICByZXR1cm4gZGVmZXJyZWRPcGVyYXRpb24ucHJvbWlzZTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIF9nZXRDb25uZWN0aW9uKGRiSW5mbywgdXBncmFkZU5lZWRlZCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSQxKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZGJDb250ZXh0c1tkYkluZm8ubmFtZV0gPSBkYkNvbnRleHRzW2RiSW5mby5uYW1lXSB8fCBjcmVhdGVEYkNvbnRleHQoKTtcblxuICAgICAgICBpZiAoZGJJbmZvLmRiKSB7XG4gICAgICAgICAgICBpZiAodXBncmFkZU5lZWRlZCkge1xuICAgICAgICAgICAgICAgIF9kZWZlclJlYWRpbmVzcyhkYkluZm8pO1xuICAgICAgICAgICAgICAgIGRiSW5mby5kYi5jbG9zZSgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShkYkluZm8uZGIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGRiQXJncyA9IFtkYkluZm8ubmFtZV07XG5cbiAgICAgICAgaWYgKHVwZ3JhZGVOZWVkZWQpIHtcbiAgICAgICAgICAgIGRiQXJncy5wdXNoKGRiSW5mby52ZXJzaW9uKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBvcGVucmVxID0gaWRiLm9wZW4uYXBwbHkoaWRiLCBkYkFyZ3MpO1xuXG4gICAgICAgIGlmICh1cGdyYWRlTmVlZGVkKSB7XG4gICAgICAgICAgICBvcGVucmVxLm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgdmFyIGRiID0gb3BlbnJlcS5yZXN1bHQ7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgZGIuY3JlYXRlT2JqZWN0U3RvcmUoZGJJbmZvLnN0b3JlTmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlLm9sZFZlcnNpb24gPD0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQWRkZWQgd2hlbiBzdXBwb3J0IGZvciBibG9iIHNoaW1zIHdhcyBhZGRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgZGIuY3JlYXRlT2JqZWN0U3RvcmUoREVURUNUX0JMT0JfU1VQUE9SVF9TVE9SRSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGNhdGNoIChleCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXgubmFtZSA9PT0gJ0NvbnN0cmFpbnRFcnJvcicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybignVGhlIGRhdGFiYXNlIFwiJyArIGRiSW5mby5uYW1lICsgJ1wiJyArICcgaGFzIGJlZW4gdXBncmFkZWQgZnJvbSB2ZXJzaW9uICcgKyBlLm9sZFZlcnNpb24gKyAnIHRvIHZlcnNpb24gJyArIGUubmV3VmVyc2lvbiArICcsIGJ1dCB0aGUgc3RvcmFnZSBcIicgKyBkYkluZm8uc3RvcmVOYW1lICsgJ1wiIGFscmVhZHkgZXhpc3RzLicpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgZXg7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgb3BlbnJlcS5vbmVycm9yID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHJlamVjdChvcGVucmVxLmVycm9yKTtcbiAgICAgICAgfTtcblxuICAgICAgICBvcGVucmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBkYiA9IG9wZW5yZXEucmVzdWx0O1xuICAgICAgICAgICAgZGIub252ZXJzaW9uY2hhbmdlID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICAvLyBUcmlnZ2VyZWQgd2hlbiB0aGUgZGF0YWJhc2UgaXMgbW9kaWZpZWQgKGUuZy4gYWRkaW5nIGFuIG9iamVjdFN0b3JlKSBvclxuICAgICAgICAgICAgICAgIC8vIGRlbGV0ZWQgKGV2ZW4gd2hlbiBpbml0aWF0ZWQgYnkgb3RoZXIgc2Vzc2lvbnMgaW4gZGlmZmVyZW50IHRhYnMpLlxuICAgICAgICAgICAgICAgIC8vIENsb3NpbmcgdGhlIGNvbm5lY3Rpb24gaGVyZSBwcmV2ZW50cyB0aG9zZSBvcGVyYXRpb25zIGZyb20gYmVpbmcgYmxvY2tlZC5cbiAgICAgICAgICAgICAgICAvLyBJZiB0aGUgZGF0YWJhc2UgaXMgYWNjZXNzZWQgYWdhaW4gbGF0ZXIgYnkgdGhpcyBpbnN0YW5jZSwgdGhlIGNvbm5lY3Rpb25cbiAgICAgICAgICAgICAgICAvLyB3aWxsIGJlIHJlb3BlbmVkIG9yIHRoZSBkYXRhYmFzZSByZWNyZWF0ZWQgYXMgbmVlZGVkLlxuICAgICAgICAgICAgICAgIGUudGFyZ2V0LmNsb3NlKCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmVzb2x2ZShkYik7XG4gICAgICAgICAgICBfYWR2YW5jZVJlYWRpbmVzcyhkYkluZm8pO1xuICAgICAgICB9O1xuICAgIH0pO1xufVxuXG5mdW5jdGlvbiBfZ2V0T3JpZ2luYWxDb25uZWN0aW9uKGRiSW5mbykge1xuICAgIHJldHVybiBfZ2V0Q29ubmVjdGlvbihkYkluZm8sIGZhbHNlKTtcbn1cblxuZnVuY3Rpb24gX2dldFVwZ3JhZGVkQ29ubmVjdGlvbihkYkluZm8pIHtcbiAgICByZXR1cm4gX2dldENvbm5lY3Rpb24oZGJJbmZvLCB0cnVlKTtcbn1cblxuZnVuY3Rpb24gX2lzVXBncmFkZU5lZWRlZChkYkluZm8sIGRlZmF1bHRWZXJzaW9uKSB7XG4gICAgaWYgKCFkYkluZm8uZGIpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgdmFyIGlzTmV3U3RvcmUgPSAhZGJJbmZvLmRiLm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnMoZGJJbmZvLnN0b3JlTmFtZSk7XG4gICAgdmFyIGlzRG93bmdyYWRlID0gZGJJbmZvLnZlcnNpb24gPCBkYkluZm8uZGIudmVyc2lvbjtcbiAgICB2YXIgaXNVcGdyYWRlID0gZGJJbmZvLnZlcnNpb24gPiBkYkluZm8uZGIudmVyc2lvbjtcblxuICAgIGlmIChpc0Rvd25ncmFkZSkge1xuICAgICAgICAvLyBJZiB0aGUgdmVyc2lvbiBpcyBub3QgdGhlIGRlZmF1bHQgb25lXG4gICAgICAgIC8vIHRoZW4gd2FybiBmb3IgaW1wb3NzaWJsZSBkb3duZ3JhZGUuXG4gICAgICAgIGlmIChkYkluZm8udmVyc2lvbiAhPT0gZGVmYXVsdFZlcnNpb24pIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignVGhlIGRhdGFiYXNlIFwiJyArIGRiSW5mby5uYW1lICsgJ1wiJyArIFwiIGNhbid0IGJlIGRvd25ncmFkZWQgZnJvbSB2ZXJzaW9uIFwiICsgZGJJbmZvLmRiLnZlcnNpb24gKyAnIHRvIHZlcnNpb24gJyArIGRiSW5mby52ZXJzaW9uICsgJy4nKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBBbGlnbiB0aGUgdmVyc2lvbnMgdG8gcHJldmVudCBlcnJvcnMuXG4gICAgICAgIGRiSW5mby52ZXJzaW9uID0gZGJJbmZvLmRiLnZlcnNpb247XG4gICAgfVxuXG4gICAgaWYgKGlzVXBncmFkZSB8fCBpc05ld1N0b3JlKSB7XG4gICAgICAgIC8vIElmIHRoZSBzdG9yZSBpcyBuZXcgdGhlbiBpbmNyZW1lbnQgdGhlIHZlcnNpb24gKGlmIG5lZWRlZCkuXG4gICAgICAgIC8vIFRoaXMgd2lsbCB0cmlnZ2VyIGFuIFwidXBncmFkZW5lZWRlZFwiIGV2ZW50IHdoaWNoIGlzIHJlcXVpcmVkXG4gICAgICAgIC8vIGZvciBjcmVhdGluZyBhIHN0b3JlLlxuICAgICAgICBpZiAoaXNOZXdTdG9yZSkge1xuICAgICAgICAgICAgdmFyIGluY1ZlcnNpb24gPSBkYkluZm8uZGIudmVyc2lvbiArIDE7XG4gICAgICAgICAgICBpZiAoaW5jVmVyc2lvbiA+IGRiSW5mby52ZXJzaW9uKSB7XG4gICAgICAgICAgICAgICAgZGJJbmZvLnZlcnNpb24gPSBpbmNWZXJzaW9uO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xufVxuXG4vLyBlbmNvZGUgYSBibG9iIGZvciBpbmRleGVkZGIgZW5naW5lcyB0aGF0IGRvbid0IHN1cHBvcnQgYmxvYnNcbmZ1bmN0aW9uIF9lbmNvZGVCbG9iKGJsb2IpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UkMShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIHZhciByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgICAgICByZWFkZXIub25lcnJvciA9IHJlamVjdDtcbiAgICAgICAgcmVhZGVyLm9ubG9hZGVuZCA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICB2YXIgYmFzZTY0ID0gYnRvYShlLnRhcmdldC5yZXN1bHQgfHwgJycpO1xuICAgICAgICAgICAgcmVzb2x2ZSh7XG4gICAgICAgICAgICAgICAgX19sb2NhbF9mb3JhZ2VfZW5jb2RlZF9ibG9iOiB0cnVlLFxuICAgICAgICAgICAgICAgIGRhdGE6IGJhc2U2NCxcbiAgICAgICAgICAgICAgICB0eXBlOiBibG9iLnR5cGVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICByZWFkZXIucmVhZEFzQmluYXJ5U3RyaW5nKGJsb2IpO1xuICAgIH0pO1xufVxuXG4vLyBkZWNvZGUgYW4gZW5jb2RlZCBibG9iXG5mdW5jdGlvbiBfZGVjb2RlQmxvYihlbmNvZGVkQmxvYikge1xuICAgIHZhciBhcnJheUJ1ZmYgPSBfYmluU3RyaW5nVG9BcnJheUJ1ZmZlcihhdG9iKGVuY29kZWRCbG9iLmRhdGEpKTtcbiAgICByZXR1cm4gY3JlYXRlQmxvYihbYXJyYXlCdWZmXSwgeyB0eXBlOiBlbmNvZGVkQmxvYi50eXBlIH0pO1xufVxuXG4vLyBpcyB0aGlzIG9uZSBvZiBvdXIgZmFuY3kgZW5jb2RlZCBibG9icz9cbmZ1bmN0aW9uIF9pc0VuY29kZWRCbG9iKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlICYmIHZhbHVlLl9fbG9jYWxfZm9yYWdlX2VuY29kZWRfYmxvYjtcbn1cblxuLy8gU3BlY2lhbGl6ZSB0aGUgZGVmYXVsdCBgcmVhZHkoKWAgZnVuY3Rpb24gYnkgbWFraW5nIGl0IGRlcGVuZGVudFxuLy8gb24gdGhlIGN1cnJlbnQgZGF0YWJhc2Ugb3BlcmF0aW9ucy4gVGh1cywgdGhlIGRyaXZlciB3aWxsIGJlIGFjdHVhbGx5XG4vLyByZWFkeSB3aGVuIGl0J3MgYmVlbiBpbml0aWFsaXplZCAoZGVmYXVsdCkgKmFuZCogdGhlcmUgYXJlIG5vIHBlbmRpbmdcbi8vIG9wZXJhdGlvbnMgb24gdGhlIGRhdGFiYXNlIChpbml0aWF0ZWQgYnkgc29tZSBvdGhlciBpbnN0YW5jZXMpLlxuZnVuY3Rpb24gX2Z1bGx5UmVhZHkoY2FsbGJhY2spIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICB2YXIgcHJvbWlzZSA9IHNlbGYuX2luaXRSZWFkeSgpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgZGJDb250ZXh0ID0gZGJDb250ZXh0c1tzZWxmLl9kYkluZm8ubmFtZV07XG5cbiAgICAgICAgaWYgKGRiQ29udGV4dCAmJiBkYkNvbnRleHQuZGJSZWFkeSkge1xuICAgICAgICAgICAgcmV0dXJuIGRiQ29udGV4dC5kYlJlYWR5O1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICBleGVjdXRlVHdvQ2FsbGJhY2tzKHByb21pc2UsIGNhbGxiYWNrLCBjYWxsYmFjayk7XG4gICAgcmV0dXJuIHByb21pc2U7XG59XG5cbi8vIFRyeSB0byBlc3RhYmxpc2ggYSBuZXcgZGIgY29ubmVjdGlvbiB0byByZXBsYWNlIHRoZVxuLy8gY3VycmVudCBvbmUgd2hpY2ggaXMgYnJva2VuIChpLmUuIGV4cGVyaWVuY2luZ1xuLy8gSW52YWxpZFN0YXRlRXJyb3Igd2hpbGUgY3JlYXRpbmcgYSB0cmFuc2FjdGlvbikuXG5mdW5jdGlvbiBfdHJ5UmVjb25uZWN0KGRiSW5mbykge1xuICAgIF9kZWZlclJlYWRpbmVzcyhkYkluZm8pO1xuXG4gICAgdmFyIGRiQ29udGV4dCA9IGRiQ29udGV4dHNbZGJJbmZvLm5hbWVdO1xuICAgIHZhciBmb3JhZ2VzID0gZGJDb250ZXh0LmZvcmFnZXM7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZvcmFnZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGZvcmFnZSA9IGZvcmFnZXNbaV07XG4gICAgICAgIGlmIChmb3JhZ2UuX2RiSW5mby5kYikge1xuICAgICAgICAgICAgZm9yYWdlLl9kYkluZm8uZGIuY2xvc2UoKTtcbiAgICAgICAgICAgIGZvcmFnZS5fZGJJbmZvLmRiID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBkYkluZm8uZGIgPSBudWxsO1xuXG4gICAgcmV0dXJuIF9nZXRPcmlnaW5hbENvbm5lY3Rpb24oZGJJbmZvKS50aGVuKGZ1bmN0aW9uIChkYikge1xuICAgICAgICBkYkluZm8uZGIgPSBkYjtcbiAgICAgICAgaWYgKF9pc1VwZ3JhZGVOZWVkZWQoZGJJbmZvKSkge1xuICAgICAgICAgICAgLy8gUmVvcGVuIHRoZSBkYXRhYmFzZSBmb3IgdXBncmFkaW5nLlxuICAgICAgICAgICAgcmV0dXJuIF9nZXRVcGdyYWRlZENvbm5lY3Rpb24oZGJJbmZvKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGI7XG4gICAgfSkudGhlbihmdW5jdGlvbiAoZGIpIHtcbiAgICAgICAgLy8gc3RvcmUgdGhlIGxhdGVzdCBkYiByZWZlcmVuY2VcbiAgICAgICAgLy8gaW4gY2FzZSB0aGUgZGIgd2FzIHVwZ3JhZGVkXG4gICAgICAgIGRiSW5mby5kYiA9IGRiQ29udGV4dC5kYiA9IGRiO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZvcmFnZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGZvcmFnZXNbaV0uX2RiSW5mby5kYiA9IGRiO1xuICAgICAgICB9XG4gICAgfSlbXCJjYXRjaFwiXShmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIF9yZWplY3RSZWFkaW5lc3MoZGJJbmZvLCBlcnIpO1xuICAgICAgICB0aHJvdyBlcnI7XG4gICAgfSk7XG59XG5cbi8vIEZGIGRvZXNuJ3QgbGlrZSBQcm9taXNlcyAobWljcm8tdGFza3MpIGFuZCBJRERCIHN0b3JlIG9wZXJhdGlvbnMsXG4vLyBzbyB3ZSBoYXZlIHRvIGRvIGl0IHdpdGggY2FsbGJhY2tzXG5mdW5jdGlvbiBjcmVhdGVUcmFuc2FjdGlvbihkYkluZm8sIG1vZGUsIGNhbGxiYWNrLCByZXRyaWVzKSB7XG4gICAgaWYgKHJldHJpZXMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXRyaWVzID0gMTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgICB2YXIgdHggPSBkYkluZm8uZGIudHJhbnNhY3Rpb24oZGJJbmZvLnN0b3JlTmFtZSwgbW9kZSk7XG4gICAgICAgIGNhbGxiYWNrKG51bGwsIHR4KTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgaWYgKHJldHJpZXMgPiAwICYmICghZGJJbmZvLmRiIHx8IGVyci5uYW1lID09PSAnSW52YWxpZFN0YXRlRXJyb3InIHx8IGVyci5uYW1lID09PSAnTm90Rm91bmRFcnJvcicpKSB7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZSQxLnJlc29sdmUoKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWRiSW5mby5kYiB8fCBlcnIubmFtZSA9PT0gJ05vdEZvdW5kRXJyb3InICYmICFkYkluZm8uZGIub2JqZWN0U3RvcmVOYW1lcy5jb250YWlucyhkYkluZm8uc3RvcmVOYW1lKSAmJiBkYkluZm8udmVyc2lvbiA8PSBkYkluZm8uZGIudmVyc2lvbikge1xuICAgICAgICAgICAgICAgICAgICAvLyBpbmNyZWFzZSB0aGUgZGIgdmVyc2lvbiwgdG8gY3JlYXRlIHRoZSBuZXcgT2JqZWN0U3RvcmVcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRiSW5mby5kYikge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGJJbmZvLnZlcnNpb24gPSBkYkluZm8uZGIudmVyc2lvbiArIDE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gUmVvcGVuIHRoZSBkYXRhYmFzZSBmb3IgdXBncmFkaW5nLlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gX2dldFVwZ3JhZGVkQ29ubmVjdGlvbihkYkluZm8pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBfdHJ5UmVjb25uZWN0KGRiSW5mbykudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGNyZWF0ZVRyYW5zYWN0aW9uKGRiSW5mbywgbW9kZSwgY2FsbGJhY2ssIHJldHJpZXMgLSAxKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pW1wiY2F0Y2hcIl0oY2FsbGJhY2spO1xuICAgICAgICB9XG5cbiAgICAgICAgY2FsbGJhY2soZXJyKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZURiQ29udGV4dCgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICAvLyBSdW5uaW5nIGxvY2FsRm9yYWdlcyBzaGFyaW5nIGEgZGF0YWJhc2UuXG4gICAgICAgIGZvcmFnZXM6IFtdLFxuICAgICAgICAvLyBTaGFyZWQgZGF0YWJhc2UuXG4gICAgICAgIGRiOiBudWxsLFxuICAgICAgICAvLyBEYXRhYmFzZSByZWFkaW5lc3MgKHByb21pc2UpLlxuICAgICAgICBkYlJlYWR5OiBudWxsLFxuICAgICAgICAvLyBEZWZlcnJlZCBvcGVyYXRpb25zIG9uIHRoZSBkYXRhYmFzZS5cbiAgICAgICAgZGVmZXJyZWRPcGVyYXRpb25zOiBbXVxuICAgIH07XG59XG5cbi8vIE9wZW4gdGhlIEluZGV4ZWREQiBkYXRhYmFzZSAoYXV0b21hdGljYWxseSBjcmVhdGVzIG9uZSBpZiBvbmUgZGlkbid0XG4vLyBwcmV2aW91c2x5IGV4aXN0KSwgdXNpbmcgYW55IG9wdGlvbnMgc2V0IGluIHRoZSBjb25maWcuXG5mdW5jdGlvbiBfaW5pdFN0b3JhZ2Uob3B0aW9ucykge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgZGJJbmZvID0ge1xuICAgICAgICBkYjogbnVsbFxuICAgIH07XG5cbiAgICBpZiAob3B0aW9ucykge1xuICAgICAgICBmb3IgKHZhciBpIGluIG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGRiSW5mb1tpXSA9IG9wdGlvbnNbaV07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBHZXQgdGhlIGN1cnJlbnQgY29udGV4dCBvZiB0aGUgZGF0YWJhc2U7XG4gICAgdmFyIGRiQ29udGV4dCA9IGRiQ29udGV4dHNbZGJJbmZvLm5hbWVdO1xuXG4gICAgLy8gLi4ub3IgY3JlYXRlIGEgbmV3IGNvbnRleHQuXG4gICAgaWYgKCFkYkNvbnRleHQpIHtcbiAgICAgICAgZGJDb250ZXh0ID0gY3JlYXRlRGJDb250ZXh0KCk7XG4gICAgICAgIC8vIFJlZ2lzdGVyIHRoZSBuZXcgY29udGV4dCBpbiB0aGUgZ2xvYmFsIGNvbnRhaW5lci5cbiAgICAgICAgZGJDb250ZXh0c1tkYkluZm8ubmFtZV0gPSBkYkNvbnRleHQ7XG4gICAgfVxuXG4gICAgLy8gUmVnaXN0ZXIgaXRzZWxmIGFzIGEgcnVubmluZyBsb2NhbEZvcmFnZSBpbiB0aGUgY3VycmVudCBjb250ZXh0LlxuICAgIGRiQ29udGV4dC5mb3JhZ2VzLnB1c2goc2VsZik7XG5cbiAgICAvLyBSZXBsYWNlIHRoZSBkZWZhdWx0IGByZWFkeSgpYCBmdW5jdGlvbiB3aXRoIHRoZSBzcGVjaWFsaXplZCBvbmUuXG4gICAgaWYgKCFzZWxmLl9pbml0UmVhZHkpIHtcbiAgICAgICAgc2VsZi5faW5pdFJlYWR5ID0gc2VsZi5yZWFkeTtcbiAgICAgICAgc2VsZi5yZWFkeSA9IF9mdWxseVJlYWR5O1xuICAgIH1cblxuICAgIC8vIENyZWF0ZSBhbiBhcnJheSBvZiBpbml0aWFsaXphdGlvbiBzdGF0ZXMgb2YgdGhlIHJlbGF0ZWQgbG9jYWxGb3JhZ2VzLlxuICAgIHZhciBpbml0UHJvbWlzZXMgPSBbXTtcblxuICAgIGZ1bmN0aW9uIGlnbm9yZUVycm9ycygpIHtcbiAgICAgICAgLy8gRG9uJ3QgaGFuZGxlIGVycm9ycyBoZXJlLFxuICAgICAgICAvLyBqdXN0IG1ha2VzIHN1cmUgcmVsYXRlZCBsb2NhbEZvcmFnZXMgYXJlbid0IHBlbmRpbmcuXG4gICAgICAgIHJldHVybiBQcm9taXNlJDEucmVzb2x2ZSgpO1xuICAgIH1cblxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgZGJDb250ZXh0LmZvcmFnZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgdmFyIGZvcmFnZSA9IGRiQ29udGV4dC5mb3JhZ2VzW2pdO1xuICAgICAgICBpZiAoZm9yYWdlICE9PSBzZWxmKSB7XG4gICAgICAgICAgICAvLyBEb24ndCB3YWl0IGZvciBpdHNlbGYuLi5cbiAgICAgICAgICAgIGluaXRQcm9taXNlcy5wdXNoKGZvcmFnZS5faW5pdFJlYWR5KClbXCJjYXRjaFwiXShpZ25vcmVFcnJvcnMpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRha2UgYSBzbmFwc2hvdCBvZiB0aGUgcmVsYXRlZCBsb2NhbEZvcmFnZXMuXG4gICAgdmFyIGZvcmFnZXMgPSBkYkNvbnRleHQuZm9yYWdlcy5zbGljZSgwKTtcblxuICAgIC8vIEluaXRpYWxpemUgdGhlIGNvbm5lY3Rpb24gcHJvY2VzcyBvbmx5IHdoZW5cbiAgICAvLyBhbGwgdGhlIHJlbGF0ZWQgbG9jYWxGb3JhZ2VzIGFyZW4ndCBwZW5kaW5nLlxuICAgIHJldHVybiBQcm9taXNlJDEuYWxsKGluaXRQcm9taXNlcykudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgIGRiSW5mby5kYiA9IGRiQ29udGV4dC5kYjtcbiAgICAgICAgLy8gR2V0IHRoZSBjb25uZWN0aW9uIG9yIG9wZW4gYSBuZXcgb25lIHdpdGhvdXQgdXBncmFkZS5cbiAgICAgICAgcmV0dXJuIF9nZXRPcmlnaW5hbENvbm5lY3Rpb24oZGJJbmZvKTtcbiAgICB9KS50aGVuKGZ1bmN0aW9uIChkYikge1xuICAgICAgICBkYkluZm8uZGIgPSBkYjtcbiAgICAgICAgaWYgKF9pc1VwZ3JhZGVOZWVkZWQoZGJJbmZvLCBzZWxmLl9kZWZhdWx0Q29uZmlnLnZlcnNpb24pKSB7XG4gICAgICAgICAgICAvLyBSZW9wZW4gdGhlIGRhdGFiYXNlIGZvciB1cGdyYWRpbmcuXG4gICAgICAgICAgICByZXR1cm4gX2dldFVwZ3JhZGVkQ29ubmVjdGlvbihkYkluZm8pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkYjtcbiAgICB9KS50aGVuKGZ1bmN0aW9uIChkYikge1xuICAgICAgICBkYkluZm8uZGIgPSBkYkNvbnRleHQuZGIgPSBkYjtcbiAgICAgICAgc2VsZi5fZGJJbmZvID0gZGJJbmZvO1xuICAgICAgICAvLyBTaGFyZSB0aGUgZmluYWwgY29ubmVjdGlvbiBhbW9uZ3N0IHJlbGF0ZWQgbG9jYWxGb3JhZ2VzLlxuICAgICAgICBmb3IgKHZhciBrID0gMDsgayA8IGZvcmFnZXMubGVuZ3RoOyBrKyspIHtcbiAgICAgICAgICAgIHZhciBmb3JhZ2UgPSBmb3JhZ2VzW2tdO1xuICAgICAgICAgICAgaWYgKGZvcmFnZSAhPT0gc2VsZikge1xuICAgICAgICAgICAgICAgIC8vIFNlbGYgaXMgYWxyZWFkeSB1cC10by1kYXRlLlxuICAgICAgICAgICAgICAgIGZvcmFnZS5fZGJJbmZvLmRiID0gZGJJbmZvLmRiO1xuICAgICAgICAgICAgICAgIGZvcmFnZS5fZGJJbmZvLnZlcnNpb24gPSBkYkluZm8udmVyc2lvbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xufVxuXG5mdW5jdGlvbiBnZXRJdGVtKGtleSwgY2FsbGJhY2spIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICBrZXkgPSBub3JtYWxpemVLZXkoa2V5KTtcblxuICAgIHZhciBwcm9taXNlID0gbmV3IFByb21pc2UkMShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIHNlbGYucmVhZHkoKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGNyZWF0ZVRyYW5zYWN0aW9uKHNlbGYuX2RiSW5mbywgUkVBRF9PTkxZLCBmdW5jdGlvbiAoZXJyLCB0cmFuc2FjdGlvbikge1xuICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdChlcnIpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKHNlbGYuX2RiSW5mby5zdG9yZU5hbWUpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmVxID0gc3RvcmUuZ2V0KGtleSk7XG5cbiAgICAgICAgICAgICAgICAgICAgcmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9IHJlcS5yZXN1bHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfaXNFbmNvZGVkQmxvYih2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IF9kZWNvZGVCbG9iKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgIHJlcS5vbmVycm9yID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KHJlcS5lcnJvcik7XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICByZWplY3QoZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pW1wiY2F0Y2hcIl0ocmVqZWN0KTtcbiAgICB9KTtcblxuICAgIGV4ZWN1dGVDYWxsYmFjayhwcm9taXNlLCBjYWxsYmFjayk7XG4gICAgcmV0dXJuIHByb21pc2U7XG59XG5cbi8vIEl0ZXJhdGUgb3ZlciBhbGwgaXRlbXMgc3RvcmVkIGluIGRhdGFiYXNlLlxuZnVuY3Rpb24gaXRlcmF0ZShpdGVyYXRvciwgY2FsbGJhY2spIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICB2YXIgcHJvbWlzZSA9IG5ldyBQcm9taXNlJDEoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBzZWxmLnJlYWR5KCkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBjcmVhdGVUcmFuc2FjdGlvbihzZWxmLl9kYkluZm8sIFJFQURfT05MWSwgZnVuY3Rpb24gKGVyciwgdHJhbnNhY3Rpb24pIHtcbiAgICAgICAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZWplY3QoZXJyKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgc3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZShzZWxmLl9kYkluZm8uc3RvcmVOYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlcSA9IHN0b3JlLm9wZW5DdXJzb3IoKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGl0ZXJhdGlvbk51bWJlciA9IDE7XG5cbiAgICAgICAgICAgICAgICAgICAgcmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjdXJzb3IgPSByZXEucmVzdWx0O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3Vyc29yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gY3Vyc29yLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfaXNFbmNvZGVkQmxvYih2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBfZGVjb2RlQmxvYih2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSBpdGVyYXRvcih2YWx1ZSwgY3Vyc29yLmtleSwgaXRlcmF0aW9uTnVtYmVyKyspO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hlbiB0aGUgaXRlcmF0b3IgY2FsbGJhY2sgcmV0dXJucyBhbnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAobm9uLWB1bmRlZmluZWRgKSB2YWx1ZSwgdGhlbiB3ZSBzdG9wXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIGl0ZXJhdGlvbiBpbW1lZGlhdGVseVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgIT09IHZvaWQgMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Vyc29yW1wiY29udGludWVcIl0oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICByZXEub25lcnJvciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChyZXEuZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KVtcImNhdGNoXCJdKHJlamVjdCk7XG4gICAgfSk7XG5cbiAgICBleGVjdXRlQ2FsbGJhY2socHJvbWlzZSwgY2FsbGJhY2spO1xuXG4gICAgcmV0dXJuIHByb21pc2U7XG59XG5cbmZ1bmN0aW9uIHNldEl0ZW0oa2V5LCB2YWx1ZSwgY2FsbGJhY2spIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICBrZXkgPSBub3JtYWxpemVLZXkoa2V5KTtcblxuICAgIHZhciBwcm9taXNlID0gbmV3IFByb21pc2UkMShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIHZhciBkYkluZm87XG4gICAgICAgIHNlbGYucmVhZHkoKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGRiSW5mbyA9IHNlbGYuX2RiSW5mbztcbiAgICAgICAgICAgIGlmICh0b1N0cmluZy5jYWxsKHZhbHVlKSA9PT0gJ1tvYmplY3QgQmxvYl0nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jaGVja0Jsb2JTdXBwb3J0KGRiSW5mby5kYikudGhlbihmdW5jdGlvbiAoYmxvYlN1cHBvcnQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJsb2JTdXBwb3J0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9lbmNvZGVCbG9iKHZhbHVlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfSkudGhlbihmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIGNyZWF0ZVRyYW5zYWN0aW9uKHNlbGYuX2RiSW5mbywgUkVBRF9XUklURSwgZnVuY3Rpb24gKGVyciwgdHJhbnNhY3Rpb24pIHtcbiAgICAgICAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZWplY3QoZXJyKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgc3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZShzZWxmLl9kYkluZm8uc3RvcmVOYW1lKTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBUaGUgcmVhc29uIHdlIGRvbid0IF9zYXZlXyBudWxsIGlzIGJlY2F1c2UgSUUgMTAgZG9lc1xuICAgICAgICAgICAgICAgICAgICAvLyBub3Qgc3VwcG9ydCBzYXZpbmcgdGhlIGBudWxsYCB0eXBlIGluIEluZGV4ZWREQi4gSG93XG4gICAgICAgICAgICAgICAgICAgIC8vIGlyb25pYywgZ2l2ZW4gdGhlIGJ1ZyBiZWxvdyFcbiAgICAgICAgICAgICAgICAgICAgLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS9sb2NhbEZvcmFnZS9pc3N1ZXMvMTYxXG4gICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB2YXIgcmVxID0gc3RvcmUucHV0KHZhbHVlLCBrZXkpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBDYXN0IHRvIHVuZGVmaW5lZCBzbyB0aGUgdmFsdWUgcGFzc2VkIHRvXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYWxsYmFjay9wcm9taXNlIGlzIHRoZSBzYW1lIGFzIHdoYXQgb25lIHdvdWxkIGdldCBvdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9mIGBnZXRJdGVtKClgIGxhdGVyLiBUaGlzIGxlYWRzIHRvIHNvbWUgd2VpcmRuZXNzXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAoc2V0SXRlbSgnZm9vJywgdW5kZWZpbmVkKSB3aWxsIHJldHVybiBgbnVsbGApLCBidXRcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGl0J3Mgbm90IG15IGZhdWx0IGxvY2FsU3RvcmFnZSBpcyBvdXIgYmFzZWxpbmUgYW5kIHRoYXRcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGl0J3Mgd2VpcmQuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB0cmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGVyciA9IHJlcS5lcnJvciA/IHJlcS5lcnJvciA6IHJlcS50cmFuc2FjdGlvbi5lcnJvcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KVtcImNhdGNoXCJdKHJlamVjdCk7XG4gICAgfSk7XG5cbiAgICBleGVjdXRlQ2FsbGJhY2socHJvbWlzZSwgY2FsbGJhY2spO1xuICAgIHJldHVybiBwcm9taXNlO1xufVxuXG5mdW5jdGlvbiByZW1vdmVJdGVtKGtleSwgY2FsbGJhY2spIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICBrZXkgPSBub3JtYWxpemVLZXkoa2V5KTtcblxuICAgIHZhciBwcm9taXNlID0gbmV3IFByb21pc2UkMShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIHNlbGYucmVhZHkoKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGNyZWF0ZVRyYW5zYWN0aW9uKHNlbGYuX2RiSW5mbywgUkVBRF9XUklURSwgZnVuY3Rpb24gKGVyciwgdHJhbnNhY3Rpb24pIHtcbiAgICAgICAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZWplY3QoZXJyKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgc3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZShzZWxmLl9kYkluZm8uc3RvcmVOYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gV2UgdXNlIGEgR3J1bnQgdGFzayB0byBtYWtlIHRoaXMgc2FmZSBmb3IgSUUgYW5kIHNvbWVcbiAgICAgICAgICAgICAgICAgICAgLy8gdmVyc2lvbnMgb2YgQW5kcm9pZCAoaW5jbHVkaW5nIHRob3NlIHVzZWQgYnkgQ29yZG92YSkuXG4gICAgICAgICAgICAgICAgICAgIC8vIE5vcm1hbGx5IElFIHdvbid0IGxpa2UgYC5kZWxldGUoKWAgYW5kIHdpbGwgaW5zaXN0IG9uXG4gICAgICAgICAgICAgICAgICAgIC8vIHVzaW5nIGBbJ2RlbGV0ZSddKClgLCBidXQgd2UgaGF2ZSBhIGJ1aWxkIHN0ZXAgdGhhdFxuICAgICAgICAgICAgICAgICAgICAvLyBmaXhlcyB0aGlzIGZvciB1cyBub3cuXG4gICAgICAgICAgICAgICAgICAgIHZhciByZXEgPSBzdG9yZVtcImRlbGV0ZVwiXShrZXkpO1xuICAgICAgICAgICAgICAgICAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgIHRyYW5zYWN0aW9uLm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QocmVxLmVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBUaGUgcmVxdWVzdCB3aWxsIGJlIGFsc28gYmUgYWJvcnRlZCBpZiB3ZSd2ZSBleGNlZWRlZCBvdXIgc3RvcmFnZVxuICAgICAgICAgICAgICAgICAgICAvLyBzcGFjZS5cbiAgICAgICAgICAgICAgICAgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlcnIgPSByZXEuZXJyb3IgPyByZXEuZXJyb3IgOiByZXEudHJhbnNhY3Rpb24uZXJyb3I7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSlbXCJjYXRjaFwiXShyZWplY3QpO1xuICAgIH0pO1xuXG4gICAgZXhlY3V0ZUNhbGxiYWNrKHByb21pc2UsIGNhbGxiYWNrKTtcbiAgICByZXR1cm4gcHJvbWlzZTtcbn1cblxuZnVuY3Rpb24gY2xlYXIoY2FsbGJhY2spIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICB2YXIgcHJvbWlzZSA9IG5ldyBQcm9taXNlJDEoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBzZWxmLnJlYWR5KCkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBjcmVhdGVUcmFuc2FjdGlvbihzZWxmLl9kYkluZm8sIFJFQURfV1JJVEUsIGZ1bmN0aW9uIChlcnIsIHRyYW5zYWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KGVycik7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoc2VsZi5fZGJJbmZvLnN0b3JlTmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZXEgPSBzdG9yZS5jbGVhcigpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IHRyYW5zYWN0aW9uLm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZXJyID0gcmVxLmVycm9yID8gcmVxLmVycm9yIDogcmVxLnRyYW5zYWN0aW9uLmVycm9yO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICByZWplY3QoZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pW1wiY2F0Y2hcIl0ocmVqZWN0KTtcbiAgICB9KTtcblxuICAgIGV4ZWN1dGVDYWxsYmFjayhwcm9taXNlLCBjYWxsYmFjayk7XG4gICAgcmV0dXJuIHByb21pc2U7XG59XG5cbmZ1bmN0aW9uIGxlbmd0aChjYWxsYmFjaykge1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIHZhciBwcm9taXNlID0gbmV3IFByb21pc2UkMShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIHNlbGYucmVhZHkoKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGNyZWF0ZVRyYW5zYWN0aW9uKHNlbGYuX2RiSW5mbywgUkVBRF9PTkxZLCBmdW5jdGlvbiAoZXJyLCB0cmFuc2FjdGlvbikge1xuICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdChlcnIpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKHNlbGYuX2RiSW5mby5zdG9yZU5hbWUpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmVxID0gc3RvcmUuY291bnQoKTtcblxuICAgICAgICAgICAgICAgICAgICByZXEub25zdWNjZXNzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShyZXEucmVzdWx0KTtcbiAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICByZXEub25lcnJvciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChyZXEuZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KVtcImNhdGNoXCJdKHJlamVjdCk7XG4gICAgfSk7XG5cbiAgICBleGVjdXRlQ2FsbGJhY2socHJvbWlzZSwgY2FsbGJhY2spO1xuICAgIHJldHVybiBwcm9taXNlO1xufVxuXG5mdW5jdGlvbiBrZXkobiwgY2FsbGJhY2spIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICB2YXIgcHJvbWlzZSA9IG5ldyBQcm9taXNlJDEoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBpZiAobiA8IDApIHtcbiAgICAgICAgICAgIHJlc29sdmUobnVsbCk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHNlbGYucmVhZHkoKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGNyZWF0ZVRyYW5zYWN0aW9uKHNlbGYuX2RiSW5mbywgUkVBRF9PTkxZLCBmdW5jdGlvbiAoZXJyLCB0cmFuc2FjdGlvbikge1xuICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdChlcnIpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKHNlbGYuX2RiSW5mby5zdG9yZU5hbWUpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgYWR2YW5jZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlcSA9IHN0b3JlLm9wZW5LZXlDdXJzb3IoKTtcblxuICAgICAgICAgICAgICAgICAgICByZXEub25zdWNjZXNzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGN1cnNvciA9IHJlcS5yZXN1bHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWN1cnNvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgbWVhbnMgdGhlcmUgd2VyZW4ndCBlbm91Z2gga2V5c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUobnVsbCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgaGF2ZSB0aGUgZmlyc3Qga2V5LCByZXR1cm4gaXQgaWYgdGhhdCdzIHdoYXQgdGhleVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdhbnRlZC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGN1cnNvci5rZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWFkdmFuY2VkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE90aGVyd2lzZSwgYXNrIHRoZSBjdXJzb3IgdG8gc2tpcCBhaGVhZCBuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlY29yZHMuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkdmFuY2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Vyc29yLmFkdmFuY2Uobik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2hlbiB3ZSBnZXQgaGVyZSwgd2UndmUgZ290IHRoZSBudGgga2V5LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGN1cnNvci5rZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICByZXEub25lcnJvciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChyZXEuZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KVtcImNhdGNoXCJdKHJlamVjdCk7XG4gICAgfSk7XG5cbiAgICBleGVjdXRlQ2FsbGJhY2socHJvbWlzZSwgY2FsbGJhY2spO1xuICAgIHJldHVybiBwcm9taXNlO1xufVxuXG5mdW5jdGlvbiBrZXlzKGNhbGxiYWNrKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgdmFyIHByb21pc2UgPSBuZXcgUHJvbWlzZSQxKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgc2VsZi5yZWFkeSgpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgY3JlYXRlVHJhbnNhY3Rpb24oc2VsZi5fZGJJbmZvLCBSRUFEX09OTFksIGZ1bmN0aW9uIChlcnIsIHRyYW5zYWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KGVycik7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoc2VsZi5fZGJJbmZvLnN0b3JlTmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZXEgPSBzdG9yZS5vcGVuS2V5Q3Vyc29yKCk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBrZXlzID0gW107XG5cbiAgICAgICAgICAgICAgICAgICAgcmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjdXJzb3IgPSByZXEucmVzdWx0O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWN1cnNvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoa2V5cyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXlzLnB1c2goY3Vyc29yLmtleSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJzb3JbXCJjb250aW51ZVwiXSgpO1xuICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgIHJlcS5vbmVycm9yID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KHJlcS5lcnJvcik7XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICByZWplY3QoZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pW1wiY2F0Y2hcIl0ocmVqZWN0KTtcbiAgICB9KTtcblxuICAgIGV4ZWN1dGVDYWxsYmFjayhwcm9taXNlLCBjYWxsYmFjayk7XG4gICAgcmV0dXJuIHByb21pc2U7XG59XG5cbmZ1bmN0aW9uIGRyb3BJbnN0YW5jZShvcHRpb25zLCBjYWxsYmFjaykge1xuICAgIGNhbGxiYWNrID0gZ2V0Q2FsbGJhY2suYXBwbHkodGhpcywgYXJndW1lbnRzKTtcblxuICAgIHZhciBjdXJyZW50Q29uZmlnID0gdGhpcy5jb25maWcoKTtcbiAgICBvcHRpb25zID0gdHlwZW9mIG9wdGlvbnMgIT09ICdmdW5jdGlvbicgJiYgb3B0aW9ucyB8fCB7fTtcbiAgICBpZiAoIW9wdGlvbnMubmFtZSkge1xuICAgICAgICBvcHRpb25zLm5hbWUgPSBvcHRpb25zLm5hbWUgfHwgY3VycmVudENvbmZpZy5uYW1lO1xuICAgICAgICBvcHRpb25zLnN0b3JlTmFtZSA9IG9wdGlvbnMuc3RvcmVOYW1lIHx8IGN1cnJlbnRDb25maWcuc3RvcmVOYW1lO1xuICAgIH1cblxuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgcHJvbWlzZTtcbiAgICBpZiAoIW9wdGlvbnMubmFtZSkge1xuICAgICAgICBwcm9taXNlID0gUHJvbWlzZSQxLnJlamVjdCgnSW52YWxpZCBhcmd1bWVudHMnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgaXNDdXJyZW50RGIgPSBvcHRpb25zLm5hbWUgPT09IGN1cnJlbnRDb25maWcubmFtZSAmJiBzZWxmLl9kYkluZm8uZGI7XG5cbiAgICAgICAgdmFyIGRiUHJvbWlzZSA9IGlzQ3VycmVudERiID8gUHJvbWlzZSQxLnJlc29sdmUoc2VsZi5fZGJJbmZvLmRiKSA6IF9nZXRPcmlnaW5hbENvbm5lY3Rpb24ob3B0aW9ucykudGhlbihmdW5jdGlvbiAoZGIpIHtcbiAgICAgICAgICAgIHZhciBkYkNvbnRleHQgPSBkYkNvbnRleHRzW29wdGlvbnMubmFtZV07XG4gICAgICAgICAgICB2YXIgZm9yYWdlcyA9IGRiQ29udGV4dC5mb3JhZ2VzO1xuICAgICAgICAgICAgZGJDb250ZXh0LmRiID0gZGI7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZvcmFnZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBmb3JhZ2VzW2ldLl9kYkluZm8uZGIgPSBkYjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBkYjtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKCFvcHRpb25zLnN0b3JlTmFtZSkge1xuICAgICAgICAgICAgcHJvbWlzZSA9IGRiUHJvbWlzZS50aGVuKGZ1bmN0aW9uIChkYikge1xuICAgICAgICAgICAgICAgIF9kZWZlclJlYWRpbmVzcyhvcHRpb25zKTtcblxuICAgICAgICAgICAgICAgIHZhciBkYkNvbnRleHQgPSBkYkNvbnRleHRzW29wdGlvbnMubmFtZV07XG4gICAgICAgICAgICAgICAgdmFyIGZvcmFnZXMgPSBkYkNvbnRleHQuZm9yYWdlcztcblxuICAgICAgICAgICAgICAgIGRiLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmb3JhZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBmb3JhZ2UgPSBmb3JhZ2VzW2ldO1xuICAgICAgICAgICAgICAgICAgICBmb3JhZ2UuX2RiSW5mby5kYiA9IG51bGw7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFyIGRyb3BEQlByb21pc2UgPSBuZXcgUHJvbWlzZSQxKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlcSA9IGlkYi5kZWxldGVEYXRhYmFzZShvcHRpb25zLm5hbWUpO1xuXG4gICAgICAgICAgICAgICAgICAgIHJlcS5vbmVycm9yID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRiID0gcmVxLnJlc3VsdDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRiLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QocmVxLmVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICByZXEub25ibG9ja2VkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2xvc2luZyBhbGwgb3BlbiBjb25uZWN0aW9ucyBpbiBvbnZlcnNpb25jaGFuZ2UgaGFuZGxlciBzaG91bGQgcHJldmVudCB0aGlzIHNpdHVhdGlvbiwgYnV0IGlmXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB3ZSBkbyBnZXQgaGVyZSwgaXQganVzdCBtZWFucyB0aGUgcmVxdWVzdCByZW1haW5zIHBlbmRpbmcgLSBldmVudHVhbGx5IGl0IHdpbGwgc3VjY2VlZCBvciBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdkcm9wSW5zdGFuY2UgYmxvY2tlZCBmb3IgZGF0YWJhc2UgXCInICsgb3B0aW9ucy5uYW1lICsgJ1wiIHVudGlsIGFsbCBvcGVuIGNvbm5lY3Rpb25zIGFyZSBjbG9zZWQnKTtcbiAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICByZXEub25zdWNjZXNzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRiID0gcmVxLnJlc3VsdDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRiLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGRiKTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBkcm9wREJQcm9taXNlLnRoZW4oZnVuY3Rpb24gKGRiKSB7XG4gICAgICAgICAgICAgICAgICAgIGRiQ29udGV4dC5kYiA9IGRiO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZvcmFnZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfZm9yYWdlID0gZm9yYWdlc1tpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIF9hZHZhbmNlUmVhZGluZXNzKF9mb3JhZ2UuX2RiSW5mbyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVtcImNhdGNoXCJdKGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgKF9yZWplY3RSZWFkaW5lc3Mob3B0aW9ucywgZXJyKSB8fCBQcm9taXNlJDEucmVzb2x2ZSgpKVtcImNhdGNoXCJdKGZ1bmN0aW9uICgpIHt9KTtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwcm9taXNlID0gZGJQcm9taXNlLnRoZW4oZnVuY3Rpb24gKGRiKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFkYi5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKG9wdGlvbnMuc3RvcmVOYW1lKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFyIG5ld1ZlcnNpb24gPSBkYi52ZXJzaW9uICsgMTtcblxuICAgICAgICAgICAgICAgIF9kZWZlclJlYWRpbmVzcyhvcHRpb25zKTtcblxuICAgICAgICAgICAgICAgIHZhciBkYkNvbnRleHQgPSBkYkNvbnRleHRzW29wdGlvbnMubmFtZV07XG4gICAgICAgICAgICAgICAgdmFyIGZvcmFnZXMgPSBkYkNvbnRleHQuZm9yYWdlcztcblxuICAgICAgICAgICAgICAgIGRiLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmb3JhZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBmb3JhZ2UgPSBmb3JhZ2VzW2ldO1xuICAgICAgICAgICAgICAgICAgICBmb3JhZ2UuX2RiSW5mby5kYiA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIGZvcmFnZS5fZGJJbmZvLnZlcnNpb24gPSBuZXdWZXJzaW9uO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHZhciBkcm9wT2JqZWN0UHJvbWlzZSA9IG5ldyBQcm9taXNlJDEoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmVxID0gaWRiLm9wZW4ob3B0aW9ucy5uYW1lLCBuZXdWZXJzaW9uKTtcblxuICAgICAgICAgICAgICAgICAgICByZXEub25lcnJvciA9IGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkYiA9IHJlcS5yZXN1bHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYi5jbG9zZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgcmVxLm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkYiA9IHJlcS5yZXN1bHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYi5kZWxldGVPYmplY3RTdG9yZShvcHRpb25zLnN0b3JlTmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgcmVxLm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkYiA9IHJlcS5yZXN1bHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYi5jbG9zZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShkYik7XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gZHJvcE9iamVjdFByb21pc2UudGhlbihmdW5jdGlvbiAoZGIpIHtcbiAgICAgICAgICAgICAgICAgICAgZGJDb250ZXh0LmRiID0gZGI7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgZm9yYWdlcy5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIF9mb3JhZ2UyID0gZm9yYWdlc1tqXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIF9mb3JhZ2UyLl9kYkluZm8uZGIgPSBkYjtcbiAgICAgICAgICAgICAgICAgICAgICAgIF9hZHZhbmNlUmVhZGluZXNzKF9mb3JhZ2UyLl9kYkluZm8pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlbXCJjYXRjaFwiXShmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgIChfcmVqZWN0UmVhZGluZXNzKG9wdGlvbnMsIGVycikgfHwgUHJvbWlzZSQxLnJlc29sdmUoKSlbXCJjYXRjaFwiXShmdW5jdGlvbiAoKSB7fSk7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZXhlY3V0ZUNhbGxiYWNrKHByb21pc2UsIGNhbGxiYWNrKTtcbiAgICByZXR1cm4gcHJvbWlzZTtcbn1cblxudmFyIGFzeW5jU3RvcmFnZSA9IHtcbiAgICBfZHJpdmVyOiAnYXN5bmNTdG9yYWdlJyxcbiAgICBfaW5pdFN0b3JhZ2U6IF9pbml0U3RvcmFnZSxcbiAgICBfc3VwcG9ydDogaXNJbmRleGVkREJWYWxpZCgpLFxuICAgIGl0ZXJhdGU6IGl0ZXJhdGUsXG4gICAgZ2V0SXRlbTogZ2V0SXRlbSxcbiAgICBzZXRJdGVtOiBzZXRJdGVtLFxuICAgIHJlbW92ZUl0ZW06IHJlbW92ZUl0ZW0sXG4gICAgY2xlYXI6IGNsZWFyLFxuICAgIGxlbmd0aDogbGVuZ3RoLFxuICAgIGtleToga2V5LFxuICAgIGtleXM6IGtleXMsXG4gICAgZHJvcEluc3RhbmNlOiBkcm9wSW5zdGFuY2Vcbn07XG5cbmZ1bmN0aW9uIGlzV2ViU1FMVmFsaWQoKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBvcGVuRGF0YWJhc2UgPT09ICdmdW5jdGlvbic7XG59XG5cbi8vIFNhZGx5LCB0aGUgYmVzdCB3YXkgdG8gc2F2ZSBiaW5hcnkgZGF0YSBpbiBXZWJTUUwvbG9jYWxTdG9yYWdlIGlzIHNlcmlhbGl6aW5nXG4vLyBpdCB0byBCYXNlNjQsIHNvIHRoaXMgaXMgaG93IHdlIHN0b3JlIGl0IHRvIHByZXZlbnQgdmVyeSBzdHJhbmdlIGVycm9ycyB3aXRoIGxlc3Ncbi8vIHZlcmJvc2Ugd2F5cyBvZiBiaW5hcnkgPC0+IHN0cmluZyBkYXRhIHN0b3JhZ2UuXG52YXIgQkFTRV9DSEFSUyA9ICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvJztcblxudmFyIEJMT0JfVFlQRV9QUkVGSVggPSAnfn5sb2NhbF9mb3JhZ2VfdHlwZX4nO1xudmFyIEJMT0JfVFlQRV9QUkVGSVhfUkVHRVggPSAvXn5+bG9jYWxfZm9yYWdlX3R5cGV+KFtefl0rKX4vO1xuXG52YXIgU0VSSUFMSVpFRF9NQVJLRVIgPSAnX19sZnNjX186JztcbnZhciBTRVJJQUxJWkVEX01BUktFUl9MRU5HVEggPSBTRVJJQUxJWkVEX01BUktFUi5sZW5ndGg7XG5cbi8vIE9NRyB0aGUgc2VyaWFsaXphdGlvbnMhXG52YXIgVFlQRV9BUlJBWUJVRkZFUiA9ICdhcmJmJztcbnZhciBUWVBFX0JMT0IgPSAnYmxvYic7XG52YXIgVFlQRV9JTlQ4QVJSQVkgPSAnc2kwOCc7XG52YXIgVFlQRV9VSU5UOEFSUkFZID0gJ3VpMDgnO1xudmFyIFRZUEVfVUlOVDhDTEFNUEVEQVJSQVkgPSAndWljOCc7XG52YXIgVFlQRV9JTlQxNkFSUkFZID0gJ3NpMTYnO1xudmFyIFRZUEVfSU5UMzJBUlJBWSA9ICdzaTMyJztcbnZhciBUWVBFX1VJTlQxNkFSUkFZID0gJ3VyMTYnO1xudmFyIFRZUEVfVUlOVDMyQVJSQVkgPSAndWkzMic7XG52YXIgVFlQRV9GTE9BVDMyQVJSQVkgPSAnZmwzMic7XG52YXIgVFlQRV9GTE9BVDY0QVJSQVkgPSAnZmw2NCc7XG52YXIgVFlQRV9TRVJJQUxJWkVEX01BUktFUl9MRU5HVEggPSBTRVJJQUxJWkVEX01BUktFUl9MRU5HVEggKyBUWVBFX0FSUkFZQlVGRkVSLmxlbmd0aDtcblxudmFyIHRvU3RyaW5nJDEgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO1xuXG5mdW5jdGlvbiBzdHJpbmdUb0J1ZmZlcihzZXJpYWxpemVkU3RyaW5nKSB7XG4gICAgLy8gRmlsbCB0aGUgc3RyaW5nIGludG8gYSBBcnJheUJ1ZmZlci5cbiAgICB2YXIgYnVmZmVyTGVuZ3RoID0gc2VyaWFsaXplZFN0cmluZy5sZW5ndGggKiAwLjc1O1xuICAgIHZhciBsZW4gPSBzZXJpYWxpemVkU3RyaW5nLmxlbmd0aDtcbiAgICB2YXIgaTtcbiAgICB2YXIgcCA9IDA7XG4gICAgdmFyIGVuY29kZWQxLCBlbmNvZGVkMiwgZW5jb2RlZDMsIGVuY29kZWQ0O1xuXG4gICAgaWYgKHNlcmlhbGl6ZWRTdHJpbmdbc2VyaWFsaXplZFN0cmluZy5sZW5ndGggLSAxXSA9PT0gJz0nKSB7XG4gICAgICAgIGJ1ZmZlckxlbmd0aC0tO1xuICAgICAgICBpZiAoc2VyaWFsaXplZFN0cmluZ1tzZXJpYWxpemVkU3RyaW5nLmxlbmd0aCAtIDJdID09PSAnPScpIHtcbiAgICAgICAgICAgIGJ1ZmZlckxlbmd0aC0tO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcihidWZmZXJMZW5ndGgpO1xuICAgIHZhciBieXRlcyA9IG5ldyBVaW50OEFycmF5KGJ1ZmZlcik7XG5cbiAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpICs9IDQpIHtcbiAgICAgICAgZW5jb2RlZDEgPSBCQVNFX0NIQVJTLmluZGV4T2Yoc2VyaWFsaXplZFN0cmluZ1tpXSk7XG4gICAgICAgIGVuY29kZWQyID0gQkFTRV9DSEFSUy5pbmRleE9mKHNlcmlhbGl6ZWRTdHJpbmdbaSArIDFdKTtcbiAgICAgICAgZW5jb2RlZDMgPSBCQVNFX0NIQVJTLmluZGV4T2Yoc2VyaWFsaXplZFN0cmluZ1tpICsgMl0pO1xuICAgICAgICBlbmNvZGVkNCA9IEJBU0VfQ0hBUlMuaW5kZXhPZihzZXJpYWxpemVkU3RyaW5nW2kgKyAzXSk7XG5cbiAgICAgICAgLypqc2xpbnQgYml0d2lzZTogdHJ1ZSAqL1xuICAgICAgICBieXRlc1twKytdID0gZW5jb2RlZDEgPDwgMiB8IGVuY29kZWQyID4+IDQ7XG4gICAgICAgIGJ5dGVzW3ArK10gPSAoZW5jb2RlZDIgJiAxNSkgPDwgNCB8IGVuY29kZWQzID4+IDI7XG4gICAgICAgIGJ5dGVzW3ArK10gPSAoZW5jb2RlZDMgJiAzKSA8PCA2IHwgZW5jb2RlZDQgJiA2MztcbiAgICB9XG4gICAgcmV0dXJuIGJ1ZmZlcjtcbn1cblxuLy8gQ29udmVydHMgYSBidWZmZXIgdG8gYSBzdHJpbmcgdG8gc3RvcmUsIHNlcmlhbGl6ZWQsIGluIHRoZSBiYWNrZW5kXG4vLyBzdG9yYWdlIGxpYnJhcnkuXG5mdW5jdGlvbiBidWZmZXJUb1N0cmluZyhidWZmZXIpIHtcbiAgICAvLyBiYXNlNjQtYXJyYXlidWZmZXJcbiAgICB2YXIgYnl0ZXMgPSBuZXcgVWludDhBcnJheShidWZmZXIpO1xuICAgIHZhciBiYXNlNjRTdHJpbmcgPSAnJztcbiAgICB2YXIgaTtcblxuICAgIGZvciAoaSA9IDA7IGkgPCBieXRlcy5sZW5ndGg7IGkgKz0gMykge1xuICAgICAgICAvKmpzbGludCBiaXR3aXNlOiB0cnVlICovXG4gICAgICAgIGJhc2U2NFN0cmluZyArPSBCQVNFX0NIQVJTW2J5dGVzW2ldID4+IDJdO1xuICAgICAgICBiYXNlNjRTdHJpbmcgKz0gQkFTRV9DSEFSU1soYnl0ZXNbaV0gJiAzKSA8PCA0IHwgYnl0ZXNbaSArIDFdID4+IDRdO1xuICAgICAgICBiYXNlNjRTdHJpbmcgKz0gQkFTRV9DSEFSU1soYnl0ZXNbaSArIDFdICYgMTUpIDw8IDIgfCBieXRlc1tpICsgMl0gPj4gNl07XG4gICAgICAgIGJhc2U2NFN0cmluZyArPSBCQVNFX0NIQVJTW2J5dGVzW2kgKyAyXSAmIDYzXTtcbiAgICB9XG5cbiAgICBpZiAoYnl0ZXMubGVuZ3RoICUgMyA9PT0gMikge1xuICAgICAgICBiYXNlNjRTdHJpbmcgPSBiYXNlNjRTdHJpbmcuc3Vic3RyaW5nKDAsIGJhc2U2NFN0cmluZy5sZW5ndGggLSAxKSArICc9JztcbiAgICB9IGVsc2UgaWYgKGJ5dGVzLmxlbmd0aCAlIDMgPT09IDEpIHtcbiAgICAgICAgYmFzZTY0U3RyaW5nID0gYmFzZTY0U3RyaW5nLnN1YnN0cmluZygwLCBiYXNlNjRTdHJpbmcubGVuZ3RoIC0gMikgKyAnPT0nO1xuICAgIH1cblxuICAgIHJldHVybiBiYXNlNjRTdHJpbmc7XG59XG5cbi8vIFNlcmlhbGl6ZSBhIHZhbHVlLCBhZnRlcndhcmRzIGV4ZWN1dGluZyBhIGNhbGxiYWNrICh3aGljaCB1c3VhbGx5XG4vLyBpbnN0cnVjdHMgdGhlIGBzZXRJdGVtKClgIGNhbGxiYWNrL3Byb21pc2UgdG8gYmUgZXhlY3V0ZWQpLiBUaGlzIGlzIGhvd1xuLy8gd2Ugc3RvcmUgYmluYXJ5IGRhdGEgd2l0aCBsb2NhbFN0b3JhZ2UuXG5mdW5jdGlvbiBzZXJpYWxpemUodmFsdWUsIGNhbGxiYWNrKSB7XG4gICAgdmFyIHZhbHVlVHlwZSA9ICcnO1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgICB2YWx1ZVR5cGUgPSB0b1N0cmluZyQxLmNhbGwodmFsdWUpO1xuICAgIH1cblxuICAgIC8vIENhbm5vdCB1c2UgYHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXJgIG9yIHN1Y2ggaGVyZSwgYXMgdGhlc2VcbiAgICAvLyBjaGVja3MgZmFpbCB3aGVuIHJ1bm5pbmcgdGhlIHRlc3RzIHVzaW5nIGNhc3Blci5qcy4uLlxuICAgIC8vXG4gICAgLy8gVE9ETzogU2VlIHdoeSB0aG9zZSB0ZXN0cyBmYWlsIGFuZCB1c2UgYSBiZXR0ZXIgc29sdXRpb24uXG4gICAgaWYgKHZhbHVlICYmICh2YWx1ZVR5cGUgPT09ICdbb2JqZWN0IEFycmF5QnVmZmVyXScgfHwgdmFsdWUuYnVmZmVyICYmIHRvU3RyaW5nJDEuY2FsbCh2YWx1ZS5idWZmZXIpID09PSAnW29iamVjdCBBcnJheUJ1ZmZlcl0nKSkge1xuICAgICAgICAvLyBDb252ZXJ0IGJpbmFyeSBhcnJheXMgdG8gYSBzdHJpbmcgYW5kIHByZWZpeCB0aGUgc3RyaW5nIHdpdGhcbiAgICAgICAgLy8gYSBzcGVjaWFsIG1hcmtlci5cbiAgICAgICAgdmFyIGJ1ZmZlcjtcbiAgICAgICAgdmFyIG1hcmtlciA9IFNFUklBTElaRURfTUFSS0VSO1xuXG4gICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSB7XG4gICAgICAgICAgICBidWZmZXIgPSB2YWx1ZTtcbiAgICAgICAgICAgIG1hcmtlciArPSBUWVBFX0FSUkFZQlVGRkVSO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYnVmZmVyID0gdmFsdWUuYnVmZmVyO1xuXG4gICAgICAgICAgICBpZiAodmFsdWVUeXBlID09PSAnW29iamVjdCBJbnQ4QXJyYXldJykge1xuICAgICAgICAgICAgICAgIG1hcmtlciArPSBUWVBFX0lOVDhBUlJBWTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWVUeXBlID09PSAnW29iamVjdCBVaW50OEFycmF5XScpIHtcbiAgICAgICAgICAgICAgICBtYXJrZXIgKz0gVFlQRV9VSU5UOEFSUkFZO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZVR5cGUgPT09ICdbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XScpIHtcbiAgICAgICAgICAgICAgICBtYXJrZXIgKz0gVFlQRV9VSU5UOENMQU1QRURBUlJBWTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWVUeXBlID09PSAnW29iamVjdCBJbnQxNkFycmF5XScpIHtcbiAgICAgICAgICAgICAgICBtYXJrZXIgKz0gVFlQRV9JTlQxNkFSUkFZO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZVR5cGUgPT09ICdbb2JqZWN0IFVpbnQxNkFycmF5XScpIHtcbiAgICAgICAgICAgICAgICBtYXJrZXIgKz0gVFlQRV9VSU5UMTZBUlJBWTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWVUeXBlID09PSAnW29iamVjdCBJbnQzMkFycmF5XScpIHtcbiAgICAgICAgICAgICAgICBtYXJrZXIgKz0gVFlQRV9JTlQzMkFSUkFZO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZVR5cGUgPT09ICdbb2JqZWN0IFVpbnQzMkFycmF5XScpIHtcbiAgICAgICAgICAgICAgICBtYXJrZXIgKz0gVFlQRV9VSU5UMzJBUlJBWTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWVUeXBlID09PSAnW29iamVjdCBGbG9hdDMyQXJyYXldJykge1xuICAgICAgICAgICAgICAgIG1hcmtlciArPSBUWVBFX0ZMT0FUMzJBUlJBWTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWVUeXBlID09PSAnW29iamVjdCBGbG9hdDY0QXJyYXldJykge1xuICAgICAgICAgICAgICAgIG1hcmtlciArPSBUWVBFX0ZMT0FUNjRBUlJBWTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2sobmV3IEVycm9yKCdGYWlsZWQgdG8gZ2V0IHR5cGUgZm9yIEJpbmFyeUFycmF5JykpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY2FsbGJhY2sobWFya2VyICsgYnVmZmVyVG9TdHJpbmcoYnVmZmVyKSk7XG4gICAgfSBlbHNlIGlmICh2YWx1ZVR5cGUgPT09ICdbb2JqZWN0IEJsb2JdJykge1xuICAgICAgICAvLyBDb252ZXIgdGhlIGJsb2IgdG8gYSBiaW5hcnlBcnJheSBhbmQgdGhlbiB0byBhIHN0cmluZy5cbiAgICAgICAgdmFyIGZpbGVSZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuXG4gICAgICAgIGZpbGVSZWFkZXIub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgLy8gQmFja3dhcmRzLWNvbXBhdGlibGUgcHJlZml4IGZvciB0aGUgYmxvYiB0eXBlLlxuICAgICAgICAgICAgdmFyIHN0ciA9IEJMT0JfVFlQRV9QUkVGSVggKyB2YWx1ZS50eXBlICsgJ34nICsgYnVmZmVyVG9TdHJpbmcodGhpcy5yZXN1bHQpO1xuXG4gICAgICAgICAgICBjYWxsYmFjayhTRVJJQUxJWkVEX01BUktFUiArIFRZUEVfQkxPQiArIHN0cik7XG4gICAgICAgIH07XG5cbiAgICAgICAgZmlsZVJlYWRlci5yZWFkQXNBcnJheUJ1ZmZlcih2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNhbGxiYWNrKEpTT04uc3RyaW5naWZ5KHZhbHVlKSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJDb3VsZG4ndCBjb252ZXJ0IHZhbHVlIGludG8gYSBKU09OIHN0cmluZzogXCIsIHZhbHVlKTtcblxuICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgZSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIERlc2VyaWFsaXplIGRhdGEgd2UndmUgaW5zZXJ0ZWQgaW50byBhIHZhbHVlIGNvbHVtbi9maWVsZC4gV2UgcGxhY2Vcbi8vIHNwZWNpYWwgbWFya2VycyBpbnRvIG91ciBzdHJpbmdzIHRvIG1hcmsgdGhlbSBhcyBlbmNvZGVkOyB0aGlzIGlzbid0XG4vLyBhcyBuaWNlIGFzIGEgbWV0YSBmaWVsZCwgYnV0IGl0J3MgdGhlIG9ubHkgc2FuZSB0aGluZyB3ZSBjYW4gZG8gd2hpbHN0XG4vLyBrZWVwaW5nIGxvY2FsU3RvcmFnZSBzdXBwb3J0IGludGFjdC5cbi8vXG4vLyBPZnRlbnRpbWVzIHRoaXMgd2lsbCBqdXN0IGRlc2VyaWFsaXplIEpTT04gY29udGVudCwgYnV0IGlmIHdlIGhhdmUgYVxuLy8gc3BlY2lhbCBtYXJrZXIgKFNFUklBTElaRURfTUFSS0VSLCBkZWZpbmVkIGFib3ZlKSwgd2Ugd2lsbCBleHRyYWN0XG4vLyBzb21lIGtpbmQgb2YgYXJyYXlidWZmZXIvYmluYXJ5IGRhdGEvdHlwZWQgYXJyYXkgb3V0IG9mIHRoZSBzdHJpbmcuXG5mdW5jdGlvbiBkZXNlcmlhbGl6ZSh2YWx1ZSkge1xuICAgIC8vIElmIHdlIGhhdmVuJ3QgbWFya2VkIHRoaXMgc3RyaW5nIGFzIGJlaW5nIHNwZWNpYWxseSBzZXJpYWxpemVkIChpLmUuXG4gICAgLy8gc29tZXRoaW5nIG90aGVyIHRoYW4gc2VyaWFsaXplZCBKU09OKSwgd2UgY2FuIGp1c3QgcmV0dXJuIGl0IGFuZCBiZVxuICAgIC8vIGRvbmUgd2l0aCBpdC5cbiAgICBpZiAodmFsdWUuc3Vic3RyaW5nKDAsIFNFUklBTElaRURfTUFSS0VSX0xFTkdUSCkgIT09IFNFUklBTElaRURfTUFSS0VSKSB7XG4gICAgICAgIHJldHVybiBKU09OLnBhcnNlKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvLyBUaGUgZm9sbG93aW5nIGNvZGUgZGVhbHMgd2l0aCBkZXNlcmlhbGl6aW5nIHNvbWUga2luZCBvZiBCbG9iIG9yXG4gICAgLy8gVHlwZWRBcnJheS4gRmlyc3Qgd2Ugc2VwYXJhdGUgb3V0IHRoZSB0eXBlIG9mIGRhdGEgd2UncmUgZGVhbGluZ1xuICAgIC8vIHdpdGggZnJvbSB0aGUgZGF0YSBpdHNlbGYuXG4gICAgdmFyIHNlcmlhbGl6ZWRTdHJpbmcgPSB2YWx1ZS5zdWJzdHJpbmcoVFlQRV9TRVJJQUxJWkVEX01BUktFUl9MRU5HVEgpO1xuICAgIHZhciB0eXBlID0gdmFsdWUuc3Vic3RyaW5nKFNFUklBTElaRURfTUFSS0VSX0xFTkdUSCwgVFlQRV9TRVJJQUxJWkVEX01BUktFUl9MRU5HVEgpO1xuXG4gICAgdmFyIGJsb2JUeXBlO1xuICAgIC8vIEJhY2t3YXJkcy1jb21wYXRpYmxlIGJsb2IgdHlwZSBzZXJpYWxpemF0aW9uIHN0cmF0ZWd5LlxuICAgIC8vIERCcyBjcmVhdGVkIHdpdGggb2xkZXIgdmVyc2lvbnMgb2YgbG9jYWxGb3JhZ2Ugd2lsbCBzaW1wbHkgbm90IGhhdmUgdGhlIGJsb2IgdHlwZS5cbiAgICBpZiAodHlwZSA9PT0gVFlQRV9CTE9CICYmIEJMT0JfVFlQRV9QUkVGSVhfUkVHRVgudGVzdChzZXJpYWxpemVkU3RyaW5nKSkge1xuICAgICAgICB2YXIgbWF0Y2hlciA9IHNlcmlhbGl6ZWRTdHJpbmcubWF0Y2goQkxPQl9UWVBFX1BSRUZJWF9SRUdFWCk7XG4gICAgICAgIGJsb2JUeXBlID0gbWF0Y2hlclsxXTtcbiAgICAgICAgc2VyaWFsaXplZFN0cmluZyA9IHNlcmlhbGl6ZWRTdHJpbmcuc3Vic3RyaW5nKG1hdGNoZXJbMF0ubGVuZ3RoKTtcbiAgICB9XG4gICAgdmFyIGJ1ZmZlciA9IHN0cmluZ1RvQnVmZmVyKHNlcmlhbGl6ZWRTdHJpbmcpO1xuXG4gICAgLy8gUmV0dXJuIHRoZSByaWdodCB0eXBlIGJhc2VkIG9uIHRoZSBjb2RlL3R5cGUgc2V0IGR1cmluZ1xuICAgIC8vIHNlcmlhbGl6YXRpb24uXG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgIGNhc2UgVFlQRV9BUlJBWUJVRkZFUjpcbiAgICAgICAgICAgIHJldHVybiBidWZmZXI7XG4gICAgICAgIGNhc2UgVFlQRV9CTE9COlxuICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUJsb2IoW2J1ZmZlcl0sIHsgdHlwZTogYmxvYlR5cGUgfSk7XG4gICAgICAgIGNhc2UgVFlQRV9JTlQ4QVJSQVk6XG4gICAgICAgICAgICByZXR1cm4gbmV3IEludDhBcnJheShidWZmZXIpO1xuICAgICAgICBjYXNlIFRZUEVfVUlOVDhBUlJBWTpcbiAgICAgICAgICAgIHJldHVybiBuZXcgVWludDhBcnJheShidWZmZXIpO1xuICAgICAgICBjYXNlIFRZUEVfVUlOVDhDTEFNUEVEQVJSQVk6XG4gICAgICAgICAgICByZXR1cm4gbmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGJ1ZmZlcik7XG4gICAgICAgIGNhc2UgVFlQRV9JTlQxNkFSUkFZOlxuICAgICAgICAgICAgcmV0dXJuIG5ldyBJbnQxNkFycmF5KGJ1ZmZlcik7XG4gICAgICAgIGNhc2UgVFlQRV9VSU5UMTZBUlJBWTpcbiAgICAgICAgICAgIHJldHVybiBuZXcgVWludDE2QXJyYXkoYnVmZmVyKTtcbiAgICAgICAgY2FzZSBUWVBFX0lOVDMyQVJSQVk6XG4gICAgICAgICAgICByZXR1cm4gbmV3IEludDMyQXJyYXkoYnVmZmVyKTtcbiAgICAgICAgY2FzZSBUWVBFX1VJTlQzMkFSUkFZOlxuICAgICAgICAgICAgcmV0dXJuIG5ldyBVaW50MzJBcnJheShidWZmZXIpO1xuICAgICAgICBjYXNlIFRZUEVfRkxPQVQzMkFSUkFZOlxuICAgICAgICAgICAgcmV0dXJuIG5ldyBGbG9hdDMyQXJyYXkoYnVmZmVyKTtcbiAgICAgICAgY2FzZSBUWVBFX0ZMT0FUNjRBUlJBWTpcbiAgICAgICAgICAgIHJldHVybiBuZXcgRmxvYXQ2NEFycmF5KGJ1ZmZlcik7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua293biB0eXBlOiAnICsgdHlwZSk7XG4gICAgfVxufVxuXG52YXIgbG9jYWxmb3JhZ2VTZXJpYWxpemVyID0ge1xuICAgIHNlcmlhbGl6ZTogc2VyaWFsaXplLFxuICAgIGRlc2VyaWFsaXplOiBkZXNlcmlhbGl6ZSxcbiAgICBzdHJpbmdUb0J1ZmZlcjogc3RyaW5nVG9CdWZmZXIsXG4gICAgYnVmZmVyVG9TdHJpbmc6IGJ1ZmZlclRvU3RyaW5nXG59O1xuXG4vKlxuICogSW5jbHVkZXMgY29kZSBmcm9tOlxuICpcbiAqIGJhc2U2NC1hcnJheWJ1ZmZlclxuICogaHR0cHM6Ly9naXRodWIuY29tL25pa2xhc3ZoL2Jhc2U2NC1hcnJheWJ1ZmZlclxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxMiBOaWtsYXMgdm9uIEhlcnR6ZW5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cbiAqL1xuXG5mdW5jdGlvbiBjcmVhdGVEYlRhYmxlKHQsIGRiSW5mbywgY2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spIHtcbiAgICB0LmV4ZWN1dGVTcWwoJ0NSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTICcgKyBkYkluZm8uc3RvcmVOYW1lICsgJyAnICsgJyhpZCBJTlRFR0VSIFBSSU1BUlkgS0VZLCBrZXkgdW5pcXVlLCB2YWx1ZSknLCBbXSwgY2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spO1xufVxuXG4vLyBPcGVuIHRoZSBXZWJTUUwgZGF0YWJhc2UgKGF1dG9tYXRpY2FsbHkgY3JlYXRlcyBvbmUgaWYgb25lIGRpZG4ndFxuLy8gcHJldmlvdXNseSBleGlzdCksIHVzaW5nIGFueSBvcHRpb25zIHNldCBpbiB0aGUgY29uZmlnLlxuZnVuY3Rpb24gX2luaXRTdG9yYWdlJDEob3B0aW9ucykge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgZGJJbmZvID0ge1xuICAgICAgICBkYjogbnVsbFxuICAgIH07XG5cbiAgICBpZiAob3B0aW9ucykge1xuICAgICAgICBmb3IgKHZhciBpIGluIG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGRiSW5mb1tpXSA9IHR5cGVvZiBvcHRpb25zW2ldICE9PSAnc3RyaW5nJyA/IG9wdGlvbnNbaV0udG9TdHJpbmcoKSA6IG9wdGlvbnNbaV07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgZGJJbmZvUHJvbWlzZSA9IG5ldyBQcm9taXNlJDEoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAvLyBPcGVuIHRoZSBkYXRhYmFzZTsgdGhlIG9wZW5EYXRhYmFzZSBBUEkgd2lsbCBhdXRvbWF0aWNhbGx5XG4gICAgICAgIC8vIGNyZWF0ZSBpdCBmb3IgdXMgaWYgaXQgZG9lc24ndCBleGlzdC5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGRiSW5mby5kYiA9IG9wZW5EYXRhYmFzZShkYkluZm8ubmFtZSwgU3RyaW5nKGRiSW5mby52ZXJzaW9uKSwgZGJJbmZvLmRlc2NyaXB0aW9uLCBkYkluZm8uc2l6ZSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHJldHVybiByZWplY3QoZSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDcmVhdGUgb3VyIGtleS92YWx1ZSB0YWJsZSBpZiBpdCBkb2Vzbid0IGV4aXN0LlxuICAgICAgICBkYkluZm8uZGIudHJhbnNhY3Rpb24oZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgIGNyZWF0ZURiVGFibGUodCwgZGJJbmZvLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc2VsZi5fZGJJbmZvID0gZGJJbmZvO1xuICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgIH0sIGZ1bmN0aW9uICh0LCBlcnJvcikge1xuICAgICAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSwgcmVqZWN0KTtcbiAgICB9KTtcblxuICAgIGRiSW5mby5zZXJpYWxpemVyID0gbG9jYWxmb3JhZ2VTZXJpYWxpemVyO1xuICAgIHJldHVybiBkYkluZm9Qcm9taXNlO1xufVxuXG5mdW5jdGlvbiB0cnlFeGVjdXRlU3FsKHQsIGRiSW5mbywgc3FsU3RhdGVtZW50LCBhcmdzLCBjYWxsYmFjaywgZXJyb3JDYWxsYmFjaykge1xuICAgIHQuZXhlY3V0ZVNxbChzcWxTdGF0ZW1lbnQsIGFyZ3MsIGNhbGxiYWNrLCBmdW5jdGlvbiAodCwgZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yLmNvZGUgPT09IGVycm9yLlNZTlRBWF9FUlIpIHtcbiAgICAgICAgICAgIHQuZXhlY3V0ZVNxbCgnU0VMRUNUIG5hbWUgRlJPTSBzcWxpdGVfbWFzdGVyICcgKyBcIldIRVJFIHR5cGU9J3RhYmxlJyBBTkQgbmFtZSA9ID9cIiwgW2RiSW5mby5zdG9yZU5hbWVdLCBmdW5jdGlvbiAodCwgcmVzdWx0cykge1xuICAgICAgICAgICAgICAgIGlmICghcmVzdWx0cy5yb3dzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGUgdGFibGUgaXMgbWlzc2luZyAod2FzIGRlbGV0ZWQpXG4gICAgICAgICAgICAgICAgICAgIC8vIHJlLWNyZWF0ZSBpdCB0YWJsZSBhbmQgcmV0cnlcbiAgICAgICAgICAgICAgICAgICAgY3JlYXRlRGJUYWJsZSh0LCBkYkluZm8sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHQuZXhlY3V0ZVNxbChzcWxTdGF0ZW1lbnQsIGFyZ3MsIGNhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTtcbiAgICAgICAgICAgICAgICAgICAgfSwgZXJyb3JDYWxsYmFjayk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JDYWxsYmFjayh0LCBlcnJvcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgZXJyb3JDYWxsYmFjayk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBlcnJvckNhbGxiYWNrKHQsIGVycm9yKTtcbiAgICAgICAgfVxuICAgIH0sIGVycm9yQ2FsbGJhY2spO1xufVxuXG5mdW5jdGlvbiBnZXRJdGVtJDEoa2V5LCBjYWxsYmFjaykge1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIGtleSA9IG5vcm1hbGl6ZUtleShrZXkpO1xuXG4gICAgdmFyIHByb21pc2UgPSBuZXcgUHJvbWlzZSQxKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgc2VsZi5yZWFkeSgpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGRiSW5mbyA9IHNlbGYuX2RiSW5mbztcbiAgICAgICAgICAgIGRiSW5mby5kYi50cmFuc2FjdGlvbihmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgIHRyeUV4ZWN1dGVTcWwodCwgZGJJbmZvLCAnU0VMRUNUICogRlJPTSAnICsgZGJJbmZvLnN0b3JlTmFtZSArICcgV0hFUkUga2V5ID0gPyBMSU1JVCAxJywgW2tleV0sIGZ1bmN0aW9uICh0LCByZXN1bHRzKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSByZXN1bHRzLnJvd3MubGVuZ3RoID8gcmVzdWx0cy5yb3dzLml0ZW0oMCkudmFsdWUgOiBudWxsO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIHRvIHNlZSBpZiB0aGlzIGlzIHNlcmlhbGl6ZWQgY29udGVudCB3ZSBuZWVkIHRvXG4gICAgICAgICAgICAgICAgICAgIC8vIHVucGFjay5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gZGJJbmZvLnNlcmlhbGl6ZXIuZGVzZXJpYWxpemUocmVzdWx0KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbiAodCwgZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KVtcImNhdGNoXCJdKHJlamVjdCk7XG4gICAgfSk7XG5cbiAgICBleGVjdXRlQ2FsbGJhY2socHJvbWlzZSwgY2FsbGJhY2spO1xuICAgIHJldHVybiBwcm9taXNlO1xufVxuXG5mdW5jdGlvbiBpdGVyYXRlJDEoaXRlcmF0b3IsIGNhbGxiYWNrKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgdmFyIHByb21pc2UgPSBuZXcgUHJvbWlzZSQxKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgc2VsZi5yZWFkeSgpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGRiSW5mbyA9IHNlbGYuX2RiSW5mbztcblxuICAgICAgICAgICAgZGJJbmZvLmRiLnRyYW5zYWN0aW9uKGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgdHJ5RXhlY3V0ZVNxbCh0LCBkYkluZm8sICdTRUxFQ1QgKiBGUk9NICcgKyBkYkluZm8uc3RvcmVOYW1lLCBbXSwgZnVuY3Rpb24gKHQsIHJlc3VsdHMpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJvd3MgPSByZXN1bHRzLnJvd3M7XG4gICAgICAgICAgICAgICAgICAgIHZhciBsZW5ndGggPSByb3dzLmxlbmd0aDtcblxuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgaXRlbSA9IHJvd3MuaXRlbShpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSBpdGVtLnZhbHVlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBDaGVjayB0byBzZWUgaWYgdGhpcyBpcyBzZXJpYWxpemVkIGNvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdlIG5lZWQgdG8gdW5wYWNrLlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGRiSW5mby5zZXJpYWxpemVyLmRlc2VyaWFsaXplKHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGl0ZXJhdG9yKHJlc3VsdCwgaXRlbS5rZXksIGkgKyAxKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gdm9pZCgwKSBwcmV2ZW50cyBwcm9ibGVtcyB3aXRoIHJlZGVmaW5pdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2YgYHVuZGVmaW5lZGAuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICE9PSB2b2lkIDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uICh0LCBlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pW1wiY2F0Y2hcIl0ocmVqZWN0KTtcbiAgICB9KTtcblxuICAgIGV4ZWN1dGVDYWxsYmFjayhwcm9taXNlLCBjYWxsYmFjayk7XG4gICAgcmV0dXJuIHByb21pc2U7XG59XG5cbmZ1bmN0aW9uIF9zZXRJdGVtKGtleSwgdmFsdWUsIGNhbGxiYWNrLCByZXRyaWVzTGVmdCkge1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIGtleSA9IG5vcm1hbGl6ZUtleShrZXkpO1xuXG4gICAgdmFyIHByb21pc2UgPSBuZXcgUHJvbWlzZSQxKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgc2VsZi5yZWFkeSgpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgLy8gVGhlIGxvY2FsU3RvcmFnZSBBUEkgZG9lc24ndCByZXR1cm4gdW5kZWZpbmVkIHZhbHVlcyBpbiBhblxuICAgICAgICAgICAgLy8gXCJleHBlY3RlZFwiIHdheSwgc28gdW5kZWZpbmVkIGlzIGFsd2F5cyBjYXN0IHRvIG51bGwgaW4gYWxsXG4gICAgICAgICAgICAvLyBkcml2ZXJzLiBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9tb3ppbGxhL2xvY2FsRm9yYWdlL3B1bGwvNDJcbiAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBTYXZlIHRoZSBvcmlnaW5hbCB2YWx1ZSB0byBwYXNzIHRvIHRoZSBjYWxsYmFjay5cbiAgICAgICAgICAgIHZhciBvcmlnaW5hbFZhbHVlID0gdmFsdWU7XG5cbiAgICAgICAgICAgIHZhciBkYkluZm8gPSBzZWxmLl9kYkluZm87XG4gICAgICAgICAgICBkYkluZm8uc2VyaWFsaXplci5zZXJpYWxpemUodmFsdWUsIGZ1bmN0aW9uICh2YWx1ZSwgZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBkYkluZm8uZGIudHJhbnNhY3Rpb24oZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyeUV4ZWN1dGVTcWwodCwgZGJJbmZvLCAnSU5TRVJUIE9SIFJFUExBQ0UgSU5UTyAnICsgZGJJbmZvLnN0b3JlTmFtZSArICcgJyArICcoa2V5LCB2YWx1ZSkgVkFMVUVTICg/LCA/KScsIFtrZXksIHZhbHVlXSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUob3JpZ2luYWxWYWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbiAodCwgZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uIChzcWxFcnJvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIHRyYW5zYWN0aW9uIGZhaWxlZDsgY2hlY2tcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIHNlZSBpZiBpdCdzIGEgcXVvdGEgZXJyb3IuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3FsRXJyb3IuY29kZSA9PT0gc3FsRXJyb3IuUVVPVEFfRVJSKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgcmVqZWN0IHRoZSBjYWxsYmFjayBvdXRyaWdodCBmb3Igbm93LCBidXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpdCdzIHdvcnRoIHRyeWluZyB0byByZS1ydW4gdGhlIHRyYW5zYWN0aW9uLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEV2ZW4gaWYgdGhlIHVzZXIgYWNjZXB0cyB0aGUgcHJvbXB0IHRvIHVzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1vcmUgc3RvcmFnZSBvbiBTYWZhcmksIHRoaXMgZXJyb3Igd2lsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJlIGNhbGxlZC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRyeSB0byByZS1ydW4gdGhlIHRyYW5zYWN0aW9uLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXRyaWVzTGVmdCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShfc2V0SXRlbS5hcHBseShzZWxmLCBba2V5LCBvcmlnaW5hbFZhbHVlLCBjYWxsYmFjaywgcmV0cmllc0xlZnQgLSAxXSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChzcWxFcnJvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KVtcImNhdGNoXCJdKHJlamVjdCk7XG4gICAgfSk7XG5cbiAgICBleGVjdXRlQ2FsbGJhY2socHJvbWlzZSwgY2FsbGJhY2spO1xuICAgIHJldHVybiBwcm9taXNlO1xufVxuXG5mdW5jdGlvbiBzZXRJdGVtJDEoa2V5LCB2YWx1ZSwgY2FsbGJhY2spIHtcbiAgICByZXR1cm4gX3NldEl0ZW0uYXBwbHkodGhpcywgW2tleSwgdmFsdWUsIGNhbGxiYWNrLCAxXSk7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZUl0ZW0kMShrZXksIGNhbGxiYWNrKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAga2V5ID0gbm9ybWFsaXplS2V5KGtleSk7XG5cbiAgICB2YXIgcHJvbWlzZSA9IG5ldyBQcm9taXNlJDEoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBzZWxmLnJlYWR5KCkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgZGJJbmZvID0gc2VsZi5fZGJJbmZvO1xuICAgICAgICAgICAgZGJJbmZvLmRiLnRyYW5zYWN0aW9uKGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgdHJ5RXhlY3V0ZVNxbCh0LCBkYkluZm8sICdERUxFVEUgRlJPTSAnICsgZGJJbmZvLnN0b3JlTmFtZSArICcgV0hFUkUga2V5ID0gPycsIFtrZXldLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbiAodCwgZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KVtcImNhdGNoXCJdKHJlamVjdCk7XG4gICAgfSk7XG5cbiAgICBleGVjdXRlQ2FsbGJhY2socHJvbWlzZSwgY2FsbGJhY2spO1xuICAgIHJldHVybiBwcm9taXNlO1xufVxuXG4vLyBEZWxldGVzIGV2ZXJ5IGl0ZW0gaW4gdGhlIHRhYmxlLlxuLy8gVE9ETzogRmluZCBvdXQgaWYgdGhpcyByZXNldHMgdGhlIEFVVE9fSU5DUkVNRU5UIG51bWJlci5cbmZ1bmN0aW9uIGNsZWFyJDEoY2FsbGJhY2spIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICB2YXIgcHJvbWlzZSA9IG5ldyBQcm9taXNlJDEoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBzZWxmLnJlYWR5KCkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgZGJJbmZvID0gc2VsZi5fZGJJbmZvO1xuICAgICAgICAgICAgZGJJbmZvLmRiLnRyYW5zYWN0aW9uKGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgdHJ5RXhlY3V0ZVNxbCh0LCBkYkluZm8sICdERUxFVEUgRlJPTSAnICsgZGJJbmZvLnN0b3JlTmFtZSwgW10sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uICh0LCBlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pW1wiY2F0Y2hcIl0ocmVqZWN0KTtcbiAgICB9KTtcblxuICAgIGV4ZWN1dGVDYWxsYmFjayhwcm9taXNlLCBjYWxsYmFjayk7XG4gICAgcmV0dXJuIHByb21pc2U7XG59XG5cbi8vIERvZXMgYSBzaW1wbGUgYENPVU5UKGtleSlgIHRvIGdldCB0aGUgbnVtYmVyIG9mIGl0ZW1zIHN0b3JlZCBpblxuLy8gbG9jYWxGb3JhZ2UuXG5mdW5jdGlvbiBsZW5ndGgkMShjYWxsYmFjaykge1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIHZhciBwcm9taXNlID0gbmV3IFByb21pc2UkMShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIHNlbGYucmVhZHkoKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBkYkluZm8gPSBzZWxmLl9kYkluZm87XG4gICAgICAgICAgICBkYkluZm8uZGIudHJhbnNhY3Rpb24oZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICAvLyBBaGhoLCBTUUwgbWFrZXMgdGhpcyBvbmUgc29vb29vbyBlYXN5LlxuICAgICAgICAgICAgICAgIHRyeUV4ZWN1dGVTcWwodCwgZGJJbmZvLCAnU0VMRUNUIENPVU5UKGtleSkgYXMgYyBGUk9NICcgKyBkYkluZm8uc3RvcmVOYW1lLCBbXSwgZnVuY3Rpb24gKHQsIHJlc3VsdHMpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHJlc3VsdHMucm93cy5pdGVtKDApLmM7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbiAodCwgZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KVtcImNhdGNoXCJdKHJlamVjdCk7XG4gICAgfSk7XG5cbiAgICBleGVjdXRlQ2FsbGJhY2socHJvbWlzZSwgY2FsbGJhY2spO1xuICAgIHJldHVybiBwcm9taXNlO1xufVxuXG4vLyBSZXR1cm4gdGhlIGtleSBsb2NhdGVkIGF0IGtleSBpbmRleCBYOyBlc3NlbnRpYWxseSBnZXRzIHRoZSBrZXkgZnJvbSBhXG4vLyBgV0hFUkUgaWQgPSA/YC4gVGhpcyBpcyB0aGUgbW9zdCBlZmZpY2llbnQgd2F5IEkgY2FuIHRoaW5rIHRvIGltcGxlbWVudFxuLy8gdGhpcyByYXJlbHktdXNlZCAoaW4gbXkgZXhwZXJpZW5jZSkgcGFydCBvZiB0aGUgQVBJLCBidXQgaXQgY2FuIHNlZW1cbi8vIGluY29uc2lzdGVudCwgYmVjYXVzZSB3ZSBkbyBgSU5TRVJUIE9SIFJFUExBQ0UgSU5UT2Agb24gYHNldEl0ZW0oKWAsIHNvXG4vLyB0aGUgSUQgb2YgZWFjaCBrZXkgd2lsbCBjaGFuZ2UgZXZlcnkgdGltZSBpdCdzIHVwZGF0ZWQuIFBlcmhhcHMgYSBzdG9yZWRcbi8vIHByb2NlZHVyZSBmb3IgdGhlIGBzZXRJdGVtKClgIFNRTCB3b3VsZCBzb2x2ZSB0aGlzIHByb2JsZW0/XG4vLyBUT0RPOiBEb24ndCBjaGFuZ2UgSUQgb24gYHNldEl0ZW0oKWAuXG5mdW5jdGlvbiBrZXkkMShuLCBjYWxsYmFjaykge1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIHZhciBwcm9taXNlID0gbmV3IFByb21pc2UkMShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIHNlbGYucmVhZHkoKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBkYkluZm8gPSBzZWxmLl9kYkluZm87XG4gICAgICAgICAgICBkYkluZm8uZGIudHJhbnNhY3Rpb24oZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICB0cnlFeGVjdXRlU3FsKHQsIGRiSW5mbywgJ1NFTEVDVCBrZXkgRlJPTSAnICsgZGJJbmZvLnN0b3JlTmFtZSArICcgV0hFUkUgaWQgPSA/IExJTUlUIDEnLCBbbiArIDFdLCBmdW5jdGlvbiAodCwgcmVzdWx0cykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gcmVzdWx0cy5yb3dzLmxlbmd0aCA/IHJlc3VsdHMucm93cy5pdGVtKDApLmtleSA6IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbiAodCwgZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KVtcImNhdGNoXCJdKHJlamVjdCk7XG4gICAgfSk7XG5cbiAgICBleGVjdXRlQ2FsbGJhY2socHJvbWlzZSwgY2FsbGJhY2spO1xuICAgIHJldHVybiBwcm9taXNlO1xufVxuXG5mdW5jdGlvbiBrZXlzJDEoY2FsbGJhY2spIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICB2YXIgcHJvbWlzZSA9IG5ldyBQcm9taXNlJDEoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBzZWxmLnJlYWR5KCkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgZGJJbmZvID0gc2VsZi5fZGJJbmZvO1xuICAgICAgICAgICAgZGJJbmZvLmRiLnRyYW5zYWN0aW9uKGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgdHJ5RXhlY3V0ZVNxbCh0LCBkYkluZm8sICdTRUxFQ1Qga2V5IEZST00gJyArIGRiSW5mby5zdG9yZU5hbWUsIFtdLCBmdW5jdGlvbiAodCwgcmVzdWx0cykge1xuICAgICAgICAgICAgICAgICAgICB2YXIga2V5cyA9IFtdO1xuXG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0cy5yb3dzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXlzLnB1c2gocmVzdWx0cy5yb3dzLml0ZW0oaSkua2V5KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoa2V5cyk7XG4gICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24gKHQsIGVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSlbXCJjYXRjaFwiXShyZWplY3QpO1xuICAgIH0pO1xuXG4gICAgZXhlY3V0ZUNhbGxiYWNrKHByb21pc2UsIGNhbGxiYWNrKTtcbiAgICByZXR1cm4gcHJvbWlzZTtcbn1cblxuLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmRhdGFiYXNlLyNkYXRhYmFzZXNcbi8vID4gVGhlcmUgaXMgbm8gd2F5IHRvIGVudW1lcmF0ZSBvciBkZWxldGUgdGhlIGRhdGFiYXNlcyBhdmFpbGFibGUgZm9yIGFuIG9yaWdpbiBmcm9tIHRoaXMgQVBJLlxuZnVuY3Rpb24gZ2V0QWxsU3RvcmVOYW1lcyhkYikge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSQxKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZGIudHJhbnNhY3Rpb24oZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgIHQuZXhlY3V0ZVNxbCgnU0VMRUNUIG5hbWUgRlJPTSBzcWxpdGVfbWFzdGVyICcgKyBcIldIRVJFIHR5cGU9J3RhYmxlJyBBTkQgbmFtZSA8PiAnX19XZWJLaXREYXRhYmFzZUluZm9UYWJsZV9fJ1wiLCBbXSwgZnVuY3Rpb24gKHQsIHJlc3VsdHMpIHtcbiAgICAgICAgICAgICAgICB2YXIgc3RvcmVOYW1lcyA9IFtdO1xuXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXN1bHRzLnJvd3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgc3RvcmVOYW1lcy5wdXNoKHJlc3VsdHMucm93cy5pdGVtKGkpLm5hbWUpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJlc29sdmUoe1xuICAgICAgICAgICAgICAgICAgICBkYjogZGIsXG4gICAgICAgICAgICAgICAgICAgIHN0b3JlTmFtZXM6IHN0b3JlTmFtZXNcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sIGZ1bmN0aW9uICh0LCBlcnJvcikge1xuICAgICAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSwgZnVuY3Rpb24gKHNxbEVycm9yKSB7XG4gICAgICAgICAgICByZWplY3Qoc3FsRXJyb3IpO1xuICAgICAgICB9KTtcbiAgICB9KTtcbn1cblxuZnVuY3Rpb24gZHJvcEluc3RhbmNlJDEob3B0aW9ucywgY2FsbGJhY2spIHtcbiAgICBjYWxsYmFjayA9IGdldENhbGxiYWNrLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG5cbiAgICB2YXIgY3VycmVudENvbmZpZyA9IHRoaXMuY29uZmlnKCk7XG4gICAgb3B0aW9ucyA9IHR5cGVvZiBvcHRpb25zICE9PSAnZnVuY3Rpb24nICYmIG9wdGlvbnMgfHwge307XG4gICAgaWYgKCFvcHRpb25zLm5hbWUpIHtcbiAgICAgICAgb3B0aW9ucy5uYW1lID0gb3B0aW9ucy5uYW1lIHx8IGN1cnJlbnRDb25maWcubmFtZTtcbiAgICAgICAgb3B0aW9ucy5zdG9yZU5hbWUgPSBvcHRpb25zLnN0b3JlTmFtZSB8fCBjdXJyZW50Q29uZmlnLnN0b3JlTmFtZTtcbiAgICB9XG5cbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIHByb21pc2U7XG4gICAgaWYgKCFvcHRpb25zLm5hbWUpIHtcbiAgICAgICAgcHJvbWlzZSA9IFByb21pc2UkMS5yZWplY3QoJ0ludmFsaWQgYXJndW1lbnRzJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcHJvbWlzZSA9IG5ldyBQcm9taXNlJDEoZnVuY3Rpb24gKHJlc29sdmUpIHtcbiAgICAgICAgICAgIHZhciBkYjtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLm5hbWUgPT09IGN1cnJlbnRDb25maWcubmFtZSkge1xuICAgICAgICAgICAgICAgIC8vIHVzZSB0aGUgZGIgcmVmZXJlbmNlIG9mIHRoZSBjdXJyZW50IGluc3RhbmNlXG4gICAgICAgICAgICAgICAgZGIgPSBzZWxmLl9kYkluZm8uZGI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGRiID0gb3BlbkRhdGFiYXNlKG9wdGlvbnMubmFtZSwgJycsICcnLCAwKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFvcHRpb25zLnN0b3JlTmFtZSkge1xuICAgICAgICAgICAgICAgIC8vIGRyb3AgYWxsIGRhdGFiYXNlIHRhYmxlc1xuICAgICAgICAgICAgICAgIHJlc29sdmUoZ2V0QWxsU3RvcmVOYW1lcyhkYikpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKHtcbiAgICAgICAgICAgICAgICAgICAgZGI6IGRiLFxuICAgICAgICAgICAgICAgICAgICBzdG9yZU5hbWVzOiBbb3B0aW9ucy5zdG9yZU5hbWVdXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKG9wZXJhdGlvbkluZm8pIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSQxKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICAgICAgICBvcGVyYXRpb25JbmZvLmRiLnRyYW5zYWN0aW9uKGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGRyb3BUYWJsZShzdG9yZU5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSQxKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LmV4ZWN1dGVTcWwoJ0RST1AgVEFCTEUgSUYgRVhJU1RTICcgKyBzdG9yZU5hbWUsIFtdLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbiAodCwgZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIG9wZXJhdGlvbnMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IG9wZXJhdGlvbkluZm8uc3RvcmVOYW1lcy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9ucy5wdXNoKGRyb3BUYWJsZShvcGVyYXRpb25JbmZvLnN0b3JlTmFtZXNbaV0pKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIFByb21pc2UkMS5hbGwob3BlcmF0aW9ucykudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgICAgIH0pW1wiY2F0Y2hcIl0oZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChlKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24gKHNxbEVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChzcWxFcnJvcik7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZXhlY3V0ZUNhbGxiYWNrKHByb21pc2UsIGNhbGxiYWNrKTtcbiAgICByZXR1cm4gcHJvbWlzZTtcbn1cblxudmFyIHdlYlNRTFN0b3JhZ2UgPSB7XG4gICAgX2RyaXZlcjogJ3dlYlNRTFN0b3JhZ2UnLFxuICAgIF9pbml0U3RvcmFnZTogX2luaXRTdG9yYWdlJDEsXG4gICAgX3N1cHBvcnQ6IGlzV2ViU1FMVmFsaWQoKSxcbiAgICBpdGVyYXRlOiBpdGVyYXRlJDEsXG4gICAgZ2V0SXRlbTogZ2V0SXRlbSQxLFxuICAgIHNldEl0ZW06IHNldEl0ZW0kMSxcbiAgICByZW1vdmVJdGVtOiByZW1vdmVJdGVtJDEsXG4gICAgY2xlYXI6IGNsZWFyJDEsXG4gICAgbGVuZ3RoOiBsZW5ndGgkMSxcbiAgICBrZXk6IGtleSQxLFxuICAgIGtleXM6IGtleXMkMSxcbiAgICBkcm9wSW5zdGFuY2U6IGRyb3BJbnN0YW5jZSQxXG59O1xuXG5mdW5jdGlvbiBpc0xvY2FsU3RvcmFnZVZhbGlkKCkge1xuICAgIHRyeSB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgbG9jYWxTdG9yYWdlICE9PSAndW5kZWZpbmVkJyAmJiAnc2V0SXRlbScgaW4gbG9jYWxTdG9yYWdlICYmXG4gICAgICAgIC8vIGluIElFOCB0eXBlb2YgbG9jYWxTdG9yYWdlLnNldEl0ZW0gPT09ICdvYmplY3QnXG4gICAgICAgICEhbG9jYWxTdG9yYWdlLnNldEl0ZW07XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBfZ2V0S2V5UHJlZml4KG9wdGlvbnMsIGRlZmF1bHRDb25maWcpIHtcbiAgICB2YXIga2V5UHJlZml4ID0gb3B0aW9ucy5uYW1lICsgJy8nO1xuXG4gICAgaWYgKG9wdGlvbnMuc3RvcmVOYW1lICE9PSBkZWZhdWx0Q29uZmlnLnN0b3JlTmFtZSkge1xuICAgICAgICBrZXlQcmVmaXggKz0gb3B0aW9ucy5zdG9yZU5hbWUgKyAnLyc7XG4gICAgfVxuICAgIHJldHVybiBrZXlQcmVmaXg7XG59XG5cbi8vIENoZWNrIGlmIGxvY2FsU3RvcmFnZSB0aHJvd3Mgd2hlbiBzYXZpbmcgYW4gaXRlbVxuZnVuY3Rpb24gY2hlY2tJZkxvY2FsU3RvcmFnZVRocm93cygpIHtcbiAgICB2YXIgbG9jYWxTdG9yYWdlVGVzdEtleSA9ICdfbG9jYWxmb3JhZ2Vfc3VwcG9ydF90ZXN0JztcblxuICAgIHRyeSB7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGxvY2FsU3RvcmFnZVRlc3RLZXksIHRydWUpO1xuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShsb2NhbFN0b3JhZ2VUZXN0S2V5KTtcblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG59XG5cbi8vIENoZWNrIGlmIGxvY2FsU3RvcmFnZSBpcyB1c2FibGUgYW5kIGFsbG93cyB0byBzYXZlIGFuIGl0ZW1cbi8vIFRoaXMgbWV0aG9kIGNoZWNrcyBpZiBsb2NhbFN0b3JhZ2UgaXMgdXNhYmxlIGluIFNhZmFyaSBQcml2YXRlIEJyb3dzaW5nXG4vLyBtb2RlLCBvciBpbiBhbnkgb3RoZXIgY2FzZSB3aGVyZSB0aGUgYXZhaWxhYmxlIHF1b3RhIGZvciBsb2NhbFN0b3JhZ2Vcbi8vIGlzIDAgYW5kIHRoZXJlIHdhc24ndCBhbnkgc2F2ZWQgaXRlbXMgeWV0LlxuZnVuY3Rpb24gX2lzTG9jYWxTdG9yYWdlVXNhYmxlKCkge1xuICAgIHJldHVybiAhY2hlY2tJZkxvY2FsU3RvcmFnZVRocm93cygpIHx8IGxvY2FsU3RvcmFnZS5sZW5ndGggPiAwO1xufVxuXG4vLyBDb25maWcgdGhlIGxvY2FsU3RvcmFnZSBiYWNrZW5kLCB1c2luZyBvcHRpb25zIHNldCBpbiB0aGUgY29uZmlnLlxuZnVuY3Rpb24gX2luaXRTdG9yYWdlJDIob3B0aW9ucykge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgZGJJbmZvID0ge307XG4gICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgZm9yICh2YXIgaSBpbiBvcHRpb25zKSB7XG4gICAgICAgICAgICBkYkluZm9baV0gPSBvcHRpb25zW2ldO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZGJJbmZvLmtleVByZWZpeCA9IF9nZXRLZXlQcmVmaXgob3B0aW9ucywgc2VsZi5fZGVmYXVsdENvbmZpZyk7XG5cbiAgICBpZiAoIV9pc0xvY2FsU3RvcmFnZVVzYWJsZSgpKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlJDEucmVqZWN0KCk7XG4gICAgfVxuXG4gICAgc2VsZi5fZGJJbmZvID0gZGJJbmZvO1xuICAgIGRiSW5mby5zZXJpYWxpemVyID0gbG9jYWxmb3JhZ2VTZXJpYWxpemVyO1xuXG4gICAgcmV0dXJuIFByb21pc2UkMS5yZXNvbHZlKCk7XG59XG5cbi8vIFJlbW92ZSBhbGwga2V5cyBmcm9tIHRoZSBkYXRhc3RvcmUsIGVmZmVjdGl2ZWx5IGRlc3Ryb3lpbmcgYWxsIGRhdGEgaW5cbi8vIHRoZSBhcHAncyBrZXkvdmFsdWUgc3RvcmUhXG5mdW5jdGlvbiBjbGVhciQyKGNhbGxiYWNrKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBwcm9taXNlID0gc2VsZi5yZWFkeSgpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIga2V5UHJlZml4ID0gc2VsZi5fZGJJbmZvLmtleVByZWZpeDtcblxuICAgICAgICBmb3IgKHZhciBpID0gbG9jYWxTdG9yYWdlLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICB2YXIga2V5ID0gbG9jYWxTdG9yYWdlLmtleShpKTtcblxuICAgICAgICAgICAgaWYgKGtleS5pbmRleE9mKGtleVByZWZpeCkgPT09IDApIHtcbiAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShrZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICBleGVjdXRlQ2FsbGJhY2socHJvbWlzZSwgY2FsbGJhY2spO1xuICAgIHJldHVybiBwcm9taXNlO1xufVxuXG4vLyBSZXRyaWV2ZSBhbiBpdGVtIGZyb20gdGhlIHN0b3JlLiBVbmxpa2UgdGhlIG9yaWdpbmFsIGFzeW5jX3N0b3JhZ2Vcbi8vIGxpYnJhcnkgaW4gR2FpYSwgd2UgZG9uJ3QgbW9kaWZ5IHJldHVybiB2YWx1ZXMgYXQgYWxsLiBJZiBhIGtleSdzIHZhbHVlXG4vLyBpcyBgdW5kZWZpbmVkYCwgd2UgcGFzcyB0aGF0IHZhbHVlIHRvIHRoZSBjYWxsYmFjayBmdW5jdGlvbi5cbmZ1bmN0aW9uIGdldEl0ZW0kMihrZXksIGNhbGxiYWNrKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAga2V5ID0gbm9ybWFsaXplS2V5KGtleSk7XG5cbiAgICB2YXIgcHJvbWlzZSA9IHNlbGYucmVhZHkoKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGRiSW5mbyA9IHNlbGYuX2RiSW5mbztcbiAgICAgICAgdmFyIHJlc3VsdCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGRiSW5mby5rZXlQcmVmaXggKyBrZXkpO1xuXG4gICAgICAgIC8vIElmIGEgcmVzdWx0IHdhcyBmb3VuZCwgcGFyc2UgaXQgZnJvbSB0aGUgc2VyaWFsaXplZFxuICAgICAgICAvLyBzdHJpbmcgaW50byBhIEpTIG9iamVjdC4gSWYgcmVzdWx0IGlzbid0IHRydXRoeSwgdGhlIGtleVxuICAgICAgICAvLyBpcyBsaWtlbHkgdW5kZWZpbmVkIGFuZCB3ZSdsbCBwYXNzIGl0IHN0cmFpZ2h0IHRvIHRoZVxuICAgICAgICAvLyBjYWxsYmFjay5cbiAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgICAgcmVzdWx0ID0gZGJJbmZvLnNlcmlhbGl6ZXIuZGVzZXJpYWxpemUocmVzdWx0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSk7XG5cbiAgICBleGVjdXRlQ2FsbGJhY2socHJvbWlzZSwgY2FsbGJhY2spO1xuICAgIHJldHVybiBwcm9taXNlO1xufVxuXG4vLyBJdGVyYXRlIG92ZXIgYWxsIGl0ZW1zIGluIHRoZSBzdG9yZS5cbmZ1bmN0aW9uIGl0ZXJhdGUkMihpdGVyYXRvciwgY2FsbGJhY2spIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICB2YXIgcHJvbWlzZSA9IHNlbGYucmVhZHkoKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGRiSW5mbyA9IHNlbGYuX2RiSW5mbztcbiAgICAgICAgdmFyIGtleVByZWZpeCA9IGRiSW5mby5rZXlQcmVmaXg7XG4gICAgICAgIHZhciBrZXlQcmVmaXhMZW5ndGggPSBrZXlQcmVmaXgubGVuZ3RoO1xuICAgICAgICB2YXIgbGVuZ3RoID0gbG9jYWxTdG9yYWdlLmxlbmd0aDtcblxuICAgICAgICAvLyBXZSB1c2UgYSBkZWRpY2F0ZWQgaXRlcmF0b3IgaW5zdGVhZCBvZiB0aGUgYGlgIHZhcmlhYmxlIGJlbG93XG4gICAgICAgIC8vIHNvIG90aGVyIGtleXMgd2UgZmV0Y2ggaW4gbG9jYWxTdG9yYWdlIGFyZW4ndCBjb3VudGVkIGluXG4gICAgICAgIC8vIHRoZSBgaXRlcmF0aW9uTnVtYmVyYCBhcmd1bWVudCBwYXNzZWQgdG8gdGhlIGBpdGVyYXRlKClgXG4gICAgICAgIC8vIGNhbGxiYWNrLlxuICAgICAgICAvL1xuICAgICAgICAvLyBTZWU6IGdpdGh1Yi5jb20vbW96aWxsYS9sb2NhbEZvcmFnZS9wdWxsLzQzNSNkaXNjdXNzaW9uX3IzODA2MTUzMFxuICAgICAgICB2YXIgaXRlcmF0aW9uTnVtYmVyID0gMTtcblxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIga2V5ID0gbG9jYWxTdG9yYWdlLmtleShpKTtcbiAgICAgICAgICAgIGlmIChrZXkuaW5kZXhPZihrZXlQcmVmaXgpICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgdmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpO1xuXG4gICAgICAgICAgICAvLyBJZiBhIHJlc3VsdCB3YXMgZm91bmQsIHBhcnNlIGl0IGZyb20gdGhlIHNlcmlhbGl6ZWRcbiAgICAgICAgICAgIC8vIHN0cmluZyBpbnRvIGEgSlMgb2JqZWN0LiBJZiByZXN1bHQgaXNuJ3QgdHJ1dGh5LCB0aGVcbiAgICAgICAgICAgIC8vIGtleSBpcyBsaWtlbHkgdW5kZWZpbmVkIGFuZCB3ZSdsbCBwYXNzIGl0IHN0cmFpZ2h0XG4gICAgICAgICAgICAvLyB0byB0aGUgaXRlcmF0b3IuXG4gICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IGRiSW5mby5zZXJpYWxpemVyLmRlc2VyaWFsaXplKHZhbHVlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFsdWUgPSBpdGVyYXRvcih2YWx1ZSwga2V5LnN1YnN0cmluZyhrZXlQcmVmaXhMZW5ndGgpLCBpdGVyYXRpb25OdW1iZXIrKyk7XG5cbiAgICAgICAgICAgIGlmICh2YWx1ZSAhPT0gdm9pZCAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICBleGVjdXRlQ2FsbGJhY2socHJvbWlzZSwgY2FsbGJhY2spO1xuICAgIHJldHVybiBwcm9taXNlO1xufVxuXG4vLyBTYW1lIGFzIGxvY2FsU3RvcmFnZSdzIGtleSgpIG1ldGhvZCwgZXhjZXB0IHRha2VzIGEgY2FsbGJhY2suXG5mdW5jdGlvbiBrZXkkMihuLCBjYWxsYmFjaykge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgcHJvbWlzZSA9IHNlbGYucmVhZHkoKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGRiSW5mbyA9IHNlbGYuX2RiSW5mbztcbiAgICAgICAgdmFyIHJlc3VsdDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJlc3VsdCA9IGxvY2FsU3RvcmFnZS5rZXkobik7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICByZXN1bHQgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUmVtb3ZlIHRoZSBwcmVmaXggZnJvbSB0aGUga2V5LCBpZiBhIGtleSBpcyBmb3VuZC5cbiAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnN1YnN0cmluZyhkYkluZm8ua2V5UHJlZml4Lmxlbmd0aCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0pO1xuXG4gICAgZXhlY3V0ZUNhbGxiYWNrKHByb21pc2UsIGNhbGxiYWNrKTtcbiAgICByZXR1cm4gcHJvbWlzZTtcbn1cblxuZnVuY3Rpb24ga2V5cyQyKGNhbGxiYWNrKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBwcm9taXNlID0gc2VsZi5yZWFkeSgpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgZGJJbmZvID0gc2VsZi5fZGJJbmZvO1xuICAgICAgICB2YXIgbGVuZ3RoID0gbG9jYWxTdG9yYWdlLmxlbmd0aDtcbiAgICAgICAgdmFyIGtleXMgPSBbXTtcblxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgaXRlbUtleSA9IGxvY2FsU3RvcmFnZS5rZXkoaSk7XG4gICAgICAgICAgICBpZiAoaXRlbUtleS5pbmRleE9mKGRiSW5mby5rZXlQcmVmaXgpID09PSAwKSB7XG4gICAgICAgICAgICAgICAga2V5cy5wdXNoKGl0ZW1LZXkuc3Vic3RyaW5nKGRiSW5mby5rZXlQcmVmaXgubGVuZ3RoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ga2V5cztcbiAgICB9KTtcblxuICAgIGV4ZWN1dGVDYWxsYmFjayhwcm9taXNlLCBjYWxsYmFjayk7XG4gICAgcmV0dXJuIHByb21pc2U7XG59XG5cbi8vIFN1cHBseSB0aGUgbnVtYmVyIG9mIGtleXMgaW4gdGhlIGRhdGFzdG9yZSB0byB0aGUgY2FsbGJhY2sgZnVuY3Rpb24uXG5mdW5jdGlvbiBsZW5ndGgkMihjYWxsYmFjaykge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgcHJvbWlzZSA9IHNlbGYua2V5cygpLnRoZW4oZnVuY3Rpb24gKGtleXMpIHtcbiAgICAgICAgcmV0dXJuIGtleXMubGVuZ3RoO1xuICAgIH0pO1xuXG4gICAgZXhlY3V0ZUNhbGxiYWNrKHByb21pc2UsIGNhbGxiYWNrKTtcbiAgICByZXR1cm4gcHJvbWlzZTtcbn1cblxuLy8gUmVtb3ZlIGFuIGl0ZW0gZnJvbSB0aGUgc3RvcmUsIG5pY2UgYW5kIHNpbXBsZS5cbmZ1bmN0aW9uIHJlbW92ZUl0ZW0kMihrZXksIGNhbGxiYWNrKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAga2V5ID0gbm9ybWFsaXplS2V5KGtleSk7XG5cbiAgICB2YXIgcHJvbWlzZSA9IHNlbGYucmVhZHkoKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGRiSW5mbyA9IHNlbGYuX2RiSW5mbztcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oZGJJbmZvLmtleVByZWZpeCArIGtleSk7XG4gICAgfSk7XG5cbiAgICBleGVjdXRlQ2FsbGJhY2socHJvbWlzZSwgY2FsbGJhY2spO1xuICAgIHJldHVybiBwcm9taXNlO1xufVxuXG4vLyBTZXQgYSBrZXkncyB2YWx1ZSBhbmQgcnVuIGFuIG9wdGlvbmFsIGNhbGxiYWNrIG9uY2UgdGhlIHZhbHVlIGlzIHNldC5cbi8vIFVubGlrZSBHYWlhJ3MgaW1wbGVtZW50YXRpb24sIHRoZSBjYWxsYmFjayBmdW5jdGlvbiBpcyBwYXNzZWQgdGhlIHZhbHVlLFxuLy8gaW4gY2FzZSB5b3Ugd2FudCB0byBvcGVyYXRlIG9uIHRoYXQgdmFsdWUgb25seSBhZnRlciB5b3UncmUgc3VyZSBpdFxuLy8gc2F2ZWQsIG9yIHNvbWV0aGluZyBsaWtlIHRoYXQuXG5mdW5jdGlvbiBzZXRJdGVtJDIoa2V5LCB2YWx1ZSwgY2FsbGJhY2spIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICBrZXkgPSBub3JtYWxpemVLZXkoa2V5KTtcblxuICAgIHZhciBwcm9taXNlID0gc2VsZi5yZWFkeSgpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAvLyBDb252ZXJ0IHVuZGVmaW5lZCB2YWx1ZXMgdG8gbnVsbC5cbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL21vemlsbGEvbG9jYWxGb3JhZ2UvcHVsbC80MlxuICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdmFsdWUgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU2F2ZSB0aGUgb3JpZ2luYWwgdmFsdWUgdG8gcGFzcyB0byB0aGUgY2FsbGJhY2suXG4gICAgICAgIHZhciBvcmlnaW5hbFZhbHVlID0gdmFsdWU7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlJDEoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgICAgdmFyIGRiSW5mbyA9IHNlbGYuX2RiSW5mbztcbiAgICAgICAgICAgIGRiSW5mby5zZXJpYWxpemVyLnNlcmlhbGl6ZSh2YWx1ZSwgZnVuY3Rpb24gKHZhbHVlLCBlcnJvcikge1xuICAgICAgICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShkYkluZm8ua2V5UHJlZml4ICsga2V5LCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKG9yaWdpbmFsVmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2NhbFN0b3JhZ2UgY2FwYWNpdHkgZXhjZWVkZWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBUT0RPOiBNYWtlIHRoaXMgYSBzcGVjaWZpYyBlcnJvci9ldmVudC5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlLm5hbWUgPT09ICdRdW90YUV4Y2VlZGVkRXJyb3InIHx8IGUubmFtZSA9PT0gJ05TX0VSUk9SX0RPTV9RVU9UQV9SRUFDSEVEJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9KTtcblxuICAgIGV4ZWN1dGVDYWxsYmFjayhwcm9taXNlLCBjYWxsYmFjayk7XG4gICAgcmV0dXJuIHByb21pc2U7XG59XG5cbmZ1bmN0aW9uIGRyb3BJbnN0YW5jZSQyKG9wdGlvbnMsIGNhbGxiYWNrKSB7XG4gICAgY2FsbGJhY2sgPSBnZXRDYWxsYmFjay5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuXG4gICAgb3B0aW9ucyA9IHR5cGVvZiBvcHRpb25zICE9PSAnZnVuY3Rpb24nICYmIG9wdGlvbnMgfHwge307XG4gICAgaWYgKCFvcHRpb25zLm5hbWUpIHtcbiAgICAgICAgdmFyIGN1cnJlbnRDb25maWcgPSB0aGlzLmNvbmZpZygpO1xuICAgICAgICBvcHRpb25zLm5hbWUgPSBvcHRpb25zLm5hbWUgfHwgY3VycmVudENvbmZpZy5uYW1lO1xuICAgICAgICBvcHRpb25zLnN0b3JlTmFtZSA9IG9wdGlvbnMuc3RvcmVOYW1lIHx8IGN1cnJlbnRDb25maWcuc3RvcmVOYW1lO1xuICAgIH1cblxuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgcHJvbWlzZTtcbiAgICBpZiAoIW9wdGlvbnMubmFtZSkge1xuICAgICAgICBwcm9taXNlID0gUHJvbWlzZSQxLnJlamVjdCgnSW52YWxpZCBhcmd1bWVudHMnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBwcm9taXNlID0gbmV3IFByb21pc2UkMShmdW5jdGlvbiAocmVzb2x2ZSkge1xuICAgICAgICAgICAgaWYgKCFvcHRpb25zLnN0b3JlTmFtZSkge1xuICAgICAgICAgICAgICAgIHJlc29sdmUob3B0aW9ucy5uYW1lICsgJy8nKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShfZ2V0S2V5UHJlZml4KG9wdGlvbnMsIHNlbGYuX2RlZmF1bHRDb25maWcpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoa2V5UHJlZml4KSB7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gbG9jYWxTdG9yYWdlLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICAgICAgdmFyIGtleSA9IGxvY2FsU3RvcmFnZS5rZXkoaSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoa2V5LmluZGV4T2Yoa2V5UHJlZml4KSA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShrZXkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZXhlY3V0ZUNhbGxiYWNrKHByb21pc2UsIGNhbGxiYWNrKTtcbiAgICByZXR1cm4gcHJvbWlzZTtcbn1cblxudmFyIGxvY2FsU3RvcmFnZVdyYXBwZXIgPSB7XG4gICAgX2RyaXZlcjogJ2xvY2FsU3RvcmFnZVdyYXBwZXInLFxuICAgIF9pbml0U3RvcmFnZTogX2luaXRTdG9yYWdlJDIsXG4gICAgX3N1cHBvcnQ6IGlzTG9jYWxTdG9yYWdlVmFsaWQoKSxcbiAgICBpdGVyYXRlOiBpdGVyYXRlJDIsXG4gICAgZ2V0SXRlbTogZ2V0SXRlbSQyLFxuICAgIHNldEl0ZW06IHNldEl0ZW0kMixcbiAgICByZW1vdmVJdGVtOiByZW1vdmVJdGVtJDIsXG4gICAgY2xlYXI6IGNsZWFyJDIsXG4gICAgbGVuZ3RoOiBsZW5ndGgkMixcbiAgICBrZXk6IGtleSQyLFxuICAgIGtleXM6IGtleXMkMixcbiAgICBkcm9wSW5zdGFuY2U6IGRyb3BJbnN0YW5jZSQyXG59O1xuXG52YXIgc2FtZVZhbHVlID0gZnVuY3Rpb24gc2FtZVZhbHVlKHgsIHkpIHtcbiAgICByZXR1cm4geCA9PT0geSB8fCB0eXBlb2YgeCA9PT0gJ251bWJlcicgJiYgdHlwZW9mIHkgPT09ICdudW1iZXInICYmIGlzTmFOKHgpICYmIGlzTmFOKHkpO1xufTtcblxudmFyIGluY2x1ZGVzID0gZnVuY3Rpb24gaW5jbHVkZXMoYXJyYXksIHNlYXJjaEVsZW1lbnQpIHtcbiAgICB2YXIgbGVuID0gYXJyYXkubGVuZ3RoO1xuICAgIHZhciBpID0gMDtcbiAgICB3aGlsZSAoaSA8IGxlbikge1xuICAgICAgICBpZiAoc2FtZVZhbHVlKGFycmF5W2ldLCBzZWFyY2hFbGVtZW50KSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaSsrO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbn07XG5cbnZhciBpc0FycmF5ID0gQXJyYXkuaXNBcnJheSB8fCBmdW5jdGlvbiAoYXJnKSB7XG4gICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChhcmcpID09PSAnW29iamVjdCBBcnJheV0nO1xufTtcblxuLy8gRHJpdmVycyBhcmUgc3RvcmVkIGhlcmUgd2hlbiBgZGVmaW5lRHJpdmVyKClgIGlzIGNhbGxlZC5cbi8vIFRoZXkgYXJlIHNoYXJlZCBhY3Jvc3MgYWxsIGluc3RhbmNlcyBvZiBsb2NhbEZvcmFnZS5cbnZhciBEZWZpbmVkRHJpdmVycyA9IHt9O1xuXG52YXIgRHJpdmVyU3VwcG9ydCA9IHt9O1xuXG52YXIgRGVmYXVsdERyaXZlcnMgPSB7XG4gICAgSU5ERVhFRERCOiBhc3luY1N0b3JhZ2UsXG4gICAgV0VCU1FMOiB3ZWJTUUxTdG9yYWdlLFxuICAgIExPQ0FMU1RPUkFHRTogbG9jYWxTdG9yYWdlV3JhcHBlclxufTtcblxudmFyIERlZmF1bHREcml2ZXJPcmRlciA9IFtEZWZhdWx0RHJpdmVycy5JTkRFWEVEREIuX2RyaXZlciwgRGVmYXVsdERyaXZlcnMuV0VCU1FMLl9kcml2ZXIsIERlZmF1bHREcml2ZXJzLkxPQ0FMU1RPUkFHRS5fZHJpdmVyXTtcblxudmFyIE9wdGlvbmFsRHJpdmVyTWV0aG9kcyA9IFsnZHJvcEluc3RhbmNlJ107XG5cbnZhciBMaWJyYXJ5TWV0aG9kcyA9IFsnY2xlYXInLCAnZ2V0SXRlbScsICdpdGVyYXRlJywgJ2tleScsICdrZXlzJywgJ2xlbmd0aCcsICdyZW1vdmVJdGVtJywgJ3NldEl0ZW0nXS5jb25jYXQoT3B0aW9uYWxEcml2ZXJNZXRob2RzKTtcblxudmFyIERlZmF1bHRDb25maWcgPSB7XG4gICAgZGVzY3JpcHRpb246ICcnLFxuICAgIGRyaXZlcjogRGVmYXVsdERyaXZlck9yZGVyLnNsaWNlKCksXG4gICAgbmFtZTogJ2xvY2FsZm9yYWdlJyxcbiAgICAvLyBEZWZhdWx0IERCIHNpemUgaXMgX0pVU1QgVU5ERVJfIDVNQiwgYXMgaXQncyB0aGUgaGlnaGVzdCBzaXplXG4gICAgLy8gd2UgY2FuIHVzZSB3aXRob3V0IGEgcHJvbXB0LlxuICAgIHNpemU6IDQ5ODA3MzYsXG4gICAgc3RvcmVOYW1lOiAna2V5dmFsdWVwYWlycycsXG4gICAgdmVyc2lvbjogMS4wXG59O1xuXG5mdW5jdGlvbiBjYWxsV2hlblJlYWR5KGxvY2FsRm9yYWdlSW5zdGFuY2UsIGxpYnJhcnlNZXRob2QpIHtcbiAgICBsb2NhbEZvcmFnZUluc3RhbmNlW2xpYnJhcnlNZXRob2RdID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX2FyZ3MgPSBhcmd1bWVudHM7XG4gICAgICAgIHJldHVybiBsb2NhbEZvcmFnZUluc3RhbmNlLnJlYWR5KCkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gbG9jYWxGb3JhZ2VJbnN0YW5jZVtsaWJyYXJ5TWV0aG9kXS5hcHBseShsb2NhbEZvcmFnZUluc3RhbmNlLCBfYXJncyk7XG4gICAgICAgIH0pO1xuICAgIH07XG59XG5cbmZ1bmN0aW9uIGV4dGVuZCgpIHtcbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgYXJnID0gYXJndW1lbnRzW2ldO1xuXG4gICAgICAgIGlmIChhcmcpIHtcbiAgICAgICAgICAgIGZvciAodmFyIF9rZXkgaW4gYXJnKSB7XG4gICAgICAgICAgICAgICAgaWYgKGFyZy5oYXNPd25Qcm9wZXJ0eShfa2V5KSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNBcnJheShhcmdbX2tleV0pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudHNbMF1bX2tleV0gPSBhcmdbX2tleV0uc2xpY2UoKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50c1swXVtfa2V5XSA9IGFyZ1tfa2V5XTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBhcmd1bWVudHNbMF07XG59XG5cbnZhciBMb2NhbEZvcmFnZSA9IGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBMb2NhbEZvcmFnZShvcHRpb25zKSB7XG4gICAgICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBMb2NhbEZvcmFnZSk7XG5cbiAgICAgICAgZm9yICh2YXIgZHJpdmVyVHlwZUtleSBpbiBEZWZhdWx0RHJpdmVycykge1xuICAgICAgICAgICAgaWYgKERlZmF1bHREcml2ZXJzLmhhc093blByb3BlcnR5KGRyaXZlclR5cGVLZXkpKSB7XG4gICAgICAgICAgICAgICAgdmFyIGRyaXZlciA9IERlZmF1bHREcml2ZXJzW2RyaXZlclR5cGVLZXldO1xuICAgICAgICAgICAgICAgIHZhciBkcml2ZXJOYW1lID0gZHJpdmVyLl9kcml2ZXI7XG4gICAgICAgICAgICAgICAgdGhpc1tkcml2ZXJUeXBlS2V5XSA9IGRyaXZlck5hbWU7XG5cbiAgICAgICAgICAgICAgICBpZiAoIURlZmluZWREcml2ZXJzW2RyaXZlck5hbWVdKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHdlIGRvbid0IG5lZWQgdG8gd2FpdCBmb3IgdGhlIHByb21pc2UsXG4gICAgICAgICAgICAgICAgICAgIC8vIHNpbmNlIHRoZSBkZWZhdWx0IGRyaXZlcnMgY2FuIGJlIGRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgLy8gaW4gYSBibG9ja2luZyBtYW5uZXJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZWZpbmVEcml2ZXIoZHJpdmVyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9kZWZhdWx0Q29uZmlnID0gZXh0ZW5kKHt9LCBEZWZhdWx0Q29uZmlnKTtcbiAgICAgICAgdGhpcy5fY29uZmlnID0gZXh0ZW5kKHt9LCB0aGlzLl9kZWZhdWx0Q29uZmlnLCBvcHRpb25zKTtcbiAgICAgICAgdGhpcy5fZHJpdmVyU2V0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5faW5pdERyaXZlciA9IG51bGw7XG4gICAgICAgIHRoaXMuX3JlYWR5ID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2RiSW5mbyA9IG51bGw7XG5cbiAgICAgICAgdGhpcy5fd3JhcExpYnJhcnlNZXRob2RzV2l0aFJlYWR5KCk7XG4gICAgICAgIHRoaXMuc2V0RHJpdmVyKHRoaXMuX2NvbmZpZy5kcml2ZXIpW1wiY2F0Y2hcIl0oZnVuY3Rpb24gKCkge30pO1xuICAgIH1cblxuICAgIC8vIFNldCBhbnkgY29uZmlnIHZhbHVlcyBmb3IgbG9jYWxGb3JhZ2U7IGNhbiBiZSBjYWxsZWQgYW55dGltZSBiZWZvcmVcbiAgICAvLyB0aGUgZmlyc3QgQVBJIGNhbGwgKGUuZy4gYGdldEl0ZW1gLCBgc2V0SXRlbWApLlxuICAgIC8vIFdlIGxvb3AgdGhyb3VnaCBvcHRpb25zIHNvIHdlIGRvbid0IG92ZXJ3cml0ZSBleGlzdGluZyBjb25maWdcbiAgICAvLyB2YWx1ZXMuXG5cblxuICAgIExvY2FsRm9yYWdlLnByb3RvdHlwZS5jb25maWcgPSBmdW5jdGlvbiBjb25maWcob3B0aW9ucykge1xuICAgICAgICAvLyBJZiB0aGUgb3B0aW9ucyBhcmd1bWVudCBpcyBhbiBvYmplY3QsIHdlIHVzZSBpdCB0byBzZXQgdmFsdWVzLlxuICAgICAgICAvLyBPdGhlcndpc2UsIHdlIHJldHVybiBlaXRoZXIgYSBzcGVjaWZpZWQgY29uZmlnIHZhbHVlIG9yIGFsbFxuICAgICAgICAvLyBjb25maWcgdmFsdWVzLlxuICAgICAgICBpZiAoKHR5cGVvZiBvcHRpb25zID09PSAndW5kZWZpbmVkJyA/ICd1bmRlZmluZWQnIDogX3R5cGVvZihvcHRpb25zKSkgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAvLyBJZiBsb2NhbGZvcmFnZSBpcyByZWFkeSBhbmQgZnVsbHkgaW5pdGlhbGl6ZWQsIHdlIGNhbid0IHNldFxuICAgICAgICAgICAgLy8gYW55IG5ldyBjb25maWd1cmF0aW9uIHZhbHVlcy4gSW5zdGVhZCwgd2UgcmV0dXJuIGFuIGVycm9yLlxuICAgICAgICAgICAgaWYgKHRoaXMuX3JlYWR5KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBFcnJvcihcIkNhbid0IGNhbGwgY29uZmlnKCkgYWZ0ZXIgbG9jYWxmb3JhZ2UgXCIgKyAnaGFzIGJlZW4gdXNlZC4nKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9yICh2YXIgaSBpbiBvcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgaWYgKGkgPT09ICdzdG9yZU5hbWUnKSB7XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnNbaV0gPSBvcHRpb25zW2ldLnJlcGxhY2UoL1xcVy9nLCAnXycpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChpID09PSAndmVyc2lvbicgJiYgdHlwZW9mIG9wdGlvbnNbaV0gIT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRXJyb3IoJ0RhdGFiYXNlIHZlcnNpb24gbXVzdCBiZSBhIG51bWJlci4nKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9jb25maWdbaV0gPSBvcHRpb25zW2ldO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBhZnRlciBhbGwgY29uZmlnIG9wdGlvbnMgYXJlIHNldCBhbmRcbiAgICAgICAgICAgIC8vIHRoZSBkcml2ZXIgb3B0aW9uIGlzIHVzZWQsIHRyeSBzZXR0aW5nIGl0XG4gICAgICAgICAgICBpZiAoJ2RyaXZlcicgaW4gb3B0aW9ucyAmJiBvcHRpb25zLmRyaXZlcikge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNldERyaXZlcih0aGlzLl9jb25maWcuZHJpdmVyKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIG9wdGlvbnMgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fY29uZmlnW29wdGlvbnNdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbmZpZztcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICAvLyBVc2VkIHRvIGRlZmluZSBhIGN1c3RvbSBkcml2ZXIsIHNoYXJlZCBhY3Jvc3MgYWxsIGluc3RhbmNlcyBvZlxuICAgIC8vIGxvY2FsRm9yYWdlLlxuXG5cbiAgICBMb2NhbEZvcmFnZS5wcm90b3R5cGUuZGVmaW5lRHJpdmVyID0gZnVuY3Rpb24gZGVmaW5lRHJpdmVyKGRyaXZlck9iamVjdCwgY2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spIHtcbiAgICAgICAgdmFyIHByb21pc2UgPSBuZXcgUHJvbWlzZSQxKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgdmFyIGRyaXZlck5hbWUgPSBkcml2ZXJPYmplY3QuX2RyaXZlcjtcbiAgICAgICAgICAgICAgICB2YXIgY29tcGxpYW5jZUVycm9yID0gbmV3IEVycm9yKCdDdXN0b20gZHJpdmVyIG5vdCBjb21wbGlhbnQ7IHNlZSAnICsgJ2h0dHBzOi8vbW96aWxsYS5naXRodWIuaW8vbG9jYWxGb3JhZ2UvI2RlZmluZWRyaXZlcicpO1xuXG4gICAgICAgICAgICAgICAgLy8gQSBkcml2ZXIgbmFtZSBzaG91bGQgYmUgZGVmaW5lZCBhbmQgbm90IG92ZXJsYXAgd2l0aCB0aGVcbiAgICAgICAgICAgICAgICAvLyBsaWJyYXJ5LWRlZmluZWQsIGRlZmF1bHQgZHJpdmVycy5cbiAgICAgICAgICAgICAgICBpZiAoIWRyaXZlck9iamVjdC5fZHJpdmVyKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChjb21wbGlhbmNlRXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFyIGRyaXZlck1ldGhvZHMgPSBMaWJyYXJ5TWV0aG9kcy5jb25jYXQoJ19pbml0U3RvcmFnZScpO1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBkcml2ZXJNZXRob2RzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBkcml2ZXJNZXRob2ROYW1lID0gZHJpdmVyTWV0aG9kc1tpXTtcblxuICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIHRoZSBwcm9wZXJ0eSBpcyB0aGVyZSxcbiAgICAgICAgICAgICAgICAgICAgLy8gaXQgc2hvdWxkIGJlIGEgbWV0aG9kIGV2ZW4gd2hlbiBvcHRpb25hbFxuICAgICAgICAgICAgICAgICAgICB2YXIgaXNSZXF1aXJlZCA9ICFpbmNsdWRlcyhPcHRpb25hbERyaXZlck1ldGhvZHMsIGRyaXZlck1ldGhvZE5hbWUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoKGlzUmVxdWlyZWQgfHwgZHJpdmVyT2JqZWN0W2RyaXZlck1ldGhvZE5hbWVdKSAmJiB0eXBlb2YgZHJpdmVyT2JqZWN0W2RyaXZlck1ldGhvZE5hbWVdICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoY29tcGxpYW5jZUVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHZhciBjb25maWd1cmVNaXNzaW5nTWV0aG9kcyA9IGZ1bmN0aW9uIGNvbmZpZ3VyZU1pc3NpbmdNZXRob2RzKCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgbWV0aG9kTm90SW1wbGVtZW50ZWRGYWN0b3J5ID0gZnVuY3Rpb24gbWV0aG9kTm90SW1wbGVtZW50ZWRGYWN0b3J5KG1ldGhvZE5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGVycm9yID0gbmV3IEVycm9yKCdNZXRob2QgJyArIG1ldGhvZE5hbWUgKyAnIGlzIG5vdCBpbXBsZW1lbnRlZCBieSB0aGUgY3VycmVudCBkcml2ZXInKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcHJvbWlzZSA9IFByb21pc2UkMS5yZWplY3QoZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGVDYWxsYmFjayhwcm9taXNlLCBhcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aCAtIDFdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJvbWlzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgX2kgPSAwLCBfbGVuID0gT3B0aW9uYWxEcml2ZXJNZXRob2RzLmxlbmd0aDsgX2kgPCBfbGVuOyBfaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgb3B0aW9uYWxEcml2ZXJNZXRob2QgPSBPcHRpb25hbERyaXZlck1ldGhvZHNbX2ldO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFkcml2ZXJPYmplY3Rbb3B0aW9uYWxEcml2ZXJNZXRob2RdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJpdmVyT2JqZWN0W29wdGlvbmFsRHJpdmVyTWV0aG9kXSA9IG1ldGhvZE5vdEltcGxlbWVudGVkRmFjdG9yeShvcHRpb25hbERyaXZlck1ldGhvZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgY29uZmlndXJlTWlzc2luZ01ldGhvZHMoKTtcblxuICAgICAgICAgICAgICAgIHZhciBzZXREcml2ZXJTdXBwb3J0ID0gZnVuY3Rpb24gc2V0RHJpdmVyU3VwcG9ydChzdXBwb3J0KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChEZWZpbmVkRHJpdmVyc1tkcml2ZXJOYW1lXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5pbmZvKCdSZWRlZmluaW5nIExvY2FsRm9yYWdlIGRyaXZlcjogJyArIGRyaXZlck5hbWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIERlZmluZWREcml2ZXJzW2RyaXZlck5hbWVdID0gZHJpdmVyT2JqZWN0O1xuICAgICAgICAgICAgICAgICAgICBEcml2ZXJTdXBwb3J0W2RyaXZlck5hbWVdID0gc3VwcG9ydDtcbiAgICAgICAgICAgICAgICAgICAgLy8gZG9uJ3QgdXNlIGEgdGhlbiwgc28gdGhhdCB3ZSBjYW4gZGVmaW5lXG4gICAgICAgICAgICAgICAgICAgIC8vIGRyaXZlcnMgdGhhdCBoYXZlIHNpbXBsZSBfc3VwcG9ydCBtZXRob2RzXG4gICAgICAgICAgICAgICAgICAgIC8vIGluIGEgYmxvY2tpbmcgbWFubmVyXG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgaWYgKCdfc3VwcG9ydCcgaW4gZHJpdmVyT2JqZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkcml2ZXJPYmplY3QuX3N1cHBvcnQgJiYgdHlwZW9mIGRyaXZlck9iamVjdC5fc3VwcG9ydCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZHJpdmVyT2JqZWN0Ll9zdXBwb3J0KCkudGhlbihzZXREcml2ZXJTdXBwb3J0LCByZWplY3QpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0RHJpdmVyU3VwcG9ydCghIWRyaXZlck9iamVjdC5fc3VwcG9ydCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzZXREcml2ZXJTdXBwb3J0KHRydWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICByZWplY3QoZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGV4ZWN1dGVUd29DYWxsYmFja3MocHJvbWlzZSwgY2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spO1xuICAgICAgICByZXR1cm4gcHJvbWlzZTtcbiAgICB9O1xuXG4gICAgTG9jYWxGb3JhZ2UucHJvdG90eXBlLmRyaXZlciA9IGZ1bmN0aW9uIGRyaXZlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RyaXZlciB8fCBudWxsO1xuICAgIH07XG5cbiAgICBMb2NhbEZvcmFnZS5wcm90b3R5cGUuZ2V0RHJpdmVyID0gZnVuY3Rpb24gZ2V0RHJpdmVyKGRyaXZlck5hbWUsIGNhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSB7XG4gICAgICAgIHZhciBnZXREcml2ZXJQcm9taXNlID0gRGVmaW5lZERyaXZlcnNbZHJpdmVyTmFtZV0gPyBQcm9taXNlJDEucmVzb2x2ZShEZWZpbmVkRHJpdmVyc1tkcml2ZXJOYW1lXSkgOiBQcm9taXNlJDEucmVqZWN0KG5ldyBFcnJvcignRHJpdmVyIG5vdCBmb3VuZC4nKSk7XG5cbiAgICAgICAgZXhlY3V0ZVR3b0NhbGxiYWNrcyhnZXREcml2ZXJQcm9taXNlLCBjYWxsYmFjaywgZXJyb3JDYWxsYmFjayk7XG4gICAgICAgIHJldHVybiBnZXREcml2ZXJQcm9taXNlO1xuICAgIH07XG5cbiAgICBMb2NhbEZvcmFnZS5wcm90b3R5cGUuZ2V0U2VyaWFsaXplciA9IGZ1bmN0aW9uIGdldFNlcmlhbGl6ZXIoY2FsbGJhY2spIHtcbiAgICAgICAgdmFyIHNlcmlhbGl6ZXJQcm9taXNlID0gUHJvbWlzZSQxLnJlc29sdmUobG9jYWxmb3JhZ2VTZXJpYWxpemVyKTtcbiAgICAgICAgZXhlY3V0ZVR3b0NhbGxiYWNrcyhzZXJpYWxpemVyUHJvbWlzZSwgY2FsbGJhY2spO1xuICAgICAgICByZXR1cm4gc2VyaWFsaXplclByb21pc2U7XG4gICAgfTtcblxuICAgIExvY2FsRm9yYWdlLnByb3RvdHlwZS5yZWFkeSA9IGZ1bmN0aW9uIHJlYWR5KGNhbGxiYWNrKSB7XG4gICAgICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgICAgICB2YXIgcHJvbWlzZSA9IHNlbGYuX2RyaXZlclNldC50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChzZWxmLl9yZWFkeSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHNlbGYuX3JlYWR5ID0gc2VsZi5faW5pdERyaXZlcigpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gc2VsZi5fcmVhZHk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGV4ZWN1dGVUd29DYWxsYmFja3MocHJvbWlzZSwgY2FsbGJhY2ssIGNhbGxiYWNrKTtcbiAgICAgICAgcmV0dXJuIHByb21pc2U7XG4gICAgfTtcblxuICAgIExvY2FsRm9yYWdlLnByb3RvdHlwZS5zZXREcml2ZXIgPSBmdW5jdGlvbiBzZXREcml2ZXIoZHJpdmVycywgY2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spIHtcbiAgICAgICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgICAgIGlmICghaXNBcnJheShkcml2ZXJzKSkge1xuICAgICAgICAgICAgZHJpdmVycyA9IFtkcml2ZXJzXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBzdXBwb3J0ZWREcml2ZXJzID0gdGhpcy5fZ2V0U3VwcG9ydGVkRHJpdmVycyhkcml2ZXJzKTtcblxuICAgICAgICBmdW5jdGlvbiBzZXREcml2ZXJUb0NvbmZpZygpIHtcbiAgICAgICAgICAgIHNlbGYuX2NvbmZpZy5kcml2ZXIgPSBzZWxmLmRyaXZlcigpO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gZXh0ZW5kU2VsZldpdGhEcml2ZXIoZHJpdmVyKSB7XG4gICAgICAgICAgICBzZWxmLl9leHRlbmQoZHJpdmVyKTtcbiAgICAgICAgICAgIHNldERyaXZlclRvQ29uZmlnKCk7XG5cbiAgICAgICAgICAgIHNlbGYuX3JlYWR5ID0gc2VsZi5faW5pdFN0b3JhZ2Uoc2VsZi5fY29uZmlnKTtcbiAgICAgICAgICAgIHJldHVybiBzZWxmLl9yZWFkeTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGluaXREcml2ZXIoc3VwcG9ydGVkRHJpdmVycykge1xuICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB2YXIgY3VycmVudERyaXZlckluZGV4ID0gMDtcblxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGRyaXZlclByb21pc2VMb29wKCkge1xuICAgICAgICAgICAgICAgICAgICB3aGlsZSAoY3VycmVudERyaXZlckluZGV4IDwgc3VwcG9ydGVkRHJpdmVycy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkcml2ZXJOYW1lID0gc3VwcG9ydGVkRHJpdmVyc1tjdXJyZW50RHJpdmVySW5kZXhdO1xuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudERyaXZlckluZGV4Kys7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2RiSW5mbyA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZWFkeSA9IG51bGw7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldERyaXZlcihkcml2ZXJOYW1lKS50aGVuKGV4dGVuZFNlbGZXaXRoRHJpdmVyKVtcImNhdGNoXCJdKGRyaXZlclByb21pc2VMb29wKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHNldERyaXZlclRvQ29uZmlnKCk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBlcnJvciA9IG5ldyBFcnJvcignTm8gYXZhaWxhYmxlIHN0b3JhZ2UgbWV0aG9kIGZvdW5kLicpO1xuICAgICAgICAgICAgICAgICAgICBzZWxmLl9kcml2ZXJTZXQgPSBQcm9taXNlJDEucmVqZWN0KGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2RyaXZlclNldDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gZHJpdmVyUHJvbWlzZUxvb3AoKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICAvLyBUaGVyZSBtaWdodCBiZSBhIGRyaXZlciBpbml0aWFsaXphdGlvbiBpbiBwcm9ncmVzc1xuICAgICAgICAvLyBzbyB3YWl0IGZvciBpdCB0byBmaW5pc2ggaW4gb3JkZXIgdG8gYXZvaWQgYSBwb3NzaWJsZVxuICAgICAgICAvLyByYWNlIGNvbmRpdGlvbiB0byBzZXQgX2RiSW5mb1xuICAgICAgICB2YXIgb2xkRHJpdmVyU2V0RG9uZSA9IHRoaXMuX2RyaXZlclNldCAhPT0gbnVsbCA/IHRoaXMuX2RyaXZlclNldFtcImNhdGNoXCJdKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlJDEucmVzb2x2ZSgpO1xuICAgICAgICB9KSA6IFByb21pc2UkMS5yZXNvbHZlKCk7XG5cbiAgICAgICAgdGhpcy5fZHJpdmVyU2V0ID0gb2xkRHJpdmVyU2V0RG9uZS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBkcml2ZXJOYW1lID0gc3VwcG9ydGVkRHJpdmVyc1swXTtcbiAgICAgICAgICAgIHNlbGYuX2RiSW5mbyA9IG51bGw7XG4gICAgICAgICAgICBzZWxmLl9yZWFkeSA9IG51bGw7XG5cbiAgICAgICAgICAgIHJldHVybiBzZWxmLmdldERyaXZlcihkcml2ZXJOYW1lKS50aGVuKGZ1bmN0aW9uIChkcml2ZXIpIHtcbiAgICAgICAgICAgICAgICBzZWxmLl9kcml2ZXIgPSBkcml2ZXIuX2RyaXZlcjtcbiAgICAgICAgICAgICAgICBzZXREcml2ZXJUb0NvbmZpZygpO1xuICAgICAgICAgICAgICAgIHNlbGYuX3dyYXBMaWJyYXJ5TWV0aG9kc1dpdGhSZWFkeSgpO1xuICAgICAgICAgICAgICAgIHNlbGYuX2luaXREcml2ZXIgPSBpbml0RHJpdmVyKHN1cHBvcnRlZERyaXZlcnMpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pW1wiY2F0Y2hcIl0oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2V0RHJpdmVyVG9Db25maWcoKTtcbiAgICAgICAgICAgIHZhciBlcnJvciA9IG5ldyBFcnJvcignTm8gYXZhaWxhYmxlIHN0b3JhZ2UgbWV0aG9kIGZvdW5kLicpO1xuICAgICAgICAgICAgc2VsZi5fZHJpdmVyU2V0ID0gUHJvbWlzZSQxLnJlamVjdChlcnJvcik7XG4gICAgICAgICAgICByZXR1cm4gc2VsZi5fZHJpdmVyU2V0O1xuICAgICAgICB9KTtcblxuICAgICAgICBleGVjdXRlVHdvQ2FsbGJhY2tzKHRoaXMuX2RyaXZlclNldCwgY2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spO1xuICAgICAgICByZXR1cm4gdGhpcy5fZHJpdmVyU2V0O1xuICAgIH07XG5cbiAgICBMb2NhbEZvcmFnZS5wcm90b3R5cGUuc3VwcG9ydHMgPSBmdW5jdGlvbiBzdXBwb3J0cyhkcml2ZXJOYW1lKSB7XG4gICAgICAgIHJldHVybiAhIURyaXZlclN1cHBvcnRbZHJpdmVyTmFtZV07XG4gICAgfTtcblxuICAgIExvY2FsRm9yYWdlLnByb3RvdHlwZS5fZXh0ZW5kID0gZnVuY3Rpb24gX2V4dGVuZChsaWJyYXJ5TWV0aG9kc0FuZFByb3BlcnRpZXMpIHtcbiAgICAgICAgZXh0ZW5kKHRoaXMsIGxpYnJhcnlNZXRob2RzQW5kUHJvcGVydGllcyk7XG4gICAgfTtcblxuICAgIExvY2FsRm9yYWdlLnByb3RvdHlwZS5fZ2V0U3VwcG9ydGVkRHJpdmVycyA9IGZ1bmN0aW9uIF9nZXRTdXBwb3J0ZWREcml2ZXJzKGRyaXZlcnMpIHtcbiAgICAgICAgdmFyIHN1cHBvcnRlZERyaXZlcnMgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IGRyaXZlcnMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBkcml2ZXJOYW1lID0gZHJpdmVyc1tpXTtcbiAgICAgICAgICAgIGlmICh0aGlzLnN1cHBvcnRzKGRyaXZlck5hbWUpKSB7XG4gICAgICAgICAgICAgICAgc3VwcG9ydGVkRHJpdmVycy5wdXNoKGRyaXZlck5hbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdXBwb3J0ZWREcml2ZXJzO1xuICAgIH07XG5cbiAgICBMb2NhbEZvcmFnZS5wcm90b3R5cGUuX3dyYXBMaWJyYXJ5TWV0aG9kc1dpdGhSZWFkeSA9IGZ1bmN0aW9uIF93cmFwTGlicmFyeU1ldGhvZHNXaXRoUmVhZHkoKSB7XG4gICAgICAgIC8vIEFkZCBhIHN0dWIgZm9yIGVhY2ggZHJpdmVyIEFQSSBtZXRob2QgdGhhdCBkZWxheXMgdGhlIGNhbGwgdG8gdGhlXG4gICAgICAgIC8vIGNvcnJlc3BvbmRpbmcgZHJpdmVyIG1ldGhvZCB1bnRpbCBsb2NhbEZvcmFnZSBpcyByZWFkeS4gVGhlc2Ugc3R1YnNcbiAgICAgICAgLy8gd2lsbCBiZSByZXBsYWNlZCBieSB0aGUgZHJpdmVyIG1ldGhvZHMgYXMgc29vbiBhcyB0aGUgZHJpdmVyIGlzXG4gICAgICAgIC8vIGxvYWRlZCwgc28gdGhlcmUgaXMgbm8gcGVyZm9ybWFuY2UgaW1wYWN0LlxuICAgICAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gTGlicmFyeU1ldGhvZHMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICAgIGNhbGxXaGVuUmVhZHkodGhpcywgTGlicmFyeU1ldGhvZHNbaV0pO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIExvY2FsRm9yYWdlLnByb3RvdHlwZS5jcmVhdGVJbnN0YW5jZSA9IGZ1bmN0aW9uIGNyZWF0ZUluc3RhbmNlKG9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBMb2NhbEZvcmFnZShvcHRpb25zKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIExvY2FsRm9yYWdlO1xufSgpO1xuXG4vLyBUaGUgYWN0dWFsIGxvY2FsRm9yYWdlIG9iamVjdCB0aGF0IHdlIGV4cG9zZSBhcyBhIG1vZHVsZSBvciB2aWEgYVxuLy8gZ2xvYmFsLiBJdCdzIGV4dGVuZGVkIGJ5IHB1bGxpbmcgaW4gb25lIG9mIG91ciBvdGhlciBsaWJyYXJpZXMuXG5cblxudmFyIGxvY2FsZm9yYWdlX2pzID0gbmV3IExvY2FsRm9yYWdlKCk7XG5cbm1vZHVsZS5leHBvcnRzID0gbG9jYWxmb3JhZ2VfanM7XG5cbn0se1wiM1wiOjN9XX0se30sWzRdKSg0KVxufSk7XG4iLCAiLyoqXG4gKiBAbGljZW5zZSBNSVRcbiAqIEBjb3B5cmlnaHQgMjAyMCBFeWFzIFJhbmpvdXMgPGV5YXMucmFuam91c0BnbWFpbC5jb20+XG4gKlxuICogQGNsYXNzXG4gKi9cbmNsYXNzIFF1ZXVlIHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBxdWV1ZS5cbiAgICogQHBhcmFtIHthcnJheX0gW2VsZW1lbnRzXVxuICAgKi9cbiAgY29uc3RydWN0b3IoZWxlbWVudHMpIHtcbiAgICB0aGlzLl9lbGVtZW50cyA9IEFycmF5LmlzQXJyYXkoZWxlbWVudHMpID8gZWxlbWVudHMgOiBbXTtcbiAgICB0aGlzLl9vZmZzZXQgPSAwO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYW4gZWxlbWVudCB0byB0aGUgYmFjayBvZiB0aGUgcXVldWUuXG4gICAqIEBwdWJsaWNcbiAgICogQHBhcmFtIHtudW1iZXJ8c3RyaW5nfG9iamVjdH0gZWxlbWVudFxuICAgKi9cbiAgZW5xdWV1ZShlbGVtZW50KSB7XG4gICAgdGhpcy5fZWxlbWVudHMucHVzaChlbGVtZW50KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGFuIGVsZW1lbnQgdG8gdGhlIGJhY2sgb2YgdGhlIHF1ZXVlLlxuICAgKiBAcHVibGljXG4gICAqIEBwYXJhbSB7bnVtYmVyfHN0cmluZ3xvYmplY3R9IGVsZW1lbnRcbiAgICovXG4gIHB1c2goZWxlbWVudCkge1xuICAgIHJldHVybiB0aGlzLmVucXVldWUoZWxlbWVudCk7XG4gIH1cblxuICAvKipcbiAgICogRGVxdWV1ZXMgdGhlIGZyb250IGVsZW1lbnQgaW4gdGhlIHF1ZXVlLlxuICAgKiBAcHVibGljXG4gICAqIEByZXR1cm5zIHtudW1iZXJ8c3RyaW5nfG9iamVjdH1cbiAgICovXG4gIGRlcXVldWUoKSB7XG4gICAgaWYgKHRoaXMuc2l6ZSgpID09PSAwKSByZXR1cm4gbnVsbDtcblxuICAgIGNvbnN0IGZpcnN0ID0gdGhpcy5mcm9udCgpO1xuICAgIHRoaXMuX29mZnNldCArPSAxO1xuXG4gICAgaWYgKHRoaXMuX29mZnNldCAqIDIgPCB0aGlzLl9lbGVtZW50cy5sZW5ndGgpIHJldHVybiBmaXJzdDtcblxuICAgIC8vIG9ubHkgcmVtb3ZlIGRlcXVldWVkIGVsZW1lbnRzIHdoZW4gcmVhY2hpbmcgaGFsZiBzaXplXG4gICAgLy8gdG8gZGVjcmVhc2UgbGF0ZW5jeSBvZiBzaGlmdGluZyBlbGVtZW50cy5cbiAgICB0aGlzLl9lbGVtZW50cyA9IHRoaXMuX2VsZW1lbnRzLnNsaWNlKHRoaXMuX29mZnNldCk7XG4gICAgdGhpcy5fb2Zmc2V0ID0gMDtcbiAgICByZXR1cm4gZmlyc3Q7XG4gIH1cblxuICAvKipcbiAgICogRGVxdWV1ZXMgdGhlIGZyb250IGVsZW1lbnQgaW4gdGhlIHF1ZXVlLlxuICAgKiBAcHVibGljXG4gICAqIEByZXR1cm5zIHtudW1iZXJ8c3RyaW5nfG9iamVjdH1cbiAgICovXG4gIHBvcCgpIHtcbiAgICByZXR1cm4gdGhpcy5kZXF1ZXVlKCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgZnJvbnQgZWxlbWVudCBvZiB0aGUgcXVldWUuXG4gICAqIEBwdWJsaWNcbiAgICogQHJldHVybnMge251bWJlcnxzdHJpbmd8b2JqZWN0fVxuICAgKi9cbiAgZnJvbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2l6ZSgpID4gMCA/IHRoaXMuX2VsZW1lbnRzW3RoaXMuX29mZnNldF0gOiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGJhY2sgZWxlbWVudCBvZiB0aGUgcXVldWUuXG4gICAqIEBwdWJsaWNcbiAgICogQHJldHVybnMge251bWJlcnxzdHJpbmd8b2JqZWN0fVxuICAgKi9cbiAgYmFjaygpIHtcbiAgICByZXR1cm4gdGhpcy5zaXplKCkgPiAwID8gdGhpcy5fZWxlbWVudHNbdGhpcy5fZWxlbWVudHMubGVuZ3RoIC0gMV0gOiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgcXVldWUuXG4gICAqIEBwdWJsaWNcbiAgICogQHJldHVybnMge251bWJlcn1cbiAgICovXG4gIHNpemUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2VsZW1lbnRzLmxlbmd0aCAtIHRoaXMuX29mZnNldDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIHF1ZXVlIGlzIGVtcHR5LlxuICAgKiBAcHVibGljXG4gICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgKi9cbiAgaXNFbXB0eSgpIHtcbiAgICByZXR1cm4gdGhpcy5zaXplKCkgPT09IDA7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgcmVtYWluaW5nIGVsZW1lbnRzIGluIHRoZSBxdWV1ZSBhcyBhbiBhcnJheS5cbiAgICogQHB1YmxpY1xuICAgKiBAcmV0dXJucyB7YXJyYXl9XG4gICAqL1xuICB0b0FycmF5KCkge1xuICAgIHJldHVybiB0aGlzLl9lbGVtZW50cy5zbGljZSh0aGlzLl9vZmZzZXQpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFycyB0aGUgcXVldWUuXG4gICAqIEBwdWJsaWNcbiAgICovXG4gIGNsZWFyKCkge1xuICAgIHRoaXMuX2VsZW1lbnRzID0gW107XG4gICAgdGhpcy5fb2Zmc2V0ID0gMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgc2hhbGxvdyBjb3B5IG9mIHRoZSBxdWV1ZS5cbiAgICogQHB1YmxpY1xuICAgKiBAcmV0dXJuIHtRdWV1ZX1cbiAgICovXG4gIGNsb25lKCkge1xuICAgIHJldHVybiBuZXcgUXVldWUodGhpcy5fZWxlbWVudHMuc2xpY2UodGhpcy5fb2Zmc2V0KSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHF1ZXVlIGZyb20gYW4gZXhpc3RpbmcgYXJyYXkuXG4gICAqIEBwdWJsaWNcbiAgICogQHN0YXRpY1xuICAgKiBAcGFyYW0ge2FycmF5fSBlbGVtZW50c1xuICAgKiBAcmV0dXJuIHtRdWV1ZX1cbiAgICovXG4gIHN0YXRpYyBmcm9tQXJyYXkoZWxlbWVudHMpIHtcbiAgICByZXR1cm4gbmV3IFF1ZXVlKGVsZW1lbnRzKTtcbiAgfVxufVxuXG5leHBvcnRzLlF1ZXVlID0gUXVldWU7XG4iLCAiY29uc3QgeyBRdWV1ZSB9ID0gcmVxdWlyZSgnLi9zcmMvcXVldWUnKTtcblxuZXhwb3J0cy5RdWV1ZSA9IFF1ZXVlO1xuIiwgImltcG9ydCB7IERhdGFjb3JlQXBpIH0gZnJvbSBcImFwaS9hcGlcIjtcbmltcG9ydCB7IERhdGFjb3JlIH0gZnJvbSBcImluZGV4L2RhdGFjb3JlXCI7XG5pbXBvcnQgeyBEYXRlVGltZSB9IGZyb20gXCJsdXhvblwiO1xuaW1wb3J0IHsgQXBwLCBQbHVnaW4sIFBsdWdpblNldHRpbmdUYWIsIFNldHRpbmcgfSBmcm9tIFwib2JzaWRpYW5cIjtcbmltcG9ydCB7IGNyZWF0ZUVsZW1lbnQsIHJlbmRlciB9IGZyb20gXCJwcmVhY3RcIjtcbmltcG9ydCB7IERFRkFVTFRfU0VUVElOR1MsIFNldHRpbmdzIH0gZnJvbSBcInNldHRpbmdzXCI7XG5pbXBvcnQgeyBEYXRhY29yZVF1ZXJ5VmlldyBhcyBEYXRhY29yZUpTVmlldywgVklFV19UWVBFX0RBVEFDT1JFSlMgfSBmcm9tIFwidWkvdmlldy1wYWdlXCI7XG5pbXBvcnQgeyBJbmRleFN0YXR1c0JhciB9IGZyb20gXCJ1aS9pbmRleC1zdGF0dXNcIjtcblxuLyoqIFJlYWN0aXZlIGRhdGEgZW5naW5lIGZvciB5b3VyIE9ic2lkaWFuLm1kIHZhdWx0LiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGF0YWNvcmVQbHVnaW4gZXh0ZW5kcyBQbHVnaW4ge1xuICAgIC8qKiBQbHVnaW4td2lkZSBkZWZhdWx0IHNldHRpbmdzLiAqL1xuICAgIHB1YmxpYyBzZXR0aW5nczogU2V0dGluZ3M7XG5cbiAgICAvKiogQ2VudHJhbCBpbnRlcm5hbCBzdGF0ZS4gKi9cbiAgICBwdWJsaWMgY29yZTogRGF0YWNvcmU7XG4gICAgLyoqIEV4dGVybmFsbHkgdmlzaWJsZSBBUEkgZm9yIHF1ZXJ5aW5nLiAqL1xuICAgIHB1YmxpYyBhcGk6IERhdGFjb3JlQXBpO1xuXG4gICAgYXN5bmMgb25sb2FkKCkge1xuICAgICAgICB0aGlzLnNldHRpbmdzID0gT2JqZWN0LmFzc2lnbih7fSwgREVGQVVMVF9TRVRUSU5HUywgKGF3YWl0IHRoaXMubG9hZERhdGEoKSkgPz8ge30pO1xuICAgICAgICB0aGlzLmFkZFNldHRpbmdUYWIobmV3IEdlbmVyYWxTZXR0aW5nc1RhYih0aGlzLmFwcCwgdGhpcykpO1xuXG4gICAgICAgIC8vIEluaXRpYWxpemUgdGhlIGNvcmUgQVBJIGZvciB1c2FnZSBpbiBhbGwgdmlld3MgYW5kIGRvd25zdHJlYW0gYXBwcy5cbiAgICAgICAgdGhpcy5hZGRDaGlsZCgodGhpcy5jb3JlID0gbmV3IERhdGFjb3JlKHRoaXMuYXBwLCB0aGlzLm1hbmlmZXN0LnZlcnNpb24sIHRoaXMuc2V0dGluZ3MpKSk7XG4gICAgICAgIHRoaXMuYXBpID0gbmV3IERhdGFjb3JlQXBpKHRoaXMuY29yZSk7XG5cbiAgICAgICAgLy8gQWRkIGEgdmlzdWFsIGFpZCBmb3Igd2hhdCBkYXRhY29yZSBpcyBjdXJyZW50bHkgZG9pbmcuXG4gICAgICAgIHRoaXMubW91bnRJbmRleFN0YXRlKHRoaXMuYWRkU3RhdHVzQmFySXRlbSgpLCB0aGlzLmNvcmUpO1xuXG4gICAgICAgIC8vIFByaW1hcnkgdmlzdWFsIGVsZW1lbnRzIChEYXRhY29yZUpTIGFuZCBEYXRhY29yZSBibG9ja3MpLlxuICAgICAgICB0aGlzLnJlZ2lzdGVyTWFya2Rvd25Db2RlQmxvY2tQcm9jZXNzb3IoXG4gICAgICAgICAgICBcImRhdGFjb3JlanNcIixcbiAgICAgICAgICAgIGFzeW5jIChzb3VyY2U6IHN0cmluZywgZWwsIGN0eCkgPT4gdGhpcy5hcGkuZXhlY3V0ZUpzKHNvdXJjZSwgZWwsIGN0eCwgY3R4LnNvdXJjZVBhdGgpLFxuICAgICAgICAgICAgLTEwMFxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMucmVnaXN0ZXJNYXJrZG93bkNvZGVCbG9ja1Byb2Nlc3NvcihcbiAgICAgICAgICAgIFwiZGF0YWNvcmVqc3hcIixcbiAgICAgICAgICAgIGFzeW5jIChzb3VyY2U6IHN0cmluZywgZWwsIGN0eCkgPT4gdGhpcy5hcGkuZXhlY3V0ZUpzeChzb3VyY2UsIGVsLCBjdHgsIGN0eC5zb3VyY2VQYXRoKSxcbiAgICAgICAgICAgIC0xMDBcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLnJlZ2lzdGVyTWFya2Rvd25Db2RlQmxvY2tQcm9jZXNzb3IoXG4gICAgICAgICAgICBcImRhdGFjb3JldHNcIixcbiAgICAgICAgICAgIGFzeW5jIChzb3VyY2U6IHN0cmluZywgZWwsIGN0eCkgPT4gdGhpcy5hcGkuZXhlY3V0ZVRzKHNvdXJjZSwgZWwsIGN0eCwgY3R4LnNvdXJjZVBhdGgpLFxuICAgICAgICAgICAgLTEwMFxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMucmVnaXN0ZXJNYXJrZG93bkNvZGVCbG9ja1Byb2Nlc3NvcihcbiAgICAgICAgICAgIFwiZGF0YWNvcmV0c3hcIixcbiAgICAgICAgICAgIGFzeW5jIChzb3VyY2U6IHN0cmluZywgZWwsIGN0eCkgPT4gdGhpcy5hcGkuZXhlY3V0ZVRzeChzb3VyY2UsIGVsLCBjdHgsIGN0eC5zb3VyY2VQYXRoKSxcbiAgICAgICAgICAgIC0xMDBcbiAgICAgICAgKTtcblxuICAgICAgICAvLyBWaWV3czogRGF0YWNvcmVKUyB2aWV3LlxuICAgICAgICAvLyBAdHMtaWdub3JlIGJlIHF1aWV0XG4gICAgICAgIHRoaXMucmVnaXN0ZXJWaWV3KFZJRVdfVFlQRV9EQVRBQ09SRUpTLCAobGVhZikgPT4gbmV3IERhdGFjb3JlSlNWaWV3KGxlYWYsIHRoaXMuYXBpKSk7XG5cbiAgICAgICAgLy8gQWRkIGEgY29tbWFuZCBmb3IgY3JlYXRpbmcgYSBuZXcgdmlldyBwYWdlLlxuICAgICAgICB0aGlzLmFkZENvbW1hbmQoe1xuICAgICAgICAgICAgaWQ6IFwiZGF0YWNvcmUtYWRkLXZpZXctcGFnZVwiLFxuICAgICAgICAgICAgbmFtZTogXCJDcmVhdGUgVmlldyBQYWdlXCIsXG4gICAgICAgICAgICBjYWxsYmFjazogKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0xlYWYgPSB0aGlzLmFwcC53b3Jrc3BhY2UuZ2V0TGVhZihcInRhYlwiKTtcbiAgICAgICAgICAgICAgICBuZXdMZWFmLnNldFZpZXdTdGF0ZSh7IHR5cGU6IFZJRVdfVFlQRV9EQVRBQ09SRUpTLCBhY3RpdmU6IHRydWUgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5hcHAud29ya3NwYWNlLnNldEFjdGl2ZUxlYWYobmV3TGVhZiwgeyBmb2N1czogdHJ1ZSB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFJlZ2lzdGVyIEpTIGhpZ2hsaWdodGluZyBmb3IgY29kZWJsb2Nrcy5cbiAgICAgICAgdGhpcy5yZWdpc3Rlcih0aGlzLnJlZ2lzdGVyQ29kZWJsb2NrSGlnaGxpZ2h0aW5nKCkpO1xuXG4gICAgICAgIC8vIEluaXRpYWxpemUgYXMgc29vbiBhcyB0aGUgd29ya3NwYWNlIGlzIHJlYWR5LlxuICAgICAgICBpZiAoIXRoaXMuYXBwLndvcmtzcGFjZS5sYXlvdXRSZWFkeSkge1xuICAgICAgICAgICAgdGhpcy5hcHAud29ya3NwYWNlLm9uTGF5b3V0UmVhZHkoYXN5bmMgKCkgPT4gdGhpcy5jb3JlLmluaXRpYWxpemUoKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNvcmUuaW5pdGlhbGl6ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gTWFrZSB0aGUgQVBJIGdsb2JhbGx5IGFjY2Vzc2libGUgZnJvbSBhbnkgY29udGV4dC5cbiAgICAgICAgd2luZG93LmRhdGFjb3JlID0gdGhpcy5hcGk7XG5cbiAgICAgICAgLy8gYm9uIGFwcGV0aXRcbiAgICAgICAgY29uc29sZS5sb2coYERhdGFjb3JlOiB2ZXJzaW9uICR7dGhpcy5tYW5pZmVzdC52ZXJzaW9ufSAocmVxdWlyZXMgb2JzaWRpYW4gJHt0aGlzLm1hbmlmZXN0Lm1pbkFwcFZlcnNpb259KWApO1xuICAgIH1cblxuICAgIG9udW5sb2FkKCkge1xuICAgICAgICBjb25zb2xlLmxvZyhgRGF0YWNvcmU6IHZlcnNpb24gJHt0aGlzLm1hbmlmZXN0LnZlcnNpb259IHVubG9hZGVkLmApO1xuICAgIH1cblxuICAgIC8qKiBSZWdpc3RlciBjb2RlYmxvY2sgaGlnaGxpZ2h0aW5nIGFuZCByZXR1cm4gYSBjbG9zdXJlIHdoaWNoIHVucmVnaXN0ZXJzLiAqL1xuICAgIHJlZ2lzdGVyQ29kZWJsb2NrSGlnaGxpZ2h0aW5nKCk6ICgpID0+IHZvaWQge1xuICAgICAgICB3aW5kb3cuQ29kZU1pcnJvci5kZWZpbmVNb2RlKFwiZGF0YWNvcmVqc1wiLCAoY29uZmlnKSA9PiB3aW5kb3cuQ29kZU1pcnJvci5nZXRNb2RlKGNvbmZpZywgXCJqYXZhc2NyaXB0XCIpKTtcbiAgICAgICAgd2luZG93LkNvZGVNaXJyb3IuZGVmaW5lTW9kZShcImRhdGFjb3JlanN4XCIsIChjb25maWcpID0+IHdpbmRvdy5Db2RlTWlycm9yLmdldE1vZGUoY29uZmlnLCBcImpzeFwiKSk7XG4gICAgICAgIHdpbmRvdy5Db2RlTWlycm9yLmRlZmluZU1vZGUoXCJkYXRhY29yZXRzXCIsIChjb25maWcpID0+IHdpbmRvdy5Db2RlTWlycm9yLmdldE1vZGUoY29uZmlnLCBcImphdmFzY3JpcHRcIikpO1xuICAgICAgICB3aW5kb3cuQ29kZU1pcnJvci5kZWZpbmVNb2RlKFwiZGF0YWNvcmV0c3hcIiwgKGNvbmZpZykgPT4gd2luZG93LkNvZGVNaXJyb3IuZ2V0TW9kZShjb25maWcsIFwianN4XCIpKTtcblxuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgd2luZG93LkNvZGVNaXJyb3IuZGVmaW5lTW9kZShcImRhdGFjb3JlanNcIiwgKGNvbmZpZykgPT4gd2luZG93LkNvZGVNaXJyb3IuZ2V0TW9kZShjb25maWcsIFwibnVsbFwiKSk7XG4gICAgICAgICAgICB3aW5kb3cuQ29kZU1pcnJvci5kZWZpbmVNb2RlKFwiZGF0YWNvcmVqc3hcIiwgKGNvbmZpZykgPT4gd2luZG93LkNvZGVNaXJyb3IuZ2V0TW9kZShjb25maWcsIFwibnVsbFwiKSk7XG4gICAgICAgICAgICB3aW5kb3cuQ29kZU1pcnJvci5kZWZpbmVNb2RlKFwiZGF0YWNvcmV0c1wiLCAoY29uZmlnKSA9PiB3aW5kb3cuQ29kZU1pcnJvci5nZXRNb2RlKGNvbmZpZywgXCJudWxsXCIpKTtcbiAgICAgICAgICAgIHdpbmRvdy5Db2RlTWlycm9yLmRlZmluZU1vZGUoXCJkYXRhY29yZXRzeFwiLCAoY29uZmlnKSA9PiB3aW5kb3cuQ29kZU1pcnJvci5nZXRNb2RlKGNvbmZpZywgXCJudWxsXCIpKTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKiogVXBkYXRlIHRoZSBnaXZlbiBzZXR0aW5ncyB0byBuZXcgdmFsdWVzLiAqL1xuICAgIGFzeW5jIHVwZGF0ZVNldHRpbmdzKHNldHRpbmdzOiBQYXJ0aWFsPFNldHRpbmdzPikge1xuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMuc2V0dGluZ3MsIHNldHRpbmdzKTtcbiAgICAgICAgYXdhaXQgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcbiAgICB9XG5cbiAgICAvKiogUmVuZGVyIGRhdGFjb3JlIGluZGV4aW5nIHN0YXR1cyB1c2luZyB0aGUgaW5kZXguICovXG4gICAgcHJpdmF0ZSBtb3VudEluZGV4U3RhdGUocm9vdDogSFRNTEVsZW1lbnQsIGNvcmU6IERhdGFjb3JlKTogdm9pZCB7XG4gICAgICAgIHJlbmRlcihjcmVhdGVFbGVtZW50KEluZGV4U3RhdHVzQmFyLCB7IGRhdGFjb3JlOiBjb3JlIH0pLCByb290KTtcblxuICAgICAgICB0aGlzLnJlZ2lzdGVyKCgpID0+IHJlbmRlcihudWxsLCByb290KSk7XG4gICAgfVxufVxuXG4vKiogRGF0YWNvcmUgU2V0dGluZ3MgVGFiLiAqL1xuY2xhc3MgR2VuZXJhbFNldHRpbmdzVGFiIGV4dGVuZHMgUGx1Z2luU2V0dGluZ1RhYiB7XG4gICAgY29uc3RydWN0b3IoYXBwOiBBcHAsIHByaXZhdGUgcGx1Z2luOiBEYXRhY29yZVBsdWdpbikge1xuICAgICAgICBzdXBlcihhcHAsIHBsdWdpbik7XG4gICAgfVxuXG4gICAgcHVibGljIGRpc3BsYXkoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY29udGFpbmVyRWwuZW1wdHkoKTtcblxuICAgICAgICB0aGlzLmNvbnRhaW5lckVsLmNyZWF0ZUVsKFwiaDJcIiwgeyB0ZXh0OiBcIlZpZXdzXCIgfSk7XG5cbiAgICAgICAgbmV3IFNldHRpbmcodGhpcy5jb250YWluZXJFbClcbiAgICAgICAgICAgIC5zZXROYW1lKFwiUGFnaW5hdGlvblwiKVxuICAgICAgICAgICAgLnNldERlc2MoXG4gICAgICAgICAgICAgICAgXCJJZiBlbmFibGVkLCBzcGxpdHMgdXAgdmlld3MgaW50byBwYWdlcyBvZiByZXN1bHRzIHdoaWNoIGNhbiBiZSB0cmF2ZXJzZWQgXCIgK1xuICAgICAgICAgICAgICAgICAgICBcInZpYSBidXR0b25zIGF0IHRoZSB0b3AgYW5kIGJvdHRvbSBvZiB0aGUgdmlldy4gVGhpcyBzdWJzdGFudGlhbGx5IGltcHJvdmVzIFwiICtcbiAgICAgICAgICAgICAgICAgICAgXCJ0aGUgcGVyZm9ybWFuY2Ugb2YgbGFyZ2Ugdmlld3MsIGFuZCBjYW4gaGVscCB3aXRoIHZpc3VhbCBjbHV0dGVyLiBOb3RlIHRoYXQgXCIgK1xuICAgICAgICAgICAgICAgICAgICBcInRoaXMgc2V0dGluZyBjYW4gYWxzbyBiZSBzZXQgb24gYSBwZXItdmlldyBiYXNpcy5cIlxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG4gICAgICAgICAgICAgICAgdG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmRlZmF1bHRQYWdpbmdFbmFibGVkKS5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5wbHVnaW4udXBkYXRlU2V0dGluZ3MoeyBkZWZhdWx0UGFnaW5nRW5hYmxlZDogdmFsdWUgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICBuZXcgU2V0dGluZyh0aGlzLmNvbnRhaW5lckVsKVxuICAgICAgICAgICAgLnNldE5hbWUoXCJEZWZhdWx0IFBhZ2UgU2l6ZVwiKVxuICAgICAgICAgICAgLnNldERlc2MoXCJUaGUgbnVtYmVyIG9mIGVudHJpZXMgdG8gc2hvdyBwZXIgcGFnZSwgYnkgZGVmYXVsdC4gVGhpcyBjYW4gYmUgb3ZlcnJpZGVuIG9uIGEgcGVyLXZpZXcgYmFzaXMuXCIpXG4gICAgICAgICAgICAuYWRkRHJvcGRvd24oKGRyb3Bkb3duKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgT1BUSU9OUzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgICAgICAgICAgICAgICAgXCIyNVwiOiBcIjI1XCIsXG4gICAgICAgICAgICAgICAgICAgIFwiNTBcIjogXCI1MFwiLFxuICAgICAgICAgICAgICAgICAgICBcIjEwMFwiOiBcIjEwMFwiLFxuICAgICAgICAgICAgICAgICAgICBcIjIwMFwiOiBcIjIwMFwiLFxuICAgICAgICAgICAgICAgICAgICBcIjUwMFwiOiBcIjUwMFwiLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgY29uc3QgY3VycmVudCA9IFwiXCIgKyB0aGlzLnBsdWdpbi5zZXR0aW5ncy5kZWZhdWx0UGFnZVNpemU7XG4gICAgICAgICAgICAgICAgaWYgKCEoY3VycmVudCBpbiBPUFRJT05TKSkgT1BUSU9OU1tjdXJyZW50XSA9IGN1cnJlbnQ7XG5cbiAgICAgICAgICAgICAgICBkcm9wZG93blxuICAgICAgICAgICAgICAgICAgICAuYWRkT3B0aW9ucyhPUFRJT05TKVxuICAgICAgICAgICAgICAgICAgICAuc2V0VmFsdWUoY3VycmVudClcbiAgICAgICAgICAgICAgICAgICAgLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyc2VkID0gcGFyc2VGbG9hdCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNOYU4ocGFyc2VkKSkgcmV0dXJuO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnBsdWdpbi51cGRhdGVTZXR0aW5ncyh7IGRlZmF1bHRQYWdlU2l6ZTogcGFyc2VkIHwgMCB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICBuZXcgU2V0dGluZyh0aGlzLmNvbnRhaW5lckVsKVxuICAgICAgICAgICAgLnNldE5hbWUoXCJTY3JvbGwgb24gUGFnZSBDaGFuZ2VcIilcbiAgICAgICAgICAgIC5zZXREZXNjKFxuICAgICAgICAgICAgICAgIFwiSWYgZW5hYmxlZCwgdGFibGUgdGhhdCBhcmUgcGFnZWQgd2lsbCBzY3JvbGwgdG8gdGhlIHRvcCBvZiB0aGUgdGFibGUgd2hlbiB0aGUgcGFnZSBjaGFuZ2VzLiBcIiArXG4gICAgICAgICAgICAgICAgICAgIFwiVGhpcyBjYW4gYmUgb3ZlcnJpZGVuIG9uIGEgcGVyLXZpZXcgYmFzaXMuXCJcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT4ge1xuICAgICAgICAgICAgICAgIHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5zY3JvbGxPblBhZ2VDaGFuZ2UpLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnBsdWdpbi51cGRhdGVTZXR0aW5ncyh7IHNjcm9sbE9uUGFnZUNoYW5nZTogdmFsdWUgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgbmV3IFNldHRpbmcodGhpcy5jb250YWluZXJFbClcbiAgICAgICAgICAgIC5zZXROYW1lKFwiRW5hYmxlIEphdmFzY3JpcHRcIilcbiAgICAgICAgICAgIC5zZXREZXNjKFwiV2hldGhlciBKYXZhc2NyaXB0IGNvZGVibG9ja3Mgd2lsbCBiZSBldmFsdWF0ZWQuXCIpXG4gICAgICAgICAgICAuYWRkVG9nZ2xlKCh0b2dnbGUpID0+IHtcbiAgICAgICAgICAgICAgICB0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuZW5hYmxlSnMpLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnBsdWdpbi51cGRhdGVTZXR0aW5ncyh7IGVuYWJsZUpzOiB2YWx1ZSB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuY29udGFpbmVyRWwuY3JlYXRlRWwoXCJoMlwiLCB7IHRleHQ6IFwiRm9ybWF0dGluZ1wiIH0pO1xuXG4gICAgICAgIG5ldyBTZXR0aW5nKHRoaXMuY29udGFpbmVyRWwpXG4gICAgICAgICAgICAuc2V0TmFtZShcIkVtcHR5IFZhbHVlc1wiKVxuICAgICAgICAgICAgLnNldERlc2MoXCJXaGF0IHRvIHNob3cgZm9yIHVuc2V0L2VtcHR5IHByb3BlcnRpZXMuXCIpXG4gICAgICAgICAgICAuYWRkVGV4dCgodGV4dCkgPT4ge1xuICAgICAgICAgICAgICAgIHRleHQuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MucmVuZGVyTnVsbEFzKS5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5wbHVnaW4udXBkYXRlU2V0dGluZ3MoeyByZW5kZXJOdWxsQXM6IHZhbHVlIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgbmV3IFNldHRpbmcodGhpcy5jb250YWluZXJFbClcbiAgICAgICAgICAgIC5zZXROYW1lKFwiRGVmYXVsdCBEYXRlIEZvcm1hdFwiKVxuICAgICAgICAgICAgLnNldERlc2MoXG4gICAgICAgICAgICAgICAgXCJUaGUgZGVmYXVsdCBmb3JtYXQgdGhhdCBkYXRlcyBhcmUgcmVuZGVyZWQgaW4uIFVzZXMgbHV4b24gZGF0ZSBmb3JtYXR0aW5nIChodHRwczovL2dpdGh1Yi5jb20vbW9tZW50L2x1eG9uL2Jsb2IvbWFzdGVyL2RvY3MvZm9ybWF0dGluZy5tZCNmb3JtYXR0aW5nLXdpdGgtdG9rZW5zLXN0cmluZ3MtZm9yLWN0aHVsaHUpLlwiXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuYWRkVGV4dCgodGV4dCkgPT4ge1xuICAgICAgICAgICAgICAgIHRleHQuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuZGVmYXVsdERhdGVGb3JtYXQpLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAvLyBjaGVjayBpZiBkYXRlIGZvcm1hdCBpcyB2YWxpZFxuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgRGF0ZVRpbWUuZnJvbU1pbGxpcyhEYXRlLm5vdygpKS50b0Zvcm1hdCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMucGx1Z2luLnVwZGF0ZVNldHRpbmdzKHsgZGVmYXVsdERhdGVGb3JtYXQ6IHZhbHVlIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgbmV3IFNldHRpbmcodGhpcy5jb250YWluZXJFbClcbiAgICAgICAgICAgIC5zZXROYW1lKFwiRGVmYXVsdCBEYXRlLVRpbWUgZm9ybWF0XCIpXG4gICAgICAgICAgICAuc2V0RGVzYyhcbiAgICAgICAgICAgICAgICBcIlRoZSBkZWZhdWx0IGZvcm1hdCB0aGF0IGRhdGUtdGltZXMgYXJlIHJlbmRlcmVkIGluLiBVc2VzIGx1eG9uIGRhdGUgZm9ybWF0dGluZyAoaHR0cHM6Ly9naXRodWIuY29tL21vbWVudC9sdXhvbi9ibG9iL21hc3Rlci9kb2NzL2Zvcm1hdHRpbmcubWQjZm9ybWF0dGluZy13aXRoLXRva2Vucy1zdHJpbmdzLWZvci1jdGh1bGh1KS5cIlxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLmFkZFRleHQoKHRleHQpID0+IHtcbiAgICAgICAgICAgICAgICB0ZXh0LnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmRlZmF1bHREYXRlVGltZUZvcm1hdCkub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBEYXRlVGltZS5mcm9tTWlsbGlzKERhdGUubm93KCkpLnRvRm9ybWF0KHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5wbHVnaW4udXBkYXRlU2V0dGluZ3MoeyBkZWZhdWx0RGF0ZVRpbWVGb3JtYXQ6IHZhbHVlIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5jb250YWluZXJFbC5jcmVhdGVFbChcImgyXCIsIHsgdGV4dDogXCJQZXJmb3JtYW5jZSBUdW5pbmdcIiB9KTtcblxuICAgICAgICBuZXcgU2V0dGluZyh0aGlzLmNvbnRhaW5lckVsKVxuICAgICAgICAgICAgLnNldE5hbWUoXCJJbmxpbmUgRmllbGRzXCIpXG4gICAgICAgICAgICAuc2V0RGVzYyhcbiAgICAgICAgICAgICAgICBcIklmIGVuYWJsZWQsIGlubGluZSBmaWVsZHMgd2lsbCBiZSBwYXJzZWQgaW4gYWxsIGRvY3VtZW50cy4gRmluZGluZyBpbmxpbmUgZmllbGRzIHJlcXVpcmVzIGEgZnVsbCB0ZXh0IHNjYW4gdGhyb3VnaCBlYWNoIGRvY3VtZW50LCBcIiArXG4gICAgICAgICAgICAgICAgICAgIFwid2hpY2ggbm90aWNhYmx5IHNsb3dzIGRvd24gaW5kZXhpbmcgZm9yIGxhcmdlIHZhdWx0cy4gRGlzYWJsaW5nIHRoaXMgZnVuY3Rpb25hbGl0eSB3aWxsIG1lYW4gbWV0YWRhdGEgd2lsbCBvbmx5IGNvbWUgZnJvbSB0YWdzLCBsaW5rcywgYW5kIFwiICtcbiAgICAgICAgICAgICAgICAgICAgXCJQcm9wZXJ0aWVzIC8gZnJvbnRtYXR0ZXJcIlxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLmFkZFRvZ2dsZSgodG9nZ2xlKSA9PiB7XG4gICAgICAgICAgICAgICAgdG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmluZGV4SW5saW5lRmllbGRzKS5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5wbHVnaW4udXBkYXRlU2V0dGluZ3MoeyBpbmRleElubGluZUZpZWxkczogdmFsdWUgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gVE9ETzogUmVxdWVzdCBhIGZ1bGwgaW5kZXggZHJvcCArIHJlaW5kZXggZm9yIGNvcnJlY3RuZXNzLlxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgbmV3IFNldHRpbmcodGhpcy5jb250YWluZXJFbClcbiAgICAgICAgICAgIC5zZXROYW1lKFwiSW1wb3J0ZXIgVGhyZWFkc1wiKVxuICAgICAgICAgICAgLnNldERlc2MoXCJUaGUgbnVtYmVyIG9mIGltcG9ydGVyIHRocmVhZHMgdG8gdXNlIGZvciBwYXJzaW5nIG1ldGFkYXRhLlwiKVxuICAgICAgICAgICAgLmFkZFRleHQoKHRleHQpID0+IHtcbiAgICAgICAgICAgICAgICB0ZXh0LnNldFZhbHVlKFwiXCIgKyB0aGlzLnBsdWdpbi5zZXR0aW5ncy5pbXBvcnRlck51bVRocmVhZHMpLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJzZWQgPSBwYXJzZUludCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc05hTihwYXJzZWQpKSByZXR1cm47XG5cbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5wbHVnaW4udXBkYXRlU2V0dGluZ3MoeyBpbXBvcnRlck51bVRocmVhZHM6IHBhcnNlZCB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIG5ldyBTZXR0aW5nKHRoaXMuY29udGFpbmVyRWwpXG4gICAgICAgICAgICAuc2V0TmFtZShcIkltcG9ydGVyIFV0aWxpemF0aW9uXCIpXG4gICAgICAgICAgICAuc2V0RGVzYyhcIkhvdyBtdWNoIENQVSB0aW1lIGVhY2ggaW1wb3J0ZXIgdGhyZWFkIHNob3VsZCB1c2UsIGFzIGEgZnJhY3Rpb24gKDAuMSAtIDEuMCkuXCIpXG4gICAgICAgICAgICAuYWRkVGV4dCgodGV4dCkgPT4ge1xuICAgICAgICAgICAgICAgIHRleHQuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuaW1wb3J0ZXJVdGlsaXphdGlvbi50b0ZpeGVkKDIpKS5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyc2VkID0gcGFyc2VGbG9hdCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc05hTihwYXJzZWQpKSByZXR1cm47XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbGltaXRlZCA9IE1hdGgubWF4KDAuMSwgTWF0aC5taW4oMS4wLCBwYXJzZWQpKTtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5wbHVnaW4udXBkYXRlU2V0dGluZ3MoeyBpbXBvcnRlclV0aWxpemF0aW9uOiBsaW1pdGVkIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgbmV3IFNldHRpbmcodGhpcy5jb250YWluZXJFbClcbiAgICAgICAgICAgIC5zZXROYW1lKFwiTWF4aW11bSBSZWN1cnNpdmUgUmVuZGVyIERlcHRoXCIpXG4gICAgICAgICAgICAuc2V0RGVzYyhcbiAgICAgICAgICAgICAgICBcIk1heGltdW0gZGVwdGggdGhhdCBvYmplY3RzIHdpbGwgYmUgcmVuZGVyZWQgdG8gKGkuZS4sIGhvdyBtYW55IGxldmVscyBvZiBzdWJwcm9wZXJ0aWVzXCIgK1xuICAgICAgICAgICAgICAgICAgICBcIndpbGwgYmUgcmVuZGVyZWQgYnkgZGVmYXVsdCkuIFRoaXMgYXZvaWRzIGluZmluaXRlIHJlY3Vyc2lvbiBkdWUgdG8gc2VsZi1yZWZlcmVudGlhbCBvYmplY3RzXCIgK1xuICAgICAgICAgICAgICAgICAgICBcImFuZCBlbnN1cmVzIHRoYXQgcmVuZGVyaW5nIG9iamVjdHMgaXMgYWNjZXB0YWJseSBwZXJmb3JtYW50LlwiXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuYWRkVGV4dCgodGV4dCkgPT4ge1xuICAgICAgICAgICAgICAgIHRleHQuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MubWF4UmVjdXJzaXZlUmVuZGVyRGVwdGgudG9TdHJpbmcoKSkub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlSW50KHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzTmFOKHBhcnNlZCkpIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5wbHVnaW4udXBkYXRlU2V0dGluZ3MoeyBtYXhSZWN1cnNpdmVSZW5kZXJEZXB0aDogcGFyc2VkIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIG5ldyBTZXR0aW5nKHRoaXMuY29udGFpbmVyRWwpXG4gICAgICAgICAgICAuc2V0TmFtZShcIlJlY3Vyc2l2ZSBzdWJ0YXNrIGNvbXBsZXRpb25cIilcbiAgICAgICAgICAgIC5zZXREZXNjKFwiV2hldGhlciBvciBub3Qgc3VidGFza3Mgc2hvdWxkIGJlIGNvbXBsZXRlZCBhbG9uZyB3aXRoIHRoZWlyIHBhcmVudCBpbiBkYXRhY29yZSB0YXNrIHZpZXdzXCIpXG4gICAgICAgICAgICAuYWRkVG9nZ2xlKCh0YikgPT4ge1xuICAgICAgICAgICAgICAgIHRiLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLnJlY3Vyc2l2ZVRhc2tDb21wbGV0aW9uKS5vbkNoYW5nZShhc3luYyAodmFsKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMucGx1Z2luLnVwZGF0ZVNldHRpbmdzKHsgcmVjdXJzaXZlVGFza0NvbXBsZXRpb246IHZhbCB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuY29udGFpbmVyRWwuY3JlYXRlRWwoXCJoMlwiLCB7IHRleHQ6IFwiVGFza3NcIiB9KTtcblxuICAgICAgICBuZXcgU2V0dGluZyh0aGlzLmNvbnRhaW5lckVsKVxuICAgICAgICAgICAgLnNldE5hbWUoXCJUYXNrIENvbXBsZXRpb24gVGV4dFwiKVxuICAgICAgICAgICAgLnNldERlc2MoXCJOYW1lIG9mIGlubGluZSBmaWVsZCBpbiB3aGljaCB0byBzdG9yZSB0YXNrIGNvbXBsZXRpb24gZGF0ZS90aW1lXCIpXG4gICAgICAgICAgICAuYWRkVGV4dCgodGV4dCkgPT4ge1xuICAgICAgICAgICAgICAgIHRleHQuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MudGFza0NvbXBsZXRpb25UZXh0KS5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5wbHVnaW4udXBkYXRlU2V0dGluZ3MoeyB0YXNrQ29tcGxldGlvblRleHQ6IHZhbHVlIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgbmV3IFNldHRpbmcodGhpcy5jb250YWluZXJFbClcbiAgICAgICAgICAgIC5zZXROYW1lKFwiVXNlIEVtb2ppIFNob3J0aGFuZCBmb3IgVGFzayBDb21wbGV0aW9uXCIpXG4gICAgICAgICAgICAuc2V0RGVzYyhcbiAgICAgICAgICAgICAgICBcIklmIGVuYWJsZWQsIGF1dG9tYXRpYyBjb21wbGV0aW9uIHdpbGwgdXNlIGFuIGVtb2ppIHNob3J0aGFuZCBcdTI3MDUgWVlZWS1NTS1ERFwiICtcbiAgICAgICAgICAgICAgICAgICAgXCJpbnN0ZWFkIG9mIFtjb21wbGV0aW9uOjogZGF0ZV0uXCJcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5hZGRUb2dnbGUoKHRiKSA9PiB7XG4gICAgICAgICAgICAgICAgdGIuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MudGFza0NvbXBsZXRpb25Vc2VFbW9qaVNob3J0aGFuZCkub25DaGFuZ2UoYXN5bmMgKHZhbCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnBsdWdpbi51cGRhdGVTZXR0aW5ncyh7IHRhc2tDb21wbGV0aW9uVXNlRW1vamlTaG9ydGhhbmQ6IHZhbCB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cbn1cbiIsICJpbXBvcnQgRGF0ZVRpbWUgZnJvbSBcIi4vZGF0ZXRpbWUuanNcIjtcbmltcG9ydCBEdXJhdGlvbiBmcm9tIFwiLi9kdXJhdGlvbi5qc1wiO1xuaW1wb3J0IEludGVydmFsIGZyb20gXCIuL2ludGVydmFsLmpzXCI7XG5pbXBvcnQgSW5mbyBmcm9tIFwiLi9pbmZvLmpzXCI7XG5pbXBvcnQgWm9uZSBmcm9tIFwiLi96b25lLmpzXCI7XG5pbXBvcnQgRml4ZWRPZmZzZXRab25lIGZyb20gXCIuL3pvbmVzL2ZpeGVkT2Zmc2V0Wm9uZS5qc1wiO1xuaW1wb3J0IElBTkFab25lIGZyb20gXCIuL3pvbmVzL0lBTkFab25lLmpzXCI7XG5pbXBvcnQgSW52YWxpZFpvbmUgZnJvbSBcIi4vem9uZXMvaW52YWxpZFpvbmUuanNcIjtcbmltcG9ydCBTeXN0ZW1ab25lIGZyb20gXCIuL3pvbmVzL3N5c3RlbVpvbmUuanNcIjtcbmltcG9ydCBTZXR0aW5ncyBmcm9tIFwiLi9zZXR0aW5ncy5qc1wiO1xuXG5jb25zdCBWRVJTSU9OID0gXCIyLjUuMlwiO1xuXG5leHBvcnQge1xuICBWRVJTSU9OLFxuICBEYXRlVGltZSxcbiAgRHVyYXRpb24sXG4gIEludGVydmFsLFxuICBJbmZvLFxuICBab25lLFxuICBGaXhlZE9mZnNldFpvbmUsXG4gIElBTkFab25lLFxuICBJbnZhbGlkWm9uZSxcbiAgU3lzdGVtWm9uZSxcbiAgU2V0dGluZ3MsXG59O1xuIiwgIi8vIHRoZXNlIGFyZW4ndCByZWFsbHkgcHJpdmF0ZSwgYnV0IG5vciBhcmUgdGhleSByZWFsbHkgdXNlZnVsIHRvIGRvY3VtZW50XG5cbi8qKlxuICogQHByaXZhdGVcbiAqL1xuY2xhc3MgTHV4b25FcnJvciBleHRlbmRzIEVycm9yIHt9XG5cbi8qKlxuICogQHByaXZhdGVcbiAqL1xuZXhwb3J0IGNsYXNzIEludmFsaWREYXRlVGltZUVycm9yIGV4dGVuZHMgTHV4b25FcnJvciB7XG4gIGNvbnN0cnVjdG9yKHJlYXNvbikge1xuICAgIHN1cGVyKGBJbnZhbGlkIERhdGVUaW1lOiAke3JlYXNvbi50b01lc3NhZ2UoKX1gKTtcbiAgfVxufVxuXG4vKipcbiAqIEBwcml2YXRlXG4gKi9cbmV4cG9ydCBjbGFzcyBJbnZhbGlkSW50ZXJ2YWxFcnJvciBleHRlbmRzIEx1eG9uRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihyZWFzb24pIHtcbiAgICBzdXBlcihgSW52YWxpZCBJbnRlcnZhbDogJHtyZWFzb24udG9NZXNzYWdlKCl9YCk7XG4gIH1cbn1cblxuLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5leHBvcnQgY2xhc3MgSW52YWxpZER1cmF0aW9uRXJyb3IgZXh0ZW5kcyBMdXhvbkVycm9yIHtcbiAgY29uc3RydWN0b3IocmVhc29uKSB7XG4gICAgc3VwZXIoYEludmFsaWQgRHVyYXRpb246ICR7cmVhc29uLnRvTWVzc2FnZSgpfWApO1xuICB9XG59XG5cbi8qKlxuICogQHByaXZhdGVcbiAqL1xuZXhwb3J0IGNsYXNzIENvbmZsaWN0aW5nU3BlY2lmaWNhdGlvbkVycm9yIGV4dGVuZHMgTHV4b25FcnJvciB7fVxuXG4vKipcbiAqIEBwcml2YXRlXG4gKi9cbmV4cG9ydCBjbGFzcyBJbnZhbGlkVW5pdEVycm9yIGV4dGVuZHMgTHV4b25FcnJvciB7XG4gIGNvbnN0cnVjdG9yKHVuaXQpIHtcbiAgICBzdXBlcihgSW52YWxpZCB1bml0ICR7dW5pdH1gKTtcbiAgfVxufVxuXG4vKipcbiAqIEBwcml2YXRlXG4gKi9cbmV4cG9ydCBjbGFzcyBJbnZhbGlkQXJndW1lbnRFcnJvciBleHRlbmRzIEx1eG9uRXJyb3Ige31cblxuLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5leHBvcnQgY2xhc3MgWm9uZUlzQWJzdHJhY3RFcnJvciBleHRlbmRzIEx1eG9uRXJyb3Ige1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihcIlpvbmUgaXMgYW4gYWJzdHJhY3QgY2xhc3NcIik7XG4gIH1cbn1cbiIsICIvKipcbiAqIEBwcml2YXRlXG4gKi9cblxuY29uc3QgbiA9IFwibnVtZXJpY1wiLFxuICBzID0gXCJzaG9ydFwiLFxuICBsID0gXCJsb25nXCI7XG5cbmV4cG9ydCBjb25zdCBEQVRFX1NIT1JUID0ge1xuICB5ZWFyOiBuLFxuICBtb250aDogbixcbiAgZGF5OiBuLFxufTtcblxuZXhwb3J0IGNvbnN0IERBVEVfTUVEID0ge1xuICB5ZWFyOiBuLFxuICBtb250aDogcyxcbiAgZGF5OiBuLFxufTtcblxuZXhwb3J0IGNvbnN0IERBVEVfTUVEX1dJVEhfV0VFS0RBWSA9IHtcbiAgeWVhcjogbixcbiAgbW9udGg6IHMsXG4gIGRheTogbixcbiAgd2Vla2RheTogcyxcbn07XG5cbmV4cG9ydCBjb25zdCBEQVRFX0ZVTEwgPSB7XG4gIHllYXI6IG4sXG4gIG1vbnRoOiBsLFxuICBkYXk6IG4sXG59O1xuXG5leHBvcnQgY29uc3QgREFURV9IVUdFID0ge1xuICB5ZWFyOiBuLFxuICBtb250aDogbCxcbiAgZGF5OiBuLFxuICB3ZWVrZGF5OiBsLFxufTtcblxuZXhwb3J0IGNvbnN0IFRJTUVfU0lNUExFID0ge1xuICBob3VyOiBuLFxuICBtaW51dGU6IG4sXG59O1xuXG5leHBvcnQgY29uc3QgVElNRV9XSVRIX1NFQ09ORFMgPSB7XG4gIGhvdXI6IG4sXG4gIG1pbnV0ZTogbixcbiAgc2Vjb25kOiBuLFxufTtcblxuZXhwb3J0IGNvbnN0IFRJTUVfV0lUSF9TSE9SVF9PRkZTRVQgPSB7XG4gIGhvdXI6IG4sXG4gIG1pbnV0ZTogbixcbiAgc2Vjb25kOiBuLFxuICB0aW1lWm9uZU5hbWU6IHMsXG59O1xuXG5leHBvcnQgY29uc3QgVElNRV9XSVRIX0xPTkdfT0ZGU0VUID0ge1xuICBob3VyOiBuLFxuICBtaW51dGU6IG4sXG4gIHNlY29uZDogbixcbiAgdGltZVpvbmVOYW1lOiBsLFxufTtcblxuZXhwb3J0IGNvbnN0IFRJTUVfMjRfU0lNUExFID0ge1xuICBob3VyOiBuLFxuICBtaW51dGU6IG4sXG4gIGhvdXJDeWNsZTogXCJoMjNcIixcbn07XG5cbmV4cG9ydCBjb25zdCBUSU1FXzI0X1dJVEhfU0VDT05EUyA9IHtcbiAgaG91cjogbixcbiAgbWludXRlOiBuLFxuICBzZWNvbmQ6IG4sXG4gIGhvdXJDeWNsZTogXCJoMjNcIixcbn07XG5cbmV4cG9ydCBjb25zdCBUSU1FXzI0X1dJVEhfU0hPUlRfT0ZGU0VUID0ge1xuICBob3VyOiBuLFxuICBtaW51dGU6IG4sXG4gIHNlY29uZDogbixcbiAgaG91ckN5Y2xlOiBcImgyM1wiLFxuICB0aW1lWm9uZU5hbWU6IHMsXG59O1xuXG5leHBvcnQgY29uc3QgVElNRV8yNF9XSVRIX0xPTkdfT0ZGU0VUID0ge1xuICBob3VyOiBuLFxuICBtaW51dGU6IG4sXG4gIHNlY29uZDogbixcbiAgaG91ckN5Y2xlOiBcImgyM1wiLFxuICB0aW1lWm9uZU5hbWU6IGwsXG59O1xuXG5leHBvcnQgY29uc3QgREFURVRJTUVfU0hPUlQgPSB7XG4gIHllYXI6IG4sXG4gIG1vbnRoOiBuLFxuICBkYXk6IG4sXG4gIGhvdXI6IG4sXG4gIG1pbnV0ZTogbixcbn07XG5cbmV4cG9ydCBjb25zdCBEQVRFVElNRV9TSE9SVF9XSVRIX1NFQ09ORFMgPSB7XG4gIHllYXI6IG4sXG4gIG1vbnRoOiBuLFxuICBkYXk6IG4sXG4gIGhvdXI6IG4sXG4gIG1pbnV0ZTogbixcbiAgc2Vjb25kOiBuLFxufTtcblxuZXhwb3J0IGNvbnN0IERBVEVUSU1FX01FRCA9IHtcbiAgeWVhcjogbixcbiAgbW9udGg6IHMsXG4gIGRheTogbixcbiAgaG91cjogbixcbiAgbWludXRlOiBuLFxufTtcblxuZXhwb3J0IGNvbnN0IERBVEVUSU1FX01FRF9XSVRIX1NFQ09ORFMgPSB7XG4gIHllYXI6IG4sXG4gIG1vbnRoOiBzLFxuICBkYXk6IG4sXG4gIGhvdXI6IG4sXG4gIG1pbnV0ZTogbixcbiAgc2Vjb25kOiBuLFxufTtcblxuZXhwb3J0IGNvbnN0IERBVEVUSU1FX01FRF9XSVRIX1dFRUtEQVkgPSB7XG4gIHllYXI6IG4sXG4gIG1vbnRoOiBzLFxuICBkYXk6IG4sXG4gIHdlZWtkYXk6IHMsXG4gIGhvdXI6IG4sXG4gIG1pbnV0ZTogbixcbn07XG5cbmV4cG9ydCBjb25zdCBEQVRFVElNRV9GVUxMID0ge1xuICB5ZWFyOiBuLFxuICBtb250aDogbCxcbiAgZGF5OiBuLFxuICBob3VyOiBuLFxuICBtaW51dGU6IG4sXG4gIHRpbWVab25lTmFtZTogcyxcbn07XG5cbmV4cG9ydCBjb25zdCBEQVRFVElNRV9GVUxMX1dJVEhfU0VDT05EUyA9IHtcbiAgeWVhcjogbixcbiAgbW9udGg6IGwsXG4gIGRheTogbixcbiAgaG91cjogbixcbiAgbWludXRlOiBuLFxuICBzZWNvbmQ6IG4sXG4gIHRpbWVab25lTmFtZTogcyxcbn07XG5cbmV4cG9ydCBjb25zdCBEQVRFVElNRV9IVUdFID0ge1xuICB5ZWFyOiBuLFxuICBtb250aDogbCxcbiAgZGF5OiBuLFxuICB3ZWVrZGF5OiBsLFxuICBob3VyOiBuLFxuICBtaW51dGU6IG4sXG4gIHRpbWVab25lTmFtZTogbCxcbn07XG5cbmV4cG9ydCBjb25zdCBEQVRFVElNRV9IVUdFX1dJVEhfU0VDT05EUyA9IHtcbiAgeWVhcjogbixcbiAgbW9udGg6IGwsXG4gIGRheTogbixcbiAgd2Vla2RheTogbCxcbiAgaG91cjogbixcbiAgbWludXRlOiBuLFxuICBzZWNvbmQ6IG4sXG4gIHRpbWVab25lTmFtZTogbCxcbn07XG4iLCAiLypcbiAgVGhpcyBpcyBqdXN0IGEganVuayBkcmF3ZXIsIGNvbnRhaW5pbmcgYW55dGhpbmcgdXNlZCBhY3Jvc3MgbXVsdGlwbGUgY2xhc3Nlcy5cbiAgQmVjYXVzZSBMdXhvbiBpcyBzbWFsbChpc2gpLCB0aGlzIHNob3VsZCBzdGF5IHNtYWxsIGFuZCB3ZSB3b24ndCB3b3JyeSBhYm91dCBzcGxpdHRpbmdcbiAgaXQgdXAgaW50bywgc2F5LCBwYXJzaW5nVXRpbC5qcyBhbmQgYmFzaWNVdGlsLmpzIGFuZCBzbyBvbi4gQnV0IHRoZXkgYXJlIGRpdmlkZWQgdXAgYnkgZmVhdHVyZSBhcmVhLlxuKi9cblxuaW1wb3J0IHsgSW52YWxpZEFyZ3VtZW50RXJyb3IgfSBmcm9tIFwiLi4vZXJyb3JzLmpzXCI7XG5cbi8qKlxuICogQHByaXZhdGVcbiAqL1xuXG4vLyBUWVBFU1xuXG5leHBvcnQgZnVuY3Rpb24gaXNVbmRlZmluZWQobykge1xuICByZXR1cm4gdHlwZW9mIG8gPT09IFwidW5kZWZpbmVkXCI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc051bWJlcihvKSB7XG4gIHJldHVybiB0eXBlb2YgbyA9PT0gXCJudW1iZXJcIjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzSW50ZWdlcihvKSB7XG4gIHJldHVybiB0eXBlb2YgbyA9PT0gXCJudW1iZXJcIiAmJiBvICUgMSA9PT0gMDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU3RyaW5nKG8pIHtcbiAgcmV0dXJuIHR5cGVvZiBvID09PSBcInN0cmluZ1wiO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNEYXRlKG8pIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKSA9PT0gXCJbb2JqZWN0IERhdGVdXCI7XG59XG5cbi8vIENBUEFCSUxJVElFU1xuXG5leHBvcnQgZnVuY3Rpb24gaGFzUmVsYXRpdmUoKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHR5cGVvZiBJbnRsICE9PSBcInVuZGVmaW5lZFwiICYmICEhSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQ7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLy8gT0JKRUNUUyBBTkQgQVJSQVlTXG5cbmV4cG9ydCBmdW5jdGlvbiBtYXliZUFycmF5KHRoaW5nKSB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KHRoaW5nKSA/IHRoaW5nIDogW3RoaW5nXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJlc3RCeShhcnIsIGJ5LCBjb21wYXJlKSB7XG4gIGlmIChhcnIubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICByZXR1cm4gYXJyLnJlZHVjZSgoYmVzdCwgbmV4dCkgPT4ge1xuICAgIGNvbnN0IHBhaXIgPSBbYnkobmV4dCksIG5leHRdO1xuICAgIGlmICghYmVzdCkge1xuICAgICAgcmV0dXJuIHBhaXI7XG4gICAgfSBlbHNlIGlmIChjb21wYXJlKGJlc3RbMF0sIHBhaXJbMF0pID09PSBiZXN0WzBdKSB7XG4gICAgICByZXR1cm4gYmVzdDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHBhaXI7XG4gICAgfVxuICB9LCBudWxsKVsxXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBpY2sob2JqLCBrZXlzKSB7XG4gIHJldHVybiBrZXlzLnJlZHVjZSgoYSwgaykgPT4ge1xuICAgIGFba10gPSBvYmpba107XG4gICAgcmV0dXJuIGE7XG4gIH0sIHt9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhhc093blByb3BlcnR5KG9iaiwgcHJvcCkge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCk7XG59XG5cbi8vIE5VTUJFUlMgQU5EIFNUUklOR1NcblxuZXhwb3J0IGZ1bmN0aW9uIGludGVnZXJCZXR3ZWVuKHRoaW5nLCBib3R0b20sIHRvcCkge1xuICByZXR1cm4gaXNJbnRlZ2VyKHRoaW5nKSAmJiB0aGluZyA+PSBib3R0b20gJiYgdGhpbmcgPD0gdG9wO1xufVxuXG4vLyB4ICUgbiBidXQgdGFrZXMgdGhlIHNpZ24gb2YgbiBpbnN0ZWFkIG9mIHhcbmV4cG9ydCBmdW5jdGlvbiBmbG9vck1vZCh4LCBuKSB7XG4gIHJldHVybiB4IC0gbiAqIE1hdGguZmxvb3IoeCAvIG4pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFkU3RhcnQoaW5wdXQsIG4gPSAyKSB7XG4gIGNvbnN0IGlzTmVnID0gaW5wdXQgPCAwO1xuICBsZXQgcGFkZGVkO1xuICBpZiAoaXNOZWcpIHtcbiAgICBwYWRkZWQgPSBcIi1cIiArIChcIlwiICsgLWlucHV0KS5wYWRTdGFydChuLCBcIjBcIik7XG4gIH0gZWxzZSB7XG4gICAgcGFkZGVkID0gKFwiXCIgKyBpbnB1dCkucGFkU3RhcnQobiwgXCIwXCIpO1xuICB9XG4gIHJldHVybiBwYWRkZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUludGVnZXIoc3RyaW5nKSB7XG4gIGlmIChpc1VuZGVmaW5lZChzdHJpbmcpIHx8IHN0cmluZyA9PT0gbnVsbCB8fCBzdHJpbmcgPT09IFwiXCIpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBwYXJzZUludChzdHJpbmcsIDEwKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VGbG9hdGluZyhzdHJpbmcpIHtcbiAgaWYgKGlzVW5kZWZpbmVkKHN0cmluZykgfHwgc3RyaW5nID09PSBudWxsIHx8IHN0cmluZyA9PT0gXCJcIikge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHBhcnNlRmxvYXQoc3RyaW5nKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VNaWxsaXMoZnJhY3Rpb24pIHtcbiAgLy8gUmV0dXJuIHVuZGVmaW5lZCAoaW5zdGVhZCBvZiAwKSBpbiB0aGVzZSBjYXNlcywgd2hlcmUgZnJhY3Rpb24gaXMgbm90IHNldFxuICBpZiAoaXNVbmRlZmluZWQoZnJhY3Rpb24pIHx8IGZyYWN0aW9uID09PSBudWxsIHx8IGZyYWN0aW9uID09PSBcIlwiKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBmID0gcGFyc2VGbG9hdChcIjAuXCIgKyBmcmFjdGlvbikgKiAxMDAwO1xuICAgIHJldHVybiBNYXRoLmZsb29yKGYpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByb3VuZFRvKG51bWJlciwgZGlnaXRzLCB0b3dhcmRaZXJvID0gZmFsc2UpIHtcbiAgY29uc3QgZmFjdG9yID0gMTAgKiogZGlnaXRzLFxuICAgIHJvdW5kZXIgPSB0b3dhcmRaZXJvID8gTWF0aC50cnVuYyA6IE1hdGgucm91bmQ7XG4gIHJldHVybiByb3VuZGVyKG51bWJlciAqIGZhY3RvcikgLyBmYWN0b3I7XG59XG5cbi8vIERBVEUgQkFTSUNTXG5cbmV4cG9ydCBmdW5jdGlvbiBpc0xlYXBZZWFyKHllYXIpIHtcbiAgcmV0dXJuIHllYXIgJSA0ID09PSAwICYmICh5ZWFyICUgMTAwICE9PSAwIHx8IHllYXIgJSA0MDAgPT09IDApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGF5c0luWWVhcih5ZWFyKSB7XG4gIHJldHVybiBpc0xlYXBZZWFyKHllYXIpID8gMzY2IDogMzY1O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGF5c0luTW9udGgoeWVhciwgbW9udGgpIHtcbiAgY29uc3QgbW9kTW9udGggPSBmbG9vck1vZChtb250aCAtIDEsIDEyKSArIDEsXG4gICAgbW9kWWVhciA9IHllYXIgKyAobW9udGggLSBtb2RNb250aCkgLyAxMjtcblxuICBpZiAobW9kTW9udGggPT09IDIpIHtcbiAgICByZXR1cm4gaXNMZWFwWWVhcihtb2RZZWFyKSA/IDI5IDogMjg7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIFszMSwgbnVsbCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMSwgMzAsIDMxLCAzMCwgMzFdW21vZE1vbnRoIC0gMV07XG4gIH1cbn1cblxuLy8gY292ZXJ0IGEgY2FsZW5kYXIgb2JqZWN0IHRvIGEgbG9jYWwgdGltZXN0YW1wIChlcG9jaCwgYnV0IHdpdGggdGhlIG9mZnNldCBiYWtlZCBpbilcbmV4cG9ydCBmdW5jdGlvbiBvYmpUb0xvY2FsVFMob2JqKSB7XG4gIGxldCBkID0gRGF0ZS5VVEMoXG4gICAgb2JqLnllYXIsXG4gICAgb2JqLm1vbnRoIC0gMSxcbiAgICBvYmouZGF5LFxuICAgIG9iai5ob3VyLFxuICAgIG9iai5taW51dGUsXG4gICAgb2JqLnNlY29uZCxcbiAgICBvYmoubWlsbGlzZWNvbmRcbiAgKTtcblxuICAvLyBmb3IgbGVnYWN5IHJlYXNvbnMsIHllYXJzIGJldHdlZW4gMCBhbmQgOTkgYXJlIGludGVycHJldGVkIGFzIDE5WFg7IHJldmVydCB0aGF0XG4gIGlmIChvYmoueWVhciA8IDEwMCAmJiBvYmoueWVhciA+PSAwKSB7XG4gICAgZCA9IG5ldyBEYXRlKGQpO1xuICAgIGQuc2V0VVRDRnVsbFllYXIoZC5nZXRVVENGdWxsWWVhcigpIC0gMTkwMCk7XG4gIH1cbiAgcmV0dXJuICtkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd2Vla3NJbldlZWtZZWFyKHdlZWtZZWFyKSB7XG4gIGNvbnN0IHAxID1cbiAgICAgICh3ZWVrWWVhciArXG4gICAgICAgIE1hdGguZmxvb3Iod2Vla1llYXIgLyA0KSAtXG4gICAgICAgIE1hdGguZmxvb3Iod2Vla1llYXIgLyAxMDApICtcbiAgICAgICAgTWF0aC5mbG9vcih3ZWVrWWVhciAvIDQwMCkpICVcbiAgICAgIDcsXG4gICAgbGFzdCA9IHdlZWtZZWFyIC0gMSxcbiAgICBwMiA9IChsYXN0ICsgTWF0aC5mbG9vcihsYXN0IC8gNCkgLSBNYXRoLmZsb29yKGxhc3QgLyAxMDApICsgTWF0aC5mbG9vcihsYXN0IC8gNDAwKSkgJSA3O1xuICByZXR1cm4gcDEgPT09IDQgfHwgcDIgPT09IDMgPyA1MyA6IDUyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdW50cnVuY2F0ZVllYXIoeWVhcikge1xuICBpZiAoeWVhciA+IDk5KSB7XG4gICAgcmV0dXJuIHllYXI7XG4gIH0gZWxzZSByZXR1cm4geWVhciA+IDYwID8gMTkwMCArIHllYXIgOiAyMDAwICsgeWVhcjtcbn1cblxuLy8gUEFSU0lOR1xuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2Vab25lSW5mbyh0cywgb2Zmc2V0Rm9ybWF0LCBsb2NhbGUsIHRpbWVab25lID0gbnVsbCkge1xuICBjb25zdCBkYXRlID0gbmV3IERhdGUodHMpLFxuICAgIGludGxPcHRzID0ge1xuICAgICAgaG91ckN5Y2xlOiBcImgyM1wiLFxuICAgICAgeWVhcjogXCJudW1lcmljXCIsXG4gICAgICBtb250aDogXCIyLWRpZ2l0XCIsXG4gICAgICBkYXk6IFwiMi1kaWdpdFwiLFxuICAgICAgaG91cjogXCIyLWRpZ2l0XCIsXG4gICAgICBtaW51dGU6IFwiMi1kaWdpdFwiLFxuICAgIH07XG5cbiAgaWYgKHRpbWVab25lKSB7XG4gICAgaW50bE9wdHMudGltZVpvbmUgPSB0aW1lWm9uZTtcbiAgfVxuXG4gIGNvbnN0IG1vZGlmaWVkID0geyB0aW1lWm9uZU5hbWU6IG9mZnNldEZvcm1hdCwgLi4uaW50bE9wdHMgfTtcblxuICBjb25zdCBwYXJzZWQgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsb2NhbGUsIG1vZGlmaWVkKVxuICAgIC5mb3JtYXRUb1BhcnRzKGRhdGUpXG4gICAgLmZpbmQoKG0pID0+IG0udHlwZS50b0xvd2VyQ2FzZSgpID09PSBcInRpbWV6b25lbmFtZVwiKTtcbiAgcmV0dXJuIHBhcnNlZCA/IHBhcnNlZC52YWx1ZSA6IG51bGw7XG59XG5cbi8vIHNpZ25lZE9mZnNldCgnLTUnLCAnMzAnKSAtPiAtMzMwXG5leHBvcnQgZnVuY3Rpb24gc2lnbmVkT2Zmc2V0KG9mZkhvdXJTdHIsIG9mZk1pbnV0ZVN0cikge1xuICBsZXQgb2ZmSG91ciA9IHBhcnNlSW50KG9mZkhvdXJTdHIsIDEwKTtcblxuICAvLyBkb24ndCB8fCB0aGlzIGJlY2F1c2Ugd2Ugd2FudCB0byBwcmVzZXJ2ZSAtMFxuICBpZiAoTnVtYmVyLmlzTmFOKG9mZkhvdXIpKSB7XG4gICAgb2ZmSG91ciA9IDA7XG4gIH1cblxuICBjb25zdCBvZmZNaW4gPSBwYXJzZUludChvZmZNaW51dGVTdHIsIDEwKSB8fCAwLFxuICAgIG9mZk1pblNpZ25lZCA9IG9mZkhvdXIgPCAwIHx8IE9iamVjdC5pcyhvZmZIb3VyLCAtMCkgPyAtb2ZmTWluIDogb2ZmTWluO1xuICByZXR1cm4gb2ZmSG91ciAqIDYwICsgb2ZmTWluU2lnbmVkO1xufVxuXG4vLyBDT0VSQ0lPTlxuXG5leHBvcnQgZnVuY3Rpb24gYXNOdW1iZXIodmFsdWUpIHtcbiAgY29uc3QgbnVtZXJpY1ZhbHVlID0gTnVtYmVyKHZhbHVlKTtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJib29sZWFuXCIgfHwgdmFsdWUgPT09IFwiXCIgfHwgTnVtYmVyLmlzTmFOKG51bWVyaWNWYWx1ZSkpXG4gICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKGBJbnZhbGlkIHVuaXQgdmFsdWUgJHt2YWx1ZX1gKTtcbiAgcmV0dXJuIG51bWVyaWNWYWx1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZU9iamVjdChvYmosIG5vcm1hbGl6ZXIpIHtcbiAgY29uc3Qgbm9ybWFsaXplZCA9IHt9O1xuICBmb3IgKGNvbnN0IHUgaW4gb2JqKSB7XG4gICAgaWYgKGhhc093blByb3BlcnR5KG9iaiwgdSkpIHtcbiAgICAgIGNvbnN0IHYgPSBvYmpbdV07XG4gICAgICBpZiAodiA9PT0gdW5kZWZpbmVkIHx8IHYgPT09IG51bGwpIGNvbnRpbnVlO1xuICAgICAgbm9ybWFsaXplZFtub3JtYWxpemVyKHUpXSA9IGFzTnVtYmVyKHYpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbm9ybWFsaXplZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdE9mZnNldChvZmZzZXQsIGZvcm1hdCkge1xuICBjb25zdCBob3VycyA9IE1hdGgudHJ1bmMoTWF0aC5hYnMob2Zmc2V0IC8gNjApKSxcbiAgICBtaW51dGVzID0gTWF0aC50cnVuYyhNYXRoLmFicyhvZmZzZXQgJSA2MCkpLFxuICAgIHNpZ24gPSBvZmZzZXQgPj0gMCA/IFwiK1wiIDogXCItXCI7XG5cbiAgc3dpdGNoIChmb3JtYXQpIHtcbiAgICBjYXNlIFwic2hvcnRcIjpcbiAgICAgIHJldHVybiBgJHtzaWdufSR7cGFkU3RhcnQoaG91cnMsIDIpfToke3BhZFN0YXJ0KG1pbnV0ZXMsIDIpfWA7XG4gICAgY2FzZSBcIm5hcnJvd1wiOlxuICAgICAgcmV0dXJuIGAke3NpZ259JHtob3Vyc30ke21pbnV0ZXMgPiAwID8gYDoke21pbnV0ZXN9YCA6IFwiXCJ9YDtcbiAgICBjYXNlIFwidGVjaGllXCI6XG4gICAgICByZXR1cm4gYCR7c2lnbn0ke3BhZFN0YXJ0KGhvdXJzLCAyKX0ke3BhZFN0YXJ0KG1pbnV0ZXMsIDIpfWA7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKGBWYWx1ZSBmb3JtYXQgJHtmb3JtYXR9IGlzIG91dCBvZiByYW5nZSBmb3IgcHJvcGVydHkgZm9ybWF0YCk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRpbWVPYmplY3Qob2JqKSB7XG4gIHJldHVybiBwaWNrKG9iaiwgW1wiaG91clwiLCBcIm1pbnV0ZVwiLCBcInNlY29uZFwiLCBcIm1pbGxpc2Vjb25kXCJdKTtcbn1cblxuZXhwb3J0IGNvbnN0IGlhbmFSZWdleCA9XG4gIC9bQS1aYS16XystXXsxLDI1Nn0oPzo6P1xcL1tBLVphLXowLTlfKy1dezEsMjU2fSg/OlxcL1tBLVphLXowLTlfKy1dezEsMjU2fSk/KT8vO1xuIiwgImltcG9ydCAqIGFzIEZvcm1hdHMgZnJvbSBcIi4vZm9ybWF0cy5qc1wiO1xuaW1wb3J0IHsgcGljayB9IGZyb20gXCIuL3V0aWwuanNcIjtcblxuZnVuY3Rpb24gc3RyaW5naWZ5KG9iaikge1xuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkob2JqLCBPYmplY3Qua2V5cyhvYmopLnNvcnQoKSk7XG59XG5cbi8qKlxuICogQHByaXZhdGVcbiAqL1xuXG5leHBvcnQgY29uc3QgbW9udGhzTG9uZyA9IFtcbiAgXCJKYW51YXJ5XCIsXG4gIFwiRmVicnVhcnlcIixcbiAgXCJNYXJjaFwiLFxuICBcIkFwcmlsXCIsXG4gIFwiTWF5XCIsXG4gIFwiSnVuZVwiLFxuICBcIkp1bHlcIixcbiAgXCJBdWd1c3RcIixcbiAgXCJTZXB0ZW1iZXJcIixcbiAgXCJPY3RvYmVyXCIsXG4gIFwiTm92ZW1iZXJcIixcbiAgXCJEZWNlbWJlclwiLFxuXTtcblxuZXhwb3J0IGNvbnN0IG1vbnRoc1Nob3J0ID0gW1xuICBcIkphblwiLFxuICBcIkZlYlwiLFxuICBcIk1hclwiLFxuICBcIkFwclwiLFxuICBcIk1heVwiLFxuICBcIkp1blwiLFxuICBcIkp1bFwiLFxuICBcIkF1Z1wiLFxuICBcIlNlcFwiLFxuICBcIk9jdFwiLFxuICBcIk5vdlwiLFxuICBcIkRlY1wiLFxuXTtcblxuZXhwb3J0IGNvbnN0IG1vbnRoc05hcnJvdyA9IFtcIkpcIiwgXCJGXCIsIFwiTVwiLCBcIkFcIiwgXCJNXCIsIFwiSlwiLCBcIkpcIiwgXCJBXCIsIFwiU1wiLCBcIk9cIiwgXCJOXCIsIFwiRFwiXTtcblxuZXhwb3J0IGZ1bmN0aW9uIG1vbnRocyhsZW5ndGgpIHtcbiAgc3dpdGNoIChsZW5ndGgpIHtcbiAgICBjYXNlIFwibmFycm93XCI6XG4gICAgICByZXR1cm4gWy4uLm1vbnRoc05hcnJvd107XG4gICAgY2FzZSBcInNob3J0XCI6XG4gICAgICByZXR1cm4gWy4uLm1vbnRoc1Nob3J0XTtcbiAgICBjYXNlIFwibG9uZ1wiOlxuICAgICAgcmV0dXJuIFsuLi5tb250aHNMb25nXTtcbiAgICBjYXNlIFwibnVtZXJpY1wiOlxuICAgICAgcmV0dXJuIFtcIjFcIiwgXCIyXCIsIFwiM1wiLCBcIjRcIiwgXCI1XCIsIFwiNlwiLCBcIjdcIiwgXCI4XCIsIFwiOVwiLCBcIjEwXCIsIFwiMTFcIiwgXCIxMlwiXTtcbiAgICBjYXNlIFwiMi1kaWdpdFwiOlxuICAgICAgcmV0dXJuIFtcIjAxXCIsIFwiMDJcIiwgXCIwM1wiLCBcIjA0XCIsIFwiMDVcIiwgXCIwNlwiLCBcIjA3XCIsIFwiMDhcIiwgXCIwOVwiLCBcIjEwXCIsIFwiMTFcIiwgXCIxMlwiXTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHdlZWtkYXlzTG9uZyA9IFtcbiAgXCJNb25kYXlcIixcbiAgXCJUdWVzZGF5XCIsXG4gIFwiV2VkbmVzZGF5XCIsXG4gIFwiVGh1cnNkYXlcIixcbiAgXCJGcmlkYXlcIixcbiAgXCJTYXR1cmRheVwiLFxuICBcIlN1bmRheVwiLFxuXTtcblxuZXhwb3J0IGNvbnN0IHdlZWtkYXlzU2hvcnQgPSBbXCJNb25cIiwgXCJUdWVcIiwgXCJXZWRcIiwgXCJUaHVcIiwgXCJGcmlcIiwgXCJTYXRcIiwgXCJTdW5cIl07XG5cbmV4cG9ydCBjb25zdCB3ZWVrZGF5c05hcnJvdyA9IFtcIk1cIiwgXCJUXCIsIFwiV1wiLCBcIlRcIiwgXCJGXCIsIFwiU1wiLCBcIlNcIl07XG5cbmV4cG9ydCBmdW5jdGlvbiB3ZWVrZGF5cyhsZW5ndGgpIHtcbiAgc3dpdGNoIChsZW5ndGgpIHtcbiAgICBjYXNlIFwibmFycm93XCI6XG4gICAgICByZXR1cm4gWy4uLndlZWtkYXlzTmFycm93XTtcbiAgICBjYXNlIFwic2hvcnRcIjpcbiAgICAgIHJldHVybiBbLi4ud2Vla2RheXNTaG9ydF07XG4gICAgY2FzZSBcImxvbmdcIjpcbiAgICAgIHJldHVybiBbLi4ud2Vla2RheXNMb25nXTtcbiAgICBjYXNlIFwibnVtZXJpY1wiOlxuICAgICAgcmV0dXJuIFtcIjFcIiwgXCIyXCIsIFwiM1wiLCBcIjRcIiwgXCI1XCIsIFwiNlwiLCBcIjdcIl07XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBtZXJpZGllbXMgPSBbXCJBTVwiLCBcIlBNXCJdO1xuXG5leHBvcnQgY29uc3QgZXJhc0xvbmcgPSBbXCJCZWZvcmUgQ2hyaXN0XCIsIFwiQW5ubyBEb21pbmlcIl07XG5cbmV4cG9ydCBjb25zdCBlcmFzU2hvcnQgPSBbXCJCQ1wiLCBcIkFEXCJdO1xuXG5leHBvcnQgY29uc3QgZXJhc05hcnJvdyA9IFtcIkJcIiwgXCJBXCJdO1xuXG5leHBvcnQgZnVuY3Rpb24gZXJhcyhsZW5ndGgpIHtcbiAgc3dpdGNoIChsZW5ndGgpIHtcbiAgICBjYXNlIFwibmFycm93XCI6XG4gICAgICByZXR1cm4gWy4uLmVyYXNOYXJyb3ddO1xuICAgIGNhc2UgXCJzaG9ydFwiOlxuICAgICAgcmV0dXJuIFsuLi5lcmFzU2hvcnRdO1xuICAgIGNhc2UgXCJsb25nXCI6XG4gICAgICByZXR1cm4gWy4uLmVyYXNMb25nXTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1lcmlkaWVtRm9yRGF0ZVRpbWUoZHQpIHtcbiAgcmV0dXJuIG1lcmlkaWVtc1tkdC5ob3VyIDwgMTIgPyAwIDogMV07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3ZWVrZGF5Rm9yRGF0ZVRpbWUoZHQsIGxlbmd0aCkge1xuICByZXR1cm4gd2Vla2RheXMobGVuZ3RoKVtkdC53ZWVrZGF5IC0gMV07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtb250aEZvckRhdGVUaW1lKGR0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIG1vbnRocyhsZW5ndGgpW2R0Lm1vbnRoIC0gMV07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlcmFGb3JEYXRlVGltZShkdCwgbGVuZ3RoKSB7XG4gIHJldHVybiBlcmFzKGxlbmd0aClbZHQueWVhciA8IDAgPyAwIDogMV07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRSZWxhdGl2ZVRpbWUodW5pdCwgY291bnQsIG51bWVyaWMgPSBcImFsd2F5c1wiLCBuYXJyb3cgPSBmYWxzZSkge1xuICBjb25zdCB1bml0cyA9IHtcbiAgICB5ZWFyczogW1wieWVhclwiLCBcInlyLlwiXSxcbiAgICBxdWFydGVyczogW1wicXVhcnRlclwiLCBcInF0ci5cIl0sXG4gICAgbW9udGhzOiBbXCJtb250aFwiLCBcIm1vLlwiXSxcbiAgICB3ZWVrczogW1wid2Vla1wiLCBcIndrLlwiXSxcbiAgICBkYXlzOiBbXCJkYXlcIiwgXCJkYXlcIiwgXCJkYXlzXCJdLFxuICAgIGhvdXJzOiBbXCJob3VyXCIsIFwiaHIuXCJdLFxuICAgIG1pbnV0ZXM6IFtcIm1pbnV0ZVwiLCBcIm1pbi5cIl0sXG4gICAgc2Vjb25kczogW1wic2Vjb25kXCIsIFwic2VjLlwiXSxcbiAgfTtcblxuICBjb25zdCBsYXN0YWJsZSA9IFtcImhvdXJzXCIsIFwibWludXRlc1wiLCBcInNlY29uZHNcIl0uaW5kZXhPZih1bml0KSA9PT0gLTE7XG5cbiAgaWYgKG51bWVyaWMgPT09IFwiYXV0b1wiICYmIGxhc3RhYmxlKSB7XG4gICAgY29uc3QgaXNEYXkgPSB1bml0ID09PSBcImRheXNcIjtcbiAgICBzd2l0Y2ggKGNvdW50KSB7XG4gICAgICBjYXNlIDE6XG4gICAgICAgIHJldHVybiBpc0RheSA/IFwidG9tb3Jyb3dcIiA6IGBuZXh0ICR7dW5pdHNbdW5pdF1bMF19YDtcbiAgICAgIGNhc2UgLTE6XG4gICAgICAgIHJldHVybiBpc0RheSA/IFwieWVzdGVyZGF5XCIgOiBgbGFzdCAke3VuaXRzW3VuaXRdWzBdfWA7XG4gICAgICBjYXNlIDA6XG4gICAgICAgIHJldHVybiBpc0RheSA/IFwidG9kYXlcIiA6IGB0aGlzICR7dW5pdHNbdW5pdF1bMF19YDtcbiAgICAgIGRlZmF1bHQ6IC8vIGZhbGwgdGhyb3VnaFxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGlzSW5QYXN0ID0gT2JqZWN0LmlzKGNvdW50LCAtMCkgfHwgY291bnQgPCAwLFxuICAgIGZtdFZhbHVlID0gTWF0aC5hYnMoY291bnQpLFxuICAgIHNpbmd1bGFyID0gZm10VmFsdWUgPT09IDEsXG4gICAgbGlsVW5pdHMgPSB1bml0c1t1bml0XSxcbiAgICBmbXRVbml0ID0gbmFycm93XG4gICAgICA/IHNpbmd1bGFyXG4gICAgICAgID8gbGlsVW5pdHNbMV1cbiAgICAgICAgOiBsaWxVbml0c1syXSB8fCBsaWxVbml0c1sxXVxuICAgICAgOiBzaW5ndWxhclxuICAgICAgPyB1bml0c1t1bml0XVswXVxuICAgICAgOiB1bml0O1xuICByZXR1cm4gaXNJblBhc3QgPyBgJHtmbXRWYWx1ZX0gJHtmbXRVbml0fSBhZ29gIDogYGluICR7Zm10VmFsdWV9ICR7Zm10VW5pdH1gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0U3RyaW5nKGtub3duRm9ybWF0KSB7XG4gIC8vIHRoZXNlIGFsbCBoYXZlIHRoZSBvZmZzZXRzIHJlbW92ZWQgYmVjYXVzZSB3ZSBkb24ndCBoYXZlIGFjY2VzcyB0byB0aGVtXG4gIC8vIHdpdGhvdXQgYWxsIHRoZSBpbnRsIHN0dWZmIHRoaXMgaXMgYmFja2ZpbGxpbmdcbiAgY29uc3QgZmlsdGVyZWQgPSBwaWNrKGtub3duRm9ybWF0LCBbXG4gICAgICBcIndlZWtkYXlcIixcbiAgICAgIFwiZXJhXCIsXG4gICAgICBcInllYXJcIixcbiAgICAgIFwibW9udGhcIixcbiAgICAgIFwiZGF5XCIsXG4gICAgICBcImhvdXJcIixcbiAgICAgIFwibWludXRlXCIsXG4gICAgICBcInNlY29uZFwiLFxuICAgICAgXCJ0aW1lWm9uZU5hbWVcIixcbiAgICAgIFwiaG91ckN5Y2xlXCIsXG4gICAgXSksXG4gICAga2V5ID0gc3RyaW5naWZ5KGZpbHRlcmVkKSxcbiAgICBkYXRlVGltZUh1Z2UgPSBcIkVFRUUsIExMTEwgZCwgeXl5eSwgaDptbSBhXCI7XG4gIHN3aXRjaCAoa2V5KSB7XG4gICAgY2FzZSBzdHJpbmdpZnkoRm9ybWF0cy5EQVRFX1NIT1JUKTpcbiAgICAgIHJldHVybiBcIk0vZC95eXl5XCI7XG4gICAgY2FzZSBzdHJpbmdpZnkoRm9ybWF0cy5EQVRFX01FRCk6XG4gICAgICByZXR1cm4gXCJMTEwgZCwgeXl5eVwiO1xuICAgIGNhc2Ugc3RyaW5naWZ5KEZvcm1hdHMuREFURV9NRURfV0lUSF9XRUVLREFZKTpcbiAgICAgIHJldHVybiBcIkVFRSwgTExMIGQsIHl5eXlcIjtcbiAgICBjYXNlIHN0cmluZ2lmeShGb3JtYXRzLkRBVEVfRlVMTCk6XG4gICAgICByZXR1cm4gXCJMTExMIGQsIHl5eXlcIjtcbiAgICBjYXNlIHN0cmluZ2lmeShGb3JtYXRzLkRBVEVfSFVHRSk6XG4gICAgICByZXR1cm4gXCJFRUVFLCBMTExMIGQsIHl5eXlcIjtcbiAgICBjYXNlIHN0cmluZ2lmeShGb3JtYXRzLlRJTUVfU0lNUExFKTpcbiAgICAgIHJldHVybiBcImg6bW0gYVwiO1xuICAgIGNhc2Ugc3RyaW5naWZ5KEZvcm1hdHMuVElNRV9XSVRIX1NFQ09ORFMpOlxuICAgICAgcmV0dXJuIFwiaDptbTpzcyBhXCI7XG4gICAgY2FzZSBzdHJpbmdpZnkoRm9ybWF0cy5USU1FX1dJVEhfU0hPUlRfT0ZGU0VUKTpcbiAgICAgIHJldHVybiBcImg6bW0gYVwiO1xuICAgIGNhc2Ugc3RyaW5naWZ5KEZvcm1hdHMuVElNRV9XSVRIX0xPTkdfT0ZGU0VUKTpcbiAgICAgIHJldHVybiBcImg6bW0gYVwiO1xuICAgIGNhc2Ugc3RyaW5naWZ5KEZvcm1hdHMuVElNRV8yNF9TSU1QTEUpOlxuICAgICAgcmV0dXJuIFwiSEg6bW1cIjtcbiAgICBjYXNlIHN0cmluZ2lmeShGb3JtYXRzLlRJTUVfMjRfV0lUSF9TRUNPTkRTKTpcbiAgICAgIHJldHVybiBcIkhIOm1tOnNzXCI7XG4gICAgY2FzZSBzdHJpbmdpZnkoRm9ybWF0cy5USU1FXzI0X1dJVEhfU0hPUlRfT0ZGU0VUKTpcbiAgICAgIHJldHVybiBcIkhIOm1tXCI7XG4gICAgY2FzZSBzdHJpbmdpZnkoRm9ybWF0cy5USU1FXzI0X1dJVEhfTE9OR19PRkZTRVQpOlxuICAgICAgcmV0dXJuIFwiSEg6bW1cIjtcbiAgICBjYXNlIHN0cmluZ2lmeShGb3JtYXRzLkRBVEVUSU1FX1NIT1JUKTpcbiAgICAgIHJldHVybiBcIk0vZC95eXl5LCBoOm1tIGFcIjtcbiAgICBjYXNlIHN0cmluZ2lmeShGb3JtYXRzLkRBVEVUSU1FX01FRCk6XG4gICAgICByZXR1cm4gXCJMTEwgZCwgeXl5eSwgaDptbSBhXCI7XG4gICAgY2FzZSBzdHJpbmdpZnkoRm9ybWF0cy5EQVRFVElNRV9GVUxMKTpcbiAgICAgIHJldHVybiBcIkxMTEwgZCwgeXl5eSwgaDptbSBhXCI7XG4gICAgY2FzZSBzdHJpbmdpZnkoRm9ybWF0cy5EQVRFVElNRV9IVUdFKTpcbiAgICAgIHJldHVybiBkYXRlVGltZUh1Z2U7XG4gICAgY2FzZSBzdHJpbmdpZnkoRm9ybWF0cy5EQVRFVElNRV9TSE9SVF9XSVRIX1NFQ09ORFMpOlxuICAgICAgcmV0dXJuIFwiTS9kL3l5eXksIGg6bW06c3MgYVwiO1xuICAgIGNhc2Ugc3RyaW5naWZ5KEZvcm1hdHMuREFURVRJTUVfTUVEX1dJVEhfU0VDT05EUyk6XG4gICAgICByZXR1cm4gXCJMTEwgZCwgeXl5eSwgaDptbTpzcyBhXCI7XG4gICAgY2FzZSBzdHJpbmdpZnkoRm9ybWF0cy5EQVRFVElNRV9NRURfV0lUSF9XRUVLREFZKTpcbiAgICAgIHJldHVybiBcIkVFRSwgZCBMTEwgeXl5eSwgaDptbSBhXCI7XG4gICAgY2FzZSBzdHJpbmdpZnkoRm9ybWF0cy5EQVRFVElNRV9GVUxMX1dJVEhfU0VDT05EUyk6XG4gICAgICByZXR1cm4gXCJMTExMIGQsIHl5eXksIGg6bW06c3MgYVwiO1xuICAgIGNhc2Ugc3RyaW5naWZ5KEZvcm1hdHMuREFURVRJTUVfSFVHRV9XSVRIX1NFQ09ORFMpOlxuICAgICAgcmV0dXJuIFwiRUVFRSwgTExMTCBkLCB5eXl5LCBoOm1tOnNzIGFcIjtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGRhdGVUaW1lSHVnZTtcbiAgfVxufVxuIiwgImltcG9ydCAqIGFzIEVuZ2xpc2ggZnJvbSBcIi4vZW5nbGlzaC5qc1wiO1xuaW1wb3J0ICogYXMgRm9ybWF0cyBmcm9tIFwiLi9mb3JtYXRzLmpzXCI7XG5pbXBvcnQgeyBwYWRTdGFydCB9IGZyb20gXCIuL3V0aWwuanNcIjtcblxuZnVuY3Rpb24gc3RyaW5naWZ5VG9rZW5zKHNwbGl0cywgdG9rZW5Ub1N0cmluZykge1xuICBsZXQgcyA9IFwiXCI7XG4gIGZvciAoY29uc3QgdG9rZW4gb2Ygc3BsaXRzKSB7XG4gICAgaWYgKHRva2VuLmxpdGVyYWwpIHtcbiAgICAgIHMgKz0gdG9rZW4udmFsO1xuICAgIH0gZWxzZSB7XG4gICAgICBzICs9IHRva2VuVG9TdHJpbmcodG9rZW4udmFsKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHM7XG59XG5cbmNvbnN0IG1hY3JvVG9rZW5Ub0Zvcm1hdE9wdHMgPSB7XG4gIEQ6IEZvcm1hdHMuREFURV9TSE9SVCxcbiAgREQ6IEZvcm1hdHMuREFURV9NRUQsXG4gIERERDogRm9ybWF0cy5EQVRFX0ZVTEwsXG4gIEREREQ6IEZvcm1hdHMuREFURV9IVUdFLFxuICB0OiBGb3JtYXRzLlRJTUVfU0lNUExFLFxuICB0dDogRm9ybWF0cy5USU1FX1dJVEhfU0VDT05EUyxcbiAgdHR0OiBGb3JtYXRzLlRJTUVfV0lUSF9TSE9SVF9PRkZTRVQsXG4gIHR0dHQ6IEZvcm1hdHMuVElNRV9XSVRIX0xPTkdfT0ZGU0VULFxuICBUOiBGb3JtYXRzLlRJTUVfMjRfU0lNUExFLFxuICBUVDogRm9ybWF0cy5USU1FXzI0X1dJVEhfU0VDT05EUyxcbiAgVFRUOiBGb3JtYXRzLlRJTUVfMjRfV0lUSF9TSE9SVF9PRkZTRVQsXG4gIFRUVFQ6IEZvcm1hdHMuVElNRV8yNF9XSVRIX0xPTkdfT0ZGU0VULFxuICBmOiBGb3JtYXRzLkRBVEVUSU1FX1NIT1JULFxuICBmZjogRm9ybWF0cy5EQVRFVElNRV9NRUQsXG4gIGZmZjogRm9ybWF0cy5EQVRFVElNRV9GVUxMLFxuICBmZmZmOiBGb3JtYXRzLkRBVEVUSU1FX0hVR0UsXG4gIEY6IEZvcm1hdHMuREFURVRJTUVfU0hPUlRfV0lUSF9TRUNPTkRTLFxuICBGRjogRm9ybWF0cy5EQVRFVElNRV9NRURfV0lUSF9TRUNPTkRTLFxuICBGRkY6IEZvcm1hdHMuREFURVRJTUVfRlVMTF9XSVRIX1NFQ09ORFMsXG4gIEZGRkY6IEZvcm1hdHMuREFURVRJTUVfSFVHRV9XSVRIX1NFQ09ORFMsXG59O1xuXG4vKipcbiAqIEBwcml2YXRlXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRm9ybWF0dGVyIHtcbiAgc3RhdGljIGNyZWF0ZShsb2NhbGUsIG9wdHMgPSB7fSkge1xuICAgIHJldHVybiBuZXcgRm9ybWF0dGVyKGxvY2FsZSwgb3B0cyk7XG4gIH1cblxuICBzdGF0aWMgcGFyc2VGb3JtYXQoZm10KSB7XG4gICAgbGV0IGN1cnJlbnQgPSBudWxsLFxuICAgICAgY3VycmVudEZ1bGwgPSBcIlwiLFxuICAgICAgYnJhY2tldGVkID0gZmFsc2U7XG4gICAgY29uc3Qgc3BsaXRzID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmbXQubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGMgPSBmbXQuY2hhckF0KGkpO1xuICAgICAgaWYgKGMgPT09IFwiJ1wiKSB7XG4gICAgICAgIGlmIChjdXJyZW50RnVsbC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgc3BsaXRzLnB1c2goeyBsaXRlcmFsOiBicmFja2V0ZWQsIHZhbDogY3VycmVudEZ1bGwgfSk7XG4gICAgICAgIH1cbiAgICAgICAgY3VycmVudCA9IG51bGw7XG4gICAgICAgIGN1cnJlbnRGdWxsID0gXCJcIjtcbiAgICAgICAgYnJhY2tldGVkID0gIWJyYWNrZXRlZDtcbiAgICAgIH0gZWxzZSBpZiAoYnJhY2tldGVkKSB7XG4gICAgICAgIGN1cnJlbnRGdWxsICs9IGM7XG4gICAgICB9IGVsc2UgaWYgKGMgPT09IGN1cnJlbnQpIHtcbiAgICAgICAgY3VycmVudEZ1bGwgKz0gYztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChjdXJyZW50RnVsbC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgc3BsaXRzLnB1c2goeyBsaXRlcmFsOiBmYWxzZSwgdmFsOiBjdXJyZW50RnVsbCB9KTtcbiAgICAgICAgfVxuICAgICAgICBjdXJyZW50RnVsbCA9IGM7XG4gICAgICAgIGN1cnJlbnQgPSBjO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjdXJyZW50RnVsbC5sZW5ndGggPiAwKSB7XG4gICAgICBzcGxpdHMucHVzaCh7IGxpdGVyYWw6IGJyYWNrZXRlZCwgdmFsOiBjdXJyZW50RnVsbCB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3BsaXRzO1xuICB9XG5cbiAgc3RhdGljIG1hY3JvVG9rZW5Ub0Zvcm1hdE9wdHModG9rZW4pIHtcbiAgICByZXR1cm4gbWFjcm9Ub2tlblRvRm9ybWF0T3B0c1t0b2tlbl07XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihsb2NhbGUsIGZvcm1hdE9wdHMpIHtcbiAgICB0aGlzLm9wdHMgPSBmb3JtYXRPcHRzO1xuICAgIHRoaXMubG9jID0gbG9jYWxlO1xuICAgIHRoaXMuc3lzdGVtTG9jID0gbnVsbDtcbiAgfVxuXG4gIGZvcm1hdFdpdGhTeXN0ZW1EZWZhdWx0KGR0LCBvcHRzKSB7XG4gICAgaWYgKHRoaXMuc3lzdGVtTG9jID09PSBudWxsKSB7XG4gICAgICB0aGlzLnN5c3RlbUxvYyA9IHRoaXMubG9jLnJlZGVmYXVsdFRvU3lzdGVtKCk7XG4gICAgfVxuICAgIGNvbnN0IGRmID0gdGhpcy5zeXN0ZW1Mb2MuZHRGb3JtYXR0ZXIoZHQsIHsgLi4udGhpcy5vcHRzLCAuLi5vcHRzIH0pO1xuICAgIHJldHVybiBkZi5mb3JtYXQoKTtcbiAgfVxuXG4gIGZvcm1hdERhdGVUaW1lKGR0LCBvcHRzID0ge30pIHtcbiAgICBjb25zdCBkZiA9IHRoaXMubG9jLmR0Rm9ybWF0dGVyKGR0LCB7IC4uLnRoaXMub3B0cywgLi4ub3B0cyB9KTtcbiAgICByZXR1cm4gZGYuZm9ybWF0KCk7XG4gIH1cblxuICBmb3JtYXREYXRlVGltZVBhcnRzKGR0LCBvcHRzID0ge30pIHtcbiAgICBjb25zdCBkZiA9IHRoaXMubG9jLmR0Rm9ybWF0dGVyKGR0LCB7IC4uLnRoaXMub3B0cywgLi4ub3B0cyB9KTtcbiAgICByZXR1cm4gZGYuZm9ybWF0VG9QYXJ0cygpO1xuICB9XG5cbiAgcmVzb2x2ZWRPcHRpb25zKGR0LCBvcHRzID0ge30pIHtcbiAgICBjb25zdCBkZiA9IHRoaXMubG9jLmR0Rm9ybWF0dGVyKGR0LCB7IC4uLnRoaXMub3B0cywgLi4ub3B0cyB9KTtcbiAgICByZXR1cm4gZGYucmVzb2x2ZWRPcHRpb25zKCk7XG4gIH1cblxuICBudW0obiwgcCA9IDApIHtcbiAgICAvLyB3ZSBnZXQgc29tZSBwZXJmIG91dCBvZiBkb2luZyB0aGlzIGhlcmUsIGFubm95aW5nbHlcbiAgICBpZiAodGhpcy5vcHRzLmZvcmNlU2ltcGxlKSB7XG4gICAgICByZXR1cm4gcGFkU3RhcnQobiwgcCk7XG4gICAgfVxuXG4gICAgY29uc3Qgb3B0cyA9IHsgLi4udGhpcy5vcHRzIH07XG5cbiAgICBpZiAocCA+IDApIHtcbiAgICAgIG9wdHMucGFkVG8gPSBwO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmxvYy5udW1iZXJGb3JtYXR0ZXIob3B0cykuZm9ybWF0KG4pO1xuICB9XG5cbiAgZm9ybWF0RGF0ZVRpbWVGcm9tU3RyaW5nKGR0LCBmbXQpIHtcbiAgICBjb25zdCBrbm93bkVuZ2xpc2ggPSB0aGlzLmxvYy5saXN0aW5nTW9kZSgpID09PSBcImVuXCIsXG4gICAgICB1c2VEYXRlVGltZUZvcm1hdHRlciA9IHRoaXMubG9jLm91dHB1dENhbGVuZGFyICYmIHRoaXMubG9jLm91dHB1dENhbGVuZGFyICE9PSBcImdyZWdvcnlcIixcbiAgICAgIHN0cmluZyA9IChvcHRzLCBleHRyYWN0KSA9PiB0aGlzLmxvYy5leHRyYWN0KGR0LCBvcHRzLCBleHRyYWN0KSxcbiAgICAgIGZvcm1hdE9mZnNldCA9IChvcHRzKSA9PiB7XG4gICAgICAgIGlmIChkdC5pc09mZnNldEZpeGVkICYmIGR0Lm9mZnNldCA9PT0gMCAmJiBvcHRzLmFsbG93Wikge1xuICAgICAgICAgIHJldHVybiBcIlpcIjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBkdC5pc1ZhbGlkID8gZHQuem9uZS5mb3JtYXRPZmZzZXQoZHQudHMsIG9wdHMuZm9ybWF0KSA6IFwiXCI7XG4gICAgICB9LFxuICAgICAgbWVyaWRpZW0gPSAoKSA9PlxuICAgICAgICBrbm93bkVuZ2xpc2hcbiAgICAgICAgICA/IEVuZ2xpc2gubWVyaWRpZW1Gb3JEYXRlVGltZShkdClcbiAgICAgICAgICA6IHN0cmluZyh7IGhvdXI6IFwibnVtZXJpY1wiLCBob3VyQ3ljbGU6IFwiaDEyXCIgfSwgXCJkYXlwZXJpb2RcIiksXG4gICAgICBtb250aCA9IChsZW5ndGgsIHN0YW5kYWxvbmUpID0+XG4gICAgICAgIGtub3duRW5nbGlzaFxuICAgICAgICAgID8gRW5nbGlzaC5tb250aEZvckRhdGVUaW1lKGR0LCBsZW5ndGgpXG4gICAgICAgICAgOiBzdHJpbmcoc3RhbmRhbG9uZSA/IHsgbW9udGg6IGxlbmd0aCB9IDogeyBtb250aDogbGVuZ3RoLCBkYXk6IFwibnVtZXJpY1wiIH0sIFwibW9udGhcIiksXG4gICAgICB3ZWVrZGF5ID0gKGxlbmd0aCwgc3RhbmRhbG9uZSkgPT5cbiAgICAgICAga25vd25FbmdsaXNoXG4gICAgICAgICAgPyBFbmdsaXNoLndlZWtkYXlGb3JEYXRlVGltZShkdCwgbGVuZ3RoKVxuICAgICAgICAgIDogc3RyaW5nKFxuICAgICAgICAgICAgICBzdGFuZGFsb25lID8geyB3ZWVrZGF5OiBsZW5ndGggfSA6IHsgd2Vla2RheTogbGVuZ3RoLCBtb250aDogXCJsb25nXCIsIGRheTogXCJudW1lcmljXCIgfSxcbiAgICAgICAgICAgICAgXCJ3ZWVrZGF5XCJcbiAgICAgICAgICAgICksXG4gICAgICBtYXliZU1hY3JvID0gKHRva2VuKSA9PiB7XG4gICAgICAgIGNvbnN0IGZvcm1hdE9wdHMgPSBGb3JtYXR0ZXIubWFjcm9Ub2tlblRvRm9ybWF0T3B0cyh0b2tlbik7XG4gICAgICAgIGlmIChmb3JtYXRPcHRzKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0V2l0aFN5c3RlbURlZmF1bHQoZHQsIGZvcm1hdE9wdHMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB0b2tlbjtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGVyYSA9IChsZW5ndGgpID0+XG4gICAgICAgIGtub3duRW5nbGlzaCA/IEVuZ2xpc2guZXJhRm9yRGF0ZVRpbWUoZHQsIGxlbmd0aCkgOiBzdHJpbmcoeyBlcmE6IGxlbmd0aCB9LCBcImVyYVwiKSxcbiAgICAgIHRva2VuVG9TdHJpbmcgPSAodG9rZW4pID0+IHtcbiAgICAgICAgLy8gV2hlcmUgcG9zc2libGU6IGh0dHA6Ly9jbGRyLnVuaWNvZGUub3JnL3RyYW5zbGF0aW9uL2RhdGUtdGltZS0xL2RhdGUtdGltZSNUT0MtU3RhbmRhbG9uZS12cy4tRm9ybWF0LVN0eWxlc1xuICAgICAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAgICAgLy8gbXNcbiAgICAgICAgICBjYXNlIFwiU1wiOlxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0Lm1pbGxpc2Vjb25kKTtcbiAgICAgICAgICBjYXNlIFwidVwiOlxuICAgICAgICAgIC8vIGZhbGxzIHRocm91Z2hcbiAgICAgICAgICBjYXNlIFwiU1NTXCI6XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQubWlsbGlzZWNvbmQsIDMpO1xuICAgICAgICAgIC8vIHNlY29uZHNcbiAgICAgICAgICBjYXNlIFwic1wiOlxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LnNlY29uZCk7XG4gICAgICAgICAgY2FzZSBcInNzXCI6XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQuc2Vjb25kLCAyKTtcbiAgICAgICAgICAvLyBmcmFjdGlvbmFsIHNlY29uZHNcbiAgICAgICAgICBjYXNlIFwidXVcIjpcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShNYXRoLmZsb29yKGR0Lm1pbGxpc2Vjb25kIC8gMTApLCAyKTtcbiAgICAgICAgICBjYXNlIFwidXV1XCI6XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oTWF0aC5mbG9vcihkdC5taWxsaXNlY29uZCAvIDEwMCkpO1xuICAgICAgICAgIC8vIG1pbnV0ZXNcbiAgICAgICAgICBjYXNlIFwibVwiOlxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0Lm1pbnV0ZSk7XG4gICAgICAgICAgY2FzZSBcIm1tXCI6XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQubWludXRlLCAyKTtcbiAgICAgICAgICAvLyBob3Vyc1xuICAgICAgICAgIGNhc2UgXCJoXCI6XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQuaG91ciAlIDEyID09PSAwID8gMTIgOiBkdC5ob3VyICUgMTIpO1xuICAgICAgICAgIGNhc2UgXCJoaFwiOlxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LmhvdXIgJSAxMiA9PT0gMCA/IDEyIDogZHQuaG91ciAlIDEyLCAyKTtcbiAgICAgICAgICBjYXNlIFwiSFwiOlxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LmhvdXIpO1xuICAgICAgICAgIGNhc2UgXCJISFwiOlxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LmhvdXIsIDIpO1xuICAgICAgICAgIC8vIG9mZnNldFxuICAgICAgICAgIGNhc2UgXCJaXCI6XG4gICAgICAgICAgICAvLyBsaWtlICs2XG4gICAgICAgICAgICByZXR1cm4gZm9ybWF0T2Zmc2V0KHsgZm9ybWF0OiBcIm5hcnJvd1wiLCBhbGxvd1o6IHRoaXMub3B0cy5hbGxvd1ogfSk7XG4gICAgICAgICAgY2FzZSBcIlpaXCI6XG4gICAgICAgICAgICAvLyBsaWtlICswNjowMFxuICAgICAgICAgICAgcmV0dXJuIGZvcm1hdE9mZnNldCh7IGZvcm1hdDogXCJzaG9ydFwiLCBhbGxvd1o6IHRoaXMub3B0cy5hbGxvd1ogfSk7XG4gICAgICAgICAgY2FzZSBcIlpaWlwiOlxuICAgICAgICAgICAgLy8gbGlrZSArMDYwMFxuICAgICAgICAgICAgcmV0dXJuIGZvcm1hdE9mZnNldCh7IGZvcm1hdDogXCJ0ZWNoaWVcIiwgYWxsb3daOiB0aGlzLm9wdHMuYWxsb3daIH0pO1xuICAgICAgICAgIGNhc2UgXCJaWlpaXCI6XG4gICAgICAgICAgICAvLyBsaWtlIEVTVFxuICAgICAgICAgICAgcmV0dXJuIGR0LnpvbmUub2Zmc2V0TmFtZShkdC50cywgeyBmb3JtYXQ6IFwic2hvcnRcIiwgbG9jYWxlOiB0aGlzLmxvYy5sb2NhbGUgfSk7XG4gICAgICAgICAgY2FzZSBcIlpaWlpaXCI6XG4gICAgICAgICAgICAvLyBsaWtlIEVhc3Rlcm4gU3RhbmRhcmQgVGltZVxuICAgICAgICAgICAgcmV0dXJuIGR0LnpvbmUub2Zmc2V0TmFtZShkdC50cywgeyBmb3JtYXQ6IFwibG9uZ1wiLCBsb2NhbGU6IHRoaXMubG9jLmxvY2FsZSB9KTtcbiAgICAgICAgICAvLyB6b25lXG4gICAgICAgICAgY2FzZSBcInpcIjpcbiAgICAgICAgICAgIC8vIGxpa2UgQW1lcmljYS9OZXdfWW9ya1xuICAgICAgICAgICAgcmV0dXJuIGR0LnpvbmVOYW1lO1xuICAgICAgICAgIC8vIG1lcmlkaWVtc1xuICAgICAgICAgIGNhc2UgXCJhXCI6XG4gICAgICAgICAgICByZXR1cm4gbWVyaWRpZW0oKTtcbiAgICAgICAgICAvLyBkYXRlc1xuICAgICAgICAgIGNhc2UgXCJkXCI6XG4gICAgICAgICAgICByZXR1cm4gdXNlRGF0ZVRpbWVGb3JtYXR0ZXIgPyBzdHJpbmcoeyBkYXk6IFwibnVtZXJpY1wiIH0sIFwiZGF5XCIpIDogdGhpcy5udW0oZHQuZGF5KTtcbiAgICAgICAgICBjYXNlIFwiZGRcIjpcbiAgICAgICAgICAgIHJldHVybiB1c2VEYXRlVGltZUZvcm1hdHRlciA/IHN0cmluZyh7IGRheTogXCIyLWRpZ2l0XCIgfSwgXCJkYXlcIikgOiB0aGlzLm51bShkdC5kYXksIDIpO1xuICAgICAgICAgIC8vIHdlZWtkYXlzIC0gc3RhbmRhbG9uZVxuICAgICAgICAgIGNhc2UgXCJjXCI6XG4gICAgICAgICAgICAvLyBsaWtlIDFcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC53ZWVrZGF5KTtcbiAgICAgICAgICBjYXNlIFwiY2NjXCI6XG4gICAgICAgICAgICAvLyBsaWtlICdUdWVzJ1xuICAgICAgICAgICAgcmV0dXJuIHdlZWtkYXkoXCJzaG9ydFwiLCB0cnVlKTtcbiAgICAgICAgICBjYXNlIFwiY2NjY1wiOlxuICAgICAgICAgICAgLy8gbGlrZSAnVHVlc2RheSdcbiAgICAgICAgICAgIHJldHVybiB3ZWVrZGF5KFwibG9uZ1wiLCB0cnVlKTtcbiAgICAgICAgICBjYXNlIFwiY2NjY2NcIjpcbiAgICAgICAgICAgIC8vIGxpa2UgJ1QnXG4gICAgICAgICAgICByZXR1cm4gd2Vla2RheShcIm5hcnJvd1wiLCB0cnVlKTtcbiAgICAgICAgICAvLyB3ZWVrZGF5cyAtIGZvcm1hdFxuICAgICAgICAgIGNhc2UgXCJFXCI6XG4gICAgICAgICAgICAvLyBsaWtlIDFcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC53ZWVrZGF5KTtcbiAgICAgICAgICBjYXNlIFwiRUVFXCI6XG4gICAgICAgICAgICAvLyBsaWtlICdUdWVzJ1xuICAgICAgICAgICAgcmV0dXJuIHdlZWtkYXkoXCJzaG9ydFwiLCBmYWxzZSk7XG4gICAgICAgICAgY2FzZSBcIkVFRUVcIjpcbiAgICAgICAgICAgIC8vIGxpa2UgJ1R1ZXNkYXknXG4gICAgICAgICAgICByZXR1cm4gd2Vla2RheShcImxvbmdcIiwgZmFsc2UpO1xuICAgICAgICAgIGNhc2UgXCJFRUVFRVwiOlxuICAgICAgICAgICAgLy8gbGlrZSAnVCdcbiAgICAgICAgICAgIHJldHVybiB3ZWVrZGF5KFwibmFycm93XCIsIGZhbHNlKTtcbiAgICAgICAgICAvLyBtb250aHMgLSBzdGFuZGFsb25lXG4gICAgICAgICAgY2FzZSBcIkxcIjpcbiAgICAgICAgICAgIC8vIGxpa2UgMVxuICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyXG4gICAgICAgICAgICAgID8gc3RyaW5nKHsgbW9udGg6IFwibnVtZXJpY1wiLCBkYXk6IFwibnVtZXJpY1wiIH0sIFwibW9udGhcIilcbiAgICAgICAgICAgICAgOiB0aGlzLm51bShkdC5tb250aCk7XG4gICAgICAgICAgY2FzZSBcIkxMXCI6XG4gICAgICAgICAgICAvLyBsaWtlIDAxLCBkb2Vzbid0IHNlZW0gdG8gd29ya1xuICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyXG4gICAgICAgICAgICAgID8gc3RyaW5nKHsgbW9udGg6IFwiMi1kaWdpdFwiLCBkYXk6IFwibnVtZXJpY1wiIH0sIFwibW9udGhcIilcbiAgICAgICAgICAgICAgOiB0aGlzLm51bShkdC5tb250aCwgMik7XG4gICAgICAgICAgY2FzZSBcIkxMTFwiOlxuICAgICAgICAgICAgLy8gbGlrZSBKYW5cbiAgICAgICAgICAgIHJldHVybiBtb250aChcInNob3J0XCIsIHRydWUpO1xuICAgICAgICAgIGNhc2UgXCJMTExMXCI6XG4gICAgICAgICAgICAvLyBsaWtlIEphbnVhcnlcbiAgICAgICAgICAgIHJldHVybiBtb250aChcImxvbmdcIiwgdHJ1ZSk7XG4gICAgICAgICAgY2FzZSBcIkxMTExMXCI6XG4gICAgICAgICAgICAvLyBsaWtlIEpcbiAgICAgICAgICAgIHJldHVybiBtb250aChcIm5hcnJvd1wiLCB0cnVlKTtcbiAgICAgICAgICAvLyBtb250aHMgLSBmb3JtYXRcbiAgICAgICAgICBjYXNlIFwiTVwiOlxuICAgICAgICAgICAgLy8gbGlrZSAxXG4gICAgICAgICAgICByZXR1cm4gdXNlRGF0ZVRpbWVGb3JtYXR0ZXJcbiAgICAgICAgICAgICAgPyBzdHJpbmcoeyBtb250aDogXCJudW1lcmljXCIgfSwgXCJtb250aFwiKVxuICAgICAgICAgICAgICA6IHRoaXMubnVtKGR0Lm1vbnRoKTtcbiAgICAgICAgICBjYXNlIFwiTU1cIjpcbiAgICAgICAgICAgIC8vIGxpa2UgMDFcbiAgICAgICAgICAgIHJldHVybiB1c2VEYXRlVGltZUZvcm1hdHRlclxuICAgICAgICAgICAgICA/IHN0cmluZyh7IG1vbnRoOiBcIjItZGlnaXRcIiB9LCBcIm1vbnRoXCIpXG4gICAgICAgICAgICAgIDogdGhpcy5udW0oZHQubW9udGgsIDIpO1xuICAgICAgICAgIGNhc2UgXCJNTU1cIjpcbiAgICAgICAgICAgIC8vIGxpa2UgSmFuXG4gICAgICAgICAgICByZXR1cm4gbW9udGgoXCJzaG9ydFwiLCBmYWxzZSk7XG4gICAgICAgICAgY2FzZSBcIk1NTU1cIjpcbiAgICAgICAgICAgIC8vIGxpa2UgSmFudWFyeVxuICAgICAgICAgICAgcmV0dXJuIG1vbnRoKFwibG9uZ1wiLCBmYWxzZSk7XG4gICAgICAgICAgY2FzZSBcIk1NTU1NXCI6XG4gICAgICAgICAgICAvLyBsaWtlIEpcbiAgICAgICAgICAgIHJldHVybiBtb250aChcIm5hcnJvd1wiLCBmYWxzZSk7XG4gICAgICAgICAgLy8geWVhcnNcbiAgICAgICAgICBjYXNlIFwieVwiOlxuICAgICAgICAgICAgLy8gbGlrZSAyMDE0XG4gICAgICAgICAgICByZXR1cm4gdXNlRGF0ZVRpbWVGb3JtYXR0ZXIgPyBzdHJpbmcoeyB5ZWFyOiBcIm51bWVyaWNcIiB9LCBcInllYXJcIikgOiB0aGlzLm51bShkdC55ZWFyKTtcbiAgICAgICAgICBjYXNlIFwieXlcIjpcbiAgICAgICAgICAgIC8vIGxpa2UgMTRcbiAgICAgICAgICAgIHJldHVybiB1c2VEYXRlVGltZUZvcm1hdHRlclxuICAgICAgICAgICAgICA/IHN0cmluZyh7IHllYXI6IFwiMi1kaWdpdFwiIH0sIFwieWVhclwiKVxuICAgICAgICAgICAgICA6IHRoaXMubnVtKGR0LnllYXIudG9TdHJpbmcoKS5zbGljZSgtMiksIDIpO1xuICAgICAgICAgIGNhc2UgXCJ5eXl5XCI6XG4gICAgICAgICAgICAvLyBsaWtlIDAwMTJcbiAgICAgICAgICAgIHJldHVybiB1c2VEYXRlVGltZUZvcm1hdHRlclxuICAgICAgICAgICAgICA/IHN0cmluZyh7IHllYXI6IFwibnVtZXJpY1wiIH0sIFwieWVhclwiKVxuICAgICAgICAgICAgICA6IHRoaXMubnVtKGR0LnllYXIsIDQpO1xuICAgICAgICAgIGNhc2UgXCJ5eXl5eXlcIjpcbiAgICAgICAgICAgIC8vIGxpa2UgMDAwMDEyXG4gICAgICAgICAgICByZXR1cm4gdXNlRGF0ZVRpbWVGb3JtYXR0ZXJcbiAgICAgICAgICAgICAgPyBzdHJpbmcoeyB5ZWFyOiBcIm51bWVyaWNcIiB9LCBcInllYXJcIilcbiAgICAgICAgICAgICAgOiB0aGlzLm51bShkdC55ZWFyLCA2KTtcbiAgICAgICAgICAvLyBlcmFzXG4gICAgICAgICAgY2FzZSBcIkdcIjpcbiAgICAgICAgICAgIC8vIGxpa2UgQURcbiAgICAgICAgICAgIHJldHVybiBlcmEoXCJzaG9ydFwiKTtcbiAgICAgICAgICBjYXNlIFwiR0dcIjpcbiAgICAgICAgICAgIC8vIGxpa2UgQW5ubyBEb21pbmlcbiAgICAgICAgICAgIHJldHVybiBlcmEoXCJsb25nXCIpO1xuICAgICAgICAgIGNhc2UgXCJHR0dHR1wiOlxuICAgICAgICAgICAgcmV0dXJuIGVyYShcIm5hcnJvd1wiKTtcbiAgICAgICAgICBjYXNlIFwia2tcIjpcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC53ZWVrWWVhci50b1N0cmluZygpLnNsaWNlKC0yKSwgMik7XG4gICAgICAgICAgY2FzZSBcImtra2tcIjpcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC53ZWVrWWVhciwgNCk7XG4gICAgICAgICAgY2FzZSBcIldcIjpcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC53ZWVrTnVtYmVyKTtcbiAgICAgICAgICBjYXNlIFwiV1dcIjpcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC53ZWVrTnVtYmVyLCAyKTtcbiAgICAgICAgICBjYXNlIFwib1wiOlxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0Lm9yZGluYWwpO1xuICAgICAgICAgIGNhc2UgXCJvb29cIjpcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5vcmRpbmFsLCAzKTtcbiAgICAgICAgICBjYXNlIFwicVwiOlxuICAgICAgICAgICAgLy8gbGlrZSAxXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQucXVhcnRlcik7XG4gICAgICAgICAgY2FzZSBcInFxXCI6XG4gICAgICAgICAgICAvLyBsaWtlIDAxXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQucXVhcnRlciwgMik7XG4gICAgICAgICAgY2FzZSBcIlhcIjpcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShNYXRoLmZsb29yKGR0LnRzIC8gMTAwMCkpO1xuICAgICAgICAgIGNhc2UgXCJ4XCI6XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQudHMpO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gbWF5YmVNYWNybyh0b2tlbik7XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICByZXR1cm4gc3RyaW5naWZ5VG9rZW5zKEZvcm1hdHRlci5wYXJzZUZvcm1hdChmbXQpLCB0b2tlblRvU3RyaW5nKTtcbiAgfVxuXG4gIGZvcm1hdER1cmF0aW9uRnJvbVN0cmluZyhkdXIsIGZtdCkge1xuICAgIGNvbnN0IHRva2VuVG9GaWVsZCA9ICh0b2tlbikgPT4ge1xuICAgICAgICBzd2l0Y2ggKHRva2VuWzBdKSB7XG4gICAgICAgICAgY2FzZSBcIlNcIjpcbiAgICAgICAgICAgIHJldHVybiBcIm1pbGxpc2Vjb25kXCI7XG4gICAgICAgICAgY2FzZSBcInNcIjpcbiAgICAgICAgICAgIHJldHVybiBcInNlY29uZFwiO1xuICAgICAgICAgIGNhc2UgXCJtXCI6XG4gICAgICAgICAgICByZXR1cm4gXCJtaW51dGVcIjtcbiAgICAgICAgICBjYXNlIFwiaFwiOlxuICAgICAgICAgICAgcmV0dXJuIFwiaG91clwiO1xuICAgICAgICAgIGNhc2UgXCJkXCI6XG4gICAgICAgICAgICByZXR1cm4gXCJkYXlcIjtcbiAgICAgICAgICBjYXNlIFwid1wiOlxuICAgICAgICAgICAgcmV0dXJuIFwid2Vla1wiO1xuICAgICAgICAgIGNhc2UgXCJNXCI6XG4gICAgICAgICAgICByZXR1cm4gXCJtb250aFwiO1xuICAgICAgICAgIGNhc2UgXCJ5XCI6XG4gICAgICAgICAgICByZXR1cm4gXCJ5ZWFyXCI7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgdG9rZW5Ub1N0cmluZyA9IChsaWxkdXIpID0+ICh0b2tlbikgPT4ge1xuICAgICAgICBjb25zdCBtYXBwZWQgPSB0b2tlblRvRmllbGQodG9rZW4pO1xuICAgICAgICBpZiAobWFwcGVkKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGxpbGR1ci5nZXQobWFwcGVkKSwgdG9rZW4ubGVuZ3RoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdG9rZW47XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB0b2tlbnMgPSBGb3JtYXR0ZXIucGFyc2VGb3JtYXQoZm10KSxcbiAgICAgIHJlYWxUb2tlbnMgPSB0b2tlbnMucmVkdWNlKFxuICAgICAgICAoZm91bmQsIHsgbGl0ZXJhbCwgdmFsIH0pID0+IChsaXRlcmFsID8gZm91bmQgOiBmb3VuZC5jb25jYXQodmFsKSksXG4gICAgICAgIFtdXG4gICAgICApLFxuICAgICAgY29sbGFwc2VkID0gZHVyLnNoaWZ0VG8oLi4ucmVhbFRva2Vucy5tYXAodG9rZW5Ub0ZpZWxkKS5maWx0ZXIoKHQpID0+IHQpKTtcbiAgICByZXR1cm4gc3RyaW5naWZ5VG9rZW5zKHRva2VucywgdG9rZW5Ub1N0cmluZyhjb2xsYXBzZWQpKTtcbiAgfVxufVxuIiwgImV4cG9ydCBkZWZhdWx0IGNsYXNzIEludmFsaWQge1xuICBjb25zdHJ1Y3RvcihyZWFzb24sIGV4cGxhbmF0aW9uKSB7XG4gICAgdGhpcy5yZWFzb24gPSByZWFzb247XG4gICAgdGhpcy5leHBsYW5hdGlvbiA9IGV4cGxhbmF0aW9uO1xuICB9XG5cbiAgdG9NZXNzYWdlKCkge1xuICAgIGlmICh0aGlzLmV4cGxhbmF0aW9uKSB7XG4gICAgICByZXR1cm4gYCR7dGhpcy5yZWFzb259OiAke3RoaXMuZXhwbGFuYXRpb259YDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMucmVhc29uO1xuICAgIH1cbiAgfVxufVxuIiwgImltcG9ydCB7IFpvbmVJc0Fic3RyYWN0RXJyb3IgfSBmcm9tIFwiLi9lcnJvcnMuanNcIjtcblxuLyoqXG4gKiBAaW50ZXJmYWNlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFpvbmUge1xuICAvKipcbiAgICogVGhlIHR5cGUgb2Ygem9uZVxuICAgKiBAYWJzdHJhY3RcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIGdldCB0eXBlKCkge1xuICAgIHRocm93IG5ldyBab25lSXNBYnN0cmFjdEVycm9yKCk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhpcyB6b25lLlxuICAgKiBAYWJzdHJhY3RcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIGdldCBuYW1lKCkge1xuICAgIHRocm93IG5ldyBab25lSXNBYnN0cmFjdEVycm9yKCk7XG4gIH1cblxuICBnZXQgaWFuYU5hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMubmFtZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIG9mZnNldCBpcyBrbm93biB0byBiZSBmaXhlZCBmb3IgdGhlIHdob2xlIHllYXIuXG4gICAqIEBhYnN0cmFjdFxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICovXG4gIGdldCBpc1VuaXZlcnNhbCgpIHtcbiAgICB0aHJvdyBuZXcgWm9uZUlzQWJzdHJhY3RFcnJvcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIG9mZnNldCdzIGNvbW1vbiBuYW1lIChzdWNoIGFzIEVTVCkgYXQgdGhlIHNwZWNpZmllZCB0aW1lc3RhbXBcbiAgICogQGFic3RyYWN0XG4gICAqIEBwYXJhbSB7bnVtYmVyfSB0cyAtIEVwb2NoIG1pbGxpc2Vjb25kcyBmb3Igd2hpY2ggdG8gZ2V0IHRoZSBuYW1lXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gT3B0aW9ucyB0byBhZmZlY3QgdGhlIGZvcm1hdFxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5mb3JtYXQgLSBXaGF0IHN0eWxlIG9mIG9mZnNldCB0byByZXR1cm4uIEFjY2VwdHMgJ2xvbmcnIG9yICdzaG9ydCcuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLmxvY2FsZSAtIFdoYXQgbG9jYWxlIHRvIHJldHVybiB0aGUgb2Zmc2V0IG5hbWUgaW4uXG4gICAqIEByZXR1cm4ge3N0cmluZ31cbiAgICovXG4gIG9mZnNldE5hbWUodHMsIG9wdHMpIHtcbiAgICB0aHJvdyBuZXcgWm9uZUlzQWJzdHJhY3RFcnJvcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIG9mZnNldCdzIHZhbHVlIGFzIGEgc3RyaW5nXG4gICAqIEBhYnN0cmFjdFxuICAgKiBAcGFyYW0ge251bWJlcn0gdHMgLSBFcG9jaCBtaWxsaXNlY29uZHMgZm9yIHdoaWNoIHRvIGdldCB0aGUgb2Zmc2V0XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmb3JtYXQgLSBXaGF0IHN0eWxlIG9mIG9mZnNldCB0byByZXR1cm4uXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICBBY2NlcHRzICduYXJyb3cnLCAnc2hvcnQnLCBvciAndGVjaGllJy4gUmV0dXJuaW5nICcrNicsICcrMDY6MDAnLCBvciAnKzA2MDAnIHJlc3BlY3RpdmVseVxuICAgKiBAcmV0dXJuIHtzdHJpbmd9XG4gICAqL1xuICBmb3JtYXRPZmZzZXQodHMsIGZvcm1hdCkge1xuICAgIHRocm93IG5ldyBab25lSXNBYnN0cmFjdEVycm9yKCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRoZSBvZmZzZXQgaW4gbWludXRlcyBmb3IgdGhpcyB6b25lIGF0IHRoZSBzcGVjaWZpZWQgdGltZXN0YW1wLlxuICAgKiBAYWJzdHJhY3RcbiAgICogQHBhcmFtIHtudW1iZXJ9IHRzIC0gRXBvY2ggbWlsbGlzZWNvbmRzIGZvciB3aGljaCB0byBjb21wdXRlIHRoZSBvZmZzZXRcbiAgICogQHJldHVybiB7bnVtYmVyfVxuICAgKi9cbiAgb2Zmc2V0KHRzKSB7XG4gICAgdGhyb3cgbmV3IFpvbmVJc0Fic3RyYWN0RXJyb3IoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gd2hldGhlciB0aGlzIFpvbmUgaXMgZXF1YWwgdG8gYW5vdGhlciB6b25lXG4gICAqIEBhYnN0cmFjdFxuICAgKiBAcGFyYW0ge1pvbmV9IG90aGVyWm9uZSAtIHRoZSB6b25lIHRvIGNvbXBhcmVcbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICovXG4gIGVxdWFscyhvdGhlclpvbmUpIHtcbiAgICB0aHJvdyBuZXcgWm9uZUlzQWJzdHJhY3RFcnJvcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB3aGV0aGVyIHRoaXMgWm9uZSBpcyB2YWxpZC5cbiAgICogQGFic3RyYWN0XG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKi9cbiAgZ2V0IGlzVmFsaWQoKSB7XG4gICAgdGhyb3cgbmV3IFpvbmVJc0Fic3RyYWN0RXJyb3IoKTtcbiAgfVxufVxuIiwgImltcG9ydCB7IGZvcm1hdE9mZnNldCwgcGFyc2Vab25lSW5mbyB9IGZyb20gXCIuLi9pbXBsL3V0aWwuanNcIjtcbmltcG9ydCBab25lIGZyb20gXCIuLi96b25lLmpzXCI7XG5cbmxldCBzaW5nbGV0b24gPSBudWxsO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIGxvY2FsIHpvbmUgZm9yIHRoaXMgSmF2YVNjcmlwdCBlbnZpcm9ubWVudC5cbiAqIEBpbXBsZW1lbnRzIHtab25lfVxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTeXN0ZW1ab25lIGV4dGVuZHMgWm9uZSB7XG4gIC8qKlxuICAgKiBHZXQgYSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhlIGxvY2FsIHpvbmVcbiAgICogQHJldHVybiB7U3lzdGVtWm9uZX1cbiAgICovXG4gIHN0YXRpYyBnZXQgaW5zdGFuY2UoKSB7XG4gICAgaWYgKHNpbmdsZXRvbiA9PT0gbnVsbCkge1xuICAgICAgc2luZ2xldG9uID0gbmV3IFN5c3RlbVpvbmUoKTtcbiAgICB9XG4gICAgcmV0dXJuIHNpbmdsZXRvbjtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIGdldCB0eXBlKCkge1xuICAgIHJldHVybiBcInN5c3RlbVwiO1xuICB9XG5cbiAgLyoqIEBvdmVycmlkZSAqKi9cbiAgZ2V0IG5hbWUoKSB7XG4gICAgcmV0dXJuIG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KCkucmVzb2x2ZWRPcHRpb25zKCkudGltZVpvbmU7XG4gIH1cblxuICAvKiogQG92ZXJyaWRlICoqL1xuICBnZXQgaXNVbml2ZXJzYWwoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqIEBvdmVycmlkZSAqKi9cbiAgb2Zmc2V0TmFtZSh0cywgeyBmb3JtYXQsIGxvY2FsZSB9KSB7XG4gICAgcmV0dXJuIHBhcnNlWm9uZUluZm8odHMsIGZvcm1hdCwgbG9jYWxlKTtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIGZvcm1hdE9mZnNldCh0cywgZm9ybWF0KSB7XG4gICAgcmV0dXJuIGZvcm1hdE9mZnNldCh0aGlzLm9mZnNldCh0cyksIGZvcm1hdCk7XG4gIH1cblxuICAvKiogQG92ZXJyaWRlICoqL1xuICBvZmZzZXQodHMpIHtcbiAgICByZXR1cm4gLW5ldyBEYXRlKHRzKS5nZXRUaW1lem9uZU9mZnNldCgpO1xuICB9XG5cbiAgLyoqIEBvdmVycmlkZSAqKi9cbiAgZXF1YWxzKG90aGVyWm9uZSkge1xuICAgIHJldHVybiBvdGhlclpvbmUudHlwZSA9PT0gXCJzeXN0ZW1cIjtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIGdldCBpc1ZhbGlkKCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG4iLCAiaW1wb3J0IHsgZm9ybWF0T2Zmc2V0LCBwYXJzZVpvbmVJbmZvLCBpc1VuZGVmaW5lZCwgb2JqVG9Mb2NhbFRTIH0gZnJvbSBcIi4uL2ltcGwvdXRpbC5qc1wiO1xuaW1wb3J0IFpvbmUgZnJvbSBcIi4uL3pvbmUuanNcIjtcblxubGV0IGR0ZkNhY2hlID0ge307XG5mdW5jdGlvbiBtYWtlRFRGKHpvbmUpIHtcbiAgaWYgKCFkdGZDYWNoZVt6b25lXSkge1xuICAgIGR0ZkNhY2hlW3pvbmVdID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoXCJlbi1VU1wiLCB7XG4gICAgICBob3VyMTI6IGZhbHNlLFxuICAgICAgdGltZVpvbmU6IHpvbmUsXG4gICAgICB5ZWFyOiBcIm51bWVyaWNcIixcbiAgICAgIG1vbnRoOiBcIjItZGlnaXRcIixcbiAgICAgIGRheTogXCIyLWRpZ2l0XCIsXG4gICAgICBob3VyOiBcIjItZGlnaXRcIixcbiAgICAgIG1pbnV0ZTogXCIyLWRpZ2l0XCIsXG4gICAgICBzZWNvbmQ6IFwiMi1kaWdpdFwiLFxuICAgICAgZXJhOiBcInNob3J0XCIsXG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIGR0ZkNhY2hlW3pvbmVdO1xufVxuXG5jb25zdCB0eXBlVG9Qb3MgPSB7XG4gIHllYXI6IDAsXG4gIG1vbnRoOiAxLFxuICBkYXk6IDIsXG4gIGVyYTogMyxcbiAgaG91cjogNCxcbiAgbWludXRlOiA1LFxuICBzZWNvbmQ6IDYsXG59O1xuXG5mdW5jdGlvbiBoYWNreU9mZnNldChkdGYsIGRhdGUpIHtcbiAgY29uc3QgZm9ybWF0dGVkID0gZHRmLmZvcm1hdChkYXRlKS5yZXBsYWNlKC9cXHUyMDBFL2csIFwiXCIpLFxuICAgIHBhcnNlZCA9IC8oXFxkKylcXC8oXFxkKylcXC8oXFxkKykgKEFEfEJDKSw/IChcXGQrKTooXFxkKyk6KFxcZCspLy5leGVjKGZvcm1hdHRlZCksXG4gICAgWywgZk1vbnRoLCBmRGF5LCBmWWVhciwgZmFkT3JCYywgZkhvdXIsIGZNaW51dGUsIGZTZWNvbmRdID0gcGFyc2VkO1xuICByZXR1cm4gW2ZZZWFyLCBmTW9udGgsIGZEYXksIGZhZE9yQmMsIGZIb3VyLCBmTWludXRlLCBmU2Vjb25kXTtcbn1cblxuZnVuY3Rpb24gcGFydHNPZmZzZXQoZHRmLCBkYXRlKSB7XG4gIGNvbnN0IGZvcm1hdHRlZCA9IGR0Zi5mb3JtYXRUb1BhcnRzKGRhdGUpO1xuICBjb25zdCBmaWxsZWQgPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBmb3JtYXR0ZWQubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCB7IHR5cGUsIHZhbHVlIH0gPSBmb3JtYXR0ZWRbaV07XG4gICAgY29uc3QgcG9zID0gdHlwZVRvUG9zW3R5cGVdO1xuXG4gICAgaWYgKHR5cGUgPT09IFwiZXJhXCIpIHtcbiAgICAgIGZpbGxlZFtwb3NdID0gdmFsdWU7XG4gICAgfSBlbHNlIGlmICghaXNVbmRlZmluZWQocG9zKSkge1xuICAgICAgZmlsbGVkW3Bvc10gPSBwYXJzZUludCh2YWx1ZSwgMTApO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZmlsbGVkO1xufVxuXG5sZXQgaWFuYVpvbmVDYWNoZSA9IHt9O1xuLyoqXG4gKiBBIHpvbmUgaWRlbnRpZmllZCBieSBhbiBJQU5BIGlkZW50aWZpZXIsIGxpa2UgQW1lcmljYS9OZXdfWW9ya1xuICogQGltcGxlbWVudHMge1pvbmV9XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIElBTkFab25lIGV4dGVuZHMgWm9uZSB7XG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIFpvbmUgbmFtZVxuICAgKiBAcmV0dXJuIHtJQU5BWm9uZX1cbiAgICovXG4gIHN0YXRpYyBjcmVhdGUobmFtZSkge1xuICAgIGlmICghaWFuYVpvbmVDYWNoZVtuYW1lXSkge1xuICAgICAgaWFuYVpvbmVDYWNoZVtuYW1lXSA9IG5ldyBJQU5BWm9uZShuYW1lKTtcbiAgICB9XG4gICAgcmV0dXJuIGlhbmFab25lQ2FjaGVbbmFtZV07XG4gIH1cblxuICAvKipcbiAgICogUmVzZXQgbG9jYWwgY2FjaGVzLiBTaG91bGQgb25seSBiZSBuZWNlc3NhcnkgaW4gdGVzdGluZyBzY2VuYXJpb3MuXG4gICAqIEByZXR1cm4ge3ZvaWR9XG4gICAqL1xuICBzdGF0aWMgcmVzZXRDYWNoZSgpIHtcbiAgICBpYW5hWm9uZUNhY2hlID0ge307XG4gICAgZHRmQ2FjaGUgPSB7fTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIHByb3ZpZGVkIHN0cmluZyBpcyBhIHZhbGlkIHNwZWNpZmllci4gVGhpcyBvbmx5IGNoZWNrcyB0aGUgc3RyaW5nJ3MgZm9ybWF0LCBub3QgdGhhdCB0aGUgc3BlY2lmaWVyIGlkZW50aWZpZXMgYSBrbm93biB6b25lOyBzZWUgaXNWYWxpZFpvbmUgZm9yIHRoYXQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzIC0gVGhlIHN0cmluZyB0byBjaGVjayB2YWxpZGl0eSBvblxuICAgKiBAZXhhbXBsZSBJQU5BWm9uZS5pc1ZhbGlkU3BlY2lmaWVyKFwiQW1lcmljYS9OZXdfWW9ya1wiKSAvLz0+IHRydWVcbiAgICogQGV4YW1wbGUgSUFOQVpvbmUuaXNWYWxpZFNwZWNpZmllcihcIlNwb3J0fn5ibG9ycFwiKSAvLz0+IGZhbHNlXG4gICAqIEBkZXByZWNhdGVkIFRoaXMgbWV0aG9kIHJldHVybnMgZmFsc2UgZm9yIHNvbWUgdmFsaWQgSUFOQSBuYW1lcy4gVXNlIGlzVmFsaWRab25lIGluc3RlYWQuXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqL1xuICBzdGF0aWMgaXNWYWxpZFNwZWNpZmllcihzKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZFpvbmUocyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB3aGV0aGVyIHRoZSBwcm92aWRlZCBzdHJpbmcgaWRlbnRpZmllcyBhIHJlYWwgem9uZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gem9uZSAtIFRoZSBzdHJpbmcgdG8gY2hlY2tcbiAgICogQGV4YW1wbGUgSUFOQVpvbmUuaXNWYWxpZFpvbmUoXCJBbWVyaWNhL05ld19Zb3JrXCIpIC8vPT4gdHJ1ZVxuICAgKiBAZXhhbXBsZSBJQU5BWm9uZS5pc1ZhbGlkWm9uZShcIkZhbnRhc2lhL0Nhc3RsZVwiKSAvLz0+IGZhbHNlXG4gICAqIEBleGFtcGxlIElBTkFab25lLmlzVmFsaWRab25lKFwiU3BvcnR+fmJsb3JwXCIpIC8vPT4gZmFsc2VcbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICovXG4gIHN0YXRpYyBpc1ZhbGlkWm9uZSh6b25lKSB7XG4gICAgaWYgKCF6b25lKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChcImVuLVVTXCIsIHsgdGltZVpvbmU6IHpvbmUgfSkuZm9ybWF0KCk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgY29uc3RydWN0b3IobmFtZSkge1xuICAgIHN1cGVyKCk7XG4gICAgLyoqIEBwcml2YXRlICoqL1xuICAgIHRoaXMuem9uZU5hbWUgPSBuYW1lO1xuICAgIC8qKiBAcHJpdmF0ZSAqKi9cbiAgICB0aGlzLnZhbGlkID0gSUFOQVpvbmUuaXNWYWxpZFpvbmUobmFtZSk7XG4gIH1cblxuICAvKiogQG92ZXJyaWRlICoqL1xuICBnZXQgdHlwZSgpIHtcbiAgICByZXR1cm4gXCJpYW5hXCI7XG4gIH1cblxuICAvKiogQG92ZXJyaWRlICoqL1xuICBnZXQgbmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy56b25lTmFtZTtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIGdldCBpc1VuaXZlcnNhbCgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKiogQG92ZXJyaWRlICoqL1xuICBvZmZzZXROYW1lKHRzLCB7IGZvcm1hdCwgbG9jYWxlIH0pIHtcbiAgICByZXR1cm4gcGFyc2Vab25lSW5mbyh0cywgZm9ybWF0LCBsb2NhbGUsIHRoaXMubmFtZSk7XG4gIH1cblxuICAvKiogQG92ZXJyaWRlICoqL1xuICBmb3JtYXRPZmZzZXQodHMsIGZvcm1hdCkge1xuICAgIHJldHVybiBmb3JtYXRPZmZzZXQodGhpcy5vZmZzZXQodHMpLCBmb3JtYXQpO1xuICB9XG5cbiAgLyoqIEBvdmVycmlkZSAqKi9cbiAgb2Zmc2V0KHRzKSB7XG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHRzKTtcblxuICAgIGlmIChpc05hTihkYXRlKSkgcmV0dXJuIE5hTjtcblxuICAgIGNvbnN0IGR0ZiA9IG1ha2VEVEYodGhpcy5uYW1lKTtcbiAgICBsZXQgW3llYXIsIG1vbnRoLCBkYXksIGFkT3JCYywgaG91ciwgbWludXRlLCBzZWNvbmRdID0gZHRmLmZvcm1hdFRvUGFydHNcbiAgICAgID8gcGFydHNPZmZzZXQoZHRmLCBkYXRlKVxuICAgICAgOiBoYWNreU9mZnNldChkdGYsIGRhdGUpO1xuXG4gICAgaWYgKGFkT3JCYyA9PT0gXCJCQ1wiKSB7XG4gICAgICB5ZWFyID0gLU1hdGguYWJzKHllYXIpICsgMTtcbiAgICB9XG5cbiAgICAvLyBiZWNhdXNlIHdlJ3JlIHVzaW5nIGhvdXIxMiBhbmQgaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9MTAyNTU2NCZjYW49MiZxPSUyMjI0JTNBMDAlMjIlMjBkYXRldGltZWZvcm1hdFxuICAgIGNvbnN0IGFkanVzdGVkSG91ciA9IGhvdXIgPT09IDI0ID8gMCA6IGhvdXI7XG5cbiAgICBjb25zdCBhc1VUQyA9IG9ialRvTG9jYWxUUyh7XG4gICAgICB5ZWFyLFxuICAgICAgbW9udGgsXG4gICAgICBkYXksXG4gICAgICBob3VyOiBhZGp1c3RlZEhvdXIsXG4gICAgICBtaW51dGUsXG4gICAgICBzZWNvbmQsXG4gICAgICBtaWxsaXNlY29uZDogMCxcbiAgICB9KTtcblxuICAgIGxldCBhc1RTID0gK2RhdGU7XG4gICAgY29uc3Qgb3ZlciA9IGFzVFMgJSAxMDAwO1xuICAgIGFzVFMgLT0gb3ZlciA+PSAwID8gb3ZlciA6IDEwMDAgKyBvdmVyO1xuICAgIHJldHVybiAoYXNVVEMgLSBhc1RTKSAvICg2MCAqIDEwMDApO1xuICB9XG5cbiAgLyoqIEBvdmVycmlkZSAqKi9cbiAgZXF1YWxzKG90aGVyWm9uZSkge1xuICAgIHJldHVybiBvdGhlclpvbmUudHlwZSA9PT0gXCJpYW5hXCIgJiYgb3RoZXJab25lLm5hbWUgPT09IHRoaXMubmFtZTtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIGdldCBpc1ZhbGlkKCkge1xuICAgIHJldHVybiB0aGlzLnZhbGlkO1xuICB9XG59XG4iLCAiaW1wb3J0IHsgZm9ybWF0T2Zmc2V0LCBzaWduZWRPZmZzZXQgfSBmcm9tIFwiLi4vaW1wbC91dGlsLmpzXCI7XG5pbXBvcnQgWm9uZSBmcm9tIFwiLi4vem9uZS5qc1wiO1xuXG5sZXQgc2luZ2xldG9uID0gbnVsbDtcblxuLyoqXG4gKiBBIHpvbmUgd2l0aCBhIGZpeGVkIG9mZnNldCAobWVhbmluZyBubyBEU1QpXG4gKiBAaW1wbGVtZW50cyB7Wm9uZX1cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRml4ZWRPZmZzZXRab25lIGV4dGVuZHMgWm9uZSB7XG4gIC8qKlxuICAgKiBHZXQgYSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgVVRDXG4gICAqIEByZXR1cm4ge0ZpeGVkT2Zmc2V0Wm9uZX1cbiAgICovXG4gIHN0YXRpYyBnZXQgdXRjSW5zdGFuY2UoKSB7XG4gICAgaWYgKHNpbmdsZXRvbiA9PT0gbnVsbCkge1xuICAgICAgc2luZ2xldG9uID0gbmV3IEZpeGVkT2Zmc2V0Wm9uZSgwKTtcbiAgICB9XG4gICAgcmV0dXJuIHNpbmdsZXRvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYW4gaW5zdGFuY2Ugd2l0aCBhIHNwZWNpZmllZCBvZmZzZXRcbiAgICogQHBhcmFtIHtudW1iZXJ9IG9mZnNldCAtIFRoZSBvZmZzZXQgaW4gbWludXRlc1xuICAgKiBAcmV0dXJuIHtGaXhlZE9mZnNldFpvbmV9XG4gICAqL1xuICBzdGF0aWMgaW5zdGFuY2Uob2Zmc2V0KSB7XG4gICAgcmV0dXJuIG9mZnNldCA9PT0gMCA/IEZpeGVkT2Zmc2V0Wm9uZS51dGNJbnN0YW5jZSA6IG5ldyBGaXhlZE9mZnNldFpvbmUob2Zmc2V0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYW4gaW5zdGFuY2Ugb2YgRml4ZWRPZmZzZXRab25lIGZyb20gYSBVVEMgb2Zmc2V0IHN0cmluZywgbGlrZSBcIlVUQys2XCJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHMgLSBUaGUgb2Zmc2V0IHN0cmluZyB0byBwYXJzZVxuICAgKiBAZXhhbXBsZSBGaXhlZE9mZnNldFpvbmUucGFyc2VTcGVjaWZpZXIoXCJVVEMrNlwiKVxuICAgKiBAZXhhbXBsZSBGaXhlZE9mZnNldFpvbmUucGFyc2VTcGVjaWZpZXIoXCJVVEMrMDZcIilcbiAgICogQGV4YW1wbGUgRml4ZWRPZmZzZXRab25lLnBhcnNlU3BlY2lmaWVyKFwiVVRDLTY6MDBcIilcbiAgICogQHJldHVybiB7Rml4ZWRPZmZzZXRab25lfVxuICAgKi9cbiAgc3RhdGljIHBhcnNlU3BlY2lmaWVyKHMpIHtcbiAgICBpZiAocykge1xuICAgICAgY29uc3QgciA9IHMubWF0Y2goL151dGMoPzooWystXVxcZHsxLDJ9KSg/OjooXFxkezJ9KSk/KT8kL2kpO1xuICAgICAgaWYgKHIpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBGaXhlZE9mZnNldFpvbmUoc2lnbmVkT2Zmc2V0KHJbMV0sIHJbMl0pKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihvZmZzZXQpIHtcbiAgICBzdXBlcigpO1xuICAgIC8qKiBAcHJpdmF0ZSAqKi9cbiAgICB0aGlzLmZpeGVkID0gb2Zmc2V0O1xuICB9XG5cbiAgLyoqIEBvdmVycmlkZSAqKi9cbiAgZ2V0IHR5cGUoKSB7XG4gICAgcmV0dXJuIFwiZml4ZWRcIjtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIGdldCBuYW1lKCkge1xuICAgIHJldHVybiB0aGlzLmZpeGVkID09PSAwID8gXCJVVENcIiA6IGBVVEMke2Zvcm1hdE9mZnNldCh0aGlzLmZpeGVkLCBcIm5hcnJvd1wiKX1gO1xuICB9XG5cbiAgZ2V0IGlhbmFOYW1lKCkge1xuICAgIGlmICh0aGlzLmZpeGVkID09PSAwKSB7XG4gICAgICByZXR1cm4gXCJFdGMvVVRDXCI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBgRXRjL0dNVCR7Zm9ybWF0T2Zmc2V0KC10aGlzLmZpeGVkLCBcIm5hcnJvd1wiKX1gO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIG9mZnNldE5hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMubmFtZTtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIGZvcm1hdE9mZnNldCh0cywgZm9ybWF0KSB7XG4gICAgcmV0dXJuIGZvcm1hdE9mZnNldCh0aGlzLmZpeGVkLCBmb3JtYXQpO1xuICB9XG5cbiAgLyoqIEBvdmVycmlkZSAqKi9cbiAgZ2V0IGlzVW5pdmVyc2FsKCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqIEBvdmVycmlkZSAqKi9cbiAgb2Zmc2V0KCkge1xuICAgIHJldHVybiB0aGlzLmZpeGVkO1xuICB9XG5cbiAgLyoqIEBvdmVycmlkZSAqKi9cbiAgZXF1YWxzKG90aGVyWm9uZSkge1xuICAgIHJldHVybiBvdGhlclpvbmUudHlwZSA9PT0gXCJmaXhlZFwiICYmIG90aGVyWm9uZS5maXhlZCA9PT0gdGhpcy5maXhlZDtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIGdldCBpc1ZhbGlkKCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG4iLCAiaW1wb3J0IFpvbmUgZnJvbSBcIi4uL3pvbmUuanNcIjtcblxuLyoqXG4gKiBBIHpvbmUgdGhhdCBmYWlsZWQgdG8gcGFyc2UuIFlvdSBzaG91bGQgbmV2ZXIgbmVlZCB0byBpbnN0YW50aWF0ZSB0aGlzLlxuICogQGltcGxlbWVudHMge1pvbmV9XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEludmFsaWRab25lIGV4dGVuZHMgWm9uZSB7XG4gIGNvbnN0cnVjdG9yKHpvbmVOYW1lKSB7XG4gICAgc3VwZXIoKTtcbiAgICAvKiogIEBwcml2YXRlICovXG4gICAgdGhpcy56b25lTmFtZSA9IHpvbmVOYW1lO1xuICB9XG5cbiAgLyoqIEBvdmVycmlkZSAqKi9cbiAgZ2V0IHR5cGUoKSB7XG4gICAgcmV0dXJuIFwiaW52YWxpZFwiO1xuICB9XG5cbiAgLyoqIEBvdmVycmlkZSAqKi9cbiAgZ2V0IG5hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuem9uZU5hbWU7XG4gIH1cblxuICAvKiogQG92ZXJyaWRlICoqL1xuICBnZXQgaXNVbml2ZXJzYWwoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqIEBvdmVycmlkZSAqKi9cbiAgb2Zmc2V0TmFtZSgpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIGZvcm1hdE9mZnNldCgpIHtcbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIG9mZnNldCgpIHtcbiAgICByZXR1cm4gTmFOO1xuICB9XG5cbiAgLyoqIEBvdmVycmlkZSAqKi9cbiAgZXF1YWxzKCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKiBAb3ZlcnJpZGUgKiovXG4gIGdldCBpc1ZhbGlkKCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuIiwgIi8qKlxuICogQHByaXZhdGVcbiAqL1xuXG5pbXBvcnQgWm9uZSBmcm9tIFwiLi4vem9uZS5qc1wiO1xuaW1wb3J0IElBTkFab25lIGZyb20gXCIuLi96b25lcy9JQU5BWm9uZS5qc1wiO1xuaW1wb3J0IEZpeGVkT2Zmc2V0Wm9uZSBmcm9tIFwiLi4vem9uZXMvZml4ZWRPZmZzZXRab25lLmpzXCI7XG5pbXBvcnQgSW52YWxpZFpvbmUgZnJvbSBcIi4uL3pvbmVzL2ludmFsaWRab25lLmpzXCI7XG5cbmltcG9ydCB7IGlzVW5kZWZpbmVkLCBpc1N0cmluZywgaXNOdW1iZXIgfSBmcm9tIFwiLi91dGlsLmpzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVab25lKGlucHV0LCBkZWZhdWx0Wm9uZSkge1xuICBsZXQgb2Zmc2V0O1xuICBpZiAoaXNVbmRlZmluZWQoaW5wdXQpIHx8IGlucHV0ID09PSBudWxsKSB7XG4gICAgcmV0dXJuIGRlZmF1bHRab25lO1xuICB9IGVsc2UgaWYgKGlucHV0IGluc3RhbmNlb2YgWm9uZSkge1xuICAgIHJldHVybiBpbnB1dDtcbiAgfSBlbHNlIGlmIChpc1N0cmluZyhpbnB1dCkpIHtcbiAgICBjb25zdCBsb3dlcmVkID0gaW5wdXQudG9Mb3dlckNhc2UoKTtcbiAgICBpZiAobG93ZXJlZCA9PT0gXCJsb2NhbFwiIHx8IGxvd2VyZWQgPT09IFwic3lzdGVtXCIpIHJldHVybiBkZWZhdWx0Wm9uZTtcbiAgICBlbHNlIGlmIChsb3dlcmVkID09PSBcInV0Y1wiIHx8IGxvd2VyZWQgPT09IFwiZ210XCIpIHJldHVybiBGaXhlZE9mZnNldFpvbmUudXRjSW5zdGFuY2U7XG4gICAgZWxzZSByZXR1cm4gRml4ZWRPZmZzZXRab25lLnBhcnNlU3BlY2lmaWVyKGxvd2VyZWQpIHx8IElBTkFab25lLmNyZWF0ZShpbnB1dCk7XG4gIH0gZWxzZSBpZiAoaXNOdW1iZXIoaW5wdXQpKSB7XG4gICAgcmV0dXJuIEZpeGVkT2Zmc2V0Wm9uZS5pbnN0YW5jZShpbnB1dCk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIGlucHV0ID09PSBcIm9iamVjdFwiICYmIGlucHV0Lm9mZnNldCAmJiB0eXBlb2YgaW5wdXQub2Zmc2V0ID09PSBcIm51bWJlclwiKSB7XG4gICAgLy8gVGhpcyBpcyBkdW1iLCBidXQgdGhlIGluc3RhbmNlb2YgY2hlY2sgYWJvdmUgZG9lc24ndCBzZWVtIHRvIHJlYWxseSB3b3JrXG4gICAgLy8gc28gd2UncmUgZHVjayBjaGVja2luZyBpdFxuICAgIHJldHVybiBpbnB1dDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbmV3IEludmFsaWRab25lKGlucHV0KTtcbiAgfVxufVxuIiwgImltcG9ydCBTeXN0ZW1ab25lIGZyb20gXCIuL3pvbmVzL3N5c3RlbVpvbmUuanNcIjtcbmltcG9ydCBJQU5BWm9uZSBmcm9tIFwiLi96b25lcy9JQU5BWm9uZS5qc1wiO1xuaW1wb3J0IExvY2FsZSBmcm9tIFwiLi9pbXBsL2xvY2FsZS5qc1wiO1xuXG5pbXBvcnQgeyBub3JtYWxpemVab25lIH0gZnJvbSBcIi4vaW1wbC96b25lVXRpbC5qc1wiO1xuXG5sZXQgbm93ID0gKCkgPT4gRGF0ZS5ub3coKSxcbiAgZGVmYXVsdFpvbmUgPSBcInN5c3RlbVwiLFxuICBkZWZhdWx0TG9jYWxlID0gbnVsbCxcbiAgZGVmYXVsdE51bWJlcmluZ1N5c3RlbSA9IG51bGwsXG4gIGRlZmF1bHRPdXRwdXRDYWxlbmRhciA9IG51bGwsXG4gIHRocm93T25JbnZhbGlkO1xuXG4vKipcbiAqIFNldHRpbmdzIGNvbnRhaW5zIHN0YXRpYyBnZXR0ZXJzIGFuZCBzZXR0ZXJzIHRoYXQgY29udHJvbCBMdXhvbidzIG92ZXJhbGwgYmVoYXZpb3IuIEx1eG9uIGlzIGEgc2ltcGxlIGxpYnJhcnkgd2l0aCBmZXcgb3B0aW9ucywgYnV0IHRoZSBvbmVzIGl0IGRvZXMgaGF2ZSBsaXZlIGhlcmUuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNldHRpbmdzIHtcbiAgLyoqXG4gICAqIEdldCB0aGUgY2FsbGJhY2sgZm9yIHJldHVybmluZyB0aGUgY3VycmVudCB0aW1lc3RhbXAuXG4gICAqIEB0eXBlIHtmdW5jdGlvbn1cbiAgICovXG4gIHN0YXRpYyBnZXQgbm93KCkge1xuICAgIHJldHVybiBub3c7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBjYWxsYmFjayBmb3IgcmV0dXJuaW5nIHRoZSBjdXJyZW50IHRpbWVzdGFtcC5cbiAgICogVGhlIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gYSBudW1iZXIsIHdoaWNoIHdpbGwgYmUgaW50ZXJwcmV0ZWQgYXMgYW4gRXBvY2ggbWlsbGlzZWNvbmQgY291bnRcbiAgICogQHR5cGUge2Z1bmN0aW9ufVxuICAgKiBAZXhhbXBsZSBTZXR0aW5ncy5ub3cgPSAoKSA9PiBEYXRlLm5vdygpICsgMzAwMCAvLyBwcmV0ZW5kIGl0IGlzIDMgc2Vjb25kcyBpbiB0aGUgZnV0dXJlXG4gICAqIEBleGFtcGxlIFNldHRpbmdzLm5vdyA9ICgpID0+IDAgLy8gYWx3YXlzIHByZXRlbmQgaXQncyBKYW4gMSwgMTk3MCBhdCBtaWRuaWdodCBpbiBVVEMgdGltZVxuICAgKi9cbiAgc3RhdGljIHNldCBub3cobikge1xuICAgIG5vdyA9IG47XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBkZWZhdWx0IHRpbWUgem9uZSB0byBjcmVhdGUgRGF0ZVRpbWVzIGluLiBEb2VzIG5vdCBhZmZlY3QgZXhpc3RpbmcgaW5zdGFuY2VzLlxuICAgKiBVc2UgdGhlIHZhbHVlIFwic3lzdGVtXCIgdG8gcmVzZXQgdGhpcyB2YWx1ZSB0byB0aGUgc3lzdGVtJ3MgdGltZSB6b25lLlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKi9cbiAgc3RhdGljIHNldCBkZWZhdWx0Wm9uZSh6b25lKSB7XG4gICAgZGVmYXVsdFpvbmUgPSB6b25lO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZGVmYXVsdCB0aW1lIHpvbmUgb2JqZWN0IGN1cnJlbnRseSB1c2VkIHRvIGNyZWF0ZSBEYXRlVGltZXMuIERvZXMgbm90IGFmZmVjdCBleGlzdGluZyBpbnN0YW5jZXMuXG4gICAqIFRoZSBkZWZhdWx0IHZhbHVlIGlzIHRoZSBzeXN0ZW0ncyB0aW1lIHpvbmUgKHRoZSBvbmUgc2V0IG9uIHRoZSBtYWNoaW5lIHRoYXQgcnVucyB0aGlzIGNvZGUpLlxuICAgKiBAdHlwZSB7Wm9uZX1cbiAgICovXG4gIHN0YXRpYyBnZXQgZGVmYXVsdFpvbmUoKSB7XG4gICAgcmV0dXJuIG5vcm1hbGl6ZVpvbmUoZGVmYXVsdFpvbmUsIFN5c3RlbVpvbmUuaW5zdGFuY2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZGVmYXVsdCBsb2NhbGUgdG8gY3JlYXRlIERhdGVUaW1lcyB3aXRoLiBEb2VzIG5vdCBhZmZlY3QgZXhpc3RpbmcgaW5zdGFuY2VzLlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKi9cbiAgc3RhdGljIGdldCBkZWZhdWx0TG9jYWxlKCkge1xuICAgIHJldHVybiBkZWZhdWx0TG9jYWxlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgZGVmYXVsdCBsb2NhbGUgdG8gY3JlYXRlIERhdGVUaW1lcyB3aXRoLiBEb2VzIG5vdCBhZmZlY3QgZXhpc3RpbmcgaW5zdGFuY2VzLlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKi9cbiAgc3RhdGljIHNldCBkZWZhdWx0TG9jYWxlKGxvY2FsZSkge1xuICAgIGRlZmF1bHRMb2NhbGUgPSBsb2NhbGU7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBkZWZhdWx0IG51bWJlcmluZyBzeXN0ZW0gdG8gY3JlYXRlIERhdGVUaW1lcyB3aXRoLiBEb2VzIG5vdCBhZmZlY3QgZXhpc3RpbmcgaW5zdGFuY2VzLlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKi9cbiAgc3RhdGljIGdldCBkZWZhdWx0TnVtYmVyaW5nU3lzdGVtKCkge1xuICAgIHJldHVybiBkZWZhdWx0TnVtYmVyaW5nU3lzdGVtO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgZGVmYXVsdCBudW1iZXJpbmcgc3lzdGVtIHRvIGNyZWF0ZSBEYXRlVGltZXMgd2l0aC4gRG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGluc3RhbmNlcy5cbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIHN0YXRpYyBzZXQgZGVmYXVsdE51bWJlcmluZ1N5c3RlbShudW1iZXJpbmdTeXN0ZW0pIHtcbiAgICBkZWZhdWx0TnVtYmVyaW5nU3lzdGVtID0gbnVtYmVyaW5nU3lzdGVtO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZGVmYXVsdCBvdXRwdXQgY2FsZW5kYXIgdG8gY3JlYXRlIERhdGVUaW1lcyB3aXRoLiBEb2VzIG5vdCBhZmZlY3QgZXhpc3RpbmcgaW5zdGFuY2VzLlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKi9cbiAgc3RhdGljIGdldCBkZWZhdWx0T3V0cHV0Q2FsZW5kYXIoKSB7XG4gICAgcmV0dXJuIGRlZmF1bHRPdXRwdXRDYWxlbmRhcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGRlZmF1bHQgb3V0cHV0IGNhbGVuZGFyIHRvIGNyZWF0ZSBEYXRlVGltZXMgd2l0aC4gRG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGluc3RhbmNlcy5cbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIHN0YXRpYyBzZXQgZGVmYXVsdE91dHB1dENhbGVuZGFyKG91dHB1dENhbGVuZGFyKSB7XG4gICAgZGVmYXVsdE91dHB1dENhbGVuZGFyID0gb3V0cHV0Q2FsZW5kYXI7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHdoZXRoZXIgTHV4b24gd2lsbCB0aHJvdyB3aGVuIGl0IGVuY291bnRlcnMgaW52YWxpZCBEYXRlVGltZXMsIER1cmF0aW9ucywgb3IgSW50ZXJ2YWxzXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKi9cbiAgc3RhdGljIGdldCB0aHJvd09uSW52YWxpZCgpIHtcbiAgICByZXR1cm4gdGhyb3dPbkludmFsaWQ7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHdoZXRoZXIgTHV4b24gd2lsbCB0aHJvdyB3aGVuIGl0IGVuY291bnRlcnMgaW52YWxpZCBEYXRlVGltZXMsIER1cmF0aW9ucywgb3IgSW50ZXJ2YWxzXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKi9cbiAgc3RhdGljIHNldCB0aHJvd09uSW52YWxpZCh0KSB7XG4gICAgdGhyb3dPbkludmFsaWQgPSB0O1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0IEx1eG9uJ3MgZ2xvYmFsIGNhY2hlcy4gU2hvdWxkIG9ubHkgYmUgbmVjZXNzYXJ5IGluIHRlc3Rpbmcgc2NlbmFyaW9zLlxuICAgKiBAcmV0dXJuIHt2b2lkfVxuICAgKi9cbiAgc3RhdGljIHJlc2V0Q2FjaGVzKCkge1xuICAgIExvY2FsZS5yZXNldENhY2hlKCk7XG4gICAgSUFOQVpvbmUucmVzZXRDYWNoZSgpO1xuICB9XG59XG4iLCAiaW1wb3J0IHsgcGFkU3RhcnQsIHJvdW5kVG8sIGhhc1JlbGF0aXZlIH0gZnJvbSBcIi4vdXRpbC5qc1wiO1xuaW1wb3J0ICogYXMgRW5nbGlzaCBmcm9tIFwiLi9lbmdsaXNoLmpzXCI7XG5pbXBvcnQgU2V0dGluZ3MgZnJvbSBcIi4uL3NldHRpbmdzLmpzXCI7XG5pbXBvcnQgRGF0ZVRpbWUgZnJvbSBcIi4uL2RhdGV0aW1lLmpzXCI7XG5pbXBvcnQgSUFOQVpvbmUgZnJvbSBcIi4uL3pvbmVzL0lBTkFab25lLmpzXCI7XG5cbi8vIHRvZG8gLSByZW1hcCBjYWNoaW5nXG5cbmxldCBpbnRsTEZDYWNoZSA9IHt9O1xuZnVuY3Rpb24gZ2V0Q2FjaGVkTEYobG9jU3RyaW5nLCBvcHRzID0ge30pIHtcbiAgY29uc3Qga2V5ID0gSlNPTi5zdHJpbmdpZnkoW2xvY1N0cmluZywgb3B0c10pO1xuICBsZXQgZHRmID0gaW50bExGQ2FjaGVba2V5XTtcbiAgaWYgKCFkdGYpIHtcbiAgICBkdGYgPSBuZXcgSW50bC5MaXN0Rm9ybWF0KGxvY1N0cmluZywgb3B0cyk7XG4gICAgaW50bExGQ2FjaGVba2V5XSA9IGR0ZjtcbiAgfVxuICByZXR1cm4gZHRmO1xufVxuXG5sZXQgaW50bERUQ2FjaGUgPSB7fTtcbmZ1bmN0aW9uIGdldENhY2hlZERURihsb2NTdHJpbmcsIG9wdHMgPSB7fSkge1xuICBjb25zdCBrZXkgPSBKU09OLnN0cmluZ2lmeShbbG9jU3RyaW5nLCBvcHRzXSk7XG4gIGxldCBkdGYgPSBpbnRsRFRDYWNoZVtrZXldO1xuICBpZiAoIWR0Zikge1xuICAgIGR0ZiA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY1N0cmluZywgb3B0cyk7XG4gICAgaW50bERUQ2FjaGVba2V5XSA9IGR0ZjtcbiAgfVxuICByZXR1cm4gZHRmO1xufVxuXG5sZXQgaW50bE51bUNhY2hlID0ge307XG5mdW5jdGlvbiBnZXRDYWNoZWRJTkYobG9jU3RyaW5nLCBvcHRzID0ge30pIHtcbiAgY29uc3Qga2V5ID0gSlNPTi5zdHJpbmdpZnkoW2xvY1N0cmluZywgb3B0c10pO1xuICBsZXQgaW5mID0gaW50bE51bUNhY2hlW2tleV07XG4gIGlmICghaW5mKSB7XG4gICAgaW5mID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KGxvY1N0cmluZywgb3B0cyk7XG4gICAgaW50bE51bUNhY2hlW2tleV0gPSBpbmY7XG4gIH1cbiAgcmV0dXJuIGluZjtcbn1cblxubGV0IGludGxSZWxDYWNoZSA9IHt9O1xuZnVuY3Rpb24gZ2V0Q2FjaGVkUlRGKGxvY1N0cmluZywgb3B0cyA9IHt9KSB7XG4gIGNvbnN0IHsgYmFzZSwgLi4uY2FjaGVLZXlPcHRzIH0gPSBvcHRzOyAvLyBleGNsdWRlIGBiYXNlYCBmcm9tIHRoZSBvcHRpb25zXG4gIGNvbnN0IGtleSA9IEpTT04uc3RyaW5naWZ5KFtsb2NTdHJpbmcsIGNhY2hlS2V5T3B0c10pO1xuICBsZXQgaW5mID0gaW50bFJlbENhY2hlW2tleV07XG4gIGlmICghaW5mKSB7XG4gICAgaW5mID0gbmV3IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0KGxvY1N0cmluZywgb3B0cyk7XG4gICAgaW50bFJlbENhY2hlW2tleV0gPSBpbmY7XG4gIH1cbiAgcmV0dXJuIGluZjtcbn1cblxubGV0IHN5c0xvY2FsZUNhY2hlID0gbnVsbDtcbmZ1bmN0aW9uIHN5c3RlbUxvY2FsZSgpIHtcbiAgaWYgKHN5c0xvY2FsZUNhY2hlKSB7XG4gICAgcmV0dXJuIHN5c0xvY2FsZUNhY2hlO1xuICB9IGVsc2Uge1xuICAgIHN5c0xvY2FsZUNhY2hlID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoKS5yZXNvbHZlZE9wdGlvbnMoKS5sb2NhbGU7XG4gICAgcmV0dXJuIHN5c0xvY2FsZUNhY2hlO1xuICB9XG59XG5cbmZ1bmN0aW9uIHBhcnNlTG9jYWxlU3RyaW5nKGxvY2FsZVN0cikge1xuICAvLyBJIHJlYWxseSB3YW50IHRvIGF2b2lkIHdyaXRpbmcgYSBCQ1AgNDcgcGFyc2VyXG4gIC8vIHNlZSwgZS5nLiBodHRwczovL2dpdGh1Yi5jb20vd29vb3JtL2JjcC00N1xuICAvLyBJbnN0ZWFkLCB3ZSdsbCBkbyB0aGlzOlxuXG4gIC8vIGEpIGlmIHRoZSBzdHJpbmcgaGFzIG5vIC11IGV4dGVuc2lvbnMsIGp1c3QgbGVhdmUgaXQgYWxvbmVcbiAgLy8gYikgaWYgaXQgZG9lcywgdXNlIEludGwgdG8gcmVzb2x2ZSBldmVyeXRoaW5nXG4gIC8vIGMpIGlmIEludGwgZmFpbHMsIHRyeSBhZ2FpbiB3aXRob3V0IHRoZSAtdVxuXG4gIGNvbnN0IHVJbmRleCA9IGxvY2FsZVN0ci5pbmRleE9mKFwiLXUtXCIpO1xuICBpZiAodUluZGV4ID09PSAtMSkge1xuICAgIHJldHVybiBbbG9jYWxlU3RyXTtcbiAgfSBlbHNlIHtcbiAgICBsZXQgb3B0aW9ucztcbiAgICBjb25zdCBzbWFsbGVyID0gbG9jYWxlU3RyLnN1YnN0cmluZygwLCB1SW5kZXgpO1xuICAgIHRyeSB7XG4gICAgICBvcHRpb25zID0gZ2V0Q2FjaGVkRFRGKGxvY2FsZVN0cikucmVzb2x2ZWRPcHRpb25zKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgb3B0aW9ucyA9IGdldENhY2hlZERURihzbWFsbGVyKS5yZXNvbHZlZE9wdGlvbnMoKTtcbiAgICB9XG5cbiAgICBjb25zdCB7IG51bWJlcmluZ1N5c3RlbSwgY2FsZW5kYXIgfSA9IG9wdGlvbnM7XG4gICAgLy8gcmV0dXJuIHRoZSBzbWFsbGVyIG9uZSBzbyB0aGF0IHdlIGNhbiBhcHBlbmQgdGhlIGNhbGVuZGFyIGFuZCBudW1iZXJpbmcgb3ZlcnJpZGVzIHRvIGl0XG4gICAgcmV0dXJuIFtzbWFsbGVyLCBudW1iZXJpbmdTeXN0ZW0sIGNhbGVuZGFyXTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpbnRsQ29uZmlnU3RyaW5nKGxvY2FsZVN0ciwgbnVtYmVyaW5nU3lzdGVtLCBvdXRwdXRDYWxlbmRhcikge1xuICBpZiAob3V0cHV0Q2FsZW5kYXIgfHwgbnVtYmVyaW5nU3lzdGVtKSB7XG4gICAgbG9jYWxlU3RyICs9IFwiLXVcIjtcblxuICAgIGlmIChvdXRwdXRDYWxlbmRhcikge1xuICAgICAgbG9jYWxlU3RyICs9IGAtY2EtJHtvdXRwdXRDYWxlbmRhcn1gO1xuICAgIH1cblxuICAgIGlmIChudW1iZXJpbmdTeXN0ZW0pIHtcbiAgICAgIGxvY2FsZVN0ciArPSBgLW51LSR7bnVtYmVyaW5nU3lzdGVtfWA7XG4gICAgfVxuICAgIHJldHVybiBsb2NhbGVTdHI7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGxvY2FsZVN0cjtcbiAgfVxufVxuXG5mdW5jdGlvbiBtYXBNb250aHMoZikge1xuICBjb25zdCBtcyA9IFtdO1xuICBmb3IgKGxldCBpID0gMTsgaSA8PSAxMjsgaSsrKSB7XG4gICAgY29uc3QgZHQgPSBEYXRlVGltZS51dGMoMjAxNiwgaSwgMSk7XG4gICAgbXMucHVzaChmKGR0KSk7XG4gIH1cbiAgcmV0dXJuIG1zO1xufVxuXG5mdW5jdGlvbiBtYXBXZWVrZGF5cyhmKSB7XG4gIGNvbnN0IG1zID0gW107XG4gIGZvciAobGV0IGkgPSAxOyBpIDw9IDc7IGkrKykge1xuICAgIGNvbnN0IGR0ID0gRGF0ZVRpbWUudXRjKDIwMTYsIDExLCAxMyArIGkpO1xuICAgIG1zLnB1c2goZihkdCkpO1xuICB9XG4gIHJldHVybiBtcztcbn1cblxuZnVuY3Rpb24gbGlzdFN0dWZmKGxvYywgbGVuZ3RoLCBkZWZhdWx0T0ssIGVuZ2xpc2hGbiwgaW50bEZuKSB7XG4gIGNvbnN0IG1vZGUgPSBsb2MubGlzdGluZ01vZGUoZGVmYXVsdE9LKTtcblxuICBpZiAobW9kZSA9PT0gXCJlcnJvclwiKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH0gZWxzZSBpZiAobW9kZSA9PT0gXCJlblwiKSB7XG4gICAgcmV0dXJuIGVuZ2xpc2hGbihsZW5ndGgpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBpbnRsRm4obGVuZ3RoKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBzdXBwb3J0c0Zhc3ROdW1iZXJzKGxvYykge1xuICBpZiAobG9jLm51bWJlcmluZ1N5c3RlbSAmJiBsb2MubnVtYmVyaW5nU3lzdGVtICE9PSBcImxhdG5cIikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gKFxuICAgICAgbG9jLm51bWJlcmluZ1N5c3RlbSA9PT0gXCJsYXRuXCIgfHxcbiAgICAgICFsb2MubG9jYWxlIHx8XG4gICAgICBsb2MubG9jYWxlLnN0YXJ0c1dpdGgoXCJlblwiKSB8fFxuICAgICAgbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jLmludGwpLnJlc29sdmVkT3B0aW9ucygpLm51bWJlcmluZ1N5c3RlbSA9PT0gXCJsYXRuXCJcbiAgICApO1xuICB9XG59XG5cbi8qKlxuICogQHByaXZhdGVcbiAqL1xuXG5jbGFzcyBQb2x5TnVtYmVyRm9ybWF0dGVyIHtcbiAgY29uc3RydWN0b3IoaW50bCwgZm9yY2VTaW1wbGUsIG9wdHMpIHtcbiAgICB0aGlzLnBhZFRvID0gb3B0cy5wYWRUbyB8fCAwO1xuICAgIHRoaXMuZmxvb3IgPSBvcHRzLmZsb29yIHx8IGZhbHNlO1xuXG4gICAgY29uc3QgeyBwYWRUbywgZmxvb3IsIC4uLm90aGVyT3B0cyB9ID0gb3B0cztcblxuICAgIGlmICghZm9yY2VTaW1wbGUgfHwgT2JqZWN0LmtleXMob3RoZXJPcHRzKS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBpbnRsT3B0cyA9IHsgdXNlR3JvdXBpbmc6IGZhbHNlLCAuLi5vcHRzIH07XG4gICAgICBpZiAob3B0cy5wYWRUbyA+IDApIGludGxPcHRzLm1pbmltdW1JbnRlZ2VyRGlnaXRzID0gb3B0cy5wYWRUbztcbiAgICAgIHRoaXMuaW5mID0gZ2V0Q2FjaGVkSU5GKGludGwsIGludGxPcHRzKTtcbiAgICB9XG4gIH1cblxuICBmb3JtYXQoaSkge1xuICAgIGlmICh0aGlzLmluZikge1xuICAgICAgY29uc3QgZml4ZWQgPSB0aGlzLmZsb29yID8gTWF0aC5mbG9vcihpKSA6IGk7XG4gICAgICByZXR1cm4gdGhpcy5pbmYuZm9ybWF0KGZpeGVkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gdG8gbWF0Y2ggdGhlIGJyb3dzZXIncyBudW1iZXJmb3JtYXR0ZXIgZGVmYXVsdHNcbiAgICAgIGNvbnN0IGZpeGVkID0gdGhpcy5mbG9vciA/IE1hdGguZmxvb3IoaSkgOiByb3VuZFRvKGksIDMpO1xuICAgICAgcmV0dXJuIHBhZFN0YXJ0KGZpeGVkLCB0aGlzLnBhZFRvKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5cbmNsYXNzIFBvbHlEYXRlRm9ybWF0dGVyIHtcbiAgY29uc3RydWN0b3IoZHQsIGludGwsIG9wdHMpIHtcbiAgICB0aGlzLm9wdHMgPSBvcHRzO1xuXG4gICAgbGV0IHo7XG4gICAgaWYgKGR0LnpvbmUuaXNVbml2ZXJzYWwpIHtcbiAgICAgIC8vIFVUQy04IG9yIEV0Yy9VVEMtOCBhcmUgbm90IHBhcnQgb2YgdHpkYXRhLCBvbmx5IEV0Yy9HTVQrOCBhbmQgdGhlIGxpa2UuXG4gICAgICAvLyBUaGF0IGlzIHdoeSBmaXhlZC1vZmZzZXQgVFogaXMgc2V0IHRvIHRoYXQgdW5sZXNzIGl0IGlzOlxuICAgICAgLy8gMS4gUmVwcmVzZW50aW5nIG9mZnNldCAwIHdoZW4gVVRDIGlzIHVzZWQgdG8gbWFpbnRhaW4gcHJldmlvdXMgYmVoYXZpb3IgYW5kIGRvZXMgbm90IGJlY29tZSBHTVQuXG4gICAgICAvLyAyLiBVbnN1cHBvcnRlZCBieSB0aGUgYnJvd3NlcjpcbiAgICAgIC8vICAgIC0gc29tZSBkbyBub3Qgc3VwcG9ydCBFdGMvXG4gICAgICAvLyAgICAtIDwgRXRjL0dNVC0xNCwgPiBFdGMvR01UKzEyLCBhbmQgMzAtbWludXRlIG9yIDQ1LW1pbnV0ZSBvZmZzZXRzIGFyZSBub3QgcGFydCBvZiB0emRhdGFcbiAgICAgIGNvbnN0IGdtdE9mZnNldCA9IC0xICogKGR0Lm9mZnNldCAvIDYwKTtcbiAgICAgIGNvbnN0IG9mZnNldFogPSBnbXRPZmZzZXQgPj0gMCA/IGBFdGMvR01UKyR7Z210T2Zmc2V0fWAgOiBgRXRjL0dNVCR7Z210T2Zmc2V0fWA7XG4gICAgICBpZiAoZHQub2Zmc2V0ICE9PSAwICYmIElBTkFab25lLmNyZWF0ZShvZmZzZXRaKS52YWxpZCkge1xuICAgICAgICB6ID0gb2Zmc2V0WjtcbiAgICAgICAgdGhpcy5kdCA9IGR0O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gTm90IGFsbCBmaXhlZC1vZmZzZXQgem9uZXMgbGlrZSBFdGMvKzQ6MzAgYXJlIHByZXNlbnQgaW4gdHpkYXRhLlxuICAgICAgICAvLyBTbyB3ZSBoYXZlIHRvIG1ha2UgZG8uIFR3byBjYXNlczpcbiAgICAgICAgLy8gMS4gVGhlIGZvcm1hdCBvcHRpb25zIHRlbGwgdXMgdG8gc2hvdyB0aGUgem9uZS4gV2UgY2FuJ3QgZG8gdGhhdCwgc28gdGhlIGJlc3RcbiAgICAgICAgLy8gd2UgY2FuIGRvIGlzIGZvcm1hdCB0aGUgZGF0ZSBpbiBVVEMuXG4gICAgICAgIC8vIDIuIFRoZSBmb3JtYXQgb3B0aW9ucyBkb24ndCB0ZWxsIHVzIHRvIHNob3cgdGhlIHpvbmUuIFRoZW4gd2UgY2FuIGFkanVzdCB0aGVtXG4gICAgICAgIC8vIHRoZSB0aW1lIGFuZCB0ZWxsIHRoZSBmb3JtYXR0ZXIgdG8gc2hvdyBpdCB0byB1cyBpbiBVVEMsIHNvIHRoYXQgdGhlIHRpbWUgaXMgcmlnaHRcbiAgICAgICAgLy8gYW5kIHRoZSBiYWQgem9uZSBkb2Vzbid0IHNob3cgdXAuXG4gICAgICAgIHogPSBcIlVUQ1wiO1xuICAgICAgICBpZiAob3B0cy50aW1lWm9uZU5hbWUpIHtcbiAgICAgICAgICB0aGlzLmR0ID0gZHQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5kdCA9IGR0Lm9mZnNldCA9PT0gMCA/IGR0IDogRGF0ZVRpbWUuZnJvbU1pbGxpcyhkdC50cyArIGR0Lm9mZnNldCAqIDYwICogMTAwMCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGR0LnpvbmUudHlwZSA9PT0gXCJzeXN0ZW1cIikge1xuICAgICAgdGhpcy5kdCA9IGR0O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmR0ID0gZHQ7XG4gICAgICB6ID0gZHQuem9uZS5uYW1lO1xuICAgIH1cblxuICAgIGNvbnN0IGludGxPcHRzID0geyAuLi50aGlzLm9wdHMgfTtcbiAgICBpZiAoeikge1xuICAgICAgaW50bE9wdHMudGltZVpvbmUgPSB6O1xuICAgIH1cbiAgICB0aGlzLmR0ZiA9IGdldENhY2hlZERURihpbnRsLCBpbnRsT3B0cyk7XG4gIH1cblxuICBmb3JtYXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZHRmLmZvcm1hdCh0aGlzLmR0LnRvSlNEYXRlKCkpO1xuICB9XG5cbiAgZm9ybWF0VG9QYXJ0cygpIHtcbiAgICByZXR1cm4gdGhpcy5kdGYuZm9ybWF0VG9QYXJ0cyh0aGlzLmR0LnRvSlNEYXRlKCkpO1xuICB9XG5cbiAgcmVzb2x2ZWRPcHRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLmR0Zi5yZXNvbHZlZE9wdGlvbnMoKTtcbiAgfVxufVxuXG4vKipcbiAqIEBwcml2YXRlXG4gKi9cbmNsYXNzIFBvbHlSZWxGb3JtYXR0ZXIge1xuICBjb25zdHJ1Y3RvcihpbnRsLCBpc0VuZ2xpc2gsIG9wdHMpIHtcbiAgICB0aGlzLm9wdHMgPSB7IHN0eWxlOiBcImxvbmdcIiwgLi4ub3B0cyB9O1xuICAgIGlmICghaXNFbmdsaXNoICYmIGhhc1JlbGF0aXZlKCkpIHtcbiAgICAgIHRoaXMucnRmID0gZ2V0Q2FjaGVkUlRGKGludGwsIG9wdHMpO1xuICAgIH1cbiAgfVxuXG4gIGZvcm1hdChjb3VudCwgdW5pdCkge1xuICAgIGlmICh0aGlzLnJ0Zikge1xuICAgICAgcmV0dXJuIHRoaXMucnRmLmZvcm1hdChjb3VudCwgdW5pdCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBFbmdsaXNoLmZvcm1hdFJlbGF0aXZlVGltZSh1bml0LCBjb3VudCwgdGhpcy5vcHRzLm51bWVyaWMsIHRoaXMub3B0cy5zdHlsZSAhPT0gXCJsb25nXCIpO1xuICAgIH1cbiAgfVxuXG4gIGZvcm1hdFRvUGFydHMoY291bnQsIHVuaXQpIHtcbiAgICBpZiAodGhpcy5ydGYpIHtcbiAgICAgIHJldHVybiB0aGlzLnJ0Zi5mb3JtYXRUb1BhcnRzKGNvdW50LCB1bml0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEBwcml2YXRlXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTG9jYWxlIHtcbiAgc3RhdGljIGZyb21PcHRzKG9wdHMpIHtcbiAgICByZXR1cm4gTG9jYWxlLmNyZWF0ZShvcHRzLmxvY2FsZSwgb3B0cy5udW1iZXJpbmdTeXN0ZW0sIG9wdHMub3V0cHV0Q2FsZW5kYXIsIG9wdHMuZGVmYXVsdFRvRU4pO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZShsb2NhbGUsIG51bWJlcmluZ1N5c3RlbSwgb3V0cHV0Q2FsZW5kYXIsIGRlZmF1bHRUb0VOID0gZmFsc2UpIHtcbiAgICBjb25zdCBzcGVjaWZpZWRMb2NhbGUgPSBsb2NhbGUgfHwgU2V0dGluZ3MuZGVmYXVsdExvY2FsZTtcbiAgICAvLyB0aGUgc3lzdGVtIGxvY2FsZSBpcyB1c2VmdWwgZm9yIGh1bWFuIHJlYWRhYmxlIHN0cmluZ3MgYnV0IGFubm95aW5nIGZvciBwYXJzaW5nL2Zvcm1hdHRpbmcga25vd24gZm9ybWF0c1xuICAgIGNvbnN0IGxvY2FsZVIgPSBzcGVjaWZpZWRMb2NhbGUgfHwgKGRlZmF1bHRUb0VOID8gXCJlbi1VU1wiIDogc3lzdGVtTG9jYWxlKCkpO1xuICAgIGNvbnN0IG51bWJlcmluZ1N5c3RlbVIgPSBudW1iZXJpbmdTeXN0ZW0gfHwgU2V0dGluZ3MuZGVmYXVsdE51bWJlcmluZ1N5c3RlbTtcbiAgICBjb25zdCBvdXRwdXRDYWxlbmRhclIgPSBvdXRwdXRDYWxlbmRhciB8fCBTZXR0aW5ncy5kZWZhdWx0T3V0cHV0Q2FsZW5kYXI7XG4gICAgcmV0dXJuIG5ldyBMb2NhbGUobG9jYWxlUiwgbnVtYmVyaW5nU3lzdGVtUiwgb3V0cHV0Q2FsZW5kYXJSLCBzcGVjaWZpZWRMb2NhbGUpO1xuICB9XG5cbiAgc3RhdGljIHJlc2V0Q2FjaGUoKSB7XG4gICAgc3lzTG9jYWxlQ2FjaGUgPSBudWxsO1xuICAgIGludGxEVENhY2hlID0ge307XG4gICAgaW50bE51bUNhY2hlID0ge307XG4gICAgaW50bFJlbENhY2hlID0ge307XG4gIH1cblxuICBzdGF0aWMgZnJvbU9iamVjdCh7IGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtLCBvdXRwdXRDYWxlbmRhciB9ID0ge30pIHtcbiAgICByZXR1cm4gTG9jYWxlLmNyZWF0ZShsb2NhbGUsIG51bWJlcmluZ1N5c3RlbSwgb3V0cHV0Q2FsZW5kYXIpO1xuICB9XG5cbiAgY29uc3RydWN0b3IobG9jYWxlLCBudW1iZXJpbmcsIG91dHB1dENhbGVuZGFyLCBzcGVjaWZpZWRMb2NhbGUpIHtcbiAgICBjb25zdCBbcGFyc2VkTG9jYWxlLCBwYXJzZWROdW1iZXJpbmdTeXN0ZW0sIHBhcnNlZE91dHB1dENhbGVuZGFyXSA9IHBhcnNlTG9jYWxlU3RyaW5nKGxvY2FsZSk7XG5cbiAgICB0aGlzLmxvY2FsZSA9IHBhcnNlZExvY2FsZTtcbiAgICB0aGlzLm51bWJlcmluZ1N5c3RlbSA9IG51bWJlcmluZyB8fCBwYXJzZWROdW1iZXJpbmdTeXN0ZW0gfHwgbnVsbDtcbiAgICB0aGlzLm91dHB1dENhbGVuZGFyID0gb3V0cHV0Q2FsZW5kYXIgfHwgcGFyc2VkT3V0cHV0Q2FsZW5kYXIgfHwgbnVsbDtcbiAgICB0aGlzLmludGwgPSBpbnRsQ29uZmlnU3RyaW5nKHRoaXMubG9jYWxlLCB0aGlzLm51bWJlcmluZ1N5c3RlbSwgdGhpcy5vdXRwdXRDYWxlbmRhcik7XG5cbiAgICB0aGlzLndlZWtkYXlzQ2FjaGUgPSB7IGZvcm1hdDoge30sIHN0YW5kYWxvbmU6IHt9IH07XG4gICAgdGhpcy5tb250aHNDYWNoZSA9IHsgZm9ybWF0OiB7fSwgc3RhbmRhbG9uZToge30gfTtcbiAgICB0aGlzLm1lcmlkaWVtQ2FjaGUgPSBudWxsO1xuICAgIHRoaXMuZXJhQ2FjaGUgPSB7fTtcblxuICAgIHRoaXMuc3BlY2lmaWVkTG9jYWxlID0gc3BlY2lmaWVkTG9jYWxlO1xuICAgIHRoaXMuZmFzdE51bWJlcnNDYWNoZWQgPSBudWxsO1xuICB9XG5cbiAgZ2V0IGZhc3ROdW1iZXJzKCkge1xuICAgIGlmICh0aGlzLmZhc3ROdW1iZXJzQ2FjaGVkID09IG51bGwpIHtcbiAgICAgIHRoaXMuZmFzdE51bWJlcnNDYWNoZWQgPSBzdXBwb3J0c0Zhc3ROdW1iZXJzKHRoaXMpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmZhc3ROdW1iZXJzQ2FjaGVkO1xuICB9XG5cbiAgbGlzdGluZ01vZGUoKSB7XG4gICAgY29uc3QgaXNBY3R1YWxseUVuID0gdGhpcy5pc0VuZ2xpc2goKTtcbiAgICBjb25zdCBoYXNOb1dlaXJkbmVzcyA9XG4gICAgICAodGhpcy5udW1iZXJpbmdTeXN0ZW0gPT09IG51bGwgfHwgdGhpcy5udW1iZXJpbmdTeXN0ZW0gPT09IFwibGF0blwiKSAmJlxuICAgICAgKHRoaXMub3V0cHV0Q2FsZW5kYXIgPT09IG51bGwgfHwgdGhpcy5vdXRwdXRDYWxlbmRhciA9PT0gXCJncmVnb3J5XCIpO1xuICAgIHJldHVybiBpc0FjdHVhbGx5RW4gJiYgaGFzTm9XZWlyZG5lc3MgPyBcImVuXCIgOiBcImludGxcIjtcbiAgfVxuXG4gIGNsb25lKGFsdHMpIHtcbiAgICBpZiAoIWFsdHMgfHwgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoYWx0cykubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIExvY2FsZS5jcmVhdGUoXG4gICAgICAgIGFsdHMubG9jYWxlIHx8IHRoaXMuc3BlY2lmaWVkTG9jYWxlLFxuICAgICAgICBhbHRzLm51bWJlcmluZ1N5c3RlbSB8fCB0aGlzLm51bWJlcmluZ1N5c3RlbSxcbiAgICAgICAgYWx0cy5vdXRwdXRDYWxlbmRhciB8fCB0aGlzLm91dHB1dENhbGVuZGFyLFxuICAgICAgICBhbHRzLmRlZmF1bHRUb0VOIHx8IGZhbHNlXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHJlZGVmYXVsdFRvRU4oYWx0cyA9IHt9KSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoeyAuLi5hbHRzLCBkZWZhdWx0VG9FTjogdHJ1ZSB9KTtcbiAgfVxuXG4gIHJlZGVmYXVsdFRvU3lzdGVtKGFsdHMgPSB7fSkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKHsgLi4uYWx0cywgZGVmYXVsdFRvRU46IGZhbHNlIH0pO1xuICB9XG5cbiAgbW9udGhzKGxlbmd0aCwgZm9ybWF0ID0gZmFsc2UsIGRlZmF1bHRPSyA9IHRydWUpIHtcbiAgICByZXR1cm4gbGlzdFN0dWZmKHRoaXMsIGxlbmd0aCwgZGVmYXVsdE9LLCBFbmdsaXNoLm1vbnRocywgKCkgPT4ge1xuICAgICAgY29uc3QgaW50bCA9IGZvcm1hdCA/IHsgbW9udGg6IGxlbmd0aCwgZGF5OiBcIm51bWVyaWNcIiB9IDogeyBtb250aDogbGVuZ3RoIH0sXG4gICAgICAgIGZvcm1hdFN0ciA9IGZvcm1hdCA/IFwiZm9ybWF0XCIgOiBcInN0YW5kYWxvbmVcIjtcbiAgICAgIGlmICghdGhpcy5tb250aHNDYWNoZVtmb3JtYXRTdHJdW2xlbmd0aF0pIHtcbiAgICAgICAgdGhpcy5tb250aHNDYWNoZVtmb3JtYXRTdHJdW2xlbmd0aF0gPSBtYXBNb250aHMoKGR0KSA9PiB0aGlzLmV4dHJhY3QoZHQsIGludGwsIFwibW9udGhcIikpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMubW9udGhzQ2FjaGVbZm9ybWF0U3RyXVtsZW5ndGhdO1xuICAgIH0pO1xuICB9XG5cbiAgd2Vla2RheXMobGVuZ3RoLCBmb3JtYXQgPSBmYWxzZSwgZGVmYXVsdE9LID0gdHJ1ZSkge1xuICAgIHJldHVybiBsaXN0U3R1ZmYodGhpcywgbGVuZ3RoLCBkZWZhdWx0T0ssIEVuZ2xpc2gud2Vla2RheXMsICgpID0+IHtcbiAgICAgIGNvbnN0IGludGwgPSBmb3JtYXRcbiAgICAgICAgICA/IHsgd2Vla2RheTogbGVuZ3RoLCB5ZWFyOiBcIm51bWVyaWNcIiwgbW9udGg6IFwibG9uZ1wiLCBkYXk6IFwibnVtZXJpY1wiIH1cbiAgICAgICAgICA6IHsgd2Vla2RheTogbGVuZ3RoIH0sXG4gICAgICAgIGZvcm1hdFN0ciA9IGZvcm1hdCA/IFwiZm9ybWF0XCIgOiBcInN0YW5kYWxvbmVcIjtcbiAgICAgIGlmICghdGhpcy53ZWVrZGF5c0NhY2hlW2Zvcm1hdFN0cl1bbGVuZ3RoXSkge1xuICAgICAgICB0aGlzLndlZWtkYXlzQ2FjaGVbZm9ybWF0U3RyXVtsZW5ndGhdID0gbWFwV2Vla2RheXMoKGR0KSA9PlxuICAgICAgICAgIHRoaXMuZXh0cmFjdChkdCwgaW50bCwgXCJ3ZWVrZGF5XCIpXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy53ZWVrZGF5c0NhY2hlW2Zvcm1hdFN0cl1bbGVuZ3RoXTtcbiAgICB9KTtcbiAgfVxuXG4gIG1lcmlkaWVtcyhkZWZhdWx0T0sgPSB0cnVlKSB7XG4gICAgcmV0dXJuIGxpc3RTdHVmZihcbiAgICAgIHRoaXMsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICBkZWZhdWx0T0ssXG4gICAgICAoKSA9PiBFbmdsaXNoLm1lcmlkaWVtcyxcbiAgICAgICgpID0+IHtcbiAgICAgICAgLy8gSW4gdGhlb3J5IHRoZXJlIGNvdWxkIGJlIGFyaWJpdHJhcnkgZGF5IHBlcmlvZHMuIFdlJ3JlIGdvbm5hIGFzc3VtZSB0aGVyZSBhcmUgZXhhY3RseSB0d29cbiAgICAgICAgLy8gZm9yIEFNIGFuZCBQTS4gVGhpcyBpcyBwcm9iYWJseSB3cm9uZywgYnV0IGl0J3MgbWFrZXMgcGFyc2luZyB3YXkgZWFzaWVyLlxuICAgICAgICBpZiAoIXRoaXMubWVyaWRpZW1DYWNoZSkge1xuICAgICAgICAgIGNvbnN0IGludGwgPSB7IGhvdXI6IFwibnVtZXJpY1wiLCBob3VyQ3ljbGU6IFwiaDEyXCIgfTtcbiAgICAgICAgICB0aGlzLm1lcmlkaWVtQ2FjaGUgPSBbRGF0ZVRpbWUudXRjKDIwMTYsIDExLCAxMywgOSksIERhdGVUaW1lLnV0YygyMDE2LCAxMSwgMTMsIDE5KV0ubWFwKFxuICAgICAgICAgICAgKGR0KSA9PiB0aGlzLmV4dHJhY3QoZHQsIGludGwsIFwiZGF5cGVyaW9kXCIpXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLm1lcmlkaWVtQ2FjaGU7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIGVyYXMobGVuZ3RoLCBkZWZhdWx0T0sgPSB0cnVlKSB7XG4gICAgcmV0dXJuIGxpc3RTdHVmZih0aGlzLCBsZW5ndGgsIGRlZmF1bHRPSywgRW5nbGlzaC5lcmFzLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbnRsID0geyBlcmE6IGxlbmd0aCB9O1xuXG4gICAgICAvLyBUaGlzIGlzIHByb2JsZW1hdGljLiBEaWZmZXJlbnQgY2FsZW5kYXJzIGFyZSBnb2luZyB0byBkZWZpbmUgZXJhcyB0b3RhbGx5IGRpZmZlcmVudGx5LiBXaGF0IEkgbmVlZCBpcyB0aGUgbWluaW11bSBzZXQgb2YgZGF0ZXNcbiAgICAgIC8vIHRvIGRlZmluaXRlbHkgZW51bWVyYXRlIHRoZW0uXG4gICAgICBpZiAoIXRoaXMuZXJhQ2FjaGVbbGVuZ3RoXSkge1xuICAgICAgICB0aGlzLmVyYUNhY2hlW2xlbmd0aF0gPSBbRGF0ZVRpbWUudXRjKC00MCwgMSwgMSksIERhdGVUaW1lLnV0YygyMDE3LCAxLCAxKV0ubWFwKChkdCkgPT5cbiAgICAgICAgICB0aGlzLmV4dHJhY3QoZHQsIGludGwsIFwiZXJhXCIpXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLmVyYUNhY2hlW2xlbmd0aF07XG4gICAgfSk7XG4gIH1cblxuICBleHRyYWN0KGR0LCBpbnRsT3B0cywgZmllbGQpIHtcbiAgICBjb25zdCBkZiA9IHRoaXMuZHRGb3JtYXR0ZXIoZHQsIGludGxPcHRzKSxcbiAgICAgIHJlc3VsdHMgPSBkZi5mb3JtYXRUb1BhcnRzKCksXG4gICAgICBtYXRjaGluZyA9IHJlc3VsdHMuZmluZCgobSkgPT4gbS50eXBlLnRvTG93ZXJDYXNlKCkgPT09IGZpZWxkKTtcbiAgICByZXR1cm4gbWF0Y2hpbmcgPyBtYXRjaGluZy52YWx1ZSA6IG51bGw7XG4gIH1cblxuICBudW1iZXJGb3JtYXR0ZXIob3B0cyA9IHt9KSB7XG4gICAgLy8gdGhpcyBmb3JjZXNpbXBsZSBvcHRpb24gaXMgbmV2ZXIgdXNlZCAodGhlIG9ubHkgY2FsbGVyIHNob3J0LWNpcmN1aXRzIG9uIGl0LCBidXQgaXQgc2VlbXMgc2FmZXIgdG8gbGVhdmUpXG4gICAgLy8gKGluIGNvbnRyYXN0LCB0aGUgcmVzdCBvZiB0aGUgY29uZGl0aW9uIGlzIHVzZWQgaGVhdmlseSlcbiAgICByZXR1cm4gbmV3IFBvbHlOdW1iZXJGb3JtYXR0ZXIodGhpcy5pbnRsLCBvcHRzLmZvcmNlU2ltcGxlIHx8IHRoaXMuZmFzdE51bWJlcnMsIG9wdHMpO1xuICB9XG5cbiAgZHRGb3JtYXR0ZXIoZHQsIGludGxPcHRzID0ge30pIHtcbiAgICByZXR1cm4gbmV3IFBvbHlEYXRlRm9ybWF0dGVyKGR0LCB0aGlzLmludGwsIGludGxPcHRzKTtcbiAgfVxuXG4gIHJlbEZvcm1hdHRlcihvcHRzID0ge30pIHtcbiAgICByZXR1cm4gbmV3IFBvbHlSZWxGb3JtYXR0ZXIodGhpcy5pbnRsLCB0aGlzLmlzRW5nbGlzaCgpLCBvcHRzKTtcbiAgfVxuXG4gIGxpc3RGb3JtYXR0ZXIob3B0cyA9IHt9KSB7XG4gICAgcmV0dXJuIGdldENhY2hlZExGKHRoaXMuaW50bCwgb3B0cyk7XG4gIH1cblxuICBpc0VuZ2xpc2goKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMubG9jYWxlID09PSBcImVuXCIgfHxcbiAgICAgIHRoaXMubG9jYWxlLnRvTG93ZXJDYXNlKCkgPT09IFwiZW4tdXNcIiB8fFxuICAgICAgbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQodGhpcy5pbnRsKS5yZXNvbHZlZE9wdGlvbnMoKS5sb2NhbGUuc3RhcnRzV2l0aChcImVuLXVzXCIpXG4gICAgKTtcbiAgfVxuXG4gIGVxdWFscyhvdGhlcikge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmxvY2FsZSA9PT0gb3RoZXIubG9jYWxlICYmXG4gICAgICB0aGlzLm51bWJlcmluZ1N5c3RlbSA9PT0gb3RoZXIubnVtYmVyaW5nU3lzdGVtICYmXG4gICAgICB0aGlzLm91dHB1dENhbGVuZGFyID09PSBvdGhlci5vdXRwdXRDYWxlbmRhclxuICAgICk7XG4gIH1cbn1cbiIsICJpbXBvcnQge1xuICB1bnRydW5jYXRlWWVhcixcbiAgc2lnbmVkT2Zmc2V0LFxuICBwYXJzZUludGVnZXIsXG4gIHBhcnNlTWlsbGlzLFxuICBpYW5hUmVnZXgsXG4gIGlzVW5kZWZpbmVkLFxuICBwYXJzZUZsb2F0aW5nXG59IGZyb20gXCIuL3V0aWwuanNcIjtcbmltcG9ydCAqIGFzIEVuZ2xpc2ggZnJvbSBcIi4vZW5nbGlzaC5qc1wiO1xuaW1wb3J0IEZpeGVkT2Zmc2V0Wm9uZSBmcm9tIFwiLi4vem9uZXMvZml4ZWRPZmZzZXRab25lLmpzXCI7XG5pbXBvcnQgSUFOQVpvbmUgZnJvbSBcIi4uL3pvbmVzL0lBTkFab25lLmpzXCI7XG5cbi8qXG4gKiBUaGlzIGZpbGUgaGFuZGxlcyBwYXJzaW5nIGZvciB3ZWxsLXNwZWNpZmllZCBmb3JtYXRzLiBIZXJlJ3MgaG93IGl0IHdvcmtzOlxuICogVHdvIHRoaW5ncyBnbyBpbnRvIHBhcnNpbmc6IGEgcmVnZXggdG8gbWF0Y2ggd2l0aCBhbmQgYW4gZXh0cmFjdG9yIHRvIHRha2UgYXBhcnQgdGhlIGdyb3VwcyBpbiB0aGUgbWF0Y2guXG4gKiBBbiBleHRyYWN0b3IgaXMganVzdCBhIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYSByZWdleCBtYXRjaCBhcnJheSBhbmQgcmV0dXJucyBhIHsgeWVhcjogLi4uLCBtb250aDogLi4uIH0gb2JqZWN0XG4gKiBwYXJzZSgpIGRvZXMgdGhlIHdvcmsgb2YgZXhlY3V0aW5nIHRoZSByZWdleCBhbmQgYXBwbHlpbmcgdGhlIGV4dHJhY3Rvci4gSXQgdGFrZXMgbXVsdGlwbGUgcmVnZXgvZXh0cmFjdG9yIHBhaXJzIHRvIHRyeSBpbiBzZXF1ZW5jZS5cbiAqIEV4dHJhY3RvcnMgY2FuIHRha2UgYSBcImN1cnNvclwiIHJlcHJlc2VudGluZyB0aGUgb2Zmc2V0IGluIHRoZSBtYXRjaCB0byBsb29rIGF0LiBUaGlzIG1ha2VzIGl0IGVhc3kgdG8gY29tYmluZSBleHRyYWN0b3JzLlxuICogY29tYmluZUV4dHJhY3RvcnMoKSBkb2VzIHRoZSB3b3JrIG9mIGNvbWJpbmluZyB0aGVtLCBrZWVwaW5nIHRyYWNrIG9mIHRoZSBjdXJzb3IgdGhyb3VnaCBtdWx0aXBsZSBleHRyYWN0aW9ucy5cbiAqIFNvbWUgZXh0cmFjdGlvbnMgYXJlIHN1cGVyIGR1bWIgYW5kIHNpbXBsZVBhcnNlIGFuZCBmcm9tU3RyaW5ncyBoZWxwIERSWSB0aGVtLlxuICovXG5cbmZ1bmN0aW9uIGNvbWJpbmVSZWdleGVzKC4uLnJlZ2V4ZXMpIHtcbiAgY29uc3QgZnVsbCA9IHJlZ2V4ZXMucmVkdWNlKChmLCByKSA9PiBmICsgci5zb3VyY2UsIFwiXCIpO1xuICByZXR1cm4gUmVnRXhwKGBeJHtmdWxsfSRgKTtcbn1cblxuZnVuY3Rpb24gY29tYmluZUV4dHJhY3RvcnMoLi4uZXh0cmFjdG9ycykge1xuICByZXR1cm4gbSA9PlxuICAgIGV4dHJhY3RvcnNcbiAgICAgIC5yZWR1Y2UoXG4gICAgICAgIChbbWVyZ2VkVmFscywgbWVyZ2VkWm9uZSwgY3Vyc29yXSwgZXgpID0+IHtcbiAgICAgICAgICBjb25zdCBbdmFsLCB6b25lLCBuZXh0XSA9IGV4KG0sIGN1cnNvcik7XG4gICAgICAgICAgcmV0dXJuIFt7IC4uLm1lcmdlZFZhbHMsIC4uLnZhbCB9LCB6b25lIHx8IG1lcmdlZFpvbmUsIG5leHRdO1xuICAgICAgICB9LFxuICAgICAgICBbe30sIG51bGwsIDFdXG4gICAgICApXG4gICAgICAuc2xpY2UoMCwgMik7XG59XG5cbmZ1bmN0aW9uIHBhcnNlKHMsIC4uLnBhdHRlcm5zKSB7XG4gIGlmIChzID09IG51bGwpIHtcbiAgICByZXR1cm4gW251bGwsIG51bGxdO1xuICB9XG5cbiAgZm9yIChjb25zdCBbcmVnZXgsIGV4dHJhY3Rvcl0gb2YgcGF0dGVybnMpIHtcbiAgICBjb25zdCBtID0gcmVnZXguZXhlYyhzKTtcbiAgICBpZiAobSkge1xuICAgICAgcmV0dXJuIGV4dHJhY3RvcihtKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIFtudWxsLCBudWxsXTtcbn1cblxuZnVuY3Rpb24gc2ltcGxlUGFyc2UoLi4ua2V5cykge1xuICByZXR1cm4gKG1hdGNoLCBjdXJzb3IpID0+IHtcbiAgICBjb25zdCByZXQgPSB7fTtcbiAgICBsZXQgaTtcblxuICAgIGZvciAoaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICByZXRba2V5c1tpXV0gPSBwYXJzZUludGVnZXIobWF0Y2hbY3Vyc29yICsgaV0pO1xuICAgIH1cbiAgICByZXR1cm4gW3JldCwgbnVsbCwgY3Vyc29yICsgaV07XG4gIH07XG59XG5cbi8vIElTTyBhbmQgU1FMIHBhcnNpbmdcbmNvbnN0IG9mZnNldFJlZ2V4ID0gLyg/OihaKXwoWystXVxcZFxcZCkoPzo6PyhcXGRcXGQpKT8pLztcbmNvbnN0IGlzb0V4dGVuZGVkWm9uZSA9IGAoPzoke29mZnNldFJlZ2V4LnNvdXJjZX0/KD86XFxcXFsoJHtpYW5hUmVnZXguc291cmNlfSlcXFxcXSk/KT9gO1xuY29uc3QgaXNvVGltZUJhc2VSZWdleCA9IC8oXFxkXFxkKSg/Ojo/KFxcZFxcZCkoPzo6PyhcXGRcXGQpKD86Wy4sXShcXGR7MSwzMH0pKT8pPyk/LztcbmNvbnN0IGlzb1RpbWVSZWdleCA9IFJlZ0V4cChgJHtpc29UaW1lQmFzZVJlZ2V4LnNvdXJjZX0ke2lzb0V4dGVuZGVkWm9uZX1gKTtcbmNvbnN0IGlzb1RpbWVFeHRlbnNpb25SZWdleCA9IFJlZ0V4cChgKD86VCR7aXNvVGltZVJlZ2V4LnNvdXJjZX0pP2ApO1xuY29uc3QgaXNvWW1kUmVnZXggPSAvKFsrLV1cXGR7Nn18XFxkezR9KSg/Oi0/KFxcZFxcZCkoPzotPyhcXGRcXGQpKT8pPy87XG5jb25zdCBpc29XZWVrUmVnZXggPSAvKFxcZHs0fSktP1coXFxkXFxkKSg/Oi0/KFxcZCkpPy87XG5jb25zdCBpc29PcmRpbmFsUmVnZXggPSAvKFxcZHs0fSktPyhcXGR7M30pLztcbmNvbnN0IGV4dHJhY3RJU09XZWVrRGF0YSA9IHNpbXBsZVBhcnNlKFwid2Vla1llYXJcIiwgXCJ3ZWVrTnVtYmVyXCIsIFwid2Vla0RheVwiKTtcbmNvbnN0IGV4dHJhY3RJU09PcmRpbmFsRGF0YSA9IHNpbXBsZVBhcnNlKFwieWVhclwiLCBcIm9yZGluYWxcIik7XG5jb25zdCBzcWxZbWRSZWdleCA9IC8oXFxkezR9KS0oXFxkXFxkKS0oXFxkXFxkKS87IC8vIGR1bWJlZC1kb3duIHZlcnNpb24gb2YgdGhlIElTTyBvbmVcbmNvbnN0IHNxbFRpbWVSZWdleCA9IFJlZ0V4cChcbiAgYCR7aXNvVGltZUJhc2VSZWdleC5zb3VyY2V9ID8oPzoke29mZnNldFJlZ2V4LnNvdXJjZX18KCR7aWFuYVJlZ2V4LnNvdXJjZX0pKT9gXG4pO1xuY29uc3Qgc3FsVGltZUV4dGVuc2lvblJlZ2V4ID0gUmVnRXhwKGAoPzogJHtzcWxUaW1lUmVnZXguc291cmNlfSk/YCk7XG5cbmZ1bmN0aW9uIGludChtYXRjaCwgcG9zLCBmYWxsYmFjaykge1xuICBjb25zdCBtID0gbWF0Y2hbcG9zXTtcbiAgcmV0dXJuIGlzVW5kZWZpbmVkKG0pID8gZmFsbGJhY2sgOiBwYXJzZUludGVnZXIobSk7XG59XG5cbmZ1bmN0aW9uIGV4dHJhY3RJU09ZbWQobWF0Y2gsIGN1cnNvcikge1xuICBjb25zdCBpdGVtID0ge1xuICAgIHllYXI6IGludChtYXRjaCwgY3Vyc29yKSxcbiAgICBtb250aDogaW50KG1hdGNoLCBjdXJzb3IgKyAxLCAxKSxcbiAgICBkYXk6IGludChtYXRjaCwgY3Vyc29yICsgMiwgMSlcbiAgfTtcblxuICByZXR1cm4gW2l0ZW0sIG51bGwsIGN1cnNvciArIDNdO1xufVxuXG5mdW5jdGlvbiBleHRyYWN0SVNPVGltZShtYXRjaCwgY3Vyc29yKSB7XG4gIGNvbnN0IGl0ZW0gPSB7XG4gICAgaG91cnM6IGludChtYXRjaCwgY3Vyc29yLCAwKSxcbiAgICBtaW51dGVzOiBpbnQobWF0Y2gsIGN1cnNvciArIDEsIDApLFxuICAgIHNlY29uZHM6IGludChtYXRjaCwgY3Vyc29yICsgMiwgMCksXG4gICAgbWlsbGlzZWNvbmRzOiBwYXJzZU1pbGxpcyhtYXRjaFtjdXJzb3IgKyAzXSlcbiAgfTtcblxuICByZXR1cm4gW2l0ZW0sIG51bGwsIGN1cnNvciArIDRdO1xufVxuXG5mdW5jdGlvbiBleHRyYWN0SVNPT2Zmc2V0KG1hdGNoLCBjdXJzb3IpIHtcbiAgY29uc3QgbG9jYWwgPSAhbWF0Y2hbY3Vyc29yXSAmJiAhbWF0Y2hbY3Vyc29yICsgMV0sXG4gICAgZnVsbE9mZnNldCA9IHNpZ25lZE9mZnNldChtYXRjaFtjdXJzb3IgKyAxXSwgbWF0Y2hbY3Vyc29yICsgMl0pLFxuICAgIHpvbmUgPSBsb2NhbCA/IG51bGwgOiBGaXhlZE9mZnNldFpvbmUuaW5zdGFuY2UoZnVsbE9mZnNldCk7XG4gIHJldHVybiBbe30sIHpvbmUsIGN1cnNvciArIDNdO1xufVxuXG5mdW5jdGlvbiBleHRyYWN0SUFOQVpvbmUobWF0Y2gsIGN1cnNvcikge1xuICBjb25zdCB6b25lID0gbWF0Y2hbY3Vyc29yXSA/IElBTkFab25lLmNyZWF0ZShtYXRjaFtjdXJzb3JdKSA6IG51bGw7XG4gIHJldHVybiBbe30sIHpvbmUsIGN1cnNvciArIDFdO1xufVxuXG4vLyBJU08gdGltZSBwYXJzaW5nXG5cbmNvbnN0IGlzb1RpbWVPbmx5ID0gUmVnRXhwKGBeVD8ke2lzb1RpbWVCYXNlUmVnZXguc291cmNlfSRgKTtcblxuLy8gSVNPIGR1cmF0aW9uIHBhcnNpbmdcblxuY29uc3QgaXNvRHVyYXRpb24gPSAvXi0/UCg/Oig/OigtP1xcZHsxLDIwfSg/OlxcLlxcZHsxLDIwfSk/KVkpPyg/OigtP1xcZHsxLDIwfSg/OlxcLlxcZHsxLDIwfSk/KU0pPyg/OigtP1xcZHsxLDIwfSg/OlxcLlxcZHsxLDIwfSk/KVcpPyg/OigtP1xcZHsxLDIwfSg/OlxcLlxcZHsxLDIwfSk/KUQpPyg/OlQoPzooLT9cXGR7MSwyMH0oPzpcXC5cXGR7MSwyMH0pPylIKT8oPzooLT9cXGR7MSwyMH0oPzpcXC5cXGR7MSwyMH0pPylNKT8oPzooLT9cXGR7MSwyMH0pKD86Wy4sXSgtP1xcZHsxLDIwfSkpP1MpPyk/KSQvO1xuXG5mdW5jdGlvbiBleHRyYWN0SVNPRHVyYXRpb24obWF0Y2gpIHtcbiAgY29uc3QgW1xuICAgIHMsXG4gICAgeWVhclN0cixcbiAgICBtb250aFN0cixcbiAgICB3ZWVrU3RyLFxuICAgIGRheVN0cixcbiAgICBob3VyU3RyLFxuICAgIG1pbnV0ZVN0cixcbiAgICBzZWNvbmRTdHIsXG4gICAgbWlsbGlzZWNvbmRzU3RyXG4gIF0gPSBtYXRjaDtcblxuICBjb25zdCBoYXNOZWdhdGl2ZVByZWZpeCA9IHNbMF0gPT09IFwiLVwiO1xuICBjb25zdCBuZWdhdGl2ZVNlY29uZHMgPSBzZWNvbmRTdHIgJiYgc2Vjb25kU3RyWzBdID09PSBcIi1cIjtcblxuICBjb25zdCBtYXliZU5lZ2F0ZSA9IChudW0sIGZvcmNlID0gZmFsc2UpID0+XG4gICAgbnVtICE9PSB1bmRlZmluZWQgJiYgKGZvcmNlIHx8IChudW0gJiYgaGFzTmVnYXRpdmVQcmVmaXgpKSA/IC1udW0gOiBudW07XG5cbiAgcmV0dXJuIFtcbiAgICB7XG4gICAgICB5ZWFyczogbWF5YmVOZWdhdGUocGFyc2VGbG9hdGluZyh5ZWFyU3RyKSksXG4gICAgICBtb250aHM6IG1heWJlTmVnYXRlKHBhcnNlRmxvYXRpbmcobW9udGhTdHIpKSxcbiAgICAgIHdlZWtzOiBtYXliZU5lZ2F0ZShwYXJzZUZsb2F0aW5nKHdlZWtTdHIpKSxcbiAgICAgIGRheXM6IG1heWJlTmVnYXRlKHBhcnNlRmxvYXRpbmcoZGF5U3RyKSksXG4gICAgICBob3VyczogbWF5YmVOZWdhdGUocGFyc2VGbG9hdGluZyhob3VyU3RyKSksXG4gICAgICBtaW51dGVzOiBtYXliZU5lZ2F0ZShwYXJzZUZsb2F0aW5nKG1pbnV0ZVN0cikpLFxuICAgICAgc2Vjb25kczogbWF5YmVOZWdhdGUocGFyc2VGbG9hdGluZyhzZWNvbmRTdHIpLCBzZWNvbmRTdHIgPT09IFwiLTBcIiksXG4gICAgICBtaWxsaXNlY29uZHM6IG1heWJlTmVnYXRlKHBhcnNlTWlsbGlzKG1pbGxpc2Vjb25kc1N0ciksIG5lZ2F0aXZlU2Vjb25kcylcbiAgICB9XG4gIF07XG59XG5cbi8vIFRoZXNlIGFyZSBhIGxpdHRsZSBicmFpbmRlYWQuIEVEVCAqc2hvdWxkKiB0ZWxsIHVzIHRoYXQgd2UncmUgaW4sIHNheSwgQW1lcmljYS9OZXdfWW9ya1xuLy8gYW5kIG5vdCBqdXN0IHRoYXQgd2UncmUgaW4gLTI0MCAqcmlnaHQgbm93Ki4gQnV0IHNpbmNlIEkgZG9uJ3QgdGhpbmsgdGhlc2UgYXJlIHVzZWQgdGhhdCBvZnRlblxuLy8gSSdtIGp1c3QgZ29pbmcgdG8gaWdub3JlIHRoYXRcbmNvbnN0IG9ic09mZnNldHMgPSB7XG4gIEdNVDogMCxcbiAgRURUOiAtNCAqIDYwLFxuICBFU1Q6IC01ICogNjAsXG4gIENEVDogLTUgKiA2MCxcbiAgQ1NUOiAtNiAqIDYwLFxuICBNRFQ6IC02ICogNjAsXG4gIE1TVDogLTcgKiA2MCxcbiAgUERUOiAtNyAqIDYwLFxuICBQU1Q6IC04ICogNjBcbn07XG5cbmZ1bmN0aW9uIGZyb21TdHJpbmdzKHdlZWtkYXlTdHIsIHllYXJTdHIsIG1vbnRoU3RyLCBkYXlTdHIsIGhvdXJTdHIsIG1pbnV0ZVN0ciwgc2Vjb25kU3RyKSB7XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICB5ZWFyOiB5ZWFyU3RyLmxlbmd0aCA9PT0gMiA/IHVudHJ1bmNhdGVZZWFyKHBhcnNlSW50ZWdlcih5ZWFyU3RyKSkgOiBwYXJzZUludGVnZXIoeWVhclN0ciksXG4gICAgbW9udGg6IEVuZ2xpc2gubW9udGhzU2hvcnQuaW5kZXhPZihtb250aFN0cikgKyAxLFxuICAgIGRheTogcGFyc2VJbnRlZ2VyKGRheVN0ciksXG4gICAgaG91cjogcGFyc2VJbnRlZ2VyKGhvdXJTdHIpLFxuICAgIG1pbnV0ZTogcGFyc2VJbnRlZ2VyKG1pbnV0ZVN0cilcbiAgfTtcblxuICBpZiAoc2Vjb25kU3RyKSByZXN1bHQuc2Vjb25kID0gcGFyc2VJbnRlZ2VyKHNlY29uZFN0cik7XG4gIGlmICh3ZWVrZGF5U3RyKSB7XG4gICAgcmVzdWx0LndlZWtkYXkgPVxuICAgICAgd2Vla2RheVN0ci5sZW5ndGggPiAzXG4gICAgICAgID8gRW5nbGlzaC53ZWVrZGF5c0xvbmcuaW5kZXhPZih3ZWVrZGF5U3RyKSArIDFcbiAgICAgICAgOiBFbmdsaXNoLndlZWtkYXlzU2hvcnQuaW5kZXhPZih3ZWVrZGF5U3RyKSArIDE7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vLyBSRkMgMjgyMi81MzIyXG5jb25zdCByZmMyODIyID0gL14oPzooTW9ufFR1ZXxXZWR8VGh1fEZyaXxTYXR8U3VuKSxcXHMpPyhcXGR7MSwyfSlcXHMoSmFufEZlYnxNYXJ8QXByfE1heXxKdW58SnVsfEF1Z3xTZXB8T2N0fE5vdnxEZWMpXFxzKFxcZHsyLDR9KVxccyhcXGRcXGQpOihcXGRcXGQpKD86OihcXGRcXGQpKT9cXHMoPzooVVR8R01UfFtFQ01QXVtTRF1UKXwoW1p6XSl8KD86KFsrLV1cXGRcXGQpKFxcZFxcZCkpKSQvO1xuXG5mdW5jdGlvbiBleHRyYWN0UkZDMjgyMihtYXRjaCkge1xuICBjb25zdCBbXG4gICAgICAsXG4gICAgICB3ZWVrZGF5U3RyLFxuICAgICAgZGF5U3RyLFxuICAgICAgbW9udGhTdHIsXG4gICAgICB5ZWFyU3RyLFxuICAgICAgaG91clN0cixcbiAgICAgIG1pbnV0ZVN0cixcbiAgICAgIHNlY29uZFN0cixcbiAgICAgIG9ic09mZnNldCxcbiAgICAgIG1pbE9mZnNldCxcbiAgICAgIG9mZkhvdXJTdHIsXG4gICAgICBvZmZNaW51dGVTdHJcbiAgICBdID0gbWF0Y2gsXG4gICAgcmVzdWx0ID0gZnJvbVN0cmluZ3Mod2Vla2RheVN0ciwgeWVhclN0ciwgbW9udGhTdHIsIGRheVN0ciwgaG91clN0ciwgbWludXRlU3RyLCBzZWNvbmRTdHIpO1xuXG4gIGxldCBvZmZzZXQ7XG4gIGlmIChvYnNPZmZzZXQpIHtcbiAgICBvZmZzZXQgPSBvYnNPZmZzZXRzW29ic09mZnNldF07XG4gIH0gZWxzZSBpZiAobWlsT2Zmc2V0KSB7XG4gICAgb2Zmc2V0ID0gMDtcbiAgfSBlbHNlIHtcbiAgICBvZmZzZXQgPSBzaWduZWRPZmZzZXQob2ZmSG91clN0ciwgb2ZmTWludXRlU3RyKTtcbiAgfVxuXG4gIHJldHVybiBbcmVzdWx0LCBuZXcgRml4ZWRPZmZzZXRab25lKG9mZnNldCldO1xufVxuXG5mdW5jdGlvbiBwcmVwcm9jZXNzUkZDMjgyMihzKSB7XG4gIC8vIFJlbW92ZSBjb21tZW50cyBhbmQgZm9sZGluZyB3aGl0ZXNwYWNlIGFuZCByZXBsYWNlIG11bHRpcGxlLXNwYWNlcyB3aXRoIGEgc2luZ2xlIHNwYWNlXG4gIHJldHVybiBzXG4gICAgLnJlcGxhY2UoL1xcKFteKCldKlxcKXxbXFxuXFx0XS9nLCBcIiBcIilcbiAgICAucmVwbGFjZSgvKFxcc1xccyspL2csIFwiIFwiKVxuICAgIC50cmltKCk7XG59XG5cbi8vIGh0dHAgZGF0ZVxuXG5jb25zdCByZmMxMTIzID0gL14oTW9ufFR1ZXxXZWR8VGh1fEZyaXxTYXR8U3VuKSwgKFxcZFxcZCkgKEphbnxGZWJ8TWFyfEFwcnxNYXl8SnVufEp1bHxBdWd8U2VwfE9jdHxOb3Z8RGVjKSAoXFxkezR9KSAoXFxkXFxkKTooXFxkXFxkKTooXFxkXFxkKSBHTVQkLyxcbiAgcmZjODUwID0gL14oTW9uZGF5fFR1ZXNkYXl8V2VkbmVzZGF5fFRodXJzZGF5fEZyaWRheXxTYXR1cmRheXxTdW5kYXkpLCAoXFxkXFxkKS0oSmFufEZlYnxNYXJ8QXByfE1heXxKdW58SnVsfEF1Z3xTZXB8T2N0fE5vdnxEZWMpLShcXGRcXGQpIChcXGRcXGQpOihcXGRcXGQpOihcXGRcXGQpIEdNVCQvLFxuICBhc2NpaSA9IC9eKE1vbnxUdWV8V2VkfFRodXxGcml8U2F0fFN1bikgKEphbnxGZWJ8TWFyfEFwcnxNYXl8SnVufEp1bHxBdWd8U2VwfE9jdHxOb3Z8RGVjKSAoIFxcZHxcXGRcXGQpIChcXGRcXGQpOihcXGRcXGQpOihcXGRcXGQpIChcXGR7NH0pJC87XG5cbmZ1bmN0aW9uIGV4dHJhY3RSRkMxMTIzT3I4NTAobWF0Y2gpIHtcbiAgY29uc3QgWywgd2Vla2RheVN0ciwgZGF5U3RyLCBtb250aFN0ciwgeWVhclN0ciwgaG91clN0ciwgbWludXRlU3RyLCBzZWNvbmRTdHJdID0gbWF0Y2gsXG4gICAgcmVzdWx0ID0gZnJvbVN0cmluZ3Mod2Vla2RheVN0ciwgeWVhclN0ciwgbW9udGhTdHIsIGRheVN0ciwgaG91clN0ciwgbWludXRlU3RyLCBzZWNvbmRTdHIpO1xuICByZXR1cm4gW3Jlc3VsdCwgRml4ZWRPZmZzZXRab25lLnV0Y0luc3RhbmNlXTtcbn1cblxuZnVuY3Rpb24gZXh0cmFjdEFTQ0lJKG1hdGNoKSB7XG4gIGNvbnN0IFssIHdlZWtkYXlTdHIsIG1vbnRoU3RyLCBkYXlTdHIsIGhvdXJTdHIsIG1pbnV0ZVN0ciwgc2Vjb25kU3RyLCB5ZWFyU3RyXSA9IG1hdGNoLFxuICAgIHJlc3VsdCA9IGZyb21TdHJpbmdzKHdlZWtkYXlTdHIsIHllYXJTdHIsIG1vbnRoU3RyLCBkYXlTdHIsIGhvdXJTdHIsIG1pbnV0ZVN0ciwgc2Vjb25kU3RyKTtcbiAgcmV0dXJuIFtyZXN1bHQsIEZpeGVkT2Zmc2V0Wm9uZS51dGNJbnN0YW5jZV07XG59XG5cbmNvbnN0IGlzb1ltZFdpdGhUaW1lRXh0ZW5zaW9uUmVnZXggPSBjb21iaW5lUmVnZXhlcyhpc29ZbWRSZWdleCwgaXNvVGltZUV4dGVuc2lvblJlZ2V4KTtcbmNvbnN0IGlzb1dlZWtXaXRoVGltZUV4dGVuc2lvblJlZ2V4ID0gY29tYmluZVJlZ2V4ZXMoaXNvV2Vla1JlZ2V4LCBpc29UaW1lRXh0ZW5zaW9uUmVnZXgpO1xuY29uc3QgaXNvT3JkaW5hbFdpdGhUaW1lRXh0ZW5zaW9uUmVnZXggPSBjb21iaW5lUmVnZXhlcyhpc29PcmRpbmFsUmVnZXgsIGlzb1RpbWVFeHRlbnNpb25SZWdleCk7XG5jb25zdCBpc29UaW1lQ29tYmluZWRSZWdleCA9IGNvbWJpbmVSZWdleGVzKGlzb1RpbWVSZWdleCk7XG5cbmNvbnN0IGV4dHJhY3RJU09ZbWRUaW1lQW5kT2Zmc2V0ID0gY29tYmluZUV4dHJhY3RvcnMoXG4gIGV4dHJhY3RJU09ZbWQsXG4gIGV4dHJhY3RJU09UaW1lLFxuICBleHRyYWN0SVNPT2Zmc2V0LFxuICBleHRyYWN0SUFOQVpvbmVcbik7XG5jb25zdCBleHRyYWN0SVNPV2Vla1RpbWVBbmRPZmZzZXQgPSBjb21iaW5lRXh0cmFjdG9ycyhcbiAgZXh0cmFjdElTT1dlZWtEYXRhLFxuICBleHRyYWN0SVNPVGltZSxcbiAgZXh0cmFjdElTT09mZnNldCxcbiAgZXh0cmFjdElBTkFab25lXG4pO1xuY29uc3QgZXh0cmFjdElTT09yZGluYWxEYXRlQW5kVGltZSA9IGNvbWJpbmVFeHRyYWN0b3JzKFxuICBleHRyYWN0SVNPT3JkaW5hbERhdGEsXG4gIGV4dHJhY3RJU09UaW1lLFxuICBleHRyYWN0SVNPT2Zmc2V0LFxuICBleHRyYWN0SUFOQVpvbmVcbik7XG5jb25zdCBleHRyYWN0SVNPVGltZUFuZE9mZnNldCA9IGNvbWJpbmVFeHRyYWN0b3JzKFxuICBleHRyYWN0SVNPVGltZSxcbiAgZXh0cmFjdElTT09mZnNldCxcbiAgZXh0cmFjdElBTkFab25lXG4pO1xuXG4vKlxuICogQHByaXZhdGVcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VJU09EYXRlKHMpIHtcbiAgcmV0dXJuIHBhcnNlKFxuICAgIHMsXG4gICAgW2lzb1ltZFdpdGhUaW1lRXh0ZW5zaW9uUmVnZXgsIGV4dHJhY3RJU09ZbWRUaW1lQW5kT2Zmc2V0XSxcbiAgICBbaXNvV2Vla1dpdGhUaW1lRXh0ZW5zaW9uUmVnZXgsIGV4dHJhY3RJU09XZWVrVGltZUFuZE9mZnNldF0sXG4gICAgW2lzb09yZGluYWxXaXRoVGltZUV4dGVuc2lvblJlZ2V4LCBleHRyYWN0SVNPT3JkaW5hbERhdGVBbmRUaW1lXSxcbiAgICBbaXNvVGltZUNvbWJpbmVkUmVnZXgsIGV4dHJhY3RJU09UaW1lQW5kT2Zmc2V0XVxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VSRkMyODIyRGF0ZShzKSB7XG4gIHJldHVybiBwYXJzZShwcmVwcm9jZXNzUkZDMjgyMihzKSwgW3JmYzI4MjIsIGV4dHJhY3RSRkMyODIyXSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUhUVFBEYXRlKHMpIHtcbiAgcmV0dXJuIHBhcnNlKFxuICAgIHMsXG4gICAgW3JmYzExMjMsIGV4dHJhY3RSRkMxMTIzT3I4NTBdLFxuICAgIFtyZmM4NTAsIGV4dHJhY3RSRkMxMTIzT3I4NTBdLFxuICAgIFthc2NpaSwgZXh0cmFjdEFTQ0lJXVxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VJU09EdXJhdGlvbihzKSB7XG4gIHJldHVybiBwYXJzZShzLCBbaXNvRHVyYXRpb24sIGV4dHJhY3RJU09EdXJhdGlvbl0pO1xufVxuXG5jb25zdCBleHRyYWN0SVNPVGltZU9ubHkgPSBjb21iaW5lRXh0cmFjdG9ycyhleHRyYWN0SVNPVGltZSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUlTT1RpbWVPbmx5KHMpIHtcbiAgcmV0dXJuIHBhcnNlKHMsIFtpc29UaW1lT25seSwgZXh0cmFjdElTT1RpbWVPbmx5XSk7XG59XG5cbmNvbnN0IHNxbFltZFdpdGhUaW1lRXh0ZW5zaW9uUmVnZXggPSBjb21iaW5lUmVnZXhlcyhzcWxZbWRSZWdleCwgc3FsVGltZUV4dGVuc2lvblJlZ2V4KTtcbmNvbnN0IHNxbFRpbWVDb21iaW5lZFJlZ2V4ID0gY29tYmluZVJlZ2V4ZXMoc3FsVGltZVJlZ2V4KTtcblxuY29uc3QgZXh0cmFjdElTT1RpbWVPZmZzZXRBbmRJQU5BWm9uZSA9IGNvbWJpbmVFeHRyYWN0b3JzKFxuICBleHRyYWN0SVNPVGltZSxcbiAgZXh0cmFjdElTT09mZnNldCxcbiAgZXh0cmFjdElBTkFab25lXG4pO1xuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VTUUwocykge1xuICByZXR1cm4gcGFyc2UoXG4gICAgcyxcbiAgICBbc3FsWW1kV2l0aFRpbWVFeHRlbnNpb25SZWdleCwgZXh0cmFjdElTT1ltZFRpbWVBbmRPZmZzZXRdLFxuICAgIFtzcWxUaW1lQ29tYmluZWRSZWdleCwgZXh0cmFjdElTT1RpbWVPZmZzZXRBbmRJQU5BWm9uZV1cbiAgKTtcbn1cbiIsICJpbXBvcnQgeyBJbnZhbGlkQXJndW1lbnRFcnJvciwgSW52YWxpZER1cmF0aW9uRXJyb3IsIEludmFsaWRVbml0RXJyb3IgfSBmcm9tIFwiLi9lcnJvcnMuanNcIjtcbmltcG9ydCBGb3JtYXR0ZXIgZnJvbSBcIi4vaW1wbC9mb3JtYXR0ZXIuanNcIjtcbmltcG9ydCBJbnZhbGlkIGZyb20gXCIuL2ltcGwvaW52YWxpZC5qc1wiO1xuaW1wb3J0IExvY2FsZSBmcm9tIFwiLi9pbXBsL2xvY2FsZS5qc1wiO1xuaW1wb3J0IHsgcGFyc2VJU09EdXJhdGlvbiwgcGFyc2VJU09UaW1lT25seSB9IGZyb20gXCIuL2ltcGwvcmVnZXhQYXJzZXIuanNcIjtcbmltcG9ydCB7XG4gIGFzTnVtYmVyLFxuICBoYXNPd25Qcm9wZXJ0eSxcbiAgaXNOdW1iZXIsXG4gIGlzVW5kZWZpbmVkLFxuICBub3JtYWxpemVPYmplY3QsXG4gIHJvdW5kVG8sXG59IGZyb20gXCIuL2ltcGwvdXRpbC5qc1wiO1xuaW1wb3J0IFNldHRpbmdzIGZyb20gXCIuL3NldHRpbmdzLmpzXCI7XG5cbmNvbnN0IElOVkFMSUQgPSBcIkludmFsaWQgRHVyYXRpb25cIjtcblxuLy8gdW5pdCBjb252ZXJzaW9uIGNvbnN0YW50c1xuZXhwb3J0IGNvbnN0IGxvd09yZGVyTWF0cml4ID0ge1xuICAgIHdlZWtzOiB7XG4gICAgICBkYXlzOiA3LFxuICAgICAgaG91cnM6IDcgKiAyNCxcbiAgICAgIG1pbnV0ZXM6IDcgKiAyNCAqIDYwLFxuICAgICAgc2Vjb25kczogNyAqIDI0ICogNjAgKiA2MCxcbiAgICAgIG1pbGxpc2Vjb25kczogNyAqIDI0ICogNjAgKiA2MCAqIDEwMDAsXG4gICAgfSxcbiAgICBkYXlzOiB7XG4gICAgICBob3VyczogMjQsXG4gICAgICBtaW51dGVzOiAyNCAqIDYwLFxuICAgICAgc2Vjb25kczogMjQgKiA2MCAqIDYwLFxuICAgICAgbWlsbGlzZWNvbmRzOiAyNCAqIDYwICogNjAgKiAxMDAwLFxuICAgIH0sXG4gICAgaG91cnM6IHsgbWludXRlczogNjAsIHNlY29uZHM6IDYwICogNjAsIG1pbGxpc2Vjb25kczogNjAgKiA2MCAqIDEwMDAgfSxcbiAgICBtaW51dGVzOiB7IHNlY29uZHM6IDYwLCBtaWxsaXNlY29uZHM6IDYwICogMTAwMCB9LFxuICAgIHNlY29uZHM6IHsgbWlsbGlzZWNvbmRzOiAxMDAwIH0sXG4gIH0sXG4gIGNhc3VhbE1hdHJpeCA9IHtcbiAgICB5ZWFyczoge1xuICAgICAgcXVhcnRlcnM6IDQsXG4gICAgICBtb250aHM6IDEyLFxuICAgICAgd2Vla3M6IDUyLFxuICAgICAgZGF5czogMzY1LFxuICAgICAgaG91cnM6IDM2NSAqIDI0LFxuICAgICAgbWludXRlczogMzY1ICogMjQgKiA2MCxcbiAgICAgIHNlY29uZHM6IDM2NSAqIDI0ICogNjAgKiA2MCxcbiAgICAgIG1pbGxpc2Vjb25kczogMzY1ICogMjQgKiA2MCAqIDYwICogMTAwMCxcbiAgICB9LFxuICAgIHF1YXJ0ZXJzOiB7XG4gICAgICBtb250aHM6IDMsXG4gICAgICB3ZWVrczogMTMsXG4gICAgICBkYXlzOiA5MSxcbiAgICAgIGhvdXJzOiA5MSAqIDI0LFxuICAgICAgbWludXRlczogOTEgKiAyNCAqIDYwLFxuICAgICAgc2Vjb25kczogOTEgKiAyNCAqIDYwICogNjAsXG4gICAgICBtaWxsaXNlY29uZHM6IDkxICogMjQgKiA2MCAqIDYwICogMTAwMCxcbiAgICB9LFxuICAgIG1vbnRoczoge1xuICAgICAgd2Vla3M6IDQsXG4gICAgICBkYXlzOiAzMCxcbiAgICAgIGhvdXJzOiAzMCAqIDI0LFxuICAgICAgbWludXRlczogMzAgKiAyNCAqIDYwLFxuICAgICAgc2Vjb25kczogMzAgKiAyNCAqIDYwICogNjAsXG4gICAgICBtaWxsaXNlY29uZHM6IDMwICogMjQgKiA2MCAqIDYwICogMTAwMCxcbiAgICB9LFxuXG4gICAgLi4ubG93T3JkZXJNYXRyaXgsXG4gIH0sXG4gIGRheXNJblllYXJBY2N1cmF0ZSA9IDE0NjA5Ny4wIC8gNDAwLFxuICBkYXlzSW5Nb250aEFjY3VyYXRlID0gMTQ2MDk3LjAgLyA0ODAwLFxuICBhY2N1cmF0ZU1hdHJpeCA9IHtcbiAgICB5ZWFyczoge1xuICAgICAgcXVhcnRlcnM6IDQsXG4gICAgICBtb250aHM6IDEyLFxuICAgICAgd2Vla3M6IGRheXNJblllYXJBY2N1cmF0ZSAvIDcsXG4gICAgICBkYXlzOiBkYXlzSW5ZZWFyQWNjdXJhdGUsXG4gICAgICBob3VyczogZGF5c0luWWVhckFjY3VyYXRlICogMjQsXG4gICAgICBtaW51dGVzOiBkYXlzSW5ZZWFyQWNjdXJhdGUgKiAyNCAqIDYwLFxuICAgICAgc2Vjb25kczogZGF5c0luWWVhckFjY3VyYXRlICogMjQgKiA2MCAqIDYwLFxuICAgICAgbWlsbGlzZWNvbmRzOiBkYXlzSW5ZZWFyQWNjdXJhdGUgKiAyNCAqIDYwICogNjAgKiAxMDAwLFxuICAgIH0sXG4gICAgcXVhcnRlcnM6IHtcbiAgICAgIG1vbnRoczogMyxcbiAgICAgIHdlZWtzOiBkYXlzSW5ZZWFyQWNjdXJhdGUgLyAyOCxcbiAgICAgIGRheXM6IGRheXNJblllYXJBY2N1cmF0ZSAvIDQsXG4gICAgICBob3VyczogKGRheXNJblllYXJBY2N1cmF0ZSAqIDI0KSAvIDQsXG4gICAgICBtaW51dGVzOiAoZGF5c0luWWVhckFjY3VyYXRlICogMjQgKiA2MCkgLyA0LFxuICAgICAgc2Vjb25kczogKGRheXNJblllYXJBY2N1cmF0ZSAqIDI0ICogNjAgKiA2MCkgLyA0LFxuICAgICAgbWlsbGlzZWNvbmRzOiAoZGF5c0luWWVhckFjY3VyYXRlICogMjQgKiA2MCAqIDYwICogMTAwMCkgLyA0LFxuICAgIH0sXG4gICAgbW9udGhzOiB7XG4gICAgICB3ZWVrczogZGF5c0luTW9udGhBY2N1cmF0ZSAvIDcsXG4gICAgICBkYXlzOiBkYXlzSW5Nb250aEFjY3VyYXRlLFxuICAgICAgaG91cnM6IGRheXNJbk1vbnRoQWNjdXJhdGUgKiAyNCxcbiAgICAgIG1pbnV0ZXM6IGRheXNJbk1vbnRoQWNjdXJhdGUgKiAyNCAqIDYwLFxuICAgICAgc2Vjb25kczogZGF5c0luTW9udGhBY2N1cmF0ZSAqIDI0ICogNjAgKiA2MCxcbiAgICAgIG1pbGxpc2Vjb25kczogZGF5c0luTW9udGhBY2N1cmF0ZSAqIDI0ICogNjAgKiA2MCAqIDEwMDAsXG4gICAgfSxcbiAgICAuLi5sb3dPcmRlck1hdHJpeCxcbiAgfTtcblxuLy8gdW5pdHMgb3JkZXJlZCBieSBzaXplXG5jb25zdCBvcmRlcmVkVW5pdHMgPSBbXG4gIFwieWVhcnNcIixcbiAgXCJxdWFydGVyc1wiLFxuICBcIm1vbnRoc1wiLFxuICBcIndlZWtzXCIsXG4gIFwiZGF5c1wiLFxuICBcImhvdXJzXCIsXG4gIFwibWludXRlc1wiLFxuICBcInNlY29uZHNcIixcbiAgXCJtaWxsaXNlY29uZHNcIixcbl07XG5cbmNvbnN0IHJldmVyc2VVbml0cyA9IG9yZGVyZWRVbml0cy5zbGljZSgwKS5yZXZlcnNlKCk7XG5cbi8vIGNsb25lIHJlYWxseSBtZWFucyBcImNyZWF0ZSBhbm90aGVyIGluc3RhbmNlIGp1c3QgbGlrZSB0aGlzIG9uZSwgYnV0IHdpdGggdGhlc2UgY2hhbmdlc1wiXG5mdW5jdGlvbiBjbG9uZShkdXIsIGFsdHMsIGNsZWFyID0gZmFsc2UpIHtcbiAgLy8gZGVlcCBtZXJnZSBmb3IgdmFsc1xuICBjb25zdCBjb25mID0ge1xuICAgIHZhbHVlczogY2xlYXIgPyBhbHRzLnZhbHVlcyA6IHsgLi4uZHVyLnZhbHVlcywgLi4uKGFsdHMudmFsdWVzIHx8IHt9KSB9LFxuICAgIGxvYzogZHVyLmxvYy5jbG9uZShhbHRzLmxvYyksXG4gICAgY29udmVyc2lvbkFjY3VyYWN5OiBhbHRzLmNvbnZlcnNpb25BY2N1cmFjeSB8fCBkdXIuY29udmVyc2lvbkFjY3VyYWN5LFxuICB9O1xuICByZXR1cm4gbmV3IER1cmF0aW9uKGNvbmYpO1xufVxuXG5mdW5jdGlvbiBhbnRpVHJ1bmMobikge1xuICByZXR1cm4gbiA8IDAgPyBNYXRoLmZsb29yKG4pIDogTWF0aC5jZWlsKG4pO1xufVxuXG4vLyBOQjogbXV0YXRlcyBwYXJhbWV0ZXJzXG5mdW5jdGlvbiBjb252ZXJ0KG1hdHJpeCwgZnJvbU1hcCwgZnJvbVVuaXQsIHRvTWFwLCB0b1VuaXQpIHtcbiAgY29uc3QgY29udiA9IG1hdHJpeFt0b1VuaXRdW2Zyb21Vbml0XSxcbiAgICByYXcgPSBmcm9tTWFwW2Zyb21Vbml0XSAvIGNvbnYsXG4gICAgc2FtZVNpZ24gPSBNYXRoLnNpZ24ocmF3KSA9PT0gTWF0aC5zaWduKHRvTWFwW3RvVW5pdF0pLFxuICAgIC8vIG9rLCBzbyB0aGlzIGlzIHdpbGQsIGJ1dCBzZWUgdGhlIG1hdHJpeCBpbiB0aGUgdGVzdHNcbiAgICBhZGRlZCA9XG4gICAgICAhc2FtZVNpZ24gJiYgdG9NYXBbdG9Vbml0XSAhPT0gMCAmJiBNYXRoLmFicyhyYXcpIDw9IDEgPyBhbnRpVHJ1bmMocmF3KSA6IE1hdGgudHJ1bmMocmF3KTtcbiAgdG9NYXBbdG9Vbml0XSArPSBhZGRlZDtcbiAgZnJvbU1hcFtmcm9tVW5pdF0gLT0gYWRkZWQgKiBjb252O1xufVxuXG4vLyBOQjogbXV0YXRlcyBwYXJhbWV0ZXJzXG5mdW5jdGlvbiBub3JtYWxpemVWYWx1ZXMobWF0cml4LCB2YWxzKSB7XG4gIHJldmVyc2VVbml0cy5yZWR1Y2UoKHByZXZpb3VzLCBjdXJyZW50KSA9PiB7XG4gICAgaWYgKCFpc1VuZGVmaW5lZCh2YWxzW2N1cnJlbnRdKSkge1xuICAgICAgaWYgKHByZXZpb3VzKSB7XG4gICAgICAgIGNvbnZlcnQobWF0cml4LCB2YWxzLCBwcmV2aW91cywgdmFscywgY3VycmVudCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gY3VycmVudDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHByZXZpb3VzO1xuICAgIH1cbiAgfSwgbnVsbCk7XG59XG5cbi8qKlxuICogQSBEdXJhdGlvbiBvYmplY3QgcmVwcmVzZW50cyBhIHBlcmlvZCBvZiB0aW1lLCBsaWtlIFwiMiBtb250aHNcIiBvciBcIjEgZGF5LCAxIGhvdXJcIi4gQ29uY2VwdHVhbGx5LCBpdCdzIGp1c3QgYSBtYXAgb2YgdW5pdHMgdG8gdGhlaXIgcXVhbnRpdGllcywgYWNjb21wYW5pZWQgYnkgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gYW5kIG1ldGhvZHMgZm9yIGNyZWF0aW5nLCBwYXJzaW5nLCBpbnRlcnJvZ2F0aW5nLCB0cmFuc2Zvcm1pbmcsIGFuZCBmb3JtYXR0aW5nIHRoZW0uIFRoZXkgY2FuIGJlIHVzZWQgb24gdGhlaXIgb3duIG9yIGluIGNvbmp1bmN0aW9uIHdpdGggb3RoZXIgTHV4b24gdHlwZXM7IGZvciBleGFtcGxlLCB5b3UgY2FuIHVzZSB7QGxpbmsgRGF0ZVRpbWUjcGx1c30gdG8gYWRkIGEgRHVyYXRpb24gb2JqZWN0IHRvIGEgRGF0ZVRpbWUsIHByb2R1Y2luZyBhbm90aGVyIERhdGVUaW1lLlxuICpcbiAqIEhlcmUgaXMgYSBicmllZiBvdmVydmlldyBvZiBjb21tb25seSB1c2VkIG1ldGhvZHMgYW5kIGdldHRlcnMgaW4gRHVyYXRpb246XG4gKlxuICogKiAqKkNyZWF0aW9uKiogVG8gY3JlYXRlIGEgRHVyYXRpb24sIHVzZSB7QGxpbmsgRHVyYXRpb24jZnJvbU1pbGxpc30sIHtAbGluayBEdXJhdGlvbiNmcm9tT2JqZWN0fSwgb3Ige0BsaW5rIER1cmF0aW9uI2Zyb21JU099LlxuICogKiAqKlVuaXQgdmFsdWVzKiogU2VlIHRoZSB7QGxpbmsgRHVyYXRpb24jeWVhcnN9LCB7QGxpbmsgRHVyYXRpb24jbW9udGhzfSwge0BsaW5rIER1cmF0aW9uI3dlZWtzfSwge0BsaW5rIER1cmF0aW9uI2RheXN9LCB7QGxpbmsgRHVyYXRpb24jaG91cnN9LCB7QGxpbmsgRHVyYXRpb24jbWludXRlc30sIHtAbGluayBEdXJhdGlvbiNzZWNvbmRzfSwge0BsaW5rIER1cmF0aW9uI21pbGxpc2Vjb25kc30gYWNjZXNzb3JzLlxuICogKiAqKkNvbmZpZ3VyYXRpb24qKiBTZWUgIHtAbGluayBEdXJhdGlvbiNsb2NhbGV9IGFuZCB7QGxpbmsgRHVyYXRpb24jbnVtYmVyaW5nU3lzdGVtfSBhY2Nlc3NvcnMuXG4gKiAqICoqVHJhbnNmb3JtYXRpb24qKiBUbyBjcmVhdGUgbmV3IER1cmF0aW9ucyBvdXQgb2Ygb2xkIG9uZXMgdXNlIHtAbGluayBEdXJhdGlvbiNwbHVzfSwge0BsaW5rIER1cmF0aW9uI21pbnVzfSwge0BsaW5rIER1cmF0aW9uI25vcm1hbGl6ZX0sIHtAbGluayBEdXJhdGlvbiNzZXR9LCB7QGxpbmsgRHVyYXRpb24jcmVjb25maWd1cmV9LCB7QGxpbmsgRHVyYXRpb24jc2hpZnRUb30sIGFuZCB7QGxpbmsgRHVyYXRpb24jbmVnYXRlfS5cbiAqICogKipPdXRwdXQqKiBUbyBjb252ZXJ0IHRoZSBEdXJhdGlvbiBpbnRvIG90aGVyIHJlcHJlc2VudGF0aW9ucywgc2VlIHtAbGluayBEdXJhdGlvbiNhc30sIHtAbGluayBEdXJhdGlvbiN0b0lTT30sIHtAbGluayBEdXJhdGlvbiN0b0Zvcm1hdH0sIGFuZCB7QGxpbmsgRHVyYXRpb24jdG9KU09OfVxuICpcbiAqIFRoZXJlJ3MgYXJlIG1vcmUgbWV0aG9kcyBkb2N1bWVudGVkIGJlbG93LiBJbiBhZGRpdGlvbiwgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gc3VidGxlciB0b3BpY3MgbGlrZSBpbnRlcm5hdGlvbmFsaXphdGlvbiBhbmQgdmFsaWRpdHksIHNlZSB0aGUgZXh0ZXJuYWwgZG9jdW1lbnRhdGlvbi5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRHVyYXRpb24ge1xuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGNvbnN0cnVjdG9yKGNvbmZpZykge1xuICAgIGNvbnN0IGFjY3VyYXRlID0gY29uZmlnLmNvbnZlcnNpb25BY2N1cmFjeSA9PT0gXCJsb25ndGVybVwiIHx8IGZhbHNlO1xuICAgIC8qKlxuICAgICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAgICAqL1xuICAgIHRoaXMudmFsdWVzID0gY29uZmlnLnZhbHVlcztcbiAgICAvKipcbiAgICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICAgKi9cbiAgICB0aGlzLmxvYyA9IGNvbmZpZy5sb2MgfHwgTG9jYWxlLmNyZWF0ZSgpO1xuICAgIC8qKlxuICAgICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAgICAqL1xuICAgIHRoaXMuY29udmVyc2lvbkFjY3VyYWN5ID0gYWNjdXJhdGUgPyBcImxvbmd0ZXJtXCIgOiBcImNhc3VhbFwiO1xuICAgIC8qKlxuICAgICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAgICAqL1xuICAgIHRoaXMuaW52YWxpZCA9IGNvbmZpZy5pbnZhbGlkIHx8IG51bGw7XG4gICAgLyoqXG4gICAgICogQGFjY2VzcyBwcml2YXRlXG4gICAgICovXG4gICAgdGhpcy5tYXRyaXggPSBhY2N1cmF0ZSA/IGFjY3VyYXRlTWF0cml4IDogY2FzdWFsTWF0cml4O1xuICAgIC8qKlxuICAgICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAgICAqL1xuICAgIHRoaXMuaXNMdXhvbkR1cmF0aW9uID0gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgRHVyYXRpb24gZnJvbSBhIG51bWJlciBvZiBtaWxsaXNlY29uZHMuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBjb3VudCBvZiBtaWxsaXNlY29uZHNcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIGZvciBwYXJzaW5nXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGU9J2VuLVVTJ10gLSB0aGUgbG9jYWxlIHRvIHVzZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5udW1iZXJpbmdTeXN0ZW0gLSB0aGUgbnVtYmVyaW5nIHN5c3RlbSB0byB1c2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmNvbnZlcnNpb25BY2N1cmFjeT0nY2FzdWFsJ10gLSB0aGUgY29udmVyc2lvbiBzeXN0ZW0gdG8gdXNlXG4gICAqIEByZXR1cm4ge0R1cmF0aW9ufVxuICAgKi9cbiAgc3RhdGljIGZyb21NaWxsaXMoY291bnQsIG9wdHMpIHtcbiAgICByZXR1cm4gRHVyYXRpb24uZnJvbU9iamVjdCh7IG1pbGxpc2Vjb25kczogY291bnQgfSwgb3B0cyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgRHVyYXRpb24gZnJvbSBhIEphdmFTY3JpcHQgb2JqZWN0IHdpdGgga2V5cyBsaWtlICd5ZWFycycgYW5kICdob3VycycuXG4gICAqIElmIHRoaXMgb2JqZWN0IGlzIGVtcHR5IHRoZW4gYSB6ZXJvIG1pbGxpc2Vjb25kcyBkdXJhdGlvbiBpcyByZXR1cm5lZC5cbiAgICogQHBhcmFtIHtPYmplY3R9IG9iaiAtIHRoZSBvYmplY3QgdG8gY3JlYXRlIHRoZSBEYXRlVGltZSBmcm9tXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoueWVhcnNcbiAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5xdWFydGVyc1xuICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLm1vbnRoc1xuICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLndlZWtzXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBvYmouZGF5c1xuICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLmhvdXJzXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoubWludXRlc1xuICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLnNlY29uZHNcbiAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5taWxsaXNlY29uZHNcbiAgICogQHBhcmFtIHtPYmplY3R9IFtvcHRzPVtdXSAtIG9wdGlvbnMgZm9yIGNyZWF0aW5nIHRoaXMgRHVyYXRpb25cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT0nZW4tVVMnXSAtIHRoZSBsb2NhbGUgdG8gdXNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHVzZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuY29udmVyc2lvbkFjY3VyYWN5PSdjYXN1YWwnXSAtIHRoZSBjb252ZXJzaW9uIHN5c3RlbSB0byB1c2VcbiAgICogQHJldHVybiB7RHVyYXRpb259XG4gICAqL1xuICBzdGF0aWMgZnJvbU9iamVjdChvYmosIG9wdHMgPSB7fSkge1xuICAgIGlmIChvYmogPT0gbnVsbCB8fCB0eXBlb2Ygb2JqICE9PSBcIm9iamVjdFwiKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoXG4gICAgICAgIGBEdXJhdGlvbi5mcm9tT2JqZWN0OiBhcmd1bWVudCBleHBlY3RlZCB0byBiZSBhbiBvYmplY3QsIGdvdCAke1xuICAgICAgICAgIG9iaiA9PT0gbnVsbCA/IFwibnVsbFwiIDogdHlwZW9mIG9ialxuICAgICAgICB9YFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IER1cmF0aW9uKHtcbiAgICAgIHZhbHVlczogbm9ybWFsaXplT2JqZWN0KG9iaiwgRHVyYXRpb24ubm9ybWFsaXplVW5pdCksXG4gICAgICBsb2M6IExvY2FsZS5mcm9tT2JqZWN0KG9wdHMpLFxuICAgICAgY29udmVyc2lvbkFjY3VyYWN5OiBvcHRzLmNvbnZlcnNpb25BY2N1cmFjeSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBEdXJhdGlvbiBmcm9tIER1cmF0aW9uTGlrZS5cbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3QgfCBudW1iZXIgfCBEdXJhdGlvbn0gZHVyYXRpb25MaWtlXG4gICAqIE9uZSBvZjpcbiAgICogLSBvYmplY3Qgd2l0aCBrZXlzIGxpa2UgJ3llYXJzJyBhbmQgJ2hvdXJzJy5cbiAgICogLSBudW1iZXIgcmVwcmVzZW50aW5nIG1pbGxpc2Vjb25kc1xuICAgKiAtIER1cmF0aW9uIGluc3RhbmNlXG4gICAqIEByZXR1cm4ge0R1cmF0aW9ufVxuICAgKi9cbiAgc3RhdGljIGZyb21EdXJhdGlvbkxpa2UoZHVyYXRpb25MaWtlKSB7XG4gICAgaWYgKGlzTnVtYmVyKGR1cmF0aW9uTGlrZSkpIHtcbiAgICAgIHJldHVybiBEdXJhdGlvbi5mcm9tTWlsbGlzKGR1cmF0aW9uTGlrZSk7XG4gICAgfSBlbHNlIGlmIChEdXJhdGlvbi5pc0R1cmF0aW9uKGR1cmF0aW9uTGlrZSkpIHtcbiAgICAgIHJldHVybiBkdXJhdGlvbkxpa2U7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgZHVyYXRpb25MaWtlID09PSBcIm9iamVjdFwiKSB7XG4gICAgICByZXR1cm4gRHVyYXRpb24uZnJvbU9iamVjdChkdXJhdGlvbkxpa2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoXG4gICAgICAgIGBVbmtub3duIGR1cmF0aW9uIGFyZ3VtZW50ICR7ZHVyYXRpb25MaWtlfSBvZiB0eXBlICR7dHlwZW9mIGR1cmF0aW9uTGlrZX1gXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBEdXJhdGlvbiBmcm9tIGFuIElTTyA4NjAxIGR1cmF0aW9uIHN0cmluZy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSB0ZXh0IHRvIHBhcnNlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucyBmb3IgcGFyc2luZ1xuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlPSdlbi1VUyddIC0gdGhlIGxvY2FsZSB0byB1c2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMubnVtYmVyaW5nU3lzdGVtIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0gdG8gdXNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5jb252ZXJzaW9uQWNjdXJhY3k9J2Nhc3VhbCddIC0gdGhlIGNvbnZlcnNpb24gc3lzdGVtIHRvIHVzZVxuICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT184NjAxI0R1cmF0aW9uc1xuICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tSVNPKCdQM1k2TTFXNERUMTJIMzBNNVMnKS50b09iamVjdCgpIC8vPT4geyB5ZWFyczogMywgbW9udGhzOiA2LCB3ZWVrczogMSwgZGF5czogNCwgaG91cnM6IDEyLCBtaW51dGVzOiAzMCwgc2Vjb25kczogNSB9XG4gICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21JU08oJ1BUMjNIJykudG9PYmplY3QoKSAvLz0+IHsgaG91cnM6IDIzIH1cbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbUlTTygnUDVZM00nKS50b09iamVjdCgpIC8vPT4geyB5ZWFyczogNSwgbW9udGhzOiAzIH1cbiAgICogQHJldHVybiB7RHVyYXRpb259XG4gICAqL1xuICBzdGF0aWMgZnJvbUlTTyh0ZXh0LCBvcHRzKSB7XG4gICAgY29uc3QgW3BhcnNlZF0gPSBwYXJzZUlTT0R1cmF0aW9uKHRleHQpO1xuICAgIGlmIChwYXJzZWQpIHtcbiAgICAgIHJldHVybiBEdXJhdGlvbi5mcm9tT2JqZWN0KHBhcnNlZCwgb3B0cyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBEdXJhdGlvbi5pbnZhbGlkKFwidW5wYXJzYWJsZVwiLCBgdGhlIGlucHV0IFwiJHt0ZXh0fVwiIGNhbid0IGJlIHBhcnNlZCBhcyBJU08gODYwMWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBEdXJhdGlvbiBmcm9tIGFuIElTTyA4NjAxIHRpbWUgc3RyaW5nLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAtIHRleHQgdG8gcGFyc2VcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIGZvciBwYXJzaW5nXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGU9J2VuLVVTJ10gLSB0aGUgbG9jYWxlIHRvIHVzZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5udW1iZXJpbmdTeXN0ZW0gLSB0aGUgbnVtYmVyaW5nIHN5c3RlbSB0byB1c2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmNvbnZlcnNpb25BY2N1cmFjeT0nY2FzdWFsJ10gLSB0aGUgY29udmVyc2lvbiBzeXN0ZW0gdG8gdXNlXG4gICAqIEBzZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPXzg2MDEjVGltZXNcbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbUlTT1RpbWUoJzExOjIyOjMzLjQ0NCcpLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAxMSwgbWludXRlczogMjIsIHNlY29uZHM6IDMzLCBtaWxsaXNlY29uZHM6IDQ0NCB9XG4gICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21JU09UaW1lKCcxMTowMCcpLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAxMSwgbWludXRlczogMCwgc2Vjb25kczogMCB9XG4gICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21JU09UaW1lKCdUMTE6MDAnKS50b09iamVjdCgpIC8vPT4geyBob3VyczogMTEsIG1pbnV0ZXM6IDAsIHNlY29uZHM6IDAgfVxuICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tSVNPVGltZSgnMTEwMCcpLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAxMSwgbWludXRlczogMCwgc2Vjb25kczogMCB9XG4gICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21JU09UaW1lKCdUMTEwMCcpLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAxMSwgbWludXRlczogMCwgc2Vjb25kczogMCB9XG4gICAqIEByZXR1cm4ge0R1cmF0aW9ufVxuICAgKi9cbiAgc3RhdGljIGZyb21JU09UaW1lKHRleHQsIG9wdHMpIHtcbiAgICBjb25zdCBbcGFyc2VkXSA9IHBhcnNlSVNPVGltZU9ubHkodGV4dCk7XG4gICAgaWYgKHBhcnNlZCkge1xuICAgICAgcmV0dXJuIER1cmF0aW9uLmZyb21PYmplY3QocGFyc2VkLCBvcHRzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIER1cmF0aW9uLmludmFsaWQoXCJ1bnBhcnNhYmxlXCIsIGB0aGUgaW5wdXQgXCIke3RleHR9XCIgY2FuJ3QgYmUgcGFyc2VkIGFzIElTTyA4NjAxYCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhbiBpbnZhbGlkIER1cmF0aW9uLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcmVhc29uIC0gc2ltcGxlIHN0cmluZyBvZiB3aHkgdGhpcyBkYXRldGltZSBpcyBpbnZhbGlkLiBTaG91bGQgbm90IGNvbnRhaW4gcGFyYW1ldGVycyBvciBhbnl0aGluZyBlbHNlIGRhdGEtZGVwZW5kZW50XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbZXhwbGFuYXRpb249bnVsbF0gLSBsb25nZXIgZXhwbGFuYXRpb24sIG1heSBpbmNsdWRlIHBhcmFtZXRlcnMgYW5kIG90aGVyIHVzZWZ1bCBkZWJ1Z2dpbmcgaW5mb3JtYXRpb25cbiAgICogQHJldHVybiB7RHVyYXRpb259XG4gICAqL1xuICBzdGF0aWMgaW52YWxpZChyZWFzb24sIGV4cGxhbmF0aW9uID0gbnVsbCkge1xuICAgIGlmICghcmVhc29uKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoXCJuZWVkIHRvIHNwZWNpZnkgYSByZWFzb24gdGhlIER1cmF0aW9uIGlzIGludmFsaWRcIik7XG4gICAgfVxuXG4gICAgY29uc3QgaW52YWxpZCA9IHJlYXNvbiBpbnN0YW5jZW9mIEludmFsaWQgPyByZWFzb24gOiBuZXcgSW52YWxpZChyZWFzb24sIGV4cGxhbmF0aW9uKTtcblxuICAgIGlmIChTZXR0aW5ncy50aHJvd09uSW52YWxpZCkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWREdXJhdGlvbkVycm9yKGludmFsaWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbmV3IER1cmF0aW9uKHsgaW52YWxpZCB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHN0YXRpYyBub3JtYWxpemVVbml0KHVuaXQpIHtcbiAgICBjb25zdCBub3JtYWxpemVkID0ge1xuICAgICAgeWVhcjogXCJ5ZWFyc1wiLFxuICAgICAgeWVhcnM6IFwieWVhcnNcIixcbiAgICAgIHF1YXJ0ZXI6IFwicXVhcnRlcnNcIixcbiAgICAgIHF1YXJ0ZXJzOiBcInF1YXJ0ZXJzXCIsXG4gICAgICBtb250aDogXCJtb250aHNcIixcbiAgICAgIG1vbnRoczogXCJtb250aHNcIixcbiAgICAgIHdlZWs6IFwid2Vla3NcIixcbiAgICAgIHdlZWtzOiBcIndlZWtzXCIsXG4gICAgICBkYXk6IFwiZGF5c1wiLFxuICAgICAgZGF5czogXCJkYXlzXCIsXG4gICAgICBob3VyOiBcImhvdXJzXCIsXG4gICAgICBob3VyczogXCJob3Vyc1wiLFxuICAgICAgbWludXRlOiBcIm1pbnV0ZXNcIixcbiAgICAgIG1pbnV0ZXM6IFwibWludXRlc1wiLFxuICAgICAgc2Vjb25kOiBcInNlY29uZHNcIixcbiAgICAgIHNlY29uZHM6IFwic2Vjb25kc1wiLFxuICAgICAgbWlsbGlzZWNvbmQ6IFwibWlsbGlzZWNvbmRzXCIsXG4gICAgICBtaWxsaXNlY29uZHM6IFwibWlsbGlzZWNvbmRzXCIsXG4gICAgfVt1bml0ID8gdW5pdC50b0xvd2VyQ2FzZSgpIDogdW5pdF07XG5cbiAgICBpZiAoIW5vcm1hbGl6ZWQpIHRocm93IG5ldyBJbnZhbGlkVW5pdEVycm9yKHVuaXQpO1xuXG4gICAgcmV0dXJuIG5vcm1hbGl6ZWQ7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgYW4gb2JqZWN0IGlzIGEgRHVyYXRpb24uIFdvcmtzIGFjcm9zcyBjb250ZXh0IGJvdW5kYXJpZXNcbiAgICogQHBhcmFtIHtvYmplY3R9IG9cbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICovXG4gIHN0YXRpYyBpc0R1cmF0aW9uKG8pIHtcbiAgICByZXR1cm4gKG8gJiYgby5pc0x1eG9uRHVyYXRpb24pIHx8IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCAgdGhlIGxvY2FsZSBvZiBhIER1cmF0aW9uLCBzdWNoICdlbi1HQidcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIGdldCBsb2NhbGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMubG9jLmxvY2FsZSA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBudW1iZXJpbmcgc3lzdGVtIG9mIGEgRHVyYXRpb24sIHN1Y2ggJ2JlbmcnLiBUaGUgbnVtYmVyaW5nIHN5c3RlbSBpcyB1c2VkIHdoZW4gZm9ybWF0dGluZyB0aGUgRHVyYXRpb25cbiAgICpcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIGdldCBudW1iZXJpbmdTeXN0ZW0oKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMubG9jLm51bWJlcmluZ1N5c3RlbSA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIER1cmF0aW9uIGZvcm1hdHRlZCBhY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmllZCBmb3JtYXQgc3RyaW5nLiBZb3UgbWF5IHVzZSB0aGVzZSB0b2tlbnM6XG4gICAqICogYFNgIGZvciBtaWxsaXNlY29uZHNcbiAgICogKiBgc2AgZm9yIHNlY29uZHNcbiAgICogKiBgbWAgZm9yIG1pbnV0ZXNcbiAgICogKiBgaGAgZm9yIGhvdXJzXG4gICAqICogYGRgIGZvciBkYXlzXG4gICAqICogYHdgIGZvciB3ZWVrc1xuICAgKiAqIGBNYCBmb3IgbW9udGhzXG4gICAqICogYHlgIGZvciB5ZWFyc1xuICAgKiBOb3RlczpcbiAgICogKiBBZGQgcGFkZGluZyBieSByZXBlYXRpbmcgdGhlIHRva2VuLCBlLmcuIFwieXlcIiBwYWRzIHRoZSB5ZWFycyB0byB0d28gZGlnaXRzLCBcImhoaGhcIiBwYWRzIHRoZSBob3VycyBvdXQgdG8gZm91ciBkaWdpdHNcbiAgICogKiBUb2tlbnMgY2FuIGJlIGVzY2FwZWQgYnkgd3JhcHBpbmcgd2l0aCBzaW5nbGUgcXVvdGVzLlxuICAgKiAqIFRoZSBkdXJhdGlvbiB3aWxsIGJlIGNvbnZlcnRlZCB0byB0aGUgc2V0IG9mIHVuaXRzIGluIHRoZSBmb3JtYXQgc3RyaW5nIHVzaW5nIHtAbGluayBEdXJhdGlvbiNzaGlmdFRvfSBhbmQgdGhlIER1cmF0aW9ucydzIGNvbnZlcnNpb24gYWNjdXJhY3kgc2V0dGluZy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZtdCAtIHRoZSBmb3JtYXQgc3RyaW5nXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9uc1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmZsb29yPXRydWVdIC0gZmxvb3IgbnVtZXJpY2FsIHZhbHVlc1xuICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgeWVhcnM6IDEsIGRheXM6IDYsIHNlY29uZHM6IDIgfSkudG9Gb3JtYXQoXCJ5IGQgc1wiKSAvLz0+IFwiMSA2IDJcIlxuICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgeWVhcnM6IDEsIGRheXM6IDYsIHNlY29uZHM6IDIgfSkudG9Gb3JtYXQoXCJ5eSBkZCBzc3NcIikgLy89PiBcIjAxIDA2IDAwMlwiXG4gICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyB5ZWFyczogMSwgZGF5czogNiwgc2Vjb25kczogMiB9KS50b0Zvcm1hdChcIk0gU1wiKSAvLz0+IFwiMTIgNTE4NDAyMDAwXCJcbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgdG9Gb3JtYXQoZm10LCBvcHRzID0ge30pIHtcbiAgICAvLyByZXZlcnNlLWNvbXBhdCBzaW5jZSAxLjI7IHdlIGFsd2F5cyByb3VuZCBkb3duIG5vdywgbmV2ZXIgdXAsIGFuZCB3ZSBkbyBpdCBieSBkZWZhdWx0XG4gICAgY29uc3QgZm10T3B0cyA9IHtcbiAgICAgIC4uLm9wdHMsXG4gICAgICBmbG9vcjogb3B0cy5yb3VuZCAhPT0gZmFsc2UgJiYgb3B0cy5mbG9vciAhPT0gZmFsc2UsXG4gICAgfTtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkXG4gICAgICA/IEZvcm1hdHRlci5jcmVhdGUodGhpcy5sb2MsIGZtdE9wdHMpLmZvcm1hdER1cmF0aW9uRnJvbVN0cmluZyh0aGlzLCBmbXQpXG4gICAgICA6IElOVkFMSUQ7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIER1cmF0aW9uIHdpdGggYWxsIHVuaXRzIGluY2x1ZGVkLlxuICAgKiBUbyBtb2RpZnkgaXRzIGJlaGF2aW9yIHVzZSB0aGUgYGxpc3RTdHlsZWAgYW5kIGFueSBJbnRsLk51bWJlckZvcm1hdCBvcHRpb24sIHRob3VnaCBgdW5pdERpc3BsYXlgIGlzIGVzcGVjaWFsbHkgcmVsZXZhbnQuXG4gICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvSW50bC9OdW1iZXJGb3JtYXRcbiAgICogQHBhcmFtIG9wdHMgLSBPbiBvcHRpb24gb2JqZWN0IHRvIG92ZXJyaWRlIHRoZSBmb3JtYXR0aW5nLiBBY2NlcHRzIHRoZSBzYW1lIGtleXMgYXMgdGhlIG9wdGlvbnMgcGFyYW1ldGVyIG9mIHRoZSBuYXRpdmUgYEludC5OdW1iZXJGb3JtYXRgIGNvbnN0cnVjdG9yLCBhcyB3ZWxsIGFzIGBsaXN0U3R5bGVgLlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGBqc1xuICAgKiB2YXIgZHVyID0gRHVyYXRpb24uZnJvbU9iamVjdCh7IGRheXM6IDEsIGhvdXJzOiA1LCBtaW51dGVzOiA2IH0pXG4gICAqIGR1ci50b0h1bWFuKCkgLy89PiAnMSBkYXksIDUgaG91cnMsIDYgbWludXRlcydcbiAgICogZHVyLnRvSHVtYW4oeyBsaXN0U3R5bGU6IFwibG9uZ1wiIH0pIC8vPT4gJzEgZGF5LCA1IGhvdXJzLCBhbmQgNiBtaW51dGVzJ1xuICAgKiBkdXIudG9IdW1hbih7IHVuaXREaXNwbGF5OiBcInNob3J0XCIgfSkgLy89PiAnMSBkYXksIDUgaHIsIDYgbWluJ1xuICAgKiBgYGBcbiAgICovXG4gIHRvSHVtYW4ob3B0cyA9IHt9KSB7XG4gICAgY29uc3QgbCA9IG9yZGVyZWRVbml0c1xuICAgICAgLm1hcCgodW5pdCkgPT4ge1xuICAgICAgICBjb25zdCB2YWwgPSB0aGlzLnZhbHVlc1t1bml0XTtcbiAgICAgICAgaWYgKGlzVW5kZWZpbmVkKHZhbCkpIHtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5sb2NcbiAgICAgICAgICAubnVtYmVyRm9ybWF0dGVyKHsgc3R5bGU6IFwidW5pdFwiLCB1bml0RGlzcGxheTogXCJsb25nXCIsIC4uLm9wdHMsIHVuaXQ6IHVuaXQuc2xpY2UoMCwgLTEpIH0pXG4gICAgICAgICAgLmZvcm1hdCh2YWwpO1xuICAgICAgfSlcbiAgICAgIC5maWx0ZXIoKG4pID0+IG4pO1xuXG4gICAgcmV0dXJuIHRoaXMubG9jXG4gICAgICAubGlzdEZvcm1hdHRlcih7IHR5cGU6IFwiY29uanVuY3Rpb25cIiwgc3R5bGU6IG9wdHMubGlzdFN0eWxlIHx8IFwibmFycm93XCIsIC4uLm9wdHMgfSlcbiAgICAgIC5mb3JtYXQobCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIEphdmFTY3JpcHQgb2JqZWN0IHdpdGggdGhpcyBEdXJhdGlvbidzIHZhbHVlcy5cbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IHllYXJzOiAxLCBkYXlzOiA2LCBzZWNvbmRzOiAyIH0pLnRvT2JqZWN0KCkgLy89PiB7IHllYXJzOiAxLCBkYXlzOiA2LCBzZWNvbmRzOiAyIH1cbiAgICogQHJldHVybiB7T2JqZWN0fVxuICAgKi9cbiAgdG9PYmplY3QoKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB7fTtcbiAgICByZXR1cm4geyAuLi50aGlzLnZhbHVlcyB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gSVNPIDg2MDEtY29tcGxpYW50IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIER1cmF0aW9uLlxuICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT184NjAxI0R1cmF0aW9uc1xuICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgeWVhcnM6IDMsIHNlY29uZHM6IDQ1IH0pLnRvSVNPKCkgLy89PiAnUDNZVDQ1UydcbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IG1vbnRoczogNCwgc2Vjb25kczogNDUgfSkudG9JU08oKSAvLz0+ICdQNE1UNDVTJ1xuICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgbW9udGhzOiA1IH0pLnRvSVNPKCkgLy89PiAnUDVNJ1xuICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgbWludXRlczogNSB9KS50b0lTTygpIC8vPT4gJ1BUNU0nXG4gICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBtaWxsaXNlY29uZHM6IDYgfSkudG9JU08oKSAvLz0+ICdQVDAuMDA2UydcbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgdG9JU08oKSB7XG4gICAgLy8gd2UgY291bGQgdXNlIHRoZSBmb3JtYXR0ZXIsIGJ1dCB0aGlzIGlzIGFuIGVhc2llciB3YXkgdG8gZ2V0IHRoZSBtaW5pbXVtIHN0cmluZ1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gbnVsbDtcblxuICAgIGxldCBzID0gXCJQXCI7XG4gICAgaWYgKHRoaXMueWVhcnMgIT09IDApIHMgKz0gdGhpcy55ZWFycyArIFwiWVwiO1xuICAgIGlmICh0aGlzLm1vbnRocyAhPT0gMCB8fCB0aGlzLnF1YXJ0ZXJzICE9PSAwKSBzICs9IHRoaXMubW9udGhzICsgdGhpcy5xdWFydGVycyAqIDMgKyBcIk1cIjtcbiAgICBpZiAodGhpcy53ZWVrcyAhPT0gMCkgcyArPSB0aGlzLndlZWtzICsgXCJXXCI7XG4gICAgaWYgKHRoaXMuZGF5cyAhPT0gMCkgcyArPSB0aGlzLmRheXMgKyBcIkRcIjtcbiAgICBpZiAodGhpcy5ob3VycyAhPT0gMCB8fCB0aGlzLm1pbnV0ZXMgIT09IDAgfHwgdGhpcy5zZWNvbmRzICE9PSAwIHx8IHRoaXMubWlsbGlzZWNvbmRzICE9PSAwKVxuICAgICAgcyArPSBcIlRcIjtcbiAgICBpZiAodGhpcy5ob3VycyAhPT0gMCkgcyArPSB0aGlzLmhvdXJzICsgXCJIXCI7XG4gICAgaWYgKHRoaXMubWludXRlcyAhPT0gMCkgcyArPSB0aGlzLm1pbnV0ZXMgKyBcIk1cIjtcbiAgICBpZiAodGhpcy5zZWNvbmRzICE9PSAwIHx8IHRoaXMubWlsbGlzZWNvbmRzICE9PSAwKVxuICAgICAgLy8gdGhpcyB3aWxsIGhhbmRsZSBcImZsb2F0aW5nIHBvaW50IG1hZG5lc3NcIiBieSByZW1vdmluZyBleHRyYSBkZWNpbWFsIHBsYWNlc1xuICAgICAgLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNTg4MDA0L2lzLWZsb2F0aW5nLXBvaW50LW1hdGgtYnJva2VuXG4gICAgICBzICs9IHJvdW5kVG8odGhpcy5zZWNvbmRzICsgdGhpcy5taWxsaXNlY29uZHMgLyAxMDAwLCAzKSArIFwiU1wiO1xuICAgIGlmIChzID09PSBcIlBcIikgcyArPSBcIlQwU1wiO1xuICAgIHJldHVybiBzO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gSVNPIDg2MDEtY29tcGxpYW50IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIER1cmF0aW9uLCBmb3JtYXR0ZWQgYXMgYSB0aW1lIG9mIGRheS5cbiAgICogTm90ZSB0aGF0IHRoaXMgd2lsbCByZXR1cm4gbnVsbCBpZiB0aGUgZHVyYXRpb24gaXMgaW52YWxpZCwgbmVnYXRpdmUsIG9yIGVxdWFsIHRvIG9yIGdyZWF0ZXIgdGhhbiAyNCBob3Vycy5cbiAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMSNUaW1lc1xuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnNcbiAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zdXBwcmVzc01pbGxpc2Vjb25kcz1mYWxzZV0gLSBleGNsdWRlIG1pbGxpc2Vjb25kcyBmcm9tIHRoZSBmb3JtYXQgaWYgdGhleSdyZSAwXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuc3VwcHJlc3NTZWNvbmRzPWZhbHNlXSAtIGV4Y2x1ZGUgc2Vjb25kcyBmcm9tIHRoZSBmb3JtYXQgaWYgdGhleSdyZSAwXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuaW5jbHVkZVByZWZpeD1mYWxzZV0gLSBpbmNsdWRlIHRoZSBgVGAgcHJlZml4XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5mb3JtYXQ9J2V4dGVuZGVkJ10gLSBjaG9vc2UgYmV0d2VlbiB0aGUgYmFzaWMgYW5kIGV4dGVuZGVkIGZvcm1hdFxuICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDExIH0pLnRvSVNPVGltZSgpIC8vPT4gJzExOjAwOjAwLjAwMCdcbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxMSB9KS50b0lTT1RpbWUoeyBzdXBwcmVzc01pbGxpc2Vjb25kczogdHJ1ZSB9KSAvLz0+ICcxMTowMDowMCdcbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxMSB9KS50b0lTT1RpbWUoeyBzdXBwcmVzc1NlY29uZHM6IHRydWUgfSkgLy89PiAnMTE6MDAnXG4gICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMTEgfSkudG9JU09UaW1lKHsgaW5jbHVkZVByZWZpeDogdHJ1ZSB9KSAvLz0+ICdUMTE6MDA6MDAuMDAwJ1xuICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDExIH0pLnRvSVNPVGltZSh7IGZvcm1hdDogJ2Jhc2ljJyB9KSAvLz0+ICcxMTAwMDAuMDAwJ1xuICAgKiBAcmV0dXJuIHtzdHJpbmd9XG4gICAqL1xuICB0b0lTT1RpbWUob3B0cyA9IHt9KSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBudWxsO1xuXG4gICAgY29uc3QgbWlsbGlzID0gdGhpcy50b01pbGxpcygpO1xuICAgIGlmIChtaWxsaXMgPCAwIHx8IG1pbGxpcyA+PSA4NjQwMDAwMCkgcmV0dXJuIG51bGw7XG5cbiAgICBvcHRzID0ge1xuICAgICAgc3VwcHJlc3NNaWxsaXNlY29uZHM6IGZhbHNlLFxuICAgICAgc3VwcHJlc3NTZWNvbmRzOiBmYWxzZSxcbiAgICAgIGluY2x1ZGVQcmVmaXg6IGZhbHNlLFxuICAgICAgZm9ybWF0OiBcImV4dGVuZGVkXCIsXG4gICAgICAuLi5vcHRzLFxuICAgIH07XG5cbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuc2hpZnRUbyhcImhvdXJzXCIsIFwibWludXRlc1wiLCBcInNlY29uZHNcIiwgXCJtaWxsaXNlY29uZHNcIik7XG5cbiAgICBsZXQgZm10ID0gb3B0cy5mb3JtYXQgPT09IFwiYmFzaWNcIiA/IFwiaGhtbVwiIDogXCJoaDptbVwiO1xuXG4gICAgaWYgKCFvcHRzLnN1cHByZXNzU2Vjb25kcyB8fCB2YWx1ZS5zZWNvbmRzICE9PSAwIHx8IHZhbHVlLm1pbGxpc2Vjb25kcyAhPT0gMCkge1xuICAgICAgZm10ICs9IG9wdHMuZm9ybWF0ID09PSBcImJhc2ljXCIgPyBcInNzXCIgOiBcIjpzc1wiO1xuICAgICAgaWYgKCFvcHRzLnN1cHByZXNzTWlsbGlzZWNvbmRzIHx8IHZhbHVlLm1pbGxpc2Vjb25kcyAhPT0gMCkge1xuICAgICAgICBmbXQgKz0gXCIuU1NTXCI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IHN0ciA9IHZhbHVlLnRvRm9ybWF0KGZtdCk7XG5cbiAgICBpZiAob3B0cy5pbmNsdWRlUHJlZml4KSB7XG4gICAgICBzdHIgPSBcIlRcIiArIHN0cjtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RyO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gSVNPIDg2MDEgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEdXJhdGlvbiBhcHByb3ByaWF0ZSBmb3IgdXNlIGluIEpTT04uXG4gICAqIEByZXR1cm4ge3N0cmluZ31cbiAgICovXG4gIHRvSlNPTigpIHtcbiAgICByZXR1cm4gdGhpcy50b0lTTygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gSVNPIDg2MDEgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEdXJhdGlvbiBhcHByb3ByaWF0ZSBmb3IgdXNlIGluIGRlYnVnZ2luZy5cbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMudG9JU08oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIG1pbGxpc2Vjb25kcyB2YWx1ZSBvZiB0aGlzIER1cmF0aW9uLlxuICAgKiBAcmV0dXJuIHtudW1iZXJ9XG4gICAqL1xuICB0b01pbGxpcygpIHtcbiAgICByZXR1cm4gdGhpcy5hcyhcIm1pbGxpc2Vjb25kc1wiKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIG1pbGxpc2Vjb25kcyB2YWx1ZSBvZiB0aGlzIER1cmF0aW9uLiBBbGlhcyBvZiB7QGxpbmsgdG9NaWxsaXN9XG4gICAqIEByZXR1cm4ge251bWJlcn1cbiAgICovXG4gIHZhbHVlT2YoKSB7XG4gICAgcmV0dXJuIHRoaXMudG9NaWxsaXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYWtlIHRoaXMgRHVyYXRpb24gbG9uZ2VyIGJ5IHRoZSBzcGVjaWZpZWQgYW1vdW50LiBSZXR1cm4gYSBuZXdseS1jb25zdHJ1Y3RlZCBEdXJhdGlvbi5cbiAgICogQHBhcmFtIHtEdXJhdGlvbnxPYmplY3R8bnVtYmVyfSBkdXJhdGlvbiAtIFRoZSBhbW91bnQgdG8gYWRkLiBFaXRoZXIgYSBMdXhvbiBEdXJhdGlvbiwgYSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzLCB0aGUgb2JqZWN0IGFyZ3VtZW50IHRvIER1cmF0aW9uLmZyb21PYmplY3QoKVxuICAgKiBAcmV0dXJuIHtEdXJhdGlvbn1cbiAgICovXG4gIHBsdXMoZHVyYXRpb24pIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7XG5cbiAgICBjb25zdCBkdXIgPSBEdXJhdGlvbi5mcm9tRHVyYXRpb25MaWtlKGR1cmF0aW9uKSxcbiAgICAgIHJlc3VsdCA9IHt9O1xuXG4gICAgZm9yIChjb25zdCBrIG9mIG9yZGVyZWRVbml0cykge1xuICAgICAgaWYgKGhhc093blByb3BlcnR5KGR1ci52YWx1ZXMsIGspIHx8IGhhc093blByb3BlcnR5KHRoaXMudmFsdWVzLCBrKSkge1xuICAgICAgICByZXN1bHRba10gPSBkdXIuZ2V0KGspICsgdGhpcy5nZXQoayk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGNsb25lKHRoaXMsIHsgdmFsdWVzOiByZXN1bHQgfSwgdHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICogTWFrZSB0aGlzIER1cmF0aW9uIHNob3J0ZXIgYnkgdGhlIHNwZWNpZmllZCBhbW91bnQuIFJldHVybiBhIG5ld2x5LWNvbnN0cnVjdGVkIER1cmF0aW9uLlxuICAgKiBAcGFyYW0ge0R1cmF0aW9ufE9iamVjdHxudW1iZXJ9IGR1cmF0aW9uIC0gVGhlIGFtb3VudCB0byBzdWJ0cmFjdC4gRWl0aGVyIGEgTHV4b24gRHVyYXRpb24sIGEgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcywgdGhlIG9iamVjdCBhcmd1bWVudCB0byBEdXJhdGlvbi5mcm9tT2JqZWN0KClcbiAgICogQHJldHVybiB7RHVyYXRpb259XG4gICAqL1xuICBtaW51cyhkdXJhdGlvbikge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpcztcblxuICAgIGNvbnN0IGR1ciA9IER1cmF0aW9uLmZyb21EdXJhdGlvbkxpa2UoZHVyYXRpb24pO1xuICAgIHJldHVybiB0aGlzLnBsdXMoZHVyLm5lZ2F0ZSgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTY2FsZSB0aGlzIER1cmF0aW9uIGJ5IHRoZSBzcGVjaWZpZWQgYW1vdW50LiBSZXR1cm4gYSBuZXdseS1jb25zdHJ1Y3RlZCBEdXJhdGlvbi5cbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gZm4gLSBUaGUgZnVuY3Rpb24gdG8gYXBwbHkgdG8gZWFjaCB1bml0LiBBcml0eSBpcyAxIG9yIDI6IHRoZSB2YWx1ZSBvZiB0aGUgdW5pdCBhbmQsIG9wdGlvbmFsbHksIHRoZSB1bml0IG5hbWUuIE11c3QgcmV0dXJuIGEgbnVtYmVyLlxuICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDEsIG1pbnV0ZXM6IDMwIH0pLm1hcFVuaXRzKHggPT4geCAqIDIpIC8vPT4geyBob3VyczogMiwgbWludXRlczogNjAgfVxuICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDEsIG1pbnV0ZXM6IDMwIH0pLm1hcFVuaXRzKCh4LCB1KSA9PiB1ID09PSBcImhvdXJcIiA/IHggKiAyIDogeCkgLy89PiB7IGhvdXJzOiAyLCBtaW51dGVzOiAzMCB9XG4gICAqIEByZXR1cm4ge0R1cmF0aW9ufVxuICAgKi9cbiAgbWFwVW5pdHMoZm4pIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7XG4gICAgY29uc3QgcmVzdWx0ID0ge307XG4gICAgZm9yIChjb25zdCBrIG9mIE9iamVjdC5rZXlzKHRoaXMudmFsdWVzKSkge1xuICAgICAgcmVzdWx0W2tdID0gYXNOdW1iZXIoZm4odGhpcy52YWx1ZXNba10sIGspKTtcbiAgICB9XG4gICAgcmV0dXJuIGNsb25lKHRoaXMsIHsgdmFsdWVzOiByZXN1bHQgfSwgdHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSB2YWx1ZSBvZiB1bml0LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdW5pdCAtIGEgdW5pdCBzdWNoIGFzICdtaW51dGUnIG9yICdkYXknXG4gICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3Qoe3llYXJzOiAyLCBkYXlzOiAzfSkuZ2V0KCd5ZWFycycpIC8vPT4gMlxuICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHt5ZWFyczogMiwgZGF5czogM30pLmdldCgnbW9udGhzJykgLy89PiAwXG4gICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3Qoe3llYXJzOiAyLCBkYXlzOiAzfSkuZ2V0KCdkYXlzJykgLy89PiAzXG4gICAqIEByZXR1cm4ge251bWJlcn1cbiAgICovXG4gIGdldCh1bml0KSB7XG4gICAgcmV0dXJuIHRoaXNbRHVyYXRpb24ubm9ybWFsaXplVW5pdCh1bml0KV07XG4gIH1cblxuICAvKipcbiAgICogXCJTZXRcIiB0aGUgdmFsdWVzIG9mIHNwZWNpZmllZCB1bml0cy4gUmV0dXJuIGEgbmV3bHktY29uc3RydWN0ZWQgRHVyYXRpb24uXG4gICAqIEBwYXJhbSB7T2JqZWN0fSB2YWx1ZXMgLSBhIG1hcHBpbmcgb2YgdW5pdHMgdG8gbnVtYmVyc1xuICAgKiBAZXhhbXBsZSBkdXIuc2V0KHsgeWVhcnM6IDIwMTcgfSlcbiAgICogQGV4YW1wbGUgZHVyLnNldCh7IGhvdXJzOiA4LCBtaW51dGVzOiAzMCB9KVxuICAgKiBAcmV0dXJuIHtEdXJhdGlvbn1cbiAgICovXG4gIHNldCh2YWx1ZXMpIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7XG5cbiAgICBjb25zdCBtaXhlZCA9IHsgLi4udGhpcy52YWx1ZXMsIC4uLm5vcm1hbGl6ZU9iamVjdCh2YWx1ZXMsIER1cmF0aW9uLm5vcm1hbGl6ZVVuaXQpIH07XG4gICAgcmV0dXJuIGNsb25lKHRoaXMsIHsgdmFsdWVzOiBtaXhlZCB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBcIlNldFwiIHRoZSBsb2NhbGUgYW5kL29yIG51bWJlcmluZ1N5c3RlbS4gIFJldHVybnMgYSBuZXdseS1jb25zdHJ1Y3RlZCBEdXJhdGlvbi5cbiAgICogQGV4YW1wbGUgZHVyLnJlY29uZmlndXJlKHsgbG9jYWxlOiAnZW4tR0InIH0pXG4gICAqIEByZXR1cm4ge0R1cmF0aW9ufVxuICAgKi9cbiAgcmVjb25maWd1cmUoeyBsb2NhbGUsIG51bWJlcmluZ1N5c3RlbSwgY29udmVyc2lvbkFjY3VyYWN5IH0gPSB7fSkge1xuICAgIGNvbnN0IGxvYyA9IHRoaXMubG9jLmNsb25lKHsgbG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0gfSksXG4gICAgICBvcHRzID0geyBsb2MgfTtcblxuICAgIGlmIChjb252ZXJzaW9uQWNjdXJhY3kpIHtcbiAgICAgIG9wdHMuY29udmVyc2lvbkFjY3VyYWN5ID0gY29udmVyc2lvbkFjY3VyYWN5O1xuICAgIH1cblxuICAgIHJldHVybiBjbG9uZSh0aGlzLCBvcHRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgZHVyYXRpb24gaW4gdGhlIHNwZWNpZmllZCB1bml0LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdW5pdCAtIGEgdW5pdCBzdWNoIGFzICdtaW51dGVzJyBvciAnZGF5cydcbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7eWVhcnM6IDF9KS5hcygnZGF5cycpIC8vPT4gMzY1XG4gICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3Qoe3llYXJzOiAxfSkuYXMoJ21vbnRocycpIC8vPT4gMTJcbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7aG91cnM6IDYwfSkuYXMoJ2RheXMnKSAvLz0+IDIuNVxuICAgKiBAcmV0dXJuIHtudW1iZXJ9XG4gICAqL1xuICBhcyh1bml0KSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMuc2hpZnRUbyh1bml0KS5nZXQodW5pdCkgOiBOYU47XG4gIH1cblxuICAvKipcbiAgICogUmVkdWNlIHRoaXMgRHVyYXRpb24gdG8gaXRzIGNhbm9uaWNhbCByZXByZXNlbnRhdGlvbiBpbiBpdHMgY3VycmVudCB1bml0cy5cbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IHllYXJzOiAyLCBkYXlzOiA1MDAwIH0pLm5vcm1hbGl6ZSgpLnRvT2JqZWN0KCkgLy89PiB7IHllYXJzOiAxNSwgZGF5czogMjU1IH1cbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxMiwgbWludXRlczogLTQ1IH0pLm5vcm1hbGl6ZSgpLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAxMSwgbWludXRlczogMTUgfVxuICAgKiBAcmV0dXJuIHtEdXJhdGlvbn1cbiAgICovXG4gIG5vcm1hbGl6ZSgpIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7XG4gICAgY29uc3QgdmFscyA9IHRoaXMudG9PYmplY3QoKTtcbiAgICBub3JtYWxpemVWYWx1ZXModGhpcy5tYXRyaXgsIHZhbHMpO1xuICAgIHJldHVybiBjbG9uZSh0aGlzLCB7IHZhbHVlczogdmFscyB9LCB0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IHRoaXMgRHVyYXRpb24gaW50byBpdHMgcmVwcmVzZW50YXRpb24gaW4gYSBkaWZmZXJlbnQgc2V0IG9mIHVuaXRzLlxuICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDEsIHNlY29uZHM6IDMwIH0pLnNoaWZ0VG8oJ21pbnV0ZXMnLCAnbWlsbGlzZWNvbmRzJykudG9PYmplY3QoKSAvLz0+IHsgbWludXRlczogNjAsIG1pbGxpc2Vjb25kczogMzAwMDAgfVxuICAgKiBAcmV0dXJuIHtEdXJhdGlvbn1cbiAgICovXG4gIHNoaWZ0VG8oLi4udW5pdHMpIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7XG5cbiAgICBpZiAodW5pdHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICB1bml0cyA9IHVuaXRzLm1hcCgodSkgPT4gRHVyYXRpb24ubm9ybWFsaXplVW5pdCh1KSk7XG5cbiAgICBjb25zdCBidWlsdCA9IHt9LFxuICAgICAgYWNjdW11bGF0ZWQgPSB7fSxcbiAgICAgIHZhbHMgPSB0aGlzLnRvT2JqZWN0KCk7XG4gICAgbGV0IGxhc3RVbml0O1xuXG4gICAgZm9yIChjb25zdCBrIG9mIG9yZGVyZWRVbml0cykge1xuICAgICAgaWYgKHVuaXRzLmluZGV4T2YoaykgPj0gMCkge1xuICAgICAgICBsYXN0VW5pdCA9IGs7XG5cbiAgICAgICAgbGV0IG93biA9IDA7XG5cbiAgICAgICAgLy8gYW55dGhpbmcgd2UgaGF2ZW4ndCBib2lsZWQgZG93biB5ZXQgc2hvdWxkIGdldCBib2lsZWQgdG8gdGhpcyB1bml0XG4gICAgICAgIGZvciAoY29uc3QgYWsgaW4gYWNjdW11bGF0ZWQpIHtcbiAgICAgICAgICBvd24gKz0gdGhpcy5tYXRyaXhbYWtdW2tdICogYWNjdW11bGF0ZWRbYWtdO1xuICAgICAgICAgIGFjY3VtdWxhdGVkW2FrXSA9IDA7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBwbHVzIGFueXRoaW5nIHRoYXQncyBhbHJlYWR5IGluIHRoaXMgdW5pdFxuICAgICAgICBpZiAoaXNOdW1iZXIodmFsc1trXSkpIHtcbiAgICAgICAgICBvd24gKz0gdmFsc1trXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGkgPSBNYXRoLnRydW5jKG93bik7XG4gICAgICAgIGJ1aWx0W2tdID0gaTtcbiAgICAgICAgYWNjdW11bGF0ZWRba10gPSAob3duICogMTAwMCAtIGkgKiAxMDAwKSAvIDEwMDA7XG5cbiAgICAgICAgLy8gcGx1cyBhbnl0aGluZyBmdXJ0aGVyIGRvd24gdGhlIGNoYWluIHRoYXQgc2hvdWxkIGJlIHJvbGxlZCB1cCBpbiB0byB0aGlzXG4gICAgICAgIGZvciAoY29uc3QgZG93biBpbiB2YWxzKSB7XG4gICAgICAgICAgaWYgKG9yZGVyZWRVbml0cy5pbmRleE9mKGRvd24pID4gb3JkZXJlZFVuaXRzLmluZGV4T2YoaykpIHtcbiAgICAgICAgICAgIGNvbnZlcnQodGhpcy5tYXRyaXgsIHZhbHMsIGRvd24sIGJ1aWx0LCBrKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gb3RoZXJ3aXNlLCBrZWVwIGl0IGluIHRoZSB3aW5ncyB0byBib2lsIGl0IGxhdGVyXG4gICAgICB9IGVsc2UgaWYgKGlzTnVtYmVyKHZhbHNba10pKSB7XG4gICAgICAgIGFjY3VtdWxhdGVkW2tdID0gdmFsc1trXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBhbnl0aGluZyBsZWZ0b3ZlciBiZWNvbWVzIHRoZSBkZWNpbWFsIGZvciB0aGUgbGFzdCB1bml0XG4gICAgLy8gbGFzdFVuaXQgbXVzdCBiZSBkZWZpbmVkIHNpbmNlIHVuaXRzIGlzIG5vdCBlbXB0eVxuICAgIGZvciAoY29uc3Qga2V5IGluIGFjY3VtdWxhdGVkKSB7XG4gICAgICBpZiAoYWNjdW11bGF0ZWRba2V5XSAhPT0gMCkge1xuICAgICAgICBidWlsdFtsYXN0VW5pdF0gKz1cbiAgICAgICAgICBrZXkgPT09IGxhc3RVbml0ID8gYWNjdW11bGF0ZWRba2V5XSA6IGFjY3VtdWxhdGVkW2tleV0gLyB0aGlzLm1hdHJpeFtsYXN0VW5pdF1ba2V5XTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY2xvbmUodGhpcywgeyB2YWx1ZXM6IGJ1aWx0IH0sIHRydWUpLm5vcm1hbGl6ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgbmVnYXRpdmUgb2YgdGhpcyBEdXJhdGlvbi5cbiAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxLCBzZWNvbmRzOiAzMCB9KS5uZWdhdGUoKS50b09iamVjdCgpIC8vPT4geyBob3VyczogLTEsIHNlY29uZHM6IC0zMCB9XG4gICAqIEByZXR1cm4ge0R1cmF0aW9ufVxuICAgKi9cbiAgbmVnYXRlKCkge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpcztcbiAgICBjb25zdCBuZWdhdGVkID0ge307XG4gICAgZm9yIChjb25zdCBrIG9mIE9iamVjdC5rZXlzKHRoaXMudmFsdWVzKSkge1xuICAgICAgbmVnYXRlZFtrXSA9IHRoaXMudmFsdWVzW2tdID09PSAwID8gMCA6IC10aGlzLnZhbHVlc1trXTtcbiAgICB9XG4gICAgcmV0dXJuIGNsb25lKHRoaXMsIHsgdmFsdWVzOiBuZWdhdGVkIH0sIHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgeWVhcnMuXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqL1xuICBnZXQgeWVhcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudmFsdWVzLnllYXJzIHx8IDAgOiBOYU47XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBxdWFydGVycy5cbiAgICogQHR5cGUge251bWJlcn1cbiAgICovXG4gIGdldCBxdWFydGVycygpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy52YWx1ZXMucXVhcnRlcnMgfHwgMCA6IE5hTjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIG1vbnRocy5cbiAgICogQHR5cGUge251bWJlcn1cbiAgICovXG4gIGdldCBtb250aHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudmFsdWVzLm1vbnRocyB8fCAwIDogTmFOO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgd2Vla3NcbiAgICogQHR5cGUge251bWJlcn1cbiAgICovXG4gIGdldCB3ZWVrcygpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy52YWx1ZXMud2Vla3MgfHwgMCA6IE5hTjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGRheXMuXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqL1xuICBnZXQgZGF5cygpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy52YWx1ZXMuZGF5cyB8fCAwIDogTmFOO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgaG91cnMuXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqL1xuICBnZXQgaG91cnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudmFsdWVzLmhvdXJzIHx8IDAgOiBOYU47XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBtaW51dGVzLlxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKi9cbiAgZ2V0IG1pbnV0ZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudmFsdWVzLm1pbnV0ZXMgfHwgMCA6IE5hTjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHNlY29uZHMuXG4gICAqIEByZXR1cm4ge251bWJlcn1cbiAgICovXG4gIGdldCBzZWNvbmRzKCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnZhbHVlcy5zZWNvbmRzIHx8IDAgOiBOYU47XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBtaWxsaXNlY29uZHMuXG4gICAqIEByZXR1cm4ge251bWJlcn1cbiAgICovXG4gIGdldCBtaWxsaXNlY29uZHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudmFsdWVzLm1pbGxpc2Vjb25kcyB8fCAwIDogTmFOO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgd2hldGhlciB0aGUgRHVyYXRpb24gaXMgaW52YWxpZC4gSW52YWxpZCBkdXJhdGlvbnMgYXJlIHJldHVybmVkIGJ5IGRpZmYgb3BlcmF0aW9uc1xuICAgKiBvbiBpbnZhbGlkIERhdGVUaW1lcyBvciBJbnRlcnZhbHMuXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqL1xuICBnZXQgaXNWYWxpZCgpIHtcbiAgICByZXR1cm4gdGhpcy5pbnZhbGlkID09PSBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gZXJyb3IgY29kZSBpZiB0aGlzIER1cmF0aW9uIGJlY2FtZSBpbnZhbGlkLCBvciBudWxsIGlmIHRoZSBEdXJhdGlvbiBpcyB2YWxpZFxuICAgKiBAcmV0dXJuIHtzdHJpbmd9XG4gICAqL1xuICBnZXQgaW52YWxpZFJlYXNvbigpIHtcbiAgICByZXR1cm4gdGhpcy5pbnZhbGlkID8gdGhpcy5pbnZhbGlkLnJlYXNvbiA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBleHBsYW5hdGlvbiBvZiB3aHkgdGhpcyBEdXJhdGlvbiBiZWNhbWUgaW52YWxpZCwgb3IgbnVsbCBpZiB0aGUgRHVyYXRpb24gaXMgdmFsaWRcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIGdldCBpbnZhbGlkRXhwbGFuYXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuaW52YWxpZCA/IHRoaXMuaW52YWxpZC5leHBsYW5hdGlvbiA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogRXF1YWxpdHkgY2hlY2tcbiAgICogVHdvIER1cmF0aW9ucyBhcmUgZXF1YWwgaWZmIHRoZXkgaGF2ZSB0aGUgc2FtZSB1bml0cyBhbmQgdGhlIHNhbWUgdmFsdWVzIGZvciBlYWNoIHVuaXQuXG4gICAqIEBwYXJhbSB7RHVyYXRpb259IG90aGVyXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqL1xuICBlcXVhbHMob3RoZXIpIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCB8fCAhb3RoZXIuaXNWYWxpZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5sb2MuZXF1YWxzKG90aGVyLmxvYykpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBlcSh2MSwgdjIpIHtcbiAgICAgIC8vIENvbnNpZGVyIDAgYW5kIHVuZGVmaW5lZCBhcyBlcXVhbFxuICAgICAgaWYgKHYxID09PSB1bmRlZmluZWQgfHwgdjEgPT09IDApIHJldHVybiB2MiA9PT0gdW5kZWZpbmVkIHx8IHYyID09PSAwO1xuICAgICAgcmV0dXJuIHYxID09PSB2MjtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHUgb2Ygb3JkZXJlZFVuaXRzKSB7XG4gICAgICBpZiAoIWVxKHRoaXMudmFsdWVzW3VdLCBvdGhlci52YWx1ZXNbdV0pKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cbiIsICJpbXBvcnQgRGF0ZVRpbWUsIHsgZnJpZW5kbHlEYXRlVGltZSB9IGZyb20gXCIuL2RhdGV0aW1lLmpzXCI7XG5pbXBvcnQgRHVyYXRpb24gZnJvbSBcIi4vZHVyYXRpb24uanNcIjtcbmltcG9ydCBTZXR0aW5ncyBmcm9tIFwiLi9zZXR0aW5ncy5qc1wiO1xuaW1wb3J0IHsgSW52YWxpZEFyZ3VtZW50RXJyb3IsIEludmFsaWRJbnRlcnZhbEVycm9yIH0gZnJvbSBcIi4vZXJyb3JzLmpzXCI7XG5pbXBvcnQgSW52YWxpZCBmcm9tIFwiLi9pbXBsL2ludmFsaWQuanNcIjtcblxuY29uc3QgSU5WQUxJRCA9IFwiSW52YWxpZCBJbnRlcnZhbFwiO1xuXG4vLyBjaGVja3MgaWYgdGhlIHN0YXJ0IGlzIGVxdWFsIHRvIG9yIGJlZm9yZSB0aGUgZW5kXG5mdW5jdGlvbiB2YWxpZGF0ZVN0YXJ0RW5kKHN0YXJ0LCBlbmQpIHtcbiAgaWYgKCFzdGFydCB8fCAhc3RhcnQuaXNWYWxpZCkge1xuICAgIHJldHVybiBJbnRlcnZhbC5pbnZhbGlkKFwibWlzc2luZyBvciBpbnZhbGlkIHN0YXJ0XCIpO1xuICB9IGVsc2UgaWYgKCFlbmQgfHwgIWVuZC5pc1ZhbGlkKSB7XG4gICAgcmV0dXJuIEludGVydmFsLmludmFsaWQoXCJtaXNzaW5nIG9yIGludmFsaWQgZW5kXCIpO1xuICB9IGVsc2UgaWYgKGVuZCA8IHN0YXJ0KSB7XG4gICAgcmV0dXJuIEludGVydmFsLmludmFsaWQoXG4gICAgICBcImVuZCBiZWZvcmUgc3RhcnRcIixcbiAgICAgIGBUaGUgZW5kIG9mIGFuIGludGVydmFsIG11c3QgYmUgYWZ0ZXIgaXRzIHN0YXJ0LCBidXQgeW91IGhhZCBzdGFydD0ke3N0YXJ0LnRvSVNPKCl9IGFuZCBlbmQ9JHtlbmQudG9JU08oKX1gXG4gICAgKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG4vKipcbiAqIEFuIEludGVydmFsIG9iamVjdCByZXByZXNlbnRzIGEgaGFsZi1vcGVuIGludGVydmFsIG9mIHRpbWUsIHdoZXJlIGVhY2ggZW5kcG9pbnQgaXMgYSB7QGxpbmsgRGF0ZVRpbWV9LiBDb25jZXB0dWFsbHksIGl0J3MgYSBjb250YWluZXIgZm9yIHRob3NlIHR3byBlbmRwb2ludHMsIGFjY29tcGFuaWVkIGJ5IG1ldGhvZHMgZm9yIGNyZWF0aW5nLCBwYXJzaW5nLCBpbnRlcnJvZ2F0aW5nLCBjb21wYXJpbmcsIHRyYW5zZm9ybWluZywgYW5kIGZvcm1hdHRpbmcgdGhlbS5cbiAqXG4gKiBIZXJlIGlzIGEgYnJpZWYgb3ZlcnZpZXcgb2YgdGhlIG1vc3QgY29tbW9ubHkgdXNlZCBtZXRob2RzIGFuZCBnZXR0ZXJzIGluIEludGVydmFsOlxuICpcbiAqICogKipDcmVhdGlvbioqIFRvIGNyZWF0ZSBhbiBJbnRlcnZhbCwgdXNlIHtAbGluayBJbnRlcnZhbCNmcm9tRGF0ZVRpbWVzfSwge0BsaW5rIEludGVydmFsI2FmdGVyfSwge0BsaW5rIEludGVydmFsI2JlZm9yZX0sIG9yIHtAbGluayBJbnRlcnZhbCNmcm9tSVNPfS5cbiAqICogKipBY2Nlc3NvcnMqKiBVc2Uge0BsaW5rIEludGVydmFsI3N0YXJ0fSBhbmQge0BsaW5rIEludGVydmFsI2VuZH0gdG8gZ2V0IHRoZSBzdGFydCBhbmQgZW5kLlxuICogKiAqKkludGVycm9nYXRpb24qKiBUbyBhbmFseXplIHRoZSBJbnRlcnZhbCwgdXNlIHtAbGluayBJbnRlcnZhbCNjb3VudH0sIHtAbGluayBJbnRlcnZhbCNsZW5ndGh9LCB7QGxpbmsgSW50ZXJ2YWwjaGFzU2FtZX0sIHtAbGluayBJbnRlcnZhbCNjb250YWluc30sIHtAbGluayBJbnRlcnZhbCNpc0FmdGVyfSwgb3Ige0BsaW5rIEludGVydmFsI2lzQmVmb3JlfS5cbiAqICogKipUcmFuc2Zvcm1hdGlvbioqIFRvIGNyZWF0ZSBvdGhlciBJbnRlcnZhbHMgb3V0IG9mIHRoaXMgb25lLCB1c2Uge0BsaW5rIEludGVydmFsI3NldH0sIHtAbGluayBJbnRlcnZhbCNzcGxpdEF0fSwge0BsaW5rIEludGVydmFsI3NwbGl0Qnl9LCB7QGxpbmsgSW50ZXJ2YWwjZGl2aWRlRXF1YWxseX0sIHtAbGluayBJbnRlcnZhbCNtZXJnZX0sIHtAbGluayBJbnRlcnZhbCN4b3J9LCB7QGxpbmsgSW50ZXJ2YWwjdW5pb259LCB7QGxpbmsgSW50ZXJ2YWwjaW50ZXJzZWN0aW9ufSwgb3Ige0BsaW5rIEludGVydmFsI2RpZmZlcmVuY2V9LlxuICogKiAqKkNvbXBhcmlzb24qKiBUbyBjb21wYXJlIHRoaXMgSW50ZXJ2YWwgdG8gYW5vdGhlciBvbmUsIHVzZSB7QGxpbmsgSW50ZXJ2YWwjZXF1YWxzfSwge0BsaW5rIEludGVydmFsI292ZXJsYXBzfSwge0BsaW5rIEludGVydmFsI2FidXRzU3RhcnR9LCB7QGxpbmsgSW50ZXJ2YWwjYWJ1dHNFbmR9LCB7QGxpbmsgSW50ZXJ2YWwjZW5ndWxmc31cbiAqICogKipPdXRwdXQqKiBUbyBjb252ZXJ0IHRoZSBJbnRlcnZhbCBpbnRvIG90aGVyIHJlcHJlc2VudGF0aW9ucywgc2VlIHtAbGluayBJbnRlcnZhbCN0b1N0cmluZ30sIHtAbGluayBJbnRlcnZhbCN0b0lTT30sIHtAbGluayBJbnRlcnZhbCN0b0lTT0RhdGV9LCB7QGxpbmsgSW50ZXJ2YWwjdG9JU09UaW1lfSwge0BsaW5rIEludGVydmFsI3RvRm9ybWF0fSwgYW5kIHtAbGluayBJbnRlcnZhbCN0b0R1cmF0aW9ufS5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSW50ZXJ2YWwge1xuICAvKipcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGNvbnN0cnVjdG9yKGNvbmZpZykge1xuICAgIC8qKlxuICAgICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAgICAqL1xuICAgIHRoaXMucyA9IGNvbmZpZy5zdGFydDtcbiAgICAvKipcbiAgICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICAgKi9cbiAgICB0aGlzLmUgPSBjb25maWcuZW5kO1xuICAgIC8qKlxuICAgICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAgICAqL1xuICAgIHRoaXMuaW52YWxpZCA9IGNvbmZpZy5pbnZhbGlkIHx8IG51bGw7XG4gICAgLyoqXG4gICAgICogQGFjY2VzcyBwcml2YXRlXG4gICAgICovXG4gICAgdGhpcy5pc0x1eG9uSW50ZXJ2YWwgPSB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhbiBpbnZhbGlkIEludGVydmFsLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcmVhc29uIC0gc2ltcGxlIHN0cmluZyBvZiB3aHkgdGhpcyBJbnRlcnZhbCBpcyBpbnZhbGlkLiBTaG91bGQgbm90IGNvbnRhaW4gcGFyYW1ldGVycyBvciBhbnl0aGluZyBlbHNlIGRhdGEtZGVwZW5kZW50XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbZXhwbGFuYXRpb249bnVsbF0gLSBsb25nZXIgZXhwbGFuYXRpb24sIG1heSBpbmNsdWRlIHBhcmFtZXRlcnMgYW5kIG90aGVyIHVzZWZ1bCBkZWJ1Z2dpbmcgaW5mb3JtYXRpb25cbiAgICogQHJldHVybiB7SW50ZXJ2YWx9XG4gICAqL1xuICBzdGF0aWMgaW52YWxpZChyZWFzb24sIGV4cGxhbmF0aW9uID0gbnVsbCkge1xuICAgIGlmICghcmVhc29uKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoXCJuZWVkIHRvIHNwZWNpZnkgYSByZWFzb24gdGhlIEludGVydmFsIGlzIGludmFsaWRcIik7XG4gICAgfVxuXG4gICAgY29uc3QgaW52YWxpZCA9IHJlYXNvbiBpbnN0YW5jZW9mIEludmFsaWQgPyByZWFzb24gOiBuZXcgSW52YWxpZChyZWFzb24sIGV4cGxhbmF0aW9uKTtcblxuICAgIGlmIChTZXR0aW5ncy50aHJvd09uSW52YWxpZCkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRJbnRlcnZhbEVycm9yKGludmFsaWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbmV3IEludGVydmFsKHsgaW52YWxpZCB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGFuIEludGVydmFsIGZyb20gYSBzdGFydCBEYXRlVGltZSBhbmQgYW4gZW5kIERhdGVUaW1lLiBJbmNsdXNpdmUgb2YgdGhlIHN0YXJ0IGJ1dCBub3QgdGhlIGVuZC5cbiAgICogQHBhcmFtIHtEYXRlVGltZXxEYXRlfE9iamVjdH0gc3RhcnRcbiAgICogQHBhcmFtIHtEYXRlVGltZXxEYXRlfE9iamVjdH0gZW5kXG4gICAqIEByZXR1cm4ge0ludGVydmFsfVxuICAgKi9cbiAgc3RhdGljIGZyb21EYXRlVGltZXMoc3RhcnQsIGVuZCkge1xuICAgIGNvbnN0IGJ1aWx0U3RhcnQgPSBmcmllbmRseURhdGVUaW1lKHN0YXJ0KSxcbiAgICAgIGJ1aWx0RW5kID0gZnJpZW5kbHlEYXRlVGltZShlbmQpO1xuXG4gICAgY29uc3QgdmFsaWRhdGVFcnJvciA9IHZhbGlkYXRlU3RhcnRFbmQoYnVpbHRTdGFydCwgYnVpbHRFbmQpO1xuXG4gICAgaWYgKHZhbGlkYXRlRXJyb3IgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG5ldyBJbnRlcnZhbCh7XG4gICAgICAgIHN0YXJ0OiBidWlsdFN0YXJ0LFxuICAgICAgICBlbmQ6IGJ1aWx0RW5kLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB2YWxpZGF0ZUVycm9yO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYW4gSW50ZXJ2YWwgZnJvbSBhIHN0YXJ0IERhdGVUaW1lIGFuZCBhIER1cmF0aW9uIHRvIGV4dGVuZCB0by5cbiAgICogQHBhcmFtIHtEYXRlVGltZXxEYXRlfE9iamVjdH0gc3RhcnRcbiAgICogQHBhcmFtIHtEdXJhdGlvbnxPYmplY3R8bnVtYmVyfSBkdXJhdGlvbiAtIHRoZSBsZW5ndGggb2YgdGhlIEludGVydmFsLlxuICAgKiBAcmV0dXJuIHtJbnRlcnZhbH1cbiAgICovXG4gIHN0YXRpYyBhZnRlcihzdGFydCwgZHVyYXRpb24pIHtcbiAgICBjb25zdCBkdXIgPSBEdXJhdGlvbi5mcm9tRHVyYXRpb25MaWtlKGR1cmF0aW9uKSxcbiAgICAgIGR0ID0gZnJpZW5kbHlEYXRlVGltZShzdGFydCk7XG4gICAgcmV0dXJuIEludGVydmFsLmZyb21EYXRlVGltZXMoZHQsIGR0LnBsdXMoZHVyKSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGFuIEludGVydmFsIGZyb20gYW4gZW5kIERhdGVUaW1lIGFuZCBhIER1cmF0aW9uIHRvIGV4dGVuZCBiYWNrd2FyZHMgdG8uXG4gICAqIEBwYXJhbSB7RGF0ZVRpbWV8RGF0ZXxPYmplY3R9IGVuZFxuICAgKiBAcGFyYW0ge0R1cmF0aW9ufE9iamVjdHxudW1iZXJ9IGR1cmF0aW9uIC0gdGhlIGxlbmd0aCBvZiB0aGUgSW50ZXJ2YWwuXG4gICAqIEByZXR1cm4ge0ludGVydmFsfVxuICAgKi9cbiAgc3RhdGljIGJlZm9yZShlbmQsIGR1cmF0aW9uKSB7XG4gICAgY29uc3QgZHVyID0gRHVyYXRpb24uZnJvbUR1cmF0aW9uTGlrZShkdXJhdGlvbiksXG4gICAgICBkdCA9IGZyaWVuZGx5RGF0ZVRpbWUoZW5kKTtcbiAgICByZXR1cm4gSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhkdC5taW51cyhkdXIpLCBkdCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGFuIEludGVydmFsIGZyb20gYW4gSVNPIDg2MDEgc3RyaW5nLlxuICAgKiBBY2NlcHRzIGA8c3RhcnQ+LzxlbmQ+YCwgYDxzdGFydD4vPGR1cmF0aW9uPmAsIGFuZCBgPGR1cmF0aW9uPi88ZW5kPmAgZm9ybWF0cy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSB0aGUgSVNPIHN0cmluZyB0byBwYXJzZVxuICAgKiBAcGFyYW0ge09iamVjdH0gW29wdHNdIC0gb3B0aW9ucyB0byBwYXNzIHtAbGluayBEYXRlVGltZSNmcm9tSVNPfSBhbmQgb3B0aW9uYWxseSB7QGxpbmsgRHVyYXRpb24jZnJvbUlTT31cbiAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMSNUaW1lX2ludGVydmFsc1xuICAgKiBAcmV0dXJuIHtJbnRlcnZhbH1cbiAgICovXG4gIHN0YXRpYyBmcm9tSVNPKHRleHQsIG9wdHMpIHtcbiAgICBjb25zdCBbcywgZV0gPSAodGV4dCB8fCBcIlwiKS5zcGxpdChcIi9cIiwgMik7XG4gICAgaWYgKHMgJiYgZSkge1xuICAgICAgbGV0IHN0YXJ0LCBzdGFydElzVmFsaWQ7XG4gICAgICB0cnkge1xuICAgICAgICBzdGFydCA9IERhdGVUaW1lLmZyb21JU08ocywgb3B0cyk7XG4gICAgICAgIHN0YXJ0SXNWYWxpZCA9IHN0YXJ0LmlzVmFsaWQ7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHN0YXJ0SXNWYWxpZCA9IGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBsZXQgZW5kLCBlbmRJc1ZhbGlkO1xuICAgICAgdHJ5IHtcbiAgICAgICAgZW5kID0gRGF0ZVRpbWUuZnJvbUlTTyhlLCBvcHRzKTtcbiAgICAgICAgZW5kSXNWYWxpZCA9IGVuZC5pc1ZhbGlkO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBlbmRJc1ZhbGlkID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGlmIChzdGFydElzVmFsaWQgJiYgZW5kSXNWYWxpZCkge1xuICAgICAgICByZXR1cm4gSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhzdGFydCwgZW5kKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHN0YXJ0SXNWYWxpZCkge1xuICAgICAgICBjb25zdCBkdXIgPSBEdXJhdGlvbi5mcm9tSVNPKGUsIG9wdHMpO1xuICAgICAgICBpZiAoZHVyLmlzVmFsaWQpIHtcbiAgICAgICAgICByZXR1cm4gSW50ZXJ2YWwuYWZ0ZXIoc3RhcnQsIGR1cik7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoZW5kSXNWYWxpZCkge1xuICAgICAgICBjb25zdCBkdXIgPSBEdXJhdGlvbi5mcm9tSVNPKHMsIG9wdHMpO1xuICAgICAgICBpZiAoZHVyLmlzVmFsaWQpIHtcbiAgICAgICAgICByZXR1cm4gSW50ZXJ2YWwuYmVmb3JlKGVuZCwgZHVyKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gSW50ZXJ2YWwuaW52YWxpZChcInVucGFyc2FibGVcIiwgYHRoZSBpbnB1dCBcIiR7dGV4dH1cIiBjYW4ndCBiZSBwYXJzZWQgYXMgSVNPIDg2MDFgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhbiBvYmplY3QgaXMgYW4gSW50ZXJ2YWwuIFdvcmtzIGFjcm9zcyBjb250ZXh0IGJvdW5kYXJpZXNcbiAgICogQHBhcmFtIHtvYmplY3R9IG9cbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICovXG4gIHN0YXRpYyBpc0ludGVydmFsKG8pIHtcbiAgICByZXR1cm4gKG8gJiYgby5pc0x1eG9uSW50ZXJ2YWwpIHx8IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHN0YXJ0IG9mIHRoZSBJbnRlcnZhbFxuICAgKiBAdHlwZSB7RGF0ZVRpbWV9XG4gICAqL1xuICBnZXQgc3RhcnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMucyA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgZW5kIG9mIHRoZSBJbnRlcnZhbFxuICAgKiBAdHlwZSB7RGF0ZVRpbWV9XG4gICAqL1xuICBnZXQgZW5kKCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmUgOiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgd2hldGhlciB0aGlzIEludGVydmFsJ3MgZW5kIGlzIGF0IGxlYXN0IGl0cyBzdGFydCwgbWVhbmluZyB0aGF0IHRoZSBJbnRlcnZhbCBpc24ndCAnYmFja3dhcmRzJy5cbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqL1xuICBnZXQgaXNWYWxpZCgpIHtcbiAgICByZXR1cm4gdGhpcy5pbnZhbGlkUmVhc29uID09PSBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gZXJyb3IgY29kZSBpZiB0aGlzIEludGVydmFsIGlzIGludmFsaWQsIG9yIG51bGwgaWYgdGhlIEludGVydmFsIGlzIHZhbGlkXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBnZXQgaW52YWxpZFJlYXNvbigpIHtcbiAgICByZXR1cm4gdGhpcy5pbnZhbGlkID8gdGhpcy5pbnZhbGlkLnJlYXNvbiA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBleHBsYW5hdGlvbiBvZiB3aHkgdGhpcyBJbnRlcnZhbCBiZWNhbWUgaW52YWxpZCwgb3IgbnVsbCBpZiB0aGUgSW50ZXJ2YWwgaXMgdmFsaWRcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIGdldCBpbnZhbGlkRXhwbGFuYXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuaW52YWxpZCA/IHRoaXMuaW52YWxpZC5leHBsYW5hdGlvbiA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgbGVuZ3RoIG9mIHRoZSBJbnRlcnZhbCBpbiB0aGUgc3BlY2lmaWVkIHVuaXQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB1bml0IC0gdGhlIHVuaXQgKHN1Y2ggYXMgJ2hvdXJzJyBvciAnZGF5cycpIHRvIHJldHVybiB0aGUgbGVuZ3RoIGluLlxuICAgKiBAcmV0dXJuIHtudW1iZXJ9XG4gICAqL1xuICBsZW5ndGgodW5pdCA9IFwibWlsbGlzZWNvbmRzXCIpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy50b0R1cmF0aW9uKC4uLlt1bml0XSkuZ2V0KHVuaXQpIDogTmFOO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGNvdW50IG9mIG1pbnV0ZXMsIGhvdXJzLCBkYXlzLCBtb250aHMsIG9yIHllYXJzIGluY2x1ZGVkIGluIHRoZSBJbnRlcnZhbCwgZXZlbiBpbiBwYXJ0LlxuICAgKiBVbmxpa2Uge0BsaW5rIEludGVydmFsI2xlbmd0aH0gdGhpcyBjb3VudHMgc2VjdGlvbnMgb2YgdGhlIGNhbGVuZGFyLCBub3QgcGVyaW9kcyBvZiB0aW1lLCBlLmcuIHNwZWNpZnlpbmcgJ2RheSdcbiAgICogYXNrcyAnd2hhdCBkYXRlcyBhcmUgaW5jbHVkZWQgaW4gdGhpcyBpbnRlcnZhbD8nLCBub3QgJ2hvdyBtYW55IGRheXMgbG9uZyBpcyB0aGlzIGludGVydmFsPydcbiAgICogQHBhcmFtIHtzdHJpbmd9IFt1bml0PSdtaWxsaXNlY29uZHMnXSAtIHRoZSB1bml0IG9mIHRpbWUgdG8gY291bnQuXG4gICAqIEByZXR1cm4ge251bWJlcn1cbiAgICovXG4gIGNvdW50KHVuaXQgPSBcIm1pbGxpc2Vjb25kc1wiKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBOYU47XG4gICAgY29uc3Qgc3RhcnQgPSB0aGlzLnN0YXJ0LnN0YXJ0T2YodW5pdCksXG4gICAgICBlbmQgPSB0aGlzLmVuZC5zdGFydE9mKHVuaXQpO1xuICAgIHJldHVybiBNYXRoLmZsb29yKGVuZC5kaWZmKHN0YXJ0LCB1bml0KS5nZXQodW5pdCkpICsgMTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCdzIHN0YXJ0IGFuZCBlbmQgYXJlIGJvdGggaW4gdGhlIHNhbWUgdW5pdCBvZiB0aW1lXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB1bml0IC0gdGhlIHVuaXQgb2YgdGltZSB0byBjaGVjayBzYW1lbmVzcyBvblxuICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgKi9cbiAgaGFzU2FtZSh1bml0KSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMuaXNFbXB0eSgpIHx8IHRoaXMuZS5taW51cygxKS5oYXNTYW1lKHRoaXMucywgdW5pdCkgOiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gd2hldGhlciB0aGlzIEludGVydmFsIGhhcyB0aGUgc2FtZSBzdGFydCBhbmQgZW5kIERhdGVUaW1lcy5cbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICovXG4gIGlzRW1wdHkoKSB7XG4gICAgcmV0dXJuIHRoaXMucy52YWx1ZU9mKCkgPT09IHRoaXMuZS52YWx1ZU9mKCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCdzIHN0YXJ0IGlzIGFmdGVyIHRoZSBzcGVjaWZpZWQgRGF0ZVRpbWUuXG4gICAqIEBwYXJhbSB7RGF0ZVRpbWV9IGRhdGVUaW1lXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqL1xuICBpc0FmdGVyKGRhdGVUaW1lKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gdGhpcy5zID4gZGF0ZVRpbWU7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCdzIGVuZCBpcyBiZWZvcmUgdGhlIHNwZWNpZmllZCBEYXRlVGltZS5cbiAgICogQHBhcmFtIHtEYXRlVGltZX0gZGF0ZVRpbWVcbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICovXG4gIGlzQmVmb3JlKGRhdGVUaW1lKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gdGhpcy5lIDw9IGRhdGVUaW1lO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB3aGV0aGVyIHRoaXMgSW50ZXJ2YWwgY29udGFpbnMgdGhlIHNwZWNpZmllZCBEYXRlVGltZS5cbiAgICogQHBhcmFtIHtEYXRlVGltZX0gZGF0ZVRpbWVcbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICovXG4gIGNvbnRhaW5zKGRhdGVUaW1lKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gdGhpcy5zIDw9IGRhdGVUaW1lICYmIHRoaXMuZSA+IGRhdGVUaW1lO1xuICB9XG5cbiAgLyoqXG4gICAqIFwiU2V0c1wiIHRoZSBzdGFydCBhbmQvb3IgZW5kIGRhdGVzLiBSZXR1cm5zIGEgbmV3bHktY29uc3RydWN0ZWQgSW50ZXJ2YWwuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSB2YWx1ZXMgLSB0aGUgdmFsdWVzIHRvIHNldFxuICAgKiBAcGFyYW0ge0RhdGVUaW1lfSB2YWx1ZXMuc3RhcnQgLSB0aGUgc3RhcnRpbmcgRGF0ZVRpbWVcbiAgICogQHBhcmFtIHtEYXRlVGltZX0gdmFsdWVzLmVuZCAtIHRoZSBlbmRpbmcgRGF0ZVRpbWVcbiAgICogQHJldHVybiB7SW50ZXJ2YWx9XG4gICAqL1xuICBzZXQoeyBzdGFydCwgZW5kIH0gPSB7fSkge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpcztcbiAgICByZXR1cm4gSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhzdGFydCB8fCB0aGlzLnMsIGVuZCB8fCB0aGlzLmUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNwbGl0IHRoaXMgSW50ZXJ2YWwgYXQgZWFjaCBvZiB0aGUgc3BlY2lmaWVkIERhdGVUaW1lc1xuICAgKiBAcGFyYW0gey4uLkRhdGVUaW1lfSBkYXRlVGltZXMgLSB0aGUgdW5pdCBvZiB0aW1lIHRvIGNvdW50LlxuICAgKiBAcmV0dXJuIHtBcnJheX1cbiAgICovXG4gIHNwbGl0QXQoLi4uZGF0ZVRpbWVzKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBbXTtcbiAgICBjb25zdCBzb3J0ZWQgPSBkYXRlVGltZXNcbiAgICAgICAgLm1hcChmcmllbmRseURhdGVUaW1lKVxuICAgICAgICAuZmlsdGVyKChkKSA9PiB0aGlzLmNvbnRhaW5zKGQpKVxuICAgICAgICAuc29ydCgpLFxuICAgICAgcmVzdWx0cyA9IFtdO1xuICAgIGxldCB7IHMgfSA9IHRoaXMsXG4gICAgICBpID0gMDtcblxuICAgIHdoaWxlIChzIDwgdGhpcy5lKSB7XG4gICAgICBjb25zdCBhZGRlZCA9IHNvcnRlZFtpXSB8fCB0aGlzLmUsXG4gICAgICAgIG5leHQgPSArYWRkZWQgPiArdGhpcy5lID8gdGhpcy5lIDogYWRkZWQ7XG4gICAgICByZXN1bHRzLnB1c2goSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhzLCBuZXh0KSk7XG4gICAgICBzID0gbmV4dDtcbiAgICAgIGkgKz0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0cztcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGxpdCB0aGlzIEludGVydmFsIGludG8gc21hbGxlciBJbnRlcnZhbHMsIGVhY2ggb2YgdGhlIHNwZWNpZmllZCBsZW5ndGguXG4gICAqIExlZnQgb3ZlciB0aW1lIGlzIGdyb3VwZWQgaW50byBhIHNtYWxsZXIgaW50ZXJ2YWxcbiAgICogQHBhcmFtIHtEdXJhdGlvbnxPYmplY3R8bnVtYmVyfSBkdXJhdGlvbiAtIFRoZSBsZW5ndGggb2YgZWFjaCByZXN1bHRpbmcgaW50ZXJ2YWwuXG4gICAqIEByZXR1cm4ge0FycmF5fVxuICAgKi9cbiAgc3BsaXRCeShkdXJhdGlvbikge1xuICAgIGNvbnN0IGR1ciA9IER1cmF0aW9uLmZyb21EdXJhdGlvbkxpa2UoZHVyYXRpb24pO1xuXG4gICAgaWYgKCF0aGlzLmlzVmFsaWQgfHwgIWR1ci5pc1ZhbGlkIHx8IGR1ci5hcyhcIm1pbGxpc2Vjb25kc1wiKSA9PT0gMCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGxldCB7IHMgfSA9IHRoaXMsXG4gICAgICBpZHggPSAxLFxuICAgICAgbmV4dDtcblxuICAgIGNvbnN0IHJlc3VsdHMgPSBbXTtcbiAgICB3aGlsZSAocyA8IHRoaXMuZSkge1xuICAgICAgY29uc3QgYWRkZWQgPSB0aGlzLnN0YXJ0LnBsdXMoZHVyLm1hcFVuaXRzKCh4KSA9PiB4ICogaWR4KSk7XG4gICAgICBuZXh0ID0gK2FkZGVkID4gK3RoaXMuZSA/IHRoaXMuZSA6IGFkZGVkO1xuICAgICAgcmVzdWx0cy5wdXNoKEludGVydmFsLmZyb21EYXRlVGltZXMocywgbmV4dCkpO1xuICAgICAgcyA9IG5leHQ7XG4gICAgICBpZHggKz0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0cztcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGxpdCB0aGlzIEludGVydmFsIGludG8gdGhlIHNwZWNpZmllZCBudW1iZXIgb2Ygc21hbGxlciBpbnRlcnZhbHMuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBudW1iZXJPZlBhcnRzIC0gVGhlIG51bWJlciBvZiBJbnRlcnZhbHMgdG8gZGl2aWRlIHRoZSBJbnRlcnZhbCBpbnRvLlxuICAgKiBAcmV0dXJuIHtBcnJheX1cbiAgICovXG4gIGRpdmlkZUVxdWFsbHkobnVtYmVyT2ZQYXJ0cykge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gW107XG4gICAgcmV0dXJuIHRoaXMuc3BsaXRCeSh0aGlzLmxlbmd0aCgpIC8gbnVtYmVyT2ZQYXJ0cykuc2xpY2UoMCwgbnVtYmVyT2ZQYXJ0cyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCBvdmVybGFwcyB3aXRoIHRoZSBzcGVjaWZpZWQgSW50ZXJ2YWxcbiAgICogQHBhcmFtIHtJbnRlcnZhbH0gb3RoZXJcbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICovXG4gIG92ZXJsYXBzKG90aGVyKSB7XG4gICAgcmV0dXJuIHRoaXMuZSA+IG90aGVyLnMgJiYgdGhpcy5zIDwgb3RoZXIuZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gd2hldGhlciB0aGlzIEludGVydmFsJ3MgZW5kIGlzIGFkamFjZW50IHRvIHRoZSBzcGVjaWZpZWQgSW50ZXJ2YWwncyBzdGFydC5cbiAgICogQHBhcmFtIHtJbnRlcnZhbH0gb3RoZXJcbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICovXG4gIGFidXRzU3RhcnQob3RoZXIpIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiArdGhpcy5lID09PSArb3RoZXIucztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gd2hldGhlciB0aGlzIEludGVydmFsJ3Mgc3RhcnQgaXMgYWRqYWNlbnQgdG8gdGhlIHNwZWNpZmllZCBJbnRlcnZhbCdzIGVuZC5cbiAgICogQHBhcmFtIHtJbnRlcnZhbH0gb3RoZXJcbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICovXG4gIGFidXRzRW5kKG90aGVyKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gK290aGVyLmUgPT09ICt0aGlzLnM7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCBlbmd1bGZzIHRoZSBzdGFydCBhbmQgZW5kIG9mIHRoZSBzcGVjaWZpZWQgSW50ZXJ2YWwuXG4gICAqIEBwYXJhbSB7SW50ZXJ2YWx9IG90aGVyXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqL1xuICBlbmd1bGZzKG90aGVyKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gdGhpcy5zIDw9IG90aGVyLnMgJiYgdGhpcy5lID49IG90aGVyLmU7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCBoYXMgdGhlIHNhbWUgc3RhcnQgYW5kIGVuZCBhcyB0aGUgc3BlY2lmaWVkIEludGVydmFsLlxuICAgKiBAcGFyYW0ge0ludGVydmFsfSBvdGhlclxuICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgKi9cbiAgZXF1YWxzKG90aGVyKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQgfHwgIW90aGVyLmlzVmFsaWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zLmVxdWFscyhvdGhlci5zKSAmJiB0aGlzLmUuZXF1YWxzKG90aGVyLmUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhbiBJbnRlcnZhbCByZXByZXNlbnRpbmcgdGhlIGludGVyc2VjdGlvbiBvZiB0aGlzIEludGVydmFsIGFuZCB0aGUgc3BlY2lmaWVkIEludGVydmFsLlxuICAgKiBTcGVjaWZpY2FsbHksIHRoZSByZXN1bHRpbmcgSW50ZXJ2YWwgaGFzIHRoZSBtYXhpbXVtIHN0YXJ0IHRpbWUgYW5kIHRoZSBtaW5pbXVtIGVuZCB0aW1lIG9mIHRoZSB0d28gSW50ZXJ2YWxzLlxuICAgKiBSZXR1cm5zIG51bGwgaWYgdGhlIGludGVyc2VjdGlvbiBpcyBlbXB0eSwgbWVhbmluZywgdGhlIGludGVydmFscyBkb24ndCBpbnRlcnNlY3QuXG4gICAqIEBwYXJhbSB7SW50ZXJ2YWx9IG90aGVyXG4gICAqIEByZXR1cm4ge0ludGVydmFsfVxuICAgKi9cbiAgaW50ZXJzZWN0aW9uKG90aGVyKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzO1xuICAgIGNvbnN0IHMgPSB0aGlzLnMgPiBvdGhlci5zID8gdGhpcy5zIDogb3RoZXIucyxcbiAgICAgIGUgPSB0aGlzLmUgPCBvdGhlci5lID8gdGhpcy5lIDogb3RoZXIuZTtcblxuICAgIGlmIChzID49IGUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhzLCBlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGFuIEludGVydmFsIHJlcHJlc2VudGluZyB0aGUgdW5pb24gb2YgdGhpcyBJbnRlcnZhbCBhbmQgdGhlIHNwZWNpZmllZCBJbnRlcnZhbC5cbiAgICogU3BlY2lmaWNhbGx5LCB0aGUgcmVzdWx0aW5nIEludGVydmFsIGhhcyB0aGUgbWluaW11bSBzdGFydCB0aW1lIGFuZCB0aGUgbWF4aW11bSBlbmQgdGltZSBvZiB0aGUgdHdvIEludGVydmFscy5cbiAgICogQHBhcmFtIHtJbnRlcnZhbH0gb3RoZXJcbiAgICogQHJldHVybiB7SW50ZXJ2YWx9XG4gICAqL1xuICB1bmlvbihvdGhlcikge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpcztcbiAgICBjb25zdCBzID0gdGhpcy5zIDwgb3RoZXIucyA/IHRoaXMucyA6IG90aGVyLnMsXG4gICAgICBlID0gdGhpcy5lID4gb3RoZXIuZSA/IHRoaXMuZSA6IG90aGVyLmU7XG4gICAgcmV0dXJuIEludGVydmFsLmZyb21EYXRlVGltZXMocywgZSk7XG4gIH1cblxuICAvKipcbiAgICogTWVyZ2UgYW4gYXJyYXkgb2YgSW50ZXJ2YWxzIGludG8gYSBlcXVpdmFsZW50IG1pbmltYWwgc2V0IG9mIEludGVydmFscy5cbiAgICogQ29tYmluZXMgb3ZlcmxhcHBpbmcgYW5kIGFkamFjZW50IEludGVydmFscy5cbiAgICogQHBhcmFtIHtBcnJheX0gaW50ZXJ2YWxzXG4gICAqIEByZXR1cm4ge0FycmF5fVxuICAgKi9cbiAgc3RhdGljIG1lcmdlKGludGVydmFscykge1xuICAgIGNvbnN0IFtmb3VuZCwgZmluYWxdID0gaW50ZXJ2YWxzXG4gICAgICAuc29ydCgoYSwgYikgPT4gYS5zIC0gYi5zKVxuICAgICAgLnJlZHVjZShcbiAgICAgICAgKFtzb2ZhciwgY3VycmVudF0sIGl0ZW0pID0+IHtcbiAgICAgICAgICBpZiAoIWN1cnJlbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBbc29mYXIsIGl0ZW1dO1xuICAgICAgICAgIH0gZWxzZSBpZiAoY3VycmVudC5vdmVybGFwcyhpdGVtKSB8fCBjdXJyZW50LmFidXRzU3RhcnQoaXRlbSkpIHtcbiAgICAgICAgICAgIHJldHVybiBbc29mYXIsIGN1cnJlbnQudW5pb24oaXRlbSldO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gW3NvZmFyLmNvbmNhdChbY3VycmVudF0pLCBpdGVtXTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFtbXSwgbnVsbF1cbiAgICAgICk7XG4gICAgaWYgKGZpbmFsKSB7XG4gICAgICBmb3VuZC5wdXNoKGZpbmFsKTtcbiAgICB9XG4gICAgcmV0dXJuIGZvdW5kO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhbiBhcnJheSBvZiBJbnRlcnZhbHMgcmVwcmVzZW50aW5nIHRoZSBzcGFucyBvZiB0aW1lIHRoYXQgb25seSBhcHBlYXIgaW4gb25lIG9mIHRoZSBzcGVjaWZpZWQgSW50ZXJ2YWxzLlxuICAgKiBAcGFyYW0ge0FycmF5fSBpbnRlcnZhbHNcbiAgICogQHJldHVybiB7QXJyYXl9XG4gICAqL1xuICBzdGF0aWMgeG9yKGludGVydmFscykge1xuICAgIGxldCBzdGFydCA9IG51bGwsXG4gICAgICBjdXJyZW50Q291bnQgPSAwO1xuICAgIGNvbnN0IHJlc3VsdHMgPSBbXSxcbiAgICAgIGVuZHMgPSBpbnRlcnZhbHMubWFwKChpKSA9PiBbXG4gICAgICAgIHsgdGltZTogaS5zLCB0eXBlOiBcInNcIiB9LFxuICAgICAgICB7IHRpbWU6IGkuZSwgdHlwZTogXCJlXCIgfSxcbiAgICAgIF0pLFxuICAgICAgZmxhdHRlbmVkID0gQXJyYXkucHJvdG90eXBlLmNvbmNhdCguLi5lbmRzKSxcbiAgICAgIGFyciA9IGZsYXR0ZW5lZC5zb3J0KChhLCBiKSA9PiBhLnRpbWUgLSBiLnRpbWUpO1xuXG4gICAgZm9yIChjb25zdCBpIG9mIGFycikge1xuICAgICAgY3VycmVudENvdW50ICs9IGkudHlwZSA9PT0gXCJzXCIgPyAxIDogLTE7XG5cbiAgICAgIGlmIChjdXJyZW50Q291bnQgPT09IDEpIHtcbiAgICAgICAgc3RhcnQgPSBpLnRpbWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoc3RhcnQgJiYgK3N0YXJ0ICE9PSAraS50aW1lKSB7XG4gICAgICAgICAgcmVzdWx0cy5wdXNoKEludGVydmFsLmZyb21EYXRlVGltZXMoc3RhcnQsIGkudGltZSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgc3RhcnQgPSBudWxsO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBJbnRlcnZhbC5tZXJnZShyZXN1bHRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYW4gSW50ZXJ2YWwgcmVwcmVzZW50aW5nIHRoZSBzcGFuIG9mIHRpbWUgaW4gdGhpcyBJbnRlcnZhbCB0aGF0IGRvZXNuJ3Qgb3ZlcmxhcCB3aXRoIGFueSBvZiB0aGUgc3BlY2lmaWVkIEludGVydmFscy5cbiAgICogQHBhcmFtIHsuLi5JbnRlcnZhbH0gaW50ZXJ2YWxzXG4gICAqIEByZXR1cm4ge0FycmF5fVxuICAgKi9cbiAgZGlmZmVyZW5jZSguLi5pbnRlcnZhbHMpIHtcbiAgICByZXR1cm4gSW50ZXJ2YWwueG9yKFt0aGlzXS5jb25jYXQoaW50ZXJ2YWxzKSlcbiAgICAgIC5tYXAoKGkpID0+IHRoaXMuaW50ZXJzZWN0aW9uKGkpKVxuICAgICAgLmZpbHRlcigoaSkgPT4gaSAmJiAhaS5pc0VtcHR5KCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBJbnRlcnZhbCBhcHByb3ByaWF0ZSBmb3IgZGVidWdnaW5nLlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9XG4gICAqL1xuICB0b1N0cmluZygpIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIElOVkFMSUQ7XG4gICAgcmV0dXJuIGBbJHt0aGlzLnMudG9JU08oKX0gXHUyMDEzICR7dGhpcy5lLnRvSVNPKCl9KWA7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBJU08gODYwMS1jb21wbGlhbnQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgSW50ZXJ2YWwuXG4gICAqIEBzZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPXzg2MDEjVGltZV9pbnRlcnZhbHNcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBUaGUgc2FtZSBvcHRpb25zIGFzIHtAbGluayBEYXRlVGltZSN0b0lTT31cbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgdG9JU08ob3B0cykge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gSU5WQUxJRDtcbiAgICByZXR1cm4gYCR7dGhpcy5zLnRvSVNPKG9wdHMpfS8ke3RoaXMuZS50b0lTTyhvcHRzKX1gO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gSVNPIDg2MDEtY29tcGxpYW50IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBkYXRlIG9mIHRoaXMgSW50ZXJ2YWwuXG4gICAqIFRoZSB0aW1lIGNvbXBvbmVudHMgYXJlIGlnbm9yZWQuXG4gICAqIEBzZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPXzg2MDEjVGltZV9pbnRlcnZhbHNcbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgdG9JU09EYXRlKCkge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gSU5WQUxJRDtcbiAgICByZXR1cm4gYCR7dGhpcy5zLnRvSVNPRGF0ZSgpfS8ke3RoaXMuZS50b0lTT0RhdGUoKX1gO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gSVNPIDg2MDEtY29tcGxpYW50IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aW1lIG9mIHRoaXMgSW50ZXJ2YWwuXG4gICAqIFRoZSBkYXRlIGNvbXBvbmVudHMgYXJlIGlnbm9yZWQuXG4gICAqIEBzZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPXzg2MDEjVGltZV9pbnRlcnZhbHNcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBUaGUgc2FtZSBvcHRpb25zIGFzIHtAbGluayBEYXRlVGltZSN0b0lTT31cbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgdG9JU09UaW1lKG9wdHMpIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIElOVkFMSUQ7XG4gICAgcmV0dXJuIGAke3RoaXMucy50b0lTT1RpbWUob3B0cyl9LyR7dGhpcy5lLnRvSVNPVGltZShvcHRzKX1gO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBJbnRlcnZhbCBmb3JtYXR0ZWQgYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQgZm9ybWF0IHN0cmluZy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGRhdGVGb3JtYXQgLSB0aGUgZm9ybWF0IHN0cmluZy4gVGhpcyBzdHJpbmcgZm9ybWF0cyB0aGUgc3RhcnQgYW5kIGVuZCB0aW1lLiBTZWUge0BsaW5rIERhdGVUaW1lI3RvRm9ybWF0fSBmb3IgZGV0YWlscy5cbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5zZXBhcmF0b3IgPSAgJyBcdTIwMTMgJ10gLSBhIHNlcGFyYXRvciB0byBwbGFjZSBiZXR3ZWVuIHRoZSBzdGFydCBhbmQgZW5kIHJlcHJlc2VudGF0aW9uc1xuICAgKiBAcmV0dXJuIHtzdHJpbmd9XG4gICAqL1xuICB0b0Zvcm1hdChkYXRlRm9ybWF0LCB7IHNlcGFyYXRvciA9IFwiIFx1MjAxMyBcIiB9ID0ge30pIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIElOVkFMSUQ7XG4gICAgcmV0dXJuIGAke3RoaXMucy50b0Zvcm1hdChkYXRlRm9ybWF0KX0ke3NlcGFyYXRvcn0ke3RoaXMuZS50b0Zvcm1hdChkYXRlRm9ybWF0KX1gO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIER1cmF0aW9uIHJlcHJlc2VudGluZyB0aGUgdGltZSBzcGFubmVkIGJ5IHRoaXMgaW50ZXJ2YWwuXG4gICAqIEBwYXJhbSB7c3RyaW5nfHN0cmluZ1tdfSBbdW5pdD1bJ21pbGxpc2Vjb25kcyddXSAtIHRoZSB1bml0IG9yIHVuaXRzIChzdWNoIGFzICdob3Vycycgb3IgJ2RheXMnKSB0byBpbmNsdWRlIGluIHRoZSBkdXJhdGlvbi5cbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRoYXQgYWZmZWN0IHRoZSBjcmVhdGlvbiBvZiB0aGUgRHVyYXRpb25cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmNvbnZlcnNpb25BY2N1cmFjeT0nY2FzdWFsJ10gLSB0aGUgY29udmVyc2lvbiBzeXN0ZW0gdG8gdXNlXG4gICAqIEBleGFtcGxlIEludGVydmFsLmZyb21EYXRlVGltZXMoZHQxLCBkdDIpLnRvRHVyYXRpb24oKS50b09iamVjdCgpIC8vPT4geyBtaWxsaXNlY29uZHM6IDg4NDg5MjU3IH1cbiAgICogQGV4YW1wbGUgSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhkdDEsIGR0MikudG9EdXJhdGlvbignZGF5cycpLnRvT2JqZWN0KCkgLy89PiB7IGRheXM6IDEuMDI0MTgxMjE1Mjc3Nzc3OCB9XG4gICAqIEBleGFtcGxlIEludGVydmFsLmZyb21EYXRlVGltZXMoZHQxLCBkdDIpLnRvRHVyYXRpb24oWydob3VycycsICdtaW51dGVzJ10pLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAyNCwgbWludXRlczogMzQuODIwOTUgfVxuICAgKiBAZXhhbXBsZSBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKGR0MSwgZHQyKS50b0R1cmF0aW9uKFsnaG91cnMnLCAnbWludXRlcycsICdzZWNvbmRzJ10pLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAyNCwgbWludXRlczogMzQsIHNlY29uZHM6IDQ5LjI1NyB9XG4gICAqIEBleGFtcGxlIEludGVydmFsLmZyb21EYXRlVGltZXMoZHQxLCBkdDIpLnRvRHVyYXRpb24oJ3NlY29uZHMnKS50b09iamVjdCgpIC8vPT4geyBzZWNvbmRzOiA4ODQ4OS4yNTcgfVxuICAgKiBAcmV0dXJuIHtEdXJhdGlvbn1cbiAgICovXG4gIHRvRHVyYXRpb24odW5pdCwgb3B0cykge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSB7XG4gICAgICByZXR1cm4gRHVyYXRpb24uaW52YWxpZCh0aGlzLmludmFsaWRSZWFzb24pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5lLmRpZmYodGhpcy5zLCB1bml0LCBvcHRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW4gbWFwRm4gb24gdGhlIGludGVydmFsIHN0YXJ0IGFuZCBlbmQsIHJldHVybmluZyBhIG5ldyBJbnRlcnZhbCBmcm9tIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWVzXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IG1hcEZuXG4gICAqIEByZXR1cm4ge0ludGVydmFsfVxuICAgKiBAZXhhbXBsZSBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKGR0MSwgZHQyKS5tYXBFbmRwb2ludHMoZW5kcG9pbnQgPT4gZW5kcG9pbnQudG9VVEMoKSlcbiAgICogQGV4YW1wbGUgSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhkdDEsIGR0MikubWFwRW5kcG9pbnRzKGVuZHBvaW50ID0+IGVuZHBvaW50LnBsdXMoeyBob3VyczogMiB9KSlcbiAgICovXG4gIG1hcEVuZHBvaW50cyhtYXBGbikge1xuICAgIHJldHVybiBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKG1hcEZuKHRoaXMucyksIG1hcEZuKHRoaXMuZSkpO1xuICB9XG59XG4iLCAiaW1wb3J0IERhdGVUaW1lIGZyb20gXCIuL2RhdGV0aW1lLmpzXCI7XG5pbXBvcnQgU2V0dGluZ3MgZnJvbSBcIi4vc2V0dGluZ3MuanNcIjtcbmltcG9ydCBMb2NhbGUgZnJvbSBcIi4vaW1wbC9sb2NhbGUuanNcIjtcbmltcG9ydCBJQU5BWm9uZSBmcm9tIFwiLi96b25lcy9JQU5BWm9uZS5qc1wiO1xuaW1wb3J0IHsgbm9ybWFsaXplWm9uZSB9IGZyb20gXCIuL2ltcGwvem9uZVV0aWwuanNcIjtcblxuaW1wb3J0IHsgaGFzUmVsYXRpdmUgfSBmcm9tIFwiLi9pbXBsL3V0aWwuanNcIjtcblxuLyoqXG4gKiBUaGUgSW5mbyBjbGFzcyBjb250YWlucyBzdGF0aWMgbWV0aG9kcyBmb3IgcmV0cmlldmluZyBnZW5lcmFsIHRpbWUgYW5kIGRhdGUgcmVsYXRlZCBkYXRhLiBGb3IgZXhhbXBsZSwgaXQgaGFzIG1ldGhvZHMgZm9yIGZpbmRpbmcgb3V0IGlmIGEgdGltZSB6b25lIGhhcyBhIERTVCwgZm9yIGxpc3RpbmcgdGhlIG1vbnRocyBpbiBhbnkgc3VwcG9ydGVkIGxvY2FsZSwgYW5kIGZvciBkaXNjb3ZlcmluZyB3aGljaCBvZiBMdXhvbiBmZWF0dXJlcyBhcmUgYXZhaWxhYmxlIGluIHRoZSBjdXJyZW50IGVudmlyb25tZW50LlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBJbmZvIHtcbiAgLyoqXG4gICAqIFJldHVybiB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgem9uZSBjb250YWlucyBhIERTVC5cbiAgICogQHBhcmFtIHtzdHJpbmd8Wm9uZX0gW3pvbmU9J2xvY2FsJ10gLSBab25lIHRvIGNoZWNrLiBEZWZhdWx0cyB0byB0aGUgZW52aXJvbm1lbnQncyBsb2NhbCB6b25lLlxuICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgKi9cbiAgc3RhdGljIGhhc0RTVCh6b25lID0gU2V0dGluZ3MuZGVmYXVsdFpvbmUpIHtcbiAgICBjb25zdCBwcm90byA9IERhdGVUaW1lLm5vdygpLnNldFpvbmUoem9uZSkuc2V0KHsgbW9udGg6IDEyIH0pO1xuXG4gICAgcmV0dXJuICF6b25lLmlzVW5pdmVyc2FsICYmIHByb3RvLm9mZnNldCAhPT0gcHJvdG8uc2V0KHsgbW9udGg6IDYgfSkub2Zmc2V0O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgem9uZSBpcyBhIHZhbGlkIElBTkEgc3BlY2lmaWVyLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gem9uZSAtIFpvbmUgdG8gY2hlY2tcbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICovXG4gIHN0YXRpYyBpc1ZhbGlkSUFOQVpvbmUoem9uZSkge1xuICAgIHJldHVybiBJQU5BWm9uZS5pc1ZhbGlkWm9uZSh6b25lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyB0aGUgaW5wdXQgaW50byBhIHtAbGluayBab25lfSBpbnN0YW5jZS5cbiAgICpcbiAgICogKiBJZiBgaW5wdXRgIGlzIGFscmVhZHkgYSBab25lIGluc3RhbmNlLCBpdCBpcyByZXR1cm5lZCB1bmNoYW5nZWQuXG4gICAqICogSWYgYGlucHV0YCBpcyBhIHN0cmluZyBjb250YWluaW5nIGEgdmFsaWQgdGltZSB6b25lIG5hbWUsIGEgWm9uZSBpbnN0YW5jZVxuICAgKiAgIHdpdGggdGhhdCBuYW1lIGlzIHJldHVybmVkLlxuICAgKiAqIElmIGBpbnB1dGAgaXMgYSBzdHJpbmcgdGhhdCBkb2Vzbid0IHJlZmVyIHRvIGEga25vd24gdGltZSB6b25lLCBhIFpvbmVcbiAgICogICBpbnN0YW5jZSB3aXRoIHtAbGluayBab25lI2lzVmFsaWR9ID09IGZhbHNlIGlzIHJldHVybmVkLlxuICAgKiAqIElmIGBpbnB1dCBpcyBhIG51bWJlciwgYSBab25lIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBmaXhlZCBvZmZzZXRcbiAgICogICBpbiBtaW51dGVzIGlzIHJldHVybmVkLlxuICAgKiAqIElmIGBpbnB1dGAgaXMgYG51bGxgIG9yIGB1bmRlZmluZWRgLCB0aGUgZGVmYXVsdCB6b25lIGlzIHJldHVybmVkLlxuICAgKiBAcGFyYW0ge3N0cmluZ3xab25lfG51bWJlcn0gW2lucHV0XSAtIHRoZSB2YWx1ZSB0byBiZSBjb252ZXJ0ZWRcbiAgICogQHJldHVybiB7Wm9uZX1cbiAgICovXG4gIHN0YXRpYyBub3JtYWxpemVab25lKGlucHV0KSB7XG4gICAgcmV0dXJuIG5vcm1hbGl6ZVpvbmUoaW5wdXQsIFNldHRpbmdzLmRlZmF1bHRab25lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYW4gYXJyYXkgb2Ygc3RhbmRhbG9uZSBtb250aCBuYW1lcy5cbiAgICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9EYXRlVGltZUZvcm1hdFxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2xlbmd0aD0nbG9uZyddIC0gdGhlIGxlbmd0aCBvZiB0aGUgbW9udGggcmVwcmVzZW50YXRpb24sIHN1Y2ggYXMgXCJudW1lcmljXCIsIFwiMi1kaWdpdFwiLCBcIm5hcnJvd1wiLCBcInNob3J0XCIsIFwibG9uZ1wiXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9uc1xuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlXSAtIHRoZSBsb2NhbGUgY29kZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubnVtYmVyaW5nU3lzdGVtPW51bGxdIC0gdGhlIG51bWJlcmluZyBzeXN0ZW1cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY09iaj1udWxsXSAtIGFuIGV4aXN0aW5nIGxvY2FsZSBvYmplY3QgdG8gdXNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5vdXRwdXRDYWxlbmRhcj0nZ3JlZ29yeSddIC0gdGhlIGNhbGVuZGFyXG4gICAqIEBleGFtcGxlIEluZm8ubW9udGhzKClbMF0gLy89PiAnSmFudWFyeSdcbiAgICogQGV4YW1wbGUgSW5mby5tb250aHMoJ3Nob3J0JylbMF0gLy89PiAnSmFuJ1xuICAgKiBAZXhhbXBsZSBJbmZvLm1vbnRocygnbnVtZXJpYycpWzBdIC8vPT4gJzEnXG4gICAqIEBleGFtcGxlIEluZm8ubW9udGhzKCdzaG9ydCcsIHsgbG9jYWxlOiAnZnItQ0EnIH0gKVswXSAvLz0+ICdqYW52LidcbiAgICogQGV4YW1wbGUgSW5mby5tb250aHMoJ251bWVyaWMnLCB7IGxvY2FsZTogJ2FyJyB9KVswXSAvLz0+ICdcdTA2NjEnXG4gICAqIEBleGFtcGxlIEluZm8ubW9udGhzKCdsb25nJywgeyBvdXRwdXRDYWxlbmRhcjogJ2lzbGFtaWMnIH0pWzBdIC8vPT4gJ1JhYmlcdTAyQkIgSSdcbiAgICogQHJldHVybiB7QXJyYXl9XG4gICAqL1xuICBzdGF0aWMgbW9udGhzKFxuICAgIGxlbmd0aCA9IFwibG9uZ1wiLFxuICAgIHsgbG9jYWxlID0gbnVsbCwgbnVtYmVyaW5nU3lzdGVtID0gbnVsbCwgbG9jT2JqID0gbnVsbCwgb3V0cHV0Q2FsZW5kYXIgPSBcImdyZWdvcnlcIiB9ID0ge31cbiAgKSB7XG4gICAgcmV0dXJuIChsb2NPYmogfHwgTG9jYWxlLmNyZWF0ZShsb2NhbGUsIG51bWJlcmluZ1N5c3RlbSwgb3V0cHV0Q2FsZW5kYXIpKS5tb250aHMobGVuZ3RoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYW4gYXJyYXkgb2YgZm9ybWF0IG1vbnRoIG5hbWVzLlxuICAgKiBGb3JtYXQgbW9udGhzIGRpZmZlciBmcm9tIHN0YW5kYWxvbmUgbW9udGhzIGluIHRoYXQgdGhleSdyZSBtZWFudCB0byBhcHBlYXIgbmV4dCB0byB0aGUgZGF5IG9mIHRoZSBtb250aC4gSW4gc29tZSBsYW5ndWFnZXMsIHRoYXRcbiAgICogY2hhbmdlcyB0aGUgc3RyaW5nLlxuICAgKiBTZWUge0BsaW5rIEluZm8jbW9udGhzfVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2xlbmd0aD0nbG9uZyddIC0gdGhlIGxlbmd0aCBvZiB0aGUgbW9udGggcmVwcmVzZW50YXRpb24sIHN1Y2ggYXMgXCJudW1lcmljXCIsIFwiMi1kaWdpdFwiLCBcIm5hcnJvd1wiLCBcInNob3J0XCIsIFwibG9uZ1wiXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9uc1xuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlXSAtIHRoZSBsb2NhbGUgY29kZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubnVtYmVyaW5nU3lzdGVtPW51bGxdIC0gdGhlIG51bWJlcmluZyBzeXN0ZW1cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY09iaj1udWxsXSAtIGFuIGV4aXN0aW5nIGxvY2FsZSBvYmplY3QgdG8gdXNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5vdXRwdXRDYWxlbmRhcj0nZ3JlZ29yeSddIC0gdGhlIGNhbGVuZGFyXG4gICAqIEByZXR1cm4ge0FycmF5fVxuICAgKi9cbiAgc3RhdGljIG1vbnRoc0Zvcm1hdChcbiAgICBsZW5ndGggPSBcImxvbmdcIixcbiAgICB7IGxvY2FsZSA9IG51bGwsIG51bWJlcmluZ1N5c3RlbSA9IG51bGwsIGxvY09iaiA9IG51bGwsIG91dHB1dENhbGVuZGFyID0gXCJncmVnb3J5XCIgfSA9IHt9XG4gICkge1xuICAgIHJldHVybiAobG9jT2JqIHx8IExvY2FsZS5jcmVhdGUobG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG91dHB1dENhbGVuZGFyKSkubW9udGhzKGxlbmd0aCwgdHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGFuIGFycmF5IG9mIHN0YW5kYWxvbmUgd2VlayBuYW1lcy5cbiAgICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9EYXRlVGltZUZvcm1hdFxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2xlbmd0aD0nbG9uZyddIC0gdGhlIGxlbmd0aCBvZiB0aGUgd2Vla2RheSByZXByZXNlbnRhdGlvbiwgc3VjaCBhcyBcIm5hcnJvd1wiLCBcInNob3J0XCIsIFwibG9uZ1wiLlxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnNcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZV0gLSB0aGUgbG9jYWxlIGNvZGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLm51bWJlcmluZ1N5c3RlbT1udWxsXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NPYmo9bnVsbF0gLSBhbiBleGlzdGluZyBsb2NhbGUgb2JqZWN0IHRvIHVzZVxuICAgKiBAZXhhbXBsZSBJbmZvLndlZWtkYXlzKClbMF0gLy89PiAnTW9uZGF5J1xuICAgKiBAZXhhbXBsZSBJbmZvLndlZWtkYXlzKCdzaG9ydCcpWzBdIC8vPT4gJ01vbidcbiAgICogQGV4YW1wbGUgSW5mby53ZWVrZGF5cygnc2hvcnQnLCB7IGxvY2FsZTogJ2ZyLUNBJyB9KVswXSAvLz0+ICdsdW4uJ1xuICAgKiBAZXhhbXBsZSBJbmZvLndlZWtkYXlzKCdzaG9ydCcsIHsgbG9jYWxlOiAnYXInIH0pWzBdIC8vPT4gJ1x1MDYyN1x1MDY0NFx1MDYyN1x1MDYyQlx1MDY0Nlx1MDY0QVx1MDY0NidcbiAgICogQHJldHVybiB7QXJyYXl9XG4gICAqL1xuICBzdGF0aWMgd2Vla2RheXMobGVuZ3RoID0gXCJsb25nXCIsIHsgbG9jYWxlID0gbnVsbCwgbnVtYmVyaW5nU3lzdGVtID0gbnVsbCwgbG9jT2JqID0gbnVsbCB9ID0ge30pIHtcbiAgICByZXR1cm4gKGxvY09iaiB8fCBMb2NhbGUuY3JlYXRlKGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtLCBudWxsKSkud2Vla2RheXMobGVuZ3RoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYW4gYXJyYXkgb2YgZm9ybWF0IHdlZWsgbmFtZXMuXG4gICAqIEZvcm1hdCB3ZWVrZGF5cyBkaWZmZXIgZnJvbSBzdGFuZGFsb25lIHdlZWtkYXlzIGluIHRoYXQgdGhleSdyZSBtZWFudCB0byBhcHBlYXIgbmV4dCB0byBtb3JlIGRhdGUgaW5mb3JtYXRpb24uIEluIHNvbWUgbGFuZ3VhZ2VzLCB0aGF0XG4gICAqIGNoYW5nZXMgdGhlIHN0cmluZy5cbiAgICogU2VlIHtAbGluayBJbmZvI3dlZWtkYXlzfVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2xlbmd0aD0nbG9uZyddIC0gdGhlIGxlbmd0aCBvZiB0aGUgbW9udGggcmVwcmVzZW50YXRpb24sIHN1Y2ggYXMgXCJuYXJyb3dcIiwgXCJzaG9ydFwiLCBcImxvbmdcIi5cbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGU9bnVsbF0gLSB0aGUgbG9jYWxlIGNvZGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLm51bWJlcmluZ1N5c3RlbT1udWxsXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NPYmo9bnVsbF0gLSBhbiBleGlzdGluZyBsb2NhbGUgb2JqZWN0IHRvIHVzZVxuICAgKiBAcmV0dXJuIHtBcnJheX1cbiAgICovXG4gIHN0YXRpYyB3ZWVrZGF5c0Zvcm1hdChcbiAgICBsZW5ndGggPSBcImxvbmdcIixcbiAgICB7IGxvY2FsZSA9IG51bGwsIG51bWJlcmluZ1N5c3RlbSA9IG51bGwsIGxvY09iaiA9IG51bGwgfSA9IHt9XG4gICkge1xuICAgIHJldHVybiAobG9jT2JqIHx8IExvY2FsZS5jcmVhdGUobG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG51bGwpKS53ZWVrZGF5cyhsZW5ndGgsIHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhbiBhcnJheSBvZiBtZXJpZGllbXMuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9uc1xuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlXSAtIHRoZSBsb2NhbGUgY29kZVxuICAgKiBAZXhhbXBsZSBJbmZvLm1lcmlkaWVtcygpIC8vPT4gWyAnQU0nLCAnUE0nIF1cbiAgICogQGV4YW1wbGUgSW5mby5tZXJpZGllbXMoeyBsb2NhbGU6ICdteScgfSkgLy89PiBbICdcdTEwMTRcdTEwMzZcdTEwMTRcdTEwMDBcdTEwM0EnLCAnXHUxMDBBXHUxMDE0XHUxMDMxJyBdXG4gICAqIEByZXR1cm4ge0FycmF5fVxuICAgKi9cbiAgc3RhdGljIG1lcmlkaWVtcyh7IGxvY2FsZSA9IG51bGwgfSA9IHt9KSB7XG4gICAgcmV0dXJuIExvY2FsZS5jcmVhdGUobG9jYWxlKS5tZXJpZGllbXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYW4gYXJyYXkgb2YgZXJhcywgc3VjaCBhcyBbJ0JDJywgJ0FEJ10uIFRoZSBsb2NhbGUgY2FuIGJlIHNwZWNpZmllZCwgYnV0IHRoZSBjYWxlbmRhciBzeXN0ZW0gaXMgYWx3YXlzIEdyZWdvcmlhbi5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtsZW5ndGg9J3Nob3J0J10gLSB0aGUgbGVuZ3RoIG9mIHRoZSBlcmEgcmVwcmVzZW50YXRpb24sIHN1Y2ggYXMgXCJzaG9ydFwiIG9yIFwibG9uZ1wiLlxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnNcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZV0gLSB0aGUgbG9jYWxlIGNvZGVcbiAgICogQGV4YW1wbGUgSW5mby5lcmFzKCkgLy89PiBbICdCQycsICdBRCcgXVxuICAgKiBAZXhhbXBsZSBJbmZvLmVyYXMoJ2xvbmcnKSAvLz0+IFsgJ0JlZm9yZSBDaHJpc3QnLCAnQW5ubyBEb21pbmknIF1cbiAgICogQGV4YW1wbGUgSW5mby5lcmFzKCdsb25nJywgeyBsb2NhbGU6ICdmcicgfSkgLy89PiBbICdhdmFudCBKXHUwMEU5c3VzLUNocmlzdCcsICdhcHJcdTAwRThzIEpcdTAwRTlzdXMtQ2hyaXN0JyBdXG4gICAqIEByZXR1cm4ge0FycmF5fVxuICAgKi9cbiAgc3RhdGljIGVyYXMobGVuZ3RoID0gXCJzaG9ydFwiLCB7IGxvY2FsZSA9IG51bGwgfSA9IHt9KSB7XG4gICAgcmV0dXJuIExvY2FsZS5jcmVhdGUobG9jYWxlLCBudWxsLCBcImdyZWdvcnlcIikuZXJhcyhsZW5ndGgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgc2V0IG9mIGF2YWlsYWJsZSBmZWF0dXJlcyBpbiB0aGlzIGVudmlyb25tZW50LlxuICAgKiBTb21lIGZlYXR1cmVzIG9mIEx1eG9uIGFyZSBub3QgYXZhaWxhYmxlIGluIGFsbCBlbnZpcm9ubWVudHMuIEZvciBleGFtcGxlLCBvbiBvbGRlciBicm93c2VycywgcmVsYXRpdmUgdGltZSBmb3JtYXR0aW5nIHN1cHBvcnQgaXMgbm90IGF2YWlsYWJsZS4gVXNlIHRoaXMgZnVuY3Rpb24gdG8gZmlndXJlIG91dCBpZiB0aGF0J3MgdGhlIGNhc2UuXG4gICAqIEtleXM6XG4gICAqICogYHJlbGF0aXZlYDogd2hldGhlciB0aGlzIGVudmlyb25tZW50IHN1cHBvcnRzIHJlbGF0aXZlIHRpbWUgZm9ybWF0dGluZ1xuICAgKiBAZXhhbXBsZSBJbmZvLmZlYXR1cmVzKCkgLy89PiB7IHJlbGF0aXZlOiBmYWxzZSB9XG4gICAqIEByZXR1cm4ge09iamVjdH1cbiAgICovXG4gIHN0YXRpYyBmZWF0dXJlcygpIHtcbiAgICByZXR1cm4geyByZWxhdGl2ZTogaGFzUmVsYXRpdmUoKSB9O1xuICB9XG59XG4iLCAiaW1wb3J0IER1cmF0aW9uIGZyb20gXCIuLi9kdXJhdGlvbi5qc1wiO1xuXG5mdW5jdGlvbiBkYXlEaWZmKGVhcmxpZXIsIGxhdGVyKSB7XG4gIGNvbnN0IHV0Y0RheVN0YXJ0ID0gKGR0KSA9PiBkdC50b1VUQygwLCB7IGtlZXBMb2NhbFRpbWU6IHRydWUgfSkuc3RhcnRPZihcImRheVwiKS52YWx1ZU9mKCksXG4gICAgbXMgPSB1dGNEYXlTdGFydChsYXRlcikgLSB1dGNEYXlTdGFydChlYXJsaWVyKTtcbiAgcmV0dXJuIE1hdGguZmxvb3IoRHVyYXRpb24uZnJvbU1pbGxpcyhtcykuYXMoXCJkYXlzXCIpKTtcbn1cblxuZnVuY3Rpb24gaGlnaE9yZGVyRGlmZnMoY3Vyc29yLCBsYXRlciwgdW5pdHMpIHtcbiAgY29uc3QgZGlmZmVycyA9IFtcbiAgICBbXCJ5ZWFyc1wiLCAoYSwgYikgPT4gYi55ZWFyIC0gYS55ZWFyXSxcbiAgICBbXCJxdWFydGVyc1wiLCAoYSwgYikgPT4gYi5xdWFydGVyIC0gYS5xdWFydGVyXSxcbiAgICBbXCJtb250aHNcIiwgKGEsIGIpID0+IGIubW9udGggLSBhLm1vbnRoICsgKGIueWVhciAtIGEueWVhcikgKiAxMl0sXG4gICAgW1xuICAgICAgXCJ3ZWVrc1wiLFxuICAgICAgKGEsIGIpID0+IHtcbiAgICAgICAgY29uc3QgZGF5cyA9IGRheURpZmYoYSwgYik7XG4gICAgICAgIHJldHVybiAoZGF5cyAtIChkYXlzICUgNykpIC8gNztcbiAgICAgIH0sXG4gICAgXSxcbiAgICBbXCJkYXlzXCIsIGRheURpZmZdLFxuICBdO1xuXG4gIGNvbnN0IHJlc3VsdHMgPSB7fTtcbiAgbGV0IGxvd2VzdE9yZGVyLCBoaWdoV2F0ZXI7XG5cbiAgZm9yIChjb25zdCBbdW5pdCwgZGlmZmVyXSBvZiBkaWZmZXJzKSB7XG4gICAgaWYgKHVuaXRzLmluZGV4T2YodW5pdCkgPj0gMCkge1xuICAgICAgbG93ZXN0T3JkZXIgPSB1bml0O1xuXG4gICAgICBsZXQgZGVsdGEgPSBkaWZmZXIoY3Vyc29yLCBsYXRlcik7XG4gICAgICBoaWdoV2F0ZXIgPSBjdXJzb3IucGx1cyh7IFt1bml0XTogZGVsdGEgfSk7XG5cbiAgICAgIGlmIChoaWdoV2F0ZXIgPiBsYXRlcikge1xuICAgICAgICBjdXJzb3IgPSBjdXJzb3IucGx1cyh7IFt1bml0XTogZGVsdGEgLSAxIH0pO1xuICAgICAgICBkZWx0YSAtPSAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY3Vyc29yID0gaGlnaFdhdGVyO1xuICAgICAgfVxuXG4gICAgICByZXN1bHRzW3VuaXRdID0gZGVsdGE7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIFtjdXJzb3IsIHJlc3VsdHMsIGhpZ2hXYXRlciwgbG93ZXN0T3JkZXJdO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAoZWFybGllciwgbGF0ZXIsIHVuaXRzLCBvcHRzKSB7XG4gIGxldCBbY3Vyc29yLCByZXN1bHRzLCBoaWdoV2F0ZXIsIGxvd2VzdE9yZGVyXSA9IGhpZ2hPcmRlckRpZmZzKGVhcmxpZXIsIGxhdGVyLCB1bml0cyk7XG5cbiAgY29uc3QgcmVtYWluaW5nTWlsbGlzID0gbGF0ZXIgLSBjdXJzb3I7XG5cbiAgY29uc3QgbG93ZXJPcmRlclVuaXRzID0gdW5pdHMuZmlsdGVyKFxuICAgICh1KSA9PiBbXCJob3Vyc1wiLCBcIm1pbnV0ZXNcIiwgXCJzZWNvbmRzXCIsIFwibWlsbGlzZWNvbmRzXCJdLmluZGV4T2YodSkgPj0gMFxuICApO1xuXG4gIGlmIChsb3dlck9yZGVyVW5pdHMubGVuZ3RoID09PSAwKSB7XG4gICAgaWYgKGhpZ2hXYXRlciA8IGxhdGVyKSB7XG4gICAgICBoaWdoV2F0ZXIgPSBjdXJzb3IucGx1cyh7IFtsb3dlc3RPcmRlcl06IDEgfSk7XG4gICAgfVxuXG4gICAgaWYgKGhpZ2hXYXRlciAhPT0gY3Vyc29yKSB7XG4gICAgICByZXN1bHRzW2xvd2VzdE9yZGVyXSA9IChyZXN1bHRzW2xvd2VzdE9yZGVyXSB8fCAwKSArIHJlbWFpbmluZ01pbGxpcyAvIChoaWdoV2F0ZXIgLSBjdXJzb3IpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGR1cmF0aW9uID0gRHVyYXRpb24uZnJvbU9iamVjdChyZXN1bHRzLCBvcHRzKTtcblxuICBpZiAobG93ZXJPcmRlclVuaXRzLmxlbmd0aCA+IDApIHtcbiAgICByZXR1cm4gRHVyYXRpb24uZnJvbU1pbGxpcyhyZW1haW5pbmdNaWxsaXMsIG9wdHMpXG4gICAgICAuc2hpZnRUbyguLi5sb3dlck9yZGVyVW5pdHMpXG4gICAgICAucGx1cyhkdXJhdGlvbik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGR1cmF0aW9uO1xuICB9XG59XG4iLCAiY29uc3QgbnVtYmVyaW5nU3lzdGVtcyA9IHtcbiAgYXJhYjogXCJbXFx1MDY2MC1cXHUwNjY5XVwiLFxuICBhcmFiZXh0OiBcIltcXHUwNkYwLVxcdTA2RjldXCIsXG4gIGJhbGk6IFwiW1xcdTFCNTAtXFx1MUI1OV1cIixcbiAgYmVuZzogXCJbXFx1MDlFNi1cXHUwOUVGXVwiLFxuICBkZXZhOiBcIltcXHUwOTY2LVxcdTA5NkZdXCIsXG4gIGZ1bGx3aWRlOiBcIltcXHVGRjEwLVxcdUZGMTldXCIsXG4gIGd1anI6IFwiW1xcdTBBRTYtXFx1MEFFRl1cIixcbiAgaGFuaWRlYzogXCJbXHUzMDA3fFx1NEUwMHxcdTRFOEN8XHU0RTA5fFx1NTZEQnxcdTRFOTR8XHU1MTZEfFx1NEUwM3xcdTUxNkJ8XHU0RTVEXVwiLFxuICBraG1yOiBcIltcXHUxN0UwLVxcdTE3RTldXCIsXG4gIGtuZGE6IFwiW1xcdTBDRTYtXFx1MENFRl1cIixcbiAgbGFvbzogXCJbXFx1MEVEMC1cXHUwRUQ5XVwiLFxuICBsaW1iOiBcIltcXHUxOTQ2LVxcdTE5NEZdXCIsXG4gIG1seW06IFwiW1xcdTBENjYtXFx1MEQ2Rl1cIixcbiAgbW9uZzogXCJbXFx1MTgxMC1cXHUxODE5XVwiLFxuICBteW1yOiBcIltcXHUxMDQwLVxcdTEwNDldXCIsXG4gIG9yeWE6IFwiW1xcdTBCNjYtXFx1MEI2Rl1cIixcbiAgdGFtbGRlYzogXCJbXFx1MEJFNi1cXHUwQkVGXVwiLFxuICB0ZWx1OiBcIltcXHUwQzY2LVxcdTBDNkZdXCIsXG4gIHRoYWk6IFwiW1xcdTBFNTAtXFx1MEU1OV1cIixcbiAgdGlidDogXCJbXFx1MEYyMC1cXHUwRjI5XVwiLFxuICBsYXRuOiBcIlxcXFxkXCIsXG59O1xuXG5jb25zdCBudW1iZXJpbmdTeXN0ZW1zVVRGMTYgPSB7XG4gIGFyYWI6IFsxNjMyLCAxNjQxXSxcbiAgYXJhYmV4dDogWzE3NzYsIDE3ODVdLFxuICBiYWxpOiBbNjk5MiwgNzAwMV0sXG4gIGJlbmc6IFsyNTM0LCAyNTQzXSxcbiAgZGV2YTogWzI0MDYsIDI0MTVdLFxuICBmdWxsd2lkZTogWzY1Mjk2LCA2NTMwM10sXG4gIGd1anI6IFsyNzkwLCAyNzk5XSxcbiAga2htcjogWzYxMTIsIDYxMjFdLFxuICBrbmRhOiBbMzMwMiwgMzMxMV0sXG4gIGxhb286IFszNzkyLCAzODAxXSxcbiAgbGltYjogWzY0NzAsIDY0NzldLFxuICBtbHltOiBbMzQzMCwgMzQzOV0sXG4gIG1vbmc6IFs2MTYwLCA2MTY5XSxcbiAgbXltcjogWzQxNjAsIDQxNjldLFxuICBvcnlhOiBbMjkxOCwgMjkyN10sXG4gIHRhbWxkZWM6IFszMDQ2LCAzMDU1XSxcbiAgdGVsdTogWzMxNzQsIDMxODNdLFxuICB0aGFpOiBbMzY2NCwgMzY3M10sXG4gIHRpYnQ6IFszODcyLCAzODgxXSxcbn07XG5cbmNvbnN0IGhhbmlkZWNDaGFycyA9IG51bWJlcmluZ1N5c3RlbXMuaGFuaWRlYy5yZXBsYWNlKC9bXFxbfFxcXV0vZywgXCJcIikuc3BsaXQoXCJcIik7XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZURpZ2l0cyhzdHIpIHtcbiAgbGV0IHZhbHVlID0gcGFyc2VJbnQoc3RyLCAxMCk7XG4gIGlmIChpc05hTih2YWx1ZSkpIHtcbiAgICB2YWx1ZSA9IFwiXCI7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGNvZGUgPSBzdHIuY2hhckNvZGVBdChpKTtcblxuICAgICAgaWYgKHN0cltpXS5zZWFyY2gobnVtYmVyaW5nU3lzdGVtcy5oYW5pZGVjKSAhPT0gLTEpIHtcbiAgICAgICAgdmFsdWUgKz0gaGFuaWRlY0NoYXJzLmluZGV4T2Yoc3RyW2ldKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIG51bWJlcmluZ1N5c3RlbXNVVEYxNikge1xuICAgICAgICAgIGNvbnN0IFttaW4sIG1heF0gPSBudW1iZXJpbmdTeXN0ZW1zVVRGMTZba2V5XTtcbiAgICAgICAgICBpZiAoY29kZSA+PSBtaW4gJiYgY29kZSA8PSBtYXgpIHtcbiAgICAgICAgICAgIHZhbHVlICs9IGNvZGUgLSBtaW47XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBwYXJzZUludCh2YWx1ZSwgMTApO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlnaXRSZWdleCh7IG51bWJlcmluZ1N5c3RlbSB9LCBhcHBlbmQgPSBcIlwiKSB7XG4gIHJldHVybiBuZXcgUmVnRXhwKGAke251bWJlcmluZ1N5c3RlbXNbbnVtYmVyaW5nU3lzdGVtIHx8IFwibGF0blwiXX0ke2FwcGVuZH1gKTtcbn1cbiIsICJpbXBvcnQgeyBwYXJzZU1pbGxpcywgaXNVbmRlZmluZWQsIHVudHJ1bmNhdGVZZWFyLCBzaWduZWRPZmZzZXQsIGhhc093blByb3BlcnR5IH0gZnJvbSBcIi4vdXRpbC5qc1wiO1xuaW1wb3J0IEZvcm1hdHRlciBmcm9tIFwiLi9mb3JtYXR0ZXIuanNcIjtcbmltcG9ydCBGaXhlZE9mZnNldFpvbmUgZnJvbSBcIi4uL3pvbmVzL2ZpeGVkT2Zmc2V0Wm9uZS5qc1wiO1xuaW1wb3J0IElBTkFab25lIGZyb20gXCIuLi96b25lcy9JQU5BWm9uZS5qc1wiO1xuaW1wb3J0IERhdGVUaW1lIGZyb20gXCIuLi9kYXRldGltZS5qc1wiO1xuaW1wb3J0IHsgZGlnaXRSZWdleCwgcGFyc2VEaWdpdHMgfSBmcm9tIFwiLi9kaWdpdHMuanNcIjtcbmltcG9ydCB7IENvbmZsaWN0aW5nU3BlY2lmaWNhdGlvbkVycm9yIH0gZnJvbSBcIi4uL2Vycm9ycy5qc1wiO1xuXG5jb25zdCBNSVNTSU5HX0ZUUCA9IFwibWlzc2luZyBJbnRsLkRhdGVUaW1lRm9ybWF0LmZvcm1hdFRvUGFydHMgc3VwcG9ydFwiO1xuXG5mdW5jdGlvbiBpbnRVbml0KHJlZ2V4LCBwb3N0ID0gKGkpID0+IGkpIHtcbiAgcmV0dXJuIHsgcmVnZXgsIGRlc2VyOiAoW3NdKSA9PiBwb3N0KHBhcnNlRGlnaXRzKHMpKSB9O1xufVxuXG5jb25zdCBOQlNQID0gU3RyaW5nLmZyb21DaGFyQ29kZSgxNjApO1xuY29uc3Qgc3BhY2VPck5CU1AgPSBgWyAke05CU1B9XWA7XG5jb25zdCBzcGFjZU9yTkJTUFJlZ0V4cCA9IG5ldyBSZWdFeHAoc3BhY2VPck5CU1AsIFwiZ1wiKTtcblxuZnVuY3Rpb24gZml4TGlzdFJlZ2V4KHMpIHtcbiAgLy8gbWFrZSBkb3RzIG9wdGlvbmFsIGFuZCBhbHNvIG1ha2UgdGhlbSBsaXRlcmFsXG4gIC8vIG1ha2Ugc3BhY2UgYW5kIG5vbiBicmVha2FibGUgc3BhY2UgY2hhcmFjdGVycyBpbnRlcmNoYW5nZWFibGVcbiAgcmV0dXJuIHMucmVwbGFjZSgvXFwuL2csIFwiXFxcXC4/XCIpLnJlcGxhY2Uoc3BhY2VPck5CU1BSZWdFeHAsIHNwYWNlT3JOQlNQKTtcbn1cblxuZnVuY3Rpb24gc3RyaXBJbnNlbnNpdGl2aXRpZXMocykge1xuICByZXR1cm4gc1xuICAgIC5yZXBsYWNlKC9cXC4vZywgXCJcIikgLy8gaWdub3JlIGRvdHMgdGhhdCB3ZXJlIG1hZGUgb3B0aW9uYWxcbiAgICAucmVwbGFjZShzcGFjZU9yTkJTUFJlZ0V4cCwgXCIgXCIpIC8vIGludGVyY2hhbmdlIHNwYWNlIGFuZCBuYnNwXG4gICAgLnRvTG93ZXJDYXNlKCk7XG59XG5cbmZ1bmN0aW9uIG9uZU9mKHN0cmluZ3MsIHN0YXJ0SW5kZXgpIHtcbiAgaWYgKHN0cmluZ3MgPT09IG51bGwpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4ge1xuICAgICAgcmVnZXg6IFJlZ0V4cChzdHJpbmdzLm1hcChmaXhMaXN0UmVnZXgpLmpvaW4oXCJ8XCIpKSxcbiAgICAgIGRlc2VyOiAoW3NdKSA9PlxuICAgICAgICBzdHJpbmdzLmZpbmRJbmRleCgoaSkgPT4gc3RyaXBJbnNlbnNpdGl2aXRpZXMocykgPT09IHN0cmlwSW5zZW5zaXRpdml0aWVzKGkpKSArIHN0YXJ0SW5kZXgsXG4gICAgfTtcbiAgfVxufVxuXG5mdW5jdGlvbiBvZmZzZXQocmVnZXgsIGdyb3Vwcykge1xuICByZXR1cm4geyByZWdleCwgZGVzZXI6IChbLCBoLCBtXSkgPT4gc2lnbmVkT2Zmc2V0KGgsIG0pLCBncm91cHMgfTtcbn1cblxuZnVuY3Rpb24gc2ltcGxlKHJlZ2V4KSB7XG4gIHJldHVybiB7IHJlZ2V4LCBkZXNlcjogKFtzXSkgPT4gcyB9O1xufVxuXG5mdW5jdGlvbiBlc2NhcGVUb2tlbih2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUucmVwbGFjZSgvW1xcLVxcW1xcXXt9KCkqKz8uLFxcXFxcXF4kfCNcXHNdL2csIFwiXFxcXCQmXCIpO1xufVxuXG5mdW5jdGlvbiB1bml0Rm9yVG9rZW4odG9rZW4sIGxvYykge1xuICBjb25zdCBvbmUgPSBkaWdpdFJlZ2V4KGxvYyksXG4gICAgdHdvID0gZGlnaXRSZWdleChsb2MsIFwiezJ9XCIpLFxuICAgIHRocmVlID0gZGlnaXRSZWdleChsb2MsIFwiezN9XCIpLFxuICAgIGZvdXIgPSBkaWdpdFJlZ2V4KGxvYywgXCJ7NH1cIiksXG4gICAgc2l4ID0gZGlnaXRSZWdleChsb2MsIFwiezZ9XCIpLFxuICAgIG9uZU9yVHdvID0gZGlnaXRSZWdleChsb2MsIFwiezEsMn1cIiksXG4gICAgb25lVG9UaHJlZSA9IGRpZ2l0UmVnZXgobG9jLCBcInsxLDN9XCIpLFxuICAgIG9uZVRvU2l4ID0gZGlnaXRSZWdleChsb2MsIFwiezEsNn1cIiksXG4gICAgb25lVG9OaW5lID0gZGlnaXRSZWdleChsb2MsIFwiezEsOX1cIiksXG4gICAgdHdvVG9Gb3VyID0gZGlnaXRSZWdleChsb2MsIFwiezIsNH1cIiksXG4gICAgZm91clRvU2l4ID0gZGlnaXRSZWdleChsb2MsIFwiezQsNn1cIiksXG4gICAgbGl0ZXJhbCA9ICh0KSA9PiAoeyByZWdleDogUmVnRXhwKGVzY2FwZVRva2VuKHQudmFsKSksIGRlc2VyOiAoW3NdKSA9PiBzLCBsaXRlcmFsOiB0cnVlIH0pLFxuICAgIHVuaXRhdGUgPSAodCkgPT4ge1xuICAgICAgaWYgKHRva2VuLmxpdGVyYWwpIHtcbiAgICAgICAgcmV0dXJuIGxpdGVyYWwodCk7XG4gICAgICB9XG4gICAgICBzd2l0Y2ggKHQudmFsKSB7XG4gICAgICAgIC8vIGVyYVxuICAgICAgICBjYXNlIFwiR1wiOlxuICAgICAgICAgIHJldHVybiBvbmVPZihsb2MuZXJhcyhcInNob3J0XCIsIGZhbHNlKSwgMCk7XG4gICAgICAgIGNhc2UgXCJHR1wiOlxuICAgICAgICAgIHJldHVybiBvbmVPZihsb2MuZXJhcyhcImxvbmdcIiwgZmFsc2UpLCAwKTtcbiAgICAgICAgLy8geWVhcnNcbiAgICAgICAgY2FzZSBcInlcIjpcbiAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVUb1NpeCk7XG4gICAgICAgIGNhc2UgXCJ5eVwiOlxuICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3b1RvRm91ciwgdW50cnVuY2F0ZVllYXIpO1xuICAgICAgICBjYXNlIFwieXl5eVwiOlxuICAgICAgICAgIHJldHVybiBpbnRVbml0KGZvdXIpO1xuICAgICAgICBjYXNlIFwieXl5eXlcIjpcbiAgICAgICAgICByZXR1cm4gaW50VW5pdChmb3VyVG9TaXgpO1xuICAgICAgICBjYXNlIFwieXl5eXl5XCI6XG4gICAgICAgICAgcmV0dXJuIGludFVuaXQoc2l4KTtcbiAgICAgICAgLy8gbW9udGhzXG4gICAgICAgIGNhc2UgXCJNXCI6XG4gICAgICAgICAgcmV0dXJuIGludFVuaXQob25lT3JUd28pO1xuICAgICAgICBjYXNlIFwiTU1cIjpcbiAgICAgICAgICByZXR1cm4gaW50VW5pdCh0d28pO1xuICAgICAgICBjYXNlIFwiTU1NXCI6XG4gICAgICAgICAgcmV0dXJuIG9uZU9mKGxvYy5tb250aHMoXCJzaG9ydFwiLCB0cnVlLCBmYWxzZSksIDEpO1xuICAgICAgICBjYXNlIFwiTU1NTVwiOlxuICAgICAgICAgIHJldHVybiBvbmVPZihsb2MubW9udGhzKFwibG9uZ1wiLCB0cnVlLCBmYWxzZSksIDEpO1xuICAgICAgICBjYXNlIFwiTFwiOlxuICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZU9yVHdvKTtcbiAgICAgICAgY2FzZSBcIkxMXCI6XG4gICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvKTtcbiAgICAgICAgY2FzZSBcIkxMTFwiOlxuICAgICAgICAgIHJldHVybiBvbmVPZihsb2MubW9udGhzKFwic2hvcnRcIiwgZmFsc2UsIGZhbHNlKSwgMSk7XG4gICAgICAgIGNhc2UgXCJMTExMXCI6XG4gICAgICAgICAgcmV0dXJuIG9uZU9mKGxvYy5tb250aHMoXCJsb25nXCIsIGZhbHNlLCBmYWxzZSksIDEpO1xuICAgICAgICAvLyBkYXRlc1xuICAgICAgICBjYXNlIFwiZFwiOlxuICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZU9yVHdvKTtcbiAgICAgICAgY2FzZSBcImRkXCI6XG4gICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvKTtcbiAgICAgICAgLy8gb3JkaW5hbHNcbiAgICAgICAgY2FzZSBcIm9cIjpcbiAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVUb1RocmVlKTtcbiAgICAgICAgY2FzZSBcIm9vb1wiOlxuICAgICAgICAgIHJldHVybiBpbnRVbml0KHRocmVlKTtcbiAgICAgICAgLy8gdGltZVxuICAgICAgICBjYXNlIFwiSEhcIjpcbiAgICAgICAgICByZXR1cm4gaW50VW5pdCh0d28pO1xuICAgICAgICBjYXNlIFwiSFwiOlxuICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZU9yVHdvKTtcbiAgICAgICAgY2FzZSBcImhoXCI6XG4gICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvKTtcbiAgICAgICAgY2FzZSBcImhcIjpcbiAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVPclR3byk7XG4gICAgICAgIGNhc2UgXCJtbVwiOlxuICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3byk7XG4gICAgICAgIGNhc2UgXCJtXCI6XG4gICAgICAgICAgcmV0dXJuIGludFVuaXQob25lT3JUd28pO1xuICAgICAgICBjYXNlIFwicVwiOlxuICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZU9yVHdvKTtcbiAgICAgICAgY2FzZSBcInFxXCI6XG4gICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvKTtcbiAgICAgICAgY2FzZSBcInNcIjpcbiAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVPclR3byk7XG4gICAgICAgIGNhc2UgXCJzc1wiOlxuICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3byk7XG4gICAgICAgIGNhc2UgXCJTXCI6XG4gICAgICAgICAgcmV0dXJuIGludFVuaXQob25lVG9UaHJlZSk7XG4gICAgICAgIGNhc2UgXCJTU1NcIjpcbiAgICAgICAgICByZXR1cm4gaW50VW5pdCh0aHJlZSk7XG4gICAgICAgIGNhc2UgXCJ1XCI6XG4gICAgICAgICAgcmV0dXJuIHNpbXBsZShvbmVUb05pbmUpO1xuICAgICAgICBjYXNlIFwidXVcIjpcbiAgICAgICAgICByZXR1cm4gc2ltcGxlKG9uZU9yVHdvKTtcbiAgICAgICAgY2FzZSBcInV1dVwiOlxuICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZSk7XG4gICAgICAgIC8vIG1lcmlkaWVtXG4gICAgICAgIGNhc2UgXCJhXCI6XG4gICAgICAgICAgcmV0dXJuIG9uZU9mKGxvYy5tZXJpZGllbXMoKSwgMCk7XG4gICAgICAgIC8vIHdlZWtZZWFyIChrKVxuICAgICAgICBjYXNlIFwia2tra1wiOlxuICAgICAgICAgIHJldHVybiBpbnRVbml0KGZvdXIpO1xuICAgICAgICBjYXNlIFwia2tcIjpcbiAgICAgICAgICByZXR1cm4gaW50VW5pdCh0d29Ub0ZvdXIsIHVudHJ1bmNhdGVZZWFyKTtcbiAgICAgICAgLy8gd2Vla051bWJlciAoVylcbiAgICAgICAgY2FzZSBcIldcIjpcbiAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVPclR3byk7XG4gICAgICAgIGNhc2UgXCJXV1wiOlxuICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3byk7XG4gICAgICAgIC8vIHdlZWtkYXlzXG4gICAgICAgIGNhc2UgXCJFXCI6XG4gICAgICAgIGNhc2UgXCJjXCI6XG4gICAgICAgICAgcmV0dXJuIGludFVuaXQob25lKTtcbiAgICAgICAgY2FzZSBcIkVFRVwiOlxuICAgICAgICAgIHJldHVybiBvbmVPZihsb2Mud2Vla2RheXMoXCJzaG9ydFwiLCBmYWxzZSwgZmFsc2UpLCAxKTtcbiAgICAgICAgY2FzZSBcIkVFRUVcIjpcbiAgICAgICAgICByZXR1cm4gb25lT2YobG9jLndlZWtkYXlzKFwibG9uZ1wiLCBmYWxzZSwgZmFsc2UpLCAxKTtcbiAgICAgICAgY2FzZSBcImNjY1wiOlxuICAgICAgICAgIHJldHVybiBvbmVPZihsb2Mud2Vla2RheXMoXCJzaG9ydFwiLCB0cnVlLCBmYWxzZSksIDEpO1xuICAgICAgICBjYXNlIFwiY2NjY1wiOlxuICAgICAgICAgIHJldHVybiBvbmVPZihsb2Mud2Vla2RheXMoXCJsb25nXCIsIHRydWUsIGZhbHNlKSwgMSk7XG4gICAgICAgIC8vIG9mZnNldC96b25lXG4gICAgICAgIGNhc2UgXCJaXCI6XG4gICAgICAgIGNhc2UgXCJaWlwiOlxuICAgICAgICAgIHJldHVybiBvZmZzZXQobmV3IFJlZ0V4cChgKFsrLV0ke29uZU9yVHdvLnNvdXJjZX0pKD86Oigke3R3by5zb3VyY2V9KSk/YCksIDIpO1xuICAgICAgICBjYXNlIFwiWlpaXCI6XG4gICAgICAgICAgcmV0dXJuIG9mZnNldChuZXcgUmVnRXhwKGAoWystXSR7b25lT3JUd28uc291cmNlfSkoJHt0d28uc291cmNlfSk/YCksIDIpO1xuICAgICAgICAvLyB3ZSBkb24ndCBzdXBwb3J0IFpaWlogKFBTVCkgb3IgWlpaWlogKFBhY2lmaWMgU3RhbmRhcmQgVGltZSkgaW4gcGFyc2luZ1xuICAgICAgICAvLyBiZWNhdXNlIHdlIGRvbid0IGhhdmUgYW55IHdheSB0byBmaWd1cmUgb3V0IHdoYXQgdGhleSBhcmVcbiAgICAgICAgY2FzZSBcInpcIjpcbiAgICAgICAgICByZXR1cm4gc2ltcGxlKC9bYS16XystL117MSwyNTZ9Py9pKTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gbGl0ZXJhbCh0KTtcbiAgICAgIH1cbiAgICB9O1xuXG4gIGNvbnN0IHVuaXQgPSB1bml0YXRlKHRva2VuKSB8fCB7XG4gICAgaW52YWxpZFJlYXNvbjogTUlTU0lOR19GVFAsXG4gIH07XG5cbiAgdW5pdC50b2tlbiA9IHRva2VuO1xuXG4gIHJldHVybiB1bml0O1xufVxuXG5jb25zdCBwYXJ0VHlwZVN0eWxlVG9Ub2tlblZhbCA9IHtcbiAgeWVhcjoge1xuICAgIFwiMi1kaWdpdFwiOiBcInl5XCIsXG4gICAgbnVtZXJpYzogXCJ5eXl5eVwiLFxuICB9LFxuICBtb250aDoge1xuICAgIG51bWVyaWM6IFwiTVwiLFxuICAgIFwiMi1kaWdpdFwiOiBcIk1NXCIsXG4gICAgc2hvcnQ6IFwiTU1NXCIsXG4gICAgbG9uZzogXCJNTU1NXCIsXG4gIH0sXG4gIGRheToge1xuICAgIG51bWVyaWM6IFwiZFwiLFxuICAgIFwiMi1kaWdpdFwiOiBcImRkXCIsXG4gIH0sXG4gIHdlZWtkYXk6IHtcbiAgICBzaG9ydDogXCJFRUVcIixcbiAgICBsb25nOiBcIkVFRUVcIixcbiAgfSxcbiAgZGF5cGVyaW9kOiBcImFcIixcbiAgZGF5UGVyaW9kOiBcImFcIixcbiAgaG91cjoge1xuICAgIG51bWVyaWM6IFwiaFwiLFxuICAgIFwiMi1kaWdpdFwiOiBcImhoXCIsXG4gIH0sXG4gIG1pbnV0ZToge1xuICAgIG51bWVyaWM6IFwibVwiLFxuICAgIFwiMi1kaWdpdFwiOiBcIm1tXCIsXG4gIH0sXG4gIHNlY29uZDoge1xuICAgIG51bWVyaWM6IFwic1wiLFxuICAgIFwiMi1kaWdpdFwiOiBcInNzXCIsXG4gIH0sXG59O1xuXG5mdW5jdGlvbiB0b2tlbkZvclBhcnQocGFydCwgbG9jYWxlLCBmb3JtYXRPcHRzKSB7XG4gIGNvbnN0IHsgdHlwZSwgdmFsdWUgfSA9IHBhcnQ7XG5cbiAgaWYgKHR5cGUgPT09IFwibGl0ZXJhbFwiKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxpdGVyYWw6IHRydWUsXG4gICAgICB2YWw6IHZhbHVlLFxuICAgIH07XG4gIH1cblxuICBjb25zdCBzdHlsZSA9IGZvcm1hdE9wdHNbdHlwZV07XG5cbiAgbGV0IHZhbCA9IHBhcnRUeXBlU3R5bGVUb1Rva2VuVmFsW3R5cGVdO1xuICBpZiAodHlwZW9mIHZhbCA9PT0gXCJvYmplY3RcIikge1xuICAgIHZhbCA9IHZhbFtzdHlsZV07XG4gIH1cblxuICBpZiAodmFsKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxpdGVyYWw6IGZhbHNlLFxuICAgICAgdmFsLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBidWlsZFJlZ2V4KHVuaXRzKSB7XG4gIGNvbnN0IHJlID0gdW5pdHMubWFwKCh1KSA9PiB1LnJlZ2V4KS5yZWR1Y2UoKGYsIHIpID0+IGAke2Z9KCR7ci5zb3VyY2V9KWAsIFwiXCIpO1xuICByZXR1cm4gW2BeJHtyZX0kYCwgdW5pdHNdO1xufVxuXG5mdW5jdGlvbiBtYXRjaChpbnB1dCwgcmVnZXgsIGhhbmRsZXJzKSB7XG4gIGNvbnN0IG1hdGNoZXMgPSBpbnB1dC5tYXRjaChyZWdleCk7XG5cbiAgaWYgKG1hdGNoZXMpIHtcbiAgICBjb25zdCBhbGwgPSB7fTtcbiAgICBsZXQgbWF0Y2hJbmRleCA9IDE7XG4gICAgZm9yIChjb25zdCBpIGluIGhhbmRsZXJzKSB7XG4gICAgICBpZiAoaGFzT3duUHJvcGVydHkoaGFuZGxlcnMsIGkpKSB7XG4gICAgICAgIGNvbnN0IGggPSBoYW5kbGVyc1tpXSxcbiAgICAgICAgICBncm91cHMgPSBoLmdyb3VwcyA/IGguZ3JvdXBzICsgMSA6IDE7XG4gICAgICAgIGlmICghaC5saXRlcmFsICYmIGgudG9rZW4pIHtcbiAgICAgICAgICBhbGxbaC50b2tlbi52YWxbMF1dID0gaC5kZXNlcihtYXRjaGVzLnNsaWNlKG1hdGNoSW5kZXgsIG1hdGNoSW5kZXggKyBncm91cHMpKTtcbiAgICAgICAgfVxuICAgICAgICBtYXRjaEluZGV4ICs9IGdyb3VwcztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIFttYXRjaGVzLCBhbGxdO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBbbWF0Y2hlcywge31dO1xuICB9XG59XG5cbmZ1bmN0aW9uIGRhdGVUaW1lRnJvbU1hdGNoZXMobWF0Y2hlcykge1xuICBjb25zdCB0b0ZpZWxkID0gKHRva2VuKSA9PiB7XG4gICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgY2FzZSBcIlNcIjpcbiAgICAgICAgcmV0dXJuIFwibWlsbGlzZWNvbmRcIjtcbiAgICAgIGNhc2UgXCJzXCI6XG4gICAgICAgIHJldHVybiBcInNlY29uZFwiO1xuICAgICAgY2FzZSBcIm1cIjpcbiAgICAgICAgcmV0dXJuIFwibWludXRlXCI7XG4gICAgICBjYXNlIFwiaFwiOlxuICAgICAgY2FzZSBcIkhcIjpcbiAgICAgICAgcmV0dXJuIFwiaG91clwiO1xuICAgICAgY2FzZSBcImRcIjpcbiAgICAgICAgcmV0dXJuIFwiZGF5XCI7XG4gICAgICBjYXNlIFwib1wiOlxuICAgICAgICByZXR1cm4gXCJvcmRpbmFsXCI7XG4gICAgICBjYXNlIFwiTFwiOlxuICAgICAgY2FzZSBcIk1cIjpcbiAgICAgICAgcmV0dXJuIFwibW9udGhcIjtcbiAgICAgIGNhc2UgXCJ5XCI6XG4gICAgICAgIHJldHVybiBcInllYXJcIjtcbiAgICAgIGNhc2UgXCJFXCI6XG4gICAgICBjYXNlIFwiY1wiOlxuICAgICAgICByZXR1cm4gXCJ3ZWVrZGF5XCI7XG4gICAgICBjYXNlIFwiV1wiOlxuICAgICAgICByZXR1cm4gXCJ3ZWVrTnVtYmVyXCI7XG4gICAgICBjYXNlIFwia1wiOlxuICAgICAgICByZXR1cm4gXCJ3ZWVrWWVhclwiO1xuICAgICAgY2FzZSBcInFcIjpcbiAgICAgICAgcmV0dXJuIFwicXVhcnRlclwiO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9O1xuXG4gIGxldCB6b25lID0gbnVsbDtcbiAgbGV0IHNwZWNpZmljT2Zmc2V0O1xuICBpZiAoIWlzVW5kZWZpbmVkKG1hdGNoZXMueikpIHtcbiAgICB6b25lID0gSUFOQVpvbmUuY3JlYXRlKG1hdGNoZXMueik7XG4gIH1cblxuICBpZiAoIWlzVW5kZWZpbmVkKG1hdGNoZXMuWikpIHtcbiAgICBpZiAoIXpvbmUpIHtcbiAgICAgIHpvbmUgPSBuZXcgRml4ZWRPZmZzZXRab25lKG1hdGNoZXMuWik7XG4gICAgfVxuICAgIHNwZWNpZmljT2Zmc2V0ID0gbWF0Y2hlcy5aO1xuICB9XG5cbiAgaWYgKCFpc1VuZGVmaW5lZChtYXRjaGVzLnEpKSB7XG4gICAgbWF0Y2hlcy5NID0gKG1hdGNoZXMucSAtIDEpICogMyArIDE7XG4gIH1cblxuICBpZiAoIWlzVW5kZWZpbmVkKG1hdGNoZXMuaCkpIHtcbiAgICBpZiAobWF0Y2hlcy5oIDwgMTIgJiYgbWF0Y2hlcy5hID09PSAxKSB7XG4gICAgICBtYXRjaGVzLmggKz0gMTI7XG4gICAgfSBlbHNlIGlmIChtYXRjaGVzLmggPT09IDEyICYmIG1hdGNoZXMuYSA9PT0gMCkge1xuICAgICAgbWF0Y2hlcy5oID0gMDtcbiAgICB9XG4gIH1cblxuICBpZiAobWF0Y2hlcy5HID09PSAwICYmIG1hdGNoZXMueSkge1xuICAgIG1hdGNoZXMueSA9IC1tYXRjaGVzLnk7XG4gIH1cblxuICBpZiAoIWlzVW5kZWZpbmVkKG1hdGNoZXMudSkpIHtcbiAgICBtYXRjaGVzLlMgPSBwYXJzZU1pbGxpcyhtYXRjaGVzLnUpO1xuICB9XG5cbiAgY29uc3QgdmFscyA9IE9iamVjdC5rZXlzKG1hdGNoZXMpLnJlZHVjZSgociwgaykgPT4ge1xuICAgIGNvbnN0IGYgPSB0b0ZpZWxkKGspO1xuICAgIGlmIChmKSB7XG4gICAgICByW2ZdID0gbWF0Y2hlc1trXTtcbiAgICB9XG5cbiAgICByZXR1cm4gcjtcbiAgfSwge30pO1xuXG4gIHJldHVybiBbdmFscywgem9uZSwgc3BlY2lmaWNPZmZzZXRdO1xufVxuXG5sZXQgZHVtbXlEYXRlVGltZUNhY2hlID0gbnVsbDtcblxuZnVuY3Rpb24gZ2V0RHVtbXlEYXRlVGltZSgpIHtcbiAgaWYgKCFkdW1teURhdGVUaW1lQ2FjaGUpIHtcbiAgICBkdW1teURhdGVUaW1lQ2FjaGUgPSBEYXRlVGltZS5mcm9tTWlsbGlzKDE1NTU1NTU1NTU1NTUpO1xuICB9XG5cbiAgcmV0dXJuIGR1bW15RGF0ZVRpbWVDYWNoZTtcbn1cblxuZnVuY3Rpb24gbWF5YmVFeHBhbmRNYWNyb1Rva2VuKHRva2VuLCBsb2NhbGUpIHtcbiAgaWYgKHRva2VuLmxpdGVyYWwpIHtcbiAgICByZXR1cm4gdG9rZW47XG4gIH1cblxuICBjb25zdCBmb3JtYXRPcHRzID0gRm9ybWF0dGVyLm1hY3JvVG9rZW5Ub0Zvcm1hdE9wdHModG9rZW4udmFsKTtcblxuICBpZiAoIWZvcm1hdE9wdHMpIHtcbiAgICByZXR1cm4gdG9rZW47XG4gIH1cblxuICBjb25zdCBmb3JtYXR0ZXIgPSBGb3JtYXR0ZXIuY3JlYXRlKGxvY2FsZSwgZm9ybWF0T3B0cyk7XG4gIGNvbnN0IHBhcnRzID0gZm9ybWF0dGVyLmZvcm1hdERhdGVUaW1lUGFydHMoZ2V0RHVtbXlEYXRlVGltZSgpKTtcblxuICBjb25zdCB0b2tlbnMgPSBwYXJ0cy5tYXAoKHApID0+IHRva2VuRm9yUGFydChwLCBsb2NhbGUsIGZvcm1hdE9wdHMpKTtcblxuICBpZiAodG9rZW5zLmluY2x1ZGVzKHVuZGVmaW5lZCkpIHtcbiAgICByZXR1cm4gdG9rZW47XG4gIH1cblxuICByZXR1cm4gdG9rZW5zO1xufVxuXG5mdW5jdGlvbiBleHBhbmRNYWNyb1Rva2Vucyh0b2tlbnMsIGxvY2FsZSkge1xuICByZXR1cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdCguLi50b2tlbnMubWFwKCh0KSA9PiBtYXliZUV4cGFuZE1hY3JvVG9rZW4odCwgbG9jYWxlKSkpO1xufVxuXG4vKipcbiAqIEBwcml2YXRlXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGV4cGxhaW5Gcm9tVG9rZW5zKGxvY2FsZSwgaW5wdXQsIGZvcm1hdCkge1xuICBjb25zdCB0b2tlbnMgPSBleHBhbmRNYWNyb1Rva2VucyhGb3JtYXR0ZXIucGFyc2VGb3JtYXQoZm9ybWF0KSwgbG9jYWxlKSxcbiAgICB1bml0cyA9IHRva2Vucy5tYXAoKHQpID0+IHVuaXRGb3JUb2tlbih0LCBsb2NhbGUpKSxcbiAgICBkaXNxdWFsaWZ5aW5nVW5pdCA9IHVuaXRzLmZpbmQoKHQpID0+IHQuaW52YWxpZFJlYXNvbik7XG5cbiAgaWYgKGRpc3F1YWxpZnlpbmdVbml0KSB7XG4gICAgcmV0dXJuIHsgaW5wdXQsIHRva2VucywgaW52YWxpZFJlYXNvbjogZGlzcXVhbGlmeWluZ1VuaXQuaW52YWxpZFJlYXNvbiB9O1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IFtyZWdleFN0cmluZywgaGFuZGxlcnNdID0gYnVpbGRSZWdleCh1bml0cyksXG4gICAgICByZWdleCA9IFJlZ0V4cChyZWdleFN0cmluZywgXCJpXCIpLFxuICAgICAgW3Jhd01hdGNoZXMsIG1hdGNoZXNdID0gbWF0Y2goaW5wdXQsIHJlZ2V4LCBoYW5kbGVycyksXG4gICAgICBbcmVzdWx0LCB6b25lLCBzcGVjaWZpY09mZnNldF0gPSBtYXRjaGVzXG4gICAgICAgID8gZGF0ZVRpbWVGcm9tTWF0Y2hlcyhtYXRjaGVzKVxuICAgICAgICA6IFtudWxsLCBudWxsLCB1bmRlZmluZWRdO1xuICAgIGlmIChoYXNPd25Qcm9wZXJ0eShtYXRjaGVzLCBcImFcIikgJiYgaGFzT3duUHJvcGVydHkobWF0Y2hlcywgXCJIXCIpKSB7XG4gICAgICB0aHJvdyBuZXcgQ29uZmxpY3RpbmdTcGVjaWZpY2F0aW9uRXJyb3IoXG4gICAgICAgIFwiQ2FuJ3QgaW5jbHVkZSBtZXJpZGllbSB3aGVuIHNwZWNpZnlpbmcgMjQtaG91ciBmb3JtYXRcIlxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHsgaW5wdXQsIHRva2VucywgcmVnZXgsIHJhd01hdGNoZXMsIG1hdGNoZXMsIHJlc3VsdCwgem9uZSwgc3BlY2lmaWNPZmZzZXQgfTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VGcm9tVG9rZW5zKGxvY2FsZSwgaW5wdXQsIGZvcm1hdCkge1xuICBjb25zdCB7IHJlc3VsdCwgem9uZSwgc3BlY2lmaWNPZmZzZXQsIGludmFsaWRSZWFzb24gfSA9IGV4cGxhaW5Gcm9tVG9rZW5zKGxvY2FsZSwgaW5wdXQsIGZvcm1hdCk7XG4gIHJldHVybiBbcmVzdWx0LCB6b25lLCBzcGVjaWZpY09mZnNldCwgaW52YWxpZFJlYXNvbl07XG59XG4iLCAiaW1wb3J0IHtcbiAgaW50ZWdlckJldHdlZW4sXG4gIGlzTGVhcFllYXIsXG4gIHRpbWVPYmplY3QsXG4gIGRheXNJblllYXIsXG4gIGRheXNJbk1vbnRoLFxuICB3ZWVrc0luV2Vla1llYXIsXG4gIGlzSW50ZWdlcixcbn0gZnJvbSBcIi4vdXRpbC5qc1wiO1xuaW1wb3J0IEludmFsaWQgZnJvbSBcIi4vaW52YWxpZC5qc1wiO1xuXG5jb25zdCBub25MZWFwTGFkZGVyID0gWzAsIDMxLCA1OSwgOTAsIDEyMCwgMTUxLCAxODEsIDIxMiwgMjQzLCAyNzMsIDMwNCwgMzM0XSxcbiAgbGVhcExhZGRlciA9IFswLCAzMSwgNjAsIDkxLCAxMjEsIDE1MiwgMTgyLCAyMTMsIDI0NCwgMjc0LCAzMDUsIDMzNV07XG5cbmZ1bmN0aW9uIHVuaXRPdXRPZlJhbmdlKHVuaXQsIHZhbHVlKSB7XG4gIHJldHVybiBuZXcgSW52YWxpZChcbiAgICBcInVuaXQgb3V0IG9mIHJhbmdlXCIsXG4gICAgYHlvdSBzcGVjaWZpZWQgJHt2YWx1ZX0gKG9mIHR5cGUgJHt0eXBlb2YgdmFsdWV9KSBhcyBhICR7dW5pdH0sIHdoaWNoIGlzIGludmFsaWRgXG4gICk7XG59XG5cbmZ1bmN0aW9uIGRheU9mV2Vlayh5ZWFyLCBtb250aCwgZGF5KSB7XG4gIGNvbnN0IGQgPSBuZXcgRGF0ZShEYXRlLlVUQyh5ZWFyLCBtb250aCAtIDEsIGRheSkpO1xuXG4gIGlmICh5ZWFyIDwgMTAwICYmIHllYXIgPj0gMCkge1xuICAgIGQuc2V0VVRDRnVsbFllYXIoZC5nZXRVVENGdWxsWWVhcigpIC0gMTkwMCk7XG4gIH1cblxuICBjb25zdCBqcyA9IGQuZ2V0VVRDRGF5KCk7XG5cbiAgcmV0dXJuIGpzID09PSAwID8gNyA6IGpzO1xufVxuXG5mdW5jdGlvbiBjb21wdXRlT3JkaW5hbCh5ZWFyLCBtb250aCwgZGF5KSB7XG4gIHJldHVybiBkYXkgKyAoaXNMZWFwWWVhcih5ZWFyKSA/IGxlYXBMYWRkZXIgOiBub25MZWFwTGFkZGVyKVttb250aCAtIDFdO1xufVxuXG5mdW5jdGlvbiB1bmNvbXB1dGVPcmRpbmFsKHllYXIsIG9yZGluYWwpIHtcbiAgY29uc3QgdGFibGUgPSBpc0xlYXBZZWFyKHllYXIpID8gbGVhcExhZGRlciA6IG5vbkxlYXBMYWRkZXIsXG4gICAgbW9udGgwID0gdGFibGUuZmluZEluZGV4KChpKSA9PiBpIDwgb3JkaW5hbCksXG4gICAgZGF5ID0gb3JkaW5hbCAtIHRhYmxlW21vbnRoMF07XG4gIHJldHVybiB7IG1vbnRoOiBtb250aDAgKyAxLCBkYXkgfTtcbn1cblxuLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBncmVnb3JpYW5Ub1dlZWsoZ3JlZ09iaikge1xuICBjb25zdCB7IHllYXIsIG1vbnRoLCBkYXkgfSA9IGdyZWdPYmosXG4gICAgb3JkaW5hbCA9IGNvbXB1dGVPcmRpbmFsKHllYXIsIG1vbnRoLCBkYXkpLFxuICAgIHdlZWtkYXkgPSBkYXlPZldlZWsoeWVhciwgbW9udGgsIGRheSk7XG5cbiAgbGV0IHdlZWtOdW1iZXIgPSBNYXRoLmZsb29yKChvcmRpbmFsIC0gd2Vla2RheSArIDEwKSAvIDcpLFxuICAgIHdlZWtZZWFyO1xuXG4gIGlmICh3ZWVrTnVtYmVyIDwgMSkge1xuICAgIHdlZWtZZWFyID0geWVhciAtIDE7XG4gICAgd2Vla051bWJlciA9IHdlZWtzSW5XZWVrWWVhcih3ZWVrWWVhcik7XG4gIH0gZWxzZSBpZiAod2Vla051bWJlciA+IHdlZWtzSW5XZWVrWWVhcih5ZWFyKSkge1xuICAgIHdlZWtZZWFyID0geWVhciArIDE7XG4gICAgd2Vla051bWJlciA9IDE7XG4gIH0gZWxzZSB7XG4gICAgd2Vla1llYXIgPSB5ZWFyO1xuICB9XG5cbiAgcmV0dXJuIHsgd2Vla1llYXIsIHdlZWtOdW1iZXIsIHdlZWtkYXksIC4uLnRpbWVPYmplY3QoZ3JlZ09iaikgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlZWtUb0dyZWdvcmlhbih3ZWVrRGF0YSkge1xuICBjb25zdCB7IHdlZWtZZWFyLCB3ZWVrTnVtYmVyLCB3ZWVrZGF5IH0gPSB3ZWVrRGF0YSxcbiAgICB3ZWVrZGF5T2ZKYW40ID0gZGF5T2ZXZWVrKHdlZWtZZWFyLCAxLCA0KSxcbiAgICB5ZWFySW5EYXlzID0gZGF5c0luWWVhcih3ZWVrWWVhcik7XG5cbiAgbGV0IG9yZGluYWwgPSB3ZWVrTnVtYmVyICogNyArIHdlZWtkYXkgLSB3ZWVrZGF5T2ZKYW40IC0gMyxcbiAgICB5ZWFyO1xuXG4gIGlmIChvcmRpbmFsIDwgMSkge1xuICAgIHllYXIgPSB3ZWVrWWVhciAtIDE7XG4gICAgb3JkaW5hbCArPSBkYXlzSW5ZZWFyKHllYXIpO1xuICB9IGVsc2UgaWYgKG9yZGluYWwgPiB5ZWFySW5EYXlzKSB7XG4gICAgeWVhciA9IHdlZWtZZWFyICsgMTtcbiAgICBvcmRpbmFsIC09IGRheXNJblllYXIod2Vla1llYXIpO1xuICB9IGVsc2Uge1xuICAgIHllYXIgPSB3ZWVrWWVhcjtcbiAgfVxuXG4gIGNvbnN0IHsgbW9udGgsIGRheSB9ID0gdW5jb21wdXRlT3JkaW5hbCh5ZWFyLCBvcmRpbmFsKTtcbiAgcmV0dXJuIHsgeWVhciwgbW9udGgsIGRheSwgLi4udGltZU9iamVjdCh3ZWVrRGF0YSkgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdyZWdvcmlhblRvT3JkaW5hbChncmVnRGF0YSkge1xuICBjb25zdCB7IHllYXIsIG1vbnRoLCBkYXkgfSA9IGdyZWdEYXRhO1xuICBjb25zdCBvcmRpbmFsID0gY29tcHV0ZU9yZGluYWwoeWVhciwgbW9udGgsIGRheSk7XG4gIHJldHVybiB7IHllYXIsIG9yZGluYWwsIC4uLnRpbWVPYmplY3QoZ3JlZ0RhdGEpIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvcmRpbmFsVG9HcmVnb3JpYW4ob3JkaW5hbERhdGEpIHtcbiAgY29uc3QgeyB5ZWFyLCBvcmRpbmFsIH0gPSBvcmRpbmFsRGF0YTtcbiAgY29uc3QgeyBtb250aCwgZGF5IH0gPSB1bmNvbXB1dGVPcmRpbmFsKHllYXIsIG9yZGluYWwpO1xuICByZXR1cm4geyB5ZWFyLCBtb250aCwgZGF5LCAuLi50aW1lT2JqZWN0KG9yZGluYWxEYXRhKSB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGFzSW52YWxpZFdlZWtEYXRhKG9iaikge1xuICBjb25zdCB2YWxpZFllYXIgPSBpc0ludGVnZXIob2JqLndlZWtZZWFyKSxcbiAgICB2YWxpZFdlZWsgPSBpbnRlZ2VyQmV0d2VlbihvYmoud2Vla051bWJlciwgMSwgd2Vla3NJbldlZWtZZWFyKG9iai53ZWVrWWVhcikpLFxuICAgIHZhbGlkV2Vla2RheSA9IGludGVnZXJCZXR3ZWVuKG9iai53ZWVrZGF5LCAxLCA3KTtcblxuICBpZiAoIXZhbGlkWWVhcikge1xuICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZShcIndlZWtZZWFyXCIsIG9iai53ZWVrWWVhcik7XG4gIH0gZWxzZSBpZiAoIXZhbGlkV2Vlaykge1xuICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZShcIndlZWtcIiwgb2JqLndlZWspO1xuICB9IGVsc2UgaWYgKCF2YWxpZFdlZWtkYXkpIHtcbiAgICByZXR1cm4gdW5pdE91dE9mUmFuZ2UoXCJ3ZWVrZGF5XCIsIG9iai53ZWVrZGF5KTtcbiAgfSBlbHNlIHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhhc0ludmFsaWRPcmRpbmFsRGF0YShvYmopIHtcbiAgY29uc3QgdmFsaWRZZWFyID0gaXNJbnRlZ2VyKG9iai55ZWFyKSxcbiAgICB2YWxpZE9yZGluYWwgPSBpbnRlZ2VyQmV0d2VlbihvYmoub3JkaW5hbCwgMSwgZGF5c0luWWVhcihvYmoueWVhcikpO1xuXG4gIGlmICghdmFsaWRZZWFyKSB7XG4gICAgcmV0dXJuIHVuaXRPdXRPZlJhbmdlKFwieWVhclwiLCBvYmoueWVhcik7XG4gIH0gZWxzZSBpZiAoIXZhbGlkT3JkaW5hbCkge1xuICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZShcIm9yZGluYWxcIiwgb2JqLm9yZGluYWwpO1xuICB9IGVsc2UgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGFzSW52YWxpZEdyZWdvcmlhbkRhdGEob2JqKSB7XG4gIGNvbnN0IHZhbGlkWWVhciA9IGlzSW50ZWdlcihvYmoueWVhciksXG4gICAgdmFsaWRNb250aCA9IGludGVnZXJCZXR3ZWVuKG9iai5tb250aCwgMSwgMTIpLFxuICAgIHZhbGlkRGF5ID0gaW50ZWdlckJldHdlZW4ob2JqLmRheSwgMSwgZGF5c0luTW9udGgob2JqLnllYXIsIG9iai5tb250aCkpO1xuXG4gIGlmICghdmFsaWRZZWFyKSB7XG4gICAgcmV0dXJuIHVuaXRPdXRPZlJhbmdlKFwieWVhclwiLCBvYmoueWVhcik7XG4gIH0gZWxzZSBpZiAoIXZhbGlkTW9udGgpIHtcbiAgICByZXR1cm4gdW5pdE91dE9mUmFuZ2UoXCJtb250aFwiLCBvYmoubW9udGgpO1xuICB9IGVsc2UgaWYgKCF2YWxpZERheSkge1xuICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZShcImRheVwiLCBvYmouZGF5KTtcbiAgfSBlbHNlIHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhhc0ludmFsaWRUaW1lRGF0YShvYmopIHtcbiAgY29uc3QgeyBob3VyLCBtaW51dGUsIHNlY29uZCwgbWlsbGlzZWNvbmQgfSA9IG9iajtcbiAgY29uc3QgdmFsaWRIb3VyID1cbiAgICAgIGludGVnZXJCZXR3ZWVuKGhvdXIsIDAsIDIzKSB8fFxuICAgICAgKGhvdXIgPT09IDI0ICYmIG1pbnV0ZSA9PT0gMCAmJiBzZWNvbmQgPT09IDAgJiYgbWlsbGlzZWNvbmQgPT09IDApLFxuICAgIHZhbGlkTWludXRlID0gaW50ZWdlckJldHdlZW4obWludXRlLCAwLCA1OSksXG4gICAgdmFsaWRTZWNvbmQgPSBpbnRlZ2VyQmV0d2VlbihzZWNvbmQsIDAsIDU5KSxcbiAgICB2YWxpZE1pbGxpc2Vjb25kID0gaW50ZWdlckJldHdlZW4obWlsbGlzZWNvbmQsIDAsIDk5OSk7XG5cbiAgaWYgKCF2YWxpZEhvdXIpIHtcbiAgICByZXR1cm4gdW5pdE91dE9mUmFuZ2UoXCJob3VyXCIsIGhvdXIpO1xuICB9IGVsc2UgaWYgKCF2YWxpZE1pbnV0ZSkge1xuICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZShcIm1pbnV0ZVwiLCBtaW51dGUpO1xuICB9IGVsc2UgaWYgKCF2YWxpZFNlY29uZCkge1xuICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZShcInNlY29uZFwiLCBzZWNvbmQpO1xuICB9IGVsc2UgaWYgKCF2YWxpZE1pbGxpc2Vjb25kKSB7XG4gICAgcmV0dXJuIHVuaXRPdXRPZlJhbmdlKFwibWlsbGlzZWNvbmRcIiwgbWlsbGlzZWNvbmQpO1xuICB9IGVsc2UgcmV0dXJuIGZhbHNlO1xufVxuIiwgImltcG9ydCBEdXJhdGlvbiBmcm9tIFwiLi9kdXJhdGlvbi5qc1wiO1xuaW1wb3J0IEludGVydmFsIGZyb20gXCIuL2ludGVydmFsLmpzXCI7XG5pbXBvcnQgU2V0dGluZ3MgZnJvbSBcIi4vc2V0dGluZ3MuanNcIjtcbmltcG9ydCBJbmZvIGZyb20gXCIuL2luZm8uanNcIjtcbmltcG9ydCBGb3JtYXR0ZXIgZnJvbSBcIi4vaW1wbC9mb3JtYXR0ZXIuanNcIjtcbmltcG9ydCBGaXhlZE9mZnNldFpvbmUgZnJvbSBcIi4vem9uZXMvZml4ZWRPZmZzZXRab25lLmpzXCI7XG5pbXBvcnQgTG9jYWxlIGZyb20gXCIuL2ltcGwvbG9jYWxlLmpzXCI7XG5pbXBvcnQge1xuICBpc1VuZGVmaW5lZCxcbiAgbWF5YmVBcnJheSxcbiAgaXNEYXRlLFxuICBpc051bWJlcixcbiAgYmVzdEJ5LFxuICBkYXlzSW5Nb250aCxcbiAgZGF5c0luWWVhcixcbiAgaXNMZWFwWWVhcixcbiAgd2Vla3NJbldlZWtZZWFyLFxuICBub3JtYWxpemVPYmplY3QsXG4gIHJvdW5kVG8sXG4gIG9ialRvTG9jYWxUUyxcbiAgcGFkU3RhcnQsXG59IGZyb20gXCIuL2ltcGwvdXRpbC5qc1wiO1xuaW1wb3J0IHsgbm9ybWFsaXplWm9uZSB9IGZyb20gXCIuL2ltcGwvem9uZVV0aWwuanNcIjtcbmltcG9ydCBkaWZmIGZyb20gXCIuL2ltcGwvZGlmZi5qc1wiO1xuaW1wb3J0IHsgcGFyc2VSRkMyODIyRGF0ZSwgcGFyc2VJU09EYXRlLCBwYXJzZUhUVFBEYXRlLCBwYXJzZVNRTCB9IGZyb20gXCIuL2ltcGwvcmVnZXhQYXJzZXIuanNcIjtcbmltcG9ydCB7IHBhcnNlRnJvbVRva2VucywgZXhwbGFpbkZyb21Ub2tlbnMgfSBmcm9tIFwiLi9pbXBsL3Rva2VuUGFyc2VyLmpzXCI7XG5pbXBvcnQge1xuICBncmVnb3JpYW5Ub1dlZWssXG4gIHdlZWtUb0dyZWdvcmlhbixcbiAgZ3JlZ29yaWFuVG9PcmRpbmFsLFxuICBvcmRpbmFsVG9HcmVnb3JpYW4sXG4gIGhhc0ludmFsaWRHcmVnb3JpYW5EYXRhLFxuICBoYXNJbnZhbGlkV2Vla0RhdGEsXG4gIGhhc0ludmFsaWRPcmRpbmFsRGF0YSxcbiAgaGFzSW52YWxpZFRpbWVEYXRhLFxufSBmcm9tIFwiLi9pbXBsL2NvbnZlcnNpb25zLmpzXCI7XG5pbXBvcnQgKiBhcyBGb3JtYXRzIGZyb20gXCIuL2ltcGwvZm9ybWF0cy5qc1wiO1xuaW1wb3J0IHtcbiAgSW52YWxpZEFyZ3VtZW50RXJyb3IsXG4gIENvbmZsaWN0aW5nU3BlY2lmaWNhdGlvbkVycm9yLFxuICBJbnZhbGlkVW5pdEVycm9yLFxuICBJbnZhbGlkRGF0ZVRpbWVFcnJvcixcbn0gZnJvbSBcIi4vZXJyb3JzLmpzXCI7XG5pbXBvcnQgSW52YWxpZCBmcm9tIFwiLi9pbXBsL2ludmFsaWQuanNcIjtcblxuY29uc3QgSU5WQUxJRCA9IFwiSW52YWxpZCBEYXRlVGltZVwiO1xuY29uc3QgTUFYX0RBVEUgPSA4LjY0ZTE1O1xuXG5mdW5jdGlvbiB1bnN1cHBvcnRlZFpvbmUoem9uZSkge1xuICByZXR1cm4gbmV3IEludmFsaWQoXCJ1bnN1cHBvcnRlZCB6b25lXCIsIGB0aGUgem9uZSBcIiR7em9uZS5uYW1lfVwiIGlzIG5vdCBzdXBwb3J0ZWRgKTtcbn1cblxuLy8gd2UgY2FjaGUgd2VlayBkYXRhIG9uIHRoZSBEVCBvYmplY3QgYW5kIHRoaXMgaW50ZXJtZWRpYXRlcyB0aGUgY2FjaGVcbmZ1bmN0aW9uIHBvc3NpYmx5Q2FjaGVkV2Vla0RhdGEoZHQpIHtcbiAgaWYgKGR0LndlZWtEYXRhID09PSBudWxsKSB7XG4gICAgZHQud2Vla0RhdGEgPSBncmVnb3JpYW5Ub1dlZWsoZHQuYyk7XG4gIH1cbiAgcmV0dXJuIGR0LndlZWtEYXRhO1xufVxuXG4vLyBjbG9uZSByZWFsbHkgbWVhbnMsIFwibWFrZSBhIG5ldyBvYmplY3Qgd2l0aCB0aGVzZSBtb2RpZmljYXRpb25zXCIuIGFsbCBcInNldHRlcnNcIiByZWFsbHkgdXNlIHRoaXNcbi8vIHRvIGNyZWF0ZSBhIG5ldyBvYmplY3Qgd2hpbGUgb25seSBjaGFuZ2luZyBzb21lIG9mIHRoZSBwcm9wZXJ0aWVzXG5mdW5jdGlvbiBjbG9uZShpbnN0LCBhbHRzKSB7XG4gIGNvbnN0IGN1cnJlbnQgPSB7XG4gICAgdHM6IGluc3QudHMsXG4gICAgem9uZTogaW5zdC56b25lLFxuICAgIGM6IGluc3QuYyxcbiAgICBvOiBpbnN0Lm8sXG4gICAgbG9jOiBpbnN0LmxvYyxcbiAgICBpbnZhbGlkOiBpbnN0LmludmFsaWQsXG4gIH07XG4gIHJldHVybiBuZXcgRGF0ZVRpbWUoeyAuLi5jdXJyZW50LCAuLi5hbHRzLCBvbGQ6IGN1cnJlbnQgfSk7XG59XG5cbi8vIGZpbmQgdGhlIHJpZ2h0IG9mZnNldCBhIGdpdmVuIGxvY2FsIHRpbWUuIFRoZSBvIGlucHV0IGlzIG91ciBndWVzcywgd2hpY2ggZGV0ZXJtaW5lcyB3aGljaFxuLy8gb2Zmc2V0IHdlJ2xsIHBpY2sgaW4gYW1iaWd1b3VzIGNhc2VzIChlLmcuIHRoZXJlIGFyZSB0d28gMyBBTXMgYi9jIEZhbGxiYWNrIERTVClcbmZ1bmN0aW9uIGZpeE9mZnNldChsb2NhbFRTLCBvLCB0eikge1xuICAvLyBPdXIgVVRDIHRpbWUgaXMganVzdCBhIGd1ZXNzIGJlY2F1c2Ugb3VyIG9mZnNldCBpcyBqdXN0IGEgZ3Vlc3NcbiAgbGV0IHV0Y0d1ZXNzID0gbG9jYWxUUyAtIG8gKiA2MCAqIDEwMDA7XG5cbiAgLy8gVGVzdCB3aGV0aGVyIHRoZSB6b25lIG1hdGNoZXMgdGhlIG9mZnNldCBmb3IgdGhpcyB0c1xuICBjb25zdCBvMiA9IHR6Lm9mZnNldCh1dGNHdWVzcyk7XG5cbiAgLy8gSWYgc28sIG9mZnNldCBkaWRuJ3QgY2hhbmdlIGFuZCB3ZSdyZSBkb25lXG4gIGlmIChvID09PSBvMikge1xuICAgIHJldHVybiBbdXRjR3Vlc3MsIG9dO1xuICB9XG5cbiAgLy8gSWYgbm90LCBjaGFuZ2UgdGhlIHRzIGJ5IHRoZSBkaWZmZXJlbmNlIGluIHRoZSBvZmZzZXRcbiAgdXRjR3Vlc3MgLT0gKG8yIC0gbykgKiA2MCAqIDEwMDA7XG5cbiAgLy8gSWYgdGhhdCBnaXZlcyB1cyB0aGUgbG9jYWwgdGltZSB3ZSB3YW50LCB3ZSdyZSBkb25lXG4gIGNvbnN0IG8zID0gdHoub2Zmc2V0KHV0Y0d1ZXNzKTtcbiAgaWYgKG8yID09PSBvMykge1xuICAgIHJldHVybiBbdXRjR3Vlc3MsIG8yXTtcbiAgfVxuXG4gIC8vIElmIGl0J3MgZGlmZmVyZW50LCB3ZSdyZSBpbiBhIGhvbGUgdGltZS4gVGhlIG9mZnNldCBoYXMgY2hhbmdlZCwgYnV0IHRoZSB3ZSBkb24ndCBhZGp1c3QgdGhlIHRpbWVcbiAgcmV0dXJuIFtsb2NhbFRTIC0gTWF0aC5taW4obzIsIG8zKSAqIDYwICogMTAwMCwgTWF0aC5tYXgobzIsIG8zKV07XG59XG5cbi8vIGNvbnZlcnQgYW4gZXBvY2ggdGltZXN0YW1wIGludG8gYSBjYWxlbmRhciBvYmplY3Qgd2l0aCB0aGUgZ2l2ZW4gb2Zmc2V0XG5mdW5jdGlvbiB0c1RvT2JqKHRzLCBvZmZzZXQpIHtcbiAgdHMgKz0gb2Zmc2V0ICogNjAgKiAxMDAwO1xuXG4gIGNvbnN0IGQgPSBuZXcgRGF0ZSh0cyk7XG5cbiAgcmV0dXJuIHtcbiAgICB5ZWFyOiBkLmdldFVUQ0Z1bGxZZWFyKCksXG4gICAgbW9udGg6IGQuZ2V0VVRDTW9udGgoKSArIDEsXG4gICAgZGF5OiBkLmdldFVUQ0RhdGUoKSxcbiAgICBob3VyOiBkLmdldFVUQ0hvdXJzKCksXG4gICAgbWludXRlOiBkLmdldFVUQ01pbnV0ZXMoKSxcbiAgICBzZWNvbmQ6IGQuZ2V0VVRDU2Vjb25kcygpLFxuICAgIG1pbGxpc2Vjb25kOiBkLmdldFVUQ01pbGxpc2Vjb25kcygpLFxuICB9O1xufVxuXG4vLyBjb252ZXJ0IGEgY2FsZW5kYXIgb2JqZWN0IHRvIGEgZXBvY2ggdGltZXN0YW1wXG5mdW5jdGlvbiBvYmpUb1RTKG9iaiwgb2Zmc2V0LCB6b25lKSB7XG4gIHJldHVybiBmaXhPZmZzZXQob2JqVG9Mb2NhbFRTKG9iaiksIG9mZnNldCwgem9uZSk7XG59XG5cbi8vIGNyZWF0ZSBhIG5ldyBEVCBpbnN0YW5jZSBieSBhZGRpbmcgYSBkdXJhdGlvbiwgYWRqdXN0aW5nIGZvciBEU1RzXG5mdW5jdGlvbiBhZGp1c3RUaW1lKGluc3QsIGR1cikge1xuICBjb25zdCBvUHJlID0gaW5zdC5vLFxuICAgIHllYXIgPSBpbnN0LmMueWVhciArIE1hdGgudHJ1bmMoZHVyLnllYXJzKSxcbiAgICBtb250aCA9IGluc3QuYy5tb250aCArIE1hdGgudHJ1bmMoZHVyLm1vbnRocykgKyBNYXRoLnRydW5jKGR1ci5xdWFydGVycykgKiAzLFxuICAgIGMgPSB7XG4gICAgICAuLi5pbnN0LmMsXG4gICAgICB5ZWFyLFxuICAgICAgbW9udGgsXG4gICAgICBkYXk6XG4gICAgICAgIE1hdGgubWluKGluc3QuYy5kYXksIGRheXNJbk1vbnRoKHllYXIsIG1vbnRoKSkgK1xuICAgICAgICBNYXRoLnRydW5jKGR1ci5kYXlzKSArXG4gICAgICAgIE1hdGgudHJ1bmMoZHVyLndlZWtzKSAqIDcsXG4gICAgfSxcbiAgICBtaWxsaXNUb0FkZCA9IER1cmF0aW9uLmZyb21PYmplY3Qoe1xuICAgICAgeWVhcnM6IGR1ci55ZWFycyAtIE1hdGgudHJ1bmMoZHVyLnllYXJzKSxcbiAgICAgIHF1YXJ0ZXJzOiBkdXIucXVhcnRlcnMgLSBNYXRoLnRydW5jKGR1ci5xdWFydGVycyksXG4gICAgICBtb250aHM6IGR1ci5tb250aHMgLSBNYXRoLnRydW5jKGR1ci5tb250aHMpLFxuICAgICAgd2Vla3M6IGR1ci53ZWVrcyAtIE1hdGgudHJ1bmMoZHVyLndlZWtzKSxcbiAgICAgIGRheXM6IGR1ci5kYXlzIC0gTWF0aC50cnVuYyhkdXIuZGF5cyksXG4gICAgICBob3VyczogZHVyLmhvdXJzLFxuICAgICAgbWludXRlczogZHVyLm1pbnV0ZXMsXG4gICAgICBzZWNvbmRzOiBkdXIuc2Vjb25kcyxcbiAgICAgIG1pbGxpc2Vjb25kczogZHVyLm1pbGxpc2Vjb25kcyxcbiAgICB9KS5hcyhcIm1pbGxpc2Vjb25kc1wiKSxcbiAgICBsb2NhbFRTID0gb2JqVG9Mb2NhbFRTKGMpO1xuXG4gIGxldCBbdHMsIG9dID0gZml4T2Zmc2V0KGxvY2FsVFMsIG9QcmUsIGluc3Quem9uZSk7XG5cbiAgaWYgKG1pbGxpc1RvQWRkICE9PSAwKSB7XG4gICAgdHMgKz0gbWlsbGlzVG9BZGQ7XG4gICAgLy8gdGhhdCBjb3VsZCBoYXZlIGNoYW5nZWQgdGhlIG9mZnNldCBieSBnb2luZyBvdmVyIGEgRFNULCBidXQgd2Ugd2FudCB0byBrZWVwIHRoZSB0cyB0aGUgc2FtZVxuICAgIG8gPSBpbnN0LnpvbmUub2Zmc2V0KHRzKTtcbiAgfVxuXG4gIHJldHVybiB7IHRzLCBvIH07XG59XG5cbi8vIGhlbHBlciB1c2VmdWwgaW4gdHVybmluZyB0aGUgcmVzdWx0cyBvZiBwYXJzaW5nIGludG8gcmVhbCBkYXRlc1xuLy8gYnkgaGFuZGxpbmcgdGhlIHpvbmUgb3B0aW9uc1xuZnVuY3Rpb24gcGFyc2VEYXRhVG9EYXRlVGltZShwYXJzZWQsIHBhcnNlZFpvbmUsIG9wdHMsIGZvcm1hdCwgdGV4dCwgc3BlY2lmaWNPZmZzZXQpIHtcbiAgY29uc3QgeyBzZXRab25lLCB6b25lIH0gPSBvcHRzO1xuICBpZiAocGFyc2VkICYmIE9iamVjdC5rZXlzKHBhcnNlZCkubGVuZ3RoICE9PSAwKSB7XG4gICAgY29uc3QgaW50ZXJwcmV0YXRpb25ab25lID0gcGFyc2VkWm9uZSB8fCB6b25lLFxuICAgICAgaW5zdCA9IERhdGVUaW1lLmZyb21PYmplY3QocGFyc2VkLCB7XG4gICAgICAgIC4uLm9wdHMsXG4gICAgICAgIHpvbmU6IGludGVycHJldGF0aW9uWm9uZSxcbiAgICAgICAgc3BlY2lmaWNPZmZzZXQsXG4gICAgICB9KTtcbiAgICByZXR1cm4gc2V0Wm9uZSA/IGluc3QgOiBpbnN0LnNldFpvbmUoem9uZSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIERhdGVUaW1lLmludmFsaWQoXG4gICAgICBuZXcgSW52YWxpZChcInVucGFyc2FibGVcIiwgYHRoZSBpbnB1dCBcIiR7dGV4dH1cIiBjYW4ndCBiZSBwYXJzZWQgYXMgJHtmb3JtYXR9YClcbiAgICApO1xuICB9XG59XG5cbi8vIGlmIHlvdSB3YW50IHRvIG91dHB1dCBhIHRlY2huaWNhbCBmb3JtYXQgKGUuZy4gUkZDIDI4MjIpLCB0aGlzIGhlbHBlclxuLy8gaGVscHMgaGFuZGxlIHRoZSBkZXRhaWxzXG5mdW5jdGlvbiB0b1RlY2hGb3JtYXQoZHQsIGZvcm1hdCwgYWxsb3daID0gdHJ1ZSkge1xuICByZXR1cm4gZHQuaXNWYWxpZFxuICAgID8gRm9ybWF0dGVyLmNyZWF0ZShMb2NhbGUuY3JlYXRlKFwiZW4tVVNcIiksIHtcbiAgICAgICAgYWxsb3daLFxuICAgICAgICBmb3JjZVNpbXBsZTogdHJ1ZSxcbiAgICAgIH0pLmZvcm1hdERhdGVUaW1lRnJvbVN0cmluZyhkdCwgZm9ybWF0KVxuICAgIDogbnVsbDtcbn1cblxuZnVuY3Rpb24gdG9JU09EYXRlKG8sIGV4dGVuZGVkKSB7XG4gIGNvbnN0IGxvbmdGb3JtYXQgPSBvLmMueWVhciA+IDk5OTkgfHwgby5jLnllYXIgPCAwO1xuICBsZXQgYyA9IFwiXCI7XG4gIGlmIChsb25nRm9ybWF0ICYmIG8uYy55ZWFyID49IDApIGMgKz0gXCIrXCI7XG4gIGMgKz0gcGFkU3RhcnQoby5jLnllYXIsIGxvbmdGb3JtYXQgPyA2IDogNCk7XG5cbiAgaWYgKGV4dGVuZGVkKSB7XG4gICAgYyArPSBcIi1cIjtcbiAgICBjICs9IHBhZFN0YXJ0KG8uYy5tb250aCk7XG4gICAgYyArPSBcIi1cIjtcbiAgICBjICs9IHBhZFN0YXJ0KG8uYy5kYXkpO1xuICB9IGVsc2Uge1xuICAgIGMgKz0gcGFkU3RhcnQoby5jLm1vbnRoKTtcbiAgICBjICs9IHBhZFN0YXJ0KG8uYy5kYXkpO1xuICB9XG4gIHJldHVybiBjO1xufVxuXG5mdW5jdGlvbiB0b0lTT1RpbWUoXG4gIG8sXG4gIGV4dGVuZGVkLFxuICBzdXBwcmVzc1NlY29uZHMsXG4gIHN1cHByZXNzTWlsbGlzZWNvbmRzLFxuICBpbmNsdWRlT2Zmc2V0LFxuICBleHRlbmRlZFpvbmVcbikge1xuICBsZXQgYyA9IHBhZFN0YXJ0KG8uYy5ob3VyKTtcbiAgaWYgKGV4dGVuZGVkKSB7XG4gICAgYyArPSBcIjpcIjtcbiAgICBjICs9IHBhZFN0YXJ0KG8uYy5taW51dGUpO1xuICAgIGlmIChvLmMuc2Vjb25kICE9PSAwIHx8ICFzdXBwcmVzc1NlY29uZHMpIHtcbiAgICAgIGMgKz0gXCI6XCI7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGMgKz0gcGFkU3RhcnQoby5jLm1pbnV0ZSk7XG4gIH1cblxuICBpZiAoby5jLnNlY29uZCAhPT0gMCB8fCAhc3VwcHJlc3NTZWNvbmRzKSB7XG4gICAgYyArPSBwYWRTdGFydChvLmMuc2Vjb25kKTtcblxuICAgIGlmIChvLmMubWlsbGlzZWNvbmQgIT09IDAgfHwgIXN1cHByZXNzTWlsbGlzZWNvbmRzKSB7XG4gICAgICBjICs9IFwiLlwiO1xuICAgICAgYyArPSBwYWRTdGFydChvLmMubWlsbGlzZWNvbmQsIDMpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChpbmNsdWRlT2Zmc2V0KSB7XG4gICAgaWYgKG8uaXNPZmZzZXRGaXhlZCAmJiBvLm9mZnNldCA9PT0gMCAmJiAhZXh0ZW5kZWRab25lKSB7XG4gICAgICBjICs9IFwiWlwiO1xuICAgIH0gZWxzZSBpZiAoby5vIDwgMCkge1xuICAgICAgYyArPSBcIi1cIjtcbiAgICAgIGMgKz0gcGFkU3RhcnQoTWF0aC50cnVuYygtby5vIC8gNjApKTtcbiAgICAgIGMgKz0gXCI6XCI7XG4gICAgICBjICs9IHBhZFN0YXJ0KE1hdGgudHJ1bmMoLW8ubyAlIDYwKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGMgKz0gXCIrXCI7XG4gICAgICBjICs9IHBhZFN0YXJ0KE1hdGgudHJ1bmMoby5vIC8gNjApKTtcbiAgICAgIGMgKz0gXCI6XCI7XG4gICAgICBjICs9IHBhZFN0YXJ0KE1hdGgudHJ1bmMoby5vICUgNjApKTtcbiAgICB9XG4gIH1cblxuICBpZiAoZXh0ZW5kZWRab25lKSB7XG4gICAgYyArPSBcIltcIiArIG8uem9uZS5pYW5hTmFtZSArIFwiXVwiO1xuICB9XG4gIHJldHVybiBjO1xufVxuXG4vLyBkZWZhdWx0cyBmb3IgdW5zcGVjaWZpZWQgdW5pdHMgaW4gdGhlIHN1cHBvcnRlZCBjYWxlbmRhcnNcbmNvbnN0IGRlZmF1bHRVbml0VmFsdWVzID0ge1xuICAgIG1vbnRoOiAxLFxuICAgIGRheTogMSxcbiAgICBob3VyOiAwLFxuICAgIG1pbnV0ZTogMCxcbiAgICBzZWNvbmQ6IDAsXG4gICAgbWlsbGlzZWNvbmQ6IDAsXG4gIH0sXG4gIGRlZmF1bHRXZWVrVW5pdFZhbHVlcyA9IHtcbiAgICB3ZWVrTnVtYmVyOiAxLFxuICAgIHdlZWtkYXk6IDEsXG4gICAgaG91cjogMCxcbiAgICBtaW51dGU6IDAsXG4gICAgc2Vjb25kOiAwLFxuICAgIG1pbGxpc2Vjb25kOiAwLFxuICB9LFxuICBkZWZhdWx0T3JkaW5hbFVuaXRWYWx1ZXMgPSB7XG4gICAgb3JkaW5hbDogMSxcbiAgICBob3VyOiAwLFxuICAgIG1pbnV0ZTogMCxcbiAgICBzZWNvbmQ6IDAsXG4gICAgbWlsbGlzZWNvbmQ6IDAsXG4gIH07XG5cbi8vIFVuaXRzIGluIHRoZSBzdXBwb3J0ZWQgY2FsZW5kYXJzLCBzb3J0ZWQgYnkgYmlnbmVzc1xuY29uc3Qgb3JkZXJlZFVuaXRzID0gW1wieWVhclwiLCBcIm1vbnRoXCIsIFwiZGF5XCIsIFwiaG91clwiLCBcIm1pbnV0ZVwiLCBcInNlY29uZFwiLCBcIm1pbGxpc2Vjb25kXCJdLFxuICBvcmRlcmVkV2Vla1VuaXRzID0gW1xuICAgIFwid2Vla1llYXJcIixcbiAgICBcIndlZWtOdW1iZXJcIixcbiAgICBcIndlZWtkYXlcIixcbiAgICBcImhvdXJcIixcbiAgICBcIm1pbnV0ZVwiLFxuICAgIFwic2Vjb25kXCIsXG4gICAgXCJtaWxsaXNlY29uZFwiLFxuICBdLFxuICBvcmRlcmVkT3JkaW5hbFVuaXRzID0gW1wieWVhclwiLCBcIm9yZGluYWxcIiwgXCJob3VyXCIsIFwibWludXRlXCIsIFwic2Vjb25kXCIsIFwibWlsbGlzZWNvbmRcIl07XG5cbi8vIHN0YW5kYXJkaXplIGNhc2UgYW5kIHBsdXJhbGl0eSBpbiB1bml0c1xuZnVuY3Rpb24gbm9ybWFsaXplVW5pdCh1bml0KSB7XG4gIGNvbnN0IG5vcm1hbGl6ZWQgPSB7XG4gICAgeWVhcjogXCJ5ZWFyXCIsXG4gICAgeWVhcnM6IFwieWVhclwiLFxuICAgIG1vbnRoOiBcIm1vbnRoXCIsXG4gICAgbW9udGhzOiBcIm1vbnRoXCIsXG4gICAgZGF5OiBcImRheVwiLFxuICAgIGRheXM6IFwiZGF5XCIsXG4gICAgaG91cjogXCJob3VyXCIsXG4gICAgaG91cnM6IFwiaG91clwiLFxuICAgIG1pbnV0ZTogXCJtaW51dGVcIixcbiAgICBtaW51dGVzOiBcIm1pbnV0ZVwiLFxuICAgIHF1YXJ0ZXI6IFwicXVhcnRlclwiLFxuICAgIHF1YXJ0ZXJzOiBcInF1YXJ0ZXJcIixcbiAgICBzZWNvbmQ6IFwic2Vjb25kXCIsXG4gICAgc2Vjb25kczogXCJzZWNvbmRcIixcbiAgICBtaWxsaXNlY29uZDogXCJtaWxsaXNlY29uZFwiLFxuICAgIG1pbGxpc2Vjb25kczogXCJtaWxsaXNlY29uZFwiLFxuICAgIHdlZWtkYXk6IFwid2Vla2RheVwiLFxuICAgIHdlZWtkYXlzOiBcIndlZWtkYXlcIixcbiAgICB3ZWVrbnVtYmVyOiBcIndlZWtOdW1iZXJcIixcbiAgICB3ZWVrc251bWJlcjogXCJ3ZWVrTnVtYmVyXCIsXG4gICAgd2Vla251bWJlcnM6IFwid2Vla051bWJlclwiLFxuICAgIHdlZWt5ZWFyOiBcIndlZWtZZWFyXCIsXG4gICAgd2Vla3llYXJzOiBcIndlZWtZZWFyXCIsXG4gICAgb3JkaW5hbDogXCJvcmRpbmFsXCIsXG4gIH1bdW5pdC50b0xvd2VyQ2FzZSgpXTtcblxuICBpZiAoIW5vcm1hbGl6ZWQpIHRocm93IG5ldyBJbnZhbGlkVW5pdEVycm9yKHVuaXQpO1xuXG4gIHJldHVybiBub3JtYWxpemVkO1xufVxuXG4vLyB0aGlzIGlzIGEgZHVtYmVkIGRvd24gdmVyc2lvbiBvZiBmcm9tT2JqZWN0KCkgdGhhdCBydW5zIGFib3V0IDYwJSBmYXN0ZXJcbi8vIGJ1dCBkb2Vzbid0IGRvIGFueSB2YWxpZGF0aW9uLCBtYWtlcyBhIGJ1bmNoIG9mIGFzc3VtcHRpb25zIGFib3V0IHdoYXQgdW5pdHNcbi8vIGFyZSBwcmVzZW50LCBhbmQgc28gb24uXG5mdW5jdGlvbiBxdWlja0RUKG9iaiwgb3B0cykge1xuICBjb25zdCB6b25lID0gbm9ybWFsaXplWm9uZShvcHRzLnpvbmUsIFNldHRpbmdzLmRlZmF1bHRab25lKSxcbiAgICBsb2MgPSBMb2NhbGUuZnJvbU9iamVjdChvcHRzKSxcbiAgICB0c05vdyA9IFNldHRpbmdzLm5vdygpO1xuXG4gIGxldCB0cywgbztcblxuICAvLyBhc3N1bWUgd2UgaGF2ZSB0aGUgaGlnaGVyLW9yZGVyIHVuaXRzXG4gIGlmICghaXNVbmRlZmluZWQob2JqLnllYXIpKSB7XG4gICAgZm9yIChjb25zdCB1IG9mIG9yZGVyZWRVbml0cykge1xuICAgICAgaWYgKGlzVW5kZWZpbmVkKG9ialt1XSkpIHtcbiAgICAgICAgb2JqW3VdID0gZGVmYXVsdFVuaXRWYWx1ZXNbdV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgaW52YWxpZCA9IGhhc0ludmFsaWRHcmVnb3JpYW5EYXRhKG9iaikgfHwgaGFzSW52YWxpZFRpbWVEYXRhKG9iaik7XG4gICAgaWYgKGludmFsaWQpIHtcbiAgICAgIHJldHVybiBEYXRlVGltZS5pbnZhbGlkKGludmFsaWQpO1xuICAgIH1cblxuICAgIGNvbnN0IG9mZnNldFByb3ZpcyA9IHpvbmUub2Zmc2V0KHRzTm93KTtcbiAgICBbdHMsIG9dID0gb2JqVG9UUyhvYmosIG9mZnNldFByb3Zpcywgem9uZSk7XG4gIH0gZWxzZSB7XG4gICAgdHMgPSB0c05vdztcbiAgfVxuXG4gIHJldHVybiBuZXcgRGF0ZVRpbWUoeyB0cywgem9uZSwgbG9jLCBvIH0pO1xufVxuXG5mdW5jdGlvbiBkaWZmUmVsYXRpdmUoc3RhcnQsIGVuZCwgb3B0cykge1xuICBjb25zdCByb3VuZCA9IGlzVW5kZWZpbmVkKG9wdHMucm91bmQpID8gdHJ1ZSA6IG9wdHMucm91bmQsXG4gICAgZm9ybWF0ID0gKGMsIHVuaXQpID0+IHtcbiAgICAgIGMgPSByb3VuZFRvKGMsIHJvdW5kIHx8IG9wdHMuY2FsZW5kYXJ5ID8gMCA6IDIsIHRydWUpO1xuICAgICAgY29uc3QgZm9ybWF0dGVyID0gZW5kLmxvYy5jbG9uZShvcHRzKS5yZWxGb3JtYXR0ZXIob3B0cyk7XG4gICAgICByZXR1cm4gZm9ybWF0dGVyLmZvcm1hdChjLCB1bml0KTtcbiAgICB9LFxuICAgIGRpZmZlciA9ICh1bml0KSA9PiB7XG4gICAgICBpZiAob3B0cy5jYWxlbmRhcnkpIHtcbiAgICAgICAgaWYgKCFlbmQuaGFzU2FtZShzdGFydCwgdW5pdCkpIHtcbiAgICAgICAgICByZXR1cm4gZW5kLnN0YXJ0T2YodW5pdCkuZGlmZihzdGFydC5zdGFydE9mKHVuaXQpLCB1bml0KS5nZXQodW5pdCk7XG4gICAgICAgIH0gZWxzZSByZXR1cm4gMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBlbmQuZGlmZihzdGFydCwgdW5pdCkuZ2V0KHVuaXQpO1xuICAgICAgfVxuICAgIH07XG5cbiAgaWYgKG9wdHMudW5pdCkge1xuICAgIHJldHVybiBmb3JtYXQoZGlmZmVyKG9wdHMudW5pdCksIG9wdHMudW5pdCk7XG4gIH1cblxuICBmb3IgKGNvbnN0IHVuaXQgb2Ygb3B0cy51bml0cykge1xuICAgIGNvbnN0IGNvdW50ID0gZGlmZmVyKHVuaXQpO1xuICAgIGlmIChNYXRoLmFicyhjb3VudCkgPj0gMSkge1xuICAgICAgcmV0dXJuIGZvcm1hdChjb3VudCwgdW5pdCk7XG4gICAgfVxuICB9XG4gIHJldHVybiBmb3JtYXQoc3RhcnQgPiBlbmQgPyAtMCA6IDAsIG9wdHMudW5pdHNbb3B0cy51bml0cy5sZW5ndGggLSAxXSk7XG59XG5cbmZ1bmN0aW9uIGxhc3RPcHRzKGFyZ0xpc3QpIHtcbiAgbGV0IG9wdHMgPSB7fSxcbiAgICBhcmdzO1xuICBpZiAoYXJnTGlzdC5sZW5ndGggPiAwICYmIHR5cGVvZiBhcmdMaXN0W2FyZ0xpc3QubGVuZ3RoIC0gMV0gPT09IFwib2JqZWN0XCIpIHtcbiAgICBvcHRzID0gYXJnTGlzdFthcmdMaXN0Lmxlbmd0aCAtIDFdO1xuICAgIGFyZ3MgPSBBcnJheS5mcm9tKGFyZ0xpc3QpLnNsaWNlKDAsIGFyZ0xpc3QubGVuZ3RoIC0gMSk7XG4gIH0gZWxzZSB7XG4gICAgYXJncyA9IEFycmF5LmZyb20oYXJnTGlzdCk7XG4gIH1cbiAgcmV0dXJuIFtvcHRzLCBhcmdzXTtcbn1cblxuLyoqXG4gKiBBIERhdGVUaW1lIGlzIGFuIGltbXV0YWJsZSBkYXRhIHN0cnVjdHVyZSByZXByZXNlbnRpbmcgYSBzcGVjaWZpYyBkYXRlIGFuZCB0aW1lIGFuZCBhY2NvbXBhbnlpbmcgbWV0aG9kcy4gSXQgY29udGFpbnMgY2xhc3MgYW5kIGluc3RhbmNlIG1ldGhvZHMgZm9yIGNyZWF0aW5nLCBwYXJzaW5nLCBpbnRlcnJvZ2F0aW5nLCB0cmFuc2Zvcm1pbmcsIGFuZCBmb3JtYXR0aW5nIHRoZW0uXG4gKlxuICogQSBEYXRlVGltZSBjb21wcmlzZXMgb2Y6XG4gKiAqIEEgdGltZXN0YW1wLiBFYWNoIERhdGVUaW1lIGluc3RhbmNlIHJlZmVycyB0byBhIHNwZWNpZmljIG1pbGxpc2Vjb25kIG9mIHRoZSBVbml4IGVwb2NoLlxuICogKiBBIHRpbWUgem9uZS4gRWFjaCBpbnN0YW5jZSBpcyBjb25zaWRlcmVkIGluIHRoZSBjb250ZXh0IG9mIGEgc3BlY2lmaWMgem9uZSAoYnkgZGVmYXVsdCB0aGUgbG9jYWwgc3lzdGVtJ3Mgem9uZSkuXG4gKiAqIENvbmZpZ3VyYXRpb24gcHJvcGVydGllcyB0aGF0IGVmZmVjdCBob3cgb3V0cHV0IHN0cmluZ3MgYXJlIGZvcm1hdHRlZCwgc3VjaCBhcyBgbG9jYWxlYCwgYG51bWJlcmluZ1N5c3RlbWAsIGFuZCBgb3V0cHV0Q2FsZW5kYXJgLlxuICpcbiAqIEhlcmUgaXMgYSBicmllZiBvdmVydmlldyBvZiB0aGUgbW9zdCBjb21tb25seSB1c2VkIGZ1bmN0aW9uYWxpdHkgaXQgcHJvdmlkZXM6XG4gKlxuICogKiAqKkNyZWF0aW9uKio6IFRvIGNyZWF0ZSBhIERhdGVUaW1lIGZyb20gaXRzIGNvbXBvbmVudHMsIHVzZSBvbmUgb2YgaXRzIGZhY3RvcnkgY2xhc3MgbWV0aG9kczoge0BsaW5rIERhdGVUaW1lI2xvY2FsfSwge0BsaW5rIERhdGVUaW1lI3V0Y30sIGFuZCAobW9zdCBmbGV4aWJseSkge0BsaW5rIERhdGVUaW1lI2Zyb21PYmplY3R9LiBUbyBjcmVhdGUgb25lIGZyb20gYSBzdGFuZGFyZCBzdHJpbmcgZm9ybWF0LCB1c2Uge0BsaW5rIERhdGVUaW1lI2Zyb21JU099LCB7QGxpbmsgRGF0ZVRpbWUjZnJvbUhUVFB9LCBhbmQge0BsaW5rIERhdGVUaW1lI2Zyb21SRkMyODIyfS4gVG8gY3JlYXRlIG9uZSBmcm9tIGEgY3VzdG9tIHN0cmluZyBmb3JtYXQsIHVzZSB7QGxpbmsgRGF0ZVRpbWUjZnJvbUZvcm1hdH0uIFRvIGNyZWF0ZSBvbmUgZnJvbSBhIG5hdGl2ZSBKUyBkYXRlLCB1c2Uge0BsaW5rIERhdGVUaW1lI2Zyb21KU0RhdGV9LlxuICogKiAqKkdyZWdvcmlhbiBjYWxlbmRhciBhbmQgdGltZSoqOiBUbyBleGFtaW5lIHRoZSBHcmVnb3JpYW4gcHJvcGVydGllcyBvZiBhIERhdGVUaW1lIGluZGl2aWR1YWxseSAoaS5lIGFzIG9wcG9zZWQgdG8gY29sbGVjdGl2ZWx5IHRocm91Z2gge0BsaW5rIERhdGVUaW1lI3RvT2JqZWN0fSksIHVzZSB0aGUge0BsaW5rIERhdGVUaW1lI3llYXJ9LCB7QGxpbmsgRGF0ZVRpbWUjbW9udGh9LFxuICoge0BsaW5rIERhdGVUaW1lI2RheX0sIHtAbGluayBEYXRlVGltZSNob3VyfSwge0BsaW5rIERhdGVUaW1lI21pbnV0ZX0sIHtAbGluayBEYXRlVGltZSNzZWNvbmR9LCB7QGxpbmsgRGF0ZVRpbWUjbWlsbGlzZWNvbmR9IGFjY2Vzc29ycy5cbiAqICogKipXZWVrIGNhbGVuZGFyKio6IEZvciBJU08gd2VlayBjYWxlbmRhciBhdHRyaWJ1dGVzLCBzZWUgdGhlIHtAbGluayBEYXRlVGltZSN3ZWVrWWVhcn0sIHtAbGluayBEYXRlVGltZSN3ZWVrTnVtYmVyfSwgYW5kIHtAbGluayBEYXRlVGltZSN3ZWVrZGF5fSBhY2Nlc3NvcnMuXG4gKiAqICoqQ29uZmlndXJhdGlvbioqIFNlZSB0aGUge0BsaW5rIERhdGVUaW1lI2xvY2FsZX0gYW5kIHtAbGluayBEYXRlVGltZSNudW1iZXJpbmdTeXN0ZW19IGFjY2Vzc29ycy5cbiAqICogKipUcmFuc2Zvcm1hdGlvbioqOiBUbyB0cmFuc2Zvcm0gdGhlIERhdGVUaW1lIGludG8gb3RoZXIgRGF0ZVRpbWVzLCB1c2Uge0BsaW5rIERhdGVUaW1lI3NldH0sIHtAbGluayBEYXRlVGltZSNyZWNvbmZpZ3VyZX0sIHtAbGluayBEYXRlVGltZSNzZXRab25lfSwge0BsaW5rIERhdGVUaW1lI3NldExvY2FsZX0sIHtAbGluayBEYXRlVGltZS5wbHVzfSwge0BsaW5rIERhdGVUaW1lI21pbnVzfSwge0BsaW5rIERhdGVUaW1lI2VuZE9mfSwge0BsaW5rIERhdGVUaW1lI3N0YXJ0T2Z9LCB7QGxpbmsgRGF0ZVRpbWUjdG9VVEN9LCBhbmQge0BsaW5rIERhdGVUaW1lI3RvTG9jYWx9LlxuICogKiAqKk91dHB1dCoqOiBUbyBjb252ZXJ0IHRoZSBEYXRlVGltZSB0byBvdGhlciByZXByZXNlbnRhdGlvbnMsIHVzZSB0aGUge0BsaW5rIERhdGVUaW1lI3RvUmVsYXRpdmV9LCB7QGxpbmsgRGF0ZVRpbWUjdG9SZWxhdGl2ZUNhbGVuZGFyfSwge0BsaW5rIERhdGVUaW1lI3RvSlNPTn0sIHtAbGluayBEYXRlVGltZSN0b0lTT30sIHtAbGluayBEYXRlVGltZSN0b0hUVFB9LCB7QGxpbmsgRGF0ZVRpbWUjdG9PYmplY3R9LCB7QGxpbmsgRGF0ZVRpbWUjdG9SRkMyODIyfSwge0BsaW5rIERhdGVUaW1lI3RvU3RyaW5nfSwge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSwge0BsaW5rIERhdGVUaW1lI3RvRm9ybWF0fSwge0BsaW5rIERhdGVUaW1lI3RvTWlsbGlzfSBhbmQge0BsaW5rIERhdGVUaW1lI3RvSlNEYXRlfS5cbiAqXG4gKiBUaGVyZSdzIHBsZW50eSBvdGhlcnMgZG9jdW1lbnRlZCBiZWxvdy4gSW4gYWRkaXRpb24sIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHN1YnRsZXIgdG9waWNzIGxpa2UgaW50ZXJuYXRpb25hbGl6YXRpb24sIHRpbWUgem9uZXMsIGFsdGVybmF0aXZlIGNhbGVuZGFycywgdmFsaWRpdHksIGFuZCBzbyBvbiwgc2VlIHRoZSBleHRlcm5hbCBkb2N1bWVudGF0aW9uLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEYXRlVGltZSB7XG4gIC8qKlxuICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICovXG4gIGNvbnN0cnVjdG9yKGNvbmZpZykge1xuICAgIGNvbnN0IHpvbmUgPSBjb25maWcuem9uZSB8fCBTZXR0aW5ncy5kZWZhdWx0Wm9uZTtcblxuICAgIGxldCBpbnZhbGlkID1cbiAgICAgIGNvbmZpZy5pbnZhbGlkIHx8XG4gICAgICAoTnVtYmVyLmlzTmFOKGNvbmZpZy50cykgPyBuZXcgSW52YWxpZChcImludmFsaWQgaW5wdXRcIikgOiBudWxsKSB8fFxuICAgICAgKCF6b25lLmlzVmFsaWQgPyB1bnN1cHBvcnRlZFpvbmUoem9uZSkgOiBudWxsKTtcbiAgICAvKipcbiAgICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICAgKi9cbiAgICB0aGlzLnRzID0gaXNVbmRlZmluZWQoY29uZmlnLnRzKSA/IFNldHRpbmdzLm5vdygpIDogY29uZmlnLnRzO1xuXG4gICAgbGV0IGMgPSBudWxsLFxuICAgICAgbyA9IG51bGw7XG4gICAgaWYgKCFpbnZhbGlkKSB7XG4gICAgICBjb25zdCB1bmNoYW5nZWQgPSBjb25maWcub2xkICYmIGNvbmZpZy5vbGQudHMgPT09IHRoaXMudHMgJiYgY29uZmlnLm9sZC56b25lLmVxdWFscyh6b25lKTtcblxuICAgICAgaWYgKHVuY2hhbmdlZCkge1xuICAgICAgICBbYywgb10gPSBbY29uZmlnLm9sZC5jLCBjb25maWcub2xkLm9dO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgb3QgPSB6b25lLm9mZnNldCh0aGlzLnRzKTtcbiAgICAgICAgYyA9IHRzVG9PYmoodGhpcy50cywgb3QpO1xuICAgICAgICBpbnZhbGlkID0gTnVtYmVyLmlzTmFOKGMueWVhcikgPyBuZXcgSW52YWxpZChcImludmFsaWQgaW5wdXRcIikgOiBudWxsO1xuICAgICAgICBjID0gaW52YWxpZCA/IG51bGwgOiBjO1xuICAgICAgICBvID0gaW52YWxpZCA/IG51bGwgOiBvdDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICAgKi9cbiAgICB0aGlzLl96b25lID0gem9uZTtcbiAgICAvKipcbiAgICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICAgKi9cbiAgICB0aGlzLmxvYyA9IGNvbmZpZy5sb2MgfHwgTG9jYWxlLmNyZWF0ZSgpO1xuICAgIC8qKlxuICAgICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAgICAqL1xuICAgIHRoaXMuaW52YWxpZCA9IGludmFsaWQ7XG4gICAgLyoqXG4gICAgICogQGFjY2VzcyBwcml2YXRlXG4gICAgICovXG4gICAgdGhpcy53ZWVrRGF0YSA9IG51bGw7XG4gICAgLyoqXG4gICAgICogQGFjY2VzcyBwcml2YXRlXG4gICAgICovXG4gICAgdGhpcy5jID0gYztcbiAgICAvKipcbiAgICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICAgKi9cbiAgICB0aGlzLm8gPSBvO1xuICAgIC8qKlxuICAgICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAgICAqL1xuICAgIHRoaXMuaXNMdXhvbkRhdGVUaW1lID0gdHJ1ZTtcbiAgfVxuXG4gIC8vIENPTlNUUlVDVFxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmb3IgdGhlIGN1cnJlbnQgaW5zdGFudCwgaW4gdGhlIHN5c3RlbSdzIHRpbWUgem9uZS5cbiAgICpcbiAgICogVXNlIFNldHRpbmdzIHRvIG92ZXJyaWRlIHRoZXNlIGRlZmF1bHQgdmFsdWVzIGlmIG5lZWRlZC5cbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9JU08oKSAvL34+IG5vdyBpbiB0aGUgSVNPIGZvcm1hdFxuICAgKiBAcmV0dXJuIHtEYXRlVGltZX1cbiAgICovXG4gIHN0YXRpYyBub3coKSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlVGltZSh7fSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgbG9jYWwgRGF0ZVRpbWVcbiAgICogQHBhcmFtIHtudW1iZXJ9IFt5ZWFyXSAtIFRoZSBjYWxlbmRhciB5ZWFyLiBJZiBvbWl0dGVkIChhcyBpbiwgY2FsbCBgbG9jYWwoKWAgd2l0aCBubyBhcmd1bWVudHMpLCB0aGUgY3VycmVudCB0aW1lIHdpbGwgYmUgdXNlZFxuICAgKiBAcGFyYW0ge251bWJlcn0gW21vbnRoPTFdIC0gVGhlIG1vbnRoLCAxLWluZGV4ZWRcbiAgICogQHBhcmFtIHtudW1iZXJ9IFtkYXk9MV0gLSBUaGUgZGF5IG9mIHRoZSBtb250aCwgMS1pbmRleGVkXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbaG91cj0wXSAtIFRoZSBob3VyIG9mIHRoZSBkYXksIGluIDI0LWhvdXIgdGltZVxuICAgKiBAcGFyYW0ge251bWJlcn0gW21pbnV0ZT0wXSAtIFRoZSBtaW51dGUgb2YgdGhlIGhvdXIsIG1lYW5pbmcgYSBudW1iZXIgYmV0d2VlbiAwIGFuZCA1OVxuICAgKiBAcGFyYW0ge251bWJlcn0gW3NlY29uZD0wXSAtIFRoZSBzZWNvbmQgb2YgdGhlIG1pbnV0ZSwgbWVhbmluZyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDU5XG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbbWlsbGlzZWNvbmQ9MF0gLSBUaGUgbWlsbGlzZWNvbmQgb2YgdGhlIHNlY29uZCwgbWVhbmluZyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDk5OVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vfj4gbm93XG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKHsgem9uZTogXCJBbWVyaWNhL05ld19Zb3JrXCIgfSkgICAgICAvL34+IG5vdywgaW4gVVMgZWFzdCBjb2FzdCB0aW1lXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAxLTAxVDAwOjAwOjAwXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTAxVDAwOjAwOjAwXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDMsIDEyLCB7IGxvY2FsZTogXCJmclwiIH0pICAgICAvL34+IDIwMTctMDMtMTJUMDA6MDA6MDAsIHdpdGggYSBGcmVuY2ggbG9jYWxlXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDMsIDEyLCA1KSAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDA1OjAwOjAwXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDMsIDEyLCA1LCB7IHpvbmU6IFwidXRjXCIgfSkgICAvL34+IDIwMTctMDMtMTJUMDU6MDA6MDAsIGluIFVUQ1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAzLCAxMiwgNSwgNDUpICAgICAgICAgICAgICAgIC8vfj4gMjAxNy0wMy0xMlQwNTo0NTowMFxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAzLCAxMiwgNSwgNDUsIDEwKSAgICAgICAgICAgIC8vfj4gMjAxNy0wMy0xMlQwNTo0NToxMFxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAzLCAxMiwgNSwgNDUsIDEwLCA3NjUpICAgICAgIC8vfj4gMjAxNy0wMy0xMlQwNTo0NToxMC43NjVcbiAgICogQHJldHVybiB7RGF0ZVRpbWV9XG4gICAqL1xuICBzdGF0aWMgbG9jYWwoKSB7XG4gICAgY29uc3QgW29wdHMsIGFyZ3NdID0gbGFzdE9wdHMoYXJndW1lbnRzKSxcbiAgICAgIFt5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCwgbWlsbGlzZWNvbmRdID0gYXJncztcbiAgICByZXR1cm4gcXVpY2tEVCh7IHllYXIsIG1vbnRoLCBkYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWxsaXNlY29uZCB9LCBvcHRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBEYXRlVGltZSBpbiBVVENcbiAgICogQHBhcmFtIHtudW1iZXJ9IFt5ZWFyXSAtIFRoZSBjYWxlbmRhciB5ZWFyLiBJZiBvbWl0dGVkIChhcyBpbiwgY2FsbCBgdXRjKClgIHdpdGggbm8gYXJndW1lbnRzKSwgdGhlIGN1cnJlbnQgdGltZSB3aWxsIGJlIHVzZWRcbiAgICogQHBhcmFtIHtudW1iZXJ9IFttb250aD0xXSAtIFRoZSBtb250aCwgMS1pbmRleGVkXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbZGF5PTFdIC0gVGhlIGRheSBvZiB0aGUgbW9udGhcbiAgICogQHBhcmFtIHtudW1iZXJ9IFtob3VyPTBdIC0gVGhlIGhvdXIgb2YgdGhlIGRheSwgaW4gMjQtaG91ciB0aW1lXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbbWludXRlPTBdIC0gVGhlIG1pbnV0ZSBvZiB0aGUgaG91ciwgbWVhbmluZyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDU5XG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbc2Vjb25kPTBdIC0gVGhlIHNlY29uZCBvZiB0aGUgbWludXRlLCBtZWFuaW5nIGEgbnVtYmVyIGJldHdlZW4gMCBhbmQgNTlcbiAgICogQHBhcmFtIHtudW1iZXJ9IFttaWxsaXNlY29uZD0wXSAtIFRoZSBtaWxsaXNlY29uZCBvZiB0aGUgc2Vjb25kLCBtZWFuaW5nIGEgbnVtYmVyIGJldHdlZW4gMCBhbmQgOTk5XG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgRGF0ZVRpbWVcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLmxvY2FsZV0gLSBhIGxvY2FsZSB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMub3V0cHV0Q2FsZW5kYXJdIC0gdGhlIG91dHB1dCBjYWxlbmRhciB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMubnVtYmVyaW5nU3lzdGVtXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vfj4gbm93XG4gICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygyMDE3KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vfj4gMjAxNy0wMS0wMVQwMDowMDowMFpcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTAxVDAwOjAwOjAwWlxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMjAxNywgMywgMTIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL34+IDIwMTctMDMtMTJUMDA6MDA6MDBaXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygyMDE3LCAzLCAxMiwgNSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vfj4gMjAxNy0wMy0xMlQwNTowMDowMFpcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyLCA1LCA0NSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDA1OjQ1OjAwWlxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMjAxNywgMywgMTIsIDUsIDQ1LCB7IGxvY2FsZTogXCJmclwiIH0pICAgICAgICAgIC8vfj4gMjAxNy0wMy0xMlQwNTo0NTowMFogd2l0aCBhIEZyZW5jaCBsb2NhbGVcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyLCA1LCA0NSwgMTApICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDA1OjQ1OjEwWlxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMjAxNywgMywgMTIsIDUsIDQ1LCAxMCwgNzY1LCB7IGxvY2FsZTogXCJmclwiIH0pIC8vfj4gMjAxNy0wMy0xMlQwNTo0NToxMC43NjVaIHdpdGggYSBGcmVuY2ggbG9jYWxlXG4gICAqIEByZXR1cm4ge0RhdGVUaW1lfVxuICAgKi9cbiAgc3RhdGljIHV0YygpIHtcbiAgICBjb25zdCBbb3B0cywgYXJnc10gPSBsYXN0T3B0cyhhcmd1bWVudHMpLFxuICAgICAgW3llYXIsIG1vbnRoLCBkYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWxsaXNlY29uZF0gPSBhcmdzO1xuXG4gICAgb3B0cy56b25lID0gRml4ZWRPZmZzZXRab25lLnV0Y0luc3RhbmNlO1xuICAgIHJldHVybiBxdWlja0RUKHsgeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pbGxpc2Vjb25kIH0sIG9wdHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIERhdGVUaW1lIGZyb20gYSBKYXZhU2NyaXB0IERhdGUgb2JqZWN0LiBVc2VzIHRoZSBkZWZhdWx0IHpvbmUuXG4gICAqIEBwYXJhbSB7RGF0ZX0gZGF0ZSAtIGEgSmF2YVNjcmlwdCBEYXRlIG9iamVjdFxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIERhdGVUaW1lXG4gICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRpb25zLnpvbmU9J2xvY2FsJ10gLSB0aGUgem9uZSB0byBwbGFjZSB0aGUgRGF0ZVRpbWUgaW50b1xuICAgKiBAcmV0dXJuIHtEYXRlVGltZX1cbiAgICovXG4gIHN0YXRpYyBmcm9tSlNEYXRlKGRhdGUsIG9wdGlvbnMgPSB7fSkge1xuICAgIGNvbnN0IHRzID0gaXNEYXRlKGRhdGUpID8gZGF0ZS52YWx1ZU9mKCkgOiBOYU47XG4gICAgaWYgKE51bWJlci5pc05hTih0cykpIHtcbiAgICAgIHJldHVybiBEYXRlVGltZS5pbnZhbGlkKFwiaW52YWxpZCBpbnB1dFwiKTtcbiAgICB9XG5cbiAgICBjb25zdCB6b25lVG9Vc2UgPSBub3JtYWxpemVab25lKG9wdGlvbnMuem9uZSwgU2V0dGluZ3MuZGVmYXVsdFpvbmUpO1xuICAgIGlmICghem9uZVRvVXNlLmlzVmFsaWQpIHtcbiAgICAgIHJldHVybiBEYXRlVGltZS5pbnZhbGlkKHVuc3VwcG9ydGVkWm9uZSh6b25lVG9Vc2UpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IERhdGVUaW1lKHtcbiAgICAgIHRzOiB0cyxcbiAgICAgIHpvbmU6IHpvbmVUb1VzZSxcbiAgICAgIGxvYzogTG9jYWxlLmZyb21PYmplY3Qob3B0aW9ucyksXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgRGF0ZVRpbWUgZnJvbSBhIG51bWJlciBvZiBtaWxsaXNlY29uZHMgc2luY2UgdGhlIGVwb2NoIChtZWFuaW5nIHNpbmNlIDEgSmFudWFyeSAxOTcwIDAwOjAwOjAwIFVUQykuIFVzZXMgdGhlIGRlZmF1bHQgem9uZS5cbiAgICogQHBhcmFtIHtudW1iZXJ9IG1pbGxpc2Vjb25kcyAtIGEgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBzaW5jZSAxOTcwIFVUQ1xuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIERhdGVUaW1lXG4gICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRpb25zLnpvbmU9J2xvY2FsJ10gLSB0aGUgem9uZSB0byBwbGFjZSB0aGUgRGF0ZVRpbWUgaW50b1xuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMubG9jYWxlXSAtIGEgbG9jYWxlIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLm91dHB1dENhbGVuZGFyIC0gdGhlIG91dHB1dCBjYWxlbmRhciB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5udW1iZXJpbmdTeXN0ZW0gLSB0aGUgbnVtYmVyaW5nIHN5c3RlbSB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZVxuICAgKiBAcmV0dXJuIHtEYXRlVGltZX1cbiAgICovXG4gIHN0YXRpYyBmcm9tTWlsbGlzKG1pbGxpc2Vjb25kcywgb3B0aW9ucyA9IHt9KSB7XG4gICAgaWYgKCFpc051bWJlcihtaWxsaXNlY29uZHMpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoXG4gICAgICAgIGBmcm9tTWlsbGlzIHJlcXVpcmVzIGEgbnVtZXJpY2FsIGlucHV0LCBidXQgcmVjZWl2ZWQgYSAke3R5cGVvZiBtaWxsaXNlY29uZHN9IHdpdGggdmFsdWUgJHttaWxsaXNlY29uZHN9YFxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKG1pbGxpc2Vjb25kcyA8IC1NQVhfREFURSB8fCBtaWxsaXNlY29uZHMgPiBNQVhfREFURSkge1xuICAgICAgLy8gdGhpcyBpc24ndCBwZXJmZWN0IGJlY2F1c2UgYmVjYXVzZSB3ZSBjYW4gc3RpbGwgZW5kIHVwIG91dCBvZiByYW5nZSBiZWNhdXNlIG9mIGFkZGl0aW9uYWwgc2hpZnRpbmcsIGJ1dCBpdCdzIGEgc3RhcnRcbiAgICAgIHJldHVybiBEYXRlVGltZS5pbnZhbGlkKFwiVGltZXN0YW1wIG91dCBvZiByYW5nZVwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5ldyBEYXRlVGltZSh7XG4gICAgICAgIHRzOiBtaWxsaXNlY29uZHMsXG4gICAgICAgIHpvbmU6IG5vcm1hbGl6ZVpvbmUob3B0aW9ucy56b25lLCBTZXR0aW5ncy5kZWZhdWx0Wm9uZSksXG4gICAgICAgIGxvYzogTG9jYWxlLmZyb21PYmplY3Qob3B0aW9ucyksXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgRGF0ZVRpbWUgZnJvbSBhIG51bWJlciBvZiBzZWNvbmRzIHNpbmNlIHRoZSBlcG9jaCAobWVhbmluZyBzaW5jZSAxIEphbnVhcnkgMTk3MCAwMDowMDowMCBVVEMpLiBVc2VzIHRoZSBkZWZhdWx0IHpvbmUuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBzZWNvbmRzIC0gYSBudW1iZXIgb2Ygc2Vjb25kcyBzaW5jZSAxOTcwIFVUQ1xuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIERhdGVUaW1lXG4gICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRpb25zLnpvbmU9J2xvY2FsJ10gLSB0aGUgem9uZSB0byBwbGFjZSB0aGUgRGF0ZVRpbWUgaW50b1xuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMubG9jYWxlXSAtIGEgbG9jYWxlIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLm91dHB1dENhbGVuZGFyIC0gdGhlIG91dHB1dCBjYWxlbmRhciB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5udW1iZXJpbmdTeXN0ZW0gLSB0aGUgbnVtYmVyaW5nIHN5c3RlbSB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZVxuICAgKiBAcmV0dXJuIHtEYXRlVGltZX1cbiAgICovXG4gIHN0YXRpYyBmcm9tU2Vjb25kcyhzZWNvbmRzLCBvcHRpb25zID0ge30pIHtcbiAgICBpZiAoIWlzTnVtYmVyKHNlY29uZHMpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoXCJmcm9tU2Vjb25kcyByZXF1aXJlcyBhIG51bWVyaWNhbCBpbnB1dFwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5ldyBEYXRlVGltZSh7XG4gICAgICAgIHRzOiBzZWNvbmRzICogMTAwMCxcbiAgICAgICAgem9uZTogbm9ybWFsaXplWm9uZShvcHRpb25zLnpvbmUsIFNldHRpbmdzLmRlZmF1bHRab25lKSxcbiAgICAgICAgbG9jOiBMb2NhbGUuZnJvbU9iamVjdChvcHRpb25zKSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGEgSmF2YVNjcmlwdCBvYmplY3Qgd2l0aCBrZXlzIGxpa2UgJ3llYXInIGFuZCAnaG91cicgd2l0aCByZWFzb25hYmxlIGRlZmF1bHRzLlxuICAgKiBAcGFyYW0ge09iamVjdH0gb2JqIC0gdGhlIG9iamVjdCB0byBjcmVhdGUgdGhlIERhdGVUaW1lIGZyb21cbiAgICogQHBhcmFtIHtudW1iZXJ9IG9iai55ZWFyIC0gYSB5ZWFyLCBzdWNoIGFzIDE5ODdcbiAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5tb250aCAtIGEgbW9udGgsIDEtMTJcbiAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5kYXkgLSBhIGRheSBvZiB0aGUgbW9udGgsIDEtMzEsIGRlcGVuZGluZyBvbiB0aGUgbW9udGhcbiAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5vcmRpbmFsIC0gZGF5IG9mIHRoZSB5ZWFyLCAxLTM2NSBvciAzNjZcbiAgICogQHBhcmFtIHtudW1iZXJ9IG9iai53ZWVrWWVhciAtIGFuIElTTyB3ZWVrIHllYXJcbiAgICogQHBhcmFtIHtudW1iZXJ9IG9iai53ZWVrTnVtYmVyIC0gYW4gSVNPIHdlZWsgbnVtYmVyLCBiZXR3ZWVuIDEgYW5kIDUyIG9yIDUzLCBkZXBlbmRpbmcgb24gdGhlIHllYXJcbiAgICogQHBhcmFtIHtudW1iZXJ9IG9iai53ZWVrZGF5IC0gYW4gSVNPIHdlZWtkYXksIDEtNywgd2hlcmUgMSBpcyBNb25kYXkgYW5kIDcgaXMgU3VuZGF5XG4gICAqIEBwYXJhbSB7bnVtYmVyfSBvYmouaG91ciAtIGhvdXIgb2YgdGhlIGRheSwgMC0yM1xuICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLm1pbnV0ZSAtIG1pbnV0ZSBvZiB0aGUgaG91ciwgMC01OVxuICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLnNlY29uZCAtIHNlY29uZCBvZiB0aGUgbWludXRlLCAwLTU5XG4gICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoubWlsbGlzZWNvbmQgLSBtaWxsaXNlY29uZCBvZiB0aGUgc2Vjb25kLCAwLTk5OVxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgZm9yIGNyZWF0aW5nIHRoaXMgRGF0ZVRpbWVcbiAgICogQHBhcmFtIHtzdHJpbmd8Wm9uZX0gW29wdHMuem9uZT0nbG9jYWwnXSAtIGludGVycHJldCB0aGUgbnVtYmVycyBpbiB0aGUgY29udGV4dCBvZiBhIHBhcnRpY3VsYXIgem9uZS4gQ2FuIHRha2UgYW55IHZhbHVlIHRha2VuIGFzIHRoZSBmaXJzdCBhcmd1bWVudCB0byBzZXRab25lKClcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT0nc3lzdGVtJ3MgbG9jYWxlJ10gLSBhIGxvY2FsZSB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5vdXRwdXRDYWxlbmRhciAtIHRoZSBvdXRwdXQgY2FsZW5kYXIgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMubnVtYmVyaW5nU3lzdGVtIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0gdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2VcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbU9iamVjdCh7IHllYXI6IDE5ODIsIG1vbnRoOiA1LCBkYXk6IDI1fSkudG9JU09EYXRlKCkgLy89PiAnMTk4Mi0wNS0yNSdcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbU9iamVjdCh7IHllYXI6IDE5ODIgfSkudG9JU09EYXRlKCkgLy89PiAnMTk4Mi0wMS0wMSdcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbU9iamVjdCh7IGhvdXI6IDEwLCBtaW51dGU6IDI2LCBzZWNvbmQ6IDYgfSkgLy9+PiB0b2RheSBhdCAxMDoyNjowNlxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tT2JqZWN0KHsgaG91cjogMTAsIG1pbnV0ZTogMjYsIHNlY29uZDogNiB9LCB7IHpvbmU6ICd1dGMnIH0pLFxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tT2JqZWN0KHsgaG91cjogMTAsIG1pbnV0ZTogMjYsIHNlY29uZDogNiB9LCB7IHpvbmU6ICdsb2NhbCcgfSlcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbU9iamVjdCh7IGhvdXI6IDEwLCBtaW51dGU6IDI2LCBzZWNvbmQ6IDYgfSwgeyB6b25lOiAnQW1lcmljYS9OZXdfWW9yaycgfSlcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbU9iamVjdCh7IHdlZWtZZWFyOiAyMDE2LCB3ZWVrTnVtYmVyOiAyLCB3ZWVrZGF5OiAzIH0pLnRvSVNPRGF0ZSgpIC8vPT4gJzIwMTYtMDEtMTMnXG4gICAqIEByZXR1cm4ge0RhdGVUaW1lfVxuICAgKi9cbiAgc3RhdGljIGZyb21PYmplY3Qob2JqLCBvcHRzID0ge30pIHtcbiAgICBvYmogPSBvYmogfHwge307XG4gICAgY29uc3Qgem9uZVRvVXNlID0gbm9ybWFsaXplWm9uZShvcHRzLnpvbmUsIFNldHRpbmdzLmRlZmF1bHRab25lKTtcbiAgICBpZiAoIXpvbmVUb1VzZS5pc1ZhbGlkKSB7XG4gICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZCh1bnN1cHBvcnRlZFpvbmUoem9uZVRvVXNlKSk7XG4gICAgfVxuXG4gICAgY29uc3QgdHNOb3cgPSBTZXR0aW5ncy5ub3coKSxcbiAgICAgIG9mZnNldFByb3ZpcyA9ICFpc1VuZGVmaW5lZChvcHRzLnNwZWNpZmljT2Zmc2V0KVxuICAgICAgICA/IG9wdHMuc3BlY2lmaWNPZmZzZXRcbiAgICAgICAgOiB6b25lVG9Vc2Uub2Zmc2V0KHRzTm93KSxcbiAgICAgIG5vcm1hbGl6ZWQgPSBub3JtYWxpemVPYmplY3Qob2JqLCBub3JtYWxpemVVbml0KSxcbiAgICAgIGNvbnRhaW5zT3JkaW5hbCA9ICFpc1VuZGVmaW5lZChub3JtYWxpemVkLm9yZGluYWwpLFxuICAgICAgY29udGFpbnNHcmVnb3JZZWFyID0gIWlzVW5kZWZpbmVkKG5vcm1hbGl6ZWQueWVhciksXG4gICAgICBjb250YWluc0dyZWdvck1EID0gIWlzVW5kZWZpbmVkKG5vcm1hbGl6ZWQubW9udGgpIHx8ICFpc1VuZGVmaW5lZChub3JtYWxpemVkLmRheSksXG4gICAgICBjb250YWluc0dyZWdvciA9IGNvbnRhaW5zR3JlZ29yWWVhciB8fCBjb250YWluc0dyZWdvck1ELFxuICAgICAgZGVmaW5pdGVXZWVrRGVmID0gbm9ybWFsaXplZC53ZWVrWWVhciB8fCBub3JtYWxpemVkLndlZWtOdW1iZXIsXG4gICAgICBsb2MgPSBMb2NhbGUuZnJvbU9iamVjdChvcHRzKTtcblxuICAgIC8vIGNhc2VzOlxuICAgIC8vIGp1c3QgYSB3ZWVrZGF5IC0+IHRoaXMgd2VlaydzIGluc3RhbmNlIG9mIHRoYXQgd2Vla2RheSwgbm8gd29ycmllc1xuICAgIC8vIChncmVnb3JpYW4gZGF0YSBvciBvcmRpbmFsKSArICh3ZWVrWWVhciBvciB3ZWVrTnVtYmVyKSAtPiBlcnJvclxuICAgIC8vIChncmVnb3JpYW4gbW9udGggb3IgZGF5KSArIG9yZGluYWwgLT4gZXJyb3JcbiAgICAvLyBvdGhlcndpc2UganVzdCB1c2Ugd2Vla3Mgb3Igb3JkaW5hbHMgb3IgZ3JlZ29yaWFuLCBkZXBlbmRpbmcgb24gd2hhdCdzIHNwZWNpZmllZFxuXG4gICAgaWYgKChjb250YWluc0dyZWdvciB8fCBjb250YWluc09yZGluYWwpICYmIGRlZmluaXRlV2Vla0RlZikge1xuICAgICAgdGhyb3cgbmV3IENvbmZsaWN0aW5nU3BlY2lmaWNhdGlvbkVycm9yKFxuICAgICAgICBcIkNhbid0IG1peCB3ZWVrWWVhci93ZWVrTnVtYmVyIHVuaXRzIHdpdGggeWVhci9tb250aC9kYXkgb3Igb3JkaW5hbHNcIlxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoY29udGFpbnNHcmVnb3JNRCAmJiBjb250YWluc09yZGluYWwpIHtcbiAgICAgIHRocm93IG5ldyBDb25mbGljdGluZ1NwZWNpZmljYXRpb25FcnJvcihcIkNhbid0IG1peCBvcmRpbmFsIGRhdGVzIHdpdGggbW9udGgvZGF5XCIpO1xuICAgIH1cblxuICAgIGNvbnN0IHVzZVdlZWtEYXRhID0gZGVmaW5pdGVXZWVrRGVmIHx8IChub3JtYWxpemVkLndlZWtkYXkgJiYgIWNvbnRhaW5zR3JlZ29yKTtcblxuICAgIC8vIGNvbmZpZ3VyZSBvdXJzZWx2ZXMgdG8gZGVhbCB3aXRoIGdyZWdvcmlhbiBkYXRlcyBvciB3ZWVrIHN0dWZmXG4gICAgbGV0IHVuaXRzLFxuICAgICAgZGVmYXVsdFZhbHVlcyxcbiAgICAgIG9iak5vdyA9IHRzVG9PYmoodHNOb3csIG9mZnNldFByb3Zpcyk7XG4gICAgaWYgKHVzZVdlZWtEYXRhKSB7XG4gICAgICB1bml0cyA9IG9yZGVyZWRXZWVrVW5pdHM7XG4gICAgICBkZWZhdWx0VmFsdWVzID0gZGVmYXVsdFdlZWtVbml0VmFsdWVzO1xuICAgICAgb2JqTm93ID0gZ3JlZ29yaWFuVG9XZWVrKG9iak5vdyk7XG4gICAgfSBlbHNlIGlmIChjb250YWluc09yZGluYWwpIHtcbiAgICAgIHVuaXRzID0gb3JkZXJlZE9yZGluYWxVbml0cztcbiAgICAgIGRlZmF1bHRWYWx1ZXMgPSBkZWZhdWx0T3JkaW5hbFVuaXRWYWx1ZXM7XG4gICAgICBvYmpOb3cgPSBncmVnb3JpYW5Ub09yZGluYWwob2JqTm93KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdW5pdHMgPSBvcmRlcmVkVW5pdHM7XG4gICAgICBkZWZhdWx0VmFsdWVzID0gZGVmYXVsdFVuaXRWYWx1ZXM7XG4gICAgfVxuXG4gICAgLy8gc2V0IGRlZmF1bHQgdmFsdWVzIGZvciBtaXNzaW5nIHN0dWZmXG4gICAgbGV0IGZvdW5kRmlyc3QgPSBmYWxzZTtcbiAgICBmb3IgKGNvbnN0IHUgb2YgdW5pdHMpIHtcbiAgICAgIGNvbnN0IHYgPSBub3JtYWxpemVkW3VdO1xuICAgICAgaWYgKCFpc1VuZGVmaW5lZCh2KSkge1xuICAgICAgICBmb3VuZEZpcnN0ID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSBpZiAoZm91bmRGaXJzdCkge1xuICAgICAgICBub3JtYWxpemVkW3VdID0gZGVmYXVsdFZhbHVlc1t1XTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5vcm1hbGl6ZWRbdV0gPSBvYmpOb3dbdV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gbWFrZSBzdXJlIHRoZSB2YWx1ZXMgd2UgaGF2ZSBhcmUgaW4gcmFuZ2VcbiAgICBjb25zdCBoaWdoZXJPcmRlckludmFsaWQgPSB1c2VXZWVrRGF0YVxuICAgICAgICA/IGhhc0ludmFsaWRXZWVrRGF0YShub3JtYWxpemVkKVxuICAgICAgICA6IGNvbnRhaW5zT3JkaW5hbFxuICAgICAgICA/IGhhc0ludmFsaWRPcmRpbmFsRGF0YShub3JtYWxpemVkKVxuICAgICAgICA6IGhhc0ludmFsaWRHcmVnb3JpYW5EYXRhKG5vcm1hbGl6ZWQpLFxuICAgICAgaW52YWxpZCA9IGhpZ2hlck9yZGVySW52YWxpZCB8fCBoYXNJbnZhbGlkVGltZURhdGEobm9ybWFsaXplZCk7XG5cbiAgICBpZiAoaW52YWxpZCkge1xuICAgICAgcmV0dXJuIERhdGVUaW1lLmludmFsaWQoaW52YWxpZCk7XG4gICAgfVxuXG4gICAgLy8gY29tcHV0ZSB0aGUgYWN0dWFsIHRpbWVcbiAgICBjb25zdCBncmVnb3JpYW4gPSB1c2VXZWVrRGF0YVxuICAgICAgICA/IHdlZWtUb0dyZWdvcmlhbihub3JtYWxpemVkKVxuICAgICAgICA6IGNvbnRhaW5zT3JkaW5hbFxuICAgICAgICA/IG9yZGluYWxUb0dyZWdvcmlhbihub3JtYWxpemVkKVxuICAgICAgICA6IG5vcm1hbGl6ZWQsXG4gICAgICBbdHNGaW5hbCwgb2Zmc2V0RmluYWxdID0gb2JqVG9UUyhncmVnb3JpYW4sIG9mZnNldFByb3Zpcywgem9uZVRvVXNlKSxcbiAgICAgIGluc3QgPSBuZXcgRGF0ZVRpbWUoe1xuICAgICAgICB0czogdHNGaW5hbCxcbiAgICAgICAgem9uZTogem9uZVRvVXNlLFxuICAgICAgICBvOiBvZmZzZXRGaW5hbCxcbiAgICAgICAgbG9jLFxuICAgICAgfSk7XG5cbiAgICAvLyBncmVnb3JpYW4gZGF0YSArIHdlZWtkYXkgc2VydmVzIG9ubHkgdG8gdmFsaWRhdGVcbiAgICBpZiAobm9ybWFsaXplZC53ZWVrZGF5ICYmIGNvbnRhaW5zR3JlZ29yICYmIG9iai53ZWVrZGF5ICE9PSBpbnN0LndlZWtkYXkpIHtcbiAgICAgIHJldHVybiBEYXRlVGltZS5pbnZhbGlkKFxuICAgICAgICBcIm1pc21hdGNoZWQgd2Vla2RheVwiLFxuICAgICAgICBgeW91IGNhbid0IHNwZWNpZnkgYm90aCBhIHdlZWtkYXkgb2YgJHtub3JtYWxpemVkLndlZWtkYXl9IGFuZCBhIGRhdGUgb2YgJHtpbnN0LnRvSVNPKCl9YFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gaW5zdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGFuIElTTyA4NjAxIHN0cmluZ1xuICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAtIHRoZSBJU08gc3RyaW5nXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucyB0byBhZmZlY3QgdGhlIGNyZWF0aW9uXG4gICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRzLnpvbmU9J2xvY2FsJ10gLSB1c2UgdGhpcyB6b25lIGlmIG5vIG9mZnNldCBpcyBzcGVjaWZpZWQgaW4gdGhlIGlucHV0IHN0cmluZyBpdHNlbGYuIFdpbGwgYWxzbyBjb252ZXJ0IHRoZSB0aW1lIHRvIHRoaXMgem9uZVxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLnNldFpvbmU9ZmFsc2VdIC0gb3ZlcnJpZGUgdGhlIHpvbmUgd2l0aCBhIGZpeGVkLW9mZnNldCB6b25lIHNwZWNpZmllZCBpbiB0aGUgc3RyaW5nIGl0c2VsZiwgaWYgaXQgc3BlY2lmaWVzIG9uZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlPSdzeXN0ZW0ncyBsb2NhbGUnXSAtIGEgbG9jYWxlIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5vdXRwdXRDYWxlbmRhcl0gLSB0aGUgb3V0cHV0IGNhbGVuZGFyIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5udW1iZXJpbmdTeXN0ZW1dIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0gdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2VcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbUlTTygnMjAxNi0wNS0yNVQwOTowODozNC4xMjMnKVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tSVNPKCcyMDE2LTA1LTI1VDA5OjA4OjM0LjEyMyswNjowMCcpXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21JU08oJzIwMTYtMDUtMjVUMDk6MDg6MzQuMTIzKzA2OjAwJywge3NldFpvbmU6IHRydWV9KVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tSVNPKCcyMDE2LTA1LTI1VDA5OjA4OjM0LjEyMycsIHt6b25lOiAndXRjJ30pXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21JU08oJzIwMTYtVzA1LTQnKVxuICAgKiBAcmV0dXJuIHtEYXRlVGltZX1cbiAgICovXG4gIHN0YXRpYyBmcm9tSVNPKHRleHQsIG9wdHMgPSB7fSkge1xuICAgIGNvbnN0IFt2YWxzLCBwYXJzZWRab25lXSA9IHBhcnNlSVNPRGF0ZSh0ZXh0KTtcbiAgICByZXR1cm4gcGFyc2VEYXRhVG9EYXRlVGltZSh2YWxzLCBwYXJzZWRab25lLCBvcHRzLCBcIklTTyA4NjAxXCIsIHRleHQpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIERhdGVUaW1lIGZyb20gYW4gUkZDIDI4MjIgc3RyaW5nXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IC0gdGhlIFJGQyAyODIyIHN0cmluZ1xuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgdG8gYWZmZWN0IHRoZSBjcmVhdGlvblxuICAgKiBAcGFyYW0ge3N0cmluZ3xab25lfSBbb3B0cy56b25lPSdsb2NhbCddIC0gY29udmVydCB0aGUgdGltZSB0byB0aGlzIHpvbmUuIFNpbmNlIHRoZSBvZmZzZXQgaXMgYWx3YXlzIHNwZWNpZmllZCBpbiB0aGUgc3RyaW5nIGl0c2VsZiwgdGhpcyBoYXMgbm8gZWZmZWN0IG9uIHRoZSBpbnRlcnByZXRhdGlvbiBvZiBzdHJpbmcsIG1lcmVseSB0aGUgem9uZSB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGlzIGV4cHJlc3NlZCBpbi5cbiAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zZXRab25lPWZhbHNlXSAtIG92ZXJyaWRlIHRoZSB6b25lIHdpdGggYSBmaXhlZC1vZmZzZXQgem9uZSBzcGVjaWZpZWQgaW4gdGhlIHN0cmluZyBpdHNlbGYsIGlmIGl0IHNwZWNpZmllcyBvbmVcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT0nc3lzdGVtJ3MgbG9jYWxlJ10gLSBhIGxvY2FsZSB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5vdXRwdXRDYWxlbmRhciAtIHRoZSBvdXRwdXQgY2FsZW5kYXIgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMubnVtYmVyaW5nU3lzdGVtIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0gdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2VcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVJGQzI4MjIoJzI1IE5vdiAyMDE2IDEzOjIzOjEyIEdNVCcpXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21SRkMyODIyKCdGcmksIDI1IE5vdiAyMDE2IDEzOjIzOjEyICswNjAwJylcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVJGQzI4MjIoJzI1IE5vdiAyMDE2IDEzOjIzIFonKVxuICAgKiBAcmV0dXJuIHtEYXRlVGltZX1cbiAgICovXG4gIHN0YXRpYyBmcm9tUkZDMjgyMih0ZXh0LCBvcHRzID0ge30pIHtcbiAgICBjb25zdCBbdmFscywgcGFyc2VkWm9uZV0gPSBwYXJzZVJGQzI4MjJEYXRlKHRleHQpO1xuICAgIHJldHVybiBwYXJzZURhdGFUb0RhdGVUaW1lKHZhbHMsIHBhcnNlZFpvbmUsIG9wdHMsIFwiUkZDIDI4MjJcIiwgdGV4dCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgRGF0ZVRpbWUgZnJvbSBhbiBIVFRQIGhlYWRlciBkYXRlXG4gICAqIEBzZWUgaHR0cHM6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMy5odG1sI3NlYzMuMy4xXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IC0gdGhlIEhUVFAgaGVhZGVyIGRhdGVcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRvIGFmZmVjdCB0aGUgY3JlYXRpb25cbiAgICogQHBhcmFtIHtzdHJpbmd8Wm9uZX0gW29wdHMuem9uZT0nbG9jYWwnXSAtIGNvbnZlcnQgdGhlIHRpbWUgdG8gdGhpcyB6b25lLiBTaW5jZSBIVFRQIGRhdGVzIGFyZSBhbHdheXMgaW4gVVRDLCB0aGlzIGhhcyBubyBlZmZlY3Qgb24gdGhlIGludGVycHJldGF0aW9uIG9mIHN0cmluZywgbWVyZWx5IHRoZSB6b25lIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaXMgZXhwcmVzc2VkIGluLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLnNldFpvbmU9ZmFsc2VdIC0gb3ZlcnJpZGUgdGhlIHpvbmUgd2l0aCB0aGUgZml4ZWQtb2Zmc2V0IHpvbmUgc3BlY2lmaWVkIGluIHRoZSBzdHJpbmcuIEZvciBIVFRQIGRhdGVzLCB0aGlzIGlzIGFsd2F5cyBVVEMsIHNvIHRoaXMgb3B0aW9uIGlzIGVxdWl2YWxlbnQgdG8gc2V0dGluZyB0aGUgYHpvbmVgIG9wdGlvbiB0byAndXRjJywgYnV0IHRoaXMgb3B0aW9uIGlzIGluY2x1ZGVkIGZvciBjb25zaXN0ZW5jeSB3aXRoIHNpbWlsYXIgbWV0aG9kcy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT0nc3lzdGVtJ3MgbG9jYWxlJ10gLSBhIGxvY2FsZSB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5vdXRwdXRDYWxlbmRhciAtIHRoZSBvdXRwdXQgY2FsZW5kYXIgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMubnVtYmVyaW5nU3lzdGVtIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0gdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2VcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbUhUVFAoJ1N1biwgMDYgTm92IDE5OTQgMDg6NDk6MzcgR01UJylcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbUhUVFAoJ1N1bmRheSwgMDYtTm92LTk0IDA4OjQ5OjM3IEdNVCcpXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21IVFRQKCdTdW4gTm92ICA2IDA4OjQ5OjM3IDE5OTQnKVxuICAgKiBAcmV0dXJuIHtEYXRlVGltZX1cbiAgICovXG4gIHN0YXRpYyBmcm9tSFRUUCh0ZXh0LCBvcHRzID0ge30pIHtcbiAgICBjb25zdCBbdmFscywgcGFyc2VkWm9uZV0gPSBwYXJzZUhUVFBEYXRlKHRleHQpO1xuICAgIHJldHVybiBwYXJzZURhdGFUb0RhdGVUaW1lKHZhbHMsIHBhcnNlZFpvbmUsIG9wdHMsIFwiSFRUUFwiLCBvcHRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGFuIGlucHV0IHN0cmluZyBhbmQgZm9ybWF0IHN0cmluZy5cbiAgICogRGVmYXVsdHMgdG8gZW4tVVMgaWYgbm8gbG9jYWxlIGhhcyBiZWVuIHNwZWNpZmllZCwgcmVnYXJkbGVzcyBvZiB0aGUgc3lzdGVtJ3MgbG9jYWxlLiBGb3IgYSB0YWJsZSBvZiB0b2tlbnMgYW5kIHRoZWlyIGludGVycHJldGF0aW9ucywgc2VlIFtoZXJlXShodHRwczovL21vbWVudC5naXRodWIuaW8vbHV4b24vIy9wYXJzaW5nP2lkPXRhYmxlLW9mLXRva2VucykuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IC0gdGhlIHN0cmluZyB0byBwYXJzZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZm10IC0gdGhlIGZvcm1hdCB0aGUgc3RyaW5nIGlzIGV4cGVjdGVkIHRvIGJlIGluIChzZWUgdGhlIGxpbmsgYmVsb3cgZm9yIHRoZSBmb3JtYXRzKVxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgdG8gYWZmZWN0IHRoZSBjcmVhdGlvblxuICAgKiBAcGFyYW0ge3N0cmluZ3xab25lfSBbb3B0cy56b25lPSdsb2NhbCddIC0gdXNlIHRoaXMgem9uZSBpZiBubyBvZmZzZXQgaXMgc3BlY2lmaWVkIGluIHRoZSBpbnB1dCBzdHJpbmcgaXRzZWxmLiBXaWxsIGFsc28gY29udmVydCB0aGUgRGF0ZVRpbWUgdG8gdGhpcyB6b25lXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuc2V0Wm9uZT1mYWxzZV0gLSBvdmVycmlkZSB0aGUgem9uZSB3aXRoIGEgem9uZSBzcGVjaWZpZWQgaW4gdGhlIHN0cmluZyBpdHNlbGYsIGlmIGl0IHNwZWNpZmllcyBvbmVcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT0nZW4tVVMnXSAtIGEgbG9jYWxlIHN0cmluZyB0byB1c2Ugd2hlbiBwYXJzaW5nLiBXaWxsIGFsc28gc2V0IHRoZSBEYXRlVGltZSB0byB0aGlzIGxvY2FsZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5udW1iZXJpbmdTeXN0ZW0gLSB0aGUgbnVtYmVyaW5nIHN5c3RlbSB0byB1c2Ugd2hlbiBwYXJzaW5nLiBXaWxsIGFsc28gc2V0IHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgdG8gdGhpcyBudW1iZXJpbmcgc3lzdGVtXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm91dHB1dENhbGVuZGFyIC0gdGhlIG91dHB1dCBjYWxlbmRhciB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZVxuICAgKiBAcmV0dXJuIHtEYXRlVGltZX1cbiAgICovXG4gIHN0YXRpYyBmcm9tRm9ybWF0KHRleHQsIGZtdCwgb3B0cyA9IHt9KSB7XG4gICAgaWYgKGlzVW5kZWZpbmVkKHRleHQpIHx8IGlzVW5kZWZpbmVkKGZtdCkpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcihcImZyb21Gb3JtYXQgcmVxdWlyZXMgYW4gaW5wdXQgc3RyaW5nIGFuZCBhIGZvcm1hdFwiKTtcbiAgICB9XG5cbiAgICBjb25zdCB7IGxvY2FsZSA9IG51bGwsIG51bWJlcmluZ1N5c3RlbSA9IG51bGwgfSA9IG9wdHMsXG4gICAgICBsb2NhbGVUb1VzZSA9IExvY2FsZS5mcm9tT3B0cyh7XG4gICAgICAgIGxvY2FsZSxcbiAgICAgICAgbnVtYmVyaW5nU3lzdGVtLFxuICAgICAgICBkZWZhdWx0VG9FTjogdHJ1ZSxcbiAgICAgIH0pLFxuICAgICAgW3ZhbHMsIHBhcnNlZFpvbmUsIHNwZWNpZmljT2Zmc2V0LCBpbnZhbGlkXSA9IHBhcnNlRnJvbVRva2Vucyhsb2NhbGVUb1VzZSwgdGV4dCwgZm10KTtcbiAgICBpZiAoaW52YWxpZCkge1xuICAgICAgcmV0dXJuIERhdGVUaW1lLmludmFsaWQoaW52YWxpZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBwYXJzZURhdGFUb0RhdGVUaW1lKHZhbHMsIHBhcnNlZFpvbmUsIG9wdHMsIGBmb3JtYXQgJHtmbXR9YCwgdGV4dCwgc3BlY2lmaWNPZmZzZXQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCB1c2UgZnJvbUZvcm1hdCBpbnN0ZWFkXG4gICAqL1xuICBzdGF0aWMgZnJvbVN0cmluZyh0ZXh0LCBmbXQsIG9wdHMgPSB7fSkge1xuICAgIHJldHVybiBEYXRlVGltZS5mcm9tRm9ybWF0KHRleHQsIGZtdCwgb3B0cyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgRGF0ZVRpbWUgZnJvbSBhIFNRTCBkYXRlLCB0aW1lLCBvciBkYXRldGltZVxuICAgKiBEZWZhdWx0cyB0byBlbi1VUyBpZiBubyBsb2NhbGUgaGFzIGJlZW4gc3BlY2lmaWVkLCByZWdhcmRsZXNzIG9mIHRoZSBzeXN0ZW0ncyBsb2NhbGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSB0aGUgc3RyaW5nIHRvIHBhcnNlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucyB0byBhZmZlY3QgdGhlIGNyZWF0aW9uXG4gICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRzLnpvbmU9J2xvY2FsJ10gLSB1c2UgdGhpcyB6b25lIGlmIG5vIG9mZnNldCBpcyBzcGVjaWZpZWQgaW4gdGhlIGlucHV0IHN0cmluZyBpdHNlbGYuIFdpbGwgYWxzbyBjb252ZXJ0IHRoZSBEYXRlVGltZSB0byB0aGlzIHpvbmVcbiAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zZXRab25lPWZhbHNlXSAtIG92ZXJyaWRlIHRoZSB6b25lIHdpdGggYSB6b25lIHNwZWNpZmllZCBpbiB0aGUgc3RyaW5nIGl0c2VsZiwgaWYgaXQgc3BlY2lmaWVzIG9uZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlPSdlbi1VUyddIC0gYSBsb2NhbGUgc3RyaW5nIHRvIHVzZSB3aGVuIHBhcnNpbmcuIFdpbGwgYWxzbyBzZXQgdGhlIERhdGVUaW1lIHRvIHRoaXMgbG9jYWxlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHVzZSB3aGVuIHBhcnNpbmcuIFdpbGwgYWxzbyBzZXQgdGhlIHJlc3VsdGluZyBEYXRlVGltZSB0byB0aGlzIG51bWJlcmluZyBzeXN0ZW1cbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMub3V0cHV0Q2FsZW5kYXIgLSB0aGUgb3V0cHV0IGNhbGVuZGFyIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21TUUwoJzIwMTctMDUtMTUnKVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tU1FMKCcyMDE3LTA1LTE1IDA5OjEyOjM0JylcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVNRTCgnMjAxNy0wNS0xNSAwOToxMjozNC4zNDInKVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tU1FMKCcyMDE3LTA1LTE1IDA5OjEyOjM0LjM0MiswNjowMCcpXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21TUUwoJzIwMTctMDUtMTUgMDk6MTI6MzQuMzQyIEFtZXJpY2EvTG9zX0FuZ2VsZXMnKVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tU1FMKCcyMDE3LTA1LTE1IDA5OjEyOjM0LjM0MiBBbWVyaWNhL0xvc19BbmdlbGVzJywgeyBzZXRab25lOiB0cnVlIH0pXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21TUUwoJzIwMTctMDUtMTUgMDk6MTI6MzQuMzQyJywgeyB6b25lOiAnQW1lcmljYS9Mb3NfQW5nZWxlcycgfSlcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVNRTCgnMDk6MTI6MzQuMzQyJylcbiAgICogQHJldHVybiB7RGF0ZVRpbWV9XG4gICAqL1xuICBzdGF0aWMgZnJvbVNRTCh0ZXh0LCBvcHRzID0ge30pIHtcbiAgICBjb25zdCBbdmFscywgcGFyc2VkWm9uZV0gPSBwYXJzZVNRTCh0ZXh0KTtcbiAgICByZXR1cm4gcGFyc2VEYXRhVG9EYXRlVGltZSh2YWxzLCBwYXJzZWRab25lLCBvcHRzLCBcIlNRTFwiLCB0ZXh0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYW4gaW52YWxpZCBEYXRlVGltZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHJlYXNvbiAtIHNpbXBsZSBzdHJpbmcgb2Ygd2h5IHRoaXMgRGF0ZVRpbWUgaXMgaW52YWxpZC4gU2hvdWxkIG5vdCBjb250YWluIHBhcmFtZXRlcnMgb3IgYW55dGhpbmcgZWxzZSBkYXRhLWRlcGVuZGVudFxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2V4cGxhbmF0aW9uPW51bGxdIC0gbG9uZ2VyIGV4cGxhbmF0aW9uLCBtYXkgaW5jbHVkZSBwYXJhbWV0ZXJzIGFuZCBvdGhlciB1c2VmdWwgZGVidWdnaW5nIGluZm9ybWF0aW9uXG4gICAqIEByZXR1cm4ge0RhdGVUaW1lfVxuICAgKi9cbiAgc3RhdGljIGludmFsaWQocmVhc29uLCBleHBsYW5hdGlvbiA9IG51bGwpIHtcbiAgICBpZiAoIXJlYXNvbikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKFwibmVlZCB0byBzcGVjaWZ5IGEgcmVhc29uIHRoZSBEYXRlVGltZSBpcyBpbnZhbGlkXCIpO1xuICAgIH1cblxuICAgIGNvbnN0IGludmFsaWQgPSByZWFzb24gaW5zdGFuY2VvZiBJbnZhbGlkID8gcmVhc29uIDogbmV3IEludmFsaWQocmVhc29uLCBleHBsYW5hdGlvbik7XG5cbiAgICBpZiAoU2V0dGluZ3MudGhyb3dPbkludmFsaWQpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkRGF0ZVRpbWVFcnJvcihpbnZhbGlkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5ldyBEYXRlVGltZSh7IGludmFsaWQgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGFuIG9iamVjdCBpcyBhbiBpbnN0YW5jZSBvZiBEYXRlVGltZS4gV29ya3MgYWNyb3NzIGNvbnRleHQgYm91bmRhcmllc1xuICAgKiBAcGFyYW0ge29iamVjdH0gb1xuICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgKi9cbiAgc3RhdGljIGlzRGF0ZVRpbWUobykge1xuICAgIHJldHVybiAobyAmJiBvLmlzTHV4b25EYXRlVGltZSkgfHwgZmFsc2U7XG4gIH1cblxuICAvLyBJTkZPXG5cbiAgLyoqXG4gICAqIEdldCB0aGUgdmFsdWUgb2YgdW5pdC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHVuaXQgLSBhIHVuaXQgc3VjaCBhcyAnbWludXRlJyBvciAnZGF5J1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCA3LCA0KS5nZXQoJ21vbnRoJyk7IC8vPT4gN1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCA3LCA0KS5nZXQoJ2RheScpOyAvLz0+IDRcbiAgICogQHJldHVybiB7bnVtYmVyfVxuICAgKi9cbiAgZ2V0KHVuaXQpIHtcbiAgICByZXR1cm4gdGhpc1t1bml0XTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIERhdGVUaW1lIGlzIHZhbGlkLiBJbnZhbGlkIERhdGVUaW1lcyBvY2N1ciB3aGVuOlxuICAgKiAqIFRoZSBEYXRlVGltZSB3YXMgY3JlYXRlZCBmcm9tIGludmFsaWQgY2FsZW5kYXIgaW5mb3JtYXRpb24sIHN1Y2ggYXMgdGhlIDEzdGggbW9udGggb3IgRmVicnVhcnkgMzBcbiAgICogKiBUaGUgRGF0ZVRpbWUgd2FzIGNyZWF0ZWQgYnkgYW4gb3BlcmF0aW9uIG9uIGFub3RoZXIgaW52YWxpZCBkYXRlXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKi9cbiAgZ2V0IGlzVmFsaWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW52YWxpZCA9PT0gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIGVycm9yIGNvZGUgaWYgdGhpcyBEYXRlVGltZSBpcyBpbnZhbGlkLCBvciBudWxsIGlmIHRoZSBEYXRlVGltZSBpcyB2YWxpZFxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKi9cbiAgZ2V0IGludmFsaWRSZWFzb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuaW52YWxpZCA/IHRoaXMuaW52YWxpZC5yZWFzb24gOiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gZXhwbGFuYXRpb24gb2Ygd2h5IHRoaXMgRGF0ZVRpbWUgYmVjYW1lIGludmFsaWQsIG9yIG51bGwgaWYgdGhlIERhdGVUaW1lIGlzIHZhbGlkXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBnZXQgaW52YWxpZEV4cGxhbmF0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLmludmFsaWQgPyB0aGlzLmludmFsaWQuZXhwbGFuYXRpb24gOiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgbG9jYWxlIG9mIGEgRGF0ZVRpbWUsIHN1Y2ggJ2VuLUdCJy4gVGhlIGxvY2FsZSBpcyB1c2VkIHdoZW4gZm9ybWF0dGluZyB0aGUgRGF0ZVRpbWVcbiAgICpcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIGdldCBsb2NhbGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMubG9jLmxvY2FsZSA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBudW1iZXJpbmcgc3lzdGVtIG9mIGEgRGF0ZVRpbWUsIHN1Y2ggJ2JlbmcnLiBUaGUgbnVtYmVyaW5nIHN5c3RlbSBpcyB1c2VkIHdoZW4gZm9ybWF0dGluZyB0aGUgRGF0ZVRpbWVcbiAgICpcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIGdldCBudW1iZXJpbmdTeXN0ZW0oKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMubG9jLm51bWJlcmluZ1N5c3RlbSA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBvdXRwdXQgY2FsZW5kYXIgb2YgYSBEYXRlVGltZSwgc3VjaCAnaXNsYW1pYycuIFRoZSBvdXRwdXQgY2FsZW5kYXIgaXMgdXNlZCB3aGVuIGZvcm1hdHRpbmcgdGhlIERhdGVUaW1lXG4gICAqXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBnZXQgb3V0cHV0Q2FsZW5kYXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMubG9jLm91dHB1dENhbGVuZGFyIDogbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHRpbWUgem9uZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBEYXRlVGltZS5cbiAgICogQHR5cGUge1pvbmV9XG4gICAqL1xuICBnZXQgem9uZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fem9uZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIG5hbWUgb2YgdGhlIHRpbWUgem9uZS5cbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIGdldCB6b25lTmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy56b25lLm5hbWUgOiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgeWVhclxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCA1LCAyNSkueWVhciAvLz0+IDIwMTdcbiAgICogQHR5cGUge251bWJlcn1cbiAgICovXG4gIGdldCB5ZWFyKCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmMueWVhciA6IE5hTjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHF1YXJ0ZXJcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUpLnF1YXJ0ZXIgLy89PiAyXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqL1xuICBnZXQgcXVhcnRlcigpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gTWF0aC5jZWlsKHRoaXMuYy5tb250aCAvIDMpIDogTmFOO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgbW9udGggKDEtMTIpLlxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCA1LCAyNSkubW9udGggLy89PiA1XG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqL1xuICBnZXQgbW9udGgoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMuYy5tb250aCA6IE5hTjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGRheSBvZiB0aGUgbW9udGggKDEtMzBpc2gpLlxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCA1LCAyNSkuZGF5IC8vPT4gMjVcbiAgICogQHR5cGUge251bWJlcn1cbiAgICovXG4gIGdldCBkYXkoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMuYy5kYXkgOiBOYU47XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBob3VyIG9mIHRoZSBkYXkgKDAtMjMpLlxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCA1LCAyNSwgOSkuaG91ciAvLz0+IDlcbiAgICogQHR5cGUge251bWJlcn1cbiAgICovXG4gIGdldCBob3VyKCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmMuaG91ciA6IE5hTjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIG1pbnV0ZSBvZiB0aGUgaG91ciAoMC01OSkuXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1LCA5LCAzMCkubWludXRlIC8vPT4gMzBcbiAgICogQHR5cGUge251bWJlcn1cbiAgICovXG4gIGdldCBtaW51dGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMuYy5taW51dGUgOiBOYU47XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBzZWNvbmQgb2YgdGhlIG1pbnV0ZSAoMC01OSkuXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1LCA5LCAzMCwgNTIpLnNlY29uZCAvLz0+IDUyXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqL1xuICBnZXQgc2Vjb25kKCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmMuc2Vjb25kIDogTmFOO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgbWlsbGlzZWNvbmQgb2YgdGhlIHNlY29uZCAoMC05OTkpLlxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCA1LCAyNSwgOSwgMzAsIDUyLCA2NTQpLm1pbGxpc2Vjb25kIC8vPT4gNjU0XG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqL1xuICBnZXQgbWlsbGlzZWNvbmQoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMuYy5taWxsaXNlY29uZCA6IE5hTjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHdlZWsgeWVhclxuICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGVcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMTIsIDMxKS53ZWVrWWVhciAvLz0+IDIwMTVcbiAgICogQHR5cGUge251bWJlcn1cbiAgICovXG4gIGdldCB3ZWVrWWVhcigpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gcG9zc2libHlDYWNoZWRXZWVrRGF0YSh0aGlzKS53ZWVrWWVhciA6IE5hTjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHdlZWsgbnVtYmVyIG9mIHRoZSB3ZWVrIHllYXIgKDEtNTJpc2gpLlxuICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGVcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUpLndlZWtOdW1iZXIgLy89PiAyMVxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKi9cbiAgZ2V0IHdlZWtOdW1iZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHBvc3NpYmx5Q2FjaGVkV2Vla0RhdGEodGhpcykud2Vla051bWJlciA6IE5hTjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGRheSBvZiB0aGUgd2Vlay5cbiAgICogMSBpcyBNb25kYXkgYW5kIDcgaXMgU3VuZGF5XG4gICAqIEBzZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPX3dlZWtfZGF0ZVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAxMSwgMzEpLndlZWtkYXkgLy89PiA0XG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqL1xuICBnZXQgd2Vla2RheSgpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gcG9zc2libHlDYWNoZWRXZWVrRGF0YSh0aGlzKS53ZWVrZGF5IDogTmFOO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgb3JkaW5hbCAobWVhbmluZyB0aGUgZGF5IG9mIHRoZSB5ZWFyKVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCA1LCAyNSkub3JkaW5hbCAvLz0+IDE0NVxuICAgKiBAdHlwZSB7bnVtYmVyfERhdGVUaW1lfVxuICAgKi9cbiAgZ2V0IG9yZGluYWwoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IGdyZWdvcmlhblRvT3JkaW5hbCh0aGlzLmMpLm9yZGluYWwgOiBOYU47XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBodW1hbiByZWFkYWJsZSBzaG9ydCBtb250aCBuYW1lLCBzdWNoIGFzICdPY3QnLlxuICAgKiBEZWZhdWx0cyB0byB0aGUgc3lzdGVtJ3MgbG9jYWxlIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWRcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgMTAsIDMwKS5tb250aFNob3J0IC8vPT4gT2N0XG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBnZXQgbW9udGhTaG9ydCgpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gSW5mby5tb250aHMoXCJzaG9ydFwiLCB7IGxvY09iajogdGhpcy5sb2MgfSlbdGhpcy5tb250aCAtIDFdIDogbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGh1bWFuIHJlYWRhYmxlIGxvbmcgbW9udGggbmFtZSwgc3VjaCBhcyAnT2N0b2JlcicuXG4gICAqIERlZmF1bHRzIHRvIHRoZSBzeXN0ZW0ncyBsb2NhbGUgaWYgbm8gbG9jYWxlIGhhcyBiZWVuIHNwZWNpZmllZFxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAxMCwgMzApLm1vbnRoTG9uZyAvLz0+IE9jdG9iZXJcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIGdldCBtb250aExvbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IEluZm8ubW9udGhzKFwibG9uZ1wiLCB7IGxvY09iajogdGhpcy5sb2MgfSlbdGhpcy5tb250aCAtIDFdIDogbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGh1bWFuIHJlYWRhYmxlIHNob3J0IHdlZWtkYXksIHN1Y2ggYXMgJ01vbicuXG4gICAqIERlZmF1bHRzIHRvIHRoZSBzeXN0ZW0ncyBsb2NhbGUgaWYgbm8gbG9jYWxlIGhhcyBiZWVuIHNwZWNpZmllZFxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAxMCwgMzApLndlZWtkYXlTaG9ydCAvLz0+IE1vblxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKi9cbiAgZ2V0IHdlZWtkYXlTaG9ydCgpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gSW5mby53ZWVrZGF5cyhcInNob3J0XCIsIHsgbG9jT2JqOiB0aGlzLmxvYyB9KVt0aGlzLndlZWtkYXkgLSAxXSA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBodW1hbiByZWFkYWJsZSBsb25nIHdlZWtkYXksIHN1Y2ggYXMgJ01vbmRheScuXG4gICAqIERlZmF1bHRzIHRvIHRoZSBzeXN0ZW0ncyBsb2NhbGUgaWYgbm8gbG9jYWxlIGhhcyBiZWVuIHNwZWNpZmllZFxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAxMCwgMzApLndlZWtkYXlMb25nIC8vPT4gTW9uZGF5XG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBnZXQgd2Vla2RheUxvbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IEluZm8ud2Vla2RheXMoXCJsb25nXCIsIHsgbG9jT2JqOiB0aGlzLmxvYyB9KVt0aGlzLndlZWtkYXkgLSAxXSA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBVVEMgb2Zmc2V0IG9mIHRoaXMgRGF0ZVRpbWUgaW4gbWludXRlc1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5vZmZzZXQgLy89PiAtMjQwXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygpLm9mZnNldCAvLz0+IDBcbiAgICogQHR5cGUge251bWJlcn1cbiAgICovXG4gIGdldCBvZmZzZXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/ICt0aGlzLm8gOiBOYU47XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBzaG9ydCBodW1hbiBuYW1lIGZvciB0aGUgem9uZSdzIGN1cnJlbnQgb2Zmc2V0LCBmb3IgZXhhbXBsZSBcIkVTVFwiIG9yIFwiRURUXCIuXG4gICAqIERlZmF1bHRzIHRvIHRoZSBzeXN0ZW0ncyBsb2NhbGUgaWYgbm8gbG9jYWxlIGhhcyBiZWVuIHNwZWNpZmllZFxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKi9cbiAgZ2V0IG9mZnNldE5hbWVTaG9ydCgpIHtcbiAgICBpZiAodGhpcy5pc1ZhbGlkKSB7XG4gICAgICByZXR1cm4gdGhpcy56b25lLm9mZnNldE5hbWUodGhpcy50cywge1xuICAgICAgICBmb3JtYXQ6IFwic2hvcnRcIixcbiAgICAgICAgbG9jYWxlOiB0aGlzLmxvY2FsZSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBsb25nIGh1bWFuIG5hbWUgZm9yIHRoZSB6b25lJ3MgY3VycmVudCBvZmZzZXQsIGZvciBleGFtcGxlIFwiRWFzdGVybiBTdGFuZGFyZCBUaW1lXCIgb3IgXCJFYXN0ZXJuIERheWxpZ2h0IFRpbWVcIi5cbiAgICogRGVmYXVsdHMgdG8gdGhlIHN5c3RlbSdzIGxvY2FsZSBpZiBubyBsb2NhbGUgaGFzIGJlZW4gc3BlY2lmaWVkXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBnZXQgb2Zmc2V0TmFtZUxvbmcoKSB7XG4gICAgaWYgKHRoaXMuaXNWYWxpZCkge1xuICAgICAgcmV0dXJuIHRoaXMuem9uZS5vZmZzZXROYW1lKHRoaXMudHMsIHtcbiAgICAgICAgZm9ybWF0OiBcImxvbmdcIixcbiAgICAgICAgbG9jYWxlOiB0aGlzLmxvY2FsZSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IHdoZXRoZXIgdGhpcyB6b25lJ3Mgb2Zmc2V0IGV2ZXIgY2hhbmdlcywgYXMgaW4gYSBEU1QuXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKi9cbiAgZ2V0IGlzT2Zmc2V0Rml4ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMuem9uZS5pc1VuaXZlcnNhbCA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHdoZXRoZXIgdGhlIERhdGVUaW1lIGlzIGluIGEgRFNULlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICovXG4gIGdldCBpc0luRFNUKCkge1xuICAgIGlmICh0aGlzLmlzT2Zmc2V0Rml4ZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgdGhpcy5vZmZzZXQgPiB0aGlzLnNldCh7IG1vbnRoOiAxLCBkYXk6IDEgfSkub2Zmc2V0IHx8XG4gICAgICAgIHRoaXMub2Zmc2V0ID4gdGhpcy5zZXQoeyBtb250aDogNSB9KS5vZmZzZXRcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdHJ1ZSBpZiB0aGlzIERhdGVUaW1lIGlzIGluIGEgbGVhcCB5ZWFyLCBmYWxzZSBvdGhlcndpc2VcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNikuaXNJbkxlYXBZZWFyIC8vPT4gdHJ1ZVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDEzKS5pc0luTGVhcFllYXIgLy89PiBmYWxzZVxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICovXG4gIGdldCBpc0luTGVhcFllYXIoKSB7XG4gICAgcmV0dXJuIGlzTGVhcFllYXIodGhpcy55ZWFyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZGF5cyBpbiB0aGlzIERhdGVUaW1lJ3MgbW9udGhcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNiwgMikuZGF5c0luTW9udGggLy89PiAyOVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE2LCAzKS5kYXlzSW5Nb250aCAvLz0+IDMxXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqL1xuICBnZXQgZGF5c0luTW9udGgoKSB7XG4gICAgcmV0dXJuIGRheXNJbk1vbnRoKHRoaXMueWVhciwgdGhpcy5tb250aCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIGRheXMgaW4gdGhpcyBEYXRlVGltZSdzIHllYXJcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNikuZGF5c0luWWVhciAvLz0+IDM2NlxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDEzKS5kYXlzSW5ZZWFyIC8vPT4gMzY1XG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqL1xuICBnZXQgZGF5c0luWWVhcigpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gZGF5c0luWWVhcih0aGlzLnllYXIpIDogTmFOO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIG51bWJlciBvZiB3ZWVrcyBpbiB0aGlzIERhdGVUaW1lJ3MgeWVhclxuICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGVcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAwNCkud2Vla3NJbldlZWtZZWFyIC8vPT4gNTNcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxMykud2Vla3NJbldlZWtZZWFyIC8vPT4gNTJcbiAgICogQHR5cGUge251bWJlcn1cbiAgICovXG4gIGdldCB3ZWVrc0luV2Vla1llYXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHdlZWtzSW5XZWVrWWVhcih0aGlzLndlZWtZZWFyKSA6IE5hTjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSByZXNvbHZlZCBJbnRsIG9wdGlvbnMgZm9yIHRoaXMgRGF0ZVRpbWUuXG4gICAqIFRoaXMgaXMgdXNlZnVsIGluIHVuZGVyc3RhbmRpbmcgdGhlIGJlaGF2aW9yIG9mIGZvcm1hdHRpbmcgbWV0aG9kc1xuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIHRoZSBzYW1lIG9wdGlvbnMgYXMgdG9Mb2NhbGVTdHJpbmdcbiAgICogQHJldHVybiB7T2JqZWN0fVxuICAgKi9cbiAgcmVzb2x2ZWRMb2NhbGVPcHRpb25zKG9wdHMgPSB7fSkge1xuICAgIGNvbnN0IHsgbG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIGNhbGVuZGFyIH0gPSBGb3JtYXR0ZXIuY3JlYXRlKFxuICAgICAgdGhpcy5sb2MuY2xvbmUob3B0cyksXG4gICAgICBvcHRzXG4gICAgKS5yZXNvbHZlZE9wdGlvbnModGhpcyk7XG4gICAgcmV0dXJuIHsgbG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG91dHB1dENhbGVuZGFyOiBjYWxlbmRhciB9O1xuICB9XG5cbiAgLy8gVFJBTlNGT1JNXG5cbiAgLyoqXG4gICAqIFwiU2V0XCIgdGhlIERhdGVUaW1lJ3Mgem9uZSB0byBVVEMuIFJldHVybnMgYSBuZXdseS1jb25zdHJ1Y3RlZCBEYXRlVGltZS5cbiAgICpcbiAgICogRXF1aXZhbGVudCB0byB7QGxpbmsgRGF0ZVRpbWUjc2V0Wm9uZX0oJ3V0YycpXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbb2Zmc2V0PTBdIC0gb3B0aW9uYWxseSwgYW4gb2Zmc2V0IGZyb20gVVRDIGluIG1pbnV0ZXNcbiAgICogQHBhcmFtIHtPYmplY3R9IFtvcHRzPXt9XSAtIG9wdGlvbnMgdG8gcGFzcyB0byBgc2V0Wm9uZSgpYFxuICAgKiBAcmV0dXJuIHtEYXRlVGltZX1cbiAgICovXG4gIHRvVVRDKG9mZnNldCA9IDAsIG9wdHMgPSB7fSkge1xuICAgIHJldHVybiB0aGlzLnNldFpvbmUoRml4ZWRPZmZzZXRab25lLmluc3RhbmNlKG9mZnNldCksIG9wdHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFwiU2V0XCIgdGhlIERhdGVUaW1lJ3Mgem9uZSB0byB0aGUgaG9zdCdzIGxvY2FsIHpvbmUuIFJldHVybnMgYSBuZXdseS1jb25zdHJ1Y3RlZCBEYXRlVGltZS5cbiAgICpcbiAgICogRXF1aXZhbGVudCB0byBgc2V0Wm9uZSgnbG9jYWwnKWBcbiAgICogQHJldHVybiB7RGF0ZVRpbWV9XG4gICAqL1xuICB0b0xvY2FsKCkge1xuICAgIHJldHVybiB0aGlzLnNldFpvbmUoU2V0dGluZ3MuZGVmYXVsdFpvbmUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFwiU2V0XCIgdGhlIERhdGVUaW1lJ3Mgem9uZSB0byBzcGVjaWZpZWQgem9uZS4gUmV0dXJucyBhIG5ld2x5LWNvbnN0cnVjdGVkIERhdGVUaW1lLlxuICAgKlxuICAgKiBCeSBkZWZhdWx0LCB0aGUgc2V0dGVyIGtlZXBzIHRoZSB1bmRlcmx5aW5nIHRpbWUgdGhlIHNhbWUgKGFzIGluLCB0aGUgc2FtZSB0aW1lc3RhbXApLCBidXQgdGhlIG5ldyBpbnN0YW5jZSB3aWxsIHJlcG9ydCBkaWZmZXJlbnQgbG9jYWwgdGltZXMgYW5kIGNvbnNpZGVyIERTVHMgd2hlbiBtYWtpbmcgY29tcHV0YXRpb25zLCBhcyB3aXRoIHtAbGluayBEYXRlVGltZSNwbHVzfS4gWW91IG1heSB3aXNoIHRvIHVzZSB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbH0gYW5kIHtAbGluayBEYXRlVGltZSN0b1VUQ30gd2hpY2ggcHJvdmlkZSBzaW1wbGUgY29udmVuaWVuY2Ugd3JhcHBlcnMgZm9yIGNvbW1vbmx5IHVzZWQgem9uZXMuXG4gICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFt6b25lPSdsb2NhbCddIC0gYSB6b25lIGlkZW50aWZpZXIuIEFzIGEgc3RyaW5nLCB0aGF0IGNhbiBiZSBhbnkgSUFOQSB6b25lIHN1cHBvcnRlZCBieSB0aGUgaG9zdCBlbnZpcm9ubWVudCwgb3IgYSBmaXhlZC1vZmZzZXQgbmFtZSBvZiB0aGUgZm9ybSAnVVRDKzMnLCBvciB0aGUgc3RyaW5ncyAnbG9jYWwnIG9yICd1dGMnLiBZb3UgbWF5IGFsc28gc3VwcGx5IGFuIGluc3RhbmNlIG9mIGEge0BsaW5rIERhdGVUaW1lI1pvbmV9IGNsYXNzLlxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnNcbiAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5rZWVwTG9jYWxUaW1lPWZhbHNlXSAtIElmIHRydWUsIGFkanVzdCB0aGUgdW5kZXJseWluZyB0aW1lIHNvIHRoYXQgdGhlIGxvY2FsIHRpbWUgc3RheXMgdGhlIHNhbWUsIGJ1dCBpbiB0aGUgdGFyZ2V0IHpvbmUuIFlvdSBzaG91bGQgcmFyZWx5IG5lZWQgdGhpcy5cbiAgICogQHJldHVybiB7RGF0ZVRpbWV9XG4gICAqL1xuICBzZXRab25lKHpvbmUsIHsga2VlcExvY2FsVGltZSA9IGZhbHNlLCBrZWVwQ2FsZW5kYXJUaW1lID0gZmFsc2UgfSA9IHt9KSB7XG4gICAgem9uZSA9IG5vcm1hbGl6ZVpvbmUoem9uZSwgU2V0dGluZ3MuZGVmYXVsdFpvbmUpO1xuICAgIGlmICh6b25lLmVxdWFscyh0aGlzLnpvbmUpKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9IGVsc2UgaWYgKCF6b25lLmlzVmFsaWQpIHtcbiAgICAgIHJldHVybiBEYXRlVGltZS5pbnZhbGlkKHVuc3VwcG9ydGVkWm9uZSh6b25lKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBuZXdUUyA9IHRoaXMudHM7XG4gICAgICBpZiAoa2VlcExvY2FsVGltZSB8fCBrZWVwQ2FsZW5kYXJUaW1lKSB7XG4gICAgICAgIGNvbnN0IG9mZnNldEd1ZXNzID0gem9uZS5vZmZzZXQodGhpcy50cyk7XG4gICAgICAgIGNvbnN0IGFzT2JqID0gdGhpcy50b09iamVjdCgpO1xuICAgICAgICBbbmV3VFNdID0gb2JqVG9UUyhhc09iaiwgb2Zmc2V0R3Vlc3MsIHpvbmUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNsb25lKHRoaXMsIHsgdHM6IG5ld1RTLCB6b25lIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBcIlNldFwiIHRoZSBsb2NhbGUsIG51bWJlcmluZ1N5c3RlbSwgb3Igb3V0cHV0Q2FsZW5kYXIuIFJldHVybnMgYSBuZXdseS1jb25zdHJ1Y3RlZCBEYXRlVGltZS5cbiAgICogQHBhcmFtIHtPYmplY3R9IHByb3BlcnRpZXMgLSB0aGUgcHJvcGVydGllcyB0byBzZXRcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUpLnJlY29uZmlndXJlKHsgbG9jYWxlOiAnZW4tR0InIH0pXG4gICAqIEByZXR1cm4ge0RhdGVUaW1lfVxuICAgKi9cbiAgcmVjb25maWd1cmUoeyBsb2NhbGUsIG51bWJlcmluZ1N5c3RlbSwgb3V0cHV0Q2FsZW5kYXIgfSA9IHt9KSB7XG4gICAgY29uc3QgbG9jID0gdGhpcy5sb2MuY2xvbmUoeyBsb2NhbGUsIG51bWJlcmluZ1N5c3RlbSwgb3V0cHV0Q2FsZW5kYXIgfSk7XG4gICAgcmV0dXJuIGNsb25lKHRoaXMsIHsgbG9jIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFwiU2V0XCIgdGhlIGxvY2FsZS4gUmV0dXJucyBhIG5ld2x5LWNvbnN0cnVjdGVkIERhdGVUaW1lLlxuICAgKiBKdXN0IGEgY29udmVuaWVudCBhbGlhcyBmb3IgcmVjb25maWd1cmUoeyBsb2NhbGUgfSlcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUpLnNldExvY2FsZSgnZW4tR0InKVxuICAgKiBAcmV0dXJuIHtEYXRlVGltZX1cbiAgICovXG4gIHNldExvY2FsZShsb2NhbGUpIHtcbiAgICByZXR1cm4gdGhpcy5yZWNvbmZpZ3VyZSh7IGxvY2FsZSB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBcIlNldFwiIHRoZSB2YWx1ZXMgb2Ygc3BlY2lmaWVkIHVuaXRzLiBSZXR1cm5zIGEgbmV3bHktY29uc3RydWN0ZWQgRGF0ZVRpbWUuXG4gICAqIFlvdSBjYW4gb25seSBzZXQgdW5pdHMgd2l0aCB0aGlzIG1ldGhvZDsgZm9yIFwic2V0dGluZ1wiIG1ldGFkYXRhLCBzZWUge0BsaW5rIERhdGVUaW1lI3JlY29uZmlndXJlfSBhbmQge0BsaW5rIERhdGVUaW1lI3NldFpvbmV9LlxuICAgKiBAcGFyYW0ge09iamVjdH0gdmFsdWVzIC0gYSBtYXBwaW5nIG9mIHVuaXRzIHRvIG51bWJlcnNcbiAgICogQGV4YW1wbGUgZHQuc2V0KHsgeWVhcjogMjAxNyB9KVxuICAgKiBAZXhhbXBsZSBkdC5zZXQoeyBob3VyOiA4LCBtaW51dGU6IDMwIH0pXG4gICAqIEBleGFtcGxlIGR0LnNldCh7IHdlZWtkYXk6IDUgfSlcbiAgICogQGV4YW1wbGUgZHQuc2V0KHsgeWVhcjogMjAwNSwgb3JkaW5hbDogMjM0IH0pXG4gICAqIEByZXR1cm4ge0RhdGVUaW1lfVxuICAgKi9cbiAgc2V0KHZhbHVlcykge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpcztcblxuICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSBub3JtYWxpemVPYmplY3QodmFsdWVzLCBub3JtYWxpemVVbml0KSxcbiAgICAgIHNldHRpbmdXZWVrU3R1ZmYgPVxuICAgICAgICAhaXNVbmRlZmluZWQobm9ybWFsaXplZC53ZWVrWWVhcikgfHxcbiAgICAgICAgIWlzVW5kZWZpbmVkKG5vcm1hbGl6ZWQud2Vla051bWJlcikgfHxcbiAgICAgICAgIWlzVW5kZWZpbmVkKG5vcm1hbGl6ZWQud2Vla2RheSksXG4gICAgICBjb250YWluc09yZGluYWwgPSAhaXNVbmRlZmluZWQobm9ybWFsaXplZC5vcmRpbmFsKSxcbiAgICAgIGNvbnRhaW5zR3JlZ29yWWVhciA9ICFpc1VuZGVmaW5lZChub3JtYWxpemVkLnllYXIpLFxuICAgICAgY29udGFpbnNHcmVnb3JNRCA9ICFpc1VuZGVmaW5lZChub3JtYWxpemVkLm1vbnRoKSB8fCAhaXNVbmRlZmluZWQobm9ybWFsaXplZC5kYXkpLFxuICAgICAgY29udGFpbnNHcmVnb3IgPSBjb250YWluc0dyZWdvclllYXIgfHwgY29udGFpbnNHcmVnb3JNRCxcbiAgICAgIGRlZmluaXRlV2Vla0RlZiA9IG5vcm1hbGl6ZWQud2Vla1llYXIgfHwgbm9ybWFsaXplZC53ZWVrTnVtYmVyO1xuXG4gICAgaWYgKChjb250YWluc0dyZWdvciB8fCBjb250YWluc09yZGluYWwpICYmIGRlZmluaXRlV2Vla0RlZikge1xuICAgICAgdGhyb3cgbmV3IENvbmZsaWN0aW5nU3BlY2lmaWNhdGlvbkVycm9yKFxuICAgICAgICBcIkNhbid0IG1peCB3ZWVrWWVhci93ZWVrTnVtYmVyIHVuaXRzIHdpdGggeWVhci9tb250aC9kYXkgb3Igb3JkaW5hbHNcIlxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoY29udGFpbnNHcmVnb3JNRCAmJiBjb250YWluc09yZGluYWwpIHtcbiAgICAgIHRocm93IG5ldyBDb25mbGljdGluZ1NwZWNpZmljYXRpb25FcnJvcihcIkNhbid0IG1peCBvcmRpbmFsIGRhdGVzIHdpdGggbW9udGgvZGF5XCIpO1xuICAgIH1cblxuICAgIGxldCBtaXhlZDtcbiAgICBpZiAoc2V0dGluZ1dlZWtTdHVmZikge1xuICAgICAgbWl4ZWQgPSB3ZWVrVG9HcmVnb3JpYW4oeyAuLi5ncmVnb3JpYW5Ub1dlZWsodGhpcy5jKSwgLi4ubm9ybWFsaXplZCB9KTtcbiAgICB9IGVsc2UgaWYgKCFpc1VuZGVmaW5lZChub3JtYWxpemVkLm9yZGluYWwpKSB7XG4gICAgICBtaXhlZCA9IG9yZGluYWxUb0dyZWdvcmlhbih7IC4uLmdyZWdvcmlhblRvT3JkaW5hbCh0aGlzLmMpLCAuLi5ub3JtYWxpemVkIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBtaXhlZCA9IHsgLi4udGhpcy50b09iamVjdCgpLCAuLi5ub3JtYWxpemVkIH07XG5cbiAgICAgIC8vIGlmIHdlIGRpZG4ndCBzZXQgdGhlIGRheSBidXQgd2UgZW5kZWQgdXAgb24gYW4gb3ZlcmZsb3cgZGF0ZSxcbiAgICAgIC8vIHVzZSB0aGUgbGFzdCBkYXkgb2YgdGhlIHJpZ2h0IG1vbnRoXG4gICAgICBpZiAoaXNVbmRlZmluZWQobm9ybWFsaXplZC5kYXkpKSB7XG4gICAgICAgIG1peGVkLmRheSA9IE1hdGgubWluKGRheXNJbk1vbnRoKG1peGVkLnllYXIsIG1peGVkLm1vbnRoKSwgbWl4ZWQuZGF5KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBbdHMsIG9dID0gb2JqVG9UUyhtaXhlZCwgdGhpcy5vLCB0aGlzLnpvbmUpO1xuICAgIHJldHVybiBjbG9uZSh0aGlzLCB7IHRzLCBvIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIHBlcmlvZCBvZiB0aW1lIHRvIHRoaXMgRGF0ZVRpbWUgYW5kIHJldHVybiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lXG4gICAqXG4gICAqIEFkZGluZyBob3VycywgbWludXRlcywgc2Vjb25kcywgb3IgbWlsbGlzZWNvbmRzIGluY3JlYXNlcyB0aGUgdGltZXN0YW1wIGJ5IHRoZSByaWdodCBudW1iZXIgb2YgbWlsbGlzZWNvbmRzLiBBZGRpbmcgZGF5cywgbW9udGhzLCBvciB5ZWFycyBzaGlmdHMgdGhlIGNhbGVuZGFyLCBhY2NvdW50aW5nIGZvciBEU1RzIGFuZCBsZWFwIHllYXJzIGFsb25nIHRoZSB3YXkuIFRodXMsIGBkdC5wbHVzKHsgaG91cnM6IDI0IH0pYCBtYXkgcmVzdWx0IGluIGEgZGlmZmVyZW50IHRpbWUgdGhhbiBgZHQucGx1cyh7IGRheXM6IDEgfSlgIGlmIHRoZXJlJ3MgYSBEU1Qgc2hpZnQgaW4gYmV0d2Vlbi5cbiAgICogQHBhcmFtIHtEdXJhdGlvbnxPYmplY3R8bnVtYmVyfSBkdXJhdGlvbiAtIFRoZSBhbW91bnQgdG8gYWRkLiBFaXRoZXIgYSBMdXhvbiBEdXJhdGlvbiwgYSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzLCB0aGUgb2JqZWN0IGFyZ3VtZW50IHRvIER1cmF0aW9uLmZyb21PYmplY3QoKVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5wbHVzKDEyMykgLy9+PiBpbiAxMjMgbWlsbGlzZWNvbmRzXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnBsdXMoeyBtaW51dGVzOiAxNSB9KSAvL34+IGluIDE1IG1pbnV0ZXNcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkucGx1cyh7IGRheXM6IDEgfSkgLy9+PiB0aGlzIHRpbWUgdG9tb3Jyb3dcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkucGx1cyh7IGRheXM6IC0xIH0pIC8vfj4gdGhpcyB0aW1lIHllc3RlcmRheVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5wbHVzKHsgaG91cnM6IDMsIG1pbnV0ZXM6IDEzIH0pIC8vfj4gaW4gMyBociwgMTMgbWluXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnBsdXMoRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAzLCBtaW51dGVzOiAxMyB9KSkgLy9+PiBpbiAzIGhyLCAxMyBtaW5cbiAgICogQHJldHVybiB7RGF0ZVRpbWV9XG4gICAqL1xuICBwbHVzKGR1cmF0aW9uKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzO1xuICAgIGNvbnN0IGR1ciA9IER1cmF0aW9uLmZyb21EdXJhdGlvbkxpa2UoZHVyYXRpb24pO1xuICAgIHJldHVybiBjbG9uZSh0aGlzLCBhZGp1c3RUaW1lKHRoaXMsIGR1cikpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN1YnRyYWN0IGEgcGVyaW9kIG9mIHRpbWUgdG8gdGhpcyBEYXRlVGltZSBhbmQgcmV0dXJuIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWVcbiAgICogU2VlIHtAbGluayBEYXRlVGltZSNwbHVzfVxuICAgKiBAcGFyYW0ge0R1cmF0aW9ufE9iamVjdHxudW1iZXJ9IGR1cmF0aW9uIC0gVGhlIGFtb3VudCB0byBzdWJ0cmFjdC4gRWl0aGVyIGEgTHV4b24gRHVyYXRpb24sIGEgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcywgdGhlIG9iamVjdCBhcmd1bWVudCB0byBEdXJhdGlvbi5mcm9tT2JqZWN0KClcbiAgIEByZXR1cm4ge0RhdGVUaW1lfVxuICAgKi9cbiAgbWludXMoZHVyYXRpb24pIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7XG4gICAgY29uc3QgZHVyID0gRHVyYXRpb24uZnJvbUR1cmF0aW9uTGlrZShkdXJhdGlvbikubmVnYXRlKCk7XG4gICAgcmV0dXJuIGNsb25lKHRoaXMsIGFkanVzdFRpbWUodGhpcywgZHVyKSk7XG4gIH1cblxuICAvKipcbiAgICogXCJTZXRcIiB0aGlzIERhdGVUaW1lIHRvIHRoZSBiZWdpbm5pbmcgb2YgYSB1bml0IG9mIHRpbWUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB1bml0IC0gVGhlIHVuaXQgdG8gZ28gdG8gdGhlIGJlZ2lubmluZyBvZi4gQ2FuIGJlICd5ZWFyJywgJ3F1YXJ0ZXInLCAnbW9udGgnLCAnd2VlaycsICdkYXknLCAnaG91cicsICdtaW51dGUnLCAnc2Vjb25kJywgb3IgJ21pbGxpc2Vjb25kJy5cbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMywgMykuc3RhcnRPZignbW9udGgnKS50b0lTT0RhdGUoKTsgLy89PiAnMjAxNC0wMy0wMSdcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMywgMykuc3RhcnRPZigneWVhcicpLnRvSVNPRGF0ZSgpOyAvLz0+ICcyMDE0LTAxLTAxJ1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAzLCAzKS5zdGFydE9mKCd3ZWVrJykudG9JU09EYXRlKCk7IC8vPT4gJzIwMTQtMDMtMDMnLCB3ZWVrcyBhbHdheXMgc3RhcnQgb24gTW9uZGF5c1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAzLCAzLCA1LCAzMCkuc3RhcnRPZignZGF5JykudG9JU09UaW1lKCk7IC8vPT4gJzAwOjAwLjAwMC0wNTowMCdcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMywgMywgNSwgMzApLnN0YXJ0T2YoJ2hvdXInKS50b0lTT1RpbWUoKTsgLy89PiAnMDU6MDA6MDAuMDAwLTA1OjAwJ1xuICAgKiBAcmV0dXJuIHtEYXRlVGltZX1cbiAgICovXG4gIHN0YXJ0T2YodW5pdCkge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpcztcbiAgICBjb25zdCBvID0ge30sXG4gICAgICBub3JtYWxpemVkVW5pdCA9IER1cmF0aW9uLm5vcm1hbGl6ZVVuaXQodW5pdCk7XG4gICAgc3dpdGNoIChub3JtYWxpemVkVW5pdCkge1xuICAgICAgY2FzZSBcInllYXJzXCI6XG4gICAgICAgIG8ubW9udGggPSAxO1xuICAgICAgLy8gZmFsbHMgdGhyb3VnaFxuICAgICAgY2FzZSBcInF1YXJ0ZXJzXCI6XG4gICAgICBjYXNlIFwibW9udGhzXCI6XG4gICAgICAgIG8uZGF5ID0gMTtcbiAgICAgIC8vIGZhbGxzIHRocm91Z2hcbiAgICAgIGNhc2UgXCJ3ZWVrc1wiOlxuICAgICAgY2FzZSBcImRheXNcIjpcbiAgICAgICAgby5ob3VyID0gMDtcbiAgICAgIC8vIGZhbGxzIHRocm91Z2hcbiAgICAgIGNhc2UgXCJob3Vyc1wiOlxuICAgICAgICBvLm1pbnV0ZSA9IDA7XG4gICAgICAvLyBmYWxscyB0aHJvdWdoXG4gICAgICBjYXNlIFwibWludXRlc1wiOlxuICAgICAgICBvLnNlY29uZCA9IDA7XG4gICAgICAvLyBmYWxscyB0aHJvdWdoXG4gICAgICBjYXNlIFwic2Vjb25kc1wiOlxuICAgICAgICBvLm1pbGxpc2Vjb25kID0gMDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwibWlsbGlzZWNvbmRzXCI6XG4gICAgICAgIGJyZWFrO1xuICAgICAgLy8gbm8gZGVmYXVsdCwgaW52YWxpZCB1bml0cyB0aHJvdyBpbiBub3JtYWxpemVVbml0KClcbiAgICB9XG5cbiAgICBpZiAobm9ybWFsaXplZFVuaXQgPT09IFwid2Vla3NcIikge1xuICAgICAgby53ZWVrZGF5ID0gMTtcbiAgICB9XG5cbiAgICBpZiAobm9ybWFsaXplZFVuaXQgPT09IFwicXVhcnRlcnNcIikge1xuICAgICAgY29uc3QgcSA9IE1hdGguY2VpbCh0aGlzLm1vbnRoIC8gMyk7XG4gICAgICBvLm1vbnRoID0gKHEgLSAxKSAqIDMgKyAxO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnNldChvKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBcIlNldFwiIHRoaXMgRGF0ZVRpbWUgdG8gdGhlIGVuZCAobWVhbmluZyB0aGUgbGFzdCBtaWxsaXNlY29uZCkgb2YgYSB1bml0IG9mIHRpbWVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHVuaXQgLSBUaGUgdW5pdCB0byBnbyB0byB0aGUgZW5kIG9mLiBDYW4gYmUgJ3llYXInLCAncXVhcnRlcicsICdtb250aCcsICd3ZWVrJywgJ2RheScsICdob3VyJywgJ21pbnV0ZScsICdzZWNvbmQnLCBvciAnbWlsbGlzZWNvbmQnLlxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAzLCAzKS5lbmRPZignbW9udGgnKS50b0lTTygpOyAvLz0+ICcyMDE0LTAzLTMxVDIzOjU5OjU5Ljk5OS0wNTowMCdcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMywgMykuZW5kT2YoJ3llYXInKS50b0lTTygpOyAvLz0+ICcyMDE0LTEyLTMxVDIzOjU5OjU5Ljk5OS0wNTowMCdcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMywgMykuZW5kT2YoJ3dlZWsnKS50b0lTTygpOyAvLyA9PiAnMjAxNC0wMy0wOVQyMzo1OTo1OS45OTktMDU6MDAnLCB3ZWVrcyBzdGFydCBvbiBNb25kYXlzXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDMsIDMsIDUsIDMwKS5lbmRPZignZGF5JykudG9JU08oKTsgLy89PiAnMjAxNC0wMy0wM1QyMzo1OTo1OS45OTktMDU6MDAnXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDMsIDMsIDUsIDMwKS5lbmRPZignaG91cicpLnRvSVNPKCk7IC8vPT4gJzIwMTQtMDMtMDNUMDU6NTk6NTkuOTk5LTA1OjAwJ1xuICAgKiBAcmV0dXJuIHtEYXRlVGltZX1cbiAgICovXG4gIGVuZE9mKHVuaXQpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkXG4gICAgICA/IHRoaXMucGx1cyh7IFt1bml0XTogMSB9KVxuICAgICAgICAgIC5zdGFydE9mKHVuaXQpXG4gICAgICAgICAgLm1pbnVzKDEpXG4gICAgICA6IHRoaXM7XG4gIH1cblxuICAvLyBPVVRQVVRcblxuICAvKipcbiAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lIGZvcm1hdHRlZCBhY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmllZCBmb3JtYXQgc3RyaW5nLlxuICAgKiAqKllvdSBtYXkgbm90IHdhbnQgdGhpcy4qKiBTZWUge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3IgYSBtb3JlIGZsZXhpYmxlIGZvcm1hdHRpbmcgdG9vbC4gRm9yIGEgdGFibGUgb2YgdG9rZW5zIGFuZCB0aGVpciBpbnRlcnByZXRhdGlvbnMsIHNlZSBbaGVyZV0oaHR0cHM6Ly9tb21lbnQuZ2l0aHViLmlvL2x1eG9uLyMvZm9ybWF0dGluZz9pZD10YWJsZS1vZi10b2tlbnMpLlxuICAgKiBEZWZhdWx0cyB0byBlbi1VUyBpZiBubyBsb2NhbGUgaGFzIGJlZW4gc3BlY2lmaWVkLCByZWdhcmRsZXNzIG9mIHRoZSBzeXN0ZW0ncyBsb2NhbGUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmbXQgLSB0aGUgZm9ybWF0IHN0cmluZ1xuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdHMgdG8gb3ZlcnJpZGUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBvbiB0aGlzIERhdGVUaW1lXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvRm9ybWF0KCd5eXl5IExMTCBkZCcpIC8vPT4gJzIwMTcgQXByIDIyJ1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5zZXRMb2NhbGUoJ2ZyJykudG9Gb3JtYXQoJ3l5eXkgTExMIGRkJykgLy89PiAnMjAxNyBhdnIuIDIyJ1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0Zvcm1hdCgneXl5eSBMTEwgZGQnLCB7IGxvY2FsZTogXCJmclwiIH0pIC8vPT4gJzIwMTcgYXZyLiAyMidcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9Gb3JtYXQoXCJISCAnaG91cnMgYW5kJyBtbSAnbWludXRlcydcIikgLy89PiAnMjAgaG91cnMgYW5kIDU1IG1pbnV0ZXMnXG4gICAqIEByZXR1cm4ge3N0cmluZ31cbiAgICovXG4gIHRvRm9ybWF0KGZtdCwgb3B0cyA9IHt9KSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZFxuICAgICAgPyBGb3JtYXR0ZXIuY3JlYXRlKHRoaXMubG9jLnJlZGVmYXVsdFRvRU4ob3B0cykpLmZvcm1hdERhdGVUaW1lRnJvbVN0cmluZyh0aGlzLCBmbXQpXG4gICAgICA6IElOVkFMSUQ7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIGxvY2FsaXplZCBzdHJpbmcgcmVwcmVzZW50aW5nIHRoaXMgZGF0ZS4gQWNjZXB0cyB0aGUgc2FtZSBvcHRpb25zIGFzIHRoZSBJbnRsLkRhdGVUaW1lRm9ybWF0IGNvbnN0cnVjdG9yIGFuZCBhbnkgcHJlc2V0cyBkZWZpbmVkIGJ5IEx1eG9uLCBzdWNoIGFzIGBEYXRlVGltZS5EQVRFX0ZVTExgIG9yIGBEYXRlVGltZS5USU1FX1NJTVBMRWAuXG4gICAqIFRoZSBleGFjdCBiZWhhdmlvciBvZiB0aGlzIG1ldGhvZCBpcyBicm93c2VyLXNwZWNpZmljLCBidXQgaW4gZ2VuZXJhbCBpdCB3aWxsIHJldHVybiBhbiBhcHByb3ByaWF0ZSByZXByZXNlbnRhdGlvblxuICAgKiBvZiB0aGUgRGF0ZVRpbWUgaW4gdGhlIGFzc2lnbmVkIGxvY2FsZS5cbiAgICogRGVmYXVsdHMgdG8gdGhlIHN5c3RlbSdzIGxvY2FsZSBpZiBubyBsb2NhbGUgaGFzIGJlZW4gc3BlY2lmaWVkXG4gICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvRGF0ZVRpbWVGb3JtYXRcbiAgICogQHBhcmFtIGZvcm1hdE9wdHMge09iamVjdH0gLSBJbnRsLkRhdGVUaW1lRm9ybWF0IGNvbnN0cnVjdG9yIG9wdGlvbnMgYW5kIGNvbmZpZ3VyYXRpb24gb3B0aW9uc1xuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdHMgdG8gb3ZlcnJpZGUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBvbiB0aGlzIERhdGVUaW1lXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvTG9jYWxlU3RyaW5nKCk7IC8vPT4gNC8yMC8yMDE3XG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnNldExvY2FsZSgnZW4tZ2InKS50b0xvY2FsZVN0cmluZygpOyAvLz0+ICcyMC8wNC8yMDE3J1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0xvY2FsZVN0cmluZyh7IGxvY2FsZTogJ2VuLWdiJyB9KTsgLy89PiAnMjAvMDQvMjAxNydcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9Mb2NhbGVTdHJpbmcoRGF0ZVRpbWUuREFURV9GVUxMKTsgLy89PiAnQXByaWwgMjAsIDIwMTcnXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvTG9jYWxlU3RyaW5nKERhdGVUaW1lLlRJTUVfU0lNUExFKTsgLy89PiAnMTE6MzIgQU0nXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvTG9jYWxlU3RyaW5nKERhdGVUaW1lLkRBVEVUSU1FX1NIT1JUKTsgLy89PiAnNC8yMC8yMDE3LCAxMTozMiBBTSdcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9Mb2NhbGVTdHJpbmcoeyB3ZWVrZGF5OiAnbG9uZycsIG1vbnRoOiAnbG9uZycsIGRheTogJzItZGlnaXQnIH0pOyAvLz0+ICdUaHVyc2RheSwgQXByaWwgMjAnXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvTG9jYWxlU3RyaW5nKHsgd2Vla2RheTogJ3Nob3J0JywgbW9udGg6ICdzaG9ydCcsIGRheTogJzItZGlnaXQnLCBob3VyOiAnMi1kaWdpdCcsIG1pbnV0ZTogJzItZGlnaXQnIH0pOyAvLz0+ICdUaHUsIEFwciAyMCwgMTE6MjcgQU0nXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvTG9jYWxlU3RyaW5nKHsgaG91cjogJzItZGlnaXQnLCBtaW51dGU6ICcyLWRpZ2l0JywgaG91ckN5Y2xlOiAnaDIzJyB9KTsgLy89PiAnMTE6MzInXG4gICAqIEByZXR1cm4ge3N0cmluZ31cbiAgICovXG4gIHRvTG9jYWxlU3RyaW5nKGZvcm1hdE9wdHMgPSBGb3JtYXRzLkRBVEVfU0hPUlQsIG9wdHMgPSB7fSkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWRcbiAgICAgID8gRm9ybWF0dGVyLmNyZWF0ZSh0aGlzLmxvYy5jbG9uZShvcHRzKSwgZm9ybWF0T3B0cykuZm9ybWF0RGF0ZVRpbWUodGhpcylcbiAgICAgIDogSU5WQUxJRDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIGFycmF5IG9mIGZvcm1hdCBcInBhcnRzXCIsIG1lYW5pbmcgaW5kaXZpZHVhbCB0b2tlbnMgYWxvbmcgd2l0aCBtZXRhZGF0YS4gVGhpcyBpcyBhbGxvd3MgY2FsbGVycyB0byBwb3N0LXByb2Nlc3MgaW5kaXZpZHVhbCBzZWN0aW9ucyBvZiB0aGUgZm9ybWF0dGVkIG91dHB1dC5cbiAgICogRGVmYXVsdHMgdG8gdGhlIHN5c3RlbSdzIGxvY2FsZSBpZiBubyBsb2NhbGUgaGFzIGJlZW4gc3BlY2lmaWVkXG4gICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvRGF0ZVRpbWVGb3JtYXQvZm9ybWF0VG9QYXJ0c1xuICAgKiBAcGFyYW0gb3B0cyB7T2JqZWN0fSAtIEludGwuRGF0ZVRpbWVGb3JtYXQgY29uc3RydWN0b3Igb3B0aW9ucywgc2FtZSBhcyBgdG9Mb2NhbGVTdHJpbmdgLlxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0xvY2FsZVBhcnRzKCk7IC8vPT4gW1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy89PiAgIHsgdHlwZTogJ2RheScsIHZhbHVlOiAnMjUnIH0sXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLz0+ICAgeyB0eXBlOiAnbGl0ZXJhbCcsIHZhbHVlOiAnLycgfSxcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vPT4gICB7IHR5cGU6ICdtb250aCcsIHZhbHVlOiAnMDUnIH0sXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLz0+ICAgeyB0eXBlOiAnbGl0ZXJhbCcsIHZhbHVlOiAnLycgfSxcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vPT4gICB7IHR5cGU6ICd5ZWFyJywgdmFsdWU6ICcxOTgyJyB9XG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLz0+IF1cbiAgICovXG4gIHRvTG9jYWxlUGFydHMob3B0cyA9IHt9KSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZFxuICAgICAgPyBGb3JtYXR0ZXIuY3JlYXRlKHRoaXMubG9jLmNsb25lKG9wdHMpLCBvcHRzKS5mb3JtYXREYXRlVGltZVBhcnRzKHRoaXMpXG4gICAgICA6IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gSVNPIDg2MDEtY29tcGxpYW50IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9uc1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLnN1cHByZXNzTWlsbGlzZWNvbmRzPWZhbHNlXSAtIGV4Y2x1ZGUgbWlsbGlzZWNvbmRzIGZyb20gdGhlIGZvcm1hdCBpZiB0aGV5J3JlIDBcbiAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zdXBwcmVzc1NlY29uZHM9ZmFsc2VdIC0gZXhjbHVkZSBzZWNvbmRzIGZyb20gdGhlIGZvcm1hdCBpZiB0aGV5J3JlIDBcbiAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5pbmNsdWRlT2Zmc2V0PXRydWVdIC0gaW5jbHVkZSB0aGUgb2Zmc2V0LCBzdWNoIGFzICdaJyBvciAnLTA0OjAwJ1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmV4dGVuZGVkWm9uZT10cnVlXSAtIGFkZCB0aGUgdGltZSB6b25lIGZvcm1hdCBleHRlbnNpb25cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmZvcm1hdD0nZXh0ZW5kZWQnXSAtIGNob29zZSBiZXR3ZWVuIHRoZSBiYXNpYyBhbmQgZXh0ZW5kZWQgZm9ybWF0XG4gICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygxOTgzLCA1LCAyNSkudG9JU08oKSAvLz0+ICcxOTgyLTA1LTI1VDAwOjAwOjAwLjAwMFonXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvSVNPKCkgLy89PiAnMjAxNy0wNC0yMlQyMDo0NzowNS4zMzUtMDQ6MDAnXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvSVNPKHsgaW5jbHVkZU9mZnNldDogZmFsc2UgfSkgLy89PiAnMjAxNy0wNC0yMlQyMDo0NzowNS4zMzUnXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvSVNPKHsgZm9ybWF0OiAnYmFzaWMnIH0pIC8vPT4gJzIwMTcwNDIyVDIwNDcwNS4zMzUtMDQwMCdcbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgdG9JU08oe1xuICAgIGZvcm1hdCA9IFwiZXh0ZW5kZWRcIixcbiAgICBzdXBwcmVzc1NlY29uZHMgPSBmYWxzZSxcbiAgICBzdXBwcmVzc01pbGxpc2Vjb25kcyA9IGZhbHNlLFxuICAgIGluY2x1ZGVPZmZzZXQgPSB0cnVlLFxuICAgIGV4dGVuZGVkWm9uZSA9IGZhbHNlLFxuICB9ID0ge30pIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgZXh0ID0gZm9ybWF0ID09PSBcImV4dGVuZGVkXCI7XG5cbiAgICBsZXQgYyA9IHRvSVNPRGF0ZSh0aGlzLCBleHQpO1xuICAgIGMgKz0gXCJUXCI7XG4gICAgYyArPSB0b0lTT1RpbWUodGhpcywgZXh0LCBzdXBwcmVzc1NlY29uZHMsIHN1cHByZXNzTWlsbGlzZWNvbmRzLCBpbmNsdWRlT2Zmc2V0LCBleHRlbmRlZFpvbmUpO1xuICAgIHJldHVybiBjO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gSVNPIDg2MDEtY29tcGxpYW50IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lJ3MgZGF0ZSBjb21wb25lbnRcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5mb3JtYXQ9J2V4dGVuZGVkJ10gLSBjaG9vc2UgYmV0d2VlbiB0aGUgYmFzaWMgYW5kIGV4dGVuZGVkIGZvcm1hdFxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMTk4MiwgNSwgMjUpLnRvSVNPRGF0ZSgpIC8vPT4gJzE5ODItMDUtMjUnXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygxOTgyLCA1LCAyNSkudG9JU09EYXRlKHsgZm9ybWF0OiAnYmFzaWMnIH0pIC8vPT4gJzE5ODIwNTI1J1xuICAgKiBAcmV0dXJuIHtzdHJpbmd9XG4gICAqL1xuICB0b0lTT0RhdGUoeyBmb3JtYXQgPSBcImV4dGVuZGVkXCIgfSA9IHt9KSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB0b0lTT0RhdGUodGhpcywgZm9ybWF0ID09PSBcImV4dGVuZGVkXCIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gSVNPIDg2MDEtY29tcGxpYW50IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lJ3Mgd2VlayBkYXRlXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygxOTgyLCA1LCAyNSkudG9JU09XZWVrRGF0ZSgpIC8vPT4gJzE5ODItVzIxLTInXG4gICAqIEByZXR1cm4ge3N0cmluZ31cbiAgICovXG4gIHRvSVNPV2Vla0RhdGUoKSB7XG4gICAgcmV0dXJuIHRvVGVjaEZvcm1hdCh0aGlzLCBcImtra2stJ1cnV1ctY1wiKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIElTTyA4NjAxLWNvbXBsaWFudCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZSdzIHRpbWUgY29tcG9uZW50XG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9uc1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLnN1cHByZXNzTWlsbGlzZWNvbmRzPWZhbHNlXSAtIGV4Y2x1ZGUgbWlsbGlzZWNvbmRzIGZyb20gdGhlIGZvcm1hdCBpZiB0aGV5J3JlIDBcbiAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zdXBwcmVzc1NlY29uZHM9ZmFsc2VdIC0gZXhjbHVkZSBzZWNvbmRzIGZyb20gdGhlIGZvcm1hdCBpZiB0aGV5J3JlIDBcbiAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5pbmNsdWRlT2Zmc2V0PXRydWVdIC0gaW5jbHVkZSB0aGUgb2Zmc2V0LCBzdWNoIGFzICdaJyBvciAnLTA0OjAwJ1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmV4dGVuZGVkWm9uZT10cnVlXSAtIGFkZCB0aGUgdGltZSB6b25lIGZvcm1hdCBleHRlbnNpb25cbiAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5pbmNsdWRlUHJlZml4PWZhbHNlXSAtIGluY2x1ZGUgdGhlIGBUYCBwcmVmaXhcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmZvcm1hdD0nZXh0ZW5kZWQnXSAtIGNob29zZSBiZXR3ZWVuIHRoZSBiYXNpYyBhbmQgZXh0ZW5kZWQgZm9ybWF0XG4gICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygpLnNldCh7IGhvdXI6IDcsIG1pbnV0ZTogMzQgfSkudG9JU09UaW1lKCkgLy89PiAnMDc6MzQ6MTkuMzYxWidcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKCkuc2V0KHsgaG91cjogNywgbWludXRlOiAzNCwgc2Vjb25kczogMCwgbWlsbGlzZWNvbmRzOiAwIH0pLnRvSVNPVGltZSh7IHN1cHByZXNzU2Vjb25kczogdHJ1ZSB9KSAvLz0+ICcwNzozNFonXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygpLnNldCh7IGhvdXI6IDcsIG1pbnV0ZTogMzQgfSkudG9JU09UaW1lKHsgZm9ybWF0OiAnYmFzaWMnIH0pIC8vPT4gJzA3MzQxOS4zNjFaJ1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoKS5zZXQoeyBob3VyOiA3LCBtaW51dGU6IDM0IH0pLnRvSVNPVGltZSh7IGluY2x1ZGVQcmVmaXg6IHRydWUgfSkgLy89PiAnVDA3OjM0OjE5LjM2MVonXG4gICAqIEByZXR1cm4ge3N0cmluZ31cbiAgICovXG4gIHRvSVNPVGltZSh7XG4gICAgc3VwcHJlc3NNaWxsaXNlY29uZHMgPSBmYWxzZSxcbiAgICBzdXBwcmVzc1NlY29uZHMgPSBmYWxzZSxcbiAgICBpbmNsdWRlT2Zmc2V0ID0gdHJ1ZSxcbiAgICBpbmNsdWRlUHJlZml4ID0gZmFsc2UsXG4gICAgZXh0ZW5kZWRab25lID0gZmFsc2UsXG4gICAgZm9ybWF0ID0gXCJleHRlbmRlZFwiLFxuICB9ID0ge30pIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgbGV0IGMgPSBpbmNsdWRlUHJlZml4ID8gXCJUXCIgOiBcIlwiO1xuICAgIHJldHVybiAoXG4gICAgICBjICtcbiAgICAgIHRvSVNPVGltZShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgZm9ybWF0ID09PSBcImV4dGVuZGVkXCIsXG4gICAgICAgIHN1cHByZXNzU2Vjb25kcyxcbiAgICAgICAgc3VwcHJlc3NNaWxsaXNlY29uZHMsXG4gICAgICAgIGluY2x1ZGVPZmZzZXQsXG4gICAgICAgIGV4dGVuZGVkWm9uZVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBSRkMgMjgyMi1jb21wYXRpYmxlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygyMDE0LCA3LCAxMykudG9SRkMyODIyKCkgLy89PiAnU3VuLCAxMyBKdWwgMjAxNCAwMDowMDowMCArMDAwMCdcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgNywgMTMpLnRvUkZDMjgyMigpIC8vPT4gJ1N1biwgMTMgSnVsIDIwMTQgMDA6MDA6MDAgLTA0MDAnXG4gICAqIEByZXR1cm4ge3N0cmluZ31cbiAgICovXG4gIHRvUkZDMjgyMigpIHtcbiAgICByZXR1cm4gdG9UZWNoRm9ybWF0KHRoaXMsIFwiRUVFLCBkZCBMTEwgeXl5eSBISDptbTpzcyBaWlpcIiwgZmFsc2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZSBhcHByb3ByaWF0ZSBmb3IgdXNlIGluIEhUVFAgaGVhZGVycy4gVGhlIG91dHB1dCBpcyBhbHdheXMgZXhwcmVzc2VkIGluIEdNVC5cbiAgICogU3BlY2lmaWNhbGx5LCB0aGUgc3RyaW5nIGNvbmZvcm1zIHRvIFJGQyAxMTIzLlxuICAgKiBAc2VlIGh0dHBzOi8vd3d3LnczLm9yZy9Qcm90b2NvbHMvcmZjMjYxNi9yZmMyNjE2LXNlYzMuaHRtbCNzZWMzLjMuMVxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMjAxNCwgNywgMTMpLnRvSFRUUCgpIC8vPT4gJ1N1biwgMTMgSnVsIDIwMTQgMDA6MDA6MDAgR01UJ1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMjAxNCwgNywgMTMsIDE5KS50b0hUVFAoKSAvLz0+ICdTdW4sIDEzIEp1bCAyMDE0IDE5OjAwOjAwIEdNVCdcbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgdG9IVFRQKCkge1xuICAgIHJldHVybiB0b1RlY2hGb3JtYXQodGhpcy50b1VUQygpLCBcIkVFRSwgZGQgTExMIHl5eXkgSEg6bW06c3MgJ0dNVCdcIik7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lIGFwcHJvcHJpYXRlIGZvciB1c2UgaW4gU1FMIERhdGVcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTQsIDcsIDEzKS50b1NRTERhdGUoKSAvLz0+ICcyMDE0LTA3LTEzJ1xuICAgKiBAcmV0dXJuIHtzdHJpbmd9XG4gICAqL1xuICB0b1NRTERhdGUoKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gdG9JU09EYXRlKHRoaXMsIHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZSBhcHByb3ByaWF0ZSBmb3IgdXNlIGluIFNRTCBUaW1lXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9uc1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmluY2x1ZGVab25lPWZhbHNlXSAtIGluY2x1ZGUgdGhlIHpvbmUsIHN1Y2ggYXMgJ0FtZXJpY2EvTmV3X1lvcmsnLiBPdmVycmlkZXMgaW5jbHVkZU9mZnNldC5cbiAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5pbmNsdWRlT2Zmc2V0PXRydWVdIC0gaW5jbHVkZSB0aGUgb2Zmc2V0LCBzdWNoIGFzICdaJyBvciAnLTA0OjAwJ1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmluY2x1ZGVPZmZzZXRTcGFjZT10cnVlXSAtIGluY2x1ZGUgdGhlIHNwYWNlIGJldHdlZW4gdGhlIHRpbWUgYW5kIHRoZSBvZmZzZXQsIHN1Y2ggYXMgJzA1OjE1OjE2LjM0NSAtMDQ6MDAnXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygpLnRvU1FMKCkgLy89PiAnMDU6MTU6MTYuMzQ1J1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b1NRTCgpIC8vPT4gJzA1OjE1OjE2LjM0NSAtMDQ6MDAnXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvU1FMKHsgaW5jbHVkZU9mZnNldDogZmFsc2UgfSkgLy89PiAnMDU6MTU6MTYuMzQ1J1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b1NRTCh7IGluY2x1ZGVab25lOiBmYWxzZSB9KSAvLz0+ICcwNToxNToxNi4zNDUgQW1lcmljYS9OZXdfWW9yaydcbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgdG9TUUxUaW1lKHsgaW5jbHVkZU9mZnNldCA9IHRydWUsIGluY2x1ZGVab25lID0gZmFsc2UsIGluY2x1ZGVPZmZzZXRTcGFjZSA9IHRydWUgfSA9IHt9KSB7XG4gICAgbGV0IGZtdCA9IFwiSEg6bW06c3MuU1NTXCI7XG5cbiAgICBpZiAoaW5jbHVkZVpvbmUgfHwgaW5jbHVkZU9mZnNldCkge1xuICAgICAgaWYgKGluY2x1ZGVPZmZzZXRTcGFjZSkge1xuICAgICAgICBmbXQgKz0gXCIgXCI7XG4gICAgICB9XG4gICAgICBpZiAoaW5jbHVkZVpvbmUpIHtcbiAgICAgICAgZm10ICs9IFwielwiO1xuICAgICAgfSBlbHNlIGlmIChpbmNsdWRlT2Zmc2V0KSB7XG4gICAgICAgIGZtdCArPSBcIlpaXCI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRvVGVjaEZvcm1hdCh0aGlzLCBmbXQsIHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZSBhcHByb3ByaWF0ZSBmb3IgdXNlIGluIFNRTCBEYXRlVGltZVxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnNcbiAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5pbmNsdWRlWm9uZT1mYWxzZV0gLSBpbmNsdWRlIHRoZSB6b25lLCBzdWNoIGFzICdBbWVyaWNhL05ld19Zb3JrJy4gT3ZlcnJpZGVzIGluY2x1ZGVPZmZzZXQuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuaW5jbHVkZU9mZnNldD10cnVlXSAtIGluY2x1ZGUgdGhlIG9mZnNldCwgc3VjaCBhcyAnWicgb3IgJy0wNDowMCdcbiAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5pbmNsdWRlT2Zmc2V0U3BhY2U9dHJ1ZV0gLSBpbmNsdWRlIHRoZSBzcGFjZSBiZXR3ZWVuIHRoZSB0aW1lIGFuZCB0aGUgb2Zmc2V0LCBzdWNoIGFzICcwNToxNToxNi4zNDUgLTA0OjAwJ1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMjAxNCwgNywgMTMpLnRvU1FMKCkgLy89PiAnMjAxNC0wNy0xMyAwMDowMDowMC4wMDAgWidcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgNywgMTMpLnRvU1FMKCkgLy89PiAnMjAxNC0wNy0xMyAwMDowMDowMC4wMDAgLTA0OjAwJ1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCA3LCAxMykudG9TUUwoeyBpbmNsdWRlT2Zmc2V0OiBmYWxzZSB9KSAvLz0+ICcyMDE0LTA3LTEzIDAwOjAwOjAwLjAwMCdcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgNywgMTMpLnRvU1FMKHsgaW5jbHVkZVpvbmU6IHRydWUgfSkgLy89PiAnMjAxNC0wNy0xMyAwMDowMDowMC4wMDAgQW1lcmljYS9OZXdfWW9yaydcbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgdG9TUUwob3B0cyA9IHt9KSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBgJHt0aGlzLnRvU1FMRGF0ZSgpfSAke3RoaXMudG9TUUxUaW1lKG9wdHMpfWA7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lIGFwcHJvcHJpYXRlIGZvciBkZWJ1Z2dpbmdcbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudG9JU08oKSA6IElOVkFMSUQ7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgZXBvY2ggbWlsbGlzZWNvbmRzIG9mIHRoaXMgRGF0ZVRpbWUuIEFsaWFzIG9mIHtAbGluayBEYXRlVGltZSN0b01pbGxpc31cbiAgICogQHJldHVybiB7bnVtYmVyfVxuICAgKi9cbiAgdmFsdWVPZigpIHtcbiAgICByZXR1cm4gdGhpcy50b01pbGxpcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGVwb2NoIG1pbGxpc2Vjb25kcyBvZiB0aGlzIERhdGVUaW1lLlxuICAgKiBAcmV0dXJuIHtudW1iZXJ9XG4gICAqL1xuICB0b01pbGxpcygpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy50cyA6IE5hTjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBlcG9jaCBzZWNvbmRzIG9mIHRoaXMgRGF0ZVRpbWUuXG4gICAqIEByZXR1cm4ge251bWJlcn1cbiAgICovXG4gIHRvU2Vjb25kcygpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy50cyAvIDEwMDAgOiBOYU47XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgZXBvY2ggc2Vjb25kcyAoYXMgYSB3aG9sZSBudW1iZXIpIG9mIHRoaXMgRGF0ZVRpbWUuXG4gICAqIEByZXR1cm4ge251bWJlcn1cbiAgICovXG4gIHRvVW5peEludGVnZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IE1hdGguZmxvb3IodGhpcy50cyAvIDEwMDApIDogTmFOO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gSVNPIDg2MDEgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZSBhcHByb3ByaWF0ZSBmb3IgdXNlIGluIEpTT04uXG4gICAqIEByZXR1cm4ge3N0cmluZ31cbiAgICovXG4gIHRvSlNPTigpIHtcbiAgICByZXR1cm4gdGhpcy50b0lTTygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBCU09OIHNlcmlhbGl6YWJsZSBlcXVpdmFsZW50IHRvIHRoaXMgRGF0ZVRpbWUuXG4gICAqIEByZXR1cm4ge0RhdGV9XG4gICAqL1xuICB0b0JTT04oKSB7XG4gICAgcmV0dXJuIHRoaXMudG9KU0RhdGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgSmF2YVNjcmlwdCBvYmplY3Qgd2l0aCB0aGlzIERhdGVUaW1lJ3MgeWVhciwgbW9udGgsIGRheSwgYW5kIHNvIG9uLlxuICAgKiBAcGFyYW0gb3B0cyAtIG9wdGlvbnMgZm9yIGdlbmVyYXRpbmcgdGhlIG9iamVjdFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmluY2x1ZGVDb25maWc9ZmFsc2VdIC0gaW5jbHVkZSBjb25maWd1cmF0aW9uIGF0dHJpYnV0ZXMgaW4gdGhlIG91dHB1dFxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b09iamVjdCgpIC8vPT4geyB5ZWFyOiAyMDE3LCBtb250aDogNCwgZGF5OiAyMiwgaG91cjogMjAsIG1pbnV0ZTogNDksIHNlY29uZDogNDIsIG1pbGxpc2Vjb25kOiAyNjggfVxuICAgKiBAcmV0dXJuIHtPYmplY3R9XG4gICAqL1xuICB0b09iamVjdChvcHRzID0ge30pIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHt9O1xuXG4gICAgY29uc3QgYmFzZSA9IHsgLi4udGhpcy5jIH07XG5cbiAgICBpZiAob3B0cy5pbmNsdWRlQ29uZmlnKSB7XG4gICAgICBiYXNlLm91dHB1dENhbGVuZGFyID0gdGhpcy5vdXRwdXRDYWxlbmRhcjtcbiAgICAgIGJhc2UubnVtYmVyaW5nU3lzdGVtID0gdGhpcy5sb2MubnVtYmVyaW5nU3lzdGVtO1xuICAgICAgYmFzZS5sb2NhbGUgPSB0aGlzLmxvYy5sb2NhbGU7XG4gICAgfVxuICAgIHJldHVybiBiYXNlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBKYXZhU2NyaXB0IERhdGUgZXF1aXZhbGVudCB0byB0aGlzIERhdGVUaW1lLlxuICAgKiBAcmV0dXJuIHtEYXRlfVxuICAgKi9cbiAgdG9KU0RhdGUoKSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKHRoaXMuaXNWYWxpZCA/IHRoaXMudHMgOiBOYU4pO1xuICB9XG5cbiAgLy8gQ09NUEFSRVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0d28gRGF0ZVRpbWVzIGFzIGEgRHVyYXRpb24uXG4gICAqIEBwYXJhbSB7RGF0ZVRpbWV9IG90aGVyRGF0ZVRpbWUgLSB0aGUgRGF0ZVRpbWUgdG8gY29tcGFyZSB0aGlzIG9uZSB0b1xuICAgKiBAcGFyYW0ge3N0cmluZ3xzdHJpbmdbXX0gW3VuaXQ9WydtaWxsaXNlY29uZHMnXV0gLSB0aGUgdW5pdCBvciBhcnJheSBvZiB1bml0cyAoc3VjaCBhcyAnaG91cnMnIG9yICdkYXlzJykgdG8gaW5jbHVkZSBpbiB0aGUgZHVyYXRpb24uXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucyB0aGF0IGFmZmVjdCB0aGUgY3JlYXRpb24gb2YgdGhlIER1cmF0aW9uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5jb252ZXJzaW9uQWNjdXJhY3k9J2Nhc3VhbCddIC0gdGhlIGNvbnZlcnNpb24gc3lzdGVtIHRvIHVzZVxuICAgKiBAZXhhbXBsZVxuICAgKiB2YXIgaTEgPSBEYXRlVGltZS5mcm9tSVNPKCcxOTgyLTA1LTI1VDA5OjQ1JyksXG4gICAqICAgICBpMiA9IERhdGVUaW1lLmZyb21JU08oJzE5ODMtMTAtMTRUMTA6MzAnKTtcbiAgICogaTIuZGlmZihpMSkudG9PYmplY3QoKSAvLz0+IHsgbWlsbGlzZWNvbmRzOiA0MzgwNzUwMDAwMCB9XG4gICAqIGkyLmRpZmYoaTEsICdob3VycycpLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAxMjE2OC43NSB9XG4gICAqIGkyLmRpZmYoaTEsIFsnbW9udGhzJywgJ2RheXMnXSkudG9PYmplY3QoKSAvLz0+IHsgbW9udGhzOiAxNiwgZGF5czogMTkuMDMxMjUgfVxuICAgKiBpMi5kaWZmKGkxLCBbJ21vbnRocycsICdkYXlzJywgJ2hvdXJzJ10pLnRvT2JqZWN0KCkgLy89PiB7IG1vbnRoczogMTYsIGRheXM6IDE5LCBob3VyczogMC43NSB9XG4gICAqIEByZXR1cm4ge0R1cmF0aW9ufVxuICAgKi9cbiAgZGlmZihvdGhlckRhdGVUaW1lLCB1bml0ID0gXCJtaWxsaXNlY29uZHNcIiwgb3B0cyA9IHt9KSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQgfHwgIW90aGVyRGF0ZVRpbWUuaXNWYWxpZCkge1xuICAgICAgcmV0dXJuIER1cmF0aW9uLmludmFsaWQoXCJjcmVhdGVkIGJ5IGRpZmZpbmcgYW4gaW52YWxpZCBEYXRlVGltZVwiKTtcbiAgICB9XG5cbiAgICBjb25zdCBkdXJPcHRzID0geyBsb2NhbGU6IHRoaXMubG9jYWxlLCBudW1iZXJpbmdTeXN0ZW06IHRoaXMubnVtYmVyaW5nU3lzdGVtLCAuLi5vcHRzIH07XG5cbiAgICBjb25zdCB1bml0cyA9IG1heWJlQXJyYXkodW5pdCkubWFwKER1cmF0aW9uLm5vcm1hbGl6ZVVuaXQpLFxuICAgICAgb3RoZXJJc0xhdGVyID0gb3RoZXJEYXRlVGltZS52YWx1ZU9mKCkgPiB0aGlzLnZhbHVlT2YoKSxcbiAgICAgIGVhcmxpZXIgPSBvdGhlcklzTGF0ZXIgPyB0aGlzIDogb3RoZXJEYXRlVGltZSxcbiAgICAgIGxhdGVyID0gb3RoZXJJc0xhdGVyID8gb3RoZXJEYXRlVGltZSA6IHRoaXMsXG4gICAgICBkaWZmZWQgPSBkaWZmKGVhcmxpZXIsIGxhdGVyLCB1bml0cywgZHVyT3B0cyk7XG5cbiAgICByZXR1cm4gb3RoZXJJc0xhdGVyID8gZGlmZmVkLm5lZ2F0ZSgpIDogZGlmZmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoaXMgRGF0ZVRpbWUgYW5kIHJpZ2h0IG5vdy5cbiAgICogU2VlIHtAbGluayBEYXRlVGltZSNkaWZmfVxuICAgKiBAcGFyYW0ge3N0cmluZ3xzdHJpbmdbXX0gW3VuaXQ9WydtaWxsaXNlY29uZHMnXV0gLSB0aGUgdW5pdCBvciB1bml0cyB1bml0cyAoc3VjaCBhcyAnaG91cnMnIG9yICdkYXlzJykgdG8gaW5jbHVkZSBpbiB0aGUgZHVyYXRpb25cbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRoYXQgYWZmZWN0IHRoZSBjcmVhdGlvbiBvZiB0aGUgRHVyYXRpb25cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmNvbnZlcnNpb25BY2N1cmFjeT0nY2FzdWFsJ10gLSB0aGUgY29udmVyc2lvbiBzeXN0ZW0gdG8gdXNlXG4gICAqIEByZXR1cm4ge0R1cmF0aW9ufVxuICAgKi9cbiAgZGlmZk5vdyh1bml0ID0gXCJtaWxsaXNlY29uZHNcIiwgb3B0cyA9IHt9KSB7XG4gICAgcmV0dXJuIHRoaXMuZGlmZihEYXRlVGltZS5ub3coKSwgdW5pdCwgb3B0cyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGFuIEludGVydmFsIHNwYW5uaW5nIGJldHdlZW4gdGhpcyBEYXRlVGltZSBhbmQgYW5vdGhlciBEYXRlVGltZVxuICAgKiBAcGFyYW0ge0RhdGVUaW1lfSBvdGhlckRhdGVUaW1lIC0gdGhlIG90aGVyIGVuZCBwb2ludCBvZiB0aGUgSW50ZXJ2YWxcbiAgICogQHJldHVybiB7SW50ZXJ2YWx9XG4gICAqL1xuICB1bnRpbChvdGhlckRhdGVUaW1lKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IEludGVydmFsLmZyb21EYXRlVGltZXModGhpcywgb3RoZXJEYXRlVGltZSkgOiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB3aGV0aGVyIHRoaXMgRGF0ZVRpbWUgaXMgaW4gdGhlIHNhbWUgdW5pdCBvZiB0aW1lIGFzIGFub3RoZXIgRGF0ZVRpbWUuXG4gICAqIEhpZ2hlci1vcmRlciB1bml0cyBtdXN0IGFsc28gYmUgaWRlbnRpY2FsIGZvciB0aGlzIGZ1bmN0aW9uIHRvIHJldHVybiBgdHJ1ZWAuXG4gICAqIE5vdGUgdGhhdCB0aW1lIHpvbmVzIGFyZSAqKmlnbm9yZWQqKiBpbiB0aGlzIGNvbXBhcmlzb24sIHdoaWNoIGNvbXBhcmVzIHRoZSAqKmxvY2FsKiogY2FsZW5kYXIgdGltZS4gVXNlIHtAbGluayBEYXRlVGltZSNzZXRab25lfSB0byBjb252ZXJ0IG9uZSBvZiB0aGUgZGF0ZXMgaWYgbmVlZGVkLlxuICAgKiBAcGFyYW0ge0RhdGVUaW1lfSBvdGhlckRhdGVUaW1lIC0gdGhlIG90aGVyIERhdGVUaW1lXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB1bml0IC0gdGhlIHVuaXQgb2YgdGltZSB0byBjaGVjayBzYW1lbmVzcyBvblxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5oYXNTYW1lKG90aGVyRFQsICdkYXknKTsgLy9+PiB0cnVlIGlmIG90aGVyRFQgaXMgaW4gdGhlIHNhbWUgY3VycmVudCBjYWxlbmRhciBkYXlcbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICovXG4gIGhhc1NhbWUob3RoZXJEYXRlVGltZSwgdW5pdCkge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gZmFsc2U7XG5cbiAgICBjb25zdCBpbnB1dE1zID0gb3RoZXJEYXRlVGltZS52YWx1ZU9mKCk7XG4gICAgY29uc3QgYWRqdXN0ZWRUb1pvbmUgPSB0aGlzLnNldFpvbmUob3RoZXJEYXRlVGltZS56b25lLCB7IGtlZXBMb2NhbFRpbWU6IHRydWUgfSk7XG4gICAgcmV0dXJuIGFkanVzdGVkVG9ab25lLnN0YXJ0T2YodW5pdCkgPD0gaW5wdXRNcyAmJiBpbnB1dE1zIDw9IGFkanVzdGVkVG9ab25lLmVuZE9mKHVuaXQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVxdWFsaXR5IGNoZWNrXG4gICAqIFR3byBEYXRlVGltZXMgYXJlIGVxdWFsIGlmZiB0aGV5IHJlcHJlc2VudCB0aGUgc2FtZSBtaWxsaXNlY29uZCwgaGF2ZSB0aGUgc2FtZSB6b25lIGFuZCBsb2NhdGlvbiwgYW5kIGFyZSBib3RoIHZhbGlkLlxuICAgKiBUbyBjb21wYXJlIGp1c3QgdGhlIG1pbGxpc2Vjb25kIHZhbHVlcywgdXNlIGArZHQxID09PSArZHQyYC5cbiAgICogQHBhcmFtIHtEYXRlVGltZX0gb3RoZXIgLSB0aGUgb3RoZXIgRGF0ZVRpbWVcbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICovXG4gIGVxdWFscyhvdGhlcikge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmlzVmFsaWQgJiZcbiAgICAgIG90aGVyLmlzVmFsaWQgJiZcbiAgICAgIHRoaXMudmFsdWVPZigpID09PSBvdGhlci52YWx1ZU9mKCkgJiZcbiAgICAgIHRoaXMuem9uZS5lcXVhbHMob3RoZXIuem9uZSkgJiZcbiAgICAgIHRoaXMubG9jLmVxdWFscyhvdGhlci5sb2MpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgdGhpcyB0aW1lIHJlbGF0aXZlIHRvIG5vdywgc3VjaCBhcyBcImluIHR3byBkYXlzXCIuIENhbiBvbmx5IGludGVybmF0aW9uYWxpemUgaWYgeW91clxuICAgKiBwbGF0Zm9ybSBzdXBwb3J0cyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC4gUm91bmRzIGRvd24gYnkgZGVmYXVsdC5cbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBvcHRpb25zIHRoYXQgYWZmZWN0IHRoZSBvdXRwdXRcbiAgICogQHBhcmFtIHtEYXRlVGltZX0gW29wdGlvbnMuYmFzZT1EYXRlVGltZS5ub3coKV0gLSB0aGUgRGF0ZVRpbWUgdG8gdXNlIGFzIHRoZSBiYXNpcyB0byB3aGljaCB0aGlzIHRpbWUgaXMgY29tcGFyZWQuIERlZmF1bHRzIHRvIG5vdy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLnN0eWxlPVwibG9uZ1wiXSAtIHRoZSBzdHlsZSBvZiB1bml0cywgbXVzdCBiZSBcImxvbmdcIiwgXCJzaG9ydFwiLCBvciBcIm5hcnJvd1wiXG4gICAqIEBwYXJhbSB7c3RyaW5nfHN0cmluZ1tdfSBvcHRpb25zLnVuaXQgLSB1c2UgYSBzcGVjaWZpYyB1bml0IG9yIGFycmF5IG9mIHVuaXRzOyBpZiBvbWl0dGVkLCBvciBhbiBhcnJheSwgdGhlIG1ldGhvZCB3aWxsIHBpY2sgdGhlIGJlc3QgdW5pdC4gVXNlIGFuIGFycmF5IG9yIG9uZSBvZiBcInllYXJzXCIsIFwicXVhcnRlcnNcIiwgXCJtb250aHNcIiwgXCJ3ZWVrc1wiLCBcImRheXNcIiwgXCJob3Vyc1wiLCBcIm1pbnV0ZXNcIiwgb3IgXCJzZWNvbmRzXCJcbiAgICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5yb3VuZD10cnVlXSAtIHdoZXRoZXIgdG8gcm91bmQgdGhlIG51bWJlcnMgaW4gdGhlIG91dHB1dC5cbiAgICogQHBhcmFtIHtudW1iZXJ9IFtvcHRpb25zLnBhZGRpbmc9MF0gLSBwYWRkaW5nIGluIG1pbGxpc2Vjb25kcy4gVGhpcyBhbGxvd3MgeW91IHRvIHJvdW5kIHVwIHRoZSByZXN1bHQgaWYgaXQgZml0cyBpbnNpZGUgdGhlIHRocmVzaG9sZC4gRG9uJ3QgdXNlIGluIGNvbWJpbmF0aW9uIHdpdGgge3JvdW5kOiBmYWxzZX0gYmVjYXVzZSB0aGUgZGVjaW1hbCBvdXRwdXQgd2lsbCBpbmNsdWRlIHRoZSBwYWRkaW5nLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5sb2NhbGUgLSBvdmVycmlkZSB0aGUgbG9jYWxlIG9mIHRoaXMgRGF0ZVRpbWVcbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMubnVtYmVyaW5nU3lzdGVtIC0gb3ZlcnJpZGUgdGhlIG51bWJlcmluZ1N5c3RlbSBvZiB0aGlzIERhdGVUaW1lLiBUaGUgSW50bCBzeXN0ZW0gbWF5IGNob29zZSBub3QgdG8gaG9ub3IgdGhpc1xuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5wbHVzKHsgZGF5czogMSB9KS50b1JlbGF0aXZlKCkgLy89PiBcImluIDEgZGF5XCJcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkuc2V0TG9jYWxlKFwiZXNcIikudG9SZWxhdGl2ZSh7IGRheXM6IDEgfSkgLy89PiBcImRlbnRybyBkZSAxIGRcdTAwRURhXCJcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkucGx1cyh7IGRheXM6IDEgfSkudG9SZWxhdGl2ZSh7IGxvY2FsZTogXCJmclwiIH0pIC8vPT4gXCJkYW5zIDIzIGhldXJlc1wiXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLm1pbnVzKHsgZGF5czogMiB9KS50b1JlbGF0aXZlKCkgLy89PiBcIjIgZGF5cyBhZ29cIlxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5taW51cyh7IGRheXM6IDIgfSkudG9SZWxhdGl2ZSh7IHVuaXQ6IFwiaG91cnNcIiB9KSAvLz0+IFwiNDggaG91cnMgYWdvXCJcbiAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkubWludXMoeyBob3VyczogMzYgfSkudG9SZWxhdGl2ZSh7IHJvdW5kOiBmYWxzZSB9KSAvLz0+IFwiMS41IGRheXMgYWdvXCJcbiAgICovXG4gIHRvUmVsYXRpdmUob3B0aW9ucyA9IHt9KSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBudWxsO1xuICAgIGNvbnN0IGJhc2UgPSBvcHRpb25zLmJhc2UgfHwgRGF0ZVRpbWUuZnJvbU9iamVjdCh7fSwgeyB6b25lOiB0aGlzLnpvbmUgfSksXG4gICAgICBwYWRkaW5nID0gb3B0aW9ucy5wYWRkaW5nID8gKHRoaXMgPCBiYXNlID8gLW9wdGlvbnMucGFkZGluZyA6IG9wdGlvbnMucGFkZGluZykgOiAwO1xuICAgIGxldCB1bml0cyA9IFtcInllYXJzXCIsIFwibW9udGhzXCIsIFwiZGF5c1wiLCBcImhvdXJzXCIsIFwibWludXRlc1wiLCBcInNlY29uZHNcIl07XG4gICAgbGV0IHVuaXQgPSBvcHRpb25zLnVuaXQ7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkob3B0aW9ucy51bml0KSkge1xuICAgICAgdW5pdHMgPSBvcHRpb25zLnVuaXQ7XG4gICAgICB1bml0ID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICByZXR1cm4gZGlmZlJlbGF0aXZlKGJhc2UsIHRoaXMucGx1cyhwYWRkaW5nKSwge1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIG51bWVyaWM6IFwiYWx3YXlzXCIsXG4gICAgICB1bml0cyxcbiAgICAgIHVuaXQsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIGRhdGUgcmVsYXRpdmUgdG8gdG9kYXksIHN1Y2ggYXMgXCJ5ZXN0ZXJkYXlcIiBvciBcIm5leHQgbW9udGhcIi5cbiAgICogT25seSBpbnRlcm5hdGlvbmFsaXplcyBvbiBwbGF0Zm9ybXMgdGhhdCBzdXBwb3J0cyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5cbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBvcHRpb25zIHRoYXQgYWZmZWN0IHRoZSBvdXRwdXRcbiAgICogQHBhcmFtIHtEYXRlVGltZX0gW29wdGlvbnMuYmFzZT1EYXRlVGltZS5ub3coKV0gLSB0aGUgRGF0ZVRpbWUgdG8gdXNlIGFzIHRoZSBiYXNpcyB0byB3aGljaCB0aGlzIHRpbWUgaXMgY29tcGFyZWQuIERlZmF1bHRzIHRvIG5vdy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMubG9jYWxlIC0gb3ZlcnJpZGUgdGhlIGxvY2FsZSBvZiB0aGlzIERhdGVUaW1lXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLnVuaXQgLSB1c2UgYSBzcGVjaWZpYyB1bml0OyBpZiBvbWl0dGVkLCB0aGUgbWV0aG9kIHdpbGwgcGljayB0aGUgdW5pdC4gVXNlIG9uZSBvZiBcInllYXJzXCIsIFwicXVhcnRlcnNcIiwgXCJtb250aHNcIiwgXCJ3ZWVrc1wiLCBvciBcImRheXNcIlxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5udW1iZXJpbmdTeXN0ZW0gLSBvdmVycmlkZSB0aGUgbnVtYmVyaW5nU3lzdGVtIG9mIHRoaXMgRGF0ZVRpbWUuIFRoZSBJbnRsIHN5c3RlbSBtYXkgY2hvb3NlIG5vdCB0byBob25vciB0aGlzXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnBsdXMoeyBkYXlzOiAxIH0pLnRvUmVsYXRpdmVDYWxlbmRhcigpIC8vPT4gXCJ0b21vcnJvd1wiXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnNldExvY2FsZShcImVzXCIpLnBsdXMoeyBkYXlzOiAxIH0pLnRvUmVsYXRpdmUoKSAvLz0+IFwiXCJtYVx1MDBGMWFuYVwiXG4gICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnBsdXMoeyBkYXlzOiAxIH0pLnRvUmVsYXRpdmVDYWxlbmRhcih7IGxvY2FsZTogXCJmclwiIH0pIC8vPT4gXCJkZW1haW5cIlxuICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5taW51cyh7IGRheXM6IDIgfSkudG9SZWxhdGl2ZUNhbGVuZGFyKCkgLy89PiBcIjIgZGF5cyBhZ29cIlxuICAgKi9cbiAgdG9SZWxhdGl2ZUNhbGVuZGFyKG9wdGlvbnMgPSB7fSkge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gbnVsbDtcblxuICAgIHJldHVybiBkaWZmUmVsYXRpdmUob3B0aW9ucy5iYXNlIHx8IERhdGVUaW1lLmZyb21PYmplY3Qoe30sIHsgem9uZTogdGhpcy56b25lIH0pLCB0aGlzLCB7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgbnVtZXJpYzogXCJhdXRvXCIsXG4gICAgICB1bml0czogW1wieWVhcnNcIiwgXCJtb250aHNcIiwgXCJkYXlzXCJdLFxuICAgICAgY2FsZW5kYXJ5OiB0cnVlLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgbWluIG9mIHNldmVyYWwgZGF0ZSB0aW1lc1xuICAgKiBAcGFyYW0gey4uLkRhdGVUaW1lfSBkYXRlVGltZXMgLSB0aGUgRGF0ZVRpbWVzIGZyb20gd2hpY2ggdG8gY2hvb3NlIHRoZSBtaW5pbXVtXG4gICAqIEByZXR1cm4ge0RhdGVUaW1lfSB0aGUgbWluIERhdGVUaW1lLCBvciB1bmRlZmluZWQgaWYgY2FsbGVkIHdpdGggbm8gYXJndW1lbnRcbiAgICovXG4gIHN0YXRpYyBtaW4oLi4uZGF0ZVRpbWVzKSB7XG4gICAgaWYgKCFkYXRlVGltZXMuZXZlcnkoRGF0ZVRpbWUuaXNEYXRlVGltZSkpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcihcIm1pbiByZXF1aXJlcyBhbGwgYXJndW1lbnRzIGJlIERhdGVUaW1lc1wiKTtcbiAgICB9XG4gICAgcmV0dXJuIGJlc3RCeShkYXRlVGltZXMsIChpKSA9PiBpLnZhbHVlT2YoKSwgTWF0aC5taW4pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgbWF4IG9mIHNldmVyYWwgZGF0ZSB0aW1lc1xuICAgKiBAcGFyYW0gey4uLkRhdGVUaW1lfSBkYXRlVGltZXMgLSB0aGUgRGF0ZVRpbWVzIGZyb20gd2hpY2ggdG8gY2hvb3NlIHRoZSBtYXhpbXVtXG4gICAqIEByZXR1cm4ge0RhdGVUaW1lfSB0aGUgbWF4IERhdGVUaW1lLCBvciB1bmRlZmluZWQgaWYgY2FsbGVkIHdpdGggbm8gYXJndW1lbnRcbiAgICovXG4gIHN0YXRpYyBtYXgoLi4uZGF0ZVRpbWVzKSB7XG4gICAgaWYgKCFkYXRlVGltZXMuZXZlcnkoRGF0ZVRpbWUuaXNEYXRlVGltZSkpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcihcIm1heCByZXF1aXJlcyBhbGwgYXJndW1lbnRzIGJlIERhdGVUaW1lc1wiKTtcbiAgICB9XG4gICAgcmV0dXJuIGJlc3RCeShkYXRlVGltZXMsIChpKSA9PiBpLnZhbHVlT2YoKSwgTWF0aC5tYXgpO1xuICB9XG5cbiAgLy8gTUlTQ1xuXG4gIC8qKlxuICAgKiBFeHBsYWluIGhvdyBhIHN0cmluZyB3b3VsZCBiZSBwYXJzZWQgYnkgZnJvbUZvcm1hdCgpXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IC0gdGhlIHN0cmluZyB0byBwYXJzZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZm10IC0gdGhlIGZvcm1hdCB0aGUgc3RyaW5nIGlzIGV4cGVjdGVkIHRvIGJlIGluIChzZWUgZGVzY3JpcHRpb24pXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gb3B0aW9ucyB0YWtlbiBieSBmcm9tRm9ybWF0KClcbiAgICogQHJldHVybiB7T2JqZWN0fVxuICAgKi9cbiAgc3RhdGljIGZyb21Gb3JtYXRFeHBsYWluKHRleHQsIGZtdCwgb3B0aW9ucyA9IHt9KSB7XG4gICAgY29uc3QgeyBsb2NhbGUgPSBudWxsLCBudW1iZXJpbmdTeXN0ZW0gPSBudWxsIH0gPSBvcHRpb25zLFxuICAgICAgbG9jYWxlVG9Vc2UgPSBMb2NhbGUuZnJvbU9wdHMoe1xuICAgICAgICBsb2NhbGUsXG4gICAgICAgIG51bWJlcmluZ1N5c3RlbSxcbiAgICAgICAgZGVmYXVsdFRvRU46IHRydWUsXG4gICAgICB9KTtcbiAgICByZXR1cm4gZXhwbGFpbkZyb21Ub2tlbnMobG9jYWxlVG9Vc2UsIHRleHQsIGZtdCk7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGZyb21Gb3JtYXRFeHBsYWluIGluc3RlYWRcbiAgICovXG4gIHN0YXRpYyBmcm9tU3RyaW5nRXhwbGFpbih0ZXh0LCBmbXQsIG9wdGlvbnMgPSB7fSkge1xuICAgIHJldHVybiBEYXRlVGltZS5mcm9tRm9ybWF0RXhwbGFpbih0ZXh0LCBmbXQsIG9wdGlvbnMpO1xuICB9XG5cbiAgLy8gRk9STUFUIFBSRVNFVFNcblxuICAvKipcbiAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAxMC8xNC8xOTgzXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICBzdGF0aWMgZ2V0IERBVEVfU0hPUlQoKSB7XG4gICAgcmV0dXJuIEZvcm1hdHMuREFURV9TSE9SVDtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdPY3QgMTQsIDE5ODMnXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICBzdGF0aWMgZ2V0IERBVEVfTUVEKCkge1xuICAgIHJldHVybiBGb3JtYXRzLkRBVEVfTUVEO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJ0ZyaSwgT2N0IDE0LCAxOTgzJ1xuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgc3RhdGljIGdldCBEQVRFX01FRF9XSVRIX1dFRUtEQVkoKSB7XG4gICAgcmV0dXJuIEZvcm1hdHMuREFURV9NRURfV0lUSF9XRUVLREFZO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJ09jdG9iZXIgMTQsIDE5ODMnXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICBzdGF0aWMgZ2V0IERBVEVfRlVMTCgpIHtcbiAgICByZXR1cm4gRm9ybWF0cy5EQVRFX0ZVTEw7XG4gIH1cblxuICAvKipcbiAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnVHVlc2RheSwgT2N0b2JlciAxNCwgMTk4MydcbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHN0YXRpYyBnZXQgREFURV9IVUdFKCkge1xuICAgIHJldHVybiBGb3JtYXRzLkRBVEVfSFVHRTtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICcwOTozMCBBTScuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLlxuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgc3RhdGljIGdldCBUSU1FX1NJTVBMRSgpIHtcbiAgICByZXR1cm4gRm9ybWF0cy5USU1FX1NJTVBMRTtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICcwOTozMDoyMyBBTScuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLlxuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgc3RhdGljIGdldCBUSU1FX1dJVEhfU0VDT05EUygpIHtcbiAgICByZXR1cm4gRm9ybWF0cy5USU1FX1dJVEhfU0VDT05EUztcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICcwOTozMDoyMyBBTSBFRFQnLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy5cbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHN0YXRpYyBnZXQgVElNRV9XSVRIX1NIT1JUX09GRlNFVCgpIHtcbiAgICByZXR1cm4gRm9ybWF0cy5USU1FX1dJVEhfU0hPUlRfT0ZGU0VUO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJzA5OjMwOjIzIEFNIEVhc3Rlcm4gRGF5bGlnaHQgVGltZScuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLlxuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgc3RhdGljIGdldCBUSU1FX1dJVEhfTE9OR19PRkZTRVQoKSB7XG4gICAgcmV0dXJuIEZvcm1hdHMuVElNRV9XSVRIX0xPTkdfT0ZGU0VUO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJzA5OjMwJywgYWx3YXlzIDI0LWhvdXIuXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICBzdGF0aWMgZ2V0IFRJTUVfMjRfU0lNUExFKCkge1xuICAgIHJldHVybiBGb3JtYXRzLlRJTUVfMjRfU0lNUExFO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJzA5OjMwOjIzJywgYWx3YXlzIDI0LWhvdXIuXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICBzdGF0aWMgZ2V0IFRJTUVfMjRfV0lUSF9TRUNPTkRTKCkge1xuICAgIHJldHVybiBGb3JtYXRzLlRJTUVfMjRfV0lUSF9TRUNPTkRTO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJzA5OjMwOjIzIEVEVCcsIGFsd2F5cyAyNC1ob3VyLlxuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgc3RhdGljIGdldCBUSU1FXzI0X1dJVEhfU0hPUlRfT0ZGU0VUKCkge1xuICAgIHJldHVybiBGb3JtYXRzLlRJTUVfMjRfV0lUSF9TSE9SVF9PRkZTRVQ7XG4gIH1cblxuICAvKipcbiAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnMDk6MzA6MjMgRWFzdGVybiBEYXlsaWdodCBUaW1lJywgYWx3YXlzIDI0LWhvdXIuXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICBzdGF0aWMgZ2V0IFRJTUVfMjRfV0lUSF9MT05HX09GRlNFVCgpIHtcbiAgICByZXR1cm4gRm9ybWF0cy5USU1FXzI0X1dJVEhfTE9OR19PRkZTRVQ7XG4gIH1cblxuICAvKipcbiAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnMTAvMTQvMTk4MywgOTozMCBBTScuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLlxuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgc3RhdGljIGdldCBEQVRFVElNRV9TSE9SVCgpIHtcbiAgICByZXR1cm4gRm9ybWF0cy5EQVRFVElNRV9TSE9SVDtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICcxMC8xNC8xOTgzLCA5OjMwOjMzIEFNJy4gT25seSAxMi1ob3VyIGlmIHRoZSBsb2NhbGUgaXMuXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICBzdGF0aWMgZ2V0IERBVEVUSU1FX1NIT1JUX1dJVEhfU0VDT05EUygpIHtcbiAgICByZXR1cm4gRm9ybWF0cy5EQVRFVElNRV9TSE9SVF9XSVRIX1NFQ09ORFM7XG4gIH1cblxuICAvKipcbiAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnT2N0IDE0LCAxOTgzLCA5OjMwIEFNJy4gT25seSAxMi1ob3VyIGlmIHRoZSBsb2NhbGUgaXMuXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICBzdGF0aWMgZ2V0IERBVEVUSU1FX01FRCgpIHtcbiAgICByZXR1cm4gRm9ybWF0cy5EQVRFVElNRV9NRUQ7XG4gIH1cblxuICAvKipcbiAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnT2N0IDE0LCAxOTgzLCA5OjMwOjMzIEFNJy4gT25seSAxMi1ob3VyIGlmIHRoZSBsb2NhbGUgaXMuXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICBzdGF0aWMgZ2V0IERBVEVUSU1FX01FRF9XSVRIX1NFQ09ORFMoKSB7XG4gICAgcmV0dXJuIEZvcm1hdHMuREFURVRJTUVfTUVEX1dJVEhfU0VDT05EUztcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdGcmksIDE0IE9jdCAxOTgzLCA5OjMwIEFNJy4gT25seSAxMi1ob3VyIGlmIHRoZSBsb2NhbGUgaXMuXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICBzdGF0aWMgZ2V0IERBVEVUSU1FX01FRF9XSVRIX1dFRUtEQVkoKSB7XG4gICAgcmV0dXJuIEZvcm1hdHMuREFURVRJTUVfTUVEX1dJVEhfV0VFS0RBWTtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdPY3RvYmVyIDE0LCAxOTgzLCA5OjMwIEFNIEVEVCcuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLlxuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgc3RhdGljIGdldCBEQVRFVElNRV9GVUxMKCkge1xuICAgIHJldHVybiBGb3JtYXRzLkRBVEVUSU1FX0ZVTEw7XG4gIH1cblxuICAvKipcbiAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnT2N0b2JlciAxNCwgMTk4MywgOTozMDozMyBBTSBFRFQnLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy5cbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHN0YXRpYyBnZXQgREFURVRJTUVfRlVMTF9XSVRIX1NFQ09ORFMoKSB7XG4gICAgcmV0dXJuIEZvcm1hdHMuREFURVRJTUVfRlVMTF9XSVRIX1NFQ09ORFM7XG4gIH1cblxuICAvKipcbiAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnRnJpZGF5LCBPY3RvYmVyIDE0LCAxOTgzLCA5OjMwIEFNIEVhc3Rlcm4gRGF5bGlnaHQgVGltZScuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLlxuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgc3RhdGljIGdldCBEQVRFVElNRV9IVUdFKCkge1xuICAgIHJldHVybiBGb3JtYXRzLkRBVEVUSU1FX0hVR0U7XG4gIH1cblxuICAvKipcbiAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnRnJpZGF5LCBPY3RvYmVyIDE0LCAxOTgzLCA5OjMwOjMzIEFNIEVhc3Rlcm4gRGF5bGlnaHQgVGltZScuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLlxuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgc3RhdGljIGdldCBEQVRFVElNRV9IVUdFX1dJVEhfU0VDT05EUygpIHtcbiAgICByZXR1cm4gRm9ybWF0cy5EQVRFVElNRV9IVUdFX1dJVEhfU0VDT05EUztcbiAgfVxufVxuXG4vKipcbiAqIEBwcml2YXRlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmcmllbmRseURhdGVUaW1lKGRhdGVUaW1laXNoKSB7XG4gIGlmIChEYXRlVGltZS5pc0RhdGVUaW1lKGRhdGVUaW1laXNoKSkge1xuICAgIHJldHVybiBkYXRlVGltZWlzaDtcbiAgfSBlbHNlIGlmIChkYXRlVGltZWlzaCAmJiBkYXRlVGltZWlzaC52YWx1ZU9mICYmIGlzTnVtYmVyKGRhdGVUaW1laXNoLnZhbHVlT2YoKSkpIHtcbiAgICByZXR1cm4gRGF0ZVRpbWUuZnJvbUpTRGF0ZShkYXRlVGltZWlzaCk7XG4gIH0gZWxzZSBpZiAoZGF0ZVRpbWVpc2ggJiYgdHlwZW9mIGRhdGVUaW1laXNoID09PSBcIm9iamVjdFwiKSB7XG4gICAgcmV0dXJuIERhdGVUaW1lLmZyb21PYmplY3QoZGF0ZVRpbWVpc2gpO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcihcbiAgICAgIGBVbmtub3duIGRhdGV0aW1lIGFyZ3VtZW50OiAke2RhdGVUaW1laXNofSwgb2YgdHlwZSAke3R5cGVvZiBkYXRlVGltZWlzaH1gXG4gICAgKTtcbiAgfVxufVxuIiwgImltcG9ydCB7IERhdGVUaW1lLCBEdXJhdGlvbiB9IGZyb20gXCJsdXhvblwiO1xuaW1wb3J0ICogYXMgUCBmcm9tIFwicGFyc2ltbW9uXCI7XG5pbXBvcnQgZW1vamlSZWdleCBmcm9tIFwiZW1vamktcmVnZXhcIjtcbmltcG9ydCB7IExpbmsgfSBmcm9tIFwiZXhwcmVzc2lvbi9saW5rXCI7XG5cbi8qKiBUZXN0LWVudmlyb25tZW50LWZyaWVuZGx5IGZ1bmN0aW9uIHdoaWNoIGZldGNoZXMgdGhlIGN1cnJlbnQgc3lzdGVtIGxvY2FsZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjdXJyZW50TG9jYWxlKCk6IHN0cmluZyB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09IFwidW5kZWZpbmVkXCIpIHJldHVybiBcImVuLVVTXCI7XG4gICAgcmV0dXJuIHdpbmRvdy5uYXZpZ2F0b3IubGFuZ3VhZ2U7XG59XG5cbi8vIERhdGUvVGltZSBSZW5kZXJpbmdcblxuLyoqIE5vcm1hbGl6ZSBhIGR1cmF0aW9uIHRvIGFsbCBvZiB0aGUgcHJvcGVyIHVuaXRzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZUR1cmF0aW9uKGR1cjogRHVyYXRpb24pIHtcbiAgICBpZiAoZHVyID09PSB1bmRlZmluZWQgfHwgZHVyID09PSBudWxsKSByZXR1cm4gZHVyO1xuXG4gICAgcmV0dXJuIGR1ci5zaGlmdFRvKFwieWVhcnNcIiwgXCJtb250aHNcIiwgXCJ3ZWVrc1wiLCBcImRheXNcIiwgXCJob3Vyc1wiLCBcIm1pbnV0ZXNcIiwgXCJzZWNvbmRzXCIsIFwibWlsbGlzZWNvbmRzXCIpLm5vcm1hbGl6ZSgpO1xufVxuXG4vKiogU3RyaXAgdGhlIHRpbWUgY29tcG9uZW50cyBvZiBhIGRhdGUgdGltZSBvYmplY3QuICovXG5leHBvcnQgZnVuY3Rpb24gc3RyaXBUaW1lKGR0OiBEYXRlVGltZSk6IERhdGVUaW1lIHtcbiAgICBpZiAoZHQgPT09IG51bGwgfHwgZHQgPT09IHVuZGVmaW5lZCkgcmV0dXJuIGR0O1xuXG4gICAgcmV0dXJuIERhdGVUaW1lLmZyb21PYmplY3Qoe1xuICAgICAgICB5ZWFyOiBkdC55ZWFyLFxuICAgICAgICBtb250aDogZHQubW9udGgsXG4gICAgICAgIGRheTogZHQuZGF5LFxuICAgIH0pO1xufVxuXG4vKiogVHJ5IHRvIGV4dHJhY3QgYSBZWVlZTU1ERCBkYXRlIGZyb20gYSBzdHJpbmcuICovXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdERhdGUoc3RyOiBzdHJpbmcpOiBEYXRlVGltZSB8IHVuZGVmaW5lZCB7XG4gICAgbGV0IGRhdGVNYXRjaCA9IC8oXFxkezR9KS0oXFxkezJ9KS0oXFxkezJ9KS8uZXhlYyhzdHIpO1xuICAgIGlmICghZGF0ZU1hdGNoKSBkYXRlTWF0Y2ggPSAvKFxcZHs0fSkoXFxkezJ9KShcXGR7Mn0pLy5leGVjKHN0cik7XG4gICAgaWYgKGRhdGVNYXRjaCkge1xuICAgICAgICBsZXQgeWVhciA9IE51bWJlci5wYXJzZUludChkYXRlTWF0Y2hbMV0pO1xuICAgICAgICBsZXQgbW9udGggPSBOdW1iZXIucGFyc2VJbnQoZGF0ZU1hdGNoWzJdKTtcbiAgICAgICAgbGV0IGRheSA9IE51bWJlci5wYXJzZUludChkYXRlTWF0Y2hbM10pO1xuICAgICAgICByZXR1cm4gRGF0ZVRpbWUuZnJvbU9iamVjdCh7IHllYXIsIG1vbnRoLCBkYXkgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLyoqIFJlbmRlciBhIERhdGVUaW1lIGluIGEgbWluaW1hbCBmb3JtYXQgdG8gc2F2ZSBzcGFjZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJNaW5pbWFsRGF0ZSh0aW1lOiBEYXRlVGltZSwgZGF0ZUZvcm1hdDogc3RyaW5nLCBkYXRlVGltZUZvcm1hdDogc3RyaW5nLCBsb2NhbGU/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIC8vIElmIHRoZXJlIGlzIG5vIHJlbGV2YW50IHRpbWUgc3BlY2lmaWVkLCBmYWxsIGJhY2sgdG8ganVzdCByZW5kZXJpbmcgdGhlIGRhdGUuXG4gICAgaWYgKHRpbWUuc2Vjb25kID09IDAgJiYgdGltZS5taW51dGUgPT0gMCAmJiB0aW1lLmhvdXIgPT0gMCkge1xuICAgICAgICByZXR1cm4gdGltZS50b0xvY2FsKCkudG9Gb3JtYXQoZGF0ZUZvcm1hdCwgeyBsb2NhbGUgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRpbWUudG9Mb2NhbCgpLnRvRm9ybWF0KGRhdGVUaW1lRm9ybWF0LCB7IGxvY2FsZSB9KTtcbn1cblxuLyoqIFJlbmRlciBhIGR1cmF0aW9uIGluIGEgbWluaW1hbCBmb3JtYXQgdG8gc2F2ZSBzcGFjZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJNaW5pbWFsRHVyYXRpb24oZHVyOiBEdXJhdGlvbik6IHN0cmluZyB7XG4gICAgZHVyID0gbm9ybWFsaXplRHVyYXRpb24oZHVyKTtcblxuICAgIC8vIFRPRE86IEx1eG9uIGRvZXMgbm90IGhhdmUgbXVsdGktbGluZ3VhbC9sb2NhbGUtYXdhcmUgZHVyYXRpb24gcmVuZGVyaW5nLlxuICAgIGxldCByZXN1bHQgPSBcIlwiO1xuICAgIGlmIChkdXIueWVhcnMpIHJlc3VsdCArPSBgJHtkdXIueWVhcnN9IHllYXJzLCBgO1xuICAgIGlmIChkdXIubW9udGhzKSByZXN1bHQgKz0gYCR7ZHVyLm1vbnRoc30gbW9udGhzLCBgO1xuICAgIGlmIChkdXIud2Vla3MpIHJlc3VsdCArPSBgJHtkdXIud2Vla3N9IHdlZWtzLCBgO1xuICAgIGlmIChkdXIuZGF5cykgcmVzdWx0ICs9IGAke2R1ci5kYXlzfSBkYXlzLCBgO1xuICAgIGlmIChkdXIuaG91cnMpIHJlc3VsdCArPSBgJHtkdXIuaG91cnN9IGhvdXJzLCBgO1xuICAgIGlmIChkdXIubWludXRlcykgcmVzdWx0ICs9IGAke2R1ci5taW51dGVzfSBtaW51dGVzLCBgO1xuICAgIGlmIChkdXIuc2Vjb25kcykgcmVzdWx0ICs9IGAke01hdGgucm91bmQoZHVyLnNlY29uZHMpfSBzZWNvbmRzLCBgO1xuICAgIGlmIChkdXIubWlsbGlzZWNvbmRzKSByZXN1bHQgKz0gYCR7TWF0aC5yb3VuZChkdXIubWlsbGlzZWNvbmRzKX0gbXMsIGA7XG5cbiAgICBpZiAocmVzdWx0LmVuZHNXaXRoKFwiLCBcIikpIHJlc3VsdCA9IHJlc3VsdC5zdWJzdHJpbmcoMCwgcmVzdWx0Lmxlbmd0aCAtIDIpO1xuICAgIHJldHVybiByZXN1bHQ7XG59XG5cbi8vIFBhdGggdXRpbGl0aWVzLlxuXG4vKiogR2V0IHRoZSBmb2xkZXIgY29udGFpbmluZyB0aGUgZ2l2ZW4gcGF0aCAoaS5lLiwgbGlrZSBjb21wdXRpbmcgJ3BhdGgvLi4nKS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRQYXJlbnRGb2xkZXIocGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gcGF0aC5zcGxpdChcIi9cIikuc2xpY2UoMCwgLTEpLmpvaW4oXCIvXCIpO1xufVxuXG4vKiogR2V0IHRoZSBmaWxlIG5hbWUgZm9yIHRoZSBmaWxlIHJlZmVyZW5jZWQgaW4gdGhlIGdpdmVuIHBhdGgsIGJ5IHN0cmlwcGluZyB0aGUgcGFyZW50IGZvbGRlcnMuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmlsZU5hbWUocGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gcGF0aC5pbmNsdWRlcyhcIi9cIikgPyBwYXRoLnN1YnN0cmluZyhwYXRoLmxhc3RJbmRleE9mKFwiL1wiKSArIDEpIDogcGF0aDtcbn1cblxuLyoqIEdldCB0aGUgXCJ0aXRsZVwiIGZvciBhIGZpbGUsIGJ5IHN0cmlwcGluZyBvdGhlciBwYXJ0cyBvZiB0aGUgcGF0aCBhcyB3ZWxsIGFzIHRoZSBleHRlbnNpb24uICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmlsZVRpdGxlKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKHBhdGguaW5jbHVkZXMoXCIvXCIpKSBwYXRoID0gcGF0aC5zdWJzdHJpbmcocGF0aC5sYXN0SW5kZXhPZihcIi9cIikgKyAxKTtcbiAgICBpZiAocGF0aC5lbmRzV2l0aChcIi5tZFwiKSkgcGF0aCA9IHBhdGguc3Vic3RyaW5nKDAsIHBhdGgubGVuZ3RoIC0gMyk7XG4gICAgcmV0dXJuIHBhdGg7XG59XG5cbi8qKiBHZXQgdGhlIGV4dGVuc2lvbiBvZiBhIGZpbGUgZnJvbSB0aGUgZmlsZSBwYXRoLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEV4dGVuc2lvbihwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICghcGF0aC5pbmNsdWRlcyhcIi5cIikpIHJldHVybiBcIlwiO1xuICAgIHJldHVybiBwYXRoLnN1YnN0cmluZyhwYXRoLmxhc3RJbmRleE9mKFwiLlwiKSArIDEpO1xufVxuXG4vLyBUYWcgZXh0cmFjdGlvbi5cblxuLyoqIFBhcnNlIGFsbCBzdWJ0YWdzIG91dCBvZiB0aGUgZ2l2ZW4gdGFnLiBJLmUuLCAjaGVsbG8vaS9hbSB3b3VsZCB5aWVsZCBbI2hlbGxvL2kvYW0sICNoZWxsby9pLCAjaGVsbG9dLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RTdWJ0YWdzKHRhZ3M6IHN0cmluZyB8IEl0ZXJhYmxlPHN0cmluZz4pOiBzdHJpbmdbXSB7XG4gICAgbGV0IHJlc3VsdCA9IFtdO1xuICAgIGZvciAobGV0IHRhZyBvZiB0eXBlb2YgdGFncyA9PT0gXCJzdHJpbmdcIiA/IFt0YWdzXSA6IHRhZ3MpIHtcbiAgICAgICAgcmVzdWx0LnB1c2godGFnKTtcbiAgICAgICAgd2hpbGUgKHRhZy5pbmNsdWRlcyhcIi9cIikpIHtcbiAgICAgICAgICAgIHRhZyA9IHRhZy5zdWJzdHJpbmcoMCwgdGFnLmxhc3RJbmRleE9mKFwiL1wiKSk7XG4gICAgICAgICAgICByZXN1bHQucHVzaCh0YWcpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqIFNwbGl0IGVhY2ggYmxvY2sgYW5kIHNlY3Rpb24gbGluayBpbnRvIHRoZSBvcmlnaW5hbCBsaW5rIGFuZCBhIGNvcnJlc3BvbmRpbmcgZmlsZSBsaW5rLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RGaWxlTGlua3MoZWxpbmtzOiBMaW5rW10pOiBMaW5rW10ge1xuICAgIGNvbnN0IHJlc3VsdDogTGlua1tdID0gW107XG4gICAgZm9yIChjb25zdCBsaW5rIG9mIGVsaW5rcykge1xuICAgICAgICByZXN1bHQucHVzaChsaW5rKTtcblxuICAgICAgICBjb25zdCBmaWxlTGluayA9IGxpbmsudG9GaWxlKCk7XG4gICAgICAgIGlmIChsaW5rLnR5cGUgIT0gXCJmaWxlXCIgJiYgIXJlc3VsdC5maW5kKChleGlzdGluZykgPT4gZXhpc3RpbmcuZXF1YWxzKGZpbGVMaW5rKSkpIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGZpbGVMaW5rKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG59XG5cbi8vIFN0cmluZyBlc2NhcGluZyBhbmQgY2Fub25pY2FsaXphdGlvbi5cblxuLyoqXG4gKiBFc2NhcGUgcmVnZXggY2hhcmFjdGVycyBpbiBhIHN0cmluZy5cbiAqIFNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L0d1aWRlL1JlZ3VsYXJfRXhwcmVzc2lvbnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlc2NhcGVSZWdleChzdHI6IHN0cmluZykge1xuICAgIHJldHVybiBzdHIucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xcXVxcXFxdL2csIFwiXFxcXCQmXCIpO1xufVxuXG5jb25zdCBIRUFERVJfQ0FOT05JQ0FMSVpFUjogUC5QYXJzZXI8c3RyaW5nPiA9IFAuYWx0KFxuICAgIFAucmVnZXgobmV3IFJlZ0V4cChlbW9qaVJlZ2V4KCksIFwiXCIpKSxcbiAgICBQLnJlZ2V4KC9bMC05XFxwe0xldHRlcn1fLV0rL3UpLFxuICAgIFAud2hpdGVzcGFjZS5tYXAoKF8pID0+IFwiIFwiKSxcbiAgICBQLmFueS5tYXAoKF8pID0+IFwiIFwiKVxuKVxuICAgIC5tYW55KClcbiAgICAubWFwKChyZXN1bHQpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdC5qb2luKFwiXCIpLnNwbGl0KC9cXHMrLykuam9pbihcIiBcIikudHJpbSgpO1xuICAgIH0pO1xuXG4vKipcbiAqIE5vcm1hbGl6ZXMgdGhlIHRleHQgaW4gYSBoZWFkZXIgdG8gYmUgc29tZXRoaW5nIHRoYXQgaXMgYWN0dWFsbHkgbGlua2FibGUgdG8uIFRoaXMgbWltaWNzXG4gKiBob3cgT2JzaWRpYW4gZG9lcyBpdCdzIG5vcm1hbGl6YXRpb24sIGNvbGxhcHNpbmcgcmVwZWF0ZWQgc3BhY2VzIGFuZCBzdHJpcHBpbmcgb3V0IGNvbnRyb2wgY2hhcmFjdGVycy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZUhlYWRlckZvckxpbmsoaGVhZGVyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBIRUFERVJfQ0FOT05JQ0FMSVpFUi50cnlQYXJzZShoZWFkZXIpO1xufVxuXG4vLyBGYXN0IGV4dHJhY3Rpb24gb2YgbGluZSByYW5nZXMgZnJvbSBsYXJnZSBwaWVjZXMgb2YgdGV4dC5cblxuLyoqIFVwZGF0ZSB0aGUgbGluZSByYW5nZSBmcm9tIFtzdGFydCwgZW5kKSB3aXRoIHRoZSBnaXZlbiBmdW5jdGlvbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsaW5lUmVwbGFjZSh0ZXh0OiBzdHJpbmcsIHN0YXJ0OiBudW1iZXIsIGVuZDogbnVtYmVyLCBmdW5jOiAobGluZTogc3RyaW5nKSA9PiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IFtkYXRhLCBvZmZzZXRdID0gbGluZVNwYW4odGV4dCwgc3RhcnQsIGVuZCk7XG4gICAgaWYgKCFvZmZzZXQpIHJldHVybiB0ZXh0O1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgZGF0YS5zdWJzdHJpbmcoMCwgb2Zmc2V0LnN0YXJ0KSArIGZ1bmMoZGF0YS5zdWJzdHJpbmcob2Zmc2V0LnN0YXJ0LCBvZmZzZXQuZW5kKSkgKyBkYXRhLnN1YnN0cmluZyhvZmZzZXQuZW5kKVxuICAgICk7XG59XG5cbi8qKiBFeHRyYWN0IHRoZSBsaW5lcyBpbiB0aGUgcmFuZ2UgW3N0YXJ0LCBlbmQpLCBhcyB3ZWxsIGFzIHRoZSBhY3R1YWwgb2Zmc2V0cyBvZiB0aGUgc3RhcnQgYW5kIGVuZC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsaW5lU3BhbihcbiAgICB0ZXh0OiBzdHJpbmcsXG4gICAgc3RhcnQ6IG51bWJlcixcbiAgICBlbmQ6IG51bWJlclxuKTogW3N0cmluZywgeyBzdGFydDogbnVtYmVyOyBlbmQ6IG51bWJlciB9IHwgdW5kZWZpbmVkXSB7XG4gICAgc3RhcnQgPSBNYXRoLm1heChzdGFydCwgMCk7XG4gICAgZW5kID0gTWF0aC5tYXgoZW5kLCAwKTtcblxuICAgIGlmIChzdGFydCA+PSBlbmQpIHJldHVybiBbXCJcIiwgdW5kZWZpbmVkXTtcblxuICAgIC8vIFN0YXJ0IGJ5IGZpbmRpbmcgdGhlIHN0YXJ0aW5nIGxpbmUgb2Zmc2V0LlxuICAgIGNvbnN0IHN0YXJ0T2Zmc2V0ID0gc2tpcE5ld2xpbmVzKHRleHQsIDAsIHN0YXJ0KTtcbiAgICBpZiAoc3RhcnRPZmZzZXQgPT0gLTEpIHJldHVybiBbXCJcIiwgdW5kZWZpbmVkXTtcblxuICAgIGNvbnN0IGVuZE9mZnNldCA9IHNraXBOZXdsaW5lcyh0ZXh0LCBzdGFydE9mZnNldCwgZW5kIC0gc3RhcnQpO1xuICAgIGlmIChlbmRPZmZzZXQgPT0gLTEpIHJldHVybiBbdGV4dC5zdWJzdHJpbmcoc3RhcnRPZmZzZXQpLCB7IHN0YXJ0OiBzdGFydE9mZnNldCwgZW5kOiB0ZXh0Lmxlbmd0aCB9XTtcbiAgICBlbHNlIHJldHVybiBbdGV4dC5zdWJzdHJpbmcoc3RhcnRPZmZzZXQsIGVuZE9mZnNldCAtIDEpLCB7IHN0YXJ0OiBzdGFydE9mZnNldCwgZW5kOiBlbmRPZmZzZXQgLSAxIH1dO1xufVxuXG4vKiogRXh0cmFjdCB0aGUgbGluZXMgaW4gdGhlIHJhbmdlIFtzdGFydCwgZW5kKS4gU3RhcnQgaXMgaW5jbHVzaXZlLCBlbmQgaXMgZXhjbHVzaXZlLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxpbmVSYW5nZSh0ZXh0OiBzdHJpbmcsIHN0YXJ0OiBudW1iZXIsIGVuZDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbGluZVNwYW4odGV4dCwgc3RhcnQsIGVuZClbMF07XG59XG5cbi8qKiBTa2lwIHtjb3VudH0gdG90YWwgbmV3bGluZXMsIHJldHVybmluZyB0aGUgc3RhcnQgb2YgdGhlIGxpbmUge2NvdW50fSBsaW5lcyBhZnRlciB0aGUgY3VycmVudCBsaW5lLiBJZiBjb3VudCBpcyAwLCB0aGUgaW5pdGlhbCBvZmZzZXQgaXMgcmV0dXJuZWQuICovXG5leHBvcnQgZnVuY3Rpb24gc2tpcE5ld2xpbmVzKHRleHQ6IHN0cmluZywgc3RhcnQ6IG51bWJlciwgY291bnQ6IG51bWJlcik6IG51bWJlciB7XG4gICAgaWYgKGNvdW50ID09IDApIHJldHVybiBzdGFydDtcblxuICAgIGxldCBwb3NpdGlvbiA9IHN0YXJ0O1xuICAgIHdoaWxlIChjb3VudCA+IDApIHtcbiAgICAgICAgcG9zaXRpb24gPSB0ZXh0LmluZGV4T2YoXCJcXG5cIiwgcG9zaXRpb24pO1xuICAgICAgICBpZiAocG9zaXRpb24gPT0gLTEpIHJldHVybiAtMTtcblxuICAgICAgICBjb3VudC0tO1xuICAgICAgICBwb3NpdGlvbiArPSAxO1xuICAgIH1cblxuICAgIHJldHVybiBwb3NpdGlvbjtcbn1cbiIsICJpbXBvcnQgeyBnZXRGaWxlVGl0bGUsIG5vcm1hbGl6ZUhlYWRlckZvckxpbmsgfSBmcm9tIFwidXRpbHMvbm9ybWFsaXplcnNcIjtcblxuLyoqIFRoZSBPYnNpZGlhbiAnbGluaycsIHVzZWQgZm9yIHVuaXF1ZWx5IGRlc2NyaWJpbmcgYSBmaWxlLCBoZWFkZXIsIG9yIGJsb2NrLlxuICogQGdyb3VwIENvbW1vbiBUeXBlc1xuICovXG5leHBvcnQgY2xhc3MgTGluayB7XG4gICAgLyoqIFRoZSBmaWxlIHBhdGggdGhpcyBsaW5rIHBvaW50cyB0by4gKi9cbiAgICBwdWJsaWMgcGF0aDogc3RyaW5nO1xuICAgIC8qKiBUaGUgZGlzcGxheSBuYW1lIGFzc29jaWF0ZWQgd2l0aCB0aGUgbGluay4gKi9cbiAgICBwdWJsaWMgZGlzcGxheT86IHN0cmluZztcbiAgICAvKiogVGhlIGJsb2NrIElEIG9yIGhlYWRlciB0aGlzIGxpbmsgcG9pbnRzIHRvIHdpdGhpbiBhIGZpbGUsIGlmIHJlbGV2YW50LiAqL1xuICAgIHB1YmxpYyBzdWJwYXRoPzogc3RyaW5nO1xuICAgIC8qKiBJcyB0aGlzIGxpbmsgYW4gZW1iZWRkZWQgbGluayAob2YgZm9ybSAnIVtbaGVsbG9dXScpPyAqL1xuICAgIHB1YmxpYyBlbWJlZDogYm9vbGVhbjtcbiAgICAvKiogVGhlIHR5cGUgb2YgdGhpcyBsaW5rLCB3aGljaCBkZXRlcm1pbmVzIHdoYXQgJ3N1YnBhdGgnIHJlZmVycyB0bywgaWYgYW55dGhpbmcuICovXG4gICAgcHVibGljIHR5cGU6IFwiZmlsZVwiIHwgXCJoZWFkZXJcIiB8IFwiYmxvY2tcIjtcblxuICAgIC8qKiBDcmVhdGUgYSBsaW5rIHRvIGEgc3BlY2lmaWMgZmlsZS4gKi9cbiAgICBwdWJsaWMgc3RhdGljIGZpbGUocGF0aDogc3RyaW5nLCBlbWJlZDogYm9vbGVhbiA9IGZhbHNlLCBkaXNwbGF5Pzogc3RyaW5nKTogTGluayB7XG4gICAgICAgIHJldHVybiBuZXcgTGluayh7XG4gICAgICAgICAgICBwYXRoLFxuICAgICAgICAgICAgZW1iZWQsXG4gICAgICAgICAgICBkaXNwbGF5LFxuICAgICAgICAgICAgc3VicGF0aDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgdHlwZTogXCJmaWxlXCIsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBJbmZlciB0aGUgdHlwZSBvZiB0aGUgbGluayBmcm9tIHRoZSBmdWxsIGludGVybmFsIGxpbmsgcGF0aC4gKi9cbiAgICBwdWJsaWMgc3RhdGljIGluZmVyKGxpbmtwYXRoOiBzdHJpbmcsIGVtYmVkOiBib29sZWFuID0gZmFsc2UsIGRpc3BsYXk/OiBzdHJpbmcpOiBMaW5rIHtcbiAgICAgICAgaWYgKGxpbmtwYXRoLmluY2x1ZGVzKFwiI15cIikpIHtcbiAgICAgICAgICAgIGxldCBzcGxpdCA9IGxpbmtwYXRoLnNwbGl0KFwiI15cIik7XG4gICAgICAgICAgICByZXR1cm4gTGluay5ibG9jayhzcGxpdFswXSwgc3BsaXRbMV0sIGVtYmVkLCBkaXNwbGF5KTtcbiAgICAgICAgfSBlbHNlIGlmIChsaW5rcGF0aC5pbmNsdWRlcyhcIiNcIikpIHtcbiAgICAgICAgICAgIGxldCBzcGxpdCA9IGxpbmtwYXRoLnNwbGl0KFwiI1wiKTtcbiAgICAgICAgICAgIHJldHVybiBMaW5rLmhlYWRlcihzcGxpdFswXSwgc3BsaXRbMV0sIGVtYmVkLCBkaXNwbGF5KTtcbiAgICAgICAgfSBlbHNlIHJldHVybiBMaW5rLmZpbGUobGlua3BhdGgsIGVtYmVkLCBkaXNwbGF5KTtcbiAgICB9XG5cbiAgICAvKiogQ3JlYXRlIGEgbGluayB0byBhIHNwZWNpZmljIGZpbGUgYW5kIGhlYWRlciBpbiB0aGF0IGZpbGUuICovXG4gICAgcHVibGljIHN0YXRpYyBoZWFkZXIocGF0aDogc3RyaW5nLCBoZWFkZXI6IHN0cmluZywgZW1iZWQ/OiBib29sZWFuLCBkaXNwbGF5Pzogc3RyaW5nKTogTGluayB7XG4gICAgICAgIC8vIEhlYWRlcnMgbmVlZCB0byBiZSBub3JtYWxpemVkIHRvIGFscGhhLW51bWVyaWMgJiB3aXRoIGV4dHJhIHNwYWNpbmcgcmVtb3ZlZC5cbiAgICAgICAgcmV0dXJuIG5ldyBMaW5rKHtcbiAgICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgICBlbWJlZCxcbiAgICAgICAgICAgIGRpc3BsYXksXG4gICAgICAgICAgICBzdWJwYXRoOiBub3JtYWxpemVIZWFkZXJGb3JMaW5rKGhlYWRlciksXG4gICAgICAgICAgICB0eXBlOiBcImhlYWRlclwiLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQ3JlYXRlIGEgbGluayB0byBhIHNwZWNpZmljIGZpbGUgYW5kIGJsb2NrIGluIHRoYXQgZmlsZS4gKi9cbiAgICBwdWJsaWMgc3RhdGljIGJsb2NrKHBhdGg6IHN0cmluZywgYmxvY2tJZDogc3RyaW5nLCBlbWJlZD86IGJvb2xlYW4sIGRpc3BsYXk/OiBzdHJpbmcpOiBMaW5rIHtcbiAgICAgICAgcmV0dXJuIG5ldyBMaW5rKHtcbiAgICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgICBlbWJlZCxcbiAgICAgICAgICAgIGRpc3BsYXksXG4gICAgICAgICAgICBzdWJwYXRoOiBibG9ja0lkLFxuICAgICAgICAgICAgdHlwZTogXCJibG9ja1wiLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogTG9hZCBhIGxpbmsgZnJvbSBpdCdzIHJhdyBKU09OIHJlcHJlc2VudGF0aW9uLiAqL1xuICAgIHB1YmxpYyBzdGF0aWMgZnJvbU9iamVjdChvYmplY3Q6IEpzb25MaW5rKTogTGluayB7XG4gICAgICAgIHJldHVybiBuZXcgTGluayhvYmplY3QpO1xuICAgIH1cblxuICAgIC8qKiBDcmVhdGUgYSBsaW5rIGJ5IHBhcnNpbmcgaXQncyBpbnRlcmlvciBwYXJ0IChpbnNpZGUgb2YgdGhlICdbW11dJykuICovXG4gICAgcHVibGljIHN0YXRpYyBwYXJzZUlubmVyKHJhd2xpbms6IHN0cmluZyk6IExpbmsge1xuICAgICAgICBsZXQgW2xpbmssIGRpc3BsYXldID0gc3BsaXRPblVuZXNjYXBlZFBpcGUocmF3bGluayk7XG4gICAgICAgIHJldHVybiBMaW5rLmluZmVyKGxpbmssIGZhbHNlLCBkaXNwbGF5KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbnN0cnVjdG9yKGZpZWxkczogUGFydGlhbDxMaW5rPikge1xuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGZpZWxkcyk7XG4gICAgfVxuXG4gICAgLyoqIFVwZGF0ZSB0aGlzIGxpbmsgd2l0aCBhIG5ldyBwYXRoLiAqL1xuICAgIHB1YmxpYyB3aXRoUGF0aChwYXRoOiBzdHJpbmcpOiBMaW5rIHtcbiAgICAgICAgcmV0dXJuIG5ldyBMaW5rKE9iamVjdC5hc3NpZ24oe30sIHRoaXMsIHsgcGF0aCB9KSk7XG4gICAgfVxuXG4gICAgLyoqIFJldHVybiBhIG5ldyBsaW5rIHdoaWNoIHBvaW50cyB0byB0aGUgc2FtZSBsb2NhdGlvbiBidXQgd2l0aCBhIG5ldyBkaXNwbGF5IHZhbHVlLiAqL1xuICAgIHB1YmxpYyB3aXRoRGlzcGxheShkaXNwbGF5Pzogc3RyaW5nKTogTGluayB7XG4gICAgICAgIHJldHVybiBuZXcgTGluayhPYmplY3QuYXNzaWduKHt9LCB0aGlzLCB7IGRpc3BsYXkgfSkpO1xuICAgIH1cblxuICAgIC8qKiBSZXR1cm4gYSBuZXcgbGluayB3aGljaCBoYXMgdGhlIGdpdmVuIGVtYmVkZGVkIHN0YXR1cy4gKi9cbiAgICBwdWJsaWMgd2l0aEVtYmVkKGVtYmVkOiBib29sZWFuKTogTGluayB7XG4gICAgICAgIGlmICh0aGlzLmVtYmVkID09IGVtYmVkKSByZXR1cm4gdGhpcztcblxuICAgICAgICByZXR1cm4gbmV3IExpbmsoT2JqZWN0LmFzc2lnbih7fSwgdGhpcywgeyBlbWJlZCB9KSk7XG4gICAgfVxuXG4gICAgLyoqIENvbnZlcnQgYSBmaWxlIGxpbmsgaW50byBhIGxpbmsgdG8gYSBzcGVjaWZpYyBoZWFkZXIuICovXG4gICAgcHVibGljIHdpdGhIZWFkZXIoaGVhZGVyOiBzdHJpbmcpOiBMaW5rIHtcbiAgICAgICAgcmV0dXJuIExpbmsuaGVhZGVyKHRoaXMucGF0aCwgaGVhZGVyLCB0aGlzLmVtYmVkLCB0aGlzLmRpc3BsYXkpO1xuICAgIH1cblxuICAgIC8qKiBDb252ZXJ0IGEgZmlsZSBsaW5rIGludG8gYSBsaW5rIHRvIGEgc3BlY2lmaWNiIGxvY2suICovXG4gICAgcHVibGljIHdpdGhCbG9jayhibG9jazogc3RyaW5nKTogTGluayB7XG4gICAgICAgIHJldHVybiBMaW5rLmJsb2NrKHRoaXMucGF0aCwgYmxvY2ssIHRoaXMuZW1iZWQsIHRoaXMuZGlzcGxheSk7XG4gICAgfVxuXG4gICAgLyoqIENoZWNrcyBmb3IgbGluayBlcXVhbGl0eSAoaS5lLiwgdGhhdCB0aGUgbGlua3MgYXJlIHBvaW50aW5nIHRvIHRoZSBzYW1lIGV4YWN0IGxvY2F0aW9uKS4gKi9cbiAgICBwdWJsaWMgZXF1YWxzKG90aGVyOiBMaW5rKTogYm9vbGVhbiB7XG4gICAgICAgIGlmIChvdGhlciA9PSB1bmRlZmluZWQgfHwgb3RoZXIgPT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgICAgIHJldHVybiB0aGlzLnBhdGggPT0gb3RoZXIucGF0aCAmJiB0aGlzLnR5cGUgPT0gb3RoZXIudHlwZSAmJiB0aGlzLnN1YnBhdGggPT0gb3RoZXIuc3VicGF0aDtcbiAgICB9XG5cbiAgICAvKiogQ29udmVydCB0aGlzIGxpbmsgdG8gaXQncyBtYXJrZG93biByZXByZXNlbnRhdGlvbi4gKi9cbiAgICBwdWJsaWMgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFya2Rvd24oKTtcbiAgICB9XG5cbiAgICAvKiogQ29udmVydCB0aGlzIGxpbmsgdG8gYSByYXcgb2JqZWN0IHdoaWNoIGlzIHNlcmlhbGl6YXRpb24tZnJpZW5kbHkuICovXG4gICAgcHVibGljIHRvT2JqZWN0KCk6IEpzb25MaW5rIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHBhdGg6IHRoaXMucGF0aCxcbiAgICAgICAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgICAgICAgIHN1YnBhdGg6IHRoaXMuc3VicGF0aCxcbiAgICAgICAgICAgIGRpc3BsYXk6IHRoaXMuZGlzcGxheSxcbiAgICAgICAgICAgIGVtYmVkOiB0aGlzLmVtYmVkLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKiBDb252ZXJ0IGFueSBsaW5rIGludG8gYSBsaW5rIHRvIGl0cyBmaWxlLiAqL1xuICAgIHB1YmxpYyB0b0ZpbGUoKTogTGluayB7XG4gICAgICAgIHJldHVybiBMaW5rLmZpbGUodGhpcy5wYXRoLCB0aGlzLmVtYmVkLCB0aGlzLmRpc3BsYXkpO1xuICAgIH1cblxuICAgIC8qKiBDb252ZXJ0IHRoaXMgbGluayBpbnRvIGFuIGVtYmVkZGVkIGxpbmsuICovXG4gICAgcHVibGljIHRvRW1iZWQoKTogTGluayB7XG4gICAgICAgIHJldHVybiB0aGlzLndpdGhFbWJlZCh0cnVlKTtcbiAgICB9XG5cbiAgICAvKiogQ29udmVydCB0aGlzIGxpbmsgaW50byBhIG5vbi1lbWJlZGRlZCBsaW5rLiAqL1xuICAgIHB1YmxpYyBmcm9tRW1iZWQoKTogTGluayB7XG4gICAgICAgIHJldHVybiB0aGlzLndpdGhFbWJlZChmYWxzZSk7XG4gICAgfVxuXG4gICAgLyoqIENvbnZlcnQgdGhpcyBsaW5rIHRvIG1hcmtkb3duIHNvIGl0IGNhbiBiZSByZW5kZXJlZC4gKi9cbiAgICBwdWJsaWMgbWFya2Rvd24oKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IHJlc3VsdCA9ICh0aGlzLmVtYmVkID8gXCIhXCIgOiBcIlwiKSArIFwiW1tcIiArIHRoaXMub2JzaWRpYW5MaW5rKCk7XG4gICAgICAgIHJlc3VsdCArPSBcInxcIjtcbiAgICAgICAgcmVzdWx0ICs9IHRoaXMuZGlzcGxheU9yRGVmYXVsdCgpO1xuICAgICAgICByZXN1bHQgKz0gXCJdXVwiO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKiBPYnRhaW4gdGhlIGRpc3BsYXkgZm9yIHRoaXMgbGluayBpZiBwcmVzZW50LCBvciByZXR1cm4gYSBzaW1wbGUgZGVmYXVsdCBkaXNwbGF5LiAqL1xuICAgIHB1YmxpYyBkaXNwbGF5T3JEZWZhdWx0KCkge1xuICAgICAgICBpZiAodGhpcy5kaXNwbGF5KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kaXNwbGF5O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGV0IHJlc3VsdCA9IGdldEZpbGVUaXRsZSh0aGlzLnBhdGgpO1xuICAgICAgICAgICAgaWYgKHRoaXMudHlwZSA9PSBcImhlYWRlclwiIHx8IHRoaXMudHlwZSA9PSBcImJsb2NrXCIpIHJlc3VsdCArPSBcIiA+IFwiICsgdGhpcy5zdWJwYXRoO1xuXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIENvbnZlcnQgdGhlIGlubmVyIHBhcnQgb2YgdGhlIGxpbmsgdG8gc29tZXRoaW5nIHRoYXQgT2JzaWRpYW4gY2FuIG9wZW4gLyB1bmRlcnN0YW5kLiAqL1xuICAgIHB1YmxpYyBvYnNpZGlhbkxpbmsoKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZXNjYXBlZCA9IHRoaXMucGF0aC5yZXBsYWNlKFwifFwiLCBcIlxcXFx8XCIpO1xuICAgICAgICBpZiAodGhpcy50eXBlID09IFwiaGVhZGVyXCIpIHJldHVybiBlc2NhcGVkICsgXCIjXCIgKyB0aGlzLnN1YnBhdGg/LnJlcGxhY2UoXCJ8XCIsIFwiXFxcXHxcIik7XG4gICAgICAgIGlmICh0aGlzLnR5cGUgPT0gXCJibG9ja1wiKSByZXR1cm4gZXNjYXBlZCArIFwiI15cIiArIHRoaXMuc3VicGF0aD8ucmVwbGFjZShcInxcIiwgXCJcXFxcfFwiKTtcbiAgICAgICAgZWxzZSByZXR1cm4gZXNjYXBlZDtcbiAgICB9XG5cbiAgICAvKiogVGhlIHN0cmlwcGVkIG5hbWUgb2YgdGhlIGZpbGUgdGhpcyBsaW5rIHBvaW50cyB0by4gKi9cbiAgICBwdWJsaWMgZmlsZU5hbWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGdldEZpbGVUaXRsZSh0aGlzLnBhdGgpO1xuICAgIH1cbn1cblxuLyoqIFNlcmlhbGl6ZWQgZm9ybSBvZiBhIGxpbmsuXG4gKiBAaGlkZGVuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSnNvbkxpbmsge1xuICAgIC8qKiBUaGUgZmlsZSBwYXRoIHRoaXMgbGluayBwb2ludHMgdG8uICovXG4gICAgcGF0aDogc3RyaW5nO1xuICAgIC8qKiBUaGUgZGlzcGxheSBuYW1lIGFzc29jaWF0ZWQgd2l0aCB0aGUgbGluay4gKi9cbiAgICBkaXNwbGF5Pzogc3RyaW5nO1xuICAgIC8qKiBUaGUgYmxvY2sgSUQgb3IgaGVhZGVyIHRoaXMgbGluayBwb2ludHMgdG8gd2l0aGluIGEgZmlsZSwgaWYgcmVsZXZhbnQuICovXG4gICAgc3VicGF0aD86IHN0cmluZztcbiAgICAvKiogSXMgdGhpcyBsaW5rIGFuIGVtYmVkZGVkIGxpbmsgKG9mIGZvcm0gJyFbW2hlbGxvXV0nKT8gKi9cbiAgICBlbWJlZDogYm9vbGVhbjtcbiAgICAvKiogVGhlIHR5cGUgb2YgdGhpcyBsaW5rLCB3aGljaCBkZXRlcm1pbmVzIHdoYXQgJ3N1YnBhdGgnIHJlZmVycyB0bywgaWYgYW55dGhpbmcuICovXG4gICAgdHlwZTogXCJmaWxlXCIgfCBcImhlYWRlclwiIHwgXCJibG9ja1wiO1xufVxuXG4vKiogU3BsaXQgb24gdW5lc2NhcGVkIHBpcGVzIGluIGFuIGlubmVyIGxpbmsuXG4gKiBAaGlkZGVuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzcGxpdE9uVW5lc2NhcGVkUGlwZShsaW5rOiBzdHJpbmcpOiBbc3RyaW5nLCBzdHJpbmcgfCB1bmRlZmluZWRdIHtcbiAgICBsZXQgcGlwZSA9IC0xO1xuICAgIHdoaWxlICgocGlwZSA9IGxpbmsuaW5kZXhPZihcInxcIiwgcGlwZSArIDEpKSA+PSAwKSB7XG4gICAgICAgIGlmIChwaXBlID4gMCAmJiBsaW5rW3BpcGUgLSAxXSA9PSBcIlxcXFxcIikgY29udGludWU7XG4gICAgICAgIHJldHVybiBbbGluay5zdWJzdHJpbmcoMCwgcGlwZSkucmVwbGFjZSgvXFxcXFxcfC9nLCBcInxcIiksIGxpbmsuc3Vic3RyaW5nKHBpcGUgKyAxKV07XG4gICAgfVxuXG4gICAgcmV0dXJuIFtsaW5rLnJlcGxhY2UoL1xcXFxcXHwvZywgXCJ8XCIpLCB1bmRlZmluZWRdO1xufVxuIiwgImltcG9ydCB7IExpbmsgfSBmcm9tIFwiZXhwcmVzc2lvbi9saW5rXCI7XG5pbXBvcnQgeyBEYXRlVGltZSwgRHVyYXRpb24gfSBmcm9tIFwibHV4b25cIjtcbmltcG9ydCAqIGFzIFAgZnJvbSBcInBhcnNpbW1vblwiO1xuaW1wb3J0IHtcbiAgICBCaW5hcnlPcCxcbiAgICBFeHByZXNzaW9uLFxuICAgIEV4cHJlc3Npb25zLFxuICAgIExhbWJkYUV4cHJlc3Npb24sXG4gICAgTGlzdEV4cHJlc3Npb24sXG4gICAgTGl0ZXJhbEV4cHJlc3Npb24sXG4gICAgT2JqZWN0RXhwcmVzc2lvbixcbiAgICBWYXJpYWJsZUV4cHJlc3Npb24sXG59IGZyb20gXCIuL2V4cHJlc3Npb25cIjtcbmltcG9ydCBlbW9qaVJlZ2V4IGZyb20gXCJlbW9qaS1yZWdleFwiO1xuaW1wb3J0IHtcbiAgICBJbmRleENoaWxkT2YsXG4gICAgSW5kZXhQYXRoLFxuICAgIEluZGV4SWQsXG4gICAgSW5kZXhOb3QsXG4gICAgSW5kZXhQYXJlbnRPZixcbiAgICBJbmRleFF1ZXJ5LFxuICAgIEluZGV4VGFnZ2VkLFxuICAgIEluZGV4VHlwZWQsXG4gICAgSW5kZXhMaW5rZWQsXG4gICAgSW5kZXhGaWVsZCxcbiAgICBJbmRleEV4cHJlc3Npb24sXG59IGZyb20gXCJpbmRleC90eXBlcy9pbmRleC1xdWVyeVwiO1xuaW1wb3J0IHsgbm9ybWFsaXplRHVyYXRpb24gfSBmcm9tIFwidXRpbHMvbm9ybWFsaXplcnNcIjtcbmltcG9ydCB7IExpdGVyYWwgfSBmcm9tIFwiZXhwcmVzc2lvbi9saXRlcmFsXCI7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUGFyc2luZyBQcmltaXRpdmVzIC8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuLyoqIFByaW1pdGl2ZSBwYXJzaW5nIGZvciBjb21tb25seSBzZWVuIHR5cGVzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcmltaXRpdmVzTGFuZ3VhZ2Uge1xuICAgIG51bWJlcjogbnVtYmVyO1xuICAgIHN0cmluZzogc3RyaW5nO1xuICAgIGVzY2FwZUNoYXJhY3Rlcjogc3RyaW5nO1xuICAgIGJvb2w6IGJvb2xlYW47XG4gICAgdGFnOiBzdHJpbmc7XG4gICAgaWRlbnRpZmllcjogc3RyaW5nO1xuICAgIGxpbms6IExpbms7XG4gICAgZW1iZWRMaW5rOiBMaW5rO1xuICAgIHJvb3REYXRlOiBEYXRlVGltZTtcbiAgICBkYXRlU2hvcnRoYW5kOiBrZXlvZiB0eXBlb2YgREFURV9TSE9SVEhBTkRTO1xuICAgIGRhdGU6IERhdGVUaW1lO1xuICAgIGRhdGVQbHVzOiBEYXRlVGltZTtcbiAgICBkdXJhdGlvblR5cGU6IGtleW9mIHR5cGVvZiBEVVJBVElPTl9UWVBFUztcbiAgICBkdXJhdGlvbjogRHVyYXRpb247XG4gICAgcmF3TnVsbDogc3RyaW5nO1xuXG4gICAgYmluYXJ5UGx1c01pbnVzOiBCaW5hcnlPcDtcbiAgICBiaW5hcnlNdWxEaXY6IEJpbmFyeU9wO1xuICAgIGJpbmFyeUNvbXBhcmVPcDogQmluYXJ5T3A7XG4gICAgYmluYXJ5QW5kT3A6IEJpbmFyeU9wO1xuICAgIGJpbmFyeU9yT3A6IEJpbmFyeU9wO1xuXG4gICAgLy8gTGl0ZXJhbCBmaWVsZCBwYXJzaW5nIGZvciBpbmdlc3RpbmcgaW5saW5lIGZpZWxkcyBhbmQgZnJvbnRtYXR0ZXIuXG4gICAgYXRvbUlubGluZUZpZWxkOiBMaXRlcmFsO1xuICAgIGlubGluZUZpZWxkTGlzdDogTGl0ZXJhbFtdO1xuICAgIGlubGluZUZpZWxkOiBMaXRlcmFsO1xufVxuXG4vKiogSW1wbGVtZW50YXRpb25zIGZvciBtYW55IHByaW1pdGl2ZXMuICovXG5leHBvcnQgY29uc3QgUFJJTUlUSVZFUyA9IFAuY3JlYXRlTGFuZ3VhZ2U8UHJpbWl0aXZlc0xhbmd1YWdlPih7XG4gICAgbnVtYmVyOiAoXykgPT5cbiAgICAgICAgUC5yZWdleHAoLy0/WzAtOV0rKFxcLlswLTldKyk/LylcbiAgICAgICAgICAgIC5tYXAoKHN0cikgPT4gTnVtYmVyLnBhcnNlRmxvYXQoc3RyKSlcbiAgICAgICAgICAgIC5kZXNjKFwibnVtYmVyXCIpLFxuXG4gICAgLy8gQSBxdW90ZS1zdXJyb3VuZGVkIHN0cmluZyB3aGljaCBzdXBwb3J0cyBlc2NhcGUgY2hhcmFjdGVycyAoJ1xcJykuXG4gICAgc3RyaW5nOiAocSkgPT5cbiAgICAgICAgUC5zdHJpbmcoJ1wiJylcbiAgICAgICAgICAgIC50aGVuKFxuICAgICAgICAgICAgICAgIFAuYWx0KHEuZXNjYXBlQ2hhcmFjdGVyLCBQLm5vbmVPZignXCJcXFxcJykpXG4gICAgICAgICAgICAgICAgICAgIC5hdExlYXN0KDApXG4gICAgICAgICAgICAgICAgICAgIC5tYXAoKGNoYXJzKSA9PiBjaGFycy5qb2luKFwiXCIpKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnNraXAoUC5zdHJpbmcoJ1wiJykpXG4gICAgICAgICAgICAuZGVzYyhcInN0cmluZ1wiKSxcblxuICAgIGVzY2FwZUNoYXJhY3RlcjogKF8pID0+XG4gICAgICAgIFAuc3RyaW5nKFwiXFxcXFwiKVxuICAgICAgICAgICAgLnRoZW4oUC5hbnkpXG4gICAgICAgICAgICAubWFwKChlc2NhcGVkKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gSWYgd2UgYXJlIGVzY2FwaW5nIGEgYmFja3NsYXNoIG9yIGEgcXVvdGUsIHBhc3MgaW4gb24gaW4gZXNjYXBlZCBmb3JtXG4gICAgICAgICAgICAgICAgaWYgKGVzY2FwZWQgPT09ICdcIicpIHJldHVybiAnXCInO1xuICAgICAgICAgICAgICAgIGlmIChlc2NhcGVkID09PSBcIlxcXFxcIikgcmV0dXJuIFwiXFxcXFwiO1xuICAgICAgICAgICAgICAgIGVsc2UgcmV0dXJuIFwiXFxcXFwiICsgZXNjYXBlZDtcbiAgICAgICAgICAgIH0pLFxuXG4gICAgLy8gQSBib29sZWFuIHRydWUvZmFsc2UgdmFsdWUuXG4gICAgYm9vbDogKF8pID0+XG4gICAgICAgIFAucmVnZXhwKC90cnVlfGZhbHNlfFRydWV8RmFsc2UvKVxuICAgICAgICAgICAgLm1hcCgoc3RyKSA9PiBzdHIudG9Mb3dlckNhc2UoKSA9PSBcInRydWVcIilcbiAgICAgICAgICAgIC5kZXNjKFwiYm9vbGVhblwiKSxcblxuICAgIC8vIEEgdGFnIG9mIHRoZSBmb3JtICcjc3R1ZmYvaGVsbG8tdGhlcmUnLlxuICAgIHRhZzogKF8pID0+XG4gICAgICAgIFAuc2VxTWFwKFxuICAgICAgICAgICAgUC5zdHJpbmcoXCIjXCIpLFxuICAgICAgICAgICAgUC5hbHQoUC5yZWdleHAoL1teXFx1MjAwMC1cXHUyMDZGXFx1MkUwMC1cXHUyRTdGJyFcIiMkJSYoKSorLC46Ozw9Pj9AXmB7fH1+XFxbXFxdXFxcXFxcc10vKS5kZXNjKFwidGV4dFwiKSkubWFueSgpLFxuICAgICAgICAgICAgKHN0YXJ0LCByZXN0KSA9PiBzdGFydCArIHJlc3Quam9pbihcIlwiKVxuICAgICAgICApLmRlc2MoXCJ0YWdcIiksXG5cbiAgICAvLyBBIHZhcmlhYmxlIGlkZW50aWZpZXIsIHdoaWNoIGlzIGFscGhhbnVtZXJpYyBhbmQgbXVzdCBzdGFydCB3aXRoIGEgbGV0dGVyIG9yLi4uIGVtb2ppLlxuICAgIGlkZW50aWZpZXI6IChfKSA9PlxuICAgICAgICBQLnNlcU1hcChcbiAgICAgICAgICAgIFAuYWx0KFAucmVnZXhwKC9bXFxwe0xldHRlcn0kXS91KSwgUC5yZWdleHAoRU1PSklfUkVHRVgpLmRlc2MoXCJ0ZXh0XCIpKSxcbiAgICAgICAgICAgIFAuYWx0KFAucmVnZXhwKC9bMC05XFxwe0xldHRlcn0kXy1dL3UpLCBQLnJlZ2V4cChFTU9KSV9SRUdFWCkuZGVzYyhcInRleHRcIikpLm1hbnkoKSxcbiAgICAgICAgICAgIChmaXJzdCwgcmVzdCkgPT4gZmlyc3QgKyByZXN0LmpvaW4oXCJcIilcbiAgICAgICAgKS5kZXNjKFwidmFyaWFibGVcIiksXG5cbiAgICAvLyBBbiBPYnNpZGlhbiBsaW5rIG9mIHRoZSBmb3JtIFtbPGxpbms+XV0uXG4gICAgbGluazogKF8pID0+XG4gICAgICAgIFAucmVnZXhwKC9cXFtcXFsoW15cXFtcXF1dKj8pXFxdXFxdL3UsIDEpXG4gICAgICAgICAgICAubWFwKChsaW5rSW5uZXIpID0+IExpbmsucGFyc2VJbm5lcihsaW5rSW5uZXIpKVxuICAgICAgICAgICAgLmRlc2MoXCJmaWxlIGxpbmtcIiksXG5cbiAgICAvLyBBbiBlbWJlZGRhYmxlIGxpbmsgd2hpY2ggY2FuIHN0YXJ0IHdpdGggJyEnLiBUaGlzIG92ZXJsYXBzIHdpdGggdGhlIG5vcm1hbCBuZWdhdGlvbiBvcGVyYXRvciwgc28gaXQgaXMgb25seVxuICAgIC8vIHByb3ZpZGVkIGZvciBtZXRhZGF0YSBwYXJzaW5nLlxuICAgIGVtYmVkTGluazogKHEpID0+XG4gICAgICAgIFAuc2VxTWFwKFAuc3RyaW5nKFwiIVwiKS5hdE1vc3QoMSksIHEubGluaywgKHAsIGwpID0+IHtcbiAgICAgICAgICAgIGlmIChwLmxlbmd0aCA+IDApIGwuZW1iZWQgPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuIGw7XG4gICAgICAgIH0pLmRlc2MoXCJmaWxlIGxpbmtcIiksXG5cbiAgICAvLyBCaW5hcnkgcGx1cyBvciBtaW51cyBvcGVyYXRvci5cbiAgICBiaW5hcnlQbHVzTWludXM6IChfKSA9PlxuICAgICAgICBQLnJlZ2V4cCgvXFwrfC0vKVxuICAgICAgICAgICAgLm1hcCgoc3RyKSA9PiBzdHIgYXMgQmluYXJ5T3ApXG4gICAgICAgICAgICAuZGVzYyhcIicrJyBvciAnLSdcIiksXG5cbiAgICAvLyBCaW5hcnkgdGltZXMgb3IgZGl2aWRlIG9wZXJhdG9yLlxuICAgIGJpbmFyeU11bERpdjogKF8pID0+XG4gICAgICAgIFAucmVnZXhwKC9cXCp8XFwvfCUvKVxuICAgICAgICAgICAgLm1hcCgoc3RyKSA9PiBzdHIgYXMgQmluYXJ5T3ApXG4gICAgICAgICAgICAuZGVzYyhcIicqJyBvciAnLycgb3IgJyUnXCIpLFxuXG4gICAgLy8gQmluYXJ5IGNvbXBhcmlzb24gb3BlcmF0b3IuXG4gICAgYmluYXJ5Q29tcGFyZU9wOiAoXykgPT5cbiAgICAgICAgUC5yZWdleHAoLz49fDw9fCE9fD58PHw9LylcbiAgICAgICAgICAgIC5tYXAoKHN0cikgPT4gc3RyIGFzIEJpbmFyeU9wKVxuICAgICAgICAgICAgLmRlc2MoXCInPj0nIG9yICc8PScgb3IgJyE9JyBvciAnPScgb3IgJz4nIG9yICc8J1wiKSxcblxuICAgIC8vIEJpbmFyeSBib29sZWFuIGNvbWJpbmF0aW9uIG9wZXJhdG9yLlxuICAgIGJpbmFyeUFuZE9wOiAoXykgPT5cbiAgICAgICAgUC5yZWdleHAoL2FuZHwmL2kpXG4gICAgICAgICAgICAubWFwKChfc3RyKSA9PiBcIiZcIiBhcyBCaW5hcnlPcClcbiAgICAgICAgICAgIC5kZXNjKFwiJ2FuZCdcIiksXG4gICAgYmluYXJ5T3JPcDogKF8pID0+XG4gICAgICAgIFAucmVnZXhwKC9vcnxcXHwvaSlcbiAgICAgICAgICAgIC5tYXAoKF9zdHIpID0+IFwifFwiIGFzIEJpbmFyeU9wKVxuICAgICAgICAgICAgLmRlc2MoXCInb3InXCIpLFxuXG4gICAgLy8gQSBkYXRlIHdoaWNoIGNhbiBiZSBZWVlZLU1NWy1ERFRISDptbTpzc10uXG4gICAgcm9vdERhdGU6IChfKSA9PlxuICAgICAgICBQLnNlcU1hcChQLnJlZ2V4cCgvXFxkezR9LyksIFAuc3RyaW5nKFwiLVwiKSwgUC5yZWdleHAoL1xcZHsyfS8pLCAoeWVhciwgXywgbW9udGgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBEYXRlVGltZS5mcm9tT2JqZWN0KHsgeWVhcjogTnVtYmVyLnBhcnNlSW50KHllYXIpLCBtb250aDogTnVtYmVyLnBhcnNlSW50KG1vbnRoKSB9KTtcbiAgICAgICAgfSkuZGVzYyhcImRhdGUgaW4gZm9ybWF0IFlZWVktTU1bLUREVEhILU1NLVNTLk1TXVwiKSxcbiAgICBkYXRlU2hvcnRoYW5kOiAoXykgPT5cbiAgICAgICAgUC5hbHQoXG4gICAgICAgICAgICAuLi5PYmplY3Qua2V5cyhEQVRFX1NIT1JUSEFORFMpXG4gICAgICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IGIubGVuZ3RoIC0gYS5sZW5ndGgpXG4gICAgICAgICAgICAgICAgLm1hcChQLnN0cmluZylcbiAgICAgICAgKSBhcyBQLlBhcnNlcjxrZXlvZiB0eXBlb2YgREFURV9TSE9SVEhBTkRTPixcbiAgICBkYXRlOiAocSkgPT5cbiAgICAgICAgY2hhaW5PcHQ8RGF0ZVRpbWU+KFxuICAgICAgICAgICAgcS5yb290RGF0ZSxcbiAgICAgICAgICAgICh5bTogRGF0ZVRpbWUpID0+XG4gICAgICAgICAgICAgICAgUC5zZXFNYXAoUC5zdHJpbmcoXCItXCIpLCBQLnJlZ2V4cCgvXFxkezJ9LyksIChfLCBkYXkpID0+IHltLnNldCh7IGRheTogTnVtYmVyLnBhcnNlSW50KGRheSkgfSkpLFxuICAgICAgICAgICAgKHltZDogRGF0ZVRpbWUpID0+XG4gICAgICAgICAgICAgICAgUC5zZXFNYXAoUC5zdHJpbmcoXCJUXCIpLCBQLnJlZ2V4cCgvXFxkezJ9LyksIChfLCBob3VyKSA9PiB5bWQuc2V0KHsgaG91cjogTnVtYmVyLnBhcnNlSW50KGhvdXIpIH0pKSxcbiAgICAgICAgICAgICh5bWRoOiBEYXRlVGltZSkgPT5cbiAgICAgICAgICAgICAgICBQLnNlcU1hcChQLnN0cmluZyhcIjpcIiksIFAucmVnZXhwKC9cXGR7Mn0vKSwgKF8sIG1pbnV0ZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgeW1kaC5zZXQoeyBtaW51dGU6IE51bWJlci5wYXJzZUludChtaW51dGUpIH0pXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICh5bWRobTogRGF0ZVRpbWUpID0+XG4gICAgICAgICAgICAgICAgUC5zZXFNYXAoUC5zdHJpbmcoXCI6XCIpLCBQLnJlZ2V4cCgvXFxkezJ9LyksIChfLCBzZWNvbmQpID0+XG4gICAgICAgICAgICAgICAgICAgIHltZGhtLnNldCh7IHNlY29uZDogTnVtYmVyLnBhcnNlSW50KHNlY29uZCkgfSlcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKHltZGhtczogRGF0ZVRpbWUpID0+XG4gICAgICAgICAgICAgICAgUC5hbHQoXG4gICAgICAgICAgICAgICAgICAgIFAuc2VxTWFwKFAuc3RyaW5nKFwiLlwiKSwgUC5yZWdleHAoL1xcZHszfS8pLCAoXywgbWlsbGlzZWNvbmQpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICB5bWRobXMuc2V0KHsgbWlsbGlzZWNvbmQ6IE51bWJlci5wYXJzZUludChtaWxsaXNlY29uZCkgfSlcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgUC5zdWNjZWVkKHltZGhtcykgLy8gcGFzc1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAoZHQ6IERhdGVUaW1lKSA9PlxuICAgICAgICAgICAgICAgIFAuYWx0KFxuICAgICAgICAgICAgICAgICAgICBQLnNlcU1hcChQLnN0cmluZyhcIitcIikub3IoUC5zdHJpbmcoXCItXCIpKSwgUC5yZWdleHAoL1xcZHsxLDJ9KDpcXGR7Mn0pPy8pLCAocG0sIGhyKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgZHQuc2V0Wm9uZShcIlVUQ1wiICsgcG0gKyBociwgeyBrZWVwTG9jYWxUaW1lOiB0cnVlIH0pXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIFAuc2VxTWFwKFAuc3RyaW5nKFwiWlwiKSwgKCkgPT4gZHQuc2V0Wm9uZShcInV0Y1wiLCB7IGtlZXBMb2NhbFRpbWU6IHRydWUgfSkpLFxuICAgICAgICAgICAgICAgICAgICBQLnNlcU1hcChQLnN0cmluZyhcIltcIiksIFAucmVnZXhwKC9bMC05QS1aYS16Ky1cXC9dKy91KSwgUC5zdHJpbmcoXCJdXCIpLCAoX2EsIHpvbmUsIF9iKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgZHQuc2V0Wm9uZSh6b25lLCB7IGtlZXBMb2NhbFRpbWU6IHRydWUgfSlcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgICAgICAgLmFzc2VydCgoZHQ6IERhdGVUaW1lKSA9PiBkdC5pc1ZhbGlkLCBcInZhbGlkIGRhdGVcIilcbiAgICAgICAgICAgIC5kZXNjKFwiZGF0ZSBpbiBmb3JtYXQgWVlZWS1NTVstRERUSEgtTU0tU1MuTVNdXCIpLFxuXG4gICAgLy8gQSBkYXRlLCBwbHVzIHZhcmlvdXMgc2hvcnRoYW5kIHRpbWVzIG9mIGRheSBpdCBjb3VsZCBiZS5cbiAgICBkYXRlUGx1czogKHEpID0+XG4gICAgICAgIFAuYWx0PERhdGVUaW1lPihcbiAgICAgICAgICAgIHEuZGF0ZVNob3J0aGFuZC5tYXAoKGQpID0+IERBVEVfU0hPUlRIQU5EU1tkXSgpKSxcbiAgICAgICAgICAgIHEuZGF0ZVxuICAgICAgICApLmRlc2MoXCJkYXRlIGluIGZvcm1hdCBZWVlZLU1NWy1ERFRISC1NTS1TUy5NU10gb3IgaW4gc2hvcnRoYW5kXCIpLFxuXG4gICAgLy8gQSBkdXJhdGlvbiBvZiB0aW1lLlxuICAgIGR1cmF0aW9uVHlwZTogKF8pID0+XG4gICAgICAgIFAuYWx0KFxuICAgICAgICAgICAgLi4uT2JqZWN0LmtleXMoRFVSQVRJT05fVFlQRVMpXG4gICAgICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IGIubGVuZ3RoIC0gYS5sZW5ndGgpXG4gICAgICAgICAgICAgICAgLm1hcChQLnN0cmluZylcbiAgICAgICAgKSBhcyBQLlBhcnNlcjxrZXlvZiB0eXBlb2YgRFVSQVRJT05fVFlQRVM+LFxuICAgIGR1cmF0aW9uOiAocSkgPT5cbiAgICAgICAgUC5zZXFNYXAocS5udW1iZXIsIFAub3B0V2hpdGVzcGFjZSwgcS5kdXJhdGlvblR5cGUsIChjb3VudCwgXywgdCkgPT5cbiAgICAgICAgICAgIERVUkFUSU9OX1RZUEVTW3RdLm1hcFVuaXRzKCh4KSA9PiB4ICogY291bnQpXG4gICAgICAgIClcbiAgICAgICAgICAgIC5zZXBCeTEoUC5zdHJpbmcoXCIsXCIpLnRyaW0oUC5vcHRXaGl0ZXNwYWNlKS5vcihQLm9wdFdoaXRlc3BhY2UpKVxuICAgICAgICAgICAgLm1hcCgoZHVyYXRpb25zKSA9PiBkdXJhdGlvbnMucmVkdWNlKChwLCBjKSA9PiBwLnBsdXMoYykpKVxuICAgICAgICAgICAgLmRlc2MoXCJkdXJhdGlvbiBsaWtlIDRocjJtaW5cIiksXG5cbiAgICAvLyBBIHJhdyBudWxsIHZhbHVlLlxuICAgIHJhd051bGw6IChfKSA9PiBQLnN0cmluZyhcIm51bGxcIiksXG5cbiAgICAvLyBJbmxpbmUgZmllbGQgdmFsdWUgcGFyc2luZy5cbiAgICBhdG9tSW5saW5lRmllbGQ6IChxKSA9PlxuICAgICAgICBQLmFsdChcbiAgICAgICAgICAgIHEuZGF0ZSxcbiAgICAgICAgICAgIHEuZHVyYXRpb24ubWFwKChkKSA9PiBub3JtYWxpemVEdXJhdGlvbihkKSksXG4gICAgICAgICAgICBxLnN0cmluZyxcbiAgICAgICAgICAgIHEudGFnLFxuICAgICAgICAgICAgcS5lbWJlZExpbmssXG4gICAgICAgICAgICBxLmJvb2wsXG4gICAgICAgICAgICBxLm51bWJlcixcbiAgICAgICAgICAgIHEucmF3TnVsbFxuICAgICAgICApLFxuICAgIGlubGluZUZpZWxkTGlzdDogKHEpID0+IHEuYXRvbUlubGluZUZpZWxkLnNlcEJ5KFAuc3RyaW5nKFwiLFwiKS50cmltKFAub3B0V2hpdGVzcGFjZSkubG9va2FoZWFkKHEuYXRvbUlubGluZUZpZWxkKSksXG4gICAgaW5saW5lRmllbGQ6IChxKSA9PlxuICAgICAgICBQLmFsdChcbiAgICAgICAgICAgIFAuc2VxTWFwKHEuYXRvbUlubGluZUZpZWxkLCBQLnN0cmluZyhcIixcIikudHJpbShQLm9wdFdoaXRlc3BhY2UpLCBxLmlubGluZUZpZWxkTGlzdCwgKGYsIF9zLCBsKSA9PlxuICAgICAgICAgICAgICAgIFtmXS5jb25jYXQobClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBxLmF0b21JbmxpbmVGaWVsZFxuICAgICAgICApLFxufSk7XG5cbi8qKiBFbW9qaSByZWdleCwgc3RycHBpbmcgYW55IHJlZ2V4IGZsYWdzIGl0IGhhcy4gKi9cbmNvbnN0IEVNT0pJX1JFR0VYID0gbmV3IFJlZ0V4cChlbW9qaVJlZ2V4KCksIFwiXCIpO1xuXG4vKiogUHJvdmlkZXMgYSBsb29rdXAgdGFibGUgZm9yIHVuaXQgZHVyYXRpb25zIG9mIHRoZSBnaXZlbiB0eXBlLiAqL1xuZXhwb3J0IGNvbnN0IERVUkFUSU9OX1RZUEVTID0ge1xuICAgIHllYXI6IER1cmF0aW9uLmZyb21PYmplY3QoeyB5ZWFyczogMSB9KSxcbiAgICB5ZWFyczogRHVyYXRpb24uZnJvbU9iamVjdCh7IHllYXJzOiAxIH0pLFxuICAgIHlyOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgeWVhcnM6IDEgfSksXG4gICAgeXJzOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgeWVhcnM6IDEgfSksXG5cbiAgICBtb250aDogRHVyYXRpb24uZnJvbU9iamVjdCh7IG1vbnRoczogMSB9KSxcbiAgICBtb250aHM6IER1cmF0aW9uLmZyb21PYmplY3QoeyBtb250aHM6IDEgfSksXG4gICAgbW86IER1cmF0aW9uLmZyb21PYmplY3QoeyBtb250aHM6IDEgfSksXG4gICAgbW9zOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgbW9udGhzOiAxIH0pLFxuXG4gICAgd2VlazogRHVyYXRpb24uZnJvbU9iamVjdCh7IHdlZWtzOiAxIH0pLFxuICAgIHdlZWtzOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgd2Vla3M6IDEgfSksXG4gICAgd2s6IER1cmF0aW9uLmZyb21PYmplY3QoeyB3ZWVrczogMSB9KSxcbiAgICB3a3M6IER1cmF0aW9uLmZyb21PYmplY3QoeyB3ZWVrczogMSB9KSxcbiAgICB3OiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgd2Vla3M6IDEgfSksXG5cbiAgICBkYXk6IER1cmF0aW9uLmZyb21PYmplY3QoeyBkYXlzOiAxIH0pLFxuICAgIGRheXM6IER1cmF0aW9uLmZyb21PYmplY3QoeyBkYXlzOiAxIH0pLFxuICAgIGQ6IER1cmF0aW9uLmZyb21PYmplY3QoeyBkYXlzOiAxIH0pLFxuXG4gICAgaG91cjogRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxIH0pLFxuICAgIGhvdXJzOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDEgfSksXG4gICAgaHI6IER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMSB9KSxcbiAgICBocnM6IER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMSB9KSxcbiAgICBoOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDEgfSksXG5cbiAgICBtaW51dGU6IER1cmF0aW9uLmZyb21PYmplY3QoeyBtaW51dGVzOiAxIH0pLFxuICAgIG1pbnV0ZXM6IER1cmF0aW9uLmZyb21PYmplY3QoeyBtaW51dGVzOiAxIH0pLFxuICAgIG1pbjogRHVyYXRpb24uZnJvbU9iamVjdCh7IG1pbnV0ZXM6IDEgfSksXG4gICAgbWluczogRHVyYXRpb24uZnJvbU9iamVjdCh7IG1pbnV0ZXM6IDEgfSksXG4gICAgbTogRHVyYXRpb24uZnJvbU9iamVjdCh7IG1pbnV0ZXM6IDEgfSksXG5cbiAgICBzZWNvbmQ6IER1cmF0aW9uLmZyb21PYmplY3QoeyBzZWNvbmRzOiAxIH0pLFxuICAgIHNlY29uZHM6IER1cmF0aW9uLmZyb21PYmplY3QoeyBzZWNvbmRzOiAxIH0pLFxuICAgIHNlYzogRHVyYXRpb24uZnJvbU9iamVjdCh7IHNlY29uZHM6IDEgfSksXG4gICAgc2VjczogRHVyYXRpb24uZnJvbU9iamVjdCh7IHNlY29uZHM6IDEgfSksXG4gICAgczogRHVyYXRpb24uZnJvbU9iamVjdCh7IHNlY29uZHM6IDEgfSksXG59O1xuXG4vKiogU2hvcnRoYW5kIGZvciBjb21tb24gZGF0ZXMgKHJlbGF0aXZlIHRvIHJpZ2h0IG5vdykuICovXG5leHBvcnQgY29uc3QgREFURV9TSE9SVEhBTkRTID0ge1xuICAgIG5vdzogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKSxcbiAgICB0b2RheTogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5zdGFydE9mKFwiZGF5XCIpLFxuICAgIHllc3RlcmRheTogKCkgPT5cbiAgICAgICAgRGF0ZVRpbWUubG9jYWwoKVxuICAgICAgICAgICAgLnN0YXJ0T2YoXCJkYXlcIilcbiAgICAgICAgICAgIC5taW51cyhEdXJhdGlvbi5mcm9tT2JqZWN0KHsgZGF5czogMSB9KSksXG4gICAgdG9tb3Jyb3c6ICgpID0+XG4gICAgICAgIERhdGVUaW1lLmxvY2FsKClcbiAgICAgICAgICAgIC5zdGFydE9mKFwiZGF5XCIpXG4gICAgICAgICAgICAucGx1cyhEdXJhdGlvbi5mcm9tT2JqZWN0KHsgZGF5czogMSB9KSksXG4gICAgc293OiAoKSA9PiBEYXRlVGltZS5sb2NhbCgpLnN0YXJ0T2YoXCJ3ZWVrXCIpLFxuICAgIFwic3RhcnQtb2Ytd2Vla1wiOiAoKSA9PiBEYXRlVGltZS5sb2NhbCgpLnN0YXJ0T2YoXCJ3ZWVrXCIpLFxuICAgIGVvdzogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5lbmRPZihcIndlZWtcIiksXG4gICAgXCJlbmQtb2Ytd2Vla1wiOiAoKSA9PiBEYXRlVGltZS5sb2NhbCgpLmVuZE9mKFwid2Vla1wiKSxcbiAgICBzb3k6ICgpID0+IERhdGVUaW1lLmxvY2FsKCkuc3RhcnRPZihcInllYXJcIiksXG4gICAgXCJzdGFydC1vZi15ZWFyXCI6ICgpID0+IERhdGVUaW1lLmxvY2FsKCkuc3RhcnRPZihcInllYXJcIiksXG4gICAgZW95OiAoKSA9PiBEYXRlVGltZS5sb2NhbCgpLmVuZE9mKFwieWVhclwiKSxcbiAgICBcImVuZC1vZi15ZWFyXCI6ICgpID0+IERhdGVUaW1lLmxvY2FsKCkuZW5kT2YoXCJ5ZWFyXCIpLFxuICAgIHNvbTogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5zdGFydE9mKFwibW9udGhcIiksXG4gICAgXCJzdGFydC1vZi1tb250aFwiOiAoKSA9PiBEYXRlVGltZS5sb2NhbCgpLnN0YXJ0T2YoXCJtb250aFwiKSxcbiAgICBlb206ICgpID0+IERhdGVUaW1lLmxvY2FsKCkuZW5kT2YoXCJtb250aFwiKSxcbiAgICBcImVuZC1vZi1tb250aFwiOiAoKSA9PiBEYXRlVGltZS5sb2NhbCgpLmVuZE9mKFwibW9udGhcIiksXG59O1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBFeHByZXNzaW9uIExhbmd1YWdlIC8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbmV4cG9ydCB0eXBlIFBvc3RmaXhGcmFnbWVudCA9XG4gICAgfCB7IHR5cGU6IFwiZG90XCI7IGV4cHI6IHN0cmluZyB9XG4gICAgfCB7IHR5cGU6IFwiaW5kZXhcIjsgZXhwcjogRXhwcmVzc2lvbiB9XG4gICAgfCB7IHR5cGU6IFwiZnVuY3Rpb25cIjsgZXhwcnM6IEV4cHJlc3Npb25bXSB9O1xuXG5leHBvcnQgaW50ZXJmYWNlIEV4cHJlc3Npb25MYW5ndWFnZSB7XG4gICAgdmFyaWFibGU6IFZhcmlhYmxlRXhwcmVzc2lvbjtcbiAgICBudW1iZXI6IExpdGVyYWxFeHByZXNzaW9uO1xuICAgIGJvb2w6IExpdGVyYWxFeHByZXNzaW9uO1xuICAgIHN0cmluZzogTGl0ZXJhbEV4cHJlc3Npb247XG4gICAgZGF0ZTogTGl0ZXJhbEV4cHJlc3Npb247XG4gICAgZHVyYXRpb246IExpdGVyYWxFeHByZXNzaW9uO1xuICAgIGxpbms6IExpdGVyYWxFeHByZXNzaW9uO1xuICAgIG51bGw6IExpdGVyYWxFeHByZXNzaW9uO1xuXG4gICAgbGlzdDogTGlzdEV4cHJlc3Npb247XG4gICAgb2JqZWN0OiBPYmplY3RFeHByZXNzaW9uO1xuXG4gICAgbmVnYXRlZDogRXhwcmVzc2lvbjtcbiAgICBhdG9tOiBFeHByZXNzaW9uO1xuICAgIGluZGV4OiBFeHByZXNzaW9uO1xuICAgIGxhbWJkYTogTGFtYmRhRXhwcmVzc2lvbjtcblxuICAgIC8vIFBvc3RmaXggcGFyc2VycyBmb3IgZnVuY3Rpb24gY2FsbHMgJiB0aGUgbGlrZS5cbiAgICBkb3RQb3N0Zml4OiBQb3N0Zml4RnJhZ21lbnQ7XG4gICAgaW5kZXhQb3N0Zml4OiBQb3N0Zml4RnJhZ21lbnQ7XG4gICAgZnVuY3Rpb25Qb3N0Zml4OiBQb3N0Zml4RnJhZ21lbnQ7XG5cbiAgICAvLyBCaW5hcnkgb3AgcGFyc2Vycy5cbiAgICBiaW5hcnlNdWxEaXY6IEV4cHJlc3Npb247XG4gICAgYmluYXJ5UGx1c01pbnVzOiBFeHByZXNzaW9uO1xuICAgIGJpbmFyeUNvbXBhcmU6IEV4cHJlc3Npb247XG4gICAgYmluYXJ5Qm9vbGVhbjogRXhwcmVzc2lvbjtcbiAgICBiaW5hcnlPcDogRXhwcmVzc2lvbjtcbiAgICBwYXJlbnM6IEV4cHJlc3Npb247XG4gICAgZXhwcmVzc2lvbjogRXhwcmVzc2lvbjtcbn1cblxuLyoqXG4gKiBQYXJzZSBmb3IgdGhlIGRhdGFjb3JlIGV4cHJlc3Npb24gbGFuZ3VhZ2UsIHdoaWNoIHByb3ZpZGVzIHNpbXBsZSBhbmQgdmFndWVseSBKUy1sb29raW5nIGNvbXB1dGF0aW9uLlxuICovXG5leHBvcnQgY29uc3QgRVhQUkVTU0lPTiA9IFAuY3JlYXRlTGFuZ3VhZ2U8RXhwcmVzc2lvbkxhbmd1YWdlPih7XG4gICAgLy8gRmllbGQgcGFyc2luZy5cbiAgICB2YXJpYWJsZTogKF8pID0+IFBSSU1JVElWRVMuaWRlbnRpZmllci5tYXAoRXhwcmVzc2lvbnMudmFyaWFibGUpLmRlc2MoXCJ2YXJpYWJsZVwiKSxcbiAgICBudW1iZXI6IChfKSA9PiBQUklNSVRJVkVTLm51bWJlci5tYXAoRXhwcmVzc2lvbnMubGl0ZXJhbCkuZGVzYyhcIm51bWJlclwiKSxcbiAgICBzdHJpbmc6IChfKSA9PiBQUklNSVRJVkVTLnN0cmluZy5tYXAoRXhwcmVzc2lvbnMubGl0ZXJhbCkuZGVzYyhcInN0cmluZ1wiKSxcbiAgICBib29sOiAoXykgPT4gUFJJTUlUSVZFUy5ib29sLm1hcChFeHByZXNzaW9ucy5saXRlcmFsKS5kZXNjKFwiYm9vbGVhblwiKSxcbiAgICBkYXRlOiAoXykgPT5cbiAgICAgICAgY3JlYXRlRnVuY3Rpb24oXCJkYXRlXCIsIFBSSU1JVElWRVMuZGF0ZVBsdXMpXG4gICAgICAgICAgICAubWFwKChbX2Z1bmMsIGRhdGVdKSA9PiBFeHByZXNzaW9ucy5saXRlcmFsKGRhdGUpKVxuICAgICAgICAgICAgLmRlc2MoXCJkYXRlXCIpLFxuICAgIGR1cmF0aW9uOiAoXykgPT5cbiAgICAgICAgY3JlYXRlRnVuY3Rpb24oXCJkdXJcIiwgUFJJTUlUSVZFUy5kdXJhdGlvbilcbiAgICAgICAgICAgIC5tYXAoKFtfZnVuYywgZHVyXSkgPT4gRXhwcmVzc2lvbnMubGl0ZXJhbChkdXIpKVxuICAgICAgICAgICAgLmRlc2MoXCJkdXJhdGlvblwiKSxcbiAgICBudWxsOiAoXykgPT4gUFJJTUlUSVZFUy5yYXdOdWxsLm1hcCgoXykgPT4gRXhwcmVzc2lvbnMuTlVMTCksXG4gICAgbGluazogKF8pID0+IFBSSU1JVElWRVMubGluay5tYXAoRXhwcmVzc2lvbnMubGl0ZXJhbCksXG4gICAgbGlzdDogKHEpID0+XG4gICAgICAgIHEuZXhwcmVzc2lvblxuICAgICAgICAgICAgLnNlcEJ5KFAuc3RyaW5nKFwiLFwiKS50cmltKFAub3B0V2hpdGVzcGFjZSkpXG4gICAgICAgICAgICAud3JhcChQLnN0cmluZyhcIltcIikuc2tpcChQLm9wdFdoaXRlc3BhY2UpLCBQLm9wdFdoaXRlc3BhY2UudGhlbihQLnN0cmluZyhcIl1cIikpKVxuICAgICAgICAgICAgLm1hcCgobCkgPT4gRXhwcmVzc2lvbnMubGlzdChsKSlcbiAgICAgICAgICAgIC5kZXNjKFwibGlzdFwiKSxcbiAgICBvYmplY3Q6IChxKSA9PlxuICAgICAgICBQLnNlcU1hcChcbiAgICAgICAgICAgIFBSSU1JVElWRVMuaWRlbnRpZmllci5vcihQUklNSVRJVkVTLnN0cmluZyksXG4gICAgICAgICAgICBQLnN0cmluZyhcIjpcIikudHJpbShQLm9wdFdoaXRlc3BhY2UpLFxuICAgICAgICAgICAgcS5leHByZXNzaW9uLFxuICAgICAgICAgICAgKG5hbWUsIF9zZXAsIHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgbmFtZSwgdmFsdWUgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKVxuICAgICAgICAgICAgLnNlcEJ5KFAuc3RyaW5nKFwiLFwiKS50cmltKFAub3B0V2hpdGVzcGFjZSkpXG4gICAgICAgICAgICAud3JhcChQLnN0cmluZyhcIntcIikuc2tpcChQLm9wdFdoaXRlc3BhY2UpLCBQLm9wdFdoaXRlc3BhY2UudGhlbihQLnN0cmluZyhcIn1cIikpKVxuICAgICAgICAgICAgLm1hcCgodmFscykgPT4ge1xuICAgICAgICAgICAgICAgIGxldCByZXM6IFJlY29yZDxzdHJpbmcsIEV4cHJlc3Npb24+ID0ge307XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgZW50cnkgb2YgdmFscykgcmVzW2VudHJ5Lm5hbWVdID0gZW50cnkudmFsdWU7XG4gICAgICAgICAgICAgICAgcmV0dXJuIEV4cHJlc3Npb25zLm9iamVjdChyZXMpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5kZXNjKFwib2JqZWN0ICgneyBhOiAxLCBiOiAyIH0nKVwiKSxcblxuICAgIGF0b206IChxKSA9PlxuICAgICAgICBQLmFsdChcbiAgICAgICAgICAgIC8vIFBsYWNlIGVtYmVkIGxpbmtzIGFib3ZlIG5lZ2F0ZWQgZmllbGRzIGFzIHRoZXkgYXJlIHRoZSBzcGVjaWFsIHBhcnNlciBjYXNlICchW1t0aGluZ11dJyBhbmQgYXJlIGdlbmVyYWxseSB1bmFtYmlnaW91cy5cbiAgICAgICAgICAgIFBSSU1JVElWRVMuZW1iZWRMaW5rLm1hcCgobCkgPT4gRXhwcmVzc2lvbnMubGl0ZXJhbChsKSksXG4gICAgICAgICAgICBxLm5lZ2F0ZWQsXG4gICAgICAgICAgICBxLmxpbmssXG4gICAgICAgICAgICBxLmxpc3QsXG4gICAgICAgICAgICBxLm9iamVjdCxcbiAgICAgICAgICAgIHEubGFtYmRhLFxuICAgICAgICAgICAgcS5wYXJlbnMsXG4gICAgICAgICAgICBxLmJvb2wsXG4gICAgICAgICAgICBxLm51bWJlcixcbiAgICAgICAgICAgIHEuc3RyaW5nLFxuICAgICAgICAgICAgcS5kYXRlLFxuICAgICAgICAgICAgcS5kdXJhdGlvbixcbiAgICAgICAgICAgIHEubnVsbCxcbiAgICAgICAgICAgIHEudmFyaWFibGVcbiAgICAgICAgKSxcbiAgICBpbmRleDogKHEpID0+XG4gICAgICAgIFAuc2VxTWFwKHEuYXRvbSwgUC5hbHQocS5kb3RQb3N0Zml4LCBxLmluZGV4UG9zdGZpeCwgcS5mdW5jdGlvblBvc3RmaXgpLm1hbnkoKSwgKG9iaiwgcG9zdGZpeGVzKSA9PiB7XG4gICAgICAgICAgICBsZXQgcmVzdWx0ID0gb2JqO1xuICAgICAgICAgICAgZm9yIChsZXQgcG9zdCBvZiBwb3N0Zml4ZXMpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHBvc3QudHlwZSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFwiZG90XCI6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBFeHByZXNzaW9ucy5pbmRleChyZXN1bHQsIEV4cHJlc3Npb25zLmxpdGVyYWwocG9zdC5leHByKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcImluZGV4XCI6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBFeHByZXNzaW9ucy5pbmRleChyZXN1bHQsIHBvc3QuZXhwcik7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcImZ1bmN0aW9uXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBFeHByZXNzaW9ucy5mdW5jKHJlc3VsdCwgcG9zdC5leHBycyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0pLFxuICAgIG5lZ2F0ZWQ6IChxKSA9PiBQLnNlcU1hcChQLnN0cmluZyhcIiFcIiksIHEuaW5kZXgsIChfLCBmaWVsZCkgPT4gRXhwcmVzc2lvbnMubmVnYXRlKGZpZWxkKSkuZGVzYyhcIm5lZ2F0ZWQgZmllbGRcIiksXG4gICAgcGFyZW5zOiAocSkgPT4gcS5leHByZXNzaW9uLnRyaW0oUC5vcHRXaGl0ZXNwYWNlKS53cmFwKFAuc3RyaW5nKFwiKFwiKSwgUC5zdHJpbmcoXCIpXCIpKSxcbiAgICBsYW1iZGE6IChxKSA9PlxuICAgICAgICBQLnNlcU1hcChcbiAgICAgICAgICAgIFBSSU1JVElWRVMuaWRlbnRpZmllclxuICAgICAgICAgICAgICAgIC5zZXBCeShQLnN0cmluZyhcIixcIikudHJpbShQLm9wdFdoaXRlc3BhY2UpKVxuICAgICAgICAgICAgICAgIC53cmFwKFAuc3RyaW5nKFwiKFwiKS50cmltKFAub3B0V2hpdGVzcGFjZSksIFAuc3RyaW5nKFwiKVwiKS50cmltKFAub3B0V2hpdGVzcGFjZSkpLFxuICAgICAgICAgICAgUC5zdHJpbmcoXCI9PlwiKS50cmltKFAub3B0V2hpdGVzcGFjZSksXG4gICAgICAgICAgICBxLmV4cHJlc3Npb24sXG4gICAgICAgICAgICAoaWRlbnQsIF9pZ25vcmUsIHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogXCJsYW1iZGFcIiwgYXJndW1lbnRzOiBpZGVudCwgdmFsdWUgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKSxcblxuICAgIGRvdFBvc3RmaXg6IChxKSA9PiBQLnNlcU1hcChQLnN0cmluZyhcIi5cIiksIFBSSU1JVElWRVMuaWRlbnRpZmllciwgKF8sIGV4cHIpID0+ICh7IHR5cGU6IFwiZG90XCIsIGV4cHIgfSkpLFxuICAgIGluZGV4UG9zdGZpeDogKHEpID0+XG4gICAgICAgIFAuc2VxTWFwKFxuICAgICAgICAgICAgUC5zdHJpbmcoXCJbXCIpLFxuICAgICAgICAgICAgUC5vcHRXaGl0ZXNwYWNlLFxuICAgICAgICAgICAgcS5leHByZXNzaW9uLFxuICAgICAgICAgICAgUC5vcHRXaGl0ZXNwYWNlLFxuICAgICAgICAgICAgUC5zdHJpbmcoXCJdXCIpLFxuICAgICAgICAgICAgKF8sIF8yLCBleHByLCBfMywgXzQpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyB0eXBlOiBcImluZGV4XCIsIGV4cHIgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKSxcbiAgICBmdW5jdGlvblBvc3RmaXg6IChxKSA9PlxuICAgICAgICBQLnNlcU1hcChcbiAgICAgICAgICAgIFAuc3RyaW5nKFwiKFwiKSxcbiAgICAgICAgICAgIFAub3B0V2hpdGVzcGFjZSxcbiAgICAgICAgICAgIHEuZXhwcmVzc2lvbi5zZXBCeShQLnN0cmluZyhcIixcIikudHJpbShQLm9wdFdoaXRlc3BhY2UpKSxcbiAgICAgICAgICAgIFAub3B0V2hpdGVzcGFjZSxcbiAgICAgICAgICAgIFAuc3RyaW5nKFwiKVwiKSxcbiAgICAgICAgICAgIChfLCBfMSwgZXhwcnMsIF8yLCBfMykgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IHR5cGU6IFwiZnVuY3Rpb25cIiwgZXhwcnMgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKSxcblxuICAgIC8vIFRoZSBwcmVjZWRlbmNlIGhpZXJhcmNoeSBvZiBvcGVyYXRvcnMgLSBtdWx0aXBseS9kaXZpZGUsIGFkZC9zdWJ0cmFjdCwgY29tcGFyZSwgYW5kIHRoZW4gYm9vbGVhbiBvcGVyYXRpb25zLlxuICAgIGJpbmFyeU11bERpdjogKHEpID0+IGNyZWF0ZUJpbmFyeVBhcnNlcihxLmluZGV4LCBQUklNSVRJVkVTLmJpbmFyeU11bERpdiwgRXhwcmVzc2lvbnMuYmluYXJ5T3ApLFxuICAgIGJpbmFyeVBsdXNNaW51czogKHEpID0+IGNyZWF0ZUJpbmFyeVBhcnNlcihxLmJpbmFyeU11bERpdiwgUFJJTUlUSVZFUy5iaW5hcnlQbHVzTWludXMsIEV4cHJlc3Npb25zLmJpbmFyeU9wKSxcbiAgICBiaW5hcnlDb21wYXJlOiAocSkgPT4gY3JlYXRlQmluYXJ5UGFyc2VyKHEuYmluYXJ5UGx1c01pbnVzLCBQUklNSVRJVkVTLmJpbmFyeUNvbXBhcmVPcCwgRXhwcmVzc2lvbnMuYmluYXJ5T3ApLFxuICAgIGJpbmFyeUJvb2xlYW46IChxKSA9PlxuICAgICAgICBjcmVhdGVCaW5hcnlQYXJzZXIocS5iaW5hcnlDb21wYXJlLCBQUklNSVRJVkVTLmJpbmFyeUFuZE9wLm9yKFBSSU1JVElWRVMuYmluYXJ5T3JPcCksIEV4cHJlc3Npb25zLmJpbmFyeU9wKSxcbiAgICBiaW5hcnlPcDogKHEpID0+IHEuYmluYXJ5Qm9vbGVhbixcblxuICAgIGV4cHJlc3Npb246IChxKSA9PiBxLmJpbmFyeU9wLFxufSk7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBRdWVyeSBMYW5ndWFnZSAvL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuLyoqIFN1cHBvcnRlZCB0eXBlcyBpbiB0aGUgZ3JhbW1hciBmb3IgaW5kZXggcXVlcmllcy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnlMYW5ndWFnZSB7XG4gICAgcXVlcnlUYWc6IEluZGV4VGFnZ2VkO1xuICAgIHF1ZXJ5SWQ6IEluZGV4SWQ7XG4gICAgcXVlcnlUeXBlOiBJbmRleFR5cGVkO1xuICAgIHF1ZXJ5UGF0aDogSW5kZXhQYXRoO1xuICAgIHF1ZXJ5UGFyZW50T2Y6IEluZGV4UGFyZW50T2Y7XG4gICAgcXVlcnlDaGlsZE9mOiBJbmRleENoaWxkT2Y7XG4gICAgcXVlcnlTaW1wbGVMaW5rZWQ6IEluZGV4TGlua2VkO1xuICAgIHF1ZXJ5TGlua2VkOiBJbmRleExpbmtlZDtcbiAgICBxdWVyeUV4aXN0czogSW5kZXhGaWVsZDtcbiAgICBxdWVyeVF1b3RlZEV4cHJlc3Npb246IEluZGV4RXhwcmVzc2lvbjtcbiAgICBxdWVyeVJhd0V4cHJlc3Npb246IEluZGV4RXhwcmVzc2lvbjtcbiAgICBxdWVyeU5lZ2F0ZTogSW5kZXhOb3Q7XG4gICAgcXVlcnlQYXJlbnM6IEluZGV4UXVlcnk7XG4gICAgcXVlcnlBdG9tOiBJbmRleFF1ZXJ5O1xuICAgIHF1ZXJ5QW5kczogSW5kZXhRdWVyeTtcbiAgICBxdWVyeU9yczogSW5kZXhRdWVyeTtcbiAgICBxdWVyeTogSW5kZXhRdWVyeTtcbn1cblxuLyoqXG4gKiBQYXJzZXIgZm9yIHRoZSBxdWVyeSBsYW5ndWFnZS4gRGlkIEkgcmVhbGx5IG5lZWQgYSBxdWVyeSBsYW5ndWFnZSBpbnN0ZWFkIG9mIGp1c3QgYSBiZXR0ZXIgVUk/IFByb2JhYmx5IG5vdC5cbiAqIEJ1dCBxdWVyeSBsYW5ndWFnZXMgYXJlIGZ1biBmb3IgdGhlIHdob2xlIGZhbWlseSBhbmQgYXQgc29tZSBwb2ludCB5b3UgZ2V0IHNvIHVzZWQgdG8gd3JpdGluZyB0aGVtIHRoYXRcbiAqIHlvdSBkb24ndCBzdG9wIHRvIHRoaW5rIGlmIHlvdSAqbmVlZCogdG8gd3JpdGUgdGhlbSBhbnltb3JlLiBJdCdzIGdvb2QgdHlwaW5nIHByYWN0aWNlIGZvciBldmVyeW9uZS5cbiAqL1xuZXhwb3J0IGNvbnN0IFFVRVJZID0gUC5jcmVhdGVMYW5ndWFnZTxRdWVyeUxhbmd1YWdlPih7XG4gICAgcXVlcnlUYWc6IChfKSA9PiBQUklNSVRJVkVTLnRhZy5tYXAoKHZhbHVlKSA9PiAoeyB0eXBlOiBcInRhZ2dlZFwiLCB2YWx1ZSB9KSksXG4gICAgcXVlcnlJZDogKF8pID0+IGNyZWF0ZUZ1bmN0aW9uKFwiaWRcIiwgUFJJTUlUSVZFUy5zdHJpbmcpLm1hcCgoW18sIGlkXSkgPT4gKHsgdHlwZTogXCJpZFwiLCB2YWx1ZTogaWQgfSkpLFxuICAgIHF1ZXJ5VHlwZTogKF8pID0+XG4gICAgICAgIFAuc3RyaW5nKFwiQFwiKVxuICAgICAgICAgICAgLnRoZW4oUFJJTUlUSVZFUy5pZGVudGlmaWVyKVxuICAgICAgICAgICAgLm1hcCgodmFsdWUpID0+ICh7IHR5cGU6IFwidHlwZWRcIiwgdmFsdWU6IHZhbHVlIH0pKSxcblxuICAgIHF1ZXJ5UGF0aDogKF8pID0+XG4gICAgICAgIGNyZWF0ZUZ1bmN0aW9uKFAucmVnZXhwKC9lP3BhdGgvaSkuZGVzYyhcIltlXXBhdGhcIiksIFBSSU1JVElWRVMuc3RyaW5nKS5tYXAoKFtmdW5jLCBwYXRoXSkgPT4gKHtcbiAgICAgICAgICAgIHR5cGU6IFwicGF0aFwiLFxuICAgICAgICAgICAgdmFsdWU6IHBhdGgsXG4gICAgICAgICAgICBleGFjdDogZnVuYy50b0xvd2VyQ2FzZSgpID09PSBcImVwYXRoXCIsXG4gICAgICAgIH0pKSxcblxuICAgIHF1ZXJ5UGFyZW50T2Y6IChxKSA9PlxuICAgICAgICBjcmVhdGVGdW5jdGlvbihQLnJlZ2V4cCgvcGFyZW50b2Z8c3VwZXJ0cmVlL2kpLmRlc2MoXCJwYXJlbnRvZlwiKSwgcS5xdWVyeSkubWFwKChbZnVuYywgY2hpbGRyZW5dKSA9PiAoe1xuICAgICAgICAgICAgdHlwZTogXCJwYXJlbnQtb2ZcIixcbiAgICAgICAgICAgIGNoaWxkcmVuLFxuICAgICAgICAgICAgaW5jbHVzaXZlOiBmdW5jLnRvTG93ZXJDYXNlKCkgPT09IFwic3VwZXJ0cmVlXCIsXG4gICAgICAgIH0pKSxcbiAgICBxdWVyeUNoaWxkT2Y6IChxKSA9PlxuICAgICAgICBjcmVhdGVGdW5jdGlvbihQLnJlZ2V4cCgvY2hpbGRvZnxzdWJ0cmVlL2kpLmRlc2MoXCJjaGlsZG9mXCIpLCBxLnF1ZXJ5KS5tYXAoKFtmdW5jLCBwYXJlbnRzXSkgPT4gKHtcbiAgICAgICAgICAgIHR5cGU6IFwiY2hpbGQtb2ZcIixcbiAgICAgICAgICAgIHBhcmVudHMsXG4gICAgICAgICAgICBpbmNsdXNpdmU6IGZ1bmMudG9Mb3dlckNhc2UoKSA9PT0gXCJzdWJ0cmVlXCIsXG4gICAgICAgIH0pKSxcbiAgICBxdWVyeVNpbXBsZUxpbmtlZDogKF8pID0+XG4gICAgICAgIFBSSU1JVElWRVMubGluay5tYXAoKGxpbmspID0+ICh7XG4gICAgICAgICAgICB0eXBlOiBcImxpbmtlZFwiLFxuICAgICAgICAgICAgc291cmNlOiB7IHR5cGU6IFwibGlua1wiLCB2YWx1ZTogbGluayB9LFxuICAgICAgICAgICAgZGlyZWN0aW9uOiBcImluY29taW5nXCIsXG4gICAgICAgIH0pKSxcbiAgICBxdWVyeUxpbmtlZDogKHEpID0+XG4gICAgICAgIGNyZWF0ZUZ1bmN0aW9uKFAucmVnZXhwKC9saW5rc3RvfGxpbmtlZGZyb218Y29ubmVjdGVkL2kpLmRlc2MoXCJjb25uZWN0ZWRcIiksIHEucXVlcnkpLm1hcCgoW2Z1bmMsIHNvdXJjZV0pID0+ICh7XG4gICAgICAgICAgICB0eXBlOiBcImxpbmtlZFwiLFxuICAgICAgICAgICAgc291cmNlLFxuICAgICAgICAgICAgZGlyZWN0aW9uOlxuICAgICAgICAgICAgICAgIGZ1bmMudG9Mb3dlckNhc2UoKSA9PSBcImxpbmtzdG9cIiA/IFwiaW5jb21pbmdcIiA6IGZ1bmMudG9Mb3dlckNhc2UoKSA9PSBcImxpbmtlZGZyb21cIiA/IFwib3V0Z29pbmdcIiA6IFwiYm90aFwiLFxuICAgICAgICB9KSksXG4gICAgcXVlcnlFeGlzdHM6IChfKSA9PlxuICAgICAgICBjcmVhdGVGdW5jdGlvbihQLnJlZ2V4cCgvZXhpc3RzL2kpLmRlc2MoXCJleGlzdHNcIiksIFBSSU1JVElWRVMuaWRlbnRpZmllci5vcihQUklNSVRJVkVTLnN0cmluZykpLm1hcChcbiAgICAgICAgICAgIChbX2Z1bmMsIGlkZW50XSkgPT4gKHtcbiAgICAgICAgICAgICAgICB0eXBlOiBcImZpZWxkXCIsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGlkZW50LFxuICAgICAgICAgICAgfSlcbiAgICAgICAgKSxcbiAgICBxdWVyeVF1b3RlZEV4cHJlc3Npb246IChxKSA9PlxuICAgICAgICBjcmVhdGVGdW5jdGlvbihQLnJlZ2V4cCgvZXhwci9pKS5kZXNjKFwiZXhwclwiKSwgRVhQUkVTU0lPTi5leHByZXNzaW9uKS5tYXAoKFtfLCBleHByXSkgPT4gKHtcbiAgICAgICAgICAgIHR5cGU6IFwiZXhwcmVzc2lvblwiLFxuICAgICAgICAgICAgZXhwcmVzc2lvbjogZXhwcixcbiAgICAgICAgfSkpLFxuICAgIHF1ZXJ5UmF3RXhwcmVzc2lvbjogKHEpID0+IEVYUFJFU1NJT04uYmluYXJ5Q29tcGFyZS5tYXAoKGV4cHIpID0+ICh7IHR5cGU6IFwiZXhwcmVzc2lvblwiLCBleHByZXNzaW9uOiBleHByIH0pKSxcblxuICAgIHF1ZXJ5UGFyZW5zOiAocSkgPT4gcS5xdWVyeS50cmltKFAub3B0V2hpdGVzcGFjZSkud3JhcChQLnN0cmluZyhcIihcIiksIFAuc3RyaW5nKFwiKVwiKSksXG4gICAgcXVlcnlOZWdhdGU6IChxKSA9PlxuICAgICAgICBQLnN0cmluZyhcIiFcIilcbiAgICAgICAgICAgIC5za2lwKFAub3B0V2hpdGVzcGFjZSlcbiAgICAgICAgICAgIC50aGVuKHEucXVlcnlBdG9tKVxuICAgICAgICAgICAgLm1hcCgodmFsdWUpID0+ICh7XG4gICAgICAgICAgICAgICAgdHlwZTogXCJub3RcIixcbiAgICAgICAgICAgICAgICBlbGVtZW50OiB2YWx1ZSxcbiAgICAgICAgICAgIH0pKSxcbiAgICBxdWVyeUF0b206IChxKSA9PlxuICAgICAgICBQLmFsdDxJbmRleFF1ZXJ5PihcbiAgICAgICAgICAgIHEucXVlcnlQYXJlbnMsXG4gICAgICAgICAgICBxLnF1ZXJ5TmVnYXRlLFxuICAgICAgICAgICAgcS5xdWVyeVNpbXBsZUxpbmtlZCxcbiAgICAgICAgICAgIHEucXVlcnlUYWcsXG4gICAgICAgICAgICBxLnF1ZXJ5VHlwZSxcbiAgICAgICAgICAgIHEucXVlcnlJZCxcbiAgICAgICAgICAgIHEucXVlcnlFeGlzdHMsXG4gICAgICAgICAgICBxLnF1ZXJ5Q2hpbGRPZixcbiAgICAgICAgICAgIHEucXVlcnlQYXJlbnRPZixcbiAgICAgICAgICAgIHEucXVlcnlMaW5rZWQsXG4gICAgICAgICAgICBxLnF1ZXJ5UGF0aCxcbiAgICAgICAgICAgIHEucXVlcnlRdW90ZWRFeHByZXNzaW9uLFxuICAgICAgICAgICAgLy8gRXhwcmVzc2lvbnMgYXJlIGVzc2VudGlhbGx5IHRoZSBcImNhdGNoLWFsbFwiIG9mIG90aGVyd2lzZSB1bnBhcnNlYWJsZSB0ZXJtcywgc28gdGhleSBzaG91bGQgZ28gYWJzb2x1dGUgbGFzdC5cbiAgICAgICAgICAgIHEucXVlcnlSYXdFeHByZXNzaW9uXG4gICAgICAgICksXG4gICAgcXVlcnlBbmRzOiAocSkgPT5cbiAgICAgICAgY3JlYXRlQmluYXJ5UGFyc2VyKHEucXVlcnlBdG9tLCBQUklNSVRJVkVTLmJpbmFyeUFuZE9wLCAobGVmdCwgX29wLCByaWdodCkgPT4gKHtcbiAgICAgICAgICAgIHR5cGU6IFwiYW5kXCIsXG4gICAgICAgICAgICBlbGVtZW50czogW2xlZnQsIHJpZ2h0XSxcbiAgICAgICAgfSkpLFxuICAgIHF1ZXJ5T3JzOiAocSkgPT5cbiAgICAgICAgY3JlYXRlQmluYXJ5UGFyc2VyKHEucXVlcnlBbmRzLCBQUklNSVRJVkVTLmJpbmFyeU9yT3AsIChsZWZ0LCBfb3AsIHJpZ2h0KSA9PiAoe1xuICAgICAgICAgICAgdHlwZTogXCJvclwiLFxuICAgICAgICAgICAgZWxlbWVudHM6IFtsZWZ0LCByaWdodF0sXG4gICAgICAgIH0pKSxcbiAgICBxdWVyeTogKHEpID0+IHEucXVlcnlPcnMudHJpbShQLm9wdFdoaXRlc3BhY2UpLFxufSk7XG5cbi8qKiBSZXR1cm4gYSBuZXcgcGFyc2VyIHdoaWNoIGV4ZWN1dGVzIHRoZSB1bmRlcmx5aW5nIHBhcnNlciBhbmQgcmV0dXJucyBpdCdzIHJhdyBzdHJpbmcgcmVwcmVzZW50YXRpb24uICovXG5leHBvcnQgZnVuY3Rpb24gY2FwdHVyZVJhdzxUPihiYXNlOiBQLlBhcnNlcjxUPik6IFAuUGFyc2VyPFtULCBzdHJpbmddPiB7XG4gICAgcmV0dXJuIFAuY3VzdG9tKChfc3VjY2VzcywgX2ZhaWx1cmUpID0+IHtcbiAgICAgICAgcmV0dXJuIChpbnB1dCwgaSkgPT4ge1xuICAgICAgICAgICAgbGV0IHJlc3VsdCA9IChiYXNlIGFzIGFueSkuXyhpbnB1dCwgaSk7XG4gICAgICAgICAgICBpZiAoIXJlc3VsdC5zdGF0dXMpIHJldHVybiByZXN1bHQ7XG5cbiAgICAgICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCByZXN1bHQsIHsgdmFsdWU6IFtyZXN1bHQudmFsdWUsIGlucHV0LnN1YnN0cmluZyhpLCByZXN1bHQuaW5kZXgpXSB9KTtcbiAgICAgICAgfTtcbiAgICB9KTtcbn1cblxuLyoqIENyZWF0ZSBhIGxlZnQtYXNzb2NpYXRpdmUgYmluYXJ5IHBhcnNlciB3aGljaCBwYXJzZXMgdGhlIGdpdmVuIHN1Yi1lbGVtZW50IGFuZCBzZXBhcmF0b3IuIEhhbmRsZXMgd2hpdGVzcGFjZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVCaW5hcnlQYXJzZXI8VCwgVT4oXG4gICAgY2hpbGQ6IFAuUGFyc2VyPFQ+LFxuICAgIHNlcDogUC5QYXJzZXI8VT4sXG4gICAgY29tYmluZTogKGE6IFQsIGI6IFUsIGM6IFQpID0+IFRcbik6IFAuUGFyc2VyPFQ+IHtcbiAgICByZXR1cm4gUC5zZXFNYXAoY2hpbGQsIFAuc2VxKFAub3B0V2hpdGVzcGFjZSwgc2VwLCBQLm9wdFdoaXRlc3BhY2UsIGNoaWxkKS5tYW55KCksIChmaXJzdCwgcmVzdCkgPT4ge1xuICAgICAgICBpZiAocmVzdC5sZW5ndGggPT0gMCkgcmV0dXJuIGZpcnN0O1xuXG4gICAgICAgIGxldCBub2RlID0gY29tYmluZShmaXJzdCwgcmVzdFswXVsxXSwgcmVzdFswXVszXSk7XG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMTsgaW5kZXggPCByZXN0Lmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgICAgbm9kZSA9IGNvbWJpbmUobm9kZSwgcmVzdFtpbmRleF1bMV0sIHJlc3RbaW5kZXhdWzNdKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbm9kZTtcbiAgICB9KTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBwYXJzZXIgd2hpY2ggcGFyc2VzIFxcPGZ1bmN0aW9uXFw+KFxcPGFyZ3NcXD4pLlxuICogKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVGdW5jdGlvbjxUPihmdW5jOiBzdHJpbmcgfCBQLlBhcnNlcjxzdHJpbmc+LCBhcmdzOiBQLlBhcnNlcjxUPik6IFAuUGFyc2VyPFtzdHJpbmcsIFRdPiB7XG4gICAgY29uc3QgcmVhbEZ1bmMgPSB0eXBlb2YgZnVuYyA9PT0gXCJzdHJpbmdcIiA/IFAuc3RyaW5nKGZ1bmMpIDogZnVuYztcbiAgICByZXR1cm4gUC5zZXFNYXAoXG4gICAgICAgIHJlYWxGdW5jLnNraXAoUC5vcHRXaGl0ZXNwYWNlKSxcbiAgICAgICAgYXJncy50cmltKFAub3B0V2hpdGVzcGFjZSkud3JhcChQLnN0cmluZyhcIihcIiksIFAuc3RyaW5nKFwiKVwiKSksXG4gICAgICAgIChmLCBhKSA9PiBbZiwgYV1cbiAgICApO1xufVxuXG4vKiogQ2hhaW5zIGEgbGlzdCBvZiBwYXJzZXJzOyB0aGUgZmlyc3Qgb25lIG11c3Qgc3VjY2VlZCwgYnV0IGZvbGxvd2luZyBvbmVzIG1heSBmYWlsIHdpdGhvdXQgZmFpbGluZyB0aGUgb3ZlcmFsbCBwYXJzZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjaGFpbk9wdDxUPihiYXNlOiBQLlBhcnNlcjxUPiwgLi4uZnVuY3M6ICgocjogVCkgPT4gUC5QYXJzZXI8VD4pW10pOiBQLlBhcnNlcjxUPiB7XG4gICAgcmV0dXJuIFAuY3VzdG9tKChfc3VjY2VzcywgX2ZhaWx1cmUpID0+IHtcbiAgICAgICAgcmV0dXJuIChpbnB1dCwgaSkgPT4ge1xuICAgICAgICAgICAgbGV0IHJlc3VsdCA9IChiYXNlIGFzIGFueSkuXyhpbnB1dCwgaSk7XG4gICAgICAgICAgICBpZiAoIXJlc3VsdC5zdGF0dXMpIHJldHVybiByZXN1bHQ7XG5cbiAgICAgICAgICAgIGZvciAobGV0IGZ1bmMgb2YgZnVuY3MpIHtcbiAgICAgICAgICAgICAgICBsZXQgbmV4dCA9IChmdW5jKHJlc3VsdC52YWx1ZSBhcyBUKSBhcyBhbnkpLl8oaW5wdXQsIHJlc3VsdC5pbmRleCk7XG4gICAgICAgICAgICAgICAgaWYgKCFuZXh0LnN0YXR1cykgcmV0dXJuIHJlc3VsdDtcblxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IG5leHQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH07XG4gICAgfSk7XG59XG4iLCAiLyoqXG4gKiBAbW9kdWxlIGV4cHJlc3Npb25zXG4gKi9cbmltcG9ydCB7IERhdGVUaW1lLCBEdXJhdGlvbiB9IGZyb20gXCJsdXhvblwiO1xuaW1wb3J0IHsgTGluayB9IGZyb20gXCJleHByZXNzaW9uL2xpbmtcIjtcbmltcG9ydCB7IHJlbmRlck1pbmltYWxEYXRlLCByZW5kZXJNaW5pbWFsRHVyYXRpb24gfSBmcm9tIFwidXRpbHMvbm9ybWFsaXplcnNcIjtcblxuLy8gUmUtZXhwb3J0cyBvZiB1c2VmdWwgZ2VuZXJpYyB0eXBlcy5cbmV4cG9ydCB7IExpbmsgfTtcblxuLyoqIFNob3J0aGFuZCBmb3IgYSBtYXBwaW5nIGZyb20ga2V5cyB0byB2YWx1ZXMuICovXG5leHBvcnQgdHlwZSBEYXRhT2JqZWN0ID0gUmVjb3JkPHN0cmluZywgYW55Pjtcbi8qKiBUaGUgbGl0ZXJhbCB0eXBlcyBzdXBwb3J0ZWQgYnkgdGhlIHF1ZXJ5IGVuZ2luZS4gKi9cbmV4cG9ydCB0eXBlIExpdGVyYWxUeXBlID1cbiAgICB8IFwiYm9vbGVhblwiXG4gICAgfCBcIm51bWJlclwiXG4gICAgfCBcInN0cmluZ1wiXG4gICAgfCBcImRhdGVcIlxuICAgIHwgXCJkdXJhdGlvblwiXG4gICAgfCBcImxpbmtcIlxuICAgIHwgXCJhcnJheVwiXG4gICAgfCBcIm9iamVjdFwiXG4gICAgfCBcImZ1bmN0aW9uXCJcbiAgICB8IFwibnVsbFwiO1xuLyoqIFRoZSByYXcgdmFsdWVzIHRoYXQgYSBsaXRlcmFsIGNhbiB0YWtlIG9uLiAqL1xuZXhwb3J0IHR5cGUgTGl0ZXJhbCA9XG4gICAgfCBib29sZWFuXG4gICAgfCBudW1iZXJcbiAgICB8IHN0cmluZ1xuICAgIHwgRGF0ZVRpbWVcbiAgICB8IER1cmF0aW9uXG4gICAgfCBMaW5rXG4gICAgfCBBcnJheTxMaXRlcmFsPlxuICAgIHwgRGF0YU9iamVjdFxuICAgIHwgRnVuY3Rpb25cbiAgICB8IG51bGw7XG5cbi8qKiBNYXBzIHRoZSBzdHJpbmcgdHlwZSB0byBpdCdzIGV4dGVybmFsLCBBUEktZmFjaW5nIHJlcHJlc2VudGF0aW9uLiAqL1xuZXhwb3J0IHR5cGUgTGl0ZXJhbFJlcHI8VCBleHRlbmRzIExpdGVyYWxUeXBlPiA9IFQgZXh0ZW5kcyBcImJvb2xlYW5cIlxuICAgID8gYm9vbGVhblxuICAgIDogVCBleHRlbmRzIFwibnVtYmVyXCJcbiAgICA/IG51bWJlclxuICAgIDogVCBleHRlbmRzIFwic3RyaW5nXCJcbiAgICA/IHN0cmluZ1xuICAgIDogVCBleHRlbmRzIFwiZHVyYXRpb25cIlxuICAgID8gRHVyYXRpb25cbiAgICA6IFQgZXh0ZW5kcyBcImRhdGVcIlxuICAgID8gRGF0ZVRpbWVcbiAgICA6IFQgZXh0ZW5kcyBcIm51bGxcIlxuICAgID8gbnVsbFxuICAgIDogVCBleHRlbmRzIFwibGlua1wiXG4gICAgPyBMaW5rXG4gICAgOiBUIGV4dGVuZHMgXCJhcnJheVwiXG4gICAgPyBBcnJheTxMaXRlcmFsPlxuICAgIDogVCBleHRlbmRzIFwib2JqZWN0XCJcbiAgICA/IERhdGFPYmplY3RcbiAgICA6IFQgZXh0ZW5kcyBcImZ1bmN0aW9uXCJcbiAgICA/IEZ1bmN0aW9uXG4gICAgOiBhbnk7XG5cbi8qKiBBIHdyYXBwZWQgbGl0ZXJhbCB2YWx1ZSB3aGljaCBjYW4gYmUgc3dpdGNoZWQgb24uICovXG5leHBvcnQgdHlwZSBXcmFwcGVkTGl0ZXJhbCA9XG4gICAgfCBMaXRlcmFsV3JhcHBlcjxcInN0cmluZ1wiPlxuICAgIHwgTGl0ZXJhbFdyYXBwZXI8XCJudW1iZXJcIj5cbiAgICB8IExpdGVyYWxXcmFwcGVyPFwiYm9vbGVhblwiPlxuICAgIHwgTGl0ZXJhbFdyYXBwZXI8XCJkYXRlXCI+XG4gICAgfCBMaXRlcmFsV3JhcHBlcjxcImR1cmF0aW9uXCI+XG4gICAgfCBMaXRlcmFsV3JhcHBlcjxcImxpbmtcIj5cbiAgICB8IExpdGVyYWxXcmFwcGVyPFwiYXJyYXlcIj5cbiAgICB8IExpdGVyYWxXcmFwcGVyPFwib2JqZWN0XCI+XG4gICAgfCBMaXRlcmFsV3JhcHBlcjxcImZ1bmN0aW9uXCI+XG4gICAgfCBMaXRlcmFsV3JhcHBlcjxcIm51bGxcIj47XG5cbi8qKiBDb21iaW5lcyBhIHRleHR1YWwgdHlwZSBhbmQgdmFsdWU7IHByaW1hcmlseSB1c2VmdWwgZm9yIHN3aXRjaGluZyBvbi5cbiAqIEBoaWRkZW5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMaXRlcmFsV3JhcHBlcjxUIGV4dGVuZHMgTGl0ZXJhbFR5cGU+IHtcbiAgICB0eXBlOiBUO1xuICAgIHZhbHVlOiBMaXRlcmFsUmVwcjxUPjtcbn1cblxuLyoqXG4gKiBAaGlkZGVuXG4gKiAgVXRpbGl0eSBsaWJyYXJ5IGZvciBoYW5kbGluZyBsaXRlcmFsIHZhbHVlcy4gKi9cbmV4cG9ydCBuYW1lc3BhY2UgTGl0ZXJhbHMge1xuICAgIC8qKiBTZXR0aW5ncyB1c2VkIHdoZW4gZm9ybWF0dGluZyBsaXRlcmFsIHZhbHVlcyB0byB0ZXh0LiAqL1xuICAgIGV4cG9ydCBpbnRlcmZhY2UgVG9TdHJpbmdTZXR0aW5ncyB7XG4gICAgICAgIC8qKiBXaGF0IGEgbnVsbCB3aWxsIHJlbmRlciBhcy4gKi9cbiAgICAgICAgbnVsbFJlcHJlc2VudGF0aW9uOiBzdHJpbmc7XG5cbiAgICAgICAgLyoqIERhdGUgZm9ybWF0LiAqL1xuICAgICAgICBkYXRlRm9ybWF0OiBzdHJpbmc7XG5cbiAgICAgICAgLyoqIERhdGUtdGltZSBmb3JtYXQuICovXG4gICAgICAgIGRhdGVUaW1lRm9ybWF0OiBzdHJpbmc7XG4gICAgfVxuXG4gICAgLyoqIFNhbmUsIEVuZ2xpc2gtYmFzZWQgZGVmYXVsdHMgZm9yIGRhdGUgZm9ybWF0cy4gKi9cbiAgICBleHBvcnQgY29uc3QgREVGQVVMVF9UT19TVFJJTkc6IFRvU3RyaW5nU2V0dGluZ3MgPSB7XG4gICAgICAgIG51bGxSZXByZXNlbnRhdGlvbjogXCItXCIsXG5cbiAgICAgICAgZGF0ZUZvcm1hdDogXCJNTU1NIGRkLCB5eXl5XCIsXG4gICAgICAgIGRhdGVUaW1lRm9ybWF0OiBcImg6bW0gYSAtIE1NTU0gZGQsIHl5eXlcIixcbiAgICB9O1xuXG4gICAgLyoqIENvbnZlcnQgYW4gYXJiaXRyYXJ5IHZhbHVlIGludG8gYSByZWFzb25hYmxlLCBNYXJrZG93bi1mcmllbmRseSBzdHJpbmcgaWYgcG9zc2libGUuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIHRvU3RyaW5nKFxuICAgICAgICBmaWVsZDogYW55LFxuICAgICAgICBzZXR0aW5nOiBUb1N0cmluZ1NldHRpbmdzID0gREVGQVVMVF9UT19TVFJJTkcsXG4gICAgICAgIHJlY3Vyc2l2ZTogYm9vbGVhbiA9IGZhbHNlXG4gICAgKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IHdyYXBwZWQgPSB3cmFwVmFsdWUoZmllbGQpO1xuICAgICAgICBpZiAoIXdyYXBwZWQpIHJldHVybiBzZXR0aW5nLm51bGxSZXByZXNlbnRhdGlvbjtcblxuICAgICAgICBzd2l0Y2ggKHdyYXBwZWQudHlwZSkge1xuICAgICAgICAgICAgY2FzZSBcIm51bGxcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gc2V0dGluZy5udWxsUmVwcmVzZW50YXRpb247XG4gICAgICAgICAgICBjYXNlIFwic3RyaW5nXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWU7XG4gICAgICAgICAgICBjYXNlIFwibnVtYmVyXCI6XG4gICAgICAgICAgICBjYXNlIFwiYm9vbGVhblwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBcIlwiICsgd3JhcHBlZC52YWx1ZTtcbiAgICAgICAgICAgIGNhc2UgXCJsaW5rXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWUubWFya2Rvd24oKTtcbiAgICAgICAgICAgIGNhc2UgXCJmdW5jdGlvblwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBcIjxmdW5jdGlvbj5cIjtcbiAgICAgICAgICAgIGNhc2UgXCJhcnJheVwiOlxuICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSBcIlwiO1xuICAgICAgICAgICAgICAgIGlmIChyZWN1cnNpdmUpIHJlc3VsdCArPSBcIltcIjtcbiAgICAgICAgICAgICAgICByZXN1bHQgKz0gd3JhcHBlZC52YWx1ZS5tYXAoKGYpID0+IHRvU3RyaW5nKGYsIHNldHRpbmcsIHRydWUpKS5qb2luKFwiLCBcIik7XG4gICAgICAgICAgICAgICAgaWYgKHJlY3Vyc2l2ZSkgcmVzdWx0ICs9IFwiXVwiO1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICBjYXNlIFwib2JqZWN0XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgXCJ7IFwiICtcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMod3JhcHBlZC52YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKGUpID0+IGVbMF0gKyBcIjogXCIgKyB0b1N0cmluZyhlWzFdLCBzZXR0aW5nLCB0cnVlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5qb2luKFwiLCBcIikgK1xuICAgICAgICAgICAgICAgICAgICBcIiB9XCJcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgY2FzZSBcImRhdGVcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVuZGVyTWluaW1hbERhdGUod3JhcHBlZC52YWx1ZSwgc2V0dGluZy5kYXRlRm9ybWF0LCBzZXR0aW5nLmRhdGVUaW1lRm9ybWF0KTtcbiAgICAgICAgICAgIGNhc2UgXCJkdXJhdGlvblwiOlxuICAgICAgICAgICAgICAgIHJldHVybiByZW5kZXJNaW5pbWFsRHVyYXRpb24od3JhcHBlZC52YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogV3JhcCBhIGxpdGVyYWwgdmFsdWUgc28geW91IGNhbiBzd2l0Y2ggb24gaXQgZWFzaWx5LiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiB3cmFwVmFsdWUodmFsOiBMaXRlcmFsKTogV3JhcHBlZExpdGVyYWwgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoaXNOdWxsKHZhbCkpIHJldHVybiB7IHR5cGU6IFwibnVsbFwiLCB2YWx1ZTogdmFsIH07XG4gICAgICAgIGVsc2UgaWYgKGlzTnVtYmVyKHZhbCkpIHJldHVybiB7IHR5cGU6IFwibnVtYmVyXCIsIHZhbHVlOiB2YWwgfTtcbiAgICAgICAgZWxzZSBpZiAoaXNTdHJpbmcodmFsKSkgcmV0dXJuIHsgdHlwZTogXCJzdHJpbmdcIiwgdmFsdWU6IHZhbCB9O1xuICAgICAgICBlbHNlIGlmIChpc0Jvb2xlYW4odmFsKSkgcmV0dXJuIHsgdHlwZTogXCJib29sZWFuXCIsIHZhbHVlOiB2YWwgfTtcbiAgICAgICAgZWxzZSBpZiAoaXNEdXJhdGlvbih2YWwpKSByZXR1cm4geyB0eXBlOiBcImR1cmF0aW9uXCIsIHZhbHVlOiB2YWwgfTtcbiAgICAgICAgZWxzZSBpZiAoaXNEYXRlKHZhbCkpIHJldHVybiB7IHR5cGU6IFwiZGF0ZVwiLCB2YWx1ZTogdmFsIH07XG4gICAgICAgIGVsc2UgaWYgKGlzQXJyYXkodmFsKSkgcmV0dXJuIHsgdHlwZTogXCJhcnJheVwiLCB2YWx1ZTogdmFsIH07XG4gICAgICAgIGVsc2UgaWYgKGlzTGluayh2YWwpKSByZXR1cm4geyB0eXBlOiBcImxpbmtcIiwgdmFsdWU6IHZhbCB9O1xuICAgICAgICBlbHNlIGlmIChpc0Z1bmN0aW9uKHZhbCkpIHJldHVybiB7IHR5cGU6IFwiZnVuY3Rpb25cIiwgdmFsdWU6IHZhbCB9O1xuICAgICAgICBlbHNlIGlmIChpc09iamVjdCh2YWwpKSByZXR1cm4geyB0eXBlOiBcIm9iamVjdFwiLCB2YWx1ZTogdmFsIH07XG4gICAgICAgIGVsc2UgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKiogUmVjdXJzaXZlbHkgbWFwIGNvbXBsZXggb2JqZWN0cyBhdCB0aGUgbGVhdmVzLiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiBtYXBMZWF2ZXModmFsOiBMaXRlcmFsLCBmdW5jOiAodDogTGl0ZXJhbCkgPT4gTGl0ZXJhbCk6IExpdGVyYWwge1xuICAgICAgICBpZiAoaXNPYmplY3QodmFsKSkge1xuICAgICAgICAgICAgbGV0IHJlc3VsdDogRGF0YU9iamVjdCA9IHt9O1xuICAgICAgICAgICAgZm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHZhbCkpIHJlc3VsdFtrZXldID0gbWFwTGVhdmVzKHZhbHVlLCBmdW5jKTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNBcnJheSh2YWwpKSB7XG4gICAgICAgICAgICBsZXQgcmVzdWx0OiBMaXRlcmFsW10gPSBbXTtcbiAgICAgICAgICAgIGZvciAobGV0IHZhbHVlIG9mIHZhbCkgcmVzdWx0LnB1c2gobWFwTGVhdmVzKHZhbHVlLCBmdW5jKSk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZ1bmModmFsKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBDaGVjayBpZiB0d28gYXJiaXRyYXJ5IGxpdGVyYWxzIGFyZSBlcXVhbC4gKi9cbiAgICBleHBvcnQgZnVuY3Rpb24gZXF1YWxzKGZpcnN0OiBMaXRlcmFsIHwgdW5kZWZpbmVkLCBzZWNvbmQ6IExpdGVyYWwgfCB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIGNvbXBhcmUoZmlyc3QsIHNlY29uZCkgPT0gMDtcbiAgICB9XG5cbiAgICAvKiogQ29tcGFyZSB0d28gYXJiaXRyYXJ5IEphdmFTY3JpcHQgdmFsdWVzLiBQcm9kdWNlcyBhIHRvdGFsIG9yZGVyaW5nIG92ZXIgQU5ZIHBvc3NpYmxlIGRhdGFjb3JlIHZhbHVlLiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiBjb21wYXJlKFxuICAgICAgICB2YWwxOiBMaXRlcmFsIHwgdW5kZWZpbmVkLFxuICAgICAgICB2YWwyOiBMaXRlcmFsIHwgdW5kZWZpbmVkLFxuICAgICAgICBsaW5rTm9ybWFsaXplcj86IChsaW5rOiBzdHJpbmcpID0+IHN0cmluZ1xuICAgICk6IG51bWJlciB7XG4gICAgICAgIC8vIFJlZmVyZW5jZSBlcXVhbGl0eSAtIHNob3J0IGNpcmN1aXQuXG4gICAgICAgIGlmICh2YWwxID09PSB2YWwyKSByZXR1cm4gMDtcblxuICAgICAgICAvLyBIYW5kbGUgdW5kZWZpbmVkL251bGxzIGZpcnN0LlxuICAgICAgICBpZiAodmFsMSA9PT0gdW5kZWZpbmVkKSB2YWwxID0gbnVsbDtcbiAgICAgICAgaWYgKHZhbDIgPT09IHVuZGVmaW5lZCkgdmFsMiA9IG51bGw7XG4gICAgICAgIGlmICh2YWwxID09PSBudWxsICYmIHZhbDIgPT09IG51bGwpIHJldHVybiAwO1xuICAgICAgICBlbHNlIGlmICh2YWwxID09PSBudWxsKSByZXR1cm4gLTE7XG4gICAgICAgIGVsc2UgaWYgKHZhbDIgPT09IG51bGwpIHJldHVybiAxO1xuXG4gICAgICAgIC8vIEEgbm9uLW51bGwgdmFsdWUgbm93IHdoaWNoIHdlIGNhbiB3cmFwICYgY29tcGFyZSBvbi5cbiAgICAgICAgbGV0IHdyYXAxID0gd3JhcFZhbHVlKHZhbDEpO1xuICAgICAgICBsZXQgd3JhcDIgPSB3cmFwVmFsdWUodmFsMik7XG5cbiAgICAgICAgaWYgKHdyYXAxID09PSB1bmRlZmluZWQgJiYgd3JhcDIgPT09IHVuZGVmaW5lZCkgcmV0dXJuIDA7XG4gICAgICAgIGVsc2UgaWYgKHdyYXAxID09PSB1bmRlZmluZWQpIHJldHVybiAtMTtcbiAgICAgICAgZWxzZSBpZiAod3JhcDIgPT09IHVuZGVmaW5lZCkgcmV0dXJuIDE7XG5cbiAgICAgICAgLy8gU2hvcnQtY2lyY3VpdCBvbiBkaWZmZXJlbnQgdHlwZXMgb3Igb24gcmVmZXJlbmNlIGVxdWFsaXR5LlxuICAgICAgICBpZiAod3JhcDEudHlwZSAhPSB3cmFwMi50eXBlKSByZXR1cm4gd3JhcDEudHlwZS5sb2NhbGVDb21wYXJlKHdyYXAyLnR5cGUpO1xuICAgICAgICBpZiAod3JhcDEudmFsdWUgPT09IHdyYXAyLnZhbHVlKSByZXR1cm4gMDtcblxuICAgICAgICBzd2l0Y2ggKHdyYXAxLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgXCJzdHJpbmdcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gd3JhcDEudmFsdWUubG9jYWxlQ29tcGFyZSh3cmFwMi52YWx1ZSBhcyBzdHJpbmcpO1xuICAgICAgICAgICAgY2FzZSBcIm51bWJlclwiOlxuICAgICAgICAgICAgICAgIGlmICh3cmFwMS52YWx1ZSA8ICh3cmFwMi52YWx1ZSBhcyBudW1iZXIpKSByZXR1cm4gLTE7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAod3JhcDEudmFsdWUgPT0gKHdyYXAyLnZhbHVlIGFzIG51bWJlcikpIHJldHVybiAwO1xuICAgICAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICAgICAgY2FzZSBcIm51bGxcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICAgIGNhc2UgXCJib29sZWFuXCI6XG4gICAgICAgICAgICAgICAgaWYgKHdyYXAxLnZhbHVlID09IHdyYXAyLnZhbHVlKSByZXR1cm4gMDtcbiAgICAgICAgICAgICAgICBlbHNlIHJldHVybiB3cmFwMS52YWx1ZSA/IDEgOiAtMTtcbiAgICAgICAgICAgIGNhc2UgXCJsaW5rXCI6XG4gICAgICAgICAgICAgICAgbGV0IGxpbmsxID0gd3JhcDEudmFsdWU7XG4gICAgICAgICAgICAgICAgbGV0IGxpbmsyID0gd3JhcDIudmFsdWUgYXMgTGluaztcbiAgICAgICAgICAgICAgICBsZXQgbm9ybWFsaXplID0gbGlua05vcm1hbGl6ZXIgPz8gKCh4OiBzdHJpbmcpID0+IHgpO1xuXG4gICAgICAgICAgICAgICAgLy8gV2UgY2FuJ3QgY29tcGFyZSBieSBmaWxlIG5hbWUgb3IgZGlzcGxheSwgc2luY2UgdGhhdCB3b3VsZCBicmVhayBsaW5rIGVxdWFsaXR5LiBDb21wYXJlIGJ5IHBhdGguXG4gICAgICAgICAgICAgICAgbGV0IHBhdGhDb21wYXJlID0gbm9ybWFsaXplKGxpbmsxLnBhdGgpLmxvY2FsZUNvbXBhcmUobm9ybWFsaXplKGxpbmsyLnBhdGgpKTtcbiAgICAgICAgICAgICAgICBpZiAocGF0aENvbXBhcmUgIT0gMCkgcmV0dXJuIHBhdGhDb21wYXJlO1xuXG4gICAgICAgICAgICAgICAgLy8gVGhlbiBjb21wYXJlIGJ5IHR5cGUuXG4gICAgICAgICAgICAgICAgbGV0IHR5cGVDb21wYXJlID0gbGluazEudHlwZS5sb2NhbGVDb21wYXJlKGxpbmsyLnR5cGUpO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlQ29tcGFyZSAhPSAwKSByZXR1cm4gdHlwZUNvbXBhcmU7XG5cbiAgICAgICAgICAgICAgICAvLyBUaGVuIGNvbXBhcmUgYnkgc3VicGF0aCBleGlzdGVuY2UuXG4gICAgICAgICAgICAgICAgaWYgKGxpbmsxLnN1YnBhdGggJiYgIWxpbmsyLnN1YnBhdGgpIHJldHVybiAxO1xuICAgICAgICAgICAgICAgIGlmICghbGluazEuc3VicGF0aCAmJiBsaW5rMi5zdWJwYXRoKSByZXR1cm4gLTE7XG4gICAgICAgICAgICAgICAgaWYgKCFsaW5rMS5zdWJwYXRoICYmICFsaW5rMi5zdWJwYXRoKSByZXR1cm4gMDtcblxuICAgICAgICAgICAgICAgIC8vIFNpbmNlIGJvdGggaGF2ZSBhIHN1YnBhdGgsIGNvbXBhcmUgYnkgc3VicGF0aC5cbiAgICAgICAgICAgICAgICByZXR1cm4gKGxpbmsxLnN1YnBhdGggPz8gXCJcIikubG9jYWxlQ29tcGFyZShsaW5rMi5zdWJwYXRoID8/IFwiXCIpO1xuICAgICAgICAgICAgY2FzZSBcImRhdGVcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gd3JhcDEudmFsdWUgPCAod3JhcDIudmFsdWUgYXMgRGF0ZVRpbWUpXG4gICAgICAgICAgICAgICAgICAgID8gLTFcbiAgICAgICAgICAgICAgICAgICAgOiB3cmFwMS52YWx1ZS5lcXVhbHMod3JhcDIudmFsdWUgYXMgRGF0ZVRpbWUpXG4gICAgICAgICAgICAgICAgICAgID8gMFxuICAgICAgICAgICAgICAgICAgICA6IDE7XG4gICAgICAgICAgICBjYXNlIFwiZHVyYXRpb25cIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gd3JhcDEudmFsdWUgPCAod3JhcDIudmFsdWUgYXMgRHVyYXRpb24pXG4gICAgICAgICAgICAgICAgICAgID8gLTFcbiAgICAgICAgICAgICAgICAgICAgOiB3cmFwMS52YWx1ZS5lcXVhbHMod3JhcDIudmFsdWUgYXMgRHVyYXRpb24pXG4gICAgICAgICAgICAgICAgICAgID8gMFxuICAgICAgICAgICAgICAgICAgICA6IDE7XG4gICAgICAgICAgICBjYXNlIFwiYXJyYXlcIjpcbiAgICAgICAgICAgICAgICBsZXQgZjEgPSB3cmFwMS52YWx1ZTtcbiAgICAgICAgICAgICAgICBsZXQgZjIgPSB3cmFwMi52YWx1ZSBhcyBhbnlbXTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgTWF0aC5taW4oZjEubGVuZ3RoLCBmMi5sZW5ndGgpOyBpbmRleCsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBjb21wID0gY29tcGFyZShmMVtpbmRleF0sIGYyW2luZGV4XSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb21wICE9IDApIHJldHVybiBjb21wO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gZjEubGVuZ3RoIC0gZjIubGVuZ3RoO1xuICAgICAgICAgICAgY2FzZSBcIm9iamVjdFwiOlxuICAgICAgICAgICAgICAgIGxldCBvMSA9IHdyYXAxLnZhbHVlO1xuICAgICAgICAgICAgICAgIGxldCBvMiA9IHdyYXAyLnZhbHVlIGFzIFJlY29yZDxzdHJpbmcsIGFueT47XG4gICAgICAgICAgICAgICAgbGV0IGsxID0gQXJyYXkuZnJvbShPYmplY3Qua2V5cyhvMSkpO1xuICAgICAgICAgICAgICAgIGxldCBrMiA9IEFycmF5LmZyb20oT2JqZWN0LmtleXMobzIpKTtcbiAgICAgICAgICAgICAgICBrMS5zb3J0KCk7XG4gICAgICAgICAgICAgICAgazIuc29ydCgpO1xuXG4gICAgICAgICAgICAgICAgbGV0IGtleUNvbXBhcmUgPSBjb21wYXJlKGsxLCBrMik7XG4gICAgICAgICAgICAgICAgaWYgKGtleUNvbXBhcmUgIT0gMCkgcmV0dXJuIGtleUNvbXBhcmU7XG5cbiAgICAgICAgICAgICAgICBmb3IgKGxldCBrZXkgb2YgazEpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNvbXAgPSBjb21wYXJlKG8xW2tleV0sIG8yW2tleV0pO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY29tcCAhPSAwKSByZXR1cm4gY29tcDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICAgIGNhc2UgXCJmdW5jdGlvblwiOlxuICAgICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEZpbmQgdGhlIGNvcnJlc3BvbmRpbmcgZGF0YWNvcmUgdHlwZSBmb3IgYW4gYXJiaXRyYXJ5IHZhbHVlLiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiB0eXBlT2YodmFsOiBhbnkpOiBMaXRlcmFsVHlwZSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB3cmFwVmFsdWUodmFsKT8udHlwZTtcbiAgICB9XG5cbiAgICAvKiogRGV0ZXJtaW5lIGlmIHRoZSBnaXZlbiB2YWx1ZSBpcyBcInRydXRoeVwiIChpLmUuLCBpcyBub24tbnVsbCBhbmQgaGFzIGRhdGEgaW4gaXQpLiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiBpc1RydXRoeShmaWVsZDogTGl0ZXJhbCk6IGJvb2xlYW4ge1xuICAgICAgICBsZXQgd3JhcHBlZCA9IHdyYXBWYWx1ZShmaWVsZCk7XG4gICAgICAgIGlmICghd3JhcHBlZCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgICAgIHN3aXRjaCAod3JhcHBlZC50eXBlKSB7XG4gICAgICAgICAgICBjYXNlIFwibnVtYmVyXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWUgIT0gMDtcbiAgICAgICAgICAgIGNhc2UgXCJzdHJpbmdcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZS5sZW5ndGggPiAwO1xuICAgICAgICAgICAgY2FzZSBcImJvb2xlYW5cIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZTtcbiAgICAgICAgICAgIGNhc2UgXCJsaW5rXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuICEhd3JhcHBlZC52YWx1ZS5wYXRoO1xuICAgICAgICAgICAgY2FzZSBcImRhdGVcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZS50b01pbGxpcygpICE9IDA7XG4gICAgICAgICAgICBjYXNlIFwiZHVyYXRpb25cIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZS5hcyhcInNlY29uZHNcIikgIT0gMDtcbiAgICAgICAgICAgIGNhc2UgXCJvYmplY3RcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMod3JhcHBlZC52YWx1ZSkubGVuZ3RoID4gMDtcbiAgICAgICAgICAgIGNhc2UgXCJhcnJheVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB3cmFwcGVkLnZhbHVlLmxlbmd0aCA+IDA7XG4gICAgICAgICAgICBjYXNlIFwibnVsbFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIGNhc2UgXCJmdW5jdGlvblwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIERlZXAgY29weSBhIGZpZWxkLiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiBkZWVwQ29weTxUIGV4dGVuZHMgTGl0ZXJhbD4oZmllbGQ6IFQpOiBUIHtcbiAgICAgICAgaWYgKGZpZWxkID09PSBudWxsIHx8IGZpZWxkID09PSB1bmRlZmluZWQpIHJldHVybiBmaWVsZDtcblxuICAgICAgICBpZiAoTGl0ZXJhbHMuaXNBcnJheShmaWVsZCkpIHtcbiAgICAgICAgICAgIHJldHVybiAoW10gYXMgTGl0ZXJhbFtdKS5jb25jYXQoZmllbGQubWFwKCh2KSA9PiBkZWVwQ29weSh2KSkpIGFzIFQ7XG4gICAgICAgIH0gZWxzZSBpZiAoTGl0ZXJhbHMuaXNPYmplY3QoZmllbGQpKSB7XG4gICAgICAgICAgICBsZXQgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBMaXRlcmFsPiA9IHt9O1xuICAgICAgICAgICAgZm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGZpZWxkKSkgcmVzdWx0W2tleV0gPSBkZWVwQ29weSh2YWx1ZSk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0IGFzIFQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogRGV0ZXJtaW5lIGlmIHRoZSB2YWx1ZSBpcyBhIHN0cmluZy4gKi9cbiAgICBleHBvcnQgZnVuY3Rpb24gaXNTdHJpbmcodmFsOiBhbnkpOiB2YWwgaXMgc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiB2YWwgPT0gXCJzdHJpbmdcIjtcbiAgICB9XG5cbiAgICAvKiogRGV0ZXJtaW5lIGlmIHRoZSB2YWx1ZSBpcyBhIG51bWJlci4gKi9cbiAgICBleHBvcnQgZnVuY3Rpb24gaXNOdW1iZXIodmFsOiBhbnkpOiB2YWwgaXMgbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiB2YWwgPT0gXCJudW1iZXJcIjtcbiAgICB9XG5cbiAgICAvKiogRGV0ZXJtaW5lIGlmIHRoZSB2YWx1ZSBpcyBhIGRhdGUuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGlzRGF0ZSh2YWw6IGFueSk6IHZhbCBpcyBEYXRlVGltZSB7XG4gICAgICAgIHJldHVybiB2YWwgaW5zdGFuY2VvZiBEYXRlVGltZTtcbiAgICB9XG5cbiAgICAvKiogRGV0ZXJtaW5lIGlmIHRoZSB2YWx1ZSBpcyBhIGR1cmF0aW9uLiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiBpc0R1cmF0aW9uKHZhbDogYW55KTogdmFsIGlzIER1cmF0aW9uIHtcbiAgICAgICAgcmV0dXJuIHZhbCBpbnN0YW5jZW9mIER1cmF0aW9uO1xuICAgIH1cblxuICAgIC8qKiBEZXRlcm1pbmUgaWYgdGhlIHZhbHVlIGlzIG51bGwgb3IgdW5kZWZpbmVkLiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiBpc051bGwodmFsOiBhbnkpOiB2YWwgaXMgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB2YWwgPT09IG51bGwgfHwgdmFsID09PSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqIERldGVybWluZSBpZiB0aGUgdmFsdWUgaXMgYW4gYXJyYXkuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGlzQXJyYXkodmFsOiBhbnkpOiB2YWwgaXMgYW55W10ge1xuICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWwpO1xuICAgIH1cblxuICAgIC8qKiBEZXRlcm1pbmUgaWYgdGhlIHZhbHVlIGlzIGEgYm9vbGVhbi4gKi9cbiAgICBleHBvcnQgZnVuY3Rpb24gaXNCb29sZWFuKHZhbDogYW55KTogdmFsIGlzIGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gXCJib29sZWFuXCI7XG4gICAgfVxuXG4gICAgLyoqIERldGVybWluZSBpZiB0aGUgdmFsdWUgaXMgYSBsaW5rLiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiBpc0xpbmsodmFsOiBhbnkpOiB2YWwgaXMgTGluayB7XG4gICAgICAgIHJldHVybiB2YWwgaW5zdGFuY2VvZiBMaW5rO1xuICAgIH1cblxuICAgIC8qKiBDaGVja3MgaWYgdGhlIGdpdmVuIHZhbHVlIGlzIGFuIG9iamVjdCAoYW5kIG5vdCBhbnkgb3RoZXIgZGF0YWNvcmUtcmVjb2duaXplZCBvYmplY3QtbGlrZSB0eXBlKS4gKi9cbiAgICBleHBvcnQgZnVuY3Rpb24gaXNPYmplY3QodmFsOiBhbnkpOiB2YWwgaXMgUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB2YWwgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgdHlwZW9mIHZhbCA9PSBcIm9iamVjdFwiICYmXG4gICAgICAgICAgICAhaXNBcnJheSh2YWwpICYmXG4gICAgICAgICAgICAhaXNEdXJhdGlvbih2YWwpICYmXG4gICAgICAgICAgICAhaXNEYXRlKHZhbCkgJiZcbiAgICAgICAgICAgICFpc0xpbmsodmFsKSAmJlxuICAgICAgICAgICAgIWlzTnVsbCh2YWwpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIERldGVybWluZXMgaWYgdGhlIGdpdmVuIHZhbHVlIGlzIGEgamF2YXNjcmlwdCBmdW5jdGlvbi4gKi9cbiAgICBleHBvcnQgZnVuY3Rpb24gaXNGdW5jdGlvbih2YWw6IGFueSk6IHZhbCBpcyBGdW5jdGlvbiB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgdmFsID09IFwiZnVuY3Rpb25cIjtcbiAgICB9XG59XG5cbi8qKiBBIGdyb3VwaW5nIG9uIGEgdHlwZSB3aGljaCBzdXBwb3J0cyByZWN1cnNpdmVseS1uZXN0ZWQgZ3JvdXBzLlxuICogQGdyb3VwIENvbW1vbiBUeXBlc1xuICovXG5leHBvcnQgdHlwZSBHcm91cEVsZW1lbnQ8VD4gPSB7IGtleTogTGl0ZXJhbDsgcm93czogR3JvdXBpbmc8VD4gfTtcbi8qKlxuICogQSBncm91cGluZywgd2hpY2ggY2FuIGJlIGVpdGhlcjpcbiAqIC0gYW4gYXJyYXkgb2YgZWxlbWVudHMgb2YgdHlwZSBgVGAsIG9yXG4gKiAtIGFuIGFycmF5IG9mIHtAbGluayBHcm91cGVsZW1lbnR9c1xuICpcbiAqIEBncm91cCBDb21tb24gVHlwZXNcbiAqL1xuZXhwb3J0IHR5cGUgR3JvdXBpbmc8VD4gPSBUW10gfCBHcm91cEVsZW1lbnQ8VD5bXTtcbi8qKlxuICogQGhpZGRlblxuICovXG5leHBvcnQgbmFtZXNwYWNlIEdyb3VwaW5ncyB7XG4gICAgLyoqIERldGVybWluZXMgaWYgdGhlIGdpdmVuIGdyb3VwIGVudHJ5IGlzIGEgc3RhbmRhbG9uZSB2YWx1ZSwgb3IgYSBncm91cGluZyBvZiBzdWItZW50cmllcy4gKi9cbiAgICBleHBvcnQgZnVuY3Rpb24gaXNFbGVtZW50R3JvdXA8VD4oZW50cnk6IGFueSk6IGVudHJ5IGlzIEdyb3VwRWxlbWVudDxUPiB7XG4gICAgICAgIHJldHVybiBMaXRlcmFscy5pc09iamVjdChlbnRyeSkgJiYgT2JqZWN0LmtleXMoZW50cnkpLmxlbmd0aCA9PSAyICYmIFwia2V5XCIgaW4gZW50cnkgJiYgXCJyb3dzXCIgaW4gZW50cnk7XG4gICAgfVxuXG4gICAgLyoqIERldGVybWluZXMgaWYgdGhlIGdpdmVuIGFycmF5IGlzIGEgZ3JvdXBpbmcgYXJyYXkuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGlzR3JvdXBpbmc8VD4oZW50cnk6IEdyb3VwaW5nPFQ+KTogZW50cnkgaXMgR3JvdXBFbGVtZW50PFQ+W10ge1xuICAgICAgICBmb3IgKGxldCBlbGVtZW50IG9mIGVudHJ5KSBpZiAoIWlzRWxlbWVudEdyb3VwKGVsZW1lbnQpKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLyoqIERldGVybWluZXMgaWYgdGhlIGdpdmVuIGFycmF5IGlzIGEgbGVhZiBhbmQgaGFzIG5vIHN1Ymdyb3VwaW5ncy4gKi9cbiAgICBleHBvcnQgZnVuY3Rpb24gaXNMZWFmPFQ+KGVudHJ5OiBHcm91cGluZzxUPik6IGVudHJ5IGlzIFRbXSB7XG4gICAgICAgIGZvciAobGV0IGVsZW1lbnQgb2YgZW50cnkpIGlmIChpc0VsZW1lbnRHcm91cChlbGVtZW50KSkgcmV0dXJuIGZhbHNlO1xuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8qKiBDb3VudCB0aGUgdG90YWwgbnVtYmVyIG9mIGVsZW1lbnRzIGluIGEgcmVjdXJzaXZlIGdyb3VwaW5nLiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiBjb3VudDxUPihlbGVtZW50czogR3JvdXBpbmc8VD4gfCBHcm91cEVsZW1lbnQ8VD4pOiBudW1iZXIge1xuICAgICAgICBpZiAoaXNFbGVtZW50R3JvdXAoZWxlbWVudHMpKSB7XG4gICAgICAgICAgICByZXR1cm4gY291bnQoZWxlbWVudHMucm93cyk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNHcm91cGluZyhlbGVtZW50cykpIHtcbiAgICAgICAgICAgIGxldCByZXN1bHQgPSAwO1xuICAgICAgICAgICAgZm9yIChsZXQgc3ViZ3JvdXAgb2YgZWxlbWVudHMpIHJlc3VsdCArPSBjb3VudChzdWJncm91cC5yb3dzKTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZWxlbWVudHMubGVuZ3RoO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIFJlY3Vyc2l2ZWx5IHNsaWNlIGEgZ3JvdXBpbmcsIHByZXNlcnZpbmcgdGhlIGdyb3VwIHN0cnVjdHVyZSB0aGF0IGNvbnRhaW5zIGVsZW1lbnRzIFtzdGFydC4uLmVuZCkuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIHNsaWNlPFQ+KGVsZW1lbnRzOiBHcm91cGluZzxUPiwgc3RhcnQ6IG51bWJlciwgZW5kOiBudW1iZXIpOiBHcm91cGluZzxUPiB7XG4gICAgICAgIGlmIChlbmQgPD0gc3RhcnQpIHJldHVybiBbXTtcbiAgICAgICAgaWYgKGlzTGVhZihlbGVtZW50cykpIHJldHVybiBlbGVtZW50cy5zbGljZShzdGFydCwgZW5kKTtcblxuICAgICAgICAvLyBGaW5kIHRoZSBmaXJzdCBncm91cCB0aGF0IGNvbnRhaW5zIGluZGV4IGBzdGFydGAuXG4gICAgICAgIGxldCBpbmRleCA9IDAsXG4gICAgICAgICAgICBzZWVuID0gMDtcbiAgICAgICAgd2hpbGUgKGluZGV4IDwgZWxlbWVudHMubGVuZ3RoICYmIHNlZW4gKyBjb3VudChlbGVtZW50c1tpbmRleF0pIDw9IHN0YXJ0KSB7XG4gICAgICAgICAgICBzZWVuICs9IGNvdW50KGVsZW1lbnRzW2luZGV4XSk7XG4gICAgICAgICAgICBpbmRleCsrO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gc3RhcnQgd2FzIGdyZWF0ZXIgdGhhbiB0aGUgZW50aXJlIGxlbmd0aCBvZiB0aGUgZ3JvdXBpbmdzLlxuICAgICAgICBpZiAoaW5kZXggPj0gZWxlbWVudHMubGVuZ3RoKSByZXR1cm4gW107XG5cbiAgICAgICAgY29uc3QgcmVzdWx0OiB7IGtleTogTGl0ZXJhbDsgcm93czogR3JvdXBpbmc8VD4gfVtdID0gW107XG4gICAgICAgIHdoaWxlIChpbmRleCA8IGVsZW1lbnRzLmxlbmd0aCAmJiBzZWVuIDwgZW5kKSB7XG4gICAgICAgICAgICBjb25zdCBncm91cCA9IGVsZW1lbnRzW2luZGV4XTtcbiAgICAgICAgICAgIGNvbnN0IGdyb3VwU2l6ZSA9IGNvdW50KGdyb3VwKTtcbiAgICAgICAgICAgIGNvbnN0IGdyb3VwU3RhcnQgPSBNYXRoLm1heChzZWVuLCBzdGFydCk7XG4gICAgICAgICAgICBjb25zdCBncm91cEVuZCA9IE1hdGgubWluKGdyb3VwU2l6ZSArIHNlZW4sIGVuZCk7XG5cbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgICAgICAgICBrZXk6IGdyb3VwLmtleSxcbiAgICAgICAgICAgICAgICByb3dzOiBzbGljZShncm91cC5yb3dzLCBncm91cFN0YXJ0IC0gc2VlbiwgZ3JvdXBFbmQgLSBzZWVuKSxcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBzZWVuICs9IGdyb3VwU2l6ZTtcbiAgICAgICAgICAgIGluZGV4Kys7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbn1cbiIsICIvKipcbiAqIEBtb2R1bGUgYXBpXG4gKi9cbi8qKlxuICogIEZ1bmN0aW9uYWwgcmV0dXJuIHR5cGUgZm9yIGVycm9yIGhhbmRsaW5nLlxuICogQGhpZGRlblxuICogKi9cbmV4cG9ydCBjbGFzcyBTdWNjZXNzPFQsIEU+IHtcbiAgICBwdWJsaWMgc3VjY2Vzc2Z1bDogdHJ1ZTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihwdWJsaWMgdmFsdWU6IFQpIHtcbiAgICAgICAgdGhpcy5zdWNjZXNzZnVsID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbWFwPFU+KGY6IChhOiBUKSA9PiBVKTogUmVzdWx0PFUsIEU+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBTdWNjZXNzKGYodGhpcy52YWx1ZSkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBmbGF0TWFwPFU+KGY6IChhOiBUKSA9PiBSZXN1bHQ8VSwgRT4pOiBSZXN1bHQ8VSwgRT4ge1xuICAgICAgICByZXR1cm4gZih0aGlzLnZhbHVlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbWFwRXJyPFU+KGY6IChlOiBFKSA9PiBVKTogUmVzdWx0PFQsIFU+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMgYXMgYW55IGFzIFJlc3VsdDxULCBVPjtcbiAgICB9XG5cbiAgICBwdWJsaWMgYmltYXA8VDIsIEUyPihzdWNjOiAoYTogVCkgPT4gVDIsIF9mYWlsOiAoYjogRSkgPT4gRTIpOiBSZXN1bHQ8VDIsIEUyPiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcChzdWNjKSBhcyBhbnk7XG4gICAgfVxuXG4gICAgcHVibGljIG9yRWxzZShfdmFsdWU6IFQpOiBUIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIGNhc3Q8VT4oKTogUmVzdWx0PFUsIEU+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMgYXMgYW55O1xuICAgIH1cblxuICAgIHB1YmxpYyBvckVsc2VUaHJvdyhfbWVzc2FnZT86IChlOiBFKSA9PiBzdHJpbmcpOiBUIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxufVxuXG4vKiogRnVuY3Rpb25hbCByZXR1cm4gdHlwZSBmb3IgZXJyb3IgaGFuZGxpbmcuXG4gKiBAaGlkZGVuXG4gKi9cbmV4cG9ydCBjbGFzcyBGYWlsdXJlPFQsIEU+IHtcbiAgICBwdWJsaWMgc3VjY2Vzc2Z1bDogZmFsc2U7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IocHVibGljIGVycm9yOiBFKSB7XG4gICAgICAgIHRoaXMuc3VjY2Vzc2Z1bCA9IGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBtYXA8VT4oX2Y6IChhOiBUKSA9PiBVKTogUmVzdWx0PFUsIEU+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMgYXMgYW55IGFzIEZhaWx1cmU8VSwgRT47XG4gICAgfVxuXG4gICAgcHVibGljIGZsYXRNYXA8VT4oX2Y6IChhOiBUKSA9PiBSZXN1bHQ8VSwgRT4pOiBSZXN1bHQ8VSwgRT4ge1xuICAgICAgICByZXR1cm4gdGhpcyBhcyBhbnkgYXMgRmFpbHVyZTxVLCBFPjtcbiAgICB9XG5cbiAgICBwdWJsaWMgbWFwRXJyPFU+KGY6IChlOiBFKSA9PiBVKTogUmVzdWx0PFQsIFU+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBGYWlsdXJlKGYodGhpcy5lcnJvcikpO1xuICAgIH1cblxuICAgIHB1YmxpYyBiaW1hcDxUMiwgRTI+KF9zdWNjOiAoYTogVCkgPT4gVDIsIGZhaWw6IChiOiBFKSA9PiBFMik6IFJlc3VsdDxUMiwgRTI+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwRXJyKGZhaWwpIGFzIGFueTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3JFbHNlKHZhbHVlOiBUKTogVCB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2FzdDxVPigpOiBSZXN1bHQ8VSwgRT4ge1xuICAgICAgICByZXR1cm4gdGhpcyBhcyBhbnk7XG4gICAgfVxuXG4gICAgcHVibGljIG9yRWxzZVRocm93KG1lc3NhZ2U/OiAoZTogRSkgPT4gc3RyaW5nKTogVCB7XG4gICAgICAgIGlmIChtZXNzYWdlKSB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSh0aGlzLmVycm9yKSk7XG4gICAgICAgIGVsc2UgdGhyb3cgbmV3IEVycm9yKFwiXCIgKyB0aGlzLmVycm9yKTtcbiAgICB9XG59XG5cbi8qKlxuICogQSBtb25hZGljIHJlc3VsdCB0eXBlIHdoaWNoIHN0b3JlcyBlaXRoZXIgXCJzdWNjZXNzXCIgb3IgXCJmYWlsdXJlXCIuIEFuIGFsdGVybmF0aXZlIGhhbmRsaW5nIGV4Y2VwdGlvbmFsIGJlaGF2aW9yXG4gKiBieSB1c2luZyB0aGUgcmV0dXJuIHZhbHVlIGluc3RlYWQgb2YgYW4gZXhjZXB0aW9uLlxuICovXG5leHBvcnQgdHlwZSBSZXN1bHQ8VCwgRT4gPSBTdWNjZXNzPFQsIEU+IHwgRmFpbHVyZTxULCBFPjtcblxuLyoqXG4gKiBAaGlkZGVuXG4gKiBNb25hZGljICdSZXN1bHQnIHR5cGUgd2hpY2ggZW5jYXBzdWxhdGVzIHdoZXRoZXIgYSBwcm9jZWR1cmUgc3VjY2VlZGVkIG9yIGZhaWxlZCwgYXMgd2VsbCBhcyBpdCdzIHJldHVybiB2YWx1ZS5cbiAqL1xuZXhwb3J0IG5hbWVzcGFjZSBSZXN1bHQge1xuICAgIC8qKiBDb25zdHJ1Y3QgYSBuZXcgc3VjY2VzcyByZXN1bHQgd3JhcHBpbmcgdGhlIGdpdmVuIHZhbHVlLiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiBzdWNjZXNzPFQsIEU+KHZhbHVlOiBUKTogUmVzdWx0PFQsIEU+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBTdWNjZXNzKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKiogQ29uc3RydWN0IGEgbmV3IGZhaWx1cmUgdmFsdWUgd3JhcHBpbmcgdGhlIGdpdmVuIGVycm9yLiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiBmYWlsdXJlPFQsIEU+KGVycm9yOiBFKTogUmVzdWx0PFQsIEU+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBGYWlsdXJlKGVycm9yKTtcbiAgICB9XG5cbiAgICAvKiogSm9pbiB0d28gcmVzdWx0cyB3aXRoIGEgYmktZnVuY3Rpb24gYW5kIHJldHVybiBhIG5ldyByZXN1bHQuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGZsYXRNYXAyPFQxLCBUMiwgTywgRT4oXG4gICAgICAgIGZpcnN0OiBSZXN1bHQ8VDEsIEU+LFxuICAgICAgICBzZWNvbmQ6IFJlc3VsdDxUMiwgRT4sXG4gICAgICAgIGY6IChhOiBUMSwgYjogVDIpID0+IFJlc3VsdDxPLCBFPlxuICAgICk6IFJlc3VsdDxPLCBFPiB7XG4gICAgICAgIGlmIChmaXJzdC5zdWNjZXNzZnVsKSB7XG4gICAgICAgICAgICBpZiAoc2Vjb25kLnN1Y2Nlc3NmdWwpIHJldHVybiBmKGZpcnN0LnZhbHVlLCBzZWNvbmQudmFsdWUpO1xuICAgICAgICAgICAgZWxzZSByZXR1cm4gZmFpbHVyZShzZWNvbmQuZXJyb3IpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZhaWx1cmUoZmlyc3QuZXJyb3IpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEpvaW4gdHdvIHJlc3VsdHMgd2l0aCBhIGJpLWZ1bmN0aW9uIGFuZCByZXR1cm4gYSBuZXcgcmVzdWx0LiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiBtYXAyPFQxLCBUMiwgTywgRT4oXG4gICAgICAgIGZpcnN0OiBSZXN1bHQ8VDEsIEU+LFxuICAgICAgICBzZWNvbmQ6IFJlc3VsdDxUMiwgRT4sXG4gICAgICAgIGY6IChhOiBUMSwgYjogVDIpID0+IE9cbiAgICApOiBSZXN1bHQ8TywgRT4ge1xuICAgICAgICByZXR1cm4gZmxhdE1hcDIoZmlyc3QsIHNlY29uZCwgKGEsIGIpID0+IHN1Y2Nlc3MoZihhLCBiKSkpO1xuICAgIH1cblxuICAgIC8qKiBNYXAgYSBmYWlsYWJsZSBmdW5jdGlvbiBvdmVyIGFsbCBlbGVtZW50cyBpbiB0aGUgbGlzdCwgcmV0dXJuaW5nIGVhcmx5IG9uIGZhaWx1cmUuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIG1hcEFsbDxULCBPLCBFPihpbnB1dDogSXRlcmFibGU8VD4sIGZ1bmM6IChpbnB1dDogVCkgPT4gUmVzdWx0PE8sIEU+KTogUmVzdWx0PE9bXSwgRT4ge1xuICAgICAgICBjb25zdCByZXN1bHQ6IE9bXSA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgaW5wdXQpIHtcbiAgICAgICAgICAgIGNvbnN0IG91dHB1dCA9IGZ1bmMoZWxlbWVudCk7XG4gICAgICAgICAgICBpZiAoIW91dHB1dC5zdWNjZXNzZnVsKSByZXR1cm4gb3V0cHV0LmNhc3QoKTtcblxuICAgICAgICAgICAgcmVzdWx0LnB1c2gob3V0cHV0LnZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBSZXN1bHQuc3VjY2VzcyhyZXN1bHQpO1xuICAgIH1cblxuICAgIC8qKiBDYXRjaCBhbnkgZXJyb3JzIGluIGEgY2FsbCwgcmV0dXJuaW5nIGEgcmVzdWx0IGluc3RlYWQuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIHRyeWluZzxUPihjYWxsOiAoKSA9PiBUKTogUmVzdWx0PFQsIEVycm9yPiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gUmVzdWx0LnN1Y2Nlc3MoY2FsbCgpKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBSZXN1bHQuZmFpbHVyZShlcnJvcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQ29udmVydCBhIHByb21pc2Ugd2hpY2ggbWF5IHRocm93IGludG8gYSBwcm9taXNlIHdoaWNoIHJldHVybnMgYSByZXN1bHQgb2YgdGhlIHN1Y2Nlc3NmdWwgdmFsdWUgb3IgYW4gZXJyb3IuICovXG4gICAgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFzeW5jPFQ+KHByb21pc2U6IFByb21pc2U8VD4pOiBQcm9taXNlPFJlc3VsdDxULCBFcnJvcj4+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBSZXN1bHQuc3VjY2Vzcyhhd2FpdCBwcm9taXNlKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBSZXN1bHQuZmFpbHVyZShlcnJvcik7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCAiaW1wb3J0IHsgUmVzdWx0IH0gZnJvbSBcImFwaS9yZXN1bHRcIjtcblxuLyoqIFN0YXRpYyBzZXQgZWxlbWVudCB3aGljaCBtYXRjaGVzIGV2ZXJ5dGhpbmcuICovXG5leHBvcnQgdHlwZSBFdmVyeXRoaW5nID0geyB0eXBlOiBcImV2ZXJ5dGhpbmdcIiB9O1xuLyoqIFN0YXRpYyBzZXQgZWxlbWVudCB3aGljaCBtYXRjaGVzIG5vdGhpbmcuICovXG5leHBvcnQgdHlwZSBOb3RoaW5nID0geyB0eXBlOiBcIm5vdGhpbmdcIiB9O1xuLyoqIFNldCB3aGljaCBtYXRjaGVzIHRoZSBuZWdhdGlvbiBvZiBhIHNldC4gKi9cbmV4cG9ydCB0eXBlIE5lZ2F0ZWQ8VD4gPSB7IHR5cGU6IFwibmVnYXRlZFwiOyB2YWx1ZTogU2V0PFQ+IH07XG4vKiogU2V0IHdoaWNoIG1hdGNoZXMgYW4gYWN0dWFsIHNldCBvZiB2YWx1ZXMuICAqL1xuZXhwb3J0IHR5cGUgQXRvbTxUPiA9IHsgdHlwZTogXCJhdG9tXCI7IHZhbHVlOiBTZXQ8VD4gfTtcblxuLyoqIEFic3RyYWN0IGZpbHRlciB0eXBlIHdoaWNoIHJlcHJlc2VudHMgdGhlIHJlc3VsdHMgb2YgYXBwbHlpbmcgZmlsdGVyIG9wZXJhdGlvbnMgdG8gdGhlIGRhdGEgc3RvcmUuICovXG5leHBvcnQgdHlwZSBGaWx0ZXI8VD4gPSBFdmVyeXRoaW5nIHwgTm90aGluZyB8IEF0b208VD4gfCBOZWdhdGVkPFQ+O1xuXG4vKiogVXRpbGl0eSBmdW5jdGlvbnMgZm9yIGVmZmljaWVudGx5IG9wZXJhdGluZyBvbiBmaWx0ZXJzLiAqL1xuZXhwb3J0IG5hbWVzcGFjZSBGaWx0ZXJzIHtcbiAgICAvKiogU3RhdGljIGZpbHRlciB3aGljaCBtYXRjaGVzIGV2ZXJ5dGhpbmcuICovXG4gICAgZXhwb3J0IGNvbnN0IEVWRVJZVEhJTkc6IEV2ZXJ5dGhpbmcgPSB7IHR5cGU6IFwiZXZlcnl0aGluZ1wiIH07XG4gICAgLyoqIFN0YXRpYyBmaWx0ZXIgd2hpY2ggbWF0Y2hlcyBub3RoaW5nLiAqL1xuICAgIGV4cG9ydCBjb25zdCBOT1RISU5HOiBOb3RoaW5nID0geyB0eXBlOiBcIm5vdGhpbmdcIiB9O1xuICAgIC8qKiBFbXB0eSBzZXQgY29uc3RhbnQuICovXG4gICAgZXhwb3J0IGNvbnN0IEVNUFRZX1NFVDogU2V0PGFueT4gPSBuZXcgU2V0KCk7XG5cbiAgICAvKiogQ29uc3RydWN0IGEgbmV3IGF0b20gZmlsdGVyLiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiBhdG9tPFQ+KHNldDogU2V0PFQ+KTogRmlsdGVyPFQ+IHtcbiAgICAgICAgaWYgKHNldC5zaXplID09IDApIHJldHVybiBOT1RISU5HO1xuXG4gICAgICAgIHJldHVybiB7IHR5cGU6IFwiYXRvbVwiLCB2YWx1ZTogc2V0IH07XG4gICAgfVxuXG4gICAgLyoqIENvbnN0cnVjdCBhIGZpbHRlciB0aGF0IG1hdGNoZXMgZXZlcnl0aGluZyBvciBub3RoaW5nLiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiBjb25zdGFudDxUPih2YWx1ZTogYm9vbGVhbik6IEZpbHRlcjxUPiB7XG4gICAgICAgIGlmICh2YWx1ZSkgcmV0dXJuIEVWRVJZVEhJTkc7XG4gICAgICAgIGVsc2UgcmV0dXJuIE5PVEhJTkc7XG4gICAgfVxuXG4gICAgLyoqIENvbnN0cnVjdCBhIG5ldyBhdG9tIGZpbHRlciB3aGljaCBpcyBOT1RISU5HIGlmIHNldCBpcyB1bmRlZmluZWQuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIG51bGxhYmxlQXRvbTxUPihzZXQ6IFNldDxUPiB8IHVuZGVmaW5lZCk6IEZpbHRlcjxUPiB7XG4gICAgICAgIHJldHVybiBzZXQgIT09IHVuZGVmaW5lZCA/IGF0b20oc2V0KSA6IE5PVEhJTkc7XG4gICAgfVxuXG4gICAgLyoqIENvbnN0cnVjdCBhIG5lZ2F0ZWQgYXRvbSBmaWx0ZXIuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIG5lZ2F0ZWQ8VD4oc2V0OiBTZXQ8VD4pOiBGaWx0ZXI8VD4ge1xuICAgICAgICBpZiAoc2V0LnNpemUgPT0gMCkgcmV0dXJuIEVWRVJZVEhJTkc7XG5cbiAgICAgICAgcmV0dXJuIHsgdHlwZTogXCJuZWdhdGVkXCIsIHZhbHVlOiBzZXQgfTtcbiAgICB9XG5cbiAgICAvKiogUHJvZHVjZXMgdGhlIG5lZ2F0aW9uIG9mIGEgZmlsdGVyLiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiBuZWdhdGU8VD4oZmlsdGVyOiBGaWx0ZXI8VD4pOiBGaWx0ZXI8VD4ge1xuICAgICAgICBzd2l0Y2ggKGZpbHRlci50eXBlKSB7XG4gICAgICAgICAgICBjYXNlIFwiZXZlcnl0aGluZ1wiOlxuICAgICAgICAgICAgICAgIHJldHVybiBOT1RISU5HO1xuICAgICAgICAgICAgY2FzZSBcIm5vdGhpbmdcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gRVZFUllUSElORztcbiAgICAgICAgICAgIGNhc2UgXCJhdG9tXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5lZ2F0ZWQoZmlsdGVyLnZhbHVlKTtcbiAgICAgICAgICAgIGNhc2UgXCJuZWdhdGVkXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGF0b20oZmlsdGVyLnZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBEZXRlcm1pbmUgaWYgdGhlIGdpdmVuIGZpbHRlciBpcyBkZWZpbml0aXZlbHkgY3VycmVudGx5IGVtcHR5LiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiBlbXB0eTxUPihmaWx0ZXI6IEZpbHRlcjxUPik6IGJvb2xlYW4ge1xuICAgICAgICBzd2l0Y2ggKGZpbHRlci50eXBlKSB7XG4gICAgICAgICAgICBjYXNlIFwiZXZlcnl0aGluZ1wiOlxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIGNhc2UgXCJuZWdhdGVkXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgY2FzZSBcImF0b21cIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gZmlsdGVyLnZhbHVlLnNpemUgPT0gMDtcbiAgICAgICAgICAgIGNhc2UgXCJub3RoaW5nXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogUmVzb2x2ZSBhIHRvcC1sZXZlbCBmaWx0ZXIgd2l0aCB0aGUgc2V0IG9mIGFsbCBhdmFpbGFibGUgb2JqZWN0cy4gKi9cbiAgICBleHBvcnQgZnVuY3Rpb24gcmVzb2x2ZTxUPihmaWx0ZXI6IEZpbHRlcjxUPiwgZXZlcnl0aGluZzogU2V0PFQ+KTogU2V0PFQ+IHtcbiAgICAgICAgc3dpdGNoIChmaWx0ZXIudHlwZSkge1xuICAgICAgICAgICAgY2FzZSBcImV2ZXJ5dGhpbmdcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gZXZlcnl0aGluZztcbiAgICAgICAgICAgIGNhc2UgXCJub3RoaW5nXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEVNUFRZX1NFVDtcbiAgICAgICAgICAgIGNhc2UgXCJhdG9tXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZpbHRlci52YWx1ZTtcbiAgICAgICAgICAgIGNhc2UgXCJuZWdhdGVkXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNldEludGVyc2VjdE5lZ2F0aW9uKGV2ZXJ5dGhpbmcsIGZpbHRlci52YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogSW50ZXJzZWN0IGFuIGl0ZXJhYmxlIG9mIGZpbHRlcnMuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGludGVyc2VjdDxUPihlbGVtZW50czogSXRlcmFibGU8RmlsdGVyPFQ+Pik6IEZpbHRlcjxUPiB7XG4gICAgICAgIHJldHVybiBsYXp5SW50ZXJzZWN0KGVsZW1lbnRzLCAoeCkgPT4geCk7XG4gICAgfVxuXG4gICAgLyoqIEludGVyc2VjdCBmaWx0ZXJzIGxhemlseSwgc2hvcnQtY2lyY3VpdGluZyBpZiB0aGUgaW50ZXJzZWN0aW9uIHdvdWxkIHByb2R1Y2UgTk9USElORy4gKi9cbiAgICBleHBvcnQgZnVuY3Rpb24gbGF6eUludGVyc2VjdDxJLCBUPihcbiAgICAgICAgZWxlbWVudHM6IEl0ZXJhYmxlPEk+LFxuICAgICAgICBwcm9kdWNlOiAoaW5wdXQ6IEkpID0+IEZpbHRlcjxUPiB8IHVuZGVmaW5lZFxuICAgICk6IEZpbHRlcjxUPiB7XG4gICAgICAgIHJldHVybiBsYXp5RmFpbGFibGVJbnRlcnNlY3Rpb24oZWxlbWVudHMsICh4KSA9PiBSZXN1bHQuc3VjY2Vzcyhwcm9kdWNlKHgpKSkub3JFbHNlVGhyb3coKTtcbiAgICB9XG5cbiAgICAvKiogSW50ZXJzZWN0IGZpbHRlcnMgbGF6aWx5LCBzaG9ydC1jaXJjdWl0aW5nIGlmIHRoZSBpbnRlcnNlY3Rpb24gd291bGQgcHJvZHVjZSBOT1RISU5HLiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiBsYXp5RmFpbGFibGVJbnRlcnNlY3Rpb248SSwgVCwgRT4oXG4gICAgICAgIGVsZW1lbnRzOiBJdGVyYWJsZTxJPixcbiAgICAgICAgcHJvZHVjZTogKGlucHV0OiBJKSA9PiBSZXN1bHQ8RmlsdGVyPFQ+IHwgdW5kZWZpbmVkLCBFPlxuICAgICk6IFJlc3VsdDxGaWx0ZXI8VD4sIEU+IHtcbiAgICAgICAgY29uc3QgYXRvbXM6IFNldDxUPltdID0gW107XG4gICAgICAgIGNvbnN0IG5lZ2F0aW9uczogU2V0PFQ+W10gPSBbXTtcbiAgICAgICAgZm9yIChsZXQgZWxlbWVudCBvZiBlbGVtZW50cykge1xuICAgICAgICAgICAgY29uc3QgbWF5YmVGaWx0ZXIgPSBwcm9kdWNlKGVsZW1lbnQpO1xuICAgICAgICAgICAgaWYgKCFtYXliZUZpbHRlci5zdWNjZXNzZnVsKSByZXR1cm4gbWF5YmVGaWx0ZXIuY2FzdCgpO1xuXG4gICAgICAgICAgICBjb25zdCBmaWx0ZXIgPSBtYXliZUZpbHRlci52YWx1ZTtcbiAgICAgICAgICAgIGlmIChmaWx0ZXIgPT09IHVuZGVmaW5lZCkgY29udGludWU7XG5cbiAgICAgICAgICAgIC8vIEVtcHR5IGZpbHRlcnMgd2lsbCBwcm9kdWNlIGFuIGVtcHR5IGludGVyc2VjdGlvbi5cbiAgICAgICAgICAgIGlmIChlbXB0eShmaWx0ZXIpKSByZXR1cm4gUmVzdWx0LnN1Y2Nlc3MoTk9USElORyk7XG4gICAgICAgICAgICAvLyBFVkVSWVRISU5HIGZpbHRlcnMgYXJlIHJlZHVuZGFudCBpbiBBTkRzLCBza2lwIHRoZW0uXG4gICAgICAgICAgICBpZiAoZmlsdGVyLnR5cGUgPT09IFwiZXZlcnl0aGluZ1wiKSBjb250aW51ZTtcblxuICAgICAgICAgICAgLy8gV2lsbCBvbmx5IGJlIGxlZnQgd2l0aCBhdG9tcyBvciBuZWdhdGlvbnMuXG4gICAgICAgICAgICBpZiAoZmlsdGVyLnR5cGUgPT0gXCJhdG9tXCIpIGF0b21zLnB1c2goZmlsdGVyLnZhbHVlKTtcbiAgICAgICAgICAgIGVsc2UgaWYgKGZpbHRlci50eXBlID09IFwibmVnYXRlZFwiKSBuZWdhdGlvbnMucHVzaChmaWx0ZXIudmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gV2Ugc3RhcnQgd2l0aCBzb21ldGhpbmcgb2YgdGhlIGZvcm0gYSAmJiBiICYmICFjICYmICFkLlxuICAgICAgICAvLyBJZiBubyB0ZXJtcywgdGhlbiBldmVyeXRoaW5nIHdhcyBFVkVSWVRISU5HIHNvIHJldHVybiB0aGF0LlxuICAgICAgICAvLyBJZiBvbmx5IGF0b21zLCBqdXN0IGludGVyc2VjdCB0aGVtIChhICYmIGIpLlxuICAgICAgICAvLyBJZiBvbmx5IG5lZ2F0aW9ucywgdGhlbiByZXdyaXRlICFjICYmICFkID0+ICEoYyB8fCBkKSBhbmQgcmV0dXJuIG5lZ2F0ZWQoYyB8fCBkKS5cbiAgICAgICAgLy8gSWYgYm90aCwgY29tcHV0ZSB4ID0gKGEgJiYgYikgYW5kIHkgPSAoYyB8fCBkKSwgYW5kIHRoZW4gY29tcHV0ZSB4ICYmICF5LlxuXG4gICAgICAgIGlmIChhdG9tcy5sZW5ndGggPT0gMCAmJiBuZWdhdGlvbnMubGVuZ3RoID09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBSZXN1bHQuc3VjY2VzcyhFVkVSWVRISU5HKTtcbiAgICAgICAgfSBlbHNlIGlmIChhdG9tcy5sZW5ndGggPiAwICYmIG5lZ2F0aW9ucy5sZW5ndGggPT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIFJlc3VsdC5zdWNjZXNzKGF0b20oc2V0SW50ZXJzZWN0KGF0b21zKSkpO1xuICAgICAgICB9IGVsc2UgaWYgKGF0b21zLmxlbmd0aCA9PSAwICYmIG5lZ2F0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gUmVzdWx0LnN1Y2Nlc3MobmVnYXRlZChzZXRVbmlvbihuZWdhdGlvbnMpKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gUmVzdWx0LnN1Y2Nlc3MoRmlsdGVycy5hdG9tKHNldEludGVyc2VjdE5lZ2F0aW9uKHNldEludGVyc2VjdChhdG9tcyksIHNldFVuaW9uKG5lZ2F0aW9ucykpKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogVW5pb24gZmlsdGVycywgcHJvZHVjaW5nIGEgc2luZ2xlIHJlc3VsdCBmaWx0ZXIuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIHVuaW9uPFQ+KGZpbHRlcnM6IEl0ZXJhYmxlPEZpbHRlcjxUPj4pOiBGaWx0ZXI8VD4ge1xuICAgICAgICByZXR1cm4gbGF6eVVuaW9uKGZpbHRlcnMsICh4KSA9PiB4KTtcbiAgICB9XG5cbiAgICAvKiogVW5pb24gZmlsdGVycyBsYXppbHksIHNob3J0LWNpcmN1aXRpbmcgaWYgdGhlIHVuaW9uIHdvdWxkIHByb2R1Y2UgRVZFUllUSElORy4gKi9cbiAgICBleHBvcnQgZnVuY3Rpb24gbGF6eVVuaW9uPEksIFQ+KGVsZW1lbnRzOiBJdGVyYWJsZTxJPiwgcHJvZHVjZTogKGlucHV0OiBJKSA9PiBGaWx0ZXI8VD4gfCB1bmRlZmluZWQpOiBGaWx0ZXI8VD4ge1xuICAgICAgICByZXR1cm4gbGF6eUZhaWxhYmxlVW5pb24oZWxlbWVudHMsICh4KSA9PiBSZXN1bHQuc3VjY2Vzcyhwcm9kdWNlKHgpKSkub3JFbHNlVGhyb3coKTtcbiAgICB9XG5cbiAgICAvKiogVW5pb24gZmlsdGVycyBsYXppbHksIHNob3J0LWNpcmN1aXRpbmcgaWYgdGhlIHVuaW9uIHdvdWxkIHByb2R1Y2UgRVZFUllUSElORy4gKi9cbiAgICBleHBvcnQgZnVuY3Rpb24gbGF6eUZhaWxhYmxlVW5pb248SSwgVCwgRT4oXG4gICAgICAgIGVsZW1lbnRzOiBJdGVyYWJsZTxJPixcbiAgICAgICAgcHJvZHVjZTogKGlucHV0OiBJKSA9PiBSZXN1bHQ8RmlsdGVyPFQ+IHwgdW5kZWZpbmVkLCBFPlxuICAgICk6IFJlc3VsdDxGaWx0ZXI8VD4sIEU+IHtcbiAgICAgICAgY29uc3QgYXRvbXM6IFNldDxUPltdID0gW107XG4gICAgICAgIGNvbnN0IG5lZ2F0aW9uczogU2V0PFQ+W10gPSBbXTtcbiAgICAgICAgZm9yIChsZXQgZWxlbWVudCBvZiBlbGVtZW50cykge1xuICAgICAgICAgICAgY29uc3QgbWF5YmVGaWx0ZXIgPSBwcm9kdWNlKGVsZW1lbnQpO1xuICAgICAgICAgICAgaWYgKCFtYXliZUZpbHRlci5zdWNjZXNzZnVsKSByZXR1cm4gbWF5YmVGaWx0ZXIuY2FzdCgpO1xuXG4gICAgICAgICAgICBjb25zdCBmaWx0ZXIgPSBtYXliZUZpbHRlci52YWx1ZTtcbiAgICAgICAgICAgIGlmIChmaWx0ZXIgPT09IHVuZGVmaW5lZCkgY29udGludWU7XG5cbiAgICAgICAgICAgIC8vIEVWRVJZVEhJTkcgZmlsdGVycyB3aWxsIHByb2R1Y2UgZXZlcnl0aGluZyBhbHdheXMuXG4gICAgICAgICAgICBpZiAoZmlsdGVyLnR5cGUgPT09IFwiZXZlcnl0aGluZ1wiKSByZXR1cm4gUmVzdWx0LnN1Y2Nlc3MoRVZFUllUSElORyk7XG4gICAgICAgICAgICAvLyBFbXB0eSBmaWx0ZXJzIGFyZSByZWR1bmRhbnQuXG4gICAgICAgICAgICBpZiAoZW1wdHkoZmlsdGVyKSkgY29udGludWU7XG5cbiAgICAgICAgICAgIC8vIFdpbGwgb25seSBiZSBsZWZ0IHdpdGggYXRvbXMgb3IgbmVnYXRpb25zLlxuICAgICAgICAgICAgaWYgKGZpbHRlci50eXBlID09IFwiYXRvbVwiKSBhdG9tcy5wdXNoKGZpbHRlci52YWx1ZSk7XG4gICAgICAgICAgICBlbHNlIGlmIChmaWx0ZXIudHlwZSA9PSBcIm5lZ2F0ZWRcIikgbmVnYXRpb25zLnB1c2goZmlsdGVyLnZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE9yIGlzIGEgYml0IGhhcmRlciB0aGFuIEFORCBzaW5jZSB5b3UgY2FuIGVuZCB1cCB3aXRoIHNjZW5hcmlvcyBsaWtlIGEgfHwgIWIsIHdoaWNoIGFyZVxuICAgICAgICAvLyBub3QgY29tcHV0YWJsZSBkaXJlY3RseS4gSG93ZXZlciwgd2UgY2FuIGRvIGJvb2xlYW4gbG9naWMgdG8gYWx3YXlzIHByb2R1Y2UgYSBzaW5nbGVcbiAgICAgICAgLy8gc2V0LlxuICAgICAgICAvLyBJZiBub3RoaW5nID0+IG5vdGhpbmcsIG5vIG5vbi1lbXB0eSBmaWx0ZXJzLlxuICAgICAgICAvLyBJZiBhdG9tcyBidXQgbm8gbmVnYXRpb25zIChhIHx8IGIgfHwgYykgPT4gY29tcHV0ZSB1bmlvbi5cbiAgICAgICAgLy8gSWYgbmVnYXRpb25zIGJ1dCBubyBhdG9tcyAoIWEgfHwgIWIgfHwgIWMpID0+IHJld3JpdGUgYXMgIShhICYmIGIgJiYgYykuXG4gICAgICAgIC8vIElmIGJvdGg6IChhIHx8IGIgfHwgIWMgfHwgIWQpID0+IGNvbWJpbmUgZWFjaCBwYXJ0IGludG8gKGEgfHwgYikgfHwgKCFjIHx8ICFkKSA9PiAoYSB8fCBiKSB8fCAhKGMgJiYgZCkgPT4gZSB8fCAhZiA9PiAhKCFlICYmIGYpIHdoaWNoXG4gICAgICAgIC8vIGNhbiBiZSBjb21wdXRlZCB1c2luZyBpbnRlcnNlY3Rpb24gbG9naWMuXG5cbiAgICAgICAgaWYgKGF0b21zLmxlbmd0aCA9PSAwICYmIG5lZ2F0aW9ucy5sZW5ndGggPT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIFJlc3VsdC5zdWNjZXNzKE5PVEhJTkcpO1xuICAgICAgICB9IGVsc2UgaWYgKGF0b21zLmxlbmd0aCA+IDAgJiYgbmVnYXRpb25zLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gUmVzdWx0LnN1Y2Nlc3MoRmlsdGVycy5hdG9tKHNldFVuaW9uKGF0b21zKSkpO1xuICAgICAgICB9IGVsc2UgaWYgKGF0b21zLmxlbmd0aCA9PSAwICYmIG5lZ2F0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gUmVzdWx0LnN1Y2Nlc3MoRmlsdGVycy5uZWdhdGVkKHNldEludGVyc2VjdChuZWdhdGlvbnMpKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gUmVzdWx0LnN1Y2Nlc3MobmVnYXRlZChzZXRJbnRlcnNlY3ROZWdhdGlvbihzZXRJbnRlcnNlY3QobmVnYXRpb25zKSwgc2V0VW5pb24oYXRvbXMpKSkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEVmZmljaWVudGx5IGNvbXB1dGUgdGhlIGludGVyc2VjdGlvbiBvZiBzZXRzLiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiBzZXRJbnRlcnNlY3Q8VD4oc2V0czogU2V0PFQ+W10pOiBTZXQ8VD4ge1xuICAgICAgICBpZiAoc2V0cy5sZW5ndGggPT0gMCkgcmV0dXJuIG5ldyBTZXQoKTtcbiAgICAgICAgZWxzZSBpZiAoc2V0cy5sZW5ndGggPT0gMSkgcmV0dXJuIHNldHNbMF07XG5cbiAgICAgICAgLy8gU29ydCBieSBzaXplIGFuZCBjb21iaW5lIHNtYWxsZXN0IGFuZCBsYXJnZXN0IHNldCByZXBlYXRlZGx5LlxuICAgICAgICBsZXQgc29ydGVkID0gKFtdIGFzIFNldDxUPltdKS5jb25jYXQoc2V0cykuc29ydCgoYSwgYikgPT4gYS5zaXplIC0gYi5zaXplKTtcblxuICAgICAgICB3aGlsZSAoc29ydGVkLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBTZXQ8VD4oKTtcbiAgICAgICAgICAgIGNvbnN0IGxhcmdlc3QgPSBzb3J0ZWQucG9wKCkhO1xuXG4gICAgICAgICAgICBmb3IgKGxldCBlbGVtZW50IG9mIHNvcnRlZFswXSkge1xuICAgICAgICAgICAgICAgIGlmIChsYXJnZXN0LmhhcyhlbGVtZW50KSkgcmVzdWx0LmFkZChlbGVtZW50KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc29ydGVkWzBdID0gcmVzdWx0O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHNvcnRlZFswXTtcbiAgICB9XG5cbiAgICAvKiogRWZmaWNpZW50bHkgY29tcHV0ZSB0aGUgdW5pb24gb2Ygc2V0cy4gKi9cbiAgICBleHBvcnQgZnVuY3Rpb24gc2V0VW5pb248VD4oc2V0czogU2V0PFQ+W10pOiBTZXQ8VD4ge1xuICAgICAgICBpZiAoc2V0cy5sZW5ndGggPT0gMCkgcmV0dXJuIG5ldyBTZXQoKTtcbiAgICAgICAgZWxzZSBpZiAoc2V0cy5sZW5ndGggPT0gMSkgcmV0dXJuIHNldHNbMF07XG5cbiAgICAgICAgLy8gSSdtIG5vdCBzdXJlIGlmIHRoZXJlIGlzIGFueSB1c2VmdWwgb3B0aW1pemF0aW9uIGZvciBzZXQgdW5pb25zLCBzbyBqdXN0IGFkZCB0aGVtIGFsbCBJIGd1ZXNzLlxuICAgICAgICBjb25zdCByZXN1bHQgPSBuZXcgU2V0PFQ+KCk7XG4gICAgICAgIGZvciAoY29uc3Qgc2V0IG9mIHNldHMpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiBzZXQpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQuYWRkKGVsZW1lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKiogRWZmaWNpZW50bHkgY29tcHV0ZSBhdG9tICYmICFuZWdhdGVkLiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiBzZXRJbnRlcnNlY3ROZWdhdGlvbjxUPihhdG9tOiBTZXQ8VD4sIG5lZ2F0ZWQ6IFNldDxUPik6IFNldDxUPiB7XG4gICAgICAgIGlmIChhdG9tLnNpemUgPiBuZWdhdGVkLnNpemUpIHtcbiAgICAgICAgICAgIC8vIFRPRE86IFdvdWxkIGJlIG5pY2UgdG8gYXZvaWQgdGhlIGNvcHksIHNpbmNlIEknbSBub3Qgc3VyZSBpdCdzIGFueSBmYXN0ZXIgd2l0aCB0aGUgY29weS5cbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBTZXQoYXRvbSk7XG4gICAgICAgICAgICBmb3IgKGxldCBlbGVtZW50IG9mIG5lZ2F0ZWQpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQuZGVsZXRlKGVsZW1lbnQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9IC8qIGF0b20uc2l6ZSA8IG5lZ2F0aW9uLnNpemUgKi8gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBuZXcgU2V0PFQ+KCk7XG4gICAgICAgICAgICBmb3IgKGxldCBlbGVtZW50IG9mIGF0b20pIHtcbiAgICAgICAgICAgICAgICBpZiAobmVnYXRlZC5oYXMoZWxlbWVudCkpIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQoZWxlbWVudCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCAiaW1wb3J0IHsgTGl0ZXJhbCwgTGl0ZXJhbHMgfSBmcm9tIFwiZXhwcmVzc2lvbi9saXRlcmFsXCI7XG5pbXBvcnQgeyBGaWx0ZXJzIH0gZnJvbSBcIi4vZmlsdGVyc1wiO1xuXG4vKiogQ29tcGFyaXNvbiBvcGVyYXRvcnMgd2hpY2ggeWllbGQgdHJ1ZS9mYWxzZS4gKi9cbmV4cG9ydCB0eXBlIENvbXBhcmVPcCA9IFwiPlwiIHwgXCI+PVwiIHwgXCI8PVwiIHwgXCI8XCIgfCBcIj1cIiB8IFwiIT1cIjtcbi8qKiBBcml0aG1ldGljIG9wZXJhdG9ycyB3aGljaCB5aWVsZCBudW1iZXJzIGFuZCBvdGhlciB2YWx1ZXMuICovXG5leHBvcnQgdHlwZSBBcml0aG1ldGljT3AgPSBcIitcIiB8IFwiLVwiIHwgXCIqXCIgfCBcIi9cIiB8IFwiJVwiIHwgXCImXCIgfCBcInxcIjtcbi8qKiBJbmRleCBhIHZhbHVlIGludG8gYW5vdGhlciB2YWx1ZS4gKi9cbmV4cG9ydCB0eXBlIExvZ2ljYWxPcCA9IFwiaW5kZXhcIjtcbi8qKiBBbGwgdmFsaWQgYmluYXJ5IG9wZXJhdG9ycy4gKi9cbmV4cG9ydCB0eXBlIEJpbmFyeU9wID0gQ29tcGFyZU9wIHwgQXJpdGhtZXRpY09wIHwgTG9naWNhbE9wO1xuXG5leHBvcnQgdHlwZSBFeHByZXNzaW9uID1cbiAgICB8IExpdGVyYWxFeHByZXNzaW9uXG4gICAgfCBWYXJpYWJsZUV4cHJlc3Npb25cbiAgICB8IExpc3RFeHByZXNzaW9uXG4gICAgfCBPYmplY3RFeHByZXNzaW9uXG4gICAgfCBCaW5hcnlPcEV4cHJlc3Npb25cbiAgICB8IEZ1bmN0aW9uRXhwcmVzc2lvblxuICAgIHwgTGFtYmRhRXhwcmVzc2lvblxuICAgIHwgTmVnYXRlZEV4cHJlc3Npb247XG5cbi8qKiBMaXRlcmFsIHJlcHJlc2VudGF0aW9uIG9mIHNvbWUgZmllbGQgdHlwZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGl0ZXJhbEV4cHJlc3Npb24ge1xuICAgIHR5cGU6IFwibGl0ZXJhbFwiO1xuICAgIHZhbHVlOiBMaXRlcmFsO1xufVxuXG4vKiogQSB2YXJpYWJsZSBmaWVsZCBmb3IgYSB2YXJpYWJsZSB3aXRoIGEgZ2l2ZW4gbmFtZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmFyaWFibGVFeHByZXNzaW9uIHtcbiAgICB0eXBlOiBcInZhcmlhYmxlXCI7XG4gICAgbmFtZTogc3RyaW5nO1xufVxuXG4vKiogQSBsaXN0IGxpdGVyYWwsIHdoaWNoIGlzIGFuIG9yZGVyZWQgY29sbGVjdGlvbiBvZiBmaWVsZHMuICovXG5leHBvcnQgaW50ZXJmYWNlIExpc3RFeHByZXNzaW9uIHtcbiAgICB0eXBlOiBcImxpc3RcIjtcbiAgICB2YWx1ZXM6IEV4cHJlc3Npb25bXTtcbn1cblxuLyoqIEFuIG9iamVjdCBsaXRlcmFsLCB3aGljaCBpcyBhIG1hcHBpbmcgb2YgbmFtZSB0byBmaWVsZC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT2JqZWN0RXhwcmVzc2lvbiB7XG4gICAgdHlwZTogXCJvYmplY3RcIjtcbiAgICB2YWx1ZXM6IFJlY29yZDxzdHJpbmcsIEV4cHJlc3Npb24+O1xufVxuXG4vKiogQSBiaW5hcnkgb3BlcmF0b3IgZXhwcmVzc2lvbiB3aGljaCBjb21iaW5lcyB0d28gc3Vibm9kZXMgc29tZWhvdy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmluYXJ5T3BFeHByZXNzaW9uIHtcbiAgICB0eXBlOiBcImJpbmFyeW9wXCI7XG4gICAgbGVmdDogRXhwcmVzc2lvbjtcbiAgICByaWdodDogRXhwcmVzc2lvbjtcbiAgICBvcDogQmluYXJ5T3A7XG59XG5cbi8qKiBBIGZ1bmN0aW9uIGV4cHJlc3Npb24gd2hpY2ggY2FsbHMgYSBmdW5jdGlvbiBvbiAwIG9yIG1vcmUgYXJndW1lbnRzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBGdW5jdGlvbkV4cHJlc3Npb24ge1xuICAgIHR5cGU6IFwiZnVuY3Rpb25cIjtcbiAgICAvKiogRWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBmdW5jdGlvbiBiZWluZyBjYWxsZWQgb3IgYSBGdW5jdGlvbiBvYmplY3QuICovXG4gICAgZnVuYzogRXhwcmVzc2lvbjtcbiAgICAvKiogVGhlIGxpc3Qgb2YgYXJndW1lbnRzIGJlaW5nIHBhc3NlZCB0byB0aGUgZnVuY3Rpb24uICovXG4gICAgYXJndW1lbnRzOiBFeHByZXNzaW9uW107XG59XG5cbi8qKiBBbiBpbmxpbmUgZnVuY3Rpb24gYWNjZXB0aW5nIG9uZSBvciBtb3JlIGFyZ3VtZW50cyBhbmQgcHJvZHVjaW5nIGEgdmFsdWUuICovXG5leHBvcnQgaW50ZXJmYWNlIExhbWJkYUV4cHJlc3Npb24ge1xuICAgIHR5cGU6IFwibGFtYmRhXCI7XG4gICAgLyoqIEFuIG9yZGVyZWQgbGlzdCBvZiBuYW1lZCBhcmd1bWVudHMuICovXG4gICAgYXJndW1lbnRzOiBzdHJpbmdbXTtcbiAgICAvKiogVGhlIGZpZWxkIHdoaWNoIHdpbGwgYmUgZXZhbHVhdGVkIHVzaW5nIHRoZSBhcmd1bWVudHMgaW4gY29udGV4dC4gKi9cbiAgICB2YWx1ZTogRXhwcmVzc2lvbjtcbn1cblxuLyoqIEFuIGV4cHJlc3Npb24gd2hpY2ggbmVnYXRlcyB0aGUgdmFsdWUgb2YgdGhlIG9yaWdpbmFsIGZpZWxkLiAqL1xuZXhwb3J0IGludGVyZmFjZSBOZWdhdGVkRXhwcmVzc2lvbiB7XG4gICAgdHlwZTogXCJuZWdhdGVkXCI7XG5cbiAgICAvKiogVGhlIGNoaWxkIGZpZWxkIHRvIG5lZ2F0ZS4gKi9cbiAgICBjaGlsZDogRXhwcmVzc2lvbjtcbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBFeHByZXNzaW9ucyB7XG4gICAgLyoqIFRoZSBpbXBsaWNpdCBmaWVsZCByZWZlcmVuY2luZyB0aGUgY3VycmVudCBmaWVsZC4gKi9cbiAgICBleHBvcnQgY29uc3QgUk9XOiBzdHJpbmcgPSBcIiRyb3dcIjtcblxuICAgIGV4cG9ydCBmdW5jdGlvbiB2YXJpYWJsZShuYW1lOiBzdHJpbmcpOiBWYXJpYWJsZUV4cHJlc3Npb24ge1xuICAgICAgICByZXR1cm4geyB0eXBlOiBcInZhcmlhYmxlXCIsIG5hbWUgfTtcbiAgICB9XG5cbiAgICBleHBvcnQgZnVuY3Rpb24gbGl0ZXJhbCh2YWx1ZTogTGl0ZXJhbCk6IExpdGVyYWxFeHByZXNzaW9uIHtcbiAgICAgICAgcmV0dXJuIHsgdHlwZTogXCJsaXRlcmFsXCIsIHZhbHVlIH07XG4gICAgfVxuXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGJpbmFyeU9wKGxlZnQ6IEV4cHJlc3Npb24sIG9wOiBCaW5hcnlPcCwgcmlnaHQ6IEV4cHJlc3Npb24pOiBFeHByZXNzaW9uIHtcbiAgICAgICAgcmV0dXJuIHsgdHlwZTogXCJiaW5hcnlvcFwiLCBsZWZ0LCBvcCwgcmlnaHQgfSBhcyBCaW5hcnlPcEV4cHJlc3Npb247XG4gICAgfVxuXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGluZGV4KG9iajogRXhwcmVzc2lvbiwgaW5kZXg6IEV4cHJlc3Npb24pOiBFeHByZXNzaW9uIHtcbiAgICAgICAgcmV0dXJuIHsgdHlwZTogXCJiaW5hcnlvcFwiLCBsZWZ0OiBvYmosIHJpZ2h0OiBpbmRleCwgb3A6IFwiaW5kZXhcIiB9O1xuICAgIH1cblxuICAgIC8qKiBDb252ZXJ0cyBhIHN0cmluZyBpbiBkb3Qtbm90YXRpb24tZm9ybWF0IGludG8gYSB2YXJpYWJsZSB3aGljaCBpbmRleGVzLiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiBpbmRleFZhcmlhYmxlKG5hbWU6IHN0cmluZyk6IEV4cHJlc3Npb24ge1xuICAgICAgICBsZXQgcGFydHMgPSBuYW1lLnNwbGl0KFwiLlwiKTtcbiAgICAgICAgbGV0IHJlc3VsdDogRXhwcmVzc2lvbiA9IEV4cHJlc3Npb25zLnZhcmlhYmxlKHBhcnRzWzBdKTtcbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSAxOyBpbmRleCA8IHBhcnRzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgICAgcmVzdWx0ID0gRXhwcmVzc2lvbnMuaW5kZXgocmVzdWx0LCBFeHByZXNzaW9ucy5saXRlcmFsKHBhcnRzW2luZGV4XSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBleHBvcnQgZnVuY3Rpb24gbGFtYmRhKGFyZ3M6IHN0cmluZ1tdLCB2YWx1ZTogRXhwcmVzc2lvbik6IExhbWJkYUV4cHJlc3Npb24ge1xuICAgICAgICByZXR1cm4geyB0eXBlOiBcImxhbWJkYVwiLCBhcmd1bWVudHM6IGFyZ3MsIHZhbHVlIH07XG4gICAgfVxuXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGZ1bmMoZnVuYzogRXhwcmVzc2lvbiwgYXJnczogRXhwcmVzc2lvbltdKTogRnVuY3Rpb25FeHByZXNzaW9uIHtcbiAgICAgICAgcmV0dXJuIHsgdHlwZTogXCJmdW5jdGlvblwiLCBmdW5jLCBhcmd1bWVudHM6IGFyZ3MgfTtcbiAgICB9XG5cbiAgICBleHBvcnQgZnVuY3Rpb24gbGlzdCh2YWx1ZXM6IEV4cHJlc3Npb25bXSk6IExpc3RFeHByZXNzaW9uIHtcbiAgICAgICAgcmV0dXJuIHsgdHlwZTogXCJsaXN0XCIsIHZhbHVlcyB9O1xuICAgIH1cblxuICAgIGV4cG9ydCBmdW5jdGlvbiBvYmplY3QodmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCBFeHByZXNzaW9uPik6IE9iamVjdEV4cHJlc3Npb24ge1xuICAgICAgICByZXR1cm4geyB0eXBlOiBcIm9iamVjdFwiLCB2YWx1ZXMgfTtcbiAgICB9XG5cbiAgICBleHBvcnQgZnVuY3Rpb24gbmVnYXRlKGNoaWxkOiBFeHByZXNzaW9uKTogTmVnYXRlZEV4cHJlc3Npb24ge1xuICAgICAgICByZXR1cm4geyB0eXBlOiBcIm5lZ2F0ZWRcIiwgY2hpbGQgfTtcbiAgICB9XG5cbiAgICBleHBvcnQgZnVuY3Rpb24gaXNDb21wYXJlT3Aob3A6IEJpbmFyeU9wKTogb3AgaXMgQ29tcGFyZU9wIHtcbiAgICAgICAgcmV0dXJuIG9wID09IFwiPD1cIiB8fCBvcCA9PSBcIjxcIiB8fCBvcCA9PSBcIj5cIiB8fCBvcCA9PSBcIj49XCIgfHwgb3AgPT0gXCIhPVwiIHx8IG9wID09IFwiPVwiO1xuICAgIH1cblxuICAgIC8qKiBSZXR1cm5zIGEgc2V0IG9mIGFsbCB1bmJvdW5kIHZhcmlhYmxlcyAoaS5lLiwgdmFyaWFibGVzIG5vdCBwcm92aWRlZCBieSBgcm93YCwgbGFtYmRhcywgb3Igc2ltaWxhci4pICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIHVuYm91bmRWYXJpYWJsZXMoZXhwcjogRXhwcmVzc2lvbiwgYm91bmQ6IFNldDxzdHJpbmc+ID0gbmV3IFNldChbUk9XXSkpOiBTZXQ8c3RyaW5nPiB7XG4gICAgICAgIHN3aXRjaCAoZXhwci50eXBlKSB7XG4gICAgICAgICAgICBjYXNlIFwiYmluYXJ5b3BcIjpcbiAgICAgICAgICAgICAgICAvLyBTcGVjaWFsIGNhc2UgYHJvd1tcIi4uLi5cIl1gLlxuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgZXhwci5vcCA9PT0gXCJpbmRleFwiICYmXG4gICAgICAgICAgICAgICAgICAgIGV4cHIubGVmdC50eXBlID09IFwidmFyaWFibGVcIiAmJlxuICAgICAgICAgICAgICAgICAgICBleHByLmxlZnQubmFtZSA9PSBST1cgJiZcbiAgICAgICAgICAgICAgICAgICAgZXhwci5yaWdodC50eXBlID09IFwibGl0ZXJhbFwiICYmXG4gICAgICAgICAgICAgICAgICAgIExpdGVyYWxzLmlzU3RyaW5nKGV4cHIucmlnaHQudmFsdWUpXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChib3VuZC5oYXMoZXhwci5yaWdodC52YWx1ZSkpIHJldHVybiBuZXcgU2V0KCk7XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgcmV0dXJuIG5ldyBTZXQoW2V4cHIucmlnaHQudmFsdWVdKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBPdGhlcndpc2UganVzdCBjaGVjayBsZWZ0IGFuZCByaWdodC5cbiAgICAgICAgICAgICAgICByZXR1cm4gRmlsdGVycy5zZXRVbmlvbihbdW5ib3VuZFZhcmlhYmxlcyhleHByLmxlZnQsIGJvdW5kKSwgdW5ib3VuZFZhcmlhYmxlcyhleHByLnJpZ2h0LCBib3VuZCldKTtcbiAgICAgICAgICAgIGNhc2UgXCJmdW5jdGlvblwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBGaWx0ZXJzLnNldFVuaW9uKGV4cHIuYXJndW1lbnRzLm1hcCgoYSkgPT4gdW5ib3VuZFZhcmlhYmxlcyhhLCBib3VuZCkpKTtcbiAgICAgICAgICAgIGNhc2UgXCJsYW1iZGFcIjpcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdCb3VuZCA9IGJvdW5kID8/IG5ldyBTZXQoKTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGFyZyBvZiBleHByLmFyZ3VtZW50cykgbmV3Qm91bmQuYWRkKGFyZyk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdW5ib3VuZFZhcmlhYmxlcyhleHByLnZhbHVlLCBuZXdCb3VuZCk7XG4gICAgICAgICAgICBjYXNlIFwibGlzdFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBGaWx0ZXJzLnNldFVuaW9uKGV4cHIudmFsdWVzLm1hcCgodikgPT4gdW5ib3VuZFZhcmlhYmxlcyh2LCBib3VuZCkpKTtcbiAgICAgICAgICAgIGNhc2UgXCJuZWdhdGVkXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHVuYm91bmRWYXJpYWJsZXMoZXhwci5jaGlsZCwgYm91bmQpO1xuICAgICAgICAgICAgY2FzZSBcIm9iamVjdFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBGaWx0ZXJzLnNldFVuaW9uKE9iamVjdC52YWx1ZXMoZXhwci52YWx1ZXMpLm1hcCgodikgPT4gdW5ib3VuZFZhcmlhYmxlcyh2LCBib3VuZCkpKTtcbiAgICAgICAgICAgIGNhc2UgXCJ2YXJpYWJsZVwiOlxuICAgICAgICAgICAgICAgIGlmIChib3VuZCAmJiBib3VuZC5oYXMoZXhwci5uYW1lKSkgcmV0dXJuIG5ldyBTZXQoKTtcbiAgICAgICAgICAgICAgICBlbHNlIHJldHVybiBuZXcgU2V0KFtleHByLm5hbWVdKTtcbiAgICAgICAgICAgIGNhc2UgXCJsaXRlcmFsXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBTZXQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBSZW5kZXIgYW4gZXhwcmVzc2lvbiBhcyBhIHN0cmluZy4gKi9cbiAgICBleHBvcnQgZnVuY3Rpb24gdG9TdHJpbmcoZXhwcjogRXhwcmVzc2lvbik6IHN0cmluZyB7XG4gICAgICAgIHN3aXRjaCAoZXhwci50eXBlKSB7XG4gICAgICAgICAgICBjYXNlIFwiYmluYXJ5b3BcIjpcbiAgICAgICAgICAgICAgICBpZiAoZXhwci5vcCA9PT0gXCJpbmRleFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgJHt0b1N0cmluZyhleHByLmxlZnQpfVske3RvU3RyaW5nKGV4cHIucmlnaHQpfV1gO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBgJHt0b1N0cmluZyhleHByLmxlZnQpfSAke2V4cHIub3B9ICR7dG9TdHJpbmcoZXhwci5yaWdodCl9YDtcbiAgICAgICAgICAgIGNhc2UgXCJmdW5jdGlvblwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBgJHt0b1N0cmluZyhleHByLmZ1bmMpfSgke2V4cHIuYXJndW1lbnRzLm1hcCh0b1N0cmluZykuam9pbihcIiwgXCIpfSlgO1xuICAgICAgICAgICAgY2FzZSBcImxhbWJkYVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBgKCR7ZXhwci5hcmd1bWVudHMuam9pbihcIiwgXCIpfSkgPT4gJHt0b1N0cmluZyhleHByLnZhbHVlKX1gO1xuICAgICAgICAgICAgY2FzZSBcImxpc3RcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYFske2V4cHIudmFsdWVzLm1hcCh0b1N0cmluZykuam9pbihcIiwgXCIpfV1gO1xuICAgICAgICAgICAgY2FzZSBcIm5lZ2F0ZWRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYCEke3RvU3RyaW5nKGV4cHIuY2hpbGQpfWA7XG4gICAgICAgICAgICBjYXNlIFwib2JqZWN0XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGB7JHtPYmplY3QuZW50cmllcyhleHByLnZhbHVlcylcbiAgICAgICAgICAgICAgICAgICAgLm1hcCgoW2ssIHZdKSA9PiBgJHtrfTogJHt0b1N0cmluZyh2KX1gKVxuICAgICAgICAgICAgICAgICAgICAuam9pbihcIiwgXCIpfX1gO1xuICAgICAgICAgICAgY2FzZSBcInZhcmlhYmxlXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGV4cHIubmFtZTtcbiAgICAgICAgICAgIGNhc2UgXCJsaXRlcmFsXCI6XG4gICAgICAgICAgICAgICAgY29uc3Qgd3JhcHBlZCA9IExpdGVyYWxzLndyYXBWYWx1ZShleHByLnZhbHVlKTtcbiAgICAgICAgICAgICAgICBpZiAoIXdyYXBwZWQpIHJldHVybiBcIm51bGxcIjtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHdyYXBwZWQudHlwZSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFwic3RyaW5nXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYFwiJHt3cmFwcGVkLnZhbHVlfVwiYDtcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBMaXRlcmFscy50b1N0cmluZyh3cmFwcGVkLnZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBleHBvcnQgY29uc3QgTlVMTCA9IEV4cHJlc3Npb25zLmxpdGVyYWwobnVsbCk7XG59XG4iLCAiLyoqIFByb3ZpZGVzIGNvcmUgcHJlYWN0IC8gcmVuZGVyaW5nIHV0aWxpdGllcyBmb3IgYWxsIHZpZXcgdHlwZXMuXG4gKiBAbW9kdWxlIHVpXG4gKi9cbmltcG9ydCB7IEFwcCwgTWFya2Rvd25SZW5kZXJlciB9IGZyb20gXCJvYnNpZGlhblwiO1xuaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5pbXBvcnQgeyBMaW5rLCBMaXRlcmFsLCBMaXRlcmFscyB9IGZyb20gXCJleHByZXNzaW9uL2xpdGVyYWxcIjtcbmltcG9ydCB7IERhdGFjb3JlIH0gZnJvbSBcImluZGV4L2RhdGFjb3JlXCI7XG5pbXBvcnQgeyBTZXR0aW5ncyB9IGZyb20gXCJzZXR0aW5nc1wiO1xuaW1wb3J0IHsgY3VycmVudExvY2FsZSwgcmVuZGVyTWluaW1hbERhdGUsIHJlbmRlck1pbmltYWxEdXJhdGlvbiB9IGZyb20gXCJ1dGlscy9ub3JtYWxpemVyc1wiO1xuaW1wb3J0IHsgZXh0cmFjdEltYWdlRGltZW5zaW9ucywgaXNJbWFnZUVtYmVkIH0gZnJvbSBcInV0aWxzL21lZGlhXCI7XG5cbmltcG9ydCB7IGNyZWF0ZUNvbnRleHQsIEZyYWdtZW50LCByZW5kZXIgfSBmcm9tIFwicHJlYWN0XCI7XG5pbXBvcnQgeyB1c2VDb250ZXh0LCB1c2VNZW1vLCB1c2VDYWxsYmFjaywgdXNlUmVmLCB1c2VFZmZlY3QsIHVzZUVycm9yQm91bmRhcnkgfSBmcm9tIFwicHJlYWN0L2hvb2tzXCI7XG5pbXBvcnQgeyBDU1NQcm9wZXJ0aWVzLCBQcm9wc1dpdGhDaGlsZHJlbiwgbWVtbyB9IGZyb20gXCJwcmVhY3QvY29tcGF0XCI7XG5pbXBvcnQgeyBFbWJlZCB9IGZyb20gXCJhcGkvdWkvZW1iZWRcIjtcblxuaW1wb3J0IFwiLi9lcnJvcnMuY3NzXCI7XG5cbmV4cG9ydCBjb25zdCBDT01QT05FTlRfQ09OVEVYVCA9IGNyZWF0ZUNvbnRleHQ8Q29tcG9uZW50Pih1bmRlZmluZWQhKTtcbmV4cG9ydCBjb25zdCBBUFBfQ09OVEVYVCA9IGNyZWF0ZUNvbnRleHQ8QXBwPih1bmRlZmluZWQhKTtcbmV4cG9ydCBjb25zdCBEQVRBQ09SRV9DT05URVhUID0gY3JlYXRlQ29udGV4dDxEYXRhY29yZT4odW5kZWZpbmVkISk7XG5leHBvcnQgY29uc3QgU0VUVElOR1NfQ09OVEVYVCA9IGNyZWF0ZUNvbnRleHQ8U2V0dGluZ3M+KHVuZGVmaW5lZCEpO1xuZXhwb3J0IGNvbnN0IENVUlJFTlRfRklMRV9DT05URVhUID0gY3JlYXRlQ29udGV4dDxzdHJpbmc+KFwiXCIpO1xuXG4vKiogTW9yZSBjb21wYWN0IHByb3ZpZGVyIGZvciBhbGwgb2YgdGhlIGRhdGFjb3JlIHJlYWN0IGNvbnRleHRzLlxuICpcbiAqIEBoaWRkZW5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIERhdGFjb3JlQ29udGV4dFByb3ZpZGVyKHtcbiAgICBjaGlsZHJlbixcbiAgICBhcHAsXG4gICAgY29tcG9uZW50LFxuICAgIGRhdGFjb3JlLFxuICAgIHNldHRpbmdzLFxufTogUHJvcHNXaXRoQ2hpbGRyZW48e1xuICAgIGFwcDogQXBwO1xuICAgIGNvbXBvbmVudDogQ29tcG9uZW50O1xuICAgIGRhdGFjb3JlOiBEYXRhY29yZTtcbiAgICBzZXR0aW5nczogU2V0dGluZ3M7XG59Pikge1xuICAgIHJldHVybiAoXG4gICAgICAgIDxDT01QT05FTlRfQ09OVEVYVC5Qcm92aWRlciB2YWx1ZT17Y29tcG9uZW50fT5cbiAgICAgICAgICAgIDxBUFBfQ09OVEVYVC5Qcm92aWRlciB2YWx1ZT17YXBwfT5cbiAgICAgICAgICAgICAgICA8REFUQUNPUkVfQ09OVEVYVC5Qcm92aWRlciB2YWx1ZT17ZGF0YWNvcmV9PlxuICAgICAgICAgICAgICAgICAgICA8U0VUVElOR1NfQ09OVEVYVC5Qcm92aWRlciB2YWx1ZT17c2V0dGluZ3N9PntjaGlsZHJlbn08L1NFVFRJTkdTX0NPTlRFWFQuUHJvdmlkZXI+XG4gICAgICAgICAgICAgICAgPC9EQVRBQ09SRV9DT05URVhULlByb3ZpZGVyPlxuICAgICAgICAgICAgPC9BUFBfQ09OVEVYVC5Qcm92aWRlcj5cbiAgICAgICAgPC9DT01QT05FTlRfQ09OVEVYVC5Qcm92aWRlcj5cbiAgICApO1xufVxuXG4vKipcbiAqIEBoaWRkZW5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFJhd0xpbmsoeyBsaW5rLCBzb3VyY2VQYXRoOiBtYXliZVNvdXJjZVBhdGggfTogeyBsaW5rOiBMaW5rIHwgc3RyaW5nOyBzb3VyY2VQYXRoPzogc3RyaW5nIH0pIHtcbiAgICBjb25zdCB3b3Jrc3BhY2UgPSB1c2VDb250ZXh0KEFQUF9DT05URVhUKT8ud29ya3NwYWNlO1xuICAgIGNvbnN0IGN1cnJlbnRQYXRoID0gdXNlQ29udGV4dChDVVJSRU5UX0ZJTEVfQ09OVEVYVCk7XG4gICAgY29uc3Qgc291cmNlUGF0aCA9IG1heWJlU291cmNlUGF0aCA/PyBjdXJyZW50UGF0aCA/PyBcIlwiO1xuICAgIGNvbnN0IHBhcnNlZCA9IHVzZU1lbW8oKCkgPT4gKExpdGVyYWxzLmlzTGluayhsaW5rKSA/IGxpbmsgOiBMaW5rLmluZmVyKGxpbmspKSwgW2xpbmtdKTtcblxuICAgIGNvbnN0IG9uQ2xpY2sgPSB1c2VDYWxsYmFjayhcbiAgICAgICAgKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBuZXd0YWIgPSBldmVudC5zaGlmdEtleTtcbiAgICAgICAgICAgIHdvcmtzcGFjZT8ub3BlbkxpbmtUZXh0KHBhcnNlZC5vYnNpZGlhbkxpbmsoKSwgc291cmNlUGF0aCwgbmV3dGFiKTtcbiAgICAgICAgfSxcbiAgICAgICAgW3BhcnNlZCwgc291cmNlUGF0aF1cbiAgICApO1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPGFcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9e3BhcnNlZC5kaXNwbGF5T3JEZWZhdWx0KCl9XG4gICAgICAgICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgICAgICAgICAgY2xhc3NOYW1lPVwiaW50ZXJuYWwtbGlua1wiXG4gICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgICAgcmVsPVwibm9vcGVuZXJcIlxuICAgICAgICAgICAgZGF0YS10b29sdGlwLXBvc2l0aW9uPVwidG9wXCJcbiAgICAgICAgICAgIGRhdGEtaHJlZj17cGFyc2VkLm9ic2lkaWFuTGluaygpfVxuICAgICAgICA+XG4gICAgICAgICAgICB7cGFyc2VkLmRpc3BsYXlPckRlZmF1bHQoKX1cbiAgICAgICAgPC9hPlxuICAgICk7XG59XG5cbi8qKlxuICogQ29waWVzIGhvdyBhbiBPYnNpZGlhbiBsaW5rIGlzIHJlbmRlcmVkIGJ1dCBpcyBhYm91dCBhbiBvcmRlciBvZiBtYWduaXR1ZGUgZmFzdGVyIHRvIHJlbmRlciB0aGFuIHZpYSBtYXJrZG93biByZW5kZXJpbmcuICovXG5leHBvcnQgY29uc3QgT2JzaWRpYW5MaW5rID0gbWVtbyhSYXdMaW5rKTtcblxuLyoqQGhpZGRlbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFJhd01hcmtkb3duKHtcbiAgICBjb250ZW50LFxuICAgIHNvdXJjZVBhdGg6IG1heWJlU291cmNlUGF0aCxcbiAgICBpbmxpbmUgPSB0cnVlLFxuICAgIHN0eWxlLFxuICAgIGNscyxcbiAgICBvbkNsaWNrLFxufToge1xuICAgIGNvbnRlbnQ6IHN0cmluZztcbiAgICBzb3VyY2VQYXRoPzogc3RyaW5nO1xuICAgIGlubGluZT86IGJvb2xlYW47XG4gICAgc3R5bGU/OiBDU1NQcm9wZXJ0aWVzO1xuICAgIGNscz86IHN0cmluZztcbiAgICBvbkNsaWNrPzogKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiBhbnk7XG59KSB7XG4gICAgY29uc3QgY29udGFpbmVyID0gdXNlUmVmPEhUTUxFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gICAgY29uc3QgY29tcG9uZW50ID0gdXNlQ29udGV4dChDT01QT05FTlRfQ09OVEVYVCk7XG4gICAgY29uc3QgZGVmYXVsdFBhdGggPSB1c2VDb250ZXh0KENVUlJFTlRfRklMRV9DT05URVhUKTtcbiAgICBjb25zdCBhcHAgPSB1c2VDb250ZXh0KEFQUF9DT05URVhUKTtcblxuICAgIGNvbnN0IHNvdXJjZVBhdGggPSBtYXliZVNvdXJjZVBhdGggPz8gZGVmYXVsdFBhdGg7XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoIWNvbnRhaW5lci5jdXJyZW50KSByZXR1cm47XG5cbiAgICAgICAgY29udGFpbmVyLmN1cnJlbnQuaW5uZXJIVE1MID0gXCJcIjtcbiAgICAgICAgTWFya2Rvd25SZW5kZXJlci5yZW5kZXIoYXBwLCBjb250ZW50LCBjb250YWluZXIuY3VycmVudCwgc291cmNlUGF0aCwgY29tcG9uZW50KS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIGlmICghY29udGFpbmVyLmN1cnJlbnQgfHwgIWlubGluZSkgcmV0dXJuO1xuXG4gICAgICAgICAgICAvLyBVbndyYXAgYW55IGNyZWF0ZWQgcGFyYWdyYXBoIGVsZW1lbnRzIGlmIHdlIGFyZSBpbmxpbmUuXG4gICAgICAgICAgICBsZXQgcGFyYWdyYXBoID0gY29udGFpbmVyLmN1cnJlbnQucXVlcnlTZWxlY3RvcihcInBcIik7XG4gICAgICAgICAgICB3aGlsZSAocGFyYWdyYXBoKSB7XG4gICAgICAgICAgICAgICAgbGV0IGNoaWxkcmVuID0gcGFyYWdyYXBoLmNoaWxkTm9kZXM7XG4gICAgICAgICAgICAgICAgcGFyYWdyYXBoLnJlcGxhY2VXaXRoKC4uLkFycmF5LmZyb20oY2hpbGRyZW4pKTtcbiAgICAgICAgICAgICAgICBwYXJhZ3JhcGggPSBjb250YWluZXIuY3VycmVudC5xdWVyeVNlbGVjdG9yKFwicFwiKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gaGF2ZSBlbWJlZHMgYWN0dWFsbHkgbG9hZCBpbnN0ZWFkIG9mIGRpc3BsYXlpbmcgYXMgcGxhaW4gdGV4dC5cbiAgICAgICAgICAgIGxldCBlbWJlZCA9IGNvbnRhaW5lci5jdXJyZW50LnF1ZXJ5U2VsZWN0b3IoXCJzcGFuLmludGVybmFsLWVtYmVkOm5vdCguaXMtbG9hZGVkKVwiKTtcbiAgICAgICAgICAgIHdoaWxlIChlbWJlZCkge1xuICAgICAgICAgICAgICAgIGVtYmVkLmVtcHR5KCk7XG4gICAgICAgICAgICAgICAgcmVuZGVyKFxuICAgICAgICAgICAgICAgICAgICA8QVBQX0NPTlRFWFQuUHJvdmlkZXIgdmFsdWU9e2FwcH0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8RW1iZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rPXtMaW5rLnBhcnNlSW5uZXIoZW1iZWQuZ2V0QXR0cmlidXRlKFwic3JjXCIpID8/IFwiXCIpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZVBhdGg9e3NvdXJjZVBhdGh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5lPXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9BUFBfQ09OVEVYVC5Qcm92aWRlcj4sXG4gICAgICAgICAgICAgICAgICAgIGVtYmVkXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBlbWJlZC5hZGRDbGFzcyhcImlzLWxvYWRlZFwiKTtcbiAgICAgICAgICAgICAgICBlbWJlZCA9IGNvbnRhaW5lci5jdXJyZW50LnF1ZXJ5U2VsZWN0b3IoXCJzcGFuLmludGVybmFsLWVtYmVkOm5vdCguaXMtbG9hZGVkKVwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSwgW2NvbnRlbnQsIHNvdXJjZVBhdGgsIGlubGluZSwgY29udGFpbmVyLmN1cnJlbnRdKTtcblxuICAgIHJldHVybiA8c3BhbiByZWY9e2NvbnRhaW5lcn0gc3R5bGU9e3N0eWxlfSBjbGFzc05hbWU9e2Nsc30gb25DbGljaz17b25DbGlja30+PC9zcGFuPjtcbn1cblxuLyoqXG4gKiBIYWNreSBwcmVhY3QgY29tcG9uZW50IHdoaWNoIHdyYXBzIE9ic2lkaWFuJ3MgbWFya2Rvd24gcmVuZGVyZXIgaW50byBhIG5lYXQgY29tcG9uZW50LiAqL1xuZXhwb3J0IGNvbnN0IE1hcmtkb3duID0gbWVtbyhSYXdNYXJrZG93bik7XG5cbi8qKlxuICogQGhpZGRlblxuICogIEludGVsbGlnZW50bHkgcmVuZGVyIGFuIGFyYml0cmFyeSBsaXRlcmFsIHZhbHVlLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFJhd0xpdCh7XG4gICAgdmFsdWUsXG4gICAgc291cmNlUGF0aDogbWF5YmVTb3VyY2VQYXRoLFxuICAgIGlubGluZSA9IGZhbHNlLFxuICAgIGRlcHRoID0gMCxcbn06IFByb3BzV2l0aENoaWxkcmVuPHtcbiAgICB2YWx1ZTogTGl0ZXJhbCB8IHVuZGVmaW5lZDtcbiAgICBzb3VyY2VQYXRoPzogc3RyaW5nO1xuICAgIGlubGluZT86IGJvb2xlYW47XG4gICAgZGVwdGg/OiBudW1iZXI7XG59Pikge1xuICAgIGNvbnN0IHNldHRpbmdzID0gdXNlQ29udGV4dChTRVRUSU5HU19DT05URVhUKTtcbiAgICBjb25zdCBhcHAgPSB1c2VDb250ZXh0KEFQUF9DT05URVhUKTtcbiAgICBjb25zdCBkZWZhdWx0UGF0aCA9IHVzZUNvbnRleHQoQ1VSUkVOVF9GSUxFX0NPTlRFWFQpO1xuXG4gICAgY29uc3Qgc291cmNlUGF0aCA9IG1heWJlU291cmNlUGF0aCA/PyBkZWZhdWx0UGF0aDtcblxuICAgIC8vIFNob3J0LWNpcmN1aXQgaWYgYmV5b25kIHRoZSBtYXhpbXVtIHJlbmRlciBkZXB0aC5cbiAgICBpZiAoZGVwdGggPj0gc2V0dGluZ3MubWF4UmVjdXJzaXZlUmVuZGVyRGVwdGgpIHJldHVybiA8RnJhZ21lbnQ+Li4uPC9GcmFnbWVudD47XG5cbiAgICBpZiAoTGl0ZXJhbHMuaXNOdWxsKHZhbHVlKSB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiA8TWFya2Rvd24gaW5saW5lPXtpbmxpbmV9IGNvbnRlbnQ9e3NldHRpbmdzLnJlbmRlck51bGxBc30gc291cmNlUGF0aD17c291cmNlUGF0aH0gLz47XG4gICAgfSBlbHNlIGlmIChMaXRlcmFscy5pc1N0cmluZyh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIDxNYXJrZG93biBpbmxpbmU9e2lubGluZX0gY29udGVudD17dmFsdWV9IHNvdXJjZVBhdGg9e3NvdXJjZVBhdGh9IC8+O1xuICAgIH0gZWxzZSBpZiAoTGl0ZXJhbHMuaXNOdW1iZXIodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiA8RnJhZ21lbnQ+e1wiXCIgKyB2YWx1ZX08L0ZyYWdtZW50PjtcbiAgICB9IGVsc2UgaWYgKExpdGVyYWxzLmlzQm9vbGVhbih2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIDxGcmFnbWVudD57XCJcIiArIHZhbHVlfTwvRnJhZ21lbnQ+O1xuICAgIH0gZWxzZSBpZiAoTGl0ZXJhbHMuaXNEYXRlKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEZyYWdtZW50PlxuICAgICAgICAgICAgICAgIHtyZW5kZXJNaW5pbWFsRGF0ZSh2YWx1ZSwgc2V0dGluZ3MuZGVmYXVsdERhdGVGb3JtYXQsIHNldHRpbmdzLmRlZmF1bHREYXRlVGltZUZvcm1hdCwgY3VycmVudExvY2FsZSgpKX1cbiAgICAgICAgICAgIDwvRnJhZ21lbnQ+XG4gICAgICAgICk7XG4gICAgfSBlbHNlIGlmIChMaXRlcmFscy5pc0R1cmF0aW9uKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gPEZyYWdtZW50PntyZW5kZXJNaW5pbWFsRHVyYXRpb24odmFsdWUpfTwvRnJhZ21lbnQ+O1xuICAgIH0gZWxzZSBpZiAoTGl0ZXJhbHMuaXNMaW5rKHZhbHVlKSkge1xuICAgICAgICAvLyBTcGVjaWFsIGNhc2UgaGFuZGxpbmcgb2YgaW1hZ2UvdmlkZW8vZXRjIGVtYmVkZGluZ3MgdG8gYnlwYXNzIHRoZSBPYnNpZGlhbiBBUEkgbm90IHdvcmtpbmcuXG4gICAgICAgIGlmIChpc0ltYWdlRW1iZWQodmFsdWUpKSB7XG4gICAgICAgICAgICBsZXQgcmVhbEZpbGUgPSBhcHAubWV0YWRhdGFDYWNoZS5nZXRGaXJzdExpbmtwYXRoRGVzdCh2YWx1ZS5wYXRoLCBzb3VyY2VQYXRoKTtcbiAgICAgICAgICAgIGlmICghcmVhbEZpbGUpIHJldHVybiA8TWFya2Rvd24gY29udGVudD17dmFsdWUubWFya2Rvd24oKX0gc291cmNlUGF0aD17c291cmNlUGF0aH0gLz47XG5cbiAgICAgICAgICAgIGxldCBkaW1lbnNpb25zID0gZXh0cmFjdEltYWdlRGltZW5zaW9ucyh2YWx1ZSk7XG4gICAgICAgICAgICBsZXQgcmVzb3VyY2VQYXRoID0gYXBwLnZhdWx0LmdldFJlc291cmNlUGF0aChyZWFsRmlsZSk7XG5cbiAgICAgICAgICAgIGlmIChkaW1lbnNpb25zICYmIGRpbWVuc2lvbnMubGVuZ3RoID09IDIpXG4gICAgICAgICAgICAgICAgcmV0dXJuIDxpbWcgYWx0PXt2YWx1ZS5wYXRofSBzcmM9e3Jlc291cmNlUGF0aH0gd2lkdGg9e2RpbWVuc2lvbnNbMF19IGhlaWdodD17ZGltZW5zaW9uc1sxXX0gLz47XG4gICAgICAgICAgICBlbHNlIGlmIChkaW1lbnNpb25zICYmIGRpbWVuc2lvbnMubGVuZ3RoID09IDEpXG4gICAgICAgICAgICAgICAgcmV0dXJuIDxpbWcgYWx0PXt2YWx1ZS5wYXRofSBzcmM9e3Jlc291cmNlUGF0aH0gd2lkdGg9e2RpbWVuc2lvbnNbMF19IC8+O1xuICAgICAgICAgICAgZWxzZSByZXR1cm4gPGltZyBhbHQ9e3ZhbHVlLnBhdGh9IHNyYz17cmVzb3VyY2VQYXRofSAvPjtcbiAgICAgICAgfSBlbHNlIGlmICh2YWx1ZS5lbWJlZCkge1xuICAgICAgICAgICAgcmV0dXJuIDxFbWJlZCBsaW5rPXt2YWx1ZX0gc291cmNlUGF0aD17c291cmNlUGF0aH0gaW5saW5lPXtpbmxpbmV9IC8+O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIDxPYnNpZGlhbkxpbmsgbGluaz17dmFsdWV9IHNvdXJjZVBhdGg9e3NvdXJjZVBhdGh9IC8+O1xuICAgIH0gZWxzZSBpZiAoTGl0ZXJhbHMuaXNGdW5jdGlvbih2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIDxGcmFnbWVudD4mbHQ7ZnVuY3Rpb24mZ3Q7PC9GcmFnbWVudD47XG4gICAgfSBlbHNlIGlmIChMaXRlcmFscy5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICBpZiAoIWlubGluZSkge1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8dWwgY2xhc3NOYW1lPXtcImRhdGF2aWV3IGRhdGF2aWV3LXVsIGRhdGF2aWV3LXJlc3VsdC1saXN0LXVsXCJ9PlxuICAgICAgICAgICAgICAgICAgICB7dmFsdWUubWFwKChzdWJ2YWx1ZSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzTmFtZT1cImRhdGF2aWV3LXJlc3VsdC1saXN0LWxpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPExpdCB2YWx1ZT17c3VidmFsdWV9IHNvdXJjZVBhdGg9e3NvdXJjZVBhdGh9IGlubGluZT17aW5saW5lfSBkZXB0aD17ZGVwdGggKyAxfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodmFsdWUubGVuZ3RoID09IDApIHJldHVybiA8RnJhZ21lbnQ+Jmx0O0VtcHR5IExpc3QmZ3Q7PC9GcmFnbWVudD47XG5cbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiZGF0YXZpZXcgZGF0YXZpZXctcmVzdWx0LWxpc3Qtc3BhblwiPlxuICAgICAgICAgICAgICAgICAgICB7dmFsdWUubWFwKChzdWJ2YWx1ZSwgaW5kZXgpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxGcmFnbWVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aW5kZXggPT0gMCA/IFwiXCIgOiBcIiwgXCJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPExpdCB2YWx1ZT17c3VidmFsdWV9IHNvdXJjZVBhdGg9e3NvdXJjZVBhdGh9IGlubGluZT17aW5saW5lfSBkZXB0aD17ZGVwdGggKyAxfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9GcmFnbWVudD5cbiAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAoTGl0ZXJhbHMuaXNPYmplY3QodmFsdWUpKSB7XG4gICAgICAgIC8vIERvbid0IHJlbmRlciBjbGFzc2VzIGluIGNhc2UgdGhleSBoYXZlIHJlY3Vyc2l2ZSByZWZlcmVuY2VzOyBzcG9vcHkuXG4gICAgICAgIGlmICh2YWx1ZT8uY29uc3RydWN0b3I/Lm5hbWUgJiYgdmFsdWU/LmNvbnN0cnVjdG9yPy5uYW1lICE9IFwiT2JqZWN0XCIpIHtcbiAgICAgICAgICAgIHJldHVybiA8RnJhZ21lbnQ+Jmx0O3t2YWx1ZS5jb25zdHJ1Y3Rvci5uYW1lfSZndDs8L0ZyYWdtZW50PjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghaW5saW5lKSB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDx1bCBjbGFzc05hbWU9XCJkYXRhdmlldyBkYXRhdmlldy11bCBkYXRhdmlldy1yZXN1bHQtb2JqZWN0LXVsXCI+XG4gICAgICAgICAgICAgICAgICAgIHtPYmplY3QuZW50cmllcyh2YWx1ZSkubWFwKChba2V5LCB2YWx1ZV0pID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzc05hbWU9XCJkYXRhdmlldyBkYXRhdmlldy1saSBkYXRhdmlldy1yZXN1bHQtb2JqZWN0LWxpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2tleX06IDxMaXQgdmFsdWU9e3ZhbHVlfSBzb3VyY2VQYXRoPXtzb3VyY2VQYXRofSBpbmxpbmU9e2lubGluZX0gZGVwdGg9e2RlcHRoICsgMX0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKHZhbHVlKS5sZW5ndGggPT0gMCkgcmV0dXJuIDxGcmFnbWVudD4mbHQ7RW1wdHkgT2JqZWN0Jmd0OzwvRnJhZ21lbnQ+O1xuXG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImRhdGF2aWV3IGRhdGF2aWV3LXJlc3VsdC1vYmplY3Qtc3BhblwiPlxuICAgICAgICAgICAgICAgICAgICB7T2JqZWN0LmVudHJpZXModmFsdWUpLm1hcCgoW2tleSwgdmFsdWVdLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPEZyYWdtZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpbmRleCA9PSAwID8gXCJcIiA6IFwiLCBcIn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7a2V5fTogPExpdCB2YWx1ZT17dmFsdWV9IHNvdXJjZVBhdGg9e3NvdXJjZVBhdGh9IGlubGluZT17aW5saW5lfSBkZXB0aD17ZGVwdGggKyAxfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9GcmFnbWVudD5cbiAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiA8RnJhZ21lbnQ+Jmx0O1VucmVjb2duaXplZDoge0pTT04uc3RyaW5naWZ5KHZhbHVlKX0mZ3Q7PC9GcmFnbWVudD47XG59XG5cbi8qKlxuICogQGhpZGRlblxuICogSW50ZWxsaWdlbnRseSByZW5kZXIgYW4gYXJiaXRyYXJ5IGxpdGVyYWwgdmFsdWUuICovXG5leHBvcnQgY29uc3QgTGl0ID0gbWVtbyhSYXdMaXQpO1xuXG4vKipcbiAqIEBoaWRkZW5cbiAqIFJlbmRlciBhIHByZXR0eSBjZW50ZXJlZCBlcnJvciBtZXNzYWdlIGluIGEgYm94LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEVycm9yTWVzc2FnZSh7XG4gICAgdGl0bGUsXG4gICAgbWVzc2FnZSxcbiAgICBlcnJvcixcbiAgICByZXNldCxcbn06IHtcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICBtZXNzYWdlPzogc3RyaW5nO1xuICAgIGVycm9yPzogc3RyaW5nO1xuICAgIHJlc2V0PzogKCkgPT4gdm9pZDtcbn0pIHtcbiAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRhdGFjb3JlLWVycm9yLWJveFwiPlxuICAgICAgICAgICAge3RpdGxlICYmIDxoNCBjbGFzc05hbWU9XCJkYXRhY29yZS1lcnJvci10aXRsZVwiPnt0aXRsZX08L2g0Pn1cbiAgICAgICAgICAgIHttZXNzYWdlICYmIDxwIGNsYXNzTmFtZT1cImRhdGFjb3JlLWVycm9yLW1lc3NhZ2VcIj57bWVzc2FnZX08L3A+fVxuICAgICAgICAgICAge2Vycm9yICYmIDxwcmUgY2xhc3NOYW1lPVwiZGF0YWNvcmUtZXJyb3ItcHJlXCI+e2Vycm9yfTwvcHJlPn1cbiAgICAgICAgICAgIHtyZXNldCAmJiAoXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzc05hbWU9XCJkYXRhY29yZS1lcnJvci1yZXRyeVwiIG9uQ2xpY2s9e3Jlc2V0fT5cbiAgICAgICAgICAgICAgICAgICAgUmVydW5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuICAgICk7XG59XG5cbi8qKiBBIHNpbXBsZSBlcnJvciBib3VuZGFyeSB3aGljaCByZW5kZXJzIGEgbWVzc2FnZSBvbiBmYWlsdXJlLlxuICpcbiAqIEBoaWRkZW5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFNpbXBsZUVycm9yQm91bmRhcnkoe1xuICAgIHRpdGxlLFxuICAgIG1lc3NhZ2UsXG4gICAgY2hpbGRyZW4sXG59OiBQcm9wc1dpdGhDaGlsZHJlbjx7IHRpdGxlPzogc3RyaW5nOyBtZXNzYWdlPzogc3RyaW5nIH0+KSB7XG4gICAgY29uc3QgW2Vycm9yLCByZXNldF0gPSB1c2VFcnJvckJvdW5kYXJ5KCk7XG5cbiAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIDxFcnJvck1lc3NhZ2UgdGl0bGU9e3RpdGxlfSBtZXNzYWdlPXttZXNzYWdlfSBlcnJvcj17ZXJyb3Iuc3RhY2t9IHJlc2V0PXtyZXNldH0gLz47XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIDxGcmFnbWVudD57Y2hpbGRyZW59PC9GcmFnbWVudD47XG4gICAgfVxufVxuIiwgImltcG9ydCB7IExpbmsgfSBmcm9tIFwiZXhwcmVzc2lvbi9saW5rXCI7XG5cbmV4cG9ydCBjb25zdCBJTUFHRV9FWFRFTlNJT05TID0gT2JqZWN0LmZyZWV6ZShcbiAgICBuZXcgU2V0KFtcbiAgICAgICAgXCIudGlmXCIsXG4gICAgICAgIFwiLnRpZmZcIixcbiAgICAgICAgXCIuZ2lmXCIsXG4gICAgICAgIFwiLnBuZ1wiLFxuICAgICAgICBcIi5hcG5nXCIsXG4gICAgICAgIFwiLmF2aWZcIixcbiAgICAgICAgXCIuanBnXCIsXG4gICAgICAgIFwiLmpwZWdcIixcbiAgICAgICAgXCIuamZpZlwiLFxuICAgICAgICBcIi5wamVwZ1wiLFxuICAgICAgICBcIi5wanBcIixcbiAgICAgICAgXCIuc3ZnXCIsXG4gICAgICAgIFwiLndlYnBcIixcbiAgICAgICAgXCIuYm1wXCIsXG4gICAgICAgIFwiLmljb1wiLFxuICAgICAgICBcIi5jdXJcIixcbiAgICBdKVxuKTtcblxuLyoqIERldGVybWluZXMgaWYgdGhlIGdpdmVuIGxpbmsgcG9pbnRzIHRvIGFuIGVtYmVkZGVkIGltYWdlLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzSW1hZ2VFbWJlZChsaW5rOiBMaW5rKTogYm9vbGVhbiB7XG4gICAgaWYgKCFsaW5rLnBhdGguY29udGFpbnMoXCIuXCIpKSByZXR1cm4gZmFsc2U7XG5cbiAgICBsZXQgZXh0ZW5zaW9uID0gbGluay5wYXRoLnN1YnN0cmluZyhsaW5rLnBhdGgubGFzdEluZGV4T2YoXCIuXCIpKTtcbiAgICByZXR1cm4gbGluay50eXBlID09IFwiZmlsZVwiICYmIGxpbmsuZW1iZWQgJiYgSU1BR0VfRVhURU5TSU9OUy5oYXMoZXh0ZW5zaW9uKTtcbn1cblxuLyoqIEV4dHJhY3QgdGV4dCBvZiB0aGUgZm9ybSAnV3hIJyBvciAnVycgZnJvbSB0aGUgZGlzcGxheSBvZiBhIGxpbmsuICovXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdEltYWdlRGltZW5zaW9ucyhsaW5rOiBMaW5rKTogW251bWJlciwgbnVtYmVyXSB8IFtudW1iZXJdIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIWxpbmsuZGlzcGxheSkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgIGxldCBtYXRjaCA9IC9eKFxcZCspeChcXGQrKSQvaXUuZXhlYyhsaW5rLmRpc3BsYXkpO1xuICAgIGlmIChtYXRjaCkgcmV0dXJuIFtwYXJzZUludChtYXRjaFsxXSksIHBhcnNlSW50KG1hdGNoWzJdKV07XG5cbiAgICBsZXQgbWF0Y2gyID0gL14oXFxkKykvLmV4ZWMobGluay5kaXNwbGF5KTtcbiAgICBpZiAobWF0Y2gyKSByZXR1cm4gW3BhcnNlSW50KG1hdGNoMlsxXSldO1xuXG4gICAgLy8gTm8gbWF0Y2guXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cbiIsICIvKiogTm9ybWFsIGh5ZHJhdGlvbiB0aGF0IGF0dGFjaGVzIHRvIGEgRE9NIHRyZWUgYnV0IGRvZXMgbm90IGRpZmYgaXQuICovXG5leHBvcnQgY29uc3QgTU9ERV9IWURSQVRFID0gMSA8PCA1O1xuLyoqIFNpZ25pZmllcyB0aGlzIFZOb2RlIHN1c3BlbmRlZCBvbiB0aGUgcHJldmlvdXMgcmVuZGVyICovXG5leHBvcnQgY29uc3QgTU9ERV9TVVNQRU5ERUQgPSAxIDw8IDc7XG4vKiogSW5kaWNhdGVzIHRoYXQgdGhpcyBub2RlIG5lZWRzIHRvIGJlIGluc2VydGVkIHdoaWxlIHBhdGNoaW5nIGNoaWxkcmVuICovXG5leHBvcnQgY29uc3QgSU5TRVJUX1ZOT0RFID0gMSA8PCAxNjtcbi8qKiBJbmRpY2F0ZXMgYSBWTm9kZSBoYXMgYmVlbiBtYXRjaGVkIHdpdGggYW5vdGhlciBWTm9kZSBpbiB0aGUgZGlmZiAqL1xuZXhwb3J0IGNvbnN0IE1BVENIRUQgPSAxIDw8IDE3O1xuXG4vKiogUmVzZXQgYWxsIG1vZGUgZmxhZ3MgKi9cbmV4cG9ydCBjb25zdCBSRVNFVF9NT0RFID0gfihNT0RFX0hZRFJBVEUgfCBNT0RFX1NVU1BFTkRFRCk7XG5cbmV4cG9ydCBjb25zdCBFTVBUWV9PQkogPSAvKiogQHR5cGUge2FueX0gKi8gKHt9KTtcbmV4cG9ydCBjb25zdCBFTVBUWV9BUlIgPSBbXTtcbmV4cG9ydCBjb25zdCBJU19OT05fRElNRU5TSU9OQUwgPVxuXHQvYWNpdHxleCg/OnN8Z3xufHB8JCl8cnBofGdyaWR8b3dzfG1uY3xudHd8aW5lW2NoXXx6b298Xm9yZHxpdGVyYS9pO1xuIiwgImltcG9ydCB7IEVNUFRZX0FSUiB9IGZyb20gJy4vY29uc3RhbnRzJztcblxuZXhwb3J0IGNvbnN0IGlzQXJyYXkgPSBBcnJheS5pc0FycmF5O1xuXG4vKipcbiAqIEFzc2lnbiBwcm9wZXJ0aWVzIGZyb20gYHByb3BzYCB0byBgb2JqYFxuICogQHRlbXBsYXRlIE8sIFAgVGhlIG9iaiBhbmQgcHJvcHMgdHlwZXNcbiAqIEBwYXJhbSB7T30gb2JqIFRoZSBvYmplY3QgdG8gY29weSBwcm9wZXJ0aWVzIHRvXG4gKiBAcGFyYW0ge1B9IHByb3BzIFRoZSBvYmplY3QgdG8gY29weSBwcm9wZXJ0aWVzIGZyb21cbiAqIEByZXR1cm5zIHtPICYgUH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2lnbihvYmosIHByb3BzKSB7XG5cdC8vIEB0cy1leHBlY3QtZXJyb3IgV2UgY2hhbmdlIHRoZSB0eXBlIG9mIGBvYmpgIHRvIGJlIGBPICYgUGBcblx0Zm9yIChsZXQgaSBpbiBwcm9wcykgb2JqW2ldID0gcHJvcHNbaV07XG5cdHJldHVybiAvKiogQHR5cGUge08gJiBQfSAqLyAob2JqKTtcbn1cblxuLyoqXG4gKiBSZW1vdmUgYSBjaGlsZCBub2RlIGZyb20gaXRzIHBhcmVudCBpZiBhdHRhY2hlZC4gVGhpcyBpcyBhIHdvcmthcm91bmQgZm9yXG4gKiBJRTExIHdoaWNoIGRvZXNuJ3Qgc3VwcG9ydCBgRWxlbWVudC5wcm90b3R5cGUucmVtb3ZlKClgLiBVc2luZyB0aGlzIGZ1bmN0aW9uXG4gKiBpcyBzbWFsbGVyIHRoYW4gaW5jbHVkaW5nIGEgZGVkaWNhdGVkIHBvbHlmaWxsLlxuICogQHBhcmFtIHtwcmVhY3QuQ29udGFpbmVyTm9kZX0gbm9kZSBUaGUgbm9kZSB0byByZW1vdmVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZU5vZGUobm9kZSkge1xuXHRpZiAobm9kZSAmJiBub2RlLnBhcmVudE5vZGUpIG5vZGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChub2RlKTtcbn1cblxuZXhwb3J0IGNvbnN0IHNsaWNlID0gRU1QVFlfQVJSLnNsaWNlO1xuIiwgImltcG9ydCB7IF9jYXRjaEVycm9yIH0gZnJvbSAnLi9kaWZmL2NhdGNoLWVycm9yJztcblxuLyoqXG4gKiBUaGUgYG9wdGlvbmAgb2JqZWN0IGNhbiBwb3RlbnRpYWxseSBjb250YWluIGNhbGxiYWNrIGZ1bmN0aW9uc1xuICogdGhhdCBhcmUgY2FsbGVkIGR1cmluZyB2YXJpb3VzIHN0YWdlcyBvZiBvdXIgcmVuZGVyZXIuIFRoaXMgaXMgdGhlXG4gKiBmb3VuZGF0aW9uIG9uIHdoaWNoIGFsbCBvdXIgYWRkb25zIGxpa2UgYHByZWFjdC9kZWJ1Z2AsIGBwcmVhY3QvY29tcGF0YCxcbiAqIGFuZCBgcHJlYWN0L2hvb2tzYCBhcmUgYmFzZWQgb24uIFNlZSB0aGUgYE9wdGlvbnNgIHR5cGUgaW4gYGludGVybmFsLmQudHNgXG4gKiBmb3IgYSBmdWxsIGxpc3Qgb2YgYXZhaWxhYmxlIG9wdGlvbiBob29rcyAobW9zdCBlZGl0b3JzL0lERXMgYWxsb3cgeW91IHRvXG4gKiBjdHJsK2NsaWNrIG9yIGNtZCtjbGljayBvbiBtYWMgdGhlIHR5cGUgZGVmaW5pdGlvbiBiZWxvdykuXG4gKiBAdHlwZSB7T3B0aW9uc31cbiAqL1xuY29uc3Qgb3B0aW9ucyA9IHtcblx0X2NhdGNoRXJyb3Jcbn07XG5cbmV4cG9ydCBkZWZhdWx0IG9wdGlvbnM7XG4iLCAiaW1wb3J0IHsgc2xpY2UgfSBmcm9tICcuL3V0aWwnO1xuaW1wb3J0IG9wdGlvbnMgZnJvbSAnLi9vcHRpb25zJztcblxubGV0IHZub2RlSWQgPSAwO1xuXG4vKipcbiAqIENyZWF0ZSBhbiB2aXJ0dWFsIG5vZGUgKHVzZWQgZm9yIEpTWClcbiAqIEBwYXJhbSB7Vk5vZGVbXCJ0eXBlXCJdfSB0eXBlIFRoZSBub2RlIG5hbWUgb3IgQ29tcG9uZW50IGNvbnN0cnVjdG9yIGZvciB0aGlzXG4gKiB2aXJ0dWFsIG5vZGVcbiAqIEBwYXJhbSB7b2JqZWN0IHwgbnVsbCB8IHVuZGVmaW5lZH0gW3Byb3BzXSBUaGUgcHJvcGVydGllcyBvZiB0aGUgdmlydHVhbCBub2RlXG4gKiBAcGFyYW0ge0FycmF5PGltcG9ydCgnLicpLkNvbXBvbmVudENoaWxkcmVuPn0gW2NoaWxkcmVuXSBUaGUgY2hpbGRyZW4gb2YgdGhlXG4gKiB2aXJ0dWFsIG5vZGVcbiAqIEByZXR1cm5zIHtWTm9kZX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnQodHlwZSwgcHJvcHMsIGNoaWxkcmVuKSB7XG5cdGxldCBub3JtYWxpemVkUHJvcHMgPSB7fSxcblx0XHRrZXksXG5cdFx0cmVmLFxuXHRcdGk7XG5cdGZvciAoaSBpbiBwcm9wcykge1xuXHRcdGlmIChpID09ICdrZXknKSBrZXkgPSBwcm9wc1tpXTtcblx0XHRlbHNlIGlmIChpID09ICdyZWYnKSByZWYgPSBwcm9wc1tpXTtcblx0XHRlbHNlIG5vcm1hbGl6ZWRQcm9wc1tpXSA9IHByb3BzW2ldO1xuXHR9XG5cblx0aWYgKGFyZ3VtZW50cy5sZW5ndGggPiAyKSB7XG5cdFx0bm9ybWFsaXplZFByb3BzLmNoaWxkcmVuID1cblx0XHRcdGFyZ3VtZW50cy5sZW5ndGggPiAzID8gc2xpY2UuY2FsbChhcmd1bWVudHMsIDIpIDogY2hpbGRyZW47XG5cdH1cblxuXHQvLyBJZiBhIENvbXBvbmVudCBWTm9kZSwgY2hlY2sgZm9yIGFuZCBhcHBseSBkZWZhdWx0UHJvcHNcblx0Ly8gTm90ZTogdHlwZSBtYXkgYmUgdW5kZWZpbmVkIGluIGRldmVsb3BtZW50LCBtdXN0IG5ldmVyIGVycm9yIGhlcmUuXG5cdGlmICh0eXBlb2YgdHlwZSA9PSAnZnVuY3Rpb24nICYmIHR5cGUuZGVmYXVsdFByb3BzICE9IG51bGwpIHtcblx0XHRmb3IgKGkgaW4gdHlwZS5kZWZhdWx0UHJvcHMpIHtcblx0XHRcdGlmIChub3JtYWxpemVkUHJvcHNbaV0gPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRub3JtYWxpemVkUHJvcHNbaV0gPSB0eXBlLmRlZmF1bHRQcm9wc1tpXTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gY3JlYXRlVk5vZGUodHlwZSwgbm9ybWFsaXplZFByb3BzLCBrZXksIHJlZiwgbnVsbCk7XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgVk5vZGUgKHVzZWQgaW50ZXJuYWxseSBieSBQcmVhY3QpXG4gKiBAcGFyYW0ge1ZOb2RlW1widHlwZVwiXX0gdHlwZSBUaGUgbm9kZSBuYW1lIG9yIENvbXBvbmVudFxuICogQ29uc3RydWN0b3IgZm9yIHRoaXMgdmlydHVhbCBub2RlXG4gKiBAcGFyYW0ge29iamVjdCB8IHN0cmluZyB8IG51bWJlciB8IG51bGx9IHByb3BzIFRoZSBwcm9wZXJ0aWVzIG9mIHRoaXMgdmlydHVhbCBub2RlLlxuICogSWYgdGhpcyB2aXJ0dWFsIG5vZGUgcmVwcmVzZW50cyBhIHRleHQgbm9kZSwgdGhpcyBpcyB0aGUgdGV4dCBvZiB0aGUgbm9kZSAoc3RyaW5nIG9yIG51bWJlcikuXG4gKiBAcGFyYW0ge3N0cmluZyB8IG51bWJlciB8IG51bGx9IGtleSBUaGUga2V5IGZvciB0aGlzIHZpcnR1YWwgbm9kZSwgdXNlZCB3aGVuXG4gKiBkaWZmaW5nIGl0IGFnYWluc3QgaXRzIGNoaWxkcmVuXG4gKiBAcGFyYW0ge1ZOb2RlW1wicmVmXCJdfSByZWYgVGhlIHJlZiBwcm9wZXJ0eSB0aGF0IHdpbGxcbiAqIHJlY2VpdmUgYSByZWZlcmVuY2UgdG8gaXRzIGNyZWF0ZWQgY2hpbGRcbiAqIEByZXR1cm5zIHtWTm9kZX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVZOb2RlKHR5cGUsIHByb3BzLCBrZXksIHJlZiwgb3JpZ2luYWwpIHtcblx0Ly8gVjggc2VlbXMgdG8gYmUgYmV0dGVyIGF0IGRldGVjdGluZyB0eXBlIHNoYXBlcyBpZiB0aGUgb2JqZWN0IGlzIGFsbG9jYXRlZCBmcm9tIHRoZSBzYW1lIGNhbGwgc2l0ZVxuXHQvLyBEbyBub3QgaW5saW5lIGludG8gY3JlYXRlRWxlbWVudCBhbmQgY29lcmNlVG9WTm9kZSFcblx0LyoqIEB0eXBlIHtWTm9kZX0gKi9cblx0Y29uc3Qgdm5vZGUgPSB7XG5cdFx0dHlwZSxcblx0XHRwcm9wcyxcblx0XHRrZXksXG5cdFx0cmVmLFxuXHRcdF9jaGlsZHJlbjogbnVsbCxcblx0XHRfcGFyZW50OiBudWxsLFxuXHRcdF9kZXB0aDogMCxcblx0XHRfZG9tOiBudWxsLFxuXHRcdC8vIF9uZXh0RG9tIG11c3QgYmUgaW5pdGlhbGl6ZWQgdG8gdW5kZWZpbmVkIGIvYyBpdCB3aWxsIGV2ZW50dWFsbHlcblx0XHQvLyBiZSBzZXQgdG8gZG9tLm5leHRTaWJsaW5nIHdoaWNoIGNhbiByZXR1cm4gYG51bGxgIGFuZCBpdCBpcyBpbXBvcnRhbnRcblx0XHQvLyB0byBiZSBhYmxlIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gYW4gdW5pbml0aWFsaXplZCBfbmV4dERvbSBhbmRcblx0XHQvLyBhIF9uZXh0RG9tIHRoYXQgaGFzIGJlZW4gc2V0IHRvIGBudWxsYFxuXHRcdF9uZXh0RG9tOiB1bmRlZmluZWQsXG5cdFx0X2NvbXBvbmVudDogbnVsbCxcblx0XHRjb25zdHJ1Y3RvcjogdW5kZWZpbmVkLFxuXHRcdF9vcmlnaW5hbDogb3JpZ2luYWwgPT0gbnVsbCA/ICsrdm5vZGVJZCA6IG9yaWdpbmFsLFxuXHRcdF9pbmRleDogLTEsXG5cdFx0X2ZsYWdzOiAwXG5cdH07XG5cblx0Ly8gT25seSBpbnZva2UgdGhlIHZub2RlIGhvb2sgaWYgdGhpcyB3YXMgKm5vdCogYSBkaXJlY3QgY29weTpcblx0aWYgKG9yaWdpbmFsID09IG51bGwgJiYgb3B0aW9ucy52bm9kZSAhPSBudWxsKSBvcHRpb25zLnZub2RlKHZub2RlKTtcblxuXHRyZXR1cm4gdm5vZGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVSZWYoKSB7XG5cdHJldHVybiB7IGN1cnJlbnQ6IG51bGwgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEZyYWdtZW50KHByb3BzKSB7XG5cdHJldHVybiBwcm9wcy5jaGlsZHJlbjtcbn1cblxuLyoqXG4gKiBDaGVjayBpZiBhIHRoZSBhcmd1bWVudCBpcyBhIHZhbGlkIFByZWFjdCBWTm9kZS5cbiAqIEBwYXJhbSB7Kn0gdm5vZGVcbiAqIEByZXR1cm5zIHt2bm9kZSBpcyBWTm9kZX1cbiAqL1xuZXhwb3J0IGNvbnN0IGlzVmFsaWRFbGVtZW50ID0gdm5vZGUgPT5cblx0dm5vZGUgIT0gbnVsbCAmJiB2bm9kZS5jb25zdHJ1Y3RvciA9PSB1bmRlZmluZWQ7XG4iLCAiaW1wb3J0IHsgYXNzaWduIH0gZnJvbSAnLi91dGlsJztcbmltcG9ydCB7IGRpZmYsIGNvbW1pdFJvb3QgfSBmcm9tICcuL2RpZmYvaW5kZXgnO1xuaW1wb3J0IG9wdGlvbnMgZnJvbSAnLi9vcHRpb25zJztcbmltcG9ydCB7IEZyYWdtZW50IH0gZnJvbSAnLi9jcmVhdGUtZWxlbWVudCc7XG5pbXBvcnQgeyBNT0RFX0hZRFJBVEUgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5cbi8qKlxuICogQmFzZSBDb21wb25lbnQgY2xhc3MuIFByb3ZpZGVzIGBzZXRTdGF0ZSgpYCBhbmQgYGZvcmNlVXBkYXRlKClgLCB3aGljaFxuICogdHJpZ2dlciByZW5kZXJpbmdcbiAqIEBwYXJhbSB7b2JqZWN0fSBwcm9wcyBUaGUgaW5pdGlhbCBjb21wb25lbnQgcHJvcHNcbiAqIEBwYXJhbSB7b2JqZWN0fSBjb250ZXh0IFRoZSBpbml0aWFsIGNvbnRleHQgZnJvbSBwYXJlbnQgY29tcG9uZW50cydcbiAqIGdldENoaWxkQ29udGV4dFxuICovXG5leHBvcnQgZnVuY3Rpb24gQmFzZUNvbXBvbmVudChwcm9wcywgY29udGV4dCkge1xuXHR0aGlzLnByb3BzID0gcHJvcHM7XG5cdHRoaXMuY29udGV4dCA9IGNvbnRleHQ7XG59XG5cbi8qKlxuICogVXBkYXRlIGNvbXBvbmVudCBzdGF0ZSBhbmQgc2NoZWR1bGUgYSByZS1yZW5kZXIuXG4gKiBAdGhpcyB7Q29tcG9uZW50fVxuICogQHBhcmFtIHtvYmplY3QgfCAoKHM6IG9iamVjdCwgcDogb2JqZWN0KSA9PiBvYmplY3QpfSB1cGRhdGUgQSBoYXNoIG9mIHN0YXRlXG4gKiBwcm9wZXJ0aWVzIHRvIHVwZGF0ZSB3aXRoIG5ldyB2YWx1ZXMgb3IgYSBmdW5jdGlvbiB0aGF0IGdpdmVuIHRoZSBjdXJyZW50XG4gKiBzdGF0ZSBhbmQgcHJvcHMgcmV0dXJucyBhIG5ldyBwYXJ0aWFsIHN0YXRlXG4gKiBAcGFyYW0geygpID0+IHZvaWR9IFtjYWxsYmFja10gQSBmdW5jdGlvbiB0byBiZSBjYWxsZWQgb25jZSBjb21wb25lbnQgc3RhdGUgaXNcbiAqIHVwZGF0ZWRcbiAqL1xuQmFzZUNvbXBvbmVudC5wcm90b3R5cGUuc2V0U3RhdGUgPSBmdW5jdGlvbiAodXBkYXRlLCBjYWxsYmFjaykge1xuXHQvLyBvbmx5IGNsb25lIHN0YXRlIHdoZW4gY29weWluZyB0byBuZXh0U3RhdGUgdGhlIGZpcnN0IHRpbWUuXG5cdGxldCBzO1xuXHRpZiAodGhpcy5fbmV4dFN0YXRlICE9IG51bGwgJiYgdGhpcy5fbmV4dFN0YXRlICE9PSB0aGlzLnN0YXRlKSB7XG5cdFx0cyA9IHRoaXMuX25leHRTdGF0ZTtcblx0fSBlbHNlIHtcblx0XHRzID0gdGhpcy5fbmV4dFN0YXRlID0gYXNzaWduKHt9LCB0aGlzLnN0YXRlKTtcblx0fVxuXG5cdGlmICh0eXBlb2YgdXBkYXRlID09ICdmdW5jdGlvbicpIHtcblx0XHQvLyBTb21lIGxpYnJhcmllcyBsaWtlIGBpbW1lcmAgbWFyayB0aGUgY3VycmVudCBzdGF0ZSBhcyByZWFkb25seSxcblx0XHQvLyBwcmV2ZW50aW5nIHVzIGZyb20gbXV0YXRpbmcgaXQsIHNvIHdlIG5lZWQgdG8gY2xvbmUgaXQuIFNlZSAjMjcxNlxuXHRcdHVwZGF0ZSA9IHVwZGF0ZShhc3NpZ24oe30sIHMpLCB0aGlzLnByb3BzKTtcblx0fVxuXG5cdGlmICh1cGRhdGUpIHtcblx0XHRhc3NpZ24ocywgdXBkYXRlKTtcblx0fVxuXG5cdC8vIFNraXAgdXBkYXRlIGlmIHVwZGF0ZXIgZnVuY3Rpb24gcmV0dXJuZWQgbnVsbFxuXHRpZiAodXBkYXRlID09IG51bGwpIHJldHVybjtcblxuXHRpZiAodGhpcy5fdm5vZGUpIHtcblx0XHRpZiAoY2FsbGJhY2spIHtcblx0XHRcdHRoaXMuX3N0YXRlQ2FsbGJhY2tzLnB1c2goY2FsbGJhY2spO1xuXHRcdH1cblx0XHRlbnF1ZXVlUmVuZGVyKHRoaXMpO1xuXHR9XG59O1xuXG4vKipcbiAqIEltbWVkaWF0ZWx5IHBlcmZvcm0gYSBzeW5jaHJvbm91cyByZS1yZW5kZXIgb2YgdGhlIGNvbXBvbmVudFxuICogQHRoaXMge0NvbXBvbmVudH1cbiAqIEBwYXJhbSB7KCkgPT4gdm9pZH0gW2NhbGxiYWNrXSBBIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCBhZnRlciBjb21wb25lbnQgaXNcbiAqIHJlLXJlbmRlcmVkXG4gKi9cbkJhc2VDb21wb25lbnQucHJvdG90eXBlLmZvcmNlVXBkYXRlID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG5cdGlmICh0aGlzLl92bm9kZSkge1xuXHRcdC8vIFNldCByZW5kZXIgbW9kZSBzbyB0aGF0IHdlIGNhbiBkaWZmZXJlbnRpYXRlIHdoZXJlIHRoZSByZW5kZXIgcmVxdWVzdFxuXHRcdC8vIGlzIGNvbWluZyBmcm9tLiBXZSBuZWVkIHRoaXMgYmVjYXVzZSBmb3JjZVVwZGF0ZSBzaG91bGQgbmV2ZXIgY2FsbFxuXHRcdC8vIHNob3VsZENvbXBvbmVudFVwZGF0ZVxuXHRcdHRoaXMuX2ZvcmNlID0gdHJ1ZTtcblx0XHRpZiAoY2FsbGJhY2spIHRoaXMuX3JlbmRlckNhbGxiYWNrcy5wdXNoKGNhbGxiYWNrKTtcblx0XHRlbnF1ZXVlUmVuZGVyKHRoaXMpO1xuXHR9XG59O1xuXG4vKipcbiAqIEFjY2VwdHMgYHByb3BzYCBhbmQgYHN0YXRlYCwgYW5kIHJldHVybnMgYSBuZXcgVmlydHVhbCBET00gdHJlZSB0byBidWlsZC5cbiAqIFZpcnR1YWwgRE9NIGlzIGdlbmVyYWxseSBjb25zdHJ1Y3RlZCB2aWEgW0pTWF0oaHR0cDovL2phc29uZm9ybWF0LmNvbS93dGYtaXMtanN4KS5cbiAqIEBwYXJhbSB7b2JqZWN0fSBwcm9wcyBQcm9wcyAoZWc6IEpTWCBhdHRyaWJ1dGVzKSByZWNlaXZlZCBmcm9tIHBhcmVudFxuICogZWxlbWVudC9jb21wb25lbnRcbiAqIEBwYXJhbSB7b2JqZWN0fSBzdGF0ZSBUaGUgY29tcG9uZW50J3MgY3VycmVudCBzdGF0ZVxuICogQHBhcmFtIHtvYmplY3R9IGNvbnRleHQgQ29udGV4dCBvYmplY3QsIGFzIHJldHVybmVkIGJ5IHRoZSBuZWFyZXN0XG4gKiBhbmNlc3RvcidzIGBnZXRDaGlsZENvbnRleHQoKWBcbiAqIEByZXR1cm5zIHtDb21wb25lbnRDaGlsZHJlbiB8IHZvaWR9XG4gKi9cbkJhc2VDb21wb25lbnQucHJvdG90eXBlLnJlbmRlciA9IEZyYWdtZW50O1xuXG4vKipcbiAqIEBwYXJhbSB7Vk5vZGV9IHZub2RlXG4gKiBAcGFyYW0ge251bWJlciB8IG51bGx9IFtjaGlsZEluZGV4XVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RG9tU2libGluZyh2bm9kZSwgY2hpbGRJbmRleCkge1xuXHRpZiAoY2hpbGRJbmRleCA9PSBudWxsKSB7XG5cdFx0Ly8gVXNlIGNoaWxkSW5kZXg9PW51bGwgYXMgYSBzaWduYWwgdG8gcmVzdW1lIHRoZSBzZWFyY2ggZnJvbSB0aGUgdm5vZGUncyBzaWJsaW5nXG5cdFx0cmV0dXJuIHZub2RlLl9wYXJlbnRcblx0XHRcdD8gZ2V0RG9tU2libGluZyh2bm9kZS5fcGFyZW50LCB2bm9kZS5faW5kZXggKyAxKVxuXHRcdFx0OiBudWxsO1xuXHR9XG5cblx0bGV0IHNpYmxpbmc7XG5cdGZvciAoOyBjaGlsZEluZGV4IDwgdm5vZGUuX2NoaWxkcmVuLmxlbmd0aDsgY2hpbGRJbmRleCsrKSB7XG5cdFx0c2libGluZyA9IHZub2RlLl9jaGlsZHJlbltjaGlsZEluZGV4XTtcblxuXHRcdGlmIChzaWJsaW5nICE9IG51bGwgJiYgc2libGluZy5fZG9tICE9IG51bGwpIHtcblx0XHRcdC8vIFNpbmNlIHVwZGF0ZVBhcmVudERvbVBvaW50ZXJzIGtlZXBzIF9kb20gcG9pbnRlciBjb3JyZWN0LFxuXHRcdFx0Ly8gd2UgY2FuIHJlbHkgb24gX2RvbSB0byB0ZWxsIHVzIGlmIHRoaXMgc3VidHJlZSBjb250YWlucyBhXG5cdFx0XHQvLyByZW5kZXJlZCBET00gbm9kZSwgYW5kIHdoYXQgdGhlIGZpcnN0IHJlbmRlcmVkIERPTSBub2RlIGlzXG5cdFx0XHRyZXR1cm4gc2libGluZy5fZG9tO1xuXHRcdH1cblx0fVxuXG5cdC8vIElmIHdlIGdldCBoZXJlLCB3ZSBoYXZlIG5vdCBmb3VuZCBhIERPTSBub2RlIGluIHRoaXMgdm5vZGUncyBjaGlsZHJlbi5cblx0Ly8gV2UgbXVzdCByZXN1bWUgZnJvbSB0aGlzIHZub2RlJ3Mgc2libGluZyAoaW4gaXQncyBwYXJlbnQgX2NoaWxkcmVuIGFycmF5KVxuXHQvLyBPbmx5IGNsaW1iIHVwIGFuZCBzZWFyY2ggdGhlIHBhcmVudCBpZiB3ZSBhcmVuJ3Qgc2VhcmNoaW5nIHRocm91Z2ggYSBET01cblx0Ly8gVk5vZGUgKG1lYW5pbmcgd2UgcmVhY2hlZCB0aGUgRE9NIHBhcmVudCBvZiB0aGUgb3JpZ2luYWwgdm5vZGUgdGhhdCBiZWdhblxuXHQvLyB0aGUgc2VhcmNoKVxuXHRyZXR1cm4gdHlwZW9mIHZub2RlLnR5cGUgPT0gJ2Z1bmN0aW9uJyA/IGdldERvbVNpYmxpbmcodm5vZGUpIDogbnVsbDtcbn1cblxuLyoqXG4gKiBUcmlnZ2VyIGluLXBsYWNlIHJlLXJlbmRlcmluZyBvZiBhIGNvbXBvbmVudC5cbiAqIEBwYXJhbSB7Q29tcG9uZW50fSBjb21wb25lbnQgVGhlIGNvbXBvbmVudCB0byByZXJlbmRlclxuICovXG5mdW5jdGlvbiByZW5kZXJDb21wb25lbnQoY29tcG9uZW50KSB7XG5cdGxldCBvbGRWTm9kZSA9IGNvbXBvbmVudC5fdm5vZGUsXG5cdFx0b2xkRG9tID0gb2xkVk5vZGUuX2RvbSxcblx0XHRjb21taXRRdWV1ZSA9IFtdLFxuXHRcdHJlZlF1ZXVlID0gW107XG5cblx0aWYgKGNvbXBvbmVudC5fcGFyZW50RG9tKSB7XG5cdFx0Y29uc3QgbmV3Vk5vZGUgPSBhc3NpZ24oe30sIG9sZFZOb2RlKTtcblx0XHRuZXdWTm9kZS5fb3JpZ2luYWwgPSBvbGRWTm9kZS5fb3JpZ2luYWwgKyAxO1xuXHRcdGlmIChvcHRpb25zLnZub2RlKSBvcHRpb25zLnZub2RlKG5ld1ZOb2RlKTtcblxuXHRcdGRpZmYoXG5cdFx0XHRjb21wb25lbnQuX3BhcmVudERvbSxcblx0XHRcdG5ld1ZOb2RlLFxuXHRcdFx0b2xkVk5vZGUsXG5cdFx0XHRjb21wb25lbnQuX2dsb2JhbENvbnRleHQsXG5cdFx0XHRjb21wb25lbnQuX3BhcmVudERvbS5uYW1lc3BhY2VVUkksXG5cdFx0XHRvbGRWTm9kZS5fZmxhZ3MgJiBNT0RFX0hZRFJBVEUgPyBbb2xkRG9tXSA6IG51bGwsXG5cdFx0XHRjb21taXRRdWV1ZSxcblx0XHRcdG9sZERvbSA9PSBudWxsID8gZ2V0RG9tU2libGluZyhvbGRWTm9kZSkgOiBvbGREb20sXG5cdFx0XHQhIShvbGRWTm9kZS5fZmxhZ3MgJiBNT0RFX0hZRFJBVEUpLFxuXHRcdFx0cmVmUXVldWVcblx0XHQpO1xuXG5cdFx0bmV3Vk5vZGUuX29yaWdpbmFsID0gb2xkVk5vZGUuX29yaWdpbmFsO1xuXHRcdG5ld1ZOb2RlLl9wYXJlbnQuX2NoaWxkcmVuW25ld1ZOb2RlLl9pbmRleF0gPSBuZXdWTm9kZTtcblx0XHRjb21taXRSb290KGNvbW1pdFF1ZXVlLCBuZXdWTm9kZSwgcmVmUXVldWUpO1xuXG5cdFx0aWYgKG5ld1ZOb2RlLl9kb20gIT0gb2xkRG9tKSB7XG5cdFx0XHR1cGRhdGVQYXJlbnREb21Qb2ludGVycyhuZXdWTm9kZSk7XG5cdFx0fVxuXHR9XG59XG5cbi8qKlxuICogQHBhcmFtIHtWTm9kZX0gdm5vZGVcbiAqL1xuZnVuY3Rpb24gdXBkYXRlUGFyZW50RG9tUG9pbnRlcnModm5vZGUpIHtcblx0aWYgKCh2bm9kZSA9IHZub2RlLl9wYXJlbnQpICE9IG51bGwgJiYgdm5vZGUuX2NvbXBvbmVudCAhPSBudWxsKSB7XG5cdFx0dm5vZGUuX2RvbSA9IHZub2RlLl9jb21wb25lbnQuYmFzZSA9IG51bGw7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB2bm9kZS5fY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcblx0XHRcdGxldCBjaGlsZCA9IHZub2RlLl9jaGlsZHJlbltpXTtcblx0XHRcdGlmIChjaGlsZCAhPSBudWxsICYmIGNoaWxkLl9kb20gIT0gbnVsbCkge1xuXHRcdFx0XHR2bm9kZS5fZG9tID0gdm5vZGUuX2NvbXBvbmVudC5iYXNlID0gY2hpbGQuX2RvbTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHVwZGF0ZVBhcmVudERvbVBvaW50ZXJzKHZub2RlKTtcblx0fVxufVxuXG4vKipcbiAqIFRoZSByZW5kZXIgcXVldWVcbiAqIEB0eXBlIHtBcnJheTxDb21wb25lbnQ+fVxuICovXG5sZXQgcmVyZW5kZXJRdWV1ZSA9IFtdO1xuXG4vKlxuICogVGhlIHZhbHVlIG9mIGBDb21wb25lbnQuZGVib3VuY2VgIG11c3QgYXN5bmNocm9ub3VzbHkgaW52b2tlIHRoZSBwYXNzZWQgaW4gY2FsbGJhY2suIEl0IGlzXG4gKiBpbXBvcnRhbnQgdGhhdCBjb250cmlidXRvcnMgdG8gUHJlYWN0IGNhbiBjb25zaXN0ZW50bHkgcmVhc29uIGFib3V0IHdoYXQgY2FsbHMgdG8gYHNldFN0YXRlYCwgZXRjLlxuICogZG8sIGFuZCB3aGVuIHRoZWlyIGVmZmVjdHMgd2lsbCBiZSBhcHBsaWVkLiBTZWUgdGhlIGxpbmtzIGJlbG93IGZvciBzb21lIGZ1cnRoZXIgcmVhZGluZyBvbiBkZXNpZ25pbmdcbiAqIGFzeW5jaHJvbm91cyBBUElzLlxuICogKiBbRGVzaWduaW5nIEFQSXMgZm9yIEFzeW5jaHJvbnldKGh0dHBzOi8vYmxvZy5penMubWUvMjAxMy8wOC9kZXNpZ25pbmctYXBpcy1mb3ItYXN5bmNocm9ueSlcbiAqICogW0NhbGxiYWNrcyBzeW5jaHJvbm91cyBhbmQgYXN5bmNocm9ub3VzXShodHRwczovL2Jsb2cub21ldGVyLmNvbS8yMDExLzA3LzI0L2NhbGxiYWNrcy1zeW5jaHJvbm91cy1hbmQtYXN5bmNocm9ub3VzLylcbiAqL1xuXG5sZXQgcHJldkRlYm91bmNlO1xuXG5jb25zdCBkZWZlciA9XG5cdHR5cGVvZiBQcm9taXNlID09ICdmdW5jdGlvbidcblx0XHQ/IFByb21pc2UucHJvdG90eXBlLnRoZW4uYmluZChQcm9taXNlLnJlc29sdmUoKSlcblx0XHQ6IHNldFRpbWVvdXQ7XG5cbi8qKlxuICogRW5xdWV1ZSBhIHJlcmVuZGVyIG9mIGEgY29tcG9uZW50XG4gKiBAcGFyYW0ge0NvbXBvbmVudH0gYyBUaGUgY29tcG9uZW50IHRvIHJlcmVuZGVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbnF1ZXVlUmVuZGVyKGMpIHtcblx0aWYgKFxuXHRcdCghYy5fZGlydHkgJiZcblx0XHRcdChjLl9kaXJ0eSA9IHRydWUpICYmXG5cdFx0XHRyZXJlbmRlclF1ZXVlLnB1c2goYykgJiZcblx0XHRcdCFwcm9jZXNzLl9yZXJlbmRlckNvdW50KyspIHx8XG5cdFx0cHJldkRlYm91bmNlICE9PSBvcHRpb25zLmRlYm91bmNlUmVuZGVyaW5nXG5cdCkge1xuXHRcdHByZXZEZWJvdW5jZSA9IG9wdGlvbnMuZGVib3VuY2VSZW5kZXJpbmc7XG5cdFx0KHByZXZEZWJvdW5jZSB8fCBkZWZlcikocHJvY2Vzcyk7XG5cdH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge0NvbXBvbmVudH0gYVxuICogQHBhcmFtIHtDb21wb25lbnR9IGJcbiAqL1xuY29uc3QgZGVwdGhTb3J0ID0gKGEsIGIpID0+IGEuX3Zub2RlLl9kZXB0aCAtIGIuX3Zub2RlLl9kZXB0aDtcblxuLyoqIEZsdXNoIHRoZSByZW5kZXIgcXVldWUgYnkgcmVyZW5kZXJpbmcgYWxsIHF1ZXVlZCBjb21wb25lbnRzICovXG5mdW5jdGlvbiBwcm9jZXNzKCkge1xuXHRsZXQgYztcblx0cmVyZW5kZXJRdWV1ZS5zb3J0KGRlcHRoU29ydCk7XG5cdC8vIERvbid0IHVwZGF0ZSBgcmVuZGVyQ291bnRgIHlldC4gS2VlcCBpdHMgdmFsdWUgbm9uLXplcm8gdG8gcHJldmVudCB1bm5lY2Vzc2FyeVxuXHQvLyBwcm9jZXNzKCkgY2FsbHMgZnJvbSBnZXR0aW5nIHNjaGVkdWxlZCB3aGlsZSBgcXVldWVgIGlzIHN0aWxsIGJlaW5nIGNvbnN1bWVkLlxuXHR3aGlsZSAoKGMgPSByZXJlbmRlclF1ZXVlLnNoaWZ0KCkpKSB7XG5cdFx0aWYgKGMuX2RpcnR5KSB7XG5cdFx0XHRsZXQgcmVuZGVyUXVldWVMZW5ndGggPSByZXJlbmRlclF1ZXVlLmxlbmd0aDtcblx0XHRcdHJlbmRlckNvbXBvbmVudChjKTtcblx0XHRcdGlmIChyZXJlbmRlclF1ZXVlLmxlbmd0aCA+IHJlbmRlclF1ZXVlTGVuZ3RoKSB7XG5cdFx0XHRcdC8vIFdoZW4gaS5lLiByZXJlbmRlcmluZyBhIHByb3ZpZGVyIGFkZGl0aW9uYWwgbmV3IGl0ZW1zIGNhbiBiZSBpbmplY3RlZCwgd2Ugd2FudCB0b1xuXHRcdFx0XHQvLyBrZWVwIHRoZSBvcmRlciBmcm9tIHRvcCB0byBib3R0b20gd2l0aCB0aG9zZSBuZXcgaXRlbXMgc28gd2UgY2FuIGhhbmRsZSB0aGVtIGluIGFcblx0XHRcdFx0Ly8gc2luZ2xlIHBhc3Ncblx0XHRcdFx0cmVyZW5kZXJRdWV1ZS5zb3J0KGRlcHRoU29ydCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdHByb2Nlc3MuX3JlcmVuZGVyQ291bnQgPSAwO1xufVxuXG5wcm9jZXNzLl9yZXJlbmRlckNvdW50ID0gMDtcbiIsICJpbXBvcnQgeyBJU19OT05fRElNRU5TSU9OQUwgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IG9wdGlvbnMgZnJvbSAnLi4vb3B0aW9ucyc7XG5cbmZ1bmN0aW9uIHNldFN0eWxlKHN0eWxlLCBrZXksIHZhbHVlKSB7XG5cdGlmIChrZXlbMF0gPT09ICctJykge1xuXHRcdHN0eWxlLnNldFByb3BlcnR5KGtleSwgdmFsdWUgPT0gbnVsbCA/ICcnIDogdmFsdWUpO1xuXHR9IGVsc2UgaWYgKHZhbHVlID09IG51bGwpIHtcblx0XHRzdHlsZVtrZXldID0gJyc7XG5cdH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlICE9ICdudW1iZXInIHx8IElTX05PTl9ESU1FTlNJT05BTC50ZXN0KGtleSkpIHtcblx0XHRzdHlsZVtrZXldID0gdmFsdWU7XG5cdH0gZWxzZSB7XG5cdFx0c3R5bGVba2V5XSA9IHZhbHVlICsgJ3B4Jztcblx0fVxufVxuXG4vLyBBIGxvZ2ljYWwgY2xvY2sgdG8gc29sdmUgaXNzdWVzIGxpa2UgaHR0cHM6Ly9naXRodWIuY29tL3ByZWFjdGpzL3ByZWFjdC9pc3N1ZXMvMzkyNy5cbi8vIFdoZW4gdGhlIERPTSBwZXJmb3JtcyBhbiBldmVudCBpdCBsZWF2ZXMgbWljcm8tdGlja3MgaW4gYmV0d2VlbiBidWJibGluZyB1cCB3aGljaCBtZWFucyB0aGF0XG4vLyBhbiBldmVudCBjYW4gdHJpZ2dlciBvbiBhIG5ld2x5IHJlYXRlZCBET00tbm9kZSB3aGlsZSB0aGUgZXZlbnQgYnViYmxlcyB1cC5cbi8vXG4vLyBPcmlnaW5hbGx5IGluc3BpcmVkIGJ5IFZ1ZVxuLy8gKGh0dHBzOi8vZ2l0aHViLmNvbS92dWVqcy9jb3JlL2Jsb2IvY2FlYjhhNjg4MTFhMWIwZjc5L3BhY2thZ2VzL3J1bnRpbWUtZG9tL3NyYy9tb2R1bGVzL2V2ZW50cy50cyNMOTAtTDEwMSksXG4vLyBidXQgbW9kaWZpZWQgdG8gdXNlIGEgbG9naWNhbCBjbG9jayBpbnN0ZWFkIG9mIERhdGUubm93KCkgaW4gY2FzZSBldmVudCBoYW5kbGVycyBnZXQgYXR0YWNoZWRcbi8vIGFuZCBldmVudHMgZ2V0IGRpc3BhdGNoZWQgZHVyaW5nIHRoZSBzYW1lIG1pbGxpc2Vjb25kLlxuLy9cbi8vIFRoZSBjbG9jayBpcyBpbmNyZW1lbnRlZCBhZnRlciBlYWNoIG5ldyBldmVudCBkaXNwYXRjaC4gVGhpcyBhbGxvd3MgMSAwMDAgMDAwIG5ldyBldmVudHNcbi8vIHBlciBzZWNvbmQgZm9yIG92ZXIgMjgwIHllYXJzIGJlZm9yZSB0aGUgdmFsdWUgcmVhY2hlcyBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUiAoMioqNTMgLSAxKS5cbmxldCBldmVudENsb2NrID0gMDtcblxuLyoqXG4gKiBTZXQgYSBwcm9wZXJ0eSB2YWx1ZSBvbiBhIERPTSBub2RlXG4gKiBAcGFyYW0ge1ByZWFjdEVsZW1lbnR9IGRvbSBUaGUgRE9NIG5vZGUgdG8gbW9kaWZ5XG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgdG8gc2V0XG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQgdGhlIHByb3BlcnR5IHRvXG4gKiBAcGFyYW0geyp9IG9sZFZhbHVlIFRoZSBvbGQgdmFsdWUgdGhlIHByb3BlcnR5IGhhZFxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWVzcGFjZSBXaGV0aGVyIG9yIG5vdCB0aGlzIERPTSBub2RlIGlzIGFuIFNWRyBub2RlIG9yIG5vdFxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0UHJvcGVydHkoZG9tLCBuYW1lLCB2YWx1ZSwgb2xkVmFsdWUsIG5hbWVzcGFjZSkge1xuXHRsZXQgdXNlQ2FwdHVyZTtcblxuXHRvOiBpZiAobmFtZSA9PT0gJ3N0eWxlJykge1xuXHRcdGlmICh0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycpIHtcblx0XHRcdGRvbS5zdHlsZS5jc3NUZXh0ID0gdmFsdWU7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGlmICh0eXBlb2Ygb2xkVmFsdWUgPT0gJ3N0cmluZycpIHtcblx0XHRcdFx0ZG9tLnN0eWxlLmNzc1RleHQgPSBvbGRWYWx1ZSA9ICcnO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAob2xkVmFsdWUpIHtcblx0XHRcdFx0Zm9yIChuYW1lIGluIG9sZFZhbHVlKSB7XG5cdFx0XHRcdFx0aWYgKCEodmFsdWUgJiYgbmFtZSBpbiB2YWx1ZSkpIHtcblx0XHRcdFx0XHRcdHNldFN0eWxlKGRvbS5zdHlsZSwgbmFtZSwgJycpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRpZiAodmFsdWUpIHtcblx0XHRcdFx0Zm9yIChuYW1lIGluIHZhbHVlKSB7XG5cdFx0XHRcdFx0aWYgKCFvbGRWYWx1ZSB8fCB2YWx1ZVtuYW1lXSAhPT0gb2xkVmFsdWVbbmFtZV0pIHtcblx0XHRcdFx0XHRcdHNldFN0eWxlKGRvbS5zdHlsZSwgbmFtZSwgdmFsdWVbbmFtZV0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHQvLyBCZW5jaG1hcmsgZm9yIGNvbXBhcmlzb246IGh0dHBzOi8vZXNiZW5jaC5jb20vYmVuY2gvNTc0Yzk1NGJkYjk2NWI5YTAwOTY1YWM2XG5cdGVsc2UgaWYgKG5hbWVbMF0gPT09ICdvJyAmJiBuYW1lWzFdID09PSAnbicpIHtcblx0XHR1c2VDYXB0dXJlID1cblx0XHRcdG5hbWUgIT09IChuYW1lID0gbmFtZS5yZXBsYWNlKC8oUG9pbnRlckNhcHR1cmUpJHxDYXB0dXJlJC9pLCAnJDEnKSk7XG5cblx0XHQvLyBJbmZlciBjb3JyZWN0IGNhc2luZyBmb3IgRE9NIGJ1aWx0LWluIGV2ZW50czpcblx0XHRpZiAoXG5cdFx0XHRuYW1lLnRvTG93ZXJDYXNlKCkgaW4gZG9tIHx8XG5cdFx0XHRuYW1lID09PSAnb25Gb2N1c091dCcgfHxcblx0XHRcdG5hbWUgPT09ICdvbkZvY3VzSW4nXG5cdFx0KVxuXHRcdFx0bmFtZSA9IG5hbWUudG9Mb3dlckNhc2UoKS5zbGljZSgyKTtcblx0XHRlbHNlIG5hbWUgPSBuYW1lLnNsaWNlKDIpO1xuXG5cdFx0aWYgKCFkb20uX2xpc3RlbmVycykgZG9tLl9saXN0ZW5lcnMgPSB7fTtcblx0XHRkb20uX2xpc3RlbmVyc1tuYW1lICsgdXNlQ2FwdHVyZV0gPSB2YWx1ZTtcblxuXHRcdGlmICh2YWx1ZSkge1xuXHRcdFx0aWYgKCFvbGRWYWx1ZSkge1xuXHRcdFx0XHR2YWx1ZS5fYXR0YWNoZWQgPSBldmVudENsb2NrO1xuXHRcdFx0XHRkb20uYWRkRXZlbnRMaXN0ZW5lcihcblx0XHRcdFx0XHRuYW1lLFxuXHRcdFx0XHRcdHVzZUNhcHR1cmUgPyBldmVudFByb3h5Q2FwdHVyZSA6IGV2ZW50UHJveHksXG5cdFx0XHRcdFx0dXNlQ2FwdHVyZVxuXHRcdFx0XHQpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dmFsdWUuX2F0dGFjaGVkID0gb2xkVmFsdWUuX2F0dGFjaGVkO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRkb20ucmVtb3ZlRXZlbnRMaXN0ZW5lcihcblx0XHRcdFx0bmFtZSxcblx0XHRcdFx0dXNlQ2FwdHVyZSA/IGV2ZW50UHJveHlDYXB0dXJlIDogZXZlbnRQcm94eSxcblx0XHRcdFx0dXNlQ2FwdHVyZVxuXHRcdFx0KTtcblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0aWYgKG5hbWVzcGFjZSA9PSAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnKSB7XG5cdFx0XHQvLyBOb3JtYWxpemUgaW5jb3JyZWN0IHByb3AgdXNhZ2UgZm9yIFNWRzpcblx0XHRcdC8vIC0geGxpbms6aHJlZiAvIHhsaW5rSHJlZiAtLT4gaHJlZiAoeGxpbms6aHJlZiB3YXMgcmVtb3ZlZCBmcm9tIFNWRyBhbmQgaXNuJ3QgbmVlZGVkKVxuXHRcdFx0Ly8gLSBjbGFzc05hbWUgLS0+IGNsYXNzXG5cdFx0XHRuYW1lID0gbmFtZS5yZXBsYWNlKC94bGluayhIfDpoKS8sICdoJykucmVwbGFjZSgvc05hbWUkLywgJ3MnKTtcblx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0bmFtZSAhPSAnd2lkdGgnICYmXG5cdFx0XHRuYW1lICE9ICdoZWlnaHQnICYmXG5cdFx0XHRuYW1lICE9ICdocmVmJyAmJlxuXHRcdFx0bmFtZSAhPSAnbGlzdCcgJiZcblx0XHRcdG5hbWUgIT0gJ2Zvcm0nICYmXG5cdFx0XHQvLyBEZWZhdWx0IHZhbHVlIGluIGJyb3dzZXJzIGlzIGAtMWAgYW5kIGFuIGVtcHR5IHN0cmluZyBpc1xuXHRcdFx0Ly8gY2FzdCB0byBgMGAgaW5zdGVhZFxuXHRcdFx0bmFtZSAhPSAndGFiSW5kZXgnICYmXG5cdFx0XHRuYW1lICE9ICdkb3dubG9hZCcgJiZcblx0XHRcdG5hbWUgIT0gJ3Jvd1NwYW4nICYmXG5cdFx0XHRuYW1lICE9ICdjb2xTcGFuJyAmJlxuXHRcdFx0bmFtZSAhPSAncm9sZScgJiZcblx0XHRcdG5hbWUgIT0gJ3BvcG92ZXInICYmXG5cdFx0XHRuYW1lIGluIGRvbVxuXHRcdCkge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0ZG9tW25hbWVdID0gdmFsdWUgPT0gbnVsbCA/ICcnIDogdmFsdWU7XG5cdFx0XHRcdC8vIGxhYmVsbGVkIGJyZWFrIGlzIDFiIHNtYWxsZXIgaGVyZSB0aGFuIGEgcmV0dXJuIHN0YXRlbWVudCAoc29ycnkpXG5cdFx0XHRcdGJyZWFrIG87XG5cdFx0XHR9IGNhdGNoIChlKSB7fVxuXHRcdH1cblxuXHRcdC8vIGFyaWEtIGFuZCBkYXRhLSBhdHRyaWJ1dGVzIGhhdmUgbm8gYm9vbGVhbiByZXByZXNlbnRhdGlvbi5cblx0XHQvLyBBIGBmYWxzZWAgdmFsdWUgaXMgZGlmZmVyZW50IGZyb20gdGhlIGF0dHJpYnV0ZSBub3QgYmVpbmdcblx0XHQvLyBwcmVzZW50LCBzbyB3ZSBjYW4ndCByZW1vdmUgaXQuIEZvciBub24tYm9vbGVhbiBhcmlhXG5cdFx0Ly8gYXR0cmlidXRlcyB3ZSBjb3VsZCB0cmVhdCBmYWxzZSBhcyBhIHJlbW92YWwsIGJ1dCB0aGVcblx0XHQvLyBhbW91bnQgb2YgZXhjZXB0aW9ucyB3b3VsZCBjb3N0IHRvbyBtYW55IGJ5dGVzLiBPbiB0b3Agb2Zcblx0XHQvLyB0aGF0IG90aGVyIGZyYW1ld29ya3MgZ2VuZXJhbGx5IHN0cmluZ2lmeSBgZmFsc2VgLlxuXG5cdFx0aWYgKHR5cGVvZiB2YWx1ZSA9PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHQvLyBuZXZlciBzZXJpYWxpemUgZnVuY3Rpb25zIGFzIGF0dHJpYnV0ZSB2YWx1ZXNcblx0XHR9IGVsc2UgaWYgKHZhbHVlICE9IG51bGwgJiYgKHZhbHVlICE9PSBmYWxzZSB8fCBuYW1lWzRdID09PSAnLScpKSB7XG5cdFx0XHRkb20uc2V0QXR0cmlidXRlKG5hbWUsIG5hbWUgPT0gJ3BvcG92ZXInICYmIHZhbHVlID09IHRydWUgPyAnJyA6IHZhbHVlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0ZG9tLnJlbW92ZUF0dHJpYnV0ZShuYW1lKTtcblx0XHR9XG5cdH1cbn1cblxuLyoqXG4gKiBDcmVhdGUgYW4gZXZlbnQgcHJveHkgZnVuY3Rpb24uXG4gKiBAcGFyYW0ge2Jvb2xlYW59IHVzZUNhcHR1cmUgSXMgdGhlIGV2ZW50IGhhbmRsZXIgZm9yIHRoZSBjYXB0dXJlIHBoYXNlLlxuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gY3JlYXRlRXZlbnRQcm94eSh1c2VDYXB0dXJlKSB7XG5cdC8qKlxuXHQgKiBQcm94eSBhbiBldmVudCB0byBob29rZWQgZXZlbnQgaGFuZGxlcnNcblx0ICogQHBhcmFtIHtQcmVhY3RFdmVudH0gZSBUaGUgZXZlbnQgb2JqZWN0IGZyb20gdGhlIGJyb3dzZXJcblx0ICogQHByaXZhdGVcblx0ICovXG5cdHJldHVybiBmdW5jdGlvbiAoZSkge1xuXHRcdGlmICh0aGlzLl9saXN0ZW5lcnMpIHtcblx0XHRcdGNvbnN0IGV2ZW50SGFuZGxlciA9IHRoaXMuX2xpc3RlbmVyc1tlLnR5cGUgKyB1c2VDYXB0dXJlXTtcblx0XHRcdGlmIChlLl9kaXNwYXRjaGVkID09IG51bGwpIHtcblx0XHRcdFx0ZS5fZGlzcGF0Y2hlZCA9IGV2ZW50Q2xvY2srKztcblxuXHRcdFx0XHQvLyBXaGVuIGBlLl9kaXNwYXRjaGVkYCBpcyBzbWFsbGVyIHRoYW4gdGhlIHRpbWUgd2hlbiB0aGUgdGFyZ2V0ZWQgZXZlbnRcblx0XHRcdFx0Ly8gaGFuZGxlciB3YXMgYXR0YWNoZWQgd2Uga25vdyB3ZSBoYXZlIGJ1YmJsZWQgdXAgdG8gYW4gZWxlbWVudCB0aGF0IHdhcyBhZGRlZFxuXHRcdFx0XHQvLyBkdXJpbmcgcGF0Y2hpbmcgdGhlIERPTS5cblx0XHRcdH0gZWxzZSBpZiAoZS5fZGlzcGF0Y2hlZCA8IGV2ZW50SGFuZGxlci5fYXR0YWNoZWQpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGV2ZW50SGFuZGxlcihvcHRpb25zLmV2ZW50ID8gb3B0aW9ucy5ldmVudChlKSA6IGUpO1xuXHRcdH1cblx0fTtcbn1cblxuY29uc3QgZXZlbnRQcm94eSA9IGNyZWF0ZUV2ZW50UHJveHkoZmFsc2UpO1xuY29uc3QgZXZlbnRQcm94eUNhcHR1cmUgPSBjcmVhdGVFdmVudFByb3h5KHRydWUpO1xuIiwgImltcG9ydCB7IGVucXVldWVSZW5kZXIgfSBmcm9tICcuL2NvbXBvbmVudCc7XG5cbmV4cG9ydCBsZXQgaSA9IDA7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDb250ZXh0KGRlZmF1bHRWYWx1ZSwgY29udGV4dElkKSB7XG5cdGNvbnRleHRJZCA9ICdfX2NDJyArIGkrKztcblxuXHRjb25zdCBjb250ZXh0ID0ge1xuXHRcdF9pZDogY29udGV4dElkLFxuXHRcdF9kZWZhdWx0VmFsdWU6IGRlZmF1bHRWYWx1ZSxcblx0XHQvKiogQHR5cGUge0Z1bmN0aW9uQ29tcG9uZW50fSAqL1xuXHRcdENvbnN1bWVyKHByb3BzLCBjb250ZXh0VmFsdWUpIHtcblx0XHRcdC8vIHJldHVybiBwcm9wcy5jaGlsZHJlbihcblx0XHRcdC8vIFx0Y29udGV4dFtjb250ZXh0SWRdID8gY29udGV4dFtjb250ZXh0SWRdLnByb3BzLnZhbHVlIDogZGVmYXVsdFZhbHVlXG5cdFx0XHQvLyApO1xuXHRcdFx0cmV0dXJuIHByb3BzLmNoaWxkcmVuKGNvbnRleHRWYWx1ZSk7XG5cdFx0fSxcblx0XHQvKiogQHR5cGUge0Z1bmN0aW9uQ29tcG9uZW50fSAqL1xuXHRcdFByb3ZpZGVyKHByb3BzKSB7XG5cdFx0XHRpZiAoIXRoaXMuZ2V0Q2hpbGRDb250ZXh0KSB7XG5cdFx0XHRcdC8qKiBAdHlwZSB7U2V0PENvbXBvbmVudD4gfCBudWxsfSAqL1xuXHRcdFx0XHRsZXQgc3VicyA9IG5ldyBTZXQoKTtcblx0XHRcdFx0bGV0IGN0eCA9IHt9O1xuXHRcdFx0XHRjdHhbY29udGV4dElkXSA9IHRoaXM7XG5cblx0XHRcdFx0dGhpcy5nZXRDaGlsZENvbnRleHQgPSAoKSA9PiBjdHg7XG5cblx0XHRcdFx0dGhpcy5jb21wb25lbnRXaWxsVW5tb3VudCA9ICgpID0+IHtcblx0XHRcdFx0XHRzdWJzID0gbnVsbDtcblx0XHRcdFx0fTtcblxuXHRcdFx0XHR0aGlzLnNob3VsZENvbXBvbmVudFVwZGF0ZSA9IGZ1bmN0aW9uIChfcHJvcHMpIHtcblx0XHRcdFx0XHRpZiAodGhpcy5wcm9wcy52YWx1ZSAhPT0gX3Byb3BzLnZhbHVlKSB7XG5cdFx0XHRcdFx0XHRzdWJzLmZvckVhY2goYyA9PiB7XG5cdFx0XHRcdFx0XHRcdGMuX2ZvcmNlID0gdHJ1ZTtcblx0XHRcdFx0XHRcdFx0ZW5xdWV1ZVJlbmRlcihjKTtcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fTtcblxuXHRcdFx0XHR0aGlzLnN1YiA9IGMgPT4ge1xuXHRcdFx0XHRcdHN1YnMuYWRkKGMpO1xuXHRcdFx0XHRcdGxldCBvbGQgPSBjLmNvbXBvbmVudFdpbGxVbm1vdW50O1xuXHRcdFx0XHRcdGMuY29tcG9uZW50V2lsbFVubW91bnQgPSAoKSA9PiB7XG5cdFx0XHRcdFx0XHRpZiAoc3Vicykge1xuXHRcdFx0XHRcdFx0XHRzdWJzLmRlbGV0ZShjKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGlmIChvbGQpIG9sZC5jYWxsKGMpO1xuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH07XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBwcm9wcy5jaGlsZHJlbjtcblx0XHR9XG5cdH07XG5cblx0Ly8gRGV2dG9vbHMgbmVlZHMgYWNjZXNzIHRvIHRoZSBjb250ZXh0IG9iamVjdCB3aGVuIGl0XG5cdC8vIGVuY291bnRlcnMgYSBQcm92aWRlci4gVGhpcyBpcyBuZWNlc3NhcnkgdG8gc3VwcG9ydFxuXHQvLyBzZXR0aW5nIGBkaXNwbGF5TmFtZWAgb24gdGhlIGNvbnRleHQgb2JqZWN0IGluc3RlYWRcblx0Ly8gb2Ygb24gdGhlIGNvbXBvbmVudCBpdHNlbGYuIFNlZTpcblx0Ly8gaHR0cHM6Ly9yZWFjdGpzLm9yZy9kb2NzL2NvbnRleHQuaHRtbCNjb250ZXh0ZGlzcGxheW5hbWVcblxuXHRyZXR1cm4gKGNvbnRleHQuUHJvdmlkZXIuX2NvbnRleHRSZWYgPSBjb250ZXh0LkNvbnN1bWVyLmNvbnRleHRUeXBlID1cblx0XHRjb250ZXh0KTtcbn1cbiIsICJpbXBvcnQgeyBkaWZmLCB1bm1vdW50LCBhcHBseVJlZiB9IGZyb20gJy4vaW5kZXgnO1xuaW1wb3J0IHsgY3JlYXRlVk5vZGUsIEZyYWdtZW50IH0gZnJvbSAnLi4vY3JlYXRlLWVsZW1lbnQnO1xuaW1wb3J0IHsgRU1QVFlfT0JKLCBFTVBUWV9BUlIsIElOU0VSVF9WTk9ERSwgTUFUQ0hFRCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBpc0FycmF5IH0gZnJvbSAnLi4vdXRpbCc7XG5pbXBvcnQgeyBnZXREb21TaWJsaW5nIH0gZnJvbSAnLi4vY29tcG9uZW50JztcblxuLyoqXG4gKiBEaWZmIHRoZSBjaGlsZHJlbiBvZiBhIHZpcnR1YWwgbm9kZVxuICogQHBhcmFtIHtQcmVhY3RFbGVtZW50fSBwYXJlbnREb20gVGhlIERPTSBlbGVtZW50IHdob3NlIGNoaWxkcmVuIGFyZSBiZWluZ1xuICogZGlmZmVkXG4gKiBAcGFyYW0ge0NvbXBvbmVudENoaWxkcmVuW119IHJlbmRlclJlc3VsdFxuICogQHBhcmFtIHtWTm9kZX0gbmV3UGFyZW50Vk5vZGUgVGhlIG5ldyB2aXJ0dWFsIG5vZGUgd2hvc2UgY2hpbGRyZW4gc2hvdWxkIGJlXG4gKiBkaWZmJ2VkIGFnYWluc3Qgb2xkUGFyZW50Vk5vZGVcbiAqIEBwYXJhbSB7Vk5vZGV9IG9sZFBhcmVudFZOb2RlIFRoZSBvbGQgdmlydHVhbCBub2RlIHdob3NlIGNoaWxkcmVuIHNob3VsZCBiZVxuICogZGlmZidlZCBhZ2FpbnN0IG5ld1BhcmVudFZOb2RlXG4gKiBAcGFyYW0ge29iamVjdH0gZ2xvYmFsQ29udGV4dCBUaGUgY3VycmVudCBjb250ZXh0IG9iamVjdCAtIG1vZGlmaWVkIGJ5XG4gKiBnZXRDaGlsZENvbnRleHRcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lc3BhY2UgQ3VycmVudCBuYW1lc3BhY2Ugb2YgdGhlIERPTSBub2RlIChIVE1MLCBTVkcsIG9yIE1hdGhNTClcbiAqIEBwYXJhbSB7QXJyYXk8UHJlYWN0RWxlbWVudD59IGV4Y2Vzc0RvbUNoaWxkcmVuXG4gKiBAcGFyYW0ge0FycmF5PENvbXBvbmVudD59IGNvbW1pdFF1ZXVlIExpc3Qgb2YgY29tcG9uZW50cyB3aGljaCBoYXZlIGNhbGxiYWNrc1xuICogdG8gaW52b2tlIGluIGNvbW1pdFJvb3RcbiAqIEBwYXJhbSB7UHJlYWN0RWxlbWVudH0gb2xkRG9tIFRoZSBjdXJyZW50IGF0dGFjaGVkIERPTSBlbGVtZW50IGFueSBuZXcgZG9tXG4gKiBlbGVtZW50cyBzaG91bGQgYmUgcGxhY2VkIGFyb3VuZC4gTGlrZWx5IGBudWxsYCBvbiBmaXJzdCByZW5kZXIgKGV4Y2VwdCB3aGVuXG4gKiBoeWRyYXRpbmcpLiBDYW4gYmUgYSBzaWJsaW5nIERPTSBlbGVtZW50IHdoZW4gZGlmZmluZyBGcmFnbWVudHMgdGhhdCBoYXZlXG4gKiBzaWJsaW5ncy4gSW4gbW9zdCBjYXNlcywgaXQgc3RhcnRzIG91dCBhcyBgb2xkQ2hpbGRyZW5bMF0uX2RvbWAuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGlzSHlkcmF0aW5nIFdoZXRoZXIgb3Igbm90IHdlIGFyZSBpbiBoeWRyYXRpb25cbiAqIEBwYXJhbSB7YW55W119IHJlZlF1ZXVlIGFuIGFycmF5IG9mIGVsZW1lbnRzIG5lZWRlZCB0byBpbnZva2UgcmVmc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZGlmZkNoaWxkcmVuKFxuXHRwYXJlbnREb20sXG5cdHJlbmRlclJlc3VsdCxcblx0bmV3UGFyZW50Vk5vZGUsXG5cdG9sZFBhcmVudFZOb2RlLFxuXHRnbG9iYWxDb250ZXh0LFxuXHRuYW1lc3BhY2UsXG5cdGV4Y2Vzc0RvbUNoaWxkcmVuLFxuXHRjb21taXRRdWV1ZSxcblx0b2xkRG9tLFxuXHRpc0h5ZHJhdGluZyxcblx0cmVmUXVldWVcbikge1xuXHRsZXQgaSxcblx0XHQvKiogQHR5cGUge1ZOb2RlfSAqL1xuXHRcdG9sZFZOb2RlLFxuXHRcdC8qKiBAdHlwZSB7Vk5vZGV9ICovXG5cdFx0Y2hpbGRWTm9kZSxcblx0XHQvKiogQHR5cGUge1ByZWFjdEVsZW1lbnR9ICovXG5cdFx0bmV3RG9tLFxuXHRcdC8qKiBAdHlwZSB7UHJlYWN0RWxlbWVudH0gKi9cblx0XHRmaXJzdENoaWxkRG9tO1xuXG5cdC8vIFRoaXMgaXMgYSBjb21wcmVzc2lvbiBvZiBvbGRQYXJlbnRWTm9kZSE9bnVsbCAmJiBvbGRQYXJlbnRWTm9kZSAhPSBFTVBUWV9PQkogJiYgb2xkUGFyZW50Vk5vZGUuX2NoaWxkcmVuIHx8IEVNUFRZX0FSUlxuXHQvLyBhcyBFTVBUWV9PQkouX2NoaWxkcmVuIHNob3VsZCBiZSBgdW5kZWZpbmVkYC5cblx0LyoqIEB0eXBlIHtWTm9kZVtdfSAqL1xuXHRsZXQgb2xkQ2hpbGRyZW4gPSAob2xkUGFyZW50Vk5vZGUgJiYgb2xkUGFyZW50Vk5vZGUuX2NoaWxkcmVuKSB8fCBFTVBUWV9BUlI7XG5cblx0bGV0IG5ld0NoaWxkcmVuTGVuZ3RoID0gcmVuZGVyUmVzdWx0Lmxlbmd0aDtcblxuXHRuZXdQYXJlbnRWTm9kZS5fbmV4dERvbSA9IG9sZERvbTtcblx0Y29uc3RydWN0TmV3Q2hpbGRyZW5BcnJheShuZXdQYXJlbnRWTm9kZSwgcmVuZGVyUmVzdWx0LCBvbGRDaGlsZHJlbik7XG5cdG9sZERvbSA9IG5ld1BhcmVudFZOb2RlLl9uZXh0RG9tO1xuXG5cdGZvciAoaSA9IDA7IGkgPCBuZXdDaGlsZHJlbkxlbmd0aDsgaSsrKSB7XG5cdFx0Y2hpbGRWTm9kZSA9IG5ld1BhcmVudFZOb2RlLl9jaGlsZHJlbltpXTtcblx0XHRpZiAoY2hpbGRWTm9kZSA9PSBudWxsKSBjb250aW51ZTtcblxuXHRcdC8vIEF0IHRoaXMgcG9pbnQsIGNvbnN0cnVjdE5ld0NoaWxkcmVuQXJyYXkgaGFzIGFzc2lnbmVkIF9pbmRleCB0byBiZSB0aGVcblx0XHQvLyBtYXRjaGluZ0luZGV4IGZvciB0aGlzIFZOb2RlJ3Mgb2xkVk5vZGUgKG9yIC0xIGlmIHRoZXJlIGlzIG5vIG9sZFZOb2RlKS5cblx0XHRpZiAoY2hpbGRWTm9kZS5faW5kZXggPT09IC0xKSB7XG5cdFx0XHRvbGRWTm9kZSA9IEVNUFRZX09CSjtcblx0XHR9IGVsc2Uge1xuXHRcdFx0b2xkVk5vZGUgPSBvbGRDaGlsZHJlbltjaGlsZFZOb2RlLl9pbmRleF0gfHwgRU1QVFlfT0JKO1xuXHRcdH1cblxuXHRcdC8vIFVwZGF0ZSBjaGlsZFZOb2RlLl9pbmRleCB0byBpdHMgZmluYWwgaW5kZXhcblx0XHRjaGlsZFZOb2RlLl9pbmRleCA9IGk7XG5cblx0XHQvLyBNb3JwaCB0aGUgb2xkIGVsZW1lbnQgaW50byB0aGUgbmV3IG9uZSwgYnV0IGRvbid0IGFwcGVuZCBpdCB0byB0aGUgZG9tIHlldFxuXHRcdGRpZmYoXG5cdFx0XHRwYXJlbnREb20sXG5cdFx0XHRjaGlsZFZOb2RlLFxuXHRcdFx0b2xkVk5vZGUsXG5cdFx0XHRnbG9iYWxDb250ZXh0LFxuXHRcdFx0bmFtZXNwYWNlLFxuXHRcdFx0ZXhjZXNzRG9tQ2hpbGRyZW4sXG5cdFx0XHRjb21taXRRdWV1ZSxcblx0XHRcdG9sZERvbSxcblx0XHRcdGlzSHlkcmF0aW5nLFxuXHRcdFx0cmVmUXVldWVcblx0XHQpO1xuXG5cdFx0Ly8gQWRqdXN0IERPTSBub2Rlc1xuXHRcdG5ld0RvbSA9IGNoaWxkVk5vZGUuX2RvbTtcblx0XHRpZiAoY2hpbGRWTm9kZS5yZWYgJiYgb2xkVk5vZGUucmVmICE9IGNoaWxkVk5vZGUucmVmKSB7XG5cdFx0XHRpZiAob2xkVk5vZGUucmVmKSB7XG5cdFx0XHRcdGFwcGx5UmVmKG9sZFZOb2RlLnJlZiwgbnVsbCwgY2hpbGRWTm9kZSk7XG5cdFx0XHR9XG5cdFx0XHRyZWZRdWV1ZS5wdXNoKFxuXHRcdFx0XHRjaGlsZFZOb2RlLnJlZixcblx0XHRcdFx0Y2hpbGRWTm9kZS5fY29tcG9uZW50IHx8IG5ld0RvbSxcblx0XHRcdFx0Y2hpbGRWTm9kZVxuXHRcdFx0KTtcblx0XHR9XG5cblx0XHRpZiAoZmlyc3RDaGlsZERvbSA9PSBudWxsICYmIG5ld0RvbSAhPSBudWxsKSB7XG5cdFx0XHRmaXJzdENoaWxkRG9tID0gbmV3RG9tO1xuXHRcdH1cblxuXHRcdGlmIChcblx0XHRcdGNoaWxkVk5vZGUuX2ZsYWdzICYgSU5TRVJUX1ZOT0RFIHx8XG5cdFx0XHRvbGRWTm9kZS5fY2hpbGRyZW4gPT09IGNoaWxkVk5vZGUuX2NoaWxkcmVuXG5cdFx0KSB7XG5cdFx0XHRvbGREb20gPSBpbnNlcnQoY2hpbGRWTm9kZSwgb2xkRG9tLCBwYXJlbnREb20pO1xuXHRcdH0gZWxzZSBpZiAoXG5cdFx0XHR0eXBlb2YgY2hpbGRWTm9kZS50eXBlID09ICdmdW5jdGlvbicgJiZcblx0XHRcdGNoaWxkVk5vZGUuX25leHREb20gIT09IHVuZGVmaW5lZFxuXHRcdCkge1xuXHRcdFx0Ly8gU2luY2UgRnJhZ21lbnRzIG9yIGNvbXBvbmVudHMgdGhhdCByZXR1cm4gRnJhZ21lbnQgbGlrZSBWTm9kZXMgY2FuXG5cdFx0XHQvLyBjb250YWluIG11bHRpcGxlIERPTSBub2RlcyBhcyB0aGUgc2FtZSBsZXZlbCwgY29udGludWUgdGhlIGRpZmYgZnJvbVxuXHRcdFx0Ly8gdGhlIHNpYmxpbmcgb2YgbGFzdCBET00gY2hpbGQgb2YgdGhpcyBjaGlsZCBWTm9kZVxuXHRcdFx0b2xkRG9tID0gY2hpbGRWTm9kZS5fbmV4dERvbTtcblx0XHR9IGVsc2UgaWYgKG5ld0RvbSkge1xuXHRcdFx0b2xkRG9tID0gbmV3RG9tLm5leHRTaWJsaW5nO1xuXHRcdH1cblxuXHRcdC8vIEVhZ2VybHkgY2xlYW51cCBfbmV4dERvbS4gV2UgZG9uJ3QgbmVlZCB0byBwZXJzaXN0IHRoZSB2YWx1ZSBiZWNhdXNlIGl0XG5cdFx0Ly8gaXMgb25seSB1c2VkIGJ5IGBkaWZmQ2hpbGRyZW5gIHRvIGRldGVybWluZSB3aGVyZSB0byByZXN1bWUgdGhlIGRpZmZcblx0XHQvLyBhZnRlciBkaWZmaW5nIENvbXBvbmVudHMgYW5kIEZyYWdtZW50cy4gT25jZSB3ZSBzdG9yZSBpdCB0aGUgbmV4dERPTVxuXHRcdC8vIGxvY2FsIHZhciwgd2UgY2FuIGNsZWFuIHVwIHRoZSBwcm9wZXJ0eS4gQWxzbyBwcmV2ZW50cyB1cyBoYW5naW5nIG9uIHRvXG5cdFx0Ly8gRE9NIG5vZGVzIHRoYXQgbWF5IGhhdmUgYmVlbiB1bm1vdW50ZWQuXG5cdFx0Y2hpbGRWTm9kZS5fbmV4dERvbSA9IHVuZGVmaW5lZDtcblxuXHRcdC8vIFVuc2V0IGRpZmZpbmcgZmxhZ3Ncblx0XHRjaGlsZFZOb2RlLl9mbGFncyAmPSB+KElOU0VSVF9WTk9ERSB8IE1BVENIRUQpO1xuXHR9XG5cblx0Ly8gVE9ETzogV2l0aCBuZXcgY2hpbGQgZGlmZmluZyBhbGdvLCBjb25zaWRlciBhbHQgd2F5cyB0byBkaWZmIEZyYWdtZW50cy5cblx0Ly8gU3VjaCBhcyBkcm9wcGluZyBvbGREb20gYW5kIG1vdmluZyBmcmFnbWVudHMgaW4gcGxhY2Vcblx0Ly9cblx0Ly8gQmVjYXVzZSB0aGUgbmV3UGFyZW50Vk5vZGUgaXMgRnJhZ21lbnQtbGlrZSwgd2UgbmVlZCB0byBzZXQgaXQnc1xuXHQvLyBfbmV4dERvbSBwcm9wZXJ0eSB0byB0aGUgbmV4dFNpYmxpbmcgb2YgaXRzIGxhc3QgY2hpbGQgRE9NIG5vZGUuXG5cdC8vXG5cdC8vIGBvbGREb21gIGNvbnRhaW5zIHRoZSBjb3JyZWN0IHZhbHVlIGhlcmUgYmVjYXVzZSBpZiB0aGUgbGFzdCBjaGlsZFxuXHQvLyBpcyBhIEZyYWdtZW50LWxpa2UsIHRoZW4gb2xkRG9tIGhhcyBhbHJlYWR5IGJlZW4gc2V0IHRvIHRoYXQgY2hpbGQncyBfbmV4dERvbS5cblx0Ly8gSWYgdGhlIGxhc3QgY2hpbGQgaXMgYSBET00gVk5vZGUsIHRoZW4gb2xkRG9tIHdpbGwgYmUgc2V0IHRvIHRoYXQgRE9NXG5cdC8vIG5vZGUncyBuZXh0U2libGluZy5cblx0bmV3UGFyZW50Vk5vZGUuX25leHREb20gPSBvbGREb207XG5cdG5ld1BhcmVudFZOb2RlLl9kb20gPSBmaXJzdENoaWxkRG9tO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7Vk5vZGV9IG5ld1BhcmVudFZOb2RlXG4gKiBAcGFyYW0ge0NvbXBvbmVudENoaWxkcmVuW119IHJlbmRlclJlc3VsdFxuICogQHBhcmFtIHtWTm9kZVtdfSBvbGRDaGlsZHJlblxuICovXG5mdW5jdGlvbiBjb25zdHJ1Y3ROZXdDaGlsZHJlbkFycmF5KG5ld1BhcmVudFZOb2RlLCByZW5kZXJSZXN1bHQsIG9sZENoaWxkcmVuKSB7XG5cdC8qKiBAdHlwZSB7bnVtYmVyfSAqL1xuXHRsZXQgaTtcblx0LyoqIEB0eXBlIHtWTm9kZX0gKi9cblx0bGV0IGNoaWxkVk5vZGU7XG5cdC8qKiBAdHlwZSB7Vk5vZGV9ICovXG5cdGxldCBvbGRWTm9kZTtcblxuXHRjb25zdCBuZXdDaGlsZHJlbkxlbmd0aCA9IHJlbmRlclJlc3VsdC5sZW5ndGg7XG5cdGxldCBvbGRDaGlsZHJlbkxlbmd0aCA9IG9sZENoaWxkcmVuLmxlbmd0aCxcblx0XHRyZW1haW5pbmdPbGRDaGlsZHJlbiA9IG9sZENoaWxkcmVuTGVuZ3RoO1xuXG5cdGxldCBza2V3ID0gMDtcblxuXHRuZXdQYXJlbnRWTm9kZS5fY2hpbGRyZW4gPSBbXTtcblx0Zm9yIChpID0gMDsgaSA8IG5ld0NoaWxkcmVuTGVuZ3RoOyBpKyspIHtcblx0XHQvLyBAdHMtZXhwZWN0LWVycm9yIFdlIGFyZSByZXVzaW5nIHRoZSBjaGlsZFZOb2RlIHZhcmlhYmxlIHRvIGhvbGQgYm90aCB0aGVcblx0XHQvLyBwcmUgYW5kIHBvc3Qgbm9ybWFsaXplZCBjaGlsZFZOb2RlXG5cdFx0Y2hpbGRWTm9kZSA9IHJlbmRlclJlc3VsdFtpXTtcblxuXHRcdGlmIChcblx0XHRcdGNoaWxkVk5vZGUgPT0gbnVsbCB8fFxuXHRcdFx0dHlwZW9mIGNoaWxkVk5vZGUgPT0gJ2Jvb2xlYW4nIHx8XG5cdFx0XHR0eXBlb2YgY2hpbGRWTm9kZSA9PSAnZnVuY3Rpb24nXG5cdFx0KSB7XG5cdFx0XHRjaGlsZFZOb2RlID0gbmV3UGFyZW50Vk5vZGUuX2NoaWxkcmVuW2ldID0gbnVsbDtcblx0XHRcdGNvbnRpbnVlO1xuXHRcdH1cblx0XHQvLyBJZiB0aGlzIG5ld1ZOb2RlIGlzIGJlaW5nIHJldXNlZCAoZS5nLiA8ZGl2PntyZXVzZX17cmV1c2V9PC9kaXY+KSBpbiB0aGUgc2FtZSBkaWZmLFxuXHRcdC8vIG9yIHdlIGFyZSByZW5kZXJpbmcgYSBjb21wb25lbnQgKGUuZy4gc2V0U3RhdGUpIGNvcHkgdGhlIG9sZFZOb2RlcyBzbyBpdCBjYW4gaGF2ZVxuXHRcdC8vIGl0J3Mgb3duIERPTSAmIGV0Yy4gcG9pbnRlcnNcblx0XHRlbHNlIGlmIChcblx0XHRcdHR5cGVvZiBjaGlsZFZOb2RlID09ICdzdHJpbmcnIHx8XG5cdFx0XHR0eXBlb2YgY2hpbGRWTm9kZSA9PSAnbnVtYmVyJyB8fFxuXHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHZhbGlkLXR5cGVvZlxuXHRcdFx0dHlwZW9mIGNoaWxkVk5vZGUgPT0gJ2JpZ2ludCcgfHxcblx0XHRcdGNoaWxkVk5vZGUuY29uc3RydWN0b3IgPT0gU3RyaW5nXG5cdFx0KSB7XG5cdFx0XHRjaGlsZFZOb2RlID0gbmV3UGFyZW50Vk5vZGUuX2NoaWxkcmVuW2ldID0gY3JlYXRlVk5vZGUoXG5cdFx0XHRcdG51bGwsXG5cdFx0XHRcdGNoaWxkVk5vZGUsXG5cdFx0XHRcdG51bGwsXG5cdFx0XHRcdG51bGwsXG5cdFx0XHRcdG51bGxcblx0XHRcdCk7XG5cdFx0fSBlbHNlIGlmIChpc0FycmF5KGNoaWxkVk5vZGUpKSB7XG5cdFx0XHRjaGlsZFZOb2RlID0gbmV3UGFyZW50Vk5vZGUuX2NoaWxkcmVuW2ldID0gY3JlYXRlVk5vZGUoXG5cdFx0XHRcdEZyYWdtZW50LFxuXHRcdFx0XHR7IGNoaWxkcmVuOiBjaGlsZFZOb2RlIH0sXG5cdFx0XHRcdG51bGwsXG5cdFx0XHRcdG51bGwsXG5cdFx0XHRcdG51bGxcblx0XHRcdCk7XG5cdFx0fSBlbHNlIGlmIChjaGlsZFZOb2RlLmNvbnN0cnVjdG9yID09PSB1bmRlZmluZWQgJiYgY2hpbGRWTm9kZS5fZGVwdGggPiAwKSB7XG5cdFx0XHQvLyBWTm9kZSBpcyBhbHJlYWR5IGluIHVzZSwgY2xvbmUgaXQuIFRoaXMgY2FuIGhhcHBlbiBpbiB0aGUgZm9sbG93aW5nXG5cdFx0XHQvLyBzY2VuYXJpbzpcblx0XHRcdC8vICAgY29uc3QgcmV1c2UgPSA8ZGl2IC8+XG5cdFx0XHQvLyAgIDxkaXY+e3JldXNlfTxzcGFuIC8+e3JldXNlfTwvZGl2PlxuXHRcdFx0Y2hpbGRWTm9kZSA9IG5ld1BhcmVudFZOb2RlLl9jaGlsZHJlbltpXSA9IGNyZWF0ZVZOb2RlKFxuXHRcdFx0XHRjaGlsZFZOb2RlLnR5cGUsXG5cdFx0XHRcdGNoaWxkVk5vZGUucHJvcHMsXG5cdFx0XHRcdGNoaWxkVk5vZGUua2V5LFxuXHRcdFx0XHRjaGlsZFZOb2RlLnJlZiA/IGNoaWxkVk5vZGUucmVmIDogbnVsbCxcblx0XHRcdFx0Y2hpbGRWTm9kZS5fb3JpZ2luYWxcblx0XHRcdCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNoaWxkVk5vZGUgPSBuZXdQYXJlbnRWTm9kZS5fY2hpbGRyZW5baV0gPSBjaGlsZFZOb2RlO1xuXHRcdH1cblxuXHRcdGNvbnN0IHNrZXdlZEluZGV4ID0gaSArIHNrZXc7XG5cdFx0Y2hpbGRWTm9kZS5fcGFyZW50ID0gbmV3UGFyZW50Vk5vZGU7XG5cdFx0Y2hpbGRWTm9kZS5fZGVwdGggPSBuZXdQYXJlbnRWTm9kZS5fZGVwdGggKyAxO1xuXG5cdFx0Ly8gVGVtcG9yYXJpbHkgc3RvcmUgdGhlIG1hdGNoaW5nSW5kZXggb24gdGhlIF9pbmRleCBwcm9wZXJ0eSBzbyB3ZSBjYW4gcHVsbFxuXHRcdC8vIG91dCB0aGUgb2xkVk5vZGUgaW4gZGlmZkNoaWxkcmVuLiBXZSdsbCBvdmVycmlkZSB0aGlzIHRvIHRoZSBWTm9kZSdzXG5cdFx0Ly8gZmluYWwgaW5kZXggYWZ0ZXIgdXNpbmcgdGhpcyBwcm9wZXJ0eSB0byBnZXQgdGhlIG9sZFZOb2RlXG5cdFx0Y29uc3QgbWF0Y2hpbmdJbmRleCA9IChjaGlsZFZOb2RlLl9pbmRleCA9IGZpbmRNYXRjaGluZ0luZGV4KFxuXHRcdFx0Y2hpbGRWTm9kZSxcblx0XHRcdG9sZENoaWxkcmVuLFxuXHRcdFx0c2tld2VkSW5kZXgsXG5cdFx0XHRyZW1haW5pbmdPbGRDaGlsZHJlblxuXHRcdCkpO1xuXG5cdFx0b2xkVk5vZGUgPSBudWxsO1xuXHRcdGlmIChtYXRjaGluZ0luZGV4ICE9PSAtMSkge1xuXHRcdFx0b2xkVk5vZGUgPSBvbGRDaGlsZHJlblttYXRjaGluZ0luZGV4XTtcblx0XHRcdHJlbWFpbmluZ09sZENoaWxkcmVuLS07XG5cdFx0XHRpZiAob2xkVk5vZGUpIHtcblx0XHRcdFx0b2xkVk5vZGUuX2ZsYWdzIHw9IE1BVENIRUQ7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gSGVyZSwgd2UgZGVmaW5lIGlzTW91bnRpbmcgZm9yIHRoZSBwdXJwb3NlcyBvZiB0aGUgc2tldyBkaWZmaW5nXG5cdFx0Ly8gYWxnb3JpdGhtLiBOb2RlcyB0aGF0IGFyZSB1bnN1c3BlbmRpbmcgYXJlIGNvbnNpZGVyZWQgbW91bnRpbmcgYW5kIHdlIGRldGVjdFxuXHRcdC8vIHRoaXMgYnkgY2hlY2tpbmcgaWYgb2xkVk5vZGUuX29yaWdpbmFsID09PSBudWxsXG5cdFx0Y29uc3QgaXNNb3VudGluZyA9IG9sZFZOb2RlID09IG51bGwgfHwgb2xkVk5vZGUuX29yaWdpbmFsID09PSBudWxsO1xuXG5cdFx0aWYgKGlzTW91bnRpbmcpIHtcblx0XHRcdGlmIChtYXRjaGluZ0luZGV4ID09IC0xKSB7XG5cdFx0XHRcdHNrZXctLTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gSWYgd2UgYXJlIG1vdW50aW5nIGEgRE9NIFZOb2RlLCBtYXJrIGl0IGZvciBpbnNlcnRpb25cblx0XHRcdGlmICh0eXBlb2YgY2hpbGRWTm9kZS50eXBlICE9ICdmdW5jdGlvbicpIHtcblx0XHRcdFx0Y2hpbGRWTm9kZS5fZmxhZ3MgfD0gSU5TRVJUX1ZOT0RFO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSBpZiAobWF0Y2hpbmdJbmRleCAhPT0gc2tld2VkSW5kZXgpIHtcblx0XHRcdC8vIFdoZW4gd2UgbW92ZSBlbGVtZW50cyBhcm91bmQgaS5lLiBbMCwgMSwgMl0gLS0+IFsxLCAwLCAyXVxuXHRcdFx0Ly8gLS0+IHdlIGRpZmYgMSwgd2UgZmluZCBpdCBhdCBwb3NpdGlvbiAxIHdoaWxlIG91ciBza2V3ZWQgaW5kZXggaXMgMCBhbmQgb3VyIHNrZXcgaXMgMFxuXHRcdFx0Ly8gICAgIHdlIHNldCB0aGUgc2tldyB0byAxIGFzIHdlIGZvdW5kIGFuIG9mZnNldC5cblx0XHRcdC8vIC0tPiB3ZSBkaWZmIDAsIHdlIGZpbmQgaXQgYXQgcG9zaXRpb24gMCB3aGlsZSBvdXIgc2tld2VkIGluZGV4IGlzIGF0IDIgYW5kIG91ciBza2V3IGlzIDFcblx0XHRcdC8vICAgICB0aGlzIG1ha2VzIHVzIGluY3JlYXNlIHRoZSBza2V3IGFnYWluLlxuXHRcdFx0Ly8gLS0+IHdlIGRpZmYgMiwgd2UgZmluZCBpdCBhdCBwb3NpdGlvbiAyIHdoaWxlIG91ciBza2V3ZWQgaW5kZXggaXMgYXQgNCBhbmQgb3VyIHNrZXcgaXMgMlxuXHRcdFx0Ly9cblx0XHRcdC8vIHRoaXMgYmVjb21lcyBhbiBvcHRpbWl6YXRpb24gcXVlc3Rpb24gd2hlcmUgY3VycmVudGx5IHdlIHNlZSBhIDEgZWxlbWVudCBvZmZzZXQgYXMgYW4gaW5zZXJ0aW9uXG5cdFx0XHQvLyBvciBkZWxldGlvbiBpLmUuIHdlIG9wdGltaXplIGZvciBbMCwgMSwgMl0gLS0+IFs5LCAwLCAxLCAyXVxuXHRcdFx0Ly8gd2hpbGUgYSBtb3JlIHRoYW4gMSBvZmZzZXQgd2Ugc2VlIGFzIGEgc3dhcC5cblx0XHRcdC8vIFdlIGNvdWxkIHByb2JhYmx5IGJ1aWxkIGhldXJpc3RpY3MgZm9yIGhhdmluZyBhbiBvcHRpbWl6ZWQgY291cnNlIG9mIGFjdGlvbiBoZXJlIGFzIHdlbGwsIGJ1dFxuXHRcdFx0Ly8gbWlnaHQgZ28gYXQgdGhlIGNvc3Qgb2Ygc29tZSBieXRlcy5cblx0XHRcdC8vXG5cdFx0XHQvLyBJZiB3ZSB3YW50ZWQgdG8gb3B0aW1pemUgZm9yIGkuZS4gb25seSBzd2FwcyB3ZSdkIGp1c3QgZG8gdGhlIGxhc3QgdHdvIGNvZGUtYnJhbmNoZXMgYW5kIGhhdmVcblx0XHRcdC8vIG9ubHkgdGhlIGZpcnN0IGl0ZW0gYmUgYSByZS1zY291dGluZyBhbmQgYWxsIHRoZSBvdGhlcnMgZmFsbCBpbiB0aGVpciBza2V3ZWQgY291bnRlci1wYXJ0LlxuXHRcdFx0Ly8gV2UgY291bGQgYWxzbyBmdXJ0aGVyIG9wdGltaXplIGZvciBzd2Fwc1xuXHRcdFx0aWYgKG1hdGNoaW5nSW5kZXggPT0gc2tld2VkSW5kZXggLSAxKSB7XG5cdFx0XHRcdHNrZXctLTtcblx0XHRcdH0gZWxzZSBpZiAobWF0Y2hpbmdJbmRleCA9PSBza2V3ZWRJbmRleCArIDEpIHtcblx0XHRcdFx0c2tldysrO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0aWYgKG1hdGNoaW5nSW5kZXggPiBza2V3ZWRJbmRleCkge1xuXHRcdFx0XHRcdHNrZXctLTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRza2V3Kys7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBNb3ZlIHRoaXMgVk5vZGUncyBET00gaWYgdGhlIG9yaWdpbmFsIGluZGV4IChtYXRjaGluZ0luZGV4KSBkb2Vzbid0XG5cdFx0XHRcdC8vIG1hdGNoIHRoZSBuZXcgc2tldyBpbmRleCAoaSArIG5ldyBza2V3KVxuXHRcdFx0XHQvLyBJbiB0aGUgZm9ybWVyIHR3byBicmFuY2hlcyB3ZSBrbm93IHRoYXQgaXQgbWF0Y2hlcyBhZnRlciBza2V3aW5nXG5cdFx0XHRcdGNoaWxkVk5vZGUuX2ZsYWdzIHw9IElOU0VSVF9WTk9ERTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvLyBSZW1vdmUgcmVtYWluaW5nIG9sZENoaWxkcmVuIGlmIHRoZXJlIGFyZSBhbnkuIExvb3AgZm9yd2FyZHMgc28gdGhhdCBhcyB3ZVxuXHQvLyB1bm1vdW50IERPTSBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIG9sZENoaWxkcmVuLCB3ZSBjYW4gYWRqdXN0IG9sZERvbSB0b1xuXHQvLyBwb2ludCB0byB0aGUgbmV4dCBjaGlsZCwgd2hpY2ggbmVlZHMgdG8gYmUgdGhlIGZpcnN0IERPTSBub2RlIHRoYXQgd29uJ3QgYmVcblx0Ly8gdW5tb3VudGVkLlxuXHRpZiAocmVtYWluaW5nT2xkQ2hpbGRyZW4pIHtcblx0XHRmb3IgKGkgPSAwOyBpIDwgb2xkQ2hpbGRyZW5MZW5ndGg7IGkrKykge1xuXHRcdFx0b2xkVk5vZGUgPSBvbGRDaGlsZHJlbltpXTtcblx0XHRcdGlmIChvbGRWTm9kZSAhPSBudWxsICYmIChvbGRWTm9kZS5fZmxhZ3MgJiBNQVRDSEVEKSA9PT0gMCkge1xuXHRcdFx0XHRpZiAob2xkVk5vZGUuX2RvbSA9PSBuZXdQYXJlbnRWTm9kZS5fbmV4dERvbSkge1xuXHRcdFx0XHRcdG5ld1BhcmVudFZOb2RlLl9uZXh0RG9tID0gZ2V0RG9tU2libGluZyhvbGRWTm9kZSk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHR1bm1vdW50KG9sZFZOb2RlLCBvbGRWTm9kZSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG5cbi8qKlxuICogQHBhcmFtIHtWTm9kZX0gcGFyZW50Vk5vZGVcbiAqIEBwYXJhbSB7UHJlYWN0RWxlbWVudH0gb2xkRG9tXG4gKiBAcGFyYW0ge1ByZWFjdEVsZW1lbnR9IHBhcmVudERvbVxuICogQHJldHVybnMge1ByZWFjdEVsZW1lbnR9XG4gKi9cbmZ1bmN0aW9uIGluc2VydChwYXJlbnRWTm9kZSwgb2xkRG9tLCBwYXJlbnREb20pIHtcblx0Ly8gTm90ZTogVk5vZGVzIGluIG5lc3RlZCBzdXNwZW5kZWQgdHJlZXMgbWF5IGJlIG1pc3NpbmcgX2NoaWxkcmVuLlxuXG5cdGlmICh0eXBlb2YgcGFyZW50Vk5vZGUudHlwZSA9PSAnZnVuY3Rpb24nKSB7XG5cdFx0bGV0IGNoaWxkcmVuID0gcGFyZW50Vk5vZGUuX2NoaWxkcmVuO1xuXHRcdGZvciAobGV0IGkgPSAwOyBjaGlsZHJlbiAmJiBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcblx0XHRcdGlmIChjaGlsZHJlbltpXSkge1xuXHRcdFx0XHQvLyBJZiB3ZSBlbnRlciB0aGlzIGNvZGUgcGF0aCBvbiBzQ1UgYmFpbG91dCwgd2hlcmUgd2UgY29weVxuXHRcdFx0XHQvLyBvbGRWTm9kZS5fY2hpbGRyZW4gdG8gbmV3Vk5vZGUuX2NoaWxkcmVuLCB3ZSBuZWVkIHRvIHVwZGF0ZSB0aGUgb2xkXG5cdFx0XHRcdC8vIGNoaWxkcmVuJ3MgX3BhcmVudCBwb2ludGVyIHRvIHBvaW50IHRvIHRoZSBuZXdWTm9kZSAocGFyZW50Vk5vZGVcblx0XHRcdFx0Ly8gaGVyZSkuXG5cdFx0XHRcdGNoaWxkcmVuW2ldLl9wYXJlbnQgPSBwYXJlbnRWTm9kZTtcblx0XHRcdFx0b2xkRG9tID0gaW5zZXJ0KGNoaWxkcmVuW2ldLCBvbGREb20sIHBhcmVudERvbSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG9sZERvbTtcblx0fSBlbHNlIGlmIChwYXJlbnRWTm9kZS5fZG9tICE9IG9sZERvbSkge1xuXHRcdGlmIChvbGREb20gJiYgcGFyZW50Vk5vZGUudHlwZSAmJiAhcGFyZW50RG9tLmNvbnRhaW5zKG9sZERvbSkpIHtcblx0XHRcdG9sZERvbSA9IGdldERvbVNpYmxpbmcocGFyZW50Vk5vZGUpO1xuXHRcdH1cblx0XHRwYXJlbnREb20uaW5zZXJ0QmVmb3JlKHBhcmVudFZOb2RlLl9kb20sIG9sZERvbSB8fCBudWxsKTtcblx0XHRvbGREb20gPSBwYXJlbnRWTm9kZS5fZG9tO1xuXHR9XG5cblx0ZG8ge1xuXHRcdG9sZERvbSA9IG9sZERvbSAmJiBvbGREb20ubmV4dFNpYmxpbmc7XG5cdH0gd2hpbGUgKG9sZERvbSAhPSBudWxsICYmIG9sZERvbS5ub2RlVHlwZSA9PT0gOCk7XG5cblx0cmV0dXJuIG9sZERvbTtcbn1cblxuLyoqXG4gKiBGbGF0dGVuIGFuZCBsb29wIHRocm91Z2ggdGhlIGNoaWxkcmVuIG9mIGEgdmlydHVhbCBub2RlXG4gKiBAcGFyYW0ge0NvbXBvbmVudENoaWxkcmVufSBjaGlsZHJlbiBUaGUgdW5mbGF0dGVuZWQgY2hpbGRyZW4gb2YgYSB2aXJ0dWFsXG4gKiBub2RlXG4gKiBAcmV0dXJucyB7Vk5vZGVbXX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvQ2hpbGRBcnJheShjaGlsZHJlbiwgb3V0KSB7XG5cdG91dCA9IG91dCB8fCBbXTtcblx0aWYgKGNoaWxkcmVuID09IG51bGwgfHwgdHlwZW9mIGNoaWxkcmVuID09ICdib29sZWFuJykge1xuXHR9IGVsc2UgaWYgKGlzQXJyYXkoY2hpbGRyZW4pKSB7XG5cdFx0Y2hpbGRyZW4uc29tZShjaGlsZCA9PiB7XG5cdFx0XHR0b0NoaWxkQXJyYXkoY2hpbGQsIG91dCk7XG5cdFx0fSk7XG5cdH0gZWxzZSB7XG5cdFx0b3V0LnB1c2goY2hpbGRyZW4pO1xuXHR9XG5cdHJldHVybiBvdXQ7XG59XG5cbi8qKlxuICogQHBhcmFtIHtWTm9kZX0gY2hpbGRWTm9kZVxuICogQHBhcmFtIHtWTm9kZVtdfSBvbGRDaGlsZHJlblxuICogQHBhcmFtIHtudW1iZXJ9IHNrZXdlZEluZGV4XG4gKiBAcGFyYW0ge251bWJlcn0gcmVtYWluaW5nT2xkQ2hpbGRyZW5cbiAqIEByZXR1cm5zIHtudW1iZXJ9XG4gKi9cbmZ1bmN0aW9uIGZpbmRNYXRjaGluZ0luZGV4KFxuXHRjaGlsZFZOb2RlLFxuXHRvbGRDaGlsZHJlbixcblx0c2tld2VkSW5kZXgsXG5cdHJlbWFpbmluZ09sZENoaWxkcmVuXG4pIHtcblx0Y29uc3Qga2V5ID0gY2hpbGRWTm9kZS5rZXk7XG5cdGNvbnN0IHR5cGUgPSBjaGlsZFZOb2RlLnR5cGU7XG5cdGxldCB4ID0gc2tld2VkSW5kZXggLSAxO1xuXHRsZXQgeSA9IHNrZXdlZEluZGV4ICsgMTtcblx0bGV0IG9sZFZOb2RlID0gb2xkQ2hpbGRyZW5bc2tld2VkSW5kZXhdO1xuXG5cdC8vIFdlIG9ubHkgbmVlZCB0byBwZXJmb3JtIGEgc2VhcmNoIGlmIHRoZXJlIGFyZSBtb3JlIGNoaWxkcmVuXG5cdC8vIChyZW1haW5pbmdPbGRDaGlsZHJlbikgdG8gc2VhcmNoLiBIb3dldmVyLCBpZiB0aGUgb2xkVk5vZGUgd2UganVzdCBsb29rZWRcblx0Ly8gYXQgc2tld2VkSW5kZXggd2FzIG5vdCBhbHJlYWR5IHVzZWQgaW4gdGhpcyBkaWZmLCB0aGVuIHRoZXJlIG11c3QgYmUgYXRcblx0Ly8gbGVhc3QgMSBvdGhlciAoc28gZ3JlYXRlciB0aGFuIDEpIHJlbWFpbmluZ09sZENoaWxkcmVuIHRvIGF0dGVtcHQgdG8gbWF0Y2hcblx0Ly8gYWdhaW5zdC4gU28gdGhlIGZvbGxvd2luZyBjb25kaXRpb24gY2hlY2tzIHRoYXQgZW5zdXJpbmdcblx0Ly8gcmVtYWluaW5nT2xkQ2hpbGRyZW4gPiAxIGlmIHRoZSBvbGRWTm9kZSBpcyBub3QgYWxyZWFkeSB1c2VkL21hdGNoZWQuIEVsc2Vcblx0Ly8gaWYgdGhlIG9sZFZOb2RlIHdhcyBudWxsIG9yIG1hdGNoZWQsIHRoZW4gdGhlcmUgY291bGQgbmVlZHMgdG8gYmUgYXQgbGVhc3Rcblx0Ly8gMSAoYWthIGByZW1haW5pbmdPbGRDaGlsZHJlbiA+IDBgKSBjaGlsZHJlbiB0byBmaW5kIGFuZCBjb21wYXJlIGFnYWluc3QuXG5cdGxldCBzaG91bGRTZWFyY2ggPVxuXHRcdHJlbWFpbmluZ09sZENoaWxkcmVuID5cblx0XHQob2xkVk5vZGUgIT0gbnVsbCAmJiAob2xkVk5vZGUuX2ZsYWdzICYgTUFUQ0hFRCkgPT09IDAgPyAxIDogMCk7XG5cblx0aWYgKFxuXHRcdG9sZFZOb2RlID09PSBudWxsIHx8XG5cdFx0KG9sZFZOb2RlICYmXG5cdFx0XHRrZXkgPT0gb2xkVk5vZGUua2V5ICYmXG5cdFx0XHR0eXBlID09PSBvbGRWTm9kZS50eXBlICYmXG5cdFx0XHQob2xkVk5vZGUuX2ZsYWdzICYgTUFUQ0hFRCkgPT09IDApXG5cdCkge1xuXHRcdHJldHVybiBza2V3ZWRJbmRleDtcblx0fSBlbHNlIGlmIChzaG91bGRTZWFyY2gpIHtcblx0XHR3aGlsZSAoeCA+PSAwIHx8IHkgPCBvbGRDaGlsZHJlbi5sZW5ndGgpIHtcblx0XHRcdGlmICh4ID49IDApIHtcblx0XHRcdFx0b2xkVk5vZGUgPSBvbGRDaGlsZHJlblt4XTtcblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdG9sZFZOb2RlICYmXG5cdFx0XHRcdFx0KG9sZFZOb2RlLl9mbGFncyAmIE1BVENIRUQpID09PSAwICYmXG5cdFx0XHRcdFx0a2V5ID09IG9sZFZOb2RlLmtleSAmJlxuXHRcdFx0XHRcdHR5cGUgPT09IG9sZFZOb2RlLnR5cGVcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0cmV0dXJuIHg7XG5cdFx0XHRcdH1cblx0XHRcdFx0eC0tO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoeSA8IG9sZENoaWxkcmVuLmxlbmd0aCkge1xuXHRcdFx0XHRvbGRWTm9kZSA9IG9sZENoaWxkcmVuW3ldO1xuXHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0b2xkVk5vZGUgJiZcblx0XHRcdFx0XHQob2xkVk5vZGUuX2ZsYWdzICYgTUFUQ0hFRCkgPT09IDAgJiZcblx0XHRcdFx0XHRrZXkgPT0gb2xkVk5vZGUua2V5ICYmXG5cdFx0XHRcdFx0dHlwZSA9PT0gb2xkVk5vZGUudHlwZVxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRyZXR1cm4geTtcblx0XHRcdFx0fVxuXHRcdFx0XHR5Kys7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIC0xO1xufVxuIiwgImltcG9ydCB7XG5cdEVNUFRZX09CSixcblx0TU9ERV9IWURSQVRFLFxuXHRNT0RFX1NVU1BFTkRFRCxcblx0UkVTRVRfTU9ERVxufSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCwgZ2V0RG9tU2libGluZyB9IGZyb20gJy4uL2NvbXBvbmVudCc7XG5pbXBvcnQgeyBGcmFnbWVudCB9IGZyb20gJy4uL2NyZWF0ZS1lbGVtZW50JztcbmltcG9ydCB7IGRpZmZDaGlsZHJlbiB9IGZyb20gJy4vY2hpbGRyZW4nO1xuaW1wb3J0IHsgc2V0UHJvcGVydHkgfSBmcm9tICcuL3Byb3BzJztcbmltcG9ydCB7IGFzc2lnbiwgaXNBcnJheSwgcmVtb3ZlTm9kZSwgc2xpY2UgfSBmcm9tICcuLi91dGlsJztcbmltcG9ydCBvcHRpb25zIGZyb20gJy4uL29wdGlvbnMnO1xuXG4vKipcbiAqIERpZmYgdHdvIHZpcnR1YWwgbm9kZXMgYW5kIGFwcGx5IHByb3BlciBjaGFuZ2VzIHRvIHRoZSBET01cbiAqIEBwYXJhbSB7UHJlYWN0RWxlbWVudH0gcGFyZW50RG9tIFRoZSBwYXJlbnQgb2YgdGhlIERPTSBlbGVtZW50XG4gKiBAcGFyYW0ge1ZOb2RlfSBuZXdWTm9kZSBUaGUgbmV3IHZpcnR1YWwgbm9kZVxuICogQHBhcmFtIHtWTm9kZX0gb2xkVk5vZGUgVGhlIG9sZCB2aXJ0dWFsIG5vZGVcbiAqIEBwYXJhbSB7b2JqZWN0fSBnbG9iYWxDb250ZXh0IFRoZSBjdXJyZW50IGNvbnRleHQgb2JqZWN0LiBNb2RpZmllZCBieVxuICogZ2V0Q2hpbGRDb250ZXh0XG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZXNwYWNlIEN1cnJlbnQgbmFtZXNwYWNlIG9mIHRoZSBET00gbm9kZSAoSFRNTCwgU1ZHLCBvciBNYXRoTUwpXG4gKiBAcGFyYW0ge0FycmF5PFByZWFjdEVsZW1lbnQ+fSBleGNlc3NEb21DaGlsZHJlblxuICogQHBhcmFtIHtBcnJheTxDb21wb25lbnQ+fSBjb21taXRRdWV1ZSBMaXN0IG9mIGNvbXBvbmVudHMgd2hpY2ggaGF2ZSBjYWxsYmFja3NcbiAqIHRvIGludm9rZSBpbiBjb21taXRSb290XG4gKiBAcGFyYW0ge1ByZWFjdEVsZW1lbnR9IG9sZERvbSBUaGUgY3VycmVudCBhdHRhY2hlZCBET00gZWxlbWVudCBhbnkgbmV3IGRvbVxuICogZWxlbWVudHMgc2hvdWxkIGJlIHBsYWNlZCBhcm91bmQuIExpa2VseSBgbnVsbGAgb24gZmlyc3QgcmVuZGVyIChleGNlcHQgd2hlblxuICogaHlkcmF0aW5nKS4gQ2FuIGJlIGEgc2libGluZyBET00gZWxlbWVudCB3aGVuIGRpZmZpbmcgRnJhZ21lbnRzIHRoYXQgaGF2ZVxuICogc2libGluZ3MuIEluIG1vc3QgY2FzZXMsIGl0IHN0YXJ0cyBvdXQgYXMgYG9sZENoaWxkcmVuWzBdLl9kb21gLlxuICogQHBhcmFtIHtib29sZWFufSBpc0h5ZHJhdGluZyBXaGV0aGVyIG9yIG5vdCB3ZSBhcmUgaW4gaHlkcmF0aW9uXG4gKiBAcGFyYW0ge2FueVtdfSByZWZRdWV1ZSBhbiBhcnJheSBvZiBlbGVtZW50cyBuZWVkZWQgdG8gaW52b2tlIHJlZnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRpZmYoXG5cdHBhcmVudERvbSxcblx0bmV3Vk5vZGUsXG5cdG9sZFZOb2RlLFxuXHRnbG9iYWxDb250ZXh0LFxuXHRuYW1lc3BhY2UsXG5cdGV4Y2Vzc0RvbUNoaWxkcmVuLFxuXHRjb21taXRRdWV1ZSxcblx0b2xkRG9tLFxuXHRpc0h5ZHJhdGluZyxcblx0cmVmUXVldWVcbikge1xuXHQvKiogQHR5cGUge2FueX0gKi9cblx0bGV0IHRtcCxcblx0XHRuZXdUeXBlID0gbmV3Vk5vZGUudHlwZTtcblxuXHQvLyBXaGVuIHBhc3NpbmcgdGhyb3VnaCBjcmVhdGVFbGVtZW50IGl0IGFzc2lnbnMgdGhlIG9iamVjdFxuXHQvLyBjb25zdHJ1Y3RvciBhcyB1bmRlZmluZWQuIFRoaXMgdG8gcHJldmVudCBKU09OLWluamVjdGlvbi5cblx0aWYgKG5ld1ZOb2RlLmNvbnN0cnVjdG9yICE9PSB1bmRlZmluZWQpIHJldHVybiBudWxsO1xuXG5cdC8vIElmIHRoZSBwcmV2aW91cyBkaWZmIGJhaWxlZCBvdXQsIHJlc3VtZSBjcmVhdGluZy9oeWRyYXRpbmcuXG5cdGlmIChvbGRWTm9kZS5fZmxhZ3MgJiBNT0RFX1NVU1BFTkRFRCkge1xuXHRcdGlzSHlkcmF0aW5nID0gISEob2xkVk5vZGUuX2ZsYWdzICYgTU9ERV9IWURSQVRFKTtcblx0XHRvbGREb20gPSBuZXdWTm9kZS5fZG9tID0gb2xkVk5vZGUuX2RvbTtcblx0XHRleGNlc3NEb21DaGlsZHJlbiA9IFtvbGREb21dO1xuXHR9XG5cblx0aWYgKCh0bXAgPSBvcHRpb25zLl9kaWZmKSkgdG1wKG5ld1ZOb2RlKTtcblxuXHRvdXRlcjogaWYgKHR5cGVvZiBuZXdUeXBlID09ICdmdW5jdGlvbicpIHtcblx0XHR0cnkge1xuXHRcdFx0bGV0IGMsIGlzTmV3LCBvbGRQcm9wcywgb2xkU3RhdGUsIHNuYXBzaG90LCBjbGVhclByb2Nlc3NpbmdFeGNlcHRpb247XG5cdFx0XHRsZXQgbmV3UHJvcHMgPSBuZXdWTm9kZS5wcm9wcztcblx0XHRcdGNvbnN0IGlzQ2xhc3NDb21wb25lbnQgPVxuXHRcdFx0XHQncHJvdG90eXBlJyBpbiBuZXdUeXBlICYmIG5ld1R5cGUucHJvdG90eXBlLnJlbmRlcjtcblxuXHRcdFx0Ly8gTmVjZXNzYXJ5IGZvciBjcmVhdGVDb250ZXh0IGFwaS4gU2V0dGluZyB0aGlzIHByb3BlcnR5IHdpbGwgcGFzc1xuXHRcdFx0Ly8gdGhlIGNvbnRleHQgdmFsdWUgYXMgYHRoaXMuY29udGV4dGAganVzdCBmb3IgdGhpcyBjb21wb25lbnQuXG5cdFx0XHR0bXAgPSBuZXdUeXBlLmNvbnRleHRUeXBlO1xuXHRcdFx0bGV0IHByb3ZpZGVyID0gdG1wICYmIGdsb2JhbENvbnRleHRbdG1wLl9pZF07XG5cdFx0XHRsZXQgY29tcG9uZW50Q29udGV4dCA9IHRtcFxuXHRcdFx0XHQ/IHByb3ZpZGVyXG5cdFx0XHRcdFx0PyBwcm92aWRlci5wcm9wcy52YWx1ZVxuXHRcdFx0XHRcdDogdG1wLl9kZWZhdWx0VmFsdWVcblx0XHRcdFx0OiBnbG9iYWxDb250ZXh0O1xuXG5cdFx0XHQvLyBHZXQgY29tcG9uZW50IGFuZCBzZXQgaXQgdG8gYGNgXG5cdFx0XHRpZiAob2xkVk5vZGUuX2NvbXBvbmVudCkge1xuXHRcdFx0XHRjID0gbmV3Vk5vZGUuX2NvbXBvbmVudCA9IG9sZFZOb2RlLl9jb21wb25lbnQ7XG5cdFx0XHRcdGNsZWFyUHJvY2Vzc2luZ0V4Y2VwdGlvbiA9IGMuX3Byb2Nlc3NpbmdFeGNlcHRpb24gPSBjLl9wZW5kaW5nRXJyb3I7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQvLyBJbnN0YW50aWF0ZSB0aGUgbmV3IGNvbXBvbmVudFxuXHRcdFx0XHRpZiAoaXNDbGFzc0NvbXBvbmVudCkge1xuXHRcdFx0XHRcdC8vIEB0cy1leHBlY3QtZXJyb3IgVGhlIGNoZWNrIGFib3ZlIHZlcmlmaWVzIHRoYXQgbmV3VHlwZSBpcyBzdXBwb3NlIHRvIGJlIGNvbnN0cnVjdGVkXG5cdFx0XHRcdFx0bmV3Vk5vZGUuX2NvbXBvbmVudCA9IGMgPSBuZXcgbmV3VHlwZShuZXdQcm9wcywgY29tcG9uZW50Q29udGV4dCk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbmV3LWNhcFxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdC8vIEB0cy1leHBlY3QtZXJyb3IgVHJ1c3QgbWUsIENvbXBvbmVudCBpbXBsZW1lbnRzIHRoZSBpbnRlcmZhY2Ugd2Ugd2FudFxuXHRcdFx0XHRcdG5ld1ZOb2RlLl9jb21wb25lbnQgPSBjID0gbmV3IEJhc2VDb21wb25lbnQoXG5cdFx0XHRcdFx0XHRuZXdQcm9wcyxcblx0XHRcdFx0XHRcdGNvbXBvbmVudENvbnRleHRcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdGMuY29uc3RydWN0b3IgPSBuZXdUeXBlO1xuXHRcdFx0XHRcdGMucmVuZGVyID0gZG9SZW5kZXI7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKHByb3ZpZGVyKSBwcm92aWRlci5zdWIoYyk7XG5cblx0XHRcdFx0Yy5wcm9wcyA9IG5ld1Byb3BzO1xuXHRcdFx0XHRpZiAoIWMuc3RhdGUpIGMuc3RhdGUgPSB7fTtcblx0XHRcdFx0Yy5jb250ZXh0ID0gY29tcG9uZW50Q29udGV4dDtcblx0XHRcdFx0Yy5fZ2xvYmFsQ29udGV4dCA9IGdsb2JhbENvbnRleHQ7XG5cdFx0XHRcdGlzTmV3ID0gYy5fZGlydHkgPSB0cnVlO1xuXHRcdFx0XHRjLl9yZW5kZXJDYWxsYmFja3MgPSBbXTtcblx0XHRcdFx0Yy5fc3RhdGVDYWxsYmFja3MgPSBbXTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gSW52b2tlIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wc1xuXHRcdFx0aWYgKGlzQ2xhc3NDb21wb25lbnQgJiYgYy5fbmV4dFN0YXRlID09IG51bGwpIHtcblx0XHRcdFx0Yy5fbmV4dFN0YXRlID0gYy5zdGF0ZTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKGlzQ2xhc3NDb21wb25lbnQgJiYgbmV3VHlwZS5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMgIT0gbnVsbCkge1xuXHRcdFx0XHRpZiAoYy5fbmV4dFN0YXRlID09IGMuc3RhdGUpIHtcblx0XHRcdFx0XHRjLl9uZXh0U3RhdGUgPSBhc3NpZ24oe30sIGMuX25leHRTdGF0ZSk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRhc3NpZ24oXG5cdFx0XHRcdFx0Yy5fbmV4dFN0YXRlLFxuXHRcdFx0XHRcdG5ld1R5cGUuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKG5ld1Byb3BzLCBjLl9uZXh0U3RhdGUpXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cblx0XHRcdG9sZFByb3BzID0gYy5wcm9wcztcblx0XHRcdG9sZFN0YXRlID0gYy5zdGF0ZTtcblx0XHRcdGMuX3Zub2RlID0gbmV3Vk5vZGU7XG5cblx0XHRcdC8vIEludm9rZSBwcmUtcmVuZGVyIGxpZmVjeWNsZSBtZXRob2RzXG5cdFx0XHRpZiAoaXNOZXcpIHtcblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdGlzQ2xhc3NDb21wb25lbnQgJiZcblx0XHRcdFx0XHRuZXdUeXBlLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyA9PSBudWxsICYmXG5cdFx0XHRcdFx0Yy5jb21wb25lbnRXaWxsTW91bnQgIT0gbnVsbFxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRjLmNvbXBvbmVudFdpbGxNb3VudCgpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKGlzQ2xhc3NDb21wb25lbnQgJiYgYy5jb21wb25lbnREaWRNb3VudCAhPSBudWxsKSB7XG5cdFx0XHRcdFx0Yy5fcmVuZGVyQ2FsbGJhY2tzLnB1c2goYy5jb21wb25lbnREaWRNb3VudCk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHRpc0NsYXNzQ29tcG9uZW50ICYmXG5cdFx0XHRcdFx0bmV3VHlwZS5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMgPT0gbnVsbCAmJlxuXHRcdFx0XHRcdG5ld1Byb3BzICE9PSBvbGRQcm9wcyAmJlxuXHRcdFx0XHRcdGMuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyAhPSBudWxsXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdGMuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhuZXdQcm9wcywgY29tcG9uZW50Q29udGV4dCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0IWMuX2ZvcmNlICYmXG5cdFx0XHRcdFx0KChjLnNob3VsZENvbXBvbmVudFVwZGF0ZSAhPSBudWxsICYmXG5cdFx0XHRcdFx0XHRjLnNob3VsZENvbXBvbmVudFVwZGF0ZShcblx0XHRcdFx0XHRcdFx0bmV3UHJvcHMsXG5cdFx0XHRcdFx0XHRcdGMuX25leHRTdGF0ZSxcblx0XHRcdFx0XHRcdFx0Y29tcG9uZW50Q29udGV4dFxuXHRcdFx0XHRcdFx0KSA9PT0gZmFsc2UpIHx8XG5cdFx0XHRcdFx0XHRuZXdWTm9kZS5fb3JpZ2luYWwgPT09IG9sZFZOb2RlLl9vcmlnaW5hbClcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0Ly8gTW9yZSBpbmZvIGFib3V0IHRoaXMgaGVyZTogaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vSm92aURlQ3Jvb2NrL2JlYzVmMmNlOTM1NDRkMmU2MDcwZWY4ZTAwMzZlNGU4XG5cdFx0XHRcdFx0aWYgKG5ld1ZOb2RlLl9vcmlnaW5hbCAhPT0gb2xkVk5vZGUuX29yaWdpbmFsKSB7XG5cdFx0XHRcdFx0XHQvLyBXaGVuIHdlIGFyZSBkZWFsaW5nIHdpdGggYSBiYWlsIGJlY2F1c2Ugb2Ygc0NVIHdlIGhhdmUgdG8gdXBkYXRlXG5cdFx0XHRcdFx0XHQvLyB0aGUgcHJvcHMsIHN0YXRlIGFuZCBkaXJ0eS1zdGF0ZS5cblx0XHRcdFx0XHRcdC8vIHdoZW4gd2UgYXJlIGRlYWxpbmcgd2l0aCBzdHJpY3QtZXF1YWxpdHkgd2UgZG9uJ3QgYXMgdGhlIGNoaWxkIGNvdWxkIHN0aWxsXG5cdFx0XHRcdFx0XHQvLyBiZSBkaXJ0aWVkIHNlZSAjMzg4M1xuXHRcdFx0XHRcdFx0Yy5wcm9wcyA9IG5ld1Byb3BzO1xuXHRcdFx0XHRcdFx0Yy5zdGF0ZSA9IGMuX25leHRTdGF0ZTtcblx0XHRcdFx0XHRcdGMuX2RpcnR5ID0gZmFsc2U7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0bmV3Vk5vZGUuX2RvbSA9IG9sZFZOb2RlLl9kb207XG5cdFx0XHRcdFx0bmV3Vk5vZGUuX2NoaWxkcmVuID0gb2xkVk5vZGUuX2NoaWxkcmVuO1xuXHRcdFx0XHRcdG5ld1ZOb2RlLl9jaGlsZHJlbi5zb21lKHZub2RlID0+IHtcblx0XHRcdFx0XHRcdGlmICh2bm9kZSkgdm5vZGUuX3BhcmVudCA9IG5ld1ZOb2RlO1xuXHRcdFx0XHRcdH0pO1xuXG5cdFx0XHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBjLl9zdGF0ZUNhbGxiYWNrcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdFx0Yy5fcmVuZGVyQ2FsbGJhY2tzLnB1c2goYy5fc3RhdGVDYWxsYmFja3NbaV0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjLl9zdGF0ZUNhbGxiYWNrcyA9IFtdO1xuXG5cdFx0XHRcdFx0aWYgKGMuX3JlbmRlckNhbGxiYWNrcy5sZW5ndGgpIHtcblx0XHRcdFx0XHRcdGNvbW1pdFF1ZXVlLnB1c2goYyk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0YnJlYWsgb3V0ZXI7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoYy5jb21wb25lbnRXaWxsVXBkYXRlICE9IG51bGwpIHtcblx0XHRcdFx0XHRjLmNvbXBvbmVudFdpbGxVcGRhdGUobmV3UHJvcHMsIGMuX25leHRTdGF0ZSwgY29tcG9uZW50Q29udGV4dCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoaXNDbGFzc0NvbXBvbmVudCAmJiBjLmNvbXBvbmVudERpZFVwZGF0ZSAhPSBudWxsKSB7XG5cdFx0XHRcdFx0Yy5fcmVuZGVyQ2FsbGJhY2tzLnB1c2goKCkgPT4ge1xuXHRcdFx0XHRcdFx0Yy5jb21wb25lbnREaWRVcGRhdGUob2xkUHJvcHMsIG9sZFN0YXRlLCBzbmFwc2hvdCk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Yy5jb250ZXh0ID0gY29tcG9uZW50Q29udGV4dDtcblx0XHRcdGMucHJvcHMgPSBuZXdQcm9wcztcblx0XHRcdGMuX3BhcmVudERvbSA9IHBhcmVudERvbTtcblx0XHRcdGMuX2ZvcmNlID0gZmFsc2U7XG5cblx0XHRcdGxldCByZW5kZXJIb29rID0gb3B0aW9ucy5fcmVuZGVyLFxuXHRcdFx0XHRjb3VudCA9IDA7XG5cdFx0XHRpZiAoaXNDbGFzc0NvbXBvbmVudCkge1xuXHRcdFx0XHRjLnN0YXRlID0gYy5fbmV4dFN0YXRlO1xuXHRcdFx0XHRjLl9kaXJ0eSA9IGZhbHNlO1xuXG5cdFx0XHRcdGlmIChyZW5kZXJIb29rKSByZW5kZXJIb29rKG5ld1ZOb2RlKTtcblxuXHRcdFx0XHR0bXAgPSBjLnJlbmRlcihjLnByb3BzLCBjLnN0YXRlLCBjLmNvbnRleHQpO1xuXG5cdFx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgYy5fc3RhdGVDYWxsYmFja3MubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHRjLl9yZW5kZXJDYWxsYmFja3MucHVzaChjLl9zdGF0ZUNhbGxiYWNrc1tpXSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Yy5fc3RhdGVDYWxsYmFja3MgPSBbXTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGRvIHtcblx0XHRcdFx0XHRjLl9kaXJ0eSA9IGZhbHNlO1xuXHRcdFx0XHRcdGlmIChyZW5kZXJIb29rKSByZW5kZXJIb29rKG5ld1ZOb2RlKTtcblxuXHRcdFx0XHRcdHRtcCA9IGMucmVuZGVyKGMucHJvcHMsIGMuc3RhdGUsIGMuY29udGV4dCk7XG5cblx0XHRcdFx0XHQvLyBIYW5kbGUgc2V0U3RhdGUgY2FsbGVkIGluIHJlbmRlciwgc2VlICMyNTUzXG5cdFx0XHRcdFx0Yy5zdGF0ZSA9IGMuX25leHRTdGF0ZTtcblx0XHRcdFx0fSB3aGlsZSAoYy5fZGlydHkgJiYgKytjb3VudCA8IDI1KTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gSGFuZGxlIHNldFN0YXRlIGNhbGxlZCBpbiByZW5kZXIsIHNlZSAjMjU1M1xuXHRcdFx0Yy5zdGF0ZSA9IGMuX25leHRTdGF0ZTtcblxuXHRcdFx0aWYgKGMuZ2V0Q2hpbGRDb250ZXh0ICE9IG51bGwpIHtcblx0XHRcdFx0Z2xvYmFsQ29udGV4dCA9IGFzc2lnbihhc3NpZ24oe30sIGdsb2JhbENvbnRleHQpLCBjLmdldENoaWxkQ29udGV4dCgpKTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKGlzQ2xhc3NDb21wb25lbnQgJiYgIWlzTmV3ICYmIGMuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUgIT0gbnVsbCkge1xuXHRcdFx0XHRzbmFwc2hvdCA9IGMuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUob2xkUHJvcHMsIG9sZFN0YXRlKTtcblx0XHRcdH1cblxuXHRcdFx0bGV0IGlzVG9wTGV2ZWxGcmFnbWVudCA9XG5cdFx0XHRcdHRtcCAhPSBudWxsICYmIHRtcC50eXBlID09PSBGcmFnbWVudCAmJiB0bXAua2V5ID09IG51bGw7XG5cdFx0XHRsZXQgcmVuZGVyUmVzdWx0ID0gaXNUb3BMZXZlbEZyYWdtZW50ID8gdG1wLnByb3BzLmNoaWxkcmVuIDogdG1wO1xuXG5cdFx0XHRkaWZmQ2hpbGRyZW4oXG5cdFx0XHRcdHBhcmVudERvbSxcblx0XHRcdFx0aXNBcnJheShyZW5kZXJSZXN1bHQpID8gcmVuZGVyUmVzdWx0IDogW3JlbmRlclJlc3VsdF0sXG5cdFx0XHRcdG5ld1ZOb2RlLFxuXHRcdFx0XHRvbGRWTm9kZSxcblx0XHRcdFx0Z2xvYmFsQ29udGV4dCxcblx0XHRcdFx0bmFtZXNwYWNlLFxuXHRcdFx0XHRleGNlc3NEb21DaGlsZHJlbixcblx0XHRcdFx0Y29tbWl0UXVldWUsXG5cdFx0XHRcdG9sZERvbSxcblx0XHRcdFx0aXNIeWRyYXRpbmcsXG5cdFx0XHRcdHJlZlF1ZXVlXG5cdFx0XHQpO1xuXG5cdFx0XHRjLmJhc2UgPSBuZXdWTm9kZS5fZG9tO1xuXG5cdFx0XHQvLyBXZSBzdWNjZXNzZnVsbHkgcmVuZGVyZWQgdGhpcyBWTm9kZSwgdW5zZXQgYW55IHN0b3JlZCBoeWRyYXRpb24vYmFpbG91dCBzdGF0ZTpcblx0XHRcdG5ld1ZOb2RlLl9mbGFncyAmPSBSRVNFVF9NT0RFO1xuXG5cdFx0XHRpZiAoYy5fcmVuZGVyQ2FsbGJhY2tzLmxlbmd0aCkge1xuXHRcdFx0XHRjb21taXRRdWV1ZS5wdXNoKGMpO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoY2xlYXJQcm9jZXNzaW5nRXhjZXB0aW9uKSB7XG5cdFx0XHRcdGMuX3BlbmRpbmdFcnJvciA9IGMuX3Byb2Nlc3NpbmdFeGNlcHRpb24gPSBudWxsO1xuXHRcdFx0fVxuXHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdG5ld1ZOb2RlLl9vcmlnaW5hbCA9IG51bGw7XG5cdFx0XHQvLyBpZiBoeWRyYXRpbmcgb3IgY3JlYXRpbmcgaW5pdGlhbCB0cmVlLCBiYWlsb3V0IHByZXNlcnZlcyBET006XG5cdFx0XHRpZiAoaXNIeWRyYXRpbmcgfHwgZXhjZXNzRG9tQ2hpbGRyZW4gIT0gbnVsbCkge1xuXHRcdFx0XHRuZXdWTm9kZS5fZmxhZ3MgfD0gaXNIeWRyYXRpbmdcblx0XHRcdFx0XHQ/IE1PREVfSFlEUkFURSB8IE1PREVfU1VTUEVOREVEXG5cdFx0XHRcdFx0OiBNT0RFX1NVU1BFTkRFRDtcblxuXHRcdFx0XHR3aGlsZSAob2xkRG9tICYmIG9sZERvbS5ub2RlVHlwZSA9PT0gOCAmJiBvbGREb20ubmV4dFNpYmxpbmcpIHtcblx0XHRcdFx0XHRvbGREb20gPSBvbGREb20ubmV4dFNpYmxpbmc7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZXhjZXNzRG9tQ2hpbGRyZW5bZXhjZXNzRG9tQ2hpbGRyZW4uaW5kZXhPZihvbGREb20pXSA9IG51bGw7XG5cdFx0XHRcdG5ld1ZOb2RlLl9kb20gPSBvbGREb207XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRuZXdWTm9kZS5fZG9tID0gb2xkVk5vZGUuX2RvbTtcblx0XHRcdFx0bmV3Vk5vZGUuX2NoaWxkcmVuID0gb2xkVk5vZGUuX2NoaWxkcmVuO1xuXHRcdFx0fVxuXHRcdFx0b3B0aW9ucy5fY2F0Y2hFcnJvcihlLCBuZXdWTm9kZSwgb2xkVk5vZGUpO1xuXHRcdH1cblx0fSBlbHNlIGlmIChcblx0XHRleGNlc3NEb21DaGlsZHJlbiA9PSBudWxsICYmXG5cdFx0bmV3Vk5vZGUuX29yaWdpbmFsID09PSBvbGRWTm9kZS5fb3JpZ2luYWxcblx0KSB7XG5cdFx0bmV3Vk5vZGUuX2NoaWxkcmVuID0gb2xkVk5vZGUuX2NoaWxkcmVuO1xuXHRcdG5ld1ZOb2RlLl9kb20gPSBvbGRWTm9kZS5fZG9tO1xuXHR9IGVsc2Uge1xuXHRcdG5ld1ZOb2RlLl9kb20gPSBkaWZmRWxlbWVudE5vZGVzKFxuXHRcdFx0b2xkVk5vZGUuX2RvbSxcblx0XHRcdG5ld1ZOb2RlLFxuXHRcdFx0b2xkVk5vZGUsXG5cdFx0XHRnbG9iYWxDb250ZXh0LFxuXHRcdFx0bmFtZXNwYWNlLFxuXHRcdFx0ZXhjZXNzRG9tQ2hpbGRyZW4sXG5cdFx0XHRjb21taXRRdWV1ZSxcblx0XHRcdGlzSHlkcmF0aW5nLFxuXHRcdFx0cmVmUXVldWVcblx0XHQpO1xuXHR9XG5cblx0aWYgKCh0bXAgPSBvcHRpb25zLmRpZmZlZCkpIHRtcChuZXdWTm9kZSk7XG59XG5cbi8qKlxuICogQHBhcmFtIHtBcnJheTxDb21wb25lbnQ+fSBjb21taXRRdWV1ZSBMaXN0IG9mIGNvbXBvbmVudHNcbiAqIHdoaWNoIGhhdmUgY2FsbGJhY2tzIHRvIGludm9rZSBpbiBjb21taXRSb290XG4gKiBAcGFyYW0ge1ZOb2RlfSByb290XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21taXRSb290KGNvbW1pdFF1ZXVlLCByb290LCByZWZRdWV1ZSkge1xuXHRyb290Ll9uZXh0RG9tID0gdW5kZWZpbmVkO1xuXG5cdGZvciAobGV0IGkgPSAwOyBpIDwgcmVmUXVldWUubGVuZ3RoOyBpKyspIHtcblx0XHRhcHBseVJlZihyZWZRdWV1ZVtpXSwgcmVmUXVldWVbKytpXSwgcmVmUXVldWVbKytpXSk7XG5cdH1cblxuXHRpZiAob3B0aW9ucy5fY29tbWl0KSBvcHRpb25zLl9jb21taXQocm9vdCwgY29tbWl0UXVldWUpO1xuXG5cdGNvbW1pdFF1ZXVlLnNvbWUoYyA9PiB7XG5cdFx0dHJ5IHtcblx0XHRcdC8vIEB0cy1leHBlY3QtZXJyb3IgUmV1c2UgdGhlIGNvbW1pdFF1ZXVlIHZhcmlhYmxlIGhlcmUgc28gdGhlIHR5cGUgY2hhbmdlc1xuXHRcdFx0Y29tbWl0UXVldWUgPSBjLl9yZW5kZXJDYWxsYmFja3M7XG5cdFx0XHRjLl9yZW5kZXJDYWxsYmFja3MgPSBbXTtcblx0XHRcdGNvbW1pdFF1ZXVlLnNvbWUoY2IgPT4ge1xuXHRcdFx0XHQvLyBAdHMtZXhwZWN0LWVycm9yIFNlZSBhYm92ZSBjb21tZW50IG9uIGNvbW1pdFF1ZXVlXG5cdFx0XHRcdGNiLmNhbGwoYyk7XG5cdFx0XHR9KTtcblx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRvcHRpb25zLl9jYXRjaEVycm9yKGUsIGMuX3Zub2RlKTtcblx0XHR9XG5cdH0pO1xufVxuXG4vKipcbiAqIERpZmYgdHdvIHZpcnR1YWwgbm9kZXMgcmVwcmVzZW50aW5nIERPTSBlbGVtZW50XG4gKiBAcGFyYW0ge1ByZWFjdEVsZW1lbnR9IGRvbSBUaGUgRE9NIGVsZW1lbnQgcmVwcmVzZW50aW5nIHRoZSB2aXJ0dWFsIG5vZGVzXG4gKiBiZWluZyBkaWZmZWRcbiAqIEBwYXJhbSB7Vk5vZGV9IG5ld1ZOb2RlIFRoZSBuZXcgdmlydHVhbCBub2RlXG4gKiBAcGFyYW0ge1ZOb2RlfSBvbGRWTm9kZSBUaGUgb2xkIHZpcnR1YWwgbm9kZVxuICogQHBhcmFtIHtvYmplY3R9IGdsb2JhbENvbnRleHQgVGhlIGN1cnJlbnQgY29udGV4dCBvYmplY3RcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lc3BhY2UgQ3VycmVudCBuYW1lc3BhY2Ugb2YgdGhlIERPTSBub2RlIChIVE1MLCBTVkcsIG9yIE1hdGhNTClcbiAqIEBwYXJhbSB7QXJyYXk8UHJlYWN0RWxlbWVudD59IGV4Y2Vzc0RvbUNoaWxkcmVuXG4gKiBAcGFyYW0ge0FycmF5PENvbXBvbmVudD59IGNvbW1pdFF1ZXVlIExpc3Qgb2YgY29tcG9uZW50cyB3aGljaCBoYXZlIGNhbGxiYWNrc1xuICogdG8gaW52b2tlIGluIGNvbW1pdFJvb3RcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNIeWRyYXRpbmcgV2hldGhlciBvciBub3Qgd2UgYXJlIGluIGh5ZHJhdGlvblxuICogQHBhcmFtIHthbnlbXX0gcmVmUXVldWUgYW4gYXJyYXkgb2YgZWxlbWVudHMgbmVlZGVkIHRvIGludm9rZSByZWZzXG4gKiBAcmV0dXJucyB7UHJlYWN0RWxlbWVudH1cbiAqL1xuZnVuY3Rpb24gZGlmZkVsZW1lbnROb2Rlcyhcblx0ZG9tLFxuXHRuZXdWTm9kZSxcblx0b2xkVk5vZGUsXG5cdGdsb2JhbENvbnRleHQsXG5cdG5hbWVzcGFjZSxcblx0ZXhjZXNzRG9tQ2hpbGRyZW4sXG5cdGNvbW1pdFF1ZXVlLFxuXHRpc0h5ZHJhdGluZyxcblx0cmVmUXVldWVcbikge1xuXHRsZXQgb2xkUHJvcHMgPSBvbGRWTm9kZS5wcm9wcztcblx0bGV0IG5ld1Byb3BzID0gbmV3Vk5vZGUucHJvcHM7XG5cdGxldCBub2RlVHlwZSA9IC8qKiBAdHlwZSB7c3RyaW5nfSAqLyAobmV3Vk5vZGUudHlwZSk7XG5cdC8qKiBAdHlwZSB7YW55fSAqL1xuXHRsZXQgaTtcblx0LyoqIEB0eXBlIHt7IF9faHRtbD86IHN0cmluZyB9fSAqL1xuXHRsZXQgbmV3SHRtbDtcblx0LyoqIEB0eXBlIHt7IF9faHRtbD86IHN0cmluZyB9fSAqL1xuXHRsZXQgb2xkSHRtbDtcblx0LyoqIEB0eXBlIHtDb21wb25lbnRDaGlsZHJlbn0gKi9cblx0bGV0IG5ld0NoaWxkcmVuO1xuXHRsZXQgdmFsdWU7XG5cdGxldCBpbnB1dFZhbHVlO1xuXHRsZXQgY2hlY2tlZDtcblxuXHQvLyBUcmFja3MgZW50ZXJpbmcgYW5kIGV4aXRpbmcgbmFtZXNwYWNlcyB3aGVuIGRlc2NlbmRpbmcgdGhyb3VnaCB0aGUgdHJlZS5cblx0aWYgKG5vZGVUeXBlID09PSAnc3ZnJykgbmFtZXNwYWNlID0gJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJztcblx0ZWxzZSBpZiAobm9kZVR5cGUgPT09ICdtYXRoJylcblx0XHRuYW1lc3BhY2UgPSAnaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCc7XG5cdGVsc2UgaWYgKCFuYW1lc3BhY2UpIG5hbWVzcGFjZSA9ICdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJztcblxuXHRpZiAoZXhjZXNzRG9tQ2hpbGRyZW4gIT0gbnVsbCkge1xuXHRcdGZvciAoaSA9IDA7IGkgPCBleGNlc3NEb21DaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuXHRcdFx0dmFsdWUgPSBleGNlc3NEb21DaGlsZHJlbltpXTtcblxuXHRcdFx0Ly8gaWYgbmV3Vk5vZGUgbWF0Y2hlcyBhbiBlbGVtZW50IGluIGV4Y2Vzc0RvbUNoaWxkcmVuIG9yIHRoZSBgZG9tYFxuXHRcdFx0Ly8gYXJndW1lbnQgbWF0Y2hlcyBhbiBlbGVtZW50IGluIGV4Y2Vzc0RvbUNoaWxkcmVuLCByZW1vdmUgaXQgZnJvbVxuXHRcdFx0Ly8gZXhjZXNzRG9tQ2hpbGRyZW4gc28gaXQgaXNuJ3QgbGF0ZXIgcmVtb3ZlZCBpbiBkaWZmQ2hpbGRyZW5cblx0XHRcdGlmIChcblx0XHRcdFx0dmFsdWUgJiZcblx0XHRcdFx0J3NldEF0dHJpYnV0ZScgaW4gdmFsdWUgPT09ICEhbm9kZVR5cGUgJiZcblx0XHRcdFx0KG5vZGVUeXBlID8gdmFsdWUubG9jYWxOYW1lID09PSBub2RlVHlwZSA6IHZhbHVlLm5vZGVUeXBlID09PSAzKVxuXHRcdFx0KSB7XG5cdFx0XHRcdGRvbSA9IHZhbHVlO1xuXHRcdFx0XHRleGNlc3NEb21DaGlsZHJlbltpXSA9IG51bGw7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGlmIChkb20gPT0gbnVsbCkge1xuXHRcdGlmIChub2RlVHlwZSA9PT0gbnVsbCkge1xuXHRcdFx0cmV0dXJuIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG5ld1Byb3BzKTtcblx0XHR9XG5cblx0XHRkb20gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoXG5cdFx0XHRuYW1lc3BhY2UsXG5cdFx0XHRub2RlVHlwZSxcblx0XHRcdG5ld1Byb3BzLmlzICYmIG5ld1Byb3BzXG5cdFx0KTtcblxuXHRcdC8vIHdlIGFyZSBjcmVhdGluZyBhIG5ldyBub2RlLCBzbyB3ZSBjYW4gYXNzdW1lIHRoaXMgaXMgYSBuZXcgc3VidHJlZSAoaW5cblx0XHQvLyBjYXNlIHdlIGFyZSBoeWRyYXRpbmcpLCB0aGlzIGRlb3B0cyB0aGUgaHlkcmF0ZVxuXHRcdGlmIChpc0h5ZHJhdGluZykge1xuXHRcdFx0aWYgKG9wdGlvbnMuX2h5ZHJhdGlvbk1pc21hdGNoKVxuXHRcdFx0XHRvcHRpb25zLl9oeWRyYXRpb25NaXNtYXRjaChuZXdWTm9kZSwgZXhjZXNzRG9tQ2hpbGRyZW4pO1xuXHRcdFx0aXNIeWRyYXRpbmcgPSBmYWxzZTtcblx0XHR9XG5cdFx0Ly8gd2UgY3JlYXRlZCBhIG5ldyBwYXJlbnQsIHNvIG5vbmUgb2YgdGhlIHByZXZpb3VzbHkgYXR0YWNoZWQgY2hpbGRyZW4gY2FuIGJlIHJldXNlZDpcblx0XHRleGNlc3NEb21DaGlsZHJlbiA9IG51bGw7XG5cdH1cblxuXHRpZiAobm9kZVR5cGUgPT09IG51bGwpIHtcblx0XHQvLyBEdXJpbmcgaHlkcmF0aW9uLCB3ZSBzdGlsbCBoYXZlIHRvIHNwbGl0IG1lcmdlZCB0ZXh0IGZyb20gU1NSJ2QgSFRNTC5cblx0XHRpZiAob2xkUHJvcHMgIT09IG5ld1Byb3BzICYmICghaXNIeWRyYXRpbmcgfHwgZG9tLmRhdGEgIT09IG5ld1Byb3BzKSkge1xuXHRcdFx0ZG9tLmRhdGEgPSBuZXdQcm9wcztcblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0Ly8gSWYgZXhjZXNzRG9tQ2hpbGRyZW4gd2FzIG5vdCBudWxsLCByZXBvcHVsYXRlIGl0IHdpdGggdGhlIGN1cnJlbnQgZWxlbWVudCdzIGNoaWxkcmVuOlxuXHRcdGV4Y2Vzc0RvbUNoaWxkcmVuID0gZXhjZXNzRG9tQ2hpbGRyZW4gJiYgc2xpY2UuY2FsbChkb20uY2hpbGROb2Rlcyk7XG5cblx0XHRvbGRQcm9wcyA9IG9sZFZOb2RlLnByb3BzIHx8IEVNUFRZX09CSjtcblxuXHRcdC8vIElmIHdlIGFyZSBpbiBhIHNpdHVhdGlvbiB3aGVyZSB3ZSBhcmUgbm90IGh5ZHJhdGluZyBidXQgYXJlIHVzaW5nXG5cdFx0Ly8gZXhpc3RpbmcgRE9NIChlLmcuIHJlcGxhY2VOb2RlKSB3ZSBzaG91bGQgcmVhZCB0aGUgZXhpc3RpbmcgRE9NXG5cdFx0Ly8gYXR0cmlidXRlcyB0byBkaWZmIHRoZW1cblx0XHRpZiAoIWlzSHlkcmF0aW5nICYmIGV4Y2Vzc0RvbUNoaWxkcmVuICE9IG51bGwpIHtcblx0XHRcdG9sZFByb3BzID0ge307XG5cdFx0XHRmb3IgKGkgPSAwOyBpIDwgZG9tLmF0dHJpYnV0ZXMubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0dmFsdWUgPSBkb20uYXR0cmlidXRlc1tpXTtcblx0XHRcdFx0b2xkUHJvcHNbdmFsdWUubmFtZV0gPSB2YWx1ZS52YWx1ZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRmb3IgKGkgaW4gb2xkUHJvcHMpIHtcblx0XHRcdHZhbHVlID0gb2xkUHJvcHNbaV07XG5cdFx0XHRpZiAoaSA9PSAnY2hpbGRyZW4nKSB7XG5cdFx0XHR9IGVsc2UgaWYgKGkgPT0gJ2Rhbmdlcm91c2x5U2V0SW5uZXJIVE1MJykge1xuXHRcdFx0XHRvbGRIdG1sID0gdmFsdWU7XG5cdFx0XHR9IGVsc2UgaWYgKCEoaSBpbiBuZXdQcm9wcykpIHtcblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdChpID09ICd2YWx1ZScgJiYgJ2RlZmF1bHRWYWx1ZScgaW4gbmV3UHJvcHMpIHx8XG5cdFx0XHRcdFx0KGkgPT0gJ2NoZWNrZWQnICYmICdkZWZhdWx0Q2hlY2tlZCcgaW4gbmV3UHJvcHMpXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHNldFByb3BlcnR5KGRvbSwgaSwgbnVsbCwgdmFsdWUsIG5hbWVzcGFjZSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gRHVyaW5nIGh5ZHJhdGlvbiwgcHJvcHMgYXJlIG5vdCBkaWZmZWQgYXQgYWxsIChpbmNsdWRpbmcgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwpXG5cdFx0Ly8gQFRPRE8gd2Ugc2hvdWxkIHdhcm4gaW4gZGVidWcgbW9kZSB3aGVuIHByb3BzIGRvbid0IG1hdGNoIGhlcmUuXG5cdFx0Zm9yIChpIGluIG5ld1Byb3BzKSB7XG5cdFx0XHR2YWx1ZSA9IG5ld1Byb3BzW2ldO1xuXHRcdFx0aWYgKGkgPT0gJ2NoaWxkcmVuJykge1xuXHRcdFx0XHRuZXdDaGlsZHJlbiA9IHZhbHVlO1xuXHRcdFx0fSBlbHNlIGlmIChpID09ICdkYW5nZXJvdXNseVNldElubmVySFRNTCcpIHtcblx0XHRcdFx0bmV3SHRtbCA9IHZhbHVlO1xuXHRcdFx0fSBlbHNlIGlmIChpID09ICd2YWx1ZScpIHtcblx0XHRcdFx0aW5wdXRWYWx1ZSA9IHZhbHVlO1xuXHRcdFx0fSBlbHNlIGlmIChpID09ICdjaGVja2VkJykge1xuXHRcdFx0XHRjaGVja2VkID0gdmFsdWU7XG5cdFx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0XHQoIWlzSHlkcmF0aW5nIHx8IHR5cGVvZiB2YWx1ZSA9PSAnZnVuY3Rpb24nKSAmJlxuXHRcdFx0XHRvbGRQcm9wc1tpXSAhPT0gdmFsdWVcblx0XHRcdCkge1xuXHRcdFx0XHRzZXRQcm9wZXJ0eShkb20sIGksIHZhbHVlLCBvbGRQcm9wc1tpXSwgbmFtZXNwYWNlKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBJZiB0aGUgbmV3IHZub2RlIGRpZG4ndCBoYXZlIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MLCBkaWZmIGl0cyBjaGlsZHJlblxuXHRcdGlmIChuZXdIdG1sKSB7XG5cdFx0XHQvLyBBdm9pZCByZS1hcHBseWluZyB0aGUgc2FtZSAnX19odG1sJyBpZiBpdCBkaWQgbm90IGNoYW5nZWQgYmV0d2VlbiByZS1yZW5kZXJcblx0XHRcdGlmIChcblx0XHRcdFx0IWlzSHlkcmF0aW5nICYmXG5cdFx0XHRcdCghb2xkSHRtbCB8fFxuXHRcdFx0XHRcdChuZXdIdG1sLl9faHRtbCAhPT0gb2xkSHRtbC5fX2h0bWwgJiZcblx0XHRcdFx0XHRcdG5ld0h0bWwuX19odG1sICE9PSBkb20uaW5uZXJIVE1MKSlcblx0XHRcdCkge1xuXHRcdFx0XHRkb20uaW5uZXJIVE1MID0gbmV3SHRtbC5fX2h0bWw7XG5cdFx0XHR9XG5cblx0XHRcdG5ld1ZOb2RlLl9jaGlsZHJlbiA9IFtdO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRpZiAob2xkSHRtbCkgZG9tLmlubmVySFRNTCA9ICcnO1xuXG5cdFx0XHRkaWZmQ2hpbGRyZW4oXG5cdFx0XHRcdGRvbSxcblx0XHRcdFx0aXNBcnJheShuZXdDaGlsZHJlbikgPyBuZXdDaGlsZHJlbiA6IFtuZXdDaGlsZHJlbl0sXG5cdFx0XHRcdG5ld1ZOb2RlLFxuXHRcdFx0XHRvbGRWTm9kZSxcblx0XHRcdFx0Z2xvYmFsQ29udGV4dCxcblx0XHRcdFx0bm9kZVR5cGUgPT09ICdmb3JlaWduT2JqZWN0J1xuXHRcdFx0XHRcdD8gJ2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnXG5cdFx0XHRcdFx0OiBuYW1lc3BhY2UsXG5cdFx0XHRcdGV4Y2Vzc0RvbUNoaWxkcmVuLFxuXHRcdFx0XHRjb21taXRRdWV1ZSxcblx0XHRcdFx0ZXhjZXNzRG9tQ2hpbGRyZW5cblx0XHRcdFx0XHQ/IGV4Y2Vzc0RvbUNoaWxkcmVuWzBdXG5cdFx0XHRcdFx0OiBvbGRWTm9kZS5fY2hpbGRyZW4gJiYgZ2V0RG9tU2libGluZyhvbGRWTm9kZSwgMCksXG5cdFx0XHRcdGlzSHlkcmF0aW5nLFxuXHRcdFx0XHRyZWZRdWV1ZVxuXHRcdFx0KTtcblxuXHRcdFx0Ly8gUmVtb3ZlIGNoaWxkcmVuIHRoYXQgYXJlIG5vdCBwYXJ0IG9mIGFueSB2bm9kZS5cblx0XHRcdGlmIChleGNlc3NEb21DaGlsZHJlbiAhPSBudWxsKSB7XG5cdFx0XHRcdGZvciAoaSA9IGV4Y2Vzc0RvbUNoaWxkcmVuLmxlbmd0aDsgaS0tOyApIHtcblx0XHRcdFx0XHRyZW1vdmVOb2RlKGV4Y2Vzc0RvbUNoaWxkcmVuW2ldKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIEFzIGFib3ZlLCBkb24ndCBkaWZmIHByb3BzIGR1cmluZyBoeWRyYXRpb25cblx0XHRpZiAoIWlzSHlkcmF0aW5nKSB7XG5cdFx0XHRpID0gJ3ZhbHVlJztcblx0XHRcdGlmIChub2RlVHlwZSA9PT0gJ3Byb2dyZXNzJyAmJiBpbnB1dFZhbHVlID09IG51bGwpIHtcblx0XHRcdFx0ZG9tLnJlbW92ZUF0dHJpYnV0ZSgndmFsdWUnKTtcblx0XHRcdH0gZWxzZSBpZiAoXG5cdFx0XHRcdGlucHV0VmFsdWUgIT09IHVuZGVmaW5lZCAmJlxuXHRcdFx0XHQvLyAjMjc1NiBGb3IgdGhlIDxwcm9ncmVzcz4tZWxlbWVudCB0aGUgaW5pdGlhbCB2YWx1ZSBpcyAwLFxuXHRcdFx0XHQvLyBkZXNwaXRlIHRoZSBhdHRyaWJ1dGUgbm90IGJlaW5nIHByZXNlbnQuIFdoZW4gdGhlIGF0dHJpYnV0ZVxuXHRcdFx0XHQvLyBpcyBtaXNzaW5nIHRoZSBwcm9ncmVzcyBiYXIgaXMgdHJlYXRlZCBhcyBpbmRldGVybWluYXRlLlxuXHRcdFx0XHQvLyBUbyBmaXggdGhhdCB3ZSdsbCBhbHdheXMgdXBkYXRlIGl0IHdoZW4gaXQgaXMgMCBmb3IgcHJvZ3Jlc3MgZWxlbWVudHNcblx0XHRcdFx0KGlucHV0VmFsdWUgIT09IGRvbVtpXSB8fFxuXHRcdFx0XHRcdChub2RlVHlwZSA9PT0gJ3Byb2dyZXNzJyAmJiAhaW5wdXRWYWx1ZSkgfHxcblx0XHRcdFx0XHQvLyBUaGlzIGlzIG9ubHkgZm9yIElFIDExIHRvIGZpeCA8c2VsZWN0PiB2YWx1ZSBub3QgYmVpbmcgdXBkYXRlZC5cblx0XHRcdFx0XHQvLyBUbyBhdm9pZCBhIHN0YWxlIHNlbGVjdCB2YWx1ZSB3ZSBuZWVkIHRvIHNldCB0aGUgb3B0aW9uLnZhbHVlXG5cdFx0XHRcdFx0Ly8gYWdhaW4sIHdoaWNoIHRyaWdnZXJzIElFMTEgdG8gcmUtZXZhbHVhdGUgdGhlIHNlbGVjdCB2YWx1ZVxuXHRcdFx0XHRcdChub2RlVHlwZSA9PT0gJ29wdGlvbicgJiYgaW5wdXRWYWx1ZSAhPT0gb2xkUHJvcHNbaV0pKVxuXHRcdFx0KSB7XG5cdFx0XHRcdHNldFByb3BlcnR5KGRvbSwgaSwgaW5wdXRWYWx1ZSwgb2xkUHJvcHNbaV0sIG5hbWVzcGFjZSk7XG5cdFx0XHR9XG5cblx0XHRcdGkgPSAnY2hlY2tlZCc7XG5cdFx0XHRpZiAoY2hlY2tlZCAhPT0gdW5kZWZpbmVkICYmIGNoZWNrZWQgIT09IGRvbVtpXSkge1xuXHRcdFx0XHRzZXRQcm9wZXJ0eShkb20sIGksIGNoZWNrZWQsIG9sZFByb3BzW2ldLCBuYW1lc3BhY2UpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiBkb207XG59XG5cbi8qKlxuICogSW52b2tlIG9yIHVwZGF0ZSBhIHJlZiwgZGVwZW5kaW5nIG9uIHdoZXRoZXIgaXQgaXMgYSBmdW5jdGlvbiBvciBvYmplY3QgcmVmLlxuICogQHBhcmFtIHtSZWY8YW55PiAmIHsgX3VubW91bnQ/OiB1bmtub3duIH19IHJlZlxuICogQHBhcmFtIHthbnl9IHZhbHVlXG4gKiBAcGFyYW0ge1ZOb2RlfSB2bm9kZVxuICovXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlSZWYocmVmLCB2YWx1ZSwgdm5vZGUpIHtcblx0dHJ5IHtcblx0XHRpZiAodHlwZW9mIHJlZiA9PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRsZXQgaGFzUmVmVW5tb3VudCA9IHR5cGVvZiByZWYuX3VubW91bnQgPT0gJ2Z1bmN0aW9uJztcblx0XHRcdGlmIChoYXNSZWZVbm1vdW50KSB7XG5cdFx0XHRcdC8vIEB0cy1pZ25vcmUgVFMgZG9lc24ndCBsaWtlIG1vdmluZyBuYXJyb3dpbmcgY2hlY2tzIGludG8gdmFyaWFibGVzXG5cdFx0XHRcdHJlZi5fdW5tb3VudCgpO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIWhhc1JlZlVubW91bnQgfHwgdmFsdWUgIT0gbnVsbCkge1xuXHRcdFx0XHQvLyBTdG9yZSB0aGUgY2xlYW51cCBmdW5jdGlvbiBvbiB0aGUgZnVuY3Rpb25cblx0XHRcdFx0Ly8gaW5zdGFuY2Ugb2JqZWN0IGl0c2VsZiB0byBhdm9pZCBzaGFwZVxuXHRcdFx0XHQvLyB0cmFuc2l0aW9uaW5nIHZub2RlXG5cdFx0XHRcdHJlZi5fdW5tb3VudCA9IHJlZih2YWx1ZSk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHJlZi5jdXJyZW50ID0gdmFsdWU7XG5cdH0gY2F0Y2ggKGUpIHtcblx0XHRvcHRpb25zLl9jYXRjaEVycm9yKGUsIHZub2RlKTtcblx0fVxufVxuXG4vKipcbiAqIFVubW91bnQgYSB2aXJ0dWFsIG5vZGUgZnJvbSB0aGUgdHJlZSBhbmQgYXBwbHkgRE9NIGNoYW5nZXNcbiAqIEBwYXJhbSB7Vk5vZGV9IHZub2RlIFRoZSB2aXJ0dWFsIG5vZGUgdG8gdW5tb3VudFxuICogQHBhcmFtIHtWTm9kZX0gcGFyZW50Vk5vZGUgVGhlIHBhcmVudCBvZiB0aGUgVk5vZGUgdGhhdCBpbml0aWF0ZWQgdGhlIHVubW91bnRcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW3NraXBSZW1vdmVdIEZsYWcgdGhhdCBpbmRpY2F0ZXMgdGhhdCBhIHBhcmVudCBub2RlIG9mIHRoZVxuICogY3VycmVudCBlbGVtZW50IGlzIGFscmVhZHkgZGV0YWNoZWQgZnJvbSB0aGUgRE9NLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdW5tb3VudCh2bm9kZSwgcGFyZW50Vk5vZGUsIHNraXBSZW1vdmUpIHtcblx0bGV0IHI7XG5cdGlmIChvcHRpb25zLnVubW91bnQpIG9wdGlvbnMudW5tb3VudCh2bm9kZSk7XG5cblx0aWYgKChyID0gdm5vZGUucmVmKSkge1xuXHRcdGlmICghci5jdXJyZW50IHx8IHIuY3VycmVudCA9PT0gdm5vZGUuX2RvbSkge1xuXHRcdFx0YXBwbHlSZWYociwgbnVsbCwgcGFyZW50Vk5vZGUpO1xuXHRcdH1cblx0fVxuXG5cdGlmICgociA9IHZub2RlLl9jb21wb25lbnQpICE9IG51bGwpIHtcblx0XHRpZiAoci5jb21wb25lbnRXaWxsVW5tb3VudCkge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0ci5jb21wb25lbnRXaWxsVW5tb3VudCgpO1xuXHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHRvcHRpb25zLl9jYXRjaEVycm9yKGUsIHBhcmVudFZOb2RlKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyLmJhc2UgPSByLl9wYXJlbnREb20gPSBudWxsO1xuXHR9XG5cblx0aWYgKChyID0gdm5vZGUuX2NoaWxkcmVuKSkge1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgci5sZW5ndGg7IGkrKykge1xuXHRcdFx0aWYgKHJbaV0pIHtcblx0XHRcdFx0dW5tb3VudChcblx0XHRcdFx0XHRyW2ldLFxuXHRcdFx0XHRcdHBhcmVudFZOb2RlLFxuXHRcdFx0XHRcdHNraXBSZW1vdmUgfHwgdHlwZW9mIHZub2RlLnR5cGUgIT0gJ2Z1bmN0aW9uJ1xuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGlmICghc2tpcFJlbW92ZSkge1xuXHRcdHJlbW92ZU5vZGUodm5vZGUuX2RvbSk7XG5cdH1cblxuXHQvLyBNdXN0IGJlIHNldCB0byBgdW5kZWZpbmVkYCB0byBwcm9wZXJseSBjbGVhbiB1cCBgX25leHREb21gXG5cdC8vIGZvciB3aGljaCBgbnVsbGAgaXMgYSB2YWxpZCB2YWx1ZS4gU2VlIGNvbW1lbnQgaW4gYGNyZWF0ZS1lbGVtZW50LmpzYFxuXHR2bm9kZS5fY29tcG9uZW50ID0gdm5vZGUuX3BhcmVudCA9IHZub2RlLl9kb20gPSB2bm9kZS5fbmV4dERvbSA9IHVuZGVmaW5lZDtcbn1cblxuLyoqIFRoZSBgLnJlbmRlcigpYCBtZXRob2QgZm9yIGEgUEZDIGJhY2tpbmcgaW5zdGFuY2UuICovXG5mdW5jdGlvbiBkb1JlbmRlcihwcm9wcywgc3RhdGUsIGNvbnRleHQpIHtcblx0cmV0dXJuIHRoaXMuY29uc3RydWN0b3IocHJvcHMsIGNvbnRleHQpO1xufVxuIiwgImltcG9ydCB7IEVNUFRZX09CSiB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IGNvbW1pdFJvb3QsIGRpZmYgfSBmcm9tICcuL2RpZmYvaW5kZXgnO1xuaW1wb3J0IHsgY3JlYXRlRWxlbWVudCwgRnJhZ21lbnQgfSBmcm9tICcuL2NyZWF0ZS1lbGVtZW50JztcbmltcG9ydCBvcHRpb25zIGZyb20gJy4vb3B0aW9ucyc7XG5pbXBvcnQgeyBzbGljZSB9IGZyb20gJy4vdXRpbCc7XG5cbi8qKlxuICogUmVuZGVyIGEgUHJlYWN0IHZpcnR1YWwgbm9kZSBpbnRvIGEgRE9NIGVsZW1lbnRcbiAqIEBwYXJhbSB7Q29tcG9uZW50Q2hpbGR9IHZub2RlIFRoZSB2aXJ0dWFsIG5vZGUgdG8gcmVuZGVyXG4gKiBAcGFyYW0ge1ByZWFjdEVsZW1lbnR9IHBhcmVudERvbSBUaGUgRE9NIGVsZW1lbnQgdG8gcmVuZGVyIGludG9cbiAqIEBwYXJhbSB7UHJlYWN0RWxlbWVudCB8IG9iamVjdH0gW3JlcGxhY2VOb2RlXSBPcHRpb25hbDogQXR0ZW1wdCB0byByZS11c2UgYW5cbiAqIGV4aXN0aW5nIERPTSB0cmVlIHJvb3RlZCBhdCBgcmVwbGFjZU5vZGVgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXIodm5vZGUsIHBhcmVudERvbSwgcmVwbGFjZU5vZGUpIHtcblx0aWYgKG9wdGlvbnMuX3Jvb3QpIG9wdGlvbnMuX3Jvb3Qodm5vZGUsIHBhcmVudERvbSk7XG5cblx0Ly8gV2UgYWJ1c2UgdGhlIGByZXBsYWNlTm9kZWAgcGFyYW1ldGVyIGluIGBoeWRyYXRlKClgIHRvIHNpZ25hbCBpZiB3ZSBhcmUgaW5cblx0Ly8gaHlkcmF0aW9uIG1vZGUgb3Igbm90IGJ5IHBhc3NpbmcgdGhlIGBoeWRyYXRlYCBmdW5jdGlvbiBpbnN0ZWFkIG9mIGEgRE9NXG5cdC8vIGVsZW1lbnQuLlxuXHRsZXQgaXNIeWRyYXRpbmcgPSB0eXBlb2YgcmVwbGFjZU5vZGUgPT0gJ2Z1bmN0aW9uJztcblxuXHQvLyBUbyBiZSBhYmxlIHRvIHN1cHBvcnQgY2FsbGluZyBgcmVuZGVyKClgIG11bHRpcGxlIHRpbWVzIG9uIHRoZSBzYW1lXG5cdC8vIERPTSBub2RlLCB3ZSBuZWVkIHRvIG9idGFpbiBhIHJlZmVyZW5jZSB0byB0aGUgcHJldmlvdXMgdHJlZS4gV2UgZG9cblx0Ly8gdGhpcyBieSBhc3NpZ25pbmcgYSBuZXcgYF9jaGlsZHJlbmAgcHJvcGVydHkgdG8gRE9NIG5vZGVzIHdoaWNoIHBvaW50c1xuXHQvLyB0byB0aGUgbGFzdCByZW5kZXJlZCB0cmVlLiBCeSBkZWZhdWx0IHRoaXMgcHJvcGVydHkgaXMgbm90IHByZXNlbnQsIHdoaWNoXG5cdC8vIG1lYW5zIHRoYXQgd2UgYXJlIG1vdW50aW5nIGEgbmV3IHRyZWUgZm9yIHRoZSBmaXJzdCB0aW1lLlxuXHRsZXQgb2xkVk5vZGUgPSBpc0h5ZHJhdGluZ1xuXHRcdD8gbnVsbFxuXHRcdDogKHJlcGxhY2VOb2RlICYmIHJlcGxhY2VOb2RlLl9jaGlsZHJlbikgfHwgcGFyZW50RG9tLl9jaGlsZHJlbjtcblxuXHR2bm9kZSA9ICgoIWlzSHlkcmF0aW5nICYmIHJlcGxhY2VOb2RlKSB8fCBwYXJlbnREb20pLl9jaGlsZHJlbiA9XG5cdFx0Y3JlYXRlRWxlbWVudChGcmFnbWVudCwgbnVsbCwgW3Zub2RlXSk7XG5cblx0Ly8gTGlzdCBvZiBlZmZlY3RzIHRoYXQgbmVlZCB0byBiZSBjYWxsZWQgYWZ0ZXIgZGlmZmluZy5cblx0bGV0IGNvbW1pdFF1ZXVlID0gW10sXG5cdFx0cmVmUXVldWUgPSBbXTtcblx0ZGlmZihcblx0XHRwYXJlbnREb20sXG5cdFx0Ly8gRGV0ZXJtaW5lIHRoZSBuZXcgdm5vZGUgdHJlZSBhbmQgc3RvcmUgaXQgb24gdGhlIERPTSBlbGVtZW50IG9uXG5cdFx0Ly8gb3VyIGN1c3RvbSBgX2NoaWxkcmVuYCBwcm9wZXJ0eS5cblx0XHR2bm9kZSxcblx0XHRvbGRWTm9kZSB8fCBFTVBUWV9PQkosXG5cdFx0RU1QVFlfT0JKLFxuXHRcdHBhcmVudERvbS5uYW1lc3BhY2VVUkksXG5cdFx0IWlzSHlkcmF0aW5nICYmIHJlcGxhY2VOb2RlXG5cdFx0XHQ/IFtyZXBsYWNlTm9kZV1cblx0XHRcdDogb2xkVk5vZGVcblx0XHRcdFx0PyBudWxsXG5cdFx0XHRcdDogcGFyZW50RG9tLmZpcnN0Q2hpbGRcblx0XHRcdFx0XHQ/IHNsaWNlLmNhbGwocGFyZW50RG9tLmNoaWxkTm9kZXMpXG5cdFx0XHRcdFx0OiBudWxsLFxuXHRcdGNvbW1pdFF1ZXVlLFxuXHRcdCFpc0h5ZHJhdGluZyAmJiByZXBsYWNlTm9kZVxuXHRcdFx0PyByZXBsYWNlTm9kZVxuXHRcdFx0OiBvbGRWTm9kZVxuXHRcdFx0XHQ/IG9sZFZOb2RlLl9kb21cblx0XHRcdFx0OiBwYXJlbnREb20uZmlyc3RDaGlsZCxcblx0XHRpc0h5ZHJhdGluZyxcblx0XHRyZWZRdWV1ZVxuXHQpO1xuXG5cdC8vIEZsdXNoIGFsbCBxdWV1ZWQgZWZmZWN0c1xuXHRjb21taXRSb290KGNvbW1pdFF1ZXVlLCB2bm9kZSwgcmVmUXVldWUpO1xufVxuXG4vKipcbiAqIFVwZGF0ZSBhbiBleGlzdGluZyBET00gZWxlbWVudCB3aXRoIGRhdGEgZnJvbSBhIFByZWFjdCB2aXJ0dWFsIG5vZGVcbiAqIEBwYXJhbSB7Q29tcG9uZW50Q2hpbGR9IHZub2RlIFRoZSB2aXJ0dWFsIG5vZGUgdG8gcmVuZGVyXG4gKiBAcGFyYW0ge1ByZWFjdEVsZW1lbnR9IHBhcmVudERvbSBUaGUgRE9NIGVsZW1lbnQgdG8gdXBkYXRlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoeWRyYXRlKHZub2RlLCBwYXJlbnREb20pIHtcblx0cmVuZGVyKHZub2RlLCBwYXJlbnREb20sIGh5ZHJhdGUpO1xufVxuIiwgImltcG9ydCB7IGFzc2lnbiwgc2xpY2UgfSBmcm9tICcuL3V0aWwnO1xuaW1wb3J0IHsgY3JlYXRlVk5vZGUgfSBmcm9tICcuL2NyZWF0ZS1lbGVtZW50JztcblxuLyoqXG4gKiBDbG9uZXMgdGhlIGdpdmVuIFZOb2RlLCBvcHRpb25hbGx5IGFkZGluZyBhdHRyaWJ1dGVzL3Byb3BzIGFuZCByZXBsYWNpbmcgaXRzXG4gKiBjaGlsZHJlbi5cbiAqIEBwYXJhbSB7Vk5vZGV9IHZub2RlIFRoZSB2aXJ0dWFsIERPTSBlbGVtZW50IHRvIGNsb25lXG4gKiBAcGFyYW0ge29iamVjdH0gcHJvcHMgQXR0cmlidXRlcy9wcm9wcyB0byBhZGQgd2hlbiBjbG9uaW5nXG4gKiBAcGFyYW0ge0FycmF5PENvbXBvbmVudENoaWxkcmVuPn0gcmVzdCBBbnkgYWRkaXRpb25hbCBhcmd1bWVudHMgd2lsbCBiZSB1c2VkXG4gKiBhcyByZXBsYWNlbWVudCBjaGlsZHJlbi5cbiAqIEByZXR1cm5zIHtWTm9kZX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNsb25lRWxlbWVudCh2bm9kZSwgcHJvcHMsIGNoaWxkcmVuKSB7XG5cdGxldCBub3JtYWxpemVkUHJvcHMgPSBhc3NpZ24oe30sIHZub2RlLnByb3BzKSxcblx0XHRrZXksXG5cdFx0cmVmLFxuXHRcdGk7XG5cblx0bGV0IGRlZmF1bHRQcm9wcztcblxuXHRpZiAodm5vZGUudHlwZSAmJiB2bm9kZS50eXBlLmRlZmF1bHRQcm9wcykge1xuXHRcdGRlZmF1bHRQcm9wcyA9IHZub2RlLnR5cGUuZGVmYXVsdFByb3BzO1xuXHR9XG5cblx0Zm9yIChpIGluIHByb3BzKSB7XG5cdFx0aWYgKGkgPT0gJ2tleScpIGtleSA9IHByb3BzW2ldO1xuXHRcdGVsc2UgaWYgKGkgPT0gJ3JlZicpIHJlZiA9IHByb3BzW2ldO1xuXHRcdGVsc2UgaWYgKHByb3BzW2ldID09PSB1bmRlZmluZWQgJiYgZGVmYXVsdFByb3BzICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdG5vcm1hbGl6ZWRQcm9wc1tpXSA9IGRlZmF1bHRQcm9wc1tpXTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0bm9ybWFsaXplZFByb3BzW2ldID0gcHJvcHNbaV07XG5cdFx0fVxuXHR9XG5cblx0aWYgKGFyZ3VtZW50cy5sZW5ndGggPiAyKSB7XG5cdFx0bm9ybWFsaXplZFByb3BzLmNoaWxkcmVuID1cblx0XHRcdGFyZ3VtZW50cy5sZW5ndGggPiAzID8gc2xpY2UuY2FsbChhcmd1bWVudHMsIDIpIDogY2hpbGRyZW47XG5cdH1cblxuXHRyZXR1cm4gY3JlYXRlVk5vZGUoXG5cdFx0dm5vZGUudHlwZSxcblx0XHRub3JtYWxpemVkUHJvcHMsXG5cdFx0a2V5IHx8IHZub2RlLmtleSxcblx0XHRyZWYgfHwgdm5vZGUucmVmLFxuXHRcdG51bGxcblx0KTtcbn1cbiIsICIvKipcbiAqIEZpbmQgdGhlIGNsb3Nlc3QgZXJyb3IgYm91bmRhcnkgdG8gYSB0aHJvd24gZXJyb3IgYW5kIGNhbGwgaXRcbiAqIEBwYXJhbSB7b2JqZWN0fSBlcnJvciBUaGUgdGhyb3duIHZhbHVlXG4gKiBAcGFyYW0ge1ZOb2RlfSB2bm9kZSBUaGUgdm5vZGUgdGhhdCB0aHJldyB0aGUgZXJyb3IgdGhhdCB3YXMgY2F1Z2h0IChleGNlcHRcbiAqIGZvciB1bm1vdW50aW5nIHdoZW4gdGhpcyBwYXJhbWV0ZXIgaXMgdGhlIGhpZ2hlc3QgcGFyZW50IHRoYXQgd2FzIGJlaW5nXG4gKiB1bm1vdW50ZWQpXG4gKiBAcGFyYW0ge1ZOb2RlfSBbb2xkVk5vZGVdXG4gKiBAcGFyYW0ge0Vycm9ySW5mb30gW2Vycm9ySW5mb11cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIF9jYXRjaEVycm9yKGVycm9yLCB2bm9kZSwgb2xkVk5vZGUsIGVycm9ySW5mbykge1xuXHQvKiogQHR5cGUge0NvbXBvbmVudH0gKi9cblx0bGV0IGNvbXBvbmVudCxcblx0XHQvKiogQHR5cGUge0NvbXBvbmVudFR5cGV9ICovXG5cdFx0Y3Rvcixcblx0XHQvKiogQHR5cGUge2Jvb2xlYW59ICovXG5cdFx0aGFuZGxlZDtcblxuXHRmb3IgKDsgKHZub2RlID0gdm5vZGUuX3BhcmVudCk7ICkge1xuXHRcdGlmICgoY29tcG9uZW50ID0gdm5vZGUuX2NvbXBvbmVudCkgJiYgIWNvbXBvbmVudC5fcHJvY2Vzc2luZ0V4Y2VwdGlvbikge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0Y3RvciA9IGNvbXBvbmVudC5jb25zdHJ1Y3RvcjtcblxuXHRcdFx0XHRpZiAoY3RvciAmJiBjdG9yLmdldERlcml2ZWRTdGF0ZUZyb21FcnJvciAhPSBudWxsKSB7XG5cdFx0XHRcdFx0Y29tcG9uZW50LnNldFN0YXRlKGN0b3IuZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yKGVycm9yKSk7XG5cdFx0XHRcdFx0aGFuZGxlZCA9IGNvbXBvbmVudC5fZGlydHk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoY29tcG9uZW50LmNvbXBvbmVudERpZENhdGNoICE9IG51bGwpIHtcblx0XHRcdFx0XHRjb21wb25lbnQuY29tcG9uZW50RGlkQ2F0Y2goZXJyb3IsIGVycm9ySW5mbyB8fCB7fSk7XG5cdFx0XHRcdFx0aGFuZGxlZCA9IGNvbXBvbmVudC5fZGlydHk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBUaGlzIGlzIGFuIGVycm9yIGJvdW5kYXJ5LiBNYXJrIGl0IGFzIGhhdmluZyBiYWlsZWQgb3V0LCBhbmQgd2hldGhlciBpdCB3YXMgbWlkLWh5ZHJhdGlvbi5cblx0XHRcdFx0aWYgKGhhbmRsZWQpIHtcblx0XHRcdFx0XHRyZXR1cm4gKGNvbXBvbmVudC5fcGVuZGluZ0Vycm9yID0gY29tcG9uZW50KTtcblx0XHRcdFx0fVxuXHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHRlcnJvciA9IGU7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0dGhyb3cgZXJyb3I7XG59XG4iLCAiaW1wb3J0IHsgb3B0aW9ucyBhcyBfb3B0aW9ucyB9IGZyb20gJ3ByZWFjdCc7XG5cbi8qKiBAdHlwZSB7bnVtYmVyfSAqL1xubGV0IGN1cnJlbnRJbmRleDtcblxuLyoqIEB0eXBlIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5Db21wb25lbnR9ICovXG5sZXQgY3VycmVudENvbXBvbmVudDtcblxuLyoqIEB0eXBlIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5Db21wb25lbnR9ICovXG5sZXQgcHJldmlvdXNDb21wb25lbnQ7XG5cbi8qKiBAdHlwZSB7bnVtYmVyfSAqL1xubGV0IGN1cnJlbnRIb29rID0gMDtcblxuLyoqIEB0eXBlIHtBcnJheTxpbXBvcnQoJy4vaW50ZXJuYWwnKS5Db21wb25lbnQ+fSAqL1xubGV0IGFmdGVyUGFpbnRFZmZlY3RzID0gW107XG5cbi8vIENhc3QgdG8gdXNlIGludGVybmFsIE9wdGlvbnMgdHlwZVxuY29uc3Qgb3B0aW9ucyA9IC8qKiBAdHlwZSB7aW1wb3J0KCcuL2ludGVybmFsJykuT3B0aW9uc30gKi8gKF9vcHRpb25zKTtcblxubGV0IG9sZEJlZm9yZURpZmYgPSBvcHRpb25zLl9kaWZmO1xubGV0IG9sZEJlZm9yZVJlbmRlciA9IG9wdGlvbnMuX3JlbmRlcjtcbmxldCBvbGRBZnRlckRpZmYgPSBvcHRpb25zLmRpZmZlZDtcbmxldCBvbGRDb21taXQgPSBvcHRpb25zLl9jb21taXQ7XG5sZXQgb2xkQmVmb3JlVW5tb3VudCA9IG9wdGlvbnMudW5tb3VudDtcbmxldCBvbGRSb290ID0gb3B0aW9ucy5fcm9vdDtcblxuY29uc3QgUkFGX1RJTUVPVVQgPSAxMDA7XG5sZXQgcHJldlJhZjtcblxuLyoqIEB0eXBlIHsodm5vZGU6IGltcG9ydCgnLi9pbnRlcm5hbCcpLlZOb2RlKSA9PiB2b2lkfSAqL1xub3B0aW9ucy5fZGlmZiA9IHZub2RlID0+IHtcblx0Y3VycmVudENvbXBvbmVudCA9IG51bGw7XG5cdGlmIChvbGRCZWZvcmVEaWZmKSBvbGRCZWZvcmVEaWZmKHZub2RlKTtcbn07XG5cbm9wdGlvbnMuX3Jvb3QgPSAodm5vZGUsIHBhcmVudERvbSkgPT4ge1xuXHRpZiAodm5vZGUgJiYgcGFyZW50RG9tLl9jaGlsZHJlbiAmJiBwYXJlbnREb20uX2NoaWxkcmVuLl9tYXNrKSB7XG5cdFx0dm5vZGUuX21hc2sgPSBwYXJlbnREb20uX2NoaWxkcmVuLl9tYXNrO1xuXHR9XG5cblx0aWYgKG9sZFJvb3QpIG9sZFJvb3Qodm5vZGUsIHBhcmVudERvbSk7XG59O1xuXG4vKiogQHR5cGUgeyh2bm9kZTogaW1wb3J0KCcuL2ludGVybmFsJykuVk5vZGUpID0+IHZvaWR9ICovXG5vcHRpb25zLl9yZW5kZXIgPSB2bm9kZSA9PiB7XG5cdGlmIChvbGRCZWZvcmVSZW5kZXIpIG9sZEJlZm9yZVJlbmRlcih2bm9kZSk7XG5cblx0Y3VycmVudENvbXBvbmVudCA9IHZub2RlLl9jb21wb25lbnQ7XG5cdGN1cnJlbnRJbmRleCA9IDA7XG5cblx0Y29uc3QgaG9va3MgPSBjdXJyZW50Q29tcG9uZW50Ll9faG9va3M7XG5cdGlmIChob29rcykge1xuXHRcdGlmIChwcmV2aW91c0NvbXBvbmVudCA9PT0gY3VycmVudENvbXBvbmVudCkge1xuXHRcdFx0aG9va3MuX3BlbmRpbmdFZmZlY3RzID0gW107XG5cdFx0XHRjdXJyZW50Q29tcG9uZW50Ll9yZW5kZXJDYWxsYmFja3MgPSBbXTtcblx0XHRcdGhvb2tzLl9saXN0LmZvckVhY2goaG9va0l0ZW0gPT4ge1xuXHRcdFx0XHRpZiAoaG9va0l0ZW0uX25leHRWYWx1ZSkge1xuXHRcdFx0XHRcdGhvb2tJdGVtLl92YWx1ZSA9IGhvb2tJdGVtLl9uZXh0VmFsdWU7XG5cdFx0XHRcdH1cblx0XHRcdFx0aG9va0l0ZW0uX3BlbmRpbmdBcmdzID0gaG9va0l0ZW0uX25leHRWYWx1ZSA9IHVuZGVmaW5lZDtcblx0XHRcdH0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRob29rcy5fcGVuZGluZ0VmZmVjdHMuZm9yRWFjaChpbnZva2VDbGVhbnVwKTtcblx0XHRcdGhvb2tzLl9wZW5kaW5nRWZmZWN0cy5mb3JFYWNoKGludm9rZUVmZmVjdCk7XG5cdFx0XHRob29rcy5fcGVuZGluZ0VmZmVjdHMgPSBbXTtcblx0XHRcdGN1cnJlbnRJbmRleCA9IDA7XG5cdFx0fVxuXHR9XG5cdHByZXZpb3VzQ29tcG9uZW50ID0gY3VycmVudENvbXBvbmVudDtcbn07XG5cbi8qKiBAdHlwZSB7KHZub2RlOiBpbXBvcnQoJy4vaW50ZXJuYWwnKS5WTm9kZSkgPT4gdm9pZH0gKi9cbm9wdGlvbnMuZGlmZmVkID0gdm5vZGUgPT4ge1xuXHRpZiAob2xkQWZ0ZXJEaWZmKSBvbGRBZnRlckRpZmYodm5vZGUpO1xuXG5cdGNvbnN0IGMgPSB2bm9kZS5fY29tcG9uZW50O1xuXHRpZiAoYyAmJiBjLl9faG9va3MpIHtcblx0XHRpZiAoYy5fX2hvb2tzLl9wZW5kaW5nRWZmZWN0cy5sZW5ndGgpIGFmdGVyUGFpbnQoYWZ0ZXJQYWludEVmZmVjdHMucHVzaChjKSk7XG5cdFx0Yy5fX2hvb2tzLl9saXN0LmZvckVhY2goaG9va0l0ZW0gPT4ge1xuXHRcdFx0aWYgKGhvb2tJdGVtLl9wZW5kaW5nQXJncykge1xuXHRcdFx0XHRob29rSXRlbS5fYXJncyA9IGhvb2tJdGVtLl9wZW5kaW5nQXJncztcblx0XHRcdH1cblx0XHRcdGhvb2tJdGVtLl9wZW5kaW5nQXJncyA9IHVuZGVmaW5lZDtcblx0XHR9KTtcblx0fVxuXHRwcmV2aW91c0NvbXBvbmVudCA9IGN1cnJlbnRDb21wb25lbnQgPSBudWxsO1xufTtcblxuLy8gVE9ETzogSW1wcm92ZSB0eXBpbmcgb2YgY29tbWl0UXVldWUgcGFyYW1ldGVyXG4vKiogQHR5cGUgeyh2bm9kZTogaW1wb3J0KCcuL2ludGVybmFsJykuVk5vZGUsIGNvbW1pdFF1ZXVlOiBhbnkpID0+IHZvaWR9ICovXG5vcHRpb25zLl9jb21taXQgPSAodm5vZGUsIGNvbW1pdFF1ZXVlKSA9PiB7XG5cdGNvbW1pdFF1ZXVlLnNvbWUoY29tcG9uZW50ID0+IHtcblx0XHR0cnkge1xuXHRcdFx0Y29tcG9uZW50Ll9yZW5kZXJDYWxsYmFja3MuZm9yRWFjaChpbnZva2VDbGVhbnVwKTtcblx0XHRcdGNvbXBvbmVudC5fcmVuZGVyQ2FsbGJhY2tzID0gY29tcG9uZW50Ll9yZW5kZXJDYWxsYmFja3MuZmlsdGVyKGNiID0+XG5cdFx0XHRcdGNiLl92YWx1ZSA/IGludm9rZUVmZmVjdChjYikgOiB0cnVlXG5cdFx0XHQpO1xuXHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdGNvbW1pdFF1ZXVlLnNvbWUoYyA9PiB7XG5cdFx0XHRcdGlmIChjLl9yZW5kZXJDYWxsYmFja3MpIGMuX3JlbmRlckNhbGxiYWNrcyA9IFtdO1xuXHRcdFx0fSk7XG5cdFx0XHRjb21taXRRdWV1ZSA9IFtdO1xuXHRcdFx0b3B0aW9ucy5fY2F0Y2hFcnJvcihlLCBjb21wb25lbnQuX3Zub2RlKTtcblx0XHR9XG5cdH0pO1xuXG5cdGlmIChvbGRDb21taXQpIG9sZENvbW1pdCh2bm9kZSwgY29tbWl0UXVldWUpO1xufTtcblxuLyoqIEB0eXBlIHsodm5vZGU6IGltcG9ydCgnLi9pbnRlcm5hbCcpLlZOb2RlKSA9PiB2b2lkfSAqL1xub3B0aW9ucy51bm1vdW50ID0gdm5vZGUgPT4ge1xuXHRpZiAob2xkQmVmb3JlVW5tb3VudCkgb2xkQmVmb3JlVW5tb3VudCh2bm9kZSk7XG5cblx0Y29uc3QgYyA9IHZub2RlLl9jb21wb25lbnQ7XG5cdGlmIChjICYmIGMuX19ob29rcykge1xuXHRcdGxldCBoYXNFcnJvcmVkO1xuXHRcdGMuX19ob29rcy5fbGlzdC5mb3JFYWNoKHMgPT4ge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0aW52b2tlQ2xlYW51cChzKTtcblx0XHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdFx0aGFzRXJyb3JlZCA9IGU7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0Yy5fX2hvb2tzID0gdW5kZWZpbmVkO1xuXHRcdGlmIChoYXNFcnJvcmVkKSBvcHRpb25zLl9jYXRjaEVycm9yKGhhc0Vycm9yZWQsIGMuX3Zub2RlKTtcblx0fVxufTtcblxuLyoqXG4gKiBHZXQgYSBob29rJ3Mgc3RhdGUgZnJvbSB0aGUgY3VycmVudENvbXBvbmVudFxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IFRoZSBpbmRleCBvZiB0aGUgaG9vayB0byBnZXRcbiAqIEBwYXJhbSB7bnVtYmVyfSB0eXBlIFRoZSBpbmRleCBvZiB0aGUgaG9vayB0byBnZXRcbiAqIEByZXR1cm5zIHthbnl9XG4gKi9cbmZ1bmN0aW9uIGdldEhvb2tTdGF0ZShpbmRleCwgdHlwZSkge1xuXHRpZiAob3B0aW9ucy5faG9vaykge1xuXHRcdG9wdGlvbnMuX2hvb2soY3VycmVudENvbXBvbmVudCwgaW5kZXgsIGN1cnJlbnRIb29rIHx8IHR5cGUpO1xuXHR9XG5cdGN1cnJlbnRIb29rID0gMDtcblxuXHQvLyBMYXJnZWx5IGluc3BpcmVkIGJ5OlxuXHQvLyAqIGh0dHBzOi8vZ2l0aHViLmNvbS9taWNoYWVsLWtsZWluL2Z1bmN5LmpzL2Jsb2IvZjZiZTczNDY4ZTZlYzQ2YjBmZjVhYTNjYzRjOWJhZjcyYTI5MDI1YS9zcmMvaG9va3MvY29yZV9ob29rcy5tanNcblx0Ly8gKiBodHRwczovL2dpdGh1Yi5jb20vbWljaGFlbC1rbGVpbi9mdW5jeS5qcy9ibG9iLzY1MGJlYWE1OGM0M2MzM2E3NDgyMGEzYzk4YjNjNzA3OWNmMmUzMzMvc3JjL3JlbmRlcmVyLm1qc1xuXHQvLyBPdGhlciBpbXBsZW1lbnRhdGlvbnMgdG8gbG9vayBhdDpcblx0Ly8gKiBodHRwczovL2NvZGVzYW5kYm94LmlvL3MvbW5veDA1cXA4XG5cdGNvbnN0IGhvb2tzID1cblx0XHRjdXJyZW50Q29tcG9uZW50Ll9faG9va3MgfHxcblx0XHQoY3VycmVudENvbXBvbmVudC5fX2hvb2tzID0ge1xuXHRcdFx0X2xpc3Q6IFtdLFxuXHRcdFx0X3BlbmRpbmdFZmZlY3RzOiBbXVxuXHRcdH0pO1xuXG5cdGlmIChpbmRleCA+PSBob29rcy5fbGlzdC5sZW5ndGgpIHtcblx0XHRob29rcy5fbGlzdC5wdXNoKHt9KTtcblx0fVxuXG5cdHJldHVybiBob29rcy5fbGlzdFtpbmRleF07XG59XG5cbi8qKlxuICogQHRlbXBsYXRlIHt1bmtub3dufSBTXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi9pbmRleCcpLkRpc3BhdGNoPGltcG9ydCgnLi9pbmRleCcpLlN0YXRlVXBkYXRlcjxTPj59IFtpbml0aWFsU3RhdGVdXG4gKiBAcmV0dXJucyB7W1MsIChzdGF0ZTogUykgPT4gdm9pZF19XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VTdGF0ZShpbml0aWFsU3RhdGUpIHtcblx0Y3VycmVudEhvb2sgPSAxO1xuXHRyZXR1cm4gdXNlUmVkdWNlcihpbnZva2VPclJldHVybiwgaW5pdGlhbFN0YXRlKTtcbn1cblxuLyoqXG4gKiBAdGVtcGxhdGUge3Vua25vd259IFNcbiAqIEB0ZW1wbGF0ZSB7dW5rbm93bn0gQVxuICogQHBhcmFtIHtpbXBvcnQoJy4vaW5kZXgnKS5SZWR1Y2VyPFMsIEE+fSByZWR1Y2VyXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi9pbmRleCcpLkRpc3BhdGNoPGltcG9ydCgnLi9pbmRleCcpLlN0YXRlVXBkYXRlcjxTPj59IGluaXRpYWxTdGF0ZVxuICogQHBhcmFtIHsoaW5pdGlhbFN0YXRlOiBhbnkpID0+IHZvaWR9IFtpbml0XVxuICogQHJldHVybnMge1sgUywgKHN0YXRlOiBTKSA9PiB2b2lkIF19XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VSZWR1Y2VyKHJlZHVjZXIsIGluaXRpYWxTdGF0ZSwgaW5pdCkge1xuXHQvKiogQHR5cGUge2ltcG9ydCgnLi9pbnRlcm5hbCcpLlJlZHVjZXJIb29rU3RhdGV9ICovXG5cdGNvbnN0IGhvb2tTdGF0ZSA9IGdldEhvb2tTdGF0ZShjdXJyZW50SW5kZXgrKywgMik7XG5cdGhvb2tTdGF0ZS5fcmVkdWNlciA9IHJlZHVjZXI7XG5cdGlmICghaG9va1N0YXRlLl9jb21wb25lbnQpIHtcblx0XHRob29rU3RhdGUuX3ZhbHVlID0gW1xuXHRcdFx0IWluaXQgPyBpbnZva2VPclJldHVybih1bmRlZmluZWQsIGluaXRpYWxTdGF0ZSkgOiBpbml0KGluaXRpYWxTdGF0ZSksXG5cblx0XHRcdGFjdGlvbiA9PiB7XG5cdFx0XHRcdGNvbnN0IGN1cnJlbnRWYWx1ZSA9IGhvb2tTdGF0ZS5fbmV4dFZhbHVlXG5cdFx0XHRcdFx0PyBob29rU3RhdGUuX25leHRWYWx1ZVswXVxuXHRcdFx0XHRcdDogaG9va1N0YXRlLl92YWx1ZVswXTtcblx0XHRcdFx0Y29uc3QgbmV4dFZhbHVlID0gaG9va1N0YXRlLl9yZWR1Y2VyKGN1cnJlbnRWYWx1ZSwgYWN0aW9uKTtcblxuXHRcdFx0XHRpZiAoY3VycmVudFZhbHVlICE9PSBuZXh0VmFsdWUpIHtcblx0XHRcdFx0XHRob29rU3RhdGUuX25leHRWYWx1ZSA9IFtuZXh0VmFsdWUsIGhvb2tTdGF0ZS5fdmFsdWVbMV1dO1xuXHRcdFx0XHRcdGhvb2tTdGF0ZS5fY29tcG9uZW50LnNldFN0YXRlKHt9KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdF07XG5cblx0XHRob29rU3RhdGUuX2NvbXBvbmVudCA9IGN1cnJlbnRDb21wb25lbnQ7XG5cblx0XHRpZiAoIWN1cnJlbnRDb21wb25lbnQuX2hhc1NjdUZyb21Ib29rcykge1xuXHRcdFx0Y3VycmVudENvbXBvbmVudC5faGFzU2N1RnJvbUhvb2tzID0gdHJ1ZTtcblx0XHRcdGxldCBwcmV2U2N1ID0gY3VycmVudENvbXBvbmVudC5zaG91bGRDb21wb25lbnRVcGRhdGU7XG5cdFx0XHRjb25zdCBwcmV2Q1dVID0gY3VycmVudENvbXBvbmVudC5jb21wb25lbnRXaWxsVXBkYXRlO1xuXG5cdFx0XHQvLyBJZiB3ZSdyZSBkZWFsaW5nIHdpdGggYSBmb3JjZWQgdXBkYXRlIGBzaG91bGRDb21wb25lbnRVcGRhdGVgIHdpbGxcblx0XHRcdC8vIG5vdCBiZSBjYWxsZWQuIEJ1dCB3ZSB1c2UgdGhhdCB0byB1cGRhdGUgdGhlIGhvb2sgdmFsdWVzLCBzbyB3ZVxuXHRcdFx0Ly8gbmVlZCB0byBjYWxsIGl0LlxuXHRcdFx0Y3VycmVudENvbXBvbmVudC5jb21wb25lbnRXaWxsVXBkYXRlID0gZnVuY3Rpb24gKHAsIHMsIGMpIHtcblx0XHRcdFx0aWYgKHRoaXMuX2ZvcmNlKSB7XG5cdFx0XHRcdFx0bGV0IHRtcCA9IHByZXZTY3U7XG5cdFx0XHRcdFx0Ly8gQ2xlYXIgdG8gYXZvaWQgb3RoZXIgc0NVIGhvb2tzIGZyb20gYmVpbmcgY2FsbGVkXG5cdFx0XHRcdFx0cHJldlNjdSA9IHVuZGVmaW5lZDtcblx0XHRcdFx0XHR1cGRhdGVIb29rU3RhdGUocCwgcywgYyk7XG5cdFx0XHRcdFx0cHJldlNjdSA9IHRtcDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChwcmV2Q1dVKSBwcmV2Q1dVLmNhbGwodGhpcywgcCwgcywgYyk7XG5cdFx0XHR9O1xuXG5cdFx0XHQvLyBUaGlzIFNDVSBoYXMgdGhlIHB1cnBvc2Ugb2YgYmFpbGluZyBvdXQgYWZ0ZXIgcmVwZWF0ZWQgdXBkYXRlc1xuXHRcdFx0Ly8gdG8gc3RhdGVmdWwgaG9va3MuXG5cdFx0XHQvLyB3ZSBzdG9yZSB0aGUgbmV4dCB2YWx1ZSBpbiBfbmV4dFZhbHVlWzBdIGFuZCBrZWVwIGRvaW5nIHRoYXQgZm9yIGFsbFxuXHRcdFx0Ly8gc3RhdGUgc2V0dGVycywgaWYgd2UgaGF2ZSBuZXh0IHN0YXRlcyBhbmRcblx0XHRcdC8vIGFsbCBuZXh0IHN0YXRlcyB3aXRoaW4gYSBjb21wb25lbnQgZW5kIHVwIGJlaW5nIGVxdWFsIHRvIHRoZWlyIG9yaWdpbmFsIHN0YXRlXG5cdFx0XHQvLyB3ZSBhcmUgc2FmZSB0byBiYWlsIG91dCBmb3IgdGhpcyBzcGVjaWZpYyBjb21wb25lbnQuXG5cdFx0XHQvKipcblx0XHRcdCAqXG5cdFx0XHQgKiBAdHlwZSB7aW1wb3J0KCcuL2ludGVybmFsJykuQ29tcG9uZW50W1wic2hvdWxkQ29tcG9uZW50VXBkYXRlXCJdfVxuXHRcdFx0ICovXG5cdFx0XHQvLyBAdHMtaWdub3JlIC0gV2UgZG9uJ3QgdXNlIFRTIHRvIGRvd250cmFuc3BpbGVcblx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1pbm5lci1kZWNsYXJhdGlvbnNcblx0XHRcdGZ1bmN0aW9uIHVwZGF0ZUhvb2tTdGF0ZShwLCBzLCBjKSB7XG5cdFx0XHRcdGlmICghaG9va1N0YXRlLl9jb21wb25lbnQuX19ob29rcykgcmV0dXJuIHRydWU7XG5cblx0XHRcdFx0LyoqIEB0eXBlIHsoeDogaW1wb3J0KCcuL2ludGVybmFsJykuSG9va1N0YXRlKSA9PiB4IGlzIGltcG9ydCgnLi9pbnRlcm5hbCcpLlJlZHVjZXJIb29rU3RhdGV9ICovXG5cdFx0XHRcdGNvbnN0IGlzU3RhdGVIb29rID0geCA9PiAhIXguX2NvbXBvbmVudDtcblx0XHRcdFx0Y29uc3Qgc3RhdGVIb29rcyA9XG5cdFx0XHRcdFx0aG9va1N0YXRlLl9jb21wb25lbnQuX19ob29rcy5fbGlzdC5maWx0ZXIoaXNTdGF0ZUhvb2spO1xuXG5cdFx0XHRcdGNvbnN0IGFsbEhvb2tzRW1wdHkgPSBzdGF0ZUhvb2tzLmV2ZXJ5KHggPT4gIXguX25leHRWYWx1ZSk7XG5cdFx0XHRcdC8vIFdoZW4gd2UgaGF2ZSBubyB1cGRhdGVkIGhvb2tzIGluIHRoZSBjb21wb25lbnQgd2UgaW52b2tlIHRoZSBwcmV2aW91cyBTQ1Ugb3Jcblx0XHRcdFx0Ly8gdHJhdmVyc2UgdGhlIFZET00gdHJlZSBmdXJ0aGVyLlxuXHRcdFx0XHRpZiAoYWxsSG9va3NFbXB0eSkge1xuXHRcdFx0XHRcdHJldHVybiBwcmV2U2N1ID8gcHJldlNjdS5jYWxsKHRoaXMsIHAsIHMsIGMpIDogdHJ1ZTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFdlIGNoZWNrIHdoZXRoZXIgd2UgaGF2ZSBjb21wb25lbnRzIHdpdGggYSBuZXh0VmFsdWUgc2V0IHRoYXRcblx0XHRcdFx0Ly8gaGF2ZSB2YWx1ZXMgdGhhdCBhcmVuJ3QgZXF1YWwgdG8gb25lIGFub3RoZXIgdGhpcyBwdXNoZXNcblx0XHRcdFx0Ly8gdXMgdG8gdXBkYXRlIGZ1cnRoZXIgZG93biB0aGUgdHJlZVxuXHRcdFx0XHRsZXQgc2hvdWxkVXBkYXRlID0gZmFsc2U7XG5cdFx0XHRcdHN0YXRlSG9va3MuZm9yRWFjaChob29rSXRlbSA9PiB7XG5cdFx0XHRcdFx0aWYgKGhvb2tJdGVtLl9uZXh0VmFsdWUpIHtcblx0XHRcdFx0XHRcdGNvbnN0IGN1cnJlbnRWYWx1ZSA9IGhvb2tJdGVtLl92YWx1ZVswXTtcblx0XHRcdFx0XHRcdGhvb2tJdGVtLl92YWx1ZSA9IGhvb2tJdGVtLl9uZXh0VmFsdWU7XG5cdFx0XHRcdFx0XHRob29rSXRlbS5fbmV4dFZhbHVlID0gdW5kZWZpbmVkO1xuXHRcdFx0XHRcdFx0aWYgKGN1cnJlbnRWYWx1ZSAhPT0gaG9va0l0ZW0uX3ZhbHVlWzBdKSBzaG91bGRVcGRhdGUgPSB0cnVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cblx0XHRcdFx0cmV0dXJuIHNob3VsZFVwZGF0ZSB8fCBob29rU3RhdGUuX2NvbXBvbmVudC5wcm9wcyAhPT0gcFxuXHRcdFx0XHRcdD8gcHJldlNjdVxuXHRcdFx0XHRcdFx0PyBwcmV2U2N1LmNhbGwodGhpcywgcCwgcywgYylcblx0XHRcdFx0XHRcdDogdHJ1ZVxuXHRcdFx0XHRcdDogZmFsc2U7XG5cdFx0XHR9XG5cblx0XHRcdGN1cnJlbnRDb21wb25lbnQuc2hvdWxkQ29tcG9uZW50VXBkYXRlID0gdXBkYXRlSG9va1N0YXRlO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiBob29rU3RhdGUuX25leHRWYWx1ZSB8fCBob29rU3RhdGUuX3ZhbHVlO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7aW1wb3J0KCcuL2ludGVybmFsJykuRWZmZWN0fSBjYWxsYmFja1xuICogQHBhcmFtIHt1bmtub3duW119IGFyZ3NcbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlRWZmZWN0KGNhbGxiYWNrLCBhcmdzKSB7XG5cdC8qKiBAdHlwZSB7aW1wb3J0KCcuL2ludGVybmFsJykuRWZmZWN0SG9va1N0YXRlfSAqL1xuXHRjb25zdCBzdGF0ZSA9IGdldEhvb2tTdGF0ZShjdXJyZW50SW5kZXgrKywgMyk7XG5cdGlmICghb3B0aW9ucy5fc2tpcEVmZmVjdHMgJiYgYXJnc0NoYW5nZWQoc3RhdGUuX2FyZ3MsIGFyZ3MpKSB7XG5cdFx0c3RhdGUuX3ZhbHVlID0gY2FsbGJhY2s7XG5cdFx0c3RhdGUuX3BlbmRpbmdBcmdzID0gYXJncztcblxuXHRcdGN1cnJlbnRDb21wb25lbnQuX19ob29rcy5fcGVuZGluZ0VmZmVjdHMucHVzaChzdGF0ZSk7XG5cdH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi9pbnRlcm5hbCcpLkVmZmVjdH0gY2FsbGJhY2tcbiAqIEBwYXJhbSB7dW5rbm93bltdfSBhcmdzXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUxheW91dEVmZmVjdChjYWxsYmFjaywgYXJncykge1xuXHQvKiogQHR5cGUge2ltcG9ydCgnLi9pbnRlcm5hbCcpLkVmZmVjdEhvb2tTdGF0ZX0gKi9cblx0Y29uc3Qgc3RhdGUgPSBnZXRIb29rU3RhdGUoY3VycmVudEluZGV4KyssIDQpO1xuXHRpZiAoIW9wdGlvbnMuX3NraXBFZmZlY3RzICYmIGFyZ3NDaGFuZ2VkKHN0YXRlLl9hcmdzLCBhcmdzKSkge1xuXHRcdHN0YXRlLl92YWx1ZSA9IGNhbGxiYWNrO1xuXHRcdHN0YXRlLl9wZW5kaW5nQXJncyA9IGFyZ3M7XG5cblx0XHRjdXJyZW50Q29tcG9uZW50Ll9yZW5kZXJDYWxsYmFja3MucHVzaChzdGF0ZSk7XG5cdH1cbn1cblxuLyoqIEB0eXBlIHsoaW5pdGlhbFZhbHVlOiB1bmtub3duKSA9PiB1bmtub3dufSAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVJlZihpbml0aWFsVmFsdWUpIHtcblx0Y3VycmVudEhvb2sgPSA1O1xuXHRyZXR1cm4gdXNlTWVtbygoKSA9PiAoeyBjdXJyZW50OiBpbml0aWFsVmFsdWUgfSksIFtdKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdH0gcmVmXG4gKiBAcGFyYW0geygpID0+IG9iamVjdH0gY3JlYXRlSGFuZGxlXG4gKiBAcGFyYW0ge3Vua25vd25bXX0gYXJnc1xuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VJbXBlcmF0aXZlSGFuZGxlKHJlZiwgY3JlYXRlSGFuZGxlLCBhcmdzKSB7XG5cdGN1cnJlbnRIb29rID0gNjtcblx0dXNlTGF5b3V0RWZmZWN0KFxuXHRcdCgpID0+IHtcblx0XHRcdGlmICh0eXBlb2YgcmVmID09ICdmdW5jdGlvbicpIHtcblx0XHRcdFx0cmVmKGNyZWF0ZUhhbmRsZSgpKTtcblx0XHRcdFx0cmV0dXJuICgpID0+IHJlZihudWxsKTtcblx0XHRcdH0gZWxzZSBpZiAocmVmKSB7XG5cdFx0XHRcdHJlZi5jdXJyZW50ID0gY3JlYXRlSGFuZGxlKCk7XG5cdFx0XHRcdHJldHVybiAoKSA9PiAocmVmLmN1cnJlbnQgPSBudWxsKTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdGFyZ3MgPT0gbnVsbCA/IGFyZ3MgOiBhcmdzLmNvbmNhdChyZWYpXG5cdCk7XG59XG5cbi8qKlxuICogQHRlbXBsYXRlIHt1bmtub3dufSBUXG4gKiBAcGFyYW0geygpID0+IFR9IGZhY3RvcnlcbiAqIEBwYXJhbSB7dW5rbm93bltdfSBhcmdzXG4gKiBAcmV0dXJucyB7VH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZU1lbW8oZmFjdG9yeSwgYXJncykge1xuXHQvKiogQHR5cGUge2ltcG9ydCgnLi9pbnRlcm5hbCcpLk1lbW9Ib29rU3RhdGU8VD59ICovXG5cdGNvbnN0IHN0YXRlID0gZ2V0SG9va1N0YXRlKGN1cnJlbnRJbmRleCsrLCA3KTtcblx0aWYgKGFyZ3NDaGFuZ2VkKHN0YXRlLl9hcmdzLCBhcmdzKSkge1xuXHRcdHN0YXRlLl92YWx1ZSA9IGZhY3RvcnkoKTtcblx0XHRzdGF0ZS5fYXJncyA9IGFyZ3M7XG5cdFx0c3RhdGUuX2ZhY3RvcnkgPSBmYWN0b3J5O1xuXHR9XG5cblx0cmV0dXJuIHN0YXRlLl92YWx1ZTtcbn1cblxuLyoqXG4gKiBAcGFyYW0geygpID0+IHZvaWR9IGNhbGxiYWNrXG4gKiBAcGFyYW0ge3Vua25vd25bXX0gYXJnc1xuICogQHJldHVybnMgeygpID0+IHZvaWR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VDYWxsYmFjayhjYWxsYmFjaywgYXJncykge1xuXHRjdXJyZW50SG9vayA9IDg7XG5cdHJldHVybiB1c2VNZW1vKCgpID0+IGNhbGxiYWNrLCBhcmdzKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi9pbnRlcm5hbCcpLlByZWFjdENvbnRleHR9IGNvbnRleHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUNvbnRleHQoY29udGV4dCkge1xuXHRjb25zdCBwcm92aWRlciA9IGN1cnJlbnRDb21wb25lbnQuY29udGV4dFtjb250ZXh0Ll9pZF07XG5cdC8vIFdlIGNvdWxkIHNraXAgdGhpcyBjYWxsIGhlcmUsIGJ1dCB0aGFuIHdlJ2Qgbm90IGNhbGxcblx0Ly8gYG9wdGlvbnMuX2hvb2tgLiBXZSBuZWVkIHRvIGRvIHRoYXQgaW4gb3JkZXIgdG8gbWFrZVxuXHQvLyB0aGUgZGV2dG9vbHMgYXdhcmUgb2YgdGhpcyBob29rLlxuXHQvKiogQHR5cGUge2ltcG9ydCgnLi9pbnRlcm5hbCcpLkNvbnRleHRIb29rU3RhdGV9ICovXG5cdGNvbnN0IHN0YXRlID0gZ2V0SG9va1N0YXRlKGN1cnJlbnRJbmRleCsrLCA5KTtcblx0Ly8gVGhlIGRldnRvb2xzIG5lZWRzIGFjY2VzcyB0byB0aGUgY29udGV4dCBvYmplY3QgdG9cblx0Ly8gYmUgYWJsZSB0byBwdWxsIG9mIHRoZSBkZWZhdWx0IHZhbHVlIHdoZW4gbm8gcHJvdmlkZXJcblx0Ly8gaXMgcHJlc2VudCBpbiB0aGUgdHJlZS5cblx0c3RhdGUuX2NvbnRleHQgPSBjb250ZXh0O1xuXHRpZiAoIXByb3ZpZGVyKSByZXR1cm4gY29udGV4dC5fZGVmYXVsdFZhbHVlO1xuXHQvLyBUaGlzIGlzIHByb2JhYmx5IG5vdCBzYWZlIHRvIGNvbnZlcnQgdG8gXCIhXCJcblx0aWYgKHN0YXRlLl92YWx1ZSA9PSBudWxsKSB7XG5cdFx0c3RhdGUuX3ZhbHVlID0gdHJ1ZTtcblx0XHRwcm92aWRlci5zdWIoY3VycmVudENvbXBvbmVudCk7XG5cdH1cblx0cmV0dXJuIHByb3ZpZGVyLnByb3BzLnZhbHVlO1xufVxuXG4vKipcbiAqIERpc3BsYXkgYSBjdXN0b20gbGFiZWwgZm9yIGEgY3VzdG9tIGhvb2sgZm9yIHRoZSBkZXZ0b29scyBwYW5lbFxuICogQHR5cGUgezxUPih2YWx1ZTogVCwgY2I/OiAodmFsdWU6IFQpID0+IHN0cmluZyB8IG51bWJlcikgPT4gdm9pZH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZURlYnVnVmFsdWUodmFsdWUsIGZvcm1hdHRlcikge1xuXHRpZiAob3B0aW9ucy51c2VEZWJ1Z1ZhbHVlKSB7XG5cdFx0b3B0aW9ucy51c2VEZWJ1Z1ZhbHVlKFxuXHRcdFx0Zm9ybWF0dGVyID8gZm9ybWF0dGVyKHZhbHVlKSA6IC8qKiBAdHlwZSB7YW55fSovICh2YWx1ZSlcblx0XHQpO1xuXHR9XG59XG5cbi8qKlxuICogQHBhcmFtIHsoZXJyb3I6IHVua25vd24sIGVycm9ySW5mbzogaW1wb3J0KCdwcmVhY3QnKS5FcnJvckluZm8pID0+IHZvaWR9IGNiXG4gKiBAcmV0dXJucyB7W3Vua25vd24sICgpID0+IHZvaWRdfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlRXJyb3JCb3VuZGFyeShjYikge1xuXHQvKiogQHR5cGUge2ltcG9ydCgnLi9pbnRlcm5hbCcpLkVycm9yQm91bmRhcnlIb29rU3RhdGV9ICovXG5cdGNvbnN0IHN0YXRlID0gZ2V0SG9va1N0YXRlKGN1cnJlbnRJbmRleCsrLCAxMCk7XG5cdGNvbnN0IGVyclN0YXRlID0gdXNlU3RhdGUoKTtcblx0c3RhdGUuX3ZhbHVlID0gY2I7XG5cdGlmICghY3VycmVudENvbXBvbmVudC5jb21wb25lbnREaWRDYXRjaCkge1xuXHRcdGN1cnJlbnRDb21wb25lbnQuY29tcG9uZW50RGlkQ2F0Y2ggPSAoZXJyLCBlcnJvckluZm8pID0+IHtcblx0XHRcdGlmIChzdGF0ZS5fdmFsdWUpIHN0YXRlLl92YWx1ZShlcnIsIGVycm9ySW5mbyk7XG5cdFx0XHRlcnJTdGF0ZVsxXShlcnIpO1xuXHRcdH07XG5cdH1cblx0cmV0dXJuIFtcblx0XHRlcnJTdGF0ZVswXSxcblx0XHQoKSA9PiB7XG5cdFx0XHRlcnJTdGF0ZVsxXSh1bmRlZmluZWQpO1xuXHRcdH1cblx0XTtcbn1cblxuLyoqIEB0eXBlIHsoKSA9PiBzdHJpbmd9ICovXG5leHBvcnQgZnVuY3Rpb24gdXNlSWQoKSB7XG5cdC8qKiBAdHlwZSB7aW1wb3J0KCcuL2ludGVybmFsJykuSWRIb29rU3RhdGV9ICovXG5cdGNvbnN0IHN0YXRlID0gZ2V0SG9va1N0YXRlKGN1cnJlbnRJbmRleCsrLCAxMSk7XG5cdGlmICghc3RhdGUuX3ZhbHVlKSB7XG5cdFx0Ly8gR3JhYiBlaXRoZXIgdGhlIHJvb3Qgbm9kZSBvciB0aGUgbmVhcmVzdCBhc3luYyBib3VuZGFyeSBub2RlLlxuXHRcdC8qKiBAdHlwZSB7aW1wb3J0KCcuL2ludGVybmFsLmQnKS5WTm9kZX0gKi9cblx0XHRsZXQgcm9vdCA9IGN1cnJlbnRDb21wb25lbnQuX3Zub2RlO1xuXHRcdHdoaWxlIChyb290ICE9PSBudWxsICYmICFyb290Ll9tYXNrICYmIHJvb3QuX3BhcmVudCAhPT0gbnVsbCkge1xuXHRcdFx0cm9vdCA9IHJvb3QuX3BhcmVudDtcblx0XHR9XG5cblx0XHRsZXQgbWFzayA9IHJvb3QuX21hc2sgfHwgKHJvb3QuX21hc2sgPSBbMCwgMF0pO1xuXHRcdHN0YXRlLl92YWx1ZSA9ICdQJyArIG1hc2tbMF0gKyAnLScgKyBtYXNrWzFdKys7XG5cdH1cblxuXHRyZXR1cm4gc3RhdGUuX3ZhbHVlO1xufVxuXG4vKipcbiAqIEFmdGVyIHBhaW50IGVmZmVjdHMgY29uc3VtZXIuXG4gKi9cbmZ1bmN0aW9uIGZsdXNoQWZ0ZXJQYWludEVmZmVjdHMoKSB7XG5cdGxldCBjb21wb25lbnQ7XG5cdHdoaWxlICgoY29tcG9uZW50ID0gYWZ0ZXJQYWludEVmZmVjdHMuc2hpZnQoKSkpIHtcblx0XHRpZiAoIWNvbXBvbmVudC5fcGFyZW50RG9tIHx8ICFjb21wb25lbnQuX19ob29rcykgY29udGludWU7XG5cdFx0dHJ5IHtcblx0XHRcdGNvbXBvbmVudC5fX2hvb2tzLl9wZW5kaW5nRWZmZWN0cy5mb3JFYWNoKGludm9rZUNsZWFudXApO1xuXHRcdFx0Y29tcG9uZW50Ll9faG9va3MuX3BlbmRpbmdFZmZlY3RzLmZvckVhY2goaW52b2tlRWZmZWN0KTtcblx0XHRcdGNvbXBvbmVudC5fX2hvb2tzLl9wZW5kaW5nRWZmZWN0cyA9IFtdO1xuXHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdGNvbXBvbmVudC5fX2hvb2tzLl9wZW5kaW5nRWZmZWN0cyA9IFtdO1xuXHRcdFx0b3B0aW9ucy5fY2F0Y2hFcnJvcihlLCBjb21wb25lbnQuX3Zub2RlKTtcblx0XHR9XG5cdH1cbn1cblxubGV0IEhBU19SQUYgPSB0eXBlb2YgcmVxdWVzdEFuaW1hdGlvbkZyYW1lID09ICdmdW5jdGlvbic7XG5cbi8qKlxuICogU2NoZWR1bGUgYSBjYWxsYmFjayB0byBiZSBpbnZva2VkIGFmdGVyIHRoZSBicm93c2VyIGhhcyBhIGNoYW5jZSB0byBwYWludCBhIG5ldyBmcmFtZS5cbiAqIERvIHRoaXMgYnkgY29tYmluaW5nIHJlcXVlc3RBbmltYXRpb25GcmFtZSAockFGKSArIHNldFRpbWVvdXQgdG8gaW52b2tlIGEgY2FsbGJhY2sgYWZ0ZXJcbiAqIHRoZSBuZXh0IGJyb3dzZXIgZnJhbWUuXG4gKlxuICogQWxzbywgc2NoZWR1bGUgYSB0aW1lb3V0IGluIHBhcmFsbGVsIHRvIHRoZSB0aGUgckFGIHRvIGVuc3VyZSB0aGUgY2FsbGJhY2sgaXMgaW52b2tlZFxuICogZXZlbiBpZiBSQUYgZG9lc24ndCBmaXJlIChmb3IgZXhhbXBsZSBpZiB0aGUgYnJvd3NlciB0YWIgaXMgbm90IHZpc2libGUpXG4gKlxuICogQHBhcmFtIHsoKSA9PiB2b2lkfSBjYWxsYmFja1xuICovXG5mdW5jdGlvbiBhZnRlck5leHRGcmFtZShjYWxsYmFjaykge1xuXHRjb25zdCBkb25lID0gKCkgPT4ge1xuXHRcdGNsZWFyVGltZW91dCh0aW1lb3V0KTtcblx0XHRpZiAoSEFTX1JBRikgY2FuY2VsQW5pbWF0aW9uRnJhbWUocmFmKTtcblx0XHRzZXRUaW1lb3V0KGNhbGxiYWNrKTtcblx0fTtcblx0Y29uc3QgdGltZW91dCA9IHNldFRpbWVvdXQoZG9uZSwgUkFGX1RJTUVPVVQpO1xuXG5cdGxldCByYWY7XG5cdGlmIChIQVNfUkFGKSB7XG5cdFx0cmFmID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGRvbmUpO1xuXHR9XG59XG5cbi8vIE5vdGU6IGlmIHNvbWVvbmUgdXNlZCBvcHRpb25zLmRlYm91bmNlUmVuZGVyaW5nID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lLFxuLy8gdGhlbiBlZmZlY3RzIHdpbGwgQUxXQVlTIHJ1biBvbiB0aGUgTkVYVCBmcmFtZSBpbnN0ZWFkIG9mIHRoZSBjdXJyZW50IG9uZSwgaW5jdXJyaW5nIGEgfjE2bXMgZGVsYXkuXG4vLyBQZXJoYXBzIHRoaXMgaXMgbm90IHN1Y2ggYSBiaWcgZGVhbC5cbi8qKlxuICogU2NoZWR1bGUgYWZ0ZXJQYWludEVmZmVjdHMgZmx1c2ggYWZ0ZXIgdGhlIGJyb3dzZXIgcGFpbnRzXG4gKiBAcGFyYW0ge251bWJlcn0gbmV3UXVldWVMZW5ndGhcbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5mdW5jdGlvbiBhZnRlclBhaW50KG5ld1F1ZXVlTGVuZ3RoKSB7XG5cdGlmIChuZXdRdWV1ZUxlbmd0aCA9PT0gMSB8fCBwcmV2UmFmICE9PSBvcHRpb25zLnJlcXVlc3RBbmltYXRpb25GcmFtZSkge1xuXHRcdHByZXZSYWYgPSBvcHRpb25zLnJlcXVlc3RBbmltYXRpb25GcmFtZTtcblx0XHQocHJldlJhZiB8fCBhZnRlck5leHRGcmFtZSkoZmx1c2hBZnRlclBhaW50RWZmZWN0cyk7XG5cdH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi9pbnRlcm5hbCcpLkhvb2tTdGF0ZX0gaG9va1xuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmZ1bmN0aW9uIGludm9rZUNsZWFudXAoaG9vaykge1xuXHQvLyBBIGhvb2sgY2xlYW51cCBjYW4gaW50cm9kdWNlIGEgY2FsbCB0byByZW5kZXIgd2hpY2ggY3JlYXRlcyBhIG5ldyByb290LCB0aGlzIHdpbGwgY2FsbCBvcHRpb25zLnZub2RlXG5cdC8vIGFuZCBtb3ZlIHRoZSBjdXJyZW50Q29tcG9uZW50IGF3YXkuXG5cdGNvbnN0IGNvbXAgPSBjdXJyZW50Q29tcG9uZW50O1xuXHRsZXQgY2xlYW51cCA9IGhvb2suX2NsZWFudXA7XG5cdGlmICh0eXBlb2YgY2xlYW51cCA9PSAnZnVuY3Rpb24nKSB7XG5cdFx0aG9vay5fY2xlYW51cCA9IHVuZGVmaW5lZDtcblx0XHRjbGVhbnVwKCk7XG5cdH1cblxuXHRjdXJyZW50Q29tcG9uZW50ID0gY29tcDtcbn1cblxuLyoqXG4gKiBJbnZva2UgYSBIb29rJ3MgZWZmZWN0XG4gKiBAcGFyYW0ge2ltcG9ydCgnLi9pbnRlcm5hbCcpLkVmZmVjdEhvb2tTdGF0ZX0gaG9va1xuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmZ1bmN0aW9uIGludm9rZUVmZmVjdChob29rKSB7XG5cdC8vIEEgaG9vayBjYWxsIGNhbiBpbnRyb2R1Y2UgYSBjYWxsIHRvIHJlbmRlciB3aGljaCBjcmVhdGVzIGEgbmV3IHJvb3QsIHRoaXMgd2lsbCBjYWxsIG9wdGlvbnMudm5vZGVcblx0Ly8gYW5kIG1vdmUgdGhlIGN1cnJlbnRDb21wb25lbnQgYXdheS5cblx0Y29uc3QgY29tcCA9IGN1cnJlbnRDb21wb25lbnQ7XG5cdGhvb2suX2NsZWFudXAgPSBob29rLl92YWx1ZSgpO1xuXHRjdXJyZW50Q29tcG9uZW50ID0gY29tcDtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3Vua25vd25bXX0gb2xkQXJnc1xuICogQHBhcmFtIHt1bmtub3duW119IG5ld0FyZ3NcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBhcmdzQ2hhbmdlZChvbGRBcmdzLCBuZXdBcmdzKSB7XG5cdHJldHVybiAoXG5cdFx0IW9sZEFyZ3MgfHxcblx0XHRvbGRBcmdzLmxlbmd0aCAhPT0gbmV3QXJncy5sZW5ndGggfHxcblx0XHRuZXdBcmdzLnNvbWUoKGFyZywgaW5kZXgpID0+IGFyZyAhPT0gb2xkQXJnc1tpbmRleF0pXG5cdCk7XG59XG5cbi8qKlxuICogQHRlbXBsYXRlIEFyZ1xuICogQHBhcmFtIHtBcmd9IGFyZ1xuICogQHBhcmFtIHsoYXJnOiBBcmcpID0+IGFueX0gZlxuICogQHJldHVybnMge2FueX1cbiAqL1xuZnVuY3Rpb24gaW52b2tlT3JSZXR1cm4oYXJnLCBmKSB7XG5cdHJldHVybiB0eXBlb2YgZiA9PSAnZnVuY3Rpb24nID8gZihhcmcpIDogZjtcbn1cbiIsICIvKipcbiAqIEFzc2lnbiBwcm9wZXJ0aWVzIGZyb20gYHByb3BzYCB0byBgb2JqYFxuICogQHRlbXBsYXRlIE8sIFAgVGhlIG9iaiBhbmQgcHJvcHMgdHlwZXNcbiAqIEBwYXJhbSB7T30gb2JqIFRoZSBvYmplY3QgdG8gY29weSBwcm9wZXJ0aWVzIHRvXG4gKiBAcGFyYW0ge1B9IHByb3BzIFRoZSBvYmplY3QgdG8gY29weSBwcm9wZXJ0aWVzIGZyb21cbiAqIEByZXR1cm5zIHtPICYgUH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2lnbihvYmosIHByb3BzKSB7XG5cdGZvciAobGV0IGkgaW4gcHJvcHMpIG9ialtpXSA9IHByb3BzW2ldO1xuXHRyZXR1cm4gLyoqIEB0eXBlIHtPICYgUH0gKi8gKG9iaik7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgdHdvIG9iamVjdHMgaGF2ZSBhIGRpZmZlcmVudCBzaGFwZVxuICogQHBhcmFtIHtvYmplY3R9IGFcbiAqIEBwYXJhbSB7b2JqZWN0fSBiXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNoYWxsb3dEaWZmZXJzKGEsIGIpIHtcblx0Zm9yIChsZXQgaSBpbiBhKSBpZiAoaSAhPT0gJ19fc291cmNlJyAmJiAhKGkgaW4gYikpIHJldHVybiB0cnVlO1xuXHRmb3IgKGxldCBpIGluIGIpIGlmIChpICE9PSAnX19zb3VyY2UnICYmIGFbaV0gIT09IGJbaV0pIHJldHVybiB0cnVlO1xuXHRyZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgdHdvIHZhbHVlcyBhcmUgdGhlIHNhbWUgdmFsdWVcbiAqIEBwYXJhbSB7Kn0geFxuICogQHBhcmFtIHsqfSB5XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzKHgsIHkpIHtcblx0cmV0dXJuICh4ID09PSB5ICYmICh4ICE9PSAwIHx8IDEgLyB4ID09PSAxIC8geSkpIHx8ICh4ICE9PSB4ICYmIHkgIT09IHkpO1xufVxuIiwgImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ3ByZWFjdCc7XG5pbXBvcnQgeyBzaGFsbG93RGlmZmVycyB9IGZyb20gJy4vdXRpbCc7XG5cbi8qKlxuICogQ29tcG9uZW50IGNsYXNzIHdpdGggYSBwcmVkZWZpbmVkIGBzaG91bGRDb21wb25lbnRVcGRhdGVgIGltcGxlbWVudGF0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBQdXJlQ29tcG9uZW50KHAsIGMpIHtcblx0dGhpcy5wcm9wcyA9IHA7XG5cdHRoaXMuY29udGV4dCA9IGM7XG59XG5QdXJlQ29tcG9uZW50LnByb3RvdHlwZSA9IG5ldyBDb21wb25lbnQoKTtcbi8vIFNvbWUgdGhpcmQtcGFydHkgbGlicmFyaWVzIGNoZWNrIGlmIHRoaXMgcHJvcGVydHkgaXMgcHJlc2VudFxuUHVyZUNvbXBvbmVudC5wcm90b3R5cGUuaXNQdXJlUmVhY3RDb21wb25lbnQgPSB0cnVlO1xuUHVyZUNvbXBvbmVudC5wcm90b3R5cGUuc2hvdWxkQ29tcG9uZW50VXBkYXRlID0gZnVuY3Rpb24gKHByb3BzLCBzdGF0ZSkge1xuXHRyZXR1cm4gc2hhbGxvd0RpZmZlcnModGhpcy5wcm9wcywgcHJvcHMpIHx8IHNoYWxsb3dEaWZmZXJzKHRoaXMuc3RhdGUsIHN0YXRlKTtcbn07XG4iLCAiaW1wb3J0IHsgY3JlYXRlRWxlbWVudCB9IGZyb20gJ3ByZWFjdCc7XG5pbXBvcnQgeyBzaGFsbG93RGlmZmVycyB9IGZyb20gJy4vdXRpbCc7XG5cbi8qKlxuICogTWVtb2l6ZSBhIGNvbXBvbmVudCwgc28gdGhhdCBpdCBvbmx5IHVwZGF0ZXMgd2hlbiB0aGUgcHJvcHMgYWN0dWFsbHkgaGF2ZVxuICogY2hhbmdlZC4gVGhpcyB3YXMgcHJldmlvdXNseSBrbm93biBhcyBgUmVhY3QucHVyZWAuXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi9pbnRlcm5hbCcpLkZ1bmN0aW9uQ29tcG9uZW50fSBjIGZ1bmN0aW9uYWwgY29tcG9uZW50XG4gKiBAcGFyYW0geyhwcmV2OiBvYmplY3QsIG5leHQ6IG9iamVjdCkgPT4gYm9vbGVhbn0gW2NvbXBhcmVyXSBDdXN0b20gZXF1YWxpdHkgZnVuY3Rpb25cbiAqIEByZXR1cm5zIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5GdW5jdGlvbkNvbXBvbmVudH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1lbW8oYywgY29tcGFyZXIpIHtcblx0ZnVuY3Rpb24gc2hvdWxkVXBkYXRlKG5leHRQcm9wcykge1xuXHRcdGxldCByZWYgPSB0aGlzLnByb3BzLnJlZjtcblx0XHRsZXQgdXBkYXRlUmVmID0gcmVmID09IG5leHRQcm9wcy5yZWY7XG5cdFx0aWYgKCF1cGRhdGVSZWYgJiYgcmVmKSB7XG5cdFx0XHRyZWYuY2FsbCA/IHJlZihudWxsKSA6IChyZWYuY3VycmVudCA9IG51bGwpO1xuXHRcdH1cblxuXHRcdGlmICghY29tcGFyZXIpIHtcblx0XHRcdHJldHVybiBzaGFsbG93RGlmZmVycyh0aGlzLnByb3BzLCBuZXh0UHJvcHMpO1xuXHRcdH1cblxuXHRcdHJldHVybiAhY29tcGFyZXIodGhpcy5wcm9wcywgbmV4dFByb3BzKSB8fCAhdXBkYXRlUmVmO1xuXHR9XG5cblx0ZnVuY3Rpb24gTWVtb2VkKHByb3BzKSB7XG5cdFx0dGhpcy5zaG91bGRDb21wb25lbnRVcGRhdGUgPSBzaG91bGRVcGRhdGU7XG5cdFx0cmV0dXJuIGNyZWF0ZUVsZW1lbnQoYywgcHJvcHMpO1xuXHR9XG5cdE1lbW9lZC5kaXNwbGF5TmFtZSA9ICdNZW1vKCcgKyAoYy5kaXNwbGF5TmFtZSB8fCBjLm5hbWUpICsgJyknO1xuXHRNZW1vZWQucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQgPSB0cnVlO1xuXHRNZW1vZWQuX2ZvcndhcmRlZCA9IHRydWU7XG5cdHJldHVybiBNZW1vZWQ7XG59XG4iLCAiaW1wb3J0IHsgb3B0aW9ucyB9IGZyb20gJ3ByZWFjdCc7XG5cbmxldCBvbGREaWZmSG9vayA9IG9wdGlvbnMuX2RpZmY7XG5vcHRpb25zLl9kaWZmID0gdm5vZGUgPT4ge1xuXHRpZiAodm5vZGUudHlwZSAmJiB2bm9kZS50eXBlLl9mb3J3YXJkZWQgJiYgdm5vZGUucmVmKSB7XG5cdFx0dm5vZGUucHJvcHMucmVmID0gdm5vZGUucmVmO1xuXHRcdHZub2RlLnJlZiA9IG51bGw7XG5cdH1cblx0aWYgKG9sZERpZmZIb29rKSBvbGREaWZmSG9vayh2bm9kZSk7XG59O1xuXG5leHBvcnQgY29uc3QgUkVBQ1RfRk9SV0FSRF9TWU1CT0wgPVxuXHQodHlwZW9mIFN5bWJvbCAhPSAndW5kZWZpbmVkJyAmJlxuXHRcdFN5bWJvbC5mb3IgJiZcblx0XHRTeW1ib2wuZm9yKCdyZWFjdC5mb3J3YXJkX3JlZicpKSB8fFxuXHQweGY0NztcblxuLyoqXG4gKiBQYXNzIHJlZiBkb3duIHRvIGEgY2hpbGQuIFRoaXMgaXMgbWFpbmx5IHVzZWQgaW4gbGlicmFyaWVzIHdpdGggSE9DcyB0aGF0XG4gKiB3cmFwIGNvbXBvbmVudHMuIFVzaW5nIGBmb3J3YXJkUmVmYCB0aGVyZSBpcyBhbiBlYXN5IHdheSB0byBnZXQgYSByZWZlcmVuY2VcbiAqIG9mIHRoZSB3cmFwcGVkIGNvbXBvbmVudCBpbnN0ZWFkIG9mIG9uZSBvZiB0aGUgd3JhcHBlciBpdHNlbGYuXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi9pbmRleCcpLkZvcndhcmRGbn0gZm5cbiAqIEByZXR1cm5zIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5GdW5jdGlvbkNvbXBvbmVudH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcndhcmRSZWYoZm4pIHtcblx0ZnVuY3Rpb24gRm9yd2FyZGVkKHByb3BzKSB7XG5cdFx0aWYgKCEoJ3JlZicgaW4gcHJvcHMpKSByZXR1cm4gZm4ocHJvcHMsIG51bGwpO1xuXG5cdFx0bGV0IHJlZiA9IHByb3BzLnJlZjtcblx0XHRkZWxldGUgcHJvcHMucmVmO1xuXHRcdGNvbnN0IHJlc3VsdCA9IGZuKHByb3BzLCByZWYpO1xuXHRcdHByb3BzLnJlZiA9IHJlZjtcblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9XG5cblx0Ly8gbW9ieC1yZWFjdCBjaGVja3MgZm9yIHRoaXMgYmVpbmcgcHJlc2VudFxuXHRGb3J3YXJkZWQuJCR0eXBlb2YgPSBSRUFDVF9GT1JXQVJEX1NZTUJPTDtcblx0Ly8gbW9ieC1yZWFjdCBoZWF2aWx5IHJlbGllcyBvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLlxuXHQvLyBJdCBleHBlY3RzIGFuIG9iamVjdCBoZXJlIHdpdGggYSBgcmVuZGVyYCBwcm9wZXJ0eSxcblx0Ly8gYW5kIHByb3RvdHlwZS5yZW5kZXIgd2lsbCBmYWlsLiBXaXRob3V0IHRoaXNcblx0Ly8gbW9ieC1yZWFjdCB0aHJvd3MuXG5cdEZvcndhcmRlZC5yZW5kZXIgPSBGb3J3YXJkZWQ7XG5cblx0Rm9yd2FyZGVkLnByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50ID0gRm9yd2FyZGVkLl9mb3J3YXJkZWQgPSB0cnVlO1xuXHRGb3J3YXJkZWQuZGlzcGxheU5hbWUgPSAnRm9yd2FyZFJlZignICsgKGZuLmRpc3BsYXlOYW1lIHx8IGZuLm5hbWUpICsgJyknO1xuXHRyZXR1cm4gRm9yd2FyZGVkO1xufVxuIiwgImltcG9ydCB7IHRvQ2hpbGRBcnJheSB9IGZyb20gJ3ByZWFjdCc7XG5cbmNvbnN0IG1hcEZuID0gKGNoaWxkcmVuLCBmbikgPT4ge1xuXHRpZiAoY2hpbGRyZW4gPT0gbnVsbCkgcmV0dXJuIG51bGw7XG5cdHJldHVybiB0b0NoaWxkQXJyYXkodG9DaGlsZEFycmF5KGNoaWxkcmVuKS5tYXAoZm4pKTtcbn07XG5cbi8vIFRoaXMgQVBJIGlzIGNvbXBsZXRlbHkgdW5uZWNlc3NhcnkgZm9yIFByZWFjdCwgc28gaXQncyBiYXNpY2FsbHkgcGFzc3Rocm91Z2guXG5leHBvcnQgY29uc3QgQ2hpbGRyZW4gPSB7XG5cdG1hcDogbWFwRm4sXG5cdGZvckVhY2g6IG1hcEZuLFxuXHRjb3VudChjaGlsZHJlbikge1xuXHRcdHJldHVybiBjaGlsZHJlbiA/IHRvQ2hpbGRBcnJheShjaGlsZHJlbikubGVuZ3RoIDogMDtcblx0fSxcblx0b25seShjaGlsZHJlbikge1xuXHRcdGNvbnN0IG5vcm1hbGl6ZWQgPSB0b0NoaWxkQXJyYXkoY2hpbGRyZW4pO1xuXHRcdGlmIChub3JtYWxpemVkLmxlbmd0aCAhPT0gMSkgdGhyb3cgJ0NoaWxkcmVuLm9ubHknO1xuXHRcdHJldHVybiBub3JtYWxpemVkWzBdO1xuXHR9LFxuXHR0b0FycmF5OiB0b0NoaWxkQXJyYXlcbn07XG4iLCAiaW1wb3J0IHsgQ29tcG9uZW50LCBjcmVhdGVFbGVtZW50LCBvcHRpb25zLCBGcmFnbWVudCB9IGZyb20gJ3ByZWFjdCc7XG5pbXBvcnQgeyBNT0RFX0hZRFJBVEUgfSBmcm9tICcuLi8uLi9zcmMvY29uc3RhbnRzJztcbmltcG9ydCB7IGFzc2lnbiB9IGZyb20gJy4vdXRpbCc7XG5cbmNvbnN0IG9sZENhdGNoRXJyb3IgPSBvcHRpb25zLl9jYXRjaEVycm9yO1xub3B0aW9ucy5fY2F0Y2hFcnJvciA9IGZ1bmN0aW9uIChlcnJvciwgbmV3Vk5vZGUsIG9sZFZOb2RlLCBlcnJvckluZm8pIHtcblx0aWYgKGVycm9yLnRoZW4pIHtcblx0XHQvKiogQHR5cGUge2ltcG9ydCgnLi9pbnRlcm5hbCcpLkNvbXBvbmVudH0gKi9cblx0XHRsZXQgY29tcG9uZW50O1xuXHRcdGxldCB2bm9kZSA9IG5ld1ZOb2RlO1xuXG5cdFx0Zm9yICg7ICh2bm9kZSA9IHZub2RlLl9wYXJlbnQpOyApIHtcblx0XHRcdGlmICgoY29tcG9uZW50ID0gdm5vZGUuX2NvbXBvbmVudCkgJiYgY29tcG9uZW50Ll9jaGlsZERpZFN1c3BlbmQpIHtcblx0XHRcdFx0aWYgKG5ld1ZOb2RlLl9kb20gPT0gbnVsbCkge1xuXHRcdFx0XHRcdG5ld1ZOb2RlLl9kb20gPSBvbGRWTm9kZS5fZG9tO1xuXHRcdFx0XHRcdG5ld1ZOb2RlLl9jaGlsZHJlbiA9IG9sZFZOb2RlLl9jaGlsZHJlbjtcblx0XHRcdFx0fVxuXHRcdFx0XHQvLyBEb24ndCBjYWxsIG9sZENhdGNoRXJyb3IgaWYgd2UgZm91bmQgYSBTdXNwZW5zZVxuXHRcdFx0XHRyZXR1cm4gY29tcG9uZW50Ll9jaGlsZERpZFN1c3BlbmQoZXJyb3IsIG5ld1ZOb2RlKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblx0b2xkQ2F0Y2hFcnJvcihlcnJvciwgbmV3Vk5vZGUsIG9sZFZOb2RlLCBlcnJvckluZm8pO1xufTtcblxuY29uc3Qgb2xkVW5tb3VudCA9IG9wdGlvbnMudW5tb3VudDtcbm9wdGlvbnMudW5tb3VudCA9IGZ1bmN0aW9uICh2bm9kZSkge1xuXHQvKiogQHR5cGUge2ltcG9ydCgnLi9pbnRlcm5hbCcpLkNvbXBvbmVudH0gKi9cblx0Y29uc3QgY29tcG9uZW50ID0gdm5vZGUuX2NvbXBvbmVudDtcblx0aWYgKGNvbXBvbmVudCAmJiBjb21wb25lbnQuX29uUmVzb2x2ZSkge1xuXHRcdGNvbXBvbmVudC5fb25SZXNvbHZlKCk7XG5cdH1cblxuXHQvLyBpZiB0aGUgY29tcG9uZW50IGlzIHN0aWxsIGh5ZHJhdGluZ1xuXHQvLyBtb3N0IGxpa2VseSBpdCBpcyBiZWNhdXNlIHRoZSBjb21wb25lbnQgaXMgc3VzcGVuZGVkXG5cdC8vIHdlIHNldCB0aGUgdm5vZGUudHlwZSBhcyBgbnVsbGAgc28gdGhhdCBpdCBpcyBub3QgYSB0eXBlb2YgZnVuY3Rpb25cblx0Ly8gc28gdGhlIHVubW91bnQgd2lsbCByZW1vdmUgdGhlIHZub2RlLl9kb21cblx0aWYgKGNvbXBvbmVudCAmJiB2bm9kZS5fZmxhZ3MgJiBNT0RFX0hZRFJBVEUpIHtcblx0XHR2bm9kZS50eXBlID0gbnVsbDtcblx0fVxuXG5cdGlmIChvbGRVbm1vdW50KSBvbGRVbm1vdW50KHZub2RlKTtcbn07XG5cbmZ1bmN0aW9uIGRldGFjaGVkQ2xvbmUodm5vZGUsIGRldGFjaGVkUGFyZW50LCBwYXJlbnREb20pIHtcblx0aWYgKHZub2RlKSB7XG5cdFx0aWYgKHZub2RlLl9jb21wb25lbnQgJiYgdm5vZGUuX2NvbXBvbmVudC5fX2hvb2tzKSB7XG5cdFx0XHR2bm9kZS5fY29tcG9uZW50Ll9faG9va3MuX2xpc3QuZm9yRWFjaChlZmZlY3QgPT4ge1xuXHRcdFx0XHRpZiAodHlwZW9mIGVmZmVjdC5fY2xlYW51cCA9PSAnZnVuY3Rpb24nKSBlZmZlY3QuX2NsZWFudXAoKTtcblx0XHRcdH0pO1xuXG5cdFx0XHR2bm9kZS5fY29tcG9uZW50Ll9faG9va3MgPSBudWxsO1xuXHRcdH1cblxuXHRcdHZub2RlID0gYXNzaWduKHt9LCB2bm9kZSk7XG5cdFx0aWYgKHZub2RlLl9jb21wb25lbnQgIT0gbnVsbCkge1xuXHRcdFx0aWYgKHZub2RlLl9jb21wb25lbnQuX3BhcmVudERvbSA9PT0gcGFyZW50RG9tKSB7XG5cdFx0XHRcdHZub2RlLl9jb21wb25lbnQuX3BhcmVudERvbSA9IGRldGFjaGVkUGFyZW50O1xuXHRcdFx0fVxuXHRcdFx0dm5vZGUuX2NvbXBvbmVudCA9IG51bGw7XG5cdFx0fVxuXG5cdFx0dm5vZGUuX2NoaWxkcmVuID1cblx0XHRcdHZub2RlLl9jaGlsZHJlbiAmJlxuXHRcdFx0dm5vZGUuX2NoaWxkcmVuLm1hcChjaGlsZCA9PlxuXHRcdFx0XHRkZXRhY2hlZENsb25lKGNoaWxkLCBkZXRhY2hlZFBhcmVudCwgcGFyZW50RG9tKVxuXHRcdFx0KTtcblx0fVxuXG5cdHJldHVybiB2bm9kZTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlT3JpZ2luYWwodm5vZGUsIGRldGFjaGVkUGFyZW50LCBvcmlnaW5hbFBhcmVudCkge1xuXHRpZiAodm5vZGUgJiYgb3JpZ2luYWxQYXJlbnQpIHtcblx0XHR2bm9kZS5fb3JpZ2luYWwgPSBudWxsO1xuXHRcdHZub2RlLl9jaGlsZHJlbiA9XG5cdFx0XHR2bm9kZS5fY2hpbGRyZW4gJiZcblx0XHRcdHZub2RlLl9jaGlsZHJlbi5tYXAoY2hpbGQgPT5cblx0XHRcdFx0cmVtb3ZlT3JpZ2luYWwoY2hpbGQsIGRldGFjaGVkUGFyZW50LCBvcmlnaW5hbFBhcmVudClcblx0XHRcdCk7XG5cblx0XHRpZiAodm5vZGUuX2NvbXBvbmVudCkge1xuXHRcdFx0aWYgKHZub2RlLl9jb21wb25lbnQuX3BhcmVudERvbSA9PT0gZGV0YWNoZWRQYXJlbnQpIHtcblx0XHRcdFx0aWYgKHZub2RlLl9kb20pIHtcblx0XHRcdFx0XHRvcmlnaW5hbFBhcmVudC5hcHBlbmRDaGlsZCh2bm9kZS5fZG9tKTtcblx0XHRcdFx0fVxuXHRcdFx0XHR2bm9kZS5fY29tcG9uZW50Ll9mb3JjZSA9IHRydWU7XG5cdFx0XHRcdHZub2RlLl9jb21wb25lbnQuX3BhcmVudERvbSA9IG9yaWdpbmFsUGFyZW50O1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiB2bm9kZTtcbn1cblxuLy8gaGF2aW5nIGN1c3RvbSBpbmhlcml0YW5jZSBpbnN0ZWFkIG9mIGEgY2xhc3MgaGVyZSBzYXZlcyBhIGxvdCBvZiBieXRlc1xuZXhwb3J0IGZ1bmN0aW9uIFN1c3BlbnNlKCkge1xuXHQvLyB3ZSBkbyBub3QgY2FsbCBzdXBlciBoZXJlIHRvIGdvbGYgc29tZSBieXRlcy4uLlxuXHR0aGlzLl9wZW5kaW5nU3VzcGVuc2lvbkNvdW50ID0gMDtcblx0dGhpcy5fc3VzcGVuZGVycyA9IG51bGw7XG5cdHRoaXMuX2RldGFjaE9uTmV4dFJlbmRlciA9IG51bGw7XG59XG5cbi8vIFRoaW5ncyB3ZSBkbyBoZXJlIHRvIHNhdmUgc29tZSBieXRlcyBidXQgYXJlIG5vdCBwcm9wZXIgSlMgaW5oZXJpdGFuY2U6XG4vLyAtIGNhbGwgYG5ldyBDb21wb25lbnQoKWAgYXMgdGhlIHByb3RvdHlwZVxuLy8gLSBkbyBub3Qgc2V0IGBTdXNwZW5zZS5wcm90b3R5cGUuY29uc3RydWN0b3JgIHRvIGBTdXNwZW5zZWBcblN1c3BlbnNlLnByb3RvdHlwZSA9IG5ldyBDb21wb25lbnQoKTtcblxuLyoqXG4gKiBAdGhpcyB7aW1wb3J0KCcuL2ludGVybmFsJykuU3VzcGVuc2VDb21wb25lbnR9XG4gKiBAcGFyYW0ge1Byb21pc2V9IHByb21pc2UgVGhlIHRocm93biBwcm9taXNlXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi9pbnRlcm5hbCcpLlZOb2RlPGFueSwgYW55Pn0gc3VzcGVuZGluZ1ZOb2RlIFRoZSBzdXNwZW5kaW5nIGNvbXBvbmVudFxuICovXG5TdXNwZW5zZS5wcm90b3R5cGUuX2NoaWxkRGlkU3VzcGVuZCA9IGZ1bmN0aW9uIChwcm9taXNlLCBzdXNwZW5kaW5nVk5vZGUpIHtcblx0Y29uc3Qgc3VzcGVuZGluZ0NvbXBvbmVudCA9IHN1c3BlbmRpbmdWTm9kZS5fY29tcG9uZW50O1xuXG5cdC8qKiBAdHlwZSB7aW1wb3J0KCcuL2ludGVybmFsJykuU3VzcGVuc2VDb21wb25lbnR9ICovXG5cdGNvbnN0IGMgPSB0aGlzO1xuXG5cdGlmIChjLl9zdXNwZW5kZXJzID09IG51bGwpIHtcblx0XHRjLl9zdXNwZW5kZXJzID0gW107XG5cdH1cblx0Yy5fc3VzcGVuZGVycy5wdXNoKHN1c3BlbmRpbmdDb21wb25lbnQpO1xuXG5cdGNvbnN0IHJlc29sdmUgPSBzdXNwZW5kZWQoYy5fdm5vZGUpO1xuXG5cdGxldCByZXNvbHZlZCA9IGZhbHNlO1xuXHRjb25zdCBvblJlc29sdmVkID0gKCkgPT4ge1xuXHRcdGlmIChyZXNvbHZlZCkgcmV0dXJuO1xuXG5cdFx0cmVzb2x2ZWQgPSB0cnVlO1xuXHRcdHN1c3BlbmRpbmdDb21wb25lbnQuX29uUmVzb2x2ZSA9IG51bGw7XG5cblx0XHRpZiAocmVzb2x2ZSkge1xuXHRcdFx0cmVzb2x2ZShvblN1c3BlbnNpb25Db21wbGV0ZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdG9uU3VzcGVuc2lvbkNvbXBsZXRlKCk7XG5cdFx0fVxuXHR9O1xuXG5cdHN1c3BlbmRpbmdDb21wb25lbnQuX29uUmVzb2x2ZSA9IG9uUmVzb2x2ZWQ7XG5cblx0Y29uc3Qgb25TdXNwZW5zaW9uQ29tcGxldGUgPSAoKSA9PiB7XG5cdFx0aWYgKCEtLWMuX3BlbmRpbmdTdXNwZW5zaW9uQ291bnQpIHtcblx0XHRcdC8vIElmIHRoZSBzdXNwZW5zaW9uIHdhcyBkdXJpbmcgaHlkcmF0aW9uIHdlIGRvbid0IG5lZWQgdG8gcmVzdG9yZSB0aGVcblx0XHRcdC8vIHN1c3BlbmRlZCBjaGlsZHJlbiBpbnRvIHRoZSBfY2hpbGRyZW4gYXJyYXlcblx0XHRcdGlmIChjLnN0YXRlLl9zdXNwZW5kZWQpIHtcblx0XHRcdFx0Y29uc3Qgc3VzcGVuZGVkVk5vZGUgPSBjLnN0YXRlLl9zdXNwZW5kZWQ7XG5cdFx0XHRcdGMuX3Zub2RlLl9jaGlsZHJlblswXSA9IHJlbW92ZU9yaWdpbmFsKFxuXHRcdFx0XHRcdHN1c3BlbmRlZFZOb2RlLFxuXHRcdFx0XHRcdHN1c3BlbmRlZFZOb2RlLl9jb21wb25lbnQuX3BhcmVudERvbSxcblx0XHRcdFx0XHRzdXNwZW5kZWRWTm9kZS5fY29tcG9uZW50Ll9vcmlnaW5hbFBhcmVudERvbVxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXG5cdFx0XHRjLnNldFN0YXRlKHsgX3N1c3BlbmRlZDogKGMuX2RldGFjaE9uTmV4dFJlbmRlciA9IG51bGwpIH0pO1xuXG5cdFx0XHRsZXQgc3VzcGVuZGVkO1xuXHRcdFx0d2hpbGUgKChzdXNwZW5kZWQgPSBjLl9zdXNwZW5kZXJzLnBvcCgpKSkge1xuXHRcdFx0XHRzdXNwZW5kZWQuZm9yY2VVcGRhdGUoKTtcblx0XHRcdH1cblx0XHR9XG5cdH07XG5cblx0LyoqXG5cdCAqIFdlIGRvIG5vdCBzZXQgYHN1c3BlbmRlZDogdHJ1ZWAgZHVyaW5nIGh5ZHJhdGlvbiBiZWNhdXNlIHdlIHdhbnQgdGhlIGFjdHVhbCBtYXJrdXBcblx0ICogdG8gcmVtYWluIG9uIHNjcmVlbiBhbmQgaHlkcmF0ZSBpdCB3aGVuIHRoZSBzdXNwZW5zZSBhY3R1YWxseSBnZXRzIHJlc29sdmVkLlxuXHQgKiBXaGlsZSBpbiBub24taHlkcmF0aW9uIGNhc2VzIHRoZSB1c3VhbCBmYWxsYmFjayAtPiBjb21wb25lbnQgZmxvdyB3b3VsZCBvY2NvdXIuXG5cdCAqL1xuXHRpZiAoXG5cdFx0IWMuX3BlbmRpbmdTdXNwZW5zaW9uQ291bnQrKyAmJlxuXHRcdCEoc3VzcGVuZGluZ1ZOb2RlLl9mbGFncyAmIE1PREVfSFlEUkFURSlcblx0KSB7XG5cdFx0Yy5zZXRTdGF0ZSh7IF9zdXNwZW5kZWQ6IChjLl9kZXRhY2hPbk5leHRSZW5kZXIgPSBjLl92bm9kZS5fY2hpbGRyZW5bMF0pIH0pO1xuXHR9XG5cdHByb21pc2UudGhlbihvblJlc29sdmVkLCBvblJlc29sdmVkKTtcbn07XG5cblN1c3BlbnNlLnByb3RvdHlwZS5jb21wb25lbnRXaWxsVW5tb3VudCA9IGZ1bmN0aW9uICgpIHtcblx0dGhpcy5fc3VzcGVuZGVycyA9IFtdO1xufTtcblxuLyoqXG4gKiBAdGhpcyB7aW1wb3J0KCcuL2ludGVybmFsJykuU3VzcGVuc2VDb21wb25lbnR9XG4gKiBAcGFyYW0ge2ltcG9ydCgnLi9pbnRlcm5hbCcpLlN1c3BlbnNlQ29tcG9uZW50W1wicHJvcHNcIl19IHByb3BzXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi9pbnRlcm5hbCcpLlN1c3BlbnNlU3RhdGV9IHN0YXRlXG4gKi9cblN1c3BlbnNlLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAocHJvcHMsIHN0YXRlKSB7XG5cdGlmICh0aGlzLl9kZXRhY2hPbk5leHRSZW5kZXIpIHtcblx0XHQvLyBXaGVuIHRoZSBTdXNwZW5zZSdzIF92bm9kZSB3YXMgY3JlYXRlZCBieSBhIGNhbGwgdG8gY3JlYXRlVk5vZGVcblx0XHQvLyAoaS5lLiBkdWUgdG8gYSBzZXRTdGF0ZSBmdXJ0aGVyIHVwIGluIHRoZSB0cmVlKVxuXHRcdC8vIGl0J3MgX2NoaWxkcmVuIHByb3AgaXMgbnVsbCwgaW4gdGhpcyBjYXNlIHdlIFwiZm9yZ2V0XCIgYWJvdXQgdGhlIHBhcmtlZCB2bm9kZXMgdG8gZGV0YWNoXG5cdFx0aWYgKHRoaXMuX3Zub2RlLl9jaGlsZHJlbikge1xuXHRcdFx0Y29uc3QgZGV0YWNoZWRQYXJlbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcblx0XHRcdGNvbnN0IGRldGFjaGVkQ29tcG9uZW50ID0gdGhpcy5fdm5vZGUuX2NoaWxkcmVuWzBdLl9jb21wb25lbnQ7XG5cdFx0XHR0aGlzLl92bm9kZS5fY2hpbGRyZW5bMF0gPSBkZXRhY2hlZENsb25lKFxuXHRcdFx0XHR0aGlzLl9kZXRhY2hPbk5leHRSZW5kZXIsXG5cdFx0XHRcdGRldGFjaGVkUGFyZW50LFxuXHRcdFx0XHQoZGV0YWNoZWRDb21wb25lbnQuX29yaWdpbmFsUGFyZW50RG9tID0gZGV0YWNoZWRDb21wb25lbnQuX3BhcmVudERvbSlcblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0dGhpcy5fZGV0YWNoT25OZXh0UmVuZGVyID0gbnVsbDtcblx0fVxuXG5cdC8vIFdyYXAgZmFsbGJhY2sgdHJlZSBpbiBhIFZOb2RlIHRoYXQgcHJldmVudHMgaXRzZWxmIGZyb20gYmVpbmcgbWFya2VkIGFzIGFib3J0aW5nIG1pZC1oeWRyYXRpb246XG5cdC8qKiBAdHlwZSB7aW1wb3J0KCcuL2ludGVybmFsJykuVk5vZGV9ICovXG5cdGNvbnN0IGZhbGxiYWNrID1cblx0XHRzdGF0ZS5fc3VzcGVuZGVkICYmIGNyZWF0ZUVsZW1lbnQoRnJhZ21lbnQsIG51bGwsIHByb3BzLmZhbGxiYWNrKTtcblx0aWYgKGZhbGxiYWNrKSBmYWxsYmFjay5fZmxhZ3MgJj0gfk1PREVfSFlEUkFURTtcblxuXHRyZXR1cm4gW1xuXHRcdGNyZWF0ZUVsZW1lbnQoRnJhZ21lbnQsIG51bGwsIHN0YXRlLl9zdXNwZW5kZWQgPyBudWxsIDogcHJvcHMuY2hpbGRyZW4pLFxuXHRcdGZhbGxiYWNrXG5cdF07XG59O1xuXG4vKipcbiAqIENoZWNrcyBhbmQgY2FsbHMgdGhlIHBhcmVudCBjb21wb25lbnQncyBfc3VzcGVuZGVkIG1ldGhvZCwgcGFzc2luZyBpbiB0aGVcbiAqIHN1c3BlbmRlZCB2bm9kZS4gVGhpcyBpcyBhIHdheSBmb3IgYSBwYXJlbnQgKGUuZy4gU3VzcGVuc2VMaXN0KSB0byBnZXQgbm90aWZpZWRcbiAqIHRoYXQgb25lIG9mIGl0cyBjaGlsZHJlbi9kZXNjZW5kYW50cyBzdXNwZW5kZWQuXG4gKlxuICogVGhlIHBhcmVudCBNQVkgcmV0dXJuIGEgY2FsbGJhY2suIFRoZSBjYWxsYmFjayB3aWxsIGdldCBjYWxsZWQgd2hlbiB0aGVcbiAqIHN1c3BlbnNpb24gcmVzb2x2ZXMsIG5vdGlmeWluZyB0aGUgcGFyZW50IG9mIHRoZSBmYWN0LlxuICogTW9yZW92ZXIsIHRoZSBjYWxsYmFjayBnZXRzIGZ1bmN0aW9uIGB1bnN1c3BlbmRgIGFzIGEgcGFyYW1ldGVyLiBUaGUgcmVzb2x2ZWRcbiAqIGNoaWxkIGRlc2NlbmRhbnQgd2lsbCBub3QgYWN0dWFsbHkgZ2V0IHVuc3VzcGVuZGVkIHVudGlsIGB1bnN1c3BlbmRgIGdldHMgY2FsbGVkLlxuICogVGhpcyBpcyBhIHdheSBmb3IgdGhlIHBhcmVudCB0byBkZWxheSB1bnN1c3BlbmRpbmcuXG4gKlxuICogSWYgdGhlIHBhcmVudCBkb2VzIG5vdCByZXR1cm4gYSBjYWxsYmFjayB0aGVuIHRoZSByZXNvbHZlZCB2bm9kZVxuICogZ2V0cyB1bnN1c3BlbmRlZCBpbW1lZGlhdGVseSB3aGVuIGl0IHJlc29sdmVzLlxuICpcbiAqIEBwYXJhbSB7aW1wb3J0KCcuL2ludGVybmFsJykuVk5vZGV9IHZub2RlXG4gKiBAcmV0dXJucyB7KCh1bnN1c3BlbmQ6ICgpID0+IHZvaWQpID0+IHZvaWQpP31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN1c3BlbmRlZCh2bm9kZSkge1xuXHQvKiogQHR5cGUge2ltcG9ydCgnLi9pbnRlcm5hbCcpLkNvbXBvbmVudH0gKi9cblx0bGV0IGNvbXBvbmVudCA9IHZub2RlLl9wYXJlbnQuX2NvbXBvbmVudDtcblx0cmV0dXJuIGNvbXBvbmVudCAmJiBjb21wb25lbnQuX3N1c3BlbmRlZCAmJiBjb21wb25lbnQuX3N1c3BlbmRlZCh2bm9kZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsYXp5KGxvYWRlcikge1xuXHRsZXQgcHJvbTtcblx0bGV0IGNvbXBvbmVudDtcblx0bGV0IGVycm9yO1xuXG5cdGZ1bmN0aW9uIExhenkocHJvcHMpIHtcblx0XHRpZiAoIXByb20pIHtcblx0XHRcdHByb20gPSBsb2FkZXIoKTtcblx0XHRcdHByb20udGhlbihcblx0XHRcdFx0ZXhwb3J0cyA9PiB7XG5cdFx0XHRcdFx0Y29tcG9uZW50ID0gZXhwb3J0cy5kZWZhdWx0IHx8IGV4cG9ydHM7XG5cdFx0XHRcdH0sXG5cdFx0XHRcdGUgPT4ge1xuXHRcdFx0XHRcdGVycm9yID0gZTtcblx0XHRcdFx0fVxuXHRcdFx0KTtcblx0XHR9XG5cblx0XHRpZiAoZXJyb3IpIHtcblx0XHRcdHRocm93IGVycm9yO1xuXHRcdH1cblxuXHRcdGlmICghY29tcG9uZW50KSB7XG5cdFx0XHR0aHJvdyBwcm9tO1xuXHRcdH1cblxuXHRcdHJldHVybiBjcmVhdGVFbGVtZW50KGNvbXBvbmVudCwgcHJvcHMpO1xuXHR9XG5cblx0TGF6eS5kaXNwbGF5TmFtZSA9ICdMYXp5Jztcblx0TGF6eS5fZm9yd2FyZGVkID0gdHJ1ZTtcblx0cmV0dXJuIExhenk7XG59XG4iLCAiaW1wb3J0IHsgQ29tcG9uZW50LCB0b0NoaWxkQXJyYXkgfSBmcm9tICdwcmVhY3QnO1xuaW1wb3J0IHsgc3VzcGVuZGVkIH0gZnJvbSAnLi9zdXNwZW5zZS5qcyc7XG5cbi8vIEluZGV4ZXMgdG8gbGlua2VkIGxpc3Qgbm9kZXMgKG5vZGVzIGFyZSBzdG9yZWQgYXMgYXJyYXlzIHRvIHNhdmUgYnl0ZXMpLlxuY29uc3QgU1VTUEVOREVEX0NPVU5UID0gMDtcbmNvbnN0IFJFU09MVkVEX0NPVU5UID0gMTtcbmNvbnN0IE5FWFRfTk9ERSA9IDI7XG5cbi8vIEhhdmluZyBjdXN0b20gaW5oZXJpdGFuY2UgaW5zdGVhZCBvZiBhIGNsYXNzIGhlcmUgc2F2ZXMgYSBsb3Qgb2YgYnl0ZXMuXG5leHBvcnQgZnVuY3Rpb24gU3VzcGVuc2VMaXN0KCkge1xuXHR0aGlzLl9uZXh0ID0gbnVsbDtcblx0dGhpcy5fbWFwID0gbnVsbDtcbn1cblxuLy8gTWFyayBvbmUgb2YgY2hpbGQncyBlYXJsaWVyIHN1c3BlbnNpb25zIGFzIHJlc29sdmVkLlxuLy8gU29tZSBwZW5kaW5nIGNhbGxiYWNrcyBtYXkgYmVjb21lIGNhbGxhYmxlIGR1ZSB0byB0aGlzXG4vLyAoZS5nLiB0aGUgbGFzdCBzdXNwZW5kZWQgZGVzY2VuZGFudCBnZXRzIHJlc29sdmVkIHdoZW5cbi8vIHJldmVhbE9yZGVyID09PSAndG9nZXRoZXInKS4gUHJvY2VzcyB0aG9zZSBjYWxsYmFja3MgYXMgd2VsbC5cbmNvbnN0IHJlc29sdmUgPSAobGlzdCwgY2hpbGQsIG5vZGUpID0+IHtcblx0aWYgKCsrbm9kZVtSRVNPTFZFRF9DT1VOVF0gPT09IG5vZGVbU1VTUEVOREVEX0NPVU5UXSkge1xuXHRcdC8vIFRoZSBudW1iZXIgYSBjaGlsZCAob3IgYW55IG9mIGl0cyBkZXNjZW5kYW50cykgaGFzIGJlZW4gc3VzcGVuZGVkXG5cdFx0Ly8gbWF0Y2hlcyB0aGUgbnVtYmVyIG9mIHRpbWVzIGl0J3MgYmVlbiByZXNvbHZlZC4gVGhlcmVmb3JlIHdlXG5cdFx0Ly8gbWFyayB0aGUgY2hpbGQgYXMgY29tcGxldGVseSByZXNvbHZlZCBieSBkZWxldGluZyBpdCBmcm9tIC5fbWFwLlxuXHRcdC8vIFRoaXMgaXMgdXNlZCB0byBmaWd1cmUgb3V0IHdoZW4gKmFsbCogY2hpbGRyZW4gaGF2ZSBiZWVuIGNvbXBsZXRlbHlcblx0XHQvLyByZXNvbHZlZCB3aGVuIHJldmVhbE9yZGVyIGlzICd0b2dldGhlcicuXG5cdFx0bGlzdC5fbWFwLmRlbGV0ZShjaGlsZCk7XG5cdH1cblxuXHQvLyBJZiByZXZlYWxPcmRlciBpcyBmYWxzeSB0aGVuIHdlIGNhbiBkbyBhbiBlYXJseSBleGl0LCBhcyB0aGVcblx0Ly8gY2FsbGJhY2tzIHdvbid0IGdldCBxdWV1ZWQgaW4gdGhlIG5vZGUgYW55d2F5LlxuXHQvLyBJZiByZXZlYWxPcmRlciBpcyAndG9nZXRoZXInIHRoZW4gYWxzbyBkbyBhbiBlYXJseSBleGl0XG5cdC8vIGlmIGFsbCBzdXNwZW5kZWQgZGVzY2VuZGFudHMgaGF2ZSBub3QgeWV0IGJlZW4gcmVzb2x2ZWQuXG5cdGlmIChcblx0XHQhbGlzdC5wcm9wcy5yZXZlYWxPcmRlciB8fFxuXHRcdChsaXN0LnByb3BzLnJldmVhbE9yZGVyWzBdID09PSAndCcgJiYgbGlzdC5fbWFwLnNpemUpXG5cdCkge1xuXHRcdHJldHVybjtcblx0fVxuXG5cdC8vIFdhbGsgdGhlIGN1cnJlbnRseSBzdXNwZW5kZWQgY2hpbGRyZW4gaW4gb3JkZXIsIGNhbGxpbmcgdGhlaXJcblx0Ly8gc3RvcmVkIGNhbGxiYWNrcyBvbiB0aGUgd2F5LiBTdG9wIGlmIHdlIGVuY291bnRlciBhIGNoaWxkIHRoYXRcblx0Ly8gaGFzIG5vdCBiZWVuIGNvbXBsZXRlbHkgcmVzb2x2ZWQgeWV0LlxuXHRub2RlID0gbGlzdC5fbmV4dDtcblx0d2hpbGUgKG5vZGUpIHtcblx0XHR3aGlsZSAobm9kZS5sZW5ndGggPiAzKSB7XG5cdFx0XHRub2RlLnBvcCgpKCk7XG5cdFx0fVxuXHRcdGlmIChub2RlW1JFU09MVkVEX0NPVU5UXSA8IG5vZGVbU1VTUEVOREVEX0NPVU5UXSkge1xuXHRcdFx0YnJlYWs7XG5cdFx0fVxuXHRcdGxpc3QuX25leHQgPSBub2RlID0gbm9kZVtORVhUX05PREVdO1xuXHR9XG59O1xuXG4vLyBUaGluZ3Mgd2UgZG8gaGVyZSB0byBzYXZlIHNvbWUgYnl0ZXMgYnV0IGFyZSBub3QgcHJvcGVyIEpTIGluaGVyaXRhbmNlOlxuLy8gLSBjYWxsIGBuZXcgQ29tcG9uZW50KClgIGFzIHRoZSBwcm90b3R5cGVcbi8vIC0gZG8gbm90IHNldCBgU3VzcGVuc2UucHJvdG90eXBlLmNvbnN0cnVjdG9yYCB0byBgU3VzcGVuc2VgXG5TdXNwZW5zZUxpc3QucHJvdG90eXBlID0gbmV3IENvbXBvbmVudCgpO1xuXG5TdXNwZW5zZUxpc3QucHJvdG90eXBlLl9zdXNwZW5kZWQgPSBmdW5jdGlvbiAoY2hpbGQpIHtcblx0Y29uc3QgbGlzdCA9IHRoaXM7XG5cdGNvbnN0IGRlbGVnYXRlZCA9IHN1c3BlbmRlZChsaXN0Ll92bm9kZSk7XG5cblx0bGV0IG5vZGUgPSBsaXN0Ll9tYXAuZ2V0KGNoaWxkKTtcblx0bm9kZVtTVVNQRU5ERURfQ09VTlRdKys7XG5cblx0cmV0dXJuIHVuc3VzcGVuZCA9PiB7XG5cdFx0Y29uc3Qgd3JhcHBlZFVuc3VzcGVuZCA9ICgpID0+IHtcblx0XHRcdGlmICghbGlzdC5wcm9wcy5yZXZlYWxPcmRlcikge1xuXHRcdFx0XHQvLyBTcGVjaWFsIGNhc2UgdGhlIHVuZGVmaW5lZCAoZmFsc3kpIHJldmVhbE9yZGVyLCBhcyB0aGVyZVxuXHRcdFx0XHQvLyBpcyBubyBuZWVkIHRvIGNvb3JkaW5hdGUgYSBzcGVjaWZpYyBvcmRlciBvciB1bnN1c3BlbmRzLlxuXHRcdFx0XHR1bnN1c3BlbmQoKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdG5vZGUucHVzaCh1bnN1c3BlbmQpO1xuXHRcdFx0XHRyZXNvbHZlKGxpc3QsIGNoaWxkLCBub2RlKTtcblx0XHRcdH1cblx0XHR9O1xuXHRcdGlmIChkZWxlZ2F0ZWQpIHtcblx0XHRcdGRlbGVnYXRlZCh3cmFwcGVkVW5zdXNwZW5kKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0d3JhcHBlZFVuc3VzcGVuZCgpO1xuXHRcdH1cblx0fTtcbn07XG5cblN1c3BlbnNlTGlzdC5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKHByb3BzKSB7XG5cdHRoaXMuX25leHQgPSBudWxsO1xuXHR0aGlzLl9tYXAgPSBuZXcgTWFwKCk7XG5cblx0Y29uc3QgY2hpbGRyZW4gPSB0b0NoaWxkQXJyYXkocHJvcHMuY2hpbGRyZW4pO1xuXHRpZiAocHJvcHMucmV2ZWFsT3JkZXIgJiYgcHJvcHMucmV2ZWFsT3JkZXJbMF0gPT09ICdiJykge1xuXHRcdC8vIElmIG9yZGVyID09PSAnYmFja3dhcmRzJyAob3IsIHdlbGwsIGFueXRoaW5nIHN0YXJ0aW5nIHdpdGggYSAnYicpXG5cdFx0Ly8gdGhlbiBmbGlwIHRoZSBjaGlsZCBsaXN0IGFyb3VuZCBzbyB0aGF0IHRoZSBsYXN0IGNoaWxkIHdpbGwgYmVcblx0XHQvLyB0aGUgZmlyc3QgaW4gdGhlIGxpbmtlZCBsaXN0LlxuXHRcdGNoaWxkcmVuLnJldmVyc2UoKTtcblx0fVxuXHQvLyBCdWlsZCB0aGUgbGlua2VkIGxpc3QuIEl0ZXJhdGUgdGhyb3VnaCB0aGUgY2hpbGRyZW4gaW4gcmV2ZXJzZSBvcmRlclxuXHQvLyBzbyB0aGF0IGBfbmV4dGAgcG9pbnRzIHRvIHRoZSBmaXJzdCBsaW5rZWQgbGlzdCBub2RlIHRvIGJlIHJlc29sdmVkLlxuXHRmb3IgKGxldCBpID0gY2hpbGRyZW4ubGVuZ3RoOyBpLS07ICkge1xuXHRcdC8vIENyZWF0ZSBhIG5ldyBsaW5rZWQgbGlzdCBub2RlIGFzIGFuIGFycmF5IG9mIGZvcm06XG5cdFx0Ly8gXHRbc3VzcGVuZGVkX2NvdW50LCByZXNvbHZlZF9jb3VudCwgbmV4dF9ub2RlXVxuXHRcdC8vIHdoZXJlIHN1c3BlbmRlZF9jb3VudCBhbmQgcmVzb2x2ZWRfY291bnQgYXJlIG51bWVyaWMgY291bnRlcnMgZm9yXG5cdFx0Ly8ga2VlcGluZyB0cmFjayBob3cgbWFueSB0aW1lcyBhIG5vZGUgaGFzIGJlZW4gc3VzcGVuZGVkIGFuZCByZXNvbHZlZC5cblx0XHQvL1xuXHRcdC8vIE5vdGUgdGhhdCBzdXNwZW5kZWRfY291bnQgc3RhcnRzIGZyb20gMSBpbnN0ZWFkIG9mIDAsIHNvIHdlIGNhbiBibG9ja1xuXHRcdC8vIHByb2Nlc3NpbmcgY2FsbGJhY2tzIHVudGlsIGNvbXBvbmVudERpZE1vdW50IGhhcyBiZWVuIGNhbGxlZC4gSW4gYSBzZW5zZVxuXHRcdC8vIG5vZGUgaXMgc3VzcGVuZGVkIGF0IGxlYXN0IHVudGlsIGNvbXBvbmVudERpZE1vdW50IGdldHMgY2FsbGVkIVxuXHRcdC8vXG5cdFx0Ly8gUGVuZGluZyBjYWxsYmFja3MgYXJlIGFkZGVkIHRvIHRoZSBlbmQgb2YgdGhlIG5vZGU6XG5cdFx0Ly8gXHRbc3VzcGVuZGVkX2NvdW50LCByZXNvbHZlZF9jb3VudCwgbmV4dF9ub2RlLCBjYWxsYmFja18wLCBjYWxsYmFja18xLCAuLi5dXG5cdFx0dGhpcy5fbWFwLnNldChjaGlsZHJlbltpXSwgKHRoaXMuX25leHQgPSBbMSwgMCwgdGhpcy5fbmV4dF0pKTtcblx0fVxuXHRyZXR1cm4gcHJvcHMuY2hpbGRyZW47XG59O1xuXG5TdXNwZW5zZUxpc3QucHJvdG90eXBlLmNvbXBvbmVudERpZFVwZGF0ZSA9XG5cdFN1c3BlbnNlTGlzdC5wcm90b3R5cGUuY29tcG9uZW50RGlkTW91bnQgPSBmdW5jdGlvbiAoKSB7XG5cdFx0Ly8gSXRlcmF0ZSB0aHJvdWdoIGFsbCBjaGlsZHJlbiBhZnRlciBtb3VudGluZyBmb3IgdHdvIHJlYXNvbnM6XG5cdFx0Ly8gMS4gQXMgZWFjaCBub2RlW1NVU1BFTkRFRF9DT1VOVF0gc3RhcnRzIGZyb20gMSwgdGhpcyBpdGVyYXRpb24gaW5jcmVhc2VzXG5cdFx0Ly8gICAgZWFjaCBub2RlW1JFTEVBU0VEX0NPVU5UXSBieSAxLCB0aGVyZWZvcmUgYmFsYW5jaW5nIHRoZSBjb3VudGVycy5cblx0XHQvLyAgICBUaGUgbm9kZXMgY2FuIG5vdyBiZSBjb21wbGV0ZWx5IGNvbnN1bWVkIGZyb20gdGhlIGxpbmtlZCBsaXN0LlxuXHRcdC8vIDIuIEhhbmRsZSBub2RlcyB0aGF0IG1pZ2h0IGhhdmUgZ290dGVuIHJlc29sdmVkIGJldHdlZW4gcmVuZGVyIGFuZFxuXHRcdC8vICAgIGNvbXBvbmVudERpZE1vdW50LlxuXHRcdHRoaXMuX21hcC5mb3JFYWNoKChub2RlLCBjaGlsZCkgPT4ge1xuXHRcdFx0cmVzb2x2ZSh0aGlzLCBjaGlsZCwgbm9kZSk7XG5cdFx0fSk7XG5cdH07XG4iLCAiLyoqIE5vcm1hbCBoeWRyYXRpb24gdGhhdCBhdHRhY2hlcyB0byBhIERPTSB0cmVlIGJ1dCBkb2VzIG5vdCBkaWZmIGl0LiAqL1xuZXhwb3J0IGNvbnN0IE1PREVfSFlEUkFURSA9IDEgPDwgNTtcbi8qKiBTaWduaWZpZXMgdGhpcyBWTm9kZSBzdXNwZW5kZWQgb24gdGhlIHByZXZpb3VzIHJlbmRlciAqL1xuZXhwb3J0IGNvbnN0IE1PREVfU1VTUEVOREVEID0gMSA8PCA3O1xuLyoqIEluZGljYXRlcyB0aGF0IHRoaXMgbm9kZSBuZWVkcyB0byBiZSBpbnNlcnRlZCB3aGlsZSBwYXRjaGluZyBjaGlsZHJlbiAqL1xuZXhwb3J0IGNvbnN0IElOU0VSVF9WTk9ERSA9IDEgPDwgMTY7XG4vKiogSW5kaWNhdGVzIGEgVk5vZGUgaGFzIGJlZW4gbWF0Y2hlZCB3aXRoIGFub3RoZXIgVk5vZGUgaW4gdGhlIGRpZmYgKi9cbmV4cG9ydCBjb25zdCBNQVRDSEVEID0gMSA8PCAxNztcblxuLyoqIFJlc2V0IGFsbCBtb2RlIGZsYWdzICovXG5leHBvcnQgY29uc3QgUkVTRVRfTU9ERSA9IH4oTU9ERV9IWURSQVRFIHwgTU9ERV9TVVNQRU5ERUQpO1xuXG5leHBvcnQgY29uc3QgRU1QVFlfT0JKID0gLyoqIEB0eXBlIHthbnl9ICovICh7fSk7XG5leHBvcnQgY29uc3QgRU1QVFlfQVJSID0gW107XG5leHBvcnQgY29uc3QgSVNfTk9OX0RJTUVOU0lPTkFMID1cblx0L2FjaXR8ZXgoPzpzfGd8bnxwfCQpfHJwaHxncmlkfG93c3xtbmN8bnR3fGluZVtjaF18em9vfF5vcmR8aXRlcmEvaTtcbiIsICJpbXBvcnQgeyBjcmVhdGVFbGVtZW50LCByZW5kZXIgfSBmcm9tICdwcmVhY3QnO1xuXG4vKipcbiAqIEBwYXJhbSB7aW1wb3J0KCcuLi8uLi9zcmMvaW5kZXgnKS5SZW5kZXJhYmxlUHJvcHM8eyBjb250ZXh0OiBhbnkgfT59IHByb3BzXG4gKi9cbmZ1bmN0aW9uIENvbnRleHRQcm92aWRlcihwcm9wcykge1xuXHR0aGlzLmdldENoaWxkQ29udGV4dCA9ICgpID0+IHByb3BzLmNvbnRleHQ7XG5cdHJldHVybiBwcm9wcy5jaGlsZHJlbjtcbn1cblxuLyoqXG4gKiBQb3J0YWwgY29tcG9uZW50XG4gKiBAdGhpcyB7aW1wb3J0KCcuL2ludGVybmFsJykuQ29tcG9uZW50fVxuICogQHBhcmFtIHtvYmplY3QgfCBudWxsIHwgdW5kZWZpbmVkfSBwcm9wc1xuICpcbiAqIFRPRE86IHVzZSBjcmVhdGVSb290KCkgaW5zdGVhZCBvZiBmYWtlIHJvb3RcbiAqL1xuZnVuY3Rpb24gUG9ydGFsKHByb3BzKSB7XG5cdGNvbnN0IF90aGlzID0gdGhpcztcblx0bGV0IGNvbnRhaW5lciA9IHByb3BzLl9jb250YWluZXI7XG5cblx0X3RoaXMuY29tcG9uZW50V2lsbFVubW91bnQgPSBmdW5jdGlvbiAoKSB7XG5cdFx0cmVuZGVyKG51bGwsIF90aGlzLl90ZW1wKTtcblx0XHRfdGhpcy5fdGVtcCA9IG51bGw7XG5cdFx0X3RoaXMuX2NvbnRhaW5lciA9IG51bGw7XG5cdH07XG5cblx0Ly8gV2hlbiB3ZSBjaGFuZ2UgY29udGFpbmVyIHdlIHNob3VsZCBjbGVhciBvdXIgb2xkIGNvbnRhaW5lciBhbmRcblx0Ly8gaW5kaWNhdGUgYSBuZXcgbW91bnQuXG5cdGlmIChfdGhpcy5fY29udGFpbmVyICYmIF90aGlzLl9jb250YWluZXIgIT09IGNvbnRhaW5lcikge1xuXHRcdF90aGlzLmNvbXBvbmVudFdpbGxVbm1vdW50KCk7XG5cdH1cblxuXHRpZiAoIV90aGlzLl90ZW1wKSB7XG5cdFx0X3RoaXMuX2NvbnRhaW5lciA9IGNvbnRhaW5lcjtcblxuXHRcdC8vIENyZWF0ZSBhIGZha2UgRE9NIHBhcmVudCBub2RlIHRoYXQgbWFuYWdlcyBhIHN1YnNldCBvZiBgY29udGFpbmVyYCdzIGNoaWxkcmVuOlxuXHRcdF90aGlzLl90ZW1wID0ge1xuXHRcdFx0bm9kZVR5cGU6IDEsXG5cdFx0XHRwYXJlbnROb2RlOiBjb250YWluZXIsXG5cdFx0XHRjaGlsZE5vZGVzOiBbXSxcblx0XHRcdGNvbnRhaW5zOiAoKSA9PiB0cnVlLFxuXHRcdFx0YXBwZW5kQ2hpbGQoY2hpbGQpIHtcblx0XHRcdFx0dGhpcy5jaGlsZE5vZGVzLnB1c2goY2hpbGQpO1xuXHRcdFx0XHRfdGhpcy5fY29udGFpbmVyLmFwcGVuZENoaWxkKGNoaWxkKTtcblx0XHRcdH0sXG5cdFx0XHRpbnNlcnRCZWZvcmUoY2hpbGQsIGJlZm9yZSkge1xuXHRcdFx0XHR0aGlzLmNoaWxkTm9kZXMucHVzaChjaGlsZCk7XG5cdFx0XHRcdF90aGlzLl9jb250YWluZXIuYXBwZW5kQ2hpbGQoY2hpbGQpO1xuXHRcdFx0fSxcblx0XHRcdHJlbW92ZUNoaWxkKGNoaWxkKSB7XG5cdFx0XHRcdHRoaXMuY2hpbGROb2Rlcy5zcGxpY2UodGhpcy5jaGlsZE5vZGVzLmluZGV4T2YoY2hpbGQpID4+PiAxLCAxKTtcblx0XHRcdFx0X3RoaXMuX2NvbnRhaW5lci5yZW1vdmVDaGlsZChjaGlsZCk7XG5cdFx0XHR9XG5cdFx0fTtcblx0fVxuXG5cdC8vIFJlbmRlciBvdXIgd3JhcHBpbmcgZWxlbWVudCBpbnRvIHRlbXAuXG5cdHJlbmRlcihcblx0XHRjcmVhdGVFbGVtZW50KENvbnRleHRQcm92aWRlciwgeyBjb250ZXh0OiBfdGhpcy5jb250ZXh0IH0sIHByb3BzLl92bm9kZSksXG5cdFx0X3RoaXMuX3RlbXBcblx0KTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBgUG9ydGFsYCB0byBjb250aW51ZSByZW5kZXJpbmcgdGhlIHZub2RlIHRyZWUgYXQgYSBkaWZmZXJlbnQgRE9NIG5vZGVcbiAqIEBwYXJhbSB7aW1wb3J0KCcuL2ludGVybmFsJykuVk5vZGV9IHZub2RlIFRoZSB2bm9kZSB0byByZW5kZXJcbiAqIEBwYXJhbSB7aW1wb3J0KCcuL2ludGVybmFsJykuUHJlYWN0RWxlbWVudH0gY29udGFpbmVyIFRoZSBET00gbm9kZSB0byBjb250aW51ZSByZW5kZXJpbmcgaW4gdG8uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQb3J0YWwodm5vZGUsIGNvbnRhaW5lcikge1xuXHRjb25zdCBlbCA9IGNyZWF0ZUVsZW1lbnQoUG9ydGFsLCB7IF92bm9kZTogdm5vZGUsIF9jb250YWluZXI6IGNvbnRhaW5lciB9KTtcblx0ZWwuY29udGFpbmVySW5mbyA9IGNvbnRhaW5lcjtcblx0cmV0dXJuIGVsO1xufVxuIiwgImltcG9ydCB7XG5cdHJlbmRlciBhcyBwcmVhY3RSZW5kZXIsXG5cdGh5ZHJhdGUgYXMgcHJlYWN0SHlkcmF0ZSxcblx0b3B0aW9ucyxcblx0dG9DaGlsZEFycmF5LFxuXHRDb21wb25lbnRcbn0gZnJvbSAncHJlYWN0JztcbmltcG9ydCB7XG5cdHVzZUNhbGxiYWNrLFxuXHR1c2VDb250ZXh0LFxuXHR1c2VEZWJ1Z1ZhbHVlLFxuXHR1c2VFZmZlY3QsXG5cdHVzZUlkLFxuXHR1c2VJbXBlcmF0aXZlSGFuZGxlLFxuXHR1c2VMYXlvdXRFZmZlY3QsXG5cdHVzZU1lbW8sXG5cdHVzZVJlZHVjZXIsXG5cdHVzZVJlZixcblx0dXNlU3RhdGVcbn0gZnJvbSAncHJlYWN0L2hvb2tzJztcbmltcG9ydCB7XG5cdHVzZURlZmVycmVkVmFsdWUsXG5cdHVzZUluc2VydGlvbkVmZmVjdCxcblx0dXNlU3luY0V4dGVybmFsU3RvcmUsXG5cdHVzZVRyYW5zaXRpb25cbn0gZnJvbSAnLi9pbmRleCc7XG5cbmV4cG9ydCBjb25zdCBSRUFDVF9FTEVNRU5UX1RZUEUgPVxuXHQodHlwZW9mIFN5bWJvbCAhPSAndW5kZWZpbmVkJyAmJiBTeW1ib2wuZm9yICYmIFN5bWJvbC5mb3IoJ3JlYWN0LmVsZW1lbnQnKSkgfHxcblx0MHhlYWM3O1xuXG5jb25zdCBDQU1FTF9QUk9QUyA9XG5cdC9eKD86YWNjZW50fGFsaWdubWVudHxhcmFiaWN8YmFzZWxpbmV8Y2FwfGNsaXAoPyFQYXRoVSl8Y29sb3J8ZG9taW5hbnR8ZmlsbHxmbG9vZHxmb250fGdseXBoKD8hUil8aG9yaXp8aW1hZ2UoIVMpfGxldHRlcnxsaWdodGluZ3xtYXJrZXIoPyFIfFd8VSl8b3ZlcmxpbmV8cGFpbnR8cG9pbnRlcnxzaGFwZXxzdG9wfHN0cmlrZXRocm91Z2h8c3Ryb2tlfHRleHQoPyFMKXx0cmFuc2Zvcm18dW5kZXJsaW5lfHVuaWNvZGV8dW5pdHN8dnx2ZWN0b3J8dmVydHx3b3JkfHdyaXRpbmd8eCg/IUMpKVtBLVpdLztcbmNvbnN0IE9OX0FOSSA9IC9eb24oQW5pfFRyYXxUb3V8QmVmb3JlSW5wfENvbXBvKS87XG5jb25zdCBDQU1FTF9SRVBMQUNFID0gL1tBLVowLTldL2c7XG5jb25zdCBJU19ET00gPSB0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnO1xuXG4vLyBJbnB1dCB0eXBlcyBmb3Igd2hpY2ggb25jaGFuZ2Ugc2hvdWxkIG5vdCBiZSBjb252ZXJ0ZWQgdG8gb25pbnB1dC5cbi8vIHR5cGU9XCJmaWxlfGNoZWNrYm94fHJhZGlvXCIsIHBsdXMgXCJyYW5nZVwiIGluIElFMTEuXG4vLyAoSUUxMSBkb2Vzbid0IHN1cHBvcnQgU3ltYm9sLCB3aGljaCB3ZSB1c2UgaGVyZSB0byB0dXJuIGByYWRgIGludG8gYHJhYCB3aGljaCBtYXRjaGVzIFwicmFuZ2VcIilcbmNvbnN0IG9uQ2hhbmdlSW5wdXRUeXBlID0gdHlwZSA9PlxuXHQodHlwZW9mIFN5bWJvbCAhPSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgU3ltYm9sKCkgPT0gJ3N5bWJvbCdcblx0XHQ/IC9maWx8Y2hlfHJhZC9cblx0XHQ6IC9maWx8Y2hlfHJhL1xuXHQpLnRlc3QodHlwZSk7XG5cbi8vIFNvbWUgbGlicmFyaWVzIGxpa2UgYHJlYWN0LXZpcnR1YWxpemVkYCBleHBsaWNpdGx5IGNoZWNrIGZvciB0aGlzLlxuQ29tcG9uZW50LnByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50ID0ge307XG5cbi8vIGBVTlNBRkVfKmAgbGlmZWN5Y2xlIGhvb2tzXG4vLyBQcmVhY3Qgb25seSBldmVyIGludm9rZXMgdGhlIHVucHJlZml4ZWQgbWV0aG9kcy5cbi8vIEhlcmUgd2UgcHJvdmlkZSBhIGJhc2UgXCJmYWxsYmFja1wiIGltcGxlbWVudGF0aW9uIHRoYXQgY2FsbHMgYW55IGRlZmluZWQgVU5TQUZFXyBwcmVmaXhlZCBtZXRob2QuXG4vLyAtIElmIGEgY29tcG9uZW50IGRlZmluZXMgaXRzIG93biBgY29tcG9uZW50RGlkTW91bnQoKWAgKGluY2x1ZGluZyB2aWEgZGVmaW5lUHJvcGVydHkpLCB1c2UgdGhhdC5cbi8vIC0gSWYgYSBjb21wb25lbnQgZGVmaW5lcyBgVU5TQUZFX2NvbXBvbmVudERpZE1vdW50KClgLCBgY29tcG9uZW50RGlkTW91bnRgIGlzIHRoZSBhbGlhcyBnZXR0ZXIvc2V0dGVyLlxuLy8gLSBJZiBhbnl0aGluZyBhc3NpZ25zIHRvIGFuIGBVTlNBRkVfKmAgcHJvcGVydHksIHRoZSBhc3NpZ25tZW50IGlzIGZvcndhcmRlZCB0byB0aGUgdW5wcmVmaXhlZCBwcm9wZXJ0eS5cbi8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vcHJlYWN0anMvcHJlYWN0L2lzc3Vlcy8xOTQxXG5bXG5cdCdjb21wb25lbnRXaWxsTW91bnQnLFxuXHQnY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcycsXG5cdCdjb21wb25lbnRXaWxsVXBkYXRlJ1xuXS5mb3JFYWNoKGtleSA9PiB7XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShDb21wb25lbnQucHJvdG90eXBlLCBrZXksIHtcblx0XHRjb25maWd1cmFibGU6IHRydWUsXG5cdFx0Z2V0KCkge1xuXHRcdFx0cmV0dXJuIHRoaXNbJ1VOU0FGRV8nICsga2V5XTtcblx0XHR9LFxuXHRcdHNldCh2KSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywga2V5LCB7XG5cdFx0XHRcdGNvbmZpZ3VyYWJsZTogdHJ1ZSxcblx0XHRcdFx0d3JpdGFibGU6IHRydWUsXG5cdFx0XHRcdHZhbHVlOiB2XG5cdFx0XHR9KTtcblx0XHR9XG5cdH0pO1xufSk7XG5cbi8qKlxuICogUHJveHkgcmVuZGVyKCkgc2luY2UgUmVhY3QgcmV0dXJucyBhIENvbXBvbmVudCByZWZlcmVuY2UuXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi9pbnRlcm5hbCcpLlZOb2RlfSB2bm9kZSBWTm9kZSB0cmVlIHRvIHJlbmRlclxuICogQHBhcmFtIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5QcmVhY3RFbGVtZW50fSBwYXJlbnQgRE9NIG5vZGUgdG8gcmVuZGVyIHZub2RlIHRyZWUgaW50b1xuICogQHBhcmFtIHsoKSA9PiB2b2lkfSBbY2FsbGJhY2tdIE9wdGlvbmFsIGNhbGxiYWNrIHRoYXQgd2lsbCBiZSBjYWxsZWQgYWZ0ZXIgcmVuZGVyaW5nXG4gKiBAcmV0dXJucyB7aW1wb3J0KCcuL2ludGVybmFsJykuQ29tcG9uZW50IHwgbnVsbH0gVGhlIHJvb3QgY29tcG9uZW50IHJlZmVyZW5jZSBvciBudWxsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXIodm5vZGUsIHBhcmVudCwgY2FsbGJhY2spIHtcblx0Ly8gUmVhY3QgZGVzdHJveXMgYW55IGV4aXN0aW5nIERPTSBub2Rlcywgc2VlICMxNzI3XG5cdC8vIC4uLmJ1dCBvbmx5IG9uIHRoZSBmaXJzdCByZW5kZXIsIHNlZSAjMTgyOFxuXHRpZiAocGFyZW50Ll9jaGlsZHJlbiA9PSBudWxsKSB7XG5cdFx0cGFyZW50LnRleHRDb250ZW50ID0gJyc7XG5cdH1cblxuXHRwcmVhY3RSZW5kZXIodm5vZGUsIHBhcmVudCk7XG5cdGlmICh0eXBlb2YgY2FsbGJhY2sgPT0gJ2Z1bmN0aW9uJykgY2FsbGJhY2soKTtcblxuXHRyZXR1cm4gdm5vZGUgPyB2bm9kZS5fY29tcG9uZW50IDogbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGh5ZHJhdGUodm5vZGUsIHBhcmVudCwgY2FsbGJhY2spIHtcblx0cHJlYWN0SHlkcmF0ZSh2bm9kZSwgcGFyZW50KTtcblx0aWYgKHR5cGVvZiBjYWxsYmFjayA9PSAnZnVuY3Rpb24nKSBjYWxsYmFjaygpO1xuXG5cdHJldHVybiB2bm9kZSA/IHZub2RlLl9jb21wb25lbnQgOiBudWxsO1xufVxuXG5sZXQgb2xkRXZlbnRIb29rID0gb3B0aW9ucy5ldmVudDtcbm9wdGlvbnMuZXZlbnQgPSBlID0+IHtcblx0aWYgKG9sZEV2ZW50SG9vaykgZSA9IG9sZEV2ZW50SG9vayhlKTtcblxuXHRlLnBlcnNpc3QgPSBlbXB0eTtcblx0ZS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCA9IGlzUHJvcGFnYXRpb25TdG9wcGVkO1xuXHRlLmlzRGVmYXVsdFByZXZlbnRlZCA9IGlzRGVmYXVsdFByZXZlbnRlZDtcblx0cmV0dXJuIChlLm5hdGl2ZUV2ZW50ID0gZSk7XG59O1xuXG5mdW5jdGlvbiBlbXB0eSgpIHt9XG5cbmZ1bmN0aW9uIGlzUHJvcGFnYXRpb25TdG9wcGVkKCkge1xuXHRyZXR1cm4gdGhpcy5jYW5jZWxCdWJibGU7XG59XG5cbmZ1bmN0aW9uIGlzRGVmYXVsdFByZXZlbnRlZCgpIHtcblx0cmV0dXJuIHRoaXMuZGVmYXVsdFByZXZlbnRlZDtcbn1cblxuY29uc3QgY2xhc3NOYW1lRGVzY3JpcHRvck5vbkVudW1iZXJhYmxlID0ge1xuXHRlbnVtZXJhYmxlOiBmYWxzZSxcblx0Y29uZmlndXJhYmxlOiB0cnVlLFxuXHRnZXQoKSB7XG5cdFx0cmV0dXJuIHRoaXMuY2xhc3M7XG5cdH1cbn07XG5cbmZ1bmN0aW9uIGhhbmRsZURvbVZOb2RlKHZub2RlKSB7XG5cdGxldCBwcm9wcyA9IHZub2RlLnByb3BzLFxuXHRcdHR5cGUgPSB2bm9kZS50eXBlLFxuXHRcdG5vcm1hbGl6ZWRQcm9wcyA9IHt9O1xuXG5cdGxldCBpc05vbkRhc2hlZFR5cGUgPSB0eXBlLmluZGV4T2YoJy0nKSA9PT0gLTE7XG5cdGZvciAobGV0IGkgaW4gcHJvcHMpIHtcblx0XHRsZXQgdmFsdWUgPSBwcm9wc1tpXTtcblxuXHRcdGlmIChcblx0XHRcdChpID09PSAndmFsdWUnICYmICdkZWZhdWx0VmFsdWUnIGluIHByb3BzICYmIHZhbHVlID09IG51bGwpIHx8XG5cdFx0XHQvLyBFbXVsYXRlIFJlYWN0J3MgYmVoYXZpb3Igb2Ygbm90IHJlbmRlcmluZyB0aGUgY29udGVudHMgb2Ygbm9zY3JpcHQgdGFncyBvbiB0aGUgY2xpZW50LlxuXHRcdFx0KElTX0RPTSAmJiBpID09PSAnY2hpbGRyZW4nICYmIHR5cGUgPT09ICdub3NjcmlwdCcpIHx8XG5cdFx0XHRpID09PSAnY2xhc3MnIHx8XG5cdFx0XHRpID09PSAnY2xhc3NOYW1lJ1xuXHRcdCkge1xuXHRcdFx0Ly8gU2tpcCBhcHBseWluZyB2YWx1ZSBpZiBpdCBpcyBudWxsL3VuZGVmaW5lZCBhbmQgd2UgYWxyZWFkeSBzZXRcblx0XHRcdC8vIGEgZGVmYXVsdCB2YWx1ZVxuXHRcdFx0Y29udGludWU7XG5cdFx0fVxuXG5cdFx0bGV0IGxvd2VyQ2FzZWQgPSBpLnRvTG93ZXJDYXNlKCk7XG5cdFx0aWYgKGkgPT09ICdkZWZhdWx0VmFsdWUnICYmICd2YWx1ZScgaW4gcHJvcHMgJiYgcHJvcHMudmFsdWUgPT0gbnVsbCkge1xuXHRcdFx0Ly8gYGRlZmF1bHRWYWx1ZWAgaXMgdHJlYXRlZCBhcyBhIGZhbGxiYWNrIGB2YWx1ZWAgd2hlbiBhIHZhbHVlIHByb3AgaXMgcHJlc2VudCBidXQgbnVsbC91bmRlZmluZWQuXG5cdFx0XHQvLyBgZGVmYXVsdFZhbHVlYCBmb3IgRWxlbWVudHMgd2l0aCBubyB2YWx1ZSBwcm9wIGlzIHRoZSBzYW1lIGFzIHRoZSBET00gZGVmYXVsdFZhbHVlIHByb3BlcnR5LlxuXHRcdFx0aSA9ICd2YWx1ZSc7XG5cdFx0fSBlbHNlIGlmIChpID09PSAnZG93bmxvYWQnICYmIHZhbHVlID09PSB0cnVlKSB7XG5cdFx0XHQvLyBDYWxsaW5nIGBzZXRBdHRyaWJ1dGVgIHdpdGggYSB0cnV0aHkgdmFsdWUgd2lsbCBsZWFkIHRvIGl0IGJlaW5nXG5cdFx0XHQvLyBwYXNzZWQgYXMgYSBzdHJpbmdpZmllZCB2YWx1ZSwgZS5nLiBgZG93bmxvYWQ9XCJ0cnVlXCJgLiBSZWFjdFxuXHRcdFx0Ly8gY29udmVydHMgaXQgdG8gYW4gZW1wdHkgc3RyaW5nIGluc3RlYWQsIG90aGVyd2lzZSB0aGUgYXR0cmlidXRlXG5cdFx0XHQvLyB2YWx1ZSB3aWxsIGJlIHVzZWQgYXMgdGhlIGZpbGUgbmFtZSBhbmQgdGhlIGZpbGUgd2lsbCBiZSBjYWxsZWRcblx0XHRcdC8vIFwidHJ1ZVwiIHVwb24gZG93bmxvYWRpbmcgaXQuXG5cdFx0XHR2YWx1ZSA9ICcnO1xuXHRcdH0gZWxzZSBpZiAobG93ZXJDYXNlZCA9PT0gJ3RyYW5zbGF0ZScgJiYgdmFsdWUgPT09ICdubycpIHtcblx0XHRcdHZhbHVlID0gZmFsc2U7XG5cdFx0fSBlbHNlIGlmIChsb3dlckNhc2VkWzBdID09PSAnbycgJiYgbG93ZXJDYXNlZFsxXSA9PT0gJ24nKSB7XG5cdFx0XHRpZiAobG93ZXJDYXNlZCA9PT0gJ29uZG91YmxlY2xpY2snKSB7XG5cdFx0XHRcdGkgPSAnb25kYmxjbGljayc7XG5cdFx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0XHRsb3dlckNhc2VkID09PSAnb25jaGFuZ2UnICYmXG5cdFx0XHRcdCh0eXBlID09PSAnaW5wdXQnIHx8IHR5cGUgPT09ICd0ZXh0YXJlYScpICYmXG5cdFx0XHRcdCFvbkNoYW5nZUlucHV0VHlwZShwcm9wcy50eXBlKVxuXHRcdFx0KSB7XG5cdFx0XHRcdGxvd2VyQ2FzZWQgPSBpID0gJ29uaW5wdXQnO1xuXHRcdFx0fSBlbHNlIGlmIChsb3dlckNhc2VkID09PSAnb25mb2N1cycpIHtcblx0XHRcdFx0aSA9ICdvbmZvY3VzaW4nO1xuXHRcdFx0fSBlbHNlIGlmIChsb3dlckNhc2VkID09PSAnb25ibHVyJykge1xuXHRcdFx0XHRpID0gJ29uZm9jdXNvdXQnO1xuXHRcdFx0fSBlbHNlIGlmIChPTl9BTkkudGVzdChpKSkge1xuXHRcdFx0XHRpID0gbG93ZXJDYXNlZDtcblx0XHRcdH1cblx0XHR9IGVsc2UgaWYgKGlzTm9uRGFzaGVkVHlwZSAmJiBDQU1FTF9QUk9QUy50ZXN0KGkpKSB7XG5cdFx0XHRpID0gaS5yZXBsYWNlKENBTUVMX1JFUExBQ0UsICctJCYnKS50b0xvd2VyQ2FzZSgpO1xuXHRcdH0gZWxzZSBpZiAodmFsdWUgPT09IG51bGwpIHtcblx0XHRcdHZhbHVlID0gdW5kZWZpbmVkO1xuXHRcdH1cblxuXHRcdC8vIEFkZCBzdXBwb3J0IGZvciBvbklucHV0IGFuZCBvbkNoYW5nZSwgc2VlICMzNTYxXG5cdFx0Ly8gaWYgd2UgaGF2ZSBhbiBvbmlucHV0IHByb3AgYWxyZWFkeSBjaGFuZ2UgaXQgdG8gb25pbnB1dENhcHR1cmVcblx0XHRpZiAobG93ZXJDYXNlZCA9PT0gJ29uaW5wdXQnKSB7XG5cdFx0XHRpID0gbG93ZXJDYXNlZDtcblx0XHRcdGlmIChub3JtYWxpemVkUHJvcHNbaV0pIHtcblx0XHRcdFx0aSA9ICdvbmlucHV0Q2FwdHVyZSc7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0bm9ybWFsaXplZFByb3BzW2ldID0gdmFsdWU7XG5cdH1cblxuXHQvLyBBZGQgc3VwcG9ydCBmb3IgYXJyYXkgc2VsZWN0IHZhbHVlczogPHNlbGVjdCBtdWx0aXBsZSB2YWx1ZT17W119IC8+XG5cdGlmIChcblx0XHR0eXBlID09ICdzZWxlY3QnICYmXG5cdFx0bm9ybWFsaXplZFByb3BzLm11bHRpcGxlICYmXG5cdFx0QXJyYXkuaXNBcnJheShub3JtYWxpemVkUHJvcHMudmFsdWUpXG5cdCkge1xuXHRcdC8vIGZvckVhY2goKSBhbHdheXMgcmV0dXJucyB1bmRlZmluZWQsIHdoaWNoIHdlIGFidXNlIGhlcmUgdG8gdW5zZXQgdGhlIHZhbHVlIHByb3AuXG5cdFx0bm9ybWFsaXplZFByb3BzLnZhbHVlID0gdG9DaGlsZEFycmF5KHByb3BzLmNoaWxkcmVuKS5mb3JFYWNoKGNoaWxkID0+IHtcblx0XHRcdGNoaWxkLnByb3BzLnNlbGVjdGVkID1cblx0XHRcdFx0bm9ybWFsaXplZFByb3BzLnZhbHVlLmluZGV4T2YoY2hpbGQucHJvcHMudmFsdWUpICE9IC0xO1xuXHRcdH0pO1xuXHR9XG5cblx0Ly8gQWRkaW5nIHN1cHBvcnQgZm9yIGRlZmF1bHRWYWx1ZSBpbiBzZWxlY3QgdGFnXG5cdGlmICh0eXBlID09ICdzZWxlY3QnICYmIG5vcm1hbGl6ZWRQcm9wcy5kZWZhdWx0VmFsdWUgIT0gbnVsbCkge1xuXHRcdG5vcm1hbGl6ZWRQcm9wcy52YWx1ZSA9IHRvQ2hpbGRBcnJheShwcm9wcy5jaGlsZHJlbikuZm9yRWFjaChjaGlsZCA9PiB7XG5cdFx0XHRpZiAobm9ybWFsaXplZFByb3BzLm11bHRpcGxlKSB7XG5cdFx0XHRcdGNoaWxkLnByb3BzLnNlbGVjdGVkID1cblx0XHRcdFx0XHRub3JtYWxpemVkUHJvcHMuZGVmYXVsdFZhbHVlLmluZGV4T2YoY2hpbGQucHJvcHMudmFsdWUpICE9IC0xO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y2hpbGQucHJvcHMuc2VsZWN0ZWQgPVxuXHRcdFx0XHRcdG5vcm1hbGl6ZWRQcm9wcy5kZWZhdWx0VmFsdWUgPT0gY2hpbGQucHJvcHMudmFsdWU7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHRpZiAocHJvcHMuY2xhc3MgJiYgIXByb3BzLmNsYXNzTmFtZSkge1xuXHRcdG5vcm1hbGl6ZWRQcm9wcy5jbGFzcyA9IHByb3BzLmNsYXNzO1xuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShcblx0XHRcdG5vcm1hbGl6ZWRQcm9wcyxcblx0XHRcdCdjbGFzc05hbWUnLFxuXHRcdFx0Y2xhc3NOYW1lRGVzY3JpcHRvck5vbkVudW1iZXJhYmxlXG5cdFx0KTtcblx0fSBlbHNlIGlmIChwcm9wcy5jbGFzc05hbWUgJiYgIXByb3BzLmNsYXNzKSB7XG5cdFx0bm9ybWFsaXplZFByb3BzLmNsYXNzID0gbm9ybWFsaXplZFByb3BzLmNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZTtcblx0fSBlbHNlIGlmIChwcm9wcy5jbGFzcyAmJiBwcm9wcy5jbGFzc05hbWUpIHtcblx0XHRub3JtYWxpemVkUHJvcHMuY2xhc3MgPSBub3JtYWxpemVkUHJvcHMuY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lO1xuXHR9XG5cblx0dm5vZGUucHJvcHMgPSBub3JtYWxpemVkUHJvcHM7XG59XG5cbmxldCBvbGRWTm9kZUhvb2sgPSBvcHRpb25zLnZub2RlO1xub3B0aW9ucy52bm9kZSA9IHZub2RlID0+IHtcblx0Ly8gb25seSBub3JtYWxpemUgcHJvcHMgb24gRWxlbWVudCBub2Rlc1xuXHRpZiAodHlwZW9mIHZub2RlLnR5cGUgPT09ICdzdHJpbmcnKSB7XG5cdFx0aGFuZGxlRG9tVk5vZGUodm5vZGUpO1xuXHR9XG5cblx0dm5vZGUuJCR0eXBlb2YgPSBSRUFDVF9FTEVNRU5UX1RZUEU7XG5cblx0aWYgKG9sZFZOb2RlSG9vaykgb2xkVk5vZGVIb29rKHZub2RlKTtcbn07XG5cbi8vIE9ubHkgbmVlZGVkIGZvciByZWFjdC1yZWxheVxubGV0IGN1cnJlbnRDb21wb25lbnQ7XG5jb25zdCBvbGRCZWZvcmVSZW5kZXIgPSBvcHRpb25zLl9yZW5kZXI7XG5vcHRpb25zLl9yZW5kZXIgPSBmdW5jdGlvbiAodm5vZGUpIHtcblx0aWYgKG9sZEJlZm9yZVJlbmRlcikge1xuXHRcdG9sZEJlZm9yZVJlbmRlcih2bm9kZSk7XG5cdH1cblx0Y3VycmVudENvbXBvbmVudCA9IHZub2RlLl9jb21wb25lbnQ7XG59O1xuXG5jb25zdCBvbGREaWZmZWQgPSBvcHRpb25zLmRpZmZlZDtcbi8qKiBAdHlwZSB7KHZub2RlOiBpbXBvcnQoJy4vaW50ZXJuYWwnKS5WTm9kZSkgPT4gdm9pZH0gKi9cbm9wdGlvbnMuZGlmZmVkID0gZnVuY3Rpb24gKHZub2RlKSB7XG5cdGlmIChvbGREaWZmZWQpIHtcblx0XHRvbGREaWZmZWQodm5vZGUpO1xuXHR9XG5cblx0Y29uc3QgcHJvcHMgPSB2bm9kZS5wcm9wcztcblx0Y29uc3QgZG9tID0gdm5vZGUuX2RvbTtcblxuXHRpZiAoXG5cdFx0ZG9tICE9IG51bGwgJiZcblx0XHR2bm9kZS50eXBlID09PSAndGV4dGFyZWEnICYmXG5cdFx0J3ZhbHVlJyBpbiBwcm9wcyAmJlxuXHRcdHByb3BzLnZhbHVlICE9PSBkb20udmFsdWVcblx0KSB7XG5cdFx0ZG9tLnZhbHVlID0gcHJvcHMudmFsdWUgPT0gbnVsbCA/ICcnIDogcHJvcHMudmFsdWU7XG5cdH1cblxuXHRjdXJyZW50Q29tcG9uZW50ID0gbnVsbDtcbn07XG5cbi8vIFRoaXMgaXMgYSB2ZXJ5IHZlcnkgcHJpdmF0ZSBpbnRlcm5hbCBmdW5jdGlvbiBmb3IgUmVhY3QgaXRcbi8vIGlzIHVzZWQgdG8gc29ydC1vZiBkbyBydW50aW1lIGRlcGVuZGVuY3kgaW5qZWN0aW9uLlxuZXhwb3J0IGNvbnN0IF9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEID0ge1xuXHRSZWFjdEN1cnJlbnREaXNwYXRjaGVyOiB7XG5cdFx0Y3VycmVudDoge1xuXHRcdFx0cmVhZENvbnRleHQoY29udGV4dCkge1xuXHRcdFx0XHRyZXR1cm4gY3VycmVudENvbXBvbmVudC5fZ2xvYmFsQ29udGV4dFtjb250ZXh0Ll9pZF0ucHJvcHMudmFsdWU7XG5cdFx0XHR9LFxuXHRcdFx0dXNlQ2FsbGJhY2ssXG5cdFx0XHR1c2VDb250ZXh0LFxuXHRcdFx0dXNlRGVidWdWYWx1ZSxcblx0XHRcdHVzZURlZmVycmVkVmFsdWUsXG5cdFx0XHR1c2VFZmZlY3QsXG5cdFx0XHR1c2VJZCxcblx0XHRcdHVzZUltcGVyYXRpdmVIYW5kbGUsXG5cdFx0XHR1c2VJbnNlcnRpb25FZmZlY3QsXG5cdFx0XHR1c2VMYXlvdXRFZmZlY3QsXG5cdFx0XHR1c2VNZW1vLFxuXHRcdFx0Ly8gdXNlTXV0YWJsZVNvdXJjZSwgLy8gZXhwZXJpbWVudGFsLW9ubHkgYW5kIHJlcGxhY2VkIGJ5IHVTRVMsIGxpa2VseSBub3Qgd29ydGggc3VwcG9ydGluZ1xuXHRcdFx0dXNlUmVkdWNlcixcblx0XHRcdHVzZVJlZixcblx0XHRcdHVzZVN0YXRlLFxuXHRcdFx0dXNlU3luY0V4dGVybmFsU3RvcmUsXG5cdFx0XHR1c2VUcmFuc2l0aW9uXG5cdFx0fVxuXHR9XG59O1xuIiwgImltcG9ydCB7XG5cdGNyZWF0ZUVsZW1lbnQsXG5cdHJlbmRlciBhcyBwcmVhY3RSZW5kZXIsXG5cdGNsb25lRWxlbWVudCBhcyBwcmVhY3RDbG9uZUVsZW1lbnQsXG5cdGNyZWF0ZVJlZixcblx0Q29tcG9uZW50LFxuXHRjcmVhdGVDb250ZXh0LFxuXHRGcmFnbWVudFxufSBmcm9tICdwcmVhY3QnO1xuaW1wb3J0IHtcblx0dXNlU3RhdGUsXG5cdHVzZUlkLFxuXHR1c2VSZWR1Y2VyLFxuXHR1c2VFZmZlY3QsXG5cdHVzZUxheW91dEVmZmVjdCxcblx0dXNlUmVmLFxuXHR1c2VJbXBlcmF0aXZlSGFuZGxlLFxuXHR1c2VNZW1vLFxuXHR1c2VDYWxsYmFjayxcblx0dXNlQ29udGV4dCxcblx0dXNlRGVidWdWYWx1ZVxufSBmcm9tICdwcmVhY3QvaG9va3MnO1xuaW1wb3J0IHsgUHVyZUNvbXBvbmVudCB9IGZyb20gJy4vUHVyZUNvbXBvbmVudCc7XG5pbXBvcnQgeyBtZW1vIH0gZnJvbSAnLi9tZW1vJztcbmltcG9ydCB7IGZvcndhcmRSZWYgfSBmcm9tICcuL2ZvcndhcmRSZWYnO1xuaW1wb3J0IHsgQ2hpbGRyZW4gfSBmcm9tICcuL0NoaWxkcmVuJztcbmltcG9ydCB7IFN1c3BlbnNlLCBsYXp5IH0gZnJvbSAnLi9zdXNwZW5zZSc7XG5pbXBvcnQgeyBTdXNwZW5zZUxpc3QgfSBmcm9tICcuL3N1c3BlbnNlLWxpc3QnO1xuaW1wb3J0IHsgY3JlYXRlUG9ydGFsIH0gZnJvbSAnLi9wb3J0YWxzJztcbmltcG9ydCB7IGlzIH0gZnJvbSAnLi91dGlsJztcbmltcG9ydCB7XG5cdGh5ZHJhdGUsXG5cdHJlbmRlcixcblx0UkVBQ1RfRUxFTUVOVF9UWVBFLFxuXHRfX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRFxufSBmcm9tICcuL3JlbmRlcic7XG5cbmNvbnN0IHZlcnNpb24gPSAnMTguMy4xJzsgLy8gdHJpY2sgbGlicmFyaWVzIHRvIHRoaW5rIHdlIGFyZSByZWFjdFxuXG4vKipcbiAqIExlZ2FjeSB2ZXJzaW9uIG9mIGNyZWF0ZUVsZW1lbnQuXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi9pbnRlcm5hbCcpLlZOb2RlW1widHlwZVwiXX0gdHlwZSBUaGUgbm9kZSBuYW1lIG9yIENvbXBvbmVudCBjb25zdHJ1Y3RvclxuICovXG5mdW5jdGlvbiBjcmVhdGVGYWN0b3J5KHR5cGUpIHtcblx0cmV0dXJuIGNyZWF0ZUVsZW1lbnQuYmluZChudWxsLCB0eXBlKTtcbn1cblxuLyoqXG4gKiBDaGVjayBpZiB0aGUgcGFzc2VkIGVsZW1lbnQgaXMgYSB2YWxpZCAocClyZWFjdCBub2RlLlxuICogQHBhcmFtIHsqfSBlbGVtZW50IFRoZSBlbGVtZW50IHRvIGNoZWNrXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gaXNWYWxpZEVsZW1lbnQoZWxlbWVudCkge1xuXHRyZXR1cm4gISFlbGVtZW50ICYmIGVsZW1lbnQuJCR0eXBlb2YgPT09IFJFQUNUX0VMRU1FTlRfVFlQRTtcbn1cblxuLyoqXG4gKiBDaGVjayBpZiB0aGUgcGFzc2VkIGVsZW1lbnQgaXMgYSBGcmFnbWVudCBub2RlLlxuICogQHBhcmFtIHsqfSBlbGVtZW50IFRoZSBlbGVtZW50IHRvIGNoZWNrXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gaXNGcmFnbWVudChlbGVtZW50KSB7XG5cdHJldHVybiBpc1ZhbGlkRWxlbWVudChlbGVtZW50KSAmJiBlbGVtZW50LnR5cGUgPT09IEZyYWdtZW50O1xufVxuXG4vKipcbiAqIENoZWNrIGlmIHRoZSBwYXNzZWQgZWxlbWVudCBpcyBhIE1lbW8gbm9kZS5cbiAqIEBwYXJhbSB7Kn0gZWxlbWVudCBUaGUgZWxlbWVudCB0byBjaGVja1xuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGlzTWVtbyhlbGVtZW50KSB7XG5cdHJldHVybiAoXG5cdFx0ISFlbGVtZW50ICYmXG5cdFx0ISFlbGVtZW50LmRpc3BsYXlOYW1lICYmXG5cdFx0KHR5cGVvZiBlbGVtZW50LmRpc3BsYXlOYW1lID09PSAnc3RyaW5nJyB8fFxuXHRcdFx0ZWxlbWVudC5kaXNwbGF5TmFtZSBpbnN0YW5jZW9mIFN0cmluZykgJiZcblx0XHRlbGVtZW50LmRpc3BsYXlOYW1lLnN0YXJ0c1dpdGgoJ01lbW8oJylcblx0KTtcbn1cblxuLyoqXG4gKiBXcmFwIGBjbG9uZUVsZW1lbnRgIHRvIGFib3J0IGlmIHRoZSBwYXNzZWQgZWxlbWVudCBpcyBub3QgYSB2YWxpZCBlbGVtZW50IGFuZCBhcHBseVxuICogYWxsIHZub2RlIG5vcm1hbGl6YXRpb25zLlxuICogQHBhcmFtIHtpbXBvcnQoJy4vaW50ZXJuYWwnKS5WTm9kZX0gZWxlbWVudCBUaGUgdm5vZGUgdG8gY2xvbmVcbiAqIEBwYXJhbSB7b2JqZWN0fSBwcm9wcyBQcm9wcyB0byBhZGQgd2hlbiBjbG9uaW5nXG4gKiBAcGFyYW0ge0FycmF5PGltcG9ydCgnLi9pbnRlcm5hbCcpLkNvbXBvbmVudENoaWxkcmVuPn0gcmVzdCBPcHRpb25hbCBjb21wb25lbnQgY2hpbGRyZW5cbiAqL1xuZnVuY3Rpb24gY2xvbmVFbGVtZW50KGVsZW1lbnQpIHtcblx0aWYgKCFpc1ZhbGlkRWxlbWVudChlbGVtZW50KSkgcmV0dXJuIGVsZW1lbnQ7XG5cdHJldHVybiBwcmVhY3RDbG9uZUVsZW1lbnQuYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcbn1cblxuLyoqXG4gKiBSZW1vdmUgYSBjb21wb25lbnQgdHJlZSBmcm9tIHRoZSBET00sIGluY2x1ZGluZyBzdGF0ZSBhbmQgZXZlbnQgaGFuZGxlcnMuXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi9pbnRlcm5hbCcpLlByZWFjdEVsZW1lbnR9IGNvbnRhaW5lclxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIHVubW91bnRDb21wb25lbnRBdE5vZGUoY29udGFpbmVyKSB7XG5cdGlmIChjb250YWluZXIuX2NoaWxkcmVuKSB7XG5cdFx0cHJlYWN0UmVuZGVyKG51bGwsIGNvbnRhaW5lcik7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblx0cmV0dXJuIGZhbHNlO1xufVxuXG4vKipcbiAqIEdldCB0aGUgbWF0Y2hpbmcgRE9NIG5vZGUgZm9yIGEgY29tcG9uZW50XG4gKiBAcGFyYW0ge2ltcG9ydCgnLi9pbnRlcm5hbCcpLkNvbXBvbmVudH0gY29tcG9uZW50XG4gKiBAcmV0dXJucyB7aW1wb3J0KCcuL2ludGVybmFsJykuUHJlYWN0RWxlbWVudCB8IG51bGx9XG4gKi9cbmZ1bmN0aW9uIGZpbmRET01Ob2RlKGNvbXBvbmVudCkge1xuXHRyZXR1cm4gKFxuXHRcdChjb21wb25lbnQgJiZcblx0XHRcdChjb21wb25lbnQuYmFzZSB8fCAoY29tcG9uZW50Lm5vZGVUeXBlID09PSAxICYmIGNvbXBvbmVudCkpKSB8fFxuXHRcdG51bGxcblx0KTtcbn1cblxuLyoqXG4gKiBEZXByZWNhdGVkIHdheSB0byBjb250cm9sIGJhdGNoZWQgcmVuZGVyaW5nIGluc2lkZSB0aGUgcmVjb25jaWxlciwgYnV0IHdlXG4gKiBhbHJlYWR5IHNjaGVkdWxlIGluIGJhdGNoZXMgaW5zaWRlIG91ciByZW5kZXJpbmcgY29kZVxuICogQHRlbXBsYXRlIEFyZ1xuICogQHBhcmFtIHsoYXJnOiBBcmcpID0+IHZvaWR9IGNhbGxiYWNrIGZ1bmN0aW9uIHRoYXQgdHJpZ2dlcnMgdGhlIHVwZGF0ZWRcbiAqIEBwYXJhbSB7QXJnfSBbYXJnXSBPcHRpb25hbCBhcmd1bWVudCB0aGF0IGNhbiBiZSBwYXNzZWQgdG8gdGhlIGNhbGxiYWNrXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjYW1lbGNhc2VcbmNvbnN0IHVuc3RhYmxlX2JhdGNoZWRVcGRhdGVzID0gKGNhbGxiYWNrLCBhcmcpID0+IGNhbGxiYWNrKGFyZyk7XG5cbi8qKlxuICogSW4gUmVhY3QsIGBmbHVzaFN5bmNgIGZsdXNoZXMgdGhlIGVudGlyZSB0cmVlIGFuZCBmb3JjZXMgYSByZXJlbmRlci4gSXQnc1xuICogaW1wbG1lbnRlZCBoZXJlIGFzIGEgbm8tb3AuXG4gKiBAdGVtcGxhdGUgQXJnXG4gKiBAdGVtcGxhdGUgUmVzdWx0XG4gKiBAcGFyYW0geyhhcmc6IEFyZykgPT4gUmVzdWx0fSBjYWxsYmFjayBmdW5jdGlvbiB0aGF0IHJ1bnMgYmVmb3JlIHRoZSBmbHVzaFxuICogQHBhcmFtIHtBcmd9IFthcmddIE9wdGlvbmFsIGFyZ3VtZW50IHRoYXQgY2FuIGJlIHBhc3NlZCB0byB0aGUgY2FsbGJhY2tcbiAqIEByZXR1cm5zXG4gKi9cbmNvbnN0IGZsdXNoU3luYyA9IChjYWxsYmFjaywgYXJnKSA9PiBjYWxsYmFjayhhcmcpO1xuXG4vKipcbiAqIFN0cmljdCBNb2RlIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiBQcmVhY3QsIHNvIHdlIHByb3ZpZGUgYSBzdGFuZC1pbiBmb3IgaXRcbiAqIHRoYXQganVzdCByZW5kZXJzIGl0cyBjaGlsZHJlbiB3aXRob3V0IGltcG9zaW5nIGFueSByZXN0cmljdGlvbnMuXG4gKi9cbmNvbnN0IFN0cmljdE1vZGUgPSBGcmFnbWVudDtcblxuZXhwb3J0IGZ1bmN0aW9uIHN0YXJ0VHJhbnNpdGlvbihjYikge1xuXHRjYigpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlRGVmZXJyZWRWYWx1ZSh2YWwpIHtcblx0cmV0dXJuIHZhbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZVRyYW5zaXRpb24oKSB7XG5cdHJldHVybiBbZmFsc2UsIHN0YXJ0VHJhbnNpdGlvbl07XG59XG5cbi8vIFRPRE86IGluIHRoZW9yeSB0aGlzIHNob3VsZCBiZSBkb25lIGFmdGVyIGEgVk5vZGUgaXMgZGlmZmVkIGFzIHdlIHdhbnQgdG8gaW5zZXJ0XG4vLyBzdHlsZXMvLi4uIGJlZm9yZSBpdCBhdHRhY2hlc1xuZXhwb3J0IGNvbnN0IHVzZUluc2VydGlvbkVmZmVjdCA9IHVzZUxheW91dEVmZmVjdDtcblxuLy8gY29tcGF0IHRvIHJlYWN0LWlzXG5leHBvcnQgY29uc3QgaXNFbGVtZW50ID0gaXNWYWxpZEVsZW1lbnQ7XG5cbi8qKlxuICogVGhpcyBpcyB0YWtlbiBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9ibG9iL21haW4vcGFja2FnZXMvdXNlLXN5bmMtZXh0ZXJuYWwtc3RvcmUvc3JjL3VzZVN5bmNFeHRlcm5hbFN0b3JlU2hpbUNsaWVudC5qcyNMODRcbiAqIG9uIGEgaGlnaCBsZXZlbCB0aGlzIGN1dHMgb3V0IHRoZSB3YXJuaW5ncywgLi4uIGFuZCBhdHRlbXB0cyBhIHNtYWxsZXIgaW1wbGVtZW50YXRpb25cbiAqIEB0eXBlZGVmIHt7IF92YWx1ZTogYW55OyBfZ2V0U25hcHNob3Q6ICgpID0+IGFueSB9fSBTdG9yZVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlU3luY0V4dGVybmFsU3RvcmUoc3Vic2NyaWJlLCBnZXRTbmFwc2hvdCkge1xuXHRjb25zdCB2YWx1ZSA9IGdldFNuYXBzaG90KCk7XG5cblx0LyoqXG5cdCAqIEB0eXBlZGVmIHt7IF9pbnN0YW5jZTogU3RvcmUgfX0gU3RvcmVSZWZcblx0ICogQHR5cGUge1tTdG9yZVJlZiwgKHN0b3JlOiBTdG9yZVJlZikgPT4gdm9pZF19XG5cdCAqL1xuXHRjb25zdCBbeyBfaW5zdGFuY2UgfSwgZm9yY2VVcGRhdGVdID0gdXNlU3RhdGUoe1xuXHRcdF9pbnN0YW5jZTogeyBfdmFsdWU6IHZhbHVlLCBfZ2V0U25hcHNob3Q6IGdldFNuYXBzaG90IH1cblx0fSk7XG5cblx0dXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcblx0XHRfaW5zdGFuY2UuX3ZhbHVlID0gdmFsdWU7XG5cdFx0X2luc3RhbmNlLl9nZXRTbmFwc2hvdCA9IGdldFNuYXBzaG90O1xuXG5cdFx0aWYgKGRpZFNuYXBzaG90Q2hhbmdlKF9pbnN0YW5jZSkpIHtcblx0XHRcdGZvcmNlVXBkYXRlKHsgX2luc3RhbmNlIH0pO1xuXHRcdH1cblx0fSwgW3N1YnNjcmliZSwgdmFsdWUsIGdldFNuYXBzaG90XSk7XG5cblx0dXNlRWZmZWN0KCgpID0+IHtcblx0XHRpZiAoZGlkU25hcHNob3RDaGFuZ2UoX2luc3RhbmNlKSkge1xuXHRcdFx0Zm9yY2VVcGRhdGUoeyBfaW5zdGFuY2UgfSk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHN1YnNjcmliZSgoKSA9PiB7XG5cdFx0XHRpZiAoZGlkU25hcHNob3RDaGFuZ2UoX2luc3RhbmNlKSkge1xuXHRcdFx0XHRmb3JjZVVwZGF0ZSh7IF9pbnN0YW5jZSB9KTtcblx0XHRcdH1cblx0XHR9KTtcblx0fSwgW3N1YnNjcmliZV0pO1xuXG5cdHJldHVybiB2YWx1ZTtcbn1cblxuLyoqIEB0eXBlIHsoaW5zdDogU3RvcmUpID0+IGJvb2xlYW59ICovXG5mdW5jdGlvbiBkaWRTbmFwc2hvdENoYW5nZShpbnN0KSB7XG5cdGNvbnN0IGxhdGVzdEdldFNuYXBzaG90ID0gaW5zdC5fZ2V0U25hcHNob3Q7XG5cdGNvbnN0IHByZXZWYWx1ZSA9IGluc3QuX3ZhbHVlO1xuXHR0cnkge1xuXHRcdGNvbnN0IG5leHRWYWx1ZSA9IGxhdGVzdEdldFNuYXBzaG90KCk7XG5cdFx0cmV0dXJuICFpcyhwcmV2VmFsdWUsIG5leHRWYWx1ZSk7XG5cdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cbn1cblxuZXhwb3J0ICogZnJvbSAncHJlYWN0L2hvb2tzJztcbmV4cG9ydCB7XG5cdHZlcnNpb24sXG5cdENoaWxkcmVuLFxuXHRyZW5kZXIsXG5cdGh5ZHJhdGUsXG5cdHVubW91bnRDb21wb25lbnRBdE5vZGUsXG5cdGNyZWF0ZVBvcnRhbCxcblx0Y3JlYXRlRWxlbWVudCxcblx0Y3JlYXRlQ29udGV4dCxcblx0Y3JlYXRlRmFjdG9yeSxcblx0Y2xvbmVFbGVtZW50LFxuXHRjcmVhdGVSZWYsXG5cdEZyYWdtZW50LFxuXHRpc1ZhbGlkRWxlbWVudCxcblx0aXNGcmFnbWVudCxcblx0aXNNZW1vLFxuXHRmaW5kRE9NTm9kZSxcblx0Q29tcG9uZW50LFxuXHRQdXJlQ29tcG9uZW50LFxuXHRtZW1vLFxuXHRmb3J3YXJkUmVmLFxuXHRmbHVzaFN5bmMsXG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjYW1lbGNhc2Vcblx0dW5zdGFibGVfYmF0Y2hlZFVwZGF0ZXMsXG5cdFN0cmljdE1vZGUsXG5cdFN1c3BlbnNlLFxuXHRTdXNwZW5zZUxpc3QsXG5cdGxhenksXG5cdF9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEXG59O1xuXG4vLyBSZWFjdCBjb3BpZXMgdGhlIG5hbWVkIGV4cG9ydHMgdG8gdGhlIGRlZmF1bHQgb25lLlxuZXhwb3J0IGRlZmF1bHQge1xuXHR1c2VTdGF0ZSxcblx0dXNlSWQsXG5cdHVzZVJlZHVjZXIsXG5cdHVzZUVmZmVjdCxcblx0dXNlTGF5b3V0RWZmZWN0LFxuXHR1c2VJbnNlcnRpb25FZmZlY3QsXG5cdHVzZVRyYW5zaXRpb24sXG5cdHVzZURlZmVycmVkVmFsdWUsXG5cdHVzZVN5bmNFeHRlcm5hbFN0b3JlLFxuXHRzdGFydFRyYW5zaXRpb24sXG5cdHVzZVJlZixcblx0dXNlSW1wZXJhdGl2ZUhhbmRsZSxcblx0dXNlTWVtbyxcblx0dXNlQ2FsbGJhY2ssXG5cdHVzZUNvbnRleHQsXG5cdHVzZURlYnVnVmFsdWUsXG5cdHZlcnNpb24sXG5cdENoaWxkcmVuLFxuXHRyZW5kZXIsXG5cdGh5ZHJhdGUsXG5cdHVubW91bnRDb21wb25lbnRBdE5vZGUsXG5cdGNyZWF0ZVBvcnRhbCxcblx0Y3JlYXRlRWxlbWVudCxcblx0Y3JlYXRlQ29udGV4dCxcblx0Y3JlYXRlRmFjdG9yeSxcblx0Y2xvbmVFbGVtZW50LFxuXHRjcmVhdGVSZWYsXG5cdEZyYWdtZW50LFxuXHRpc1ZhbGlkRWxlbWVudCxcblx0aXNFbGVtZW50LFxuXHRpc0ZyYWdtZW50LFxuXHRpc01lbW8sXG5cdGZpbmRET01Ob2RlLFxuXHRDb21wb25lbnQsXG5cdFB1cmVDb21wb25lbnQsXG5cdG1lbW8sXG5cdGZvcndhcmRSZWYsXG5cdGZsdXNoU3luYyxcblx0dW5zdGFibGVfYmF0Y2hlZFVwZGF0ZXMsXG5cdFN0cmljdE1vZGUsXG5cdFN1c3BlbnNlLFxuXHRTdXNwZW5zZUxpc3QsXG5cdGxhenksXG5cdF9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEXG59O1xuIiwgImNvbnN0IEVOQ09ERURfRU5USVRJRVMgPSAvW1wiJjxdLztcblxuLyoqIEBwYXJhbSB7c3RyaW5nfSBzdHIgKi9cbmV4cG9ydCBmdW5jdGlvbiBlbmNvZGVFbnRpdGllcyhzdHIpIHtcblx0Ly8gU2tpcCBhbGwgd29yayBmb3Igc3RyaW5ncyB3aXRoIG5vIGVudGl0aWVzIG5lZWRpbmcgZW5jb2Rpbmc6XG5cdGlmIChzdHIubGVuZ3RoID09PSAwIHx8IEVOQ09ERURfRU5USVRJRVMudGVzdChzdHIpID09PSBmYWxzZSkgcmV0dXJuIHN0cjtcblxuXHRsZXQgbGFzdCA9IDAsXG5cdFx0aSA9IDAsXG5cdFx0b3V0ID0gJycsXG5cdFx0Y2ggPSAnJztcblxuXHQvLyBTZWVrIGZvcndhcmQgaW4gc3RyIHVudGlsIHRoZSBuZXh0IGVudGl0eSBjaGFyOlxuXHRmb3IgKDsgaSA8IHN0ci5sZW5ndGg7IGkrKykge1xuXHRcdHN3aXRjaCAoc3RyLmNoYXJDb2RlQXQoaSkpIHtcblx0XHRcdGNhc2UgMzQ6XG5cdFx0XHRcdGNoID0gJyZxdW90Oyc7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAzODpcblx0XHRcdFx0Y2ggPSAnJmFtcDsnO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgNjA6XG5cdFx0XHRcdGNoID0gJyZsdDsnO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdH1cblx0XHQvLyBBcHBlbmQgc2tpcHBlZC9idWZmZXJlZCBjaGFyYWN0ZXJzIGFuZCB0aGUgZW5jb2RlZCBlbnRpdHk6XG5cdFx0aWYgKGkgIT09IGxhc3QpIG91dCArPSBzdHIuc2xpY2UobGFzdCwgaSk7XG5cdFx0b3V0ICs9IGNoO1xuXHRcdC8vIFN0YXJ0IHRoZSBuZXh0IHNlZWsvYnVmZmVyIGFmdGVyIHRoZSBlbnRpdHkncyBvZmZzZXQ6XG5cdFx0bGFzdCA9IGkgKyAxO1xuXHR9XG5cdGlmIChpICE9PSBsYXN0KSBvdXQgKz0gc3RyLnNsaWNlKGxhc3QsIGkpO1xuXHRyZXR1cm4gb3V0O1xufVxuIiwgIi8qKiBOb3JtYWwgaHlkcmF0aW9uIHRoYXQgYXR0YWNoZXMgdG8gYSBET00gdHJlZSBidXQgZG9lcyBub3QgZGlmZiBpdC4gKi9cbmV4cG9ydCBjb25zdCBNT0RFX0hZRFJBVEUgPSAxIDw8IDU7XG4vKiogU2lnbmlmaWVzIHRoaXMgVk5vZGUgc3VzcGVuZGVkIG9uIHRoZSBwcmV2aW91cyByZW5kZXIgKi9cbmV4cG9ydCBjb25zdCBNT0RFX1NVU1BFTkRFRCA9IDEgPDwgNztcbi8qKiBJbmRpY2F0ZXMgdGhhdCB0aGlzIG5vZGUgbmVlZHMgdG8gYmUgaW5zZXJ0ZWQgd2hpbGUgcGF0Y2hpbmcgY2hpbGRyZW4gKi9cbmV4cG9ydCBjb25zdCBJTlNFUlRfVk5PREUgPSAxIDw8IDE2O1xuLyoqIEluZGljYXRlcyBhIFZOb2RlIGhhcyBiZWVuIG1hdGNoZWQgd2l0aCBhbm90aGVyIFZOb2RlIGluIHRoZSBkaWZmICovXG5leHBvcnQgY29uc3QgTUFUQ0hFRCA9IDEgPDwgMTc7XG5cbi8qKiBSZXNldCBhbGwgbW9kZSBmbGFncyAqL1xuZXhwb3J0IGNvbnN0IFJFU0VUX01PREUgPSB+KE1PREVfSFlEUkFURSB8IE1PREVfU1VTUEVOREVEKTtcblxuZXhwb3J0IGNvbnN0IEVNUFRZX09CSiA9IC8qKiBAdHlwZSB7YW55fSAqLyAoe30pO1xuZXhwb3J0IGNvbnN0IEVNUFRZX0FSUiA9IFtdO1xuZXhwb3J0IGNvbnN0IElTX05PTl9ESU1FTlNJT05BTCA9XG5cdC9hY2l0fGV4KD86c3xnfG58cHwkKXxycGh8Z3JpZHxvd3N8bW5jfG50d3xpbmVbY2hdfHpvb3xeb3JkfGl0ZXJhL2k7XG4iLCAiaW1wb3J0IHsgb3B0aW9ucywgRnJhZ21lbnQgfSBmcm9tICdwcmVhY3QnO1xuaW1wb3J0IHsgZW5jb2RlRW50aXRpZXMgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IElTX05PTl9ESU1FTlNJT05BTCB9IGZyb20gJy4uLy4uL3NyYy9jb25zdGFudHMnO1xuXG5sZXQgdm5vZGVJZCA9IDA7XG5cbmNvbnN0IGlzQXJyYXkgPSBBcnJheS5pc0FycmF5O1xuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXdcbiAqIFRoaXMgZmlsZSBleHBvcnRzIHZhcmlvdXMgbWV0aG9kcyB0aGF0IGltcGxlbWVudCBCYWJlbCdzIFwiYXV0b21hdGljXCIgSlNYIHJ1bnRpbWUgQVBJOlxuICogLSBqc3godHlwZSwgcHJvcHMsIGtleSlcbiAqIC0ganN4cyh0eXBlLCBwcm9wcywga2V5KVxuICogLSBqc3hERVYodHlwZSwgcHJvcHMsIGtleSwgX19zb3VyY2UsIF9fc2VsZilcbiAqXG4gKiBUaGUgaW1wbGVtZW50YXRpb24gb2YgY3JlYXRlVk5vZGUgaGVyZSBpcyBvcHRpbWl6ZWQgZm9yIHBlcmZvcm1hbmNlLlxuICogQmVuY2htYXJrczogaHR0cHM6Ly9lc2JlbmNoLmNvbS9iZW5jaC81ZjZiNTRhMGI0NjMyMTAwYTdkY2QyYjNcbiAqL1xuXG4vKipcbiAqIEpTWC5FbGVtZW50IGZhY3RvcnkgdXNlZCBieSBCYWJlbCdzIHtydW50aW1lOlwiYXV0b21hdGljXCJ9IEpTWCB0cmFuc2Zvcm1cbiAqIEBwYXJhbSB7Vk5vZGVbJ3R5cGUnXX0gdHlwZVxuICogQHBhcmFtIHtWTm9kZVsncHJvcHMnXX0gcHJvcHNcbiAqIEBwYXJhbSB7Vk5vZGVbJ2tleSddfSBba2V5XVxuICogQHBhcmFtIHt1bmtub3dufSBbaXNTdGF0aWNDaGlsZHJlbl1cbiAqIEBwYXJhbSB7dW5rbm93bn0gW19fc291cmNlXVxuICogQHBhcmFtIHt1bmtub3dufSBbX19zZWxmXVxuICovXG5mdW5jdGlvbiBjcmVhdGVWTm9kZSh0eXBlLCBwcm9wcywga2V5LCBpc1N0YXRpY0NoaWxkcmVuLCBfX3NvdXJjZSwgX19zZWxmKSB7XG5cdGlmICghcHJvcHMpIHByb3BzID0ge307XG5cdC8vIFdlJ2xsIHdhbnQgdG8gcHJlc2VydmUgYHJlZmAgaW4gcHJvcHMgdG8gZ2V0IHJpZCBvZiB0aGUgbmVlZCBmb3Jcblx0Ly8gZm9yd2FyZFJlZiBjb21wb25lbnRzIGluIHRoZSBmdXR1cmUsIGJ1dCB0aGF0IHNob3VsZCBoYXBwZW4gdmlhXG5cdC8vIGEgc2VwYXJhdGUgUFIuXG5cdGxldCBub3JtYWxpemVkUHJvcHMgPSBwcm9wcyxcblx0XHRyZWYsXG5cdFx0aTtcblxuXHRpZiAoJ3JlZicgaW4gcHJvcHMpIHtcblx0XHRyZWYgPSBwcm9wcy5yZWY7XG5cdFx0ZGVsZXRlIHByb3BzLnJlZjtcblx0fVxuXG5cdC8qKiBAdHlwZSB7Vk5vZGUgJiB7IF9fc291cmNlOiBhbnk7IF9fc2VsZjogYW55IH19ICovXG5cdGNvbnN0IHZub2RlID0ge1xuXHRcdHR5cGUsXG5cdFx0cHJvcHM6IG5vcm1hbGl6ZWRQcm9wcyxcblx0XHRrZXksXG5cdFx0cmVmLFxuXHRcdF9jaGlsZHJlbjogbnVsbCxcblx0XHRfcGFyZW50OiBudWxsLFxuXHRcdF9kZXB0aDogMCxcblx0XHRfZG9tOiBudWxsLFxuXHRcdF9uZXh0RG9tOiB1bmRlZmluZWQsXG5cdFx0X2NvbXBvbmVudDogbnVsbCxcblx0XHRjb25zdHJ1Y3RvcjogdW5kZWZpbmVkLFxuXHRcdF9vcmlnaW5hbDogLS12bm9kZUlkLFxuXHRcdF9pbmRleDogLTEsXG5cdFx0X2ZsYWdzOiAwLFxuXHRcdF9fc291cmNlLFxuXHRcdF9fc2VsZlxuXHR9O1xuXG5cdC8vIElmIGEgQ29tcG9uZW50IFZOb2RlLCBjaGVjayBmb3IgYW5kIGFwcGx5IGRlZmF1bHRQcm9wcy5cblx0Ly8gTm90ZTogYHR5cGVgIGlzIG9mdGVuIGEgU3RyaW5nLCBhbmQgY2FuIGJlIGB1bmRlZmluZWRgIGluIGRldmVsb3BtZW50LlxuXHRpZiAodHlwZW9mIHR5cGUgPT09ICdmdW5jdGlvbicgJiYgKHJlZiA9IHR5cGUuZGVmYXVsdFByb3BzKSkge1xuXHRcdGZvciAoaSBpbiByZWYpXG5cdFx0XHRpZiAodHlwZW9mIG5vcm1hbGl6ZWRQcm9wc1tpXSA9PT0gJ3VuZGVmaW5lZCcpIHtcblx0XHRcdFx0bm9ybWFsaXplZFByb3BzW2ldID0gcmVmW2ldO1xuXHRcdFx0fVxuXHR9XG5cblx0aWYgKG9wdGlvbnMudm5vZGUpIG9wdGlvbnMudm5vZGUodm5vZGUpO1xuXHRyZXR1cm4gdm5vZGU7XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgdGVtcGxhdGUgdm5vZGUuIFRoaXMgZnVuY3Rpb24gaXMgbm90IGV4cGVjdGVkIHRvIGJlXG4gKiB1c2VkIGRpcmVjdGx5LCBidXQgcmF0aGVyIHRocm91Z2ggYSBwcmVjb21waWxlIEpTWCB0cmFuc2Zvcm1cbiAqIEBwYXJhbSB7c3RyaW5nW119IHRlbXBsYXRlc1xuICogQHBhcmFtICB7QXJyYXk8c3RyaW5nIHwgbnVsbCB8IFZOb2RlPn0gZXhwcnNcbiAqIEByZXR1cm5zIHtWTm9kZX1cbiAqL1xuZnVuY3Rpb24ganN4VGVtcGxhdGUodGVtcGxhdGVzLCAuLi5leHBycykge1xuXHRjb25zdCB2bm9kZSA9IGNyZWF0ZVZOb2RlKEZyYWdtZW50LCB7IHRwbDogdGVtcGxhdGVzLCBleHBycyB9KTtcblx0Ly8gQnlwYXNzIHJlbmRlciB0byBzdHJpbmcgdG9wIGxldmVsIEZyYWdtZW50IG9wdGltaXphdGlvblxuXHR2bm9kZS5rZXkgPSB2bm9kZS5fdm5vZGU7XG5cdHJldHVybiB2bm9kZTtcbn1cblxuY29uc3QgSlNfVE9fQ1NTID0ge307XG5jb25zdCBDU1NfUkVHRVggPSAvW0EtWl0vZztcblxuLyoqXG4gKiBTZXJpYWxpemUgYW4gSFRNTCBhdHRyaWJ1dGUgdG8gYSBzdHJpbmcuIFRoaXMgZnVuY3Rpb24gaXMgbm90XG4gKiBleHBlY3RlZCB0byBiZSB1c2VkIGRpcmVjdGx5LCBidXQgcmF0aGVyIHRocm91Z2ggYSBwcmVjb21waWxlXG4gKiBKU1ggdHJhbnNmb3JtXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgYXR0cmlidXRlIG5hbWVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIGF0dHJpYnV0ZSB2YWx1ZVxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24ganN4QXR0cihuYW1lLCB2YWx1ZSkge1xuXHRpZiAob3B0aW9ucy5hdHRyKSB7XG5cdFx0Y29uc3QgcmVzdWx0ID0gb3B0aW9ucy5hdHRyKG5hbWUsIHZhbHVlKTtcblx0XHRpZiAodHlwZW9mIHJlc3VsdCA9PT0gJ3N0cmluZycpIHJldHVybiByZXN1bHQ7XG5cdH1cblxuXHRpZiAobmFtZSA9PT0gJ3JlZicgfHwgbmFtZSA9PT0gJ2tleScpIHJldHVybiAnJztcblx0aWYgKG5hbWUgPT09ICdzdHlsZScgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuXHRcdGxldCBzdHIgPSAnJztcblx0XHRmb3IgKGxldCBwcm9wIGluIHZhbHVlKSB7XG5cdFx0XHRsZXQgdmFsID0gdmFsdWVbcHJvcF07XG5cdFx0XHRpZiAodmFsICE9IG51bGwgJiYgdmFsICE9PSAnJykge1xuXHRcdFx0XHRjb25zdCBuYW1lID1cblx0XHRcdFx0XHRwcm9wWzBdID09ICctJ1xuXHRcdFx0XHRcdFx0PyBwcm9wXG5cdFx0XHRcdFx0XHQ6IEpTX1RPX0NTU1twcm9wXSB8fFxuXHRcdFx0XHRcdFx0XHQoSlNfVE9fQ1NTW3Byb3BdID0gcHJvcC5yZXBsYWNlKENTU19SRUdFWCwgJy0kJicpLnRvTG93ZXJDYXNlKCkpO1xuXG5cdFx0XHRcdGxldCBzdWZmaXggPSAnOyc7XG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHR0eXBlb2YgdmFsID09PSAnbnVtYmVyJyAmJlxuXHRcdFx0XHRcdC8vIEV4Y2x1ZGUgY3VzdG9tLWF0dHJpYnV0ZXNcblx0XHRcdFx0XHQhbmFtZS5zdGFydHNXaXRoKCctLScpICYmXG5cdFx0XHRcdFx0IUlTX05PTl9ESU1FTlNJT05BTC50ZXN0KG5hbWUpXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdHN1ZmZpeCA9ICdweDsnO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHN0ciA9IHN0ciArIG5hbWUgKyAnOicgKyB2YWwgKyBzdWZmaXg7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBuYW1lICsgJz1cIicgKyBzdHIgKyAnXCInO1xuXHR9XG5cblx0aWYgKFxuXHRcdHZhbHVlID09IG51bGwgfHxcblx0XHR2YWx1ZSA9PT0gZmFsc2UgfHxcblx0XHR0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicgfHxcblx0XHR0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnXG5cdCkge1xuXHRcdHJldHVybiAnJztcblx0fSBlbHNlIGlmICh2YWx1ZSA9PT0gdHJ1ZSkgcmV0dXJuIG5hbWU7XG5cblx0cmV0dXJuIG5hbWUgKyAnPVwiJyArIGVuY29kZUVudGl0aWVzKHZhbHVlKSArICdcIic7XG59XG5cbi8qKlxuICogRXNjYXBlIGEgZHluYW1pYyBjaGlsZCBwYXNzZWQgdG8gYGpzeFRlbXBsYXRlYC4gVGhpcyBmdW5jdGlvblxuICogaXMgbm90IGV4cGVjdGVkIHRvIGJlIHVzZWQgZGlyZWN0bHksIGJ1dCByYXRoZXIgdGhyb3VnaCBhXG4gKiBwcmVjb21waWxlIEpTWCB0cmFuc2Zvcm1cbiAqIEBwYXJhbSB7Kn0gdmFsdWVcbiAqIEByZXR1cm5zIHtzdHJpbmcgfCBudWxsIHwgVk5vZGUgfCBBcnJheTxzdHJpbmcgfCBudWxsIHwgVk5vZGU+fVxuICovXG5mdW5jdGlvbiBqc3hFc2NhcGUodmFsdWUpIHtcblx0aWYgKFxuXHRcdHZhbHVlID09IG51bGwgfHxcblx0XHR0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJyB8fFxuXHRcdHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJ1xuXHQpIHtcblx0XHRyZXR1cm4gbnVsbDtcblx0fVxuXG5cdGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG5cdFx0Ly8gQ2hlY2sgZm9yIFZOb2RlXG5cdFx0aWYgKHZhbHVlLmNvbnN0cnVjdG9yID09PSB1bmRlZmluZWQpIHJldHVybiB2YWx1ZTtcblxuXHRcdGlmIChpc0FycmF5KHZhbHVlKSkge1xuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB2YWx1ZS5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHR2YWx1ZVtpXSA9IGpzeEVzY2FwZSh2YWx1ZVtpXSk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gdmFsdWU7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGVuY29kZUVudGl0aWVzKCcnICsgdmFsdWUpO1xufVxuXG5leHBvcnQge1xuXHRjcmVhdGVWTm9kZSBhcyBqc3gsXG5cdGNyZWF0ZVZOb2RlIGFzIGpzeHMsXG5cdGNyZWF0ZVZOb2RlIGFzIGpzeERFVixcblx0RnJhZ21lbnQsXG5cdC8vIHByZWNvbXBpbGVkIEpTWCB0cmFuc2Zvcm1cblx0anN4VGVtcGxhdGUsXG5cdGpzeEF0dHIsXG5cdGpzeEVzY2FwZVxufTtcbiIsICIvKipcbiAqIEBtb2R1bGUgdWlcbiAqL1xuXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlQ29udGV4dCwgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWR1Y2VyLCB1c2VSZWYgfSBmcm9tIFwicHJlYWN0L2hvb2tzXCI7XG5pbXBvcnQge1xuICAgIEFQUF9DT05URVhULFxuICAgIENPTVBPTkVOVF9DT05URVhULFxuICAgIENVUlJFTlRfRklMRV9DT05URVhULFxuICAgIERBVEFDT1JFX0NPTlRFWFQsXG4gICAgRXJyb3JNZXNzYWdlLFxuICAgIE1hcmtkb3duLFxufSBmcm9tIFwiLi4vLi4vdWkvbWFya2Rvd25cIjtcbmltcG9ydCB7IExpbmsgfSBmcm9tIFwiZXhwcmVzc2lvbi9saW5rXCI7XG5pbXBvcnQgeyBnZXRGaWxlVGl0bGUsIGxpbmVSYW5nZSB9IGZyb20gXCJ1dGlscy9ub3JtYWxpemVyc1wiO1xuXG5pbXBvcnQgXCIuL2VtYmVkLmNzc1wiO1xuXG4vKiogUmVuZGVycyBhbiBlbWJlZCBpbiB0aGUgY2Fub25pY2FsIE9ic2lkaWFuIHN0eWxlLlxuICpcbiAqIEBncm91cCBDb21wb25lbnRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBFbWJlZCh7XG4gICAgbGluayxcbiAgICBpbmxpbmUsXG4gICAgc291cmNlUGF0aDogbWF5YmVTb3VyY2VQYXRoLFxufToge1xuICAgIC8qKiBUaGUgbGluayB0aGF0IGlzIGJlaW5nIGVtYmVkZGVkLiAqL1xuICAgIGxpbms6IExpbms7XG4gICAgLyoqIFdoZXRoZXIgdGhlIGVtYmVkIHNob3VsZCBiZSBzaG93biBpbmxpbmUgd2l0aCBsZXNzIHBhZGRpbmcuICovXG4gICAgaW5saW5lOiBib29sZWFuO1xuICAgIC8qKiBUaGUgcGF0aCB3aGljaCB0aGUgbGluayB3aWxsIGJlIHJlc29sdmVkIHJlbGF0aXZlIHRvLiAqL1xuICAgIHNvdXJjZVBhdGg/OiBzdHJpbmc7XG59KSB7XG4gICAgY29uc3QgYXBwID0gdXNlQ29udGV4dChBUFBfQ09OVEVYVCk7XG4gICAgY29uc3QgY29tcG9uZW50ID0gdXNlQ29udGV4dChDT01QT05FTlRfQ09OVEVYVCk7XG4gICAgY29uc3QgY3VycmVudEZpbGUgPSB1c2VDb250ZXh0KENVUlJFTlRfRklMRV9DT05URVhUKTtcbiAgICBjb25zdCBzb3VyY2VQYXRoID0gbWF5YmVTb3VyY2VQYXRoID8/IGN1cnJlbnRGaWxlID8/IFwiXCI7XG5cbiAgICBjb25zdCBjb250YWluZXIgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgICBjb25zdCBsaW5rZWRGaWxlID0gdXNlTWVtbyhcbiAgICAgICAgKCkgPT4gYXBwLm1ldGFkYXRhQ2FjaGUuZ2V0Rmlyc3RMaW5rcGF0aERlc3QobGluay5wYXRoLCBzb3VyY2VQYXRoKSxcbiAgICAgICAgW2xpbmsucGF0aCwgc291cmNlUGF0aF1cbiAgICApO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKCFjb250YWluZXIuY3VycmVudCkgcmV0dXJuO1xuICAgICAgICBpZiAoIWxpbmtlZEZpbGUpIHJldHVybjtcblxuICAgICAgICBjb250YWluZXIuY3VycmVudC5pbm5lckhUTUwgPSBcIlwiO1xuXG4gICAgICAgIGNvbnN0IGNyZWF0b3IgPSBhcHAuZW1iZWRSZWdpc3RyeS5nZXRFbWJlZENyZWF0b3IobGlua2VkRmlsZSk7XG4gICAgICAgIGxldCBlbWJlZENvbXBvbmVudCA9IG5ldyBjcmVhdG9yKFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxpbmt0ZXh0OiBsaW5rLnBhdGgsXG4gICAgICAgICAgICAgICAgc291cmNlUGF0aDogc291cmNlUGF0aCxcbiAgICAgICAgICAgICAgICBzaG93SW5saW5lOiBpbmxpbmUsXG4gICAgICAgICAgICAgICAgYXBwLFxuICAgICAgICAgICAgICAgIGRlcHRoOiAwLFxuICAgICAgICAgICAgICAgIGNvbnRhaW5lckVsOiBjb250YWluZXIuY3VycmVudCxcbiAgICAgICAgICAgICAgICBkaXNwbGF5TW9kZTogdHJ1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsaW5rZWRGaWxlLFxuICAgICAgICAgICAgbGluay5zdWJwYXRoXG4gICAgICAgICk7XG5cbiAgICAgICAgY29tcG9uZW50LmFkZENoaWxkKGVtYmVkQ29tcG9uZW50KTtcbiAgICAgICAgZW1iZWRDb21wb25lbnQubG9hZEZpbGUobGlua2VkRmlsZSk7XG5cbiAgICAgICAgcmV0dXJuICgpID0+IGNvbXBvbmVudC5yZW1vdmVDaGlsZChlbWJlZENvbXBvbmVudCk7XG4gICAgfSwgW2NvbnRhaW5lci5jdXJyZW50LCBsaW5rZWRGaWxlLCBsaW5rLnN1YnBhdGhdKTtcblxuICAgIGlmICghbGlua2VkRmlsZSkge1xuICAgICAgICByZXR1cm4gPEVycm9yTWVzc2FnZSBtZXNzYWdlPXtgQ291bGQgbm90IGZpbmQgYSBwYWdlIGF0IGxpbmtlZCBsb2NhdGlvbjogJHtsaW5rLnBhdGh9YH0gLz47XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPVwiZGMtZW1iZWRcIiByZWY9e2NvbnRhaW5lcn0+PC9kaXY+O1xuICAgIH1cbn1cblxuLyoqXG4gKiBBbiBlbWJlZCBvZiBhbiBhcmJpdHJhcnkgc3BhbiBvZiBsaW5lcyBpbiBhIE1hcmtkb3duIGZpbGUuIE9wZXJhdGVzIGJ5IGFzeW5jaHJvbm91c2x5IGxvYWRpbmcgdGhlIGZpbGUgYW5kIHB1bGxpbmdcbiAqIG91dCB0aGUgZ2l2ZW4gW3N0YXJ0LCBlbmQpIGxpbmUgc3Bhbi5cbiAqXG4gKiBOb3RlIHRoYXQgaXQncyBwb3NzaWJsZSBmb3IgdGhlIGZpbGUgb24gZGlzayB0byBiZSBkaWZmZXJlbnQgdGhhbiBpdCB3YXMgd2hlbiB5b3UgZmlyc3QgbG9hZGVkIHRoZSBbc3RhcnQsIGVuZCkgbGluZSBzcGFuXG4gKiAtIGdlbmVyYWxseSwgZGF0YWNvcmUgd2lsbCBhc3luY2hyb25vdXNseSByZWxvYWQgdGhlc2UgZmlsZXMgaW4gdGhlIGJhY2tncm91bmQgYW5kIGZpeCBpdCdzIGluZGV4LCBidXQgeW91IG1heSBoYXZlIHNvbWVcbiAqIHN0cmFuZ2UgYXJ0aWZhY3RzIG90aGVyd2lzZS5cbiAqXG4gKiBAZ3JvdXAgQ29tcG9uZW50c1xuICovXG5leHBvcnQgZnVuY3Rpb24gTGluZVNwYW5FbWJlZCh7XG4gICAgcGF0aCxcbiAgICBzdGFydCxcbiAgICBlbmQsXG4gICAgZXhwbGFpbixcbiAgICBzaG93RXhwbGFpbiA9IHRydWUsXG59OiB7XG4gICAgcGF0aDogc3RyaW5nO1xuICAgIHN0YXJ0OiBudW1iZXI7XG4gICAgZW5kOiBudW1iZXI7XG4gICAgZXhwbGFpbj86IHN0cmluZztcbiAgICBzaG93RXhwbGFpbj86IGJvb2xlYW47XG59KSB7XG4gICAgY29uc3QgY29udGVudCA9IHVzZUxpbmVTcGFuKHBhdGgsIHN0YXJ0LCBlbmQpO1xuICAgIGNvbnN0IGV4cGxhaW5lciA9IGV4cGxhaW4gPz8gYCR7Z2V0RmlsZVRpdGxlKHBhdGgpfSAoJHtzdGFydH0gLSAke2VuZH0pYDtcblxuICAgIC8vIFRvIGFsbG93IGZvciB0aGUgZXhwbGFpbmVyIHRvIGJlIGNsaWNrZWQgb24gdG8gbmF2aWdhdGUgdG8gdGhlIGdpdmVuIHBvc2l0aW9uLlxuICAgIGNvbnN0IHdvcmtzcGFjZSA9IHVzZUNvbnRleHQoQVBQX0NPTlRFWFQpPy53b3Jrc3BhY2U7XG4gICAgY29uc3Qgb25FeHBsYWluQ2xpY2sgPSB1c2VDYWxsYmFjayhcbiAgICAgICAgKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB3b3Jrc3BhY2U/Lm9wZW5MaW5rVGV4dChwYXRoLCBwYXRoLCBldmVudC5zaGlmdEtleSksXG4gICAgICAgIFtwYXRoXVxuICAgICk7XG5cbiAgICBzd2l0Y2ggKGNvbnRlbnQudHlwZSkge1xuICAgICAgICBjYXNlIFwibG9hZGluZ1wiOlxuICAgICAgICAgICAgcmV0dXJuIDxFcnJvck1lc3NhZ2UgbWVzc2FnZT17YFJlYWRpbmcgJHtwYXRofSAoJHtzdGFydH0gLSAke2VuZH0pYH0gLz47XG4gICAgICAgIGNhc2UgXCJmaWxlLW5vdC1mb3VuZFwiOlxuICAgICAgICAgICAgcmV0dXJuIDxFcnJvck1lc3NhZ2UgbWVzc2FnZT17YENvdWxkIG5vdCBmaW5kIGEgZmlsZSBhdCBwYXRoOiAke2NvbnRlbnQucGF0aH1gfSAvPjtcbiAgICAgICAgY2FzZSBcImVycm9yXCI6XG4gICAgICAgICAgICByZXR1cm4gPEVycm9yTWVzc2FnZSBtZXNzYWdlPXtjb250ZW50Lm1lc3NhZ2V9IC8+O1xuICAgICAgICBjYXNlIFwibG9hZGVkXCI6XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZGF0YWNvcmUtc3Bhbi1lbWJlZFwiPlxuICAgICAgICAgICAgICAgICAgICB7c2hvd0V4cGxhaW4gJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3NOYW1lPVwiZGF0YWNvcmUtZW1iZWQtc291cmNlXCIgb25DbGljaz17b25FeHBsYWluQ2xpY2t9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtleHBsYWluZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIDxNYXJrZG93biBjb250ZW50PXtjb250ZW50LmNvbnRlbnR9IGlubGluZT17ZmFsc2V9IC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApO1xuICAgIH1cbn1cblxuLyoqIFN0YXRlIHRyYWNraW5nIGZvciBsb2FkaW5nIGEgbGluZSBzcGFuIGFzeW5jaHJvbm91c2x5LiAqL1xuZXhwb3J0IHR5cGUgTGluZVNwYW5Db250ZW50ID1cbiAgICB8IHsgdHlwZTogXCJsb2FkaW5nXCIgfVxuICAgIHwgeyB0eXBlOiBcImZpbGUtbm90LWZvdW5kXCI7IHBhdGg6IHN0cmluZyB9XG4gICAgfCB7IHR5cGU6IFwiZXJyb3JcIjsgbWVzc2FnZTogc3RyaW5nIH1cbiAgICB8IHsgdHlwZTogXCJsb2FkZWRcIjsgY29udGVudDogc3RyaW5nIH07XG5cbi8qKiBVdGlsaXR5IGhvb2sgd2hpY2ggbG9hZHMgcGF0aFtzdGFydC4uZW5kKSBhcyBsb25nIGFzIHRoZSB0YXJnZXQgZmlsZSBleGlzdHMuXG4gKlxuICogQGdyb3VwIEhvb2tzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VMaW5lU3BhbihwYXRoOiBzdHJpbmcsIHN0YXJ0OiBudW1iZXIsIGVuZDogbnVtYmVyKTogTGluZVNwYW5Db250ZW50IHtcbiAgICBjb25zdCBhcHAgPSB1c2VDb250ZXh0KEFQUF9DT05URVhUKTtcbiAgICBjb25zdCBkYXRhY29yZSA9IHVzZUNvbnRleHQoREFUQUNPUkVfQ09OVEVYVCk7XG5cbiAgICBjb25zdCBbc3RhdGUsIHVwZGF0ZV0gPSB1c2VSZWR1Y2VyPExpbmVTcGFuQ29udGVudCwgTGluZVNwYW5Db250ZW50PihcbiAgICAgICAgKHN0YXRlLCBldmVudCkgPT4ge1xuICAgICAgICAgICAgLy8gSWdub3JlIGFuIGVycm9yIHVwZGF0ZSB0aGF0IHdvdWxkIG92ZXJyaWRlIGEgdmFsaWQgY3VycmVudCBzdGF0ZTsgb3RoZXJ3aXNlLCB1cGRhdGUgdG8gdGhlIG5ldyBzdGF0ZS5cbiAgICAgICAgICAgIGlmIChzdGF0ZS50eXBlID09IFwibG9hZGVkXCIgJiYgZXZlbnQudHlwZSAhPT0gXCJsb2FkZWRcIikgcmV0dXJuIHN0YXRlO1xuICAgICAgICAgICAgZWxzZSByZXR1cm4gZXZlbnQ7XG4gICAgICAgIH0sXG4gICAgICAgIHsgdHlwZTogXCJsb2FkaW5nXCIgfVxuICAgICk7XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICAvLyBSZXNvbHZlIHRoZSBjdXJyZW50IHBhdGggdG8gc2VlIGlmIGl0IHBvaW50cyB0byBhIHZhbGlkIGZpbGUuXG4gICAgICAgIGNvbnN0IGZpbGUgPSBhcHAudmF1bHQuZ2V0RmlsZUJ5UGF0aChwYXRoKTtcbiAgICAgICAgaWYgKGZpbGUgPT0gbnVsbCkge1xuICAgICAgICAgICAgdXBkYXRlKHsgdHlwZTogXCJmaWxlLW5vdC1mb3VuZFwiLCBwYXRoOiBwYXRoIH0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVHJ5IHRvIGxvYWQgdGhlIGZpbGUgYXN5bmNocm9ub3VzbHkuXG4gICAgICAgIGRhdGFjb3JlXG4gICAgICAgICAgICAucmVhZChmaWxlKVxuICAgICAgICAgICAgLnRoZW4oKGNvbnRlbnQpID0+IHtcbiAgICAgICAgICAgICAgICB1cGRhdGUoeyB0eXBlOiBcImxvYWRlZFwiLCBjb250ZW50OiBsaW5lUmFuZ2UoY29udGVudCwgc3RhcnQsIGVuZCkgfSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgIHVwZGF0ZSh7IHR5cGU6IFwiZXJyb3JcIiwgbWVzc2FnZTogZXJyb3IubWVzc2FnZSB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgIH0sIFtwYXRoLCBzdGFydCwgZW5kXSk7XG5cbiAgICByZXR1cm4gc3RhdGU7XG59XG4iLCAiaW1wb3J0IHsgRXJyb3JNZXNzYWdlLCBTaW1wbGVFcnJvckJvdW5kYXJ5LCBDVVJSRU5UX0ZJTEVfQ09OVEVYVCwgRGF0YWNvcmVDb250ZXh0UHJvdmlkZXIgfSBmcm9tIFwidWkvbWFya2Rvd25cIjtcbmltcG9ydCB7IEFwcCwgTWFya2Rvd25SZW5kZXJDaGlsZCB9IGZyb20gXCJvYnNpZGlhblwiO1xuaW1wb3J0IHsgRGF0YWNvcmVMb2NhbEFwaSB9IGZyb20gXCJhcGkvbG9jYWwtYXBpXCI7XG5pbXBvcnQgeyBoLCByZW5kZXIsIEZyYWdtZW50LCBWTm9kZSB9IGZyb20gXCJwcmVhY3RcIjtcbmltcG9ydCB7IHVubW91bnRDb21wb25lbnRBdE5vZGUgfSBmcm9tIFwicHJlYWN0L2NvbXBhdFwiO1xuaW1wb3J0IHsgU2NyaXB0TGFuZ3VhZ2UsIGFzeW5jRXZhbEluQ29udGV4dCwgdHJhbnNwaWxlIH0gZnJvbSBcInV0aWxzL2phdmFzY3JpcHRcIjtcbmltcG9ydCB7IExvYWRpbmdCb3VuZGFyeSwgU2NyaXB0Q29udGFpbmVyIH0gZnJvbSBcIi4vbG9hZGluZy1ib3VuZGFyeVwiO1xuaW1wb3J0IHsgRGF0YWNvcmUgfSBmcm9tIFwiaW5kZXgvZGF0YWNvcmVcIjtcblxuLyoqXG4gKiBSZW5kZXJzIGEgc2NyaXB0IGJ5IGV4ZWN1dGluZyBpdCBhbmQgaGFuZGluZyBpdCB0aGUgYXBwcm9wcmlhdGUgUmVhY3QgY29udGV4dCB0byBleGVjdXRlXG4gKiBhdXRvbWF0aWNhbGx5LlxuICovXG5leHBvcnQgY2xhc3MgRGF0YWNvcmVKU1JlbmRlcmVyIGV4dGVuZHMgTWFya2Rvd25SZW5kZXJDaGlsZCB7XG4gICAgcHJpdmF0ZSBsb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIGFwaTogRGF0YWNvcmVMb2NhbEFwaSxcbiAgICAgICAgcHVibGljIGNvbnRhaW5lcjogSFRNTEVsZW1lbnQsXG4gICAgICAgIHB1YmxpYyBwYXRoOiBzdHJpbmcsXG4gICAgICAgIHB1YmxpYyBzY3JpcHQ6IHN0cmluZyxcbiAgICAgICAgcHVibGljIGxhbmd1YWdlOiBTY3JpcHRMYW5ndWFnZVxuICAgICkge1xuICAgICAgICBzdXBlcihjb250YWluZXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBvbmxvYWQoKSB7XG4gICAgICAgIHRoaXMubG9hZGVkID0gdHJ1ZTtcblxuICAgICAgICAvLyBBdHRlbXB0IHRvIHBhcnNlIGFuZCBldmFsdWF0ZSB0aGUgc2NyaXB0IHRvIHByb2R1Y2UgZWl0aGVyIGEgcmVuZGVyYWJsZSBKU1ggb2JqZWN0IG9yIGEgZnVuY3Rpb24uXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBwcmltaXRpdmVTY3JpcHQgPSB0cmFuc3BpbGUodGhpcy5zY3JpcHQsIHRoaXMubGFuZ3VhZ2UpO1xuICAgICAgICAgICAgY29uc3QgcmVuZGVyZXIgPSBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGF3YWl0IGFzeW5jRXZhbEluQ29udGV4dChwcmltaXRpdmVTY3JpcHQsIHtcbiAgICAgICAgICAgICAgICAgICAgZGM6IHRoaXMuYXBpLFxuICAgICAgICAgICAgICAgICAgICBoOiBoLFxuICAgICAgICAgICAgICAgICAgICBGcmFnbWVudDogRnJhZ21lbnQsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICByZW5kZXIoXG4gICAgICAgICAgICAgICAgPERhdGFjb3JlQ29udGV4dFByb3ZpZGVyXG4gICAgICAgICAgICAgICAgICAgIGFwcD17dGhpcy5hcGkuYXBwfVxuICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ9e3RoaXN9XG4gICAgICAgICAgICAgICAgICAgIGRhdGFjb3JlPXt0aGlzLmFwaS5jb3JlfVxuICAgICAgICAgICAgICAgICAgICBzZXR0aW5ncz17dGhpcy5hcGkuY29yZS5zZXR0aW5nc31cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxDVVJSRU5UX0ZJTEVfQ09OVEVYVC5Qcm92aWRlciB2YWx1ZT17dGhpcy5wYXRofT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTaW1wbGVFcnJvckJvdW5kYXJ5IG1lc3NhZ2U9XCJUaGUgZGF0YWNvcmUgc2NyaXB0IGZhaWxlZCB0byBleGVjdXRlLlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMb2FkaW5nQm91bmRhcnkgZGF0YWNvcmU9e3RoaXMuYXBpLmNvcmV9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U2NyaXB0Q29udGFpbmVyIGV4ZWN1dG9yPXtyZW5kZXJlcn0gc291cmNlUGF0aD17dGhpcy5wYXRofSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvTG9hZGluZ0JvdW5kYXJ5PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9TaW1wbGVFcnJvckJvdW5kYXJ5PlxuICAgICAgICAgICAgICAgICAgICA8L0NVUlJFTlRfRklMRV9DT05URVhULlByb3ZpZGVyPlxuICAgICAgICAgICAgICAgIDwvRGF0YWNvcmVDb250ZXh0UHJvdmlkZXI+LFxuICAgICAgICAgICAgICAgIHRoaXMuY29udGFpbmVyXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGNhdGNoIChleCkge1xuICAgICAgICAgICAgcmVuZGVyKFxuICAgICAgICAgICAgICAgIDxFcnJvck1lc3NhZ2UgbWVzc2FnZT1cIkRhdGFjb3JlIGZhaWxlZCB0byByZW5kZXIgdGhlIGNvZGUgYmxvY2suXCIgZXJyb3I9e1wiXCIgKyBleH0gLz4sXG4gICAgICAgICAgICAgICAgdGhpcy5jb250YWluZXJcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb251bmxvYWQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmxvYWRlZCkgdW5tb3VudENvbXBvbmVudEF0Tm9kZSh0aGlzLmNvbnRhaW5lcik7XG4gICAgICAgIHRoaXMubG9hZGVkID0gZmFsc2U7XG4gICAgfVxufVxuXG4vKiogQSB0cml2aWFsIHdyYXBwZXIgd2hpY2ggYWxsb3dzIGEgcmVhY3QgY29tcG9uZW50IHRvIGxpdmUgZm9yIHRoZSBkdXJhdGlvbiBvZiBhIGBNYXJrZG93blJlbmRlckNoaWxkYC4gKi9cbmV4cG9ydCBjbGFzcyBSZWFjdFJlbmRlcmVyIGV4dGVuZHMgTWFya2Rvd25SZW5kZXJDaGlsZCB7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgYXBwOiBBcHAsXG4gICAgICAgIHB1YmxpYyBkYXRhY29yZTogRGF0YWNvcmUsXG4gICAgICAgIHB1YmxpYyBjb250YWluZXI6IEhUTUxFbGVtZW50LFxuICAgICAgICBwdWJsaWMgc291cmNlUGF0aDogc3RyaW5nLFxuICAgICAgICBwdWJsaWMgZWxlbWVudDogVk5vZGVcbiAgICApIHtcbiAgICAgICAgc3VwZXIoY29udGFpbmVyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25sb2FkKCk6IHZvaWQge1xuICAgICAgICByZW5kZXIoXG4gICAgICAgICAgICA8RGF0YWNvcmVDb250ZXh0UHJvdmlkZXJcbiAgICAgICAgICAgICAgICBhcHA9e3RoaXMuYXBwfVxuICAgICAgICAgICAgICAgIGNvbXBvbmVudD17dGhpc31cbiAgICAgICAgICAgICAgICBkYXRhY29yZT17dGhpcy5kYXRhY29yZX1cbiAgICAgICAgICAgICAgICBzZXR0aW5ncz17dGhpcy5kYXRhY29yZS5zZXR0aW5nc31cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8Q1VSUkVOVF9GSUxFX0NPTlRFWFQuUHJvdmlkZXIgdmFsdWU9e3RoaXMuc291cmNlUGF0aH0+XG4gICAgICAgICAgICAgICAgICAgIDxMb2FkaW5nQm91bmRhcnkgZGF0YWNvcmU9e3RoaXMuZGF0YWNvcmV9Pnt0aGlzLmVsZW1lbnR9PC9Mb2FkaW5nQm91bmRhcnk+XG4gICAgICAgICAgICAgICAgPC9DVVJSRU5UX0ZJTEVfQ09OVEVYVC5Qcm92aWRlcj5cbiAgICAgICAgICAgIDwvRGF0YWNvcmVDb250ZXh0UHJvdmlkZXI+LFxuICAgICAgICAgICAgdGhpcy5jb250YWluZXJcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb251bmxvYWQoKTogdm9pZCB7XG4gICAgICAgIHVubW91bnRDb21wb25lbnRBdE5vZGUodGhpcy5jb250YWluZXIpO1xuICAgIH1cbn1cbiIsICIvLyEgVXRpbGl0aWVzIGZvciBydW5uaW5nIGphdmFzY3JpcHQuXG5cbmltcG9ydCB7IHRyYW5zZm9ybSB9IGZyb20gXCJzdWNyYXNlXCI7XG5cbmV4cG9ydCB0eXBlIFNjcmlwdExhbmd1YWdlID0gXCJqc1wiIHwgXCJ0c1wiIHwgXCJqc3hcIiB8IFwidHN4XCI7XG5cbi8qKiBDb252ZXJ0cyBhIHJhdyBzY3JpcHQgaW4gdGhlIGdpdmVuIGxhbmd1YWdlIHRvIHBsYWluIGphdmFzY3JpcHQuICAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zcGlsZShzY3JpcHQ6IHN0cmluZywgbGFuZ3VhZ2U6IFNjcmlwdExhbmd1YWdlKTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKGxhbmd1YWdlKSB7XG4gICAgICAgIGNhc2UgXCJqc1wiOlxuICAgICAgICAgICAgcmV0dXJuIHNjcmlwdDtcbiAgICAgICAgY2FzZSBcImpzeFwiOlxuICAgICAgICAgICAgcmV0dXJuIHRyYW5zZm9ybShzY3JpcHQsIHsgdHJhbnNmb3JtczogW1wianN4XCJdLCBqc3hQcmFnbWE6IFwiaFwiLCBqc3hGcmFnbWVudFByYWdtYTogXCJGcmFnbWVudFwiIH0pLmNvZGU7XG4gICAgICAgIGNhc2UgXCJ0c1wiOlxuICAgICAgICAgICAgcmV0dXJuIHRyYW5zZm9ybShzY3JpcHQsIHsgdHJhbnNmb3JtczogW1widHlwZXNjcmlwdFwiXSB9KS5jb2RlO1xuICAgICAgICBjYXNlIFwidHN4XCI6XG4gICAgICAgICAgICByZXR1cm4gdHJhbnNmb3JtKHNjcmlwdCwge1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybXM6IFtcInR5cGVzY3JpcHRcIiwgXCJqc3hcIl0sXG4gICAgICAgICAgICAgICAganN4UHJhZ21hOiBcImhcIixcbiAgICAgICAgICAgICAgICBqc3hGcmFnbWVudFByYWdtYTogXCJGcmFnbWVudFwiLFxuICAgICAgICAgICAgfSkuY29kZTtcbiAgICB9XG59XG5cbi8qKlxuICogRXZhbHVhdGUgYSBzY3JpcHQgd2hlcmUgJ3RoaXMnIGZvciB0aGUgc2NyaXB0IGlzIHNldCB0byB0aGUgZ2l2ZW4gY29udGV4dC4gQWxsb3dzIHlvdSB0byBkZWZpbmUgZ2xvYmFsIHZhcmlhYmxlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV2YWxJbkNvbnRleHQoc2NyaXB0OiBzdHJpbmcsIHZhcmlhYmxlczogUmVjb3JkPHN0cmluZywgYW55Pik6IGFueSB7XG4gICAgY29uc3QgcGFpcnMgPSBPYmplY3QuZW50cmllcyh2YXJpYWJsZXMpO1xuICAgIGNvbnN0IGtleXMgPSBwYWlycy5tYXAoKFtrZXksIF9dKSA9PiBrZXkpO1xuICAgIGNvbnN0IHZhbHVlcyA9IHBhaXJzLm1hcCgoW18sIHZhbHVlXSkgPT4gdmFsdWUpO1xuXG4gICAgcmV0dXJuIG5ldyBGdW5jdGlvbiguLi5rZXlzLCBzY3JpcHQpKC4uLnZhbHVlcyk7XG59XG5cbi8qKlxuICogRXZhbHVhdGUgYSBzY3JpcHQgcG9zc2libHkgYXN5bmNocm9ub3VzbHksIGlmIHRoZSBzY3JpcHQgY29udGFpbnMgYGFzeW5jL2F3YWl0YCBibG9ja3MuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhc3luY0V2YWxJbkNvbnRleHQoc2NyaXB0OiBzdHJpbmcsIHZhcmlhYmxlczogUmVjb3JkPHN0cmluZywgYW55Pik6IFByb21pc2U8YW55PiB7XG4gICAgaWYgKHNjcmlwdC5pbmNsdWRlcyhcImF3YWl0XCIpKSB7XG4gICAgICAgIHJldHVybiBldmFsSW5Db250ZXh0KFwicmV0dXJuIChhc3luYyAoKSA9PiB7IFwiICsgc2NyaXB0ICsgXCIgfSkoKVwiLCB2YXJpYWJsZXMpIGFzIFByb21pc2U8YW55PjtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGV2YWxJbkNvbnRleHQoc2NyaXB0LCB2YXJpYWJsZXMpKTtcbiAgICB9XG59XG4iLCAiLyoqIEBtb2R1bGUgdWkgKi9cbmltcG9ydCB7IERhdGFjb3JlIH0gZnJvbSBcImluZGV4L2RhdGFjb3JlXCI7XG5pbXBvcnQgeyBkZWJvdW5jZSB9IGZyb20gXCJvYnNpZGlhblwiO1xuaW1wb3J0IHsgSW5kZXhRdWVyeSB9IGZyb20gXCJpbmRleC90eXBlcy9pbmRleC1xdWVyeVwiO1xuaW1wb3J0IHsgSW5kZXhhYmxlIH0gZnJvbSBcImluZGV4L3R5cGVzL2luZGV4YWJsZVwiO1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gXCJwcmVhY3QvaG9va3NcIjtcbmltcG9ydCB7IFNlYXJjaFJlc3VsdCB9IGZyb20gXCJpbmRleC9kYXRhc3RvcmVcIjtcbmltcG9ydCB7IExpdGVyYWxzIH0gZnJvbSBcImV4cHJlc3Npb24vbGl0ZXJhbFwiO1xuaW1wb3J0IHsgUmVzdWx0IH0gZnJvbSBcImFwaS9yZXN1bHRcIjtcblxuLyoqIEhvb2sgdGhhdCB1cGRhdGVzIHRoZSB2aWV3IHdoZW5ldmVyIHRoZSByZXZpc2lvbiB1cGRhdGVzLCByZXR1cm5pbmcgdGhlIG5ld2VzdCByZXZpc2lvbi5cbiAqIEBncm91cCBIb29rc1xuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlSW5kZXhVcGRhdGVzKGRhdGFjb3JlOiBEYXRhY29yZSwgc2V0dGluZ3M/OiB7IGRlYm91bmNlPzogbnVtYmVyIH0pOiBudW1iZXIge1xuICAgIGNvbnN0IFtyZXZpc2lvbiwgc2V0UmV2aXNpb25dID0gdXNlU3RhdGUoZGF0YWNvcmUuZGF0YXN0b3JlLnJldmlzaW9uKTtcbiAgICBjb25zdCBkZWJvdW5jZWRSZXZpc2lvbiA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICBpZiAoc2V0dGluZ3M/LmRlYm91bmNlICYmIHNldHRpbmdzLmRlYm91bmNlID09IDApIHJldHVybiBzZXRSZXZpc2lvbjtcbiAgICAgICAgZWxzZSByZXR1cm4gZGVib3VuY2Uoc2V0UmV2aXNpb24sIHNldHRpbmdzPy5kZWJvdW5jZSA/PyA1MDApO1xuICAgIH0sIFtzZXRSZXZpc2lvbiwgc2V0dGluZ3M/LmRlYm91bmNlXSk7XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBjb25zdCByZWYgPSBkYXRhY29yZS5vbihcInVwZGF0ZVwiLCBkZWJvdW5jZWRSZXZpc2lvbik7XG4gICAgICAgIHJldHVybiAoKSA9PiBkYXRhY29yZS5vZmZyZWYocmVmKTtcbiAgICB9LCBbXSk7XG5cbiAgICByZXR1cm4gcmV2aXNpb247XG59XG5cbi8qKiBBIGhvb2sgd2hpY2ggdXBkYXRlcyB3aGVuZXZlciBmaWxlIG1ldGFkYXRhIGZvciBhIHNwZWNpZmljIGZpbGUgdXBkYXRlcy5cbiAqIEBncm91cCBIb29rc1xuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlRmlsZU1ldGFkYXRhKFxuICAgIGRhdGFjb3JlOiBEYXRhY29yZSxcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAgc2V0dGluZ3M/OiB7IGRlYm91bmNlPzogbnVtYmVyIH1cbik6IEluZGV4YWJsZSB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgaW5kZXhSZXZpc2lvbiA9IHVzZUluZGV4VXBkYXRlcyhkYXRhY29yZSwgc2V0dGluZ3MpO1xuXG4gICAgLy8gVE9ETzogSSB0aGluayBsb2FkIHJldHVybnMgY29uc2lzdGVudCBvYmplY3RzIHNvIGl0IHNob3VsZCBiZSBva2F5LlxuICAgIHJldHVybiB1c2VNZW1vKCgpID0+IGRhdGFjb3JlLmRhdGFzdG9yZS5sb2FkKHBhdGgpLCBbaW5kZXhSZXZpc2lvbiwgcGF0aF0pO1xufVxuXG4vKiogU2V0dGluZ3Mgd2hpY2ggY29udHJvbCBob3cgYXV0b21hdGljIHF1ZXJ5IHJlbG9hZGluZyBzaG91bGQgd29yay5cbiAqIEBncm91cCBDb25maWdcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVc2VRdWVyeVNldHRpbmdzIHtcbiAgICAvKipcbiAgICAgKiBJZiBwcmVzZW50LCBkZWJvdW5jZSByZXBlYXRlZCBxdWVyeSB1cGRhdGVzIHNvIHRoYXQgYW4gdXBkYXRlIG9ubHkgb2NjdXJzIGV2ZXJ5IFxcPGRlYm91bmNlXFw+IG1pbGxpc2Vjb25kcy4gVGhpc1xuICAgICAqIGRlZmF1bHRzIHRvIHRoZSBvdmVyYWxsIGRlZmF1bHQgZGVib3VuY2Ugc2V0dGluZ3MuXG4gICAgICovXG4gICAgZGVib3VuY2U/OiBudW1iZXI7XG59XG5cbi8qKiBQZXJmb3JtIGEgbGl2ZSwgc3luY2hyb25vdXMgcXVlcnkgd2hpY2ggdXBkYXRlcyBpdHMgcmVzdWx0cyB3aGVuZXZlciB0aGUgYmFja2luZyBxdWVyeSB3b3VsZCBjaGFuZ2UuXG4gKlxuICogQGdyb3VwIEhvb2tzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cnlVc2VGdWxsUXVlcnkoXG4gICAgZGF0YWNvcmU6IERhdGFjb3JlLFxuICAgIHF1ZXJ5OiBJbmRleFF1ZXJ5LFxuICAgIHNldHRpbmdzPzogVXNlUXVlcnlTZXR0aW5nc1xuKTogUmVzdWx0PFNlYXJjaFJlc3VsdDxJbmRleGFibGU+LCBzdHJpbmc+IHtcbiAgICAvLyBUcmFjayBpbmRleCB1cGRhdGVzIHdpdGggY3VzdG9taXphYmxlIGRlYm91bmNpbmcuXG4gICAgY29uc3QgaW5kZXhSZXZpc2lvbiA9IHVzZUluZGV4VXBkYXRlcyhkYXRhY29yZSwgc2V0dGluZ3MpO1xuXG4gICAgLy8gV2UgXCJpbnRlcm5cIiB0aGUgcXVlcnksIG1lYW5pbmcgd2UgcmV1c2UgdGhlIG9sZGVzdCB2ZXJzaW9uIGlmIGl0IGlzIHNlbWFudGljYWxseSBlcXVhbCBidXQganVzdCBhIGRpZmZlcmVudCBvYmplY3QuXG4gICAgY29uc3QgaW50ZXJuZWRRdWVyeSA9IHVzZUludGVybmluZyhxdWVyeSwgTGl0ZXJhbHMuZXF1YWxzKTtcbiAgICAvLyBJbnRlcm4gdGhlIG91dHB1dCBhcyB3ZWxsIHNvIHJlYWN0IGRpZmZpbmcgXCJqdXN0IHdvcmtzXCIgd2l0aCB0aGUgcmVzdWx0IG9mIHVzZVF1ZXJ5LlxuICAgIGNvbnN0IGludGVybmVkUmVzdWx0ID0gdXNlUmVmPFJlc3VsdDxTZWFyY2hSZXN1bHQ8SW5kZXhhYmxlPiwgc3RyaW5nPiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICAgIC8vIE9uIGV2ZXJ5IGluZGV4IHJldmlzaW9uIHVwZGF0ZSwgcmUtcnVuIHRoZSBxdWVyeSBhbmQgY2hlY2sgaWYgaXQgcHJvZHVjZWQgbWVhbmluZ2Z1bGx5IG5ldyB2YWx1ZXMuXG4gICAgcmV0dXJuIHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICBjb25zdCBuZXdSZXN1bHQgPSBkYXRhY29yZS5kYXRhc3RvcmUuc2VhcmNoKHF1ZXJ5KTtcblxuICAgICAgICAvLyBTZXQgZmFpbHVyZSBpZiB0aGUgbmV3IHJlcXVlc3QgaXMgYSBmYWlsdXJlLlxuICAgICAgICBpZiAoIW5ld1Jlc3VsdC5zdWNjZXNzZnVsKSB7XG4gICAgICAgICAgICBpbnRlcm5lZFJlc3VsdC5jdXJyZW50ID0gUmVzdWx0LmZhaWx1cmUobmV3UmVzdWx0LmVycm9yKTtcbiAgICAgICAgICAgIHJldHVybiBpbnRlcm5lZFJlc3VsdC5jdXJyZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gY3VycmVudCBpbnRlcm5lZCBzdGF0ZSwgdXBkYXRlIGl0IGFuZCByZXR1cm4uXG4gICAgICAgIGlmIChpbnRlcm5lZFJlc3VsdC5jdXJyZW50ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGludGVybmVkUmVzdWx0LmN1cnJlbnQgPSBSZXN1bHQuc3VjY2VzcyhuZXdSZXN1bHQudmFsdWUpO1xuICAgICAgICAgICAgcmV0dXJuIGludGVybmVkUmVzdWx0LmN1cnJlbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBBdCB0aGlzIHBvaW50LCB0aGUgbmV3IHJlcXVlc3QgaXMgaXMgc3VjY2Vzc2Z1bCBhbmQgdGhlIG9sZCByZXN1bHQgaXMgZGVmaW5lZC4gSWYgdGhlIG9sZCByZXN1bHQgd2FzIGFuIGVycm9yLCB1cGRhdGUgaXQuXG4gICAgICAgIGNvbnN0IG9sZFJlc3VsdCA9IGludGVybmVkUmVzdWx0LmN1cnJlbnQ7XG4gICAgICAgIGlmICghb2xkUmVzdWx0LnN1Y2Nlc3NmdWwpIHtcbiAgICAgICAgICAgIGludGVybmVkUmVzdWx0LmN1cnJlbnQgPSBSZXN1bHQuc3VjY2VzcyhuZXdSZXN1bHQudmFsdWUpO1xuICAgICAgICAgICAgcmV0dXJuIGludGVybmVkUmVzdWx0LmN1cnJlbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBCb3RoIGFyZSBzdWNjZXNzZnVsLCBjaGVjayBpZiB0aGV5IGFyZSBkaWZmZXJlbnQuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIG9sZFJlc3VsdC52YWx1ZS5yZXZpc2lvbiAhPSBuZXdSZXN1bHQudmFsdWUucmV2aXNpb24gfHxcbiAgICAgICAgICAgICFzYW1lT2JqZWN0cyhvbGRSZXN1bHQudmFsdWUucmVzdWx0cywgbmV3UmVzdWx0LnZhbHVlLnJlc3VsdHMpXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIChpbnRlcm5lZFJlc3VsdC5jdXJyZW50ID0gUmVzdWx0LnN1Y2Nlc3MobmV3UmVzdWx0LnZhbHVlKSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTYW1lIHJldmlzaW9uIGFuZCBzYW1lIG9iamVjdHMsIHRoaXMgaXMgdGhlIHNhbWUgcXVlcnkgcmVzdWx0LCBzbyByZXR1cm4gdGhlIG9sZCBvYmplY3QuXG4gICAgICAgIHJldHVybiBpbnRlcm5lZFJlc3VsdC5jdXJyZW50O1xuICAgIH0sIFtpbnRlcm5lZFF1ZXJ5LCBpbmRleFJldmlzaW9uXSk7XG59XG5cbi8qKiBQZXJmb3JtIGEgbGl2ZSwgc3luY2hyb25vdXMgcXVlcnkgd2hpY2ggdXBkYXRlcyBpdHMgcmVzdWx0cyB3aGVuZXZlciB0aGUgYmFja2luZyBxdWVyeSB3b3VsZCBjaGFuZ2UuXG4gKlxuICogQGdyb3VwIEhvb2tzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VGdWxsUXVlcnkoXG4gICAgZGF0YWNvcmU6IERhdGFjb3JlLFxuICAgIHF1ZXJ5OiBJbmRleFF1ZXJ5LFxuICAgIHNldHRpbmdzPzogVXNlUXVlcnlTZXR0aW5nc1xuKTogU2VhcmNoUmVzdWx0PEluZGV4YWJsZT4ge1xuICAgIHJldHVybiB0cnlVc2VGdWxsUXVlcnkoZGF0YWNvcmUsIHF1ZXJ5LCBzZXR0aW5ncykub3JFbHNlVGhyb3coKGUpID0+IFwiRmFpbGVkIHRvIHNlYXJjaDogXCIgKyBlKTtcbn1cblxuLyoqIFNpbXBsaWVyIHZlcnNpb24gb2YgdXNlRnVsbFF1ZXJ5IHdoaWNoIGp1c3QgZGlyZWN0bHkgcmV0dXJucyByZXN1bHRzLlxuICpcbiAqIEBncm91cCBIb29rc1xuICovXG5leHBvcnQgZnVuY3Rpb24gdHJ5VXNlUXVlcnkoXG4gICAgZGF0YWNvcmU6IERhdGFjb3JlLFxuICAgIHF1ZXJ5OiBJbmRleFF1ZXJ5LFxuICAgIHNldHRpbmdzPzogVXNlUXVlcnlTZXR0aW5nc1xuKTogUmVzdWx0PEluZGV4YWJsZVtdLCBzdHJpbmc+IHtcbiAgICByZXR1cm4gdHJ5VXNlRnVsbFF1ZXJ5KGRhdGFjb3JlLCBxdWVyeSwgc2V0dGluZ3MpLm1hcCgocmVzdWx0KSA9PiByZXN1bHQucmVzdWx0cyk7XG59XG5cbi8qKiBTaW1wbGllciB2ZXJzaW9uIG9mIHVzZUZ1bGxRdWVyeSB3aGljaCBqdXN0IGRpcmVjdGx5IHJldHVybnMgcmVzdWx0cy5cbiAqXG4gKiBAZ3JvdXAgSG9va3NcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVF1ZXJ5KGRhdGFjb3JlOiBEYXRhY29yZSwgcXVlcnk6IEluZGV4UXVlcnksIHNldHRpbmdzPzogVXNlUXVlcnlTZXR0aW5ncyk6IEluZGV4YWJsZVtdIHtcbiAgICByZXR1cm4gdXNlRnVsbFF1ZXJ5KGRhdGFjb3JlLCBxdWVyeSwgc2V0dGluZ3MpLnJlc3VsdHM7XG59XG5cbi8qKiBEZXRlcm1pbmVzIGlmIHRoZSB0d28gc2V0cyBvZiBvYmplY3RzIGFyZSB0aGUgc2FtZS4gT25seSB1c2VzIHJldmlzaW9uIGNvbXBhcmlzb24gZm9yIHBlcmZvcm1hbmNlLlxuICpcbiAqIEBoaWRkZW5cbiAqL1xuZnVuY3Rpb24gc2FtZU9iamVjdHMob2xkOiBJbmRleGFibGVbXSwgaW5jb21pbmc6IEluZGV4YWJsZVtdKSB7XG4gICAgaWYgKG9sZC5sZW5ndGggIT0gaW5jb21pbmcubGVuZ3RoKSByZXR1cm4gZmFsc2U7XG5cbiAgICBjb25zdCBvbGRzOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+ID0ge307XG4gICAgZm9yIChjb25zdCBpbmRleGFibGUgb2Ygb2xkKSB7XG4gICAgICAgIG9sZHNbaW5kZXhhYmxlLiRpZF0gPSBpbmRleGFibGUuJHJldmlzaW9uITtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGluZGV4YWJsZSBvZiBpbmNvbWluZykge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IG9sZHNbaW5kZXhhYmxlLiRpZF07XG4gICAgICAgIGlmICh2YWx1ZSA9PSB1bmRlZmluZWQpIHJldHVybiBmYWxzZTtcbiAgICAgICAgaWYgKHZhbHVlICE9IGluZGV4YWJsZS4kcmV2aXNpb24pIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbn1cblxuLyoqXG4gKiBcIkludGVybnNcIiB0aGUgaW5jb21pbmcgdmFsdWUsIHJldHVybmluZyB0aGUgb2xkZXN0IGVxdWFsIGluc3RhbmNlLiBUaGlzIGlzIGEgdHJpY2sgdG8gaW1wcm92ZSBSZWFjdCBkaWZmaW5nXG4gKiAgYmVoYXZpb3IsIGFzIHR3byBvYmplY3RzIHdoaWNoIGFyZSBlcXVhbHMgdmlhIGVxdWFsaXR5KGEsIGIpIHdpbGwgcmV0dXJuIHRoZSBzYW1lIG9iamVjdCByZWZlcmVuY2UgYWZ0ZXIgYmVpbmdcbiAqICBpbnRlcm5lZC5cbiAqXG4gKiBAZ3JvdXAgSG9va3NcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUludGVybmluZzxUPih2YWx1ZTogVCwgZXF1YWxpdHk6IChhOiBULCBiOiBUKSA9PiBib29sZWFuKTogVCB7XG4gICAgY29uc3QgcmVmID0gdXNlUmVmPFQ+KCk7XG5cbiAgICBpZiAocmVmLmN1cnJlbnQgPT09IHVuZGVmaW5lZCB8fCAhZXF1YWxpdHkocmVmLmN1cnJlbnQsIHZhbHVlKSkge1xuICAgICAgICByZWYuY3VycmVudCA9IHZhbHVlO1xuICAgIH1cblxuICAgIHJldHVybiByZWYuY3VycmVudDtcbn1cblxuLyoqIFVzZSBhIHN0YWJsZSBjYWxsYmFjayB3aGljaCBoaWRlcyBtdXRhYmxlIHN0YXRlIGJlaGluZCBhIHN0YWJsZSByZWZlcmVuY2UuXG4gKlxuICogQGdyb3VwIEhvb2tzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VTdGFibGVDYWxsYmFjazxUPihjYWxsYmFjazogVCwgZGVwczogYW55W10pOiBUIHtcbiAgICBjb25zdCByZWYgPSB1c2VSZWY8VD4oKTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHJlZi5jdXJyZW50ID0gY2FsbGJhY2s7XG4gICAgfSwgW2NhbGxiYWNrLCAuLi5kZXBzXSk7XG5cbiAgICByZXR1cm4gdXNlQ2FsbGJhY2soXG4gICAgICAgICguLi5hcmdzOiBhbnlbXSkgPT4ge1xuICAgICAgICAgICAgKHJlZi5jdXJyZW50IGFzIGFueSkoLi4uYXJncyk7XG4gICAgICAgIH0sXG4gICAgICAgIFtyZWZdXG4gICAgKSBhcyBUO1xufVxuXG5jb25zdCBOT19PUF9VUERBVEUgPSAoeDogYW55KSA9PiB7fTtcblxuLyoqIFVzZSBzdGF0ZSB0aGF0IHdpbGwgZGVmYXVsdCB0byBhbiBleHRlcm5hbCBjb250cm9sbGVkIHZhbHVlIGlmIHNldDsgb3RoZXJ3aXNlLCB3aWxsIHRyYWNrIGFuIGludGVybmFsIHZhbHVlLlxuICpcbiAqIEBncm91cCBIb29rc1xuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlQ29udHJvbGxlZFN0YXRlPFQ+KFxuICAgIGluaXRpYWxTdGF0ZTogVCxcbiAgICBvdmVycmlkZT86IFQsXG4gICAgdXBkYXRlPzogKHZhbHVlOiBUKSA9PiB2b2lkXG4pOiBbVCwgKHZhbHVlOiBUKSA9PiB2b2lkXSB7XG4gICAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV0gPSB1c2VTdGF0ZShvdmVycmlkZSA/PyBpbml0aWFsU3RhdGUpO1xuICAgIGlmIChvdmVycmlkZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmIChzdGF0ZSAhPSBvdmVycmlkZSkgc2V0U3RhdGUob3ZlcnJpZGUpO1xuXG4gICAgICAgIHJldHVybiBbb3ZlcnJpZGUsIHVwZGF0ZSA/PyBOT19PUF9VUERBVEVdO1xuICAgIH1cblxuICAgIGNvbnN0IHNldFN0YXRlV2l0aFVwZGF0ZSA9IHVzZUNhbGxiYWNrKFxuICAgICAgICAodmFsdWU6IFQpID0+IHtcbiAgICAgICAgICAgIHNldFN0YXRlKHZhbHVlKTtcbiAgICAgICAgICAgIGlmICh1cGRhdGUpIHVwZGF0ZSh2YWx1ZSk7XG4gICAgICAgIH0sXG4gICAgICAgIFtzZXRTdGF0ZSwgdXBkYXRlXVxuICAgICk7XG5cbiAgICByZXR1cm4gW3N0YXRlLCBzZXRTdGF0ZVdpdGhVcGRhdGVdO1xufVxuIiwgImltcG9ydCB7IERhdGFjb3JlIH0gZnJvbSBcImluZGV4L2RhdGFjb3JlXCI7XG5pbXBvcnQgeyBQcm9wc1dpdGhDaGlsZHJlbiwgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJwcmVhY3QvY29tcGF0XCI7XG5pbXBvcnQgeyB1c2VJbmRleFVwZGF0ZXMgfSBmcm9tIFwiLi9ob29rc1wiO1xuaW1wb3J0IHsgTGl0ZXJhbCB9IGZyb20gXCJleHByZXNzaW9uL2xpdGVyYWxcIjtcbmltcG9ydCB7IFZOb2RlLCBjcmVhdGVFbGVtZW50LCBpc1ZhbGlkRWxlbWVudCB9IGZyb20gXCJwcmVhY3RcIjtcbmltcG9ydCB7IEVycm9yTWVzc2FnZSwgTGl0IH0gZnJvbSBcIi4vbWFya2Rvd25cIjtcblxuaW1wb3J0IFwiLi9lcnJvcnMuY3NzXCI7XG5cbmZ1bmN0aW9uIExvYWRpbmdQcm9ncmVzcyh7IGRhdGFjb3JlIH06IHsgZGF0YWNvcmU6IERhdGFjb3JlIH0pIHtcbiAgICB1c2VJbmRleFVwZGF0ZXMoZGF0YWNvcmUsIHsgZGVib3VuY2U6IDI1MCB9KTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxwPlxuICAgICAgICAgICAge2RhdGFjb3JlLmluaXRpYWxpemVyPy5pbml0aWFsaXplZCA/PyAwfSAvIHtkYXRhY29yZS5pbml0aWFsaXplcj8udGFyZ2V0VG90YWwgPz8gMH1cbiAgICAgICAgPC9wPlxuICAgICk7XG59XG5cbi8qKiBMb2FkaW5nIGJvdW5kYXJ5IHdoaWNoIHNob3dzIGEgbG9hZGluZyBzY3JlZW4gd2hpbGUgRGF0YWNvcmUgaXMgaW5pdGlhbGl6aW5nLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIExvYWRpbmdCb3VuZGFyeSh7IGNoaWxkcmVuLCBkYXRhY29yZSB9OiBQcm9wc1dpdGhDaGlsZHJlbjx7IGRhdGFjb3JlOiBEYXRhY29yZSB9Pikge1xuICAgIGNvbnN0IFtpbml0aWFsaXplZCwgc2V0SW5pdGlhbGl6ZWRdID0gdXNlU3RhdGUoZGF0YWNvcmUuaW5pdGlhbGl6ZWQpO1xuXG4gICAgLy8gU3luY3MgdGhlIGJvdW5kYXJ5IHdpdGggZGF0YWNvcmUncyBpbml0aWFsaXphdGlvbiBzdGF0ZS5cbiAgICAvLyBUT0RPOiBBZGQgYW4gZXZlbnQgdG8gZGF0YWNvcmUgd2hpY2ggaW5kaWNhdGVzIHdoZW4gYSByZWluZGV4IGhhcHBlbnMgKGkuZS4sIGluaXRpYWxpemVkXG4gICAgLy8gcmV0dXJucyBiYWNrIHRvICdmYWxzZScpLlxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChpbml0aWFsaXplZCkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IHJlZiA9IGRhdGFjb3JlLm9uKFwiaW5pdGlhbGl6ZWRcIiwgKCkgPT4gc2V0SW5pdGlhbGl6ZWQodHJ1ZSkpO1xuICAgICAgICByZXR1cm4gKCkgPT4gZGF0YWNvcmUub2ZmcmVmKHJlZik7XG4gICAgfSwgW2luaXRpYWxpemVkLCBkYXRhY29yZV0pO1xuXG4gICAgaWYgKGluaXRpYWxpemVkKSB7XG4gICAgICAgIHJldHVybiA8PntjaGlsZHJlbn08Lz47XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZGF0YWNvcmUtbG9hZGluZy1ib3VuZGFyeVwiPlxuICAgICAgICAgICAgICAgIDxoNCBjbGFzc05hbWU9XCJkYXRhY29yZS1sb2FkaW5nLXRpdGxlXCI+RGF0YWNvcmUgaXMgZ2V0dGluZyByZWFkeS4uLjwvaDQ+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkYXRhY29yZS1sb2FkaW5nLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPExvYWRpbmdQcm9ncmVzcyBkYXRhY29yZT17ZGF0YWNvcmV9IC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKTtcbiAgICB9XG59XG5cbi8qKlxuICogRXhlY3V0ZXMgYSB2YW5pbGxhIGphdmFzcmlwdCBmdW5jdGlvbiBsYXppbHkgb25lIHRpbWUuIE1haW5seSB1c2VmdWwgdG8gb25seSBydW4gYSBzY3JpcHRcbiAqIG9uY2UgdGhlIHBhcmVudCBsb2FkaW5nIGJvdW5kYXJ5IGlzIGFjdHVhbGx5IHJlYWR5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gU2NyaXB0Q29udGFpbmVyKHtcbiAgICBleGVjdXRvcixcbiAgICBzb3VyY2VQYXRoLFxufToge1xuICAgIGV4ZWN1dG9yOiAoKSA9PiBQcm9taXNlPExpdGVyYWwgfCBWTm9kZSB8IEZ1bmN0aW9uPjtcbiAgICBzb3VyY2VQYXRoOiBzdHJpbmc7XG59KSB7XG4gICAgY29uc3QgW2VsZW1lbnQsIHNldEVsZW1lbnRdID0gdXNlU3RhdGU8SlNYLkVsZW1lbnQgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gICAgY29uc3QgW2Vycm9yLCBzZXRFcnJvcl0gPSB1c2VTdGF0ZTxFcnJvciB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHNldEVsZW1lbnQodW5kZWZpbmVkKTtcbiAgICAgICAgc2V0RXJyb3IodW5kZWZpbmVkKTtcblxuICAgICAgICBleGVjdXRvcigpXG4gICAgICAgICAgICAudGhlbigocmVzdWx0KSA9PiBzZXRFbGVtZW50KG1ha2VSZW5kZXJhYmxlRWxlbWVudChyZXN1bHQsIHNvdXJjZVBhdGgpKSlcbiAgICAgICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHNldEVycm9yKGVycm9yKSk7XG4gICAgfSwgW2V4ZWN1dG9yXSk7XG5cbiAgICAvLyBQcm9wb2dhdGUgZXJyb3IgdXB3YXJkcy5cbiAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuXG4gICAgcmV0dXJuIDw+e2VsZW1lbnQgPz8gPEVycm9yTWVzc2FnZSBtZXNzYWdlPVwiPCBWaWV3IGlzIHJlbmRlcmluZyA+XCIgLz59PC8+O1xufVxuXG4vKiogTWFrZSBhIHJlbmRlcmFibGUgZWxlbWVudCBmcm9tIHRoZSByZXR1cm5lZCBvYmplY3Q7IGlmIHRoaXMgdHJhbnNmb3JtYXRpb24gaXMgbm90IHBvc3NpYmxlLCB0aHJvdyBhbiBleGNlcHRpb24uICovXG5leHBvcnQgZnVuY3Rpb24gbWFrZVJlbmRlcmFibGVFbGVtZW50KG9iamVjdDogYW55LCBzb3VyY2VQYXRoOiBzdHJpbmcpOiBKU1guRWxlbWVudCB7XG4gICAgaWYgKHR5cGVvZiBvYmplY3QgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICByZXR1cm4gY3JlYXRlRWxlbWVudChvYmplY3QsIHt9KTtcbiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkob2JqZWN0KSkge1xuICAgICAgICByZXR1cm4gY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICB7fSxcbiAgICAgICAgICAgIChvYmplY3QgYXMgYW55W10pLm1hcCgoeCkgPT4gbWFrZVJlbmRlcmFibGVFbGVtZW50KHgsIHNvdXJjZVBhdGgpKVxuICAgICAgICApO1xuICAgIH0gZWxzZSBpZiAoaXNWYWxpZEVsZW1lbnQob2JqZWN0KSkge1xuICAgICAgICByZXR1cm4gb2JqZWN0O1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiA8TGl0IHZhbHVlPXtvYmplY3R9IHNvdXJjZVBhdGg9e3NvdXJjZVBhdGh9IC8+O1xuICAgIH1cbn1cbiIsICIvKipcbiAqIENvbGxlY3Rpb24gb2YgZGlyZWN0IEFQSS1mYWNpbmcgZWxlbWVudHMuIFRoaXMgZXNzZW50aWFsbHkgc2VydmVzIGFzIGEgbGF5ZXIgb2YgaW5kaXJlY3Rpb24gdG8gaW50ZXJuYWwgdHlwZXMsIHNvIHRoYXQgdGhlIGludGVybmFsIHR5cGVzIGNhbiBiZVxuICogY2hhbmdlZCB3aXRob3V0IGJyZWFraW5nIHRoZSBBUEkuXG4gKlxuICogQG1vZHVsZSB1aVxuICovXG5cbmltcG9ydCB7IEhUTUxBdHRyaWJ1dGVzLCB1c2VNZW1vIH0gZnJvbSBcInByZWFjdC9jb21wYXRcIjtcblxuaW1wb3J0IFwiYXBpL3VpL2xheW91dC5jc3NcIjtcblxuLyoqIENyZWF0ZXMgYSB2ZXJ0aWNhbCBmbGV4Ym94IFwic3RhY2tcIiBvZiBlbGVtZW50cy5cbiAqXG4gKiBAZ3JvdXAgQ29tcG9uZW50c1xuICovXG5leHBvcnQgZnVuY3Rpb24gU3RhY2soXG4gICAgcHJvcHM6IEhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PiAmIHtcbiAgICAgICAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICAgICAgICBqdXN0aWZ5Pzogc3RyaW5nO1xuICAgICAgICBhbGlnbj86IHN0cmluZztcbiAgICAgICAgc3R5bGU/OiBzdHJpbmc7XG4gICAgfVxuKSB7XG4gICAgY29uc3QgeyBjbGFzc05hbWUsIGp1c3RpZnksIGFsaWduLCBzdHlsZSwgY2hpbGRyZW4sIC4uLnJlc3QgfSA9IHByb3BzO1xuICAgIGNvbnN0IGV4dHJhU3R5bGUgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgICAgbGV0IHN0eWxlID0gXCJcIjtcbiAgICAgICAgaWYgKGp1c3RpZnkpIHN0eWxlICs9IGBqdXN0aWZ5LWNvbnRlbnQ6ICR7anVzdGlmeX07YDtcbiAgICAgICAgaWYgKGFsaWduKSBzdHlsZSArPSBgYWxpZ24taXRlbXM6ICR7YWxpZ259O2A7XG5cbiAgICAgICAgcmV0dXJuIHN0eWxlLmxlbmd0aCA9PSAwID8gdW5kZWZpbmVkIDogc3R5bGU7XG4gICAgfSwgW2p1c3RpZnksIGFsaWduXSk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZSA/IGNsYXNzTmFtZSArIFwiIGRjLXN0YWNrXCIgOiBcImRjLXN0YWNrXCJ9XG4gICAgICAgICAgICBzdHlsZT17c3R5bGUgPyBleHRyYVN0eWxlICsgc3R5bGUgOiBleHRyYVN0eWxlfVxuICAgICAgICAgICAgey4uLnJlc3R9XG4gICAgICAgID5cbiAgICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgPC9kaXY+XG4gICAgKTtcbn1cblxuLyoqIENyZWF0ZXMgYSBob3Jpem9udGFsIGZsZXhib3ggXCJncm91cGluZ1wiIG9mIGVsZW1lbnRzLlxuICpcbiAqIEBncm91cCBDb21wb25lbnRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBHcm91cChcbiAgICBwcm9wczogSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+ICYge1xuICAgICAgICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gICAgICAgIGp1c3RpZnk/OiBzdHJpbmc7XG4gICAgICAgIGFsaWduPzogc3RyaW5nO1xuICAgICAgICBzdHlsZT86IHN0cmluZztcbiAgICB9XG4pIHtcbiAgICBjb25zdCB7IGNsYXNzTmFtZSwganVzdGlmeSwgYWxpZ24sIHN0eWxlLCBjaGlsZHJlbiwgLi4ucmVzdCB9ID0gcHJvcHM7XG4gICAgY29uc3QgZXh0cmFTdHlsZSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICBsZXQgc3R5bGUgPSBcIlwiO1xuICAgICAgICBpZiAoanVzdGlmeSkgc3R5bGUgKz0gYGp1c3RpZnktY29udGVudDogJHtqdXN0aWZ5fTtgO1xuICAgICAgICBpZiAoYWxpZ24pIHN0eWxlICs9IGBhbGlnbi1pdGVtczogJHthbGlnbn07YDtcblxuICAgICAgICByZXR1cm4gc3R5bGUubGVuZ3RoID09IDAgPyB1bmRlZmluZWQgOiBzdHlsZTtcbiAgICB9LCBbanVzdGlmeSwgYWxpZ25dKTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lID8gY2xhc3NOYW1lICsgXCIgZGMtZ3JvdXBcIiA6IFwiZGMtZ3JvdXBcIn1cbiAgICAgICAgICAgIHN0eWxlPXtzdHlsZSA/IGV4dHJhU3R5bGUgKyBzdHlsZSA6IGV4dHJhU3R5bGV9XG4gICAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgPlxuICAgICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICA8L2Rpdj5cbiAgICApO1xufVxuIiwgIi8qKiBCYXNpYyBVSSBjb21wb25lbnRzIHRoYXQgaGF2ZSBzaW1wbGUgT2JzaWRpYW4gdGhlbWluZy5cbiAqIEBtb2R1bGUgdWlcbiAqL1xuaW1wb3J0IFJlYWN0LCB7IHVzZUNhbGxiYWNrIH0gZnJvbSBcInByZWFjdC9jb21wYXRcIjtcblxuaW1wb3J0IHsgQ29tcG9uZW50Q2hpbGRyZW4gfSBmcm9tIFwicHJlYWN0XCI7XG5pbXBvcnQgeyBzZXRJY29uIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5pbXBvcnQgeyB1c2VDb250cm9sbGVkU3RhdGUgfSBmcm9tIFwidWkvaG9va3NcIjtcblxuaW1wb3J0IFwiLi9iYXNpY3MuY3NzXCI7XG5cbi8qKiBWYXJpb3VzIGludGVudHMgZm9yIGJ1dHRvbnMgYW5kIG90aGVyIGludGVyYWN0aXZlIGVsZW1lbnRzLiAqL1xuZXhwb3J0IHR5cGUgSW50ZW50ID0gXCJlcnJvclwiIHwgXCJ3YXJuXCIgfCBcImluZm9cIiB8IFwic3VjY2Vzc1wiO1xuZXhwb3J0IHR5cGUgT21pdHRhYmxlID0gXCJ2YWx1ZVwiIHwgXCJkZWZhdWx0VmFsdWVcIjtcbmV4cG9ydCBjb25zdCBJTlRFTlRfQ0xBU1NFUzogUmVjb3JkPEludGVudCwgc3RyaW5nPiA9IHtcbiAgICBlcnJvcjogXCJkYy1pbnRlbnQtZXJyb3JcIixcbiAgICB3YXJuOiBcImRjLWludGVudC13YXJuXCIsXG4gICAgaW5mbzogXCJkYy1pbnRlbnQtaW5mb1wiLFxuICAgIHN1Y2Nlc3M6IFwiZGMtaW50ZW50LXN1Y2Nlc3NcIixcbn07XG5cbi8qKiBXcmFwcGVyIGZvciBhIHJlZ3VsYXIgSFRNTCBidXR0b24gd2l0aCBzb21lIGRlZmF1bHQgY2xhc3Nlcy5cbiAqIEBncm91cCBDb21wb25lbnRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBCdXR0b24oXG4gICAgcHJvcHM6IHsgY2xhc3NOYW1lPzogc3RyaW5nOyBpbnRlbnQ/OiBJbnRlbnQ7IGNoaWxkcmVuOiBDb21wb25lbnRDaGlsZHJlbiB9ICYgUmVhY3QuSFRNTFByb3BzPEhUTUxCdXR0b25FbGVtZW50PlxuKSB7XG4gICAgY29uc3QgeyBjbGFzc05hbWUsIGludGVudCwgY2hpbGRyZW4sIC4uLmZvcndhcmRpbmdQcm9wcyB9ID0gcHJvcHM7XG4gICAgcmV0dXJuIChcbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjb21iaW5lQ2xhc3NlcyhcImRjLWJ1dHRvblwiLCBpbnRlbnQgPyBJTlRFTlRfQ0xBU1NFU1tpbnRlbnRdIDogdW5kZWZpbmVkLCBjbGFzc05hbWUpfVxuICAgICAgICAgICAgey4uLmZvcndhcmRpbmdQcm9wc31cbiAgICAgICAgPlxuICAgICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICA8L2J1dHRvbj5cbiAgICApO1xufVxuXG4vKiogQSBzaW1wbGUgdGV4dGJveCB3aGljaCBhY2NlcHRzIHRleHQuXG4gKlxuICogQGdyb3VwIENvbXBvbmVudHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFRleHRib3gocHJvcHM6IHsgY2xhc3NOYW1lPzogc3RyaW5nIH0gJiBSZWFjdC5IVE1MUHJvcHM8SFRNTElucHV0RWxlbWVudD4pIHtcbiAgICBjb25zdCB7IGNsYXNzTmFtZSwgY2hpbGRyZW4sIC4uLmZvcndhcmRpbmdQcm9wcyB9ID0gcHJvcHM7XG4gICAgcmV0dXJuIChcbiAgICAgICAgPGlucHV0IHR5cGU9e3Byb3BzLnR5cGUgPz8gXCJ0ZXh0XCJ9IGNsYXNzTmFtZT17Y29tYmluZUNsYXNzZXMoXCJkYy10ZXh0Ym94XCIsIGNsYXNzTmFtZSl9IHsuLi5mb3J3YXJkaW5nUHJvcHN9IC8+XG4gICAgKTtcbn1cblxuLyoqIEEgY2hlY2tib3ggdGhhdCBjYW4gYmUgY2hlY2tlZCBhbmQgdW5jaGVja2VkLlxuICogQGdyb3VwIENvbXBvbmVudHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIENoZWNrYm94KFxuICAgIHByb3BzOiB7XG4gICAgICAgIGNsYXNzTmFtZT86IHN0cmluZztcbiAgICAgICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgICAgICBjaGVja2VkPzogYm9vbGVhbjtcbiAgICAgICAgZGVmYXVsdENoZWNrZWQ/OiBib29sZWFuO1xuICAgICAgICBvbkNoZWNrQ2hhbmdlPzogKGNoZWNrZWQ6IGJvb2xlYW4pID0+IHZvaWQ7XG4gICAgICAgIGNoaWxkcmVuPzogQ29tcG9uZW50Q2hpbGRyZW47XG4gICAgfSAmIFJlYWN0LkhUTUxQcm9wczxIVE1MSW5wdXRFbGVtZW50PlxuKSB7XG4gICAgY29uc3Qge1xuICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgIGRpc2FibGVkLFxuICAgICAgICBkZWZhdWx0Q2hlY2tlZCxcbiAgICAgICAgY2hlY2tlZDogaXNDaGVja2VkLFxuICAgICAgICBvbkNoZWNrQ2hhbmdlLFxuICAgICAgICBjaGlsZHJlbixcbiAgICAgICAgLi4uZm9yd2FyZGluZ1Byb3BzXG4gICAgfSA9IHByb3BzO1xuICAgIGNvbnN0IFtjaGVja2VkLCBzZXRDaGVja2VkXSA9IHVzZUNvbnRyb2xsZWRTdGF0ZShkZWZhdWx0Q2hlY2tlZCA/PyBmYWxzZSwgaXNDaGVja2VkLCBvbkNoZWNrQ2hhbmdlKTtcblxuICAgIGNvbnN0IG9uQ2hhbmdlID0gdXNlQ2FsbGJhY2soKGV2ZW50OiBhbnkpID0+IHNldENoZWNrZWQoZXZlbnQuY3VycmVudFRhcmdldC5jaGVja2VkKSwgW3NldENoZWNrZWRdKTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxsYWJlbCBjbGFzc05hbWU9e2NvbWJpbmVDbGFzc2VzKFwiZGMtY2hlY2tib3hcIiwgZGlzYWJsZWQgPyBcImRjLWNoZWNrYm94LWRpc2FibGVkXCIgOiB1bmRlZmluZWQsIGNsYXNzTmFtZSl9PlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICBkZWZhdWx0Q2hlY2tlZD17ZGVmYXVsdENoZWNrZWR9XG4gICAgICAgICAgICAgICAgY2hlY2tlZD17Y2hlY2tlZH1cbiAgICAgICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxuICAgICAgICAgICAgICAgIHsuLi5mb3J3YXJkaW5nUHJvcHN9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICA8L2xhYmVsPlxuICAgICk7XG59XG5cbi8qKiBXcmFwcGVyIGZvciBhIHNsaWRlciAocmFuZ2UgaW5wdXQpIHdpdGggc29tZSBkZWZhdWx0IGNsYXNzZXMuXG4gKiBAZ3JvdXAgQ29tcG9uZW50c1xuICovXG5leHBvcnQgZnVuY3Rpb24gU2xpZGVyKFxuICAgIHByb3BzOiB7XG4gICAgICAgIGNsYXNzTmFtZT86IHN0cmluZztcbiAgICAgICAgbWluPzogbnVtYmVyO1xuICAgICAgICBtYXg/OiBudW1iZXI7XG4gICAgICAgIHN0ZXA/OiBudW1iZXI7XG4gICAgICAgIHZhbHVlPzogbnVtYmVyO1xuICAgICAgICBkZWZhdWx0VmFsdWU/OiBudW1iZXI7XG4gICAgICAgIG9uVmFsdWVDaGFuZ2U/OiAodmFsdWU6IG51bWJlcikgPT4gdm9pZDtcbiAgICB9ICYgT21pdDxSZWFjdC5IVE1MUHJvcHM8SFRNTElucHV0RWxlbWVudD4sIE9taXR0YWJsZT5cbikge1xuICAgIGNvbnN0IHsgY2xhc3NOYW1lLCBtaW4gPSAwLCBtYXggPSAxMCwgc3RlcCA9IDEsIHZhbHVlLCBkZWZhdWx0VmFsdWUsIG9uVmFsdWVDaGFuZ2UsIC4uLmZvcndhcmRpbmdQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgW3NsaWRlciwgc2V0U2xpZGVyXSA9IHVzZUNvbnRyb2xsZWRTdGF0ZShkZWZhdWx0VmFsdWUgPz8gMCwgdmFsdWUsIG9uVmFsdWVDaGFuZ2UpO1xuXG4gICAgY29uc3Qgb25DaGFuZ2UgPSB1c2VDYWxsYmFjaygoZXZlbnQ6IGFueSkgPT4gc2V0U2xpZGVyKHBhcnNlRmxvYXQoZXZlbnQuY3VycmVudFRhcmdldC52YWx1ZSkpLCBbc2V0U2xpZGVyXSk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIHR5cGU9XCJyYW5nZVwiXG4gICAgICAgICAgICBhcmlhLWxhYmVsPXtzbGlkZXIudG9TdHJpbmcoKX1cbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y29tYmluZUNsYXNzZXMoXCJkYy1zbGlkZXJcIiwgY2xhc3NOYW1lKX1cbiAgICAgICAgICAgIG1pbj17bWlufVxuICAgICAgICAgICAgbWF4PXttYXh9XG4gICAgICAgICAgICBzdGVwPXtzdGVwfVxuICAgICAgICAgICAgdmFsdWU9e3NsaWRlcn1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZX1cbiAgICAgICAgICAgIHsuLi5mb3J3YXJkaW5nUHJvcHN9XG4gICAgICAgIC8+XG4gICAgKTtcbn1cblxuLyoqIFdyYXBwZXIgZm9yIGEgc3dpdGNoICh0b2dnbGUpIGNvbXBvbmVudCB3aXRoIHNvbWUgZGVmYXVsdCBjbGFzc2VzLlxuICogQGdyb3VwIENvbXBvbmVudHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFN3aXRjaChcbiAgICBwcm9wczoge1xuICAgICAgICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gICAgICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICAgICAgY2hlY2tlZD86IGJvb2xlYW47XG4gICAgICAgIGRlZmF1bHRDaGVja2VkPzogYm9vbGVhbjtcbiAgICAgICAgb25Ub2dnbGVDaGFuZ2U/OiAoY2hlY2tlZDogYm9vbGVhbikgPT4gdm9pZDtcbiAgICB9ICYgUmVhY3QuSFRNTFByb3BzPEhUTUxJbnB1dEVsZW1lbnQ+XG4pIHtcbiAgICBjb25zdCB7IGNsYXNzTmFtZSwgZGlzYWJsZWQsIGRlZmF1bHRDaGVja2VkLCBjaGVja2VkLCBvblRvZ2dsZUNoYW5nZSwgLi4uZm9yd2FyZGluZ1Byb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBbdG9nZ2xlZCwgc2V0VG9nZ2xlZF0gPSB1c2VDb250cm9sbGVkU3RhdGUoZGVmYXVsdENoZWNrZWQgPz8gZmFsc2UsIGNoZWNrZWQsIG9uVG9nZ2xlQ2hhbmdlKTtcblxuICAgIGNvbnN0IG9uQ2hhbmdlID0gdXNlQ2FsbGJhY2soKGV2ZW50OiBhbnkpID0+IHNldFRvZ2dsZWQoZXZlbnQuY3VycmVudFRhcmdldC5jaGVja2VkKSwgW3NldFRvZ2dsZWRdKTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjb21iaW5lQ2xhc3NlcyhcbiAgICAgICAgICAgICAgICBcImRjLXN3aXRjaCBjaGVja2JveC1jb250YWluZXJcIixcbiAgICAgICAgICAgICAgICB0b2dnbGVkID8gXCJpcy1lbmFibGVkXCIgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQgPyBcImRjLXN3aXRjaC1kaXNhYmxlZFwiIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZVxuICAgICAgICAgICAgKX1cbiAgICAgICAgPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJkYy1zd2l0Y2gtaW5wdXRcIlxuICAgICAgICAgICAgICAgIGRlZmF1bHRDaGVja2VkPXtkZWZhdWx0Q2hlY2tlZH1cbiAgICAgICAgICAgICAgICBjaGVja2VkPXt0b2dnbGVkfVxuICAgICAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgICAgICAgICAgey4uLmZvcndhcmRpbmdQcm9wc31cbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgKTtcbn1cblxuLyoqIFdyYXBwZXIgZm9yIGEgc2VsZWN0IGNvbXBvbmVudCB3aXRoIHNvbWUgZGVmYXVsdCBjbGFzc2VzLlxuICogQGdyb3VwIENvbXBvbmVudHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFZhbmlsbGFTZWxlY3QoXG4gICAgcHJvcHM6IHtcbiAgICAgICAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICAgICAgICBvcHRpb25zOiB7IHZhbHVlOiBzdHJpbmc7IGxhYmVsOiBzdHJpbmcgfVtdO1xuICAgICAgICB2YWx1ZT86IHN0cmluZztcbiAgICAgICAgZGVmYXVsdFZhbHVlPzogc3RyaW5nO1xuICAgICAgICBvblZhbHVlQ2hhbmdlPzogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQ7XG4gICAgfSAmIFJlYWN0LkhUTUxQcm9wczxIVE1MU2VsZWN0RWxlbWVudD5cbikge1xuICAgIGNvbnN0IHsgY2xhc3NOYW1lLCBvcHRpb25zID0gW10sIHZhbHVlLCBkZWZhdWx0VmFsdWUsIG9uVmFsdWVDaGFuZ2UsIC4uLmZvcndhcmRpbmdQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgW3NlbGVjdGVkVmFsdWUsIHNldFNlbGVjdGVkVmFsdWVdID0gUmVhY3QudXNlU3RhdGUodmFsdWUgPz8gZGVmYXVsdFZhbHVlID8/IFwiXCIpO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIikgc2V0U2VsZWN0ZWRWYWx1ZSh2YWx1ZSk7XG4gICAgfSwgW3ZhbHVlXSk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICBjbGFzc05hbWU9e2NvbWJpbmVDbGFzc2VzKFwiZGMtc2VsZWN0IGRyb3Bkb3duXCIsIGNsYXNzTmFtZSl9XG4gICAgICAgICAgICB2YWx1ZT17c2VsZWN0ZWRWYWx1ZX1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4ge1xuICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkVmFsdWUoZS5jdXJyZW50VGFyZ2V0LnZhbHVlKTtcbiAgICAgICAgICAgICAgICBvblZhbHVlQ2hhbmdlICYmIG9uVmFsdWVDaGFuZ2UoZS5jdXJyZW50VGFyZ2V0LnZhbHVlKTtcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICB7Li4uZm9yd2FyZGluZ1Byb3BzfVxuICAgICAgICA+XG4gICAgICAgICAgICB7b3B0aW9ucy5tYXAoKG9wdGlvbikgPT4gKFxuICAgICAgICAgICAgICAgIDxvcHRpb24ga2V5PXtvcHRpb24udmFsdWV9IHZhbHVlPXtvcHRpb24udmFsdWV9PlxuICAgICAgICAgICAgICAgICAgICB7b3B0aW9uLmxhYmVsfVxuICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgKSl9XG4gICAgICAgIDwvc2VsZWN0PlxuICAgICk7XG59XG4vKipcbiAqIEEgY29tcG9uZW50IHRoYXQgcmVuZGVycyBhbiBpY29uXG4gKiBAZ3JvdXAgQ29tcG9uZW50c1xuICovXG5leHBvcnQgZnVuY3Rpb24gSWNvbihwcm9wczogeyBjbGFzc05hbWU/OiBzdHJpbmc7IGljb246IHN0cmluZyB9KSB7XG4gICAgY29uc3QgeyBjbGFzc05hbWUsIGljb24gfSA9IHByb3BzO1xuICAgIGNvbnN0IHJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxIVE1MU3BhbkVsZW1lbnQ+KCk7XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAocmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIHNldEljb24ocmVmLmN1cnJlbnQsIGljb24pO1xuICAgICAgICB9XG4gICAgfSwgW3JlZl0pO1xuXG4gICAgcmV0dXJuIDxzcGFuIHJlZj17cmVmfSBjbGFzc05hbWU9e2NvbWJpbmVDbGFzc2VzKFwiZGMtaWNvblwiLCBjbGFzc05hbWUpfSBkYXRhLWljb249e2ljb259IC8+O1xufVxuXG4vKipcbiAqICBBcHBlbmRzIGFkZGl0aW9uYWwgY2xhc3NlcyB0byBhIGJhc2ljIGZpeGVkIGNsYXNzLlxuICpcbiAqIEBncm91cCBVdGlsaXRpZXNcbiAqICovXG5leHBvcnQgZnVuY3Rpb24gY29tYmluZUNsYXNzZXMoZml4ZWQ6IHN0cmluZywgLi4ucmVzdDogKHN0cmluZyB8IHVuZGVmaW5lZClbXSkge1xuICAgIGNvbnN0IG5vbmVtcHR5ID0gcmVzdC5maWx0ZXIoKGMpID0+IGMgIT09IHVuZGVmaW5lZCk7XG4gICAgaWYgKG5vbmVtcHR5Lmxlbmd0aCA9PT0gMCkgcmV0dXJuIGZpeGVkO1xuXG4gICAgcmV0dXJuIFtmaXhlZCwgLi4ubm9uZW1wdHldLmpvaW4oXCIgXCIpO1xufVxuIiwgIi8qKlxuICogQG1vZHVsZSBpbmRleGFibGVzXG4gKi9cbmltcG9ydCB7IExpbmsgfSBmcm9tIFwiZXhwcmVzc2lvbi9saW5rXCI7XG5pbXBvcnQgeyBEYXRlVGltZSB9IGZyb20gXCJsdXhvblwiO1xuXG4vKiogQW55IGluZGV4YWJsZSBmaWVsZCwgd2hpY2ggbXVzdCBoYXZlIGEgZmV3IGluZGV4LXJlbGV2YW50IHByb3BlcnRpZXMuICovXG5leHBvcnQgaW50ZXJmYWNlIEluZGV4YWJsZSB7XG4gICAgLyoqIFRoZSBvYmplY3QgdHlwZXMgdGhhdCB0aGlzIGluZGV4YWJsZSBpcy4gKi9cbiAgICAkdHlwZXM6IHN0cmluZ1tdO1xuICAgIC8qKiBUZXh0dWFsIGRlc2NyaXB0aW9uIG9mIHRoZSBvYmplY3QsIHN1Y2ggYXMgYFBhZ2VgIG9yIGBTZWN0aW9uYC4gVXNlZCBpbiB2aXN1YWxpemF0aW9ucy4gKi9cbiAgICAkdHlwZW5hbWU6IHN0cmluZztcbiAgICAvKiogVGhlIHVuaXF1ZSBpbmRleCBJRCBmb3IgdGhpcyBvYmplY3QuICovXG4gICAgJGlkOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogVGhlIGluZGV4YWJsZSBvYmplY3QgdGhhdCBpcyB0aGUgcGFyZW50IG9mIHRoaXMgb2JqZWN0LiBPbmx5IHNldCBhZnRlciB0aGUgb2JqZWN0IGlzIGFjdHVhbGx5IGluZGV4ZWQuXG4gICAgICovXG4gICAgJHBhcmVudD86IEluZGV4YWJsZTtcbiAgICAvKiogSWYgcHJlc2VudCwgdGhlIHJldmlzaW9uIGluIHRoZSBpbmRleCBvZiB0aGlzIG9iamVjdC4gKi9cbiAgICAkcmV2aXNpb24/OiBudW1iZXI7XG4gICAgLyoqIFRoZSBmaWxlIHRoYXQgdGhpcyBpbmRleGFibGUgd2FzIGRlcml2ZWQgZnJvbSwgaWYgZmlsZS1iYWNrZWQuICovXG4gICAgJGZpbGU/OiBzdHJpbmc7XG59XG5cbi8qKiBNZXRhZGF0YSBmb3Igb2JqZWN0cyB3aGljaCBzdXBwb3J0IGxpbmtpbmcuICovXG5leHBvcnQgY29uc3QgTElOS0FCTEVfVFlQRSA9IFwibGlua2FibGVcIjtcbi8qKlxuICoge0Bpbmhlcml0RG9jIExJTktBQkxFX1RZUEV9XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGlua2FibGUge1xuICAgIC8qKiBBIGxpbmsgdG8gdGhpcyBsaW5rYWJsZSBvYmplY3QuICovXG4gICAgJGxpbms6IExpbms7XG59XG5cbi8qKiBHZW5lcmFsIG1ldGFkYXRhIGZvciBhbnkgZmlsZS4gKi9cbmV4cG9ydCBjb25zdCBGSUxFX1RZUEUgPSBcImZpbGVcIjtcbi8qKlxuICoge0Bpbmhlcml0RG9jIEZJTEVfVFlQRX1cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaWxlIGV4dGVuZHMgTGlua2FibGUge1xuICAgIC8qKiBUaGUgcGF0aCB0aGlzIGZpbGUgZXhpc3RzIGF0LiAqL1xuICAgICRwYXRoOiBzdHJpbmc7XG4gICAgLyoqIE9ic2lkaWFuLXByb3ZpZGVkIGRhdGUgdGhpcyBwYWdlIHdhcyBjcmVhdGVkLiAqL1xuICAgICRjdGltZTogRGF0ZVRpbWU7XG4gICAgLyoqIE9ic2lkaWFuLXByb3ZpZGVkIGRhdGUgdGhpcyBwYWdlIHdhcyBtb2RpZmllZC4gKi9cbiAgICAkbXRpbWU6IERhdGVUaW1lO1xuICAgIC8qKiBPYnNpZGlhbi1wcm92aWRlZCBzaXplIG9mIHRoaXMgcGFnZSBpbiBieXRlcy4gKi9cbiAgICAkc2l6ZTogbnVtYmVyO1xuICAgIC8qKiBUaGUgZXh0ZW5zaW9uIG9mIHRoZSBmaWxlLiAqL1xuICAgICRleHRlbnNpb246IHN0cmluZztcbn1cblxuLyoqIE1ldGFkYXRhIGZvciB0YWdnYWJsZSBvYmplY3RzLiAqL1xuZXhwb3J0IGNvbnN0IFRBR0dBQkxFX1RZUEUgPSBcInRhZ2dhYmxlXCI7XG4vKipcbiAqIHtAaW5oZXJpdERvYyBUQUdHQUJMRV9UWVBFfVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhZ2dhYmxlIHtcbiAgICAvKiogVGhlIGV4YWN0IHRhZ3Mgb24gdGhpcyBvYmplY3QuICgjYS9iL2Mgb3IgI2Zvby9iYXIpLiAqL1xuICAgICR0YWdzOiBzdHJpbmdbXTtcbn1cblxuLyoqIE1ldGFkYXRhIGZvciBvYmplY3RzIHdoaWNoIGNhbiBsaW5rIHRvIG90aGVyIHRoaW5ncy4gKi9cbmV4cG9ydCBjb25zdCBMSU5LQkVBUklOR19UWVBFID0gXCJsaW5rc1wiO1xuLyoqXG4gKiB7QGluaGVyaXREb2MgTElOS0JFQVJJTkdfVFlQRX1cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMaW5rYmVhcmluZyB7XG4gICAgLyoqIFRoZSBsaW5rcyBpbiB0aGlzIGZpbGUuICovXG4gICAgJGxpbmtzOiBMaW5rW107XG59XG5cbi8qKlxuICogQWxsIHN1cHBvcnRlZCBleHRlbnNpb25zLiBUaGlzIHNob3VsZCBwcm9iYWJseSBiZWNvbWUgYSBkeW5hbWljIGxvb2t1cCB0YWJsZSBhbmQgbm90IGp1c3RcbiAqIGEgZml4ZWQgbGlzdCBhdCBzb21lIHBvaW50LCBlc3BlY2lhbGx5IGlmIHdlIGFkZCB0aGUgYWJpbGl0eSB0byB0dXJuIGluZGV4aW5nIG9uL29mZi5cbiAqL1xuZXhwb3J0IGNvbnN0IElOREVYQUJMRV9FWFRFTlNJT05TID0gbmV3IFNldChbXCJtZFwiLCBcIm1hcmtkb3duXCIsIFwiY2FudmFzXCJdKTtcbiIsICIvKipcbiAqIEBtb2R1bGUgYXBpXG4gKi9cbmltcG9ydCB7IExpdGVyYWwsIExpdGVyYWxzIH0gZnJvbSBcImV4cHJlc3Npb24vbGl0ZXJhbFwiO1xuaW1wb3J0IHsgSW5kZXhhYmxlIH0gZnJvbSBcIi4uL2luZGV4L3R5cGVzL2luZGV4YWJsZVwiO1xuaW1wb3J0IHsgSW5saW5lRmllbGQgfSBmcm9tIFwiaW5kZXgvaW1wb3J0L2lubGluZS1maWVsZFwiO1xuaW1wb3J0IHsgRnJvbnRtYXR0ZXJFbnRyeSB9IGZyb20gXCJpbmRleC90eXBlcy9tYXJrZG93blwiO1xuaW1wb3J0IHsgTGluZVNwYW4gfSBmcm9tIFwiaW5kZXgvdHlwZXMvanNvbi9tYXJrZG93blwiO1xuXG4vKiogVGhlIHNvdXJjZSBvZiBhIGZpZWxkLCB1c2VkIHdoZW4gZGV0ZXJtaW5pbmcgd2hhdCBmaWxlcyB0byBvdmVyd3JpdGUgYW5kIGhvdy4gKi9cbmV4cG9ydCB0eXBlIFByb3ZlbmFuY2UgPVxuICAgIHwgeyB0eXBlOiBcImZyb250bWF0dGVyXCI7IGZpbGU6IHN0cmluZzsga2V5OiBzdHJpbmcgfVxuICAgIHwgeyB0eXBlOiBcImlubGluZS1maWVsZFwiOyBmaWxlOiBzdHJpbmc7IGxpbmU6IG51bWJlcjsga2V5OiBzdHJpbmcgfTtcblxuLyoqXG4gKiBHZW5lcmFsIGRlZmluaXRpb24gZm9yIGEgZmllbGQuIFByb3ZpZGVzIHRoZSBmaWVsZCBrZXksIHZhbHVlLCBhcyB3ZWxsIGFzIGluZm9ybWF0aW9uIG9uIGl0J3Mgc291cmNlIGFuZCBob3cgaXQgY2FuIGJlIGVkaXRlZC5cbiAqIEBncm91cCBDb21tb24gVHlwZXNcbiAqICovXG5leHBvcnQgaW50ZXJmYWNlIEZpZWxkIHtcbiAgICAvKiogVGhlIGNhbm9uaWNhbCBrZXkgbmFtZSBmb3IgdGhlIGZpZWxkIChpLmUuLCBhcyBpdCBhY3R1YWxseSBzaG93cyB1cCBpbiB0aGUgZGF0YSBzdHJ1Y3R1cmUpLiAqL1xuICAgIGtleTogc3RyaW5nO1xuICAgIC8qKiBUaGUgdmFsdWUgb2YgdGhlIGZpZWxkLiAqL1xuICAgIHZhbHVlOiBMaXRlcmFsO1xuICAgIC8qKiBUaGUgcmF3IHZhbHVlIG9mIHRoZSBmaWVsZCBiZWZvcmUgcGFyc2luZywgaWYgcmVsZXZhbnQuICovXG4gICAgcmF3Pzogc3RyaW5nO1xuICAgIC8qKiBJZiBwcmVzZW50LCBkZXNjcmliZXMgd2hlcmUgdGhlIGZpZWxkIGNhbWUgZnJvbSBpbiBwcmVjaXNlIGRldGFpbCwgYWxsb3dpbmcgdGhlIGZpZWxkIHRvIGJlIGVkaXRlZC4gKi9cbiAgICBwcm92ZW5hbmNlPzogUHJvdmVuYW5jZTtcbn1cblxuLyoqIE1ldGFkYXRhIGZvciBvYmplY3RzIHdoaWNoIGFyZSBhbm5vdGF0ZWQgd2l0aCBmaWVsZHMuICovXG5leHBvcnQgY29uc3QgRklFTERCRUFSSU5HX1RZUEUgPSBcImZpZWxkc1wiO1xuZXhwb3J0IGludGVyZmFjZSBGaWVsZGJlYXJpbmcge1xuICAgIC8qKiBSZXR1cm4gYSBsaXN0IG9mIGFsbCBmaWVsZHMuIFRoaXMgbWF5IGJlIGNvbXB1dGVkIGVhZ2VybHksIHNvIGNhY2hlIHRoaXMgdmFsdWUgZm9yIHJlcGVhdGVkIG9wZXJhdGlvbnMuICovXG4gICAgZmllbGRzOiBGaWVsZFtdO1xuXG4gICAgLyoqIEZldGNoIGEgZmllbGQgd2l0aCB0aGUgZ2l2ZW4gbmFtZSBpZiBpdCBpcyBwcmVzZW50IG9uIHRoaXMgb2JqZWN0LiAqL1xuICAgIGZpZWxkKGtleTogc3RyaW5nKTogRmllbGQgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgRmllbGRiZWFyaW5ncyB7XG4gICAgZXhwb3J0IGZ1bmN0aW9uIGlzRmllbGRiZWFyaW5nKG9iamVjdDogYW55KTogb2JqZWN0IGlzIEZpZWxkYmVhcmluZyB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBvYmplY3QgIT0gbnVsbCAmJiB0eXBlb2Ygb2JqZWN0ID09PSBcIm9iamVjdFwiICYmIFwiZmllbGRcIiBpbiBvYmplY3QgJiYgdHlwZW9mIG9iamVjdFtcImZpZWxkXCJdID09IFwiZnVuY3Rpb25cIlxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKiBHZXQgYSBrZXkgZnJvbSBhIGdlbmVyaWMgbWFwIG9yIGZpZWxkYmVhcmluZyBvYmplY3QuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGdldChvYmplY3Q6IEZpZWxkYmVhcmluZyB8IFJlY29yZDxzdHJpbmcsIExpdGVyYWw+LCBrZXk6IHN0cmluZyk6IExpdGVyYWwgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoaXNGaWVsZGJlYXJpbmcob2JqZWN0KSkgcmV0dXJuIG9iamVjdC5maWVsZChrZXkpPy52YWx1ZTtcbiAgICAgICAgZWxzZSByZXR1cm4gb2JqZWN0W2tleV07XG4gICAgfVxuXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGdldFdpdGhEZWZhdWx0PFQgZXh0ZW5kcyB7ICRwb3NpdGlvbjogTGluZVNwYW4gfSAmIEluZGV4YWJsZT4oXG4gICAgICAgIG9iamVjdDogVCxcbiAgICAgICAga2V5OiBzdHJpbmcsXG4gICAgICAgIGRlZmF1bHRWYWx1ZT86IExpdGVyYWxcbiAgICApOiBGaWVsZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBrZXk6IGtleSxcbiAgICAgICAgICAgIHZhbHVlOiBkZWZhdWx0VmFsdWUgPz8gbnVsbCxcbiAgICAgICAgICAgIHByb3ZlbmFuY2U6IHtcbiAgICAgICAgICAgICAgICB0eXBlOiBcImlubGluZS1maWVsZFwiLFxuICAgICAgICAgICAgICAgIGZpbGU6IG9iamVjdC4kZmlsZSEsXG4gICAgICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgICAgIGxpbmU6IG9iamVjdC4kcG9zaXRpb24uZW5kLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICB9XG59XG5cbi8qKlxuICogR2VuZXJpYyBmdW5jdGlvbiB3aGljaCBleHRyYWN0IGZpZWxkcy4gSWYgbm8gYXJndW1lbnQgaXMgcHJvdmlkZWQsIGl0IHNob3VsZCByZXR1cm4gYWxsIGZpZWxkczsgb3RoZXJ3aXNlLFxuICogaXQgc2hvdWxkIHJldHVybiB0aGUgZmllbGQgbWF0Y2hpbmcgdGhlIGdpdmVuIGtleS5cbiAqXG4gKiBLZXlzIGFyZSBjYXNlLWluc2Vuc2l0aXZlIHRvIG1hdGNoIE9ic2lkaWFuIHN0YW5kYXJkIGJlaGF2aW9yLlxuICovXG5leHBvcnQgdHlwZSBGaWVsZEV4dHJhY3RvcjxUPiA9IChvYmplY3Q6IFQsIGtleT86IHN0cmluZykgPT4gRmllbGRbXTtcblxuLyoqIFF1aWNrIHV0aWxpdGllcyBmb3IgZ2VuZXJhdGluZyBmaWVsZHMgYW5kIGRvaW5nIHNlYXJjaGVzIG92ZXIgdGhlbS5cbiAqIEBoaWRkZW5cbiAqL1xuZXhwb3J0IG5hbWVzcGFjZSBFeHRyYWN0b3JzIHtcbiAgICAvKiogQ2hlY2sgaWYgdGhlIGdpdmVuIHByb3BlcnR5IGluIHRoZSBvYmplY3QgaXMgbm90IGV4Y2x1ZGVkIGFuZCBpcyBhIHBsYWluIHByb3BlcnR5IChub3QgYSBmdW5jdGlvbiBvciBvdGhlciBzcGVjaWFsIG9iamVjdCkuICovXG4gICAgZnVuY3Rpb24gaXNWYWxpZEludHJpbnNpYyhvYmplY3Q6IFJlY29yZDxzdHJpbmcsIGFueT4sIGtleTogc3RyaW5nLCBleGNsdWRlPzogU2V0PHN0cmluZz4pOiBib29sZWFuIHtcbiAgICAgICAgLy8gRG9uJ3QgYWxsb3cgcmVjdXJzaW9uIG9uICdmaWVsZHMnIG9yIGNhY2hlZCB2YWx1ZXMsIGFuZCBza2lwIGFueSBpZ25vcmVkIGFuZCBub24taW50cmluc2ljcy5cbiAgICAgICAgaWYgKGV4Y2x1ZGU/LmhhcyhrZXkpIHx8ICFrZXkuc3RhcnRzV2l0aChcIiRcIikpIHJldHVybiBmYWxzZTtcblxuICAgICAgICAvLyBObyBmdW5jdGlvbnMsIG9ubHkgdXNlIGFjdHVhbCB2YWx1ZXMuXG4gICAgICAgIGNvbnN0IHZhbHVlID0gKG9iamVjdCBhcyBhbnkpW2tleV07XG4gICAgICAgIGlmIChMaXRlcmFscy5pc0Z1bmN0aW9uKHZhbHVlKSkgcmV0dXJuIGZhbHNlO1xuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8qKiBHZXQgYWxsIGtleXMgb2YgdGhlIG9iamVjdCwgaW5jbHVkaW5nIGRlcml2ZWQgZmllbGRzIGZyb20gcHJvdG90eXBlcy4gKi9cbiAgICBmdW5jdGlvbiogcHJvdG90eXBlS2V5cyhvYmplY3Q6IGFueSkge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhvYmplY3QpKSB5aWVsZCBrZXk7XG5cbiAgICAgICAgbGV0IHByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iamVjdCk7XG4gICAgICAgIHdoaWxlIChwcm90bykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMocHJvdG8pKSB5aWVsZCBrZXk7XG5cbiAgICAgICAgICAgIHByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHByb3RvKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBHZW5lcmF0ZSBhIGxpc3Qgb2YgZmllbGRzIGZvciB0aGUgZ2l2ZW4gb2JqZWN0LCByZXR1cm5pbmcgdGhlbSBhcyBhIGxpc3QuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGludHJpbnNpY3M8VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4+KGV4Y2VwdD86IFNldDxzdHJpbmc+KTogRmllbGRFeHRyYWN0b3I8VD4ge1xuICAgICAgICByZXR1cm4gKG9iamVjdDogVCwga2V5Pzogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICBpZiAoa2V5ID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWVsZHM6IEZpZWxkW10gPSBbXTtcblxuICAgICAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IG9mIHByb3RvdHlwZUtleXMob2JqZWN0KSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWlzVmFsaWRJbnRyaW5zaWMob2JqZWN0LCBrZXksIGV4Y2VwdCkpIGNvbnRpbnVlO1xuXG4gICAgICAgICAgICAgICAgICAgIGZpZWxkcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAob2JqZWN0IGFzIGFueSlba2V5XSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZpZWxkcztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gSWYga2V5IGlzIGRpcmVjdGx5IHByZXNlbnQgaW4gb2JqZWN0LCBqdXN0IHJldHVybiBpdC5cbiAgICAgICAgICAgICAgICBpZiAoa2V5IGluIG9iamVjdCAmJiBpc1ZhbGlkSW50cmluc2ljKG9iamVjdCwga2V5LCBleGNlcHQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAob2JqZWN0IGFzIGFueSlba2V5XSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIF0gYXMgRmllbGRbXTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqIEZpZWxkIGV4dHJhY3RvciB3aGljaCBleHRyYWN0cyBmcm9udG1hdHRlciBmaWVsZHMuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGZyb250bWF0dGVyPFQgZXh0ZW5kcyBJbmRleGFibGU+KFxuICAgICAgICBmcm9udDogKG9iamVjdDogVCkgPT4gUmVjb3JkPHN0cmluZywgRnJvbnRtYXR0ZXJFbnRyeT4gfCB1bmRlZmluZWRcbiAgICApOiBGaWVsZEV4dHJhY3RvcjxUPiB7XG4gICAgICAgIHJldHVybiAob2JqZWN0OiBULCBrZXk/OiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZyb250bWF0dGVyID0gZnJvbnQob2JqZWN0KTtcbiAgICAgICAgICAgIGlmICghZnJvbnRtYXR0ZXIpIHJldHVybiBbXTtcblxuICAgICAgICAgICAgaWYgKGtleSA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmllbGRzOiBGaWVsZFtdID0gW107XG5cbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhmcm9udG1hdHRlcikpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZW50cnkgPSBmcm9udG1hdHRlcltrZXldO1xuXG4gICAgICAgICAgICAgICAgICAgIGZpZWxkcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogZW50cnkua2V5LnRvTG93ZXJDYXNlKCksXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZW50cnkudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICByYXc6IGVudHJ5LnJhdyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3ZlbmFuY2U6IHsgdHlwZTogXCJmcm9udG1hdHRlclwiLCBmaWxlOiBvYmplY3QuJGZpbGUhLCBrZXk6IGVudHJ5LmtleSB9LFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gZmllbGRzO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBrZXkgPSBrZXkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICBpZiAoIShrZXkgaW4gZnJvbnRtYXR0ZXIpKSByZXR1cm4gW107XG5cbiAgICAgICAgICAgICAgICBjb25zdCBlbnRyeSA9IGZyb250bWF0dGVyW2tleV07XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlbnRyeS52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJhdzogZW50cnkucmF3LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvdmVuYW5jZTogeyB0eXBlOiBcImZyb250bWF0dGVyXCIsIGZpbGU6IG9iamVjdC4kZmlsZSEsIGtleSB9LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqIEZpZWxkIGV4dHJhY3RvciB3aGljaCBzaG93cyBhbGwgaW5saW5lIGZpZWxkcy4gKi9cbiAgICBleHBvcnQgZnVuY3Rpb24gaW5saW5lRmllbGRzPFQgZXh0ZW5kcyBJbmRleGFibGU+KFxuICAgICAgICBpbmxpbmVNYXA6IChvYmplY3Q6IFQpID0+IFJlY29yZDxzdHJpbmcsIElubGluZUZpZWxkPiB8IHVuZGVmaW5lZFxuICAgICk6IEZpZWxkRXh0cmFjdG9yPFQ+IHtcbiAgICAgICAgcmV0dXJuIChvYmplY3Q6IFQsIGtleT86IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgY29uc3QgbWFwID0gaW5saW5lTWFwKG9iamVjdCk7XG4gICAgICAgICAgICBpZiAoIW1hcCkgcmV0dXJuIFtdO1xuXG4gICAgICAgICAgICBpZiAoa2V5ID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWVsZHMgPSBbXTtcblxuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZmllbGQgb2YgT2JqZWN0LnZhbHVlcyhtYXApKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogZmllbGQua2V5LnRvTG93ZXJDYXNlKCksXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZmllbGQudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICByYXc6IGZpZWxkLnJhdyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3ZlbmFuY2U6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcImlubGluZS1maWVsZFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6IG9iamVjdC4kZmlsZSEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZTogZmllbGQucG9zaXRpb24ubGluZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGZpZWxkLmtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gYXMgUHJvdmVuYW5jZSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZpZWxkcztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAga2V5ID0ga2V5LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgaWYgKCEoa2V5IGluIG1hcCkpIHJldHVybiBbXTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGZpZWxkID0gbWFwW2tleV07XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBrZXksXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZmllbGQudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICByYXc6IGZpZWxkLnJhdyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3ZlbmFuY2U6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcImlubGluZS1maWVsZFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6IG9iamVjdC4kZmlsZSEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZTogZmllbGQucG9zaXRpb24ubGluZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGZpZWxkLmtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gYXMgUHJvdmVuYW5jZSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKiBNZXJnZSBtdWx0aXBsZSBmaWVsZCBleHRyYWN0b3JzIGludG8gb25lOyBpZiBtdWx0aXBsZSBleHRyYWN0b3JzIHByb2R1Y2UgaWRlbnRpY2FsIGtleXMsIGtleXMgZnJvbSB0aGUgZWFybGllciBleHRyYWN0b3Igd2lsbCBiZSBwcmVmZXJyZWQuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIG1lcmdlPFQgZXh0ZW5kcyBGaWVsZGJlYXJpbmc+KC4uLmV4dHJhY3RvcnM6IEZpZWxkRXh0cmFjdG9yPFQ+W10pOiBGaWVsZEV4dHJhY3RvcjxUPiB7XG4gICAgICAgIHJldHVybiAob2JqZWN0OiBULCBrZXk/OiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGlmIChrZXkgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHVzZWQgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGZpZWxkczogRmllbGRbXSA9IFtdO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZXh0cmFjdG9yIG9mIGV4dHJhY3RvcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBmaWVsZCBvZiBleHRyYWN0b3Iob2JqZWN0LCB1bmRlZmluZWQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodXNlZC5oYXMoZmllbGQua2V5LnRvTG93ZXJDYXNlKCkpKSBjb250aW51ZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdXNlZC5hZGQoZmllbGQua2V5LnRvTG93ZXJDYXNlKCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRzLnB1c2goZmllbGQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBmaWVsZHM7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZXh0cmFjdG9yIG9mIGV4dHJhY3RvcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmllbGQgPSBleHRyYWN0b3Iob2JqZWN0LCBrZXkpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmllbGQgJiYgZmllbGQubGVuZ3RoID4gMCkgcmV0dXJuIGZpZWxkO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG59XG4iLCAiLyoqIFBhcnNlIGlubGluZSBmaWVsZHMgYW5kIG90aGVyIGVtYmVkZGVkIG1ldGFkYXRhIGluIGEgbGluZS4gKi9cblxuaW1wb3J0IHsgUFJJTUlUSVZFUyB9IGZyb20gXCJleHByZXNzaW9uL3BhcnNlclwiO1xuaW1wb3J0IHsgTGl0ZXJhbCB9IGZyb20gXCJleHByZXNzaW9uL2xpdGVyYWxcIjtcbmltcG9ydCAqIGFzIFAgZnJvbSBcInBhcnNpbW1vblwiO1xuaW1wb3J0IGVtb2ppUmVnZXggZnJvbSBcImVtb2ppLXJlZ2V4XCI7XG5pbXBvcnQgeyBKc29uQ29udmVyc2lvbiwgSnNvbkxpdGVyYWwgfSBmcm9tIFwiaW5kZXgvdHlwZXMvanNvbi9jb21tb25cIjtcblxuLyoqIEEgcGFyc2VkIGlubGluZSBmaWVsZCBmcm9tIGEgc3BlY2lmaWMgbGluZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTG9jYWxJbmxpbmVGaWVsZCB7XG4gICAgLyoqIFRoZSByYXcgcGFyc2VkIGtleS4gKi9cbiAgICBrZXk6IHN0cmluZztcbiAgICAvKiogVGhlIHJhdyB2YWx1ZSBvZiB0aGUgZmllbGQuICovXG4gICAgdmFsdWU6IHN0cmluZztcbiAgICAvKiogVGhlIHN0YXJ0IGNvbHVtbiBvZiB0aGUgZmllbGQuICovXG4gICAgc3RhcnQ6IG51bWJlcjtcbiAgICAvKiogVGhlIHN0YXJ0IGNvbHVtbiBvZiB0aGUgKnZhbHVlKiBmb3IgdGhlIGZpZWxkLiAqL1xuICAgIHN0YXJ0VmFsdWU6IG51bWJlcjtcbiAgICAvKiogVGhlIGVuZCBjb2x1bW4gb2YgdGhlIGZpZWxkLiAqL1xuICAgIGVuZDogbnVtYmVyO1xuICAgIC8qKiBJZiB0aGlzIGlubGluZSBmaWVsZCB3YXMgZGVmaW5lZCB2aWEgYSB3cmFwcGluZyAoJ1snIG9yICcoJyBvciAnbGluaycpLCB0aGVuIHRoZSB3cmFwcGluZyB0aGF0IHdhcyB1c2VkLiAqL1xuICAgIHdyYXBwaW5nPzogc3RyaW5nO1xufVxuXG4vKiogRnVsbCBpbmxpbmUgZmllbGQgbWV0YWRhdGEgZm9yIGFuIG9iamVjdC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5saW5lRmllbGQge1xuICAgIC8qKiBUaGUgYWN0dWFsIGtleSBkZXNjcmliaW5nIHRoZSBpbmxpbmUgZmllbGQuICovXG4gICAga2V5OiBzdHJpbmc7XG4gICAgLyoqIFRoZSByYXcgdmFsdWUgb2YgdGhlIGlubGluZSBmaWVsZC4gKi9cbiAgICByYXc6IHN0cmluZztcbiAgICAvKiogVGhlIHBhcnNlZCB2YWx1ZS4gKi9cbiAgICB2YWx1ZTogTGl0ZXJhbDtcbiAgICAvKiogRnVsbCBwb3NpdGlvbiBpbmZvcm1hdGlvbiBmb3Igd2hlcmUgdGhlIGlubGluZSBmaWVsZCBpcyBsb2NhdGVkIGluIHRoZSBkb2N1bWVudC4gKi9cbiAgICBwb3NpdGlvbjoge1xuICAgICAgICAvKiogVGhlIGxpbmUgbnVtYmVyIHRoZSBpbmxpbmUgZmllbGQgYXBwZWFycyBvbi4gKi9cbiAgICAgICAgbGluZTogbnVtYmVyO1xuICAgICAgICAvKiogVGhlIHN0YXJ0IGNvbHVtbiBvZiB0aGUgZmllbGQuICovXG4gICAgICAgIHN0YXJ0OiBudW1iZXI7XG4gICAgICAgIC8qKiBUaGUgc3RhcnQgY29sdW1uIG9mIHRoZSAqdmFsdWUqIGZvciB0aGUgZmllbGQuIEltbWVkaWF0ZWx5IGFmdGVyIHRoZSAnOjonLiAqL1xuICAgICAgICBzdGFydFZhbHVlOiBudW1iZXI7XG4gICAgICAgIC8qKiBUaGUgZW5kIGNvbHVtbiBvZiB0aGUgZmllbGQuICovXG4gICAgICAgIGVuZDogbnVtYmVyO1xuICAgIH07XG4gICAgLyoqIElmIHRoaXMgaW5saW5lIGZpZWxkIHdhcyBkZWZpbmVkIHZpYSBhIHdyYXBwaW5nICgnWycgb3IgJygnIG9yICdsaW5rJyksIHRoZW4gdGhlIHdyYXBwaW5nIHRoYXQgd2FzIHVzZWQuICovXG4gICAgd3JhcHBpbmc/OiBzdHJpbmc7XG59XG5cbi8qKiBKU09OLCBzZXJpYWxpemFibGUgcmVwcmVzZW50YXRpb24gb2YgYW4gaW5saW5lIGZpZWxkLiAqL1xuZXhwb3J0IGludGVyZmFjZSBKc29uSW5saW5lRmllbGQge1xuICAgIC8qKiBUaGUgYWN0dWFsIGtleSBkZXNjcmliaW5nIHRoZSBpbmxpbmUgZmllbGQuICovXG4gICAga2V5OiBzdHJpbmc7XG4gICAgLyoqIFRoZSByYXcgdmFsdWUgb2YgdGhlIGlubGluZSBmaWVsZC4gKi9cbiAgICByYXc6IHN0cmluZztcbiAgICAvKiogVGhlIHBhcnNlZCB2YWx1ZS4gKi9cbiAgICB2YWx1ZTogSnNvbkxpdGVyYWw7XG4gICAgLyoqIEZ1bGwgcG9zaXRpb24gaW5mb3JtYXRpb24gZm9yIHdoZXJlIHRoZSBpbmxpbmUgZmllbGQgaXMgbG9jYXRlZCBpbiB0aGUgZG9jdW1lbnQuICovXG4gICAgcG9zaXRpb246IHtcbiAgICAgICAgLyoqIFRoZSBsaW5lIG51bWJlciB0aGUgaW5saW5lIGZpZWxkIGFwcGVhcnMgb24uICovXG4gICAgICAgIGxpbmU6IG51bWJlcjtcbiAgICAgICAgLyoqIFRoZSBzdGFydCBjb2x1bW4gb2YgdGhlIGZpZWxkLiAqL1xuICAgICAgICBzdGFydDogbnVtYmVyO1xuICAgICAgICAvKiogVGhlIHN0YXJ0IGNvbHVtbiBvZiB0aGUgKnZhbHVlKiBmb3IgdGhlIGZpZWxkLiBJbW1lZGlhdGVseSBhZnRlciB0aGUgJzo6Jy4gKi9cbiAgICAgICAgc3RhcnRWYWx1ZTogbnVtYmVyO1xuICAgICAgICAvKiogVGhlIGVuZCBjb2x1bW4gb2YgdGhlIGZpZWxkLiAqL1xuICAgICAgICBlbmQ6IG51bWJlcjtcbiAgICB9O1xuICAgIC8qKiBJZiB0aGlzIGlubGluZSBmaWVsZCB3YXMgZGVmaW5lZCB2aWEgYSB3cmFwcGluZyAoJ1snIG9yICcoJyBvciAnbGluaycpLCB0aGVuIHRoZSB3cmFwcGluZyB0aGF0IHdhcyB1c2VkLiAqL1xuICAgIHdyYXBwaW5nPzogc3RyaW5nO1xufVxuXG4vKiogQ29udmVydCBhbiBpbmxpbmUgZmllbGQgdG8gYSBKU09OIGZvcm1hdC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBqc29uSW5saW5lRmllbGQoZmllbGQ6IElubGluZUZpZWxkKTogSnNvbklubGluZUZpZWxkIHtcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgZmllbGQsIHsgdmFsdWU6IEpzb25Db252ZXJzaW9uLmpzb24oZmllbGQudmFsdWUpIH0pO1xufVxuXG4vKiogQ29udmVydCBhIEpTT04gaW5saW5lIGZpZWxkIGJhY2sgdG8gYSByZWd1bGFyIGZpZWxkLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbHVlSW5saW5lRmllbGQoZmllbGQ6IEpzb25JbmxpbmVGaWVsZCk6IElubGluZUZpZWxkIHtcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgZmllbGQsIHsgdmFsdWU6IEpzb25Db252ZXJzaW9uLnZhbHVlKGZpZWxkLnZhbHVlKSB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFzSW5saW5lRmllbGQobG9jYWw6IExvY2FsSW5saW5lRmllbGQsIGxpbmVubzogbnVtYmVyKTogSW5saW5lRmllbGQ7XG5leHBvcnQgZnVuY3Rpb24gYXNJbmxpbmVGaWVsZChsb2NhbDogTG9jYWxJbmxpbmVGaWVsZFtdLCBsaW5lbm86IG51bWJlcik6IElubGluZUZpZWxkW107XG4vKiogQ29udmVydCBhIGxvY2FsIGlubGluZSBmaWVsZCBpbnRvIGEgZnVsbCBpbmxpbmUgZmllbGQgYnkgcGVyZm9ybWluZyBwYXJzaW5nIGFuZCBhZGRpbmcgdGhlIGNvcnJlY3QgbGluZSBudW1iZXIuICovXG5leHBvcnQgZnVuY3Rpb24gYXNJbmxpbmVGaWVsZChcbiAgICBsb2NhbDogTG9jYWxJbmxpbmVGaWVsZCB8IExvY2FsSW5saW5lRmllbGRbXSxcbiAgICBsaW5lbm86IG51bWJlclxuKTogSW5saW5lRmllbGQgfCBJbmxpbmVGaWVsZFtdIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShsb2NhbCkpIHtcbiAgICAgICAgcmV0dXJuIGxvY2FsLm1hcCgoZikgPT4gYXNJbmxpbmVGaWVsZChmLCBsaW5lbm8pKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBrZXk6IGxvY2FsLmtleSxcbiAgICAgICAgcmF3OiBsb2NhbC52YWx1ZSxcbiAgICAgICAgdmFsdWU6IHBhcnNlSW5saW5lVmFsdWUobG9jYWwudmFsdWUpLFxuICAgICAgICBwb3NpdGlvbjoge1xuICAgICAgICAgICAgbGluZTogbGluZW5vLFxuICAgICAgICAgICAgc3RhcnQ6IGxvY2FsLnN0YXJ0LFxuICAgICAgICAgICAgc3RhcnRWYWx1ZTogbG9jYWwuc3RhcnRWYWx1ZSxcbiAgICAgICAgICAgIGVuZDogbG9jYWwuZW5kLFxuICAgICAgICB9LFxuICAgICAgICB3cmFwcGluZzogbG9jYWwud3JhcHBpbmcsXG4gICAgfTtcbn1cblxuLyoqIFRoZSB3cmFwcGVyIGNoYXJhY3RlcnMgdGhhdCBjYW4gYmUgdXNlZCB0byBkZWZpbmUgYW4gaW5saW5lIGZpZWxkLiAqL1xuZXhwb3J0IGNvbnN0IElOTElORV9GSUVMRF9XUkFQUEVSUzogUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4gPSBPYmplY3QuZnJlZXplKHtcbiAgICBcIltcIjogXCJdXCIsXG4gICAgXCIoXCI6IFwiKVwiLFxufSk7XG5cbi8qKlxuICogRmluZCBhIG1hdGNoaW5nIGNsb3NpbmcgYnJhY2tldCB0aGF0IG9jY3VycyBhdCBvciBhZnRlciBgc3RhcnRgLCByZXNwZWN0aW5nIG5lc3RpbmcgYW5kIGVzY2FwZXMuIElmIGZvdW5kLFxuICogcmV0dXJucyB0aGUgdmFsdWUgY29udGFpbmVkIHdpdGhpbiBhbmQgdGhlIHN0cmluZyBpbmRleCBhZnRlciB0aGUgZW5kIG9mIHRoZSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gZmluZENsb3NpbmcoXG4gICAgbGluZTogc3RyaW5nLFxuICAgIHN0YXJ0OiBudW1iZXIsXG4gICAgb3Blbjogc3RyaW5nLFxuICAgIGNsb3NlOiBzdHJpbmdcbik6IHsgdmFsdWU6IHN0cmluZzsgZW5kSW5kZXg6IG51bWJlciB9IHwgdW5kZWZpbmVkIHtcbiAgICBsZXQgbmVzdGluZyA9IDA7XG4gICAgbGV0IGVzY2FwZWQgPSBmYWxzZTtcbiAgICBmb3IgKGxldCBpbmRleCA9IHN0YXJ0OyBpbmRleCA8IGxpbmUubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgIGxldCBjaGFyID0gbGluZS5jaGFyQXQoaW5kZXgpO1xuXG4gICAgICAgIC8vIEFsbG93cyBmb3IgZG91YmxlIGVzY2FwZXMgbGlrZSAnXFxcXCcgdG8gYmUgcmVuZGVyZWQgbm9ybWFsbHkuXG4gICAgICAgIGlmIChjaGFyID09IFwiXFxcXFwiKSB7XG4gICAgICAgICAgICBlc2NhcGVkID0gIWVzY2FwZWQ7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElmIGVzY2FwZWQsIGlnbm9yZSB0aGUgbmV4dCBjaGFyYWN0ZXIgZm9yIGNvbXB1dGluZyBuZXN0aW5nLCByZWdhcmRsZXNzIG9mIHdoYXQgaXQgaXMuXG4gICAgICAgIGlmIChlc2NhcGVkKSB7XG4gICAgICAgICAgICBlc2NhcGVkID0gZmFsc2U7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjaGFyID09IG9wZW4pIG5lc3RpbmcrKztcbiAgICAgICAgZWxzZSBpZiAoY2hhciA9PSBjbG9zZSkgbmVzdGluZy0tO1xuXG4gICAgICAgIC8vIE9ubHkgb2NjdXJzIGlmIHdlIGFyZSBvbiBhIGNsb3NlIGNoYXJhY3RlciBhbmQgdHJoZXJlIGlzIG5vIG1vcmUgbmVzdGluZy5cbiAgICAgICAgaWYgKG5lc3RpbmcgPCAwKSByZXR1cm4geyB2YWx1ZTogbGluZS5zdWJzdHJpbmcoc3RhcnQsIGluZGV4KS50cmltKCksIGVuZEluZGV4OiBpbmRleCArIDEgfTtcblxuICAgICAgICBlc2NhcGVkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLyoqIEZpbmQgdGhlICc6Oicgc2VwYXJhdG9yIGluIGFuIGlubGluZSBmaWVsZC4gKi9cbmZ1bmN0aW9uIGZpbmRTZXBhcmF0b3IobGluZTogc3RyaW5nLCBzdGFydDogbnVtYmVyKTogeyBrZXk6IHN0cmluZzsgdmFsdWVJbmRleDogbnVtYmVyIH0gfCB1bmRlZmluZWQge1xuICAgIGxldCBzZXAgPSBsaW5lLmluZGV4T2YoXCI6OlwiLCBzdGFydCk7XG4gICAgaWYgKHNlcCA8IDApIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICByZXR1cm4geyBrZXk6IGxpbmUuc3Vic3RyaW5nKHN0YXJ0LCBzZXApLnRyaW0oKSwgdmFsdWVJbmRleDogc2VwICsgMiB9O1xufVxuXG4vKiogVHJ5IHRvIGNvbXBsZXRlbHkgcGFyc2UgYW4gaW5saW5lIGZpZWxkIHN0YXJ0aW5nIGF0IHRoZSBnaXZlbiBwb3NpdGlvbi4gQXNzdW1lcyBgc3RhcnRgIGlzIG9uIGEgd3JhcHBpbmcgY2hhcmFjdGVyLiAqL1xuZnVuY3Rpb24gZmluZFNwZWNpZmljSW5saW5lRmllbGQobGluZTogc3RyaW5nLCBzdGFydDogbnVtYmVyKTogTG9jYWxJbmxpbmVGaWVsZCB8IHVuZGVmaW5lZCB7XG4gICAgbGV0IG9wZW4gPSBsaW5lLmNoYXJBdChzdGFydCk7XG5cbiAgICBsZXQga2V5ID0gZmluZFNlcGFyYXRvcihsaW5lLCBzdGFydCArIDEpO1xuICAgIGlmIChrZXkgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgIC8vIEZhaWwgdGhlIG1hdGNoIGlmIHdlIGZpbmQgYW55IHNlcGFyYXRvciBjaGFyYWN0ZXJzIChub3QgYWxsb3dlZCBpbiBrZXlzKS5cbiAgICBmb3IgKGxldCBzZXAgb2YgT2JqZWN0LmtleXMoSU5MSU5FX0ZJRUxEX1dSQVBQRVJTKS5jb25jYXQoT2JqZWN0LnZhbHVlcyhJTkxJTkVfRklFTERfV1JBUFBFUlMpKSkge1xuICAgICAgICBpZiAoa2V5LmtleS5pbmNsdWRlcyhzZXApKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGxldCB2YWx1ZSA9IGZpbmRDbG9zaW5nKGxpbmUsIGtleS52YWx1ZUluZGV4LCBvcGVuLCBJTkxJTkVfRklFTERfV1JBUFBFUlNbb3Blbl0pO1xuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAga2V5OiBrZXkua2V5LFxuICAgICAgICB2YWx1ZTogdmFsdWUudmFsdWUsXG4gICAgICAgIHN0YXJ0OiBzdGFydCxcbiAgICAgICAgc3RhcnRWYWx1ZToga2V5LnZhbHVlSW5kZXgsXG4gICAgICAgIGVuZDogdmFsdWUuZW5kSW5kZXgsXG4gICAgICAgIHdyYXBwaW5nOiBvcGVuLFxuICAgIH07XG59XG5cbi8qKiBQYXJzZSBhIHRleHR1YWwgaW5saW5lIGZpZWxkIHZhbHVlIGludG8gc29tZXRoaW5nIHdlIGNhbiB3b3JrIHdpdGguICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VJbmxpbmVWYWx1ZSh2YWx1ZTogc3RyaW5nKTogTGl0ZXJhbCB7XG4gICAgLy8gRW1wdHkgaW5saW5lIHZhbHVlcyAoaS5lLiwgbm8gdGV4dCkgc2hvdWxkIG1hcCB0byBudWxsIHRvIG1hdGNoIGxvbmctdGVybSBEYXRhdmlldyBzZW1hbnRpY3MuXG4gICAgLy8gTnVsbCBpcyBhbHNvIGEgbW9yZSB1bml2ZXJzYWwgdHlwZSB0byBkZWFsIHdpdGggdGhhbiBzdHJpbmdzLCBzaW5jZSBhbGwgZnVuY3Rpb25zIGFjY2VwdCBudWxscy5cbiAgICBpZiAodmFsdWUudHJpbSgpID09IFwiXCIpIHJldHVybiBudWxsO1xuXG4gICAgLy8gVGhlIHN0cmlwcGVkIGxpdGVyYWwgZmllbGQgcGFyc2VyIHVuZGVyc3RhbmRzIGFsbCBvZiB0aGUgbm9uLWFycmF5L25vbi1vYmplY3QgZmllbGRzIGFuZCBjYW4gcGFyc2UgdGhlbSBmb3IgdXMuXG4gICAgLy8gSW5saW5lIGZpZWxkIG9iamVjdHMgYXJlIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkOyBpbmxpbmUgYXJyYXkgb2JqZWN0cyBoYXZlIHRvIGJlIGhhbmRsZWQgYnkgdGhlIHBhcnNlclxuICAgIC8vIHNlcGFyYXRlbHkuXG4gICAgbGV0IGlubGluZSA9IFBSSU1JVElWRVMuaW5saW5lRmllbGQucGFyc2UodmFsdWUpO1xuICAgIGlmIChpbmxpbmUuc3RhdHVzKSByZXR1cm4gaW5saW5lLnZhbHVlO1xuICAgIGVsc2UgcmV0dXJuIHZhbHVlO1xufVxuXG4vKiogRXh0cmFjdHMgaW5saW5lIGZpZWxkcyBvZiB0aGUgZm9ybSAnW2tleTo6IHZhbHVlXScgZnJvbSBhIGxpbmUgb2YgdGV4dC4gVGhpcyBpcyBkb25lIGluIGEgcmVsYXRpdmVseVxuICogXCJyb2J1c3RcIiB3YXkgdG8gYXZvaWQgZmFpbGluZyBkdWUgdG8gYmFkIG5lc3Rpbmcgb3Igb3RoZXIgaW50ZXJmZXJpbmcgTWFya2Rvd24gc3ltYm9sczpcbiAqXG4gKiAtIExvb2sgZm9yIGFueSB3cmFwcGVycyAoJ1snIGFuZCAnKCcpIGluIHRoZSBsaW5lLCB0cnlpbmcgdG8gcGFyc2Ugd2hhdGV2ZXIgY29tZXMgYWZ0ZXIgaXQgYXMgYW4gaW5saW5lIGtleTo6LlxuICogLSBJZiBzdWNjZXNzZnVsLCBzY2FuIHVudGlsIHlvdSBmaW5kIGEgbWF0Y2hpbmcgZW5kIGJyYWNrZXQsIGFuZCBwYXJzZSB3aGF0ZXZlciByZW1haW5zIGFzIGFuIGlubGluZSB2YWx1ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RJbmxpbmVGaWVsZHMobGluZTogc3RyaW5nLCBpbmNsdWRlVGFza0ZpZWxkczogYm9vbGVhbiA9IGZhbHNlKTogTG9jYWxJbmxpbmVGaWVsZFtdIHtcbiAgICBsZXQgZmllbGRzOiBMb2NhbElubGluZUZpZWxkW10gPSBbXTtcbiAgICBmb3IgKGxldCB3cmFwcGVyIG9mIE9iamVjdC5rZXlzKElOTElORV9GSUVMRF9XUkFQUEVSUykpIHtcbiAgICAgICAgbGV0IGZvdW5kSW5kZXggPSBsaW5lLmluZGV4T2Yod3JhcHBlcik7XG4gICAgICAgIHdoaWxlIChmb3VuZEluZGV4ID49IDApIHtcbiAgICAgICAgICAgIGxldCBwYXJzZWRGaWVsZCA9IGZpbmRTcGVjaWZpY0lubGluZUZpZWxkKGxpbmUsIGZvdW5kSW5kZXgpO1xuICAgICAgICAgICAgaWYgKCFwYXJzZWRGaWVsZCkge1xuICAgICAgICAgICAgICAgIGZvdW5kSW5kZXggPSBsaW5lLmluZGV4T2Yod3JhcHBlciwgZm91bmRJbmRleCArIDEpO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmaWVsZHMucHVzaChwYXJzZWRGaWVsZCk7XG4gICAgICAgICAgICBmb3VuZEluZGV4ID0gbGluZS5pbmRleE9mKHdyYXBwZXIsIHBhcnNlZEZpZWxkLmVuZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaW5jbHVkZVRhc2tGaWVsZHMpIGZpZWxkcyA9IGZpZWxkcy5jb25jYXQoZXh0cmFjdFNwZWNpYWxUYXNrRmllbGRzKGxpbmUpKTtcblxuICAgIGZpZWxkcy5zb3J0KChhLCBiKSA9PiBhLnN0YXJ0IC0gYi5zdGFydCk7XG5cbiAgICBsZXQgZmlsdGVyZWRGaWVsZHM6IExvY2FsSW5saW5lRmllbGRbXSA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZmllbGRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChpID09IDAgfHwgZmlsdGVyZWRGaWVsZHNbZmlsdGVyZWRGaWVsZHMubGVuZ3RoIC0gMV0uZW5kIDwgZmllbGRzW2ldLnN0YXJ0KSB7XG4gICAgICAgICAgICBmaWx0ZXJlZEZpZWxkcy5wdXNoKGZpZWxkc1tpXSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZpbHRlcmVkRmllbGRzO1xufVxuXG4vKiogVmFsaWRhdGVzIHRoYXQgYSByYXcgZmllbGQgbmFtZSBoYXMgYSB2YWxpZCBmb3JtLiAqL1xuY29uc3QgRlVMTF9MSU5FX0tFWV9QQVJUOiBQLlBhcnNlcjxzdHJpbmc+ID0gUC5hbHQoXG4gICAgUC5yZWdleHAobmV3IFJlZ0V4cChlbW9qaVJlZ2V4KCksIFwidVwiKSksXG4gICAgUC5yZWdleHAoL1swLTlcXHB7TGV0dGVyfVxcd1xcc18vLV0rL3UpXG4pXG4gICAgLm1hbnkoKVxuICAgIC5tYXAoKHBhcnRzKSA9PiBwYXJ0cy5qb2luKFwiXCIpKTtcblxuY29uc3QgRlVMTF9MSU5FX0tFWV9QQVJTRVI6IFAuUGFyc2VyPHN0cmluZz4gPSBQLnJlZ2V4cCgvW14wLTlcXHdcXHB7TGV0dGVyfV0qL3UpXG4gICAgLnRoZW4oRlVMTF9MSU5FX0tFWV9QQVJUKVxuICAgIC5za2lwKFAucmVnZXhwKC9bX1xcKn5gXSovdSkpO1xuXG4vKiogQXR0ZW1wdCB0byBleHRyYWN0IGEgZnVsbC1saW5lIGZpZWxkIChLZXk6OiBWYWx1ZSBjb25zdW1pbmcgdGhlIGVudGlyZSBjb250ZW50IGxpbmUpLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RGdWxsTGluZUZpZWxkKHRleHQ6IHN0cmluZyk6IExvY2FsSW5saW5lRmllbGQgfCB1bmRlZmluZWQge1xuICAgIGxldCBzZXAgPSBmaW5kU2VwYXJhdG9yKHRleHQsIDApO1xuICAgIGlmICghc2VwKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgLy8gV2UgbmVlZCB0byBwb3N0LXByb2Nlc3MgdGhlIGtleSB0byBkcm9wIHVubmVjZXNzYXJ5IG9wZW5pbmcgYW5ub3RhdGlvbnMgYXMgd2VsbCBhc1xuICAgIC8vIGRyb3Agc3Vycm91bmRpbmcgTWFya2Rvd24uXG4gICAgbGV0IHJlYWxLZXkgPSBGVUxMX0xJTkVfS0VZX1BBUlNFUi5wYXJzZShzZXAua2V5KTtcbiAgICBpZiAoIXJlYWxLZXkuc3RhdHVzKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAga2V5OiByZWFsS2V5LnZhbHVlLFxuICAgICAgICB2YWx1ZTogdGV4dC5zdWJzdHJpbmcoc2VwLnZhbHVlSW5kZXgpLnRyaW0oKSxcbiAgICAgICAgc3RhcnQ6IDAsXG4gICAgICAgIHN0YXJ0VmFsdWU6IHNlcC52YWx1ZUluZGV4LFxuICAgICAgICBlbmQ6IHRleHQubGVuZ3RoLFxuICAgIH07XG59XG5cbmV4cG9ydCBjb25zdCBDUkVBVEVEX0RBVEVfUkVHRVggPSAvXFx1ezI3OTV9XFxzKihcXGR7NH0tXFxkezJ9LVxcZHsyfSkvdTtcbmV4cG9ydCBjb25zdCBEVUVfREFURV9SRUdFWCA9IC8oPzpcXHV7MUY0QzV9fFxcdXsxRjRDNn18XFx1ezFGNUQzfVxcdXtGRTBGfT8pXFxzKihcXGR7NH0tXFxkezJ9LVxcZHsyfSkvdTtcbmV4cG9ydCBjb25zdCBET05FX0RBVEVfUkVHRVggPSAvXFx1ezI3MDV9XFxzKihcXGR7NH0tXFxkezJ9LVxcZHsyfSkvdTtcbmV4cG9ydCBjb25zdCBTQ0hFRFVMRURfREFURV9SRUdFWCA9IC9bXFx1ezIzRjN9XFx1ezIzMUJ9XVxccyooXFxkezR9LVxcZHsyfS1cXGR7Mn0pL3U7XG5leHBvcnQgY29uc3QgU1RBUlRfREFURV9SRUdFWCA9IC9cXHV7MUY2RUJ9XFxzKihcXGR7NH0tXFxkezJ9LVxcZHsyfSkvdTtcblxuZXhwb3J0IGNvbnN0IEVNT0pJX1JFR0VYRVMgPSBbXG4gICAgeyByZWdleDogQ1JFQVRFRF9EQVRFX1JFR0VYLCBrZXk6IFwiY3JlYXRlZFwiIH0sXG4gICAgeyByZWdleDogU1RBUlRfREFURV9SRUdFWCwga2V5OiBcInN0YXJ0XCIgfSxcbiAgICB7IHJlZ2V4OiBTQ0hFRFVMRURfREFURV9SRUdFWCwga2V5OiBcInNjaGVkdWxlZFwiIH0sXG4gICAgeyByZWdleDogRFVFX0RBVEVfUkVHRVgsIGtleTogXCJkdWVcIiB9LFxuICAgIHsgcmVnZXg6IERPTkVfREFURV9SRUdFWCwga2V5OiBcImNvbXBsZXRpb25cIiB9LFxuXTtcblxuLyoqIFBhcnNlIHNwZWNpYWwgY29tcGxldGVkL2R1ZS9kb25lIHRhc2sgZmllbGRzIHdoaWNoIGFyZSBtYXJrZWQgdmlhIGVtb2ppLiAqL1xuZnVuY3Rpb24gZXh0cmFjdFNwZWNpYWxUYXNrRmllbGRzKGxpbmU6IHN0cmluZyk6IExvY2FsSW5saW5lRmllbGRbXSB7XG4gICAgbGV0IHJlc3VsdHM6IExvY2FsSW5saW5lRmllbGRbXSA9IFtdO1xuXG4gICAgZm9yIChsZXQgeyByZWdleCwga2V5IH0gb2YgRU1PSklfUkVHRVhFUykge1xuICAgICAgICBjb25zdCBtYXRjaCA9IHJlZ2V4LmV4ZWMobGluZSk7XG4gICAgICAgIGlmICghbWF0Y2gpIGNvbnRpbnVlO1xuXG4gICAgICAgIHJlc3VsdHMucHVzaCh7XG4gICAgICAgICAgICBrZXksXG4gICAgICAgICAgICB2YWx1ZTogbWF0Y2hbMV0sXG4gICAgICAgICAgICBzdGFydDogbWF0Y2guaW5kZXgsXG4gICAgICAgICAgICBzdGFydFZhbHVlOiBtYXRjaC5pbmRleCArIDEsXG4gICAgICAgICAgICBlbmQ6IG1hdGNoLmluZGV4ICsgbWF0Y2hbMF0ubGVuZ3RoLFxuICAgICAgICAgICAgd3JhcHBpbmc6IFwiZW1vamktc2hvcnRoYW5kXCIsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHRzO1xufVxuXG4vKiogU2V0cyBvciByZXBsYWNlcyB0aGUgdmFsdWUgb2YgYW4gaW5saW5lIGZpZWxkOyBpZiB0aGUgdmFsdWUgaXMgJ3VuZGVmaW5lZCcsIGRlbGV0ZXMgdGhlIGtleS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRJbmxpbmVGaWVsZChzb3VyY2U6IHN0cmluZywga2V5OiBzdHJpbmcsIHZhbHVlPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBsZXQgZXhpc3RpbmcgPSBleHRyYWN0SW5saW5lRmllbGRzKHNvdXJjZSk7XG4gICAgbGV0IGV4aXN0aW5nS2V5cyA9IGV4aXN0aW5nLmZpbHRlcigoZikgPT4gZi5rZXkgPT0ga2V5KTtcblxuICAgIC8vIERvbid0IGRvIGFueXRoaW5nIGlmIHRoZXJlIGFyZSBkdXBsaWNhdGUga2V5cyBPUiB0aGUga2V5IGFscmVhZHkgZG9lc24ndCBleGlzdC5cbiAgICBpZiAoZXhpc3RpbmdLZXlzLmxlbmd0aCA+IDIgfHwgKGV4aXN0aW5nS2V5cy5sZW5ndGggPT0gMCAmJiAhdmFsdWUpKSByZXR1cm4gc291cmNlO1xuICAgIGxldCBleGlzdGluZ0tleSA9IGV4aXN0aW5nS2V5c1swXTtcblxuICAgIGxldCBhbm5vdGF0aW9uID0gdmFsdWUgPyBgWyR7a2V5fTo6ICR7dmFsdWV9XWAgOiBcIlwiO1xuICAgIGlmIChleGlzdGluZ0tleSkge1xuICAgICAgICBsZXQgcHJlZml4ID0gc291cmNlLnN1YnN0cmluZygwLCBleGlzdGluZ0tleS5zdGFydCk7XG4gICAgICAgIGxldCBzdWZmaXggPSBzb3VyY2Uuc3Vic3RyaW5nKGV4aXN0aW5nS2V5LmVuZCk7XG5cbiAgICAgICAgaWYgKGFubm90YXRpb24pIHJldHVybiBgJHtwcmVmaXh9JHthbm5vdGF0aW9ufSR7c3VmZml4fWA7XG4gICAgICAgIGVsc2UgcmV0dXJuIGAke3ByZWZpeH0ke3N1ZmZpeC50cmltU3RhcnQoKX1gO1xuICAgIH0gZWxzZSBpZiAoYW5ub3RhdGlvbikge1xuICAgICAgICByZXR1cm4gYCR7c291cmNlLnRyaW1FbmQoKX0gJHthbm5vdGF0aW9ufWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNvdXJjZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldEVtb2ppU2hvcnRoYW5kQ29tcGxldGlvbkZpZWxkKHNvdXJjZTogc3RyaW5nLCB2YWx1ZT86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgZXhpc3RpbmcgPSBleHRyYWN0SW5saW5lRmllbGRzKHNvdXJjZSwgdHJ1ZSk7XG4gICAgY29uc3QgZXhpc3RpbmdLZXlzID0gZXhpc3RpbmcuZmlsdGVyKChmKSA9PiBmLmtleSA9PT0gXCJjb21wbGV0aW9uXCIgJiYgZi53cmFwcGluZyA9PT0gXCJlbW9qaS1zaG9ydGhhbmRcIik7XG5cbiAgICAvLyBEb24ndCBkbyBhbnl0aGluZyBpZiB0aGVyZSBhcmUgZHVwbGljYXRlIGtleXMgT1IgdGhlIGtleSBhbHJlYWR5IGRvZXNuJ3QgZXhpc3QuXG4gICAgaWYgKGV4aXN0aW5nS2V5cy5sZW5ndGggPiAyIHx8IChleGlzdGluZ0tleXMubGVuZ3RoID09IDAgJiYgIXZhbHVlKSkgcmV0dXJuIHNvdXJjZTtcblxuICAgIC8qIE5vIHdyYXBwZXIsIGFkZCBvd24gc3BhY2luZyBhdCBzdGFydCAqL1xuICAgIGNvbnN0IGFubm90YXRpb24gPSB2YWx1ZSA/IGAgXHUyNzA1ICR7dmFsdWV9YCA6IFwiXCI7XG4gICAgbGV0IGV4aXN0aW5nS2V5ID0gZXhpc3RpbmdLZXlzWzBdO1xuICAgIGlmIChleGlzdGluZ0tleSkge1xuICAgICAgICBjb25zdCBwcmVmaXggPSBzb3VyY2Uuc3Vic3RyaW5nKDAsIGV4aXN0aW5nS2V5LnN0YXJ0KTtcbiAgICAgICAgY29uc3Qgc3VmZml4ID0gc291cmNlLnN1YnN0cmluZyhleGlzdGluZ0tleS5lbmQpO1xuICAgICAgICByZXR1cm4gYCR7cHJlZml4LnRyaW1FbmQoKX0ke2Fubm90YXRpb259JHtzdWZmaXh9YDtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gYCR7c291cmNlLnRyaW1FbmQoKX0ke2Fubm90YXRpb259YDtcbiAgICB9XG59XG4iLCAiLyoqIE1hcCB0aGUgdmFsdWVzIG9mIGFuIG9iamVjdCwgcmV0dXJuaW5nIGEgbmV3IG9iamVjdC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXBPYmplY3RWYWx1ZXM8ViwgVT4ob2JqZWN0OiBSZWNvcmQ8c3RyaW5nLCBWPiwgZnVuYzogKHg6IFYpID0+IFUpOiBSZWNvcmQ8c3RyaW5nLCBVPiB7XG4gICAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBVPiA9IHt9O1xuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKG9iamVjdCkpIHtcbiAgICAgICAgcmVzdWx0W2tleV0gPSBmdW5jKHZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuIiwgImltcG9ydCB7IExpbmssIEpzb25MaW5rIH0gZnJvbSBcImV4cHJlc3Npb24vbGlua1wiO1xuaW1wb3J0IHsgTGl0ZXJhbCwgTGl0ZXJhbHMgfSBmcm9tIFwiZXhwcmVzc2lvbi9saXRlcmFsXCI7XG5pbXBvcnQgeyBEYXRlVGltZSwgRHVyYXRpb24gfSBmcm9tIFwibHV4b25cIjtcbmltcG9ydCB7IG1hcE9iamVjdFZhbHVlcyB9IGZyb20gXCJ1dGlscy9kYXRhXCI7XG5cbi8qKiBKU09OLXNlcmlhbGl6ZWQgZXF1aXZhbGVudHMgZm9yIGxpdGVyYWxzLiAqL1xuZXhwb3J0IHR5cGUgSnNvbkxpdGVyYWwgPVxuICAgIHwgYm9vbGVhblxuICAgIHwgbnVtYmVyXG4gICAgfCBzdHJpbmdcbiAgICB8IHsgJF90eXBlOiBcImRhdGVcIjsgdmFsdWU6IHN0cmluZyB9XG4gICAgfCB7ICRfdHlwZTogXCJkdXJhdGlvblwiOyB2YWx1ZTogc3RyaW5nIH1cbiAgICB8IHsgJF90eXBlOiBcImxpbmtcIjsgdmFsdWU6IEpzb25MaW5rIH1cbiAgICB8IEFycmF5PEpzb25MaXRlcmFsPlxuICAgIHwgUmVjb3JkPHN0cmluZywgYW55PlxuICAgIHwgbnVsbDtcblxuZXhwb3J0IG5hbWVzcGFjZSBKc29uQ29udmVyc2lvbiB7XG4gICAgZXhwb3J0IGNvbnN0IE5PT1BfTk9STUFMSVpFUjogKGlucHV0OiBMaXRlcmFsKSA9PiBMaXRlcmFsID0gKGlucHV0KSA9PiBpbnB1dDtcblxuICAgIC8qKiBDb252ZXJ0IGEgbGl0ZXJhbCB2YWx1ZSB0byBhIHNhZmUsIHBlcnNpc3RlbnQgSlNPTiBlcXVpdmFsZW50LiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiBqc29uKGxpdGVyYWw6IExpdGVyYWwpOiBKc29uTGl0ZXJhbCB7XG4gICAgICAgIGNvbnN0IHdyYXBwZWQgPSBMaXRlcmFscy53cmFwVmFsdWUobGl0ZXJhbCk7XG4gICAgICAgIGlmICghd3JhcHBlZCkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgc3dpdGNoICh3cmFwcGVkPy50eXBlKSB7XG4gICAgICAgICAgICBjYXNlIFwiYXJyYXlcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZS5tYXAoSnNvbkNvbnZlcnNpb24uanNvbik7XG4gICAgICAgICAgICBjYXNlIFwib2JqZWN0XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1hcE9iamVjdFZhbHVlcyh3cmFwcGVkLnZhbHVlLCBKc29uQ29udmVyc2lvbi5qc29uKTtcbiAgICAgICAgICAgIGNhc2UgXCJkYXRlXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgJF90eXBlOiBcImRhdGVcIiwgdmFsdWU6IHdyYXBwZWQudmFsdWUudG9JU08oeyBpbmNsdWRlT2Zmc2V0OiB0cnVlIH0pIH07XG4gICAgICAgICAgICBjYXNlIFwibGlua1wiOlxuICAgICAgICAgICAgICAgIHJldHVybiB7ICRfdHlwZTogXCJsaW5rXCIsIHZhbHVlOiB3cmFwcGVkLnZhbHVlLnRvT2JqZWN0KCkgfTtcbiAgICAgICAgICAgIGNhc2UgXCJkdXJhdGlvblwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB7ICRfdHlwZTogXCJkdXJhdGlvblwiLCB2YWx1ZTogd3JhcHBlZC52YWx1ZS50b0lTTygpIH07XG4gICAgICAgICAgICBjYXNlIFwiYm9vbGVhblwiOlxuICAgICAgICAgICAgY2FzZSBcIm51bWJlclwiOlxuICAgICAgICAgICAgY2FzZSBcInN0cmluZ1wiOlxuICAgICAgICAgICAgICAgIHJldHVybiB3cmFwcGVkLnZhbHVlO1xuICAgICAgICAgICAgY2FzZSBcImZ1bmN0aW9uXCI6XG4gICAgICAgICAgICBjYXNlIFwibnVsbFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydCBhIEpTT04gbGl0ZXJhbCB0byBpdCdzIGNvcnJlc3BvbmRpbmcgaHlkcmF0ZWQgdmFsdWUsIG9wdGlvbmFsbHkgYXBwbHlpbmdcbiAgICAgKiBhIG5vcm1hbGl6YXRpb24gc3RlcCB0byB0aGUgcmVzdWx0aW5nIHZhbHVlIGFuZCBhbnkgbGl0ZXJhbHMgY29udGFpbmVkIHdpdGhpbiBpdFxuICAgICAqIChzdWNoIGFzIGlmIHRoZSBsaXRlcmFsIGlzIGEgbGlzdCBvciBvYmplY3QpLlxuICAgICAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiB2YWx1ZShqc29uOiBKc29uTGl0ZXJhbCwgbm9ybWFsaXplcjogKGlucHV0OiBMaXRlcmFsKSA9PiBMaXRlcmFsID0gTk9PUF9OT1JNQUxJWkVSKTogTGl0ZXJhbCB7XG4gICAgICAgIGlmIChqc29uID09PSBudWxsIHx8IGpzb24gPT09IHVuZGVmaW5lZCkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoanNvbikpIHtcbiAgICAgICAgICAgIHJldHVybiBub3JtYWxpemVyKGpzb24ubWFwKChpbnB1dCkgPT4gSnNvbkNvbnZlcnNpb24udmFsdWUoaW5wdXQsIG5vcm1hbGl6ZXIpKSk7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGpzb24gPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgICAgIGlmICghKFwiJF90eXBlXCIgaW4ganNvbikpXG4gICAgICAgICAgICAgICAgcmV0dXJuIG1hcE9iamVjdFZhbHVlcyhqc29uLCAodikgPT4gSnNvbkNvbnZlcnNpb24udmFsdWUodiBhcyBKc29uTGl0ZXJhbCwgbm9ybWFsaXplcikpO1xuXG4gICAgICAgICAgICBjb25zdCB0eXBlID0ganNvbltcIiRfdHlwZVwiXTtcbiAgICAgICAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgXCJkYXRlXCI6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBub3JtYWxpemVyKERhdGVUaW1lLmZyb21JU08oanNvbi52YWx1ZSwgeyBzZXRab25lOiB0cnVlIH0pKTtcbiAgICAgICAgICAgICAgICBjYXNlIFwiZHVyYXRpb25cIjpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZXIoRHVyYXRpb24uZnJvbUlTTyhqc29uLnZhbHVlKSk7XG4gICAgICAgICAgICAgICAgY2FzZSBcImxpbmtcIjpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZXIoTGluay5mcm9tT2JqZWN0KGpzb24udmFsdWUpKTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVucmVjb2duaXplZCBzZXJpYWxpemVkIHR5cGUgJyR7dHlwZX0nIWApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gUHJpbWl0aXZlIHR5cGUsIHJldHVybiBhcyBpcy5cbiAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZXIoanNvbiBhcyBMaXRlcmFsKTtcbiAgICB9XG59XG4iLCAiLyoqXG4gKiBAbW9kdWxlIGluZGV4YWJsZXNcbiAqL1xuaW1wb3J0IHsgTGluaywgTGl0ZXJhbCwgTGl0ZXJhbHMgfSBmcm9tIFwiZXhwcmVzc2lvbi9saXRlcmFsXCI7XG5pbXBvcnQgeyBnZXRGaWxlVGl0bGUgfSBmcm9tIFwidXRpbHMvbm9ybWFsaXplcnNcIjtcbmltcG9ydCB7XG4gICAgRklMRV9UWVBFLFxuICAgIEZpbGUsXG4gICAgSW5kZXhhYmxlLFxuICAgIExJTktBQkxFX1RZUEUsXG4gICAgTElOS0JFQVJJTkdfVFlQRSxcbiAgICBMaW5rYWJsZSxcbiAgICBMaW5rYmVhcmluZyxcbiAgICBUQUdHQUJMRV9UWVBFLFxuICAgIFRhZ2dhYmxlLFxufSBmcm9tIFwiaW5kZXgvdHlwZXMvaW5kZXhhYmxlXCI7XG5pbXBvcnQgeyBEYXRlVGltZSB9IGZyb20gXCJsdXhvblwiO1xuaW1wb3J0IHtcbiAgICBFeHRyYWN0b3JzLFxuICAgIEZJRUxEQkVBUklOR19UWVBFLFxuICAgIEZpZWxkLFxuICAgIEZpZWxkRXh0cmFjdG9yLFxuICAgIEZpZWxkYmVhcmluZyxcbiAgICBGaWVsZGJlYXJpbmdzLFxufSBmcm9tIFwiLi4vLi4vZXhwcmVzc2lvbi9maWVsZFwiO1xuaW1wb3J0IHsgSW5saW5lRmllbGQsIGpzb25JbmxpbmVGaWVsZCwgdmFsdWVJbmxpbmVGaWVsZCB9IGZyb20gXCJpbmRleC9pbXBvcnQvaW5saW5lLWZpZWxkXCI7XG5pbXBvcnQge1xuICAgIExpbmVTcGFuLFxuICAgIEpzb25NYXJrZG93blBhZ2UsXG4gICAgSnNvbk1hcmtkb3duU2VjdGlvbixcbiAgICBKc29uTWFya2Rvd25CbG9jayxcbiAgICBKc29uTWFya2Rvd25MaXN0QmxvY2ssXG4gICAgSnNvbk1hcmtkb3duTGlzdEl0ZW0sXG4gICAgSnNvbk1hcmtkb3duVGFza0l0ZW0sXG4gICAgSnNvbk1hcmtkb3duRGF0YWJsb2NrIGFzIEpzb25NYXJrZG93bkRhdGFibG9jayxcbiAgICBKc29uTWFya2Rvd25Db2RlYmxvY2ssXG4gICAgSnNvbkZyb250bWF0dGVyRW50cnksXG59IGZyb20gXCIuL2pzb24vbWFya2Rvd25cIjtcbmltcG9ydCB7IG1hcE9iamVjdFZhbHVlcyB9IGZyb20gXCJ1dGlscy9kYXRhXCI7XG5pbXBvcnQgeyBKc29uQ29udmVyc2lvbiB9IGZyb20gXCIuL2pzb24vY29tbW9uXCI7XG5cbi8qKiBBIG1hcmtkb3duIGZpbGUgaW4gdGhlIHZhdWx0OyB0aGUgc291cmNlIG9mIG1vc3QgbWV0YWRhdGEuICovXG5leHBvcnQgY2xhc3MgTWFya2Rvd25QYWdlIGltcGxlbWVudHMgRmlsZSwgTGlua2JlYXJpbmcsIFRhZ2dhYmxlLCBJbmRleGFibGUsIEZpZWxkYmVhcmluZyB7XG4gICAgLyoqIEFsbCBvZiB0aGUgdHlwZXMgdGhhdCBhIG1hcmtkb3duIGZpbGUgaXMuICovXG4gICAgc3RhdGljIFRZUEVTID0gW0ZJTEVfVFlQRSwgXCJtYXJrZG93blwiLCBcInBhZ2VcIiwgVEFHR0FCTEVfVFlQRSwgTElOS0FCTEVfVFlQRSwgTElOS0JFQVJJTkdfVFlQRSwgRklFTERCRUFSSU5HX1RZUEVdO1xuXG4gICAgLy8gVXNlIHN0YXRpYyB0eXBlcyBmb3IgYWxsIG1hcmtkb3duIGZpbGVzLlxuICAgICR0eXBlczogc3RyaW5nW10gPSBNYXJrZG93blBhZ2UuVFlQRVM7XG4gICAgJHR5cGVuYW1lOiBzdHJpbmcgPSBcIlBhZ2VcIjtcblxuICAgIC8vIE1hcmtkb3duIGZpbGUgSURzIGFyZSBhbHdheXMganVzdCB0aGUgZnVsbCBwYXRoLlxuICAgIGdldCAkaWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRwYXRoO1xuICAgIH1cbiAgICAvLyBUaGUgZmlsZSBvZiBhIGZpbGUgaXMuLi4gaXQncyBmaWxlLlxuICAgIGdldCAkZmlsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJHBhdGg7XG4gICAgfVxuXG4gICAgLyoqIEZyb250bWF0dGVyIHZhbHVlcyBpbiB0aGUgZmlsZSwgaWYgcHJlc2VudC4gTWFwcyBsb3dlciBjYXNlIGZyb250bWF0dGVyIGtleSAtPiBlbnRyeS4gKi9cbiAgICAkZnJvbnRtYXR0ZXI/OiBSZWNvcmQ8c3RyaW5nLCBGcm9udG1hdHRlckVudHJ5PjtcbiAgICAvKiogTWFwIG9mIGFsbCBkaXN0aW5jdCBpbmxpbmUgZmllbGRzIGluIHRoZSBkb2N1bWVudC4gTWFwcyBsb3dlciBjYXNlIGtleSBuYW1lIC0+IGZ1bGwgbWV0YWRhdGEuICovXG4gICAgJGluZmllbGRzOiBSZWNvcmQ8c3RyaW5nLCBJbmxpbmVGaWVsZD47XG5cbiAgICAvKiogVGhlIHBhdGggdGhpcyBmaWxlIGV4aXN0cyBhdC4gKi9cbiAgICAkcGF0aDogc3RyaW5nO1xuICAgIC8qKiBPYnNpZGlhbi1wcm92aWRlZCBkYXRlIHRoaXMgcGFnZSB3YXMgY3JlYXRlZC4gKi9cbiAgICAkY3RpbWU6IERhdGVUaW1lO1xuICAgIC8qKiBPYnNpZGlhbi1wcm92aWRlZCBkYXRlIHRoaXMgcGFnZSB3YXMgbW9kaWZpZWQuICovXG4gICAgJG10aW1lOiBEYXRlVGltZTtcbiAgICAvKiogVGhlIGV4dGVuc2lvbjsgZm9yIG1hcmtkb3duIGZpbGVzLCBhbG1vc3QgYWx3YXlzICcubWQnLiAqL1xuICAgICRleHRlbnNpb246IHN0cmluZztcbiAgICAvKiogT2JzaWRpYW4tcHJvdmlkZWQgc2l6ZSBvZiB0aGlzIHBhZ2UgaW4gYnl0ZXMuICovXG4gICAgJHNpemU6IG51bWJlciA9IDA7XG4gICAgLyoqIFRoZSBmdWxsIGV4dGVudCBvZiB0aGUgZmlsZSAoc3RhcnQgMCwgZW5kIHRoZSBudW1iZXIgb2YgbGluZXMgaW4gdGhlIGZpbGUuKSAqL1xuICAgICRwb3NpdGlvbjogTGluZVNwYW47XG4gICAgLyoqIFRoZSBleGFjdCB0YWdzIGluIHRoZSBmaWxlLiAqL1xuICAgICR0YWdzOiBzdHJpbmdbXTtcbiAgICAvKiogQWxsIGxpbmtzIGluIHRoZSBmaWxlLiAqL1xuICAgICRsaW5rczogTGlua1tdO1xuICAgIC8qKlxuICAgICAqIEFsbCBjaGlsZCBtYXJrZG93biBzZWN0aW9ucyBvZiB0aGlzIG1hcmtkb3duIGZpbGUuIFRoZSBpbml0aWFsIHNlY3Rpb24gYmVmb3JlIGFueSBjb250ZW50IGlzIHNwZWNpYWwgYW5kIGlzXG4gICAgICogbmFtZWQgd2l0aCB0aGUgdGl0bGUgb2YgdGhlIGZpbGUuXG4gICAgICovXG4gICAgJHNlY3Rpb25zOiBNYXJrZG93blNlY3Rpb25bXSA9IFtdO1xuXG4gICAgLyoqIENyZWF0ZSBhIG1hcmtkb3duIGZpbGUgZnJvbSB0aGUgZ2l2ZW4gcmF3IHZhbHVlcy4gKi9cbiAgICBzdGF0aWMgZnJvbShyYXc6IEpzb25NYXJrZG93blBhZ2UsIG5vcm1hbGl6ZXI6IExpbmtOb3JtYWxpemVyID0gTk9PUF9OT1JNQUxJWkVSKTogTWFya2Rvd25QYWdlIHtcbiAgICAgICAgY29uc3Qgc2VjdGlvbnMgPSByYXcuJHNlY3Rpb25zLm1hcCgoc2VjdCkgPT4gTWFya2Rvd25TZWN0aW9uLmZyb20oc2VjdCwgcmF3LiRwYXRoLCBub3JtYWxpemVyKSk7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBNYXJrZG93blBhZ2Uoe1xuICAgICAgICAgICAgJHBhdGg6IHJhdy4kcGF0aCxcbiAgICAgICAgICAgICRmcm9udG1hdHRlcjogcmF3LiRmcm9udG1hdHRlclxuICAgICAgICAgICAgICAgID8gbWFwT2JqZWN0VmFsdWVzKHJhdy4kZnJvbnRtYXR0ZXIsIChmbSkgPT4gbm9ybWFsaXplTGlua3ModmFsdWVGcm9udG1hdHRlckVudHJ5KGZtKSwgbm9ybWFsaXplcikpXG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAkaW5maWVsZHM6IG1hcE9iamVjdFZhbHVlcyhyYXcuJGluZmllbGRzLCAoZmllbGQpID0+IG5vcm1hbGl6ZUxpbmtzKHZhbHVlSW5saW5lRmllbGQoZmllbGQpLCBub3JtYWxpemVyKSksXG4gICAgICAgICAgICAkY3RpbWU6IERhdGVUaW1lLmZyb21NaWxsaXMocmF3LiRjdGltZSksXG4gICAgICAgICAgICAkbXRpbWU6IERhdGVUaW1lLmZyb21NaWxsaXMocmF3LiRtdGltZSksXG4gICAgICAgICAgICAkZXh0ZW5zaW9uOiByYXcuJGV4dGVuc2lvbixcbiAgICAgICAgICAgICRzaXplOiByYXcuJHNpemUsXG4gICAgICAgICAgICAkcG9zaXRpb246IHJhdy4kcG9zaXRpb24sXG4gICAgICAgICAgICAkdGFnczogcmF3LiR0YWdzLFxuICAgICAgICAgICAgJGxpbmtzOiByYXcuJGxpbmtzLm1hcCgobGluaykgPT4gbm9ybWFsaXplcihMaW5rLmZyb21PYmplY3QobGluaykpKSxcbiAgICAgICAgICAgICRzZWN0aW9uczogc2VjdGlvbnMsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgY29uc3RydWN0b3IoaW5pdDogUGFydGlhbDxNYXJrZG93blBhZ2U+KSB7XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywgaW5pdCk7XG4gICAgfVxuXG4gICAgLyoqIFJldHVybiB0aGUgbnVtYmVyIG9mIGxpbmVzIGluIHRoZSBkb2N1bWVudC4gKi9cbiAgICBnZXQgJGxpbmVDb3VudCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJHBvc2l0aW9uLmVuZDtcbiAgICB9XG5cbiAgICAvKiogVGhlIG5hbWUgb2YgdGhlIGZpbGUuICovXG4gICAgZ2V0ICRuYW1lKCkge1xuICAgICAgICByZXR1cm4gZ2V0RmlsZVRpdGxlKHRoaXMuJHBhdGgpO1xuICAgIH1cblxuICAgIC8qKiBBIGxpbmsgdG8gdGhpcyBmaWxlLiAqL1xuICAgIGdldCAkbGluaygpIHtcbiAgICAgICAgcmV0dXJuIExpbmsuZmlsZSh0aGlzLiRwYXRoKTtcbiAgICB9XG5cbiAgICAvKiogQWxsIG9mIHRoZSBpbmRleGVkIGZpZWxkcyBpbiB0aGlzIG9iamVjdC4gKi9cbiAgICBnZXQgZmllbGRzKCk6IEZpZWxkW10ge1xuICAgICAgICByZXR1cm4gTWFya2Rvd25QYWdlLkZJRUxEX0RFRih0aGlzKTtcbiAgICB9XG5cbiAgICAvKiogR2V0IHRoZSBmdWxsIGZpZWxkIGRlZmluaXRpb24gZm9yIHRoZSBnaXZlbiBmaWVsZC4gKi9cbiAgICBwdWJsaWMgZmllbGQoa2V5OiBzdHJpbmcpOiBGaWVsZCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBNYXJrZG93blBhZ2UuRklFTERfREVGKHRoaXMsIGtleSk/LlswXTtcbiAgICB9XG5cbiAgICAvKiogR2V0IHRoZSB2YWx1ZSBmb3IgdGhlIGdpdmVuIGZpZWxkLiAqL1xuICAgIHB1YmxpYyB2YWx1ZShrZXk6IHN0cmluZyk6IExpdGVyYWwgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5maWVsZChrZXkpPy52YWx1ZTtcbiAgICB9XG5cbiAgICAvKiogQ29udmVydCB0aGlzIHBhZ2UgaW50byBpdCdzIHBhcnRpYWwgcmVwcmVzZW50YXRpb24gZm9yIHNhdmluZy4gKi9cbiAgICBwdWJsaWMganNvbigpOiBKc29uTWFya2Rvd25QYWdlIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICRwYXRoOiB0aGlzLiRwYXRoLFxuICAgICAgICAgICAgJGZyb250bWF0dGVyOiB0aGlzLiRmcm9udG1hdHRlciA/IG1hcE9iamVjdFZhbHVlcyh0aGlzLiRmcm9udG1hdHRlciwganNvbkZyb250bWF0dGVyRW50cnkpIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgJGluZmllbGRzOiBtYXBPYmplY3RWYWx1ZXModGhpcy4kaW5maWVsZHMsIGpzb25JbmxpbmVGaWVsZCksXG4gICAgICAgICAgICAkY3RpbWU6IHRoaXMuJGN0aW1lLnRvTWlsbGlzKCksXG4gICAgICAgICAgICAkbXRpbWU6IHRoaXMuJG10aW1lLnRvTWlsbGlzKCksXG4gICAgICAgICAgICAkZXh0ZW5zaW9uOiB0aGlzLiRleHRlbnNpb24sXG4gICAgICAgICAgICAkc2l6ZTogdGhpcy4kc2l6ZSxcbiAgICAgICAgICAgICRwb3NpdGlvbjogdGhpcy4kcG9zaXRpb24sXG4gICAgICAgICAgICAkdGFnczogdGhpcy4kdGFncyxcbiAgICAgICAgICAgICRsaW5rczogdGhpcy4kbGlua3MubWFwKChsaW5rKSA9PiBsaW5rLnRvT2JqZWN0KCkpLFxuICAgICAgICAgICAgJHNlY3Rpb25zOiB0aGlzLiRzZWN0aW9ucy5tYXAoKHNlY3QpID0+IHNlY3QuanNvbigpKSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBGSUVMRF9ERUY6IEZpZWxkRXh0cmFjdG9yPE1hcmtkb3duUGFnZT4gPSBFeHRyYWN0b3JzLm1lcmdlKFxuICAgICAgICBFeHRyYWN0b3JzLmludHJpbnNpY3MoKSxcbiAgICAgICAgRXh0cmFjdG9ycy5mcm9udG1hdHRlcigoZikgPT4gZi4kZnJvbnRtYXR0ZXIpLFxuICAgICAgICBFeHRyYWN0b3JzLmlubGluZUZpZWxkcygoZikgPT4gZi4kaW5maWVsZHMpXG4gICAgKTtcbn1cblxuZXhwb3J0IGNsYXNzIE1hcmtkb3duU2VjdGlvbiBpbXBsZW1lbnRzIEluZGV4YWJsZSwgVGFnZ2FibGUsIExpbmthYmxlLCBMaW5rYmVhcmluZywgRmllbGRiZWFyaW5nIHtcbiAgICAvKiogQWxsIG9mIHRoZSB0eXBlcyB0aGF0IGEgbWFya2Rvd24gc2VjdGlvbiBpcy4gKi9cbiAgICBzdGF0aWMgVFlQRVMgPSBbXCJtYXJrZG93blwiLCBcInNlY3Rpb25cIiwgVEFHR0FCTEVfVFlQRSwgTElOS0FCTEVfVFlQRSwgTElOS0JFQVJJTkdfVFlQRSwgRklFTERCRUFSSU5HX1RZUEVdO1xuXG4gICAgLyoqIFBhdGggb2YgdGhlIGZpbGUgdGhhdCB0aGlzIHNlY3Rpb24gaXMgaW4uICovXG4gICAgJHR5cGVzOiBzdHJpbmdbXSA9IE1hcmtkb3duU2VjdGlvbi5UWVBFUztcbiAgICAkdHlwZW5hbWU6IHN0cmluZyA9IFwiU2VjdGlvblwiO1xuICAgICRpZDogc3RyaW5nO1xuICAgICRmaWxlOiBzdHJpbmc7XG5cbiAgICAvKiogVGhlIGluZGV4IG9mIHRoaXMgc2VjdGlvbiBpbiB0aGUgZmlsZS4gKi9cbiAgICAkb3JkaW5hbDogbnVtYmVyO1xuICAgIC8qKiBUaGUgdGl0bGUgb2YgdGhlIHNlY3Rpb247IHRoZSByb290IChpbXBsaWNpdCkgc2VjdGlvbiB3aWxsIGhhdmUgdGhlIHRpdGxlIG9mIHRoZSBwYWdlLiAqL1xuICAgICR0aXRsZTogc3RyaW5nO1xuICAgIC8qKiBUaGUgaW5kZW50YXRpb24gbGV2ZWwgb2YgdGhlIHNlY3Rpb24gKDEgLSA2KS4gKi9cbiAgICAkbGV2ZWw6IG51bWJlcjtcbiAgICAvKiogVGhlIHNwYW4gb2YgbGluZXMgaW5kaWNhdGluZyB0aGUgcG9zaXRpb24gb2YgdGhlIHNlY3Rpb24uICovXG4gICAgJHBvc2l0aW9uOiBMaW5lU3BhbjtcbiAgICAvKiogQWxsIHRhZ3Mgb24gdGhlIGZpbGUuICovXG4gICAgJHRhZ3M6IHN0cmluZ1tdO1xuICAgIC8qKiBBbGwgbGlua3MgaW4gdGhlIGZpbGUuICovXG4gICAgJGxpbmtzOiBMaW5rW107XG4gICAgLyoqIEFsbCBvZiB0aGUgbWFya2Rvd24gYmxvY2tzIGluIHRoaXMgc2VjdGlvbi4gKi9cbiAgICAkYmxvY2tzOiBNYXJrZG93bkJsb2NrW107XG4gICAgLyoqIE1hcCBvZiBhbGwgZGlzdGluY3QgaW5saW5lIGZpZWxkcyBpbiB0aGUgZG9jdW1lbnQsIGZyb20ga2V5IG5hbWUgLT4gbWV0YWRhdGEuICovXG4gICAgJGluZmllbGRzOiBSZWNvcmQ8c3RyaW5nLCBJbmxpbmVGaWVsZD47XG5cbiAgICAvKiogQ29udmVydCByYXcgbWFya2Rvd24gc2VjdGlvbiBkYXRhIHRvIHRoZSBhcHByb3ByaWF0ZSBjbGFzcy4gKi9cbiAgICBzdGF0aWMgZnJvbShyYXc6IEpzb25NYXJrZG93blNlY3Rpb24sIGZpbGU6IHN0cmluZywgbm9ybWFsaXplcjogTGlua05vcm1hbGl6ZXIgPSBOT09QX05PUk1BTElaRVIpOiBNYXJrZG93blNlY3Rpb24ge1xuICAgICAgICBjb25zdCBibG9ja3MgPSByYXcuJGJsb2Nrcy5tYXAoKGJsb2NrKSA9PiBNYXJrZG93bkJsb2NrLmZyb20oYmxvY2ssIGZpbGUsIG5vcm1hbGl6ZXIpKTtcbiAgICAgICAgcmV0dXJuIG5ldyBNYXJrZG93blNlY3Rpb24oe1xuICAgICAgICAgICAgJGZpbGU6IGZpbGUsXG4gICAgICAgICAgICAkaWQ6IE1hcmtkb3duU2VjdGlvbi5yZWFkYWJsZUlkKGZpbGUsIHJhdy4kdGl0bGUsIHJhdy4kb3JkaW5hbCksXG4gICAgICAgICAgICAkb3JkaW5hbDogcmF3LiRvcmRpbmFsLFxuICAgICAgICAgICAgJHRpdGxlOiByYXcuJHRpdGxlLFxuICAgICAgICAgICAgJGxldmVsOiByYXcuJGxldmVsLFxuICAgICAgICAgICAgJHBvc2l0aW9uOiByYXcuJHBvc2l0aW9uLFxuICAgICAgICAgICAgJHRhZ3M6IHJhdy4kdGFncyxcbiAgICAgICAgICAgICRsaW5rczogcmF3LiRsaW5rcy5tYXAoKGwpID0+IG5vcm1hbGl6ZXIoTGluay5mcm9tT2JqZWN0KGwpKSksXG4gICAgICAgICAgICAkYmxvY2tzOiBibG9ja3MsXG4gICAgICAgICAgICAkaW5maWVsZHM6IG1hcE9iamVjdFZhbHVlcyhyYXcuJGluZmllbGRzLCAoaSkgPT4gbm9ybWFsaXplTGlua3ModmFsdWVJbmxpbmVGaWVsZChpKSwgbm9ybWFsaXplcikpLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbnN0cnVjdG9yKGluaXQ6IFBhcnRpYWw8TWFya2Rvd25TZWN0aW9uPikge1xuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGluaXQpO1xuICAgIH1cblxuICAgIC8qKiBPYnRhaW4gdGhlIG51bWJlciBvZiBsaW5lcyBpbiB0aGUgc2VjdGlvbi4gKi9cbiAgICBnZXQgJGxpbmVDb3VudCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy4kcG9zaXRpb24uZW5kIC0gdGhpcy4kcG9zaXRpb24uc3RhcnQ7XG4gICAgfVxuXG4gICAgLyoqIEFsaWFzIGZvciB0aXRsZSB3aGljaCBhbGxvd3Mgc2VhcmNoaW5nIG92ZXIgcGFnZXMgYW5kIHNlY3Rpb25zIGJ5ICduYW1lJy4gKi9cbiAgICBnZXQgJG5hbWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJHRpdGxlO1xuICAgIH1cblxuICAgIC8qKiBSZXR1cm4gYSBsaW5rIHRvIHRoaXMgc2VjdGlvbi4gKi9cbiAgICBnZXQgJGxpbmsoKTogTGluayB7XG4gICAgICAgIHJldHVybiBMaW5rLmhlYWRlcih0aGlzLiRmaWxlLCB0aGlzLiR0aXRsZSk7XG4gICAgfVxuXG4gICAgLyoqIEFsbCBvZiB0aGUgaW5kZXhlZCBmaWVsZHMgaW4gdGhpcyBvYmplY3QuICovXG4gICAgZ2V0IGZpZWxkcygpOiBGaWVsZFtdIHtcbiAgICAgICAgcmV0dXJuIE1hcmtkb3duU2VjdGlvbi5GSUVMRF9ERUYodGhpcyk7XG4gICAgfVxuXG4gICAgLyoqIEZldGNoIGEgc3BlY2lmaWMgZmllbGQgYnkga2V5LiAqL1xuICAgIHB1YmxpYyBmaWVsZChrZXk6IHN0cmluZyk6IEZpZWxkIHtcbiAgICAgICAgcmV0dXJuIE1hcmtkb3duU2VjdGlvbi5GSUVMRF9ERUYodGhpcywga2V5KT8uWzBdID8/IEZpZWxkYmVhcmluZ3MuZ2V0V2l0aERlZmF1bHQodGhpcywga2V5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdmFsdWUoa2V5OiBzdHJpbmcpOiBMaXRlcmFsIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmllbGQoa2V5KT8udmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIGpzb24oKTogSnNvbk1hcmtkb3duU2VjdGlvbiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAkb3JkaW5hbDogdGhpcy4kb3JkaW5hbCxcbiAgICAgICAgICAgICR0aXRsZTogdGhpcy4kdGl0bGUsXG4gICAgICAgICAgICAkbGV2ZWw6IHRoaXMuJGxldmVsLFxuICAgICAgICAgICAgJHBvc2l0aW9uOiB0aGlzLiRwb3NpdGlvbixcbiAgICAgICAgICAgICR0YWdzOiB0aGlzLiR0YWdzLFxuICAgICAgICAgICAgJGxpbmtzOiB0aGlzLiRsaW5rcy5tYXAoKGxpbmspID0+IGxpbmsudG9PYmplY3QoKSksXG4gICAgICAgICAgICAkYmxvY2tzOiB0aGlzLiRibG9ja3MubWFwKChibG9jaykgPT4gYmxvY2suanNvbigpKSxcbiAgICAgICAgICAgICRpbmZpZWxkczogbWFwT2JqZWN0VmFsdWVzKHRoaXMuJGluZmllbGRzLCBqc29uSW5saW5lRmllbGQpLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIEZJRUxEX0RFRjogRmllbGRFeHRyYWN0b3I8TWFya2Rvd25TZWN0aW9uPiA9IEV4dHJhY3RvcnMubWVyZ2UoXG4gICAgICAgIEV4dHJhY3RvcnMuaW50cmluc2ljcygpLFxuICAgICAgICBFeHRyYWN0b3JzLmlubGluZUZpZWxkcygoZikgPT4gZi4kaW5maWVsZHMpXG4gICAgKTtcblxuICAgIC8qKiBHZW5lcmF0ZSBhIHJlYWRhYmxlIElEIGZvciB0aGlzIHNlY3Rpb24gdXNpbmcgdGhlIGZpcnN0IDggY2hhcmFjdGVycyBvZiB0aGUgc3RyaW5nIGFuZCB0aGUgb3JkaW5hbC4gKi9cbiAgICBzdGF0aWMgcmVhZGFibGVJZChmaWxlOiBzdHJpbmcsIHRpdGxlOiBzdHJpbmcsIG9yZGluYWw6IG51bWJlcik6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGZpcnN0OCA9IHRpdGxlLnN1YnN0cmluZygwLCBNYXRoLm1pbih0aXRsZS5sZW5ndGgsIDgpKS5yZXBsYWNlKC9bXkEtWmEtejAtOS1fXSsvZ2ksIFwiLVwiKTtcblxuICAgICAgICByZXR1cm4gYCR7ZmlsZX0vc2VjdGlvbiR7b3JkaW5hbH0vJHtmaXJzdDh9YDtcbiAgICB9XG59XG5cbi8qKiBCYXNlIGNsYXNzIGZvciBhbGwgbWFya2Rvd24gYmxvY2tzLiAqL1xuZXhwb3J0IGNsYXNzIE1hcmtkb3duQmxvY2sgaW1wbGVtZW50cyBJbmRleGFibGUsIExpbmtiZWFyaW5nLCBUYWdnYWJsZSwgRmllbGRiZWFyaW5nIHtcbiAgICBzdGF0aWMgVFlQRVMgPSBbXCJtYXJrZG93blwiLCBcImJsb2NrXCIsIExJTktCRUFSSU5HX1RZUEUsIFRBR0dBQkxFX1RZUEUsIEZJRUxEQkVBUklOR19UWVBFXTtcblxuICAgICR0eXBlczogc3RyaW5nW10gPSBNYXJrZG93bkJsb2NrLlRZUEVTO1xuICAgICR0eXBlbmFtZTogc3RyaW5nID0gXCJCbG9ja1wiO1xuICAgICRpZDogc3RyaW5nO1xuICAgICRmaWxlOiBzdHJpbmc7XG5cbiAgICAvKiogVGhlIGluZGV4IG9mIHRoaXMgYmxvY2sgaW4gdGhlIGZpbGUuICovXG4gICAgJG9yZGluYWw6IG51bWJlcjtcbiAgICAvKiogVGhlIHBvc2l0aW9uL2V4dGVudCBvZiB0aGUgYmxvY2suICovXG4gICAgJHBvc2l0aW9uOiBMaW5lU3BhbjtcbiAgICAvKiogQWxsIHRhZ3Mgb24gdGhlIGJsb2NrLiAqL1xuICAgICR0YWdzOiBzdHJpbmdbXTtcbiAgICAvKiogQWxsIGxpbmtzIGluIHRoZSBmaWxlLiAqL1xuICAgICRsaW5rczogTGlua1tdO1xuICAgIC8qKiBNYXAgb2YgYWxsIGRpc3RpbmN0IGlubGluZSBmaWVsZHMgaW4gdGhlIGRvY3VtZW50LCBmcm9tIGtleSBuYW1lIC0+IG1ldGFkYXRhLiAqL1xuICAgICRpbmZpZWxkczogUmVjb3JkPHN0cmluZywgSW5saW5lRmllbGQ+O1xuICAgIC8qKiBJZiBwcmVzZW50LCB0aGUgZGlzdGluY3QgYmxvY2sgSUQgZm9yIHRoaXMgYmxvY2suICovXG4gICAgJGJsb2NrSWQ/OiBzdHJpbmc7XG4gICAgLyoqIFRoZSB0eXBlIG9mIGJsb2NrIC0gcGFyYWdyYXBoLCBsaXN0LCBhbmQgc28gb24uICovXG4gICAgJHR5cGU6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tKG9iamVjdDogSnNvbk1hcmtkb3duQmxvY2ssIGZpbGU6IHN0cmluZywgbm9ybWFsaXplcjogTGlua05vcm1hbGl6ZXIgPSBOT09QX05PUk1BTElaRVIpOiBNYXJrZG93bkJsb2NrIHtcbiAgICAgICAgaWYgKG9iamVjdC4kdHlwZSA9PT0gXCJsaXN0XCIpIHtcbiAgICAgICAgICAgIHJldHVybiBNYXJrZG93bkxpc3RCbG9jay5mcm9tKG9iamVjdCBhcyBKc29uTWFya2Rvd25MaXN0QmxvY2ssIGZpbGUsIG5vcm1hbGl6ZXIpO1xuICAgICAgICB9IGVsc2UgaWYgKG9iamVjdC4kdHlwZSA9PT0gXCJkYXRhYmxvY2tcIikge1xuICAgICAgICAgICAgcmV0dXJuIE1hcmtkb3duRGF0YWJsb2NrLmZyb20ob2JqZWN0IGFzIEpzb25NYXJrZG93bkRhdGFibG9jaywgZmlsZSwgbm9ybWFsaXplcik7XG4gICAgICAgIH0gZWxzZSBpZiAob2JqZWN0LiR0eXBlID09PSBcImNvZGVibG9ja1wiKSB7XG4gICAgICAgICAgICByZXR1cm4gTWFya2Rvd25Db2RlYmxvY2suZnJvbShvYmplY3QgYXMgSnNvbk1hcmtkb3duQ29kZWJsb2NrLCBmaWxlLCBub3JtYWxpemVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXcgTWFya2Rvd25CbG9jayh7XG4gICAgICAgICAgICAkZmlsZTogZmlsZSxcbiAgICAgICAgICAgICRpZDogTWFya2Rvd25CbG9jay5yZWFkYWJsZUlkKGZpbGUsIG9iamVjdC4kb3JkaW5hbCksXG4gICAgICAgICAgICAkb3JkaW5hbDogb2JqZWN0LiRvcmRpbmFsLFxuICAgICAgICAgICAgJHBvc2l0aW9uOiBvYmplY3QuJHBvc2l0aW9uLFxuICAgICAgICAgICAgJHRhZ3M6IG9iamVjdC4kdGFncyxcbiAgICAgICAgICAgICRsaW5rczogb2JqZWN0LiRsaW5rcy5tYXAoKGwpID0+IG5vcm1hbGl6ZXIoTGluay5mcm9tT2JqZWN0KGwpKSksXG4gICAgICAgICAgICAkaW5maWVsZHM6IG1hcE9iamVjdFZhbHVlcyhvYmplY3QuJGluZmllbGRzLCAoaSkgPT4gbm9ybWFsaXplTGlua3ModmFsdWVJbmxpbmVGaWVsZChpKSwgbm9ybWFsaXplcikpLFxuICAgICAgICAgICAgJGJsb2NrSWQ6IG9iamVjdC4kYmxvY2tJZCxcbiAgICAgICAgICAgICR0eXBlOiBvYmplY3QuJHR5cGUsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3Rvcihpbml0OiBQYXJ0aWFsPE1hcmtkb3duQmxvY2s+KSB7XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywgaW5pdCk7XG4gICAgfVxuXG4gICAgLyoqIElmIHRoaXMgYmxvY2sgaGFzIGEgYmxvY2sgSUQsIHRoZSBsaW5rIHRvIHRoaXMgYmxvY2suICovXG4gICAgZ2V0ICRsaW5rKCk6IExpbmsgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAodGhpcy4kYmxvY2tJZCkgcmV0dXJuIExpbmsuYmxvY2sodGhpcy4kZmlsZSwgdGhpcy4kYmxvY2tJZCk7XG4gICAgICAgIGVsc2UgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKiogQWxsIG9mIHRoZSBpbmRleGVkIGZpZWxkcyBpbiB0aGlzIG9iamVjdC4gKi9cbiAgICBnZXQgZmllbGRzKCkge1xuICAgICAgICByZXR1cm4gTWFya2Rvd25CbG9jay5GSUVMRF9ERUYodGhpcyk7XG4gICAgfVxuXG4gICAgLyoqIEZldGNoIGEgc3BlY2lmaWMgZmllbGQgYnkga2V5LiAqL1xuICAgIHB1YmxpYyBmaWVsZChrZXk6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gTWFya2Rvd25CbG9jay5GSUVMRF9ERUYodGhpcywga2V5KT8uWzBdID8/IEZpZWxkYmVhcmluZ3MuZ2V0V2l0aERlZmF1bHQodGhpcywga2V5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdmFsdWUoa2V5OiBzdHJpbmcpOiBMaXRlcmFsIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmllbGQoa2V5KT8udmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIGpzb24oKTogSnNvbk1hcmtkb3duQmxvY2sge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgJG9yZGluYWw6IHRoaXMuJG9yZGluYWwsXG4gICAgICAgICAgICAkcG9zaXRpb246IHRoaXMuJHBvc2l0aW9uLFxuICAgICAgICAgICAgJHRhZ3M6IHRoaXMuJHRhZ3MsXG4gICAgICAgICAgICAkbGlua3M6IHRoaXMuJGxpbmtzLm1hcCgobCkgPT4gbC50b09iamVjdCgpKSxcbiAgICAgICAgICAgICRpbmZpZWxkczogbWFwT2JqZWN0VmFsdWVzKHRoaXMuJGluZmllbGRzLCBqc29uSW5saW5lRmllbGQpLFxuICAgICAgICAgICAgJGJsb2NrSWQ6IHRoaXMuJGJsb2NrSWQsXG4gICAgICAgICAgICAkdHlwZTogdGhpcy4kdHlwZSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBzdGF0aWMgRklFTERfREVGOiBGaWVsZEV4dHJhY3RvcjxNYXJrZG93bkJsb2NrPiA9IEV4dHJhY3RvcnMubWVyZ2UoXG4gICAgICAgIEV4dHJhY3RvcnMuaW50cmluc2ljcygpLFxuICAgICAgICBFeHRyYWN0b3JzLmlubGluZUZpZWxkcygoZikgPT4gZi4kaW5maWVsZHMpXG4gICAgKTtcblxuICAgIC8qKiBHZW5lcmF0ZSBhIHJlYWRhYmxlIElEIGZvciB0aGlzIGJsb2NrIHVzaW5nIHRoZSBvcmRpbmFsIG9mIHRoZSBibG9jay4gKi9cbiAgICBzdGF0aWMgcmVhZGFibGVJZChmaWxlOiBzdHJpbmcsIG9yZGluYWw6IG51bWJlcik6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgJHtmaWxlfS9ibG9jayR7b3JkaW5hbH1gO1xuICAgIH1cbn1cblxuLyoqIFNwZWNpYWwgYmxvY2sgZm9yIG1hcmtkb3duIGxpc3RzIChvZiBlaXRoZXIgcGxhaW4gbGlzdCBlbnRyaWVzIG9yIHRhc2tzKS4gKi9cbmV4cG9ydCBjbGFzcyBNYXJrZG93bkxpc3RCbG9jayBleHRlbmRzIE1hcmtkb3duQmxvY2sgaW1wbGVtZW50cyBUYWdnYWJsZSwgTGlua2JlYXJpbmcge1xuICAgIHN0YXRpYyBUWVBFUyA9IFtcIm1hcmtkb3duXCIsIFwiYmxvY2tcIiwgXCJibG9jay1saXN0XCIsIFRBR0dBQkxFX1RZUEUsIExJTktCRUFSSU5HX1RZUEVdO1xuXG4gICAgJHR5cGVzOiBzdHJpbmdbXSA9IE1hcmtkb3duTGlzdEJsb2NrLlRZUEVTO1xuICAgICR0eXBlbmFtZTogc3RyaW5nID0gXCJMaXN0IEJsb2NrXCI7XG5cbiAgICAvKiogVGhlIGxpc3QgaXRlbXMgaW5zaWRlIG9mIHRoaXMgYmxvY2suICovXG4gICAgJGVsZW1lbnRzOiBNYXJrZG93bkxpc3RJdGVtW107XG5cbiAgICAvKiogQ3JlYXRlIGEgbGlzdCBibG9jayBmcm9tIGEgc2VyaWFsaXplZCB2YWx1ZS4gKi9cbiAgICBzdGF0aWMgZnJvbShcbiAgICAgICAgb2JqZWN0OiBKc29uTWFya2Rvd25MaXN0QmxvY2ssXG4gICAgICAgIGZpbGU6IHN0cmluZyxcbiAgICAgICAgbm9ybWFsaXplcjogTGlua05vcm1hbGl6ZXIgPSBOT09QX05PUk1BTElaRVJcbiAgICApOiBNYXJrZG93bkxpc3RCbG9jayB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnRzID0gb2JqZWN0LiRlbGVtZW50cy5tYXAoKGVsZW0pID0+IE1hcmtkb3duTGlzdEl0ZW0uZnJvbShlbGVtLCBmaWxlLCBub3JtYWxpemVyKSk7XG4gICAgICAgIHJldHVybiBuZXcgTWFya2Rvd25MaXN0QmxvY2soe1xuICAgICAgICAgICAgLy8gVE9ETzogVGhpcyBpcyBzaGFyZWQgd2l0aCBvdGhlciBibG9ja3MsIHNob3VsZCBwcm9iYWJseSBiZSBmaXhlZC5cbiAgICAgICAgICAgICRmaWxlOiBmaWxlLFxuICAgICAgICAgICAgJGlkOiBNYXJrZG93bkJsb2NrLnJlYWRhYmxlSWQoZmlsZSwgb2JqZWN0LiRvcmRpbmFsKSxcbiAgICAgICAgICAgICRvcmRpbmFsOiBvYmplY3QuJG9yZGluYWwsXG4gICAgICAgICAgICAkcG9zaXRpb246IG9iamVjdC4kcG9zaXRpb24sXG4gICAgICAgICAgICAkdGFnczogb2JqZWN0LiR0YWdzLFxuICAgICAgICAgICAgJGxpbmtzOiBvYmplY3QuJGxpbmtzLm1hcCgobCkgPT4gbm9ybWFsaXplcihMaW5rLmZyb21PYmplY3QobCkpKSxcbiAgICAgICAgICAgICRpbmZpZWxkczogbWFwT2JqZWN0VmFsdWVzKG9iamVjdC4kaW5maWVsZHMsIChpKSA9PiBub3JtYWxpemVMaW5rcyh2YWx1ZUlubGluZUZpZWxkKGkpLCBub3JtYWxpemVyKSksXG4gICAgICAgICAgICAkYmxvY2tJZDogb2JqZWN0LiRibG9ja0lkLFxuICAgICAgICAgICAgJGVsZW1lbnRzOiBlbGVtZW50cyxcbiAgICAgICAgICAgICR0eXBlOiBcImxpc3RcIixcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGpzb24oKTogSnNvbk1hcmtkb3duTGlzdEJsb2NrIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oc3VwZXIuanNvbigpLCB7XG4gICAgICAgICAgICAkZWxlbWVudHM6IHRoaXMuJGVsZW1lbnRzLm1hcCgoZWxlbSkgPT4gZWxlbS5qc29uKCkpLFxuICAgICAgICB9KSBhcyBKc29uTWFya2Rvd25MaXN0QmxvY2s7XG4gICAgfVxuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKGluaXQ6IFBhcnRpYWw8TWFya2Rvd25MaXN0QmxvY2s+KSB7XG4gICAgICAgIHN1cGVyKGluaXQpO1xuICAgIH1cbn1cblxuLyoqIEEgYmxvY2sgY29udGFpbmluZyBtYXJrZG93biBjb2RlLiAqL1xuZXhwb3J0IGNsYXNzIE1hcmtkb3duQ29kZWJsb2NrIGV4dGVuZHMgTWFya2Rvd25CbG9jayBpbXBsZW1lbnRzIEluZGV4YWJsZSwgRmllbGRiZWFyaW5nLCBMaW5rYmVhcmluZyB7XG4gICAgc3RhdGljIFRZUEVTID0gW1wibWFya2Rvd25cIiwgXCJibG9ja1wiLCBcImNvZGVibG9ja1wiLCBUQUdHQUJMRV9UWVBFLCBMSU5LQkVBUklOR19UWVBFLCBGSUVMREJFQVJJTkdfVFlQRV07XG5cbiAgICAkdHlwZXM6IHN0cmluZ1tdID0gTWFya2Rvd25Db2RlYmxvY2suVFlQRVM7XG4gICAgJGxhbmd1YWdlczogc3RyaW5nW107XG4gICAgJGNvbnRlbnRQb3NpdGlvbjogeyBzdGFydDogbnVtYmVyOyBlbmQ6IG51bWJlciB9O1xuICAgICRzdHlsZTogXCJmZW5jZWRcIiB8IFwiaW5kZW50XCI7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoaW5pdDogUGFydGlhbDxNYXJrZG93bkNvZGVibG9jaz4pIHtcbiAgICAgICAgc3VwZXIoaW5pdCk7XG4gICAgfVxuXG4gICAgc3RhdGljIGZyb20oXG4gICAgICAgIG9iamVjdDogSnNvbk1hcmtkb3duQ29kZWJsb2NrLFxuICAgICAgICBmaWxlOiBzdHJpbmcsXG4gICAgICAgIG5vcm1hbGl6ZXI6IExpbmtOb3JtYWxpemVyID0gTk9PUF9OT1JNQUxJWkVSXG4gICAgKTogTWFya2Rvd25Db2RlYmxvY2sge1xuICAgICAgICByZXR1cm4gbmV3IE1hcmtkb3duQ29kZWJsb2NrKHtcbiAgICAgICAgICAgICRmaWxlOiBmaWxlLFxuICAgICAgICAgICAgJGlkOiBNYXJrZG93bkNvZGVibG9jay5yZWFkYWJsZUlkKGZpbGUsIG9iamVjdC4kcG9zaXRpb24uc3RhcnQpLFxuICAgICAgICAgICAgJHBvc2l0aW9uOiBvYmplY3QuJHBvc2l0aW9uLFxuICAgICAgICAgICAgJG9yZGluYWw6IG9iamVjdC4kb3JkaW5hbCxcbiAgICAgICAgICAgICR0eXBlbmFtZTogXCJDb2RlYmxvY2tcIixcbiAgICAgICAgICAgICR0eXBlOiBcImNvZGVibG9ja1wiLFxuICAgICAgICAgICAgJGJsb2NrSWQ6IG9iamVjdC4kYmxvY2tJZCxcbiAgICAgICAgICAgICRsYW5ndWFnZXM6IG9iamVjdC4kbGFuZ3VhZ2VzLFxuICAgICAgICAgICAgJGxpbmtzOiBvYmplY3QuJGxpbmtzLm1hcCgobGluaykgPT4gbm9ybWFsaXplcihMaW5rLmZyb21PYmplY3QobGluaykpKSxcbiAgICAgICAgICAgICR0YWdzOiBvYmplY3QuJHRhZ3MsXG4gICAgICAgICAgICAkaW5maWVsZHM6IG1hcE9iamVjdFZhbHVlcyhvYmplY3QuJGluZmllbGRzLCB2YWx1ZUlubGluZUZpZWxkKSxcbiAgICAgICAgICAgICRjb250ZW50UG9zaXRpb246IG9iamVjdC4kY29udGVudFBvc2l0aW9uLFxuICAgICAgICAgICAgJHN0eWxlOiBvYmplY3QuJHN0eWxlLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQWxsIG9mIHRoZSBpbmRleGVkIGZpZWxkcyBpbiB0aGlzIG9iamVjdC4gKi9cbiAgICBnZXQgZmllbGRzKCkge1xuICAgICAgICByZXR1cm4gTWFya2Rvd25Db2RlYmxvY2suU1VCX0ZJRUxEX0RFRih0aGlzKTtcbiAgICB9XG5cbiAgICAvKiogRmV0Y2ggYSBzcGVjaWZpYyBmaWVsZCBieSBrZXkuICovXG4gICAgcHVibGljIGZpZWxkKGtleTogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiBNYXJrZG93bkNvZGVibG9jay5TVUJfRklFTERfREVGKHRoaXMsIGtleSk/LlswXSA/PyBGaWVsZGJlYXJpbmdzLmdldFdpdGhEZWZhdWx0KHRoaXMsIGtleSk7XG4gICAgfVxuXG4gICAgcHVibGljIHZhbHVlKGtleTogc3RyaW5nKTogTGl0ZXJhbCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpZWxkKGtleSk/LnZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBqc29uKCk6IEpzb25NYXJrZG93bkNvZGVibG9jayB7XG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHN1cGVyLmpzb24oKSwge1xuICAgICAgICAgICAgJGxhbmd1YWdlczogdGhpcy4kbGFuZ3VhZ2VzLFxuICAgICAgICAgICAgJGNvbnRlbnRQb3NpdGlvbjogdGhpcy4kY29udGVudFBvc2l0aW9uLFxuICAgICAgICAgICAgJHN0eWxlOiB0aGlzLiRzdHlsZSxcbiAgICAgICAgfSkgYXMgSnNvbk1hcmtkb3duQ29kZWJsb2NrO1xuICAgIH1cblxuICAgIHN0YXRpYyByZWFkYWJsZUlkKGZpbGU6IHN0cmluZywgbGluZTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAke2ZpbGV9L2NvZGVibG9jayR7bGluZX1gO1xuICAgIH1cblxuICAgIHN0YXRpYyBTVUJfRklFTERfREVGOiBGaWVsZEV4dHJhY3RvcjxNYXJrZG93bkNvZGVibG9jaz4gPSBFeHRyYWN0b3JzLm1lcmdlPE1hcmtkb3duQ29kZWJsb2NrPihcbiAgICAgICAgTWFya2Rvd25CbG9jay5GSUVMRF9ERUZcbiAgICApO1xufVxuXG4vKiogQSBkYXRhLWFubm90YXRlZCBZQU1MIGNvZGVibG9jay4gKi9cbmV4cG9ydCBjbGFzcyBNYXJrZG93bkRhdGFibG9jayBleHRlbmRzIE1hcmtkb3duQmxvY2sgaW1wbGVtZW50cyBJbmRleGFibGUsIEZpZWxkYmVhcmluZywgTGlua2JlYXJpbmcge1xuICAgIHN0YXRpYyBUWVBFUyA9IFtcIm1hcmtkb3duXCIsIFwiYmxvY2tcIiwgXCJkYXRhYmxvY2tcIiwgVEFHR0FCTEVfVFlQRSwgTElOS0JFQVJJTkdfVFlQRSwgRklFTERCRUFSSU5HX1RZUEVdO1xuXG4gICAgJHR5cGVzOiBzdHJpbmdbXSA9IE1hcmtkb3duRGF0YWJsb2NrLlRZUEVTO1xuICAgICRkYXRhOiBSZWNvcmQ8c3RyaW5nLCBGcm9udG1hdHRlckVudHJ5PjtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcihpbml0OiBQYXJ0aWFsPE1hcmtkb3duRGF0YWJsb2NrPikge1xuICAgICAgICBzdXBlcihpbml0KTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZnJvbShcbiAgICAgICAgb2JqZWN0OiBKc29uTWFya2Rvd25EYXRhYmxvY2ssXG4gICAgICAgIGZpbGU6IHN0cmluZyxcbiAgICAgICAgbm9ybWFsaXplcjogTGlua05vcm1hbGl6ZXIgPSBOT09QX05PUk1BTElaRVJcbiAgICApOiBNYXJrZG93bkRhdGFibG9jayB7XG4gICAgICAgIC8vIERhdGFibG9ja3MgYXJlIGJhc2VkIG9uIHdoYXQgaXMgZXNzZW50aWFsbHkganVzdCBmcm9udG1hdHRlcjsgd2UgY2FuIGFwcGx5XG4gICAgICAgIC8vIHRoZSBzYW1lIG5vcm1hbGl6YXRpb24gbG9naWMgdG8gdGhlbS5cbiAgICAgICAgY29uc3Qgbm9ybWRhdGEgPSBub3JtYWxpemVMaW5rcyhtYXBPYmplY3RWYWx1ZXMob2JqZWN0LiRkYXRhLCB2YWx1ZUZyb250bWF0dGVyRW50cnkpLCBub3JtYWxpemVyKTtcbiAgICAgICAgY29uc3QgbGlua3MgPSBnYXRoZXJMaW5rcyhub3JtZGF0YSk7XG4gICAgICAgIGNvbnN0IHRhZ3MgPSBnYXRoZXJUYWdzKG5vcm1kYXRhKTtcblxuICAgICAgICByZXR1cm4gbmV3IE1hcmtkb3duRGF0YWJsb2NrKHtcbiAgICAgICAgICAgICRmaWxlOiBmaWxlLFxuICAgICAgICAgICAgJGlkOiBNYXJrZG93bkRhdGFibG9jay5yZWFkYWJsZUlkKGZpbGUsIG9iamVjdC4kcG9zaXRpb24uc3RhcnQpLFxuICAgICAgICAgICAgJHBvc2l0aW9uOiBvYmplY3QuJHBvc2l0aW9uLFxuICAgICAgICAgICAgJGluZmllbGRzOiB7fSxcbiAgICAgICAgICAgICRvcmRpbmFsOiBvYmplY3QuJG9yZGluYWwsXG4gICAgICAgICAgICAkZGF0YTogbm9ybWRhdGEsXG4gICAgICAgICAgICAkbGlua3M6IGxpbmtzLFxuICAgICAgICAgICAgJHR5cGVuYW1lOiBcIkRhdGFibG9ja1wiLFxuICAgICAgICAgICAgJHRhZ3M6IHRhZ3MsXG4gICAgICAgICAgICAkdHlwZTogXCJkYXRhYmxvY2tcIixcbiAgICAgICAgICAgICRibG9ja0lkOiBvYmplY3QuJGJsb2NrSWQsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBBbGwgb2YgdGhlIGluZGV4ZWQgZmllbGRzIGluIHRoaXMgb2JqZWN0LiAqL1xuICAgIGdldCBmaWVsZHMoKSB7XG4gICAgICAgIHJldHVybiBNYXJrZG93bkRhdGFibG9jay5TVUJfRklFTERfREVGKHRoaXMpO1xuICAgIH1cblxuICAgIC8qKiBGZXRjaCBhIHNwZWNpZmljIGZpZWxkIGJ5IGtleS4gKi9cbiAgICBwdWJsaWMgZmllbGQoa2V5OiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIE1hcmtkb3duRGF0YWJsb2NrLlNVQl9GSUVMRF9ERUYodGhpcywga2V5KT8uWzBdID8/IEZpZWxkYmVhcmluZ3MuZ2V0V2l0aERlZmF1bHQodGhpcywga2V5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdmFsdWUoa2V5OiBzdHJpbmcpOiBMaXRlcmFsIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmllbGQoa2V5KT8udmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIGpzb24oKTogSnNvbk1hcmtkb3duRGF0YWJsb2NrIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oc3VwZXIuanNvbigpLCB7XG4gICAgICAgICAgICAkZGF0YTogbWFwT2JqZWN0VmFsdWVzKHRoaXMuJGRhdGEsIGpzb25Gcm9udG1hdHRlckVudHJ5KSxcbiAgICAgICAgfSkgYXMgSnNvbk1hcmtkb3duRGF0YWJsb2NrO1xuICAgIH1cblxuICAgIHN0YXRpYyByZWFkYWJsZUlkKGZpbGU6IHN0cmluZywgbGluZTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAke2ZpbGV9L2RhdGFibG9jayR7bGluZX1gO1xuICAgIH1cblxuICAgIHN0YXRpYyBTVUJfRklFTERfREVGOiBGaWVsZEV4dHJhY3RvcjxNYXJrZG93bkRhdGFibG9jaz4gPSBFeHRyYWN0b3JzLm1lcmdlPE1hcmtkb3duRGF0YWJsb2NrPihcbiAgICAgICAgTWFya2Rvd25CbG9jay5GSUVMRF9ERUYsXG4gICAgICAgIEV4dHJhY3RvcnMuZnJvbnRtYXR0ZXIoKGYpID0+IGYuJGRhdGEpXG4gICAgKTtcbn1cblxuLyoqIEEgc3BlY2lmaWMgbGlzdCBpdGVtIGluIGEgbGlzdC4gKi9cbmV4cG9ydCBjbGFzcyBNYXJrZG93bkxpc3RJdGVtIGltcGxlbWVudHMgSW5kZXhhYmxlLCBMaW5rYmVhcmluZywgVGFnZ2FibGUsIEZpZWxkYmVhcmluZyB7XG4gICAgc3RhdGljIFRZUEVTID0gW1wibWFya2Rvd25cIiwgXCJsaXN0LWl0ZW1cIiwgTElOS0JFQVJJTkdfVFlQRSwgVEFHR0FCTEVfVFlQRSwgRklFTERCRUFSSU5HX1RZUEVdO1xuXG4gICAgJHR5cGVzOiBzdHJpbmdbXSA9IE1hcmtkb3duTGlzdEl0ZW0uVFlQRVM7XG4gICAgJHR5cGVuYW1lOiBzdHJpbmcgPSBcIkxpc3QgSXRlbVwiO1xuICAgICRpZDogc3RyaW5nO1xuICAgICRmaWxlOiBzdHJpbmc7XG5cbiAgICAvKiogVGhlIHBvc2l0aW9uIG9mIHRoZSBsaXN0IGl0ZW0gaW4gdGhlIGZpbGUuICovXG4gICAgJHBvc2l0aW9uOiBMaW5lU3BhbjtcbiAgICAvKiogQ2hpbGQgZWxlbWVudHMgb2YgdGhpcyBsaXN0IGl0ZW0uICovXG4gICAgJGVsZW1lbnRzOiBNYXJrZG93bkxpc3RJdGVtW107XG4gICAgLyoqIFRoZSB0eXBlIG9mIGxpc3QgaXRlbSB0aGF0IHRoaXMgZWxlbWVudCBpcy4gKi9cbiAgICAkdHlwZTogc3RyaW5nO1xuICAgIC8qKiBFeGFjdCB0YWdzIG9uIHRoaXMgbGlzdCBpdGVtLiAqL1xuICAgICR0YWdzOiBzdHJpbmdbXTtcbiAgICAvKiogTWFwIG9mIGFsbCBkaXN0aW5jdCBpbmxpbmUgZmllbGRzIGluIHRoZSBkb2N1bWVudCwgZnJvbSBrZXkgbmFtZSAtPiBtZXRhZGF0YS4gKi9cbiAgICAkaW5maWVsZHM6IFJlY29yZDxzdHJpbmcsIElubGluZUZpZWxkPjtcbiAgICAvKiogQWxsIGxpbmtzIGluIHRoZSBmaWxlLiAqL1xuICAgICRsaW5rczogTGlua1tdO1xuICAgIC8qKiBUaGUgYmxvY2sgSUQgb2YgdGhpcyBsaXN0IGl0ZW0gaWYgcHJlc2VudC4gKi9cbiAgICAkYmxvY2tJZD86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBUaGUgbGluZSBudW1iZXIgb2YgdGhlIHBhcmVudCBvZiB0aGlzIGxpc3QgaXRlbS5cbiAgICAgKiBJZiBhIHBvc2l0aXZlIG51bWJlciwgdGhlbiB0aGlzIGxpc3QgZWxlbWVudCBpcyBhIGNoaWxkXG4gICAgICogb2YgdGhlIGxpc3QgZWxlbWVudCBhdCB0aGF0IGxpbmUuXG4gICAgICpcbiAgICAgKiBJZiBhIG5lZ2F0aXZlIG51bWJlciwgdGhlbiB0aGlzIGxpc3QgZWxlbWVudCBpcyBhIHJvb3QgZWxlbWVudFxuICAgICAqIG9mIGEgbGlzdCBzdGFydGluZyBhdCB0aGF0IGxpbmUgKG5lZ2F0ZWQpLiBJLmUuLCAtNyBtZWFuc1xuICAgICAqIHRoaXMgaXMgYSByb290IGVsZW1lbnQgb2YgdGhlIGxpc3Qgc3RhcnRpbmcgYXQgbGluZSA3LlxuICAgICAqL1xuICAgICRwYXJlbnRMaW5lOiBudW1iZXI7XG4gICAgLyoqIFRoZSBtYXJrZXIgdXNlZCB0byBzdGFydCB0aGUgbGlzdCBpdGVtIChzdWNoIGFzIC0gb3IgKyBvciAqKS4gT24gYSBtYWxmb3JtZWQgdGFzaywgbWF5IGJlIHVuZGVmaW5lZC4gKi9cbiAgICAkc3ltYm9sPzogc3RyaW5nO1xuICAgIC8qKiBUaGUgdGV4dCBjb250ZW50cyBvZiB0aGUgbGlzdCBpdGVtLiAqL1xuICAgICR0ZXh0Pzogc3RyaW5nO1xuXG4gICAgLyoqIENyZWF0ZSBhIGxpc3QgaXRlbSBmcm9tIGEgc2VyaWFsaXplZCBvYmplY3QuICovXG4gICAgc3RhdGljIGZyb20oXG4gICAgICAgIG9iamVjdDogSnNvbk1hcmtkb3duTGlzdEl0ZW0sXG4gICAgICAgIGZpbGU6IHN0cmluZyxcbiAgICAgICAgbm9ybWFsaXplcjogTGlua05vcm1hbGl6ZXIgPSBOT09QX05PUk1BTElaRVJcbiAgICApOiBNYXJrZG93bkxpc3RJdGVtIHtcbiAgICAgICAgaWYgKG9iamVjdC4kdHlwZSA9PT0gXCJ0YXNrXCIpIHJldHVybiBNYXJrZG93blRhc2tJdGVtLmZyb20ob2JqZWN0IGFzIEpzb25NYXJrZG93blRhc2tJdGVtLCBmaWxlLCBub3JtYWxpemVyKTtcblxuICAgICAgICBjb25zdCBlbGVtZW50cyA9IG9iamVjdC4kZWxlbWVudHMubWFwKChlbGVtKSA9PiBNYXJrZG93bkxpc3RJdGVtLmZyb20oZWxlbSwgZmlsZSwgbm9ybWFsaXplcikpO1xuICAgICAgICByZXR1cm4gbmV3IE1hcmtkb3duTGlzdEl0ZW0oe1xuICAgICAgICAgICAgJGZpbGU6IGZpbGUsXG4gICAgICAgICAgICAkaWQ6IE1hcmtkb3duTGlzdEl0ZW0ucmVhZGFibGVJZChmaWxlLCBvYmplY3QuJHBvc2l0aW9uLnN0YXJ0KSxcbiAgICAgICAgICAgICRwb3NpdGlvbjogb2JqZWN0LiRwb3NpdGlvbixcbiAgICAgICAgICAgICRlbGVtZW50czogZWxlbWVudHMsXG4gICAgICAgICAgICAkdHlwZTogb2JqZWN0LiR0eXBlLFxuICAgICAgICAgICAgJHRhZ3M6IG9iamVjdC4kdGFncyxcbiAgICAgICAgICAgICRpbmZpZWxkczogbWFwT2JqZWN0VmFsdWVzKG9iamVjdC4kaW5maWVsZHMsIChpKSA9PiBub3JtYWxpemVMaW5rcyh2YWx1ZUlubGluZUZpZWxkKGkpLCBub3JtYWxpemVyKSksXG4gICAgICAgICAgICAkbGlua3M6IG9iamVjdC4kbGlua3MubWFwKChsKSA9PiBub3JtYWxpemVyKExpbmsuZnJvbU9iamVjdChsKSkpLFxuICAgICAgICAgICAgJGJsb2NrSWQ6IG9iamVjdC4kYmxvY2tJZCxcbiAgICAgICAgICAgICRwYXJlbnRMaW5lOiBvYmplY3QuJHBhcmVudExpbmUsXG4gICAgICAgICAgICAkdGV4dDogb2JqZWN0LiR0ZXh0LFxuICAgICAgICAgICAgJHN5bWJvbDogb2JqZWN0LiRzeW1ib2wsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3Rvcihpbml0OiBQYXJ0aWFsPE1hcmtkb3duTGlzdEl0ZW0+KSB7XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywgaW5pdCk7XG4gICAgfVxuXG4gICAgLyoqIEdldCB0aGUgbGluZSB0aGF0IHRoaXMgbGlzdCBpdGVtIHN0YXJ0cyBvbi4gKi9cbiAgICBnZXQgJGxpbmUoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJHBvc2l0aW9uLnN0YXJ0O1xuICAgIH1cblxuICAgIC8qKiBUaGUgbnVtYmVyIG9mIGxpbmVzIGluIHRoaXMgbGlzdCBpdGVtLiAqL1xuICAgIGdldCAkbGluZUNvdW50KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLiRwb3NpdGlvbi5lbmQgLSB0aGlzLiRwb3NpdGlvbi5zdGFydCArIDE7XG4gICAgfVxuXG4gICAgLyoqIENsZWFuZWQgdGV4dCB0aGF0IGlzIGdhcmF1bnRlZWQgdG8gYmUgbm9uLW51bGwgYW5kIGhhcyBpbmRlbmF0aW9uIGFuZCBpbmxpbmUgZmllbGRzIHJlbW92ZWQuICovXG4gICAgZ2V0ICRjbGVhbnRleHQoKSB7XG4gICAgICAgIGlmICghdGhpcy4kdGV4dCkgcmV0dXJuIFwiXCI7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMuJHRleHRcbiAgICAgICAgICAgICAgICAvLyBFbGltaW5hdGUgW2tleTo6IHZhbHVlXSBhbm5vdGF0aW9ucy5cbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvKC4qPykoW1xcW1xcKF1bXjooXFxbXSs6OlxccyouKj9bXFxdXFwpXVxccyopJC9nbSwgXCIkMVwiKVxuICAgICAgICAgICAgICAgIC8vIFRyaW0gd2hpdGVzcGFjZS5cbiAgICAgICAgICAgICAgICAudHJpbSgpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIEFsbCBvZiB0aGUgaW5kZXhlZCBmaWVsZHMgaW4gdGhpcyBvYmplY3QuICovXG4gICAgZ2V0IGZpZWxkcygpIHtcbiAgICAgICAgcmV0dXJuIE1hcmtkb3duTGlzdEl0ZW0uRklFTERfREVGKHRoaXMpO1xuICAgIH1cblxuICAgIC8qKiBGZXRjaCBhIHNwZWNpZmljIGZpZWxkIGJ5IGtleS4gKi9cbiAgICBwdWJsaWMgZmllbGQoa2V5OiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIE1hcmtkb3duTGlzdEl0ZW0uRklFTERfREVGKHRoaXMsIGtleSk/LlswXSA/PyBGaWVsZGJlYXJpbmdzLmdldFdpdGhEZWZhdWx0KHRoaXMsIGtleSk7XG4gICAgfVxuXG4gICAgcHVibGljIHZhbHVlKGtleTogc3RyaW5nKTogTGl0ZXJhbCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpZWxkKGtleSk/LnZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBqc29uKCk6IEpzb25NYXJrZG93bkxpc3RJdGVtIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICRwb3NpdGlvbjogdGhpcy4kcG9zaXRpb24sXG4gICAgICAgICAgICAkZWxlbWVudHM6IHRoaXMuJGVsZW1lbnRzLm1hcCgoZWxlbSkgPT4gZWxlbS5qc29uKCkpLFxuICAgICAgICAgICAgJHR5cGU6IHRoaXMuJHR5cGUsXG4gICAgICAgICAgICAkdGFnczogdGhpcy4kdGFncyxcbiAgICAgICAgICAgICRpbmZpZWxkczogbWFwT2JqZWN0VmFsdWVzKHRoaXMuJGluZmllbGRzLCBqc29uSW5saW5lRmllbGQpLFxuICAgICAgICAgICAgJGxpbmtzOiB0aGlzLiRsaW5rcyxcbiAgICAgICAgICAgICRibG9ja0lkOiB0aGlzLiRibG9ja0lkLFxuICAgICAgICAgICAgJHBhcmVudExpbmU6IHRoaXMuJHBhcmVudExpbmUsXG4gICAgICAgICAgICAkc3ltYm9sOiB0aGlzLiRzeW1ib2wsXG4gICAgICAgICAgICAkdGV4dDogdGhpcy4kdGV4dCxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBGSUVMRF9ERUY6IEZpZWxkRXh0cmFjdG9yPE1hcmtkb3duTGlzdEl0ZW0+ID0gRXh0cmFjdG9ycy5tZXJnZShcbiAgICAgICAgRXh0cmFjdG9ycy5pbnRyaW5zaWNzKCksXG4gICAgICAgIEV4dHJhY3RvcnMuaW5saW5lRmllbGRzKChmKSA9PiBmLiRpbmZpZWxkcylcbiAgICApO1xuXG4gICAgLyoqIEdlbmVyYXRlIGEgcmVhZGFibGUgSUQgZm9yIHRoaXMgaXRlbSB1c2luZyB0aGUgbGluZSBudW1iZXIuICovXG4gICAgc3RhdGljIHJlYWRhYmxlSWQoZmlsZTogc3RyaW5nLCBsaW5lOiBudW1iZXIpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYCR7ZmlsZX0vbGlzdCR7bGluZX1gO1xuICAgIH1cbn1cblxuLyoqIEEgc3BlY2lmaWMgdGFzayBpbnNpZGUgb2YgYSBtYXJrZG93biBsaXN0LiAqL1xuZXhwb3J0IGNsYXNzIE1hcmtkb3duVGFza0l0ZW0gZXh0ZW5kcyBNYXJrZG93bkxpc3RJdGVtIGltcGxlbWVudHMgSW5kZXhhYmxlLCBMaW5rYmVhcmluZywgVGFnZ2FibGUsIEZpZWxkYmVhcmluZyB7XG4gICAgc3RhdGljIFRZUEVTID0gW1wibWFya2Rvd25cIiwgXCJsaXN0LWl0ZW1cIiwgXCJ0YXNrXCIsIExJTktCRUFSSU5HX1RZUEUsIFRBR0dBQkxFX1RZUEUsIEZJRUxEQkVBUklOR19UWVBFXTtcblxuICAgICR0eXBlczogc3RyaW5nW10gPSBNYXJrZG93blRhc2tJdGVtLlRZUEVTO1xuICAgICR0eXBlbmFtZTogc3RyaW5nID0gXCJUYXNrXCI7XG5cbiAgICAvKiogVGhlIHRleHQgaW5zaWRlIG9mIHRoZSB0YXNrIGl0ZW0uICovXG4gICAgJHN0YXR1czogc3RyaW5nO1xuXG4gICAgcHVibGljIHN0YXRpYyBmcm9tKG9iamVjdDogSnNvbk1hcmtkb3duVGFza0l0ZW0sIGZpbGU6IHN0cmluZywgbm9ybWFsaXplcjogTGlua05vcm1hbGl6ZXIpOiBNYXJrZG93blRhc2tJdGVtIHtcbiAgICAgICAgY29uc3QgZWxlbWVudHMgPSBvYmplY3QuJGVsZW1lbnRzLm1hcCgoZWxlbSkgPT4gTWFya2Rvd25MaXN0SXRlbS5mcm9tKGVsZW0sIGZpbGUsIG5vcm1hbGl6ZXIpKTtcbiAgICAgICAgcmV0dXJuIG5ldyBNYXJrZG93blRhc2tJdGVtKHtcbiAgICAgICAgICAgICRmaWxlOiBmaWxlLFxuICAgICAgICAgICAgJGlkOiBNYXJrZG93bkxpc3RJdGVtLnJlYWRhYmxlSWQoZmlsZSwgb2JqZWN0LiRwb3NpdGlvbi5zdGFydCksXG4gICAgICAgICAgICAkcG9zaXRpb246IG9iamVjdC4kcG9zaXRpb24sXG4gICAgICAgICAgICAkZWxlbWVudHM6IGVsZW1lbnRzLFxuICAgICAgICAgICAgJHR5cGU6IG9iamVjdC4kdHlwZSxcbiAgICAgICAgICAgICR0YWdzOiBvYmplY3QuJHRhZ3MsXG4gICAgICAgICAgICAkaW5maWVsZHM6IG1hcE9iamVjdFZhbHVlcyhvYmplY3QuJGluZmllbGRzLCAoaSkgPT4gbm9ybWFsaXplTGlua3ModmFsdWVJbmxpbmVGaWVsZChpKSwgbm9ybWFsaXplcikpLFxuICAgICAgICAgICAgJGxpbmtzOiBvYmplY3QuJGxpbmtzLm1hcCgobCkgPT4gbm9ybWFsaXplcihMaW5rLmZyb21PYmplY3QobCkpKSxcbiAgICAgICAgICAgICRibG9ja0lkOiBvYmplY3QuJGJsb2NrSWQsXG4gICAgICAgICAgICAkcGFyZW50TGluZTogb2JqZWN0LiRwYXJlbnRMaW5lLFxuICAgICAgICAgICAgJHN0YXR1czogb2JqZWN0LiRzdGF0dXMsXG4gICAgICAgICAgICAkc3ltYm9sOiBvYmplY3QuJHN5bWJvbCxcbiAgICAgICAgICAgICR0ZXh0OiBvYmplY3QuJHRleHQsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcihpbml0OiBQYXJ0aWFsPE1hcmtkb3duVGFza0l0ZW0+KSB7XG4gICAgICAgIHN1cGVyKGluaXQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBqc29uKCk6IEpzb25NYXJrZG93bkxpc3RJdGVtIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oc3VwZXIuanNvbigpLCB7XG4gICAgICAgICAgICAkc3RhdHVzOiB0aGlzLiRzdGF0dXMsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBEZXRlcm1pbmUgaWYgdGhlIGdpdmVuIHRhc2sgaXMgY29tcGxldGVkLiAqL1xuICAgIHB1YmxpYyBnZXQgJGNvbXBsZXRlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJHN0YXR1cyA9PT0gXCJ4XCIgfHwgdGhpcy4kc3RhdHVzID09PSBcIlhcIjtcbiAgICB9XG59XG5cbi8qKiBBbiBlbnRyeSBpbiB0aGUgZnJvbnRtYXR0ZXI7IGluY2x1ZGVzIHRoZSByYXcgdmFsdWUsIHBhcnNlZCB2YWx1ZSwgYW5kIHJhdyBrZXkgKGJlZm9yZSBsb3dlci1jYXNpbmcpLiAqL1xuZXhwb3J0IGludGVyZmFjZSBGcm9udG1hdHRlckVudHJ5IHtcbiAgICAvKiogVGhlIGFjdHVhbCBzdHJpbmcgaW4gZnJvbnRtYXR0ZXIgd2l0aCBleGFjdCBjYXNpbmcuICovXG4gICAga2V5OiBzdHJpbmc7XG4gICAgLyoqIFRoZSBwYXJzZWQgdmFsdWUgb2YgdGhlIGZyb250bWF0dGVyIGVudHJ5IChkYXRlLCBkdXJhdGlvbiwgZXRjLikuICovXG4gICAgdmFsdWU6IExpdGVyYWw7XG4gICAgLyoqIFRoZSByYXcgdmFsdWUgb2YgdGhlIGZyb250bWF0dGVyIGVudHJ5IGJlZm9yZSBwYXJzaW5nOyBnZW5lcmFsbHkgYSBzdHJpbmcgb3IgbnVtYmVyLiAqL1xuICAgIHJhdzogc3RyaW5nO1xufVxuXG4vKiogQ29udmVydCBhIHJlZ3VsYXIgZnJvbnRtYXR0ZXIgZW50cnkgaW50byBhIEpTT04gZnJvbnRtYXR0ZXIgZW50cnkuXG4gKiBAaGlkZGVuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBqc29uRnJvbnRtYXR0ZXJFbnRyeShyYXc6IEZyb250bWF0dGVyRW50cnkpOiBKc29uRnJvbnRtYXR0ZXJFbnRyeSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAga2V5OiByYXcua2V5LFxuICAgICAgICB2YWx1ZTogSnNvbkNvbnZlcnNpb24uanNvbihyYXcudmFsdWUpLFxuICAgICAgICByYXc6IHJhdy5yYXcsXG4gICAgfTtcbn1cblxuLyoqIENvbnZlcnQgYSBqc29uIGZyb250bWF0dGVyIGVudHJ5IHRvIGEgcmVndWxhciBmcm9udG1hdHRlciBlbnRyeS5cbiAqIEBoaWRkZW5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbHVlRnJvbnRtYXR0ZXJFbnRyeShyYXc6IEpzb25Gcm9udG1hdHRlckVudHJ5KTogRnJvbnRtYXR0ZXJFbnRyeSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAga2V5OiByYXcua2V5LFxuICAgICAgICB2YWx1ZTogSnNvbkNvbnZlcnNpb24udmFsdWUocmF3LnZhbHVlKSxcbiAgICAgICAgcmF3OiByYXcucmF3LFxuICAgIH07XG59XG5cbi8qKiBOb3JtYWxpemUgbGlua3MgZGVlcGx5IGluIHRoZSBvYmplY3QuXG4gKiBAaGlkZGVuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVMaW5rczxUIGV4dGVuZHMgTGl0ZXJhbD4oaW5wdXQ6IFQsIG5vcm1hbGl6ZXI6IExpbmtOb3JtYWxpemVyKTogVCB7XG4gICAgcmV0dXJuIExpdGVyYWxzLm1hcExlYXZlcyhpbnB1dCwgKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmIChMaXRlcmFscy5pc0xpbmsodmFsdWUpKSByZXR1cm4gbm9ybWFsaXplcih2YWx1ZSk7XG4gICAgICAgIGVsc2UgcmV0dXJuIHZhbHVlO1xuICAgIH0pIGFzIFQ7XG59XG5cbi8qKiBSZWN1cnNpdmVseSBnYXRoZXIgbGlua3MgZnJvbSBhIGxpdGVyYWwgb2JqZWN0LlxuICogQGhpZGRlblxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2F0aGVyTGlua3MoaW5wdXQ6IExpdGVyYWwpOiBMaW5rW10ge1xuICAgIGNvbnN0IHJlc3VsdDogTGlua1tdID0gW107XG5cbiAgICBMaXRlcmFscy5tYXBMZWF2ZXMoaW5wdXQsICh2YWx1ZSkgPT4ge1xuICAgICAgICBpZiAoTGl0ZXJhbHMuaXNMaW5rKHZhbHVlKSkgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9KTtcblxuICAgIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKiBHYXRoZXIgdGFncyBmcm9tIGEgZGF0YWJsb2NrLlxuICogQGhpZGRlblxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2F0aGVyVGFncyhkYXRhOiBSZWNvcmQ8c3RyaW5nLCBGcm9udG1hdHRlckVudHJ5Pik6IHN0cmluZ1tdIHtcbiAgICBmdW5jdGlvbiByZWN1cnNlKGlucHV0OiBhbnkpOiBzdHJpbmdbXSB7XG4gICAgICAgIGlmIChMaXRlcmFscy5pc1N0cmluZyhpbnB1dCkpIHJldHVybiBbaW5wdXQuc3RhcnRzV2l0aChcIiNcIikgPyBpbnB1dCA6IFwiI1wiICsgaW5wdXRdO1xuICAgICAgICBlbHNlIGlmIChMaXRlcmFscy5pc0FycmF5KGlucHV0KSkgcmV0dXJuIGlucHV0LmZsYXRNYXAocmVjdXJzZSk7XG4gICAgICAgIGVsc2UgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGxldCB0YWdzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGlmIChcInRhZ1wiIGluIGRhdGEpIHRhZ3MgPSB0YWdzLmNvbmNhdChyZWN1cnNlKGRhdGFbXCJ0YWdzXCJdKSk7XG4gICAgaWYgKFwidGFnc1wiIGluIGRhdGEpIHRhZ3MgPSB0YWdzLmNvbmNhdChyZWN1cnNlKGRhdGFbXCJ0YWdzXCJdKSk7XG5cbiAgICByZXR1cm4gdGFncztcbn1cblxuLyoqIEEgbGluayBub3JtYWxpemVyIHdoaWNoIHRha2VzIGluIGEgcmF3IGxpbmsgYW5kIHByb2R1Y2VzIGEgbm9ybWFsaXplZCBsaW5rLiAqL1xuZXhwb3J0IHR5cGUgTGlua05vcm1hbGl6ZXIgPSAobGluazogTGluaykgPT4gTGluaztcbmV4cG9ydCBjb25zdCBOT09QX05PUk1BTElaRVI6IExpbmtOb3JtYWxpemVyID0gKHgpID0+IHg7XG4iLCAiZnVuY3Rpb24gX3R5cGVvZihvKSB7XG4gIFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjtcblxuICByZXR1cm4gX3R5cGVvZiA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBvO1xuICB9IDogZnVuY3Rpb24gKG8pIHtcbiAgICByZXR1cm4gbyAmJiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBvLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgbyAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2YgbztcbiAgfSwgX3R5cGVvZihvKTtcbn1cbmV4cG9ydCB7IF90eXBlb2YgYXMgZGVmYXVsdCB9OyIsICJpbXBvcnQgX3R5cGVvZiBmcm9tIFwiLi90eXBlb2YuanNcIjtcbmZ1bmN0aW9uIHRvUHJpbWl0aXZlKHQsIHIpIHtcbiAgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZih0KSB8fCAhdCkgcmV0dXJuIHQ7XG4gIHZhciBlID0gdFtTeW1ib2wudG9QcmltaXRpdmVdO1xuICBpZiAodm9pZCAwICE9PSBlKSB7XG4gICAgdmFyIGkgPSBlLmNhbGwodCwgciB8fCBcImRlZmF1bHRcIik7XG4gICAgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZihpKSkgcmV0dXJuIGk7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuXCIpO1xuICB9XG4gIHJldHVybiAoXCJzdHJpbmdcIiA9PT0gciA/IFN0cmluZyA6IE51bWJlcikodCk7XG59XG5leHBvcnQgeyB0b1ByaW1pdGl2ZSBhcyBkZWZhdWx0IH07IiwgImltcG9ydCBfdHlwZW9mIGZyb20gXCIuL3R5cGVvZi5qc1wiO1xuaW1wb3J0IHRvUHJpbWl0aXZlIGZyb20gXCIuL3RvUHJpbWl0aXZlLmpzXCI7XG5mdW5jdGlvbiB0b1Byb3BlcnR5S2V5KHQpIHtcbiAgdmFyIGkgPSB0b1ByaW1pdGl2ZSh0LCBcInN0cmluZ1wiKTtcbiAgcmV0dXJuIFwic3ltYm9sXCIgPT0gX3R5cGVvZihpKSA/IGkgOiBpICsgXCJcIjtcbn1cbmV4cG9ydCB7IHRvUHJvcGVydHlLZXkgYXMgZGVmYXVsdCB9OyIsICJpbXBvcnQgdG9Qcm9wZXJ0eUtleSBmcm9tIFwiLi90b1Byb3BlcnR5S2V5LmpzXCI7XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkoZSwgciwgdCkge1xuICByZXR1cm4gKHIgPSB0b1Byb3BlcnR5S2V5KHIpKSBpbiBlID8gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIsIHtcbiAgICB2YWx1ZTogdCxcbiAgICBlbnVtZXJhYmxlOiAhMCxcbiAgICBjb25maWd1cmFibGU6ICEwLFxuICAgIHdyaXRhYmxlOiAhMFxuICB9KSA6IGVbcl0gPSB0LCBlO1xufVxuZXhwb3J0IHsgX2RlZmluZVByb3BlcnR5IGFzIGRlZmF1bHQgfTsiLCAiaW1wb3J0IGRlZmluZVByb3BlcnR5IGZyb20gXCIuL2RlZmluZVByb3BlcnR5LmpzXCI7XG5mdW5jdGlvbiBvd25LZXlzKGUsIHIpIHtcbiAgdmFyIHQgPSBPYmplY3Qua2V5cyhlKTtcbiAgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHtcbiAgICB2YXIgbyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7XG4gICAgciAmJiAobyA9IG8uZmlsdGVyKGZ1bmN0aW9uIChyKSB7XG4gICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCByKS5lbnVtZXJhYmxlO1xuICAgIH0pKSwgdC5wdXNoLmFwcGx5KHQsIG8pO1xuICB9XG4gIHJldHVybiB0O1xufVxuZnVuY3Rpb24gX29iamVjdFNwcmVhZDIoZSkge1xuICBmb3IgKHZhciByID0gMTsgciA8IGFyZ3VtZW50cy5sZW5ndGg7IHIrKykge1xuICAgIHZhciB0ID0gbnVsbCAhPSBhcmd1bWVudHNbcl0gPyBhcmd1bWVudHNbcl0gOiB7fTtcbiAgICByICUgMiA/IG93bktleXMoT2JqZWN0KHQpLCAhMCkuZm9yRWFjaChmdW5jdGlvbiAocikge1xuICAgICAgZGVmaW5lUHJvcGVydHkoZSwgciwgdFtyXSk7XG4gICAgfSkgOiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHQpKSA6IG93bktleXMoT2JqZWN0KHQpKS5mb3JFYWNoKGZ1bmN0aW9uIChyKSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgciwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LCByKSk7XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIGU7XG59XG5leHBvcnQgeyBfb2JqZWN0U3ByZWFkMiBhcyBkZWZhdWx0IH07IiwgImZ1bmN0aW9uIF9hcnJheVdpdGhIb2xlcyhyKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHIpKSByZXR1cm4gcjtcbn1cbmV4cG9ydCB7IF9hcnJheVdpdGhIb2xlcyBhcyBkZWZhdWx0IH07IiwgImZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXlMaW1pdChyLCBsKSB7XG4gIHZhciB0ID0gbnVsbCA9PSByID8gbnVsbCA6IFwidW5kZWZpbmVkXCIgIT0gdHlwZW9mIFN5bWJvbCAmJiByW1N5bWJvbC5pdGVyYXRvcl0gfHwgcltcIkBAaXRlcmF0b3JcIl07XG4gIGlmIChudWxsICE9IHQpIHtcbiAgICB2YXIgZSxcbiAgICAgIG4sXG4gICAgICBpLFxuICAgICAgdSxcbiAgICAgIGEgPSBbXSxcbiAgICAgIGYgPSAhMCxcbiAgICAgIG8gPSAhMTtcbiAgICB0cnkge1xuICAgICAgaWYgKGkgPSAodCA9IHQuY2FsbChyKSkubmV4dCwgMCA9PT0gbCkge1xuICAgICAgICBpZiAoT2JqZWN0KHQpICE9PSB0KSByZXR1cm47XG4gICAgICAgIGYgPSAhMTtcbiAgICAgIH0gZWxzZSBmb3IgKDsgIShmID0gKGUgPSBpLmNhbGwodCkpLmRvbmUpICYmIChhLnB1c2goZS52YWx1ZSksIGEubGVuZ3RoICE9PSBsKTsgZiA9ICEwKTtcbiAgICB9IGNhdGNoIChyKSB7XG4gICAgICBvID0gITAsIG4gPSByO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAoIWYgJiYgbnVsbCAhPSB0W1wicmV0dXJuXCJdICYmICh1ID0gdFtcInJldHVyblwiXSgpLCBPYmplY3QodSkgIT09IHUpKSByZXR1cm47XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBpZiAobykgdGhyb3cgbjtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGE7XG4gIH1cbn1cbmV4cG9ydCB7IF9pdGVyYWJsZVRvQXJyYXlMaW1pdCBhcyBkZWZhdWx0IH07IiwgImZ1bmN0aW9uIF9hcnJheUxpa2VUb0FycmF5KHIsIGEpIHtcbiAgKG51bGwgPT0gYSB8fCBhID4gci5sZW5ndGgpICYmIChhID0gci5sZW5ndGgpO1xuICBmb3IgKHZhciBlID0gMCwgbiA9IEFycmF5KGEpOyBlIDwgYTsgZSsrKSBuW2VdID0gcltlXTtcbiAgcmV0dXJuIG47XG59XG5leHBvcnQgeyBfYXJyYXlMaWtlVG9BcnJheSBhcyBkZWZhdWx0IH07IiwgImltcG9ydCBhcnJheUxpa2VUb0FycmF5IGZyb20gXCIuL2FycmF5TGlrZVRvQXJyYXkuanNcIjtcbmZ1bmN0aW9uIF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShyLCBhKSB7XG4gIGlmIChyKSB7XG4gICAgaWYgKFwic3RyaW5nXCIgPT0gdHlwZW9mIHIpIHJldHVybiBhcnJheUxpa2VUb0FycmF5KHIsIGEpO1xuICAgIHZhciB0ID0ge30udG9TdHJpbmcuY2FsbChyKS5zbGljZSg4LCAtMSk7XG4gICAgcmV0dXJuIFwiT2JqZWN0XCIgPT09IHQgJiYgci5jb25zdHJ1Y3RvciAmJiAodCA9IHIuY29uc3RydWN0b3IubmFtZSksIFwiTWFwXCIgPT09IHQgfHwgXCJTZXRcIiA9PT0gdCA/IEFycmF5LmZyb20ocikgOiBcIkFyZ3VtZW50c1wiID09PSB0IHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KHQpID8gYXJyYXlMaWtlVG9BcnJheShyLCBhKSA6IHZvaWQgMDtcbiAgfVxufVxuZXhwb3J0IHsgX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IGFzIGRlZmF1bHQgfTsiLCAiZnVuY3Rpb24gX25vbkl0ZXJhYmxlUmVzdCgpIHtcbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKTtcbn1cbmV4cG9ydCB7IF9ub25JdGVyYWJsZVJlc3QgYXMgZGVmYXVsdCB9OyIsICJpbXBvcnQgYXJyYXlXaXRoSG9sZXMgZnJvbSBcIi4vYXJyYXlXaXRoSG9sZXMuanNcIjtcbmltcG9ydCBpdGVyYWJsZVRvQXJyYXlMaW1pdCBmcm9tIFwiLi9pdGVyYWJsZVRvQXJyYXlMaW1pdC5qc1wiO1xuaW1wb3J0IHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IGZyb20gXCIuL3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5LmpzXCI7XG5pbXBvcnQgbm9uSXRlcmFibGVSZXN0IGZyb20gXCIuL25vbkl0ZXJhYmxlUmVzdC5qc1wiO1xuZnVuY3Rpb24gX3NsaWNlZFRvQXJyYXkociwgZSkge1xuICByZXR1cm4gYXJyYXlXaXRoSG9sZXMocikgfHwgaXRlcmFibGVUb0FycmF5TGltaXQociwgZSkgfHwgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkociwgZSkgfHwgbm9uSXRlcmFibGVSZXN0KCk7XG59XG5leHBvcnQgeyBfc2xpY2VkVG9BcnJheSBhcyBkZWZhdWx0IH07IiwgImZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHIsIGUpIHtcbiAgaWYgKG51bGwgPT0gcikgcmV0dXJuIHt9O1xuICB2YXIgdCA9IHt9O1xuICBmb3IgKHZhciBuIGluIHIpIGlmICh7fS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHIsIG4pKSB7XG4gICAgaWYgKGUuaW5jbHVkZXMobikpIGNvbnRpbnVlO1xuICAgIHRbbl0gPSByW25dO1xuICB9XG4gIHJldHVybiB0O1xufVxuZXhwb3J0IHsgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgYXMgZGVmYXVsdCB9OyIsICJpbXBvcnQgb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSBmcm9tIFwiLi9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlLmpzXCI7XG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoZSwgdCkge1xuICBpZiAobnVsbCA9PSBlKSByZXR1cm4ge307XG4gIHZhciBvLFxuICAgIHIsXG4gICAgaSA9IG9iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UoZSwgdCk7XG4gIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7XG4gICAgdmFyIHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO1xuICAgIGZvciAociA9IDA7IHIgPCBzLmxlbmd0aDsgcisrKSBvID0gc1tyXSwgdC5pbmNsdWRlcyhvKSB8fCB7fS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUsIG8pICYmIChpW29dID0gZVtvXSk7XG4gIH1cbiAgcmV0dXJuIGk7XG59XG5leHBvcnQgeyBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMgYXMgZGVmYXVsdCB9OyIsICJpbXBvcnQgX29iamVjdFNwcmVhZCBmcm9tICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RTcHJlYWQyJztcbmltcG9ydCBfc2xpY2VkVG9BcnJheSBmcm9tICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9zbGljZWRUb0FycmF5JztcbmltcG9ydCBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMgZnJvbSAnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXMnO1xuaW1wb3J0IHsgdXNlU3RhdGUsIHVzZUNhbGxiYWNrIH0gZnJvbSAncmVhY3QnO1xuXG52YXIgX2V4Y2x1ZGVkID0gW1wiZGVmYXVsdElucHV0VmFsdWVcIiwgXCJkZWZhdWx0TWVudUlzT3BlblwiLCBcImRlZmF1bHRWYWx1ZVwiLCBcImlucHV0VmFsdWVcIiwgXCJtZW51SXNPcGVuXCIsIFwib25DaGFuZ2VcIiwgXCJvbklucHV0Q2hhbmdlXCIsIFwib25NZW51Q2xvc2VcIiwgXCJvbk1lbnVPcGVuXCIsIFwidmFsdWVcIl07XG5mdW5jdGlvbiB1c2VTdGF0ZU1hbmFnZXIoX3JlZikge1xuICB2YXIgX3JlZiRkZWZhdWx0SW5wdXRWYWx1ID0gX3JlZi5kZWZhdWx0SW5wdXRWYWx1ZSxcbiAgICBkZWZhdWx0SW5wdXRWYWx1ZSA9IF9yZWYkZGVmYXVsdElucHV0VmFsdSA9PT0gdm9pZCAwID8gJycgOiBfcmVmJGRlZmF1bHRJbnB1dFZhbHUsXG4gICAgX3JlZiRkZWZhdWx0TWVudUlzT3BlID0gX3JlZi5kZWZhdWx0TWVudUlzT3BlbixcbiAgICBkZWZhdWx0TWVudUlzT3BlbiA9IF9yZWYkZGVmYXVsdE1lbnVJc09wZSA9PT0gdm9pZCAwID8gZmFsc2UgOiBfcmVmJGRlZmF1bHRNZW51SXNPcGUsXG4gICAgX3JlZiRkZWZhdWx0VmFsdWUgPSBfcmVmLmRlZmF1bHRWYWx1ZSxcbiAgICBkZWZhdWx0VmFsdWUgPSBfcmVmJGRlZmF1bHRWYWx1ZSA9PT0gdm9pZCAwID8gbnVsbCA6IF9yZWYkZGVmYXVsdFZhbHVlLFxuICAgIHByb3BzSW5wdXRWYWx1ZSA9IF9yZWYuaW5wdXRWYWx1ZSxcbiAgICBwcm9wc01lbnVJc09wZW4gPSBfcmVmLm1lbnVJc09wZW4sXG4gICAgcHJvcHNPbkNoYW5nZSA9IF9yZWYub25DaGFuZ2UsXG4gICAgcHJvcHNPbklucHV0Q2hhbmdlID0gX3JlZi5vbklucHV0Q2hhbmdlLFxuICAgIHByb3BzT25NZW51Q2xvc2UgPSBfcmVmLm9uTWVudUNsb3NlLFxuICAgIHByb3BzT25NZW51T3BlbiA9IF9yZWYub25NZW51T3BlbixcbiAgICBwcm9wc1ZhbHVlID0gX3JlZi52YWx1ZSxcbiAgICByZXN0U2VsZWN0UHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3JlZiwgX2V4Y2x1ZGVkKTtcbiAgdmFyIF91c2VTdGF0ZSA9IHVzZVN0YXRlKHByb3BzSW5wdXRWYWx1ZSAhPT0gdW5kZWZpbmVkID8gcHJvcHNJbnB1dFZhbHVlIDogZGVmYXVsdElucHV0VmFsdWUpLFxuICAgIF91c2VTdGF0ZTIgPSBfc2xpY2VkVG9BcnJheShfdXNlU3RhdGUsIDIpLFxuICAgIHN0YXRlSW5wdXRWYWx1ZSA9IF91c2VTdGF0ZTJbMF0sXG4gICAgc2V0U3RhdGVJbnB1dFZhbHVlID0gX3VzZVN0YXRlMlsxXTtcbiAgdmFyIF91c2VTdGF0ZTMgPSB1c2VTdGF0ZShwcm9wc01lbnVJc09wZW4gIT09IHVuZGVmaW5lZCA/IHByb3BzTWVudUlzT3BlbiA6IGRlZmF1bHRNZW51SXNPcGVuKSxcbiAgICBfdXNlU3RhdGU0ID0gX3NsaWNlZFRvQXJyYXkoX3VzZVN0YXRlMywgMiksXG4gICAgc3RhdGVNZW51SXNPcGVuID0gX3VzZVN0YXRlNFswXSxcbiAgICBzZXRTdGF0ZU1lbnVJc09wZW4gPSBfdXNlU3RhdGU0WzFdO1xuICB2YXIgX3VzZVN0YXRlNSA9IHVzZVN0YXRlKHByb3BzVmFsdWUgIT09IHVuZGVmaW5lZCA/IHByb3BzVmFsdWUgOiBkZWZhdWx0VmFsdWUpLFxuICAgIF91c2VTdGF0ZTYgPSBfc2xpY2VkVG9BcnJheShfdXNlU3RhdGU1LCAyKSxcbiAgICBzdGF0ZVZhbHVlID0gX3VzZVN0YXRlNlswXSxcbiAgICBzZXRTdGF0ZVZhbHVlID0gX3VzZVN0YXRlNlsxXTtcbiAgdmFyIG9uQ2hhbmdlID0gdXNlQ2FsbGJhY2soZnVuY3Rpb24gKHZhbHVlLCBhY3Rpb25NZXRhKSB7XG4gICAgaWYgKHR5cGVvZiBwcm9wc09uQ2hhbmdlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBwcm9wc09uQ2hhbmdlKHZhbHVlLCBhY3Rpb25NZXRhKTtcbiAgICB9XG4gICAgc2V0U3RhdGVWYWx1ZSh2YWx1ZSk7XG4gIH0sIFtwcm9wc09uQ2hhbmdlXSk7XG4gIHZhciBvbklucHV0Q2hhbmdlID0gdXNlQ2FsbGJhY2soZnVuY3Rpb24gKHZhbHVlLCBhY3Rpb25NZXRhKSB7XG4gICAgdmFyIG5ld1ZhbHVlO1xuICAgIGlmICh0eXBlb2YgcHJvcHNPbklucHV0Q2hhbmdlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBuZXdWYWx1ZSA9IHByb3BzT25JbnB1dENoYW5nZSh2YWx1ZSwgYWN0aW9uTWV0YSk7XG4gICAgfVxuICAgIHNldFN0YXRlSW5wdXRWYWx1ZShuZXdWYWx1ZSAhPT0gdW5kZWZpbmVkID8gbmV3VmFsdWUgOiB2YWx1ZSk7XG4gIH0sIFtwcm9wc09uSW5wdXRDaGFuZ2VdKTtcbiAgdmFyIG9uTWVudU9wZW4gPSB1c2VDYWxsYmFjayhmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHR5cGVvZiBwcm9wc09uTWVudU9wZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHByb3BzT25NZW51T3BlbigpO1xuICAgIH1cbiAgICBzZXRTdGF0ZU1lbnVJc09wZW4odHJ1ZSk7XG4gIH0sIFtwcm9wc09uTWVudU9wZW5dKTtcbiAgdmFyIG9uTWVudUNsb3NlID0gdXNlQ2FsbGJhY2soZnVuY3Rpb24gKCkge1xuICAgIGlmICh0eXBlb2YgcHJvcHNPbk1lbnVDbG9zZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcHJvcHNPbk1lbnVDbG9zZSgpO1xuICAgIH1cbiAgICBzZXRTdGF0ZU1lbnVJc09wZW4oZmFsc2UpO1xuICB9LCBbcHJvcHNPbk1lbnVDbG9zZV0pO1xuICB2YXIgaW5wdXRWYWx1ZSA9IHByb3BzSW5wdXRWYWx1ZSAhPT0gdW5kZWZpbmVkID8gcHJvcHNJbnB1dFZhbHVlIDogc3RhdGVJbnB1dFZhbHVlO1xuICB2YXIgbWVudUlzT3BlbiA9IHByb3BzTWVudUlzT3BlbiAhPT0gdW5kZWZpbmVkID8gcHJvcHNNZW51SXNPcGVuIDogc3RhdGVNZW51SXNPcGVuO1xuICB2YXIgdmFsdWUgPSBwcm9wc1ZhbHVlICE9PSB1bmRlZmluZWQgPyBwcm9wc1ZhbHVlIDogc3RhdGVWYWx1ZTtcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgcmVzdFNlbGVjdFByb3BzKSwge30sIHtcbiAgICBpbnB1dFZhbHVlOiBpbnB1dFZhbHVlLFxuICAgIG1lbnVJc09wZW46IG1lbnVJc09wZW4sXG4gICAgb25DaGFuZ2U6IG9uQ2hhbmdlLFxuICAgIG9uSW5wdXRDaGFuZ2U6IG9uSW5wdXRDaGFuZ2UsXG4gICAgb25NZW51Q2xvc2U6IG9uTWVudUNsb3NlLFxuICAgIG9uTWVudU9wZW46IG9uTWVudU9wZW4sXG4gICAgdmFsdWU6IHZhbHVlXG4gIH0pO1xufVxuXG5leHBvcnQgeyB1c2VTdGF0ZU1hbmFnZXIgYXMgdSB9O1xuIiwgImZ1bmN0aW9uIF9leHRlbmRzKCkge1xuICByZXR1cm4gX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduID8gT2JqZWN0LmFzc2lnbi5iaW5kKCkgOiBmdW5jdGlvbiAobikge1xuICAgIGZvciAodmFyIGUgPSAxOyBlIDwgYXJndW1lbnRzLmxlbmd0aDsgZSsrKSB7XG4gICAgICB2YXIgdCA9IGFyZ3VtZW50c1tlXTtcbiAgICAgIGZvciAodmFyIHIgaW4gdCkgKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsIHIpICYmIChuW3JdID0gdFtyXSk7XG4gICAgfVxuICAgIHJldHVybiBuO1xuICB9LCBfZXh0ZW5kcy5hcHBseShudWxsLCBhcmd1bWVudHMpO1xufVxuZXhwb3J0IHsgX2V4dGVuZHMgYXMgZGVmYXVsdCB9OyIsICJmdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soYSwgbikge1xuICBpZiAoIShhIGluc3RhbmNlb2YgbikpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7XG59XG5leHBvcnQgeyBfY2xhc3NDYWxsQ2hlY2sgYXMgZGVmYXVsdCB9OyIsICJpbXBvcnQgdG9Qcm9wZXJ0eUtleSBmcm9tIFwiLi90b1Byb3BlcnR5S2V5LmpzXCI7XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyhlLCByKSB7XG4gIGZvciAodmFyIHQgPSAwOyB0IDwgci5sZW5ndGg7IHQrKykge1xuICAgIHZhciBvID0gclt0XTtcbiAgICBvLmVudW1lcmFibGUgPSBvLmVudW1lcmFibGUgfHwgITEsIG8uY29uZmlndXJhYmxlID0gITAsIFwidmFsdWVcIiBpbiBvICYmIChvLndyaXRhYmxlID0gITApLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgdG9Qcm9wZXJ0eUtleShvLmtleSksIG8pO1xuICB9XG59XG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoZSwgciwgdCkge1xuICByZXR1cm4gciAmJiBfZGVmaW5lUHJvcGVydGllcyhlLnByb3RvdHlwZSwgciksIHQgJiYgX2RlZmluZVByb3BlcnRpZXMoZSwgdCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCBcInByb3RvdHlwZVwiLCB7XG4gICAgd3JpdGFibGU6ICExXG4gIH0pLCBlO1xufVxuZXhwb3J0IHsgX2NyZWF0ZUNsYXNzIGFzIGRlZmF1bHQgfTsiLCAiZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKHQsIGUpIHtcbiAgcmV0dXJuIF9zZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCkgOiBmdW5jdGlvbiAodCwgZSkge1xuICAgIHJldHVybiB0Ll9fcHJvdG9fXyA9IGUsIHQ7XG4gIH0sIF9zZXRQcm90b3R5cGVPZih0LCBlKTtcbn1cbmV4cG9ydCB7IF9zZXRQcm90b3R5cGVPZiBhcyBkZWZhdWx0IH07IiwgImltcG9ydCBzZXRQcm90b3R5cGVPZiBmcm9tIFwiLi9zZXRQcm90b3R5cGVPZi5qc1wiO1xuZnVuY3Rpb24gX2luaGVyaXRzKHQsIGUpIHtcbiAgaWYgKFwiZnVuY3Rpb25cIiAhPSB0eXBlb2YgZSAmJiBudWxsICE9PSBlKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7XG4gIHQucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShlICYmIGUucHJvdG90eXBlLCB7XG4gICAgY29uc3RydWN0b3I6IHtcbiAgICAgIHZhbHVlOiB0LFxuICAgICAgd3JpdGFibGU6ICEwLFxuICAgICAgY29uZmlndXJhYmxlOiAhMFxuICAgIH1cbiAgfSksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCBcInByb3RvdHlwZVwiLCB7XG4gICAgd3JpdGFibGU6ICExXG4gIH0pLCBlICYmIHNldFByb3RvdHlwZU9mKHQsIGUpO1xufVxuZXhwb3J0IHsgX2luaGVyaXRzIGFzIGRlZmF1bHQgfTsiLCAiZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKHQpIHtcbiAgcmV0dXJuIF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCkgOiBmdW5jdGlvbiAodCkge1xuICAgIHJldHVybiB0Ll9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodCk7XG4gIH0sIF9nZXRQcm90b3R5cGVPZih0KTtcbn1cbmV4cG9ydCB7IF9nZXRQcm90b3R5cGVPZiBhcyBkZWZhdWx0IH07IiwgImZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7XG4gIHRyeSB7XG4gICAgdmFyIHQgPSAhQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sIFtdLCBmdW5jdGlvbiAoKSB7fSkpO1xuICB9IGNhdGNoICh0KSB7fVxuICByZXR1cm4gKF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSBmdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkge1xuICAgIHJldHVybiAhIXQ7XG4gIH0pKCk7XG59XG5leHBvcnQgeyBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IGFzIGRlZmF1bHQgfTsiLCAiZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChlKSB7XG4gIGlmICh2b2lkIDAgPT09IGUpIHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTtcbiAgcmV0dXJuIGU7XG59XG5leHBvcnQgeyBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGFzIGRlZmF1bHQgfTsiLCAiaW1wb3J0IF90eXBlb2YgZnJvbSBcIi4vdHlwZW9mLmpzXCI7XG5pbXBvcnQgYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCIuL2Fzc2VydFRoaXNJbml0aWFsaXplZC5qc1wiO1xuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odCwgZSkge1xuICBpZiAoZSAmJiAoXCJvYmplY3RcIiA9PSBfdHlwZW9mKGUpIHx8IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgZSkpIHJldHVybiBlO1xuICBpZiAodm9pZCAwICE9PSBlKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWRcIik7XG4gIHJldHVybiBhc3NlcnRUaGlzSW5pdGlhbGl6ZWQodCk7XG59XG5leHBvcnQgeyBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybiBhcyBkZWZhdWx0IH07IiwgImltcG9ydCBnZXRQcm90b3R5cGVPZiBmcm9tIFwiLi9nZXRQcm90b3R5cGVPZi5qc1wiO1xuaW1wb3J0IGlzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCBmcm9tIFwiLi9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QuanNcIjtcbmltcG9ydCBwb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIGZyb20gXCIuL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4uanNcIjtcbmZ1bmN0aW9uIF9jcmVhdGVTdXBlcih0KSB7XG4gIHZhciByID0gaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCk7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGUsXG4gICAgICBvID0gZ2V0UHJvdG90eXBlT2YodCk7XG4gICAgaWYgKHIpIHtcbiAgICAgIHZhciBzID0gZ2V0UHJvdG90eXBlT2YodGhpcykuY29uc3RydWN0b3I7XG4gICAgICBlID0gUmVmbGVjdC5jb25zdHJ1Y3QobywgYXJndW1lbnRzLCBzKTtcbiAgICB9IGVsc2UgZSA9IG8uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICByZXR1cm4gcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCBlKTtcbiAgfTtcbn1cbmV4cG9ydCB7IF9jcmVhdGVTdXBlciBhcyBkZWZhdWx0IH07IiwgImltcG9ydCBhcnJheUxpa2VUb0FycmF5IGZyb20gXCIuL2FycmF5TGlrZVRvQXJyYXkuanNcIjtcbmZ1bmN0aW9uIF9hcnJheVdpdGhvdXRIb2xlcyhyKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHIpKSByZXR1cm4gYXJyYXlMaWtlVG9BcnJheShyKTtcbn1cbmV4cG9ydCB7IF9hcnJheVdpdGhvdXRIb2xlcyBhcyBkZWZhdWx0IH07IiwgImZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXkocikge1xuICBpZiAoXCJ1bmRlZmluZWRcIiAhPSB0eXBlb2YgU3ltYm9sICYmIG51bGwgIT0gcltTeW1ib2wuaXRlcmF0b3JdIHx8IG51bGwgIT0gcltcIkBAaXRlcmF0b3JcIl0pIHJldHVybiBBcnJheS5mcm9tKHIpO1xufVxuZXhwb3J0IHsgX2l0ZXJhYmxlVG9BcnJheSBhcyBkZWZhdWx0IH07IiwgImZ1bmN0aW9uIF9ub25JdGVyYWJsZVNwcmVhZCgpIHtcbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7XG59XG5leHBvcnQgeyBfbm9uSXRlcmFibGVTcHJlYWQgYXMgZGVmYXVsdCB9OyIsICJpbXBvcnQgYXJyYXlXaXRob3V0SG9sZXMgZnJvbSBcIi4vYXJyYXlXaXRob3V0SG9sZXMuanNcIjtcbmltcG9ydCBpdGVyYWJsZVRvQXJyYXkgZnJvbSBcIi4vaXRlcmFibGVUb0FycmF5LmpzXCI7XG5pbXBvcnQgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkgZnJvbSBcIi4vdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkuanNcIjtcbmltcG9ydCBub25JdGVyYWJsZVNwcmVhZCBmcm9tIFwiLi9ub25JdGVyYWJsZVNwcmVhZC5qc1wiO1xuZnVuY3Rpb24gX3RvQ29uc3VtYWJsZUFycmF5KHIpIHtcbiAgcmV0dXJuIGFycmF5V2l0aG91dEhvbGVzKHIpIHx8IGl0ZXJhYmxlVG9BcnJheShyKSB8fCB1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShyKSB8fCBub25JdGVyYWJsZVNwcmVhZCgpO1xufVxuZXhwb3J0IHsgX3RvQ29uc3VtYWJsZUFycmF5IGFzIGRlZmF1bHQgfTsiLCAidmFyIGlzRGV2ZWxvcG1lbnQgPSBmYWxzZTtcblxuLypcblxuQmFzZWQgb2ZmIGdsYW1vcidzIFN0eWxlU2hlZXQsIHRoYW5rcyBTdW5pbCBcdTI3NjRcdUZFMEZcblxuaGlnaCBwZXJmb3JtYW5jZSBTdHlsZVNoZWV0IGZvciBjc3MtaW4tanMgc3lzdGVtc1xuXG4tIHVzZXMgbXVsdGlwbGUgc3R5bGUgdGFncyBiZWhpbmQgdGhlIHNjZW5lcyBmb3IgbWlsbGlvbnMgb2YgcnVsZXNcbi0gdXNlcyBgaW5zZXJ0UnVsZWAgZm9yIGFwcGVuZGluZyBpbiBwcm9kdWN0aW9uIGZvciAqbXVjaCogZmFzdGVyIHBlcmZvcm1hbmNlXG5cbi8vIHVzYWdlXG5cbmltcG9ydCB7IFN0eWxlU2hlZXQgfSBmcm9tICdAZW1vdGlvbi9zaGVldCdcblxubGV0IHN0eWxlU2hlZXQgPSBuZXcgU3R5bGVTaGVldCh7IGtleTogJycsIGNvbnRhaW5lcjogZG9jdW1lbnQuaGVhZCB9KVxuXG5zdHlsZVNoZWV0Lmluc2VydCgnI2JveCB7IGJvcmRlcjogMXB4IHNvbGlkIHJlZDsgfScpXG4tIGFwcGVuZHMgYSBjc3MgcnVsZSBpbnRvIHRoZSBzdHlsZXNoZWV0XG5cbnN0eWxlU2hlZXQuZmx1c2goKVxuLSBlbXB0aWVzIHRoZSBzdHlsZXNoZWV0IG9mIGFsbCBpdHMgY29udGVudHNcblxuKi9cblxuZnVuY3Rpb24gc2hlZXRGb3JUYWcodGFnKSB7XG4gIGlmICh0YWcuc2hlZXQpIHtcbiAgICByZXR1cm4gdGFnLnNoZWV0O1xuICB9IC8vIHRoaXMgd2VpcmRuZXNzIGJyb3VnaHQgdG8geW91IGJ5IGZpcmVmb3hcblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBkb2N1bWVudC5zdHlsZVNoZWV0cy5sZW5ndGg7IGkrKykge1xuICAgIGlmIChkb2N1bWVudC5zdHlsZVNoZWV0c1tpXS5vd25lck5vZGUgPT09IHRhZykge1xuICAgICAgcmV0dXJuIGRvY3VtZW50LnN0eWxlU2hlZXRzW2ldO1xuICAgIH1cbiAgfSAvLyB0aGlzIGZ1bmN0aW9uIHNob3VsZCBhbHdheXMgcmV0dXJuIHdpdGggYSB2YWx1ZVxuICAvLyBUUyBjYW4ndCB1bmRlcnN0YW5kIGl0IHRob3VnaCBzbyB3ZSBtYWtlIGl0IHN0b3AgY29tcGxhaW5pbmcgaGVyZVxuXG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gY3JlYXRlU3R5bGVFbGVtZW50KG9wdGlvbnMpIHtcbiAgdmFyIHRhZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gIHRhZy5zZXRBdHRyaWJ1dGUoJ2RhdGEtZW1vdGlvbicsIG9wdGlvbnMua2V5KTtcblxuICBpZiAob3B0aW9ucy5ub25jZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgdGFnLnNldEF0dHJpYnV0ZSgnbm9uY2UnLCBvcHRpb25zLm5vbmNlKTtcbiAgfVxuXG4gIHRhZy5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnJykpO1xuICB0YWcuc2V0QXR0cmlidXRlKCdkYXRhLXMnLCAnJyk7XG4gIHJldHVybiB0YWc7XG59XG5cbnZhciBTdHlsZVNoZWV0ID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgLy8gVXNpbmcgTm9kZSBpbnN0ZWFkIG9mIEhUTUxFbGVtZW50IHNpbmNlIGNvbnRhaW5lciBtYXkgYmUgYSBTaGFkb3dSb290XG4gIGZ1bmN0aW9uIFN0eWxlU2hlZXQob3B0aW9ucykge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB0aGlzLl9pbnNlcnRUYWcgPSBmdW5jdGlvbiAodGFnKSB7XG4gICAgICB2YXIgYmVmb3JlO1xuXG4gICAgICBpZiAoX3RoaXMudGFncy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgaWYgKF90aGlzLmluc2VydGlvblBvaW50KSB7XG4gICAgICAgICAgYmVmb3JlID0gX3RoaXMuaW5zZXJ0aW9uUG9pbnQubmV4dFNpYmxpbmc7XG4gICAgICAgIH0gZWxzZSBpZiAoX3RoaXMucHJlcGVuZCkge1xuICAgICAgICAgIGJlZm9yZSA9IF90aGlzLmNvbnRhaW5lci5maXJzdENoaWxkO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJlZm9yZSA9IF90aGlzLmJlZm9yZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYmVmb3JlID0gX3RoaXMudGFnc1tfdGhpcy50YWdzLmxlbmd0aCAtIDFdLm5leHRTaWJsaW5nO1xuICAgICAgfVxuXG4gICAgICBfdGhpcy5jb250YWluZXIuaW5zZXJ0QmVmb3JlKHRhZywgYmVmb3JlKTtcblxuICAgICAgX3RoaXMudGFncy5wdXNoKHRhZyk7XG4gICAgfTtcblxuICAgIHRoaXMuaXNTcGVlZHkgPSBvcHRpb25zLnNwZWVkeSA9PT0gdW5kZWZpbmVkID8gIWlzRGV2ZWxvcG1lbnQgOiBvcHRpb25zLnNwZWVkeTtcbiAgICB0aGlzLnRhZ3MgPSBbXTtcbiAgICB0aGlzLmN0ciA9IDA7XG4gICAgdGhpcy5ub25jZSA9IG9wdGlvbnMubm9uY2U7IC8vIGtleSBpcyB0aGUgdmFsdWUgb2YgdGhlIGRhdGEtZW1vdGlvbiBhdHRyaWJ1dGUsIGl0J3MgdXNlZCB0byBpZGVudGlmeSBkaWZmZXJlbnQgc2hlZXRzXG5cbiAgICB0aGlzLmtleSA9IG9wdGlvbnMua2V5O1xuICAgIHRoaXMuY29udGFpbmVyID0gb3B0aW9ucy5jb250YWluZXI7XG4gICAgdGhpcy5wcmVwZW5kID0gb3B0aW9ucy5wcmVwZW5kO1xuICAgIHRoaXMuaW5zZXJ0aW9uUG9pbnQgPSBvcHRpb25zLmluc2VydGlvblBvaW50O1xuICAgIHRoaXMuYmVmb3JlID0gbnVsbDtcbiAgfVxuXG4gIHZhciBfcHJvdG8gPSBTdHlsZVNoZWV0LnByb3RvdHlwZTtcblxuICBfcHJvdG8uaHlkcmF0ZSA9IGZ1bmN0aW9uIGh5ZHJhdGUobm9kZXMpIHtcbiAgICBub2Rlcy5mb3JFYWNoKHRoaXMuX2luc2VydFRhZyk7XG4gIH07XG5cbiAgX3Byb3RvLmluc2VydCA9IGZ1bmN0aW9uIGluc2VydChydWxlKSB7XG4gICAgLy8gdGhlIG1heCBsZW5ndGggaXMgaG93IG1hbnkgcnVsZXMgd2UgaGF2ZSBwZXIgc3R5bGUgdGFnLCBpdCdzIDY1MDAwIGluIHNwZWVkeSBtb2RlXG4gICAgLy8gaXQncyAxIGluIGRldiBiZWNhdXNlIHdlIGluc2VydCBzb3VyY2UgbWFwcyB0aGF0IG1hcCBhIHNpbmdsZSBydWxlIHRvIGEgbG9jYXRpb25cbiAgICAvLyBhbmQgeW91IGNhbiBvbmx5IGhhdmUgb25lIHNvdXJjZSBtYXAgcGVyIHN0eWxlIHRhZ1xuICAgIGlmICh0aGlzLmN0ciAlICh0aGlzLmlzU3BlZWR5ID8gNjUwMDAgOiAxKSA9PT0gMCkge1xuICAgICAgdGhpcy5faW5zZXJ0VGFnKGNyZWF0ZVN0eWxlRWxlbWVudCh0aGlzKSk7XG4gICAgfVxuXG4gICAgdmFyIHRhZyA9IHRoaXMudGFnc1t0aGlzLnRhZ3MubGVuZ3RoIC0gMV07XG5cbiAgICBpZiAodGhpcy5pc1NwZWVkeSkge1xuICAgICAgdmFyIHNoZWV0ID0gc2hlZXRGb3JUYWcodGFnKTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gdGhpcyBpcyB0aGUgdWx0cmFmYXN0IHZlcnNpb24sIHdvcmtzIGFjcm9zcyBicm93c2Vyc1xuICAgICAgICAvLyB0aGUgYmlnIGRyYXdiYWNrIGlzIHRoYXQgdGhlIGNzcyB3b24ndCBiZSBlZGl0YWJsZSBpbiBkZXZ0b29sc1xuICAgICAgICBzaGVldC5pbnNlcnRSdWxlKHJ1bGUsIHNoZWV0LmNzc1J1bGVzLmxlbmd0aCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRhZy5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShydWxlKSk7XG4gICAgfVxuXG4gICAgdGhpcy5jdHIrKztcbiAgfTtcblxuICBfcHJvdG8uZmx1c2ggPSBmdW5jdGlvbiBmbHVzaCgpIHtcbiAgICB0aGlzLnRhZ3MuZm9yRWFjaChmdW5jdGlvbiAodGFnKSB7XG4gICAgICB2YXIgX3RhZyRwYXJlbnROb2RlO1xuXG4gICAgICByZXR1cm4gKF90YWckcGFyZW50Tm9kZSA9IHRhZy5wYXJlbnROb2RlKSA9PSBudWxsID8gdm9pZCAwIDogX3RhZyRwYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRhZyk7XG4gICAgfSk7XG4gICAgdGhpcy50YWdzID0gW107XG4gICAgdGhpcy5jdHIgPSAwO1xuICB9O1xuXG4gIHJldHVybiBTdHlsZVNoZWV0O1xufSgpO1xuXG5leHBvcnQgeyBTdHlsZVNoZWV0IH07XG4iLCAiZXhwb3J0IHZhciBNUyA9ICctbXMtJ1xuZXhwb3J0IHZhciBNT1ogPSAnLW1vei0nXG5leHBvcnQgdmFyIFdFQktJVCA9ICctd2Via2l0LSdcblxuZXhwb3J0IHZhciBDT01NRU5UID0gJ2NvbW0nXG5leHBvcnQgdmFyIFJVTEVTRVQgPSAncnVsZSdcbmV4cG9ydCB2YXIgREVDTEFSQVRJT04gPSAnZGVjbCdcblxuZXhwb3J0IHZhciBQQUdFID0gJ0BwYWdlJ1xuZXhwb3J0IHZhciBNRURJQSA9ICdAbWVkaWEnXG5leHBvcnQgdmFyIElNUE9SVCA9ICdAaW1wb3J0J1xuZXhwb3J0IHZhciBDSEFSU0VUID0gJ0BjaGFyc2V0J1xuZXhwb3J0IHZhciBWSUVXUE9SVCA9ICdAdmlld3BvcnQnXG5leHBvcnQgdmFyIFNVUFBPUlRTID0gJ0BzdXBwb3J0cydcbmV4cG9ydCB2YXIgRE9DVU1FTlQgPSAnQGRvY3VtZW50J1xuZXhwb3J0IHZhciBOQU1FU1BBQ0UgPSAnQG5hbWVzcGFjZSdcbmV4cG9ydCB2YXIgS0VZRlJBTUVTID0gJ0BrZXlmcmFtZXMnXG5leHBvcnQgdmFyIEZPTlRfRkFDRSA9ICdAZm9udC1mYWNlJ1xuZXhwb3J0IHZhciBDT1VOVEVSX1NUWUxFID0gJ0Bjb3VudGVyLXN0eWxlJ1xuZXhwb3J0IHZhciBGT05UX0ZFQVRVUkVfVkFMVUVTID0gJ0Bmb250LWZlYXR1cmUtdmFsdWVzJ1xuZXhwb3J0IHZhciBMQVlFUiA9ICdAbGF5ZXInXG4iLCAiLyoqXG4gKiBAcGFyYW0ge251bWJlcn1cbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IHZhciBhYnMgPSBNYXRoLmFic1xuXG4vKipcbiAqIEBwYXJhbSB7bnVtYmVyfVxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5leHBvcnQgdmFyIGZyb20gPSBTdHJpbmcuZnJvbUNoYXJDb2RlXG5cbi8qKlxuICogQHBhcmFtIHtvYmplY3R9XG4gKiBAcmV0dXJuIHtvYmplY3R9XG4gKi9cbmV4cG9ydCB2YXIgYXNzaWduID0gT2JqZWN0LmFzc2lnblxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHtudW1iZXJ9IGxlbmd0aFxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzaCAodmFsdWUsIGxlbmd0aCkge1xuXHRyZXR1cm4gY2hhcmF0KHZhbHVlLCAwKSBeIDQ1ID8gKCgoKCgoKGxlbmd0aCA8PCAyKSBeIGNoYXJhdCh2YWx1ZSwgMCkpIDw8IDIpIF4gY2hhcmF0KHZhbHVlLCAxKSkgPDwgMikgXiBjaGFyYXQodmFsdWUsIDIpKSA8PCAyKSBeIGNoYXJhdCh2YWx1ZSwgMykgOiAwXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cmltICh2YWx1ZSkge1xuXHRyZXR1cm4gdmFsdWUudHJpbSgpXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcGFyYW0ge1JlZ0V4cH0gcGF0dGVyblxuICogQHJldHVybiB7c3RyaW5nP31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hdGNoICh2YWx1ZSwgcGF0dGVybikge1xuXHRyZXR1cm4gKHZhbHVlID0gcGF0dGVybi5leGVjKHZhbHVlKSkgPyB2YWx1ZVswXSA6IHZhbHVlXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcGFyYW0geyhzdHJpbmd8UmVnRXhwKX0gcGF0dGVyblxuICogQHBhcmFtIHtzdHJpbmd9IHJlcGxhY2VtZW50XG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXBsYWNlICh2YWx1ZSwgcGF0dGVybiwgcmVwbGFjZW1lbnQpIHtcblx0cmV0dXJuIHZhbHVlLnJlcGxhY2UocGF0dGVybiwgcmVwbGFjZW1lbnQpXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcGFyYW0ge3N0cmluZ30gc2VhcmNoXG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbmRleG9mICh2YWx1ZSwgc2VhcmNoKSB7XG5cdHJldHVybiB2YWx1ZS5pbmRleE9mKHNlYXJjaClcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleFxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY2hhcmF0ICh2YWx1ZSwgaW5kZXgpIHtcblx0cmV0dXJuIHZhbHVlLmNoYXJDb2RlQXQoaW5kZXgpIHwgMFxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHtudW1iZXJ9IGJlZ2luXG4gKiBAcGFyYW0ge251bWJlcn0gZW5kXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdWJzdHIgKHZhbHVlLCBiZWdpbiwgZW5kKSB7XG5cdHJldHVybiB2YWx1ZS5zbGljZShiZWdpbiwgZW5kKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RybGVuICh2YWx1ZSkge1xuXHRyZXR1cm4gdmFsdWUubGVuZ3RoXG59XG5cbi8qKlxuICogQHBhcmFtIHthbnlbXX0gdmFsdWVcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNpemVvZiAodmFsdWUpIHtcblx0cmV0dXJuIHZhbHVlLmxlbmd0aFxufVxuXG4vKipcbiAqIEBwYXJhbSB7YW55fSB2YWx1ZVxuICogQHBhcmFtIHthbnlbXX0gYXJyYXlcbiAqIEByZXR1cm4ge2FueX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFwcGVuZCAodmFsdWUsIGFycmF5KSB7XG5cdHJldHVybiBhcnJheS5wdXNoKHZhbHVlKSwgdmFsdWVcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBhcnJheVxuICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2tcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbWJpbmUgKGFycmF5LCBjYWxsYmFjaykge1xuXHRyZXR1cm4gYXJyYXkubWFwKGNhbGxiYWNrKS5qb2luKCcnKVxufVxuIiwgImltcG9ydCB7ZnJvbSwgdHJpbSwgY2hhcmF0LCBzdHJsZW4sIHN1YnN0ciwgYXBwZW5kLCBhc3NpZ259IGZyb20gJy4vVXRpbGl0eS5qcydcblxuZXhwb3J0IHZhciBsaW5lID0gMVxuZXhwb3J0IHZhciBjb2x1bW4gPSAxXG5leHBvcnQgdmFyIGxlbmd0aCA9IDBcbmV4cG9ydCB2YXIgcG9zaXRpb24gPSAwXG5leHBvcnQgdmFyIGNoYXJhY3RlciA9IDBcbmV4cG9ydCB2YXIgY2hhcmFjdGVycyA9ICcnXG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcGFyYW0ge29iamVjdCB8IG51bGx9IHJvb3RcbiAqIEBwYXJhbSB7b2JqZWN0IHwgbnVsbH0gcGFyZW50XG4gKiBAcGFyYW0ge3N0cmluZ30gdHlwZVxuICogQHBhcmFtIHtzdHJpbmdbXSB8IHN0cmluZ30gcHJvcHNcbiAqIEBwYXJhbSB7b2JqZWN0W10gfCBzdHJpbmd9IGNoaWxkcmVuXG4gKiBAcGFyYW0ge251bWJlcn0gbGVuZ3RoXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub2RlICh2YWx1ZSwgcm9vdCwgcGFyZW50LCB0eXBlLCBwcm9wcywgY2hpbGRyZW4sIGxlbmd0aCkge1xuXHRyZXR1cm4ge3ZhbHVlOiB2YWx1ZSwgcm9vdDogcm9vdCwgcGFyZW50OiBwYXJlbnQsIHR5cGU6IHR5cGUsIHByb3BzOiBwcm9wcywgY2hpbGRyZW46IGNoaWxkcmVuLCBsaW5lOiBsaW5lLCBjb2x1bW46IGNvbHVtbiwgbGVuZ3RoOiBsZW5ndGgsIHJldHVybjogJyd9XG59XG5cbi8qKlxuICogQHBhcmFtIHtvYmplY3R9IHJvb3RcbiAqIEBwYXJhbSB7b2JqZWN0fSBwcm9wc1xuICogQHJldHVybiB7b2JqZWN0fVxuICovXG5leHBvcnQgZnVuY3Rpb24gY29weSAocm9vdCwgcHJvcHMpIHtcblx0cmV0dXJuIGFzc2lnbihub2RlKCcnLCBudWxsLCBudWxsLCAnJywgbnVsbCwgbnVsbCwgMCksIHJvb3QsIHtsZW5ndGg6IC1yb290Lmxlbmd0aH0sIHByb3BzKVxufVxuXG4vKipcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoYXIgKCkge1xuXHRyZXR1cm4gY2hhcmFjdGVyXG59XG5cbi8qKlxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJldiAoKSB7XG5cdGNoYXJhY3RlciA9IHBvc2l0aW9uID4gMCA/IGNoYXJhdChjaGFyYWN0ZXJzLCAtLXBvc2l0aW9uKSA6IDBcblxuXHRpZiAoY29sdW1uLS0sIGNoYXJhY3RlciA9PT0gMTApXG5cdFx0Y29sdW1uID0gMSwgbGluZS0tXG5cblx0cmV0dXJuIGNoYXJhY3RlclxufVxuXG4vKipcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5leHQgKCkge1xuXHRjaGFyYWN0ZXIgPSBwb3NpdGlvbiA8IGxlbmd0aCA/IGNoYXJhdChjaGFyYWN0ZXJzLCBwb3NpdGlvbisrKSA6IDBcblxuXHRpZiAoY29sdW1uKyssIGNoYXJhY3RlciA9PT0gMTApXG5cdFx0Y29sdW1uID0gMSwgbGluZSsrXG5cblx0cmV0dXJuIGNoYXJhY3RlclxufVxuXG4vKipcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBlZWsgKCkge1xuXHRyZXR1cm4gY2hhcmF0KGNoYXJhY3RlcnMsIHBvc2l0aW9uKVxufVxuXG4vKipcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhcmV0ICgpIHtcblx0cmV0dXJuIHBvc2l0aW9uXG59XG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IGJlZ2luXG4gKiBAcGFyYW0ge251bWJlcn0gZW5kXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzbGljZSAoYmVnaW4sIGVuZCkge1xuXHRyZXR1cm4gc3Vic3RyKGNoYXJhY3RlcnMsIGJlZ2luLCBlbmQpXG59XG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IHR5cGVcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRva2VuICh0eXBlKSB7XG5cdHN3aXRjaCAodHlwZSkge1xuXHRcdC8vIFxcMCBcXHQgXFxuIFxcciBcXHMgd2hpdGVzcGFjZSB0b2tlblxuXHRcdGNhc2UgMDogY2FzZSA5OiBjYXNlIDEwOiBjYXNlIDEzOiBjYXNlIDMyOlxuXHRcdFx0cmV0dXJuIDVcblx0XHQvLyAhICsgLCAvID4gQCB+IGlzb2xhdGUgdG9rZW5cblx0XHRjYXNlIDMzOiBjYXNlIDQzOiBjYXNlIDQ0OiBjYXNlIDQ3OiBjYXNlIDYyOiBjYXNlIDY0OiBjYXNlIDEyNjpcblx0XHQvLyA7IHsgfSBicmVha3BvaW50IHRva2VuXG5cdFx0Y2FzZSA1OTogY2FzZSAxMjM6IGNhc2UgMTI1OlxuXHRcdFx0cmV0dXJuIDRcblx0XHQvLyA6IGFjY29tcGFuaWVkIHRva2VuXG5cdFx0Y2FzZSA1ODpcblx0XHRcdHJldHVybiAzXG5cdFx0Ly8gXCIgJyAoIFsgb3BlbmluZyBkZWxpbWl0IHRva2VuXG5cdFx0Y2FzZSAzNDogY2FzZSAzOTogY2FzZSA0MDogY2FzZSA5MTpcblx0XHRcdHJldHVybiAyXG5cdFx0Ly8gKSBdIGNsb3NpbmcgZGVsaW1pdCB0b2tlblxuXHRcdGNhc2UgNDE6IGNhc2UgOTM6XG5cdFx0XHRyZXR1cm4gMVxuXHR9XG5cblx0cmV0dXJuIDBcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEByZXR1cm4ge2FueVtdfVxuICovXG5leHBvcnQgZnVuY3Rpb24gYWxsb2MgKHZhbHVlKSB7XG5cdHJldHVybiBsaW5lID0gY29sdW1uID0gMSwgbGVuZ3RoID0gc3RybGVuKGNoYXJhY3RlcnMgPSB2YWx1ZSksIHBvc2l0aW9uID0gMCwgW11cbn1cblxuLyoqXG4gKiBAcGFyYW0ge2FueX0gdmFsdWVcbiAqIEByZXR1cm4ge2FueX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlYWxsb2MgKHZhbHVlKSB7XG5cdHJldHVybiBjaGFyYWN0ZXJzID0gJycsIHZhbHVlXG59XG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IHR5cGVcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlbGltaXQgKHR5cGUpIHtcblx0cmV0dXJuIHRyaW0oc2xpY2UocG9zaXRpb24gLSAxLCBkZWxpbWl0ZXIodHlwZSA9PT0gOTEgPyB0eXBlICsgMiA6IHR5cGUgPT09IDQwID8gdHlwZSArIDEgOiB0eXBlKSkpXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcmV0dXJuIHtzdHJpbmdbXX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRva2VuaXplICh2YWx1ZSkge1xuXHRyZXR1cm4gZGVhbGxvYyh0b2tlbml6ZXIoYWxsb2ModmFsdWUpKSlcbn1cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gdHlwZVxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gd2hpdGVzcGFjZSAodHlwZSkge1xuXHR3aGlsZSAoY2hhcmFjdGVyID0gcGVlaygpKVxuXHRcdGlmIChjaGFyYWN0ZXIgPCAzMylcblx0XHRcdG5leHQoKVxuXHRcdGVsc2Vcblx0XHRcdGJyZWFrXG5cblx0cmV0dXJuIHRva2VuKHR5cGUpID4gMiB8fCB0b2tlbihjaGFyYWN0ZXIpID4gMyA/ICcnIDogJyAnXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmdbXX0gY2hpbGRyZW5cbiAqIEByZXR1cm4ge3N0cmluZ1tdfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9rZW5pemVyIChjaGlsZHJlbikge1xuXHR3aGlsZSAobmV4dCgpKVxuXHRcdHN3aXRjaCAodG9rZW4oY2hhcmFjdGVyKSkge1xuXHRcdFx0Y2FzZSAwOiBhcHBlbmQoaWRlbnRpZmllcihwb3NpdGlvbiAtIDEpLCBjaGlsZHJlbilcblx0XHRcdFx0YnJlYWtcblx0XHRcdGNhc2UgMjogYXBwZW5kKGRlbGltaXQoY2hhcmFjdGVyKSwgY2hpbGRyZW4pXG5cdFx0XHRcdGJyZWFrXG5cdFx0XHRkZWZhdWx0OiBhcHBlbmQoZnJvbShjaGFyYWN0ZXIpLCBjaGlsZHJlbilcblx0XHR9XG5cblx0cmV0dXJuIGNoaWxkcmVuXG59XG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XG4gKiBAcGFyYW0ge251bWJlcn0gY291bnRcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVzY2FwaW5nIChpbmRleCwgY291bnQpIHtcblx0d2hpbGUgKC0tY291bnQgJiYgbmV4dCgpKVxuXHRcdC8vIG5vdCAwLTkgQS1GIGEtZlxuXHRcdGlmIChjaGFyYWN0ZXIgPCA0OCB8fCBjaGFyYWN0ZXIgPiAxMDIgfHwgKGNoYXJhY3RlciA+IDU3ICYmIGNoYXJhY3RlciA8IDY1KSB8fCAoY2hhcmFjdGVyID4gNzAgJiYgY2hhcmFjdGVyIDwgOTcpKVxuXHRcdFx0YnJlYWtcblxuXHRyZXR1cm4gc2xpY2UoaW5kZXgsIGNhcmV0KCkgKyAoY291bnQgPCA2ICYmIHBlZWsoKSA9PSAzMiAmJiBuZXh0KCkgPT0gMzIpKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7bnVtYmVyfSB0eXBlXG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWxpbWl0ZXIgKHR5cGUpIHtcblx0d2hpbGUgKG5leHQoKSlcblx0XHRzd2l0Y2ggKGNoYXJhY3Rlcikge1xuXHRcdFx0Ly8gXSApIFwiICdcblx0XHRcdGNhc2UgdHlwZTpcblx0XHRcdFx0cmV0dXJuIHBvc2l0aW9uXG5cdFx0XHQvLyBcIiAnXG5cdFx0XHRjYXNlIDM0OiBjYXNlIDM5OlxuXHRcdFx0XHRpZiAodHlwZSAhPT0gMzQgJiYgdHlwZSAhPT0gMzkpXG5cdFx0XHRcdFx0ZGVsaW1pdGVyKGNoYXJhY3Rlcilcblx0XHRcdFx0YnJlYWtcblx0XHRcdC8vIChcblx0XHRcdGNhc2UgNDA6XG5cdFx0XHRcdGlmICh0eXBlID09PSA0MSlcblx0XHRcdFx0XHRkZWxpbWl0ZXIodHlwZSlcblx0XHRcdFx0YnJlYWtcblx0XHRcdC8vIFxcXG5cdFx0XHRjYXNlIDkyOlxuXHRcdFx0XHRuZXh0KClcblx0XHRcdFx0YnJlYWtcblx0XHR9XG5cblx0cmV0dXJuIHBvc2l0aW9uXG59XG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IHR5cGVcbiAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleFxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tbWVudGVyICh0eXBlLCBpbmRleCkge1xuXHR3aGlsZSAobmV4dCgpKVxuXHRcdC8vIC8vXG5cdFx0aWYgKHR5cGUgKyBjaGFyYWN0ZXIgPT09IDQ3ICsgMTApXG5cdFx0XHRicmVha1xuXHRcdC8vIC8qXG5cdFx0ZWxzZSBpZiAodHlwZSArIGNoYXJhY3RlciA9PT0gNDIgKyA0MiAmJiBwZWVrKCkgPT09IDQ3KVxuXHRcdFx0YnJlYWtcblxuXHRyZXR1cm4gJy8qJyArIHNsaWNlKGluZGV4LCBwb3NpdGlvbiAtIDEpICsgJyonICsgZnJvbSh0eXBlID09PSA0NyA/IHR5cGUgOiBuZXh0KCkpXG59XG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpZGVudGlmaWVyIChpbmRleCkge1xuXHR3aGlsZSAoIXRva2VuKHBlZWsoKSkpXG5cdFx0bmV4dCgpXG5cblx0cmV0dXJuIHNsaWNlKGluZGV4LCBwb3NpdGlvbilcbn1cbiIsICJpbXBvcnQge0NPTU1FTlQsIFJVTEVTRVQsIERFQ0xBUkFUSU9OfSBmcm9tICcuL0VudW0uanMnXG5pbXBvcnQge2FicywgY2hhcmF0LCB0cmltLCBmcm9tLCBzaXplb2YsIHN0cmxlbiwgc3Vic3RyLCBhcHBlbmQsIHJlcGxhY2UsIGluZGV4b2Z9IGZyb20gJy4vVXRpbGl0eS5qcydcbmltcG9ydCB7bm9kZSwgY2hhciwgcHJldiwgbmV4dCwgcGVlaywgY2FyZXQsIGFsbG9jLCBkZWFsbG9jLCBkZWxpbWl0LCB3aGl0ZXNwYWNlLCBlc2NhcGluZywgaWRlbnRpZmllciwgY29tbWVudGVyfSBmcm9tICcuL1Rva2VuaXplci5qcydcblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEByZXR1cm4ge29iamVjdFtdfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tcGlsZSAodmFsdWUpIHtcblx0cmV0dXJuIGRlYWxsb2MocGFyc2UoJycsIG51bGwsIG51bGwsIG51bGwsIFsnJ10sIHZhbHVlID0gYWxsb2ModmFsdWUpLCAwLCBbMF0sIHZhbHVlKSlcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEBwYXJhbSB7b2JqZWN0fSByb290XG4gKiBAcGFyYW0ge29iamVjdD99IHBhcmVudFxuICogQHBhcmFtIHtzdHJpbmdbXX0gcnVsZVxuICogQHBhcmFtIHtzdHJpbmdbXX0gcnVsZXNcbiAqIEBwYXJhbSB7c3RyaW5nW119IHJ1bGVzZXRzXG4gKiBAcGFyYW0ge251bWJlcltdfSBwc2V1ZG9cbiAqIEBwYXJhbSB7bnVtYmVyW119IHBvaW50c1xuICogQHBhcmFtIHtzdHJpbmdbXX0gZGVjbGFyYXRpb25zXG4gKiBAcmV0dXJuIHtvYmplY3R9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZSAodmFsdWUsIHJvb3QsIHBhcmVudCwgcnVsZSwgcnVsZXMsIHJ1bGVzZXRzLCBwc2V1ZG8sIHBvaW50cywgZGVjbGFyYXRpb25zKSB7XG5cdHZhciBpbmRleCA9IDBcblx0dmFyIG9mZnNldCA9IDBcblx0dmFyIGxlbmd0aCA9IHBzZXVkb1xuXHR2YXIgYXRydWxlID0gMFxuXHR2YXIgcHJvcGVydHkgPSAwXG5cdHZhciBwcmV2aW91cyA9IDBcblx0dmFyIHZhcmlhYmxlID0gMVxuXHR2YXIgc2Nhbm5pbmcgPSAxXG5cdHZhciBhbXBlcnNhbmQgPSAxXG5cdHZhciBjaGFyYWN0ZXIgPSAwXG5cdHZhciB0eXBlID0gJydcblx0dmFyIHByb3BzID0gcnVsZXNcblx0dmFyIGNoaWxkcmVuID0gcnVsZXNldHNcblx0dmFyIHJlZmVyZW5jZSA9IHJ1bGVcblx0dmFyIGNoYXJhY3RlcnMgPSB0eXBlXG5cblx0d2hpbGUgKHNjYW5uaW5nKVxuXHRcdHN3aXRjaCAocHJldmlvdXMgPSBjaGFyYWN0ZXIsIGNoYXJhY3RlciA9IG5leHQoKSkge1xuXHRcdFx0Ly8gKFxuXHRcdFx0Y2FzZSA0MDpcblx0XHRcdFx0aWYgKHByZXZpb3VzICE9IDEwOCAmJiBjaGFyYXQoY2hhcmFjdGVycywgbGVuZ3RoIC0gMSkgPT0gNTgpIHtcblx0XHRcdFx0XHRpZiAoaW5kZXhvZihjaGFyYWN0ZXJzICs9IHJlcGxhY2UoZGVsaW1pdChjaGFyYWN0ZXIpLCAnJicsICcmXFxmJyksICcmXFxmJykgIT0gLTEpXG5cdFx0XHRcdFx0XHRhbXBlcnNhbmQgPSAtMVxuXHRcdFx0XHRcdGJyZWFrXG5cdFx0XHRcdH1cblx0XHRcdC8vIFwiICcgW1xuXHRcdFx0Y2FzZSAzNDogY2FzZSAzOTogY2FzZSA5MTpcblx0XHRcdFx0Y2hhcmFjdGVycyArPSBkZWxpbWl0KGNoYXJhY3Rlcilcblx0XHRcdFx0YnJlYWtcblx0XHRcdC8vIFxcdCBcXG4gXFxyIFxcc1xuXHRcdFx0Y2FzZSA5OiBjYXNlIDEwOiBjYXNlIDEzOiBjYXNlIDMyOlxuXHRcdFx0XHRjaGFyYWN0ZXJzICs9IHdoaXRlc3BhY2UocHJldmlvdXMpXG5cdFx0XHRcdGJyZWFrXG5cdFx0XHQvLyBcXFxuXHRcdFx0Y2FzZSA5Mjpcblx0XHRcdFx0Y2hhcmFjdGVycyArPSBlc2NhcGluZyhjYXJldCgpIC0gMSwgNylcblx0XHRcdFx0Y29udGludWVcblx0XHRcdC8vIC9cblx0XHRcdGNhc2UgNDc6XG5cdFx0XHRcdHN3aXRjaCAocGVlaygpKSB7XG5cdFx0XHRcdFx0Y2FzZSA0MjogY2FzZSA0Nzpcblx0XHRcdFx0XHRcdGFwcGVuZChjb21tZW50KGNvbW1lbnRlcihuZXh0KCksIGNhcmV0KCkpLCByb290LCBwYXJlbnQpLCBkZWNsYXJhdGlvbnMpXG5cdFx0XHRcdFx0XHRicmVha1xuXHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRjaGFyYWN0ZXJzICs9ICcvJ1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrXG5cdFx0XHQvLyB7XG5cdFx0XHRjYXNlIDEyMyAqIHZhcmlhYmxlOlxuXHRcdFx0XHRwb2ludHNbaW5kZXgrK10gPSBzdHJsZW4oY2hhcmFjdGVycykgKiBhbXBlcnNhbmRcblx0XHRcdC8vIH0gOyBcXDBcblx0XHRcdGNhc2UgMTI1ICogdmFyaWFibGU6IGNhc2UgNTk6IGNhc2UgMDpcblx0XHRcdFx0c3dpdGNoIChjaGFyYWN0ZXIpIHtcblx0XHRcdFx0XHQvLyBcXDAgfVxuXHRcdFx0XHRcdGNhc2UgMDogY2FzZSAxMjU6IHNjYW5uaW5nID0gMFxuXHRcdFx0XHRcdC8vIDtcblx0XHRcdFx0XHRjYXNlIDU5ICsgb2Zmc2V0OiBpZiAoYW1wZXJzYW5kID09IC0xKSBjaGFyYWN0ZXJzID0gcmVwbGFjZShjaGFyYWN0ZXJzLCAvXFxmL2csICcnKVxuXHRcdFx0XHRcdFx0aWYgKHByb3BlcnR5ID4gMCAmJiAoc3RybGVuKGNoYXJhY3RlcnMpIC0gbGVuZ3RoKSlcblx0XHRcdFx0XHRcdFx0YXBwZW5kKHByb3BlcnR5ID4gMzIgPyBkZWNsYXJhdGlvbihjaGFyYWN0ZXJzICsgJzsnLCBydWxlLCBwYXJlbnQsIGxlbmd0aCAtIDEpIDogZGVjbGFyYXRpb24ocmVwbGFjZShjaGFyYWN0ZXJzLCAnICcsICcnKSArICc7JywgcnVsZSwgcGFyZW50LCBsZW5ndGggLSAyKSwgZGVjbGFyYXRpb25zKVxuXHRcdFx0XHRcdFx0YnJlYWtcblx0XHRcdFx0XHQvLyBAIDtcblx0XHRcdFx0XHRjYXNlIDU5OiBjaGFyYWN0ZXJzICs9ICc7J1xuXHRcdFx0XHRcdC8vIHsgcnVsZS9hdC1ydWxlXG5cdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdGFwcGVuZChyZWZlcmVuY2UgPSBydWxlc2V0KGNoYXJhY3RlcnMsIHJvb3QsIHBhcmVudCwgaW5kZXgsIG9mZnNldCwgcnVsZXMsIHBvaW50cywgdHlwZSwgcHJvcHMgPSBbXSwgY2hpbGRyZW4gPSBbXSwgbGVuZ3RoKSwgcnVsZXNldHMpXG5cblx0XHRcdFx0XHRcdGlmIChjaGFyYWN0ZXIgPT09IDEyMylcblx0XHRcdFx0XHRcdFx0aWYgKG9mZnNldCA9PT0gMClcblx0XHRcdFx0XHRcdFx0XHRwYXJzZShjaGFyYWN0ZXJzLCByb290LCByZWZlcmVuY2UsIHJlZmVyZW5jZSwgcHJvcHMsIHJ1bGVzZXRzLCBsZW5ndGgsIHBvaW50cywgY2hpbGRyZW4pXG5cdFx0XHRcdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHRcdFx0XHRzd2l0Y2ggKGF0cnVsZSA9PT0gOTkgJiYgY2hhcmF0KGNoYXJhY3RlcnMsIDMpID09PSAxMTAgPyAxMDAgOiBhdHJ1bGUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdC8vIGQgbCBtIHNcblx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgMTAwOiBjYXNlIDEwODogY2FzZSAxMDk6IGNhc2UgMTE1OlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRwYXJzZSh2YWx1ZSwgcmVmZXJlbmNlLCByZWZlcmVuY2UsIHJ1bGUgJiYgYXBwZW5kKHJ1bGVzZXQodmFsdWUsIHJlZmVyZW5jZSwgcmVmZXJlbmNlLCAwLCAwLCBydWxlcywgcG9pbnRzLCB0eXBlLCBydWxlcywgcHJvcHMgPSBbXSwgbGVuZ3RoKSwgY2hpbGRyZW4pLCBydWxlcywgY2hpbGRyZW4sIGxlbmd0aCwgcG9pbnRzLCBydWxlID8gcHJvcHMgOiBjaGlsZHJlbilcblx0XHRcdFx0XHRcdFx0XHRcdFx0YnJlYWtcblx0XHRcdFx0XHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHBhcnNlKGNoYXJhY3RlcnMsIHJlZmVyZW5jZSwgcmVmZXJlbmNlLCByZWZlcmVuY2UsIFsnJ10sIGNoaWxkcmVuLCAwLCBwb2ludHMsIGNoaWxkcmVuKVxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdGluZGV4ID0gb2Zmc2V0ID0gcHJvcGVydHkgPSAwLCB2YXJpYWJsZSA9IGFtcGVyc2FuZCA9IDEsIHR5cGUgPSBjaGFyYWN0ZXJzID0gJycsIGxlbmd0aCA9IHBzZXVkb1xuXHRcdFx0XHRicmVha1xuXHRcdFx0Ly8gOlxuXHRcdFx0Y2FzZSA1ODpcblx0XHRcdFx0bGVuZ3RoID0gMSArIHN0cmxlbihjaGFyYWN0ZXJzKSwgcHJvcGVydHkgPSBwcmV2aW91c1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0aWYgKHZhcmlhYmxlIDwgMSlcblx0XHRcdFx0XHRpZiAoY2hhcmFjdGVyID09IDEyMylcblx0XHRcdFx0XHRcdC0tdmFyaWFibGVcblx0XHRcdFx0XHRlbHNlIGlmIChjaGFyYWN0ZXIgPT0gMTI1ICYmIHZhcmlhYmxlKysgPT0gMCAmJiBwcmV2KCkgPT0gMTI1KVxuXHRcdFx0XHRcdFx0Y29udGludWVcblxuXHRcdFx0XHRzd2l0Y2ggKGNoYXJhY3RlcnMgKz0gZnJvbShjaGFyYWN0ZXIpLCBjaGFyYWN0ZXIgKiB2YXJpYWJsZSkge1xuXHRcdFx0XHRcdC8vICZcblx0XHRcdFx0XHRjYXNlIDM4OlxuXHRcdFx0XHRcdFx0YW1wZXJzYW5kID0gb2Zmc2V0ID4gMCA/IDEgOiAoY2hhcmFjdGVycyArPSAnXFxmJywgLTEpXG5cdFx0XHRcdFx0XHRicmVha1xuXHRcdFx0XHRcdC8vICxcblx0XHRcdFx0XHRjYXNlIDQ0OlxuXHRcdFx0XHRcdFx0cG9pbnRzW2luZGV4KytdID0gKHN0cmxlbihjaGFyYWN0ZXJzKSAtIDEpICogYW1wZXJzYW5kLCBhbXBlcnNhbmQgPSAxXG5cdFx0XHRcdFx0XHRicmVha1xuXHRcdFx0XHRcdC8vIEBcblx0XHRcdFx0XHRjYXNlIDY0OlxuXHRcdFx0XHRcdFx0Ly8gLVxuXHRcdFx0XHRcdFx0aWYgKHBlZWsoKSA9PT0gNDUpXG5cdFx0XHRcdFx0XHRcdGNoYXJhY3RlcnMgKz0gZGVsaW1pdChuZXh0KCkpXG5cblx0XHRcdFx0XHRcdGF0cnVsZSA9IHBlZWsoKSwgb2Zmc2V0ID0gbGVuZ3RoID0gc3RybGVuKHR5cGUgPSBjaGFyYWN0ZXJzICs9IGlkZW50aWZpZXIoY2FyZXQoKSkpLCBjaGFyYWN0ZXIrK1xuXHRcdFx0XHRcdFx0YnJlYWtcblx0XHRcdFx0XHQvLyAtXG5cdFx0XHRcdFx0Y2FzZSA0NTpcblx0XHRcdFx0XHRcdGlmIChwcmV2aW91cyA9PT0gNDUgJiYgc3RybGVuKGNoYXJhY3RlcnMpID09IDIpXG5cdFx0XHRcdFx0XHRcdHZhcmlhYmxlID0gMFxuXHRcdFx0XHR9XG5cdFx0fVxuXG5cdHJldHVybiBydWxlc2V0c1xufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHtvYmplY3R9IHJvb3RcbiAqIEBwYXJhbSB7b2JqZWN0P30gcGFyZW50XG4gKiBAcGFyYW0ge251bWJlcn0gaW5kZXhcbiAqIEBwYXJhbSB7bnVtYmVyfSBvZmZzZXRcbiAqIEBwYXJhbSB7c3RyaW5nW119IHJ1bGVzXG4gKiBAcGFyYW0ge251bWJlcltdfSBwb2ludHNcbiAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBwcm9wc1xuICogQHBhcmFtIHtzdHJpbmdbXX0gY2hpbGRyZW5cbiAqIEBwYXJhbSB7bnVtYmVyfSBsZW5ndGhcbiAqIEByZXR1cm4ge29iamVjdH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJ1bGVzZXQgKHZhbHVlLCByb290LCBwYXJlbnQsIGluZGV4LCBvZmZzZXQsIHJ1bGVzLCBwb2ludHMsIHR5cGUsIHByb3BzLCBjaGlsZHJlbiwgbGVuZ3RoKSB7XG5cdHZhciBwb3N0ID0gb2Zmc2V0IC0gMVxuXHR2YXIgcnVsZSA9IG9mZnNldCA9PT0gMCA/IHJ1bGVzIDogWycnXVxuXHR2YXIgc2l6ZSA9IHNpemVvZihydWxlKVxuXG5cdGZvciAodmFyIGkgPSAwLCBqID0gMCwgayA9IDA7IGkgPCBpbmRleDsgKytpKVxuXHRcdGZvciAodmFyIHggPSAwLCB5ID0gc3Vic3RyKHZhbHVlLCBwb3N0ICsgMSwgcG9zdCA9IGFicyhqID0gcG9pbnRzW2ldKSksIHogPSB2YWx1ZTsgeCA8IHNpemU7ICsreClcblx0XHRcdGlmICh6ID0gdHJpbShqID4gMCA/IHJ1bGVbeF0gKyAnICcgKyB5IDogcmVwbGFjZSh5LCAvJlxcZi9nLCBydWxlW3hdKSkpXG5cdFx0XHRcdHByb3BzW2srK10gPSB6XG5cblx0cmV0dXJuIG5vZGUodmFsdWUsIHJvb3QsIHBhcmVudCwgb2Zmc2V0ID09PSAwID8gUlVMRVNFVCA6IHR5cGUsIHByb3BzLCBjaGlsZHJlbiwgbGVuZ3RoKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7bnVtYmVyfSB2YWx1ZVxuICogQHBhcmFtIHtvYmplY3R9IHJvb3RcbiAqIEBwYXJhbSB7b2JqZWN0P30gcGFyZW50XG4gKiBAcmV0dXJuIHtvYmplY3R9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21tZW50ICh2YWx1ZSwgcm9vdCwgcGFyZW50KSB7XG5cdHJldHVybiBub2RlKHZhbHVlLCByb290LCBwYXJlbnQsIENPTU1FTlQsIGZyb20oY2hhcigpKSwgc3Vic3RyKHZhbHVlLCAyLCAtMiksIDApXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcGFyYW0ge29iamVjdH0gcm9vdFxuICogQHBhcmFtIHtvYmplY3Q/fSBwYXJlbnRcbiAqIEBwYXJhbSB7bnVtYmVyfSBsZW5ndGhcbiAqIEByZXR1cm4ge29iamVjdH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlY2xhcmF0aW9uICh2YWx1ZSwgcm9vdCwgcGFyZW50LCBsZW5ndGgpIHtcblx0cmV0dXJuIG5vZGUodmFsdWUsIHJvb3QsIHBhcmVudCwgREVDTEFSQVRJT04sIHN1YnN0cih2YWx1ZSwgMCwgbGVuZ3RoKSwgc3Vic3RyKHZhbHVlLCBsZW5ndGggKyAxLCAtMSksIGxlbmd0aClcbn1cbiIsICJpbXBvcnQge0lNUE9SVCwgTEFZRVIsIENPTU1FTlQsIFJVTEVTRVQsIERFQ0xBUkFUSU9OLCBLRVlGUkFNRVN9IGZyb20gJy4vRW51bS5qcydcbmltcG9ydCB7c3RybGVuLCBzaXplb2Z9IGZyb20gJy4vVXRpbGl0eS5qcydcblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdFtdfSBjaGlsZHJlblxuICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2tcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZSAoY2hpbGRyZW4sIGNhbGxiYWNrKSB7XG5cdHZhciBvdXRwdXQgPSAnJ1xuXHR2YXIgbGVuZ3RoID0gc2l6ZW9mKGNoaWxkcmVuKVxuXG5cdGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspXG5cdFx0b3V0cHV0ICs9IGNhbGxiYWNrKGNoaWxkcmVuW2ldLCBpLCBjaGlsZHJlbiwgY2FsbGJhY2spIHx8ICcnXG5cblx0cmV0dXJuIG91dHB1dFxufVxuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSBlbGVtZW50XG4gKiBAcGFyYW0ge251bWJlcn0gaW5kZXhcbiAqIEBwYXJhbSB7b2JqZWN0W119IGNoaWxkcmVuXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFja1xuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RyaW5naWZ5IChlbGVtZW50LCBpbmRleCwgY2hpbGRyZW4sIGNhbGxiYWNrKSB7XG5cdHN3aXRjaCAoZWxlbWVudC50eXBlKSB7XG5cdFx0Y2FzZSBMQVlFUjogaWYgKGVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoKSBicmVha1xuXHRcdGNhc2UgSU1QT1JUOiBjYXNlIERFQ0xBUkFUSU9OOiByZXR1cm4gZWxlbWVudC5yZXR1cm4gPSBlbGVtZW50LnJldHVybiB8fCBlbGVtZW50LnZhbHVlXG5cdFx0Y2FzZSBDT01NRU5UOiByZXR1cm4gJydcblx0XHRjYXNlIEtFWUZSQU1FUzogcmV0dXJuIGVsZW1lbnQucmV0dXJuID0gZWxlbWVudC52YWx1ZSArICd7JyArIHNlcmlhbGl6ZShlbGVtZW50LmNoaWxkcmVuLCBjYWxsYmFjaykgKyAnfSdcblx0XHRjYXNlIFJVTEVTRVQ6IGVsZW1lbnQudmFsdWUgPSBlbGVtZW50LnByb3BzLmpvaW4oJywnKVxuXHR9XG5cblx0cmV0dXJuIHN0cmxlbihjaGlsZHJlbiA9IHNlcmlhbGl6ZShlbGVtZW50LmNoaWxkcmVuLCBjYWxsYmFjaykpID8gZWxlbWVudC5yZXR1cm4gPSBlbGVtZW50LnZhbHVlICsgJ3snICsgY2hpbGRyZW4gKyAnfScgOiAnJ1xufVxuIiwgImltcG9ydCB7TVMsIE1PWiwgV0VCS0lULCBSVUxFU0VULCBLRVlGUkFNRVMsIERFQ0xBUkFUSU9OfSBmcm9tICcuL0VudW0uanMnXG5pbXBvcnQge21hdGNoLCBjaGFyYXQsIHN1YnN0ciwgc3RybGVuLCBzaXplb2YsIHJlcGxhY2UsIGNvbWJpbmV9IGZyb20gJy4vVXRpbGl0eS5qcydcbmltcG9ydCB7Y29weSwgdG9rZW5pemV9IGZyb20gJy4vVG9rZW5pemVyLmpzJ1xuaW1wb3J0IHtzZXJpYWxpemV9IGZyb20gJy4vU2VyaWFsaXplci5qcydcbmltcG9ydCB7cHJlZml4fSBmcm9tICcuL1ByZWZpeGVyLmpzJ1xuXG4vKipcbiAqIEBwYXJhbSB7ZnVuY3Rpb25bXX0gY29sbGVjdGlvblxuICogQHJldHVybiB7ZnVuY3Rpb259XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtaWRkbGV3YXJlIChjb2xsZWN0aW9uKSB7XG5cdHZhciBsZW5ndGggPSBzaXplb2YoY29sbGVjdGlvbilcblxuXHRyZXR1cm4gZnVuY3Rpb24gKGVsZW1lbnQsIGluZGV4LCBjaGlsZHJlbiwgY2FsbGJhY2spIHtcblx0XHR2YXIgb3V0cHV0ID0gJydcblxuXHRcdGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspXG5cdFx0XHRvdXRwdXQgKz0gY29sbGVjdGlvbltpXShlbGVtZW50LCBpbmRleCwgY2hpbGRyZW4sIGNhbGxiYWNrKSB8fCAnJ1xuXG5cdFx0cmV0dXJuIG91dHB1dFxuXHR9XG59XG5cbi8qKlxuICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2tcbiAqIEByZXR1cm4ge2Z1bmN0aW9ufVxuICovXG5leHBvcnQgZnVuY3Rpb24gcnVsZXNoZWV0IChjYWxsYmFjaykge1xuXHRyZXR1cm4gZnVuY3Rpb24gKGVsZW1lbnQpIHtcblx0XHRpZiAoIWVsZW1lbnQucm9vdClcblx0XHRcdGlmIChlbGVtZW50ID0gZWxlbWVudC5yZXR1cm4pXG5cdFx0XHRcdGNhbGxiYWNrKGVsZW1lbnQpXG5cdH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdH0gZWxlbWVudFxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XG4gKiBAcGFyYW0ge29iamVjdFtdfSBjaGlsZHJlblxuICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2tcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByZWZpeGVyIChlbGVtZW50LCBpbmRleCwgY2hpbGRyZW4sIGNhbGxiYWNrKSB7XG5cdGlmIChlbGVtZW50Lmxlbmd0aCA+IC0xKVxuXHRcdGlmICghZWxlbWVudC5yZXR1cm4pXG5cdFx0XHRzd2l0Y2ggKGVsZW1lbnQudHlwZSkge1xuXHRcdFx0XHRjYXNlIERFQ0xBUkFUSU9OOiBlbGVtZW50LnJldHVybiA9IHByZWZpeChlbGVtZW50LnZhbHVlLCBlbGVtZW50Lmxlbmd0aCwgY2hpbGRyZW4pXG5cdFx0XHRcdFx0cmV0dXJuXG5cdFx0XHRcdGNhc2UgS0VZRlJBTUVTOlxuXHRcdFx0XHRcdHJldHVybiBzZXJpYWxpemUoW2NvcHkoZWxlbWVudCwge3ZhbHVlOiByZXBsYWNlKGVsZW1lbnQudmFsdWUsICdAJywgJ0AnICsgV0VCS0lUKX0pXSwgY2FsbGJhY2spXG5cdFx0XHRcdGNhc2UgUlVMRVNFVDpcblx0XHRcdFx0XHRpZiAoZWxlbWVudC5sZW5ndGgpXG5cdFx0XHRcdFx0XHRyZXR1cm4gY29tYmluZShlbGVtZW50LnByb3BzLCBmdW5jdGlvbiAodmFsdWUpIHtcblx0XHRcdFx0XHRcdFx0c3dpdGNoIChtYXRjaCh2YWx1ZSwgLyg6OnBsYWNcXHcrfDpyZWFkLVxcdyspLykpIHtcblx0XHRcdFx0XHRcdFx0XHQvLyA6cmVhZC0ob25seXx3cml0ZSlcblx0XHRcdFx0XHRcdFx0XHRjYXNlICc6cmVhZC1vbmx5JzogY2FzZSAnOnJlYWQtd3JpdGUnOlxuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHNlcmlhbGl6ZShbY29weShlbGVtZW50LCB7cHJvcHM6IFtyZXBsYWNlKHZhbHVlLCAvOihyZWFkLVxcdyspLywgJzonICsgTU9aICsgJyQxJyldfSldLCBjYWxsYmFjaylcblx0XHRcdFx0XHRcdFx0XHQvLyA6cGxhY2Vob2xkZXJcblx0XHRcdFx0XHRcdFx0XHRjYXNlICc6OnBsYWNlaG9sZGVyJzpcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBzZXJpYWxpemUoW1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRjb3B5KGVsZW1lbnQsIHtwcm9wczogW3JlcGxhY2UodmFsdWUsIC86KHBsYWNcXHcrKS8sICc6JyArIFdFQktJVCArICdpbnB1dC0kMScpXX0pLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRjb3B5KGVsZW1lbnQsIHtwcm9wczogW3JlcGxhY2UodmFsdWUsIC86KHBsYWNcXHcrKS8sICc6JyArIE1PWiArICckMScpXX0pLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRjb3B5KGVsZW1lbnQsIHtwcm9wczogW3JlcGxhY2UodmFsdWUsIC86KHBsYWNcXHcrKS8sIE1TICsgJ2lucHV0LSQxJyldfSlcblx0XHRcdFx0XHRcdFx0XHRcdF0sIGNhbGxiYWNrKVxuXHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0cmV0dXJuICcnXG5cdFx0XHRcdFx0XHR9KVxuXHRcdFx0fVxufVxuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSBlbGVtZW50XG4gKiBAcGFyYW0ge251bWJlcn0gaW5kZXhcbiAqIEBwYXJhbSB7b2JqZWN0W119IGNoaWxkcmVuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBuYW1lc3BhY2UgKGVsZW1lbnQpIHtcblx0c3dpdGNoIChlbGVtZW50LnR5cGUpIHtcblx0XHRjYXNlIFJVTEVTRVQ6XG5cdFx0XHRlbGVtZW50LnByb3BzID0gZWxlbWVudC5wcm9wcy5tYXAoZnVuY3Rpb24gKHZhbHVlKSB7XG5cdFx0XHRcdHJldHVybiBjb21iaW5lKHRva2VuaXplKHZhbHVlKSwgZnVuY3Rpb24gKHZhbHVlLCBpbmRleCwgY2hpbGRyZW4pIHtcblx0XHRcdFx0XHRzd2l0Y2ggKGNoYXJhdCh2YWx1ZSwgMCkpIHtcblx0XHRcdFx0XHRcdC8vIFxcZlxuXHRcdFx0XHRcdFx0Y2FzZSAxMjpcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHN1YnN0cih2YWx1ZSwgMSwgc3RybGVuKHZhbHVlKSlcblx0XHRcdFx0XHRcdC8vIFxcMCAoICsgPiB+XG5cdFx0XHRcdFx0XHRjYXNlIDA6IGNhc2UgNDA6IGNhc2UgNDM6IGNhc2UgNjI6IGNhc2UgMTI2OlxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gdmFsdWVcblx0XHRcdFx0XHRcdC8vIDpcblx0XHRcdFx0XHRcdGNhc2UgNTg6XG5cdFx0XHRcdFx0XHRcdGlmIChjaGlsZHJlblsrK2luZGV4XSA9PT0gJ2dsb2JhbCcpXG5cdFx0XHRcdFx0XHRcdFx0Y2hpbGRyZW5baW5kZXhdID0gJycsIGNoaWxkcmVuWysraW5kZXhdID0gJ1xcZicgKyBzdWJzdHIoY2hpbGRyZW5baW5kZXhdLCBpbmRleCA9IDEsIC0xKVxuXHRcdFx0XHRcdFx0Ly8gXFxzXG5cdFx0XHRcdFx0XHRjYXNlIDMyOlxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gaW5kZXggPT09IDEgPyAnJyA6IHZhbHVlXG5cdFx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0XHRzd2l0Y2ggKGluZGV4KSB7XG5cdFx0XHRcdFx0XHRcdFx0Y2FzZSAwOiBlbGVtZW50ID0gdmFsdWVcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBzaXplb2YoY2hpbGRyZW4pID4gMSA/ICcnIDogdmFsdWVcblx0XHRcdFx0XHRcdFx0XHRjYXNlIGluZGV4ID0gc2l6ZW9mKGNoaWxkcmVuKSAtIDE6IGNhc2UgMjpcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBpbmRleCA9PT0gMiA/IHZhbHVlICsgZWxlbWVudCArIGVsZW1lbnQgOiB2YWx1ZSArIGVsZW1lbnRcblx0XHRcdFx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHZhbHVlXG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pXG5cdFx0XHR9KVxuXHR9XG59XG4iLCAidmFyIHdlYWtNZW1vaXplID0gZnVuY3Rpb24gd2Vha01lbW9pemUoZnVuYykge1xuICB2YXIgY2FjaGUgPSBuZXcgV2Vha01hcCgpO1xuICByZXR1cm4gZnVuY3Rpb24gKGFyZykge1xuICAgIGlmIChjYWNoZS5oYXMoYXJnKSkge1xuICAgICAgLy8gVXNlIG5vbi1udWxsIGFzc2VydGlvbiBiZWNhdXNlIHdlIGp1c3QgY2hlY2tlZCB0aGF0IHRoZSBjYWNoZSBgaGFzYCBpdFxuICAgICAgLy8gVGhpcyBhbGxvd3MgdXMgdG8gcmVtb3ZlIGB1bmRlZmluZWRgIGZyb20gdGhlIHJldHVybiB2YWx1ZVxuICAgICAgcmV0dXJuIGNhY2hlLmdldChhcmcpO1xuICAgIH1cblxuICAgIHZhciByZXQgPSBmdW5jKGFyZyk7XG4gICAgY2FjaGUuc2V0KGFyZywgcmV0KTtcbiAgICByZXR1cm4gcmV0O1xuICB9O1xufTtcblxuZXhwb3J0IHsgd2Vha01lbW9pemUgYXMgZGVmYXVsdCB9O1xuIiwgImZ1bmN0aW9uIG1lbW9pemUoZm4pIHtcbiAgdmFyIGNhY2hlID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgcmV0dXJuIGZ1bmN0aW9uIChhcmcpIHtcbiAgICBpZiAoY2FjaGVbYXJnXSA9PT0gdW5kZWZpbmVkKSBjYWNoZVthcmddID0gZm4oYXJnKTtcbiAgICByZXR1cm4gY2FjaGVbYXJnXTtcbiAgfTtcbn1cblxuZXhwb3J0IHsgbWVtb2l6ZSBhcyBkZWZhdWx0IH07XG4iLCAiaW1wb3J0IHsgU3R5bGVTaGVldCB9IGZyb20gJ0BlbW90aW9uL3NoZWV0JztcbmltcG9ydCB7IGRlYWxsb2MsIGFsbG9jLCBuZXh0LCB0b2tlbiwgZnJvbSwgcGVlaywgZGVsaW1pdCwgc2xpY2UsIHBvc2l0aW9uLCBSVUxFU0VULCBjb21iaW5lLCBtYXRjaCwgc2VyaWFsaXplLCBjb3B5LCByZXBsYWNlLCBXRUJLSVQsIE1PWiwgTVMsIEtFWUZSQU1FUywgREVDTEFSQVRJT04sIGhhc2gsIGNoYXJhdCwgc3RybGVuLCBpbmRleG9mLCBzdHJpbmdpZnksIHJ1bGVzaGVldCwgbWlkZGxld2FyZSwgY29tcGlsZSB9IGZyb20gJ3N0eWxpcyc7XG5pbXBvcnQgd2Vha01lbW9pemUgZnJvbSAnQGVtb3Rpb24vd2Vhay1tZW1vaXplJztcbmltcG9ydCBtZW1vaXplIGZyb20gJ0BlbW90aW9uL21lbW9pemUnO1xuXG52YXIgaXNCcm93c2VyID0gdHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJztcblxudmFyIGlkZW50aWZpZXJXaXRoUG9pbnRUcmFja2luZyA9IGZ1bmN0aW9uIGlkZW50aWZpZXJXaXRoUG9pbnRUcmFja2luZyhiZWdpbiwgcG9pbnRzLCBpbmRleCkge1xuICB2YXIgcHJldmlvdXMgPSAwO1xuICB2YXIgY2hhcmFjdGVyID0gMDtcblxuICB3aGlsZSAodHJ1ZSkge1xuICAgIHByZXZpb3VzID0gY2hhcmFjdGVyO1xuICAgIGNoYXJhY3RlciA9IHBlZWsoKTsgLy8gJlxcZlxuXG4gICAgaWYgKHByZXZpb3VzID09PSAzOCAmJiBjaGFyYWN0ZXIgPT09IDEyKSB7XG4gICAgICBwb2ludHNbaW5kZXhdID0gMTtcbiAgICB9XG5cbiAgICBpZiAodG9rZW4oY2hhcmFjdGVyKSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgbmV4dCgpO1xuICB9XG5cbiAgcmV0dXJuIHNsaWNlKGJlZ2luLCBwb3NpdGlvbik7XG59O1xuXG52YXIgdG9SdWxlcyA9IGZ1bmN0aW9uIHRvUnVsZXMocGFyc2VkLCBwb2ludHMpIHtcbiAgLy8gcHJldGVuZCB3ZSd2ZSBzdGFydGVkIHdpdGggYSBjb21tYVxuICB2YXIgaW5kZXggPSAtMTtcbiAgdmFyIGNoYXJhY3RlciA9IDQ0O1xuXG4gIGRvIHtcbiAgICBzd2l0Y2ggKHRva2VuKGNoYXJhY3RlcikpIHtcbiAgICAgIGNhc2UgMDpcbiAgICAgICAgLy8gJlxcZlxuICAgICAgICBpZiAoY2hhcmFjdGVyID09PSAzOCAmJiBwZWVrKCkgPT09IDEyKSB7XG4gICAgICAgICAgLy8gdGhpcyBpcyBub3QgMTAwJSBjb3JyZWN0LCB3ZSBkb24ndCBhY2NvdW50IGZvciBsaXRlcmFsIHNlcXVlbmNlcyBoZXJlIC0gbGlrZSBmb3IgZXhhbXBsZSBxdW90ZWQgc3RyaW5nc1xuICAgICAgICAgIC8vIHN0eWxpcyBpbnNlcnRzIFxcZiBhZnRlciAmIHRvIGtub3cgd2hlbiAmIHdoZXJlIGl0IHNob3VsZCByZXBsYWNlIHRoaXMgc2VxdWVuY2Ugd2l0aCB0aGUgY29udGV4dCBzZWxlY3RvclxuICAgICAgICAgIC8vIGFuZCB3aGVuIGl0IHNob3VsZCBqdXN0IGNvbmNhdGVuYXRlIHRoZSBvdXRlciBhbmQgaW5uZXIgc2VsZWN0b3JzXG4gICAgICAgICAgLy8gaXQncyB2ZXJ5IHVubGlrZWx5IGZvciB0aGlzIHNlcXVlbmNlIHRvIGFjdHVhbGx5IGFwcGVhciBpbiBhIGRpZmZlcmVudCBjb250ZXh0LCBzbyB3ZSBqdXN0IGxldmVyYWdlIHRoaXMgZmFjdCBoZXJlXG4gICAgICAgICAgcG9pbnRzW2luZGV4XSA9IDE7XG4gICAgICAgIH1cblxuICAgICAgICBwYXJzZWRbaW5kZXhdICs9IGlkZW50aWZpZXJXaXRoUG9pbnRUcmFja2luZyhwb3NpdGlvbiAtIDEsIHBvaW50cywgaW5kZXgpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAyOlxuICAgICAgICBwYXJzZWRbaW5kZXhdICs9IGRlbGltaXQoY2hhcmFjdGVyKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgNDpcbiAgICAgICAgLy8gY29tbWFcbiAgICAgICAgaWYgKGNoYXJhY3RlciA9PT0gNDQpIHtcbiAgICAgICAgICAvLyBjb2xvblxuICAgICAgICAgIHBhcnNlZFsrK2luZGV4XSA9IHBlZWsoKSA9PT0gNTggPyAnJlxcZicgOiAnJztcbiAgICAgICAgICBwb2ludHNbaW5kZXhdID0gcGFyc2VkW2luZGV4XS5sZW5ndGg7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgLy8gZmFsbHRocm91Z2hcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcGFyc2VkW2luZGV4XSArPSBmcm9tKGNoYXJhY3Rlcik7XG4gICAgfVxuICB9IHdoaWxlIChjaGFyYWN0ZXIgPSBuZXh0KCkpO1xuXG4gIHJldHVybiBwYXJzZWQ7XG59O1xuXG52YXIgZ2V0UnVsZXMgPSBmdW5jdGlvbiBnZXRSdWxlcyh2YWx1ZSwgcG9pbnRzKSB7XG4gIHJldHVybiBkZWFsbG9jKHRvUnVsZXMoYWxsb2ModmFsdWUpLCBwb2ludHMpKTtcbn07IC8vIFdlYWtTZXQgd291bGQgYmUgbW9yZSBhcHByb3ByaWF0ZSwgYnV0IG9ubHkgV2Vha01hcCBpcyBzdXBwb3J0ZWQgaW4gSUUxMVxuXG5cbnZhciBmaXhlZEVsZW1lbnRzID0gLyogI19fUFVSRV9fICovbmV3IFdlYWtNYXAoKTtcbnZhciBjb21wYXQgPSBmdW5jdGlvbiBjb21wYXQoZWxlbWVudCkge1xuICBpZiAoZWxlbWVudC50eXBlICE9PSAncnVsZScgfHwgIWVsZW1lbnQucGFyZW50IHx8IC8vIHBvc2l0aXZlIC5sZW5ndGggaW5kaWNhdGVzIHRoYXQgdGhpcyBydWxlIGNvbnRhaW5zIHBzZXVkb1xuICAvLyBuZWdhdGl2ZSAubGVuZ3RoIGluZGljYXRlcyB0aGF0IHRoaXMgcnVsZSBoYXMgYmVlbiBhbHJlYWR5IHByZWZpeGVkXG4gIGVsZW1lbnQubGVuZ3RoIDwgMSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHZhciB2YWx1ZSA9IGVsZW1lbnQudmFsdWUsXG4gICAgICBwYXJlbnQgPSBlbGVtZW50LnBhcmVudDtcbiAgdmFyIGlzSW1wbGljaXRSdWxlID0gZWxlbWVudC5jb2x1bW4gPT09IHBhcmVudC5jb2x1bW4gJiYgZWxlbWVudC5saW5lID09PSBwYXJlbnQubGluZTtcblxuICB3aGlsZSAocGFyZW50LnR5cGUgIT09ICdydWxlJykge1xuICAgIHBhcmVudCA9IHBhcmVudC5wYXJlbnQ7XG4gICAgaWYgKCFwYXJlbnQpIHJldHVybjtcbiAgfSAvLyBzaG9ydC1jaXJjdWl0IGZvciB0aGUgc2ltcGxlc3QgY2FzZVxuXG5cbiAgaWYgKGVsZW1lbnQucHJvcHMubGVuZ3RoID09PSAxICYmIHZhbHVlLmNoYXJDb2RlQXQoMCkgIT09IDU4XG4gIC8qIGNvbG9uICovXG4gICYmICFmaXhlZEVsZW1lbnRzLmdldChwYXJlbnQpKSB7XG4gICAgcmV0dXJuO1xuICB9IC8vIGlmIHRoaXMgaXMgYW4gaW1wbGljaXRseSBpbnNlcnRlZCBydWxlICh0aGUgb25lIGVhZ2VybHkgaW5zZXJ0ZWQgYXQgdGhlIGVhY2ggbmV3IG5lc3RlZCBsZXZlbClcbiAgLy8gdGhlbiB0aGUgcHJvcHMgaGFzIGFscmVhZHkgYmVlbiBtYW5pcHVsYXRlZCBiZWZvcmVoYW5kIGFzIHRoZXkgdGhhdCBhcnJheSBpcyBzaGFyZWQgYmV0d2VlbiBpdCBhbmQgaXRzIFwicnVsZSBwYXJlbnRcIlxuXG5cbiAgaWYgKGlzSW1wbGljaXRSdWxlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgZml4ZWRFbGVtZW50cy5zZXQoZWxlbWVudCwgdHJ1ZSk7XG4gIHZhciBwb2ludHMgPSBbXTtcbiAgdmFyIHJ1bGVzID0gZ2V0UnVsZXModmFsdWUsIHBvaW50cyk7XG4gIHZhciBwYXJlbnRSdWxlcyA9IHBhcmVudC5wcm9wcztcblxuICBmb3IgKHZhciBpID0gMCwgayA9IDA7IGkgPCBydWxlcy5sZW5ndGg7IGkrKykge1xuICAgIGZvciAodmFyIGogPSAwOyBqIDwgcGFyZW50UnVsZXMubGVuZ3RoOyBqKyssIGsrKykge1xuICAgICAgZWxlbWVudC5wcm9wc1trXSA9IHBvaW50c1tpXSA/IHJ1bGVzW2ldLnJlcGxhY2UoLyZcXGYvZywgcGFyZW50UnVsZXNbal0pIDogcGFyZW50UnVsZXNbal0gKyBcIiBcIiArIHJ1bGVzW2ldO1xuICAgIH1cbiAgfVxufTtcbnZhciByZW1vdmVMYWJlbCA9IGZ1bmN0aW9uIHJlbW92ZUxhYmVsKGVsZW1lbnQpIHtcbiAgaWYgKGVsZW1lbnQudHlwZSA9PT0gJ2RlY2wnKSB7XG4gICAgdmFyIHZhbHVlID0gZWxlbWVudC52YWx1ZTtcblxuICAgIGlmICggLy8gY2hhcmNvZGUgZm9yIGxcbiAgICB2YWx1ZS5jaGFyQ29kZUF0KDApID09PSAxMDggJiYgLy8gY2hhcmNvZGUgZm9yIGJcbiAgICB2YWx1ZS5jaGFyQ29kZUF0KDIpID09PSA5OCkge1xuICAgICAgLy8gdGhpcyBpZ25vcmVzIGxhYmVsXG4gICAgICBlbGVtZW50W1wicmV0dXJuXCJdID0gJyc7XG4gICAgICBlbGVtZW50LnZhbHVlID0gJyc7XG4gICAgfVxuICB9XG59O1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1mYWxsdGhyb3VnaCAqL1xuXG5mdW5jdGlvbiBwcmVmaXgodmFsdWUsIGxlbmd0aCkge1xuICBzd2l0Y2ggKGhhc2godmFsdWUsIGxlbmd0aCkpIHtcbiAgICAvLyBjb2xvci1hZGp1c3RcbiAgICBjYXNlIDUxMDM6XG4gICAgICByZXR1cm4gV0VCS0lUICsgJ3ByaW50LScgKyB2YWx1ZSArIHZhbHVlO1xuICAgIC8vIGFuaW1hdGlvbiwgYW5pbWF0aW9uLShkZWxheXxkaXJlY3Rpb258ZHVyYXRpb258ZmlsbC1tb2RlfGl0ZXJhdGlvbi1jb3VudHxuYW1lfHBsYXktc3RhdGV8dGltaW5nLWZ1bmN0aW9uKVxuXG4gICAgY2FzZSA1NzM3OlxuICAgIGNhc2UgNDIwMTpcbiAgICBjYXNlIDMxNzc6XG4gICAgY2FzZSAzNDMzOlxuICAgIGNhc2UgMTY0MTpcbiAgICBjYXNlIDQ0NTc6XG4gICAgY2FzZSAyOTIxOiAvLyB0ZXh0LWRlY29yYXRpb24sIGZpbHRlciwgY2xpcC1wYXRoLCBiYWNrZmFjZS12aXNpYmlsaXR5LCBjb2x1bW4sIGJveC1kZWNvcmF0aW9uLWJyZWFrXG5cbiAgICBjYXNlIDU1NzI6XG4gICAgY2FzZSA2MzU2OlxuICAgIGNhc2UgNTg0NDpcbiAgICBjYXNlIDMxOTE6XG4gICAgY2FzZSA2NjQ1OlxuICAgIGNhc2UgMzAwNTogLy8gbWFzaywgbWFzay1pbWFnZSwgbWFzay0obW9kZXxjbGlwfHNpemUpLCBtYXNrLShyZXBlYXR8b3JpZ2luKSwgbWFzay1wb3NpdGlvbiwgbWFzay1jb21wb3NpdGUsXG5cbiAgICBjYXNlIDYzOTE6XG4gICAgY2FzZSA1ODc5OlxuICAgIGNhc2UgNTYyMzpcbiAgICBjYXNlIDYxMzU6XG4gICAgY2FzZSA0NTk5OlxuICAgIGNhc2UgNDg1NTogLy8gYmFja2dyb3VuZC1jbGlwLCBjb2x1bW5zLCBjb2x1bW4tKGNvdW50fGZpbGx8Z2FwfHJ1bGV8cnVsZS1jb2xvcnxydWxlLXN0eWxlfHJ1bGUtd2lkdGh8c3Bhbnx3aWR0aClcblxuICAgIGNhc2UgNDIxNTpcbiAgICBjYXNlIDYzODk6XG4gICAgY2FzZSA1MTA5OlxuICAgIGNhc2UgNTM2NTpcbiAgICBjYXNlIDU2MjE6XG4gICAgY2FzZSAzODI5OlxuICAgICAgcmV0dXJuIFdFQktJVCArIHZhbHVlICsgdmFsdWU7XG4gICAgLy8gYXBwZWFyYW5jZSwgdXNlci1zZWxlY3QsIHRyYW5zZm9ybSwgaHlwaGVucywgdGV4dC1zaXplLWFkanVzdFxuXG4gICAgY2FzZSA1MzQ5OlxuICAgIGNhc2UgNDI0NjpcbiAgICBjYXNlIDQ4MTA6XG4gICAgY2FzZSA2OTY4OlxuICAgIGNhc2UgMjc1NjpcbiAgICAgIHJldHVybiBXRUJLSVQgKyB2YWx1ZSArIE1PWiArIHZhbHVlICsgTVMgKyB2YWx1ZSArIHZhbHVlO1xuICAgIC8vIGZsZXgsIGZsZXgtZGlyZWN0aW9uXG5cbiAgICBjYXNlIDY4Mjg6XG4gICAgY2FzZSA0MjY4OlxuICAgICAgcmV0dXJuIFdFQktJVCArIHZhbHVlICsgTVMgKyB2YWx1ZSArIHZhbHVlO1xuICAgIC8vIG9yZGVyXG5cbiAgICBjYXNlIDYxNjU6XG4gICAgICByZXR1cm4gV0VCS0lUICsgdmFsdWUgKyBNUyArICdmbGV4LScgKyB2YWx1ZSArIHZhbHVlO1xuICAgIC8vIGFsaWduLWl0ZW1zXG5cbiAgICBjYXNlIDUxODc6XG4gICAgICByZXR1cm4gV0VCS0lUICsgdmFsdWUgKyByZXBsYWNlKHZhbHVlLCAvKFxcdyspLisoOlteXSspLywgV0VCS0lUICsgJ2JveC0kMSQyJyArIE1TICsgJ2ZsZXgtJDEkMicpICsgdmFsdWU7XG4gICAgLy8gYWxpZ24tc2VsZlxuXG4gICAgY2FzZSA1NDQzOlxuICAgICAgcmV0dXJuIFdFQktJVCArIHZhbHVlICsgTVMgKyAnZmxleC1pdGVtLScgKyByZXBsYWNlKHZhbHVlLCAvZmxleC18LXNlbGYvLCAnJykgKyB2YWx1ZTtcbiAgICAvLyBhbGlnbi1jb250ZW50XG5cbiAgICBjYXNlIDQ2NzU6XG4gICAgICByZXR1cm4gV0VCS0lUICsgdmFsdWUgKyBNUyArICdmbGV4LWxpbmUtcGFjaycgKyByZXBsYWNlKHZhbHVlLCAvYWxpZ24tY29udGVudHxmbGV4LXwtc2VsZi8sICcnKSArIHZhbHVlO1xuICAgIC8vIGZsZXgtc2hyaW5rXG5cbiAgICBjYXNlIDU1NDg6XG4gICAgICByZXR1cm4gV0VCS0lUICsgdmFsdWUgKyBNUyArIHJlcGxhY2UodmFsdWUsICdzaHJpbmsnLCAnbmVnYXRpdmUnKSArIHZhbHVlO1xuICAgIC8vIGZsZXgtYmFzaXNcblxuICAgIGNhc2UgNTI5MjpcbiAgICAgIHJldHVybiBXRUJLSVQgKyB2YWx1ZSArIE1TICsgcmVwbGFjZSh2YWx1ZSwgJ2Jhc2lzJywgJ3ByZWZlcnJlZC1zaXplJykgKyB2YWx1ZTtcbiAgICAvLyBmbGV4LWdyb3dcblxuICAgIGNhc2UgNjA2MDpcbiAgICAgIHJldHVybiBXRUJLSVQgKyAnYm94LScgKyByZXBsYWNlKHZhbHVlLCAnLWdyb3cnLCAnJykgKyBXRUJLSVQgKyB2YWx1ZSArIE1TICsgcmVwbGFjZSh2YWx1ZSwgJ2dyb3cnLCAncG9zaXRpdmUnKSArIHZhbHVlO1xuICAgIC8vIHRyYW5zaXRpb25cblxuICAgIGNhc2UgNDU1NDpcbiAgICAgIHJldHVybiBXRUJLSVQgKyByZXBsYWNlKHZhbHVlLCAvKFteLV0pKHRyYW5zZm9ybSkvZywgJyQxJyArIFdFQktJVCArICckMicpICsgdmFsdWU7XG4gICAgLy8gY3Vyc29yXG5cbiAgICBjYXNlIDYxODc6XG4gICAgICByZXR1cm4gcmVwbGFjZShyZXBsYWNlKHJlcGxhY2UodmFsdWUsIC8oem9vbS18Z3JhYikvLCBXRUJLSVQgKyAnJDEnKSwgLyhpbWFnZS1zZXQpLywgV0VCS0lUICsgJyQxJyksIHZhbHVlLCAnJykgKyB2YWx1ZTtcbiAgICAvLyBiYWNrZ3JvdW5kLCBiYWNrZ3JvdW5kLWltYWdlXG5cbiAgICBjYXNlIDU0OTU6XG4gICAgY2FzZSAzOTU5OlxuICAgICAgcmV0dXJuIHJlcGxhY2UodmFsdWUsIC8oaW1hZ2Utc2V0XFwoW15dKikvLCBXRUJLSVQgKyAnJDEnICsgJyRgJDEnKTtcbiAgICAvLyBqdXN0aWZ5LWNvbnRlbnRcblxuICAgIGNhc2UgNDk2ODpcbiAgICAgIHJldHVybiByZXBsYWNlKHJlcGxhY2UodmFsdWUsIC8oLis6KShmbGV4LSk/KC4qKS8sIFdFQktJVCArICdib3gtcGFjazokMycgKyBNUyArICdmbGV4LXBhY2s6JDMnKSwgL3MuKy1iW147XSsvLCAnanVzdGlmeScpICsgV0VCS0lUICsgdmFsdWUgKyB2YWx1ZTtcbiAgICAvLyAobWFyZ2lufHBhZGRpbmcpLWlubGluZS0oc3RhcnR8ZW5kKVxuXG4gICAgY2FzZSA0MDk1OlxuICAgIGNhc2UgMzU4MzpcbiAgICBjYXNlIDQwNjg6XG4gICAgY2FzZSAyNTMyOlxuICAgICAgcmV0dXJuIHJlcGxhY2UodmFsdWUsIC8oLispLWlubGluZSguKykvLCBXRUJLSVQgKyAnJDEkMicpICsgdmFsdWU7XG4gICAgLy8gKG1pbnxtYXgpPyh3aWR0aHxoZWlnaHR8aW5saW5lLXNpemV8YmxvY2stc2l6ZSlcblxuICAgIGNhc2UgODExNjpcbiAgICBjYXNlIDcwNTk6XG4gICAgY2FzZSA1NzUzOlxuICAgIGNhc2UgNTUzNTpcbiAgICBjYXNlIDU0NDU6XG4gICAgY2FzZSA1NzAxOlxuICAgIGNhc2UgNDkzMzpcbiAgICBjYXNlIDQ2Nzc6XG4gICAgY2FzZSA1NTMzOlxuICAgIGNhc2UgNTc4OTpcbiAgICBjYXNlIDUwMjE6XG4gICAgY2FzZSA0NzY1OlxuICAgICAgLy8gc3RyZXRjaCwgbWF4LWNvbnRlbnQsIG1pbi1jb250ZW50LCBmaWxsLWF2YWlsYWJsZVxuICAgICAgaWYgKHN0cmxlbih2YWx1ZSkgLSAxIC0gbGVuZ3RoID4gNikgc3dpdGNoIChjaGFyYXQodmFsdWUsIGxlbmd0aCArIDEpKSB7XG4gICAgICAgIC8vIChtKWF4LWNvbnRlbnQsIChtKWluLWNvbnRlbnRcbiAgICAgICAgY2FzZSAxMDk6XG4gICAgICAgICAgLy8gLVxuICAgICAgICAgIGlmIChjaGFyYXQodmFsdWUsIGxlbmd0aCArIDQpICE9PSA0NSkgYnJlYWs7XG4gICAgICAgIC8vIChmKWlsbC1hdmFpbGFibGUsIChmKWl0LWNvbnRlbnRcblxuICAgICAgICBjYXNlIDEwMjpcbiAgICAgICAgICByZXR1cm4gcmVwbGFjZSh2YWx1ZSwgLyguKzopKC4rKS0oW15dKykvLCAnJDEnICsgV0VCS0lUICsgJyQyLSQzJyArICckMScgKyBNT1ogKyAoY2hhcmF0KHZhbHVlLCBsZW5ndGggKyAzKSA9PSAxMDggPyAnJDMnIDogJyQyLSQzJykpICsgdmFsdWU7XG4gICAgICAgIC8vIChzKXRyZXRjaFxuXG4gICAgICAgIGNhc2UgMTE1OlxuICAgICAgICAgIHJldHVybiB+aW5kZXhvZih2YWx1ZSwgJ3N0cmV0Y2gnKSA/IHByZWZpeChyZXBsYWNlKHZhbHVlLCAnc3RyZXRjaCcsICdmaWxsLWF2YWlsYWJsZScpLCBsZW5ndGgpICsgdmFsdWUgOiB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIC8vIHBvc2l0aW9uOiBzdGlja3lcblxuICAgIGNhc2UgNDk0OTpcbiAgICAgIC8vIChzKXRpY2t5P1xuICAgICAgaWYgKGNoYXJhdCh2YWx1ZSwgbGVuZ3RoICsgMSkgIT09IDExNSkgYnJlYWs7XG4gICAgLy8gZGlzcGxheTogKGZsZXh8aW5saW5lLWZsZXgpXG5cbiAgICBjYXNlIDY0NDQ6XG4gICAgICBzd2l0Y2ggKGNoYXJhdCh2YWx1ZSwgc3RybGVuKHZhbHVlKSAtIDMgLSAofmluZGV4b2YodmFsdWUsICchaW1wb3J0YW50JykgJiYgMTApKSkge1xuICAgICAgICAvLyBzdGljKGspeVxuICAgICAgICBjYXNlIDEwNzpcbiAgICAgICAgICByZXR1cm4gcmVwbGFjZSh2YWx1ZSwgJzonLCAnOicgKyBXRUJLSVQpICsgdmFsdWU7XG4gICAgICAgIC8vIChpbmxpbmUtKT9mbChlKXhcblxuICAgICAgICBjYXNlIDEwMTpcbiAgICAgICAgICByZXR1cm4gcmVwbGFjZSh2YWx1ZSwgLyguKzopKFteOyFdKykoO3whLispPy8sICckMScgKyBXRUJLSVQgKyAoY2hhcmF0KHZhbHVlLCAxNCkgPT09IDQ1ID8gJ2lubGluZS0nIDogJycpICsgJ2JveCQzJyArICckMScgKyBXRUJLSVQgKyAnJDIkMycgKyAnJDEnICsgTVMgKyAnJDJib3gkMycpICsgdmFsdWU7XG4gICAgICB9XG5cbiAgICAgIGJyZWFrO1xuICAgIC8vIHdyaXRpbmctbW9kZVxuXG4gICAgY2FzZSA1OTM2OlxuICAgICAgc3dpdGNoIChjaGFyYXQodmFsdWUsIGxlbmd0aCArIDExKSkge1xuICAgICAgICAvLyB2ZXJ0aWNhbC1sKHIpXG4gICAgICAgIGNhc2UgMTE0OlxuICAgICAgICAgIHJldHVybiBXRUJLSVQgKyB2YWx1ZSArIE1TICsgcmVwbGFjZSh2YWx1ZSwgL1tzdmhdXFx3Ky1bdGJscl17Mn0vLCAndGInKSArIHZhbHVlO1xuICAgICAgICAvLyB2ZXJ0aWNhbC1yKGwpXG5cbiAgICAgICAgY2FzZSAxMDg6XG4gICAgICAgICAgcmV0dXJuIFdFQktJVCArIHZhbHVlICsgTVMgKyByZXBsYWNlKHZhbHVlLCAvW3N2aF1cXHcrLVt0YmxyXXsyfS8sICd0Yi1ybCcpICsgdmFsdWU7XG4gICAgICAgIC8vIGhvcml6b250YWwoLSl0YlxuXG4gICAgICAgIGNhc2UgNDU6XG4gICAgICAgICAgcmV0dXJuIFdFQktJVCArIHZhbHVlICsgTVMgKyByZXBsYWNlKHZhbHVlLCAvW3N2aF1cXHcrLVt0YmxyXXsyfS8sICdscicpICsgdmFsdWU7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBXRUJLSVQgKyB2YWx1ZSArIE1TICsgdmFsdWUgKyB2YWx1ZTtcbiAgfVxuXG4gIHJldHVybiB2YWx1ZTtcbn1cblxudmFyIHByZWZpeGVyID0gZnVuY3Rpb24gcHJlZml4ZXIoZWxlbWVudCwgaW5kZXgsIGNoaWxkcmVuLCBjYWxsYmFjaykge1xuICBpZiAoZWxlbWVudC5sZW5ndGggPiAtMSkgaWYgKCFlbGVtZW50W1wicmV0dXJuXCJdKSBzd2l0Y2ggKGVsZW1lbnQudHlwZSkge1xuICAgIGNhc2UgREVDTEFSQVRJT046XG4gICAgICBlbGVtZW50W1wicmV0dXJuXCJdID0gcHJlZml4KGVsZW1lbnQudmFsdWUsIGVsZW1lbnQubGVuZ3RoKTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSBLRVlGUkFNRVM6XG4gICAgICByZXR1cm4gc2VyaWFsaXplKFtjb3B5KGVsZW1lbnQsIHtcbiAgICAgICAgdmFsdWU6IHJlcGxhY2UoZWxlbWVudC52YWx1ZSwgJ0AnLCAnQCcgKyBXRUJLSVQpXG4gICAgICB9KV0sIGNhbGxiYWNrKTtcblxuICAgIGNhc2UgUlVMRVNFVDpcbiAgICAgIGlmIChlbGVtZW50Lmxlbmd0aCkgcmV0dXJuIGNvbWJpbmUoZWxlbWVudC5wcm9wcywgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgIHN3aXRjaCAobWF0Y2godmFsdWUsIC8oOjpwbGFjXFx3K3w6cmVhZC1cXHcrKS8pKSB7XG4gICAgICAgICAgLy8gOnJlYWQtKG9ubHl8d3JpdGUpXG4gICAgICAgICAgY2FzZSAnOnJlYWQtb25seSc6XG4gICAgICAgICAgY2FzZSAnOnJlYWQtd3JpdGUnOlxuICAgICAgICAgICAgcmV0dXJuIHNlcmlhbGl6ZShbY29weShlbGVtZW50LCB7XG4gICAgICAgICAgICAgIHByb3BzOiBbcmVwbGFjZSh2YWx1ZSwgLzoocmVhZC1cXHcrKS8sICc6JyArIE1PWiArICckMScpXVxuICAgICAgICAgICAgfSldLCBjYWxsYmFjayk7XG4gICAgICAgICAgLy8gOnBsYWNlaG9sZGVyXG5cbiAgICAgICAgICBjYXNlICc6OnBsYWNlaG9sZGVyJzpcbiAgICAgICAgICAgIHJldHVybiBzZXJpYWxpemUoW2NvcHkoZWxlbWVudCwge1xuICAgICAgICAgICAgICBwcm9wczogW3JlcGxhY2UodmFsdWUsIC86KHBsYWNcXHcrKS8sICc6JyArIFdFQktJVCArICdpbnB1dC0kMScpXVxuICAgICAgICAgICAgfSksIGNvcHkoZWxlbWVudCwge1xuICAgICAgICAgICAgICBwcm9wczogW3JlcGxhY2UodmFsdWUsIC86KHBsYWNcXHcrKS8sICc6JyArIE1PWiArICckMScpXVxuICAgICAgICAgICAgfSksIGNvcHkoZWxlbWVudCwge1xuICAgICAgICAgICAgICBwcm9wczogW3JlcGxhY2UodmFsdWUsIC86KHBsYWNcXHcrKS8sIE1TICsgJ2lucHV0LSQxJyldXG4gICAgICAgICAgICB9KV0sIGNhbGxiYWNrKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAnJztcbiAgICAgIH0pO1xuICB9XG59O1xuXG4vKiBpbXBvcnQgdHlwZSB7IFN0eWxpc1BsdWdpbiB9IGZyb20gJy4vdHlwZXMnICovXG5cbi8qXG5leHBvcnQgdHlwZSBPcHRpb25zID0ge1xuICBub25jZT86IHN0cmluZyxcbiAgc3R5bGlzUGx1Z2lucz86IFN0eWxpc1BsdWdpbltdLFxuICBrZXk6IHN0cmluZyxcbiAgY29udGFpbmVyPzogSFRNTEVsZW1lbnQsXG4gIHNwZWVkeT86IGJvb2xlYW4sXG4gIHByZXBlbmQ/OiBib29sZWFuLFxuICBpbnNlcnRpb25Qb2ludD86IEhUTUxFbGVtZW50XG59XG4qL1xuXG52YXIgZ2V0U2VydmVyU3R5bGlzQ2FjaGUgPSBpc0Jyb3dzZXIgPyB1bmRlZmluZWQgOiB3ZWFrTWVtb2l6ZShmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBtZW1vaXplKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgY2FjaGUgPSB7fTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgIHJldHVybiBjYWNoZVtuYW1lXTtcbiAgICB9O1xuICB9KTtcbn0pO1xudmFyIGRlZmF1bHRTdHlsaXNQbHVnaW5zID0gW3ByZWZpeGVyXTtcblxudmFyIGNyZWF0ZUNhY2hlID0gZnVuY3Rpb25cbiAgLyo6IEVtb3Rpb25DYWNoZSAqL1xuY3JlYXRlQ2FjaGUob3B0aW9uc1xuLyo6IE9wdGlvbnMgKi9cbikge1xuICB2YXIga2V5ID0gb3B0aW9ucy5rZXk7XG5cbiAgaWYgKGlzQnJvd3NlciAmJiBrZXkgPT09ICdjc3MnKSB7XG4gICAgdmFyIHNzclN0eWxlcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJzdHlsZVtkYXRhLWVtb3Rpb25dOm5vdChbZGF0YS1zXSlcIik7IC8vIGdldCBTU1JlZCBzdHlsZXMgb3V0IG9mIHRoZSB3YXkgb2YgUmVhY3QncyBoeWRyYXRpb25cbiAgICAvLyBkb2N1bWVudC5oZWFkIGlzIGEgc2FmZSBwbGFjZSB0byBtb3ZlIHRoZW0gdG8odGhvdWdoIG5vdGUgZG9jdW1lbnQuaGVhZCBpcyBub3QgbmVjZXNzYXJpbHkgdGhlIGxhc3QgcGxhY2UgdGhleSB3aWxsIGJlKVxuICAgIC8vIG5vdGUgdGhpcyB2ZXJ5IHZlcnkgaW50ZW50aW9uYWxseSB0YXJnZXRzIGFsbCBzdHlsZSBlbGVtZW50cyByZWdhcmRsZXNzIG9mIHRoZSBrZXkgdG8gZW5zdXJlXG4gICAgLy8gdGhhdCBjcmVhdGluZyBhIGNhY2hlIHdvcmtzIGluc2lkZSBvZiByZW5kZXIgb2YgYSBSZWFjdCBjb21wb25lbnRcblxuICAgIEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoc3NyU3R5bGVzLCBmdW5jdGlvbiAobm9kZVxuICAgIC8qOiBIVE1MU3R5bGVFbGVtZW50ICovXG4gICAgKSB7XG4gICAgICAvLyB3ZSB3YW50IHRvIG9ubHkgbW92ZSBlbGVtZW50cyB3aGljaCBoYXZlIGEgc3BhY2UgaW4gdGhlIGRhdGEtZW1vdGlvbiBhdHRyaWJ1dGUgdmFsdWVcbiAgICAgIC8vIGJlY2F1c2UgdGhhdCBpbmRpY2F0ZXMgdGhhdCBpdCBpcyBhbiBFbW90aW9uIDExIHNlcnZlci1zaWRlIHJlbmRlcmVkIHN0eWxlIGVsZW1lbnRzXG4gICAgICAvLyB3aGlsZSB3ZSB3aWxsIGFscmVhZHkgaWdub3JlIEVtb3Rpb24gMTEgY2xpZW50LXNpZGUgaW5zZXJ0ZWQgc3R5bGVzIGJlY2F1c2Ugb2YgdGhlIDpub3QoW2RhdGEtc10pIHBhcnQgaW4gdGhlIHNlbGVjdG9yXG4gICAgICAvLyBFbW90aW9uIDEwIGNsaWVudC1zaWRlIGluc2VydGVkIHN0eWxlcyBkaWQgbm90IGhhdmUgZGF0YS1zIChidXQgaW1wb3J0YW50bHkgZGlkIG5vdCBoYXZlIGEgc3BhY2UgaW4gdGhlaXIgZGF0YS1lbW90aW9uIGF0dHJpYnV0ZXMpXG4gICAgICAvLyBzbyBjaGVja2luZyBmb3IgdGhlIHNwYWNlIGVuc3VyZXMgdGhhdCBsb2FkaW5nIEVtb3Rpb24gMTEgYWZ0ZXIgRW1vdGlvbiAxMCBoYXMgaW5zZXJ0ZWQgc29tZSBzdHlsZXNcbiAgICAgIC8vIHdpbGwgbm90IHJlc3VsdCBpbiB0aGUgRW1vdGlvbiAxMCBzdHlsZXMgYmVpbmcgZGVzdHJveWVkXG4gICAgICB2YXIgZGF0YUVtb3Rpb25BdHRyaWJ1dGUgPSBub2RlLmdldEF0dHJpYnV0ZSgnZGF0YS1lbW90aW9uJyk7XG5cbiAgICAgIGlmIChkYXRhRW1vdGlvbkF0dHJpYnV0ZS5pbmRleE9mKCcgJykgPT09IC0xKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChub2RlKTtcbiAgICAgIG5vZGUuc2V0QXR0cmlidXRlKCdkYXRhLXMnLCAnJyk7XG4gICAgfSk7XG4gIH1cblxuICB2YXIgc3R5bGlzUGx1Z2lucyA9IG9wdGlvbnMuc3R5bGlzUGx1Z2lucyB8fCBkZWZhdWx0U3R5bGlzUGx1Z2lucztcblxuICB2YXIgaW5zZXJ0ZWQgPSB7fTtcbiAgdmFyIGNvbnRhaW5lcjtcbiAgLyogOiBOb2RlICovXG5cbiAgdmFyIG5vZGVzVG9IeWRyYXRlID0gW107XG5cbiAgaWYgKGlzQnJvd3Nlcikge1xuICAgIGNvbnRhaW5lciA9IG9wdGlvbnMuY29udGFpbmVyIHx8IGRvY3VtZW50LmhlYWQ7XG4gICAgQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbCggLy8gdGhpcyBtZWFucyB3ZSB3aWxsIGlnbm9yZSBlbGVtZW50cyB3aGljaCBkb24ndCBoYXZlIGEgc3BhY2UgaW4gdGhlbSB3aGljaFxuICAgIC8vIG1lYW5zIHRoYXQgdGhlIHN0eWxlIGVsZW1lbnRzIHdlJ3JlIGxvb2tpbmcgYXQgYXJlIG9ubHkgRW1vdGlvbiAxMSBzZXJ2ZXItcmVuZGVyZWQgc3R5bGUgZWxlbWVudHNcbiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwic3R5bGVbZGF0YS1lbW90aW9uXj1cXFwiXCIgKyBrZXkgKyBcIiBcXFwiXVwiKSwgZnVuY3Rpb24gKG5vZGVcbiAgICAvKjogSFRNTFN0eWxlRWxlbWVudCAqL1xuICAgICkge1xuICAgICAgdmFyIGF0dHJpYiA9IG5vZGUuZ2V0QXR0cmlidXRlKFwiZGF0YS1lbW90aW9uXCIpLnNwbGl0KCcgJyk7XG5cbiAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXR0cmliLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGluc2VydGVkW2F0dHJpYltpXV0gPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBub2Rlc1RvSHlkcmF0ZS5wdXNoKG5vZGUpO1xuICAgIH0pO1xuICB9XG5cbiAgdmFyIF9pbnNlcnQ7XG4gIC8qOiAoXG4gIHNlbGVjdG9yOiBzdHJpbmcsXG4gIHNlcmlhbGl6ZWQ6IFNlcmlhbGl6ZWRTdHlsZXMsXG4gIHNoZWV0OiBTdHlsZVNoZWV0LFxuICBzaG91bGRDYWNoZTogYm9vbGVhblxuICApID0+IHN0cmluZyB8IHZvaWQgKi9cblxuXG4gIHZhciBvbW5pcHJlc2VudFBsdWdpbnMgPSBbY29tcGF0LCByZW1vdmVMYWJlbF07XG5cbiAgaWYgKGlzQnJvd3Nlcikge1xuICAgIHZhciBjdXJyZW50U2hlZXQ7XG4gICAgdmFyIGZpbmFsaXppbmdQbHVnaW5zID0gW3N0cmluZ2lmeSwgcnVsZXNoZWV0KGZ1bmN0aW9uIChydWxlKSB7XG4gICAgICBjdXJyZW50U2hlZXQuaW5zZXJ0KHJ1bGUpO1xuICAgIH0pXTtcbiAgICB2YXIgc2VyaWFsaXplciA9IG1pZGRsZXdhcmUob21uaXByZXNlbnRQbHVnaW5zLmNvbmNhdChzdHlsaXNQbHVnaW5zLCBmaW5hbGl6aW5nUGx1Z2lucykpO1xuXG4gICAgdmFyIHN0eWxpcyA9IGZ1bmN0aW9uIHN0eWxpcyhzdHlsZXMpIHtcbiAgICAgIHJldHVybiBzZXJpYWxpemUoY29tcGlsZShzdHlsZXMpLCBzZXJpYWxpemVyKTtcbiAgICB9O1xuXG4gICAgX2luc2VydCA9IGZ1bmN0aW9uXG4gICAgICAvKjogdm9pZCAqL1xuICAgIGluc2VydChzZWxlY3RvclxuICAgIC8qOiBzdHJpbmcgKi9cbiAgICAsIHNlcmlhbGl6ZWRcbiAgICAvKjogU2VyaWFsaXplZFN0eWxlcyAqL1xuICAgICwgc2hlZXRcbiAgICAvKjogU3R5bGVTaGVldCAqL1xuICAgICwgc2hvdWxkQ2FjaGVcbiAgICAvKjogYm9vbGVhbiAqL1xuICAgICkge1xuICAgICAgY3VycmVudFNoZWV0ID0gc2hlZXQ7XG5cbiAgICAgIHN0eWxpcyhzZWxlY3RvciA/IHNlbGVjdG9yICsgXCJ7XCIgKyBzZXJpYWxpemVkLnN0eWxlcyArIFwifVwiIDogc2VyaWFsaXplZC5zdHlsZXMpO1xuXG4gICAgICBpZiAoc2hvdWxkQ2FjaGUpIHtcbiAgICAgICAgY2FjaGUuaW5zZXJ0ZWRbc2VyaWFsaXplZC5uYW1lXSA9IHRydWU7XG4gICAgICB9XG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgX2ZpbmFsaXppbmdQbHVnaW5zID0gW3N0cmluZ2lmeV07XG5cbiAgICB2YXIgX3NlcmlhbGl6ZXIgPSBtaWRkbGV3YXJlKG9tbmlwcmVzZW50UGx1Z2lucy5jb25jYXQoc3R5bGlzUGx1Z2lucywgX2ZpbmFsaXppbmdQbHVnaW5zKSk7XG5cbiAgICB2YXIgX3N0eWxpcyA9IGZ1bmN0aW9uIF9zdHlsaXMoc3R5bGVzKSB7XG4gICAgICByZXR1cm4gc2VyaWFsaXplKGNvbXBpbGUoc3R5bGVzKSwgX3NlcmlhbGl6ZXIpO1xuICAgIH07XG5cbiAgICB2YXIgc2VydmVyU3R5bGlzQ2FjaGUgPSBnZXRTZXJ2ZXJTdHlsaXNDYWNoZShzdHlsaXNQbHVnaW5zKShrZXkpO1xuXG4gICAgdmFyIGdldFJ1bGVzID0gZnVuY3Rpb25cbiAgICAgIC8qOiBzdHJpbmcgKi9cbiAgICBnZXRSdWxlcyhzZWxlY3RvclxuICAgIC8qOiBzdHJpbmcgKi9cbiAgICAsIHNlcmlhbGl6ZWRcbiAgICAvKjogU2VyaWFsaXplZFN0eWxlcyAqL1xuICAgICkge1xuICAgICAgdmFyIG5hbWUgPSBzZXJpYWxpemVkLm5hbWU7XG5cbiAgICAgIGlmIChzZXJ2ZXJTdHlsaXNDYWNoZVtuYW1lXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHNlcnZlclN0eWxpc0NhY2hlW25hbWVdID0gX3N0eWxpcyhzZWxlY3RvciA/IHNlbGVjdG9yICsgXCJ7XCIgKyBzZXJpYWxpemVkLnN0eWxlcyArIFwifVwiIDogc2VyaWFsaXplZC5zdHlsZXMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gc2VydmVyU3R5bGlzQ2FjaGVbbmFtZV07XG4gICAgfTtcblxuICAgIF9pbnNlcnQgPSBmdW5jdGlvblxuICAgICAgLyo6IHN0cmluZyB8IHZvaWQgKi9cbiAgICBfaW5zZXJ0KHNlbGVjdG9yXG4gICAgLyo6IHN0cmluZyAqL1xuICAgICwgc2VyaWFsaXplZFxuICAgIC8qOiBTZXJpYWxpemVkU3R5bGVzICovXG4gICAgLCBzaGVldFxuICAgIC8qOiBTdHlsZVNoZWV0ICovXG4gICAgLCBzaG91bGRDYWNoZVxuICAgIC8qOiBib29sZWFuICovXG4gICAgKSB7XG4gICAgICB2YXIgbmFtZSA9IHNlcmlhbGl6ZWQubmFtZTtcbiAgICAgIHZhciBydWxlcyA9IGdldFJ1bGVzKHNlbGVjdG9yLCBzZXJpYWxpemVkKTtcblxuICAgICAgaWYgKGNhY2hlLmNvbXBhdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIC8vIGluIHJlZ3VsYXIgbW9kZSwgd2UgZG9uJ3Qgc2V0IHRoZSBzdHlsZXMgb24gdGhlIGluc2VydGVkIGNhY2hlXG4gICAgICAgIC8vIHNpbmNlIHdlIGRvbid0IG5lZWQgdG8gYW5kIHRoYXQgd291bGQgYmUgd2FzdGluZyBtZW1vcnlcbiAgICAgICAgLy8gd2UgcmV0dXJuIHRoZW0gc28gdGhhdCB0aGV5IGFyZSByZW5kZXJlZCBpbiBhIHN0eWxlIHRhZ1xuICAgICAgICBpZiAoc2hvdWxkQ2FjaGUpIHtcbiAgICAgICAgICBjYWNoZS5pbnNlcnRlZFtuYW1lXSA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcnVsZXM7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBpbiBjb21wYXQgbW9kZSwgd2UgcHV0IHRoZSBzdHlsZXMgb24gdGhlIGluc2VydGVkIGNhY2hlIHNvXG4gICAgICAgIC8vIHRoYXQgZW1vdGlvbi1zZXJ2ZXIgY2FuIHB1bGwgb3V0IHRoZSBzdHlsZXNcbiAgICAgICAgLy8gZXhjZXB0IHdoZW4gd2UgZG9uJ3Qgd2FudCB0byBjYWNoZSBpdCB3aGljaCB3YXMgaW4gR2xvYmFsIGJ1dCBub3dcbiAgICAgICAgLy8gaXMgbm93aGVyZSBidXQgd2UgZG9uJ3Qgd2FudCB0byBkbyBhIG1ham9yIHJpZ2h0IG5vd1xuICAgICAgICAvLyBhbmQganVzdCBpbiBjYXNlIHdlJ3JlIGdvaW5nIHRvIGxlYXZlIHRoZSBjYXNlIGhlcmVcbiAgICAgICAgLy8gaXQncyBhbHNvIG5vdCBhZmZlY3RpbmcgY2xpZW50IHNpZGUgYnVuZGxlIHNpemVcbiAgICAgICAgLy8gc28gaXQncyByZWFsbHkgbm90IGEgYmlnIGRlYWxcbiAgICAgICAgaWYgKHNob3VsZENhY2hlKSB7XG4gICAgICAgICAgY2FjaGUuaW5zZXJ0ZWRbbmFtZV0gPSBydWxlcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gcnVsZXM7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgdmFyIGNhY2hlXG4gIC8qOiBFbW90aW9uQ2FjaGUgKi9cbiAgPSB7XG4gICAga2V5OiBrZXksXG4gICAgc2hlZXQ6IG5ldyBTdHlsZVNoZWV0KHtcbiAgICAgIGtleToga2V5LFxuICAgICAgY29udGFpbmVyOiBjb250YWluZXIsXG4gICAgICBub25jZTogb3B0aW9ucy5ub25jZSxcbiAgICAgIHNwZWVkeTogb3B0aW9ucy5zcGVlZHksXG4gICAgICBwcmVwZW5kOiBvcHRpb25zLnByZXBlbmQsXG4gICAgICBpbnNlcnRpb25Qb2ludDogb3B0aW9ucy5pbnNlcnRpb25Qb2ludFxuICAgIH0pLFxuICAgIG5vbmNlOiBvcHRpb25zLm5vbmNlLFxuICAgIGluc2VydGVkOiBpbnNlcnRlZCxcbiAgICByZWdpc3RlcmVkOiB7fSxcbiAgICBpbnNlcnQ6IF9pbnNlcnRcbiAgfTtcbiAgY2FjaGUuc2hlZXQuaHlkcmF0ZShub2Rlc1RvSHlkcmF0ZSk7XG4gIHJldHVybiBjYWNoZTtcbn07XG5cbmV4cG9ydCB7IGNyZWF0ZUNhY2hlIGFzIGRlZmF1bHQgfTtcbiIsICJ2YXIgaXNCcm93c2VyID0gdHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJztcblxuZnVuY3Rpb24gZ2V0UmVnaXN0ZXJlZFN0eWxlcyhyZWdpc3RlcmVkLCByZWdpc3RlcmVkU3R5bGVzLCBjbGFzc05hbWVzKSB7XG4gIHZhciByYXdDbGFzc05hbWUgPSAnJztcbiAgY2xhc3NOYW1lcy5zcGxpdCgnICcpLmZvckVhY2goZnVuY3Rpb24gKGNsYXNzTmFtZSkge1xuICAgIGlmIChyZWdpc3RlcmVkW2NsYXNzTmFtZV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmVnaXN0ZXJlZFN0eWxlcy5wdXNoKHJlZ2lzdGVyZWRbY2xhc3NOYW1lXSArIFwiO1wiKTtcbiAgICB9IGVsc2UgaWYgKGNsYXNzTmFtZSkge1xuICAgICAgcmF3Q2xhc3NOYW1lICs9IGNsYXNzTmFtZSArIFwiIFwiO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByYXdDbGFzc05hbWU7XG59XG52YXIgcmVnaXN0ZXJTdHlsZXMgPSBmdW5jdGlvbiByZWdpc3RlclN0eWxlcyhjYWNoZSwgc2VyaWFsaXplZCwgaXNTdHJpbmdUYWcpIHtcbiAgdmFyIGNsYXNzTmFtZSA9IGNhY2hlLmtleSArIFwiLVwiICsgc2VyaWFsaXplZC5uYW1lO1xuXG4gIGlmICggLy8gd2Ugb25seSBuZWVkIHRvIGFkZCB0aGUgc3R5bGVzIHRvIHRoZSByZWdpc3RlcmVkIGNhY2hlIGlmIHRoZVxuICAvLyBjbGFzcyBuYW1lIGNvdWxkIGJlIHVzZWQgZnVydGhlciBkb3duXG4gIC8vIHRoZSB0cmVlIGJ1dCBpZiBpdCdzIGEgc3RyaW5nIHRhZywgd2Uga25vdyBpdCB3b24ndFxuICAvLyBzbyB3ZSBkb24ndCBoYXZlIHRvIGFkZCBpdCB0byByZWdpc3RlcmVkIGNhY2hlLlxuICAvLyB0aGlzIGltcHJvdmVzIG1lbW9yeSB1c2FnZSBzaW5jZSB3ZSBjYW4gYXZvaWQgc3RvcmluZyB0aGUgd2hvbGUgc3R5bGUgc3RyaW5nXG4gIChpc1N0cmluZ1RhZyA9PT0gZmFsc2UgfHwgLy8gd2UgbmVlZCB0byBhbHdheXMgc3RvcmUgaXQgaWYgd2UncmUgaW4gY29tcGF0IG1vZGUgYW5kXG4gIC8vIGluIG5vZGUgc2luY2UgZW1vdGlvbi1zZXJ2ZXIgcmVsaWVzIG9uIHdoZXRoZXIgYSBzdHlsZSBpcyBpblxuICAvLyB0aGUgcmVnaXN0ZXJlZCBjYWNoZSB0byBrbm93IHdoZXRoZXIgYSBzdHlsZSBpcyBnbG9iYWwgb3Igbm90XG4gIC8vIGFsc28sIG5vdGUgdGhhdCB0aGlzIGNoZWNrIHdpbGwgYmUgZGVhZCBjb2RlIGVsaW1pbmF0ZWQgaW4gdGhlIGJyb3dzZXJcbiAgaXNCcm93c2VyID09PSBmYWxzZSAmJiBjYWNoZS5jb21wYXQgIT09IHVuZGVmaW5lZCkgJiYgY2FjaGUucmVnaXN0ZXJlZFtjbGFzc05hbWVdID09PSB1bmRlZmluZWQpIHtcbiAgICBjYWNoZS5yZWdpc3RlcmVkW2NsYXNzTmFtZV0gPSBzZXJpYWxpemVkLnN0eWxlcztcbiAgfVxufTtcbnZhciBpbnNlcnRTdHlsZXMgPSBmdW5jdGlvbiBpbnNlcnRTdHlsZXMoY2FjaGUsIHNlcmlhbGl6ZWQsIGlzU3RyaW5nVGFnKSB7XG4gIHJlZ2lzdGVyU3R5bGVzKGNhY2hlLCBzZXJpYWxpemVkLCBpc1N0cmluZ1RhZyk7XG4gIHZhciBjbGFzc05hbWUgPSBjYWNoZS5rZXkgKyBcIi1cIiArIHNlcmlhbGl6ZWQubmFtZTtcblxuICBpZiAoY2FjaGUuaW5zZXJ0ZWRbc2VyaWFsaXplZC5uYW1lXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdmFyIHN0eWxlc0ZvclNTUiA9ICcnO1xuICAgIHZhciBjdXJyZW50ID0gc2VyaWFsaXplZDtcblxuICAgIGRvIHtcbiAgICAgIHZhciBtYXliZVN0eWxlcyA9IGNhY2hlLmluc2VydChzZXJpYWxpemVkID09PSBjdXJyZW50ID8gXCIuXCIgKyBjbGFzc05hbWUgOiAnJywgY3VycmVudCwgY2FjaGUuc2hlZXQsIHRydWUpO1xuXG4gICAgICBpZiAoIWlzQnJvd3NlciAmJiBtYXliZVN0eWxlcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHN0eWxlc0ZvclNTUiArPSBtYXliZVN0eWxlcztcbiAgICAgIH1cblxuICAgICAgY3VycmVudCA9IGN1cnJlbnQubmV4dDtcbiAgICB9IHdoaWxlIChjdXJyZW50ICE9PSB1bmRlZmluZWQpO1xuXG4gICAgaWYgKCFpc0Jyb3dzZXIgJiYgc3R5bGVzRm9yU1NSLmxlbmd0aCAhPT0gMCkge1xuICAgICAgcmV0dXJuIHN0eWxlc0ZvclNTUjtcbiAgICB9XG4gIH1cbn07XG5cbmV4cG9ydCB7IGdldFJlZ2lzdGVyZWRTdHlsZXMsIGluc2VydFN0eWxlcywgcmVnaXN0ZXJTdHlsZXMgfTtcbiIsICIvKiBlc2xpbnQtZGlzYWJsZSAqL1xuLy8gSW5zcGlyZWQgYnkgaHR0cHM6Ly9naXRodWIuY29tL2dhcnljb3VydC9tdXJtdXJoYXNoLWpzXG4vLyBQb3J0ZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vYWFwcGxlYnkvc21oYXNoZXIvYmxvYi82MWEwNTMwZjI4Mjc3ZjJlODUwYmZjMzk2MDBjZTYxZDAyYjUxOGRlL3NyYy9NdXJtdXJIYXNoMi5jcHAjTDM3LUw4NlxuZnVuY3Rpb24gbXVybXVyMihzdHIpIHtcbiAgLy8gJ20nIGFuZCAncicgYXJlIG1peGluZyBjb25zdGFudHMgZ2VuZXJhdGVkIG9mZmxpbmUuXG4gIC8vIFRoZXkncmUgbm90IHJlYWxseSAnbWFnaWMnLCB0aGV5IGp1c3QgaGFwcGVuIHRvIHdvcmsgd2VsbC5cbiAgLy8gY29uc3QgbSA9IDB4NWJkMWU5OTU7XG4gIC8vIGNvbnN0IHIgPSAyNDtcbiAgLy8gSW5pdGlhbGl6ZSB0aGUgaGFzaFxuICB2YXIgaCA9IDA7IC8vIE1peCA0IGJ5dGVzIGF0IGEgdGltZSBpbnRvIHRoZSBoYXNoXG5cbiAgdmFyIGssXG4gICAgICBpID0gMCxcbiAgICAgIGxlbiA9IHN0ci5sZW5ndGg7XG5cbiAgZm9yICg7IGxlbiA+PSA0OyArK2ksIGxlbiAtPSA0KSB7XG4gICAgayA9IHN0ci5jaGFyQ29kZUF0KGkpICYgMHhmZiB8IChzdHIuY2hhckNvZGVBdCgrK2kpICYgMHhmZikgPDwgOCB8IChzdHIuY2hhckNvZGVBdCgrK2kpICYgMHhmZikgPDwgMTYgfCAoc3RyLmNoYXJDb2RlQXQoKytpKSAmIDB4ZmYpIDw8IDI0O1xuICAgIGsgPVxuICAgIC8qIE1hdGguaW11bChrLCBtKTogKi9cbiAgICAoayAmIDB4ZmZmZikgKiAweDViZDFlOTk1ICsgKChrID4+PiAxNikgKiAweGU5OTUgPDwgMTYpO1xuICAgIGsgXj1cbiAgICAvKiBrID4+PiByOiAqL1xuICAgIGsgPj4+IDI0O1xuICAgIGggPVxuICAgIC8qIE1hdGguaW11bChrLCBtKTogKi9cbiAgICAoayAmIDB4ZmZmZikgKiAweDViZDFlOTk1ICsgKChrID4+PiAxNikgKiAweGU5OTUgPDwgMTYpIF5cbiAgICAvKiBNYXRoLmltdWwoaCwgbSk6ICovXG4gICAgKGggJiAweGZmZmYpICogMHg1YmQxZTk5NSArICgoaCA+Pj4gMTYpICogMHhlOTk1IDw8IDE2KTtcbiAgfSAvLyBIYW5kbGUgdGhlIGxhc3QgZmV3IGJ5dGVzIG9mIHRoZSBpbnB1dCBhcnJheVxuXG5cbiAgc3dpdGNoIChsZW4pIHtcbiAgICBjYXNlIDM6XG4gICAgICBoIF49IChzdHIuY2hhckNvZGVBdChpICsgMikgJiAweGZmKSA8PCAxNjtcblxuICAgIGNhc2UgMjpcbiAgICAgIGggXj0gKHN0ci5jaGFyQ29kZUF0KGkgKyAxKSAmIDB4ZmYpIDw8IDg7XG5cbiAgICBjYXNlIDE6XG4gICAgICBoIF49IHN0ci5jaGFyQ29kZUF0KGkpICYgMHhmZjtcbiAgICAgIGggPVxuICAgICAgLyogTWF0aC5pbXVsKGgsIG0pOiAqL1xuICAgICAgKGggJiAweGZmZmYpICogMHg1YmQxZTk5NSArICgoaCA+Pj4gMTYpICogMHhlOTk1IDw8IDE2KTtcbiAgfSAvLyBEbyBhIGZldyBmaW5hbCBtaXhlcyBvZiB0aGUgaGFzaCB0byBlbnN1cmUgdGhlIGxhc3QgZmV3XG4gIC8vIGJ5dGVzIGFyZSB3ZWxsLWluY29ycG9yYXRlZC5cblxuXG4gIGggXj0gaCA+Pj4gMTM7XG4gIGggPVxuICAvKiBNYXRoLmltdWwoaCwgbSk6ICovXG4gIChoICYgMHhmZmZmKSAqIDB4NWJkMWU5OTUgKyAoKGggPj4+IDE2KSAqIDB4ZTk5NSA8PCAxNik7XG4gIHJldHVybiAoKGggXiBoID4+PiAxNSkgPj4+IDApLnRvU3RyaW5nKDM2KTtcbn1cblxuZXhwb3J0IHsgbXVybXVyMiBhcyBkZWZhdWx0IH07XG4iLCAidmFyIHVuaXRsZXNzS2V5cyA9IHtcbiAgYW5pbWF0aW9uSXRlcmF0aW9uQ291bnQ6IDEsXG4gIGFzcGVjdFJhdGlvOiAxLFxuICBib3JkZXJJbWFnZU91dHNldDogMSxcbiAgYm9yZGVySW1hZ2VTbGljZTogMSxcbiAgYm9yZGVySW1hZ2VXaWR0aDogMSxcbiAgYm94RmxleDogMSxcbiAgYm94RmxleEdyb3VwOiAxLFxuICBib3hPcmRpbmFsR3JvdXA6IDEsXG4gIGNvbHVtbkNvdW50OiAxLFxuICBjb2x1bW5zOiAxLFxuICBmbGV4OiAxLFxuICBmbGV4R3JvdzogMSxcbiAgZmxleFBvc2l0aXZlOiAxLFxuICBmbGV4U2hyaW5rOiAxLFxuICBmbGV4TmVnYXRpdmU6IDEsXG4gIGZsZXhPcmRlcjogMSxcbiAgZ3JpZFJvdzogMSxcbiAgZ3JpZFJvd0VuZDogMSxcbiAgZ3JpZFJvd1NwYW46IDEsXG4gIGdyaWRSb3dTdGFydDogMSxcbiAgZ3JpZENvbHVtbjogMSxcbiAgZ3JpZENvbHVtbkVuZDogMSxcbiAgZ3JpZENvbHVtblNwYW46IDEsXG4gIGdyaWRDb2x1bW5TdGFydDogMSxcbiAgbXNHcmlkUm93OiAxLFxuICBtc0dyaWRSb3dTcGFuOiAxLFxuICBtc0dyaWRDb2x1bW46IDEsXG4gIG1zR3JpZENvbHVtblNwYW46IDEsXG4gIGZvbnRXZWlnaHQ6IDEsXG4gIGxpbmVIZWlnaHQ6IDEsXG4gIG9wYWNpdHk6IDEsXG4gIG9yZGVyOiAxLFxuICBvcnBoYW5zOiAxLFxuICBzY2FsZTogMSxcbiAgdGFiU2l6ZTogMSxcbiAgd2lkb3dzOiAxLFxuICB6SW5kZXg6IDEsXG4gIHpvb206IDEsXG4gIFdlYmtpdExpbmVDbGFtcDogMSxcbiAgLy8gU1ZHLXJlbGF0ZWQgcHJvcGVydGllc1xuICBmaWxsT3BhY2l0eTogMSxcbiAgZmxvb2RPcGFjaXR5OiAxLFxuICBzdG9wT3BhY2l0eTogMSxcbiAgc3Ryb2tlRGFzaGFycmF5OiAxLFxuICBzdHJva2VEYXNob2Zmc2V0OiAxLFxuICBzdHJva2VNaXRlcmxpbWl0OiAxLFxuICBzdHJva2VPcGFjaXR5OiAxLFxuICBzdHJva2VXaWR0aDogMVxufTtcblxuZXhwb3J0IHsgdW5pdGxlc3NLZXlzIGFzIGRlZmF1bHQgfTtcbiIsICJpbXBvcnQgaGFzaFN0cmluZyBmcm9tICdAZW1vdGlvbi9oYXNoJztcbmltcG9ydCB1bml0bGVzcyBmcm9tICdAZW1vdGlvbi91bml0bGVzcyc7XG5pbXBvcnQgbWVtb2l6ZSBmcm9tICdAZW1vdGlvbi9tZW1vaXplJztcblxudmFyIGlzRGV2ZWxvcG1lbnQgPSBmYWxzZTtcblxudmFyIGh5cGhlbmF0ZVJlZ2V4ID0gL1tBLVpdfF5tcy9nO1xudmFyIGFuaW1hdGlvblJlZ2V4ID0gL19FTU9fKFteX10rPylfKFteXSo/KV9FTU9fL2c7XG5cbnZhciBpc0N1c3RvbVByb3BlcnR5ID0gZnVuY3Rpb24gaXNDdXN0b21Qcm9wZXJ0eShwcm9wZXJ0eSkge1xuICByZXR1cm4gcHJvcGVydHkuY2hhckNvZGVBdCgxKSA9PT0gNDU7XG59O1xuXG52YXIgaXNQcm9jZXNzYWJsZVZhbHVlID0gZnVuY3Rpb24gaXNQcm9jZXNzYWJsZVZhbHVlKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSAhPSBudWxsICYmIHR5cGVvZiB2YWx1ZSAhPT0gJ2Jvb2xlYW4nO1xufTtcblxudmFyIHByb2Nlc3NTdHlsZU5hbWUgPSAvKiAjX19QVVJFX18gKi9tZW1vaXplKGZ1bmN0aW9uIChzdHlsZU5hbWUpIHtcbiAgcmV0dXJuIGlzQ3VzdG9tUHJvcGVydHkoc3R5bGVOYW1lKSA/IHN0eWxlTmFtZSA6IHN0eWxlTmFtZS5yZXBsYWNlKGh5cGhlbmF0ZVJlZ2V4LCAnLSQmJykudG9Mb3dlckNhc2UoKTtcbn0pO1xuXG52YXIgcHJvY2Vzc1N0eWxlVmFsdWUgPSBmdW5jdGlvbiBwcm9jZXNzU3R5bGVWYWx1ZShrZXksIHZhbHVlKSB7XG4gIHN3aXRjaCAoa2V5KSB7XG4gICAgY2FzZSAnYW5pbWF0aW9uJzpcbiAgICBjYXNlICdhbmltYXRpb25OYW1lJzpcbiAgICAgIHtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICByZXR1cm4gdmFsdWUucmVwbGFjZShhbmltYXRpb25SZWdleCwgZnVuY3Rpb24gKG1hdGNoLCBwMSwgcDIpIHtcbiAgICAgICAgICAgIGN1cnNvciA9IHtcbiAgICAgICAgICAgICAgbmFtZTogcDEsXG4gICAgICAgICAgICAgIHN0eWxlczogcDIsXG4gICAgICAgICAgICAgIG5leHQ6IGN1cnNvclxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJldHVybiBwMTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICB9XG5cbiAgaWYgKHVuaXRsZXNzW2tleV0gIT09IDEgJiYgIWlzQ3VzdG9tUHJvcGVydHkoa2V5KSAmJiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInICYmIHZhbHVlICE9PSAwKSB7XG4gICAgcmV0dXJuIHZhbHVlICsgJ3B4JztcbiAgfVxuXG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbnZhciBub0NvbXBvbmVudFNlbGVjdG9yTWVzc2FnZSA9ICdDb21wb25lbnQgc2VsZWN0b3JzIGNhbiBvbmx5IGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCAnICsgJ0BlbW90aW9uL2JhYmVsLXBsdWdpbiwgdGhlIHN3YyBFbW90aW9uIHBsdWdpbiwgb3IgYW5vdGhlciBFbW90aW9uLWF3YXJlICcgKyAnY29tcGlsZXIgdHJhbnNmb3JtLic7XG5cbmZ1bmN0aW9uIGhhbmRsZUludGVycG9sYXRpb24obWVyZ2VkUHJvcHMsIHJlZ2lzdGVyZWQsIGludGVycG9sYXRpb24pIHtcbiAgaWYgKGludGVycG9sYXRpb24gPT0gbnVsbCkge1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIHZhciBjb21wb25lbnRTZWxlY3RvciA9IGludGVycG9sYXRpb247XG5cbiAgaWYgKGNvbXBvbmVudFNlbGVjdG9yLl9fZW1vdGlvbl9zdHlsZXMgIT09IHVuZGVmaW5lZCkge1xuXG4gICAgcmV0dXJuIGNvbXBvbmVudFNlbGVjdG9yO1xuICB9XG5cbiAgc3dpdGNoICh0eXBlb2YgaW50ZXJwb2xhdGlvbikge1xuICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgICB9XG5cbiAgICBjYXNlICdvYmplY3QnOlxuICAgICAge1xuICAgICAgICB2YXIga2V5ZnJhbWVzID0gaW50ZXJwb2xhdGlvbjtcblxuICAgICAgICBpZiAoa2V5ZnJhbWVzLmFuaW0gPT09IDEpIHtcbiAgICAgICAgICBjdXJzb3IgPSB7XG4gICAgICAgICAgICBuYW1lOiBrZXlmcmFtZXMubmFtZSxcbiAgICAgICAgICAgIHN0eWxlczoga2V5ZnJhbWVzLnN0eWxlcyxcbiAgICAgICAgICAgIG5leHQ6IGN1cnNvclxuICAgICAgICAgIH07XG4gICAgICAgICAgcmV0dXJuIGtleWZyYW1lcy5uYW1lO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHNlcmlhbGl6ZWRTdHlsZXMgPSBpbnRlcnBvbGF0aW9uO1xuXG4gICAgICAgIGlmIChzZXJpYWxpemVkU3R5bGVzLnN0eWxlcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdmFyIG5leHQgPSBzZXJpYWxpemVkU3R5bGVzLm5leHQ7XG5cbiAgICAgICAgICBpZiAobmV4dCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAvLyBub3QgdGhlIG1vc3QgZWZmaWNpZW50IHRoaW5nIGV2ZXIgYnV0IHRoaXMgaXMgYSBwcmV0dHkgcmFyZSBjYXNlXG4gICAgICAgICAgICAvLyBhbmQgdGhlcmUgd2lsbCBiZSB2ZXJ5IGZldyBpdGVyYXRpb25zIG9mIHRoaXMgZ2VuZXJhbGx5XG4gICAgICAgICAgICB3aGlsZSAobmV4dCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIGN1cnNvciA9IHtcbiAgICAgICAgICAgICAgICBuYW1lOiBuZXh0Lm5hbWUsXG4gICAgICAgICAgICAgICAgc3R5bGVzOiBuZXh0LnN0eWxlcyxcbiAgICAgICAgICAgICAgICBuZXh0OiBjdXJzb3JcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgbmV4dCA9IG5leHQubmV4dDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICB2YXIgc3R5bGVzID0gc2VyaWFsaXplZFN0eWxlcy5zdHlsZXMgKyBcIjtcIjtcblxuICAgICAgICAgIHJldHVybiBzdHlsZXM7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY3JlYXRlU3RyaW5nRnJvbU9iamVjdChtZXJnZWRQcm9wcywgcmVnaXN0ZXJlZCwgaW50ZXJwb2xhdGlvbik7XG4gICAgICB9XG5cbiAgICBjYXNlICdmdW5jdGlvbic6XG4gICAgICB7XG4gICAgICAgIGlmIChtZXJnZWRQcm9wcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdmFyIHByZXZpb3VzQ3Vyc29yID0gY3Vyc29yO1xuICAgICAgICAgIHZhciByZXN1bHQgPSBpbnRlcnBvbGF0aW9uKG1lcmdlZFByb3BzKTtcbiAgICAgICAgICBjdXJzb3IgPSBwcmV2aW91c0N1cnNvcjtcbiAgICAgICAgICByZXR1cm4gaGFuZGxlSW50ZXJwb2xhdGlvbihtZXJnZWRQcm9wcywgcmVnaXN0ZXJlZCwgcmVzdWx0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICB9IC8vIGZpbmFsaXplIHN0cmluZyB2YWx1ZXMgKHJlZ3VsYXIgc3RyaW5ncyBhbmQgZnVuY3Rpb25zIGludGVycG9sYXRlZCBpbnRvIGNzcyBjYWxscylcblxuXG4gIHZhciBhc1N0cmluZyA9IGludGVycG9sYXRpb247XG5cbiAgaWYgKHJlZ2lzdGVyZWQgPT0gbnVsbCkge1xuICAgIHJldHVybiBhc1N0cmluZztcbiAgfVxuXG4gIHZhciBjYWNoZWQgPSByZWdpc3RlcmVkW2FzU3RyaW5nXTtcbiAgcmV0dXJuIGNhY2hlZCAhPT0gdW5kZWZpbmVkID8gY2FjaGVkIDogYXNTdHJpbmc7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVN0cmluZ0Zyb21PYmplY3QobWVyZ2VkUHJvcHMsIHJlZ2lzdGVyZWQsIG9iaikge1xuICB2YXIgc3RyaW5nID0gJyc7XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkob2JqKSkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgb2JqLmxlbmd0aDsgaSsrKSB7XG4gICAgICBzdHJpbmcgKz0gaGFuZGxlSW50ZXJwb2xhdGlvbihtZXJnZWRQcm9wcywgcmVnaXN0ZXJlZCwgb2JqW2ldKSArIFwiO1wiO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBrZXkgaW4gb2JqKSB7XG4gICAgICB2YXIgdmFsdWUgPSBvYmpba2V5XTtcblxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgdmFyIGFzU3RyaW5nID0gdmFsdWU7XG5cbiAgICAgICAgaWYgKHJlZ2lzdGVyZWQgIT0gbnVsbCAmJiByZWdpc3RlcmVkW2FzU3RyaW5nXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgc3RyaW5nICs9IGtleSArIFwie1wiICsgcmVnaXN0ZXJlZFthc1N0cmluZ10gKyBcIn1cIjtcbiAgICAgICAgfSBlbHNlIGlmIChpc1Byb2Nlc3NhYmxlVmFsdWUoYXNTdHJpbmcpKSB7XG4gICAgICAgICAgc3RyaW5nICs9IHByb2Nlc3NTdHlsZU5hbWUoa2V5KSArIFwiOlwiICsgcHJvY2Vzc1N0eWxlVmFsdWUoa2V5LCBhc1N0cmluZykgKyBcIjtcIjtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGtleSA9PT0gJ05PX0NPTVBPTkVOVF9TRUxFQ1RPUicgJiYgaXNEZXZlbG9wbWVudCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihub0NvbXBvbmVudFNlbGVjdG9yTWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdHlwZW9mIHZhbHVlWzBdID09PSAnc3RyaW5nJyAmJiAocmVnaXN0ZXJlZCA9PSBudWxsIHx8IHJlZ2lzdGVyZWRbdmFsdWVbMF1dID09PSB1bmRlZmluZWQpKSB7XG4gICAgICAgICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IHZhbHVlLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgaWYgKGlzUHJvY2Vzc2FibGVWYWx1ZSh2YWx1ZVtfaV0pKSB7XG4gICAgICAgICAgICAgIHN0cmluZyArPSBwcm9jZXNzU3R5bGVOYW1lKGtleSkgKyBcIjpcIiArIHByb2Nlc3NTdHlsZVZhbHVlKGtleSwgdmFsdWVbX2ldKSArIFwiO1wiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YXIgaW50ZXJwb2xhdGVkID0gaGFuZGxlSW50ZXJwb2xhdGlvbihtZXJnZWRQcm9wcywgcmVnaXN0ZXJlZCwgdmFsdWUpO1xuXG4gICAgICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgICAgIGNhc2UgJ2FuaW1hdGlvbic6XG4gICAgICAgICAgICBjYXNlICdhbmltYXRpb25OYW1lJzpcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHN0cmluZyArPSBwcm9jZXNzU3R5bGVOYW1lKGtleSkgKyBcIjpcIiArIGludGVycG9sYXRlZCArIFwiO1wiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIHN0cmluZyArPSBrZXkgKyBcIntcIiArIGludGVycG9sYXRlZCArIFwifVwiO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN0cmluZztcbn1cblxudmFyIGxhYmVsUGF0dGVybiA9IC9sYWJlbDpcXHMqKFteXFxzO3tdKylcXHMqKDt8JCkvZztcbi8vIGtleWZyYW1lcyBhcmUgc3RvcmVkIG9uIHRoZSBTZXJpYWxpemVkU3R5bGVzIG9iamVjdCBhcyBhIGxpbmtlZCBsaXN0XG5cblxudmFyIGN1cnNvcjtcbmZ1bmN0aW9uIHNlcmlhbGl6ZVN0eWxlcyhhcmdzLCByZWdpc3RlcmVkLCBtZXJnZWRQcm9wcykge1xuICBpZiAoYXJncy5sZW5ndGggPT09IDEgJiYgdHlwZW9mIGFyZ3NbMF0gPT09ICdvYmplY3QnICYmIGFyZ3NbMF0gIT09IG51bGwgJiYgYXJnc1swXS5zdHlsZXMgIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBhcmdzWzBdO1xuICB9XG5cbiAgdmFyIHN0cmluZ01vZGUgPSB0cnVlO1xuICB2YXIgc3R5bGVzID0gJyc7XG4gIGN1cnNvciA9IHVuZGVmaW5lZDtcbiAgdmFyIHN0cmluZ3MgPSBhcmdzWzBdO1xuXG4gIGlmIChzdHJpbmdzID09IG51bGwgfHwgc3RyaW5ncy5yYXcgPT09IHVuZGVmaW5lZCkge1xuICAgIHN0cmluZ01vZGUgPSBmYWxzZTtcbiAgICBzdHlsZXMgKz0gaGFuZGxlSW50ZXJwb2xhdGlvbihtZXJnZWRQcm9wcywgcmVnaXN0ZXJlZCwgc3RyaW5ncyk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIGFzVGVtcGxhdGVTdHJpbmdzQXJyID0gc3RyaW5ncztcblxuICAgIHN0eWxlcyArPSBhc1RlbXBsYXRlU3RyaW5nc0FyclswXTtcbiAgfSAvLyB3ZSBzdGFydCBhdCAxIHNpbmNlIHdlJ3ZlIGFscmVhZHkgaGFuZGxlZCB0aGUgZmlyc3QgYXJnXG5cblxuICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3MubGVuZ3RoOyBpKyspIHtcbiAgICBzdHlsZXMgKz0gaGFuZGxlSW50ZXJwb2xhdGlvbihtZXJnZWRQcm9wcywgcmVnaXN0ZXJlZCwgYXJnc1tpXSk7XG5cbiAgICBpZiAoc3RyaW5nTW9kZSkge1xuICAgICAgdmFyIHRlbXBsYXRlU3RyaW5nc0FyciA9IHN0cmluZ3M7XG5cbiAgICAgIHN0eWxlcyArPSB0ZW1wbGF0ZVN0cmluZ3NBcnJbaV07XG4gICAgfVxuICB9XG5cblxuICBsYWJlbFBhdHRlcm4ubGFzdEluZGV4ID0gMDtcbiAgdmFyIGlkZW50aWZpZXJOYW1lID0gJyc7XG4gIHZhciBtYXRjaDsgLy8gaHR0cHM6Ly9lc2JlbmNoLmNvbS9iZW5jaC81YjgwOWMyY2YyOTQ5ODAwYTBmNjFmYjVcblxuICB3aGlsZSAoKG1hdGNoID0gbGFiZWxQYXR0ZXJuLmV4ZWMoc3R5bGVzKSkgIT09IG51bGwpIHtcbiAgICBpZGVudGlmaWVyTmFtZSArPSAnLScgKyBtYXRjaFsxXTtcbiAgfVxuXG4gIHZhciBuYW1lID0gaGFzaFN0cmluZyhzdHlsZXMpICsgaWRlbnRpZmllck5hbWU7XG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiBuYW1lLFxuICAgIHN0eWxlczogc3R5bGVzLFxuICAgIG5leHQ6IGN1cnNvclxuICB9O1xufVxuXG5leHBvcnQgeyBzZXJpYWxpemVTdHlsZXMgfTtcbiIsICJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbnZhciBpc0Jyb3dzZXIgPSB0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnO1xuXG52YXIgc3luY0ZhbGxiYWNrID0gZnVuY3Rpb24gc3luY0ZhbGxiYWNrKGNyZWF0ZSkge1xuICByZXR1cm4gY3JlYXRlKCk7XG59O1xuXG52YXIgdXNlSW5zZXJ0aW9uRWZmZWN0ID0gUmVhY3RbJ3VzZUluc2VydGlvbicgKyAnRWZmZWN0J10gPyBSZWFjdFsndXNlSW5zZXJ0aW9uJyArICdFZmZlY3QnXSA6IGZhbHNlO1xudmFyIHVzZUluc2VydGlvbkVmZmVjdEFsd2F5c1dpdGhTeW5jRmFsbGJhY2sgPSAhaXNCcm93c2VyID8gc3luY0ZhbGxiYWNrIDogdXNlSW5zZXJ0aW9uRWZmZWN0IHx8IHN5bmNGYWxsYmFjaztcbnZhciB1c2VJbnNlcnRpb25FZmZlY3RXaXRoTGF5b3V0RmFsbGJhY2sgPSB1c2VJbnNlcnRpb25FZmZlY3QgfHwgUmVhY3QudXNlTGF5b3V0RWZmZWN0O1xuXG5leHBvcnQgeyB1c2VJbnNlcnRpb25FZmZlY3RBbHdheXNXaXRoU3luY0ZhbGxiYWNrLCB1c2VJbnNlcnRpb25FZmZlY3RXaXRoTGF5b3V0RmFsbGJhY2sgfTtcbiIsICJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VDb250ZXh0LCBmb3J3YXJkUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IGNyZWF0ZUNhY2hlIGZyb20gJ0BlbW90aW9uL2NhY2hlJztcbmltcG9ydCBfZXh0ZW5kcyBmcm9tICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzJztcbmltcG9ydCB3ZWFrTWVtb2l6ZSBmcm9tICdAZW1vdGlvbi93ZWFrLW1lbW9pemUnO1xuaW1wb3J0IGhvaXN0Tm9uUmVhY3RTdGF0aWNzIGZyb20gJy4uL19pc29sYXRlZC1obnJzL2Rpc3QvZW1vdGlvbi1yZWFjdC1faXNvbGF0ZWQtaG5ycy5lc20uanMnO1xuaW1wb3J0IHsgZ2V0UmVnaXN0ZXJlZFN0eWxlcywgcmVnaXN0ZXJTdHlsZXMsIGluc2VydFN0eWxlcyB9IGZyb20gJ0BlbW90aW9uL3V0aWxzJztcbmltcG9ydCB7IHNlcmlhbGl6ZVN0eWxlcyB9IGZyb20gJ0BlbW90aW9uL3NlcmlhbGl6ZSc7XG5pbXBvcnQgeyB1c2VJbnNlcnRpb25FZmZlY3RBbHdheXNXaXRoU3luY0ZhbGxiYWNrIH0gZnJvbSAnQGVtb3Rpb24vdXNlLWluc2VydGlvbi1lZmZlY3Qtd2l0aC1mYWxsYmFja3MnO1xuXG52YXIgaXNEZXZlbG9wbWVudCA9IGZhbHNlO1xuXG52YXIgaXNCcm93c2VyID0gdHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJztcblxuLyogaW1wb3J0IHsgdHlwZSBFbW90aW9uQ2FjaGUgfSBmcm9tICdAZW1vdGlvbi91dGlscycgKi9cbnZhciBFbW90aW9uQ2FjaGVDb250ZXh0XG4vKjogUmVhY3QuQ29udGV4dDxFbW90aW9uQ2FjaGUgfCBudWxsPiAqL1xuPSAvKiAjX19QVVJFX18gKi9SZWFjdC5jcmVhdGVDb250ZXh0KCAvLyB3ZSdyZSBkb2luZyB0aGlzIHRvIGF2b2lkIHByZWNvbnN0cnVjdCdzIGRlYWQgY29kZSBlbGltaW5hdGlvbiBpbiB0aGlzIG9uZSBjYXNlXG4vLyBiZWNhdXNlIHRoaXMgbW9kdWxlIGlzIHByaW1hcmlseSBpbnRlbmRlZCBmb3IgdGhlIGJyb3dzZXIgYW5kIG5vZGVcbi8vIGJ1dCBpdCdzIGFsc28gcmVxdWlyZWQgaW4gcmVhY3QgbmF0aXZlIGFuZCBzaW1pbGFyIGVudmlyb25tZW50cyBzb21ldGltZXNcbi8vIGFuZCB3ZSBjb3VsZCBoYXZlIGEgc3BlY2lhbCBidWlsZCBqdXN0IGZvciB0aGF0XG4vLyBidXQgdGhpcyBpcyBtdWNoIGVhc2llciBhbmQgdGhlIG5hdGl2ZSBwYWNrYWdlc1xuLy8gbWlnaHQgdXNlIGEgZGlmZmVyZW50IHRoZW1lIGNvbnRleHQgaW4gdGhlIGZ1dHVyZSBhbnl3YXlcbnR5cGVvZiBIVE1MRWxlbWVudCAhPT0gJ3VuZGVmaW5lZCcgPyAvKiAjX19QVVJFX18gKi9jcmVhdGVDYWNoZSh7XG4gIGtleTogJ2Nzcydcbn0pIDogbnVsbCk7XG5cbnZhciBDYWNoZVByb3ZpZGVyID0gRW1vdGlvbkNhY2hlQ29udGV4dC5Qcm92aWRlcjtcbnZhciBfX3Vuc2FmZV91c2VFbW90aW9uQ2FjaGUgPSBmdW5jdGlvbiB1c2VFbW90aW9uQ2FjaGUoKVxuLyo6IEVtb3Rpb25DYWNoZSB8IG51bGwqL1xue1xuICByZXR1cm4gdXNlQ29udGV4dChFbW90aW9uQ2FjaGVDb250ZXh0KTtcbn07XG5cbnZhciB3aXRoRW1vdGlvbkNhY2hlID0gZnVuY3Rpb24gd2l0aEVtb3Rpb25DYWNoZVxuLyogPFByb3BzLCBSZWY6IFJlYWN0LlJlZjwqPj4gKi9cbihmdW5jXG4vKjogKHByb3BzOiBQcm9wcywgY2FjaGU6IEVtb3Rpb25DYWNoZSwgcmVmOiBSZWYpID0+IFJlYWN0Lk5vZGUgKi9cbilcbi8qOiBSZWFjdC5BYnN0cmFjdENvbXBvbmVudDxQcm9wcz4gKi9cbntcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9mb3J3YXJkUmVmKGZ1bmN0aW9uIChwcm9wc1xuICAvKjogUHJvcHMgKi9cbiAgLCByZWZcbiAgLyo6IFJlZiAqL1xuICApIHtcbiAgICAvLyB0aGUgY2FjaGUgd2lsbCBuZXZlciBiZSBudWxsIGluIHRoZSBicm93c2VyXG4gICAgdmFyIGNhY2hlID0gdXNlQ29udGV4dChFbW90aW9uQ2FjaGVDb250ZXh0KTtcbiAgICByZXR1cm4gZnVuYyhwcm9wcywgY2FjaGUsIHJlZik7XG4gIH0pO1xufTtcblxuaWYgKCFpc0Jyb3dzZXIpIHtcbiAgd2l0aEVtb3Rpb25DYWNoZSA9IGZ1bmN0aW9uIHdpdGhFbW90aW9uQ2FjaGVcbiAgLyogPFByb3BzPiAqL1xuICAoZnVuY1xuICAvKjogKHByb3BzOiBQcm9wcywgY2FjaGU6IEVtb3Rpb25DYWNoZSkgPT4gUmVhY3QuTm9kZSAqL1xuICApXG4gIC8qOiBSZWFjdC5TdGF0ZWxlc3NGdW5jdGlvbmFsQ29tcG9uZW50PFByb3BzPiAqL1xuICB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChwcm9wc1xuICAgIC8qOiBQcm9wcyAqL1xuICAgICkge1xuICAgICAgdmFyIGNhY2hlID0gdXNlQ29udGV4dChFbW90aW9uQ2FjaGVDb250ZXh0KTtcblxuICAgICAgaWYgKGNhY2hlID09PSBudWxsKSB7XG4gICAgICAgIC8vIHllcywgd2UncmUgcG90ZW50aWFsbHkgY3JlYXRpbmcgdGhpcyBvbiBldmVyeSByZW5kZXJcbiAgICAgICAgLy8gaXQgZG9lc24ndCBhY3R1YWxseSBtYXR0ZXIgdGhvdWdoIHNpbmNlIGl0J3Mgb25seSBvbiB0aGUgc2VydmVyXG4gICAgICAgIC8vIHNvIHRoZXJlIHdpbGwgb25seSBldmVyeSBiZSBhIHNpbmdsZSByZW5kZXJcbiAgICAgICAgLy8gdGhhdCBjb3VsZCBjaGFuZ2UgaW4gdGhlIGZ1dHVyZSBiZWNhdXNlIG9mIHN1c3BlbnNlIGFuZCBldGMuIGJ1dCBmb3Igbm93LFxuICAgICAgICAvLyB0aGlzIHdvcmtzIGFuZCBpIGRvbid0IHdhbnQgdG8gb3B0aW1pc2UgZm9yIGEgZnV0dXJlIHRoaW5nIHRoYXQgd2UgYXJlbid0IHN1cmUgYWJvdXRcbiAgICAgICAgY2FjaGUgPSBjcmVhdGVDYWNoZSh7XG4gICAgICAgICAga2V5OiAnY3NzJ1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KEVtb3Rpb25DYWNoZUNvbnRleHQuUHJvdmlkZXIsIHtcbiAgICAgICAgICB2YWx1ZTogY2FjaGVcbiAgICAgICAgfSwgZnVuYyhwcm9wcywgY2FjaGUpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBmdW5jKHByb3BzLCBjYWNoZSk7XG4gICAgICB9XG4gICAgfTtcbiAgfTtcbn1cblxudmFyIFRoZW1lQ29udGV4dCA9IC8qICNfX1BVUkVfXyAqL1JlYWN0LmNyZWF0ZUNvbnRleHQoe30pO1xuXG52YXIgdXNlVGhlbWUgPSBmdW5jdGlvbiB1c2VUaGVtZSgpIHtcbiAgcmV0dXJuIFJlYWN0LnVzZUNvbnRleHQoVGhlbWVDb250ZXh0KTtcbn07XG5cbnZhciBnZXRUaGVtZSA9IGZ1bmN0aW9uIGdldFRoZW1lKG91dGVyVGhlbWVcbi8qOiBPYmplY3QgKi9cbiwgdGhlbWVcbi8qOiBPYmplY3QgfCAoT2JqZWN0ID0+IE9iamVjdCkgKi9cbikge1xuICBpZiAodHlwZW9mIHRoZW1lID09PSAnZnVuY3Rpb24nKSB7XG4gICAgdmFyIG1lcmdlZFRoZW1lID0gdGhlbWUob3V0ZXJUaGVtZSk7XG5cbiAgICByZXR1cm4gbWVyZ2VkVGhlbWU7XG4gIH1cblxuICByZXR1cm4gX2V4dGVuZHMoe30sIG91dGVyVGhlbWUsIHRoZW1lKTtcbn07XG5cbnZhciBjcmVhdGVDYWNoZVdpdGhUaGVtZSA9IC8qICNfX1BVUkVfXyAqL3dlYWtNZW1vaXplKGZ1bmN0aW9uIChvdXRlclRoZW1lKSB7XG4gIHJldHVybiB3ZWFrTWVtb2l6ZShmdW5jdGlvbiAodGhlbWUpIHtcbiAgICByZXR1cm4gZ2V0VGhlbWUob3V0ZXJUaGVtZSwgdGhlbWUpO1xuICB9KTtcbn0pO1xuLypcbnR5cGUgVGhlbWVQcm92aWRlclByb3BzID0ge1xuICB0aGVtZTogT2JqZWN0IHwgKE9iamVjdCA9PiBPYmplY3QpLFxuICBjaGlsZHJlbjogUmVhY3QuTm9kZVxufVxuKi9cblxudmFyIFRoZW1lUHJvdmlkZXIgPSBmdW5jdGlvbiBUaGVtZVByb3ZpZGVyKHByb3BzXG4vKjogVGhlbWVQcm92aWRlclByb3BzICovXG4pIHtcbiAgdmFyIHRoZW1lID0gUmVhY3QudXNlQ29udGV4dChUaGVtZUNvbnRleHQpO1xuXG4gIGlmIChwcm9wcy50aGVtZSAhPT0gdGhlbWUpIHtcbiAgICB0aGVtZSA9IGNyZWF0ZUNhY2hlV2l0aFRoZW1lKHRoZW1lKShwcm9wcy50aGVtZSk7XG4gIH1cblxuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoVGhlbWVDb250ZXh0LlByb3ZpZGVyLCB7XG4gICAgdmFsdWU6IHRoZW1lXG4gIH0sIHByb3BzLmNoaWxkcmVuKTtcbn07XG5mdW5jdGlvbiB3aXRoVGhlbWVcbi8qIDxDb25maWc6IHt9PiAqL1xuKENvbXBvbmVudFxuLyo6IFJlYWN0LkFic3RyYWN0Q29tcG9uZW50PENvbmZpZz4gKi9cbilcbi8qOiBSZWFjdC5BYnN0cmFjdENvbXBvbmVudDwkRGlmZjxDb25maWcsIHsgdGhlbWU6IE9iamVjdCB9Pj4gKi9cbntcbiAgdmFyIGNvbXBvbmVudE5hbWUgPSBDb21wb25lbnQuZGlzcGxheU5hbWUgfHwgQ29tcG9uZW50Lm5hbWUgfHwgJ0NvbXBvbmVudCc7XG5cbiAgdmFyIHJlbmRlciA9IGZ1bmN0aW9uIHJlbmRlcihwcm9wcywgcmVmKSB7XG4gICAgdmFyIHRoZW1lID0gUmVhY3QudXNlQ29udGV4dChUaGVtZUNvbnRleHQpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChDb21wb25lbnQsIF9leHRlbmRzKHtcbiAgICAgIHRoZW1lOiB0aGVtZSxcbiAgICAgIHJlZjogcmVmXG4gICAgfSwgcHJvcHMpKTtcbiAgfTtcblxuICB2YXIgV2l0aFRoZW1lID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYocmVuZGVyKTtcbiAgV2l0aFRoZW1lLmRpc3BsYXlOYW1lID0gXCJXaXRoVGhlbWUoXCIgKyBjb21wb25lbnROYW1lICsgXCIpXCI7XG4gIHJldHVybiBob2lzdE5vblJlYWN0U3RhdGljcyhXaXRoVGhlbWUsIENvbXBvbmVudCk7XG59XG5cbnZhciBoYXNPd24gPSB7fS5oYXNPd25Qcm9wZXJ0eTtcblxudmFyIHR5cGVQcm9wTmFtZSA9ICdfX0VNT1RJT05fVFlQRV9QTEVBU0VfRE9fTk9UX1VTRV9fJztcbnZhciBjcmVhdGVFbW90aW9uUHJvcHMgPSBmdW5jdGlvbiBjcmVhdGVFbW90aW9uUHJvcHModHlwZVxuLyo6IFJlYWN0LkVsZW1lbnRUeXBlICovXG4sIHByb3BzXG4vKjogT2JqZWN0ICovXG4pIHtcblxuICB2YXIgbmV3UHJvcHNcbiAgLyo6IGFueSAqL1xuICA9IHt9O1xuXG4gIGZvciAodmFyIGtleSBpbiBwcm9wcykge1xuICAgIGlmIChoYXNPd24uY2FsbChwcm9wcywga2V5KSkge1xuICAgICAgbmV3UHJvcHNba2V5XSA9IHByb3BzW2tleV07XG4gICAgfVxuICB9XG5cbiAgbmV3UHJvcHNbdHlwZVByb3BOYW1lXSA9IHR5cGU7IC8vIFJ1bnRpbWUgbGFiZWxpbmcgaXMgYW4gb3B0LWluIGZlYXR1cmUgYmVjYXVzZTpcblxuICByZXR1cm4gbmV3UHJvcHM7XG59O1xuXG52YXIgSW5zZXJ0aW9uID0gZnVuY3Rpb24gSW5zZXJ0aW9uKF9yZWYpIHtcbiAgdmFyIGNhY2hlID0gX3JlZi5jYWNoZSxcbiAgICAgIHNlcmlhbGl6ZWQgPSBfcmVmLnNlcmlhbGl6ZWQsXG4gICAgICBpc1N0cmluZ1RhZyA9IF9yZWYuaXNTdHJpbmdUYWc7XG4gIHJlZ2lzdGVyU3R5bGVzKGNhY2hlLCBzZXJpYWxpemVkLCBpc1N0cmluZ1RhZyk7XG4gIHZhciBydWxlcyA9IHVzZUluc2VydGlvbkVmZmVjdEFsd2F5c1dpdGhTeW5jRmFsbGJhY2soZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBpbnNlcnRTdHlsZXMoY2FjaGUsIHNlcmlhbGl6ZWQsIGlzU3RyaW5nVGFnKTtcbiAgfSk7XG5cbiAgaWYgKCFpc0Jyb3dzZXIgJiYgcnVsZXMgIT09IHVuZGVmaW5lZCkge1xuICAgIHZhciBfcmVmMjtcblxuICAgIHZhciBzZXJpYWxpemVkTmFtZXMgPSBzZXJpYWxpemVkLm5hbWU7XG4gICAgdmFyIG5leHQgPSBzZXJpYWxpemVkLm5leHQ7XG5cbiAgICB3aGlsZSAobmV4dCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBzZXJpYWxpemVkTmFtZXMgKz0gJyAnICsgbmV4dC5uYW1lO1xuICAgICAgbmV4dCA9IG5leHQubmV4dDtcbiAgICB9XG5cbiAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiLCAoX3JlZjIgPSB7fSwgX3JlZjJbXCJkYXRhLWVtb3Rpb25cIl0gPSBjYWNoZS5rZXkgKyBcIiBcIiArIHNlcmlhbGl6ZWROYW1lcywgX3JlZjIuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwgPSB7XG4gICAgICBfX2h0bWw6IHJ1bGVzXG4gICAgfSwgX3JlZjIubm9uY2UgPSBjYWNoZS5zaGVldC5ub25jZSwgX3JlZjIpKTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufTtcblxudmFyIEVtb3Rpb24gPSAvKiAjX19QVVJFX18gKi93aXRoRW1vdGlvbkNhY2hlKFxuLyogPGFueSwgYW55PiAqL1xuZnVuY3Rpb24gKHByb3BzLCBjYWNoZSwgcmVmKSB7XG4gIHZhciBjc3NQcm9wID0gcHJvcHMuY3NzOyAvLyBzbyB0aGF0IHVzaW5nIGBjc3NgIGZyb20gYGVtb3Rpb25gIGFuZCBwYXNzaW5nIHRoZSByZXN1bHQgdG8gdGhlIGNzcyBwcm9wIHdvcmtzXG4gIC8vIG5vdCBwYXNzaW5nIHRoZSByZWdpc3RlcmVkIGNhY2hlIHRvIHNlcmlhbGl6ZVN0eWxlcyBiZWNhdXNlIGl0IHdvdWxkXG4gIC8vIG1ha2UgY2VydGFpbiBiYWJlbCBvcHRpbWlzYXRpb25zIG5vdCBwb3NzaWJsZVxuXG4gIGlmICh0eXBlb2YgY3NzUHJvcCA9PT0gJ3N0cmluZycgJiYgY2FjaGUucmVnaXN0ZXJlZFtjc3NQcm9wXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY3NzUHJvcCA9IGNhY2hlLnJlZ2lzdGVyZWRbY3NzUHJvcF07XG4gIH1cblxuICB2YXIgV3JhcHBlZENvbXBvbmVudCA9IHByb3BzW3R5cGVQcm9wTmFtZV07XG4gIHZhciByZWdpc3RlcmVkU3R5bGVzID0gW2Nzc1Byb3BdO1xuICB2YXIgY2xhc3NOYW1lID0gJyc7XG5cbiAgaWYgKHR5cGVvZiBwcm9wcy5jbGFzc05hbWUgPT09ICdzdHJpbmcnKSB7XG4gICAgY2xhc3NOYW1lID0gZ2V0UmVnaXN0ZXJlZFN0eWxlcyhjYWNoZS5yZWdpc3RlcmVkLCByZWdpc3RlcmVkU3R5bGVzLCBwcm9wcy5jbGFzc05hbWUpO1xuICB9IGVsc2UgaWYgKHByb3BzLmNsYXNzTmFtZSAhPSBudWxsKSB7XG4gICAgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lICsgXCIgXCI7XG4gIH1cblxuICB2YXIgc2VyaWFsaXplZCA9IHNlcmlhbGl6ZVN0eWxlcyhyZWdpc3RlcmVkU3R5bGVzLCB1bmRlZmluZWQsIFJlYWN0LnVzZUNvbnRleHQoVGhlbWVDb250ZXh0KSk7XG5cbiAgY2xhc3NOYW1lICs9IGNhY2hlLmtleSArIFwiLVwiICsgc2VyaWFsaXplZC5uYW1lO1xuICB2YXIgbmV3UHJvcHMgPSB7fTtcblxuICBmb3IgKHZhciBrZXkgaW4gcHJvcHMpIHtcbiAgICBpZiAoaGFzT3duLmNhbGwocHJvcHMsIGtleSkgJiYga2V5ICE9PSAnY3NzJyAmJiBrZXkgIT09IHR5cGVQcm9wTmFtZSAmJiAoIWlzRGV2ZWxvcG1lbnQgKSkge1xuICAgICAgbmV3UHJvcHNba2V5XSA9IHByb3BzW2tleV07XG4gICAgfVxuICB9XG5cbiAgbmV3UHJvcHMuY2xhc3NOYW1lID0gY2xhc3NOYW1lO1xuXG4gIGlmIChyZWYpIHtcbiAgICBuZXdQcm9wcy5yZWYgPSByZWY7XG4gIH1cblxuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KEluc2VydGlvbiwge1xuICAgIGNhY2hlOiBjYWNoZSxcbiAgICBzZXJpYWxpemVkOiBzZXJpYWxpemVkLFxuICAgIGlzU3RyaW5nVGFnOiB0eXBlb2YgV3JhcHBlZENvbXBvbmVudCA9PT0gJ3N0cmluZydcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFdyYXBwZWRDb21wb25lbnQsIG5ld1Byb3BzKSk7XG59KTtcblxudmFyIEVtb3Rpb24kMSA9IEVtb3Rpb247XG5cbmV4cG9ydCB7IENhY2hlUHJvdmlkZXIgYXMgQywgRW1vdGlvbiQxIGFzIEUsIFRoZW1lQ29udGV4dCBhcyBULCBfX3Vuc2FmZV91c2VFbW90aW9uQ2FjaGUgYXMgXywgaXNEZXZlbG9wbWVudCBhcyBhLCBUaGVtZVByb3ZpZGVyIGFzIGIsIGNyZWF0ZUVtb3Rpb25Qcm9wcyBhcyBjLCB3aXRoVGhlbWUgYXMgZCwgaGFzT3duIGFzIGgsIGlzQnJvd3NlciBhcyBpLCB1c2VUaGVtZSBhcyB1LCB3aXRoRW1vdGlvbkNhY2hlIGFzIHcgfTtcbiIsICJpbXBvcnQgeyBoIGFzIGhhc093biwgRSBhcyBFbW90aW9uLCBjIGFzIGNyZWF0ZUVtb3Rpb25Qcm9wcywgdyBhcyB3aXRoRW1vdGlvbkNhY2hlLCBUIGFzIFRoZW1lQ29udGV4dCwgaSBhcyBpc0Jyb3dzZXIsIGEgYXMgaXNEZXZlbG9wbWVudCB9IGZyb20gJy4vZW1vdGlvbi1lbGVtZW50LWI0YzhiMjY1LmVzbS5qcyc7XG5leHBvcnQgeyBDIGFzIENhY2hlUHJvdmlkZXIsIFQgYXMgVGhlbWVDb250ZXh0LCBiIGFzIFRoZW1lUHJvdmlkZXIsIF8gYXMgX191bnNhZmVfdXNlRW1vdGlvbkNhY2hlLCB1IGFzIHVzZVRoZW1lLCB3IGFzIHdpdGhFbW90aW9uQ2FjaGUsIGQgYXMgd2l0aFRoZW1lIH0gZnJvbSAnLi9lbW90aW9uLWVsZW1lbnQtYjRjOGIyNjUuZXNtLmpzJztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGluc2VydFN0eWxlcywgcmVnaXN0ZXJTdHlsZXMsIGdldFJlZ2lzdGVyZWRTdHlsZXMgfSBmcm9tICdAZW1vdGlvbi91dGlscyc7XG5pbXBvcnQgeyB1c2VJbnNlcnRpb25FZmZlY3RXaXRoTGF5b3V0RmFsbGJhY2ssIHVzZUluc2VydGlvbkVmZmVjdEFsd2F5c1dpdGhTeW5jRmFsbGJhY2sgfSBmcm9tICdAZW1vdGlvbi91c2UtaW5zZXJ0aW9uLWVmZmVjdC13aXRoLWZhbGxiYWNrcyc7XG5pbXBvcnQgeyBzZXJpYWxpemVTdHlsZXMgfSBmcm9tICdAZW1vdGlvbi9zZXJpYWxpemUnO1xuaW1wb3J0ICdAZW1vdGlvbi9jYWNoZSc7XG5pbXBvcnQgJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXh0ZW5kcyc7XG5pbXBvcnQgJ0BlbW90aW9uL3dlYWstbWVtb2l6ZSc7XG5pbXBvcnQgJy4uL19pc29sYXRlZC1obnJzL2Rpc3QvZW1vdGlvbi1yZWFjdC1faXNvbGF0ZWQtaG5ycy5lc20uanMnO1xuaW1wb3J0ICdob2lzdC1ub24tcmVhY3Qtc3RhdGljcyc7XG5cbnZhciBqc3hcbi8qOiB0eXBlb2YgUmVhY3QuY3JlYXRlRWxlbWVudCAqL1xuPSBmdW5jdGlvbiBqc3hcbi8qOiB0eXBlb2YgUmVhY3QuY3JlYXRlRWxlbWVudCAqL1xuKHR5cGVcbi8qOiBSZWFjdC5FbGVtZW50VHlwZSAqL1xuLCBwcm9wc1xuLyo6IE9iamVjdCAqL1xuKSB7XG4gIHZhciBhcmdzID0gYXJndW1lbnRzO1xuXG4gIGlmIChwcm9wcyA9PSBudWxsIHx8ICFoYXNPd24uY2FsbChwcm9wcywgJ2NzcycpKSB7XG4gICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQuYXBwbHkodW5kZWZpbmVkLCBhcmdzKTtcbiAgfVxuXG4gIHZhciBhcmdzTGVuZ3RoID0gYXJncy5sZW5ndGg7XG4gIHZhciBjcmVhdGVFbGVtZW50QXJnQXJyYXkgPSBuZXcgQXJyYXkoYXJnc0xlbmd0aCk7XG4gIGNyZWF0ZUVsZW1lbnRBcmdBcnJheVswXSA9IEVtb3Rpb247XG4gIGNyZWF0ZUVsZW1lbnRBcmdBcnJheVsxXSA9IGNyZWF0ZUVtb3Rpb25Qcm9wcyh0eXBlLCBwcm9wcyk7XG5cbiAgZm9yICh2YXIgaSA9IDI7IGkgPCBhcmdzTGVuZ3RoOyBpKyspIHtcbiAgICBjcmVhdGVFbGVtZW50QXJnQXJyYXlbaV0gPSBhcmdzW2ldO1xuICB9XG5cbiAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQuYXBwbHkobnVsbCwgY3JlYXRlRWxlbWVudEFyZ0FycmF5KTtcbn07XG5cbi8vIGluaXRpYWwgcmVuZGVyIGZyb20gYnJvd3NlciwgaW5zZXJ0QmVmb3JlIGNvbnRleHQuc2hlZXQudGFnc1swXSBvciBpZiBhIHN0eWxlIGhhc24ndCBiZWVuIGluc2VydGVkIHRoZXJlIHlldCwgYXBwZW5kQ2hpbGRcbi8vIGluaXRpYWwgY2xpZW50LXNpZGUgcmVuZGVyIGZyb20gU1NSLCB1c2UgcGxhY2Ugb2YgaHlkcmF0aW5nIHRhZ1xuXG52YXIgR2xvYmFsXG4vKjogUmVhY3QuQWJzdHJhY3RDb21wb25lbnQ8XG5HbG9iYWxQcm9wc1xuPiAqL1xuPSAvKiAjX19QVVJFX18gKi93aXRoRW1vdGlvbkNhY2hlKGZ1bmN0aW9uIChwcm9wc1xuLyo6IEdsb2JhbFByb3BzICovXG4sIGNhY2hlKSB7XG5cbiAgdmFyIHN0eWxlcyA9IHByb3BzLnN0eWxlcztcbiAgdmFyIHNlcmlhbGl6ZWQgPSBzZXJpYWxpemVTdHlsZXMoW3N0eWxlc10sIHVuZGVmaW5lZCwgUmVhY3QudXNlQ29udGV4dChUaGVtZUNvbnRleHQpKTtcblxuICBpZiAoIWlzQnJvd3Nlcikge1xuICAgIHZhciBfcmVmO1xuXG4gICAgdmFyIHNlcmlhbGl6ZWROYW1lcyA9IHNlcmlhbGl6ZWQubmFtZTtcbiAgICB2YXIgc2VyaWFsaXplZFN0eWxlcyA9IHNlcmlhbGl6ZWQuc3R5bGVzO1xuICAgIHZhciBuZXh0ID0gc2VyaWFsaXplZC5uZXh0O1xuXG4gICAgd2hpbGUgKG5leHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgc2VyaWFsaXplZE5hbWVzICs9ICcgJyArIG5leHQubmFtZTtcbiAgICAgIHNlcmlhbGl6ZWRTdHlsZXMgKz0gbmV4dC5zdHlsZXM7XG4gICAgICBuZXh0ID0gbmV4dC5uZXh0O1xuICAgIH1cblxuICAgIHZhciBzaG91bGRDYWNoZSA9IGNhY2hlLmNvbXBhdCA9PT0gdHJ1ZTtcbiAgICB2YXIgcnVsZXMgPSBjYWNoZS5pbnNlcnQoXCJcIiwge1xuICAgICAgbmFtZTogc2VyaWFsaXplZE5hbWVzLFxuICAgICAgc3R5bGVzOiBzZXJpYWxpemVkU3R5bGVzXG4gICAgfSwgY2FjaGUuc2hlZXQsIHNob3VsZENhY2hlKTtcblxuICAgIGlmIChzaG91bGRDYWNoZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIiwgKF9yZWYgPSB7fSwgX3JlZltcImRhdGEtZW1vdGlvblwiXSA9IGNhY2hlLmtleSArIFwiLWdsb2JhbCBcIiArIHNlcmlhbGl6ZWROYW1lcywgX3JlZi5kYW5nZXJvdXNseVNldElubmVySFRNTCA9IHtcbiAgICAgIF9faHRtbDogcnVsZXNcbiAgICB9LCBfcmVmLm5vbmNlID0gY2FjaGUuc2hlZXQubm9uY2UsIF9yZWYpKTtcbiAgfSAvLyB5ZXMsIGkga25vdyB0aGVzZSBob29rcyBhcmUgdXNlZCBjb25kaXRpb25hbGx5XG4gIC8vIGJ1dCBpdCBpcyBiYXNlZCBvbiBhIGNvbnN0YW50IHRoYXQgd2lsbCBuZXZlciBjaGFuZ2UgYXQgcnVudGltZVxuICAvLyBpdCdzIGVmZmVjdGl2ZWx5IGxpa2UgaGF2aW5nIHR3byBpbXBsZW1lbnRhdGlvbnMgYW5kIHN3aXRjaGluZyB0aGVtIG91dFxuICAvLyBzbyBpdCdzIG5vdCBhY3R1YWxseSBicmVha2luZyBhbnl0aGluZ1xuXG5cbiAgdmFyIHNoZWV0UmVmID0gUmVhY3QudXNlUmVmKCk7XG4gIHVzZUluc2VydGlvbkVmZmVjdFdpdGhMYXlvdXRGYWxsYmFjayhmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGtleSA9IGNhY2hlLmtleSArIFwiLWdsb2JhbFwiOyAvLyB1c2UgY2FzZSBvZiBodHRwczovL2dpdGh1Yi5jb20vZW1vdGlvbi1qcy9lbW90aW9uL2lzc3Vlcy8yNjc1XG5cbiAgICB2YXIgc2hlZXQgPSBuZXcgY2FjaGUuc2hlZXQuY29uc3RydWN0b3Ioe1xuICAgICAga2V5OiBrZXksXG4gICAgICBub25jZTogY2FjaGUuc2hlZXQubm9uY2UsXG4gICAgICBjb250YWluZXI6IGNhY2hlLnNoZWV0LmNvbnRhaW5lcixcbiAgICAgIHNwZWVkeTogY2FjaGUuc2hlZXQuaXNTcGVlZHlcbiAgICB9KTtcbiAgICB2YXIgcmVoeWRyYXRpbmcgPSBmYWxzZTtcbiAgICB2YXIgbm9kZVxuICAgIC8qOiBIVE1MU3R5bGVFbGVtZW50IHwgbnVsbCovXG4gICAgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwic3R5bGVbZGF0YS1lbW90aW9uPVxcXCJcIiArIGtleSArIFwiIFwiICsgc2VyaWFsaXplZC5uYW1lICsgXCJcXFwiXVwiKTtcblxuICAgIGlmIChjYWNoZS5zaGVldC50YWdzLmxlbmd0aCkge1xuICAgICAgc2hlZXQuYmVmb3JlID0gY2FjaGUuc2hlZXQudGFnc1swXTtcbiAgICB9XG5cbiAgICBpZiAobm9kZSAhPT0gbnVsbCkge1xuICAgICAgcmVoeWRyYXRpbmcgPSB0cnVlOyAvLyBjbGVhciB0aGUgaGFzaCBzbyB0aGlzIG5vZGUgd29uJ3QgYmUgcmVjb2duaXphYmxlIGFzIHJlaHlkcmF0YWJsZSBieSBvdGhlciA8R2xvYmFsLz5zXG5cbiAgICAgIG5vZGUuc2V0QXR0cmlidXRlKCdkYXRhLWVtb3Rpb24nLCBrZXkpO1xuICAgICAgc2hlZXQuaHlkcmF0ZShbbm9kZV0pO1xuICAgIH1cblxuICAgIHNoZWV0UmVmLmN1cnJlbnQgPSBbc2hlZXQsIHJlaHlkcmF0aW5nXTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgc2hlZXQuZmx1c2goKTtcbiAgICB9O1xuICB9LCBbY2FjaGVdKTtcbiAgdXNlSW5zZXJ0aW9uRWZmZWN0V2l0aExheW91dEZhbGxiYWNrKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2hlZXRSZWZDdXJyZW50ID0gc2hlZXRSZWYuY3VycmVudDtcbiAgICB2YXIgc2hlZXQgPSBzaGVldFJlZkN1cnJlbnRbMF0sXG4gICAgICAgIHJlaHlkcmF0aW5nID0gc2hlZXRSZWZDdXJyZW50WzFdO1xuXG4gICAgaWYgKHJlaHlkcmF0aW5nKSB7XG4gICAgICBzaGVldFJlZkN1cnJlbnRbMV0gPSBmYWxzZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoc2VyaWFsaXplZC5uZXh0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIGluc2VydCBrZXlmcmFtZXNcbiAgICAgIGluc2VydFN0eWxlcyhjYWNoZSwgc2VyaWFsaXplZC5uZXh0LCB0cnVlKTtcbiAgICB9XG5cbiAgICBpZiAoc2hlZXQudGFncy5sZW5ndGgpIHtcbiAgICAgIC8vIGlmIHRoaXMgZG9lc24ndCBleGlzdCB0aGVuIGl0IHdpbGwgYmUgbnVsbCBzbyB0aGUgc3R5bGUgZWxlbWVudCB3aWxsIGJlIGFwcGVuZGVkXG4gICAgICB2YXIgZWxlbWVudCA9IHNoZWV0LnRhZ3Nbc2hlZXQudGFncy5sZW5ndGggLSAxXS5uZXh0RWxlbWVudFNpYmxpbmc7XG4gICAgICBzaGVldC5iZWZvcmUgPSBlbGVtZW50O1xuICAgICAgc2hlZXQuZmx1c2goKTtcbiAgICB9XG5cbiAgICBjYWNoZS5pbnNlcnQoXCJcIiwgc2VyaWFsaXplZCwgc2hlZXQsIGZhbHNlKTtcbiAgfSwgW2NhY2hlLCBzZXJpYWxpemVkLm5hbWVdKTtcbiAgcmV0dXJuIG51bGw7XG59KTtcblxuLyogaW1wb3J0IHR5cGUgeyBJbnRlcnBvbGF0aW9uLCBTZXJpYWxpemVkU3R5bGVzIH0gZnJvbSAnQGVtb3Rpb24vdXRpbHMnICovXG5cbmZ1bmN0aW9uIGNzcygpXG4vKjogU2VyaWFsaXplZFN0eWxlcyAqL1xue1xuICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICB9XG5cbiAgcmV0dXJuIHNlcmlhbGl6ZVN0eWxlcyhhcmdzKTtcbn1cblxuLypcbnR5cGUgS2V5ZnJhbWVzID0ge3xcbiAgbmFtZTogc3RyaW5nLFxuICBzdHlsZXM6IHN0cmluZyxcbiAgYW5pbTogMSxcbiAgdG9TdHJpbmc6ICgpID0+IHN0cmluZ1xufH0gJiBzdHJpbmdcbiovXG5cbnZhciBrZXlmcmFtZXMgPSBmdW5jdGlvblxuICAvKjogS2V5ZnJhbWVzICovXG5rZXlmcmFtZXMoKSB7XG4gIHZhciBpbnNlcnRhYmxlID0gY3NzLmFwcGx5KHZvaWQgMCwgYXJndW1lbnRzKTtcbiAgdmFyIG5hbWUgPSBcImFuaW1hdGlvbi1cIiArIGluc2VydGFibGUubmFtZTtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiBuYW1lLFxuICAgIHN0eWxlczogXCJAa2V5ZnJhbWVzIFwiICsgbmFtZSArIFwie1wiICsgaW5zZXJ0YWJsZS5zdHlsZXMgKyBcIn1cIixcbiAgICBhbmltOiAxLFxuICAgIHRvU3RyaW5nOiBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICAgIHJldHVybiBcIl9FTU9fXCIgKyB0aGlzLm5hbWUgKyBcIl9cIiArIHRoaXMuc3R5bGVzICsgXCJfRU1PX1wiO1xuICAgIH1cbiAgfTtcbn07XG5cbi8qXG50eXBlIENsYXNzTmFtZUFyZyA9XG4gIHwgc3RyaW5nXG4gIHwgYm9vbGVhblxuICB8IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9XG4gIHwgQXJyYXk8Q2xhc3NOYW1lQXJnPlxuICB8IG51bGxcbiAgfCB2b2lkXG4qL1xuXG52YXIgY2xhc3NuYW1lcyA9IGZ1bmN0aW9uXG4gIC8qOiBzdHJpbmcgKi9cbmNsYXNzbmFtZXMoYXJnc1xuLyo6IEFycmF5PENsYXNzTmFtZUFyZz4gKi9cbikge1xuICB2YXIgbGVuID0gYXJncy5sZW5ndGg7XG4gIHZhciBpID0gMDtcbiAgdmFyIGNscyA9ICcnO1xuXG4gIGZvciAoOyBpIDwgbGVuOyBpKyspIHtcbiAgICB2YXIgYXJnID0gYXJnc1tpXTtcbiAgICBpZiAoYXJnID09IG51bGwpIGNvbnRpbnVlO1xuICAgIHZhciB0b0FkZCA9IHZvaWQgMDtcblxuICAgIHN3aXRjaCAodHlwZW9mIGFyZykge1xuICAgICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdvYmplY3QnOlxuICAgICAgICB7XG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYXJnKSkge1xuICAgICAgICAgICAgdG9BZGQgPSBjbGFzc25hbWVzKGFyZyk7XG4gICAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgICAgdG9BZGQgPSAnJztcblxuICAgICAgICAgICAgZm9yICh2YXIgayBpbiBhcmcpIHtcbiAgICAgICAgICAgICAgaWYgKGFyZ1trXSAmJiBrKSB7XG4gICAgICAgICAgICAgICAgdG9BZGQgJiYgKHRvQWRkICs9ICcgJyk7XG4gICAgICAgICAgICAgICAgdG9BZGQgKz0gaztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHtcbiAgICAgICAgICB0b0FkZCA9IGFyZztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0b0FkZCkge1xuICAgICAgY2xzICYmIChjbHMgKz0gJyAnKTtcbiAgICAgIGNscyArPSB0b0FkZDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gY2xzO1xufTtcblxuZnVuY3Rpb24gbWVyZ2UocmVnaXN0ZXJlZFxuLyo6IE9iamVjdCAqL1xuLCBjc3Ncbi8qOiAoLi4uYXJnczogQXJyYXk8YW55PikgPT4gc3RyaW5nICovXG4sIGNsYXNzTmFtZVxuLyo6IHN0cmluZyAqL1xuKSB7XG4gIHZhciByZWdpc3RlcmVkU3R5bGVzID0gW107XG4gIHZhciByYXdDbGFzc05hbWUgPSBnZXRSZWdpc3RlcmVkU3R5bGVzKHJlZ2lzdGVyZWQsIHJlZ2lzdGVyZWRTdHlsZXMsIGNsYXNzTmFtZSk7XG5cbiAgaWYgKHJlZ2lzdGVyZWRTdHlsZXMubGVuZ3RoIDwgMikge1xuICAgIHJldHVybiBjbGFzc05hbWU7XG4gIH1cblxuICByZXR1cm4gcmF3Q2xhc3NOYW1lICsgY3NzKHJlZ2lzdGVyZWRTdHlsZXMpO1xufVxuXG52YXIgSW5zZXJ0aW9uID0gZnVuY3Rpb24gSW5zZXJ0aW9uKF9yZWYpIHtcbiAgdmFyIGNhY2hlID0gX3JlZi5jYWNoZSxcbiAgICAgIHNlcmlhbGl6ZWRBcnIgPSBfcmVmLnNlcmlhbGl6ZWRBcnI7XG4gIHZhciBydWxlcyA9IHVzZUluc2VydGlvbkVmZmVjdEFsd2F5c1dpdGhTeW5jRmFsbGJhY2soZnVuY3Rpb24gKCkge1xuICAgIHZhciBydWxlcyA9ICcnO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZXJpYWxpemVkQXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgcmVzID0gaW5zZXJ0U3R5bGVzKGNhY2hlLCBzZXJpYWxpemVkQXJyW2ldLCBmYWxzZSk7XG5cbiAgICAgIGlmICghaXNCcm93c2VyICYmIHJlcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJ1bGVzICs9IHJlcztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIWlzQnJvd3Nlcikge1xuICAgICAgcmV0dXJuIHJ1bGVzO1xuICAgIH1cbiAgfSk7XG5cbiAgaWYgKCFpc0Jyb3dzZXIgJiYgcnVsZXMubGVuZ3RoICE9PSAwKSB7XG4gICAgdmFyIF9yZWYyO1xuXG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIiwgKF9yZWYyID0ge30sIF9yZWYyW1wiZGF0YS1lbW90aW9uXCJdID0gY2FjaGUua2V5ICsgXCIgXCIgKyBzZXJpYWxpemVkQXJyLm1hcChmdW5jdGlvbiAoc2VyaWFsaXplZCkge1xuICAgICAgcmV0dXJuIHNlcmlhbGl6ZWQubmFtZTtcbiAgICB9KS5qb2luKCcgJyksIF9yZWYyLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MID0ge1xuICAgICAgX19odG1sOiBydWxlc1xuICAgIH0sIF9yZWYyLm5vbmNlID0gY2FjaGUuc2hlZXQubm9uY2UsIF9yZWYyKSk7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn07XG4vKlxudHlwZSBQcm9wcyA9IHtcbiAgY2hpbGRyZW46ICh7XG4gICAgY3NzOiAoLi4uYXJnczogYW55KSA9PiBzdHJpbmcsXG4gICAgY3g6ICguLi5hcmdzOiBBcnJheTxDbGFzc05hbWVBcmc+KSA9PiBzdHJpbmcsXG4gICAgdGhlbWU6IE9iamVjdFxuICB9KSA9PiBSZWFjdC5Ob2RlXG59ICovXG5cblxudmFyIENsYXNzTmFtZXNcbi8qOiBSZWFjdC5BYnN0cmFjdENvbXBvbmVudDxQcm9wcz4qL1xuPSAvKiAjX19QVVJFX18gKi93aXRoRW1vdGlvbkNhY2hlKGZ1bmN0aW9uIChwcm9wcywgY2FjaGUpIHtcbiAgdmFyIGhhc1JlbmRlcmVkID0gZmFsc2U7XG4gIHZhciBzZXJpYWxpemVkQXJyID0gW107XG5cbiAgdmFyIGNzcyA9IGZ1bmN0aW9uIGNzcygpIHtcbiAgICBpZiAoaGFzUmVuZGVyZWQgJiYgaXNEZXZlbG9wbWVudCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjc3MgY2FuIG9ubHkgYmUgdXNlZCBkdXJpbmcgcmVuZGVyJyk7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cblxuICAgIHZhciBzZXJpYWxpemVkID0gc2VyaWFsaXplU3R5bGVzKGFyZ3MsIGNhY2hlLnJlZ2lzdGVyZWQpO1xuICAgIHNlcmlhbGl6ZWRBcnIucHVzaChzZXJpYWxpemVkKTsgLy8gcmVnaXN0cmF0aW9uIGhhcyB0byBoYXBwZW4gaGVyZSBhcyB0aGUgcmVzdWx0IG9mIHRoaXMgbWlnaHQgZ2V0IGNvbnN1bWVkIGJ5IGBjeGBcblxuICAgIHJlZ2lzdGVyU3R5bGVzKGNhY2hlLCBzZXJpYWxpemVkLCBmYWxzZSk7XG4gICAgcmV0dXJuIGNhY2hlLmtleSArIFwiLVwiICsgc2VyaWFsaXplZC5uYW1lO1xuICB9O1xuXG4gIHZhciBjeCA9IGZ1bmN0aW9uIGN4KCkge1xuICAgIGlmIChoYXNSZW5kZXJlZCAmJiBpc0RldmVsb3BtZW50KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2N4IGNhbiBvbmx5IGJlIHVzZWQgZHVyaW5nIHJlbmRlcicpO1xuICAgIH1cblxuICAgIGZvciAodmFyIF9sZW4yID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuMiksIF9rZXkyID0gMDsgX2tleTIgPCBfbGVuMjsgX2tleTIrKykge1xuICAgICAgYXJnc1tfa2V5Ml0gPSBhcmd1bWVudHNbX2tleTJdO1xuICAgIH1cblxuICAgIHJldHVybiBtZXJnZShjYWNoZS5yZWdpc3RlcmVkLCBjc3MsIGNsYXNzbmFtZXMoYXJncykpO1xuICB9O1xuXG4gIHZhciBjb250ZW50ID0ge1xuICAgIGNzczogY3NzLFxuICAgIGN4OiBjeCxcbiAgICB0aGVtZTogUmVhY3QudXNlQ29udGV4dChUaGVtZUNvbnRleHQpXG4gIH07XG4gIHZhciBlbGUgPSBwcm9wcy5jaGlsZHJlbihjb250ZW50KTtcbiAgaGFzUmVuZGVyZWQgPSB0cnVlO1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KEluc2VydGlvbiwge1xuICAgIGNhY2hlOiBjYWNoZSxcbiAgICBzZXJpYWxpemVkQXJyOiBzZXJpYWxpemVkQXJyXG4gIH0pLCBlbGUpO1xufSk7XG5cbmV4cG9ydCB7IENsYXNzTmFtZXMsIEdsb2JhbCwganN4IGFzIGNyZWF0ZUVsZW1lbnQsIGNzcywganN4LCBrZXlmcmFtZXMgfTtcbiIsICJmdW5jdGlvbiBfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsKGUsIHQpIHtcbiAgcmV0dXJuIHQgfHwgKHQgPSBlLnNsaWNlKDApKSwgT2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLCB7XG4gICAgcmF3OiB7XG4gICAgICB2YWx1ZTogT2JqZWN0LmZyZWV6ZSh0KVxuICAgIH1cbiAgfSkpO1xufVxuZXhwb3J0IHsgX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbCBhcyBkZWZhdWx0IH07IiwgIi8qKlxuICogQ3VzdG9tIHBvc2l0aW9uaW5nIHJlZmVyZW5jZSBlbGVtZW50LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL3ZpcnR1YWwtZWxlbWVudHNcbiAqL1xuXG5jb25zdCBzaWRlcyA9IFsndG9wJywgJ3JpZ2h0JywgJ2JvdHRvbScsICdsZWZ0J107XG5jb25zdCBhbGlnbm1lbnRzID0gWydzdGFydCcsICdlbmQnXTtcbmNvbnN0IHBsYWNlbWVudHMgPSAvKiNfX1BVUkVfXyovc2lkZXMucmVkdWNlKChhY2MsIHNpZGUpID0+IGFjYy5jb25jYXQoc2lkZSwgc2lkZSArIFwiLVwiICsgYWxpZ25tZW50c1swXSwgc2lkZSArIFwiLVwiICsgYWxpZ25tZW50c1sxXSksIFtdKTtcbmNvbnN0IG1pbiA9IE1hdGgubWluO1xuY29uc3QgbWF4ID0gTWF0aC5tYXg7XG5jb25zdCByb3VuZCA9IE1hdGgucm91bmQ7XG5jb25zdCBmbG9vciA9IE1hdGguZmxvb3I7XG5jb25zdCBjcmVhdGVDb29yZHMgPSB2ID0+ICh7XG4gIHg6IHYsXG4gIHk6IHZcbn0pO1xuY29uc3Qgb3Bwb3NpdGVTaWRlTWFwID0ge1xuICBsZWZ0OiAncmlnaHQnLFxuICByaWdodDogJ2xlZnQnLFxuICBib3R0b206ICd0b3AnLFxuICB0b3A6ICdib3R0b20nXG59O1xuY29uc3Qgb3Bwb3NpdGVBbGlnbm1lbnRNYXAgPSB7XG4gIHN0YXJ0OiAnZW5kJyxcbiAgZW5kOiAnc3RhcnQnXG59O1xuZnVuY3Rpb24gY2xhbXAoc3RhcnQsIHZhbHVlLCBlbmQpIHtcbiAgcmV0dXJuIG1heChzdGFydCwgbWluKHZhbHVlLCBlbmQpKTtcbn1cbmZ1bmN0aW9uIGV2YWx1YXRlKHZhbHVlLCBwYXJhbSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nID8gdmFsdWUocGFyYW0pIDogdmFsdWU7XG59XG5mdW5jdGlvbiBnZXRTaWRlKHBsYWNlbWVudCkge1xuICByZXR1cm4gcGxhY2VtZW50LnNwbGl0KCctJylbMF07XG59XG5mdW5jdGlvbiBnZXRBbGlnbm1lbnQocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQuc3BsaXQoJy0nKVsxXTtcbn1cbmZ1bmN0aW9uIGdldE9wcG9zaXRlQXhpcyhheGlzKSB7XG4gIHJldHVybiBheGlzID09PSAneCcgPyAneScgOiAneCc7XG59XG5mdW5jdGlvbiBnZXRBeGlzTGVuZ3RoKGF4aXMpIHtcbiAgcmV0dXJuIGF4aXMgPT09ICd5JyA/ICdoZWlnaHQnIDogJ3dpZHRoJztcbn1cbmZ1bmN0aW9uIGdldFNpZGVBeGlzKHBsYWNlbWVudCkge1xuICByZXR1cm4gWyd0b3AnLCAnYm90dG9tJ10uaW5jbHVkZXMoZ2V0U2lkZShwbGFjZW1lbnQpKSA/ICd5JyA6ICd4Jztcbn1cbmZ1bmN0aW9uIGdldEFsaWdubWVudEF4aXMocGxhY2VtZW50KSB7XG4gIHJldHVybiBnZXRPcHBvc2l0ZUF4aXMoZ2V0U2lkZUF4aXMocGxhY2VtZW50KSk7XG59XG5mdW5jdGlvbiBnZXRBbGlnbm1lbnRTaWRlcyhwbGFjZW1lbnQsIHJlY3RzLCBydGwpIHtcbiAgaWYgKHJ0bCA9PT0gdm9pZCAwKSB7XG4gICAgcnRsID0gZmFsc2U7XG4gIH1cbiAgY29uc3QgYWxpZ25tZW50ID0gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCk7XG4gIGNvbnN0IGFsaWdubWVudEF4aXMgPSBnZXRBbGlnbm1lbnRBeGlzKHBsYWNlbWVudCk7XG4gIGNvbnN0IGxlbmd0aCA9IGdldEF4aXNMZW5ndGgoYWxpZ25tZW50QXhpcyk7XG4gIGxldCBtYWluQWxpZ25tZW50U2lkZSA9IGFsaWdubWVudEF4aXMgPT09ICd4JyA/IGFsaWdubWVudCA9PT0gKHJ0bCA/ICdlbmQnIDogJ3N0YXJ0JykgPyAncmlnaHQnIDogJ2xlZnQnIDogYWxpZ25tZW50ID09PSAnc3RhcnQnID8gJ2JvdHRvbScgOiAndG9wJztcbiAgaWYgKHJlY3RzLnJlZmVyZW5jZVtsZW5ndGhdID4gcmVjdHMuZmxvYXRpbmdbbGVuZ3RoXSkge1xuICAgIG1haW5BbGlnbm1lbnRTaWRlID0gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQobWFpbkFsaWdubWVudFNpZGUpO1xuICB9XG4gIHJldHVybiBbbWFpbkFsaWdubWVudFNpZGUsIGdldE9wcG9zaXRlUGxhY2VtZW50KG1haW5BbGlnbm1lbnRTaWRlKV07XG59XG5mdW5jdGlvbiBnZXRFeHBhbmRlZFBsYWNlbWVudHMocGxhY2VtZW50KSB7XG4gIGNvbnN0IG9wcG9zaXRlUGxhY2VtZW50ID0gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQocGxhY2VtZW50KTtcbiAgcmV0dXJuIFtnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudChwbGFjZW1lbnQpLCBvcHBvc2l0ZVBsYWNlbWVudCwgZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQob3Bwb3NpdGVQbGFjZW1lbnQpXTtcbn1cbmZ1bmN0aW9uIGdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50KHBsYWNlbWVudCkge1xuICByZXR1cm4gcGxhY2VtZW50LnJlcGxhY2UoL3N0YXJ0fGVuZC9nLCBhbGlnbm1lbnQgPT4gb3Bwb3NpdGVBbGlnbm1lbnRNYXBbYWxpZ25tZW50XSk7XG59XG5mdW5jdGlvbiBnZXRTaWRlTGlzdChzaWRlLCBpc1N0YXJ0LCBydGwpIHtcbiAgY29uc3QgbHIgPSBbJ2xlZnQnLCAncmlnaHQnXTtcbiAgY29uc3QgcmwgPSBbJ3JpZ2h0JywgJ2xlZnQnXTtcbiAgY29uc3QgdGIgPSBbJ3RvcCcsICdib3R0b20nXTtcbiAgY29uc3QgYnQgPSBbJ2JvdHRvbScsICd0b3AnXTtcbiAgc3dpdGNoIChzaWRlKSB7XG4gICAgY2FzZSAndG9wJzpcbiAgICBjYXNlICdib3R0b20nOlxuICAgICAgaWYgKHJ0bCkgcmV0dXJuIGlzU3RhcnQgPyBybCA6IGxyO1xuICAgICAgcmV0dXJuIGlzU3RhcnQgPyBsciA6IHJsO1xuICAgIGNhc2UgJ2xlZnQnOlxuICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgIHJldHVybiBpc1N0YXJ0ID8gdGIgOiBidDtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIFtdO1xuICB9XG59XG5mdW5jdGlvbiBnZXRPcHBvc2l0ZUF4aXNQbGFjZW1lbnRzKHBsYWNlbWVudCwgZmxpcEFsaWdubWVudCwgZGlyZWN0aW9uLCBydGwpIHtcbiAgY29uc3QgYWxpZ25tZW50ID0gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCk7XG4gIGxldCBsaXN0ID0gZ2V0U2lkZUxpc3QoZ2V0U2lkZShwbGFjZW1lbnQpLCBkaXJlY3Rpb24gPT09ICdzdGFydCcsIHJ0bCk7XG4gIGlmIChhbGlnbm1lbnQpIHtcbiAgICBsaXN0ID0gbGlzdC5tYXAoc2lkZSA9PiBzaWRlICsgXCItXCIgKyBhbGlnbm1lbnQpO1xuICAgIGlmIChmbGlwQWxpZ25tZW50KSB7XG4gICAgICBsaXN0ID0gbGlzdC5jb25jYXQobGlzdC5tYXAoZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQpKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGxpc3Q7XG59XG5mdW5jdGlvbiBnZXRPcHBvc2l0ZVBsYWNlbWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5yZXBsYWNlKC9sZWZ0fHJpZ2h0fGJvdHRvbXx0b3AvZywgc2lkZSA9PiBvcHBvc2l0ZVNpZGVNYXBbc2lkZV0pO1xufVxuZnVuY3Rpb24gZXhwYW5kUGFkZGluZ09iamVjdChwYWRkaW5nKSB7XG4gIHJldHVybiB7XG4gICAgdG9wOiAwLFxuICAgIHJpZ2h0OiAwLFxuICAgIGJvdHRvbTogMCxcbiAgICBsZWZ0OiAwLFxuICAgIC4uLnBhZGRpbmdcbiAgfTtcbn1cbmZ1bmN0aW9uIGdldFBhZGRpbmdPYmplY3QocGFkZGluZykge1xuICByZXR1cm4gdHlwZW9mIHBhZGRpbmcgIT09ICdudW1iZXInID8gZXhwYW5kUGFkZGluZ09iamVjdChwYWRkaW5nKSA6IHtcbiAgICB0b3A6IHBhZGRpbmcsXG4gICAgcmlnaHQ6IHBhZGRpbmcsXG4gICAgYm90dG9tOiBwYWRkaW5nLFxuICAgIGxlZnQ6IHBhZGRpbmdcbiAgfTtcbn1cbmZ1bmN0aW9uIHJlY3RUb0NsaWVudFJlY3QocmVjdCkge1xuICBjb25zdCB7XG4gICAgeCxcbiAgICB5LFxuICAgIHdpZHRoLFxuICAgIGhlaWdodFxuICB9ID0gcmVjdDtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgdG9wOiB5LFxuICAgIGxlZnQ6IHgsXG4gICAgcmlnaHQ6IHggKyB3aWR0aCxcbiAgICBib3R0b206IHkgKyBoZWlnaHQsXG4gICAgeCxcbiAgICB5XG4gIH07XG59XG5cbmV4cG9ydCB7IGFsaWdubWVudHMsIGNsYW1wLCBjcmVhdGVDb29yZHMsIGV2YWx1YXRlLCBleHBhbmRQYWRkaW5nT2JqZWN0LCBmbG9vciwgZ2V0QWxpZ25tZW50LCBnZXRBbGlnbm1lbnRBeGlzLCBnZXRBbGlnbm1lbnRTaWRlcywgZ2V0QXhpc0xlbmd0aCwgZ2V0RXhwYW5kZWRQbGFjZW1lbnRzLCBnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudCwgZ2V0T3Bwb3NpdGVBeGlzLCBnZXRPcHBvc2l0ZUF4aXNQbGFjZW1lbnRzLCBnZXRPcHBvc2l0ZVBsYWNlbWVudCwgZ2V0UGFkZGluZ09iamVjdCwgZ2V0U2lkZSwgZ2V0U2lkZUF4aXMsIG1heCwgbWluLCBwbGFjZW1lbnRzLCByZWN0VG9DbGllbnRSZWN0LCByb3VuZCwgc2lkZXMgfTtcbiIsICJmdW5jdGlvbiBoYXNXaW5kb3coKSB7XG4gIHJldHVybiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJztcbn1cbmZ1bmN0aW9uIGdldE5vZGVOYW1lKG5vZGUpIHtcbiAgaWYgKGlzTm9kZShub2RlKSkge1xuICAgIHJldHVybiAobm9kZS5ub2RlTmFtZSB8fCAnJykudG9Mb3dlckNhc2UoKTtcbiAgfVxuICAvLyBNb2NrZWQgbm9kZXMgaW4gdGVzdGluZyBlbnZpcm9ubWVudHMgbWF5IG5vdCBiZSBpbnN0YW5jZXMgb2YgTm9kZS4gQnlcbiAgLy8gcmV0dXJuaW5nIGAjZG9jdW1lbnRgIGFuIGluZmluaXRlIGxvb3Agd29uJ3Qgb2NjdXIuXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mbG9hdGluZy11aS9mbG9hdGluZy11aS9pc3N1ZXMvMjMxN1xuICByZXR1cm4gJyNkb2N1bWVudCc7XG59XG5mdW5jdGlvbiBnZXRXaW5kb3cobm9kZSkge1xuICB2YXIgX25vZGUkb3duZXJEb2N1bWVudDtcbiAgcmV0dXJuIChub2RlID09IG51bGwgfHwgKF9ub2RlJG93bmVyRG9jdW1lbnQgPSBub2RlLm93bmVyRG9jdW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfbm9kZSRvd25lckRvY3VtZW50LmRlZmF1bHRWaWV3KSB8fCB3aW5kb3c7XG59XG5mdW5jdGlvbiBnZXREb2N1bWVudEVsZW1lbnQobm9kZSkge1xuICB2YXIgX3JlZjtcbiAgcmV0dXJuIChfcmVmID0gKGlzTm9kZShub2RlKSA/IG5vZGUub3duZXJEb2N1bWVudCA6IG5vZGUuZG9jdW1lbnQpIHx8IHdpbmRvdy5kb2N1bWVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9yZWYuZG9jdW1lbnRFbGVtZW50O1xufVxuZnVuY3Rpb24gaXNOb2RlKHZhbHVlKSB7XG4gIGlmICghaGFzV2luZG93KCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgTm9kZSB8fCB2YWx1ZSBpbnN0YW5jZW9mIGdldFdpbmRvdyh2YWx1ZSkuTm9kZTtcbn1cbmZ1bmN0aW9uIGlzRWxlbWVudCh2YWx1ZSkge1xuICBpZiAoIWhhc1dpbmRvdygpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIEVsZW1lbnQgfHwgdmFsdWUgaW5zdGFuY2VvZiBnZXRXaW5kb3codmFsdWUpLkVsZW1lbnQ7XG59XG5mdW5jdGlvbiBpc0hUTUxFbGVtZW50KHZhbHVlKSB7XG4gIGlmICghaGFzV2luZG93KCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgfHwgdmFsdWUgaW5zdGFuY2VvZiBnZXRXaW5kb3codmFsdWUpLkhUTUxFbGVtZW50O1xufVxuZnVuY3Rpb24gaXNTaGFkb3dSb290KHZhbHVlKSB7XG4gIGlmICghaGFzV2luZG93KCkgfHwgdHlwZW9mIFNoYWRvd1Jvb3QgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFNoYWRvd1Jvb3QgfHwgdmFsdWUgaW5zdGFuY2VvZiBnZXRXaW5kb3codmFsdWUpLlNoYWRvd1Jvb3Q7XG59XG5mdW5jdGlvbiBpc092ZXJmbG93RWxlbWVudChlbGVtZW50KSB7XG4gIGNvbnN0IHtcbiAgICBvdmVyZmxvdyxcbiAgICBvdmVyZmxvd1gsXG4gICAgb3ZlcmZsb3dZLFxuICAgIGRpc3BsYXlcbiAgfSA9IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XG4gIHJldHVybiAvYXV0b3xzY3JvbGx8b3ZlcmxheXxoaWRkZW58Y2xpcC8udGVzdChvdmVyZmxvdyArIG92ZXJmbG93WSArIG92ZXJmbG93WCkgJiYgIVsnaW5saW5lJywgJ2NvbnRlbnRzJ10uaW5jbHVkZXMoZGlzcGxheSk7XG59XG5mdW5jdGlvbiBpc1RhYmxlRWxlbWVudChlbGVtZW50KSB7XG4gIHJldHVybiBbJ3RhYmxlJywgJ3RkJywgJ3RoJ10uaW5jbHVkZXMoZ2V0Tm9kZU5hbWUoZWxlbWVudCkpO1xufVxuZnVuY3Rpb24gaXNUb3BMYXllcihlbGVtZW50KSB7XG4gIHJldHVybiBbJzpwb3BvdmVyLW9wZW4nLCAnOm1vZGFsJ10uc29tZShzZWxlY3RvciA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBlbGVtZW50Lm1hdGNoZXMoc2VsZWN0b3IpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH0pO1xufVxuZnVuY3Rpb24gaXNDb250YWluaW5nQmxvY2soZWxlbWVudE9yQ3NzKSB7XG4gIGNvbnN0IHdlYmtpdCA9IGlzV2ViS2l0KCk7XG4gIGNvbnN0IGNzcyA9IGlzRWxlbWVudChlbGVtZW50T3JDc3MpID8gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50T3JDc3MpIDogZWxlbWVudE9yQ3NzO1xuXG4gIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9Db250YWluaW5nX2Jsb2NrI2lkZW50aWZ5aW5nX3RoZV9jb250YWluaW5nX2Jsb2NrXG4gIHJldHVybiBjc3MudHJhbnNmb3JtICE9PSAnbm9uZScgfHwgY3NzLnBlcnNwZWN0aXZlICE9PSAnbm9uZScgfHwgKGNzcy5jb250YWluZXJUeXBlID8gY3NzLmNvbnRhaW5lclR5cGUgIT09ICdub3JtYWwnIDogZmFsc2UpIHx8ICF3ZWJraXQgJiYgKGNzcy5iYWNrZHJvcEZpbHRlciA/IGNzcy5iYWNrZHJvcEZpbHRlciAhPT0gJ25vbmUnIDogZmFsc2UpIHx8ICF3ZWJraXQgJiYgKGNzcy5maWx0ZXIgPyBjc3MuZmlsdGVyICE9PSAnbm9uZScgOiBmYWxzZSkgfHwgWyd0cmFuc2Zvcm0nLCAncGVyc3BlY3RpdmUnLCAnZmlsdGVyJ10uc29tZSh2YWx1ZSA9PiAoY3NzLndpbGxDaGFuZ2UgfHwgJycpLmluY2x1ZGVzKHZhbHVlKSkgfHwgWydwYWludCcsICdsYXlvdXQnLCAnc3RyaWN0JywgJ2NvbnRlbnQnXS5zb21lKHZhbHVlID0+IChjc3MuY29udGFpbiB8fCAnJykuaW5jbHVkZXModmFsdWUpKTtcbn1cbmZ1bmN0aW9uIGdldENvbnRhaW5pbmdCbG9jayhlbGVtZW50KSB7XG4gIGxldCBjdXJyZW50Tm9kZSA9IGdldFBhcmVudE5vZGUoZWxlbWVudCk7XG4gIHdoaWxlIChpc0hUTUxFbGVtZW50KGN1cnJlbnROb2RlKSAmJiAhaXNMYXN0VHJhdmVyc2FibGVOb2RlKGN1cnJlbnROb2RlKSkge1xuICAgIGlmIChpc0NvbnRhaW5pbmdCbG9jayhjdXJyZW50Tm9kZSkpIHtcbiAgICAgIHJldHVybiBjdXJyZW50Tm9kZTtcbiAgICB9IGVsc2UgaWYgKGlzVG9wTGF5ZXIoY3VycmVudE5vZGUpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY3VycmVudE5vZGUgPSBnZXRQYXJlbnROb2RlKGN1cnJlbnROb2RlKTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cbmZ1bmN0aW9uIGlzV2ViS2l0KCkge1xuICBpZiAodHlwZW9mIENTUyA9PT0gJ3VuZGVmaW5lZCcgfHwgIUNTUy5zdXBwb3J0cykgcmV0dXJuIGZhbHNlO1xuICByZXR1cm4gQ1NTLnN1cHBvcnRzKCctd2Via2l0LWJhY2tkcm9wLWZpbHRlcicsICdub25lJyk7XG59XG5mdW5jdGlvbiBpc0xhc3RUcmF2ZXJzYWJsZU5vZGUobm9kZSkge1xuICByZXR1cm4gWydodG1sJywgJ2JvZHknLCAnI2RvY3VtZW50J10uaW5jbHVkZXMoZ2V0Tm9kZU5hbWUobm9kZSkpO1xufVxuZnVuY3Rpb24gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KSB7XG4gIHJldHVybiBnZXRXaW5kb3coZWxlbWVudCkuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcbn1cbmZ1bmN0aW9uIGdldE5vZGVTY3JvbGwoZWxlbWVudCkge1xuICBpZiAoaXNFbGVtZW50KGVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNjcm9sbExlZnQ6IGVsZW1lbnQuc2Nyb2xsTGVmdCxcbiAgICAgIHNjcm9sbFRvcDogZWxlbWVudC5zY3JvbGxUb3BcbiAgICB9O1xuICB9XG4gIHJldHVybiB7XG4gICAgc2Nyb2xsTGVmdDogZWxlbWVudC5zY3JvbGxYLFxuICAgIHNjcm9sbFRvcDogZWxlbWVudC5zY3JvbGxZXG4gIH07XG59XG5mdW5jdGlvbiBnZXRQYXJlbnROb2RlKG5vZGUpIHtcbiAgaWYgKGdldE5vZGVOYW1lKG5vZGUpID09PSAnaHRtbCcpIHtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuICBjb25zdCByZXN1bHQgPVxuICAvLyBTdGVwIGludG8gdGhlIHNoYWRvdyBET00gb2YgdGhlIHBhcmVudCBvZiBhIHNsb3R0ZWQgbm9kZS5cbiAgbm9kZS5hc3NpZ25lZFNsb3QgfHxcbiAgLy8gRE9NIEVsZW1lbnQgZGV0ZWN0ZWQuXG4gIG5vZGUucGFyZW50Tm9kZSB8fFxuICAvLyBTaGFkb3dSb290IGRldGVjdGVkLlxuICBpc1NoYWRvd1Jvb3Qobm9kZSkgJiYgbm9kZS5ob3N0IHx8XG4gIC8vIEZhbGxiYWNrLlxuICBnZXREb2N1bWVudEVsZW1lbnQobm9kZSk7XG4gIHJldHVybiBpc1NoYWRvd1Jvb3QocmVzdWx0KSA/IHJlc3VsdC5ob3N0IDogcmVzdWx0O1xufVxuZnVuY3Rpb24gZ2V0TmVhcmVzdE92ZXJmbG93QW5jZXN0b3Iobm9kZSkge1xuICBjb25zdCBwYXJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShub2RlKTtcbiAgaWYgKGlzTGFzdFRyYXZlcnNhYmxlTm9kZShwYXJlbnROb2RlKSkge1xuICAgIHJldHVybiBub2RlLm93bmVyRG9jdW1lbnQgPyBub2RlLm93bmVyRG9jdW1lbnQuYm9keSA6IG5vZGUuYm9keTtcbiAgfVxuICBpZiAoaXNIVE1MRWxlbWVudChwYXJlbnROb2RlKSAmJiBpc092ZXJmbG93RWxlbWVudChwYXJlbnROb2RlKSkge1xuICAgIHJldHVybiBwYXJlbnROb2RlO1xuICB9XG4gIHJldHVybiBnZXROZWFyZXN0T3ZlcmZsb3dBbmNlc3RvcihwYXJlbnROb2RlKTtcbn1cbmZ1bmN0aW9uIGdldE92ZXJmbG93QW5jZXN0b3JzKG5vZGUsIGxpc3QsIHRyYXZlcnNlSWZyYW1lcykge1xuICB2YXIgX25vZGUkb3duZXJEb2N1bWVudDI7XG4gIGlmIChsaXN0ID09PSB2b2lkIDApIHtcbiAgICBsaXN0ID0gW107XG4gIH1cbiAgaWYgKHRyYXZlcnNlSWZyYW1lcyA9PT0gdm9pZCAwKSB7XG4gICAgdHJhdmVyc2VJZnJhbWVzID0gdHJ1ZTtcbiAgfVxuICBjb25zdCBzY3JvbGxhYmxlQW5jZXN0b3IgPSBnZXROZWFyZXN0T3ZlcmZsb3dBbmNlc3Rvcihub2RlKTtcbiAgY29uc3QgaXNCb2R5ID0gc2Nyb2xsYWJsZUFuY2VzdG9yID09PSAoKF9ub2RlJG93bmVyRG9jdW1lbnQyID0gbm9kZS5vd25lckRvY3VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX25vZGUkb3duZXJEb2N1bWVudDIuYm9keSk7XG4gIGNvbnN0IHdpbiA9IGdldFdpbmRvdyhzY3JvbGxhYmxlQW5jZXN0b3IpO1xuICBpZiAoaXNCb2R5KSB7XG4gICAgY29uc3QgZnJhbWVFbGVtZW50ID0gZ2V0RnJhbWVFbGVtZW50KHdpbik7XG4gICAgcmV0dXJuIGxpc3QuY29uY2F0KHdpbiwgd2luLnZpc3VhbFZpZXdwb3J0IHx8IFtdLCBpc092ZXJmbG93RWxlbWVudChzY3JvbGxhYmxlQW5jZXN0b3IpID8gc2Nyb2xsYWJsZUFuY2VzdG9yIDogW10sIGZyYW1lRWxlbWVudCAmJiB0cmF2ZXJzZUlmcmFtZXMgPyBnZXRPdmVyZmxvd0FuY2VzdG9ycyhmcmFtZUVsZW1lbnQpIDogW10pO1xuICB9XG4gIHJldHVybiBsaXN0LmNvbmNhdChzY3JvbGxhYmxlQW5jZXN0b3IsIGdldE92ZXJmbG93QW5jZXN0b3JzKHNjcm9sbGFibGVBbmNlc3RvciwgW10sIHRyYXZlcnNlSWZyYW1lcykpO1xufVxuZnVuY3Rpb24gZ2V0RnJhbWVFbGVtZW50KHdpbikge1xuICByZXR1cm4gd2luLnBhcmVudCAmJiBPYmplY3QuZ2V0UHJvdG90eXBlT2Yod2luLnBhcmVudCkgPyB3aW4uZnJhbWVFbGVtZW50IDogbnVsbDtcbn1cblxuZXhwb3J0IHsgZ2V0Q29tcHV0ZWRTdHlsZSwgZ2V0Q29udGFpbmluZ0Jsb2NrLCBnZXREb2N1bWVudEVsZW1lbnQsIGdldEZyYW1lRWxlbWVudCwgZ2V0TmVhcmVzdE92ZXJmbG93QW5jZXN0b3IsIGdldE5vZGVOYW1lLCBnZXROb2RlU2Nyb2xsLCBnZXRPdmVyZmxvd0FuY2VzdG9ycywgZ2V0UGFyZW50Tm9kZSwgZ2V0V2luZG93LCBpc0NvbnRhaW5pbmdCbG9jaywgaXNFbGVtZW50LCBpc0hUTUxFbGVtZW50LCBpc0xhc3RUcmF2ZXJzYWJsZU5vZGUsIGlzTm9kZSwgaXNPdmVyZmxvd0VsZW1lbnQsIGlzU2hhZG93Um9vdCwgaXNUYWJsZUVsZW1lbnQsIGlzVG9wTGF5ZXIsIGlzV2ViS2l0IH07XG4iLCAiaW1wb3J0IHsgcmVjdFRvQ2xpZW50UmVjdCwgZGV0ZWN0T3ZlcmZsb3cgYXMgZGV0ZWN0T3ZlcmZsb3ckMSwgb2Zmc2V0IGFzIG9mZnNldCQxLCBhdXRvUGxhY2VtZW50IGFzIGF1dG9QbGFjZW1lbnQkMSwgc2hpZnQgYXMgc2hpZnQkMSwgZmxpcCBhcyBmbGlwJDEsIHNpemUgYXMgc2l6ZSQxLCBoaWRlIGFzIGhpZGUkMSwgYXJyb3cgYXMgYXJyb3ckMSwgaW5saW5lIGFzIGlubGluZSQxLCBsaW1pdFNoaWZ0IGFzIGxpbWl0U2hpZnQkMSwgY29tcHV0ZVBvc2l0aW9uIGFzIGNvbXB1dGVQb3NpdGlvbiQxIH0gZnJvbSAnQGZsb2F0aW5nLXVpL2NvcmUnO1xuaW1wb3J0IHsgcm91bmQsIGNyZWF0ZUNvb3JkcywgbWF4LCBtaW4sIGZsb29yIH0gZnJvbSAnQGZsb2F0aW5nLXVpL3V0aWxzJztcbmltcG9ydCB7IGdldENvbXB1dGVkU3R5bGUsIGlzSFRNTEVsZW1lbnQsIGlzRWxlbWVudCwgZ2V0V2luZG93LCBpc1dlYktpdCwgZ2V0RnJhbWVFbGVtZW50LCBnZXREb2N1bWVudEVsZW1lbnQsIGlzVG9wTGF5ZXIsIGdldE5vZGVOYW1lLCBpc092ZXJmbG93RWxlbWVudCwgZ2V0Tm9kZVNjcm9sbCwgZ2V0T3ZlcmZsb3dBbmNlc3RvcnMsIGdldFBhcmVudE5vZGUsIGlzTGFzdFRyYXZlcnNhYmxlTm9kZSwgaXNDb250YWluaW5nQmxvY2ssIGlzVGFibGVFbGVtZW50LCBnZXRDb250YWluaW5nQmxvY2sgfSBmcm9tICdAZmxvYXRpbmctdWkvdXRpbHMvZG9tJztcbmV4cG9ydCB7IGdldE92ZXJmbG93QW5jZXN0b3JzIH0gZnJvbSAnQGZsb2F0aW5nLXVpL3V0aWxzL2RvbSc7XG5cbmZ1bmN0aW9uIGdldENzc0RpbWVuc2lvbnMoZWxlbWVudCkge1xuICBjb25zdCBjc3MgPSBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xuICAvLyBJbiB0ZXN0aW5nIGVudmlyb25tZW50cywgdGhlIGB3aWR0aGAgYW5kIGBoZWlnaHRgIHByb3BlcnRpZXMgYXJlIGVtcHR5XG4gIC8vIHN0cmluZ3MgZm9yIFNWRyBlbGVtZW50cywgcmV0dXJuaW5nIE5hTi4gRmFsbGJhY2sgdG8gYDBgIGluIHRoaXMgY2FzZS5cbiAgbGV0IHdpZHRoID0gcGFyc2VGbG9hdChjc3Mud2lkdGgpIHx8IDA7XG4gIGxldCBoZWlnaHQgPSBwYXJzZUZsb2F0KGNzcy5oZWlnaHQpIHx8IDA7XG4gIGNvbnN0IGhhc09mZnNldCA9IGlzSFRNTEVsZW1lbnQoZWxlbWVudCk7XG4gIGNvbnN0IG9mZnNldFdpZHRoID0gaGFzT2Zmc2V0ID8gZWxlbWVudC5vZmZzZXRXaWR0aCA6IHdpZHRoO1xuICBjb25zdCBvZmZzZXRIZWlnaHQgPSBoYXNPZmZzZXQgPyBlbGVtZW50Lm9mZnNldEhlaWdodCA6IGhlaWdodDtcbiAgY29uc3Qgc2hvdWxkRmFsbGJhY2sgPSByb3VuZCh3aWR0aCkgIT09IG9mZnNldFdpZHRoIHx8IHJvdW5kKGhlaWdodCkgIT09IG9mZnNldEhlaWdodDtcbiAgaWYgKHNob3VsZEZhbGxiYWNrKSB7XG4gICAgd2lkdGggPSBvZmZzZXRXaWR0aDtcbiAgICBoZWlnaHQgPSBvZmZzZXRIZWlnaHQ7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgJDogc2hvdWxkRmFsbGJhY2tcbiAgfTtcbn1cblxuZnVuY3Rpb24gdW53cmFwRWxlbWVudChlbGVtZW50KSB7XG4gIHJldHVybiAhaXNFbGVtZW50KGVsZW1lbnQpID8gZWxlbWVudC5jb250ZXh0RWxlbWVudCA6IGVsZW1lbnQ7XG59XG5cbmZ1bmN0aW9uIGdldFNjYWxlKGVsZW1lbnQpIHtcbiAgY29uc3QgZG9tRWxlbWVudCA9IHVud3JhcEVsZW1lbnQoZWxlbWVudCk7XG4gIGlmICghaXNIVE1MRWxlbWVudChkb21FbGVtZW50KSkge1xuICAgIHJldHVybiBjcmVhdGVDb29yZHMoMSk7XG4gIH1cbiAgY29uc3QgcmVjdCA9IGRvbUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIGNvbnN0IHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgJFxuICB9ID0gZ2V0Q3NzRGltZW5zaW9ucyhkb21FbGVtZW50KTtcbiAgbGV0IHggPSAoJCA/IHJvdW5kKHJlY3Qud2lkdGgpIDogcmVjdC53aWR0aCkgLyB3aWR0aDtcbiAgbGV0IHkgPSAoJCA/IHJvdW5kKHJlY3QuaGVpZ2h0KSA6IHJlY3QuaGVpZ2h0KSAvIGhlaWdodDtcblxuICAvLyAwLCBOYU4sIG9yIEluZmluaXR5IHNob3VsZCBhbHdheXMgZmFsbGJhY2sgdG8gMS5cblxuICBpZiAoIXggfHwgIU51bWJlci5pc0Zpbml0ZSh4KSkge1xuICAgIHggPSAxO1xuICB9XG4gIGlmICgheSB8fCAhTnVtYmVyLmlzRmluaXRlKHkpKSB7XG4gICAgeSA9IDE7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB4LFxuICAgIHlcbiAgfTtcbn1cblxuY29uc3Qgbm9PZmZzZXRzID0gLyojX19QVVJFX18qL2NyZWF0ZUNvb3JkcygwKTtcbmZ1bmN0aW9uIGdldFZpc3VhbE9mZnNldHMoZWxlbWVudCkge1xuICBjb25zdCB3aW4gPSBnZXRXaW5kb3coZWxlbWVudCk7XG4gIGlmICghaXNXZWJLaXQoKSB8fCAhd2luLnZpc3VhbFZpZXdwb3J0KSB7XG4gICAgcmV0dXJuIG5vT2Zmc2V0cztcbiAgfVxuICByZXR1cm4ge1xuICAgIHg6IHdpbi52aXN1YWxWaWV3cG9ydC5vZmZzZXRMZWZ0LFxuICAgIHk6IHdpbi52aXN1YWxWaWV3cG9ydC5vZmZzZXRUb3BcbiAgfTtcbn1cbmZ1bmN0aW9uIHNob3VsZEFkZFZpc3VhbE9mZnNldHMoZWxlbWVudCwgaXNGaXhlZCwgZmxvYXRpbmdPZmZzZXRQYXJlbnQpIHtcbiAgaWYgKGlzRml4ZWQgPT09IHZvaWQgMCkge1xuICAgIGlzRml4ZWQgPSBmYWxzZTtcbiAgfVxuICBpZiAoIWZsb2F0aW5nT2Zmc2V0UGFyZW50IHx8IGlzRml4ZWQgJiYgZmxvYXRpbmdPZmZzZXRQYXJlbnQgIT09IGdldFdpbmRvdyhlbGVtZW50KSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gaXNGaXhlZDtcbn1cblxuZnVuY3Rpb24gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnQsIGluY2x1ZGVTY2FsZSwgaXNGaXhlZFN0cmF0ZWd5LCBvZmZzZXRQYXJlbnQpIHtcbiAgaWYgKGluY2x1ZGVTY2FsZSA9PT0gdm9pZCAwKSB7XG4gICAgaW5jbHVkZVNjYWxlID0gZmFsc2U7XG4gIH1cbiAgaWYgKGlzRml4ZWRTdHJhdGVneSA9PT0gdm9pZCAwKSB7XG4gICAgaXNGaXhlZFN0cmF0ZWd5ID0gZmFsc2U7XG4gIH1cbiAgY29uc3QgY2xpZW50UmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIGNvbnN0IGRvbUVsZW1lbnQgPSB1bndyYXBFbGVtZW50KGVsZW1lbnQpO1xuICBsZXQgc2NhbGUgPSBjcmVhdGVDb29yZHMoMSk7XG4gIGlmIChpbmNsdWRlU2NhbGUpIHtcbiAgICBpZiAob2Zmc2V0UGFyZW50KSB7XG4gICAgICBpZiAoaXNFbGVtZW50KG9mZnNldFBhcmVudCkpIHtcbiAgICAgICAgc2NhbGUgPSBnZXRTY2FsZShvZmZzZXRQYXJlbnQpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzY2FsZSA9IGdldFNjYWxlKGVsZW1lbnQpO1xuICAgIH1cbiAgfVxuICBjb25zdCB2aXN1YWxPZmZzZXRzID0gc2hvdWxkQWRkVmlzdWFsT2Zmc2V0cyhkb21FbGVtZW50LCBpc0ZpeGVkU3RyYXRlZ3ksIG9mZnNldFBhcmVudCkgPyBnZXRWaXN1YWxPZmZzZXRzKGRvbUVsZW1lbnQpIDogY3JlYXRlQ29vcmRzKDApO1xuICBsZXQgeCA9IChjbGllbnRSZWN0LmxlZnQgKyB2aXN1YWxPZmZzZXRzLngpIC8gc2NhbGUueDtcbiAgbGV0IHkgPSAoY2xpZW50UmVjdC50b3AgKyB2aXN1YWxPZmZzZXRzLnkpIC8gc2NhbGUueTtcbiAgbGV0IHdpZHRoID0gY2xpZW50UmVjdC53aWR0aCAvIHNjYWxlLng7XG4gIGxldCBoZWlnaHQgPSBjbGllbnRSZWN0LmhlaWdodCAvIHNjYWxlLnk7XG4gIGlmIChkb21FbGVtZW50KSB7XG4gICAgY29uc3Qgd2luID0gZ2V0V2luZG93KGRvbUVsZW1lbnQpO1xuICAgIGNvbnN0IG9mZnNldFdpbiA9IG9mZnNldFBhcmVudCAmJiBpc0VsZW1lbnQob2Zmc2V0UGFyZW50KSA/IGdldFdpbmRvdyhvZmZzZXRQYXJlbnQpIDogb2Zmc2V0UGFyZW50O1xuICAgIGxldCBjdXJyZW50V2luID0gd2luO1xuICAgIGxldCBjdXJyZW50SUZyYW1lID0gZ2V0RnJhbWVFbGVtZW50KGN1cnJlbnRXaW4pO1xuICAgIHdoaWxlIChjdXJyZW50SUZyYW1lICYmIG9mZnNldFBhcmVudCAmJiBvZmZzZXRXaW4gIT09IGN1cnJlbnRXaW4pIHtcbiAgICAgIGNvbnN0IGlmcmFtZVNjYWxlID0gZ2V0U2NhbGUoY3VycmVudElGcmFtZSk7XG4gICAgICBjb25zdCBpZnJhbWVSZWN0ID0gY3VycmVudElGcmFtZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIGNvbnN0IGNzcyA9IGdldENvbXB1dGVkU3R5bGUoY3VycmVudElGcmFtZSk7XG4gICAgICBjb25zdCBsZWZ0ID0gaWZyYW1lUmVjdC5sZWZ0ICsgKGN1cnJlbnRJRnJhbWUuY2xpZW50TGVmdCArIHBhcnNlRmxvYXQoY3NzLnBhZGRpbmdMZWZ0KSkgKiBpZnJhbWVTY2FsZS54O1xuICAgICAgY29uc3QgdG9wID0gaWZyYW1lUmVjdC50b3AgKyAoY3VycmVudElGcmFtZS5jbGllbnRUb3AgKyBwYXJzZUZsb2F0KGNzcy5wYWRkaW5nVG9wKSkgKiBpZnJhbWVTY2FsZS55O1xuICAgICAgeCAqPSBpZnJhbWVTY2FsZS54O1xuICAgICAgeSAqPSBpZnJhbWVTY2FsZS55O1xuICAgICAgd2lkdGggKj0gaWZyYW1lU2NhbGUueDtcbiAgICAgIGhlaWdodCAqPSBpZnJhbWVTY2FsZS55O1xuICAgICAgeCArPSBsZWZ0O1xuICAgICAgeSArPSB0b3A7XG4gICAgICBjdXJyZW50V2luID0gZ2V0V2luZG93KGN1cnJlbnRJRnJhbWUpO1xuICAgICAgY3VycmVudElGcmFtZSA9IGdldEZyYW1lRWxlbWVudChjdXJyZW50V2luKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlY3RUb0NsaWVudFJlY3Qoe1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICB4LFxuICAgIHlcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0KF9yZWYpIHtcbiAgbGV0IHtcbiAgICBlbGVtZW50cyxcbiAgICByZWN0LFxuICAgIG9mZnNldFBhcmVudCxcbiAgICBzdHJhdGVneVxuICB9ID0gX3JlZjtcbiAgY29uc3QgaXNGaXhlZCA9IHN0cmF0ZWd5ID09PSAnZml4ZWQnO1xuICBjb25zdCBkb2N1bWVudEVsZW1lbnQgPSBnZXREb2N1bWVudEVsZW1lbnQob2Zmc2V0UGFyZW50KTtcbiAgY29uc3QgdG9wTGF5ZXIgPSBlbGVtZW50cyA/IGlzVG9wTGF5ZXIoZWxlbWVudHMuZmxvYXRpbmcpIDogZmFsc2U7XG4gIGlmIChvZmZzZXRQYXJlbnQgPT09IGRvY3VtZW50RWxlbWVudCB8fCB0b3BMYXllciAmJiBpc0ZpeGVkKSB7XG4gICAgcmV0dXJuIHJlY3Q7XG4gIH1cbiAgbGV0IHNjcm9sbCA9IHtcbiAgICBzY3JvbGxMZWZ0OiAwLFxuICAgIHNjcm9sbFRvcDogMFxuICB9O1xuICBsZXQgc2NhbGUgPSBjcmVhdGVDb29yZHMoMSk7XG4gIGNvbnN0IG9mZnNldHMgPSBjcmVhdGVDb29yZHMoMCk7XG4gIGNvbnN0IGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ID0gaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpO1xuICBpZiAoaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgfHwgIWlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ICYmICFpc0ZpeGVkKSB7XG4gICAgaWYgKGdldE5vZGVOYW1lKG9mZnNldFBhcmVudCkgIT09ICdib2R5JyB8fCBpc092ZXJmbG93RWxlbWVudChkb2N1bWVudEVsZW1lbnQpKSB7XG4gICAgICBzY3JvbGwgPSBnZXROb2RlU2Nyb2xsKG9mZnNldFBhcmVudCk7XG4gICAgfVxuICAgIGlmIChpc0hUTUxFbGVtZW50KG9mZnNldFBhcmVudCkpIHtcbiAgICAgIGNvbnN0IG9mZnNldFJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3Qob2Zmc2V0UGFyZW50KTtcbiAgICAgIHNjYWxlID0gZ2V0U2NhbGUob2Zmc2V0UGFyZW50KTtcbiAgICAgIG9mZnNldHMueCA9IG9mZnNldFJlY3QueCArIG9mZnNldFBhcmVudC5jbGllbnRMZWZ0O1xuICAgICAgb2Zmc2V0cy55ID0gb2Zmc2V0UmVjdC55ICsgb2Zmc2V0UGFyZW50LmNsaWVudFRvcDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB3aWR0aDogcmVjdC53aWR0aCAqIHNjYWxlLngsXG4gICAgaGVpZ2h0OiByZWN0LmhlaWdodCAqIHNjYWxlLnksXG4gICAgeDogcmVjdC54ICogc2NhbGUueCAtIHNjcm9sbC5zY3JvbGxMZWZ0ICogc2NhbGUueCArIG9mZnNldHMueCxcbiAgICB5OiByZWN0LnkgKiBzY2FsZS55IC0gc2Nyb2xsLnNjcm9sbFRvcCAqIHNjYWxlLnkgKyBvZmZzZXRzLnlcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0Q2xpZW50UmVjdHMoZWxlbWVudCkge1xuICByZXR1cm4gQXJyYXkuZnJvbShlbGVtZW50LmdldENsaWVudFJlY3RzKCkpO1xufVxuXG4vLyBJZiA8aHRtbD4gaGFzIGEgQ1NTIHdpZHRoIGdyZWF0ZXIgdGhhbiB0aGUgdmlld3BvcnQsIHRoZW4gdGhpcyB3aWxsIGJlXG4vLyBpbmNvcnJlY3QgZm9yIFJUTC5cbmZ1bmN0aW9uIGdldFdpbmRvd1Njcm9sbEJhclgoZWxlbWVudCwgcmVjdCkge1xuICBjb25zdCBsZWZ0U2Nyb2xsID0gZ2V0Tm9kZVNjcm9sbChlbGVtZW50KS5zY3JvbGxMZWZ0O1xuICBpZiAoIXJlY3QpIHtcbiAgICByZXR1cm4gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KSkubGVmdCArIGxlZnRTY3JvbGw7XG4gIH1cbiAgcmV0dXJuIHJlY3QubGVmdCArIGxlZnRTY3JvbGw7XG59XG5cbi8vIEdldHMgdGhlIGVudGlyZSBzaXplIG9mIHRoZSBzY3JvbGxhYmxlIGRvY3VtZW50IGFyZWEsIGV2ZW4gZXh0ZW5kaW5nIG91dHNpZGVcbi8vIG9mIHRoZSBgPGh0bWw+YCBhbmQgYDxib2R5PmAgcmVjdCBib3VuZHMgaWYgaG9yaXpvbnRhbGx5IHNjcm9sbGFibGUuXG5mdW5jdGlvbiBnZXREb2N1bWVudFJlY3QoZWxlbWVudCkge1xuICBjb25zdCBodG1sID0gZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpO1xuICBjb25zdCBzY3JvbGwgPSBnZXROb2RlU2Nyb2xsKGVsZW1lbnQpO1xuICBjb25zdCBib2R5ID0gZWxlbWVudC5vd25lckRvY3VtZW50LmJvZHk7XG4gIGNvbnN0IHdpZHRoID0gbWF4KGh0bWwuc2Nyb2xsV2lkdGgsIGh0bWwuY2xpZW50V2lkdGgsIGJvZHkuc2Nyb2xsV2lkdGgsIGJvZHkuY2xpZW50V2lkdGgpO1xuICBjb25zdCBoZWlnaHQgPSBtYXgoaHRtbC5zY3JvbGxIZWlnaHQsIGh0bWwuY2xpZW50SGVpZ2h0LCBib2R5LnNjcm9sbEhlaWdodCwgYm9keS5jbGllbnRIZWlnaHQpO1xuICBsZXQgeCA9IC1zY3JvbGwuc2Nyb2xsTGVmdCArIGdldFdpbmRvd1Njcm9sbEJhclgoZWxlbWVudCk7XG4gIGNvbnN0IHkgPSAtc2Nyb2xsLnNjcm9sbFRvcDtcbiAgaWYgKGdldENvbXB1dGVkU3R5bGUoYm9keSkuZGlyZWN0aW9uID09PSAncnRsJykge1xuICAgIHggKz0gbWF4KGh0bWwuY2xpZW50V2lkdGgsIGJvZHkuY2xpZW50V2lkdGgpIC0gd2lkdGg7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgeCxcbiAgICB5XG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldFZpZXdwb3J0UmVjdChlbGVtZW50LCBzdHJhdGVneSkge1xuICBjb25zdCB3aW4gPSBnZXRXaW5kb3coZWxlbWVudCk7XG4gIGNvbnN0IGh0bWwgPSBnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCk7XG4gIGNvbnN0IHZpc3VhbFZpZXdwb3J0ID0gd2luLnZpc3VhbFZpZXdwb3J0O1xuICBsZXQgd2lkdGggPSBodG1sLmNsaWVudFdpZHRoO1xuICBsZXQgaGVpZ2h0ID0gaHRtbC5jbGllbnRIZWlnaHQ7XG4gIGxldCB4ID0gMDtcbiAgbGV0IHkgPSAwO1xuICBpZiAodmlzdWFsVmlld3BvcnQpIHtcbiAgICB3aWR0aCA9IHZpc3VhbFZpZXdwb3J0LndpZHRoO1xuICAgIGhlaWdodCA9IHZpc3VhbFZpZXdwb3J0LmhlaWdodDtcbiAgICBjb25zdCB2aXN1YWxWaWV3cG9ydEJhc2VkID0gaXNXZWJLaXQoKTtcbiAgICBpZiAoIXZpc3VhbFZpZXdwb3J0QmFzZWQgfHwgdmlzdWFsVmlld3BvcnRCYXNlZCAmJiBzdHJhdGVneSA9PT0gJ2ZpeGVkJykge1xuICAgICAgeCA9IHZpc3VhbFZpZXdwb3J0Lm9mZnNldExlZnQ7XG4gICAgICB5ID0gdmlzdWFsVmlld3BvcnQub2Zmc2V0VG9wO1xuICAgIH1cbiAgfVxuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICB4LFxuICAgIHlcbiAgfTtcbn1cblxuLy8gUmV0dXJucyB0aGUgaW5uZXIgY2xpZW50IHJlY3QsIHN1YnRyYWN0aW5nIHNjcm9sbGJhcnMgaWYgcHJlc2VudC5cbmZ1bmN0aW9uIGdldElubmVyQm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnQsIHN0cmF0ZWd5KSB7XG4gIGNvbnN0IGNsaWVudFJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgdHJ1ZSwgc3RyYXRlZ3kgPT09ICdmaXhlZCcpO1xuICBjb25zdCB0b3AgPSBjbGllbnRSZWN0LnRvcCArIGVsZW1lbnQuY2xpZW50VG9wO1xuICBjb25zdCBsZWZ0ID0gY2xpZW50UmVjdC5sZWZ0ICsgZWxlbWVudC5jbGllbnRMZWZ0O1xuICBjb25zdCBzY2FsZSA9IGlzSFRNTEVsZW1lbnQoZWxlbWVudCkgPyBnZXRTY2FsZShlbGVtZW50KSA6IGNyZWF0ZUNvb3JkcygxKTtcbiAgY29uc3Qgd2lkdGggPSBlbGVtZW50LmNsaWVudFdpZHRoICogc2NhbGUueDtcbiAgY29uc3QgaGVpZ2h0ID0gZWxlbWVudC5jbGllbnRIZWlnaHQgKiBzY2FsZS55O1xuICBjb25zdCB4ID0gbGVmdCAqIHNjYWxlLng7XG4gIGNvbnN0IHkgPSB0b3AgKiBzY2FsZS55O1xuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICB4LFxuICAgIHlcbiAgfTtcbn1cbmZ1bmN0aW9uIGdldENsaWVudFJlY3RGcm9tQ2xpcHBpbmdBbmNlc3RvcihlbGVtZW50LCBjbGlwcGluZ0FuY2VzdG9yLCBzdHJhdGVneSkge1xuICBsZXQgcmVjdDtcbiAgaWYgKGNsaXBwaW5nQW5jZXN0b3IgPT09ICd2aWV3cG9ydCcpIHtcbiAgICByZWN0ID0gZ2V0Vmlld3BvcnRSZWN0KGVsZW1lbnQsIHN0cmF0ZWd5KTtcbiAgfSBlbHNlIGlmIChjbGlwcGluZ0FuY2VzdG9yID09PSAnZG9jdW1lbnQnKSB7XG4gICAgcmVjdCA9IGdldERvY3VtZW50UmVjdChnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkpO1xuICB9IGVsc2UgaWYgKGlzRWxlbWVudChjbGlwcGluZ0FuY2VzdG9yKSkge1xuICAgIHJlY3QgPSBnZXRJbm5lckJvdW5kaW5nQ2xpZW50UmVjdChjbGlwcGluZ0FuY2VzdG9yLCBzdHJhdGVneSk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgdmlzdWFsT2Zmc2V0cyA9IGdldFZpc3VhbE9mZnNldHMoZWxlbWVudCk7XG4gICAgcmVjdCA9IHtcbiAgICAgIC4uLmNsaXBwaW5nQW5jZXN0b3IsXG4gICAgICB4OiBjbGlwcGluZ0FuY2VzdG9yLnggLSB2aXN1YWxPZmZzZXRzLngsXG4gICAgICB5OiBjbGlwcGluZ0FuY2VzdG9yLnkgLSB2aXN1YWxPZmZzZXRzLnlcbiAgICB9O1xuICB9XG4gIHJldHVybiByZWN0VG9DbGllbnRSZWN0KHJlY3QpO1xufVxuZnVuY3Rpb24gaGFzRml4ZWRQb3NpdGlvbkFuY2VzdG9yKGVsZW1lbnQsIHN0b3BOb2RlKSB7XG4gIGNvbnN0IHBhcmVudE5vZGUgPSBnZXRQYXJlbnROb2RlKGVsZW1lbnQpO1xuICBpZiAocGFyZW50Tm9kZSA9PT0gc3RvcE5vZGUgfHwgIWlzRWxlbWVudChwYXJlbnROb2RlKSB8fCBpc0xhc3RUcmF2ZXJzYWJsZU5vZGUocGFyZW50Tm9kZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIGdldENvbXB1dGVkU3R5bGUocGFyZW50Tm9kZSkucG9zaXRpb24gPT09ICdmaXhlZCcgfHwgaGFzRml4ZWRQb3NpdGlvbkFuY2VzdG9yKHBhcmVudE5vZGUsIHN0b3BOb2RlKTtcbn1cblxuLy8gQSBcImNsaXBwaW5nIGFuY2VzdG9yXCIgaXMgYW4gYG92ZXJmbG93YCBlbGVtZW50IHdpdGggdGhlIGNoYXJhY3RlcmlzdGljIG9mXG4vLyBjbGlwcGluZyAob3IgaGlkaW5nKSBjaGlsZCBlbGVtZW50cy4gVGhpcyByZXR1cm5zIGFsbCBjbGlwcGluZyBhbmNlc3RvcnNcbi8vIG9mIHRoZSBnaXZlbiBlbGVtZW50IHVwIHRoZSB0cmVlLlxuZnVuY3Rpb24gZ2V0Q2xpcHBpbmdFbGVtZW50QW5jZXN0b3JzKGVsZW1lbnQsIGNhY2hlKSB7XG4gIGNvbnN0IGNhY2hlZFJlc3VsdCA9IGNhY2hlLmdldChlbGVtZW50KTtcbiAgaWYgKGNhY2hlZFJlc3VsdCkge1xuICAgIHJldHVybiBjYWNoZWRSZXN1bHQ7XG4gIH1cbiAgbGV0IHJlc3VsdCA9IGdldE92ZXJmbG93QW5jZXN0b3JzKGVsZW1lbnQsIFtdLCBmYWxzZSkuZmlsdGVyKGVsID0+IGlzRWxlbWVudChlbCkgJiYgZ2V0Tm9kZU5hbWUoZWwpICE9PSAnYm9keScpO1xuICBsZXQgY3VycmVudENvbnRhaW5pbmdCbG9ja0NvbXB1dGVkU3R5bGUgPSBudWxsO1xuICBjb25zdCBlbGVtZW50SXNGaXhlZCA9IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkucG9zaXRpb24gPT09ICdmaXhlZCc7XG4gIGxldCBjdXJyZW50Tm9kZSA9IGVsZW1lbnRJc0ZpeGVkID8gZ2V0UGFyZW50Tm9kZShlbGVtZW50KSA6IGVsZW1lbnQ7XG5cbiAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL0NvbnRhaW5pbmdfYmxvY2sjaWRlbnRpZnlpbmdfdGhlX2NvbnRhaW5pbmdfYmxvY2tcbiAgd2hpbGUgKGlzRWxlbWVudChjdXJyZW50Tm9kZSkgJiYgIWlzTGFzdFRyYXZlcnNhYmxlTm9kZShjdXJyZW50Tm9kZSkpIHtcbiAgICBjb25zdCBjb21wdXRlZFN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShjdXJyZW50Tm9kZSk7XG4gICAgY29uc3QgY3VycmVudE5vZGVJc0NvbnRhaW5pbmcgPSBpc0NvbnRhaW5pbmdCbG9jayhjdXJyZW50Tm9kZSk7XG4gICAgaWYgKCFjdXJyZW50Tm9kZUlzQ29udGFpbmluZyAmJiBjb21wdXRlZFN0eWxlLnBvc2l0aW9uID09PSAnZml4ZWQnKSB7XG4gICAgICBjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSA9IG51bGw7XG4gICAgfVxuICAgIGNvbnN0IHNob3VsZERyb3BDdXJyZW50Tm9kZSA9IGVsZW1lbnRJc0ZpeGVkID8gIWN1cnJlbnROb2RlSXNDb250YWluaW5nICYmICFjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSA6ICFjdXJyZW50Tm9kZUlzQ29udGFpbmluZyAmJiBjb21wdXRlZFN0eWxlLnBvc2l0aW9uID09PSAnc3RhdGljJyAmJiAhIWN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlICYmIFsnYWJzb2x1dGUnLCAnZml4ZWQnXS5pbmNsdWRlcyhjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZS5wb3NpdGlvbikgfHwgaXNPdmVyZmxvd0VsZW1lbnQoY3VycmVudE5vZGUpICYmICFjdXJyZW50Tm9kZUlzQ29udGFpbmluZyAmJiBoYXNGaXhlZFBvc2l0aW9uQW5jZXN0b3IoZWxlbWVudCwgY3VycmVudE5vZGUpO1xuICAgIGlmIChzaG91bGREcm9wQ3VycmVudE5vZGUpIHtcbiAgICAgIC8vIERyb3Agbm9uLWNvbnRhaW5pbmcgYmxvY2tzLlxuICAgICAgcmVzdWx0ID0gcmVzdWx0LmZpbHRlcihhbmNlc3RvciA9PiBhbmNlc3RvciAhPT0gY3VycmVudE5vZGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBSZWNvcmQgbGFzdCBjb250YWluaW5nIGJsb2NrIGZvciBuZXh0IGl0ZXJhdGlvbi5cbiAgICAgIGN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlID0gY29tcHV0ZWRTdHlsZTtcbiAgICB9XG4gICAgY3VycmVudE5vZGUgPSBnZXRQYXJlbnROb2RlKGN1cnJlbnROb2RlKTtcbiAgfVxuICBjYWNoZS5zZXQoZWxlbWVudCwgcmVzdWx0KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLy8gR2V0cyB0aGUgbWF4aW11bSBhcmVhIHRoYXQgdGhlIGVsZW1lbnQgaXMgdmlzaWJsZSBpbiBkdWUgdG8gYW55IG51bWJlciBvZlxuLy8gY2xpcHBpbmcgYW5jZXN0b3JzLlxuZnVuY3Rpb24gZ2V0Q2xpcHBpbmdSZWN0KF9yZWYpIHtcbiAgbGV0IHtcbiAgICBlbGVtZW50LFxuICAgIGJvdW5kYXJ5LFxuICAgIHJvb3RCb3VuZGFyeSxcbiAgICBzdHJhdGVneVxuICB9ID0gX3JlZjtcbiAgY29uc3QgZWxlbWVudENsaXBwaW5nQW5jZXN0b3JzID0gYm91bmRhcnkgPT09ICdjbGlwcGluZ0FuY2VzdG9ycycgPyBpc1RvcExheWVyKGVsZW1lbnQpID8gW10gOiBnZXRDbGlwcGluZ0VsZW1lbnRBbmNlc3RvcnMoZWxlbWVudCwgdGhpcy5fYykgOiBbXS5jb25jYXQoYm91bmRhcnkpO1xuICBjb25zdCBjbGlwcGluZ0FuY2VzdG9ycyA9IFsuLi5lbGVtZW50Q2xpcHBpbmdBbmNlc3RvcnMsIHJvb3RCb3VuZGFyeV07XG4gIGNvbnN0IGZpcnN0Q2xpcHBpbmdBbmNlc3RvciA9IGNsaXBwaW5nQW5jZXN0b3JzWzBdO1xuICBjb25zdCBjbGlwcGluZ1JlY3QgPSBjbGlwcGluZ0FuY2VzdG9ycy5yZWR1Y2UoKGFjY1JlY3QsIGNsaXBwaW5nQW5jZXN0b3IpID0+IHtcbiAgICBjb25zdCByZWN0ID0gZ2V0Q2xpZW50UmVjdEZyb21DbGlwcGluZ0FuY2VzdG9yKGVsZW1lbnQsIGNsaXBwaW5nQW5jZXN0b3IsIHN0cmF0ZWd5KTtcbiAgICBhY2NSZWN0LnRvcCA9IG1heChyZWN0LnRvcCwgYWNjUmVjdC50b3ApO1xuICAgIGFjY1JlY3QucmlnaHQgPSBtaW4ocmVjdC5yaWdodCwgYWNjUmVjdC5yaWdodCk7XG4gICAgYWNjUmVjdC5ib3R0b20gPSBtaW4ocmVjdC5ib3R0b20sIGFjY1JlY3QuYm90dG9tKTtcbiAgICBhY2NSZWN0LmxlZnQgPSBtYXgocmVjdC5sZWZ0LCBhY2NSZWN0LmxlZnQpO1xuICAgIHJldHVybiBhY2NSZWN0O1xuICB9LCBnZXRDbGllbnRSZWN0RnJvbUNsaXBwaW5nQW5jZXN0b3IoZWxlbWVudCwgZmlyc3RDbGlwcGluZ0FuY2VzdG9yLCBzdHJhdGVneSkpO1xuICByZXR1cm4ge1xuICAgIHdpZHRoOiBjbGlwcGluZ1JlY3QucmlnaHQgLSBjbGlwcGluZ1JlY3QubGVmdCxcbiAgICBoZWlnaHQ6IGNsaXBwaW5nUmVjdC5ib3R0b20gLSBjbGlwcGluZ1JlY3QudG9wLFxuICAgIHg6IGNsaXBwaW5nUmVjdC5sZWZ0LFxuICAgIHk6IGNsaXBwaW5nUmVjdC50b3BcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0RGltZW5zaW9ucyhlbGVtZW50KSB7XG4gIGNvbnN0IHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHRcbiAgfSA9IGdldENzc0RpbWVuc2lvbnMoZWxlbWVudCk7XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0XG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldFJlY3RSZWxhdGl2ZVRvT2Zmc2V0UGFyZW50KGVsZW1lbnQsIG9mZnNldFBhcmVudCwgc3RyYXRlZ3kpIHtcbiAgY29uc3QgaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgPSBpc0hUTUxFbGVtZW50KG9mZnNldFBhcmVudCk7XG4gIGNvbnN0IGRvY3VtZW50RWxlbWVudCA9IGdldERvY3VtZW50RWxlbWVudChvZmZzZXRQYXJlbnQpO1xuICBjb25zdCBpc0ZpeGVkID0gc3RyYXRlZ3kgPT09ICdmaXhlZCc7XG4gIGNvbnN0IHJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgdHJ1ZSwgaXNGaXhlZCwgb2Zmc2V0UGFyZW50KTtcbiAgbGV0IHNjcm9sbCA9IHtcbiAgICBzY3JvbGxMZWZ0OiAwLFxuICAgIHNjcm9sbFRvcDogMFxuICB9O1xuICBjb25zdCBvZmZzZXRzID0gY3JlYXRlQ29vcmRzKDApO1xuICBpZiAoaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgfHwgIWlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ICYmICFpc0ZpeGVkKSB7XG4gICAgaWYgKGdldE5vZGVOYW1lKG9mZnNldFBhcmVudCkgIT09ICdib2R5JyB8fCBpc092ZXJmbG93RWxlbWVudChkb2N1bWVudEVsZW1lbnQpKSB7XG4gICAgICBzY3JvbGwgPSBnZXROb2RlU2Nyb2xsKG9mZnNldFBhcmVudCk7XG4gICAgfVxuICAgIGlmIChpc09mZnNldFBhcmVudEFuRWxlbWVudCkge1xuICAgICAgY29uc3Qgb2Zmc2V0UmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChvZmZzZXRQYXJlbnQsIHRydWUsIGlzRml4ZWQsIG9mZnNldFBhcmVudCk7XG4gICAgICBvZmZzZXRzLnggPSBvZmZzZXRSZWN0LnggKyBvZmZzZXRQYXJlbnQuY2xpZW50TGVmdDtcbiAgICAgIG9mZnNldHMueSA9IG9mZnNldFJlY3QueSArIG9mZnNldFBhcmVudC5jbGllbnRUb3A7XG4gICAgfSBlbHNlIGlmIChkb2N1bWVudEVsZW1lbnQpIHtcbiAgICAgIC8vIElmIHRoZSA8Ym9keT4gc2Nyb2xsYmFyIGFwcGVhcnMgb24gdGhlIGxlZnQgKGUuZy4gUlRMIHN5c3RlbXMpLiBVc2VcbiAgICAgIC8vIEZpcmVmb3ggd2l0aCBsYXlvdXQuc2Nyb2xsYmFyLnNpZGUgPSAzIGluIGFib3V0OmNvbmZpZyB0byB0ZXN0IHRoaXMuXG4gICAgICBvZmZzZXRzLnggPSBnZXRXaW5kb3dTY3JvbGxCYXJYKGRvY3VtZW50RWxlbWVudCk7XG4gICAgfVxuICB9XG4gIGxldCBodG1sWCA9IDA7XG4gIGxldCBodG1sWSA9IDA7XG4gIGlmIChkb2N1bWVudEVsZW1lbnQgJiYgIWlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ICYmICFpc0ZpeGVkKSB7XG4gICAgY29uc3QgaHRtbFJlY3QgPSBkb2N1bWVudEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgaHRtbFkgPSBodG1sUmVjdC50b3AgKyBzY3JvbGwuc2Nyb2xsVG9wO1xuICAgIGh0bWxYID0gaHRtbFJlY3QubGVmdCArIHNjcm9sbC5zY3JvbGxMZWZ0IC1cbiAgICAvLyBSVEwgPGJvZHk+IHNjcm9sbGJhci5cbiAgICBnZXRXaW5kb3dTY3JvbGxCYXJYKGRvY3VtZW50RWxlbWVudCwgaHRtbFJlY3QpO1xuICB9XG4gIGNvbnN0IHggPSByZWN0LmxlZnQgKyBzY3JvbGwuc2Nyb2xsTGVmdCAtIG9mZnNldHMueCAtIGh0bWxYO1xuICBjb25zdCB5ID0gcmVjdC50b3AgKyBzY3JvbGwuc2Nyb2xsVG9wIC0gb2Zmc2V0cy55IC0gaHRtbFk7XG4gIHJldHVybiB7XG4gICAgeCxcbiAgICB5LFxuICAgIHdpZHRoOiByZWN0LndpZHRoLFxuICAgIGhlaWdodDogcmVjdC5oZWlnaHRcbiAgfTtcbn1cblxuZnVuY3Rpb24gaXNTdGF0aWNQb3NpdGlvbmVkKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkucG9zaXRpb24gPT09ICdzdGF0aWMnO1xufVxuXG5mdW5jdGlvbiBnZXRUcnVlT2Zmc2V0UGFyZW50KGVsZW1lbnQsIHBvbHlmaWxsKSB7XG4gIGlmICghaXNIVE1MRWxlbWVudChlbGVtZW50KSB8fCBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLnBvc2l0aW9uID09PSAnZml4ZWQnKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgaWYgKHBvbHlmaWxsKSB7XG4gICAgcmV0dXJuIHBvbHlmaWxsKGVsZW1lbnQpO1xuICB9XG4gIGxldCByYXdPZmZzZXRQYXJlbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDtcblxuICAvLyBGaXJlZm94IHJldHVybnMgdGhlIDxodG1sPiBlbGVtZW50IGFzIHRoZSBvZmZzZXRQYXJlbnQgaWYgaXQncyBub24tc3RhdGljLFxuICAvLyB3aGlsZSBDaHJvbWUgYW5kIFNhZmFyaSByZXR1cm4gdGhlIDxib2R5PiBlbGVtZW50LiBUaGUgPGJvZHk+IGVsZW1lbnQgbXVzdFxuICAvLyBiZSB1c2VkIHRvIHBlcmZvcm0gdGhlIGNvcnJlY3QgY2FsY3VsYXRpb25zIGV2ZW4gaWYgdGhlIDxodG1sPiBlbGVtZW50IGlzXG4gIC8vIG5vbi1zdGF0aWMuXG4gIGlmIChnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkgPT09IHJhd09mZnNldFBhcmVudCkge1xuICAgIHJhd09mZnNldFBhcmVudCA9IHJhd09mZnNldFBhcmVudC5vd25lckRvY3VtZW50LmJvZHk7XG4gIH1cbiAgcmV0dXJuIHJhd09mZnNldFBhcmVudDtcbn1cblxuLy8gR2V0cyB0aGUgY2xvc2VzdCBhbmNlc3RvciBwb3NpdGlvbmVkIGVsZW1lbnQuIEhhbmRsZXMgc29tZSBlZGdlIGNhc2VzLFxuLy8gc3VjaCBhcyB0YWJsZSBhbmNlc3RvcnMgYW5kIGNyb3NzIGJyb3dzZXIgYnVncy5cbmZ1bmN0aW9uIGdldE9mZnNldFBhcmVudChlbGVtZW50LCBwb2x5ZmlsbCkge1xuICBjb25zdCB3aW4gPSBnZXRXaW5kb3coZWxlbWVudCk7XG4gIGlmIChpc1RvcExheWVyKGVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIHdpbjtcbiAgfVxuICBpZiAoIWlzSFRNTEVsZW1lbnQoZWxlbWVudCkpIHtcbiAgICBsZXQgc3ZnT2Zmc2V0UGFyZW50ID0gZ2V0UGFyZW50Tm9kZShlbGVtZW50KTtcbiAgICB3aGlsZSAoc3ZnT2Zmc2V0UGFyZW50ICYmICFpc0xhc3RUcmF2ZXJzYWJsZU5vZGUoc3ZnT2Zmc2V0UGFyZW50KSkge1xuICAgICAgaWYgKGlzRWxlbWVudChzdmdPZmZzZXRQYXJlbnQpICYmICFpc1N0YXRpY1Bvc2l0aW9uZWQoc3ZnT2Zmc2V0UGFyZW50KSkge1xuICAgICAgICByZXR1cm4gc3ZnT2Zmc2V0UGFyZW50O1xuICAgICAgfVxuICAgICAgc3ZnT2Zmc2V0UGFyZW50ID0gZ2V0UGFyZW50Tm9kZShzdmdPZmZzZXRQYXJlbnQpO1xuICAgIH1cbiAgICByZXR1cm4gd2luO1xuICB9XG4gIGxldCBvZmZzZXRQYXJlbnQgPSBnZXRUcnVlT2Zmc2V0UGFyZW50KGVsZW1lbnQsIHBvbHlmaWxsKTtcbiAgd2hpbGUgKG9mZnNldFBhcmVudCAmJiBpc1RhYmxlRWxlbWVudChvZmZzZXRQYXJlbnQpICYmIGlzU3RhdGljUG9zaXRpb25lZChvZmZzZXRQYXJlbnQpKSB7XG4gICAgb2Zmc2V0UGFyZW50ID0gZ2V0VHJ1ZU9mZnNldFBhcmVudChvZmZzZXRQYXJlbnQsIHBvbHlmaWxsKTtcbiAgfVxuICBpZiAob2Zmc2V0UGFyZW50ICYmIGlzTGFzdFRyYXZlcnNhYmxlTm9kZShvZmZzZXRQYXJlbnQpICYmIGlzU3RhdGljUG9zaXRpb25lZChvZmZzZXRQYXJlbnQpICYmICFpc0NvbnRhaW5pbmdCbG9jayhvZmZzZXRQYXJlbnQpKSB7XG4gICAgcmV0dXJuIHdpbjtcbiAgfVxuICByZXR1cm4gb2Zmc2V0UGFyZW50IHx8IGdldENvbnRhaW5pbmdCbG9jayhlbGVtZW50KSB8fCB3aW47XG59XG5cbmNvbnN0IGdldEVsZW1lbnRSZWN0cyA9IGFzeW5jIGZ1bmN0aW9uIChkYXRhKSB7XG4gIGNvbnN0IGdldE9mZnNldFBhcmVudEZuID0gdGhpcy5nZXRPZmZzZXRQYXJlbnQgfHwgZ2V0T2Zmc2V0UGFyZW50O1xuICBjb25zdCBnZXREaW1lbnNpb25zRm4gPSB0aGlzLmdldERpbWVuc2lvbnM7XG4gIGNvbnN0IGZsb2F0aW5nRGltZW5zaW9ucyA9IGF3YWl0IGdldERpbWVuc2lvbnNGbihkYXRhLmZsb2F0aW5nKTtcbiAgcmV0dXJuIHtcbiAgICByZWZlcmVuY2U6IGdldFJlY3RSZWxhdGl2ZVRvT2Zmc2V0UGFyZW50KGRhdGEucmVmZXJlbmNlLCBhd2FpdCBnZXRPZmZzZXRQYXJlbnRGbihkYXRhLmZsb2F0aW5nKSwgZGF0YS5zdHJhdGVneSksXG4gICAgZmxvYXRpbmc6IHtcbiAgICAgIHg6IDAsXG4gICAgICB5OiAwLFxuICAgICAgd2lkdGg6IGZsb2F0aW5nRGltZW5zaW9ucy53aWR0aCxcbiAgICAgIGhlaWdodDogZmxvYXRpbmdEaW1lbnNpb25zLmhlaWdodFxuICAgIH1cbiAgfTtcbn07XG5cbmZ1bmN0aW9uIGlzUlRMKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkuZGlyZWN0aW9uID09PSAncnRsJztcbn1cblxuY29uc3QgcGxhdGZvcm0gPSB7XG4gIGNvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0LFxuICBnZXREb2N1bWVudEVsZW1lbnQsXG4gIGdldENsaXBwaW5nUmVjdCxcbiAgZ2V0T2Zmc2V0UGFyZW50LFxuICBnZXRFbGVtZW50UmVjdHMsXG4gIGdldENsaWVudFJlY3RzLFxuICBnZXREaW1lbnNpb25zLFxuICBnZXRTY2FsZSxcbiAgaXNFbGVtZW50LFxuICBpc1JUTFxufTtcblxuLy8gaHR0cHM6Ly9zYW10aG9yLmF1LzIwMjEvb2JzZXJ2aW5nLWRvbS9cbmZ1bmN0aW9uIG9ic2VydmVNb3ZlKGVsZW1lbnQsIG9uTW92ZSkge1xuICBsZXQgaW8gPSBudWxsO1xuICBsZXQgdGltZW91dElkO1xuICBjb25zdCByb290ID0gZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpO1xuICBmdW5jdGlvbiBjbGVhbnVwKCkge1xuICAgIHZhciBfaW87XG4gICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG4gICAgKF9pbyA9IGlvKSA9PSBudWxsIHx8IF9pby5kaXNjb25uZWN0KCk7XG4gICAgaW8gPSBudWxsO1xuICB9XG4gIGZ1bmN0aW9uIHJlZnJlc2goc2tpcCwgdGhyZXNob2xkKSB7XG4gICAgaWYgKHNraXAgPT09IHZvaWQgMCkge1xuICAgICAgc2tpcCA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAodGhyZXNob2xkID09PSB2b2lkIDApIHtcbiAgICAgIHRocmVzaG9sZCA9IDE7XG4gICAgfVxuICAgIGNsZWFudXAoKTtcbiAgICBjb25zdCB7XG4gICAgICBsZWZ0LFxuICAgICAgdG9wLFxuICAgICAgd2lkdGgsXG4gICAgICBoZWlnaHRcbiAgICB9ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBpZiAoIXNraXApIHtcbiAgICAgIG9uTW92ZSgpO1xuICAgIH1cbiAgICBpZiAoIXdpZHRoIHx8ICFoZWlnaHQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgaW5zZXRUb3AgPSBmbG9vcih0b3ApO1xuICAgIGNvbnN0IGluc2V0UmlnaHQgPSBmbG9vcihyb290LmNsaWVudFdpZHRoIC0gKGxlZnQgKyB3aWR0aCkpO1xuICAgIGNvbnN0IGluc2V0Qm90dG9tID0gZmxvb3Iocm9vdC5jbGllbnRIZWlnaHQgLSAodG9wICsgaGVpZ2h0KSk7XG4gICAgY29uc3QgaW5zZXRMZWZ0ID0gZmxvb3IobGVmdCk7XG4gICAgY29uc3Qgcm9vdE1hcmdpbiA9IC1pbnNldFRvcCArIFwicHggXCIgKyAtaW5zZXRSaWdodCArIFwicHggXCIgKyAtaW5zZXRCb3R0b20gKyBcInB4IFwiICsgLWluc2V0TGVmdCArIFwicHhcIjtcbiAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgcm9vdE1hcmdpbixcbiAgICAgIHRocmVzaG9sZDogbWF4KDAsIG1pbigxLCB0aHJlc2hvbGQpKSB8fCAxXG4gICAgfTtcbiAgICBsZXQgaXNGaXJzdFVwZGF0ZSA9IHRydWU7XG4gICAgZnVuY3Rpb24gaGFuZGxlT2JzZXJ2ZShlbnRyaWVzKSB7XG4gICAgICBjb25zdCByYXRpbyA9IGVudHJpZXNbMF0uaW50ZXJzZWN0aW9uUmF0aW87XG4gICAgICBpZiAocmF0aW8gIT09IHRocmVzaG9sZCkge1xuICAgICAgICBpZiAoIWlzRmlyc3RVcGRhdGUpIHtcbiAgICAgICAgICByZXR1cm4gcmVmcmVzaCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghcmF0aW8pIHtcbiAgICAgICAgICAvLyBJZiB0aGUgcmVmZXJlbmNlIGlzIGNsaXBwZWQsIHRoZSByYXRpbyBpcyAwLiBUaHJvdHRsZSB0aGUgcmVmcmVzaFxuICAgICAgICAgIC8vIHRvIHByZXZlbnQgYW4gaW5maW5pdGUgbG9vcCBvZiB1cGRhdGVzLlxuICAgICAgICAgIHRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgcmVmcmVzaChmYWxzZSwgMWUtNyk7XG4gICAgICAgICAgfSwgMTAwMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVmcmVzaChmYWxzZSwgcmF0aW8pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpc0ZpcnN0VXBkYXRlID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gT2xkZXIgYnJvd3NlcnMgZG9uJ3Qgc3VwcG9ydCBhIGBkb2N1bWVudGAgYXMgdGhlIHJvb3QgYW5kIHdpbGwgdGhyb3cgYW5cbiAgICAvLyBlcnJvci5cbiAgICB0cnkge1xuICAgICAgaW8gPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoaGFuZGxlT2JzZXJ2ZSwge1xuICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICAvLyBIYW5kbGUgPGlmcmFtZT5zXG4gICAgICAgIHJvb3Q6IHJvb3Qub3duZXJEb2N1bWVudFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaW8gPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoaGFuZGxlT2JzZXJ2ZSwgb3B0aW9ucyk7XG4gICAgfVxuICAgIGlvLm9ic2VydmUoZWxlbWVudCk7XG4gIH1cbiAgcmVmcmVzaCh0cnVlKTtcbiAgcmV0dXJuIGNsZWFudXA7XG59XG5cbi8qKlxuICogQXV0b21hdGljYWxseSB1cGRhdGVzIHRoZSBwb3NpdGlvbiBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCB3aGVuIG5lY2Vzc2FyeS5cbiAqIFNob3VsZCBvbmx5IGJlIGNhbGxlZCB3aGVuIHRoZSBmbG9hdGluZyBlbGVtZW50IGlzIG1vdW50ZWQgb24gdGhlIERPTSBvclxuICogdmlzaWJsZSBvbiB0aGUgc2NyZWVuLlxuICogQHJldHVybnMgY2xlYW51cCBmdW5jdGlvbiB0aGF0IHNob3VsZCBiZSBpbnZva2VkIHdoZW4gdGhlIGZsb2F0aW5nIGVsZW1lbnQgaXNcbiAqIHJlbW92ZWQgZnJvbSB0aGUgRE9NIG9yIGhpZGRlbiBmcm9tIHRoZSBzY3JlZW4uXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvYXV0b1VwZGF0ZVxuICovXG5mdW5jdGlvbiBhdXRvVXBkYXRlKHJlZmVyZW5jZSwgZmxvYXRpbmcsIHVwZGF0ZSwgb3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIGNvbnN0IHtcbiAgICBhbmNlc3RvclNjcm9sbCA9IHRydWUsXG4gICAgYW5jZXN0b3JSZXNpemUgPSB0cnVlLFxuICAgIGVsZW1lbnRSZXNpemUgPSB0eXBlb2YgUmVzaXplT2JzZXJ2ZXIgPT09ICdmdW5jdGlvbicsXG4gICAgbGF5b3V0U2hpZnQgPSB0eXBlb2YgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgPT09ICdmdW5jdGlvbicsXG4gICAgYW5pbWF0aW9uRnJhbWUgPSBmYWxzZVxuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgcmVmZXJlbmNlRWwgPSB1bndyYXBFbGVtZW50KHJlZmVyZW5jZSk7XG4gIGNvbnN0IGFuY2VzdG9ycyA9IGFuY2VzdG9yU2Nyb2xsIHx8IGFuY2VzdG9yUmVzaXplID8gWy4uLihyZWZlcmVuY2VFbCA/IGdldE92ZXJmbG93QW5jZXN0b3JzKHJlZmVyZW5jZUVsKSA6IFtdKSwgLi4uZ2V0T3ZlcmZsb3dBbmNlc3RvcnMoZmxvYXRpbmcpXSA6IFtdO1xuICBhbmNlc3RvcnMuZm9yRWFjaChhbmNlc3RvciA9PiB7XG4gICAgYW5jZXN0b3JTY3JvbGwgJiYgYW5jZXN0b3IuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdXBkYXRlLCB7XG4gICAgICBwYXNzaXZlOiB0cnVlXG4gICAgfSk7XG4gICAgYW5jZXN0b3JSZXNpemUgJiYgYW5jZXN0b3IuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdXBkYXRlKTtcbiAgfSk7XG4gIGNvbnN0IGNsZWFudXBJbyA9IHJlZmVyZW5jZUVsICYmIGxheW91dFNoaWZ0ID8gb2JzZXJ2ZU1vdmUocmVmZXJlbmNlRWwsIHVwZGF0ZSkgOiBudWxsO1xuICBsZXQgcmVvYnNlcnZlRnJhbWUgPSAtMTtcbiAgbGV0IHJlc2l6ZU9ic2VydmVyID0gbnVsbDtcbiAgaWYgKGVsZW1lbnRSZXNpemUpIHtcbiAgICByZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcihfcmVmID0+IHtcbiAgICAgIGxldCBbZmlyc3RFbnRyeV0gPSBfcmVmO1xuICAgICAgaWYgKGZpcnN0RW50cnkgJiYgZmlyc3RFbnRyeS50YXJnZXQgPT09IHJlZmVyZW5jZUVsICYmIHJlc2l6ZU9ic2VydmVyKSB7XG4gICAgICAgIC8vIFByZXZlbnQgdXBkYXRlIGxvb3BzIHdoZW4gdXNpbmcgdGhlIGBzaXplYCBtaWRkbGV3YXJlLlxuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmxvYXRpbmctdWkvZmxvYXRpbmctdWkvaXNzdWVzLzE3NDBcbiAgICAgICAgcmVzaXplT2JzZXJ2ZXIudW5vYnNlcnZlKGZsb2F0aW5nKTtcbiAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUocmVvYnNlcnZlRnJhbWUpO1xuICAgICAgICByZW9ic2VydmVGcmFtZSA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgdmFyIF9yZXNpemVPYnNlcnZlcjtcbiAgICAgICAgICAoX3Jlc2l6ZU9ic2VydmVyID0gcmVzaXplT2JzZXJ2ZXIpID09IG51bGwgfHwgX3Jlc2l6ZU9ic2VydmVyLm9ic2VydmUoZmxvYXRpbmcpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHVwZGF0ZSgpO1xuICAgIH0pO1xuICAgIGlmIChyZWZlcmVuY2VFbCAmJiAhYW5pbWF0aW9uRnJhbWUpIHtcbiAgICAgIHJlc2l6ZU9ic2VydmVyLm9ic2VydmUocmVmZXJlbmNlRWwpO1xuICAgIH1cbiAgICByZXNpemVPYnNlcnZlci5vYnNlcnZlKGZsb2F0aW5nKTtcbiAgfVxuICBsZXQgZnJhbWVJZDtcbiAgbGV0IHByZXZSZWZSZWN0ID0gYW5pbWF0aW9uRnJhbWUgPyBnZXRCb3VuZGluZ0NsaWVudFJlY3QocmVmZXJlbmNlKSA6IG51bGw7XG4gIGlmIChhbmltYXRpb25GcmFtZSkge1xuICAgIGZyYW1lTG9vcCgpO1xuICB9XG4gIGZ1bmN0aW9uIGZyYW1lTG9vcCgpIHtcbiAgICBjb25zdCBuZXh0UmVmUmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChyZWZlcmVuY2UpO1xuICAgIGlmIChwcmV2UmVmUmVjdCAmJiAobmV4dFJlZlJlY3QueCAhPT0gcHJldlJlZlJlY3QueCB8fCBuZXh0UmVmUmVjdC55ICE9PSBwcmV2UmVmUmVjdC55IHx8IG5leHRSZWZSZWN0LndpZHRoICE9PSBwcmV2UmVmUmVjdC53aWR0aCB8fCBuZXh0UmVmUmVjdC5oZWlnaHQgIT09IHByZXZSZWZSZWN0LmhlaWdodCkpIHtcbiAgICAgIHVwZGF0ZSgpO1xuICAgIH1cbiAgICBwcmV2UmVmUmVjdCA9IG5leHRSZWZSZWN0O1xuICAgIGZyYW1lSWQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnJhbWVMb29wKTtcbiAgfVxuICB1cGRhdGUoKTtcbiAgcmV0dXJuICgpID0+IHtcbiAgICB2YXIgX3Jlc2l6ZU9ic2VydmVyMjtcbiAgICBhbmNlc3RvcnMuZm9yRWFjaChhbmNlc3RvciA9PiB7XG4gICAgICBhbmNlc3RvclNjcm9sbCAmJiBhbmNlc3Rvci5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB1cGRhdGUpO1xuICAgICAgYW5jZXN0b3JSZXNpemUgJiYgYW5jZXN0b3IucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdXBkYXRlKTtcbiAgICB9KTtcbiAgICBjbGVhbnVwSW8gPT0gbnVsbCB8fCBjbGVhbnVwSW8oKTtcbiAgICAoX3Jlc2l6ZU9ic2VydmVyMiA9IHJlc2l6ZU9ic2VydmVyKSA9PSBudWxsIHx8IF9yZXNpemVPYnNlcnZlcjIuZGlzY29ubmVjdCgpO1xuICAgIHJlc2l6ZU9ic2VydmVyID0gbnVsbDtcbiAgICBpZiAoYW5pbWF0aW9uRnJhbWUpIHtcbiAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKGZyYW1lSWQpO1xuICAgIH1cbiAgfTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlcyB3aXRoIGFuIG9iamVjdCBvZiBvdmVyZmxvdyBzaWRlIG9mZnNldHMgdGhhdCBkZXRlcm1pbmUgaG93IG11Y2ggdGhlXG4gKiBlbGVtZW50IGlzIG92ZXJmbG93aW5nIGEgZ2l2ZW4gY2xpcHBpbmcgYm91bmRhcnkgb24gZWFjaCBzaWRlLlxuICogLSBwb3NpdGl2ZSA9IG92ZXJmbG93aW5nIHRoZSBib3VuZGFyeSBieSB0aGF0IG51bWJlciBvZiBwaXhlbHNcbiAqIC0gbmVnYXRpdmUgPSBob3cgbWFueSBwaXhlbHMgbGVmdCBiZWZvcmUgaXQgd2lsbCBvdmVyZmxvd1xuICogLSAwID0gbGllcyBmbHVzaCB3aXRoIHRoZSBib3VuZGFyeVxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2RldGVjdE92ZXJmbG93XG4gKi9cbmNvbnN0IGRldGVjdE92ZXJmbG93ID0gZGV0ZWN0T3ZlcmZsb3ckMTtcblxuLyoqXG4gKiBNb2RpZmllcyB0aGUgcGxhY2VtZW50IGJ5IHRyYW5zbGF0aW5nIHRoZSBmbG9hdGluZyBlbGVtZW50IGFsb25nIHRoZVxuICogc3BlY2lmaWVkIGF4ZXMuXG4gKiBBIG51bWJlciAoc2hvcnRoYW5kIGZvciBgbWFpbkF4aXNgIG9yIGRpc3RhbmNlKSwgb3IgYW4gYXhlcyBjb25maWd1cmF0aW9uXG4gKiBvYmplY3QgbWF5IGJlIHBhc3NlZC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9vZmZzZXRcbiAqL1xuY29uc3Qgb2Zmc2V0ID0gb2Zmc2V0JDE7XG5cbi8qKlxuICogT3B0aW1pemVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IGJ5IGNob29zaW5nIHRoZSBwbGFjZW1lbnRcbiAqIHRoYXQgaGFzIHRoZSBtb3N0IHNwYWNlIGF2YWlsYWJsZSBhdXRvbWF0aWNhbGx5LCB3aXRob3V0IG5lZWRpbmcgdG8gc3BlY2lmeSBhXG4gKiBwcmVmZXJyZWQgcGxhY2VtZW50LiBBbHRlcm5hdGl2ZSB0byBgZmxpcGAuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvYXV0b1BsYWNlbWVudFxuICovXG5jb25zdCBhdXRvUGxhY2VtZW50ID0gYXV0b1BsYWNlbWVudCQxO1xuXG4vKipcbiAqIE9wdGltaXplcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBieSBzaGlmdGluZyBpdCBpbiBvcmRlciB0b1xuICoga2VlcCBpdCBpbiB2aWV3IHdoZW4gaXQgd2lsbCBvdmVyZmxvdyB0aGUgY2xpcHBpbmcgYm91bmRhcnkuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3Mvc2hpZnRcbiAqL1xuY29uc3Qgc2hpZnQgPSBzaGlmdCQxO1xuXG4vKipcbiAqIE9wdGltaXplcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBieSBmbGlwcGluZyB0aGUgYHBsYWNlbWVudGBcbiAqIGluIG9yZGVyIHRvIGtlZXAgaXQgaW4gdmlldyB3aGVuIHRoZSBwcmVmZXJyZWQgcGxhY2VtZW50KHMpIHdpbGwgb3ZlcmZsb3cgdGhlXG4gKiBjbGlwcGluZyBib3VuZGFyeS4gQWx0ZXJuYXRpdmUgdG8gYGF1dG9QbGFjZW1lbnRgLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2ZsaXBcbiAqL1xuY29uc3QgZmxpcCA9IGZsaXAkMTtcblxuLyoqXG4gKiBQcm92aWRlcyBkYXRhIHRoYXQgYWxsb3dzIHlvdSB0byBjaGFuZ2UgdGhlIHNpemUgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgXHUyMDE0XG4gKiBmb3IgaW5zdGFuY2UsIHByZXZlbnQgaXQgZnJvbSBvdmVyZmxvd2luZyB0aGUgY2xpcHBpbmcgYm91bmRhcnkgb3IgbWF0Y2ggdGhlXG4gKiB3aWR0aCBvZiB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3Mvc2l6ZVxuICovXG5jb25zdCBzaXplID0gc2l6ZSQxO1xuXG4vKipcbiAqIFByb3ZpZGVzIGRhdGEgdG8gaGlkZSB0aGUgZmxvYXRpbmcgZWxlbWVudCBpbiBhcHBsaWNhYmxlIHNpdHVhdGlvbnMsIHN1Y2ggYXNcbiAqIHdoZW4gaXQgaXMgbm90IGluIHRoZSBzYW1lIGNsaXBwaW5nIGNvbnRleHQgYXMgdGhlIHJlZmVyZW5jZSBlbGVtZW50LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2hpZGVcbiAqL1xuY29uc3QgaGlkZSA9IGhpZGUkMTtcblxuLyoqXG4gKiBQcm92aWRlcyBkYXRhIHRvIHBvc2l0aW9uIGFuIGlubmVyIGVsZW1lbnQgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgc28gdGhhdCBpdFxuICogYXBwZWFycyBjZW50ZXJlZCB0byB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvYXJyb3dcbiAqL1xuY29uc3QgYXJyb3cgPSBhcnJvdyQxO1xuXG4vKipcbiAqIFByb3ZpZGVzIGltcHJvdmVkIHBvc2l0aW9uaW5nIGZvciBpbmxpbmUgcmVmZXJlbmNlIGVsZW1lbnRzIHRoYXQgY2FuIHNwYW5cbiAqIG92ZXIgbXVsdGlwbGUgbGluZXMsIHN1Y2ggYXMgaHlwZXJsaW5rcyBvciByYW5nZSBzZWxlY3Rpb25zLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2lubGluZVxuICovXG5jb25zdCBpbmxpbmUgPSBpbmxpbmUkMTtcblxuLyoqXG4gKiBCdWlsdC1pbiBgbGltaXRlcmAgdGhhdCB3aWxsIHN0b3AgYHNoaWZ0KClgIGF0IGEgY2VydGFpbiBwb2ludC5cbiAqL1xuY29uc3QgbGltaXRTaGlmdCA9IGxpbWl0U2hpZnQkMTtcblxuLyoqXG4gKiBDb21wdXRlcyB0aGUgYHhgIGFuZCBgeWAgY29vcmRpbmF0ZXMgdGhhdCB3aWxsIHBsYWNlIHRoZSBmbG9hdGluZyBlbGVtZW50XG4gKiBuZXh0IHRvIGEgZ2l2ZW4gcmVmZXJlbmNlIGVsZW1lbnQuXG4gKi9cbmNvbnN0IGNvbXB1dGVQb3NpdGlvbiA9IChyZWZlcmVuY2UsIGZsb2F0aW5nLCBvcHRpb25zKSA9PiB7XG4gIC8vIFRoaXMgY2FjaGVzIHRoZSBleHBlbnNpdmUgYGdldENsaXBwaW5nRWxlbWVudEFuY2VzdG9yc2AgZnVuY3Rpb24gc28gdGhhdFxuICAvLyBtdWx0aXBsZSBsaWZlY3ljbGUgcmVzZXRzIHJlLXVzZSB0aGUgc2FtZSByZXN1bHQuIEl0IG9ubHkgbGl2ZXMgZm9yIGFcbiAgLy8gc2luZ2xlIGNhbGwuIElmIG90aGVyIGZ1bmN0aW9ucyBiZWNvbWUgZXhwZW5zaXZlLCB3ZSBjYW4gYWRkIHRoZW0gYXMgd2VsbC5cbiAgY29uc3QgY2FjaGUgPSBuZXcgTWFwKCk7XG4gIGNvbnN0IG1lcmdlZE9wdGlvbnMgPSB7XG4gICAgcGxhdGZvcm0sXG4gICAgLi4ub3B0aW9uc1xuICB9O1xuICBjb25zdCBwbGF0Zm9ybVdpdGhDYWNoZSA9IHtcbiAgICAuLi5tZXJnZWRPcHRpb25zLnBsYXRmb3JtLFxuICAgIF9jOiBjYWNoZVxuICB9O1xuICByZXR1cm4gY29tcHV0ZVBvc2l0aW9uJDEocmVmZXJlbmNlLCBmbG9hdGluZywge1xuICAgIC4uLm1lcmdlZE9wdGlvbnMsXG4gICAgcGxhdGZvcm06IHBsYXRmb3JtV2l0aENhY2hlXG4gIH0pO1xufTtcblxuZXhwb3J0IHsgYXJyb3csIGF1dG9QbGFjZW1lbnQsIGF1dG9VcGRhdGUsIGNvbXB1dGVQb3NpdGlvbiwgZGV0ZWN0T3ZlcmZsb3csIGZsaXAsIGhpZGUsIGlubGluZSwgbGltaXRTaGlmdCwgb2Zmc2V0LCBwbGF0Zm9ybSwgc2hpZnQsIHNpemUgfTtcbiIsICJpbXBvcnQgX29iamVjdFNwcmVhZCBmcm9tICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RTcHJlYWQyJztcbmltcG9ydCBfZXh0ZW5kcyBmcm9tICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzJztcbmltcG9ydCB7IGpzeCwga2V5ZnJhbWVzLCBjc3MgYXMgY3NzJDIgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgX3NsaWNlZFRvQXJyYXkgZnJvbSAnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vc2xpY2VkVG9BcnJheSc7XG5pbXBvcnQgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIGZyb20gJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzJztcbmltcG9ydCBfdHlwZW9mIGZyb20gJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3R5cGVvZic7XG5pbXBvcnQgX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbCBmcm9tICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90YWdnZWRUZW1wbGF0ZUxpdGVyYWwnO1xuaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eSc7XG5pbXBvcnQgeyB1c2VDb250ZXh0LCB1c2VSZWYsIHVzZVN0YXRlLCB1c2VNZW1vLCB1c2VDYWxsYmFjaywgY3JlYXRlQ29udGV4dCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGNyZWF0ZVBvcnRhbCB9IGZyb20gJ3JlYWN0LWRvbSc7XG5pbXBvcnQgeyBhdXRvVXBkYXRlIH0gZnJvbSAnQGZsb2F0aW5nLXVpL2RvbSc7XG5pbXBvcnQgdXNlTGF5b3V0RWZmZWN0IGZyb20gJ3VzZS1pc29tb3JwaGljLWxheW91dC1lZmZlY3QnO1xuXG52YXIgX2V4Y2x1ZGVkJDQgPSBbXCJjbGFzc05hbWVcIiwgXCJjbGVhclZhbHVlXCIsIFwiY3hcIiwgXCJnZXRTdHlsZXNcIiwgXCJnZXRDbGFzc05hbWVzXCIsIFwiZ2V0VmFsdWVcIiwgXCJoYXNWYWx1ZVwiLCBcImlzTXVsdGlcIiwgXCJpc1J0bFwiLCBcIm9wdGlvbnNcIiwgXCJzZWxlY3RPcHRpb25cIiwgXCJzZWxlY3RQcm9wc1wiLCBcInNldFZhbHVlXCIsIFwidGhlbWVcIl07XG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE5PIE9QXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxudmFyIG5vb3AgPSBmdW5jdGlvbiBub29wKCkge307XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ2xhc3MgTmFtZSBQcmVmaXhlclxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuIFN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBjb21wb25lbnQgc3RhdGUgZm9yIHN0eWxpbmcgd2l0aCBjbGFzcyBuYW1lcy5cblxuIEV4cGVjdHMgYW4gYXJyYXkgb2Ygc3RyaW5ncyBPUiBhIHN0cmluZy9vYmplY3QgcGFpcjpcbiAtIGNsYXNzTmFtZShbJ2NvbXAnLCAnY29tcC1hcmcnLCAnY29tcC1hcmctMiddKVxuICAgQHJldHVybnMgJ3JlYWN0LXNlbGVjdF9fY29tcCByZWFjdC1zZWxlY3RfX2NvbXAtYXJnIHJlYWN0LXNlbGVjdF9fY29tcC1hcmctMidcbiAtIGNsYXNzTmFtZSgnY29tcCcsIHsgc29tZTogdHJ1ZSwgc3RhdGU6IGZhbHNlIH0pXG4gICBAcmV0dXJucyAncmVhY3Qtc2VsZWN0X19jb21wIHJlYWN0LXNlbGVjdF9fY29tcC0tc29tZSdcbiovXG5mdW5jdGlvbiBhcHBseVByZWZpeFRvTmFtZShwcmVmaXgsIG5hbWUpIHtcbiAgaWYgKCFuYW1lKSB7XG4gICAgcmV0dXJuIHByZWZpeDtcbiAgfSBlbHNlIGlmIChuYW1lWzBdID09PSAnLScpIHtcbiAgICByZXR1cm4gcHJlZml4ICsgbmFtZTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gcHJlZml4ICsgJ19fJyArIG5hbWU7XG4gIH1cbn1cbmZ1bmN0aW9uIGNsYXNzTmFtZXMocHJlZml4LCBzdGF0ZSkge1xuICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgY2xhc3NOYW1lTGlzdCA9IG5ldyBBcnJheShfbGVuID4gMiA/IF9sZW4gLSAyIDogMCksIF9rZXkgPSAyOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgY2xhc3NOYW1lTGlzdFtfa2V5IC0gMl0gPSBhcmd1bWVudHNbX2tleV07XG4gIH1cbiAgdmFyIGFyciA9IFtdLmNvbmNhdChjbGFzc05hbWVMaXN0KTtcbiAgaWYgKHN0YXRlICYmIHByZWZpeCkge1xuICAgIGZvciAodmFyIGtleSBpbiBzdGF0ZSkge1xuICAgICAgaWYgKHN0YXRlLmhhc093blByb3BlcnR5KGtleSkgJiYgc3RhdGVba2V5XSkge1xuICAgICAgICBhcnIucHVzaChcIlwiLmNvbmNhdChhcHBseVByZWZpeFRvTmFtZShwcmVmaXgsIGtleSkpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGFyci5maWx0ZXIoZnVuY3Rpb24gKGkpIHtcbiAgICByZXR1cm4gaTtcbiAgfSkubWFwKGZ1bmN0aW9uIChpKSB7XG4gICAgcmV0dXJuIFN0cmluZyhpKS50cmltKCk7XG4gIH0pLmpvaW4oJyAnKTtcbn1cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ2xlYW4gVmFsdWVcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG52YXIgY2xlYW5WYWx1ZSA9IGZ1bmN0aW9uIGNsZWFuVmFsdWUodmFsdWUpIHtcbiAgaWYgKGlzQXJyYXkodmFsdWUpKSByZXR1cm4gdmFsdWUuZmlsdGVyKEJvb2xlYW4pO1xuICBpZiAoX3R5cGVvZih2YWx1ZSkgPT09ICdvYmplY3QnICYmIHZhbHVlICE9PSBudWxsKSByZXR1cm4gW3ZhbHVlXTtcbiAgcmV0dXJuIFtdO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDbGVhbiBDb21tb24gUHJvcHNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG52YXIgY2xlYW5Db21tb25Qcm9wcyA9IGZ1bmN0aW9uIGNsZWFuQ29tbW9uUHJvcHMocHJvcHMpIHtcbiAgLy9jbGFzc05hbWVcbiAgcHJvcHMuY2xhc3NOYW1lO1xuICAgIHByb3BzLmNsZWFyVmFsdWU7XG4gICAgcHJvcHMuY3g7XG4gICAgcHJvcHMuZ2V0U3R5bGVzO1xuICAgIHByb3BzLmdldENsYXNzTmFtZXM7XG4gICAgcHJvcHMuZ2V0VmFsdWU7XG4gICAgcHJvcHMuaGFzVmFsdWU7XG4gICAgcHJvcHMuaXNNdWx0aTtcbiAgICBwcm9wcy5pc1J0bDtcbiAgICBwcm9wcy5vcHRpb25zO1xuICAgIHByb3BzLnNlbGVjdE9wdGlvbjtcbiAgICBwcm9wcy5zZWxlY3RQcm9wcztcbiAgICBwcm9wcy5zZXRWYWx1ZTtcbiAgICBwcm9wcy50aGVtZTtcbiAgICB2YXIgaW5uZXJQcm9wcyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhwcm9wcywgX2V4Y2x1ZGVkJDQpO1xuICByZXR1cm4gX29iamVjdFNwcmVhZCh7fSwgaW5uZXJQcm9wcyk7XG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEdldCBTdHlsZSBQcm9wc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbnZhciBnZXRTdHlsZVByb3BzID0gZnVuY3Rpb24gZ2V0U3R5bGVQcm9wcyhwcm9wcywgbmFtZSwgY2xhc3NOYW1lc1N0YXRlKSB7XG4gIHZhciBjeCA9IHByb3BzLmN4LFxuICAgIGdldFN0eWxlcyA9IHByb3BzLmdldFN0eWxlcyxcbiAgICBnZXRDbGFzc05hbWVzID0gcHJvcHMuZ2V0Q2xhc3NOYW1lcyxcbiAgICBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWU7XG4gIHJldHVybiB7XG4gICAgY3NzOiBnZXRTdHlsZXMobmFtZSwgcHJvcHMpLFxuICAgIGNsYXNzTmFtZTogY3goY2xhc3NOYW1lc1N0YXRlICE9PSBudWxsICYmIGNsYXNzTmFtZXNTdGF0ZSAhPT0gdm9pZCAwID8gY2xhc3NOYW1lc1N0YXRlIDoge30sIGdldENsYXNzTmFtZXMobmFtZSwgcHJvcHMpLCBjbGFzc05hbWUpXG4gIH07XG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEhhbmRsZSBJbnB1dCBDaGFuZ2Vcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5mdW5jdGlvbiBoYW5kbGVJbnB1dENoYW5nZShpbnB1dFZhbHVlLCBhY3Rpb25NZXRhLCBvbklucHV0Q2hhbmdlKSB7XG4gIGlmIChvbklucHV0Q2hhbmdlKSB7XG4gICAgdmFyIF9uZXdWYWx1ZSA9IG9uSW5wdXRDaGFuZ2UoaW5wdXRWYWx1ZSwgYWN0aW9uTWV0YSk7XG4gICAgaWYgKHR5cGVvZiBfbmV3VmFsdWUgPT09ICdzdHJpbmcnKSByZXR1cm4gX25ld1ZhbHVlO1xuICB9XG4gIHJldHVybiBpbnB1dFZhbHVlO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNjcm9sbCBIZWxwZXJzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZnVuY3Rpb24gaXNEb2N1bWVudEVsZW1lbnQoZWwpIHtcbiAgcmV0dXJuIFtkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsIGRvY3VtZW50LmJvZHksIHdpbmRvd10uaW5kZXhPZihlbCkgPiAtMTtcbn1cblxuLy8gTm9ybWFsaXplZCBTY3JvbGwgVG9wXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZnVuY3Rpb24gbm9ybWFsaXplZEhlaWdodChlbCkge1xuICBpZiAoaXNEb2N1bWVudEVsZW1lbnQoZWwpKSB7XG4gICAgcmV0dXJuIHdpbmRvdy5pbm5lckhlaWdodDtcbiAgfVxuICByZXR1cm4gZWwuY2xpZW50SGVpZ2h0O1xufVxuXG4vLyBOb3JtYWxpemVkIHNjcm9sbFRvICYgc2Nyb2xsVG9wXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZnVuY3Rpb24gZ2V0U2Nyb2xsVG9wKGVsKSB7XG4gIGlmIChpc0RvY3VtZW50RWxlbWVudChlbCkpIHtcbiAgICByZXR1cm4gd2luZG93LnBhZ2VZT2Zmc2V0O1xuICB9XG4gIHJldHVybiBlbC5zY3JvbGxUb3A7XG59XG5mdW5jdGlvbiBzY3JvbGxUbyhlbCwgdG9wKSB7XG4gIC8vIHdpdGggYSBzY3JvbGwgZGlzdGFuY2UsIHdlIHBlcmZvcm0gc2Nyb2xsIG9uIHRoZSBlbGVtZW50XG4gIGlmIChpc0RvY3VtZW50RWxlbWVudChlbCkpIHtcbiAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgdG9wKTtcbiAgICByZXR1cm47XG4gIH1cbiAgZWwuc2Nyb2xsVG9wID0gdG9wO1xufVxuXG4vLyBHZXQgU2Nyb2xsIFBhcmVudFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmZ1bmN0aW9uIGdldFNjcm9sbFBhcmVudChlbGVtZW50KSB7XG4gIHZhciBzdHlsZSA9IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XG4gIHZhciBleGNsdWRlU3RhdGljUGFyZW50ID0gc3R5bGUucG9zaXRpb24gPT09ICdhYnNvbHV0ZSc7XG4gIHZhciBvdmVyZmxvd1J4ID0gLyhhdXRvfHNjcm9sbCkvO1xuICBpZiAoc3R5bGUucG9zaXRpb24gPT09ICdmaXhlZCcpIHJldHVybiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gIGZvciAodmFyIHBhcmVudCA9IGVsZW1lbnQ7IHBhcmVudCA9IHBhcmVudC5wYXJlbnRFbGVtZW50Oykge1xuICAgIHN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShwYXJlbnQpO1xuICAgIGlmIChleGNsdWRlU3RhdGljUGFyZW50ICYmIHN0eWxlLnBvc2l0aW9uID09PSAnc3RhdGljJykge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChvdmVyZmxvd1J4LnRlc3Qoc3R5bGUub3ZlcmZsb3cgKyBzdHlsZS5vdmVyZmxvd1kgKyBzdHlsZS5vdmVyZmxvd1gpKSB7XG4gICAgICByZXR1cm4gcGFyZW50O1xuICAgIH1cbiAgfVxuICByZXR1cm4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xufVxuXG4vLyBBbmltYXRlZCBTY3JvbGwgVG9cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKipcbiAgQHBhcmFtIHQ6IHRpbWUgKGVsYXBzZWQpXG4gIEBwYXJhbSBiOiBpbml0aWFsIHZhbHVlXG4gIEBwYXJhbSBjOiBhbW91bnQgb2YgY2hhbmdlXG4gIEBwYXJhbSBkOiBkdXJhdGlvblxuKi9cbmZ1bmN0aW9uIGVhc2VPdXRDdWJpYyh0LCBiLCBjLCBkKSB7XG4gIHJldHVybiBjICogKCh0ID0gdCAvIGQgLSAxKSAqIHQgKiB0ICsgMSkgKyBiO1xufVxuZnVuY3Rpb24gYW5pbWF0ZWRTY3JvbGxUbyhlbGVtZW50LCB0bykge1xuICB2YXIgZHVyYXRpb24gPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6IDIwMDtcbiAgdmFyIGNhbGxiYWNrID0gYXJndW1lbnRzLmxlbmd0aCA+IDMgJiYgYXJndW1lbnRzWzNdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbM10gOiBub29wO1xuICB2YXIgc3RhcnQgPSBnZXRTY3JvbGxUb3AoZWxlbWVudCk7XG4gIHZhciBjaGFuZ2UgPSB0byAtIHN0YXJ0O1xuICB2YXIgaW5jcmVtZW50ID0gMTA7XG4gIHZhciBjdXJyZW50VGltZSA9IDA7XG4gIGZ1bmN0aW9uIGFuaW1hdGVTY3JvbGwoKSB7XG4gICAgY3VycmVudFRpbWUgKz0gaW5jcmVtZW50O1xuICAgIHZhciB2YWwgPSBlYXNlT3V0Q3ViaWMoY3VycmVudFRpbWUsIHN0YXJ0LCBjaGFuZ2UsIGR1cmF0aW9uKTtcbiAgICBzY3JvbGxUbyhlbGVtZW50LCB2YWwpO1xuICAgIGlmIChjdXJyZW50VGltZSA8IGR1cmF0aW9uKSB7XG4gICAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGFuaW1hdGVTY3JvbGwpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYWxsYmFjayhlbGVtZW50KTtcbiAgICB9XG4gIH1cbiAgYW5pbWF0ZVNjcm9sbCgpO1xufVxuXG4vLyBTY3JvbGwgSW50byBWaWV3XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZnVuY3Rpb24gc2Nyb2xsSW50b1ZpZXcobWVudUVsLCBmb2N1c2VkRWwpIHtcbiAgdmFyIG1lbnVSZWN0ID0gbWVudUVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICB2YXIgZm9jdXNlZFJlY3QgPSBmb2N1c2VkRWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIHZhciBvdmVyU2Nyb2xsID0gZm9jdXNlZEVsLm9mZnNldEhlaWdodCAvIDM7XG4gIGlmIChmb2N1c2VkUmVjdC5ib3R0b20gKyBvdmVyU2Nyb2xsID4gbWVudVJlY3QuYm90dG9tKSB7XG4gICAgc2Nyb2xsVG8obWVudUVsLCBNYXRoLm1pbihmb2N1c2VkRWwub2Zmc2V0VG9wICsgZm9jdXNlZEVsLmNsaWVudEhlaWdodCAtIG1lbnVFbC5vZmZzZXRIZWlnaHQgKyBvdmVyU2Nyb2xsLCBtZW51RWwuc2Nyb2xsSGVpZ2h0KSk7XG4gIH0gZWxzZSBpZiAoZm9jdXNlZFJlY3QudG9wIC0gb3ZlclNjcm9sbCA8IG1lbnVSZWN0LnRvcCkge1xuICAgIHNjcm9sbFRvKG1lbnVFbCwgTWF0aC5tYXgoZm9jdXNlZEVsLm9mZnNldFRvcCAtIG92ZXJTY3JvbGwsIDApKTtcbiAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEdldCBib3VuZGluZyBjbGllbnQgb2JqZWN0XG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gY2Fubm90IGdldCBrZXlzIHVzaW5nIGFycmF5IG5vdGF0aW9uIHdpdGggRE9NUmVjdFxuZnVuY3Rpb24gZ2V0Qm91bmRpbmdDbGllbnRPYmooZWxlbWVudCkge1xuICB2YXIgcmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIHJldHVybiB7XG4gICAgYm90dG9tOiByZWN0LmJvdHRvbSxcbiAgICBoZWlnaHQ6IHJlY3QuaGVpZ2h0LFxuICAgIGxlZnQ6IHJlY3QubGVmdCxcbiAgICByaWdodDogcmVjdC5yaWdodCxcbiAgICB0b3A6IHJlY3QudG9wLFxuICAgIHdpZHRoOiByZWN0LndpZHRoXG4gIH07XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVG91Y2ggQ2FwYWJpbGl0eSBEZXRlY3RvclxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmZ1bmN0aW9uIGlzVG91Y2hDYXBhYmxlKCkge1xuICB0cnkge1xuICAgIGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdUb3VjaEV2ZW50Jyk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNb2JpbGUgRGV2aWNlIERldGVjdG9yXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZnVuY3Rpb24gaXNNb2JpbGVEZXZpY2UoKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIC9BbmRyb2lkfHdlYk9TfGlQaG9uZXxpUGFkfGlQb2R8QmxhY2tCZXJyeXxJRU1vYmlsZXxPcGVyYSBNaW5pL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBhc3NpdmUgRXZlbnQgRGV0ZWN0b3Jcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBodHRwczovL2dpdGh1Yi5jb20vcmFmZ3JhcGgvZGV0ZWN0LWl0L2Jsb2IvbWFpbi9zcmMvaW5kZXgudHMjTDE5LUwzNlxudmFyIHBhc3NpdmVPcHRpb25BY2Nlc3NlZCA9IGZhbHNlO1xudmFyIG9wdGlvbnMgPSB7XG4gIGdldCBwYXNzaXZlKCkge1xuICAgIHJldHVybiBwYXNzaXZlT3B0aW9uQWNjZXNzZWQgPSB0cnVlO1xuICB9XG59O1xuLy8gY2hlY2sgZm9yIFNTUlxudmFyIHcgPSB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/IHdpbmRvdyA6IHt9O1xuaWYgKHcuYWRkRXZlbnRMaXN0ZW5lciAmJiB3LnJlbW92ZUV2ZW50TGlzdGVuZXIpIHtcbiAgdy5hZGRFdmVudExpc3RlbmVyKCdwJywgbm9vcCwgb3B0aW9ucyk7XG4gIHcucmVtb3ZlRXZlbnRMaXN0ZW5lcigncCcsIG5vb3AsIGZhbHNlKTtcbn1cbnZhciBzdXBwb3J0c1Bhc3NpdmVFdmVudHMgPSBwYXNzaXZlT3B0aW9uQWNjZXNzZWQ7XG5mdW5jdGlvbiBub3ROdWxsaXNoKGl0ZW0pIHtcbiAgcmV0dXJuIGl0ZW0gIT0gbnVsbDtcbn1cbmZ1bmN0aW9uIGlzQXJyYXkoYXJnKSB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KGFyZyk7XG59XG5mdW5jdGlvbiB2YWx1ZVRlcm5hcnkoaXNNdWx0aSwgbXVsdGlWYWx1ZSwgc2luZ2xlVmFsdWUpIHtcbiAgcmV0dXJuIGlzTXVsdGkgPyBtdWx0aVZhbHVlIDogc2luZ2xlVmFsdWU7XG59XG5mdW5jdGlvbiBzaW5nbGVWYWx1ZUFzVmFsdWUoc2luZ2xlVmFsdWUpIHtcbiAgcmV0dXJuIHNpbmdsZVZhbHVlO1xufVxuZnVuY3Rpb24gbXVsdGlWYWx1ZUFzVmFsdWUobXVsdGlWYWx1ZSkge1xuICByZXR1cm4gbXVsdGlWYWx1ZTtcbn1cbnZhciByZW1vdmVQcm9wcyA9IGZ1bmN0aW9uIHJlbW92ZVByb3BzKHByb3BzT2JqKSB7XG4gIGZvciAodmFyIF9sZW4yID0gYXJndW1lbnRzLmxlbmd0aCwgcHJvcGVydGllcyA9IG5ldyBBcnJheShfbGVuMiA+IDEgPyBfbGVuMiAtIDEgOiAwKSwgX2tleTIgPSAxOyBfa2V5MiA8IF9sZW4yOyBfa2V5MisrKSB7XG4gICAgcHJvcGVydGllc1tfa2V5MiAtIDFdID0gYXJndW1lbnRzW19rZXkyXTtcbiAgfVxuICB2YXIgcHJvcHNNYXAgPSBPYmplY3QuZW50cmllcyhwcm9wc09iaikuZmlsdGVyKGZ1bmN0aW9uIChfcmVmKSB7XG4gICAgdmFyIF9yZWYyID0gX3NsaWNlZFRvQXJyYXkoX3JlZiwgMSksXG4gICAgICBrZXkgPSBfcmVmMlswXTtcbiAgICByZXR1cm4gIXByb3BlcnRpZXMuaW5jbHVkZXMoa2V5KTtcbiAgfSk7XG4gIHJldHVybiBwcm9wc01hcC5yZWR1Y2UoZnVuY3Rpb24gKG5ld1Byb3BzLCBfcmVmMykge1xuICAgIHZhciBfcmVmNCA9IF9zbGljZWRUb0FycmF5KF9yZWYzLCAyKSxcbiAgICAgIGtleSA9IF9yZWY0WzBdLFxuICAgICAgdmFsID0gX3JlZjRbMV07XG4gICAgbmV3UHJvcHNba2V5XSA9IHZhbDtcbiAgICByZXR1cm4gbmV3UHJvcHM7XG4gIH0sIHt9KTtcbn07XG5cbnZhciBfZXhjbHVkZWQkMyA9IFtcImNoaWxkcmVuXCIsIFwiaW5uZXJQcm9wc1wiXSxcbiAgX2V4Y2x1ZGVkMiQxID0gW1wiY2hpbGRyZW5cIiwgXCJpbm5lclByb3BzXCJdO1xuZnVuY3Rpb24gZ2V0TWVudVBsYWNlbWVudChfcmVmKSB7XG4gIHZhciBwcmVmZXJyZWRNYXhIZWlnaHQgPSBfcmVmLm1heEhlaWdodCxcbiAgICBtZW51RWwgPSBfcmVmLm1lbnVFbCxcbiAgICBtaW5IZWlnaHQgPSBfcmVmLm1pbkhlaWdodCxcbiAgICBwcmVmZXJyZWRQbGFjZW1lbnQgPSBfcmVmLnBsYWNlbWVudCxcbiAgICBzaG91bGRTY3JvbGwgPSBfcmVmLnNob3VsZFNjcm9sbCxcbiAgICBpc0ZpeGVkUG9zaXRpb24gPSBfcmVmLmlzRml4ZWRQb3NpdGlvbixcbiAgICBjb250cm9sSGVpZ2h0ID0gX3JlZi5jb250cm9sSGVpZ2h0O1xuICB2YXIgc2Nyb2xsUGFyZW50ID0gZ2V0U2Nyb2xsUGFyZW50KG1lbnVFbCk7XG4gIHZhciBkZWZhdWx0U3RhdGUgPSB7XG4gICAgcGxhY2VtZW50OiAnYm90dG9tJyxcbiAgICBtYXhIZWlnaHQ6IHByZWZlcnJlZE1heEhlaWdodFxuICB9O1xuXG4gIC8vIHNvbWV0aGluZyB3ZW50IHdyb25nLCByZXR1cm4gZGVmYXVsdCBzdGF0ZVxuICBpZiAoIW1lbnVFbCB8fCAhbWVudUVsLm9mZnNldFBhcmVudCkgcmV0dXJuIGRlZmF1bHRTdGF0ZTtcblxuICAvLyB3ZSBjYW4ndCB0cnVzdCBgc2Nyb2xsUGFyZW50LnNjcm9sbEhlaWdodGAgLS0+IGl0IG1heSBpbmNyZWFzZSB3aGVuXG4gIC8vIHRoZSBtZW51IGlzIHJlbmRlcmVkXG4gIHZhciBfc2Nyb2xsUGFyZW50JGdldEJvdW4gPSBzY3JvbGxQYXJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksXG4gICAgc2Nyb2xsSGVpZ2h0ID0gX3Njcm9sbFBhcmVudCRnZXRCb3VuLmhlaWdodDtcbiAgdmFyIF9tZW51RWwkZ2V0Qm91bmRpbmdDbCA9IG1lbnVFbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxcbiAgICBtZW51Qm90dG9tID0gX21lbnVFbCRnZXRCb3VuZGluZ0NsLmJvdHRvbSxcbiAgICBtZW51SGVpZ2h0ID0gX21lbnVFbCRnZXRCb3VuZGluZ0NsLmhlaWdodCxcbiAgICBtZW51VG9wID0gX21lbnVFbCRnZXRCb3VuZGluZ0NsLnRvcDtcbiAgdmFyIF9tZW51RWwkb2Zmc2V0UGFyZW50JCA9IG1lbnVFbC5vZmZzZXRQYXJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksXG4gICAgY29udGFpbmVyVG9wID0gX21lbnVFbCRvZmZzZXRQYXJlbnQkLnRvcDtcbiAgdmFyIHZpZXdIZWlnaHQgPSBpc0ZpeGVkUG9zaXRpb24gPyB3aW5kb3cuaW5uZXJIZWlnaHQgOiBub3JtYWxpemVkSGVpZ2h0KHNjcm9sbFBhcmVudCk7XG4gIHZhciBzY3JvbGxUb3AgPSBnZXRTY3JvbGxUb3Aoc2Nyb2xsUGFyZW50KTtcbiAgdmFyIG1hcmdpbkJvdHRvbSA9IHBhcnNlSW50KGdldENvbXB1dGVkU3R5bGUobWVudUVsKS5tYXJnaW5Cb3R0b20sIDEwKTtcbiAgdmFyIG1hcmdpblRvcCA9IHBhcnNlSW50KGdldENvbXB1dGVkU3R5bGUobWVudUVsKS5tYXJnaW5Ub3AsIDEwKTtcbiAgdmFyIHZpZXdTcGFjZUFib3ZlID0gY29udGFpbmVyVG9wIC0gbWFyZ2luVG9wO1xuICB2YXIgdmlld1NwYWNlQmVsb3cgPSB2aWV3SGVpZ2h0IC0gbWVudVRvcDtcbiAgdmFyIHNjcm9sbFNwYWNlQWJvdmUgPSB2aWV3U3BhY2VBYm92ZSArIHNjcm9sbFRvcDtcbiAgdmFyIHNjcm9sbFNwYWNlQmVsb3cgPSBzY3JvbGxIZWlnaHQgLSBzY3JvbGxUb3AgLSBtZW51VG9wO1xuICB2YXIgc2Nyb2xsRG93biA9IG1lbnVCb3R0b20gLSB2aWV3SGVpZ2h0ICsgc2Nyb2xsVG9wICsgbWFyZ2luQm90dG9tO1xuICB2YXIgc2Nyb2xsVXAgPSBzY3JvbGxUb3AgKyBtZW51VG9wIC0gbWFyZ2luVG9wO1xuICB2YXIgc2Nyb2xsRHVyYXRpb24gPSAxNjA7XG4gIHN3aXRjaCAocHJlZmVycmVkUGxhY2VtZW50KSB7XG4gICAgY2FzZSAnYXV0byc6XG4gICAgY2FzZSAnYm90dG9tJzpcbiAgICAgIC8vIDE6IHRoZSBtZW51IHdpbGwgZml0LCBkbyBub3RoaW5nXG4gICAgICBpZiAodmlld1NwYWNlQmVsb3cgPj0gbWVudUhlaWdodCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHBsYWNlbWVudDogJ2JvdHRvbScsXG4gICAgICAgICAgbWF4SGVpZ2h0OiBwcmVmZXJyZWRNYXhIZWlnaHRcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgLy8gMjogdGhlIG1lbnUgd2lsbCBmaXQsIGlmIHNjcm9sbGVkXG4gICAgICBpZiAoc2Nyb2xsU3BhY2VCZWxvdyA+PSBtZW51SGVpZ2h0ICYmICFpc0ZpeGVkUG9zaXRpb24pIHtcbiAgICAgICAgaWYgKHNob3VsZFNjcm9sbCkge1xuICAgICAgICAgIGFuaW1hdGVkU2Nyb2xsVG8oc2Nyb2xsUGFyZW50LCBzY3JvbGxEb3duLCBzY3JvbGxEdXJhdGlvbik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwbGFjZW1lbnQ6ICdib3R0b20nLFxuICAgICAgICAgIG1heEhlaWdodDogcHJlZmVycmVkTWF4SGVpZ2h0XG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIC8vIDM6IHRoZSBtZW51IHdpbGwgZml0LCBpZiBjb25zdHJhaW5lZFxuICAgICAgaWYgKCFpc0ZpeGVkUG9zaXRpb24gJiYgc2Nyb2xsU3BhY2VCZWxvdyA+PSBtaW5IZWlnaHQgfHwgaXNGaXhlZFBvc2l0aW9uICYmIHZpZXdTcGFjZUJlbG93ID49IG1pbkhlaWdodCkge1xuICAgICAgICBpZiAoc2hvdWxkU2Nyb2xsKSB7XG4gICAgICAgICAgYW5pbWF0ZWRTY3JvbGxUbyhzY3JvbGxQYXJlbnQsIHNjcm9sbERvd24sIHNjcm9sbER1cmF0aW9uKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHdlIHdhbnQgdG8gcHJvdmlkZSBhcyBtdWNoIG9mIHRoZSBtZW51IGFzIHBvc3NpYmxlIHRvIHRoZSB1c2VyLFxuICAgICAgICAvLyBzbyBnaXZlIHRoZW0gd2hhdGV2ZXIgaXMgYXZhaWxhYmxlIGJlbG93IHJhdGhlciB0aGFuIHRoZSBtaW5IZWlnaHQuXG4gICAgICAgIHZhciBjb25zdHJhaW5lZEhlaWdodCA9IGlzRml4ZWRQb3NpdGlvbiA/IHZpZXdTcGFjZUJlbG93IC0gbWFyZ2luQm90dG9tIDogc2Nyb2xsU3BhY2VCZWxvdyAtIG1hcmdpbkJvdHRvbTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwbGFjZW1lbnQ6ICdib3R0b20nLFxuICAgICAgICAgIG1heEhlaWdodDogY29uc3RyYWluZWRIZWlnaHRcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgLy8gNC4gRm9ya2VkIGJldmlvdXIgd2hlbiB0aGVyZSBpc24ndCBlbm91Z2ggc3BhY2UgYmVsb3dcblxuICAgICAgLy8gQVVUTzogZmxpcCB0aGUgbWVudSwgcmVuZGVyIGFib3ZlXG4gICAgICBpZiAocHJlZmVycmVkUGxhY2VtZW50ID09PSAnYXV0bycgfHwgaXNGaXhlZFBvc2l0aW9uKSB7XG4gICAgICAgIC8vIG1heSBuZWVkIHRvIGJlIGNvbnN0cmFpbmVkIGFmdGVyIGZsaXBwaW5nXG4gICAgICAgIHZhciBfY29uc3RyYWluZWRIZWlnaHQgPSBwcmVmZXJyZWRNYXhIZWlnaHQ7XG4gICAgICAgIHZhciBzcGFjZUFib3ZlID0gaXNGaXhlZFBvc2l0aW9uID8gdmlld1NwYWNlQWJvdmUgOiBzY3JvbGxTcGFjZUFib3ZlO1xuICAgICAgICBpZiAoc3BhY2VBYm92ZSA+PSBtaW5IZWlnaHQpIHtcbiAgICAgICAgICBfY29uc3RyYWluZWRIZWlnaHQgPSBNYXRoLm1pbihzcGFjZUFib3ZlIC0gbWFyZ2luQm90dG9tIC0gY29udHJvbEhlaWdodCwgcHJlZmVycmVkTWF4SGVpZ2h0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHBsYWNlbWVudDogJ3RvcCcsXG4gICAgICAgICAgbWF4SGVpZ2h0OiBfY29uc3RyYWluZWRIZWlnaHRcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgLy8gQk9UVE9NOiBhbGxvdyBicm93c2VyIHRvIGluY3JlYXNlIHNjcm9sbGFibGUgYXJlYSBhbmQgaW1tZWRpYXRlbHkgc2V0IHNjcm9sbFxuICAgICAgaWYgKHByZWZlcnJlZFBsYWNlbWVudCA9PT0gJ2JvdHRvbScpIHtcbiAgICAgICAgaWYgKHNob3VsZFNjcm9sbCkge1xuICAgICAgICAgIHNjcm9sbFRvKHNjcm9sbFBhcmVudCwgc2Nyb2xsRG93bik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwbGFjZW1lbnQ6ICdib3R0b20nLFxuICAgICAgICAgIG1heEhlaWdodDogcHJlZmVycmVkTWF4SGVpZ2h0XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlICd0b3AnOlxuICAgICAgLy8gMTogdGhlIG1lbnUgd2lsbCBmaXQsIGRvIG5vdGhpbmdcbiAgICAgIGlmICh2aWV3U3BhY2VBYm92ZSA+PSBtZW51SGVpZ2h0KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcGxhY2VtZW50OiAndG9wJyxcbiAgICAgICAgICBtYXhIZWlnaHQ6IHByZWZlcnJlZE1heEhlaWdodFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICAvLyAyOiB0aGUgbWVudSB3aWxsIGZpdCwgaWYgc2Nyb2xsZWRcbiAgICAgIGlmIChzY3JvbGxTcGFjZUFib3ZlID49IG1lbnVIZWlnaHQgJiYgIWlzRml4ZWRQb3NpdGlvbikge1xuICAgICAgICBpZiAoc2hvdWxkU2Nyb2xsKSB7XG4gICAgICAgICAgYW5pbWF0ZWRTY3JvbGxUbyhzY3JvbGxQYXJlbnQsIHNjcm9sbFVwLCBzY3JvbGxEdXJhdGlvbik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwbGFjZW1lbnQ6ICd0b3AnLFxuICAgICAgICAgIG1heEhlaWdodDogcHJlZmVycmVkTWF4SGVpZ2h0XG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIC8vIDM6IHRoZSBtZW51IHdpbGwgZml0LCBpZiBjb25zdHJhaW5lZFxuICAgICAgaWYgKCFpc0ZpeGVkUG9zaXRpb24gJiYgc2Nyb2xsU3BhY2VBYm92ZSA+PSBtaW5IZWlnaHQgfHwgaXNGaXhlZFBvc2l0aW9uICYmIHZpZXdTcGFjZUFib3ZlID49IG1pbkhlaWdodCkge1xuICAgICAgICB2YXIgX2NvbnN0cmFpbmVkSGVpZ2h0MiA9IHByZWZlcnJlZE1heEhlaWdodDtcblxuICAgICAgICAvLyB3ZSB3YW50IHRvIHByb3ZpZGUgYXMgbXVjaCBvZiB0aGUgbWVudSBhcyBwb3NzaWJsZSB0byB0aGUgdXNlcixcbiAgICAgICAgLy8gc28gZ2l2ZSB0aGVtIHdoYXRldmVyIGlzIGF2YWlsYWJsZSBiZWxvdyByYXRoZXIgdGhhbiB0aGUgbWluSGVpZ2h0LlxuICAgICAgICBpZiAoIWlzRml4ZWRQb3NpdGlvbiAmJiBzY3JvbGxTcGFjZUFib3ZlID49IG1pbkhlaWdodCB8fCBpc0ZpeGVkUG9zaXRpb24gJiYgdmlld1NwYWNlQWJvdmUgPj0gbWluSGVpZ2h0KSB7XG4gICAgICAgICAgX2NvbnN0cmFpbmVkSGVpZ2h0MiA9IGlzRml4ZWRQb3NpdGlvbiA/IHZpZXdTcGFjZUFib3ZlIC0gbWFyZ2luVG9wIDogc2Nyb2xsU3BhY2VBYm92ZSAtIG1hcmdpblRvcDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2hvdWxkU2Nyb2xsKSB7XG4gICAgICAgICAgYW5pbWF0ZWRTY3JvbGxUbyhzY3JvbGxQYXJlbnQsIHNjcm9sbFVwLCBzY3JvbGxEdXJhdGlvbik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwbGFjZW1lbnQ6ICd0b3AnLFxuICAgICAgICAgIG1heEhlaWdodDogX2NvbnN0cmFpbmVkSGVpZ2h0MlxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICAvLyA0LiBub3QgZW5vdWdoIHNwYWNlLCB0aGUgYnJvd3NlciBXSUxMIE5PVCBpbmNyZWFzZSBzY3JvbGxhYmxlIGFyZWEgd2hlblxuICAgICAgLy8gYWJzb2x1dGVseSBwb3NpdGlvbmVkIGVsZW1lbnQgcmVuZGVyZWQgYWJvdmUgdGhlIHZpZXdwb3J0IChvbmx5IGJlbG93KS5cbiAgICAgIC8vIEZsaXAgdGhlIG1lbnUsIHJlbmRlciBiZWxvd1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcGxhY2VtZW50OiAnYm90dG9tJyxcbiAgICAgICAgbWF4SGVpZ2h0OiBwcmVmZXJyZWRNYXhIZWlnaHRcbiAgICAgIH07XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgcGxhY2VtZW50IHByb3ZpZGVkIFxcXCJcIi5jb25jYXQocHJlZmVycmVkUGxhY2VtZW50LCBcIlxcXCIuXCIpKTtcbiAgfVxuICByZXR1cm4gZGVmYXVsdFN0YXRlO1xufVxuXG4vLyBNZW51IENvbXBvbmVudFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmZ1bmN0aW9uIGFsaWduVG9Db250cm9sKHBsYWNlbWVudCkge1xuICB2YXIgcGxhY2VtZW50VG9DU1NQcm9wID0ge1xuICAgIGJvdHRvbTogJ3RvcCcsXG4gICAgdG9wOiAnYm90dG9tJ1xuICB9O1xuICByZXR1cm4gcGxhY2VtZW50ID8gcGxhY2VtZW50VG9DU1NQcm9wW3BsYWNlbWVudF0gOiAnYm90dG9tJztcbn1cbnZhciBjb2VyY2VQbGFjZW1lbnQgPSBmdW5jdGlvbiBjb2VyY2VQbGFjZW1lbnQocCkge1xuICByZXR1cm4gcCA9PT0gJ2F1dG8nID8gJ2JvdHRvbScgOiBwO1xufTtcbnZhciBtZW51Q1NTID0gZnVuY3Rpb24gbWVudUNTUyhfcmVmMiwgdW5zdHlsZWQpIHtcbiAgdmFyIF9vYmplY3RTcHJlYWQyO1xuICB2YXIgcGxhY2VtZW50ID0gX3JlZjIucGxhY2VtZW50LFxuICAgIF9yZWYyJHRoZW1lID0gX3JlZjIudGhlbWUsXG4gICAgYm9yZGVyUmFkaXVzID0gX3JlZjIkdGhlbWUuYm9yZGVyUmFkaXVzLFxuICAgIHNwYWNpbmcgPSBfcmVmMiR0aGVtZS5zcGFjaW5nLFxuICAgIGNvbG9ycyA9IF9yZWYyJHRoZW1lLmNvbG9ycztcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoKF9vYmplY3RTcHJlYWQyID0ge1xuICAgIGxhYmVsOiAnbWVudSdcbiAgfSwgX2RlZmluZVByb3BlcnR5KF9vYmplY3RTcHJlYWQyLCBhbGlnblRvQ29udHJvbChwbGFjZW1lbnQpLCAnMTAwJScpLCBfZGVmaW5lUHJvcGVydHkoX29iamVjdFNwcmVhZDIsIFwicG9zaXRpb25cIiwgJ2Fic29sdXRlJyksIF9kZWZpbmVQcm9wZXJ0eShfb2JqZWN0U3ByZWFkMiwgXCJ3aWR0aFwiLCAnMTAwJScpLCBfZGVmaW5lUHJvcGVydHkoX29iamVjdFNwcmVhZDIsIFwiekluZGV4XCIsIDEpLCBfb2JqZWN0U3ByZWFkMiksIHVuc3R5bGVkID8ge30gOiB7XG4gICAgYmFja2dyb3VuZENvbG9yOiBjb2xvcnMubmV1dHJhbDAsXG4gICAgYm9yZGVyUmFkaXVzOiBib3JkZXJSYWRpdXMsXG4gICAgYm94U2hhZG93OiAnMCAwIDAgMXB4IGhzbGEoMCwgMCUsIDAlLCAwLjEpLCAwIDRweCAxMXB4IGhzbGEoMCwgMCUsIDAlLCAwLjEpJyxcbiAgICBtYXJnaW5Cb3R0b206IHNwYWNpbmcubWVudUd1dHRlcixcbiAgICBtYXJnaW5Ub3A6IHNwYWNpbmcubWVudUd1dHRlclxuICB9KTtcbn07XG52YXIgUG9ydGFsUGxhY2VtZW50Q29udGV4dCA9IC8qI19fUFVSRV9fKi9jcmVhdGVDb250ZXh0KG51bGwpO1xuXG4vLyBOT1RFOiBpbnRlcm5hbCBvbmx5XG52YXIgTWVudVBsYWNlciA9IGZ1bmN0aW9uIE1lbnVQbGFjZXIocHJvcHMpIHtcbiAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgbWluTWVudUhlaWdodCA9IHByb3BzLm1pbk1lbnVIZWlnaHQsXG4gICAgbWF4TWVudUhlaWdodCA9IHByb3BzLm1heE1lbnVIZWlnaHQsXG4gICAgbWVudVBsYWNlbWVudCA9IHByb3BzLm1lbnVQbGFjZW1lbnQsXG4gICAgbWVudVBvc2l0aW9uID0gcHJvcHMubWVudVBvc2l0aW9uLFxuICAgIG1lbnVTaG91bGRTY3JvbGxJbnRvVmlldyA9IHByb3BzLm1lbnVTaG91bGRTY3JvbGxJbnRvVmlldyxcbiAgICB0aGVtZSA9IHByb3BzLnRoZW1lO1xuICB2YXIgX3JlZjMgPSB1c2VDb250ZXh0KFBvcnRhbFBsYWNlbWVudENvbnRleHQpIHx8IHt9LFxuICAgIHNldFBvcnRhbFBsYWNlbWVudCA9IF9yZWYzLnNldFBvcnRhbFBsYWNlbWVudDtcbiAgdmFyIHJlZiA9IHVzZVJlZihudWxsKTtcbiAgdmFyIF91c2VTdGF0ZSA9IHVzZVN0YXRlKG1heE1lbnVIZWlnaHQpLFxuICAgIF91c2VTdGF0ZTIgPSBfc2xpY2VkVG9BcnJheShfdXNlU3RhdGUsIDIpLFxuICAgIG1heEhlaWdodCA9IF91c2VTdGF0ZTJbMF0sXG4gICAgc2V0TWF4SGVpZ2h0ID0gX3VzZVN0YXRlMlsxXTtcbiAgdmFyIF91c2VTdGF0ZTMgPSB1c2VTdGF0ZShudWxsKSxcbiAgICBfdXNlU3RhdGU0ID0gX3NsaWNlZFRvQXJyYXkoX3VzZVN0YXRlMywgMiksXG4gICAgcGxhY2VtZW50ID0gX3VzZVN0YXRlNFswXSxcbiAgICBzZXRQbGFjZW1lbnQgPSBfdXNlU3RhdGU0WzFdO1xuICB2YXIgY29udHJvbEhlaWdodCA9IHRoZW1lLnNwYWNpbmcuY29udHJvbEhlaWdodDtcbiAgdXNlTGF5b3V0RWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbWVudUVsID0gcmVmLmN1cnJlbnQ7XG4gICAgaWYgKCFtZW51RWwpIHJldHVybjtcblxuICAgIC8vIERPIE5PVCBzY3JvbGwgaWYgcG9zaXRpb24gaXMgZml4ZWRcbiAgICB2YXIgaXNGaXhlZFBvc2l0aW9uID0gbWVudVBvc2l0aW9uID09PSAnZml4ZWQnO1xuICAgIHZhciBzaG91bGRTY3JvbGwgPSBtZW51U2hvdWxkU2Nyb2xsSW50b1ZpZXcgJiYgIWlzRml4ZWRQb3NpdGlvbjtcbiAgICB2YXIgc3RhdGUgPSBnZXRNZW51UGxhY2VtZW50KHtcbiAgICAgIG1heEhlaWdodDogbWF4TWVudUhlaWdodCxcbiAgICAgIG1lbnVFbDogbWVudUVsLFxuICAgICAgbWluSGVpZ2h0OiBtaW5NZW51SGVpZ2h0LFxuICAgICAgcGxhY2VtZW50OiBtZW51UGxhY2VtZW50LFxuICAgICAgc2hvdWxkU2Nyb2xsOiBzaG91bGRTY3JvbGwsXG4gICAgICBpc0ZpeGVkUG9zaXRpb246IGlzRml4ZWRQb3NpdGlvbixcbiAgICAgIGNvbnRyb2xIZWlnaHQ6IGNvbnRyb2xIZWlnaHRcbiAgICB9KTtcbiAgICBzZXRNYXhIZWlnaHQoc3RhdGUubWF4SGVpZ2h0KTtcbiAgICBzZXRQbGFjZW1lbnQoc3RhdGUucGxhY2VtZW50KTtcbiAgICBzZXRQb3J0YWxQbGFjZW1lbnQgPT09IG51bGwgfHwgc2V0UG9ydGFsUGxhY2VtZW50ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzZXRQb3J0YWxQbGFjZW1lbnQoc3RhdGUucGxhY2VtZW50KTtcbiAgfSwgW21heE1lbnVIZWlnaHQsIG1lbnVQbGFjZW1lbnQsIG1lbnVQb3NpdGlvbiwgbWVudVNob3VsZFNjcm9sbEludG9WaWV3LCBtaW5NZW51SGVpZ2h0LCBzZXRQb3J0YWxQbGFjZW1lbnQsIGNvbnRyb2xIZWlnaHRdKTtcbiAgcmV0dXJuIGNoaWxkcmVuKHtcbiAgICByZWY6IHJlZixcbiAgICBwbGFjZXJQcm9wczogX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBwcm9wcyksIHt9LCB7XG4gICAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudCB8fCBjb2VyY2VQbGFjZW1lbnQobWVudVBsYWNlbWVudCksXG4gICAgICBtYXhIZWlnaHQ6IG1heEhlaWdodFxuICAgIH0pXG4gIH0pO1xufTtcbnZhciBNZW51ID0gZnVuY3Rpb24gTWVudShwcm9wcykge1xuICB2YXIgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbixcbiAgICBpbm5lclJlZiA9IHByb3BzLmlubmVyUmVmLFxuICAgIGlubmVyUHJvcHMgPSBwcm9wcy5pbm5lclByb3BzO1xuICByZXR1cm4ganN4KFwiZGl2XCIsIF9leHRlbmRzKHt9LCBnZXRTdHlsZVByb3BzKHByb3BzLCAnbWVudScsIHtcbiAgICBtZW51OiB0cnVlXG4gIH0pLCB7XG4gICAgcmVmOiBpbm5lclJlZlxuICB9LCBpbm5lclByb3BzKSwgY2hpbGRyZW4pO1xufTtcbnZhciBNZW51JDEgPSBNZW51O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE1lbnUgTGlzdFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbnZhciBtZW51TGlzdENTUyA9IGZ1bmN0aW9uIG1lbnVMaXN0Q1NTKF9yZWY0LCB1bnN0eWxlZCkge1xuICB2YXIgbWF4SGVpZ2h0ID0gX3JlZjQubWF4SGVpZ2h0LFxuICAgIGJhc2VVbml0ID0gX3JlZjQudGhlbWUuc3BhY2luZy5iYXNlVW5pdDtcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgIG1heEhlaWdodDogbWF4SGVpZ2h0LFxuICAgIG92ZXJmbG93WTogJ2F1dG8nLFxuICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgIC8vIHJlcXVpcmVkIGZvciBvZmZzZXRbSGVpZ2h0LCBUb3BdID4ga2V5Ym9hcmQgc2Nyb2xsXG4gICAgV2Via2l0T3ZlcmZsb3dTY3JvbGxpbmc6ICd0b3VjaCdcbiAgfSwgdW5zdHlsZWQgPyB7fSA6IHtcbiAgICBwYWRkaW5nQm90dG9tOiBiYXNlVW5pdCxcbiAgICBwYWRkaW5nVG9wOiBiYXNlVW5pdFxuICB9KTtcbn07XG52YXIgTWVudUxpc3QgPSBmdW5jdGlvbiBNZW51TGlzdChwcm9wcykge1xuICB2YXIgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbixcbiAgICBpbm5lclByb3BzID0gcHJvcHMuaW5uZXJQcm9wcyxcbiAgICBpbm5lclJlZiA9IHByb3BzLmlubmVyUmVmLFxuICAgIGlzTXVsdGkgPSBwcm9wcy5pc011bHRpO1xuICByZXR1cm4ganN4KFwiZGl2XCIsIF9leHRlbmRzKHt9LCBnZXRTdHlsZVByb3BzKHByb3BzLCAnbWVudUxpc3QnLCB7XG4gICAgJ21lbnUtbGlzdCc6IHRydWUsXG4gICAgJ21lbnUtbGlzdC0taXMtbXVsdGknOiBpc011bHRpXG4gIH0pLCB7XG4gICAgcmVmOiBpbm5lclJlZlxuICB9LCBpbm5lclByb3BzKSwgY2hpbGRyZW4pO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNZW51IE5vdGljZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG52YXIgbm90aWNlQ1NTID0gZnVuY3Rpb24gbm90aWNlQ1NTKF9yZWY1LCB1bnN0eWxlZCkge1xuICB2YXIgX3JlZjUkdGhlbWUgPSBfcmVmNS50aGVtZSxcbiAgICBiYXNlVW5pdCA9IF9yZWY1JHRoZW1lLnNwYWNpbmcuYmFzZVVuaXQsXG4gICAgY29sb3JzID0gX3JlZjUkdGhlbWUuY29sb3JzO1xuICByZXR1cm4gX29iamVjdFNwcmVhZCh7XG4gICAgdGV4dEFsaWduOiAnY2VudGVyJ1xuICB9LCB1bnN0eWxlZCA/IHt9IDoge1xuICAgIGNvbG9yOiBjb2xvcnMubmV1dHJhbDQwLFxuICAgIHBhZGRpbmc6IFwiXCIuY29uY2F0KGJhc2VVbml0ICogMiwgXCJweCBcIikuY29uY2F0KGJhc2VVbml0ICogMywgXCJweFwiKVxuICB9KTtcbn07XG52YXIgbm9PcHRpb25zTWVzc2FnZUNTUyA9IG5vdGljZUNTUztcbnZhciBsb2FkaW5nTWVzc2FnZUNTUyA9IG5vdGljZUNTUztcbnZhciBOb09wdGlvbnNNZXNzYWdlID0gZnVuY3Rpb24gTm9PcHRpb25zTWVzc2FnZShfcmVmNikge1xuICB2YXIgX3JlZjYkY2hpbGRyZW4gPSBfcmVmNi5jaGlsZHJlbixcbiAgICBjaGlsZHJlbiA9IF9yZWY2JGNoaWxkcmVuID09PSB2b2lkIDAgPyAnTm8gb3B0aW9ucycgOiBfcmVmNiRjaGlsZHJlbixcbiAgICBpbm5lclByb3BzID0gX3JlZjYuaW5uZXJQcm9wcyxcbiAgICByZXN0UHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3JlZjYsIF9leGNsdWRlZCQzKTtcbiAgcmV0dXJuIGpzeChcImRpdlwiLCBfZXh0ZW5kcyh7fSwgZ2V0U3R5bGVQcm9wcyhfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHJlc3RQcm9wcyksIHt9LCB7XG4gICAgY2hpbGRyZW46IGNoaWxkcmVuLFxuICAgIGlubmVyUHJvcHM6IGlubmVyUHJvcHNcbiAgfSksICdub09wdGlvbnNNZXNzYWdlJywge1xuICAgICdtZW51LW5vdGljZSc6IHRydWUsXG4gICAgJ21lbnUtbm90aWNlLS1uby1vcHRpb25zJzogdHJ1ZVxuICB9KSwgaW5uZXJQcm9wcyksIGNoaWxkcmVuKTtcbn07XG52YXIgTG9hZGluZ01lc3NhZ2UgPSBmdW5jdGlvbiBMb2FkaW5nTWVzc2FnZShfcmVmNykge1xuICB2YXIgX3JlZjckY2hpbGRyZW4gPSBfcmVmNy5jaGlsZHJlbixcbiAgICBjaGlsZHJlbiA9IF9yZWY3JGNoaWxkcmVuID09PSB2b2lkIDAgPyAnTG9hZGluZy4uLicgOiBfcmVmNyRjaGlsZHJlbixcbiAgICBpbm5lclByb3BzID0gX3JlZjcuaW5uZXJQcm9wcyxcbiAgICByZXN0UHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3JlZjcsIF9leGNsdWRlZDIkMSk7XG4gIHJldHVybiBqc3goXCJkaXZcIiwgX2V4dGVuZHMoe30sIGdldFN0eWxlUHJvcHMoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCByZXN0UHJvcHMpLCB7fSwge1xuICAgIGNoaWxkcmVuOiBjaGlsZHJlbixcbiAgICBpbm5lclByb3BzOiBpbm5lclByb3BzXG4gIH0pLCAnbG9hZGluZ01lc3NhZ2UnLCB7XG4gICAgJ21lbnUtbm90aWNlJzogdHJ1ZSxcbiAgICAnbWVudS1ub3RpY2UtLWxvYWRpbmcnOiB0cnVlXG4gIH0pLCBpbm5lclByb3BzKSwgY2hpbGRyZW4pO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNZW51IFBvcnRhbFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbnZhciBtZW51UG9ydGFsQ1NTID0gZnVuY3Rpb24gbWVudVBvcnRhbENTUyhfcmVmOCkge1xuICB2YXIgcmVjdCA9IF9yZWY4LnJlY3QsXG4gICAgb2Zmc2V0ID0gX3JlZjgub2Zmc2V0LFxuICAgIHBvc2l0aW9uID0gX3JlZjgucG9zaXRpb247XG4gIHJldHVybiB7XG4gICAgbGVmdDogcmVjdC5sZWZ0LFxuICAgIHBvc2l0aW9uOiBwb3NpdGlvbixcbiAgICB0b3A6IG9mZnNldCxcbiAgICB3aWR0aDogcmVjdC53aWR0aCxcbiAgICB6SW5kZXg6IDFcbiAgfTtcbn07XG52YXIgTWVudVBvcnRhbCA9IGZ1bmN0aW9uIE1lbnVQb3J0YWwocHJvcHMpIHtcbiAgdmFyIGFwcGVuZFRvID0gcHJvcHMuYXBwZW5kVG8sXG4gICAgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbixcbiAgICBjb250cm9sRWxlbWVudCA9IHByb3BzLmNvbnRyb2xFbGVtZW50LFxuICAgIGlubmVyUHJvcHMgPSBwcm9wcy5pbm5lclByb3BzLFxuICAgIG1lbnVQbGFjZW1lbnQgPSBwcm9wcy5tZW51UGxhY2VtZW50LFxuICAgIG1lbnVQb3NpdGlvbiA9IHByb3BzLm1lbnVQb3NpdGlvbjtcbiAgdmFyIG1lbnVQb3J0YWxSZWYgPSB1c2VSZWYobnVsbCk7XG4gIHZhciBjbGVhbnVwUmVmID0gdXNlUmVmKG51bGwpO1xuICB2YXIgX3VzZVN0YXRlNSA9IHVzZVN0YXRlKGNvZXJjZVBsYWNlbWVudChtZW51UGxhY2VtZW50KSksXG4gICAgX3VzZVN0YXRlNiA9IF9zbGljZWRUb0FycmF5KF91c2VTdGF0ZTUsIDIpLFxuICAgIHBsYWNlbWVudCA9IF91c2VTdGF0ZTZbMF0sXG4gICAgc2V0UG9ydGFsUGxhY2VtZW50ID0gX3VzZVN0YXRlNlsxXTtcbiAgdmFyIHBvcnRhbFBsYWNlbWVudENvbnRleHQgPSB1c2VNZW1vKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2V0UG9ydGFsUGxhY2VtZW50OiBzZXRQb3J0YWxQbGFjZW1lbnRcbiAgICB9O1xuICB9LCBbXSk7XG4gIHZhciBfdXNlU3RhdGU3ID0gdXNlU3RhdGUobnVsbCksXG4gICAgX3VzZVN0YXRlOCA9IF9zbGljZWRUb0FycmF5KF91c2VTdGF0ZTcsIDIpLFxuICAgIGNvbXB1dGVkUG9zaXRpb24gPSBfdXNlU3RhdGU4WzBdLFxuICAgIHNldENvbXB1dGVkUG9zaXRpb24gPSBfdXNlU3RhdGU4WzFdO1xuICB2YXIgdXBkYXRlQ29tcHV0ZWRQb3NpdGlvbiA9IHVzZUNhbGxiYWNrKGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIWNvbnRyb2xFbGVtZW50KSByZXR1cm47XG4gICAgdmFyIHJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudE9iaihjb250cm9sRWxlbWVudCk7XG4gICAgdmFyIHNjcm9sbERpc3RhbmNlID0gbWVudVBvc2l0aW9uID09PSAnZml4ZWQnID8gMCA6IHdpbmRvdy5wYWdlWU9mZnNldDtcbiAgICB2YXIgb2Zmc2V0ID0gcmVjdFtwbGFjZW1lbnRdICsgc2Nyb2xsRGlzdGFuY2U7XG4gICAgaWYgKG9mZnNldCAhPT0gKGNvbXB1dGVkUG9zaXRpb24gPT09IG51bGwgfHwgY29tcHV0ZWRQb3NpdGlvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogY29tcHV0ZWRQb3NpdGlvbi5vZmZzZXQpIHx8IHJlY3QubGVmdCAhPT0gKGNvbXB1dGVkUG9zaXRpb24gPT09IG51bGwgfHwgY29tcHV0ZWRQb3NpdGlvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogY29tcHV0ZWRQb3NpdGlvbi5yZWN0LmxlZnQpIHx8IHJlY3Qud2lkdGggIT09IChjb21wdXRlZFBvc2l0aW9uID09PSBudWxsIHx8IGNvbXB1dGVkUG9zaXRpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNvbXB1dGVkUG9zaXRpb24ucmVjdC53aWR0aCkpIHtcbiAgICAgIHNldENvbXB1dGVkUG9zaXRpb24oe1xuICAgICAgICBvZmZzZXQ6IG9mZnNldCxcbiAgICAgICAgcmVjdDogcmVjdFxuICAgICAgfSk7XG4gICAgfVxuICB9LCBbY29udHJvbEVsZW1lbnQsIG1lbnVQb3NpdGlvbiwgcGxhY2VtZW50LCBjb21wdXRlZFBvc2l0aW9uID09PSBudWxsIHx8IGNvbXB1dGVkUG9zaXRpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNvbXB1dGVkUG9zaXRpb24ub2Zmc2V0LCBjb21wdXRlZFBvc2l0aW9uID09PSBudWxsIHx8IGNvbXB1dGVkUG9zaXRpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNvbXB1dGVkUG9zaXRpb24ucmVjdC5sZWZ0LCBjb21wdXRlZFBvc2l0aW9uID09PSBudWxsIHx8IGNvbXB1dGVkUG9zaXRpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNvbXB1dGVkUG9zaXRpb24ucmVjdC53aWR0aF0pO1xuICB1c2VMYXlvdXRFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgIHVwZGF0ZUNvbXB1dGVkUG9zaXRpb24oKTtcbiAgfSwgW3VwZGF0ZUNvbXB1dGVkUG9zaXRpb25dKTtcbiAgdmFyIHJ1bkF1dG9VcGRhdGUgPSB1c2VDYWxsYmFjayhmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHR5cGVvZiBjbGVhbnVwUmVmLmN1cnJlbnQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNsZWFudXBSZWYuY3VycmVudCgpO1xuICAgICAgY2xlYW51cFJlZi5jdXJyZW50ID0gbnVsbDtcbiAgICB9XG4gICAgaWYgKGNvbnRyb2xFbGVtZW50ICYmIG1lbnVQb3J0YWxSZWYuY3VycmVudCkge1xuICAgICAgY2xlYW51cFJlZi5jdXJyZW50ID0gYXV0b1VwZGF0ZShjb250cm9sRWxlbWVudCwgbWVudVBvcnRhbFJlZi5jdXJyZW50LCB1cGRhdGVDb21wdXRlZFBvc2l0aW9uLCB7XG4gICAgICAgIGVsZW1lbnRSZXNpemU6ICdSZXNpemVPYnNlcnZlcicgaW4gd2luZG93XG4gICAgICB9KTtcbiAgICB9XG4gIH0sIFtjb250cm9sRWxlbWVudCwgdXBkYXRlQ29tcHV0ZWRQb3NpdGlvbl0pO1xuICB1c2VMYXlvdXRFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgIHJ1bkF1dG9VcGRhdGUoKTtcbiAgfSwgW3J1bkF1dG9VcGRhdGVdKTtcbiAgdmFyIHNldE1lbnVQb3J0YWxFbGVtZW50ID0gdXNlQ2FsbGJhY2soZnVuY3Rpb24gKG1lbnVQb3J0YWxFbGVtZW50KSB7XG4gICAgbWVudVBvcnRhbFJlZi5jdXJyZW50ID0gbWVudVBvcnRhbEVsZW1lbnQ7XG4gICAgcnVuQXV0b1VwZGF0ZSgpO1xuICB9LCBbcnVuQXV0b1VwZGF0ZV0pO1xuXG4gIC8vIGJhaWwgZWFybHkgaWYgcmVxdWlyZWQgZWxlbWVudHMgYXJlbid0IHByZXNlbnRcbiAgaWYgKCFhcHBlbmRUbyAmJiBtZW51UG9zaXRpb24gIT09ICdmaXhlZCcgfHwgIWNvbXB1dGVkUG9zaXRpb24pIHJldHVybiBudWxsO1xuXG4gIC8vIHNhbWUgd3JhcHBlciBlbGVtZW50IHdoZXRoZXIgZml4ZWQgb3IgcG9ydGFsbGVkXG4gIHZhciBtZW51V3JhcHBlciA9IGpzeChcImRpdlwiLCBfZXh0ZW5kcyh7XG4gICAgcmVmOiBzZXRNZW51UG9ydGFsRWxlbWVudFxuICB9LCBnZXRTdHlsZVByb3BzKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgcHJvcHMpLCB7fSwge1xuICAgIG9mZnNldDogY29tcHV0ZWRQb3NpdGlvbi5vZmZzZXQsXG4gICAgcG9zaXRpb246IG1lbnVQb3NpdGlvbixcbiAgICByZWN0OiBjb21wdXRlZFBvc2l0aW9uLnJlY3RcbiAgfSksICdtZW51UG9ydGFsJywge1xuICAgICdtZW51LXBvcnRhbCc6IHRydWVcbiAgfSksIGlubmVyUHJvcHMpLCBjaGlsZHJlbik7XG4gIHJldHVybiBqc3goUG9ydGFsUGxhY2VtZW50Q29udGV4dC5Qcm92aWRlciwge1xuICAgIHZhbHVlOiBwb3J0YWxQbGFjZW1lbnRDb250ZXh0XG4gIH0sIGFwcGVuZFRvID8gLyojX19QVVJFX18qL2NyZWF0ZVBvcnRhbChtZW51V3JhcHBlciwgYXBwZW5kVG8pIDogbWVudVdyYXBwZXIpO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBSb290IENvbnRhaW5lclxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbnZhciBjb250YWluZXJDU1MgPSBmdW5jdGlvbiBjb250YWluZXJDU1MoX3JlZikge1xuICB2YXIgaXNEaXNhYmxlZCA9IF9yZWYuaXNEaXNhYmxlZCxcbiAgICBpc1J0bCA9IF9yZWYuaXNSdGw7XG4gIHJldHVybiB7XG4gICAgbGFiZWw6ICdjb250YWluZXInLFxuICAgIGRpcmVjdGlvbjogaXNSdGwgPyAncnRsJyA6IHVuZGVmaW5lZCxcbiAgICBwb2ludGVyRXZlbnRzOiBpc0Rpc2FibGVkID8gJ25vbmUnIDogdW5kZWZpbmVkLFxuICAgIC8vIGNhbmNlbCBtb3VzZSBldmVudHMgd2hlbiBkaXNhYmxlZFxuICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnXG4gIH07XG59O1xudmFyIFNlbGVjdENvbnRhaW5lciA9IGZ1bmN0aW9uIFNlbGVjdENvbnRhaW5lcihwcm9wcykge1xuICB2YXIgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbixcbiAgICBpbm5lclByb3BzID0gcHJvcHMuaW5uZXJQcm9wcyxcbiAgICBpc0Rpc2FibGVkID0gcHJvcHMuaXNEaXNhYmxlZCxcbiAgICBpc1J0bCA9IHByb3BzLmlzUnRsO1xuICByZXR1cm4ganN4KFwiZGl2XCIsIF9leHRlbmRzKHt9LCBnZXRTdHlsZVByb3BzKHByb3BzLCAnY29udGFpbmVyJywge1xuICAgICctLWlzLWRpc2FibGVkJzogaXNEaXNhYmxlZCxcbiAgICAnLS1pcy1ydGwnOiBpc1J0bFxuICB9KSwgaW5uZXJQcm9wcyksIGNoaWxkcmVuKTtcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVmFsdWUgQ29udGFpbmVyXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxudmFyIHZhbHVlQ29udGFpbmVyQ1NTID0gZnVuY3Rpb24gdmFsdWVDb250YWluZXJDU1MoX3JlZjIsIHVuc3R5bGVkKSB7XG4gIHZhciBzcGFjaW5nID0gX3JlZjIudGhlbWUuc3BhY2luZyxcbiAgICBpc011bHRpID0gX3JlZjIuaXNNdWx0aSxcbiAgICBoYXNWYWx1ZSA9IF9yZWYyLmhhc1ZhbHVlLFxuICAgIGNvbnRyb2xTaG91bGRSZW5kZXJWYWx1ZSA9IF9yZWYyLnNlbGVjdFByb3BzLmNvbnRyb2xTaG91bGRSZW5kZXJWYWx1ZTtcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgIGRpc3BsYXk6IGlzTXVsdGkgJiYgaGFzVmFsdWUgJiYgY29udHJvbFNob3VsZFJlbmRlclZhbHVlID8gJ2ZsZXgnIDogJ2dyaWQnLFxuICAgIGZsZXg6IDEsXG4gICAgZmxleFdyYXA6ICd3cmFwJyxcbiAgICBXZWJraXRPdmVyZmxvd1Njcm9sbGluZzogJ3RvdWNoJyxcbiAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICBvdmVyZmxvdzogJ2hpZGRlbidcbiAgfSwgdW5zdHlsZWQgPyB7fSA6IHtcbiAgICBwYWRkaW5nOiBcIlwiLmNvbmNhdChzcGFjaW5nLmJhc2VVbml0IC8gMiwgXCJweCBcIikuY29uY2F0KHNwYWNpbmcuYmFzZVVuaXQgKiAyLCBcInB4XCIpXG4gIH0pO1xufTtcbnZhciBWYWx1ZUNvbnRhaW5lciA9IGZ1bmN0aW9uIFZhbHVlQ29udGFpbmVyKHByb3BzKSB7XG4gIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgIGlubmVyUHJvcHMgPSBwcm9wcy5pbm5lclByb3BzLFxuICAgIGlzTXVsdGkgPSBwcm9wcy5pc011bHRpLFxuICAgIGhhc1ZhbHVlID0gcHJvcHMuaGFzVmFsdWU7XG4gIHJldHVybiBqc3goXCJkaXZcIiwgX2V4dGVuZHMoe30sIGdldFN0eWxlUHJvcHMocHJvcHMsICd2YWx1ZUNvbnRhaW5lcicsIHtcbiAgICAndmFsdWUtY29udGFpbmVyJzogdHJ1ZSxcbiAgICAndmFsdWUtY29udGFpbmVyLS1pcy1tdWx0aSc6IGlzTXVsdGksXG4gICAgJ3ZhbHVlLWNvbnRhaW5lci0taGFzLXZhbHVlJzogaGFzVmFsdWVcbiAgfSksIGlubmVyUHJvcHMpLCBjaGlsZHJlbik7XG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEluZGljYXRvciBDb250YWluZXJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG52YXIgaW5kaWNhdG9yc0NvbnRhaW5lckNTUyA9IGZ1bmN0aW9uIGluZGljYXRvcnNDb250YWluZXJDU1MoKSB7XG4gIHJldHVybiB7XG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgYWxpZ25TZWxmOiAnc3RyZXRjaCcsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGZsZXhTaHJpbms6IDBcbiAgfTtcbn07XG52YXIgSW5kaWNhdG9yc0NvbnRhaW5lciA9IGZ1bmN0aW9uIEluZGljYXRvcnNDb250YWluZXIocHJvcHMpIHtcbiAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgaW5uZXJQcm9wcyA9IHByb3BzLmlubmVyUHJvcHM7XG4gIHJldHVybiBqc3goXCJkaXZcIiwgX2V4dGVuZHMoe30sIGdldFN0eWxlUHJvcHMocHJvcHMsICdpbmRpY2F0b3JzQ29udGFpbmVyJywge1xuICAgIGluZGljYXRvcnM6IHRydWVcbiAgfSksIGlubmVyUHJvcHMpLCBjaGlsZHJlbik7XG59O1xuXG52YXIgX3RlbXBsYXRlT2JqZWN0O1xudmFyIF9leGNsdWRlZCQyID0gW1wic2l6ZVwiXSxcbiAgX2V4Y2x1ZGVkMiA9IFtcImlubmVyUHJvcHNcIiwgXCJpc1J0bFwiLCBcInNpemVcIl07XG5mdW5jdGlvbiBfRU1PVElPTl9TVFJJTkdJRklFRF9DU1NfRVJST1JfXygpIHsgcmV0dXJuIFwiWW91IGhhdmUgdHJpZWQgdG8gc3RyaW5naWZ5IG9iamVjdCByZXR1cm5lZCBmcm9tIGBjc3NgIGZ1bmN0aW9uLiBJdCBpc24ndCBzdXBwb3NlZCB0byBiZSB1c2VkIGRpcmVjdGx5IChlLmcuIGFzIHZhbHVlIG9mIHRoZSBgY2xhc3NOYW1lYCBwcm9wKSwgYnV0IHJhdGhlciBoYW5kZWQgdG8gZW1vdGlvbiBzbyBpdCBjYW4gaGFuZGxlIGl0IChlLmcuIGFzIHZhbHVlIG9mIGBjc3NgIHByb3ApLlwiOyB9XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRHJvcGRvd24gJiBDbGVhciBJY29uc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG52YXIgX3JlZjIgPSBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyB7XG4gIG5hbWU6IFwiOG1ta2NnXCIsXG4gIHN0eWxlczogXCJkaXNwbGF5OmlubGluZS1ibG9jaztmaWxsOmN1cnJlbnRDb2xvcjtsaW5lLWhlaWdodDoxO3N0cm9rZTpjdXJyZW50Q29sb3I7c3Ryb2tlLXdpZHRoOjBcIlxufSA6IHtcbiAgbmFtZTogXCJ0ajViZGUtU3ZnXCIsXG4gIHN0eWxlczogXCJkaXNwbGF5OmlubGluZS1ibG9jaztmaWxsOmN1cnJlbnRDb2xvcjtsaW5lLWhlaWdodDoxO3N0cm9rZTpjdXJyZW50Q29sb3I7c3Ryb2tlLXdpZHRoOjA7bGFiZWw6U3ZnO1wiLFxuICBtYXA6IFwiLyojIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW1sdVpHbGpZWFJ2Y25NdWRITjRJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSkJRWGxDU1NJc0ltWnBiR1VpT2lKcGJtUnBZMkYwYjNKekxuUnplQ0lzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSWk4cUtpQkFhbk40SUdwemVDQXFMMXh1YVcxd2IzSjBJSHNnVW1WaFkzUk9iMlJsSUgwZ1puSnZiU0FuY21WaFkzUW5PMXh1YVcxd2IzSjBJSHNnYW5ONExDQnJaWGxtY21GdFpYTWdmU0JtY205dElDZEFaVzF2ZEdsdmJpOXlaV0ZqZENjN1hHNWNibWx0Y0c5eWRDQjdYRzRnSUVOdmJXMXZibEJ5YjNCelFXNWtRMnhoYzNOT1lXMWxMRnh1SUNCRFUxTlBZbXBsWTNSWGFYUm9UR0ZpWld3c1hHNGdJRWR5YjNWd1FtRnpaU3hjYm4wZ1puSnZiU0FuTGk0dmRIbHdaWE1uTzF4dWFXMXdiM0owSUhzZ1oyVjBVM1I1YkdWUWNtOXdjeUI5SUdaeWIyMGdKeTR1TDNWMGFXeHpKenRjYmx4dUx5OGdQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5WEc0dkx5QkVjbTl3Wkc5M2JpQW1JRU5zWldGeUlFbGpiMjV6WEc0dkx5QTlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDFjYmx4dVkyOXVjM1FnVTNabklEMGdLSHRjYmlBZ2MybDZaU3hjYmlBZ0xpNHVjSEp2Y0hOY2JuMDZJRXBUV0M1SmJuUnlhVzV6YVdORmJHVnRaVzUwYzFzbmMzWm5KMTBnSmlCN0lITnBlbVU2SUc1MWJXSmxjaUI5S1NBOVBpQW9YRzRnSUR4emRtZGNiaUFnSUNCb1pXbG5hSFE5ZTNOcGVtVjlYRzRnSUNBZ2QybGtkR2c5ZTNOcGVtVjlYRzRnSUNBZ2RtbGxkMEp2ZUQxY0lqQWdNQ0F5TUNBeU1Gd2lYRzRnSUNBZ1lYSnBZUzFvYVdSa1pXNDlYQ0owY25WbFhDSmNiaUFnSUNCbWIyTjFjMkZpYkdVOVhDSm1ZV3h6WlZ3aVhHNGdJQ0FnWTNOelBYdDdYRzRnSUNBZ0lDQmthWE53YkdGNU9pQW5hVzVzYVc1bExXSnNiMk5ySnl4Y2JpQWdJQ0FnSUdacGJHdzZJQ2RqZFhKeVpXNTBRMjlzYjNJbkxGeHVJQ0FnSUNBZ2JHbHVaVWhsYVdkb2REb2dNU3hjYmlBZ0lDQWdJSE4wY205clpUb2dKMk4xY25KbGJuUkRiMnh2Y2ljc1hHNGdJQ0FnSUNCemRISnZhMlZYYVdSMGFEb2dNQ3hjYmlBZ0lDQjlmVnh1SUNBZ0lIc3VMaTV3Y205d2MzMWNiaUFnTHo1Y2JpazdYRzVjYm1WNGNHOXlkQ0IwZVhCbElFTnliM056U1dOdmJsQnliM0J6SUQwZ1NsTllMa2x1ZEhKcGJuTnBZMFZzWlcxbGJuUnpXeWR6ZG1jblhTQW1JSHNnYzJsNlpUODZJRzUxYldKbGNpQjlPMXh1Wlhod2IzSjBJR052Ym5OMElFTnliM056U1dOdmJpQTlJQ2h3Y205d2N6b2dRM0p2YzNOSlkyOXVVSEp2Y0hNcElEMCtJQ2hjYmlBZ1BGTjJaeUJ6YVhwbFBYc3lNSDBnZXk0dUxuQnliM0J6ZlQ1Y2JpQWdJQ0E4Y0dGMGFDQmtQVndpVFRFMExqTTBPQ0F4TkM0NE5EbGpMVEF1TkRZNUlEQXVORFk1TFRFdU1qSTVJREF1TkRZNUxURXVOamszSURCc0xUSXVOalV4TFRNdU1ETXdMVEl1TmpVeElETXVNREk1WXkwd0xqUTJPU0F3TGpRMk9TMHhMakl5T1NBd0xqUTJPUzB4TGpZNU55QXdMVEF1TkRZNUxUQXVORFk1TFRBdU5EWTVMVEV1TWpJNUlEQXRNUzQyT1Rkc01pNDNOVGd0TXk0eE5TMHlMamMxT1MwekxqRTFNbU10TUM0ME5qa3RNQzQwTmprdE1DNDBOamt0TVM0eU1qZ2dNQzB4TGpZNU4zTXhMakl5T0Mwd0xqUTJPU0F4TGpZNU55QXdiREl1TmpVeUlETXVNRE14SURJdU5qVXhMVE11TURNeFl6QXVORFk1TFRBdU5EWTVJREV1TWpJNExUQXVORFk1SURFdU5qazNJREJ6TUM0ME5qa2dNUzR5TWprZ01DQXhMalk1TjJ3dE1pNDNOVGdnTXk0eE5USWdNaTQzTlRnZ015NHhOV013TGpRMk9TQXdMalEyT1NBd0xqUTJPU0F4TGpJeU9TQXdJREV1TmprNGVsd2lJQzgrWEc0Z0lEd3ZVM1puUGx4dUtUdGNibVY0Y0c5eWRDQjBlWEJsSUVSdmQyNURhR1YyY205dVVISnZjSE1nUFNCS1UxZ3VTVzUwY21sdWMybGpSV3hsYldWdWRITmJKM04yWnlkZElDWWdleUJ6YVhwbFB6b2diblZ0WW1WeUlIMDdYRzVsZUhCdmNuUWdZMjl1YzNRZ1JHOTNia05vWlhaeWIyNGdQU0FvY0hKdmNITTZJRVJ2ZDI1RGFHVjJjbTl1VUhKdmNITXBJRDArSUNoY2JpQWdQRk4yWnlCemFYcGxQWHN5TUgwZ2V5NHVMbkJ5YjNCemZUNWNiaUFnSUNBOGNHRjBhQ0JrUFZ3aVRUUXVOVEUySURjdU5UUTRZekF1TkRNMkxUQXVORFEySURFdU1EUXpMVEF1TkRneElERXVOVGMySURCc015NDVNRGdnTXk0M05EY2dNeTQ1TURndE15NDNORGRqTUM0MU16TXRNQzQwT0RFZ01TNHhOREV0TUM0ME5EWWdNUzQxTnpRZ01DQXdMalF6TmlBd0xqUTBOU0F3TGpRd09DQXhMakU1TnlBd0lERXVOakUxTFRBdU5EQTJJREF1TkRFNExUUXVOamsxSURRdU5UQXlMVFF1TmprMUlEUXVOVEF5TFRBdU1qRTNJREF1TWpJekxUQXVOVEF5SURBdU16TTFMVEF1TnpnM0lEQXVNek0xY3kwd0xqVTNMVEF1TVRFeUxUQXVOemc1TFRBdU16TTFZekFnTUMwMExqSTROeTAwTGpBNE5DMDBMalk1TlMwMExqVXdNbk10TUM0ME16WXRNUzR4TnlBd0xURXVOakUxZWx3aUlDOCtYRzRnSUR3dlUzWm5QbHh1S1R0Y2JseHVMeThnUFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVhHNHZMeUJFY205d1pHOTNiaUFtSUVOc1pXRnlJRUoxZEhSdmJuTmNiaTh2SUQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBWeHVYRzVsZUhCdmNuUWdhVzUwWlhKbVlXTmxJRVJ5YjNCa2IzZHVTVzVrYVdOaGRHOXlVSEp2Y0hNOFhHNGdJRTl3ZEdsdmJpQTlJSFZ1YTI1dmQyNHNYRzRnSUVselRYVnNkR2tnWlhoMFpXNWtjeUJpYjI5c1pXRnVJRDBnWW05dmJHVmhiaXhjYmlBZ1IzSnZkWEFnWlhoMFpXNWtjeUJIY205MWNFSmhjMlU4VDNCMGFXOXVQaUE5SUVkeWIzVndRbUZ6WlR4UGNIUnBiMjQrWEc0K0lHVjRkR1Z1WkhNZ1EyOXRiVzl1VUhKdmNITkJibVJEYkdGemMwNWhiV1U4VDNCMGFXOXVMQ0JKYzAxMWJIUnBMQ0JIY205MWNENGdlMXh1SUNBdktpb2dWR2hsSUdOb2FXeGtjbVZ1SUhSdklHSmxJSEpsYm1SbGNtVmtJR2x1YzJsa1pTQjBhR1VnYVc1a2FXTmhkRzl5TGlBcUwxeHVJQ0JqYUdsc1pISmxiajg2SUZKbFlXTjBUbTlrWlR0Y2JpQWdMeW9xSUZCeWIzQnpJSFJvWVhRZ2QybHNiQ0JpWlNCd1lYTnpaV1FnYjI0Z2RHOGdkR2hsSUdOb2FXeGtjbVZ1TGlBcUwxeHVJQ0JwYm01bGNsQnliM0J6T2lCS1UxZ3VTVzUwY21sdWMybGpSV3hsYldWdWRITmJKMlJwZGlkZE8xeHVJQ0F2S2lvZ1ZHaGxJR1p2WTNWelpXUWdjM1JoZEdVZ2IyWWdkR2hsSUhObGJHVmpkQzRnS2k5Y2JpQWdhWE5HYjJOMWMyVmtPaUJpYjI5c1pXRnVPMXh1SUNCcGMwUnBjMkZpYkdWa09pQmliMjlzWldGdU8xeHVmVnh1WEc1amIyNXpkQ0JpWVhObFExTlRJRDBnUEZ4dUlDQlBjSFJwYjI0c1hHNGdJRWx6VFhWc2RHa2daWGgwWlc1a2N5QmliMjlzWldGdUxGeHVJQ0JIY205MWNDQmxlSFJsYm1SeklFZHliM1Z3UW1GelpUeFBjSFJwYjI0K1hHNCtLRnh1SUNCN1hHNGdJQ0FnYVhOR2IyTjFjMlZrTEZ4dUlDQWdJSFJvWlcxbE9pQjdYRzRnSUNBZ0lDQnpjR0ZqYVc1bk9pQjdJR0poYzJWVmJtbDBJSDBzWEc0Z0lDQWdJQ0JqYjJ4dmNuTXNYRzRnSUNBZ2ZTeGNiaUFnZlRwY2JpQWdJQ0I4SUVSeWIzQmtiM2R1U1c1a2FXTmhkRzl5VUhKdmNITThUM0IwYVc5dUxDQkpjMDExYkhScExDQkhjbTkxY0Q1Y2JpQWdJQ0I4SUVOc1pXRnlTVzVrYVdOaGRHOXlVSEp2Y0hNOFQzQjBhVzl1TENCSmMwMTFiSFJwTENCSGNtOTFjRDRzWEc0Z0lIVnVjM1I1YkdWa09pQmliMjlzWldGdVhHNHBPaUJEVTFOUFltcGxZM1JYYVhSb1RHRmlaV3dnUFQ0Z0tIdGNiaUFnYkdGaVpXdzZJQ2RwYm1ScFkyRjBiM0pEYjI1MFlXbHVaWEluTEZ4dUlDQmthWE53YkdGNU9pQW5abXhsZUNjc1hHNGdJSFJ5WVc1emFYUnBiMjQ2SUNkamIyeHZjaUF4TlRCdGN5Y3NYRzRnSUM0dUxpaDFibk4wZVd4bFpGeHVJQ0FnSUQ4Z2UzMWNiaUFnSUNBNklIdGNiaUFnSUNBZ0lDQWdZMjlzYjNJNklHbHpSbTlqZFhObFpDQS9JR052Ykc5eWN5NXVaWFYwY21Gc05qQWdPaUJqYjJ4dmNuTXVibVYxZEhKaGJESXdMRnh1SUNBZ0lDQWdJQ0J3WVdSa2FXNW5PaUJpWVhObFZXNXBkQ0FxSURJc1hHNGdJQ0FnSUNBZ0lDYzZhRzkyWlhJbk9pQjdYRzRnSUNBZ0lDQWdJQ0FnWTI5c2IzSTZJR2x6Um05amRYTmxaQ0EvSUdOdmJHOXljeTV1WlhWMGNtRnNPREFnT2lCamIyeHZjbk11Ym1WMWRISmhiRFF3TEZ4dUlDQWdJQ0FnSUNCOUxGeHVJQ0FnSUNBZ2ZTa3NYRzU5S1R0Y2JseHVaWGh3YjNKMElHTnZibk4wSUdSeWIzQmtiM2R1U1c1a2FXTmhkRzl5UTFOVElEMGdZbUZ6WlVOVFV6dGNibVY0Y0c5eWRDQmpiMjV6ZENCRWNtOXdaRzkzYmtsdVpHbGpZWFJ2Y2lBOUlEeGNiaUFnVDNCMGFXOXVMRnh1SUNCSmMwMTFiSFJwSUdWNGRHVnVaSE1nWW05dmJHVmhiaXhjYmlBZ1IzSnZkWEFnWlhoMFpXNWtjeUJIY205MWNFSmhjMlU4VDNCMGFXOXVQbHh1UGloY2JpQWdjSEp2Y0hNNklFUnliM0JrYjNkdVNXNWthV05oZEc5eVVISnZjSE04VDNCMGFXOXVMQ0JKYzAxMWJIUnBMQ0JIY205MWNENWNiaWtnUFQ0Z2UxeHVJQ0JqYjI1emRDQjdJR05vYVd4a2NtVnVMQ0JwYm01bGNsQnliM0J6SUgwZ1BTQndjbTl3Y3p0Y2JpQWdjbVYwZFhKdUlDaGNiaUFnSUNBOFpHbDJYRzRnSUNBZ0lDQjdMaTR1WjJWMFUzUjViR1ZRY205d2N5aHdjbTl3Y3l3Z0oyUnliM0JrYjNkdVNXNWthV05oZEc5eUp5d2dlMXh1SUNBZ0lDQWdJQ0JwYm1ScFkyRjBiM0k2SUhSeWRXVXNYRzRnSUNBZ0lDQWdJQ2RrY205d1pHOTNiaTFwYm1ScFkyRjBiM0luT2lCMGNuVmxMRnh1SUNBZ0lDQWdmU2w5WEc0Z0lDQWdJQ0I3TGk0dWFXNXVaWEpRY205d2MzMWNiaUFnSUNBK1hHNGdJQ0FnSUNCN1kyaHBiR1J5Wlc0Z2ZId2dQRVJ2ZDI1RGFHVjJjbTl1SUM4K2ZWeHVJQ0FnSUR3dlpHbDJQbHh1SUNBcE8xeHVmVHRjYmx4dVpYaHdiM0owSUdsdWRHVnlabUZqWlNCRGJHVmhja2x1WkdsallYUnZjbEJ5YjNCelBGeHVJQ0JQY0hScGIyNGdQU0IxYm10dWIzZHVMRnh1SUNCSmMwMTFiSFJwSUdWNGRHVnVaSE1nWW05dmJHVmhiaUE5SUdKdmIyeGxZVzRzWEc0Z0lFZHliM1Z3SUdWNGRHVnVaSE1nUjNKdmRYQkNZWE5sUEU5d2RHbHZiajRnUFNCSGNtOTFjRUpoYzJVOFQzQjBhVzl1UGx4dVBpQmxlSFJsYm1SeklFTnZiVzF2YmxCeWIzQnpRVzVrUTJ4aGMzTk9ZVzFsUEU5d2RHbHZiaXdnU1hOTmRXeDBhU3dnUjNKdmRYQStJSHRjYmlBZ0x5b3FJRlJvWlNCamFHbHNaSEpsYmlCMGJ5QmlaU0J5Wlc1a1pYSmxaQ0JwYm5OcFpHVWdkR2hsSUdsdVpHbGpZWFJ2Y2k0Z0tpOWNiaUFnWTJocGJHUnlaVzQvT2lCU1pXRmpkRTV2WkdVN1hHNGdJQzhxS2lCUWNtOXdjeUIwYUdGMElIZHBiR3dnWW1VZ2NHRnpjMlZrSUc5dUlIUnZJSFJvWlNCamFHbHNaSEpsYmk0Z0tpOWNiaUFnYVc1dVpYSlFjbTl3Y3pvZ1NsTllMa2x1ZEhKcGJuTnBZMFZzWlcxbGJuUnpXeWRrYVhZblhUdGNiaUFnTHlvcUlGUm9aU0JtYjJOMWMyVmtJSE4wWVhSbElHOW1JSFJvWlNCelpXeGxZM1F1SUNvdlhHNGdJR2x6Um05amRYTmxaRG9nWW05dmJHVmhianRjYm4xY2JseHVaWGh3YjNKMElHTnZibk4wSUdOc1pXRnlTVzVrYVdOaGRHOXlRMU5USUQwZ1ltRnpaVU5UVXp0Y2JtVjRjRzl5ZENCamIyNXpkQ0JEYkdWaGNrbHVaR2xqWVhSdmNpQTlJRHhjYmlBZ1QzQjBhVzl1TEZ4dUlDQkpjMDExYkhScElHVjRkR1Z1WkhNZ1ltOXZiR1ZoYml4Y2JpQWdSM0p2ZFhBZ1pYaDBaVzVrY3lCSGNtOTFjRUpoYzJVOFQzQjBhVzl1UGx4dVBpaGNiaUFnY0hKdmNITTZJRU5zWldGeVNXNWthV05oZEc5eVVISnZjSE04VDNCMGFXOXVMQ0JKYzAxMWJIUnBMQ0JIY205MWNENWNiaWtnUFQ0Z2UxeHVJQ0JqYjI1emRDQjdJR05vYVd4a2NtVnVMQ0JwYm01bGNsQnliM0J6SUgwZ1BTQndjbTl3Y3p0Y2JpQWdjbVYwZFhKdUlDaGNiaUFnSUNBOFpHbDJYRzRnSUNBZ0lDQjdMaTR1WjJWMFUzUjViR1ZRY205d2N5aHdjbTl3Y3l3Z0oyTnNaV0Z5U1c1a2FXTmhkRzl5Snl3Z2UxeHVJQ0FnSUNBZ0lDQnBibVJwWTJGMGIzSTZJSFJ5ZFdVc1hHNGdJQ0FnSUNBZ0lDZGpiR1ZoY2kxcGJtUnBZMkYwYjNJbk9pQjBjblZsTEZ4dUlDQWdJQ0FnZlNsOVhHNGdJQ0FnSUNCN0xpNHVhVzV1WlhKUWNtOXdjMzFjYmlBZ0lDQStYRzRnSUNBZ0lDQjdZMmhwYkdSeVpXNGdmSHdnUEVOeWIzTnpTV052YmlBdlBuMWNiaUFnSUNBOEwyUnBkajVjYmlBZ0tUdGNibjA3WEc1Y2JpOHZJRDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFZ4dUx5OGdVMlZ3WVhKaGRHOXlYRzR2THlBOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMWNibHh1Wlhod2IzSjBJR2x1ZEdWeVptRmpaU0JKYm1ScFkyRjBiM0pUWlhCaGNtRjBiM0pRY205d2N6eGNiaUFnVDNCMGFXOXVJRDBnZFc1cmJtOTNiaXhjYmlBZ1NYTk5kV3gwYVNCbGVIUmxibVJ6SUdKdmIyeGxZVzRnUFNCaWIyOXNaV0Z1TEZ4dUlDQkhjbTkxY0NCbGVIUmxibVJ6SUVkeWIzVndRbUZ6WlR4UGNIUnBiMjQrSUQwZ1IzSnZkWEJDWVhObFBFOXdkR2x2Ymo1Y2JqNGdaWGgwWlc1a2N5QkRiMjF0YjI1UWNtOXdjMEZ1WkVOc1lYTnpUbUZ0WlR4UGNIUnBiMjRzSUVselRYVnNkR2tzSUVkeWIzVndQaUI3WEc0Z0lHbHpSR2x6WVdKc1pXUTZJR0p2YjJ4bFlXNDdYRzRnSUdselJtOWpkWE5sWkRvZ1ltOXZiR1ZoYmp0Y2JpQWdhVzV1WlhKUWNtOXdjejg2SUVwVFdDNUpiblJ5YVc1emFXTkZiR1Z0Wlc1MGMxc25jM0JoYmlkZE8xeHVmVnh1WEc1bGVIQnZjblFnWTI5dWMzUWdhVzVrYVdOaGRHOXlVMlZ3WVhKaGRHOXlRMU5USUQwZ1BGeHVJQ0JQY0hScGIyNHNYRzRnSUVselRYVnNkR2tnWlhoMFpXNWtjeUJpYjI5c1pXRnVMRnh1SUNCSGNtOTFjQ0JsZUhSbGJtUnpJRWR5YjNWd1FtRnpaVHhQY0hScGIyNCtYRzQrS0Z4dUlDQjdYRzRnSUNBZ2FYTkVhWE5oWW14bFpDeGNiaUFnSUNCMGFHVnRaVG9nZTF4dUlDQWdJQ0FnYzNCaFkybHVaem9nZXlCaVlYTmxWVzVwZENCOUxGeHVJQ0FnSUNBZ1kyOXNiM0p6TEZ4dUlDQWdJSDBzWEc0Z0lIMDZJRWx1WkdsallYUnZjbE5sY0dGeVlYUnZjbEJ5YjNCelBFOXdkR2x2Yml3Z1NYTk5kV3gwYVN3Z1IzSnZkWEErTEZ4dUlDQjFibk4wZVd4bFpEb2dZbTl2YkdWaGJseHVLVG9nUTFOVFQySnFaV04wVjJsMGFFeGhZbVZzSUQwK0lDaDdYRzRnSUd4aFltVnNPaUFuYVc1a2FXTmhkRzl5VTJWd1lYSmhkRzl5Snl4Y2JpQWdZV3hwWjI1VFpXeG1PaUFuYzNSeVpYUmphQ2NzWEc0Z0lIZHBaSFJvT2lBeExGeHVJQ0F1TGk0b2RXNXpkSGxzWldSY2JpQWdJQ0EvSUh0OVhHNGdJQ0FnT2lCN1hHNGdJQ0FnSUNBZ0lHSmhZMnRuY205MWJtUkRiMnh2Y2pvZ2FYTkVhWE5oWW14bFpDQS9JR052Ykc5eWN5NXVaWFYwY21Gc01UQWdPaUJqYjJ4dmNuTXVibVYxZEhKaGJESXdMRnh1SUNBZ0lDQWdJQ0J0WVhKbmFXNUNiM1IwYjIwNklHSmhjMlZWYm1sMElDb2dNaXhjYmlBZ0lDQWdJQ0FnYldGeVoybHVWRzl3T2lCaVlYTmxWVzVwZENBcUlESXNYRzRnSUNBZ0lDQjlLU3hjYm4wcE8xeHVYRzVsZUhCdmNuUWdZMjl1YzNRZ1NXNWthV05oZEc5eVUyVndZWEpoZEc5eUlEMGdQRnh1SUNCUGNIUnBiMjRzWEc0Z0lFbHpUWFZzZEdrZ1pYaDBaVzVrY3lCaWIyOXNaV0Z1TEZ4dUlDQkhjbTkxY0NCbGVIUmxibVJ6SUVkeWIzVndRbUZ6WlR4UGNIUnBiMjQrWEc0K0tGeHVJQ0J3Y205d2N6b2dTVzVrYVdOaGRHOXlVMlZ3WVhKaGRHOXlVSEp2Y0hNOFQzQjBhVzl1TENCSmMwMTFiSFJwTENCSGNtOTFjRDVjYmlrZ1BUNGdlMXh1SUNCamIyNXpkQ0I3SUdsdWJtVnlVSEp2Y0hNZ2ZTQTlJSEJ5YjNCek8xeHVJQ0J5WlhSMWNtNGdLRnh1SUNBZ0lEeHpjR0Z1WEc0Z0lDQWdJQ0I3TGk0dWFXNXVaWEpRY205d2MzMWNiaUFnSUNBZ0lIc3VMaTVuWlhSVGRIbHNaVkJ5YjNCektIQnliM0J6TENBbmFXNWthV05oZEc5eVUyVndZWEpoZEc5eUp5d2dlMXh1SUNBZ0lDQWdJQ0FuYVc1a2FXTmhkRzl5TFhObGNHRnlZWFJ2Y2ljNklIUnlkV1VzWEc0Z0lDQWdJQ0I5S1gxY2JpQWdJQ0F2UGx4dUlDQXBPMXh1ZlR0Y2JseHVMeThnUFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVhHNHZMeUJNYjJGa2FXNW5YRzR2THlBOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMWNibHh1WTI5dWMzUWdiRzloWkdsdVowUnZkRUZ1YVcxaGRHbHZibk1nUFNCclpYbG1jbUZ0WlhOZ1hHNGdJREFsTENBNE1DVXNJREV3TUNVZ2V5QnZjR0ZqYVhSNU9pQXdPeUI5WEc0Z0lEUXdKU0I3SUc5d1lXTnBkSGs2SURFN0lIMWNibUE3WEc1Y2JtVjRjRzl5ZENCamIyNXpkQ0JzYjJGa2FXNW5TVzVrYVdOaGRHOXlRMU5USUQwZ1BGeHVJQ0JQY0hScGIyNHNYRzRnSUVselRYVnNkR2tnWlhoMFpXNWtjeUJpYjI5c1pXRnVMRnh1SUNCSGNtOTFjQ0JsZUhSbGJtUnpJRWR5YjNWd1FtRnpaVHhQY0hScGIyNCtYRzQrS0Z4dUlDQjdYRzRnSUNBZ2FYTkdiMk4xYzJWa0xGeHVJQ0FnSUhOcGVtVXNYRzRnSUNBZ2RHaGxiV1U2SUh0Y2JpQWdJQ0FnSUdOdmJHOXljeXhjYmlBZ0lDQWdJSE53WVdOcGJtYzZJSHNnWW1GelpWVnVhWFFnZlN4Y2JpQWdJQ0I5TEZ4dUlDQjlPaUJNYjJGa2FXNW5TVzVrYVdOaGRHOXlVSEp2Y0hNOFQzQjBhVzl1TENCSmMwMTFiSFJwTENCSGNtOTFjRDRzWEc0Z0lIVnVjM1I1YkdWa09pQmliMjlzWldGdVhHNHBPaUJEVTFOUFltcGxZM1JYYVhSb1RHRmlaV3dnUFQ0Z0tIdGNiaUFnYkdGaVpXdzZJQ2RzYjJGa2FXNW5TVzVrYVdOaGRHOXlKeXhjYmlBZ1pHbHpjR3hoZVRvZ0oyWnNaWGduTEZ4dUlDQjBjbUZ1YzJsMGFXOXVPaUFuWTI5c2IzSWdNVFV3YlhNbkxGeHVJQ0JoYkdsbmJsTmxiR1k2SUNkalpXNTBaWEluTEZ4dUlDQm1iMjUwVTJsNlpUb2djMmw2WlN4Y2JpQWdiR2x1WlVobGFXZG9kRG9nTVN4Y2JpQWdiV0Z5WjJsdVVtbG5hSFE2SUhOcGVtVXNYRzRnSUhSbGVIUkJiR2xuYmpvZ0oyTmxiblJsY2ljc1hHNGdJSFpsY25ScFkyRnNRV3hwWjI0NklDZHRhV1JrYkdVbkxGeHVJQ0F1TGk0b2RXNXpkSGxzWldSY2JpQWdJQ0EvSUh0OVhHNGdJQ0FnT2lCN1hHNGdJQ0FnSUNBZ0lHTnZiRzl5T2lCcGMwWnZZM1Z6WldRZ1B5QmpiMnh2Y25NdWJtVjFkSEpoYkRZd0lEb2dZMjlzYjNKekxtNWxkWFJ5WVd3eU1DeGNiaUFnSUNBZ0lDQWdjR0ZrWkdsdVp6b2dZbUZ6WlZWdWFYUWdLaUF5TEZ4dUlDQWdJQ0FnZlNrc1hHNTlLVHRjYmx4dWFXNTBaWEptWVdObElFeHZZV1JwYm1kRWIzUlFjbTl3Y3lCN1hHNGdJR1JsYkdGNU9pQnVkVzFpWlhJN1hHNGdJRzltWm5ObGREb2dZbTl2YkdWaGJqdGNibjFjYm1OdmJuTjBJRXh2WVdScGJtZEViM1FnUFNBb2V5QmtaV3hoZVN3Z2IyWm1jMlYwSUgwNklFeHZZV1JwYm1kRWIzUlFjbTl3Y3lrZ1BUNGdLRnh1SUNBOGMzQmhibHh1SUNBZ0lHTnpjejE3ZTF4dUlDQWdJQ0FnWVc1cGJXRjBhVzl1T2lCZ0pIdHNiMkZrYVc1blJHOTBRVzVwYldGMGFXOXVjMzBnTVhNZ1pXRnpaUzFwYmkxdmRYUWdKSHRrWld4aGVYMXRjeUJwYm1acGJtbDBaVHRnTEZ4dUlDQWdJQ0FnWW1GamEyZHliM1Z1WkVOdmJHOXlPaUFuWTNWeWNtVnVkRU52Ykc5eUp5eGNiaUFnSUNBZ0lHSnZjbVJsY2xKaFpHbDFjem9nSnpGbGJTY3NYRzRnSUNBZ0lDQmthWE53YkdGNU9pQW5hVzVzYVc1bExXSnNiMk5ySnl4Y2JpQWdJQ0FnSUcxaGNtZHBia3hsWm5RNklHOW1abk5sZENBL0lDY3haVzBuSURvZ2RXNWtaV1pwYm1Wa0xGeHVJQ0FnSUNBZ2FHVnBaMmgwT2lBbk1XVnRKeXhjYmlBZ0lDQWdJSFpsY25ScFkyRnNRV3hwWjI0NklDZDBiM0FuTEZ4dUlDQWdJQ0FnZDJsa2RHZzZJQ2N4WlcwbkxGeHVJQ0FnSUgxOVhHNGdJQzgrWEc0cE8xeHVYRzVsZUhCdmNuUWdhVzUwWlhKbVlXTmxJRXh2WVdScGJtZEpibVJwWTJGMGIzSlFjbTl3Y3p4Y2JpQWdUM0IwYVc5dUlEMGdkVzVyYm05M2JpeGNiaUFnU1hOTmRXeDBhU0JsZUhSbGJtUnpJR0p2YjJ4bFlXNGdQU0JpYjI5c1pXRnVMRnh1SUNCSGNtOTFjQ0JsZUhSbGJtUnpJRWR5YjNWd1FtRnpaVHhQY0hScGIyNCtJRDBnUjNKdmRYQkNZWE5sUEU5d2RHbHZiajVjYmo0Z1pYaDBaVzVrY3lCRGIyMXRiMjVRY205d2MwRnVaRU5zWVhOelRtRnRaVHhQY0hScGIyNHNJRWx6VFhWc2RHa3NJRWR5YjNWd1BpQjdYRzRnSUM4cUtpQlFjbTl3Y3lCMGFHRjBJSGRwYkd3Z1ltVWdjR0Z6YzJWa0lHOXVJSFJ2SUhSb1pTQmphR2xzWkhKbGJpNGdLaTljYmlBZ2FXNXVaWEpRY205d2N6b2dTbE5ZTGtsdWRISnBibk5wWTBWc1pXMWxiblJ6V3lka2FYWW5YVHRjYmlBZ0x5b3FJRlJvWlNCbWIyTjFjMlZrSUhOMFlYUmxJRzltSUhSb1pTQnpaV3hsWTNRdUlDb3ZYRzRnSUdselJtOWpkWE5sWkRvZ1ltOXZiR1ZoYmp0Y2JpQWdhWE5FYVhOaFlteGxaRG9nWW05dmJHVmhianRjYmlBZ0x5b3FJRk5sZENCemFYcGxJRzltSUhSb1pTQmpiMjUwWVdsdVpYSXVJQ292WEc0Z0lITnBlbVU2SUc1MWJXSmxjanRjYm4xY2JtVjRjRzl5ZENCamIyNXpkQ0JNYjJGa2FXNW5TVzVrYVdOaGRHOXlJRDBnUEZ4dUlDQlBjSFJwYjI0c1hHNGdJRWx6VFhWc2RHa2daWGgwWlc1a2N5QmliMjlzWldGdUxGeHVJQ0JIY205MWNDQmxlSFJsYm1SeklFZHliM1Z3UW1GelpUeFBjSFJwYjI0K1hHNCtLSHRjYmlBZ2FXNXVaWEpRY205d2N5eGNiaUFnYVhOU2RHd3NYRzRnSUhOcGVtVWdQU0EwTEZ4dUlDQXVMaTV5WlhOMFVISnZjSE5jYm4wNklFeHZZV1JwYm1kSmJtUnBZMkYwYjNKUWNtOXdjenhQY0hScGIyNHNJRWx6VFhWc2RHa3NJRWR5YjNWd1Bpa2dQVDRnZTF4dUlDQnlaWFIxY200Z0tGeHVJQ0FnSUR4a2FYWmNiaUFnSUNBZ0lIc3VMaTVuWlhSVGRIbHNaVkJ5YjNCektGeHVJQ0FnSUNBZ0lDQjdJQzR1TG5KbGMzUlFjbTl3Y3l3Z2FXNXVaWEpRY205d2N5d2dhWE5TZEd3c0lITnBlbVVnZlN4Y2JpQWdJQ0FnSUNBZ0oyeHZZV1JwYm1kSmJtUnBZMkYwYjNJbkxGeHVJQ0FnSUNBZ0lDQjdYRzRnSUNBZ0lDQWdJQ0FnYVc1a2FXTmhkRzl5T2lCMGNuVmxMRnh1SUNBZ0lDQWdJQ0FnSUNkc2IyRmthVzVuTFdsdVpHbGpZWFJ2Y2ljNklIUnlkV1VzWEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNsOVhHNGdJQ0FnSUNCN0xpNHVhVzV1WlhKUWNtOXdjMzFjYmlBZ0lDQStYRzRnSUNBZ0lDQThURzloWkdsdVowUnZkQ0JrWld4aGVUMTdNSDBnYjJabWMyVjBQWHRwYzFKMGJIMGdMejVjYmlBZ0lDQWdJRHhNYjJGa2FXNW5SRzkwSUdSbGJHRjVQWHN4TmpCOUlHOW1abk5sZENBdlBseHVJQ0FnSUNBZ1BFeHZZV1JwYm1kRWIzUWdaR1ZzWVhrOWV6TXlNSDBnYjJabWMyVjBQWHNoYVhOU2RHeDlJQzgrWEc0Z0lDQWdQQzlrYVhZK1hHNGdJQ2s3WEc1OU8xeHVJbDE5ICovXCIsXG4gIHRvU3RyaW5nOiBfRU1PVElPTl9TVFJJTkdJRklFRF9DU1NfRVJST1JfX1xufTtcbnZhciBTdmcgPSBmdW5jdGlvbiBTdmcoX3JlZikge1xuICB2YXIgc2l6ZSA9IF9yZWYuc2l6ZSxcbiAgICBwcm9wcyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfcmVmLCBfZXhjbHVkZWQkMik7XG4gIHJldHVybiBqc3goXCJzdmdcIiwgX2V4dGVuZHMoe1xuICAgIGhlaWdodDogc2l6ZSxcbiAgICB3aWR0aDogc2l6ZSxcbiAgICB2aWV3Qm94OiBcIjAgMCAyMCAyMFwiLFxuICAgIFwiYXJpYS1oaWRkZW5cIjogXCJ0cnVlXCIsXG4gICAgZm9jdXNhYmxlOiBcImZhbHNlXCIsXG4gICAgY3NzOiBfcmVmMlxuICB9LCBwcm9wcykpO1xufTtcbnZhciBDcm9zc0ljb24gPSBmdW5jdGlvbiBDcm9zc0ljb24ocHJvcHMpIHtcbiAgcmV0dXJuIGpzeChTdmcsIF9leHRlbmRzKHtcbiAgICBzaXplOiAyMFxuICB9LCBwcm9wcyksIGpzeChcInBhdGhcIiwge1xuICAgIGQ6IFwiTTE0LjM0OCAxNC44NDljLTAuNDY5IDAuNDY5LTEuMjI5IDAuNDY5LTEuNjk3IDBsLTIuNjUxLTMuMDMwLTIuNjUxIDMuMDI5Yy0wLjQ2OSAwLjQ2OS0xLjIyOSAwLjQ2OS0xLjY5NyAwLTAuNDY5LTAuNDY5LTAuNDY5LTEuMjI5IDAtMS42OTdsMi43NTgtMy4xNS0yLjc1OS0zLjE1MmMtMC40NjktMC40NjktMC40NjktMS4yMjggMC0xLjY5N3MxLjIyOC0wLjQ2OSAxLjY5NyAwbDIuNjUyIDMuMDMxIDIuNjUxLTMuMDMxYzAuNDY5LTAuNDY5IDEuMjI4LTAuNDY5IDEuNjk3IDBzMC40NjkgMS4yMjkgMCAxLjY5N2wtMi43NTggMy4xNTIgMi43NTggMy4xNWMwLjQ2OSAwLjQ2OSAwLjQ2OSAxLjIyOSAwIDEuNjk4elwiXG4gIH0pKTtcbn07XG52YXIgRG93bkNoZXZyb24gPSBmdW5jdGlvbiBEb3duQ2hldnJvbihwcm9wcykge1xuICByZXR1cm4ganN4KFN2ZywgX2V4dGVuZHMoe1xuICAgIHNpemU6IDIwXG4gIH0sIHByb3BzKSwganN4KFwicGF0aFwiLCB7XG4gICAgZDogXCJNNC41MTYgNy41NDhjMC40MzYtMC40NDYgMS4wNDMtMC40ODEgMS41NzYgMGwzLjkwOCAzLjc0NyAzLjkwOC0zLjc0N2MwLjUzMy0wLjQ4MSAxLjE0MS0wLjQ0NiAxLjU3NCAwIDAuNDM2IDAuNDQ1IDAuNDA4IDEuMTk3IDAgMS42MTUtMC40MDYgMC40MTgtNC42OTUgNC41MDItNC42OTUgNC41MDItMC4yMTcgMC4yMjMtMC41MDIgMC4zMzUtMC43ODcgMC4zMzVzLTAuNTctMC4xMTItMC43ODktMC4zMzVjMCAwLTQuMjg3LTQuMDg0LTQuNjk1LTQuNTAycy0wLjQzNi0xLjE3IDAtMS42MTV6XCJcbiAgfSkpO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEcm9wZG93biAmIENsZWFyIEJ1dHRvbnNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG52YXIgYmFzZUNTUyA9IGZ1bmN0aW9uIGJhc2VDU1MoX3JlZjMsIHVuc3R5bGVkKSB7XG4gIHZhciBpc0ZvY3VzZWQgPSBfcmVmMy5pc0ZvY3VzZWQsXG4gICAgX3JlZjMkdGhlbWUgPSBfcmVmMy50aGVtZSxcbiAgICBiYXNlVW5pdCA9IF9yZWYzJHRoZW1lLnNwYWNpbmcuYmFzZVVuaXQsXG4gICAgY29sb3JzID0gX3JlZjMkdGhlbWUuY29sb3JzO1xuICByZXR1cm4gX29iamVjdFNwcmVhZCh7XG4gICAgbGFiZWw6ICdpbmRpY2F0b3JDb250YWluZXInLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICB0cmFuc2l0aW9uOiAnY29sb3IgMTUwbXMnXG4gIH0sIHVuc3R5bGVkID8ge30gOiB7XG4gICAgY29sb3I6IGlzRm9jdXNlZCA/IGNvbG9ycy5uZXV0cmFsNjAgOiBjb2xvcnMubmV1dHJhbDIwLFxuICAgIHBhZGRpbmc6IGJhc2VVbml0ICogMixcbiAgICAnOmhvdmVyJzoge1xuICAgICAgY29sb3I6IGlzRm9jdXNlZCA/IGNvbG9ycy5uZXV0cmFsODAgOiBjb2xvcnMubmV1dHJhbDQwXG4gICAgfVxuICB9KTtcbn07XG52YXIgZHJvcGRvd25JbmRpY2F0b3JDU1MgPSBiYXNlQ1NTO1xudmFyIERyb3Bkb3duSW5kaWNhdG9yID0gZnVuY3Rpb24gRHJvcGRvd25JbmRpY2F0b3IocHJvcHMpIHtcbiAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgaW5uZXJQcm9wcyA9IHByb3BzLmlubmVyUHJvcHM7XG4gIHJldHVybiBqc3goXCJkaXZcIiwgX2V4dGVuZHMoe30sIGdldFN0eWxlUHJvcHMocHJvcHMsICdkcm9wZG93bkluZGljYXRvcicsIHtcbiAgICBpbmRpY2F0b3I6IHRydWUsXG4gICAgJ2Ryb3Bkb3duLWluZGljYXRvcic6IHRydWVcbiAgfSksIGlubmVyUHJvcHMpLCBjaGlsZHJlbiB8fCBqc3goRG93bkNoZXZyb24sIG51bGwpKTtcbn07XG52YXIgY2xlYXJJbmRpY2F0b3JDU1MgPSBiYXNlQ1NTO1xudmFyIENsZWFySW5kaWNhdG9yID0gZnVuY3Rpb24gQ2xlYXJJbmRpY2F0b3IocHJvcHMpIHtcbiAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgaW5uZXJQcm9wcyA9IHByb3BzLmlubmVyUHJvcHM7XG4gIHJldHVybiBqc3goXCJkaXZcIiwgX2V4dGVuZHMoe30sIGdldFN0eWxlUHJvcHMocHJvcHMsICdjbGVhckluZGljYXRvcicsIHtcbiAgICBpbmRpY2F0b3I6IHRydWUsXG4gICAgJ2NsZWFyLWluZGljYXRvcic6IHRydWVcbiAgfSksIGlubmVyUHJvcHMpLCBjaGlsZHJlbiB8fCBqc3goQ3Jvc3NJY29uLCBudWxsKSk7XG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNlcGFyYXRvclxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbnZhciBpbmRpY2F0b3JTZXBhcmF0b3JDU1MgPSBmdW5jdGlvbiBpbmRpY2F0b3JTZXBhcmF0b3JDU1MoX3JlZjQsIHVuc3R5bGVkKSB7XG4gIHZhciBpc0Rpc2FibGVkID0gX3JlZjQuaXNEaXNhYmxlZCxcbiAgICBfcmVmNCR0aGVtZSA9IF9yZWY0LnRoZW1lLFxuICAgIGJhc2VVbml0ID0gX3JlZjQkdGhlbWUuc3BhY2luZy5iYXNlVW5pdCxcbiAgICBjb2xvcnMgPSBfcmVmNCR0aGVtZS5jb2xvcnM7XG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKHtcbiAgICBsYWJlbDogJ2luZGljYXRvclNlcGFyYXRvcicsXG4gICAgYWxpZ25TZWxmOiAnc3RyZXRjaCcsXG4gICAgd2lkdGg6IDFcbiAgfSwgdW5zdHlsZWQgPyB7fSA6IHtcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IGlzRGlzYWJsZWQgPyBjb2xvcnMubmV1dHJhbDEwIDogY29sb3JzLm5ldXRyYWwyMCxcbiAgICBtYXJnaW5Cb3R0b206IGJhc2VVbml0ICogMixcbiAgICBtYXJnaW5Ub3A6IGJhc2VVbml0ICogMlxuICB9KTtcbn07XG52YXIgSW5kaWNhdG9yU2VwYXJhdG9yID0gZnVuY3Rpb24gSW5kaWNhdG9yU2VwYXJhdG9yKHByb3BzKSB7XG4gIHZhciBpbm5lclByb3BzID0gcHJvcHMuaW5uZXJQcm9wcztcbiAgcmV0dXJuIGpzeChcInNwYW5cIiwgX2V4dGVuZHMoe30sIGlubmVyUHJvcHMsIGdldFN0eWxlUHJvcHMocHJvcHMsICdpbmRpY2F0b3JTZXBhcmF0b3InLCB7XG4gICAgJ2luZGljYXRvci1zZXBhcmF0b3InOiB0cnVlXG4gIH0pKSk7XG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIExvYWRpbmdcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG52YXIgbG9hZGluZ0RvdEFuaW1hdGlvbnMgPSBrZXlmcmFtZXMoX3RlbXBsYXRlT2JqZWN0IHx8IChfdGVtcGxhdGVPYmplY3QgPSBfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsKFtcIlxcbiAgMCUsIDgwJSwgMTAwJSB7IG9wYWNpdHk6IDA7IH1cXG4gIDQwJSB7IG9wYWNpdHk6IDE7IH1cXG5cIl0pKSk7XG52YXIgbG9hZGluZ0luZGljYXRvckNTUyA9IGZ1bmN0aW9uIGxvYWRpbmdJbmRpY2F0b3JDU1MoX3JlZjUsIHVuc3R5bGVkKSB7XG4gIHZhciBpc0ZvY3VzZWQgPSBfcmVmNS5pc0ZvY3VzZWQsXG4gICAgc2l6ZSA9IF9yZWY1LnNpemUsXG4gICAgX3JlZjUkdGhlbWUgPSBfcmVmNS50aGVtZSxcbiAgICBjb2xvcnMgPSBfcmVmNSR0aGVtZS5jb2xvcnMsXG4gICAgYmFzZVVuaXQgPSBfcmVmNSR0aGVtZS5zcGFjaW5nLmJhc2VVbml0O1xuICByZXR1cm4gX29iamVjdFNwcmVhZCh7XG4gICAgbGFiZWw6ICdsb2FkaW5nSW5kaWNhdG9yJyxcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgdHJhbnNpdGlvbjogJ2NvbG9yIDE1MG1zJyxcbiAgICBhbGlnblNlbGY6ICdjZW50ZXInLFxuICAgIGZvbnRTaXplOiBzaXplLFxuICAgIGxpbmVIZWlnaHQ6IDEsXG4gICAgbWFyZ2luUmlnaHQ6IHNpemUsXG4gICAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgICB2ZXJ0aWNhbEFsaWduOiAnbWlkZGxlJ1xuICB9LCB1bnN0eWxlZCA/IHt9IDoge1xuICAgIGNvbG9yOiBpc0ZvY3VzZWQgPyBjb2xvcnMubmV1dHJhbDYwIDogY29sb3JzLm5ldXRyYWwyMCxcbiAgICBwYWRkaW5nOiBiYXNlVW5pdCAqIDJcbiAgfSk7XG59O1xudmFyIExvYWRpbmdEb3QgPSBmdW5jdGlvbiBMb2FkaW5nRG90KF9yZWY2KSB7XG4gIHZhciBkZWxheSA9IF9yZWY2LmRlbGF5LFxuICAgIG9mZnNldCA9IF9yZWY2Lm9mZnNldDtcbiAgcmV0dXJuIGpzeChcInNwYW5cIiwge1xuICAgIGNzczogLyojX19QVVJFX18qL2NzcyQyKHtcbiAgICAgIGFuaW1hdGlvbjogXCJcIi5jb25jYXQobG9hZGluZ0RvdEFuaW1hdGlvbnMsIFwiIDFzIGVhc2UtaW4tb3V0IFwiKS5jb25jYXQoZGVsYXksIFwibXMgaW5maW5pdGU7XCIpLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiAnY3VycmVudENvbG9yJyxcbiAgICAgIGJvcmRlclJhZGl1czogJzFlbScsXG4gICAgICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJyxcbiAgICAgIG1hcmdpbkxlZnQ6IG9mZnNldCA/ICcxZW0nIDogdW5kZWZpbmVkLFxuICAgICAgaGVpZ2h0OiAnMWVtJyxcbiAgICAgIHZlcnRpY2FsQWxpZ246ICd0b3AnLFxuICAgICAgd2lkdGg6ICcxZW0nXG4gICAgfSwgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8gXCJcIiA6IFwiO2xhYmVsOkxvYWRpbmdEb3Q7XCIsIHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIiA/IFwiXCIgOiBcIi8qIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltbHVaR2xqWVhSdmNuTXVkSE40SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVcxUlNTSXNJbVpwYkdVaU9pSnBibVJwWTJGMGIzSnpMblJ6ZUNJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYklpOHFLaUJBYW5ONElHcHplQ0FxTDF4dWFXMXdiM0owSUhzZ1VtVmhZM1JPYjJSbElIMGdabkp2YlNBbmNtVmhZM1FuTzF4dWFXMXdiM0owSUhzZ2FuTjRMQ0JyWlhsbWNtRnRaWE1nZlNCbWNtOXRJQ2RBWlcxdmRHbHZiaTl5WldGamRDYzdYRzVjYm1sdGNHOXlkQ0I3WEc0Z0lFTnZiVzF2YmxCeWIzQnpRVzVrUTJ4aGMzTk9ZVzFsTEZ4dUlDQkRVMU5QWW1wbFkzUlhhWFJvVEdGaVpXd3NYRzRnSUVkeWIzVndRbUZ6WlN4Y2JuMGdabkp2YlNBbkxpNHZkSGx3WlhNbk8xeHVhVzF3YjNKMElIc2daMlYwVTNSNWJHVlFjbTl3Y3lCOUlHWnliMjBnSnk0dUwzVjBhV3h6Snp0Y2JseHVMeThnUFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVhHNHZMeUJFY205d1pHOTNiaUFtSUVOc1pXRnlJRWxqYjI1elhHNHZMeUE5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQxY2JseHVZMjl1YzNRZ1UzWm5JRDBnS0h0Y2JpQWdjMmw2WlN4Y2JpQWdMaTR1Y0hKdmNITmNibjA2SUVwVFdDNUpiblJ5YVc1emFXTkZiR1Z0Wlc1MGMxc25jM1puSjEwZ0ppQjdJSE5wZW1VNklHNTFiV0psY2lCOUtTQTlQaUFvWEc0Z0lEeHpkbWRjYmlBZ0lDQm9aV2xuYUhROWUzTnBlbVY5WEc0Z0lDQWdkMmxrZEdnOWUzTnBlbVY5WEc0Z0lDQWdkbWxsZDBKdmVEMWNJakFnTUNBeU1DQXlNRndpWEc0Z0lDQWdZWEpwWVMxb2FXUmtaVzQ5WENKMGNuVmxYQ0pjYmlBZ0lDQm1iMk4xYzJGaWJHVTlYQ0ptWVd4elpWd2lYRzRnSUNBZ1kzTnpQWHQ3WEc0Z0lDQWdJQ0JrYVhOd2JHRjVPaUFuYVc1c2FXNWxMV0pzYjJOckp5eGNiaUFnSUNBZ0lHWnBiR3c2SUNkamRYSnlaVzUwUTI5c2IzSW5MRnh1SUNBZ0lDQWdiR2x1WlVobGFXZG9kRG9nTVN4Y2JpQWdJQ0FnSUhOMGNtOXJaVG9nSjJOMWNuSmxiblJEYjJ4dmNpY3NYRzRnSUNBZ0lDQnpkSEp2YTJWWGFXUjBhRG9nTUN4Y2JpQWdJQ0I5ZlZ4dUlDQWdJSHN1TGk1d2NtOXdjMzFjYmlBZ0x6NWNiaWs3WEc1Y2JtVjRjRzl5ZENCMGVYQmxJRU55YjNOelNXTnZibEJ5YjNCeklEMGdTbE5ZTGtsdWRISnBibk5wWTBWc1pXMWxiblJ6V3lkemRtY25YU0FtSUhzZ2MybDZaVDg2SUc1MWJXSmxjaUI5TzF4dVpYaHdiM0owSUdOdmJuTjBJRU55YjNOelNXTnZiaUE5SUNod2NtOXdjem9nUTNKdmMzTkpZMjl1VUhKdmNITXBJRDArSUNoY2JpQWdQRk4yWnlCemFYcGxQWHN5TUgwZ2V5NHVMbkJ5YjNCemZUNWNiaUFnSUNBOGNHRjBhQ0JrUFZ3aVRURTBMak0wT0NBeE5DNDRORGxqTFRBdU5EWTVJREF1TkRZNUxURXVNakk1SURBdU5EWTVMVEV1TmprM0lEQnNMVEl1TmpVeExUTXVNRE13TFRJdU5qVXhJRE11TURJNVl5MHdMalEyT1NBd0xqUTJPUzB4TGpJeU9TQXdMalEyT1MweExqWTVOeUF3TFRBdU5EWTVMVEF1TkRZNUxUQXVORFk1TFRFdU1qSTVJREF0TVM0Mk9UZHNNaTQzTlRndE15NHhOUzB5TGpjMU9TMHpMakUxTW1NdE1DNDBOamt0TUM0ME5qa3RNQzQwTmprdE1TNHlNamdnTUMweExqWTVOM014TGpJeU9DMHdMalEyT1NBeExqWTVOeUF3YkRJdU5qVXlJRE11TURNeElESXVOalV4TFRNdU1ETXhZekF1TkRZNUxUQXVORFk1SURFdU1qSTRMVEF1TkRZNUlERXVOamszSURCek1DNDBOamtnTVM0eU1qa2dNQ0F4TGpZNU4yd3RNaTQzTlRnZ015NHhOVElnTWk0M05UZ2dNeTR4TldNd0xqUTJPU0F3TGpRMk9TQXdMalEyT1NBeExqSXlPU0F3SURFdU5qazRlbHdpSUM4K1hHNGdJRHd2VTNablBseHVLVHRjYm1WNGNHOXlkQ0IwZVhCbElFUnZkMjVEYUdWMmNtOXVVSEp2Y0hNZ1BTQktVMWd1U1c1MGNtbHVjMmxqUld4bGJXVnVkSE5iSjNOMlp5ZGRJQ1lnZXlCemFYcGxQem9nYm5WdFltVnlJSDA3WEc1bGVIQnZjblFnWTI5dWMzUWdSRzkzYmtOb1pYWnliMjRnUFNBb2NISnZjSE02SUVSdmQyNURhR1YyY205dVVISnZjSE1wSUQwK0lDaGNiaUFnUEZOMlp5QnphWHBsUFhzeU1IMGdleTR1TG5CeWIzQnpmVDVjYmlBZ0lDQThjR0YwYUNCa1BWd2lUVFF1TlRFMklEY3VOVFE0WXpBdU5ETTJMVEF1TkRRMklERXVNRFF6TFRBdU5EZ3hJREV1TlRjMklEQnNNeTQ1TURnZ015NDNORGNnTXk0NU1EZ3RNeTQzTkRkak1DNDFNek10TUM0ME9ERWdNUzR4TkRFdE1DNDBORFlnTVM0MU56UWdNQ0F3TGpRek5pQXdMalEwTlNBd0xqUXdPQ0F4TGpFNU55QXdJREV1TmpFMUxUQXVOREEySURBdU5ERTRMVFF1TmprMUlEUXVOVEF5TFRRdU5qazFJRFF1TlRBeUxUQXVNakUzSURBdU1qSXpMVEF1TlRBeUlEQXVNek0xTFRBdU56ZzNJREF1TXpNMWN5MHdMalUzTFRBdU1URXlMVEF1TnpnNUxUQXVNek0xWXpBZ01DMDBMakk0TnkwMExqQTROQzAwTGpZNU5TMDBMalV3TW5NdE1DNDBNell0TVM0eE55QXdMVEV1TmpFMWVsd2lJQzgrWEc0Z0lEd3ZVM1puUGx4dUtUdGNibHh1THk4Z1BUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlYRzR2THlCRWNtOXdaRzkzYmlBbUlFTnNaV0Z5SUVKMWRIUnZibk5jYmk4dklEMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVnh1WEc1bGVIQnZjblFnYVc1MFpYSm1ZV05sSUVSeWIzQmtiM2R1U1c1a2FXTmhkRzl5VUhKdmNITThYRzRnSUU5d2RHbHZiaUE5SUhWdWEyNXZkMjRzWEc0Z0lFbHpUWFZzZEdrZ1pYaDBaVzVrY3lCaWIyOXNaV0Z1SUQwZ1ltOXZiR1ZoYml4Y2JpQWdSM0p2ZFhBZ1pYaDBaVzVrY3lCSGNtOTFjRUpoYzJVOFQzQjBhVzl1UGlBOUlFZHliM1Z3UW1GelpUeFBjSFJwYjI0K1hHNCtJR1Y0ZEdWdVpITWdRMjl0Ylc5dVVISnZjSE5CYm1SRGJHRnpjMDVoYldVOFQzQjBhVzl1TENCSmMwMTFiSFJwTENCSGNtOTFjRDRnZTF4dUlDQXZLaW9nVkdobElHTm9hV3hrY21WdUlIUnZJR0psSUhKbGJtUmxjbVZrSUdsdWMybGtaU0IwYUdVZ2FXNWthV05oZEc5eUxpQXFMMXh1SUNCamFHbHNaSEpsYmo4NklGSmxZV04wVG05a1pUdGNiaUFnTHlvcUlGQnliM0J6SUhSb1lYUWdkMmxzYkNCaVpTQndZWE56WldRZ2IyNGdkRzhnZEdobElHTm9hV3hrY21WdUxpQXFMMXh1SUNCcGJtNWxjbEJ5YjNCek9pQktVMWd1U1c1MGNtbHVjMmxqUld4bGJXVnVkSE5iSjJScGRpZGRPMXh1SUNBdktpb2dWR2hsSUdadlkzVnpaV1FnYzNSaGRHVWdiMllnZEdobElITmxiR1ZqZEM0Z0tpOWNiaUFnYVhOR2IyTjFjMlZrT2lCaWIyOXNaV0Z1TzF4dUlDQnBjMFJwYzJGaWJHVmtPaUJpYjI5c1pXRnVPMXh1ZlZ4dVhHNWpiMjV6ZENCaVlYTmxRMU5USUQwZ1BGeHVJQ0JQY0hScGIyNHNYRzRnSUVselRYVnNkR2tnWlhoMFpXNWtjeUJpYjI5c1pXRnVMRnh1SUNCSGNtOTFjQ0JsZUhSbGJtUnpJRWR5YjNWd1FtRnpaVHhQY0hScGIyNCtYRzQrS0Z4dUlDQjdYRzRnSUNBZ2FYTkdiMk4xYzJWa0xGeHVJQ0FnSUhSb1pXMWxPaUI3WEc0Z0lDQWdJQ0J6Y0dGamFXNW5PaUI3SUdKaGMyVlZibWwwSUgwc1hHNGdJQ0FnSUNCamIyeHZjbk1zWEc0Z0lDQWdmU3hjYmlBZ2ZUcGNiaUFnSUNCOElFUnliM0JrYjNkdVNXNWthV05oZEc5eVVISnZjSE04VDNCMGFXOXVMQ0JKYzAxMWJIUnBMQ0JIY205MWNENWNiaUFnSUNCOElFTnNaV0Z5U1c1a2FXTmhkRzl5VUhKdmNITThUM0IwYVc5dUxDQkpjMDExYkhScExDQkhjbTkxY0Q0c1hHNGdJSFZ1YzNSNWJHVmtPaUJpYjI5c1pXRnVYRzRwT2lCRFUxTlBZbXBsWTNSWGFYUm9UR0ZpWld3Z1BUNGdLSHRjYmlBZ2JHRmlaV3c2SUNkcGJtUnBZMkYwYjNKRGIyNTBZV2x1WlhJbkxGeHVJQ0JrYVhOd2JHRjVPaUFuWm14bGVDY3NYRzRnSUhSeVlXNXphWFJwYjI0NklDZGpiMnh2Y2lBeE5UQnRjeWNzWEc0Z0lDNHVMaWgxYm5OMGVXeGxaRnh1SUNBZ0lEOGdlMzFjYmlBZ0lDQTZJSHRjYmlBZ0lDQWdJQ0FnWTI5c2IzSTZJR2x6Um05amRYTmxaQ0EvSUdOdmJHOXljeTV1WlhWMGNtRnNOakFnT2lCamIyeHZjbk11Ym1WMWRISmhiREl3TEZ4dUlDQWdJQ0FnSUNCd1lXUmthVzVuT2lCaVlYTmxWVzVwZENBcUlESXNYRzRnSUNBZ0lDQWdJQ2M2YUc5MlpYSW5PaUI3WEc0Z0lDQWdJQ0FnSUNBZ1kyOXNiM0k2SUdselJtOWpkWE5sWkNBL0lHTnZiRzl5Y3k1dVpYVjBjbUZzT0RBZ09pQmpiMnh2Y25NdWJtVjFkSEpoYkRRd0xGeHVJQ0FnSUNBZ0lDQjlMRnh1SUNBZ0lDQWdmU2tzWEc1OUtUdGNibHh1Wlhod2IzSjBJR052Ym5OMElHUnliM0JrYjNkdVNXNWthV05oZEc5eVExTlRJRDBnWW1GelpVTlRVenRjYm1WNGNHOXlkQ0JqYjI1emRDQkVjbTl3Wkc5M2JrbHVaR2xqWVhSdmNpQTlJRHhjYmlBZ1QzQjBhVzl1TEZ4dUlDQkpjMDExYkhScElHVjRkR1Z1WkhNZ1ltOXZiR1ZoYml4Y2JpQWdSM0p2ZFhBZ1pYaDBaVzVrY3lCSGNtOTFjRUpoYzJVOFQzQjBhVzl1UGx4dVBpaGNiaUFnY0hKdmNITTZJRVJ5YjNCa2IzZHVTVzVrYVdOaGRHOXlVSEp2Y0hNOFQzQjBhVzl1TENCSmMwMTFiSFJwTENCSGNtOTFjRDVjYmlrZ1BUNGdlMXh1SUNCamIyNXpkQ0I3SUdOb2FXeGtjbVZ1TENCcGJtNWxjbEJ5YjNCeklIMGdQU0J3Y205d2N6dGNiaUFnY21WMGRYSnVJQ2hjYmlBZ0lDQThaR2wyWEc0Z0lDQWdJQ0I3TGk0dVoyVjBVM1I1YkdWUWNtOXdjeWh3Y205d2N5d2dKMlJ5YjNCa2IzZHVTVzVrYVdOaGRHOXlKeXdnZTF4dUlDQWdJQ0FnSUNCcGJtUnBZMkYwYjNJNklIUnlkV1VzWEc0Z0lDQWdJQ0FnSUNka2NtOXdaRzkzYmkxcGJtUnBZMkYwYjNJbk9pQjBjblZsTEZ4dUlDQWdJQ0FnZlNsOVhHNGdJQ0FnSUNCN0xpNHVhVzV1WlhKUWNtOXdjMzFjYmlBZ0lDQStYRzRnSUNBZ0lDQjdZMmhwYkdSeVpXNGdmSHdnUEVSdmQyNURhR1YyY205dUlDOCtmVnh1SUNBZ0lEd3ZaR2wyUGx4dUlDQXBPMXh1ZlR0Y2JseHVaWGh3YjNKMElHbHVkR1Z5Wm1GalpTQkRiR1ZoY2tsdVpHbGpZWFJ2Y2xCeWIzQnpQRnh1SUNCUGNIUnBiMjRnUFNCMWJtdHViM2R1TEZ4dUlDQkpjMDExYkhScElHVjRkR1Z1WkhNZ1ltOXZiR1ZoYmlBOUlHSnZiMnhsWVc0c1hHNGdJRWR5YjNWd0lHVjRkR1Z1WkhNZ1IzSnZkWEJDWVhObFBFOXdkR2x2Ymo0Z1BTQkhjbTkxY0VKaGMyVThUM0IwYVc5dVBseHVQaUJsZUhSbGJtUnpJRU52YlcxdmJsQnliM0J6UVc1a1EyeGhjM05PWVcxbFBFOXdkR2x2Yml3Z1NYTk5kV3gwYVN3Z1IzSnZkWEErSUh0Y2JpQWdMeW9xSUZSb1pTQmphR2xzWkhKbGJpQjBieUJpWlNCeVpXNWtaWEpsWkNCcGJuTnBaR1VnZEdobElHbHVaR2xqWVhSdmNpNGdLaTljYmlBZ1kyaHBiR1J5Wlc0L09pQlNaV0ZqZEU1dlpHVTdYRzRnSUM4cUtpQlFjbTl3Y3lCMGFHRjBJSGRwYkd3Z1ltVWdjR0Z6YzJWa0lHOXVJSFJ2SUhSb1pTQmphR2xzWkhKbGJpNGdLaTljYmlBZ2FXNXVaWEpRY205d2N6b2dTbE5ZTGtsdWRISnBibk5wWTBWc1pXMWxiblJ6V3lka2FYWW5YVHRjYmlBZ0x5b3FJRlJvWlNCbWIyTjFjMlZrSUhOMFlYUmxJRzltSUhSb1pTQnpaV3hsWTNRdUlDb3ZYRzRnSUdselJtOWpkWE5sWkRvZ1ltOXZiR1ZoYmp0Y2JuMWNibHh1Wlhod2IzSjBJR052Ym5OMElHTnNaV0Z5U1c1a2FXTmhkRzl5UTFOVElEMGdZbUZ6WlVOVFV6dGNibVY0Y0c5eWRDQmpiMjV6ZENCRGJHVmhja2x1WkdsallYUnZjaUE5SUR4Y2JpQWdUM0IwYVc5dUxGeHVJQ0JKYzAxMWJIUnBJR1Y0ZEdWdVpITWdZbTl2YkdWaGJpeGNiaUFnUjNKdmRYQWdaWGgwWlc1a2N5QkhjbTkxY0VKaGMyVThUM0IwYVc5dVBseHVQaWhjYmlBZ2NISnZjSE02SUVOc1pXRnlTVzVrYVdOaGRHOXlVSEp2Y0hNOFQzQjBhVzl1TENCSmMwMTFiSFJwTENCSGNtOTFjRDVjYmlrZ1BUNGdlMXh1SUNCamIyNXpkQ0I3SUdOb2FXeGtjbVZ1TENCcGJtNWxjbEJ5YjNCeklIMGdQU0J3Y205d2N6dGNiaUFnY21WMGRYSnVJQ2hjYmlBZ0lDQThaR2wyWEc0Z0lDQWdJQ0I3TGk0dVoyVjBVM1I1YkdWUWNtOXdjeWh3Y205d2N5d2dKMk5zWldGeVNXNWthV05oZEc5eUp5d2dlMXh1SUNBZ0lDQWdJQ0JwYm1ScFkyRjBiM0k2SUhSeWRXVXNYRzRnSUNBZ0lDQWdJQ2RqYkdWaGNpMXBibVJwWTJGMGIzSW5PaUIwY25WbExGeHVJQ0FnSUNBZ2ZTbDlYRzRnSUNBZ0lDQjdMaTR1YVc1dVpYSlFjbTl3YzMxY2JpQWdJQ0ErWEc0Z0lDQWdJQ0I3WTJocGJHUnlaVzRnZkh3Z1BFTnliM056U1dOdmJpQXZQbjFjYmlBZ0lDQThMMlJwZGo1Y2JpQWdLVHRjYm4wN1hHNWNiaTh2SUQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBWeHVMeThnVTJWd1lYSmhkRzl5WEc0dkx5QTlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDFjYmx4dVpYaHdiM0owSUdsdWRHVnlabUZqWlNCSmJtUnBZMkYwYjNKVFpYQmhjbUYwYjNKUWNtOXdjenhjYmlBZ1QzQjBhVzl1SUQwZ2RXNXJibTkzYml4Y2JpQWdTWE5OZFd4MGFTQmxlSFJsYm1SeklHSnZiMnhsWVc0Z1BTQmliMjlzWldGdUxGeHVJQ0JIY205MWNDQmxlSFJsYm1SeklFZHliM1Z3UW1GelpUeFBjSFJwYjI0K0lEMGdSM0p2ZFhCQ1lYTmxQRTl3ZEdsdmJqNWNiajRnWlhoMFpXNWtjeUJEYjIxdGIyNVFjbTl3YzBGdVpFTnNZWE56VG1GdFpUeFBjSFJwYjI0c0lFbHpUWFZzZEdrc0lFZHliM1Z3UGlCN1hHNGdJR2x6UkdsellXSnNaV1E2SUdKdmIyeGxZVzQ3WEc0Z0lHbHpSbTlqZFhObFpEb2dZbTl2YkdWaGJqdGNiaUFnYVc1dVpYSlFjbTl3Y3o4NklFcFRXQzVKYm5SeWFXNXphV05GYkdWdFpXNTBjMXNuYzNCaGJpZGRPMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1kyOXVjM1FnYVc1a2FXTmhkRzl5VTJWd1lYSmhkRzl5UTFOVElEMGdQRnh1SUNCUGNIUnBiMjRzWEc0Z0lFbHpUWFZzZEdrZ1pYaDBaVzVrY3lCaWIyOXNaV0Z1TEZ4dUlDQkhjbTkxY0NCbGVIUmxibVJ6SUVkeWIzVndRbUZ6WlR4UGNIUnBiMjQrWEc0K0tGeHVJQ0I3WEc0Z0lDQWdhWE5FYVhOaFlteGxaQ3hjYmlBZ0lDQjBhR1Z0WlRvZ2UxeHVJQ0FnSUNBZ2MzQmhZMmx1WnpvZ2V5QmlZWE5sVlc1cGRDQjlMRnh1SUNBZ0lDQWdZMjlzYjNKekxGeHVJQ0FnSUgwc1hHNGdJSDA2SUVsdVpHbGpZWFJ2Y2xObGNHRnlZWFJ2Y2xCeWIzQnpQRTl3ZEdsdmJpd2dTWE5OZFd4MGFTd2dSM0p2ZFhBK0xGeHVJQ0IxYm5OMGVXeGxaRG9nWW05dmJHVmhibHh1S1RvZ1ExTlRUMkpxWldOMFYybDBhRXhoWW1Wc0lEMCtJQ2g3WEc0Z0lHeGhZbVZzT2lBbmFXNWthV05oZEc5eVUyVndZWEpoZEc5eUp5eGNiaUFnWVd4cFoyNVRaV3htT2lBbmMzUnlaWFJqYUNjc1hHNGdJSGRwWkhSb09pQXhMRnh1SUNBdUxpNG9kVzV6ZEhsc1pXUmNiaUFnSUNBL0lIdDlYRzRnSUNBZ09pQjdYRzRnSUNBZ0lDQWdJR0poWTJ0bmNtOTFibVJEYjJ4dmNqb2dhWE5FYVhOaFlteGxaQ0EvSUdOdmJHOXljeTV1WlhWMGNtRnNNVEFnT2lCamIyeHZjbk11Ym1WMWRISmhiREl3TEZ4dUlDQWdJQ0FnSUNCdFlYSm5hVzVDYjNSMGIyMDZJR0poYzJWVmJtbDBJQ29nTWl4Y2JpQWdJQ0FnSUNBZ2JXRnlaMmx1Vkc5d09pQmlZWE5sVlc1cGRDQXFJRElzWEc0Z0lDQWdJQ0I5S1N4Y2JuMHBPMXh1WEc1bGVIQnZjblFnWTI5dWMzUWdTVzVrYVdOaGRHOXlVMlZ3WVhKaGRHOXlJRDBnUEZ4dUlDQlBjSFJwYjI0c1hHNGdJRWx6VFhWc2RHa2daWGgwWlc1a2N5QmliMjlzWldGdUxGeHVJQ0JIY205MWNDQmxlSFJsYm1SeklFZHliM1Z3UW1GelpUeFBjSFJwYjI0K1hHNCtLRnh1SUNCd2NtOXdjem9nU1c1a2FXTmhkRzl5VTJWd1lYSmhkRzl5VUhKdmNITThUM0IwYVc5dUxDQkpjMDExYkhScExDQkhjbTkxY0Q1Y2Jpa2dQVDRnZTF4dUlDQmpiMjV6ZENCN0lHbHVibVZ5VUhKdmNITWdmU0E5SUhCeWIzQnpPMXh1SUNCeVpYUjFjbTRnS0Z4dUlDQWdJRHh6Y0dGdVhHNGdJQ0FnSUNCN0xpNHVhVzV1WlhKUWNtOXdjMzFjYmlBZ0lDQWdJSHN1TGk1blpYUlRkSGxzWlZCeWIzQnpLSEJ5YjNCekxDQW5hVzVrYVdOaGRHOXlVMlZ3WVhKaGRHOXlKeXdnZTF4dUlDQWdJQ0FnSUNBbmFXNWthV05oZEc5eUxYTmxjR0Z5WVhSdmNpYzZJSFJ5ZFdVc1hHNGdJQ0FnSUNCOUtYMWNiaUFnSUNBdlBseHVJQ0FwTzF4dWZUdGNibHh1THk4Z1BUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlYRzR2THlCTWIyRmthVzVuWEc0dkx5QTlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDFjYmx4dVkyOXVjM1FnYkc5aFpHbHVaMFJ2ZEVGdWFXMWhkR2x2Ym5NZ1BTQnJaWGxtY21GdFpYTmdYRzRnSURBbExDQTRNQ1VzSURFd01DVWdleUJ2Y0dGamFYUjVPaUF3T3lCOVhHNGdJRFF3SlNCN0lHOXdZV05wZEhrNklERTdJSDFjYm1BN1hHNWNibVY0Y0c5eWRDQmpiMjV6ZENCc2IyRmthVzVuU1c1a2FXTmhkRzl5UTFOVElEMGdQRnh1SUNCUGNIUnBiMjRzWEc0Z0lFbHpUWFZzZEdrZ1pYaDBaVzVrY3lCaWIyOXNaV0Z1TEZ4dUlDQkhjbTkxY0NCbGVIUmxibVJ6SUVkeWIzVndRbUZ6WlR4UGNIUnBiMjQrWEc0K0tGeHVJQ0I3WEc0Z0lDQWdhWE5HYjJOMWMyVmtMRnh1SUNBZ0lITnBlbVVzWEc0Z0lDQWdkR2hsYldVNklIdGNiaUFnSUNBZ0lHTnZiRzl5Y3l4Y2JpQWdJQ0FnSUhOd1lXTnBibWM2SUhzZ1ltRnpaVlZ1YVhRZ2ZTeGNiaUFnSUNCOUxGeHVJQ0I5T2lCTWIyRmthVzVuU1c1a2FXTmhkRzl5VUhKdmNITThUM0IwYVc5dUxDQkpjMDExYkhScExDQkhjbTkxY0Q0c1hHNGdJSFZ1YzNSNWJHVmtPaUJpYjI5c1pXRnVYRzRwT2lCRFUxTlBZbXBsWTNSWGFYUm9UR0ZpWld3Z1BUNGdLSHRjYmlBZ2JHRmlaV3c2SUNkc2IyRmthVzVuU1c1a2FXTmhkRzl5Snl4Y2JpQWdaR2x6Y0d4aGVUb2dKMlpzWlhnbkxGeHVJQ0IwY21GdWMybDBhVzl1T2lBblkyOXNiM0lnTVRVd2JYTW5MRnh1SUNCaGJHbG5ibE5sYkdZNklDZGpaVzUwWlhJbkxGeHVJQ0JtYjI1MFUybDZaVG9nYzJsNlpTeGNiaUFnYkdsdVpVaGxhV2RvZERvZ01TeGNiaUFnYldGeVoybHVVbWxuYUhRNklITnBlbVVzWEc0Z0lIUmxlSFJCYkdsbmJqb2dKMk5sYm5SbGNpY3NYRzRnSUhabGNuUnBZMkZzUVd4cFoyNDZJQ2R0YVdSa2JHVW5MRnh1SUNBdUxpNG9kVzV6ZEhsc1pXUmNiaUFnSUNBL0lIdDlYRzRnSUNBZ09pQjdYRzRnSUNBZ0lDQWdJR052Ykc5eU9pQnBjMFp2WTNWelpXUWdQeUJqYjJ4dmNuTXVibVYxZEhKaGJEWXdJRG9nWTI5c2IzSnpMbTVsZFhSeVlXd3lNQ3hjYmlBZ0lDQWdJQ0FnY0dGa1pHbHVaem9nWW1GelpWVnVhWFFnS2lBeUxGeHVJQ0FnSUNBZ2ZTa3NYRzU5S1R0Y2JseHVhVzUwWlhKbVlXTmxJRXh2WVdScGJtZEViM1JRY205d2N5QjdYRzRnSUdSbGJHRjVPaUJ1ZFcxaVpYSTdYRzRnSUc5bVpuTmxkRG9nWW05dmJHVmhianRjYm4xY2JtTnZibk4wSUV4dllXUnBibWRFYjNRZ1BTQW9leUJrWld4aGVTd2diMlptYzJWMElIMDZJRXh2WVdScGJtZEViM1JRY205d2N5a2dQVDRnS0Z4dUlDQThjM0JoYmx4dUlDQWdJR056Y3oxN2UxeHVJQ0FnSUNBZ1lXNXBiV0YwYVc5dU9pQmdKSHRzYjJGa2FXNW5SRzkwUVc1cGJXRjBhVzl1YzMwZ01YTWdaV0Z6WlMxcGJpMXZkWFFnSkh0a1pXeGhlWDF0Y3lCcGJtWnBibWwwWlR0Z0xGeHVJQ0FnSUNBZ1ltRmphMmR5YjNWdVpFTnZiRzl5T2lBblkzVnljbVZ1ZEVOdmJHOXlKeXhjYmlBZ0lDQWdJR0p2Y21SbGNsSmhaR2wxY3pvZ0p6RmxiU2NzWEc0Z0lDQWdJQ0JrYVhOd2JHRjVPaUFuYVc1c2FXNWxMV0pzYjJOckp5eGNiaUFnSUNBZ0lHMWhjbWRwYmt4bFpuUTZJRzltWm5ObGRDQS9JQ2N4WlcwbklEb2dkVzVrWldacGJtVmtMRnh1SUNBZ0lDQWdhR1ZwWjJoME9pQW5NV1Z0Snl4Y2JpQWdJQ0FnSUhabGNuUnBZMkZzUVd4cFoyNDZJQ2QwYjNBbkxGeHVJQ0FnSUNBZ2QybGtkR2c2SUNjeFpXMG5MRnh1SUNBZ0lIMTlYRzRnSUM4K1hHNHBPMXh1WEc1bGVIQnZjblFnYVc1MFpYSm1ZV05sSUV4dllXUnBibWRKYm1ScFkyRjBiM0pRY205d2N6eGNiaUFnVDNCMGFXOXVJRDBnZFc1cmJtOTNiaXhjYmlBZ1NYTk5kV3gwYVNCbGVIUmxibVJ6SUdKdmIyeGxZVzRnUFNCaWIyOXNaV0Z1TEZ4dUlDQkhjbTkxY0NCbGVIUmxibVJ6SUVkeWIzVndRbUZ6WlR4UGNIUnBiMjQrSUQwZ1IzSnZkWEJDWVhObFBFOXdkR2x2Ymo1Y2JqNGdaWGgwWlc1a2N5QkRiMjF0YjI1UWNtOXdjMEZ1WkVOc1lYTnpUbUZ0WlR4UGNIUnBiMjRzSUVselRYVnNkR2tzSUVkeWIzVndQaUI3WEc0Z0lDOHFLaUJRY205d2N5QjBhR0YwSUhkcGJHd2dZbVVnY0dGemMyVmtJRzl1SUhSdklIUm9aU0JqYUdsc1pISmxiaTRnS2k5Y2JpQWdhVzV1WlhKUWNtOXdjem9nU2xOWUxrbHVkSEpwYm5OcFkwVnNaVzFsYm5Seld5ZGthWFluWFR0Y2JpQWdMeW9xSUZSb1pTQm1iMk4xYzJWa0lITjBZWFJsSUc5bUlIUm9aU0J6Wld4bFkzUXVJQ292WEc0Z0lHbHpSbTlqZFhObFpEb2dZbTl2YkdWaGJqdGNiaUFnYVhORWFYTmhZbXhsWkRvZ1ltOXZiR1ZoYmp0Y2JpQWdMeW9xSUZObGRDQnphWHBsSUc5bUlIUm9aU0JqYjI1MFlXbHVaWEl1SUNvdlhHNGdJSE5wZW1VNklHNTFiV0psY2p0Y2JuMWNibVY0Y0c5eWRDQmpiMjV6ZENCTWIyRmthVzVuU1c1a2FXTmhkRzl5SUQwZ1BGeHVJQ0JQY0hScGIyNHNYRzRnSUVselRYVnNkR2tnWlhoMFpXNWtjeUJpYjI5c1pXRnVMRnh1SUNCSGNtOTFjQ0JsZUhSbGJtUnpJRWR5YjNWd1FtRnpaVHhQY0hScGIyNCtYRzQrS0h0Y2JpQWdhVzV1WlhKUWNtOXdjeXhjYmlBZ2FYTlNkR3dzWEc0Z0lITnBlbVVnUFNBMExGeHVJQ0F1TGk1eVpYTjBVSEp2Y0hOY2JuMDZJRXh2WVdScGJtZEpibVJwWTJGMGIzSlFjbTl3Y3p4UGNIUnBiMjRzSUVselRYVnNkR2tzSUVkeWIzVndQaWtnUFQ0Z2UxeHVJQ0J5WlhSMWNtNGdLRnh1SUNBZ0lEeGthWFpjYmlBZ0lDQWdJSHN1TGk1blpYUlRkSGxzWlZCeWIzQnpLRnh1SUNBZ0lDQWdJQ0I3SUM0dUxuSmxjM1JRY205d2N5d2dhVzV1WlhKUWNtOXdjeXdnYVhOU2RHd3NJSE5wZW1VZ2ZTeGNiaUFnSUNBZ0lDQWdKMnh2WVdScGJtZEpibVJwWTJGMGIzSW5MRnh1SUNBZ0lDQWdJQ0I3WEc0Z0lDQWdJQ0FnSUNBZ2FXNWthV05oZEc5eU9pQjBjblZsTEZ4dUlDQWdJQ0FnSUNBZ0lDZHNiMkZrYVc1bkxXbHVaR2xqWVhSdmNpYzZJSFJ5ZFdVc1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDbDlYRzRnSUNBZ0lDQjdMaTR1YVc1dVpYSlFjbTl3YzMxY2JpQWdJQ0ErWEc0Z0lDQWdJQ0E4VEc5aFpHbHVaMFJ2ZENCa1pXeGhlVDE3TUgwZ2IyWm1jMlYwUFh0cGMxSjBiSDBnTHo1Y2JpQWdJQ0FnSUR4TWIyRmthVzVuUkc5MElHUmxiR0Y1UFhzeE5qQjlJRzltWm5ObGRDQXZQbHh1SUNBZ0lDQWdQRXh2WVdScGJtZEViM1FnWkdWc1lYazllek15TUgwZ2IyWm1jMlYwUFhzaGFYTlNkR3g5SUM4K1hHNGdJQ0FnUEM5a2FYWStYRzRnSUNrN1hHNTlPMXh1SWwxOSAqL1wiKVxuICB9KTtcbn07XG52YXIgTG9hZGluZ0luZGljYXRvciA9IGZ1bmN0aW9uIExvYWRpbmdJbmRpY2F0b3IoX3JlZjcpIHtcbiAgdmFyIGlubmVyUHJvcHMgPSBfcmVmNy5pbm5lclByb3BzLFxuICAgIGlzUnRsID0gX3JlZjcuaXNSdGwsXG4gICAgX3JlZjckc2l6ZSA9IF9yZWY3LnNpemUsXG4gICAgc2l6ZSA9IF9yZWY3JHNpemUgPT09IHZvaWQgMCA/IDQgOiBfcmVmNyRzaXplLFxuICAgIHJlc3RQcm9wcyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfcmVmNywgX2V4Y2x1ZGVkMik7XG4gIHJldHVybiBqc3goXCJkaXZcIiwgX2V4dGVuZHMoe30sIGdldFN0eWxlUHJvcHMoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCByZXN0UHJvcHMpLCB7fSwge1xuICAgIGlubmVyUHJvcHM6IGlubmVyUHJvcHMsXG4gICAgaXNSdGw6IGlzUnRsLFxuICAgIHNpemU6IHNpemVcbiAgfSksICdsb2FkaW5nSW5kaWNhdG9yJywge1xuICAgIGluZGljYXRvcjogdHJ1ZSxcbiAgICAnbG9hZGluZy1pbmRpY2F0b3InOiB0cnVlXG4gIH0pLCBpbm5lclByb3BzKSwganN4KExvYWRpbmdEb3QsIHtcbiAgICBkZWxheTogMCxcbiAgICBvZmZzZXQ6IGlzUnRsXG4gIH0pLCBqc3goTG9hZGluZ0RvdCwge1xuICAgIGRlbGF5OiAxNjAsXG4gICAgb2Zmc2V0OiB0cnVlXG4gIH0pLCBqc3goTG9hZGluZ0RvdCwge1xuICAgIGRlbGF5OiAzMjAsXG4gICAgb2Zmc2V0OiAhaXNSdGxcbiAgfSkpO1xufTtcblxudmFyIGNzcyQxID0gZnVuY3Rpb24gY3NzKF9yZWYsIHVuc3R5bGVkKSB7XG4gIHZhciBpc0Rpc2FibGVkID0gX3JlZi5pc0Rpc2FibGVkLFxuICAgIGlzRm9jdXNlZCA9IF9yZWYuaXNGb2N1c2VkLFxuICAgIF9yZWYkdGhlbWUgPSBfcmVmLnRoZW1lLFxuICAgIGNvbG9ycyA9IF9yZWYkdGhlbWUuY29sb3JzLFxuICAgIGJvcmRlclJhZGl1cyA9IF9yZWYkdGhlbWUuYm9yZGVyUmFkaXVzLFxuICAgIHNwYWNpbmcgPSBfcmVmJHRoZW1lLnNwYWNpbmc7XG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKHtcbiAgICBsYWJlbDogJ2NvbnRyb2wnLFxuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgIGN1cnNvcjogJ2RlZmF1bHQnLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBmbGV4V3JhcDogJ3dyYXAnLFxuICAgIGp1c3RpZnlDb250ZW50OiAnc3BhY2UtYmV0d2VlbicsXG4gICAgbWluSGVpZ2h0OiBzcGFjaW5nLmNvbnRyb2xIZWlnaHQsXG4gICAgb3V0bGluZTogJzAgIWltcG9ydGFudCcsXG4gICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgdHJhbnNpdGlvbjogJ2FsbCAxMDBtcydcbiAgfSwgdW5zdHlsZWQgPyB7fSA6IHtcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IGlzRGlzYWJsZWQgPyBjb2xvcnMubmV1dHJhbDUgOiBjb2xvcnMubmV1dHJhbDAsXG4gICAgYm9yZGVyQ29sb3I6IGlzRGlzYWJsZWQgPyBjb2xvcnMubmV1dHJhbDEwIDogaXNGb2N1c2VkID8gY29sb3JzLnByaW1hcnkgOiBjb2xvcnMubmV1dHJhbDIwLFxuICAgIGJvcmRlclJhZGl1czogYm9yZGVyUmFkaXVzLFxuICAgIGJvcmRlclN0eWxlOiAnc29saWQnLFxuICAgIGJvcmRlcldpZHRoOiAxLFxuICAgIGJveFNoYWRvdzogaXNGb2N1c2VkID8gXCIwIDAgMCAxcHggXCIuY29uY2F0KGNvbG9ycy5wcmltYXJ5KSA6IHVuZGVmaW5lZCxcbiAgICAnJjpob3Zlcic6IHtcbiAgICAgIGJvcmRlckNvbG9yOiBpc0ZvY3VzZWQgPyBjb2xvcnMucHJpbWFyeSA6IGNvbG9ycy5uZXV0cmFsMzBcbiAgICB9XG4gIH0pO1xufTtcbnZhciBDb250cm9sID0gZnVuY3Rpb24gQ29udHJvbChwcm9wcykge1xuICB2YXIgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbixcbiAgICBpc0Rpc2FibGVkID0gcHJvcHMuaXNEaXNhYmxlZCxcbiAgICBpc0ZvY3VzZWQgPSBwcm9wcy5pc0ZvY3VzZWQsXG4gICAgaW5uZXJSZWYgPSBwcm9wcy5pbm5lclJlZixcbiAgICBpbm5lclByb3BzID0gcHJvcHMuaW5uZXJQcm9wcyxcbiAgICBtZW51SXNPcGVuID0gcHJvcHMubWVudUlzT3BlbjtcbiAgcmV0dXJuIGpzeChcImRpdlwiLCBfZXh0ZW5kcyh7XG4gICAgcmVmOiBpbm5lclJlZlxuICB9LCBnZXRTdHlsZVByb3BzKHByb3BzLCAnY29udHJvbCcsIHtcbiAgICBjb250cm9sOiB0cnVlLFxuICAgICdjb250cm9sLS1pcy1kaXNhYmxlZCc6IGlzRGlzYWJsZWQsXG4gICAgJ2NvbnRyb2wtLWlzLWZvY3VzZWQnOiBpc0ZvY3VzZWQsXG4gICAgJ2NvbnRyb2wtLW1lbnUtaXMtb3Blbic6IG1lbnVJc09wZW5cbiAgfSksIGlubmVyUHJvcHMsIHtcbiAgICBcImFyaWEtZGlzYWJsZWRcIjogaXNEaXNhYmxlZCB8fCB1bmRlZmluZWRcbiAgfSksIGNoaWxkcmVuKTtcbn07XG52YXIgQ29udHJvbCQxID0gQ29udHJvbDtcblxudmFyIF9leGNsdWRlZCQxID0gW1wiZGF0YVwiXTtcbnZhciBncm91cENTUyA9IGZ1bmN0aW9uIGdyb3VwQ1NTKF9yZWYsIHVuc3R5bGVkKSB7XG4gIHZhciBzcGFjaW5nID0gX3JlZi50aGVtZS5zcGFjaW5nO1xuICByZXR1cm4gdW5zdHlsZWQgPyB7fSA6IHtcbiAgICBwYWRkaW5nQm90dG9tOiBzcGFjaW5nLmJhc2VVbml0ICogMixcbiAgICBwYWRkaW5nVG9wOiBzcGFjaW5nLmJhc2VVbml0ICogMlxuICB9O1xufTtcbnZhciBHcm91cCA9IGZ1bmN0aW9uIEdyb3VwKHByb3BzKSB7XG4gIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgIGN4ID0gcHJvcHMuY3gsXG4gICAgZ2V0U3R5bGVzID0gcHJvcHMuZ2V0U3R5bGVzLFxuICAgIGdldENsYXNzTmFtZXMgPSBwcm9wcy5nZXRDbGFzc05hbWVzLFxuICAgIEhlYWRpbmcgPSBwcm9wcy5IZWFkaW5nLFxuICAgIGhlYWRpbmdQcm9wcyA9IHByb3BzLmhlYWRpbmdQcm9wcyxcbiAgICBpbm5lclByb3BzID0gcHJvcHMuaW5uZXJQcm9wcyxcbiAgICBsYWJlbCA9IHByb3BzLmxhYmVsLFxuICAgIHRoZW1lID0gcHJvcHMudGhlbWUsXG4gICAgc2VsZWN0UHJvcHMgPSBwcm9wcy5zZWxlY3RQcm9wcztcbiAgcmV0dXJuIGpzeChcImRpdlwiLCBfZXh0ZW5kcyh7fSwgZ2V0U3R5bGVQcm9wcyhwcm9wcywgJ2dyb3VwJywge1xuICAgIGdyb3VwOiB0cnVlXG4gIH0pLCBpbm5lclByb3BzKSwganN4KEhlYWRpbmcsIF9leHRlbmRzKHt9LCBoZWFkaW5nUHJvcHMsIHtcbiAgICBzZWxlY3RQcm9wczogc2VsZWN0UHJvcHMsXG4gICAgdGhlbWU6IHRoZW1lLFxuICAgIGdldFN0eWxlczogZ2V0U3R5bGVzLFxuICAgIGdldENsYXNzTmFtZXM6IGdldENsYXNzTmFtZXMsXG4gICAgY3g6IGN4XG4gIH0pLCBsYWJlbCksIGpzeChcImRpdlwiLCBudWxsLCBjaGlsZHJlbikpO1xufTtcbnZhciBncm91cEhlYWRpbmdDU1MgPSBmdW5jdGlvbiBncm91cEhlYWRpbmdDU1MoX3JlZjIsIHVuc3R5bGVkKSB7XG4gIHZhciBfcmVmMiR0aGVtZSA9IF9yZWYyLnRoZW1lLFxuICAgIGNvbG9ycyA9IF9yZWYyJHRoZW1lLmNvbG9ycyxcbiAgICBzcGFjaW5nID0gX3JlZjIkdGhlbWUuc3BhY2luZztcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgIGxhYmVsOiAnZ3JvdXAnLFxuICAgIGN1cnNvcjogJ2RlZmF1bHQnLFxuICAgIGRpc3BsYXk6ICdibG9jaydcbiAgfSwgdW5zdHlsZWQgPyB7fSA6IHtcbiAgICBjb2xvcjogY29sb3JzLm5ldXRyYWw0MCxcbiAgICBmb250U2l6ZTogJzc1JScsXG4gICAgZm9udFdlaWdodDogNTAwLFxuICAgIG1hcmdpbkJvdHRvbTogJzAuMjVlbScsXG4gICAgcGFkZGluZ0xlZnQ6IHNwYWNpbmcuYmFzZVVuaXQgKiAzLFxuICAgIHBhZGRpbmdSaWdodDogc3BhY2luZy5iYXNlVW5pdCAqIDMsXG4gICAgdGV4dFRyYW5zZm9ybTogJ3VwcGVyY2FzZSdcbiAgfSk7XG59O1xudmFyIEdyb3VwSGVhZGluZyA9IGZ1bmN0aW9uIEdyb3VwSGVhZGluZyhwcm9wcykge1xuICB2YXIgX2NsZWFuQ29tbW9uUHJvcHMgPSBjbGVhbkNvbW1vblByb3BzKHByb3BzKTtcbiAgICBfY2xlYW5Db21tb25Qcm9wcy5kYXRhO1xuICAgIHZhciBpbm5lclByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF9jbGVhbkNvbW1vblByb3BzLCBfZXhjbHVkZWQkMSk7XG4gIHJldHVybiBqc3goXCJkaXZcIiwgX2V4dGVuZHMoe30sIGdldFN0eWxlUHJvcHMocHJvcHMsICdncm91cEhlYWRpbmcnLCB7XG4gICAgJ2dyb3VwLWhlYWRpbmcnOiB0cnVlXG4gIH0pLCBpbm5lclByb3BzKSk7XG59O1xudmFyIEdyb3VwJDEgPSBHcm91cDtcblxudmFyIF9leGNsdWRlZCA9IFtcImlubmVyUmVmXCIsIFwiaXNEaXNhYmxlZFwiLCBcImlzSGlkZGVuXCIsIFwiaW5wdXRDbGFzc05hbWVcIl07XG52YXIgaW5wdXRDU1MgPSBmdW5jdGlvbiBpbnB1dENTUyhfcmVmLCB1bnN0eWxlZCkge1xuICB2YXIgaXNEaXNhYmxlZCA9IF9yZWYuaXNEaXNhYmxlZCxcbiAgICB2YWx1ZSA9IF9yZWYudmFsdWUsXG4gICAgX3JlZiR0aGVtZSA9IF9yZWYudGhlbWUsXG4gICAgc3BhY2luZyA9IF9yZWYkdGhlbWUuc3BhY2luZyxcbiAgICBjb2xvcnMgPSBfcmVmJHRoZW1lLmNvbG9ycztcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7XG4gICAgdmlzaWJpbGl0eTogaXNEaXNhYmxlZCA/ICdoaWRkZW4nIDogJ3Zpc2libGUnLFxuICAgIC8vIGZvcmNlIGNzcyB0byByZWNvbXB1dGUgd2hlbiB2YWx1ZSBjaGFuZ2UgZHVlIHRvIEBlbW90aW9uIGJ1Zy5cbiAgICAvLyBXZSBjYW4gcmVtb3ZlIGl0IHdoZW5ldmVyIHRoZSBidWcgaXMgZml4ZWQuXG4gICAgdHJhbnNmb3JtOiB2YWx1ZSA/ICd0cmFuc2xhdGVaKDApJyA6ICcnXG4gIH0sIGNvbnRhaW5lclN0eWxlKSwgdW5zdHlsZWQgPyB7fSA6IHtcbiAgICBtYXJnaW46IHNwYWNpbmcuYmFzZVVuaXQgLyAyLFxuICAgIHBhZGRpbmdCb3R0b206IHNwYWNpbmcuYmFzZVVuaXQgLyAyLFxuICAgIHBhZGRpbmdUb3A6IHNwYWNpbmcuYmFzZVVuaXQgLyAyLFxuICAgIGNvbG9yOiBjb2xvcnMubmV1dHJhbDgwXG4gIH0pO1xufTtcbnZhciBzcGFjaW5nU3R5bGUgPSB7XG4gIGdyaWRBcmVhOiAnMSAvIDInLFxuICBmb250OiAnaW5oZXJpdCcsXG4gIG1pbldpZHRoOiAnMnB4JyxcbiAgYm9yZGVyOiAwLFxuICBtYXJnaW46IDAsXG4gIG91dGxpbmU6IDAsXG4gIHBhZGRpbmc6IDBcbn07XG52YXIgY29udGFpbmVyU3R5bGUgPSB7XG4gIGZsZXg6ICcxIDEgYXV0bycsXG4gIGRpc3BsYXk6ICdpbmxpbmUtZ3JpZCcsXG4gIGdyaWRBcmVhOiAnMSAvIDEgLyAyIC8gMycsXG4gIGdyaWRUZW1wbGF0ZUNvbHVtbnM6ICcwIG1pbi1jb250ZW50JyxcbiAgJyY6YWZ0ZXInOiBfb2JqZWN0U3ByZWFkKHtcbiAgICBjb250ZW50OiAnYXR0cihkYXRhLXZhbHVlKSBcIiBcIicsXG4gICAgdmlzaWJpbGl0eTogJ2hpZGRlbicsXG4gICAgd2hpdGVTcGFjZTogJ3ByZSdcbiAgfSwgc3BhY2luZ1N0eWxlKVxufTtcbnZhciBpbnB1dFN0eWxlID0gZnVuY3Rpb24gaW5wdXRTdHlsZShpc0hpZGRlbikge1xuICByZXR1cm4gX29iamVjdFNwcmVhZCh7XG4gICAgbGFiZWw6ICdpbnB1dCcsXG4gICAgY29sb3I6ICdpbmhlcml0JyxcbiAgICBiYWNrZ3JvdW5kOiAwLFxuICAgIG9wYWNpdHk6IGlzSGlkZGVuID8gMCA6IDEsXG4gICAgd2lkdGg6ICcxMDAlJ1xuICB9LCBzcGFjaW5nU3R5bGUpO1xufTtcbnZhciBJbnB1dCA9IGZ1bmN0aW9uIElucHV0KHByb3BzKSB7XG4gIHZhciBjeCA9IHByb3BzLmN4LFxuICAgIHZhbHVlID0gcHJvcHMudmFsdWU7XG4gIHZhciBfY2xlYW5Db21tb25Qcm9wcyA9IGNsZWFuQ29tbW9uUHJvcHMocHJvcHMpLFxuICAgIGlubmVyUmVmID0gX2NsZWFuQ29tbW9uUHJvcHMuaW5uZXJSZWYsXG4gICAgaXNEaXNhYmxlZCA9IF9jbGVhbkNvbW1vblByb3BzLmlzRGlzYWJsZWQsXG4gICAgaXNIaWRkZW4gPSBfY2xlYW5Db21tb25Qcm9wcy5pc0hpZGRlbixcbiAgICBpbnB1dENsYXNzTmFtZSA9IF9jbGVhbkNvbW1vblByb3BzLmlucHV0Q2xhc3NOYW1lLFxuICAgIGlubmVyUHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX2NsZWFuQ29tbW9uUHJvcHMsIF9leGNsdWRlZCk7XG4gIHJldHVybiBqc3goXCJkaXZcIiwgX2V4dGVuZHMoe30sIGdldFN0eWxlUHJvcHMocHJvcHMsICdpbnB1dCcsIHtcbiAgICAnaW5wdXQtY29udGFpbmVyJzogdHJ1ZVxuICB9KSwge1xuICAgIFwiZGF0YS12YWx1ZVwiOiB2YWx1ZSB8fCAnJ1xuICB9KSwganN4KFwiaW5wdXRcIiwgX2V4dGVuZHMoe1xuICAgIGNsYXNzTmFtZTogY3goe1xuICAgICAgaW5wdXQ6IHRydWVcbiAgICB9LCBpbnB1dENsYXNzTmFtZSksXG4gICAgcmVmOiBpbm5lclJlZixcbiAgICBzdHlsZTogaW5wdXRTdHlsZShpc0hpZGRlbiksXG4gICAgZGlzYWJsZWQ6IGlzRGlzYWJsZWRcbiAgfSwgaW5uZXJQcm9wcykpKTtcbn07XG52YXIgSW5wdXQkMSA9IElucHV0O1xuXG52YXIgbXVsdGlWYWx1ZUNTUyA9IGZ1bmN0aW9uIG11bHRpVmFsdWVDU1MoX3JlZiwgdW5zdHlsZWQpIHtcbiAgdmFyIF9yZWYkdGhlbWUgPSBfcmVmLnRoZW1lLFxuICAgIHNwYWNpbmcgPSBfcmVmJHRoZW1lLnNwYWNpbmcsXG4gICAgYm9yZGVyUmFkaXVzID0gX3JlZiR0aGVtZS5ib3JkZXJSYWRpdXMsXG4gICAgY29sb3JzID0gX3JlZiR0aGVtZS5jb2xvcnM7XG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKHtcbiAgICBsYWJlbDogJ211bHRpVmFsdWUnLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBtaW5XaWR0aDogMFxuICB9LCB1bnN0eWxlZCA/IHt9IDoge1xuICAgIGJhY2tncm91bmRDb2xvcjogY29sb3JzLm5ldXRyYWwxMCxcbiAgICBib3JkZXJSYWRpdXM6IGJvcmRlclJhZGl1cyAvIDIsXG4gICAgbWFyZ2luOiBzcGFjaW5nLmJhc2VVbml0IC8gMlxuICB9KTtcbn07XG52YXIgbXVsdGlWYWx1ZUxhYmVsQ1NTID0gZnVuY3Rpb24gbXVsdGlWYWx1ZUxhYmVsQ1NTKF9yZWYyLCB1bnN0eWxlZCkge1xuICB2YXIgX3JlZjIkdGhlbWUgPSBfcmVmMi50aGVtZSxcbiAgICBib3JkZXJSYWRpdXMgPSBfcmVmMiR0aGVtZS5ib3JkZXJSYWRpdXMsXG4gICAgY29sb3JzID0gX3JlZjIkdGhlbWUuY29sb3JzLFxuICAgIGNyb3BXaXRoRWxsaXBzaXMgPSBfcmVmMi5jcm9wV2l0aEVsbGlwc2lzO1xuICByZXR1cm4gX29iamVjdFNwcmVhZCh7XG4gICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICAgIHRleHRPdmVyZmxvdzogY3JvcFdpdGhFbGxpcHNpcyB8fCBjcm9wV2l0aEVsbGlwc2lzID09PSB1bmRlZmluZWQgPyAnZWxsaXBzaXMnIDogdW5kZWZpbmVkLFxuICAgIHdoaXRlU3BhY2U6ICdub3dyYXAnXG4gIH0sIHVuc3R5bGVkID8ge30gOiB7XG4gICAgYm9yZGVyUmFkaXVzOiBib3JkZXJSYWRpdXMgLyAyLFxuICAgIGNvbG9yOiBjb2xvcnMubmV1dHJhbDgwLFxuICAgIGZvbnRTaXplOiAnODUlJyxcbiAgICBwYWRkaW5nOiAzLFxuICAgIHBhZGRpbmdMZWZ0OiA2XG4gIH0pO1xufTtcbnZhciBtdWx0aVZhbHVlUmVtb3ZlQ1NTID0gZnVuY3Rpb24gbXVsdGlWYWx1ZVJlbW92ZUNTUyhfcmVmMywgdW5zdHlsZWQpIHtcbiAgdmFyIF9yZWYzJHRoZW1lID0gX3JlZjMudGhlbWUsXG4gICAgc3BhY2luZyA9IF9yZWYzJHRoZW1lLnNwYWNpbmcsXG4gICAgYm9yZGVyUmFkaXVzID0gX3JlZjMkdGhlbWUuYm9yZGVyUmFkaXVzLFxuICAgIGNvbG9ycyA9IF9yZWYzJHRoZW1lLmNvbG9ycyxcbiAgICBpc0ZvY3VzZWQgPSBfcmVmMy5pc0ZvY3VzZWQ7XG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKHtcbiAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICBkaXNwbGF5OiAnZmxleCdcbiAgfSwgdW5zdHlsZWQgPyB7fSA6IHtcbiAgICBib3JkZXJSYWRpdXM6IGJvcmRlclJhZGl1cyAvIDIsXG4gICAgYmFja2dyb3VuZENvbG9yOiBpc0ZvY3VzZWQgPyBjb2xvcnMuZGFuZ2VyTGlnaHQgOiB1bmRlZmluZWQsXG4gICAgcGFkZGluZ0xlZnQ6IHNwYWNpbmcuYmFzZVVuaXQsXG4gICAgcGFkZGluZ1JpZ2h0OiBzcGFjaW5nLmJhc2VVbml0LFxuICAgICc6aG92ZXInOiB7XG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IGNvbG9ycy5kYW5nZXJMaWdodCxcbiAgICAgIGNvbG9yOiBjb2xvcnMuZGFuZ2VyXG4gICAgfVxuICB9KTtcbn07XG52YXIgTXVsdGlWYWx1ZUdlbmVyaWMgPSBmdW5jdGlvbiBNdWx0aVZhbHVlR2VuZXJpYyhfcmVmNCkge1xuICB2YXIgY2hpbGRyZW4gPSBfcmVmNC5jaGlsZHJlbixcbiAgICBpbm5lclByb3BzID0gX3JlZjQuaW5uZXJQcm9wcztcbiAgcmV0dXJuIGpzeChcImRpdlwiLCBpbm5lclByb3BzLCBjaGlsZHJlbik7XG59O1xudmFyIE11bHRpVmFsdWVDb250YWluZXIgPSBNdWx0aVZhbHVlR2VuZXJpYztcbnZhciBNdWx0aVZhbHVlTGFiZWwgPSBNdWx0aVZhbHVlR2VuZXJpYztcbmZ1bmN0aW9uIE11bHRpVmFsdWVSZW1vdmUoX3JlZjUpIHtcbiAgdmFyIGNoaWxkcmVuID0gX3JlZjUuY2hpbGRyZW4sXG4gICAgaW5uZXJQcm9wcyA9IF9yZWY1LmlubmVyUHJvcHM7XG4gIHJldHVybiBqc3goXCJkaXZcIiwgX2V4dGVuZHMoe1xuICAgIHJvbGU6IFwiYnV0dG9uXCJcbiAgfSwgaW5uZXJQcm9wcyksIGNoaWxkcmVuIHx8IGpzeChDcm9zc0ljb24sIHtcbiAgICBzaXplOiAxNFxuICB9KSk7XG59XG52YXIgTXVsdGlWYWx1ZSA9IGZ1bmN0aW9uIE11bHRpVmFsdWUocHJvcHMpIHtcbiAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgY29tcG9uZW50cyA9IHByb3BzLmNvbXBvbmVudHMsXG4gICAgZGF0YSA9IHByb3BzLmRhdGEsXG4gICAgaW5uZXJQcm9wcyA9IHByb3BzLmlubmVyUHJvcHMsXG4gICAgaXNEaXNhYmxlZCA9IHByb3BzLmlzRGlzYWJsZWQsXG4gICAgcmVtb3ZlUHJvcHMgPSBwcm9wcy5yZW1vdmVQcm9wcyxcbiAgICBzZWxlY3RQcm9wcyA9IHByb3BzLnNlbGVjdFByb3BzO1xuICB2YXIgQ29udGFpbmVyID0gY29tcG9uZW50cy5Db250YWluZXIsXG4gICAgTGFiZWwgPSBjb21wb25lbnRzLkxhYmVsLFxuICAgIFJlbW92ZSA9IGNvbXBvbmVudHMuUmVtb3ZlO1xuICByZXR1cm4ganN4KENvbnRhaW5lciwge1xuICAgIGRhdGE6IGRhdGEsXG4gICAgaW5uZXJQcm9wczogX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBnZXRTdHlsZVByb3BzKHByb3BzLCAnbXVsdGlWYWx1ZScsIHtcbiAgICAgICdtdWx0aS12YWx1ZSc6IHRydWUsXG4gICAgICAnbXVsdGktdmFsdWUtLWlzLWRpc2FibGVkJzogaXNEaXNhYmxlZFxuICAgIH0pKSwgaW5uZXJQcm9wcyksXG4gICAgc2VsZWN0UHJvcHM6IHNlbGVjdFByb3BzXG4gIH0sIGpzeChMYWJlbCwge1xuICAgIGRhdGE6IGRhdGEsXG4gICAgaW5uZXJQcm9wczogX29iamVjdFNwcmVhZCh7fSwgZ2V0U3R5bGVQcm9wcyhwcm9wcywgJ211bHRpVmFsdWVMYWJlbCcsIHtcbiAgICAgICdtdWx0aS12YWx1ZV9fbGFiZWwnOiB0cnVlXG4gICAgfSkpLFxuICAgIHNlbGVjdFByb3BzOiBzZWxlY3RQcm9wc1xuICB9LCBjaGlsZHJlbiksIGpzeChSZW1vdmUsIHtcbiAgICBkYXRhOiBkYXRhLFxuICAgIGlubmVyUHJvcHM6IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgZ2V0U3R5bGVQcm9wcyhwcm9wcywgJ211bHRpVmFsdWVSZW1vdmUnLCB7XG4gICAgICAnbXVsdGktdmFsdWVfX3JlbW92ZSc6IHRydWVcbiAgICB9KSksIHt9LCB7XG4gICAgICAnYXJpYS1sYWJlbCc6IFwiUmVtb3ZlIFwiLmNvbmNhdChjaGlsZHJlbiB8fCAnb3B0aW9uJylcbiAgICB9LCByZW1vdmVQcm9wcyksXG4gICAgc2VsZWN0UHJvcHM6IHNlbGVjdFByb3BzXG4gIH0pKTtcbn07XG52YXIgTXVsdGlWYWx1ZSQxID0gTXVsdGlWYWx1ZTtcblxudmFyIG9wdGlvbkNTUyA9IGZ1bmN0aW9uIG9wdGlvbkNTUyhfcmVmLCB1bnN0eWxlZCkge1xuICB2YXIgaXNEaXNhYmxlZCA9IF9yZWYuaXNEaXNhYmxlZCxcbiAgICBpc0ZvY3VzZWQgPSBfcmVmLmlzRm9jdXNlZCxcbiAgICBpc1NlbGVjdGVkID0gX3JlZi5pc1NlbGVjdGVkLFxuICAgIF9yZWYkdGhlbWUgPSBfcmVmLnRoZW1lLFxuICAgIHNwYWNpbmcgPSBfcmVmJHRoZW1lLnNwYWNpbmcsXG4gICAgY29sb3JzID0gX3JlZiR0aGVtZS5jb2xvcnM7XG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKHtcbiAgICBsYWJlbDogJ29wdGlvbicsXG4gICAgY3Vyc29yOiAnZGVmYXVsdCcsXG4gICAgZGlzcGxheTogJ2Jsb2NrJyxcbiAgICBmb250U2l6ZTogJ2luaGVyaXQnLFxuICAgIHdpZHRoOiAnMTAwJScsXG4gICAgdXNlclNlbGVjdDogJ25vbmUnLFxuICAgIFdlYmtpdFRhcEhpZ2hsaWdodENvbG9yOiAncmdiYSgwLCAwLCAwLCAwKSdcbiAgfSwgdW5zdHlsZWQgPyB7fSA6IHtcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IGlzU2VsZWN0ZWQgPyBjb2xvcnMucHJpbWFyeSA6IGlzRm9jdXNlZCA/IGNvbG9ycy5wcmltYXJ5MjUgOiAndHJhbnNwYXJlbnQnLFxuICAgIGNvbG9yOiBpc0Rpc2FibGVkID8gY29sb3JzLm5ldXRyYWwyMCA6IGlzU2VsZWN0ZWQgPyBjb2xvcnMubmV1dHJhbDAgOiAnaW5oZXJpdCcsXG4gICAgcGFkZGluZzogXCJcIi5jb25jYXQoc3BhY2luZy5iYXNlVW5pdCAqIDIsIFwicHggXCIpLmNvbmNhdChzcGFjaW5nLmJhc2VVbml0ICogMywgXCJweFwiKSxcbiAgICAvLyBwcm92aWRlIHNvbWUgYWZmb3JkYW5jZSBvbiB0b3VjaCBkZXZpY2VzXG4gICAgJzphY3RpdmUnOiB7XG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6ICFpc0Rpc2FibGVkID8gaXNTZWxlY3RlZCA/IGNvbG9ycy5wcmltYXJ5IDogY29sb3JzLnByaW1hcnk1MCA6IHVuZGVmaW5lZFxuICAgIH1cbiAgfSk7XG59O1xudmFyIE9wdGlvbiA9IGZ1bmN0aW9uIE9wdGlvbihwcm9wcykge1xuICB2YXIgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbixcbiAgICBpc0Rpc2FibGVkID0gcHJvcHMuaXNEaXNhYmxlZCxcbiAgICBpc0ZvY3VzZWQgPSBwcm9wcy5pc0ZvY3VzZWQsXG4gICAgaXNTZWxlY3RlZCA9IHByb3BzLmlzU2VsZWN0ZWQsXG4gICAgaW5uZXJSZWYgPSBwcm9wcy5pbm5lclJlZixcbiAgICBpbm5lclByb3BzID0gcHJvcHMuaW5uZXJQcm9wcztcbiAgcmV0dXJuIGpzeChcImRpdlwiLCBfZXh0ZW5kcyh7fSwgZ2V0U3R5bGVQcm9wcyhwcm9wcywgJ29wdGlvbicsIHtcbiAgICBvcHRpb246IHRydWUsXG4gICAgJ29wdGlvbi0taXMtZGlzYWJsZWQnOiBpc0Rpc2FibGVkLFxuICAgICdvcHRpb24tLWlzLWZvY3VzZWQnOiBpc0ZvY3VzZWQsXG4gICAgJ29wdGlvbi0taXMtc2VsZWN0ZWQnOiBpc1NlbGVjdGVkXG4gIH0pLCB7XG4gICAgcmVmOiBpbm5lclJlZixcbiAgICBcImFyaWEtZGlzYWJsZWRcIjogaXNEaXNhYmxlZFxuICB9LCBpbm5lclByb3BzKSwgY2hpbGRyZW4pO1xufTtcbnZhciBPcHRpb24kMSA9IE9wdGlvbjtcblxudmFyIHBsYWNlaG9sZGVyQ1NTID0gZnVuY3Rpb24gcGxhY2Vob2xkZXJDU1MoX3JlZiwgdW5zdHlsZWQpIHtcbiAgdmFyIF9yZWYkdGhlbWUgPSBfcmVmLnRoZW1lLFxuICAgIHNwYWNpbmcgPSBfcmVmJHRoZW1lLnNwYWNpbmcsXG4gICAgY29sb3JzID0gX3JlZiR0aGVtZS5jb2xvcnM7XG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKHtcbiAgICBsYWJlbDogJ3BsYWNlaG9sZGVyJyxcbiAgICBncmlkQXJlYTogJzEgLyAxIC8gMiAvIDMnXG4gIH0sIHVuc3R5bGVkID8ge30gOiB7XG4gICAgY29sb3I6IGNvbG9ycy5uZXV0cmFsNTAsXG4gICAgbWFyZ2luTGVmdDogc3BhY2luZy5iYXNlVW5pdCAvIDIsXG4gICAgbWFyZ2luUmlnaHQ6IHNwYWNpbmcuYmFzZVVuaXQgLyAyXG4gIH0pO1xufTtcbnZhciBQbGFjZWhvbGRlciA9IGZ1bmN0aW9uIFBsYWNlaG9sZGVyKHByb3BzKSB7XG4gIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgIGlubmVyUHJvcHMgPSBwcm9wcy5pbm5lclByb3BzO1xuICByZXR1cm4ganN4KFwiZGl2XCIsIF9leHRlbmRzKHt9LCBnZXRTdHlsZVByb3BzKHByb3BzLCAncGxhY2Vob2xkZXInLCB7XG4gICAgcGxhY2Vob2xkZXI6IHRydWVcbiAgfSksIGlubmVyUHJvcHMpLCBjaGlsZHJlbik7XG59O1xudmFyIFBsYWNlaG9sZGVyJDEgPSBQbGFjZWhvbGRlcjtcblxudmFyIGNzcyA9IGZ1bmN0aW9uIGNzcyhfcmVmLCB1bnN0eWxlZCkge1xuICB2YXIgaXNEaXNhYmxlZCA9IF9yZWYuaXNEaXNhYmxlZCxcbiAgICBfcmVmJHRoZW1lID0gX3JlZi50aGVtZSxcbiAgICBzcGFjaW5nID0gX3JlZiR0aGVtZS5zcGFjaW5nLFxuICAgIGNvbG9ycyA9IF9yZWYkdGhlbWUuY29sb3JzO1xuICByZXR1cm4gX29iamVjdFNwcmVhZCh7XG4gICAgbGFiZWw6ICdzaW5nbGVWYWx1ZScsXG4gICAgZ3JpZEFyZWE6ICcxIC8gMSAvIDIgLyAzJyxcbiAgICBtYXhXaWR0aDogJzEwMCUnLFxuICAgIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgICB0ZXh0T3ZlcmZsb3c6ICdlbGxpcHNpcycsXG4gICAgd2hpdGVTcGFjZTogJ25vd3JhcCdcbiAgfSwgdW5zdHlsZWQgPyB7fSA6IHtcbiAgICBjb2xvcjogaXNEaXNhYmxlZCA/IGNvbG9ycy5uZXV0cmFsNDAgOiBjb2xvcnMubmV1dHJhbDgwLFxuICAgIG1hcmdpbkxlZnQ6IHNwYWNpbmcuYmFzZVVuaXQgLyAyLFxuICAgIG1hcmdpblJpZ2h0OiBzcGFjaW5nLmJhc2VVbml0IC8gMlxuICB9KTtcbn07XG52YXIgU2luZ2xlVmFsdWUgPSBmdW5jdGlvbiBTaW5nbGVWYWx1ZShwcm9wcykge1xuICB2YXIgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbixcbiAgICBpc0Rpc2FibGVkID0gcHJvcHMuaXNEaXNhYmxlZCxcbiAgICBpbm5lclByb3BzID0gcHJvcHMuaW5uZXJQcm9wcztcbiAgcmV0dXJuIGpzeChcImRpdlwiLCBfZXh0ZW5kcyh7fSwgZ2V0U3R5bGVQcm9wcyhwcm9wcywgJ3NpbmdsZVZhbHVlJywge1xuICAgICdzaW5nbGUtdmFsdWUnOiB0cnVlLFxuICAgICdzaW5nbGUtdmFsdWUtLWlzLWRpc2FibGVkJzogaXNEaXNhYmxlZFxuICB9KSwgaW5uZXJQcm9wcyksIGNoaWxkcmVuKTtcbn07XG52YXIgU2luZ2xlVmFsdWUkMSA9IFNpbmdsZVZhbHVlO1xuXG52YXIgY29tcG9uZW50cyA9IHtcbiAgQ2xlYXJJbmRpY2F0b3I6IENsZWFySW5kaWNhdG9yLFxuICBDb250cm9sOiBDb250cm9sJDEsXG4gIERyb3Bkb3duSW5kaWNhdG9yOiBEcm9wZG93bkluZGljYXRvcixcbiAgRG93bkNoZXZyb246IERvd25DaGV2cm9uLFxuICBDcm9zc0ljb246IENyb3NzSWNvbixcbiAgR3JvdXA6IEdyb3VwJDEsXG4gIEdyb3VwSGVhZGluZzogR3JvdXBIZWFkaW5nLFxuICBJbmRpY2F0b3JzQ29udGFpbmVyOiBJbmRpY2F0b3JzQ29udGFpbmVyLFxuICBJbmRpY2F0b3JTZXBhcmF0b3I6IEluZGljYXRvclNlcGFyYXRvcixcbiAgSW5wdXQ6IElucHV0JDEsXG4gIExvYWRpbmdJbmRpY2F0b3I6IExvYWRpbmdJbmRpY2F0b3IsXG4gIE1lbnU6IE1lbnUkMSxcbiAgTWVudUxpc3Q6IE1lbnVMaXN0LFxuICBNZW51UG9ydGFsOiBNZW51UG9ydGFsLFxuICBMb2FkaW5nTWVzc2FnZTogTG9hZGluZ01lc3NhZ2UsXG4gIE5vT3B0aW9uc01lc3NhZ2U6IE5vT3B0aW9uc01lc3NhZ2UsXG4gIE11bHRpVmFsdWU6IE11bHRpVmFsdWUkMSxcbiAgTXVsdGlWYWx1ZUNvbnRhaW5lcjogTXVsdGlWYWx1ZUNvbnRhaW5lcixcbiAgTXVsdGlWYWx1ZUxhYmVsOiBNdWx0aVZhbHVlTGFiZWwsXG4gIE11bHRpVmFsdWVSZW1vdmU6IE11bHRpVmFsdWVSZW1vdmUsXG4gIE9wdGlvbjogT3B0aW9uJDEsXG4gIFBsYWNlaG9sZGVyOiBQbGFjZWhvbGRlciQxLFxuICBTZWxlY3RDb250YWluZXI6IFNlbGVjdENvbnRhaW5lcixcbiAgU2luZ2xlVmFsdWU6IFNpbmdsZVZhbHVlJDEsXG4gIFZhbHVlQ29udGFpbmVyOiBWYWx1ZUNvbnRhaW5lclxufTtcbnZhciBkZWZhdWx0Q29tcG9uZW50cyA9IGZ1bmN0aW9uIGRlZmF1bHRDb21wb25lbnRzKHByb3BzKSB7XG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGNvbXBvbmVudHMpLCBwcm9wcy5jb21wb25lbnRzKTtcbn07XG5cbmV4cG9ydCB7IGlzTW9iaWxlRGV2aWNlIGFzIEEsIG11bHRpVmFsdWVBc1ZhbHVlIGFzIEIsIHNpbmdsZVZhbHVlQXNWYWx1ZSBhcyBDLCB2YWx1ZVRlcm5hcnkgYXMgRCwgY2xhc3NOYW1lcyBhcyBFLCBkZWZhdWx0Q29tcG9uZW50cyBhcyBGLCBpc0RvY3VtZW50RWxlbWVudCBhcyBHLCBjbGVhblZhbHVlIGFzIEgsIHNjcm9sbEludG9WaWV3IGFzIEksIG5vb3AgYXMgSiwgbm90TnVsbGlzaCBhcyBLLCBoYW5kbGVJbnB1dENoYW5nZSBhcyBMLCBNZW51UGxhY2VyIGFzIE0sIGNsZWFySW5kaWNhdG9yQ1NTIGFzIGEsIGNvbnRhaW5lckNTUyBhcyBiLCBjb21wb25lbnRzIGFzIGMsIGNzcyQxIGFzIGQsIGRyb3Bkb3duSW5kaWNhdG9yQ1NTIGFzIGUsIGdyb3VwSGVhZGluZ0NTUyBhcyBmLCBncm91cENTUyBhcyBnLCBpbmRpY2F0b3JTZXBhcmF0b3JDU1MgYXMgaCwgaW5kaWNhdG9yc0NvbnRhaW5lckNTUyBhcyBpLCBpbnB1dENTUyBhcyBqLCBsb2FkaW5nTWVzc2FnZUNTUyBhcyBrLCBsb2FkaW5nSW5kaWNhdG9yQ1NTIGFzIGwsIG1lbnVDU1MgYXMgbSwgbWVudUxpc3RDU1MgYXMgbiwgbWVudVBvcnRhbENTUyBhcyBvLCBtdWx0aVZhbHVlQ1NTIGFzIHAsIG11bHRpVmFsdWVMYWJlbENTUyBhcyBxLCByZW1vdmVQcm9wcyBhcyByLCBzdXBwb3J0c1Bhc3NpdmVFdmVudHMgYXMgcywgbXVsdGlWYWx1ZVJlbW92ZUNTUyBhcyB0LCBub09wdGlvbnNNZXNzYWdlQ1NTIGFzIHUsIG9wdGlvbkNTUyBhcyB2LCBwbGFjZWhvbGRlckNTUyBhcyB3LCBjc3MgYXMgeCwgdmFsdWVDb250YWluZXJDU1MgYXMgeSwgaXNUb3VjaENhcGFibGUgYXMgeiB9O1xuIiwgImltcG9ydCBfZXh0ZW5kcyBmcm9tICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzJztcbmltcG9ydCBfb2JqZWN0U3ByZWFkIGZyb20gJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFNwcmVhZDInO1xuaW1wb3J0IF9jbGFzc0NhbGxDaGVjayBmcm9tICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVjayc7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzJztcbmltcG9ydCBfaW5oZXJpdHMgZnJvbSAnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaW5oZXJpdHMnO1xuaW1wb3J0IF9jcmVhdGVTdXBlciBmcm9tICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVTdXBlcic7XG5pbXBvcnQgX3RvQ29uc3VtYWJsZUFycmF5IGZyb20gJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3RvQ29uc3VtYWJsZUFycmF5JztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZU1lbW8sIEZyYWdtZW50LCB1c2VSZWYsIHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIENvbXBvbmVudCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHIgYXMgcmVtb3ZlUHJvcHMsIHMgYXMgc3VwcG9ydHNQYXNzaXZlRXZlbnRzLCBhIGFzIGNsZWFySW5kaWNhdG9yQ1NTLCBiIGFzIGNvbnRhaW5lckNTUywgZCBhcyBjc3MkMSwgZSBhcyBkcm9wZG93bkluZGljYXRvckNTUywgZyBhcyBncm91cENTUywgZiBhcyBncm91cEhlYWRpbmdDU1MsIGkgYXMgaW5kaWNhdG9yc0NvbnRhaW5lckNTUywgaCBhcyBpbmRpY2F0b3JTZXBhcmF0b3JDU1MsIGogYXMgaW5wdXRDU1MsIGwgYXMgbG9hZGluZ0luZGljYXRvckNTUywgayBhcyBsb2FkaW5nTWVzc2FnZUNTUywgbSBhcyBtZW51Q1NTLCBuIGFzIG1lbnVMaXN0Q1NTLCBvIGFzIG1lbnVQb3J0YWxDU1MsIHAgYXMgbXVsdGlWYWx1ZUNTUywgcSBhcyBtdWx0aVZhbHVlTGFiZWxDU1MsIHQgYXMgbXVsdGlWYWx1ZVJlbW92ZUNTUywgdSBhcyBub09wdGlvbnNNZXNzYWdlQ1NTLCB2IGFzIG9wdGlvbkNTUywgdyBhcyBwbGFjZWhvbGRlckNTUywgeCBhcyBjc3MkMiwgeSBhcyB2YWx1ZUNvbnRhaW5lckNTUywgeiBhcyBpc1RvdWNoQ2FwYWJsZSwgQSBhcyBpc01vYmlsZURldmljZSwgQiBhcyBtdWx0aVZhbHVlQXNWYWx1ZSwgQyBhcyBzaW5nbGVWYWx1ZUFzVmFsdWUsIEQgYXMgdmFsdWVUZXJuYXJ5LCBFIGFzIGNsYXNzTmFtZXMsIEYgYXMgZGVmYXVsdENvbXBvbmVudHMsIEcgYXMgaXNEb2N1bWVudEVsZW1lbnQsIEggYXMgY2xlYW5WYWx1ZSwgSSBhcyBzY3JvbGxJbnRvVmlldywgSiBhcyBub29wLCBNIGFzIE1lbnVQbGFjZXIsIEsgYXMgbm90TnVsbGlzaCB9IGZyb20gJy4vaW5kZXgtYTMwMWY1MjYuZXNtLmpzJztcbmltcG9ydCB7IGpzeCwgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuaW1wb3J0IG1lbW9pemVPbmUgZnJvbSAnbWVtb2l6ZS1vbmUnO1xuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyBmcm9tICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllcyc7XG5cbmZ1bmN0aW9uIF9FTU9USU9OX1NUUklOR0lGSUVEX0NTU19FUlJPUl9fJDIoKSB7IHJldHVybiBcIllvdSBoYXZlIHRyaWVkIHRvIHN0cmluZ2lmeSBvYmplY3QgcmV0dXJuZWQgZnJvbSBgY3NzYCBmdW5jdGlvbi4gSXQgaXNuJ3Qgc3VwcG9zZWQgdG8gYmUgdXNlZCBkaXJlY3RseSAoZS5nLiBhcyB2YWx1ZSBvZiB0aGUgYGNsYXNzTmFtZWAgcHJvcCksIGJ1dCByYXRoZXIgaGFuZGVkIHRvIGVtb3Rpb24gc28gaXQgY2FuIGhhbmRsZSBpdCAoZS5nLiBhcyB2YWx1ZSBvZiBgY3NzYCBwcm9wKS5cIjsgfVxuXG4vLyBBc3Npc3RpdmUgdGV4dCB0byBkZXNjcmliZSB2aXN1YWwgZWxlbWVudHMuIEhpZGRlbiBmb3Igc2lnaHRlZCB1c2Vycy5cbnZhciBfcmVmID0gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8ge1xuICBuYW1lOiBcIjdwZzBjai1hMTF5VGV4dFwiLFxuICBzdHlsZXM6IFwibGFiZWw6YTExeVRleHQ7ei1pbmRleDo5OTk5O2JvcmRlcjowO2NsaXA6cmVjdCgxcHgsIDFweCwgMXB4LCAxcHgpO2hlaWdodDoxcHg7d2lkdGg6MXB4O3Bvc2l0aW9uOmFic29sdXRlO292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7d2hpdGUtc3BhY2U6bm93cmFwXCJcbn0gOiB7XG4gIG5hbWU6IFwiMWY0M2F2ei1hMTF5VGV4dC1BMTF5VGV4dFwiLFxuICBzdHlsZXM6IFwibGFiZWw6YTExeVRleHQ7ei1pbmRleDo5OTk5O2JvcmRlcjowO2NsaXA6cmVjdCgxcHgsIDFweCwgMXB4LCAxcHgpO2hlaWdodDoxcHg7d2lkdGg6MXB4O3Bvc2l0aW9uOmFic29sdXRlO292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7d2hpdGUtc3BhY2U6bm93cmFwO2xhYmVsOkExMXlUZXh0O1wiLFxuICBtYXA6IFwiLyojIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSWtFeE1YbFVaWGgwTG5SemVDSmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaVFVRk5TU0lzSW1acGJHVWlPaUpCTVRGNVZHVjRkQzUwYzNnaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SXZLaW9nUUdwemVDQnFjM2dnS2k5Y2JtbHRjRzl5ZENCN0lHcHplQ0I5SUdaeWIyMGdKMEJsYlc5MGFXOXVMM0psWVdOMEp6dGNibHh1THk4Z1FYTnphWE4wYVhabElIUmxlSFFnZEc4Z1pHVnpZM0pwWW1VZ2RtbHpkV0ZzSUdWc1pXMWxiblJ6TGlCSWFXUmtaVzRnWm05eUlITnBaMmgwWldRZ2RYTmxjbk11WEc1amIyNXpkQ0JCTVRGNVZHVjRkQ0E5SUNod2NtOXdjem9nU2xOWUxrbHVkSEpwYm5OcFkwVnNaVzFsYm5Seld5ZHpjR0Z1SjEwcElEMCtJQ2hjYmlBZ1BITndZVzVjYmlBZ0lDQmpjM005ZTN0Y2JpQWdJQ0FnSUd4aFltVnNPaUFuWVRFeGVWUmxlSFFuTEZ4dUlDQWdJQ0FnZWtsdVpHVjRPaUE1T1RrNUxGeHVJQ0FnSUNBZ1ltOXlaR1Z5T2lBd0xGeHVJQ0FnSUNBZ1kyeHBjRG9nSjNKbFkzUW9NWEI0TENBeGNIZ3NJREZ3ZUN3Z01YQjRLU2NzWEc0Z0lDQWdJQ0JvWldsbmFIUTZJREVzWEc0Z0lDQWdJQ0IzYVdSMGFEb2dNU3hjYmlBZ0lDQWdJSEJ2YzJsMGFXOXVPaUFuWVdKemIyeDFkR1VuTEZ4dUlDQWdJQ0FnYjNabGNtWnNiM2M2SUNkb2FXUmtaVzRuTEZ4dUlDQWdJQ0FnY0dGa1pHbHVaem9nTUN4Y2JpQWdJQ0FnSUhkb2FYUmxVM0JoWTJVNklDZHViM2R5WVhBbkxGeHVJQ0FnSUgxOVhHNGdJQ0FnZXk0dUxuQnliM0J6ZlZ4dUlDQXZQbHh1S1R0Y2JseHVaWGh3YjNKMElHUmxabUYxYkhRZ1FURXhlVlJsZUhRN1hHNGlYWDA9ICovXCIsXG4gIHRvU3RyaW5nOiBfRU1PVElPTl9TVFJJTkdJRklFRF9DU1NfRVJST1JfXyQyXG59O1xudmFyIEExMXlUZXh0ID0gZnVuY3Rpb24gQTExeVRleHQocHJvcHMpIHtcbiAgcmV0dXJuIGpzeChcInNwYW5cIiwgX2V4dGVuZHMoe1xuICAgIGNzczogX3JlZlxuICB9LCBwcm9wcykpO1xufTtcbnZhciBBMTF5VGV4dCQxID0gQTExeVRleHQ7XG5cbnZhciBkZWZhdWx0QXJpYUxpdmVNZXNzYWdlcyA9IHtcbiAgZ3VpZGFuY2U6IGZ1bmN0aW9uIGd1aWRhbmNlKHByb3BzKSB7XG4gICAgdmFyIGlzU2VhcmNoYWJsZSA9IHByb3BzLmlzU2VhcmNoYWJsZSxcbiAgICAgIGlzTXVsdGkgPSBwcm9wcy5pc011bHRpLFxuICAgICAgdGFiU2VsZWN0c1ZhbHVlID0gcHJvcHMudGFiU2VsZWN0c1ZhbHVlLFxuICAgICAgY29udGV4dCA9IHByb3BzLmNvbnRleHQsXG4gICAgICBpc0luaXRpYWxGb2N1cyA9IHByb3BzLmlzSW5pdGlhbEZvY3VzO1xuICAgIHN3aXRjaCAoY29udGV4dCkge1xuICAgICAgY2FzZSAnbWVudSc6XG4gICAgICAgIHJldHVybiBcIlVzZSBVcCBhbmQgRG93biB0byBjaG9vc2Ugb3B0aW9ucywgcHJlc3MgRW50ZXIgdG8gc2VsZWN0IHRoZSBjdXJyZW50bHkgZm9jdXNlZCBvcHRpb24sIHByZXNzIEVzY2FwZSB0byBleGl0IHRoZSBtZW51XCIuY29uY2F0KHRhYlNlbGVjdHNWYWx1ZSA/ICcsIHByZXNzIFRhYiB0byBzZWxlY3QgdGhlIG9wdGlvbiBhbmQgZXhpdCB0aGUgbWVudScgOiAnJywgXCIuXCIpO1xuICAgICAgY2FzZSAnaW5wdXQnOlxuICAgICAgICByZXR1cm4gaXNJbml0aWFsRm9jdXMgPyBcIlwiLmNvbmNhdChwcm9wc1snYXJpYS1sYWJlbCddIHx8ICdTZWxlY3QnLCBcIiBpcyBmb2N1c2VkIFwiKS5jb25jYXQoaXNTZWFyY2hhYmxlID8gJyx0eXBlIHRvIHJlZmluZSBsaXN0JyA6ICcnLCBcIiwgcHJlc3MgRG93biB0byBvcGVuIHRoZSBtZW51LCBcIikuY29uY2F0KGlzTXVsdGkgPyAnIHByZXNzIGxlZnQgdG8gZm9jdXMgc2VsZWN0ZWQgdmFsdWVzJyA6ICcnKSA6ICcnO1xuICAgICAgY2FzZSAndmFsdWUnOlxuICAgICAgICByZXR1cm4gJ1VzZSBsZWZ0IGFuZCByaWdodCB0byB0b2dnbGUgYmV0d2VlbiBmb2N1c2VkIHZhbHVlcywgcHJlc3MgQmFja3NwYWNlIHRvIHJlbW92ZSB0aGUgY3VycmVudGx5IGZvY3VzZWQgdmFsdWUnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgfSxcbiAgb25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHByb3BzKSB7XG4gICAgdmFyIGFjdGlvbiA9IHByb3BzLmFjdGlvbixcbiAgICAgIF9wcm9wcyRsYWJlbCA9IHByb3BzLmxhYmVsLFxuICAgICAgbGFiZWwgPSBfcHJvcHMkbGFiZWwgPT09IHZvaWQgMCA/ICcnIDogX3Byb3BzJGxhYmVsLFxuICAgICAgbGFiZWxzID0gcHJvcHMubGFiZWxzLFxuICAgICAgaXNEaXNhYmxlZCA9IHByb3BzLmlzRGlzYWJsZWQ7XG4gICAgc3dpdGNoIChhY3Rpb24pIHtcbiAgICAgIGNhc2UgJ2Rlc2VsZWN0LW9wdGlvbic6XG4gICAgICBjYXNlICdwb3AtdmFsdWUnOlxuICAgICAgY2FzZSAncmVtb3ZlLXZhbHVlJzpcbiAgICAgICAgcmV0dXJuIFwib3B0aW9uIFwiLmNvbmNhdChsYWJlbCwgXCIsIGRlc2VsZWN0ZWQuXCIpO1xuICAgICAgY2FzZSAnY2xlYXInOlxuICAgICAgICByZXR1cm4gJ0FsbCBzZWxlY3RlZCBvcHRpb25zIGhhdmUgYmVlbiBjbGVhcmVkLic7XG4gICAgICBjYXNlICdpbml0aWFsLWlucHV0LWZvY3VzJzpcbiAgICAgICAgcmV0dXJuIFwib3B0aW9uXCIuY29uY2F0KGxhYmVscy5sZW5ndGggPiAxID8gJ3MnIDogJycsIFwiIFwiKS5jb25jYXQobGFiZWxzLmpvaW4oJywnKSwgXCIsIHNlbGVjdGVkLlwiKTtcbiAgICAgIGNhc2UgJ3NlbGVjdC1vcHRpb24nOlxuICAgICAgICByZXR1cm4gaXNEaXNhYmxlZCA/IFwib3B0aW9uIFwiLmNvbmNhdChsYWJlbCwgXCIgaXMgZGlzYWJsZWQuIFNlbGVjdCBhbm90aGVyIG9wdGlvbi5cIikgOiBcIm9wdGlvbiBcIi5jb25jYXQobGFiZWwsIFwiLCBzZWxlY3RlZC5cIik7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9LFxuICBvbkZvY3VzOiBmdW5jdGlvbiBvbkZvY3VzKHByb3BzKSB7XG4gICAgdmFyIGNvbnRleHQgPSBwcm9wcy5jb250ZXh0LFxuICAgICAgZm9jdXNlZCA9IHByb3BzLmZvY3VzZWQsXG4gICAgICBvcHRpb25zID0gcHJvcHMub3B0aW9ucyxcbiAgICAgIF9wcm9wcyRsYWJlbDIgPSBwcm9wcy5sYWJlbCxcbiAgICAgIGxhYmVsID0gX3Byb3BzJGxhYmVsMiA9PT0gdm9pZCAwID8gJycgOiBfcHJvcHMkbGFiZWwyLFxuICAgICAgc2VsZWN0VmFsdWUgPSBwcm9wcy5zZWxlY3RWYWx1ZSxcbiAgICAgIGlzRGlzYWJsZWQgPSBwcm9wcy5pc0Rpc2FibGVkLFxuICAgICAgaXNTZWxlY3RlZCA9IHByb3BzLmlzU2VsZWN0ZWQsXG4gICAgICBpc0FwcGxlRGV2aWNlID0gcHJvcHMuaXNBcHBsZURldmljZTtcbiAgICB2YXIgZ2V0QXJyYXlJbmRleCA9IGZ1bmN0aW9uIGdldEFycmF5SW5kZXgoYXJyLCBpdGVtKSB7XG4gICAgICByZXR1cm4gYXJyICYmIGFyci5sZW5ndGggPyBcIlwiLmNvbmNhdChhcnIuaW5kZXhPZihpdGVtKSArIDEsIFwiIG9mIFwiKS5jb25jYXQoYXJyLmxlbmd0aCkgOiAnJztcbiAgICB9O1xuICAgIGlmIChjb250ZXh0ID09PSAndmFsdWUnICYmIHNlbGVjdFZhbHVlKSB7XG4gICAgICByZXR1cm4gXCJ2YWx1ZSBcIi5jb25jYXQobGFiZWwsIFwiIGZvY3VzZWQsIFwiKS5jb25jYXQoZ2V0QXJyYXlJbmRleChzZWxlY3RWYWx1ZSwgZm9jdXNlZCksIFwiLlwiKTtcbiAgICB9XG4gICAgaWYgKGNvbnRleHQgPT09ICdtZW51JyAmJiBpc0FwcGxlRGV2aWNlKSB7XG4gICAgICB2YXIgZGlzYWJsZWQgPSBpc0Rpc2FibGVkID8gJyBkaXNhYmxlZCcgOiAnJztcbiAgICAgIHZhciBzdGF0dXMgPSBcIlwiLmNvbmNhdChpc1NlbGVjdGVkID8gJyBzZWxlY3RlZCcgOiAnJykuY29uY2F0KGRpc2FibGVkKTtcbiAgICAgIHJldHVybiBcIlwiLmNvbmNhdChsYWJlbCkuY29uY2F0KHN0YXR1cywgXCIsIFwiKS5jb25jYXQoZ2V0QXJyYXlJbmRleChvcHRpb25zLCBmb2N1c2VkKSwgXCIuXCIpO1xuICAgIH1cbiAgICByZXR1cm4gJyc7XG4gIH0sXG4gIG9uRmlsdGVyOiBmdW5jdGlvbiBvbkZpbHRlcihwcm9wcykge1xuICAgIHZhciBpbnB1dFZhbHVlID0gcHJvcHMuaW5wdXRWYWx1ZSxcbiAgICAgIHJlc3VsdHNNZXNzYWdlID0gcHJvcHMucmVzdWx0c01lc3NhZ2U7XG4gICAgcmV0dXJuIFwiXCIuY29uY2F0KHJlc3VsdHNNZXNzYWdlKS5jb25jYXQoaW5wdXRWYWx1ZSA/ICcgZm9yIHNlYXJjaCB0ZXJtICcgKyBpbnB1dFZhbHVlIDogJycsIFwiLlwiKTtcbiAgfVxufTtcblxudmFyIExpdmVSZWdpb24gPSBmdW5jdGlvbiBMaXZlUmVnaW9uKHByb3BzKSB7XG4gIHZhciBhcmlhU2VsZWN0aW9uID0gcHJvcHMuYXJpYVNlbGVjdGlvbixcbiAgICBmb2N1c2VkT3B0aW9uID0gcHJvcHMuZm9jdXNlZE9wdGlvbixcbiAgICBmb2N1c2VkVmFsdWUgPSBwcm9wcy5mb2N1c2VkVmFsdWUsXG4gICAgZm9jdXNhYmxlT3B0aW9ucyA9IHByb3BzLmZvY3VzYWJsZU9wdGlvbnMsXG4gICAgaXNGb2N1c2VkID0gcHJvcHMuaXNGb2N1c2VkLFxuICAgIHNlbGVjdFZhbHVlID0gcHJvcHMuc2VsZWN0VmFsdWUsXG4gICAgc2VsZWN0UHJvcHMgPSBwcm9wcy5zZWxlY3RQcm9wcyxcbiAgICBpZCA9IHByb3BzLmlkLFxuICAgIGlzQXBwbGVEZXZpY2UgPSBwcm9wcy5pc0FwcGxlRGV2aWNlO1xuICB2YXIgYXJpYUxpdmVNZXNzYWdlcyA9IHNlbGVjdFByb3BzLmFyaWFMaXZlTWVzc2FnZXMsXG4gICAgZ2V0T3B0aW9uTGFiZWwgPSBzZWxlY3RQcm9wcy5nZXRPcHRpb25MYWJlbCxcbiAgICBpbnB1dFZhbHVlID0gc2VsZWN0UHJvcHMuaW5wdXRWYWx1ZSxcbiAgICBpc011bHRpID0gc2VsZWN0UHJvcHMuaXNNdWx0aSxcbiAgICBpc09wdGlvbkRpc2FibGVkID0gc2VsZWN0UHJvcHMuaXNPcHRpb25EaXNhYmxlZCxcbiAgICBpc1NlYXJjaGFibGUgPSBzZWxlY3RQcm9wcy5pc1NlYXJjaGFibGUsXG4gICAgbWVudUlzT3BlbiA9IHNlbGVjdFByb3BzLm1lbnVJc09wZW4sXG4gICAgb3B0aW9ucyA9IHNlbGVjdFByb3BzLm9wdGlvbnMsXG4gICAgc2NyZWVuUmVhZGVyU3RhdHVzID0gc2VsZWN0UHJvcHMuc2NyZWVuUmVhZGVyU3RhdHVzLFxuICAgIHRhYlNlbGVjdHNWYWx1ZSA9IHNlbGVjdFByb3BzLnRhYlNlbGVjdHNWYWx1ZSxcbiAgICBpc0xvYWRpbmcgPSBzZWxlY3RQcm9wcy5pc0xvYWRpbmc7XG4gIHZhciBhcmlhTGFiZWwgPSBzZWxlY3RQcm9wc1snYXJpYS1sYWJlbCddO1xuICB2YXIgYXJpYUxpdmUgPSBzZWxlY3RQcm9wc1snYXJpYS1saXZlJ107XG5cbiAgLy8gVXBkYXRlIGFyaWEgbGl2ZSBtZXNzYWdlIGNvbmZpZ3VyYXRpb24gd2hlbiBwcm9wIGNoYW5nZXNcbiAgdmFyIG1lc3NhZ2VzID0gdXNlTWVtbyhmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgZGVmYXVsdEFyaWFMaXZlTWVzc2FnZXMpLCBhcmlhTGl2ZU1lc3NhZ2VzIHx8IHt9KTtcbiAgfSwgW2FyaWFMaXZlTWVzc2FnZXNdKTtcblxuICAvLyBVcGRhdGUgYXJpYSBsaXZlIHNlbGVjdGVkIG9wdGlvbiB3aGVuIHByb3AgY2hhbmdlc1xuICB2YXIgYXJpYVNlbGVjdGVkID0gdXNlTWVtbyhmdW5jdGlvbiAoKSB7XG4gICAgdmFyIG1lc3NhZ2UgPSAnJztcbiAgICBpZiAoYXJpYVNlbGVjdGlvbiAmJiBtZXNzYWdlcy5vbkNoYW5nZSkge1xuICAgICAgdmFyIG9wdGlvbiA9IGFyaWFTZWxlY3Rpb24ub3B0aW9uLFxuICAgICAgICBzZWxlY3RlZE9wdGlvbnMgPSBhcmlhU2VsZWN0aW9uLm9wdGlvbnMsXG4gICAgICAgIHJlbW92ZWRWYWx1ZSA9IGFyaWFTZWxlY3Rpb24ucmVtb3ZlZFZhbHVlLFxuICAgICAgICByZW1vdmVkVmFsdWVzID0gYXJpYVNlbGVjdGlvbi5yZW1vdmVkVmFsdWVzLFxuICAgICAgICB2YWx1ZSA9IGFyaWFTZWxlY3Rpb24udmFsdWU7XG4gICAgICAvLyBzZWxlY3Qtb3B0aW9uIHdoZW4gIWlzTXVsdGkgZG9lcyBub3QgcmV0dXJuIG9wdGlvbiBzbyB3ZSBhc3N1bWUgc2VsZWN0ZWQgb3B0aW9uIGlzIHZhbHVlXG4gICAgICB2YXIgYXNPcHRpb24gPSBmdW5jdGlvbiBhc09wdGlvbih2YWwpIHtcbiAgICAgICAgcmV0dXJuICFBcnJheS5pc0FycmF5KHZhbCkgPyB2YWwgOiBudWxsO1xuICAgICAgfTtcblxuICAgICAgLy8gSWYgdGhlcmUgaXMganVzdCBvbmUgaXRlbSBmcm9tIHRoZSBhY3Rpb24gdGhlbiBnZXQgaXRzIGxhYmVsXG4gICAgICB2YXIgc2VsZWN0ZWQgPSByZW1vdmVkVmFsdWUgfHwgb3B0aW9uIHx8IGFzT3B0aW9uKHZhbHVlKTtcbiAgICAgIHZhciBsYWJlbCA9IHNlbGVjdGVkID8gZ2V0T3B0aW9uTGFiZWwoc2VsZWN0ZWQpIDogJyc7XG5cbiAgICAgIC8vIElmIHRoZXJlIGFyZSBtdWx0aXBsZSBpdGVtcyBmcm9tIHRoZSBhY3Rpb24gdGhlbiByZXR1cm4gYW4gYXJyYXkgb2YgbGFiZWxzXG4gICAgICB2YXIgbXVsdGlTZWxlY3RlZCA9IHNlbGVjdGVkT3B0aW9ucyB8fCByZW1vdmVkVmFsdWVzIHx8IHVuZGVmaW5lZDtcbiAgICAgIHZhciBsYWJlbHMgPSBtdWx0aVNlbGVjdGVkID8gbXVsdGlTZWxlY3RlZC5tYXAoZ2V0T3B0aW9uTGFiZWwpIDogW107XG4gICAgICB2YXIgb25DaGFuZ2VQcm9wcyA9IF9vYmplY3RTcHJlYWQoe1xuICAgICAgICAvLyBtdWx0aVNlbGVjdGVkIGl0ZW1zIGFyZSB1c3VhbGx5IGl0ZW1zIHRoYXQgaGF2ZSBhbHJlYWR5IGJlZW4gc2VsZWN0ZWRcbiAgICAgICAgLy8gb3Igc2V0IGJ5IHRoZSB1c2VyIGFzIGEgZGVmYXVsdCB2YWx1ZSBzbyB3ZSBhc3N1bWUgdGhleSBhcmUgbm90IGRpc2FibGVkXG4gICAgICAgIGlzRGlzYWJsZWQ6IHNlbGVjdGVkICYmIGlzT3B0aW9uRGlzYWJsZWQoc2VsZWN0ZWQsIHNlbGVjdFZhbHVlKSxcbiAgICAgICAgbGFiZWw6IGxhYmVsLFxuICAgICAgICBsYWJlbHM6IGxhYmVsc1xuICAgICAgfSwgYXJpYVNlbGVjdGlvbik7XG4gICAgICBtZXNzYWdlID0gbWVzc2FnZXMub25DaGFuZ2Uob25DaGFuZ2VQcm9wcyk7XG4gICAgfVxuICAgIHJldHVybiBtZXNzYWdlO1xuICB9LCBbYXJpYVNlbGVjdGlvbiwgbWVzc2FnZXMsIGlzT3B0aW9uRGlzYWJsZWQsIHNlbGVjdFZhbHVlLCBnZXRPcHRpb25MYWJlbF0pO1xuICB2YXIgYXJpYUZvY3VzZWQgPSB1c2VNZW1vKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZm9jdXNNc2cgPSAnJztcbiAgICB2YXIgZm9jdXNlZCA9IGZvY3VzZWRPcHRpb24gfHwgZm9jdXNlZFZhbHVlO1xuICAgIHZhciBpc1NlbGVjdGVkID0gISEoZm9jdXNlZE9wdGlvbiAmJiBzZWxlY3RWYWx1ZSAmJiBzZWxlY3RWYWx1ZS5pbmNsdWRlcyhmb2N1c2VkT3B0aW9uKSk7XG4gICAgaWYgKGZvY3VzZWQgJiYgbWVzc2FnZXMub25Gb2N1cykge1xuICAgICAgdmFyIG9uRm9jdXNQcm9wcyA9IHtcbiAgICAgICAgZm9jdXNlZDogZm9jdXNlZCxcbiAgICAgICAgbGFiZWw6IGdldE9wdGlvbkxhYmVsKGZvY3VzZWQpLFxuICAgICAgICBpc0Rpc2FibGVkOiBpc09wdGlvbkRpc2FibGVkKGZvY3VzZWQsIHNlbGVjdFZhbHVlKSxcbiAgICAgICAgaXNTZWxlY3RlZDogaXNTZWxlY3RlZCxcbiAgICAgICAgb3B0aW9uczogZm9jdXNhYmxlT3B0aW9ucyxcbiAgICAgICAgY29udGV4dDogZm9jdXNlZCA9PT0gZm9jdXNlZE9wdGlvbiA/ICdtZW51JyA6ICd2YWx1ZScsXG4gICAgICAgIHNlbGVjdFZhbHVlOiBzZWxlY3RWYWx1ZSxcbiAgICAgICAgaXNBcHBsZURldmljZTogaXNBcHBsZURldmljZVxuICAgICAgfTtcbiAgICAgIGZvY3VzTXNnID0gbWVzc2FnZXMub25Gb2N1cyhvbkZvY3VzUHJvcHMpO1xuICAgIH1cbiAgICByZXR1cm4gZm9jdXNNc2c7XG4gIH0sIFtmb2N1c2VkT3B0aW9uLCBmb2N1c2VkVmFsdWUsIGdldE9wdGlvbkxhYmVsLCBpc09wdGlvbkRpc2FibGVkLCBtZXNzYWdlcywgZm9jdXNhYmxlT3B0aW9ucywgc2VsZWN0VmFsdWUsIGlzQXBwbGVEZXZpY2VdKTtcbiAgdmFyIGFyaWFSZXN1bHRzID0gdXNlTWVtbyhmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHJlc3VsdHNNc2cgPSAnJztcbiAgICBpZiAobWVudUlzT3BlbiAmJiBvcHRpb25zLmxlbmd0aCAmJiAhaXNMb2FkaW5nICYmIG1lc3NhZ2VzLm9uRmlsdGVyKSB7XG4gICAgICB2YXIgcmVzdWx0c01lc3NhZ2UgPSBzY3JlZW5SZWFkZXJTdGF0dXMoe1xuICAgICAgICBjb3VudDogZm9jdXNhYmxlT3B0aW9ucy5sZW5ndGhcbiAgICAgIH0pO1xuICAgICAgcmVzdWx0c01zZyA9IG1lc3NhZ2VzLm9uRmlsdGVyKHtcbiAgICAgICAgaW5wdXRWYWx1ZTogaW5wdXRWYWx1ZSxcbiAgICAgICAgcmVzdWx0c01lc3NhZ2U6IHJlc3VsdHNNZXNzYWdlXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdHNNc2c7XG4gIH0sIFtmb2N1c2FibGVPcHRpb25zLCBpbnB1dFZhbHVlLCBtZW51SXNPcGVuLCBtZXNzYWdlcywgb3B0aW9ucywgc2NyZWVuUmVhZGVyU3RhdHVzLCBpc0xvYWRpbmddKTtcbiAgdmFyIGlzSW5pdGlhbEZvY3VzID0gKGFyaWFTZWxlY3Rpb24gPT09IG51bGwgfHwgYXJpYVNlbGVjdGlvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogYXJpYVNlbGVjdGlvbi5hY3Rpb24pID09PSAnaW5pdGlhbC1pbnB1dC1mb2N1cyc7XG4gIHZhciBhcmlhR3VpZGFuY2UgPSB1c2VNZW1vKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZ3VpZGFuY2VNc2cgPSAnJztcbiAgICBpZiAobWVzc2FnZXMuZ3VpZGFuY2UpIHtcbiAgICAgIHZhciBjb250ZXh0ID0gZm9jdXNlZFZhbHVlID8gJ3ZhbHVlJyA6IG1lbnVJc09wZW4gPyAnbWVudScgOiAnaW5wdXQnO1xuICAgICAgZ3VpZGFuY2VNc2cgPSBtZXNzYWdlcy5ndWlkYW5jZSh7XG4gICAgICAgICdhcmlhLWxhYmVsJzogYXJpYUxhYmVsLFxuICAgICAgICBjb250ZXh0OiBjb250ZXh0LFxuICAgICAgICBpc0Rpc2FibGVkOiBmb2N1c2VkT3B0aW9uICYmIGlzT3B0aW9uRGlzYWJsZWQoZm9jdXNlZE9wdGlvbiwgc2VsZWN0VmFsdWUpLFxuICAgICAgICBpc011bHRpOiBpc011bHRpLFxuICAgICAgICBpc1NlYXJjaGFibGU6IGlzU2VhcmNoYWJsZSxcbiAgICAgICAgdGFiU2VsZWN0c1ZhbHVlOiB0YWJTZWxlY3RzVmFsdWUsXG4gICAgICAgIGlzSW5pdGlhbEZvY3VzOiBpc0luaXRpYWxGb2N1c1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBndWlkYW5jZU1zZztcbiAgfSwgW2FyaWFMYWJlbCwgZm9jdXNlZE9wdGlvbiwgZm9jdXNlZFZhbHVlLCBpc011bHRpLCBpc09wdGlvbkRpc2FibGVkLCBpc1NlYXJjaGFibGUsIG1lbnVJc09wZW4sIG1lc3NhZ2VzLCBzZWxlY3RWYWx1ZSwgdGFiU2VsZWN0c1ZhbHVlLCBpc0luaXRpYWxGb2N1c10pO1xuICB2YXIgU2NyZWVuUmVhZGVyVGV4dCA9IGpzeChGcmFnbWVudCwgbnVsbCwganN4KFwic3BhblwiLCB7XG4gICAgaWQ6IFwiYXJpYS1zZWxlY3Rpb25cIlxuICB9LCBhcmlhU2VsZWN0ZWQpLCBqc3goXCJzcGFuXCIsIHtcbiAgICBpZDogXCJhcmlhLWZvY3VzZWRcIlxuICB9LCBhcmlhRm9jdXNlZCksIGpzeChcInNwYW5cIiwge1xuICAgIGlkOiBcImFyaWEtcmVzdWx0c1wiXG4gIH0sIGFyaWFSZXN1bHRzKSwganN4KFwic3BhblwiLCB7XG4gICAgaWQ6IFwiYXJpYS1ndWlkYW5jZVwiXG4gIH0sIGFyaWFHdWlkYW5jZSkpO1xuICByZXR1cm4ganN4KEZyYWdtZW50LCBudWxsLCBqc3goQTExeVRleHQkMSwge1xuICAgIGlkOiBpZFxuICB9LCBpc0luaXRpYWxGb2N1cyAmJiBTY3JlZW5SZWFkZXJUZXh0KSwganN4KEExMXlUZXh0JDEsIHtcbiAgICBcImFyaWEtbGl2ZVwiOiBhcmlhTGl2ZSxcbiAgICBcImFyaWEtYXRvbWljXCI6IFwiZmFsc2VcIixcbiAgICBcImFyaWEtcmVsZXZhbnRcIjogXCJhZGRpdGlvbnMgdGV4dFwiLFxuICAgIHJvbGU6IFwibG9nXCJcbiAgfSwgaXNGb2N1c2VkICYmICFpc0luaXRpYWxGb2N1cyAmJiBTY3JlZW5SZWFkZXJUZXh0KSk7XG59O1xudmFyIExpdmVSZWdpb24kMSA9IExpdmVSZWdpb247XG5cbnZhciBkaWFjcml0aWNzID0gW3tcbiAgYmFzZTogJ0EnLFxuICBsZXR0ZXJzOiBcIkFcXHUyNEI2XFx1RkYyMVxceEMwXFx4QzFcXHhDMlxcdTFFQTZcXHUxRUE0XFx1MUVBQVxcdTFFQThcXHhDM1xcdTAxMDBcXHUwMTAyXFx1MUVCMFxcdTFFQUVcXHUxRUI0XFx1MUVCMlxcdTAyMjZcXHUwMUUwXFx4QzRcXHUwMURFXFx1MUVBMlxceEM1XFx1MDFGQVxcdTAxQ0RcXHUwMjAwXFx1MDIwMlxcdTFFQTBcXHUxRUFDXFx1MUVCNlxcdTFFMDBcXHUwMTA0XFx1MDIzQVxcdTJDNkZcIlxufSwge1xuICBiYXNlOiAnQUEnLFxuICBsZXR0ZXJzOiBcIlxcdUE3MzJcIlxufSwge1xuICBiYXNlOiAnQUUnLFxuICBsZXR0ZXJzOiBcIlxceEM2XFx1MDFGQ1xcdTAxRTJcIlxufSwge1xuICBiYXNlOiAnQU8nLFxuICBsZXR0ZXJzOiBcIlxcdUE3MzRcIlxufSwge1xuICBiYXNlOiAnQVUnLFxuICBsZXR0ZXJzOiBcIlxcdUE3MzZcIlxufSwge1xuICBiYXNlOiAnQVYnLFxuICBsZXR0ZXJzOiBcIlxcdUE3MzhcXHVBNzNBXCJcbn0sIHtcbiAgYmFzZTogJ0FZJyxcbiAgbGV0dGVyczogXCJcXHVBNzNDXCJcbn0sIHtcbiAgYmFzZTogJ0InLFxuICBsZXR0ZXJzOiBcIkJcXHUyNEI3XFx1RkYyMlxcdTFFMDJcXHUxRTA0XFx1MUUwNlxcdTAyNDNcXHUwMTgyXFx1MDE4MVwiXG59LCB7XG4gIGJhc2U6ICdDJyxcbiAgbGV0dGVyczogXCJDXFx1MjRCOFxcdUZGMjNcXHUwMTA2XFx1MDEwOFxcdTAxMEFcXHUwMTBDXFx4QzdcXHUxRTA4XFx1MDE4N1xcdTAyM0JcXHVBNzNFXCJcbn0sIHtcbiAgYmFzZTogJ0QnLFxuICBsZXR0ZXJzOiBcIkRcXHUyNEI5XFx1RkYyNFxcdTFFMEFcXHUwMTBFXFx1MUUwQ1xcdTFFMTBcXHUxRTEyXFx1MUUwRVxcdTAxMTBcXHUwMThCXFx1MDE4QVxcdTAxODlcXHVBNzc5XCJcbn0sIHtcbiAgYmFzZTogJ0RaJyxcbiAgbGV0dGVyczogXCJcXHUwMUYxXFx1MDFDNFwiXG59LCB7XG4gIGJhc2U6ICdEeicsXG4gIGxldHRlcnM6IFwiXFx1MDFGMlxcdTAxQzVcIlxufSwge1xuICBiYXNlOiAnRScsXG4gIGxldHRlcnM6IFwiRVxcdTI0QkFcXHVGRjI1XFx4QzhcXHhDOVxceENBXFx1MUVDMFxcdTFFQkVcXHUxRUM0XFx1MUVDMlxcdTFFQkNcXHUwMTEyXFx1MUUxNFxcdTFFMTZcXHUwMTE0XFx1MDExNlxceENCXFx1MUVCQVxcdTAxMUFcXHUwMjA0XFx1MDIwNlxcdTFFQjhcXHUxRUM2XFx1MDIyOFxcdTFFMUNcXHUwMTE4XFx1MUUxOFxcdTFFMUFcXHUwMTkwXFx1MDE4RVwiXG59LCB7XG4gIGJhc2U6ICdGJyxcbiAgbGV0dGVyczogXCJGXFx1MjRCQlxcdUZGMjZcXHUxRTFFXFx1MDE5MVxcdUE3N0JcIlxufSwge1xuICBiYXNlOiAnRycsXG4gIGxldHRlcnM6IFwiR1xcdTI0QkNcXHVGRjI3XFx1MDFGNFxcdTAxMUNcXHUxRTIwXFx1MDExRVxcdTAxMjBcXHUwMUU2XFx1MDEyMlxcdTAxRTRcXHUwMTkzXFx1QTdBMFxcdUE3N0RcXHVBNzdFXCJcbn0sIHtcbiAgYmFzZTogJ0gnLFxuICBsZXR0ZXJzOiBcIkhcXHUyNEJEXFx1RkYyOFxcdTAxMjRcXHUxRTIyXFx1MUUyNlxcdTAyMUVcXHUxRTI0XFx1MUUyOFxcdTFFMkFcXHUwMTI2XFx1MkM2N1xcdTJDNzVcXHVBNzhEXCJcbn0sIHtcbiAgYmFzZTogJ0knLFxuICBsZXR0ZXJzOiBcIklcXHUyNEJFXFx1RkYyOVxceENDXFx4Q0RcXHhDRVxcdTAxMjhcXHUwMTJBXFx1MDEyQ1xcdTAxMzBcXHhDRlxcdTFFMkVcXHUxRUM4XFx1MDFDRlxcdTAyMDhcXHUwMjBBXFx1MUVDQVxcdTAxMkVcXHUxRTJDXFx1MDE5N1wiXG59LCB7XG4gIGJhc2U6ICdKJyxcbiAgbGV0dGVyczogXCJKXFx1MjRCRlxcdUZGMkFcXHUwMTM0XFx1MDI0OFwiXG59LCB7XG4gIGJhc2U6ICdLJyxcbiAgbGV0dGVyczogXCJLXFx1MjRDMFxcdUZGMkJcXHUxRTMwXFx1MDFFOFxcdTFFMzJcXHUwMTM2XFx1MUUzNFxcdTAxOThcXHUyQzY5XFx1QTc0MFxcdUE3NDJcXHVBNzQ0XFx1QTdBMlwiXG59LCB7XG4gIGJhc2U6ICdMJyxcbiAgbGV0dGVyczogXCJMXFx1MjRDMVxcdUZGMkNcXHUwMTNGXFx1MDEzOVxcdTAxM0RcXHUxRTM2XFx1MUUzOFxcdTAxM0JcXHUxRTNDXFx1MUUzQVxcdTAxNDFcXHUwMjNEXFx1MkM2MlxcdTJDNjBcXHVBNzQ4XFx1QTc0NlxcdUE3ODBcIlxufSwge1xuICBiYXNlOiAnTEonLFxuICBsZXR0ZXJzOiBcIlxcdTAxQzdcIlxufSwge1xuICBiYXNlOiAnTGonLFxuICBsZXR0ZXJzOiBcIlxcdTAxQzhcIlxufSwge1xuICBiYXNlOiAnTScsXG4gIGxldHRlcnM6IFwiTVxcdTI0QzJcXHVGRjJEXFx1MUUzRVxcdTFFNDBcXHUxRTQyXFx1MkM2RVxcdTAxOUNcIlxufSwge1xuICBiYXNlOiAnTicsXG4gIGxldHRlcnM6IFwiTlxcdTI0QzNcXHVGRjJFXFx1MDFGOFxcdTAxNDNcXHhEMVxcdTFFNDRcXHUwMTQ3XFx1MUU0NlxcdTAxNDVcXHUxRTRBXFx1MUU0OFxcdTAyMjBcXHUwMTlEXFx1QTc5MFxcdUE3QTRcIlxufSwge1xuICBiYXNlOiAnTkonLFxuICBsZXR0ZXJzOiBcIlxcdTAxQ0FcIlxufSwge1xuICBiYXNlOiAnTmonLFxuICBsZXR0ZXJzOiBcIlxcdTAxQ0JcIlxufSwge1xuICBiYXNlOiAnTycsXG4gIGxldHRlcnM6IFwiT1xcdTI0QzRcXHVGRjJGXFx4RDJcXHhEM1xceEQ0XFx1MUVEMlxcdTFFRDBcXHUxRUQ2XFx1MUVENFxceEQ1XFx1MUU0Q1xcdTAyMkNcXHUxRTRFXFx1MDE0Q1xcdTFFNTBcXHUxRTUyXFx1MDE0RVxcdTAyMkVcXHUwMjMwXFx4RDZcXHUwMjJBXFx1MUVDRVxcdTAxNTBcXHUwMUQxXFx1MDIwQ1xcdTAyMEVcXHUwMUEwXFx1MUVEQ1xcdTFFREFcXHUxRUUwXFx1MUVERVxcdTFFRTJcXHUxRUNDXFx1MUVEOFxcdTAxRUFcXHUwMUVDXFx4RDhcXHUwMUZFXFx1MDE4NlxcdTAxOUZcXHVBNzRBXFx1QTc0Q1wiXG59LCB7XG4gIGJhc2U6ICdPSScsXG4gIGxldHRlcnM6IFwiXFx1MDFBMlwiXG59LCB7XG4gIGJhc2U6ICdPTycsXG4gIGxldHRlcnM6IFwiXFx1QTc0RVwiXG59LCB7XG4gIGJhc2U6ICdPVScsXG4gIGxldHRlcnM6IFwiXFx1MDIyMlwiXG59LCB7XG4gIGJhc2U6ICdQJyxcbiAgbGV0dGVyczogXCJQXFx1MjRDNVxcdUZGMzBcXHUxRTU0XFx1MUU1NlxcdTAxQTRcXHUyQzYzXFx1QTc1MFxcdUE3NTJcXHVBNzU0XCJcbn0sIHtcbiAgYmFzZTogJ1EnLFxuICBsZXR0ZXJzOiBcIlFcXHUyNEM2XFx1RkYzMVxcdUE3NTZcXHVBNzU4XFx1MDI0QVwiXG59LCB7XG4gIGJhc2U6ICdSJyxcbiAgbGV0dGVyczogXCJSXFx1MjRDN1xcdUZGMzJcXHUwMTU0XFx1MUU1OFxcdTAxNThcXHUwMjEwXFx1MDIxMlxcdTFFNUFcXHUxRTVDXFx1MDE1NlxcdTFFNUVcXHUwMjRDXFx1MkM2NFxcdUE3NUFcXHVBN0E2XFx1QTc4MlwiXG59LCB7XG4gIGJhc2U6ICdTJyxcbiAgbGV0dGVyczogXCJTXFx1MjRDOFxcdUZGMzNcXHUxRTlFXFx1MDE1QVxcdTFFNjRcXHUwMTVDXFx1MUU2MFxcdTAxNjBcXHUxRTY2XFx1MUU2MlxcdTFFNjhcXHUwMjE4XFx1MDE1RVxcdTJDN0VcXHVBN0E4XFx1QTc4NFwiXG59LCB7XG4gIGJhc2U6ICdUJyxcbiAgbGV0dGVyczogXCJUXFx1MjRDOVxcdUZGMzRcXHUxRTZBXFx1MDE2NFxcdTFFNkNcXHUwMjFBXFx1MDE2MlxcdTFFNzBcXHUxRTZFXFx1MDE2NlxcdTAxQUNcXHUwMUFFXFx1MDIzRVxcdUE3ODZcIlxufSwge1xuICBiYXNlOiAnVFonLFxuICBsZXR0ZXJzOiBcIlxcdUE3MjhcIlxufSwge1xuICBiYXNlOiAnVScsXG4gIGxldHRlcnM6IFwiVVxcdTI0Q0FcXHVGRjM1XFx4RDlcXHhEQVxceERCXFx1MDE2OFxcdTFFNzhcXHUwMTZBXFx1MUU3QVxcdTAxNkNcXHhEQ1xcdTAxREJcXHUwMUQ3XFx1MDFENVxcdTAxRDlcXHUxRUU2XFx1MDE2RVxcdTAxNzBcXHUwMUQzXFx1MDIxNFxcdTAyMTZcXHUwMUFGXFx1MUVFQVxcdTFFRThcXHUxRUVFXFx1MUVFQ1xcdTFFRjBcXHUxRUU0XFx1MUU3MlxcdTAxNzJcXHUxRTc2XFx1MUU3NFxcdTAyNDRcIlxufSwge1xuICBiYXNlOiAnVicsXG4gIGxldHRlcnM6IFwiVlxcdTI0Q0JcXHVGRjM2XFx1MUU3Q1xcdTFFN0VcXHUwMUIyXFx1QTc1RVxcdTAyNDVcIlxufSwge1xuICBiYXNlOiAnVlknLFxuICBsZXR0ZXJzOiBcIlxcdUE3NjBcIlxufSwge1xuICBiYXNlOiAnVycsXG4gIGxldHRlcnM6IFwiV1xcdTI0Q0NcXHVGRjM3XFx1MUU4MFxcdTFFODJcXHUwMTc0XFx1MUU4NlxcdTFFODRcXHUxRTg4XFx1MkM3MlwiXG59LCB7XG4gIGJhc2U6ICdYJyxcbiAgbGV0dGVyczogXCJYXFx1MjRDRFxcdUZGMzhcXHUxRThBXFx1MUU4Q1wiXG59LCB7XG4gIGJhc2U6ICdZJyxcbiAgbGV0dGVyczogXCJZXFx1MjRDRVxcdUZGMzlcXHUxRUYyXFx4RERcXHUwMTc2XFx1MUVGOFxcdTAyMzJcXHUxRThFXFx1MDE3OFxcdTFFRjZcXHUxRUY0XFx1MDFCM1xcdTAyNEVcXHUxRUZFXCJcbn0sIHtcbiAgYmFzZTogJ1onLFxuICBsZXR0ZXJzOiBcIlpcXHUyNENGXFx1RkYzQVxcdTAxNzlcXHUxRTkwXFx1MDE3QlxcdTAxN0RcXHUxRTkyXFx1MUU5NFxcdTAxQjVcXHUwMjI0XFx1MkM3RlxcdTJDNkJcXHVBNzYyXCJcbn0sIHtcbiAgYmFzZTogJ2EnLFxuICBsZXR0ZXJzOiBcImFcXHUyNEQwXFx1RkY0MVxcdTFFOUFcXHhFMFxceEUxXFx4RTJcXHUxRUE3XFx1MUVBNVxcdTFFQUJcXHUxRUE5XFx4RTNcXHUwMTAxXFx1MDEwM1xcdTFFQjFcXHUxRUFGXFx1MUVCNVxcdTFFQjNcXHUwMjI3XFx1MDFFMVxceEU0XFx1MDFERlxcdTFFQTNcXHhFNVxcdTAxRkJcXHUwMUNFXFx1MDIwMVxcdTAyMDNcXHUxRUExXFx1MUVBRFxcdTFFQjdcXHUxRTAxXFx1MDEwNVxcdTJDNjVcXHUwMjUwXCJcbn0sIHtcbiAgYmFzZTogJ2FhJyxcbiAgbGV0dGVyczogXCJcXHVBNzMzXCJcbn0sIHtcbiAgYmFzZTogJ2FlJyxcbiAgbGV0dGVyczogXCJcXHhFNlxcdTAxRkRcXHUwMUUzXCJcbn0sIHtcbiAgYmFzZTogJ2FvJyxcbiAgbGV0dGVyczogXCJcXHVBNzM1XCJcbn0sIHtcbiAgYmFzZTogJ2F1JyxcbiAgbGV0dGVyczogXCJcXHVBNzM3XCJcbn0sIHtcbiAgYmFzZTogJ2F2JyxcbiAgbGV0dGVyczogXCJcXHVBNzM5XFx1QTczQlwiXG59LCB7XG4gIGJhc2U6ICdheScsXG4gIGxldHRlcnM6IFwiXFx1QTczRFwiXG59LCB7XG4gIGJhc2U6ICdiJyxcbiAgbGV0dGVyczogXCJiXFx1MjREMVxcdUZGNDJcXHUxRTAzXFx1MUUwNVxcdTFFMDdcXHUwMTgwXFx1MDE4M1xcdTAyNTNcIlxufSwge1xuICBiYXNlOiAnYycsXG4gIGxldHRlcnM6IFwiY1xcdTI0RDJcXHVGRjQzXFx1MDEwN1xcdTAxMDlcXHUwMTBCXFx1MDEwRFxceEU3XFx1MUUwOVxcdTAxODhcXHUwMjNDXFx1QTczRlxcdTIxODRcIlxufSwge1xuICBiYXNlOiAnZCcsXG4gIGxldHRlcnM6IFwiZFxcdTI0RDNcXHVGRjQ0XFx1MUUwQlxcdTAxMEZcXHUxRTBEXFx1MUUxMVxcdTFFMTNcXHUxRTBGXFx1MDExMVxcdTAxOENcXHUwMjU2XFx1MDI1N1xcdUE3N0FcIlxufSwge1xuICBiYXNlOiAnZHonLFxuICBsZXR0ZXJzOiBcIlxcdTAxRjNcXHUwMUM2XCJcbn0sIHtcbiAgYmFzZTogJ2UnLFxuICBsZXR0ZXJzOiBcImVcXHUyNEQ0XFx1RkY0NVxceEU4XFx4RTlcXHhFQVxcdTFFQzFcXHUxRUJGXFx1MUVDNVxcdTFFQzNcXHUxRUJEXFx1MDExM1xcdTFFMTVcXHUxRTE3XFx1MDExNVxcdTAxMTdcXHhFQlxcdTFFQkJcXHUwMTFCXFx1MDIwNVxcdTAyMDdcXHUxRUI5XFx1MUVDN1xcdTAyMjlcXHUxRTFEXFx1MDExOVxcdTFFMTlcXHUxRTFCXFx1MDI0N1xcdTAyNUJcXHUwMUREXCJcbn0sIHtcbiAgYmFzZTogJ2YnLFxuICBsZXR0ZXJzOiBcImZcXHUyNEQ1XFx1RkY0NlxcdTFFMUZcXHUwMTkyXFx1QTc3Q1wiXG59LCB7XG4gIGJhc2U6ICdnJyxcbiAgbGV0dGVyczogXCJnXFx1MjRENlxcdUZGNDdcXHUwMUY1XFx1MDExRFxcdTFFMjFcXHUwMTFGXFx1MDEyMVxcdTAxRTdcXHUwMTIzXFx1MDFFNVxcdTAyNjBcXHVBN0ExXFx1MUQ3OVxcdUE3N0ZcIlxufSwge1xuICBiYXNlOiAnaCcsXG4gIGxldHRlcnM6IFwiaFxcdTI0RDdcXHVGRjQ4XFx1MDEyNVxcdTFFMjNcXHUxRTI3XFx1MDIxRlxcdTFFMjVcXHUxRTI5XFx1MUUyQlxcdTFFOTZcXHUwMTI3XFx1MkM2OFxcdTJDNzZcXHUwMjY1XCJcbn0sIHtcbiAgYmFzZTogJ2h2JyxcbiAgbGV0dGVyczogXCJcXHUwMTk1XCJcbn0sIHtcbiAgYmFzZTogJ2knLFxuICBsZXR0ZXJzOiBcImlcXHUyNEQ4XFx1RkY0OVxceEVDXFx4RURcXHhFRVxcdTAxMjlcXHUwMTJCXFx1MDEyRFxceEVGXFx1MUUyRlxcdTFFQzlcXHUwMUQwXFx1MDIwOVxcdTAyMEJcXHUxRUNCXFx1MDEyRlxcdTFFMkRcXHUwMjY4XFx1MDEzMVwiXG59LCB7XG4gIGJhc2U6ICdqJyxcbiAgbGV0dGVyczogXCJqXFx1MjREOVxcdUZGNEFcXHUwMTM1XFx1MDFGMFxcdTAyNDlcIlxufSwge1xuICBiYXNlOiAnaycsXG4gIGxldHRlcnM6IFwia1xcdTI0REFcXHVGRjRCXFx1MUUzMVxcdTAxRTlcXHUxRTMzXFx1MDEzN1xcdTFFMzVcXHUwMTk5XFx1MkM2QVxcdUE3NDFcXHVBNzQzXFx1QTc0NVxcdUE3QTNcIlxufSwge1xuICBiYXNlOiAnbCcsXG4gIGxldHRlcnM6IFwibFxcdTI0REJcXHVGRjRDXFx1MDE0MFxcdTAxM0FcXHUwMTNFXFx1MUUzN1xcdTFFMzlcXHUwMTNDXFx1MUUzRFxcdTFFM0JcXHUwMTdGXFx1MDE0MlxcdTAxOUFcXHUwMjZCXFx1MkM2MVxcdUE3NDlcXHVBNzgxXFx1QTc0N1wiXG59LCB7XG4gIGJhc2U6ICdsaicsXG4gIGxldHRlcnM6IFwiXFx1MDFDOVwiXG59LCB7XG4gIGJhc2U6ICdtJyxcbiAgbGV0dGVyczogXCJtXFx1MjREQ1xcdUZGNERcXHUxRTNGXFx1MUU0MVxcdTFFNDNcXHUwMjcxXFx1MDI2RlwiXG59LCB7XG4gIGJhc2U6ICduJyxcbiAgbGV0dGVyczogXCJuXFx1MjRERFxcdUZGNEVcXHUwMUY5XFx1MDE0NFxceEYxXFx1MUU0NVxcdTAxNDhcXHUxRTQ3XFx1MDE0NlxcdTFFNEJcXHUxRTQ5XFx1MDE5RVxcdTAyNzJcXHUwMTQ5XFx1QTc5MVxcdUE3QTVcIlxufSwge1xuICBiYXNlOiAnbmonLFxuICBsZXR0ZXJzOiBcIlxcdTAxQ0NcIlxufSwge1xuICBiYXNlOiAnbycsXG4gIGxldHRlcnM6IFwib1xcdTI0REVcXHVGRjRGXFx4RjJcXHhGM1xceEY0XFx1MUVEM1xcdTFFRDFcXHUxRUQ3XFx1MUVENVxceEY1XFx1MUU0RFxcdTAyMkRcXHUxRTRGXFx1MDE0RFxcdTFFNTFcXHUxRTUzXFx1MDE0RlxcdTAyMkZcXHUwMjMxXFx4RjZcXHUwMjJCXFx1MUVDRlxcdTAxNTFcXHUwMUQyXFx1MDIwRFxcdTAyMEZcXHUwMUExXFx1MUVERFxcdTFFREJcXHUxRUUxXFx1MUVERlxcdTFFRTNcXHUxRUNEXFx1MUVEOVxcdTAxRUJcXHUwMUVEXFx4RjhcXHUwMUZGXFx1MDI1NFxcdUE3NEJcXHVBNzREXFx1MDI3NVwiXG59LCB7XG4gIGJhc2U6ICdvaScsXG4gIGxldHRlcnM6IFwiXFx1MDFBM1wiXG59LCB7XG4gIGJhc2U6ICdvdScsXG4gIGxldHRlcnM6IFwiXFx1MDIyM1wiXG59LCB7XG4gIGJhc2U6ICdvbycsXG4gIGxldHRlcnM6IFwiXFx1QTc0RlwiXG59LCB7XG4gIGJhc2U6ICdwJyxcbiAgbGV0dGVyczogXCJwXFx1MjRERlxcdUZGNTBcXHUxRTU1XFx1MUU1N1xcdTAxQTVcXHUxRDdEXFx1QTc1MVxcdUE3NTNcXHVBNzU1XCJcbn0sIHtcbiAgYmFzZTogJ3EnLFxuICBsZXR0ZXJzOiBcInFcXHUyNEUwXFx1RkY1MVxcdTAyNEJcXHVBNzU3XFx1QTc1OVwiXG59LCB7XG4gIGJhc2U6ICdyJyxcbiAgbGV0dGVyczogXCJyXFx1MjRFMVxcdUZGNTJcXHUwMTU1XFx1MUU1OVxcdTAxNTlcXHUwMjExXFx1MDIxM1xcdTFFNUJcXHUxRTVEXFx1MDE1N1xcdTFFNUZcXHUwMjREXFx1MDI3RFxcdUE3NUJcXHVBN0E3XFx1QTc4M1wiXG59LCB7XG4gIGJhc2U6ICdzJyxcbiAgbGV0dGVyczogXCJzXFx1MjRFMlxcdUZGNTNcXHhERlxcdTAxNUJcXHUxRTY1XFx1MDE1RFxcdTFFNjFcXHUwMTYxXFx1MUU2N1xcdTFFNjNcXHUxRTY5XFx1MDIxOVxcdTAxNUZcXHUwMjNGXFx1QTdBOVxcdUE3ODVcXHUxRTlCXCJcbn0sIHtcbiAgYmFzZTogJ3QnLFxuICBsZXR0ZXJzOiBcInRcXHUyNEUzXFx1RkY1NFxcdTFFNkJcXHUxRTk3XFx1MDE2NVxcdTFFNkRcXHUwMjFCXFx1MDE2M1xcdTFFNzFcXHUxRTZGXFx1MDE2N1xcdTAxQURcXHUwMjg4XFx1MkM2NlxcdUE3ODdcIlxufSwge1xuICBiYXNlOiAndHonLFxuICBsZXR0ZXJzOiBcIlxcdUE3MjlcIlxufSwge1xuICBiYXNlOiAndScsXG4gIGxldHRlcnM6IFwidVxcdTI0RTRcXHVGRjU1XFx4RjlcXHhGQVxceEZCXFx1MDE2OVxcdTFFNzlcXHUwMTZCXFx1MUU3QlxcdTAxNkRcXHhGQ1xcdTAxRENcXHUwMUQ4XFx1MDFENlxcdTAxREFcXHUxRUU3XFx1MDE2RlxcdTAxNzFcXHUwMUQ0XFx1MDIxNVxcdTAyMTdcXHUwMUIwXFx1MUVFQlxcdTFFRTlcXHUxRUVGXFx1MUVFRFxcdTFFRjFcXHUxRUU1XFx1MUU3M1xcdTAxNzNcXHUxRTc3XFx1MUU3NVxcdTAyODlcIlxufSwge1xuICBiYXNlOiAndicsXG4gIGxldHRlcnM6IFwidlxcdTI0RTVcXHVGRjU2XFx1MUU3RFxcdTFFN0ZcXHUwMjhCXFx1QTc1RlxcdTAyOENcIlxufSwge1xuICBiYXNlOiAndnknLFxuICBsZXR0ZXJzOiBcIlxcdUE3NjFcIlxufSwge1xuICBiYXNlOiAndycsXG4gIGxldHRlcnM6IFwid1xcdTI0RTZcXHVGRjU3XFx1MUU4MVxcdTFFODNcXHUwMTc1XFx1MUU4N1xcdTFFODVcXHUxRTk4XFx1MUU4OVxcdTJDNzNcIlxufSwge1xuICBiYXNlOiAneCcsXG4gIGxldHRlcnM6IFwieFxcdTI0RTdcXHVGRjU4XFx1MUU4QlxcdTFFOERcIlxufSwge1xuICBiYXNlOiAneScsXG4gIGxldHRlcnM6IFwieVxcdTI0RThcXHVGRjU5XFx1MUVGM1xceEZEXFx1MDE3N1xcdTFFRjlcXHUwMjMzXFx1MUU4RlxceEZGXFx1MUVGN1xcdTFFOTlcXHUxRUY1XFx1MDFCNFxcdTAyNEZcXHUxRUZGXCJcbn0sIHtcbiAgYmFzZTogJ3onLFxuICBsZXR0ZXJzOiBcInpcXHUyNEU5XFx1RkY1QVxcdTAxN0FcXHUxRTkxXFx1MDE3Q1xcdTAxN0VcXHUxRTkzXFx1MUU5NVxcdTAxQjZcXHUwMjI1XFx1MDI0MFxcdTJDNkNcXHVBNzYzXCJcbn1dO1xudmFyIGFueURpYWNyaXRpYyA9IG5ldyBSZWdFeHAoJ1snICsgZGlhY3JpdGljcy5tYXAoZnVuY3Rpb24gKGQpIHtcbiAgcmV0dXJuIGQubGV0dGVycztcbn0pLmpvaW4oJycpICsgJ10nLCAnZycpO1xudmFyIGRpYWNyaXRpY1RvQmFzZSA9IHt9O1xuZm9yICh2YXIgaSA9IDA7IGkgPCBkaWFjcml0aWNzLmxlbmd0aDsgaSsrKSB7XG4gIHZhciBkaWFjcml0aWMgPSBkaWFjcml0aWNzW2ldO1xuICBmb3IgKHZhciBqID0gMDsgaiA8IGRpYWNyaXRpYy5sZXR0ZXJzLmxlbmd0aDsgaisrKSB7XG4gICAgZGlhY3JpdGljVG9CYXNlW2RpYWNyaXRpYy5sZXR0ZXJzW2pdXSA9IGRpYWNyaXRpYy5iYXNlO1xuICB9XG59XG52YXIgc3RyaXBEaWFjcml0aWNzID0gZnVuY3Rpb24gc3RyaXBEaWFjcml0aWNzKHN0cikge1xuICByZXR1cm4gc3RyLnJlcGxhY2UoYW55RGlhY3JpdGljLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICByZXR1cm4gZGlhY3JpdGljVG9CYXNlW21hdGNoXTtcbiAgfSk7XG59O1xuXG52YXIgbWVtb2l6ZWRTdHJpcERpYWNyaXRpY3NGb3JJbnB1dCA9IG1lbW9pemVPbmUoc3RyaXBEaWFjcml0aWNzKTtcbnZhciB0cmltU3RyaW5nID0gZnVuY3Rpb24gdHJpbVN0cmluZyhzdHIpIHtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKC9eXFxzK3xcXHMrJC9nLCAnJyk7XG59O1xudmFyIGRlZmF1bHRTdHJpbmdpZnkgPSBmdW5jdGlvbiBkZWZhdWx0U3RyaW5naWZ5KG9wdGlvbikge1xuICByZXR1cm4gXCJcIi5jb25jYXQob3B0aW9uLmxhYmVsLCBcIiBcIikuY29uY2F0KG9wdGlvbi52YWx1ZSk7XG59O1xudmFyIGNyZWF0ZUZpbHRlciA9IGZ1bmN0aW9uIGNyZWF0ZUZpbHRlcihjb25maWcpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChvcHRpb24sIHJhd0lucHV0KSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVyc2NvcmUtZGFuZ2xlXG4gICAgaWYgKG9wdGlvbi5kYXRhLl9faXNOZXdfXykgcmV0dXJuIHRydWU7XG4gICAgdmFyIF9pZ25vcmVDYXNlJGlnbm9yZUFjYyA9IF9vYmplY3RTcHJlYWQoe1xuICAgICAgICBpZ25vcmVDYXNlOiB0cnVlLFxuICAgICAgICBpZ25vcmVBY2NlbnRzOiB0cnVlLFxuICAgICAgICBzdHJpbmdpZnk6IGRlZmF1bHRTdHJpbmdpZnksXG4gICAgICAgIHRyaW06IHRydWUsXG4gICAgICAgIG1hdGNoRnJvbTogJ2FueSdcbiAgICAgIH0sIGNvbmZpZyksXG4gICAgICBpZ25vcmVDYXNlID0gX2lnbm9yZUNhc2UkaWdub3JlQWNjLmlnbm9yZUNhc2UsXG4gICAgICBpZ25vcmVBY2NlbnRzID0gX2lnbm9yZUNhc2UkaWdub3JlQWNjLmlnbm9yZUFjY2VudHMsXG4gICAgICBzdHJpbmdpZnkgPSBfaWdub3JlQ2FzZSRpZ25vcmVBY2Muc3RyaW5naWZ5LFxuICAgICAgdHJpbSA9IF9pZ25vcmVDYXNlJGlnbm9yZUFjYy50cmltLFxuICAgICAgbWF0Y2hGcm9tID0gX2lnbm9yZUNhc2UkaWdub3JlQWNjLm1hdGNoRnJvbTtcbiAgICB2YXIgaW5wdXQgPSB0cmltID8gdHJpbVN0cmluZyhyYXdJbnB1dCkgOiByYXdJbnB1dDtcbiAgICB2YXIgY2FuZGlkYXRlID0gdHJpbSA/IHRyaW1TdHJpbmcoc3RyaW5naWZ5KG9wdGlvbikpIDogc3RyaW5naWZ5KG9wdGlvbik7XG4gICAgaWYgKGlnbm9yZUNhc2UpIHtcbiAgICAgIGlucHV0ID0gaW5wdXQudG9Mb3dlckNhc2UoKTtcbiAgICAgIGNhbmRpZGF0ZSA9IGNhbmRpZGF0ZS50b0xvd2VyQ2FzZSgpO1xuICAgIH1cbiAgICBpZiAoaWdub3JlQWNjZW50cykge1xuICAgICAgaW5wdXQgPSBtZW1vaXplZFN0cmlwRGlhY3JpdGljc0ZvcklucHV0KGlucHV0KTtcbiAgICAgIGNhbmRpZGF0ZSA9IHN0cmlwRGlhY3JpdGljcyhjYW5kaWRhdGUpO1xuICAgIH1cbiAgICByZXR1cm4gbWF0Y2hGcm9tID09PSAnc3RhcnQnID8gY2FuZGlkYXRlLnN1YnN0cigwLCBpbnB1dC5sZW5ndGgpID09PSBpbnB1dCA6IGNhbmRpZGF0ZS5pbmRleE9mKGlucHV0KSA+IC0xO1xuICB9O1xufTtcblxudmFyIF9leGNsdWRlZCA9IFtcImlubmVyUmVmXCJdO1xuZnVuY3Rpb24gRHVtbXlJbnB1dChfcmVmKSB7XG4gIHZhciBpbm5lclJlZiA9IF9yZWYuaW5uZXJSZWYsXG4gICAgcHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3JlZiwgX2V4Y2x1ZGVkKTtcbiAgLy8gUmVtb3ZlIGFuaW1hdGlvbiBwcm9wcyBub3QgbWVhbnQgZm9yIEhUTUwgZWxlbWVudHNcbiAgdmFyIGZpbHRlcmVkUHJvcHMgPSByZW1vdmVQcm9wcyhwcm9wcywgJ29uRXhpdGVkJywgJ2luJywgJ2VudGVyJywgJ2V4aXQnLCAnYXBwZWFyJyk7XG4gIHJldHVybiBqc3goXCJpbnB1dFwiLCBfZXh0ZW5kcyh7XG4gICAgcmVmOiBpbm5lclJlZlxuICB9LCBmaWx0ZXJlZFByb3BzLCB7XG4gICAgY3NzOiAvKiNfX1BVUkVfXyovY3NzKHtcbiAgICAgIGxhYmVsOiAnZHVtbXlJbnB1dCcsXG4gICAgICAvLyBnZXQgcmlkIG9mIGFueSBkZWZhdWx0IHN0eWxlc1xuICAgICAgYmFja2dyb3VuZDogMCxcbiAgICAgIGJvcmRlcjogMCxcbiAgICAgIC8vIGltcG9ydGFudCEgdGhpcyBoaWRlcyB0aGUgZmxhc2hpbmcgY3Vyc29yXG4gICAgICBjYXJldENvbG9yOiAndHJhbnNwYXJlbnQnLFxuICAgICAgZm9udFNpemU6ICdpbmhlcml0JyxcbiAgICAgIGdyaWRBcmVhOiAnMSAvIDEgLyAyIC8gMycsXG4gICAgICBvdXRsaW5lOiAwLFxuICAgICAgcGFkZGluZzogMCxcbiAgICAgIC8vIGltcG9ydGFudCEgd2l0aG91dCBgd2lkdGhgIGJyb3dzZXJzIHdvbid0IGFsbG93IGZvY3VzXG4gICAgICB3aWR0aDogMSxcbiAgICAgIC8vIHJlbW92ZSBjdXJzb3Igb24gZGVza3RvcFxuICAgICAgY29sb3I6ICd0cmFuc3BhcmVudCcsXG4gICAgICAvLyByZW1vdmUgY3Vyc29yIG9uIG1vYmlsZSB3aGlsc3QgbWFpbnRhaW5pbmcgXCJzY3JvbGwgaW50byB2aWV3XCIgYmVoYXZpb3VyXG4gICAgICBsZWZ0OiAtMTAwLFxuICAgICAgb3BhY2l0eTogMCxcbiAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgdHJhbnNmb3JtOiAnc2NhbGUoLjAxKSdcbiAgICB9LCBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyBcIlwiIDogXCI7bGFiZWw6RHVtbXlJbnB1dDtcIiwgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8gXCJcIiA6IFwiLyojIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSWtSMWJXMTVTVzV3ZFhRdWRITjRJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSkJRWGxDVFNJc0ltWnBiR1VpT2lKRWRXMXRlVWx1Y0hWMExuUnplQ0lzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSWk4cUtpQkFhbk40SUdwemVDQXFMMXh1YVcxd2IzSjBJSHNnVW1WbUlIMGdabkp2YlNBbmNtVmhZM1FuTzF4dWFXMXdiM0owSUhzZ2FuTjRJSDBnWm5KdmJTQW5RR1Z0YjNScGIyNHZjbVZoWTNRbk8xeHVhVzF3YjNKMElIc2djbVZ0YjNabFVISnZjSE1nZlNCbWNtOXRJQ2N1TGk5MWRHbHNjeWM3WEc1Y2JtVjRjRzl5ZENCa1pXWmhkV3gwSUdaMWJtTjBhVzl1SUVSMWJXMTVTVzV3ZFhRb2UxeHVJQ0JwYm01bGNsSmxaaXhjYmlBZ0xpNHVjSEp2Y0hOY2JuMDZJRXBUV0M1SmJuUnlhVzV6YVdORmJHVnRaVzUwYzFzbmFXNXdkWFFuWFNBbUlIdGNiaUFnY21WaFpHOXViSGtnYVc1dVpYSlNaV1k2SUZKbFpqeElWRTFNU1c1d2RYUkZiR1Z0Wlc1MFBqdGNibjBwSUh0Y2JpQWdMeThnVW1WdGIzWmxJR0Z1YVcxaGRHbHZiaUJ3Y205d2N5QnViM1FnYldWaGJuUWdabTl5SUVoVVRVd2daV3hsYldWdWRITmNiaUFnWTI5dWMzUWdabWxzZEdWeVpXUlFjbTl3Y3lBOUlISmxiVzkyWlZCeWIzQnpLRnh1SUNBZ0lIQnliM0J6TEZ4dUlDQWdJQ2R2YmtWNGFYUmxaQ2NzWEc0Z0lDQWdKMmx1Snl4Y2JpQWdJQ0FuWlc1MFpYSW5MRnh1SUNBZ0lDZGxlR2wwSnl4Y2JpQWdJQ0FuWVhCd1pXRnlKMXh1SUNBcE8xeHVYRzRnSUhKbGRIVnliaUFvWEc0Z0lDQWdQR2x1Y0hWMFhHNGdJQ0FnSUNCeVpXWTllMmx1Ym1WeVVtVm1mVnh1SUNBZ0lDQWdleTR1TG1acGJIUmxjbVZrVUhKdmNITjlYRzRnSUNBZ0lDQmpjM005ZTN0Y2JpQWdJQ0FnSUNBZ2JHRmlaV3c2SUNka2RXMXRlVWx1Y0hWMEp5eGNiaUFnSUNBZ0lDQWdMeThnWjJWMElISnBaQ0J2WmlCaGJua2daR1ZtWVhWc2RDQnpkSGxzWlhOY2JpQWdJQ0FnSUNBZ1ltRmphMmR5YjNWdVpEb2dNQ3hjYmlBZ0lDQWdJQ0FnWW05eVpHVnlPaUF3TEZ4dUlDQWdJQ0FnSUNBdkx5QnBiWEJ2Y25SaGJuUWhJSFJvYVhNZ2FHbGtaWE1nZEdobElHWnNZWE5vYVc1bklHTjFjbk52Y2x4dUlDQWdJQ0FnSUNCallYSmxkRU52Ykc5eU9pQW5kSEpoYm5Od1lYSmxiblFuTEZ4dUlDQWdJQ0FnSUNCbWIyNTBVMmw2WlRvZ0oybHVhR1Z5YVhRbkxGeHVJQ0FnSUNBZ0lDQm5jbWxrUVhKbFlUb2dKekVnTHlBeElDOGdNaUF2SURNbkxGeHVJQ0FnSUNBZ0lDQnZkWFJzYVc1bE9pQXdMRnh1SUNBZ0lDQWdJQ0J3WVdSa2FXNW5PaUF3TEZ4dUlDQWdJQ0FnSUNBdkx5QnBiWEJ2Y25SaGJuUWhJSGRwZEdodmRYUWdZSGRwWkhSb1lDQmljbTkzYzJWeWN5QjNiMjRuZENCaGJHeHZkeUJtYjJOMWMxeHVJQ0FnSUNBZ0lDQjNhV1IwYURvZ01TeGNibHh1SUNBZ0lDQWdJQ0F2THlCeVpXMXZkbVVnWTNWeWMyOXlJRzl1SUdSbGMydDBiM0JjYmlBZ0lDQWdJQ0FnWTI5c2IzSTZJQ2QwY21GdWMzQmhjbVZ1ZENjc1hHNWNiaUFnSUNBZ0lDQWdMeThnY21WdGIzWmxJR04xY25OdmNpQnZiaUJ0YjJKcGJHVWdkMmhwYkhOMElHMWhhVzUwWVdsdWFXNW5JRndpYzJOeWIyeHNJR2x1ZEc4Z2RtbGxkMXdpSUdKbGFHRjJhVzkxY2x4dUlDQWdJQ0FnSUNCc1pXWjBPaUF0TVRBd0xGeHVJQ0FnSUNBZ0lDQnZjR0ZqYVhSNU9pQXdMRnh1SUNBZ0lDQWdJQ0J3YjNOcGRHbHZiam9nSjNKbGJHRjBhWFpsSnl4Y2JpQWdJQ0FnSUNBZ2RISmhibk5tYjNKdE9pQW5jMk5oYkdVb0xqQXhLU2NzWEc0Z0lDQWdJQ0I5ZlZ4dUlDQWdJQzgrWEc0Z0lDazdYRzU5WEc0aVhYMD0gKi9cIilcbiAgfSkpO1xufVxuXG52YXIgY2FuY2VsU2Nyb2xsID0gZnVuY3Rpb24gY2FuY2VsU2Nyb2xsKGV2ZW50KSB7XG4gIGlmIChldmVudC5jYW5jZWxhYmxlKSBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbn07XG5mdW5jdGlvbiB1c2VTY3JvbGxDYXB0dXJlKF9yZWYpIHtcbiAgdmFyIGlzRW5hYmxlZCA9IF9yZWYuaXNFbmFibGVkLFxuICAgIG9uQm90dG9tQXJyaXZlID0gX3JlZi5vbkJvdHRvbUFycml2ZSxcbiAgICBvbkJvdHRvbUxlYXZlID0gX3JlZi5vbkJvdHRvbUxlYXZlLFxuICAgIG9uVG9wQXJyaXZlID0gX3JlZi5vblRvcEFycml2ZSxcbiAgICBvblRvcExlYXZlID0gX3JlZi5vblRvcExlYXZlO1xuICB2YXIgaXNCb3R0b20gPSB1c2VSZWYoZmFsc2UpO1xuICB2YXIgaXNUb3AgPSB1c2VSZWYoZmFsc2UpO1xuICB2YXIgdG91Y2hTdGFydCA9IHVzZVJlZigwKTtcbiAgdmFyIHNjcm9sbFRhcmdldCA9IHVzZVJlZihudWxsKTtcbiAgdmFyIGhhbmRsZUV2ZW50RGVsdGEgPSB1c2VDYWxsYmFjayhmdW5jdGlvbiAoZXZlbnQsIGRlbHRhKSB7XG4gICAgaWYgKHNjcm9sbFRhcmdldC5jdXJyZW50ID09PSBudWxsKSByZXR1cm47XG4gICAgdmFyIF9zY3JvbGxUYXJnZXQkY3VycmVudCA9IHNjcm9sbFRhcmdldC5jdXJyZW50LFxuICAgICAgc2Nyb2xsVG9wID0gX3Njcm9sbFRhcmdldCRjdXJyZW50LnNjcm9sbFRvcCxcbiAgICAgIHNjcm9sbEhlaWdodCA9IF9zY3JvbGxUYXJnZXQkY3VycmVudC5zY3JvbGxIZWlnaHQsXG4gICAgICBjbGllbnRIZWlnaHQgPSBfc2Nyb2xsVGFyZ2V0JGN1cnJlbnQuY2xpZW50SGVpZ2h0O1xuICAgIHZhciB0YXJnZXQgPSBzY3JvbGxUYXJnZXQuY3VycmVudDtcbiAgICB2YXIgaXNEZWx0YVBvc2l0aXZlID0gZGVsdGEgPiAwO1xuICAgIHZhciBhdmFpbGFibGVTY3JvbGwgPSBzY3JvbGxIZWlnaHQgLSBjbGllbnRIZWlnaHQgLSBzY3JvbGxUb3A7XG4gICAgdmFyIHNob3VsZENhbmNlbFNjcm9sbCA9IGZhbHNlO1xuXG4gICAgLy8gcmVzZXQgYm90dG9tL3RvcCBmbGFnc1xuICAgIGlmIChhdmFpbGFibGVTY3JvbGwgPiBkZWx0YSAmJiBpc0JvdHRvbS5jdXJyZW50KSB7XG4gICAgICBpZiAob25Cb3R0b21MZWF2ZSkgb25Cb3R0b21MZWF2ZShldmVudCk7XG4gICAgICBpc0JvdHRvbS5jdXJyZW50ID0gZmFsc2U7XG4gICAgfVxuICAgIGlmIChpc0RlbHRhUG9zaXRpdmUgJiYgaXNUb3AuY3VycmVudCkge1xuICAgICAgaWYgKG9uVG9wTGVhdmUpIG9uVG9wTGVhdmUoZXZlbnQpO1xuICAgICAgaXNUb3AuY3VycmVudCA9IGZhbHNlO1xuICAgIH1cblxuICAgIC8vIGJvdHRvbSBsaW1pdFxuICAgIGlmIChpc0RlbHRhUG9zaXRpdmUgJiYgZGVsdGEgPiBhdmFpbGFibGVTY3JvbGwpIHtcbiAgICAgIGlmIChvbkJvdHRvbUFycml2ZSAmJiAhaXNCb3R0b20uY3VycmVudCkge1xuICAgICAgICBvbkJvdHRvbUFycml2ZShldmVudCk7XG4gICAgICB9XG4gICAgICB0YXJnZXQuc2Nyb2xsVG9wID0gc2Nyb2xsSGVpZ2h0O1xuICAgICAgc2hvdWxkQ2FuY2VsU2Nyb2xsID0gdHJ1ZTtcbiAgICAgIGlzQm90dG9tLmN1cnJlbnQgPSB0cnVlO1xuXG4gICAgICAvLyB0b3AgbGltaXRcbiAgICB9IGVsc2UgaWYgKCFpc0RlbHRhUG9zaXRpdmUgJiYgLWRlbHRhID4gc2Nyb2xsVG9wKSB7XG4gICAgICBpZiAob25Ub3BBcnJpdmUgJiYgIWlzVG9wLmN1cnJlbnQpIHtcbiAgICAgICAgb25Ub3BBcnJpdmUoZXZlbnQpO1xuICAgICAgfVxuICAgICAgdGFyZ2V0LnNjcm9sbFRvcCA9IDA7XG4gICAgICBzaG91bGRDYW5jZWxTY3JvbGwgPSB0cnVlO1xuICAgICAgaXNUb3AuY3VycmVudCA9IHRydWU7XG4gICAgfVxuXG4gICAgLy8gY2FuY2VsIHNjcm9sbFxuICAgIGlmIChzaG91bGRDYW5jZWxTY3JvbGwpIHtcbiAgICAgIGNhbmNlbFNjcm9sbChldmVudCk7XG4gICAgfVxuICB9LCBbb25Cb3R0b21BcnJpdmUsIG9uQm90dG9tTGVhdmUsIG9uVG9wQXJyaXZlLCBvblRvcExlYXZlXSk7XG4gIHZhciBvbldoZWVsID0gdXNlQ2FsbGJhY2soZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgaGFuZGxlRXZlbnREZWx0YShldmVudCwgZXZlbnQuZGVsdGFZKTtcbiAgfSwgW2hhbmRsZUV2ZW50RGVsdGFdKTtcbiAgdmFyIG9uVG91Y2hTdGFydCA9IHVzZUNhbGxiYWNrKGZ1bmN0aW9uIChldmVudCkge1xuICAgIC8vIHNldCB0b3VjaCBzdGFydCBzbyB3ZSBjYW4gY2FsY3VsYXRlIHRvdWNobW92ZSBkZWx0YVxuICAgIHRvdWNoU3RhcnQuY3VycmVudCA9IGV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdLmNsaWVudFk7XG4gIH0sIFtdKTtcbiAgdmFyIG9uVG91Y2hNb3ZlID0gdXNlQ2FsbGJhY2soZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgdmFyIGRlbHRhWSA9IHRvdWNoU3RhcnQuY3VycmVudCAtIGV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdLmNsaWVudFk7XG4gICAgaGFuZGxlRXZlbnREZWx0YShldmVudCwgZGVsdGFZKTtcbiAgfSwgW2hhbmRsZUV2ZW50RGVsdGFdKTtcbiAgdmFyIHN0YXJ0TGlzdGVuaW5nID0gdXNlQ2FsbGJhY2soZnVuY3Rpb24gKGVsKSB7XG4gICAgLy8gYmFpbCBlYXJseSBpZiBubyBlbGVtZW50IGlzIGF2YWlsYWJsZSB0byBhdHRhY2ggdG9cbiAgICBpZiAoIWVsKSByZXR1cm47XG4gICAgdmFyIG5vdFBhc3NpdmUgPSBzdXBwb3J0c1Bhc3NpdmVFdmVudHMgPyB7XG4gICAgICBwYXNzaXZlOiBmYWxzZVxuICAgIH0gOiBmYWxzZTtcbiAgICBlbC5hZGRFdmVudExpc3RlbmVyKCd3aGVlbCcsIG9uV2hlZWwsIG5vdFBhc3NpdmUpO1xuICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCBvblRvdWNoU3RhcnQsIG5vdFBhc3NpdmUpO1xuICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIG9uVG91Y2hNb3ZlLCBub3RQYXNzaXZlKTtcbiAgfSwgW29uVG91Y2hNb3ZlLCBvblRvdWNoU3RhcnQsIG9uV2hlZWxdKTtcbiAgdmFyIHN0b3BMaXN0ZW5pbmcgPSB1c2VDYWxsYmFjayhmdW5jdGlvbiAoZWwpIHtcbiAgICAvLyBiYWlsIGVhcmx5IGlmIG5vIGVsZW1lbnQgaXMgYXZhaWxhYmxlIHRvIGRldGFjaCBmcm9tXG4gICAgaWYgKCFlbCkgcmV0dXJuO1xuICAgIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3doZWVsJywgb25XaGVlbCwgZmFsc2UpO1xuICAgIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCBvblRvdWNoU3RhcnQsIGZhbHNlKTtcbiAgICBlbC5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaG1vdmUnLCBvblRvdWNoTW92ZSwgZmFsc2UpO1xuICB9LCBbb25Ub3VjaE1vdmUsIG9uVG91Y2hTdGFydCwgb25XaGVlbF0pO1xuICB1c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgIGlmICghaXNFbmFibGVkKSByZXR1cm47XG4gICAgdmFyIGVsZW1lbnQgPSBzY3JvbGxUYXJnZXQuY3VycmVudDtcbiAgICBzdGFydExpc3RlbmluZyhlbGVtZW50KTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgc3RvcExpc3RlbmluZyhlbGVtZW50KTtcbiAgICB9O1xuICB9LCBbaXNFbmFibGVkLCBzdGFydExpc3RlbmluZywgc3RvcExpc3RlbmluZ10pO1xuICByZXR1cm4gZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICBzY3JvbGxUYXJnZXQuY3VycmVudCA9IGVsZW1lbnQ7XG4gIH07XG59XG5cbnZhciBTVFlMRV9LRVlTID0gWydib3hTaXppbmcnLCAnaGVpZ2h0JywgJ292ZXJmbG93JywgJ3BhZGRpbmdSaWdodCcsICdwb3NpdGlvbiddO1xudmFyIExPQ0tfU1RZTEVTID0ge1xuICBib3hTaXppbmc6ICdib3JkZXItYm94JyxcbiAgLy8gYWNjb3VudCBmb3IgcG9zc2libGUgZGVjbGFyYXRpb24gYHdpZHRoOiAxMDAlO2Agb24gYm9keVxuICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICBoZWlnaHQ6ICcxMDAlJ1xufTtcbmZ1bmN0aW9uIHByZXZlbnRUb3VjaE1vdmUoZSkge1xuICBpZiAoZS5jYW5jZWxhYmxlKSBlLnByZXZlbnREZWZhdWx0KCk7XG59XG5mdW5jdGlvbiBhbGxvd1RvdWNoTW92ZShlKSB7XG4gIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG59XG5mdW5jdGlvbiBwcmV2ZW50SW5lcnRpYVNjcm9sbCgpIHtcbiAgdmFyIHRvcCA9IHRoaXMuc2Nyb2xsVG9wO1xuICB2YXIgdG90YWxTY3JvbGwgPSB0aGlzLnNjcm9sbEhlaWdodDtcbiAgdmFyIGN1cnJlbnRTY3JvbGwgPSB0b3AgKyB0aGlzLm9mZnNldEhlaWdodDtcbiAgaWYgKHRvcCA9PT0gMCkge1xuICAgIHRoaXMuc2Nyb2xsVG9wID0gMTtcbiAgfSBlbHNlIGlmIChjdXJyZW50U2Nyb2xsID09PSB0b3RhbFNjcm9sbCkge1xuICAgIHRoaXMuc2Nyb2xsVG9wID0gdG9wIC0gMTtcbiAgfVxufVxuXG4vLyBgb250b3VjaHN0YXJ0YCBjaGVjayB3b3JrcyBvbiBtb3N0IGJyb3dzZXJzXG4vLyBgbWF4VG91Y2hQb2ludHNgIHdvcmtzIG9uIElFMTAvMTEgYW5kIFN1cmZhY2VcbmZ1bmN0aW9uIGlzVG91Y2hEZXZpY2UoKSB7XG4gIHJldHVybiAnb250b3VjaHN0YXJ0JyBpbiB3aW5kb3cgfHwgbmF2aWdhdG9yLm1heFRvdWNoUG9pbnRzO1xufVxudmFyIGNhblVzZURPTSA9ICEhKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5kb2N1bWVudCAmJiB3aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCk7XG52YXIgYWN0aXZlU2Nyb2xsTG9ja3MgPSAwO1xudmFyIGxpc3RlbmVyT3B0aW9ucyA9IHtcbiAgY2FwdHVyZTogZmFsc2UsXG4gIHBhc3NpdmU6IGZhbHNlXG59O1xuZnVuY3Rpb24gdXNlU2Nyb2xsTG9jayhfcmVmKSB7XG4gIHZhciBpc0VuYWJsZWQgPSBfcmVmLmlzRW5hYmxlZCxcbiAgICBfcmVmJGFjY291bnRGb3JTY3JvbGwgPSBfcmVmLmFjY291bnRGb3JTY3JvbGxiYXJzLFxuICAgIGFjY291bnRGb3JTY3JvbGxiYXJzID0gX3JlZiRhY2NvdW50Rm9yU2Nyb2xsID09PSB2b2lkIDAgPyB0cnVlIDogX3JlZiRhY2NvdW50Rm9yU2Nyb2xsO1xuICB2YXIgb3JpZ2luYWxTdHlsZXMgPSB1c2VSZWYoe30pO1xuICB2YXIgc2Nyb2xsVGFyZ2V0ID0gdXNlUmVmKG51bGwpO1xuICB2YXIgYWRkU2Nyb2xsTG9jayA9IHVzZUNhbGxiYWNrKGZ1bmN0aW9uICh0b3VjaFNjcm9sbFRhcmdldCkge1xuICAgIGlmICghY2FuVXNlRE9NKSByZXR1cm47XG4gICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LmJvZHk7XG4gICAgdmFyIHRhcmdldFN0eWxlID0gdGFyZ2V0ICYmIHRhcmdldC5zdHlsZTtcbiAgICBpZiAoYWNjb3VudEZvclNjcm9sbGJhcnMpIHtcbiAgICAgIC8vIHN0b3JlIGFueSBzdHlsZXMgYWxyZWFkeSBhcHBsaWVkIHRvIHRoZSBib2R5XG4gICAgICBTVFlMRV9LRVlTLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICB2YXIgdmFsID0gdGFyZ2V0U3R5bGUgJiYgdGFyZ2V0U3R5bGVba2V5XTtcbiAgICAgICAgb3JpZ2luYWxTdHlsZXMuY3VycmVudFtrZXldID0gdmFsO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gYXBwbHkgdGhlIGxvY2sgc3R5bGVzIGFuZCBwYWRkaW5nIGlmIHRoaXMgaXMgdGhlIGZpcnN0IHNjcm9sbCBsb2NrXG4gICAgaWYgKGFjY291bnRGb3JTY3JvbGxiYXJzICYmIGFjdGl2ZVNjcm9sbExvY2tzIDwgMSkge1xuICAgICAgdmFyIGN1cnJlbnRQYWRkaW5nID0gcGFyc2VJbnQob3JpZ2luYWxTdHlsZXMuY3VycmVudC5wYWRkaW5nUmlnaHQsIDEwKSB8fCAwO1xuICAgICAgdmFyIGNsaWVudFdpZHRoID0gZG9jdW1lbnQuYm9keSA/IGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGggOiAwO1xuICAgICAgdmFyIGFkanVzdGVkUGFkZGluZyA9IHdpbmRvdy5pbm5lcldpZHRoIC0gY2xpZW50V2lkdGggKyBjdXJyZW50UGFkZGluZyB8fCAwO1xuICAgICAgT2JqZWN0LmtleXMoTE9DS19TVFlMRVMpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICB2YXIgdmFsID0gTE9DS19TVFlMRVNba2V5XTtcbiAgICAgICAgaWYgKHRhcmdldFN0eWxlKSB7XG4gICAgICAgICAgdGFyZ2V0U3R5bGVba2V5XSA9IHZhbDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBpZiAodGFyZ2V0U3R5bGUpIHtcbiAgICAgICAgdGFyZ2V0U3R5bGUucGFkZGluZ1JpZ2h0ID0gXCJcIi5jb25jYXQoYWRqdXN0ZWRQYWRkaW5nLCBcInB4XCIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGFjY291bnQgZm9yIHRvdWNoIGRldmljZXNcbiAgICBpZiAodGFyZ2V0ICYmIGlzVG91Y2hEZXZpY2UoKSkge1xuICAgICAgLy8gTW9iaWxlIFNhZmFyaSBpZ25vcmVzIHsgb3ZlcmZsb3c6IGhpZGRlbiB9IGRlY2xhcmF0aW9uIG9uIHRoZSBib2R5LlxuICAgICAgdGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIHByZXZlbnRUb3VjaE1vdmUsIGxpc3RlbmVyT3B0aW9ucyk7XG5cbiAgICAgIC8vIEFsbG93IHNjcm9sbCBvbiBwcm92aWRlZCB0YXJnZXRcbiAgICAgIGlmICh0b3VjaFNjcm9sbFRhcmdldCkge1xuICAgICAgICB0b3VjaFNjcm9sbFRhcmdldC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgcHJldmVudEluZXJ0aWFTY3JvbGwsIGxpc3RlbmVyT3B0aW9ucyk7XG4gICAgICAgIHRvdWNoU2Nyb2xsVGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIGFsbG93VG91Y2hNb3ZlLCBsaXN0ZW5lck9wdGlvbnMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGluY3JlbWVudCBhY3RpdmUgc2Nyb2xsIGxvY2tzXG4gICAgYWN0aXZlU2Nyb2xsTG9ja3MgKz0gMTtcbiAgfSwgW2FjY291bnRGb3JTY3JvbGxiYXJzXSk7XG4gIHZhciByZW1vdmVTY3JvbGxMb2NrID0gdXNlQ2FsbGJhY2soZnVuY3Rpb24gKHRvdWNoU2Nyb2xsVGFyZ2V0KSB7XG4gICAgaWYgKCFjYW5Vc2VET00pIHJldHVybjtcbiAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuYm9keTtcbiAgICB2YXIgdGFyZ2V0U3R5bGUgPSB0YXJnZXQgJiYgdGFyZ2V0LnN0eWxlO1xuXG4gICAgLy8gc2FmZWx5IGRlY3JlbWVudCBhY3RpdmUgc2Nyb2xsIGxvY2tzXG4gICAgYWN0aXZlU2Nyb2xsTG9ja3MgPSBNYXRoLm1heChhY3RpdmVTY3JvbGxMb2NrcyAtIDEsIDApO1xuXG4gICAgLy8gcmVhcHBseSBvcmlnaW5hbCBib2R5IHN0eWxlcywgaWYgYW55XG4gICAgaWYgKGFjY291bnRGb3JTY3JvbGxiYXJzICYmIGFjdGl2ZVNjcm9sbExvY2tzIDwgMSkge1xuICAgICAgU1RZTEVfS0VZUy5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgdmFyIHZhbCA9IG9yaWdpbmFsU3R5bGVzLmN1cnJlbnRba2V5XTtcbiAgICAgICAgaWYgKHRhcmdldFN0eWxlKSB7XG4gICAgICAgICAgdGFyZ2V0U3R5bGVba2V5XSA9IHZhbDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gcmVtb3ZlIHRvdWNoIGxpc3RlbmVyc1xuICAgIGlmICh0YXJnZXQgJiYgaXNUb3VjaERldmljZSgpKSB7XG4gICAgICB0YXJnZXQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgcHJldmVudFRvdWNoTW92ZSwgbGlzdGVuZXJPcHRpb25zKTtcbiAgICAgIGlmICh0b3VjaFNjcm9sbFRhcmdldCkge1xuICAgICAgICB0b3VjaFNjcm9sbFRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgcHJldmVudEluZXJ0aWFTY3JvbGwsIGxpc3RlbmVyT3B0aW9ucyk7XG4gICAgICAgIHRvdWNoU2Nyb2xsVGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIGFsbG93VG91Y2hNb3ZlLCBsaXN0ZW5lck9wdGlvbnMpO1xuICAgICAgfVxuICAgIH1cbiAgfSwgW2FjY291bnRGb3JTY3JvbGxiYXJzXSk7XG4gIHVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCFpc0VuYWJsZWQpIHJldHVybjtcbiAgICB2YXIgZWxlbWVudCA9IHNjcm9sbFRhcmdldC5jdXJyZW50O1xuICAgIGFkZFNjcm9sbExvY2soZWxlbWVudCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJlbW92ZVNjcm9sbExvY2soZWxlbWVudCk7XG4gICAgfTtcbiAgfSwgW2lzRW5hYmxlZCwgYWRkU2Nyb2xsTG9jaywgcmVtb3ZlU2Nyb2xsTG9ja10pO1xuICByZXR1cm4gZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICBzY3JvbGxUYXJnZXQuY3VycmVudCA9IGVsZW1lbnQ7XG4gIH07XG59XG5cbmZ1bmN0aW9uIF9FTU9USU9OX1NUUklOR0lGSUVEX0NTU19FUlJPUl9fJDEoKSB7IHJldHVybiBcIllvdSBoYXZlIHRyaWVkIHRvIHN0cmluZ2lmeSBvYmplY3QgcmV0dXJuZWQgZnJvbSBgY3NzYCBmdW5jdGlvbi4gSXQgaXNuJ3Qgc3VwcG9zZWQgdG8gYmUgdXNlZCBkaXJlY3RseSAoZS5nLiBhcyB2YWx1ZSBvZiB0aGUgYGNsYXNzTmFtZWAgcHJvcCksIGJ1dCByYXRoZXIgaGFuZGVkIHRvIGVtb3Rpb24gc28gaXQgY2FuIGhhbmRsZSBpdCAoZS5nLiBhcyB2YWx1ZSBvZiBgY3NzYCBwcm9wKS5cIjsgfVxudmFyIGJsdXJTZWxlY3RJbnB1dCA9IGZ1bmN0aW9uIGJsdXJTZWxlY3RJbnB1dChldmVudCkge1xuICB2YXIgZWxlbWVudCA9IGV2ZW50LnRhcmdldDtcbiAgcmV0dXJuIGVsZW1lbnQub3duZXJEb2N1bWVudC5hY3RpdmVFbGVtZW50ICYmIGVsZW1lbnQub3duZXJEb2N1bWVudC5hY3RpdmVFbGVtZW50LmJsdXIoKTtcbn07XG52YXIgX3JlZjIkMSA9IHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIiA/IHtcbiAgbmFtZTogXCIxa2ZkYjBlXCIsXG4gIHN0eWxlczogXCJwb3NpdGlvbjpmaXhlZDtsZWZ0OjA7Ym90dG9tOjA7cmlnaHQ6MDt0b3A6MFwiXG59IDoge1xuICBuYW1lOiBcImJwOGN1YS1TY3JvbGxNYW5hZ2VyXCIsXG4gIHN0eWxlczogXCJwb3NpdGlvbjpmaXhlZDtsZWZ0OjA7Ym90dG9tOjA7cmlnaHQ6MDt0b3A6MDtsYWJlbDpTY3JvbGxNYW5hZ2VyO1wiLFxuICBtYXA6IFwiLyojIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSWxOamNtOXNiRTFoYm1GblpYSXVkSE40SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVc5RVZTSXNJbVpwYkdVaU9pSlRZM0p2Ykd4TllXNWhaMlZ5TG5SemVDSXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJaThxS2lCQWFuTjRJR3B6ZUNBcUwxeHVhVzF3YjNKMElIc2dhbk40SUgwZ1puSnZiU0FuUUdWdGIzUnBiMjR2Y21WaFkzUW5PMXh1YVcxd2IzSjBJSHNnUm5KaFoyMWxiblFzSUZKbFlXTjBSV3hsYldWdWRDd2dVbVZtUTJGc2JHSmhZMnNzSUUxdmRYTmxSWFpsYm5RZ2ZTQm1jbTl0SUNkeVpXRmpkQ2M3WEc1cGJYQnZjblFnZFhObFUyTnliMnhzUTJGd2RIVnlaU0JtY205dElDY3VMM1Z6WlZOamNtOXNiRU5oY0hSMWNtVW5PMXh1YVcxd2IzSjBJSFZ6WlZOamNtOXNiRXh2WTJzZ1puSnZiU0FuTGk5MWMyVlRZM0p2Ykd4TWIyTnJKenRjYmx4dWFXNTBaWEptWVdObElGQnliM0J6SUh0Y2JpQWdjbVZoWkc5dWJIa2dZMmhwYkdSeVpXNDZJQ2h5WldZNklGSmxaa05oYkd4aVlXTnJQRWhVVFV4RmJHVnRaVzUwUGlrZ1BUNGdVbVZoWTNSRmJHVnRaVzUwTzF4dUlDQnlaV0ZrYjI1c2VTQnNiMk5yUlc1aFlteGxaRG9nWW05dmJHVmhianRjYmlBZ2NtVmhaRzl1YkhrZ1kyRndkSFZ5WlVWdVlXSnNaV1E2SUdKdmIyeGxZVzQ3WEc0Z0lISmxZV1J2Ym14NUlHOXVRbTkwZEc5dFFYSnlhWFpsUHpvZ0tHVjJaVzUwT2lCWGFHVmxiRVYyWlc1MElId2dWRzkxWTJoRmRtVnVkQ2tnUFQ0Z2RtOXBaRHRjYmlBZ2NtVmhaRzl1YkhrZ2IyNUNiM1IwYjIxTVpXRjJaVDg2SUNobGRtVnVkRG9nVjJobFpXeEZkbVZ1ZENCOElGUnZkV05vUlhabGJuUXBJRDArSUhadmFXUTdYRzRnSUhKbFlXUnZibXg1SUc5dVZHOXdRWEp5YVhabFB6b2dLR1YyWlc1ME9pQlhhR1ZsYkVWMlpXNTBJSHdnVkc5MVkyaEZkbVZ1ZENrZ1BUNGdkbTlwWkR0Y2JpQWdjbVZoWkc5dWJIa2diMjVVYjNCTVpXRjJaVDg2SUNobGRtVnVkRG9nVjJobFpXeEZkbVZ1ZENCOElGUnZkV05vUlhabGJuUXBJRDArSUhadmFXUTdYRzU5WEc1Y2JtTnZibk4wSUdKc2RYSlRaV3hsWTNSSmJuQjFkQ0E5SUNobGRtVnVkRG9nVFc5MWMyVkZkbVZ1ZER4SVZFMU1SR2wyUld4bGJXVnVkRDRwSUQwK0lIdGNiaUFnWTI5dWMzUWdaV3hsYldWdWRDQTlJR1YyWlc1MExuUmhjbWRsZENCaGN5QklWRTFNUkdsMlJXeGxiV1Z1ZER0Y2JpQWdjbVYwZFhKdUlDaGNiaUFnSUNCbGJHVnRaVzUwTG05M2JtVnlSRzlqZFcxbGJuUXVZV04wYVhabFJXeGxiV1Z1ZENBbUpseHVJQ0FnSUNobGJHVnRaVzUwTG05M2JtVnlSRzlqZFcxbGJuUXVZV04wYVhabFJXeGxiV1Z1ZENCaGN5QklWRTFNUld4bGJXVnVkQ2t1WW14MWNpZ3BYRzRnSUNrN1hHNTlPMXh1WEc1bGVIQnZjblFnWkdWbVlYVnNkQ0JtZFc1amRHbHZiaUJUWTNKdmJHeE5ZVzVoWjJWeUtIdGNiaUFnWTJocGJHUnlaVzRzWEc0Z0lHeHZZMnRGYm1GaWJHVmtMRnh1SUNCallYQjBkWEpsUlc1aFlteGxaQ0E5SUhSeWRXVXNYRzRnSUc5dVFtOTBkRzl0UVhKeWFYWmxMRnh1SUNCdmJrSnZkSFJ2YlV4bFlYWmxMRnh1SUNCdmJsUnZjRUZ5Y21sMlpTeGNiaUFnYjI1VWIzQk1aV0YyWlN4Y2JuMDZJRkJ5YjNCektTQjdYRzRnSUdOdmJuTjBJSE5sZEZOamNtOXNiRU5oY0hSMWNtVlVZWEpuWlhRZ1BTQjFjMlZUWTNKdmJHeERZWEIwZFhKbEtIdGNiaUFnSUNCcGMwVnVZV0pzWldRNklHTmhjSFIxY21WRmJtRmliR1ZrTEZ4dUlDQWdJRzl1UW05MGRHOXRRWEp5YVhabExGeHVJQ0FnSUc5dVFtOTBkRzl0VEdWaGRtVXNYRzRnSUNBZ2IyNVViM0JCY25KcGRtVXNYRzRnSUNBZ2IyNVViM0JNWldGMlpTeGNiaUFnZlNrN1hHNGdJR052Ym5OMElITmxkRk5qY205c2JFeHZZMnRVWVhKblpYUWdQU0IxYzJWVFkzSnZiR3hNYjJOcktIc2dhWE5GYm1GaWJHVmtPaUJzYjJOclJXNWhZbXhsWkNCOUtUdGNibHh1SUNCamIyNXpkQ0IwWVhKblpYUlNaV1k2SUZKbFprTmhiR3hpWVdOclBFaFVUVXhGYkdWdFpXNTBQaUE5SUNobGJHVnRaVzUwS1NBOVBpQjdYRzRnSUNBZ2MyVjBVMk55YjJ4c1EyRndkSFZ5WlZSaGNtZGxkQ2hsYkdWdFpXNTBLVHRjYmlBZ0lDQnpaWFJUWTNKdmJHeE1iMk5yVkdGeVoyVjBLR1ZzWlcxbGJuUXBPMXh1SUNCOU8xeHVYRzRnSUhKbGRIVnliaUFvWEc0Z0lDQWdQRVp5WVdkdFpXNTBQbHh1SUNBZ0lDQWdlMnh2WTJ0RmJtRmliR1ZrSUNZbUlDaGNiaUFnSUNBZ0lDQWdQR1JwZGx4dUlDQWdJQ0FnSUNBZ0lHOXVRMnhwWTJzOWUySnNkWEpUWld4bFkzUkpibkIxZEgxY2JpQWdJQ0FnSUNBZ0lDQmpjM005ZTNzZ2NHOXphWFJwYjI0NklDZG1hWGhsWkNjc0lHeGxablE2SURBc0lHSnZkSFJ2YlRvZ01Dd2djbWxuYUhRNklEQXNJSFJ2Y0RvZ01DQjlmVnh1SUNBZ0lDQWdJQ0F2UGx4dUlDQWdJQ0FnS1gxY2JpQWdJQ0FnSUh0amFHbHNaSEpsYmloMFlYSm5aWFJTWldZcGZWeHVJQ0FnSUR3dlJuSmhaMjFsYm5RK1hHNGdJQ2s3WEc1OVhHNGlYWDA9ICovXCIsXG4gIHRvU3RyaW5nOiBfRU1PVElPTl9TVFJJTkdJRklFRF9DU1NfRVJST1JfXyQxXG59O1xuZnVuY3Rpb24gU2Nyb2xsTWFuYWdlcihfcmVmKSB7XG4gIHZhciBjaGlsZHJlbiA9IF9yZWYuY2hpbGRyZW4sXG4gICAgbG9ja0VuYWJsZWQgPSBfcmVmLmxvY2tFbmFibGVkLFxuICAgIF9yZWYkY2FwdHVyZUVuYWJsZWQgPSBfcmVmLmNhcHR1cmVFbmFibGVkLFxuICAgIGNhcHR1cmVFbmFibGVkID0gX3JlZiRjYXB0dXJlRW5hYmxlZCA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9yZWYkY2FwdHVyZUVuYWJsZWQsXG4gICAgb25Cb3R0b21BcnJpdmUgPSBfcmVmLm9uQm90dG9tQXJyaXZlLFxuICAgIG9uQm90dG9tTGVhdmUgPSBfcmVmLm9uQm90dG9tTGVhdmUsXG4gICAgb25Ub3BBcnJpdmUgPSBfcmVmLm9uVG9wQXJyaXZlLFxuICAgIG9uVG9wTGVhdmUgPSBfcmVmLm9uVG9wTGVhdmU7XG4gIHZhciBzZXRTY3JvbGxDYXB0dXJlVGFyZ2V0ID0gdXNlU2Nyb2xsQ2FwdHVyZSh7XG4gICAgaXNFbmFibGVkOiBjYXB0dXJlRW5hYmxlZCxcbiAgICBvbkJvdHRvbUFycml2ZTogb25Cb3R0b21BcnJpdmUsXG4gICAgb25Cb3R0b21MZWF2ZTogb25Cb3R0b21MZWF2ZSxcbiAgICBvblRvcEFycml2ZTogb25Ub3BBcnJpdmUsXG4gICAgb25Ub3BMZWF2ZTogb25Ub3BMZWF2ZVxuICB9KTtcbiAgdmFyIHNldFNjcm9sbExvY2tUYXJnZXQgPSB1c2VTY3JvbGxMb2NrKHtcbiAgICBpc0VuYWJsZWQ6IGxvY2tFbmFibGVkXG4gIH0pO1xuICB2YXIgdGFyZ2V0UmVmID0gZnVuY3Rpb24gdGFyZ2V0UmVmKGVsZW1lbnQpIHtcbiAgICBzZXRTY3JvbGxDYXB0dXJlVGFyZ2V0KGVsZW1lbnQpO1xuICAgIHNldFNjcm9sbExvY2tUYXJnZXQoZWxlbWVudCk7XG4gIH07XG4gIHJldHVybiBqc3goRnJhZ21lbnQsIG51bGwsIGxvY2tFbmFibGVkICYmIGpzeChcImRpdlwiLCB7XG4gICAgb25DbGljazogYmx1clNlbGVjdElucHV0LFxuICAgIGNzczogX3JlZjIkMVxuICB9KSwgY2hpbGRyZW4odGFyZ2V0UmVmKSk7XG59XG5cbmZ1bmN0aW9uIF9FTU9USU9OX1NUUklOR0lGSUVEX0NTU19FUlJPUl9fKCkgeyByZXR1cm4gXCJZb3UgaGF2ZSB0cmllZCB0byBzdHJpbmdpZnkgb2JqZWN0IHJldHVybmVkIGZyb20gYGNzc2AgZnVuY3Rpb24uIEl0IGlzbid0IHN1cHBvc2VkIHRvIGJlIHVzZWQgZGlyZWN0bHkgKGUuZy4gYXMgdmFsdWUgb2YgdGhlIGBjbGFzc05hbWVgIHByb3ApLCBidXQgcmF0aGVyIGhhbmRlZCB0byBlbW90aW9uIHNvIGl0IGNhbiBoYW5kbGUgaXQgKGUuZy4gYXMgdmFsdWUgb2YgYGNzc2AgcHJvcCkuXCI7IH1cbnZhciBfcmVmMiA9IHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIiA/IHtcbiAgbmFtZTogXCIxYTBybzRuLXJlcXVpcmVkSW5wdXRcIixcbiAgc3R5bGVzOiBcImxhYmVsOnJlcXVpcmVkSW5wdXQ7b3BhY2l0eTowO3BvaW50ZXItZXZlbnRzOm5vbmU7cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7d2lkdGg6MTAwJVwiXG59IDoge1xuICBuYW1lOiBcIjVra3hiMi1yZXF1aXJlZElucHV0LVJlcXVpcmVkSW5wdXRcIixcbiAgc3R5bGVzOiBcImxhYmVsOnJlcXVpcmVkSW5wdXQ7b3BhY2l0eTowO3BvaW50ZXItZXZlbnRzOm5vbmU7cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7d2lkdGg6MTAwJTtsYWJlbDpSZXF1aXJlZElucHV0O1wiLFxuICBtYXA6IFwiLyojIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSWxKbGNYVnBjbVZrU1c1d2RYUXVkSE40SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVdOSklpd2labWxzWlNJNklsSmxjWFZwY21Wa1NXNXdkWFF1ZEhONElpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lMeW9xSUVCcWMzZ2dhbk40SUNvdlhHNXBiWEJ2Y25RZ2V5QkdiMk4xYzBWMlpXNTBTR0Z1Wkd4bGNpd2dSblZ1WTNScGIyNURiMjF3YjI1bGJuUWdmU0JtY205dElDZHlaV0ZqZENjN1hHNXBiWEJ2Y25RZ2V5QnFjM2dnZlNCbWNtOXRJQ2RBWlcxdmRHbHZiaTl5WldGamRDYzdYRzVjYm1OdmJuTjBJRkpsY1hWcGNtVmtTVzV3ZFhRNklFWjFibU4wYVc5dVEyOXRjRzl1Wlc1MFBIdGNiaUFnY21WaFpHOXViSGtnYm1GdFpUODZJSE4wY21sdVp6dGNiaUFnY21WaFpHOXViSGtnYjI1R2IyTjFjem9nUm05amRYTkZkbVZ1ZEVoaGJtUnNaWEk4U0ZSTlRFbHVjSFYwUld4bGJXVnVkRDQ3WEc1OVBpQTlJQ2g3SUc1aGJXVXNJRzl1Um05amRYTWdmU2tnUFQ0Z0tGeHVJQ0E4YVc1d2RYUmNiaUFnSUNCeVpYRjFhWEpsWkZ4dUlDQWdJRzVoYldVOWUyNWhiV1Y5WEc0Z0lDQWdkR0ZpU1c1a1pYZzlleTB4ZlZ4dUlDQWdJR0Z5YVdFdGFHbGtaR1Z1UFZ3aWRISjFaVndpWEc0Z0lDQWdiMjVHYjJOMWN6MTdiMjVHYjJOMWMzMWNiaUFnSUNCamMzTTllM3RjYmlBZ0lDQWdJR3hoWW1Wc09pQW5jbVZ4ZFdseVpXUkpibkIxZENjc1hHNGdJQ0FnSUNCdmNHRmphWFI1T2lBd0xGeHVJQ0FnSUNBZ2NHOXBiblJsY2tWMlpXNTBjem9nSjI1dmJtVW5MRnh1SUNBZ0lDQWdjRzl6YVhScGIyNDZJQ2RoWW5OdmJIVjBaU2NzWEc0Z0lDQWdJQ0JpYjNSMGIyMDZJREFzWEc0Z0lDQWdJQ0JzWldaME9pQXdMRnh1SUNBZ0lDQWdjbWxuYUhRNklEQXNYRzRnSUNBZ0lDQjNhV1IwYURvZ0p6RXdNQ1VuTEZ4dUlDQWdJSDE5WEc0Z0lDQWdMeThnVUhKbGRtVnVkQ0JnVTNkcGRHTm9hVzVuSUdaeWIyMGdkVzVqYjI1MGNtOXNiR1ZrSUhSdklHTnZiblJ5YjJ4c1pXUmdJR1Z5Y205eVhHNGdJQ0FnZG1Gc2RXVTlYQ0pjSWx4dUlDQWdJRzl1UTJoaGJtZGxQWHNvS1NBOVBpQjdmWDFjYmlBZ0x6NWNiaWs3WEc1Y2JtVjRjRzl5ZENCa1pXWmhkV3gwSUZKbGNYVnBjbVZrU1c1d2RYUTdYRzRpWFgwPSAqL1wiLFxuICB0b1N0cmluZzogX0VNT1RJT05fU1RSSU5HSUZJRURfQ1NTX0VSUk9SX19cbn07XG52YXIgUmVxdWlyZWRJbnB1dCA9IGZ1bmN0aW9uIFJlcXVpcmVkSW5wdXQoX3JlZikge1xuICB2YXIgbmFtZSA9IF9yZWYubmFtZSxcbiAgICBvbkZvY3VzID0gX3JlZi5vbkZvY3VzO1xuICByZXR1cm4ganN4KFwiaW5wdXRcIiwge1xuICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgIG5hbWU6IG5hbWUsXG4gICAgdGFiSW5kZXg6IC0xLFxuICAgIFwiYXJpYS1oaWRkZW5cIjogXCJ0cnVlXCIsXG4gICAgb25Gb2N1czogb25Gb2N1cyxcbiAgICBjc3M6IF9yZWYyXG4gICAgLy8gUHJldmVudCBgU3dpdGNoaW5nIGZyb20gdW5jb250cm9sbGVkIHRvIGNvbnRyb2xsZWRgIGVycm9yXG4gICAgLFxuICAgIHZhbHVlOiBcIlwiLFxuICAgIG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZSgpIHt9XG4gIH0pO1xufTtcbnZhciBSZXF1aXJlZElucHV0JDEgPSBSZXF1aXJlZElucHV0O1xuXG4vLy8gPHJlZmVyZW5jZSB0eXBlcz1cInVzZXItYWdlbnQtZGF0YS10eXBlc1wiIC8+XG5cbmZ1bmN0aW9uIHRlc3RQbGF0Zm9ybShyZSkge1xuICB2YXIgX3dpbmRvdyRuYXZpZ2F0b3IkdXNlO1xuICByZXR1cm4gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93Lm5hdmlnYXRvciAhPSBudWxsID8gcmUudGVzdCgoKF93aW5kb3ckbmF2aWdhdG9yJHVzZSA9IHdpbmRvdy5uYXZpZ2F0b3JbJ3VzZXJBZ2VudERhdGEnXSkgPT09IG51bGwgfHwgX3dpbmRvdyRuYXZpZ2F0b3IkdXNlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfd2luZG93JG5hdmlnYXRvciR1c2UucGxhdGZvcm0pIHx8IHdpbmRvdy5uYXZpZ2F0b3IucGxhdGZvcm0pIDogZmFsc2U7XG59XG5mdW5jdGlvbiBpc0lQaG9uZSgpIHtcbiAgcmV0dXJuIHRlc3RQbGF0Zm9ybSgvXmlQaG9uZS9pKTtcbn1cbmZ1bmN0aW9uIGlzTWFjKCkge1xuICByZXR1cm4gdGVzdFBsYXRmb3JtKC9eTWFjL2kpO1xufVxuZnVuY3Rpb24gaXNJUGFkKCkge1xuICByZXR1cm4gdGVzdFBsYXRmb3JtKC9eaVBhZC9pKSB8fFxuICAvLyBpUGFkT1MgMTMgbGllcyBhbmQgc2F5cyBpdCdzIGEgTWFjLCBidXQgd2UgY2FuIGRpc3Rpbmd1aXNoIGJ5IGRldGVjdGluZyB0b3VjaCBzdXBwb3J0LlxuICBpc01hYygpICYmIG5hdmlnYXRvci5tYXhUb3VjaFBvaW50cyA+IDE7XG59XG5mdW5jdGlvbiBpc0lPUygpIHtcbiAgcmV0dXJuIGlzSVBob25lKCkgfHwgaXNJUGFkKCk7XG59XG5mdW5jdGlvbiBpc0FwcGxlRGV2aWNlKCkge1xuICByZXR1cm4gaXNNYWMoKSB8fCBpc0lPUygpO1xufVxuXG52YXIgZm9ybWF0R3JvdXBMYWJlbCA9IGZ1bmN0aW9uIGZvcm1hdEdyb3VwTGFiZWwoZ3JvdXApIHtcbiAgcmV0dXJuIGdyb3VwLmxhYmVsO1xufTtcbnZhciBnZXRPcHRpb25MYWJlbCQxID0gZnVuY3Rpb24gZ2V0T3B0aW9uTGFiZWwob3B0aW9uKSB7XG4gIHJldHVybiBvcHRpb24ubGFiZWw7XG59O1xudmFyIGdldE9wdGlvblZhbHVlJDEgPSBmdW5jdGlvbiBnZXRPcHRpb25WYWx1ZShvcHRpb24pIHtcbiAgcmV0dXJuIG9wdGlvbi52YWx1ZTtcbn07XG52YXIgaXNPcHRpb25EaXNhYmxlZCA9IGZ1bmN0aW9uIGlzT3B0aW9uRGlzYWJsZWQob3B0aW9uKSB7XG4gIHJldHVybiAhIW9wdGlvbi5pc0Rpc2FibGVkO1xufTtcblxudmFyIGRlZmF1bHRTdHlsZXMgPSB7XG4gIGNsZWFySW5kaWNhdG9yOiBjbGVhckluZGljYXRvckNTUyxcbiAgY29udGFpbmVyOiBjb250YWluZXJDU1MsXG4gIGNvbnRyb2w6IGNzcyQxLFxuICBkcm9wZG93bkluZGljYXRvcjogZHJvcGRvd25JbmRpY2F0b3JDU1MsXG4gIGdyb3VwOiBncm91cENTUyxcbiAgZ3JvdXBIZWFkaW5nOiBncm91cEhlYWRpbmdDU1MsXG4gIGluZGljYXRvcnNDb250YWluZXI6IGluZGljYXRvcnNDb250YWluZXJDU1MsXG4gIGluZGljYXRvclNlcGFyYXRvcjogaW5kaWNhdG9yU2VwYXJhdG9yQ1NTLFxuICBpbnB1dDogaW5wdXRDU1MsXG4gIGxvYWRpbmdJbmRpY2F0b3I6IGxvYWRpbmdJbmRpY2F0b3JDU1MsXG4gIGxvYWRpbmdNZXNzYWdlOiBsb2FkaW5nTWVzc2FnZUNTUyxcbiAgbWVudTogbWVudUNTUyxcbiAgbWVudUxpc3Q6IG1lbnVMaXN0Q1NTLFxuICBtZW51UG9ydGFsOiBtZW51UG9ydGFsQ1NTLFxuICBtdWx0aVZhbHVlOiBtdWx0aVZhbHVlQ1NTLFxuICBtdWx0aVZhbHVlTGFiZWw6IG11bHRpVmFsdWVMYWJlbENTUyxcbiAgbXVsdGlWYWx1ZVJlbW92ZTogbXVsdGlWYWx1ZVJlbW92ZUNTUyxcbiAgbm9PcHRpb25zTWVzc2FnZTogbm9PcHRpb25zTWVzc2FnZUNTUyxcbiAgb3B0aW9uOiBvcHRpb25DU1MsXG4gIHBsYWNlaG9sZGVyOiBwbGFjZWhvbGRlckNTUyxcbiAgc2luZ2xlVmFsdWU6IGNzcyQyLFxuICB2YWx1ZUNvbnRhaW5lcjogdmFsdWVDb250YWluZXJDU1Ncbn07XG4vLyBNZXJnZSBVdGlsaXR5XG4vLyBBbGxvd3MgY29uc3VtZXJzIHRvIGV4dGVuZCBhIGJhc2UgU2VsZWN0IHdpdGggYWRkaXRpb25hbCBzdHlsZXNcblxuZnVuY3Rpb24gbWVyZ2VTdHlsZXMoc291cmNlKSB7XG4gIHZhciB0YXJnZXQgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9O1xuICAvLyBpbml0aWFsaXplIHdpdGggc291cmNlIHN0eWxlc1xuICB2YXIgc3R5bGVzID0gX29iamVjdFNwcmVhZCh7fSwgc291cmNlKTtcblxuICAvLyBtYXNzYWdlIGluIHRhcmdldCBzdHlsZXNcbiAgT2JqZWN0LmtleXModGFyZ2V0KS5mb3JFYWNoKGZ1bmN0aW9uIChrZXlBc1N0cmluZykge1xuICAgIHZhciBrZXkgPSBrZXlBc1N0cmluZztcbiAgICBpZiAoc291cmNlW2tleV0pIHtcbiAgICAgIHN0eWxlc1trZXldID0gZnVuY3Rpb24gKHJzQ3NzLCBwcm9wcykge1xuICAgICAgICByZXR1cm4gdGFyZ2V0W2tleV0oc291cmNlW2tleV0ocnNDc3MsIHByb3BzKSwgcHJvcHMpO1xuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3R5bGVzW2tleV0gPSB0YXJnZXRba2V5XTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gc3R5bGVzO1xufVxuXG52YXIgY29sb3JzID0ge1xuICBwcmltYXJ5OiAnIzI2ODRGRicsXG4gIHByaW1hcnk3NTogJyM0QzlBRkYnLFxuICBwcmltYXJ5NTA6ICcjQjJENEZGJyxcbiAgcHJpbWFyeTI1OiAnI0RFRUJGRicsXG4gIGRhbmdlcjogJyNERTM1MEInLFxuICBkYW5nZXJMaWdodDogJyNGRkJEQUQnLFxuICBuZXV0cmFsMDogJ2hzbCgwLCAwJSwgMTAwJSknLFxuICBuZXV0cmFsNTogJ2hzbCgwLCAwJSwgOTUlKScsXG4gIG5ldXRyYWwxMDogJ2hzbCgwLCAwJSwgOTAlKScsXG4gIG5ldXRyYWwyMDogJ2hzbCgwLCAwJSwgODAlKScsXG4gIG5ldXRyYWwzMDogJ2hzbCgwLCAwJSwgNzAlKScsXG4gIG5ldXRyYWw0MDogJ2hzbCgwLCAwJSwgNjAlKScsXG4gIG5ldXRyYWw1MDogJ2hzbCgwLCAwJSwgNTAlKScsXG4gIG5ldXRyYWw2MDogJ2hzbCgwLCAwJSwgNDAlKScsXG4gIG5ldXRyYWw3MDogJ2hzbCgwLCAwJSwgMzAlKScsXG4gIG5ldXRyYWw4MDogJ2hzbCgwLCAwJSwgMjAlKScsXG4gIG5ldXRyYWw5MDogJ2hzbCgwLCAwJSwgMTAlKSdcbn07XG52YXIgYm9yZGVyUmFkaXVzID0gNDtcbi8vIFVzZWQgdG8gY2FsY3VsYXRlIGNvbnNpc3RlbnQgbWFyZ2luL3BhZGRpbmcgb24gZWxlbWVudHNcbnZhciBiYXNlVW5pdCA9IDQ7XG4vLyBUaGUgbWluaW11bSBoZWlnaHQgb2YgdGhlIGNvbnRyb2xcbnZhciBjb250cm9sSGVpZ2h0ID0gMzg7XG4vLyBUaGUgYW1vdW50IG9mIHNwYWNlIGJldHdlZW4gdGhlIGNvbnRyb2wgYW5kIG1lbnUgKi9cbnZhciBtZW51R3V0dGVyID0gYmFzZVVuaXQgKiAyO1xudmFyIHNwYWNpbmcgPSB7XG4gIGJhc2VVbml0OiBiYXNlVW5pdCxcbiAgY29udHJvbEhlaWdodDogY29udHJvbEhlaWdodCxcbiAgbWVudUd1dHRlcjogbWVudUd1dHRlclxufTtcbnZhciBkZWZhdWx0VGhlbWUgPSB7XG4gIGJvcmRlclJhZGl1czogYm9yZGVyUmFkaXVzLFxuICBjb2xvcnM6IGNvbG9ycyxcbiAgc3BhY2luZzogc3BhY2luZ1xufTtcblxudmFyIGRlZmF1bHRQcm9wcyA9IHtcbiAgJ2FyaWEtbGl2ZSc6ICdwb2xpdGUnLFxuICBiYWNrc3BhY2VSZW1vdmVzVmFsdWU6IHRydWUsXG4gIGJsdXJJbnB1dE9uU2VsZWN0OiBpc1RvdWNoQ2FwYWJsZSgpLFxuICBjYXB0dXJlTWVudVNjcm9sbDogIWlzVG91Y2hDYXBhYmxlKCksXG4gIGNsYXNzTmFtZXM6IHt9LFxuICBjbG9zZU1lbnVPblNlbGVjdDogdHJ1ZSxcbiAgY2xvc2VNZW51T25TY3JvbGw6IGZhbHNlLFxuICBjb21wb25lbnRzOiB7fSxcbiAgY29udHJvbFNob3VsZFJlbmRlclZhbHVlOiB0cnVlLFxuICBlc2NhcGVDbGVhcnNWYWx1ZTogZmFsc2UsXG4gIGZpbHRlck9wdGlvbjogY3JlYXRlRmlsdGVyKCksXG4gIGZvcm1hdEdyb3VwTGFiZWw6IGZvcm1hdEdyb3VwTGFiZWwsXG4gIGdldE9wdGlvbkxhYmVsOiBnZXRPcHRpb25MYWJlbCQxLFxuICBnZXRPcHRpb25WYWx1ZTogZ2V0T3B0aW9uVmFsdWUkMSxcbiAgaXNEaXNhYmxlZDogZmFsc2UsXG4gIGlzTG9hZGluZzogZmFsc2UsXG4gIGlzTXVsdGk6IGZhbHNlLFxuICBpc1J0bDogZmFsc2UsXG4gIGlzU2VhcmNoYWJsZTogdHJ1ZSxcbiAgaXNPcHRpb25EaXNhYmxlZDogaXNPcHRpb25EaXNhYmxlZCxcbiAgbG9hZGluZ01lc3NhZ2U6IGZ1bmN0aW9uIGxvYWRpbmdNZXNzYWdlKCkge1xuICAgIHJldHVybiAnTG9hZGluZy4uLic7XG4gIH0sXG4gIG1heE1lbnVIZWlnaHQ6IDMwMCxcbiAgbWluTWVudUhlaWdodDogMTQwLFxuICBtZW51SXNPcGVuOiBmYWxzZSxcbiAgbWVudVBsYWNlbWVudDogJ2JvdHRvbScsXG4gIG1lbnVQb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgbWVudVNob3VsZEJsb2NrU2Nyb2xsOiBmYWxzZSxcbiAgbWVudVNob3VsZFNjcm9sbEludG9WaWV3OiAhaXNNb2JpbGVEZXZpY2UoKSxcbiAgbm9PcHRpb25zTWVzc2FnZTogZnVuY3Rpb24gbm9PcHRpb25zTWVzc2FnZSgpIHtcbiAgICByZXR1cm4gJ05vIG9wdGlvbnMnO1xuICB9LFxuICBvcGVuTWVudU9uRm9jdXM6IGZhbHNlLFxuICBvcGVuTWVudU9uQ2xpY2s6IHRydWUsXG4gIG9wdGlvbnM6IFtdLFxuICBwYWdlU2l6ZTogNSxcbiAgcGxhY2Vob2xkZXI6ICdTZWxlY3QuLi4nLFxuICBzY3JlZW5SZWFkZXJTdGF0dXM6IGZ1bmN0aW9uIHNjcmVlblJlYWRlclN0YXR1cyhfcmVmKSB7XG4gICAgdmFyIGNvdW50ID0gX3JlZi5jb3VudDtcbiAgICByZXR1cm4gXCJcIi5jb25jYXQoY291bnQsIFwiIHJlc3VsdFwiKS5jb25jYXQoY291bnQgIT09IDEgPyAncycgOiAnJywgXCIgYXZhaWxhYmxlXCIpO1xuICB9LFxuICBzdHlsZXM6IHt9LFxuICB0YWJJbmRleDogMCxcbiAgdGFiU2VsZWN0c1ZhbHVlOiB0cnVlLFxuICB1bnN0eWxlZDogZmFsc2Vcbn07XG5mdW5jdGlvbiB0b0NhdGVnb3JpemVkT3B0aW9uKHByb3BzLCBvcHRpb24sIHNlbGVjdFZhbHVlLCBpbmRleCkge1xuICB2YXIgaXNEaXNhYmxlZCA9IF9pc09wdGlvbkRpc2FibGVkKHByb3BzLCBvcHRpb24sIHNlbGVjdFZhbHVlKTtcbiAgdmFyIGlzU2VsZWN0ZWQgPSBfaXNPcHRpb25TZWxlY3RlZChwcm9wcywgb3B0aW9uLCBzZWxlY3RWYWx1ZSk7XG4gIHZhciBsYWJlbCA9IGdldE9wdGlvbkxhYmVsKHByb3BzLCBvcHRpb24pO1xuICB2YXIgdmFsdWUgPSBnZXRPcHRpb25WYWx1ZShwcm9wcywgb3B0aW9uKTtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnb3B0aW9uJyxcbiAgICBkYXRhOiBvcHRpb24sXG4gICAgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCxcbiAgICBpc1NlbGVjdGVkOiBpc1NlbGVjdGVkLFxuICAgIGxhYmVsOiBsYWJlbCxcbiAgICB2YWx1ZTogdmFsdWUsXG4gICAgaW5kZXg6IGluZGV4XG4gIH07XG59XG5mdW5jdGlvbiBidWlsZENhdGVnb3JpemVkT3B0aW9ucyhwcm9wcywgc2VsZWN0VmFsdWUpIHtcbiAgcmV0dXJuIHByb3BzLm9wdGlvbnMubWFwKGZ1bmN0aW9uIChncm91cE9yT3B0aW9uLCBncm91cE9yT3B0aW9uSW5kZXgpIHtcbiAgICBpZiAoJ29wdGlvbnMnIGluIGdyb3VwT3JPcHRpb24pIHtcbiAgICAgIHZhciBjYXRlZ29yaXplZE9wdGlvbnMgPSBncm91cE9yT3B0aW9uLm9wdGlvbnMubWFwKGZ1bmN0aW9uIChvcHRpb24sIG9wdGlvbkluZGV4KSB7XG4gICAgICAgIHJldHVybiB0b0NhdGVnb3JpemVkT3B0aW9uKHByb3BzLCBvcHRpb24sIHNlbGVjdFZhbHVlLCBvcHRpb25JbmRleCk7XG4gICAgICB9KS5maWx0ZXIoZnVuY3Rpb24gKGNhdGVnb3JpemVkT3B0aW9uKSB7XG4gICAgICAgIHJldHVybiBpc0ZvY3VzYWJsZShwcm9wcywgY2F0ZWdvcml6ZWRPcHRpb24pO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gY2F0ZWdvcml6ZWRPcHRpb25zLmxlbmd0aCA+IDAgPyB7XG4gICAgICAgIHR5cGU6ICdncm91cCcsXG4gICAgICAgIGRhdGE6IGdyb3VwT3JPcHRpb24sXG4gICAgICAgIG9wdGlvbnM6IGNhdGVnb3JpemVkT3B0aW9ucyxcbiAgICAgICAgaW5kZXg6IGdyb3VwT3JPcHRpb25JbmRleFxuICAgICAgfSA6IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgdmFyIGNhdGVnb3JpemVkT3B0aW9uID0gdG9DYXRlZ29yaXplZE9wdGlvbihwcm9wcywgZ3JvdXBPck9wdGlvbiwgc2VsZWN0VmFsdWUsIGdyb3VwT3JPcHRpb25JbmRleCk7XG4gICAgcmV0dXJuIGlzRm9jdXNhYmxlKHByb3BzLCBjYXRlZ29yaXplZE9wdGlvbikgPyBjYXRlZ29yaXplZE9wdGlvbiA6IHVuZGVmaW5lZDtcbiAgfSkuZmlsdGVyKG5vdE51bGxpc2gpO1xufVxuZnVuY3Rpb24gYnVpbGRGb2N1c2FibGVPcHRpb25zRnJvbUNhdGVnb3JpemVkT3B0aW9ucyhjYXRlZ29yaXplZE9wdGlvbnMpIHtcbiAgcmV0dXJuIGNhdGVnb3JpemVkT3B0aW9ucy5yZWR1Y2UoZnVuY3Rpb24gKG9wdGlvbnNBY2N1bXVsYXRvciwgY2F0ZWdvcml6ZWRPcHRpb24pIHtcbiAgICBpZiAoY2F0ZWdvcml6ZWRPcHRpb24udHlwZSA9PT0gJ2dyb3VwJykge1xuICAgICAgb3B0aW9uc0FjY3VtdWxhdG9yLnB1c2guYXBwbHkob3B0aW9uc0FjY3VtdWxhdG9yLCBfdG9Db25zdW1hYmxlQXJyYXkoY2F0ZWdvcml6ZWRPcHRpb24ub3B0aW9ucy5tYXAoZnVuY3Rpb24gKG9wdGlvbikge1xuICAgICAgICByZXR1cm4gb3B0aW9uLmRhdGE7XG4gICAgICB9KSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvcHRpb25zQWNjdW11bGF0b3IucHVzaChjYXRlZ29yaXplZE9wdGlvbi5kYXRhKTtcbiAgICB9XG4gICAgcmV0dXJuIG9wdGlvbnNBY2N1bXVsYXRvcjtcbiAgfSwgW10pO1xufVxuZnVuY3Rpb24gYnVpbGRGb2N1c2FibGVPcHRpb25zV2l0aElkcyhjYXRlZ29yaXplZE9wdGlvbnMsIG9wdGlvbklkKSB7XG4gIHJldHVybiBjYXRlZ29yaXplZE9wdGlvbnMucmVkdWNlKGZ1bmN0aW9uIChvcHRpb25zQWNjdW11bGF0b3IsIGNhdGVnb3JpemVkT3B0aW9uKSB7XG4gICAgaWYgKGNhdGVnb3JpemVkT3B0aW9uLnR5cGUgPT09ICdncm91cCcpIHtcbiAgICAgIG9wdGlvbnNBY2N1bXVsYXRvci5wdXNoLmFwcGx5KG9wdGlvbnNBY2N1bXVsYXRvciwgX3RvQ29uc3VtYWJsZUFycmF5KGNhdGVnb3JpemVkT3B0aW9uLm9wdGlvbnMubWFwKGZ1bmN0aW9uIChvcHRpb24pIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBkYXRhOiBvcHRpb24uZGF0YSxcbiAgICAgICAgICBpZDogXCJcIi5jb25jYXQob3B0aW9uSWQsIFwiLVwiKS5jb25jYXQoY2F0ZWdvcml6ZWRPcHRpb24uaW5kZXgsIFwiLVwiKS5jb25jYXQob3B0aW9uLmluZGV4KVxuICAgICAgICB9O1xuICAgICAgfSkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3B0aW9uc0FjY3VtdWxhdG9yLnB1c2goe1xuICAgICAgICBkYXRhOiBjYXRlZ29yaXplZE9wdGlvbi5kYXRhLFxuICAgICAgICBpZDogXCJcIi5jb25jYXQob3B0aW9uSWQsIFwiLVwiKS5jb25jYXQoY2F0ZWdvcml6ZWRPcHRpb24uaW5kZXgpXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIG9wdGlvbnNBY2N1bXVsYXRvcjtcbiAgfSwgW10pO1xufVxuZnVuY3Rpb24gYnVpbGRGb2N1c2FibGVPcHRpb25zKHByb3BzLCBzZWxlY3RWYWx1ZSkge1xuICByZXR1cm4gYnVpbGRGb2N1c2FibGVPcHRpb25zRnJvbUNhdGVnb3JpemVkT3B0aW9ucyhidWlsZENhdGVnb3JpemVkT3B0aW9ucyhwcm9wcywgc2VsZWN0VmFsdWUpKTtcbn1cbmZ1bmN0aW9uIGlzRm9jdXNhYmxlKHByb3BzLCBjYXRlZ29yaXplZE9wdGlvbikge1xuICB2YXIgX3Byb3BzJGlucHV0VmFsdWUgPSBwcm9wcy5pbnB1dFZhbHVlLFxuICAgIGlucHV0VmFsdWUgPSBfcHJvcHMkaW5wdXRWYWx1ZSA9PT0gdm9pZCAwID8gJycgOiBfcHJvcHMkaW5wdXRWYWx1ZTtcbiAgdmFyIGRhdGEgPSBjYXRlZ29yaXplZE9wdGlvbi5kYXRhLFxuICAgIGlzU2VsZWN0ZWQgPSBjYXRlZ29yaXplZE9wdGlvbi5pc1NlbGVjdGVkLFxuICAgIGxhYmVsID0gY2F0ZWdvcml6ZWRPcHRpb24ubGFiZWwsXG4gICAgdmFsdWUgPSBjYXRlZ29yaXplZE9wdGlvbi52YWx1ZTtcbiAgcmV0dXJuICghc2hvdWxkSGlkZVNlbGVjdGVkT3B0aW9ucyhwcm9wcykgfHwgIWlzU2VsZWN0ZWQpICYmIF9maWx0ZXJPcHRpb24ocHJvcHMsIHtcbiAgICBsYWJlbDogbGFiZWwsXG4gICAgdmFsdWU6IHZhbHVlLFxuICAgIGRhdGE6IGRhdGFcbiAgfSwgaW5wdXRWYWx1ZSk7XG59XG5mdW5jdGlvbiBnZXROZXh0Rm9jdXNlZFZhbHVlKHN0YXRlLCBuZXh0U2VsZWN0VmFsdWUpIHtcbiAgdmFyIGZvY3VzZWRWYWx1ZSA9IHN0YXRlLmZvY3VzZWRWYWx1ZSxcbiAgICBsYXN0U2VsZWN0VmFsdWUgPSBzdGF0ZS5zZWxlY3RWYWx1ZTtcbiAgdmFyIGxhc3RGb2N1c2VkSW5kZXggPSBsYXN0U2VsZWN0VmFsdWUuaW5kZXhPZihmb2N1c2VkVmFsdWUpO1xuICBpZiAobGFzdEZvY3VzZWRJbmRleCA+IC0xKSB7XG4gICAgdmFyIG5leHRGb2N1c2VkSW5kZXggPSBuZXh0U2VsZWN0VmFsdWUuaW5kZXhPZihmb2N1c2VkVmFsdWUpO1xuICAgIGlmIChuZXh0Rm9jdXNlZEluZGV4ID4gLTEpIHtcbiAgICAgIC8vIHRoZSBmb2N1c2VkIHZhbHVlIGlzIHN0aWxsIGluIHRoZSBzZWxlY3RWYWx1ZSwgcmV0dXJuIGl0XG4gICAgICByZXR1cm4gZm9jdXNlZFZhbHVlO1xuICAgIH0gZWxzZSBpZiAobGFzdEZvY3VzZWRJbmRleCA8IG5leHRTZWxlY3RWYWx1ZS5sZW5ndGgpIHtcbiAgICAgIC8vIHRoZSBmb2N1c2VkVmFsdWUgaXMgbm90IHByZXNlbnQgaW4gdGhlIG5leHQgc2VsZWN0VmFsdWUgYXJyYXkgYnlcbiAgICAgIC8vIHJlZmVyZW5jZSwgc28gcmV0dXJuIHRoZSBuZXcgdmFsdWUgYXQgdGhlIHNhbWUgaW5kZXhcbiAgICAgIHJldHVybiBuZXh0U2VsZWN0VmFsdWVbbGFzdEZvY3VzZWRJbmRleF07XG4gICAgfVxuICB9XG4gIHJldHVybiBudWxsO1xufVxuZnVuY3Rpb24gZ2V0TmV4dEZvY3VzZWRPcHRpb24oc3RhdGUsIG9wdGlvbnMpIHtcbiAgdmFyIGxhc3RGb2N1c2VkT3B0aW9uID0gc3RhdGUuZm9jdXNlZE9wdGlvbjtcbiAgcmV0dXJuIGxhc3RGb2N1c2VkT3B0aW9uICYmIG9wdGlvbnMuaW5kZXhPZihsYXN0Rm9jdXNlZE9wdGlvbikgPiAtMSA/IGxhc3RGb2N1c2VkT3B0aW9uIDogb3B0aW9uc1swXTtcbn1cbnZhciBnZXRGb2N1c2VkT3B0aW9uSWQgPSBmdW5jdGlvbiBnZXRGb2N1c2VkT3B0aW9uSWQoZm9jdXNhYmxlT3B0aW9uc1dpdGhJZHMsIGZvY3VzZWRPcHRpb24pIHtcbiAgdmFyIF9mb2N1c2FibGVPcHRpb25zV2l0aDtcbiAgdmFyIGZvY3VzZWRPcHRpb25JZCA9IChfZm9jdXNhYmxlT3B0aW9uc1dpdGggPSBmb2N1c2FibGVPcHRpb25zV2l0aElkcy5maW5kKGZ1bmN0aW9uIChvcHRpb24pIHtcbiAgICByZXR1cm4gb3B0aW9uLmRhdGEgPT09IGZvY3VzZWRPcHRpb247XG4gIH0pKSA9PT0gbnVsbCB8fCBfZm9jdXNhYmxlT3B0aW9uc1dpdGggPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9mb2N1c2FibGVPcHRpb25zV2l0aC5pZDtcbiAgcmV0dXJuIGZvY3VzZWRPcHRpb25JZCB8fCBudWxsO1xufTtcbnZhciBnZXRPcHRpb25MYWJlbCA9IGZ1bmN0aW9uIGdldE9wdGlvbkxhYmVsKHByb3BzLCBkYXRhKSB7XG4gIHJldHVybiBwcm9wcy5nZXRPcHRpb25MYWJlbChkYXRhKTtcbn07XG52YXIgZ2V0T3B0aW9uVmFsdWUgPSBmdW5jdGlvbiBnZXRPcHRpb25WYWx1ZShwcm9wcywgZGF0YSkge1xuICByZXR1cm4gcHJvcHMuZ2V0T3B0aW9uVmFsdWUoZGF0YSk7XG59O1xuZnVuY3Rpb24gX2lzT3B0aW9uRGlzYWJsZWQocHJvcHMsIG9wdGlvbiwgc2VsZWN0VmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiBwcm9wcy5pc09wdGlvbkRpc2FibGVkID09PSAnZnVuY3Rpb24nID8gcHJvcHMuaXNPcHRpb25EaXNhYmxlZChvcHRpb24sIHNlbGVjdFZhbHVlKSA6IGZhbHNlO1xufVxuZnVuY3Rpb24gX2lzT3B0aW9uU2VsZWN0ZWQocHJvcHMsIG9wdGlvbiwgc2VsZWN0VmFsdWUpIHtcbiAgaWYgKHNlbGVjdFZhbHVlLmluZGV4T2Yob3B0aW9uKSA+IC0xKSByZXR1cm4gdHJ1ZTtcbiAgaWYgKHR5cGVvZiBwcm9wcy5pc09wdGlvblNlbGVjdGVkID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIHByb3BzLmlzT3B0aW9uU2VsZWN0ZWQob3B0aW9uLCBzZWxlY3RWYWx1ZSk7XG4gIH1cbiAgdmFyIGNhbmRpZGF0ZSA9IGdldE9wdGlvblZhbHVlKHByb3BzLCBvcHRpb24pO1xuICByZXR1cm4gc2VsZWN0VmFsdWUuc29tZShmdW5jdGlvbiAoaSkge1xuICAgIHJldHVybiBnZXRPcHRpb25WYWx1ZShwcm9wcywgaSkgPT09IGNhbmRpZGF0ZTtcbiAgfSk7XG59XG5mdW5jdGlvbiBfZmlsdGVyT3B0aW9uKHByb3BzLCBvcHRpb24sIGlucHV0VmFsdWUpIHtcbiAgcmV0dXJuIHByb3BzLmZpbHRlck9wdGlvbiA/IHByb3BzLmZpbHRlck9wdGlvbihvcHRpb24sIGlucHV0VmFsdWUpIDogdHJ1ZTtcbn1cbnZhciBzaG91bGRIaWRlU2VsZWN0ZWRPcHRpb25zID0gZnVuY3Rpb24gc2hvdWxkSGlkZVNlbGVjdGVkT3B0aW9ucyhwcm9wcykge1xuICB2YXIgaGlkZVNlbGVjdGVkT3B0aW9ucyA9IHByb3BzLmhpZGVTZWxlY3RlZE9wdGlvbnMsXG4gICAgaXNNdWx0aSA9IHByb3BzLmlzTXVsdGk7XG4gIGlmIChoaWRlU2VsZWN0ZWRPcHRpb25zID09PSB1bmRlZmluZWQpIHJldHVybiBpc011bHRpO1xuICByZXR1cm4gaGlkZVNlbGVjdGVkT3B0aW9ucztcbn07XG52YXIgaW5zdGFuY2VJZCA9IDE7XG52YXIgU2VsZWN0ID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0cyhTZWxlY3QsIF9Db21wb25lbnQpO1xuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKFNlbGVjdCk7XG4gIC8vIE1pc2MuIEluc3RhbmNlIFByb3BlcnRpZXNcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgLy8gVE9ET1xuXG4gIC8vIFJlZnNcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgLy8gTGlmZWN5Y2xlXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIGZ1bmN0aW9uIFNlbGVjdChfcHJvcHMpIHtcbiAgICB2YXIgX3RoaXM7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFNlbGVjdCk7XG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBfcHJvcHMpO1xuICAgIF90aGlzLnN0YXRlID0ge1xuICAgICAgYXJpYVNlbGVjdGlvbjogbnVsbCxcbiAgICAgIGZvY3VzZWRPcHRpb246IG51bGwsXG4gICAgICBmb2N1c2VkT3B0aW9uSWQ6IG51bGwsXG4gICAgICBmb2N1c2FibGVPcHRpb25zV2l0aElkczogW10sXG4gICAgICBmb2N1c2VkVmFsdWU6IG51bGwsXG4gICAgICBpbnB1dElzSGlkZGVuOiBmYWxzZSxcbiAgICAgIGlzRm9jdXNlZDogZmFsc2UsXG4gICAgICBzZWxlY3RWYWx1ZTogW10sXG4gICAgICBjbGVhckZvY3VzVmFsdWVPblVwZGF0ZTogZmFsc2UsXG4gICAgICBwcmV2V2FzRm9jdXNlZDogZmFsc2UsXG4gICAgICBpbnB1dElzSGlkZGVuQWZ0ZXJVcGRhdGU6IHVuZGVmaW5lZCxcbiAgICAgIHByZXZQcm9wczogdW5kZWZpbmVkLFxuICAgICAgaW5zdGFuY2VQcmVmaXg6ICcnXG4gICAgfTtcbiAgICBfdGhpcy5ibG9ja09wdGlvbkhvdmVyID0gZmFsc2U7XG4gICAgX3RoaXMuaXNDb21wb3NpbmcgPSBmYWxzZTtcbiAgICBfdGhpcy5jb21tb25Qcm9wcyA9IHZvaWQgMDtcbiAgICBfdGhpcy5pbml0aWFsVG91Y2hYID0gMDtcbiAgICBfdGhpcy5pbml0aWFsVG91Y2hZID0gMDtcbiAgICBfdGhpcy5vcGVuQWZ0ZXJGb2N1cyA9IGZhbHNlO1xuICAgIF90aGlzLnNjcm9sbFRvRm9jdXNlZE9wdGlvbk9uVXBkYXRlID0gZmFsc2U7XG4gICAgX3RoaXMudXNlcklzRHJhZ2dpbmcgPSB2b2lkIDA7XG4gICAgX3RoaXMuaXNBcHBsZURldmljZSA9IGlzQXBwbGVEZXZpY2UoKTtcbiAgICBfdGhpcy5jb250cm9sUmVmID0gbnVsbDtcbiAgICBfdGhpcy5nZXRDb250cm9sUmVmID0gZnVuY3Rpb24gKHJlZikge1xuICAgICAgX3RoaXMuY29udHJvbFJlZiA9IHJlZjtcbiAgICB9O1xuICAgIF90aGlzLmZvY3VzZWRPcHRpb25SZWYgPSBudWxsO1xuICAgIF90aGlzLmdldEZvY3VzZWRPcHRpb25SZWYgPSBmdW5jdGlvbiAocmVmKSB7XG4gICAgICBfdGhpcy5mb2N1c2VkT3B0aW9uUmVmID0gcmVmO1xuICAgIH07XG4gICAgX3RoaXMubWVudUxpc3RSZWYgPSBudWxsO1xuICAgIF90aGlzLmdldE1lbnVMaXN0UmVmID0gZnVuY3Rpb24gKHJlZikge1xuICAgICAgX3RoaXMubWVudUxpc3RSZWYgPSByZWY7XG4gICAgfTtcbiAgICBfdGhpcy5pbnB1dFJlZiA9IG51bGw7XG4gICAgX3RoaXMuZ2V0SW5wdXRSZWYgPSBmdW5jdGlvbiAocmVmKSB7XG4gICAgICBfdGhpcy5pbnB1dFJlZiA9IHJlZjtcbiAgICB9O1xuICAgIF90aGlzLmZvY3VzID0gX3RoaXMuZm9jdXNJbnB1dDtcbiAgICBfdGhpcy5ibHVyID0gX3RoaXMuYmx1cklucHV0O1xuICAgIF90aGlzLm9uQ2hhbmdlID0gZnVuY3Rpb24gKG5ld1ZhbHVlLCBhY3Rpb25NZXRhKSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMgPSBfdGhpcy5wcm9wcyxcbiAgICAgICAgb25DaGFuZ2UgPSBfdGhpcyRwcm9wcy5vbkNoYW5nZSxcbiAgICAgICAgbmFtZSA9IF90aGlzJHByb3BzLm5hbWU7XG4gICAgICBhY3Rpb25NZXRhLm5hbWUgPSBuYW1lO1xuICAgICAgX3RoaXMuYXJpYU9uQ2hhbmdlKG5ld1ZhbHVlLCBhY3Rpb25NZXRhKTtcbiAgICAgIG9uQ2hhbmdlKG5ld1ZhbHVlLCBhY3Rpb25NZXRhKTtcbiAgICB9O1xuICAgIF90aGlzLnNldFZhbHVlID0gZnVuY3Rpb24gKG5ld1ZhbHVlLCBhY3Rpb24sIG9wdGlvbikge1xuICAgICAgdmFyIF90aGlzJHByb3BzMiA9IF90aGlzLnByb3BzLFxuICAgICAgICBjbG9zZU1lbnVPblNlbGVjdCA9IF90aGlzJHByb3BzMi5jbG9zZU1lbnVPblNlbGVjdCxcbiAgICAgICAgaXNNdWx0aSA9IF90aGlzJHByb3BzMi5pc011bHRpLFxuICAgICAgICBpbnB1dFZhbHVlID0gX3RoaXMkcHJvcHMyLmlucHV0VmFsdWU7XG4gICAgICBfdGhpcy5vbklucHV0Q2hhbmdlKCcnLCB7XG4gICAgICAgIGFjdGlvbjogJ3NldC12YWx1ZScsXG4gICAgICAgIHByZXZJbnB1dFZhbHVlOiBpbnB1dFZhbHVlXG4gICAgICB9KTtcbiAgICAgIGlmIChjbG9zZU1lbnVPblNlbGVjdCkge1xuICAgICAgICBfdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgaW5wdXRJc0hpZGRlbkFmdGVyVXBkYXRlOiAhaXNNdWx0aVxuICAgICAgICB9KTtcbiAgICAgICAgX3RoaXMub25NZW51Q2xvc2UoKTtcbiAgICAgIH1cbiAgICAgIC8vIHdoZW4gdGhlIHNlbGVjdCB2YWx1ZSBzaG91bGQgY2hhbmdlLCB3ZSBzaG91bGQgcmVzZXQgZm9jdXNlZFZhbHVlXG4gICAgICBfdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGNsZWFyRm9jdXNWYWx1ZU9uVXBkYXRlOiB0cnVlXG4gICAgICB9KTtcbiAgICAgIF90aGlzLm9uQ2hhbmdlKG5ld1ZhbHVlLCB7XG4gICAgICAgIGFjdGlvbjogYWN0aW9uLFxuICAgICAgICBvcHRpb246IG9wdGlvblxuICAgICAgfSk7XG4gICAgfTtcbiAgICBfdGhpcy5zZWxlY3RPcHRpb24gPSBmdW5jdGlvbiAobmV3VmFsdWUpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wczMgPSBfdGhpcy5wcm9wcyxcbiAgICAgICAgYmx1cklucHV0T25TZWxlY3QgPSBfdGhpcyRwcm9wczMuYmx1cklucHV0T25TZWxlY3QsXG4gICAgICAgIGlzTXVsdGkgPSBfdGhpcyRwcm9wczMuaXNNdWx0aSxcbiAgICAgICAgbmFtZSA9IF90aGlzJHByb3BzMy5uYW1lO1xuICAgICAgdmFyIHNlbGVjdFZhbHVlID0gX3RoaXMuc3RhdGUuc2VsZWN0VmFsdWU7XG4gICAgICB2YXIgZGVzZWxlY3RlZCA9IGlzTXVsdGkgJiYgX3RoaXMuaXNPcHRpb25TZWxlY3RlZChuZXdWYWx1ZSwgc2VsZWN0VmFsdWUpO1xuICAgICAgdmFyIGlzRGlzYWJsZWQgPSBfdGhpcy5pc09wdGlvbkRpc2FibGVkKG5ld1ZhbHVlLCBzZWxlY3RWYWx1ZSk7XG4gICAgICBpZiAoZGVzZWxlY3RlZCkge1xuICAgICAgICB2YXIgY2FuZGlkYXRlID0gX3RoaXMuZ2V0T3B0aW9uVmFsdWUobmV3VmFsdWUpO1xuICAgICAgICBfdGhpcy5zZXRWYWx1ZShtdWx0aVZhbHVlQXNWYWx1ZShzZWxlY3RWYWx1ZS5maWx0ZXIoZnVuY3Rpb24gKGkpIHtcbiAgICAgICAgICByZXR1cm4gX3RoaXMuZ2V0T3B0aW9uVmFsdWUoaSkgIT09IGNhbmRpZGF0ZTtcbiAgICAgICAgfSkpLCAnZGVzZWxlY3Qtb3B0aW9uJywgbmV3VmFsdWUpO1xuICAgICAgfSBlbHNlIGlmICghaXNEaXNhYmxlZCkge1xuICAgICAgICAvLyBTZWxlY3Qgb3B0aW9uIGlmIG9wdGlvbiBpcyBub3QgZGlzYWJsZWRcbiAgICAgICAgaWYgKGlzTXVsdGkpIHtcbiAgICAgICAgICBfdGhpcy5zZXRWYWx1ZShtdWx0aVZhbHVlQXNWYWx1ZShbXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KHNlbGVjdFZhbHVlKSwgW25ld1ZhbHVlXSkpLCAnc2VsZWN0LW9wdGlvbicsIG5ld1ZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBfdGhpcy5zZXRWYWx1ZShzaW5nbGVWYWx1ZUFzVmFsdWUobmV3VmFsdWUpLCAnc2VsZWN0LW9wdGlvbicpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBfdGhpcy5hcmlhT25DaGFuZ2Uoc2luZ2xlVmFsdWVBc1ZhbHVlKG5ld1ZhbHVlKSwge1xuICAgICAgICAgIGFjdGlvbjogJ3NlbGVjdC1vcHRpb24nLFxuICAgICAgICAgIG9wdGlvbjogbmV3VmFsdWUsXG4gICAgICAgICAgbmFtZTogbmFtZVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGJsdXJJbnB1dE9uU2VsZWN0KSB7XG4gICAgICAgIF90aGlzLmJsdXJJbnB1dCgpO1xuICAgICAgfVxuICAgIH07XG4gICAgX3RoaXMucmVtb3ZlVmFsdWUgPSBmdW5jdGlvbiAocmVtb3ZlZFZhbHVlKSB7XG4gICAgICB2YXIgaXNNdWx0aSA9IF90aGlzLnByb3BzLmlzTXVsdGk7XG4gICAgICB2YXIgc2VsZWN0VmFsdWUgPSBfdGhpcy5zdGF0ZS5zZWxlY3RWYWx1ZTtcbiAgICAgIHZhciBjYW5kaWRhdGUgPSBfdGhpcy5nZXRPcHRpb25WYWx1ZShyZW1vdmVkVmFsdWUpO1xuICAgICAgdmFyIG5ld1ZhbHVlQXJyYXkgPSBzZWxlY3RWYWx1ZS5maWx0ZXIoZnVuY3Rpb24gKGkpIHtcbiAgICAgICAgcmV0dXJuIF90aGlzLmdldE9wdGlvblZhbHVlKGkpICE9PSBjYW5kaWRhdGU7XG4gICAgICB9KTtcbiAgICAgIHZhciBuZXdWYWx1ZSA9IHZhbHVlVGVybmFyeShpc011bHRpLCBuZXdWYWx1ZUFycmF5LCBuZXdWYWx1ZUFycmF5WzBdIHx8IG51bGwpO1xuICAgICAgX3RoaXMub25DaGFuZ2UobmV3VmFsdWUsIHtcbiAgICAgICAgYWN0aW9uOiAncmVtb3ZlLXZhbHVlJyxcbiAgICAgICAgcmVtb3ZlZFZhbHVlOiByZW1vdmVkVmFsdWVcbiAgICAgIH0pO1xuICAgICAgX3RoaXMuZm9jdXNJbnB1dCgpO1xuICAgIH07XG4gICAgX3RoaXMuY2xlYXJWYWx1ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBzZWxlY3RWYWx1ZSA9IF90aGlzLnN0YXRlLnNlbGVjdFZhbHVlO1xuICAgICAgX3RoaXMub25DaGFuZ2UodmFsdWVUZXJuYXJ5KF90aGlzLnByb3BzLmlzTXVsdGksIFtdLCBudWxsKSwge1xuICAgICAgICBhY3Rpb246ICdjbGVhcicsXG4gICAgICAgIHJlbW92ZWRWYWx1ZXM6IHNlbGVjdFZhbHVlXG4gICAgICB9KTtcbiAgICB9O1xuICAgIF90aGlzLnBvcFZhbHVlID0gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIGlzTXVsdGkgPSBfdGhpcy5wcm9wcy5pc011bHRpO1xuICAgICAgdmFyIHNlbGVjdFZhbHVlID0gX3RoaXMuc3RhdGUuc2VsZWN0VmFsdWU7XG4gICAgICB2YXIgbGFzdFNlbGVjdGVkVmFsdWUgPSBzZWxlY3RWYWx1ZVtzZWxlY3RWYWx1ZS5sZW5ndGggLSAxXTtcbiAgICAgIHZhciBuZXdWYWx1ZUFycmF5ID0gc2VsZWN0VmFsdWUuc2xpY2UoMCwgc2VsZWN0VmFsdWUubGVuZ3RoIC0gMSk7XG4gICAgICB2YXIgbmV3VmFsdWUgPSB2YWx1ZVRlcm5hcnkoaXNNdWx0aSwgbmV3VmFsdWVBcnJheSwgbmV3VmFsdWVBcnJheVswXSB8fCBudWxsKTtcbiAgICAgIGlmIChsYXN0U2VsZWN0ZWRWYWx1ZSkge1xuICAgICAgICBfdGhpcy5vbkNoYW5nZShuZXdWYWx1ZSwge1xuICAgICAgICAgIGFjdGlvbjogJ3BvcC12YWx1ZScsXG4gICAgICAgICAgcmVtb3ZlZFZhbHVlOiBsYXN0U2VsZWN0ZWRWYWx1ZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9O1xuICAgIF90aGlzLmdldEZvY3VzZWRPcHRpb25JZCA9IGZ1bmN0aW9uIChmb2N1c2VkT3B0aW9uKSB7XG4gICAgICByZXR1cm4gZ2V0Rm9jdXNlZE9wdGlvbklkKF90aGlzLnN0YXRlLmZvY3VzYWJsZU9wdGlvbnNXaXRoSWRzLCBmb2N1c2VkT3B0aW9uKTtcbiAgICB9O1xuICAgIF90aGlzLmdldEZvY3VzYWJsZU9wdGlvbnNXaXRoSWRzID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGJ1aWxkRm9jdXNhYmxlT3B0aW9uc1dpdGhJZHMoYnVpbGRDYXRlZ29yaXplZE9wdGlvbnMoX3RoaXMucHJvcHMsIF90aGlzLnN0YXRlLnNlbGVjdFZhbHVlKSwgX3RoaXMuZ2V0RWxlbWVudElkKCdvcHRpb24nKSk7XG4gICAgfTtcbiAgICBfdGhpcy5nZXRWYWx1ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBfdGhpcy5zdGF0ZS5zZWxlY3RWYWx1ZTtcbiAgICB9O1xuICAgIF90aGlzLmN4ID0gZnVuY3Rpb24gKCkge1xuICAgICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgICB9XG4gICAgICByZXR1cm4gY2xhc3NOYW1lcy5hcHBseSh2b2lkIDAsIFtfdGhpcy5wcm9wcy5jbGFzc05hbWVQcmVmaXhdLmNvbmNhdChhcmdzKSk7XG4gICAgfTtcbiAgICBfdGhpcy5nZXRPcHRpb25MYWJlbCA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICByZXR1cm4gZ2V0T3B0aW9uTGFiZWwoX3RoaXMucHJvcHMsIGRhdGEpO1xuICAgIH07XG4gICAgX3RoaXMuZ2V0T3B0aW9uVmFsdWUgPSBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgcmV0dXJuIGdldE9wdGlvblZhbHVlKF90aGlzLnByb3BzLCBkYXRhKTtcbiAgICB9O1xuICAgIF90aGlzLmdldFN0eWxlcyA9IGZ1bmN0aW9uIChrZXksIHByb3BzKSB7XG4gICAgICB2YXIgdW5zdHlsZWQgPSBfdGhpcy5wcm9wcy51bnN0eWxlZDtcbiAgICAgIHZhciBiYXNlID0gZGVmYXVsdFN0eWxlc1trZXldKHByb3BzLCB1bnN0eWxlZCk7XG4gICAgICBiYXNlLmJveFNpemluZyA9ICdib3JkZXItYm94JztcbiAgICAgIHZhciBjdXN0b20gPSBfdGhpcy5wcm9wcy5zdHlsZXNba2V5XTtcbiAgICAgIHJldHVybiBjdXN0b20gPyBjdXN0b20oYmFzZSwgcHJvcHMpIDogYmFzZTtcbiAgICB9O1xuICAgIF90aGlzLmdldENsYXNzTmFtZXMgPSBmdW5jdGlvbiAoa2V5LCBwcm9wcykge1xuICAgICAgdmFyIF90aGlzJHByb3BzJGNsYXNzTmFtZSwgX3RoaXMkcHJvcHMkY2xhc3NOYW1lMjtcbiAgICAgIHJldHVybiAoX3RoaXMkcHJvcHMkY2xhc3NOYW1lID0gKF90aGlzJHByb3BzJGNsYXNzTmFtZTIgPSBfdGhpcy5wcm9wcy5jbGFzc05hbWVzKVtrZXldKSA9PT0gbnVsbCB8fCBfdGhpcyRwcm9wcyRjbGFzc05hbWUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJHByb3BzJGNsYXNzTmFtZS5jYWxsKF90aGlzJHByb3BzJGNsYXNzTmFtZTIsIHByb3BzKTtcbiAgICB9O1xuICAgIF90aGlzLmdldEVsZW1lbnRJZCA9IGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICByZXR1cm4gXCJcIi5jb25jYXQoX3RoaXMuc3RhdGUuaW5zdGFuY2VQcmVmaXgsIFwiLVwiKS5jb25jYXQoZWxlbWVudCk7XG4gICAgfTtcbiAgICBfdGhpcy5nZXRDb21wb25lbnRzID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGRlZmF1bHRDb21wb25lbnRzKF90aGlzLnByb3BzKTtcbiAgICB9O1xuICAgIF90aGlzLmJ1aWxkQ2F0ZWdvcml6ZWRPcHRpb25zID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGJ1aWxkQ2F0ZWdvcml6ZWRPcHRpb25zKF90aGlzLnByb3BzLCBfdGhpcy5zdGF0ZS5zZWxlY3RWYWx1ZSk7XG4gICAgfTtcbiAgICBfdGhpcy5nZXRDYXRlZ29yaXplZE9wdGlvbnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gX3RoaXMucHJvcHMubWVudUlzT3BlbiA/IF90aGlzLmJ1aWxkQ2F0ZWdvcml6ZWRPcHRpb25zKCkgOiBbXTtcbiAgICB9O1xuICAgIF90aGlzLmJ1aWxkRm9jdXNhYmxlT3B0aW9ucyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBidWlsZEZvY3VzYWJsZU9wdGlvbnNGcm9tQ2F0ZWdvcml6ZWRPcHRpb25zKF90aGlzLmJ1aWxkQ2F0ZWdvcml6ZWRPcHRpb25zKCkpO1xuICAgIH07XG4gICAgX3RoaXMuZ2V0Rm9jdXNhYmxlT3B0aW9ucyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBfdGhpcy5wcm9wcy5tZW51SXNPcGVuID8gX3RoaXMuYnVpbGRGb2N1c2FibGVPcHRpb25zKCkgOiBbXTtcbiAgICB9O1xuICAgIF90aGlzLmFyaWFPbkNoYW5nZSA9IGZ1bmN0aW9uICh2YWx1ZSwgYWN0aW9uTWV0YSkge1xuICAgICAgX3RoaXMuc2V0U3RhdGUoe1xuICAgICAgICBhcmlhU2VsZWN0aW9uOiBfb2JqZWN0U3ByZWFkKHtcbiAgICAgICAgICB2YWx1ZTogdmFsdWVcbiAgICAgICAgfSwgYWN0aW9uTWV0YSlcbiAgICAgIH0pO1xuICAgIH07XG4gICAgX3RoaXMub25NZW51TW91c2VEb3duID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICBpZiAoZXZlbnQuYnV0dG9uICE9PSAwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIF90aGlzLmZvY3VzSW5wdXQoKTtcbiAgICB9O1xuICAgIF90aGlzLm9uTWVudU1vdXNlTW92ZSA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgX3RoaXMuYmxvY2tPcHRpb25Ib3ZlciA9IGZhbHNlO1xuICAgIH07XG4gICAgX3RoaXMub25Db250cm9sTW91c2VEb3duID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAvLyBFdmVudCBjYXB0dXJlZCBieSBkcm9wZG93biBpbmRpY2F0b3JcbiAgICAgIGlmIChldmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHZhciBvcGVuTWVudU9uQ2xpY2sgPSBfdGhpcy5wcm9wcy5vcGVuTWVudU9uQ2xpY2s7XG4gICAgICBpZiAoIV90aGlzLnN0YXRlLmlzRm9jdXNlZCkge1xuICAgICAgICBpZiAob3Blbk1lbnVPbkNsaWNrKSB7XG4gICAgICAgICAgX3RoaXMub3BlbkFmdGVyRm9jdXMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIF90aGlzLmZvY3VzSW5wdXQoKTtcbiAgICAgIH0gZWxzZSBpZiAoIV90aGlzLnByb3BzLm1lbnVJc09wZW4pIHtcbiAgICAgICAgaWYgKG9wZW5NZW51T25DbGljaykge1xuICAgICAgICAgIF90aGlzLm9wZW5NZW51KCdmaXJzdCcpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoZXZlbnQudGFyZ2V0LnRhZ05hbWUgIT09ICdJTlBVVCcgJiYgZXZlbnQudGFyZ2V0LnRhZ05hbWUgIT09ICdURVhUQVJFQScpIHtcbiAgICAgICAgICBfdGhpcy5vbk1lbnVDbG9zZSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoZXZlbnQudGFyZ2V0LnRhZ05hbWUgIT09ICdJTlBVVCcgJiYgZXZlbnQudGFyZ2V0LnRhZ05hbWUgIT09ICdURVhUQVJFQScpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIF90aGlzLm9uRHJvcGRvd25JbmRpY2F0b3JNb3VzZURvd24gPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIC8vIGlnbm9yZSBtb3VzZSBldmVudHMgdGhhdCB3ZXJlbid0IHRyaWdnZXJlZCBieSB0aGUgcHJpbWFyeSBidXR0b25cbiAgICAgIGlmIChldmVudCAmJiBldmVudC50eXBlID09PSAnbW91c2Vkb3duJyAmJiBldmVudC5idXR0b24gIT09IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKF90aGlzLnByb3BzLmlzRGlzYWJsZWQpIHJldHVybjtcbiAgICAgIHZhciBfdGhpcyRwcm9wczQgPSBfdGhpcy5wcm9wcyxcbiAgICAgICAgaXNNdWx0aSA9IF90aGlzJHByb3BzNC5pc011bHRpLFxuICAgICAgICBtZW51SXNPcGVuID0gX3RoaXMkcHJvcHM0Lm1lbnVJc09wZW47XG4gICAgICBfdGhpcy5mb2N1c0lucHV0KCk7XG4gICAgICBpZiAobWVudUlzT3Blbikge1xuICAgICAgICBfdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgaW5wdXRJc0hpZGRlbkFmdGVyVXBkYXRlOiAhaXNNdWx0aVxuICAgICAgICB9KTtcbiAgICAgICAgX3RoaXMub25NZW51Q2xvc2UoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIF90aGlzLm9wZW5NZW51KCdmaXJzdCcpO1xuICAgICAgfVxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9O1xuICAgIF90aGlzLm9uQ2xlYXJJbmRpY2F0b3JNb3VzZURvd24gPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIC8vIGlnbm9yZSBtb3VzZSBldmVudHMgdGhhdCB3ZXJlbid0IHRyaWdnZXJlZCBieSB0aGUgcHJpbWFyeSBidXR0b25cbiAgICAgIGlmIChldmVudCAmJiBldmVudC50eXBlID09PSAnbW91c2Vkb3duJyAmJiBldmVudC5idXR0b24gIT09IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgX3RoaXMuY2xlYXJWYWx1ZSgpO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIF90aGlzLm9wZW5BZnRlckZvY3VzID0gZmFsc2U7XG4gICAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ3RvdWNoZW5kJykge1xuICAgICAgICBfdGhpcy5mb2N1c0lucHV0KCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gX3RoaXMuZm9jdXNJbnB1dCgpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9O1xuICAgIF90aGlzLm9uU2Nyb2xsID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICBpZiAodHlwZW9mIF90aGlzLnByb3BzLmNsb3NlTWVudU9uU2Nyb2xsID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgaWYgKGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50ICYmIGlzRG9jdW1lbnRFbGVtZW50KGV2ZW50LnRhcmdldCkpIHtcbiAgICAgICAgICBfdGhpcy5wcm9wcy5vbk1lbnVDbG9zZSgpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBfdGhpcy5wcm9wcy5jbG9zZU1lbnVPblNjcm9sbCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBpZiAoX3RoaXMucHJvcHMuY2xvc2VNZW51T25TY3JvbGwoZXZlbnQpKSB7XG4gICAgICAgICAgX3RoaXMucHJvcHMub25NZW51Q2xvc2UoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gICAgX3RoaXMub25Db21wb3NpdGlvblN0YXJ0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgX3RoaXMuaXNDb21wb3NpbmcgPSB0cnVlO1xuICAgIH07XG4gICAgX3RoaXMub25Db21wb3NpdGlvbkVuZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIF90aGlzLmlzQ29tcG9zaW5nID0gZmFsc2U7XG4gICAgfTtcbiAgICBfdGhpcy5vblRvdWNoU3RhcnQgPSBmdW5jdGlvbiAoX3JlZjIpIHtcbiAgICAgIHZhciB0b3VjaGVzID0gX3JlZjIudG91Y2hlcztcbiAgICAgIHZhciB0b3VjaCA9IHRvdWNoZXMgJiYgdG91Y2hlcy5pdGVtKDApO1xuICAgICAgaWYgKCF0b3VjaCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBfdGhpcy5pbml0aWFsVG91Y2hYID0gdG91Y2guY2xpZW50WDtcbiAgICAgIF90aGlzLmluaXRpYWxUb3VjaFkgPSB0b3VjaC5jbGllbnRZO1xuICAgICAgX3RoaXMudXNlcklzRHJhZ2dpbmcgPSBmYWxzZTtcbiAgICB9O1xuICAgIF90aGlzLm9uVG91Y2hNb3ZlID0gZnVuY3Rpb24gKF9yZWYzKSB7XG4gICAgICB2YXIgdG91Y2hlcyA9IF9yZWYzLnRvdWNoZXM7XG4gICAgICB2YXIgdG91Y2ggPSB0b3VjaGVzICYmIHRvdWNoZXMuaXRlbSgwKTtcbiAgICAgIGlmICghdG91Y2gpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdmFyIGRlbHRhWCA9IE1hdGguYWJzKHRvdWNoLmNsaWVudFggLSBfdGhpcy5pbml0aWFsVG91Y2hYKTtcbiAgICAgIHZhciBkZWx0YVkgPSBNYXRoLmFicyh0b3VjaC5jbGllbnRZIC0gX3RoaXMuaW5pdGlhbFRvdWNoWSk7XG4gICAgICB2YXIgbW92ZVRocmVzaG9sZCA9IDU7XG4gICAgICBfdGhpcy51c2VySXNEcmFnZ2luZyA9IGRlbHRhWCA+IG1vdmVUaHJlc2hvbGQgfHwgZGVsdGFZID4gbW92ZVRocmVzaG9sZDtcbiAgICB9O1xuICAgIF90aGlzLm9uVG91Y2hFbmQgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIGlmIChfdGhpcy51c2VySXNEcmFnZ2luZykgcmV0dXJuO1xuXG4gICAgICAvLyBjbG9zZSB0aGUgbWVudSBpZiB0aGUgdXNlciB0YXBzIG91dHNpZGVcbiAgICAgIC8vIHdlJ3JlIGNoZWNraW5nIG9uIGV2ZW50LnRhcmdldCBoZXJlIGluc3RlYWQgb2YgZXZlbnQuY3VycmVudFRhcmdldCwgYmVjYXVzZSB3ZSB3YW50IHRvIGFzc2VydCBpbmZvcm1hdGlvblxuICAgICAgLy8gb24gZXZlbnRzIG9uIGNoaWxkIGVsZW1lbnRzLCBub3QgdGhlIGRvY3VtZW50ICh3aGljaCB3ZSd2ZSBhdHRhY2hlZCB0aGlzIGhhbmRsZXIgdG8pLlxuICAgICAgaWYgKF90aGlzLmNvbnRyb2xSZWYgJiYgIV90aGlzLmNvbnRyb2xSZWYuY29udGFpbnMoZXZlbnQudGFyZ2V0KSAmJiBfdGhpcy5tZW51TGlzdFJlZiAmJiAhX3RoaXMubWVudUxpc3RSZWYuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgICBfdGhpcy5ibHVySW5wdXQoKTtcbiAgICAgIH1cblxuICAgICAgLy8gcmVzZXQgbW92ZSB2YXJzXG4gICAgICBfdGhpcy5pbml0aWFsVG91Y2hYID0gMDtcbiAgICAgIF90aGlzLmluaXRpYWxUb3VjaFkgPSAwO1xuICAgIH07XG4gICAgX3RoaXMub25Db250cm9sVG91Y2hFbmQgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIGlmIChfdGhpcy51c2VySXNEcmFnZ2luZykgcmV0dXJuO1xuICAgICAgX3RoaXMub25Db250cm9sTW91c2VEb3duKGV2ZW50KTtcbiAgICB9O1xuICAgIF90aGlzLm9uQ2xlYXJJbmRpY2F0b3JUb3VjaEVuZCA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgaWYgKF90aGlzLnVzZXJJc0RyYWdnaW5nKSByZXR1cm47XG4gICAgICBfdGhpcy5vbkNsZWFySW5kaWNhdG9yTW91c2VEb3duKGV2ZW50KTtcbiAgICB9O1xuICAgIF90aGlzLm9uRHJvcGRvd25JbmRpY2F0b3JUb3VjaEVuZCA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgaWYgKF90aGlzLnVzZXJJc0RyYWdnaW5nKSByZXR1cm47XG4gICAgICBfdGhpcy5vbkRyb3Bkb3duSW5kaWNhdG9yTW91c2VEb3duKGV2ZW50KTtcbiAgICB9O1xuICAgIF90aGlzLmhhbmRsZUlucHV0Q2hhbmdlID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICB2YXIgcHJldklucHV0VmFsdWUgPSBfdGhpcy5wcm9wcy5pbnB1dFZhbHVlO1xuICAgICAgdmFyIGlucHV0VmFsdWUgPSBldmVudC5jdXJyZW50VGFyZ2V0LnZhbHVlO1xuICAgICAgX3RoaXMuc2V0U3RhdGUoe1xuICAgICAgICBpbnB1dElzSGlkZGVuQWZ0ZXJVcGRhdGU6IGZhbHNlXG4gICAgICB9KTtcbiAgICAgIF90aGlzLm9uSW5wdXRDaGFuZ2UoaW5wdXRWYWx1ZSwge1xuICAgICAgICBhY3Rpb246ICdpbnB1dC1jaGFuZ2UnLFxuICAgICAgICBwcmV2SW5wdXRWYWx1ZTogcHJldklucHV0VmFsdWVcbiAgICAgIH0pO1xuICAgICAgaWYgKCFfdGhpcy5wcm9wcy5tZW51SXNPcGVuKSB7XG4gICAgICAgIF90aGlzLm9uTWVudU9wZW4oKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIF90aGlzLm9uSW5wdXRGb2N1cyA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgaWYgKF90aGlzLnByb3BzLm9uRm9jdXMpIHtcbiAgICAgICAgX3RoaXMucHJvcHMub25Gb2N1cyhldmVudCk7XG4gICAgICB9XG4gICAgICBfdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGlucHV0SXNIaWRkZW5BZnRlclVwZGF0ZTogZmFsc2UsXG4gICAgICAgIGlzRm9jdXNlZDogdHJ1ZVxuICAgICAgfSk7XG4gICAgICBpZiAoX3RoaXMub3BlbkFmdGVyRm9jdXMgfHwgX3RoaXMucHJvcHMub3Blbk1lbnVPbkZvY3VzKSB7XG4gICAgICAgIF90aGlzLm9wZW5NZW51KCdmaXJzdCcpO1xuICAgICAgfVxuICAgICAgX3RoaXMub3BlbkFmdGVyRm9jdXMgPSBmYWxzZTtcbiAgICB9O1xuICAgIF90aGlzLm9uSW5wdXRCbHVyID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICB2YXIgcHJldklucHV0VmFsdWUgPSBfdGhpcy5wcm9wcy5pbnB1dFZhbHVlO1xuICAgICAgaWYgKF90aGlzLm1lbnVMaXN0UmVmICYmIF90aGlzLm1lbnVMaXN0UmVmLmNvbnRhaW5zKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpKSB7XG4gICAgICAgIF90aGlzLmlucHV0UmVmLmZvY3VzKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChfdGhpcy5wcm9wcy5vbkJsdXIpIHtcbiAgICAgICAgX3RoaXMucHJvcHMub25CbHVyKGV2ZW50KTtcbiAgICAgIH1cbiAgICAgIF90aGlzLm9uSW5wdXRDaGFuZ2UoJycsIHtcbiAgICAgICAgYWN0aW9uOiAnaW5wdXQtYmx1cicsXG4gICAgICAgIHByZXZJbnB1dFZhbHVlOiBwcmV2SW5wdXRWYWx1ZVxuICAgICAgfSk7XG4gICAgICBfdGhpcy5vbk1lbnVDbG9zZSgpO1xuICAgICAgX3RoaXMuc2V0U3RhdGUoe1xuICAgICAgICBmb2N1c2VkVmFsdWU6IG51bGwsXG4gICAgICAgIGlzRm9jdXNlZDogZmFsc2VcbiAgICAgIH0pO1xuICAgIH07XG4gICAgX3RoaXMub25PcHRpb25Ib3ZlciA9IGZ1bmN0aW9uIChmb2N1c2VkT3B0aW9uKSB7XG4gICAgICBpZiAoX3RoaXMuYmxvY2tPcHRpb25Ib3ZlciB8fCBfdGhpcy5zdGF0ZS5mb2N1c2VkT3B0aW9uID09PSBmb2N1c2VkT3B0aW9uKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHZhciBvcHRpb25zID0gX3RoaXMuZ2V0Rm9jdXNhYmxlT3B0aW9ucygpO1xuICAgICAgdmFyIGZvY3VzZWRPcHRpb25JbmRleCA9IG9wdGlvbnMuaW5kZXhPZihmb2N1c2VkT3B0aW9uKTtcbiAgICAgIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgZm9jdXNlZE9wdGlvbjogZm9jdXNlZE9wdGlvbixcbiAgICAgICAgZm9jdXNlZE9wdGlvbklkOiBmb2N1c2VkT3B0aW9uSW5kZXggPiAtMSA/IF90aGlzLmdldEZvY3VzZWRPcHRpb25JZChmb2N1c2VkT3B0aW9uKSA6IG51bGxcbiAgICAgIH0pO1xuICAgIH07XG4gICAgX3RoaXMuc2hvdWxkSGlkZVNlbGVjdGVkT3B0aW9ucyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBzaG91bGRIaWRlU2VsZWN0ZWRPcHRpb25zKF90aGlzLnByb3BzKTtcbiAgICB9O1xuICAgIF90aGlzLm9uVmFsdWVJbnB1dEZvY3VzID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBfdGhpcy5mb2N1cygpO1xuICAgIH07XG4gICAgX3RoaXMub25LZXlEb3duID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHM1ID0gX3RoaXMucHJvcHMsXG4gICAgICAgIGlzTXVsdGkgPSBfdGhpcyRwcm9wczUuaXNNdWx0aSxcbiAgICAgICAgYmFja3NwYWNlUmVtb3Zlc1ZhbHVlID0gX3RoaXMkcHJvcHM1LmJhY2tzcGFjZVJlbW92ZXNWYWx1ZSxcbiAgICAgICAgZXNjYXBlQ2xlYXJzVmFsdWUgPSBfdGhpcyRwcm9wczUuZXNjYXBlQ2xlYXJzVmFsdWUsXG4gICAgICAgIGlucHV0VmFsdWUgPSBfdGhpcyRwcm9wczUuaW5wdXRWYWx1ZSxcbiAgICAgICAgaXNDbGVhcmFibGUgPSBfdGhpcyRwcm9wczUuaXNDbGVhcmFibGUsXG4gICAgICAgIGlzRGlzYWJsZWQgPSBfdGhpcyRwcm9wczUuaXNEaXNhYmxlZCxcbiAgICAgICAgbWVudUlzT3BlbiA9IF90aGlzJHByb3BzNS5tZW51SXNPcGVuLFxuICAgICAgICBvbktleURvd24gPSBfdGhpcyRwcm9wczUub25LZXlEb3duLFxuICAgICAgICB0YWJTZWxlY3RzVmFsdWUgPSBfdGhpcyRwcm9wczUudGFiU2VsZWN0c1ZhbHVlLFxuICAgICAgICBvcGVuTWVudU9uRm9jdXMgPSBfdGhpcyRwcm9wczUub3Blbk1lbnVPbkZvY3VzO1xuICAgICAgdmFyIF90aGlzJHN0YXRlID0gX3RoaXMuc3RhdGUsXG4gICAgICAgIGZvY3VzZWRPcHRpb24gPSBfdGhpcyRzdGF0ZS5mb2N1c2VkT3B0aW9uLFxuICAgICAgICBmb2N1c2VkVmFsdWUgPSBfdGhpcyRzdGF0ZS5mb2N1c2VkVmFsdWUsXG4gICAgICAgIHNlbGVjdFZhbHVlID0gX3RoaXMkc3RhdGUuc2VsZWN0VmFsdWU7XG4gICAgICBpZiAoaXNEaXNhYmxlZCkgcmV0dXJuO1xuICAgICAgaWYgKHR5cGVvZiBvbktleURvd24gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgb25LZXlEb3duKGV2ZW50KTtcbiAgICAgICAgaWYgKGV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gQmxvY2sgb3B0aW9uIGhvdmVyIGV2ZW50cyB3aGVuIHRoZSB1c2VyIGhhcyBqdXN0IHByZXNzZWQgYSBrZXlcbiAgICAgIF90aGlzLmJsb2NrT3B0aW9uSG92ZXIgPSB0cnVlO1xuICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgY2FzZSAnQXJyb3dMZWZ0JzpcbiAgICAgICAgICBpZiAoIWlzTXVsdGkgfHwgaW5wdXRWYWx1ZSkgcmV0dXJuO1xuICAgICAgICAgIF90aGlzLmZvY3VzVmFsdWUoJ3ByZXZpb3VzJyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0Fycm93UmlnaHQnOlxuICAgICAgICAgIGlmICghaXNNdWx0aSB8fCBpbnB1dFZhbHVlKSByZXR1cm47XG4gICAgICAgICAgX3RoaXMuZm9jdXNWYWx1ZSgnbmV4dCcpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdEZWxldGUnOlxuICAgICAgICBjYXNlICdCYWNrc3BhY2UnOlxuICAgICAgICAgIGlmIChpbnB1dFZhbHVlKSByZXR1cm47XG4gICAgICAgICAgaWYgKGZvY3VzZWRWYWx1ZSkge1xuICAgICAgICAgICAgX3RoaXMucmVtb3ZlVmFsdWUoZm9jdXNlZFZhbHVlKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCFiYWNrc3BhY2VSZW1vdmVzVmFsdWUpIHJldHVybjtcbiAgICAgICAgICAgIGlmIChpc011bHRpKSB7XG4gICAgICAgICAgICAgIF90aGlzLnBvcFZhbHVlKCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGlzQ2xlYXJhYmxlKSB7XG4gICAgICAgICAgICAgIF90aGlzLmNsZWFyVmFsdWUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ1RhYic6XG4gICAgICAgICAgaWYgKF90aGlzLmlzQ29tcG9zaW5nKSByZXR1cm47XG4gICAgICAgICAgaWYgKGV2ZW50LnNoaWZ0S2V5IHx8ICFtZW51SXNPcGVuIHx8ICF0YWJTZWxlY3RzVmFsdWUgfHwgIWZvY3VzZWRPcHRpb24gfHxcbiAgICAgICAgICAvLyBkb24ndCBjYXB0dXJlIHRoZSBldmVudCBpZiB0aGUgbWVudSBvcGVucyBvbiBmb2N1cyBhbmQgdGhlIGZvY3VzZWRcbiAgICAgICAgICAvLyBvcHRpb24gaXMgYWxyZWFkeSBzZWxlY3RlZDsgaXQgYnJlYWtzIHRoZSBmbG93IG9mIG5hdmlnYXRpb25cbiAgICAgICAgICBvcGVuTWVudU9uRm9jdXMgJiYgX3RoaXMuaXNPcHRpb25TZWxlY3RlZChmb2N1c2VkT3B0aW9uLCBzZWxlY3RWYWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgX3RoaXMuc2VsZWN0T3B0aW9uKGZvY3VzZWRPcHRpb24pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdFbnRlcic6XG4gICAgICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IDIyOSkge1xuICAgICAgICAgICAgLy8gaWdub3JlIHRoZSBrZXlkb3duIGV2ZW50IGZyb20gYW4gSW5wdXQgTWV0aG9kIEVkaXRvcihJTUUpXG4gICAgICAgICAgICAvLyByZWYuIGh0dHBzOi8vd3d3LnczLm9yZy9UUi91aWV2ZW50cy8jZGV0ZXJtaW5lLWtleWRvd24ta2V5dXAta2V5Q29kZVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChtZW51SXNPcGVuKSB7XG4gICAgICAgICAgICBpZiAoIWZvY3VzZWRPcHRpb24pIHJldHVybjtcbiAgICAgICAgICAgIGlmIChfdGhpcy5pc0NvbXBvc2luZykgcmV0dXJuO1xuICAgICAgICAgICAgX3RoaXMuc2VsZWN0T3B0aW9uKGZvY3VzZWRPcHRpb24pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY2FzZSAnRXNjYXBlJzpcbiAgICAgICAgICBpZiAobWVudUlzT3Blbikge1xuICAgICAgICAgICAgX3RoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgICBpbnB1dElzSGlkZGVuQWZ0ZXJVcGRhdGU6IGZhbHNlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIF90aGlzLm9uSW5wdXRDaGFuZ2UoJycsIHtcbiAgICAgICAgICAgICAgYWN0aW9uOiAnbWVudS1jbG9zZScsXG4gICAgICAgICAgICAgIHByZXZJbnB1dFZhbHVlOiBpbnB1dFZhbHVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIF90aGlzLm9uTWVudUNsb3NlKCk7XG4gICAgICAgICAgfSBlbHNlIGlmIChpc0NsZWFyYWJsZSAmJiBlc2NhcGVDbGVhcnNWYWx1ZSkge1xuICAgICAgICAgICAgX3RoaXMuY2xlYXJWYWx1ZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnICc6XG4gICAgICAgICAgLy8gc3BhY2VcbiAgICAgICAgICBpZiAoaW5wdXRWYWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoIW1lbnVJc09wZW4pIHtcbiAgICAgICAgICAgIF90aGlzLm9wZW5NZW51KCdmaXJzdCcpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghZm9jdXNlZE9wdGlvbikgcmV0dXJuO1xuICAgICAgICAgIF90aGlzLnNlbGVjdE9wdGlvbihmb2N1c2VkT3B0aW9uKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnQXJyb3dVcCc6XG4gICAgICAgICAgaWYgKG1lbnVJc09wZW4pIHtcbiAgICAgICAgICAgIF90aGlzLmZvY3VzT3B0aW9uKCd1cCcpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBfdGhpcy5vcGVuTWVudSgnbGFzdCcpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgICBpZiAobWVudUlzT3Blbikge1xuICAgICAgICAgICAgX3RoaXMuZm9jdXNPcHRpb24oJ2Rvd24nKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgX3RoaXMub3Blbk1lbnUoJ2ZpcnN0Jyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdQYWdlVXAnOlxuICAgICAgICAgIGlmICghbWVudUlzT3BlbikgcmV0dXJuO1xuICAgICAgICAgIF90aGlzLmZvY3VzT3B0aW9uKCdwYWdldXAnKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnUGFnZURvd24nOlxuICAgICAgICAgIGlmICghbWVudUlzT3BlbikgcmV0dXJuO1xuICAgICAgICAgIF90aGlzLmZvY3VzT3B0aW9uKCdwYWdlZG93bicpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdIb21lJzpcbiAgICAgICAgICBpZiAoIW1lbnVJc09wZW4pIHJldHVybjtcbiAgICAgICAgICBfdGhpcy5mb2N1c09wdGlvbignZmlyc3QnKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnRW5kJzpcbiAgICAgICAgICBpZiAoIW1lbnVJc09wZW4pIHJldHVybjtcbiAgICAgICAgICBfdGhpcy5mb2N1c09wdGlvbignbGFzdCcpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfTtcbiAgICBfdGhpcy5zdGF0ZS5pbnN0YW5jZVByZWZpeCA9ICdyZWFjdC1zZWxlY3QtJyArIChfdGhpcy5wcm9wcy5pbnN0YW5jZUlkIHx8ICsraW5zdGFuY2VJZCk7XG4gICAgX3RoaXMuc3RhdGUuc2VsZWN0VmFsdWUgPSBjbGVhblZhbHVlKF9wcm9wcy52YWx1ZSk7XG4gICAgLy8gU2V0IGZvY3VzZWRPcHRpb24gaWYgbWVudUlzT3BlbiBpcyBzZXQgb24gaW5pdCAoZS5nLiBkZWZhdWx0TWVudUlzT3BlbilcbiAgICBpZiAoX3Byb3BzLm1lbnVJc09wZW4gJiYgX3RoaXMuc3RhdGUuc2VsZWN0VmFsdWUubGVuZ3RoKSB7XG4gICAgICB2YXIgZm9jdXNhYmxlT3B0aW9uc1dpdGhJZHMgPSBfdGhpcy5nZXRGb2N1c2FibGVPcHRpb25zV2l0aElkcygpO1xuICAgICAgdmFyIGZvY3VzYWJsZU9wdGlvbnMgPSBfdGhpcy5idWlsZEZvY3VzYWJsZU9wdGlvbnMoKTtcbiAgICAgIHZhciBvcHRpb25JbmRleCA9IGZvY3VzYWJsZU9wdGlvbnMuaW5kZXhPZihfdGhpcy5zdGF0ZS5zZWxlY3RWYWx1ZVswXSk7XG4gICAgICBfdGhpcy5zdGF0ZS5mb2N1c2FibGVPcHRpb25zV2l0aElkcyA9IGZvY3VzYWJsZU9wdGlvbnNXaXRoSWRzO1xuICAgICAgX3RoaXMuc3RhdGUuZm9jdXNlZE9wdGlvbiA9IGZvY3VzYWJsZU9wdGlvbnNbb3B0aW9uSW5kZXhdO1xuICAgICAgX3RoaXMuc3RhdGUuZm9jdXNlZE9wdGlvbklkID0gZ2V0Rm9jdXNlZE9wdGlvbklkKGZvY3VzYWJsZU9wdGlvbnNXaXRoSWRzLCBmb2N1c2FibGVPcHRpb25zW29wdGlvbkluZGV4XSk7XG4gICAgfVxuICAgIHJldHVybiBfdGhpcztcbiAgfVxuICBfY3JlYXRlQ2xhc3MoU2VsZWN0LCBbe1xuICAgIGtleTogXCJjb21wb25lbnREaWRNb3VudFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICAgIHRoaXMuc3RhcnRMaXN0ZW5pbmdDb21wb3NpdGlvbigpO1xuICAgICAgdGhpcy5zdGFydExpc3RlbmluZ1RvVG91Y2goKTtcbiAgICAgIGlmICh0aGlzLnByb3BzLmNsb3NlTWVudU9uU2Nyb2xsICYmIGRvY3VtZW50ICYmIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIpIHtcbiAgICAgICAgLy8gTGlzdGVuIHRvIGFsbCBzY3JvbGwgZXZlbnRzLCBhbmQgZmlsdGVyIHRoZW0gb3V0IGluc2lkZSBvZiAnb25TY3JvbGwnXG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMub25TY3JvbGwsIHRydWUpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMucHJvcHMuYXV0b0ZvY3VzKSB7XG4gICAgICAgIHRoaXMuZm9jdXNJbnB1dCgpO1xuICAgICAgfVxuXG4gICAgICAvLyBTY3JvbGwgZm9jdXNlZE9wdGlvbiBpbnRvIHZpZXcgaWYgbWVudUlzT3BlbiBpcyBzZXQgb24gbW91bnQgKGUuZy4gZGVmYXVsdE1lbnVJc09wZW4pXG4gICAgICBpZiAodGhpcy5wcm9wcy5tZW51SXNPcGVuICYmIHRoaXMuc3RhdGUuZm9jdXNlZE9wdGlvbiAmJiB0aGlzLm1lbnVMaXN0UmVmICYmIHRoaXMuZm9jdXNlZE9wdGlvblJlZikge1xuICAgICAgICBzY3JvbGxJbnRvVmlldyh0aGlzLm1lbnVMaXN0UmVmLCB0aGlzLmZvY3VzZWRPcHRpb25SZWYpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjb21wb25lbnREaWRVcGRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50RGlkVXBkYXRlKHByZXZQcm9wcykge1xuICAgICAgdmFyIF90aGlzJHByb3BzNiA9IHRoaXMucHJvcHMsXG4gICAgICAgIGlzRGlzYWJsZWQgPSBfdGhpcyRwcm9wczYuaXNEaXNhYmxlZCxcbiAgICAgICAgbWVudUlzT3BlbiA9IF90aGlzJHByb3BzNi5tZW51SXNPcGVuO1xuICAgICAgdmFyIGlzRm9jdXNlZCA9IHRoaXMuc3RhdGUuaXNGb2N1c2VkO1xuICAgICAgaWYgKFxuICAgICAgLy8gZW5zdXJlIGZvY3VzIGlzIHJlc3RvcmVkIGNvcnJlY3RseSB3aGVuIHRoZSBjb250cm9sIGJlY29tZXMgZW5hYmxlZFxuICAgICAgaXNGb2N1c2VkICYmICFpc0Rpc2FibGVkICYmIHByZXZQcm9wcy5pc0Rpc2FibGVkIHx8XG4gICAgICAvLyBlbnN1cmUgZm9jdXMgaXMgb24gdGhlIElucHV0IHdoZW4gdGhlIG1lbnUgb3BlbnNcbiAgICAgIGlzRm9jdXNlZCAmJiBtZW51SXNPcGVuICYmICFwcmV2UHJvcHMubWVudUlzT3Blbikge1xuICAgICAgICB0aGlzLmZvY3VzSW5wdXQoKTtcbiAgICAgIH1cbiAgICAgIGlmIChpc0ZvY3VzZWQgJiYgaXNEaXNhYmxlZCAmJiAhcHJldlByb3BzLmlzRGlzYWJsZWQpIHtcbiAgICAgICAgLy8gZW5zdXJlIHNlbGVjdCBzdGF0ZSBnZXRzIGJsdXJyZWQgaW4gY2FzZSBTZWxlY3QgaXMgcHJvZ3JhbW1hdGljYWxseSBkaXNhYmxlZCB3aGlsZSBmb2N1c2VkXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9uby1kaWQtdXBkYXRlLXNldC1zdGF0ZVxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICBpc0ZvY3VzZWQ6IGZhbHNlXG4gICAgICAgIH0sIHRoaXMub25NZW51Q2xvc2UpO1xuICAgICAgfSBlbHNlIGlmICghaXNGb2N1c2VkICYmICFpc0Rpc2FibGVkICYmIHByZXZQcm9wcy5pc0Rpc2FibGVkICYmIHRoaXMuaW5wdXRSZWYgPT09IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgLy8gZW5zdXJlIHNlbGVjdCBzdGF0ZSBnZXRzIGZvY3VzZWQgaW4gY2FzZSBTZWxlY3QgaXMgcHJvZ3JhbWF0aWNhbGx5IHJlLWVuYWJsZWQgd2hpbGUgZm9jdXNlZCAoRmlyZWZveClcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L25vLWRpZC11cGRhdGUtc2V0LXN0YXRlXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgIGlzRm9jdXNlZDogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgLy8gc2Nyb2xsIHRoZSBmb2N1c2VkIG9wdGlvbiBpbnRvIHZpZXcgaWYgbmVjZXNzYXJ5XG4gICAgICBpZiAodGhpcy5tZW51TGlzdFJlZiAmJiB0aGlzLmZvY3VzZWRPcHRpb25SZWYgJiYgdGhpcy5zY3JvbGxUb0ZvY3VzZWRPcHRpb25PblVwZGF0ZSkge1xuICAgICAgICBzY3JvbGxJbnRvVmlldyh0aGlzLm1lbnVMaXN0UmVmLCB0aGlzLmZvY3VzZWRPcHRpb25SZWYpO1xuICAgICAgICB0aGlzLnNjcm9sbFRvRm9jdXNlZE9wdGlvbk9uVXBkYXRlID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNvbXBvbmVudFdpbGxVbm1vdW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgICAgdGhpcy5zdG9wTGlzdGVuaW5nQ29tcG9zaXRpb24oKTtcbiAgICAgIHRoaXMuc3RvcExpc3RlbmluZ1RvVG91Y2goKTtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMub25TY3JvbGwsIHRydWUpO1xuICAgIH1cblxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC8vIENvbnN1bWVyIEhhbmRsZXJzXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIH0sIHtcbiAgICBrZXk6IFwib25NZW51T3BlblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBvbk1lbnVPcGVuKCkge1xuICAgICAgdGhpcy5wcm9wcy5vbk1lbnVPcGVuKCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcIm9uTWVudUNsb3NlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9uTWVudUNsb3NlKCkge1xuICAgICAgdGhpcy5vbklucHV0Q2hhbmdlKCcnLCB7XG4gICAgICAgIGFjdGlvbjogJ21lbnUtY2xvc2UnLFxuICAgICAgICBwcmV2SW5wdXRWYWx1ZTogdGhpcy5wcm9wcy5pbnB1dFZhbHVlXG4gICAgICB9KTtcbiAgICAgIHRoaXMucHJvcHMub25NZW51Q2xvc2UoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwib25JbnB1dENoYW5nZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBvbklucHV0Q2hhbmdlKG5ld1ZhbHVlLCBhY3Rpb25NZXRhKSB7XG4gICAgICB0aGlzLnByb3BzLm9uSW5wdXRDaGFuZ2UobmV3VmFsdWUsIGFjdGlvbk1ldGEpO1xuICAgIH1cblxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC8vIE1ldGhvZHNcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgfSwge1xuICAgIGtleTogXCJmb2N1c0lucHV0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGZvY3VzSW5wdXQoKSB7XG4gICAgICBpZiAoIXRoaXMuaW5wdXRSZWYpIHJldHVybjtcbiAgICAgIHRoaXMuaW5wdXRSZWYuZm9jdXMoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiYmx1cklucHV0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGJsdXJJbnB1dCgpIHtcbiAgICAgIGlmICghdGhpcy5pbnB1dFJlZikgcmV0dXJuO1xuICAgICAgdGhpcy5pbnB1dFJlZi5ibHVyKCk7XG4gICAgfVxuXG4gICAgLy8gYWxpYXNlZCBmb3IgY29uc3VtZXJzXG4gIH0sIHtcbiAgICBrZXk6IFwib3Blbk1lbnVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gb3Blbk1lbnUoZm9jdXNPcHRpb24pIHtcbiAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuICAgICAgdmFyIF90aGlzJHN0YXRlMiA9IHRoaXMuc3RhdGUsXG4gICAgICAgIHNlbGVjdFZhbHVlID0gX3RoaXMkc3RhdGUyLnNlbGVjdFZhbHVlLFxuICAgICAgICBpc0ZvY3VzZWQgPSBfdGhpcyRzdGF0ZTIuaXNGb2N1c2VkO1xuICAgICAgdmFyIGZvY3VzYWJsZU9wdGlvbnMgPSB0aGlzLmJ1aWxkRm9jdXNhYmxlT3B0aW9ucygpO1xuICAgICAgdmFyIG9wZW5BdEluZGV4ID0gZm9jdXNPcHRpb24gPT09ICdmaXJzdCcgPyAwIDogZm9jdXNhYmxlT3B0aW9ucy5sZW5ndGggLSAxO1xuICAgICAgaWYgKCF0aGlzLnByb3BzLmlzTXVsdGkpIHtcbiAgICAgICAgdmFyIHNlbGVjdGVkSW5kZXggPSBmb2N1c2FibGVPcHRpb25zLmluZGV4T2Yoc2VsZWN0VmFsdWVbMF0pO1xuICAgICAgICBpZiAoc2VsZWN0ZWRJbmRleCA+IC0xKSB7XG4gICAgICAgICAgb3BlbkF0SW5kZXggPSBzZWxlY3RlZEluZGV4O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIG9ubHkgc2Nyb2xsIGlmIHRoZSBtZW51IGlzbid0IGFscmVhZHkgb3BlblxuICAgICAgdGhpcy5zY3JvbGxUb0ZvY3VzZWRPcHRpb25PblVwZGF0ZSA9ICEoaXNGb2N1c2VkICYmIHRoaXMubWVudUxpc3RSZWYpO1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGlucHV0SXNIaWRkZW5BZnRlclVwZGF0ZTogZmFsc2UsXG4gICAgICAgIGZvY3VzZWRWYWx1ZTogbnVsbCxcbiAgICAgICAgZm9jdXNlZE9wdGlvbjogZm9jdXNhYmxlT3B0aW9uc1tvcGVuQXRJbmRleF0sXG4gICAgICAgIGZvY3VzZWRPcHRpb25JZDogdGhpcy5nZXRGb2N1c2VkT3B0aW9uSWQoZm9jdXNhYmxlT3B0aW9uc1tvcGVuQXRJbmRleF0pXG4gICAgICB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBfdGhpczIub25NZW51T3BlbigpO1xuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImZvY3VzVmFsdWVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZm9jdXNWYWx1ZShkaXJlY3Rpb24pIHtcbiAgICAgIHZhciBfdGhpcyRzdGF0ZTMgPSB0aGlzLnN0YXRlLFxuICAgICAgICBzZWxlY3RWYWx1ZSA9IF90aGlzJHN0YXRlMy5zZWxlY3RWYWx1ZSxcbiAgICAgICAgZm9jdXNlZFZhbHVlID0gX3RoaXMkc3RhdGUzLmZvY3VzZWRWYWx1ZTtcblxuICAgICAgLy8gT25seSBtdWx0aXNlbGVjdHMgc3VwcG9ydCB2YWx1ZSBmb2N1c2luZ1xuICAgICAgaWYgKCF0aGlzLnByb3BzLmlzTXVsdGkpIHJldHVybjtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICBmb2N1c2VkT3B0aW9uOiBudWxsXG4gICAgICB9KTtcbiAgICAgIHZhciBmb2N1c2VkSW5kZXggPSBzZWxlY3RWYWx1ZS5pbmRleE9mKGZvY3VzZWRWYWx1ZSk7XG4gICAgICBpZiAoIWZvY3VzZWRWYWx1ZSkge1xuICAgICAgICBmb2N1c2VkSW5kZXggPSAtMTtcbiAgICAgIH1cbiAgICAgIHZhciBsYXN0SW5kZXggPSBzZWxlY3RWYWx1ZS5sZW5ndGggLSAxO1xuICAgICAgdmFyIG5leHRGb2N1cyA9IC0xO1xuICAgICAgaWYgKCFzZWxlY3RWYWx1ZS5sZW5ndGgpIHJldHVybjtcbiAgICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7XG4gICAgICAgIGNhc2UgJ3ByZXZpb3VzJzpcbiAgICAgICAgICBpZiAoZm9jdXNlZEluZGV4ID09PSAwKSB7XG4gICAgICAgICAgICAvLyBkb24ndCBjeWNsZSBmcm9tIHRoZSBzdGFydCB0byB0aGUgZW5kXG4gICAgICAgICAgICBuZXh0Rm9jdXMgPSAwO1xuICAgICAgICAgIH0gZWxzZSBpZiAoZm9jdXNlZEluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgLy8gaWYgbm90aGluZyBpcyBmb2N1c2VkLCBmb2N1cyB0aGUgbGFzdCB2YWx1ZSBmaXJzdFxuICAgICAgICAgICAgbmV4dEZvY3VzID0gbGFzdEluZGV4O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuZXh0Rm9jdXMgPSBmb2N1c2VkSW5kZXggLSAxO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnbmV4dCc6XG4gICAgICAgICAgaWYgKGZvY3VzZWRJbmRleCA+IC0xICYmIGZvY3VzZWRJbmRleCA8IGxhc3RJbmRleCkge1xuICAgICAgICAgICAgbmV4dEZvY3VzID0gZm9jdXNlZEluZGV4ICsgMTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgaW5wdXRJc0hpZGRlbjogbmV4dEZvY3VzICE9PSAtMSxcbiAgICAgICAgZm9jdXNlZFZhbHVlOiBzZWxlY3RWYWx1ZVtuZXh0Rm9jdXNdXG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZm9jdXNPcHRpb25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZm9jdXNPcHRpb24oKSB7XG4gICAgICB2YXIgZGlyZWN0aW9uID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiAnZmlyc3QnO1xuICAgICAgdmFyIHBhZ2VTaXplID0gdGhpcy5wcm9wcy5wYWdlU2l6ZTtcbiAgICAgIHZhciBmb2N1c2VkT3B0aW9uID0gdGhpcy5zdGF0ZS5mb2N1c2VkT3B0aW9uO1xuICAgICAgdmFyIG9wdGlvbnMgPSB0aGlzLmdldEZvY3VzYWJsZU9wdGlvbnMoKTtcbiAgICAgIGlmICghb3B0aW9ucy5sZW5ndGgpIHJldHVybjtcbiAgICAgIHZhciBuZXh0Rm9jdXMgPSAwOyAvLyBoYW5kbGVzICdmaXJzdCdcbiAgICAgIHZhciBmb2N1c2VkSW5kZXggPSBvcHRpb25zLmluZGV4T2YoZm9jdXNlZE9wdGlvbik7XG4gICAgICBpZiAoIWZvY3VzZWRPcHRpb24pIHtcbiAgICAgICAgZm9jdXNlZEluZGV4ID0gLTE7XG4gICAgICB9XG4gICAgICBpZiAoZGlyZWN0aW9uID09PSAndXAnKSB7XG4gICAgICAgIG5leHRGb2N1cyA9IGZvY3VzZWRJbmRleCA+IDAgPyBmb2N1c2VkSW5kZXggLSAxIDogb3B0aW9ucy5sZW5ndGggLSAxO1xuICAgICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT09ICdkb3duJykge1xuICAgICAgICBuZXh0Rm9jdXMgPSAoZm9jdXNlZEluZGV4ICsgMSkgJSBvcHRpb25zLmxlbmd0aDtcbiAgICAgIH0gZWxzZSBpZiAoZGlyZWN0aW9uID09PSAncGFnZXVwJykge1xuICAgICAgICBuZXh0Rm9jdXMgPSBmb2N1c2VkSW5kZXggLSBwYWdlU2l6ZTtcbiAgICAgICAgaWYgKG5leHRGb2N1cyA8IDApIG5leHRGb2N1cyA9IDA7XG4gICAgICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PT0gJ3BhZ2Vkb3duJykge1xuICAgICAgICBuZXh0Rm9jdXMgPSBmb2N1c2VkSW5kZXggKyBwYWdlU2l6ZTtcbiAgICAgICAgaWYgKG5leHRGb2N1cyA+IG9wdGlvbnMubGVuZ3RoIC0gMSkgbmV4dEZvY3VzID0gb3B0aW9ucy5sZW5ndGggLSAxO1xuICAgICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT09ICdsYXN0Jykge1xuICAgICAgICBuZXh0Rm9jdXMgPSBvcHRpb25zLmxlbmd0aCAtIDE7XG4gICAgICB9XG4gICAgICB0aGlzLnNjcm9sbFRvRm9jdXNlZE9wdGlvbk9uVXBkYXRlID0gdHJ1ZTtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICBmb2N1c2VkT3B0aW9uOiBvcHRpb25zW25leHRGb2N1c10sXG4gICAgICAgIGZvY3VzZWRWYWx1ZTogbnVsbCxcbiAgICAgICAgZm9jdXNlZE9wdGlvbklkOiB0aGlzLmdldEZvY3VzZWRPcHRpb25JZChvcHRpb25zW25leHRGb2N1c10pXG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0VGhlbWVcIixcbiAgICB2YWx1ZTpcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAvLyBHZXR0ZXJzXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgICBmdW5jdGlvbiBnZXRUaGVtZSgpIHtcbiAgICAgIC8vIFVzZSB0aGUgZGVmYXVsdCB0aGVtZSBpZiB0aGVyZSBhcmUgbm8gY3VzdG9taXNhdGlvbnMuXG4gICAgICBpZiAoIXRoaXMucHJvcHMudGhlbWUpIHtcbiAgICAgICAgcmV0dXJuIGRlZmF1bHRUaGVtZTtcbiAgICAgIH1cbiAgICAgIC8vIElmIHRoZSB0aGVtZSBwcm9wIGlzIGEgZnVuY3Rpb24sIGFzc3VtZSB0aGUgZnVuY3Rpb25cbiAgICAgIC8vIGtub3dzIGhvdyB0byBtZXJnZSB0aGUgcGFzc2VkLWluIGRlZmF1bHQgdGhlbWUgd2l0aFxuICAgICAgLy8gaXRzIG93biBtb2RpZmljYXRpb25zLlxuICAgICAgaWYgKHR5cGVvZiB0aGlzLnByb3BzLnRoZW1lID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb3BzLnRoZW1lKGRlZmF1bHRUaGVtZSk7XG4gICAgICB9XG4gICAgICAvLyBPdGhlcndpc2UsIGlmIGEgcGxhaW4gdGhlbWUgb2JqZWN0IHdhcyBwYXNzZWQgaW4sXG4gICAgICAvLyBvdmVybGF5IGl0IHdpdGggdGhlIGRlZmF1bHQgdGhlbWUuXG4gICAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBkZWZhdWx0VGhlbWUpLCB0aGlzLnByb3BzLnRoZW1lKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0Q29tbW9uUHJvcHNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0Q29tbW9uUHJvcHMoKSB7XG4gICAgICB2YXIgY2xlYXJWYWx1ZSA9IHRoaXMuY2xlYXJWYWx1ZSxcbiAgICAgICAgY3ggPSB0aGlzLmN4LFxuICAgICAgICBnZXRTdHlsZXMgPSB0aGlzLmdldFN0eWxlcyxcbiAgICAgICAgZ2V0Q2xhc3NOYW1lcyA9IHRoaXMuZ2V0Q2xhc3NOYW1lcyxcbiAgICAgICAgZ2V0VmFsdWUgPSB0aGlzLmdldFZhbHVlLFxuICAgICAgICBzZWxlY3RPcHRpb24gPSB0aGlzLnNlbGVjdE9wdGlvbixcbiAgICAgICAgc2V0VmFsdWUgPSB0aGlzLnNldFZhbHVlLFxuICAgICAgICBwcm9wcyA9IHRoaXMucHJvcHM7XG4gICAgICB2YXIgaXNNdWx0aSA9IHByb3BzLmlzTXVsdGksXG4gICAgICAgIGlzUnRsID0gcHJvcHMuaXNSdGwsXG4gICAgICAgIG9wdGlvbnMgPSBwcm9wcy5vcHRpb25zO1xuICAgICAgdmFyIGhhc1ZhbHVlID0gdGhpcy5oYXNWYWx1ZSgpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY2xlYXJWYWx1ZTogY2xlYXJWYWx1ZSxcbiAgICAgICAgY3g6IGN4LFxuICAgICAgICBnZXRTdHlsZXM6IGdldFN0eWxlcyxcbiAgICAgICAgZ2V0Q2xhc3NOYW1lczogZ2V0Q2xhc3NOYW1lcyxcbiAgICAgICAgZ2V0VmFsdWU6IGdldFZhbHVlLFxuICAgICAgICBoYXNWYWx1ZTogaGFzVmFsdWUsXG4gICAgICAgIGlzTXVsdGk6IGlzTXVsdGksXG4gICAgICAgIGlzUnRsOiBpc1J0bCxcbiAgICAgICAgb3B0aW9uczogb3B0aW9ucyxcbiAgICAgICAgc2VsZWN0T3B0aW9uOiBzZWxlY3RPcHRpb24sXG4gICAgICAgIHNlbGVjdFByb3BzOiBwcm9wcyxcbiAgICAgICAgc2V0VmFsdWU6IHNldFZhbHVlLFxuICAgICAgICB0aGVtZTogdGhpcy5nZXRUaGVtZSgpXG4gICAgICB9O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJoYXNWYWx1ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYXNWYWx1ZSgpIHtcbiAgICAgIHZhciBzZWxlY3RWYWx1ZSA9IHRoaXMuc3RhdGUuc2VsZWN0VmFsdWU7XG4gICAgICByZXR1cm4gc2VsZWN0VmFsdWUubGVuZ3RoID4gMDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiaGFzT3B0aW9uc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYXNPcHRpb25zKCkge1xuICAgICAgcmV0dXJuICEhdGhpcy5nZXRGb2N1c2FibGVPcHRpb25zKCkubGVuZ3RoO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJpc0NsZWFyYWJsZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpc0NsZWFyYWJsZSgpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wczcgPSB0aGlzLnByb3BzLFxuICAgICAgICBpc0NsZWFyYWJsZSA9IF90aGlzJHByb3BzNy5pc0NsZWFyYWJsZSxcbiAgICAgICAgaXNNdWx0aSA9IF90aGlzJHByb3BzNy5pc011bHRpO1xuXG4gICAgICAvLyBzaW5nbGUgc2VsZWN0LCBieSBkZWZhdWx0LCBJUyBOT1QgY2xlYXJhYmxlXG4gICAgICAvLyBtdWx0aSBzZWxlY3QsIGJ5IGRlZmF1bHQsIElTIGNsZWFyYWJsZVxuICAgICAgaWYgKGlzQ2xlYXJhYmxlID09PSB1bmRlZmluZWQpIHJldHVybiBpc011bHRpO1xuICAgICAgcmV0dXJuIGlzQ2xlYXJhYmxlO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJpc09wdGlvbkRpc2FibGVkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGlzT3B0aW9uRGlzYWJsZWQob3B0aW9uLCBzZWxlY3RWYWx1ZSkge1xuICAgICAgcmV0dXJuIF9pc09wdGlvbkRpc2FibGVkKHRoaXMucHJvcHMsIG9wdGlvbiwgc2VsZWN0VmFsdWUpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJpc09wdGlvblNlbGVjdGVkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGlzT3B0aW9uU2VsZWN0ZWQob3B0aW9uLCBzZWxlY3RWYWx1ZSkge1xuICAgICAgcmV0dXJuIF9pc09wdGlvblNlbGVjdGVkKHRoaXMucHJvcHMsIG9wdGlvbiwgc2VsZWN0VmFsdWUpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJmaWx0ZXJPcHRpb25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZmlsdGVyT3B0aW9uKG9wdGlvbiwgaW5wdXRWYWx1ZSkge1xuICAgICAgcmV0dXJuIF9maWx0ZXJPcHRpb24odGhpcy5wcm9wcywgb3B0aW9uLCBpbnB1dFZhbHVlKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZm9ybWF0T3B0aW9uTGFiZWxcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZm9ybWF0T3B0aW9uTGFiZWwoZGF0YSwgY29udGV4dCkge1xuICAgICAgaWYgKHR5cGVvZiB0aGlzLnByb3BzLmZvcm1hdE9wdGlvbkxhYmVsID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHZhciBfaW5wdXRWYWx1ZSA9IHRoaXMucHJvcHMuaW5wdXRWYWx1ZTtcbiAgICAgICAgdmFyIF9zZWxlY3RWYWx1ZSA9IHRoaXMuc3RhdGUuc2VsZWN0VmFsdWU7XG4gICAgICAgIHJldHVybiB0aGlzLnByb3BzLmZvcm1hdE9wdGlvbkxhYmVsKGRhdGEsIHtcbiAgICAgICAgICBjb250ZXh0OiBjb250ZXh0LFxuICAgICAgICAgIGlucHV0VmFsdWU6IF9pbnB1dFZhbHVlLFxuICAgICAgICAgIHNlbGVjdFZhbHVlOiBfc2VsZWN0VmFsdWVcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRPcHRpb25MYWJlbChkYXRhKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZm9ybWF0R3JvdXBMYWJlbFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBmb3JtYXRHcm91cExhYmVsKGRhdGEpIHtcbiAgICAgIHJldHVybiB0aGlzLnByb3BzLmZvcm1hdEdyb3VwTGFiZWwoZGF0YSk7XG4gICAgfVxuXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLy8gTW91c2UgSGFuZGxlcnNcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgfSwge1xuICAgIGtleTogXCJzdGFydExpc3RlbmluZ0NvbXBvc2l0aW9uXCIsXG4gICAgdmFsdWU6XG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLy8gQ29tcG9zaXRpb24gSGFuZGxlcnNcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAgIGZ1bmN0aW9uIHN0YXJ0TGlzdGVuaW5nQ29tcG9zaXRpb24oKSB7XG4gICAgICBpZiAoZG9jdW1lbnQgJiYgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcikge1xuICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjb21wb3NpdGlvbnN0YXJ0JywgdGhpcy5vbkNvbXBvc2l0aW9uU3RhcnQsIGZhbHNlKTtcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY29tcG9zaXRpb25lbmQnLCB0aGlzLm9uQ29tcG9zaXRpb25FbmQsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic3RvcExpc3RlbmluZ0NvbXBvc2l0aW9uXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHN0b3BMaXN0ZW5pbmdDb21wb3NpdGlvbigpIHtcbiAgICAgIGlmIChkb2N1bWVudCAmJiBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKSB7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NvbXBvc2l0aW9uc3RhcnQnLCB0aGlzLm9uQ29tcG9zaXRpb25TdGFydCk7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NvbXBvc2l0aW9uZW5kJywgdGhpcy5vbkNvbXBvc2l0aW9uRW5kKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic3RhcnRMaXN0ZW5pbmdUb1RvdWNoXCIsXG4gICAgdmFsdWU6XG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLy8gVG91Y2ggSGFuZGxlcnNcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAgIGZ1bmN0aW9uIHN0YXJ0TGlzdGVuaW5nVG9Ub3VjaCgpIHtcbiAgICAgIGlmIChkb2N1bWVudCAmJiBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKSB7XG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCB0aGlzLm9uVG91Y2hTdGFydCwgZmFsc2UpO1xuICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaG1vdmUnLCB0aGlzLm9uVG91Y2hNb3ZlLCBmYWxzZSk7XG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgdGhpcy5vblRvdWNoRW5kLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInN0b3BMaXN0ZW5pbmdUb1RvdWNoXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHN0b3BMaXN0ZW5pbmdUb1RvdWNoKCkge1xuICAgICAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIpIHtcbiAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcsIHRoaXMub25Ub3VjaFN0YXJ0KTtcbiAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgdGhpcy5vblRvdWNoTW92ZSk7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgdGhpcy5vblRvdWNoRW5kKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVySW5wdXRcIixcbiAgICB2YWx1ZTpcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAvLyBSZW5kZXJlcnNcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICBmdW5jdGlvbiByZW5kZXJJbnB1dCgpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wczggPSB0aGlzLnByb3BzLFxuICAgICAgICBpc0Rpc2FibGVkID0gX3RoaXMkcHJvcHM4LmlzRGlzYWJsZWQsXG4gICAgICAgIGlzU2VhcmNoYWJsZSA9IF90aGlzJHByb3BzOC5pc1NlYXJjaGFibGUsXG4gICAgICAgIGlucHV0SWQgPSBfdGhpcyRwcm9wczguaW5wdXRJZCxcbiAgICAgICAgaW5wdXRWYWx1ZSA9IF90aGlzJHByb3BzOC5pbnB1dFZhbHVlLFxuICAgICAgICB0YWJJbmRleCA9IF90aGlzJHByb3BzOC50YWJJbmRleCxcbiAgICAgICAgZm9ybSA9IF90aGlzJHByb3BzOC5mb3JtLFxuICAgICAgICBtZW51SXNPcGVuID0gX3RoaXMkcHJvcHM4Lm1lbnVJc09wZW4sXG4gICAgICAgIHJlcXVpcmVkID0gX3RoaXMkcHJvcHM4LnJlcXVpcmVkO1xuICAgICAgdmFyIF90aGlzJGdldENvbXBvbmVudHMgPSB0aGlzLmdldENvbXBvbmVudHMoKSxcbiAgICAgICAgSW5wdXQgPSBfdGhpcyRnZXRDb21wb25lbnRzLklucHV0O1xuICAgICAgdmFyIF90aGlzJHN0YXRlNCA9IHRoaXMuc3RhdGUsXG4gICAgICAgIGlucHV0SXNIaWRkZW4gPSBfdGhpcyRzdGF0ZTQuaW5wdXRJc0hpZGRlbixcbiAgICAgICAgYXJpYVNlbGVjdGlvbiA9IF90aGlzJHN0YXRlNC5hcmlhU2VsZWN0aW9uO1xuICAgICAgdmFyIGNvbW1vblByb3BzID0gdGhpcy5jb21tb25Qcm9wcztcbiAgICAgIHZhciBpZCA9IGlucHV0SWQgfHwgdGhpcy5nZXRFbGVtZW50SWQoJ2lucHV0Jyk7XG5cbiAgICAgIC8vIGFyaWEgYXR0cmlidXRlcyBtYWtlcyB0aGUgSlNYIFwibm9pc3lcIiwgc2VwYXJhdGVkIGZvciBjbGFyaXR5XG4gICAgICB2YXIgYXJpYUF0dHJpYnV0ZXMgPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7XG4gICAgICAgICdhcmlhLWF1dG9jb21wbGV0ZSc6ICdsaXN0JyxcbiAgICAgICAgJ2FyaWEtZXhwYW5kZWQnOiBtZW51SXNPcGVuLFxuICAgICAgICAnYXJpYS1oYXNwb3B1cCc6IHRydWUsXG4gICAgICAgICdhcmlhLWVycm9ybWVzc2FnZSc6IHRoaXMucHJvcHNbJ2FyaWEtZXJyb3JtZXNzYWdlJ10sXG4gICAgICAgICdhcmlhLWludmFsaWQnOiB0aGlzLnByb3BzWydhcmlhLWludmFsaWQnXSxcbiAgICAgICAgJ2FyaWEtbGFiZWwnOiB0aGlzLnByb3BzWydhcmlhLWxhYmVsJ10sXG4gICAgICAgICdhcmlhLWxhYmVsbGVkYnknOiB0aGlzLnByb3BzWydhcmlhLWxhYmVsbGVkYnknXSxcbiAgICAgICAgJ2FyaWEtcmVxdWlyZWQnOiByZXF1aXJlZCxcbiAgICAgICAgcm9sZTogJ2NvbWJvYm94JyxcbiAgICAgICAgJ2FyaWEtYWN0aXZlZGVzY2VuZGFudCc6IHRoaXMuaXNBcHBsZURldmljZSA/IHVuZGVmaW5lZCA6IHRoaXMuc3RhdGUuZm9jdXNlZE9wdGlvbklkIHx8ICcnXG4gICAgICB9LCBtZW51SXNPcGVuICYmIHtcbiAgICAgICAgJ2FyaWEtY29udHJvbHMnOiB0aGlzLmdldEVsZW1lbnRJZCgnbGlzdGJveCcpXG4gICAgICB9KSwgIWlzU2VhcmNoYWJsZSAmJiB7XG4gICAgICAgICdhcmlhLXJlYWRvbmx5JzogdHJ1ZVxuICAgICAgfSksIHRoaXMuaGFzVmFsdWUoKSA/IChhcmlhU2VsZWN0aW9uID09PSBudWxsIHx8IGFyaWFTZWxlY3Rpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IGFyaWFTZWxlY3Rpb24uYWN0aW9uKSA9PT0gJ2luaXRpYWwtaW5wdXQtZm9jdXMnICYmIHtcbiAgICAgICAgJ2FyaWEtZGVzY3JpYmVkYnknOiB0aGlzLmdldEVsZW1lbnRJZCgnbGl2ZS1yZWdpb24nKVxuICAgICAgfSA6IHtcbiAgICAgICAgJ2FyaWEtZGVzY3JpYmVkYnknOiB0aGlzLmdldEVsZW1lbnRJZCgncGxhY2Vob2xkZXInKVxuICAgICAgfSk7XG4gICAgICBpZiAoIWlzU2VhcmNoYWJsZSkge1xuICAgICAgICAvLyB1c2UgYSBkdW1teSBpbnB1dCB0byBtYWludGFpbiBmb2N1cy9ibHVyIGZ1bmN0aW9uYWxpdHlcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KER1bW15SW5wdXQsIF9leHRlbmRzKHtcbiAgICAgICAgICBpZDogaWQsXG4gICAgICAgICAgaW5uZXJSZWY6IHRoaXMuZ2V0SW5wdXRSZWYsXG4gICAgICAgICAgb25CbHVyOiB0aGlzLm9uSW5wdXRCbHVyLFxuICAgICAgICAgIG9uQ2hhbmdlOiBub29wLFxuICAgICAgICAgIG9uRm9jdXM6IHRoaXMub25JbnB1dEZvY3VzLFxuICAgICAgICAgIGRpc2FibGVkOiBpc0Rpc2FibGVkLFxuICAgICAgICAgIHRhYkluZGV4OiB0YWJJbmRleCxcbiAgICAgICAgICBpbnB1dE1vZGU6IFwibm9uZVwiLFxuICAgICAgICAgIGZvcm06IGZvcm0sXG4gICAgICAgICAgdmFsdWU6IFwiXCJcbiAgICAgICAgfSwgYXJpYUF0dHJpYnV0ZXMpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChJbnB1dCwgX2V4dGVuZHMoe30sIGNvbW1vblByb3BzLCB7XG4gICAgICAgIGF1dG9DYXBpdGFsaXplOiBcIm5vbmVcIixcbiAgICAgICAgYXV0b0NvbXBsZXRlOiBcIm9mZlwiLFxuICAgICAgICBhdXRvQ29ycmVjdDogXCJvZmZcIixcbiAgICAgICAgaWQ6IGlkLFxuICAgICAgICBpbm5lclJlZjogdGhpcy5nZXRJbnB1dFJlZixcbiAgICAgICAgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCxcbiAgICAgICAgaXNIaWRkZW46IGlucHV0SXNIaWRkZW4sXG4gICAgICAgIG9uQmx1cjogdGhpcy5vbklucHV0Qmx1cixcbiAgICAgICAgb25DaGFuZ2U6IHRoaXMuaGFuZGxlSW5wdXRDaGFuZ2UsXG4gICAgICAgIG9uRm9jdXM6IHRoaXMub25JbnB1dEZvY3VzLFxuICAgICAgICBzcGVsbENoZWNrOiBcImZhbHNlXCIsXG4gICAgICAgIHRhYkluZGV4OiB0YWJJbmRleCxcbiAgICAgICAgZm9ybTogZm9ybSxcbiAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgIHZhbHVlOiBpbnB1dFZhbHVlXG4gICAgICB9LCBhcmlhQXR0cmlidXRlcykpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJQbGFjZWhvbGRlck9yVmFsdWVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyUGxhY2Vob2xkZXJPclZhbHVlKCkge1xuICAgICAgdmFyIF90aGlzMyA9IHRoaXM7XG4gICAgICB2YXIgX3RoaXMkZ2V0Q29tcG9uZW50czIgPSB0aGlzLmdldENvbXBvbmVudHMoKSxcbiAgICAgICAgTXVsdGlWYWx1ZSA9IF90aGlzJGdldENvbXBvbmVudHMyLk11bHRpVmFsdWUsXG4gICAgICAgIE11bHRpVmFsdWVDb250YWluZXIgPSBfdGhpcyRnZXRDb21wb25lbnRzMi5NdWx0aVZhbHVlQ29udGFpbmVyLFxuICAgICAgICBNdWx0aVZhbHVlTGFiZWwgPSBfdGhpcyRnZXRDb21wb25lbnRzMi5NdWx0aVZhbHVlTGFiZWwsXG4gICAgICAgIE11bHRpVmFsdWVSZW1vdmUgPSBfdGhpcyRnZXRDb21wb25lbnRzMi5NdWx0aVZhbHVlUmVtb3ZlLFxuICAgICAgICBTaW5nbGVWYWx1ZSA9IF90aGlzJGdldENvbXBvbmVudHMyLlNpbmdsZVZhbHVlLFxuICAgICAgICBQbGFjZWhvbGRlciA9IF90aGlzJGdldENvbXBvbmVudHMyLlBsYWNlaG9sZGVyO1xuICAgICAgdmFyIGNvbW1vblByb3BzID0gdGhpcy5jb21tb25Qcm9wcztcbiAgICAgIHZhciBfdGhpcyRwcm9wczkgPSB0aGlzLnByb3BzLFxuICAgICAgICBjb250cm9sU2hvdWxkUmVuZGVyVmFsdWUgPSBfdGhpcyRwcm9wczkuY29udHJvbFNob3VsZFJlbmRlclZhbHVlLFxuICAgICAgICBpc0Rpc2FibGVkID0gX3RoaXMkcHJvcHM5LmlzRGlzYWJsZWQsXG4gICAgICAgIGlzTXVsdGkgPSBfdGhpcyRwcm9wczkuaXNNdWx0aSxcbiAgICAgICAgaW5wdXRWYWx1ZSA9IF90aGlzJHByb3BzOS5pbnB1dFZhbHVlLFxuICAgICAgICBwbGFjZWhvbGRlciA9IF90aGlzJHByb3BzOS5wbGFjZWhvbGRlcjtcbiAgICAgIHZhciBfdGhpcyRzdGF0ZTUgPSB0aGlzLnN0YXRlLFxuICAgICAgICBzZWxlY3RWYWx1ZSA9IF90aGlzJHN0YXRlNS5zZWxlY3RWYWx1ZSxcbiAgICAgICAgZm9jdXNlZFZhbHVlID0gX3RoaXMkc3RhdGU1LmZvY3VzZWRWYWx1ZSxcbiAgICAgICAgaXNGb2N1c2VkID0gX3RoaXMkc3RhdGU1LmlzRm9jdXNlZDtcbiAgICAgIGlmICghdGhpcy5oYXNWYWx1ZSgpIHx8ICFjb250cm9sU2hvdWxkUmVuZGVyVmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGlucHV0VmFsdWUgPyBudWxsIDogLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoUGxhY2Vob2xkZXIsIF9leHRlbmRzKHt9LCBjb21tb25Qcm9wcywge1xuICAgICAgICAgIGtleTogXCJwbGFjZWhvbGRlclwiLFxuICAgICAgICAgIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsXG4gICAgICAgICAgaXNGb2N1c2VkOiBpc0ZvY3VzZWQsXG4gICAgICAgICAgaW5uZXJQcm9wczoge1xuICAgICAgICAgICAgaWQ6IHRoaXMuZ2V0RWxlbWVudElkKCdwbGFjZWhvbGRlcicpXG4gICAgICAgICAgfVxuICAgICAgICB9KSwgcGxhY2Vob2xkZXIpO1xuICAgICAgfVxuICAgICAgaWYgKGlzTXVsdGkpIHtcbiAgICAgICAgcmV0dXJuIHNlbGVjdFZhbHVlLm1hcChmdW5jdGlvbiAob3B0LCBpbmRleCkge1xuICAgICAgICAgIHZhciBpc09wdGlvbkZvY3VzZWQgPSBvcHQgPT09IGZvY3VzZWRWYWx1ZTtcbiAgICAgICAgICB2YXIga2V5ID0gXCJcIi5jb25jYXQoX3RoaXMzLmdldE9wdGlvbkxhYmVsKG9wdCksIFwiLVwiKS5jb25jYXQoX3RoaXMzLmdldE9wdGlvblZhbHVlKG9wdCkpO1xuICAgICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChNdWx0aVZhbHVlLCBfZXh0ZW5kcyh7fSwgY29tbW9uUHJvcHMsIHtcbiAgICAgICAgICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgICAgICAgQ29udGFpbmVyOiBNdWx0aVZhbHVlQ29udGFpbmVyLFxuICAgICAgICAgICAgICBMYWJlbDogTXVsdGlWYWx1ZUxhYmVsLFxuICAgICAgICAgICAgICBSZW1vdmU6IE11bHRpVmFsdWVSZW1vdmVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpc0ZvY3VzZWQ6IGlzT3B0aW9uRm9jdXNlZCxcbiAgICAgICAgICAgIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsXG4gICAgICAgICAgICBrZXk6IGtleSxcbiAgICAgICAgICAgIGluZGV4OiBpbmRleCxcbiAgICAgICAgICAgIHJlbW92ZVByb3BzOiB7XG4gICAgICAgICAgICAgIG9uQ2xpY2s6IGZ1bmN0aW9uIG9uQ2xpY2soKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzMy5yZW1vdmVWYWx1ZShvcHQpO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBvblRvdWNoRW5kOiBmdW5jdGlvbiBvblRvdWNoRW5kKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBfdGhpczMucmVtb3ZlVmFsdWUob3B0KTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgb25Nb3VzZURvd246IGZ1bmN0aW9uIG9uTW91c2VEb3duKGUpIHtcbiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkYXRhOiBvcHRcbiAgICAgICAgICB9KSwgX3RoaXMzLmZvcm1hdE9wdGlvbkxhYmVsKG9wdCwgJ3ZhbHVlJykpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGlmIChpbnB1dFZhbHVlKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgdmFyIHNpbmdsZVZhbHVlID0gc2VsZWN0VmFsdWVbMF07XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoU2luZ2xlVmFsdWUsIF9leHRlbmRzKHt9LCBjb21tb25Qcm9wcywge1xuICAgICAgICBkYXRhOiBzaW5nbGVWYWx1ZSxcbiAgICAgICAgaXNEaXNhYmxlZDogaXNEaXNhYmxlZFxuICAgICAgfSksIHRoaXMuZm9ybWF0T3B0aW9uTGFiZWwoc2luZ2xlVmFsdWUsICd2YWx1ZScpKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyQ2xlYXJJbmRpY2F0b3JcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyQ2xlYXJJbmRpY2F0b3IoKSB7XG4gICAgICB2YXIgX3RoaXMkZ2V0Q29tcG9uZW50czMgPSB0aGlzLmdldENvbXBvbmVudHMoKSxcbiAgICAgICAgQ2xlYXJJbmRpY2F0b3IgPSBfdGhpcyRnZXRDb21wb25lbnRzMy5DbGVhckluZGljYXRvcjtcbiAgICAgIHZhciBjb21tb25Qcm9wcyA9IHRoaXMuY29tbW9uUHJvcHM7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMxMCA9IHRoaXMucHJvcHMsXG4gICAgICAgIGlzRGlzYWJsZWQgPSBfdGhpcyRwcm9wczEwLmlzRGlzYWJsZWQsXG4gICAgICAgIGlzTG9hZGluZyA9IF90aGlzJHByb3BzMTAuaXNMb2FkaW5nO1xuICAgICAgdmFyIGlzRm9jdXNlZCA9IHRoaXMuc3RhdGUuaXNGb2N1c2VkO1xuICAgICAgaWYgKCF0aGlzLmlzQ2xlYXJhYmxlKCkgfHwgIUNsZWFySW5kaWNhdG9yIHx8IGlzRGlzYWJsZWQgfHwgIXRoaXMuaGFzVmFsdWUoKSB8fCBpc0xvYWRpbmcpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICB2YXIgaW5uZXJQcm9wcyA9IHtcbiAgICAgICAgb25Nb3VzZURvd246IHRoaXMub25DbGVhckluZGljYXRvck1vdXNlRG93bixcbiAgICAgICAgb25Ub3VjaEVuZDogdGhpcy5vbkNsZWFySW5kaWNhdG9yVG91Y2hFbmQsXG4gICAgICAgICdhcmlhLWhpZGRlbic6ICd0cnVlJ1xuICAgICAgfTtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChDbGVhckluZGljYXRvciwgX2V4dGVuZHMoe30sIGNvbW1vblByb3BzLCB7XG4gICAgICAgIGlubmVyUHJvcHM6IGlubmVyUHJvcHMsXG4gICAgICAgIGlzRm9jdXNlZDogaXNGb2N1c2VkXG4gICAgICB9KSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlckxvYWRpbmdJbmRpY2F0b3JcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyTG9hZGluZ0luZGljYXRvcigpIHtcbiAgICAgIHZhciBfdGhpcyRnZXRDb21wb25lbnRzNCA9IHRoaXMuZ2V0Q29tcG9uZW50cygpLFxuICAgICAgICBMb2FkaW5nSW5kaWNhdG9yID0gX3RoaXMkZ2V0Q29tcG9uZW50czQuTG9hZGluZ0luZGljYXRvcjtcbiAgICAgIHZhciBjb21tb25Qcm9wcyA9IHRoaXMuY29tbW9uUHJvcHM7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMxMSA9IHRoaXMucHJvcHMsXG4gICAgICAgIGlzRGlzYWJsZWQgPSBfdGhpcyRwcm9wczExLmlzRGlzYWJsZWQsXG4gICAgICAgIGlzTG9hZGluZyA9IF90aGlzJHByb3BzMTEuaXNMb2FkaW5nO1xuICAgICAgdmFyIGlzRm9jdXNlZCA9IHRoaXMuc3RhdGUuaXNGb2N1c2VkO1xuICAgICAgaWYgKCFMb2FkaW5nSW5kaWNhdG9yIHx8ICFpc0xvYWRpbmcpIHJldHVybiBudWxsO1xuICAgICAgdmFyIGlubmVyUHJvcHMgPSB7XG4gICAgICAgICdhcmlhLWhpZGRlbic6ICd0cnVlJ1xuICAgICAgfTtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChMb2FkaW5nSW5kaWNhdG9yLCBfZXh0ZW5kcyh7fSwgY29tbW9uUHJvcHMsIHtcbiAgICAgICAgaW5uZXJQcm9wczogaW5uZXJQcm9wcyxcbiAgICAgICAgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCxcbiAgICAgICAgaXNGb2N1c2VkOiBpc0ZvY3VzZWRcbiAgICAgIH0pKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVySW5kaWNhdG9yU2VwYXJhdG9yXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlckluZGljYXRvclNlcGFyYXRvcigpIHtcbiAgICAgIHZhciBfdGhpcyRnZXRDb21wb25lbnRzNSA9IHRoaXMuZ2V0Q29tcG9uZW50cygpLFxuICAgICAgICBEcm9wZG93bkluZGljYXRvciA9IF90aGlzJGdldENvbXBvbmVudHM1LkRyb3Bkb3duSW5kaWNhdG9yLFxuICAgICAgICBJbmRpY2F0b3JTZXBhcmF0b3IgPSBfdGhpcyRnZXRDb21wb25lbnRzNS5JbmRpY2F0b3JTZXBhcmF0b3I7XG5cbiAgICAgIC8vIHNlcGFyYXRvciBkb2Vzbid0IG1ha2Ugc2Vuc2Ugd2l0aG91dCB0aGUgZHJvcGRvd24gaW5kaWNhdG9yXG4gICAgICBpZiAoIURyb3Bkb3duSW5kaWNhdG9yIHx8ICFJbmRpY2F0b3JTZXBhcmF0b3IpIHJldHVybiBudWxsO1xuICAgICAgdmFyIGNvbW1vblByb3BzID0gdGhpcy5jb21tb25Qcm9wcztcbiAgICAgIHZhciBpc0Rpc2FibGVkID0gdGhpcy5wcm9wcy5pc0Rpc2FibGVkO1xuICAgICAgdmFyIGlzRm9jdXNlZCA9IHRoaXMuc3RhdGUuaXNGb2N1c2VkO1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KEluZGljYXRvclNlcGFyYXRvciwgX2V4dGVuZHMoe30sIGNvbW1vblByb3BzLCB7XG4gICAgICAgIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsXG4gICAgICAgIGlzRm9jdXNlZDogaXNGb2N1c2VkXG4gICAgICB9KSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlckRyb3Bkb3duSW5kaWNhdG9yXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlckRyb3Bkb3duSW5kaWNhdG9yKCkge1xuICAgICAgdmFyIF90aGlzJGdldENvbXBvbmVudHM2ID0gdGhpcy5nZXRDb21wb25lbnRzKCksXG4gICAgICAgIERyb3Bkb3duSW5kaWNhdG9yID0gX3RoaXMkZ2V0Q29tcG9uZW50czYuRHJvcGRvd25JbmRpY2F0b3I7XG4gICAgICBpZiAoIURyb3Bkb3duSW5kaWNhdG9yKSByZXR1cm4gbnVsbDtcbiAgICAgIHZhciBjb21tb25Qcm9wcyA9IHRoaXMuY29tbW9uUHJvcHM7XG4gICAgICB2YXIgaXNEaXNhYmxlZCA9IHRoaXMucHJvcHMuaXNEaXNhYmxlZDtcbiAgICAgIHZhciBpc0ZvY3VzZWQgPSB0aGlzLnN0YXRlLmlzRm9jdXNlZDtcbiAgICAgIHZhciBpbm5lclByb3BzID0ge1xuICAgICAgICBvbk1vdXNlRG93bjogdGhpcy5vbkRyb3Bkb3duSW5kaWNhdG9yTW91c2VEb3duLFxuICAgICAgICBvblRvdWNoRW5kOiB0aGlzLm9uRHJvcGRvd25JbmRpY2F0b3JUb3VjaEVuZCxcbiAgICAgICAgJ2FyaWEtaGlkZGVuJzogJ3RydWUnXG4gICAgICB9O1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KERyb3Bkb3duSW5kaWNhdG9yLCBfZXh0ZW5kcyh7fSwgY29tbW9uUHJvcHMsIHtcbiAgICAgICAgaW5uZXJQcm9wczogaW5uZXJQcm9wcyxcbiAgICAgICAgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCxcbiAgICAgICAgaXNGb2N1c2VkOiBpc0ZvY3VzZWRcbiAgICAgIH0pKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyTWVudVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXJNZW51KCkge1xuICAgICAgdmFyIF90aGlzNCA9IHRoaXM7XG4gICAgICB2YXIgX3RoaXMkZ2V0Q29tcG9uZW50czcgPSB0aGlzLmdldENvbXBvbmVudHMoKSxcbiAgICAgICAgR3JvdXAgPSBfdGhpcyRnZXRDb21wb25lbnRzNy5Hcm91cCxcbiAgICAgICAgR3JvdXBIZWFkaW5nID0gX3RoaXMkZ2V0Q29tcG9uZW50czcuR3JvdXBIZWFkaW5nLFxuICAgICAgICBNZW51ID0gX3RoaXMkZ2V0Q29tcG9uZW50czcuTWVudSxcbiAgICAgICAgTWVudUxpc3QgPSBfdGhpcyRnZXRDb21wb25lbnRzNy5NZW51TGlzdCxcbiAgICAgICAgTWVudVBvcnRhbCA9IF90aGlzJGdldENvbXBvbmVudHM3Lk1lbnVQb3J0YWwsXG4gICAgICAgIExvYWRpbmdNZXNzYWdlID0gX3RoaXMkZ2V0Q29tcG9uZW50czcuTG9hZGluZ01lc3NhZ2UsXG4gICAgICAgIE5vT3B0aW9uc01lc3NhZ2UgPSBfdGhpcyRnZXRDb21wb25lbnRzNy5Ob09wdGlvbnNNZXNzYWdlLFxuICAgICAgICBPcHRpb24gPSBfdGhpcyRnZXRDb21wb25lbnRzNy5PcHRpb247XG4gICAgICB2YXIgY29tbW9uUHJvcHMgPSB0aGlzLmNvbW1vblByb3BzO1xuICAgICAgdmFyIGZvY3VzZWRPcHRpb24gPSB0aGlzLnN0YXRlLmZvY3VzZWRPcHRpb247XG4gICAgICB2YXIgX3RoaXMkcHJvcHMxMiA9IHRoaXMucHJvcHMsXG4gICAgICAgIGNhcHR1cmVNZW51U2Nyb2xsID0gX3RoaXMkcHJvcHMxMi5jYXB0dXJlTWVudVNjcm9sbCxcbiAgICAgICAgaW5wdXRWYWx1ZSA9IF90aGlzJHByb3BzMTIuaW5wdXRWYWx1ZSxcbiAgICAgICAgaXNMb2FkaW5nID0gX3RoaXMkcHJvcHMxMi5pc0xvYWRpbmcsXG4gICAgICAgIGxvYWRpbmdNZXNzYWdlID0gX3RoaXMkcHJvcHMxMi5sb2FkaW5nTWVzc2FnZSxcbiAgICAgICAgbWluTWVudUhlaWdodCA9IF90aGlzJHByb3BzMTIubWluTWVudUhlaWdodCxcbiAgICAgICAgbWF4TWVudUhlaWdodCA9IF90aGlzJHByb3BzMTIubWF4TWVudUhlaWdodCxcbiAgICAgICAgbWVudUlzT3BlbiA9IF90aGlzJHByb3BzMTIubWVudUlzT3BlbixcbiAgICAgICAgbWVudVBsYWNlbWVudCA9IF90aGlzJHByb3BzMTIubWVudVBsYWNlbWVudCxcbiAgICAgICAgbWVudVBvc2l0aW9uID0gX3RoaXMkcHJvcHMxMi5tZW51UG9zaXRpb24sXG4gICAgICAgIG1lbnVQb3J0YWxUYXJnZXQgPSBfdGhpcyRwcm9wczEyLm1lbnVQb3J0YWxUYXJnZXQsXG4gICAgICAgIG1lbnVTaG91bGRCbG9ja1Njcm9sbCA9IF90aGlzJHByb3BzMTIubWVudVNob3VsZEJsb2NrU2Nyb2xsLFxuICAgICAgICBtZW51U2hvdWxkU2Nyb2xsSW50b1ZpZXcgPSBfdGhpcyRwcm9wczEyLm1lbnVTaG91bGRTY3JvbGxJbnRvVmlldyxcbiAgICAgICAgbm9PcHRpb25zTWVzc2FnZSA9IF90aGlzJHByb3BzMTIubm9PcHRpb25zTWVzc2FnZSxcbiAgICAgICAgb25NZW51U2Nyb2xsVG9Ub3AgPSBfdGhpcyRwcm9wczEyLm9uTWVudVNjcm9sbFRvVG9wLFxuICAgICAgICBvbk1lbnVTY3JvbGxUb0JvdHRvbSA9IF90aGlzJHByb3BzMTIub25NZW51U2Nyb2xsVG9Cb3R0b207XG4gICAgICBpZiAoIW1lbnVJc09wZW4pIHJldHVybiBudWxsO1xuXG4gICAgICAvLyBUT0RPOiBJbnRlcm5hbCBPcHRpb24gVHlwZSBoZXJlXG4gICAgICB2YXIgcmVuZGVyID0gZnVuY3Rpb24gcmVuZGVyKHByb3BzLCBpZCkge1xuICAgICAgICB2YXIgdHlwZSA9IHByb3BzLnR5cGUsXG4gICAgICAgICAgZGF0YSA9IHByb3BzLmRhdGEsXG4gICAgICAgICAgaXNEaXNhYmxlZCA9IHByb3BzLmlzRGlzYWJsZWQsXG4gICAgICAgICAgaXNTZWxlY3RlZCA9IHByb3BzLmlzU2VsZWN0ZWQsXG4gICAgICAgICAgbGFiZWwgPSBwcm9wcy5sYWJlbCxcbiAgICAgICAgICB2YWx1ZSA9IHByb3BzLnZhbHVlO1xuICAgICAgICB2YXIgaXNGb2N1c2VkID0gZm9jdXNlZE9wdGlvbiA9PT0gZGF0YTtcbiAgICAgICAgdmFyIG9uSG92ZXIgPSBpc0Rpc2FibGVkID8gdW5kZWZpbmVkIDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBfdGhpczQub25PcHRpb25Ib3ZlcihkYXRhKTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIG9uU2VsZWN0ID0gaXNEaXNhYmxlZCA/IHVuZGVmaW5lZCA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gX3RoaXM0LnNlbGVjdE9wdGlvbihkYXRhKTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIG9wdGlvbklkID0gXCJcIi5jb25jYXQoX3RoaXM0LmdldEVsZW1lbnRJZCgnb3B0aW9uJyksIFwiLVwiKS5jb25jYXQoaWQpO1xuICAgICAgICB2YXIgaW5uZXJQcm9wcyA9IHtcbiAgICAgICAgICBpZDogb3B0aW9uSWQsXG4gICAgICAgICAgb25DbGljazogb25TZWxlY3QsXG4gICAgICAgICAgb25Nb3VzZU1vdmU6IG9uSG92ZXIsXG4gICAgICAgICAgb25Nb3VzZU92ZXI6IG9uSG92ZXIsXG4gICAgICAgICAgdGFiSW5kZXg6IC0xLFxuICAgICAgICAgIHJvbGU6ICdvcHRpb24nLFxuICAgICAgICAgICdhcmlhLXNlbGVjdGVkJzogX3RoaXM0LmlzQXBwbGVEZXZpY2UgPyB1bmRlZmluZWQgOiBpc1NlbGVjdGVkIC8vIGlzIG5vdCBzdXBwb3J0ZWQgb24gQXBwbGUgZGV2aWNlc1xuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChPcHRpb24sIF9leHRlbmRzKHt9LCBjb21tb25Qcm9wcywge1xuICAgICAgICAgIGlubmVyUHJvcHM6IGlubmVyUHJvcHMsXG4gICAgICAgICAgZGF0YTogZGF0YSxcbiAgICAgICAgICBpc0Rpc2FibGVkOiBpc0Rpc2FibGVkLFxuICAgICAgICAgIGlzU2VsZWN0ZWQ6IGlzU2VsZWN0ZWQsXG4gICAgICAgICAga2V5OiBvcHRpb25JZCxcbiAgICAgICAgICBsYWJlbDogbGFiZWwsXG4gICAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgaXNGb2N1c2VkOiBpc0ZvY3VzZWQsXG4gICAgICAgICAgaW5uZXJSZWY6IGlzRm9jdXNlZCA/IF90aGlzNC5nZXRGb2N1c2VkT3B0aW9uUmVmIDogdW5kZWZpbmVkXG4gICAgICAgIH0pLCBfdGhpczQuZm9ybWF0T3B0aW9uTGFiZWwocHJvcHMuZGF0YSwgJ21lbnUnKSk7XG4gICAgICB9O1xuICAgICAgdmFyIG1lbnVVSTtcbiAgICAgIGlmICh0aGlzLmhhc09wdGlvbnMoKSkge1xuICAgICAgICBtZW51VUkgPSB0aGlzLmdldENhdGVnb3JpemVkT3B0aW9ucygpLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICAgIGlmIChpdGVtLnR5cGUgPT09ICdncm91cCcpIHtcbiAgICAgICAgICAgIHZhciBfZGF0YSA9IGl0ZW0uZGF0YSxcbiAgICAgICAgICAgICAgb3B0aW9ucyA9IGl0ZW0ub3B0aW9ucyxcbiAgICAgICAgICAgICAgZ3JvdXBJbmRleCA9IGl0ZW0uaW5kZXg7XG4gICAgICAgICAgICB2YXIgZ3JvdXBJZCA9IFwiXCIuY29uY2F0KF90aGlzNC5nZXRFbGVtZW50SWQoJ2dyb3VwJyksIFwiLVwiKS5jb25jYXQoZ3JvdXBJbmRleCk7XG4gICAgICAgICAgICB2YXIgaGVhZGluZ0lkID0gXCJcIi5jb25jYXQoZ3JvdXBJZCwgXCItaGVhZGluZ1wiKTtcbiAgICAgICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChHcm91cCwgX2V4dGVuZHMoe30sIGNvbW1vblByb3BzLCB7XG4gICAgICAgICAgICAgIGtleTogZ3JvdXBJZCxcbiAgICAgICAgICAgICAgZGF0YTogX2RhdGEsXG4gICAgICAgICAgICAgIG9wdGlvbnM6IG9wdGlvbnMsXG4gICAgICAgICAgICAgIEhlYWRpbmc6IEdyb3VwSGVhZGluZyxcbiAgICAgICAgICAgICAgaGVhZGluZ1Byb3BzOiB7XG4gICAgICAgICAgICAgICAgaWQ6IGhlYWRpbmdJZCxcbiAgICAgICAgICAgICAgICBkYXRhOiBpdGVtLmRhdGFcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgbGFiZWw6IF90aGlzNC5mb3JtYXRHcm91cExhYmVsKGl0ZW0uZGF0YSlcbiAgICAgICAgICAgIH0pLCBpdGVtLm9wdGlvbnMubWFwKGZ1bmN0aW9uIChvcHRpb24pIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHJlbmRlcihvcHRpb24sIFwiXCIuY29uY2F0KGdyb3VwSW5kZXgsIFwiLVwiKS5jb25jYXQob3B0aW9uLmluZGV4KSk7XG4gICAgICAgICAgICB9KSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChpdGVtLnR5cGUgPT09ICdvcHRpb24nKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVuZGVyKGl0ZW0sIFwiXCIuY29uY2F0KGl0ZW0uaW5kZXgpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmIChpc0xvYWRpbmcpIHtcbiAgICAgICAgdmFyIG1lc3NhZ2UgPSBsb2FkaW5nTWVzc2FnZSh7XG4gICAgICAgICAgaW5wdXRWYWx1ZTogaW5wdXRWYWx1ZVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKG1lc3NhZ2UgPT09IG51bGwpIHJldHVybiBudWxsO1xuICAgICAgICBtZW51VUkgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChMb2FkaW5nTWVzc2FnZSwgY29tbW9uUHJvcHMsIG1lc3NhZ2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIF9tZXNzYWdlID0gbm9PcHRpb25zTWVzc2FnZSh7XG4gICAgICAgICAgaW5wdXRWYWx1ZTogaW5wdXRWYWx1ZVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKF9tZXNzYWdlID09PSBudWxsKSByZXR1cm4gbnVsbDtcbiAgICAgICAgbWVudVVJID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoTm9PcHRpb25zTWVzc2FnZSwgY29tbW9uUHJvcHMsIF9tZXNzYWdlKTtcbiAgICAgIH1cbiAgICAgIHZhciBtZW51UGxhY2VtZW50UHJvcHMgPSB7XG4gICAgICAgIG1pbk1lbnVIZWlnaHQ6IG1pbk1lbnVIZWlnaHQsXG4gICAgICAgIG1heE1lbnVIZWlnaHQ6IG1heE1lbnVIZWlnaHQsXG4gICAgICAgIG1lbnVQbGFjZW1lbnQ6IG1lbnVQbGFjZW1lbnQsXG4gICAgICAgIG1lbnVQb3NpdGlvbjogbWVudVBvc2l0aW9uLFxuICAgICAgICBtZW51U2hvdWxkU2Nyb2xsSW50b1ZpZXc6IG1lbnVTaG91bGRTY3JvbGxJbnRvVmlld1xuICAgICAgfTtcbiAgICAgIHZhciBtZW51RWxlbWVudCA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KE1lbnVQbGFjZXIsIF9leHRlbmRzKHt9LCBjb21tb25Qcm9wcywgbWVudVBsYWNlbWVudFByb3BzKSwgZnVuY3Rpb24gKF9yZWY0KSB7XG4gICAgICAgIHZhciByZWYgPSBfcmVmNC5yZWYsXG4gICAgICAgICAgX3JlZjQkcGxhY2VyUHJvcHMgPSBfcmVmNC5wbGFjZXJQcm9wcyxcbiAgICAgICAgICBwbGFjZW1lbnQgPSBfcmVmNCRwbGFjZXJQcm9wcy5wbGFjZW1lbnQsXG4gICAgICAgICAgbWF4SGVpZ2h0ID0gX3JlZjQkcGxhY2VyUHJvcHMubWF4SGVpZ2h0O1xuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoTWVudSwgX2V4dGVuZHMoe30sIGNvbW1vblByb3BzLCBtZW51UGxhY2VtZW50UHJvcHMsIHtcbiAgICAgICAgICBpbm5lclJlZjogcmVmLFxuICAgICAgICAgIGlubmVyUHJvcHM6IHtcbiAgICAgICAgICAgIG9uTW91c2VEb3duOiBfdGhpczQub25NZW51TW91c2VEb3duLFxuICAgICAgICAgICAgb25Nb3VzZU1vdmU6IF90aGlzNC5vbk1lbnVNb3VzZU1vdmVcbiAgICAgICAgICB9LFxuICAgICAgICAgIGlzTG9hZGluZzogaXNMb2FkaW5nLFxuICAgICAgICAgIHBsYWNlbWVudDogcGxhY2VtZW50XG4gICAgICAgIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChTY3JvbGxNYW5hZ2VyLCB7XG4gICAgICAgICAgY2FwdHVyZUVuYWJsZWQ6IGNhcHR1cmVNZW51U2Nyb2xsLFxuICAgICAgICAgIG9uVG9wQXJyaXZlOiBvbk1lbnVTY3JvbGxUb1RvcCxcbiAgICAgICAgICBvbkJvdHRvbUFycml2ZTogb25NZW51U2Nyb2xsVG9Cb3R0b20sXG4gICAgICAgICAgbG9ja0VuYWJsZWQ6IG1lbnVTaG91bGRCbG9ja1Njcm9sbFxuICAgICAgICB9LCBmdW5jdGlvbiAoc2Nyb2xsVGFyZ2V0UmVmKSB7XG4gICAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KE1lbnVMaXN0LCBfZXh0ZW5kcyh7fSwgY29tbW9uUHJvcHMsIHtcbiAgICAgICAgICAgIGlubmVyUmVmOiBmdW5jdGlvbiBpbm5lclJlZihpbnN0YW5jZSkge1xuICAgICAgICAgICAgICBfdGhpczQuZ2V0TWVudUxpc3RSZWYoaW5zdGFuY2UpO1xuICAgICAgICAgICAgICBzY3JvbGxUYXJnZXRSZWYoaW5zdGFuY2UpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlubmVyUHJvcHM6IHtcbiAgICAgICAgICAgICAgcm9sZTogJ2xpc3Rib3gnLFxuICAgICAgICAgICAgICAnYXJpYS1tdWx0aXNlbGVjdGFibGUnOiBjb21tb25Qcm9wcy5pc011bHRpLFxuICAgICAgICAgICAgICBpZDogX3RoaXM0LmdldEVsZW1lbnRJZCgnbGlzdGJveCcpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXNMb2FkaW5nOiBpc0xvYWRpbmcsXG4gICAgICAgICAgICBtYXhIZWlnaHQ6IG1heEhlaWdodCxcbiAgICAgICAgICAgIGZvY3VzZWRPcHRpb246IGZvY3VzZWRPcHRpb25cbiAgICAgICAgICB9KSwgbWVudVVJKTtcbiAgICAgICAgfSkpO1xuICAgICAgfSk7XG5cbiAgICAgIC8vIHBvc2l0aW9uaW5nIGJlaGF2aW91ciBpcyBhbG1vc3QgaWRlbnRpY2FsIGZvciBwb3J0YWxsZWQgYW5kIGZpeGVkLFxuICAgICAgLy8gc28gd2UgdXNlIHRoZSBzYW1lIGNvbXBvbmVudC4gdGhlIGFjdHVhbCBwb3J0YWxsaW5nIGxvZ2ljIGlzIGZvcmtlZFxuICAgICAgLy8gd2l0aGluIHRoZSBjb21wb25lbnQgYmFzZWQgb24gYG1lbnVQb3NpdGlvbmBcbiAgICAgIHJldHVybiBtZW51UG9ydGFsVGFyZ2V0IHx8IG1lbnVQb3NpdGlvbiA9PT0gJ2ZpeGVkJyA/IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KE1lbnVQb3J0YWwsIF9leHRlbmRzKHt9LCBjb21tb25Qcm9wcywge1xuICAgICAgICBhcHBlbmRUbzogbWVudVBvcnRhbFRhcmdldCxcbiAgICAgICAgY29udHJvbEVsZW1lbnQ6IHRoaXMuY29udHJvbFJlZixcbiAgICAgICAgbWVudVBsYWNlbWVudDogbWVudVBsYWNlbWVudCxcbiAgICAgICAgbWVudVBvc2l0aW9uOiBtZW51UG9zaXRpb25cbiAgICAgIH0pLCBtZW51RWxlbWVudCkgOiBtZW51RWxlbWVudDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyRm9ybUZpZWxkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlckZvcm1GaWVsZCgpIHtcbiAgICAgIHZhciBfdGhpczUgPSB0aGlzO1xuICAgICAgdmFyIF90aGlzJHByb3BzMTMgPSB0aGlzLnByb3BzLFxuICAgICAgICBkZWxpbWl0ZXIgPSBfdGhpcyRwcm9wczEzLmRlbGltaXRlcixcbiAgICAgICAgaXNEaXNhYmxlZCA9IF90aGlzJHByb3BzMTMuaXNEaXNhYmxlZCxcbiAgICAgICAgaXNNdWx0aSA9IF90aGlzJHByb3BzMTMuaXNNdWx0aSxcbiAgICAgICAgbmFtZSA9IF90aGlzJHByb3BzMTMubmFtZSxcbiAgICAgICAgcmVxdWlyZWQgPSBfdGhpcyRwcm9wczEzLnJlcXVpcmVkO1xuICAgICAgdmFyIHNlbGVjdFZhbHVlID0gdGhpcy5zdGF0ZS5zZWxlY3RWYWx1ZTtcbiAgICAgIGlmIChyZXF1aXJlZCAmJiAhdGhpcy5oYXNWYWx1ZSgpICYmICFpc0Rpc2FibGVkKSB7XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChSZXF1aXJlZElucHV0JDEsIHtcbiAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgIG9uRm9jdXM6IHRoaXMub25WYWx1ZUlucHV0Rm9jdXNcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAoIW5hbWUgfHwgaXNEaXNhYmxlZCkgcmV0dXJuO1xuICAgICAgaWYgKGlzTXVsdGkpIHtcbiAgICAgICAgaWYgKGRlbGltaXRlcikge1xuICAgICAgICAgIHZhciB2YWx1ZSA9IHNlbGVjdFZhbHVlLm1hcChmdW5jdGlvbiAob3B0KSB7XG4gICAgICAgICAgICByZXR1cm4gX3RoaXM1LmdldE9wdGlvblZhbHVlKG9wdCk7XG4gICAgICAgICAgfSkuam9pbihkZWxpbWl0ZXIpO1xuICAgICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImlucHV0XCIsIHtcbiAgICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgICB0eXBlOiBcImhpZGRlblwiLFxuICAgICAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFyIGlucHV0ID0gc2VsZWN0VmFsdWUubGVuZ3RoID4gMCA/IHNlbGVjdFZhbHVlLm1hcChmdW5jdGlvbiAob3B0LCBpKSB7XG4gICAgICAgICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiLCB7XG4gICAgICAgICAgICAgIGtleTogXCJpLVwiLmNvbmNhdChpKSxcbiAgICAgICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICAgICAgdHlwZTogXCJoaWRkZW5cIixcbiAgICAgICAgICAgICAgdmFsdWU6IF90aGlzNS5nZXRPcHRpb25WYWx1ZShvcHQpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KSA6IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIiwge1xuICAgICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICAgIHR5cGU6IFwiaGlkZGVuXCIsXG4gICAgICAgICAgICB2YWx1ZTogXCJcIlxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCBudWxsLCBpbnB1dCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBfdmFsdWUgPSBzZWxlY3RWYWx1ZVswXSA/IHRoaXMuZ2V0T3B0aW9uVmFsdWUoc2VsZWN0VmFsdWVbMF0pIDogJyc7XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImlucHV0XCIsIHtcbiAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgIHR5cGU6IFwiaGlkZGVuXCIsXG4gICAgICAgICAgdmFsdWU6IF92YWx1ZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyTGl2ZVJlZ2lvblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXJMaXZlUmVnaW9uKCkge1xuICAgICAgdmFyIGNvbW1vblByb3BzID0gdGhpcy5jb21tb25Qcm9wcztcbiAgICAgIHZhciBfdGhpcyRzdGF0ZTYgPSB0aGlzLnN0YXRlLFxuICAgICAgICBhcmlhU2VsZWN0aW9uID0gX3RoaXMkc3RhdGU2LmFyaWFTZWxlY3Rpb24sXG4gICAgICAgIGZvY3VzZWRPcHRpb24gPSBfdGhpcyRzdGF0ZTYuZm9jdXNlZE9wdGlvbixcbiAgICAgICAgZm9jdXNlZFZhbHVlID0gX3RoaXMkc3RhdGU2LmZvY3VzZWRWYWx1ZSxcbiAgICAgICAgaXNGb2N1c2VkID0gX3RoaXMkc3RhdGU2LmlzRm9jdXNlZCxcbiAgICAgICAgc2VsZWN0VmFsdWUgPSBfdGhpcyRzdGF0ZTYuc2VsZWN0VmFsdWU7XG4gICAgICB2YXIgZm9jdXNhYmxlT3B0aW9ucyA9IHRoaXMuZ2V0Rm9jdXNhYmxlT3B0aW9ucygpO1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KExpdmVSZWdpb24kMSwgX2V4dGVuZHMoe30sIGNvbW1vblByb3BzLCB7XG4gICAgICAgIGlkOiB0aGlzLmdldEVsZW1lbnRJZCgnbGl2ZS1yZWdpb24nKSxcbiAgICAgICAgYXJpYVNlbGVjdGlvbjogYXJpYVNlbGVjdGlvbixcbiAgICAgICAgZm9jdXNlZE9wdGlvbjogZm9jdXNlZE9wdGlvbixcbiAgICAgICAgZm9jdXNlZFZhbHVlOiBmb2N1c2VkVmFsdWUsXG4gICAgICAgIGlzRm9jdXNlZDogaXNGb2N1c2VkLFxuICAgICAgICBzZWxlY3RWYWx1ZTogc2VsZWN0VmFsdWUsXG4gICAgICAgIGZvY3VzYWJsZU9wdGlvbnM6IGZvY3VzYWJsZU9wdGlvbnMsXG4gICAgICAgIGlzQXBwbGVEZXZpY2U6IHRoaXMuaXNBcHBsZURldmljZVxuICAgICAgfSkpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgdmFyIF90aGlzJGdldENvbXBvbmVudHM4ID0gdGhpcy5nZXRDb21wb25lbnRzKCksXG4gICAgICAgIENvbnRyb2wgPSBfdGhpcyRnZXRDb21wb25lbnRzOC5Db250cm9sLFxuICAgICAgICBJbmRpY2F0b3JzQ29udGFpbmVyID0gX3RoaXMkZ2V0Q29tcG9uZW50czguSW5kaWNhdG9yc0NvbnRhaW5lcixcbiAgICAgICAgU2VsZWN0Q29udGFpbmVyID0gX3RoaXMkZ2V0Q29tcG9uZW50czguU2VsZWN0Q29udGFpbmVyLFxuICAgICAgICBWYWx1ZUNvbnRhaW5lciA9IF90aGlzJGdldENvbXBvbmVudHM4LlZhbHVlQ29udGFpbmVyO1xuICAgICAgdmFyIF90aGlzJHByb3BzMTQgPSB0aGlzLnByb3BzLFxuICAgICAgICBjbGFzc05hbWUgPSBfdGhpcyRwcm9wczE0LmNsYXNzTmFtZSxcbiAgICAgICAgaWQgPSBfdGhpcyRwcm9wczE0LmlkLFxuICAgICAgICBpc0Rpc2FibGVkID0gX3RoaXMkcHJvcHMxNC5pc0Rpc2FibGVkLFxuICAgICAgICBtZW51SXNPcGVuID0gX3RoaXMkcHJvcHMxNC5tZW51SXNPcGVuO1xuICAgICAgdmFyIGlzRm9jdXNlZCA9IHRoaXMuc3RhdGUuaXNGb2N1c2VkO1xuICAgICAgdmFyIGNvbW1vblByb3BzID0gdGhpcy5jb21tb25Qcm9wcyA9IHRoaXMuZ2V0Q29tbW9uUHJvcHMoKTtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChTZWxlY3RDb250YWluZXIsIF9leHRlbmRzKHt9LCBjb21tb25Qcm9wcywge1xuICAgICAgICBjbGFzc05hbWU6IGNsYXNzTmFtZSxcbiAgICAgICAgaW5uZXJQcm9wczoge1xuICAgICAgICAgIGlkOiBpZCxcbiAgICAgICAgICBvbktleURvd246IHRoaXMub25LZXlEb3duXG4gICAgICAgIH0sXG4gICAgICAgIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsXG4gICAgICAgIGlzRm9jdXNlZDogaXNGb2N1c2VkXG4gICAgICB9KSwgdGhpcy5yZW5kZXJMaXZlUmVnaW9uKCksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KENvbnRyb2wsIF9leHRlbmRzKHt9LCBjb21tb25Qcm9wcywge1xuICAgICAgICBpbm5lclJlZjogdGhpcy5nZXRDb250cm9sUmVmLFxuICAgICAgICBpbm5lclByb3BzOiB7XG4gICAgICAgICAgb25Nb3VzZURvd246IHRoaXMub25Db250cm9sTW91c2VEb3duLFxuICAgICAgICAgIG9uVG91Y2hFbmQ6IHRoaXMub25Db250cm9sVG91Y2hFbmRcbiAgICAgICAgfSxcbiAgICAgICAgaXNEaXNhYmxlZDogaXNEaXNhYmxlZCxcbiAgICAgICAgaXNGb2N1c2VkOiBpc0ZvY3VzZWQsXG4gICAgICAgIG1lbnVJc09wZW46IG1lbnVJc09wZW5cbiAgICAgIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChWYWx1ZUNvbnRhaW5lciwgX2V4dGVuZHMoe30sIGNvbW1vblByb3BzLCB7XG4gICAgICAgIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWRcbiAgICAgIH0pLCB0aGlzLnJlbmRlclBsYWNlaG9sZGVyT3JWYWx1ZSgpLCB0aGlzLnJlbmRlcklucHV0KCkpLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChJbmRpY2F0b3JzQ29udGFpbmVyLCBfZXh0ZW5kcyh7fSwgY29tbW9uUHJvcHMsIHtcbiAgICAgICAgaXNEaXNhYmxlZDogaXNEaXNhYmxlZFxuICAgICAgfSksIHRoaXMucmVuZGVyQ2xlYXJJbmRpY2F0b3IoKSwgdGhpcy5yZW5kZXJMb2FkaW5nSW5kaWNhdG9yKCksIHRoaXMucmVuZGVySW5kaWNhdG9yU2VwYXJhdG9yKCksIHRoaXMucmVuZGVyRHJvcGRvd25JbmRpY2F0b3IoKSkpLCB0aGlzLnJlbmRlck1lbnUoKSwgdGhpcy5yZW5kZXJGb3JtRmllbGQoKSk7XG4gICAgfVxuICB9XSwgW3tcbiAgICBrZXk6IFwiZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyhwcm9wcywgc3RhdGUpIHtcbiAgICAgIHZhciBwcmV2UHJvcHMgPSBzdGF0ZS5wcmV2UHJvcHMsXG4gICAgICAgIGNsZWFyRm9jdXNWYWx1ZU9uVXBkYXRlID0gc3RhdGUuY2xlYXJGb2N1c1ZhbHVlT25VcGRhdGUsXG4gICAgICAgIGlucHV0SXNIaWRkZW5BZnRlclVwZGF0ZSA9IHN0YXRlLmlucHV0SXNIaWRkZW5BZnRlclVwZGF0ZSxcbiAgICAgICAgYXJpYVNlbGVjdGlvbiA9IHN0YXRlLmFyaWFTZWxlY3Rpb24sXG4gICAgICAgIGlzRm9jdXNlZCA9IHN0YXRlLmlzRm9jdXNlZCxcbiAgICAgICAgcHJldldhc0ZvY3VzZWQgPSBzdGF0ZS5wcmV2V2FzRm9jdXNlZCxcbiAgICAgICAgaW5zdGFuY2VQcmVmaXggPSBzdGF0ZS5pbnN0YW5jZVByZWZpeDtcbiAgICAgIHZhciBvcHRpb25zID0gcHJvcHMub3B0aW9ucyxcbiAgICAgICAgdmFsdWUgPSBwcm9wcy52YWx1ZSxcbiAgICAgICAgbWVudUlzT3BlbiA9IHByb3BzLm1lbnVJc09wZW4sXG4gICAgICAgIGlucHV0VmFsdWUgPSBwcm9wcy5pbnB1dFZhbHVlLFxuICAgICAgICBpc011bHRpID0gcHJvcHMuaXNNdWx0aTtcbiAgICAgIHZhciBzZWxlY3RWYWx1ZSA9IGNsZWFuVmFsdWUodmFsdWUpO1xuICAgICAgdmFyIG5ld01lbnVPcHRpb25zU3RhdGUgPSB7fTtcbiAgICAgIGlmIChwcmV2UHJvcHMgJiYgKHZhbHVlICE9PSBwcmV2UHJvcHMudmFsdWUgfHwgb3B0aW9ucyAhPT0gcHJldlByb3BzLm9wdGlvbnMgfHwgbWVudUlzT3BlbiAhPT0gcHJldlByb3BzLm1lbnVJc09wZW4gfHwgaW5wdXRWYWx1ZSAhPT0gcHJldlByb3BzLmlucHV0VmFsdWUpKSB7XG4gICAgICAgIHZhciBmb2N1c2FibGVPcHRpb25zID0gbWVudUlzT3BlbiA/IGJ1aWxkRm9jdXNhYmxlT3B0aW9ucyhwcm9wcywgc2VsZWN0VmFsdWUpIDogW107XG4gICAgICAgIHZhciBmb2N1c2FibGVPcHRpb25zV2l0aElkcyA9IG1lbnVJc09wZW4gPyBidWlsZEZvY3VzYWJsZU9wdGlvbnNXaXRoSWRzKGJ1aWxkQ2F0ZWdvcml6ZWRPcHRpb25zKHByb3BzLCBzZWxlY3RWYWx1ZSksIFwiXCIuY29uY2F0KGluc3RhbmNlUHJlZml4LCBcIi1vcHRpb25cIikpIDogW107XG4gICAgICAgIHZhciBmb2N1c2VkVmFsdWUgPSBjbGVhckZvY3VzVmFsdWVPblVwZGF0ZSA/IGdldE5leHRGb2N1c2VkVmFsdWUoc3RhdGUsIHNlbGVjdFZhbHVlKSA6IG51bGw7XG4gICAgICAgIHZhciBmb2N1c2VkT3B0aW9uID0gZ2V0TmV4dEZvY3VzZWRPcHRpb24oc3RhdGUsIGZvY3VzYWJsZU9wdGlvbnMpO1xuICAgICAgICB2YXIgZm9jdXNlZE9wdGlvbklkID0gZ2V0Rm9jdXNlZE9wdGlvbklkKGZvY3VzYWJsZU9wdGlvbnNXaXRoSWRzLCBmb2N1c2VkT3B0aW9uKTtcbiAgICAgICAgbmV3TWVudU9wdGlvbnNTdGF0ZSA9IHtcbiAgICAgICAgICBzZWxlY3RWYWx1ZTogc2VsZWN0VmFsdWUsXG4gICAgICAgICAgZm9jdXNlZE9wdGlvbjogZm9jdXNlZE9wdGlvbixcbiAgICAgICAgICBmb2N1c2VkT3B0aW9uSWQ6IGZvY3VzZWRPcHRpb25JZCxcbiAgICAgICAgICBmb2N1c2FibGVPcHRpb25zV2l0aElkczogZm9jdXNhYmxlT3B0aW9uc1dpdGhJZHMsXG4gICAgICAgICAgZm9jdXNlZFZhbHVlOiBmb2N1c2VkVmFsdWUsXG4gICAgICAgICAgY2xlYXJGb2N1c1ZhbHVlT25VcGRhdGU6IGZhbHNlXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICAvLyBzb21lIHVwZGF0ZXMgc2hvdWxkIHRvZ2dsZSB0aGUgc3RhdGUgb2YgdGhlIGlucHV0IHZpc2liaWxpdHlcbiAgICAgIHZhciBuZXdJbnB1dElzSGlkZGVuU3RhdGUgPSBpbnB1dElzSGlkZGVuQWZ0ZXJVcGRhdGUgIT0gbnVsbCAmJiBwcm9wcyAhPT0gcHJldlByb3BzID8ge1xuICAgICAgICBpbnB1dElzSGlkZGVuOiBpbnB1dElzSGlkZGVuQWZ0ZXJVcGRhdGUsXG4gICAgICAgIGlucHV0SXNIaWRkZW5BZnRlclVwZGF0ZTogdW5kZWZpbmVkXG4gICAgICB9IDoge307XG4gICAgICB2YXIgbmV3QXJpYVNlbGVjdGlvbiA9IGFyaWFTZWxlY3Rpb247XG4gICAgICB2YXIgaGFzS2VwdEZvY3VzID0gaXNGb2N1c2VkICYmIHByZXZXYXNGb2N1c2VkO1xuICAgICAgaWYgKGlzRm9jdXNlZCAmJiAhaGFzS2VwdEZvY3VzKSB7XG4gICAgICAgIC8vIElmIGB2YWx1ZWAgb3IgYGRlZmF1bHRWYWx1ZWAgcHJvcHMgYXJlIG5vdCBlbXB0eSB0aGVuIGFubm91bmNlIHRoZW1cbiAgICAgICAgLy8gd2hlbiB0aGUgU2VsZWN0IGlzIGluaXRpYWxseSBmb2N1c2VkXG4gICAgICAgIG5ld0FyaWFTZWxlY3Rpb24gPSB7XG4gICAgICAgICAgdmFsdWU6IHZhbHVlVGVybmFyeShpc011bHRpLCBzZWxlY3RWYWx1ZSwgc2VsZWN0VmFsdWVbMF0gfHwgbnVsbCksXG4gICAgICAgICAgb3B0aW9uczogc2VsZWN0VmFsdWUsXG4gICAgICAgICAgYWN0aW9uOiAnaW5pdGlhbC1pbnB1dC1mb2N1cydcbiAgICAgICAgfTtcbiAgICAgICAgaGFzS2VwdEZvY3VzID0gIXByZXZXYXNGb2N1c2VkO1xuICAgICAgfVxuXG4gICAgICAvLyBJZiB0aGUgJ2luaXRpYWwtaW5wdXQtZm9jdXMnIGFjdGlvbiBoYXMgYmVlbiBzZXQgYWxyZWFkeVxuICAgICAgLy8gdGhlbiByZXNldCB0aGUgYXJpYVNlbGVjdGlvbiB0byBudWxsXG4gICAgICBpZiAoKGFyaWFTZWxlY3Rpb24gPT09IG51bGwgfHwgYXJpYVNlbGVjdGlvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogYXJpYVNlbGVjdGlvbi5hY3Rpb24pID09PSAnaW5pdGlhbC1pbnB1dC1mb2N1cycpIHtcbiAgICAgICAgbmV3QXJpYVNlbGVjdGlvbiA9IG51bGw7XG4gICAgICB9XG4gICAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIG5ld01lbnVPcHRpb25zU3RhdGUpLCBuZXdJbnB1dElzSGlkZGVuU3RhdGUpLCB7fSwge1xuICAgICAgICBwcmV2UHJvcHM6IHByb3BzLFxuICAgICAgICBhcmlhU2VsZWN0aW9uOiBuZXdBcmlhU2VsZWN0aW9uLFxuICAgICAgICBwcmV2V2FzRm9jdXNlZDogaGFzS2VwdEZvY3VzXG4gICAgICB9KTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIFNlbGVjdDtcbn0oQ29tcG9uZW50KTtcblNlbGVjdC5kZWZhdWx0UHJvcHMgPSBkZWZhdWx0UHJvcHM7XG5cbmV4cG9ydCB7IFNlbGVjdCBhcyBTLCBkZWZhdWx0UHJvcHMgYXMgYSwgZ2V0T3B0aW9uTGFiZWwkMSBhcyBiLCBjcmVhdGVGaWx0ZXIgYXMgYywgZGVmYXVsdFRoZW1lIGFzIGQsIGdldE9wdGlvblZhbHVlJDEgYXMgZywgbWVyZ2VTdHlsZXMgYXMgbSB9O1xuIiwgImltcG9ydCB7IHUgYXMgdXNlU3RhdGVNYW5hZ2VyIH0gZnJvbSAnLi91c2VTdGF0ZU1hbmFnZXItN2UxZTg0ODkuZXNtLmpzJztcbmV4cG9ydCB7IHUgYXMgdXNlU3RhdGVNYW5hZ2VyIH0gZnJvbSAnLi91c2VTdGF0ZU1hbmFnZXItN2UxZTg0ODkuZXNtLmpzJztcbmltcG9ydCBfZXh0ZW5kcyBmcm9tICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzJztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGZvcndhcmRSZWYsIHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBTIGFzIFNlbGVjdCB9IGZyb20gJy4vU2VsZWN0LTFmZDU4OGM5LmVzbS5qcyc7XG5leHBvcnQgeyBjIGFzIGNyZWF0ZUZpbHRlciwgZCBhcyBkZWZhdWx0VGhlbWUsIG0gYXMgbWVyZ2VTdHlsZXMgfSBmcm9tICcuL1NlbGVjdC0xZmQ1ODhjOS5lc20uanMnO1xuaW1wb3J0IHsgQ2FjaGVQcm92aWRlciB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCBjcmVhdGVDYWNoZSBmcm9tICdAZW1vdGlvbi9jYWNoZSc7XG5leHBvcnQgeyBjIGFzIGNvbXBvbmVudHMgfSBmcm9tICcuL2luZGV4LWEzMDFmNTI2LmVzbS5qcyc7XG5pbXBvcnQgJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0U3ByZWFkMic7XG5pbXBvcnQgJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvc2xpY2VkVG9BcnJheSc7XG5pbXBvcnQgJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0V2l0aG91dFByb3BlcnRpZXMnO1xuaW1wb3J0ICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrJztcbmltcG9ydCAnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzcyc7XG5pbXBvcnQgJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5oZXJpdHMnO1xuaW1wb3J0ICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZVN1cGVyJztcbmltcG9ydCAnQGJhYmVsL3J1bnRpbWUvaGVscGVycy90b0NvbnN1bWFibGVBcnJheSc7XG5pbXBvcnQgJ21lbW9pemUtb25lJztcbmltcG9ydCAnQGJhYmVsL3J1bnRpbWUvaGVscGVycy90eXBlb2YnO1xuaW1wb3J0ICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbCc7XG5pbXBvcnQgJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHknO1xuaW1wb3J0ICdyZWFjdC1kb20nO1xuaW1wb3J0ICdAZmxvYXRpbmctdWkvZG9tJztcbmltcG9ydCAndXNlLWlzb21vcnBoaWMtbGF5b3V0LWVmZmVjdCc7XG5cbnZhciBTdGF0ZU1hbmFnZWRTZWxlY3QgPSAvKiNfX1BVUkVfXyovZm9yd2FyZFJlZihmdW5jdGlvbiAocHJvcHMsIHJlZikge1xuICB2YXIgYmFzZVNlbGVjdFByb3BzID0gdXNlU3RhdGVNYW5hZ2VyKHByb3BzKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFNlbGVjdCwgX2V4dGVuZHMoe1xuICAgIHJlZjogcmVmXG4gIH0sIGJhc2VTZWxlY3RQcm9wcykpO1xufSk7XG52YXIgU3RhdGVNYW5hZ2VkU2VsZWN0JDEgPSBTdGF0ZU1hbmFnZWRTZWxlY3Q7XG5cbnZhciBOb25jZVByb3ZpZGVyID0gKGZ1bmN0aW9uIChfcmVmKSB7XG4gIHZhciBub25jZSA9IF9yZWYubm9uY2UsXG4gICAgY2hpbGRyZW4gPSBfcmVmLmNoaWxkcmVuLFxuICAgIGNhY2hlS2V5ID0gX3JlZi5jYWNoZUtleTtcbiAgdmFyIGVtb3Rpb25DYWNoZSA9IHVzZU1lbW8oZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBjcmVhdGVDYWNoZSh7XG4gICAgICBrZXk6IGNhY2hlS2V5LFxuICAgICAgbm9uY2U6IG5vbmNlXG4gICAgfSk7XG4gIH0sIFtjYWNoZUtleSwgbm9uY2VdKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KENhY2hlUHJvdmlkZXIsIHtcbiAgICB2YWx1ZTogZW1vdGlvbkNhY2hlXG4gIH0sIGNoaWxkcmVuKTtcbn0pO1xuXG5leHBvcnQgeyBOb25jZVByb3ZpZGVyLCBTdGF0ZU1hbmFnZWRTZWxlY3QkMSBhcyBkZWZhdWx0IH07XG4iLCAiLyoqXG4gKiBAbW9kdWxlIHVpXG4gKi9cbmltcG9ydCB7IHVzZUVkaXRhYmxlRGlzcGF0Y2ggfSBmcm9tIFwidWkvZmllbGRzL2VkaXRhYmxlXCI7XG5pbXBvcnQgeyBGaWVsZENvbnRyb2xQcm9wcyB9IGZyb20gXCIuL2NvbW1vbi1wcm9wc1wiO1xuaW1wb3J0IHsgVGFyZ2V0ZWRFdmVudCB9IGZyb20gXCJwcmVhY3QvY29tcGF0XCI7XG5pbXBvcnQgeyB1c2VTdGFibGVDYWxsYmFjayB9IGZyb20gXCJ1aS9ob29rc1wiO1xuXG4vKiogRWRpdGFibGUgZmllbGQgZm9yIGEgYm9vbGVhbiAodHJ1ZS9mYWxzZSkgdmFsdWUuXG4gKiBAZ3JvdXAgRWRpdGFibGUgQ29tcG9uZW50c1xuICovXG5leHBvcnQgZnVuY3Rpb24gQm9vbGVhbkVkaXRhYmxlKHByb3BzOiBGaWVsZENvbnRyb2xQcm9wczxib29sZWFuPikge1xuICAgIGNvbnN0IFtzdGF0ZSwgZGlzcGF0Y2hdID0gdXNlRWRpdGFibGVEaXNwYXRjaDxib29sZWFuPih7XG4gICAgICAgIGNvbnRlbnQ6IHByb3BzLnZhbHVlID8/IHByb3BzLmRlZmF1bHRWYWx1ZSxcbiAgICAgICAgdXBkYXRlcjogcHJvcHMudXBkYXRlciEsXG4gICAgfSk7XG5cbiAgICBjb25zdCBvbkNoYW5nZSA9IHVzZVN0YWJsZUNhbGxiYWNrKFxuICAgICAgICAoZXZ0OiBUYXJnZXRlZEV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+ICYgTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgbGV0IG5ld1ZhbHVlID0gIWV2dC5jdXJyZW50VGFyZ2V0Lmhhc0NsYXNzKFwiaXMtZW5hYmxlZFwiKTtcbiAgICAgICAgICAgIGRpc3BhdGNoKHsgdHlwZTogXCJjb250ZW50LWNoYW5nZWRcIiwgbmV3VmFsdWUgfSk7XG4gICAgICAgICAgICBkaXNwYXRjaCh7IHR5cGU6IFwiY29tbWl0XCIsIG5ld1ZhbHVlIH0pO1xuICAgICAgICB9LFxuICAgICAgICBbc3RhdGUuY29udGVudCwgc3RhdGUsIHByb3BzLnZhbHVlXVxuICAgICk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2IG9uQ2xpY2s9e29uQ2hhbmdlfSBjbGFzc05hbWU9e2BjaGVja2JveC1jb250YWluZXIke3N0YXRlLmNvbnRlbnQgPyBcIiBpcy1lbmFibGVkXCIgOiBcIlwifWB9PlxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICk7XG59XG4iLCAiLyoqXG4gKiBAbW9kdWxlIHVpXG4gKi9cbmltcG9ydCB7IENoYW5nZUV2ZW50IH0gZnJvbSBcInByZWFjdC9jb21wYXRcIjtcbmltcG9ydCB7IERpc3BhdGNoLCB1c2VFZmZlY3QsIHVzZVJlZiB9IGZyb20gXCJwcmVhY3QvaG9va3NcIjtcbmltcG9ydCB7IEVkaXRhYmxlLCBFZGl0YWJsZUFjdGlvbiwgRWRpdGFibGVTdGF0ZSB9IGZyb20gXCJ1aS9maWVsZHMvZWRpdGFibGVcIjtcbmltcG9ydCB7IHVzZVN0YWJsZUNhbGxiYWNrIH0gZnJvbSBcInVpL2hvb2tzXCI7XG5cbmltcG9ydCBcIi4vZmllbGRzLmNzc1wiO1xuXG4vKiogRWRpdGFibGUgZmllbGQgZm9yIG11bHRpLXN0ZXAgcHJvZ3Jlc3MuXG4gKiBAZ3JvdXAgRWRpdGFibGUgQ29tcG9uZW50c1xuICovXG5leHBvcnQgZnVuY3Rpb24gUHJvZ3Jlc3NFZGl0YWJsZShcbiAgICBwcm9wczogRWRpdGFibGVTdGF0ZTxudW1iZXI+ICYge1xuICAgICAgICBzb3VyY2VQYXRoOiBzdHJpbmc7XG4gICAgICAgIG1pbjogbnVtYmVyO1xuICAgICAgICBtYXg6IG51bWJlcjtcbiAgICAgICAgc3RlcDogbnVtYmVyO1xuICAgICAgICBkaXNwYXRjaDogRGlzcGF0Y2g8RWRpdGFibGVBY3Rpb248bnVtYmVyPj47XG4gICAgfVxuKSB7XG4gICAgY29uc3QgdmFsID0gdXNlUmVmKHByb3BzLmNvbnRlbnQpO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHByb3BzLmRpc3BhdGNoKHsgdHlwZTogXCJjb250ZW50LWNoYW5nZWRcIiwgbmV3VmFsdWU6IHZhbC5jdXJyZW50IH0pO1xuICAgIH0sIFt2YWwuY3VycmVudF0pO1xuICAgIGNvbnN0IGZpbmFsaXplID0gYXN5bmMgKCkgPT4ge1xuICAgICAgICBwcm9wcy5kaXNwYXRjaCh7XG4gICAgICAgICAgICB0eXBlOiBcImNvbW1pdFwiLFxuICAgICAgICAgICAgbmV3VmFsdWU6IHZhbC5jdXJyZW50LFxuICAgICAgICB9KTtcbiAgICB9O1xuICAgIGNvbnN0IGNoYW5nZUNCID0gdXNlU3RhYmxlQ2FsbGJhY2soXG4gICAgICAgIChlOiBDaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgICAgICAgICAgZmluYWxpemUoKTtcbiAgICAgICAgICAgIHZhbC5jdXJyZW50ID0gcGFyc2VGbG9hdChlLmN1cnJlbnRUYXJnZXQudmFsdWUpO1xuICAgICAgICB9LFxuICAgICAgICBbdmFsLmN1cnJlbnQsIHByb3BzLnNvdXJjZVBhdGhdXG4gICAgKTtcbiAgICBjb25zdCByZWFkT25seSA9IDxwcm9ncmVzcyB2YWx1ZT17dmFsLmN1cnJlbnR9IG1pbj17cHJvcHMubWlufSBtYXg9e3Byb3BzLm1heH0gc3RlcD17cHJvcHMuc3RlcH0gLz47XG5cbiAgICBjb25zdCBlZGl0b3IgPSAoXG4gICAgICAgIDxpbnB1dCB0eXBlPVwicmFuZ2VcIiBjbGFzc05hbWU9XCJkYXRhY29yZS1wcm9ncmVzcy1lZGl0YWJsZVwiIHZhbHVlPXt2YWwuY3VycmVudH0gb25DaGFuZ2U9e2NoYW5nZUNCfSAvPlxuICAgICk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJoYXMtdGV4dGVkaXRhYmxlXCI+XG4gICAgICAgICAgICA8RWRpdGFibGU8bnVtYmVyPlxuICAgICAgICAgICAgICAgIGRpc3BhdGNoPXtwcm9wcy5kaXNwYXRjaH1cbiAgICAgICAgICAgICAgICBlZGl0b3I9e2VkaXRvcn1cbiAgICAgICAgICAgICAgICBzdGF0ZT17eyAuLi5wcm9wcywgY29udGVudDogdmFsLmN1cnJlbnQsIGlzRWRpdGluZzogcHJvcHMuaXNFZGl0aW5nIH19XG4gICAgICAgICAgICAgICAgZGVmYXVsdFJlbmRlcj17cmVhZE9ubHl9XG4gICAgICAgICAgICAvPlxuICAgICAgICA8L3NwYW4+XG4gICAgKTtcbn1cbiIsICIvKipcbiAqIEBtb2R1bGUgdWlcbiAqL1xuaW1wb3J0IHsgdXNlTWVtbyB9IGZyb20gXCJwcmVhY3QvaG9va3NcIjtcbmltcG9ydCB7IHVzZVN0YWJsZUNhbGxiYWNrIH0gZnJvbSBcInVpL2hvb2tzXCI7XG5pbXBvcnQgeyBGaWVsZENvbnRyb2xQcm9wcyB9IGZyb20gXCIuL2NvbW1vbi1wcm9wc1wiO1xuaW1wb3J0IHsgdXNlRWRpdGFibGVEaXNwYXRjaCB9IGZyb20gXCJ1aS9maWVsZHMvZWRpdGFibGVcIjtcblxuaW1wb3J0IFwiLi9maWVsZHMuY3NzXCI7XG5cbi8qKiBFZGl0YWJsZSBmaWVsZCBmb3IgYSBzdGFyLWJhc2VkIHJhdGluZyBmaWVsZC5cbiAqIEBncm91cCBFZGl0YWJsZSBDb21wb25lbnRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBSYXRpbmdFZGl0YWJsZSh7IHZhbHVlLCB1cGRhdGVyLCBjb25maWc6IGNvbmZpZywgZGVmYXVsdFZhbHVlIH06IEZpZWxkQ29udHJvbFByb3BzPG51bWJlciB8IHN0cmluZz4pIHtcbiAgICBjb25zdCBbc3RhdGUsIGRpc3BhdGNoXSA9IHVzZUVkaXRhYmxlRGlzcGF0Y2g8bnVtYmVyIHwgc3RyaW5nPih7XG4gICAgICAgIGNvbnRlbnQ6IHZhbHVlID8/IGRlZmF1bHRWYWx1ZSxcbiAgICAgICAgdXBkYXRlcjogdXBkYXRlciEsXG4gICAgfSk7XG5cbiAgICBjb25zdCBwYXJzZWRWYWx1ZSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIHN0YXRlLmNvbnRlbnQgPT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgaWYgKHN0YXRlLmNvbnRlbnQuY29udGFpbnMoXCIvXCIpKSB7XG4gICAgICAgICAgICAgICAgbGV0IHNwbGl0ID0gc3RhdGUuY29udGVudC5zcGxpdChcIi9cIik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW50KHNwbGl0WzBdKSAvIHBhcnNlSW50KHNwbGl0WzFdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2Ygc3RhdGUuY29udGVudCA9PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICByZXR1cm4gTWF0aC5taW4oc3RhdGUuY29udGVudCwgNSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfSwgW3N0YXRlLmNvbnRlbnRdKTtcblxuICAgIGNvbnN0IHN0YXJzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIGxldCByOiBSZWFjdC5SZWFjdE5vZGVbXSA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IChjb25maWc/Lm1heCA/PyA1KTsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgY2xpY2tDYiA9IHVzZVN0YWJsZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgbmV3VmFsdWU6IG51bWJlciB8IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygc3RhdGUuY29udGVudCA9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzdGF0ZS5jb250ZW50LmNvbnRhaW5zKFwiL1wiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV3VmFsdWUgPSBgJHtpICsgMX0vNWA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBzdGF0ZS5jb250ZW50ID09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3VmFsdWUgPSBNYXRoLm1pbihpICsgMSwgY29uZmlnPy5tYXggPz8gNSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZGlzcGF0Y2goeyB0eXBlOiBcImNvbnRlbnQtY2hhbmdlZFwiLCBuZXdWYWx1ZTogbmV3VmFsdWUgfHwgaSArIDEgfSk7XG4gICAgICAgICAgICAgICAgZGlzcGF0Y2goeyB0eXBlOiBcImNvbW1pdFwiLCBuZXdWYWx1ZTogbmV3VmFsdWUgfHwgaSArIDEgfSk7XG4gICAgICAgICAgICB9LCBbc3RhdGUsIHBhcnNlZFZhbHVlLCBpXSk7XG4gICAgICAgICAgICBsZXQgY2xhc3NlcyA9IFtcImRhdGFjb3JlLXJhdGluZy1zdGFyXCJdO1xuICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKGkgPCBwYXJzZWRWYWx1ZSA/IFwiZmlsbGVkXCIgOiBcImVtcHR5XCIpO1xuICAgICAgICAgICAgci5wdXNoKFxuICAgICAgICAgICAgICAgIDxzcGFuIG9uQ2xpY2s9e2NsaWNrQ2J9IGNsYXNzTmFtZT17Y2xhc3Nlcy5qb2luKFwiIFwiKX0+XG4gICAgICAgICAgICAgICAgICAgICYjOTczMztcbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByO1xuICAgIH0sIFtwYXJzZWRWYWx1ZSwgc3RhdGVdKTtcblxuICAgIHJldHVybiA8c3BhbiBjbGFzc05hbWU9XCJkYXRhY29yZS1yYXRpbmdcIj57c3RhcnN9PC9zcGFuPjtcbn1cbiIsICJpbXBvcnQgeyBEYXRhY29yZSB9IGZyb20gXCJpbmRleC9kYXRhY29yZVwiO1xuaW1wb3J0IHsgU3Vic3RvcmVyIH0gZnJvbSBcImluZGV4L2RhdGFzdG9yZVwiO1xuaW1wb3J0IHsgc2V0RW1vamlTaG9ydGhhbmRDb21wbGV0aW9uRmllbGQsIHNldElubGluZUZpZWxkIH0gZnJvbSBcImluZGV4L2ltcG9ydC9pbmxpbmUtZmllbGRcIjtcbmltcG9ydCB7IEluZGV4YWJsZSB9IGZyb20gXCJpbmRleC90eXBlcy9pbmRleGFibGVcIjtcbmltcG9ydCB7IE1hcmtkb3duUGFnZSwgTWFya2Rvd25TZWN0aW9uLCBNYXJrZG93bkJsb2NrLCBNYXJrZG93bkxpc3RJdGVtLCBNYXJrZG93blRhc2tJdGVtIH0gZnJvbSBcImluZGV4L3R5cGVzL21hcmtkb3duXCI7XG5pbXBvcnQgeyBEYXRlVGltZSB9IGZyb20gXCJsdXhvblwiO1xuaW1wb3J0IHsgVmF1bHQgfSBmcm9tIFwib2JzaWRpYW5cIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlRG90RmllbGQocmF3OiBzdHJpbmcsIG9iajogYW55KSB7XG4gICAgaWYgKG9iaiA9PT0gbnVsbCkgcmV0dXJuIG9iajtcbiAgICBpZiAocmF3LmNvbnRhaW5zKFwiLlwiKSlcbiAgICAgICAgcmV0dXJuIHJhdy5zcGxpdChcIi5cIikucmVkdWNlKCh0aWYsIGMpID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdGlmID09IFwib2JqZWN0XCIpIHJldHVybiB0aWZbY107XG4gICAgICAgICAgICBlbHNlIHJldHVybiB0aWY7XG4gICAgICAgIH0sIG9iaiB8fCB7fSk7XG4gICAgaWYgKHR5cGVvZiBvYmogPT09IFwib2JqZWN0XCIgJiYgIUFycmF5LmlzQXJyYXkob2JqKSkge1xuICAgICAgICByZXR1cm4gb2JqW3Jhd107XG4gICAgfVxuICAgIHJldHVybiBvYmo7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWVsZChpbnB1dDogSW5kZXhhYmxlLCBmaWVsZDogc3RyaW5nKSB7XG4gICAgaWYgKGlucHV0IGluc3RhbmNlb2YgTWFya2Rvd25QYWdlKSB7XG4gICAgICAgIHJldHVybiBpbnB1dC5maWVsZChmaWVsZCk/LnZhbHVlID8/IG51bGw7XG4gICAgfSBlbHNlIGlmIChpbnB1dCBpbnN0YW5jZW9mIE1hcmtkb3duU2VjdGlvbikge1xuICAgICAgICByZXR1cm4gaW5wdXQuZmllbGQoZmllbGQpPy52YWx1ZSA/PyBudWxsO1xuICAgIH0gZWxzZSBpZiAoaW5wdXQgaW5zdGFuY2VvZiBNYXJrZG93bkJsb2NrKSB7XG4gICAgICAgIHJldHVybiBpbnB1dC5maWVsZChmaWVsZCk/LnZhbHVlID8/IG51bGw7XG4gICAgfSBlbHNlIGlmIChpbnB1dCBpbnN0YW5jZW9mIE1hcmtkb3duTGlzdEl0ZW0pIHtcbiAgICAgICAgcmV0dXJuIGlucHV0LmZpZWxkKGZpZWxkKT8udmFsdWUgPz8gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4ge307XG4gICAgfVxufSAvKiogVHJpbSBlbXB0eSBlbmRpbmcgbGluZXMuICovXG5mdW5jdGlvbiB0cmltRW5kaW5nTGluZXModGV4dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBsZXQgcGFydHMgPSB0ZXh0LnNwbGl0KC9cXHI/XFxuL3UpO1xuICAgIGxldCB0cmltID0gcGFydHMubGVuZ3RoIC0gMTtcbiAgICB3aGlsZSAodHJpbSA+IDAgJiYgcGFydHNbdHJpbV0udHJpbSgpID09IFwiXCIpIHRyaW0tLTtcblxuICAgIHJldHVybiBwYXJ0cy5qb2luKFwiXFxuXCIpO1xufVxuLyoqIFNldCB0aGUgdGFzayBjb21wbGV0aW9uIGtleSBvbiBjaGVjay4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRUYXNrQ29tcGxldGlvbihcbiAgICB0YXNrOiBNYXJrZG93blRhc2tJdGVtLFxuICAgIG9yaWdpbmFsVGV4dDogc3RyaW5nLFxuICAgIHVzZUVtb2ppU2hvcnRoYW5kOiBib29sZWFuLFxuICAgIGNvbXBsZXRpb25LZXk6IHN0cmluZyxcbiAgICBjb21wbGV0aW9uRGF0ZUZvcm1hdDogc3RyaW5nLFxuICAgIGNvbXBsZXRlOiBib29sZWFuXG4pOiBzdHJpbmcge1xuICAgIGNvbnN0IGJsb2NrSWRSZWdleCA9IC9cXF5bYS16MC05XFwtXSsvaTtcblxuICAgIGlmICghY29tcGxldGUgJiYgIXVzZUVtb2ppU2hvcnRoYW5kKSB7XG4gICAgICAgIGRlbGV0ZSB0YXNrLiRpbmZpZWxkc1tjb21wbGV0aW9uS2V5XTtcbiAgICAgICAgcmV0dXJuIHRyaW1FbmRpbmdMaW5lcyhzZXRJbmxpbmVGaWVsZChvcmlnaW5hbFRleHQudHJpbUVuZCgpLCBjb21wbGV0aW9uS2V5KSkudHJpbUVuZCgpO1xuICAgIH1cblxuICAgIGxldCBwYXJ0cyA9IG9yaWdpbmFsVGV4dC5zcGxpdCgvXFxyP1xcbi91KTtcbiAgICBjb25zdCBtYXRjaGVzID0gYmxvY2tJZFJlZ2V4LmV4ZWMocGFydHNbcGFydHMubGVuZ3RoIC0gMV0pO1xuXG4gICAgbGV0IHByb2Nlc3NlZFBhcnQgPSBwYXJ0c1twYXJ0cy5sZW5ndGggLSAxXS5zcGxpdChibG9ja0lkUmVnZXgpLmpvaW4oXCJcIik7IC8vIGxhc3QgcGFydCB3aXRob3V0IGJsb2NrIGlkXG4gICAgaWYgKHVzZUVtb2ppU2hvcnRoYW5kKSB7XG4gICAgICAgIHByb2Nlc3NlZFBhcnQgPSBzZXRFbW9qaVNob3J0aGFuZENvbXBsZXRpb25GaWVsZChcbiAgICAgICAgICAgIHByb2Nlc3NlZFBhcnQsXG4gICAgICAgICAgICBjb21wbGV0ZSA/IERhdGVUaW1lLm5vdygpLnRvRm9ybWF0KFwieXl5eS1NTS1kZFwiKSA6IFwiXCJcbiAgICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBwcm9jZXNzZWRQYXJ0ID0gc2V0SW5saW5lRmllbGQocHJvY2Vzc2VkUGFydCwgY29tcGxldGlvbktleSwgRGF0ZVRpbWUubm93KCkudG9Gb3JtYXQoY29tcGxldGlvbkRhdGVGb3JtYXQpKTtcbiAgICAgICAgdGFzay4kaW5maWVsZHNbY29tcGxldGlvbktleV0gPSB7XG4gICAgICAgICAgICByYXc6IERhdGVUaW1lLm5vdygpLnRvRm9ybWF0KGNvbXBsZXRpb25EYXRlRm9ybWF0KSxcbiAgICAgICAgICAgIHZhbHVlOiBEYXRlVGltZS5ub3coKSxcbiAgICAgICAgICAgIGtleTogY29tcGxldGlvbktleSxcbiAgICAgICAgICAgIHBvc2l0aW9uOiB7XG4gICAgICAgICAgICAgICAgbGluZTogdGFzay4kbGluZSxcbiAgICAgICAgICAgICAgICBzdGFydDogMCxcbiAgICAgICAgICAgICAgICBzdGFydFZhbHVlOiAwLFxuICAgICAgICAgICAgICAgIGVuZDogRGF0ZVRpbWUubm93KCkudG9Gb3JtYXQoY29tcGxldGlvbkRhdGVGb3JtYXQpLmxlbmd0aCAtIDEsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgIH1cbiAgICBwcm9jZXNzZWRQYXJ0ID0gYCR7cHJvY2Vzc2VkUGFydC50cmltRW5kKCl9JHttYXRjaGVzPy5sZW5ndGggPyBcIiBcIiArIG1hdGNoZXNbMF0udHJpbSgpIDogXCJcIn1gLnRyaW1FbmQoKTsgLy8gYWRkIGJhY2sgYmxvY2sgaWRcbiAgICBwYXJ0c1twYXJ0cy5sZW5ndGggLSAxXSA9IHByb2Nlc3NlZFBhcnQudHJpbVN0YXJ0KCk7XG5cbiAgICByZXR1cm4gcGFydHMuam9pbihcIlxcblwiKTtcbn1cblxuZXhwb3J0IGNvbnN0IExJU1RfSVRFTV9SRUdFWCA9IC9eW1xccz5dKihcXGQrXFwufFxcZCtcXCl8XFwqfC18XFwrKVxccyooXFxbLnswLDF9XFxdKT9cXHMqKC4qKSQvbXU7XG5cbi8qKiBSZXdyaXRlIGEgdGFzayB3aXRoIHRoZSBnaXZlbiBjb21wbGV0aW9uIHN0YXR1cyBhbmQgbmV3IHRleHQuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmV3cml0ZVRhc2soXG4gICAgdmF1bHQ6IFZhdWx0LFxuICAgIGNvcmU6IERhdGFjb3JlLFxuICAgIHRhc2s6IE1hcmtkb3duVGFza0l0ZW0gfCBNYXJrZG93bkxpc3RJdGVtLFxuICAgIGRlc2lyZWRTdGF0dXM6IHN0cmluZyxcbiAgICBkZXNpcmVkVGV4dD86IHN0cmluZ1xuKSB7XG4gICAgaWYgKFxuICAgICAgICB0YXNrIGluc3RhbmNlb2YgTWFya2Rvd25UYXNrSXRlbSAmJlxuICAgICAgICBkZXNpcmVkU3RhdHVzID09IHRhc2suJHN0YXR1cyAmJlxuICAgICAgICAoZGVzaXJlZFRleHQgPT0gdW5kZWZpbmVkIHx8IGRlc2lyZWRUZXh0ID09IHRhc2suJHRleHQpXG4gICAgKVxuICAgICAgICByZXR1cm47XG4gICAgZGVzaXJlZFN0YXR1cyA9IGRlc2lyZWRTdGF0dXMgPT0gXCJcIiA/IFwiIFwiIDogZGVzaXJlZFN0YXR1cztcblxuICAgIGxldCByYXdGaWxldGV4dCA9IGF3YWl0IHZhdWx0LmFkYXB0ZXIucmVhZCh0YXNrLiRmaWxlKTtcbiAgICBsZXQgaGFzUk4gPSByYXdGaWxldGV4dC5jb250YWlucyhcIlxcclwiKTtcbiAgICBsZXQgZmlsZXRleHQgPSByYXdGaWxldGV4dC5zcGxpdCgvXFxyXFxufFxccnxcXG4vdSk7XG5cbiAgICBpZiAoZmlsZXRleHQubGVuZ3RoIDwgdGFzay4kbGluZSkgcmV0dXJuO1xuICAgIGxldCBtYXRjaCA9IExJU1RfSVRFTV9SRUdFWC5leGVjKGZpbGV0ZXh0W3Rhc2suJGxpbmVdKTtcbiAgICBpZiAoIW1hdGNoIHx8IG1hdGNoWzJdPy5sZW5ndGggPT0gMCkgcmV0dXJuO1xuXG4gICAgbGV0IHRhc2tUZXh0UGFydHMgPSB0YXNrLiR0ZXh0IS5zcGxpdChcIlxcblwiKTtcbiAgICAvLyBpZiAodGFza1RleHRQYXJ0c1swXS50cmltKCkgIT0gbWF0Y2hbM10udHJpbSgpKSByZXR1cm47XG5cbiAgICAvLyBXZSBoYXZlIGEgcG9zaXRpdmUgbWF0Y2ggaGVyZSBhdCB0aGlzIHBvaW50LCBzbyBnbyBhaGVhZCBhbmQgZG8gdGhlIHJld3JpdGUgb2YgdGhlIHN0YXR1cy5cbiAgICBjb25zdCBzdGF0dXNQYXJ0ID0gdGFzayBpbnN0YW5jZW9mIE1hcmtkb3duVGFza0l0ZW0gPyBgWyR7ZGVzaXJlZFN0YXR1c31dYCA6IFwiXCI7XG4gICAgbGV0IGluaXRpYWxTcGFjaW5nID0gL15bXFxzPl0qL3UuZXhlYyhmaWxldGV4dFt0YXNrLiRsaW5lXSkhIVswXTtcbiAgICBpZiAoZGVzaXJlZFRleHQpIHtcbiAgICAgICAgbGV0IGRlc2lyZWRQYXJ0cyA9IGRlc2lyZWRUZXh0LnNwbGl0KFwiXFxuXCIpO1xuXG4gICAgICAgIGxldCBuZXdUZXh0TGluZXM6IHN0cmluZ1tdID0gW2Ake2luaXRpYWxTcGFjaW5nfSR7dGFzay4kc3ltYm9sfSAke3N0YXR1c1BhcnR9ICR7ZGVzaXJlZFBhcnRzWzBdfWBdLmNvbmNhdChcbiAgICAgICAgICAgIGRlc2lyZWRQYXJ0cy5zbGljZSgxKS5tYXAoKGwpID0+IGluaXRpYWxTcGFjaW5nICsgXCJcXHRcIiArIGwudHJpbVN0YXJ0KCkpXG4gICAgICAgICk7XG5cbiAgICAgICAgZmlsZXRleHQuc3BsaWNlKHRhc2suJGxpbmUsIHRhc2suJHRleHQhLnNwbGl0KFwiXFxuXCIpLmxlbmd0aCwgLi4ubmV3VGV4dExpbmVzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBmaWxldGV4dFt0YXNrLiRsaW5lXSA9IGAke2luaXRpYWxTcGFjaW5nfSR7dGFzay4kc3ltYm9sfSAke3N0YXR1c1BhcnR9ICR7dGFza1RleHRQYXJ0c1swXS50cmltKCl9YDtcbiAgICB9XG5cbiAgICBsZXQgbmV3VGV4dCA9IGZpbGV0ZXh0LmpvaW4oaGFzUk4gPyBcIlxcclxcblwiIDogXCJcXG5cIik7XG4gICAgYXdhaXQgdmF1bHQuYWRhcHRlci53cml0ZSh0YXNrLiRmaWxlLCBuZXdUZXh0KTtcbiAgICBjb25zdCB0ZmlsZSA9IHZhdWx0LmdldEZpbGVCeVBhdGgodGFzay4kZmlsZSk7XG4gICAgaWYgKHRmaWxlKSBjb3JlLnJlbG9hZCh0ZmlsZSk7XG59XG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY29tcGxldGVUYXNrKGNvbXBsZXRlZDogYm9vbGVhbiwgdGFzazogTWFya2Rvd25UYXNrSXRlbSwgdmF1bHQ6IFZhdWx0LCBjb3JlOiBEYXRhY29yZSkge1xuICAgIGNvbnN0IHRhc2tzVG9Db21wbGV0ZSA9IFt0YXNrXTtcbiAgICBpZiAoY29yZS5zZXR0aW5ncy5yZWN1cnNpdmVUYXNrQ29tcGxldGlvbikge1xuICAgICAgICBjb25zdCBmb3JFYWNoID0gKHg6IE1hcmtkb3duVGFza0l0ZW0gfCBNYXJrZG93bkxpc3RJdGVtKSA9PiB7XG4gICAgICAgICAgICBpZiAoeCBpbnN0YW5jZW9mIE1hcmtkb3duVGFza0l0ZW0pIHRhc2tzVG9Db21wbGV0ZS5wdXNoKHgpO1xuICAgICAgICAgICAgeC4kZWxlbWVudHMuZm9yRWFjaChmb3JFYWNoKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGFzay4kZWxlbWVudHMuZm9yRWFjaChmb3JFYWNoKTtcbiAgICB9XG4gICAgZm9yIChjb25zdCB0IG9mIHRhc2tzVG9Db21wbGV0ZSkge1xuICAgICAgICBsZXQgbmV3VGV4dCA9IHNldFRhc2tDb21wbGV0aW9uKFxuICAgICAgICAgICAgdCxcbiAgICAgICAgICAgIHQuJHRleHQhLFxuICAgICAgICAgICAgY29yZS5zZXR0aW5ncy50YXNrQ29tcGxldGlvblVzZUVtb2ppU2hvcnRoYW5kLFxuICAgICAgICAgICAgY29yZS5zZXR0aW5ncy50YXNrQ29tcGxldGlvblRleHQsXG4gICAgICAgICAgICBjb3JlLnNldHRpbmdzLmRlZmF1bHREYXRlRm9ybWF0LFxuICAgICAgICAgICAgY29tcGxldGVkXG4gICAgICAgICk7XG4gICAgICAgIGF3YWl0IHJld3JpdGVUYXNrKHZhdWx0LCBjb3JlLCB0LCBjb21wbGV0ZWQgPyBcInhcIiA6IFwiIFwiLCBuZXdUZXh0KTtcbiAgICB9XG59XG4iLCAiLyoqXG4gKiBAbW9kdWxlIGluZGV4YWJsZXNcbiAqL1xuLyoqIFV0aWxpdGllcyBmb3IgY29udmVydGluZyBsaXRlcmFsIHR5cGVzIHRvIGFuZCBmcm9tIHRoZWlyIFlBTUwgZnJvbnRtYXR0ZXIgcmVwcmVzZW50YXRpb24uICovXG5cbmltcG9ydCB7IExpdGVyYWwsIExpdGVyYWxzIH0gZnJvbSBcImV4cHJlc3Npb24vbGl0ZXJhbFwiO1xuaW1wb3J0IHsgUFJJTUlUSVZFUyB9IGZyb20gXCJleHByZXNzaW9uL3BhcnNlclwiO1xuaW1wb3J0IHsgRGF0ZVRpbWUgfSBmcm9tIFwibHV4b25cIjtcbmltcG9ydCB7IG1hcE9iamVjdFZhbHVlcyB9IGZyb20gXCJ1dGlscy9kYXRhXCI7XG5cbi8qKiBZQU1MLWZyaWVuZGx5IHJlcHJlc2VudGF0aW9uIGZvciBhIGxpdGVyYWwuICovXG5leHBvcnQgdHlwZSBZYW1sTGl0ZXJhbCA9IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBudWxsIHwgUmVjb3JkPHN0cmluZywgYW55PiB8IEFycmF5PFlhbWxMaXRlcmFsPjtcbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBuYW1lc3BhY2UgWWFtbENvbnZlcnNpb24ge1xuICAgIC8qKiBDb252ZXJ0IGEgbGl0ZXJhbCBpbnRvIGEgeWFtbCBmcmllbmRseSByZXByZXNlbnRhdGlvbi4gKi9cbiAgICBleHBvcnQgZnVuY3Rpb24geWFtbCh2YWx1ZTogTGl0ZXJhbCk6IFlhbWxMaXRlcmFsIHtcbiAgICAgICAgY29uc3Qgd3JhcHBlZCA9IExpdGVyYWxzLndyYXBWYWx1ZShsaXRlcmFsKTtcbiAgICAgICAgaWYgKCF3cmFwcGVkKSByZXR1cm4gbnVsbDtcblxuICAgICAgICBzd2l0Y2ggKHdyYXBwZWQudHlwZSkge1xuICAgICAgICAgICAgY2FzZSBcInN0cmluZ1wiOlxuICAgICAgICAgICAgY2FzZSBcImJvb2xlYW5cIjpcbiAgICAgICAgICAgIGNhc2UgXCJudWxsXCI6XG4gICAgICAgICAgICBjYXNlIFwibnVtYmVyXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWU7XG4gICAgICAgICAgICBjYXNlIFwiYXJyYXlcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZS5tYXAoeWFtbCk7XG4gICAgICAgICAgICBjYXNlIFwiZGF0ZVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB3cmFwcGVkLnZhbHVlLnRvSVNPKCk7XG4gICAgICAgICAgICBjYXNlIFwiZHVyYXRpb25cIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZS50b0h1bWFuKCk7XG4gICAgICAgICAgICBjYXNlIFwiZnVuY3Rpb25cIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIGNhc2UgXCJsaW5rXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWUubWFya2Rvd24oKTtcbiAgICAgICAgICAgIGNhc2UgXCJvYmplY3RcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gbWFwT2JqZWN0VmFsdWVzKHdyYXBwZWQudmFsdWUsIHlhbWwpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIFJlY3Vyc2l2ZWx5IGNvbnZlcnQgYSBZQU1MIGxpdGVyYWwgaW50byBhIHJlZ3VsYXIgbGl0ZXJhbCB2YWx1ZS4gKi9cbiAgICBleHBvcnQgZnVuY3Rpb24gbGl0ZXJhbCh2YWx1ZTogWWFtbExpdGVyYWwpOiBMaXRlcmFsIHtcbiAgICAgICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IFtdO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGNoaWxkIG9mIHZhbHVlIGFzIEFycmF5PGFueT4pIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gobGl0ZXJhbChjaGlsZCkpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICAgICAgICAgIGxldCBkYXRlUGFyc2UgPSBEYXRlVGltZS5mcm9tSlNEYXRlKHZhbHVlKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0ZVBhcnNlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBsZXQgb2JqZWN0ID0gdmFsdWUgYXMgUmVjb3JkPHN0cmluZywgYW55PjtcbiAgICAgICAgICAgICAgICBsZXQgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBMaXRlcmFsPiA9IHt9O1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGtleSBpbiBvYmplY3QpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0W2tleV0gPSBsaXRlcmFsKG9iamVjdFtrZXldKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJib29sZWFuXCIpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIGxldCBkYXRlUGFyc2UgPSBQUklNSVRJVkVTLmRhdGUucGFyc2UodmFsdWUpO1xuICAgICAgICAgICAgaWYgKGRhdGVQYXJzZS5zdGF0dXMpIHJldHVybiBkYXRlUGFyc2UudmFsdWU7XG5cbiAgICAgICAgICAgIGxldCBkdXJhdGlvblBhcnNlID0gUFJJTUlUSVZFUy5kdXJhdGlvbi5wYXJzZSh2YWx1ZSk7XG4gICAgICAgICAgICBpZiAoZHVyYXRpb25QYXJzZS5zdGF0dXMpIHJldHVybiBkdXJhdGlvblBhcnNlLnZhbHVlO1xuXG4gICAgICAgICAgICBsZXQgbGlua1BhcnNlID0gUFJJTUlUSVZFUy5saW5rLnBhcnNlKHZhbHVlKTtcbiAgICAgICAgICAgIGlmIChsaW5rUGFyc2Uuc3RhdHVzKSByZXR1cm4gbGlua1BhcnNlLnZhbHVlO1xuXG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBCYWNrdXAgaWYgd2UgZG9uJ3QgdW5kZXJzdGFuZCB0aGUgdHlwZS5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxufVxuIiwgIi8qKiBDZW50cmFsIHV0aWxpdGllcyBmb3IgZWRpdGluZyBmaWVsZHMgYnkgc2V0dGluZyBuZXcgdmFsdWVzIGluIGZpbGVzLCBhbmQgdHJhY2tpbmcgb3V0c3RhbmRpbmcgZWRpdHMuICovXG5cbmltcG9ydCB7IFJlc3VsdCB9IGZyb20gXCJhcGkvcmVzdWx0XCI7XG5pbXBvcnQgeyBQcm92ZW5hbmNlIH0gZnJvbSBcImV4cHJlc3Npb24vZmllbGRcIjtcbmltcG9ydCB7IExpdGVyYWwgfSBmcm9tIFwiZXhwcmVzc2lvbi9saXRlcmFsXCI7XG5pbXBvcnQgeyBzZXRJbmxpbmVGaWVsZCB9IGZyb20gXCJpbmRleC9pbXBvcnQvaW5saW5lLWZpZWxkXCI7XG5pbXBvcnQgeyBZYW1sQ29udmVyc2lvbiB9IGZyb20gXCJpbmRleC90eXBlcy95YW1sXCI7XG5pbXBvcnQgeyBBcHAsIFRGaWxlIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5pbXBvcnQgeyBsaW5lUmVwbGFjZSB9IGZyb20gXCJ1dGlscy9ub3JtYWxpemVyc1wiO1xuXG4vKiogRWRpdCBhIGZpZWxkIGJ5IGl0J3MgcHJvdmVuYW5jZSAoaS5lLiwgc291cmNlKTsgcmV0dXJucyBhIHByb21pc2Ugd2hpY2ggY2FuIGJlIGF3YWl0ZWQgdG8gd2FpdCBmb3IgdGhlIGZpbGUgd3JpdGUgdG8gY29tcGxldGUuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZWRpdFByb3ZlbmFuY2UoYXBwOiBBcHAsIHByb3ZlbmFuY2U6IFByb3ZlbmFuY2UsIHZhbHVlOiBMaXRlcmFsKTogUHJvbWlzZTxSZXN1bHQ8bnVsbCwgc3RyaW5nPj4ge1xuICAgIGNvbnN0IGZpbGUgPSBhcHAudmF1bHQuZ2V0RmlsZUJ5UGF0aChwcm92ZW5hbmNlLmZpbGUpO1xuICAgIGlmICghZmlsZSkgcmV0dXJuIFJlc3VsdC5mYWlsdXJlKGBGaWxlIHdpdGggcGF0aCAke3Byb3ZlbmFuY2UuZmlsZX0gZG9lcyBub3QgZXhpc3QuYCk7XG5cbiAgICAvLyBUT0RPOiBJZiB3ZSBldmVyIHN1cHBvcnQgY3VzdG9tIHR5cGVzLCB3ZSdsbCB3YW50IHRvIGNoYW5nZSB0aGlzIHN3aXRjaCBpbnRvIHNvbWUga2luZCBvZiBkeW5hbWljIGxvb2t1cC5cbiAgICBzd2l0Y2ggKHByb3ZlbmFuY2UudHlwZSkge1xuICAgICAgICBjYXNlIFwiZnJvbnRtYXR0ZXJcIjpcbiAgICAgICAgICAgIGF3YWl0IGFwcC5maWxlTWFuYWdlci5wcm9jZXNzRnJvbnRNYXR0ZXIoZmlsZSwgKGZyb250bWF0dGVyKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlID09IG51bGwgJiYgcHJvdmVuYW5jZS5rZXkgaW4gZnJvbnRtYXR0ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGZyb250bWF0dGVyW3Byb3ZlbmFuY2Uua2V5XTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBmcm9udG1hdHRlcltwcm92ZW5hbmNlLmtleV0gPSBZYW1sQ29udmVyc2lvbi55YW1sKHZhbHVlKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gUmVzdWx0LnN1Y2Nlc3MobnVsbCk7XG4gICAgICAgIGNhc2UgXCJpbmxpbmUtZmllbGRcIjpcbiAgICAgICAgICAgIHJldHVybiBlZGl0SW5saW5lRmllbGQoYXBwLCBmaWxlLCBwcm92ZW5hbmNlLmxpbmUsIHByb3ZlbmFuY2Uua2V5LCB2YWx1ZSk7XG4gICAgfVxufVxuXG4vKiogQ29tcGxldGUgd29ya2Zsb3cgZm9yIGVkaXRpbmcgYW4gaW5saW5lIGZpZWxkLiAgKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBlZGl0SW5saW5lRmllbGQoXG4gICAgYXBwOiBBcHAsXG4gICAgZmlsZTogVEZpbGUsXG4gICAgbGluZTogbnVtYmVyLFxuICAgIGtleTogc3RyaW5nLFxuICAgIHZhbHVlOiBMaXRlcmFsXG4pOiBQcm9taXNlPFJlc3VsdDxudWxsLCBzdHJpbmc+PiB7XG4gICAgY29uc3QgY29udGVudCA9IGF3YWl0IGFwcC52YXVsdC5yZWFkKGZpbGUpO1xuICAgIGlmICghY29udGVudCkgcmV0dXJuIFJlc3VsdC5mYWlsdXJlKGBGaWxlIHdpdGggcGF0aCAke2ZpbGUucGF0aH0gZG9lcyBub3QgZXhpc3QuYCk7XG5cbiAgICAvLyBGaW5kIHRoZSBleHRlbnQgb2YgdGhlIGdpdmVuIGxpbmUgKDAtaW5kZXhlZCksIGV4dHJhY3QgaXQgYW5kIHVwZGF0ZS5cbiAgICBjb25zdCB1cGRhdGVkID0gbGluZVJlcGxhY2UoY29udGVudCwgbGluZSwgbGluZSArIDEsIChsaW5lKSA9PiB7XG4gICAgICAgIC8vIFRPRE86IFRoaXMgc3RyaW5naWYtaWNhdGlvbiBvZiB0aGUgdmFsdWUgaXMgbm90IGNvcnJlY3QgYW5kIHdpbGwgbm90IHdvcmtcbiAgICAgICAgLy8gZm9yIGFycmF5cyBvciBvYmplY3RzLCBidXQgd2lsbCBzZXJ2ZSBwdXJwb3NlIGZvciBub3cuLi5cbiAgICAgICAgaWYgKHZhbHVlID09IG51bGwpIHJldHVybiBzZXRJbmxpbmVGaWVsZChsaW5lLCBrZXksIHVuZGVmaW5lZCk7XG4gICAgICAgIGVsc2UgcmV0dXJuIHNldElubGluZUZpZWxkKGxpbmUsIGtleSwgXCJcIiArIFlhbWxDb252ZXJzaW9uLnlhbWwodmFsdWUpKTtcbiAgICB9KTtcblxuICAgIGlmICh1cGRhdGVkID09IGNvbnRlbnQpIHJldHVybiBSZXN1bHQuc3VjY2VzcyhudWxsKTtcblxuICAgIGF3YWl0IGFwcC52YXVsdC5tb2RpZnkoZmlsZSwgdXBkYXRlZCk7XG4gICAgcmV0dXJuIFJlc3VsdC5zdWNjZXNzKG51bGwpO1xufVxuIiwgImltcG9ydCB7IEZpZWxkIH0gZnJvbSBcImV4cHJlc3Npb24vZmllbGRcIjtcbmltcG9ydCB7IExpdGVyYWwgfSBmcm9tIFwiZXhwcmVzc2lvbi9saXRlcmFsXCI7XG5pbXBvcnQgeyBzZXRJbmxpbmVGaWVsZCB9IGZyb20gXCJpbmRleC9pbXBvcnQvaW5saW5lLWZpZWxkXCI7XG5pbXBvcnQgeyBNYXJrZG93blRhc2tJdGVtIH0gZnJvbSBcImluZGV4L3R5cGVzL21hcmtkb3duXCI7XG5pbXBvcnQgeyBBcHAgfSBmcm9tIFwib2JzaWRpYW5cIjtcbmltcG9ydCB7IERpc3BhdGNoLCB1c2VDYWxsYmFjaywgdXNlQ29udGV4dCB9IGZyb20gXCJwcmVhY3QvaG9va3NcIjtcbmltcG9ydCB7IEFQUF9DT05URVhUIH0gZnJvbSBcInVpL21hcmtkb3duXCI7XG5pbXBvcnQgeyByZXdyaXRlVGFzayB9IGZyb20gXCIuL3Rhc2tcIjtcbmltcG9ydCB7IEVkaXRhYmxlQWN0aW9uIH0gZnJvbSBcInVpL2ZpZWxkcy9lZGl0YWJsZVwiO1xuaW1wb3J0IHsgRGF0YWNvcmUgfSBmcm9tIFwiaW5kZXgvZGF0YWNvcmVcIjtcbmltcG9ydCB7IGVkaXRQcm92ZW5hbmNlIH0gZnJvbSBcImluZGV4L2VkaXQvZmllbGRcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHVzZVNldEZpZWxkPFQgZXh0ZW5kcyBMaXRlcmFsPihmaWVsZDogRmllbGQsIG9uQ2hhbmdlPzogKG5ld1ZhbHVlOiBUKSA9PiB2b2lkKSB7XG4gICAgY29uc3QgYXBwID0gdXNlQ29udGV4dChBUFBfQ09OVEVYVCk7XG4gICAgcmV0dXJuIHVzZUNhbGxiYWNrKFxuICAgICAgICAobmV3VmFsdWU6IFQpID0+IHtcbiAgICAgICAgICAgIGVkaXRQcm92ZW5hbmNlKGFwcCwgZmllbGQucHJvdmVuYW5jZSEsIG5ld1ZhbHVlKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAob25DaGFuZ2UpIG9uQ2hhbmdlKG5ld1ZhbHVlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBbZmllbGQsIG9uQ2hhbmdlXVxuICAgICk7XG59XG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2V0VGFza1RleHQoYXBwOiBBcHAsIGNvcmU6IERhdGFjb3JlLCB0ZXh0OiBzdHJpbmcsIGl0ZW06IE1hcmtkb3duVGFza0l0ZW0pIHtcbiAgICBsZXQgd2l0aEZpZWxkcyA9IGAke3RleHR9JHtPYmplY3Qua2V5cyhpdGVtLiRpbmZpZWxkcykubGVuZ3RoID8gXCIgXCIgOiBcIlwifWA7XG4gICAgZm9yIChsZXQgZmllbGQgaW4gaXRlbS4kaW5maWVsZHMpIHtcbiAgICAgICAgd2l0aEZpZWxkcyA9IHNldElubGluZUZpZWxkKHdpdGhGaWVsZHMsIGZpZWxkLCBpdGVtLiRpbmZpZWxkc1tmaWVsZF0ucmF3KTtcbiAgICB9XG4gICAgYXdhaXQgcmV3cml0ZVRhc2soYXBwLnZhdWx0LCBjb3JlLCBpdGVtLCBpdGVtLiRzdGF0dXMsIHdpdGhGaWVsZHMpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHVzZUZpbmFsaXplcjxUPihuZXdWYWx1ZTogVCwgZGlzcGF0Y2g6IERpc3BhdGNoPEVkaXRhYmxlQWN0aW9uPFQ+Pikge1xuICAgIHJldHVybiBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGRpc3BhdGNoKHtcbiAgICAgICAgICAgIHR5cGU6IFwiY29udGVudC1jaGFuZ2VkXCIsXG4gICAgICAgICAgICBuZXdWYWx1ZTogbmV3VmFsdWUsXG4gICAgICAgIH0pO1xuICAgICAgICBkaXNwYXRjaCh7XG4gICAgICAgICAgICB0eXBlOiBcImVkaXRpbmctdG9nZ2xlZFwiLFxuICAgICAgICAgICAgbmV3VmFsdWU6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICB9O1xufVxuIiwgIi8qKlxuICogQG1vZHVsZSB1aVxuICovXG5pbXBvcnQgeyBGcmFnbWVudCwgRnVuY3Rpb25Db21wb25lbnQsIFZOb2RlIH0gZnJvbSBcInByZWFjdFwiO1xuaW1wb3J0IHsgRGlzcGF0Y2gsIFJlZHVjZXIsIHVzZUNvbnRleHQsIHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gXCJwcmVhY3QvaG9va3NcIjtcbmltcG9ydCB7IENoYW5nZUV2ZW50LCB1c2VSZWR1Y2VyIH0gZnJvbSBcInByZWFjdC9jb21wYXRcIjtcbmltcG9ydCBTZWxlY3QsIHsgQWN0aW9uTWV0YSB9IGZyb20gXCJyZWFjdC1zZWxlY3RcIjtcbmltcG9ydCB7IHVzZVN0YWJsZUNhbGxiYWNrIH0gZnJvbSBcIi4uL2hvb2tzXCI7XG5pbXBvcnQgeyBDVVJSRU5UX0ZJTEVfQ09OVEVYVCwgTGl0LCBNYXJrZG93biwgU0VUVElOR1NfQ09OVEVYVCB9IGZyb20gXCIuLi9tYXJrZG93blwiO1xuaW1wb3J0IHsgTGl0ZXJhbCwgTGl0ZXJhbFR5cGUsIExpdGVyYWxzIH0gZnJvbSBcImV4cHJlc3Npb24vbGl0ZXJhbFwiO1xuaW1wb3J0IHsgRGF0ZVRpbWUgfSBmcm9tIFwibHV4b25cIjtcbmltcG9ydCB7IEJhc2VGaWVsZFByb3BzLCBGaWVsZENvbnRyb2xQcm9wcyB9IGZyb20gXCIuL2NvbW1vbi1wcm9wc1wiO1xuaW1wb3J0IHsgTWFya2Rvd25MaXN0SXRlbSwgTWFya2Rvd25UYXNrSXRlbSB9IGZyb20gXCJpbmRleC90eXBlcy9tYXJrZG93blwiO1xuaW1wb3J0IHsgQm9vbGVhbkVkaXRhYmxlIH0gZnJvbSBcIi4vYm9vbGVhbi1maWVsZFwiO1xuaW1wb3J0IHsgUHJvZ3Jlc3NFZGl0YWJsZSB9IGZyb20gXCIuL3Byb2dyZXNzLWZpZWxkXCI7XG5pbXBvcnQgeyBSYXRpbmdFZGl0YWJsZSB9IGZyb20gXCIuL3JhdGluZ1wiO1xuaW1wb3J0IHsgdXNlRmluYWxpemVyIH0gZnJvbSBcInV0aWxzL2ZpZWxkc1wiO1xuXG5pbXBvcnQgXCIuL2ZpZWxkcy5jc3NcIjtcblxuLyoqIENvcmUgc3RhdGUgZm9yIHRyYWNraW5nIGFuIGVkaXRhYmxlIG9iamVjdC5cbiAqIEBncm91cCBTdGF0ZXNcbiAqIEB0eXBlUGFyYW0gVCAtIHRoZSB0eXBlIG9mIHRoZSB2YWx1ZSBiZWluZyBlZGl0ZWRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFZGl0YWJsZVN0YXRlPFQ+IHtcbiAgICAvKiogV2hldGhlciB0aGUgdmFsdWUgaXMgY3VycmVudGx5IGJlaW5nIGVkaXRlZC4gKi9cbiAgICBpc0VkaXRpbmc/OiBib29sZWFuO1xuICAgIC8qKiBUaGUgY3VycmVudCAoYXJiaXRyYXJ5KSBjb250ZW50IG9mIHRoZSBlZGl0YWJsZS4gKi9cbiAgICBjb250ZW50OiBUO1xuICAgIC8qKiBDYWxsYmFjayB3aGVuZXZlciB0aGUgZWRpdGFibGUgdmFsdWUgaXMgY2hhbmdlZC4gKi9cbiAgICB1cGRhdGVyOiAodmFsOiBUKSA9PiB1bmtub3duO1xuICAgIC8qKiBXaGV0aGVyIHRoZSBlZGl0b3IgaXMgYmVpbmcgcmVuZGVyZWQgaW5saW5lIGluIGEgcGFyYWdyYXBoIG9yIG5vdC4gKi9cbiAgICBpbmxpbmU/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEBncm91cCBQcm9wc1xuICogQHR5cGVQYXJhbSBUIC0gdGhlIHR5cGUgb2YgdGhlIHZhbHVlIGJlaW5nIGVkaXRlZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVkaXRhYmxlUHJvcHM8VD4ge1xuICAgIC8qKiBTb3VyY2UgZmlsZSBmcm9tIHdoaWNoIHRoZSBlZGl0YWJsZSB2YWx1ZSBvcmlnaW5hdGVzLiAqL1xuICAgIHNvdXJjZVBhdGg/OiBzdHJpbmc7XG4gICAgLyoqIEJhY2t1cCBkZWZhdWx0IHJlbmRlcmVyIGZvciB0aGlzIG9iamVjdC4gKi9cbiAgICBkZWZhdWx0UmVuZGVyPzogVk5vZGU7XG4gICAgLyoqIE5vZGUgd2hpY2ggcG9pbnRzIHRvIHRoZSBhY3R1YWwgZWRpdG9yLiAqL1xuICAgIGVkaXRvcjogUmVhY3QuUmVhY3ROb2RlO1xuICAgIC8qKiBEaXNwYXRjaGVyIGZvciBjb250cm9sbGluZyB0aGUgZWRpdCBzdGF0ZSwgdHJhY2tpbmcgdXBkYXRlcywgY29tbWl0cywgYW5kIHNvIG9uLiAqL1xuICAgIGRpc3BhdGNoOiBEaXNwYXRjaDxFZGl0YWJsZUFjdGlvbjxUPj47XG4gICAgLyoqIFRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBlZGl0b3IuICovXG4gICAgc3RhdGU6IEVkaXRhYmxlU3RhdGU8VD47XG59XG5cbnR5cGUgRWRpdGFibGVFbGVtZW50UHJvcHM8VCwgUD4gPSBFZGl0YWJsZVN0YXRlPFQ+ICYgUDtcbmV4cG9ydCB0eXBlIEVkaXRhYmxlRWxlbWVudDxULCBQID0gYW55PiA9IEZ1bmN0aW9uQ29tcG9uZW50PEVkaXRhYmxlRWxlbWVudFByb3BzPFQsIFA+ICYgUD47XG5cbi8qKlxuICogIEFjdGlvbnMgd2hpY2ggdXBkYXRlL2NoYW5nZSB0aGUgc3RhdGUgb2YgYW4gZWRpdGFibGUuXG4gKlxuICogQGludGVybmFsXG4gKiAqL1xuZXhwb3J0IHR5cGUgRWRpdGFibGVBY3Rpb248VD4gPVxuICAgIHwge1xuICAgICAgICAgIHR5cGU6IFwiY29tbWl0XCI7XG4gICAgICAgICAgLy8gb2xkVmFsdWU6IGFueSxcbiAgICAgICAgICBuZXdWYWx1ZTogVDtcbiAgICAgIH1cbiAgICB8IHtcbiAgICAgICAgICB0eXBlOiBcImVkaXRpbmctdG9nZ2xlZFwiO1xuICAgICAgICAgIG5ld1ZhbHVlOiBib29sZWFuO1xuICAgICAgfVxuICAgIHwge1xuICAgICAgICAgIHR5cGU6IFwiY29udGVudC1jaGFuZ2VkXCI7XG4gICAgICAgICAgbmV3VmFsdWU6IFQ7XG4gICAgICB9O1xuXG4vKiogRGVmYXVsdCByZWR1Y2VyIGZvciBhcHBseWluZyBhY3Rpb25zIHRvIHRoZSBlZGl0YWJsZSBzdGF0ZS5cbiAqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVkaXRhYmxlUmVkdWNlcjxUPihcbiAgICB7IGNvbnRlbnQsIHVwZGF0ZXIsIC4uLnJlc3QgfTogRWRpdGFibGVTdGF0ZTxUPixcbiAgICBhY3Rpb246IEVkaXRhYmxlQWN0aW9uPFQ+XG4pOiBFZGl0YWJsZVN0YXRlPFQ+IHtcbiAgICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gICAgICAgIGNhc2UgXCJjb21taXRcIjpcbiAgICAgICAgICAgIHVwZGF0ZXIoYWN0aW9uLm5ld1ZhbHVlKTtcbiAgICAgICAgICAgIHJldHVybiB7IC4uLnJlc3QsIHVwZGF0ZXIsIGNvbnRlbnQ6IGFjdGlvbi5uZXdWYWx1ZSB9O1xuICAgICAgICBjYXNlIFwiZWRpdGluZy10b2dnbGVkXCI6XG4gICAgICAgICAgICAhYWN0aW9uLm5ld1ZhbHVlICYmIHVwZGF0ZXIoY29udGVudCk7XG4gICAgICAgICAgICByZXR1cm4geyAuLi5yZXN0LCB1cGRhdGVyLCBjb250ZW50LCBpc0VkaXRpbmc6IGFjdGlvbi5uZXdWYWx1ZSB9O1xuICAgICAgICBjYXNlIFwiY29udGVudC1jaGFuZ2VkXCI6XG4gICAgICAgICAgICByZXR1cm4geyAuLi5yZXN0LCB1cGRhdGVyLCBjb250ZW50OiBhY3Rpb24ubmV3VmFsdWUgfTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiB7IGNvbnRlbnQsIHVwZGF0ZXIsIC4uLnJlc3QgfTtcbiAgICB9XG59XG5cbi8qKiBQcm92aWRlcyBzdGF0ZSBtYW5hZ2VtZW50IGZvciBhbiBlZGl0YWJsZSBmaWVsZC5cbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlRWRpdGFibGVEaXNwYXRjaDxUPihcbiAgICBpbml0aWFsOiBFZGl0YWJsZVN0YXRlPFQ+IHwgKCgpID0+IEVkaXRhYmxlU3RhdGU8VD4pXG4pOiBbRWRpdGFibGVTdGF0ZTxUPiwgRGlzcGF0Y2g8RWRpdGFibGVBY3Rpb248VD4+XSB7XG4gICAgY29uc3QgaW5pdCA9IHVzZU1lbW8oKCkgPT4gKHR5cGVvZiBpbml0aWFsID09IFwiZnVuY3Rpb25cIiA/IGluaXRpYWwoKSA6IGluaXRpYWwpLCBbaW5pdGlhbF0pO1xuICAgIHJldHVybiB1c2VSZWR1Y2VyKGVkaXRhYmxlUmVkdWNlciBhcyBSZWR1Y2VyPEVkaXRhYmxlU3RhdGU8VD4sIEVkaXRhYmxlQWN0aW9uPFQ+PiwgaW5pdCwgKHMpID0+IGluaXQpO1xufVxuLyoqXG4gKiBhIGhpZ2hlci1vcmRlci1jb21wb25lbnQgZm9yIGVkaXRpbmcgZmllbGRzLlxuICogQHBhcmFtIHByb3BzXG4gKiBAZ3JvdXAgRWRpdGFibGUgQ29tcG9uZW50c1xuICovXG5leHBvcnQgZnVuY3Rpb24gRWRpdGFibGU8VD4oeyBzb3VyY2VQYXRoLCBkZWZhdWx0UmVuZGVyLCBlZGl0b3IsIGRpc3BhdGNoLCBzdGF0ZSB9OiBFZGl0YWJsZVByb3BzPFQ+KSB7XG4gICAgY29uc3QgY3VycmVudFJlZiA9IHVzZVJlZihudWxsKTtcblxuICAgIGNvbnN0IGVsZW1lbnQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgICAgaWYgKHN0YXRlLmlzRWRpdGluZykge1xuICAgICAgICAgICAgcmV0dXJuIGVkaXRvcjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChkZWZhdWx0UmVuZGVyKSByZXR1cm4gZGVmYXVsdFJlbmRlcjtcbiAgICAgICAgICAgIGVsc2UgcmV0dXJuIDxMaXQgdmFsdWU9e3N0YXRlLmNvbnRlbnQgYXMgTGl0ZXJhbH0gaW5saW5lPXt0cnVlfSBzb3VyY2VQYXRoPVwiXCIgLz47XG4gICAgICAgIH1cbiAgICB9LCBbc3RhdGUuaXNFZGl0aW5nLCBzdGF0ZS5jb250ZW50LCBzb3VyY2VQYXRoLCBkZWZhdWx0UmVuZGVyXSk7XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBkaXNwYXRjaCAmJiBkaXNwYXRjaCh7IHR5cGU6IFwiY29udGVudC1jaGFuZ2VkXCIsIG5ld1ZhbHVlOiBzdGF0ZS5jb250ZW50IH0pO1xuICAgIH0sIFtzdGF0ZS5jb250ZW50LCBzdGF0ZS5pc0VkaXRpbmddKTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImRhdGFjb3JlLWVkaXRhYmxlLW91dGVyXCIgcmVmPXtjdXJyZW50UmVmfT5cbiAgICAgICAgICAgIHtlbGVtZW50fVxuICAgICAgICA8L3NwYW4+XG4gICAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIENvbnRyb2xsZWRFZGl0YWJsZTxULCBQID0gdW5rbm93bj4oe1xuICAgIGRlZmF1bHRSZW5kZXIsXG4gICAgZWRpdG9yOiBFZGl0b3IsXG4gICAgb25VcGRhdGUsXG4gICAgY29udGVudCxcbiAgICBwcm9wcyxcbiAgICBzb3VyY2VQYXRoLFxufTogT21pdDxFZGl0YWJsZVByb3BzPFQ+LCBcImRpc3BhdGNoXCIgfCBcInN0YXRlXCIgfCBcImVkaXRvclwiPiAmIHtcbiAgICBvblVwZGF0ZTogKHY6IFQpID0+IHVua25vd247XG4gICAgY29udGVudDogVDtcbiAgICBlZGl0b3I6IEVkaXRhYmxlRWxlbWVudDxULCBQPjtcbiAgICBwcm9wczogUDtcbiAgICBzb3VyY2VQYXRoOiBzdHJpbmc7XG59KSB7XG4gICAgY29uc3QgW3N0YXRlLCBkaXNwYXRjaF0gPSB1c2VFZGl0YWJsZURpc3BhdGNoPFQ+KCgpID0+ICh7XG4gICAgICAgIHVwZGF0ZXI6IG9uVXBkYXRlLFxuICAgICAgICBjb250ZW50LFxuICAgICAgICBpbmxpbmU6IGZhbHNlLFxuICAgICAgICBpc0VkaXRpbmc6IGZhbHNlLFxuICAgIH0pKTtcbiAgICByZXR1cm4gPEVkaXRvciBkaXNwYXRjaD17ZGlzcGF0Y2h9IHsuLi5wcm9wc30gey4uLnN0YXRlfSAvPjtcbn1cblxuLyoqIEEgc2luZ2xlIHNlbGVjdGFibGUgdmFsdWUuXG4gKi9cbnR5cGUgU2VsZWN0YWJsZUJhc2UgPSBzdHJpbmcgfCBudW1iZXI7XG4vKiogQSB0eXBlIGZvciBlaXRoZXIgbXVsdGktIG9yIHNpbmdsZS1zZWxlY3QgdmFsdWVzLiAqL1xudHlwZSBTZWxlY3RhYmxlVHlwZSA9IFNlbGVjdGFibGVCYXNlIHwgU2VsZWN0YWJsZUJhc2VbXTtcblxuLyoqIEVkaXRhYmxlIHdoaWNoIGFsbG93cyBmb3Igc2VsZWN0aW9uIGZyb20gYSBsaXN0IG9mIG9wdGlvbnMuXG4gKiBAZ3JvdXAgRWRpdGFibGUgQ29tcG9uZW50c1xuICovXG5leHBvcnQgZnVuY3Rpb24gU2VsZWN0YWJsZUVkaXRhYmxlKHtcbiAgICBpc0VkaXRpbmcsXG4gICAgY29udGVudCxcbiAgICB1cGRhdGVyLFxuICAgIGNvbmZpZyxcbiAgICBkaXNwYXRjaCxcbn06IEVkaXRhYmxlU3RhdGU8U2VsZWN0YWJsZVR5cGU+ICZcbiAgICBCYXNlRmllbGRQcm9wczxTZWxlY3RhYmxlVHlwZT4gJiB7XG4gICAgICAgIGRpc3BhdGNoOiBEaXNwYXRjaDxFZGl0YWJsZUFjdGlvbjxTZWxlY3RhYmxlVHlwZT4+O1xuICAgIH0pIHtcbiAgICBjb25zdCBvbkNoYW5nZSA9IHVzZVN0YWJsZUNhbGxiYWNrKFxuICAgICAgICAobmV3VmFsdWU6IGFueSwgYWN0aW9uTWV0YTogQWN0aW9uTWV0YTxTZWxlY3RhYmxlVHlwZT4pID0+IHtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KG5ld1ZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGRpc3BhdGNoKHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJjb250ZW50LWNoYW5nZWRcIixcbiAgICAgICAgICAgICAgICAgICAgbmV3VmFsdWU6IG5ld1ZhbHVlLm1hcCgoeCkgPT4geC52YWx1ZSkgYXMgU2VsZWN0YWJsZVR5cGUsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGRpc3BhdGNoKHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJjb250ZW50LWNoYW5nZWRcIixcbiAgICAgICAgICAgICAgICAgICAgbmV3VmFsdWU6IG5ld1ZhbHVlLnZhbHVlIGFzIFNlbGVjdGFibGVUeXBlLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBbY29uZmlnLCBjb250ZW50LCB1cGRhdGVyLCBpc0VkaXRpbmddXG4gICAgKTtcblxuICAgIGNvbnN0IGVkaXRvciA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPFNlbGVjdFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZVByZWZpeD1cImRhdGFjb3JlLXNlbGVjdGFibGVcIlxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZX1cbiAgICAgICAgICAgICAgICB1bnN0eWxlZFxuICAgICAgICAgICAgICAgIGlzTXVsdGk9e2NvbmZpZz8ubXVsdGkgPz8gZmFsc2V9XG4gICAgICAgICAgICAgICAgb3B0aW9ucz17Y29uZmlnPy5vcHRpb25zID8/IFtdfVxuICAgICAgICAgICAgICAgIG1lbnVQb3J0YWxUYXJnZXQ9e2RvY3VtZW50LmJvZHl9XG4gICAgICAgICAgICAgICAgdmFsdWU9e1xuICAgICAgICAgICAgICAgICAgICBjb25maWc/Lm9wdGlvbnMuZmlsdGVyKCh4OiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoKEFycmF5LmlzQXJyYXkoY29udGVudCkgPyBjb250ZW50IDogW2NvbnRlbnRdKSBhcyBhbnlbXSkuY29udGFpbnMoeC52YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgKSB8fCBbXVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWVzPXt7XG4gICAgICAgICAgICAgICAgICAgIGlucHV0OiAocHJvcHM6IGFueSkgPT4gXCJwcm9tcHQtaW5wdXRcIixcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVDb250YWluZXI6IChwcm9wczogYW55KSA9PiBcInN1Z2dlc3Rpb24taXRlbSB2YWx1ZS1jb250YWluZXJcIixcbiAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyOiAocHJvcHM6IGFueSkgPT4gXCJzdWdnZXN0aW9uLWNvbnRhaW5lclwiLFxuICAgICAgICAgICAgICAgICAgICBtZW51OiAocHJvcHM6IGFueSkgPT4gXCJzdWdnZXN0aW9uLWNvbnRlbnQgc3VnZ2VzdGlvbi1jb250YWluZXJcIixcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uOiAocHJvcHM6IGFueSkgPT4gYHN1Z2dlc3Rpb24taXRlbSR7cHJvcHMuaXNTZWxlY3RlZCA/IFwiIGlzLXNlbGVjdGVkXCIgOiBcIlwifWAsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICk7XG4gICAgfSwgW2NvbnRlbnQsIHVwZGF0ZXIsIGlzRWRpdGluZywgY29uZmlnXSk7XG5cbiAgICByZXR1cm4gPEVkaXRhYmxlIGVkaXRvcj17ZWRpdG9yfSBkaXNwYXRjaD17ZGlzcGF0Y2h9IHN0YXRlPXt7IGlzRWRpdGluZywgY29udGVudCwgdXBkYXRlciB9fSAvPjtcbn1cblxuLyoqIEVkaXRhYmxlIHdoaWNoIGFsbG93cyBmb3Igc2VsZWN0aW5nIGEgZGF0ZS5cbiAqIEBncm91cCBFZGl0YWJsZSBDb21wb25lbnRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBEYXRlRWRpdGFibGUoe1xuICAgIGRpc3BhdGNoLFxuICAgIHNvdXJjZVBhdGgsXG4gICAgLi4ucmVzdFxufTogRWRpdGFibGVTdGF0ZTxEYXRlVGltZSB8IHN0cmluZyB8IG51bGw+ICYge1xuICAgIHNvdXJjZVBhdGg6IHN0cmluZztcbiAgICBkaXNwYXRjaDogRGlzcGF0Y2g8RWRpdGFibGVBY3Rpb248RGF0ZVRpbWUgfCBzdHJpbmcgfCBudWxsPj47XG59KSB7XG4gICAgLyoqIHRoZSBleHRyYSBkaXNwYXRjaCBpcyBfanVzdF8gaW4gY2FzZS4uLiAqL1xuICAgIGNvbnN0IFtzdGF0ZSwgb10gPSB1c2VFZGl0YWJsZURpc3BhdGNoPERhdGVUaW1lIHwgc3RyaW5nIHwgbnVsbD4oKCkgPT4gKHtcbiAgICAgICAgaXNFZGl0aW5nOiByZXN0LmlzRWRpdGluZyxcbiAgICAgICAgY29udGVudDogcmVzdC5jb250ZW50LFxuICAgICAgICB1cGRhdGVyOiByZXN0LnVwZGF0ZXIsXG4gICAgICAgIGlubGluZTogcmVzdC5pbmxpbmUgPz8gZmFsc2UsXG4gICAgfSkpO1xuICAgIGNvbnN0IHNldHRpbmdzID0gdXNlQ29udGV4dChTRVRUSU5HU19DT05URVhUKTtcblxuICAgIGNvbnN0IG9uQ2hhbmdlID0gKGV2dDogQ2hhbmdlRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHtcbiAgICAgICAgbGV0IHYgPSBuZXcgRGF0ZShEYXRlLnBhcnNlKGV2dC5jdXJyZW50VGFyZ2V0LnZhbHVlKSk7XG4gICAgICAgIGRpc3BhdGNoKHtcbiAgICAgICAgICAgIHR5cGU6IFwiY29udGVudC1jaGFuZ2VkXCIsXG4gICAgICAgICAgICBuZXdWYWx1ZTogISF2ID8gRGF0ZVRpbWUuZnJvbUpTRGF0ZSh2KS50b0Zvcm1hdChzZXR0aW5ncy5kZWZhdWx0RGF0ZUZvcm1hdCkgOiBudWxsLFxuICAgICAgICB9KTtcbiAgICAgICAgZGlzcGF0Y2goe1xuICAgICAgICAgICAgdHlwZTogXCJjb21taXRcIixcbiAgICAgICAgICAgIG5ld1ZhbHVlOiAhIXYgPyBEYXRlVGltZS5mcm9tSlNEYXRlKHYpLnRvRm9ybWF0KHNldHRpbmdzLmRlZmF1bHREYXRlRm9ybWF0KSA6IG51bGwsXG4gICAgICAgIH0pO1xuICAgICAgICBvKHtcbiAgICAgICAgICAgIHR5cGU6IFwiY29tbWl0XCIsXG4gICAgICAgICAgICBuZXdWYWx1ZTogISF2ID8gRGF0ZVRpbWUuZnJvbUpTRGF0ZSh2KS50b0Zvcm1hdChzZXR0aW5ncy5kZWZhdWx0RGF0ZUZvcm1hdCkgOiBudWxsLFxuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgY29uc3QganNEYXRlID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIHJldHVybiBzdGF0ZS5jb250ZW50IGluc3RhbmNlb2YgRGF0ZVRpbWVcbiAgICAgICAgICAgID8gc3RhdGUuY29udGVudFxuICAgICAgICAgICAgOiB0eXBlb2Ygc3RhdGUuY29udGVudCA9PSBcInN0cmluZ1wiICYmICEhc3RhdGUuY29udGVudFxuICAgICAgICAgICAgPyBEYXRlVGltZS5mcm9tSlNEYXRlKG5ldyBEYXRlKERhdGUucGFyc2Uoc3RhdGUuY29udGVudCkpKVxuICAgICAgICAgICAgOiBudWxsO1xuICAgIH0sIFtzdGF0ZS5jb250ZW50XSk7XG5cbiAgICBjb25zdCBlZGl0b3JOb2RlID0gPGlucHV0IHR5cGU9XCJkYXRlXCIgb25DaGFuZ2U9e29uQ2hhbmdlfSB2YWx1ZT17anNEYXRlPy50b0Zvcm1hdChcInl5eXktTU0tZGRcIil9IC8+O1xuICAgIHJldHVybiA8RWRpdGFibGU8RGF0ZVRpbWUgfCBzdHJpbmcgfCBudWxsPiBkaXNwYXRjaD17ZGlzcGF0Y2h9IHN0YXRlPXtyZXN0fSBlZGl0b3I9e2VkaXRvck5vZGV9IC8+O1xufVxuXG4vKiogQW4gZWRpdG9yIHdoaWNoIGFsbG93cyBzZWxlY3RpbmcgYSBudW1uZXJpYyB2YWx1ZS5cbiAqIEBncm91cCBFZGl0YWJsZSBDb21wb25lbnRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBOdW1iZXJFZGl0YWJsZShwcm9wczogRWRpdGFibGVTdGF0ZTxudW1iZXI+KSB7XG4gICAgY29uc3QgY2ZjID0gdXNlQ29udGV4dChDVVJSRU5UX0ZJTEVfQ09OVEVYVCk7XG5cbiAgICBjb25zdCBbc3RhdGUsIGRpc3BhdGNoXSA9IHVzZUVkaXRhYmxlRGlzcGF0Y2g8bnVtYmVyPigoKSA9PiAoe1xuICAgICAgICBpc0VkaXRpbmc6IGZhbHNlLFxuICAgICAgICBjb250ZW50OiBwcm9wcy5jb250ZW50LFxuICAgICAgICB1cGRhdGVyOiBwcm9wcy51cGRhdGVyLFxuICAgICAgICBpbmxpbmU6IHRydWUsXG4gICAgfSkpO1xuICAgIGNvbnN0IHZhbHVlID0gdXNlUmVmKHByb3BzLmNvbnRlbnQpO1xuXG4gICAgY29uc3Qgb25DaGFuZ2VDYiA9IHVzZVN0YWJsZUNhbGxiYWNrKFxuICAgICAgICBhc3luYyAoZXZ0OiBDaGFuZ2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgdmFsdWUuY3VycmVudCA9IHBhcnNlRmxvYXQoKGV2dC5jdXJyZW50VGFyZ2V0IGFzIEhUTUxUZXh0QXJlYUVsZW1lbnQpLnZhbHVlKTtcbiAgICAgICAgfSxcbiAgICAgICAgW3ZhbHVlLmN1cnJlbnQsIHN0YXRlLmNvbnRlbnQsIHN0YXRlLnVwZGF0ZXIsIHN0YXRlLmlzRWRpdGluZ11cbiAgICApO1xuXG4gICAgY29uc3QgZmluYWxpemUgPSB1c2VGaW5hbGl6ZXIodmFsdWUuY3VycmVudCwgZGlzcGF0Y2gpO1xuICAgIGNvbnN0IG9uSW5wdXQgPSB1c2VTdGFibGVDYWxsYmFjayhcbiAgICAgICAgYXN5bmMgKGU6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgICAgIGlmIChlLmtleSA9PT0gXCJFbnRlclwiKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgZmluYWxpemUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgW3ZhbHVlLmN1cnJlbnQsIHN0YXRlLnVwZGF0ZXIsIHN0YXRlLmNvbnRlbnQsIHN0YXRlLmlzRWRpdGluZ11cbiAgICApO1xuXG4gICAgY29uc3QgZGJsQ2xpY2sgPSB1c2VTdGFibGVDYWxsYmFjayhcbiAgICAgICAgKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgICAgIGRpc3BhdGNoKHtcbiAgICAgICAgICAgICAgICB0eXBlOiBcImVkaXRpbmctdG9nZ2xlZFwiLFxuICAgICAgICAgICAgICAgIG5ld1ZhbHVlOiB0cnVlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIFt2YWx1ZS5jdXJyZW50LCBzdGF0ZS51cGRhdGVyLCBzdGF0ZS5pc0VkaXRpbmcsIHN0YXRlLmNvbnRlbnRdXG4gICAgKTtcblxuICAgIGNvbnN0IHJlYWRvbmx5RWwgPSA8TGl0IGlubGluZT17ZmFsc2V9IHNvdXJjZVBhdGg9e2NmY30gdmFsdWU9e3ZhbHVlLmN1cnJlbnQgYXMgTGl0ZXJhbH0gLz47XG4gICAgY29uc3QgZWRpdG9yID0gPGlucHV0IGNsYXNzTmFtZT1cImRhdGFjb3JlLWVkaXRhYmxlXCIgdHlwZT1cIm51bWJlclwiIG9uQ2hhbmdlPXtvbkNoYW5nZUNifSBvbktleVVwPXtvbklucHV0fSAvPjtcbiAgICByZXR1cm4gKFxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJoYXMtdGV4dGVkaXRhYmxlXCIgb25EYmxDbGljaz17ZGJsQ2xpY2t9PlxuICAgICAgICAgICAgPEVkaXRhYmxlPG51bWJlcj4gZGlzcGF0Y2g9e2Rpc3BhdGNofSBlZGl0b3I9e2VkaXRvcn0gZGVmYXVsdFJlbmRlcj17cmVhZG9ubHlFbH0gc3RhdGU9e3N0YXRlfSAvPlxuICAgICAgICA8L3NwYW4+XG4gICAgKTtcbn1cblxuLyoqIEVkaXRvciB3aGljaCBzdXBwb3J0cyBtdWx0aS1saW5lIHRleHQgZWRpdGluZzsgbm90ZSB0aGlzIGlzIGEgdmVyeSBzaW1wbGUgaW5wdXQgYW5kIGRvZXMgbm90IHN1cHBvcnQgbW9zdCBtYXJrZG93biBtZXRhZGF0YS5cbiAqIEBncm91cCBFZGl0YWJsZSBDb21wb25lbnRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBUZXh0RWRpdGFibGUocHJvcHM6IEVkaXRhYmxlU3RhdGU8c3RyaW5nPiAmIHsgbWFya2Rvd24/OiBib29sZWFuOyBzb3VyY2VQYXRoOiBzdHJpbmcgfSkge1xuICAgIGNvbnN0IGNmYyA9IHVzZUNvbnRleHQoQ1VSUkVOVF9GSUxFX0NPTlRFWFQpO1xuICAgIGNvbnN0IFtzdGF0ZSwgZGlzcGF0Y2hdID0gdXNlRWRpdGFibGVEaXNwYXRjaDxzdHJpbmc+KCgpID0+ICh7XG4gICAgICAgIGlzRWRpdGluZzogcHJvcHMuaXNFZGl0aW5nLFxuICAgICAgICBjb250ZW50OiBwcm9wcy5jb250ZW50LFxuICAgICAgICB1cGRhdGVyOiBwcm9wcy51cGRhdGVyLFxuICAgICAgICBpbmxpbmU6IHByb3BzLmlubGluZSA/PyBmYWxzZSxcbiAgICB9KSk7XG5cbiAgICBjb25zdCB0ZXh0ID0gdXNlUmVmKFwiLVwiKTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICB0ZXh0LmN1cnJlbnQgPSBzdGF0ZS5jb250ZW50O1xuICAgICAgICBkaXNwYXRjaCh7IHR5cGU6IFwiY29udGVudC1jaGFuZ2VkXCIsIG5ld1ZhbHVlOiBzdGF0ZS5jb250ZW50IH0pO1xuICAgIH0sIFtwcm9wcy5jb250ZW50LCBzdGF0ZS5jb250ZW50XSk7XG5cbiAgICBjb25zdCBmaW5hbGl6ZSA9IHVzZUZpbmFsaXplcihzdGF0ZS5jb250ZW50LCBkaXNwYXRjaCk7XG4gICAgY29uc3Qgb25JbnB1dCA9IHVzZVN0YWJsZUNhbGxiYWNrKFxuICAgICAgICBhc3luYyAoZTogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICAgICAgaWYgKHByb3BzLmlubGluZSkge1xuICAgICAgICAgICAgICAgIGlmIChlLmtleSA9PT0gXCJFbnRlclwiKSB7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IGZpbmFsaXplKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoZS5rZXkgPT09IFwiRW50ZXJcIiAmJiBlLmN0cmxLZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCBmaW5hbGl6ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgW3RleHQuY3VycmVudCwgcHJvcHMuc291cmNlUGF0aCwgc3RhdGUudXBkYXRlciwgc3RhdGUuY29udGVudCwgc3RhdGUuaXNFZGl0aW5nXVxuICAgICk7XG5cbiAgICBjb25zdCBkYmxDbGljayA9IHVzZVN0YWJsZUNhbGxiYWNrKFxuICAgICAgICAoZTogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgZGlzcGF0Y2goe1xuICAgICAgICAgICAgICAgIHR5cGU6IFwiZWRpdGluZy10b2dnbGVkXCIsXG4gICAgICAgICAgICAgICAgbmV3VmFsdWU6IHRydWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgW3RleHQuY3VycmVudCwgcHJvcHMuc291cmNlUGF0aCwgc3RhdGUudXBkYXRlciwgc3RhdGUuaXNFZGl0aW5nLCBzdGF0ZS5jb250ZW50XVxuICAgICk7XG4gICAgY29uc3QgcmVhZG9ubHlFbCA9IChcbiAgICAgICAgPEZyYWdtZW50PlxuICAgICAgICAgICAge3Byb3BzLm1hcmtkb3duID8gKFxuICAgICAgICAgICAgICAgIDxNYXJrZG93biBjb250ZW50PXt0ZXh0LmN1cnJlbnQgYXMgc3RyaW5nfSBzb3VyY2VQYXRoPXtwcm9wcy5zb3VyY2VQYXRoIHx8IGNmY30gaW5saW5lPXtmYWxzZX0gLz5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPExpdCBpbmxpbmU9e2ZhbHNlfSBzb3VyY2VQYXRoPXtwcm9wcy5zb3VyY2VQYXRoIHx8IGNmY30gdmFsdWU9e3RleHQuY3VycmVudCBhcyBMaXRlcmFsfSAvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgPC9GcmFnbWVudD5cbiAgICApO1xuICAgIGNvbnN0IGVkaXRvciA9IChcbiAgICAgICAgPFVuY29udHJvbGxlZFRleHRFZGl0YWJsZSBvbklucHV0PXtvbklucHV0fSBpbmxpbmU9e3Byb3BzLmlubGluZX0gZGlzcGF0Y2g9e2Rpc3BhdGNofSB0ZXh0PXt0ZXh0LmN1cnJlbnR9IC8+XG4gICAgKTtcbiAgICByZXR1cm4gKFxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJoYXMtdGV4dGVkaXRhYmxlXCIgb25EYmxDbGljaz17ZGJsQ2xpY2t9PlxuICAgICAgICAgICAgPEVkaXRhYmxlPHN0cmluZz4gZGlzcGF0Y2g9e2Rpc3BhdGNofSBlZGl0b3I9e2VkaXRvcn0gZGVmYXVsdFJlbmRlcj17cmVhZG9ubHlFbH0gc3RhdGU9e3N0YXRlfSAvPlxuICAgICAgICA8L3NwYW4+XG4gICAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFVuY29udHJvbGxlZFRleHRFZGl0YWJsZSh7XG4gICAgaW5saW5lLFxuICAgIHRleHQsXG4gICAgZGlzcGF0Y2gsXG4gICAgb25JbnB1dCxcbn06IHtcbiAgICBpbmxpbmU/OiBib29sZWFuO1xuICAgIHRleHQ6IHN0cmluZztcbiAgICBkaXNwYXRjaD86IERpc3BhdGNoPEVkaXRhYmxlQWN0aW9uPHN0cmluZz4+O1xuICAgIG9uSW5wdXQ/OiAoZTogS2V5Ym9hcmRFdmVudCkgPT4gdW5rbm93bjtcbn0pIHtcbiAgICBjb25zdCBbdHh0LCBzZXRUZXh0XSA9IHVzZVN0YXRlKHRleHQpO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoICYmIGRpc3BhdGNoKHsgbmV3VmFsdWU6IHR4dCwgdHlwZTogXCJjb250ZW50LWNoYW5nZWRcIiB9KTtcbiAgICB9LCBbdHh0XSk7XG4gICAgY29uc3Qgb25DaGFuZ2VDYiA9IHVzZVN0YWJsZUNhbGxiYWNrKFxuICAgICAgICBhc3luYyAoZXZ0OiBDaGFuZ2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgc2V0VGV4dCgoZXZ0LmN1cnJlbnRUYXJnZXQgYXMgSFRNTFRleHRBcmVhRWxlbWVudCkudmFsdWUpO1xuICAgICAgICB9LFxuICAgICAgICBbdGV4dCwgZGlzcGF0Y2hdXG4gICAgKTtcblxuICAgIHJldHVybiAhaW5saW5lID8gKFxuICAgICAgICA8dGV4dGFyZWEgY2xhc3NOYW1lPVwiZGF0YWNvcmUtZWRpdGFibGVcIiBvbkNoYW5nZT17b25DaGFuZ2VDYn0gb25LZXlVcD17b25JbnB1dH0+XG4gICAgICAgICAgICB7dHh0fVxuICAgICAgICA8L3RleHRhcmVhPlxuICAgICkgOiAoXG4gICAgICAgIDxpbnB1dCBjbGFzc05hbWU9XCJkYXRhY29yZS1lZGl0YWJsZVwiIHR5cGU9XCJ0ZXh0XCIgb25DaGFuZ2U9e29uQ2hhbmdlQ2J9IG9uS2V5VXA9e29uSW5wdXR9IC8+XG4gICAgKTtcbn1cbi8qKiBBbiBlZGl0YWJsZSBsaXN0IG9mIGl0ZW1zLlxuICpcbiAqIEBncm91cCBFZGl0YWJsZSBDb21wb25lbnRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBFZGl0YWJsZUxpc3RGaWVsZCh7XG4gICAgcHJvcHMsXG4gICAgZmllbGQsXG4gICAgcGFyZW50LFxuICAgIHR5cGUsXG4gICAgZGlzcGF0Y2gsXG4gICAgcmVuZGVyQXMsXG4gICAgY29uZmlnLFxufTogeyBwcm9wczogRWRpdGFibGVTdGF0ZTxMaXRlcmFsPiB9ICYgRmllbGRDb250cm9sUHJvcHM8TGl0ZXJhbD4gJiB7XG4gICAgICAgIHBhcmVudDogTWFya2Rvd25UYXNrSXRlbSB8IE1hcmtkb3duTGlzdEl0ZW07XG4gICAgICAgIHR5cGU6IExpdGVyYWxUeXBlO1xuICAgICAgICBkaXNwYXRjaDogRGlzcGF0Y2g8RWRpdGFibGVBY3Rpb248TGl0ZXJhbD4+O1xuICAgIH0pIHtcbiAgICBjb25zdCBzdWJFZGl0b3IgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgICAgc3dpdGNoIChyZW5kZXJBcykge1xuICAgICAgICAgICAgY2FzZSBcInByb2dyZXNzXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHR5cGUgPT0gXCJudW1iZXJcIiA/IChcbiAgICAgICAgICAgICAgICAgICAgPFByb2dyZXNzRWRpdGFibGVcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoPXtkaXNwYXRjaH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlzRWRpdGluZz17cHJvcHMuaXNFZGl0aW5nfVxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudD17cHJvcHMuY29udGVudCBhcyBudW1iZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVyPXtwcm9wcy51cGRhdGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4PXtjb25maWc/Lm1heCB8fCAxMDB9XG4gICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VQYXRoPXtwYXJlbnQuJGZpbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGVwPXtjb25maWc/LnN0ZXAgfHwgMC4xfVxuICAgICAgICAgICAgICAgICAgICAgICAgbWluPXtjb25maWc/Lm1pbiB8fCAwfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICkgOiBudWxsO1xuICAgICAgICAgICAgY2FzZSBcInJhdGluZ1wiOlxuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIDxSYXRpbmdFZGl0YWJsZVxuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ9e2ZpZWxkfVxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsZT17cGFyZW50LiRmaWxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT17dHlwZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZz17Y29uZmlnfVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3Byb3BzLmNvbnRlbnQgYXMgc3RyaW5nIHwgbnVtYmVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlcj17cHJvcHMudXBkYXRlcn1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgY2FzZSBcInNlbGVjdFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIDxTZWxlY3RhYmxlRWRpdGFibGVcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzRWRpdGluZz17cHJvcHMuaXNFZGl0aW5nfVxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2g9e2Rpc3BhdGNofVxuICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnPXtjb25maWd9XG4gICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVyPXtwcm9wcy51cGRhdGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT17dHlwZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ9e3Byb3BzLmNvbnRlbnQgYXMgU2VsZWN0YWJsZVR5cGV9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICB9LCBbcGFyZW50LCBmaWVsZCwgcHJvcHMuY29udGVudCwgcHJvcHMuY29udGVudCwgcHJvcHMsIGNvbmZpZywgcmVuZGVyQXNdKTtcbiAgICBjb25zdCBlZGl0b3IgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgICAgICBjYXNlIFwiZGF0ZVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIDxEYXRlRWRpdGFibGVcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoPXtkaXNwYXRjaH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZVBhdGg9e3BhcmVudC4kZmlsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlzRWRpdGluZz17cHJvcHMuaXNFZGl0aW5nfVxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudD17cHJvcHMuY29udGVudCBhcyBEYXRlVGltZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZXI9e3Byb3BzLnVwZGF0ZXIgYXMgKHZhbDogc3RyaW5nIHwgRGF0ZVRpbWUgfCBudWxsKSA9PiBhbnl9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNhc2UgXCJib29sZWFuXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgPEJvb2xlYW5FZGl0YWJsZVxuICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlcj17cHJvcHMudXBkYXRlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9e3R5cGV9XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17cHJvcHMuY29udGVudCBhcyBib29sZWFufVxuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ9e2ZpZWxkfVxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsZT17cGFyZW50LiRmaWxlfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjYXNlIFwic3RyaW5nXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtzdWJFZGl0b3IgPz8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUZXh0RWRpdGFibGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlUGF0aD17cGFyZW50LiRmaWxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0VkaXRpbmc9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50PXtwcm9wcy5jb250ZW50IGFzIHN0cmluZ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlcj17cHJvcHMudXBkYXRlciBhcyAodmFsOiBzdHJpbmcpID0+IHVua25vd259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjYXNlIFwibnVtYmVyXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIDw+e3N1YkVkaXRvciA/PyA8TnVtYmVyRWRpdGFibGUgY29udGVudD17cHJvcHMuY29udGVudCBhcyBudW1iZXJ9IHVwZGF0ZXI9e3Byb3BzLnVwZGF0ZXJ9IC8+fTwvPjtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgPFRleHRFZGl0YWJsZVxuICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlUGF0aD17cGFyZW50LiRmaWxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgaXNFZGl0aW5nPXtwcm9wcy5pc0VkaXRpbmd9XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50PXtMaXRlcmFscy50b1N0cmluZyhwcm9wcy5jb250ZW50KX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZXI9e3Byb3BzLnVwZGF0ZXIgYXMgKHZhbDogc3RyaW5nKSA9PiB1bmtub3dufVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9LCBbcGFyZW50LCBmaWVsZCwgcHJvcHMuY29udGVudCwgcHJvcHMuY29udGVudCwgcHJvcHMsIGNvbmZpZywgcmVuZGVyQXMsIHN1YkVkaXRvcl0pO1xuXG4gICAgY29uc3QgZGJsY2xpY2sgPSB1c2VTdGFibGVDYWxsYmFjayhcbiAgICAgICAgKGV2dDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgZGlzcGF0Y2goeyB0eXBlOiBcImVkaXRpbmctdG9nZ2xlZFwiLCBuZXdWYWx1ZTogIXByb3BzLmlzRWRpdGluZyB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgW3Byb3BzLmlzRWRpdGluZ11cbiAgICApO1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkYXRhY29yZS1maWVsZFwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiZmllbGQtdGl0bGVcIiBvbkRibENsaWNrPXtkYmxjbGlja30+XG4gICAgICAgICAgICAgICAge2ZpZWxkLmtleX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImZpZWxkLXZhbHVlXCIgdGFiSW5kZXg9ezB9PlxuICAgICAgICAgICAgICAgIHtlZGl0b3J9XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICk7XG59XG4iLCAiLyoqXG4gKiBAbW9kdWxlIHZpZXdzXG4gKi9cbmltcG9ydCB7IExpdGVyYWwgfSBmcm9tIFwiZXhwcmVzc2lvbi9saXRlcmFsXCI7XG5pbXBvcnQgeyBBUFBfQ09OVEVYVCwgQ1VSUkVOVF9GSUxFX0NPTlRFWFQsIERBVEFDT1JFX0NPTlRFWFQsIExpdCB9IGZyb20gXCJ1aS9tYXJrZG93blwiO1xuXG5pbXBvcnQgeyBWTm9kZSwgaXNWYWxpZEVsZW1lbnQgfSBmcm9tIFwicHJlYWN0XCI7XG5pbXBvcnQgeyB1c2VDb250ZXh0LCB1c2VNZW1vIH0gZnJvbSBcInByZWFjdC9ob29rc1wiO1xuaW1wb3J0IHsgQmFzZUZpZWxkUHJvcHMgfSBmcm9tIFwidWkvZmllbGRzL2NvbW1vbi1wcm9wc1wiO1xuaW1wb3J0IHtcbiAgICBDb250cm9sbGVkRWRpdGFibGUsXG4gICAgRWRpdGFibGUsXG4gICAgRWRpdGFibGVFbGVtZW50LFxuICAgIEVkaXRhYmxlU3RhdGUsXG4gICAgVGV4dEVkaXRhYmxlLFxuICAgIHVzZUVkaXRhYmxlRGlzcGF0Y2gsXG59IGZyb20gXCJ1aS9maWVsZHMvZWRpdGFibGVcIjtcbmltcG9ydCB7IHVzZVN0YWJsZUNhbGxiYWNrIH0gZnJvbSBcInVpL2hvb2tzXCI7XG5pbXBvcnQgeyBNYXJrZG93bkxpc3RJdGVtLCBNYXJrZG93blRhc2tJdGVtIH0gZnJvbSBcImluZGV4L3R5cGVzL21hcmtkb3duXCI7XG5pbXBvcnQgeyByZXdyaXRlVGFzayB9IGZyb20gXCJ1dGlscy90YXNrXCI7XG5pbXBvcnQgeyBzZXRJbmxpbmVGaWVsZCB9IGZyb20gXCJpbmRleC9pbXBvcnQvaW5saW5lLWZpZWxkXCI7XG5cbi8qKlxuICogU3RhdGUgZm9yIGEge0BsaW5rIExpc3RWaWV3fVxuICogQHR5cGVQYXJhbSBUIC0gdGhlIHR5cGUgb2YgdGhlIGl0ZW1zIGNvbnRhaW5lZCBpbiB0aGUgbGlzdFxuICogQGdyb3VwIFN0YXRlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIExpc3RTdGF0ZTxUPiB7XG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGUgbGlzdCBzaG91bGQgYmUgb3JkZXJlZCAob2wpLCB1bm9yZGVyZWQgKHVsKSwgb3IgaGF2ZSBubyBzcGVjaWFsIG1hcmt1cCAobm9uZSkuXG4gICAgICpcbiAgICAgKiBMaXN0cyB3aXRoIG5vIHNwZWNpYWwgbWFya3VwIGp1c3QgaGF2ZSBlYWNoIGVsZW1lbnQgcmVuZGVyZWQgZGlyZWN0bHkgYXMtaXMgd2l0aG91dCBhbnkgd3JhcHBpbmdcbiAgICAgKiBpbnNpZGUgb2YgYSBzaW5nbGUgZGl2LlxuICAgICAqXG4gICAgICovXG4gICAgdHlwZT86IFwib3JkZXJlZFwiIHwgXCJ1bm9yZGVyZWRcIiB8IFwibm9uZVwiO1xuXG4gICAgLyoqIFRoZSBmdWxsIGNvbGxlY3Rpb24gb2YgZWxlbWVudHMgaW4gdGhlIGxpc3QuICovXG4gICAgcm93cz86IFRbXTtcblxuICAgIC8qKiBDb250cm9scyB3aGV0aGVyIHBhZ2luZyBpcyBlbmFibGVkIGZvciB0aGlzIGVsZW1lbnQuIElmIHRydWUsIHVzZXMgZGVmYXVsdCBwYWdlIHNpemUuIElmIGEgbnVtYmVyLCBwYWdpbmcgaXMgZW5hYmxlZCB3aXRoIHRoZSBnaXZlbiBwYWdlIHNpemUuICovXG4gICAgcGFnaW5nPzogYm9vbGVhbiB8IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIEN1c3RvbSByZW5kZXIgZnVuY3Rpb24gdG8gdXNlIGZvciByZW5kZXJpbmcgZWFjaCBlbGVtZW50LiBDYW4gcHJvZHVjZSBlaXRoZXIgSlNYIG9yIGEgcGxhaW4gdmFsdWUgd2hpY2ggd2lsbCBiZVxuICAgICAqIHJlbmRlcmVkIGFzIGEgbGl0ZXJhbC5cbiAgICAgKi9cbiAgICByZW5kZXJlcj86IChlbGVtZW50OiBULCBpbmRleDogbnVtYmVyKSA9PiBSZWFjdC5SZWFjdE5vZGUgfCBMaXRlcmFsO1xuXG4gICAgLyoqIGZpZWxkcyB0byBkaXNwbGF5IHVuZGVyIGVhY2ggaXRlbSBpbiB0aGlzIHRhc2sgbGlzdCAqL1xuICAgIGRpc3BsYXllZEZpZWxkcz86IChCYXNlRmllbGRQcm9wczxMaXRlcmFsPiAmIHsga2V5OiBzdHJpbmcgfSlbXTtcbn1cblxuLyoqXG4gKlxuICogQSBzaW1wbGUgYW5kIHJlc3BvbnNpdmUgbGlzdCB2aWV3LlxuICogQGdyb3VwIENvbXBvbmVudHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIExpc3RWaWV3PFQ+KHN0YXRlOiBMaXN0U3RhdGU8VD4pIHtcbiAgICAvLyBjb25zdCBzZXR0aW5ncyA9IHVzZUNvbnRleHQoU0VUVElOR1NfQ09OVEVYVCk7XG5cbiAgICBjb25zdCB0eXBlID0gc3RhdGUudHlwZSA/PyBcInVub3JkZXJlZFwiO1xuICAgIGNvbnN0IGVsZW1lbnRzID0gc3RhdGUucm93cyA/PyBbXTtcbiAgICBjb25zdCByZW5kZXJlciA9IHN0YXRlLnJlbmRlcmVyID8/IGlkZW50aXR5O1xuXG4gICAgaWYgKHR5cGUgPT0gXCJub25lXCIpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZGF0YWNvcmUtbGlzdCBkYXRhY29yZS1saXN0LW5vbmVcIj5cbiAgICAgICAgICAgICAgICB7ZWxlbWVudHMubWFwKChlbGVtZW50LCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRhdGFjb3JlLXVud3JhcHBlZC1saXN0LWl0ZW1cIiBrZXk9e2luZGV4fT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtlbnN1cmVFbGVtZW50KHJlbmRlcmVyKGVsZW1lbnQsIGluZGV4KSl9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICk7XG4gICAgfSBlbHNlIGlmICh0eXBlID09IFwib3JkZXJlZFwiKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8b2wgY2xhc3NOYW1lPXtcImRhdGFjb3JlLWxpc3QgZGF0YWNvcmUtbGlzdC1vcmRlcmVkXCJ9PlxuICAgICAgICAgICAgICAgIHtlbGVtZW50cy5tYXAoKGVsZW1lbnQsIGluZGV4KSA9PiAoXG4gICAgICAgICAgICAgICAgICAgIDxsaSBrZXk9e2luZGV4fSBjbGFzc05hbWU9XCJkYXRhY29yZS1saXN0LWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtlbnN1cmVFbGVtZW50KHJlbmRlcmVyKGVsZW1lbnQsIGluZGV4KSl9XG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICA8L29sPlxuICAgICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8dWwgY2xhc3NOYW1lPVwiZGF0YWNvcmUtbGlzdCBkYXRhY29yZS1saXN0LXVub3JkZXJlZFwiPlxuICAgICAgICAgICAgICAgIHtlbGVtZW50cy5tYXAoKGVsZW1lbnQsIGluZGV4KSA9PiAoXG4gICAgICAgICAgICAgICAgICAgIDxsaSBrZXk9e2luZGV4fSBjbGFzc05hbWU9XCJkYXRhY29yZS1saXN0LWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtlbnN1cmVFbGVtZW50KHJlbmRlcmVyKGVsZW1lbnQsIGluZGV4KSl9XG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICApO1xuICAgIH1cbn1cblxuLyoqIE5vLW9wIGVsZW1lbnQgcmVuZGVyZXIuXG4gKiBAaGlkZGVuXG4gKi9cbmZ1bmN0aW9uIGlkZW50aXR5PFQ+KGVsZW1lbnQ6IFQpOiBUIHtcbiAgICByZXR1cm4gZWxlbWVudDtcbn1cblxuLyoqXG4gKiBAaGlkZGVuXG4gKiAgRW5zdXJlcyB0aGUgZ2l2ZW4gZWxlbWVudCBpcyBhIHJlbmRlcmFibGUgcmVhY3Qgbm9kZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbnN1cmVFbGVtZW50PFQ+KGVsZW1lbnQ6IFQpOiBWTm9kZSB7XG4gICAgaWYgKGlzVmFsaWRFbGVtZW50KGVsZW1lbnQpKSB7XG4gICAgICAgIHJldHVybiBlbGVtZW50O1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiA8RGVmYXVsdExpc3RFbGVtZW50IGVsZW1lbnQ9e2VsZW1lbnR9IC8+O1xuICAgIH1cbn1cblxuLyoqXG4gKiBAaGlkZGVuXG4gKiAgRGVmYXVsdCBsaXN0IGVsZW1lbnQgd2hpY2gganVzdCB0cmllcyB0byByZW5kZXIgdGhlIHZhbHVlIGFzIGEgbGl0ZXJhbC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBEZWZhdWx0TGlzdEVsZW1lbnQ8VD4oeyBlbGVtZW50IH06IHsgZWxlbWVudDogVCB9KSB7XG4gICAgY29uc3Qgc291cmNlUGF0aCA9IHVzZUNvbnRleHQoQ1VSUkVOVF9GSUxFX0NPTlRFWFQpO1xuXG4gICAgcmV0dXJuIDxMaXQgaW5saW5lPXt0cnVlfSB2YWx1ZT17ZWxlbWVudCBhcyBMaXRlcmFsfSBzb3VyY2VQYXRoPXtzb3VyY2VQYXRofSAvPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEVkaXRhYmxlTGlzdEVsZW1lbnQ8VD4oe1xuICAgIGVsZW1lbnQ6IGl0ZW0sXG4gICAgZWRpdG9yLFxuICAgIG9uVXBkYXRlLFxuICAgIGZpbGUsXG4gICAgZWRpdG9yUHJvcHMsXG59OiB7XG4gICAgZWRpdG9yOiAodmFsdWU6IFQpID0+IEVkaXRhYmxlRWxlbWVudDxUPjtcbiAgICBlbGVtZW50OiBUO1xuICAgIGZpbGU6IHN0cmluZztcbiAgICBvblVwZGF0ZTogKHZhbHVlOiBUKSA9PiB1bmtub3duO1xuICAgIGVkaXRvclByb3BzOiB1bmtub3duO1xufSkge1xuICAgIHJldHVybiAoXG4gICAgICAgIDxDb250cm9sbGVkRWRpdGFibGU8VD5cbiAgICAgICAgICAgIHByb3BzPXtlZGl0b3JQcm9wc31cbiAgICAgICAgICAgIHNvdXJjZVBhdGg9e2ZpbGV9XG4gICAgICAgICAgICBjb250ZW50PXtpdGVtfVxuICAgICAgICAgICAgZWRpdG9yPXtlZGl0b3IoaXRlbSl9XG4gICAgICAgICAgICBvblVwZGF0ZT17b25VcGRhdGV9XG4gICAgICAgICAgICBkZWZhdWx0UmVuZGVyPXs8RGVmYXVsdExpc3RFbGVtZW50IGVsZW1lbnQ9e2l0ZW19IC8+fVxuICAgICAgICAvPlxuICAgICk7XG59XG4iLCAiLyoqXG4gKiBAbW9kdWxlIHZpZXdzXG4gKi9cblxuaW1wb3J0IHsgTWFya2Rvd25MaXN0SXRlbSwgTWFya2Rvd25UYXNrSXRlbSB9IGZyb20gXCJpbmRleC90eXBlcy9tYXJrZG93blwiO1xuaW1wb3J0IHsgRWRpdGFibGVMaXN0RWxlbWVudCwgTGlzdFN0YXRlIH0gZnJvbSBcImFwaS91aS92aWV3cy9saXN0XCI7XG5pbXBvcnQgeyB1c2VTdGFibGVDYWxsYmFjayB9IGZyb20gXCJ1aS9ob29rc1wiO1xuaW1wb3J0IHsgRnJhZ21lbnQgfSBmcm9tIFwicHJlYWN0XCI7XG5pbXBvcnQgeyBBUFBfQ09OVEVYVCwgREFUQUNPUkVfQ09OVEVYVCB9IGZyb20gXCJ1aS9tYXJrZG93blwiO1xuaW1wb3J0IHsgSlNYSW50ZXJuYWwgfSBmcm9tIFwicHJlYWN0L3NyYy9qc3hcIjtcbmltcG9ydCB7IERpc3BhdGNoLCB1c2VDb250ZXh0LCB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tIFwicHJlYWN0L2hvb2tzXCI7XG5pbXBvcnQgeyBjb21wbGV0ZVRhc2ssIHJld3JpdGVUYXNrIH0gZnJvbSBcInV0aWxzL3Rhc2tcIjtcbmltcG9ydCB7IExpdGVyYWwsIExpdGVyYWxzIH0gZnJvbSBcImV4cHJlc3Npb24vbGl0ZXJhbFwiO1xuaW1wb3J0IHtcbiAgICBFZGl0YWJsZUFjdGlvbixcbiAgICBFZGl0YWJsZUxpc3RGaWVsZCxcbiAgICBFZGl0YWJsZVN0YXRlLFxuICAgIFRleHRFZGl0YWJsZSxcbiAgICB1c2VFZGl0YWJsZURpc3BhdGNoLFxufSBmcm9tIFwidWkvZmllbGRzL2VkaXRhYmxlXCI7XG5pbXBvcnQgeyBzZXRJbmxpbmVGaWVsZCB9IGZyb20gXCJpbmRleC9pbXBvcnQvaW5saW5lLWZpZWxkXCI7XG5pbXBvcnQgeyBGaWVsZCB9IGZyb20gXCJleHByZXNzaW9uL2ZpZWxkXCI7XG5pbXBvcnQgeyBEYXRlVGltZSB9IGZyb20gXCJsdXhvblwiO1xuaW1wb3J0IFwiLi9saXN0cy5jc3NcIjtcblxuLyoqXG4gKiBQcm9wcyBwYXNzZWQgdG8gdGhlIHRhc2sgbGlzdCBjb21wb25lbnQuXG4gKiBAZ3JvdXAgUHJvcHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYXNrUHJvcHMgZXh0ZW5kcyBMaXN0U3RhdGU8TWFya2Rvd25UYXNrSXRlbSB8IE1hcmtkb3duTGlzdEl0ZW0+IHtcbiAgICAvKiogdGFzayBzdGF0ZXMgdG8gY3ljbGUgdGhyb3VnaCwgaWYgc3BlY2lmaWVkICovXG4gICAgYWRkaXRpb25hbFN0YXRlcz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBsaXN0IG9mIHRhc2tzLlxuICogQHBhcmFtIHByb3BzXG4gKiBAZ3JvdXAgQ29tcG9uZW50c1xuICovXG5leHBvcnQgZnVuY3Rpb24gVGFza0xpc3Qoe1xuICAgIHJvd3M6IGl0ZW1zLFxuICAgIGFkZGl0aW9uYWxTdGF0ZXM6IHN0YXRlcyxcbiAgICByZW5kZXJlcjogbGlzdFJlbmRlcmVyID0gKGl0ZW0sIGluZGV4KSA9PiAoXG4gICAgICAgIDxFZGl0YWJsZUxpc3RFbGVtZW50PHN0cmluZz5cbiAgICAgICAgICAgIG9uVXBkYXRlPXt1c2VMaXN0SXRlbUVkaXRpbmcoaXRlbSl9XG4gICAgICAgICAgICBlbGVtZW50PXtpdGVtLiRjbGVhbnRleHQhfVxuICAgICAgICAgICAgZmlsZT17aXRlbS4kZmlsZX1cbiAgICAgICAgICAgIGVkaXRvclByb3BzPXt7IG1hcmtkb3duOiB0cnVlLCBzb3VyY2VQYXRoOiBpdGVtLiRmaWxlIH19XG4gICAgICAgICAgICBlZGl0b3I9eyhpdCkgPT4gVGV4dEVkaXRhYmxlfVxuICAgICAgICAvPlxuICAgICksXG4gICAgLi4ucmVzdFxufTogVGFza1Byb3BzKSB7XG4gICAgY29uc3QgY29udGVudCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPHVsIGNsYXNzTmFtZT1cImRhdGFjb3JlIGNvbnRhaW5zLXRhc2stbGlzdFwiPlxuICAgICAgICAgICAgICAgIHtpdGVtcz8ubWFwKChpdGVtLCBpbmQpID0+XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0gaW5zdGFuY2VvZiBNYXJrZG93blRhc2tJdGVtID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPFRhc2sga2V5PXtpdGVtLiRpZH0gc3RhdGU9e3sgLi4ucmVzdCwgYWRkaXRpb25hbFN0YXRlczogc3RhdGVzIH19IGl0ZW09e2l0ZW19IC8+XG4gICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2xpc3RSZW5kZXJlcihpdGVtLCBpbmQpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZGF0YWNvcmUtbGlzdC1pdGVtLWZpZWxkc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TGlzdEl0ZW1GaWVsZHMgZGlzcGxheWVkRmllbGRzPXtyZXN0LmRpc3BsYXllZEZpZWxkc30gaXRlbT17aXRlbX0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgKTtcbiAgICB9LCBbaXRlbXMsIHN0YXRlc10pO1xuICAgIHJldHVybiA8RnJhZ21lbnQ+eyEhaXRlbXMgJiYgY29udGVudH08L0ZyYWdtZW50Pjtcbn1cbi8qKlxuICogUmVwcmVzZW50cyBhIHNpbmdsZSBpdGVtIGluIGEgdGFzayBsaXN0aW5nLlxuICogQHBhcmFtIHByb3BzIC0gdGhlIGNvbXBvbmVudCdzIHByb3BzXG4gKiBAcGFyYW0gcHJvcHMuaXRlbSAtIHRoZSBjdXJyZW50IHRhc2sgYmVpbmcgcmVuZGVyZWRcbiAqIEBwYXJhbSBwcm9wcy5zdGF0ZSAtIHRoZSB7QGxpbmsgVGFza1Byb3BzfSBvZiB0aGUge0BsaW5rIFRhc2tMaXN0fSBpbiB3aGljaCB0aGlzIFRhc2sgYXBwZWFyc1xuICogQGdyb3VwIENvbXBvbmVudHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFRhc2soeyBpdGVtLCBzdGF0ZTogcHJvcHMgfTogeyBpdGVtOiBNYXJrZG93blRhc2tJdGVtOyBzdGF0ZTogVGFza1Byb3BzIH0pIHtcbiAgICBjb25zdCBhcHAgPSB1c2VDb250ZXh0KEFQUF9DT05URVhUKTtcbiAgICBjb25zdCBjb3JlID0gdXNlQ29udGV4dChEQVRBQ09SRV9DT05URVhUKTtcbiAgICBjb25zdCB7IHNldHRpbmdzIH0gPSBjb3JlO1xuICAgIGNvbnN0IHN0YXRlcyA9IFtcIiBcIiwgLi4uKHByb3BzLmFkZGl0aW9uYWxTdGF0ZXMgfHwgW10pLCBcInhcIl07XG4gICAgY29uc3QgbmV4dFN0YXRlID0gKCkgPT4ge1xuICAgICAgICBpZiAocHJvcHMuYWRkaXRpb25hbFN0YXRlcyAmJiBwcm9wcy5hZGRpdGlvbmFsU3RhdGVzPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBsZXQgY3VySW5kZXggPSBzdGF0ZXMuZmluZEluZGV4KChhKSA9PiBhID09PSBpdGVtLiRzdGF0dXMpO1xuICAgICAgICAgICAgY3VySW5kZXgrKztcbiAgICAgICAgICAgIGlmIChjdXJJbmRleCA+PSBzdGF0ZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgY3VySW5kZXggPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHN0YXRlc1tjdXJJbmRleF07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gaXRlbS4kY29tcGxldGVkID8gXCIgXCIgOiBcInhcIjtcbiAgICAgICAgfVxuICAgIH07XG4gICAgY29uc3QgW3N0YXR1cywgc2V0U3RhdHVzXSA9IHVzZVN0YXRlPHN0cmluZz4oaXRlbS4kc3RhdHVzKTtcbiAgICBjb25zdCBjb21wbGV0ZWRSZWYgPSB1c2VSZWY8RGlzcGF0Y2g8RWRpdGFibGVBY3Rpb248TGl0ZXJhbD4+PihudWxsKTtcbiAgICBjb25zdCBvbkNoZWNrZWQgPSB1c2VTdGFibGVDYWxsYmFjayhhc3luYyAoZXZ0OiBKU1hJbnRlcm5hbC5UYXJnZXRlZE1vdXNlRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHtcbiAgICAgICAgY29uc3QgY29tcGxldGVkID0gZXZ0LmN1cnJlbnRUYXJnZXQuY2hlY2tlZDtcbiAgICAgICAgbGV0IG5ld1N0YXR1czogc3RyaW5nO1xuICAgICAgICBpZiAoZXZ0LnNoaWZ0S2V5KSB7XG4gICAgICAgICAgICBuZXdTdGF0dXMgPSBuZXh0U3RhdGUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5ld1N0YXR1cyA9IGNvbXBsZXRlZCA/IFwieFwiIDogXCIgXCI7XG4gICAgICAgIH1cbiAgICAgICAgc2V0U3RhdHVzKG5ld1N0YXR1cyk7XG4gICAgICAgIGF3YWl0IGNvbXBsZXRlVGFzayhjb21wbGV0ZWQsIGl0ZW0sIGFwcC52YXVsdCwgY29yZSk7XG4gICAgICAgIGNvbnN0IG52ID0gY29tcGxldGVkID8gRGF0ZVRpbWUubm93KCkudG9Gb3JtYXQoc2V0dGluZ3MuZGVmYXVsdERhdGVGb3JtYXQpIDogbnVsbDtcbiAgICAgICAgY29tcGxldGVkUmVmLmN1cnJlbnQgJiYgY29tcGxldGVkUmVmLmN1cnJlbnQoeyB0eXBlOiBcImNvbW1pdFwiLCBuZXdWYWx1ZTogbnYgfSk7XG4gICAgfSwgW10pO1xuXG4gICAgY29uc3QgY2hlY2tlZCA9IHVzZU1lbW8oKCkgPT4gc3RhdHVzICE9PSBcIiBcIiwgW2l0ZW0uJHN0YXR1cywgaXRlbSwgc3RhdHVzXSk7XG4gICAgY29uc3QgZVN0YXRlOiBFZGl0YWJsZVN0YXRlPHN0cmluZz4gPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHVwZGF0ZXI6IHVzZUxpc3RJdGVtRWRpdGluZyhpdGVtKSxcbiAgICAgICAgICAgIGNvbnRlbnQ6IGl0ZW0uJGNsZWFudGV4dCxcbiAgICAgICAgICAgIGlubGluZTogZmFsc2UsXG4gICAgICAgICAgICBpc0VkaXRpbmc6IGZhbHNlLFxuICAgICAgICB9IGFzIEVkaXRhYmxlU3RhdGU8c3RyaW5nPjtcbiAgICB9LCBbaXRlbS4kY2xlYW50ZXh0LCBpdGVtLiR0ZXh0XSk7XG4gICAgY29uc3QgdGhlRWxlbWVudCA9IHVzZU1lbW8oXG4gICAgICAgICgpID0+IDxUZXh0RWRpdGFibGUgc291cmNlUGF0aD17aXRlbS4kZmlsZX0gey4uLmVTdGF0ZX0gLz4sXG4gICAgICAgIFtlU3RhdGUuY29udGVudCwgaXRlbSwgcHJvcHMucm93c11cbiAgICApO1xuXG4gICAgY29uc3QgW2NvbGxhcHNlZCwgc2V0Q29sbGFwc2VkXSA9IHVzZVN0YXRlPGJvb2xlYW4+KGZhbHNlKTtcbiAgICBjb25zdCBoYXNDaGlsZHJlbiA9IGl0ZW0uJGVsZW1lbnRzLmxlbmd0aCA+IDA7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgc2V0Q29sbGFwc2VkKCFjb2xsYXBzZWQpO1xuICAgIH0sIFtdKTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxsaSBrZXk9e2l0ZW0uJGlkfSBkYXRhLXRlc3RpZD1cImRhdGFjb3JlLXRhc2staXRlbVwiIGNsYXNzTmFtZT17XCJkYXRhY29yZSB0YXNrLWxpc3QtaXRlbVwiICsgKGNoZWNrZWQgPyBcIiBpcy1jaGVja2VkXCIgOiBcIlwiKX0gZGF0YS10YXNrPXtzdGF0dXN9PlxuICAgICAgICAgICAgPENvbGxhcHNlSW5kaWNhdG9yXG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0Q29sbGFwc2VkKChjKSA9PiAhYyl9XG4gICAgICAgICAgICAgICAgY29sbGFwc2VkPXtjb2xsYXBzZWR9XG4gICAgICAgICAgICAgICAgaGFzQ2hpbGRyZW49e2hhc0NoaWxkcmVufVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxpbnB1dCBjbGFzc05hbWU9XCJkYXRhY29yZSB0YXNrLWxpc3QtaXRlbS1jaGVja2JveFwiIHR5cGU9XCJjaGVja2JveFwiIGNoZWNrZWQ9e2NoZWNrZWR9IG9uQ2xpY2s9e29uQ2hlY2tlZH0gb25DaGFuZ2U9eyhlKSA9PiBjb25zb2xlLmxvZyhlLmN1cnJlbnRUYXJnZXQudmFsdWUpfS8+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZGF0YWNvcmUtbGlzdC1pdGVtLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAge3RoZUVsZW1lbnR9XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZGF0YWNvcmUtbGlzdC1pdGVtLWZpZWxkc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPExpc3RJdGVtRmllbGRzIGRpc3BsYXllZEZpZWxkcz17cHJvcHMuZGlzcGxheWVkRmllbGRzfSBpdGVtPXtpdGVtfSAvPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAge2hhc0NoaWxkcmVuICYmICFjb2xsYXBzZWQgJiYgPFRhc2tMaXN0IHsuLi5wcm9wc30gcm93cz17aXRlbS4kZWxlbWVudHN9IC8+fVxuICAgICAgICA8L2xpPlxuICAgICk7XG59XG5cbmZ1bmN0aW9uIENvbGxhcHNlSW5kaWNhdG9yKHtcbiAgICBjb2xsYXBzZWQsXG4gICAgb25DbGljayxcbiAgICBoYXNDaGlsZHJlbixcbn06IHtcbiAgICBjb2xsYXBzZWQ6IGJvb2xlYW47XG4gICAgb25DbGljazogKCkgPT4gdm9pZDtcbiAgICBoYXNDaGlsZHJlbjogYm9vbGVhbjtcbn0pIHtcbiAgICBjb25zdCB0b2dnbGVDbmFtZXMgPSBbXCJkYXRhY29yZS1jb2xsYXBzZXJcIl07XG4gICAgaWYgKGNvbGxhcHNlZCkgdG9nZ2xlQ25hbWVzLnB1c2goXCJpcy1jb2xsYXBzZWRcIik7XG4gICAgaWYgKCFoYXNDaGlsZHJlbikgdG9nZ2xlQ25hbWVzLnB1c2goXCJuby1jaGlsZHJlblwiKTtcbiAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2IG9uQ2xpY2s9e29uQ2xpY2t9IGNsYXNzTmFtZT17dG9nZ2xlQ25hbWVzLmpvaW4oXCIgXCIpfSBkaXI9XCJhdXRvXCI+XG4gICAgICAgICAgICA8c3ZnXG4gICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgICAgICAgd2lkdGg9XCIyNFwiXG4gICAgICAgICAgICAgICAgaGVpZ2h0PVwiMjRcIlxuICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjJcIlxuICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJzdmctaWNvbiByaWdodC10cmlhbmdsZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk0zIDhMMTIgMTdMMjEgOFwiPjwvcGF0aD5cbiAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICA8L2Rpdj5cbiAgICApO1xufVxuXG4vKipcbiAqIERpc3BsYXlzIGFuIGVkaXRhYmxlIHNldCBvZiBmaWVsZHMgYmVsb3cgYSB0YXNrIG9yIGxpc3QgaXRlbS5cbiAqIEBoaWRkZW5cbiAqIEBncm91cCBDb21wb25lbnRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBMaXN0SXRlbUZpZWxkcyh7XG4gICAgZGlzcGxheWVkRmllbGRzOiBkaXNwbGF5ZWRGaWVsZHNQcm9wLFxuICAgIGl0ZW0sXG59OiB7XG4gICAgZGlzcGxheWVkRmllbGRzPzogVGFza1Byb3BzW1wiZGlzcGxheWVkRmllbGRzXCJdO1xuICAgIGl0ZW06IE1hcmtkb3duVGFza0l0ZW0gfCBNYXJrZG93bkxpc3RJdGVtO1xufSkge1xuICAgIGNvbnN0IGFwcCA9IHVzZUNvbnRleHQoQVBQX0NPTlRFWFQpO1xuICAgIGNvbnN0IGNvcmUgPSB1c2VDb250ZXh0KERBVEFDT1JFX0NPTlRFWFQpO1xuICAgIGNvbnN0IHsgc2V0dGluZ3MgfSA9IGNvcmU7XG4gICAgY29uc3QgZGlzcGxheWVkRmllbGRzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIGlmIChkaXNwbGF5ZWRGaWVsZHNQcm9wICE9IHVuZGVmaW5lZCkgcmV0dXJuIGRpc3BsYXllZEZpZWxkc1Byb3A7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIE9iamVjdC52YWx1ZXMoaXRlbS4kaW5maWVsZHMpLm1hcCgoZikgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogZi5rZXksXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IExpdGVyYWxzLnR5cGVPZihmLnZhbHVlKSxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlnOiB7fSxcbiAgICAgICAgICAgICAgICAgICAgZWRpdGFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIHJlbmRlckFzOiBcInJhd1wiLFxuICAgICAgICAgICAgICAgIH0gYXMgTm9uTnVsbGFibGU8VGFza1Byb3BzW1wiZGlzcGxheWVkRmllbGRzXCJdPlswXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfSwgW2Rpc3BsYXllZEZpZWxkc1Byb3AsIGl0ZW0uJGluZmllbGRzLCBpdGVtXSk7XG4gICAgcmV0dXJuIChcbiAgICAgICAgPD5cbiAgICAgICAgICAgIHtkaXNwbGF5ZWRGaWVsZHMubWFwKChpZmllbGQpID0+IHtcbiAgICAgICAgICAgICAgICBpZmllbGQua2V5ID0gaWZpZWxkLmtleS50b0xvY2FsZUxvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgIGxldCBkZWZWYWwgPSB0eXBlb2YgaWZpZWxkLmRlZmF1bHRWYWx1ZSA9PSBcImZ1bmN0aW9uXCIgPyBpZmllbGQuZGVmYXVsdFZhbHVlKCkgOiBpZmllbGQuZGVmYXVsdFZhbHVlO1xuICAgICAgICAgICAgICAgIGxldCBkZWZGaWVsZDogRmllbGQgPSB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogaWZpZWxkLmtleSxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGRlZlZhbCxcbiAgICAgICAgICAgICAgICAgICAgcmF3OiBMaXRlcmFscy50b1N0cmluZyhkZWZWYWwpLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgY29uc3QgW2ZpZWxkVmFsdWVdID0gdXNlU3RhdGU8TGl0ZXJhbD4oaXRlbS4kaW5maWVsZHNbaWZpZWxkPy5rZXldPy52YWx1ZSB8fCBkZWZGaWVsZC52YWx1ZSEpO1xuICAgICAgICAgICAgICAgIGNvbnN0IFtzdGF0ZTIsIGRpc3BhdGNoXSA9IHVzZUVkaXRhYmxlRGlzcGF0Y2g8TGl0ZXJhbD4oe1xuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBmaWVsZFZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBpc0VkaXRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICB1cGRhdGVyOiB1c2VTdGFibGVDYWxsYmFjayhcbiAgICAgICAgICAgICAgICAgICAgICAgICh2YWw6IExpdGVyYWwpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkYXRlU3RyaW5nID0gKHY6IExpdGVyYWwpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgaW5zdGFuY2VvZiBEYXRlVGltZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB2LnRvRm9ybWF0KHNldHRpbmdzLmRlZmF1bHREYXRlRm9ybWF0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB2ICE9IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gTGl0ZXJhbHMudG9TdHJpbmcodilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHdpdGhGaWVsZHMgPSBpdGVtLiR0ZXh0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3aXRoRmllbGRzICYmIGl0ZW0uJHRleHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW0uJGluZmllbGRzW2lmaWVsZC5rZXldKSBpdGVtLiRpbmZpZWxkc1tpZmllbGQua2V5XS52YWx1ZSA9IGRhdGVTdHJpbmcodmFsKSE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGZpZWxkIGluIGl0ZW0uJGluZmllbGRzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoRmllbGRzID0gc2V0SW5saW5lRmllbGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aEZpZWxkcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlU3RyaW5nKGl0ZW0uJGluZmllbGRzW2ZpZWxkXT8udmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhGaWVsZHMgPSBzZXRJbmxpbmVGaWVsZChpdGVtLiR0ZXh0LCBpZmllbGQua2V5LCBkYXRlU3RyaW5nKHZhbCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXdyaXRlVGFzayhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcC52YXVsdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcmUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbSBpbnN0YW5jZW9mIE1hcmtkb3duVGFza0l0ZW0gPyBpdGVtLiRzdGF0dXMgOiBcIiBcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhGaWVsZHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgW2l0ZW0uJGluZmllbGRzXVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmIChpZmllbGQua2V5ID09IHNldHRpbmdzLnRhc2tDb21wbGV0aW9uVGV4dCkge1xuICAgICAgICAgICAgICAgICAgICAvL0B0cy1pZ25vcmUgaHVoP1xuICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZWRSZWYuY3VycmVudCA9IGRpc3BhdGNoO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICA8RWRpdGFibGVMaXN0RmllbGRcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPXtzdGF0ZTJ9XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaD17ZGlzcGF0Y2h9XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPXtpZmllbGQudHlwZSB8fCBMaXRlcmFscy53cmFwVmFsdWUoZmllbGRWYWx1ZSkhLnR5cGV9XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxlPXtpdGVtLiRmaWxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ9e2l0ZW0uJGluZmllbGRzW2lmaWVsZC5rZXldIHx8IGRlZkZpZWxkfVxuICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnPXtpZmllbGQuY29uZmlnfVxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50PXtpdGVtfVxuICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlcj17c3RhdGUyLnVwZGF0ZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17ZmllbGRWYWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlckFzPXtpZmllbGQucmVuZGVyQXN9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pfVxuICAgICAgICA8Lz5cbiAgICApO1xufVxuXG5mdW5jdGlvbiB1c2VMaXN0SXRlbUVkaXRpbmcoaXRlbTogTWFya2Rvd25UYXNrSXRlbSB8IE1hcmtkb3duTGlzdEl0ZW0pIHtcbiAgICBjb25zdCBhcHAgPSB1c2VDb250ZXh0KEFQUF9DT05URVhUKTtcbiAgICBjb25zdCBjb3JlID0gdXNlQ29udGV4dChEQVRBQ09SRV9DT05URVhUKTtcbiAgICBjb25zdCBzdGF0dXMgPSB1c2VNZW1vKCgpID0+IChpdGVtIGluc3RhbmNlb2YgTWFya2Rvd25UYXNrSXRlbSA/IGl0ZW0uJHN0YXR1cyA6IFwiIFwiKSwgW2l0ZW1dKTtcbiAgICByZXR1cm4gdXNlU3RhYmxlQ2FsbGJhY2soXG4gICAgICAgIGFzeW5jICh2YWw6IExpdGVyYWwpID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgbGV0IHdpdGhGaWVsZHMgPSBgJHt2YWx9JHtPYmplY3Qua2V5cyhpdGVtLiRpbmZpZWxkcykubGVuZ3RoID8gXCIgXCIgOiBcIlwifWA7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgZmllbGQgaW4gaXRlbS4kaW5maWVsZHMpIHtcbiAgICAgICAgICAgICAgICAgICAgd2l0aEZpZWxkcyA9IHNldElubGluZUZpZWxkKHdpdGhGaWVsZHMsIGZpZWxkLCBpdGVtLiRpbmZpZWxkc1tmaWVsZF0ucmF3KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYXdhaXQgcmV3cml0ZVRhc2soYXBwLnZhdWx0LCBjb3JlLCBpdGVtLCBzdGF0dXMsIHdpdGhGaWVsZHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBbc3RhdHVzLCBpdGVtXVxuICAgICk7XG59XG4iLCAiLyoqXG4gKiBAbW9kdWxlIHVpXG4gKi9cbmltcG9ydCBcIi4vcGFnaW5nLmNzc1wiO1xuXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlQ29udGV4dCwgdXNlTWVtbywgdXNlU3RhdGUgfSBmcm9tIFwicHJlYWN0L2hvb2tzXCI7XG5pbXBvcnQgeyBGcmFnbWVudCwgUmVmT2JqZWN0IH0gZnJvbSBcInByZWFjdFwiO1xuaW1wb3J0IFJlYWN0IGZyb20gXCJwcmVhY3QvY29tcGF0XCI7XG5pbXBvcnQgeyBTRVRUSU5HU19DT05URVhUIH0gZnJvbSBcInVpL21hcmtkb3duXCI7XG5cbi8qKiAwLWluZGV4ZWQgcGFnZSBjb250cm9sLiBgcGFnZWAgc2hvdWxkIGJlIHRoZSBjdXJyZW50IDAtaW5kZXhlZCBwYWdlLCB3aGlsZSBgdG90YWxQYWdlc2AgaXMgdGhlIHRvdGFsIG51bWJlciBvZiBwYWdlcy5cbiAqIEBncm91cCBDb21wb25lbnRzXG4gKiBAcGFyYW0gcHJvcHNcbiAqL1xuZnVuY3Rpb24gUmF3Q29udHJvbGxlZFBhZ2VyKHtcbiAgICBwYWdlLFxuICAgIHNldFBhZ2UsXG4gICAgdG90YWxQYWdlcyxcbn06IHtcbiAgICBwYWdlOiBudW1iZXI7XG4gICAgc2V0UGFnZTogKHBhZ2U6IG51bWJlcikgPT4gdm9pZDtcbiAgICB0b3RhbFBhZ2VzOiBudW1iZXI7XG59KSB7XG4gICAgLy8gQ2xhbXAgcGFnZSB0byBiZSB3aXRoaW4gdGhlIGFjdHVhbCBib3VuZHMgb2YgcGFnZXMuXG4gICAgdG90YWxQYWdlcyA9IE1hdGgubWF4KDEsIHRvdGFsUGFnZXMpO1xuXG4gICAgY29uc3QgcmVhbFBhZ2UgPSBjbGFtcChwYWdlLCAwLCB0b3RhbFBhZ2VzIC0gMSk7XG4gICAgY29uc3QgdmlzaWJsZVBhZ2VzID0gdXNlTWVtbygoKSA9PiBzcGxpdFBhZ2VzKHJlYWxQYWdlLCB0b3RhbFBhZ2VzKSwgW3JlYWxQYWdlLCB0b3RhbFBhZ2VzXSk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRjLXBhZ2luZy1jb250cm9sXCI+XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJkYy1wYWdpbmctY29udHJvbC1wYWdlXCJcbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gcGFnZSAhPSAwICYmIHNldFBhZ2UocGFnZSAtIDEpfVxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17cGFnZSA9PSAwfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzYWJsZT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjFlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwicHJlc2VudGF0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxZW1cIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTUuNSAxOWwtNy03IDctN1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS41XCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L3BhdGg+XG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAge3Zpc2libGVQYWdlcy5tYXAoKHBhZ2VzLCBpKSA9PiAoXG4gICAgICAgICAgICAgICAgPEZyYWdtZW50PlxuICAgICAgICAgICAgICAgICAgICB7aSA+IDAgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImRjLXBhZ2luZy1jb250cm9sLXBhZ2UgZGMtcGFnaW5nLWNvbnRyb2wtc2VwYXJhdG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRQYWdlKHJlYWxQYWdlICsgKGlzTGVmdFNlcGVyYXRvcihyZWFsUGFnZSwgdmlzaWJsZVBhZ2VzLmxlbmd0aCwgaSkgPyAtNSA6IDUpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMWVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUtcmVuZGVyaW5nPVwiZ2VvbWV0cmljUHJlY2lzaW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS41XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMWVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYy1wYWdpbmctY29udHJvbC1lbGxpcHNpc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiMTJcIiBjeT1cIjEyXCIgZmlsbD1cImN1cnJlbnRDb2xvclwiIHI9XCIxXCI+PC9jaXJjbGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCIxOVwiIGN5PVwiMTJcIiBmaWxsPVwiY3VycmVudENvbG9yXCIgcj1cIjFcIj48L2NpcmNsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjVcIiBjeT1cIjEyXCIgZmlsbD1cImN1cnJlbnRDb2xvclwiIHI9XCIxXCI+PC9jaXJjbGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzYWJsZT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMWVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cInByZXNlbnRhdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlLXJlbmRlcmluZz1cImdlb21ldHJpY1ByZWNpc2lvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjFlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPXtgZGMtcGFnaW5nLWNvbnRyb2wtbGVhcC0ke1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMZWZ0U2VwZXJhdG9yKHJlYWxQYWdlLCB2aXNpYmxlUGFnZXMubGVuZ3RoLCBpKSA/IFwibGVmdFwiIDogXCJyaWdodFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMyAxN2w1LTUtNS01XCI+PC9wYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTYgMTdsNS01LTUtNVwiPjwvcGF0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICB7cGFnZXMubWFwKChwKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgZGMtcGFnaW5nLWNvbnRyb2wtcGFnZSAke1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID09PSByZWFsUGFnZSA/IFwiIGRjLXBhZ2luZy1jb250cm9sLXBhZ2UtYWN0aXZlXCIgOiBcIlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KGV2ZW50OiBhbnkpID0+IHNldFBhZ2UocCl9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3AgKyAxfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgIDwvRnJhZ21lbnQ+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImRjLXBhZ2luZy1jb250cm9sLXBhZ2VcIlxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBwYWdlICE9PSB0b3RhbFBhZ2VzIC0gMSAmJiBzZXRQYWdlKHBhZ2UgKyAxKX1cbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e3BhZ2UgPT09IHRvdGFsUGFnZXMgLSAxfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzYWJsZT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjFlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwicHJlc2VudGF0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxZW1cIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC41IDVsNyA3LTcgN1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS41XCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L3BhdGg+XG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICApO1xufVxuXG4vKiogMC1pbmRleGVkIHBhZ2UgY29udHJvbC4gYHBhZ2VgIHNob3VsZCBiZSB0aGUgY3VycmVudCAwLWluZGV4ZWQgcGFlZywgd2hpbGUgYG1heFBhZ2VgIGlzIHRoZSBtYXhpbXVtIHBhZ2UgKGluY2x1c2l2ZSkuICovXG5leHBvcnQgY29uc3QgQ29udHJvbGxlZFBhZ2VyID0gUmVhY3QubWVtbyhSYXdDb250cm9sbGVkUGFnZXIpO1xuXG4vKiogSG9vayB3aGljaCBwcm92aWRlcyBhdXRvbWF0aWMgcGFnZSByZWZsb3cgYW5kIHBhZ2Ugc3RhdGUgbWFuYWdlbWVudC5cbiAqIEBncm91cCBIb29rc1xuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlUGFnaW5nKHtcbiAgICBpbml0aWFsUGFnZSA9IDAsXG4gICAgcGFnZVNpemUsXG4gICAgZWxlbWVudHMsXG59OiB7XG4gICAgaW5pdGlhbFBhZ2U6IG51bWJlcjtcbiAgICBwYWdlU2l6ZTogbnVtYmVyO1xuICAgIGVsZW1lbnRzOiBudW1iZXI7XG59KTogW251bWJlciwgbnVtYmVyLCAocGFnZTogbnVtYmVyKSA9PiB2b2lkXSB7XG4gICAgLy8gV2UgdHJhY2sgdGhlIHN0YXJ0IGluZGV4IG9mIHRoZSBwYWdlIHNvIHRoYXQgd2hlbiBwYWdlIHNpemUgY2hhbmdlcyB3ZSBjYW4ganVzdCBhdXRvbWF0aWNhbGx5IHJlY29tcHV0ZSB0aGUgcGFnZSB3ZSBhcmUgb24gd2l0aG91dCBhbnkgc3RhdGUuXG4gICAgY29uc3QgdG90YWxQYWdlcyA9IE1hdGgubWF4KDEsIE1hdGguY2VpbChlbGVtZW50cyAvIHBhZ2VTaXplKSk7XG4gICAgY29uc3QgW3BhZ2VTdGFydCwgc2V0UGFnZVN0YXJ0XSA9IHVzZVN0YXRlKCgpID0+IGNsYW1wKGluaXRpYWxQYWdlLCAwLCB0b3RhbFBhZ2VzIC0gMSkpO1xuXG4gICAgY29uc3Qgc2V0Qm91bmRlZFBhZ2UgPSB1c2VDYWxsYmFjayhcbiAgICAgICAgKHBhZ2U6IG51bWJlcikgPT4gc2V0UGFnZVN0YXJ0KGNsYW1wKHBhZ2UsIDAsIHRvdGFsUGFnZXMgLSAxKSAqIHBhZ2VTaXplKSxcbiAgICAgICAgW3BhZ2VTaXplLCB0b3RhbFBhZ2VzXVxuICAgICk7XG5cbiAgICBjb25zdCBwYWdlID0gY2xhbXAoTWF0aC5mbG9vcihwYWdlU3RhcnQgLyBwYWdlU2l6ZSksIDAsIHRvdGFsUGFnZXMgLSAxKTtcbiAgICByZXR1cm4gW3BhZ2UsIHRvdGFsUGFnZXMsIHNldEJvdW5kZWRQYWdlXTtcbn1cblxuLyoqIFByb3ZpZGVzIHVzZWZ1bCBtZXRhZGF0YSBhYm91dCBwYWdpbmcuXG4gKiBAZ3JvdXAgUHJvcHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYWdpbmcge1xuICAgIC8qKiBXaGV0aGVyIHBhZ2luZyBpcyBlbmFibGVkLiAqL1xuICAgIGVuYWJsZWQ6IGJvb2xlYW47XG4gICAgLyoqIFdoZXRoZXIgdGhlIHZpZXcgc2hvdWxkIHNjcm9sbCB3aGVuIHRoZSBwYWdlIGNoYW5nZXMuICovXG4gICAgc2Nyb2xsOiBib29sZWFuO1xuICAgIC8qKiBUaGUgY3VycmVudCBwYWdlLiAqL1xuICAgIHBhZ2U6IG51bWJlcjtcbiAgICAvKiogVGhlIHNpemUgb2YgZWFjaCBwYWdlLiAqL1xuICAgIHBhZ2VTaXplOiBudW1iZXI7XG4gICAgLyoqIFRoZSB0b3RhbCBudW1iZXIgb2YgcGFnZXMgZm9yIHRoaXMgZGF0YS4gKi9cbiAgICB0b3RhbFBhZ2VzOiBudW1iZXI7XG4gICAgLyoqIFVwZGF0ZSB0aGUgY3VycmVudCBwYWdlLiAqL1xuICAgIHNldFBhZ2U6IChwYWdlOiBudW1iZXIpID0+IHZvaWQ7XG59XG5cbi8qKlxuICogQ2VudHJhbCBwYWdpbmcgaG9vayB3aGljaCBleHRyYWN0cyBwYWdlIG1ldGFkYXRhIG91dCBvZiBEYXRhY29yZSBzZXR0aW5ncywgaGFuZGxlcyBwYWdlIG92ZXJmbG93LCBjdXJyZW50IHBhZ2Ugc3RhdGUsIGFuZCB1cGRhdGluZyB0aGUgcGFnZVxuICogaWYgdGhlIGVsZW1lbnRzIGNoYW5nZS4gSWYgYSBjb250YWluZXIgaXMgc3BlY2lmaWVkLCBhbHNvIHN1cHBvcnRzIHNjcm9sbGluZyB0aGUgY29udGFpbmVyIHZpZXcgb24gcGFnZSBjaGFuZ2VzLlxuICogQGdyb3VwIEhvb2tzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VEYXRhY29yZVBhZ2luZyh7XG4gICAgaW5pdGlhbFBhZ2UgPSAwLFxuICAgIHBhZ2luZyxcbiAgICBzY3JvbGxPblBhZ2VDaGFuZ2UsXG4gICAgZWxlbWVudHMsXG4gICAgY29udGFpbmVyLFxufToge1xuICAgIGluaXRpYWxQYWdlOiBudW1iZXI7XG4gICAgcGFnaW5nOiBudW1iZXIgfCBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAgIHNjcm9sbE9uUGFnZUNoYW5nZT86IGJvb2xlYW4gfCBudW1iZXI7XG4gICAgZWxlbWVudHM6IG51bWJlcjtcbiAgICBjb250YWluZXI/OiBSZWZPYmplY3Q8SFRNTEVsZW1lbnQ+O1xufSk6IFBhZ2luZyB7XG4gICAgY29uc3Qgc2V0dGluZ3MgPSB1c2VDb250ZXh0KFNFVFRJTkdTX0NPTlRFWFQpO1xuXG4gICAgY29uc3QgcGFnZVNpemUgPSB0eXBlb2YgcGFnaW5nID09PSBcIm51bWJlclwiID8gcGFnaW5nIDogc2V0dGluZ3MuZGVmYXVsdFBhZ2VTaXplO1xuICAgIGNvbnN0IHBhZ2luZ0VuYWJsZWQgPSB0eXBlb2YgcGFnaW5nID09PSBcIm51bWJlclwiIHx8IHBhZ2luZyA9PT0gdHJ1ZTtcbiAgICBjb25zdCBzaG91bGRTY3JvbGwgPVxuICAgICAgICAodHlwZW9mIHNjcm9sbE9uUGFnZUNoYW5nZSA9PT0gXCJudW1iZXJcIiAmJiBzY3JvbGxPblBhZ2VDaGFuZ2UgPj0gcGFnZVNpemUpIHx8XG4gICAgICAgICEhKHNjcm9sbE9uUGFnZUNoYW5nZSA/PyBzZXR0aW5ncy5zY3JvbGxPblBhZ2VDaGFuZ2UpO1xuXG4gICAgY29uc3QgW3BhZ2UsIHRvdGFsUGFnZXMsIHJhd1NldFBhZ2VdID0gdXNlUGFnaW5nKHsgaW5pdGlhbFBhZ2UsIHBhZ2VTaXplLCBlbGVtZW50cyB9KTtcblxuICAgIC8vIEhhbmRsZSBhdXRvLXNjcm9sbCBpZiBhIGNvbnRhaW5lciBpcyBwcm92aWRlZC5cbiAgICBjb25zdCBzZXRQYWdlID0gdXNlQ2FsbGJhY2soXG4gICAgICAgIChuZXdQYWdlOiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgIGlmIChwYWdlICE9IG5ld1BhZ2UgJiYgY29udGFpbmVyICYmIHNob3VsZFNjcm9sbCkge1xuICAgICAgICAgICAgICAgIGNvbnRhaW5lci5jdXJyZW50Py5zY3JvbGxJbnRvVmlldyh7XG4gICAgICAgICAgICAgICAgICAgIGJlaGF2aW9yOiBcInNtb290aFwiLFxuICAgICAgICAgICAgICAgICAgICBibG9jazogXCJzdGFydFwiLFxuICAgICAgICAgICAgICAgICAgICBpbmxpbmU6IFwibmVhcmVzdFwiLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByYXdTZXRQYWdlKG5ld1BhZ2UpO1xuICAgICAgICB9LFxuICAgICAgICBbcGFnZSwgY29udGFpbmVyLCBzaG91bGRTY3JvbGwsIHJhd1NldFBhZ2VdXG4gICAgKTtcblxuICAgIHJldHVybiB7IGVuYWJsZWQ6IHBhZ2luZ0VuYWJsZWQsIHNjcm9sbDogc2hvdWxkU2Nyb2xsLCBwYWdlLCBwYWdlU2l6ZSwgdG90YWxQYWdlcywgc2V0UGFnZSB9O1xufVxuXG4vKipcbiAqIEBoaWRkZW5cbiAqL1xuZnVuY3Rpb24gY2xhbXAoaW5wdXQ6IG51bWJlciwgbWluOiBudW1iZXIsIG1heDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBpZiAoaW5wdXQgPCBtaW4pIHJldHVybiBtaW47XG4gICAgaWYgKGlucHV0ID4gbWF4KSByZXR1cm4gbWF4O1xuICAgIHJldHVybiBpbnB1dDtcbn1cblxuLyoqIFV0aWxpdHkgZnVuY3Rpb24gZm9yIGZpbmRpbmcgdGhlIHNwZWNpZmljIHBhZ2UgbnVtYmVycyB0byByZW5kZXIuIEFsd2F5cyBhaW1zIHRvIHJlbmRlciA5IG9yIDEwIHBhZ2UgbnVtYmVycyB3aXRoIGEgc2VwYXJhdG9yLlxuICogQGhpZGRlblxuICovXG5mdW5jdGlvbiBzcGxpdFBhZ2VzKHBhZ2U6IG51bWJlciwgdG90YWxQYWdlczogbnVtYmVyKTogbnVtYmVyW11bXSB7XG4gICAgLy8gSWYgbGVzcyB0aGFuIDEyIHBhZ2VzLCBzaG93IGFsbCBvZiB0aGVtLlxuICAgIGlmICh0b3RhbFBhZ2VzIDwgMTIpIHJldHVybiBbQXJyYXkuZnJvbSh7IGxlbmd0aDogdG90YWxQYWdlcyB9LCAoXywgaSkgPT4gaSldO1xuXG4gICAgLy8gV2UgaGF2ZSBhdCBsZWFzdCAxMiBwYWdlcyAoMCAuLiAxMCBpbmNsdXNpdmUpLiBPdXIgZ29hbCBpcyB0byBoYXZlIDkgdG90YWwgdmlzaWJsZSBlbGVtZW50cywgc28gc3BsaXQgYmFzZWQgb24gdGhhdC5cbiAgICAvLyA1IHN1cnJvdW5kaW5nIHtwYWdlfSwgMCwgMSwgbWF4UGFnZSAtIDEsIG1heFBhZ2UuXG4gICAgaWYgKHBhZ2UgPCA1KVxuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgWzAsIDEsIDIsIDMsIDQsIDUsIDYsIDddLFxuICAgICAgICAgICAgW3RvdGFsUGFnZXMgLSAyLCB0b3RhbFBhZ2VzIC0gMV0sXG4gICAgICAgIF07XG4gICAgZWxzZSBpZiAocGFnZSA+IHRvdGFsUGFnZXMgLSA2KVxuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgWzAsIDFdLFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIHRvdGFsUGFnZXMgLSA4LFxuICAgICAgICAgICAgICAgIHRvdGFsUGFnZXMgLSA3LFxuICAgICAgICAgICAgICAgIHRvdGFsUGFnZXMgLSA2LFxuICAgICAgICAgICAgICAgIHRvdGFsUGFnZXMgLSA1LFxuICAgICAgICAgICAgICAgIHRvdGFsUGFnZXMgLSA0LFxuICAgICAgICAgICAgICAgIHRvdGFsUGFnZXMgLSAzLFxuICAgICAgICAgICAgICAgIHRvdGFsUGFnZXMgLSAyLFxuICAgICAgICAgICAgICAgIHRvdGFsUGFnZXMgLSAxLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgXTtcbiAgICBlbHNlXG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBbMCwgMV0sXG4gICAgICAgICAgICBbcGFnZSAtIDIsIHBhZ2UgLSAxLCBwYWdlLCBwYWdlICsgMSwgcGFnZSArIDJdLFxuICAgICAgICAgICAgW3RvdGFsUGFnZXMgLSAyLCB0b3RhbFBhZ2VzIC0gMV0sXG4gICAgICAgIF07XG59XG4vKipcbiAqIEBoaWRkZW5cbiAqL1xuZnVuY3Rpb24gaXNMZWZ0U2VwZXJhdG9yKHJlYWxQYWdlOiBudW1iZXIsIHZpc2libGVQYWdlc0xlbmd0aDogbnVtYmVyLCBzZXBlcmF0b3JJbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgLy8gSWYgd2UgaGF2ZSAyIHZpc2libGUgcGFnZXMsIHdlIGNhbiBkZXRlcm1pbmUgc2VwZXJhdG9yIGlzIGNsaWNrZWQgYnkgcmVhbFBhZ2UuXG4gICAgLy8gSWYgd2UgaGF2ZSAzIHZpc2libGUgcGFnZXMsIHdlIGNhbiBkZXRlcm1pbmUgc2VwZXJhdG9yIGlzIGNsaWNrZWQgYnkgaW5kZXguXG4gICAgaWYgKHZpc2libGVQYWdlc0xlbmd0aCA9PT0gMikge1xuICAgICAgICBpZiAocmVhbFBhZ2UgPCA1KSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChzZXBlcmF0b3JJbmRleCA9PT0gMSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCAiY29uc3QgcHJlZml4ID0gXCJmYXNcIjtcbmNvbnN0IGZhMCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICcwJyxcbiAgaWNvbjogWzMyMCwgNTEyLCBbXSwgXCIzMFwiLCBcIk0wIDE5MkMwIDEwMy42IDcxLjYgMzIgMTYwIDMyczE2MCA3MS42IDE2MCAxNjBsMCAxMjhjMCA4OC40LTcxLjYgMTYwLTE2MCAxNjBTMCA0MDguNCAwIDMyMEwwIDE5MnpNMTYwIDk2Yy01MyAwLTk2IDQzLTk2IDk2bDAgMTI4YzAgNTMgNDMgOTYgOTYgOTZzOTYtNDMgOTYtOTZsMC0xMjhjMC01My00My05Ni05Ni05NnpcIl1cbn07XG5jb25zdCBmYTEgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnMScsXG4gIGljb246IFsyNTYsIDUxMiwgW10sIFwiMzFcIiwgXCJNMTYwIDY0YzAtMTEuOC02LjUtMjIuNi0xNi45LTI4LjJzLTIzLTUtMzIuOCAxLjZsLTk2IDY0Qy0uNSAxMTEuMi00LjQgMTMxIDUuNCAxNDUuOHMyOS43IDE4LjcgNDQuNCA4LjlMOTYgMTIzLjggOTYgNDE2bC02NCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDk2IDAgOTYgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtNjQgMCAwLTM1MnpcIl1cbn07XG5jb25zdCBmYTIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnMicsXG4gIGljb246IFszMjAsIDUxMiwgW10sIFwiMzJcIiwgXCJNMTQyLjkgOTZjLTIxLjUgMC00Mi4yIDguNS01Ny40IDIzLjhMNTQuNiAxNTAuNmMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBzLTEyLjUtMzIuOCAwLTQ1LjNMNDAuMiA3NC41QzY3LjUgNDcuMyAxMDQuNCAzMiAxNDIuOSAzMkMyMjMgMzIgMjg4IDk3IDI4OCAxNzcuMWMwIDM4LjUtMTUuMyA3NS40LTQyLjUgMTAyLjZMMTA5LjMgNDE2IDI4OCA0MTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJMMzIgNDgwYy0xMi45IDAtMjQuNi03LjgtMjkuNi0xOS44cy0yLjItMjUuNyA2LjktMzQuOUwyMDAuMiAyMzQuNWMxNS4yLTE1LjIgMjMuOC0zNS45IDIzLjgtNTcuNGMwLTQ0LjgtMzYuMy04MS4xLTgxLjEtODEuMXpcIl1cbn07XG5jb25zdCBmYTMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnMycsXG4gIGljb246IFszMjAsIDUxMiwgW10sIFwiMzNcIiwgXCJNMCA2NEMwIDQ2LjMgMTQuMyAzMiAzMiAzMmwyNDAgMGMxMy4yIDAgMjUgOC4xIDI5LjggMjAuNHMxLjUgMjYuMy04LjIgMzUuMkwxNjIuMyAyMDhsMjEuNyAwYzc1LjEgMCAxMzYgNjAuOSAxMzYgMTM2cy02MC45IDEzNi0xMzYgMTM2bC03OC42IDBDNjMgNDgwIDI0LjIgNDU2IDUuMyA0MTguMWwtMS45LTMuOGMtNy45LTE1LjgtMS41LTM1IDE0LjMtNDIuOXMzNS0xLjUgNDIuOSAxNC4zbDEuOSAzLjhjOC4xIDE2LjMgMjQuOCAyNi41IDQyLjkgMjYuNWw3OC42IDBjMzkuOCAwIDcyLTMyLjIgNzItNzJzLTMyLjItNzItNzItNzJMODAgMjcyYy0xMy4yIDAtMjUtOC4xLTI5LjgtMjAuNHMtMS41LTI2LjMgOC4yLTM1LjJMMTg5LjcgOTYgMzIgOTZDMTQuMyA5NiAwIDgxLjcgMCA2NHpcIl1cbn07XG5jb25zdCBmYTQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnNCcsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiMzRcIiwgXCJNMTg5IDc3LjZjNy41LTE2IC43LTM1LjEtMTUuMy00Mi42cy0zNS4xLS43LTQyLjYgMTUuM0wzIDMyMi40Yy00LjcgOS45LTMuOSAyMS41IDEuOSAzMC44UzIxIDM2OCAzMiAzNjhsMjI0IDAgMCA4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtODAgMzIgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtMzIgMCAwLTE0NGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMmwwIDE0NEw4Mi40IDMwNCAxODkgNzcuNnpcIl1cbn07XG5jb25zdCBmYTUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnNScsXG4gIGljb246IFszMjAsIDUxMiwgW10sIFwiMzVcIiwgXCJNMzIuNSA1OC4zQzM1LjMgNDMuMSA0OC41IDMyIDY0IDMybDE5MiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyTDkwLjcgOTYgNzAuMyAyMDggMTg0IDIwOGM3NS4xIDAgMTM2IDYwLjkgMTM2IDEzNnMtNjAuOSAxMzYtMTM2IDEzNmwtODMuNSAwYy0zOS40IDAtNzUuNC0yMi4zLTkzLTU3LjVsLTQuMS04LjJjLTcuOS0xNS44LTEuNS0zNSAxNC4zLTQyLjlzMzUtMS41IDQyLjkgMTQuM2w0LjEgOC4yYzYuOCAxMy42IDIwLjYgMjIuMSAzNS44IDIyLjFsODMuNSAwYzM5LjggMCA3Mi0zMi4yIDcyLTcycy0zMi4yLTcyLTcyLTcyTDMyIDI3MmMtOS41IDAtMTguNS00LjItMjQuNi0xMS41cy04LjYtMTYuOS02LjktMjYuMmwzMi0xNzZ6XCJdXG59O1xuY29uc3QgZmE2ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJzYnLFxuICBpY29uOiBbMzIwLCA1MTIsIFtdLCBcIjM2XCIsIFwiTTIzMi40IDg0LjdjMTEuNC0xMy41IDkuNy0zMy43LTMuOC00NS4xcy0zMy43LTkuNy00NS4xIDMuOEwzOC42IDIxNC43QzE0LjcgMjQyLjkgMS4xIDI3OC40IC4xIDMxNS4yYzAgMS40LS4xIDIuOS0uMSA0LjNsMCAuNWMwIDg4LjQgNzEuNiAxNjAgMTYwIDE2MHMxNjAtNzEuNiAxNjAtMTYwYzAtODUuNS02Ny4xLTE1NS40LTE1MS41LTE1OS44bDYzLjktNzUuNnpNMjU2IDMyMEE5NiA5NiAwIDEgMSA2NCAzMjBhOTYgOTYgMCAxIDEgMTkyIDB6XCJdXG59O1xuY29uc3QgZmE3ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJzcnLFxuICBpY29uOiBbMzIwLCA1MTIsIFtdLCBcIjM3XCIsIFwiTTAgNjRDMCA0Ni4zIDE0LjMgMzIgMzIgMzJsMjU2IDBjMTEuNSAwIDIyIDYuMSAyNy43IDE2LjFzNS43IDIyLjItLjEgMzIuMWwtMjI0IDM4NGMtOC45IDE1LjMtMjguNSAyMC40LTQzLjggMTEuNXMtMjAuNC0yOC41LTExLjUtNDMuOEwyMzIuMyA5NiAzMiA5NkMxNC4zIDk2IDAgODEuNyAwIDY0elwiXVxufTtcbmNvbnN0IGZhOCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICc4JyxcbiAgaWNvbjogWzMyMCwgNTEyLCBbXSwgXCIzOFwiLCBcIk0zMDQgMTYwYzAtNzAuNy01Ny4zLTEyOC0xMjgtMTI4bC0zMiAwQzczLjMgMzIgMTYgODkuMyAxNiAxNjBjMCAzNC42IDEzLjcgNjYgMzYgODlDMjAuNSAyNzIuMyAwIDMwOS44IDAgMzUyYzAgNzAuNyA1Ny4zIDEyOCAxMjggMTI4bDY0IDBjNzAuNyAwIDEyOC01Ny4zIDEyOC0xMjhjMC00Mi4yLTIwLjUtNzkuNy01Mi0xMDNjMjIuMy0yMyAzNi01NC40IDM2LTg5ek0xNzYuMSAyODhsMTUuOSAwYzM1LjMgMCA2NCAyOC43IDY0IDY0cy0yOC43IDY0LTY0IDY0bC02NCAwYy0zNS4zIDAtNjQtMjguNy02NC02NHMyOC43LTY0IDY0LTY0bDE1LjkgMGMwIDAgLjEgMCAuMSAwbDMyIDBjMCAwIC4xIDAgLjEgMHptMC02NGMwIDAgMCAwIDAgMGwtMzIgMGMwIDAgMCAwIDAgMGMtMzUuMyAwLTY0LTI4LjctNjQtNjRjMC0zNS4zIDI4LjctNjQgNjQtNjRsMzIgMGMzNS4zIDAgNjQgMjguNyA2NCA2NGMwIDM1LjMtMjguNiA2NC02NCA2NHpcIl1cbn07XG5jb25zdCBmYTkgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnOScsXG4gIGljb246IFszMjAsIDUxMiwgW10sIFwiMzlcIiwgXCJNNjQgMTkyYTk2IDk2IDAgMSAwIDE5MiAwQTk2IDk2IDAgMSAwIDY0IDE5MnptODcuNSAxNTkuOEM2Ny4xIDM0Ny40IDAgMjc3LjUgMCAxOTJDMCAxMDMuNiA3MS42IDMyIDE2MCAzMnMxNjAgNzEuNiAxNjAgMTYwYzAgMi42LS4xIDUuMy0uMiA3LjljLTEuNyAzNS43LTE1LjIgNzAtMzguNCA5Ny40bC0xNDUgMTcxLjRjLTExLjQgMTMuNS0zMS42IDE1LjItNDUuMSAzLjhzLTE1LjItMzEuNi0zLjgtNDUuMWw2My45LTc1LjZ6XCJdXG59O1xuY29uc3QgZmFGaWxsRHJpcCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmaWxsLWRyaXAnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImY1NzZcIiwgXCJNNDEuNCA5LjRDNTMuOS0zLjEgNzQuMS0zLjEgODYuNiA5LjRMMTY4IDkwLjdsNTMuMS01My4xYzI4LjEtMjguMSA3My43LTI4LjEgMTAxLjggMEw0NzQuMyAxODkuMWMyOC4xIDI4LjEgMjguMSA3My43IDAgMTAxLjhMMjgzLjkgNDgxLjRjLTM3LjUgMzcuNS05OC4zIDM3LjUtMTM1LjggMEwzMC42IDM2My45Yy0zNy41LTM3LjUtMzcuNS05OC4zIDAtMTM1LjhMMTIyLjcgMTM2IDQxLjQgNTQuNmMtMTIuNS0xMi41LTEyLjUtMzIuOCAwLTQ1LjN6bTE3NiAyMjEuM0wxNjggMTgxLjMgNzUuOSAyNzMuNGMtNC4yIDQuMi03IDkuMy04LjQgMTQuNmwzMTkuMiAwIDQyLjMtNDIuM2MzLjEtMy4xIDMuMS04LjIgMC0xMS4zTDI3Ny43IDgyLjljLTMuMS0zLjEtOC4yLTMuMS0xMS4zIDBMMjEzLjMgMTM2bDQ5LjQgNDkuNGMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM3MtMzIuOCAxMi41LTQ1LjMgMHpNNTEyIDUxMmMtMzUuMyAwLTY0LTI4LjctNjQtNjRjMC0yNS4yIDMyLjYtNzkuNiA1MS4yLTEwOC43YzYtOS40IDE5LjUtOS40IDI1LjUgMEM1NDMuNCAzNjguNCA1NzYgNDIyLjggNTc2IDQ0OGMwIDM1LjMtMjguNyA2NC02NCA2NHpcIl1cbn07XG5jb25zdCBmYUFycm93c1RvQ2lyY2xlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Fycm93cy10by1jaXJjbGUnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU0YmRcIiwgXCJNOS40IDkuNEMyMS45LTMuMSA0Mi4xLTMuMSA1NC42IDkuNEwxNjAgMTE0LjcgMTYwIDk2YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJsMCA5NmMwIDQuMy0uOSA4LjUtMi40IDEyLjJjLTEuNiAzLjctMy44IDcuMy02LjkgMTAuM2wtLjEgLjFjLTMuMSAzLTYuNiA1LjMtMTAuMyA2LjljLTMuOCAxLjYtNy45IDIuNC0xMi4yIDIuNGwtOTYgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmwxOC43IDBMOS40IDU0LjZDLTMuMSA0Mi4xLTMuMSAyMS45IDkuNCA5LjR6TTI1NiAyNTZhNjQgNjQgMCAxIDEgMTI4IDAgNjQgNjQgMCAxIDEgLTEyOCAwek0xMTQuNyAzNTJMOTYgMzUyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDk2IDBzMCAwIDAgMGwuMSAwYzguOCAwIDE2LjcgMy42IDIyLjUgOS4zbC4xIC4xYzMgMy4xIDUuMyA2LjYgNi45IDEwLjNjMS42IDMuOCAyLjQgNy45IDIuNCAxMi4ybDAgOTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC0xOC43TDU0LjYgNTAyLjZjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwcy0xMi41LTMyLjggMC00NS4zTDExNC43IDM1MnpNNDE2IDk2YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJsMCAxOC43TDU4NS40IDkuNGMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMHMxMi41IDMyLjggMCA0NS4zTDUyNS4zIDE2MGwxOC43IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTk2IDBjLTguOCAwLTE2LjgtMy42LTIyLjYtOS4zbC0uMS0uMWMtMy0zLjEtNS4zLTYuNi02LjktMTAuM3MtMi40LTcuOC0yLjQtMTIuMmwwLS4xczAgMCAwIDBsMC05NnpNNTI1LjMgMzUyTDYzMC42IDQ1Ny40YzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zcy0zMi44IDEyLjUtNDUuMyAwTDQ4MCAzOTcuM2wwIDE4LjdjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC05NnMwIDAgMCAwbDAtLjFjMC00LjMgLjktOC40IDIuNC0xMi4yYzEuNi0zLjggMy45LTcuMyA2LjktMTAuNGM1LjgtNS44IDEzLjctOS4zIDIyLjUtOS40bC4xIDBzMCAwIDAgMGw5NiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC0xOC43IDB6XCJdXG59O1xuY29uc3QgZmFDaXJjbGVDaGV2cm9uUmlnaHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2lyY2xlLWNoZXZyb24tcmlnaHQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtcImNoZXZyb24tY2lyY2xlLXJpZ2h0XCJdLCBcImYxMzhcIiwgXCJNMCAyNTZhMjU2IDI1NiAwIDEgMCA1MTIgMEEyNTYgMjU2IDAgMSAwIDAgMjU2ek0yNDEgMzc3Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45bDg3LTg3LTg3LTg3Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXMyNC42LTkuNCAzMy45IDBMMzQ1IDIzOWM5LjQgOS40IDkuNCAyNC42IDAgMzMuOUwyNDEgMzc3elwiXVxufTtcbmNvbnN0IGZhQ2hldnJvbkNpcmNsZVJpZ2h0ID0gZmFDaXJjbGVDaGV2cm9uUmlnaHQ7XG5jb25zdCBmYUF0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2F0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbNjE5NDZdLCBcIjQwXCIsIFwiTTI1NiA2NEMxNTAgNjQgNjQgMTUwIDY0IDI1NnM4NiAxOTIgMTkyIDE5MmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkMxMTQuNiA1MTIgMCAzOTcuNCAwIDI1NlMxMTQuNiAwIDI1NiAwUzUxMiAxMTQuNiA1MTIgMjU2bDAgMzJjMCA1My00MyA5Ni05NiA5NmMtMjkuMyAwLTU1LjYtMTMuMi03My4yLTMzLjlDMzIwIDM3MS4xIDI4OS41IDM4NCAyNTYgMzg0Yy03MC43IDAtMTI4LTU3LjMtMTI4LTEyOHM1Ny4zLTEyOCAxMjgtMTI4YzI3LjkgMCA1My43IDguOSA3NC43IDI0LjFjNS43LTUgMTMuMS04LjEgMjEuMy04LjFjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCA4MCAwIDMyYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0zMmMwLTEwNi04Ni0xOTItMTkyLTE5MnptNjQgMTkyYTY0IDY0IDAgMSAwIC0xMjggMCA2NCA2NCAwIDEgMCAxMjggMHpcIl1cbn07XG5jb25zdCBmYVRyYXNoQ2FuID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RyYXNoLWNhbicsXG4gIGljb246IFs0NDgsIDUxMiwgWzYxNDYwLCBcInRyYXNoLWFsdFwiXSwgXCJmMmVkXCIsIFwiTTEzNS4yIDE3LjdDMTQwLjYgNi44IDE1MS43IDAgMTYzLjggMEwyODQuMiAwYzEyLjEgMCAyMy4yIDYuOCAyOC42IDE3LjdMMzIwIDMybDk2IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJMMzIgOTZDMTQuMyA5NiAwIDgxLjcgMCA2NFMxNC4zIDMyIDMyIDMybDk2IDAgNy4yLTE0LjN6TTMyIDEyOGwzODQgMCAwIDMyMGMwIDM1LjMtMjguNyA2NC02NCA2NEw5NiA1MTJjLTM1LjMgMC02NC0yOC43LTY0LTY0bDAtMzIwem05NiA2NGMtOC44IDAtMTYgNy4yLTE2IDE2bDAgMjI0YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZsMC0yMjRjMC04LjgtNy4yLTE2LTE2LTE2em05NiAwYy04LjggMC0xNiA3LjItMTYgMTZsMCAyMjRjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNmwwLTIyNGMwLTguOC03LjItMTYtMTYtMTZ6bTk2IDBjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDIyNGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2bDAtMjI0YzAtOC44LTcuMi0xNi0xNi0xNnpcIl1cbn07XG5jb25zdCBmYVRyYXNoQWx0ID0gZmFUcmFzaENhbjtcbmNvbnN0IGZhVGV4dEhlaWdodCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0ZXh0LWhlaWdodCcsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjAzNFwiLCBcIk02NCAxMjhsMC0zMiA2NCAwIDAgMzIwLTMyIDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsMTI4IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTMyIDAgMC0zMjAgNjQgMCAwIDMyYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC00OGMwLTI2LjUtMjEuNS00OC00OC00OEwxNjAgMzIgNDggMzJDMjEuNSAzMiAwIDUzLjUgMCA4MGwwIDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJ6TTUwMi42IDQxLjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwbC02NCA2NGMtOS4yIDkuMi0xMS45IDIyLjktNi45IDM0LjlzMTYuNiAxOS44IDI5LjYgMTkuOGwzMiAwIDAgMTkyLTMyIDBjLTEyLjkgMC0yNC42IDcuOC0yOS42IDE5LjhzLTIuMiAyNS43IDYuOSAzNC45bDY0IDY0YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDY0LTY0YzkuMi05LjIgMTEuOS0yMi45IDYuOS0zNC45cy0xNi42LTE5LjgtMjkuNi0xOS44bC0zMiAwIDAtMTkyIDMyIDBjMTIuOSAwIDI0LjYtNy44IDI5LjYtMTkuOHMyLjItMjUuNy02LjktMzQuOWwtNjQtNjR6XCJdXG59O1xuY29uc3QgZmFVc2VyWG1hcmsgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndXNlci14bWFyaycsXG4gIGljb246IFs2NDAsIDUxMiwgW1widXNlci10aW1lc1wiXSwgXCJmMjM1XCIsIFwiTTk2IDEyOGExMjggMTI4IDAgMSAxIDI1NiAwQTEyOCAxMjggMCAxIDEgOTYgMTI4ek0wIDQ4Mi4zQzAgMzgzLjggNzkuOCAzMDQgMTc4LjMgMzA0bDkxLjQgMEMzNjguMiAzMDQgNDQ4IDM4My44IDQ0OCA0ODIuM2MwIDE2LjQtMTMuMyAyOS43LTI5LjcgMjkuN0wyOS43IDUxMkMxMy4zIDUxMiAwIDQ5OC43IDAgNDgyLjN6TTQ3MSAxNDNjOS40LTkuNCAyNC42LTkuNCAzMy45IDBsNDcgNDcgNDctNDdjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45bC00NyA0NyA0NyA0N2M5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwbC00Ny00Ny00NyA0N2MtOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOWw0Ny00Ny00Ny00N2MtOS40LTkuNC05LjQtMjQuNiAwLTMzLjl6XCJdXG59O1xuY29uc3QgZmFVc2VyVGltZXMgPSBmYVVzZXJYbWFyaztcbmNvbnN0IGZhU3RldGhvc2NvcGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3RldGhvc2NvcGUnLFxuICBpY29uOiBbNTc2LCA1MTIsIFsxMjk2NThdLCBcImYwZjFcIiwgXCJNMTQyLjQgMjEuOWM1LjYgMTYuOC0zLjUgMzQuOS0yMC4yIDQwLjVMOTYgNzEuMSA5NiAxOTJjMCA1MyA0MyA5NiA5NiA5NnM5Ni00MyA5Ni05NmwwLTEyMC45LTI2LjEtOC43Yy0xNi44LTUuNi0yNS44LTIzLjctMjAuMi00MC41czIzLjctMjUuOCA0MC41LTIwLjJsMjYuMSA4LjdDMzM0LjQgMTkuMSAzNTIgNDMuNSAzNTIgNzEuMUwzNTIgMTkyYzAgNzcuMi01NC42IDE0MS42LTEyNy4zIDE1Ni43QzIzMSA0MDQuNiAyNzguNCA0NDggMzM2IDQ0OGM2MS45IDAgMTEyLTUwLjEgMTEyLTExMmwwLTcwLjdjLTI4LjMtMTIuMy00OC00MC41LTQ4LTczLjNjMC00NC4yIDM1LjgtODAgODAtODBzODAgMzUuOCA4MCA4MGMwIDMyLjgtMTkuNyA2MS00OCA3My4zbDAgNzAuN2MwIDk3LjItNzguOCAxNzYtMTc2IDE3NmMtOTIuOSAwLTE2OC45LTcxLjktMTc1LjUtMTYzLjFDODcuMiAzMzQuMiAzMiAyNjkuNiAzMiAxOTJMMzIgNzEuMWMwLTI3LjUgMTcuNi01MiA0My44LTYwLjdsMjYuMS04LjdjMTYuOC01LjYgMzQuOSAzLjUgNDAuNSAyMC4yek00ODAgMjI0YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpcIl1cbn07XG5jb25zdCBmYU1lc3NhZ2UgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbWVzc2FnZScsXG4gIGljb246IFs1MTIsIDUxMiwgW1wiY29tbWVudC1hbHRcIl0sIFwiZjI3YVwiLCBcIk02NCAwQzI4LjcgMCAwIDI4LjcgMCA2NEwwIDM1MmMwIDM1LjMgMjguNyA2NCA2NCA2NGw5NiAwIDAgODBjMCA2LjEgMy40IDExLjYgOC44IDE0LjNzMTEuOSAyLjEgMTYuOC0xLjVMMzA5LjMgNDE2IDQ0OCA0MTZjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0yODhjMC0zNS4zLTI4LjctNjQtNjQtNjRMNjQgMHpcIl1cbn07XG5jb25zdCBmYUNvbW1lbnRBbHQgPSBmYU1lc3NhZ2U7XG5jb25zdCBmYUluZm8gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaW5mbycsXG4gIGljb246IFsxOTIsIDUxMiwgW10sIFwiZjEyOVwiLCBcIk00OCA4MGE0OCA0OCAwIDEgMSA5NiAwQTQ4IDQ4IDAgMSAxIDQ4IDgwek0wIDIyNGMwLTE3LjcgMTQuMy0zMiAzMi0zMmw2NCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgMjI0IDMyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJMMzIgNTEyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDMyIDAgMC0xOTItMzIgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6XCJdXG59O1xuY29uc3QgZmFEb3duTGVmdEFuZFVwUmlnaHRUb0NlbnRlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdkb3duLWxlZnQtYW5kLXVwLXJpZ2h0LXRvLWNlbnRlcicsXG4gIGljb246IFs1MTIsIDUxMiwgW1wiY29tcHJlc3MtYWx0XCJdLCBcImY0MjJcIiwgXCJNNDM5IDdjOS40LTkuNCAyNC42LTkuNCAzMy45IDBsMzIgMzJjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlsLTg3IDg3IDM5IDM5YzYuOSA2LjkgOC45IDE3LjIgNS4yIDI2LjJzLTEyLjUgMTQuOC0yMi4yIDE0LjhsLTE0NCAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNGwwLTE0NGMwLTkuNyA1LjgtMTguNSAxNC44LTIyLjJzMTkuMy0xLjcgMjYuMiA1LjJsMzkgMzlMNDM5IDd6TTcyIDI3MmwxNDQgMGMxMy4zIDAgMjQgMTAuNyAyNCAyNGwwIDE0NGMwIDkuNy01LjggMTguNS0xNC44IDIyLjJzLTE5LjMgMS43LTI2LjItNS4ybC0zOS0zOUw3MyA1MDVjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwTDcgNDczYy05LjQtOS40LTkuNC0yNC42IDAtMzMuOWw4Ny04N0w1NSAzMTNjLTYuOS02LjktOC45LTE3LjItNS4yLTI2LjJzMTIuNS0xNC44IDIyLjItMTQuOHpcIl1cbn07XG5jb25zdCBmYUNvbXByZXNzQWx0ID0gZmFEb3duTGVmdEFuZFVwUmlnaHRUb0NlbnRlcjtcbmNvbnN0IGZhRXhwbG9zaW9uID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2V4cGxvc2lvbicsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZTRlOVwiLCBcIk00OTkuNiAxMS4zYzYuNy0xMC43IDIwLjUtMTQuNSAzMS43LTguNXMxNS44IDE5LjUgMTAuNiAzMUw0MDQuOCAzMzguNmMyLjIgMi4zIDQuMyA0LjcgNi4zIDcuMWw5Ny4yLTU0LjdjMTAuNS01LjkgMjMuNi0zLjEgMzAuOSA2LjRzNi4zIDIzLTIuMiAzMS41bC04NyA4Ny03MS40IDBjLTEzLjItMzcuMy00OC43LTY0LTkwLjUtNjRzLTc3LjQgMjYuNy05MC41IDY0bC03OS42IDBMNDIuMyAzNjMuN2MtOS43LTYuNy0xMy4xLTE5LjYtNy45LTMwLjNzMTcuNC0xNS45IDI4LjctMTIuNGw5Ny4yIDMwLjRjMy0zLjkgNi4xLTcuNyA5LjQtMTEuM0wxMDcuNCAyMzYuM2MtNi4xLTEwLjEtMy45LTIzLjEgNS4xLTMwLjdzMjIuMi03LjUgMzEuMSAuMUwyNDYgMjkzLjZjMS41LS40IDMtLjggNC41LTEuMWwxMy42LTE0Mi43YzEuMi0xMi4zIDExLjUtMjEuNyAyMy45LTIxLjdzMjIuNyA5LjQgMjMuOSAyMS43bDEzLjUgMTQxLjlMNDk5LjYgMTEuM3pNNjQgNDQ4czAgMCAwIDBsNDQ4IDBzMCAwIDAgMGwzMiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyTDMyIDUxMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmwzMiAwek0yODggMGMxMy4zIDAgMjQgMTAuNyAyNCAyNGwwIDQ4YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0bDAtNDhjMC0xMy4zIDEwLjctMjQgMjQtMjR6XCJdXG59O1xuY29uc3QgZmFGaWxlTGluZXMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmlsZS1saW5lcycsXG4gIGljb246IFszODQsIDUxMiwgWzEyODQ0MSwgMTI4NDYyLCA2MTY4NiwgXCJmaWxlLWFsdFwiLCBcImZpbGUtdGV4dFwiXSwgXCJmMTVjXCIsIFwiTTY0IDBDMjguNyAwIDAgMjguNyAwIDY0TDAgNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0bDI1NiAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMjg4LTEyOCAwYy0xNy43IDAtMzItMTQuMy0zMi0zMkwyMjQgMCA2NCAwek0yNTYgMGwwIDEyOCAxMjggMEwyNTYgMHpNMTEyIDI1NmwxNjAgMGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNmwtMTYwIDBjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6bTAgNjRsMTYwIDBjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZsLTE2MCAwYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2em0wIDY0bDE2MCAwYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2bC0xNjAgMGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnpcIl1cbn07XG5jb25zdCBmYUZpbGVBbHQgPSBmYUZpbGVMaW5lcztcbmNvbnN0IGZhRmlsZVRleHQgPSBmYUZpbGVMaW5lcztcbmNvbnN0IGZhV2F2ZVNxdWFyZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd3YXZlLXNxdWFyZScsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjgzZVwiLCBcIk0xMjggNjRjMC0xNy43IDE0LjMtMzIgMzItMzJsMTYwIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCAzNTIgOTYgMCAwLTE2MGMwLTE3LjcgMTQuMy0zMiAzMi0zMmwxMjggMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtOTYgMCAwIDE2MGMwIDE3LjctMTQuMyAzMi0zMiAzMmwtMTYwIDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtMzUyLTk2IDAgMCAxNjBjMCAxNy43LTE0LjMgMzItMzIgMzJMMzIgMjg4Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDk2IDAgMC0xNjB6XCJdXG59O1xuY29uc3QgZmFSaW5nID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3JpbmcnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY3MGJcIiwgXCJNNjQgMjA4YzAgNy44IDQuNCAxOC43IDE3LjEgMzAuM0MxMjYuNSAyMTQuMSAxODguOSAyMDAgMjU2IDIwMHMxMjkuNSAxNC4xIDE3NC45IDM4LjNDNDQzLjYgMjI2LjcgNDQ4IDIxNS44IDQ0OCAyMDhjMC0xMi4zLTEwLjgtMzItNDcuOS01MC42QzM2NC45IDEzOS44IDMxNCAxMjggMjU2IDEyOHMtMTA4LjkgMTEuOC0xNDQuMSAyOS40Qzc0LjggMTc2IDY0IDE5NS43IDY0IDIwOHptMTkyIDQwYy00NyAwLTg5LjMgNy42LTEyMi45IDE5LjdDMTY2LjMgMjgwLjIgMjA4LjggMjg4IDI1NiAyODhzODkuNy03LjggMTIyLjktMjAuM0MzNDUuMyAyNTUuNiAzMDMgMjQ4IDI1NiAyNDh6TTAgMjA4YzAtNDkuNiAzOS40LTg1LjggODMuMy0xMDcuOEMxMjkuMSA3Ny4zIDE5MC4zIDY0IDI1NiA2NHMxMjYuOSAxMy4zIDE3Mi43IDM2LjJjNDMuOSAyMiA4My4zIDU4LjIgODMuMyAxMDcuOGwwIDk2YzAgNDkuNi0zOS40IDg1LjgtODMuMyAxMDcuOEMzODIuOSA0MzQuNyAzMjEuNyA0NDggMjU2IDQ0OHMtMTI2LjktMTMuMy0xNzIuNy0zNi4yQzM5LjQgMzg5LjggMCAzNTMuNiAwIDMwNGwwLTk2elwiXVxufTtcbmNvbnN0IGZhQnVpbGRpbmdVbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdidWlsZGluZy11bicsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZTRkOVwiLCBcIk00OCAwQzIxLjUgMCAwIDIxLjUgMCA0OEwwIDQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGw5NiAwIDAtODBjMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OGwwIDgwIDk2IDBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhsMC00MTZjMC0yNi41LTIxLjUtNDgtNDgtNDhMNDggMHpNNjQgMjQwYzAtOC44IDcuMi0xNiAxNi0xNmwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDMyYzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzJ6bTExMi0xNmwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDMyYzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzJjMC04LjggNy4yLTE2IDE2LTE2em04MCAxNmMwLTguOCA3LjItMTYgMTYtMTZsMzIgMGM4LjggMCAxNiA3LjIgMTYgMTZsMCAzMmMwIDguOC03LjIgMTYtMTYgMTZsLTMyIDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTMyek0yMzcuMyA3MS4xbDM0LjcgNTJMMjcyIDgwYzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZsMCA5NmMwIDcuMS00LjYgMTMuMy0xMS40IDE1LjNzLTE0LS42LTE3LjktNi40bC0zNC43LTUyIDAgNDMuMmMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNmwwLTk2YzAtNy4xIDQuNi0xMy4zIDExLjQtMTUuM3MxNCAuNiAxNy45IDYuNHpNMTEyIDgwbDAgNjRjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNmwwLTY0YzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZsMCA2NGMwIDI2LjUtMjEuNSA0OC00OCA0OHMtNDgtMjEuNS00OC00OGwwLTY0YzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ6XCJdXG59O1xuY29uc3QgZmFEaWNlVGhyZWUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZGljZS10aHJlZScsXG4gIGljb246IFs0NDgsIDUxMiwgWzk4NThdLCBcImY1MjdcIiwgXCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NkwwIDQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NGwzMjAgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTMyMGMwLTM1LjMtMjguNy02NC02NC02NEw2NCAzMnptNjQgOTZhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0em02NCAxMjhhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMTI4IDY0YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIl1cbn07XG5jb25zdCBmYUNhbGVuZGFyRGF5cyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjYWxlbmRhci1kYXlzJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXCJjYWxlbmRhci1hbHRcIl0sIFwiZjA3M1wiLCBcIk0xMjggMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDMyIDEyOCAwIDAtMzJjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMmwwIDMyIDQ4IDBjMjYuNSAwIDQ4IDIxLjUgNDggNDhsMCA0OEwwIDE2MGwwLTQ4QzAgODUuNSAyMS41IDY0IDQ4IDY0bDQ4IDAgMC0zMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNMCAxOTJsNDQ4IDAgMCAyNzJjMCAyNi41LTIxLjUgNDgtNDggNDhMNDggNTEyYy0yNi41IDAtNDgtMjEuNS00OC00OEwwIDE5MnptNjQgODBsMCAzMmMwIDguOCA3LjIgMTYgMTYgMTZsMzIgMGM4LjggMCAxNi03LjIgMTYtMTZsMC0zMmMwLTguOC03LjItMTYtMTYtMTZsLTMyIDBjLTguOCAwLTE2IDcuMi0xNiAxNnptMTI4IDBsMCAzMmMwIDguOCA3LjIgMTYgMTYgMTZsMzIgMGM4LjggMCAxNi03LjIgMTYtMTZsMC0zMmMwLTguOC03LjItMTYtMTYtMTZsLTMyIDBjLTguOCAwLTE2IDcuMi0xNiAxNnptMTQ0LTE2Yy04LjggMC0xNiA3LjItMTYgMTZsMCAzMmMwIDguOCA3LjIgMTYgMTYgMTZsMzIgMGM4LjggMCAxNi03LjIgMTYtMTZsMC0zMmMwLTguOC03LjItMTYtMTYtMTZsLTMyIDB6TTY0IDQwMGwwIDMyYzAgOC44IDcuMiAxNiAxNiAxNmwzMiAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTMyYzAtOC44LTcuMi0xNi0xNi0xNmwtMzIgMGMtOC44IDAtMTYgNy4yLTE2IDE2em0xNDQtMTZjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDMyYzAgOC44IDcuMiAxNiAxNiAxNmwzMiAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTMyYzAtOC44LTcuMi0xNi0xNi0xNmwtMzIgMHptMTEyIDE2bDAgMzJjMCA4LjggNy4yIDE2IDE2IDE2bDMyIDBjOC44IDAgMTYtNy4yIDE2LTE2bDAtMzJjMC04LjgtNy4yLTE2LTE2LTE2bC0zMiAwYy04LjggMC0xNiA3LjItMTYgMTZ6XCJdXG59O1xuY29uc3QgZmFDYWxlbmRhckFsdCA9IGZhQ2FsZW5kYXJEYXlzO1xuY29uc3QgZmFBbmNob3JDaXJjbGVDaGVjayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhbmNob3ItY2lyY2xlLWNoZWNrJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlNGFhXCIsIFwiTTMyMCA5NmEzMiAzMiAwIDEgMSAtNjQgMCAzMiAzMiAwIDEgMSA2NCAwem0yMS4xIDgwQzM2NyAxNTguOCAzODQgMTI5LjQgMzg0IDk2YzAtNTMtNDMtOTYtOTYtOTZzLTk2IDQzLTk2IDk2YzAgMzMuNCAxNyA2Mi44IDQyLjkgODBMMjI0IDE3NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwzMiAwIDAgMjA4LTQ4IDBjLTUzIDAtOTYtNDMtOTYtOTZsMC02LjEgNyA3YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwczkuNC0yNC42IDAtMzMuOUw5NyAyNjNjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwTDcgMzE5Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOXMyNC42IDkuNCAzMy45IDBsNy03IDAgNi4xYzAgODguNCA3MS42IDE2MCAxNjAgMTYwbDgwIDAgODAgMGM4LjIgMCAxNi4zLS42IDI0LjItMS44Yy0yMi4yLTE2LjItNDAuNC0zNy41LTUzLTYyLjJMMzIwIDQ0OGwwLTgwIDAtMTI4IDMyIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTEwLjkgMHpNNjQwIDM2OGExNDQgMTQ0IDAgMSAwIC0yODggMCAxNDQgMTQ0IDAgMSAwIDI4OCAwem0tNzYuNy00My4zYzYuMiA2LjIgNi4yIDE2LjQgMCAyMi42bC03MiA3MmMtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBsLTQwLTQwYy02LjItNi4yLTYuMi0xNi40IDAtMjIuNnMxNi40LTYuMiAyMi42IDBMNDgwIDM4NS40bDYwLjctNjAuN2M2LjItNi4yIDE2LjQtNi4yIDIyLjYgMHpcIl1cbn07XG5jb25zdCBmYUJ1aWxkaW5nQ2lyY2xlQXJyb3dSaWdodCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdidWlsZGluZy1jaXJjbGUtYXJyb3ctcmlnaHQnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU0ZDFcIiwgXCJNMCA0OEMwIDIxLjUgMjEuNSAwIDQ4IDBMMzM2IDBjMjYuNSAwIDQ4IDIxLjUgNDggNDhsMCAxODQuMmMtMzkuMSAzMi4zLTY0IDgxLjEtNjQgMTM1LjhjMCA0OS41IDIwLjQgOTQuMiA1My4zIDEyNi4yQzM2NC41IDUwNS4xIDM1MS4xIDUxMiAzMzYgNTEybC05NiAwIDAtODBjMC0yNi41LTIxLjUtNDgtNDgtNDhzLTQ4IDIxLjUtNDggNDhsMCA4MC05NiAwYy0yNi41IDAtNDgtMjEuNS00OC00OEwwIDQ4ek04MCAyMjRjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDMyYzAgOC44IDcuMiAxNiAxNiAxNmwzMiAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTMyYzAtOC44LTcuMi0xNi0xNi0xNmwtMzIgMHptODAgMTZsMCAzMmMwIDguOCA3LjIgMTYgMTYgMTZsMzIgMGM4LjggMCAxNi03LjIgMTYtMTZsMC0zMmMwLTguOC03LjItMTYtMTYtMTZsLTMyIDBjLTguOCAwLTE2IDcuMi0xNiAxNnptMTEyLTE2Yy04LjggMC0xNiA3LjItMTYgMTZsMCAzMmMwIDguOCA3LjIgMTYgMTYgMTZsMzIgMGM4LjggMCAxNi03LjIgMTYtMTZsMC0zMmMwLTguOC03LjItMTYtMTYtMTZsLTMyIDB6TTY0IDExMmwwIDMyYzAgOC44IDcuMiAxNiAxNiAxNmwzMiAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTMyYzAtOC44LTcuMi0xNi0xNi0xNkw4MCA5NmMtOC44IDAtMTYgNy4yLTE2IDE2ek0xNzYgOTZjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDMyYzAgOC44IDcuMiAxNiAxNiAxNmwzMiAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTMyYzAtOC44LTcuMi0xNi0xNi0xNmwtMzIgMHptODAgMTZsMCAzMmMwIDguOCA3LjIgMTYgMTYgMTZsMzIgMGM4LjggMCAxNi03LjIgMTYtMTZsMC0zMmMwLTguOC03LjItMTYtMTYtMTZsLTMyIDBjLTguOCAwLTE2IDcuMi0xNiAxNnptOTYgMjU2YTE0NCAxNDQgMCAxIDEgMjg4IDAgMTQ0IDE0NCAwIDEgMSAtMjg4IDB6bTE0MC43LTY3LjNjLTYuMiA2LjItNi4yIDE2LjQgMCAyMi42TDUyMS40IDM1MiA0MzIgMzUyYy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2bDg5LjQgMC0yOC43IDI4LjdjLTYuMiA2LjItNi4yIDE2LjQgMCAyMi42czE2LjQgNi4yIDIyLjYgMGw1Ni01NmM2LjItNi4yIDYuMi0xNi40IDAtMjIuNmwtNTYtNTZjLTYuMi02LjItMTYuNC02LjItMjIuNiAwelwiXVxufTtcbmNvbnN0IGZhVm9sbGV5YmFsbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd2b2xsZXliYWxsJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI3OTUyLCBcInZvbGxleWJhbGwtYmFsbFwiXSwgXCJmNDVmXCIsIFwiTTUxMS44IDI2Ny40Yy0yNi4xIDguNy01My40IDEzLjgtODEgMTUuMWM5LjItMTA1LjMtMzEuNS0yMDQuMi0xMDMuMi0yNzIuNEM0MzQuMSA0MS4xIDUxMiAxMzkuNSA1MTIgMjU2YzAgMy44LS4xIDcuNi0uMiAxMS40em0tMy45IDM0LjdjLTUuOCAzMi0xNy42IDYyLTM0LjIgODguN2MtOTcuNSA0OC41LTIxNy43IDQyLjYtMzExLjktMjQuNWMyMy43LTM2LjIgNTUuNC02Ny43IDk0LjUtOTEuOGM3OS45IDQzLjIgMTcwLjEgNTAuOCAyNTEuNiAyNy42em0tMjM2LTU1LjVjLTIuNS05MC45LTQxLjEtMTcyLjctMTAxLjktMjMxLjdDMTk2LjggNS4yIDIyNS44IDAgMjU2IDBjMi43IDAgNS4zIDAgNy45IC4xYzkwLjggNjAuMiAxNDUuNyAxNjcuMiAxMzQuNyAyODIuM2MtNDMuMS0yLjQtODYuNC0xNC4xLTEyNi44LTM1Ljl6TTEzOCAyOC44YzIwLjYgMTguMyAzOC43IDM5LjQgNTMuNyA2Mi42Qzk1LjkgMTM2LjEgMzAuNiAyMjAuOCA3LjMgMzE2LjlDMi41IDI5Ny40IDAgMjc3IDAgMjU2QzAgMTU3LjIgNTYgNzEuNSAxMzggMjguOHptNjkuNiA5MC41YzE5LjUgMzguNiAzMSA4MS45IDMyLjMgMTI3LjdDMTYyLjUgMjk0LjYgMTEwLjkgMzY4LjkgOTAuMiA0NTFDNjYgNDMwLjQgNDUuNiA0MDUuNCAzMC40IDM3Ny4yYzYuNy0xMDguNyA3MS45LTIwOS45IDE3Ny4xLTI1Ny45ek0yNTYgNTEyYy01MC43IDAtOTgtMTQuNy0xMzcuOC00MC4yYzUuNi0yNyAxNC44LTUzLjEgMjcuNC03Ny43QzIzMi4yIDQ1NC42IDMzOC4xIDQ2OC44IDQzMyA0NDFjLTQ2IDQ0LTEwOC4zIDcxLTE3NyA3MXpcIl1cbn07XG5jb25zdCBmYVZvbGxleWJhbGxCYWxsID0gZmFWb2xsZXliYWxsO1xuY29uc3QgZmFBcnJvd3NVcFRvTGluZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhcnJvd3MtdXAtdG8tbGluZScsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZTRjMlwiLCBcIk0zMiA5Nmw1MTIgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkwzMiAzMkMxNC4zIDMyIDAgNDYuMyAwIDY0UzE0LjMgOTYgMzIgOTZ6TTkuNCAyMzMuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMEw5NiAyMzcuMyA5NiA0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTIxMC43IDQxLjQgNDEuNGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zbC05Ni05NmMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBsLTk2IDk2em0zMjAgNDUuM2MxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMEw0MTYgMjM3LjMgNDE2IDQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMjEwLjcgNDEuNCA0MS40YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNsLTk2LTk2Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMGwtOTYgOTZjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zelwiXVxufTtcbmNvbnN0IGZhU29ydERvd24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc29ydC1kb3duJyxcbiAgaWNvbjogWzMyMCwgNTEyLCBbXCJzb3J0LWRlc2NcIl0sIFwiZjBkZFwiLCBcIk0xODIuNiA0NzAuNmMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBsLTEyOC0xMjhjLTkuMi05LjItMTEuOS0yMi45LTYuOS0zNC45czE2LjYtMTkuOCAyOS42LTE5LjhsMjU2IDBjMTIuOSAwIDI0LjYgNy44IDI5LjYgMTkuOHMyLjIgMjUuNy02LjkgMzQuOWwtMTI4IDEyOHpcIl1cbn07XG5jb25zdCBmYVNvcnREZXNjID0gZmFTb3J0RG93bjtcbmNvbnN0IGZhQ2lyY2xlTWludXMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2lyY2xlLW1pbnVzJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXCJtaW51cy1jaXJjbGVcIl0sIFwiZjA1NlwiLCBcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMTg0IDIzMmwxNDQgMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGwtMTQ0IDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjR6XCJdXG59O1xuY29uc3QgZmFNaW51c0NpcmNsZSA9IGZhQ2lyY2xlTWludXM7XG5jb25zdCBmYURvb3JPcGVuID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Rvb3Itb3BlbicsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjUyYlwiLCBcIk0zMjAgMzJjMC05LjktNC41LTE5LjItMTIuMy0yNS4yUzI4OS44LTEuNCAyODAuMiAxbC0xNzkuOSA0NUM3OSA1MS4zIDY0IDcwLjUgNjQgOTIuNUw2NCA0NDhsLTMyIDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsNjQgMCAxOTIgMCAzMiAwIDAtMzIgMC00NDh6TTI1NiAyNTZjMCAxNy43LTEwLjcgMzItMjQgMzJzLTI0LTE0LjMtMjQtMzJzMTAuNy0zMiAyNC0zMnMyNCAxNC4zIDI0IDMyem05Ni0xMjhsOTYgMCAwIDM1MmMwIDE3LjcgMTQuMyAzMiAzMiAzMmw2NCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC0zMiAwIDAtMzIwYzAtMzUuMy0yOC43LTY0LTY0LTY0bC05NiAwIDAgNjR6XCJdXG59O1xuY29uc3QgZmFSaWdodEZyb21CcmFja2V0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3JpZ2h0LWZyb20tYnJhY2tldCcsXG4gIGljb246IFs1MTIsIDUxMiwgW1wic2lnbi1vdXQtYWx0XCJdLCBcImYyZjVcIiwgXCJNMzc3LjkgMTA1LjlMNTAwLjcgMjI4LjdjNy4yIDcuMiAxMS4zIDE3LjEgMTEuMyAyNy4zcy00LjEgMjAuMS0xMS4zIDI3LjNMMzc3LjkgNDA2LjFjLTYuNCA2LjQtMTUgOS45LTI0IDkuOWMtMTguNyAwLTMzLjktMTUuMi0zMy45LTMzLjlsMC02Mi4xLTEyOCAwYy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTY0YzAtMTcuNyAxNC4zLTMyIDMyLTMybDEyOCAwIDAtNjIuMWMwLTE4LjcgMTUuMi0zMy45IDMzLjktMzMuOWM5IDAgMTcuNiAzLjYgMjQgOS45ek0xNjAgOTZMOTYgOTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMybDAgMjU2YzAgMTcuNyAxNC4zIDMyIDMyIDMybDY0IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTY0IDBjLTUzIDAtOTYtNDMtOTYtOTZMMCAxMjhDMCA3NSA0MyAzMiA5NiAzMmw2NCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyelwiXVxufTtcbmNvbnN0IGZhU2lnbk91dEFsdCA9IGZhUmlnaHRGcm9tQnJhY2tldDtcbmNvbnN0IGZhQXRvbSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhdG9tJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbOTg4M10sIFwiZjVkMlwiLCBcIk0yNTYgMzk4LjhjLTExLjggNS4xLTIzLjQgOS43LTM0LjkgMTMuNWMxNi43IDMzLjggMzEgMzUuNyAzNC45IDM1LjdzMTguMS0xLjkgMzQuOS0zNS43Yy0xMS40LTMuOS0yMy4xLTguNC0zNC45LTEzLjV6TTQ0NiAyNTZjMzMgNDUuMiA0NC4zIDkwLjkgMjMuNiAxMjhjLTIwLjIgMzYuMy02Mi41IDQ5LjMtMTE1LjIgNDMuMmMtMjIgNTIuMS01NS42IDg0LjgtOTguNCA4NC44cy03Ni40LTMyLjctOTguNC04NC44Yy01Mi43IDYuMS05NS02LjgtMTE1LjItNDMuMkMyMS43IDM0Ni45IDMzIDMwMS4yIDY2IDI1NmMtMzMtNDUuMi00NC4zLTkwLjktMjMuNi0xMjhjMjAuMi0zNi4zIDYyLjUtNDkuMyAxMTUuMi00My4yQzE3OS42IDMyLjcgMjEzLjIgMCAyNTYgMHM3Ni40IDMyLjcgOTguNCA4NC44YzUyLjctNi4xIDk1IDYuOCAxMTUuMiA0My4yYzIwLjcgMzcuMSA5LjQgODIuOC0yMy42IDEyOHptLTY1LjggNjcuNGMtMS43IDE0LjItMy45IDI4LTYuNyA0MS4yYzMxLjggMS40IDM4LjYtOC43IDQwLjItMTEuN2MyLjMtNC4yIDctMTcuOS0xMS45LTQ4LjFjLTYuOCA2LjMtMTQgMTIuNS0yMS42IDE4LjZ6bS02LjctMTc1LjljMi44IDEzLjEgNSAyNi45IDYuNyA0MS4yYzcuNiA2LjEgMTQuOCAxMi4zIDIxLjYgMTguNmMxOC45LTMwLjIgMTQuMi00NCAxMS45LTQ4LjFjLTEuNi0yLjktOC40LTEzLTQwLjItMTEuN3pNMjkwLjkgOTkuN0MyNzQuMSA2NS45IDI1OS45IDY0IDI1NiA2NHMtMTguMSAxLjktMzQuOSAzNS43YzExLjQgMy45IDIzLjEgOC40IDM0LjkgMTMuNWMxMS44LTUuMSAyMy40LTkuNyAzNC45LTEzLjV6bS0xNTkgODguOWMxLjctMTQuMyAzLjktMjggNi43LTQxLjJjLTMxLjgtMS40LTM4LjYgOC43LTQwLjIgMTEuN2MtMi4zIDQuMi03IDE3LjkgMTEuOSA0OC4xYzYuOC02LjMgMTQtMTIuNSAyMS42LTE4LjZ6TTExMC4yIDMwNC44QzkxLjQgMzM1IDk2IDM0OC43IDk4LjMgMzUyLjljMS42IDIuOSA4LjQgMTMgNDAuMiAxMS43Yy0yLjgtMTMuMS01LTI2LjktNi43LTQxLjJjLTcuNi02LjEtMTQuOC0xMi4zLTIxLjYtMTguNnpNMzM2IDI1NmE4MCA4MCAwIDEgMCAtMTYwIDAgODAgODAgMCAxIDAgMTYwIDB6bS04MC0zMmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJdXG59O1xuY29uc3QgZmFTb2FwID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NvYXAnLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjk1MzJdLCBcImUwNmVcIiwgXCJNMjA4IDk2YTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnpNMzIwIDI1NmE2NCA2NCAwIDEgMCAwLTEyOCA2NCA2NCAwIDEgMCAwIDEyOHpNNDE2IDMyYTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6bTAgMTYwYzAgMjcuNi0xMS43IDUyLjUtMzAuNCA3MC4xQzQyMi4xIDI3NS43IDQ0OCAzMTAuOCA0NDggMzUyYzAgNTMtNDMgOTYtOTYgOTZsLTE5MiAwYy01MyAwLTk2LTQzLTk2LTk2czQzLTk2IDk2LTk2bDg4LjQgMGMtMTUuMi0xNy0yNC40LTM5LjQtMjQuNC02NEw5NiAxOTJjLTUzIDAtOTYgNDMtOTYgOTZMMCA0MTZjMCA1MyA0MyA5NiA5NiA5NmwzMjAgMGM1MyAwIDk2LTQzIDk2LTk2bDAtMTI4YzAtNTMtNDMtOTYtOTYtOTZ6TTE2MCAyODhjLTM1LjMgMC02NCAyOC43LTY0IDY0czI4LjcgNjQgNjQgNjRsMTkyIDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRzLTI4LjctNjQtNjQtNjRsLTMyIDAtMTYwIDB6XCJdXG59O1xuY29uc3QgZmFJY29ucyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdpY29ucycsXG4gIGljb246IFs1MTIsIDUxMiwgW1wiaGVhcnQtbXVzaWMtY2FtZXJhLWJvbHRcIl0sIFwiZjg2ZFwiLCBcIk01MDAuMyA3LjNDNTA3LjcgMTMuMyA1MTIgMjIuNCA1MTIgMzJsMCAxNDRjMCAyNi41LTI4LjcgNDgtNjQgNDhzLTY0LTIxLjUtNjQtNDhzMjguNy00OCA2NC00OGwwLTU3TDM1MiA5MC4yIDM1MiAyMDhjMCAyNi41LTI4LjcgNDgtNjQgNDhzLTY0LTIxLjUtNjQtNDhzMjguNy00OCA2NC00OGwwLTk2YzAtMTUuMyAxMC44LTI4LjQgMjUuNy0zMS40bDE2MC0zMmM5LjQtMS45IDE5LjEgLjYgMjYuNiA2LjZ6TTc0LjcgMzA0bDExLjgtMTcuOGM1LjktOC45IDE1LjktMTQuMiAyNi42LTE0LjJsNjEuNyAwYzEwLjcgMCAyMC43IDUuMyAyNi42IDE0LjJMMjEzLjMgMzA0bDI2LjcgMGMyNi41IDAgNDggMjEuNSA0OCA0OGwwIDExMmMwIDI2LjUtMjEuNSA0OC00OCA0OEw0OCA1MTJjLTI2LjUgMC00OC0yMS41LTQ4LTQ4TDAgMzUyYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4bDI2LjcgMHpNMTkyIDQwOGE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwek00NzguNyAyNzguM0w0NDAuMyAzNjhsNTUuNyAwYzYuNyAwIDEyLjYgNC4xIDE1IDEwLjRzLjYgMTMuMy00LjQgMTcuN2wtMTI4IDExMmMtNS42IDQuOS0xMy45IDUuMy0xOS45IC45cy04LjItMTIuNC01LjMtMTkuMkwzOTEuNyA0MDAgMzM2IDQwMGMtNi43IDAtMTIuNi00LjEtMTUtMTAuNHMtLjYtMTMuMyA0LjQtMTcuN2wxMjgtMTEyYzUuNi00LjkgMTMuOS01LjMgMTkuOS0uOXM4LjIgMTIuNCA1LjMgMTkuMnptLTMzOS01OS4yYy02LjUgNi41LTE3IDYuNS0yMyAwTDE5LjkgMTE5LjJjLTI4LTI5LTI2LjUtNzYuOSA1LTEwMy45YzI3LTIzLjUgNjguNC0xOSA5My40IDYuNWwxMCAxMC41IDkuNS0xMC41YzI1LTI1LjUgNjUuOS0zMCA5My45LTYuNWMzMSAyNyAzMi41IDc0LjkgNC41IDEwMy45bC05Ni40IDk5Ljl6XCJdXG59O1xuY29uc3QgZmFIZWFydE11c2ljQ2FtZXJhQm9sdCA9IGZhSWNvbnM7XG5jb25zdCBmYU1pY3JvcGhvbmVMaW5lc1NsYXNoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21pY3JvcGhvbmUtbGluZXMtc2xhc2gnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtcIm1pY3JvcGhvbmUtYWx0LXNsYXNoXCJdLCBcImY1MzlcIiwgXCJNMzguOCA1LjFDMjguNC0zLjEgMTMuMy0xLjIgNS4xIDkuMlMtMS4yIDM0LjcgOS4yIDQyLjlsNTkyIDQ2NGMxMC40IDguMiAyNS41IDYuMyAzMy43LTQuMXM2LjMtMjUuNS00LjEtMzMuN0w0NzIuMSAzNDQuN2MxNS4yLTI2IDIzLjktNTYuMyAyMy45LTg4LjdsMC00MGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNGwwIDI0IDAgMTZjMCAyMS4yLTUuMSA0MS4xLTE0LjIgNTguN0w0MTYgMzAwLjhsMC00NC44LTU3LjEgMC0zNC41LTI3YzIuOS0zLjEgNy01IDExLjYtNWw4MCAwIDAtMzItODAgMGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmw4MCAwIDAtMzItODAgMGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmw4MCAwYzAtNTMtNDMtOTYtOTYtOTZzLTk2IDQzLTk2IDk2bDAgNTQuM0wzOC44IDUuMXptMzYyLjUgNDA3bC00My4xLTMzLjlDMzQ2LjEgMzgyIDMzMy4zIDM4NCAzMjAgMzg0Yy03MC43IDAtMTI4LTU3LjMtMTI4LTEyOGwwLTguN0wxNDQuNyAyMTBjLS41IDEuOS0uNyAzLjktLjcgNmwwIDQwYzAgODkuMSA2Ni4yIDE2Mi43IDE1MiAxNzQuNGwwIDMzLjYtNDggMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGw3MiAwIDcyIDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRsLTQ4IDAgMC0zMy42YzIwLjQtMi44IDM5LjctOS4xIDU3LjMtMTguMnpcIl1cbn07XG5jb25zdCBmYU1pY3JvcGhvbmVBbHRTbGFzaCA9IGZhTWljcm9waG9uZUxpbmVzU2xhc2g7XG5jb25zdCBmYUJyaWRnZUNpcmNsZUNoZWNrID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JyaWRnZS1jaXJjbGUtY2hlY2snLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU0YzlcIiwgXCJNNjQgMzJDNDYuMyAzMiAzMiA0Ni4zIDMyIDY0czE0LjMgMzIgMzIgMzJsNDAgMCAwIDY0LTcyIDAgMCAxMjhjNTMgMCA5NiA0MyA5NiA5NmwwIDY0YzAgMTcuNyAxNC4zIDMyIDMyIDMybDMyIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJsMC02NGMwLTUzIDQzLTk2IDk2LTk2YzYuMyAwIDEyLjQgLjYgMTguMyAxLjdDMzY3LjEgMjMxLjggNDI2LjkgMTkyIDQ5NiAxOTJjNDIuNSAwIDgxLjYgMTUuMSAxMTIgNDAuMmwwLTcyLjItNzIgMCAwLTY0IDQwIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJMNjQgMzJ6TTQ4OCA5NmwwIDY0LTgwIDAgMC02NCA4MCAwek0zNjAgOTZsMCA2NC04MCAwIDAtNjQgODAgMHpNMjMyIDk2bDAgNjQtODAgMCAwLTY0IDgwIDB6TTY0MCAzNjhhMTQ0IDE0NCAwIDEgMCAtMjg4IDAgMTQ0IDE0NCAwIDEgMCAyODggMHptLTc2LjctNDMuM2M2LjIgNi4yIDYuMiAxNi40IDAgMjIuNmwtNzIgNzJjLTYuMiA2LjItMTYuNCA2LjItMjIuNiAwbC00MC00MGMtNi4yLTYuMi02LjItMTYuNCAwLTIyLjZzMTYuNC02LjIgMjIuNiAwTDQ4MCAzODUuNGw2MC43LTYwLjdjNi4yLTYuMiAxNi40LTYuMiAyMi42IDB6XCJdXG59O1xuY29uc3QgZmFQdW1wTWVkaWNhbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwdW1wLW1lZGljYWwnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImUwNmFcIiwgXCJNMTI4IDMybDAgOTYgMTI4IDAgMC0zMiA2MC4xIDBjNC4yIDAgOC4zIDEuNyAxMS4zIDQuN2wzMy45IDMzLjljMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM0wzNzIuNyA1NS40Yy0xNS0xNS0zNS40LTIzLjQtNTYuNi0yMy40TDI1NiAzMmMwLTE3LjctMTQuMy0zMi0zMi0zMkwxNjAgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6TTExNy40IDE2MGMtMzMuMyAwLTYxIDI1LjUtNjMuOCA1OC43TDM1IDQ0Mi43QzMxLjkgNDgwIDYxLjMgNTEyIDk4LjggNTEybDE4Ni40IDBjMzcuNCAwIDY2LjktMzIgNjMuOC02OS4zbC0xOC43LTIyNGMtMi44LTMzLjItMzAuNS01OC43LTYzLjgtNTguN2wtMTQ5LjEgMHpNMjE2IDI4MGwwIDMyIDMyIDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRsLTMyIDAgMCAzMmMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNGwwLTMyLTMyIDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRsMzIgMCAwLTMyYzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjR6XCJdXG59O1xuY29uc3QgZmFGaW5nZXJwcmludCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmaW5nZXJwcmludCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjU3N1wiLCBcIk00OCAyNTZDNDggMTQxLjEgMTQxLjEgNDggMjU2IDQ4YzYzLjEgMCAxMTkuNiAyOC4xIDE1Ny44IDcyLjVjOC42IDEwLjEgMjMuOCAxMS4yIDMzLjggMi42czExLjItMjMuOCAyLjYtMzMuOEM0MDMuMyAzNC42IDMzMy43IDAgMjU2IDBDMTE0LjYgMCAwIDExNC42IDAgMjU2bDAgNDBjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGwwLTQwem00NTguNS01Mi45Yy0yLjctMTMtMTUuNS0yMS4zLTI4LjQtMTguNXMtMjEuMyAxNS41LTE4LjUgMjguNGMyLjkgMTMuOSA0LjUgMjguMyA0LjUgNDMuMWwwIDQwYzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRsMC00MGMwLTE4LjEtMS45LTM1LjgtNS41LTUyLjl6TTI1NiA4MGMtMTkgMC0zNy40IDMtNTQuNSA4LjZjLTE1LjIgNS0xOC43IDIzLjctOC4zIDM1LjljNy4xIDguMyAxOC44IDEwLjggMjkuNCA3LjljMTAuNi0yLjkgMjEuOC00LjQgMzMuNC00LjRjNzAuNyAwIDEyOCA1Ny4zIDEyOCAxMjhsMCAyNC45YzAgMjUuMi0xLjUgNTAuMy00LjQgNzUuM2MtMS43IDE0LjYgOS40IDI3LjggMjQuMiAyNy44YzExLjggMCAyMS45LTguNiAyMy4zLTIwLjNjMy4zLTI3LjQgNS01NSA1LTgyLjdsMC0yNC45YzAtOTcuMi03OC44LTE3Ni0xNzYtMTc2ek0xNTAuNyAxNDguN2MtOS4xLTEwLjYtMjUuMy0xMS40LTMzLjktLjRDOTMuNyAxNzggODAgMjE1LjQgODAgMjU2bDAgMjQuOWMwIDI0LjItMi42IDQ4LjQtNy44IDcxLjlDNjguOCAzNjguNCA4MC4xIDM4NCA5Ni4xIDM4NGMxMC41IDAgMTkuOS03IDIyLjItMTcuM2M2LjQtMjguMSA5LjctNTYuOCA5LjctODUuOGwwLTI0LjljMC0yNy4yIDguNS01Mi40IDIyLjktNzMuMWM3LjItMTAuNCA4LTI0LjYtLjItMzQuMnpNMjU2IDE2MGMtNTMgMC05NiA0My05NiA5NmwwIDI0LjljMCAzNS45LTQuNiA3MS41LTEzLjggMTA2LjFjLTMuOCAxNC4zIDYuNyAyOSAyMS41IDI5YzkuNSAwIDE3LjktNi4yIDIwLjQtMTUuNGMxMC41LTM5IDE1LjktNzkuMiAxNS45LTExOS43bDAtMjQuOWMwLTI4LjcgMjMuMy01MiA1Mi01MnM1MiAyMy4zIDUyIDUybDAgMjQuOWMwIDM2LjMtMy41IDcyLjQtMTAuNCAxMDcuOWMtMi43IDEzLjkgNy43IDI3LjIgMjEuOCAyNy4yYzEwLjIgMCAxOS03IDIxLTE3YzcuNy0zOC44IDExLjYtNzguMyAxMS42LTExOC4xbDAtMjQuOWMwLTUzLTQzLTk2LTk2LTk2em0yNCA5NmMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNGwwIDI0LjljMCA1OS45LTExIDExOS4zLTMyLjUgMTc1LjJsLTUuOSAxNS4zYy00LjggMTIuNCAxLjQgMjYuMyAxMy44IDMxczI2LjMtMS40IDMxLTEzLjhsNS45LTE1LjNDMjY3LjkgNDExLjkgMjgwIDM0Ni43IDI4MCAyODAuOWwwLTI0Ljl6XCJdXG59O1xuY29uc3QgZmFIYW5kUG9pbnRSaWdodCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoYW5kLXBvaW50LXJpZ2h0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMGE0XCIsIFwiTTQ4MCA5NmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtMjA4IDAgMC02NCAyMDggMHpNMzIwIDI4OGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtNjQgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmw2NCAwem02NC02NGMwIDE3LjctMTQuMyAzMi0zMiAzMmwtNDggMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmw0OCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMyek0yODggMzg0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC02NCAwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDY0IDB6bS04OC05NmwuNiAwYy01LjQgOS40LTguNiAyMC4zLTguNiAzMmMwIDEzLjIgNCAyNS40IDEwLjggMzUuNkMxNzcuOSAzNjQuMyAxNjAgMzg4LjEgMTYwIDQxNmMwIDExLjcgMy4xIDIyLjYgOC42IDMybC04LjYgMEM3MS42IDQ0OCAwIDM3Ni40IDAgMjg4bDAtNjEuN2MwLTQyLjQgMTYuOS04My4xIDQ2LjktMTEzLjFsMTEuNi0xMS42QzgyLjUgNzcuNSAxMTUuMSA2NCAxNDkgNjRsMjcgMGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDg4YzAgMjIuMS0xNy45IDQwLTQwIDQwcy00MC0xNy45LTQwLTQwbDAtNTZjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZsMCA1NmMwIDM5LjggMzIuMiA3MiA3MiA3MnpcIl1cbn07XG5jb25zdCBmYU1hZ25pZnlpbmdHbGFzc0xvY2F0aW9uID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21hZ25pZnlpbmctZ2xhc3MtbG9jYXRpb24nLFxuICBpY29uOiBbNTEyLCA1MTIsIFtcInNlYXJjaC1sb2NhdGlvblwiXSwgXCJmNjg5XCIsIFwiTTQxNiAyMDhjMCA0NS45LTE0LjkgODguMy00MCAxMjIuN0w1MDIuNiA0NTcuNGMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM3MtMzIuOCAxMi41LTQ1LjMgMEwzMzAuNyAzNzZjLTM0LjQgMjUuMi03Ni44IDQwLTEyMi43IDQwQzkzLjEgNDE2IDAgMzIyLjkgMCAyMDhTOTMuMSAwIDIwOCAwUzQxNiA5My4xIDQxNiAyMDh6TTI4OCAxNzZjMC00NC4yLTM1LjgtODAtODAtODBzLTgwIDM1LjgtODAgODBjMCA0OC44IDQ2LjUgMTExLjYgNjguNiAxMzguNmM2IDcuMyAxNi44IDcuMyAyMi43IDBjMjIuMS0yNyA2OC42LTg5LjggNjguNi0xMzguNnptLTExMiAwYTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6XCJdXG59O1xuY29uc3QgZmFTZWFyY2hMb2NhdGlvbiA9IGZhTWFnbmlmeWluZ0dsYXNzTG9jYXRpb247XG5jb25zdCBmYUZvcndhcmRTdGVwID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZvcndhcmQtc3RlcCcsXG4gIGljb246IFszMjAsIDUxMiwgW1wic3RlcC1mb3J3YXJkXCJdLCBcImYwNTFcIiwgXCJNNTIuNSA0NDAuNmMtOS41IDcuOS0yMi44IDkuNy0zNC4xIDQuNFMwIDQyOC40IDAgNDE2TDAgOTZDMCA4My42IDcuMiA3Mi4zIDE4LjQgNjdzMjQuNS0zLjYgMzQuMSA0LjRsMTkyIDE2MEwyNTYgMjQxbDAtMTQ1YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJsMCAzMjBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC0xNDUtMTEuNSA5LjYtMTkyIDE2MHpcIl1cbn07XG5jb25zdCBmYVN0ZXBGb3J3YXJkID0gZmFGb3J3YXJkU3RlcDtcbmNvbnN0IGZhRmFjZVNtaWxlQmVhbSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmYWNlLXNtaWxlLWJlYW0nLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjg1MjIsIFwic21pbGUtYmVhbVwiXSwgXCJmNWI4XCIsIFwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0xNjQuMSAzMjUuNUMxODIgMzQ2LjIgMjEyLjYgMzY4IDI1NiAzNjhzNzQtMjEuOCA5MS45LTQyLjVjNS44LTYuNyAxNS45LTcuNCAyMi42LTEuNnM3LjQgMTUuOSAxLjYgMjIuNkMzNDkuOCAzNzIuMSAzMTEuMSA0MDAgMjU2IDQwMHMtOTMuOC0yNy45LTExNi4xLTUzLjVjLTUuOC02LjctNS4xLTE2LjggMS42LTIyLjZzMTYuOC01LjEgMjIuNiAxLjZ6bTUzLjUtOTYuN3MwIDAgMCAwYzAgMCAwIDAgMCAwbC0uMi0uMmMtLjItLjItLjQtLjUtLjctLjljLS42LS44LTEuNi0yLTIuOC0zLjRjLTIuNS0yLjgtNi02LjYtMTAuMi0xMC4zYy04LjgtNy44LTE4LjgtMTQtMjcuNy0xNHMtMTguOSA2LjItMjcuNyAxNGMtNC4yIDMuNy03LjcgNy41LTEwLjIgMTAuM2MtMS4yIDEuNC0yLjIgMi42LTIuOCAzLjRjLS4zIC40LS42IC43LS43IC45bC0uMiAuMmMwIDAgMCAwIDAgMGMwIDAgMCAwIDAgMHMwIDAgMCAwYy0yLjEgMi44LTUuNyAzLjktOC45IDIuOHMtNS41LTQuMS01LjUtNy42YzAtMTcuOSA2LjctMzUuNiAxNi42LTQ4LjhjOS44LTEzIDIzLjktMjMuMiAzOS40LTIzLjJzMjkuNiAxMC4yIDM5LjQgMjMuMmM5LjkgMTMuMiAxNi42IDMwLjkgMTYuNiA0OC44YzAgMy40LTIuMiA2LjUtNS41IDcuNnMtNi45IDAtOC45LTIuOGMwIDAgMCAwIDAgMHMwIDAgMCAwem0xNjAgMGMwIDAgMCAwIDAgMGwtLjItLjJjLS4yLS4yLS40LS41LS43LS45Yy0uNi0uOC0xLjYtMi0yLjgtMy40Yy0yLjUtMi44LTYtNi42LTEwLjItMTAuM2MtOC44LTcuOC0xOC44LTE0LTI3LjctMTRzLTE4LjkgNi4yLTI3LjcgMTRjLTQuMiAzLjctNy43IDcuNS0xMC4yIDEwLjNjLTEuMiAxLjQtMi4yIDIuNi0yLjggMy40Yy0uMyAuNC0uNiAuNy0uNyAuOWwtLjIgLjJjMCAwIDAgMCAwIDBjMCAwIDAgMCAwIDBzMCAwIDAgMGMtMi4xIDIuOC01LjcgMy45LTguOSAyLjhzLTUuNS00LjEtNS41LTcuNmMwLTE3LjkgNi43LTM1LjYgMTYuNi00OC44YzkuOC0xMyAyMy45LTIzLjIgMzkuNC0yMy4yczI5LjYgMTAuMiAzOS40IDIzLjJjOS45IDEzLjIgMTYuNiAzMC45IDE2LjYgNDguOGMwIDMuNC0yLjIgNi41LTUuNSA3LjZzLTYuOSAwLTguOS0yLjhjMCAwIDAgMCAwIDBzMCAwIDAgMHMwIDAgMCAwelwiXVxufTtcbmNvbnN0IGZhU21pbGVCZWFtID0gZmFGYWNlU21pbGVCZWFtO1xuY29uc3QgZmFGbGFnQ2hlY2tlcmVkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZsYWctY2hlY2tlcmVkJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbMTI3OTM3XSwgXCJmMTFlXCIsIFwiTTMyIDBDNDkuNyAwIDY0IDE0LjMgNjQgMzJsMCAxNiA2OS0xNy4yYzM4LjEtOS41IDc4LjMtNS4xIDExMy41IDEyLjVjNDYuMyAyMy4yIDEwMC44IDIzLjIgMTQ3LjEgMGw5LjYtNC44QzQyMy44IDI4LjEgNDQ4IDQzLjEgNDQ4IDY2LjFsMCAyNzkuN2MwIDEzLjMtOC4zIDI1LjMtMjAuOCAzMGwtMzQuNyAxM2MtNDYuMiAxNy4zLTk3LjYgMTQuNi0xNDEuNy03LjRjLTM3LjktMTktODEuMy0yMy43LTEyMi41LTEzLjRMNjQgMzg0bDAgOTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC04MCAwLTY2TDAgNjQgMCAzMkMwIDE0LjMgMTQuMyAwIDMyIDB6TTY0IDE4Ny4xbDY0LTEzLjkgMCA2NS41TDY0IDI1Mi42IDY0IDMxOGw0OC44LTEyLjJjNS4xLTEuMyAxMC4xLTIuNCAxNS4yLTMuM2wwLTYzLjkgMzguOS04LjRjOC4zLTEuOCAxNi43LTIuNSAyNS4xLTIuMWwwLTY0YzEzLjYgLjQgMjcuMiAyLjYgNDAuNCA2LjRsMjMuNiA2LjkgMCA2Ni43LTQxLjctMTIuM2MtNy4zLTIuMS0xNC44LTMuNC0yMi4zLTMuOGwwIDcxLjRjMjEuOCAxLjkgNDMuMyA2LjcgNjQgMTQuNGwwLTY5LjggMjIuNyA2LjdjMTMuNSA0IDI3LjMgNi40IDQxLjMgNy40bDAtNjQuMmMtNy44LS44LTE1LjYtMi4zLTIzLjItNC41bC00MC44LTEyIDAtNjJjLTEzLTMuOC0yNS44LTguOC0zOC4yLTE1Yy04LjItNC4xLTE2LjktNy0yNS44LTguOGwwIDcyLjRjLTEzLS40LTI2IC44LTM4LjcgMy42TDEyOCAxNzMuMiAxMjggOTggNjQgMTE0bDAgNzMuMXpNMzIwIDMzNS43YzE2LjggMS41IDMzLjktLjcgNTAtNi44bDE0LTUuMiAwLTcxLjctNy45IDEuOGMtMTguNCA0LjMtMzcuMyA1LjctNTYuMSA0LjVsMCA3Ny40em02NC0xNDkuNGwwLTcwLjhjLTIwLjkgNi4xLTQyLjQgOS4xLTY0IDkuMWwwIDY5LjRjMTMuOSAxLjQgMjggLjUgNDEuNy0yLjZsMjIuMy01LjJ6XCJdXG59O1xuY29uc3QgZmFGb290YmFsbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmb290YmFsbCcsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyNzk0NCwgXCJmb290YmFsbC1iYWxsXCJdLCBcImY0NGVcIiwgXCJNMjQ3LjUgMjUuNGMtMTMuNSAzLjMtMjYuNCA3LjItMzguNiAxMS43QzE0Mi45IDYxLjYgOTYuNyAxMDMuNiA2NiAxNTMuNkM0Ny44IDE4My40IDM1LjEgMjE1LjkgMjYuOSAyNDlMMjY0LjUgNDg2LjZjMTMuNS0zLjMgMjYuNC03LjIgMzguNi0xMS43YzY2LTI0LjUgMTEyLjItNjYuNSAxNDIuOS0xMTYuNWMxOC4zLTI5LjggMzAuOS02Mi4zIDM5LjEtOTUuM0wyNDcuNSAyNS40ek00OTUuMiAyMDUuM2M2LjEtNTYuOCAxLjQtMTEyLjItNy43LTE1Ni40Yy0yLjctMTIuOS0xMy0yMi45LTI2LjEtMjUuMWMtNTguMi05LjctMTA5LjktMTItMTU1LjYtNy45TDQ5NS4yIDIwNS4zek0yMDYuMSA0OTZMMTYuOCAzMDYuN2MtNi4xIDU2LjgtMS40IDExMi4yIDcuNyAxNTYuNGMyLjcgMTIuOSAxMyAyMi45IDI2LjEgMjUuMWM1OC4yIDkuNyAxMDkuOSAxMiAxNTUuNiA3Ljl6bTU0LjYtMzMxLjNjNi4yLTYuMiAxNi40LTYuMiAyMi42IDBsNjQgNjRjNi4yIDYuMiA2LjIgMTYuNCAwIDIyLjZzLTE2LjQgNi4yLTIyLjYgMGwtNjQtNjRjLTYuMi02LjItNi4yLTE2LjQgMC0yMi42em0tNDggNDhjNi4yLTYuMiAxNi40LTYuMiAyMi42IDBsNjQgNjRjNi4yIDYuMiA2LjIgMTYuNCAwIDIyLjZzLTE2LjQgNi4yLTIyLjYgMGwtNjQtNjRjLTYuMi02LjItNi4yLTE2LjQgMC0yMi42em0tNDggNDhjNi4yLTYuMiAxNi40LTYuMiAyMi42IDBsNjQgNjRjNi4yIDYuMiA2LjIgMTYuNCAwIDIyLjZzLTE2LjQgNi4yLTIyLjYgMGwtNjQtNjRjLTYuMi02LjItNi4yLTE2LjQgMC0yMi42elwiXVxufTtcbmNvbnN0IGZhRm9vdGJhbGxCYWxsID0gZmFGb290YmFsbDtcbmNvbnN0IGZhU2Nob29sQ2lyY2xlRXhjbGFtYXRpb24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc2Nob29sLWNpcmNsZS1leGNsYW1hdGlvbicsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTU2Y1wiLCBcIk0zMzcuOCA1LjRDMzI3LTEuOCAzMTMtMS44IDMwMi4yIDUuNEwxNjYuMyA5NiA0OCA5NkMyMS41IDk2IDAgMTE3LjUgMCAxNDRMMCA0NjRjMCAyNi41IDIxLjUgNDggNDggNDhsMjcyIDBzMCAwIDAgMGwtNjQgMCAwLTk2YzAtMzUuMyAyOC43LTY0IDY0LTY0bC4zIDAgLjUgMGMzLjQtMzcuNyAxOC43LTcyLjEgNDIuMi05OS4xQzM1MC4yIDI2MCAzMzUuNiAyNjQgMzIwIDI2NGMtNDguNiAwLTg4LTM5LjQtODgtODhzMzkuNC04OCA4OC04OHM4OCAzOS40IDg4IDg4YzAgMTguMy01LjYgMzUuMy0xNS4xIDQ5LjRjMjktMjEgNjQuNi0zMy40IDEwMy4xLTMzLjRjNTkuNSAwIDExMi4xIDI5LjYgMTQ0IDc0LjhMNjQwIDE0NGMwLTI2LjUtMjEuNS00OC00OC00OEw0NzMuNyA5NiAzMzcuOCA1LjR6TTk2IDE5MmwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDY0YzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtNjRjMC04LjggNy4yLTE2IDE2LTE2em0wIDEyOGwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDY0YzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtNjRjMC04LjggNy4yLTE2IDE2LTE2ek0zMjAgMTI4Yy04LjggMC0xNiA3LjItMTYgMTZsMCAzMmMwIDguOCA3LjIgMTYgMTYgMTZsMzIgMGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNmwtMTYgMCAwLTE2YzAtOC44LTcuMi0xNi0xNi0xNnpNNDk2IDUxMmExNDQgMTQ0IDAgMSAwIDAtMjg4IDE0NCAxNDQgMCAxIDAgMCAyODh6bTAtOTZhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4em0wLTE0NGM4LjggMCAxNiA3LjIgMTYgMTZsMCA4MGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNmwwLTgwYzAtOC44IDcuMi0xNiAxNi0xNnpcIl1cbn07XG5jb25zdCBmYUNyb3AgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY3JvcCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjEyNVwiLCBcIk00NDggMTA5LjNsNTQuNi01NC42YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwTDQwMi43IDY0IDE2MCA2NGwwIDY0IDE3OC43IDBMMTI4IDMzOC43IDEyOCAzMmMwLTE3LjctMTQuMy0zMi0zMi0zMlM2NCAxNC4zIDY0IDMybDAgMzJMMzIgNjRDMTQuMyA2NCAwIDc4LjMgMCA5NnMxNC4zIDMyIDMyIDMybDMyIDAgMCAyNTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMjI0IDAgMC02NC0xNzguNyAwTDM4NCAxNzMuMyAzODQgNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0zMiAzMiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC0zMiAwIDAtMjc0Ljd6XCJdXG59O1xuY29uc3QgZmFBbmdsZXNEb3duID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2FuZ2xlcy1kb3duJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXCJhbmdsZS1kb3VibGUtZG93blwiXSwgXCJmMTAzXCIsIFwiTTI0Ni42IDQ3MC42Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMGwtMTYwLTE2MGMtMTIuNS0xMi41LTEyLjUtMzIuOCAwLTQ1LjNzMzIuOC0xMi41IDQ1LjMgMEwyMjQgNDAyLjcgMzYxLjQgMjY1LjRjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDBzMTIuNSAzMi44IDAgNDUuM2wtMTYwIDE2MHptMTYwLTM1MmwtMTYwIDE2MGMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBsLTE2MC0xNjBjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zczMyLjgtMTIuNSA0NS4zIDBMMjI0IDIxMC43IDM2MS40IDczLjRjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDBzMTIuNSAzMi44IDAgNDUuM3pcIl1cbn07XG5jb25zdCBmYUFuZ2xlRG91YmxlRG93biA9IGZhQW5nbGVzRG93bjtcbmNvbnN0IGZhVXNlcnNSZWN0YW5nbGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndXNlcnMtcmVjdGFuZ2xlJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlNTk0XCIsIFwiTTk2IDBDNDMgMCAwIDQzIDAgOTZMMCA0MTZjMCA1MyA0MyA5NiA5NiA5Nmw0NDggMGM1MyAwIDk2LTQzIDk2LTk2bDAtMzIwYzAtNTMtNDMtOTYtOTYtOTZMOTYgMHpNNjQgOTZjMC0xNy43IDE0LjMtMzIgMzItMzJsNDQ4IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCAzMjBjMCAxNy43LTE0LjMgMzItMzIgMzJMOTYgNDQ4Yy0xNy43IDAtMzItMTQuMy0zMi0zMkw2NCA5NnptMTU5LjggODBhNDggNDggMCAxIDAgLTk2IDAgNDggNDggMCAxIDAgOTYgMHpNOTYgMzA5LjNjMCAxNC43IDExLjkgMjYuNyAyNi43IDI2LjdsNTYuMSAwYzgtMzQuMSAzMi44LTYxLjcgNjUuMi03My42Yy03LjUtNC4xLTE2LjItNi40LTI1LjMtNi40bC02OS4zIDBDMTE5LjkgMjU2IDk2IDI3OS45IDk2IDMwOS4zek00NjEuMiAzMzZsNTYuMSAwYzE0LjcgMCAyNi43LTExLjkgMjYuNy0yNi43YzAtMjkuNS0yMy45LTUzLjMtNTMuMy01My4zbC02OS4zIDBjLTkuMiAwLTE3LjggMi4zLTI1LjMgNi40YzMyLjQgMTEuOSA1Ny4yIDM5LjUgNjUuMiA3My42ek0zNzIgMjg5Yy0zLjktLjctNy45LTEtMTItMWwtODAgMGMtNC4xIDAtOC4xIC4zLTEyIDFjLTI2IDQuNC00Ny4zIDIyLjctNTUuOSA0N2MtMi43IDcuNS00LjEgMTUuNi00LjEgMjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRsMTc2IDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRjMC04LjQtMS40LTE2LjUtNC4xLTI0Yy04LjYtMjQuMy0yOS45LTQyLjYtNTUuOS00N3pNNTEyIDE3NmE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwek0zMjAgMjU2YTY0IDY0IDAgMSAwIDAtMTI4IDY0IDY0IDAgMSAwIDAgMTI4elwiXVxufTtcbmNvbnN0IGZhUGVvcGxlUm9vZiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwZW9wbGUtcm9vZicsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTUzN1wiLCBcIk0zMzUuNSA0bDI4OCAxNjBjMTUuNCA4LjYgMjEgMjguMSAxMi40IDQzLjVzLTI4LjEgMjEtNDMuNSAxMi40TDMyMCA2OC42IDQ3LjUgMjIwYy0xNS40IDguNi0zNC45IDMtNDMuNS0xMi40cy0zLTM0LjkgMTIuNC00My41TDMwNC41IDRjOS43LTUuNCAyMS40LTUuNCAzMS4xIDB6TTMyMCAxNjBhNDAgNDAgMCAxIDEgMCA4MCA0MCA0MCAwIDEgMSAwLTgwek0xNDQgMjU2YTQwIDQwIDAgMSAxIDAgODAgNDAgNDAgMCAxIDEgMC04MHptMzEyIDQwYTQwIDQwIDAgMSAxIDgwIDAgNDAgNDAgMCAxIDEgLTgwIDB6TTIyNi45IDQ5MS40TDIwMCA0NDEuNWwwIDM4LjVjMCAxNy43LTE0LjMgMzItMzIgMzJsLTQ4IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtMzguNUw2MS4xIDQ5MS40Yy02LjMgMTEuNy0yMC44IDE2LTMyLjUgOS44cy0xNi0yMC44LTkuOC0zMi41bDM3LjktNzAuM2MxNS4zLTI4LjUgNDUuMS00Ni4zIDc3LjUtNDYuM2wxOS41IDBjMTYuMyAwIDMxLjkgNC41IDQ1LjQgMTIuNmwzMy42LTYyLjNjMTUuMy0yOC41IDQ1LjEtNDYuMyA3Ny41LTQ2LjNsMTkuNSAwYzMyLjQgMCA2Mi4xIDE3LjggNzcuNSA0Ni4zbDMzLjYgNjIuM2MxMy41LTguMSAyOS4xLTEyLjYgNDUuNC0xMi42bDE5LjUgMGMzMi40IDAgNjIuMSAxNy44IDc3LjUgNDYuM2wzNy45IDcwLjNjNi4zIDExLjcgMS45IDI2LjItOS44IDMyLjVzLTI2LjIgMS45LTMyLjUtOS44TDU1MiA0NDEuNWwwIDM4LjVjMCAxNy43LTE0LjMgMzItMzIgMzJsLTQ4IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtMzguNS0yNi45IDQ5LjljLTYuMyAxMS43LTIwLjggMTYtMzIuNSA5LjhzLTE2LTIwLjgtOS44LTMyLjVsMzYuMy02Ny41Yy0xLjctMS43LTMuMi0zLjYtNC4zLTUuOEwzNzYgMzQ1LjVsMCA1NC41YzAgMTcuNy0xNC4zIDMyLTMyIDMybC00OCAwYy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTU0LjUtMjYuOSA0OS45Yy0xLjIgMi4yLTIuNiA0LjEtNC4zIDUuOGwzNi4zIDY3LjVjNi4zIDExLjcgMS45IDI2LjItOS44IDMyLjVzLTI2LjIgMS45LTMyLjUtOS44elwiXVxufTtcbmNvbnN0IGZhUGVvcGxlTGluZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwZW9wbGUtbGluZScsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTUzNFwiLCBcIk0zNjAgNzJhNDAgNDAgMCAxIDAgLTgwIDAgNDAgNDAgMCAxIDAgODAgMHpNMTQ0IDIwOGE0MCA0MCAwIDEgMCAwLTgwIDQwIDQwIDAgMSAwIDAgODB6TTMyIDQxNmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmw1NzYgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkwzMiA0MTZ6TTQ5NiAyMDhhNDAgNDAgMCAxIDAgMC04MCA0MCA0MCAwIDEgMCAwIDgwek0yMDAgMzEzLjVsMjYuOSA0OS45YzYuMyAxMS43IDIwLjggMTYgMzIuNSA5LjhzMTYtMjAuOCA5LjgtMzIuNWwtMzYuMy02Ny41YzEuNy0xLjcgMy4yLTMuNiA0LjMtNS44TDI2NCAyMTcuNWwwIDU0LjVjMCAxNy43IDE0LjMgMzIgMzIgMzJsNDggMGMxNy43IDAgMzItMTQuMyAzMi0zMmwwLTU0LjUgMjYuOSA0OS45YzEuMiAyLjIgMi42IDQuMSA0LjMgNS44bC0zNi4zIDY3LjVjLTYuMyAxMS43LTEuOSAyNi4yIDkuOCAzMi41czI2LjIgMS45IDMyLjUtOS44TDQ0MCAzMTMuNWwwIDM4LjVjMCAxNy43IDE0LjMgMzIgMzIgMzJsNDggMGMxNy43IDAgMzItMTQuMyAzMi0zMmwwLTM4LjUgMjYuOSA0OS45YzYuMyAxMS43IDIwLjggMTYgMzIuNSA5LjhzMTYtMjAuOCA5LjgtMzIuNWwtMzcuOS03MC4zYy0xNS4zLTI4LjUtNDUuMS00Ni4zLTc3LjUtNDYuM2wtMTkuNSAwYy0xNi4zIDAtMzEuOSA0LjUtNDUuNCAxMi42bC0zMy42LTYyLjNjLTE1LjMtMjguNS00NS4xLTQ2LjMtNzcuNS00Ni4zbC0xOS41IDBjLTMyLjQgMC02Mi4xIDE3LjgtNzcuNSA0Ni4zbC0zMy42IDYyLjNjLTEzLjUtOC4xLTI5LjEtMTIuNi00NS40LTEyLjZsLTE5LjUgMGMtMzIuNCAwLTYyLjEgMTcuOC03Ny41IDQ2LjNMMTguOSAzNDAuNmMtNi4zIDExLjctMS45IDI2LjIgOS44IDMyLjVzMjYuMiAxLjkgMzIuNS05LjhMODggMzEzLjUgODggMzUyYzAgMTcuNyAxNC4zIDMyIDMyIDMybDQ4IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJsMC0zOC41elwiXVxufTtcbmNvbnN0IGZhQmVlck11Z0VtcHR5ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JlZXItbXVnLWVtcHR5JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXCJiZWVyXCJdLCBcImYwZmNcIiwgXCJNMzIgNjRjMC0xNy43IDE0LjMtMzIgMzItMzJsMjg4IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCAzMiA1MS4yIDBjNDIuNCAwIDc2LjggMzQuNCA3Ni44IDc2LjhsMCAxMDIuMWMwIDMwLjQtMTcuOSA1Ny45LTQ1LjYgNzAuMkwzODQgMzgxLjdsMCAzNC4zYzAgMzUuMy0yOC43IDY0LTY0IDY0TDk2IDQ4MGMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMzIgNjR6TTM4NCAzMTEuNmw1Ni40LTI1LjFjNC42LTIuMSA3LjYtNi42IDcuNi0xMS43bDAtMTAyLjFjMC03LjEtNS43LTEyLjgtMTIuOC0xMi44TDM4NCAxNjBsMCAxNTEuNnpNMTYwIDE0NGMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNmwwIDIyNGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2bDAtMjI0em02NCAwYzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2bDAgMjI0YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZsMC0yMjR6bTY0IDBjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZsMCAyMjRjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNmwwLTIyNHpcIl1cbn07XG5jb25zdCBmYUJlZXIgPSBmYUJlZXJNdWdFbXB0eTtcbmNvbnN0IGZhRGlhZ3JhbVByZWRlY2Vzc29yID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2RpYWdyYW0tcHJlZGVjZXNzb3InLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImU0NzdcIiwgXCJNNDQ4IDQxNmwwLTY0TDY0IDM1MmwwIDY0IDM4NCAwem0wIDY0TDY0IDQ4MGMtMzUuMyAwLTY0LTI4LjctNjQtNjRsMC02NGMwLTM1LjMgMjguNy02NCA2NC02NGwzODQgMGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDY0YzAgMzUuMy0yOC43IDY0LTY0IDY0ek0yODggMTYwYzAgMzUuMy0yOC43IDY0LTY0IDY0TDY0IDIyNGMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCA5NkMwIDYwLjcgMjguNyAzMiA2NCAzMmwxNDQgMCAxNiAwIDE0NCAwYzQ0LjIgMCA4MCAzNS44IDgwIDgwbDAgMTYgMzguMSAwYzIxLjQgMCAzMi4xIDI1LjkgMTcgNDFMNDMzIDIzOWMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBMMzI5IDE2OWMtMTUuMS0xNS4xLTQuNC00MSAxNy00MWwzOC4xIDAgMC0xNmMwLTguOC03LjItMTYtMTYtMTZsLTgwIDAgMCA2NHpcIl1cbn07XG5jb25zdCBmYUFycm93VXBMb25nID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Fycm93LXVwLWxvbmcnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtcImxvbmctYXJyb3ctdXBcIl0sIFwiZjE3NlwiLCBcIk0yMTQuNiA5LjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwbC0xMjggMTI4Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwTDE2MCAxMDkuMyAxNjAgNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0zNzAuNyA3My40IDczLjRjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM2wtMTI4LTEyOHpcIl1cbn07XG5jb25zdCBmYUxvbmdBcnJvd1VwID0gZmFBcnJvd1VwTG9uZztcbmNvbnN0IGZhRmlyZUZsYW1lU2ltcGxlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZpcmUtZmxhbWUtc2ltcGxlJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXCJidXJuXCJdLCBcImY0NmFcIiwgXCJNMzcyLjUgMjU2LjVsLS43LTEuOUMzMzcuOCAxNjAuOCAyODIgNzYuNSAyMDkuMSA4LjVsLTMuMy0zQzIwMi4xIDIgMTk3LjEgMCAxOTIgMHMtMTAuMSAyLTEzLjggNS41bC0zLjMgM0MxMDIgNzYuNSA0Ni4yIDE2MC44IDEyLjIgMjU0LjZsLS43IDEuOUMzLjkgMjc3LjMgMCAyOTkuNCAwIDMyMS42QzAgNDI2LjcgODYuOCA1MTIgMTkyIDUxMnMxOTItODUuMyAxOTItMTkwLjRjMC0yMi4yLTMuOS00NC4yLTExLjUtNjUuMXptLTkwLjggNDkuNWM0LjEgOS4zIDYuMiAxOS40IDYuMiAyOS41YzAgNTMtNDMgOTYuNS05NiA5Ni41cy05Ni00My41LTk2LTk2LjVjMC0xMC4xIDIuMS0yMC4zIDYuMi0yOS41bDEuOS00LjNjMTUuOC0zNS40IDM3LjktNjcuNyA2NS4zLTk1LjFsOC45LTguOWMzLjYtMy42IDguNS01LjYgMTMuNi01LjZzMTAgMiAxMy42IDUuNmw4LjkgOC45YzI3LjQgMjcuNCA0OS42IDU5LjcgNjUuMyA5NS4xbDEuOSA0LjN6XCJdXG59O1xuY29uc3QgZmFCdXJuID0gZmFGaXJlRmxhbWVTaW1wbGU7XG5jb25zdCBmYVBlcnNvbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwZXJzb24nLFxuICBpY29uOiBbMzIwLCA1MTIsIFsxMjk0ODUsIFwibWFsZVwiXSwgXCJmMTgzXCIsIFwiTTExMiA0OGE0OCA0OCAwIDEgMSA5NiAwIDQ4IDQ4IDAgMSAxIC05NiAwem00MCAzMDRsMCAxMjhjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC0yMjMuMUw1OS40IDMwNC41Yy05LjEgMTUuMS0yOC44IDIwLTQzLjkgMTAuOXMtMjAtMjguOC0xMC45LTQzLjlsNTguMy05N2MxNy40LTI4LjkgNDguNi00Ni42IDgyLjMtNDYuNmwyOS43IDBjMzMuNyAwIDY0LjkgMTcuNyA4Mi4zIDQ2LjZsNTguMyA5N2M5LjEgMTUuMSA0LjIgMzQuOC0xMC45IDQzLjlzLTM0LjggNC4yLTQzLjktMTAuOUwyMzIgMjU2LjkgMjMyIDQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTEyOC0xNiAwelwiXVxufTtcbmNvbnN0IGZhTWFsZSA9IGZhUGVyc29uO1xuY29uc3QgZmFMYXB0b3AgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbGFwdG9wJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbMTI4MTg3XSwgXCJmMTA5XCIsIFwiTTEyOCAzMkM5Mi43IDMyIDY0IDYwLjcgNjQgOTZsMCAyNTYgNjQgMCAwLTI1NiAzODQgMCAwIDI1NiA2NCAwIDAtMjU2YzAtMzUuMy0yOC43LTY0LTY0LTY0TDEyOCAzMnpNMTkuMiAzODRDOC42IDM4NCAwIDM5Mi42IDAgNDAzLjJDMCA0NDUuNiAzNC40IDQ4MCA3Ni44IDQ4MGw0ODYuNCAwYzQyLjQgMCA3Ni44LTM0LjQgNzYuOC03Ni44YzAtMTAuNi04LjYtMTkuMi0xOS4yLTE5LjJMMTkuMiAzODR6XCJdXG59O1xuY29uc3QgZmFGaWxlQ3N2ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZpbGUtY3N2JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNmRkXCIsIFwiTTAgNjRDMCAyOC43IDI4LjcgMCA2NCAwTDIyNCAwbDAgMTI4YzAgMTcuNyAxNC4zIDMyIDMyIDMybDEyOCAwIDAgMTQ0LTIwOCAwYy0zNS4zIDAtNjQgMjguNy02NCA2NGwwIDE0NC00OCAwYy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDY0em0zODQgNjRsLTEyOCAwTDI1NiAwIDM4NCAxMjh6TTIwMCAzNTJsMTYgMGMyMi4xIDAgNDAgMTcuOSA0MCA0MGwwIDhjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZsMC04YzAtNC40LTMuNi04LTgtOGwtMTYgMGMtNC40IDAtOCAzLjYtOCA4bDAgODBjMCA0LjQgMy42IDggOCA4bDE2IDBjNC40IDAgOC0zLjYgOC04bDAtOGMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2bDAgOGMwIDIyLjEtMTcuOSA0MC00MCA0MGwtMTYgMGMtMjIuMSAwLTQwLTE3LjktNDAtNDBsMC04MGMwLTIyLjEgMTcuOS00MCA0MC00MHptMTMzLjEgMGwzNC45IDBjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZsLTM0LjkgMGMtNy4yIDAtMTMuMSA1LjktMTMuMSAxMy4xYzAgNS4yIDMgOS45IDcuOCAxMmwzNy40IDE2LjZjMTYuMyA3LjIgMjYuOCAyMy40IDI2LjggNDEuMmMwIDI0LjktMjAuMiA0NS4xLTQ1LjEgNDUuMUwzMDQgNTEyYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2bDQyLjkgMGM3LjIgMCAxMy4xLTUuOSAxMy4xLTEzLjFjMC01LjItMy05LjktNy44LTEybC0zNy40LTE2LjZjLTE2LjMtNy4yLTI2LjgtMjMuNC0yNi44LTQxLjJjMC0yNC45IDIwLjItNDUuMSA0NS4xLTQ1LjF6bTk4LjkgMGM4LjggMCAxNiA3LjIgMTYgMTZsMCAzMS42YzAgMjMgNS41IDQ1LjYgMTYgNjZjMTAuNS0yMC4zIDE2LTQyLjkgMTYtNjZsMC0zMS42YzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZsMCAzMS42YzAgMzQuNy0xMC4zIDY4LjctMjkuNiA5Ny42bC01LjEgNy43Yy0zIDQuNS04IDcuMS0xMy4zIDcuMXMtMTAuMy0yLjctMTMuMy03LjFsLTUuMS03LjdjLTE5LjMtMjguOS0yOS42LTYyLjktMjkuNi05Ny42bDAtMzEuNmMwLTguOCA3LjItMTYgMTYtMTZ6XCJdXG59O1xuY29uc3QgZmFNZW5vcmFoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21lbm9yYWgnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY2NzZcIiwgXCJNMjAuOCA3LjRDMjIuOCAyLjkgMjcuMSAwIDMyIDBzOS4yIDIuOSAxMS4yIDcuNEw2MS4zIDQ5LjdjMS44IDQuMSAyLjcgOC42IDIuNyAxMy4xTDY0IDY0YzAgMTcuNy0xNC4zIDMyLTMyIDMyUzAgODEuNyAwIDY0bDAtMS4yYzAtNC41IC45LTguOSAyLjctMTMuMUwyMC44IDcuNHptOTYgMEMxMTguOCAyLjkgMTIzLjEgMCAxMjggMHM5LjIgMi45IDExLjIgNy40bDE4LjIgNDIuNGMxLjggNC4xIDIuNyA4LjYgMi43IDEzLjFsMCAxLjJjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC0xLjJjMC00LjUgLjktOC45IDIuNy0xMy4xTDExNi44IDcuNHptNzcuOCA0Mi40TDIxMi44IDcuNEMyMTQuOCAyLjkgMjE5LjEgMCAyMjQgMHM5LjIgMi45IDExLjIgNy40bDE4LjIgNDIuNGMxLjggNC4xIDIuNyA4LjYgMi43IDEzLjFsMCAxLjJjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC0xLjJjMC00LjUgLjktOC45IDIuNy0xMy4xek0zMDguOCA3LjRDMzEwLjggMi45IDMxNS4xIDAgMzIwIDBzOS4yIDIuOSAxMS4yIDcuNGwxOC4yIDQyLjRjMS44IDQuMSAyLjcgOC42IDIuNyAxMy4xbDAgMS4yYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtMS4yYzAtNC41IC45LTguOSAyLjctMTMuMUwzMDguOCA3LjR6bTc3LjggNDIuNEw0MDQuOCA3LjRDNDA2LjggMi45IDQxMS4xIDAgNDE2IDBzOS4yIDIuOSAxMS4yIDcuNGwxOC4yIDQyLjRjMS44IDQuMSAyLjcgOC42IDIuNyAxMy4xbDAgMS4yYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtMS4yYzAtNC41IC45LTguOSAyLjctMTMuMXpNNTAwLjggNy40QzUwMi44IDIuOSA1MDcuMSAwIDUxMiAwczkuMiAyLjkgMTEuMiA3LjRsMTguMiA0Mi40YzEuOCA0LjEgMi43IDguNiAyLjcgMTMuMWwwIDEuMmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTEuMmMwLTQuNSAuOS04LjkgMi43LTEzLjFMNTAwLjggNy40em03Ny44IDQyLjRMNTk2LjggNy40QzU5OC44IDIuOSA2MDMuMSAwIDYwOCAwczkuMiAyLjkgMTEuMiA3LjRsMTguMiA0Mi40YzEuOCA0LjEgMi43IDguNiAyLjcgMTMuMWwwIDEuMmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTEuMmMwLTQuNSAuOS04LjkgMi43LTEzLjF6TTMyIDEyOGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDEyOGMwIDE3LjcgMTQuMyAzMiAzMiAzMmwxOTIgMCAwLTE2MGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMybDAgMTYwIDE5MiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMybDAtMTI4YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJsMCAxMjhjMCA1My00MyA5Ni05NiA5NmwtMTkyIDAgMCA2NCAxMjggMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtMTYwIDAtMTYwIDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJsMTI4IDAgMC02NEw5NiAzODRjLTUzIDAtOTYtNDMtOTYtOTZMMCAxNjBjMC0xNy43IDE0LjMtMzIgMzItMzJ6bTk2IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCA5NiAwIDMyLTY0IDAgMC0zMiAwLTk2YzAtMTcuNyAxNC4zLTMyIDMyLTMyem05NiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgOTYgMCAzMi02NCAwIDAtMzIgMC05NmMwLTE3LjcgMTQuMy0zMiAzMi0zMnptMTkyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCA5NiAwIDMyLTY0IDAgMC0zMiAwLTk2YzAtMTcuNyAxNC4zLTMyIDMyLTMyem05NiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgOTYgMCAzMi02NCAwIDAtMzIgMC05NmMwLTE3LjcgMTQuMy0zMiAzMi0zMnpcIl1cbn07XG5jb25zdCBmYVRydWNrUGxhbmUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndHJ1Y2stcGxhbmUnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU1OGZcIiwgXCJNMjAwIDBjLTMwLjYgMC01NiA1NC43LTU2IDg2LjFsMCAxMDYuNUw3LjggMjc0LjNDMi45IDI3Ny4yIDAgMjgyLjQgMCAyODhsMCA2NGMwIDUuMSAyLjQgOS44IDYuNCAxMi44czkuMyAzLjkgMTQuMSAyLjVsMTIzLjQtMzcgMCA4MS4yLTUwIDQwYy0zLjggMy02IDcuNi02IDEyLjVsMCAzMmMwIDUuMSAyLjUgMTAgNi42IDEzczkuNSAzLjggMTQuNCAyLjJMMjAwIDQ4MC45IDI5MC40IDUxMWMtMS42LTQuNy0yLjQtOS44LTIuNC0xNWwwLTMyLjZjLTE4LjItMTAuNS0zMC43LTI5LjctMzEuOS01MS44bC0uMS0uMSAwLTMuNSAwLTgyLjVMMjU2IDE4NGwwLTEuMXMwIDAgMCAwbDAtOTYuOUMyNTYgNTQuNyAyMzEuNSAwIDIwMCAwem04OCAxNzZsMCAyMjRjMCAyMC45IDEzLjQgMzguNyAzMiA0NS4zbDAgNDIuN2MwIDEzLjMgMTAuNyAyNCAyNCAyNGwxNiAwYzEzLjMgMCAyNC0xMC43IDI0LTI0bDAtNDAgMTYwIDAgMCA0MGMwIDEzLjMgMTAuNyAyNCAyNCAyNGwxNiAwYzEzLjMgMCAyNC0xMC43IDI0LTI0bDAtNDIuN2MxOC42LTYuNiAzMi0yNC40IDMyLTQ1LjNsMC0yMjRjMC0yNi41LTIxLjUtNDgtNDgtNDhsLTI1NiAwYy0yNi41IDAtNDggMjEuNS00OCA0OHptNzkuOCA3OC43YzMuMy04LjcgMTEuMi0xNC43IDIwLjUtMTQuN2wxNTEuNCAwYzkuMiAwIDE3LjIgNiAyMC41IDE0LjdMNTc2IDMwNGwtMjI0IDAgMTUuOC00OS4zek01NjggMzUyYTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHpNMzM2IDM3NmEyNCAyNCAwIDEgMSA0OCAwIDI0IDI0IDAgMSAxIC00OCAwelwiXVxufTtcbmNvbnN0IGZhUmVjb3JkVmlueWwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncmVjb3JkLXZpbnlsJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmOGQ5XCIsIFwiTTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnptMjU2LTk2YTk2IDk2IDAgMSAxIDAgMTkyIDk2IDk2IDAgMSAxIDAtMTkyem0wIDIyNGExMjggMTI4IDAgMSAwIDAtMjU2IDEyOCAxMjggMCAxIDAgMCAyNTZ6bTAtOTZhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0elwiXVxufTtcbmNvbnN0IGZhRmFjZUdyaW5TdGFycyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmYWNlLWdyaW4tc3RhcnMnLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjkzMjEsIFwiZ3Jpbi1zdGFyc1wiXSwgXCJmNTg3XCIsIFwiTTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnptNDA3LjQgNzUuNWM1LTExLjgtNy0yMi41LTE5LjMtMTguN2MtMzkuNyAxMi4yLTg0LjUgMTktMTMxLjggMTlzLTkyLjEtNi44LTEzMS44LTE5Yy0xMi4zLTMuOC0yNC4zIDYuOS0xOS4zIDE4LjdjMjUgNTkuMSA4My4yIDEwMC41IDE1MS4xIDEwMC41czEyNi4yLTQxLjQgMTUxLjEtMTAwLjV6TTE2MCAxMjBjLTMuMSAwLTUuOSAxLjgtNy4yIDQuNmwtMTYuNiAzNC43LTM4LjEgNWMtMy4xIC40LTUuNiAyLjUtNi42IDUuNXMtLjEgNi4yIDIuMSA4LjNsMjcuOSAyNi41LTcgMzcuOGMtLjYgMyAuNyA2LjEgMy4yIDcuOXM1LjggMiA4LjUgLjZMMTYwIDIzMi41bDMzLjggMTguM2MyLjcgMS41IDYgMS4zIDguNS0uNnMzLjctNC45IDMuMi03LjlsLTctMzcuOEwyMjYuNCAxNzhjMi4yLTIuMSAzLjEtNS4zIDIuMS04LjNzLTMuNS01LjEtNi42LTUuNWwtMzguMS01LTE2LjYtMzQuN2MtMS4zLTIuOC00LjEtNC42LTcuMi00LjZ6bTE5MiAwYy0zLjEgMC01LjkgMS44LTcuMiA0LjZsLTE2LjYgMzQuNy0zOC4xIDVjLTMuMSAuNC01LjYgMi41LTYuNiA1LjVzLS4xIDYuMiAyLjEgOC4zbDI3LjkgMjYuNS03IDM3LjhjLS42IDMgLjcgNi4xIDMuMiA3LjlzNS44IDIgOC41IC42TDM1MiAyMzIuNWwzMy44IDE4LjNjMi43IDEuNSA2IDEuMyA4LjUtLjZzMy43LTQuOSAzLjItNy45bC03LTM3LjhMNDE4LjQgMTc4YzIuMi0yLjEgMy4xLTUuMyAyLjEtOC4zcy0zLjUtNS4xLTYuNi01LjVsLTM4LjEtNS0xNi42LTM0LjdjLTEuMy0yLjgtNC4xLTQuNi03LjItNC42elwiXVxufTtcbmNvbnN0IGZhR3JpblN0YXJzID0gZmFGYWNlR3JpblN0YXJzO1xuY29uc3QgZmFCb25nID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JvbmcnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImY1NWNcIiwgXCJNMTYwIDIwOC41YzAgMjkuMS0xNS42IDUzLjktMzcuMiA2Ny44Yy0xNy4yIDExLjEtMzEuNSAyNi4xLTQxLjcgNDMuN2wyMjEuOCAwYy0xMC4yLTE3LjYtMjQuNS0zMi42LTQxLjctNDMuN2MtMjEuNi0xMy45LTM3LjItMzguNy0zNy4yLTY3LjhMMjI0IDY0bC02NCAwIDAgMTQ0LjV6TTI4OCA2NGwwIDE0NC41YzAgNS43IDMuMSAxMC45IDcuOSAxNGMxMS4yIDcuMiAyMS41IDE1LjUgMzAuOSAyNC44TDM2Ni4xIDIwOGwtNy03Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXMyNC42LTkuNCAzMy45IDBsMjQgMjQgMjQgMjRjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMGwtNy03LTQzLjMgNDMuM0MzNzQgMzE0LjEgMzg0IDM0Ny45IDM4NCAzODRjMCAzOS40LTExLjkgNzYuMS0zMi4yIDEwNi41Yy05LjYgMTQuNC0yNi41IDIxLjUtNDMuOCAyMS41TDc2LjEgNTEyYy0xNy4zIDAtMzQuMi03LjEtNDMuOC0yMS41QzExLjkgNDYwLjEgMCA0MjMuNCAwIDM4NGMwLTY3LjggMzUuMS0xMjcuMyA4OC4xLTE2MS41YzQuOC0zLjEgNy45LTguMyA3LjktMTRMOTYgNjRDNzguMyA2NCA2NCA0OS43IDY0IDMyUzc4LjMgMCA5NiAwbDE2IDBMMjcyIDBsMTYgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMnpcIl1cbn07XG5jb25zdCBmYVNwYWdoZXR0aU1vbnN0ZXJGbHlpbmcgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3BhZ2hldHRpLW1vbnN0ZXItZmx5aW5nJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXCJwYXN0YWZhcmlhbmlzbVwiXSwgXCJmNjdiXCIsIFwiTTIwOCA2NGExNiAxNiAwIDEgMCAtMzIgMCAxNiAxNiAwIDEgMCAzMiAwem00OCAwYzAgMTYuMi02IDMxLjEtMTYgNDIuM2wxNS42IDMxLjJjMTguNy02IDM5LjktOS41IDY0LjQtOS41czQ1LjggMy41IDY0LjQgOS41TDQwMCAxMDYuM0MzOTAgOTUuMSAzODQgODAuMiAzODQgNjRjMC0zNS4zIDI4LjctNjQgNjQtNjRzNjQgMjguNyA2NCA2NHMtMjguNyA2NC02NCA2NGMtMS43IDAtMy40LS4xLTUuMS0uMkw0MjcuOCAxNThjMjEuMSAxMy42IDM3LjcgMzAuMiA1MS40IDQ2LjRjNy4xIDguMyAxMy41IDE2LjYgMTkuMyAyNGwxLjQgMS44YzYuMyA4LjEgMTEuNiAxNC44IDE2LjcgMjAuNEM1MjcuMyAyNjIuMyA1MzIuNyAyNjQgNTM2IDI2NGMyLjUgMCA0LjMtLjYgNy4xLTMuM2MzLjctMy41IDcuMS04LjggMTIuNS0xNy40bC42LS45YzQuNi03LjQgMTEtMTcuNiAxOS40LTI1LjdjOS43LTkuMyAyMi45LTE2LjcgNDAuNC0xNi43YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0Yy0yLjUgMC00LjMgLjYtNy4xIDMuM2MtMy43IDMuNS03LjEgOC44LTEyLjUgMTcuNGwtLjYgLjljLTQuNiA3LjQtMTEgMTcuNi0xOS40IDI1LjdjLTkuNyA5LjMtMjIuOSAxNi43LTQwLjQgMTYuN2MtMTguNSAwLTMyLjktOC41LTQ0LjMtMTguNmMtMy4xIDQtNi42IDguMy0xMC41IDEyLjdjMS40IDQuMyAyLjggOC41IDQgMTIuNWMuOSAzIDEuOCA1LjggMi42IDguNmMzIDkuOCA1LjUgMTguMiA4LjYgMjUuOWMzLjkgOS44IDcuNCAxNS40IDEwLjggMTguNWMyLjYgMi40IDUuOSA0LjMgMTIuOCA0LjNjOC43IDAgMTYuOS00LjIgMzMuNy0xMy4yYzE1LTggMzUuNy0xOC44IDYyLjMtMTguOGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGMtMTMuNCAwLTI0LjcgNS4yLTM5LjcgMTMuMmMtMSAuNi0yLjEgMS4xLTMuMiAxLjdDNTU5LjkgNDE0IDU0MS40IDQyNCA1MjAgNDI0Yy0xOC40IDAtMzMuNi02LjEtNDUuNS0xNy4yYy0xMS4xLTEwLjMtMTcuOS0yMy43LTIyLjctMzZjLTMuNi05LTYuNy0xOS4xLTkuNS0yOC41Yy0xNi40IDEyLjMtMzYuMSAyMy42LTU4LjkgMzEuM2MzLjYgMTAuOCA4LjQgMjMuNSAxNC40IDM2LjJjNy41IDE1LjkgMTYuMiAzMC40IDI1LjggNDAuNUM0MzMgNDYwLjUgNDQxLjIgNDY0IDQ0OCA0NjRjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRjLTI1LjIgMC00NS0xMy41LTU5LjUtMjguOGMtMTQuNS0xNS40LTI1LjctMzQuOS0zNC4yLTUzYy04LTE3LTE0LjEtMzMuOC0xOC4zLTQ2LjljLTUuMiAuNC0xMC42IC42LTE2IC42cy0xMC44LS4yLTE2LS42Yy00LjIgMTMtMTAuMyAyOS45LTE4LjMgNDYuOWMtOC41IDE4LjEtMTkuOCAzNy42LTM0LjIgNTNDMjM3IDQ5OC41IDIxNy4yIDUxMiAxOTIgNTEyYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0YzYuOCAwIDE1LTMuNSAyNC41LTEzLjdjOS41LTEwLjEgMTguMy0yNC42IDI1LjgtNDAuNWM1LjktMTIuNiAxMC43LTI1LjQgMTQuNC0zNi4yYy0yMi44LTcuNy00Mi41LTE5LTU4LjktMzEuM2MtMi45IDkuNC02IDE5LjUtOS41IDI4LjVjLTQuOCAxMi4yLTExLjYgMjUuNi0yMi43IDM2QzE1My42IDQxNy45IDEzOC40IDQyNCAxMjAgNDI0Yy0yMS40IDAtMzkuOS0xMC01My4xLTE3LjFjMCAwIDAgMCAwIDBjLTEuMS0uNi0yLjItMS4yLTMuMi0xLjdjLTE1LTgtMjYuMy0xMy4yLTM5LjctMTMuMmMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGMyNi42IDAgNDcuMyAxMC44IDYyLjMgMTguOGMxNi44IDkgMjUgMTMuMiAzMy43IDEzLjJjNi44IDAgMTAuMi0xLjkgMTIuOC00LjNjMy40LTMuMiA3LTguOCAxMC44LTE4LjVjMy03LjcgNS42LTE2LjEgOC42LTI1LjljLjgtMi43IDEuNy01LjYgMi42LTguNmMxLjItNCAyLjYtOC4yIDQtMTIuNWMtMy45LTQuNS03LjQtOC44LTEwLjUtMTIuN0MxMzYuOSAzMDMuNSAxMjIuNSAzMTIgMTA0IDMxMmMtMTcuNSAwLTMwLjctNy40LTQwLjQtMTYuN2MtOC40LTguMS0xNC44LTE4LjMtMTkuNC0yNS43bC0uNi0uOWMtNS40LTguNi04LjgtMTMuOS0xMi41LTE3LjRjLTIuOC0yLjctNC42LTMuMy03LjEtMy4zYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0YzE3LjUgMCAzMC43IDcuNCA0MC40IDE2LjdjOC40IDguMSAxNC44IDE4LjMgMTkuNCAyNS43bC42IC45YzUuNCA4LjYgOC44IDEzLjkgMTIuNSAxNy40YzIuOCAyLjcgNC42IDMuMyA3LjEgMy4zYzMuMyAwIDguNy0xLjcgMTkuNC0xMy40YzUuMS01LjYgMTAuNC0xMi4zIDE2LjctMjAuNGwxLjQtMS44YzUuOC03LjQgMTIuMi0xNS43IDE5LjMtMjRjMTMuOC0xNi4yIDMwLjMtMzIuOCA1MS40LTQ2LjRsLTE1LjEtMzAuMmMtMS43IC4xLTMuNCAuMi01LjEgLjJjLTM1LjMgMC02NC0yOC43LTY0LTY0czI4LjctNjQgNjQtNjRzNjQgMjguNyA2NCA2NHptMjA4IDBhMTYgMTYgMCAxIDAgLTMyIDAgMTYgMTYgMCAxIDAgMzIgMHpcIl1cbn07XG5jb25zdCBmYVBhc3RhZmFyaWFuaXNtID0gZmFTcGFnaGV0dGlNb25zdGVyRmx5aW5nO1xuY29uc3QgZmFBcnJvd0Rvd25VcEFjcm9zc0xpbmUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYXJyb3ctZG93bi11cC1hY3Jvc3MtbGluZScsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZTRhZlwiLCBcIk0xMzcuNCA1MDIuNmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGw5Ni05NmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMEwxOTIgNDAyLjcgMTkyIDI4OGwzNTIgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtOTYgMCAwLTExNC43IDQxLjQgNDEuNGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zbC05Ni05NmMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBsLTk2IDk2Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwTDM4NCAxMDkuMyAzODQgMjI0bC0xOTIgMC02NCAwLTk2IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsOTYgMCAwIDExNC43TDg2LjYgMzYxLjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zbDk2IDk2ek0xMjggMTkybDY0IDAgMC0xMjhjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJsMCAxMjh6TTQ0OCAzMjBsLTY0IDAgMCAxMjhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTEyOHpcIl1cbn07XG5jb25zdCBmYVNwb29uID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3Nwb29uJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI5MzQ4LCA2MTg3MywgXCJ1dGVuc2lsLXNwb29uXCJdLCBcImYyZTVcIiwgXCJNMjQ1LjggMjIwLjljLTE0LjUtMTcuNi0yMS44LTM5LjItMjEuOC02MC44QzIyNCA4MCAzMjAgMCA0MTYgMGM1MyAwIDk2IDQzIDk2IDk2YzAgOTYtODAgMTkyLTE2MC4yIDE5MmMtMjEuNiAwLTQzLjItNy4zLTYwLjgtMjEuOEw1NC42IDUwMi42Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMHMtMTIuNS0zMi44IDAtNDUuM0wyNDUuOCAyMjAuOXpcIl1cbn07XG5jb25zdCBmYVV0ZW5zaWxTcG9vbiA9IGZhU3Bvb247XG5jb25zdCBmYUphcldoZWF0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2phci13aGVhdCcsXG4gIGljb246IFszMjAsIDUxMiwgW10sIFwiZTUxN1wiLCBcIk0zMiAzMkMzMiAxNC4zIDQ2LjMgMCA2NCAwTDI1NiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyTDY0IDY0QzQ2LjMgNjQgMzIgNDkuNyAzMiAzMnpNMCAxNjBjMC0zNS4zIDI4LjctNjQgNjQtNjRsMTkyIDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCAyODhjMCAzNS4zLTI4LjcgNjQtNjQgNjRMNjQgNTEyYy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDE2MHptMTEyIDBsLTQyLjIgMGMtMy4yIDAtNS44IDIuNi01LjggNS44QzY0IDE5OCA5MCAyMjQgMTIyLjIgMjI0bDIxLjggMCAzMiAwIDIxLjggMGMzMi4xIDAgNTguMi0yNiA1OC4yLTU4LjJjMC0zLjItMi42LTUuOC01LjgtNS44TDIwOCAxNjBjLTE5LjEgMC0zNi4zIDguNC00OCAyMS43Yy0xMS43LTEzLjMtMjguOS0yMS43LTQ4LTIxLjd6bTQ4IDExNy43Yy0xMS43LTEzLjMtMjguOS0yMS43LTQ4LTIxLjdsLTQyLjIgMGMtMy4yIDAtNS44IDIuNi01LjggNS44QzY0IDI5NCA5MCAzMjAgMTIyLjIgMzIwbDIxLjggMCAzMiAwIDIxLjggMGMzMi4xIDAgNTguMi0yNiA1OC4yLTU4LjJjMC0zLjItMi42LTUuOC01LjgtNS44TDIwOCAyNTZjLTE5LjEgMC0zNi4zIDguNC00OCAyMS43ek0xMTIgMzUybC00Mi4yIDBjLTMuMiAwLTUuOCAyLjYtNS44IDUuOEM2NCAzOTAgOTAgNDE2IDEyMi4yIDQxNmwyMS44IDAgMCAzMmMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2bDAtMzIgMjEuOCAwYzMyLjEgMCA1OC4yLTI2IDU4LjItNTguMmMwLTMuMi0yLjYtNS44LTUuOC01LjhMMjA4IDM1MmMtMTkuMSAwLTM2LjMgOC40LTQ4IDIxLjdjLTExLjctMTMuMy0yOC45LTIxLjctNDgtMjEuN3pcIl1cbn07XG5jb25zdCBmYUVudmVsb3Blc0J1bGsgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZW52ZWxvcGVzLWJ1bGsnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtcIm1haWwtYnVsa1wiXSwgXCJmNjc0XCIsIFwiTTEyOCAwQzExMC4zIDAgOTYgMTQuMyA5NiAzMmwwIDE5MiA5NiAwIDAtMzJjMC0zNS4zIDI4LjctNjQgNjQtNjRsMjI0IDAgMC05NmMwLTE3LjctMTQuMy0zMi0zMi0zMkwxMjggMHpNMjU2IDE2MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJsMCAzMiA5NiAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMTI4IDE5MiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMybDAtMTkyYzAtMTcuNy0xNC4zLTMyLTMyLTMybC0zMjAgMHptMjQwIDY0bDMyIDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgMzJjMCA4LjgtNy4yIDE2LTE2IDE2bC0zMiAwYy04LjggMC0xNi03LjItMTYtMTZsMC0zMmMwLTguOCA3LjItMTYgMTYtMTZ6TTY0IDI1NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJsMCAxM0wxODcuMSA0MTUuOWMxLjQgMSAzLjEgMS42IDQuOSAxLjZzMy41LS42IDQuOS0xLjZMMzUyIDMwMWwwLTEzYzAtMTcuNy0xNC4zLTMyLTMyLTMyTDY0IDI1NnptMjg4IDg0LjhMMjE2IDQ0MS42Yy02LjkgNS4xLTE1LjMgNy45LTI0IDcuOXMtMTctMi44LTI0LTcuOUwzMiAzNDAuOCAzMiA0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJsMjU2IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJsMC0xMzkuMnpcIl1cbn07XG5jb25zdCBmYU1haWxCdWxrID0gZmFFbnZlbG9wZXNCdWxrO1xuY29uc3QgZmFGaWxlQ2lyY2xlRXhjbGFtYXRpb24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmlsZS1jaXJjbGUtZXhjbGFtYXRpb24nLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImU0ZWJcIiwgXCJNMCA2NEMwIDI4LjcgMjguNyAwIDY0IDBMMjI0IDBsMCAxMjhjMCAxNy43IDE0LjMgMzIgMzIgMzJsMTI4IDAgMCAzOC42QzMxMC4xIDIxOS41IDI1NiAyODcuNCAyNTYgMzY4YzAgNTkuMSAyOS4xIDExMS4zIDczLjcgMTQzLjNjLTMuMiAuNS02LjQgLjctOS43IC43TDY0IDUxMmMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCA2NHptMzg0IDY0bC0xMjggMEwyNTYgMCAzODQgMTI4em00OCA5NmExNDQgMTQ0IDAgMSAxIDAgMjg4IDE0NCAxNDQgMCAxIDEgMC0yODh6bTAgMjQwYTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHptMC0xOTJjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDgwYzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZsMC04MGMwLTguOC03LjItMTYtMTYtMTZ6XCJdXG59O1xuY29uc3QgZmFDaXJjbGVIID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NpcmNsZS1oJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbOTQwNSwgXCJob3NwaXRhbC1zeW1ib2xcIl0sIFwiZjQ3ZVwiLCBcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMzY4IDE1MmwwIDEwNCAwIDEwNGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNGwwLTgwLTEyOCAwIDAgODBjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRsMC0yMDhjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNGwwIDgwIDEyOCAwIDAtODBjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNHpcIl1cbn07XG5jb25zdCBmYUhvc3BpdGFsU3ltYm9sID0gZmFDaXJjbGVIO1xuY29uc3QgZmFQYWdlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwYWdlcicsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyODIyM10sIFwiZjgxNVwiLCBcIk0wIDEyOEMwIDkyLjcgMjguNyA2NCA2NCA2NGwzODQgMGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDI1NmMwIDM1LjMtMjguNyA2NC02NCA2NEw2NCA0NDhjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgMTI4em02NCAzMmwwIDY0YzAgMTcuNyAxNC4zIDMyIDMyIDMybDMyMCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMybDAtNjRjMC0xNy43LTE0LjMtMzItMzItMzJMOTYgMTI4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnpNODAgMzIwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0bDU2IDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRsLTU2IDB6bTEzNiAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0bDQ4IDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRsLTQ4IDB6XCJdXG59O1xuY29uc3QgZmFBZGRyZXNzQm9vayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhZGRyZXNzLWJvb2snLFxuICBpY29uOiBbNTEyLCA1MTIsIFs2MjEzOCwgXCJjb250YWN0LWJvb2tcIl0sIFwiZjJiOVwiLCBcIk05NiAwQzYwLjcgMCAzMiAyOC43IDMyIDY0bDAgMzg0YzAgMzUuMyAyOC43IDY0IDY0IDY0bDI4OCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMzg0YzAtMzUuMy0yOC43LTY0LTY0LTY0TDk2IDB6TTIwOCAyODhsNjQgMGM0NC4yIDAgODAgMzUuOCA4MCA4MGMwIDguOC03LjIgMTYtMTYgMTZsLTE5MiAwYy04LjggMC0xNi03LjItMTYtMTZjMC00NC4yIDM1LjgtODAgODAtODB6bS0zMi05NmE2NCA2NCAwIDEgMSAxMjggMCA2NCA2NCAwIDEgMSAtMTI4IDB6TTUxMiA4MGMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNmwwIDY0YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZsMC02NHpNNDk2IDE5MmMtOC44IDAtMTYgNy4yLTE2IDE2bDAgNjRjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNmwwLTY0YzAtOC44LTcuMi0xNi0xNi0xNnptMTYgMTQ0YzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2bDAgNjRjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNmwwLTY0elwiXVxufTtcbmNvbnN0IGZhQ29udGFjdEJvb2sgPSBmYUFkZHJlc3NCb29rO1xuY29uc3QgZmFTdHJpa2V0aHJvdWdoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3N0cmlrZXRocm91Z2gnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwY2NcIiwgXCJNMTYxLjMgMTQ0YzMuMi0xNy4yIDE0LTMwLjEgMzMuNy0zOC42YzIxLjEtOSA1MS44LTEyLjMgODguNi02LjVjMTEuOSAxLjkgNDguOCA5LjEgNjAuMSAxMmMxNy4xIDQuNSAzNC42LTUuNiAzOS4yLTIyLjdzLTUuNi0zNC42LTIyLjctMzkuMmMtMTQuMy0zLjgtNTMuNi0xMS40LTY2LjYtMTMuNGMtNDQuNy03LTg4LjMtNC4yLTEyMy43IDEwLjljLTM2LjUgMTUuNi02NC40IDQ0LjgtNzEuOCA4Ny4zYy0uMSAuNi0uMiAxLjEtLjIgMS43Yy0yLjggMjMuOSAuNSA0NS42IDEwLjEgNjQuNmM0LjUgOSAxMC4yIDE2LjkgMTYuNyAyMy45TDMyIDIyNGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmw0NDggMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtMjA5LjkgMC0uNC0uMS0xLjEtLjNjLTM2LTEwLjgtNjUuMi0xOS42LTg1LjItMzMuMWMtOS4zLTYuMy0xNS0xMi42LTE4LjItMTkuMWMtMy4xLTYuMS01LjItMTQuNi0zLjgtMjcuNHpNMzQ4LjkgMzM3LjJjMi43IDYuNSA0LjQgMTUuOCAxLjkgMzAuMWMtMyAxNy42LTEzLjggMzAuOC0zMy45IDM5LjRjLTIxLjEgOS01MS43IDEyLjMtODguNSA2LjVjLTE4LTIuOS00OS4xLTEzLjUtNzQuNC0yMi4xYy01LjYtMS45LTExLTMuNy0xNS45LTUuNGMtMTYuOC01LjYtMzQuOSAzLjUtNDAuNSAyMC4zczMuNSAzNC45IDIwLjMgNDAuNWMzLjYgMS4yIDcuOSAyLjcgMTIuNyA0LjNjMCAwIDAgMCAwIDBzMCAwIDAgMGMyNC45IDguNSA2My42IDIxLjcgODcuNiAyNS42YzAgMCAwIDAgMCAwbC4yIDBjNDQuNyA3IDg4LjMgNC4yIDEyMy43LTEwLjljMzYuNS0xNS42IDY0LjQtNDQuOCA3MS44LTg3LjNjMy42LTIxIDIuNy00MC40LTMuMS01OC4xbC03NS43IDBjNyA1LjYgMTEuNCAxMS4yIDEzLjkgMTcuMnpcIl1cbn07XG5jb25zdCBmYUsgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaycsXG4gIGljb246IFszMjAsIDUxMiwgWzEwN10sIFwiNGJcIiwgXCJNMzExIDg2LjNjMTIuMy0xMi43IDEyLTMyLjktLjctNDUuMnMtMzIuOS0xMi00NS4yIC43bC0xNTUuMiAxNjBMNjQgMjQ5IDY0IDY0YzAtMTcuNy0xNC4zLTMyLTMyLTMyUzAgNDYuMyAwIDY0TDAgMzI4IDAgNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0xMDcgNjQuNy02Ni43IDEzMyAxOTJjMTAuMSAxNC41IDMwIDE4LjEgNDQuNSA4LjFzMTguMS0zMCA4LjEtNDQuNUwxNzQuMSAyMjcuNCAzMTEgODYuM3pcIl1cbn07XG5jb25zdCBmYUxhbmRtYXJrRmxhZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdsYW5kbWFyay1mbGFnJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJlNTFjXCIsIFwiTTI3MiAwbDgwIDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgNjRjMCA4LjgtNy4yIDE2LTE2IDE2bC04MCAwIDAgMzIgMTkyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJMNDggMTkyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDE5MiAwIDAtMTEyYzAtOC44IDcuMi0xNiAxNi0xNmwxNiAwek02NCAyMjRsNjQgMCAwIDE5MiA0MCAwIDAtMTkyIDY0IDAgMCAxOTIgNDggMCAwLTE5MiA2NCAwIDAgMTkyIDQwIDAgMC0xOTIgNjQgMCAwIDE5Ni4zYy42IC4zIDEuMiAuNyAxLjggMS4xbDQ4IDMyYzExLjcgNy44IDE3IDIyLjQgMTIuOSAzNS45UzQ5NC4xIDUxMiA0ODAgNTEyTDMyIDUxMmMtMTQuMSAwLTI2LjUtOS4yLTMwLjYtMjIuN3MxLjEtMjguMSAxMi45LTM1LjlsNDgtMzJjLjYtLjQgMS4yLS43IDEuOC0xLjFMNjQgMjI0elwiXVxufTtcbmNvbnN0IGZhUGVuY2lsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BlbmNpbCcsXG4gIGljb246IFs1MTIsIDUxMiwgWzk5OTksIDYxNTA0LCBcInBlbmNpbC1hbHRcIl0sIFwiZjMwM1wiLCBcIk00MTAuMyAyMzFsMTEuMy0xMS4zLTMzLjktMzMuOS02Mi4xLTYyLjFMMjkxLjcgODkuOGwtMTEuMyAxMS4zLTIyLjYgMjIuNkw1OC42IDMyMi45Yy0xMC40IDEwLjQtMTggMjMuMy0yMi4yIDM3LjRMMSA0ODAuN2MtMi41IDguNC0uMiAxNy41IDYuMSAyMy43czE1LjMgOC41IDIzLjcgNi4xbDEyMC4zLTM1LjRjMTQuMS00LjIgMjctMTEuOCAzNy40LTIyLjJMMzg3LjcgMjUzLjcgNDEwLjMgMjMxek0xNjAgMzk5LjRsLTkuMSAyMi43Yy00IDMuMS04LjUgNS40LTEzLjMgNi45TDU5LjQgNDUybDIzLTc4LjFjMS40LTQuOSAzLjgtOS40IDYuOS0xMy4zbDIyLjctOS4xIDAgMzJjMCA4LjggNy4yIDE2IDE2IDE2bDMyIDB6TTM2Mi43IDE4LjdMMzQ4LjMgMzMuMiAzMjUuNyA1NS44IDMxNC4zIDY3LjFsMzMuOSAzMy45IDYyLjEgNjIuMSAzMy45IDMzLjkgMTEuMy0xMS4zIDIyLjYtMjIuNiAxNC41LTE0LjVjMjUtMjUgMjUtNjUuNSAwLTkwLjVMNDUzLjMgMTguN2MtMjUtMjUtNjUuNS0yNS05MC41IDB6bS00Ny40IDE2OGwtMTQ0IDE0NGMtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBzLTYuMi0xNi40IDAtMjIuNmwxNDQtMTQ0YzYuMi02LjIgMTYuNC02LjIgMjIuNiAwczYuMiAxNi40IDAgMjIuNnpcIl1cbn07XG5jb25zdCBmYVBlbmNpbEFsdCA9IGZhUGVuY2lsO1xuY29uc3QgZmFCYWNrd2FyZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdiYWNrd2FyZCcsXG4gIGljb246IFs1MTIsIDUxMiwgWzkxOTRdLCBcImYwNGFcIiwgXCJNNDU5LjUgNDQwLjZjOS41IDcuOSAyMi44IDkuNyAzNC4xIDQuNHMxOC40LTE2LjYgMTguNC0yOWwwLTMyMGMwLTEyLjQtNy4yLTIzLjctMTguNC0yOXMtMjQuNS0zLjYtMzQuMSA0LjRMMjg4IDIxNC4zbDAgNDEuNyAwIDQxLjdMNDU5LjUgNDQwLjZ6TTI1NiAzNTJsMC05NiAwLTEyOCAwLTMyYzAtMTIuNC03LjItMjMuNy0xOC40LTI5cy0yNC41LTMuNi0zNC4xIDQuNGwtMTkyIDE2MEM0LjIgMjM3LjUgMCAyNDYuNSAwIDI1NnM0LjIgMTguNSAxMS41IDI0LjZsMTkyIDE2MGM5LjUgNy45IDIyLjggOS43IDM0LjEgNC40czE4LjQtMTYuNiAxOC40LTI5bDAtNjR6XCJdXG59O1xuY29uc3QgZmFDYXJldFJpZ2h0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NhcmV0LXJpZ2h0JyxcbiAgaWNvbjogWzI1NiwgNTEyLCBbXSwgXCJmMGRhXCIsIFwiTTI0Ni42IDI3OC42YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zbC0xMjgtMTI4Yy05LjItOS4yLTIyLjktMTEuOS0zNC45LTYuOXMtMTkuOCAxNi42LTE5LjggMjkuNmwwIDI1NmMwIDEyLjkgNy44IDI0LjYgMTkuOCAyOS42czI1LjcgMi4yIDM0LjktNi45bDEyOC0xMjh6XCJdXG59O1xuY29uc3QgZmFDb21tZW50cyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjb21tZW50cycsXG4gIGljb246IFs2NDAsIDUxMiwgWzEyODQ5MCwgNjE2NzBdLCBcImYwODZcIiwgXCJNMjA4IDM1MmMxMTQuOSAwIDIwOC03OC44IDIwOC0xNzZTMzIyLjkgMCAyMDggMFMwIDc4LjggMCAxNzZjMCAzOC42IDE0LjcgNzQuMyAzOS42IDEwMy40Yy0zLjUgOS40LTguNyAxNy43LTE0LjIgMjQuN2MtNC44IDYuMi05LjcgMTEtMTMuMyAxNC4zYy0xLjggMS42LTMuMyAyLjktNC4zIDMuN2MtLjUgLjQtLjkgLjctMS4xIC44bC0uMiAuMnMwIDAgMCAwczAgMCAwIDBDMSAzMjcuMi0xLjQgMzM0LjQgLjggMzQwLjlTOS4xIDM1MiAxNiAzNTJjMjEuOCAwIDQzLjgtNS42IDYyLjEtMTIuNWM5LjItMy41IDE3LjgtNy40IDI1LjItMTEuNEMxMzQuMSAzNDMuMyAxNjkuOCAzNTIgMjA4IDM1MnpNNDQ4IDE3NmMwIDExMi4zLTk5LjEgMTk2LjktMjE2LjUgMjA3QzI1NS44IDQ1Ny40IDMzNi40IDUxMiA0MzIgNTEyYzM4LjIgMCA3My45LTguNyAxMDQuNy0yMy45YzcuNSA0IDE2IDcuOSAyNS4yIDExLjRjMTguMyA2LjkgNDAuMyAxMi41IDYyLjEgMTIuNWM2LjkgMCAxMy4xLTQuNSAxNS4yLTExLjFjMi4xLTYuNi0uMi0xMy44LTUuOC0xNy45YzAgMCAwIDAgMCAwczAgMCAwIDBsLS4yLS4yYy0uMi0uMi0uNi0uNC0xLjEtLjhjLTEtLjgtMi41LTItNC4zLTMuN2MtMy42LTMuMy04LjUtOC4xLTEzLjMtMTQuM2MtNS41LTctMTAuNy0xNS40LTE0LjItMjQuN2MyNC45LTI5IDM5LjYtNjQuNyAzOS42LTEwMy40YzAtOTIuOC04NC45LTE2OC45LTE5Mi42LTE3NS41Yy40IDUuMSAuNiAxMC4zIC42IDE1LjV6XCJdXG59O1xuY29uc3QgZmFQYXN0ZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwYXN0ZScsXG4gIGljb246IFs1MTIsIDUxMiwgW1wiZmlsZS1jbGlwYm9hcmRcIl0sIFwiZjBlYVwiLCBcIk0xNjAgMGMtMjMuNyAwLTQ0LjQgMTIuOS01NS40IDMyTDQ4IDMyQzIxLjUgMzIgMCA1My41IDAgODBMMCA0MDBjMCAyNi41IDIxLjUgNDggNDggNDhsMTQ0IDAgMC0yNzJjMC00NC4yIDM1LjgtODAgODAtODBsNDggMCAwLTE2YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4bC01Ni42IDBDMjA0LjQgMTIuOSAxODMuNyAwIDE2MCAwek0yNzIgMTI4Yy0yNi41IDAtNDggMjEuNS00OCA0OGwwIDI3MiAwIDE2YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4bDE5MiAwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4bDAtMjIwLjFjMC0xMi43LTUuMS0yNC45LTE0LjEtMzMuOWwtNjcuOS02Ny45Yy05LTktMjEuMi0xNC4xLTMzLjktMTQuMUwzMjAgMTI4bC00OCAwek0xNjAgNDBhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4elwiXVxufTtcbmNvbnN0IGZhRmlsZUNsaXBib2FyZCA9IGZhUGFzdGU7XG5jb25zdCBmYUNvZGVQdWxsUmVxdWVzdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjb2RlLXB1bGwtcmVxdWVzdCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZTEzY1wiLCBcIk0zMDUuOCAyLjFDMzE0LjQgNS45IDMyMCAxNC41IDMyMCAyNGwwIDQwIDE2IDBjNzAuNyAwIDEyOCA1Ny4zIDEyOCAxMjhsMCAxNjYuN2MyOC4zIDEyLjMgNDggNDAuNSA0OCA3My4zYzAgNDQuMi0zNS44IDgwLTgwIDgwcy04MC0zNS44LTgwLTgwYzAtMzIuOCAxOS43LTYxIDQ4LTczLjNMNDAwIDE5MmMwLTM1LjMtMjguNy02NC02NC02NGwtMTYgMCAwIDQwYzAgOS41LTUuNiAxOC4xLTE0LjIgMjEuOXMtMTguOCAyLjMtMjUuOC00LjFsLTgwLTcyYy01LjEtNC42LTcuOS0xMS03LjktMTcuOHMyLjktMTMuMyA3LjktMTcuOGw4MC03MmM3LTYuMyAxNy4yLTcuOSAyNS44LTQuMXpNMTA0IDgwQTI0IDI0IDAgMSAwIDU2IDgwYTI0IDI0IDAgMSAwIDQ4IDB6bTggNzMuM2wwIDIwNS4zYzI4LjMgMTIuMyA0OCA0MC41IDQ4IDczLjNjMCA0NC4yLTM1LjggODAtODAgODBzLTgwLTM1LjgtODAtODBjMC0zMi44IDE5LjctNjEgNDgtNzMuM2wwLTIwNS4zQzE5LjcgMTQxIDAgMTEyLjggMCA4MEMwIDM1LjggMzUuOCAwIDgwIDBzODAgMzUuOCA4MCA4MGMwIDMyLjgtMTkuNyA2MS00OCA3My4zek0xMDQgNDMyYTI0IDI0IDAgMSAwIC00OCAwIDI0IDI0IDAgMSAwIDQ4IDB6bTMyOCAyNGEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6XCJdXG59O1xuY29uc3QgZmFDbGlwYm9hcmRMaXN0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NsaXBib2FyZC1saXN0JyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmNDZkXCIsIFwiTTE5MiAwYy00MS44IDAtNzcuNCAyNi43LTkwLjUgNjRMNjQgNjRDMjguNyA2NCAwIDkyLjcgMCAxMjhMMCA0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMjU2IDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0zMjBjMC0zNS4zLTI4LjctNjQtNjQtNjRsLTM3LjUgMEMyNjkuNCAyNi43IDIzMy44IDAgMTkyIDB6bTAgNjRhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0ek03MiAyNzJhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHptMTA0LTE2bDEyOCAwYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2bC0xMjggMGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnpNNzIgMzY4YTI0IDI0IDAgMSAxIDQ4IDAgMjQgMjQgMCAxIDEgLTQ4IDB6bTg4IDBjMC04LjggNy4yLTE2IDE2LTE2bDEyOCAwYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2bC0xMjggMGMtOC44IDAtMTYtNy4yLTE2LTE2elwiXVxufTtcbmNvbnN0IGZhVHJ1Y2tSYW1wQm94ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RydWNrLXJhbXAtYm94JyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXCJ0cnVjay1sb2FkaW5nXCJdLCBcImY0ZGVcIiwgXCJNNjQwIDBsMCA0MDBjMCA2MS45LTUwLjEgMTEyLTExMiAxMTJjLTYxIDAtMTEwLjUtNDguNy0xMTItMTA5LjNMNDguNCA1MDIuOWMtMTcuMSA0LjYtMzQuNi01LjQtMzkuMy0yMi41czUuNC0zNC42IDIyLjUtMzkuM0wzNTIgMzUzLjggMzUyIDY0YzAtMzUuMyAyOC43LTY0IDY0LTY0TDY0MCAwek01NzYgNDAwYTQ4IDQ4IDAgMSAwIC05NiAwIDQ4IDQ4IDAgMSAwIDk2IDB6TTIzLjEgMjA3LjdjLTQuNi0xNy4xIDUuNi0zNC42IDIyLjYtMzkuMmw0Ni40LTEyLjQgMjAuNyA3Ny4zYzIuMyA4LjUgMTEuMSAxMy42IDE5LjYgMTEuM2wzMC45LTguM2M4LjUtMi4zIDEzLjYtMTEuMSAxMS4zLTE5LjZsLTIwLjctNzcuMyA0Ni40LTEyLjRjMTcuMS00LjYgMzQuNiA1LjYgMzkuMiAyMi42bDQxLjQgMTU0LjVjNC42IDE3LjEtNS42IDM0LjYtMjIuNiAzOS4yTDEwMy43IDM4NC45Yy0xNy4xIDQuNi0zNC42LTUuNi0zOS4yLTIyLjZMMjMuMSAyMDcuN3pcIl1cbn07XG5jb25zdCBmYVRydWNrTG9hZGluZyA9IGZhVHJ1Y2tSYW1wQm94O1xuY29uc3QgZmFVc2VyQ2hlY2sgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndXNlci1jaGVjaycsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjRmY1wiLCBcIk05NiAxMjhhMTI4IDEyOCAwIDEgMSAyNTYgMEExMjggMTI4IDAgMSAxIDk2IDEyOHpNMCA0ODIuM0MwIDM4My44IDc5LjggMzA0IDE3OC4zIDMwNGw5MS40IDBDMzY4LjIgMzA0IDQ0OCAzODMuOCA0NDggNDgyLjNjMCAxNi40LTEzLjMgMjkuNy0yOS43IDI5LjdMMjkuNyA1MTJDMTMuMyA1MTIgMCA0OTguNyAwIDQ4Mi4zek02MjUgMTc3TDQ5NyAzMDVjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwbC02NC02NGMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwbDQ3IDQ3TDU5MSAxNDNjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45elwiXVxufTtcbmNvbnN0IGZhVmlhbFZpcnVzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3ZpYWwtdmlydXMnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImU1OTdcIiwgXCJNMzIgMzJDMTQuMyAzMiAwIDQ2LjMgMCA2NFMxNC4zIDk2IDMyIDk2bDAgMjg4YzAgNTMgNDMgOTYgOTYgOTZjMjguNiAwIDU0LjItMTIuNSA3MS44LTMyLjNjLjEtMTQuMiA1LjYtMjguMyAxNi40LTM5LjFjLjItLjIgLjEtLjYtLjItLjZjLTMwLjkgMC01Ni0yNS4xLTU2LTU2czI1LjEtNTYgNTYtNTZjLjMgMCAuNC0uNCAuMi0uNmMtMjEuOS0yMS45LTIxLjktNTcuMyAwLTc5LjJjMi40LTIuNCA1LTQuNiA3LjgtNi41TDIyNCA5NmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtNjQgMEw5NiAzMiAzMiAzMnpNOTYgMTkybDAtOTYgNjQgMCAwIDk2LTY0IDB6TTIxNiAzNzZjMjguOCAwIDQzLjIgMzQuOCAyMi45IDU1LjJjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45czI0LjYgOS40IDMzLjkgMGMyMC40LTIwLjQgNTUuMi01LjkgNTUuMiAyMi45YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRjMC0yOC44IDM0LjgtNDMuMiA1NS4yLTIyLjljOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45QzQ0NC44IDQxMC44IDQ1OS4yIDM3NiA0ODggMzc2YzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0Yy0yOC44IDAtNDMuMi0zNC44LTIyLjktNTUuMmM5LjQtOS40IDkuNC0yNC42IDAtMzMuOXMtMjQuNi05LjQtMzMuOSAwQzQxMC44IDI1OS4yIDM3NiAyNDQuOCAzNzYgMjE2YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0YzAgMjguOC0zNC44IDQzLjItNTUuMiAyMi45Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMHMtOS40IDI0LjYgMCAzMy45YzIwLjQgMjAuNCA1LjkgNTUuMi0yMi45IDU1LjJjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjR6bTEwNC04OGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6bTQwIDk2YTI0IDI0IDAgMSAxIDQ4IDAgMjQgMjQgMCAxIDEgLTQ4IDB6XCJdXG59O1xuY29uc3QgZmFTaGVldFBsYXN0aWMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc2hlZXQtcGxhc3RpYycsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZTU3MVwiLCBcIk0wIDQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NGwxNjAgMCAwLTEyOGMwLTE3LjcgMTQuMy0zMiAzMi0zMmwxMjggMCAwLTI4OGMwLTM1LjMtMjguNy02NC02NC02NEw2NCAwQzI4LjcgMCAwIDI4LjcgMCA2NEwwIDQ0OHpNMTcxLjMgNzUuM2wtOTYgOTZjLTYuMiA2LjItMTYuNCA2LjItMjIuNiAwcy02LjItMTYuNCAwLTIyLjZsOTYtOTZjNi4yLTYuMiAxNi40LTYuMiAyMi42IDBzNi4yIDE2LjQgMCAyMi42em05NiAzMmwtMTYwIDE2MGMtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBzLTYuMi0xNi40IDAtMjIuNmwxNjAtMTYwYzYuMi02LjIgMTYuNC02LjIgMjIuNiAwczYuMiAxNi40IDAgMjIuNnpNMzg0IDM4NGwtMTI4IDAgMCAxMjhMMzg0IDM4NHpcIl1cbn07XG5jb25zdCBmYUJsb2cgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYmxvZycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjc4MVwiLCBcIk0xOTIgMzJjMCAxNy43IDE0LjMgMzIgMzIgMzJjMTIzLjcgMCAyMjQgMTAwLjMgMjI0IDIyNGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyQzUxMiAxMjguOSAzODMuMSAwIDIyNCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnptMCA5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMmM3MC43IDAgMTI4IDU3LjMgMTI4IDEyOGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyYzAtMTA2LTg2LTE5Mi0xOTItMTkyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnpNOTYgMTQ0YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4UzAgMTE3LjUgMCAxNDRMMCAzNjhjMCA3OS41IDY0LjUgMTQ0IDE0NCAxNDRzMTQ0LTY0LjUgMTQ0LTE0NHMtNjQuNS0xNDQtMTQ0LTE0NGwtMTYgMCAwIDk2IDE2IDBjMjYuNSAwIDQ4IDIxLjUgNDggNDhzLTIxLjUgNDgtNDggNDhzLTQ4LTIxLjUtNDgtNDhsMC0yMjR6XCJdXG59O1xuY29uc3QgZmFVc2VyTmluamEgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndXNlci1uaW5qYScsXG4gIGljb246IFs0NDgsIDUxMiwgWzEyOTM5OV0sIFwiZjUwNFwiLCBcIk0yMjQgMjU2Yy01Ny4yIDAtMTA1LjYtMzcuNS0xMjItODkuM2MtMS4xIDEuMy0yLjIgMi42LTMuNSAzLjhjLTE1LjggMTUuOC0zOC44IDIwLjctNTMuNiAyMi4xYy04LjEgLjgtMTQuNi01LjctMTMuOC0xMy44YzEuNC0xNC43IDYuMy0zNy44IDIyLjEtNTMuNmM1LjgtNS44IDEyLjYtMTAuMSAxOS42LTEzLjRjLTctMy4yLTEzLjgtNy42LTE5LjYtMTMuNEMzNy40IDgyLjcgMzIuNiA1OS43IDMxLjEgNDQuOWMtLjgtOC4xIDUuNy0xNC42IDEzLjgtMTMuOGMxNC43IDEuNCAzNy44IDYuMyA1My42IDIyLjFjNC44IDQuOCA4LjcgMTAuNCAxMS43IDE2LjFDMTMxLjQgMjguMiAxNzQuNCAwIDIyNCAwYzcwLjcgMCAxMjggNTcuMyAxMjggMTI4cy01Ny4zIDEyOC0xMjggMTI4ek0wIDQ4Mi4zQzAgMzk5LjUgNTYuNCAzMzAgMTMyLjggMzA5LjljNi0xLjYgMTIuMiAuOSAxNS45IDUuOGw2Mi41IDgzLjNjNi40IDguNSAxOS4yIDguNSAyNS42IDBsNjIuNS04My4zYzMuNy00LjkgOS45LTcuNCAxNS45LTUuOEMzOTEuNiAzMzAgNDQ4IDM5OS41IDQ0OCA0ODIuM2MwIDE2LjQtMTMuMyAyOS43LTI5LjcgMjkuN0wyOS43IDUxMkMxMy4zIDUxMiAwIDQ5OC43IDAgNDgyLjN6TTE2MCA5NmMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmwxMjggMGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkwxNjAgOTZ6XCJdXG59O1xuY29uc3QgZmFQZXJzb25BcnJvd1VwRnJvbUxpbmUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGVyc29uLWFycm93LXVwLWZyb20tbGluZScsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTUzOVwiLCBcIk0xOTIgOTZhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2em0tOCAzNTJsMC05NiAxNiAwIDAgOTYtMTYgMHptLTY0IDBsLTg4IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsMTIwIDAgODAgMCAzNzYgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtMzQ0IDAgMC0xOTEuMSAyOC42IDQ3LjVjOS4xIDE1LjEgMjguOCAyMCA0My45IDEwLjlzMjAtMjguOCAxMC45LTQzLjlsLTU4LjMtOTdjLTE3LjQtMjguOS00OC42LTQ2LjYtODIuMy00Ni42bC0yOS43IDBjLTMzLjcgMC02NC45IDE3LjctODIuMyA0Ni42bC01OC4zIDk3Yy05LjEgMTUuMS00LjIgMzQuOCAxMC45IDQzLjlzMzQuOCA0LjIgNDMuOS0xMC45TDEyMCAyNTYuOSAxMjAgNDQ4ek01OTguNiAxMjEuNGwtODAtODBjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwbC04MCA4MGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMEw0NjQgMTQxLjMgNDY0IDM4NGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMjQyLjcgMjUuNCAyNS40YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjN6XCJdXG59O1xuY29uc3QgZmFTY3JvbGxUb3JhaCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzY3JvbGwtdG9yYWgnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtcInRvcmFoXCJdLCBcImY2YTBcIiwgXCJNOTYgNDgwTDk2IDMyQzk2IDE0LjMgNzQuNSAwIDQ4IDBTMCAxNC4zIDAgMzJMMCA0ODBjMCAxNy43IDIxLjUgMzIgNDggMzJzNDgtMTQuMyA0OC0zMnpNNTEyIDMyTDEyOCAzMmwwIDQ0OCAzODQgMCAwLTQ0OHpNNTkyIDBjLTI2LjUgMC00OCAxNC4zLTQ4IDMybDAgNDQ4YzAgMTcuNyAyMS41IDMyIDQ4IDMyczQ4LTE0LjMgNDgtMzJsMC00NDhjMC0xNy43LTIxLjUtMzItNDgtMzJ6TTE5NiAzMTMuN2MwLTMuMiAuOS02LjQgMi41LTkuMkwyMjYuNyAyNTZsLTI4LjMtNDguNWMtMS42LTIuOC0yLjUtNi0yLjUtOS4yYzAtMTAuMSA4LjItMTguMyAxOC4zLTE4LjNsNTYuNyAwIDMxLjQtNTMuOWMzLjYtNi4zIDEwLjMtMTAuMSAxNy42LTEwLjFzMTMuOSAzLjggMTcuNiAxMC4xTDM2OSAxODBsNTYuNyAwYzEwLjEgMCAxOC4zIDguMiAxOC4zIDE4LjNjMCAzLjItLjkgNi40LTIuNSA5LjJMNDEzLjMgMjU2bDI4LjMgNDguNWMxLjYgMi44IDIuNSA2IDIuNSA5LjJjMCAxMC4xLTguMiAxOC4zLTE4LjMgMTguM0wzNjkgMzMybC0zMS40IDUzLjljLTMuNiA2LjMtMTAuMyAxMC4xLTE3LjYgMTAuMXMtMTMuOS0zLjgtMTcuNi0xMC4xTDI3MSAzMzJsLTU2LjcgMGMtMTAuMSAwLTE4LjMtOC4yLTE4LjMtMTguM3ptMTI0IDU0LjdMMzQxLjIgMzMybC00Mi40IDBMMzIwIDM2OC40ek0yNTQuNSAyNTZsMzAuMyA1MiA3MC40IDAgMzAuMy01Mi0zMC4zLTUyLTcwLjQgMC0zMC4zIDUyem0xNDQuOSAyMy44TDM4MyAzMDhsMzIuOCAwLTE2LjQtMjguMnpNNDE1LjggMjA0TDM4MyAyMDRsMTYuNCAyOC4yTDQxNS44IDIwNHpNMzIwIDE0My42TDI5OC44IDE4MGw0Mi40IDBMMzIwIDE0My42ek0yMjQuMiAyMDRsMTYuNCAyOC4yTDI1NyAyMDRsLTMyLjggMHpNMjU3IDMwOGwtMTYuNC0yOC4yTDIyNC4yIDMwOGwzMi44IDB6XCJdXG59O1xuY29uc3QgZmFUb3JhaCA9IGZhU2Nyb2xsVG9yYWg7XG5jb25zdCBmYUJyb29tQmFsbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdicm9vbS1iYWxsJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXCJxdWlkZGl0Y2hcIiwgXCJxdWlkZGl0Y2gtYnJvb20tYmFsbFwiXSwgXCJmNDU4XCIsIFwiTTU2Ni42IDkuNGMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM2wtMTkyIDE5MiAzNC43IDM0LjdjNC4yIDQuMiA2LjYgMTAgNi42IDE2YzAgMTIuNS0xMC4xIDIyLjYtMjIuNiAyMi42bC0yOS4xIDBMMjU2IDIxMS43bDAtMjkuMWMwLTEyLjUgMTAuMS0yMi42IDIyLjYtMjIuNmM2IDAgMTEuOCAyLjQgMTYgNi42bDM0LjcgMzQuNyAxOTItMTkyYzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwem0tMzQ0IDIyNS41TDM0MS4xIDM1My40YzMuNyA0Mi43LTExLjcgODUuMi00Mi4zIDExNS44QzI3MS40IDQ5Ni42IDIzNC4yIDUxMiAxOTUuNSA1MTJMMjIuMSA1MTJDOS45IDUxMiAwIDUwMi4xIDAgNDg5LjljMC02LjMgMi43LTEyLjMgNy4zLTE2LjVMMTMzLjcgMzU5LjdjNC4yLTMuNy0uNC0xMC40LTUuNC03LjlMNzcuMiAzNzcuNGMtNi4xIDMtMTMuMi0xLjQtMTMuMi04LjJjMC0zMS41IDEyLjUtNjEuNyAzNC44LTg0bDgtOGMzMC42LTMwLjYgNzMuMS00NS45IDExNS44LTQyLjN6TTQ2NCAzNTJhODAgODAgMCAxIDEgMCAxNjAgODAgODAgMCAxIDEgMC0xNjB6XCJdXG59O1xuY29uc3QgZmFRdWlkZGl0Y2ggPSBmYUJyb29tQmFsbDtcbmNvbnN0IGZhUXVpZGRpdGNoQnJvb21CYWxsID0gZmFCcm9vbUJhbGw7XG5jb25zdCBmYVRvZ2dsZU9mZiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0b2dnbGUtb2ZmJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmMjA0XCIsIFwiTTM4NCAxMjhjNzAuNyAwIDEyOCA1Ny4zIDEyOCAxMjhzLTU3LjMgMTI4LTEyOCAxMjhsLTE5MiAwYy03MC43IDAtMTI4LTU3LjMtMTI4LTEyOHM1Ny4zLTEyOCAxMjgtMTI4bDE5MiAwek01NzYgMjU2YzAtMTA2LTg2LTE5Mi0xOTItMTkyTDE5MiA2NEM4NiA2NCAwIDE1MCAwIDI1NlM4NiA0NDggMTkyIDQ0OGwxOTIgMGMxMDYgMCAxOTItODYgMTkyLTE5MnpNMTkyIDM1MmE5NiA5NiAwIDEgMCAwLTE5MiA5NiA5NiAwIDEgMCAwIDE5MnpcIl1cbn07XG5jb25zdCBmYUJveEFyY2hpdmUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYm94LWFyY2hpdmUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtcImFyY2hpdmVcIl0sIFwiZjE4N1wiLCBcIk0zMiAzMmw0NDggMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDMyYzAgMTcuNy0xNC4zIDMyLTMyIDMyTDMyIDEyOEMxNC4zIDEyOCAwIDExMy43IDAgOTZMMCA2NEMwIDQ2LjMgMTQuMyAzMiAzMiAzMnptMCAxMjhsNDQ4IDAgMCAyNTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRMOTYgNDgwYy0zNS4zIDAtNjQtMjguNy02NC02NGwwLTI1NnptMTI4IDgwYzAgOC44IDcuMiAxNiAxNiAxNmwxNjAgMGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNmwtMTYwIDBjLTguOCAwLTE2IDcuMi0xNiAxNnpcIl1cbn07XG5jb25zdCBmYUFyY2hpdmUgPSBmYUJveEFyY2hpdmU7XG5jb25zdCBmYVBlcnNvbkRyb3duaW5nID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BlcnNvbi1kcm93bmluZycsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZTU0NVwiLCBcIk0xOTIgNjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJsMCAzMi4yYzAgNTQuMSAyMy41IDEwNCA2Mi4yIDEzOC4zbC0yMSAxNDYuN2M3LjggMi4xIDE1LjUgMy4zIDIyLjggMy4zYzIxLjEgMCA0Mi04LjUgNTkuMi0yMC4zYzIyLjEtMTUuNSA1MS42LTE1LjUgNzMuNyAwYzEyLjQgOC41IDI2LjEgMTQuOCAzOS43IDE4bDE3LjctOTcuNmMxMC43LTEuMiAyMS4zLTMuMSAzMS45LTUuNWwxMDUtMjMuOWMxNy4yLTMuOSAyOC0yMS4xIDI0LjEtMzguM3MtMjEuMS0yOC0zOC4zLTI0LjFMNDAwIDIxNi42Yy00MSA5LjMtODMuNyA3LjUtMTIzLjctNS4yYy01MC4yLTE2LTg0LjMtNjIuNi04NC4zLTExNS4zTDE5MiA2NHpNMzIwIDE5MmE2NCA2NCAwIDEgMCAwLTEyOCA2NCA2NCAwIDEgMCAwIDEyOHpNMzA2LjUgMzg5LjljLTExLjEtNy45LTI1LjktNy45LTM3IDBDMjQ3IDQwNS40IDIxOS41IDQxNiAxOTIgNDE2Yy0yNi45IDAtNTUuMy0xMC44LTc3LjQtMjYuMWMwIDAgMCAwIDAgMGMtMTEuOS04LjUtMjguMS03LjgtMzkuMiAxLjdjLTE0LjQgMTEuOS0zMi41IDIxLTUwLjYgMjUuMmMtMTcuMiA0LTI3LjkgMjEuMi0yMy45IDM4LjRzMjEuMiAyNy45IDM4LjQgMjMuOWMyNC41LTUuNyA0NC45LTE2LjUgNTguMi0yNUMxMjYuNSA0NjkuNyAxNTkgNDgwIDE5MiA0ODBjMzEuOSAwIDYwLjYtOS45IDgwLjQtMTguOWM1LjgtMi43IDExLjEtNS4zIDE1LjYtNy43YzQuNSAyLjQgOS43IDUuMSAxNS42IDcuN2MxOS44IDkgNDguNSAxOC45IDgwLjQgMTguOWMzMyAwIDY1LjUtMTAuMyA5NC41LTI1LjhjMTMuNCA4LjQgMzMuNyAxOS4zIDU4LjIgMjVjMTcuMiA0IDM0LjQtNi43IDM4LjQtMjMuOXMtNi43LTM0LjQtMjMuOS0zOC40Yy0xOC4xLTQuMi0zNi4yLTEzLjMtNTAuNi0yNS4yYy0xMS4xLTkuNC0yNy4zLTEwLjEtMzkuMi0xLjdjMCAwIDAgMCAwIDBDNDM5LjQgNDA1LjIgNDEwLjkgNDE2IDM4NCA0MTZjLTI3LjUgMC01NS0xMC42LTc3LjUtMjYuMXpcIl1cbn07XG5jb25zdCBmYUFycm93RG93bjkxID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Fycm93LWRvd24tOS0xJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXCJzb3J0LW51bWVyaWMtZGVzY1wiLCBcInNvcnQtbnVtZXJpYy1kb3duLWFsdFwiXSwgXCJmODg2XCIsIFwiTTE2MCA0ODBjOSAwIDE3LjUtMy44IDIzLjYtMTAuNGw4OC05NmMxMS45LTEzIDExLjEtMzMuMy0yLTQ1LjJzLTMzLjMtMTEuMS00NS4yIDJMMTkyIDM2NS43IDE5MiA2NGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMmwwIDMwMS43TDk1LjYgMzMwLjRjLTExLjktMTMtMzIuMi0xMy45LTQ1LjItMnMtMTMuOSAzMi4yLTIgNDUuMmw4OCA5NkMxNDIuNSA0NzYuMiAxNTEgNDgwIDE2MCA0ODB6TTQ1MC43IDI5NGMtOC4zLTYtMTkuMS03LjctMjguOC00LjRsLTQ4IDE2Yy0xNi44IDUuNi0yNS44IDIzLjctMjAuMiA0MC41czIzLjcgMjUuOCA0MC41IDIwLjJsNS45LTIgMCA1MS42LTE2IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsNDggMCA0OCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC0xNiAwIDAtOTZjMC0xMC4zLTQuOS0xOS45LTEzLjMtMjZ6TTQxOC4zIDkxYTMyIDMyIDAgMSAxIDI3LjQgNTcuOUEzMiAzMiAwIDEgMSA0MTguMyA5MXpNNDA1LjEgMjAzLjhsLTYuOCA5LjJjLTEwLjUgMTQuMi03LjUgMzQuMiA2LjcgNDQuOHMzNC4yIDcuNSA0NC44LTYuN2w0OC44LTY1LjhjMTQtMTguOSAyMS41LTQxLjcgMjEuNS02NS4yYzAtNDguNi0zOS40LTg4LTg4LTg4cy04OCAzOS40LTg4IDg4YzAgMzkuMiAyNS42IDcyLjQgNjEuMSA4My44elwiXVxufTtcbmNvbnN0IGZhU29ydE51bWVyaWNEZXNjID0gZmFBcnJvd0Rvd245MTtcbmNvbnN0IGZhU29ydE51bWVyaWNEb3duQWx0ID0gZmFBcnJvd0Rvd245MTtcbmNvbnN0IGZhRmFjZUdyaW5Ub25ndWVTcXVpbnQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmFjZS1ncmluLXRvbmd1ZS1zcXVpbnQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjg1NDEsIFwiZ3Jpbi10b25ndWUtc3F1aW50XCJdLCBcImY1OGFcIiwgXCJNMCAyNTZDMCAzNjguOSA3My4xIDQ2NC43IDE3NC41IDQ5OC44QzE2NS4zIDQ4NCAxNjAgNDY2LjYgMTYwIDQ0OGwwLTQ3LjNjLTI0LTE3LjUtNDMuMS00MS40LTU0LjgtNjkuMmMtNS0xMS44IDctMjIuNSAxOS4zLTE4LjdjMzkuNyAxMi4yIDg0LjUgMTkgMTMxLjggMTlzOTIuMS02LjggMTMxLjgtMTljMTIuMy0zLjggMjQuMyA2LjkgMTkuMyAxOC43Yy0xMS44IDI4LTMxLjEgNTItNTUuNCA2OS42bDAgNDYuOWMwIDE4LjYtNS4zIDM2LTE0LjUgNTAuOEM0MzguOSA0NjQuNyA1MTIgMzY4LjkgNTEyIDI1NkM1MTIgMTE0LjYgMzk3LjQgMCAyNTYgMFMwIDExNC42IDAgMjU2ek0xMTYgMTQxLjFjMC05IDkuNi0xNC43IDE3LjUtMTAuNWw4OS45IDQ3LjljMTAuNyA1LjcgMTAuNyAyMS4xIDAgMjYuOGwtODkuOSA0Ny45Yy03LjkgNC4yLTE3LjUtMS41LTE3LjUtMTAuNWMwLTIuOCAxLTUuNSAyLjgtNy42bDM2LTQzLjItMzYtNDMuMmMtMS44LTIuMS0yLjgtNC44LTIuOC03LjZ6bTI2Mi41LTEwLjVjNy45LTQuMiAxNy41IDEuNSAxNy41IDEwLjVjMCAyLjgtMSA1LjUtMi44IDcuNmwtMzYgNDMuMiAzNiA0My4yYzEuOCAyLjEgMi44IDQuOCAyLjggNy42YzAgOS05LjYgMTQuNy0xNy41IDEwLjVsLTg5LjktNDcuOWMtMTAuNy01LjctMTAuNy0yMS4xIDAtMjYuOGw4OS45LTQ3Ljl6TTMyMCA0NDhsMC00NS40YzAtMTQuNy0xMS45LTI2LjYtMjYuNi0yNi42bC0yIDBjLTExLjMgMC0yMS4xIDcuOS0yMy42IDE4LjljLTIuOCAxMi42LTIwLjggMTIuNi0yMy42IDBjLTIuNS0xMS4xLTEyLjMtMTguOS0yMy42LTE4LjlsLTIgMGMtMTQuNyAwLTI2LjYgMTEuOS0yNi42IDI2LjZsMCA0NS40YzAgMzUuMyAyOC43IDY0IDY0IDY0czY0LTI4LjcgNjQtNjR6XCJdXG59O1xuY29uc3QgZmFHcmluVG9uZ3VlU3F1aW50ID0gZmFGYWNlR3JpblRvbmd1ZVNxdWludDtcbmNvbnN0IGZhU3ByYXlDYW4gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3ByYXktY2FuJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNWJkXCIsIFwiTTEyOCAwbDY0IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCA5Nkw5NiAxMjhsMC05NmMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNMCAyNTZjMC01MyA0My05NiA5Ni05NmwxMjggMGM1MyAwIDk2IDQzIDk2IDk2bDAgMjA4YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4TDQ4IDUxMmMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhMMCAyNTZ6bTI0MCA4MEE4MCA4MCAwIDEgMCA4MCAzMzZhODAgODAgMCAxIDAgMTYwIDB6TTI1NiA2NGEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwek0zODQgMzJhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0em02NCAzMmEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwem0zMiA2NGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6TTQ0OCAyNTZhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHpNMzg0IDEyOGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJdXG59O1xuY29uc3QgZmFUcnVja01vbnN0ZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndHJ1Y2stbW9uc3RlcicsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjYzYlwiLCBcIk0yODggNjRsMCA2NCAxMjggMEwzNjggNjRsLTgwIDB6TTQxOS4yIDI1LjZMNDk2IDEyOGw4MCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgNjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJjLTI5LjItMzguOS03NS43LTY0LTEyOC02NHMtOTguOCAyNS4xLTEyOCA2NGwtNjQgMGMtMjkuMi0zOC45LTc1LjctNjQtMTI4LTY0cy05OC44IDI1LjEtMTI4IDY0Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDAtNjRjMC0xNy43IDE0LjMtMzIgMzItMzJsMTYwIDAgMC04MGMwLTI2LjUgMjEuNS00OCA0OC00OGw5NiAwYzIwLjEgMCAzOS4xIDkuNSA1MS4yIDI1LjZ6TTE1MiAyNTZsMTYgMGMxMi4xIDAgMjIuMSA4LjkgMjMuOCAyMC42YzcuNiAyLjIgMTQuOSA1LjMgMjEuNyA5YzkuNC03IDIyLjgtNi4zIDMxLjMgMi4zbDExLjMgMTEuM2M4LjYgOC42IDkuMyAyMS45IDIuMyAzMS4zYzMuNyA2LjggNi44IDE0LjEgOSAyMS43YzExLjYgMS43IDIwLjYgMTEuNyAyMC42IDIzLjhsMCAxNmMwIDEyLjEtOC45IDIyLjEtMjAuNiAyMy44Yy0yLjIgNy42LTUuMyAxNC45LTkgMjEuN2M3IDkuNCA2LjMgMjIuOC0yLjMgMzEuM2wtMTEuMyAxMS4zYy04LjYgOC42LTIxLjkgOS4zLTMxLjMgMi4yYy02LjggMy43LTE0LjEgNi44LTIxLjcgOUMxOTAuMSA1MDMuMSAxODAuMSA1MTIgMTY4IDUxMmwtMTYgMGMtMTIuMSAwLTIyLjEtOC45LTIzLjgtMjAuNmMtNy42LTIuMi0xNC45LTUuMy0yMS43LTljLTkuNCA3LjEtMjIuOCA2LjMtMzEuMy0yLjJMNjMuOCA0NjguOWMtOC42LTguNi05LjMtMjEuOS0yLjMtMzEuM2MtMy43LTYuOS02LjgtMTQuMS05LTIxLjhDNDAuOSA0MTQuMSAzMiA0MDQuMSAzMiAzOTJsMC0xNmMwLTEyLjEgOC45LTIyLjEgMjAuNi0yMy44YzIuMi03LjYgNS4zLTE0LjkgOS0yMS44Yy03LTkuNC02LjMtMjIuOCAyLjMtMzEuM2wxMS4zLTExLjNjOC42LTguNiAyMS45LTkuMyAzMS4zLTIuM2M2LjgtMy43IDE0LjEtNi44IDIxLjctOWMxLjctMTEuNiAxMS43LTIwLjYgMjMuOC0yMC42em04IDE3NmE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6TTQ0OC4yIDI3Ni42YzEuNy0xMS42IDExLjctMjAuNiAyMy44LTIwLjZsMTYgMGMxMi4xIDAgMjIuMSA4LjkgMjMuOCAyMC42YzcuNiAyLjIgMTQuOSA1LjMgMjEuOCA5YzkuNC03IDIyLjgtNi4zIDMxLjMgMi4zbDExLjMgMTEuM2M4LjYgOC42IDkuMyAyMS45IDIuMiAzMS4zYzMuNyA2LjggNi44IDE0LjEgOSAyMS43YzExLjYgMS43IDIwLjYgMTEuNyAyMC42IDIzLjhsMCAxNmMwIDEyLjEtOC45IDIyLjEtMjAuNiAyMy44Yy0yLjIgNy42LTUuMyAxNC45LTkgMjEuN2M3IDkuNCA2LjMgMjIuOC0yLjIgMzEuM2wtMTEuMyAxMS4zYy04LjYgOC42LTIxLjkgOS4zLTMxLjMgMi4yYy02LjkgMy43LTE0LjEgNi44LTIxLjggOUM1MTAuMSA1MDMuMSA1MDAuMSA1MTIgNDg4IDUxMmwtMTYgMGMtMTIuMSAwLTIyLjEtOC45LTIzLjgtMjAuNmMtNy42LTIuMi0xNC45LTUuMy0yMS43LTljLTkuNCA3LjEtMjIuOCA2LjMtMzEuMy0yLjJsLTExLjMtMTEuM2MtOC42LTguNi05LjMtMjEuOS0yLjItMzEuM2MtMy43LTYuOS02LjgtMTQuMS05LTIxLjhDMzYwLjkgNDE0LjEgMzUyIDQwNC4xIDM1MiAzOTJsMC0xNmMwLTEyLjEgOC45LTIyLjEgMjAuNi0yMy44YzIuMi03LjYgNS4zLTE0LjkgOS0yMS44Yy03LTkuNC02LjMtMjIuOCAyLjItMzEuM2wxMS4zLTExLjNjOC42LTguNiAyMS45LTkuMyAzMS4zLTIuM2M2LjgtMy43IDE0LjEtNi44IDIxLjctOXpNNTI4IDM4NGE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwelwiXVxufTtcbmNvbnN0IGZhVyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd3JyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbMTE5XSwgXCI1N1wiLCBcIk0yMC44IDM0YzE2LjUtNi4yIDM1IDIuMiA0MS4yIDE4LjdsMTEwLjIgMjk0TDI1Ny4zIDU1YzQtMTMuNyAxNi41LTIzIDMwLjctMjNzMjYuNyA5LjQgMzAuNyAyM2w4NS4xIDI5MS43TDUxNCA1Mi44YzYuMi0xNi41IDI0LjYtMjQuOSA0MS4yLTE4LjdzMjQuOSAyNC43IDE4LjcgNDEuMmwtMTQ0IDM4NGMtNC44IDEyLjktMTcuNCAyMS4zLTMxLjIgMjAuN3MtMjUuNy05LjgtMjkuNS0yM0wyODggMTc4LjMgMjA2LjcgNDU3Yy0zLjkgMTMuMi0xNS44IDIyLjUtMjkuNSAyM3MtMjYuMy03LjgtMzEuMi0yMC43TDIgNzUuMkMtNC4yIDU4LjcgNC4yIDQwLjIgMjAuOCAzNHpcIl1cbn07XG5jb25zdCBmYUVhcnRoQWZyaWNhID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2VhcnRoLWFmcmljYScsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyNzc1NywgXCJnbG9iZS1hZnJpY2FcIl0sIFwiZjU3Y1wiLCBcIk0xNzcuOCA2My4ybDEwIDE3LjRjMi44IDQuOCA0LjIgMTAuMyA0LjIgMTUuOWwwIDQxLjRjMCAzLjkgMS42IDcuNyA0LjMgMTAuNGM2LjIgNi4yIDE2LjUgNS43IDIyLTEuMmwxMy42LTE3YzQuNy01LjkgMTIuOS03LjcgMTkuNi00LjNsMTUuMiA3LjZjMy40IDEuNyA3LjIgMi42IDExIDIuNmM2LjUgMCAxMi44LTIuNiAxNy40LTcuMmwzLjktMy45YzIuOS0yLjkgNy4zLTMuNiAxMS0xLjhsMjkuMiAxNC42YzcuOCAzLjkgMTIuNiAxMS44IDEyLjYgMjAuNWMwIDEwLjUtNy4xIDE5LjYtMTcuMyAyMi4ybC0zNS40IDguOGMtNy40IDEuOC0xNS4xIDEuNS0yMi40LS45bC0zMi0xMC43Yy0zLjMtMS4xLTYuNy0xLjctMTAuMi0xLjdjLTcgMC0xMy44IDIuMy0xOS40IDYuNUwxNzYgMjEyYy0xMC4xIDcuNi0xNiAxOS40LTE2IDMybDAgMjhjMCAyNi41IDIxLjUgNDggNDggNDhsMzIgMGM4LjggMCAxNiA3LjIgMTYgMTZsMCA0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMmMxMC4xIDAgMTkuNi00LjcgMjUuNi0xMi44bDI1LjYtMzQuMWM4LjMtMTEuMSAxMi44LTI0LjYgMTIuOC0zOC40bDAtMTIuMWMwLTMuOSAyLjYtNy4zIDYuNC04LjJsNS4zLTEuM2MxMS45LTMgMjAuMy0xMy43IDIwLjMtMjZjMC03LjEtMi44LTEzLjktNy44LTE4LjlsLTMzLjUtMzMuNWMtMy43LTMuNy0zLjctOS43IDAtMTMuNGM1LjctNS43IDE0LjEtNy43IDIxLjgtNS4xbDE0LjEgNC43YzEyLjMgNC4xIDI1LjctMS41IDMxLjUtMTNjMy41LTcgMTEuMi0xMC44IDE4LjktOS4ybDI3LjQgNS41QzQzMiAxMTIuNCAzNTEuNSA0OCAyNTYgNDhjLTI3LjcgMC01NCA1LjQtNzguMiAxNS4yek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6XCJdXG59O1xuY29uc3QgZmFHbG9iZUFmcmljYSA9IGZhRWFydGhBZnJpY2E7XG5jb25zdCBmYVJhaW5ib3cgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncmFpbmJvdycsXG4gIGljb246IFs2NDAsIDUxMiwgWzEyNzc1Ml0sIFwiZjc1YlwiLCBcIk0zMjAgOTZDMTc4LjYgOTYgNjQgMjEwLjYgNjQgMzUybDAgOTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC05NkMwIDE3NS4zIDE0My4zIDMyIDMyMCAzMnMzMjAgMTQzLjMgMzIwIDMyMGwwIDk2YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtOTZDNTc2IDIxMC42IDQ2MS40IDk2IDMyMCA5NnptMCAxOTJjLTM1LjMgMC02NCAyOC43LTY0IDY0bDAgOTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC05NmMwLTcwLjcgNTcuMy0xMjggMTI4LTEyOHMxMjggNTcuMyAxMjggMTI4bDAgOTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC05NmMwLTM1LjMtMjguNy02NC02NC02NHpNMTYwIDM1MmwwIDk2YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtOTZjMC0xMjMuNyAxMDAuMy0yMjQgMjI0LTIyNHMyMjQgMTAwLjMgMjI0IDIyNGwwIDk2YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtOTZjMC04OC40LTcxLjYtMTYwLTE2MC0xNjBzLTE2MCA3MS42LTE2MCAxNjB6XCJdXG59O1xuY29uc3QgZmFDaXJjbGVOb3RjaCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaXJjbGUtbm90Y2gnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYxY2VcIiwgXCJNMjIyLjcgMzIuMWM1IDE2LjktNC42IDM0LjgtMjEuNSAzOS44QzEyMS44IDk1LjYgNjQgMTY5LjEgNjQgMjU2YzAgMTA2IDg2IDE5MiAxOTIgMTkyczE5Mi04NiAxOTItMTkyYzAtODYuOS01Ny44LTE2MC40LTEzNy4xLTE4NC4xYy0xNi45LTUtMjYuNi0yMi45LTIxLjUtMzkuOHMyMi45LTI2LjYgMzkuOC0yMS41QzQzNC45IDQyLjEgNTEyIDE0MCA1MTIgMjU2YzAgMTQxLjQtMTE0LjYgMjU2LTI1NiAyNTZTMCAzOTcuNCAwIDI1NkMwIDE0MCA3Ny4xIDQyLjEgMTgyLjkgMTAuNmMxNi45LTUgMzQuOCA0LjYgMzkuOCAyMS41elwiXVxufTtcbmNvbnN0IGZhVGFibGV0U2NyZWVuQnV0dG9uID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RhYmxldC1zY3JlZW4tYnV0dG9uJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXCJ0YWJsZXQtYWx0XCJdLCBcImYzZmFcIiwgXCJNMCA2NEMwIDI4LjcgMjguNyAwIDY0IDBMMzg0IDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCAzODRjMCAzNS4zLTI4LjcgNjQtNjQgNjRMNjQgNTEyYy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDY0ek0yNTYgNDQ4YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6TTM4NCA2NEw2NCA2NGwwIDMyMCAzMjAgMCAwLTMyMHpcIl1cbn07XG5jb25zdCBmYVRhYmxldEFsdCA9IGZhVGFibGV0U2NyZWVuQnV0dG9uO1xuY29uc3QgZmFQYXcgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGF3JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMWIwXCIsIFwiTTIyNi41IDkyLjljMTQuMyA0Mi45LS4zIDg2LjItMzIuNiA5Ni44cy03MC4xLTE1LjYtODQuNC01OC41cy4zLTg2LjIgMzIuNi05Ni44czcwLjEgMTUuNiA4NC40IDU4LjV6TTEwMC40IDE5OC42YzE4LjkgMzIuNCAxNC4zIDcwLjEtMTAuMiA4NC4xcy01OS43LS45LTc4LjUtMzMuM1MtMi43IDE3OS4zIDIxLjggMTY1LjNzNTkuNyAuOSA3OC41IDMzLjN6TTY5LjIgNDAxLjJDMTIxLjYgMjU5LjkgMjE0LjcgMjI0IDI1NiAyMjRzMTM0LjQgMzUuOSAxODYuOCAxNzcuMmMzLjYgOS43IDUuMiAyMC4xIDUuMiAzMC41bDAgMS42YzAgMjUuOC0yMC45IDQ2LjctNDYuNyA0Ni43Yy0xMS41IDAtMjIuOS0xLjQtMzQtNC4ybC04OC0yMmMtMTUuMy0zLjgtMzEuMy0zLjgtNDYuNiAwbC04OCAyMmMtMTEuMSAyLjgtMjIuNSA0LjItMzQgNC4yQzg0LjkgNDgwIDY0IDQ1OS4xIDY0IDQzMy4zbDAtMS42YzAtMTAuNCAxLjYtMjAuOCA1LjItMzAuNXpNNDIxLjggMjgyLjdjLTI0LjUtMTQtMjkuMS01MS43LTEwLjItODQuMXM1NC00Ny4zIDc4LjUtMzMuM3MyOS4xIDUxLjcgMTAuMiA4NC4xcy01NCA0Ny4zLTc4LjUgMzMuM3pNMzEwLjEgMTg5LjdjLTMyLjMtMTAuNi00Ni45LTUzLjktMzIuNi05Ni44czUyLjEtNjkuMSA4NC40LTU4LjVzNDYuOSA1My45IDMyLjYgOTYuOHMtNTIuMSA2OS4xLTg0LjQgNTguNXpcIl1cbn07XG5jb25zdCBmYUNsb3VkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Nsb3VkJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbOTcyOV0sIFwiZjBjMlwiLCBcIk0wIDMzNmMwIDc5LjUgNjQuNSAxNDQgMTQ0IDE0NGwzNjggMGM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOGMwLTYxLjktNDQtMTEzLjYtMTAyLjQtMTI1LjRjNC4xLTEwLjcgNi40LTIyLjQgNi40LTM0LjZjMC01My00My05Ni05Ni05NmMtMTkuNyAwLTM4LjEgNi01My4zIDE2LjJDMzY3IDY0LjIgMzE1LjMgMzIgMjU2IDMyQzE2Ny42IDMyIDk2IDEwMy42IDk2IDE5MmMwIDIuNyAuMSA1LjQgLjIgOC4xQzQwLjIgMjE5LjggMCAyNzMuMiAwIDMzNnpcIl1cbn07XG5jb25zdCBmYVRyb3dlbEJyaWNrcyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0cm93ZWwtYnJpY2tzJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJlNThhXCIsIFwiTTI0MC44IDQuOEMyNTAuMyAxMC42IDI1NiAyMC45IDI1NiAzMmwwIDcyIDg5IDBjMy42LTEzLjggMTYuMS0yNCAzMS0yNGw4OCAwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4cy0yMS41IDQ4LTQ4IDQ4bC04OCAwYy0xNC45IDAtMjcuNC0xMC4yLTMxLTI0bC04OSAwIDAgNzJjMCAxMS4xLTUuNyAyMS40LTE1LjIgMjcuMnMtMjEuMiA2LjQtMzEuMSAxLjRsLTE5Mi05NkM2LjggMTUxLjIgMCAxNDAuMSAwIDEyOHM2LjgtMjMuMiAxNy43LTI4LjZsMTkyLTk2YzkuOS01IDIxLjctNC40IDMxLjEgMS40ek0yODggMjU2YzAtMTcuNyAxNC4zLTMyIDMyLTMybDE2MCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgNjRjMCAxNy43LTE0LjMgMzItMzIgMzJsLTE2MCAwYy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTY0ek0zMiAzODRsOTYgMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDY0YzAgMTcuNy0xNC4zIDMyLTMyIDMybC05NiAwYy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyem0xOTIgMGwyNTYgMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDY0YzAgMTcuNy0xNC4zIDMyLTMyIDMybC0yNTYgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC02NGMwLTE3LjcgMTQuMy0zMiAzMi0zMnpcIl1cbn07XG5jb25zdCBmYUZhY2VGbHVzaGVkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZhY2UtZmx1c2hlZCcsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyODU2MywgXCJmbHVzaGVkXCJdLCBcImY1NzlcIiwgXCJNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2ek0xNzYgMzg0YzAgOC44IDcuMiAxNiAxNiAxNmwxMjggMGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNmwtMTI4IDBjLTguOCAwLTE2IDcuMi0xNiAxNnptLTE2LTg4YTcyIDcyIDAgMSAwIDAtMTQ0IDcyIDcyIDAgMSAwIDAgMTQ0em0yNjQtNzJhNzIgNzIgMCAxIDAgLTE0NCAwIDcyIDcyIDAgMSAwIDE0NCAwem0tMjg4IDBhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHptMTkyIDBhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHpcIl1cbn07XG5jb25zdCBmYUZsdXNoZWQgPSBmYUZhY2VGbHVzaGVkO1xuY29uc3QgZmFIb3NwaXRhbFVzZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaG9zcGl0YWwtdXNlcicsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjgwZFwiLCBcIk00OCAwQzIxLjUgMCAwIDIxLjUgMCA0OEwwIDI1NmwxNDQgMGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkwwIDI4OGwwIDY0IDE0NCAwYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2TDAgMzg0bDAgODBjMCAyNi41IDIxLjUgNDggNDggNDhsMjE3LjkgMGMtNi4zLTEwLjItOS45LTIyLjItOS45LTM1LjFjMC00Ni45IDI1LjgtODcuOCA2NC0xMDkuMmwwLTk1LjlMMzIwIDQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4TDQ4IDB6TTE1MiA2NGwxNiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDI0IDI0IDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgMTZjMCA4LjgtNy4yIDE2LTE2IDE2bC0yNCAwIDAgMjRjMCA4LjgtNy4yIDE2LTE2IDE2bC0xNiAwYy04LjggMC0xNi03LjItMTYtMTZsMC0yNC0yNCAwYy04LjggMC0xNi03LjItMTYtMTZsMC0xNmMwLTguOCA3LjItMTYgMTYtMTZsMjQgMCAwLTI0YzAtOC44IDcuMi0xNiAxNi0xNnpNNTEyIDI3MmE4MCA4MCAwIDEgMCAtMTYwIDAgODAgODAgMCAxIDAgMTYwIDB6TTI4OCA0NzcuMWMwIDE5LjMgMTUuNiAzNC45IDM0LjkgMzQuOWwyMTguMiAwYzE5LjMgMCAzNC45LTE1LjYgMzQuOS0zNC45YzAtNTEuNC00MS43LTkzLjEtOTMuMS05My4xbC0xMDEuOCAwYy01MS40IDAtOTMuMSA0MS43LTkzLjEgOTMuMXpcIl1cbn07XG5jb25zdCBmYVRlbnRBcnJvd0xlZnRSaWdodCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0ZW50LWFycm93LWxlZnQtcmlnaHQnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImU1N2ZcIiwgXCJNNDg4LjEgNi4yYy05LjktOC45LTI1LTguMS0zMy45IDEuOHMtOC4xIDI1IDEuOCAzMy45TDQ4OS41IDcyIDg2LjUgNzJsMzMuNS0zMC4yYzkuOS04LjkgMTAuNy0yNCAxLjgtMzMuOVM5Ny44LTIuNyA4Ny45IDYuMmwtODAgNzJDMi45IDgyLjcgMCA4OS4yIDAgOTZzMi45IDEzLjMgNy45IDE3LjhsODAgNzJjOS45IDguOSAyNSA4LjEgMzMuOS0xLjhzOC4xLTI1LTEuOC0zMy45TDg2LjUgMTIwbDQwMi45IDAtMzMuNSAzMC4yYy05LjkgOC45LTEwLjcgMjQtMS44IDMzLjlzMjQgMTAuNyAzMy45IDEuOGw4MC03MmM1LjEtNC42IDcuOS0xMSA3LjktMTcuOHMtMi45LTEzLjMtNy45LTE3LjhsLTgwLTcyek0zMDcuNCAxNjYuNWMtMTEuNS04LjctMjcuMy04LjctMzguOCAwbC0xNjggMTI4Yy02LjYgNS0xMSAxMi41LTEyLjMgMjAuN2wtMjQgMTYwYy0xLjQgOS4yIDEuMyAxOC42IDcuNCAyNS42Uzg2LjcgNTEyIDk2IDUxMmwxNDQgMCAxNiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMybDAtMTE4LjFjMC01LjUgNC40LTkuOSA5LjktOS45YzMuNyAwIDcuMiAyLjEgOC44IDUuNWw2OC40IDEzNi44YzUuNCAxMC44IDE2LjUgMTcuNyAyOC42IDE3LjdsNjAuMiAwIDE2IDBjOS4zIDAgMTguMi00LjEgMjQuMi0xMS4xczguOC0xNi40IDcuNC0yNS42bC0yNC0xNjBjLTEuMi04LjItNS42LTE1LjctMTIuMy0yMC43bC0xNjgtMTI4elwiXVxufTtcbmNvbnN0IGZhR2F2ZWwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZ2F2ZWwnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtcImxlZ2FsXCJdLCBcImYwZTNcIiwgXCJNMzE4LjYgOS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMGwtMTIwIDEyMGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNsMTYgMTZjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBsNC00TDMyNS40IDI5My40bC00IDRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zbDE2IDE2YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDEyMC0xMjBjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNsLTE2LTE2Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMGwtNCA0TDMzMC42IDc0LjZsNC00YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zbC0xNi0xNnptLTE1MiAyODhjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwbC0xMTIgMTEyYy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM2w0OCA0OGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGwxMTItMTEyYzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zbC0xLjQtMS40TDI3MiAyODUuMyAyMjYuNyAyNDAgMTY4IDI5OC43bC0xLjQtMS40elwiXVxufTtcbmNvbnN0IGZhTGVnYWwgPSBmYUdhdmVsO1xuY29uc3QgZmFCaW5vY3VsYXJzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Jpbm9jdWxhcnMnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYxZTVcIiwgXCJNMTI4IDMybDMyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCAzMkw5NiA5NmwwLTMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyem02NCA5NmwwIDMyMGMwIDE3LjctMTQuMyAzMi0zMiAzMkwzMiA0ODBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtNTkuMWMwLTM0LjYgOS40LTY4LjYgMjcuMi05OC4zQzQwLjkgMjY3LjggNDkuNyAyNDIuNCA1MyAyMTZMNjAuNSAxNTZjMi0xNiAxNS42LTI4IDMxLjgtMjhsOTkuOCAwem0yMjcuOCAwYzE2LjEgMCAyOS44IDEyIDMxLjggMjhMNDU5IDIxNmMzLjMgMjYuNCAxMi4xIDUxLjggMjUuOCA3NC42YzE3LjggMjkuNyAyNy4yIDYzLjcgMjcuMiA5OC4zbDAgNTkuMWMwIDE3LjctMTQuMyAzMi0zMiAzMmwtMTI4IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtMzIwIDk5LjggMHpNMzIwIDY0YzAtMTcuNyAxNC4zLTMyIDMyLTMybDMyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCAzMi05NiAwIDAtMzJ6bS0zMiA2NGwwIDE2MC02NCAwIDAtMTYwIDY0IDB6XCJdXG59O1xuY29uc3QgZmFNaWNyb3Bob25lU2xhc2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbWljcm9waG9uZS1zbGFzaCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjEzMVwiLCBcIk0zOC44IDUuMUMyOC40LTMuMSAxMy4zLTEuMiA1LjEgOS4yUy0xLjIgMzQuNyA5LjIgNDIuOWw1OTIgNDY0YzEwLjQgOC4yIDI1LjUgNi4zIDMzLjctNC4xczYuMy0yNS41LTQuMS0zMy43TDQ3Mi4xIDM0NC43YzE1LjItMjYgMjMuOS01Ni4zIDIzLjktODguN2wwLTQwYzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0bDAgNDBjMCAyMS4yLTUuMSA0MS4xLTE0LjIgNTguN0w0MTYgMzAwLjggNDE2IDk2YzAtNTMtNDMtOTYtOTYtOTZzLTk2IDQzLTk2IDk2bDAgNTQuM0wzOC44IDUuMXpNMzQ0IDQzMC40YzIwLjQtMi44IDM5LjctOS4xIDU3LjMtMTguMmwtNDMuMS0zMy45QzM0Ni4xIDM4MiAzMzMuMyAzODQgMzIwIDM4NGMtNzAuNyAwLTEyOC01Ny4zLTEyOC0xMjhsMC04LjdMMTQ0LjcgMjEwYy0uNSAxLjktLjcgMy45LS43IDZsMCA0MGMwIDg5LjEgNjYuMiAxNjIuNyAxNTIgMTc0LjRsMCAzMy42LTQ4IDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRsNzIgMCA3MiAwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0bC00OCAwIDAtMzMuNnpcIl1cbn07XG5jb25zdCBmYUJveFRpc3N1ZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdib3gtdGlzc3VlJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJlMDViXCIsIFwiTTkyLjUgMEwyMDggMGM0MCAwIDUyIDI0IDY0IDQ4czI0IDQ4IDY0IDQ4bDg1LjIgMEM0MzYgOTYgNDQ4IDEwOCA0NDggMTIyLjhjMCAzLjQtLjcgNi44LTEuOSAxMEw0MDkuNiAyMjQgMzg0IDI4OGwtMjU2IDAtMTYtNjRMNjQuOSAzNS40Yy0uNi0yLjMtLjktNC42LS45LTYuOUM2NCAxMi44IDc2LjggMCA5Mi41IDB6TTc5IDIyNGwxNiA2NC0xNSAwYy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2bDQ4IDAgMjU2IDAgNDggMGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNmwtMTMuNSAwIDI1LjYtNjQgMTkuOSAwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4bDAgMTEyTDAgMzg0IDAgMjcyYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4bDMxIDB6TTAgNDE2bDUxMiAwIDAgNDhjMCAyNi41LTIxLjUgNDgtNDggNDhMNDggNTEyYy0yNi41IDAtNDgtMjEuNS00OC00OGwwLTQ4elwiXVxufTtcbmNvbnN0IGZhTW90b3JjeWNsZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtb3RvcmN5Y2xlJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbMTI3OTQ5XSwgXCJmMjFjXCIsIFwiTTI4MCAzMmMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGw1Ny43IDAgMTYuNCAzMC4zTDI1NiAxOTJsLTQ1LjMtNDUuM2MtMTItMTItMjguMy0xOC43LTQ1LjMtMTguN0w2NCAxMjhjLTE3LjcgMC0zMiAxNC4zLTMyIDMybDAgMzIgOTYgMGM4OC40IDAgMTYwIDcxLjYgMTYwIDE2MGMwIDExLTEuMSAyMS43LTMuMiAzMmw3MC40IDBjLTIuMS0xMC4zLTMuMi0yMS0zLjItMzJjMC01Mi4yIDI1LTk4LjYgNjMuNy0xMjcuOGwxNS40IDI4LjZDNDAyLjQgMjc2LjMgMzg0IDMxMiAzODQgMzUyYzAgNzAuNyA1Ny4zIDEyOCAxMjggMTI4czEyOC01Ny4zIDEyOC0xMjhzLTU3LjMtMTI4LTEyOC0xMjhjLTEzLjUgMC0yNi41IDIuMS0zOC43IDZMNDE4LjIgMTI4bDYxLjggMGMxNy43IDAgMzItMTQuMyAzMi0zMmwwLTMyYzAtMTcuNy0xNC4zLTMyLTMyLTMybC0yMC40IDBjLTcuNSAwLTE0LjcgMi42LTIwLjUgNy40TDM5MS43IDc4LjlsLTE0LTI2Yy03LTEyLjktMjAuNS0yMS0zNS4yLTIxTDI4MCAzMnpNNDYyLjcgMzExLjJsMjguMiA1Mi4yYzYuMyAxMS43IDIwLjkgMTYgMzIuNSA5LjdzMTYtMjAuOSA5LjctMzIuNWwtMjguMi01Mi4yYzIuMy0uMyA0LjctLjQgNy4xLS40YzM1LjMgMCA2NCAyOC43IDY0IDY0cy0yOC43IDY0LTY0IDY0cy02NC0yOC43LTY0LTY0YzAtMTUuNSA1LjUtMjkuNyAxNC43LTQwLjh6TTE4Ny4zIDM3NmMtOS41IDIzLjUtMzIuNSA0MC01OS4zIDQwYy0zNS4zIDAtNjQtMjguNy02NC02NHMyOC43LTY0IDY0LTY0YzI2LjkgMCA0OS45IDE2LjUgNTkuMyA0MGw2Ni40IDBDMjQyLjUgMjY4LjggMTkwLjUgMjI0IDEyOCAyMjRDNTcuMyAyMjQgMCAyODEuMyAwIDM1MnM1Ny4zIDEyOCAxMjggMTI4YzYyLjUgMCAxMTQuNS00NC44IDEyNS44LTEwNGwtNjYuNCAwek0xMjggMzg0YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpcIl1cbn07XG5jb25zdCBmYUJlbGxDb25jaWVyZ2UgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYmVsbC1jb25jaWVyZ2UnLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjg3MTgsIFwiY29uY2llcmdlLWJlbGxcIl0sIFwiZjU2MlwiLCBcIk0yMTYgNjRjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRsMTYgMCAwIDMzLjNDMTE5LjYgMTU3LjIgMzIgMjUyLjQgMzIgMzY4bDQ0OCAwYzAtMTE1LjYtODcuNi0yMTAuOC0yMDAtMjIyLjdsMC0zMy4zIDE2IDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRsLTQwIDAtNDAgMHpNMjQgNDAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0bDQ2NCAwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0TDI0IDQwMHpcIl1cbn07XG5jb25zdCBmYUNvbmNpZXJnZUJlbGwgPSBmYUJlbGxDb25jaWVyZ2U7XG5jb25zdCBmYVBlblJ1bGVyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3Blbi1ydWxlcicsXG4gIGljb246IFs1MTIsIDUxMiwgW1wicGVuY2lsLXJ1bGVyXCJdLCBcImY1YWVcIiwgXCJNNDY5LjMgMTkuM2wyMy40IDIzLjRjMjUgMjUgMjUgNjUuNSAwIDkwLjVsLTU2LjQgNTYuNEwzMjIuMyA3NS43bDU2LjQtNTYuNGMyNS0yNSA2NS41LTI1IDkwLjUgMHpNNDQuOSAzNTMuMkwyOTkuNyA5OC4zIDQxMy43IDIxMi4zIDE1OC44IDQ2Ny4xYy02LjcgNi43LTE1LjEgMTEuNi0yNC4yIDE0LjJsLTEwNCAyOS43Yy04LjQgMi40LTE3LjQgLjEtMjMuNi02LjFzLTguNS0xNS4yLTYuMS0yMy42bDI5LjctMTA0YzIuNi05LjIgNy41LTE3LjUgMTQuMi0yNC4yek0yNDkuNCAxMDMuNEwxMDMuNCAyNDkuNCAxNiAxNjEuOWMtMTguNy0xOC43LTE4LjctNDkuMSAwLTY3LjlMOTQuMSAxNmMxOC43LTE4LjcgNDkuMS0xOC43IDY3LjkgMGwxOS44IDE5LjhjLS4zIC4zLS43IC42LTEgLjlsLTY0IDY0Yy02LjIgNi4yLTYuMiAxNi40IDAgMjIuNnMxNi40IDYuMiAyMi42IDBsNjQtNjRjLjMtLjMgLjYtLjcgLjktMWw0NS4xIDQ1LjF6TTQwOC42IDI2Mi42bDQ1LjEgNDUuMWMtLjMgLjMtLjcgLjYtMSAuOWwtNjQgNjRjLTYuMiA2LjItNi4yIDE2LjQgMCAyMi42czE2LjQgNi4yIDIyLjYgMGw2NC02NGMuMy0uMyAuNi0uNyAuOS0xTDQ5NiAzNTAuMWMxOC43IDE4LjcgMTguNyA0OS4xIDAgNjcuOUw0MTcuOSA0OTZjLTE4LjcgMTguNy00OS4xIDE4LjctNjcuOSAwbC04Ny40LTg3LjRMNDA4LjYgMjYyLjZ6XCJdXG59O1xuY29uc3QgZmFQZW5jaWxSdWxlciA9IGZhUGVuUnVsZXI7XG5jb25zdCBmYVBlb3BsZUFycm93cyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwZW9wbGUtYXJyb3dzJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXCJwZW9wbGUtYXJyb3dzLWxlZnQtcmlnaHRcIl0sIFwiZTA2OFwiLCBcIk02NCA2NGE2NCA2NCAwIDEgMSAxMjggMEE2NCA2NCAwIDEgMSA2NCA2NHpNMjUuOSAyMzMuNEMyOS4zIDE5MS45IDY0IDE2MCAxMDUuNiAxNjBsNDQuOCAwYzI3IDAgNTEgMTMuNCA2NS41IDM0LjFjLTIuNyAxLjktNS4yIDQtNy41IDYuM2wtNjQgNjRjLTIxLjkgMjEuOS0yMS45IDU3LjMgMCA3OS4yTDE5MiAzOTEuMmwwIDcyLjhjMCAyNi41LTIxLjUgNDgtNDggNDhsLTMyIDBjLTI2LjUgMC00OC0yMS41LTQ4LTQ4bDAtMTE1LjdjLTI2LjUtOS41LTQ0LjctMzUuOC00Mi4yLTY1LjZsNC4xLTQ5LjN6TTQ0OCA2NGE2NCA2NCAwIDEgMSAxMjggMEE2NCA2NCAwIDEgMSA0NDggNjR6TTQzMS42IDIwMC40Yy0yLjMtMi4zLTQuOS00LjQtNy41LTYuM2MxNC41LTIwLjcgMzguNi0zNC4xIDY1LjUtMzQuMWw0NC44IDBjNDEuNiAwIDc2LjMgMzEuOSA3OS43IDczLjRsNC4xIDQ5LjNjMi41IDI5LjgtMTUuNyA1Ni4xLTQyLjIgNjUuNkw1NzYgNDY0YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4bC0zMiAwYy0yNi41IDAtNDgtMjEuNS00OC00OGwwLTcyLjggNDcuNi00Ny42YzIxLjktMjEuOSAyMS45LTU3LjMgMC03OS4ybC02NC02NHpNMjcyIDI0MGwwIDMyIDk2IDAgMC0zMmMwLTkuNyA1LjgtMTguNSAxNC44LTIyLjJzMTkuMy0xLjcgMjYuMiA1LjJsNjQgNjRjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlsLTY0IDY0Yy02LjkgNi45LTE3LjIgOC45LTI2LjIgNS4ycy0xNC44LTEyLjUtMTQuOC0yMi4ybDAtMzItOTYgMCAwIDMyYzAgOS43LTUuOCAxOC41LTE0LjggMjIuMnMtMTkuMyAxLjctMjYuMi01LjJsLTY0LTY0Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOWw2NC02NGM2LjktNi45IDE3LjItOC45IDI2LjItNS4yczE0LjggMTIuNSAxNC44IDIyLjJ6XCJdXG59O1xuY29uc3QgZmFQZW9wbGVBcnJvd3NMZWZ0UmlnaHQgPSBmYVBlb3BsZUFycm93cztcbmNvbnN0IGZhTWFyc0FuZFZlbnVzQnVyc3QgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbWFycy1hbmQtdmVudXMtYnVyc3QnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU1MjNcIiwgXCJNNTA0IDBjLTkuNyAwLTE4LjUgNS44LTIyLjIgMTQuOHMtMS43IDE5LjMgNS4yIDI2LjJsMzkgMzktMjIuMiAyMi4yQzQ3NS45IDc4LjQgNDM5LjYgNjQgNDAwIDY0Yy04OC40IDAtMTYwIDcxLjYtMTYwIDE2MGMwIDgwLjIgNTkuMSAxNDYuNyAxMzYuMSAxNTguMmMwIC42LS4xIDEuMi0uMSAxLjhsMCAuNCAwIC40IDAgLjQgMCAuNCAwIC40IDAgLjQgMCAuNCAwIC40IDAgLjQgMCAuNCAwIC40IDAgLjQgMCAuNCAwIC40IDAgLjQgMCAuNCAwIC40IDAgLjQgMCAuNCAwIC40IDAgLjQgMCAuNCAwIC40IDAgLjQgMCAuNCAwIC40IDAgLjQgMCAuNCAwIC40IDAgLjQgMCAuMyAwIC40IDAgLjMgMCAuMyAwIC4zIDAgLjMgMCAuMyAwIC4zIDAgLjMgMCAuMyAwIC4zIDAgLjMgMCAuMyAwIC4zIDAgLjMgMCAuMyAwIC4zIDAgLjMgMCAuMyAwIC4zIDAgLjMgMCAuMyAwIC4zIDAgLjMgMCAuMyAwIC4zIDAgLjMgMCAuMyAwIC4zIDAgLjMgMCAuMyAwIC4zIDAgLjMgMCAuMyAwIC4zIDAgLjMgMCAuMyAwIC4zIDAgLjMtMjQgMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGwyNCAwIDAgLjIgMCAuMiAwIC4yIDAgLjIgMCAuMiAwIC4yIDAgLjIgMCAuMiAwIC4yIDAgLjIgMCAuMiAwIC4yIDAgLjIgMCAuMiAwIC4yIDAgLjIgMCAuMiAwIC4yIDAgLjIgMCAuMiAwIC4yIDAgLjIgMCAuMiAwIC4yIDAgLjIgMCAuMiAwIC4yIDAgLjIgMCAuMiAwIC4yIDAgLjIgMCAuMiAwIC4yIDAgLjIgMCAuMiAwIC4yIDAgLjIgMCAuMiAwIC4yIDAgLjIgMCAuMiAwIC4yIDAgLjIgMCAuMiAwIC4yIDAgLjIgMCAuMiAwIC4yIDAgLjIgMCAuMiAwIC4yIDAgLjIgMCAuMiAwIC4yIDAgLjIgMCAuMiAwIC4yIDAgLjIgMCAuMiAwIC4yIDAgLjIgMCAuMiAwIC4yIDAgLjIgMCAuMiAwIC4yIDAgLjIgMCAuMiAwIC4yIDAgLjIgMCAuMiAwIC4yIDAgLjIgMCAuMiAwIC4yIDAgLjIgMCAuMiAwIC4yIDAgLjIgMCAuMiAwIC4yIDAgLjIgMCAuMiAwIC4yIDAgLjIgMCAuMiAwIC4yIDAgLjIgMCAuMiAwIC4yIDAgLjIgMCAuMiAwIC4yIDAgLjIgMCAuMiAwIC4yIDAgLjIgMCAuMiAwIC4yIDAgLjIgMCAuMiAwIC4xIDAgLjEgMCAuMSAwIC4xIDAgLjEgMCAuMSAwIC4xIDAgLjEgMCAuMSAwIC4xIDAgLjEgMCAuMSAwIC4xIDAgLjEgMCAuMSAwIC4xIDAgLjEgMCAuMSAwIC4xIDAgLjEgMCAuMSAwIC4xIDAgLjEgMCAuMSAwIC4xIDAgLjEgMCAuMSAwIC4xIDAgLjEgMCAuMSAwIC4xIDAgLjEgMCAuMSAwIC4xIDAgLjEgMCAuMSAwIC4xIDAgLjEgMCAuMSAwIC4xIDAgLjEgMCAuMSAwIC4xIDAgLjEgMCAuMSAwIC4xIDAgLjEgMCAuMSAwIC4xIDAgLjEgMCAuMSAwIC4xIDAgLjEgMCAuMSAwIC4xIDAgLjEgMCAuMSAwIC4xIDAgLjEgMCAuMSAwIC4xIDAgLjEgMCAuMSAwIC4xYzAgMCAwIC4xIDAgLjFzMCAuMSAwIC4xbDAgLjFjMCAwIDAgLjEgMCAuMXMwIC4xIDAgLjFzMCAuMSAwIC4xczAgLjEgMCAuMXMwIC4xIDAgLjFzMCAuMSAwIC4xczAgLjEgMCAuMXMwIC4xIDAgLjFzMCAuMSAwIC4xczAgLjEgMCAuMXMwIC4xIDAgLjFzMCAuMSAwIC4xczAgLjEgMCAuMXMwIC4xIDAgLjFzMCAuMSAwIC4xczAgLjEgMCAuMXMwIC4xIDAgLjFzMCAuMSAwIC4xczAgLjEgMCAuMXMwIC4xIDAgLjFzMCAuMSAwIC4xczAgMCAwIC4xczAgMCAwIC4xczAgMCAwIC4xczAgMCAwIC4xczAgMCAwIC4xczAgMCAwIC4xczAgMCAwIC4xczAgMCAwIC4xczAgMCAwIC4xczAgMCAwIC4xczAgMCAwIC4xczAgMCAwIC4xczAgMCAwIC4xczAgMCAwIC4xczAgMCAwIC4xczAgMCAwIC4xczAgMCAwIC4xczAgMCAwIC4xczAgMCAwIC4xczAgMCAwIC4xczAgMCAwIC4xczAgMCAwIC4xczAgMCAwIC4xczAgMCAwIC4xczAgMCAwIC4xczAgMCAwIC4xczAgMCAwIC4xczAgMCAwIC4xczAgMCAwIC4xczAgMCAwIDBzMCAwIDAgMHMwIDAgMCAwczAgMCAwIDBzMCAwIDAgMHMwIDAgMCAwczAgMCAwIDBzMCAwIDAgMHMwIDAgMCAwczAgMCAwIDBzMCAwIDAgMHMwIDAgMCAwczAgMCAwIDBzMCAwIDAgMHMwIDAgMCAwczAgMCAwIDBzMCAwIDAgMHMwIDAgMCAwczAgMCAwIDBzMCAwIDAgMHMwIDAgMCAwczAgMCAwIDBzMCAwIDAgMHMwIDAgMCAwczAgMCAwIDBzMCAwIDAgMHMwIDAgMCAwczAgMCAwIDBzMCAwIDAgMHMwIDAgMCAwczAgMCAwIDBzMCAwIDAgMHMwIDAgMCAwczAgMCAwIDBzMCAwIDAgMHMwIDAgMCAwczAgMCAwIDBzMCAwIDAgMHMwIDAgMCAwczAgMCAwIDBzMCAwIDAgMHMwIDAgMCAwczAgMCAwIDBzMCAwIDAgMHMwIDAgMCAwczAgMCAwIDBzMCAwIDAgMHMwIDAgMCAwczAgMCAwIDBzMCAwIDAgMHMwIDAgMCAwczAgMCAwIDBzMCAwIDAgMGwyNCAwLTI0IDBjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGwtMjQgMCAyNCAwczAgMCAwIDBzMCAwIDAgMHMwIDAgMCAwczAgMCAwIDBzMCAwIDAgMHMwIDAgMCAwczAgMCAwIDBzMCAwIDAgMHMwIDAgMCAwczAgMCAwIDBzMCAwIDAgMHMwIDAgMCAwczAgMCAwIDBzMCAwIDAgMHMwIDAgMCAwczAgMCAwIDBzMCAwIDAgMHMwIDAgMCAwczAgMCAwIDBzMCAwIDAgMHMwIDAgMCAwczAgMCAwIDBzMCAwIDAgMHMwIDAgMCAwczAgMCAwIDBzMCAwIDAgMHMwIDAgMCAwczAgMCAwIDBzMCAwIDAgMHMwIDAgMCAwczAgMCAwIDBzMCAwIDAgMHMwIDAgMCAwczAgMCAwIDBzMCAwIDAgMHMwIDAgMCAwczAgMCAwIDBzMCAwIDAgMHMwIDAgMCAwczAgMCAwIDBzMCAwIDAgMHMwIDAgMCAwczAgMCAwIDBzMCAwIDAgMHMwIDAgMCAwczAgMCAwIDBzMCAwIDAgMHMwIDAgMCAwczAgMCAwIDBzMCAwIDAgMHMwIDAgMCAwczAgMCAwIDBzMCAwIDAgMHMwIDAgMC0uMXMwIDAgMC0uMXMwIDAgMC0uMXMwIDAgMC0uMXMwIDAgMC0uMXMwIDAgMC0uMXMwIDAgMC0uMXMwIDAgMC0uMXMwIDAgMC0uMXMwIDAgMC0uMXMwIDAgMC0uMXMwIDAgMC0uMXMwIDAgMC0uMXMwIDAgMC0uMXMwIDAgMC0uMXMwIDAgMC0uMXMwIDAgMC0uMXMwIDAgMC0uMXMwIDAgMC0uMXMwIDAgMC0uMXMwIDAgMC0uMXMwIDAgMC0uMXMwIDAgMC0uMXMwIDAgMC0uMXMwIDAgMC0uMXMwIDAgMC0uMXMwIDAgMC0uMXMwIDAgMC0uMXMwIDAgMC0uMXMwLS4xIDAtLjFzMC0uMSAwLS4xczAtLjEgMC0uMXMwLS4xIDAtLjFzMC0uMSAwLS4xczAtLjEgMC0uMXMwLS4xIDAtLjFzMC0uMSAwLS4xczAtLjEgMC0uMXMwLS4xIDAtLjFzMC0uMSAwLS4xczAtLjEgMC0uMXMwLS4xIDAtLjFzMC0uMSAwLS4xczAtLjEgMC0uMXMwLS4xIDAtLjFzMC0uMSAwLS4xczAtLjEgMC0uMXMwLS4xIDAtLjFzMC0uMSAwLS4xczAtLjEgMC0uMWwwLS4xYzAgMCAwLS4xIDAtLjFzMC0uMSAwLS4xbDAtLjEgMC0uMSAwLS4xIDAtLjEgMC0uMSAwLS4xIDAtLjEgMC0uMSAwLS4xIDAtLjEgMC0uMSAwLS4xIDAtLjEgMC0uMSAwLS4xIDAtLjEgMC0uMSAwLS4xIDAtLjEgMC0uMSAwLS4xIDAtLjEgMC0uMSAwLS4xIDAtLjEgMC0uMSAwLS4xIDAtLjEgMC0uMSAwLS4xIDAtLjEgMC0uMSAwLS4xIDAtLjEgMC0uMSAwLS4xIDAtLjEgMC0uMSAwLS4xIDAtLjEgMC0uMSAwLS4xIDAtLjEgMC0uMSAwLS4xIDAtLjEgMC0uMSAwLS4xIDAtLjEgMC0uMSAwLS4xIDAtLjEgMC0uMSAwLS4xIDAtLjEgMC0uMSAwLS4xIDAtLjEgMC0uMSAwLS4xIDAtLjEgMC0uMSAwLS4xIDAtLjEgMC0uMiAwLS4yIDAtLjIgMC0uMiAwLS4yIDAtLjIgMC0uMiAwLS4yIDAtLjIgMC0uMiAwLS4yIDAtLjIgMC0uMiAwLS4yIDAtLjIgMC0uMiAwLS4yIDAtLjIgMC0uMiAwLS4yIDAtLjIgMC0uMiAwLS4yIDAtLjIgMC0uMiAwLS4yIDAtLjIgMC0uMiAwLS4yIDAtLjIgMC0uMiAwLS4yIDAtLjIgMC0uMiAwLS4yIDAtLjIgMC0uMiAwLS4yIDAtLjIgMC0uMiAwLS4yIDAtLjIgMC0uMiAwLS4yIDAtLjIgMC0uMiAwLS4yIDAtLjIgMC0uMiAwLS4yIDAtLjIgMC0uMiAwLS4yIDAtLjIgMC0uMiAwLS4yIDAtLjIgMC0uMiAwLS4yIDAtLjIgMC0uMiAwLS4yIDAtLjIgMC0uMiAwLS4yIDAtLjIgMC0uMiAwLS4yIDAtLjIgMC0uMiAwLS4yIDAtLjIgMC0uMiAwLS4yIDAtLjIgMC0uMiAwLS4yIDAtLjIgMC0uMiAwLS4yIDAtLjIgMC0uMiAwLS4yIDAtLjIgMC0uMiAwLS4yIDAtLjIgMC0uMiAwLS4yIDAtLjIgMC0uMiAwLS4yIDAtLjIgMC0uMiAwLS4yIDAtLjIgMC0uMiAwLS4yIDAtLjIgMC0uMiAwLS4yIDI0IDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRsLTI0IDAgMC0uMyAwLS4zIDAtLjMgMC0uMyAwLS4zIDAtLjMgMC0uMyAwLS4zIDAtLjMgMC0uMyAwLS4zIDAtLjMgMC0uMyAwLS4zIDAtLjMgMC0uMyAwLS4zIDAtLjMgMC0uMyAwLS4zIDAtLjMgMC0uMyAwLS4zIDAtLjMgMC0uMyAwLS4zIDAtLjMgMC0uMyAwLS4zIDAtLjMgMC0uMyAwLS4zIDAtLjMgMC0uMyAwLS4zIDAtLjMgMC0uMyAwLS40IDAtLjMgMC0uNCAwLS40IDAtLjQgMC0uNCAwLS40IDAtLjQgMC0uNCAwLS40IDAtLjQgMC0uNCAwLS40IDAtLjQgMC0uNCAwLS40IDAtLjQgMC0uNCAwLS40IDAtLjQgMC0uNCAwLS40IDAtLjQgMC0uNCAwLS40IDAtLjQgMC0uNCAwLS40IDAtLjQgMC0uNCAwLS40IDAtLjRjMC0uNiAwLTEuMi0uMS0xLjhjNzctMTEuNiAxMzYuMS03OCAxMzYuMS0xNTguMmMwLTMxLjQtOS02MC43LTI0LjctODUuNEw1NjAgMTEzLjlsMzkgMzljNi45IDYuOSAxNy4yIDguOSAyNi4yIDUuMnMxNC44LTEyLjUgMTQuOC0yMi4ybDAtMTEyYzAtMTMuMy0xMC43LTI0LTI0LTI0TDUwNCAwek00MDAgMTI4YTk2IDk2IDAgMSAxIDAgMTkyIDk2IDk2IDAgMSAxIDAtMTkyek0xOTAuOSAxOC4xQzE4OC40IDEyIDE4Mi42IDggMTc2IDhzLTEyLjQgNC0xNC45IDEwLjFsLTI5LjQgNzRMNTUuNiA2OC45Yy02LjMtMS45LTEzLjEgLjItMTcuMiA1LjNzLTQuNiAxMi4yLTEuNCAxNy45bDM5LjUgNjkuMUwxMC45IDIwNi40Yy01LjQgMy43LTggMTAuMy02LjUgMTYuN3M2LjcgMTEuMiAxMy4xIDEyLjJsNzguNyAxMi4yTDkwLjYgMzI3Yy0uNSA2LjUgMy4xIDEyLjcgOSAxNS41czEyLjkgMS44IDE3LjgtMi42TDE3NiAyODYuMWw1OC42IDUzLjljNC4xIDMuOCA5LjkgNS4xIDE1LjIgMy42QzIyMy42IDMxMC44IDIwOCAyNjkuMiAyMDggMjI0YzAtNjAuOCAyOC4zLTExNSA3Mi40LTE1MC4yTDIyMC4zIDkyLjFsLTI5LjQtNzR6XCJdXG59O1xuY29uc3QgZmFTcXVhcmVDYXJldFJpZ2h0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NxdWFyZS1jYXJldC1yaWdodCcsXG4gIGljb246IFs0NDgsIDUxMiwgW1wiY2FyZXQtc3F1YXJlLXJpZ2h0XCJdLCBcImYxNTJcIiwgXCJNNDQ4IDk2YzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZMMCA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzIwIDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0zMjB6TTMyMCAyNTZjMCA2LjctMi44IDEzLTcuNyAxNy42bC0xMTIgMTA0Yy03IDYuNS0xNy4yIDguMi0yNS45IDQuNHMtMTQuNC0xMi41LTE0LjQtMjJsMC0yMDhjMC05LjUgNS43LTE4LjIgMTQuNC0yMnMxOC45LTIuMSAyNS45IDQuNGwxMTIgMTA0YzQuOSA0LjUgNy43IDEwLjkgNy43IDE3LjZ6XCJdXG59O1xuY29uc3QgZmFDYXJldFNxdWFyZVJpZ2h0ID0gZmFTcXVhcmVDYXJldFJpZ2h0O1xuY29uc3QgZmFTY2lzc29ycyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzY2lzc29ycycsXG4gIGljb246IFs1MTIsIDUxMiwgWzk5ODQsIDk5ODYsIDk5ODgsIFwiY3V0XCJdLCBcImYwYzRcIiwgXCJNMjU2IDE5MmwtMzkuNS0zOS41YzQuOS0xMi42IDcuNS0yNi4yIDcuNS00MC41QzIyNCA1MC4xIDE3My45IDAgMTEyIDBTMCA1MC4xIDAgMTEyczUwLjEgMTEyIDExMiAxMTJjMTQuMyAwIDI3LjktMi43IDQwLjUtNy41TDE5MiAyNTZsLTM5LjUgMzkuNWMtMTIuNi00LjktMjYuMi03LjUtNDAuNS03LjVDNTAuMSAyODggMCAzMzguMSAwIDQwMHM1MC4xIDExMiAxMTIgMTEyczExMi01MC4xIDExMi0xMTJjMC0xNC4zLTIuNy0yNy45LTcuNS00MC41TDQ5OS4yIDc2LjhjNy4xLTcuMSA3LjEtMTguNSAwLTI1LjZjLTI4LjMtMjguMy03NC4xLTI4LjMtMTAyLjQgMEwyNTYgMTkyem0yMi42IDE1MC42TDM5Ni44IDQ2MC44YzI4LjMgMjguMyA3NC4xIDI4LjMgMTAyLjQgMGM3LjEtNy4xIDcuMS0xOC41IDAtMjUuNkwzNDIuNiAyNzguNmwtNjQgNjR6TTY0IDExMmE0OCA0OCAwIDEgMSA5NiAwIDQ4IDQ4IDAgMSAxIC05NiAwem00OCAyNDBhNDggNDggMCAxIDEgMCA5NiA0OCA0OCAwIDEgMSAwLTk2elwiXVxufTtcbmNvbnN0IGZhQ3V0ID0gZmFTY2lzc29ycztcbmNvbnN0IGZhU3VuUGxhbnRXaWx0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3N1bi1wbGFudC13aWx0JyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlNTdhXCIsIFwiTTE2MCAwYy02LjMgMC0xMiAzLjctMTQuNiA5LjVMMTIwLjYgNjQuOSA2My45IDQzLjJjLTUuOS0yLjMtMTIuNi0uOC0xNyAzLjZzLTUuOSAxMS4xLTMuNiAxN2wyMS43IDU2LjdMOS41IDE0NS40QzMuNyAxNDggMCAxNTMuNyAwIDE2MHMzLjcgMTIgOS41IDE0LjZsNTUuNCAyNC44TDQzLjIgMjU2LjFjLTIuMyA1LjktLjggMTIuNiAzLjYgMTdzMTEuMSA1LjkgMTcgMy42bDU2LjctMjEuNyAyNC44IDU1LjRjMi42IDUuOCA4LjMgOS41IDE0LjYgOS41czEyLTMuNyAxNC42LTkuNWwyNC44LTU1LjQgNTYuNyAyMS43YzUuOSAyLjMgMTIuNiAuOCAxNy0zLjZzNS45LTExLjEgMy42LTE3bC0yMS43LTU2LjcgNTUuNC0yNC44YzUuOC0yLjYgOS41LTguMyA5LjUtMTQuNnMtMy43LTEyLTkuNS0xNC42bC01NS40LTI0LjggMjEuNy01Ni43YzIuMy01LjkgLjgtMTIuNi0zLjYtMTdzLTExLjEtNS45LTE3LTMuNkwxOTkuNCA2NC45IDE3NC42IDkuNUMxNzIgMy43IDE2Ni4zIDAgMTYwIDB6bTAgOTZhNjQgNjQgMCAxIDEgMCAxMjggNjQgNjQgMCAxIDEgMC0xMjh6bTMyIDY0YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6bTMxMiAxNmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMybDAgNTMuNGMtMTQuOCA3LjctMjQgMjMuMS0yNCA0NC42YzAgMTYuOCAxNiA0NCAzNy40IDY3LjJjNS44IDYuMiAxNS41IDYuMiAyMS4yIDBDNjI0IDMxOCA2NDAgMjkwLjcgNjQwIDI3NGMwLTIxLjUtOS4yLTM3LTI0LTQ0LjZsMC01My40YzAtNDQuMi0zNS44LTgwLTgwLTgwcy04MCAzNS44LTgwIDgwbDAgMjIuN2MtOS44LTQuMy0yMC42LTYuNy0zMi02LjdjLTQ0LjIgMC04MCAzNS44LTgwIDgwbDAgMjEuNGMtMTQuOCA3LjctMjQgMjMuMS0yNCA0NC42YzAgMTYuOCAxNiA0NCAzNy40IDY3LjJjNS44IDYuMiAxNS41IDYuMiAyMS4yIDBDNDAwIDM4MiA0MTYgMzU0LjcgNDE2IDMzOGMwLTIxLjUtOS4yLTM3LTI0LTQ0LjZsMC0yMS40YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJsMCA4IDAgMTY4TDMyIDQ0OGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmw1NzYgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtMTA0IDAgMC0xNjggMC04IDAtOTZ6XCJdXG59O1xuY29uc3QgZmFUb2lsZXRzUG9ydGFibGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndG9pbGV0cy1wb3J0YWJsZScsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZTU4NFwiLCBcIk0zMiAwTDIyNCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgMzJMMCA2NCAwIDMyQzAgMTQuMyAxNC4zIDAgMzIgMHpNMCA5NmwyNCAwIDIwOCAwIDI0IDAgMCAyNCAwIDM2OGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNGwwLThMNDggNDgwbDAgOGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNEwwIDEyMCAwIDk2ek0xOTIgMjI0Yy04LjggMC0xNiA3LjItMTYgMTZsMCA2NGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2bDAtNjRjMC04LjgtNy4yLTE2LTE2LTE2ek0zNTIgMEw1NDQgMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDMyTDMyMCA2NGwwLTMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyek0zMjAgOTZsMjQgMCAyMDggMCAyNCAwIDAgMjQgMCAzNjhjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRsMC04LTE2MCAwIDAgOGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNGwwLTM2OCAwLTI0ek01MTIgMjI0Yy04LjggMC0xNiA3LjItMTYgMTZsMCA2NGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2bDAtNjRjMC04LjgtNy4yLTE2LTE2LTE2elwiXVxufTtcbmNvbnN0IGZhSG9ja2V5UHVjayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdob2NrZXktcHVjaycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjQ1M1wiLCBcIk0yNTYgMjU2QzExNC42IDI1NiAwIDIxMyAwIDE2MHMxMTQuNi05NiAyNTYtOTZzMjU2IDQzIDI1NiA5NnMtMTE0LjYgOTYtMjU2IDk2em0xOTIuMyAxLjhjMjQuNy05LjMgNDYuOS0yMSA2My43LTM1LjZMNTEyIDM1MmMwIDUzLTExNC42IDk2LTI1NiA5NlMwIDQwNSAwIDM1MkwwIDIyMi4zYzE2LjggMTQuNiAzOSAyNi4zIDYzLjcgMzUuNkMxMTQuNSAyNzYuOSAxODIuNSAyODggMjU2IDI4OHMxNDEuNS0xMS4xIDE5Mi4zLTMwLjJ6XCJdXG59O1xuY29uc3QgZmFUYWJsZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0YWJsZScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjBjZVwiLCBcIk02NCAyNTZsMC05NiAxNjAgMCAwIDk2TDY0IDI1NnptMCA2NGwxNjAgMCAwIDk2TDY0IDQxNmwwLTk2em0yMjQgOTZsMC05NiAxNjAgMCAwIDk2LTE2MCAwek00NDggMjU2bC0xNjAgMCAwLTk2IDE2MCAwIDAgOTZ6TTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZMMCA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzg0IDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0zMjBjMC0zNS4zLTI4LjctNjQtNjQtNjRMNjQgMzJ6XCJdXG59O1xuY29uc3QgZmFNYWduaWZ5aW5nR2xhc3NBcnJvd1JpZ2h0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21hZ25pZnlpbmctZ2xhc3MtYXJyb3ctcmlnaHQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImU1MjFcIiwgXCJNNDE2IDIwOGMwIDQ1LjktMTQuOSA4OC4zLTQwIDEyMi43TDUwMi42IDQ1Ny40YzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zcy0zMi44IDEyLjUtNDUuMyAwTDMzMC43IDM3NmMtMzQuNCAyNS4yLTc2LjggNDAtMTIyLjcgNDBDOTMuMSA0MTYgMCAzMjIuOSAwIDIwOFM5My4xIDAgMjA4IDBTNDE2IDkzLjEgNDE2IDIwOHpNMjQxIDExOWMtOS40LTkuNC0yNC42LTkuNC0zMy45IDBzLTkuNCAyNC42IDAgMzMuOWwzMSAzMUwxMjAgMTg0Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0bDExOC4xIDAtMzEgMzFjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45czI0LjYgOS40IDMzLjkgMGw3Mi03MmM5LjQtOS40IDkuNC0yNC42IDAtMzMuOWwtNzItNzJ6XCJdXG59O1xuY29uc3QgZmFUYWNob2dyYXBoRGlnaXRhbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0YWNob2dyYXBoLWRpZ2l0YWwnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtcImRpZ2l0YWwtdGFjaG9ncmFwaFwiXSwgXCJmNTY2XCIsIFwiTTY0IDY0QzI4LjcgNjQgMCA5Mi43IDAgMTI4TDAgMzg0YzAgMzUuMyAyOC43IDY0IDY0IDY0bDUxMiAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMjU2YzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDY0em0zMiA2NGwyMjQgMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDY0YzAgMTcuNy0xNC4zIDMyLTMyIDMyTDk2IDI1NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC02NGMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNNjQgMzY4YzAtOC44IDcuMi0xNiAxNi0xNmwyNTYgMGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkw4MCAzODRjLTguOCAwLTE2LTcuMi0xNi0xNnptMzIwIDBjMC04LjggNy4yLTE2IDE2LTE2bDE2MCAwYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2bC0xNjAgMGMtOC44IDAtMTYtNy4yLTE2LTE2ek04MCAyODhhMTYgMTYgMCAxIDEgMCAzMiAxNiAxNiAwIDEgMSAwLTMyem00OCAxNmExNiAxNiAwIDEgMSAzMiAwIDE2IDE2IDAgMSAxIC0zMiAwem04MC0xNmExNiAxNiAwIDEgMSAwIDMyIDE2IDE2IDAgMSAxIDAtMzJ6bTQ4IDE2YTE2IDE2IDAgMSAxIDMyIDAgMTYgMTYgMCAxIDEgLTMyIDB6bTgwLTE2YTE2IDE2IDAgMSAxIDAgMzIgMTYgMTYgMCAxIDEgMC0zMnpcIl1cbn07XG5jb25zdCBmYURpZ2l0YWxUYWNob2dyYXBoID0gZmFUYWNob2dyYXBoRGlnaXRhbDtcbmNvbnN0IGZhVXNlcnNTbGFzaCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd1c2Vycy1zbGFzaCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTA3M1wiLCBcIk0zOC44IDUuMUMyOC40LTMuMSAxMy4zLTEuMiA1LjEgOS4yUy0xLjIgMzQuNyA5LjIgNDIuOWw1OTIgNDY0YzEwLjQgOC4yIDI1LjUgNi4zIDMzLjctNC4xczYuMy0yNS41LTQuMS0zMy43TDQ0MC42IDMyMGwxNzguMSAwYzExLjggMCAyMS4zLTkuNiAyMS4zLTIxLjNDNjQwIDIzOS44IDU5Mi4yIDE5MiA1MzMuMyAxOTJsLTQyLjcgMGMtMTUuOSAwLTMxIDMuNS00NC42IDkuN2MxLjMgNy4yIDEuOSAxNC43IDEuOSAyMi4zYzAgMzAuMi0xMC41IDU4LTI4IDc5LjlsLTI1LjItMTkuN0M0MDguMSAyNjcuNyA0MTYgMjQ2LjggNDE2IDIyNGMwLTUzLTQzLTk2LTk2LTk2Yy0zMS4xIDAtNTguNyAxNC44LTc2LjMgMzcuN2wtNDAuNi0zMS44YzEzLTE0LjIgMjAuOS0zMy4xIDIwLjktNTMuOWMwLTQ0LjItMzUuOC04MC04MC04MEMxMTYuMyAwIDkxLjkgMTQuMSA3Ny41IDM1LjVMMzguOCA1LjF6TTEwNi43IDE5MkM0Ny44IDE5MiAwIDIzOS44IDAgMjk4LjdDMCAzMTAuNCA5LjYgMzIwIDIxLjMgMzIwbDIxMy4zIDBjLjIgMCAuNCAwIC43IDBjLTIwLjYtMTguMi0zNS4yLTQyLjgtNDAuOC03MC44TDEyMS44IDE5MmwtMTUuMiAwek0yNjEuMyAzNTJDMTg3LjcgMzUyIDEyOCA0MTEuNyAxMjggNDg1LjNjMCAxNC43IDExLjkgMjYuNyAyNi43IDI2LjdsMzMwLjcgMGMxMC41IDAgMTkuNS02IDIzLjktMTQuOEwzMjQuOSAzNTJsLTYzLjYgMHpNNTEyIDE2MEE4MCA4MCAwIDEgMCA1MTIgMGE4MCA4MCAwIDEgMCAwIDE2MHpcIl1cbn07XG5jb25zdCBmYUNsb3ZlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjbG92ZXInLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImUxMzlcIiwgXCJNMjE2LjYgNDkuOUMyMDUuMSAzOC41IDE4OS41IDMyIDE3My4zIDMyQzEzOS40IDMyIDExMiA1OS40IDExMiA5My4zbDAgNC45YzAgMTIgMy4zIDIzLjcgOS40IDM0bDE4LjggMzEuM2MxLjEgMS44IDEuMiAzLjEgMSA0LjJjLS4yIDEuMi0uOCAyLjUtMiAzLjZzLTIuNCAxLjgtMy42IDJjLTEgLjItMi40IC4xLTQuMi0xbC0zMS4zLTE4LjhjLTEwLjMtNi4yLTIyLTkuNC0zNC05LjRsLTQuOSAwQzI3LjQgMTQ0IDAgMTcxLjQgMCAyMDUuM2MwIDE2LjIgNi41IDMxLjggMTcuOSA0My4zbDEuMiAxLjJjMy40IDMuNCAzLjQgOSAwIDEyLjRsLTEuMiAxLjJDNi41IDI3NC45IDAgMjkwLjUgMCAzMDYuN0MwIDM0MC42IDI3LjQgMzY4IDYxLjMgMzY4bDQuOSAwYzEyIDAgMjMuNy0zLjMgMzQtOS40bDMxLjMtMTguOGMxLjgtMS4xIDMuMS0xLjIgNC4yLTFjMS4yIC4yIDIuNSAuOCAzLjYgMnMxLjggMi40IDIgMy42Yy4yIDEgLjEgMi40LTEgNC4ybC0xOC44IDMxLjNjLTYuMiAxMC4zLTkuNCAyMi05LjQgMzRsMCA0LjljMCAzMy44IDI3LjQgNjEuMyA2MS4zIDYxLjNjMTYuMiAwIDMxLjgtNi41IDQzLjMtMTcuOWwxLjItMS4yYzMuNC0zLjQgOS0zLjQgMTIuNCAwbDEuMiAxLjJjMTEuNSAxMS41IDI3LjEgMTcuOSA0My4zIDE3LjljMzMuOCAwIDYxLjMtMjcuNCA2MS4zLTYxLjNsMC00LjljMC0xMi0zLjMtMjMuNy05LjQtMzRsLTE4LjgtMzEuM2MtMS4xLTEuOC0xLjItMy4xLTEtNC4yYy4yLTEuMiAuOC0yLjUgMi0zLjZzMi40LTEuOCAzLjYtMmMxLS4yIDIuNC0uMSA0LjIgMWwzMS4zIDE4LjhjMTAuMyA2LjIgMjIgOS40IDM0IDkuNGw0LjkgMGMzMy44IDAgNjEuMy0yNy40IDYxLjMtNjEuM2MwLTE2LjItNi41LTMxLjgtMTcuOS00My4zbC0xLjItMS4yYy0zLjQtMy40LTMuNC05IDAtMTIuNGwxLjItMS4yYzExLjUtMTEuNSAxNy45LTI3LjEgMTcuOS00My4zYzAtMzMuOC0yNy40LTYxLjMtNjEuMy02MS4zbC00LjkgMGMtMTIgMC0yMy43IDMuMy0zNCA5LjRsLTMxLjMgMTguOGMtMS44IDEuMS0zLjEgMS4yLTQuMiAxYy0xLjItLjItMi41LS44LTMuNi0ycy0xLjgtMi40LTItMy42Yy0uMi0xLS4xLTIuNCAxLTQuMmwxOC44LTMxLjNjNi4yLTEwLjMgOS40LTIyIDkuNC0zNGwwLTQuOUMzMzYgNTkuNCAzMDguNiAzMiAyNzQuNyAzMmMtMTYuMiAwLTMxLjggNi41LTQzLjMgMTcuOWwtMS4yIDEuMmMtMy40IDMuNC05IDMuNC0xMi40IDBsLTEuMi0xLjJ6XCJdXG59O1xuY29uc3QgZmFSZXBseSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdyZXBseScsXG4gIGljb246IFs1MTIsIDUxMiwgWzYxNzE0LCBcIm1haWwtcmVwbHlcIl0sIFwiZjNlNVwiLCBcIk0yMDUgMzQuOGMxMS41IDUuMSAxOSAxNi42IDE5IDI5LjJsMCA2NCAxMTIgMGM5Ny4yIDAgMTc2IDc4LjggMTc2IDE3NmMwIDExMy4zLTgxLjUgMTYzLjktMTAwLjIgMTc0LjFjLTIuNSAxLjQtNS4zIDEuOS04LjEgMS45Yy0xMC45IDAtMTkuNy04LjktMTkuNy0xOS43YzAtNy41IDQuMy0xNC40IDkuOC0xOS41YzkuNC04LjggMjIuMi0yNi40IDIyLjItNTYuN2MwLTUzLTQzLTk2LTk2LTk2bC05NiAwIDAgNjRjMCAxMi42LTcuNCAyNC4xLTE5IDI5LjJzLTI1IDMtMzQuNC01LjRsLTE2MC0xNDRDMy45IDIyNS43IDAgMjE3LjEgMCAyMDhzMy45LTE3LjcgMTAuNi0yMy44bDE2MC0xNDRjOS40LTguNSAyMi45LTEwLjYgMzQuNC01LjR6XCJdXG59O1xuY29uc3QgZmFNYWlsUmVwbHkgPSBmYVJlcGx5O1xuY29uc3QgZmFTdGFyQW5kQ3Jlc2NlbnQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3Rhci1hbmQtY3Jlc2NlbnQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFs5NzcwXSwgXCJmNjk5XCIsIFwiTTAgMjU2QzAgMTE0LjYgMTE0LjYgMCAyNTYgMGMzMyAwIDY0LjYgNi4zIDkzLjYgMTcuN2M3LjQgMi45IDExLjUgMTAuNyA5LjggMTguNHMtOC44IDEzLTE2LjcgMTIuNGMtNC44LS4zLTkuNy0uNS0xNC42LS41Yy0xMTQuOSAwLTIwOCA5My4xLTIwOCAyMDhzOTMuMSAyMDggMjA4IDIwOGM0LjkgMCA5LjgtLjIgMTQuNi0uNWM3LjktLjUgMTUgNC43IDE2LjcgMTIuNHMtMi40IDE1LjUtOS44IDE4LjRDMzIwLjYgNTA1LjcgMjg5IDUxMiAyNTYgNTEyQzExNC42IDUxMiAwIDM5Ny40IDAgMjU2ek0zNzUuNCAxMzcuNGMzLjUtNy4xIDEzLjctNy4xIDE3LjIgMGwzMS41IDYzLjhjMS40IDIuOCA0LjEgNC44IDcuMiA1LjNsNzAuNCAxMC4yYzcuOSAxLjEgMTEgMTAuOCA1LjMgMTYuNGwtNTAuOSA0OS42Yy0yLjMgMi4yLTMuMyA1LjQtMi44IDguNWwxMiA3MC4xYzEuMyA3LjgtNi45IDEzLjgtMTMuOSAxMC4xbC02My0zMy4xYy0yLjgtMS41LTYuMS0xLjUtOC45IDBsLTYzIDMzLjFjLTcgMy43LTE1LjMtMi4zLTEzLjktMTAuMWwxMi03MC4xYy41LTMuMS0uNS02LjMtMi44LTguNUwyNjEgMjMzLjFjLTUuNy01LjYtMi42LTE1LjIgNS4zLTE2LjRsNzAuNC0xMC4yYzMuMS0uNSA1LjgtMi40IDcuMi01LjNsMzEuNS02My44elwiXVxufTtcbmNvbnN0IGZhSG91c2VGaXJlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hvdXNlLWZpcmUnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU1MGNcIiwgXCJNMjg4IDM1MC4xbDAgMS45LTMyIDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMybDAgNjQgMCAyNGMwIDIyLjEtMTcuOSA0MC00MCA0MGwtMjQgMC0zMS45IDBjLTEuNSAwLTMtLjEtNC41LS4yYy0xLjIgLjEtMi40IC4yLTMuNiAuMmwtMTYgMGMtMjIuMSAwLTQwLTE3LjktNDAtNDBsMC0xMTJjMC0uOSAwLTEuOSAuMS0yLjhsMC02OS43LTMyIDBjLTE4IDAtMzItMTQtMzItMzIuMWMwLTkgMy0xNyAxMC0yNEwyNjYuNCA4YzctNyAxNS04IDIyLThzMTUgMiAyMSA3TDQ0Ny4zIDEyOC4xYy0xMi4zLTEtMjUgMy0zNC44IDExLjdjLTM1LjQgMzEuNi02NS42IDY3LjctODcuMyAxMDIuOEMzMDQuMyAyNzYuNSAyODggMzE0LjkgMjg4IDM1MC4xek00ODAgNTEyYy04OC40IDAtMTYwLTcxLjYtMTYwLTE2MGMwLTc2LjcgNjIuNS0xNDQuNyAxMDcuMi0xNzkuNGM1LTMuOSAxMC45LTUuOCAxNi44LTUuOGM3LjktLjEgMTYgMy4xIDIyIDkuMmw0NiA0NiAxMS4zLTExLjNjMTEuNy0xMS43IDMwLjYtMTIuNyA0Mi4zLTFDNjI0LjUgMjY4IDY0MCAzMjAuMiA2NDAgMzUyYzAgODguNC03MS42IDE2MC0xNjAgMTYwem02NC0xMTEuOGMwLTM2LjUtMzctNzMtNTQuOC04OC40Yy01LjQtNC43LTEzLjEtNC43LTE4LjUgMEM0NTMgMzI3LjEgNDE2IDM2My42IDQxNiA0MDAuMmMwIDM1LjMgMjguNyA2NCA2NCA2NHM2NC0yOC43IDY0LTY0elwiXVxufTtcbmNvbnN0IGZhU3F1YXJlTWludXMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3F1YXJlLW1pbnVzJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbNjE3NjcsIFwibWludXMtc3F1YXJlXCJdLCBcImYxNDZcIiwgXCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NkwwIDQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NGwzMjAgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTMyMGMwLTM1LjMtMjguNy02NC02NC02NEw2NCAzMnptODggMjAwbDE0NCAwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0bC0xNDQgMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNHpcIl1cbn07XG5jb25zdCBmYU1pbnVzU3F1YXJlID0gZmFTcXVhcmVNaW51cztcbmNvbnN0IGZhSGVsaWNvcHRlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoZWxpY29wdGVyJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbMTI4NjQxXSwgXCJmNTMzXCIsIFwiTTEyOCAzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMkw1NDQgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkwzODQgNjRsMCA2NCAzMiAwYzg4LjQgMCAxNjAgNzEuNiAxNjAgMTYwbDAgNjRjMCAxNy43LTE0LjMgMzItMzIgMzJsLTE2MCAwLTY0IDBjLTIwLjEgMC0zOS4xLTkuNS01MS4yLTI1LjZsLTcxLjQtOTUuMmMtMy41LTQuNy04LjMtOC4zLTEzLjctMTAuNUw0Ny4yIDE5OC4xYy05LjUtMy44LTE2LjctMTItMTkuMi0yMkw1IDgzLjlDMi40IDczLjggMTAuMSA2NCAyMC41IDY0TDQ4IDY0YzEwLjEgMCAxOS42IDQuNyAyNS42IDEyLjhMMTEyIDEyOGwyMDggMCAwLTY0TDE2MCA2NGMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6TTM4NCAzMjBsMTI4IDAgMC0zMmMwLTUzLTQzLTk2LTk2LTk2bC0zMiAwIDAgMTI4ek02MzAuNiA0MjUuNGMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM2wtMy45IDMuOWMtMjQgMjQtNTYuNiAzNy41LTkwLjUgMzcuNUwyNTYgNTEyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDI4MC4yIDBjMTcgMCAzMy4zLTYuNyA0NS4zLTE4LjdsMy45LTMuOWMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMHpcIl1cbn07XG5jb25zdCBmYUNvbXBhc3MgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY29tcGFzcycsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyOTUxN10sIFwiZjE0ZVwiLCBcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnptNTAuNy0xODYuOUwxNjIuNCAzODAuNmMtMTkuNCA3LjUtMzguNS0xMS42LTMxLTMxbDU1LjUtMTQ0LjNjMy4zLTguNSA5LjktMTUuMSAxOC40LTE4LjRsMTQ0LjMtNTUuNWMxOS40LTcuNSAzOC41IDExLjYgMzEgMzFMMzI1LjEgMzA2LjdjLTMuMiA4LjUtOS45IDE1LjEtMTguNCAxOC40ek0yODggMjU2YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6XCJdXG59O1xuY29uc3QgZmFTcXVhcmVDYXJldERvd24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3F1YXJlLWNhcmV0LWRvd24nLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtcImNhcmV0LXNxdWFyZS1kb3duXCJdLCBcImYxNTBcIiwgXCJNMzg0IDQ4MGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTMyMGMwLTM1LjMtMjguNy02NC02NC02NEw2NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2TDAgNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0bDMyMCAwek0yMjQgMzUyYy02LjcgMC0xMy0yLjgtMTcuNi03LjdsLTEwNC0xMTJjLTYuNS03LTguMi0xNy4yLTQuNC0yNS45czEyLjUtMTQuNCAyMi0xNC40bDIwOCAwYzkuNSAwIDE4LjIgNS43IDIyIDE0LjRzMi4xIDE4LjktNC40IDI1LjlsLTEwNCAxMTJjLTQuNSA0LjktMTAuOSA3LjctMTcuNiA3Ljd6XCJdXG59O1xuY29uc3QgZmFDYXJldFNxdWFyZURvd24gPSBmYVNxdWFyZUNhcmV0RG93bjtcbmNvbnN0IGZhRmlsZUNpcmNsZVF1ZXN0aW9uID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZpbGUtY2lyY2xlLXF1ZXN0aW9uJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJlNGVmXCIsIFwiTTAgNjRDMCAyOC43IDI4LjcgMCA2NCAwTDIyNCAwbDAgMTI4YzAgMTcuNyAxNC4zIDMyIDMyIDMybDEyOCAwIDAgMzguNkMzMTAuMSAyMTkuNSAyNTYgMjg3LjQgMjU2IDM2OGMwIDU5LjEgMjkuMSAxMTEuMyA3My43IDE0My4zYy0zLjIgLjUtNi40IC43LTkuNyAuN0w2NCA1MTJjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgNjR6bTM4NCA2NGwtMTI4IDBMMjU2IDAgMzg0IDEyOHptNDggOTZhMTQ0IDE0NCAwIDEgMSAwIDI4OCAxNDQgMTQ0IDAgMSAxIDAtMjg4em0wIDI0MGEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6TTM2OCAzMjEuNmwwIDYuNGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2bDAtNi40YzAtNS4zIDQuMy05LjYgOS42LTkuNmw0MC41IDBjNy43IDAgMTMuOSA2LjIgMTMuOSAxMy45YzAgNS4yLTIuOSA5LjktNy40IDEyLjNsLTMyIDE2LjhjLTUuMyAyLjgtOC42IDguMi04LjYgMTQuMmwwIDE0LjhjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNmwwLTUuMSAyMy41LTEyLjNjMTUuMS03LjkgMjQuNS0yMy42IDI0LjUtNDAuNmMwLTI1LjQtMjAuNi00NS45LTQ1LjktNDUuOWwtNDAuNSAwYy0yMyAwLTQxLjYgMTguNi00MS42IDQxLjZ6XCJdXG59O1xuY29uc3QgZmFMYXB0b3BDb2RlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2xhcHRvcC1jb2RlJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNWZjXCIsIFwiTTY0IDk2YzAtMzUuMyAyOC43LTY0IDY0LTY0bDM4NCAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMjU2LTY0IDAgMC0yNTZMMTI4IDk2bDAgMjU2LTY0IDBMNjQgOTZ6TTAgNDAzLjJDMCAzOTIuNiA4LjYgMzg0IDE5LjIgMzg0bDYwMS42IDBjMTAuNiAwIDE5LjIgOC42IDE5LjIgMTkuMmMwIDQyLjQtMzQuNCA3Ni44LTc2LjggNzYuOEw3Ni44IDQ4MEMzNC40IDQ4MCAwIDQ0NS42IDAgNDAzLjJ6TTI4MSAyMDlsLTMxIDMxIDMxIDMxYzkuNCA5LjQgOS40IDI0LjYgMCAzMy45cy0yNC42IDkuNC0zMy45IDBsLTQ4LTQ4Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOWw0OC00OGM5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjl6TTM5MyAxNzVsNDggNDhjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlsLTQ4IDQ4Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45bDMxLTMxLTMxLTMxYy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXMyNC42LTkuNCAzMy45IDB6XCJdXG59O1xuY29uc3QgZmFTd2F0Y2hib29rID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3N3YXRjaGJvb2snLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY1YzNcIiwgXCJNMCAzMkMwIDE0LjMgMTQuMyAwIDMyIDBMMTYwIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCAzODRjMCA1My00MyA5Ni05NiA5NnMtOTYtNDMtOTYtOTZMMCAzMnpNMjIzLjYgNDI1LjljLjMtMy4zIC40LTYuNiAuNC05LjlsMC0yNjIgNzUuNC03NS40YzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwbDkwLjUgOTAuNWMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM0wyMjMuNiA0MjUuOXpNMTgyLjggNTEybDE5Mi0xOTJMNDgwIDMyMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDEyOGMwIDE3LjctMTQuMyAzMi0zMiAzMmwtMjk3LjIgMHpNMTI4IDY0TDY0IDY0bDAgNjQgNjQgMCAwLTY0ek02NCAxOTJsMCA2NCA2NCAwIDAtNjQtNjQgMHpNOTYgNDQwYTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHpcIl1cbn07XG5jb25zdCBmYVByZXNjcmlwdGlvbkJvdHRsZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwcmVzY3JpcHRpb24tYm90dGxlJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmNDg1XCIsIFwiTTAgMzJDMCAxNC4zIDE0LjMgMCAzMiAwTDM1MiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgMzJjMCAxNy43LTE0LjMgMzItMzIgMzJMMzIgOTZDMTQuMyA5NiAwIDgxLjcgMCA2NEwwIDMyem0zMiA5NmwzMjAgMCAwIDMyMGMwIDM1LjMtMjguNyA2NC02NCA2NEw5NiA1MTJjLTM1LjMgMC02NC0yOC43LTY0LTY0bDAtMzIgMTEyIDBjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZMMzIgMzg0bDAtNjQgMTEyIDBjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZMMzIgMjg4bDAtNjQgMTEyIDBjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZMMzIgMTkybDAtNjR6XCJdXG59O1xuY29uc3QgZmFCYXJzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JhcnMnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtcIm5hdmljb25cIl0sIFwiZjBjOVwiLCBcIk0wIDk2QzAgNzguMyAxNC4zIDY0IDMyIDY0bDM4NCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyTDMyIDEyOEMxNC4zIDEyOCAwIDExMy43IDAgOTZ6TTAgMjU2YzAtMTcuNyAxNC4zLTMyIDMyLTMybDM4NCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyTDMyIDI4OGMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6TTQ0OCA0MTZjMCAxNy43LTE0LjMgMzItMzIgMzJMMzIgNDQ4Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDM4NCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMyelwiXVxufTtcbmNvbnN0IGZhTmF2aWNvbiA9IGZhQmFycztcbmNvbnN0IGZhUGVvcGxlR3JvdXAgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGVvcGxlLWdyb3VwJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlNTMzXCIsIFwiTTcyIDg4YTU2IDU2IDAgMSAxIDExMiAwQTU2IDU2IDAgMSAxIDcyIDg4ek02NCAyNDUuN0M1NCAyNTYuOSA0OCAyNzEuOCA0OCAyODhzNiAzMS4xIDE2IDQyLjNsMC04NC43em0xNDQuNC00OS4zQzE3OC43IDIyMi43IDE2MCAyNjEuMiAxNjAgMzA0YzAgMzQuMyAxMiA2NS44IDMyIDkwLjVsMCAyMS41YzAgMTcuNy0xNC4zIDMyLTMyIDMybC02NCAwYy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTI2LjhDMjYuMiAzNzEuMiAwIDMzMi43IDAgMjg4YzAtNjEuOSA1MC4xLTExMiAxMTItMTEybDMyIDBjMjQgMCA0Ni4yIDcuNSA2NC40IDIwLjN6TTQ0OCA0MTZsMC0yMS41YzIwLTI0LjcgMzItNTYuMiAzMi05MC41YzAtNDIuOC0xOC43LTgxLjMtNDguNC0xMDcuN0M0NDkuOCAxODMuNSA0NzIgMTc2IDQ5NiAxNzZsMzIgMGM2MS45IDAgMTEyIDUwLjEgMTEyIDExMmMwIDQ0LjctMjYuMiA4My4yLTY0IDEwMS4ybDAgMjYuOGMwIDE3LjctMTQuMyAzMi0zMiAzMmwtNjQgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6bTgtMzI4YTU2IDU2IDAgMSAxIDExMiAwQTU2IDU2IDAgMSAxIDQ1NiA4OHpNNTc2IDI0NS43bDAgODQuN2MxMC0xMS4zIDE2LTI2LjEgMTYtNDIuM3MtNi0zMS4xLTE2LTQyLjN6TTMyMCAzMmE2NCA2NCAwIDEgMSAwIDEyOCA2NCA2NCAwIDEgMSAwLTEyOHpNMjQwIDMwNGMwIDE2LjIgNiAzMSAxNiA0Mi4zbDAtODQuN2MtMTAgMTEuMy0xNiAyNi4xLTE2IDQyLjN6bTE0NC00Mi4zbDAgODQuN2MxMC0xMS4zIDE2LTI2LjEgMTYtNDIuM3MtNi0zMS4xLTE2LTQyLjN6TTQ0OCAzMDRjMCA0NC43LTI2LjIgODMuMi02NCAxMDEuMmwwIDQyLjhjMCAxNy43LTE0LjMgMzItMzIgMzJsLTY0IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtNDIuOGMtMzcuOC0xOC02NC01Ni41LTY0LTEwMS4yYzAtNjEuOSA1MC4xLTExMiAxMTItMTEybDMyIDBjNjEuOSAwIDExMiA1MC4xIDExMiAxMTJ6XCJdXG59O1xuY29uc3QgZmFIb3VyZ2xhc3NFbmQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaG91cmdsYXNzLWVuZCcsXG4gIGljb246IFszODQsIDUxMiwgWzg5ODcsIFwiaG91cmdsYXNzLTNcIl0sIFwiZjI1M1wiLCBcIk0zMiAwQzE0LjMgMCAwIDE0LjMgMCAzMlMxNC4zIDY0IDMyIDY0bDAgMTFjMCA0Mi40IDE2LjkgODMuMSA0Ni45IDExMy4xTDE0Ni43IDI1NiA3OC45IDMyMy45QzQ4LjkgMzUzLjkgMzIgMzk0LjYgMzIgNDM3bDAgMTFjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsMzIgMCAyNTYgMCAzMiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybDAtMTFjMC00Mi40LTE2LjktODMuMS00Ni45LTExMy4xTDIzNy4zIDI1Nmw2Ny45LTY3LjljMzAtMzAgNDYuOS03MC43IDQ2LjktMTEzLjFsMC0xMWMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkwzMjAgMCA2NCAwIDMyIDB6TTk2IDc1bDAtMTEgMTkyIDAgMCAxMWMwIDI1LjUtMTAuMSA0OS45LTI4LjEgNjcuOUwxOTIgMjEwLjdsLTY3LjktNjcuOUMxMDYuMSAxMjQuOSA5NiAxMDAuNCA5NiA3NXpcIl1cbn07XG5jb25zdCBmYUhvdXJnbGFzczMgPSBmYUhvdXJnbGFzc0VuZDtcbmNvbnN0IGZhSGVhcnRDcmFjayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoZWFydC1jcmFjaycsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyODE0OCwgXCJoZWFydC1icm9rZW5cIl0sIFwiZjdhOVwiLCBcIk0xMTkuNCA0NC4xYzIzLjMtMy45IDQ2LjgtMS45IDY4LjYgNS4zbDQ5LjggNzcuNS03NS40IDc1LjRjLTEuNSAxLjUtMi40IDMuNi0yLjMgNS44czEgNC4yIDIuNiA1LjdsMTEyIDEwNGMyLjkgMi43IDcuNCAyLjkgMTAuNSAuM3MzLjgtNyAxLjctMTAuNGwtNjAuNC05OC4xIDkwLjctNzUuNmMyLjYtMi4xIDMuNS01LjcgMi40LTguOEwyOTYuOCA2MS44YzI4LjUtMTYuNyA2Mi40LTIzLjIgOTUuNy0xNy42QzQ2MS41IDU1LjYgNTEyIDExNS4yIDUxMiAxODUuMWwwIDUuOGMwIDQxLjUtMTcuMiA4MS4yLTQ3LjYgMTA5LjVMMjgzLjcgNDY5LjFjLTcuNSA3LTE3LjQgMTAuOS0yNy43IDEwLjlzLTIwLjItMy45LTI3LjctMTAuOUw0Ny42IDMwMC40QzE3LjIgMjcyLjEgMCAyMzIuNCAwIDE5MC45bDAtNS44YzAtNjkuOSA1MC41LTEyOS41IDExOS40LTE0MXpcIl1cbn07XG5jb25zdCBmYUhlYXJ0QnJva2VuID0gZmFIZWFydENyYWNrO1xuY29uc3QgZmFTcXVhcmVVcFJpZ2h0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NxdWFyZS11cC1yaWdodCcsXG4gIGljb246IFs0NDgsIDUxMiwgWzg1OTksIFwiZXh0ZXJuYWwtbGluay1zcXVhcmUtYWx0XCJdLCBcImYzNjBcIiwgXCJNMzg0IDMyYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMzIwYzAgMzUuMy0yOC43IDY0LTY0IDY0TDY0IDQ4MGMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCA5NkMwIDYwLjcgMjguNyAzMiA2NCAzMmwzMjAgMHpNMTYwIDE2MGMtNi41IDAtMTIuMyAzLjktMTQuOCA5LjlzLTEuMSAxMi45IDMuNSAxNy40bDQwIDQwLTcxIDcxQzExNCAzMDIgMTEyIDMwNi45IDExMiAzMTJzMiAxMCA1LjcgMTMuN2wzNi43IDM2LjdjMy42IDMuNiA4LjUgNS43IDEzLjcgNS43czEwLTIgMTMuNy01LjdsNzEtNzEgNDAgNDBjNC42IDQuNiAxMS41IDUuOSAxNy40IDMuNXM5LjktOC4zIDkuOS0xNC44bDAtMTQ0YzAtOC44LTcuMi0xNi0xNi0xNmwtMTQ0IDB6XCJdXG59O1xuY29uc3QgZmFFeHRlcm5hbExpbmtTcXVhcmVBbHQgPSBmYVNxdWFyZVVwUmlnaHQ7XG5jb25zdCBmYUZhY2VLaXNzQmVhbSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmYWNlLWtpc3MtYmVhbScsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyODUzNywgXCJraXNzLWJlYW1cIl0sIFwiZjU5N1wiLCBcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnptNDguNy0xOTguM2M0LjMgNS4xIDcuMyAxMS40IDcuMyAxOC4zcy0zLjEgMTMuMi03LjMgMTguM2MtNC4zIDUuMi0xMC4xIDkuNy0xNi43IDEzLjRjLTIuNyAxLjUtNS43IDMtOC43IDQuM2MzLjEgMS4zIDYgMi43IDguNyA0LjNjNi42IDMuNyAxMi41IDguMiAxNi43IDEzLjRjNC4zIDUuMSA3LjMgMTEuNCA3LjMgMTguM3MtMy4xIDEzLjItNy4zIDE4LjNjLTQuMyA1LjItMTAuMSA5LjctMTYuNyAxMy40QzI3NC43IDQ0My4xIDI1Ny40IDQ0OCAyNDAgNDQ4Yy0zLjYgMC02LjgtMi41LTcuNy02cy42LTcuMiAzLjgtOWMwIDAgMCAwIDAgMHMwIDAgMCAwczAgMCAwIDBjMCAwIDAgMCAwIDBsLjItLjFjLjItLjEgLjUtLjMgLjktLjVjLjgtLjUgMi0xLjIgMy40LTIuMWMyLjgtMS45IDYuNS00LjUgMTAuMi03LjZjMy43LTMuMSA3LjItNi42IDkuNi0xMC4xYzIuNS0zLjUgMy41LTYuNCAzLjUtOC42cy0xLTUtMy41LTguNmMtMi41LTMuNS01LjktNi45LTkuNi0xMC4xYy0zLjctMy4xLTcuNC01LjctMTAuMi03LjZjLTEuNC0uOS0yLjYtMS42LTMuNC0yLjFjLS40LS4yLS43LS40LS45LS41bC0uMi0uMWMwIDAgMCAwIDAgMGMwIDAgMCAwIDAgMHMwIDAgMCAwYy0yLjUtMS40LTQuMS00LjEtNC4xLTdzMS42LTUuNiA0LjEtN2MwIDAgMCAwIDAgMHMwIDAgMCAwczAgMCAwIDBzMCAwIDAgMGMwIDAgMCAwIDAgMGwuMi0uMSAuMy0uMiAuNi0uNGMuOC0uNSAyLTEuMiAzLjQtMi4xYzIuOC0xLjkgNi41LTQuNSAxMC4yLTcuNmMzLjctMy4xIDcuMi02LjYgOS42LTEwLjFjMi41LTMuNSAzLjUtNi40IDMuNS04LjZzLTEtNS0zLjUtOC42Yy0yLjUtMy41LTUuOS02LjktOS42LTEwLjFjLTMuNy0zLjEtNy40LTUuNy0xMC4yLTcuNmMtMS40LS45LTIuNi0xLjYtMy40LTIuMWwtLjQtLjMtLjUtLjMtLjItLjFjMCAwIDAgMCAwIDBjMCAwIDAgMCAwIDBzMCAwIDAgMGMtMy4yLTEuOC00LjctNS41LTMuOC05czQuMS02IDcuNy02YzE3LjQgMCAzNC43IDQuOSA0Ny45IDEyLjNjNi42IDMuNyAxMi41IDguMiAxNi43IDEzLjR6bS04Ny4xLTg0LjlzMCAwIDAgMGMwIDAgMCAwIDAgMGwtLjItLjJjLS4yLS4yLS40LS41LS43LS45Yy0uNi0uOC0xLjYtMi0yLjgtMy40Yy0yLjUtMi44LTYtNi42LTEwLjItMTAuM2MtOC44LTcuOC0xOC44LTE0LTI3LjctMTRzLTE4LjkgNi4yLTI3LjcgMTRjLTQuMiAzLjctNy43IDcuNS0xMC4yIDEwLjNjLTEuMiAxLjQtMi4yIDIuNi0yLjggMy40Yy0uMyAuNC0uNiAuNy0uNyAuOWwtLjIgLjJjMCAwIDAgMCAwIDBjMCAwIDAgMCAwIDBzMCAwIDAgMGMtMi4xIDIuOC01LjcgMy45LTguOSAyLjhzLTUuNS00LjEtNS41LTcuNmMwLTE3LjkgNi43LTM1LjYgMTYuNi00OC44YzkuOC0xMyAyMy45LTIzLjIgMzkuNC0yMy4yczI5LjYgMTAuMiAzOS40IDIzLjJjOS45IDEzLjIgMTYuNiAzMC45IDE2LjYgNDguOGMwIDMuNC0yLjIgNi41LTUuNSA3LjZzLTYuOSAwLTguOS0yLjhjMCAwIDAgMCAwIDBzMCAwIDAgMHptMTYwIDBjMCAwIDAgMCAwIDBsLS4yLS4yYy0uMi0uMi0uNC0uNS0uNy0uOWMtLjYtLjgtMS42LTItMi44LTMuNGMtMi41LTIuOC02LTYuNi0xMC4yLTEwLjNjLTguOC03LjgtMTguOC0xNC0yNy43LTE0cy0xOC45IDYuMi0yNy43IDE0Yy00LjIgMy43LTcuNyA3LjUtMTAuMiAxMC4zYy0xLjIgMS40LTIuMiAyLjYtMi44IDMuNGMtLjMgLjQtLjYgLjctLjcgLjlsLS4yIC4yYzAgMCAwIDAgMCAwYzAgMCAwIDAgMCAwczAgMCAwIDBjLTIuMSAyLjgtNS43IDMuOS04LjkgMi44cy01LjUtNC4xLTUuNS03LjZjMC0xNy45IDYuNy0zNS42IDE2LjYtNDguOGM5LjgtMTMgMjMuOS0yMy4yIDM5LjQtMjMuMnMyOS42IDEwLjIgMzkuNCAyMy4yYzkuOSAxMy4yIDE2LjYgMzAuOSAxNi42IDQ4LjhjMCAzLjQtMi4yIDYuNS01LjUgNy42cy02LjkgMC04LjktMi44YzAgMCAwIDAgMCAwczAgMCAwIDBzMCAwIDAgMHpcIl1cbn07XG5jb25zdCBmYUtpc3NCZWFtID0gZmFGYWNlS2lzc0JlYW07XG5jb25zdCBmYUZpbG0gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmlsbScsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyNzkwMl0sIFwiZjAwOFwiLCBcIk0wIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMybDM4NCAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMzIwYzAgMzUuMy0yOC43IDY0LTY0IDY0TDY0IDQ4MGMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCA5NnpNNDggMzY4bDAgMzJjMCA4LjggNy4yIDE2IDE2IDE2bDMyIDBjOC44IDAgMTYtNy4yIDE2LTE2bDAtMzJjMC04LjgtNy4yLTE2LTE2LTE2bC0zMiAwYy04LjggMC0xNiA3LjItMTYgMTZ6bTM2OC0xNmMtOC44IDAtMTYgNy4yLTE2IDE2bDAgMzJjMCA4LjggNy4yIDE2IDE2IDE2bDMyIDBjOC44IDAgMTYtNy4yIDE2LTE2bDAtMzJjMC04LjgtNy4yLTE2LTE2LTE2bC0zMiAwek00OCAyNDBsMCAzMmMwIDguOCA3LjIgMTYgMTYgMTZsMzIgMGM4LjggMCAxNi03LjIgMTYtMTZsMC0zMmMwLTguOC03LjItMTYtMTYtMTZsLTMyIDBjLTguOCAwLTE2IDcuMi0xNiAxNnptMzY4LTE2Yy04LjggMC0xNiA3LjItMTYgMTZsMCAzMmMwIDguOCA3LjIgMTYgMTYgMTZsMzIgMGM4LjggMCAxNi03LjIgMTYtMTZsMC0zMmMwLTguOC03LjItMTYtMTYtMTZsLTMyIDB6TTQ4IDExMmwwIDMyYzAgOC44IDcuMiAxNiAxNiAxNmwzMiAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTMyYzAtOC44LTcuMi0xNi0xNi0xNkw2NCA5NmMtOC44IDAtMTYgNy4yLTE2IDE2ek00MTYgOTZjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDMyYzAgOC44IDcuMiAxNiAxNiAxNmwzMiAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTMyYzAtOC44LTcuMi0xNi0xNi0xNmwtMzIgMHpNMTYwIDEyOGwwIDY0YzAgMTcuNyAxNC4zIDMyIDMyIDMybDEyOCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMybDAtNjRjMC0xNy43LTE0LjMtMzItMzItMzJMMTkyIDk2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnptMzIgMTYwYy0xNy43IDAtMzIgMTQuMy0zMiAzMmwwIDY0YzAgMTcuNyAxNC4zIDMyIDMyIDMybDEyOCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMybDAtNjRjMC0xNy43LTE0LjMtMzItMzItMzJsLTEyOCAwelwiXVxufTtcbmNvbnN0IGZhUnVsZXJIb3Jpem9udGFsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3J1bGVyLWhvcml6b250YWwnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY1NDdcIiwgXCJNMCAzMzZjMCAyNi41IDIxLjUgNDggNDggNDhsNTQ0IDBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhsMC0xNjBjMC0yNi41LTIxLjUtNDgtNDgtNDhsLTY0IDAgMCA4MGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNmwwLTgwLTY0IDAgMCA4MGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNmwwLTgwLTY0IDAgMCA4MGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNmwwLTgwLTY0IDAgMCA4MGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNmwwLTgwLTY0IDAgMCA4MGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNmwwLTgwLTY0IDBjLTI2LjUgMC00OCAyMS41LTQ4IDQ4TDAgMzM2elwiXVxufTtcbmNvbnN0IGZhUGVvcGxlUm9iYmVyeSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwZW9wbGUtcm9iYmVyeScsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZTUzNlwiLCBcIk00ODguMiA1OS4xQzQ3OC4xIDk5LjYgNDQxLjcgMTI4IDQwMCAxMjhzLTc4LjEtMjguNC04OC4yLTY4LjlMMzAzIDI0LjJDMjk4LjggNy4xIDI4MS40LTMuMyAyNjQuMiAxUzIzNi43IDIyLjYgMjQxIDM5LjhsOC43IDM0LjljMTEgNDQgNDAuMiA3OS42IDc4LjMgOTkuNkwzMjggNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0xMjggMTYgMCAwIDEyOGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMzA1LjdjMzguMS0yMCA2Ny4zLTU1LjYgNzguMy05OS42TDU1OSAzOS44YzQuMy0xNy4xLTYuMS0zNC41LTIzLjMtMzguOFM1MDEuMiA3LjEgNDk3IDI0LjJsLTguNyAzNC45ek00MDAgOTZhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2ek04MCA5NkE0OCA0OCAwIDEgMCA4MCAwYTQ4IDQ4IDAgMSAwIDAgOTZ6bS04IDMyYy0zNS4zIDAtNjQgMjguNy02NCA2NGwwIDk2IDAgLjZMOCA0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTEyOCAxNiAwIDAgMTI4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0yMjcuMyAxMyAyMC41YzUuOSA5LjIgMTYuMSAxNC45IDI3IDE0LjlsNDggMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtMzAuNCAwLTM3LjQtNTguOUMxNTcuNiAxNDIgMTMyLjEgMTI4IDEwNC43IDEyOEw3MiAxMjh6XCJdXG59O1xuY29uc3QgZmFMaWdodGJ1bGIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbGlnaHRidWxiJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbMTI4MTYxXSwgXCJmMGViXCIsIFwiTTI3MiAzODRjOS42LTMxLjkgMjkuNS01OS4xIDQ5LjItODYuMmMwIDAgMCAwIDAgMGM1LjItNy4xIDEwLjQtMTQuMiAxNS40LTIxLjRjMTkuOC0yOC41IDMxLjQtNjMgMzEuNC0xMDAuM0MzNjggNzguOCAyODkuMiAwIDE5MiAwUzE2IDc4LjggMTYgMTc2YzAgMzcuMyAxMS42IDcxLjkgMzEuNCAxMDAuM2M1IDcuMiAxMC4yIDE0LjMgMTUuNCAyMS40YzAgMCAwIDAgMCAwYzE5LjggMjcuMSAzOS43IDU0LjQgNDkuMiA4Ni4ybDE2MCAwek0xOTIgNTEyYzQ0LjIgMCA4MC0zNS44IDgwLTgwbDAtMTYtMTYwIDAgMCAxNmMwIDQ0LjIgMzUuOCA4MCA4MCA4MHpNMTEyIDE3NmMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNmMwLTYxLjkgNTAuMS0xMTIgMTEyLTExMmM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNmMtNDQuMiAwLTgwIDM1LjgtODAgODB6XCJdXG59O1xuY29uc3QgZmFDYXJldExlZnQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2FyZXQtbGVmdCcsXG4gIGljb246IFsyNTYsIDUxMiwgW10sIFwiZjBkOVwiLCBcIk05LjQgMjc4LjZjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zbDEyOC0xMjhjOS4yLTkuMiAyMi45LTExLjkgMzQuOS02LjlzMTkuOCAxNi42IDE5LjggMjkuNmwwIDI1NmMwIDEyLjktNy44IDI0LjYtMTkuOCAyOS42cy0yNS43IDIuMi0zNC45LTYuOWwtMTI4LTEyOHpcIl1cbn07XG5jb25zdCBmYUNpcmNsZUV4Y2xhbWF0aW9uID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NpcmNsZS1leGNsYW1hdGlvbicsXG4gIGljb246IFs1MTIsIDUxMiwgW1wiZXhjbGFtYXRpb24tY2lyY2xlXCJdLCBcImYwNmFcIiwgXCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6bTAtMzg0YzEzLjMgMCAyNCAxMC43IDI0IDI0bDAgMTEyYzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0bDAtMTEyYzAtMTMuMyAxMC43LTI0IDI0LTI0ek0yMjQgMzUyYTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6XCJdXG59O1xuY29uc3QgZmFFeGNsYW1hdGlvbkNpcmNsZSA9IGZhQ2lyY2xlRXhjbGFtYXRpb247XG5jb25zdCBmYVNjaG9vbENpcmNsZVhtYXJrID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NjaG9vbC1jaXJjbGUteG1hcmsnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU1NmRcIiwgXCJNMzM3LjggNS40QzMyNy0xLjggMzEzLTEuOCAzMDIuMiA1LjRMMTY2LjMgOTYgNDggOTZDMjEuNSA5NiAwIDExNy41IDAgMTQ0TDAgNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4bDI3MiAwczAgMCAwIDBsLTY0IDAgMC05NmMwLTM1LjMgMjguNy02NCA2NC02NGwuMyAwIC41IDBjMy40LTM3LjcgMTguNy03Mi4xIDQyLjItOTkuMUMzNTAuMiAyNjAgMzM1LjYgMjY0IDMyMCAyNjRjLTQ4LjYgMC04OC0zOS40LTg4LTg4czM5LjQtODggODgtODhzODggMzkuNCA4OCA4OGMwIDE4LjMtNS42IDM1LjMtMTUuMSA0OS40YzI5LTIxIDY0LjYtMzMuNCAxMDMuMS0zMy40YzU5LjUgMCAxMTIuMSAyOS42IDE0NCA3NC44TDY0MCAxNDRjMC0yNi41LTIxLjUtNDgtNDgtNDhMNDczLjcgOTYgMzM3LjggNS40ek05NiAxOTJsMzIgMGM4LjggMCAxNiA3LjIgMTYgMTZsMCA2NGMwIDguOC03LjIgMTYtMTYgMTZsLTMyIDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTY0YzAtOC44IDcuMi0xNiAxNi0xNnptMCAxMjhsMzIgMGM4LjggMCAxNiA3LjIgMTYgMTZsMCA2NGMwIDguOC03LjIgMTYtMTYgMTZsLTMyIDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTY0YzAtOC44IDcuMi0xNiAxNi0xNnpNMzIwIDEyOGMtOC44IDAtMTYgNy4yLTE2IDE2bDAgMzJjMCA4LjggNy4yIDE2IDE2IDE2bDMyIDBjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZsLTE2IDAgMC0xNmMwLTguOC03LjItMTYtMTYtMTZ6TTQ5NiA1MTJhMTQ0IDE0NCAwIDEgMCAwLTI4OCAxNDQgMTQ0IDAgMSAwIDAgMjg4em0yMi42LTE0NGwzNi43IDM2LjdjNi4yIDYuMiA2LjIgMTYuNCAwIDIyLjZzLTE2LjQgNi4yLTIyLjYgMEw0OTYgMzkwLjZsLTM2LjcgMzYuN2MtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBzLTYuMi0xNi40IDAtMjIuNkw0NzMuNCAzNjhsLTM2LjctMzYuN2MtNi4yLTYuMi02LjItMTYuNCAwLTIyLjZzMTYuNC02LjIgMjIuNiAwTDQ5NiAzNDUuNGwzNi43LTM2LjdjNi4yLTYuMiAxNi40LTYuMiAyMi42IDBzNi4yIDE2LjQgMCAyMi42TDUxOC42IDM2OHpcIl1cbn07XG5jb25zdCBmYUFycm93UmlnaHRGcm9tQnJhY2tldCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhcnJvdy1yaWdodC1mcm9tLWJyYWNrZXQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtcInNpZ24tb3V0XCJdLCBcImYwOGJcIiwgXCJNNTAyLjYgMjc4LjZjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNsLTEyOC0xMjhjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zTDQwMi43IDIyNCAxOTIgMjI0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDIxMC43IDAtNzMuNCA3My40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwbDEyOC0xMjh6TTE2MCA5NmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkw5NiAzMkM0MyAzMiAwIDc1IDAgMTI4TDAgMzg0YzAgNTMgNDMgOTYgOTYgOTZsNjQgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtNjQgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC0yNTZjMC0xNy43IDE0LjMtMzIgMzItMzJsNjQgMHpcIl1cbn07XG5jb25zdCBmYVNpZ25PdXQgPSBmYUFycm93UmlnaHRGcm9tQnJhY2tldDtcbmNvbnN0IGZhQ2lyY2xlQ2hldnJvbkRvd24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2lyY2xlLWNoZXZyb24tZG93bicsXG4gIGljb246IFs1MTIsIDUxMiwgW1wiY2hldnJvbi1jaXJjbGUtZG93blwiXSwgXCJmMTNhXCIsIFwiTTI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMHpNMTM1IDI0MWMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwbDg3IDg3IDg3LTg3YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOUwyNzMgMzQ1Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMEwxMzUgMjQxelwiXVxufTtcbmNvbnN0IGZhQ2hldnJvbkNpcmNsZURvd24gPSBmYUNpcmNsZUNoZXZyb25Eb3duO1xuY29uc3QgZmFVbmxvY2tLZXlob2xlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3VubG9jay1rZXlob2xlJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXCJ1bmxvY2stYWx0XCJdLCBcImYxM2VcIiwgXCJNMjI0IDY0Yy00NC4yIDAtODAgMzUuOC04MCA4MGwwIDQ4IDI0MCAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMTkyYzAgMzUuMy0yOC43IDY0LTY0IDY0TDY0IDUxMmMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCAyNTZjMC0zNS4zIDI4LjctNjQgNjQtNjRsMTYgMCAwLTQ4QzgwIDY0LjUgMTQ0LjUgMCAyMjQgMGM1Ny41IDAgMTA3IDMzLjcgMTMwLjEgODIuM2M3LjYgMTYgLjggMzUuMS0xNS4yIDQyLjZzLTM1LjEgLjgtNDIuNi0xNS4yQzI4My40IDgyLjYgMjU1LjkgNjQgMjI0IDY0em0zMiAzMjBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTY0IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsNjQgMHpcIl1cbn07XG5jb25zdCBmYVVubG9ja0FsdCA9IGZhVW5sb2NrS2V5aG9sZTtcbmNvbnN0IGZhQ2xvdWRTaG93ZXJzSGVhdnkgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2xvdWQtc2hvd2Vycy1oZWF2eScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjc0MFwiLCBcIk05NiAzMjBjLTUzIDAtOTYtNDMtOTYtOTZjMC00Mi41IDI3LjYtNzguNiA2NS45LTkxLjJDNjQuNyAxMjYuMSA2NCAxMTkuMSA2NCAxMTJDNjQgNTAuMSAxMTQuMSAwIDE3NiAwYzQzLjEgMCA4MC41IDI0LjMgOTkuMiA2MGMxNC43LTE3LjEgMzYuNS0yOCA2MC44LTI4YzQ0LjIgMCA4MCAzNS44IDgwIDgwYzAgNS41LS42IDEwLjgtMS42IDE2Yy41IDAgMS4xIDAgMS42IDBjNTMgMCA5NiA0MyA5NiA5NnMtNDMgOTYtOTYgOTZMOTYgMzIwek04MS41IDM1My45YzEyLjIgNS4yIDE3LjggMTkuMyAxMi42IDMxLjVsLTQ4IDExMmMtNS4yIDEyLjItMTkuMyAxNy44LTMxLjUgMTIuNlMtMy4zIDQ5MC43IDEuOSA0NzguNWw0OC0xMTJjNS4yLTEyLjIgMTkuMy0xNy44IDMxLjUtMTIuNnptMTIwIDBjMTIuMiA1LjIgMTcuOCAxOS4zIDEyLjYgMzEuNWwtNDggMTEyYy01LjIgMTIuMi0xOS4zIDE3LjgtMzEuNSAxMi42cy0xNy44LTE5LjMtMTIuNi0zMS41bDQ4LTExMmM1LjItMTIuMiAxOS4zLTE3LjggMzEuNS0xMi42em0yNDQuNiAzMS41bC00OCAxMTJjLTUuMiAxMi4yLTE5LjMgMTcuOC0zMS41IDEyLjZzLTE3LjgtMTkuMy0xMi42LTMxLjVsNDgtMTEyYzUuMi0xMi4yIDE5LjMtMTcuOCAzMS41LTEyLjZzMTcuOCAxOS4zIDEyLjYgMzEuNXpNMzEzLjUgMzUzLjljMTIuMiA1LjIgMTcuOCAxOS4zIDEyLjYgMzEuNWwtNDggMTEyYy01LjIgMTIuMi0xOS4zIDE3LjgtMzEuNSAxMi42cy0xNy44LTE5LjMtMTIuNi0zMS41bDQ4LTExMmM1LjItMTIuMiAxOS4zLTE3LjggMzEuNS0xMi42elwiXVxufTtcbmNvbnN0IGZhSGVhZHBob25lc1NpbXBsZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoZWFkcGhvbmVzLXNpbXBsZScsXG4gIGljb246IFs1MTIsIDUxMiwgW1wiaGVhZHBob25lcy1hbHRcIl0sIFwiZjU4ZlwiLCBcIk0yNTYgODBDMTQxLjEgODAgNDggMTczLjEgNDggMjg4bDAgMTA0YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0TDAgMjg4QzAgMTQ2LjYgMTE0LjYgMzIgMjU2IDMyczI1NiAxMTQuNiAyNTYgMjU2bDAgMTA0YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0bDAtMTA0YzAtMTE0LjktOTMuMS0yMDgtMjA4LTIwOHpNODAgMzUyYzAtMzUuMyAyOC43LTY0IDY0LTY0bDE2IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCAxMjhjMCAxNy43LTE0LjMgMzItMzIgMzJsLTE2IDBjLTM1LjMgMC02NC0yOC43LTY0LTY0bDAtNjR6bTI4OC02NGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDY0YzAgMzUuMy0yOC43IDY0LTY0IDY0bC0xNiAwYy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTEyOGMwLTE3LjcgMTQuMy0zMiAzMi0zMmwxNiAwelwiXVxufTtcbmNvbnN0IGZhSGVhZHBob25lc0FsdCA9IGZhSGVhZHBob25lc1NpbXBsZTtcbmNvbnN0IGZhU2l0ZW1hcCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzaXRlbWFwJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmMGU4XCIsIFwiTTIwOCA4MGMwLTI2LjUgMjEuNS00OCA0OC00OGw2NCAwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4bDAgNjRjMCAyNi41LTIxLjUgNDgtNDggNDhsLTggMCAwIDQwIDE1MiAwYzMwLjkgMCA1NiAyNS4xIDU2IDU2bDAgMzIgOCAwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4bDAgNjRjMCAyNi41LTIxLjUgNDgtNDggNDhsLTY0IDBjLTI2LjUgMC00OC0yMS41LTQ4LTQ4bDAtNjRjMC0yNi41IDIxLjUtNDggNDgtNDhsOCAwIDAtMzJjMC00LjQtMy42LTgtOC04bC0xNTIgMCAwIDQwIDggMGMyNi41IDAgNDggMjEuNSA0OCA0OGwwIDY0YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4bC02NCAwYy0yNi41IDAtNDgtMjEuNS00OC00OGwwLTY0YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4bDggMCAwLTQwLTE1MiAwYy00LjQgMC04IDMuNi04IDhsMCAzMiA4IDBjMjYuNSAwIDQ4IDIxLjUgNDggNDhsMCA2NGMwIDI2LjUtMjEuNSA0OC00OCA0OGwtNjQgMGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhsMC02NGMwLTI2LjUgMjEuNS00OCA0OC00OGw4IDAgMC0zMmMwLTMwLjkgMjUuMS01NiA1Ni01NmwxNTIgMCAwLTQwLTggMGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhsMC02NHpcIl1cbn07XG5jb25zdCBmYUNpcmNsZURvbGxhclRvU2xvdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaXJjbGUtZG9sbGFyLXRvLXNsb3QnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtcImRvbmF0ZVwiXSwgXCJmNGI5XCIsIFwiTTMyNi43IDQwMy43Yy0yMi4xIDgtNDUuOSAxMi4zLTcwLjcgMTIuM3MtNDguNy00LjQtNzAuNy0xMi4zbC0uOC0uM2MtMzAtMTEtNTYuOC0yOC43LTc4LjYtNTEuNEM3MCAzMTQuNiA0OCAyNjMuOSA0OCAyMDhDNDggOTMuMSAxNDEuMSAwIDI1NiAwUzQ2NCA5My4xIDQ2NCAyMDhjMCA1NS45LTIyIDEwNi42LTU3LjkgMTQ0Yy0xIDEtMiAyLjEtMyAzLjFjLTIxLjQgMjEuNC00Ny40IDM4LjEtNzYuMyA0OC42ek0yNTYgOTEuOWMtMTEuMSAwLTIwLjEgOS0yMC4xIDIwLjFsMCA2Yy01LjYgMS4yLTEwLjkgMi45LTE1LjkgNS4xYy0xNSA2LjgtMjcuOSAxOS40LTMxLjEgMzcuN2MtMS44IDEwLjItLjggMjAgMy40IDI5YzQuMiA4LjggMTAuNyAxNSAxNy4zIDE5LjVjMTEuNiA3LjkgMjYuOSAxMi41IDM4LjYgMTZsMi4yIC43YzEzLjkgNC4yIDIzLjQgNy40IDI5LjMgMTEuN2MyLjUgMS44IDMuNCAzLjIgMy43IDRjLjMgLjggLjkgMi42IC4yIDYuN2MtLjYgMy41LTIuNSA2LjQtOCA4LjhjLTYuMSAyLjYtMTYgMy45LTI4LjggMS45Yy02LTEtMTYuNy00LjYtMjYuMi03LjljMCAwIDAgMCAwIDBzMCAwIDAgMHMwIDAgMCAwYy0yLjItLjctNC4zLTEuNS02LjQtMi4xYy0xMC41LTMuNS0yMS44IDIuMi0yNS4zIDEyLjdzMi4yIDIxLjggMTIuNyAyNS4zYzEuMiAuNCAyLjcgLjkgNC40IDEuNWM3LjkgMi43IDIwLjMgNi45IDI5LjggOS4xbDAgNi40YzAgMTEuMSA5IDIwLjEgMjAuMSAyMC4xczIwLjEtOSAyMC4xLTIwLjFsMC01LjVjNS4zLTEgMTAuNS0yLjUgMTUuNC00LjZjMTUuNy02LjcgMjguNC0xOS43IDMxLjYtMzguN2MxLjgtMTAuNCAxLTIwLjMtMy0yOS40Yy0zLjktOS0xMC4yLTE1LjYtMTYuOS0yMC41Yy0xMi4yLTguOC0yOC4zLTEzLjctNDAuNC0xNy40bC0uOC0uMmMtMTQuMi00LjMtMjMuOC03LjMtMjkuOS0xMS40Yy0yLjYtMS44LTMuNC0zLTMuNi0zLjVjLS4yLS4zLS43LTEuNi0uMS01Yy4zLTEuOSAxLjktNS4yIDguMi04LjFjNi40LTIuOSAxNi40LTQuNSAyOC42LTIuNmM0LjMgLjcgMTcuOSAzLjMgMjEuNyA0LjNjMTAuNyAyLjggMjEuNi0zLjUgMjQuNS0xNC4ycy0zLjUtMjEuNi0xNC4yLTI0LjVjLTQuNC0xLjItMTQuNC0zLjItMjEtNC40bDAtNi4zYzAtMTEuMS05LTIwLjEtMjAuMS0yMC4xek00OCAzNTJsMTYgMGMxOS41IDI1LjkgNDQgNDcuNyA3Mi4yIDY0TDY0IDQxNmwwIDMyIDE5MiAwIDE5MiAwIDAtMzItNzIuMiAwYzI4LjItMTYuMyA1Mi44LTM4LjEgNzIuMi02NGwxNiAwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4bDAgNjRjMCAyNi41LTIxLjUgNDgtNDggNDhMNDggNTEyYy0yNi41IDAtNDgtMjEuNS00OC00OGwwLTY0YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4elwiXVxufTtcbmNvbnN0IGZhRG9uYXRlID0gZmFDaXJjbGVEb2xsYXJUb1Nsb3Q7XG5jb25zdCBmYU1lbW9yeSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtZW1vcnknLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImY1MzhcIiwgXCJNNjQgNjRDMjguNyA2NCAwIDkyLjcgMCAxMjhsMCA3LjRjMCA2LjggNC40IDEyLjYgMTAuMSAxNi4zQzIzLjMgMTYwLjMgMzIgMTc1LjEgMzIgMTkycy04LjcgMzEuNy0yMS45IDQwLjNDNC40IDIzNiAwIDI0MS44IDAgMjQ4LjZMMCAzMjBsNTc2IDAgMC03MS40YzAtNi44LTQuNC0xMi42LTEwLjEtMTYuM0M1NTIuNyAyMjMuNyA1NDQgMjA4LjkgNTQ0IDE5MnM4LjctMzEuNyAyMS45LTQwLjNjNS43LTMuNyAxMC4xLTkuNSAxMC4xLTE2LjNsMC03LjRjMC0zNS4zLTI4LjctNjQtNjQtNjRMNjQgNjR6TTU3NiAzNTJMMCAzNTJsMCA2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMmw0OCAwIDAtMzJjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNmwwIDMyIDk2IDAgMC0zMmMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2bDAgMzIgOTYgMCAwLTMyYzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZsMCAzMiA5NiAwIDAtMzJjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNmwwIDMyIDQ4IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJsMC02NHpNMTkyIDE2MGwwIDY0YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtNjRjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnptMTI4IDBsMCA2NGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJ6bTEyOCAwbDAgNjRjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC02NGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyelwiXVxufTtcbmNvbnN0IGZhUm9hZFNwaWtlcyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdyb2FkLXNwaWtlcycsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTU2OFwiLCBcIk02NCAxMTYuOGMwLTE1LjggMjAuNS0yMiAyOS4zLTguOUwxOTIgMjU2bDAtMTM5LjJjMC0xNS44IDIwLjUtMjIgMjkuMy04LjlMMzIwIDI1NmwwLTEzOS4yYzAtMTUuOCAyMC41LTIyIDI5LjMtOC45TDQ0OCAyNTZsMC0xMzkuMmMwLTE1LjggMjAuNS0yMiAyOS4zLTguOUw2MDYuOCAzMDIuMmMxNC4yIDIxLjMtMS4xIDQ5LjctMjYuNiA0OS43TDUxMiAzNTJsLTY0IDAtNjQgMC02NCAwLTY0IDAtNjQgMEw2NCAzNTJsMC0yMzUuMnpNMzIgMzg0bDU3NiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyTDMyIDQ0OGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnpcIl1cbn07XG5jb25zdCBmYUZpcmVCdXJuZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmlyZS1idXJuZXInLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU0ZjFcIiwgXCJNMzQ1LjcgNDguM0wzNTggMzQuNWM1LjQtNi4xIDEzLjMtOC44IDIwLjktOC45YzcuMiAwIDE0LjMgMi42IDE5LjkgNy44YzE5LjcgMTguMyAzOS44IDQzLjIgNTUgNzAuNkM0NjkgMTMxLjIgNDgwIDE2Mi4yIDQ4MCAxOTIuMkM0ODAgMjgwLjggNDA4LjcgMzUyIDMyMCAzNTJjLTg5LjYgMC0xNjAtNzEuMy0xNjAtMTU5LjhjMC0zNy4zIDE2LTczLjQgMzYuOC0xMDQuNWMyMC45LTMxLjMgNDcuNS01OSA3MC45LTgwLjJDMjczLjQgMi4zIDI4MC43LS4yIDI4OCAwYzE0LjEgLjMgMjMuOCAxMS40IDMyLjcgMjEuNmMwIDAgMCAwIDAgMGMyIDIuMyA0IDQuNiA2IDYuN2wxOSAxOS45ek0zODQgMjQwLjJjMC0zNi41LTM3LTczLTU0LjgtODguNGMtNS40LTQuNy0xMy4xLTQuNy0xOC41IDBDMjkzIDE2Ny4xIDI1NiAyMDMuNiAyNTYgMjQwLjJjMCAzNS4zIDI4LjcgNjQgNjQgNjRzNjQtMjguNyA2NC02NHpNMzIgMjg4YzAtMTcuNyAxNC4zLTMyIDMyLTMybDMyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsMCA2NCA0NDggMCAwLTY0Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDMyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCA5NmMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDY0YzAgMTcuNy0xNC4zIDMyLTMyIDMyTDMyIDUxMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC02NGMwLTE3LjcgMTQuMy0zMiAzMi0zMmwwLTk2ek0zMjAgNDgwYTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHptMTYwLTMyYTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6TTE5MiA0ODBhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0elwiXVxufTtcbmNvbnN0IGZhRmxhZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmbGFnJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbMTI3OTg4LCA2MTcyNV0sIFwiZjAyNFwiLCBcIk02NCAzMkM2NCAxNC4zIDQ5LjcgMCAzMiAwUzAgMTQuMyAwIDMyTDAgNjQgMCAzNjggMCA0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTEyOCA2NC4zLTE2LjFjNDEuMS0xMC4zIDg0LjYtNS41IDEyMi41IDEzLjRjNDQuMiAyMi4xIDk1LjUgMjQuOCAxNDEuNyA3LjRsMzQuNy0xM2MxMi41LTQuNyAyMC44LTE2LjYgMjAuOC0zMGwwLTI0Ny43YzAtMjMtMjQuMi0zOC00NC44LTI3LjdsLTkuNiA0LjhjLTQ2LjMgMjMuMi0xMDAuOCAyMy4yLTE0Ny4xIDBjLTM1LjEtMTcuNi03NS40LTIyLTExMy41LTEyLjVMNjQgNDhsMC0xNnpcIl1cbn07XG5jb25zdCBmYUhhbnVraWFoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hhbnVraWFoJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbMTI4MzM0XSwgXCJmNmU2XCIsIFwiTTMxNC4yIDMuM0MzMDkuMSAxMi4xIDI5NiAzNi42IDI5NiA1NmMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0YzAtMTkuNC0xMy4xLTQzLjktMTguMi01Mi43QzMyNC42IDEuMiAzMjIuNCAwIDMyMCAwcy00LjYgMS4yLTUuOCAzLjN6bS0yODggNDhDMjEuMSA2MC4xIDggODQuNiA4IDEwNGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0YzAtMTkuNC0xMy4xLTQzLjktMTguMi01Mi43QzM2LjYgNDkuMiAzNC40IDQ4IDMyIDQ4cy00LjYgMS4yLTUuOCAzLjN6TTg4IDEwNGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0YzAtMTkuNC0xMy4xLTQzLjktMTguMi01Mi43Yy0xLjItMi4xLTMuNC0zLjMtNS44LTMuM3MtNC42IDEuMi01LjggMy4zQzEwMS4xIDYwLjEgODggODQuNiA4OCAxMDR6bTgyLjItNTIuN0MxNjUuMSA2MC4xIDE1MiA4NC42IDE1MiAxMDRjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGMwLTE5LjQtMTMuMS00My45LTE4LjItNTIuN2MtMS4yLTIuMS0zLjQtMy4zLTUuOC0zLjNzLTQuNiAxLjItNS44IDMuM3pNMjE2IDEwNGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0YzAtMTkuNC0xMy4xLTQzLjktMTguMi01Mi43Yy0xLjItMi4xLTMuNC0zLjMtNS44LTMuM3MtNC42IDEuMi01LjggMy4zQzIyOS4xIDYwLjEgMjE2IDg0LjYgMjE2IDEwNHpNMzk0LjIgNTEuM0MzODkuMSA2MC4xIDM3NiA4NC42IDM3NiAxMDRjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGMwLTE5LjQtMTMuMS00My45LTE4LjItNTIuN2MtMS4yLTIuMS0zLjQtMy4zLTUuOC0zLjNzLTQuNiAxLjItNS44IDMuM3pNNDQwIDEwNGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0YzAtMTkuNC0xMy4xLTQzLjktMTguMi01Mi43Yy0xLjItMi4xLTMuNC0zLjMtNS44LTMuM3MtNC42IDEuMi01LjggMy4zQzQ1My4xIDYwLjEgNDQwIDg0LjYgNDQwIDEwNHptODIuMi01Mi43QzUxNy4xIDYwLjEgNTA0IDg0LjYgNTA0IDEwNGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0YzAtMTkuNC0xMy4xLTQzLjktMTguMi01Mi43Yy0xLjItMi4xLTMuNC0zLjMtNS44LTMuM3MtNC42IDEuMi01LjggMy4zek01ODQgMTA0YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRjMC0xOS40LTEzLjEtNDMuOS0xOC4yLTUyLjdjLTEuMi0yLjEtMy40LTMuMy01LjgtMy4zcy00LjYgMS4yLTUuOCAzLjNDNTk3LjEgNjAuMSA1ODQgODQuNiA1ODQgMTA0ek0xMTIgMTYwYy04LjggMC0xNiA3LjItMTYgMTZsMCA5NiAwIDE2IDMyIDAgMC0xNiAwLTk2YzAtOC44LTcuMi0xNi0xNi0xNnptNjQgMGMtOC44IDAtMTYgNy4yLTE2IDE2bDAgOTYgMCAxNiAzMiAwIDAtMTYgMC05NmMwLTguOC03LjItMTYtMTYtMTZ6bTY0IDBjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDk2IDAgMTYgMzIgMCAwLTE2IDAtOTZjMC04LjgtNy4yLTE2LTE2LTE2em0xNjAgMGMtOC44IDAtMTYgNy4yLTE2IDE2bDAgOTYgMCAxNiAzMiAwIDAtMTYgMC05NmMwLTguOC03LjItMTYtMTYtMTZ6bTY0IDBjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDk2IDAgMTYgMzIgMCAwLTE2IDAtOTZjMC04LjgtNy4yLTE2LTE2LTE2em02NCAwYy04LjggMC0xNiA3LjItMTYgMTZsMCA5NiAwIDE2IDMyIDAgMC0xNiAwLTk2YzAtOC44LTcuMi0xNi0xNi0xNnpNMzUyIDE0NGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMmwwIDE3Nkw5NiAzMjBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtOTZjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJsMCA5NmMwIDUzIDQzIDk2IDk2IDk2bDE5MiAwIDAgNjQtMTI4IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsMTYwIDAgMTYwIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTEyOCAwIDAtNjQgMTkyIDBjNTMgMCA5Ni00MyA5Ni05NmwwLTk2YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMybDAgOTZjMCAxNy43LTE0LjMgMzItMzIgMzJsLTE5MiAwIDAtMTc2elwiXVxufTtcbmNvbnN0IGZhRmVhdGhlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmZWF0aGVyJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI5NzE4XSwgXCJmNTJkXCIsIFwiTTI3OC41IDIxNS42TDIzIDQ3MWMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwbDU3LTU3IDY4IDBjNDkuNyAwIDk3LjktMTQuNCAxMzktNDFjMTEuMS03LjIgNS41LTIzLTcuOC0yM2MtNS4xIDAtOS4yLTQuMS05LjItOS4yYzAtNC4xIDIuNy03LjYgNi41LTguOGw4MS0yNC4zYzIuNS0uOCA0LjgtMi4xIDYuNy00bDIyLjQtMjIuNGMxMC4xLTEwLjEgMi45LTI3LjMtMTEuMy0yNy4zbC0zMi4yIDBjLTUuMSAwLTkuMi00LjEtOS4yLTkuMmMwLTQuMSAyLjctNy42IDYuNS04LjhsMTEyLTMzLjZjNC0xLjIgNy40LTMuOSA5LjMtNy43QzUwNi40IDIwNy42IDUxMiAxODQuMSA1MTIgMTYwYzAtNDEtMTYuMy04MC4zLTQ1LjMtMTA5LjNsLTUuNS01LjVDNDMyLjMgMTYuMyAzOTMgMCAzNTIgMHMtODAuMyAxNi4zLTEwOS4zIDQ1LjNMMTM5IDE0OUM5MSAxOTcgNjQgMjYyLjEgNjQgMzMwbDAgNTUuM0wyNTMuNiAxOTUuOGM2LjItNi4yIDE2LjQtNi4yIDIyLjYgMGM1LjQgNS40IDYuMSAxMy42IDIuMiAxOS44elwiXVxufTtcbmNvbnN0IGZhVm9sdW1lTG93ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3ZvbHVtZS1sb3cnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFsxMjgyNjQsIFwidm9sdW1lLWRvd25cIl0sIFwiZjAyN1wiLCBcIk0zMDEuMSAzNC44QzMxMi42IDQwIDMyMCA1MS40IDMyMCA2NGwwIDM4NGMwIDEyLjYtNy40IDI0LTE4LjkgMjkuMnMtMjUgMy4xLTM0LjQtNS4zTDEzMS44IDM1MiA2NCAzNTJjLTM1LjMgMC02NC0yOC43LTY0LTY0bDAtNjRjMC0zNS4zIDI4LjctNjQgNjQtNjRsNjcuOCAwTDI2Ni43IDQwLjFjOS40LTguNCAyMi45LTEwLjQgMzQuNC01LjN6TTQxMi42IDE4MS41QzQzNC4xIDE5OS4xIDQ0OCAyMjUuOSA0NDggMjU2cy0xMy45IDU2LjktMzUuNCA3NC41Yy0xMC4zIDguNC0yNS40IDYuOC0zMy44LTMuNXMtNi44LTI1LjQgMy41LTMzLjhDMzkzLjEgMjg0LjQgNDAwIDI3MSA0MDAgMjU2cy02LjktMjguNC0xNy43LTM3LjNjLTEwLjMtOC40LTExLjgtMjMuNS0zLjUtMzMuOHMyMy41LTExLjggMzMuOC0zLjV6XCJdXG59O1xuY29uc3QgZmFWb2x1bWVEb3duID0gZmFWb2x1bWVMb3c7XG5jb25zdCBmYUNvbW1lbnRTbGFzaCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjb21tZW50LXNsYXNoJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNGIzXCIsIFwiTTM4LjggNS4xQzI4LjQtMy4xIDEzLjMtMS4yIDUuMSA5LjJTLTEuMiAzNC43IDkuMiA0Mi45bDU5MiA0NjRjMTAuNCA4LjIgMjUuNSA2LjMgMzMuNy00LjFzNi4zLTI1LjUtNC4xLTMzLjdMNTEyLjkgMzc2LjdDNTUyLjIgMzQwLjIgNTc2IDI5Mi4zIDU3NiAyNDBDNTc2IDEyNS4xIDQ2MS40IDMyIDMyMCAzMmMtNjcuNyAwLTEyOS4zIDIxLjQtMTc1LjEgNTYuM0wzOC44IDUuMXptMzg1LjIgNDI1TDgyLjkgMTYxLjNDNzAuNyAxODUuNiA2NCAyMTIuMiA2NCAyNDBjMCA0NS4xIDE3LjcgODYuOCA0Ny43IDEyMC45Yy0xLjkgMjQuNS0xMS40IDQ2LjMtMjEuNCA2Mi45Yy01LjUgOS4yLTExLjEgMTYuNi0xNS4yIDIxLjZjLTIuMSAyLjUtMy43IDQuNC00LjkgNS43Yy0uNiAuNi0xIDEuMS0xLjMgMS40bC0uMyAuM2MwIDAgMCAwIDAgMGMwIDAgMCAwIDAgMHMwIDAgMCAwczAgMCAwIDBjLTQuNiA0LjYtNS45IDExLjQtMy40IDE3LjRjMi41IDYgOC4zIDkuOSAxNC44IDkuOWMyOC43IDAgNTcuNi04LjkgODEuNi0xOS4zYzIyLjktMTAgNDIuNC0yMS45IDU0LjMtMzAuNmMzMS44IDExLjUgNjcgMTcuOSAxMDQuMSAxNy45YzM3IDAgNzIuMy02LjQgMTA0LjEtMTcuOXpcIl1cbn07XG5jb25zdCBmYUNsb3VkU3VuUmFpbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjbG91ZC1zdW4tcmFpbicsXG4gIGljb246IFs2NDAsIDUxMiwgWzEyNzc4Ml0sIFwiZjc0M1wiLCBcIk0yOTQuMiAxLjJjNS4xIDIuMSA4LjcgNi43IDkuNiAxMi4xbDEwLjQgNjIuNGMtMjMuMyAxMC44LTQyLjkgMjguNC01NiA1MC4zYy0xNC42LTktMzEuOC0xNC4xLTUwLjItMTQuMWMtNTMgMC05NiA0My05NiA5NmMwIDM1LjUgMTkuMyA2Ni42IDQ4IDgzLjJjLjggMzEuOCAxMy4yIDYwLjcgMzMuMSA4Mi43bC01NiAzOS4yYy00LjUgMy4yLTEwLjMgMy44LTE1LjQgMS42cy04LjctNi43LTkuNi0xMi4xTDk4LjEgMzE3LjkgMTMuNCAzMDMuOGMtNS40LS45LTEwLTQuNS0xMi4xLTkuNnMtMS41LTEwLjkgMS42LTE1LjRMNTIuNSAyMDggMi45IDEzNy4yYy0zLjItNC41LTMuOC0xMC4zLTEuNi0xNS40czYuNy04LjcgMTIuMS05LjZMOTguMSA5OC4xbDE0LjEtODQuN2MuOS01LjQgNC41LTEwIDkuNi0xMi4xczEwLjktMS41IDE1LjQgMS42TDIwOCA1Mi41IDI3OC44IDIuOWM0LjUtMy4yIDEwLjMtMy44IDE1LjQtMS42ek0yMDggMTQ0YzEzLjggMCAyNi43IDQuNCAzNy4xIDExLjljLTEuMiA0LjEtMi4yIDguMy0zIDEyLjZjLTM3LjkgMTQuNi02Ny4yIDQ2LjYtNzcuOCA4Ni40QzE1MS44IDI0My4xIDE0NCAyMjYuNSAxNDQgMjA4YzAtMzUuMyAyOC43LTY0IDY0LTY0em02OS40IDI3NmMxMSA3LjQgMTQgMjIuMyA2LjcgMzMuM2wtMzIgNDhjLTcuNCAxMS0yMi4zIDE0LTMzLjMgNi43cy0xNC0yMi4zLTYuNy0zMy4zbDMyLTQ4YzcuNC0xMSAyMi4zLTE0IDMzLjMtNi43em05NiAwYzExIDcuNCAxNCAyMi4zIDYuNyAzMy4zbC0zMiA0OGMtNy40IDExLTIyLjMgMTQtMzMuMyA2LjdzLTE0LTIyLjMtNi43LTMzLjNsMzItNDhjNy40LTExIDIyLjMtMTQgMzMuMy02Ljd6bTk2IDBjMTEgNy40IDE0IDIyLjMgNi43IDMzLjNsLTMyIDQ4Yy03LjQgMTEtMjIuMyAxNC0zMy4zIDYuN3MtMTQtMjIuMy02LjctMzMuM2wzMi00OGM3LjQtMTEgMjIuMy0xNCAzMy4zLTYuN3ptOTYgMGMxMSA3LjQgMTQgMjIuMyA2LjcgMzMuM2wtMzIgNDhjLTcuNCAxMS0yMi4zIDE0LTMzLjMgNi43cy0xNC0yMi4zLTYuNy0zMy4zbDMyLTQ4YzcuNC0xMSAyMi4zLTE0IDMzLjMtNi43em03NC41LTExNi4xYzAgNDQuMi0zNS44IDgwLTgwIDgwbC0yNzEuOSAwYy01MyAwLTk2LTQzLTk2LTk2YzAtNDcuNiAzNC42LTg3IDgwLTk0LjZsMC0xLjNjMC01MyA0My05NiA5Ni05NmMzNC45IDAgNjUuNCAxOC42IDgyLjIgNDYuNGMxMy05LjEgMjguOC0xNC40IDQ1LjgtMTQuNGM0NC4yIDAgODAgMzUuOCA4MCA4MGMwIDUuOS0uNiAxMS43LTEuOSAxNy4yYzM3LjQgNi43IDY1LjggMzkuNCA2NS44IDc4Ljd6XCJdXG59O1xuY29uc3QgZmFDb21wcmVzcyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjb21wcmVzcycsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjA2NlwiLCBcIk0xNjAgNjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJsMCA2NC02NCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDk2IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJsMC05NnpNMzIgMzIwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDY0IDAgMCA2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtOTZjMC0xNy43LTE0LjMtMzItMzItMzJsLTk2IDB6TTM1MiA2NGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMmwwIDk2YzAgMTcuNyAxNC4zIDMyIDMyIDMybDk2IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTY0IDAgMC02NHpNMzIwIDMyMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJsMCA5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtNjQgNjQgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtOTYgMHpcIl1cbn07XG5jb25zdCBmYVdoZWF0QXduID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3doZWF0LWF3bicsXG4gIGljb246IFs1MTIsIDUxMiwgW1wid2hlYXQtYWx0XCJdLCBcImUyY2RcIiwgXCJNNTA1IDQxYzkuNC05LjQgOS40LTI0LjYgMC0zMy45cy0yNC42LTkuNC0zMy45IDBMMzgzIDk1Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOXMyNC42IDkuNCAzMy45IDBsODgtODh6TTMwNS41IDI3LjNjLTYuMi02LjItMTYuNC02LjItMjIuNiAwTDI3MS41IDM4LjZjLTM3LjUgMzcuNS0zNy41IDk4LjMgMCAxMzUuOGwxMC40IDEwLjQtMzAuNSAzMC41Yy0zLjQtMjcuMy0xNS41LTUzLjgtMzYuNS03NC44bC0xMS4zLTExLjNjLTYuMi02LjItMTYuNC02LjItMjIuNiAwbC0xMS4zIDExLjNjLTM3LjUgMzcuNS0zNy41IDk4LjMgMCAxMzUuOGwxMC40IDEwLjQtMzAuNSAzMC41Yy0zLjQtMjcuMy0xNS41LTUzLjgtMzYuNS03NC44TDEwMS44IDIzMWMtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBMNjcuOSAyNDIuM2MtMzcuNSAzNy41LTM3LjUgOTguMyAwIDEzNS44bDEwLjQgMTAuNEw5LjQgNDU3LjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBsNjguOS02OC45IDEyLjIgMTIuMmMzNy41IDM3LjUgOTguMyAzNy41IDEzNS44IDBsMTEuMy0xMS4zYzYuMi02LjIgNi4yLTE2LjQgMC0yMi42bC0xMS4zLTExLjNjLTIxLjgtMjEuOC00OS42LTM0LjEtNzguMS0zNi45bDMxLjktMzEuOSAxMi4yIDEyLjJjMzcuNSAzNy41IDk4LjMgMzcuNSAxMzUuOCAwbDExLjMtMTEuM2M2LjItNi4yIDYuMi0xNi40IDAtMjIuNmwtMTEuMy0xMS4zYy0yMS44LTIxLjgtNDkuNi0zNC4xLTc4LjEtMzYuOWwzMS45LTMxLjkgMTIuMiAxMi4yYzM3LjUgMzcuNSA5OC4zIDM3LjUgMTM1LjggMEw0ODYuNSAyMzFjNi4yLTYuMiA2LjItMTYuNCAwLTIyLjZMNDc1LjIgMTk3Yy01LjItNS4yLTEwLjYtOS44LTE2LjQtMTMuOUw1MDUgMTM3YzkuNC05LjQgOS40LTI0LjYgMC0zMy45cy0yNC42LTkuNC0zMy45IDBsLTU5LjQgNTkuNGMtMjAuNi00LjQtNDItMy43LTYyLjMgMi4xYzYuMS0yMS4zIDYuNi00My44IDEuNC02NS4zTDQwOSA0MWM5LjQtOS40IDkuNC0yNC42IDAtMzMuOXMtMjQuNi05LjQtMzMuOSAwTDMyOS4xIDUyLjljLTMuNy01LTcuOC05LjgtMTIuNC0xNC4zTDMwNS41IDI3LjN6XCJdXG59O1xuY29uc3QgZmFXaGVhdEFsdCA9IGZhV2hlYXRBd247XG5jb25zdCBmYUFua2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYW5raCcsXG4gIGljb246IFszMjAsIDUxMiwgWzk3NjVdLCBcImY2NDRcIiwgXCJNOTYgMTI4YzAtMzUuMyAyOC43LTY0IDY0LTY0czY0IDI4LjcgNjQgNjRjMCA0MS42LTIwLjcgNzYuNi00Ni42IDEwNC4xYy01LjkgNi4yLTExLjggMTEuOC0xNy40IDE2LjdjLTUuNi00LjktMTEuNS0xMC41LTE3LjQtMTYuN0MxMTYuNyAyMDQuNiA5NiAxNjkuNiA5NiAxMjh6TTE2MCAwQzg5LjMgMCAzMiA1Ny4zIDMyIDEyOGMwIDUyLjQgMjEuNSA5NS41IDQ2LjggMTI4TDMyIDI1NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmw5NiAwIDAgMTYwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0xNjAgOTYgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtNDYuOCAwYzI1LjQtMzIuNSA0Ni44LTc1LjYgNDYuOC0xMjhDMjg4IDU3LjMgMjMwLjcgMCAxNjAgMHpcIl1cbn07XG5jb25zdCBmYUhhbmRzSG9sZGluZ0NoaWxkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hhbmRzLWhvbGRpbmctY2hpbGQnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU0ZmFcIiwgXCJNMzIwIDBhNDAgNDAgMCAxIDEgMCA4MCA0MCA0MCAwIDEgMSAwLTgwem00NC43IDE2NC4zTDM3NS44IDI1M2MxLjYgMTMuMi03LjcgMjUuMS0yMC44IDI2LjhzLTI1LjEtNy43LTI2LjgtMjAuOGwtNC40LTM1LTcuNiAwLTQuNCAzNWMtMS42IDEzLjItMTMuNiAyMi41LTI2LjggMjAuOHMtMjIuNS0xMy42LTIwLjgtMjYuOGwxMS4xLTg4LjhMMjU1LjUgMTgxYy0xMC4xIDguNi0yNS4zIDcuMy0zMy44LTIuOHMtNy4zLTI1LjMgMi44LTMzLjhsMjcuOS0yMy42QzI3MS4zIDEwNC44IDI5NS4zIDk2IDMyMCA5NnM0OC43IDguOCA2Ny42IDI0LjdsMjcuOSAyMy42YzEwLjEgOC42IDExLjQgMjMuNyAyLjggMzMuOHMtMjMuNyAxMS40LTMzLjggMi44bC0xOS44LTE2Ljd6TTQwIDY0YzIyLjEgMCA0MCAxNy45IDQwIDQwbDAgNDAgMCA4MCAwIDQwLjJjMCAxNyA2LjcgMzMuMyAxOC43IDQ1LjNsNTEuMSA1MS4xYzguMyA4LjMgMjEuMyA5LjYgMzEgMy4xYzEyLjktOC42IDE0LjctMjYuOSAzLjctMzcuOGwtMTUuMi0xNS4yLTMyLTMyYy0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM3MzMi44LTEyLjUgNDUuMyAwbDMyIDMyIDE1LjIgMTUuMmMwIDAgMCAwIDAgMGwyNS4zIDI1LjNjMjEgMjEgMzIuOCA0OS41IDMyLjggNzkuMmwwIDc4LjljMCAyNi41LTIxLjUgNDgtNDggNDhsLTY2LjcgMGMtMTcgMC0zMy4zLTYuNy00NS4zLTE4LjdMMjguMSAzOTMuNEMxMC4xIDM3NS40IDAgMzUxIDAgMzI1LjVMMCAyMjRsMC02NCAwLTU2QzAgODEuOSAxNy45IDY0IDQwIDY0em01NjAgMGMyMi4xIDAgNDAgMTcuOSA0MCA0MGwwIDU2IDAgNjQgMCAxMDEuNWMwIDI1LjUtMTAuMSA0OS45LTI4LjEgNjcuOUw1MTIgNDkzLjNjLTEyIDEyLTI4LjMgMTguNy00NS4zIDE4LjdMNDAwIDUxMmMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhsMC03OC45YzAtMjkuNyAxMS44LTU4LjIgMzIuOC03OS4ybDI1LjMtMjUuM2MwIDAgMCAwIDAgMGwxNS4yLTE1LjIgMzItMzJjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDBzMTIuNSAzMi44IDAgNDUuM2wtMzIgMzItMTUuMiAxNS4yYy0xMSAxMS05LjIgMjkuMiAzLjcgMzcuOGM5LjcgNi41IDIyLjcgNS4yIDMxLTMuMWw1MS4xLTUxLjFjMTItMTIgMTguNy0yOC4zIDE4LjctNDUuM2wwLTQwLjIgMC04MCAwLTQwYzAtMjIuMSAxNy45LTQwIDQwLTQwelwiXVxufTtcbmNvbnN0IGZhQXN0ZXJpc2sgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYXN0ZXJpc2snLFxuICBpY29uOiBbMzg0LCA1MTIsIFsxMDAzMywgNjE1NDVdLCBcIjJhXCIsIFwiTTE5MiAzMmMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDEzNS41IDExMS41LTY2LjljMTUuMi05LjEgMzQuOC00LjIgNDMuOSAxMXM0LjIgMzQuOC0xMSA0My45TDI1NC4yIDI1NmwxMTQuMyA2OC42YzE1LjIgOS4xIDIwLjEgMjguNyAxMSA0My45cy0yOC43IDIwLjEtNDMuOSAxMUwyMjQgMzEyLjUgMjI0IDQ0OGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTEzNS41TDQ4LjUgMzc5LjRjLTE1LjIgOS4xLTM0LjggNC4yLTQzLjktMTFzLTQuMi0zNC44IDExLTQzLjlMMTI5LjggMjU2IDE1LjUgMTg3LjRjLTE1LjItOS4xLTIwLjEtMjguNy0xMS00My45czI4LjctMjAuMSA0My45LTExTDE2MCAxOTkuNSAxNjAgNjRjMC0xNy43IDE0LjMtMzIgMzItMzJ6XCJdXG59O1xuY29uc3QgZmFTcXVhcmVDaGVjayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzcXVhcmUtY2hlY2snLFxuICBpY29uOiBbNDQ4LCA1MTIsIFs5NzQ1LCA5OTg5LCA2MTUxMCwgXCJjaGVjay1zcXVhcmVcIl0sIFwiZjE0YVwiLCBcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2TDAgNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0bDMyMCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMzIwYzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDMyek0zMzcgMjA5TDIwOSAzMzdjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwbC02NC02NGMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwbDQ3IDQ3TDMwMyAxNzVjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45elwiXVxufTtcbmNvbnN0IGZhQ2hlY2tTcXVhcmUgPSBmYVNxdWFyZUNoZWNrO1xuY29uc3QgZmFQZXNldGFTaWduID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3Blc2V0YS1zaWduJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJlMjIxXCIsIFwiTTY0IDMyQzQ2LjMgMzIgMzIgNDYuMyAzMiA2NGwwIDk2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDAgOTYgMCAxMjhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTk2IDk2IDBjNzcuNCAwIDE0Mi01NSAxNTYuOC0xMjhsMy4yIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTMuMiAwQzMzNCA4NyAyNjkuNCAzMiAxOTIgMzJMNjQgMzJ6TTI4Mi41IDE2MEw5NiAxNjBsMC02NCA5NiAwYzQxLjggMCA3Ny40IDI2LjcgOTAuNSA2NHpNOTYgMjI0bDE4Ni41IDBjLTEzLjIgMzcuMy00OC43IDY0LTkwLjUgNjRsLTk2IDAgMC02NHpcIl1cbn07XG5jb25zdCBmYUhlYWRpbmcgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGVhZGluZycsXG4gIGljb246IFs0NDgsIDUxMiwgW1wiaGVhZGVyXCJdLCBcImYxZGNcIiwgXCJNMCA2NEMwIDQ2LjMgMTQuMyAzMiAzMiAzMmw0OCAwIDQ4IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTE2IDAgMCAxMTIgMjI0IDAgMC0xMTItMTYgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmw0OCAwIDQ4IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTE2IDAgMCAxNDQgMCAxNzYgMTYgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtNDggMC00OCAwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDE2IDAgMC0xNDQtMjI0IDAgMCAxNDQgMTYgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtNDggMC00OCAwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDE2IDAgMC0xNzZMNDggOTYgMzIgOTZDMTQuMyA5NiAwIDgxLjcgMCA2NHpcIl1cbn07XG5jb25zdCBmYUhlYWRlciA9IGZhSGVhZGluZztcbmNvbnN0IGZhR2hvc3QgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZ2hvc3QnLFxuICBpY29uOiBbMzg0LCA1MTIsIFsxMjgxMjNdLCBcImY2ZTJcIiwgXCJNNDAuMSA0NjcuMWwtMTEuMiA5Yy0zLjIgMi41LTcuMSAzLjktMTEuMSAzLjlDOCA0ODAgMCA0NzIgMCA0NjIuMkwwIDE5MkMwIDg2IDg2IDAgMTkyIDBTMzg0IDg2IDM4NCAxOTJsMCAyNzAuMmMwIDkuOC04IDE3LjgtMTcuOCAxNy44Yy00IDAtNy45LTEuNC0xMS4xLTMuOWwtMTEuMi05Yy0xMy40LTEwLjctMzIuOC05LTQ0LjEgMy45TDI2OS4zIDUwNmMtMy4zIDMuOC04LjIgNi0xMy4zIDZzLTkuOS0yLjItMTMuMy02bC0yNi42LTMwLjVjLTEyLjctMTQuNi0zNS40LTE0LjYtNDguMiAwTDE0MS4zIDUwNmMtMy4zIDMuOC04LjIgNi0xMy4zIDZzLTkuOS0yLjItMTMuMy02TDg0LjIgNDcxYy0xMS4zLTEyLjktMzAuNy0xNC42LTQ0LjEtMy45ek0xNjAgMTkyYTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6bTk2IDMyYTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpcIl1cbn07XG5jb25zdCBmYUxpc3QgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbGlzdCcsXG4gIGljb246IFs1MTIsIDUxMiwgW1wibGlzdC1zcXVhcmVzXCJdLCBcImYwM2FcIiwgXCJNNDAgNDhDMjYuNyA0OCAxNiA1OC43IDE2IDcybDAgNDhjMCAxMy4zIDEwLjcgMjQgMjQgMjRsNDggMGMxMy4zIDAgMjQtMTAuNyAyNC0yNGwwLTQ4YzAtMTMuMy0xMC43LTI0LTI0LTI0TDQwIDQ4ek0xOTIgNjRjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsMjg4IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJMMTkyIDY0em0wIDE2MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwyODggMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtMjg4IDB6bTAgMTYwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDI4OCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC0yODggMHpNMTYgMjMybDAgNDhjMCAxMy4zIDEwLjcgMjQgMjQgMjRsNDggMGMxMy4zIDAgMjQtMTAuNyAyNC0yNGwwLTQ4YzAtMTMuMy0xMC43LTI0LTI0LTI0bC00OCAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHpNNDAgMzY4Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNGwwIDQ4YzAgMTMuMyAxMC43IDI0IDI0IDI0bDQ4IDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRsMC00OGMwLTEzLjMtMTAuNy0yNC0yNC0yNGwtNDggMHpcIl1cbn07XG5jb25zdCBmYUxpc3RTcXVhcmVzID0gZmFMaXN0O1xuY29uc3QgZmFTcXVhcmVQaG9uZUZsaXAgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3F1YXJlLXBob25lLWZsaXAnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtcInBob25lLXNxdWFyZS1hbHRcIl0sIFwiZjg3YlwiLCBcIk0zODQgMzJjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCAzMjBjMCAzNS4zLTI4LjcgNjQtNjQgNjRMNjQgNDgwYy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMybDMyMCAwem0tOTAuNyA5Ni43Yy05LjctMi42LTE5LjkgMi4zLTIzLjcgMTEuNmwtMjAgNDhjLTMuNCA4LjItMSAxNy42IDUuOCAyMy4yTDI4MCAyMzEuN2MtMTYuNiAzNS4yLTQ1LjEgNjMuNy04MC4zIDgwLjNsLTIwLjItMjQuN2MtNS42LTYuOC0xNS05LjItMjMuMi01LjhsLTQ4IDIwYy05LjMgMy45LTE0LjIgMTQtMTEuNiAyMy43bDEyIDQ0QzExMS4xIDM3OCAxMTkgMzg0IDEyOCAzODRjMTIzLjcgMCAyMjQtMTAwLjMgMjI0LTIyNGMwLTktNi0xNi45LTE0LjctMTkuM2wtNDQtMTJ6XCJdXG59O1xuY29uc3QgZmFQaG9uZVNxdWFyZUFsdCA9IGZhU3F1YXJlUGhvbmVGbGlwO1xuY29uc3QgZmFDYXJ0UGx1cyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjYXJ0LXBsdXMnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImYyMTdcIiwgXCJNMCAyNEMwIDEwLjcgMTAuNyAwIDI0IDBMNjkuNSAwYzIyIDAgNDEuNSAxMi44IDUwLjYgMzJsNDExIDBjMjYuMyAwIDQ1LjUgMjUgMzguNiA1MC40bC00MSAxNTIuM2MtOC41IDMxLjQtMzcgNTMuMy02OS41IDUzLjNsLTI4OC41IDAgNS40IDI4LjVjMi4yIDExLjMgMTIuMSAxOS41IDIzLjYgMTkuNUw0ODggMzM2YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0bC0yODguMyAwYy0zNC42IDAtNjQuMy0yNC42LTcwLjctNTguNUw3Ny40IDU0LjVjLS43LTMuOC00LTYuNS03LjktNi41TDI0IDQ4QzEwLjcgNDggMCAzNy4zIDAgMjR6TTEyOCA0NjRhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHptMzM2LTQ4YTQ4IDQ4IDAgMSAxIDAgOTYgNDggNDggMCAxIDEgMC05NnpNMjUyIDE2MGMwIDExIDkgMjAgMjAgMjBsNDQgMCAwIDQ0YzAgMTEgOSAyMCAyMCAyMHMyMC05IDIwLTIwbDAtNDQgNDQgMGMxMSAwIDIwLTkgMjAtMjBzLTktMjAtMjAtMjBsLTQ0IDAgMC00NGMwLTExLTktMjAtMjAtMjBzLTIwIDktMjAgMjBsMCA0NC00NCAwYy0xMSAwLTIwIDktMjAgMjB6XCJdXG59O1xuY29uc3QgZmFHYW1lcGFkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2dhbWVwYWQnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImYxMWJcIiwgXCJNMTkyIDY0Qzg2IDY0IDAgMTUwIDAgMjU2Uzg2IDQ0OCAxOTIgNDQ4bDI1NiAwYzEwNiAwIDE5Mi04NiAxOTItMTkycy04Ni0xOTItMTkyLTE5MkwxOTIgNjR6TTQ5NiAxNjhhNDAgNDAgMCAxIDEgMCA4MCA0MCA0MCAwIDEgMSAwLTgwek0zOTIgMzA0YTQwIDQwIDAgMSAxIDgwIDAgNDAgNDAgMCAxIDEgLTgwIDB6TTE2OCAyMDBjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNGwwIDMyIDMyIDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRsLTMyIDAgMCAzMmMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNGwwLTMyLTMyIDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRsMzIgMCAwLTMyelwiXVxufTtcbmNvbnN0IGZhQ2lyY2xlRG90ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NpcmNsZS1kb3QnLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjgyODAsIFwiZG90LWNpcmNsZVwiXSwgXCJmMTkyXCIsIFwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyem0wLTM1MmE5NiA5NiAwIDEgMSAwIDE5MiA5NiA5NiAwIDEgMSAwLTE5MnpcIl1cbn07XG5jb25zdCBmYURvdENpcmNsZSA9IGZhQ2lyY2xlRG90O1xuY29uc3QgZmFGYWNlRGl6enkgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmFjZS1kaXp6eScsXG4gIGljb246IFs1MTIsIDUxMiwgW1wiZGl6enlcIl0sIFwiZjU2N1wiLCBcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnptMC0yMjRhNjQgNjQgMCAxIDEgMCAxMjggNjQgNjQgMCAxIDEgMC0xMjh6TTEwMC43IDEzMi43YzYuMi02LjIgMTYuNC02LjIgMjIuNiAwTDE2MCAxNjkuNGwzNi43LTM2LjdjNi4yLTYuMiAxNi40LTYuMiAyMi42IDBzNi4yIDE2LjQgMCAyMi42TDE4Mi42IDE5MmwzNi43IDM2LjdjNi4yIDYuMiA2LjIgMTYuNCAwIDIyLjZzLTE2LjQgNi4yLTIyLjYgMEwxNjAgMjE0LjZsLTM2LjcgMzYuN2MtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBzLTYuMi0xNi40IDAtMjIuNkwxMzcuNCAxOTJsLTM2LjctMzYuN2MtNi4yLTYuMi02LjItMTYuNCAwLTIyLjZ6bTE5MiAwYzYuMi02LjIgMTYuNC02LjIgMjIuNiAwTDM1MiAxNjkuNGwzNi43LTM2LjdjNi4yLTYuMiAxNi40LTYuMiAyMi42IDBzNi4yIDE2LjQgMCAyMi42TDM3NC42IDE5MmwzNi43IDM2LjdjNi4yIDYuMiA2LjIgMTYuNCAwIDIyLjZzLTE2LjQgNi4yLTIyLjYgMEwzNTIgMjE0LjZsLTM2LjcgMzYuN2MtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBzLTYuMi0xNi40IDAtMjIuNkwzMjkuNCAxOTJsLTM2LjctMzYuN2MtNi4yLTYuMi02LjItMTYuNCAwLTIyLjZ6XCJdXG59O1xuY29uc3QgZmFEaXp6eSA9IGZhRmFjZURpenp5O1xuY29uc3QgZmFFZ2cgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZWdnJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbMTI5MzcwXSwgXCJmN2ZiXCIsIFwiTTE5MiA0OTZDODYgNDk2IDAgMzk0IDAgMjg4QzAgMTc2IDY0IDE2IDE5MiAxNnMxOTIgMTYwIDE5MiAyNzJjMCAxMDYtODYgMjA4LTE5MiAyMDh6TTE1NC44IDEzNGM2LjUtNiA3LTE2LjEgMS0yMi42cy0xNi4xLTctMjIuNi0xYy0yMy45IDIxLjgtNDEuMSA1Mi43LTUyLjMgODQuMkM2OS43IDIyNi4xIDY0IDI1OS43IDY0IDI4OGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2YzAtMjQuNSA1LTU0LjQgMTUuMS04Mi44YzEwLjEtMjguNSAyNS01NC4xIDQzLjctNzEuMnpcIl1cbn07XG5jb25zdCBmYUhvdXNlTWVkaWNhbENpcmNsZVhtYXJrID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hvdXNlLW1lZGljYWwtY2lyY2xlLXhtYXJrJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlNTEzXCIsIFwiTTMyMCAzNjhjMCA1OS41IDI5LjUgMTEyLjEgNzQuOCAxNDRsLTI2Ni43IDBjLTM1LjMgMC02NC0yOC43LTY0LTY0bDAtMTYwLjQtMzIgMGMtMTggMC0zMi0xNC0zMi0zMi4xYzAtOSAzLTE3IDEwLTI0TDI2Ni40IDhjNy03IDE1LTggMjItOHMxNSAyIDIxIDdMNTIyLjEgMTkzLjljLTguNS0xLjMtMTcuMy0xLjktMjYuMS0xLjljLTU0LjcgMC0xMDMuNSAyNC45LTEzNS44IDY0TDMyMCAyNTZsMC00OGMwLTguOC03LjItMTYtMTYtMTZsLTMyIDBjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDQ4LTQ4IDBjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDMyYzAgOC44IDcuMiAxNiAxNiAxNmw0OCAwIDAgNDhjMCA4LjggNy4yIDE2IDE2IDE2bDMyIDBjOC44IDAgMTYtNy4yIDE2LTE2ek00OTYgMjI0YTE0NCAxNDQgMCAxIDEgMCAyODggMTQ0IDE0NCAwIDEgMSAwLTI4OHptMjIuNiAxNDRsMzYuNy0zNi43YzYuMi02LjIgNi4yLTE2LjQgMC0yMi42cy0xNi40LTYuMi0yMi42IDBMNDk2IDM0NS40bC0zNi43LTM2LjdjLTYuMi02LjItMTYuNC02LjItMjIuNiAwcy02LjIgMTYuNCAwIDIyLjZMNDczLjQgMzY4bC0zNi43IDM2LjdjLTYuMiA2LjItNi4yIDE2LjQgMCAyMi42czE2LjQgNi4yIDIyLjYgMEw0OTYgMzkwLjZsMzYuNyAzNi43YzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwczYuMi0xNi40IDAtMjIuNkw1MTguNiAzNjh6XCJdXG59O1xuY29uc3QgZmFDYW1wZ3JvdW5kID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NhbXBncm91bmQnLFxuICBpY29uOiBbNTc2LCA1MTIsIFs5OTc4XSwgXCJmNmJiXCIsIFwiTTM3NyA1MmMxMS0xMy44IDguOC0zMy45LTUtNDVzLTMzLjktOC44LTQ1IDVMMjg4IDYwLjggMjQ5IDEyYy0xMS0xMy44LTMxLjItMTYtNDUtNXMtMTYgMzEuMi01IDQ1bDQ4IDYwTDEyLjMgNDA1LjRDNC4zIDQxNS40IDAgNDI3LjcgMCA0NDAuNEwwIDQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGwyNDAgMCAyNDAgMGMyNi41IDAgNDgtMjEuNSA0OC00OGwwLTIzLjZjMC0xMi43LTQuMy0yNS4xLTEyLjMtMzVMMzI5IDExMmw0OC02MHpNMjg4IDQ0OGwtMTE5LjUgMEwyODggMjkxLjcgNDA3LjUgNDQ4IDI4OCA0NDh6XCJdXG59O1xuY29uc3QgZmFGb2xkZXJQbHVzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZvbGRlci1wbHVzJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNjVlXCIsIFwiTTUxMiA0MTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRMNjQgNDgwYy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMybDEyOCAwYzIwLjEgMCAzOS4xIDkuNSA1MS4yIDI1LjZsMTkuMiAyNS42YzYgOC4xIDE1LjUgMTIuOCAyNS42IDEyLjhsMTYwIDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCAyNTZ6TTIzMiAzNzZjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGwwLTY0IDY0IDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRsLTY0IDAgMC02NGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNGwwIDY0LTY0IDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRsNjQgMCAwIDY0elwiXVxufTtcbmNvbnN0IGZhRnV0Ym9sID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Z1dGJvbCcsXG4gIGljb246IFs1MTIsIDUxMiwgWzk5MTcsIFwiZnV0Ym9sLWJhbGxcIiwgXCJzb2NjZXItYmFsbFwiXSwgXCJmMWUzXCIsIFwiTTQxNy4zIDM2MC4xbC03MS42LTQuOGMtNS4yLS4zLTEwLjMgMS4xLTE0LjUgNC4ycy03LjIgNy40LTguNCAxMi41bC0xNy42IDY5LjZDMjg5LjUgNDQ1LjggMjczIDQ0OCAyNTYgNDQ4cy0zMy41LTIuMi00OS4yLTYuNEwxODkuMiAzNzJjLTEuMy01LTQuMy05LjQtOC40LTEyLjVzLTkuMy00LjUtMTQuNS00LjJsLTcxLjYgNC44Yy0xNy42LTI3LjItMjguNS01OS4yLTMwLjQtOTMuNkwxMjUgMjI4LjNjNC40LTIuOCA3LjYtNyA5LjItMTEuOXMxLjQtMTAuMi0uNS0xNWwtMjYuNy02Ni42QzEyOCAxMDkuMiAxNTUuMyA4OSAxODYuNyA3Ni45bDU1LjIgNDZjNCAzLjMgOSA1LjEgMTQuMSA1LjFzMTAuMi0xLjggMTQuMS01LjFsNTUuMi00NmMzMS4zIDEyLjEgNTguNyAzMi4zIDc5LjYgNTcuOWwtMjYuNyA2Ni42Yy0xLjkgNC44LTIuMSAxMC4xLS41IDE1czQuOSA5LjEgOS4yIDExLjlsNjAuNyAzOC4yYy0xLjkgMzQuNC0xMi44IDY2LjQtMzAuNCA5My42ek0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnptMTQuMS0zMjUuN2MtOC40LTYuMS0xOS44LTYuMS0yOC4yIDBMMTk0IDIyMWMtOC40IDYuMS0xMS45IDE2LjktOC43IDI2LjhsMTguMyA1Ni4zYzMuMiA5LjkgMTIuNCAxNi42IDIyLjggMTYuNmw1OS4yIDBjMTAuNCAwIDE5LjYtNi43IDIyLjgtMTYuNmwxOC4zLTU2LjNjMy4yLTkuOS0uMy0yMC43LTguNy0yNi44bC00Ny45LTM0Ljh6XCJdXG59O1xuY29uc3QgZmFGdXRib2xCYWxsID0gZmFGdXRib2w7XG5jb25zdCBmYVNvY2NlckJhbGwgPSBmYUZ1dGJvbDtcbmNvbnN0IGZhUGFpbnRicnVzaCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwYWludGJydXNoJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbMTI4Mzk2LCBcInBhaW50LWJydXNoXCJdLCBcImYxZmNcIiwgXCJNMzM5LjMgMzY3LjFjMjcuMy0zLjkgNTEuOS0xOS40IDY3LjItNDIuOUw1NjguMiA3NC4xYzEyLjYtMTkuNSA5LjQtNDUuMy03LjYtNjEuMlM1MTcuNy00LjQgNDk5LjEgOS42TDI2Mi40IDE4Ny4yYy0yNCAxOC0zOC4yIDQ2LjEtMzguNCA3Ni4xTDMzOS4zIDM2Ny4xem0tMTkuNiAyNS40bC0xMTYtMTA0LjRDMTQzLjkgMjkwLjMgOTYgMzM5LjYgOTYgNDAwYzAgMy45IC4yIDcuOCAuNiAxMS42Qzk4LjQgNDI5LjEgODYuNCA0NDggNjguOCA0NDhMNjQgNDQ4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDE0NCAwYzYxLjkgMCAxMTItNTAuMSAxMTItMTEyYzAtMi41LS4xLTUtLjItNy41elwiXVxufTtcbmNvbnN0IGZhUGFpbnRCcnVzaCA9IGZhUGFpbnRicnVzaDtcbmNvbnN0IGZhTG9jayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdsb2NrJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbMTI4Mjc0XSwgXCJmMDIzXCIsIFwiTTE0NCAxNDRsMCA0OCAxNjAgMCAwLTQ4YzAtNDQuMi0zNS44LTgwLTgwLTgwcy04MCAzNS44LTgwIDgwek04MCAxOTJsMC00OEM4MCA2NC41IDE0NC41IDAgMjI0IDBzMTQ0IDY0LjUgMTQ0IDE0NGwwIDQ4IDE2IDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCAxOTJjMCAzNS4zLTI4LjcgNjQtNjQgNjRMNjQgNTEyYy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDI1NmMwLTM1LjMgMjguNy02NCA2NC02NGwxNiAwelwiXVxufTtcbmNvbnN0IGZhR2FzUHVtcCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdnYXMtcHVtcCcsXG4gIGljb246IFs1MTIsIDUxMiwgWzk5ODFdLCBcImY1MmZcIiwgXCJNMzIgNjRDMzIgMjguNyA2MC43IDAgOTYgMEwyNTYgMGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDE5MiA4IDBjNDguNiAwIDg4IDM5LjQgODggODhsMCAzMmMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0bDAtMTU0Yy0yNy42LTcuMS00OC0zMi4yLTQ4LTYybDAtNjRMMzg0IDY0Yy04LjgtOC44LTguOC0yMy4yIDAtMzJzMjMuMi04LjggMzIgMGw3Ny4zIDc3LjNjMTIgMTIgMTguNyAyOC4zIDE4LjcgNDUuM2wwIDEzLjUgMCAyNCAwIDMyIDAgMTUyYzAgMzkuOC0zMi4yIDcyLTcyIDcycy03Mi0zMi4yLTcyLTcybDAtMzJjMC0yMi4xLTE3LjktNDAtNDAtNDBsLTggMCAwIDE0NGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkwzMiA1MTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJMMzIgNjR6TTk2IDgwbDAgOTZjMCA4LjggNy4yIDE2IDE2IDE2bDEyOCAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTk2YzAtOC44LTcuMi0xNi0xNi0xNkwxMTIgNjRjLTguOCAwLTE2IDcuMi0xNiAxNnpcIl1cbn07XG5jb25zdCBmYUhvdFR1YlBlcnNvbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdob3QtdHViLXBlcnNvbicsXG4gIGljb246IFs1MTIsIDUxMiwgW1wiaG90LXR1YlwiXSwgXCJmNTkzXCIsIFwiTTI3MiAyNGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNGwwIDUuMmMwIDM0IDE0LjQgNjYuNCAzOS43IDg5LjJsMTYuNCAxNC44YzE1LjIgMTMuNyAyMy44IDMzLjEgMjMuOCA1My41bDAgMTMuMmMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0bDAtMTMuMmMwLTM0LTE0LjQtNjYuNC0zOS43LTg5LjJMMjk1LjggODIuOEMyODAuNyA2OS4xIDI3MiA0OS43IDI3MiAyOS4ybDAtNS4yek0wIDMyMGwwIDE2TDAgNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0bDM4NCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMTI4YzAtMzUuMy0yOC43LTY0LTY0LTY0bC0xNzAuNyAwYy0xMy44IDAtMjcuMy00LjUtMzguNC0xMi44bC04NS4zLTY0QzEzNyAxNjYuNyAxMTYuOCAxNjAgOTYgMTYwYy01MyAwLTk2IDQzLTk2IDk2bDAgNjR6bTEyOCAxNmwwIDk2YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2bDAtOTZjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnptODAtMTZjOC44IDAgMTYgNy4yIDE2IDE2bDAgOTZjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZsMC05NmMwLTguOCA3LjItMTYgMTYtMTZ6bTExMiAxNmwwIDk2YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2bDAtOTZjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnptODAtMTZjOC44IDAgMTYgNy4yIDE2IDE2bDAgOTZjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZsMC05NmMwLTguOCA3LjItMTYgMTYtMTZ6TTM2MCAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNGwwIDUuMmMwIDM0IDE0LjQgNjYuNCAzOS43IDg5LjJsMTYuNCAxNC44YzE1LjIgMTMuNyAyMy44IDMzLjEgMjMuOCA1My41bDAgMTMuMmMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0bDAtMTMuMmMwLTM0LTE0LjQtNjYuNC0zOS43LTg5LjJMNDA3LjggODIuOEMzOTIuNyA2OS4xIDM4NCA0OS43IDM4NCAyOS4ybDAtNS4yYzAtMTMuMy0xMC43LTI0LTI0LTI0ek02NCAxMjhBNjQgNjQgMCAxIDAgNjQgMGE2NCA2NCAwIDEgMCAwIDEyOHpcIl1cbn07XG5jb25zdCBmYUhvdFR1YiA9IGZhSG90VHViUGVyc29uO1xuY29uc3QgZmFNYXBMb2NhdGlvbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtYXAtbG9jYXRpb24nLFxuICBpY29uOiBbNTc2LCA1MTIsIFtcIm1hcC1tYXJrZWRcIl0sIFwiZjU5ZlwiLCBcIk0zMDIuOCAzMTJDMzM0LjkgMjcxLjkgNDA4IDE3NC42IDQwOCAxMjBDNDA4IDUzLjcgMzU0LjMgMCAyODggMFMxNjggNTMuNyAxNjggMTIwYzAgNTQuNiA3My4xIDE1MS45IDEwNS4yIDE5MmM3LjcgOS42IDIyIDkuNiAyOS42IDB6TTQxNiA1MDNsMTQ0LjktNThjOS4xLTMuNiAxNS4xLTEyLjUgMTUuMS0yMi4zTDU3NiAxNTJjMC0xNy0xNy4xLTI4LjYtMzIuOS0yMi4zbC0xMTYgNDYuNGMtLjUgMS4yLTEgMi41LTEuNSAzLjdjLTIuOSA2LjgtNi4xIDEzLjctOS42IDIwLjZMNDE2IDUwM3pNMTUuMSAxODcuM0M2IDE5MSAwIDE5OS44IDAgMjA5LjZMMCA0ODAuNGMwIDE3IDE3LjEgMjguNiAzMi45IDIyLjNMMTYwIDQ1MS44bDAtMjUxLjRjLTMuNS02LjktNi43LTEzLjgtOS42LTIwLjZjLTUuNi0xMy4yLTEwLjQtMjcuNC0xMi44LTQxLjVsLTEyMi42IDQ5ek0zODQgMjU1Yy0yMC41IDMxLjMtNDIuMyA1OS42LTU2LjIgNzdjLTIwLjUgMjUuNi01OS4xIDI1LjYtNzkuNiAwYy0xMy45LTE3LjQtMzUuNy00NS43LTU2LjItNzdsMCAxOTQuNCAxOTIgNTQuOUwzODQgMjU1elwiXVxufTtcbmNvbnN0IGZhTWFwTWFya2VkID0gZmFNYXBMb2NhdGlvbjtcbmNvbnN0IGZhSG91c2VGbG9vZFdhdGVyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hvdXNlLWZsb29kLXdhdGVyJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJlNTBlXCIsIFwiTTMwNi44IDYuMUMyOTUuNi0yIDI4MC40LTIgMjY5LjIgNi4xbC0xNzYgMTI4Yy0xMS4yIDguMi0xNS45IDIyLjYtMTEuNiAzNS44Uzk4LjEgMTkyIDExMiAxOTJsMTYgMCAwIDczYzEuNyAxIDMuMyAyIDQuOSAzLjFjMTggMTIuNCA0MC4xIDIwLjMgNTkuMiAyMC4zYzIxLjEgMCA0Mi04LjUgNTkuMi0yMC4zYzIyLjEtMTUuNSA1MS42LTE1LjUgNzMuNyAwYzE4LjQgMTIuNyAzOS42IDIwLjMgNTkuMiAyMC4zYzE5IDAgNDEuMi03LjkgNTkuMi0yMC4zYzEuNS0xIDMtMiA0LjUtMi45bC0uMy03My4yIDE2LjYgMGMxMy45IDAgMjYuMS04LjkgMzAuNC0yMi4xcy0uNC0yNy42LTExLjYtMzUuOGwtMTc2LTEyOHpNMjY5LjUgMzA5LjlDMjQ3IDMyNS40IDIxOS41IDMzNiAxOTIgMzM2Yy0yNi45IDAtNTUuMy0xMC44LTc3LjQtMjYuMWMwIDAgMCAwIDAgMGMtMTEuOS04LjUtMjguMS03LjgtMzkuMiAxLjdjLTE0LjQgMTEuOS0zMi41IDIxLTUwLjYgMjUuMmMtMTcuMiA0LTI3LjkgMjEuMi0yMy45IDM4LjRzMjEuMiAyNy45IDM4LjQgMjMuOWMyNC41LTUuNyA0NC45LTE2LjUgNTguMi0yNUMxMjYuNSAzODkuNyAxNTkgNDAwIDE5MiA0MDBjMzEuOSAwIDYwLjYtOS45IDgwLjQtMTguOWM1LjgtMi43IDExLjEtNS4zIDE1LjYtNy43YzQuNSAyLjQgOS43IDUuMSAxNS42IDcuN2MxOS44IDkgNDguNSAxOC45IDgwLjQgMTguOWMzMyAwIDY1LjUtMTAuMyA5NC41LTI1LjhjMTMuNCA4LjQgMzMuNyAxOS4zIDU4LjIgMjVjMTcuMiA0IDM0LjQtNi43IDM4LjQtMjMuOXMtNi43LTM0LjQtMjMuOS0zOC40Yy0xOC4xLTQuMi0zNi4yLTEzLjMtNTAuNi0yNS4yYy0xMS4xLTkuNS0yNy4zLTEwLjEtMzkuMi0xLjdjMCAwIDAgMCAwIDBDNDM5LjQgMzI1LjIgNDEwLjkgMzM2IDM4NCAzMzZjLTI3LjUgMC01NS0xMC42LTc3LjUtMjYuMWMtMTEuMS03LjktMjUuOS03LjktMzcgMHpNMzg0IDQ0OGMtMjcuNSAwLTU1LTEwLjYtNzcuNS0yNi4xYy0xMS4xLTcuOS0yNS45LTcuOS0zNyAwQzI0NyA0MzcuNCAyMTkuNSA0NDggMTkyIDQ0OGMtMjYuOSAwLTU1LjMtMTAuOC03Ny40LTI2LjFjMCAwIDAgMCAwIDBjLTExLjktOC41LTI4LjEtNy44LTM5LjIgMS43Yy0xNC40IDExLjktMzIuNSAyMS01MC42IDI1LjJjLTE3LjIgNC0yNy45IDIxLjItMjMuOSAzOC40czIxLjIgMjcuOSAzOC40IDIzLjljMjQuNS01LjcgNDQuOS0xNi41IDU4LjItMjVDMTI2LjUgNTAxLjcgMTU5IDUxMiAxOTIgNTEyYzMxLjkgMCA2MC42LTkuOSA4MC40LTE4LjljNS44LTIuNyAxMS4xLTUuMyAxNS42LTcuN2M0LjUgMi40IDkuNyA1LjEgMTUuNiA3LjdjMTkuOCA5IDQ4LjUgMTguOSA4MC40IDE4LjljMzMgMCA2NS41LTEwLjMgOTQuNS0yNS44YzEzLjQgOC40IDMzLjcgMTkuMyA1OC4yIDI1YzE3LjIgNCAzNC40LTYuNyAzOC40LTIzLjlzLTYuNy0zNC40LTIzLjktMzguNGMtMTguMS00LjItMzYuMi0xMy4zLTUwLjYtMjUuMmMtMTEuMS05LjQtMjcuMy0xMC4xLTM5LjItMS43YzAgMCAwIDAgMCAwQzQzOS40IDQzNy4yIDQxMC45IDQ0OCAzODQgNDQ4elwiXVxufTtcbmNvbnN0IGZhVHJlZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0cmVlJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbMTI3Nzk0XSwgXCJmMWJiXCIsIFwiTTIxMC42IDUuOUw2MiAxNjkuNGMtMy45IDQuMi02IDkuOC02IDE1LjVDNTYgMTk3LjcgNjYuMyAyMDggNzkuMSAyMDhsMjQuOSAwTDMwLjYgMjgxLjRjLTQuMiA0LjItNi42IDEwLTYuNiAxNkMyNCAzMDkuOSAzNC4xIDMyMCA0Ni42IDMyMEw4MCAzMjAgNS40IDQwOS41QzEuOSA0MTMuNyAwIDQxOSAwIDQyNC41YzAgMTMgMTAuNSAyMy41IDIzLjUgMjMuNUwxOTIgNDQ4bDAgMzJjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTMyIDE2OC41IDBjMTMgMCAyMy41LTEwLjUgMjMuNS0yMy41YzAtNS41LTEuOS0xMC44LTUuNC0xNUwzNjggMzIwbDMzLjQgMGMxMi41IDAgMjIuNi0xMC4xIDIyLjYtMjIuNmMwLTYtMi40LTExLjgtNi42LTE2TDM0NCAyMDhsMjQuOSAwYzEyLjcgMCAyMy4xLTEwLjMgMjMuMS0yMy4xYzAtNS43LTIuMS0xMS4zLTYtMTUuNUwyMzcuNCA1LjlDMjM0IDIuMSAyMjkuMSAwIDIyNCAwcy0xMCAyLjEtMTMuNCA1Ljl6XCJdXG59O1xuY29uc3QgZmFCcmlkZ2VMb2NrID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JyaWRnZS1sb2NrJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlNGNjXCIsIFwiTTMyIDY0YzAtMTcuNyAxNC4zLTMyIDMyLTMybDUxMiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC00MCAwIDAgNjQtOCAwYy02MS45IDAtMTEyIDUwLjEtMTEyIDExMmwwIDI0LjZjLTkuOSA1LjgtMTguMiAxNC4xLTIzLjggMjQuMWMtMTcuNi0yMC00My40LTMyLjctNzIuMi0zMi43Yy01MyAwLTk2IDQzLTk2IDk2bDAgNjRjMCAxNy43LTE0LjMgMzItMzIgMzJsLTMyIDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtNjRjMC01My00My05Ni05Ni05NmwwLTEyOCA3MiAwIDAtNjRMNjQgOTZDNDYuMyA5NiAzMiA4MS43IDMyIDY0ek00MDggOTZsMCA2NCA4MCAwIDAtNjQtODAgMHptLTQ4IDY0bDAtNjQtODAgMCAwIDY0IDgwIDB6TTE1MiA5NmwwIDY0IDgwIDAgMC02NC04MCAwek01MjggMjQwYy0xNy43IDAtMzIgMTQuMy0zMiAzMmwwIDQ4IDY0IDAgMC00OGMwLTE3LjctMTQuMy0zMi0zMi0zMnptLTgwIDMyYzAtNDQuMiAzNS44LTgwIDgwLTgwczgwIDM1LjggODAgODBsMCA0OGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDEyOGMwIDE3LjctMTQuMyAzMi0zMiAzMmwtMTYwIDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtMTI4YzAtMTcuNyAxNC4zLTMyIDMyLTMybDAtNDh6XCJdXG59O1xuY29uc3QgZmFTYWNrRG9sbGFyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NhY2stZG9sbGFyJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI4MTc2XSwgXCJmODFkXCIsIFwiTTMyMCA5NkwxOTIgOTYgMTQ0LjYgMjQuOUMxMzcuNSAxNC4yIDE0NS4xIDAgMTU3LjkgMEwzNTQuMSAwYzEyLjggMCAyMC40IDE0LjIgMTMuMyAyNC45TDMyMCA5NnpNMTkyIDEyOGwxMjggMGMzLjggMi41IDguMSA1LjMgMTMgOC40QzM4OS43IDE3Mi43IDUxMiAyNTAuOSA1MTIgNDE2YzAgNTMtNDMgOTYtOTYgOTZMOTYgNTEyYy01MyAwLTk2LTQzLTk2LTk2QzAgMjUwLjkgMTIyLjMgMTcyLjcgMTc5IDEzNi40YzAgMCAwIDAgMCAwczAgMCAwIDBjNC44LTMuMSA5LjItNS45IDEzLTguNHptODQgODhjMC0xMS05LTIwLTIwLTIwcy0yMCA5LTIwIDIwbDAgMTRjLTcuNiAxLjctMTUuMiA0LjQtMjIuMiA4LjVjLTEzLjkgOC4zLTI1LjkgMjIuOC0yNS44IDQzLjljLjEgMjAuMyAxMiAzMy4xIDI0LjcgNDAuN2MxMSA2LjYgMjQuNyAxMC44IDM1LjYgMTRsMS43IC41YzEyLjYgMy44IDIxLjggNi44IDI4IDEwLjdjNS4xIDMuMiA1LjggNS40IDUuOSA4LjJjLjEgNS0xLjggOC01LjkgMTAuNWMtNSAzLjEtMTIuOSA1LTIxLjQgNC43Yy0xMS4xLS40LTIxLjUtMy45LTM1LjEtOC41Yy0yLjMtLjgtNC43LTEuNi03LjItMi40Yy0xMC41LTMuNS0yMS44IDIuMi0yNS4zIDEyLjZzMi4yIDIxLjggMTIuNiAyNS4zYzEuOSAuNiA0IDEuMyA2LjEgMi4xYzAgMCAwIDAgMCAwczAgMCAwIDBjOC4zIDIuOSAxNy45IDYuMiAyOC4yIDguNGwwIDE0LjZjMCAxMSA5IDIwIDIwIDIwczIwLTkgMjAtMjBsMC0xMy44YzgtMS43IDE2LTQuNSAyMy4yLTljMTQuMy04LjkgMjUuMS0yNC4xIDI0LjgtNDVjLS4zLTIwLjMtMTEuNy0zMy40LTI0LjYtNDEuNmMtMTEuNS03LjItMjUuOS0xMS42LTM3LjEtMTVjMCAwIDAgMCAwIDBsLS43LS4yYy0xMi44LTMuOS0yMS45LTYuNy0yOC4zLTEwLjVjLTUuMi0zLjEtNS4zLTQuOS01LjMtNi43YzAtMy43IDEuNC02LjUgNi4yLTkuM2M1LjQtMy4yIDEzLjYtNS4xIDIxLjUtNWM5LjYgLjEgMjAuMiAyLjIgMzEuMiA1LjJjMTAuNyAyLjggMjEuNi0zLjUgMjQuNS0xNC4ycy0zLjUtMjEuNi0xNC4yLTI0LjVjLTYuNS0xLjctMTMuNy0zLjQtMjEuMS00LjdsMC0xMy45elwiXVxufTtcbmNvbnN0IGZhUGVuVG9TcXVhcmUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGVuLXRvLXNxdWFyZScsXG4gIGljb246IFs1MTIsIDUxMiwgW1wiZWRpdFwiXSwgXCJmMDQ0XCIsIFwiTTQ3MS42IDIxLjdjLTIxLjktMjEuOS01Ny4zLTIxLjktNzkuMiAwTDM2Mi4zIDUxLjdsOTcuOSA5Ny45IDMwLjEtMzAuMWMyMS45LTIxLjkgMjEuOS01Ny4zIDAtNzkuMkw0NzEuNiAyMS43em0tMjk5LjIgMjIwYy02LjEgNi4xLTEwLjggMTMuNi0xMy41IDIxLjlsLTI5LjYgODguOGMtMi45IDguNi0uNiAxOC4xIDUuOCAyNC42czE1LjkgOC43IDI0LjYgNS44bDg4LjgtMjkuNmM4LjItMi43IDE1LjctNy40IDIxLjktMTMuNUw0MzcuNyAxNzIuMyAzMzkuNyA3NC4zIDE3Mi40IDI0MS43ek05NiA2NEM0MyA2NCAwIDEwNyAwIDE2MEwwIDQxNmMwIDUzIDQzIDk2IDk2IDk2bDI1NiAwYzUzIDAgOTYtNDMgOTYtOTZsMC05NmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMmwwIDk2YzAgMTcuNy0xNC4zIDMyLTMyIDMyTDk2IDQ0OGMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC0yNTZjMC0xNy43IDE0LjMtMzIgMzItMzJsOTYgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkw5NiA2NHpcIl1cbn07XG5jb25zdCBmYUVkaXQgPSBmYVBlblRvU3F1YXJlO1xuY29uc3QgZmFDYXJTaWRlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Nhci1zaWRlJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbMTI4NjYzXSwgXCJmNWU0XCIsIFwiTTE3MS4zIDk2TDIyNCA5NmwwIDk2LTExMi43IDAgMzAuNC03NS45QzE0Ni41IDEwNCAxNTguMiA5NiAxNzEuMyA5NnpNMjcyIDE5MmwwLTk2IDgxLjIgMGM5LjcgMCAxOC45IDQuNCAyNSAxMmw2Ny4yIDg0TDI3MiAxOTJ6bTI1Ni4yIDFMNDI4LjIgNjhjLTE4LjItMjIuOC00NS44LTM2LTc1LTM2TDE3MS4zIDMyYy0zOS4zIDAtNzQuNiAyMy45LTg5LjEgNjAuM0w0MC42IDE5Ni40QzE2LjggMjA1LjggMCAyMjguOSAwIDI1NkwwIDM2OGMwIDE3LjcgMTQuMyAzMiAzMiAzMmwzMy4zIDBjNy42IDQ1LjQgNDcuMSA4MCA5NC43IDgwczg3LjEtMzQuNiA5NC43LTgwbDEzMC43IDBjNy42IDQ1LjQgNDcuMSA4MCA5NC43IDgwczg3LjEtMzQuNiA5NC43LTgwbDMzLjMgMGMxNy43IDAgMzItMTQuMyAzMi0zMmwwLTQ4YzAtNjUuMi00OC44LTExOS0xMTEuOC0xMjd6TTQzNC43IDM2OGE0OCA0OCAwIDEgMSA5MC41IDMyIDQ4IDQ4IDAgMSAxIC05MC41LTMyek0xNjAgMzM2YTQ4IDQ4IDAgMSAxIDAgOTYgNDggNDggMCAxIDEgMC05NnpcIl1cbn07XG5jb25zdCBmYVNoYXJlTm9kZXMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc2hhcmUtbm9kZXMnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtcInNoYXJlLWFsdFwiXSwgXCJmMWUwXCIsIFwiTTM1MiAyMjRjNTMgMCA5Ni00MyA5Ni05NnMtNDMtOTYtOTYtOTZzLTk2IDQzLTk2IDk2YzAgNCAuMiA4IC43IDExLjlsLTk0LjEgNDdDMTQ1LjQgMTcwLjIgMTIxLjkgMTYwIDk2IDE2MGMtNTMgMC05NiA0My05NiA5NnM0MyA5NiA5NiA5NmMyNS45IDAgNDkuNC0xMC4yIDY2LjYtMjYuOWw5NC4xIDQ3Yy0uNSAzLjktLjcgNy44LS43IDExLjljMCA1MyA0MyA5NiA5NiA5NnM5Ni00MyA5Ni05NnMtNDMtOTYtOTYtOTZjLTI1LjkgMC00OS40IDEwLjItNjYuNiAyNi45bC05NC4xLTQ3Yy41LTMuOSAuNy03LjggLjctMTEuOXMtLjItOC0uNy0xMS45bDk0LjEtNDdDMzAyLjYgMjEzLjggMzI2LjEgMjI0IDM1MiAyMjR6XCJdXG59O1xuY29uc3QgZmFTaGFyZUFsdCA9IGZhU2hhcmVOb2RlcztcbmNvbnN0IGZhSGVhcnRDaXJjbGVNaW51cyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoZWFydC1jaXJjbGUtbWludXMnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImU0ZmZcIiwgXCJNNDcuNiAzMDAuNEwyMjguMyA0NjkuMWM3LjUgNyAxNy40IDEwLjkgMjcuNyAxMC45czIwLjItMy45IDI3LjctMTAuOWwyLjYtMi40QzI2Ny4yIDQzOC42IDI1NiA0MDQuNiAyNTYgMzY4YzAtOTcuMiA3OC44LTE3NiAxNzYtMTc2YzI4LjMgMCA1NSA2LjcgNzguNyAxOC41Yy45LTYuNSAxLjMtMTMgMS4zLTE5LjZsMC01LjhjMC02OS45LTUwLjUtMTI5LjUtMTE5LjQtMTQxQzM0NyAzNi41IDMwMC42IDUxLjQgMjY4IDg0TDI1NiA5NiAyNDQgODRjLTMyLjYtMzIuNi03OS00Ny41LTEyNC42LTM5LjlDNTAuNSA1NS42IDAgMTE1LjIgMCAxODUuMWwwIDUuOGMwIDQxLjUgMTcuMiA4MS4yIDQ3LjYgMTA5LjV6TTU3NiAzNjhhMTQ0IDE0NCAwIDEgMCAtMjg4IDAgMTQ0IDE0NCAwIDEgMCAyODggMHptLTY0IDBjMCA4LjgtNy4yIDE2LTE2IDE2bC0xMjggMGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmwxMjggMGM4LjggMCAxNiA3LjIgMTYgMTZ6XCJdXG59O1xuY29uc3QgZmFIb3VyZ2xhc3NIYWxmID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hvdXJnbGFzcy1oYWxmJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXCJob3VyZ2xhc3MtMlwiXSwgXCJmMjUyXCIsIFwiTTMyIDBDMTQuMyAwIDAgMTQuMyAwIDMyUzE0LjMgNjQgMzIgNjRsMCAxMWMwIDQyLjQgMTYuOSA4My4xIDQ2LjkgMTEzLjFMMTQ2LjcgMjU2IDc4LjkgMzIzLjlDNDguOSAzNTMuOSAzMiAzOTQuNiAzMiA0MzdsMCAxMWMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwzMiAwIDI1NiAwIDMyIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsMC0xMWMwLTQyLjQtMTYuOS04My4xLTQ2LjktMTEzLjFMMjM3LjMgMjU2bDY3LjktNjcuOWMzMC0zMCA0Ni45LTcwLjcgNDYuOS0xMTMuMWwwLTExYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyTDMyMCAwIDY0IDAgMzIgMHpNOTYgNzVsMC0xMSAxOTIgMCAwIDExYzAgMTktNS42IDM3LjQtMTYgNTNMMTEyIDEyOGMtMTAuMy0xNS42LTE2LTM0LTE2LTUzem0xNiAzMDljMy41LTUuMyA3LjYtMTAuMyAxMi4xLTE0LjlMMTkyIDMwMS4zbDY3LjkgNjcuOWM0LjYgNC42IDguNiA5LjYgMTIuMSAxNC45TDExMiAzODR6XCJdXG59O1xuY29uc3QgZmFIb3VyZ2xhc3MyID0gZmFIb3VyZ2xhc3NIYWxmO1xuY29uc3QgZmFNaWNyb3Njb3BlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21pY3Jvc2NvcGUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjgzMDBdLCBcImY2MTBcIiwgXCJNMTYwIDMyYzAtMTcuNyAxNC4zLTMyIDMyLTMybDMyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCAyMjRjMCAxNy43LTE0LjMgMzItMzIgMzJjMCAxNy43LTE0LjMgMzItMzIgMzJsLTMyIDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyYy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTIyNGMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNMzIgNDQ4bDI4OCAwYzcwLjcgMCAxMjgtNTcuMyAxMjgtMTI4cy01Ny4zLTEyOC0xMjgtMTI4bDAtNjRjMTA2IDAgMTkyIDg2IDE5MiAxOTJjMCA0OS4yLTE4LjUgOTQtNDguOSAxMjhsMTYuOSAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC0xNjAgMEwzMiA1MTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJ6bTgwLTY0bDE5MiAwYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2bC0xOTIgMGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnpcIl1cbn07XG5jb25zdCBmYVNpbmsgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc2luaycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZTA2ZFwiLCBcIk0yODggOTZjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnMxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJjMC01My00My05Ni05Ni05NnMtOTYgNDMtOTYgOTZsMCAxOTItNjQgMCAwLTI0YzAtMzAuOS0yNS4xLTU2LTU2LTU2bC00OCAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0bDQ4IDBjNC40IDAgOCAzLjYgOCA4bDAgMjQtODAgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwyMjQgMCAyMjQgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtODAgMCAwLTI0YzAtNC40IDMuNi04IDgtOGw1NiAwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0bC01NiAwYy0zMC45IDAtNTYgMjUuMS01NiA1NmwwIDI0LTY0IDAgMC0xOTJ6TTQ4MCA0MTZsMC0zMkwzMiAzODRsMCAzMmMwIDUzIDQzIDk2IDk2IDk2bDI1NiAwYzUzIDAgOTYtNDMgOTYtOTZ6XCJdXG59O1xuY29uc3QgZmFCYWdTaG9wcGluZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdiYWctc2hvcHBpbmcnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtcInNob3BwaW5nLWJhZ1wiXSwgXCJmMjkwXCIsIFwiTTE2MCAxMTJjMC0zNS4zIDI4LjctNjQgNjQtNjRzNjQgMjguNyA2NCA2NGwwIDQ4LTEyOCAwIDAtNDh6bS00OCA0OGwtNjQgMGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhMMCA0MTZjMCA1MyA0MyA5NiA5NiA5NmwyNTYgMGM1MyAwIDk2LTQzIDk2LTk2bDAtMjA4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4bC02NCAwIDAtNDhDMzM2IDUwLjEgMjg1LjkgMCAyMjQgMFMxMTIgNTAuMSAxMTIgMTEybDAgNDh6bTI0IDQ4YTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHptMTUyIDI0YTI0IDI0IDAgMSAxIDQ4IDAgMjQgMjQgMCAxIDEgLTQ4IDB6XCJdXG59O1xuY29uc3QgZmFTaG9wcGluZ0JhZyA9IGZhQmFnU2hvcHBpbmc7XG5jb25zdCBmYUFycm93RG93blpBID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Fycm93LWRvd24tei1hJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXCJzb3J0LWFscGhhLWRlc2NcIiwgXCJzb3J0LWFscGhhLWRvd24tYWx0XCJdLCBcImY4ODFcIiwgXCJNMTgzLjYgNDY5LjZDMTc3LjUgNDc2LjIgMTY5IDQ4MCAxNjAgNDgwcy0xNy41LTMuOC0yMy42LTEwLjRsLTg4LTk2Yy0xMS45LTEzLTExLjEtMzMuMyAyLTQ1LjJzMzMuMy0xMS4xIDQ1LjIgMkwxMjggMzY1LjcgMTI4IDY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJsMCAzMDEuNyAzMi40LTM1LjRjMTEuOS0xMyAzMi4yLTEzLjkgNDUuMi0yczEzLjkgMzIuMiAyIDQ1LjJsLTg4IDk2ek0zMjAgNjRjMC0xNy43IDE0LjMtMzIgMzItMzJsMTI4IDBjMTIuOSAwIDI0LjYgNy44IDI5LjYgMTkuOHMyLjIgMjUuNy02LjkgMzQuOUw0MjkuMyAxNjBsNTAuNyAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC0xMjggMGMtMTIuOSAwLTI0LjYtNy44LTI5LjYtMTkuOHMtMi4yLTI1LjcgNi45LTM0LjlMNDAyLjcgOTYgMzUyIDk2Yy0xNy43IDAtMzItMTQuMy0zMi0zMnptOTYgMTkyYzEyLjEgMCAyMy4yIDYuOCAyOC42IDE3LjdsNjQgMTI4IDE2IDMyYzcuOSAxNS44IDEuNSAzNS0xNC4zIDQyLjlzLTM1IDEuNS00Mi45LTE0LjNMNDYwLjIgNDQ4bC04OC40IDAtNy4yIDE0LjNjLTcuOSAxNS44LTI3LjEgMjIuMi00Mi45IDE0LjNzLTIyLjItMjcuMS0xNC4zLTQyLjlsMTYtMzIgNjQtMTI4YzUuNC0xMC44IDE2LjUtMTcuNyAyOC42LTE3Ljd6TTM5NS44IDQwMGw0MC40IDBMNDE2IDM1OS42IDM5NS44IDQwMHpcIl1cbn07XG5jb25zdCBmYVNvcnRBbHBoYURlc2MgPSBmYUFycm93RG93blpBO1xuY29uc3QgZmFTb3J0QWxwaGFEb3duQWx0ID0gZmFBcnJvd0Rvd25aQTtcbmNvbnN0IGZhTWl0dGVuID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21pdHRlbicsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjdiNVwiLCBcIk0zNTIgMzg0TDY0IDM4NCA1LjQgMTc4LjlDMS44IDE2Ni40IDAgMTUzLjQgMCAxNDAuM0MwIDYyLjggNjIuOCAwIDE0MC4zIDBsMy40IDBjNjYgMCAxMjMuNSA0NC45IDEzOS41IDEwOC45bDMxLjQgMTI1LjggMTcuNi0yMC4xQzM0NC44IDIwMC4yIDM2Mi45IDE5MiAzODIgMTkybDIuOCAwYzM0LjkgMCA2My4zIDI4LjMgNjMuMyA2My4zYzAgMTUuOS02IDMxLjItMTYuOCA0Mi45TDM1MiAzODR6TTMyIDQ0OGMwLTE3LjcgMTQuMy0zMiAzMi0zMmwyODggMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDMyYzAgMTcuNy0xNC4zIDMyLTMyIDMyTDY0IDUxMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC0zMnpcIl1cbn07XG5jb25zdCBmYVBlcnNvblJheXMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGVyc29uLXJheXMnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImU1NGRcIiwgXCJNMjA4IDQ4YTQ4IDQ4IDAgMSAxIDk2IDAgNDggNDggMCAxIDEgLTk2IDB6bTQwIDMwNGwwIDEyOGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTIyMy4xLTI4LjYgNDcuNWMtOS4xIDE1LjEtMjguOCAyMC00My45IDEwLjlzLTIwLTI4LjgtMTAuOS00My45bDU4LjMtOTdjMTcuNC0yOC45IDQ4LjYtNDYuNiA4Mi4zLTQ2LjZsMjkuNyAwYzMzLjcgMCA2NC45IDE3LjcgODIuMyA0Ni42bDU4LjMgOTdjOS4xIDE1LjEgNC4yIDM0LjgtMTAuOSA0My45cy0zNC44IDQuMi00My45LTEwLjlMMzI4IDI1Ni45IDMyOCA0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC0xMjgtMTYgMHpNNyA3QzE2LjQtMi4zIDMxLjYtMi4zIDQxIDdsODAgODBjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMEw3IDQxQy0yLjMgMzEuNi0yLjMgMTYuNCA3IDd6TTQ3MSA3YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOWwtODAgODBjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlMNDcxIDd6TTcgNTA1Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOWw4MC04MGM5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjlMNDEgNTA1Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHptNDY0IDBsLTgwLTgwYy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXMyNC42LTkuNCAzMy45IDBsODAgODBjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMHpcIl1cbn07XG5jb25zdCBmYVVzZXJzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3VzZXJzJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmMGMwXCIsIFwiTTE0NCAwYTgwIDgwIDAgMSAxIDAgMTYwQTgwIDgwIDAgMSAxIDE0NCAwek01MTIgMGE4MCA4MCAwIDEgMSAwIDE2MEE4MCA4MCAwIDEgMSA1MTIgMHpNMCAyOTguN0MwIDIzOS44IDQ3LjggMTkyIDEwNi43IDE5Mmw0Mi43IDBjMTUuOSAwIDMxIDMuNSA0NC42IDkuN2MtMS4zIDcuMi0xLjkgMTQuNy0xLjkgMjIuM2MwIDM4LjIgMTYuOCA3Mi41IDQzLjMgOTZjLS4yIDAtLjQgMC0uNyAwTDIxLjMgMzIwQzkuNiAzMjAgMCAzMTAuNCAwIDI5OC43ek00MDUuMyAzMjBjLS4yIDAtLjQgMC0uNyAwYzI2LjYtMjMuNSA0My4zLTU3LjggNDMuMy05NmMwLTcuNi0uNy0xNS0xLjktMjIuM2MxMy42LTYuMyAyOC43LTkuNyA0NC42LTkuN2w0Mi43IDBDNTkyLjIgMTkyIDY0MCAyMzkuOCA2NDAgMjk4LjdjMCAxMS44LTkuNiAyMS4zLTIxLjMgMjEuM2wtMjEzLjMgMHpNMjI0IDIyNGE5NiA5NiAwIDEgMSAxOTIgMCA5NiA5NiAwIDEgMSAtMTkyIDB6TTEyOCA0ODUuM0MxMjggNDExLjcgMTg3LjcgMzUyIDI2MS4zIDM1MmwxMTcuMyAwQzQ1Mi4zIDM1MiA1MTIgNDExLjcgNTEyIDQ4NS4zYzAgMTQuNy0xMS45IDI2LjctMjYuNyAyNi43bC0zMzAuNyAwYy0xNC43IDAtMjYuNy0xMS45LTI2LjctMjYuN3pcIl1cbn07XG5jb25zdCBmYUV5ZVNsYXNoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2V5ZS1zbGFzaCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjA3MFwiLCBcIk0zOC44IDUuMUMyOC40LTMuMSAxMy4zLTEuMiA1LjEgOS4yUy0xLjIgMzQuNyA5LjIgNDIuOWw1OTIgNDY0YzEwLjQgOC4yIDI1LjUgNi4zIDMzLjctNC4xczYuMy0yNS41LTQuMS0zMy43TDUyNS42IDM4Ni43YzM5LjYtNDAuNiA2Ni40LTg2LjEgNzkuOS0xMTguNGMzLjMtNy45IDMuMy0xNi43IDAtMjQuNmMtMTQuOS0zNS43LTQ2LjItODcuNy05My0xMzEuMUM0NjUuNSA2OC44IDQwMC44IDMyIDMyMCAzMmMtNjguMiAwLTEyNSAyNi4zLTE2OS4zIDYwLjhMMzguOCA1LjF6TTIyMy4xIDE0OS41QzI0OC42IDEyNi4yIDI4Mi43IDExMiAzMjAgMTEyYzc5LjUgMCAxNDQgNjQuNSAxNDQgMTQ0YzAgMjQuOS02LjMgNDguMy0xNy40IDY4LjdMNDA4IDI5NC41YzguNC0xOS4zIDEwLjYtNDEuNCA0LjgtNjMuM2MtMTEuMS00MS41LTQ3LjgtNjkuNC04OC42LTcxLjFjLTUuOC0uMi05LjIgNi4xLTcuNCAxMS43YzIuMSA2LjQgMy4zIDEzLjIgMy4zIDIwLjNjMCAxMC4yLTIuNCAxOS44LTYuNiAyOC4zbC05MC4zLTcwLjh6TTM3MyAzODkuOWMtMTYuNCA2LjUtMzQuMyAxMC4xLTUzIDEwLjFjLTc5LjUgMC0xNDQtNjQuNS0xNDQtMTQ0YzAtNi45IC41LTEzLjYgMS40LTIwLjJMODMuMSAxNjEuNUM2MC4zIDE5MS4yIDQ0IDIyMC44IDM0LjUgMjQzLjdjLTMuMyA3LjktMy4zIDE2LjcgMCAyNC42YzE0LjkgMzUuNyA0Ni4yIDg3LjcgOTMgMTMxLjFDMTc0LjUgNDQzLjIgMjM5LjIgNDgwIDMyMCA0ODBjNDcuOCAwIDg5LjktMTIuOSAxMjYuMi0zMi41TDM3MyAzODkuOXpcIl1cbn07XG5jb25zdCBmYUZsYXNrVmlhbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmbGFzay12aWFsJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlNGYzXCIsIFwiTTE3NSAzODkuNGMtOS44IDE2LTE1IDM0LjMtMTUgNTMuMWMtMTAgMy41LTIwLjggNS41LTMyIDUuNWMtNTMgMC05Ni00My05Ni05NkwzMiA2NEMxNC4zIDY0IDAgNDkuNyAwIDMyUzE0LjMgMCAzMiAwTDk2IDBsNjQgMCA2NCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybDAgMjQ1LjktNDkgNzkuNnpNOTYgNjRsMCA5NiA2NCAwIDAtOTZMOTYgNjR6TTM1MiAwTDQ4MCAwbDMyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsMCAxNTAuOUw2MjkuNyA0MDYuMmM2LjcgMTAuOSAxMC4zIDIzLjUgMTAuMyAzNi40YzAgMzguMy0zMS4xIDY5LjQtNjkuNCA2OS40bC0zMDkuMiAwYy0zOC4zIDAtNjkuNC0zMS4xLTY5LjQtNjkuNGMwLTEyLjggMy42LTI1LjQgMTAuMy0zNi40TDMyMCAyMTQuOSAzMjAgNjRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJsMzIgMHptMzIgNjRsMCAxNjBjMCA1LjktMS42IDExLjctNC43IDE2LjhMMzMwLjUgMzIwbDE3MSAwLTQ4LjgtNzkuMmMtMy4xLTUtNC43LTEwLjgtNC43LTE2LjhsMC0xNjAtNjQgMHpcIl1cbn07XG5jb25zdCBmYUhhbmQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGFuZCcsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyOTMwNiwgOTk5NSwgXCJoYW5kLXBhcGVyXCJdLCBcImYyNTZcIiwgXCJNMjg4IDMyYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMybDAgMjA4YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2bDAtMTc2YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMybDAgMjcyYzAgMS41IDAgMy4xIC4xIDQuNkw2Ny42IDI4M2MtMTYtMTUuMi00MS4zLTE0LjYtNTYuNiAxLjRzLTE0LjYgNDEuMyAxLjQgNTYuNkwxMjQuOCA0NDhjNDMuMSA0MS4xIDEwMC40IDY0IDE2MCA2NGwxOS4yIDBjOTcuMiAwIDE3Ni03OC44IDE3Ni0xNzZsMC0yMDhjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJsMCAxMTJjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZsMC0xNzZjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJsMCAxNzZjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZsMC0yMDh6XCJdXG59O1xuY29uc3QgZmFIYW5kUGFwZXIgPSBmYUhhbmQ7XG5jb25zdCBmYU9tID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ29tJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI4MzI5XSwgXCJmNjc5XCIsIFwiTTM3OS4zIDQuN2MtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBsLTE2IDE2Yy02LjIgNi4yLTYuMiAxNi40IDAgMjIuNmwxNiAxNmM2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMGwxNi0xNmM2LjItNi4yIDYuMi0xNi40IDAtMjIuNmwtMTYtMTZ6TTI4MSA2Ni43Yy0yLjItMS41LTQuOS0yLjUtNy43LTIuN2MtLjYgMC0xLjMtLjEtMS45IDBjLTMuOSAuMi03LjQgMS43LTEwLjEgNC4yYy0uOSAuOC0xLjYgMS43LTIuMyAyLjZjLTEuNyAyLjQtMi43IDUuMy0yLjkgOC41YzAgLjcgMCAxLjQgMCAyLjFjLjIgMi4yIC45IDQuMyAxLjkgNi4ybC4zIC42Yy4zIC42IC44IDEuNCAxLjQgMi40YzEuMiAyIDIuOSA0LjggNS4xIDguMmM0LjQgNi43IDExLjEgMTUuNSAyMCAyNC40QzMwMi40IDE0MS4xIDMzMC4zIDE2MCAzNjggMTYwYzMxLjIgMCA1Ni42LTEwLjQgNzMuOS0yMC4yYzguNy01IDE1LjYtOS45IDIwLjQtMTMuOGMyLjQtMS45IDQuMy0zLjYgNS43LTQuOWMuNy0uNiAxLjMtMS4yIDEuNy0xLjZsLjYtLjUgLjEtLjEgLjEtLjFzMCAwIDAgMHMwIDAgMCAwYzUuOS01LjggOS41LTEzLjkgOS41LTIyLjhjMC0xNy43LTE0LjMtMzItMzItMzJjLTguNyAwLTE2LjcgMy41LTIyLjQgOS4yYy0uMSAuMS0uMiAuMi0uNSAuNGMtLjUgLjUtMS41IDEuMy0yLjggMi40Yy0yLjcgMi4yLTYuOCA1LjItMTIuMSA4LjJDMzk5LjQgOTAuNCAzODQuOCA5NiAzNjggOTZjLTIwLjggMC00Mi40LTctNTkuNS0xNC42Yy04LjQtMy43LTE1LjQtNy41LTIwLjMtMTAuM2MtMi40LTEuNC00LjMtMi41LTUuNi0zLjNjLS42LS40LTEuMS0uNy0xLjQtLjlsLS4zLS4yek0xMTUuMiAxNjkuNmM4LTYgMTcuOS05LjYgMjguOC05LjZjMjYuNSAwIDQ4IDIxLjUgNDggNDhzLTIxLjUgNDgtNDggNDhsLTM0LjIgMGMtNy42IDAtMTMuOCA2LjItMTMuOCAxMy44YzAgMS41IC4yIDIuOSAuNyA0LjRsOCAyNGM0LjQgMTMuMSAxNi42IDIxLjkgMzAuNCAyMS45bDguOSAwIDE2IDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRzLTI4LjcgNjQtNjQgNjRjLTUwLjggMC04Mi43LTIxLjUtMTAyLjItNDIuOGMtOS45LTEwLjgtMTYuNi0yMS42LTIwLjktMjkuN2MtMi4xLTQtMy42LTcuMy00LjUtOS42Yy0uNS0xLjEtLjgtMi0xLTIuNWwtLjItLjVjLS4zLS45LS43LTEuOC0xLjEtMi42Yy0xLjItMi4yLTIuOC00LTQuNy01LjRjLTEuOS0xLjQtNC4xLTIuMy02LjUtMi44Yy0xLjQtLjMtMi45LS4zLTQuNC0uMmMtMi41IC4yLTQuOCAxLTYuOCAyLjNjLTEuMSAuNy0yLjIgMS41LTMuMSAyLjVjLTIuNCAyLjUtNC4xIDUuOC00LjUgOS41Yy0uMSAuNi0uMSAxLjEtLjEgMS43YzAgMCAwIDAgMCAwYzAgLjggLjEgMS43IC4yIDIuNWwwIC4xYzAgLjMgLjEgLjggLjIgMS4zYy4yIDEuMSAuNCAyLjcgLjggNC42Yy44IDMuOSAyIDkuNCAzLjkgMTUuOWMzLjggMTMgMTAuMyAzMC40IDIxLjMgNDhDNDguNyA0NzYuMiA4OS40IDUxMiAxNjAgNTEyYzcwLjcgMCAxMjgtNTcuMyAxMjgtMTI4YzAtMjMuMy02LjItNDUuMi0xNy4xLTY0bDIyLjYgMGMyNS41IDAgNDkuOS0xMC4xIDY3LjktMjguMWwyNi41LTI2LjVjNi02IDE0LjEtOS40IDIyLjYtOS40bDUuNSAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgOTZjMCAxNy43LTE0LjMgMzItMzIgMzJjLTI1LjcgMC00MS40LTEyLjUtNTEuMi0yNS42Yy01LTYuNy04LjQtMTMuNC0xMC41LTE4LjZjLTEuMS0yLjUtMS44LTQuNi0yLjItNmMtLjItLjctLjQtMS4yLS41LTEuNWwtLjEtLjJjLS4zLTEuMy0uOC0yLjYtMS41LTMuOGMtMS4xLTItMi42LTMuOC00LjQtNS4xYy0yLjctMi02LTMuMi05LjYtMy4ybC0uMiAwYy04IC4xLTE0LjYgNi4xLTE1LjYgMTMuOWMwIDAgMCAwIDAgMGMwIC4zLS4xIC42LS4yIDEuMWMtLjEgLjktLjMgMi4xLS40IDMuNmMtLjMgMy0uNiA3LjMtLjYgMTIuNGMwIDEwLjEgMS4xIDIzLjkgNS44IDM4LjFjNC44IDE0LjMgMTMuNCAyOS4zIDI4LjYgNDAuN0MzNjguNyA0NzMuMyAzODkuMyA0ODAgNDE2IDQ4MGM1MyAwIDk2LTQzIDk2LTk2bDAtOTZjMC01My00My05Ni05Ni05NmwtNS41IDBjLTI1LjUgMC00OS45IDEwLjEtNjcuOSAyOC4xbC0yNi41IDI2LjVjLTYgNi0xNC4xIDkuNC0yMi42IDkuNGwtNDguMyAwYzYuOS0xNC41IDEwLjgtMzAuOCAxMC44LTQ4YzAtNjEuOS01MC4xLTExMi0xMTItMTEyYy0yNS4yIDAtNDguNSA4LjMtNjcuMiAyMi40Yy0xNC4xIDEwLjYtMTcgMzAuNy02LjQgNDQuOHMzMC43IDE3IDQ0LjggNi40elwiXVxufTtcbmNvbnN0IGZhV29ybSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd3b3JtJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJlNTk5XCIsIFwiTTI1NiA5NmMwLTUzIDQzLTk2IDk2LTk2bDM4LjQgMEM0MzkuOSAwIDQ4MCA0MC4xIDQ4MCA4OS42bDAgODYuNCAwIDE2IDAgMTg0YzAgNzUuMS02MC45IDEzNi0xMzYgMTM2cy0xMzYtNjAuOS0xMzYtMTM2bDAtODBjMC0yMi4xLTE3LjktNDAtNDAtNDBzLTQwIDE3LjktNDAgNDBsMCAxNjhjMCAyNi41LTIxLjUgNDgtNDggNDhzLTQ4LTIxLjUtNDgtNDhsMC0xNjhjMC03NS4xIDYwLjktMTM2IDEzNi0xMzZzMTM2IDYwLjkgMTM2IDEzNmwwIDgwYzAgMjIuMSAxNy45IDQwIDQwIDQwczQwLTE3LjkgNDAtNDBsMC0xODQtMzIgMGMtNTMgMC05Ni00My05Ni05NnptMTQ0LThhMjQgMjQgMCAxIDAgLTQ4IDAgMjQgMjQgMCAxIDAgNDggMHpcIl1cbn07XG5jb25zdCBmYUhvdXNlQ2lyY2xlWG1hcmsgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaG91c2UtY2lyY2xlLXhtYXJrJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlNTBiXCIsIFwiTTMyMC43IDM1MmM4LjEtODkuNyA4My41LTE2MCAxNzUuMy0xNjBjOC45IDAgMTcuNiAuNyAyNi4xIDEuOUwzMDkuNSA3Yy02LTUtMTQtNy0yMS03cy0xNSAxLTIyIDhMMTAgMjMxLjVjLTcgNy0xMCAxNS0xMCAyNGMwIDE4IDE0IDMyLjEgMzIgMzIuMWwzMiAwIDAgNjkuN2MtLjEgLjktLjEgMS44LS4xIDIuOGwwIDExMmMwIDIyLjEgMTcuOSA0MCA0MCA0MGwxNiAwYzEuMiAwIDIuNC0uMSAzLjYtLjJjMS41IC4xIDMgLjIgNC41IC4ybDMxLjkgMCAyNCAwYzIyLjEgMCA0MC0xNy45IDQwLTQwbDAtMjQgMC02NGMwLTE3LjcgMTQuMy0zMiAzMi0zMmw2NCAwIC43IDB6TTQ5NiA1MTJhMTQ0IDE0NCAwIDEgMCAwLTI4OCAxNDQgMTQ0IDAgMSAwIDAgMjg4em01OS4zLTE4MC43TDUxOC42IDM2OGwzNi43IDM2LjdjNi4yIDYuMiA2LjIgMTYuNCAwIDIyLjZzLTE2LjQgNi4yLTIyLjYgMEw0OTYgMzkwLjZsLTM2LjcgMzYuN2MtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBzLTYuMi0xNi40IDAtMjIuNkw0NzMuNCAzNjhsLTM2LjctMzYuN2MtNi4yLTYuMi02LjItMTYuNCAwLTIyLjZzMTYuNC02LjIgMjIuNiAwTDQ5NiAzNDUuNGwzNi43LTM2LjdjNi4yLTYuMiAxNi40LTYuMiAyMi42IDBzNi4yIDE2LjQgMCAyMi42elwiXVxufTtcbmNvbnN0IGZhUGx1ZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwbHVnJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbMTI4MjY4XSwgXCJmMWU2XCIsIFwiTTk2IDBDNzguMyAwIDY0IDE0LjMgNjQgMzJsMCA5NiA2NCAwIDAtOTZjMC0xNy43LTE0LjMtMzItMzItMzJ6TTI4OCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMmwwIDk2IDY0IDAgMC05NmMwLTE3LjctMTQuMy0zMi0zMi0zMnpNMzIgMTYwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDAgMzJjMCA3Ny40IDU1IDE0MiAxMjggMTU2LjhsMCA2Ny4yYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC02Ny4yQzI5NyAzOTggMzUyIDMzMy40IDM1MiAyNTZsMC0zMmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkwzMiAxNjB6XCJdXG59O1xuY29uc3QgZmFDaGV2cm9uVXAgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2hldnJvbi11cCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjA3N1wiLCBcIk0yMzMuNCAxMDUuNGMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMGwxOTIgMTkyYzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zcy0zMi44IDEyLjUtNDUuMyAwTDI1NiAxNzMuMyA4Ni42IDM0Mi42Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMHMtMTIuNS0zMi44IDAtNDUuM2wxOTItMTkyelwiXVxufTtcbmNvbnN0IGZhSGFuZFNwb2NrID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hhbmQtc3BvY2snLFxuICBpY29uOiBbNTc2LCA1MTIsIFsxMjg0MDZdLCBcImYyNTlcIiwgXCJNMjQ2LjkgMjMuN0MyNDIuMyA2LjYgMjI0LjgtMy41IDIwNy43IDEuMXMtMjcuMiAyMi4xLTIyLjYgMzkuMkwyMzggMjM3LjhjMi41IDkuMi00LjUgMTguMi0xNCAxOC4yYy02LjQgMC0xMi00LjItMTMuOS0xMC4zTDE2Ni42IDEwMi43Yy01LjEtMTYuOS0yMy0yNi40LTM5LjktMjEuM3MtMjYuNCAyMy0yMS4zIDM5LjlsNjIuOCAyMDYuNGMyLjQgNy45LTcuMiAxMy44LTEzLjIgOC4xTDk5LjYgMjgzYy0xNi0xNS4yLTQxLjMtMTQuNi01Ni42IDEuNHMtMTQuNiA0MS4zIDEuNCA1Ni42TDE1Ni44IDQ0OGM0My4xIDQxLjEgMTAwLjQgNjQgMTYwIDY0bDEwLjkgMCA4LjIgMGMuMSAwIC4xLS4xIC4xLS4xcy4xLS4xIC4xLS4xYzU4LjMtMy41IDEwOC42LTQzLjIgMTI1LjMtOTkuN2w4MS4yLTI3NWM1LTE2LjktNC43LTM0LjctMjEuNi0zOS44cy0zNC43IDQuNy0zOS44IDIxLjZMNDQzLjUgMjQ3LjFjLTEuNiA1LjMtNi40IDguOS0xMiA4LjljLTcuOSAwLTEzLjgtNy4zLTEyLjItMTUuMWwzNi0xNzAuM2MzLjctMTcuMy03LjQtMzQuMy0yNC43LTM3LjlzLTM0LjMgNy40LTM3LjkgMjQuN0wzNTUuMSAyMzUuMWMtMi42IDEyLjItMTMuMyAyMC45LTI1LjggMjAuOWMtMTEuOSAwLTIyLjQtOC0yNS40LTE5LjVsLTU3LTIxMi44elwiXVxufTtcbmNvbnN0IGZhU3RvcHdhdGNoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3N0b3B3YXRjaCcsXG4gIGljb246IFs0NDgsIDUxMiwgWzkyMDFdLCBcImYyZjJcIiwgXCJNMTc2IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsMTYgMCAwIDM0LjRDOTIuMyAxMTMuOCAxNiAyMDAgMTYgMzA0YzAgMTE0LjkgOTMuMSAyMDggMjA4IDIwOHMyMDgtOTMuMSAyMDgtMjA4YzAtNDEuOC0xMi4zLTgwLjctMzMuNS0xMTMuMmwyNC4xLTI0LjFjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBMMzU1LjcgMTQzYy0yOC4xLTIzLTYyLjItMzguOC05OS43LTQ0LjZMMjU2IDY0bDE2IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJMMjI0IDAgMTc2IDB6bTcyIDE5MmwwIDEyOGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNGwwLTEyOGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0elwiXVxufTtcbmNvbnN0IGZhRmFjZUtpc3MgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmFjZS1raXNzJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI4NTM1LCBcImtpc3NcIl0sIFwiZjU5NlwiLCBcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnptNDguNy0xOTguM2M0LjMgNS4xIDcuMyAxMS40IDcuMyAxOC4zcy0zLjEgMTMuMi03LjMgMTguM2MtNC4zIDUuMi0xMC4xIDkuNy0xNi43IDEzLjRjLTIuNyAxLjUtNS43IDMtOC43IDQuM2MzLjEgMS4zIDYgMi43IDguNyA0LjNjNi42IDMuNyAxMi41IDguMiAxNi43IDEzLjRjNC4zIDUuMSA3LjMgMTEuNCA3LjMgMTguM3MtMy4xIDEzLjItNy4zIDE4LjNjLTQuMyA1LjItMTAuMSA5LjctMTYuNyAxMy40QzI3NC43IDQ0My4xIDI1Ny40IDQ0OCAyNDAgNDQ4Yy0zLjYgMC02LjgtMi41LTcuNy02cy42LTcuMiAzLjgtOWMwIDAgMCAwIDAgMHMwIDAgMCAwczAgMCAwIDBjMCAwIDAgMCAwIDBsLjItLjFjLjItLjEgLjUtLjMgLjktLjVjLjgtLjUgMi0xLjIgMy40LTIuMWMyLjgtMS45IDYuNS00LjUgMTAuMi03LjZjMy43LTMuMSA3LjItNi42IDkuNi0xMC4xYzIuNS0zLjUgMy41LTYuNCAzLjUtOC42cy0xLTUtMy41LTguNmMtMi41LTMuNS01LjktNi45LTkuNi0xMC4xYy0zLjctMy4xLTcuNC01LjctMTAuMi03LjZjLTEuNC0uOS0yLjYtMS42LTMuNC0yLjFjLS40LS4yLS43LS40LS45LS41bC0uMi0uMWMwIDAgMCAwIDAgMGMwIDAgMCAwIDAgMHMwIDAgMCAwYy0yLjUtMS40LTQuMS00LjEtNC4xLTdzMS42LTUuNiA0LjEtN2MwIDAgMCAwIDAgMHMwIDAgMCAwczAgMCAwIDBzMCAwIDAgMGMwIDAgMCAwIDAgMGwuMi0uMSAuMy0uMiAuNi0uNGMuOC0uNSAyLTEuMiAzLjQtMi4xYzIuOC0xLjkgNi41LTQuNSAxMC4yLTcuNmMzLjctMy4xIDcuMi02LjYgOS42LTEwLjFjMi41LTMuNSAzLjUtNi40IDMuNS04LjZzLTEtNS0zLjUtOC42Yy0yLjUtMy41LTUuOS02LjktOS42LTEwLjFjLTMuNy0zLjEtNy40LTUuNy0xMC4yLTcuNmMtMS40LS45LTIuNi0xLjYtMy40LTIuMWwtLjQtLjMtLjUtLjMtLjItLjFjMCAwIDAgMCAwIDBjMCAwIDAgMCAwIDBzMCAwIDAgMGMtMy4yLTEuOC00LjctNS41LTMuOC05czQuMS02IDcuNy02YzE3LjQgMCAzNC43IDQuOSA0Ny45IDEyLjNjNi42IDMuNyAxMi41IDguMiAxNi43IDEzLjR6TTE0NC40IDIwOGEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwem0xOTItMzJhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0elwiXVxufTtcbmNvbnN0IGZhS2lzcyA9IGZhRmFjZUtpc3M7XG5jb25zdCBmYUJyaWRnZUNpcmNsZVhtYXJrID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JyaWRnZS1jaXJjbGUteG1hcmsnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU0Y2JcIiwgXCJNNjQgMzJDNDYuMyAzMiAzMiA0Ni4zIDMyIDY0czE0LjMgMzIgMzIgMzJsNDAgMCAwIDY0LTcyIDAgMCAxMjhjNTMgMCA5NiA0MyA5NiA5NmwwIDY0YzAgMTcuNyAxNC4zIDMyIDMyIDMybDMyIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJsMC02NGMwLTUzIDQzLTk2IDk2LTk2YzYuMyAwIDEyLjQgLjYgMTguMyAxLjdDMzY3LjEgMjMxLjggNDI2LjkgMTkyIDQ5NiAxOTJjNDIuNSAwIDgxLjYgMTUuMSAxMTIgNDAuMmwwLTcyLjItNzIgMCAwLTY0IDQwIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJMNjQgMzJ6TTQ4OCA5NmwwIDY0LTgwIDAgMC02NCA4MCAwek0zNjAgOTZsMCA2NC04MCAwIDAtNjQgODAgMHpNMjMyIDk2bDAgNjQtODAgMCAwLTY0IDgwIDB6TTQ5NiA1MTJhMTQ0IDE0NCAwIDEgMCAwLTI4OCAxNDQgMTQ0IDAgMSAwIDAgMjg4em01OS4zLTE4MC43TDUxOC42IDM2OGwzNi43IDM2LjdjNi4yIDYuMiA2LjIgMTYuNCAwIDIyLjZzLTE2LjQgNi4yLTIyLjYgMEw0OTYgMzkwLjZsLTM2LjcgMzYuN2MtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBzLTYuMi0xNi40IDAtMjIuNkw0NzMuNCAzNjhsLTM2LjctMzYuN2MtNi4yLTYuMi02LjItMTYuNCAwLTIyLjZzMTYuNC02LjIgMjIuNiAwTDQ5NiAzNDUuNGwzNi43LTM2LjdjNi4yLTYuMiAxNi40LTYuMiAyMi42IDBzNi4yIDE2LjQgMCAyMi42elwiXVxufTtcbmNvbnN0IGZhRmFjZUdyaW5Ub25ndWUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmFjZS1ncmluLXRvbmd1ZScsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyODUzOSwgXCJncmluLXRvbmd1ZVwiXSwgXCJmNTg5XCIsIFwiTTAgMjU2QzAgMzY4LjkgNzMuMSA0NjQuNyAxNzQuNSA0OTguOEMxNjUuMyA0ODQgMTYwIDQ2Ni42IDE2MCA0NDhsMC00Ny4zYy0yNC0xNy41LTQzLjEtNDEuNC01NC44LTY5LjJjLTUtMTEuOCA3LTIyLjUgMTkuMy0xOC43YzM5LjcgMTIuMiA4NC41IDE5IDEzMS44IDE5czkyLjEtNi44IDEzMS44LTE5YzEyLjMtMy44IDI0LjMgNi45IDE5LjMgMTguN2MtMTEuOCAyOC0zMS4xIDUyLTU1LjQgNjkuNmwwIDQ2LjljMCAxOC42LTUuMyAzNi0xNC41IDUwLjhDNDM4LjkgNDY0LjcgNTEyIDM2OC45IDUxMiAyNTZDNTEyIDExNC42IDM5Ny40IDAgMjU2IDBTMCAxMTQuNiAwIDI1NnptMTc2LjQtODBhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0em0xMjggMzJhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHpNMzIwIDQ0OGwwLTQ1LjRjMC0xNC43LTExLjktMjYuNi0yNi42LTI2LjZsLTIgMGMtMTEuMyAwLTIxLjEgNy45LTIzLjYgMTguOWMtMi44IDEyLjYtMjAuOCAxMi42LTIzLjYgMGMtMi41LTExLjEtMTIuMy0xOC45LTIzLjYtMTguOWwtMiAwYy0xNC43IDAtMjYuNiAxMS45LTI2LjYgMjYuNmwwIDQ1LjRjMCAzNS4zIDI4LjcgNjQgNjQgNjRzNjQtMjguNyA2NC02NHpcIl1cbn07XG5jb25zdCBmYUdyaW5Ub25ndWUgPSBmYUZhY2VHcmluVG9uZ3VlO1xuY29uc3QgZmFDaGVzc0Jpc2hvcCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaGVzcy1iaXNob3AnLFxuICBpY29uOiBbMzIwLCA1MTIsIFs5ODIxXSwgXCJmNDNhXCIsIFwiTTEyOCAwQzExMC4zIDAgOTYgMTQuMyA5NiAzMmMwIDE2LjEgMTEuOSAyOS40IDI3LjQgMzEuN0M3OC40IDEwNi44IDggMTkwIDggMjg4YzAgNDcuNCAzMC44IDcyLjMgNTYgODQuN0w2NCA0MDBsMTkyIDAgMC0yNy4zYzI1LjItMTIuNSA1Ni0zNy40IDU2LTg0LjdjMC0zNy4zLTEwLjItNzIuNC0yNS4zLTEwNC4xbC05OS40IDk5LjRjLTYuMiA2LjItMTYuNCA2LjItMjIuNiAwcy02LjItMTYuNCAwLTIyLjZMMjcwLjggMTU0LjZjLTIzLjItMzguMS01MS44LTY5LjUtNzQuMi05MC45QzIxMi4xIDYxLjQgMjI0IDQ4LjEgMjI0IDMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyTDEyOCAwek00OCA0MzJMNi42IDQ3My40Yy00LjIgNC4yLTYuNiAxMC02LjYgMTZDMCA1MDEuOSAxMC4xIDUxMiAyMi42IDUxMmwyNzQuNyAwYzEyLjUgMCAyMi42LTEwLjEgMjIuNi0yMi42YzAtNi0yLjQtMTEuOC02LjYtMTZMMjcyIDQzMiA0OCA0MzJ6XCJdXG59O1xuY29uc3QgZmFGYWNlR3JpbldpbmsgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmFjZS1ncmluLXdpbmsnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtcImdyaW4td2lua1wiXSwgXCJmNThjXCIsIFwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0zODguMSAzMTIuOGMxMi4zLTMuOCAyNC4zIDYuOSAxOS4zIDE4LjdDMzgyLjQgMzkwLjYgMzI0LjIgNDMyIDI1Ni4zIDQzMnMtMTI2LjItNDEuNC0xNTEuMS0xMDAuNWMtNS0xMS44IDctMjIuNSAxOS4zLTE4LjdjMzkuNyAxMi4yIDg0LjUgMTkgMTMxLjggMTlzOTIuMS02LjggMTMxLjgtMTl6bS0xNi45LTc5LjJjLTE3LjYtMjMuNS01Mi44LTIzLjUtNzAuNCAwYy01LjMgNy4xLTE1LjMgOC41LTIyLjQgMy4ycy04LjUtMTUuMy0zLjItMjIuNGMzMC40LTQwLjUgOTEuMi00MC41IDEyMS42IDBjNS4zIDcuMSAzLjkgMTcuMS0zLjIgMjIuNHMtMTcuMSAzLjktMjIuNC0zLjJ6TTE3Ni40IDE3NmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJdXG59O1xuY29uc3QgZmFHcmluV2luayA9IGZhRmFjZUdyaW5XaW5rO1xuY29uc3QgZmFFYXJEZWFmID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Vhci1kZWFmJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXCJkZWFmXCIsIFwiZGVhZm5lc3NcIiwgXCJoYXJkLW9mLWhlYXJpbmdcIl0sIFwiZjJhNFwiLCBcIk01MDIuNiA1NC42bC00MCA0MGMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBzLTEyLjUtMzIuOCAwLTQ1LjNsNDAtNDBjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDBzMTIuNSAzMi44IDAgNDUuM3ptLTMyMCAzMjBsLTEyOCAxMjhjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwcy0xMi41LTMyLjggMC00NS4zbDEyOC0xMjhjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDBzMTIuNSAzMi44IDAgNDUuM3pNMjQwIDEyOGMtNTcuNiAwLTEwNS4xIDQzLjYtMTExLjMgOTkuNWMtMS45IDE3LjYtMTcuOCAzMC4yLTM1LjMgMjguM3MtMzAuMi0xNy44LTI4LjMtMzUuM0M3NC44IDEzMi41IDE0OS40IDY0IDI0MCA2NGM5Ny4yIDAgMTc2IDc4LjggMTc2IDE3NmMwIDQ2LTE3LjcgODcuOS00Ni42IDExOS4zYy0xMiAxMy0xNy40IDI0LjgtMTcuNCAzNC43bDAgNi4xYzAgNjEuOS01MC4xIDExMi0xMTIgMTEyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4bDAtNi4xYzAtMzIuOSAxNy40LTU5LjYgMzQuNC03OGMxOC40LTIwIDI5LjYtNDYuNiAyOS42LTc1LjljMC02MS45LTUwLjEtMTEyLTExMi0xMTJ6bTAgODBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyYzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0YzAtNDQuMiAzNS44LTgwIDgwLTgwczgwIDM1LjggODAgODBjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRjMC0xNy43LTE0LjMtMzItMzItMzJ6XCJdXG59O1xuY29uc3QgZmFEZWFmID0gZmFFYXJEZWFmO1xuY29uc3QgZmFEZWFmbmVzcyA9IGZhRWFyRGVhZjtcbmNvbnN0IGZhSGFyZE9mSGVhcmluZyA9IGZhRWFyRGVhZjtcbmNvbnN0IGZhUm9hZENpcmNsZUNoZWNrID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3JvYWQtY2lyY2xlLWNoZWNrJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlNTY0XCIsIFwiTTIxMy4yIDMyTDI4OCAzMmwwIDY0YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC02NCA3NC44IDBjMjcuMSAwIDUxLjMgMTcuMSA2MC4zIDQyLjZsNDIuNyAxMjAuNmMtMTAuOS0yLjEtMjIuMi0zLjItMzMuOC0zLjJjLTU5LjUgMC0xMTIuMSAyOS42LTE0NCA3NC44bDAtNDIuOGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMmwwIDY0YzAgMTcuNyAxNC4zIDMyIDMyIDMyYzIuMyAwIDQuNi0uMyA2LjgtLjdjLTQuNSAxNS41LTYuOCAzMS44LTYuOCA0OC43YzAgNS40IC4yIDEwLjcgLjcgMTZsLS43IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMybDAgNjRMODYuNiA0ODBDNTYuNSA0ODAgMzIgNDU1LjUgMzIgNDI1LjRjMC02LjIgMS4xLTEyLjQgMy4xLTE4LjJMMTUyLjkgNzQuNkMxNjIgNDkuMSAxODYuMSAzMiAyMTMuMiAzMnpNMzUyIDM2OGExNDQgMTQ0IDAgMSAxIDI4OCAwIDE0NCAxNDQgMCAxIDEgLTI4OCAwem0yMTEuMy00My4zYy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMEw0ODAgMzg1LjRsLTI4LjctMjguN2MtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBzLTYuMiAxNi40IDAgMjIuNmw0MCA0MGM2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMGw3Mi03MmM2LjItNi4yIDYuMi0xNi40IDAtMjIuNnpcIl1cbn07XG5jb25zdCBmYURpY2VGaXZlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2RpY2UtZml2ZScsXG4gIGljb246IFs0NDgsIDUxMiwgWzk4NjBdLCBcImY1MjNcIiwgXCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NkwwIDQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NGwzMjAgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTMyMGMwLTM1LjMtMjguNy02NC02NC02NEw2NCAzMnptNjQgOTZhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0ek05NiAzNTJhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHpNMjI0IDIyNGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6bTY0LTY0YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bTMyIDE2MGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJdXG59O1xuY29uc3QgZmFTcXVhcmVSc3MgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3F1YXJlLXJzcycsXG4gIGljb246IFs0NDgsIDUxMiwgW1wicnNzLXNxdWFyZVwiXSwgXCJmMTQzXCIsIFwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZMMCA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzIwIDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0zMjBjMC0zNS4zLTI4LjctNjQtNjQtNjRMNjQgMzJ6TTk2IDEzNmMwLTEzLjMgMTAuNy0yNCAyNC0yNGMxMzcgMCAyNDggMTExIDI0OCAyNDhjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRjMC0xMTAuNS04OS41LTIwMC0yMDAtMjAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHptMCA5NmMwLTEzLjMgMTAuNy0yNCAyNC0yNGM4My45IDAgMTUyIDY4LjEgMTUyIDE1MmMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNGMwLTU3LjQtNDYuNi0xMDQtMTA0LTEwNGMtMTMuMyAwLTI0LTEwLjctMjQtMjR6bTAgMTIwYTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6XCJdXG59O1xuY29uc3QgZmFSc3NTcXVhcmUgPSBmYVNxdWFyZVJzcztcbmNvbnN0IGZhTGFuZE1pbmVPbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdsYW5kLW1pbmUtb24nLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU1MWJcIiwgXCJNMzQ0IDI0bDAgMTQ0YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0bDAtMTQ0YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjR6TTE5MiAzMjBjMC0xNy43IDE0LjMtMzIgMzItMzJsMTkyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCAzMi0yNTYgMCAwLTMyem0tNzcuMyA5MC41YzguMS0xNi4zIDI0LjgtMjYuNSA0Mi45LTI2LjVsMzI0LjcgMGMxOC4yIDAgMzQuOCAxMC4zIDQyLjkgMjYuNWwyNy42IDU1LjJDNTYzLjUgNDg3IDU0OCA1MTIgNTI0LjIgNTEybC00MDguNCAwYy0yMy44IDAtMzkuMy0yNS0yOC42LTQ2LjNsMjcuNi01NS4yek0zNi4zIDEzOC4zYzcuNS0xMC45IDIyLjUtMTMuNiAzMy40LTYuMWwxMDQgNzJjMTAuOSA3LjUgMTMuNiAyMi41IDYuMSAzMy40cy0yMi41IDEzLjYtMzMuNCA2LjFsLTEwNC03MmMtMTAuOS03LjUtMTMuNi0yMi41LTYuMS0zMy40em01MzQuMS02LjFjMTAuOS03LjUgMjUuOC00LjggMzMuNCA2LjFzNC44IDI1LjgtNi4xIDMzLjRsLTEwNCA3MmMtMTAuOSA3LjUtMjUuOCA0LjgtMzMuNC02LjFzLTQuOC0yNS44IDYuMS0zMy40bDEwNC03MnpcIl1cbn07XG5jb25zdCBmYUlDdXJzb3IgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaS1jdXJzb3InLFxuICBpY29uOiBbMjU2LCA1MTIsIFtdLCBcImYyNDZcIiwgXCJNLjEgMjkuM0MtMS40IDQ3IDExLjcgNjIuNCAyOS4zIDYzLjlsOCAuN0M3MC41IDY3LjMgOTYgOTUgOTYgMTI4LjNMOTYgMjI0bC0zMiAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDMyIDAgMCA5NS43YzAgMzMuMy0yNS41IDYxLTU4LjcgNjMuOGwtOCAuN0MxMS43IDQ0OS42LTEuNCA0NjUgLjEgNDgyLjdzMTYuOSAzMC43IDM0LjUgMjkuMmw4LS43YzM0LjEtMi44IDY0LjItMTguOSA4NS40LTQyLjljMjEuMiAyNCA1MS4yIDQwIDg1LjQgNDIuOWw4IC43YzE3LjYgMS41IDMzLjEtMTEuNiAzNC41LTI5LjJzLTExLjYtMzMuMS0yOS4yLTM0LjVsLTgtLjdDMTg1LjUgNDQ0LjcgMTYwIDQxNyAxNjAgMzgzLjdsMC05NS43IDMyIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTMyIDAgMC05NS43YzAtMzMuMyAyNS41LTYxIDU4LjctNjMuOGw4LS43YzE3LjYtMS41IDMwLjctMTYuOSAyOS4yLTM0LjVTMjM5LTEuNCAyMjEuMyAuMWwtOCAuN0MxNzkuMiAzLjYgMTQ5LjIgMTkuNyAxMjggNDMuN2MtMjEuMi0yNC01MS4yLTQwLTg1LjQtNDIuOWwtOC0uN0MxNy0xLjQgMS42IDExLjcgLjEgMjkuM3pcIl1cbn07XG5jb25zdCBmYVN0YW1wID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3N0YW1wJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNWJmXCIsIFwiTTMxMiAyMDEuOGMwLTE3LjQgOS4yLTMzLjIgMTkuOS00N0MzNDQuNSAxMzguNSAzNTIgMTE4LjEgMzUyIDk2YzAtNTMtNDMtOTYtOTYtOTZzLTk2IDQzLTk2IDk2YzAgMjIuMSA3LjUgNDIuNSAyMC4xIDU4LjhjMTAuNyAxMy44IDE5LjkgMjkuNiAxOS45IDQ3YzAgMjkuOS0yNC4zIDU0LjItNTQuMiA1NC4yTDExMiAyNTZDNTAuMSAyNTYgMCAzMDYuMSAwIDM2OGMwIDIwLjkgMTMuNCAzOC43IDMyIDQ1LjNMMzIgNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4bDM1MiAwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4bDAtNTAuN2MxOC42LTYuNiAzMi0yNC40IDMyLTQ1LjNjMC02MS45LTUwLjEtMTEyLTExMi0xMTJsLTMzLjggMGMtMjkuOSAwLTU0LjItMjQuMy01NC4yLTU0LjJ6TTQxNiA0MTZsMCAzMkw5NiA0NDhsMC0zMiAzMjAgMHpcIl1cbn07XG5jb25zdCBmYVN0YWlycyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzdGFpcnMnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImUyODlcIiwgXCJNMzg0IDY0YzAtMTcuNyAxNC4zLTMyIDMyLTMybDEyOCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC05NiAwIDAgOTZjMCAxNy43LTE0LjMgMzItMzIgMzJsLTk2IDAgMCA5NmMwIDE3LjctMTQuMyAzMi0zMiAzMmwtOTYgMCAwIDk2YzAgMTcuNy0xNC4zIDMyLTMyIDMyTDMyIDQ4MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmw5NiAwIDAtOTZjMC0xNy43IDE0LjMtMzIgMzItMzJsOTYgMCAwLTk2YzAtMTcuNyAxNC4zLTMyIDMyLTMybDk2IDAgMC05NnpcIl1cbn07XG5jb25zdCBmYUkgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaScsXG4gIGljb246IFszMjAsIDUxMiwgWzEwNV0sIFwiNDlcIiwgXCJNMzIgMzJDMTQuMyAzMiAwIDQ2LjMgMCA2NFMxNC4zIDk2IDMyIDk2bDk2IDAgMCAzMjAtOTYgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwyNTYgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtOTYgMCAwLTMyMCA5NiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyTDE2MCAzMiAzMiAzMnpcIl1cbn07XG5jb25zdCBmYUhyeXZuaWFTaWduID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hyeXZuaWEtc2lnbicsXG4gIGljb246IFszODQsIDUxMiwgWzgzNzIsIFwiaHJ5dm5pYVwiXSwgXCJmNmYyXCIsIFwiTTEyMS45IDExNi4yQzEzOC4zIDEwMy4xIDE1OC43IDk2IDE3OS42IDk2TDIyMyA5NmMyNy4xIDAgNDkgMjEuOSA0OSA0OWMwIDExLjUtNCAyMi40LTExLjEgMzFMMzIgMTc2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDEyMy41IDAtNTAuNiAyOC45Yy0xLjcgMS0zLjQgMi01LjEgMy4xTDMyIDI3MmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwyMC4zIDBjLTIuOCA5LjktNC4zIDIwLjQtNC4zIDMxYzAgNjIuNCA1MC42IDExMyAxMTMgMTEzbDQzLjQgMGMzNS41IDAgNzAtMTIuMSA5Ny43LTM0LjNMMzA4IDQ0MWMxMy44LTExIDE2LTMxLjIgNS00NXMtMzEuMi0xNi00NS01bC01LjkgNC43Yy0xNi40IDEzLjEtMzYuNyAyMC4yLTU3LjcgMjAuMkwxNjEgNDE2Yy0yNy4xIDAtNDktMjEuOS00OS00OWMwLTExLjUgNC0yMi40IDExLjEtMzFMMzUyIDMzNmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtMTIzLjUgMCA1MC42LTI4LjljMS43LTEgMy40LTIgNS4xLTMuMWw2Ny44IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTIwLjMgMGMyLjgtMTAgNC4zLTIwLjQgNC4zLTMxYzAtNjIuNC01MC42LTExMy0xMTMtMTEzbC00My40IDBjLTM1LjUgMC03MCAxMi4xLTk3LjcgMzQuM0w3NiA3MWMtMTMuOCAxMS0xNiAzMS4yLTUgNDVzMzEuMiAxNiA0NSA1bDUuOS00Ljd6XCJdXG59O1xuY29uc3QgZmFIcnl2bmlhID0gZmFIcnl2bmlhU2lnbjtcbmNvbnN0IGZhUGlsbHMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGlsbHMnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImY0ODRcIiwgXCJNMTEyIDk2Yy0yNi41IDAtNDggMjEuNS00OCA0OGwwIDExMiA5NiAwIDAtMTEyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek0wIDE0NEMwIDgyLjEgNTAuMSAzMiAxMTIgMzJzMTEyIDUwLjEgMTEyIDExMmwwIDIyNGMwIDYxLjktNTAuMSAxMTItMTEyIDExMlMwIDQyOS45IDAgMzY4TDAgMTQ0ek01NTQuOSAzOTkuNGMtNy4xIDEyLjMtMjMuNyAxMy4xLTMzLjggMy4xTDMzMy41IDIxNC45Yy0xMC0xMC05LjMtMjYuNyAzLjEtMzMuOEMzNjAgMTY3LjcgMzg3LjEgMTYwIDQxNiAxNjBjODguNCAwIDE2MCA3MS42IDE2MCAxNjBjMCAyOC45LTcuNyA1Ni0yMS4xIDc5LjR6bS01OS41IDU5LjVDNDcyIDQ3Mi4zIDQ0NC45IDQ4MCA0MTYgNDgwYy04OC40IDAtMTYwLTcxLjYtMTYwLTE2MGMwLTI4LjkgNy43LTU2IDIxLjEtNzkuNGM3LjEtMTIuMyAyMy43LTEzLjEgMzMuOC0zLjFMNDk4LjUgNDI1LjFjMTAgMTAgOS4zIDI2LjctMy4xIDMzLjh6XCJdXG59O1xuY29uc3QgZmFGYWNlR3JpbldpZGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmFjZS1ncmluLXdpZGUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjg1MTUsIFwiZ3Jpbi1hbHRcIl0sIFwiZjU4MVwiLCBcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMzg4LjEgMzEyLjhjMTIuMy0zLjggMjQuMyA2LjkgMTkuMyAxOC43QzM4Mi40IDM5MC42IDMyNC4yIDQzMiAyNTYuMyA0MzJzLTEyNi4yLTQxLjQtMTUxLjEtMTAwLjVjLTUtMTEuOCA3LTIyLjUgMTkuMy0xOC43YzM5LjcgMTIuMiA4NC41IDE5IDEzMS44IDE5czkyLjEtNi44IDEzMS44LTE5ek0yMDggMTkyYzAgMzUuMy0xNC4zIDY0LTMyIDY0cy0zMi0yOC43LTMyLTY0czE0LjMtNjQgMzItNjRzMzIgMjguNyAzMiA2NHptMTI4IDY0Yy0xNy43IDAtMzItMjguNy0zMi02NHMxNC4zLTY0IDMyLTY0czMyIDI4LjcgMzIgNjRzLTE0LjMgNjQtMzIgNjR6XCJdXG59O1xuY29uc3QgZmFHcmluQWx0ID0gZmFGYWNlR3JpbldpZGU7XG5jb25zdCBmYVRvb3RoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3Rvb3RoJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbMTI5NDYzXSwgXCJmNWM5XCIsIFwiTTE4Ni4xIDUyLjFDMTY5LjMgMzkuMSAxNDguNyAzMiAxMjcuNSAzMkM3NC43IDMyIDMyIDc0LjcgMzIgMTI3LjVsMCA2LjJjMCAxNS44IDMuNyAzMS4zIDEwLjcgNDUuNWwyMy41IDQ3LjFjNC41IDguOSA3LjYgMTguNCA5LjQgMjguMmwzNi43IDIwNS44YzIgMTEuMiAxMS42IDE5LjQgMjIuOSAxOS44czIxLjQtNy40IDI0LTE4LjRsMjguOS0xMjEuM0MxOTIuMiAzMjMuNyAyMDcgMzEyIDIyNCAzMTJzMzEuOCAxMS43IDM1LjggMjguM2wyOC45IDEyMS4zYzIuNiAxMS4xIDEyLjcgMTguOCAyNCAxOC40czIwLjktOC42IDIyLjktMTkuOGwzNi43LTIwNS44YzEuOC05LjggNC45LTE5LjMgOS40LTI4LjJsMjMuNS00Ny4xYzcuMS0xNC4xIDEwLjctMjkuNyAxMC43LTQ1LjVsMC0yLjFjMC01NS00NC42LTk5LjYtOTkuNi05OS42Yy0yNC4xIDAtNDcuNCA4LjgtNjUuNiAyNC42bC0zLjIgMi44IDE5LjUgMTUuMmM3IDUuNCA4LjIgMTUuNSAyLjggMjIuNXMtMTUuNSA4LjItMjIuNSAyLjhsLTI0LjQtMTktMzctMjguOHpcIl1cbn07XG5jb25zdCBmYVYgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndicsXG4gIGljb246IFszODQsIDUxMiwgWzExOF0sIFwiNTZcIiwgXCJNMTkuNyAzNC41YzE2LjMtNi44IDM1IC45IDQxLjggMTcuMkwxOTIgMzY0LjggMzIyLjUgNTEuN2M2LjgtMTYuMyAyNS41LTI0IDQxLjgtMTcuMnMyNCAyNS41IDE3LjIgNDEuOGwtMTYwIDM4NGMtNSAxMS45LTE2LjYgMTkuNy0yOS41IDE5LjdzLTI0LjYtNy44LTI5LjUtMTkuN0wyLjUgNzYuM2MtNi44LTE2LjMgLjktMzUgMTcuMi00MS44elwiXVxufTtcbmNvbnN0IGZhQmFuZ2xhZGVzaGlUYWthU2lnbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdiYW5nbGFkZXNoaS10YWthLXNpZ24nLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImUyZTZcIiwgXCJNMzYgMzIuM0MxOC40IDMwLjEgMi40IDQyLjUgLjIgNjBTMTAuNSA5My42IDI4IDk1LjhsNy45IDFjMTYgMiAyOCAxNS42IDI4IDMxLjhMNjQgMTYwbC0zMiAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDMyIDAgMCAxNjBjMCA1MyA0MyA5NiA5NiA5NmwzMiAwYzEwNiAwIDE5Mi04NiAxOTItMTkybDAtMzJjMC01My00My05Ni05Ni05NmwtMTYgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwxNiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgMzJjMCA3MC43LTU3LjMgMTI4LTEyOCAxMjhsLTMyIDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtMTYwIDMyIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTMyIDAgMC0zMS41YzAtNDguNC0zNi4xLTg5LjMtODQuMS05NS4zbC03LjktMXpcIl1cbn07XG5jb25zdCBmYUJpY3ljbGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYmljeWNsZScsXG4gIGljb246IFs2NDAsIDUxMiwgWzEyODY5MF0sIFwiZjIwNlwiLCBcIk0zMTIgMzJjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRsMjUuNyAwIDM0LjYgNjQtMTQ5LjQgMC0yNy40LTM4QzE5MSA5OS43IDE4My43IDk2IDE3NiA5NmwtNTYgMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGw0My43IDAgMjIuMSAzMC43LTI2LjYgNTMuMWMtMTAtMi41LTIwLjUtMy44LTMxLjItMy44QzU3LjMgMjI0IDAgMjgxLjMgMCAzNTJzNTcuMyAxMjggMTI4IDEyOGM2NS4zIDAgMTE5LjEtNDguOSAxMjctMTEybDQ5IDBjOC41IDAgMTYuMy00LjUgMjAuNy0xMS44bDg0LjgtMTQzLjUgMjEuNyA0MC4xQzQwMi40IDI3Ni4zIDM4NCAzMTIgMzg0IDM1MmMwIDcwLjcgNTcuMyAxMjggMTI4IDEyOHMxMjgtNTcuMyAxMjgtMTI4cy01Ny4zLTEyOC0xMjgtMTI4Yy0xMy41IDAtMjYuNSAyLjEtMzguNyA2TDM3NS40IDQ4LjhDMzY5LjggMzguNCAzNTkgMzIgMzQ3LjIgMzJMMzEyIDMyek00NTguNiAzMDMuN2wzMi4zIDU5LjdjNi4zIDExLjcgMjAuOSAxNiAzMi41IDkuN3MxNi0yMC45IDkuNy0zMi41bC0zMi4zLTU5LjdjMy42LS42IDcuNC0uOSAxMS4yLS45YzM5LjggMCA3MiAzMi4yIDcyIDcycy0zMi4yIDcyLTcyIDcycy03Mi0zMi4yLTcyLTcyYzAtMTguNiA3LTM1LjUgMTguNi00OC4zek0xMzMuMiAzNjhsNjUgMGMtNy4zIDMyLjEtMzYgNTYtNzAuMiA1NmMtMzkuOCAwLTcyLTMyLjItNzItNzJzMzIuMi03MiA3Mi03MmMxLjcgMCAzLjQgLjEgNS4xIC4ybC0yNC4yIDQ4LjVjLTkgMTguMSA0LjEgMzkuNCAyNC4zIDM5LjR6bTMzLjctNDhsNTAuNy0xMDEuMyA3Mi45IDEwMS4yLS4xIC4xLTEyMy41IDB6bTkwLjYtMTI4bDEwOC41IDBMMzE3IDI3NC44IDI1Ny40IDE5MnpcIl1cbn07XG5jb25zdCBmYVN0YWZmU25ha2UgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3RhZmYtc25ha2UnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtcInJvZC1hc2NsZXBpdXNcIiwgXCJyb2Qtc25ha2VcIiwgXCJzdGFmZi1hZXNjdWxhcGl1c1wiXSwgXCJlNTc5XCIsIFwiTTIyMi42IDQzLjJsLS4xIDQuOEwyODggNDhjNTMgMCA5NiA0MyA5NiA5NnMtNDMgOTYtOTYgOTZsLTQwIDAgMC04MCA0MCAwYzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2bC00MCAwLTI4IDAtNC41IDE0NCA0MC41IDBjNTMgMCA5NiA0MyA5NiA5NnMtNDMgOTYtOTYgOTZsLTE2IDAgMC04MCAxNiAwYzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2bC00MyAwLTMuMSA5OS41TDIwOC41IDQ5NWwwIDFjLS4zIDguOS03LjYgMTYtMTYuNSAxNnMtMTYuMi03LjEtMTYuNS0xNmwwLTEtMS0zMUwxMzYgNDY0Yy0yMi4xIDAtNDAtMTcuOS00MC00MHMxNy45LTQwIDQwLTQwbDM2IDAtMS0zMi0xOSAwYy01MyAwLTk2LTQzLTk2LTk2YzAtNDcuNiAzNC42LTg3LjEgODAtOTQuN2wwIDk0LjdjMCA4LjggNy4yIDE2IDE2IDE2bDE2LjUgMEwxNjQgMTI4bC0yOCAwLTEzLjQgMGMtOSAxOC45LTI4LjMgMzItNTAuNiAzMmwtMTYgMGMtMzAuOSAwLTU2LTI1LjEtNTYtNTZTMjUuMSA0OCA1NiA0OGw4IDAgOCAwIDg5LjUgMC0uMS00LjhMMTYxIDMyYzAtLjcgMC0xLjMgMC0xLjljLjUtMTYuNiAxNC4xLTMwIDMxLTMwczMwLjUgMTMuNCAzMSAzMGMwIC42IDAgMS4zIDAgMS45bC0uNCAxMS4yek02NCAxMTJhMTYgMTYgMCAxIDAgMC0zMiAxNiAxNiAwIDEgMCAwIDMyelwiXVxufTtcbmNvbnN0IGZhUm9kQXNjbGVwaXVzID0gZmFTdGFmZlNuYWtlO1xuY29uc3QgZmFSb2RTbmFrZSA9IGZhU3RhZmZTbmFrZTtcbmNvbnN0IGZhU3RhZmZBZXNjdWxhcGl1cyA9IGZhU3RhZmZTbmFrZTtcbmNvbnN0IGZhSGVhZFNpZGVDb3VnaFNsYXNoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hlYWQtc2lkZS1jb3VnaC1zbGFzaCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTA2MlwiLCBcIk00NDggMzI1LjhsNDQgMzQuNWM4LjEgMS40IDE0LjggNi44IDE4IDE0LjFMNTUyLjkgNDA4YzEwLjYgLjQgMTkuNSA3LjYgMjIuMiAxNy40bDM5LjEgMzAuNmMuNiAwIDEuMi0uMSAxLjgtLjFjMTEuMSAwIDIwLjQgNy41IDIzLjIgMTcuOGwtMy45IDBjNi4yIDguNSA2LjQgMjAuNC0uNCAyOWMtOC4yIDEwLjQtMjMuMyAxMi4zLTMzLjcgNC4xTDkuMiA0Mi45Qy0xLjIgMzQuNy0zLjEgMTkuNiA1LjEgOS4yUzI4LjQtMy4xIDM4LjggNS4xTDg5LjYgNDQuOUMxMjcgMTYuNyAxNzMuNSAwIDIyNCAwbDI0IDBjOTUuMiAwIDE4MS4yIDY5LjMgMTk3LjMgMTYwLjJjMi4zIDEzIDYuOCAyNS43IDE1LjEgMzZsNDIgNTIuNmM2LjIgNy44IDkuNiAxNy40IDkuNiAyNy40YzAgMjQuMi0xOS42IDQzLjgtNDMuOCA0My44TDQ0OCAzMjBzMCAwIDAgMGwwIDUuOHpNMCAyMjQuMmMwLTM4LjcgOS44LTc1LjEgMjcuMS0xMDYuOUwzNDEuOCAzNjUuM2wtMi41IC4zYy0xMSAxLjQtMTkuMiAxMC43LTE5LjIgMjEuOGMwIDExLjYgOSAyMS4yIDIwLjYgMjEuOWw2MiAzLjkgNDMgMzMuOUM0MzkuMyA0NjYuMiA0MjEuMiA0ODAgNDAwIDQ4MGwtODAgMCAwIDhjMCAxMy4zLTEwLjcgMjQtMjQgMjRsLTQwIDBzMCAwIDAgMEw5NiA1MTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtNzIuN2MwLTE2LjctNi45LTMyLjUtMTcuMS00NS44QzE2LjYgMzIyLjQgMCAyNzQuMSAwIDIyNC4yek02MTYgMzYwYTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHptLTY0LTQ4YTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHptNDAtMjRhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHpcIl1cbn07XG5jb25zdCBmYVRydWNrTWVkaWNhbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0cnVjay1tZWRpY2FsJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbMTI4NjU3LCBcImFtYnVsYW5jZVwiXSwgXCJmMGY5XCIsIFwiTTAgNDhDMCAyMS41IDIxLjUgMCA0OCAwTDM2OCAwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4bDAgNDggNTAuNyAwYzE3IDAgMzMuMyA2LjcgNDUuMyAxOC43TDU4OS4zIDE5MmMxMiAxMiAxOC43IDI4LjMgMTguNyA0NS4zbDAgMTguNyAwIDMyIDAgNjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTMyIDBjMCA1My00MyA5Ni05NiA5NnMtOTYtNDMtOTYtOTZsLTEyOCAwYzAgNTMtNDMgOTYtOTYgOTZzLTk2LTQzLTk2LTk2bC0xNiAwYy0yNi41IDAtNDgtMjEuNS00OC00OEwwIDQ4ek00MTYgMjU2bDEyOCAwIDAtMTguN0w0NjYuNyAxNjAgNDE2IDE2MGwwIDk2ek0xNjAgNDY0YTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnptMzY4LTQ4YTQ4IDQ4IDAgMSAwIC05NiAwIDQ4IDQ4IDAgMSAwIDk2IDB6TTE3NiA4MGwwIDQ4LTQ4IDBjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDMyYzAgOC44IDcuMiAxNiAxNiAxNmw0OCAwIDAgNDhjMCA4LjggNy4yIDE2IDE2IDE2bDMyIDBjOC44IDAgMTYtNy4yIDE2LTE2bDAtNDggNDggMGM4LjggMCAxNi03LjIgMTYtMTZsMC0zMmMwLTguOC03LjItMTYtMTYtMTZsLTQ4IDAgMC00OGMwLTguOC03LjItMTYtMTYtMTZsLTMyIDBjLTguOCAwLTE2IDcuMi0xNiAxNnpcIl1cbn07XG5jb25zdCBmYUFtYnVsYW5jZSA9IGZhVHJ1Y2tNZWRpY2FsO1xuY29uc3QgZmFXaGVhdEF3bkNpcmNsZUV4Y2xhbWF0aW9uID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3doZWF0LWF3bi1jaXJjbGUtZXhjbGFtYXRpb24nLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU1OThcIiwgXCJNNTA1IDQxYzkuNC05LjQgOS40LTI0LjYgMC0zMy45cy0yNC42LTkuNC0zMy45IDBMMzgzIDk1Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOXMyNC42IDkuNCAzMy45IDBsODgtODh6TTMwNS41IDI3LjNjLTYuMi02LjItMTYuNC02LjItMjIuNiAwTDI3MS41IDM4LjZjLTM3LjUgMzcuNS0zNy41IDk4LjMgMCAxMzUuOGwxMC40IDEwLjQtMzAuNSAzMC41Yy0zLjQtMjcuMy0xNS41LTUzLjgtMzYuNS03NC44bC0xMS4zLTExLjNjLTYuMi02LjItMTYuNC02LjItMjIuNiAwbC0xMS4zIDExLjNjLTM3LjUgMzcuNS0zNy41IDk4LjMgMCAxMzUuOGwxMC40IDEwLjQtMzAuNSAzMC41Yy0zLjQtMjcuMy0xNS41LTUzLjgtMzYuNS03NC44TDEwMS44IDIzMWMtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBMNjcuOSAyNDIuM2MtMzcuNSAzNy41LTM3LjUgOTguMyAwIDEzNS44bDEwLjQgMTAuNEw5LjQgNDU3LjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBsNjguOS02OC45IDEyLjIgMTIuMmMzNy41IDM3LjUgOTguMyAzNy41IDEzNS44IDBsMTEuMy0xMS4zYzYuMi02LjIgNi4yLTE2LjQgMC0yMi42bC0xMS4zLTExLjNjLTIxLjgtMjEuOC00OS42LTM0LjEtNzguMS0zNi45bDMxLjktMzEuOSAxMi4yIDEyLjJjMjIuNSAyMi41IDUzLjMgMzEuNSA4Mi40IDI3YzAtMSAwLTIuMSAwLTMuMWMwLTMzLjEgOS4xLTY0LjEgMjUtOTAuNmMtMTUuNS04LjctMzIuNS0xMy44LTQ5LjgtMTUuNWwzMS45LTMxLjkgMTIuMiAxMi4yYzYgNiAxMi42IDExLjEgMTkuNyAxNS4yYzI3LjUtMzQgNjcuMy01Ny41IDExMi42LTYzLjhjLTQuMS0zLjgtOC40LTcuMy0xMi45LTEwLjVMNTA1IDEzN2M5LjQtOS40IDkuNC0yNC42IDAtMzMuOXMtMjQuNi05LjQtMzMuOSAwbC01OS40IDU5LjRjLTIwLjYtNC40LTQyLTMuNy02Mi4zIDIuMWM2LjEtMjEuMyA2LjYtNDMuOCAxLjQtNjUuM0w0MDkgNDFjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlzLTI0LjYtOS40LTMzLjkgMEwzMjkuMSA1Mi45Yy0zLjctNS03LjgtOS44LTEyLjQtMTQuM0wzMDUuNSAyNy4zek00OTYgNTEyYTE0NCAxNDQgMCAxIDAgMC0yODggMTQ0IDE0NCAwIDEgMCAwIDI4OHptMC05NmEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6bTAtMTQ0YzguOCAwIDE2IDcuMiAxNiAxNmwwIDgwYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2bDAtODBjMC04LjggNy4yLTE2IDE2LTE2elwiXVxufTtcbmNvbnN0IGZhU25vd21hbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzbm93bWFuJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbOTczMSwgOTkyNF0sIFwiZjdkMFwiLCBcIk0zNDEuMSAxNDAuNmMtMiAzLjktMS42IDguNiAxLjIgMTJjNyA4LjUgMTIuOSAxOC4xIDE3LjIgMjguNEw0MDggMTYwLjJsMC00MC4yYzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjRsMCAxOS42IDIyLjUtOS43YzEyLjItNS4yIDI2LjMgLjQgMzEuNSAxMi42cy0uNCAyNi4zLTEyLjYgMzEuNWwtNTYgMjQtNzMuNiAzMS41Yy0uNSA5LjUtMi4xIDE4LjYtNC44IDI3LjNjLTEuMiAzLjgtLjEgOCAyLjggMTAuOEMzOTYuNyAyOTYuOSA0MTYgMzM4LjIgNDE2IDM4NGMwIDQ0LjctMTguMyA4NS00Ny44IDExNC4xYy05LjkgOS43LTIzLjcgMTMuOS0zNy41IDEzLjlsLTE0OS4zIDBjLTEzLjkgMC0yNy43LTQuMi0zNy41LTEzLjlDMTE0LjMgNDY5IDk2IDQyOC43IDk2IDM4NGMwLTQ1LjggMTkuMy04Ny4xIDUwLjEtMTE2LjNjMi45LTIuOCA0LTYuOSAyLjgtMTAuOGMtMi43LTguNy00LjMtMTcuOS00LjgtMjcuM0w3MC41IDE5OC4xbC01Ni0yNEMyLjQgMTY4LjgtMy4zIDE1NC43IDEuOSAxNDIuNXMxOS4zLTE3LjggMzEuNS0xMi42TDU2IDEzOS42IDU2IDEyMGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0bDAgNDAuMkwxNTIuNiAxODFjNC4zLTEwLjMgMTAuMS0xOS45IDE3LjItMjguNGMyLjgtMy40IDMuMy04LjEgMS4yLTEyQzE2NCAxMjcuMiAxNjAgMTEyLjEgMTYwIDk2YzAtNTMgNDMtOTYgOTYtOTZzOTYgNDMgOTYgOTZjMCAxNi4xLTQgMzEuMi0xMC45IDQ0LjZ6TTIyNCA5NmExNiAxNiAwIDEgMCAwLTMyIDE2IDE2IDAgMSAwIDAgMzJ6bTQ4IDEyOGExNiAxNiAwIDEgMCAtMzIgMCAxNiAxNiAwIDEgMCAzMiAwem0tMTYgODBhMTYgMTYgMCAxIDAgMC0zMiAxNiAxNiAwIDEgMCAwIDMyem0xNiA0OGExNiAxNiAwIDEgMCAtMzIgMCAxNiAxNiAwIDEgMCAzMiAwek0yODggOTZhMTYgMTYgMCAxIDAgMC0zMiAxNiAxNiAwIDEgMCAwIDMyem0tNDggMjRsMCAzLjJjMCAzLjIgLjggNi4zIDIuMyA5bDkgMTYuOWMuOSAxLjcgMi43IDIuOCA0LjcgMi44czMuOC0xLjEgNC43LTIuOGw5LTE2LjljMS41LTIuOCAyLjMtNS45IDIuMy05bDAtMy4yYzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2elwiXVxufTtcbmNvbnN0IGZhTW9ydGFyUGVzdGxlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21vcnRhci1wZXN0bGUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY1YTdcIiwgXCJNNTA0LjMgMTEuMUM0OTMuMy0xLjYgNDc0LjUtMy43IDQ2MSA2LjJMMjUyLjMgMTYwbDE0NC45IDBMNTAyLjYgNTQuNmMxMS44LTExLjggMTIuNi0zMC44IDEuNi00My41ek0zMiAxOTJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJjMCA4Mi41IDQzLjQgMTQ3LjcgMTIzLjkgMTc2LjJjLTExLjEgMTMuOS0xOS40IDMwLjMtMjMuOSA0OC4xQzEyNy42IDQ5Ny40IDE0Mi4zIDUxMiAxNjAgNTEybDE5MiAwYzE3LjcgMCAzMi40LTE0LjYgMjguMS0zMS43Yy00LjUtMTcuOC0xMi44LTM0LjEtMjMuOS00OC4xQzQzNi42IDQwMy43IDQ4MCAzMzguNSA0ODAgMjU2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyTDMyIDE5MnpcIl1cbn07XG5jb25zdCBmYVJvYWRCYXJyaWVyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3JvYWQtYmFycmllcicsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTU2MlwiLCBcIk0zMiAzMkMxNC4zIDMyIDAgNDYuMyAwIDY0TDAgNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0xODEuN0wxNDkuMiA5NiA2NCA5NmwwLTMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyek00MDUuMiA5NmwtNzQuMyAwLTUuNCAxMC43TDIzNC44IDI4OGw3NC4zIDAgNS40LTEwLjdMNDA1LjIgOTZ6TTM2Mi44IDI4OGw3NC4zIDAgNS40LTEwLjdMNTMzLjIgOTZsLTc0LjMgMC01LjQgMTAuN0wzNjIuOCAyODh6TTIwMi44IDk2bC01LjQgMTAuN0wxMDYuOCAyODhsNzQuMyAwIDUuNC0xMC43TDI3Ny4yIDk2bC03NC4zIDB6bTI4OCAxOTJsODUuMiAwIDAgMTYwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0zODRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJsMCA1My43TDQ5MC44IDI4OHpcIl1cbn07XG5jb25zdCBmYVNjaG9vbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzY2hvb2wnLFxuICBpY29uOiBbNjQwLCA1MTIsIFsxMjc5NzldLCBcImY1NDlcIiwgXCJNMzM3LjggNS40QzMyNy0xLjggMzEzLTEuOCAzMDIuMiA1LjRMMTY2LjMgOTYgNDggOTZDMjEuNSA5NiAwIDExNy41IDAgMTQ0TDAgNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4bDIwOCAwIDAtOTZjMC0zNS4zIDI4LjctNjQgNjQtNjRzNjQgMjguNyA2NCA2NGwwIDk2IDIwOCAwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4bDAtMzIwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4TDQ3My43IDk2IDMzNy44IDUuNHpNOTYgMTkybDMyIDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgNjRjMCA4LjgtNy4yIDE2LTE2IDE2bC0zMiAwYy04LjggMC0xNi03LjItMTYtMTZsMC02NGMwLTguOCA3LjItMTYgMTYtMTZ6bTQwMCAxNmMwLTguOCA3LjItMTYgMTYtMTZsMzIgMGM4LjggMCAxNiA3LjIgMTYgMTZsMCA2NGMwIDguOC03LjIgMTYtMTYgMTZsLTMyIDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTY0ek05NiAzMjBsMzIgMGM4LjggMCAxNiA3LjIgMTYgMTZsMCA2NGMwIDguOC03LjIgMTYtMTYgMTZsLTMyIDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTY0YzAtOC44IDcuMi0xNiAxNi0xNnptNDAwIDE2YzAtOC44IDcuMi0xNiAxNi0xNmwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDY0YzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtNjR6TTIzMiAxNzZhODggODggMCAxIDEgMTc2IDAgODggODggMCAxIDEgLTE3NiAwem04OC00OGMtOC44IDAtMTYgNy4yLTE2IDE2bDAgMzJjMCA4LjggNy4yIDE2IDE2IDE2bDMyIDBjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZsLTE2IDAgMC0xNmMwLTguOC03LjItMTYtMTYtMTZ6XCJdXG59O1xuY29uc3QgZmFJZ2xvbyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdpZ2xvbycsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjdhZVwiLCBcIk0zMjAgMzMuOEwzMjAgMTYwIDQ4LjUgMTYwQzEwMC4yIDgyLjggMTg4LjEgMzIgMjg4IDMyYzEwLjggMCAyMS41IC42IDMyIDEuOHpNMzUyIDE2MGwwLTEyMC45QzQyNC45IDU1LjcgNDg3LjIgOTkuOCA1MjcuNSAxNjBMMzUyIDE2MHpNMjkuOSAxOTJMOTYgMTkybDAgMTI4TDAgMzIwYzAtNDYgMTAuOC04OS40IDI5LjktMTI4ek0xOTIgMzIwbC02NCAwIDAtMTI4IDMyMCAwIDAgMTI4LTY0IDAgMCAzMiAxOTIgMCAwIDgwYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4bC0xNzYgMCAwLTEyOGMwLTM1LjMtMjguNy02NC02NC02NHMtNjQgMjguNy02NCA2NGwwIDEyOEw0OCA0ODBjLTI2LjUgMC00OC0yMS41LTQ4LTQ4bDAtODAgMTkyIDAgMC0zMnptMjg4IDBsMC0xMjggNjYuMSAwYzE5LjIgMzguNiAyOS45IDgyIDI5LjkgMTI4bC05NiAwelwiXVxufTtcbmNvbnN0IGZhSm9pbnQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnam9pbnQnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY1OTVcIiwgXCJNNDQ4IDMyYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMybDAgMTFjMCA1NS4yIDIxLjkgMTA4LjEgNjAuOSAxNDcuMWwyMSAyMWM5IDkgMTQuMSAyMS4yIDE0LjEgMzMuOWwwIDExYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0xMWMwLTI5LjctMTEuOC01OC4yLTMyLjgtNzkuMmwtMjEtMjFDNDYzLjIgMTE3LjggNDQ4IDgxLjIgNDQ4IDQzbDAtMTF6TTU3NiAyNTZjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTExYzAtNTUuMi0yMS45LTEwOC4xLTYwLjktMTQ3LjFsLTIxLTIxYy05LTktMTQuMS0yMS4yLTE0LjEtMzMuOWwwLTExYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMybDAgMTFjMCAyOS43IDExLjggNTguMiAzMi44IDc5LjJsMjEgMjFjMjcgMjcgNDIuMiA2My42IDQyLjIgMTAxLjhsMCAxMXpNMjI5LjggMzYwYy00LjctMi4zLTEwLTIuNy0xNS4yLTJjLTM3LjggNS42LTc1LjIgMTQuMy0xMDYuOSAyMi44QzgxLjMgMzg4IDU4LjMgMzk1LjEgNDIgNDAwLjRjLTguMiAyLjctMTQuNyA0LjktMTkuMiA2LjVjLTIuMyAuOC00IDEuNC01LjIgMS44bC0xLjMgLjVDNi44IDQxMi41IDAgNDIxLjQgMCA0MzJzNi44IDE5LjUgMTYuMyAyMi43bDEuMyAuNWMxLjIgLjQgMyAxLjEgNS4yIDEuOGM0LjUgMS42IDExIDMuOCAxOS4yIDYuNWMxNi4zIDUuNCAzOS4yIDEyLjUgNjUuNyAxOS42QzE2MC4zIDQ5Ny4zIDIyOC44IDUxMiAyODggNTEybDY3LjMgMGM0LjEgMCA2LjMtNS4xIDMuNi04LjNMMjU2LjUgMzgwLjhjLTcuNC04LjktMTYuNS0xNS45LTI2LjctMjAuOHpNNDQ1IDUxMmwxOSAwIDUxLjMgMGM0LjEgMCA2LjMtNS4xIDMuNi04LjNMNDE2LjUgMzgwLjhDNDAxLjMgMzYyLjUgMzc4LjggMzUyIDM1NSAzNTJsLTE5IDAtNDggMGMtMS4xIDAtMi4zIDAtMy40IDBjLTQuMSAwLTYuMiA1LjEtMy41IDguM0wzODMuNSA0ODMuMkMzOTguNyA1MDEuNSA0MjEuMiA1MTIgNDQ1IDUxMnptLTMuOS0xNTEuN0w1NDMuNSA0ODMuMmMxNC42IDE3LjUgMzUuOSAyNy45IDU4LjYgMjguN2MyMS4xLTEuMSAzNy45LTE4LjYgMzcuOS0zOS45bDAtODBjMC0yMi4xLTE3LjktNDAtNDAtNDBsLTE1NS4zIDBjLTQuMSAwLTYuMyA1LjEtMy42IDguM3pcIl1cbn07XG5jb25zdCBmYUFuZ2xlUmlnaHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYW5nbGUtcmlnaHQnLFxuICBpY29uOiBbMzIwLCA1MTIsIFs4MjUwXSwgXCJmMTA1XCIsIFwiTTI3OC42IDIzMy40YzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zbC0xNjAgMTYwYy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMHMtMTIuNS0zMi44IDAtNDUuM0wyMTAuNyAyNTYgNzMuNCAxMTguNmMtMTIuNS0xMi41LTEyLjUtMzIuOCAwLTQ1LjNzMzIuOC0xMi41IDQ1LjMgMGwxNjAgMTYwelwiXVxufTtcbmNvbnN0IGZhSG9yc2UgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaG9yc2UnLFxuICBpY29uOiBbNTc2LCA1MTIsIFsxMjgwMTRdLCBcImY2ZjBcIiwgXCJNNDQ4IDIzOC4xbDAtNzguMSAxNiAwIDkuOCAxOS42YzEyLjUgMjUuMSA0Mi4yIDM2LjQgNjguMyAyNmMyMC41LTguMiAzMy45LTI4IDMzLjktNTAuMUw1NzYgODBjMC0xOS4xLTguNC0zNi4zLTIxLjctNDhsNS43IDBjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZMNDgwIDAgNDQ4IDBDMzc3LjMgMCAzMjAgNTcuMyAzMjAgMTI4bC05NiAwLTIwLjggMC01NC40IDBjLTMwLjcgMC01Ny42IDE2LjMtNzIuNSA0MC44QzMzLjIgMTc0LjUgMCAyMTEuNCAwIDI1NmwwIDU2YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRsMC01NmMwLTEzLjQgNi42LTI1LjIgMTYuNy0zMi41YzEuNiAxMyA2LjMgMjUuNCAxMy42IDM2LjRsMjguMiA0Mi40YzguMyAxMi40IDYuNCAyOC43LTEuMiA0MS42Yy0xNi41IDI4LTIwLjYgNjIuMi0xMCA5My45bDE3LjUgNTIuNGM0LjQgMTMuMSAxNi42IDIxLjkgMzAuNCAyMS45bDMzLjcgMGMyMS44IDAgMzcuMy0yMS40IDMwLjQtNDIuMWwtMjAuOC02Mi41Yy0yLjEtNi40LS41LTEzLjQgNC4zLTE4LjJsMTIuNy0xMi43YzEzLjItMTMuMiAyMC42LTMxLjEgMjAuNi00OS43YzAtMi4zLS4xLTQuNi0uMy02LjlsODQgMjRjNC4xIDEuMiA4LjIgMi4xIDEyLjMgMi44TDMyMCA0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJsMzIgMGMxNy43IDAgMzItMTQuMyAzMi0zMmwwLTE2NC4zYzE5LjItMTkuMiAzMS41LTQ1LjcgMzItNzUuN2MwIDAgMCAwIDAgMGwwLTEuOXpNNDk2IDY0YTE2IDE2IDAgMSAxIDAgMzIgMTYgMTYgMCAxIDEgMC0zMnpcIl1cbn07XG5jb25zdCBmYVEgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncScsXG4gIGljb246IFs0NDgsIDUxMiwgWzExM10sIFwiNTFcIiwgXCJNNjQgMjU2YzAgODguNCA3MS42IDE2MCAxNjAgMTYwYzI4LjkgMCA1Ni03LjcgNzkuNC0yMS4xbC03Mi04Ni40Yy0xMS4zLTEzLjYtOS41LTMzLjggNC4xLTQ1LjFzMzMuOC05LjUgNDUuMSA0LjFsNzAuOSA4NS4xQzM3MS45IDMyNS44IDM4NCAyOTIuMyAzODQgMjU2YzAtODguNC03MS42LTE2MC0xNjAtMTYwUzY0IDE2Ny42IDY0IDI1NnpNMzQ0LjkgNDQ0LjZDMzEwIDQ2NyAyNjguNSA0ODAgMjI0IDQ4MEMxMDAuMyA0ODAgMCAzNzkuNyAwIDI1NlMxMDAuMyAzMiAyMjQgMzJzMjI0IDEwMC4zIDIyNCAyMjRjMCA1Ni4xLTIwLjYgMTA3LjQtNTQuNyAxNDYuN2w0Ny4zIDU2LjhjMTEuMyAxMy42IDkuNSAzMy44LTQuMSA0NS4xcy0zMy44IDkuNS00NS4xLTQuMWwtNDYuNi01NS45elwiXVxufTtcbmNvbnN0IGZhRyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdnJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbMTAzXSwgXCI0N1wiLCBcIk0yMjQgOTZDMTM1LjYgOTYgNjQgMTY3LjYgNjQgMjU2czcxLjYgMTYwIDE2MCAxNjBjNzcuNCAwIDE0Mi01NSAxNTYuOC0xMjhMMjU2IDI4OGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmwxNDQgMGMyNS44IDAgNDkuNiAyMS40IDQ3LjIgNTAuNkM0MzcuOCAzODkuNiAzNDEuNCA0ODAgMjI0IDQ4MEMxMDAuMyA0ODAgMCAzNzkuNyAwIDI1NlMxMDAuMyAzMiAyMjQgMzJjNTcuNCAwIDEwOS43IDIxLjYgMTQ5LjMgNTdjMTMuMiAxMS44IDE0LjMgMzIgMi41IDQ1LjJzLTMyIDE0LjMtNDUuMiAyLjVDMzAyLjMgMTExLjQgMjY1IDk2IDIyNCA5NnpcIl1cbn07XG5jb25zdCBmYU5vdGVzTWVkaWNhbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdub3Rlcy1tZWRpY2FsJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNDgxXCIsIFwiTTk2IDM1Mkw5NiA5NmMwLTM1LjMgMjguNy02NCA2NC02NGwyNTYgMGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDE5Ny41YzAgMTctNi43IDMzLjMtMTguNyA0NS4zbC01OC41IDU4LjVjLTEyIDEyLTI4LjMgMTguNy00NS4zIDE4LjdMMTYwIDQxNmMtMzUuMyAwLTY0LTI4LjctNjQtNjR6TTI3MiAxMjhjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDQ4LTQ4IDBjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDMyYzAgOC44IDcuMiAxNiAxNiAxNmw0OCAwIDAgNDhjMCA4LjggNy4yIDE2IDE2IDE2bDMyIDBjOC44IDAgMTYtNy4yIDE2LTE2bDAtNDggNDggMGM4LjggMCAxNi03LjIgMTYtMTZsMC0zMmMwLTguOC03LjItMTYtMTYtMTZsLTQ4IDAgMC00OGMwLTguOC03LjItMTYtMTYtMTZsLTMyIDB6bTI0IDMzNmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGwtMTYwIDBDNjAuOSA1MTIgMCA0NTEuMSAwIDM3NkwwIDE1MmMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0bDAgMjI0YzAgNDguNiAzOS40IDg4IDg4IDg4bDE2MCAwelwiXVxufTtcbmNvbnN0IGZhVGVtcGVyYXR1cmVIYWxmID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RlbXBlcmF0dXJlLWhhbGYnLFxuICBpY29uOiBbMzIwLCA1MTIsIFsxMjc3NzcsIFwidGVtcGVyYXR1cmUtMlwiLCBcInRoZXJtb21ldGVyLTJcIiwgXCJ0aGVybW9tZXRlci1oYWxmXCJdLCBcImYyYzlcIiwgXCJNMTYwIDY0Yy0yNi41IDAtNDggMjEuNS00OCA0OGwwIDE2NC41YzAgMTcuMy03LjEgMzEuOS0xNS4zIDQyLjVDODYuMiAzMzIuNiA4MCAzNDkuNSA4MCAzNjhjMCA0NC4yIDM1LjggODAgODAgODBzODAtMzUuOCA4MC04MGMwLTE4LjUtNi4yLTM1LjQtMTYuNy00OC45Yy04LjItMTAuNi0xNS4zLTI1LjItMTUuMy00Mi41TDIwOCAxMTJjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTQ4IDExMkM0OCA1MC4yIDk4LjEgMCAxNjAgMHMxMTIgNTAuMSAxMTIgMTEybDAgMTY0LjRjMCAuMSAuMSAuMyAuMiAuNmMuMiAuNiAuOCAxLjYgMS43IDIuOGMxOC45IDI0LjQgMzAuMSA1NSAzMC4xIDg4LjFjMCA3OS41LTY0LjUgMTQ0LTE0NCAxNDRTMTYgNDQ3LjUgMTYgMzY4YzAtMzMuMiAxMS4yLTYzLjggMzAuMS04OC4xYy45LTEuMiAxLjUtMi4yIDEuNy0yLjhjLjEtLjMgLjItLjUgLjItLjZMNDggMTEyek0yMDggMzY4YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4cy00OC0yMS41LTQ4LTQ4YzAtMjAuOSAxMy40LTM4LjcgMzItNDUuM0wxNDQgMjA4YzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZsMCAxMTQuN2MxOC42IDYuNiAzMiAyNC40IDMyIDQ1LjN6XCJdXG59O1xuY29uc3QgZmFUZW1wZXJhdHVyZTIgPSBmYVRlbXBlcmF0dXJlSGFsZjtcbmNvbnN0IGZhVGhlcm1vbWV0ZXIyID0gZmFUZW1wZXJhdHVyZUhhbGY7XG5jb25zdCBmYVRoZXJtb21ldGVySGFsZiA9IGZhVGVtcGVyYXR1cmVIYWxmO1xuY29uc3QgZmFEb25nU2lnbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdkb25nLXNpZ24nLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImUxNjlcIiwgXCJNMjg4IDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMmwtMzIgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwzMiAwIDAgNDkuMWMtMTguOC0xMC45LTQwLjctMTcuMS02NC0xNy4xYy03MC43IDAtMTI4IDU3LjMtMTI4IDEyOHM1Ny4zIDEyOCAxMjggMTI4YzI0LjUgMCA0Ny40LTYuOSA2Ni44LTE4LjhjNSAxMS4xIDE2LjIgMTguOCAyOS4yIDE4LjhjMTcuNyAwIDMyLTE0LjMgMzItMzJsMC05NiAwLTE2MGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmMwLTE3LjctMTQuMy0zMi0zMi0zMnpNMTI4IDI4OGE2NCA2NCAwIDEgMSAxMjggMCA2NCA2NCAwIDEgMSAtMTI4IDB6TTMyIDQ0OGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwzMjAgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkwzMiA0NDh6XCJdXG59O1xuY29uc3QgZmFDYXBzdWxlcyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjYXBzdWxlcycsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjQ2YlwiLCBcIk02NCAxNDRjMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OGwwIDExMi05NiAwIDAtMTEyek0wIDE0NEwwIDM2OGMwIDYxLjkgNTAuMSAxMTIgMTEyIDExMnMxMTItNTAuMSAxMTItMTEybDAtMTc4LjRjMS44IDE5LjEgOC4yIDM4IDE5LjggNTQuOEwzNzIuMyA0MzEuN2MzNS41IDUxLjcgMTA1LjMgNjQuMyAxNTYgMjguMXM2My0xMDcuNSAyNy41LTE1OS4yTDQyNy4zIDExMy4zQzM5MS44IDYxLjUgMzIxLjkgNDkgMjcxLjMgODUuMmMtMjggMjAtNDQuMyA1MC44LTQ3LjMgODNsMC0yNC4yYzAtNjEuOS01MC4xLTExMi0xMTItMTEyUzAgODIuMSAwIDE0NHptMjk2LjYgNjQuMmMtMTYtMjMuMy0xMC01NS4zIDExLjktNzFjMjEuMi0xNS4xIDUwLjUtMTAuMyA2NiAxMi4ybDY3IDk3LjZMMzYxLjYgMzAzbC02NS05NC44ek00OTEgNDA3LjdjLS44IC42LTEuNiAxLjEtMi40IDEuNmw0LTIuOGMtLjUgLjQtMSAuOC0xLjYgMS4yelwiXVxufTtcbmNvbnN0IGZhUG9vU3Rvcm0gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncG9vLXN0b3JtJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXCJwb28tYm9sdFwiXSwgXCJmNzVhXCIsIFwiTTIzNi45IC4yYy01LjUtLjctMTEgMS40LTE0LjUgNS43cy00LjYgMTAuMS0yLjggMTUuM2MyLjggOC4yIDQuMyAxNi45IDQuMyAyNi4xYzAgMjEuNy04LjUgMzcuMi0yMS45IDQ3LjZjLTEzLjggMTAuOC0zNCAxNy01Ny44IDE3TDEyOCAxMTJjLTM1LjMgMC02NCAyOC43LTY0IDY0YzAgMTIuMiAzLjQgMjMuNSA5LjMgMzMuMkMzMS43IDIxNi4yIDAgMjUyLjQgMCAyOTZjMCA0MC45IDI4IDc1LjQgNjUuOCA4NS4yYy01LjMtMTguNSAxLTM4LjUgMTYuMi01MC43bDE2MC0xMjhjMTcuNi0xNC4xIDQyLjYtMTQgNjAuMiAuMnMyMi44IDM4LjYgMTIuOCA1OC44TDI4NS43IDMyMGwxOC4zIDBjMjAuNCAwIDM4LjUgMTIuOSA0NS4zIDMyLjFjMy43IDEwLjYgMy41IDIxLjggMCAzMS45bDEwLjcgMGM0OC42IDAgODgtMzkuNCA4OC04OGMwLTQzLjYtMzEuNy03OS44LTczLjMtODYuOGM1LjktOS43IDkuMy0yMS4xIDkuMy0zMy4yYzAtMzUuMy0yOC43LTY0LTY0LTY0bC0xLjQgMGMuOS01LjQgMS40LTEwLjkgMS40LTE2LjZjMC00OC43LTM2LjEtODguOS04My4xLTk1LjJ6bTQ1LjEgMjI3LjRjLTUuOC00LjctMTQuMi00LjctMjAuMS0uMWwtMTYwIDEyOGMtNS4zIDQuMi03LjQgMTEuNC01LjEgMTcuOHM4LjMgMTAuNyAxNS4xIDEwLjdsNzAuMSAwTDEyOS43IDQ4OC44Yy0zLjQgNi43LTEuNiAxNC45IDQuMyAxOS42czE0LjIgNC43IDIwLjEgLjFsMTYwLTEyOGM1LjMtNC4yIDcuNC0xMS40IDUuMS0xNy44cy04LjMtMTAuNy0xNS4xLTEwLjdsLTcwLjEgMCA1Mi40LTEwNC44YzMuNC02LjcgMS42LTE0LjktNC4zLTE5LjZ6XCJdXG59O1xuY29uc3QgZmFQb29Cb2x0ID0gZmFQb29TdG9ybTtcbmNvbnN0IGZhRmFjZUZyb3duT3BlbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmYWNlLWZyb3duLW9wZW4nLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjg1NTAsIFwiZnJvd24tb3BlblwiXSwgXCJmNTdhXCIsIFwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0xNzYuNCAxNzZhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0em0xMjggMzJhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptLTEyMiAxNzQuNWMtMTIuNCA1LjItMjYuNS00LjEtMjEuMS0xNi40YzE2LTM2LjYgNTIuNC02Mi4xIDk0LjgtNjIuMXM3OC44IDI1LjYgOTQuOCA2Mi4xYzUuNCAxMi4zLTguNyAyMS42LTIxLjEgMTYuNGMtMjIuNC05LjUtNDcuNC0xNC44LTczLjctMTQuOHMtNTEuMyA1LjMtNzMuNyAxNC44elwiXVxufTtcbmNvbnN0IGZhRnJvd25PcGVuID0gZmFGYWNlRnJvd25PcGVuO1xuY29uc3QgZmFIYW5kUG9pbnRVcCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoYW5kLXBvaW50LXVwJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbOTc1N10sIFwiZjBhNlwiLCBcIk0zMiAzMkMzMiAxNC4zIDQ2LjMgMCA2NCAwUzk2IDE0LjMgOTYgMzJsMCAyMDgtNjQgMEwzMiAzMnpNMjI0IDE5MmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMybDAgNjRjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC02NHptLTY0LTY0YzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgNDhjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC00OGMwLTE3LjcgMTQuMy0zMiAzMi0zMnptMTYwIDk2YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJsMCA2NGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTY0em0tOTYgODhsMC0uNmM5LjQgNS40IDIwLjMgOC42IDMyIDguNmMxMy4yIDAgMjUuNC00IDM1LjYtMTAuOGM4LjcgMjQuOSAzMi41IDQyLjggNjAuNCA0Mi44YzExLjcgMCAyMi42LTMuMSAzMi04LjZsMCA4LjZjMCA4OC40LTcxLjYgMTYwLTE2MCAxNjBsLTYxLjcgMGMtNDIuNCAwLTgzLjEtMTYuOS0xMTMuMS00Ni45TDM3LjUgNDUzLjVDMTMuNSA0MjkuNSAwIDM5Ni45IDAgMzYzbDAtMjdjMC0zNS4zIDI4LjctNjQgNjQtNjRsODggMGMyMi4xIDAgNDAgMTcuOSA0MCA0MHMtMTcuOSA0MC00MCA0MGwtNTYgMGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmw1NiAwYzM5LjggMCA3Mi0zMi4yIDcyLTcyelwiXVxufTtcbmNvbnN0IGZhTW9uZXlCaWxsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21vbmV5LWJpbGwnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImYwZDZcIiwgXCJNNjQgNjRDMjguNyA2NCAwIDkyLjcgMCAxMjhMMCAzODRjMCAzNS4zIDI4LjcgNjQgNjQgNjRsNDQ4IDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0yNTZjMC0zNS4zLTI4LjctNjQtNjQtNjRMNjQgNjR6bTY0IDMyMGwtNjQgMCAwLTY0YzM1LjMgMCA2NCAyOC43IDY0IDY0ek02NCAxOTJsMC02NCA2NCAwYzAgMzUuMy0yOC43IDY0LTY0IDY0ek00NDggMzg0YzAtMzUuMyAyOC43LTY0IDY0LTY0bDAgNjQtNjQgMHptNjQtMTkyYy0zNS4zIDAtNjQtMjguNy02NC02NGw2NCAwIDAgNjR6TTI4OCAxNjBhOTYgOTYgMCAxIDEgMCAxOTIgOTYgOTYgMCAxIDEgMC0xOTJ6XCJdXG59O1xuY29uc3QgZmFCb29rbWFyayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdib29rbWFyaycsXG4gIGljb246IFszODQsIDUxMiwgWzEyODI3OCwgNjE1OTFdLCBcImYwMmVcIiwgXCJNMCA0OFY0ODcuN0MwIDUwMS4xIDEwLjkgNTEyIDI0LjMgNTEyYzUgMCA5LjktMS41IDE0LTQuNEwxOTIgNDAwIDM0NS43IDUwNy42YzQuMSAyLjkgOSA0LjQgMTQgNC40YzEzLjQgMCAyNC4zLTEwLjkgMjQuMy0yNC4zVjQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDQ4QzIxLjUgMCAwIDIxLjUgMCA0OHpcIl1cbn07XG5jb25zdCBmYUFsaWduSnVzdGlmeSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhbGlnbi1qdXN0aWZ5JyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMDM5XCIsIFwiTTQ0OCA2NGMwLTE3LjctMTQuMy0zMi0zMi0zMkwzMiAzMkMxNC4zIDMyIDAgNDYuMyAwIDY0UzE0LjMgOTYgMzIgOTZsMzg0IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJ6bTAgMjU2YzAtMTcuNy0xNC4zLTMyLTMyLTMyTDMyIDI4OGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwzODQgMGMxNy43IDAgMzItMTQuMyAzMi0zMnpNMCAxOTJjMCAxNy43IDE0LjMgMzIgMzIgMzJsMzg0IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJMMzIgMTYwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnpNNDQ4IDQ0OGMwLTE3LjctMTQuMy0zMi0zMi0zMkwzMiA0MTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsMzg0IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJ6XCJdXG59O1xuY29uc3QgZmFVbWJyZWxsYUJlYWNoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3VtYnJlbGxhLWJlYWNoJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbMTI3OTU4XSwgXCJmNWNhXCIsIFwiTTM0Ni4zIDI3MS44bC02MC4xLTIxLjlMMjE0IDQ0OCAzMiA0NDhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsNTEyIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTI2MS45IDAgNjQuMS0xNzYuMnptMTIxLjEtLjJsLTMuMyA5LjEgNjcuNyAyNC42YzE4LjEgNi42IDM4LTQuMiAzOS42LTIzLjRjNi41LTc4LjUtMjMuOS0xNTUuNS04MC44LTIwOC41YzIgOCAzLjIgMTYuMyAzLjQgMjQuOGwuMiA2YzEuOCA1Ny03LjMgMTEzLjgtMjYuOCAxNjcuNHpNNDYyIDk5LjFjLTEuMS0zNC40LTIyLjUtNjQuOC01NC40LTc3LjRjLS45LS40LTEuOS0uNy0yLjgtMS4xYy0zMy0xMS43LTY5LjgtMi40LTkzLjEgMjMuOGwtNCA0LjVDMjcyLjQgODguMyAyNDUgMTM0LjIgMjI2LjggMTg0bC0zLjMgOS4xTDQzNCAyNjkuN2wzLjMtOS4xYzE4LjEtNDkuOCAyNi42LTEwMi41IDI0LjktMTU1LjVsLS4yLTZ6TTEwNy4yIDExMi45Yy0xMS4xIDE1LjctMi44IDM2LjggMTUuMyA0My40bDcxIDI1LjggMy4zLTkuMWMxOS41LTUzLjYgNDkuMS0xMDMgODcuMS0xNDUuNWw0LTQuNWM2LjItNi45IDEzLjEtMTMgMjAuNS0xOC4yYy03OS42IDIuNS0xNTQuNyA0Mi4yLTIwMS4yIDEwOHpcIl1cbn07XG5jb25zdCBmYUhlbG1ldFVuID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hlbG1ldC11bicsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZTUwM1wiLCBcIk00NzkuNSAyMjRDNDcxLjIgOTguOSAzNjcuMiAwIDI0MCAwQzEwNy41IDAgMCAxMDcuNSAwIDI0MGwwIDU2LjNDMCAzNDQuOCAzOS4yIDM4NCA4Ny43IDM4NEwyMDAgMzg0bDE0LjkgMEwzNDMuNSA1MDUuNGM0LjUgNC4yIDEwLjQgNi42IDE2LjUgNi42bDk2IDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRsLTg2LjUgMC0xLjUtMS41TDM2OCAyODhsODAgMCAzMiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC0uNSAwek0zMjAgNDE3LjJsLTc4LTczLjdMMjc0LjQgMjg4bDQ1LjYgMCAwIDEyOS4yek0yODUuMyAxMDMuMWwzNC43IDUyIDAtNDMuMmMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2bDAgOTZjMCA3LjEtNC42IDEzLjMtMTEuNCAxNS4zcy0xNC0uNi0xNy45LTYuNGwtMzQuNy01MiAwIDQzLjJjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZsMC05NmMwLTcuMSA0LjYtMTMuMyAxMS40LTE1LjNzMTQgLjYgMTcuOSA2LjR6TTE2MCAxMTJsMCA2NGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2bDAtNjRjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNmwwIDY0YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4cy00OC0yMS41LTQ4LTQ4bDAtNjRjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnpcIl1cbn07XG5jb25zdCBmYUJ1bGxzZXllID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2J1bGxzZXllJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMTQwXCIsIFwiTTQ0OCAyNTZBMTkyIDE5MiAwIDEgMCA2NCAyNTZhMTkyIDE5MiAwIDEgMCAzODQgMHpNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2em0yNTYgODBhODAgODAgMCAxIDAgMC0xNjAgODAgODAgMCAxIDAgMCAxNjB6bTAtMjI0YTE0NCAxNDQgMCAxIDEgMCAyODggMTQ0IDE0NCAwIDEgMSAwLTI4OHpNMjI0IDI1NmEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwelwiXVxufTtcbmNvbnN0IGZhQmFjb24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYmFjb24nLFxuICBpY29uOiBbNTc2LCA1MTIsIFsxMjkzNjNdLCBcImY3ZTVcIiwgXCJNNDM5LjIgMS4yYzExLjItMy4yIDIzLjItLjEgMzEuNCA4LjFMNTE4IDU2LjdsLTI2LjUgNy45Yy01OCAxNi42LTk4LjEgMzkuNi0xMjkuNiA2Ny40Yy0zMS4yIDI3LjUtNTMuMiA1OS4xLTc1LjEgOTAuOWwtMi4zIDMuM0MyNDEuNiAyODguNyAxOTUgMzU2LjYgNzIuOCA0MTcuN0wzNy45IDQzNS4yIDkuNCA0MDYuNmMtNy4zLTcuMy0xMC42LTE3LjYtOS0yNy44czguMS0xOC45IDE3LjMtMjMuNUMxMzYuMSAyOTYuMiAxODAuOSAyMzEgMjIzLjMgMTY5LjNsMi4zLTMuNGMyMS44LTMxLjggNDQuOS02NC45IDc3LjctOTMuOWMzMy40LTI5LjUgNzUuOC01My42IDEzNS45LTcwLjh6TTYxLjggNDU5bDI1LjQtMTIuN2MxMjkuNS02NC43IDE3OS45LTEzOC4xIDIyMy44LTIwMmwyLjItMy4zYzIyLjEtMzIuMSA0Mi4xLTYwLjUgNjkuOS04NS4xYzI3LjUtMjQuMyA2My40LTQ1LjIgMTE3LjMtNjAuNmMwIDAgMCAwIDAgMGwuMi0uMSA0My4xLTEyLjkgMjMgMjNjOCA4IDExLjIgMTkuNyA4LjMgMzAuN3MtMTEuMyAxOS42LTIyLjIgMjIuN2MtNTEuOSAxNC44LTg1LjYgMzQuNy0xMTEuMSA1Ny4yYy0yNi4xIDIzLTQ1LjEgNDkuOS02Ny4zIDgyLjFsLTIuMiAzLjJDMzI3LjggMzY1LjkgMjc1LjUgNDQyIDE0Mi4zIDUwOC42Yy0xMi4zIDYuMi0yNy4yIDMuNy0zNi45LTZMNjEuOCA0NTl6XCJdXG59O1xuY29uc3QgZmFIYW5kUG9pbnREb3duID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hhbmQtcG9pbnQtZG93bicsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjBhN1wiLCBcIk0zMiA0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTIwOC02NCAwIDAgMjA4ek0yMjQgMzIwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC02NGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMmwwIDY0em0tNjQgNjRjMTcuNyAwIDMyLTE0LjMgMzItMzJsMC00OGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMmwwIDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyem0xNjAtOTZjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTY0YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMybDAgNjR6bS05Ni04OGwwIC42YzkuNC01LjQgMjAuMy04LjYgMzItOC42YzEzLjIgMCAyNS40IDQgMzUuNiAxMC44YzguNy0yNC45IDMyLjUtNDIuOCA2MC40LTQyLjhjMTEuNyAwIDIyLjYgMy4xIDMyIDguNmwwLTguNkMzODQgNzEuNiAzMTIuNCAwIDIyNCAwTDE2Mi4zIDBDMTE5LjggMCA3OS4xIDE2LjkgNDkuMSA0Ni45TDM3LjUgNTguNUMxMy41IDgyLjUgMCAxMTUuMSAwIDE0OWwwIDI3YzAgMzUuMyAyOC43IDY0IDY0IDY0bDg4IDBjMjIuMSAwIDQwLTE3LjkgNDAtNDBzLTE3LjktNDAtNDAtNDBsLTU2IDBjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZsNTYgMGMzOS44IDAgNzIgMzIuMiA3MiA3MnpcIl1cbn07XG5jb25zdCBmYUFycm93VXBGcm9tQnJhY2tldCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhcnJvdy11cC1mcm9tLWJyYWNrZXQnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImUwOWFcIiwgXCJNMjQ2LjYgOS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMGwtMTI4IDEyOGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMEwxOTIgMTA5LjMgMTkyIDMyMGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMjEwLjcgNzMuNCA3My40YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNsLTEyOC0xMjh6TTY0IDM1MmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMmwwIDY0YzAgNTMgNDMgOTYgOTYgOTZsMjU2IDBjNTMgMCA5Ni00MyA5Ni05NmwwLTY0YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMybDAgNjRjMCAxNy43LTE0LjMgMzItMzIgMzJMOTYgNDQ4Yy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTY0elwiXVxufTtcbmNvbnN0IGZhRm9sZGVyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZvbGRlcicsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyODE5MywgMTI4NDQ3LCA2MTcxNiwgXCJmb2xkZXItYmxhbmtcIl0sIFwiZjA3YlwiLCBcIk02NCA0ODBINDQ4YzM1LjMgMCA2NC0yOC43IDY0LTY0VjE2MGMwLTM1LjMtMjguNy02NC02NC02NEgyODhjLTEwLjEgMC0xOS42LTQuNy0yNS42LTEyLjhMMjQzLjIgNTcuNkMyMzEuMSA0MS41IDIxMi4xIDMyIDE5MiAzMkg2NEMyOC43IDMyIDAgNjAuNyAwIDk2VjQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NHpcIl1cbn07XG5jb25zdCBmYUZvbGRlckJsYW5rID0gZmFGb2xkZXI7XG5jb25zdCBmYUZpbGVXYXZlZm9ybSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmaWxlLXdhdmVmb3JtJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXCJmaWxlLW1lZGljYWwtYWx0XCJdLCBcImY0NzhcIiwgXCJNOTYgMEM2MC43IDAgMzIgMjguNyAzMiA2NGwwIDIyNCAxMTIgMGM2LjEgMCAxMS42IDMuNCAxNC4zIDguOEwxNzYgMzMyLjJsNDkuNy05OS40YzIuNy01LjQgOC4zLTguOCAxNC4zLTguOHMxMS42IDMuNCAxNC4zIDguOEwyODEuOSAyODhsNzAuMSAwYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2bC04MCAwYy02LjEgMC0xMS42LTMuNC0xNC4zLTguOEwyNDAgMjc1LjhsLTQ5LjcgOTkuNGMtMi43IDUuNC04LjMgOC44LTE0LjMgOC44cy0xMS42LTMuNC0xNC4zLTguOEwxMzQuMSAzMjAgMzIgMzIwbDAgMTI4YzAgMzUuMyAyOC43IDY0IDY0IDY0bDI1NiAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMjg4LTEyOCAwYy0xNy43IDAtMzItMTQuMy0zMi0zMkwyNTYgMCA5NiAwek0yODggMGwwIDEyOCAxMjggMEwyODggMHpcIl1cbn07XG5jb25zdCBmYUZpbGVNZWRpY2FsQWx0ID0gZmFGaWxlV2F2ZWZvcm07XG5jb25zdCBmYVJhZGlhdGlvbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdyYWRpYXRpb24nLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY3YjlcIiwgXCJNMjE2IDE4Ni43Yy0yMy45IDEzLjgtNDAgMzkuNy00MCA2OS4zTDMyIDI1NkMxNC4zIDI1Ni0uMiAyNDEuNiAyIDIyNC4xQzEwLjcgMTU0IDQ3LjggOTIuNyAxMDEuMyA1MmMxNC4xLTEwLjcgMzMuOC01LjMgNDIuNyAxMGw3MiAxMjQuN3pNMjU2IDMzNmMxNC42IDAgMjguMi0zLjkgNDAtMTAuN2w3MiAxMjQuOGM4LjggMTUuMyAzLjcgMzUuMS0xMi42IDQxLjljLTMwLjYgMTIuOS02NC4yIDIwLTk5LjQgMjBzLTY4LjktNy4xLTk5LjQtMjBjLTE2LjMtNi45LTIxLjQtMjYuNi0xMi42LTQxLjlsNzItMTI0LjhjMTEuOCA2LjggMjUuNCAxMC43IDQwIDEwLjd6bTIyNC04MGwtMTQ0IDBjMC0yOS42LTE2LjEtNTUuNS00MC02OS4zTDM2OCA2MmM4LjgtMTUuMyAyOC42LTIwLjcgNDIuNy0xMGM1My42IDQwLjcgOTAuNiAxMDIgOTkuNCAxNzIuMWMyLjIgMTcuNS0xMi40IDMxLjktMzAgMzEuOXpNMjU2IDIwOGE0OCA0OCAwIDEgMSAwIDk2IDQ4IDQ4IDAgMSAxIDAtOTZ6XCJdXG59O1xuY29uc3QgZmFDaGFydFNpbXBsZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaGFydC1zaW1wbGUnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImU0NzNcIiwgXCJNMTYwIDgwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4bDMyIDBjMjYuNSAwIDQ4IDIxLjUgNDggNDhsMCAzNTJjMCAyNi41LTIxLjUgNDgtNDggNDhsLTMyIDBjLTI2LjUgMC00OC0yMS41LTQ4LTQ4bDAtMzUyek0wIDI3MmMwLTI2LjUgMjEuNS00OCA0OC00OGwzMiAwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4bDAgMTYwYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4bC0zMiAwYy0yNi41IDAtNDgtMjEuNS00OC00OEwwIDI3MnpNMzY4IDk2bDMyIDBjMjYuNSAwIDQ4IDIxLjUgNDggNDhsMCAyODhjMCAyNi41LTIxLjUgNDgtNDggNDhsLTMyIDBjLTI2LjUgMC00OC0yMS41LTQ4LTQ4bDAtMjg4YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4elwiXVxufTtcbmNvbnN0IGZhTWFyc1N0cm9rZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtYXJzLXN0cm9rZScsXG4gIGljb246IFs1MTIsIDUxMiwgWzk4OTRdLCBcImYyMjlcIiwgXCJNMzc2IDBjLTkuNyAwLTE4LjUgNS44LTIyLjIgMTQuOHMtMS43IDE5LjMgNS4yIDI2LjJsMzMuNCAzMy40TDM3MC4zIDk2LjQgMzQ1IDcxYy05LjQtOS40LTI0LjYtOS40LTMzLjkgMHMtOS40IDI0LjYgMCAzMy45bDI1LjQgMjUuNEwzMDcuOCAxNTljLTI4LjQtMTkuNS02Mi43LTMxLTk5LjgtMzFjLTk3LjIgMC0xNzYgNzguOC0xNzYgMTc2czc4LjggMTc2IDE3NiAxNzZzMTc2LTc4LjggMTc2LTE3NmMwLTM3LTExLjQtNzEuNC0zMS05OS44bDI4LjYtMjguNkw0MDcgMjAxYzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwczkuNC0yNC42IDAtMzMuOWwtMjUuNC0yNS40IDIyLjEtMjIuMUw0NzEgMTUzYzYuOSA2LjkgMTcuMiA4LjkgMjYuMiA1LjJzMTQuOC0xMi41IDE0LjgtMjIuMmwwLTExMmMwLTEzLjMtMTAuNy0yNC0yNC0yNEwzNzYgMHptODggNDhzMCAwIDAgMHMwIDAgMCAwczAgMCAwIDB6TTk2IDMwNGExMTIgMTEyIDAgMSAxIDIyNCAwQTExMiAxMTIgMCAxIDEgOTYgMzA0elwiXVxufTtcbmNvbnN0IGZhVmlhbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd2aWFsJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI5NTE0XSwgXCJmNDkyXCIsIFwiTTM0Mi42IDkuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNsOS40IDkuNEwyOC4xIDM0Mi42QzEwLjEgMzYwLjYgMCAzODUgMCA0MTAuNUwwIDQxNmMwIDUzIDQzIDk2IDk2IDk2bDUuNSAwYzI1LjUgMCA0OS45LTEwLjEgNjcuOS0yOC4xTDQ0OCAyMDUuM2w5LjQgOS40YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNsLTMyLTMyLTk2LTk2LTMyLTMyek0yMDUuMyAyNTZMMzUyIDEwOS4zIDQwMi43IDE2MGwtOTYgOTYtMTAxLjUgMHpcIl1cbn07XG5jb25zdCBmYUdhdWdlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2dhdWdlJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXCJkYXNoYm9hcmRcIiwgXCJnYXVnZS1tZWRcIiwgXCJ0YWNob21ldGVyLWFsdC1hdmVyYWdlXCJdLCBcImY2MjRcIiwgXCJNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2em0zMjAgOTZjMC0yNi45LTE2LjUtNDkuOS00MC01OS4zTDI4MCA4OGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNGwwIDIwNC43Yy0yMy41IDkuNS00MCAzMi41LTQwIDU5LjNjMCAzNS4zIDI4LjcgNjQgNjQgNjRzNjQtMjguNyA2NC02NHpNMTQ0IDE3NmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6bS0xNiA4MGEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwem0yODggMzJhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0ek00MDAgMTQ0YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6XCJdXG59O1xuY29uc3QgZmFEYXNoYm9hcmQgPSBmYUdhdWdlO1xuY29uc3QgZmFHYXVnZU1lZCA9IGZhR2F1Z2U7XG5jb25zdCBmYVRhY2hvbWV0ZXJBbHRBdmVyYWdlID0gZmFHYXVnZTtcbmNvbnN0IGZhV2FuZE1hZ2ljU3BhcmtsZXMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnd2FuZC1tYWdpYy1zcGFya2xlcycsXG4gIGljb246IFs1NzYsIDUxMiwgW1wibWFnaWMtd2FuZC1zcGFya2xlc1wiXSwgXCJlMmNhXCIsIFwiTTIzNC43IDQyLjdMMTk3IDU2LjhjLTMgMS4xLTUgNC01IDcuMnMyIDYuMSA1IDcuMmwzNy43IDE0LjFMMjQ4LjggMTIzYzEuMSAzIDQgNSA3LjIgNXM2LjEtMiA3LjItNWwxNC4xLTM3LjdMMzE1IDcxLjJjMy0xLjEgNS00IDUtNy4ycy0yLTYuMS01LTcuMkwyNzcuMyA0Mi43IDI2My4yIDVjLTEuMS0zLTQtNS03LjItNXMtNi4xIDItNy4yIDVMMjM0LjcgNDIuN3pNNDYuMSAzOTUuNGMtMTguNyAxOC43LTE4LjcgNDkuMSAwIDY3LjlsMzQuNiAzNC42YzE4LjcgMTguNyA0OS4xIDE4LjcgNjcuOSAwTDUyOS45IDExNi41YzE4LjctMTguNyAxOC43LTQ5LjEgMC02Ny45TDQ5NS4zIDE0LjFjLTE4LjctMTguNy00OS4xLTE4LjctNjcuOSAwTDQ2LjEgMzk1LjR6TTQ4NC42IDgyLjZsLTEwNSAxMDUtMjMuMy0yMy4zIDEwNS0xMDUgMjMuMyAyMy4zek03LjUgMTE3LjJDMyAxMTguOSAwIDEyMy4yIDAgMTI4czMgOS4xIDcuNSAxMC44TDY0IDE2MGwyMS4yIDU2LjVjMS43IDQuNSA2IDcuNSAxMC44IDcuNXM5LjEtMyAxMC44LTcuNUwxMjggMTYwbDU2LjUtMjEuMmM0LjUtMS43IDcuNS02IDcuNS0xMC44cy0zLTkuMS03LjUtMTAuOEwxMjggOTYgMTA2LjggMzkuNUMxMDUuMSAzNSAxMDAuOCAzMiA5NiAzMnMtOS4xIDMtMTAuOCA3LjVMNjQgOTYgNy41IDExNy4yem0zNTIgMjU2Yy00LjUgMS43LTcuNSA2LTcuNSAxMC44czMgOS4xIDcuNSAxMC44TDQxNiA0MTZsMjEuMiA1Ni41YzEuNyA0LjUgNiA3LjUgMTAuOCA3LjVzOS4xLTMgMTAuOC03LjVMNDgwIDQxNmw1Ni41LTIxLjJjNC41LTEuNyA3LjUtNiA3LjUtMTAuOHMtMy05LjEtNy41LTEwLjhMNDgwIDM1MmwtMjEuMi01Ni41Yy0xLjctNC41LTYtNy41LTEwLjgtNy41cy05LjEgMy0xMC44IDcuNUw0MTYgMzUybC01Ni41IDIxLjJ6XCJdXG59O1xuY29uc3QgZmFNYWdpY1dhbmRTcGFya2xlcyA9IGZhV2FuZE1hZ2ljU3BhcmtsZXM7XG5jb25zdCBmYUUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZScsXG4gIGljb246IFszMjAsIDUxMiwgWzEwMV0sIFwiNDVcIiwgXCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NkwwIDI1NiAwIDQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NGwyMjQgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkw2NCA0MTZsMC0xMjggMTYwIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJMNjQgMjI0IDY0IDk2bDIyNCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyTDY0IDMyelwiXVxufTtcbmNvbnN0IGZhUGVuQ2xpcCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwZW4tY2xpcCcsXG4gIGljb246IFs1MTIsIDUxMiwgW1wicGVuLWFsdFwiXSwgXCJmMzA1XCIsIFwiTTQ1My4zIDE5LjNsMzkuNCAzOS40YzI1IDI1IDI1IDY1LjUgMCA5MC41bC01Mi4xIDUyLjFzMCAwIDAgMGwtMS0xczAgMCAwIDBsLTE2LTE2LTk2LTk2LTE3LTE3IDUyLjEtNTIuMWMyNS0yNSA2NS41LTI1IDkwLjUgMHpNMjQxIDExNC45Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMEwxMDUgMjE3Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45TDE3My4xIDgxYzI4LjEtMjguMSA3My43LTI4LjEgMTAxLjggMEwyODggOTQuMWwxNyAxNyA5NiA5NiAxNiAxNiAxIDEtMTcgMTdMMjI5LjUgNDEyLjVjLTQ4IDQ4LTEwOS4yIDgwLjgtMTc1LjggOTQuMWwtMjUgNWMtNy45IDEuNi0xNi0uOS0yMS43LTYuNnMtOC4xLTEzLjgtNi42LTIxLjdsNS0yNWMxMy4zLTY2LjYgNDYuMS0xMjcuOCA5NC4xLTE3NS44TDI1NC4xIDEyOCAyNDEgMTE0Ljl6XCJdXG59O1xuY29uc3QgZmFQZW5BbHQgPSBmYVBlbkNsaXA7XG5jb25zdCBmYUJyaWRnZUNpcmNsZUV4Y2xhbWF0aW9uID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JyaWRnZS1jaXJjbGUtZXhjbGFtYXRpb24nLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU0Y2FcIiwgXCJNNjQgMzJDNDYuMyAzMiAzMiA0Ni4zIDMyIDY0czE0LjMgMzIgMzIgMzJsNDAgMCAwIDY0LTcyIDAgMCAxMjhjNTMgMCA5NiA0MyA5NiA5NmwwIDY0YzAgMTcuNyAxNC4zIDMyIDMyIDMybDMyIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJsMC02NGMwLTUzIDQzLTk2IDk2LTk2YzYuMyAwIDEyLjQgLjYgMTguMyAxLjdDMzY3LjEgMjMxLjggNDI2LjkgMTkyIDQ5NiAxOTJjNDIuNSAwIDgxLjYgMTUuMSAxMTIgNDAuMmwwLTcyLjItNzIgMCAwLTY0IDQwIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJMNjQgMzJ6TTQ4OCA5NmwwIDY0LTgwIDAgMC02NCA4MCAwek0zNjAgOTZsMCA2NC04MCAwIDAtNjQgODAgMHpNMjMyIDk2bDAgNjQtODAgMCAwLTY0IDgwIDB6TTQ5NiA1MTJhMTQ0IDE0NCAwIDEgMCAwLTI4OCAxNDQgMTQ0IDAgMSAwIDAgMjg4em0wLTk2YTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHptMC0xNDRjOC44IDAgMTYgNy4yIDE2IDE2bDAgODBjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZsMC04MGMwLTguOCA3LjItMTYgMTYtMTZ6XCJdXG59O1xuY29uc3QgZmFVc2VyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3VzZXInLFxuICBpY29uOiBbNDQ4LCA1MTIsIFsxMjgxMDAsIDYyMTQ0XSwgXCJmMDA3XCIsIFwiTTIyNCAyNTZBMTI4IDEyOCAwIDEgMCAyMjQgMGExMjggMTI4IDAgMSAwIDAgMjU2em0tNDUuNyA0OEM3OS44IDMwNCAwIDM4My44IDAgNDgyLjNDMCA0OTguNyAxMy4zIDUxMiAyOS43IDUxMmwzODguNiAwYzE2LjQgMCAyOS43LTEzLjMgMjkuNy0yOS43QzQ0OCAzODMuOCAzNjguMiAzMDQgMjY5LjcgMzA0bC05MS40IDB6XCJdXG59O1xuY29uc3QgZmFTY2hvb2xDaXJjbGVDaGVjayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzY2hvb2wtY2lyY2xlLWNoZWNrJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlNTZiXCIsIFwiTTMzNy44IDUuNEMzMjctMS44IDMxMy0xLjggMzAyLjIgNS40TDE2Ni4zIDk2IDQ4IDk2QzIxLjUgOTYgMCAxMTcuNSAwIDE0NEwwIDQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGwyNzIgMHMwIDAgMCAwbC02NCAwIDAtOTZjMC0zNS4zIDI4LjctNjQgNjQtNjRsLjMgMCAuNSAwYzMuNC0zNy43IDE4LjctNzIuMSA0Mi4yLTk5LjFDMzUwLjIgMjYwIDMzNS42IDI2NCAzMjAgMjY0Yy00OC42IDAtODgtMzkuNC04OC04OHMzOS40LTg4IDg4LTg4czg4IDM5LjQgODggODhjMCAxOC4zLTUuNiAzNS4zLTE1LjEgNDkuNGMyOS0yMSA2NC42LTMzLjQgMTAzLjEtMzMuNGM1OS41IDAgMTEyLjEgMjkuNiAxNDQgNzQuOEw2NDAgMTQ0YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4TDQ3My43IDk2IDMzNy44IDUuNHpNOTYgMTkybDMyIDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgNjRjMCA4LjgtNy4yIDE2LTE2IDE2bC0zMiAwYy04LjggMC0xNi03LjItMTYtMTZsMC02NGMwLTguOCA3LjItMTYgMTYtMTZ6bTAgMTI4bDMyIDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgNjRjMCA4LjgtNy4yIDE2LTE2IDE2bC0zMiAwYy04LjggMC0xNi03LjItMTYtMTZsMC02NGMwLTguOCA3LjItMTYgMTYtMTZ6TTMyMCAxMjhjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDMyYzAgOC44IDcuMiAxNiAxNiAxNmwzMiAwYzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2bC0xNiAwIDAtMTZjMC04LjgtNy4yLTE2LTE2LTE2ek02NDAgMzY4YTE0NCAxNDQgMCAxIDAgLTI4OCAwIDE0NCAxNDQgMCAxIDAgMjg4IDB6bS05OS4zLTQzLjNjNi4yLTYuMiAxNi40LTYuMiAyMi42IDBzNi4yIDE2LjQgMCAyMi42bC03MiA3MmMtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBsLTQwLTQwYy02LjItNi4yLTYuMi0xNi40IDAtMjIuNnMxNi40LTYuMiAyMi42IDBMNDgwIDM4NS40bDYwLjctNjAuN3pcIl1cbn07XG5jb25zdCBmYUR1bXBzdGVyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2R1bXBzdGVyJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmNzkzXCIsIFwiTTQ5LjcgMzJjLTEwLjUgMC0xOS44IDYuOS0yMi45IDE2LjlMLjkgMTMzYy0uNiAyLS45IDQuMS0uOSA2LjFDMCAxNTAuNyA5LjMgMTYwIDIwLjkgMTYwbDk0IDBMMTQwLjUgMzIgNDkuNyAzMnpNMjcyIDE2MGwwLTEyOC05OC45IDBMMTQ3LjUgMTYwIDI3MiAxNjB6bTMyIDBsMTI0LjUgMEw0MDIuOSAzMiAzMDQgMzJsMCAxMjh6bTE1Ny4xIDBsOTQgMGMxMS41IDAgMjAuOS05LjMgMjAuOS0yMC45YzAtMi4xLS4zLTQuMS0uOS02LjFMNTQ5LjIgNDguOUM1NDYuMSAzOC45IDUzNi44IDMyIDUyNi4zIDMybC05MC44IDAgMjUuNiAxMjh6TTMyIDE5Mmw0IDMyLTQgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwxMiAwTDY0IDQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDMyMCAwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMjAtMTYwIDEyIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTQgMCA0LTMyTDMyIDE5MnpcIl1cbn07XG5jb25zdCBmYVZhblNodXR0bGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndmFuLXNodXR0bGUnLFxuICBpY29uOiBbNjQwLCA1MTIsIFsxMjg2NTYsIFwic2h1dHRsZS12YW5cIl0sIFwiZjViNlwiLCBcIk02NCAxMDRsMCA4OCA5NiAwIDAtOTZMNzIgOTZjLTQuNCAwLTggMy42LTggOHptNDgyIDg4TDQ2NS4xIDk2IDM4NCA5NmwwIDk2IDE2MiAwem0tMjI2IDBsMC05Ni05NiAwIDAgOTYgOTYgMHpNNTkyIDM4NGwtMTYgMGMwIDUzLTQzIDk2LTk2IDk2cy05Ni00My05Ni05NmwtMTI4IDBjMCA1My00MyA5Ni05NiA5NnMtOTYtNDMtOTYtOTZsLTE2IDBjLTI2LjUgMC00OC0yMS41LTQ4LTQ4TDAgMTA0QzAgNjQuMiAzMi4yIDMyIDcyIDMybDEyMCAwIDE2MCAwIDExMy4xIDBjMTguOSAwIDM2LjggOC4zIDQ5IDIyLjhMNjI1IDE4Ni41YzkuNyAxMS41IDE1IDI2LjEgMTUgNDEuMkw2NDAgMzM2YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4em0tNjQgMGE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwek0xNjAgNDMyYTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnpcIl1cbn07XG5jb25zdCBmYVNodXR0bGVWYW4gPSBmYVZhblNodXR0bGU7XG5jb25zdCBmYUJ1aWxkaW5nVXNlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdidWlsZGluZy11c2VyJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlNGRhXCIsIFwiTTQ4IDBDMjEuNSAwIDAgMjEuNSAwIDQ4TDAgNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4bDk2IDAgMC04MGMwLTI2LjUgMjEuNS00OCA0OC00OHM0OCAyMS41IDQ4IDQ4bDAgODAgODkuOSAwYy02LjMtMTAuMi05LjktMjIuMi05LjktMzUuMWMwLTQ2LjkgMjUuOC04Ny44IDY0LTEwOS4ybDAtOTUuOUwzODQgNDhjMC0yNi41LTIxLjUtNDgtNDgtNDhMNDggMHpNNjQgMjQwYzAtOC44IDcuMi0xNiAxNi0xNmwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDMyYzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzJ6bTExMi0xNmwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDMyYzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzJjMC04LjggNy4yLTE2IDE2LTE2em04MCAxNmMwLTguOCA3LjItMTYgMTYtMTZsMzIgMGM4LjggMCAxNiA3LjIgMTYgMTZsMCAzMmMwIDguOC03LjIgMTYtMTYgMTZsLTMyIDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTMyek04MCA5NmwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDMyYzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzJjMC04LjggNy4yLTE2IDE2LTE2em04MCAxNmMwLTguOCA3LjItMTYgMTYtMTZsMzIgMGM4LjggMCAxNiA3LjIgMTYgMTZsMCAzMmMwIDguOC03LjIgMTYtMTYgMTZsLTMyIDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTMyek0yNzIgOTZsMzIgMGM4LjggMCAxNiA3LjIgMTYgMTZsMCAzMmMwIDguOC03LjIgMTYtMTYgMTZsLTMyIDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTMyYzAtOC44IDcuMi0xNiAxNi0xNnpNNTc2IDI3MmE4MCA4MCAwIDEgMCAtMTYwIDAgODAgODAgMCAxIDAgMTYwIDB6TTM1MiA0NzcuMWMwIDE5LjMgMTUuNiAzNC45IDM0LjkgMzQuOWwyMTguMiAwYzE5LjMgMCAzNC45LTE1LjYgMzQuOS0zNC45YzAtNTEuNC00MS43LTkzLjEtOTMuMS05My4xbC0xMDEuOCAwYy01MS40IDAtOTMuMSA0MS43LTkzLjEgOTMuMXpcIl1cbn07XG5jb25zdCBmYVNxdWFyZUNhcmV0TGVmdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzcXVhcmUtY2FyZXQtbGVmdCcsXG4gIGljb246IFs0NDgsIDUxMiwgW1wiY2FyZXQtc3F1YXJlLWxlZnRcIl0sIFwiZjE5MVwiLCBcIk0wIDQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NGwzMjAgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTMyMGMwLTM1LjMtMjguNy02NC02NC02NEw2NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2TDAgNDE2ek0xMjggMjU2YzAtNi43IDIuOC0xMyA3LjctMTcuNmwxMTItMTA0YzctNi41IDE3LjItOC4yIDI1LjktNC40czE0LjQgMTIuNSAxNC40IDIybDAgMjA4YzAgOS41LTUuNyAxOC4yLTE0LjQgMjJzLTE4LjkgMi4xLTI1LjktNC40bC0xMTItMTA0Yy00LjktNC41LTcuNy0xMC45LTcuNy0xNy42elwiXVxufTtcbmNvbnN0IGZhQ2FyZXRTcXVhcmVMZWZ0ID0gZmFTcXVhcmVDYXJldExlZnQ7XG5jb25zdCBmYUhpZ2hsaWdodGVyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hpZ2hsaWdodGVyJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmNTkxXCIsIFwiTTMxNSAzMTVsMTU4LjQtMjE1TDQ0NC4xIDcwLjYgMjI5IDIyOSAzMTUgMzE1em0tMTg3IDVzMCAwIDAgMGwwLTcxLjdjMC0xNS4zIDcuMi0yOS42IDE5LjUtMzguNkw0MjAuNiA4LjRDNDI4IDIuOSA0MzcgMCA0NDYuMiAwYzExLjQgMCAyMi40IDQuNSAzMC41IDEyLjZsNTQuOCA1NC44YzguMSA4LjEgMTIuNiAxOSAxMi42IDMwLjVjMCA5LjItMi45IDE4LjItOC40IDI1LjZMMzM0LjQgMzk2LjVjLTkgMTIuMy0yMy40IDE5LjUtMzguNiAxOS41TDIyNCA0MTZsLTI1LjQgMjUuNGMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBsLTUwLjctNTAuN2MtMTIuNS0xMi41LTEyLjUtMzIuOCAwLTQ1LjNMMTI4IDMyMHpNNyA0NjYuM2w2My02MyA3MC42IDcwLjYtMzEgMzFjLTQuNSA0LjUtMTAuNiA3LTE3IDdMMjQgNTEyYy0xMy4zIDAtMjQtMTAuNy0yNC0yNGwwLTQuN2MwLTYuNCAyLjUtMTIuNSA3LTE3elwiXVxufTtcbmNvbnN0IGZhS2V5ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2tleScsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyODI3M10sIFwiZjA4NFwiLCBcIk0zMzYgMzUyYzk3LjIgMCAxNzYtNzguOCAxNzYtMTc2UzQzMy4yIDAgMzM2IDBTMTYwIDc4LjggMTYwIDE3NmMwIDE4LjcgMi45IDM2LjggOC4zIDUzLjdMNyAzOTFjLTQuNSA0LjUtNyAxMC42LTcgMTdsMCA4MGMwIDEzLjMgMTAuNyAyNCAyNCAyNGw4MCAwYzEzLjMgMCAyNC0xMC43IDI0LTI0bDAtNDAgNDAgMGMxMy4zIDAgMjQtMTAuNyAyNC0yNGwwLTQwIDQwIDBjNi40IDAgMTIuNS0yLjUgMTctN2wzMy4zLTMzLjNjMTYuOSA1LjQgMzUgOC4zIDUzLjcgOC4zek0zNzYgOTZhNDAgNDAgMCAxIDEgMCA4MCA0MCA0MCAwIDEgMSAwLTgwelwiXVxufTtcbmNvbnN0IGZhQnVsbGhvcm4gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYnVsbGhvcm4nLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjgyMjYsIDEyODM2M10sIFwiZjBhMVwiLCBcIk00ODAgMzJjMC0xMi45LTcuOC0yNC42LTE5LjgtMjkuNnMtMjUuNy0yLjItMzQuOSA2LjlMMzgxLjcgNTNjLTQ4IDQ4LTExMy4xIDc1LTE4MSA3NWwtOC43IDAtMzIgMC05NiAwYy0zNS4zIDAtNjQgMjguNy02NCA2NGwwIDk2YzAgMzUuMyAyOC43IDY0IDY0IDY0bDAgMTI4YzAgMTcuNyAxNC4zIDMyIDMyIDMybDY0IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJsMC0xMjggOC43IDBjNjcuOSAwIDEzMyAyNyAxODEgNzVsNDMuNiA0My42YzkuMiA5LjIgMjIuOSAxMS45IDM0LjkgNi45czE5LjgtMTYuNiAxOS44LTI5LjZsMC0xNDcuNmMxOC42LTguOCAzMi0zMi41IDMyLTYwLjRzLTEzLjQtNTEuNi0zMi02MC40TDQ4MCAzMnptLTY0IDc2LjdMNDE2IDI0MGwwIDEzMS4zQzM1Ny4yIDMxNy44IDI4MC41IDI4OCAyMDAuNyAyODhsLTguNyAwIDAtOTYgOC43IDBjNzkuOCAwIDE1Ni41LTI5LjggMjE1LjMtODMuM3pcIl1cbn07XG5jb25zdCBmYUdsb2JlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2dsb2JlJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI3NzYwXSwgXCJmMGFjXCIsIFwiTTM1MiAyNTZjMCAyMi4yLTEuMiA0My42LTMuMyA2NGwtMTg1LjMgMGMtMi4yLTIwLjQtMy4zLTQxLjgtMy4zLTY0czEuMi00My42IDMuMy02NGwxODUuMyAwYzIuMiAyMC40IDMuMyA0MS44IDMuMyA2NHptMjguOC02NGwxMjMuMSAwYzUuMyAyMC41IDguMSA0MS45IDguMSA2NHMtMi44IDQzLjUtOC4xIDY0bC0xMjMuMSAwYzIuMS0yMC42IDMuMi00MiAzLjItNjRzLTEuMS00My40LTMuMi02NHptMTEyLjYtMzJsLTExNi43IDBjLTEwLTYzLjktMjkuOC0xMTcuNC01NS4zLTE1MS42Yzc4LjMgMjAuNyAxNDIgNzcuNSAxNzEuOSAxNTEuNnptLTE0OS4xIDBsLTE3Ni42IDBjNi4xLTM2LjQgMTUuNS02OC42IDI3LTk0LjdjMTAuNS0yMy42IDIyLjItNDAuNyAzMy41LTUxLjVDMjM5LjQgMy4yIDI0OC43IDAgMjU2IDBzMTYuNiAzLjIgMjcuOCAxMy44YzExLjMgMTAuOCAyMyAyNy45IDMzLjUgNTEuNWMxMS42IDI2IDIwLjkgNTguMiAyNyA5NC43em0tMjA5IDBMMTguNiAxNjBDNDguNiA4NS45IDExMi4yIDI5LjEgMTkwLjYgOC40QzE2NS4xIDQyLjYgMTQ1LjMgOTYuMSAxMzUuMyAxNjB6TTguMSAxOTJsMTIzLjEgMGMtMi4xIDIwLjYtMy4yIDQyLTMuMiA2NHMxLjEgNDMuNCAzLjIgNjRMOC4xIDMyMEMyLjggMjk5LjUgMCAyNzguMSAwIDI1NnMyLjgtNDMuNSA4LjEtNjR6TTE5NC43IDQ0Ni42Yy0xMS42LTI2LTIwLjktNTguMi0yNy05NC42bDE3Ni42IDBjLTYuMSAzNi40LTE1LjUgNjguNi0yNyA5NC42Yy0xMC41IDIzLjYtMjIuMiA0MC43LTMzLjUgNTEuNUMyNzIuNiA1MDguOCAyNjMuMyA1MTIgMjU2IDUxMnMtMTYuNi0zLjItMjcuOC0xMy44Yy0xMS4zLTEwLjgtMjMtMjcuOS0zMy41LTUxLjV6TTEzNS4zIDM1MmMxMCA2My45IDI5LjggMTE3LjQgNTUuMyAxNTEuNkMxMTIuMiA0ODIuOSA0OC42IDQyNi4xIDE4LjYgMzUybDExNi43IDB6bTM1OC4xIDBjLTMwIDc0LjEtOTMuNiAxMzAuOS0xNzEuOSAxNTEuNmMyNS41LTM0LjIgNDUuMi04Ny43IDU1LjMtMTUxLjZsMTE2LjcgMHpcIl1cbn07XG5jb25zdCBmYVN5bmFnb2d1ZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzeW5hZ29ndWUnLFxuICBpY29uOiBbNjQwLCA1MTIsIFsxMjgzMzNdLCBcImY2OWJcIiwgXCJNMzA5LjggMy43YzUuOS00LjkgMTQuNi00LjkgMjAuNSAwbDEyMSAxMDAuOEM0NjkuNSAxMTkuNyA0ODAgMTQyLjIgNDgwIDE2NmwwIDExNC4xTDQ4MCA1MTJsLTE2IDAtMTEyIDAgMC05NmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMmwwIDk2LTExMiAwLTE2IDAgMC0yMzEuOUwxNjAgMTY2YzAtMjMuNyAxMC41LTQ2LjMgMjguOC02MS41TDMwOS44IDMuN3pNNTEyIDUxMmwwLTI2Ny41IDI4LjEtMzEuMmMzLTMuNCA3LjQtNS4zIDExLjktNS4zczguOSAxLjkgMTEuOSA1LjNsNjMuOCA3MC45YzcuOSA4LjggMTIuMyAyMC4zIDEyLjMgMzIuMUw2NDAgNDQ4YzAgMzUuMy0yOC43IDY0LTY0IDY0bC02NCAwek0xMjggMjQ0LjVMMTI4IDUxMmwtNjQgMGMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCAzMTYuM2MwLTExLjkgNC40LTIzLjMgMTIuMy0zMi4xbDYzLjgtNzAuOWMzLTMuNCA3LjQtNS4zIDExLjktNS4zczguOSAxLjkgMTEuOSA1LjNMMTI4IDI0NC41ek0zMjcgMTI0LjNjLTMuMS01LjQtMTAuOS01LjQtMTMuOSAwbC0xNS45IDI4LjEtMzIuMy0uM2MtNi4yLS4xLTEwLjEgNi43LTcgMTIuMUwyNzQuMyAxOTJsLTE2LjQgMjcuOGMtMy4yIDUuNCAuNyAxMi4xIDcgMTIuMWwzMi4zLS4zTDMxMyAyNTkuN2MzLjEgNS40IDEwLjkgNS40IDEzLjkgMGwxNS45LTI4LjEgMzIuMyAuM2M2LjIgLjEgMTAuMS02LjcgNy0xMi4xTDM2NS43IDE5MmwxNi40LTI3LjhjMy4yLTUuNC0uNy0xMi4xLTctMTIuMWwtMzIuMyAuM0wzMjcgMTI0LjN6XCJdXG59O1xuY29uc3QgZmFQZXJzb25IYWxmRHJlc3MgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGVyc29uLWhhbGYtZHJlc3MnLFxuICBpY29uOiBbMzIwLCA1MTIsIFtdLCBcImU1NDhcIiwgXCJNMTYwIDBhNDggNDggMCAxIDEgMCA5NiA0OCA0OCAwIDEgMSAwLTk2em04IDM1MmwwLTIyNCA2LjkgMGMzMy43IDAgNjQuOSAxNy43IDgyLjMgNDYuNmw1OC4zIDk3YzkuMSAxNS4xIDQuMiAzNC44LTEwLjkgNDMuOXMtMzQuOCA0LjItNDMuOS0xMC45TDIzMiAyNTYuOSAyMzIgNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtMTI4czAgMCAwIDB6TTU4LjIgMTgyLjNjMTkuOS0zMy4xIDU1LjMtNTMuNSA5My44LTU0LjNsMCAyNTZzMCAwIDAgMGwwIDk2YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtOTYtMTcuOCAwYy0xMC45IDAtMTguNi0xMC43LTE1LjItMjEuMUw5My4zIDI0OC4xIDU5LjQgMzA0LjVjLTkuMSAxNS4xLTI4LjggMjAtNDMuOSAxMC45cy0yMC0yOC44LTEwLjktNDMuOWw1My42LTg5LjJ6XCJdXG59O1xuY29uc3QgZmFSb2FkQnJpZGdlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3JvYWQtYnJpZGdlJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlNTYzXCIsIFwiTTM1MiAwTDYwOCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgNDQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMybC0yNTYgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC00NDhjMC0xNy43IDE0LjMtMzIgMzItMzJ6TTQ4MCAyMDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0bDAgNjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGwwLTY0YzAtMTMuMy0xMC43LTI0LTI0LTI0em0yNCAxODRjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjRsMCA2NGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0bDAtNjR6TTQ4MCA0MGMtMTMuMyAwLTI0IDEwLjctMjQgMjRsMCA2NGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0bDAtNjRjMC0xMy4zLTEwLjctMjQtMjQtMjR6TTMyIDk2bDI1NiAwIDAgNjQtNDAgMCAwIDY0IDQwIDAgMCA5NmMtNTMgMC05NiA0My05NiA5NmwwIDY0YzAgMTcuNy0xNC4zIDMyLTMyIDMybC0zMiAwYy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTY0YzAtNTMtNDMtOTYtOTYtOTZsMC05NiA3MiAwIDAtNjQtNDAgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnptMTY4IDY0bC04MCAwIDAgNjQgODAgMCAwLTY0elwiXVxufTtcbmNvbnN0IGZhTG9jYXRpb25BcnJvdyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdsb2NhdGlvbi1hcnJvdycsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjEyNFwiLCBcIk00MjkuNiA5Mi4xYzQuOS0xMS45IDIuMS0yNS42LTctMzQuN3MtMjIuOC0xMS45LTM0LjctN2wtMzUyIDE0NGMtMTQuMiA1LjgtMjIuMiAyMC44LTE5LjMgMzUuOHMxNi4xIDI1LjggMzEuNCAyNS44bDE3NiAwIDAgMTc2YzAgMTUuMyAxMC44IDI4LjQgMjUuOCAzMS40czMwLTUuMSAzNS44LTE5LjNsMTQ0LTM1MnpcIl1cbn07XG5jb25zdCBmYUMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYycsXG4gIGljb246IFszODQsIDUxMiwgWzk5XSwgXCI0M1wiLCBcIk0zMjkuMSAxNDIuOWMtNjIuNS02Mi41LTE1NS44LTYyLjUtMjE4LjMgMHMtNjIuNSAxNjMuOCAwIDIyNi4zczE1NS44IDYyLjUgMjE4LjMgMGMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMHMxMi41IDMyLjggMCA0NS4zYy04Ny41IDg3LjUtMjIxLjMgODcuNS0zMDguOCAwcy04Ny41LTIyOS4zIDAtMzE2LjhzMjIxLjMtODcuNSAzMDguOCAwYzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zcy0zMi44IDEyLjUtNDUuMyAwelwiXVxufTtcbmNvbnN0IGZhVGFibGV0QnV0dG9uID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RhYmxldC1idXR0b24nLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYxMGFcIiwgXCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRMMCA0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzIwIDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0zODRjMC0zNS4zLTI4LjctNjQtNjQtNjRMNjQgMHpNMjI0IDQwMGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJdXG59O1xuY29uc3QgZmFCdWlsZGluZ0xvY2sgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYnVpbGRpbmctbG9jaycsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZTRkNlwiLCBcIk00OCAwQzIxLjUgMCAwIDIxLjUgMCA0OEwwIDQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGw5NiAwIDAtODBjMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OGwwIDgwIDg4LjYgMGMtNS40LTkuNC04LjYtMjAuMy04LjYtMzJsMC0xMjhjMC0yMy43IDEyLjktNDQuNCAzMi01NS40bDAtMjQuNmMwLTMwLjUgMTIuMi01OC4yIDMyLTc4LjRMMzg0IDQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4TDQ4IDB6TTY0IDI0MGMwLTguOCA3LjItMTYgMTYtMTZsMzIgMGM4LjggMCAxNiA3LjIgMTYgMTZsMCAzMmMwIDguOC03LjIgMTYtMTYgMTZsLTMyIDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTMyem0xMTItMTZsMzIgMGM4LjggMCAxNiA3LjIgMTYgMTZsMCAzMmMwIDguOC03LjIgMTYtMTYgMTZsLTMyIDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTMyYzAtOC44IDcuMi0xNiAxNi0xNnptODAgMTZjMC04LjggNy4yLTE2IDE2LTE2bDMyIDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgMzJjMCA4LjgtNy4yIDE2LTE2IDE2bC0zMiAwYy04LjggMC0xNi03LjItMTYtMTZsMC0zMnpNODAgOTZsMzIgMGM4LjggMCAxNiA3LjIgMTYgMTZsMCAzMmMwIDguOC03LjIgMTYtMTYgMTZsLTMyIDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTMyYzAtOC44IDcuMi0xNiAxNi0xNnptODAgMTZjMC04LjggNy4yLTE2IDE2LTE2bDMyIDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgMzJjMCA4LjgtNy4yIDE2LTE2IDE2bC0zMiAwYy04LjggMC0xNi03LjItMTYtMTZsMC0zMnpNMjcyIDk2bDMyIDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgMzJjMCA4LjgtNy4yIDE2LTE2IDE2bC0zMiAwYy04LjggMC0xNi03LjItMTYtMTZsMC0zMmMwLTguOCA3LjItMTYgMTYtMTZ6TTQ2NCAyNDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCA0OC02NCAwIDAtNDhjMC0xNy43IDE0LjMtMzIgMzItMzJ6bS04MCAzMmwwIDQ4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMmwwIDEyOGMwIDE3LjcgMTQuMyAzMiAzMiAzMmwxNjAgMGMxNy43IDAgMzItMTQuMyAzMi0zMmwwLTEyOGMwLTE3LjctMTQuMy0zMi0zMi0zMmwwLTQ4YzAtNDQuMi0zNS44LTgwLTgwLTgwcy04MCAzNS44LTgwIDgwelwiXVxufTtcbmNvbnN0IGZhUGl6emFTbGljZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwaXp6YS1zbGljZScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjgxOFwiLCBcIk0xNjkuNyAuOWMtMjIuOC0xLjYtNDEuOSAxNC00Ny41IDM0LjdMMTEwLjQgODBjLjUgMCAxLjEgMCAxLjYgMGMxNzYuNyAwIDMyMCAxNDMuMyAzMjAgMzIwYzAgLjUgMCAxLjEgMCAxLjZsNDQuNC0xMS44YzIwLjgtNS41IDM2LjMtMjQuNyAzNC43LTQ3LjVDNDk4LjUgMTU5LjUgMzUyLjUgMTMuNSAxNjkuNyAuOXpNMzk5LjggNDEwLjJjLjEtMy40IC4yLTYuOCAuMi0xMC4yYzAtMTU5LjEtMTI4LjktMjg4LTI4OC0yODhjLTMuNCAwLTYuOCAuMS0xMC4yIC4yTC41IDQ5MS45Yy0xLjUgNS41IC4xIDExLjQgNC4xIDE1LjRzOS45IDUuNiAxNS40IDQuMUwzOTkuOCA0MTAuMnpNMTc2IDIwOGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6bTY0IDEyOGEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwek05NiAzODRhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHpcIl1cbn07XG5jb25zdCBmYU1vbmV5QmlsbFdhdmUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbW9uZXktYmlsbC13YXZlJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmNTNhXCIsIFwiTTAgMTEyLjVMMCA0MjIuM2MwIDE4IDEwLjEgMzUgMjcgNDEuM2M4NyAzMi41IDE3NCAxMC4zIDI2MS0xMS45Yzc5LjgtMjAuMyAxNTkuNi00MC43IDIzOS4zLTE4LjljMjMgNi4zIDQ4LjctOS41IDQ4LjctMzMuNGwwLTMwOS45YzAtMTgtMTAuMS0zNS0yNy00MS4zQzQ2MiAxNS45IDM3NSAzOC4xIDI4OCA2MC4zQzIwOC4yIDgwLjYgMTI4LjQgMTAwLjkgNDguNyA3OS4xQzI1LjYgNzIuOCAwIDg4LjYgMCAxMTIuNXpNMjg4IDM1MmMtNDQuMiAwLTgwLTQzLTgwLTk2czM1LjgtOTYgODAtOTZzODAgNDMgODAgOTZzLTM1LjggOTYtODAgOTZ6TTY0IDM1MmMzNS4zIDAgNjQgMjguNyA2NCA2NGwtNjQgMCAwLTY0em02NC0yMDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRsMC02NCA2NCAwek01MTIgMzA0bDAgNjQtNjQgMGMwLTM1LjMgMjguNy02NCA2NC02NHpNNDQ4IDk2bDY0IDAgMCA2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjR6XCJdXG59O1xuY29uc3QgZmFDaGFydEFyZWEgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2hhcnQtYXJlYScsXG4gIGljb246IFs1MTIsIDUxMiwgW1wiYXJlYS1jaGFydFwiXSwgXCJmMWZlXCIsIFwiTTY0IDY0YzAtMTcuNy0xNC4zLTMyLTMyLTMyUzAgNDYuMyAwIDY0TDAgNDAwYzAgNDQuMiAzNS44IDgwIDgwIDgwbDQwMCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyTDgwIDQxNmMtOC44IDAtMTYtNy4yLTE2LTE2TDY0IDY0em05NiAyODhsMjg4IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJsMC02OC4yYzAtNy42LTIuNy0xNS03LjctMjAuOGwtNjUuOC03Ni44Yy0xMi4xLTE0LjItMzMuNy0xNS00Ni45LTEuOGwtMjEgMjFjLTEwIDEwLTI2LjQgOS4yLTM1LjQtMS42bC0zOS4yLTQ3Yy0xMi42LTE1LjEtMzUuNy0xNS40LTQ4LjctLjZMMTM1LjkgMjE1Yy01LjEgNS44LTcuOSAxMy4zLTcuOSAyMS4xbDAgODRjMCAxNy43IDE0LjMgMzIgMzIgMzJ6XCJdXG59O1xuY29uc3QgZmFBcmVhQ2hhcnQgPSBmYUNoYXJ0QXJlYTtcbmNvbnN0IGZhSG91c2VGbGFnID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hvdXNlLWZsYWcnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU1MGRcIiwgXCJNNDgwIDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMybDAgMTYwIDAgMzIwIDY0IDAgMC0zMjAgMTEyIDBjOC44IDAgMTYtNy4yIDE2LTE2bDAtMTI4YzAtOC44LTcuMi0xNi0xNi0xNkw1MTIgMzJjMC0xNy43LTE0LjMtMzItMzItMzJ6TTQxNiAxNTlMMjc2LjggMzkuN2MtMTItMTAuMy0yOS43LTEwLjMtNDEuNyAwbC0yMjQgMTkyQzEgMjQwLjQtMi43IDI1NC41IDIgMjY3LjFTMTguNiAyODggMzIgMjg4bDMyIDAgMCAxOTJjMCAxNy43IDE0LjMgMzIgMzIgMzJsNjQgMGMxNy43IDAgMzItMTQuMyAzMi0zMmwwLTk2YzAtMTcuNyAxNC4zLTMyIDMyLTMybDY0IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCA5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMmw2NC43IDAgLjIgMC0xIDAgMC0zNTN6XCJdXG59O1xuY29uc3QgZmFQZXJzb25DaXJjbGVNaW51cyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwZXJzb24tY2lyY2xlLW1pbnVzJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJlNTQwXCIsIFwiTTExMiA0OGE0OCA0OCAwIDEgMSA5NiAwIDQ4IDQ4IDAgMSAxIC05NiAwem00MCAzMDRsMCAxMjhjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC0yMjMuMUw1OS40IDMwNC41Yy05LjEgMTUuMS0yOC44IDIwLTQzLjkgMTAuOXMtMjAtMjguOC0xMC45LTQzLjlsNTguMy05N2MxNy40LTI4LjkgNDguNi00Ni42IDgyLjMtNDYuNmwyOS43IDBjMzMuNyAwIDY0LjkgMTcuNyA4Mi4zIDQ2LjZsNDQuOSA3NC43Yy0xNi4xIDE3LjYtMjguNiAzOC41LTM2LjYgNjEuNWMtMS45LTEuOC0zLjUtMy45LTQuOS02LjNMMjMyIDI1Ni45IDIzMiA0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC0xMjgtMTYgMHptMTM2IDE2YTE0NCAxNDQgMCAxIDEgMjg4IDAgMTQ0IDE0NCAwIDEgMSAtMjg4IDB6bTIyNCAwYzAtOC44LTcuMi0xNi0xNi0xNmwtMTI4IDBjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZsMTI4IDBjOC44IDAgMTYtNy4yIDE2LTE2elwiXVxufTtcbmNvbnN0IGZhQmFuID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JhbicsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyODY4MywgXCJjYW5jZWxcIl0sIFwiZjA1ZVwiLCBcIk0zNjcuMiA0MTIuNUw5OS41IDE0NC44Qzc3LjEgMTc2LjEgNjQgMjE0LjUgNjQgMjU2YzAgMTA2IDg2IDE5MiAxOTIgMTkyYzQxLjUgMCA3OS45LTEzLjEgMTExLjItMzUuNXptNDUuMy00NS4zQzQzNC45IDMzNS45IDQ0OCAyOTcuNSA0NDggMjU2YzAtMTA2LTg2LTE5Mi0xOTItMTkyYy00MS41IDAtNzkuOSAxMy4xLTExMS4yIDM1LjVMNDEyLjUgMzY3LjJ6TTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnpcIl1cbn07XG5jb25zdCBmYUNhbmNlbCA9IGZhQmFuO1xuY29uc3QgZmFDYW1lcmFSb3RhdGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2FtZXJhLXJvdGF0ZScsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTBkOFwiLCBcIk0yMTMuMSA2NC44TDIwMi43IDk2IDEyOCA5NmMtMzUuMyAwLTY0IDI4LjctNjQgNjRsMCAyNTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzg0IDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0yNTZjMC0zNS4zLTI4LjctNjQtNjQtNjRsLTc0LjcgMEw0MjYuOSA2NC44QzQyMC40IDQ1LjIgNDAyLjEgMzIgMzgxLjQgMzJMMjU4LjYgMzJjLTIwLjcgMC0zOSAxMy4yLTQ1LjUgMzIuOHpNNDQ4IDI1NmMwIDguOC03LjIgMTYtMTYgMTZsLTc2LjcgMGMtNi4yIDAtMTEuMy01LjEtMTEuMy0xMS4zYzAtMyAxLjItNS45IDMuMy04TDM3MSAyMjljLTEzLjYtMTMuNC0zMS45LTIxLTUxLTIxYy0xOS4yIDAtMzcuNyA3LjYtNTEuMyAyMS4zTDI0OSAyNDljLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlsMTkuNy0xOS43QzI1Ny40IDE3Mi43IDI4OCAxNjAgMzIwIDE2MGMzMS44IDAgNjIuNCAxMi42IDg1IDM1bDIzLjctMjMuN2MyLjEtMi4xIDUtMy4zIDgtMy4zYzYuMiAwIDExLjMgNS4xIDExLjMgMTEuM2wwIDc2Ljd6TTE5MiAzMjBjMC04LjggNy4yLTE2IDE2LTE2bDc2LjcgMGM2LjIgMCAxMS4zIDUuMSAxMS4zIDExLjNjMCAzLTEuMiA1LjktMy4zIDhMMjY5IDM0N2MxMy42IDEzLjQgMzEuOSAyMSA1MSAyMWMxOS4yIDAgMzcuNy03LjYgNTEuMy0yMS4zTDM5MSAzMjdjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45bC0xOS43IDE5LjdDMzgyLjYgNDAzLjMgMzUyIDQxNiAzMjAgNDE2Yy0zMS44IDAtNjIuNC0xMi42LTg1LTM1bC0yMy43IDIzLjdjLTIuMSAyLjEtNSAzLjMtOCAzLjNjLTYuMiAwLTExLjMtNS4xLTExLjMtMTEuM2wwLTc2Ljd6XCJdXG59O1xuY29uc3QgZmFTcHJheUNhblNwYXJrbGVzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NwcmF5LWNhbi1zcGFya2xlcycsXG4gIGljb246IFs1MTIsIDUxMiwgW1wiYWlyLWZyZXNoZW5lclwiXSwgXCJmNWQwXCIsIFwiTTk2IDMybDAgOTYgMTI4IDAgMC05NmMwLTE3LjctMTQuMy0zMi0zMi0zMkwxMjggMEMxMTAuMyAwIDk2IDE0LjMgOTYgMzJ6bTAgMTI4Yy01MyAwLTk2IDQzLTk2IDk2TDAgNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4bDIyNCAwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4bDAtMjA4YzAtNTMtNDMtOTYtOTYtOTZMOTYgMTYwem02NCA5NmE4MCA4MCAwIDEgMSAwIDE2MCA4MCA4MCAwIDEgMSAwLTE2MHpNMzg0IDQ4YzAtMS40LTEtMy0yLjItMy42TDM1MiAzMiAzMzkuNiAyLjJDMzM5IDEgMzM3LjQgMCAzMzYgMHMtMyAxLTMuNiAyLjJMMzIwIDMyIDI5MC4yIDQ0LjRDMjg5IDQ1IDI4OCA0Ni42IDI4OCA0OGMwIDEuNCAxIDMgMi4yIDMuNkwzMjAgNjRsMTIuNCAyOS44QzMzMyA5NSAzMzQuNiA5NiAzMzYgOTZzMy0xIDMuNi0yLjJMMzUyIDY0bDI5LjgtMTIuNEMzODMgNTEgMzg0IDQ5LjQgMzg0IDQ4em03Ni40IDQ1LjhDNDYxIDk1IDQ2Mi42IDk2IDQ2NCA5NnMzLTEgMy42LTIuMkw0ODAgNjRsMjkuOC0xMi40QzUxMSA1MSA1MTIgNDkuNCA1MTIgNDhjMC0xLjQtMS0zLTIuMi0zLjZMNDgwIDMyIDQ2Ny42IDIuMkM0NjcgMSA0NjUuNCAwIDQ2NCAwcy0zIDEtMy42IDIuMkw0NDggMzIgNDE4LjIgNDQuNEM0MTcgNDUgNDE2IDQ2LjYgNDE2IDQ4YzAgMS40IDEgMyAyLjIgMy42TDQ0OCA2NGwxMi40IDI5Ljh6bTcuMiAxMDAuNGMtLjYtMS4yLTIuMi0yLjItMy42LTIuMnMtMyAxLTMuNiAyLjJMNDQ4IDIyNGwtMjkuOCAxMi40Yy0xLjIgLjYtMi4yIDIuMi0yLjIgMy42YzAgMS40IDEgMyAyLjIgMy42TDQ0OCAyNTZsMTIuNCAyOS44Yy42IDEuMiAyLjIgMi4yIDMuNiAyLjJzMy0xIDMuNi0yLjJMNDgwIDI1NmwyOS44LTEyLjRjMS4yLS42IDIuMi0yLjIgMi4yLTMuNmMwLTEuNC0xLTMtMi4yLTMuNkw0ODAgMjI0bC0xMi40LTI5Ljh6TTQ0OCAxNDRjMC0xLjQtMS0zLTIuMi0zLjZMNDE2IDEyOCA0MDMuNiA5OC4yQzQwMyA5NyA0MDEuNCA5NiA0MDAgOTZzLTMgMS0zLjYgMi4yTDM4NCAxMjhsLTI5LjggMTIuNGMtMS4yIC42LTIuMiAyLjItMi4yIDMuNmMwIDEuNCAxIDMgMi4yIDMuNkwzODQgMTYwbDEyLjQgMjkuOGMuNiAxLjIgMi4yIDIuMiAzLjYgMi4yczMtMSAzLjYtMi4yTDQxNiAxNjBsMjkuOC0xMi40YzEuMi0uNiAyLjItMi4yIDIuMi0zLjZ6XCJdXG59O1xuY29uc3QgZmFBaXJGcmVzaGVuZXIgPSBmYVNwcmF5Q2FuU3BhcmtsZXM7XG5jb25zdCBmYVN0YXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3RhcicsXG4gIGljb246IFs1NzYsIDUxMiwgWzExMDg4LCA2MTQ0Nl0sIFwiZjAwNVwiLCBcIk0zMTYuOSAxOEMzMTEuNiA3IDMwMC40IDAgMjg4LjEgMHMtMjMuNCA3LTI4LjggMThMMTk1IDE1MC4zIDUxLjQgMTcxLjVjLTEyIDEuOC0yMiAxMC4yLTI1LjcgMjEuN3MtLjcgMjQuMiA3LjkgMzIuN0wxMzcuOCAzMjkgMTEzLjIgNDc0LjdjLTIgMTIgMyAyNC4yIDEyLjkgMzEuM3MyMyA4IDMzLjggMi4zbDEyOC4zLTY4LjUgMTI4LjMgNjguNWMxMC44IDUuNyAyMy45IDQuOSAzMy44LTIuM3MxNC45LTE5LjMgMTIuOS0zMS4zTDQzOC41IDMyOSA1NDIuNyAyMjUuOWM4LjYtOC41IDExLjctMjEuMiA3LjktMzIuN3MtMTMuNy0xOS45LTI1LjctMjEuN0wzODEuMiAxNTAuMyAzMTYuOSAxOHpcIl1cbn07XG5jb25zdCBmYVJlcGVhdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdyZXBlYXQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjgyNTddLCBcImYzNjNcIiwgXCJNMCAyMjRjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmMwLTUzIDQzLTk2IDk2LTk2bDE2MCAwIDAgMzJjMCAxMi45IDcuOCAyNC42IDE5LjggMjkuNnMyNS43IDIuMiAzNC45LTYuOWw2NC02NGMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM2wtNjQtNjRjLTkuMi05LjItMjIuOS0xMS45LTM0LjktNi45UzMyMCAxOS4xIDMyMCAzMmwwIDMyTDE2MCA2NEM3MS42IDY0IDAgMTM1LjYgMCAyMjR6bTUxMiA2NGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMmMwIDUzLTQzIDk2LTk2IDk2bC0xNjAgMCAwLTMyYzAtMTIuOS03LjgtMjQuNi0xOS44LTI5LjZzLTI1LjctMi4yLTM0LjkgNi45bC02NCA2NGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNsNjQgNjRjOS4yIDkuMiAyMi45IDExLjkgMzQuOSA2LjlzMTkuOC0xNi42IDE5LjgtMjkuNmwwLTMyIDE2MCAwYzg4LjQgMCAxNjAtNzEuNiAxNjAtMTYwelwiXVxufTtcbmNvbnN0IGZhQ3Jvc3MgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY3Jvc3MnLFxuICBpY29uOiBbMzg0LCA1MTIsIFsxMjgzMjcsIDEwMDEzXSwgXCJmNjU0XCIsIFwiTTE3NiAwYy0yNi41IDAtNDggMjEuNS00OCA0OGwwIDgwLTgwIDBjLTI2LjUgMC00OCAyMS41LTQ4IDQ4bDAgMzJjMCAyNi41IDIxLjUgNDggNDggNDhsODAgMCAwIDIwOGMwIDI2LjUgMjEuNSA0OCA0OCA0OGwzMiAwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4bDAtMjA4IDgwIDBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhsMC0zMmMwLTI2LjUtMjEuNS00OC00OC00OGwtODAgMCAwLTgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4TDE3NiAwelwiXVxufTtcbmNvbnN0IGZhQm94ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JveCcsXG4gIGljb246IFs0NDgsIDUxMiwgWzEyODIzMF0sIFwiZjQ2NlwiLCBcIk01MC43IDU4LjVMMCAxNjBsMjA4IDAgMC0xMjhMOTMuNyAzMkM3NS41IDMyIDU4LjkgNDIuMyA1MC43IDU4LjV6TTI0MCAxNjBsMjA4IDBMMzk3LjMgNTguNUMzODkuMSA0Mi4zIDM3Mi41IDMyIDM1NC4zIDMyTDI0MCAzMmwwIDEyOHptMjA4IDMyTDAgMTkyIDAgNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0bDMyMCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMjI0elwiXVxufTtcbmNvbnN0IGZhVmVudXNNYXJzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3ZlbnVzLW1hcnMnLFxuICBpY29uOiBbNjQwLCA1MTIsIFs5ODkyXSwgXCJmMjI4XCIsIFwiTTE3NiAyODhhMTEyIDExMiAwIDEgMCAwLTIyNCAxMTIgMTEyIDAgMSAwIDAgMjI0ek0zNTIgMTc2YzAgODYuMy02Mi4xIDE1OC4xLTE0NCAxNzMuMWwwIDM0LjkgMzIgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtMzIgMCAwIDMyYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtMzItMzIgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmwzMiAwIDAtMzQuOUM2Mi4xIDMzNC4xIDAgMjYyLjMgMCAxNzZDMCA3OC44IDc4LjggMCAxNzYgMHMxNzYgNzguOCAxNzYgMTc2ek0yNzEuOSAzNjAuNmMxOS4zLTEwLjEgMzYuOS0yMy4xIDUyLjEtMzguNGMyMCAxOC41IDQ2LjcgMjkuOCA3Ni4xIDI5LjhjNjEuOSAwIDExMi01MC4xIDExMi0xMTJzLTUwLjEtMTEyLTExMi0xMTJjLTcuMiAwLTE0LjMgLjctMjEuMSAyYy00LjktMjEuNS0xMy00MS43LTI0LTYwLjJDMzY5LjMgNjYgMzg0LjQgNjQgNDAwIDY0YzM3IDAgNzEuNCAxMS40IDk5LjggMzFsMjAuNi0yMC42TDQ4NyA0MWMtNi45LTYuOS04LjktMTcuMi01LjItMjYuMlM0OTQuMyAwIDUwNCAwTDYxNiAwYzEzLjMgMCAyNCAxMC43IDI0IDI0bDAgMTEyYzAgOS43LTUuOCAxOC41LTE0LjggMjIuMnMtMTkuMyAxLjctMjYuMi01LjJsLTMzLjQtMzMuNEw1NDUgMTQwLjJjMTkuNSAyOC40IDMxIDYyLjcgMzEgOTkuOGMwIDk3LjItNzguOCAxNzYtMTc2IDE3NmMtNTAuNSAwLTk2LTIxLjMtMTI4LjEtNTUuNHpcIl1cbn07XG5jb25zdCBmYUFycm93UG9pbnRlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhcnJvdy1wb2ludGVyJyxcbiAgaWNvbjogWzMyMCwgNTEyLCBbXCJtb3VzZS1wb2ludGVyXCJdLCBcImYyNDVcIiwgXCJNMCA1NS4yTDAgNDI2YzAgMTIuMiA5LjkgMjIgMjIgMjJjNi4zIDAgMTIuNC0yLjcgMTYuNi03LjVMMTIxLjIgMzQ2bDU4LjEgMTE2LjNjNy45IDE1LjggMjcuMSAyMi4yIDQyLjkgMTQuM3MyMi4yLTI3LjEgMTQuMy00Mi45TDE3OS44IDMyMGwxMTguMSAwYzEyLjIgMCAyMi4xLTkuOSAyMi4xLTIyLjFjMC02LjMtMi43LTEyLjMtNy40LTE2LjVMMzguNiAzNy45QzM0LjMgMzQuMSAyOC45IDMyIDIzLjIgMzJDMTAuNCAzMiAwIDQyLjQgMCA1NS4yelwiXVxufTtcbmNvbnN0IGZhTW91c2VQb2ludGVyID0gZmFBcnJvd1BvaW50ZXI7XG5jb25zdCBmYU1heGltaXplID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21heGltaXplJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXCJleHBhbmQtYXJyb3dzLWFsdFwiXSwgXCJmMzFlXCIsIFwiTTIwMCAzMkw1NiAzMkM0Mi43IDMyIDMyIDQyLjcgMzIgNTZsMCAxNDRjMCA5LjcgNS44IDE4LjUgMTQuOCAyMi4yczE5LjMgMS43IDI2LjItNS4ybDQwLTQwIDc5IDc5LTc5IDc5TDczIDI5NWMtNi45LTYuOS0xNy4yLTguOS0yNi4yLTUuMlMzMiAzMDIuMyAzMiAzMTJsMCAxNDRjMCAxMy4zIDEwLjcgMjQgMjQgMjRsMTQ0IDBjOS43IDAgMTguNS01LjggMjIuMi0xNC44czEuNy0xOS4zLTUuMi0yNi4ybC00MC00MCA3OS03OSA3OSA3OS00MCA0MGMtNi45IDYuOS04LjkgMTcuMi01LjIgMjYuMnMxMi41IDE0LjggMjIuMiAxNC44bDE0NCAwYzEzLjMgMCAyNC0xMC43IDI0LTI0bDAtMTQ0YzAtOS43LTUuOC0xOC41LTE0LjgtMjIuMnMtMTkuMy0xLjctMjYuMiA1LjJsLTQwIDQwLTc5LTc5IDc5LTc5IDQwIDQwYzYuOSA2LjkgMTcuMiA4LjkgMjYuMiA1LjJzMTQuOC0xMi41IDE0LjgtMjIuMmwwLTE0NGMwLTEzLjMtMTAuNy0yNC0yNC0yNEwzMTIgMzJjLTkuNyAwLTE4LjUgNS44LTIyLjIgMTQuOHMtMS43IDE5LjMgNS4yIDI2LjJsNDAgNDAtNzkgNzktNzktNzkgNDAtNDBjNi45LTYuOSA4LjktMTcuMiA1LjItMjYuMlMyMDkuNyAzMiAyMDAgMzJ6XCJdXG59O1xuY29uc3QgZmFFeHBhbmRBcnJvd3NBbHQgPSBmYU1heGltaXplO1xuY29uc3QgZmFDaGFyZ2luZ1N0YXRpb24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2hhcmdpbmctc3RhdGlvbicsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjVlN1wiLCBcIk05NiAwQzYwLjcgMCAzMiAyOC43IDMyIDY0bDAgMzg0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDI4OCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybDAtMTQ0IDE2IDBjMjIuMSAwIDQwIDE3LjkgNDAgNDBsMCAzMmMwIDM5LjggMzIuMiA3MiA3MiA3MnM3Mi0zMi4yIDcyLTcybDAtMTIzLjdjMzIuNS0xMC4yIDU2LTQwLjUgNTYtNzYuM2wwLTMyYzAtOC44LTcuMi0xNi0xNi0xNmwtMTYgMCAwLTQ4YzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2bDAgNDgtMzIgMCAwLTQ4YzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2bDAgNDgtMTYgMGMtOC44IDAtMTYgNy4yLTE2IDE2bDAgMzJjMCAzNS44IDIzLjUgNjYuMSA1NiA3Ni4zTDQ3MiAzNzZjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRsMC0zMmMwLTQ4LjYtMzkuNC04OC04OC04OGwtMTYgMCAwLTE5MmMwLTM1LjMtMjguNy02NC02NC02NEw5NiAwek0yMTYuOSA4Mi43YzYgNCA4LjUgMTEuNSA2LjMgMTguM2wtMjUgNzQuOSA1Ny44IDBjNi43IDAgMTIuNyA0LjIgMTUgMTAuNHMuNSAxMy4zLTQuNiAxNy43bC0xMTIgOTZjLTUuNSA0LjctMTMuNCA1LjEtMTkuMyAxLjFzLTguNS0xMS41LTYuMy0xOC4zbDI1LTc0LjlMOTYgMjA4Yy02LjcgMC0xMi43LTQuMi0xNS0xMC40cy0uNS0xMy4zIDQuNi0xNy43bDExMi05NmM1LjUtNC43IDEzLjQtNS4xIDE5LjMtMS4xelwiXVxufTtcbmNvbnN0IGZhU2hhcGVzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NoYXBlcycsXG4gIGljb246IFs1MTIsIDUxMiwgW1widHJpYW5nbGUtY2lyY2xlLXNxdWFyZVwiXSwgXCJmNjFmXCIsIFwiTTMxNS40IDE1LjVDMzA5LjcgNS45IDI5OS4yIDAgMjg4IDBzLTIxLjcgNS45LTI3LjQgMTUuNWwtOTYgMTYwYy01LjkgOS45LTYuMSAyMi4yLS40IDMyLjJzMTYuMyAxNi4yIDI3LjggMTYuMmwxOTIgMGMxMS41IDAgMjIuMi02LjIgMjcuOC0xNi4yczUuNS0yMi4zLS40LTMyLjJsLTk2LTE2MHpNMjg4IDMxMmwwIDE0NGMwIDIyLjEgMTcuOSA0MCA0MCA0MGwxNDQgMGMyMi4xIDAgNDAtMTcuOSA0MC00MGwwLTE0NGMwLTIyLjEtMTcuOS00MC00MC00MGwtMTQ0IDBjLTIyLjEgMC00MCAxNy45LTQwIDQwek0xMjggNTEyYTEyOCAxMjggMCAxIDAgMC0yNTYgMTI4IDEyOCAwIDEgMCAwIDI1NnpcIl1cbn07XG5jb25zdCBmYVRyaWFuZ2xlQ2lyY2xlU3F1YXJlID0gZmFTaGFwZXM7XG5jb25zdCBmYVNodWZmbGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc2h1ZmZsZScsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyODI1NiwgXCJyYW5kb21cIl0sIFwiZjA3NFwiLCBcIk00MDMuOCAzNC40YzEyLTUgMjUuNy0yLjIgMzQuOSA2LjlsNjQgNjRjNiA2IDkuNCAxNC4xIDkuNCAyMi42cy0zLjQgMTYuNi05LjQgMjIuNmwtNjQgNjRjLTkuMiA5LjItMjIuOSAxMS45LTM0LjkgNi45cy0xOS44LTE2LjYtMTkuOC0yOS42bDAtMzItMzIgMGMtMTAuMSAwLTE5LjYgNC43LTI1LjYgMTIuOEwyODQgMjI5LjMgMjQ0IDE3NmwzMS4yLTQxLjZDMjkzLjMgMTEwLjIgMzIxLjggOTYgMzUyIDk2bDMyIDAgMC0zMmMwLTEyLjkgNy44LTI0LjYgMTkuOC0yOS42ek0xNjQgMjgyLjdMMjA0IDMzNmwtMzEuMiA0MS42QzE1NC43IDQwMS44IDEyNi4yIDQxNiA5NiA0MTZsLTY0IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJsNjQgMGMxMC4xIDAgMTkuNi00LjcgMjUuNi0xMi44TDE2NCAyODIuN3ptMjc0LjYgMTg4Yy05LjIgOS4yLTIyLjkgMTEuOS0zNC45IDYuOXMtMTkuOC0xNi42LTE5LjgtMjkuNmwwLTMyLTMyIDBjLTMwLjIgMC01OC43LTE0LjItNzYuOC0zOC40TDEyMS42IDE3Mi44Yy02LTguMS0xNS41LTEyLjgtMjUuNi0xMi44bC02NCAwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDY0IDBjMzAuMiAwIDU4LjcgMTQuMiA3Ni44IDM4LjRMMzI2LjQgMzM5LjJjNiA4LjEgMTUuNSAxMi44IDI1LjYgMTIuOGwzMiAwIDAtMzJjMC0xMi45IDcuOC0yNC42IDE5LjgtMjkuNnMyNS43LTIuMiAzNC45IDYuOWw2NCA2NGM2IDYgOS40IDE0LjEgOS40IDIyLjZzLTMuNCAxNi42LTkuNCAyMi42bC02NCA2NHpcIl1cbn07XG5jb25zdCBmYVJhbmRvbSA9IGZhU2h1ZmZsZTtcbmNvbnN0IGZhUGVyc29uUnVubmluZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwZXJzb24tcnVubmluZycsXG4gIGljb246IFs0NDgsIDUxMiwgWzEyNzkzOSwgXCJydW5uaW5nXCJdLCBcImY3MGNcIiwgXCJNMzIwIDQ4YTQ4IDQ4IDAgMSAwIC05NiAwIDQ4IDQ4IDAgMSAwIDk2IDB6TTEyNS43IDE3NS41YzkuOS05LjkgMjMuNC0xNS41IDM3LjUtMTUuNWMxLjkgMCAzLjggLjEgNS42IC4zTDEzNy42IDI1NGMtOS4zIDI4IDEuNyA1OC44IDI2LjggNzQuNWw4Ni4yIDUzLjktMjUuNCA4OC44Yy00LjkgMTcgNSAzNC43IDIyIDM5LjZzMzQuNy01IDM5LjYtMjJsMjguNy0xMDAuNGM1LjktMjAuNi0yLjYtNDIuNi0yMC43LTUzLjlMMjM4IDI5OWwzMC45LTgyLjQgNS4xIDEyLjNDMjg5IDI2NC43IDMyMy45IDI4OCAzNjIuNyAyODhsMjEuMyAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC0yMS4zIDBjLTEyLjkgMC0yNC42LTcuOC0yOS41LTE5LjdsLTYuMy0xNWMtMTQuNi0zNS4xLTQ0LjEtNjEuOS04MC41LTczLjFsLTQ4LjctMTVjLTExLjEtMy40LTIyLjctNS4yLTM0LjQtNS4yYy0zMSAwLTYwLjggMTIuMy04Mi43IDM0LjNMNTcuNCAxNTMuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMGwyMy4xLTIzLjF6TTkxLjIgMzUyTDMyIDM1MmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmw2OS42IDBjMTkgMCAzNi4yLTExLjIgNDMuOS0yOC41TDE1NyAzNjEuNmwtOS41LTZjLTE3LjUtMTAuOS0zMC41LTI2LjgtMzcuOS00NC45TDkxLjIgMzUyelwiXVxufTtcbmNvbnN0IGZhUnVubmluZyA9IGZhUGVyc29uUnVubmluZztcbmNvbnN0IGZhTW9iaWxlUmV0cm8gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbW9iaWxlLXJldHJvJyxcbiAgaWNvbjogWzMyMCwgNTEyLCBbXSwgXCJlNTI3XCIsIFwiTTAgNjRDMCAyOC43IDI4LjcgMCA2NCAwTDI1NiAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMzg0YzAgMzUuMy0yOC43IDY0LTY0IDY0TDY0IDUxMmMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCA2NHptNjQgOTZsMCA2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMmwxMjggMGMxNy43IDAgMzItMTQuMyAzMi0zMmwwLTY0YzAtMTcuNy0xNC4zLTMyLTMyLTMyTDk2IDEyOGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6TTgwIDM1MmEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6bTI0IDU2YTI0IDI0IDAgMSAwIC00OCAwIDI0IDI0IDAgMSAwIDQ4IDB6bTU2LTU2YTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHptMjQgNTZhMjQgMjQgMCAxIDAgLTQ4IDAgMjQgMjQgMCAxIDAgNDggMHptNTYtNTZhMjQgMjQgMCAxIDAgMC00OCAyNCAyNCAwIDEgMCAwIDQ4em0yNCA1NmEyNCAyNCAwIDEgMCAtNDggMCAyNCAyNCAwIDEgMCA0OCAwek0xMjggNDhjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZsNjQgMGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNmwtNjQgMHpcIl1cbn07XG5jb25zdCBmYUdyaXBMaW5lc1ZlcnRpY2FsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2dyaXAtbGluZXMtdmVydGljYWwnLFxuICBpY29uOiBbMTkyLCA1MTIsIFtdLCBcImY3YTVcIiwgXCJNNjQgNjRjMC0xNy43LTE0LjMtMzItMzItMzJTMCA0Ni4zIDAgNjRMMCA0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMkw2NCA2NHptMTI4IDBjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJsMCAzODRjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTM4NHpcIl1cbn07XG5jb25zdCBmYVNwaWRlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzcGlkZXInLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjgzNzVdLCBcImY3MTdcIiwgXCJNMTU4LjQgMzIuNmM0LjgtMTIuNC0xLjQtMjYuMy0xMy44LTMxcy0yNi4zIDEuNC0zMSAxMy44TDgxLjEgMTAwYy03LjkgMjAuNy0zIDQ0LjEgMTIuNyA1OS43bDU3LjQgNTcuNEw3MC44IDE5MC4zYy0yLjQtLjgtNC4zLTIuNy01LjEtNS4xTDQ2LjggMTI4LjRDNDIuNiAxMTUuOCAyOSAxMDkgMTYuNCAxMTMuMlMtMyAxMzEgMS4yIDE0My42bDE4LjkgNTYuOGM1LjYgMTYuNyAxOC43IDI5LjggMzUuNCAzNS40TDExNi4xIDI1NiA1NS42IDI3Ni4yYy0xNi43IDUuNi0yOS44IDE4LjctMzUuNCAzNS40TDEuMiAzNjguNEMtMyAzODEgMy44IDM5NC42IDE2LjQgMzk4LjhzMjYuMi0yLjYgMzAuNC0xNS4ybDE4LjktNTYuOGMuOC0yLjQgMi43LTQuMyA1LjEtNS4xbDgwLjQtMjYuOEw5My43IDM1Mi4zQzc4LjEgMzY4IDczLjEgMzkxLjQgODEuMSA0MTJsMzIuNSA4NC42YzQuOCAxMi40IDE4LjYgMTguNSAzMSAxMy44czE4LjUtMTguNiAxMy44LTMxbC0zMi41LTg0LjZjLTEuMS0zLS40LTYuMyAxLjgtOC41TDE2MCAzNTMuOWMxIDUyLjEgNDMuNiA5NC4xIDk2IDk0LjFzOTUtNDEuOSA5Ni05NC4xbDMyLjMgMzIuM2MyLjIgMi4yIDIuOSA1LjYgMS44IDguNWwtMzIuNSA4NC42Yy00LjggMTIuNCAxLjQgMjYuMyAxMy44IDMxczI2LjMtMS40IDMxLTEzLjhMNDMwLjkgNDEyYzcuOS0yMC43IDMtNDQuMS0xMi43LTU5LjdsLTU3LjQtNTcuNCA4MC40IDI2LjhjMi40IC44IDQuMyAyLjcgNS4xIDUuMWwxOC45IDU2LjhjNC4yIDEyLjYgMTcuOCAxOS40IDMwLjQgMTUuMnMxOS40LTE3LjggMTUuMi0zMC40bC0xOC45LTU2LjhjLTUuNi0xNi43LTE4LjctMjkuOC0zNS40LTM1LjRMMzk1LjkgMjU2bDYwLjUtMjAuMmMxNi43LTUuNiAyOS44LTE4LjcgMzUuNC0zNS40bDE4LjktNTYuOGM0LjItMTIuNi0yLjYtMjYuMi0xNS4yLTMwLjRzLTI2LjIgMi42LTMwLjQgMTUuMmwtMTguOSA1Ni44Yy0uOCAyLjQtMi43IDQuMy01LjEgNS4xbC04MC40IDI2LjggNTcuNC01Ny40YzE1LjYtMTUuNiAyMC42LTM5IDEyLjctNTkuN0wzOTguNCAxNS40QzM5My42IDMgMzc5LjgtMy4yIDM2Ny40IDEuNnMtMTguNSAxOC42LTEzLjggMzFsMzIuNSA4NC42YzEuMSAzIC40IDYuMy0xLjggOC41TDMzNiAxNzQuMWwwLTE0LjFjMC0zMS44LTE4LjYtNTkuMy00NS41LTcyLjJjLTkuMS00LjQtMTguNSAzLjMtMTguNSAxMy40bDAgMTAuOGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNmwwLTEwLjhjMC0xMC4xLTkuNC0xNy43LTE4LjUtMTMuNEMxOTQuNiAxMDAuNyAxNzYgMTI4LjIgMTc2IDE2MGwwIDE0LjEtNDguMy00OC4zYy0yLjItMi4yLTIuOS01LjYtMS44LTguNWwzMi41LTg0LjZ6XCJdXG59O1xuY29uc3QgZmFIYW5kc0JvdW5kID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hhbmRzLWJvdW5kJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlNGY5XCIsIFwiTTk2IDMyQzk2IDE0LjMgODEuNyAwIDY0IDBTMzIgMTQuMyAzMiAzMmwwIDY0IDAgNTkuMSAwIC43TDMyIDE5MmwwIDIxLjljMCAxNC4yIDUuMSAyNy45IDE0LjMgMzguN0wxMzEuNiAzNTJsLTMuNiAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0bDMyIDAgMTI4IDAgNjQgMCAxMjggMCAzMiAwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0bC0zLjYgMCA4NS4zLTk5LjVjOS4yLTEwLjggMTQuMy0yNC41IDE0LjMtMzguN2wwLTIxLjkgMC0zNi4yIDAtLjdMNjA4IDk2bDAtNjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJsMCA2NCAwIDQ4LjgtNjkuMyA5Mi40Yy01LjcgNy42LTE2LjEgOS42LTI0LjIgNC44Yy05LjctNS43LTEyLjEtMTguNy01LjEtMjcuNUw0NzMgMTgwYzEwLjgtMTMuNSA4LjktMzMuMy00LjQtNDQuNXMtMzMtOS44LTQ0LjUgMy4ybC00Ni43IDUyLjVDMzYxIDIwOS43IDM1MiAyMzMuNCAzNTIgMjU4LjFsMCA2MS45IDAgMzItNjQgMCAwLTMyIDAtNjEuOWMwLTI0LjYtOS00OC40LTI1LjQtNjYuOGwtNDYuNy01Mi41Yy0xMS41LTEzLTMxLjMtMTQuNC00NC41LTMuMnMtMTUuMiAzMC45LTQuNCA0NC41bDI3LjYgMzQuNWM3IDguOCA0LjcgMjEuOC01LjEgMjcuNWMtOC4xIDQuOC0xOC42IDIuNy0yNC4yLTQuOEw5NiAxNDQuOCA5NiA5NmwwLTY0em02NCA0NDhsMCAzMiAxMjggMCAwLTMyIDY0IDAgMCAzMiAxMjggMCAwLTMyIDMyIDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRsLTMyIDAtMTI4IDAtNjQgMC0xMjggMC0zMiAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0bDMyIDB6XCJdXG59O1xuY29uc3QgZmFGaWxlSW52b2ljZURvbGxhciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmaWxlLWludm9pY2UtZG9sbGFyJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmNTcxXCIsIFwiTTY0IDBDMjguNyAwIDAgMjguNyAwIDY0TDAgNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0bDI1NiAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMjg4LTEyOCAwYy0xNy43IDAtMzItMTQuMy0zMi0zMkwyMjQgMCA2NCAwek0yNTYgMGwwIDEyOCAxMjggMEwyNTYgMHpNNjQgODBjMC04LjggNy4yLTE2IDE2LTE2bDY0IDBjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZMODAgOTZjLTguOCAwLTE2LTcuMi0xNi0xNnptMCA2NGMwLTguOCA3LjItMTYgMTYtMTZsNjQgMGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNmwtNjQgMGMtOC44IDAtMTYtNy4yLTE2LTE2em0xMjggNzJjOC44IDAgMTYgNy4yIDE2IDE2bDAgMTcuM2M4LjUgMS4yIDE2LjcgMy4xIDI0LjEgNS4xYzguNSAyLjMgMTMuNiAxMSAxMS4zIDE5LjZzLTExIDEzLjYtMTkuNiAxMS4zYy0xMS4xLTMtMjItNS4yLTMyLjEtNS4zYy04LjQtLjEtMTcuNCAxLjgtMjMuNiA1LjVjLTUuNyAzLjQtOC4xIDcuMy04LjEgMTIuOGMwIDMuNyAxLjMgNi41IDcuMyAxMC4xYzYuOSA0LjEgMTYuNiA3LjEgMjkuMiAxMC45bC41IC4xczAgMCAwIDBzMCAwIDAgMGMxMS4zIDMuNCAyNS4zIDcuNiAzNi4zIDE0LjZjMTIuMSA3LjYgMjIuNCAxOS43IDIyLjcgMzguMmMuMyAxOS4zLTkuNiAzMy4zLTIyLjkgNDEuNmMtNy43IDQuOC0xNi40IDcuNi0yNS4xIDkuMWwwIDE3LjFjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZsMC0xNy44Yy0xMS4yLTIuMS0yMS43LTUuNy0zMC45LTguOWMwIDAgMCAwIDAgMGMtMi4xLS43LTQuMi0xLjQtNi4yLTIuMWMtOC40LTIuOC0xMi45LTExLjktMTAuMS0yMC4yczExLjktMTIuOSAyMC4yLTEwLjFjMi41IC44IDQuOCAxLjYgNy4xIDIuNGMwIDAgMCAwIDAgMHMwIDAgMCAwczAgMCAwIDBjMTMuNiA0LjYgMjQuNiA4LjQgMzYuMyA4LjdjOS4xIC4zIDE3LjktMS43IDIzLjctNS4zYzUuMS0zLjIgNy45LTcuMyA3LjgtMTRjLS4xLTQuNi0xLjgtNy44LTcuNy0xMS42Yy02LjgtNC4zLTE2LjUtNy40LTI5LTExLjJsLTEuNi0uNXMwIDAgMCAwYy0xMS0zLjMtMjQuMy03LjMtMzQuOC0xMy43Yy0xMi03LjItMjIuNi0xOC45LTIyLjctMzcuM2MtLjEtMTkuNCAxMC44LTMyLjggMjMuOC00MC41YzcuNS00LjQgMTUuOC03LjIgMjQuMS04LjdsMC0xNy4zYzAtOC44IDcuMi0xNiAxNi0xNnpcIl1cbn07XG5jb25zdCBmYVBsYW5lQ2lyY2xlRXhjbGFtYXRpb24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGxhbmUtY2lyY2xlLWV4Y2xhbWF0aW9uJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlNTU2XCIsIFwiTTI1NiAwYy0zNSAwLTY0IDU5LjUtNjQgOTMuN2wwIDg0LjZMOC4xIDI4My40Yy01IDIuOC04LjEgOC4yLTguMSAxMy45bDAgNjUuNWMwIDEwLjYgMTAuMiAxOC4zIDIwLjQgMTUuNGwxNzEuNi00OSAwIDcwLjktNTcuNiA0My4yYy00IDMtNi40IDcuOC02LjQgMTIuOGwwIDQyYzAgNy44IDYuMyAxNCAxNCAxNGMxLjMgMCAyLjYtLjIgMy45LS41TDI1NiA0ODBsMTEwLjEgMzEuNWMxLjMgLjQgMi42IC41IDMuOSAuNWM2IDAgMTEuMS0zLjcgMTMuMS05QzM0NC41IDQ3MC43IDMyMCA0MjIuMiAzMjAgMzY4YzAtNjAuNiAzMC42LTExNCA3Ny4xLTE0NS42TDMyMCAxNzguM2wwLTg0LjZDMzIwIDU5LjUgMjkyIDAgMjU2IDB6TTQ5NiA1MTJhMTQ0IDE0NCAwIDEgMCAwLTI4OCAxNDQgMTQ0IDAgMSAwIDAgMjg4em0wLTk2YTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHptMC0xNDRjOC44IDAgMTYgNy4yIDE2IDE2bDAgODBjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZsMC04MGMwLTguOCA3LjItMTYgMTYtMTZ6XCJdXG59O1xuY29uc3QgZmFYUmF5ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3gtcmF5JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNDk3XCIsIFwiTTAgNjRDMCA0Ni4zIDE0LjMgMzIgMzIgMzJsNDQ4IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsMCAzMjBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJMMzIgNDgwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyTDMyIDk2QzE0LjMgOTYgMCA4MS43IDAgNjR6TTI1NiA5NmMtOC44IDAtMTYgNy4yLTE2IDE2bDAgMzItODAgMGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmw4MCAwIDAgNDgtMTEyIDBjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZsMTEyIDAgMCA3MC42TDE4OS4xIDMwN2MtNS4yLTItMTAuNi0zLTE2LjItM2wtMi4xIDBjLTIzLjYgMC00Mi44IDE5LjItNDIuOCA0Mi44YzAgOS42IDMuMiAxOC45IDkuMSAyNi40bDE4LjIgMjMuMmM5LjcgMTIuNCAyNC42IDE5LjYgNDAuMyAxOS42bDEyMC44IDBjMTUuNyAwIDMwLjYtNy4yIDQwLjMtMTkuNmwxOC4yLTIzLjJjNS45LTcuNSA5LjEtMTYuOCA5LjEtMjYuNGMwLTIzLjYtMTkuMi00Mi44LTQyLjgtNDIuOGwtMi4yIDBjLTUuNSAwLTExIDEtMTYuMiAzTDI3MiAzMjYuNmwwLTcwLjYgMTEyIDBjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZsLTExMiAwIDAtNDggODAgMGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNmwtODAgMCAwLTMyYzAtOC44LTcuMi0xNi0xNi0xNnpNMjA4IDM1MmExNiAxNiAwIDEgMSAwIDMyIDE2IDE2IDAgMSAxIDAtMzJ6bTgwIDE2YTE2IDE2IDAgMSAxIDMyIDAgMTYgMTYgMCAxIDEgLTMyIDB6XCJdXG59O1xuY29uc3QgZmFTcGVsbENoZWNrID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NwZWxsLWNoZWNrJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmODkxXCIsIFwiTTExMiAwQzk5LjEgMCA4Ny40IDcuOCA4Mi41IDE5LjdsLTY2LjcgMTYwLTEzLjMgMzJjLTYuOCAxNi4zIC45IDM1IDE3LjIgNDEuOHMzNS0uOSA0MS44LTE3LjJMNjYuNyAyMjRsOTAuNyAwIDUuMSAxMi4zYzYuOCAxNi4zIDI1LjUgMjQgNDEuOCAxNy4yczI0LTI1LjUgMTcuMi00MS44bC0xMy4zLTMyLTY2LjctMTYwQzEzNi42IDcuOCAxMjQuOSAwIDExMiAwem0xOC43IDE2MGwtMzcuMyAwTDExMiAxMTUuMiAxMzAuNyAxNjB6TTI1NiAzMmwwIDk2IDAgOTZjMCAxNy43IDE0LjMgMzIgMzIgMzJsODAgMGM0NC4yIDAgODAtMzUuOCA4MC04MGMwLTIzLjEtOS44LTQzLjgtMjUuNC01OC40YzYtMTEuMiA5LjQtMjQgOS40LTM3LjZjMC00NC4yLTM1LjgtODAtODAtODBMMjg4IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyem05NiA2NGwtMzIgMCAwLTMyIDMyIDBjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZ6bS0zMiA2NGwzMiAwIDE2IDBjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZsLTQ4IDAgMC0zMnpNNTY2LjYgMzEwLjZjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBMMzUyIDQzNC43bC03My40LTczLjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zbDk2IDk2YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDE5Mi0xOTJ6XCJdXG59O1xuY29uc3QgZmFTbGFzaCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzbGFzaCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjcxNVwiLCBcIk01LjEgOS4yQzEzLjMtMS4yIDI4LjQtMy4xIDM4LjggNS4xbDU5MiA0NjRjMTAuNCA4LjIgMTIuMyAyMy4zIDQuMSAzMy43cy0yMy4zIDEyLjMtMzMuNyA0LjFMOS4yIDQyLjlDLTEuMiAzNC43LTMuMSAxOS42IDUuMSA5LjJ6XCJdXG59O1xuY29uc3QgZmFDb21wdXRlck1vdXNlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NvbXB1dGVyLW1vdXNlJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbMTI4NDMzLCBcIm1vdXNlXCJdLCBcImY4Y2NcIiwgXCJNMCAxOTJsMTc2IDBMMTc2IDAgMTYwIDBDNzEuNiAwIDAgNzEuNiAwIDE2MGwwIDMyem0wIDMyTDAgMzUyYzAgODguNCA3MS42IDE2MCAxNjAgMTYwbDY0IDBjODguNCAwIDE2MC03MS42IDE2MC0xNjBsMC0xMjgtMTkyIDBMMCAyMjR6bTM4NC0zMmwwLTMyQzM4NCA3MS42IDMxMi40IDAgMjI0IDBMMjA4IDBsMCAxOTIgMTc2IDB6XCJdXG59O1xuY29uc3QgZmFNb3VzZSA9IGZhQ29tcHV0ZXJNb3VzZTtcbmNvbnN0IGZhQXJyb3dSaWdodFRvQnJhY2tldCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhcnJvdy1yaWdodC10by1icmFja2V0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXCJzaWduLWluXCJdLCBcImYwOTBcIiwgXCJNMzUyIDk2bDY0IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCAyNTZjMCAxNy43LTE0LjMgMzItMzIgMzJsLTY0IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsNjQgMGM1MyAwIDk2LTQzIDk2LTk2bDAtMjU2YzAtNTMtNDMtOTYtOTYtOTZsLTY0IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJ6bS05LjQgMTgyLjZjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNsLTEyOC0xMjhjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zTDI0Mi43IDIyNCAzMiAyMjRjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsMjEwLjcgMC03My40IDczLjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBsMTI4LTEyOHpcIl1cbn07XG5jb25zdCBmYVNpZ25JbiA9IGZhQXJyb3dSaWdodFRvQnJhY2tldDtcbmNvbnN0IGZhU2hvcFNsYXNoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3Nob3Atc2xhc2gnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtcInN0b3JlLWFsdC1zbGFzaFwiXSwgXCJlMDcwXCIsIFwiTTM4LjggNS4xQzI4LjQtMy4xIDEzLjMtMS4yIDUuMSA5LjJTLTEuMiAzNC43IDkuMiA0Mi45bDU5MiA0NjRjMTAuNCA4LjIgMjUuNSA2LjMgMzMuNy00LjFzNi4zLTI1LjUtNC4xLTMzLjdsLTU0LjgtNDNMNTc2IDIyNGwtNjQgMCAwIDE1MkwzODQgMjc1LjdsMC01MS43LTY0IDAgMCAxLjVMMjc3LjIgMTkybDMyNS45IDBjMjAuMyAwIDM2LjgtMTYuNSAzNi44LTM2LjhjMC03LjMtMi4yLTE0LjQtNi4yLTIwLjRMNTU4LjIgMjEuNEM1NDkuMyA4IDUzNC40IDAgNTE4LjMgMEwxMjEuNyAwYy0xNiAwLTMxIDgtMzkuOSAyMS40TDc0LjEgMzIuOCAzOC44IDUuMXpNMzYuOCAxOTJsODUgMEwyMSAxMTIuNSA2LjIgMTM0LjdjLTQgNi4xLTYuMiAxMy4yLTYuMiAyMC40QzAgMTc1LjUgMTYuNSAxOTIgMzYuOCAxOTJ6TTMyMCAzODRsLTE5MiAwIDAtMTYwLTY0IDAgMCAxNjAgMCA4MGMwIDI2LjUgMjEuNSA0OCA0OCA0OGwyMjQgMGMyNi41IDAgNDgtMjEuNSA0OC00OGwwLTY1LjUtNjQtNTAuNCAwIDM1Ljl6XCJdXG59O1xuY29uc3QgZmFTdG9yZUFsdFNsYXNoID0gZmFTaG9wU2xhc2g7XG5jb25zdCBmYVNlcnZlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzZXJ2ZXInLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYyMzNcIiwgXCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NmwwIDY0YzAgMzUuMyAyOC43IDY0IDY0IDY0bDM4NCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtNjRjMC0zNS4zLTI4LjctNjQtNjQtNjRMNjQgMzJ6bTI4MCA3MmEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6bTQ4IDI0YTI0IDI0IDAgMSAxIDQ4IDAgMjQgMjQgMCAxIDEgLTQ4IDB6TTY0IDI4OGMtMzUuMyAwLTY0IDI4LjctNjQgNjRsMCA2NGMwIDM1LjMgMjguNyA2NCA2NCA2NGwzODQgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTY0YzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDI4OHptMjgwIDcyYTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHptNTYgMjRhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHpcIl1cbn07XG5jb25zdCBmYVZpcnVzQ292aWRTbGFzaCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd2aXJ1cy1jb3ZpZC1zbGFzaCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTRhOVwiLCBcIk0zOC44IDUuMUMyOC40LTMuMSAxMy4zLTEuMiA1LjEgOS4yUy0xLjIgMzQuNyA5LjIgNDIuOWw1OTIgNDY0YzEwLjQgOC4yIDI1LjUgNi4zIDMzLjctNC4xczYuMy0yNS41LTQuMS0zMy43TDQ3Mi4xIDM0NC43YzExLjQtMTkuNSAxOS4xLTQxLjQgMjIuMy02NC43bDMzLjYgMCAwIDE2YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRsMC04MGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNGwwIDE2LTMzLjYgMGMtNC4yLTMwLjctMTYuMy01OC44LTM0LjEtODIuM0w0ODQgMTI1LjlsMTEuMyAxMS4zYzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwczkuNC0yNC42IDAtMzMuOUw0NzIuNyA0Ni43Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMHMtOS40IDI0LjYgMCAzMy45TDQ1MC4xIDkybC0yMy44IDIzLjhDNDAyLjggOTcuOSAzNzQuNyA4NS44IDM0NCA4MS42TDM0NCA0OGwxNiAwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0TDI4MCAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0bDE2IDAgMCAzMy42Yy0zMC43IDQuMi01OC44IDE2LjMtODIuMyAzNC4xTDE4OS45IDkybDExLjMtMTEuM2M5LjQtOS40IDkuNC0yNC42IDAtMzMuOXMtMjQuNi05LjQtMzMuOSAwTDEzNC4xIDc5LjggMzguOCA1LjF6TTE0OS4yIDIxMy41Yy0xLjUgNi0yLjcgMTIuMi0zLjUgMTguNUwxMTIgMjMybDAtMTZjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjRsMCA4MGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0bDAtMTYgMzMuNiAwYzQuMiAzMC43IDE2LjMgNTguOCAzNC4xIDgyLjNMMTU2IDM4Ni4xbC0xMS4zLTExLjNjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwcy05LjQgMjQuNiAwIDMzLjlsNTYuNiA1Ni42YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwczkuNC0yNC42IDAtMzMuOUwxODkuOSA0MjBsMjMuOC0yMy44YzIzLjUgMTcuOSA1MS43IDI5LjkgODIuMyAzNC4xbDAgMzMuNi0xNiAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0bDgwIDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRsLTE2IDAgMC0zMy42YzIwLjQtMi44IDM5LjctOS4xIDU3LjMtMTguMkwxNDkuMiAyMTMuNXpcIl1cbn07XG5jb25zdCBmYVNob3BMb2NrID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3Nob3AtbG9jaycsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTRhNVwiLCBcIk0zNi44IDE5Mmw0MTIuOCAwYzIwLjItMTkuOCA0Ny45LTMyIDc4LjQtMzJjMzAuNSAwIDU4LjEgMTIuMiA3OC4zIDMxLjljMTguOS0xLjYgMzMuNy0xNy40IDMzLjctMzYuN2MwLTcuMy0yLjItMTQuNC02LjItMjAuNEw1NTguMiAyMS40QzU0OS4zIDggNTM0LjQgMCA1MTguMyAwTDEyMS43IDBjLTE2IDAtMzEgOC0zOS45IDIxLjRMNi4yIDEzNC43Yy00IDYuMS02LjIgMTMuMi02LjIgMjAuNEMwIDE3NS41IDE2LjUgMTkyIDM2LjggMTkyek0zODQgMjI0bC02NCAwIDAgMTYwLTE5MiAwIDAtMTYwLTY0IDAgMCAxNjAgMCA4MGMwIDI2LjUgMjEuNSA0OCA0OCA0OGwyMjQgMGMyNi41IDAgNDgtMjEuNSA0OC00OGwwLTgwIDAtMzIgMC0xMjh6bTE0NCAxNmMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDQ4LTY0IDAgMC00OGMwLTE3LjcgMTQuMy0zMiAzMi0zMnptLTgwIDMybDAgNDhjLTE3LjcgMC0zMiAxNC4zLTMyIDMybDAgMTI4YzAgMTcuNyAxNC4zIDMyIDMyIDMybDE2MCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMybDAtMTI4YzAtMTcuNy0xNC4zLTMyLTMyLTMybDAtNDhjMC00NC4yLTM1LjgtODAtODAtODBzLTgwIDM1LjgtODAgODB6XCJdXG59O1xuY29uc3QgZmFIb3VyZ2xhc3NTdGFydCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdob3VyZ2xhc3Mtc3RhcnQnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtcImhvdXJnbGFzcy0xXCJdLCBcImYyNTFcIiwgXCJNMzIgMEMxNC4zIDAgMCAxNC4zIDAgMzJTMTQuMyA2NCAzMiA2NGwwIDExYzAgNDIuNCAxNi45IDgzLjEgNDYuOSAxMTMuMUwxNDYuNyAyNTYgNzguOSAzMjMuOUM0OC45IDM1My45IDMyIDM5NC42IDMyIDQzN2wwIDExYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDMyIDAgMjU2IDAgMzIgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwwLTExYzAtNDIuNC0xNi45LTgzLjEtNDYuOS0xMTMuMUwyMzcuMyAyNTZsNjcuOS02Ny45YzMwLTMwIDQ2LjktNzAuNyA0Ni45LTExMy4xbDAtMTFjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJMMzIwIDAgNjQgMCAzMiAwek0yODggNDM3bDAgMTFMOTYgNDQ4bDAtMTFjMC0yNS41IDEwLjEtNDkuOSAyOC4xLTY3LjlMMTkyIDMwMS4zbDY3LjkgNjcuOWMxOCAxOCAyOC4xIDQyLjQgMjguMSA2Ny45elwiXVxufTtcbmNvbnN0IGZhSG91cmdsYXNzMSA9IGZhSG91cmdsYXNzU3RhcnQ7XG5jb25zdCBmYUJsZW5kZXJQaG9uZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdibGVuZGVyLXBob25lJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmNmI2XCIsIFwiTTIyNCAzNTJMMTk2LjggNTIuM0MxOTQuMiAyNC4yIDIxNi4zIDAgMjQ0LjYgMEw1MzQuMSAwYzIxLjEgMCAzNi40IDIwLjEgMzAuOSA0MC40TDU1OC41IDY0IDQwMCA2NGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmwxNDkuOCAwLTE3LjUgNjRMNDAwIDE2MGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmwxMjMuNiAwLTE3LjUgNjRMNDAwIDI1NmMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmw5Ny41IDBMNDgwIDM1MmwtMjU2IDB6bS0xNiAzMmwyODggMGMyNi41IDAgNDggMjEuNSA0OCA0OGwwIDMyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4bC0yODggMGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhsMC0zMmMwLTI2LjUgMjEuNS00OCA0OC00OHptMTQ0IDk2YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpNMTQ3LjUgMzAuN2MxMC44IDYuNyAxNS4zIDIxIDEwLjYgMzMuNGwtMjIgNTcuOGMtNC4yIDEwLjktMTQuNSAxNy42LTI1LjMgMTYuNGwtMzMuMy0zLjZjLTEzLjYgNDIuMi0xMy42IDg4LjQgMCAxMzAuN2wzMy4zLTMuNmMxMC45LTEuMiAyMS4yIDUuNSAyNS4zIDE2LjRsMjIgNTcuOGM0LjcgMTIuNCAuMiAyNi43LTEwLjYgMzMuNGwtNDQgMjcuMmMtOS43IDYtMjEuOSA0LjItMjkuOC00LjNDLTI0LjYgMjg2LTI0LjYgMTE0IDczLjcgNy44QzgxLjYtLjcgOTMuOC0yLjUgMTAzLjUgMy41bDQ0IDI3LjJ6XCJdXG59O1xuY29uc3QgZmFCdWlsZGluZ1doZWF0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2J1aWxkaW5nLXdoZWF0JyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlNGRiXCIsIFwiTTAgNDhDMCAyMS41IDIxLjUgMCA0OCAwTDMzNiAwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4bDAgNDE2YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4bC05NiAwIDAtODBjMC0yNi41LTIxLjUtNDgtNDgtNDhzLTQ4IDIxLjUtNDggNDhsMCA4MC05NiAwYy0yNi41IDAtNDgtMjEuNS00OC00OEwwIDQ4ek04MCAyMjRjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDMyYzAgOC44IDcuMiAxNiAxNiAxNmwzMiAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTMyYzAtOC44LTcuMi0xNi0xNi0xNmwtMzIgMHptODAgMTZsMCAzMmMwIDguOCA3LjIgMTYgMTYgMTZsMzIgMGM4LjggMCAxNi03LjIgMTYtMTZsMC0zMmMwLTguOC03LjItMTYtMTYtMTZsLTMyIDBjLTguOCAwLTE2IDcuMi0xNiAxNnptMTEyLTE2Yy04LjggMC0xNiA3LjItMTYgMTZsMCAzMmMwIDguOCA3LjIgMTYgMTYgMTZsMzIgMGM4LjggMCAxNi03LjIgMTYtMTZsMC0zMmMwLTguOC03LjItMTYtMTYtMTZsLTMyIDB6TTY0IDExMmwwIDMyYzAgOC44IDcuMiAxNiAxNiAxNmwzMiAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTMyYzAtOC44LTcuMi0xNi0xNi0xNkw4MCA5NmMtOC44IDAtMTYgNy4yLTE2IDE2ek0xNzYgOTZjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDMyYzAgOC44IDcuMiAxNiAxNiAxNmwzMiAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTMyYzAtOC44LTcuMi0xNi0xNi0xNmwtMzIgMHptODAgMTZsMCAzMmMwIDguOCA3LjIgMTYgMTYgMTZsMzIgMGM4LjggMCAxNi03LjIgMTYtMTZsMC0zMmMwLTguOC03LjItMTYtMTYtMTZsLTMyIDBjLTguOCAwLTE2IDcuMi0xNiAxNnptMzg0IDgwbDAgMTZjMCA0NC4yLTM1LjggODAtODAgODBsLTE2IDAgMC0xNmMwLTQ0LjIgMzUuOC04MCA4MC04MGwxNiAwem0wIDEyOGMwIDQ0LjItMzUuOCA4MC04MCA4MGwtMTYgMCAwLTE2YzAtNDQuMiAzNS44LTgwIDgwLTgwbDE2IDAgMCAxNnptMCAxMTJjMCA0NC4yLTM1LjggODAtODAgODBsLTE2IDAgMC0xNmMwLTQ0LjIgMzUuOC04MCA4MC04MGwxNiAwIDAgMTZ6TTUxMiA0OTZsMCAxNi0xNiAwYy00NC4yIDAtODAtMzUuOC04MC04MGwwLTE2IDE2IDBjNDQuMiAwIDgwIDM1LjggODAgODB6bTAtOTZsLTE2IDBjLTQ0LjIgMC04MC0zNS44LTgwLTgwbDAtMTYgMTYgMGM0NC4yIDAgODAgMzUuOCA4MCA4MGwwIDE2em0wLTEyOGwwIDE2LTE2IDBjLTQ0LjIgMC04MC0zNS44LTgwLTgwbDAtMTYgMTYgMGM0NC4yIDAgODAgMzUuOCA4MCA4MHpNNTI4IDMyYzEzLjMgMCAyNCAxMC43IDI0IDI0bDAgMTA0YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0bDAtMTA0YzAtMTMuMyAxMC43LTI0IDI0LTI0em05NiA2NGwwIDMyYzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0bDAtMzJjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNHpNNDU2IDcyYzEzLjMgMCAyNCAxMC43IDI0IDI0bDAgMzJjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRsMC0zMmMwLTEzLjMgMTAuNy0yNCAyNC0yNHpcIl1cbn07XG5jb25zdCBmYVBlcnNvbkJyZWFzdGZlZWRpbmcgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGVyc29uLWJyZWFzdGZlZWRpbmcnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImU1M2FcIiwgXCJNMjI0IDBhODAgODAgMCAxIDEgMCAxNjBBODAgODAgMCAxIDEgMjI0IDB6TTQzNi44IDM4Mi44TDM3My41IDQ2MmMtMTYuNiAyMC43LTQ2LjggMjQuMS02Ny41IDcuNWMtMTcuNi0xNC4xLTIyLjctMzguMS0xMy41LTU3LjdsLS44LS4xYy0zOC45LTUuNi03NC4zLTI1LjEtOTkuNy01NC44bDAtMzYuOGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMmwwIDQ4YzAgLjggMCAxLjYgLjEgMi40bDEwMS40IDUwLjdjMjMuNyAxMS45IDMzLjMgNDAuNyAyMS41IDY0LjRzLTQwLjcgMzMuMy02NC40IDIxLjVMMjcuMiA0MjcuM2MtMS4xLS41LTIuMi0xLjEtMy4zLTEuN2MtNC45LTIuOC05LjItNi40LTEyLjYtMTAuNmMtNC42LTUuNC03LjgtMTEuNy05LjYtMTguNGMtMy4zLTEyLTEuOS0yNS4yIDQuOC0zNi42Yy42LTEuMSAxLjMtMi4yIDItMy4yTDc1LjYgMjU2LjFjMjYuNy00MC4xIDcxLjctNjQuMSAxMTkuOC02NC4xbDc1LjIgMGM0Ni41IDAgOTAuMSAyMi41IDExNy4yIDYwLjNsNTAuNyA3MC45YzIuMiAzIDQgNi4xIDUuNSA5LjRjMi45IDYuNyA0LjMgMTMuOCA0IDIwLjhjLS4zIDEwLjYtNC4yIDIxLTExLjIgMjkuNHpNMzIwIDMzMmE0NCA0NCAwIDEgMCAtODggMCA0NCA0NCAwIDEgMCA4OCAwelwiXVxufTtcbmNvbnN0IGZhUmlnaHRUb0JyYWNrZXQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncmlnaHQtdG8tYnJhY2tldCcsXG4gIGljb246IFs1MTIsIDUxMiwgW1wic2lnbi1pbi1hbHRcIl0sIFwiZjJmNlwiLCBcIk0yMTcuOSAxMDUuOUwzNDAuNyAyMjguN2M3LjIgNy4yIDExLjMgMTcuMSAxMS4zIDI3LjNzLTQuMSAyMC4xLTExLjMgMjcuM0wyMTcuOSA0MDYuMWMtNi40IDYuNC0xNSA5LjktMjQgOS45Yy0xOC43IDAtMzMuOS0xNS4yLTMzLjktMzMuOWwwLTYyLjFMMzIgMzIwYy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTY0YzAtMTcuNyAxNC4zLTMyIDMyLTMybDEyOCAwIDAtNjIuMWMwLTE4LjcgMTUuMi0zMy45IDMzLjktMzMuOWM5IDAgMTcuNiAzLjYgMjQgOS45ek0zNTIgNDE2bDY0IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJsMC0yNTZjMC0xNy43LTE0LjMtMzItMzItMzJsLTY0IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJsNjQgMGM1MyAwIDk2IDQzIDk2IDk2bDAgMjU2YzAgNTMtNDMgOTYtOTYgOTZsLTY0IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJ6XCJdXG59O1xuY29uc3QgZmFTaWduSW5BbHQgPSBmYVJpZ2h0VG9CcmFja2V0O1xuY29uc3QgZmFWZW51cyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd2ZW51cycsXG4gIGljb246IFszODQsIDUxMiwgWzk3OTJdLCBcImYyMjFcIiwgXCJNODAgMTc2YTExMiAxMTIgMCAxIDEgMjI0IDBBMTEyIDExMiAwIDEgMSA4MCAxNzZ6TTIyNCAzNDkuMWM4MS45LTE1IDE0NC04Ni44IDE0NC0xNzMuMUMzNjggNzguOCAyODkuMiAwIDE5MiAwUzE2IDc4LjggMTYgMTc2YzAgODYuMyA2Mi4xIDE1OC4xIDE0NCAxNzMuMWwwIDM0LjktMzIgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwzMiAwIDAgMzJjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTMyIDMyIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTMyIDAgMC0zNC45elwiXVxufTtcbmNvbnN0IGZhUGFzc3BvcnQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGFzc3BvcnQnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImY1YWJcIiwgXCJNMCA2NEMwIDI4LjcgMjguNyAwIDY0IDBMMzg0IDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCAzODRjMCAzNS4zLTI4LjcgNjQtNjQgNjRMNjQgNTEyYy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDY0ek0xODMgMjc4LjhjLTI3LjktMTMuMi00OC40LTM5LjQtNTMuNy03MC44bDM5LjEgMGMxLjYgMzAuNCA3LjcgNTMuOCAxNC42IDcwLjh6bTQxLjMgOS4ybC0uMyAwLS4zIDBjLTIuNC0zLjUtNS43LTguOS05LjEtMTYuNWMtNi0xMy42LTEyLjQtMzQuMy0xNC4yLTYzLjVsNDcuMSAwYy0xLjggMjkuMi04LjEgNDkuOS0xNC4yIDYzLjVjLTMuNCA3LjYtNi43IDEzLTkuMSAxNi41em00MC43LTkuMmM2LjgtMTcuMSAxMi45LTQwLjQgMTQuNi03MC44bDM5LjEgMGMtNS4zIDMxLjQtMjUuOCA1Ny42LTUzLjcgNzAuOHpNMjc5LjYgMTc2Yy0xLjYtMzAuNC03LjctNTMuOC0xNC42LTcwLjhjMjcuOSAxMy4yIDQ4LjQgMzkuNCA1My43IDcwLjhsLTM5LjEgMHpNMjIzLjcgOTZsLjMgMCAuMyAwYzIuNCAzLjUgNS43IDguOSA5LjEgMTYuNWM2IDEzLjYgMTIuNCAzNC4zIDE0LjIgNjMuNWwtNDcuMSAwYzEuOC0yOS4yIDguMS00OS45IDE0LjItNjMuNWMzLjQtNy42IDYuNy0xMyA5LjEtMTYuNXpNMTgzIDEwNS4yYy02LjggMTcuMS0xMi45IDQwLjQtMTQuNiA3MC44bC0zOS4xIDBjNS4zLTMxLjQgMjUuOC01Ny42IDUzLjctNzAuOHpNMzUyIDE5MkExMjggMTI4IDAgMSAwIDk2IDE5MmExMjggMTI4IDAgMSAwIDI1NiAwek0xMTIgMzg0Yy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2bDIyNCAwYzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2bC0yMjQgMHpcIl1cbn07XG5jb25zdCBmYVRodW1idGFja1NsYXNoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RodW1idGFjay1zbGFzaCcsXG4gIGljb246IFs2NDAsIDUxMiwgW1widGh1bWItdGFjay1zbGFzaFwiXSwgXCJlNjhmXCIsIFwiTTM4LjggNS4xQzI4LjQtMy4xIDEzLjMtMS4yIDUuMSA5LjJTLTEuMiAzNC43IDkuMiA0Mi45bDU5MiA0NjRjMTAuNCA4LjIgMjUuNSA2LjMgMzMuNy00LjFzNi4zLTI1LjUtNC4xLTMzLjdMNDgxLjQgMzUyYzkuOC0uNCAxOC45LTUuMyAyNC42LTEzLjNjNi04LjMgNy43LTE5LjEgNC40LTI4LjhsLTEtM2MtMTMuOC00MS41LTQyLjgtNzQuOC03OS41LTk0LjdMNDE4LjUgNjQgNDQ4IDY0YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyTDE5MiAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDI5LjUgMC02LjEgNzkuNUwzOC44IDUuMXpNMzI0LjkgMzUyTDE3Ny4xIDIzNS42Yy0yMC45IDE4LjktMzcuMiA0My4zLTQ2LjUgNzEuM2wtMSAzYy0zLjMgOS44LTEuNiAyMC41IDQuNCAyOC44czE1LjcgMTMuMyAyNiAxMy4zbDE2NC45IDB6TTI4OCAzODRsMCA5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtOTYtNjQgMHpcIl1cbn07XG5jb25zdCBmYVRodW1iVGFja1NsYXNoID0gZmFUaHVtYnRhY2tTbGFzaDtcbmNvbnN0IGZhSGVhcnRQdWxzZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoZWFydC1wdWxzZScsXG4gIGljb246IFs1MTIsIDUxMiwgW1wiaGVhcnRiZWF0XCJdLCBcImYyMWVcIiwgXCJNMjI4LjMgNDY5LjFMNDcuNiAzMDAuNGMtNC4yLTMuOS04LjItOC4xLTExLjktMTIuNGw4NyAwYzIyLjYgMCA0My0xMy42IDUxLjctMzQuNWwxMC41LTI1LjIgNDkuMyAxMDkuNWMzLjggOC41IDEyLjEgMTQgMjEuNCAxNC4xczE3LjgtNSAyMi0xMy4zTDMyMCAyNTMuN2wxLjcgMy40YzkuNSAxOSAyOC45IDMxIDUwLjEgMzFsMTA0LjUgMGMtMy43IDQuMy03LjcgOC41LTExLjkgMTIuNEwyODMuNyA0NjkuMWMtNy41IDctMTcuNCAxMC45LTI3LjcgMTAuOXMtMjAuMi0zLjktMjcuNy0xMC45ek01MDMuNyAyNDBsLTEzMiAwYy0zIDAtNS44LTEuNy03LjItNC40bC0yMy4yLTQ2LjNjLTQuMS04LjEtMTIuNC0xMy4zLTIxLjUtMTMuM3MtMTcuNCA1LjEtMjEuNSAxMy4zbC00MS40IDgyLjhMMjA1LjkgMTU4LjJjLTMuOS04LjctMTIuNy0xNC4zLTIyLjItMTQuMXMtMTguMSA1LjktMjEuOCAxNC44bC0zMS44IDc2LjNjLTEuMiAzLTQuMiA0LjktNy40IDQuOUwxNiAyNDBjLTIuNiAwLTUgLjQtNy4zIDEuMUMzIDIyNS4yIDAgMjA4LjIgMCAxOTAuOWwwLTUuOGMwLTY5LjkgNTAuNS0xMjkuNSAxMTkuNC0xNDFDMTY1IDM2LjUgMjExLjQgNTEuNCAyNDQgODRsMTIgMTIgMTItMTJjMzIuNi0zMi42IDc5LTQ3LjUgMTI0LjYtMzkuOUM0NjEuNSA1NS42IDUxMiAxMTUuMiA1MTIgMTg1LjFsMCA1LjhjMCAxNi45LTIuOCAzMy41LTguMyA0OS4xelwiXVxufTtcbmNvbnN0IGZhSGVhcnRiZWF0ID0gZmFIZWFydFB1bHNlO1xuY29uc3QgZmFQZW9wbGVDYXJyeUJveCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwZW9wbGUtY2FycnktYm94JyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXCJwZW9wbGUtY2FycnlcIl0sIFwiZjRjZVwiLCBcIk04MCA0OGE0OCA0OCAwIDEgMSA5NiAwQTQ4IDQ4IDAgMSAxIDgwIDQ4em02NCAxOTMuN2wwIDY1LjEgNTEgNTFjNy4xIDcuMSAxMS44IDE2LjIgMTMuNCAyNi4xbDE1LjIgOTAuOWMyLjkgMTcuNC04LjkgMzMuOS0yNi4zIDM2LjhzLTMzLjktOC45LTM2LjgtMjYuM2wtMTQuMy04NS45TDY2LjggMzIwQzU0LjggMzA4IDQ4IDI5MS43IDQ4IDI3NC43bDAtODguMWMwLTMyLjQgMjYuMi01OC42IDU4LjYtNTguNmMyNC4xIDAgNDYuNSAxMiA1OS45IDMybDQ3LjQgNzEuMSAxMC4xIDUgMC03Ni4yYzAtMTcuNyAxNC4zLTMyIDMyLTMybDEyOCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgNzYuMiAxMC4xLTVMNDczLjUgMTYwYzEzLjMtMjAgMzUuOC0zMiA1OS45LTMyYzMyLjQgMCA1OC42IDI2LjIgNTguNiA1OC42bDAgODguMWMwIDE3LTYuNyAzMy4zLTE4LjcgNDUuM2wtNzkuNCA3OS40LTE0LjMgODUuOWMtMi45IDE3LjQtMTkuNCAyOS4yLTM2LjggMjYuM3MtMjkuMi0xOS40LTI2LjMtMzYuOGwxNS4yLTkwLjljMS42LTkuOSA2LjMtMTkgMTMuNC0yNi4xbDUxLTUxIDAtNjUuMS0xOSAyOC41Yy00LjYgNy0xMSAxMi42LTE4LjUgMTYuM2wtNTkuNiAyOS44Yy0yLjQgMS4zLTQuOSAyLjItNy42IDIuOGMtMi42IC42LTUuMyAuOS03LjkgLjhsLTEyNi43IDBjLTIuNSAuMS01LS4yLTcuNS0uN2MtMi45LS42LTUuNi0xLjYtOC4xLTNsLTU5LjUtMjkuOGMtNy41LTMuNy0xMy44LTkuNC0xOC41LTE2LjNsLTE5LTI4LjV6TTIuMyA0NjguMUw1MC4xIDM0OC42bDQ5LjIgNDkuMi0zNy42IDk0Yy02LjYgMTYuNC0yNS4yIDI0LjQtNDEuNiAxNy44Uy00LjMgNDg0LjUgMi4zIDQ2OC4xek01MTIgMGE0OCA0OCAwIDEgMSAwIDk2IDQ4IDQ4IDAgMSAxIDAtOTZ6bTc3LjkgMzQ4LjZsNDcuOCAxMTkuNWM2LjYgMTYuNC0xLjQgMzUtMTcuOCA0MS42cy0zNS0xLjQtNDEuNi0xNy44bC0zNy42LTk0IDQ5LjItNDkuMnpcIl1cbn07XG5jb25zdCBmYVBlb3BsZUNhcnJ5ID0gZmFQZW9wbGVDYXJyeUJveDtcbmNvbnN0IGZhVGVtcGVyYXR1cmVIaWdoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RlbXBlcmF0dXJlLWhpZ2gnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY3NjlcIiwgXCJNNDE2IDY0YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHptMCAxMjhBOTYgOTYgMCAxIDAgNDE2IDBhOTYgOTYgMCAxIDAgMCAxOTJ6TTk2IDExMmMwLTI2LjUgMjEuNS00OCA0OC00OHM0OCAyMS41IDQ4IDQ4bDAgMTY0LjVjMCAxNy4zIDcuMSAzMS45IDE1LjMgNDIuNUMyMTcuOCAzMzIuNiAyMjQgMzQ5LjUgMjI0IDM2OGMwIDQ0LjItMzUuOCA4MC04MCA4MHMtODAtMzUuOC04MC04MGMwLTE4LjUgNi4yLTM1LjQgMTYuNy00OC45Qzg4LjkgMzA4LjQgOTYgMjkzLjggOTYgMjc2LjVMOTYgMTEyek0xNDQgMEM4Mi4xIDAgMzIgNTAuMiAzMiAxMTJsMCAxNjQuNGMwIC4xLS4xIC4zLS4yIC42Yy0uMiAuNi0uOCAxLjYtMS43IDIuOEMxMS4yIDMwNC4yIDAgMzM0LjggMCAzNjhjMCA3OS41IDY0LjUgMTQ0IDE0NCAxNDRzMTQ0LTY0LjUgMTQ0LTE0NGMwLTMzLjItMTEuMi02My44LTMwLjEtODguMWMtLjktMS4yLTEuNS0yLjItMS43LTIuOGMtLjEtLjMtLjItLjUtLjItLjZMMjU2IDExMkMyNTYgNTAuMiAyMDUuOSAwIDE0NCAwem0wIDQxNmMyNi41IDAgNDgtMjEuNSA0OC00OGMwLTIwLjktMTMuNC0zOC43LTMyLTQ1LjNMMTYwIDExMmMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNmwwIDIxMC43Yy0xOC42IDYuNi0zMiAyNC40LTMyIDQ1LjNjMCAyNi41IDIxLjUgNDggNDggNDh6XCJdXG59O1xuY29uc3QgZmFNaWNyb2NoaXAgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbWljcm9jaGlwJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMmRiXCIsIFwiTTE3NiAyNGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNGwwIDQwYy0zNS4zIDAtNjQgMjguNy02NCA2NGwtNDAgMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGw0MCAwIDAgNTYtNDAgMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGw0MCAwIDAgNTYtNDAgMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGw0MCAwYzAgMzUuMyAyOC43IDY0IDY0IDY0bDAgNDBjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGwwLTQwIDU2IDAgMCA0MGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0bDAtNDAgNTYgMCAwIDQwYzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRsMC00MGMzNS4zIDAgNjQtMjguNyA2NC02NGw0MCAwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0bC00MCAwIDAtNTYgNDAgMGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNGwtNDAgMCAwLTU2IDQwIDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRsLTQwIDBjMC0zNS4zLTI4LjctNjQtNjQtNjRsMC00MGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNGwwIDQwLTU2IDAgMC00MGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNGwwIDQwLTU2IDAgMC00MHpNMTYwIDEyOGwxOTIgMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDE5MmMwIDE3LjctMTQuMyAzMi0zMiAzMmwtMTkyIDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtMTkyYzAtMTcuNyAxNC4zLTMyIDMyLTMyem0xOTIgMzJsLTE5MiAwIDAgMTkyIDE5MiAwIDAtMTkyelwiXVxufTtcbmNvbnN0IGZhQ3Jvd24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY3Jvd24nLFxuICBpY29uOiBbNTc2LCA1MTIsIFsxMjgwODFdLCBcImY1MjFcIiwgXCJNMzA5IDEwNmMxMS40LTcgMTktMTkuNyAxOS0zNGMwLTIyLjEtMTcuOS00MC00MC00MHMtNDAgMTcuOS00MCA0MGMwIDE0LjQgNy42IDI3IDE5IDM0TDIwOS43IDIyMC42Yy05LjEgMTguMi0zMi43IDIzLjQtNDguNiAxMC43TDcyIDE2MGM1LTYuNyA4LTE1IDgtMjRjMC0yMi4xLTE3LjktNDAtNDAtNDBTMCAxMTMuOSAwIDEzNnMxNy45IDQwIDQwIDQwYy4yIDAgLjUgMCAuNyAwTDg2LjQgNDI3LjRjNS41IDMwLjQgMzIgNTIuNiA2MyA1Mi42bDI3Ny4yIDBjMzAuOSAwIDU3LjQtMjIuMSA2My01Mi42TDUzNS4zIDE3NmMuMiAwIC41IDAgLjcgMGMyMi4xIDAgNDAtMTcuOSA0MC00MHMtMTcuOS00MC00MC00MHMtNDAgMTcuOS00MCA0MGMwIDkgMyAxNy4zIDggMjRsLTg5LjEgNzEuM2MtMTUuOSAxMi43LTM5LjUgNy41LTQ4LjYtMTAuN0wzMDkgMTA2elwiXVxufTtcbmNvbnN0IGZhV2VpZ2h0SGFuZ2luZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd3ZWlnaHQtaGFuZ2luZycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjVjZFwiLCBcIk0yMjQgOTZhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMTIyLjUgMzJjMy41LTEwIDUuNS0yMC44IDUuNS0zMmMwLTUzLTQzLTk2LTk2LTk2cy05NiA0My05NiA5NmMwIDExLjIgMS45IDIyIDUuNSAzMkwxMjAgMTI4Yy0yMiAwLTQxLjIgMTUtNDYuNiAzNi40bC03MiAyODhjLTMuNiAxNC4zLS40IDI5LjUgOC43IDQxLjJTMzMuMiA1MTIgNDggNTEybDQxNiAwYzE0LjggMCAyOC43LTYuOCAzNy44LTE4LjVzMTIuMy0yNi44IDguNy00MS4ybC03Mi0yODhDNDMzLjIgMTQzIDQxNCAxMjggMzkyIDEyOGwtNDUuNSAwelwiXVxufTtcbmNvbnN0IGZhWG1hcmtzTGluZXMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAneG1hcmtzLWxpbmVzJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlNTlhXCIsIFwiTTMyIDMyQzE0LjMgMzIgMCA0Ni4zIDAgNjRTMTQuMyA5NiAzMiA5Nmw1NzYgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkwzMiAzMnptMCAzODRjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsNTc2IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJMMzIgNDE2ek03IDE2N2MtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlsNTUgNTVMNyAzMTFjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45czI0LjYgOS40IDMzLjkgMGw1NS01NSA1NSA1NWM5LjQgOS40IDI0LjYgOS40IDMzLjkgMHM5LjQtMjQuNiAwLTMzLjlsLTU1LTU1IDU1LTU1YzkuNC05LjQgOS40LTI0LjYgMC0zMy45cy0yNC42LTkuNC0zMy45IDBsLTU1IDU1TDQxIDE2N2MtOS40LTkuNC0yNC42LTkuNC0zMy45IDB6TTI2NSAxNjdjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwcy05LjQgMjQuNiAwIDMzLjlsNTUgNTUtNTUgNTVjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45czI0LjYgOS40IDMzLjkgMGw1NS01NSA1NSA1NWM5LjQgOS40IDI0LjYgOS40IDMzLjkgMHM5LjQtMjQuNiAwLTMzLjlsLTU1LTU1IDU1LTU1YzkuNC05LjQgOS40LTI0LjYgMC0zMy45cy0yNC42LTkuNC0zMy45IDBsLTU1IDU1LTU1LTU1ek00NTUgMTY3Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOWw1NSA1NS01NSA1NWMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwbDU1LTU1IDU1IDU1YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwczkuNC0yNC42IDAtMzMuOWwtNTUtNTUgNTUtNTVjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlzLTI0LjYtOS40LTMzLjkgMGwtNTUgNTUtNTUtNTVjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwelwiXVxufTtcbmNvbnN0IGZhRmlsZVByZXNjcmlwdGlvbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmaWxlLXByZXNjcmlwdGlvbicsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjU3MlwiLCBcIk02NCAwQzI4LjcgMCAwIDI4LjcgMCA2NEwwIDQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NGwyNTYgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTI4OC0xMjggMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJMMjI0IDAgNjQgMHpNMjU2IDBsMCAxMjggMTI4IDBMMjU2IDB6TTEwNCAxOTZsNzIgMGMzMy4xIDAgNjAgMjYuOSA2MCA2MGMwIDI1LjUtMTUuOSA0Ny4yLTM4LjMgNTUuOWw0MyA0MC4zIDMzLjgtMzFjOC4xLTcuNSAyMC44LTYuOSAyOC4zIDEuMnM2LjkgMjAuOC0xLjIgMjguM0wyNzAgMzc5LjdsMzEuNyAyOS43YzguMSA3LjYgOC41IDIwLjIgLjkgMjguM3MtMjAuMiA4LjUtMjguMyAuOWwtMzMuOS0zMS44LTM0LjkgMzJjLTguMSA3LjUtMjAuOCA2LjktMjguMy0xLjJzLTYuOS0yMC44IDEuMi0yOC4zbDMyLjYtMjkuOS02NC44LTYwLjhjLS45LS44LTEuNi0xLjctMi4zLTIuNmwtMjAgMCAwIDQ0YzAgMTEtOSAyMC0yMCAyMHMtMjAtOS0yMC0yMGwwLTY0IDAtODBjMC0xMSA5LTIwIDIwLTIwem03MiA4MGMxMSAwIDIwLTkgMjAtMjBzLTktMjAtMjAtMjBsLTUyIDAgMCA0MCA1MiAwelwiXVxufTtcbmNvbnN0IGZhV2VpZ2h0U2NhbGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnd2VpZ2h0LXNjYWxlJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXCJ3ZWlnaHRcIl0sIFwiZjQ5NlwiLCBcIk0xMjggMTc2YTEyOCAxMjggMCAxIDEgMjU2IDAgMTI4IDEyOCAwIDEgMSAtMjU2IDB6TTM5MS44IDY0QzM1OS41IDI0LjkgMzEwLjcgMCAyNTYgMFMxNTIuNSAyNC45IDEyMC4yIDY0TDY0IDY0QzI4LjcgNjQgMCA5Mi43IDAgMTI4TDAgNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0bDM4NCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMzIwYzAtMzUuMy0yOC43LTY0LTY0LTY0bC01Ni4yIDB6TTI5NiAyMjRjMC0xMC42LTQuMS0yMC4yLTEwLjktMjcuNGwzMy42LTc4LjNjMy41LTguMS0uMy0xNy41LTguNC0yMXMtMTcuNSAuMy0yMSA4LjRMMjU1LjcgMTg0Yy0yMiAuMS0zOS43IDE4LTM5LjcgNDBjMCAyMi4xIDE3LjkgNDAgNDAgNDBzNDAtMTcuOSA0MC00MHpcIl1cbn07XG5jb25zdCBmYVdlaWdodCA9IGZhV2VpZ2h0U2NhbGU7XG5jb25zdCBmYVVzZXJHcm91cCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd1c2VyLWdyb3VwJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbMTI4MTAxLCBcInVzZXItZnJpZW5kc1wiXSwgXCJmNTAwXCIsIFwiTTk2IDEyOGExMjggMTI4IDAgMSAxIDI1NiAwQTEyOCAxMjggMCAxIDEgOTYgMTI4ek0wIDQ4Mi4zQzAgMzgzLjggNzkuOCAzMDQgMTc4LjMgMzA0bDkxLjQgMEMzNjguMiAzMDQgNDQ4IDM4My44IDQ0OCA0ODIuM2MwIDE2LjQtMTMuMyAyOS43LTI5LjcgMjkuN0wyOS43IDUxMkMxMy4zIDUxMiAwIDQ5OC43IDAgNDgyLjN6TTYwOS4zIDUxMmwtMTM3LjggMGM1LjQtOS40IDguNi0yMC4zIDguNi0zMmwwLThjMC02MC43LTI3LjEtMTE1LjItNjkuOC0xNTEuOGMyLjQtLjEgNC43LS4yIDcuMS0uMmw2MS40IDBDNTY3LjggMzIwIDY0MCAzOTIuMiA2NDAgNDgxLjNjMCAxNy0xMy44IDMwLjctMzAuNyAzMC43ek00MzIgMjU2Yy0zMSAwLTU5LTEyLjYtNzkuMy0zMi45QzM3Mi40IDE5Ni41IDM4NCAxNjMuNiAzODQgMTI4YzAtMjYuOC02LjYtNTIuMS0xOC4zLTc0LjNDMzg0LjMgNDAuMSA0MDcuMiAzMiA0MzIgMzJjNjEuOSAwIDExMiA1MC4xIDExMiAxMTJzLTUwLjEgMTEyLTExMiAxMTJ6XCJdXG59O1xuY29uc3QgZmFVc2VyRnJpZW5kcyA9IGZhVXNlckdyb3VwO1xuY29uc3QgZmFBcnJvd1VwQVogPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYXJyb3ctdXAtYS16JyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXCJzb3J0LWFscGhhLXVwXCJdLCBcImYxNWVcIiwgXCJNMTgzLjYgNDIuNEMxNzcuNSAzNS44IDE2OSAzMiAxNjAgMzJzLTE3LjUgMy44LTIzLjYgMTAuNGwtODggOTZjLTExLjkgMTMtMTEuMSAzMy4zIDIgNDUuMnMzMy4zIDExLjEgNDUuMi0yTDEyOCAxNDYuMyAxMjggNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0zMDEuNyAzMi40IDM1LjRjMTEuOSAxMyAzMi4yIDEzLjkgNDUuMiAyczEzLjktMzIuMiAyLTQ1LjJsLTg4LTk2ek0zMjAgMzIwYzAgMTcuNyAxNC4zIDMyIDMyIDMybDUwLjcgMC03My40IDczLjRjLTkuMiA5LjItMTEuOSAyMi45LTYuOSAzNC45czE2LjYgMTkuOCAyOS42IDE5LjhsMTI4IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTUwLjcgMCA3My40LTczLjRjOS4yLTkuMiAxMS45LTIyLjkgNi45LTM0LjlzLTE2LjYtMTkuOC0yOS42LTE5LjhsLTEyOCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnpNNDE2IDMyYy0xMi4xIDAtMjMuMiA2LjgtMjguNiAxNy43bC02NCAxMjgtMTYgMzJjLTcuOSAxNS44LTEuNSAzNSAxNC4zIDQyLjlzMzUgMS41IDQyLjktMTQuM2w3LjItMTQuMyA4OC40IDAgNy4yIDE0LjNjNy45IDE1LjggMjcuMSAyMi4yIDQyLjkgMTQuM3MyMi4yLTI3LjEgMTQuMy00Mi45bC0xNi0zMi02NC0xMjhDNDM5LjIgMzguOCA0MjguMSAzMiA0MTYgMzJ6TTM5NS44IDE3Nkw0MTYgMTM1LjYgNDM2LjIgMTc2bC00MC40IDB6XCJdXG59O1xuY29uc3QgZmFTb3J0QWxwaGFVcCA9IGZhQXJyb3dVcEFaO1xuY29uc3QgZmFDaGVzc0tuaWdodCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaGVzcy1rbmlnaHQnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFs5ODIyXSwgXCJmNDQxXCIsIFwiTTk2IDQ4TDgyLjcgNjEuM0M3MC43IDczLjMgNjQgODkuNSA2NCAxMDYuNWwwIDEzMi40YzAgMTAuNyA1LjMgMjAuNyAxNC4yIDI2LjZsMTAuNiA3YzE0LjMgOS42IDMyLjcgMTAuNyA0OC4xIDNsMy4yLTEuNmMyLjYtMS4zIDUtMi44IDcuMy00LjVsNDkuNC0zN2M2LjYtNSAxNS43LTUgMjIuMyAwYzEwLjIgNy43IDkuOSAyMy4xLS43IDMwLjNMOTAuNCAzNTBDNzMuOSAzNjEuMyA2NCAzODAgNjQgNDAwbDMyMCAwIDI4LjktMTU5YzIuMS0xMS4zIDMuMS0yMi44IDMuMS0zNC4zbDAtMTQuN0M0MTYgODYgMzMwIDAgMjI0IDBMODMuOCAwQzcyLjkgMCA2NCA4LjkgNjQgMTkuOGMwIDcuNSA0LjIgMTQuMyAxMC45IDE3LjdMOTYgNDh6bTI0IDY4YTIwIDIwIDAgMSAxIDQwIDAgMjAgMjAgMCAxIDEgLTQwIDB6TTIyLjYgNDczLjRjLTQuMiA0LjItNi42IDEwLTYuNiAxNkMxNiA1MDEuOSAyNi4xIDUxMiAzOC42IDUxMmwzNzAuNyAwYzEyLjUgMCAyMi42LTEwLjEgMjIuNi0yMi42YzAtNi0yLjQtMTEuOC02LjYtMTZMMzg0IDQzMiA2NCA0MzIgMjIuNiA0NzMuNHpcIl1cbn07XG5jb25zdCBmYUZhY2VMYXVnaFNxdWludCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmYWNlLWxhdWdoLXNxdWludCcsXG4gIGljb246IFs1MTIsIDUxMiwgW1wibGF1Z2gtc3F1aW50XCJdLCBcImY1OWJcIiwgXCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTk2LjggMzE0LjFjLTMuOC0xMy43IDcuNC0yNi4xIDIxLjYtMjYuMWwyNzUuMiAwYzE0LjIgMCAyNS41IDEyLjQgMjEuNiAyNi4xQzM5Ni4yIDM4MiAzMzIuMSA0MzIgMjU2IDQzMnMtMTQwLjItNTAtMTU5LjItMTE3Ljl6bTM2LjctMTk5LjRsODkuOSA0Ny45YzEwLjcgNS43IDEwLjcgMjEuMSAwIDI2LjhsLTg5LjkgNDcuOWMtNy45IDQuMi0xNy41LTEuNS0xNy41LTEwLjVjMC0yLjggMS01LjUgMi44LTcuNmwzNi00My4yLTM2LTQzLjJjLTEuOC0yLjEtMi44LTQuOC0yLjgtNy42YzAtOSA5LjYtMTQuNyAxNy41LTEwLjV6TTM5NiAxMjUuMWMwIDIuOC0xIDUuNS0yLjggNy42bC0zNiA0My4yIDM2IDQzLjJjMS44IDIuMSAyLjggNC44IDIuOCA3LjZjMCA5LTkuNiAxNC43LTE3LjUgMTAuNWwtODkuOS00Ny45Yy0xMC43LTUuNy0xMC43LTIxLjEgMC0yNi44bDg5LjktNDcuOWM3LjktNC4yIDE3LjUgMS41IDE3LjUgMTAuNXpcIl1cbn07XG5jb25zdCBmYUxhdWdoU3F1aW50ID0gZmFGYWNlTGF1Z2hTcXVpbnQ7XG5jb25zdCBmYVdoZWVsY2hhaXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnd2hlZWxjaGFpcicsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjE5M1wiLCBcIk0xOTIgOTZhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2ek0xMjAuNSAyNDcuMmMxMi40LTQuNyAxOC43LTE4LjUgMTQtMzAuOXMtMTguNS0xOC43LTMwLjktMTRDNDMuMSAyMjUuMSAwIDI4My41IDAgMzUyYzAgODguNCA3MS42IDE2MCAxNjAgMTYwYzYxLjIgMCAxMTQuMy0zNC4zIDE0MS4yLTg0LjdjNi4yLTExLjcgMS44LTI2LjItOS45LTMyLjVzLTI2LjItMS44LTMyLjUgOS45QzI0MCA0NDAgMjAyLjggNDY0IDE2MCA0NjRDOTguMSA0NjQgNDggNDEzLjkgNDggMzUyYzAtNDcuOSAzMC4xLTg4LjggNzIuNS0xMDQuOHpNMjU5LjggMTc2bC0xLjktOS43Yy00LjUtMjIuMy0yNC0zOC4zLTQ2LjgtMzguM2MtMzAuMSAwLTUyLjcgMjcuNS00Ni44IDU3bDIzLjEgMTE1LjVjNiAyOS45IDMyLjIgNTEuNCA2Mi44IDUxLjRsNS4xIDBjLjQgMCAuOCAwIDEuMyAwbDk0LjEgMGM2LjcgMCAxMi42IDQuMSAxNSAxMC40TDQwMiA0NTkuMmM2IDE2LjEgMjMuOCAyNC42IDQwLjEgMTkuMWw0OC0xNmMxNi44LTUuNiAyNS44LTIzLjcgMjAuMi00MC41cy0yMy43LTI1LjgtNDAuNS0yMC4ybC0xOC43IDYuMi0yNS41LTY4Yy0xMS43LTMxLjItNDEuNi01MS45LTc0LjktNTEuOWwtNjguNSAwLTkuNi00OCA2My40IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTc2LjIgMHpcIl1cbn07XG5jb25zdCBmYUNpcmNsZUFycm93VXAgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2lyY2xlLWFycm93LXVwJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXCJhcnJvdy1jaXJjbGUtdXBcIl0sIFwiZjBhYVwiLCBcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMzg1IDIxNWM5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwbC03MS03MUwyODAgMzkyYzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0bDAtMjE0LjEtNzEgNzFjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlMMjM5IDEwM2M5LjQtOS40IDI0LjYtOS40IDMzLjkgMEwzODUgMjE1elwiXVxufTtcbmNvbnN0IGZhQXJyb3dDaXJjbGVVcCA9IGZhQ2lyY2xlQXJyb3dVcDtcbmNvbnN0IGZhVG9nZ2xlT24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndG9nZ2xlLW9uJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmMjA1XCIsIFwiTTE5MiA2NEM4NiA2NCAwIDE1MCAwIDI1NlM4NiA0NDggMTkyIDQ0OGwxOTIgMGMxMDYgMCAxOTItODYgMTkyLTE5MnMtODYtMTkyLTE5Mi0xOTJMMTkyIDY0em0xOTIgOTZhOTYgOTYgMCAxIDEgMCAxOTIgOTYgOTYgMCAxIDEgMC0xOTJ6XCJdXG59O1xuY29uc3QgZmFQZXJzb25XYWxraW5nID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BlcnNvbi13YWxraW5nJyxcbiAgaWNvbjogWzMyMCwgNTEyLCBbMTI4Njk0LCBcIndhbGtpbmdcIl0sIFwiZjU1NFwiLCBcIk0xNjAgNDhhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHpNMTI2LjUgMTk5LjNjLTEgLjQtMS45IC44LTIuOSAxLjJsLTggMy41Yy0xNi40IDcuMy0yOSAyMS4yLTM0LjcgMzguMmwtMi42IDcuOGMtNS42IDE2LjgtMjMuNyAyNS44LTQwLjUgMjAuMnMtMjUuOC0yMy43LTIwLjItNDAuNWwyLjYtNy44YzExLjQtMzQuMSAzNi42LTYxLjkgNjkuNC03Ni41bDgtMy41YzIwLjgtOS4yIDQzLjMtMTQgNjYuMS0xNGM0NC42IDAgODQuOCAyNi44IDEwMS45IDY3LjlMMjgxIDIzMi43bDIxLjQgMTAuN2MxNS44IDcuOSAyMi4yIDI3LjEgMTQuMyA0Mi45cy0yNy4xIDIyLjItNDIuOSAxNC4zTDI0NyAyODcuM2MtMTAuMy01LjItMTguNC0xMy44LTIyLjgtMjQuNWwtOS42LTIzLTE5LjMgNjUuNSA0OS41IDU0YzUuNCA1LjkgOS4yIDEzIDExLjIgMjAuOGwyMyA5Mi4xYzQuMyAxNy4xLTYuMSAzNC41LTIzLjMgMzguOHMtMzQuNS02LjEtMzguOC0yMy4zbC0yMi04OC4xLTcwLjctNzcuMWMtMTQuOC0xNi4xLTIwLjMtMzguNi0xNC43LTU5LjdsMTYuOS02My41ek02OC43IDM5OGwyNS02Mi40YzIuMSAzIDQuNSA1LjggNyA4LjZsNDAuNyA0NC40LTE0LjUgMzYuMmMtMi40IDYtNiAxMS41LTEwLjYgMTYuMUw1NC42IDUwMi42Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMHMtMTIuNS0zMi44IDAtNDUuM0w2OC43IDM5OHpcIl1cbn07XG5jb25zdCBmYVdhbGtpbmcgPSBmYVBlcnNvbldhbGtpbmc7XG5jb25zdCBmYUwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbCcsXG4gIGljb246IFszMjAsIDUxMiwgWzEwOF0sIFwiNGNcIiwgXCJNNjQgMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCAzNTIgMTkyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJMNjQgNDgwYy0xNy43IDAtMzItMTQuMy0zMi0zMkwzMiA2NGMwLTE3LjcgMTQuMy0zMiAzMi0zMnpcIl1cbn07XG5jb25zdCBmYUZpcmUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmlyZScsXG4gIGljb246IFs0NDgsIDUxMiwgWzEyODI5M10sIFwiZjA2ZFwiLCBcIk0xNTkuMyA1LjRjNy44LTcuMyAxOS45LTcuMiAyNy43IC4xYzI3LjYgMjUuOSA1My41IDUzLjggNzcuNyA4NGMxMS0xNC40IDIzLjUtMzAuMSAzNy00Mi45YzcuOS03LjQgMjAuMS03LjQgMjggLjFjMzQuNiAzMyA2My45IDc2LjYgODQuNSAxMThjMjAuMyA0MC44IDMzLjggODIuNSAzMy44IDExMS45QzQ0OCA0MDQuMiAzNDguMiA1MTIgMjI0IDUxMkM5OC40IDUxMiAwIDQwNC4xIDAgMjc2LjVjMC0zOC40IDE3LjgtODUuMyA0NS40LTEzMS43QzczLjMgOTcuNyAxMTIuNyA0OC42IDE1OS4zIDUuNHpNMjI1LjcgNDE2YzI1LjMgMCA0Ny43LTcgNjguOC0yMWM0Mi4xLTI5LjQgNTMuNC04OC4yIDI4LjEtMTM0LjRjLTQuNS05LTE2LTkuNi0yMi41LTJsLTI1LjIgMjkuM2MtNi42IDcuNi0xOC41IDcuNC0yNC43LS41Yy0xNi41LTIxLTQ2LTU4LjUtNjIuOC03OS44Yy02LjMtOC0xOC4zLTguMS0yNC43LS4xYy0zMy44IDQyLjUtNTAuOCA2OS4zLTUwLjggOTkuNEMxMTIgMzc1LjQgMTYyLjYgNDE2IDIyNS43IDQxNnpcIl1cbn07XG5jb25zdCBmYUJlZFB1bHNlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JlZC1wdWxzZScsXG4gIGljb246IFs2NDAsIDUxMiwgW1wicHJvY2VkdXJlc1wiXSwgXCJmNDg3XCIsIFwiTTQ4My4yIDkuNkw1MjQgNjRsOTIgMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGwtMTA0IDBjLTcuNiAwLTE0LjctMy42LTE5LjItOS42TDQ2OC43IDcwLjNsLTQ3IDk5LjljLTMuNyA3LjgtMTEuMyAxMy4xLTE5LjkgMTMuN3MtMTYuOS0zLjQtMjEuNy0xMC42TDMzOS4yIDExMiAyMTYgMTEyYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0bDEzNiAwYzggMCAxNS41IDQgMjAgMTAuN2wyNC40IDM2LjYgNDUuOS05Ny41QzQ0NS45IDYuMiA0NTMuMiAxIDQ2MS42IC4xczE2LjYgMi43IDIxLjYgOS41ek0zMjAgMTYwbDEyLjcgMCAyMC43IDMxLjFjMTEuMiAxNi44IDMwLjYgMjYuMyA1MC43IDI0LjhzMzcuOS0xMy43IDQ2LjUtMzJMNDYxLjkgMTYwbDgyLjEgMGM1MyAwIDk2IDQzIDk2IDk2bDAgMjI0YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtMzItMjI0IDAtMzIgMEw2NCA0NDhsMCAzMmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMkwwIDk2QzAgNzguMyAxNC4zIDY0IDMyIDY0czMyIDE0LjMgMzIgMzJsMCAyNTYgMjI0IDAgMC0xNjBjMC0xNy43IDE0LjMtMzIgMzItMzJ6bS0xNDQgMGE4MCA4MCAwIDEgMSAwIDE2MCA4MCA4MCAwIDEgMSAwLTE2MHpcIl1cbn07XG5jb25zdCBmYVByb2NlZHVyZXMgPSBmYUJlZFB1bHNlO1xuY29uc3QgZmFTaHV0dGxlU3BhY2UgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc2h1dHRsZS1zcGFjZScsXG4gIGljb246IFs2NDAsIDUxMiwgW1wic3BhY2Utc2h1dHRsZVwiXSwgXCJmMTk3XCIsIFwiTTEzMCA0ODBjNDAuNiAwIDgwLjQtMTEgMTE1LjItMzEuOUwzNTIgMzg0bC0yMjQgMCAwIDk2IDIgMHpNMzUyIDEyOEwyNDUuMiA2My45QzIxMC40IDQzIDE3MC42IDMyIDEzMCAzMmwtMiAwIDAgOTYgMjI0IDB6TTk2IDEyOGwwLTk2TDgwIDMyQzUzLjUgMzIgMzIgNTMuNSAzMiA4MGwwIDQ4IDggMGMtMjIuMSAwLTQwIDE3LjktNDAgNDBsMCAxNkwwIDMyOGwwIDE2YzAgMjIuMSAxNy45IDQwIDQwIDQwbC04IDAgMCA0OGMwIDI2LjUgMjEuNSA0OCA0OCA0OGwxNiAwIDAtOTYgOCAwYzI2LjIgMCA0OS40LTEyLjYgNjQtMzJsMjg4IDBjNjkuMyAwIDEzNS0yMi43IDE3OS4yLTgxLjZjNi40LTguNSA2LjQtMjAuMyAwLTI4LjhDNTkxIDE4Mi43IDUyNS4zIDE2MCA0NTYgMTYwbC0yODggMGMtMTQuNi0xOS40LTM3LjgtMzItNjQtMzJsLTggMHpNNTEyIDI0My42bDAgMjQuOWMwIDE5LjYtMTUuOSAzNS42LTM1LjYgMzUuNmMtMi41IDAtNC40LTItNC40LTQuNGwwLTg3LjFjMC0yLjUgMi00LjQgNC40LTQuNGMxOS42IDAgMzUuNiAxNS45IDM1LjYgMzUuNnpcIl1cbn07XG5jb25zdCBmYVNwYWNlU2h1dHRsZSA9IGZhU2h1dHRsZVNwYWNlO1xuY29uc3QgZmFGYWNlTGF1Z2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmFjZS1sYXVnaCcsXG4gIGljb246IFs1MTIsIDUxMiwgW1wibGF1Z2hcIl0sIFwiZjU5OVwiLCBcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNOTYuOCAzMTQuMWMtMy44LTEzLjcgNy40LTI2LjEgMjEuNi0yNi4xbDI3NS4yIDBjMTQuMiAwIDI1LjUgMTIuNCAyMS42IDI2LjFDMzk2LjIgMzgyIDMzMi4xIDQzMiAyNTYgNDMycy0xNDAuMi01MC0xNTkuMi0xMTcuOXpNMTQ0LjQgMTkyYTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bTE5Mi0zMmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJdXG59O1xuY29uc3QgZmFMYXVnaCA9IGZhRmFjZUxhdWdoO1xuY29uc3QgZmFGb2xkZXJPcGVuID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZvbGRlci1vcGVuJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbMTI4MTk0LCAxMjg0NDksIDYxNzE3XSwgXCJmMDdjXCIsIFwiTTg4LjcgMjIzLjhMMCAzNzUuOCAwIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMybDExNy41IDBjMTcgMCAzMy4zIDYuNyA0NS4zIDE4LjdsMjYuNSAyNi41YzEyIDEyIDI4LjMgMTguNyA0NS4zIDE4LjdMNDE2IDk2YzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMzItMzM2IDBjLTIyLjggMC00My44IDEyLjEtNTUuMyAzMS44em0yNy42IDE2LjFDMTIyLjEgMjMwIDEzMi42IDIyNCAxNDQgMjI0bDQwMCAwYzExLjUgMCAyMiA2LjEgMjcuNyAxNi4xczUuNyAyMi4yLS4xIDMyLjFsLTExMiAxOTJDNDUzLjkgNDc0IDQ0My40IDQ4MCA0MzIgNDgwTDMyIDQ4MGMtMTEuNSAwLTIyLTYuMS0yNy43LTE2LjFzLTUuNy0yMi4yIC4xLTMyLjFsMTEyLTE5MnpcIl1cbn07XG5jb25zdCBmYUhlYXJ0Q2lyY2xlUGx1cyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoZWFydC1jaXJjbGUtcGx1cycsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZTUwMFwiLCBcIk00Ny42IDMwMC40TDIyOC4zIDQ2OS4xYzcuNSA3IDE3LjQgMTAuOSAyNy43IDEwLjlzMjAuMi0zLjkgMjcuNy0xMC45bDIuNi0yLjRDMjY3LjIgNDM4LjYgMjU2IDQwNC42IDI1NiAzNjhjMC05Ny4yIDc4LjgtMTc2IDE3Ni0xNzZjMjguMyAwIDU1IDYuNyA3OC43IDE4LjVjLjktNi41IDEuMy0xMyAxLjMtMTkuNmwwLTUuOGMwLTY5LjktNTAuNS0xMjkuNS0xMTkuNC0xNDFDMzQ3IDM2LjUgMzAwLjYgNTEuNCAyNjggODRMMjU2IDk2IDI0NCA4NGMtMzIuNi0zMi42LTc5LTQ3LjUtMTI0LjYtMzkuOUM1MC41IDU1LjYgMCAxMTUuMiAwIDE4NS4xbDAgNS44YzAgNDEuNSAxNy4yIDgxLjIgNDcuNiAxMDkuNXpNNDMyIDUxMmExNDQgMTQ0IDAgMSAwIDAtMjg4IDE0NCAxNDQgMCAxIDAgMCAyODh6bTE2LTIwOGwwIDQ4IDQ4IDBjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZsLTQ4IDAgMCA0OGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNmwwLTQ4LTQ4IDBjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZsNDggMCAwLTQ4YzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ6XCJdXG59O1xuY29uc3QgZmFDb2RlRm9yayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjb2RlLWZvcmsnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImUxM2JcIiwgXCJNODAgMTA0YTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHptODAtMjRjMCAzMi44LTE5LjcgNjEtNDggNzMuM2wwIDM4LjdjMCAxNy43IDE0LjMgMzIgMzIgMzJsMTYwIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJsMC0zOC43QzMwNy43IDE0MSAyODggMTEyLjggMjg4IDgwYzAtNDQuMiAzNS44LTgwIDgwLTgwczgwIDM1LjggODAgODBjMCAzMi44LTE5LjcgNjEtNDggNzMuM2wwIDM4LjdjMCA1My00MyA5Ni05NiA5NmwtNDggMCAwIDcwLjdjMjguMyAxMi4zIDQ4IDQwLjUgNDggNzMuM2MwIDQ0LjItMzUuOCA4MC04MCA4MHMtODAtMzUuOC04MC04MGMwLTMyLjggMTkuNy02MSA0OC03My4zbDAtNzAuNy00OCAwYy01MyAwLTk2LTQzLTk2LTk2bDAtMzguN0MxOS43IDE0MSAwIDExMi44IDAgODBDMCAzNS44IDM1LjggMCA4MCAwczgwIDM1LjggODAgODB6bTIwOCAyNGEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6TTI0OCA0MzJhMjQgMjQgMCAxIDAgLTQ4IDAgMjQgMjQgMCAxIDAgNDggMHpcIl1cbn07XG5jb25zdCBmYUNpdHkgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2l0eScsXG4gIGljb246IFs2NDAsIDUxMiwgWzEyNzk2MV0sIFwiZjY0ZlwiLCBcIk00ODAgNDhjMC0yNi41LTIxLjUtNDgtNDgtNDhMMzM2IDBjLTI2LjUgMC00OCAyMS41LTQ4IDQ4bDAgNDgtNjQgMCAwLTcyYzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0bDAgNzItNjQgMCAwLTcyYzAtMTMuMy0xMC43LTI0LTI0LTI0UzY0IDEwLjcgNjQgMjRsMCA3Mkw0OCA5NkMyMS41IDk2IDAgMTE3LjUgMCAxNDRsMCA5NkwwIDQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGwyNTYgMCAzMiAwIDk2IDAgMTYwIDBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhsMC0yMjRjMC0yNi41LTIxLjUtNDgtNDgtNDhsLTExMiAwIDAtMTQ0em05NiAzMjBsMCAzMmMwIDguOC03LjIgMTYtMTYgMTZsLTMyIDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTMyYzAtOC44IDcuMi0xNiAxNi0xNmwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNnpNMjQwIDQxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzJjMC04LjggNy4yLTE2IDE2LTE2bDMyIDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgMzJjMCA4LjgtNy4yIDE2LTE2IDE2ek0xMjggNDAwYzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzJjMC04LjggNy4yLTE2IDE2LTE2bDMyIDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgMzJ6TTU2MCAyNTZjOC44IDAgMTYgNy4yIDE2IDE2bDAgMzJjMCA4LjgtNy4yIDE2LTE2IDE2bC0zMiAwYy04LjggMC0xNi03LjItMTYtMTZsMC0zMmMwLTguOCA3LjItMTYgMTYtMTZsMzIgMHpNMjU2IDE3NmwwIDMyYzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzJjMC04LjggNy4yLTE2IDE2LTE2bDMyIDBjOC44IDAgMTYgNy4yIDE2IDE2ek0xMTIgMTYwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDMyYzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzJjMC04LjggNy4yLTE2IDE2LTE2bDMyIDB6TTI1NiAzMDRjMCA4LjgtNy4yIDE2LTE2IDE2bC0zMiAwYy04LjggMC0xNi03LjItMTYtMTZsMC0zMmMwLTguOCA3LjItMTYgMTYtMTZsMzIgMGM4LjggMCAxNiA3LjIgMTYgMTZsMCAzMnpNMTEyIDMyMGwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzJjMC04LjggNy4yLTE2IDE2LTE2bDMyIDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgMzJjMCA4LjgtNy4yIDE2LTE2IDE2em0zMDQtNDhsMCAzMmMwIDguOC03LjIgMTYtMTYgMTZsLTMyIDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTMyYzAtOC44IDcuMi0xNiAxNi0xNmwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNnpNNDAwIDY0YzguOCAwIDE2IDcuMiAxNiAxNmwwIDMyYzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzJjMC04LjggNy4yLTE2IDE2LTE2bDMyIDB6bTE2IDExMmwwIDMyYzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzJjMC04LjggNy4yLTE2IDE2LTE2bDMyIDBjOC44IDAgMTYgNy4yIDE2IDE2elwiXVxufTtcbmNvbnN0IGZhTWljcm9waG9uZUxpbmVzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21pY3JvcGhvbmUtbGluZXMnLFxuICBpY29uOiBbMzg0LCA1MTIsIFsxMjc4OTcsIFwibWljcm9waG9uZS1hbHRcIl0sIFwiZjNjOVwiLCBcIk05NiA5NmwwIDE2MGMwIDUzIDQzIDk2IDk2IDk2czk2LTQzIDk2LTk2bC04MCAwYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2bDgwIDAgMC0zMi04MCAwYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2bDgwIDAgMC0zMi04MCAwYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2bDgwIDBjMC01My00My05Ni05Ni05NlM5NiA0MyA5NiA5NnpNMzIwIDI0MGwwIDE2YzAgNzAuNy01Ny4zIDEyOC0xMjggMTI4cy0xMjgtNTcuMy0xMjgtMTI4bDAtNDBjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjRsMCA0MGMwIDg5LjEgNjYuMiAxNjIuNyAxNTIgMTc0LjRsMCAzMy42LTQ4IDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRsNzIgMCA3MiAwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0bC00OCAwIDAtMzMuNmM4NS44LTExLjcgMTUyLTg1LjMgMTUyLTE3NC40bDAtNDBjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjRsMCAyNHpcIl1cbn07XG5jb25zdCBmYU1pY3JvcGhvbmVBbHQgPSBmYU1pY3JvcGhvbmVMaW5lcztcbmNvbnN0IGZhUGVwcGVySG90ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BlcHBlci1ob3QnLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjc3OThdLCBcImY4MTZcIiwgXCJNNDI4LjMgM2MxMS42LTYuNCAyNi4yLTIuMyAzMi42IDkuM2w0LjggOC43YzE5LjMgMzQuNyAxOS44IDc1LjcgMy40IDExMEM0OTUuOCAxNTkuNiA1MTIgMTk3LjkgNTEyIDI0MGMwIDE4LjUtMy4xIDM2LjMtOC45IDUyLjhjLTYuMSAxNy4zLTI4LjUgMTYuMy0zNi44LS4xbC0xMS43LTIzLjRjLTQuMS04LjEtMTIuNC0xMy4zLTIxLjUtMTMuM0wzNjAgMjU2Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNGwwLTgwYzAtMTMuMy0xMC43LTI0LTI0LTI0bC0xNy4xIDBjLTIxLjMgMC0zMC0yMy45LTEwLjgtMzIuOUMzMDQuNyA4NS40IDMyNy43IDgwIDM1MiA4MGMyOC4zIDAgNTQuOCA3LjMgNzcuOCAyMC4yYzUuNS0xOC4yIDMuNy0zOC40LTYtNTUuOEw0MTkgMzUuN2MtNi40LTExLjYtMi4zLTI2LjIgOS4zLTMyLjZ6TTE3MS4yIDM0NS41TDI2NCAxNjBsNDAgMCAwIDgwYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4bDc2LjIgMCAyMy45IDQ3LjhDMzcyLjMgNDQzLjkgMjQ0LjMgNTEyIDEwMy4yIDUxMmwtNTguOCAwQzE5LjkgNTEyIDAgNDkyLjEgMCA0NjcuNmMwLTIwLjggMTQuNS0zOC44IDM0LjgtNDMuM2w0OS44LTExLjFjMzcuNi04LjQgNjkuNS0zMy4yIDg2LjctNjcuN3pcIl1cbn07XG5jb25zdCBmYVVubG9jayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd1bmxvY2snLFxuICBpY29uOiBbNDQ4LCA1MTIsIFsxMjgyNzVdLCBcImYwOWNcIiwgXCJNMTQ0IDE0NGMwLTQ0LjIgMzUuOC04MCA4MC04MGMzMS45IDAgNTkuNCAxOC42IDcyLjMgNDUuN2M3LjYgMTYgMjYuNyAyMi44IDQyLjYgMTUuMnMyMi44LTI2LjcgMTUuMi00Mi42QzMzMSAzMy43IDI4MS41IDAgMjI0IDBDMTQ0LjUgMCA4MCA2NC41IDgwIDE0NGwwIDQ4LTE2IDBjLTM1LjMgMC02NCAyOC43LTY0IDY0TDAgNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0bDMyMCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMTkyYzAtMzUuMy0yOC43LTY0LTY0LTY0bC0yNDAgMCAwLTQ4elwiXVxufTtcbmNvbnN0IGZhQ29sb25TaWduID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NvbG9uLXNpZ24nLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImUxNDBcIiwgXCJNMjU1IDM5LjhjNC4zLTE3LjEtNi4xLTM0LjUtMjMuMy0zOC44UzE5Ny4yIDcuMSAxOTMgMjQuMkwxODEuOSA2OC42Qzk2LjEgODcuOCAzMiAxNjQuNCAzMiAyNTZjMCA1OC4xIDI1LjggMTEwLjIgNjYuNyAxNDUuNEw4MSA0NzIuMmMtNC4zIDE3LjEgNi4xIDM0LjUgMjMuMyAzOC44czM0LjUtNi4xIDM4LjgtMjMuM2wxMy01Mi4xYzkgMy40IDE4LjQgNi4yIDI4IDguMkwxNzcgNDcyLjJjLTQuMyAxNy4xIDYuMSAzNC41IDIzLjMgMzguOHMzNC41LTYuMSAzOC44LTIzLjNsMTAuNC00MS40YzMzLjQtNC40IDY0LjEtMTcuNCA4OS44LTM2LjdjMTQuMS0xMC42IDE3LTMwLjcgNi40LTQ0LjhzLTMwLjctMTctNDQuOC02LjRjLTEwLjIgNy43LTIxLjcgMTMuOS0zNCAxOC4zTDMyMSAxNjBjOS40LS4zIDE4LjUtNC43IDI0LjYtMTIuOGMxMC42LTE0LjEgNy44LTM0LjItNi40LTQ0LjhjLTEuMS0uOC0yLjItMS42LTMuMy0yLjRMMzUxIDM5LjhjNC4zLTE3LjEtNi4xLTM0LjUtMjMuMy0zOC44UzI5My4yIDcuMSAyODkgMjQuMkwyNzcuMiA3MS41Yy05LjMtMi43LTE4LjgtNC42LTI4LjYtNS45TDI1NSAzOS44ek0xNjMuMiAxNDMuM0wxMTcuMyAzMjYuOEMxMDMuOSAzMDYuNSA5NiAyODIuMiA5NiAyNTZjMC00OC43IDI3LjItOTEgNjcuMi0xMTIuN3ptOC42IDIyOS41bDYxLjEtMjQ0LjZjOS45IC43IDE5LjUgMi41IDI4LjcgNS4zbC02MiAyNDguMWMtOS43LTEuOS0xOS00LjgtMjcuOC04Ljh6XCJdXG59O1xuY29uc3QgZmFIZWFkc2V0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hlYWRzZXQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY1OTBcIiwgXCJNMjU2IDQ4QzE0MS4xIDQ4IDQ4IDE0MS4xIDQ4IDI1NmwwIDQwYzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0bDAtNDBDMCAxMTQuNiAxMTQuNiAwIDI1NiAwUzUxMiAxMTQuNiA1MTIgMjU2bDAgMTQ0LjFjMCA0OC42LTM5LjQgODgtODguMSA4OEwzMTMuNiA0ODhjLTguMyAxNC4zLTIzLjggMjQtNDEuNiAyNGwtMzIgMGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhzMjEuNS00OCA0OC00OGwzMiAwYzE3LjggMCAzMy4zIDkuNyA0MS42IDI0bDExMC40IC4xYzIyLjEgMCA0MC0xNy45IDQwLTQwTDQ2NCAyNTZjMC0xMTQuOS05My4xLTIwOC0yMDgtMjA4ek0xNDQgMjA4bDE2IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCAxMTJjMCAxNy43LTE0LjMgMzItMzIgMzJsLTE2IDBjLTM1LjMgMC02NC0yOC43LTY0LTY0bDAtNDhjMC0zNS4zIDI4LjctNjQgNjQtNjR6bTIyNCAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgNDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRsLTE2IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtMTEyYzAtMTcuNyAxNC4zLTMyIDMyLTMybDE2IDB6XCJdXG59O1xuY29uc3QgZmFTdG9yZVNsYXNoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3N0b3JlLXNsYXNoJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlMDcxXCIsIFwiTTM4LjggNS4xQzI4LjQtMy4xIDEzLjMtMS4yIDUuMSA5LjJTLTEuMiAzNC43IDkuMiA0Mi45bDU5MiA0NjRjMTAuNCA4LjIgMjUuNSA2LjMgMzMuNy00LjFzNi4zLTI1LjUtNC4xLTMzLjdsLTg2LjgtNjggMC0xNy4xIDAtMTMxLjRjLTQgMS04IDEuOC0xMi4zIDIuM2MwIDAgMCAwLS4xIDBjLTUuMyAuNy0xMC43IDEuMS0xNi4yIDEuMWMtMTIuNCAwLTI0LjMtMS45LTM1LjQtNS4zbDAgMTAwLjNMMzAxLjIgMjEwLjdjNy00LjQgMTMuMy05LjcgMTguOC0xNS43YzE1LjkgMTcuNiAzOS4xIDI5IDY1LjIgMjljMjYuMiAwIDQ5LjMtMTEuNCA2NS4yLTI5YzE2IDE3LjYgMzkuMSAyOSA2NS4yIDI5YzQuMSAwIDguMS0uMyAxMi4xLS44YzU1LjUtNy40IDgxLjgtNzIuNSA1Mi4xLTExOS40TDUyMi4zIDEzLjFDNTE3LjIgNSA1MDguMSAwIDQ5OC40IDBMMTQxLjYgMGMtOS43IDAtMTguOCA1LTIzLjkgMTMuMWwtMjIuNyAzNkwzOC44IDUuMXptNzMuNCAyMTguMWM0IC41IDguMSAuOCAxMi4xIC44YzExIDAgMjEuNC0yIDMxLTUuNkw0OC45IDEzNC41Yy02LjEgNDAuNiAxOS41IDgyLjggNjMuMyA4OC43ek0xNjAgMzg0bDAtMTMzLjRjLTExLjIgMy41LTIzLjIgNS40LTM1LjYgNS40Yy01LjUgMC0xMS0uNC0xNi4zLTEuMWwtLjEgMGMtNC4xLS42LTguMS0xLjMtMTItMi4zTDk2IDM4NGwwIDY0YzAgMzUuMyAyOC43IDY0IDY0IDY0bDMyMCAwYzEyLjkgMCAyNC44LTMuOCAzNC45LTEwLjNMMzY1LjUgMzg0IDE2MCAzODR6XCJdXG59O1xuY29uc3QgZmFSb2FkQ2lyY2xlWG1hcmsgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncm9hZC1jaXJjbGUteG1hcmsnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU1NjZcIiwgXCJNMjEzLjIgMzJMMjg4IDMybDAgNjRjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTY0IDc0LjggMGMyNy4xIDAgNTEuMyAxNy4xIDYwLjMgNDIuNmw0Mi43IDEyMC42Yy0xMC45LTIuMS0yMi4yLTMuMi0zMy44LTMuMmMtNTkuNSAwLTExMi4xIDI5LjYtMTQ0IDc0LjhsMC00Mi44YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMybDAgNjRjMCAxNy43IDE0LjMgMzIgMzIgMzJjMi4zIDAgNC42LS4zIDYuOC0uN2MtNC41IDE1LjUtNi44IDMxLjgtNi44IDQ4LjdjMCA1LjQgLjIgMTAuNyAuNyAxNmwtLjcgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJsMCA2NEw4Ni42IDQ4MEM1Ni41IDQ4MCAzMiA0NTUuNSAzMiA0MjUuNGMwLTYuMiAxLjEtMTIuNCAzLjEtMTguMkwxNTIuOSA3NC42QzE2MiA0OS4xIDE4Ni4xIDMyIDIxMy4yIDMyek00OTYgMjI0YTE0NCAxNDQgMCAxIDEgMCAyODggMTQ0IDE0NCAwIDEgMSAwLTI4OHptMjIuNiAxNDRsMzYuNy0zNi43YzYuMi02LjIgNi4yLTE2LjQgMC0yMi42cy0xNi40LTYuMi0yMi42IDBMNDk2IDM0NS40bC0zNi43LTM2LjdjLTYuMi02LjItMTYuNC02LjItMjIuNiAwcy02LjIgMTYuNCAwIDIyLjZMNDczLjQgMzY4bC0zNi43IDM2LjdjLTYuMiA2LjItNi4yIDE2LjQgMCAyMi42czE2LjQgNi4yIDIyLjYgMEw0OTYgMzkwLjZsMzYuNyAzNi43YzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwczYuMi0xNi40IDAtMjIuNkw1MTguNiAzNjh6XCJdXG59O1xuY29uc3QgZmFVc2VyTWludXMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndXNlci1taW51cycsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjUwM1wiLCBcIk05NiAxMjhhMTI4IDEyOCAwIDEgMSAyNTYgMEExMjggMTI4IDAgMSAxIDk2IDEyOHpNMCA0ODIuM0MwIDM4My44IDc5LjggMzA0IDE3OC4zIDMwNGw5MS40IDBDMzY4LjIgMzA0IDQ0OCAzODMuOCA0NDggNDgyLjNjMCAxNi40LTEzLjMgMjkuNy0yOS43IDI5LjdMMjkuNyA1MTJDMTMuMyA1MTIgMCA0OTguNyAwIDQ4Mi4zek00NzIgMjAwbDE0NCAwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0bC0xNDQgMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNHpcIl1cbn07XG5jb25zdCBmYU1hcnNTdHJva2VVcCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtYXJzLXN0cm9rZS11cCcsXG4gIGljb246IFszMjAsIDUxMiwgWzk4OTYsIFwibWFycy1zdHJva2UtdlwiXSwgXCJmMjJhXCIsIFwiTTE0OC43IDQuN2M2LjItNi4yIDE2LjQtNi4yIDIyLjYgMGw2NCA2NGM0LjYgNC42IDUuOSAxMS41IDMuNSAxNy40cy04LjMgOS45LTE0LjggOS45bC00MCAwIDAgMjQgMzIgMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGwtMzIgMCAwIDI0YzAgLjYgMCAxLjItLjEgMS44Yzc3IDExLjYgMTM2LjEgNzggMTM2LjEgMTU4LjJjMCA4OC40LTcxLjYgMTYwLTE2MCAxNjBTMCA0NDAuNCAwIDM1MmMwLTgwLjIgNTkuMS0xNDYuNyAxMzYuMS0xNTguMmMwLS42LS4xLTEuMi0uMS0xLjhsMC0yNC0zMiAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0bDMyIDAgMC0yNEw5NiA5NmMtNi41IDAtMTIuMy0zLjktMTQuOC05LjlzLTEuMS0xMi45IDMuNS0xNy40bDY0LTY0ek0yNTYgMzUyQTk2IDk2IDAgMSAwIDY0IDM1MmE5NiA5NiAwIDEgMCAxOTIgMHpcIl1cbn07XG5jb25zdCBmYU1hcnNTdHJva2VWID0gZmFNYXJzU3Ryb2tlVXA7XG5jb25zdCBmYUNoYW1wYWduZUdsYXNzZXMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2hhbXBhZ25lLWdsYXNzZXMnLFxuICBpY29uOiBbNjQwLCA1MTIsIFsxMjkzNDYsIFwiZ2xhc3MtY2hlZXJzXCJdLCBcImY3OWZcIiwgXCJNMTU1LjYgMTcuM0MxNjMgMyAxNzkuOS0zLjYgMTk1IDEuOUwzMjAgNDcuNWwxMjUtNDUuNmMxNS4xLTUuNSAzMiAxLjEgMzkuNCAxNS40bDc4LjggMTUyLjljMjguOCA1NS44IDEwLjMgMTIyLjMtMzguNSAxNTYuNkw1NTYuMSA0MTNsNDEtMTVjMTYuNi02IDM1IDIuNSA0MSAxOS4xcy0yLjUgMzUtMTkuMSA0MWwtNzEuMSAyNS45TDQ3Ni44IDUxMGMtMTYuNiA2LjEtMzUtMi41LTQxLTE5LjFzMi41LTM1IDE5LjEtNDFsNDEtMTUtMzEuMy04Ni4yYy01OS40IDUuMi0xMTYuMi0zNC0xMzAtOTUuMkwzMjAgMTg4LjhsLTE0LjYgNjQuN2MtMTMuOCA2MS4zLTcwLjYgMTAwLjQtMTMwIDk1LjJsLTMxLjMgODYuMiA0MSAxNWMxNi42IDYgMjUuMiAyNC40IDE5LjEgNDFzLTI0LjQgMjUuMi00MSAxOS4xTDkyLjIgNDg0LjEgMjEuMSA0NTguMmMtMTYuNi02LjEtMjUuMi0yNC40LTE5LjEtNDFzMjQuNC0yNS4yIDQxLTE5LjFsNDEgMTUgMzEuMy04Ni4yQzY2LjUgMjkyLjUgNDguMSAyMjYgNzYuOSAxNzAuMkwxNTUuNiAxNy4zem00NCA1NC40bC0yNy4yIDUyLjhMMjYxLjYgMTU3bDEzLjEtNTcuOUwxOTkuNiA3MS43em0yNDAuOSAwTDM2NS40IDk5LjEgMzc4LjUgMTU3bDg5LjItMzIuNUw0NDAuNSA3MS43elwiXVxufTtcbmNvbnN0IGZhR2xhc3NDaGVlcnMgPSBmYUNoYW1wYWduZUdsYXNzZXM7XG5jb25zdCBmYUNsaXBib2FyZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjbGlwYm9hcmQnLFxuICBpY29uOiBbMzg0LCA1MTIsIFsxMjgyMDNdLCBcImYzMjhcIiwgXCJNMTkyIDBjLTQxLjggMC03Ny40IDI2LjctOTAuNSA2NEw2NCA2NEMyOC43IDY0IDAgOTIuNyAwIDEyOEwwIDQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NGwyNTYgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTMyMGMwLTM1LjMtMjguNy02NC02NC02NGwtMzcuNSAwQzI2OS40IDI2LjcgMjMzLjggMCAxOTIgMHptMCA2NGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6TTExMiAxOTJsMTYwIDBjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZsLTE2MCAwYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2elwiXVxufTtcbmNvbnN0IGZhSG91c2VDaXJjbGVFeGNsYW1hdGlvbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdob3VzZS1jaXJjbGUtZXhjbGFtYXRpb24nLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU1MGFcIiwgXCJNMzIwLjcgMzUyYzguMS04OS43IDgzLjUtMTYwIDE3NS4zLTE2MGM4LjkgMCAxNy42IC43IDI2LjEgMS45TDMwOS41IDdjLTYtNS0xNC03LTIxLTdzLTE1IDEtMjIgOEwxMCAyMzEuNWMtNyA3LTEwIDE1LTEwIDI0YzAgMTggMTQgMzIuMSAzMiAzMi4xbDMyIDAgMCA2OS43Yy0uMSAuOS0uMSAxLjgtLjEgMi44bDAgMTEyYzAgMjIuMSAxNy45IDQwIDQwIDQwbDE2IDBjMS4yIDAgMi40LS4xIDMuNi0uMmMxLjUgLjEgMyAuMiA0LjUgLjJsMzEuOSAwIDI0IDBjMjIuMSAwIDQwLTE3LjkgNDAtNDBsMC0yNCAwLTY0YzAtMTcuNyAxNC4zLTMyIDMyLTMybDY0IDAgLjcgMHpNNDk2IDUxMmExNDQgMTQ0IDAgMSAwIDAtMjg4IDE0NCAxNDQgMCAxIDAgMCAyODh6bTAtOTZhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4em0wLTE0NGM4LjggMCAxNiA3LjIgMTYgMTZsMCA4MGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNmwwLTgwYzAtOC44IDcuMi0xNiAxNi0xNnpcIl1cbn07XG5jb25zdCBmYUZpbGVBcnJvd1VwID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZpbGUtYXJyb3ctdXAnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtcImZpbGUtdXBsb2FkXCJdLCBcImY1NzRcIiwgXCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRMMCA0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMjU2IDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0yODgtMTI4IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyTDIyNCAwIDY0IDB6TTI1NiAwbDAgMTI4IDEyOCAwTDI1NiAwek0yMTYgNDA4YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0bDAtMTAyLjEtMzEgMzFjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlsNzItNzJjOS40LTkuNCAyNC42LTkuNCAzMy45IDBsNzIgNzJjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMGwtMzEtMzFMMjE2IDQwOHpcIl1cbn07XG5jb25zdCBmYUZpbGVVcGxvYWQgPSBmYUZpbGVBcnJvd1VwO1xuY29uc3QgZmFXaWZpID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3dpZmknLFxuICBpY29uOiBbNjQwLCA1MTIsIFtcIndpZmktM1wiLCBcIndpZmktc3Ryb25nXCJdLCBcImYxZWJcIiwgXCJNNTQuMiAyMDIuOUMxMjMuMiAxMzYuNyAyMTYuOCA5NiAzMjAgOTZzMTk2LjggNDAuNyAyNjUuOCAxMDYuOWMxMi44IDEyLjIgMzMgMTEuOCA0NS4yLS45czExLjgtMzMtLjktNDUuMkM1NDkuNyA3OS41IDQ0MC40IDMyIDMyMCAzMlM5MC4zIDc5LjUgOS44IDE1Ni43Qy0yLjkgMTY5LTMuMyAxODkuMiA4LjkgMjAyczMyLjUgMTMuMiA0NS4yIC45ek0zMjAgMjU2YzU2LjggMCAxMDguNiAyMS4xIDE0OC4yIDU2YzEzLjMgMTEuNyAzMy41IDEwLjQgNDUuMi0yLjhzMTAuNC0zMy41LTIuOC00NS4yQzQ1OS44IDIxOS4yIDM5MyAxOTIgMzIwIDE5MnMtMTM5LjggMjcuMi0xOTAuNSA3MmMtMTMuMyAxMS43LTE0LjUgMzEuOS0yLjggNDUuMnMzMS45IDE0LjUgNDUuMiAyLjhjMzkuNS0zNC45IDkxLjMtNTYgMTQ4LjItNTZ6bTY0IDE2MGE2NCA2NCAwIDEgMCAtMTI4IDAgNjQgNjQgMCAxIDAgMTI4IDB6XCJdXG59O1xuY29uc3QgZmFXaWZpMyA9IGZhV2lmaTtcbmNvbnN0IGZhV2lmaVN0cm9uZyA9IGZhV2lmaTtcbmNvbnN0IGZhQmF0aCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdiYXRoJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI4NzA1LCBcImJhdGh0dWJcIl0sIFwiZjJjZFwiLCBcIk05NiA3Ny4zYzAtNy4zIDUuOS0xMy4zIDEzLjMtMTMuM2MzLjUgMCA2LjkgMS40IDkuNCAzLjlsMTQuOSAxNC45QzEzMCA5MS44IDEyOCAxMDEuNyAxMjggMTEyYzAgMTkuOSA3LjIgMzggMTkuMiA1MmMtNS4zIDkuMi00IDIxLjEgMy44IDI5YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwTDI4OSA4OWM5LjQtOS40IDkuNC0yNC42IDAtMzMuOWMtNy45LTcuOS0xOS44LTkuMS0yOS0zLjhDMjQ2IDM5LjIgMjI3LjkgMzIgMjA4IDMyYy0xMC4zIDAtMjAuMiAyLTI5LjIgNS41TDE2My45IDIyLjZDMTQ5LjQgOC4xIDEyOS43IDAgMTA5LjMgMEM2Ni42IDAgMzIgMzQuNiAzMiA3Ny4zTDMyIDI1NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmw0NDggMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkw5NiAyNTYgOTYgNzcuM3pNMzIgMzUybDAgMTZjMCAyOC40IDEyLjQgNTQgMzIgNzEuNkw2NCA0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTE2IDI1NiAwIDAgMTZjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTQwLjRjMTkuNi0xNy42IDMyLTQzLjEgMzItNzEuNmwwLTE2TDMyIDM1MnpcIl1cbn07XG5jb25zdCBmYUJhdGh0dWIgPSBmYUJhdGg7XG5jb25zdCBmYVVuZGVybGluZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd1bmRlcmxpbmUnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYwY2RcIiwgXCJNMTYgNjRjMC0xNy43IDE0LjMtMzIgMzItMzJsOTYgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtMTYgMCAwIDEyOGMwIDUzIDQzIDk2IDk2IDk2czk2LTQzIDk2LTk2bDAtMTI4LTE2IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJsOTYgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtMTYgMCAwIDEyOGMwIDg4LjQtNzEuNiAxNjAtMTYwIDE2MHMtMTYwLTcxLjYtMTYwLTE2MEw2NCA5NiA0OCA5NkMzMC4zIDk2IDE2IDgxLjcgMTYgNjR6TTAgNDQ4YzAtMTcuNyAxNC4zLTMyIDMyLTMybDM4NCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyTDMyIDQ4MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6XCJdXG59O1xuY29uc3QgZmFVc2VyUGVuID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3VzZXItcGVuJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXCJ1c2VyLWVkaXRcIl0sIFwiZjRmZlwiLCBcIk0yMjQgMjU2QTEyOCAxMjggMCAxIDAgMjI0IDBhMTI4IDEyOCAwIDEgMCAwIDI1NnptLTQ1LjcgNDhDNzkuOCAzMDQgMCAzODMuOCAwIDQ4Mi4zQzAgNDk4LjcgMTMuMyA1MTIgMjkuNyA1MTJsMjkzLjEgMGMtMy4xLTguOC0zLjctMTguNC0xLjQtMjcuOGwxNS02MC4xYzIuOC0xMS4zIDguNi0yMS41IDE2LjgtMjkuN2w0MC4zLTQwLjNjLTMyLjEtMzEtNzUuNy01MC4xLTEyMy45LTUwLjFsLTkxLjQgMHptNDM1LjUtNjguM2MtMTUuNi0xNS42LTQwLjktMTUuNi01Ni42IDBsLTI5LjQgMjkuNCA3MSA3MSAyOS40LTI5LjRjMTUuNi0xNS42IDE1LjYtNDAuOSAwLTU2LjZsLTE0LjQtMTQuNHpNMzc1LjkgNDE3Yy00LjEgNC4xLTcgOS4yLTguNCAxNC45bC0xNSA2MC4xYy0xLjQgNS41IC4yIDExLjIgNC4yIDE1LjJzOS43IDUuNiAxNS4yIDQuMmw2MC4xLTE1YzUuNi0xLjQgMTAuOC00LjMgMTQuOS04LjRMNTc2LjEgMzU4LjdsLTcxLTcxTDM3NS45IDQxN3pcIl1cbn07XG5jb25zdCBmYVVzZXJFZGl0ID0gZmFVc2VyUGVuO1xuY29uc3QgZmFTaWduYXR1cmUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc2lnbmF0dXJlJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNWI3XCIsIFwiTTE5MiAxMjhjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMmwwIDcuOGMwIDI3LjctMi40IDU1LjMtNy4xIDgyLjVsLTg0LjQgMjUuM2MtNDAuNiAxMi4yLTY4LjQgNDkuNi02OC40IDkybDAgNzEuOWMwIDQwIDMyLjUgNzIuNSA3Mi41IDcyLjVjMjYgMCA1MC0xMy45IDYyLjktMzYuNWwxMy45LTI0LjNjMjYuOC00NyA0Ni41LTk3LjcgNTguNC0xNTAuNWw5NC40LTI4LjMtMTIuNSAzNy41Yy0zLjMgOS44LTEuNiAyMC41IDQuNCAyOC44czE1LjcgMTMuMyAyNiAxMy4zbDEyOCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC04My42IDAgMTgtNTMuOWMzLjgtMTEuMyAuOS0yMy44LTcuNC0zMi40cy0yMC43LTExLjgtMzIuMi04LjRMMzE2LjQgMTk4LjFjMi40LTIwLjcgMy42LTQxLjQgMy42LTYyLjNsMC03LjhjMC01My00My05Ni05Ni05NnMtOTYgNDMtOTYgOTZsMCAzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMzJ6bS05LjIgMTc3bDQ5LTE0LjdjLTEwLjQgMzMuOC0yNC41IDY2LjQtNDIuMSA5Ny4ybC0xMy45IDI0LjNjLTEuNSAyLjYtNC4zIDQuMy03LjQgNC4zYy00LjcgMC04LjUtMy44LTguNS04LjVsMC03MS45YzAtMTQuMSA5LjMtMjYuNiAyMi44LTMwLjd6TTI0IDM2OGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGw0MC4zIDBjLS4yLTIuOC0uMy01LjYtLjMtOC41TDY0IDM2OGwtNDAgMHptNTkyIDQ4YzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0bC0zMTAuMSAwYy02LjcgMTYuMy0xNC4yIDMyLjMtMjIuMyA0OEw2MTYgNDE2elwiXVxufTtcbmNvbnN0IGZhU3Ryb29wd2FmZWwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3Ryb29wd2FmZWwnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY1NTFcIiwgXCJNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2ek0zMTIuNiA2My43Yy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMEwyNTYgOTcuNiAyMjIuMSA2My43Yy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMHMtNi4yIDE2LjQgMCAyMi42bDMzLjkgMzMuOS00NS4zIDQ1LjMtNTYuNi01Ni42Yy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMHMtNi4yIDE2LjQgMCAyMi42bDU2LjYgNTYuNi00NS4zIDQ1LjNMODYuMyAxOTkuNGMtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBzLTYuMiAxNi40IDAgMjIuNkw5Ny42IDI1NiA2My43IDI4OS45Yy02LjIgNi4yLTYuMiAxNi40IDAgMjIuNnMxNi40IDYuMiAyMi42IDBsMzMuOS0zMy45IDQ1LjMgNDUuMy01Ni42IDU2LjZjLTYuMiA2LjItNi4yIDE2LjQgMCAyMi42czE2LjQgNi4yIDIyLjYgMGw1Ni42LTU2LjYgNDUuMyA0NS4zLTMzLjkgMzMuOWMtNi4yIDYuMi02LjIgMTYuNCAwIDIyLjZzMTYuNCA2LjIgMjIuNiAwTDI1NiA0MTQuNGwzMy45IDMzLjljNi4yIDYuMiAxNi40IDYuMiAyMi42IDBzNi4yLTE2LjQgMC0yMi42bC0zMy45LTMzLjkgNDUuMy00NS4zIDU2LjYgNTYuNmM2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMHM2LjItMTYuNCAwLTIyLjZsLTU2LjYtNTYuNiA0NS4zLTQ1LjMgMzMuOSAzMy45YzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwczYuMi0xNi40IDAtMjIuNkw0MTQuNCAyNTZsMzMuOS0zMy45YzYuMi02LjIgNi4yLTE2LjQgMC0yMi42cy0xNi40LTYuMi0yMi42IDBsLTMzLjkgMzMuOS00NS4zLTQ1LjMgNTYuNi01Ni42YzYuMi02LjIgNi4yLTE2LjQgMC0yMi42cy0xNi40LTYuMi0yMi42IDBsLTU2LjYgNTYuNi00NS4zLTQ1LjMgMzMuOS0zMy45YzYuMi02LjIgNi4yLTE2LjQgMC0yMi42ek0xNDIuOSAyNTZsNDUuMy00NS4zTDIzMy40IDI1NmwtNDUuMyA0NS4zTDE0Mi45IDI1NnptNjcuOSA2Ny45TDI1NiAyNzguNmw0NS4zIDQ1LjNMMjU2IDM2OS4xbC00NS4zLTQ1LjN6TTI3OC42IDI1Nmw0NS4zLTQ1LjNMMzY5LjEgMjU2bC00NS4zIDQ1LjNMMjc4LjYgMjU2em0yMi42LTY3LjlMMjU2IDIzMy40bC00NS4zLTQ1LjNMMjU2IDE0Mi45bDQ1LjMgNDUuM3pcIl1cbn07XG5jb25zdCBmYUJvbGQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYm9sZCcsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjAzMlwiLCBcIk0wIDY0QzAgNDYuMyAxNC4zIDMyIDMyIDMybDQ4IDAgMTYgMCAxMjggMGM3MC43IDAgMTI4IDU3LjMgMTI4IDEyOGMwIDMxLjMtMTEuMyA2MC4xLTMwIDgyLjNjMzcuMSAyMi40IDYyIDYzLjEgNjIgMTA5LjdjMCA3MC43LTU3LjMgMTI4LTEyOCAxMjhMOTYgNDgwbC0xNiAwLTQ4IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJsMTYgMCAwLTE2MEw0OCA5NiAzMiA5NkMxNC4zIDk2IDAgODEuNyAwIDY0ek0yMjQgMjI0YzM1LjMgMCA2NC0yOC43IDY0LTY0cy0yOC43LTY0LTY0LTY0TDExMiA5NmwwIDEyOCAxMTIgMHpNMTEyIDI4OGwwIDEyOCAxNDQgMGMzNS4zIDAgNjQtMjguNyA2NC02NHMtMjguNy02NC02NC02NGwtMzIgMC0xMTIgMHpcIl1cbn07XG5jb25zdCBmYUFuY2hvckxvY2sgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYW5jaG9yLWxvY2snLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU0YWRcIiwgXCJNMzIwIDk2YTMyIDMyIDAgMSAxIC02NCAwIDMyIDMyIDAgMSAxIDY0IDB6bTIxLjEgODBDMzY3IDE1OC44IDM4NCAxMjkuNCAzODQgOTZjMC01My00My05Ni05Ni05NnMtOTYgNDMtOTYgOTZjMCAzMy40IDE3IDYyLjggNDIuOSA4MEwyMjQgMTc2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDMyIDAgMCAyMDgtNDggMGMtNTMgMC05Ni00My05Ni05NmwwLTYuMSA3IDdjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45TDk3IDI2M2MtOS40LTkuNC0yNC42LTkuNC0zMy45IDBMNyAzMTljLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45czI0LjYgOS40IDMzLjkgMGw3LTcgMCA2LjFjMCA4OC40IDcxLjYgMTYwIDE2MCAxNjBsODAgMCA4MCAwYzggMCAxNS45LS42IDIzLjYtMS43Yy00LjgtOS03LjYtMTkuMy03LjYtMzAuM2wwLTMzLjNjLTUuMiAuOS0xMC41IDEuMy0xNiAxLjNsLTQ4IDAgMC0yMDggMzIgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtMTAuOSAwek01MjggMjQwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgNDgtNjQgMCAwLTQ4YzAtMTcuNyAxNC4zLTMyIDMyLTMyem0tODAgMzJsMCA0OGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJsMCAxMjhjMCAxNy43IDE0LjMgMzIgMzIgMzJsMTYwIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJsMC0xMjhjMC0xNy43LTE0LjMtMzItMzItMzJsMC00OGMwLTQ0LjItMzUuOC04MC04MC04MHMtODAgMzUuOC04MCA4MHpcIl1cbn07XG5jb25zdCBmYUJ1aWxkaW5nTmdvID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2J1aWxkaW5nLW5nbycsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZTRkN1wiLCBcIk00OCAwQzIxLjUgMCAwIDIxLjUgMCA0OEwwIDQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGw5NiAwIDAtODBjMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OGwwIDgwIDk2IDBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhsMC00MTZjMC0yNi41LTIxLjUtNDgtNDgtNDhMNDggMHpNNjQgMjQwYzAtOC44IDcuMi0xNiAxNi0xNmwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDMyYzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzJ6bTExMi0xNmwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDMyYzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzJjMC04LjggNy4yLTE2IDE2LTE2em04MCAxNmMwLTguOCA3LjItMTYgMTYtMTZsMzIgMGM4LjggMCAxNiA3LjIgMTYgMTZsMCAzMmMwIDguOC03LjIgMTYtMTYgMTZsLTMyIDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTMyek0xNjggNjRsNDggMGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNmwtMzIgMCAwIDY0IDE2IDAgMC0xNmMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2bDAgMjRjMCAxMy4zLTEwLjcgMjQtMjQgMjRsLTMyIDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0bDAtODhjMC04LjggNy4yLTE2IDE2LTE2ek0zMDQgOTZjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDMyYzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZsMC0zMmMwLTguOC03LjItMTYtMTYtMTZ6bS00OCAxNmMwLTI2LjUgMjEuNS00OCA0OC00OHM0OCAyMS41IDQ4IDQ4bDAgMzJjMCAyNi41LTIxLjUgNDgtNDggNDhzLTQ4LTIxLjUtNDgtNDhsMC0zMnpNNjEuMyA3MS4xbDM0LjcgNTJMOTYgODBjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNmwwIDk2YzAgNy4xLTQuNiAxMy4zLTExLjQgMTUuM3MtMTQtLjYtMTcuOS02LjRMNjQgMTMyLjggNjQgMTc2YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2bDAtOTZjMC03LjEgNC42LTEzLjMgMTEuNC0xNS4zczE0IC42IDE3LjkgNi40elwiXVxufTtcbmNvbnN0IGZhTWFuYXRTaWduID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21hbmF0LXNpZ24nLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImUxZDVcIiwgXCJNMTkyIDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMmwwIDM0LjdDNjkuMiAxMTMuOSAwIDE5Mi45IDAgMjg4TDAgNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0xNjBjMC01OS42IDQwLjgtMTA5LjggOTYtMTI0bDAgMjg0YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0yODRjNTUuMiAxNC4yIDk2IDY0LjMgOTYgMTI0bDAgMTYwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0xNjBjMC05NS4xLTY5LjItMTc0LjEtMTYwLTE4OS4zTDIyNCA2NGMwLTE3LjctMTQuMy0zMi0zMi0zMnpcIl1cbn07XG5jb25zdCBmYU5vdEVxdWFsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ25vdC1lcXVhbCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjUzZVwiLCBcIk0zNjkuOCAzNy40YzE0LjcgOS44IDE4LjcgMjkuNyA4LjkgNDQuNEwzMzcuMSAxNDRsNjIuOSAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC0xMDUuNSAwLTY0IDk2TDQwMCAzMDRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTIxMi4yIDAtNjUuMiA5Ny43Yy05LjggMTQuNy0yOS43IDE4LjctNDQuNCA4LjlzLTE4LjctMjkuNy04LjktNDQuNEwxMTAuOSAzNjggNDggMzY4Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDEwNS41IDAgNjQtOTZMNDggMjA4Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDIxMi4yIDAgNjUuMi05Ny43YzkuOC0xNC43IDI5LjctMTguNyA0NC40LTguOXpcIl1cbn07XG5jb25zdCBmYUJvcmRlclRvcExlZnQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYm9yZGVyLXRvcC1sZWZ0JyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXCJib3JkZXItc3R5bGVcIl0sIFwiZjg1M1wiLCBcIk0wIDQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMzM2YzAtOC44IDcuMi0xNiAxNi0xNmwzMzYgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkw4MCAzMkMzNS44IDMyIDAgNjcuOCAwIDExMkwwIDQ0OHptMTYwIDBhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHptMTkyIDBhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHptLTk2IDBhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHptMTkyIDBhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHpNNDE2IDI4OGEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6bTAgMzJhMzIgMzIgMCAxIDAgMCA2NCAzMiAzMiAwIDEgMCAwLTY0em0wLTEyOGEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6XCJdXG59O1xuY29uc3QgZmFCb3JkZXJTdHlsZSA9IGZhQm9yZGVyVG9wTGVmdDtcbmNvbnN0IGZhTWFwTG9jYXRpb25Eb3QgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbWFwLWxvY2F0aW9uLWRvdCcsXG4gIGljb246IFs1NzYsIDUxMiwgW1wibWFwLW1hcmtlZC1hbHRcIl0sIFwiZjVhMFwiLCBcIk00MDggMTIwYzAgNTQuNi03My4xIDE1MS45LTEwNS4yIDE5MmMtNy43IDkuNi0yMiA5LjYtMjkuNiAwQzI0MS4xIDI3MS45IDE2OCAxNzQuNiAxNjggMTIwQzE2OCA1My43IDIyMS43IDAgMjg4IDBzMTIwIDUzLjcgMTIwIDEyMHptOCA4MC40YzMuNS02LjkgNi43LTEzLjggOS42LTIwLjZjLjUtMS4yIDEtMi41IDEuNS0zLjdsMTE2LTQ2LjRDNTU4LjkgMTIzLjQgNTc2IDEzNSA1NzYgMTUybDAgMjcwLjhjMCA5LjgtNiAxOC42LTE1LjEgMjIuM0w0MTYgNTAzbDAtMzAyLjZ6TTEzNy42IDEzOC4zYzIuNCAxNC4xIDcuMiAyOC4zIDEyLjggNDEuNWMyLjkgNi44IDYuMSAxMy43IDkuNiAyMC42bDAgMjUxLjRMMzIuOSA1MDIuN0MxNy4xIDUwOSAwIDQ5Ny40IDAgNDgwLjRMMCAyMDkuNmMwLTkuOCA2LTE4LjYgMTUuMS0yMi4zbDEyMi42LTQ5ek0zMjcuOCAzMzJjMTMuOS0xNy40IDM1LjctNDUuNyA1Ni4yLTc3bDAgMjQ5LjNMMTkyIDQ0OS40IDE5MiAyNTVjMjAuNSAzMS4zIDQyLjMgNTkuNiA1Ni4yIDc3YzIwLjUgMjUuNiA1OS4xIDI1LjYgNzkuNiAwek0yODggMTUyYTQwIDQwIDAgMSAwIDAtODAgNDAgNDAgMCAxIDAgMCA4MHpcIl1cbn07XG5jb25zdCBmYU1hcE1hcmtlZEFsdCA9IGZhTWFwTG9jYXRpb25Eb3Q7XG5jb25zdCBmYUplZGkgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnamVkaScsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjY2OVwiLCBcIk0yNDYgMzE1LjdsLTIxLjItMzEuOWMtMi4xLTMuMi0xLjctNy40IDEtMTAuMXM2LjktMy4xIDEwLjEtMWwyOS41IDE5LjdjMi4xIDEuNCA0LjkgMCA1LTIuNkwyNzkuNyA4Yy4xLTQuNSAzLjgtOCA4LjMtOHM4LjEgMy41IDguMyA4bDkuNCAyODEuOWMuMSAyLjUgMi45IDMuOSA1IDIuNmwyOS41LTE5LjdjMy4yLTIuMSA3LjQtMS43IDEwLjEgMXMzLjEgNi45IDEgMTAuMUwzMzAgMzE1LjdjLTEuMyAxLjktLjIgNC41IDIgNC45bDM3LjYgNy41YzMuNyAuNyA2LjQgNCA2LjQgNy44cy0yLjcgNy4xLTYuNCA3LjhMMzMyIDM1MS40Yy0yLjIgLjQtMy4zIDMtMiA0LjlsMjEuMiAzMS45YzIuMSAzLjIgMS43IDcuNC0xIDEwLjFzLTYuOSAzLjEtMTAuMSAxbC0yNi4zLTE3LjZjLTIuMi0xLjQtNS4xIC4yLTUgMi44bDIuMSA2MS41QzM3MC42IDQzNS4yIDQxNiAzODIuOSA0MTYgMzIwYzAtMzctMTUuNy03MC40LTQwLjgtOTMuN2MtNy02LjUtNi41LTE4LjYgMS0yNC40QzQxMC4xIDE3NS41IDQzMiAxMzQuMyA0MzIgODhjMC0xNi44LTIuOS0zMy04LjItNDhjLTQuNi0xMyAxMC4yLTMwIDIxLjQtMjJjNTMuNSAzOCA5Mi43IDk0LjggMTA3LjggMTYwLjdjLjUgMi4xLS4yIDQuMy0xLjcgNS45bC0yOC40IDI4LjRjLTQgNC0xLjIgMTAuOSA0LjUgMTAuOWwyNiAwYzMuNCAwIDYuMiAyLjYgNi4zIDZjLjEgMy4zIC4yIDYuNiAuMiAxMGMwIDE3LjUtMS43IDM0LjctNC44IDUxLjNjLS4yIDEuMi0uOSAyLjQtMS43IDMuM2wtNDYuNSA0Ni41Yy00IDQtMS4yIDEwLjkgNC41IDEwLjlsMTQuNiAwYzQuNiAwIDcuNyA0LjggNS43IDlDNDg3LjIgNDUwLjUgMzk0LjggNTEyIDI4OCA1MTJTODguOCA0NTAuNSA0NC4zIDM2MWMtMi4xLTQuMiAxLTkgNS43LTlsMTQuNiAwYzUuNyAwIDguNi02LjkgNC41LTEwLjlMMjIuNiAyOTQuNmMtLjktLjktMS41LTItMS43LTMuM0MxNy43IDI3NC43IDE2IDI1Ny41IDE2IDI0MGMwLTMuMyAuMS02LjcgLjItMTBjLjEtMy40IDIuOS02IDYuMy02bDI2IDBjNS43IDAgOC42LTYuOSA0LjUtMTAuOUwyNC42IDE4NC42Yy0xLjUtMS41LTIuMi0zLjgtMS43LTUuOUMzOC4xIDExMi44IDc3LjMgNTYgMTMwLjggMThjMTEuMy04IDI2IDguOSAyMS40IDIyYy01LjMgMTUtOC4yIDMxLjItOC4yIDQ4YzAgNDYuMyAyMS45IDg3LjUgNTUuOCAxMTMuOWM3LjUgNS44IDggMTcuOSAxIDI0LjRDMTc1LjcgMjQ5LjYgMTYwIDI4MyAxNjAgMzIwYzAgNjIuOSA0NS40IDExNS4yIDEwNS4xIDEyNmwyLjEtNjEuNWMuMS0yLjYtMi44LTQuMi01LTIuOGwtMjYuMyAxNy42Yy0zLjIgMi4xLTcuNCAxLjctMTAuMS0xcy0zLjEtNi45LTEtMTAuMUwyNDYgMzU2LjNjMS4zLTEuOSAuMi00LjUtMi00LjlsLTM3LjYtNy41Yy0zLjctLjctNi40LTQtNi40LTcuOHMyLjctNy4xIDYuNC03LjhsMzcuNi03LjVjMi4yLS40IDMuMy0zIDItNC45elwiXVxufTtcbmNvbnN0IGZhU3F1YXJlUG9sbFZlcnRpY2FsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NxdWFyZS1wb2xsLXZlcnRpY2FsJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXCJwb2xsXCJdLCBcImY2ODFcIiwgXCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NkwwIDQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NGwzMjAgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTMyMGMwLTM1LjMtMjguNy02NC02NC02NEw2NCAzMnptNjQgMTkyYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgOTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC05NmMwLTE3LjcgMTQuMy0zMiAzMi0zMnptNjQtNjRjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMmwwIDE5MmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTE5MnpNMzIwIDI4OGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDMyYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtMzJjMC0xNy43IDE0LjMtMzIgMzItMzJ6XCJdXG59O1xuY29uc3QgZmFQb2xsID0gZmFTcXVhcmVQb2xsVmVydGljYWw7XG5jb25zdCBmYU11Z0hvdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtdWctaG90JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbOTc0OV0sIFwiZjdiNlwiLCBcIk04OCAwQzc0LjcgMCA2NCAxMC43IDY0IDI0YzAgMzguOSAyMy40IDU5LjQgMzkuMSA3My4xbDEuMSAxQzEyMC41IDExMi4zIDEyOCAxMTkuOSAxMjggMTM2YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRjMC0zOC45LTIzLjQtNTkuNC0zOS4xLTczLjFsLTEuMS0xQzExOS41IDQ3LjcgMTEyIDQwLjEgMTEyIDI0YzAtMTMuMy0xMC43LTI0LTI0LTI0ek0zMiAxOTJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyTDAgNDE2YzAgNTMgNDMgOTYgOTYgOTZsMTkyIDBjNTMgMCA5Ni00MyA5Ni05NmwxNiAwYzYxLjkgMCAxMTItNTAuMSAxMTItMTEycy01MC4xLTExMi0xMTItMTEybC00OCAwTDMyIDE5MnptMzUyIDY0bDE2IDBjMjYuNSAwIDQ4IDIxLjUgNDggNDhzLTIxLjUgNDgtNDggNDhsLTE2IDAgMC05NnpNMjI0IDI0YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0YzAgMzguOSAyMy40IDU5LjQgMzkuMSA3My4xbDEuMSAxQzIzMi41IDExMi4zIDI0MCAxMTkuOSAyNDAgMTM2YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRjMC0zOC45LTIzLjQtNTkuNC0zOS4xLTczLjFsLTEuMS0xQzIzMS41IDQ3LjcgMjI0IDQwLjEgMjI0IDI0elwiXVxufTtcbmNvbnN0IGZhQ2FyQmF0dGVyeSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjYXItYmF0dGVyeScsXG4gIGljb246IFs1MTIsIDUxMiwgW1wiYmF0dGVyeS1jYXJcIl0sIFwiZjVkZlwiLCBcIk04MCA5NmMwLTE3LjcgMTQuMy0zMiAzMi0zMmw2NCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDk2IDBjMC0xNy43IDE0LjMtMzIgMzItMzJsNjQgMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwxNiAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMjI0YzAgMzUuMy0yOC43IDY0LTY0IDY0TDY0IDQ0OGMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCAxNjBjMC0zNS4zIDI4LjctNjQgNjQtNjRsMTYgMHptMzA0IDk2YzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2bDAgMzItMzIgMGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmwzMiAwIDAgMzJjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNmwwLTMyIDMyIDBjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZsLTMyIDAgMC0zMnpNODAgMjQwYzAgOC44IDcuMiAxNiAxNiAxNmw5NiAwYzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2bC05NiAwYy04LjggMC0xNiA3LjItMTYgMTZ6XCJdXG59O1xuY29uc3QgZmFCYXR0ZXJ5Q2FyID0gZmFDYXJCYXR0ZXJ5O1xuY29uc3QgZmFHaWZ0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2dpZnQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjc4NzNdLCBcImYwNmJcIiwgXCJNMTkwLjUgNjguOEwyMjUuMyAxMjhsLTEuMyAwLTcyIDBjLTIyLjEgMC00MC0xNy45LTQwLTQwczE3LjktNDAgNDAtNDBsMi4yIDBjMTQuOSAwIDI4LjggNy45IDM2LjMgMjAuOHpNNjQgODhjMCAxNC40IDMuNSAyOCA5LjYgNDBMMzIgMTI4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMmwwIDY0YzAgMTcuNyAxNC4zIDMyIDMyIDMybDQ0OCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMybDAtNjRjMC0xNy43LTE0LjMtMzItMzItMzJsLTQxLjYgMGM2LjEtMTIgOS42LTI1LjYgOS42LTQwYzAtNDguNi0zOS40LTg4LTg4LTg4bC0yLjIgMGMtMzEuOSAwLTYxLjUgMTYuOS03Ny43IDQ0LjRMMjU2IDg1LjVsLTI0LjEtNDFDMjE1LjcgMTYuOSAxODYuMSAwIDE1NC4yIDBMMTUyIDBDMTAzLjQgMCA2NCAzOS40IDY0IDg4em0zMzYgMGMwIDIyLjEtMTcuOSA0MC00MCA0MGwtNzIgMC0xLjMgMCAzNC44LTU5LjJDMzI5LjEgNTUuOSAzNDIuOSA0OCAzNTcuOCA0OGwyLjIgMGMyMi4xIDAgNDAgMTcuOSA0MCA0MHpNMzIgMjg4bDAgMTc2YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4bDE0NCAwIDAtMjI0TDMyIDI4OHpNMjg4IDUxMmwxNDQgMGMyNi41IDAgNDgtMjEuNSA0OC00OGwwLTE3Ni0xOTIgMCAwIDIyNHpcIl1cbn07XG5jb25zdCBmYURpY2VUd28gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZGljZS10d28nLFxuICBpY29uOiBbNDQ4LCA1MTIsIFs5ODU3XSwgXCJmNTI4XCIsIFwiTTAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJsMzIwIDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCAzMjBjMCAzNS4zLTI4LjcgNjQtNjQgNjRMNjQgNDgwYy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDk2ek0zNTIgMzUyYTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6TTEyOCAxOTJhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0elwiXVxufTtcbmNvbnN0IGZhQ2hlc3NRdWVlbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaGVzcy1xdWVlbicsXG4gIGljb246IFs1MTIsIDUxMiwgWzk4MTldLCBcImY0NDVcIiwgXCJNMjU2IDBhNTYgNTYgMCAxIDEgMCAxMTJBNTYgNTYgMCAxIDEgMjU2IDB6TTEzNC4xIDE0My44YzMuMy0xMyAxNS0yMy44IDMwLjItMjMuOGMxMi4zIDAgMjIuNiA3LjIgMjcuNyAxN2MxMiAyMy4yIDM2LjIgMzkgNjQgMzlzNTItMTUuOCA2NC0zOWM1LjEtOS44IDE1LjQtMTcgMjcuNy0xN2MxNS4zIDAgMjcgMTAuOCAzMC4yIDIzLjhjNyAyNy44IDMyLjIgNDguMyA2Mi4xIDQ4LjNjMTAuOCAwIDIxLTIuNyAyOS44LTcuNGM4LjQtNC40IDE4LjktNC41IDI3LjYgLjljMTMgOCAxNy4xIDI1IDkuMiAzOEwzOTkuNyA0MDAgMzg0IDQwMGwtNDAuNCAwLTE3NS4xIDBMMTI4IDQwMGwtMTUuNyAwTDUuNCAyMjMuNmMtNy45LTEzLTMuOC0zMCA5LjItMzhjOC43LTUuMyAxOS4yLTUuMyAyNy42LS45YzguOSA0LjcgMTkgNy40IDI5LjggNy40YzI5LjkgMCA1NS4xLTIwLjUgNjIuMS00OC4zek0yNTYgMjI0czAgMCAwIDBzMCAwIDAgMHMwIDAgMCAwek0xMTIgNDMybDI4OCAwIDQxLjQgNDEuNGM0LjIgNC4yIDYuNiAxMCA2LjYgMTZjMCAxMi41LTEwLjEgMjIuNi0yMi42IDIyLjZMODYuNiA1MTJDNzQuMSA1MTIgNjQgNTAxLjkgNjQgNDg5LjRjMC02IDIuNC0xMS44IDYuNi0xNkwxMTIgNDMyelwiXVxufTtcbmNvbnN0IGZhR2xhc3NlcyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdnbGFzc2VzJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmNTMwXCIsIFwiTTExOC42IDgwYy0xMS41IDAtMjEuNCA3LjktMjQgMTkuMUw1NyAyNjAuM2MyMC41LTYuMiA0OC4zLTEyLjMgNzguNy0xMi4zYzMyLjMgMCA2MS44IDYuOSA4Mi44IDEzLjVjMTAuNiAzLjMgMTkuMyA2LjcgMjUuNCA5LjJjMy4xIDEuMyA1LjUgMi40IDcuMyAzLjJjLjkgLjQgMS42IC43IDIuMSAxbC42IC4zIC4yIC4xYzAgMCAuMSAwIC4xIDBjMCAwIDAgMCAwIDBzMCAwIDAgMEwyNDcuOSAyODhzMCAwIDAgMGw2LjMtMTIuN2M1LjggMi45IDEwLjQgNy4zIDEzLjUgMTIuN2w0MC42IDBjMy4xLTUuMyA3LjctOS44IDEzLjUtMTIuN2w2LjMgMTIuN3MwIDAgMCAwYy02LjMtMTIuNy02LjMtMTIuNy02LjMtMTIuN3MwIDAgMCAwczAgMCAwIDBjMCAwIC4xIDAgLjEgMGwuMi0uMSAuNi0uM2MuNS0uMiAxLjItLjYgMi4xLTFjMS44LS44IDQuMi0xLjkgNy4zLTMuMmM2LjEtMi42IDE0LjgtNS45IDI1LjQtOS4yYzIxLTYuNiA1MC40LTEzLjUgODIuOC0xMy41YzMwLjQgMCA1OC4yIDYuMSA3OC43IDEyLjNMNDgxLjQgOTkuMWMtMi42LTExLjItMTIuNi0xOS4xLTI0LTE5LjFjLTMuMSAwLTYuMiAuNi05LjIgMS44TDQxNi45IDk0LjNjLTEyLjMgNC45LTI2LjMtMS4xLTMxLjItMTMuNHMxLjEtMjYuMyAxMy40LTMxLjJsMzEuMy0xMi41YzguNi0zLjQgMTcuNy01LjIgMjctNS4yYzMzLjggMCA2My4xIDIzLjMgNzAuOCA1Ni4ybDQzLjkgMTg4YzEuNyA3LjMgMi45IDE0LjcgMy41IDIyLjFjLjMgMS45IC41IDMuOCAuNSA1LjdsMCA2LjcgMCA0MS4zIDAgMTZjMCA2MS45LTUwLjEgMTEyLTExMiAxMTJsLTQ0LjMgMGMtNTkuNCAwLTEwOC41LTQ2LjQtMTExLjgtMTA1LjhMMzA2LjYgMzUybC0zNy4yIDAtMS4yIDIyLjJDMjY0LjkgNDMzLjYgMjE1LjggNDgwIDE1Ni4zIDQ4MEwxMTIgNDgwQzUwLjEgNDgwIDAgNDI5LjkgMCAzNjhsMC0xNiAwLTQxLjNMMCAzMDRjMC0xLjkgLjItMy44IC41LTUuN2MuNi03LjQgMS44LTE0LjggMy41LTIyLjFsNDMuOS0xODhDNTUuNSA1NS4zIDg0LjggMzIgMTE4LjYgMzJjOS4yIDAgMTguNCAxLjggMjcgNS4ybDMxLjMgMTIuNWMxMi4zIDQuOSAxOC4zIDE4LjkgMTMuNCAzMS4ycy0xOC45IDE4LjMtMzEuMiAxMy40TDEyNy44IDgxLjhjLTIuOS0xLjItNi0xLjgtOS4yLTEuOHpNNjQgMzI1LjRMNjQgMzY4YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4bDQ0LjMgMGMyNS41IDAgNDYuNS0xOS45IDQ3LjktNDUuM2wyLjUtNDUuNmMtMi4zLS44LTQuOS0xLjctNy41LTIuNWMtMTcuMi01LjQtMzkuOS0xMC41LTYzLjYtMTAuNWMtMjMuNyAwLTQ2LjIgNS4xLTYzLjIgMTAuNWMtMy4xIDEtNS45IDEuOS04LjUgMi45ek01MTIgMzY4bDAtNDIuNmMtMi42LS45LTUuNS0xLjktOC41LTIuOWMtMTctNS40LTM5LjUtMTAuNS02My4yLTEwLjVjLTIzLjcgMC00Ni40IDUuMS02My42IDEwLjVjLTIuNyAuOC01LjIgMS43LTcuNSAyLjVsMi41IDQ1LjZjMS40IDI1LjQgMjIuNSA0NS4zIDQ3LjkgNDUuM2w0NC4zIDBjMjYuNSAwIDQ4LTIxLjUgNDgtNDh6XCJdXG59O1xuY29uc3QgZmFDaGVzc0JvYXJkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NoZXNzLWJvYXJkJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmNDNjXCIsIFwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZMMCA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzIwIDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0zMjBjMC0zNS4zLTI4LjctNjQtNjQtNjRMNjQgMzJ6bTY0IDY0bDAgNjQgNjQgMCAwLTY0IDY0IDAgMCA2NCA2NCAwIDAtNjQgNjQgMCAwIDY0LTY0IDAgMCA2NCA2NCAwIDAgNjQtNjQgMCAwIDY0IDY0IDAgMCA2NC02NCAwIDAtNjQtNjQgMCAwIDY0LTY0IDAgMC02NC02NCAwIDAgNjQtNjQgMCAwLTY0IDY0IDAgMC02NC02NCAwIDAtNjQgNjQgMCAwLTY0LTY0IDAgMC02NCA2NCAwem02NCAxMjhsNjQgMCAwLTY0LTY0IDAgMCA2NHptMCA2NGwwLTY0LTY0IDAgMCA2NCA2NCAwem02NCAwbC02NCAwIDAgNjQgNjQgMCAwLTY0em0wIDBsNjQgMCAwLTY0LTY0IDAgMCA2NHpcIl1cbn07XG5jb25zdCBmYUJ1aWxkaW5nQ2lyY2xlQ2hlY2sgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYnVpbGRpbmctY2lyY2xlLWNoZWNrJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlNGQyXCIsIFwiTTQ4IDBDMjEuNSAwIDAgMjEuNSAwIDQ4TDAgNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4bDk2IDAgMC04MGMwLTI2LjUgMjEuNS00OCA0OC00OHM0OCAyMS41IDQ4IDQ4bDAgODAgOTYgMGMxNS4xIDAgMjguNS02LjkgMzcuMy0xNy44QzM0MC40IDQ2Mi4yIDMyMCA0MTcuNSAzMjAgMzY4YzAtNTQuNyAyNC45LTEwMy41IDY0LTEzNS44TDM4NCA0OGMwLTI2LjUtMjEuNS00OC00OC00OEw0OCAwek02NCAyNDBjMC04LjggNy4yLTE2IDE2LTE2bDMyIDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgMzJjMCA4LjgtNy4yIDE2LTE2IDE2bC0zMiAwYy04LjggMC0xNi03LjItMTYtMTZsMC0zMnptMTEyLTE2bDMyIDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgMzJjMCA4LjgtNy4yIDE2LTE2IDE2bC0zMiAwYy04LjggMC0xNi03LjItMTYtMTZsMC0zMmMwLTguOCA3LjItMTYgMTYtMTZ6bTgwIDE2YzAtOC44IDcuMi0xNiAxNi0xNmwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDMyYzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzJ6TTgwIDk2bDMyIDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgMzJjMCA4LjgtNy4yIDE2LTE2IDE2bC0zMiAwYy04LjggMC0xNi03LjItMTYtMTZsMC0zMmMwLTguOCA3LjItMTYgMTYtMTZ6bTgwIDE2YzAtOC44IDcuMi0xNiAxNi0xNmwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDMyYzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzJ6TTI3MiA5NmwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDMyYzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzJjMC04LjggNy4yLTE2IDE2LTE2ek02NDAgMzY4YTE0NCAxNDQgMCAxIDAgLTI4OCAwIDE0NCAxNDQgMCAxIDAgMjg4IDB6bS03Ni43LTQzLjNjNi4yIDYuMiA2LjIgMTYuNCAwIDIyLjZsLTcyIDcyYy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMGwtNDAtNDBjLTYuMi02LjItNi4yLTE2LjQgMC0yMi42czE2LjQtNi4yIDIyLjYgMEw0ODAgMzg1LjRsNjAuNy02MC43YzYuMi02LjIgMTYuNC02LjIgMjIuNiAwelwiXVxufTtcbmNvbnN0IGZhUGVyc29uQ2hhbGtib2FyZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwZXJzb24tY2hhbGtib2FyZCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTUzZFwiLCBcIk0xOTIgOTZhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2em0tOCAzODRsMC0xMjggMTYgMCAwIDEyOGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMjg4IDU2IDAgNjQgMCAxNiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC0xNiAwIDAtNjQgMTkyIDAgMCAxOTItMTkyIDAgMC0zMi02NCAwIDAgNDhjMCAyNi41IDIxLjUgNDggNDggNDhsMjI0IDBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhsMC0yMjRjMC0yNi41LTIxLjUtNDgtNDgtNDhMMzY4IDBjLTI2LjUgMC00OCAyMS41LTQ4IDQ4bDAgODAtNzYuOSAwLTY1LjkgMGMtMzMuNyAwLTY0LjkgMTcuNy04Mi4zIDQ2LjZsLTU4LjMgOTdjLTkuMSAxNS4xLTQuMiAzNC44IDEwLjkgNDMuOXMzNC44IDQuMiA0My45LTEwLjlMMTIwIDI1Ni45IDEyMCA0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMnpcIl1cbn07XG5jb25zdCBmYU1hcnNTdHJva2VSaWdodCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtYXJzLXN0cm9rZS1yaWdodCcsXG4gIGljb246IFs2NDAsIDUxMiwgWzk4OTcsIFwibWFycy1zdHJva2UtaFwiXSwgXCJmMjJiXCIsIFwiTTIwOCAzNjhhMTEyIDExMiAwIDEgMCAwLTIyNCAxMTIgMTEyIDAgMSAwIDAgMjI0em0xNzQuNC04OEMzNzAuNyAzNjUuOCAyOTcuMSA0MzIgMjA4IDQzMmMtOTcuMiAwLTE3Ni03OC44LTE3Ni0xNzZzNzguOC0xNzYgMTc2LTE3NmM4OS4xIDAgMTYyLjcgNjYuMiAxNzQuNCAxNTJsMzMuNiAwIDAtNTZjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNGwwIDU2IDMyIDAgMC01NmMwLTkuNyA1LjgtMTguNSAxNC44LTIyLjJzMTkuMy0xLjcgMjYuMiA1LjJsODAgODBjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlsLTgwIDgwYy02LjkgNi45LTE3LjIgOC45LTI2LjIgNS4ycy0xNC44LTEyLjUtMTQuOC0yMi4ybDAtNTYtMzIgMCAwIDU2YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0bDAtNTYtMzMuNiAwelwiXVxufTtcbmNvbnN0IGZhTWFyc1N0cm9rZUggPSBmYU1hcnNTdHJva2VSaWdodDtcbmNvbnN0IGZhSGFuZEJhY2tGaXN0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hhbmQtYmFjay1maXN0JyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXCJoYW5kLXJvY2tcIl0sIFwiZjI1NVwiLCBcIk0xNDQgMEMxMTcuNSAwIDk2IDIxLjUgOTYgNDhsMCA0OCAwIDI4LjVMOTYgMTc2YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2bDAtMjYuNy05IDcuNUM0MC40IDE2OSAzMiAxODcgMzIgMjA2TDMyIDI0NGMwIDM4IDE2LjkgNzQgNDYuMSA5OC4zTDEyOCAzODRsMCA5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMmwxNjAgMGMxNy43IDAgMzItMTQuMyAzMi0zMmwwLTEwNS4zYzQ2LjktMTkgODAtNjUgODAtMTE4LjdsMC04MCAwLTE2IDAtMTZjMC0yNi41LTIxLjUtNDgtNDgtNDhjLTEyLjQgMC0yMy42IDQuNy0zMi4xIDEyLjNDMzUwIDgzLjUgMzI5LjMgNjQgMzA0IDY0Yy0xMi40IDAtMjMuNiA0LjctMzIuMSAxMi4zQzI3MCA1MS41IDI0OS4zIDMyIDIyNCAzMmMtMTIuNCAwLTIzLjYgNC43LTMyLjEgMTIuM0MxOTAgMTkuNSAxNjkuMyAwIDE0NCAwelwiXVxufTtcbmNvbnN0IGZhSGFuZFJvY2sgPSBmYUhhbmRCYWNrRmlzdDtcbmNvbnN0IGZhU3F1YXJlQ2FyZXRVcCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzcXVhcmUtY2FyZXQtdXAnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtcImNhcmV0LXNxdWFyZS11cFwiXSwgXCJmMTUxXCIsIFwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZMMCA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzIwIDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0zMjBjMC0zNS4zLTI4LjctNjQtNjQtNjRMNjQgMzJ6TTIyNCAxNjBjNi43IDAgMTMgMi44IDE3LjYgNy43bDEwNCAxMTJjNi41IDcgOC4yIDE3LjIgNC40IDI1LjlzLTEyLjUgMTQuNC0yMiAxNC40bC0yMDggMGMtOS41IDAtMTguMi01LjctMjItMTQuNHMtMi4xLTE4LjkgNC40LTI1LjlsMTA0LTExMmM0LjUtNC45IDEwLjktNy43IDE3LjYtNy43elwiXVxufTtcbmNvbnN0IGZhQ2FyZXRTcXVhcmVVcCA9IGZhU3F1YXJlQ2FyZXRVcDtcbmNvbnN0IGZhQ2xvdWRTaG93ZXJzV2F0ZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2xvdWQtc2hvd2Vycy13YXRlcicsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZTRlNFwiLCBcIk0yMjQgMGMzOC42IDAgNzEuOSAyMi44IDg3LjIgNTUuN0MzMjUuNyA0MS4xIDM0NS44IDMyIDM2OCAzMmMzOC43IDAgNzEgMjcuNSA3OC40IDY0bDEuNiAwYzM1LjMgMCA2NCAyOC43IDY0IDY0cy0yOC43IDY0LTY0IDY0bC0zMjAgMGMtMzUuMyAwLTY0LTI4LjctNjQtNjRzMjguNy02NCA2NC02NGMwLTUzIDQzLTk2IDk2LTk2ek0xNDAuNiAyOTIuM2wtNDggODBjLTYuOCAxMS40LTIxLjYgMTUtMzIuOSA4LjJzLTE1LjEtMjEuNi04LjItMzIuOWw0OC04MGM2LjgtMTEuNCAyMS42LTE1LjEgMzIuOS04LjJzMTUuMSAyMS42IDguMiAzMi45em0zMjcuOC0zMi45YzExLjQgNi44IDE1IDIxLjYgOC4yIDMyLjlsLTQ4IDgwYy02LjggMTEuNC0yMS42IDE1LTMyLjkgOC4ycy0xNS0yMS42LTguMi0zMi45bDQ4LTgwYzYuOC0xMS40IDIxLjYtMTUuMSAzMi45LTguMnpNMjUyLjYgMjkyLjNsLTQ4IDgwYy02LjggMTEuNC0yMS42IDE1LTMyLjkgOC4ycy0xNS4xLTIxLjYtOC4yLTMyLjlsNDgtODBjNi44LTExLjQgMjEuNi0xNS4xIDMyLjktOC4yczE1LjEgMjEuNiA4LjIgMzIuOXptMTAzLjgtMzIuOWMxMS40IDYuOCAxNSAyMS42IDguMiAzMi45bC00OCA4MGMtNi44IDExLjQtMjEuNiAxNS0zMi45IDguMnMtMTUuMS0yMS42LTguMi0zMi45bDQ4LTgwYzYuOC0xMS40IDIxLjYtMTUuMSAzMi45LTguMnpNMzA2LjUgNDIxLjlDMzI5IDQzNy40IDM1Ni41IDQ0OCAzODQgNDQ4YzI2LjkgMCA1NS40LTEwLjggNzcuNC0yNi4xYzAgMCAwIDAgMCAwYzExLjktOC41IDI4LjEtNy44IDM5LjIgMS43YzE0LjQgMTEuOSAzMi41IDIxIDUwLjYgMjUuMmMxNy4yIDQgMjcuOSAyMS4yIDIzLjkgMzguNHMtMjEuMiAyNy45LTM4LjQgMjMuOWMtMjQuNS01LjctNDQuOS0xNi41LTU4LjItMjVDNDQ5LjUgNTAxLjcgNDE3IDUxMiAzODQgNTEyYy0zMS45IDAtNjAuNi05LjktODAuNC0xOC45Yy01LjgtMi43LTExLjEtNS4zLTE1LjYtNy43Yy00LjUgMi40LTkuNyA1LjEtMTUuNiA3LjdjLTE5LjggOS00OC41IDE4LjktODAuNCAxOC45Yy0zMyAwLTY1LjUtMTAuMy05NC41LTI1LjhjLTEzLjQgOC40LTMzLjcgMTkuMy01OC4yIDI1Yy0xNy4yIDQtMzQuNC02LjctMzguNC0yMy45czYuNy0zNC40IDIzLjktMzguNGMxOC4xLTQuMiAzNi4yLTEzLjMgNTAuNi0yNS4yYzExLjEtOS40IDI3LjMtMTAuMSAzOS4yLTEuN2MwIDAgMCAwIDAgMEMxMzYuNyA0MzcuMiAxNjUuMSA0NDggMTkyIDQ0OGMyNy41IDAgNTUtMTAuNiA3Ny41LTI2LjFjMTEuMS03LjkgMjUuOS03LjkgMzcgMHpcIl1cbn07XG5jb25zdCBmYUNoYXJ0QmFyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NoYXJ0LWJhcicsXG4gIGljb246IFs1MTIsIDUxMiwgW1wiYmFyLWNoYXJ0XCJdLCBcImYwODBcIiwgXCJNMzIgMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCAzMzZjMCA4LjggNy4yIDE2IDE2IDE2bDQwMCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyTDgwIDQ4MGMtNDQuMiAwLTgwLTM1LjgtODAtODBMMCA2NEMwIDQ2LjMgMTQuMyAzMiAzMiAzMnptOTYgOTZjMC0xNy43IDE0LjMtMzIgMzItMzJsMTkyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTE5MiAwYy0xNy43IDAtMzItMTQuMy0zMi0zMnptMzIgNjRsMTI4IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTEyOCAwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyem0wIDk2bDI1NiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC0yNTYgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnpcIl1cbn07XG5jb25zdCBmYUJhckNoYXJ0ID0gZmFDaGFydEJhcjtcbmNvbnN0IGZhSGFuZHNCdWJibGVzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hhbmRzLWJ1YmJsZXMnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtcImhhbmRzLXdhc2hcIl0sIFwiZTA1ZVwiLCBcIk00MTYgNjRhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0em05NiAxMjhhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0ek0xNjAgNDY0YTQ4IDQ4IDAgMSAwIC05NiAwIDQ4IDQ4IDAgMSAwIDk2IDB6TTMyIDE2MGwuMSA3Mi42Yy4xIDUyLjIgMjQgMTAxIDY0IDEzMy4xYy0uMS0xLjktLjEtMy44LS4xLTUuN2wwLThjMC03MS44IDM3LTEzOC42IDk3LjktMTc2LjdsNjAuMi0zNy42YzguNi01LjQgMTcuOS04LjQgMjcuMy05LjRsNDUuOS03OS41YzYuNi0xMS41IDIuNy0yNi4yLTguOC0zMi44cy0yNi4yLTIuNy0zMi44IDguOGwtNzggMTM1LjFjLTMuMyA1LjctMTAuNyA3LjctMTYuNCA0LjRzLTcuNy0xMC43LTQuNC0xNi40bDYyLTEwNy40YzYuNi0xMS41IDIuNy0yNi4yLTguOC0zMi44UzIxNCA1IDIwNy40IDE2LjVsLTY4IDExNy44czAgMCAwIDBzMCAwIDAgMGwtNDMuMyA3NUw5NiAxNjBjMC0xNy43LTE0LjQtMzItMzItMzJzLTMyIDE0LjQtMzIgMzJ6TTMzMi4xIDg4LjVMMzA3LjUgMTMxYzEzLjkgNC41IDI2LjQgMTMuNyAzNC43IDI3Yy45IDEuNSAxLjggMi45IDIuNSA0LjRsMjguOS01MGM2LjYtMTEuNSAyLjctMjYuMi04LjgtMzIuOHMtMjYuMi0yLjctMzIuOCA4Ljh6bTQ2LjQgNjMuN2wtMjYuOCA0Ni40Yy0uNiA2LTIuMSAxMS44LTQuMyAxNy40bDQuNyAwIDEzLjMgMHMwIDAgMCAwbDMxLjggMCAyMy0zOS44YzYuNi0xMS41IDIuNy0yNi4yLTguOC0zMi44cy0yNi4yLTIuNy0zMi44IDguOHpNMzE1LjEgMTc1Yy05LjQtMTUtMjkuMS0xOS41LTQ0LjEtMTAuMmwtNjAuMiAzNy42QzE1OS4zIDIzNC43IDEyOCAyOTEuMiAxMjggMzUybDAgOGMwIDguOSAuOCAxNy42IDIuMiAyNi4xYzM1LjQgOC4yIDYxLjggNDAgNjEuOCA3Ny45YzAgNi4zLS43IDEyLjUtMi4xIDE4LjRDMjE1LjEgNTAxIDI0Ni4zIDUxMiAyODAgNTEybDE3NiAwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0bC05MiAwYy02LjYgMC0xMi01LjQtMTItMTJzNS40LTEyIDEyLTEybDEyNCAwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0bC0xMjQgMGMtNi42IDAtMTItNS40LTEyLTEyczUuNC0xMiAxMi0xMmwxNTYgMGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNGwtMTU2IDBjLTYuNiAwLTEyLTUuNC0xMi0xMnM1LjQtMTIgMTItMTJsMTI0IDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRsLTEzNiAwczAgMCAwIDBzMCAwIDAgMGwtOTMuMiAwTDMwNSAyMTkuMWMxNS05LjQgMTkuNS0yOS4xIDEwLjItNDQuMXpcIl1cbn07XG5jb25zdCBmYUhhbmRzV2FzaCA9IGZhSGFuZHNCdWJibGVzO1xuY29uc3QgZmFMZXNzVGhhbkVxdWFsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2xlc3MtdGhhbi1lcXVhbCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjUzN1wiLCBcIk0zOTUuOSA5My43YzE2LjQtNi42IDI0LjQtMjUuMiAxNy44LTQxLjZzLTI1LjItMjQuNC00MS42LTE3LjhsLTMyMCAxMjhDNDAgMTY3LjEgMzIgMTc4LjkgMzIgMTkyczggMjQuOSAyMC4xIDI5LjdsMzIwIDEyOGMxNi40IDYuNiAzNS0xLjQgNDEuNi0xNy44cy0xLjQtMzUtMTcuOC00MS42TDE1MC4yIDE5MiAzOTUuOSA5My43ek0zMiA0MTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsMzg0IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJMMzIgNDE2elwiXVxufTtcbmNvbnN0IGZhVHJhaW4gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndHJhaW4nLFxuICBpY29uOiBbNDQ4LCA1MTIsIFsxMjg2NDZdLCBcImYyMzhcIiwgXCJNOTYgMEM0MyAwIDAgNDMgMCA5NkwwIDM1MmMwIDQ4IDM1LjIgODcuNyA4MS4xIDk0LjlsLTQ2IDQ2QzI4LjEgNDk5LjkgMzMuMSA1MTIgNDMgNTEybDM5LjcgMGM4LjUgMCAxNi42LTMuNCAyMi42LTkuNEwxNjAgNDQ4bDEyOCAwIDU0LjYgNTQuNmM2IDYgMTQuMSA5LjQgMjIuNiA5LjRsMzkuNyAwYzEwIDAgMTUtMTIuMSA3LjktMTkuMWwtNDYtNDZjNDYtNy4xIDgxLjEtNDYuOSA4MS4xLTk0LjlsMC0yNTZjMC01My00My05Ni05Ni05Nkw5NiAwek02NCA5NmMwLTE3LjcgMTQuMy0zMiAzMi0zMmwyNTYgMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDk2YzAgMTcuNy0xNC4zIDMyLTMyIDMyTDk2IDIyNGMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC05NnpNMjI0IDI4OGE0OCA0OCAwIDEgMSAwIDk2IDQ4IDQ4IDAgMSAxIDAtOTZ6XCJdXG59O1xuY29uc3QgZmFFeWVMb3dWaXNpb24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZXllLWxvdy12aXNpb24nLFxuICBpY29uOiBbNjQwLCA1MTIsIFtcImxvdy12aXNpb25cIl0sIFwiZjJhOFwiLCBcIk0zOC44IDUuMUMyOC40LTMuMSAxMy4zLTEuMiA1LjEgOS4yUy0xLjIgMzQuNyA5LjIgNDIuOWw1OTIgNDY0YzEwLjQgOC4yIDI1LjUgNi4zIDMzLjctNC4xczYuMy0yNS41LTQuMS0zMy43TDUyNS42IDM4Ni43YzM5LjYtNDAuNiA2Ni40LTg2LjEgNzkuOS0xMTguNGMzLjMtNy45IDMuMy0xNi43IDAtMjQuNmMtMTQuOS0zNS43LTQ2LjItODcuNy05My0xMzEuMUM0NjUuNSA2OC44IDQwMC44IDMyIDMyMCAzMmMtNjguMiAwLTEyNSAyNi4zLTE2OS4zIDYwLjhMMzguOCA1LjF6TTIyMyAxNDkuNWM0OC42LTQ0LjMgMTIzLTUwLjggMTc5LjMtMTEuN2M2MC44IDQyLjQgNzguOSAxMjMuMiA0NC4yIDE4Ni45TDQwOCAyOTQuNWM4LjQtMTkuMyAxMC42LTQxLjQgNC44LTYzLjNjLTExLjEtNDEuNS00Ny44LTY5LjQtODguNi03MS4xYy01LjgtLjItOS4yIDYuMS03LjQgMTEuN2MyLjEgNi40IDMuMyAxMy4yIDMuMyAyMC4zYzAgMTAuMi0yLjQgMTkuOC02LjYgMjguM0wyMjMgMTQ5LjV6bTIyMy4xIDI5OEw4My4xIDE2MS41Yy0xMSAxNC40LTIwLjUgMjguNy0yOC40IDQyLjJsMzM5IDI2NS43YzE4LjctNS41IDM2LjItMTMgNTIuNi0yMS44ek0zNC41IDI2OC4zYzE0LjkgMzUuNyA0Ni4yIDg3LjcgOTMgMTMxLjFDMTc0LjUgNDQzLjIgMjM5LjIgNDgwIDMyMCA0ODBjMy4xIDAgNi4xLS4xIDkuMi0uMkwzMy4xIDI0Ny44Yy0xLjggNi44LTEuMyAxNCAxLjQgMjAuNXpcIl1cbn07XG5jb25zdCBmYUxvd1Zpc2lvbiA9IGZhRXllTG93VmlzaW9uO1xuY29uc3QgZmFDcm93ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Nyb3cnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY1MjBcIiwgXCJNNDU2IDBjLTQ4LjYgMC04OCAzOS40LTg4IDg4bDAgMjkuMkwxMi41IDM5MC42Yy0xNCAxMC44LTE2LjYgMzAuOS01LjkgNDQuOXMzMC45IDE2LjYgNDQuOSA1LjlMMTI2LjEgMzg0bDEzMy4xIDAgNDYuNiAxMTMuMWM1IDEyLjMgMTkuMSAxOC4xIDMxLjMgMTMuMXMxOC4xLTE5LjEgMTMuMS0zMS4zTDMxMS4xIDM4NGw0MC45IDBjMS4xIDAgMi4xIDAgMy4yIDBsNDYuNiAxMTMuMmM1IDEyLjMgMTkuMSAxOC4xIDMxLjMgMTMuMXMxOC4xLTE5LjEgMTMuMS0zMS4zbC00Mi0xMDJDNDg0LjkgMzU0LjEgNTQ0IDI4MCA1NDQgMTkybDAtNjQgMC04IDgwLjUtMjAuMWM4LjYtMi4xIDEzLjgtMTAuOCAxMS42LTE5LjRDNjI5IDUyIDYwMy40IDMyIDU3NCAzMmwtNTAuMSAwQzUwNy43IDEyLjUgNDgzLjMgMCA0NTYgMHptMCA2NGEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6XCJdXG59O1xuY29uc3QgZmFTYWlsYm9hdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzYWlsYm9hdCcsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZTQ0NVwiLCBcIk0yNTYgMTZjMC03IDQuNS0xMy4yIDExLjItMTUuM3MxMy45IC40IDE3LjkgNi4xbDIyNCAzMjBjMy40IDQuOSAzLjggMTEuMyAxLjEgMTYuNnMtOC4yIDguNi0xNC4yIDguNmwtMjI0IDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTMyMHpNMjEyLjEgOTYuNWM3IDEuOSAxMS45IDguMiAxMS45IDE1LjVsMCAyMjRjMCA4LjgtNy4yIDE2LTE2IDE2TDgwIDM1MmMtNS43IDAtMTEtMy0xMy44LThzLTIuOS0xMS0uMS0xNmwxMjgtMjI0YzMuNi02LjMgMTEtOS40IDE4LTcuNXpNNS43IDQwNC4zQzIuOCAzOTQuMSAxMC41IDM4NCAyMS4xIDM4NGw1MzMuOCAwYzEwLjYgMCAxOC4zIDEwLjEgMTUuNCAyMC4zbC00IDE0LjNDNTUwLjcgNDczLjkgNTAwLjQgNTEyIDQ0MyA1MTJMMTMzIDUxMkM3NS42IDUxMiAyNS4zIDQ3My45IDkuNyA0MTguN2wtNC0xNC4zelwiXVxufTtcbmNvbnN0IGZhV2luZG93UmVzdG9yZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd3aW5kb3ctcmVzdG9yZScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjJkMlwiLCBcIk00MzIgNjRMMjA4IDY0Yy04LjggMC0xNiA3LjItMTYgMTZsMCAxNi02NCAwIDAtMTZjMC00NC4yIDM1LjgtODAgODAtODBMNDMyIDBjNDQuMiAwIDgwIDM1LjggODAgODBsMCAyMjRjMCA0NC4yLTM1LjggODAtODAgODBsLTE2IDAgMC02NCAxNiAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTIyNGMwLTguOC03LjItMTYtMTYtMTZ6TTAgMTkyYzAtMzUuMyAyOC43LTY0IDY0LTY0bDI1NiAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMjU2YzAgMzUuMy0yOC43IDY0LTY0IDY0TDY0IDUxMmMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCAxOTJ6bTY0IDMyYzAgMTcuNyAxNC4zIDMyIDMyIDMybDE5MiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyTDk2IDE5MmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6XCJdXG59O1xuY29uc3QgZmFTcXVhcmVQbHVzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NxdWFyZS1wbHVzJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbNjE4NDYsIFwicGx1cy1zcXVhcmVcIl0sIFwiZjBmZVwiLCBcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2TDAgNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0bDMyMCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMzIwYzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDMyek0yMDAgMzQ0bDAtNjQtNjQgMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGw2NCAwIDAtNjRjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNGwwIDY0IDY0IDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRsLTY0IDAgMCA2NGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNHpcIl1cbn07XG5jb25zdCBmYVBsdXNTcXVhcmUgPSBmYVNxdWFyZVBsdXM7XG5jb25zdCBmYVRvcmlpR2F0ZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0b3JpaS1nYXRlJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbOTk2MV0sIFwiZjZhMVwiLCBcIk0wIDgwYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4bDE2IDAgMCA2NCA2NCAwIDAtNjQgOTYgMCAwIDY0IDY0IDAgMC02NCA5NiAwIDAgNjQgNjQgMCAwLTY0IDE2IDBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhsMC02Ni42QzUxMiA2IDUwNiAwIDQ5OC42IDBjLTEuNyAwLTMuNCAuMy01IDFsLTQ5IDE5LjZDNDI1LjcgMjguMSA0MDUuNSAzMiAzODUuMiAzMkwxMjYuOCAzMmMtMjAuNCAwLTQwLjUtMy45LTU5LjQtMTEuNEwxOC40IDFjLTEuNi0uNi0zLjMtMS01LTFDNiAwIDAgNiAwIDEzLjRMMCA4MHpNNjQgMjg4bDAgMTkyYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0xOTIgMjU2IDAgMCAxOTJjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTE5MiAzMiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyTDMyIDIyNGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwzMiAwelwiXVxufTtcbmNvbnN0IGZhRnJvZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmcm9nJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmNTJlXCIsIFwiTTM2OCAzMmM0MS43IDAgNzUuOSAzMS44IDc5LjcgNzIuNWw4NS42IDI2LjNjMjUuNCA3LjggNDIuOCAzMS4zIDQyLjggNTcuOWMwIDIxLjgtMTEuNyA0MS45LTMwLjcgNTIuN0w0MDAuOCAzMjMuNSA0OTMuMyA0MTZsNTAuNyAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC02NCAwYy04LjUgMC0xNi42LTMuNC0yMi42LTkuNEwzNDYuOSAzNjAuMmMxMS43LTM2IDMuMi03Ny4xLTI1LjQtMTA1LjdjLTQwLjYtNDAuNi0xMDYuMy00MC42LTE0Ni45LS4xTDEwMSAzMjQuNGMtNi40IDYuMS02LjcgMTYuMi0uNiAyMi42czE2LjIgNi42IDIyLjYgLjZsNzMuOC03MC4yIC4xLS4xIC4xLS4xYzMuNS0zLjUgNy4zLTYuNiAxMS4zLTkuMmMyNy45LTE4LjUgNjUuOS0xNS40IDkwLjUgOS4yYzI0LjcgMjQuNyAyNy43IDYyLjkgOSA5MC45Yy0yLjYgMy44LTUuNiA3LjUtOSAxMC45TDI2MS44IDQxNmw5MC4yIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJMNjQgNDgwYy0zNS4zIDAtNjQtMjguNy02NC02NEMwIDI0OS42IDEyNyAxMTIuOSAyODkuMyA5Ny41QzI5Ni4yIDYwLjIgMzI4LjggMzIgMzY4IDMyem0wIDEwNGEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6XCJdXG59O1xuY29uc3QgZmFCdWNrZXQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYnVja2V0JyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJlNGNmXCIsIFwiTTk2IDE1MmwwIDgtNDggMCAwLThDNDggNjguMSAxMTYuMSAwIDIwMCAwbDQ4IDBjODMuOSAwIDE1MiA2OC4xIDE1MiAxNTJsMCA4LTQ4IDAgMC04YzAtNTcuNC00Ni42LTEwNC0xMDQtMTA0bC00OCAwQzE0Mi42IDQ4IDk2IDk0LjYgOTYgMTUyek0wIDIyNGMwLTE3LjcgMTQuMy0zMiAzMi0zMmwzODQgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtNS4xIDBMMzg4LjUgNDY5Yy0yLjYgMjQuNC0yMy4yIDQzLTQ3LjcgNDNsLTIzMy42IDBjLTI0LjYgMC00NS4yLTE4LjUtNDcuNy00M0wzNy4xIDI1NiAzMiAyNTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyelwiXVxufTtcbmNvbnN0IGZhSW1hZ2UgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaW1hZ2UnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwM2VcIiwgXCJNMCA5NkMwIDYwLjcgMjguNyAzMiA2NCAzMmwzODQgMGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDMyMGMwIDM1LjMtMjguNyA2NC02NCA2NEw2NCA0ODBjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgOTZ6TTMyMy44IDIwMi41Yy00LjUtNi42LTExLjktMTAuNS0xOS44LTEwLjVzLTE1LjQgMy45LTE5LjggMTAuNWwtODcgMTI3LjZMMTcwLjcgMjk3Yy00LjYtNS43LTExLjUtOS0xOC43LTlzLTE0LjIgMy4zLTE4LjcgOWwtNjQgODBjLTUuOCA3LjItNi45IDE3LjEtMi45IDI1LjRzMTIuNCAxMy42IDIxLjYgMTMuNmw5NiAwIDMyIDAgMjA4IDBjOC45IDAgMTcuMS00LjkgMjEuMi0xMi44czMuNi0xNy40LTEuNC0yNC43bC0xMjAtMTc2ek0xMTIgMTkyYTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnpcIl1cbn07XG5jb25zdCBmYU1pY3JvcGhvbmUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbWljcm9waG9uZScsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjEzMFwiLCBcIk0xOTIgMEMxMzkgMCA5NiA0MyA5NiA5NmwwIDE2MGMwIDUzIDQzIDk2IDk2IDk2czk2LTQzIDk2LTk2bDAtMTYwYzAtNTMtNDMtOTYtOTYtOTZ6TTY0IDIxNmMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNGwwIDQwYzAgODkuMSA2Ni4yIDE2Mi43IDE1MiAxNzQuNGwwIDMzLjYtNDggMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGw3MiAwIDcyIDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRsLTQ4IDAgMC0zMy42Yzg1LjgtMTEuNyAxNTItODUuMyAxNTItMTc0LjRsMC00MGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNGwwIDQwYzAgNzAuNy01Ny4zIDEyOC0xMjggMTI4cy0xMjgtNTcuMy0xMjgtMTI4bDAtNDB6XCJdXG59O1xuY29uc3QgZmFDb3cgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY293JyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbMTI4MDA0XSwgXCJmNmM4XCIsIFwiTTk2IDIyNGwwIDMyIDAgMTYwYzAgMTcuNyAxNC4zIDMyIDMyIDMybDMyIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJsMC04OC4yYzkuOSA2LjYgMjAuNiAxMiAzMiAxNi4xbDAgMjQuMmMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2bDAtMTYuOWM1LjMgLjYgMTAuNiAuOSAxNiAuOXMxMC43LS4zIDE2LS45bDAgMTYuOWMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2bDAtMjQuMmMxMS40LTQgMjIuMS05LjQgMzItMTYuMWwwIDg4LjJjMCAxNy43IDE0LjMgMzIgMzIgMzJsMzIgMGMxNy43IDAgMzItMTQuMyAzMi0zMmwwLTE2MCAzMiAzMiAwIDQ5LjVjMCA5LjUgMi44IDE4LjcgOC4xIDI2LjZMNTMwIDQyN2M4LjggMTMuMSAyMy41IDIxIDM5LjMgMjFjMjIuNSAwIDQxLjktMTUuOSA0Ni4zLTM4bDIwLjMtMTAxLjZjMi42LTEzLS4zLTI2LjUtOC0zNy4zbC0zLjktNS41IDAtODEuNmMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNGwwIDE0LjQtNTIuOS03NC4xQzQ5NiA4Ni41IDQ1Mi40IDY0IDQwNS45IDY0TDI3MiA2NGwtMTYgMC02NCAwLTQ4IDBDNzcuNyA2NCAyNCAxMTcuNyAyNCAxODRsMCA1NEM5LjQgMjQ5LjggMCAyNjcuOCAwIDI4OGwwIDE3LjZjMCA4IDYuNCAxNC40IDE0LjQgMTQuNEM0Ni4yIDMyMCA3MiAyOTQuMiA3MiAyNjIuNGwwLTYuNCAwLTMyIDAtNDBjMC0yNC4zIDEyLjEtNDUuOCAzMC41LTU4LjlDOTguMyAxMzUuOSA5NiAxNDcuNyA5NiAxNjBsMCA2NHpNNTYwIDMzNmExNiAxNiAwIDEgMSAzMiAwIDE2IDE2IDAgMSAxIC0zMiAwek0xNjYuNiAxNjYuNmMtNC4yLTQuMi02LjYtMTAtNi42LTE2YzAtMTIuNSAxMC4xLTIyLjYgMjIuNi0yMi42bDE3OC43IDBjMTIuNSAwIDIyLjYgMTAuMSAyMi42IDIyLjZjMCA2LTIuNCAxMS44LTYuNiAxNmwtMjMuNCAyMy40QzMzMi4yIDIxMS44IDMwMi43IDIyNCAyNzIgMjI0cy02MC4yLTEyLjItODEuOS0zMy45bC0yMy40LTIzLjR6XCJdXG59O1xuY29uc3QgZmFDYXJldFVwID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NhcmV0LXVwJyxcbiAgaWNvbjogWzMyMCwgNTEyLCBbXSwgXCJmMGQ4XCIsIFwiTTE4Mi42IDEzNy40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMGwtMTI4IDEyOGMtOS4yIDkuMi0xMS45IDIyLjktNi45IDM0LjlzMTYuNiAxOS44IDI5LjYgMTkuOGwyNTYgMGMxMi45IDAgMjQuNi03LjggMjkuNi0xOS44czIuMi0yNS43LTYuOS0zNC45bC0xMjgtMTI4elwiXVxufTtcbmNvbnN0IGZhU2NyZXdkcml2ZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc2NyZXdkcml2ZXInLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjk2OTFdLCBcImY1NGFcIiwgXCJNNDY1IDdjLTguNS04LjUtMjItOS40LTMxLjYtMi4xbC0xMDQgODBjLTUuOSA0LjUtOS40IDExLjYtOS40IDE5bDAgNTQuMS04NS42IDg1LjZjNi43IDQuMiAxMyA5LjMgMTguOCAxNS4xczEwLjkgMTIuMiAxNS4xIDE4LjhMMzUzLjkgMTkybDU0LjEgMGM3LjUgMCAxNC41LTMuNSAxOS05LjRsODAtMTA0YzcuNC05LjYgNi41LTIzLjEtMi4xLTMxLjZMNDY1IDd6TTEyMS40IDI4MS40bC0xMTIgMTEyYy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM2w2NCA2NGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGwxMTItMTEyYzMwLjItMzAuMiAzMC4yLTc5LjEgMC0xMDkuM3MtNzkuMS0zMC4yLTEwOS4zIDB6XCJdXG59O1xuY29uc3QgZmFGb2xkZXJDbG9zZWQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZm9sZGVyLWNsb3NlZCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZTE4NVwiLCBcIk00NDggNDgwTDY0IDQ4MGMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCAxOTJsNTEyIDAgMCAyMjRjMCAzNS4zLTI4LjcgNjQtNjQgNjR6bTY0LTMyMEwwIDE2MCAwIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMybDEyOCAwYzIwLjEgMCAzOS4xIDkuNSA1MS4yIDI1LjZsMTkuMiAyNS42YzYgOC4xIDE1LjUgMTIuOCAyNS42IDEyLjhsMTYwIDBjMzUuMyAwIDY0IDI4LjcgNjQgNjR6XCJdXG59O1xuY29uc3QgZmFIb3VzZVRzdW5hbWkgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaG91c2UtdHN1bmFtaScsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZTUxNVwiLCBcIk04MC44IDEzNi41QzEwNC45IDkzLjggMTUyLjYgNjQgMjA5IDY0YzE2LjkgMCAzMy4xIDIuNyA0OC4yIDcuN2MxNi44IDUuNSAzNC45LTMuNiA0MC40LTIwLjRzLTMuNi0zNC45LTIwLjQtNDAuNEMyNTUuOCAzLjggMjMyLjggMCAyMDkgMEM5NS4yIDAgMCA4OCAwIDIwMGMwIDkxLjYgNTMuNSAxNzIuMSAxNDIuMiAxOTQuMWMxMy40IDMuOCAyNy41IDUuOSA0Mi4yIDUuOWMuNyAwIDEuNCAwIDIuMS0uMWMxLjggMCAzLjcgLjEgNS41IC4xYzAgMCAwIDAgMCAwYzMxLjkgMCA2MC42LTkuOSA4MC40LTE4LjljNS44LTIuNyAxMS4xLTUuMyAxNS42LTcuN2M0LjUgMi40IDkuNyA1LjEgMTUuNiA3LjdjMTkuOCA5IDQ4LjUgMTguOSA4MC40IDE4LjljMzMgMCA2NS41LTEwLjMgOTQuNS0yNS44YzEzLjQgOC40IDMzLjcgMTkuMyA1OC4yIDI1YzE3LjIgNCAzNC40LTYuNyAzOC40LTIzLjlzLTYuNy0zNC40LTIzLjktMzguNGMtMTguMS00LjItMzYuMi0xMy4zLTUwLjYtMjUuMmMtMTEuMS05LjUtMjcuMy0xMC4xLTM5LjItMS43YzAgMCAwIDAgMCAwQzQzOS40IDMyNS4yIDQxMC45IDMzNiAzODQgMzM2Yy0yNy41IDAtNTUtMTAuNi03Ny41LTI2LjFjLTExLjEtNy45LTI1LjktNy45LTM3IDBjLTIyLjQgMTUuNS00OS45IDI2LjEtNzcuNCAyNi4xYzAgMC0uMSAwLS4xIDBjLTEyLjQgMC0yNC0xLjUtMzQuOS00LjNDMTIxLjYgMzIwLjIgOTYgMjg3IDk2IDI0OGMwLTQ4LjUgMzkuNS04OCA4OC40LTg4YzEzLjUgMCAyNi4xIDMgMzcuNSA4LjNjMTYgNy41IDM1LjEgLjYgNDIuNS0xNS41cy42LTM1LjEtMTUuNS00Mi41QzIyOS4zIDEwMS4xIDIwNy40IDk2IDE4NC40IDk2Yy00MCAwLTc2LjQgMTUuNC0xMDMuNiA0MC41em0yNTItMTguMWMtOC4xIDYtMTIuOCAxNS41LTEyLjggMjUuNmwwIDEyMWMxLjYgMSAzLjMgMiA0LjggMy4xYzE4LjQgMTIuNyAzOS42IDIwLjMgNTkuMiAyMC4zYzE5IDAgNDEuMi03LjkgNTkuMi0yMC4zYzIzLjgtMTYuNyA1NS44LTE1LjMgNzguMSAzLjRjMTAuNiA4LjggMjQuMiAxNS42IDM3LjMgMTguNmM1LjggMS40IDExLjIgMy40IDE2LjIgNi4yYy43LTIuNyAxLjEtNS41IDEuMS04LjRsLS40LTE0NGMwLTEwLTQuNy0xOS40LTEyLjctMjUuNWwtOTUuNS03MmMtMTEuNC04LjYtMjcuMS04LjYtMzguNSAwbC05NiA3MnpNMzg0IDQ0OGMtMjcuNSAwLTU1LTEwLjYtNzcuNS0yNi4xYy0xMS4xLTcuOS0yNS45LTcuOS0zNyAwQzI0NyA0MzcuNCAyMTkuNSA0NDggMTkyIDQ0OGMtMjYuOSAwLTU1LjMtMTAuOC03Ny40LTI2LjFjMCAwIDAgMCAwIDBjLTExLjktOC41LTI4LjEtNy44LTM5LjIgMS43Yy0xNC40IDExLjktMzIuNSAyMS01MC42IDI1LjJjLTE3LjIgNC0yNy45IDIxLjItMjMuOSAzOC40czIxLjIgMjcuOSAzOC40IDIzLjljMjQuNS01LjcgNDQuOS0xNi41IDU4LjItMjVDMTI2LjUgNTAxLjcgMTU5IDUxMiAxOTIgNTEyYzMxLjkgMCA2MC42LTkuOSA4MC40LTE4LjljNS44LTIuNyAxMS4xLTUuMyAxNS42LTcuN2M0LjUgMi40IDkuNyA1LjEgMTUuNiA3LjdjMTkuOCA5IDQ4LjUgMTguOSA4MC40IDE4LjljMzMgMCA2NS41LTEwLjMgOTQuNS0yNS44YzEzLjQgOC40IDMzLjcgMTkuMyA1OC4yIDI1YzE3LjIgNCAzNC40LTYuNyAzOC40LTIzLjlzLTYuNy0zNC40LTIzLjktMzguNGMtMTguMS00LjItMzYuMi0xMy4zLTUwLjYtMjUuMmMtMTEuMS05LjQtMjcuMy0xMC4xLTM5LjItMS43YzAgMCAwIDAgMCAwQzQzOS40IDQzNy4yIDQxMC45IDQ0OCAzODQgNDQ4elwiXVxufTtcbmNvbnN0IGZhU3F1YXJlTmZpID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NxdWFyZS1uZmknLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImU1NzZcIiwgXCJNMCA5NkMwIDYwLjcgMjguNyAzMiA2NCAzMmwzMjAgMGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDMyMGMwIDM1LjMtMjguNyA2NC02NCA2NEw2NCA0ODBjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgOTZ6bTc1LjcgNjQuNkM2OC44IDE2Mi41IDY0IDE2OC44IDY0IDE3NmwwIDE2MGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2bDAtMTAyLjIgNjYuMyAxMTAuNWMzLjcgNi4yIDExLjEgOS4xIDE4IDcuMnMxMS43LTguMiAxMS43LTE1LjRsMC0xNjBjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZsMCAxMDIuMkw5My43IDE2Ny44Yy0zLjctNi4yLTExLjEtOS4xLTE4LTcuMnpNMjI0IDE3NmwwIDY0IDAgOTZjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNmwwLTgwIDQ4IDBjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZsLTQ4IDAgMC0zMiA0OCAwYzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2bC02NCAwYy04LjggMC0xNiA3LjItMTYgMTZ6bTE2MCAwYzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2bDAgMTYwYzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZsMC0xNjB6XCJdXG59O1xuY29uc3QgZmFBcnJvd1VwRnJvbUdyb3VuZFdhdGVyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Fycm93LXVwLWZyb20tZ3JvdW5kLXdhdGVyJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJlNGI1XCIsIFwiTTI4OCAzNTJjMTcuNyAwIDMyLTE0LjMgMzItMzJsMC0yMTAuNyAyNS40IDI1LjRjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM2wtODAtODBjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwbC04MCA4MGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMEwyNTYgMTA5LjMgMjU2IDMyMGMwIDE3LjcgMTQuMyAzMiAzMiAzMnptLTE4LjUgNjkuOUMyNDcgNDM3LjQgMjE5LjUgNDQ4IDE5MiA0NDhjLTI2LjkgMC01NS4zLTEwLjgtNzcuNC0yNi4xYzAgMCAwIDAgMCAwYy0xMS45LTguNS0yOC4xLTcuOC0zOS4yIDEuN2MtMTQuNCAxMS45LTMyLjUgMjEtNTAuNiAyNS4yYy0xNy4yIDQtMjcuOSAyMS4yLTIzLjkgMzguNHMyMS4yIDI3LjkgMzguNCAyMy45YzI0LjUtNS43IDQ0LjktMTYuNSA1OC4yLTI1QzEyNi41IDUwMS43IDE1OSA1MTIgMTkyIDUxMmMzMS45IDAgNjAuNi05LjkgODAuNC0xOC45YzUuOC0yLjcgMTEuMS01LjMgMTUuNi03LjdjNC41IDIuNCA5LjcgNS4xIDE1LjYgNy43YzE5LjggOSA0OC41IDE4LjkgODAuNCAxOC45YzMzIDAgNjUuNS0xMC4zIDk0LjUtMjUuOGMxMy40IDguNCAzMy43IDE5LjMgNTguMiAyNWMxNy4yIDQgMzQuNC02LjcgMzguNC0yMy45cy02LjctMzQuNC0yMy45LTM4LjRjLTE4LjEtNC4yLTM2LjItMTMuMy01MC42LTI1LjJjLTExLjEtOS40LTI3LjMtMTAuMS0zOS4yLTEuN2MwIDAgMCAwIDAgMEM0MzkuNCA0MzcuMiA0MTAuOSA0NDggMzg0IDQ0OGMtMjcuNSAwLTU1LTEwLjYtNzcuNS0yNi4xYy0xMS4xLTcuOS0yNS45LTcuOS0zNyAwek0xOTIgMTkyTDQ4IDE5MmMtMjYuNSAwLTQ4IDIxLjUtNDggNDhMMCA0MjVjNS4zLTMuMSAxMS4yLTUuNCAxNy41LTYuOWMxMy4xLTMuMSAyNi43LTkuOCAzNy4zLTE4LjZjMjIuMi0xOC43IDU0LjMtMjAuMSA3OC4xLTMuNGMxOCAxMi40IDQwLjEgMjAuMyA1OS4xIDIwLjNMMTkyIDE5MnptMzg0IDQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4bC0xNDQgMCAwIDIyNC41czAgMCAwIDBjMTkgMCA0MS4yLTcuOSA1OS4yLTIwLjNjMjMuOC0xNi43IDU1LjgtMTUuNCA3OC4xIDMuNGMxMC42IDguOCAyNC4yIDE1LjYgMzcuMyAxOC42YzYuMyAxLjUgMTIuMSAzLjggMTcuNSA2LjlsMC0xODV6XCJdXG59O1xuY29uc3QgZmFNYXJ0aW5pR2xhc3MgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbWFydGluaS1nbGFzcycsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyNzg2NCwgXCJnbGFzcy1tYXJ0aW5pLWFsdFwiXSwgXCJmNTdiXCIsIFwiTTMyIDBDMTkuMSAwIDcuNCA3LjggMi40IDE5LjhzLTIuMiAyNS43IDYuOSAzNC45TDIyNCAyNjkuMyAyMjQgNDQ4bC02NCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDk2IDAgOTYgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtNjQgMCAwLTE3OC43TDUwMi42IDU0LjZjOS4yLTkuMiAxMS45LTIyLjkgNi45LTM0LjlTNDkyLjkgMCA0ODAgMEwzMiAwek0xNzMuMyAxMjhsLTY0LTY0IDI5My41IDAtNjQgNjQtMTY1LjUgMHpcIl1cbn07XG5jb25zdCBmYUdsYXNzTWFydGluaUFsdCA9IGZhTWFydGluaUdsYXNzO1xuY29uc3QgZmFSb3RhdGVMZWZ0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3JvdGF0ZS1sZWZ0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXCJyb3RhdGUtYmFja1wiLCBcInJvdGF0ZS1iYWNrd2FyZFwiLCBcInVuZG8tYWx0XCJdLCBcImYyZWFcIiwgXCJNNDguNSAyMjRMNDAgMjI0Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNEwxNiA3MmMwLTkuNyA1LjgtMTguNSAxNC44LTIyLjJzMTkuMy0xLjcgMjYuMiA1LjJMOTguNiA5Ni42Yzg3LjYtODYuNSAyMjguNy04Ni4yIDMxNS44IDFjODcuNSA4Ny41IDg3LjUgMjI5LjMgMCAzMTYuOHMtMjI5LjMgODcuNS0zMTYuOCAwYy0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM3MzMi44LTEyLjUgNDUuMyAwYzYyLjUgNjIuNSAxNjMuOCA2Mi41IDIyNi4zIDBzNjIuNS0xNjMuOCAwLTIyNi4zYy02Mi4yLTYyLjItMTYyLjctNjIuNS0yMjUuMy0xTDE4NSAxODNjNi45IDYuOSA4LjkgMTcuMiA1LjIgMjYuMnMtMTIuNSAxNC44LTIyLjIgMTQuOEw0OC41IDIyNHpcIl1cbn07XG5jb25zdCBmYVJvdGF0ZUJhY2sgPSBmYVJvdGF0ZUxlZnQ7XG5jb25zdCBmYVJvdGF0ZUJhY2t3YXJkID0gZmFSb3RhdGVMZWZ0O1xuY29uc3QgZmFVbmRvQWx0ID0gZmFSb3RhdGVMZWZ0O1xuY29uc3QgZmFUYWJsZUNvbHVtbnMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndGFibGUtY29sdW1ucycsXG4gIGljb246IFs1MTIsIDUxMiwgW1wiY29sdW1uc1wiXSwgXCJmMGRiXCIsIFwiTTAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJsMzg0IDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCAzMjBjMCAzNS4zLTI4LjcgNjQtNjQgNjRMNjQgNDgwYy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDk2em02NCA2NGwwIDI1NiAxNjAgMCAwLTI1Nkw2NCAxNjB6bTM4NCAwbC0xNjAgMCAwIDI1NiAxNjAgMCAwLTI1NnpcIl1cbn07XG5jb25zdCBmYUNvbHVtbnMgPSBmYVRhYmxlQ29sdW1ucztcbmNvbnN0IGZhTGVtb24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbGVtb24nLFxuICBpY29uOiBbNDQ4LCA1MTIsIFsxMjc4MTldLCBcImYwOTRcIiwgXCJNNDQ4IDk2YzAtMzUuMy0yOC43LTY0LTY0LTY0Yy02LjYgMC0xMyAxLTE5IDIuOWMtMjIuNSA3LTQ4LjEgMTQuOS03MSA5Yy03NS4yLTE5LjEtMTU2LjQgMTEtMjEzLjcgNjguM1MtNy4yIDI1MC44IDExLjkgMzI2YzUuOCAyMi45LTIgNDguNC05IDcxQzEgNDAzIDAgNDA5LjQgMCA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRjNi42IDAgMTMtMSAxOS4xLTIuOWMyMi41LTcgNDguMS0xNC45IDcxLTljNzUuMiAxOS4xIDE1Ni40LTExIDIxMy43LTY4LjNzODcuNS0xMzguNSA2OC4zLTIxMy43Yy01LjgtMjIuOSAyLTQ4LjQgOS03MWMxLjktNiAyLjktMTIuNCAyLjktMTkuMXpNMjEyLjUgMTI3LjRjLTU0LjYgMTYtMTAxLjEgNjIuNS0xMTcuMSAxMTcuMUM5Mi45IDI1MyA4NCAyNTcuOCA3NS41IDI1NS40UzYyLjIgMjQ0IDY0LjYgMjM1LjVjMTkuMS02NS4xIDczLjctMTE5LjggMTM4LjktMTM4LjljOC41LTIuNSAxNy40IDIuNCAxOS45IDEwLjlzLTIuNCAxNy40LTEwLjkgMTkuOXpcIl1cbn07XG5jb25zdCBmYUhlYWRTaWRlTWFzayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoZWFkLXNpZGUtbWFzaycsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZTA2M1wiLCBcIk0zMiAyMjQuMmMwLTIyLjIgMy4yLTQzLjYgOS4yLTYzLjlMMjYyLjIgMzIxYy00IDkuNS02LjIgMjAtNi4yIDMxbDAgMTYwLTEyOCAwYy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTcyLjdjMC0xNi43LTYuOS0zMi41LTE3LjEtNDUuOEM0OC42IDMyMi40IDMyIDI3NC4xIDMyIDIyNC4yem0yNDguMyA3MC40TDUzIDEyOS4zQzg4LjcgNTMgMTY2LjIgMCAyNTYgMGwyNCAwYzk1LjIgMCAxODEuMiA2OS4zIDE5Ny4zIDE2MC4yYzIuMyAxMyA2LjggMjUuNyAxNS4xIDM2bDQyIDUyLjZjNS40IDYuNyA4LjYgMTQuOCA5LjQgMjMuMkwzMzYgMjcyYy0yMS43IDAtNDEuMyA4LjYtNTUuNyAyMi42ek0zMzYgMzA0bDE5OCAwczAgMCAwIDBsMTAgMC0xOS43IDY0TDM2OCAzNjhjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZsMTQ2LjUgMC05LjggMzJMMzY4IDQzMmMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmwxMjYuOCAwLS45IDIuOGMtOC4zIDI2LjktMzMuMSA0NS4yLTYxLjIgNDUuMkwyODggNTEybDAtMTYwYzAtMTQgNi0yNi43IDE1LjYtMzUuNGMwIDAgMCAwIDAgMGM4LjUtNy44IDE5LjktMTIuNiAzMi40LTEyLjZ6bTQ4LTgwYTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpcIl1cbn07XG5jb25zdCBmYUhhbmRzaGFrZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoYW5kc2hha2UnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImYyYjVcIiwgXCJNMzIzLjQgODUuMmwtOTYuOCA3OC40Yy0xNi4xIDEzLTE5LjIgMzYuNC03IDUzLjFjMTIuOSAxNy44IDM4IDIxLjMgNTUuMyA3LjhsOTkuMy03Ny4yYzctNS40IDE3LTQuMiAyMi41IDIuOHM0LjIgMTctMi44IDIyLjVsLTIwLjkgMTYuMkw1MTIgMzE2LjggNTEyIDEyOGwtLjcgMC0zLjktMi41TDQzNC44IDc5Yy0xNS4zLTkuOC0zMy4yLTE1LTUxLjQtMTVjLTIxLjggMC00MyA3LjUtNjAgMjEuMnptMjIuOCAxMjQuNGwtNTEuNyA0MC4yQzI2MyAyNzQuNCAyMTcuMyAyNjggMTkzLjcgMjM1LjZjLTIyLjItMzAuNS0xNi42LTczLjEgMTIuNy05Ni44bDgzLjItNjcuM2MtMTEuNi00LjktMjQuMS03LjQtMzYuOC03LjRDMjM0IDY0IDIxNS43IDY5LjYgMjAwIDgwbC03MiA0OCAwIDIyNCAyOC4yIDAgOTEuNCA4My40YzE5LjYgMTcuOSA0OS45IDE2LjUgNjcuOC0zLjFjNS41LTYuMSA5LjItMTMuMiAxMS4xLTIwLjZsMTcgMTUuNmMxOS41IDE3LjkgNDkuOSAxNi42IDY3LjgtMi45YzQuNS00LjkgNy44LTEwLjYgOS45LTE2LjVjMTkuNCAxMyA0NS44IDEwLjMgNjIuMS03LjVjMTcuOS0xOS41IDE2LjYtNDkuOS0yLjktNjcuOGwtMTM0LjItMTIzek0xNiAxMjhjLTguOCAwLTE2IDcuMi0xNiAxNkwwIDM1MmMwIDE3LjcgMTQuMyAzMiAzMiAzMmwzMiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMybDAtMjI0LTgwIDB6TTQ4IDMyMGExNiAxNiAwIDEgMSAwIDMyIDE2IDE2IDAgMSAxIDAtMzJ6TTU0NCAxMjhsMCAyMjRjMCAxNy43IDE0LjMgMzIgMzIgMzJsMzIgMGMxNy43IDAgMzItMTQuMyAzMi0zMmwwLTIwOGMwLTguOC03LjItMTYtMTYtMTZsLTgwIDB6bTMyIDIwOGExNiAxNiAwIDEgMSAzMiAwIDE2IDE2IDAgMSAxIC0zMiAwelwiXVxufTtcbmNvbnN0IGZhR2VtID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2dlbScsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyODE0Ml0sIFwiZjNhNVwiLCBcIk0xMTYuNyAzMy44YzQuNS02LjEgMTEuNy05LjggMTkuMy05LjhsMjQwIDBjNy42IDAgMTQuOCAzLjYgMTkuMyA5LjhsMTEyIDE1MmM2LjggOS4yIDYuMSAyMS45LTEuNSAzMC40bC0yMzIgMjU2Yy00LjUgNS0xMSA3LjktMTcuOCA3LjlzLTEzLjItMi45LTE3LjgtNy45bC0yMzItMjU2Yy03LjctOC41LTguMy0yMS4yLTEuNS0zMC40bDExMi0xNTJ6bTM4LjUgMzkuOGMtMy4zIDIuNS00LjIgNy0yLjEgMTAuNWw1Ny40IDk1LjZMNjMuMyAxOTJjLTQuMSAuMy03LjMgMy44LTcuMyA4czMuMiA3LjYgNy4zIDhsMTkyIDE2Yy40IDAgLjkgMCAxLjMgMGwxOTItMTZjNC4xLS4zIDcuMy0zLjggNy4zLThzLTMuMi03LjYtNy4zLThMMzAxLjUgMTc5LjhsNTcuNC05NS42YzIuMS0zLjUgMS4yLTguMS0yLjEtMTAuNXMtNy45LTItMTAuNyAxTDI1NiAxNzIuMiAxNjUuOSA3NC42Yy0yLjgtMy03LjQtMy40LTEwLjctMXpcIl1cbn07XG5jb25zdCBmYURvbGx5ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2RvbGx5JyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXCJkb2xseS1ib3hcIl0sIFwiZjQ3MlwiLCBcIk0wIDMyQzAgMTQuMyAxNC4zIDAgMzIgMGw3Mi45IDBjMjcuNSAwIDUyIDE3LjYgNjAuNyA0My44TDI1Ny43IDMyMGMzMC4xIC41IDU2LjggMTQuOSA3NCAzN2wyMDIuMS02Ny40YzE2LjgtNS42IDM0LjkgMy41IDQwLjUgMjAuMnMtMy41IDM0LjktMjAuMiA0MC41TDM1MiA0MTcuN2MtLjkgNTIuMi00My41IDk0LjMtOTYgOTQuM2MtNTMgMC05Ni00My05Ni05NmMwLTMwLjggMTQuNS01OC4yIDM3LTc1LjhMMTA0LjkgNjQgMzIgNjRDMTQuMyA2NCAwIDQ5LjcgMCAzMnpNMjQ0LjggMTM0LjVjLTUuNS0xNi44IDMuNy0zNC45IDIwLjUtNDAuM0wzMTEgNzkuNGwxOS44IDYwLjkgNjAuOS0xOS44TDM3MS44IDU5LjZsNDUuNy0xNC44YzE2LjgtNS41IDM0LjkgMy43IDQwLjMgMjAuNWw0OS40IDE1Mi4yYzUuNSAxNi44LTMuNyAzNC45LTIwLjUgNDAuM0wzMzQuNSAzMDcuMmMtMTYuOCA1LjUtMzQuOS0zLjctNDAuMy0yMC41TDI0NC44IDEzNC41elwiXVxufTtcbmNvbnN0IGZhRG9sbHlCb3ggPSBmYURvbGx5O1xuY29uc3QgZmFTbW9raW5nID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3Ntb2tpbmcnLFxuICBpY29uOiBbNjQwLCA1MTIsIFsxMjg2ODRdLCBcImY0OGRcIiwgXCJNNDQ4IDMybDAgMTFjMCAzOC4yIDE1LjIgNzQuOCA0Mi4yIDEwMS44bDIxIDIxYzIxIDIxIDMyLjggNDkuNSAzMi44IDc5LjJsMCAxMWMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTExYzAtMTIuNy01LjEtMjQuOS0xNC4xLTMzLjlsLTIxLTIxQzQwNS45IDE1MS4xIDM4NCA5OC4xIDM4NCA0M2wwLTExYzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJ6TTU3NiAyNTZsMC0xMWMwLTM4LjItMTUuMi03NC44LTQyLjItMTAxLjhsLTIxLTIxYy0yMS0yMS0zMi44LTQ5LjUtMzIuOC03OS4ybDAtMTFjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMmwwIDExYzAgMTIuNyA1LjEgMjQuOSAxNC4xIDMzLjlsMjEgMjFjMzkgMzkgNjAuOSA5MS45IDYwLjkgMTQ3LjFsMCAxMWMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMnpNMCA0MTZjMC0zNS4zIDI4LjctNjQgNjQtNjRsMzUyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCA5NmMwIDE3LjctMTQuMyAzMi0zMiAzMkw2NCA1MTJjLTM1LjMgMC02NC0yOC43LTY0LTY0bDAtMzJ6bTIyNCAwbDAgMzIgMTYwIDAgMC0zMi0xNjAgMHptMjg4LTY0YzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgOTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC05NmMwLTE3LjcgMTQuMy0zMiAzMi0zMnptOTYgMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDk2YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtOTZjMC0xNy43IDE0LjMtMzIgMzItMzJ6XCJdXG59O1xuY29uc3QgZmFNaW5pbWl6ZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtaW5pbWl6ZScsXG4gIGljb246IFs1MTIsIDUxMiwgW1wiY29tcHJlc3MtYXJyb3dzLWFsdFwiXSwgXCJmNzhjXCIsIFwiTTQ1NiAyMjRsLTE0NCAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNGwwLTE0NGMwLTkuNyA1LjgtMTguNSAxNC44LTIyLjJzMTkuMy0xLjcgMjYuMiA1LjJsNDAgNDBMNDQyLjMgNS43QzQ0NiAyIDQ1MC45IDAgNDU2IDBzMTAgMiAxMy43IDUuN2wzNi43IDM2LjdDNTEwIDQ2IDUxMiA1MC45IDUxMiA1NnMtMiAxMC01LjcgMTMuN0w0MzMgMTQzbDQwIDQwYzYuOSA2LjkgOC45IDE3LjIgNS4yIDI2LjJzLTEyLjUgMTQuOC0yMi4yIDE0Ljh6bTAgNjRjOS43IDAgMTguNSA1LjggMjIuMiAxNC44czEuNyAxOS4zLTUuMiAyNi4ybC00MCA0MCA3My40IDczLjRjMy42IDMuNiA1LjcgOC41IDUuNyAxMy43cy0yIDEwLTUuNyAxMy43bC0zNi43IDM2LjdDNDY2IDUxMCA0NjEuMSA1MTIgNDU2IDUxMnMtMTAtMi0xMy43LTUuN0wzNjkgNDMzbC00MCA0MGMtNi45IDYuOS0xNy4yIDguOS0yNi4yIDUuMnMtMTQuOC0xMi41LTE0LjgtMjIuMmwwLTE0NGMwLTEzLjMgMTAuNy0yNCAyNC0yNGwxNDQgMHptLTI1NiAwYzEzLjMgMCAyNCAxMC43IDI0IDI0bDAgMTQ0YzAgOS43LTUuOCAxOC41LTE0LjggMjIuMnMtMTkuMyAxLjctMjYuMi01LjJsLTQwLTQwTDY5LjcgNTA2LjNDNjYgNTEwIDYxLjEgNTEyIDU2IDUxMnMtMTAtMi0xMy43LTUuN0w1LjcgNDY5LjdDMiA0NjYgMCA0NjEuMSAwIDQ1NnMyLTEwIDUuNy0xMy43TDc5IDM2OSAzOSAzMjljLTYuOS02LjktOC45LTE3LjItNS4yLTI2LjJzMTIuNS0xNC44IDIyLjItMTQuOGwxNDQgMHpNNTYgMjI0Yy05LjcgMC0xOC41LTUuOC0yMi4yLTE0LjhzLTEuNy0xOS4zIDUuMi0yNi4ybDQwLTQwTDUuNyA2OS43QzIgNjYgMCA2MS4xIDAgNTZzMi0xMCA1LjctMTMuN0w0Mi4zIDUuN0M0NiAyIDUwLjkgMCA1NiAwczEwIDIgMTMuNyA1LjdMMTQzIDc5bDQwLTQwYzYuOS02LjkgMTcuMi04LjkgMjYuMi01LjJzMTQuOCAxMi41IDE0LjggMjIuMmwwIDE0NGMwIDEzLjMtMTAuNyAyNC0yNCAyNEw1NiAyMjR6XCJdXG59O1xuY29uc3QgZmFDb21wcmVzc0Fycm93c0FsdCA9IGZhTWluaW1pemU7XG5jb25zdCBmYU1vbnVtZW50ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21vbnVtZW50JyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmNWE2XCIsIFwiTTE4MC43IDQuN2M2LjItNi4yIDE2LjQtNi4yIDIyLjYgMGw4MCA4MGMyLjUgMi41IDQuMSA1LjggNC42IDkuM2w0MC4yIDMyMkw1NS45IDQxNiA5Ni4xIDk0Yy40LTMuNSAyLTYuOCA0LjYtOS4zbDgwLTgwek0xNTIgMjcyYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0bDgwIDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRsLTgwIDB6TTMyIDQ0OGwzMjAgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkwzMiA1MTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJ6XCJdXG59O1xuY29uc3QgZmFTbm93cGxvdyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzbm93cGxvdycsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjdkMlwiLCBcIk0yOTguOSA2NGw2OC42IDE2MEwyNTYgMjI0bC02NC02NCAwLTk2IDEwNi45IDB6TTQ0NS4xIDI0Mi43bC04Ny40LTIwNEMzNDcuNiAxNS4zIDMyNC41IDAgMjk4LjkgMEwxNzYgMGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhsMCAxMTItMzIgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJsMCAxMDYuOEMyNi4yIDMxNi44IDAgMzU1LjMgMCA0MDBjMCA2MS45IDUwLjEgMTEyIDExMiAxMTJsMjU2IDBjNjEuOSAwIDExMi01MC4xIDExMi0xMTJjMC0xNy4yLTMuOS0zMy41LTEwLjgtNDhsNDIuOCAwIDAgNTAuN2MwIDE3IDYuNyAzMy4zIDE4LjcgNDUuM2w1NC42IDU0LjZjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM0w1NzYgNDAyLjdsMC04Mi43IDAtODQuOEw2MzMgMTY0YzExLTEzLjggOC44LTMzLjktNS00NXMtMzMuOS04LjgtNDUgNWwtNTcgNzEuMmMtOS4xIDExLjMtMTQgMjUuNC0xNCA0MGwwIDUyLjgtNjQgMCAwLTMxLjNjLjEtMi40LS4yLTQuOC0uNi03LjFzLTEuMi00LjctMi4yLTYuOHpNMzY4IDM1MmMyNi41IDAgNDggMjEuNSA0OCA0OHMtMjEuNSA0OC00OCA0OGwtMjU2IDBjLTI2LjUgMC00OC0yMS41LTQ4LTQ4czIxLjUtNDggNDgtNDhsMjU2IDB6TTE0NCA0MDBhMjQgMjQgMCAxIDAgLTQ4IDAgMjQgMjQgMCAxIDAgNDggMHptMjE2IDI0YTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHptLTU2LTI0YTI0IDI0IDAgMSAwIC00OCAwIDI0IDI0IDAgMSAwIDQ4IDB6TTIwMCA0MjRhMjQgMjQgMCAxIDAgMC00OCAyNCAyNCAwIDEgMCAwIDQ4elwiXVxufTtcbmNvbnN0IGZhQW5nbGVzUmlnaHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYW5nbGVzLXJpZ2h0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTg3LCBcImFuZ2xlLWRvdWJsZS1yaWdodFwiXSwgXCJmMTAxXCIsIFwiTTQ3MC42IDI3OC42YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zbC0xNjAtMTYwYy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM0w0MDIuNyAyNTYgMjY1LjQgMzkzLjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBsMTYwLTE2MHptLTM1MiAxNjBsMTYwLTE2MGMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM2wtMTYwLTE2MGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNMMjEwLjcgMjU2IDczLjQgMzkzLjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDB6XCJdXG59O1xuY29uc3QgZmFBbmdsZURvdWJsZVJpZ2h0ID0gZmFBbmdsZXNSaWdodDtcbmNvbnN0IGZhQ2FubmFiaXMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2FubmFiaXMnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY1NWZcIiwgXCJNMjU2IDBjNS4zIDAgMTAuMyAyLjcgMTMuMyA3LjFjMTUuOCAyMy41IDM2LjcgNjMuNyA0OS4yIDEwOWM3LjIgMjYuNCAxMS44IDU1LjIgMTAuNCA4NGMxMS41LTguOCAyMy43LTE2LjcgMzUuOC0yMy42YzQxLTIzLjMgODQuNC0zNi45IDExMi4yLTQyLjVjNS4yLTEgMTAuNyAuNiAxNC40IDQuNHM1LjQgOS4yIDQuNCAxNC41Yy01LjYgMjcuNy0xOS4zIDcwLjktNDIuNyAxMTEuN2MtOS4xIDE1LjktMTkuOSAzMS43LTMyLjQgNDYuM2MyNy44IDYuNiA1Mi40IDE3LjMgNjcuMiAyNS41YzUuMSAyLjggOC4yIDguMiA4LjIgMTRzLTMuMiAxMS4yLTguMiAxNGMtMTUuMiA4LjQtNDAuOSAxOS41LTY5LjggMjYuMWMtMjAuMiA0LjYtNDIuOSA3LjItNjUuMiA0LjZsOC4zIDMzLjFjMS41IDYuMS0uNiAxMi40LTUuNSAxNi40cy0xMS42IDQuNi0xNy4yIDEuOUwyODAgNDE3LjJsMCA3MC44YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0bDAtNzAuOC01OC41IDI5LjFjLTUuNiAyLjgtMTIuMyAyLjEtMTcuMi0xLjlzLTctMTAuMy01LjUtMTYuNGw4LjMtMzMuMWMtMjIuMiAyLjYtNDUgMC02NS4yLTQuNmMtMjguOS02LjYtNTQuNi0xNy42LTY5LjgtMjYuMWMtNS4xLTIuOC04LjItOC4yLTguMi0xNHMzLjItMTEuMiA4LjItMTRjMTQuOC04LjIgMzkuNC0xOC44IDY3LjItMjUuNUM3OC45IDI5Ni4zIDY4LjEgMjgwLjUgNTkgMjY0LjZjLTIzLjQtNDAuOC0zNy4xLTg0LTQyLjctMTExLjdjLTEuMS01LjIgLjYtMTAuNyA0LjQtMTQuNXM5LjItNS40IDE0LjQtNC40YzI3LjkgNS41IDcxLjIgMTkuMiAxMTIuMiA0Mi41YzEyLjEgNi45IDI0LjMgMTQuNyAzNS44IDIzLjZjLTEuNC0yOC43IDMuMS01Ny42IDEwLjQtODRjMTIuNS00NS4zIDMzLjQtODUuNSA0OS4yLTEwOWMzLTQuNCA4LTcuMSAxMy4zLTcuMXpcIl1cbn07XG5jb25zdCBmYUNpcmNsZVBsYXkgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2lyY2xlLXBsYXknLFxuICBpY29uOiBbNTEyLCA1MTIsIFs2MTQ2OSwgXCJwbGF5LWNpcmNsZVwiXSwgXCJmMTQ0XCIsIFwiTTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnpNMTg4LjMgMTQ3LjFjLTcuNiA0LjItMTIuMyAxMi4zLTEyLjMgMjAuOWwwIDE3NmMwIDguNyA0LjcgMTYuNyAxMi4zIDIwLjlzMTYuOCA0LjEgMjQuMy0uNWwxNDQtODhjNy4xLTQuNCAxMS41LTEyLjEgMTEuNS0yMC41cy00LjQtMTYuMS0xMS41LTIwLjVsLTE0NC04OGMtNy40LTQuNS0xNi43LTQuNy0yNC4zLS41elwiXVxufTtcbmNvbnN0IGZhUGxheUNpcmNsZSA9IGZhQ2lyY2xlUGxheTtcbmNvbnN0IGZhVGFibGV0cyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0YWJsZXRzJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNDkwXCIsIFwiTTYxNC4zIDI0N2MtNS4yIDcuOS0xNi4yIDguNS0yMi45IDEuOEwzOTEuMiA0OC42Yy02LjctNi43LTYuMi0xNy44IDEuOC0yMi45QzQxOC4xIDkuNCA0NDcuOSAwIDQ4MCAwYzg4LjQgMCAxNjAgNzEuNiAxNjAgMTYwYzAgMzIuMS05LjQgNjEuOS0yNS43IDg3ek01NjcgMjk0LjNjLTI1IDE2LjMtNTQuOSAyNS43LTg3IDI1LjdjLTg4LjQgMC0xNjAtNzEuNi0xNjAtMTYwYzAtMzIuMSA5LjQtNjEuOSAyNS43LTg3YzUuMi03LjkgMTYuMi04LjUgMjIuOS0xLjhMNTY4LjggMjcxLjRjNi43IDYuNyA2LjIgMTcuOC0xLjggMjIuOXpNMzAxLjUgMzY4YzkuNSAwIDE2LjkgOC4yIDE1IDE3LjVDMzAxLjEgNDU3LjggMjM2LjkgNTEyIDE2MCA1MTJTMTguOSA0NTcuOCAzLjUgMzg1LjVjLTItOS4zIDUuNS0xNy41IDE1LTE3LjVsMjgzLjEgMHptMC0zMkwxOC41IDMzNmMtOS41IDAtMTYuOS04LjItMTUtMTcuNUMxOC45IDI0Ni4yIDgzLjEgMTkyIDE2MCAxOTJzMTQxLjEgNTQuMiAxNTYuNSAxMjYuNWMyIDkuMy01LjUgMTcuNS0xNSAxNy41elwiXVxufTtcbmNvbnN0IGZhRXRoZXJuZXQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZXRoZXJuZXQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY3OTZcIiwgXCJNMCAyMjRMMCA0MTZjMCAxNy43IDE0LjMgMzIgMzIgMzJsNjQgMCAwLTExMmMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2bDAgMTEyIDY0IDAgMC0xMTJjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNmwwIDExMiA2NCAwIDAtMTEyYzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZsMCAxMTIgNjQgMCAwLTExMmMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2bDAgMTEyIDY0IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJsMC0xOTJjMC0xNy43LTE0LjMtMzItMzItMzJsLTMyIDAgMC0zMmMwLTE3LjctMTQuMy0zMi0zMi0zMmwtMzIgMCAwLTMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyTDE2MCA2NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJsMCAzMi0zMiAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMmwwIDMyLTMyIDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyelwiXVxufTtcbmNvbnN0IGZhRXVyb1NpZ24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZXVyby1zaWduJyxcbiAgaWNvbjogWzMyMCwgNTEyLCBbODM2NCwgXCJldXJcIiwgXCJldXJvXCJdLCBcImYxNTNcIiwgXCJNNDguMSAyNDBjLS4xIDIuNy0uMSA1LjMtLjEgOGwwIDE2YzAgMi43IDAgNS4zIC4xIDhMMzIgMjcyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDI4LjMgMEM4OS45IDQxOS45IDE3MCA0ODAgMjY0IDQ4MGwyNCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC0yNCAwYy01Ny45IDAtMTA4LjItMzIuNC0xMzMuOS04MEwyNTYgMzM2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC0xNDMuOCAwYy0uMS0yLjYtLjItNS4zLS4yLThsMC0xNmMwLTIuNyAuMS01LjQgLjItOEwyNTYgMjQwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC0xMjUuOSAwYzI1LjctNDcuNiA3Ni04MCAxMzMuOS04MGwyNCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC0yNCAwQzE3MCAzMiA4OS45IDkyLjEgNjAuMyAxNzZMMzIgMTc2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDE2LjEgMHpcIl1cbn07XG5jb25zdCBmYUV1ciA9IGZhRXVyb1NpZ247XG5jb25zdCBmYUV1cm8gPSBmYUV1cm9TaWduO1xuY29uc3QgZmFDaGFpciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaGFpcicsXG4gIGljb246IFs0NDgsIDUxMiwgWzEyOTY4MV0sIFwiZjZjMFwiLCBcIk0yNDggNDhsMCAyMDggNDggMCAwLTE5Ny4zYzIzLjkgMTMuOCA0MCAzOS43IDQwIDY5LjNsMCAxMjggNDggMCAwLTEyOEMzODQgNTcuMyAzMjYuNyAwIDI1NiAwTDE5MiAwQzEyMS4zIDAgNjQgNTcuMyA2NCAxMjhsMCAxMjggNDggMCAwLTEyOGMwLTI5LjYgMTYuMS01NS41IDQwLTY5LjNMMTUyIDI1Nmw0OCAwIDAtMjA4IDQ4IDB6TTQ4IDI4OGMtMTIuMSAwLTIzLjIgNi44LTI4LjYgMTcuN2wtMTYgMzJjLTUgOS45LTQuNCAyMS43IDEuNCAzMS4xUzIwLjkgMzg0IDMyIDM4NGwwIDk2YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC05NiAyNTYgMCAwIDk2YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC05NmMxMS4xIDAgMjEuNC01LjcgMjcuMi0xNS4yczYuNC0yMS4yIDEuNC0zMS4xbC0xNi0zMkM0MjMuMiAyOTQuOCA0MTIuMSAyODggNDAwIDI4OEw0OCAyODh6XCJdXG59O1xuY29uc3QgZmFDaXJjbGVDaGVjayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaXJjbGUtY2hlY2snLFxuICBpY29uOiBbNTEyLCA1MTIsIFs2MTUzMywgXCJjaGVjay1jaXJjbGVcIl0sIFwiZjA1OFwiLCBcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMzY5IDIwOUwyNDEgMzM3Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMGwtNjQtNjRjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMGw0NyA0N0wzMzUgMTc1YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOXpcIl1cbn07XG5jb25zdCBmYUNoZWNrQ2lyY2xlID0gZmFDaXJjbGVDaGVjaztcbmNvbnN0IGZhQ2lyY2xlU3RvcCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaXJjbGUtc3RvcCcsXG4gIGljb246IFs1MTIsIDUxMiwgWzYyMDk0LCBcInN0b3AtY2lyY2xlXCJdLCBcImYyOGRcIiwgXCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTE5MiAxNjBsMTI4IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCAxMjhjMCAxNy43LTE0LjMgMzItMzIgMzJsLTEyOCAwYy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTEyOGMwLTE3LjcgMTQuMy0zMiAzMi0zMnpcIl1cbn07XG5jb25zdCBmYVN0b3BDaXJjbGUgPSBmYUNpcmNsZVN0b3A7XG5jb25zdCBmYUNvbXBhc3NEcmFmdGluZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjb21wYXNzLWRyYWZ0aW5nJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXCJkcmFmdGluZy1jb21wYXNzXCJdLCBcImY1NjhcIiwgXCJNMzUyIDk2YzAgMTQuMy0zLjEgMjcuOS04LjggNDAuMkwzOTYgMjI3LjRjLTIzLjcgMjUuMy01NC4yIDQ0LjEtODguNSA1My42TDI1NiAxOTJjMCAwIDAgMCAwIDBzMCAwIDAgMGwtNjggMTE3LjVjMjEuNSA2LjggNDQuMyAxMC41IDY4LjEgMTAuNWM3MC43IDAgMTMzLjgtMzIuNyAxNzQuOS04NGMxMS4xLTEzLjggMzEuMi0xNiA0NS01czE2IDMxLjIgNSA0NUM0MjguMSAzNDEuOCAzNDcgMzg0IDI1NiAzODRjLTM1LjQgMC02OS40LTYuNC0xMDAuNy0xOC4xTDk4LjcgNDYzLjdDOTQgNDcxLjggODcgNDc4LjQgNzguNiA0ODIuNkwyMy4yIDUxMC4zYy01IDIuNS0xMC45IDIuMi0xNS42LS43UzAgNTAxLjUgMCA0OTZsMC01NS40YzAtOC40IDIuMi0xNi43IDYuNS0yNC4xbDYwLTEwMy43QzUzLjcgMzAxLjYgNDEuOCAyODkuMyAzMS4yIDI3NmMtMTEuMS0xMy44LTguOC0zMy45IDUtNDVzMzMuOS04LjggNDUgNWM1LjcgNy4xIDExLjggMTMuOCAxOC4yIDIwLjFsNjkuNC0xMTkuOWMtNS42LTEyLjItOC44LTI1LjgtOC44LTQwLjJjMC01MyA0My05NiA5Ni05NnM5NiA0MyA5NiA5NnptMjEgMjk3LjljMzIuNi0xMi44IDYyLjUtMzAuOCA4OC45LTUyLjlsNDMuNyA3NS41YzQuMiA3LjMgNi41IDE1LjYgNi41IDI0LjFsMCA1NS40YzAgNS41LTIuOSAxMC43LTcuNiAxMy42cy0xMC42IDMuMi0xNS42IC43bC01NS40LTI3LjdjLTguNC00LjItMTUuNC0xMC44LTIwLjEtMTguOUwzNzMgMzkzLjl6TTI1NiAxMjhhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0elwiXVxufTtcbmNvbnN0IGZhRHJhZnRpbmdDb21wYXNzID0gZmFDb21wYXNzRHJhZnRpbmc7XG5jb25zdCBmYVBsYXRlV2hlYXQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGxhdGUtd2hlYXQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImU1NWFcIiwgXCJNMTc2IDMyYzQ0LjIgMCA4MCAzNS44IDgwIDgwbDAgMTZjMCA4LjgtNy4yIDE2LTE2IDE2Yy00NC4yIDAtODAtMzUuOC04MC04MGwwLTE2YzAtOC44IDcuMi0xNiAxNi0xNnpNNTYgNjRsNDggMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGwtNDggMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNHpNMjQgMTM2bDExMiAwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0TDI0IDE4NGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNHptOCA5NmMwLTEzLjMgMTAuNy0yNCAyNC0yNGw0OCAwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0bC00OCAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHpNMjcyIDQ4YzAtOC44IDcuMi0xNiAxNi0xNmM0NC4yIDAgODAgMzUuOCA4MCA4MGwwIDE2YzAgOC44LTcuMiAxNi0xNiAxNmMtNDQuMiAwLTgwLTM1LjgtODAtODBsMC0xNnpNNDAwIDMyYzQ0LjIgMCA4MCAzNS44IDgwIDgwbDAgMTZjMCA4LjgtNy4yIDE2LTE2IDE2Yy00NC4yIDAtODAtMzUuOC04MC04MGwwLTE2YzAtOC44IDcuMi0xNiAxNi0xNnptODAgMTYwbDAgMTZjMCA0NC4yLTM1LjggODAtODAgODBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTE2YzAtNDQuMiAzNS44LTgwIDgwLTgwYzguOCAwIDE2IDcuMiAxNiAxNnpNMzUyIDE3NmM4LjggMCAxNiA3LjIgMTYgMTZsMCAxNmMwIDQ0LjItMzUuOCA4MC04MCA4MGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMTZjMC00NC4yIDM1LjgtODAgODAtODB6bS05NiAxNmwwIDE2YzAgNDQuMi0zNS44IDgwLTgwIDgwYy04LjggMC0xNi03LjItMTYtMTZsMC0xNmMwLTQ0LjIgMzUuOC04MCA4MC04MGM4LjggMCAxNiA3LjIgMTYgMTZ6TTMuNSAzNDcuNkMxLjYgMzMyLjkgMTMgMzIwIDI3LjggMzIwbDQ1Ni40IDBjMTQuOCAwIDI2LjIgMTIuOSAyNC40IDI3LjZDNTAyLjMgMzk3LjggNDY0LjIgNDM3IDQxNiA0NDZsMCAyYzAgMTcuNy0xNC4zIDMyLTMyIDMybC0yNTYgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC0yYy00OC4yLTktODYuMy00OC4yLTkyLjUtOTguNHpcIl1cbn07XG5jb25zdCBmYUljaWNsZXMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaWNpY2xlcycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjdhZFwiLCBcIk03NS44IDMwNC44TDEgMzUuN2MtLjctMi41LTEtNS0xLTcuNUMwIDEyLjYgMTIuNiAwIDI4LjIgMEg0ODIuNEM0OTguOCAwIDUxMiAxMy4yIDUxMiAyOS42YzAgMS42LS4xIDMuMy0uNCA0LjlMNDM0LjYgNDk2LjFjLTEuNSA5LjItOS41IDE1LjktMTguOCAxNS45Yy05LjIgMC0xNy4xLTYuNi0xOC43LTE1LjZMMzM2IDE2MCAzMDcuMiAzMDMuOWMtMS45IDkuMy0xMC4xIDE2LjEtMTkuNiAxNi4xYy05LjIgMC0xNy4yLTYuMi0xOS40LTE1LjFMMjQwIDE5MiAyMTAuNiAzNjguMmMtMS41IDkuMS05LjQgMTUuOC0xOC42IDE1LjhzLTE3LjEtNi43LTE4LjYtMTUuOEwxNDQgMTkyIDExNS45IDMwNC4zYy0yLjMgOS4yLTEwLjYgMTUuNy0yMC4xIDE1LjdjLTkuMyAwLTE3LjUtNi4yLTIwLTE1LjJ6XCJdXG59O1xuY29uc3QgZmFQZXJzb25TaGVsdGVyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BlcnNvbi1zaGVsdGVyJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJlNTRmXCIsIFwiTTI3MS45IDQuMmMtOS44LTUuNi0yMS45LTUuNi0zMS44IDBsLTIyNCAxMjhDNi4yIDEzNy45IDAgMTQ4LjUgMCAxNjBMMCA0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTMwMS40TDI1NiA2OC45IDQ0OCAxNzguNiA0NDggNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0zMjBjMC0xMS41LTYuMi0yMi4xLTE2LjEtMjcuOGwtMjI0LTEyOHpNMjU2IDIwOGE0MCA0MCAwIDEgMCAwLTgwIDQwIDQwIDAgMSAwIDAgODB6bS04IDI4MGwwLTg4IDE2IDAgMCA4OGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0bDAtMTc0LjUgMjYuOSA0OS45YzYuMyAxMS43IDIwLjggMTYgMzIuNSA5LjhzMTYtMjAuOCA5LjgtMzIuNWwtMzcuOS03MC4zYy0xNS4zLTI4LjUtNDUuMS00Ni4zLTc3LjUtNDYuM2wtMTkuNSAwYy0zMi40IDAtNjIuMSAxNy44LTc3LjUgNDYuM2wtMzcuOSA3MC4zYy02LjMgMTEuNy0xLjkgMjYuMiA5LjggMzIuNXMyNi4yIDEuOSAzMi41LTkuOEwyMDAgMzEzLjUgMjAwIDQ4OGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0elwiXVxufTtcbmNvbnN0IGZhTmV1dGVyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ25ldXRlcicsXG4gIGljb246IFszODQsIDUxMiwgWzk5MDZdLCBcImYyMmNcIiwgXCJNODAgMTc2YTExMiAxMTIgMCAxIDEgMjI0IDBBMTEyIDExMiAwIDEgMSA4MCAxNzZ6TTIyNCAzNDkuMWM4MS45LTE1IDE0NC04Ni44IDE0NC0xNzMuMUMzNjggNzguOCAyODkuMiAwIDE5MiAwUzE2IDc4LjggMTYgMTc2YzAgODYuMyA2Mi4xIDE1OC4xIDE0NCAxNzMuMUwxNjAgNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0xMzAuOXpcIl1cbn07XG5jb25zdCBmYUlkQmFkZ2UgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaWQtYmFkZ2UnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImYyYzFcIiwgXCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRMMCA0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMjU2IDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0zODRjMC0zNS4zLTI4LjctNjQtNjQtNjRMNjQgMHptOTYgMzIwbDY0IDBjNDQuMiAwIDgwIDM1LjggODAgODBjMCA4LjgtNy4yIDE2LTE2IDE2TDk2IDQxNmMtOC44IDAtMTYtNy4yLTE2LTE2YzAtNDQuMiAzNS44LTgwIDgwLTgwem0tMzItOTZhNjQgNjQgMCAxIDEgMTI4IDAgNjQgNjQgMCAxIDEgLTEyOCAwek0xNDQgNjRsOTYgMGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNmwtOTYgMGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnpcIl1cbn07XG5jb25zdCBmYU1hcmtlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtYXJrZXInLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY1YTFcIiwgXCJNNDgxIDMxQzQ0NS4xLTQuOCAzODYuOS00LjggMzUxIDMxbC0xNSAxNUwzMjIuOSAzM0MyOTQuOCA0LjkgMjQ5LjIgNC45IDIyMS4xIDMzTDEzNSAxMTljLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45czI0LjYgOS40IDMzLjkgMEwyNTUgNjYuOWM5LjQtOS40IDI0LjYtOS40IDMzLjkgMEwzMDIuMSA4MCAxODYuMyAxOTUuNyAzMTYuMyAzMjUuNyA0ODEgMTYxYzM1LjktMzUuOSAzNS45LTk0LjEgMC0xMjkuOXpNMjkzLjcgMzQ4LjNMMTYzLjcgMjE4LjMgOTkuNSAyODIuNWMtNDggNDgtODAuOCAxMDkuMi05NC4xIDE3NS44bC01IDI1Yy0xLjYgNy45IC45IDE2IDYuNiAyMS43czEzLjggOC4xIDIxLjcgNi42bDI1LTVjNjYuNi0xMy4zIDEyNy44LTQ2LjEgMTc1LjgtOTQuMWw2NC4yLTY0LjJ6XCJdXG59O1xuY29uc3QgZmFGYWNlTGF1Z2hCZWFtID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZhY2UtbGF1Z2gtYmVhbScsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyODUxMywgXCJsYXVnaC1iZWFtXCJdLCBcImY1OWFcIiwgXCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTk2LjggMzE0LjFjLTMuOC0xMy43IDcuNC0yNi4xIDIxLjYtMjYuMWwyNzUuMiAwYzE0LjIgMCAyNS41IDEyLjQgMjEuNiAyNi4xQzM5Ni4yIDM4MiAzMzIuMSA0MzIgMjU2IDQzMnMtMTQwLjItNTAtMTU5LjItMTE3Ljl6TTIxNy42IDIxMi44czAgMCAwIDBjMCAwIDAgMCAwIDBsLS4yLS4yYy0uMi0uMi0uNC0uNS0uNy0uOWMtLjYtLjgtMS42LTItMi44LTMuNGMtMi41LTIuOC02LTYuNi0xMC4yLTEwLjNjLTguOC03LjgtMTguOC0xNC0yNy43LTE0cy0xOC45IDYuMi0yNy43IDE0Yy00LjIgMy43LTcuNyA3LjUtMTAuMiAxMC4zYy0xLjIgMS40LTIuMiAyLjYtMi44IDMuNGMtLjMgLjQtLjYgLjctLjcgLjlsLS4yIC4yYzAgMCAwIDAgMCAwYzAgMCAwIDAgMCAwczAgMCAwIDBjLTIuMSAyLjgtNS43IDMuOS04LjkgMi44cy01LjUtNC4xLTUuNS03LjZjMC0xNy45IDYuNy0zNS42IDE2LjYtNDguOGM5LjgtMTMgMjMuOS0yMy4yIDM5LjQtMjMuMnMyOS42IDEwLjIgMzkuNCAyMy4yYzkuOSAxMy4yIDE2LjYgMzAuOSAxNi42IDQ4LjhjMCAzLjQtMi4yIDYuNS01LjUgNy42cy02LjkgMC04LjktMi44YzAgMCAwIDAgMCAwczAgMCAwIDB6bTE2MCAwYzAgMCAwIDAgMCAwbC0uMi0uMmMtLjItLjItLjQtLjUtLjctLjljLS42LS44LTEuNi0yLTIuOC0zLjRjLTIuNS0yLjgtNi02LjYtMTAuMi0xMC4zYy04LjgtNy44LTE4LjgtMTQtMjcuNy0xNHMtMTguOSA2LjItMjcuNyAxNGMtNC4yIDMuNy03LjcgNy41LTEwLjIgMTAuM2MtMS4yIDEuNC0yLjIgMi42LTIuOCAzLjRjLS4zIC40LS42IC43LS43IC45bC0uMiAuMmMwIDAgMCAwIDAgMGMwIDAgMCAwIDAgMHMwIDAgMCAwYy0yLjEgMi44LTUuNyAzLjktOC45IDIuOHMtNS41LTQuMS01LjUtNy42YzAtMTcuOSA2LjctMzUuNiAxNi42LTQ4LjhjOS44LTEzIDIzLjktMjMuMiAzOS40LTIzLjJzMjkuNiAxMC4yIDM5LjQgMjMuMmM5LjkgMTMuMiAxNi42IDMwLjkgMTYuNiA0OC44YzAgMy40LTIuMiA2LjUtNS41IDcuNnMtNi45IDAtOC45LTIuOGMwIDAgMCAwIDAgMHMwIDAgMCAwczAgMCAwIDB6XCJdXG59O1xuY29uc3QgZmFMYXVnaEJlYW0gPSBmYUZhY2VMYXVnaEJlYW07XG5jb25zdCBmYUhlbGljb3B0ZXJTeW1ib2wgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGVsaWNvcHRlci1zeW1ib2wnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImU1MDJcIiwgXCJNNDQ1LjMgMjI0bDY0LjcgMEM0OTUuNiAxMDguMiA0MDMuOCAxNi40IDI4OCAybDAgNjQuN0MzNjguNCA4MC4xIDQzMS45IDE0My42IDQ0NS4zIDIyNHpNNTEwIDI4OGwtNjQuNyAwQzQzMS45IDM2OC40IDM2OC40IDQzMS45IDI4OCA0NDUuM2wwIDY0LjdjMTE1LjgtMTQuNCAyMDcuNi0xMDYuMiAyMjItMjIyek0yIDI4OEMxNi40IDQwMy44IDEwOC4yIDQ5NS42IDIyNCA1MTBsMC02NC43QzE0My42IDQzMS45IDgwLjEgMzY4LjQgNjYuNyAyODhMMiAyODh6bTAtNjRsNjQuNyAwQzgwLjEgMTQzLjYgMTQzLjYgODAuMSAyMjQgNjYuN0wyMjQgMkMxMDguMiAxNi40IDE2LjQgMTA4LjIgMiAyMjR6bTIwNi02NGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMmwwIDE5MmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtNjQgOTYgMCAwIDY0YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0xOTJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJsMCA2NC05NiAwIDAtNjR6XCJdXG59O1xuY29uc3QgZmFVbml2ZXJzYWxBY2Nlc3MgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndW5pdmVyc2FsLWFjY2VzcycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjI5YVwiLCBcIk0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6bTE2MS41LTg2LjFjLTEyLjItNS4yLTI2LjMgLjQtMzEuNSAxMi42cy40IDI2LjMgMTIuNiAzMS41bDExLjkgNS4xYzE3LjMgNy40IDM1LjIgMTIuOSA1My42IDE2LjNsMCA1MC4xYzAgNC4zLS43IDguNi0yLjEgMTIuNmwtMjguNyA4Ni4xYy00LjIgMTIuNiAyLjYgMjYuMiAxNS4yIDMwLjRzMjYuMi0yLjYgMzAuNC0xNS4ybDI0LjQtNzMuMmMxLjMtMy44IDQuOC02LjQgOC44LTYuNHM3LjYgMi42IDguOCA2LjRsMjQuNCA3My4yYzQuMiAxMi42IDE3LjggMTkuNCAzMC40IDE1LjJzMTkuNC0xNy44IDE1LjItMzAuNGwtMjguNy04Ni4xYy0xLjQtNC4xLTIuMS04LjMtMi4xLTEyLjZsMC01MC4xYzE4LjQtMy41IDM2LjMtOC45IDUzLjYtMTYuM2wxMS45LTUuMWMxMi4yLTUuMiAxNy44LTE5LjMgMTIuNi0zMS41cy0xOS4zLTE3LjgtMzEuNS0xMi42TDMzOC43IDE3NWMtMjYuMSAxMS4yLTU0LjIgMTctODIuNyAxN3MtNTYuNS01LjgtODIuNy0xN2wtMTEuOS01LjF6TTI1NiAxNjBhNDAgNDAgMCAxIDAgMC04MCA0MCA0MCAwIDEgMCAwIDgwelwiXVxufTtcbmNvbnN0IGZhQ2lyY2xlQ2hldnJvblVwID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NpcmNsZS1jaGV2cm9uLXVwJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXCJjaGV2cm9uLWNpcmNsZS11cFwiXSwgXCJmMTM5XCIsIFwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0zNzcgMjcxYzkuNCA5LjQgOS40IDI0LjYgMCAzMy45cy0yNC42IDkuNC0zMy45IDBsLTg3LTg3LTg3IDg3Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45TDIzOSAxNjdjOS40LTkuNCAyNC42LTkuNCAzMy45IDBMMzc3IDI3MXpcIl1cbn07XG5jb25zdCBmYUNoZXZyb25DaXJjbGVVcCA9IGZhQ2lyY2xlQ2hldnJvblVwO1xuY29uc3QgZmFMYXJpU2lnbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdsYXJpLXNpZ24nLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImUxYzhcIiwgXCJNMTQ0IDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgMzIuN2M1LjMtLjQgMTAuNi0uNyAxNi0uN3MxMC43IC4yIDE2IC43TDIwOCA2NGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMybDAgNDkuNGM1NC45IDI1LjIgOTUuOCA3NS41IDEwOC4yIDEzNi4yYzMuNSAxNy4zLTcuNyAzNC4yLTI1IDM3LjdzLTM0LjItNy43LTM3LjctMjVjLTYuMS0yOS45LTIyLjUtNTUuOS00NS40LTc0LjNsMCA2Ny45YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtOTVjLTUuMi0uNy0xMC42LTEtMTYtMXMtMTAuOCAuMy0xNiAxbDAgOTVjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC02Ny45QzgyLjcgMjExLjUgNjQgMjQ3LjYgNjQgMjg4YzAgNzAuNyA1Ny4zIDEyOCAxMjggMTI4bDE2MCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC0xNjAgMEwzMiA0ODBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJsMTYuOSAwQzE4LjUgMzgyIDAgMzM3LjIgMCAyODhjMC03Ny41IDQ1LjktMTQ0LjMgMTEyLTE3NC42TDExMiA2NGMwLTE3LjcgMTQuMy0zMiAzMi0zMnpcIl1cbn07XG5jb25zdCBmYVZvbGNhbm8gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndm9sY2FubycsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyNzc1NV0sIFwiZjc3MFwiLCBcIk0xNjAgMTQ0Yy0zNS4zIDAtNjQtMjguNy02NC02NHMyOC43LTY0IDY0LTY0YzE1LjcgMCAzMCA1LjYgNDEuMiAxNUMyMTIuNCAxMi40IDIzMi43IDAgMjU2IDBzNDMuNiAxMi40IDU0LjggMzFDMzIyIDIxLjYgMzM2LjMgMTYgMzUyIDE2YzM1LjMgMCA2NCAyOC43IDY0IDY0cy0yOC43IDY0LTY0IDY0Yy0xNC43IDAtMjguMy01LTM5LjEtMTMuM2wtMzIgNDhDMjc1LjMgMTg3IDI2NiAxOTIgMjU2IDE5MnMtMTkuMy01LTI0LjktMTMuM2wtMzItNDhDMTg4LjMgMTM5IDE3NC43IDE0NCAxNjAgMTQ0ek0xNDQgMzUybDQ4LjQtMjQuMmMxMC4yLTUuMSAyMS42LTcuOCAzMy03LjhjMTkuNiAwIDM4LjQgNy44IDUyLjIgMjEuNmwzMi41IDMyLjVjNi4zIDYuMyAxNC45IDkuOSAyMy44IDkuOWMxMS4zIDAgMjEuOC01LjYgMjgtMTVsOS43LTE0LjYtNTguOS02Ni4zYy05LjEtMTAuMi0yMi4yLTE2LjEtMzUuOS0xNi4xbC00MS44IDBjLTEzLjcgMC0yNi44IDUuOS0zNS45IDE2LjFsLTU5LjkgNjcuNEwxNDQgMzUyem0xOS40LTk1LjhjMTguMi0yMC41IDQ0LjMtMzIuMiA3MS44LTMyLjJsNDEuOCAwYzI3LjQgMCA1My41IDExLjcgNzEuOCAzMi4ybDE1MC4yIDE2OWM4LjUgOS41IDEzLjIgMjEuOSAxMy4yIDM0LjdjMCAyOC44LTIzLjQgNTIuMi01Mi4yIDUyLjJMNTIuMiA1MTJDMjMuNCA1MTIgMCA0ODguNiAwIDQ1OS44YzAtMTIuOCA0LjctMjUuMSAxMy4yLTM0LjdsMTUwLjItMTY5elwiXVxufTtcbmNvbnN0IGZhUGVyc29uV2Fsa2luZ0Rhc2hlZExpbmVBcnJvd1JpZ2h0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BlcnNvbi13YWxraW5nLWRhc2hlZC1saW5lLWFycm93LXJpZ2h0JyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlNTUzXCIsIFwiTTIwOCA5NmE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6TTEyMy43IDIwMC41YzEtLjQgMS45LS44IDIuOS0xLjJsLTE2LjkgNjMuNWMtNS42IDIxLjEtLjEgNDMuNiAxNC43IDU5LjdsNzAuNyA3Ny4xIDIyIDg4LjFjNC4zIDE3LjEgMjEuNyAyNy42IDM4LjggMjMuM3MyNy42LTIxLjcgMjMuMy0zOC44bC0yMy05Mi4xYy0xLjktNy44LTUuOC0xNC45LTExLjItMjAuOGwtNDkuNS01NCAxOS4zLTY1LjUgOS42IDIzYzQuNCAxMC42IDEyLjUgMTkuMyAyMi44IDI0LjVsMjYuNyAxMy4zYzE1LjggNy45IDM1IDEuNSA0Mi45LTE0LjNzMS41LTM1LTE0LjMtNDIuOUwyODEgMjMyLjdsLTE1LjMtMzYuOEMyNDguNSAxNTQuOCAyMDguMyAxMjggMTYzLjcgMTI4Yy0yMi44IDAtNDUuMyA0LjgtNjYuMSAxNGwtOCAzLjVjLTMyLjkgMTQuNi01OC4xIDQyLjQtNjkuNCA3Ni41bC0yLjYgNy44Yy01LjYgMTYuOCAzLjUgMzQuOSAyMC4yIDQwLjVzMzQuOS0zLjUgNDAuNS0yMC4ybDIuNi03LjhjNS43LTE3LjEgMTguMy0zMC45IDM0LjctMzguMmw4LTMuNXptLTMwIDEzNS4xTDY4LjcgMzk4IDkuNCA0NTcuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMEwxMTYuMyA0NDFjNC42LTQuNiA4LjItMTAuMSAxMC42LTE2LjFsMTQuNS0zNi4yLTQwLjctNDQuNGMtMi41LTIuNy00LjgtNS42LTctOC42ek01NTAuNiAxNTMuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNMNTMwLjcgMjI0IDM4NCAyMjRjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsMTQ2LjcgMC0yNS40IDI1LjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBsODAtODBjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNsLTgwLTgwek0zOTIgMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRsMCA0OGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0bDAtNDhjMC0xMy4zLTEwLjctMjQtMjQtMjR6bTI0IDE1MmMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNGwwIDE2YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRsMC0xNnpNMzkyIDMyMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRsMCAxNmMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0bDAtMTZjMC0xMy4zLTEwLjctMjQtMjQtMjR6bTI0IDEyMGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNGwwIDQ4YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRsMC00OHpcIl1cbn07XG5jb25zdCBmYVN0ZXJsaW5nU2lnbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzdGVybGluZy1zaWduJyxcbiAgaWNvbjogWzMyMCwgNTEyLCBbMTYzLCBcImdicFwiLCBcInBvdW5kLXNpZ25cIl0sIFwiZjE1NFwiLCBcIk0xMTIgMTYwLjRjMC0zNS41IDI4LjgtNjQuNCA2NC40LTY0LjRjNi45IDAgMTMuOCAxLjEgMjAuNCAzLjNsODEuMiAyNy4xYzE2LjggNS42IDM0LjktMy41IDQwLjUtMjAuMnMtMy41LTM0LjktMjAuMi00MC41TDIxNyAzOC42Yy0xMy4xLTQuNC0yNi44LTYuNi00MC42LTYuNkMxMDUuNSAzMiA0OCA4OS41IDQ4IDE2MC40TDQ4IDIyNGwtMTYgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwxNiAwIDAgNDQuNWMwIDE3LjQtNC43IDM0LjUtMTMuNyA0OS40TDQuNiA0MzEuNWMtNS45IDkuOS02LjEgMjIuMi0uNCAzMi4yUzIwLjUgNDgwIDMyIDQ4MGwyNTYgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkw4OC41IDQxNmwuNy0xLjFDMTA0LjEgMzkwIDExMiAzNjEuNSAxMTIgMzMyLjVsMC00NC41IDExMiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC0xMTIgMCAwLTYzLjZ6XCJdXG59O1xuY29uc3QgZmFHYnAgPSBmYVN0ZXJsaW5nU2lnbjtcbmNvbnN0IGZhUG91bmRTaWduID0gZmFTdGVybGluZ1NpZ247XG5jb25zdCBmYVZpcnVzZXMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndmlydXNlcycsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTA3NlwiLCBcIk0xOTIgMGMxMy4zIDAgMjQgMTAuNyAyNCAyNGwwIDEzLjVjMCAzNS42IDQzLjEgNTMuNSA2OC4zIDI4LjNsOS41LTkuNWM5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjlsLTkuNSA5LjVDMjkzIDEyNC45IDMxMC45IDE2OCAzNDYuNSAxNjhsMTMuNSAwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0bC0xMy41IDBjLTM1LjYgMC01My41IDQzLjEtMjguMyA2OC4zbDkuNSA5LjVjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMGwtOS41LTkuNUMyNTkuMSAyOTMgMjE2IDMxMC45IDIxNiAzNDYuNWwwIDEzLjVjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRsMC0xMy41YzAtMzUuNi00My4xLTUzLjUtNjguMy0yOC4zbC05LjUgOS41Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45bDkuNS05LjVDOTEgMjU5LjEgNzMuMSAyMTYgMzcuNSAyMTZMMjQgMjE2Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0bDEzLjUgMGMzNS42IDAgNTMuNS00My4xIDI4LjMtNjguM2wtOS41LTkuNWMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwbDkuNSA5LjVDMTI0LjkgOTEgMTY4IDczLjEgMTY4IDM3LjVMMTY4IDI0YzAtMTMuMyAxMC43LTI0IDI0LTI0em00OCAyMjRhMTYgMTYgMCAxIDAgMC0zMiAxNiAxNiAwIDEgMCAwIDMyem0tNDgtNjRhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHptMzIwIDgwYzAgMzMgMzkuOSA0OS41IDYzLjIgMjYuMmM2LjItNi4yIDE2LjQtNi4yIDIyLjYgMHM2LjIgMTYuNCAwIDIyLjZDNTc0LjUgMzEyLjEgNTkxIDM1MiA2MjQgMzUyYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2Yy0zMyAwLTQ5LjUgMzkuOS0yNi4yIDYzLjJjNi4yIDYuMiA2LjIgMTYuNCAwIDIyLjZzLTE2LjQgNi4yLTIyLjYgMEM1NTEuOSA0NDYuNSA1MTIgNDYzIDUxMiA0OTZjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZjMC0zMy0zOS45LTQ5LjUtNjMuMi0yNi4yYy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMHMtNi4yLTE2LjQgMC0yMi42QzQxNy41IDQyMy45IDQwMSAzODQgMzY4IDM4NGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmMzMyAwIDQ5LjUtMzkuOSAyNi4yLTYzLjJjLTYuMi02LjItNi4yLTE2LjQgMC0yMi42czE2LjQtNi4yIDIyLjYgMEM0NDAuMSAyODkuNSA0ODAgMjczIDQ4MCAyNDBjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnptMCAxMTJhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHpcIl1cbn07XG5jb25zdCBmYVNxdWFyZVBlcnNvbkNvbmZpbmVkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NxdWFyZS1wZXJzb24tY29uZmluZWQnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImU1NzdcIiwgXCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NkwwIDQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NGwzMjAgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTMyMGMwLTM1LjMtMjguNy02NC02NC02NEw2NCAzMnptOTYgMTEyYTQ4IDQ4IDAgMSAxIDk2IDAgNDggNDggMCAxIDEgLTk2IDB6bTgwIDEwNGMwLTMwLjkgMjUuMS01NiA1Ni01NnM1NiAyNS4xIDU2IDU2bDAgMTAyLjFjMCAzNi40LTI5LjUgNjUuOS02NS45IDY1LjljLTE3LjUgMC0zNC4zLTYuOS00Ni42LTE5LjNMMTg0LjggMzQybC0yOC4xIDU2LjNjLTcuOSAxNS44LTI3LjEgMjIuMi00Mi45IDE0LjNzLTIyLjItMjcuMS0xNC4zLTQyLjlsNDgtOTZjNC42LTkuMiAxMy4zLTE1LjYgMjMuNS0xNy4zczIwLjUgMS43IDI3LjggOUwyNDAgMzA2LjdsMC01OC43elwiXVxufTtcbmNvbnN0IGZhVXNlclRpZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd1c2VyLXRpZScsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjUwOFwiLCBcIk05NiAxMjhhMTI4IDEyOCAwIDEgMCAyNTYgMEExMjggMTI4IDAgMSAwIDk2IDEyOHptOTQuNSAyMDAuMmwxOC42IDMxTDE3NS44IDQ4My4xbC0zNi0xNDYuOWMtMi04LjEtOS44LTEzLjQtMTcuOS0xMS4zQzUxLjkgMzQyLjQgMCA0MDUuOCAwIDQ4MS4zYzAgMTcgMTMuOCAzMC43IDMwLjcgMzAuN2wxMzEuNyAwYzAgMCAwIDAgLjEgMGw1LjUgMCAxMTIgMCA1LjUgMGMwIDAgMCAwIC4xIDBsMTMxLjcgMGMxNyAwIDMwLjctMTMuOCAzMC43LTMwLjdjMC03NS41LTUxLjktMTM4LjktMTIxLjktMTU2LjRjLTguMS0yLTE1LjkgMy4zLTE3LjkgMTEuM2wtMzYgMTQ2LjlMMjM4LjkgMzU5LjJsMTguNi0zMWM2LjQtMTAuNy0xLjMtMjQuMi0xMy43LTI0LjJMMjI0IDMwNGwtMTkuNyAwYy0xMi40IDAtMjAuMSAxMy42LTEzLjcgMjQuMnpcIl1cbn07XG5jb25zdCBmYUFycm93RG93bkxvbmcgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYXJyb3ctZG93bi1sb25nJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXCJsb25nLWFycm93LWRvd25cIl0sIFwiZjE3NVwiLCBcIk0xNjkuNCA1MDIuNmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGwxMjgtMTI4YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwTDIyNCA0MDIuNyAyMjQgMzJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJsMCAzNzAuN0w4Ni42IDMyOS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM2wxMjggMTI4elwiXVxufTtcbmNvbnN0IGZhTG9uZ0Fycm93RG93biA9IGZhQXJyb3dEb3duTG9uZztcbmNvbnN0IGZhVGVudEFycm93RG93blRvTGluZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0ZW50LWFycm93LWRvd24tdG8tbGluZScsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTU3ZVwiLCBcIk0yNDEuOCAxMTEuOWM4LjkgOS45IDguMSAyNS0xLjggMzMuOWwtODAgNzJjLTkuMSA4LjItMjMgOC4yLTMyLjEgMGwtODAtNzJjLTkuOS04LjktMTAuNy0yNC0xLjgtMzMuOXMyNC0xMC43IDMzLjktMS44bDM5LjkgMzZMMTIwIDI0YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjRsMCAxMjIuMSAzOS45LTM2YzkuOS04LjkgMjUtOC4xIDMzLjkgMS44em0xMjIuOCAyMi42YzExLjUtOC43IDI3LjMtOC43IDM4LjggMGwxNjggMTI4YzYuNiA1IDExIDEyLjUgMTIuMyAyMC43bDI0IDE2MCAuNyA0LjdjMTcuNSAuMiAzMS42IDE0LjQgMzEuNiAzMmMwIDE3LjctMTQuMyAzMi0zMiAzMkwzMiA1MTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJsMTI3LjYgMCAuNy00LjcgMjQtMTYwYzEuMi04LjIgNS42LTE1LjcgMTIuMy0yMC43bDE2OC0xMjh6TTM4NCA0NDhsODAgMEw0MDIuNyAzMjUuNWMtMS43LTMuNC01LjEtNS41LTguOC01LjVjLTUuNSAwLTkuOSA0LjQtOS45IDkuOUwzODQgNDQ4elwiXVxufTtcbmNvbnN0IGZhQ2VydGlmaWNhdGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2VydGlmaWNhdGUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwYTNcIiwgXCJNMjExIDcuM0MyMDUgMSAxOTYtMS40IDE4Ny42IC44cy0xNC45IDguOS0xNy4xIDE3LjNMMTU0LjcgODAuNmwtNjItMTcuNWMtOC40LTIuNC0xNy40IDAtMjMuNSA2LjFzLTguNSAxNS4xLTYuMSAyMy41bDE3LjUgNjJMMTguMSAxNzAuNmMtOC40IDIuMS0xNSA4LjctMTcuMyAxNy4xUzEgMjA1IDcuMyAyMTFsNDYuMiA0NUw3LjMgMzAxQzEgMzA3LTEuNCAzMTYgLjggMzI0LjRzOC45IDE0LjkgMTcuMyAxNy4xbDYyLjUgMTUuOC0xNy41IDYyYy0yLjQgOC40IDAgMTcuNCA2LjEgMjMuNXMxNS4xIDguNSAyMy41IDYuMWw2Mi0xNy41IDE1LjggNjIuNWMyLjEgOC40IDguNyAxNSAxNy4xIDE3LjNzMTcuMy0uMiAyMy40LTYuNGw0NS00Ni4yIDQ1IDQ2LjJjNi4xIDYuMiAxNSA4LjcgMjMuNCA2LjRzMTQuOS04LjkgMTcuMS0xNy4zbDE1LjgtNjIuNSA2MiAxNy41YzguNCAyLjQgMTcuNCAwIDIzLjUtNi4xczguNS0xNS4xIDYuMS0yMy41bC0xNy41LTYyIDYyLjUtMTUuOGM4LjQtMi4xIDE1LTguNyAxNy4zLTE3LjFzLS4yLTE3LjQtNi40LTIzLjRsLTQ2LjItNDUgNDYuMi00NWM2LjItNi4xIDguNy0xNSA2LjQtMjMuNHMtOC45LTE0LjktMTcuMy0xNy4xbC02Mi41LTE1LjggMTcuNS02MmMyLjQtOC40IDAtMTcuNC02LjEtMjMuNXMtMTUuMS04LjUtMjMuNS02LjFsLTYyIDE3LjVMMzQxLjQgMTguMWMtMi4xLTguNC04LjctMTUtMTcuMS0xNy4zUzMwNyAxIDMwMSA3LjNMMjU2IDUzLjUgMjExIDcuM3pcIl1cbn07XG5jb25zdCBmYVJlcGx5QWxsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3JlcGx5LWFsbCcsXG4gIGljb246IFs1NzYsIDUxMiwgW1wibWFpbC1yZXBseS1hbGxcIl0sIFwiZjEyMlwiLCBcIk0yMDkuNCAzOS41Yy05LjEtOS42LTI0LjMtMTAtMzMuOS0uOUwzMy44IDE3My4yYy0xOS45IDE4LjktMTkuOSA1MC43IDAgNjkuNkwxNzUuNSAzNzcuNGM5LjYgOS4xIDI0LjggOC43IDMzLjktLjlzOC43LTI0LjgtLjktMzMuOUw2Ni44IDIwOCAyMDguNSA3My40YzkuNi05LjEgMTAtMjQuMyAuOS0zMy45ek0zNTIgNjRjMC0xMi42LTcuNC0yNC4xLTE5LTI5LjJzLTI1LTMtMzQuNCA1LjRsLTE2MCAxNDRjLTYuNyA2LjEtMTAuNiAxNC43LTEwLjYgMjMuOHMzLjkgMTcuNyAxMC42IDIzLjhsMTYwIDE0NGM5LjQgOC41IDIyLjkgMTAuNiAzNC40IDUuNHMxOS0xNi42IDE5LTI5LjJsMC02NCAzMiAwYzUzIDAgOTYgNDMgOTYgOTZjMCAzMC40LTEyLjggNDcuOS0yMi4yIDU2LjdjLTUuNSA1LjEtOS44IDEyLTkuOCAxOS41YzAgMTAuOSA4LjggMTkuNyAxOS43IDE5LjdjMi44IDAgNS42LS42IDguMS0xLjlDNDk0LjUgNDY3LjkgNTc2IDQxNy4zIDU3NiAzMDRjMC05Ny4yLTc4LjgtMTc2LTE3Ni0xNzZsLTQ4IDAgMC02NHpcIl1cbn07XG5jb25zdCBmYU1haWxSZXBseUFsbCA9IGZhUmVwbHlBbGw7XG5jb25zdCBmYVN1aXRjYXNlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3N1aXRjYXNlJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI5NTIzXSwgXCJmMGYyXCIsIFwiTTE3NiA1NmwwIDQwIDE2MCAwIDAtNDBjMC00LjQtMy42LTgtOC04TDE4NCA0OGMtNC40IDAtOCAzLjYtOCA4ek0xMjggOTZsMC00MGMwLTMwLjkgMjUuMS01NiA1Ni01NkwzMjggMGMzMC45IDAgNTYgMjUuMSA1NiA1NmwwIDQwIDAgMzIgMCAzNTItMjU2IDAgMC0zNTIgMC0zMnpNNjQgOTZsMzIgMCAwIDM4NC0zMiAwYy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDE2MGMwLTM1LjMgMjguNy02NCA2NC02NHpNNDQ4IDQ4MGwtMzIgMCAwLTM4NCAzMiAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMjU2YzAgMzUuMy0yOC43IDY0LTY0IDY0elwiXVxufTtcbmNvbnN0IGZhUGVyc29uU2thdGluZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwZXJzb24tc2thdGluZycsXG4gIGljb246IFs0NDgsIDUxMiwgW1wic2thdGluZ1wiXSwgXCJmN2M1XCIsIFwiTTM1MiA0OGE0OCA0OCAwIDEgMSA5NiAwIDQ4IDQ4IDAgMSAxIC05NiAwek0xMjggMTI4YzAtMTcuNyAxNC4zLTMyIDMyLTMybDE1OS40IDBjNDMuNiAwIDY0LjYgNTMuNCAzMi44IDgzLjFsLTc0LjQgNjkuNCA2MC4yIDYwLjJjOSA5IDE0LjEgMjEuMiAxNC4xIDMzLjlsMCA3My40YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtNjYuNy03Ny45LTc3LjhjLTI2LjYtMjYuNi0yNC42LTcwLjMgNC4zLTk0LjRsMjAuNC0xN0wxNjAgMTYwYy0xNy43IDAtMzItMTQuMy0zMi0zMnpNODEuNCAzNTMuNGw4Ni45LTg2LjljNC42IDEwIDExIDE5LjMgMTkuMyAyNy41bDIxLjggMjEuOC04Mi43IDgyLjdjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwcy0xMi41LTMyLjggMC00NS4zem0zMjIuNSA5NS4xYzguNiAyLjEgMTMuOCAxMC44IDExLjYgMTkuNGwtLjQgMS43Yy02LjIgMjQuOS0yOC42IDQyLjQtNTQuMyA0Mi40TDI3MiA1MTJjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZsODguOCAwYzExIDAgMjAuNi03LjUgMjMuMy0xOC4ybC40LTEuN2MyLjEtOC42IDEwLjgtMTMuOCAxOS40LTExLjZ6TTEzNS4yIDQ3OC4zbC02LjIgMy4xYy0yMS42IDEwLjgtNDcuNiA2LjYtNjQuNi0xMC41TDQuNyA0MTEuM2MtNi4yLTYuMi02LjItMTYuNCAwLTIyLjZzMTYuNC02LjIgMjIuNiAwbDU5LjYgNTkuNmM3LjMgNy4zIDE4LjUgOS4xIDI3LjcgNC41bDYuMi0zLjFjNy45LTQgMTcuNS0uNyAyMS41IDcuMnMuNyAxNy41LTcuMiAyMS41elwiXVxufTtcbmNvbnN0IGZhU2thdGluZyA9IGZhUGVyc29uU2thdGluZztcbmNvbnN0IGZhRmlsdGVyQ2lyY2xlRG9sbGFyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZpbHRlci1jaXJjbGUtZG9sbGFyJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXCJmdW5uZWwtZG9sbGFyXCJdLCBcImY2NjJcIiwgXCJNMy45IDIyLjlDMTAuNSA4LjkgMjQuNSAwIDQwIDBMNDcyIDBjMTUuNSAwIDI5LjUgOC45IDM2LjEgMjIuOXM0LjYgMzAuNS01LjIgNDIuNUwzOTYuNCAxOTUuNkMzMTYuMiAyMTIuMSAyNTYgMjgzIDI1NiAzNjhjMCAyNy40IDYuMyA1My40IDE3LjUgNzYuNWMtMS42LS44LTMuMi0xLjgtNC43LTIuOWwtNjQtNDhjLTguMS02LTEyLjgtMTUuNS0xMi44LTI1LjZsMC03OS4xTDkgNjUuM0MtLjcgNTMuNC0yLjggMzYuOCAzLjkgMjIuOXpNMjg4IDM2OGExNDQgMTQ0IDAgMSAxIDI4OCAwIDE0NCAxNDQgMCAxIDEgLTI4OCAwem0xMjAuOC0zMi42Yy42LS45IDEuOC0yLjEgNC4yLTMuNGM1LjEtMi43IDEyLjUtNC4xIDE4LjctNGM4LjIgLjEgMTcuMSAxLjggMjYuNCA0LjFjOC42IDIuMSAxNy4zLTMuMSAxOS40LTExLjdzLTMuMS0xNy4zLTExLjctMTkuNGMtNS42LTEuNC0xMS42LTIuNy0xNy45LTMuN2wwLTkuNGMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNmwwIDkuNWMtNi4xIDEuMi0xMi4zIDMuMi0xOCA2LjNjLTExLjggNi4zLTIzIDE4LjQtMjEuOCAzNy4yYzEgMTYgMTEuNyAyNS4zIDIxLjYgMzAuN2M4LjggNC43IDE5LjcgNy44IDI4LjYgMTAuM2wxLjggLjVjMTAuMyAyLjkgMTcuOSA1LjIgMjMuMiA4LjNjNC41IDIuNyA0LjcgNC4yIDQuNyA1LjZjLjEgMi40LS41IDMuNy0xIDQuNWMtLjYgMS0xLjggMi4yLTQgMy4zYy00LjcgMi41LTExLjggMy44LTE4LjUgMy42Yy05LjUtLjMtMTguNS0zLjEtMjkuOS02LjhjLTEuOS0uNi0zLjgtMS4yLTUuOC0xLjhjLTguNC0yLjYtMTcuNCAyLjEtMjAgMTAuNXMyLjEgMTcuNCAxMC41IDIwYzEuNiAuNSAzLjMgMSA1IDEuNmMwIDAgMCAwIDAgMHMwIDAgMCAwYzcgMi4zIDE1LjEgNC44IDIzLjcgNi42bDAgMTEuNGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2bDAtMTAuOGM2LjItMS4xIDEyLjUtMy4xIDE4LjMtNi4yYzEyLjEtNi41IDIyLjMtMTguNyAyMS43LTM2LjljLS41LTE2LjItMTAuMy0yNi4zLTIwLjUtMzIuM2MtOS40LTUuNi0yMS4yLTguOS0zMC41LTExLjVsLS4yIDBjLTEwLjQtMi45LTE4LjMtNS4yLTIzLjktOC4yYy00LjgtMi42LTQuOC00LTQuOC00LjVjMCAwIDAgMCAwLS4xYy0uMS0xLjkgLjMtMi45IC44LTMuNnpcIl1cbn07XG5jb25zdCBmYUZ1bm5lbERvbGxhciA9IGZhRmlsdGVyQ2lyY2xlRG9sbGFyO1xuY29uc3QgZmFDYW1lcmFSZXRybyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjYW1lcmEtcmV0cm8nLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjgyNDddLCBcImYwODNcIiwgXCJNMjIwLjYgMTIxLjJMMjcxLjEgOTYgNDQ4IDk2bDAgOTYtMTE0LjggMGMtMjEuOS0xNS4xLTQ4LjUtMjQtNzcuMi0yNHMtNTUuMiA4LjktNzcuMiAyNEw2NCAxOTJsMC02NCAxMjggMGM5LjkgMCAxOS43LTIuMyAyOC42LTYuOHpNMCAxMjhMMCA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzg0IDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0zMjBjMC0zNS4zLTI4LjctNjQtNjQtNjRMMjcxLjEgMzJjLTkuOSAwLTE5LjcgMi4zLTI4LjYgNi44TDE5MiA2NGwtMzIgMCAwLTE2YzAtOC44LTcuMi0xNi0xNi0xNkw4MCAzMmMtOC44IDAtMTYgNy4yLTE2IDE2bDAgMTZDMjguNyA2NCAwIDkyLjcgMCAxMjh6TTE2OCAzMDRhODggODggMCAxIDEgMTc2IDAgODggODggMCAxIDEgLTE3NiAwelwiXVxufTtcbmNvbnN0IGZhQ2lyY2xlQXJyb3dEb3duID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NpcmNsZS1hcnJvdy1kb3duJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXCJhcnJvdy1jaXJjbGUtZG93blwiXSwgXCJmMGFiXCIsIFwiTTI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMHpNMTI3IDI5N2MtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwbDcxIDcxTDIzMiAxMjBjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNGwwIDIxNC4xIDcxLTcxYzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOUwyNzMgNDA5Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMEwxMjcgMjk3elwiXVxufTtcbmNvbnN0IGZhQXJyb3dDaXJjbGVEb3duID0gZmFDaXJjbGVBcnJvd0Rvd247XG5jb25zdCBmYUZpbGVJbXBvcnQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmlsZS1pbXBvcnQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtcImFycm93LXJpZ2h0LXRvLWZpbGVcIl0sIFwiZjU2ZlwiLCBcIk0xMjggNjRjMC0zNS4zIDI4LjctNjQgNjQtNjRMMzUyIDBsMCAxMjhjMCAxNy43IDE0LjMgMzIgMzIgMzJsMTI4IDAgMCAyODhjMCAzNS4zLTI4LjcgNjQtNjQgNjRsLTI1NiAwYy0zNS4zIDAtNjQtMjguNy02NC02NGwwLTExMiAxNzQuMSAwLTM5IDM5Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOXMyNC42IDkuNCAzMy45IDBsODAtODBjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlsLTgwLTgwYy05LjQtOS40LTI0LjYtOS40LTMzLjkgMHMtOS40IDI0LjYgMCAzMy45bDM5IDM5TDEyOCAyODhsMC0yMjR6bTAgMjI0bDAgNDhMMjQgMzM2Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0bDEwNCAwek01MTIgMTI4bC0xMjggMEwzODQgMCA1MTIgMTI4elwiXVxufTtcbmNvbnN0IGZhQXJyb3dSaWdodFRvRmlsZSA9IGZhRmlsZUltcG9ydDtcbmNvbnN0IGZhU3F1YXJlQXJyb3dVcFJpZ2h0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NxdWFyZS1hcnJvdy11cC1yaWdodCcsXG4gIGljb246IFs0NDgsIDUxMiwgW1wiZXh0ZXJuYWwtbGluay1zcXVhcmVcIl0sIFwiZjE0Y1wiLCBcIk0zODQgMzJjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCAzMjBjMCAzNS4zLTI4LjcgNjQtNjQgNjRMNjQgNDgwYy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMybDMyMCAwek0xNjAgMTQ0Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0bDk0LjEgMEwxMTkgMzI3Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOXMyNC42IDkuNCAzMy45IDBsMTM1LTEzNUwyODggMzI4YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRsMC0xNjBjMC0xMy4zLTEwLjctMjQtMjQtMjRsLTE1MiAwelwiXVxufTtcbmNvbnN0IGZhRXh0ZXJuYWxMaW5rU3F1YXJlID0gZmFTcXVhcmVBcnJvd1VwUmlnaHQ7XG5jb25zdCBmYUJveE9wZW4gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYm94LW9wZW4nLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY0OWVcIiwgXCJNNTguOSA0Mi4xYzMtNi4xIDkuNi05LjYgMTYuMy04LjdMMzIwIDY0IDU2NC44IDMzLjRjNi43LS44IDEzLjMgMi43IDE2LjMgOC43bDQxLjcgODMuNGM5IDE3LjktLjYgMzkuNi0xOS44IDQ1LjFMNDM5LjYgMjE3LjNjLTEzLjkgNC0yOC44LTEuOS0zNi4yLTE0LjNMMzIwIDY0IDIzNi42IDIwM2MtNy40IDEyLjQtMjIuMyAxOC4zLTM2LjIgMTQuM0wzNy4xIDE3MC42Yy0xOS4zLTUuNS0yOC44LTI3LjItMTkuOC00NS4xTDU4LjkgNDIuMXpNMzIxLjEgMTI4bDU0LjkgOTEuNGMxNC45IDI0LjggNDQuNiAzNi42IDcyLjUgMjguNkw1NzYgMjExLjZsMCAxNjdjMCAyMi0xNSA0MS4yLTM2LjQgNDYuNmwtMjA0LjEgNTFjLTEwLjIgMi42LTIwLjkgMi42LTMxIDBsLTIwNC4xLTUxQzc5IDQxOS43IDY0IDQwMC41IDY0IDM3OC41bDAtMTY3TDE5MS42IDI0OGMyNy44IDggNTcuNi0zLjggNzIuNS0yOC42TDMxOC45IDEyOGwyLjIgMHpcIl1cbn07XG5jb25zdCBmYVNjcm9sbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzY3JvbGwnLFxuICBpY29uOiBbNTc2LCA1MTIsIFsxMjgyMjBdLCBcImY3MGVcIiwgXCJNMCA4MGwwIDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMybDE2IDAgNDggMCAwLTgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4UzAgNTMuNSAwIDgwek0xMTIgMzJjMTAgMTMuNCAxNiAzMCAxNiA0OGwwIDMwNGMwIDM1LjMgMjguNyA2NCA2NCA2NHM2NC0yOC43IDY0LTY0bDAtNS4zYzAtMzIuNCAyNi4zLTU4LjcgNTguNy01OC43TDQ4MCAzMjBsMC0xOTJjMC01My00My05Ni05Ni05NkwxMTIgMzJ6TTQ2NCA0ODBjNjEuOSAwIDExMi01MC4xIDExMi0xMTJjMC04LjgtNy4yLTE2LTE2LTE2bC0yNDUuMyAwYy0xNC43IDAtMjYuNyAxMS45LTI2LjcgMjYuN2wwIDUuM2MwIDUzLTQzIDk2LTk2IDk2bDE3NiAwIDk2IDB6XCJdXG59O1xuY29uc3QgZmFTcGEgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3BhJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmNWJiXCIsIFwiTTE4My4xIDIzNS4zYzMzLjcgMjAuNyA2Mi45IDQ4LjEgODUuOCA4MC41YzcgOS45IDEzLjQgMjAuMyAxOS4xIDMxYzUuNy0xMC44IDEyLjEtMjEuMSAxOS4xLTMxYzIyLjktMzIuNCA1Mi4xLTU5LjggODUuOC04MC41QzQzNy42IDIwNy44IDQ5MC4xIDE5MiA1NDYgMTkybDkuOSAwYzExLjEgMCAyMC4xIDkgMjAuMSAyMC4xQzU3NiAzNjAuMSA0NTYuMSA0ODAgMzA4LjEgNDgwTDI4OCA0ODBsLTIwLjEgMEMxMTkuOSA0ODAgMCAzNjAuMSAwIDIxMi4xQzAgMjAxIDkgMTkyIDIwLjEgMTkybDkuOSAwYzU1LjkgMCAxMDguNCAxNS44IDE1My4xIDQzLjN6TTMwMS41IDM3LjZjMTUuNyAxNi45IDYxLjEgNzEuOCA4NC40IDE2NC42Yy0zOCAyMS42LTcxLjQgNTAuOC05Ny45IDg1LjZjLTI2LjUtMzQuOC01OS45LTYzLjktOTcuOS04NS42YzIzLjItOTIuOCA2OC42LTE0Ny43IDg0LjQtMTY0LjZDMjc4IDMzLjkgMjgyLjkgMzIgMjg4IDMyczEwIDEuOSAxMy41IDUuNnpcIl1cbn07XG5jb25zdCBmYUxvY2F0aW9uUGluTG9jayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdsb2NhdGlvbi1waW4tbG9jaycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZTUxZlwiLCBcIk0yMTUuNyA0OTkuMmMxMS0xMy44IDI1LjEtMzEuNyA0MC4zLTUyLjNsMC05NC44YzAtMjMuNyAxMi45LTQ0LjQgMzItNTUuNGwwLTI0LjZjMC01NS42IDQwLjUtMTAxLjcgOTMuNi0xMTAuNUMzNjcgNzAgMjg3LjcgMCAxOTIgMEM4NiAwIDAgODYgMCAxOTJjMCA4Ny40IDExNyAyNDMgMTY4LjMgMzA3LjJjMTIuMyAxNS4zIDM1LjEgMTUuMyA0Ny40IDB6TTE5MiAxMjhhNjQgNjQgMCAxIDEgMCAxMjggNjQgNjQgMCAxIDEgMC0xMjh6TTQwMCAyNDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCA0OC02NCAwIDAtNDhjMC0xNy43IDE0LjMtMzIgMzItMzJ6bS04MCAzMmwwIDQ4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMmwwIDEyOGMwIDE3LjcgMTQuMyAzMiAzMiAzMmwxNjAgMGMxNy43IDAgMzItMTQuMyAzMi0zMmwwLTEyOGMwLTE3LjctMTQuMy0zMi0zMi0zMmwwLTQ4YzAtNDQuMi0zNS44LTgwLTgwLTgwcy04MCAzNS44LTgwIDgwelwiXVxufTtcbmNvbnN0IGZhUGF1c2UgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGF1c2UnLFxuICBpY29uOiBbMzIwLCA1MTIsIFs5MjA4XSwgXCJmMDRjXCIsIFwiTTQ4IDY0QzIxLjUgNjQgMCA4NS41IDAgMTEyTDAgNDAwYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4bDMyIDBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhsMC0yODhjMC0yNi41LTIxLjUtNDgtNDgtNDhMNDggNjR6bTE5MiAwYy0yNi41IDAtNDggMjEuNS00OCA0OGwwIDI4OGMwIDI2LjUgMjEuNSA0OCA0OCA0OGwzMiAwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4bDAtMjg4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4bC0zMiAwelwiXVxufTtcbmNvbnN0IGZhSGlsbEF2YWxhbmNoZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoaWxsLWF2YWxhbmNoZScsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZTUwN1wiLCBcIk00MzkuNyA0MDEuOWMzNC4yIDIzLjEgODEuMSAxOS41IDExMS40LTEwLjhjMzQuNC0zNC40IDM0LjQtOTAuMSAwLTEyNC40Yy0yNy44LTI3LjgtNjkuNS0zMy4xLTEwMi42LTE2Yy0xMS44IDYuMS0xNi40IDIwLjYtMTAuMyAzMi4zczIwLjYgMTYuNCAzMi4zIDEwLjNjMTUuMS03LjggMzQtNS4zIDQ2LjYgNy4zYzE1LjYgMTUuNiAxNS42IDQwLjkgMCA1Ni42cy00MC45IDE1LjYtNTYuNiAwbC04MS43LTgxLjdDNDAxLjIgMjYxLjMgNDE2IDIzNi40IDQxNiAyMDhjMC0zMy45LTIxLjEtNjIuOS01MC45LTc0LjVjMS45LTYuOCAyLjktMTQgMi45LTIxLjVjMC00NC4yLTM1LjgtODAtODAtODBjLTI3LjMgMC01MS41IDEzLjctNjUuOSAzNC42QzIxNi4zIDQ2LjYgMTk3LjkgMzIgMTc2IDMyYy0yNi41IDAtNDggMjEuNS00OCA0OGMwIDQgLjUgNy45IDEuNCAxMS42TDQzOS43IDQwMS45ek00ODAgNjRhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHptMCAxMjhhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0ek02OC4zIDg3QzQzLjEgNjEuOCAwIDc5LjcgMCAxMTUuM0wwIDQzMmMwIDQ0LjIgMzUuOCA4MCA4MCA4MGwzMTYuNyAwYzM1LjYgMCA1My41LTQzLjEgMjguMy02OC4zTDY4LjMgODd6XCJdXG59O1xuY29uc3QgZmFUZW1wZXJhdHVyZUVtcHR5ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RlbXBlcmF0dXJlLWVtcHR5JyxcbiAgaWNvbjogWzMyMCwgNTEyLCBbXCJ0ZW1wZXJhdHVyZS0wXCIsIFwidGhlcm1vbWV0ZXItMFwiLCBcInRoZXJtb21ldGVyLWVtcHR5XCJdLCBcImYyY2JcIiwgXCJNMTEyIDExMmMwLTI2LjUgMjEuNS00OCA0OC00OHM0OCAyMS41IDQ4IDQ4bDAgMTY0LjVjMCAxNy4zIDcuMSAzMS45IDE1LjMgNDIuNUMyMzMuOCAzMzIuNiAyNDAgMzQ5LjUgMjQwIDM2OGMwIDQ0LjItMzUuOCA4MC04MCA4MHMtODAtMzUuOC04MC04MGMwLTE4LjUgNi4yLTM1LjQgMTYuNy00OC45YzguMi0xMC42IDE1LjMtMjUuMiAxNS4zLTQyLjVMMTEyIDExMnpNMTYwIDBDOTguMSAwIDQ4IDUwLjIgNDggMTEybDAgMTY0LjRjMCAuMS0uMSAuMy0uMiAuNmMtLjIgLjYtLjggMS42LTEuNyAyLjhDMjcuMiAzMDQuMiAxNiAzMzQuOCAxNiAzNjhjMCA3OS41IDY0LjUgMTQ0IDE0NCAxNDRzMTQ0LTY0LjUgMTQ0LTE0NGMwLTMzLjItMTEuMi02My44LTMwLjEtODguMWMtLjktMS4yLTEuNS0yLjItMS43LTIuOGMtLjEtLjMtLjItLjUtLjItLjZMMjcyIDExMkMyNzIgNTAuMiAyMjEuOSAwIDE2MCAwem0wIDQxNmE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6XCJdXG59O1xuY29uc3QgZmFUZW1wZXJhdHVyZTAgPSBmYVRlbXBlcmF0dXJlRW1wdHk7XG5jb25zdCBmYVRoZXJtb21ldGVyMCA9IGZhVGVtcGVyYXR1cmVFbXB0eTtcbmNvbnN0IGZhVGhlcm1vbWV0ZXJFbXB0eSA9IGZhVGVtcGVyYXR1cmVFbXB0eTtcbmNvbnN0IGZhQm9tYiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdib21iJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI4MTYzXSwgXCJmMWUyXCIsIFwiTTQ1OS4xIDUyLjRMNDQyLjYgNi41QzQ0MC43IDIuNiA0MzYuNSAwIDQzMi4xIDBzLTguNSAyLjYtMTAuNCA2LjVMNDA1LjIgNTIuNGwtNDYgMTYuOGMtNC4zIDEuNi03LjMgNS45LTcuMiAxMC40YzAgNC41IDMgOC43IDcuMiAxMC4ybDQ1LjcgMTYuOCAxNi44IDQ1LjhjMS41IDQuNCA1LjggNy41IDEwLjQgNy41czguOS0zLjEgMTAuNC03LjVsMTYuNS00NS44IDQ1LjctMTYuOGM0LjItMS41IDcuMi01LjcgNy4yLTEwLjJjMC00LjYtMy04LjktNy4yLTEwLjRMNDU5LjEgNTIuNHptLTEzMi40IDUzYy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMGwtMi45IDIuOUMyNTYuNSAxMDAuMyAyMzIuNyA5NiAyMDggOTZDOTMuMSA5NiAwIDE4OS4xIDAgMzA0UzkzLjEgNTEyIDIwOCA1MTJzMjA4LTkzLjEgMjA4LTIwOGMwLTI0LjctNC4zLTQ4LjUtMTIuMi03MC41bDIuOS0yLjljMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNsLTgwLTgwek0yMDAgMTkyYy01Ny40IDAtMTA0IDQ2LjYtMTA0IDEwNGwwIDhjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZsMC04YzAtNzUuMSA2MC45LTEzNiAxMzYtMTM2bDggMGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNmwtOCAwelwiXVxufTtcbmNvbnN0IGZhUmVnaXN0ZXJlZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdyZWdpc3RlcmVkJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTc0XSwgXCJmMjVkXCIsIFwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0xNjAgMTUyYzAtMTMuMyAxMC43LTI0IDI0LTI0bDg4IDBjNDQuMiAwIDgwIDM1LjggODAgODBjMCAyOC0xNC40IDUyLjctMzYuMyA2N2wzNC4xIDc1LjFjNS41IDEyLjEgLjEgMjYuMy0xMS45IDMxLjhzLTI2LjMgLjEtMzEuOC0xMS45TDI2OC45IDI4OCAyMDggMjg4bDAgNzJjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRsMC05NiAwLTExMnptNDggODhsNjQgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtNjQgMCAwIDY0elwiXVxufTtcbmNvbnN0IGZhQWRkcmVzc0NhcmQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYWRkcmVzcy1jYXJkJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbNjIxNDAsIFwiY29udGFjdC1jYXJkXCIsIFwidmNhcmRcIl0sIFwiZjJiYlwiLCBcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2TDAgNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0bDQ0OCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMzIwYzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDMyem04MCAyNTZsNjQgMGM0NC4yIDAgODAgMzUuOCA4MCA4MGMwIDguOC03LjIgMTYtMTYgMTZMODAgMzg0Yy04LjggMC0xNi03LjItMTYtMTZjMC00NC4yIDM1LjgtODAgODAtODB6bS0zMi05NmE2NCA2NCAwIDEgMSAxMjggMCA2NCA2NCAwIDEgMSAtMTI4IDB6bTI1Ni0zMmwxMjggMGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNmwtMTI4IDBjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6bTAgNjRsMTI4IDBjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZsLTEyOCAwYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2em0wIDY0bDEyOCAwYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2bC0xMjggMGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnpcIl1cbn07XG5jb25zdCBmYUNvbnRhY3RDYXJkID0gZmFBZGRyZXNzQ2FyZDtcbmNvbnN0IGZhVmNhcmQgPSBmYUFkZHJlc3NDYXJkO1xuY29uc3QgZmFTY2FsZVVuYmFsYW5jZWRGbGlwID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NjYWxlLXVuYmFsYW5jZWQtZmxpcCcsXG4gIGljb246IFs2NDAsIDUxMiwgW1wiYmFsYW5jZS1zY2FsZS1yaWdodFwiXSwgXCJmNTE2XCIsIFwiTTExNy45IDYyLjRjLTE2LjgtNS42LTI1LjgtMjMuNy0yMC4yLTQwLjVzMjMuNy0yNS44IDQwLjUtMjAuMmwxMTMgMzcuN0MyNjUgMTUuOCAyOTAuNyAwIDMyMCAwYzQ0LjIgMCA4MCAzNS44IDgwIDgwYzAgMy0uMiA1LjktLjUgOC44bDEyMi42IDQwLjljMTYuOCA1LjYgMjUuOCAyMy43IDIwLjIgNDAuNXMtMjMuNyAyNS44LTQwLjUgMjAuMkwzNjYuNCAxNDUuMmMtNC41IDMuMi05LjMgNS45LTE0LjQgOC4yTDM1MiA0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJsLTE5MiAwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDE2MCAwIDAtMjk0LjdjLTIxLTkuMi0zNy4yLTI3LTQ0LjItNDlsLTEyNS45LTQyek0yMDAuNCAyODhMMTI4IDE2My44IDU1LjYgMjg4bDE0NC45IDB6TTEyOCAzODRDNjUuMSAzODQgMTIuOCAzNTAgMiAzMDUuMWMtMi42LTExIDEtMjIuMyA2LjctMzIuMWw5NS4yLTE2My4yYzUtOC42IDE0LjItMTMuOCAyNC4xLTEzLjhzMTkuMSA1LjMgMjQuMSAxMy44bDk1LjIgMTYzLjJjNS43IDkuOCA5LjMgMjEuMSA2LjcgMzIuMUMyNDMuMiAzNTAgMTkwLjkgMzg0IDEyOCAzODR6bTM4Mi44LTkyLjJMNDM4LjQgNDE2bDE0NC45IDBMNTEwLjggMjkxLjh6bTEyNiAxNDEuM0M2MjYgNDc4IDU3My43IDUxMiA1MTAuOCA1MTJzLTExNS4yLTM0LTEyNi03OC45Yy0yLjYtMTEgMS0yMi4zIDYuNy0zMi4xbDk1LjItMTYzLjJjNS04LjYgMTQuMi0xMy44IDI0LjEtMTMuOHMxOS4xIDUuMyAyNC4xIDEzLjhsOTUuMiAxNjMuMmM1LjcgOS44IDkuMyAyMS4xIDYuNyAzMi4xelwiXVxufTtcbmNvbnN0IGZhQmFsYW5jZVNjYWxlUmlnaHQgPSBmYVNjYWxlVW5iYWxhbmNlZEZsaXA7XG5jb25zdCBmYVN1YnNjcmlwdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzdWJzY3JpcHQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYxMmNcIiwgXCJNMzIgNjRDMTQuMyA2NCAwIDc4LjMgMCA5NnMxNC4zIDMyIDMyIDMybDE1LjMgMCA4OS42IDEyOEw0Ny4zIDM4NCAzMiAzODRjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsMzIgMGMxMC40IDAgMjAuMi01LjEgMjYuMi0xMy42TDE3NiAzMTEuOGw4NS44IDEyMi42YzYgOC42IDE1LjggMTMuNiAyNi4yIDEzLjZsMzIgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtMTUuMyAwTDIxNS4xIDI1Nmw4OS42LTEyOCAxNS4zIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTMyIDBjLTEwLjQgMC0yMC4yIDUuMS0yNi4yIDEzLjZMMTc2IDIwMC4yIDkwLjIgNzcuNkM4NC4yIDY5LjEgNzQuNCA2NCA2NCA2NEwzMiA2NHpNNDgwIDMyMGMwLTExLjEtNS43LTIxLjQtMTUuMi0yNy4ycy0yMS4yLTYuNC0zMS4xLTEuNGwtMzIgMTZjLTE1LjggNy45LTIyLjIgMjcuMS0xNC4zIDQyLjlDMzkzIDM2MS41IDQwNC4zIDM2OCA0MTYgMzY4bDAgODBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsMzIgMCAzMiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybDAtMTI4elwiXVxufTtcbmNvbnN0IGZhRGlhbW9uZFR1cm5SaWdodCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdkaWFtb25kLXR1cm4tcmlnaHQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtcImRpcmVjdGlvbnNcIl0sIFwiZjVlYlwiLCBcIk0yMjcuNyAxMS43YzE1LjYtMTUuNiA0MC45LTE1LjYgNTYuNiAwbDIxNiAyMTZjMTUuNiAxNS42IDE1LjYgNDAuOSAwIDU2LjZsLTIxNiAyMTZjLTE1LjYgMTUuNi00MC45IDE1LjYtNTYuNiAwbC0yMTYtMjE2Yy0xNS42LTE1LjYtMTUuNi00MC45IDAtNTYuNmwyMTYtMjE2em04Ny42IDEzN2MtNC42LTQuNi0xMS41LTUuOS0xNy40LTMuNXMtOS45IDguMy05LjkgMTQuOGwwIDU2LTY0IDBjLTM1LjMgMC02NCAyOC43LTY0IDY0bDAgNDhjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGwwLTQ4YzAtOC44IDcuMi0xNiAxNi0xNmw2NCAwIDAgNTZjMCA2LjUgMy45IDEyLjMgOS45IDE0LjhzMTIuOSAxLjEgMTcuNC0zLjVsODAtODBjNi4yLTYuMiA2LjItMTYuNCAwLTIyLjZsLTgwLTgwelwiXVxufTtcbmNvbnN0IGZhRGlyZWN0aW9ucyA9IGZhRGlhbW9uZFR1cm5SaWdodDtcbmNvbnN0IGZhQnVyc3QgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYnVyc3QnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImU0ZGNcIiwgXCJNMzcuNiA0LjJDMjgtMi4zIDE1LjItMS4xIDcgN3MtOS40IDIxLTIuOCAzMC41bDExMiAxNjMuM0wxNi42IDIzMy4yQzYuNyAyMzYuNCAwIDI0NS42IDAgMjU2czYuNyAxOS42IDE2LjYgMjIuOGwxMDMuMSAzMy40TDY2LjggNDEyLjhjLTQuOSA5LjMtMy4yIDIwLjcgNC4zIDI4LjFzMTguOCA5LjIgMjguMSA0LjNsMTAwLjYtNTIuOSAzMy40IDEwMy4xYzMuMiA5LjkgMTIuNCAxNi42IDIyLjggMTYuNnMxOS42LTYuNyAyMi44LTE2LjZsMzMuNC0xMDMuMSAxMDAuNiA1Mi45YzkuMyA0LjkgMjAuNyAzLjIgMjguMS00LjNzOS4yLTE4LjggNC4zLTI4LjFMMzkyLjMgMzEyLjJsMTAzLjEtMzMuNGM5LjktMy4yIDE2LjYtMTIuNCAxNi42LTIyLjhzLTYuNy0xOS42LTE2LjYtMjIuOEwzODguOSAxOTguN2wyNS43LTcwLjRjMy4yLTguOCAxLTE4LjYtNS42LTI1LjJzLTE2LjQtOC44LTI1LjItNS42bC03MC40IDI1LjdMMjc4LjggMTYuNkMyNzUuNiA2LjcgMjY2LjQgMCAyNTYgMHMtMTkuNiA2LjctMjIuOCAxNi42bC0zMi4zIDk5LjZMMzcuNiA0LjJ6XCJdXG59O1xuY29uc3QgZmFIb3VzZUxhcHRvcCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdob3VzZS1sYXB0b3AnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtcImxhcHRvcC1ob3VzZVwiXSwgXCJlMDY2XCIsIFwiTTIxOC4zIDguNWMxMi4zLTExLjMgMzEuMi0xMS4zIDQzLjQgMGwyMDggMTkyYzYuNyA2LjIgMTAuMyAxNC44IDEwLjMgMjMuNWwtMTQ0IDBjLTE5LjEgMC0zNi4zIDguNC00OCAyMS43bDAtMzcuN2MwLTguOC03LjItMTYtMTYtMTZsLTY0IDBjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDY0YzAgOC44IDcuMiAxNiAxNiAxNmw2NCAwIDAgMTI4LTE2MCAwYy0yNi41IDAtNDgtMjEuNS00OC00OGwwLTExMi0zMiAwYy0xMy4yIDAtMjUtOC4xLTI5LjgtMjAuM3MtMS42LTI2LjIgOC4xLTM1LjJsMjA4LTE5MnpNMzUyIDMwNGwwIDE0NCAxOTIgMCAwLTE0NC0xOTIgMHptLTQ4LTE2YzAtMTcuNyAxNC4zLTMyIDMyLTMybDIyNCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgMTYwIDMyIDBjOC44IDAgMTYgNy4yIDE2IDE2YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4bC00OCAwLTE5MiAwLTQ4IDBjLTI2LjUgMC00OC0yMS41LTQ4LTQ4YzAtOC44IDcuMi0xNiAxNi0xNmwzMiAwIDAtMTYwelwiXVxufTtcbmNvbnN0IGZhTGFwdG9wSG91c2UgPSBmYUhvdXNlTGFwdG9wO1xuY29uc3QgZmFGYWNlVGlyZWQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmFjZS10aXJlZCcsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyODU1NSwgXCJ0aXJlZFwiXSwgXCJmNWM4XCIsIFwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0xNjQuNyAzMjguN2MyMi0yMiA1My45LTQwLjcgOTEuMy00MC43czY5LjMgMTguNyA5MS4zIDQwLjdjMTEuMSAxMS4xIDIwLjEgMjMuNCAyNi40IDM1LjRjNi4yIDExLjcgMTAuMyAyNC40IDEwLjMgMzUuOWMwIDUuMi0yLjYgMTAuMi02LjkgMTMuMnMtOS44IDMuNy0xNC43IDEuOGwtMjAuNS03LjdjLTI2LjktMTAuMS01NS41LTE1LjMtODQuMy0xNS4zbC0zLjIgMGMtMjguOCAwLTU3LjMgNS4yLTg0LjMgMTUuM0wxNDkuNiA0MTVjLTQuOSAxLjgtMTAuNCAxLjItMTQuNy0xLjhzLTYuOS03LjktNi45LTEzLjJjMC0xMS42IDQuMi0yNC4yIDEwLjMtMzUuOWM2LjMtMTIgMTUuMy0yNC4zIDI2LjQtMzUuNHptLTMxLjItMTgybDg5LjkgNDcuOWMxMC43IDUuNyAxMC43IDIxLjEgMCAyNi44bC04OS45IDQ3LjljLTcuOSA0LjItMTcuNS0xLjUtMTcuNS0xMC41YzAtMi44IDEtNS41IDIuOC03LjZsMzYtNDMuMi0zNi00My4yYy0xLjgtMi4xLTIuOC00LjgtMi44LTcuNmMwLTkgOS42LTE0LjcgMTcuNS0xMC41ek0zOTYgMTU3LjFjMCAyLjgtMSA1LjUtMi44IDcuNmwtMzYgNDMuMiAzNiA0My4yYzEuOCAyLjEgMi44IDQuOCAyLjggNy42YzAgOS05LjYgMTQuNy0xNy41IDEwLjVsLTg5LjktNDcuOWMtMTAuNy01LjctMTAuNy0yMS4xIDAtMjYuOGw4OS45LTQ3LjljNy45LTQuMiAxNy41IDEuNSAxNy41IDEwLjV6XCJdXG59O1xuY29uc3QgZmFUaXJlZCA9IGZhRmFjZVRpcmVkO1xuY29uc3QgZmFNb25leUJpbGxzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21vbmV5LWJpbGxzJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlMWYzXCIsIFwiTTk2IDk2bDAgMjI0YzAgMzUuMyAyOC43IDY0IDY0IDY0bDQxNiAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMjI0YzAtMzUuMy0yOC43LTY0LTY0LTY0TDE2MCAzMmMtMzUuMyAwLTY0IDI4LjctNjQgNjR6bTY0IDE2MGMzNS4zIDAgNjQgMjguNyA2NCA2NGwtNjQgMCAwLTY0ek0yMjQgOTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRsMC02NCA2NCAwek01NzYgMjU2bDAgNjQtNjQgMGMwLTM1LjMgMjguNy02NCA2NC02NHpNNTEyIDk2bDY0IDAgMCA2NGMtMzUuMyAwLTY0LTI4LjctNjQtNjR6TTI4OCAyMDhhODAgODAgMCAxIDEgMTYwIDAgODAgODAgMCAxIDEgLTE2MCAwek00OCAxMjBjMC0xMy4zLTEwLjctMjQtMjQtMjRTMCAxMDYuNyAwIDEyMEwwIDM2MGMwIDY2LjMgNTMuNyAxMjAgMTIwIDEyMGw0MDAgMGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNGwtNDAwIDBjLTM5LjggMC03Mi0zMi4yLTcyLTcybDAtMjQwelwiXVxufTtcbmNvbnN0IGZhU21vZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzbW9nJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNzVmXCIsIFwiTTMyIDE0NGMwIDc5LjUgNjQuNSAxNDQgMTQ0IDE0NGwxMjMuMyAwYzIyLjYgMTkuOSA1Mi4yIDMyIDg0LjcgMzJzNjIuMS0xMi4xIDg0LjctMzJsMjcuMyAwYzYxLjkgMCAxMTItNTAuMSAxMTItMTEycy01MC4xLTExMi0xMTItMTEyYy0xMC43IDAtMjEgMS41LTMwLjggNC4zQzQ0My44IDI3LjcgNDAxLjEgMCAzNTIgMGMtMzIuNiAwLTYyLjQgMTIuMi04NS4xIDMyLjNDMjQyLjEgMTIuMSAyMTAuNSAwIDE3NiAwQzk2LjUgMCAzMiA2NC41IDMyIDE0NHpNNjE2IDM2OGwtMzM2IDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRsMzM2IDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjR6bS02NCA5NmwtMTEyIDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRsMTEyIDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjR6bS0xOTIgMEwyNCA0NjRjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRsMzM2IDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjR6TTIyNCAzOTJjMC0xMy4zLTEwLjctMjQtMjQtMjRMOTYgMzY4Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0bDEwNCAwYzEzLjMgMCAyNC0xMC43IDI0LTI0elwiXVxufTtcbmNvbnN0IGZhQ3J1dGNoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NydXRjaCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjdmN1wiLCBcIk0yOTcuNCA5LjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zbDE2MCAxNjBjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM2wtMTYwLTE2MGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDB6bS05NiAxNDRsLTM0LjggMzQuOGMtMTIuOSAxMi45LTIxLjkgMjkuMi0yNS44IDQ3LjFMMTE2LjggMzQyLjljLTEuMyA1LjktNC4zIDExLjQtOC42IDE1LjdMOS40IDQ1Ny40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwbDk4LjgtOTguOGM0LjMtNC4zIDkuNy03LjMgMTUuNy04LjZsMTA3LjYtMjMuOWMxNy44LTQgMzQuMS0xMi45IDQ3LjEtMjUuOGwzNC43LTM0LjdjMCAwIC4xLS4xIC4xLS4xcy4xLS4xIC4xLS4xbDc0LjYtNzQuNi00NS4zLTQ1LjNMMzM2IDI0Mi43IDI2OS4zIDE3Nmw1Mi4xLTUyLjFMMjc2LjEgNzguNmwtNzQuNyA3NC43ek0yMjQgMjIxLjNMMjkwLjcgMjg4bC0xMi4yIDEyLjJjLTQuMyA0LjMtOS43IDcuMy0xNS43IDguNmwtNzYuNyAxNyAxNy03Ni43YzEuMy01LjkgNC4zLTExLjQgOC42LTE1LjdMMjI0IDIyMS4zelwiXVxufTtcbmNvbnN0IGZhRm9udEF3ZXNvbWUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZm9udC1hd2Vzb21lJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbNjI1MDEsIDYyNjk0LCBcImZvbnQtYXdlc29tZS1mbGFnXCIsIFwiZm9udC1hd2Vzb21lLWxvZ28tZnVsbFwiXSwgXCJmMmI0XCIsIFwiTTkxLjcgOTZDMTA2LjMgODYuOCAxMTYgNzAuNSAxMTYgNTJDMTE2IDIzLjMgOTIuNyAwIDY0IDBTMTIgMjMuMyAxMiA1MmMwIDE2LjcgNy44IDMxLjUgMjAgNDFsMCAzIDAgMzUyIDAgNjQgNjQgMCAwLTY0IDM3My42IDBjMTQuNiAwIDI2LjQtMTEuOCAyNi40LTI2LjRjMC0zLjctLjgtNy4zLTIuMy0xMC43TDQzMiAyNzJsNjEuNy0xMzguOWMxLjUtMy40IDIuMy03IDIuMy0xMC43YzAtMTQuNi0xMS44LTI2LjQtMjYuNC0yNi40TDkxLjcgOTZ6XCJdXG59O1xuY29uc3QgZmFGb250QXdlc29tZUZsYWcgPSBmYUZvbnRBd2Vzb21lO1xuY29uc3QgZmFGb250QXdlc29tZUxvZ29GdWxsID0gZmFGb250QXdlc29tZTtcbmNvbnN0IGZhQ2xvdWRBcnJvd1VwID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Nsb3VkLWFycm93LXVwJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbNjIzMzgsIFwiY2xvdWQtdXBsb2FkXCIsIFwiY2xvdWQtdXBsb2FkLWFsdFwiXSwgXCJmMGVlXCIsIFwiTTE0NCA0ODBDNjQuNSA0ODAgMCA0MTUuNSAwIDMzNmMwLTYyLjggNDAuMi0xMTYuMiA5Ni4yLTEzNS45Yy0uMS0yLjctLjItNS40LS4yLTguMWMwLTg4LjQgNzEuNi0xNjAgMTYwLTE2MGM1OS4zIDAgMTExIDMyLjIgMTM4LjcgODAuMkM0MDkuOSAxMDIgNDI4LjMgOTYgNDQ4IDk2YzUzIDAgOTYgNDMgOTYgOTZjMCAxMi4yLTIuMyAyMy44LTYuNCAzNC42QzU5NiAyMzguNCA2NDAgMjkwLjEgNjQwIDM1MmMwIDcwLjctNTcuMyAxMjgtMTI4IDEyOGwtMzY4IDB6bTc5LTIxN2MtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwbDM5LTM5TDI5NiAzOTJjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGwwLTEzNC4xIDM5IDM5YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwczkuNC0yNC42IDAtMzMuOWwtODAtODBjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwbC04MCA4MHpcIl1cbn07XG5jb25zdCBmYUNsb3VkVXBsb2FkID0gZmFDbG91ZEFycm93VXA7XG5jb25zdCBmYUNsb3VkVXBsb2FkQWx0ID0gZmFDbG91ZEFycm93VXA7XG5jb25zdCBmYVBhbGV0dGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGFsZXR0ZScsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyNzkxMl0sIFwiZjUzZlwiLCBcIk01MTIgMjU2YzAgLjkgMCAxLjggMCAyLjdjLS40IDM2LjUtMzMuNiA2MS4zLTcwLjEgNjEuM0wzNDQgMzIwYy0yNi41IDAtNDggMjEuNS00OCA0OGMwIDMuNCAuNCA2LjcgMSA5LjljMi4xIDEwLjIgNi41IDIwIDEwLjggMjkuOWM2LjEgMTMuOCAxMi4xIDI3LjUgMTIuMSA0MmMwIDMxLjgtMjEuNiA2MC43LTUzLjQgNjJjLTMuNSAuMS03IC4yLTEwLjYgLjJDMTE0LjYgNTEyIDAgMzk3LjQgMCAyNTZTMTE0LjYgMCAyNTYgMFM1MTIgMTE0LjYgNTEyIDI1NnpNMTI4IDI4OGEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwem0wLTk2YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpNMjg4IDk2YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6bTk2IDk2YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpcIl1cbn07XG5jb25zdCBmYUFycm93c1R1cm5SaWdodCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhcnJvd3MtdHVybi1yaWdodCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZTRjMFwiLCBcIk0yOTcuNCA5LjRjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDBsOTYgOTZjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNsLTk2IDk2Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMHMtMTIuNS0zMi44IDAtNDUuM0wzMzguNyAxNjAgMTI4IDE2MGMtMzUuMyAwLTY0IDI4LjctNjQgNjRsMCAzMmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTMyQzAgMTUzLjMgNTcuMyA5NiAxMjggOTZsMjEwLjcgMEwyOTcuNCA1NC42Yy0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM3ptLTk2IDI1NmMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMGw5NiA5NmMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM2wtOTYgOTZjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwcy0xMi41LTMyLjggMC00NS4zTDI0Mi43IDQxNiA5NiA0MTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMybDAgMzJjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC0zMmMwLTUzIDQzLTk2IDk2LTk2bDE0Ni43IDAtNDEuNC00MS40Yy0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM3pcIl1cbn07XG5jb25zdCBmYVZlc3QgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndmVzdCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZTA4NVwiLCBcIk0yMDcuMSAyMzcuNEwxNTEuMiA2OS43QzE2OC42IDc5LjcgMTkyLjYgODggMjI0IDg4czU1LjQtOC4zIDcyLjgtMTguM0wyMjYuNSAyODAuNmMtMS42IDQuOS0yLjUgMTAtMi41IDE1LjJMMjI0IDQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGwxMjggMGMyNi41IDAgNDgtMjEuNSA0OC00OGwwLTE5My41YzAtOS41LTIuOC0xOC43LTguMS0yNi42bC00Ny45LTcxLjhjLTUuMy03LjktOC4xLTE3LjEtOC4xLTI2LjZsMC0xNy41IDAtNzMuNyAwLTYuM2MwLTI2LjUtMjEuNS00OC00OC00OGwtNC41IDBjLS4yIDAtLjQgMC0uNiAwYy0uNCAwLS44IDAtMS4yIDBDMzExIDAgMjk1LjcgOS43IDI4NS43IDE4LjhDMjc2LjQgMjcuMiAyNTcuMiA0MCAyMjQgNDBzLTUyLjQtMTIuOC02MS43LTIxLjJDMTUyLjMgOS43IDEzNyAwIDExOC4zIDBjLS40IDAtLjggMC0xLjIgMGMtLjIgMC0uNCAwLS42IDBMMTEyIDBDODUuNSAwIDY0IDIxLjUgNjQgNDhsMCA2LjNMNjQgMTI4bDAgMTcuNWMwIDkuNS0yLjggMTguNy04LjEgMjYuNkw4LjEgMjQzLjlDMi44IDI1MS44IDAgMjYxLjEgMCAyNzAuNUwwIDQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGwxMjggMGM5LjkgMCAxOS0zIDI2LjctOC4xQzE5NS45IDQ5Mi4yIDE5MiA0NzguNSAxOTIgNDY0bDAtMTY4LjJjMC04LjYgMS40LTE3LjEgNC4xLTI1LjNsMTEtMzMuMXpNMzQ3LjMgMzU2LjdsNDggNDhjNi4yIDYuMiA2LjIgMTYuNCAwIDIyLjZzLTE2LjQgNi4yLTIyLjYgMGwtNDgtNDhjLTYuMi02LjItNi4yLTE2LjQgMC0yMi42czE2LjQtNi4yIDIyLjYgMHptLTI5NC42IDQ4bDQ4LTQ4YzYuMi02LjIgMTYuNC02LjIgMjIuNiAwczYuMiAxNi40IDAgMjIuNmwtNDggNDhjLTYuMiA2LjItMTYuNCA2LjItMjIuNiAwcy02LjItMTYuNCAwLTIyLjZ6XCJdXG59O1xuY29uc3QgZmFGZXJyeSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmZXJyeScsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZTRlYVwiLCBcIk0yMjQgMEwzNTIgMGMxNy43IDAgMzIgMTQuMyAzMiAzMmw3NS4xIDBjMjAuNiAwIDMxLjYgMjQuMyAxOC4xIDM5LjhMNDU2IDk2IDEyMCA5NiA5OC44IDcxLjhDODUuMyA1Ni4zIDk2LjMgMzIgMTE2LjkgMzJMMTkyIDMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyek05NiAxMjhsMzg0IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCAxMjMuNWMwIDEzLjMtNC4yIDI2LjMtMTEuOSAzNy4ybC01MS40IDcxLjljLTEuOSAxLjEtMy43IDIuMi01LjUgMy41Yy0xNS41IDEwLjctMzQgMTgtNTEgMTkuOWwtMTYuNSAwYy0xNy4xLTEuOC0zNS05LTUwLjgtMTkuOWMtMjIuMS0xNS41LTUxLjYtMTUuNS03My43IDBjLTE0LjggMTAuMi0zMi41IDE4LTUwLjYgMTkuOWwtMTYuNiAwYy0xNy0xLjgtMzUuNi05LjItNTEtMTkuOWMtMS44LTEuMy0zLjctMi40LTUuNi0zLjVMNzUuOSAzMjAuN0M2OC4yIDMwOS44IDY0IDI5Ni44IDY0IDI4My41TDY0IDE2MGMwLTE3LjcgMTQuMy0zMiAzMi0zMnptMzIgNjRsMCA5NiAzMjAgMCAwLTk2LTMyMCAwek0zMDYuNSA0MjEuOUMzMjkgNDM3LjQgMzU2LjUgNDQ4IDM4NCA0NDhjMjYuOSAwIDU1LjMtMTAuOCA3Ny40LTI2LjFjMCAwIDAgMCAwIDBjMTEuOS04LjUgMjguMS03LjggMzkuMiAxLjdjMTQuNCAxMS45IDMyLjUgMjEgNTAuNiAyNS4yYzE3LjIgNCAyNy45IDIxLjIgMjMuOSAzOC40cy0yMS4yIDI3LjktMzguNCAyMy45Yy0yNC41LTUuNy00NC45LTE2LjUtNTguMi0yNUM0NDkuNSA1MDEuNyA0MTcgNTEyIDM4NCA1MTJjLTMxLjkgMC02MC42LTkuOS04MC40LTE4LjljLTUuOC0yLjctMTEuMS01LjMtMTUuNi03LjdjLTQuNSAyLjQtOS43IDUuMS0xNS42IDcuN2MtMTkuOCA5LTQ4LjUgMTguOS04MC40IDE4LjljLTMzIDAtNjUuNS0xMC4zLTk0LjUtMjUuOGMtMTMuNCA4LjQtMzMuNyAxOS4zLTU4LjIgMjVjLTE3LjIgNC0zNC40LTYuNy0zOC40LTIzLjlzNi43LTM0LjQgMjMuOS0zOC40YzE4LjEtNC4yIDM2LjItMTMuMyA1MC42LTI1LjJjMTEuMS05LjQgMjcuMy0xMC4xIDM5LjItMS43YzAgMCAwIDAgMCAwQzEzNi43IDQzNy4yIDE2NS4xIDQ0OCAxOTIgNDQ4YzI3LjUgMCA1NS0xMC42IDc3LjUtMjYuMWMxMS4xLTcuOSAyNS45LTcuOSAzNyAwelwiXVxufTtcbmNvbnN0IGZhQXJyb3dzRG93blRvUGVvcGxlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Fycm93cy1kb3duLXRvLXBlb3BsZScsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTRiOVwiLCBcIk0xNDQgMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRsMCAxMTguMUw5NyAxMTljLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwcy05LjQgMjQuNiAwIDMzLjlsNjQgNjRjOS40IDkuNCAyNC42IDkuNCAzMy45IDBsNjQtNjRjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlzLTI0LjYtOS40LTMzLjkgMGwtMjMgMjNMMTY4IDI0YzAtMTMuMy0xMC43LTI0LTI0LTI0ek0zNjAgMjAwYTQwIDQwIDAgMSAwIC04MCAwIDQwIDQwIDAgMSAwIDgwIDB6TTE4NCAyOTZhNDAgNDAgMCAxIDAgLTgwIDAgNDAgNDAgMCAxIDAgODAgMHptMzEyIDQwYTQwIDQwIDAgMSAwIDAtODAgNDAgNDAgMCAxIDAgMCA4MHpNMjAwIDQ0MS41bDI2LjkgNDkuOWM2LjMgMTEuNyAyMC44IDE2IDMyLjUgOS44czE2LTIwLjggOS44LTMyLjVsLTM2LjMtNjcuNWMxLjctMS43IDMuMi0zLjYgNC4zLTUuOEwyNjQgMzQ1LjVsMCA1NC41YzAgMTcuNyAxNC4zIDMyIDMyIDMybDQ4IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJsMC01NC41IDI2LjkgNDkuOWMxLjIgMi4yIDIuNiA0LjEgNC4zIDUuOGwtMzYuMyA2Ny41Yy02LjMgMTEuNy0xLjkgMjYuMiA5LjggMzIuNXMyNi4yIDEuOSAzMi41LTkuOEw0NDAgNDQxLjVsMCAzOC41YzAgMTcuNyAxNC4zIDMyIDMyIDMybDQ4IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJsMC0zOC41IDI2LjkgNDkuOWM2LjMgMTEuNyAyMC44IDE2IDMyLjUgOS44czE2LTIwLjggOS44LTMyLjVsLTM3LjktNzAuM2MtMTUuMy0yOC41LTQ1LjEtNDYuMy03Ny41LTQ2LjNsLTE5LjUgMGMtMTYuMyAwLTMxLjkgNC41LTQ1LjQgMTIuNmwtMzMuNi02Mi4zYy0xNS4zLTI4LjUtNDUuMS00Ni4zLTc3LjUtNDYuM2wtMTkuNSAwYy0zMi40IDAtNjIuMSAxNy44LTc3LjUgNDYuM2wtMzMuNiA2Mi4zYy0xMy41LTguMS0yOS4xLTEyLjYtNDUuNC0xMi42bC0xOS41IDBjLTMyLjQgMC02Mi4xIDE3LjgtNzcuNSA0Ni4zTDE4LjkgNDY4LjZjLTYuMyAxMS43LTEuOSAyNi4yIDkuOCAzMi41czI2LjIgMS45IDMyLjUtOS44TDg4IDQ0MS41IDg4IDQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMmw0OCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMybDAtMzguNXpNNDE1IDE1M2w2NCA2NGM5LjQgOS40IDI0LjYgOS40IDMzLjkgMGw2NC02NGM5LjQtOS40IDkuNC0yNC42IDAtMzMuOXMtMjQuNi05LjQtMzMuOSAwbC0yMyAyM0w1MjAgMjRjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjRsMCAxMTguMS0yMy0yM2MtOS40LTkuNC0yNC42LTkuNC0zMy45IDBzLTkuNCAyNC42IDAgMzMuOXpcIl1cbn07XG5jb25zdCBmYVNlZWRsaW5nID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NlZWRsaW5nJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI3NzkzLCBcInNwcm91dFwiXSwgXCJmNGQ4XCIsIFwiTTUxMiAzMmMwIDExMy42LTg0LjYgMjA3LjUtMTk0LjIgMjIyYy03LjEtNTMuNC0zMC42LTEwMS42LTY1LjMtMTM5LjNDMjkwLjggNDYuMyAzNjQgMCA0NDggMGwzMiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMyek0wIDk2QzAgNzguMyAxNC4zIDY0IDMyIDY0bDMyIDBjMTIzLjcgMCAyMjQgMTAwLjMgMjI0IDIyNGwwIDMyIDAgMTYwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtMTYwQzEwMC4zIDMyMCAwIDIxOS43IDAgOTZ6XCJdXG59O1xuY29uc3QgZmFTcHJvdXQgPSBmYVNlZWRsaW5nO1xuY29uc3QgZmFMZWZ0UmlnaHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbGVmdC1yaWdodCcsXG4gIGljb246IFs1MTIsIDUxMiwgWzg1OTYsIFwiYXJyb3dzLWFsdC1oXCJdLCBcImYzMzdcIiwgXCJNNTA0LjMgMjczLjZjNC45LTQuNSA3LjctMTAuOSA3LjctMTcuNnMtMi44LTEzLTcuNy0xNy42bC0xMTItMTA0Yy03LTYuNS0xNy4yLTguMi0yNS45LTQuNHMtMTQuNCAxMi41LTE0LjQgMjJsMCA1Ni0xOTIgMCAwLTU2YzAtOS41LTUuNy0xOC4yLTE0LjQtMjJzLTE4LjktMi4xLTI1LjkgNC40bC0xMTIgMTA0QzIuOCAyNDMgMCAyNDkuMyAwIDI1NnMyLjggMTMgNy43IDE3LjZsMTEyIDEwNGM3IDYuNSAxNy4yIDguMiAyNS45IDQuNHMxNC40LTEyLjUgMTQuNC0yMmwwLTU2IDE5MiAwIDAgNTZjMCA5LjUgNS43IDE4LjIgMTQuNCAyMnMxOC45IDIuMSAyNS45LTQuNGwxMTItMTA0elwiXVxufTtcbmNvbnN0IGZhQXJyb3dzQWx0SCA9IGZhTGVmdFJpZ2h0O1xuY29uc3QgZmFCb3hlc1BhY2tpbmcgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYm94ZXMtcGFja2luZycsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTRjN1wiLCBcIk0yNTYgNDhjMC0yNi41IDIxLjUtNDggNDgtNDhMNTkyIDBjMjYuNSAwIDQ4IDIxLjUgNDggNDhsMCA0MTZjMCAyNi41LTIxLjUgNDgtNDggNDhsLTIxMC43IDBjMS44LTUgMi43LTEwLjQgMi43LTE2bDAtMjQyLjdjMTguNi02LjYgMzItMjQuNCAzMi00NS4zbDAtMzJjMC0yNi41LTIxLjUtNDgtNDgtNDhsLTExMiAwIDAtODB6TTU3MS4zIDM0Ny4zYzYuMi02LjIgNi4yLTE2LjQgMC0yMi42bC02NC02NGMtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBsLTY0IDY0Yy02LjIgNi4yLTYuMiAxNi40IDAgMjIuNnMxNi40IDYuMiAyMi42IDBMNDgwIDMxMC42IDQ4MCA0MzJjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNmwwLTEyMS40IDM2LjcgMzYuN2M2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMHpNMCAxNzZjMC04LjggNy4yLTE2IDE2LTE2bDM1MiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDMyYzAgOC44LTcuMiAxNi0xNiAxNkwxNiAyMjRjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTMyem0zNTIgODBsMCAyMjRjMCAxNy43LTE0LjMgMzItMzIgMzJMNjQgNTEyYy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTIyNCAzMjAgMHpNMTQ0IDMyMGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmw5NiAwYzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2bC05NiAwelwiXVxufTtcbmNvbnN0IGZhQ2lyY2xlQXJyb3dMZWZ0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NpcmNsZS1hcnJvdy1sZWZ0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXCJhcnJvdy1jaXJjbGUtbGVmdFwiXSwgXCJmMGE4XCIsIFwiTTUxMiAyNTZBMjU2IDI1NiAwIDEgMCAwIDI1NmEyNTYgMjU2IDAgMSAwIDUxMiAwek0yMTUgMTI3YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOWwtNzEgNzFMMzkyIDIzMmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGwtMjE0LjEgMCA3MSA3MWM5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwTDEwMyAyNzNjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45TDIxNSAxMjd6XCJdXG59O1xuY29uc3QgZmFBcnJvd0NpcmNsZUxlZnQgPSBmYUNpcmNsZUFycm93TGVmdDtcbmNvbnN0IGZhR3JvdXBBcnJvd3NSb3RhdGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZ3JvdXAtYXJyb3dzLXJvdGF0ZScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZTRmNlwiLCBcIk0yMDEuMSA3MS45YzE2LjktNSAyNi42LTIyLjkgMjEuNS0zOS44cy0yMi45LTI2LjYtMzkuOC0yMS41Yy0yMS41IDYuNC00MS44IDE1LjUtNjAuNiAyN0MxMTQuMyAzNCAxMDUuNCAzMiA5NiAzMkM2MC43IDMyIDMyIDYwLjcgMzIgOTZjMCA5LjQgMiAxOC4zIDUuNiAyNi4zYy0xMS41IDE4LjctMjAuNiAzOS0yNyA2MC42Yy01IDE2LjkgNC42IDM0LjggMjEuNSAzOS44czM0LjgtNC42IDM5LjgtMjEuNWM0LjMtMTQuNiAxMC40LTI4LjUgMTcuOS00MS40YzIgLjIgNC4xIC4zIDYuMSAuM2MzNS4zIDAgNjQtMjguNyA2NC02NGMwLTIuMS0uMS00LjEtLjMtNi4xYzEyLjktNy41IDI2LjgtMTMuNiA0MS40LTE3Ljl6bTEyOC02MS4zYy0xNi45LTUtMzQuOCA0LjYtMzkuOCAyMS41czQuNiAzNC44IDIxLjUgMzkuOGMxNC42IDQuMyAyOC41IDEwLjQgNDEuNCAxNy45Yy0uMiAyLS4zIDQuMS0uMyA2LjFjMCAzNS4zIDI4LjcgNjQgNjQgNjRjMi4xIDAgNC4xLS4xIDYuMi0uM2M3LjUgMTIuOSAxMy42IDI2LjggMTcuOSA0MS40YzUgMTYuOSAyMi45IDI2LjYgMzkuOCAyMS41czI2LjYtMjIuOSAyMS41LTM5LjhjLTYuNC0yMS41LTE1LjUtNDEuOC0yNy02MC42YzMuNi04IDUuNi0xNi45IDUuNi0yNi4zYzAtMzUuMy0yOC43LTY0LTY0LTY0Yy05LjQgMC0xOC4zIDItMjYuMyA1LjZjLTE4LjctMTEuNS0zOS0yMC42LTYwLjYtMjd6TTcxLjkgMzEwLjljLTUtMTYuOS0yMi45LTI2LjYtMzkuOC0yMS41cy0yNi42IDIyLjktMjEuNSAzOS44YzYuNCAyMS41IDE1LjUgNDEuOCAyNyA2MC42QzM0IDM5Ny43IDMyIDQwNi42IDMyIDQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NGM5LjQgMCAxOC4zLTIgMjYuMy01LjZjMTguNyAxMS41IDM5IDIwLjYgNjAuNiAyN2MxNi45IDUgMzQuOC00LjYgMzkuOC0yMS41cy00LjYtMzQuOC0yMS41LTM5LjhjLTE0LjYtNC4zLTI4LjUtMTAuNC00MS40LTE3LjljLjItMiAuMy00LjEgLjMtNi4yYzAtMzUuMy0yOC43LTY0LTY0LTY0Yy0yLjEgMC00LjEgLjEtNi4yIC4zYy03LjUtMTIuOS0xMy42LTI2LjgtMTcuOS00MS40em00MjkuNCAxOC4zYzUtMTYuOS00LjYtMzQuOC0yMS41LTM5LjhzLTM0LjggNC42LTM5LjggMjEuNWMtNC4zIDE0LjYtMTAuNCAyOC41LTE3LjkgNDEuNGMtMi0uMi00LjEtLjMtNi4yLS4zYy0zNS4zIDAtNjQgMjguNy02NCA2NGMwIDIuMSAuMSA0LjEgLjMgNi4yYy0xMi45IDcuNS0yNi44IDEzLjYtNDEuNCAxNy45Yy0xNi45IDUtMjYuNiAyMi45LTIxLjUgMzkuOHMyMi45IDI2LjYgMzkuOCAyMS41YzIxLjUtNi40IDQxLjgtMTUuNSA2MC42LTI3YzggMy42IDE2LjkgNS42IDI2LjMgNS42YzM1LjMgMCA2NC0yOC43IDY0LTY0YzAtOS40LTItMTguMy01LjYtMjYuM2MxMS41LTE4LjcgMjAuNi0zOSAyNy02MC42ek0xOTIuOCAyNTYuOGMwLTE1LjYgNS42LTI5LjkgMTQuOS00MS4xTDIyMyAyMzFjNi42IDYuNiAxNy44IDEuOSAxNy44LTcuNGwwLTYwLjVjMC01LjctNC43LTEwLjQtMTAuNC0xMC40bC02MC41IDBjLTkuMyAwLTEzLjkgMTEuMi03LjQgMTcuOGwxMS4yIDExLjJjLTE3LjkgMTkuOC0yOC45IDQ2LjItMjguOSA3NS4xYzAgNDMuNiAyNC45IDgxLjMgNjEuMSA5OS44YzExLjggNiAyNi4zIDEuNCAzMi4zLTEwLjRzMS40LTI2LjMtMTAuNC0zMi4zYy0yMC44LTEwLjYtMzQuOS0zMi4yLTM0LjktNTd6bTkzLjEtNTguNmMyMC44IDEwLjYgMzQuOSAzMi4yIDM0LjkgNTdjMCAxNS42LTUuNiAyOS45LTE0LjkgNDEuMUwyOTAuNiAyODFjLTYuNi02LjYtMTcuOC0xLjktMTcuOCA3LjRsMCA2MC41YzAgNS43IDQuNyAxMC40IDEwLjQgMTAuNGw2MC41IDBjOS4zIDAgMTMuOS0xMS4yIDcuNC0xNy44bC0xMS4yLTExLjJjMTcuOS0xOS44IDI4LjktNDYuMiAyOC45LTc1LjFjMC00My42LTI0LjktODEuMy02MS4xLTk5LjhjLTExLjgtNi0yNi4zLTEuNC0zMi4zIDEwLjRzLTEuNCAyNi4zIDEwLjQgMzIuM3pcIl1cbn07XG5jb25zdCBmYUJvd2xGb29kID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Jvd2wtZm9vZCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZTRjNlwiLCBcIk0wIDE5MmMwLTM1LjMgMjguNy02NCA2NC02NGMuNSAwIDEuMSAwIDEuNiAwQzczIDkxLjUgMTA1LjMgNjQgMTQ0IDY0YzE1IDAgMjkgNC4xIDQwLjkgMTEuMkMxOTguMiA0OS42IDIyNS4xIDMyIDI1NiAzMnM1Ny44IDE3LjYgNzEuMSA0My4yQzMzOSA2OC4xIDM1MyA2NCAzNjggNjRjMzguNyAwIDcxIDI3LjUgNzguNCA2NGMuNSAwIDEuMSAwIDEuNiAwYzM1LjMgMCA2NCAyOC43IDY0IDY0YzAgMTEuNy0zLjEgMjIuNi04LjYgMzJMOC42IDIyNEMzLjEgMjE0LjYgMCAyMDMuNyAwIDE5MnptMCA5MS40QzAgMjY4LjMgMTIuMyAyNTYgMjcuNCAyNTZsNDU3LjEgMGMxNS4xIDAgMjcuNCAxMi4zIDI3LjQgMjcuNGMwIDcwLjUtNDQuNCAxMzAuNy0xMDYuNyAxNTQuMUw0MDMuNSA0NTJjLTIgMTYtMTUuNiAyOC0zMS44IDI4bC0yMzEuNSAwYy0xNi4xIDAtMjkuOC0xMi0zMS44LTI4bC0xLjgtMTQuNEM0NC40IDQxNC4xIDAgMzUzLjkgMCAyODMuNHpcIl1cbn07XG5jb25zdCBmYUNhbmR5Q2FuZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjYW5keS1jYW5lJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNzg2XCIsIFwiTTM0OC44IDEzMS41YzMuNy0yLjMgNy45LTMuNSAxMi4yLTMuNWMxMi43IDAgMjMgMTAuMyAyMyAyM2wwIDUuNmMwIDkuOS01LjEgMTkuMS0xMy41IDI0LjNMMzAuMSAzOTMuN0MuMSA0MTIuNS05IDQ1MS45IDkuNyA0ODEuOXM1OC4yIDM5LjEgODguMiAyMC40TDQzOC40IDI4OS41YzQ1LjgtMjguNiA3My42LTc4LjggNzMuNi0xMzIuOGwwLTUuNkM1MTIgNjcuNiA0NDQuNCAwIDM2MSAwYy0yOC4zIDAtNTYgOC04MC4xIDIzTDI1NC4xIDM5LjdjLTMwIDE4LjctMzkuMSA1OC4yLTIwLjQgODguMnM1OC4yIDM5LjEgODguMiAyMC40bDI2LjgtMTYuOHpNMjk4LjQgNDkuOGM5LjItNS43IDE5LjEtMTAuMSAyOS40LTEzLjFMMzQ4IDk3LjVjLTUuNyAxLjQtMTEuMiAzLjctMTYuMyA2LjhsLTEyLjYgNy45TDI5OC40IDQ5Ljh6bTg4LjUgNTIuN2w0Ni4yLTQ2LjJjOC41IDYuNSAxNi4xIDE0LjEgMjIuNiAyMi42bC00Ni4yIDQ2LjJjLTUuMS05LjYtMTMtMTcuNS0yMi42LTIyLjZ6bTI4LjkgNTkuM2w2MS42IDIwLjVjLTIuMiAxMC41LTUuOCAyMC43LTEwLjUgMzAuMmwtNjItMjAuN2M2LjItOC44IDEwLjEtMTkuMSAxMS0zMC4xem0tODYuMSA4Mi41bDYwLjQgMzcuNy0zMC4yIDE4LjktNjAuNC0zNy43IDMwLjItMTguOXptLTEwNy4yIDY3bDYwLjQgMzcuNy0zMC4yIDE4LjktNjAuNC0zNy43IDMwLjItMTguOXpNMTE5LjMgMzc1LjdsNjAuNCAzNy43LTMwLjIgMTguOUw4OS4xIDM5NC42bDMwLjItMTguOXpcIl1cbn07XG5jb25zdCBmYUFycm93RG93bldpZGVTaG9ydCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhcnJvdy1kb3duLXdpZGUtc2hvcnQnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtcInNvcnQtYW1vdW50LWFzY1wiLCBcInNvcnQtYW1vdW50LWRvd25cIl0sIFwiZjE2MFwiLCBcIk0xNTEuNiA0NjkuNkMxNDUuNSA0NzYuMiAxMzcgNDgwIDEyOCA0ODBzLTE3LjUtMy44LTIzLjYtMTAuNGwtODgtOTZjLTExLjktMTMtMTEuMS0zMy4zIDItNDUuMnMzMy4zLTExLjEgNDUuMiAyTDk2IDM2NS43IDk2IDY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJsMCAzMDEuNyAzMi40LTM1LjRjMTEuOS0xMyAzMi4yLTEzLjkgNDUuMi0yczEzLjkgMzIuMiAyIDQ1LjJsLTg4IDk2ek0zMjAgNDgwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDMyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTMyIDB6bTAtMTI4Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDk2IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTk2IDB6bTAtMTI4Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDE2MCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC0xNjAgMHptMC0xMjhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJsMjI0IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJMMzIwIDk2elwiXVxufTtcbmNvbnN0IGZhU29ydEFtb3VudEFzYyA9IGZhQXJyb3dEb3duV2lkZVNob3J0O1xuY29uc3QgZmFTb3J0QW1vdW50RG93biA9IGZhQXJyb3dEb3duV2lkZVNob3J0O1xuY29uc3QgZmFDbG91ZEJvbHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2xvdWQtYm9sdCcsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyNzc4NSwgXCJ0aHVuZGVyc3Rvcm1cIl0sIFwiZjc2Y1wiLCBcIk0wIDIyNGMwIDUzIDQzIDk2IDk2IDk2bDQ3LjIgMEwyOTAgMjAyLjVjMTcuNi0xNC4xIDQyLjYtMTQgNjAuMiAuMnMyMi44IDM4LjYgMTIuOCA1OC44TDMzMy43IDMyMGwxOC4zIDAgNjQgMGM1MyAwIDk2LTQzIDk2LTk2cy00My05Ni05Ni05NmMtLjUgMC0xLjEgMC0xLjYgMGMxLjEtNS4yIDEuNi0xMC41IDEuNi0xNmMwLTQ0LjItMzUuOC04MC04MC04MGMtMjQuMyAwLTQ2LjEgMTAuOS02MC44IDI4QzI1Ni41IDI0LjMgMjE5LjEgMCAxNzYgMEMxMTQuMSAwIDY0IDUwLjEgNjQgMTEyYzAgNy4xIC43IDE0LjEgMS45IDIwLjhDMjcuNiAxNDUuNCAwIDE4MS41IDAgMjI0em0zMzAuMSAzLjZjLTUuOC00LjctMTQuMi00LjctMjAuMS0uMWwtMTYwIDEyOGMtNS4zIDQuMi03LjQgMTEuNC01LjEgMTcuOHM4LjMgMTAuNyAxNS4xIDEwLjdsNzAuMSAwTDE3Ny43IDQ4OC44Yy0zLjQgNi43LTEuNiAxNC45IDQuMyAxOS42czE0LjIgNC43IDIwLjEgLjFsMTYwLTEyOGM1LjMtNC4yIDcuNC0xMS40IDUuMS0xNy44cy04LjMtMTAuNy0xNS4xLTEwLjdsLTcwLjEgMCA1Mi40LTEwNC44YzMuNC02LjcgMS42LTE0LjktNC4yLTE5LjZ6XCJdXG59O1xuY29uc3QgZmFUaHVuZGVyc3Rvcm0gPSBmYUNsb3VkQm9sdDtcbmNvbnN0IGZhVGV4dFNsYXNoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RleHQtc2xhc2gnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtcInJlbW92ZS1mb3JtYXRcIl0sIFwiZjg3ZFwiLCBcIk0zOC44IDUuMUMyOC40LTMuMSAxMy4zLTEuMiA1LjEgOS4yUy0xLjIgMzQuNyA5LjIgNDIuOWw1OTIgNDY0YzEwLjQgOC4yIDI1LjUgNi4zIDMzLjctNC4xczYuMy0yNS41LTQuMS0zMy43TDM1NS43IDI1My41IDQwMC4yIDk2IDUwMyA5NiA0OTcgMTIwLjJjLTQuMyAxNy4xIDYuMSAzNC41IDIzLjMgMzguOHMzNC41LTYuMSAzOC44LTIzLjNsMTEtNDQuMUM1NzcuNiA2MS4zIDU1NC43IDMyIDUyMy41IDMyTDM3Ni4xIDMybC0uMyAwTDIwNC41IDMyYy0yMiAwLTQxLjIgMTUtNDYuNiAzNi40bC02LjMgMjUuMkwzOC44IDUuMXptMTY4IDEzMS43Yy4xLS4zIC4yLS43IC4zLTFMMjE3IDk2bDExNi43IDBMMzAxLjMgMjEwLjhsLTk0LjUtNzQuMXpNMjQzLjMgNDE2TDE5MiA0MTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsMTYwIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTQyLjIgMCAxNy42LTYyLjFMMjcyLjkgMzExIDI0My4zIDQxNnpcIl1cbn07XG5jb25zdCBmYVJlbW92ZUZvcm1hdCA9IGZhVGV4dFNsYXNoO1xuY29uc3QgZmFGYWNlU21pbGVXaW5rID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZhY2Utc21pbGUtd2luaycsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyODUyMSwgXCJzbWlsZS13aW5rXCJdLCBcImY0ZGFcIiwgXCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTE2NC4xIDMyNS41QzE4MiAzNDYuMiAyMTIuNiAzNjggMjU2IDM2OHM3NC0yMS44IDkxLjktNDIuNWM1LjgtNi43IDE1LjktNy40IDIyLjYtMS42czcuNCAxNS45IDEuNiAyMi42QzM0OS44IDM3Mi4xIDMxMS4xIDQwMCAyNTYgNDAwcy05My44LTI3LjktMTE2LjEtNTMuNWMtNS44LTYuNy01LjEtMTYuOCAxLjYtMjIuNnMxNi44LTUuMSAyMi42IDEuNnpNMTQ0LjQgMjA4YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bTE1Ni40IDI1LjZjLTUuMyA3LjEtMTUuMyA4LjUtMjIuNCAzLjJzLTguNS0xNS4zLTMuMi0yMi40YzMwLjQtNDAuNSA5MS4yLTQwLjUgMTIxLjYgMGM1LjMgNy4xIDMuOSAxNy4xLTMuMiAyMi40cy0xNy4xIDMuOS0yMi40LTMuMmMtMTcuNi0yMy41LTUyLjgtMjMuNS03MC40IDB6XCJdXG59O1xuY29uc3QgZmFTbWlsZVdpbmsgPSBmYUZhY2VTbWlsZVdpbms7XG5jb25zdCBmYUZpbGVXb3JkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZpbGUtd29yZCcsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjFjMlwiLCBcIk02NCAwQzI4LjcgMCAwIDI4LjcgMCA2NEwwIDQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NGwyNTYgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTI4OC0xMjggMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJMMjI0IDAgNjQgMHpNMjU2IDBsMCAxMjggMTI4IDBMMjU2IDB6TTExMSAyNTcuMWwyNi44IDg5LjIgMzEuNi05MC4zYzMuNC05LjYgMTIuNS0xNi4xIDIyLjctMTYuMXMxOS4zIDYuNCAyMi43IDE2LjFsMzEuNiA5MC4zTDI3MyAyNTcuMWMzLjgtMTIuNyAxNy4yLTE5LjkgMjkuOS0xNi4xczE5LjkgMTcuMiAxNi4xIDI5LjlsLTQ4IDE2MGMtMyAxMC0xMiAxNi45LTIyLjQgMTcuMXMtMTkuOC02LjItMjMuMi0xNi4xTDE5MiAzMzYuNmwtMzMuMyA5NS4zYy0zLjQgOS44LTEyLjggMTYuMy0yMy4yIDE2LjFzLTE5LjUtNy4xLTIyLjQtMTcuMWwtNDgtMTYwYy0zLjgtMTIuNyAzLjQtMjYuMSAxNi4xLTI5LjlzMjYuMSAzLjQgMjkuOSAxNi4xelwiXVxufTtcbmNvbnN0IGZhRmlsZVBvd2VycG9pbnQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmlsZS1wb3dlcnBvaW50JyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmMWM0XCIsIFwiTTY0IDBDMjguNyAwIDAgMjguNyAwIDY0TDAgNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0bDI1NiAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMjg4LTEyOCAwYy0xNy43IDAtMzItMTQuMy0zMi0zMkwyMjQgMCA2NCAwek0yNTYgMGwwIDEyOCAxMjggMEwyNTYgMHpNMTM2IDI0MGw2OCAwYzQyIDAgNzYgMzQgNzYgNzZzLTM0IDc2LTc2IDc2bC00NCAwIDAgMzJjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRsMC01NiAwLTEwNGMwLTEzLjMgMTAuNy0yNCAyNC0yNHptNjggMTA0YzE1LjUgMCAyOC0xMi41IDI4LTI4cy0xMi41LTI4LTI4LTI4bC00NCAwIDAgNTYgNDQgMHpcIl1cbn07XG5jb25zdCBmYUFycm93c0xlZnRSaWdodCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhcnJvd3MtbGVmdC1yaWdodCcsXG4gIGljb246IFs1MTIsIDUxMiwgW1wiYXJyb3dzLWhcIl0sIFwiZjA3ZVwiLCBcIk00MDYuNiAzNzQuNmw5Ni05NmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM2wtOTYtOTZjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zTDQwMi43IDIyNGwtMjkzLjUgMCA0MS40LTQxLjRjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBsLTk2IDk2Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM2w5NiA5NmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zTDEwOS4zIDI4OGwyOTMuNSAwLTQxLjQgNDEuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMHpcIl1cbn07XG5jb25zdCBmYUFycm93c0ggPSBmYUFycm93c0xlZnRSaWdodDtcbmNvbnN0IGZhSG91c2VMb2NrID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hvdXNlLWxvY2snLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU1MTBcIiwgXCJNMzg0IDQ4MGMwIDExLjcgMy4xIDIyLjYgOC42IDMybC0uNiAwYy0yMi4xIDAtNDAtMTcuOS00MC00MGwwLTI0IDAtNjRjMC0xNy43LTE0LjMtMzItMzItMzJsLTY0IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMybDAgNjQgMCAyNGMwIDIyLjEtMTcuOSA0MC00MCA0MGwtMjQgMC0zMS45IDBjLTEuNSAwLTMtLjEtNC41LS4yYy0xLjIgLjEtMi40IC4yLTMuNiAuMmwtMTYgMGMtMjIuMSAwLTQwLTE3LjktNDAtNDBsMC0xMTJjMC0uOSAwLTEuOSAuMS0yLjhsMC02OS43LTMyIDBjLTE4IDAtMzItMTQtMzItMzIuMWMwLTkgMy0xNyAxMC0yNEwyNjYuNCA4YzctNyAxNS04IDIyLThzMTUgMiAyMSA3TDQ5MC43IDE2Ni4zQzQ0Ny4yIDE4MS43IDQxNiAyMjMuMiA0MTYgMjcybDAgMjQuNmMtMTkuMSAxMS4xLTMyIDMxLjctMzIgNTUuNGwwIDEyOHpNNTI4IDI0MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJsMCA0OCA2NCAwIDAtNDhjMC0xNy43LTE0LjMtMzItMzItMzJ6bS04MCAzMmMwLTQ0LjIgMzUuOC04MCA4MC04MHM4MCAzNS44IDgwIDgwbDAgNDhjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCAxMjhjMCAxNy43LTE0LjMgMzItMzIgMzJsLTE2MCAwYy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTEyOGMwLTE3LjcgMTQuMy0zMiAzMi0zMmwwLTQ4elwiXVxufTtcbmNvbnN0IGZhQ2xvdWRBcnJvd0Rvd24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2xvdWQtYXJyb3ctZG93bicsXG4gIGljb246IFs2NDAsIDUxMiwgWzYyMzM3LCBcImNsb3VkLWRvd25sb2FkXCIsIFwiY2xvdWQtZG93bmxvYWQtYWx0XCJdLCBcImYwZWRcIiwgXCJNMTQ0IDQ4MEM2NC41IDQ4MCAwIDQxNS41IDAgMzM2YzAtNjIuOCA0MC4yLTExNi4yIDk2LjItMTM1LjljLS4xLTIuNy0uMi01LjQtLjItOC4xYzAtODguNCA3MS42LTE2MCAxNjAtMTYwYzU5LjMgMCAxMTEgMzIuMiAxMzguNyA4MC4yQzQwOS45IDEwMiA0MjguMyA5NiA0NDggOTZjNTMgMCA5NiA0MyA5NiA5NmMwIDEyLjItMi4zIDIzLjgtNi40IDM0LjZDNTk2IDIzOC40IDY0MCAyOTAuMSA2NDAgMzUyYzAgNzAuNy01Ny4zIDEyOC0xMjggMTI4bC0zNjggMHptNzktMTY3bDgwIDgwYzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwbDgwLTgwYzkuNC05LjQgOS40LTI0LjYgMC0zMy45cy0yNC42LTkuNC0zMy45IDBsLTM5IDM5TDM0NCAxODRjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjRsMCAxMzQuMS0zOS0zOWMtOS40LTkuNC0yNC42LTkuNC0zMy45IDBzLTkuNCAyNC42IDAgMzMuOXpcIl1cbn07XG5jb25zdCBmYUNsb3VkRG93bmxvYWQgPSBmYUNsb3VkQXJyb3dEb3duO1xuY29uc3QgZmFDbG91ZERvd25sb2FkQWx0ID0gZmFDbG91ZEFycm93RG93bjtcbmNvbnN0IGZhQ2hpbGRyZW4gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2hpbGRyZW4nLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU0ZTFcIiwgXCJNMTYwIDBhNjQgNjQgMCAxIDEgMCAxMjhBNjQgNjQgMCAxIDEgMTYwIDB6TTg4IDQ4MGwwLTgwLTE3LjggMGMtMTAuOSAwLTE4LjYtMTAuNy0xNS4yLTIxLjFsMzEuMS05My40TDU3LjUgMzIzLjNjLTEwLjcgMTQuMS0zMC44IDE2LjgtNDQuOCA2LjJzLTE2LjgtMzAuNy02LjItNDQuOEw2NS40IDIwN2MyMi40LTI5LjYgNTcuNS00NyA5NC42LTQ3czcyLjIgMTcuNCA5NC42IDQ3bDU4LjkgNzcuN2MxMC43IDE0LjEgNy45IDM0LjItNi4yIDQ0LjhzLTM0LjIgNy45LTQ0LjgtNi4ybC0yOC42LTM3LjhMMjY1IDM3OC45YzMuNSAxMC40LTQuMyAyMS4xLTE1LjIgMjEuMUwyMzIgNDAwbDAgODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC04MC0xNiAwIDAgODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJ6TTQ4MCAwYTY0IDY0IDAgMSAxIDAgMTI4QTY0IDY0IDAgMSAxIDQ4MCAwem0tOCAzODRsMCA5NmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTE3OS41TDM5NS4xIDMyMWMtOS40IDE1LTI5LjIgMTkuNC00NC4xIDEwcy0xOS40LTI5LjItMTAtNDQuMWw1MS43LTgyLjFjMTcuNi0yNy45IDQ4LjMtNDQuOSA4MS4yLTQ0LjlsMTIuMyAwYzMzIDAgNjMuNyAxNi45IDgxLjIgNDQuOUw2MTkuMSAyODdjOS40IDE1IDQuOSAzNC43LTEwIDQ0LjFzLTM0LjcgNC45LTQ0LjEtMTBMNTUyIDMwMC41IDU1MiA0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC05Ni0xNiAwelwiXVxufTtcbmNvbnN0IGZhQ2hhbGtib2FyZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaGFsa2JvYXJkJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXCJibGFja2JvYXJkXCJdLCBcImY1MWJcIiwgXCJNOTYgMzJDNjAuNyAzMiAzMiA2MC43IDMyIDk2bDAgMjg4IDY0IDBMOTYgOTZsMzg0IDAgMCAyODggNjQgMCAwLTI4OGMwLTM1LjMtMjguNy02NC02NC02NEw5NiAzMnpNMjI0IDM4NGwwIDMyTDMyIDQxNmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmw1MTIgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtMTI4IDAgMC0zMmMwLTE3LjctMTQuMy0zMi0zMi0zMmwtMTI4IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyelwiXVxufTtcbmNvbnN0IGZhQmxhY2tib2FyZCA9IGZhQ2hhbGtib2FyZDtcbmNvbnN0IGZhVXNlckxhcmdlU2xhc2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndXNlci1sYXJnZS1zbGFzaCcsXG4gIGljb246IFs2NDAsIDUxMiwgW1widXNlci1hbHQtc2xhc2hcIl0sIFwiZjRmYVwiLCBcIk0zOC44IDUuMUMyOC40LTMuMSAxMy4zLTEuMiA1LjEgOS4yUy0xLjIgMzQuNyA5LjIgNDIuOWw1OTIgNDY0YzEwLjQgOC4yIDI1LjUgNi4zIDMzLjctNC4xczYuMy0yNS41LTQuMS0zMy43TDM4MS45IDI3NGM0OC41LTIzLjIgODIuMS03Mi43IDgyLjEtMTMwQzQ2NCA2NC41IDM5OS41IDAgMzIwIDBDMjUwLjQgMCAxOTIuNCA0OS4zIDE3OC45IDExNC45TDM4LjggNS4xek01NDUuNSA1MTJMNTI4IDUxMiAyODQuMyAzMjBsLTU5IDBDMTM2LjIgMzIwIDY0IDM5Mi4yIDY0IDQ4MS4zYzAgMTcgMTMuOCAzMC43IDMwLjcgMzAuN2w0NTAuNiAwIC4zIDB6XCJdXG59O1xuY29uc3QgZmFVc2VyQWx0U2xhc2ggPSBmYVVzZXJMYXJnZVNsYXNoO1xuY29uc3QgZmFFbnZlbG9wZU9wZW4gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZW52ZWxvcGUtb3BlbicsXG4gIGljb246IFs1MTIsIDUxMiwgWzYyMTM1XSwgXCJmMmI2XCIsIFwiTTY0IDIwOC4xTDI1NiA2NS45IDQ0OCAyMDguMWwwIDQ3LjRMMjg5LjUgMzczYy05LjcgNy4yLTIxLjQgMTEtMzMuNSAxMXMtMjMuOC0zLjktMzMuNS0xMUw2NCAyNTUuNWwwLTQ3LjR6TTI1NiAwYy0xMi4xIDAtMjMuOCAzLjktMzMuNSAxMUwyNS45IDE1Ni43QzkuNiAxNjguOCAwIDE4Ny44IDAgMjA4LjFMMCA0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzg0IDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0yMzkuOWMwLTIwLjMtOS42LTM5LjQtMjUuOS01MS40TDI4OS41IDExQzI3OS44IDMuOSAyNjguMSAwIDI1NiAwelwiXVxufTtcbmNvbnN0IGZhSGFuZHNoYWtlU2ltcGxlU2xhc2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGFuZHNoYWtlLXNpbXBsZS1zbGFzaCcsXG4gIGljb246IFs2NDAsIDUxMiwgW1wiaGFuZHNoYWtlLWFsdC1zbGFzaFwiXSwgXCJlMDVmXCIsIFwiTTM4LjggNS4xQzI4LjQtMy4xIDEzLjMtMS4yIDUuMSA5LjJTLTEuMiAzNC43IDkuMiA0Mi45bDU5MiA0NjRjMTAuNCA4LjIgMjUuNSA2LjMgMzMuNy00LjFzNi4zLTI1LjUtNC4xLTMzLjdsLTEzNS0xMDUuOGMtMS4xLTExLjQtNi4zLTIyLjMtMTUuMy0zMC43bC0xMzQuMi0xMjMtMjMuNCAxOC4yLTI2LTIwLjMgNzcuMi02MC4xYzctNS40IDE3LTQuMiAyMi41IDIuOHM0LjIgMTctMi44IDIyLjVsLTIwLjkgMTYuMkw1NTAuMiAzNTJsNDEuOCAwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4bDAtMTI4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4bC03NiAwLTQgMC0uNyAwLTMuOS0yLjVMNDM0LjggNzljLTE1LjMtOS44LTMzLjItMTUtNTEuNC0xNWMtMjEuOCAwLTQzIDcuNS02MCAyMS4ybC04OS43IDcyLjYtMjUuOC0yMC4zIDgxLjgtNjYuMmMtMTEuNi00LjktMjQuMS03LjQtMzYuOC03LjRDMjM0IDY0IDIxNS43IDY5LjYgMjAwIDgwbC0zNS41IDIzLjdMMzguOCA1LjF6TTAgMTc2TDAgMzA0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4bDEwOC4yIDAgOTEuNCA4My40YzE5LjYgMTcuOSA0OS45IDE2LjUgNjcuOC0zLjFjNS41LTYuMSA5LjItMTMuMiAxMS4xLTIwLjZsMTcgMTUuNmMxOS41IDE3LjkgNDkuOSAxNi42IDY3LjgtMi45Yy44LS44IDEuNS0xLjcgMi4yLTIuNkw0MS4yIDEyOC41QzE3LjkgMTMxLjggMCAxNTEuOCAwIDE3NnpcIl1cbn07XG5jb25zdCBmYUhhbmRzaGFrZUFsdFNsYXNoID0gZmFIYW5kc2hha2VTaW1wbGVTbGFzaDtcbmNvbnN0IGZhTWF0dHJlc3NQaWxsb3cgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbWF0dHJlc3MtcGlsbG93JyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlNTI1XCIsIFwiTTI1NiA2NEw2NCA2NEMyOC43IDY0IDAgOTIuNyAwIDEyOEwwIDM4NGMwIDM1LjMgMjguNyA2NCA2NCA2NGwxOTIgMCAwLTM4NHptMzIgMzg0bDI4OCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMjU2YzAtMzUuMy0yOC43LTY0LTY0LTY0TDI4OCA2NGwwIDM4NHpNNjQgMTYwYzAtMTcuNyAxNC4zLTMyIDMyLTMybDY0IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCAxOTJjMCAxNy43LTE0LjMgMzItMzIgMzJsLTY0IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtMTkyelwiXVxufTtcbmNvbnN0IGZhR3VhcmFuaVNpZ24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZ3VhcmFuaS1zaWduJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJlMTlhXCIsIFwiTTE5MiAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMmwwIDM0LjdDNjkuMiA4MS45IDAgMTYwLjkgMCAyNTZzNjkuMiAxNzQuMSAxNjAgMTg5LjNsMCAzNC43YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0zNC43YzkwLjgtMTUuMiAxNjAtOTQuMiAxNjAtMTg5LjNjMC0xNy43LTE0LjMtMzItMzItMzJsLTEyOCAwIDAtOTJjMjIuMSA1LjcgNDEuOCAxNy4xIDU3LjYgMzIuNmMxMi42IDEyLjQgMzIuOSAxMi4yIDQ1LjMtLjRzMTIuMi0zMi45LS41LTQ1LjNDMjk5IDkyIDI2My41IDczLjMgMjI0IDY2LjdMMjI0IDMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyek0xNjAgMTMyTDE2MCAzODBjLTU1LjItMTQuMi05Ni02NC4zLTk2LTEyNHM0MC44LTEwOS44IDk2LTEyNHpNMjI0IDM4MGwwLTkyIDkyIDBjLTExLjYgNDUtNDcgODAuNC05MiA5MnpcIl1cbn07XG5jb25zdCBmYUFycm93c1JvdGF0ZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhcnJvd3Mtcm90YXRlJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI4NDcyLCBcInJlZnJlc2hcIiwgXCJzeW5jXCJdLCBcImYwMjFcIiwgXCJNMTA1LjEgMjAyLjZjNy43LTIxLjggMjAuMi00Mi4zIDM3LjgtNTkuOGM2Mi41LTYyLjUgMTYzLjgtNjIuNSAyMjYuMyAwTDM4Ni4zIDE2MCAzNTIgMTYwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDExMS41IDBjMCAwIDAgMCAwIDBsLjQgMGMxNy43IDAgMzItMTQuMyAzMi0zMmwwLTExMmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMmwwIDM1LjJMNDE0LjQgOTcuNmMtODcuNS04Ny41LTIyOS4zLTg3LjUtMzE2LjggMEM3My4yIDEyMiA1NS42IDE1MC43IDQ0LjggMTgxLjRjLTUuOSAxNi43IDIuOSAzNC45IDE5LjUgNDAuOHMzNC45LTIuOSA0MC44LTE5LjV6TTM5IDI4OS4zYy01IDEuNS05LjggNC4yLTEzLjcgOC4yYy00IDQtNi43IDguOC04LjEgMTRjLS4zIDEuMi0uNiAyLjUtLjggMy44Yy0uMyAxLjctLjQgMy40LS40IDUuMUwxNiA0MzJjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTM1LjEgMTcuNiAxNy41YzAgMCAwIDAgMCAwYzg3LjUgODcuNCAyMjkuMyA4Ny40IDMxNi43IDBjMjQuNC0yNC40IDQyLjEtNTMuMSA1Mi45LTgzLjhjNS45LTE2LjctMi45LTM0LjktMTkuNS00MC44cy0zNC45IDIuOS00MC44IDE5LjVjLTcuNyAyMS44LTIwLjIgNDIuMy0zNy44IDU5LjhjLTYyLjUgNjIuNS0xNjMuOCA2Mi41LTIyNi4zIDBsLS4xLS4xTDEyNS42IDM1MmwzNC40IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJMNDguNCAyODhjLTEuNiAwLTMuMiAuMS00LjggLjNzLTMuMSAuNS00LjYgMXpcIl1cbn07XG5jb25zdCBmYVJlZnJlc2ggPSBmYUFycm93c1JvdGF0ZTtcbmNvbnN0IGZhU3luYyA9IGZhQXJyb3dzUm90YXRlO1xuY29uc3QgZmFGaXJlRXh0aW5ndWlzaGVyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZpcmUtZXh0aW5ndWlzaGVyJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI5NTE5XSwgXCJmMTM0XCIsIFwiTTUwMC4zIDcuM0M1MDcuNyAxMy4zIDUxMiAyMi40IDUxMiAzMmwwIDk2YzAgOS42LTQuMyAxOC43LTExLjcgMjQuN3MtMTcuMiA4LjUtMjYuNiA2LjZsLTE2MC0zMkMzMDEuNSAxMjQuOSAyOTIgMTE1LjcgMjg5IDEwNGwtNjUgMCAwIDM0LjhjMzcuOCAxOCA2NCA1Ni41IDY0IDEwMS4ybDAgMTQ0TDY0IDM4NGwwLTE0NGMwLTQ0LjcgMjYuMi04My4yIDY0LTEwMS4ybDAtMjguOGMtMzYuMiAxMS4xLTY2IDM2LjktODIuMyA3MC41Yy01LjggMTEuOS0yMC4yIDE2LjktMzIuMSAxMS4xUy0zLjMgMTcxLjQgMi41IDE1OS41QzI2LjcgMTA5LjggNzIuNyA3Mi42IDEyOCA2MC40TDEyOCAzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMmwzMiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgMjQgNjUgMGMzLTExLjcgMTIuNS0yMC45IDI0LjctMjMuNGwxNjAtMzJjOS40LTEuOSAxOS4xIC42IDI2LjYgNi42ek0yODggNDE2bDAgMzJjMCAzNS4zLTI4LjcgNjQtNjQgNjRsLTk2IDBjLTM1LjMgMC02NC0yOC43LTY0LTY0bDAtMzIgMjI0IDB6TTE3NiA5NmExNiAxNiAwIDEgMCAwLTMyIDE2IDE2IDAgMSAwIDAgMzJ6XCJdXG59O1xuY29uc3QgZmFDcnV6ZWlyb1NpZ24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY3J1emVpcm8tc2lnbicsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZTE1MlwiLCBcIk05NiAyNTZjMC04OC40IDcxLjYtMTYwIDE2MC0xNjBjNDEgMCA3OC4zIDE1LjQgMTA2LjcgNDAuN2MxMy4yIDExLjggMzMuNCAxMC43IDQ1LjItMi41czEwLjctMzMuNC0yLjUtNDUuMmMtMzkuNi0zNS41LTkyLTU3LTE0OS4zLTU3QzEzMi4zIDMyIDMyIDEzMi4zIDMyIDI1NnMxMDAuMyAyMjQgMjI0IDIyNGM1Ny40IDAgMTA5LjctMjEuNiAxNDkuMy01N2MxMy4yLTExLjggMTQuMy0zMiAyLjUtNDUuMnMtMzItMTQuMy00NS4yLTIuNUMzMzQuMyA0MDAuNiAyOTcgNDE2IDI1NiA0MTZsMC05NiAwLTguN2MwLTEyLjggMTAuNC0yMy4zIDIzLjMtMjMuM2M0LjYgMCA5LjEgMS40IDEyLjkgMy45bDEwLjEgNi43YzE0LjcgOS44IDM0LjYgNS44IDQ0LjQtOC45czUuOC0zNC42LTguOS00NC40bC0xMC4xLTYuN2MtMTQuMy05LjYtMzEuMi0xNC43LTQ4LjQtMTQuN2MtMTIuNCAwLTI0LjIgMi42LTM0LjkgNy4zYy01LjUtNC41LTEyLjYtNy4zLTIwLjMtNy4zYy0xNy43IDAtMzIgMTQuMy0zMiAzMmwwIDU1LjMgMCA4LjcgMCA4Mi43QzEzNS41IDM3OCA5NiAzMjEuNiA5NiAyNTZ6XCJdXG59O1xuY29uc3QgZmFHcmVhdGVyVGhhbkVxdWFsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2dyZWF0ZXItdGhhbi1lcXVhbCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjUzMlwiLCBcIk01Mi4xIDkzLjdDMzUuNyA4Ny4xIDI3LjcgNjguNSAzNC4zIDUyLjFzMjUuMi0yNC40IDQxLjYtMTcuOGwzMjAgMTI4QzQwOCAxNjcuMSA0MTYgMTc4LjkgNDE2IDE5MnMtOCAyNC45LTIwLjEgMjkuN2wtMzIwIDEyOGMtMTYuNCA2LjYtMzUtMS40LTQxLjYtMTcuOHMxLjQtMzUgMTcuOC00MS42TDI5Ny44IDE5MiA1Mi4xIDkzLjd6TTQxNiA0MTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJMMzIgNDgwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDM4NCAwelwiXVxufTtcbmNvbnN0IGZhU2hpZWxkSGFsdmVkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NoaWVsZC1oYWx2ZWQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtcInNoaWVsZC1hbHRcIl0sIFwiZjNlZFwiLCBcIk0yNTYgMGM0LjYgMCA5LjIgMSAxMy40IDIuOUw0NTcuNyA4Mi44YzIyIDkuMyAzOC40IDMxIDM4LjMgNTcuMmMtLjUgOTkuMi00MS4zIDI4MC43LTIxMy42IDM2My4yYy0xNi43IDgtMzYuMSA4LTUyLjggMEM1Ny4zIDQyMC43IDE2LjUgMjM5LjIgMTYgMTQwYy0uMS0yNi4yIDE2LjMtNDcuOSAzOC4zLTU3LjJMMjQyLjcgMi45QzI0Ni44IDEgMjUxLjQgMCAyNTYgMHptMCA2Ni44bDAgMzc4LjFDMzk0IDM3OCA0MzEuMSAyMzAuMSA0MzIgMTQxLjRMMjU2IDY2LjhzMCAwIDAgMHpcIl1cbn07XG5jb25zdCBmYVNoaWVsZEFsdCA9IGZhU2hpZWxkSGFsdmVkO1xuY29uc3QgZmFCb29rQXRsYXMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYm9vay1hdGxhcycsXG4gIGljb246IFs0NDgsIDUxMiwgW1wiYXRsYXNcIl0sIFwiZjU1OFwiLCBcIk0wIDk2QzAgNDMgNDMgMCA5NiAwTDM4NCAwbDMyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCAzMjBjMCAxNy43LTE0LjMgMzItMzIgMzJsMCA2NGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtMzIgMEw5NiA1MTJjLTUzIDAtOTYtNDMtOTYtOTZMMCA5NnpNNjQgNDE2YzAgMTcuNyAxNC4zIDMyIDMyIDMybDI1NiAwIDAtNjRMOTYgMzg0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnpNMjQ3LjQgMjgzLjhjLTMuNyAzLjctNi4yIDQuMi03LjQgNC4ycy0zLjctLjUtNy40LTQuMmMtMy44LTMuNy04LTEwLTExLjgtMTguOWMtNi4yLTE0LjUtMTAuOC0zNC4zLTEyLjItNTYuOWw2MyAwYy0xLjUgMjIuNi02IDQyLjQtMTIuMiA1Ni45Yy0zLjggOC45LTggMTUuMi0xMS44IDE4Ljl6bTQyLjctOS45YzcuMy0xOC4zIDEyLTQxLjEgMTMuNC02NS45bDMxLjEgMGMtNC43IDI3LjktMjEuNCA1MS43LTQ0LjUgNjUuOXptMC0xNjMuOGMyMy4yIDE0LjIgMzkuOSAzOCA0NC41IDY1LjlsLTMxLjEgMGMtMS40LTI0LjctNi4xLTQ3LjUtMTMuNC02NS45ek0zNjggMTkyYTEyOCAxMjggMCAxIDAgLTI1NiAwIDEyOCAxMjggMCAxIDAgMjU2IDB6TTE0NS4zIDIwOGwzMS4xIDBjMS40IDI0LjcgNi4xIDQ3LjUgMTMuNCA2NS45Yy0yMy4yLTE0LjItMzkuOS0zOC00NC41LTY1Ljl6bTMxLjEtMzJsLTMxLjEgMGM0LjctMjcuOSAyMS40LTUxLjcgNDQuNS02NS45Yy03LjMgMTguMy0xMiA0MS4xLTEzLjQgNjUuOXptNTYuMS03NS44YzMuNy0zLjcgNi4yLTQuMiA3LjQtNC4yczMuNyAuNSA3LjQgNC4yYzMuOCAzLjcgOCAxMCAxMS44IDE4LjljNi4yIDE0LjUgMTAuOCAzNC4zIDEyLjIgNTYuOWwtNjMgMGMxLjUtMjIuNiA2LTQyLjQgMTIuMi01Ni45YzMuOC04LjkgOC0xNS4yIDExLjgtMTguOXpcIl1cbn07XG5jb25zdCBmYUF0bGFzID0gZmFCb29rQXRsYXM7XG5jb25zdCBmYVZpcnVzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3ZpcnVzJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJlMDc0XCIsIFwiTTI4OCAzMmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMmwwIDExLjVjMCA0OS45LTYwLjMgNzQuOS05NS42IDM5LjZMMTIwLjIgNzVDMTA3LjcgNjIuNSA4Ny41IDYyLjUgNzUgNzVzLTEyLjUgMzIuOCAwIDQ1LjNsOC4yIDguMkMxMTguNCAxNjMuNyA5My40IDIyNCA0My41IDIyNEwzMiAyMjRjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsMTEuNSAwYzQ5LjkgMCA3NC45IDYwLjMgMzkuNiA5NS42TDc1IDM5MS44Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwbDguMi04LjJjMzUuMy0zNS4zIDk1LjYtMTAuMyA5NS42IDM5LjZsMCAxMS41YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0xMS41YzAtNDkuOSA2MC4zLTc0LjkgOTUuNi0zOS42bDguMiA4LjJjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM2wtOC4yLTguMmMtMzUuMy0zNS4zLTEwLjMtOTUuNiAzOS42LTk1LjZsMTEuNSAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC0xMS41IDBjLTQ5LjkgMC03NC45LTYwLjMtMzkuNi05NS42bDguMi04LjJjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBsLTguMiA4LjJDMzQ4LjMgMTE4LjQgMjg4IDkzLjQgMjg4IDQzLjVMMjg4IDMyek0xNzYgMjI0YTQ4IDQ4IDAgMSAxIDk2IDAgNDggNDggMCAxIDEgLTk2IDB6bTEyOCA1NmEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6XCJdXG59O1xuY29uc3QgZmFFbnZlbG9wZUNpcmNsZUNoZWNrID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2VudmVsb3BlLWNpcmNsZS1jaGVjaycsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTRlOFwiLCBcIk00OCA2NEMyMS41IDY0IDAgODUuNSAwIDExMmMwIDE1LjEgNy4xIDI5LjMgMTkuMiAzOC40TDIzNi44IDMxMy42YzExLjQgOC41IDI3IDguNSAzOC40IDBsNTcuNC00M2MyMy45LTU5LjggNzkuNy0xMDMuMyAxNDYuMy0xMDkuOGwxMy45LTEwLjRjMTIuMS05LjEgMTkuMi0yMy4zIDE5LjItMzguNGMwLTI2LjUtMjEuNS00OC00OC00OEw0OCA2NHpNMjk0LjQgMzM5LjJjLTIyLjggMTcuMS01NCAxNy4xLTc2LjggMEwwIDE3NiAwIDM4NGMwIDM1LjMgMjguNyA2NCA2NCA2NGwyOTYuMiAwQzMzNS4xIDQxNy42IDMyMCAzNzguNSAzMjAgMzM2YzAtNS42IC4zLTExLjEgLjgtMTYuNmwtMjYuNCAxOS44ek02NDAgMzM2YTE0NCAxNDQgMCAxIDAgLTI4OCAwIDE0NCAxNDQgMCAxIDAgMjg4IDB6bS03Ni43LTQzLjNjNi4yIDYuMiA2LjIgMTYuNCAwIDIyLjZsLTcyIDcyYy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMGwtNDAtNDBjLTYuMi02LjItNi4yLTE2LjQgMC0yMi42czE2LjQtNi4yIDIyLjYgMEw0ODAgMzUzLjRsNjAuNy02MC43YzYuMi02LjIgMTYuNC02LjIgMjIuNiAwelwiXVxufTtcbmNvbnN0IGZhTGF5ZXJHcm91cCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdsYXllci1ncm91cCcsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjVmZFwiLCBcIk0yNjQuNSA1LjJjMTQuOS02LjkgMzIuMS02LjkgNDcgMGwyMTguNiAxMDFjOC41IDMuOSAxMy45IDEyLjQgMTMuOSAyMS44cy01LjQgMTcuOS0xMy45IDIxLjhsLTIxOC42IDEwMWMtMTQuOSA2LjktMzIuMSA2LjktNDcgMEw0NS45IDE0OS44QzM3LjQgMTQ1LjggMzIgMTM3LjMgMzIgMTI4czUuNC0xNy45IDEzLjktMjEuOEwyNjQuNSA1LjJ6TTQ3Ni45IDIwOS42bDUzLjIgMjQuNmM4LjUgMy45IDEzLjkgMTIuNCAxMy45IDIxLjhzLTUuNCAxNy45LTEzLjkgMjEuOGwtMjE4LjYgMTAxYy0xNC45IDYuOS0zMi4xIDYuOS00NyAwTDQ1LjkgMjc3LjhDMzcuNCAyNzMuOCAzMiAyNjUuMyAzMiAyNTZzNS40LTE3LjkgMTMuOS0yMS44bDUzLjItMjQuNiAxNTIgNzAuMmMyMy40IDEwLjggNTAuNCAxMC44IDczLjggMGwxNTItNzAuMnptLTE1MiAxOTguMmwxNTItNzAuMiA1My4yIDI0LjZjOC41IDMuOSAxMy45IDEyLjQgMTMuOSAyMS44cy01LjQgMTcuOS0xMy45IDIxLjhsLTIxOC42IDEwMWMtMTQuOSA2LjktMzIuMSA2LjktNDcgMEw0NS45IDQwNS44QzM3LjQgNDAxLjggMzIgMzkzLjMgMzIgMzg0czUuNC0xNy45IDEzLjktMjEuOGw1My4yLTI0LjYgMTUyIDcwLjJjMjMuNCAxMC44IDUwLjQgMTAuOCA3My44IDB6XCJdXG59O1xuY29uc3QgZmFBcnJvd3NUb0RvdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhcnJvd3MtdG8tZG90JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJlNGJlXCIsIFwiTTI1NiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgMzIgMzIgMGMxMi45IDAgMjQuNiA3LjggMjkuNiAxOS44czIuMiAyNS43LTYuOSAzNC45bC02NCA2NGMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBsLTY0LTY0Yy05LjItOS4yLTExLjktMjIuOS02LjktMzQuOXMxNi42LTE5LjggMjkuNi0xOS44bDMyIDAgMC0zMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNMTY5LjQgMzkzLjRsNjQtNjRjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDBsNjQgNjRjOS4yIDkuMiAxMS45IDIyLjkgNi45IDM0LjlzLTE2LjYgMTkuOC0yOS42IDE5LjhsLTMyIDAgMCAzMmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTMyLTMyIDBjLTEyLjkgMC0yNC42LTcuOC0yOS42LTE5LjhzLTIuMi0yNS43IDYuOS0zNC45ek0zMiAyMjRsMzIgMCAwLTMyYzAtMTIuOSA3LjgtMjQuNiAxOS44LTI5LjZzMjUuNy0yLjIgMzQuOSA2LjlsNjQgNjRjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNsLTY0IDY0Yy05LjIgOS4yLTIyLjkgMTEuOS0zNC45IDYuOXMtMTkuOC0xNi42LTE5LjgtMjkuNmwwLTMyLTMyIDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJ6bTI5Ny40IDU0LjZjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zbDY0LTY0YzkuMi05LjIgMjIuOS0xMS45IDM0LjktNi45czE5LjggMTYuNiAxOS44IDI5LjZsMCAzMiAzMiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC0zMiAwIDAgMzJjMCAxMi45LTcuOCAyNC42LTE5LjggMjkuNnMtMjUuNyAyLjItMzQuOS02LjlsLTY0LTY0ek0yNTYgMjI0YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIl1cbn07XG5jb25zdCBmYUFyY2h3YXkgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYXJjaHdheScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjU1N1wiLCBcIk0zMiAzMkMxNC4zIDMyIDAgNDYuMyAwIDY0UzE0LjMgOTYgMzIgOTZsNDQ4IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJMMzIgMzJ6bTAgMzg0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDY0IDAgNjQgMCAwLTEyOGMwLTUzIDQzLTk2IDk2LTk2czk2IDQzIDk2IDk2bDAgMTI4IDY0IDAgNjQgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwwLTI4OEwzMiAxMjhsMCAyODh6XCJdXG59O1xuY29uc3QgZmFIZWFydENpcmNsZUNoZWNrID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hlYXJ0LWNpcmNsZS1jaGVjaycsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZTRmZFwiLCBcIk00Ny42IDMwMC40TDIyOC4zIDQ2OS4xYzcuNSA3IDE3LjQgMTAuOSAyNy43IDEwLjlzMjAuMi0zLjkgMjcuNy0xMC45bDIuNi0yLjRDMjY3LjIgNDM4LjYgMjU2IDQwNC42IDI1NiAzNjhjMC05Ny4yIDc4LjgtMTc2IDE3Ni0xNzZjMjguMyAwIDU1IDYuNyA3OC43IDE4LjVjLjktNi41IDEuMy0xMyAxLjMtMTkuNmwwLTUuOGMwLTY5LjktNTAuNS0xMjkuNS0xMTkuNC0xNDFDMzQ3IDM2LjUgMzAwLjYgNTEuNCAyNjggODRMMjU2IDk2IDI0NCA4NGMtMzIuNi0zMi42LTc5LTQ3LjUtMTI0LjYtMzkuOUM1MC41IDU1LjYgMCAxMTUuMiAwIDE4NS4xbDAgNS44YzAgNDEuNSAxNy4yIDgxLjIgNDcuNiAxMDkuNXpNNTc2IDM2OGExNDQgMTQ0IDAgMSAwIC0yODggMCAxNDQgMTQ0IDAgMSAwIDI4OCAwem0tNzYuNy00My4zYzYuMiA2LjIgNi4yIDE2LjQgMCAyMi42bC03MiA3MmMtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBsLTQwLTQwYy02LjItNi4yLTYuMi0xNi40IDAtMjIuNnMxNi40LTYuMiAyMi42IDBMNDE2IDM4NS40bDYwLjctNjAuN2M2LjItNi4yIDE2LjQtNi4yIDIyLjYgMHpcIl1cbn07XG5jb25zdCBmYUhvdXNlQ2hpbW5leUNyYWNrID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hvdXNlLWNoaW1uZXktY3JhY2snLFxuICBpY29uOiBbNTc2LCA1MTIsIFtcImhvdXNlLWRhbWFnZVwiXSwgXCJmNmYxXCIsIFwiTTU3NS44IDI1NS41YzAgMTgtMTUgMzIuMS0zMiAzMi4xbC0zMiAwIC43IDE2MC4yYy4yIDM1LjUtMjguNSA2NC4zLTY0IDY0LjNsLTEyMi4xIDBMMjg4IDQ0OGw4MC44LTY3LjNjNy44LTYuNSA3LjYtMTguNi0uNC0yNC45TDI1MC42IDI2My4yYy0xNC42LTExLjUtMzMuOCA3LTIyLjggMjJMMjg4IDM2OGwtODUuNSA3MS4yYy02LjEgNS03LjUgMTMuOC0zLjUgMjAuNUwyMzAuNCA1MTJsLTEwMi4zIDBjLTM1LjMgMC02NC0yOC43LTY0LTY0bDAtMTYwLjQtMzIgMGMtMTggMC0zMi0xNC0zMi0zMi4xYzAtOSAzLTE3IDEwLTI0TDI2Ni40IDhjNy03IDE1LTggMjItOHMxNSAyIDIxIDdMNDE2IDEwMC43IDQxNiA2NGMwLTE3LjcgMTQuMy0zMiAzMi0zMmwzMiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgMTIxIDUyLjggNDYuNGM4IDcgMTIgMTUgMTEgMjR6XCJdXG59O1xuY29uc3QgZmFIb3VzZURhbWFnZSA9IGZhSG91c2VDaGltbmV5Q3JhY2s7XG5jb25zdCBmYUZpbGVaaXBwZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmlsZS16aXBwZXInLFxuICBpY29uOiBbMzg0LCA1MTIsIFtcImZpbGUtYXJjaGl2ZVwiXSwgXCJmMWM2XCIsIFwiTTY0IDBDMjguNyAwIDAgMjguNyAwIDY0TDAgNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0bDI1NiAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMjg4LTEyOCAwYy0xNy43IDAtMzItMTQuMy0zMi0zMkwyMjQgMCA2NCAwek0yNTYgMGwwIDEyOCAxMjggMEwyNTYgMHpNOTYgNDhjMC04LjggNy4yLTE2IDE2LTE2bDMyIDBjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZsLTMyIDBjLTguOCAwLTE2LTcuMi0xNi0xNnptMCA2NGMwLTguOCA3LjItMTYgMTYtMTZsMzIgMGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2em0wIDY0YzAtOC44IDcuMi0xNiAxNi0xNmwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2bC0zMiAwYy04LjggMC0xNi03LjItMTYtMTZ6bS02LjMgNzEuOGMzLjctMTQgMTYuNC0yMy44IDMwLjktMjMuOGwxNC44IDBjMTQuNSAwIDI3LjIgOS43IDMwLjkgMjMuOGwyMy41IDg4LjJjMS40IDUuNCAyLjEgMTAuOSAyLjEgMTYuNGMwIDM1LjItMjguOCA2My43LTY0IDYzLjdzLTY0LTI4LjUtNjQtNjMuN2MwLTUuNSAuNy0xMS4xIDIuMS0xNi40bDIzLjUtODguMnpNMTEyIDMzNmMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmwzMiAwYzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2bC0zMiAwelwiXVxufTtcbmNvbnN0IGZhRmlsZUFyY2hpdmUgPSBmYUZpbGVaaXBwZXI7XG5jb25zdCBmYVNxdWFyZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzcXVhcmUnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFs5NjMyLCA5NzIzLCA5NzI0LCA2MTU5MF0sIFwiZjBjOFwiLCBcIk0wIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMySDM4NGMzNS4zIDAgNjQgMjguNyA2NCA2NFY0MTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0Vjk2elwiXVxufTtcbmNvbnN0IGZhTWFydGluaUdsYXNzRW1wdHkgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbWFydGluaS1nbGFzcy1lbXB0eScsXG4gIGljb246IFs1MTIsIDUxMiwgW1wiZ2xhc3MtbWFydGluaVwiXSwgXCJmMDAwXCIsIFwiTTMyIDBDMTkuMSAwIDcuNCA3LjggMi40IDE5LjhzLTIuMiAyNS43IDYuOSAzNC45TDIyNCAyNjkuMyAyMjQgNDQ4bC02NCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDk2IDAgOTYgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtNjQgMCAwLTE3OC43TDUwMi42IDU0LjZjOS4yLTkuMiAxMS45LTIyLjkgNi45LTM0LjlTNDkyLjkgMCA0ODAgMEwzMiAwek0yNTYgMjEwLjdMMTA5LjMgNjRsMjkzLjUgMEwyNTYgMjEwLjd6XCJdXG59O1xuY29uc3QgZmFHbGFzc01hcnRpbmkgPSBmYU1hcnRpbmlHbGFzc0VtcHR5O1xuY29uc3QgZmFDb3VjaCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjb3VjaCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjRiOFwiLCBcIk02NCAxNjBDNjQgODkuMyAxMjEuMyAzMiAxOTIgMzJsMjU2IDBjNzAuNyAwIDEyOCA1Ny4zIDEyOCAxMjhsMCAzMy42Yy0zNi41IDcuNC02NCAzOS43LTY0IDc4LjRsMCA0OC0zODQgMCAwLTQ4YzAtMzguNy0yNy41LTcxLTY0LTc4LjRMNjQgMTYwek01NDQgMjcyYzAtMjAuOSAxMy40LTM4LjcgMzItNDUuM2M1LTEuOCAxMC40LTIuNyAxNi0yLjdjMjYuNSAwIDQ4IDIxLjUgNDggNDhsMCAxNzZjMCAxNy43LTE0LjMgMzItMzIgMzJsLTMyIDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyTDk2IDQ0OGMwIDE3LjctMTQuMyAzMi0zMiAzMmwtMzIgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJMMCAyNzJjMC0yNi41IDIxLjUtNDggNDgtNDhjNS42IDAgMTEgMSAxNiAyLjdjMTguNiA2LjYgMzIgMjQuNCAzMiA0NS4zbDAgNDggMCAzMiAzMiAwIDM4NCAwIDMyIDAgMC0zMiAwLTQ4elwiXVxufTtcbmNvbnN0IGZhQ2VkaVNpZ24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2VkaS1zaWduJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJlMGRmXCIsIFwiTTI1NiAzMmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMmwwIDM0LjdDMTAxLjIgODEuOSAzMiAxNjAuOSAzMiAyNTZzNjkuMiAxNzQuMSAxNjAgMTg5LjNsMCAzNC43YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0zNC43YzMwLjktNS4yIDU5LjItMTcuNyA4My4yLTM1LjhjMTQuMS0xMC42IDE3LTMwLjcgNi40LTQ0LjhzLTMwLjctMTctNDQuOC02LjRjLTEzLjIgOS45LTI4LjMgMTcuMy00NC44IDIxLjZMMjU2IDEzMmMxNi40IDQuMiAzMS42IDExLjYgNDQuOCAyMS42YzE0LjEgMTAuNiAzNC4yIDcuOCA0NC44LTYuNHM3LjgtMzQuMi02LjQtNDQuOGMtMjQtMTgtNTIuNC0zMC42LTgzLjItMzUuOEwyNTYgMzJ6TTE5MiAxMzJMMTkyIDM4MGMtNTUuMi0xNC4yLTk2LTY0LjMtOTYtMTI0czQwLjgtMTA5LjggOTYtMTI0elwiXVxufTtcbmNvbnN0IGZhSXRhbGljID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2l0YWxpYycsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjAzM1wiLCBcIk0xMjggNjRjMC0xNy43IDE0LjMtMzIgMzItMzJsMTkyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTU4LjcgMEwxNjAgNDE2bDY0IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJMMzIgNDgwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDU4LjcgMEwyMjQgOTZsLTY0IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyelwiXVxufTtcbmNvbnN0IGZhVGFibGVDZWxsc0NvbHVtbkxvY2sgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndGFibGUtY2VsbHMtY29sdW1uLWxvY2snLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU2NzhcIiwgXCJNMCA5NkMwIDYwLjcgMjguNyAzMiA2NCAzMmwzODQgMGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDY1LjFjLTM3LjggNS40LTY5LjQgMjkuNi04NS4yIDYyLjlMMzYwIDIyNGwwIDY0IDU2IDAgMCA4LjZjLTE5LjEgMTEuMS0zMiAzMS43LTMyIDU1LjRsLTI0IDAgMCA2NCAyNCAwIDAgNjRMNjQgNDgwYy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDk2em0yMDggMGwwIDY0IDg4IDAgMC02NC04OCAwem0yNDAgMGwtODggMCAwIDY0IDg4IDAgMC02NHpNMjA4IDIyNGwwIDY0IDg4IDAgMC02NC04OCAwem0wIDEyOGwwIDY0IDg4IDAgMC02NC04OCAwek01MjggMjQwYy0xNy43IDAtMzIgMTQuMy0zMiAzMmwwIDQ4IDY0IDAgMC00OGMwLTE3LjctMTQuMy0zMi0zMi0zMnptLTgwIDMyYzAtNDQuMiAzNS44LTgwIDgwLTgwczgwIDM1LjggODAgODBsMCA0OGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDEyOGMwIDE3LjctMTQuMyAzMi0zMiAzMmwtMTYwIDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtMTI4YzAtMTcuNyAxNC4zLTMyIDMyLTMybDAtNDh6XCJdXG59O1xuY29uc3QgZmFDaHVyY2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2h1cmNoJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbOTk2Ml0sIFwiZjUxZFwiLCBcIk0zNDQgMjRjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjRsMCAyNC0zMiAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0bDMyIDAgMCA0Ni40TDE4My4zIDIxMGMtMTQuNSA4LjctMjMuMyAyNC4zLTIzLjMgNDEuMkwxNjAgNTEybDk2IDAgMC05NmMwLTM1LjMgMjguNy02NCA2NC02NHM2NCAyOC43IDY0IDY0bDAgOTYgOTYgMCAwLTI2MC44YzAtMTYuOS04LjgtMzIuNS0yMy4zLTQxLjJMMzQ0IDE0Mi40IDM0NCA5NmwzMiAwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0bC0zMiAwIDAtMjR6TTI0LjkgMzMwLjNDOS41IDMzOC44IDAgMzU0LjkgMCAzNzIuNEwwIDQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGw4MCAwIDAtMjM4LjRMMjQuOSAzMzAuM3pNNTkyIDUxMmMyNi41IDAgNDgtMjEuNSA0OC00OGwwLTkxLjZjMC0xNy41LTkuNS0zMy42LTI0LjktNDIuMUw1MTIgMjczLjYgNTEyIDUxMmw4MCAwelwiXVxufTtcbmNvbnN0IGZhQ29tbWVudHNEb2xsYXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY29tbWVudHMtZG9sbGFyJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNjUzXCIsIFwiTTQxNiAxNzZjMCA5Ny4yLTkzLjEgMTc2LTIwOCAxNzZjLTM4LjIgMC03My45LTguNy0xMDQuNy0yMy45Yy03LjUgNC0xNiA3LjktMjUuMiAxMS40QzU5LjggMzQ2LjQgMzcuOCAzNTIgMTYgMzUyYy02LjkgMC0xMy4xLTQuNS0xNS4yLTExLjFzLjItMTMuOCA1LjgtMTcuOWMwIDAgMCAwIDAgMHMwIDAgMCAwbC4yLS4yYy4yLS4yIC42LS40IDEuMS0uOGMxLS44IDIuNS0yIDQuMy0zLjdjMy42LTMuMyA4LjUtOC4xIDEzLjMtMTQuM2M1LjUtNyAxMC43LTE1LjQgMTQuMi0yNC43QzE0LjcgMjUwLjMgMCAyMTQuNiAwIDE3NkMwIDc4LjggOTMuMSAwIDIwOCAwUzQxNiA3OC44IDQxNiAxNzZ6TTIzMS41IDM4M0MzNDguOSAzNzIuOSA0NDggMjg4LjMgNDQ4IDE3NmMwLTUuMi0uMi0xMC40LS42LTE1LjVDNTU1LjEgMTY3LjEgNjQwIDI0My4yIDY0MCAzMzZjMCAzOC42LTE0LjcgNzQuMy0zOS42IDEwMy40YzMuNSA5LjQgOC43IDE3LjcgMTQuMiAyNC43YzQuOCA2LjIgOS43IDExIDEzLjMgMTQuM2MxLjggMS42IDMuMyAyLjkgNC4zIDMuN2MuNSAuNCAuOSAuNyAxLjEgLjhsLjIgLjJzMCAwIDAgMHMwIDAgMCAwYzUuNiA0LjEgNy45IDExLjMgNS44IDE3LjljLTIuMSA2LjYtOC4zIDExLjEtMTUuMiAxMS4xYy0yMS44IDAtNDMuOC01LjYtNjIuMS0xMi41Yy05LjItMy41LTE3LjgtNy40LTI1LjItMTEuNEM1MDUuOSA1MDMuMyA0NzAuMiA1MTIgNDMyIDUxMmMtOTUuNiAwLTE3Ni4yLTU0LjYtMjAwLjUtMTI5ek0yMjggNzJjMC0xMS05LTIwLTIwLTIwcy0yMCA5LTIwIDIwbDAgMTRjLTcuNiAxLjctMTUuMiA0LjQtMjIuMiA4LjVjLTEzLjkgOC4zLTI1LjkgMjIuOC0yNS44IDQzLjljLjEgMjAuMyAxMiAzMy4xIDI0LjcgNDAuN2MxMSA2LjYgMjQuNyAxMC44IDM1LjYgMTRsMS43IC41YzEyLjYgMy44IDIxLjggNi44IDI4IDEwLjdjNS4xIDMuMiA1LjggNS40IDUuOSA4LjJjLjEgNS0xLjggOC01LjkgMTAuNWMtNSAzLjEtMTIuOSA1LTIxLjQgNC43Yy0xMS4xLS40LTIxLjUtMy45LTM1LjEtOC41Yy0yLjMtLjgtNC43LTEuNi03LjItMi40Yy0xMC41LTMuNS0yMS44IDIuMi0yNS4zIDEyLjZzMi4yIDIxLjggMTIuNiAyNS4zYzEuOSAuNiA0IDEuMyA2LjEgMi4xYzAgMCAwIDAgMCAwczAgMCAwIDBjOC4zIDIuOSAxNy45IDYuMiAyOC4yIDguNGwwIDE0LjZjMCAxMSA5IDIwIDIwIDIwczIwLTkgMjAtMjBsMC0xMy44YzgtMS43IDE2LTQuNSAyMy4yLTljMTQuMy04LjkgMjUuMS0yNC4xIDI0LjgtNDVjLS4zLTIwLjMtMTEuNy0zMy40LTI0LjYtNDEuNmMtMTEuNS03LjItMjUuOS0xMS42LTM3LjEtMTVsLS43LS4yYy0xMi44LTMuOS0yMS45LTYuNy0yOC4zLTEwLjVjLTUuMi0zLjEtNS4zLTQuOS01LjMtNi43YzAtMy43IDEuNC02LjUgNi4yLTkuM2M1LjQtMy4yIDEzLjYtNS4xIDIxLjUtNWM5LjYgLjEgMjAuMiAyLjIgMzEuMiA1LjJjMTAuNyAyLjggMjEuNi0zLjUgMjQuNS0xNC4ycy0zLjUtMjEuNi0xNC4yLTI0LjVjLTYuNS0xLjctMTMuNy0zLjQtMjEuMS00LjdMMjI4IDcyelwiXVxufTtcbmNvbnN0IGZhRGVtb2NyYXQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZGVtb2NyYXQnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY3NDdcIiwgXCJNNjQgMzJjMC04LjkgMy44LTIwLjkgNi4yLTI3LjNDNzEuMiAxLjggNzQgMCA3NyAwYzEuOSAwIDMuOCAuNyA1LjIgMi4xTDEyOCA0NS43IDE3My44IDIuMUMxNzUuMiAuNyAxNzcuMSAwIDE3OSAwYzMgMCA1LjggMS44IDYuOCA0LjdjMi40IDYuNSA2LjIgMTguNCA2LjIgMjcuM2MwIDI2LjUtMjEuOSA0Mi0yOS41IDQ2LjZsNzYuMiA3Mi42YzYgNS43IDEzLjkgOC44IDIyLjEgOC44TDQ4MCAxNjBsMzIgMGM0MC4zIDAgNzguMiAxOSAxMDIuNCA1MS4ybDE5LjIgMjUuNmMxMC42IDE0LjEgNy43IDM0LjItNi40IDQ0LjhzLTM0LjIgNy43LTQ0LjgtNi40bC0xOS4yLTI1LjZjLTUuMy03LTExLjgtMTIuOC0xOS4yLTE3bDAgODcuNC0zNTIgMC00MC40LTk0LjNjLTMuOS05LjItMTUuMy0xMi42LTIzLjYtN2wtNDIuMSAyOGMtOS4xIDYuMS0xOS43IDkuMy0zMC43IDkuM2wtMiAwQzIzLjkgMjU2IDAgMjMyLjEgMCAyMDIuN2MwLTEyLjEgNC4xLTIzLjggMTEuNy0zMy4zTDg3LjYgNzQuNkM3OC4xIDY3LjQgNjQgNTMuMiA2NCAzMnpNNDQ4IDM1Mmw5NiAwIDAgNjQgMCA2NGMwIDE3LjctMTQuMyAzMi0zMiAzMmwtMzIgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC02NC0xNjAgMCAwIDY0YzAgMTcuNy0xNC4zIDMyLTMyIDMybC0zMiAwYy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTY0IDAtNjQgOTYgMCAxNjAgMHpNMjYwLjkgMjEwLjljLS45LTEuOC0yLjgtMi45LTQuOC0yLjlzLTMuOSAxLjEtNC44IDIuOWwtMTAuNSAyMC41LTIzLjUgMy4zYy0yIC4zLTMuNyAxLjYtNC4zIDMuNXMtLjEgMy45IDEuMyA1LjNsMTcgMTYtNCAyMi42Yy0uMyAxLjkgLjUgMy45IDIuMSA1czMuOCAxLjMgNS42IC40bDIxLTEwLjcgMjEgMTAuN2MxLjggLjkgNCAuOCA1LjYtLjRzMi41LTMuMSAyLjEtNWwtNC0yMi42IDE3LTE2YzEuNS0xLjQgMi0zLjQgMS4zLTUuM3MtMi4zLTMuMi00LjMtMy41bC0yMy41LTMuMy0xMC41LTIwLjV6TTM2OC4xIDIwOGMtMiAwLTMuOSAxLjEtNC44IDIuOWwtMTAuNSAyMC41LTIzLjUgMy4zYy0yIC4zLTMuNyAxLjYtNC4zIDMuNXMtLjEgMy45IDEuMyA1LjNsMTcgMTYtNCAyMi42Yy0uMyAxLjkgLjUgMy45IDIuMSA1czMuOCAxLjMgNS42IC40bDIxLTEwLjcgMjEgMTAuN2MxLjggLjkgNCAuOCA1LjYtLjRzMi41LTMuMSAyLjEtNWwtNC0yMi42IDE3LTE2YzEuNS0xLjQgMi0zLjQgMS40LTUuM3MtMi4zLTMuMi00LjMtMy41bC0yMy41LTMuMy0xMC41LTIwLjVjLS45LTEuOC0yLjgtMi45LTQuOC0yLjl6bTExNi44IDIuOWMtLjktMS44LTIuOC0yLjktNC44LTIuOXMtMy45IDEuMS00LjggMi45bC0xMC41IDIwLjUtMjMuNSAzLjNjLTIgLjMtMy43IDEuNi00LjMgMy41cy0uMSAzLjkgMS4zIDUuM2wxNyAxNi00IDIyLjZjLS4zIDEuOSAuNSAzLjkgMi4xIDVzMy44IDEuMyA1LjYgLjRsMjEtMTAuNyAyMSAxMC43YzEuOCAuOSA0IC44IDUuNi0uNHMyLjUtMy4xIDIuMS01bC00LTIyLjYgMTctMTZjMS41LTEuNCAyLTMuNCAxLjQtNS4zcy0yLjMtMy4yLTQuMy0zLjVsLTIzLjUtMy4zLTEwLjUtMjAuNXpcIl1cbn07XG5jb25zdCBmYVogPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAneicsXG4gIGljb246IFszODQsIDUxMiwgWzEyMl0sIFwiNWFcIiwgXCJNMCA2NEMwIDQ2LjMgMTQuMyAzMiAzMiAzMmwzMjAgMGMxMi40IDAgMjMuNyA3LjIgMjkgMTguNHMzLjYgMjQuNS00LjQgMzQuMUwxMDAuMyA0MTYgMzUyIDQxNmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkwzMiA0ODBjLTEyLjQgMC0yMy43LTcuMi0yOS0xOC40cy0zLjYtMjQuNSA0LjQtMzQuMUwyODMuNyA5NiAzMiA5NkMxNC4zIDk2IDAgODEuNyAwIDY0elwiXVxufTtcbmNvbnN0IGZhUGVyc29uU2tpaW5nID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BlcnNvbi1za2lpbmcnLFxuICBpY29uOiBbNTEyLCA1MTIsIFs5OTc1LCBcInNraWluZ1wiXSwgXCJmN2M5XCIsIFwiTTM4MC43IDQ4YTQ4IDQ4IDAgMSAxIDk2IDAgNDggNDggMCAxIDEgLTk2IDB6TTIuNyAyNjguOWM2LjEtMTEuOCAyMC42LTE2LjMgMzIuNC0xMC4yTDIzMi43IDM2MS4zbDQ2LjItNjkuMi03NS4xLTc1LjFjLTE0LjYtMTQuNi0yMC40LTMzLjktMTguNC01Mi4xbDEwOC44IDUyIDM5LjMgMzkuM2MxNi4yIDE2LjIgMTguNyA0MS41IDYgNjAuNkwyODkuOCAzOTFsMTI4LjcgNjYuOGMxMy42IDcuMSAyOS44IDcuMiA0My42IC4zbDE1LjItNy42YzExLjktNS45IDI2LjMtMS4xIDMyLjIgMTAuN3MxLjEgMjYuMy0xMC43IDMyLjJsLTE1LjIgNy42Yy0yNy41IDEzLjctNTkuOSAxMy41LTg3LjItLjdMMTIuOSAzMDEuM0MxLjIgMjk1LjItMy40IDI4MC43IDIuNyAyNjguOXpNMTE4LjkgNjUuNkwxMzcgNzQuMmw4LjctMTcuNGM0LTcuOSAxMy42LTExLjEgMjEuNS03LjJzMTEuMSAxMy42IDcuMiAyMS41bC04LjUgMTYuOSA1NC43IDI2LjJjMS41LS43IDMuMS0xLjQgNC43LTIuMWw4My40LTMzLjRjMzQuMi0xMy43IDcyLjggNC4yIDg0LjUgMzkuMmwxNy4xIDUxLjIgNTIuMSAyNi4xYzE1LjggNy45IDIyLjIgMjcuMSAxNC4zIDQyLjlzLTI3LjEgMjIuMi00Mi45IDE0LjNsLTU4LjEtMjljLTExLjQtNS43LTIwLTE1LjctMjQuMS0yNy44bC01LjgtMTcuMy0yNy4zIDEyLjEtNi44IDMtNi43LTMuMkwxNTEuNSAxMTYuN2wtOS4yIDE4LjRjLTQgNy45LTEzLjYgMTEuMS0yMS41IDcuMnMtMTEuMS0xMy42LTcuMi0yMS41bDktMTgtMTcuNi04LjRjLTgtMy44LTExLjMtMTMuNC03LjUtMjEuM3MxMy40LTExLjMgMjEuMy03LjV6XCJdXG59O1xuY29uc3QgZmFTa2lpbmcgPSBmYVBlcnNvblNraWluZztcbmNvbnN0IGZhUm9hZExvY2sgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncm9hZC1sb2NrJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlNTY3XCIsIFwiTTI4OCAzMmwtNzQuOCAwYy0yNy4xIDAtNTEuMyAxNy4xLTYwLjMgNDIuNkwzNS4xIDQwNy4yYy0yLjEgNS45LTMuMSAxMi0zLjEgMTguMkMzMiA0NTUuNSA1Ni41IDQ4MCA4Ni42IDQ4MEwyODggNDgwbDAtNjRjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMmwwIDY0IDMyIDAgMC0xMjhjMC0yMy43IDEyLjktNDQuNCAzMi01NS40bDAtMjQuNmMwLTU4LjMgNDQuNi0xMDYuMiAxMDEuNS0xMTEuNUw0ODcuMSA3NC42QzQ3OCA0OS4xIDQ1My45IDMyIDQyNi44IDMyTDM1MiAzMmwwIDY0YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtNjR6bTY0IDE5MmwwIDY0YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtNjRjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnptMTc2IDE2YzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgNDgtNjQgMCAwLTQ4YzAtMTcuNyAxNC4zLTMyIDMyLTMyem0tODAgMzJsMCA0OGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJsMCAxMjhjMCAxNy43IDE0LjMgMzIgMzIgMzJsMTYwIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJsMC0xMjhjMC0xNy43LTE0LjMtMzItMzItMzJsMC00OGMwLTQ0LjItMzUuOC04MC04MC04MHMtODAgMzUuOC04MCA4MHpcIl1cbn07XG5jb25zdCBmYUEgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYScsXG4gIGljb246IFszODQsIDUxMiwgWzk3XSwgXCI0MVwiLCBcIk0yMjEuNSA1MS43QzIxNi42IDM5LjggMjA0LjkgMzIgMTkyIDMycy0yNC42IDcuOC0yOS41IDE5LjdsLTEyMCAyODgtNDAgOTZjLTYuOCAxNi4zIC45IDM1IDE3LjIgNDEuOHMzNS0uOSA0MS44LTE3LjJMOTMuMyAzODRsMTk3LjMgMCAzMS44IDc2LjNjNi44IDE2LjMgMjUuNSAyNCA0MS44IDE3LjJzMjQtMjUuNSAxNy4yLTQxLjhsLTQwLTk2LTEyMC0yODh6TTI2NCAzMjBsLTE0NCAwIDcyLTE3Mi44TDI2NCAzMjB6XCJdXG59O1xuY29uc3QgZmFUZW1wZXJhdHVyZUFycm93RG93biA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0ZW1wZXJhdHVyZS1hcnJvdy1kb3duJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXCJ0ZW1wZXJhdHVyZS1kb3duXCJdLCBcImUwM2ZcIiwgXCJNMTI4IDExMmMwLTI2LjUgMjEuNS00OCA0OC00OHM0OCAyMS41IDQ4IDQ4bDAgMTY0LjVjMCAxNy4zIDcuMSAzMS45IDE1LjMgNDIuNUMyNDkuOCAzMzIuNiAyNTYgMzQ5LjUgMjU2IDM2OGMwIDQ0LjItMzUuOCA4MC04MCA4MHMtODAtMzUuOC04MC04MGMwLTE4LjUgNi4yLTM1LjQgMTYuNy00OC45YzguMi0xMC42IDE1LjMtMjUuMiAxNS4zLTQyLjVMMTI4IDExMnpNMTc2IDBDMTE0LjEgMCA2NCA1MC4xIDY0IDExMmwwIDE2NC40YzAgLjEtLjEgLjMtLjIgLjZjLS4yIC42LS44IDEuNi0xLjcgMi44QzQzLjIgMzA0LjIgMzIgMzM0LjggMzIgMzY4YzAgNzkuNSA2NC41IDE0NCAxNDQgMTQ0czE0NC02NC41IDE0NC0xNDRjMC0zMy4yLTExLjItNjMuOC0zMC4xLTg4LjFjLS45LTEuMi0xLjUtMi4yLTEuNy0yLjhjLS4xLS4zLS4yLS41LS4yLS42TDI4OCAxMTJDMjg4IDUwLjEgMjM3LjkgMCAxNzYgMHptMCA0MTZjMjYuNSAwIDQ4LTIxLjUgNDgtNDhjMC0yMC45LTEzLjQtMzguNy0zMi00NS4zbDAtNTAuN2MwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNmwwIDUwLjdjLTE4LjYgNi42LTMyIDI0LjQtMzIgNDUuM2MwIDI2LjUgMjEuNSA0OCA0OCA0OHptMzM2LTY0bC0zMiAwIDAtMjg4YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMybDAgMjg4LTMyIDBjLTEyLjkgMC0yNC42IDcuOC0yOS42IDE5LjhzLTIuMiAyNS43IDYuOSAzNC45bDY0IDY0YzYgNiAxNC4xIDkuNCAyMi42IDkuNHMxNi42LTMuNCAyMi42LTkuNGw2NC02NGM5LjItOS4yIDExLjktMjIuOSA2LjktMzQuOXMtMTYuNi0xOS44LTI5LjYtMTkuOHpcIl1cbn07XG5jb25zdCBmYVRlbXBlcmF0dXJlRG93biA9IGZhVGVtcGVyYXR1cmVBcnJvd0Rvd247XG5jb25zdCBmYUZlYXRoZXJQb2ludGVkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZlYXRoZXItcG9pbnRlZCcsXG4gIGljb246IFs1MTIsIDUxMiwgW1wiZmVhdGhlci1hbHRcIl0sIFwiZjU2YlwiLCBcIk0yNzguNSAyMTUuNkwyMyA0NzFjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45czI0LjYgOS40IDMzLjkgMGw3NC44LTc0LjhjNy40IDQuNiAxNS4zIDguMiAyMy44IDEwLjVDMjAwLjMgNDUyLjggMjcwIDQ1NC41IDMzOCA0MDkuNGMxMi4yLTguMSA1LjgtMjUuNC04LjgtMjUuNGwtMTYuMSAwYy01LjEgMC05LjItNC4xLTkuMi05LjJjMC00LjEgMi43LTcuNiA2LjUtOC44bDk3LjctMjkuM2MzLjQtMSA2LjQtMy4xIDguNC02LjFjNC40LTYuNCA4LjYtMTIuOSAxMi42LTE5LjZjNi4yLTEwLjMtMS41LTIzLTEzLjUtMjNsLTM4LjYgMGMtNS4xIDAtOS4yLTQuMS05LjItOS4yYzAtNC4xIDIuNy03LjYgNi41LTguOGw4MC45LTI0LjNjNC42LTEuNCA4LjQtNC44IDEwLjItOS4zQzQ5NC41IDE2MyA1MDcuOCA4Ni4xIDUxMS45IDM2LjhjLjgtOS45LTMtMTkuNi0xMC0yNi42cy0xNi43LTEwLjgtMjYuNi0xMEMzOTEuNSA3IDIyOC41IDQwLjUgMTM3LjQgMTMxLjZDNTcuMyAyMTEuNyA1Ni43IDMwMi4zIDcxLjMgMzU2LjRjMi4xIDcuOSAxMiA5LjYgMTcuOCAzLjhMMjUzLjYgMTk1LjhjNi4yLTYuMiAxNi40LTYuMiAyMi42IDBjNS40IDUuNCA2LjEgMTMuNiAyLjIgMTkuOHpcIl1cbn07XG5jb25zdCBmYUZlYXRoZXJBbHQgPSBmYUZlYXRoZXJQb2ludGVkO1xuY29uc3QgZmFQID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3AnLFxuICBpY29uOiBbMzIwLCA1MTIsIFsxMTJdLCBcIjUwXCIsIFwiTTAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJsOTYgMGM4OC40IDAgMTYwIDcxLjYgMTYwIDE2MHMtNzEuNiAxNjAtMTYwIDE2MGwtOTYgMCAwIDk2YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyTDAgMzIwIDAgOTZ6TTY0IDI4OGw5NiAwYzUzIDAgOTYtNDMgOTYtOTZzLTQzLTk2LTk2LTk2TDY0IDk2bDAgMTkyelwiXVxufTtcbmNvbnN0IGZhU25vd2ZsYWtlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3Nub3dmbGFrZScsXG4gIGljb246IFs0NDgsIDUxMiwgWzEwMDUyLCAxMDA1NF0sIFwiZjJkY1wiLCBcIk0yMjQgMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDMwLjEgMTUtMTVjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45bC00OSA0OSAwIDcwLjMgNjEuNC0zNS44IDE3LjctNjYuMWMzLjQtMTIuOCAxNi42LTIwLjQgMjkuNC0xN3MyMC40IDE2LjYgMTcgMjkuNGwtNS4yIDE5LjMgMjMuNi0xMy44YzE1LjMtOC45IDM0LjktMy43IDQzLjggMTEuNXMzLjggMzQuOS0xMS41IDQzLjhsLTI1LjMgMTQuOCAyMS43IDUuOGMxMi44IDMuNCAyMC40IDE2LjYgMTcgMjkuNHMtMTYuNiAyMC40LTI5LjQgMTdsLTY3LjctMTguMUwyODcuNSAyNTZsNjAuOSAzNS41IDY3LjctMTguMWMxMi44LTMuNCAyNiA0LjIgMjkuNCAxN3MtNC4yIDI2LTE3IDI5LjRsLTIxLjcgNS44IDI1LjMgMTQuOGMxNS4zIDguOSAyMC40IDI4LjUgMTEuNSA0My44cy0yOC41IDIwLjQtNDMuOCAxMS41bC0yMy42LTEzLjggNS4yIDE5LjNjMy40IDEyLjgtNC4yIDI2LTE3IDI5LjRzLTI2LTQuMi0yOS40LTE3bC0xNy43LTY2LjFMMjU2IDMxMS43bDAgNzAuMyA0OSA0OWM5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwbC0xNS0xNSAwIDMwLjFjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC0zMC4xLTE1IDE1Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45bDQ5LTQ5IDAtNzAuMy02MS40IDM1LjgtMTcuNyA2Ni4xYy0zLjQgMTIuOC0xNi42IDIwLjQtMjkuNCAxN3MtMjAuNC0xNi42LTE3LTI5LjRsNS4yLTE5LjNMNDguMSAzOTUuNmMtMTUuMyA4LjktMzQuOSAzLjctNDMuOC0xMS41cy0zLjctMzQuOSAxMS41LTQzLjhsMjUuMy0xNC44LTIxLjctNS44Yy0xMi44LTMuNC0yMC40LTE2LjYtMTctMjkuNHMxNi42LTIwLjQgMjkuNC0xN2w2Ny43IDE4LjFMMTYwLjUgMjU2IDk5LjYgMjIwLjUgMzEuOSAyMzguNmMtMTIuOCAzLjQtMjYtNC4yLTI5LjQtMTdzNC4yLTI2IDE3LTI5LjRsMjEuNy01LjhMMTUuOSAxNzEuNkMuNiAxNjIuNy00LjUgMTQzLjEgNC40IDEyNy45czI4LjUtMjAuNCA0My44LTExLjVsMjMuNiAxMy44LTUuMi0xOS4zYy0zLjQtMTIuOCA0LjItMjYgMTctMjkuNHMyNiA0LjIgMjkuNCAxN2wxNy43IDY2LjFMMTkyIDIwMC4zbDAtNzAuM0wxNDMgODFjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMGwxNSAxNUwxOTIgMzJjMC0xNy43IDE0LjMtMzIgMzItMzJ6XCJdXG59O1xuY29uc3QgZmFOZXdzcGFwZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbmV3c3BhcGVyJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI4MjQwXSwgXCJmMWVhXCIsIFwiTTk2IDk2YzAtMzUuMyAyOC43LTY0IDY0LTY0bDI4OCAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMzIwYzAgMzUuMy0yOC43IDY0LTY0IDY0TDgwIDQ4MGMtNDQuMiAwLTgwLTM1LjgtODAtODBMMCAxMjhjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMmwwIDI3MmMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2TDk2IDk2em02NCAyNGwwIDgwYzAgMTMuMyAxMC43IDI0IDI0IDI0bDExMiAwYzEzLjMgMCAyNC0xMC43IDI0LTI0bDAtODBjMC0xMy4zLTEwLjctMjQtMjQtMjRMMTg0IDk2Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHptMjA4LThjMCA4LjggNy4yIDE2IDE2IDE2bDQ4IDBjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZsLTQ4IDBjLTguOCAwLTE2IDcuMi0xNiAxNnptMCA5NmMwIDguOCA3LjIgMTYgMTYgMTZsNDggMGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNmwtNDggMGMtOC44IDAtMTYgNy4yLTE2IDE2ek0xNjAgMzA0YzAgOC44IDcuMiAxNiAxNiAxNmwyNTYgMGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNmwtMjU2IDBjLTguOCAwLTE2IDcuMi0xNiAxNnptMCA5NmMwIDguOCA3LjIgMTYgMTYgMTZsMjU2IDBjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZsLTI1NiAwYy04LjggMC0xNiA3LjItMTYgMTZ6XCJdXG59O1xuY29uc3QgZmFSZWN0YW5nbGVBZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdyZWN0YW5nbGUtYWQnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtcImFkXCJdLCBcImY2NDFcIiwgXCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NkwwIDQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NGw0NDggMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTMyMGMwLTM1LjMtMjguNy02NC02NC02NEw2NCAzMnpNMjI5LjUgMTczLjNsNzIgMTQ0YzUuOSAxMS45IDEuMSAyNi4zLTEwLjcgMzIuMnMtMjYuMyAxLjEtMzIuMi0xMC43TDI1My4yIDMyOGwtOTAuMyAwLTUuNCAxMC43Yy01LjkgMTEuOS0yMC4zIDE2LjctMzIuMiAxMC43cy0xNi43LTIwLjMtMTAuNy0zMi4ybDcyLTE0NGM0LjEtOC4xIDEyLjQtMTMuMyAyMS41LTEzLjNzMTcuNCA1LjEgMjEuNSAxMy4zek0yMDggMjM3LjdMMTg2LjggMjgwbDQyLjMgMEwyMDggMjM3Ljd6TTM5MiAyNTZhMjQgMjQgMCAxIDAgMCA0OCAyNCAyNCAwIDEgMCAwLTQ4em0yNC00My45bDAtMjguMWMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0bDAgOTYgMCA0OGMwIDEzLjMtMTAuNyAyNC0yNCAyNGMtNi42IDAtMTIuNi0yLjctMTctN2MtOS40IDQuNS0xOS45IDctMzEgN2MtMzkuOCAwLTcyLTMyLjItNzItNzJzMzIuMi03MiA3Mi03MmM4LjQgMCAxNi41IDEuNCAyNCA0LjF6XCJdXG59O1xuY29uc3QgZmFBZCA9IGZhUmVjdGFuZ2xlQWQ7XG5jb25zdCBmYUNpcmNsZUFycm93UmlnaHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2lyY2xlLWFycm93LXJpZ2h0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXCJhcnJvdy1jaXJjbGUtcmlnaHRcIl0sIFwiZjBhOVwiLCBcIk0wIDI1NmEyNTYgMjU2IDAgMSAwIDUxMiAwQTI1NiAyNTYgMCAxIDAgMCAyNTZ6TTI5NyAzODVjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlsNzEtNzFMMTIwIDI4MGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGwyMTQuMSAwLTcxLTcxYy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXMyNC42LTkuNCAzMy45IDBMNDA5IDIzOWM5LjQgOS40IDkuNCAyNC42IDAgMzMuOUwyOTcgMzg1elwiXVxufTtcbmNvbnN0IGZhQXJyb3dDaXJjbGVSaWdodCA9IGZhQ2lyY2xlQXJyb3dSaWdodDtcbmNvbnN0IGZhRmlsdGVyQ2lyY2xlWG1hcmsgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmlsdGVyLWNpcmNsZS14bWFyaycsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZTE3YlwiLCBcIk0zLjkgMjIuOUMxMC41IDguOSAyNC41IDAgNDAgMEw0NzIgMGMxNS41IDAgMjkuNSA4LjkgMzYuMSAyMi45czQuNiAzMC41LTUuMiA0Mi41TDM5Ni40IDE5NS42QzMxNi4yIDIxMi4xIDI1NiAyODMgMjU2IDM2OGMwIDI3LjQgNi4zIDUzLjQgMTcuNSA3Ni41Yy0xLjYtLjgtMy4yLTEuOC00LjctMi45bC02NC00OGMtOC4xLTYtMTIuOC0xNS41LTEyLjgtMjUuNmwwLTc5LjFMOSA2NS4zQy0uNyA1My40LTIuOCAzNi44IDMuOSAyMi45ek00MzIgMjI0YTE0NCAxNDQgMCAxIDEgMCAyODggMTQ0IDE0NCAwIDEgMSAwLTI4OHptNTkuMyAxMDcuM2M2LjItNi4yIDYuMi0xNi40IDAtMjIuNnMtMTYuNC02LjItMjIuNiAwTDQzMiAzNDUuNGwtMzYuNy0zNi43Yy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMHMtNi4yIDE2LjQgMCAyMi42TDQwOS40IDM2OGwtMzYuNyAzNi43Yy02LjIgNi4yLTYuMiAxNi40IDAgMjIuNnMxNi40IDYuMiAyMi42IDBMNDMyIDM5MC42bDM2LjcgMzYuN2M2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMHM2LjItMTYuNCAwLTIyLjZMNDU0LjYgMzY4bDM2LjctMzYuN3pcIl1cbn07XG5jb25zdCBmYUxvY3VzdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdsb2N1c3QnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImU1MjBcIiwgXCJNMzEyIDMyYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0bDE2IDBjOTguNyAwIDE4MC42IDcxLjQgMTk3IDE2NS40Yy05LTMuNS0xOC44LTUuNC0yOS01LjRsLTY0LjIgMC00MS44LTk3LjVjLTMuNC03LjktMTAuOC0xMy40LTE5LjMtMTQuNHMtMTcgMi43LTIyLjEgOS42bC00MC45IDU1LjUtMjEuNy01MC43Yy0zLjMtNy44LTEwLjUtMTMuMi0xOC45LTE0LjNzLTE2LjcgMi4zLTIyIDguOWwtMjQwIDMwNGMtOC4yIDEwLjQtNi40IDI1LjUgNCAzMy43czI1LjUgNi40IDMzLjctNGw3OS40LTEwMC41IDQzIDE2LjQtNDAuNSA1NWMtNy45IDEwLjctNS42IDI1LjcgNS4xIDMzLjZzMjUuNyA1LjYgMzMuNi01LjFMMjE1LjEgNDAwbDc0LjUgMC0yOS4zIDQyLjNjLTcuNSAxMC45LTQuOCAyNS44IDYuMSAzMy40czI1LjggNC44IDMzLjQtNi4xTDM0OCA0MDBsODAuNCAwIDM4LjggNjcuOWM2LjYgMTEuNSAyMS4yIDE1LjUgMzIuNyA4LjlzMTUuNS0yMS4yIDguOS0zMi43TDQ4My42IDQwMGwxMi40IDBjNDQuMSAwIDc5LjgtMzUuNyA4MC03OS43YzAtLjEgMC0uMiAwLS4zbDAtNDBDNTc2IDE0MyA0NjUgMzIgMzI4IDMybC0xNiAwem01MC41IDE2OGwxNy4xIDQwTDMzMyAyNDBsMjkuNS00MHptLTg3LjcgMzguMWwtMS40IDEuOS00OC4yIDAgMzIuNy00MS41IDE2LjkgMzkuNXpNODguOCAyNDBDNTcuNCAyNDAgMzIgMjY1LjQgMzIgMjk2LjhjMCAxNS41IDYuMyAzMCAxNi45IDQwLjRMMTI2LjcgMjQwbC0zNy45IDB6TTQ5NiAyODhhMTYgMTYgMCAxIDEgMCAzMiAxNiAxNiAwIDEgMSAwLTMyelwiXVxufTtcbmNvbnN0IGZhU29ydCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzb3J0JyxcbiAgaWNvbjogWzMyMCwgNTEyLCBbXCJ1bnNvcnRlZFwiXSwgXCJmMGRjXCIsIFwiTTEzNy40IDQxLjRjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDBsMTI4IDEyOGM5LjIgOS4yIDExLjkgMjIuOSA2LjkgMzQuOXMtMTYuNiAxOS44LTI5LjYgMTkuOEwzMiAyMjRjLTEyLjkgMC0yNC42LTcuOC0yOS42LTE5LjhzLTIuMi0yNS43IDYuOS0zNC45bDEyOC0xMjh6bTAgNDI5LjNsLTEyOC0xMjhjLTkuMi05LjItMTEuOS0yMi45LTYuOS0zNC45czE2LjYtMTkuOCAyOS42LTE5LjhsMjU2IDBjMTIuOSAwIDI0LjYgNy44IDI5LjYgMTkuOHMyLjIgMjUuNy02LjkgMzQuOWwtMTI4IDEyOGMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDB6XCJdXG59O1xuY29uc3QgZmFVbnNvcnRlZCA9IGZhU29ydDtcbmNvbnN0IGZhTGlzdE9sID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2xpc3Qtb2wnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtcImxpc3QtMS0yXCIsIFwibGlzdC1udW1lcmljXCJdLCBcImYwY2JcIiwgXCJNMjQgNTZjMC0xMy4zIDEwLjctMjQgMjQtMjRsMzIgMGMxMy4zIDAgMjQgMTAuNyAyNCAyNGwwIDEyMCAxNiAwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0bC04MCAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0bDE2IDAgMC05Ni04IDBDMzQuNyA4MCAyNCA2OS4zIDI0IDU2ek04Ni43IDM0MS4yYy02LjUtNy40LTE4LjMtNi45LTI0IDEuMkw1MS41IDM1Ny45Yy03LjcgMTAuOC0yMi43IDEzLjMtMzMuNSA1LjZzLTEzLjMtMjIuNy01LjYtMzMuNWwxMS4xLTE1LjZjMjMuNy0zMy4yIDcyLjMtMzUuNiA5OS4yLTQuOWMyMS4zIDI0LjQgMjAuOCA2MC45LTEuMSA4NC43TDg2LjggNDMybDMzLjIgMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGwtODggMGMtOS41IDAtMTguMi01LjYtMjItMTQuNHMtMi4xLTE4LjkgNC4zLTI1LjlsNzItNzhjNS4zLTUuOCA1LjQtMTQuNiAuMy0yMC41ek0yMjQgNjRsMjU2IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTI1NiAwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyem0wIDE2MGwyNTYgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtMjU2IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJ6bTAgMTYwbDI1NiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC0yNTYgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnpcIl1cbn07XG5jb25zdCBmYUxpc3QxMiA9IGZhTGlzdE9sO1xuY29uc3QgZmFMaXN0TnVtZXJpYyA9IGZhTGlzdE9sO1xuY29uc3QgZmFQZXJzb25EcmVzc0J1cnN0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BlcnNvbi1kcmVzcy1idXJzdCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTU0NFwiLCBcIk01MjggNDhhNDggNDggMCAxIDAgLTk2IDAgNDggNDggMCAxIDAgOTYgMHpNMzkwLjIgMzg0bDE3LjggMCAwIDk2YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC05NiAxNiAwIDAgOTZjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTk2IDE3LjggMGMxMC45IDAgMTguNi0xMC43IDE1LjItMjEuMUw1NDYuNyAyNDguMWwzMy45IDU2LjNjOS4xIDE1LjEgMjguOCAyMCA0My45IDEwLjlzMjAtMjguOCAxMC45LTQzLjlsLTUzLjYtODkuMmMtMjAuMi0zMy43LTU2LjctNTQuMy05Ni01NC4zbC0xMS42IDBjLTM5LjMgMC03NS43IDIwLjYtOTYgNTQuM2wtNTMuNiA4OS4yYy05LjEgMTUuMS00LjIgMzQuOCAxMC45IDQzLjlzMzQuOCA0LjIgNDMuOS0xMC45bDMzLjktNTYuM0wzNzUgMzYyLjljLTMuNSAxMC40IDQuMyAyMS4xIDE1LjIgMjEuMXpNMTkwLjkgMTguMUMxODguNCAxMiAxODIuNiA4IDE3NiA4cy0xMi40IDQtMTQuOSAxMC4xbC0yOS40IDc0TDU1LjYgNjguOWMtNi4zLTEuOS0xMy4xIC4yLTE3LjIgNS4zcy00LjYgMTIuMi0xLjQgMTcuOWwzOS41IDY5LjFMMTAuOSAyMDYuNGMtNS40IDMuNy04IDEwLjMtNi41IDE2LjdzNi43IDExLjIgMTMuMSAxMi4ybDc4LjcgMTIuMkw5MC42IDMyN2MtLjUgNi41IDMuMSAxMi43IDkgMTUuNXMxMi45IDEuOCAxNy44LTIuNkwxNzYgMjg2LjFsNTguNiA1My45YzQuOCA0LjQgMTEuOSA1LjUgMTcuOCAyLjZzOS41LTkgOS0xNS41bC01LjYtNzkuNCA1MC41LTcuOCAyNC40LTQwLjUtNTUuMi0zOEwzMTUgOTIuMmMzLjMtNS43IDIuNy0xMi44LTEuNC0xNy45cy0xMC45LTcuMi0xNy4yLTUuM0wyMjAuMyA5Mi4xbC0yOS40LTc0elwiXVxufTtcbmNvbnN0IGZhTW9uZXlDaGVja0RvbGxhciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtb25leS1jaGVjay1kb2xsYXInLFxuICBpY29uOiBbNTc2LCA1MTIsIFtcIm1vbmV5LWNoZWNrLWFsdFwiXSwgXCJmNTNkXCIsIFwiTTY0IDY0QzI4LjcgNjQgMCA5Mi43IDAgMTI4TDAgMzg0YzAgMzUuMyAyOC43IDY0IDY0IDY0bDQ0OCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMjU2YzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDY0ek0yNzIgMTkybDIyNCAwYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2bC0yMjQgMGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnpNMjU2IDMwNGMwLTguOCA3LjItMTYgMTYtMTZsMjI0IDBjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZsLTIyNCAwYy04LjggMC0xNi03LjItMTYtMTZ6TTE2NCAxNTJsMCAxMy45YzcuNSAxLjIgMTQuNiAyLjkgMjEuMSA0LjdjMTAuNyAyLjggMTcgMTMuOCAxNC4yIDI0LjVzLTEzLjggMTctMjQuNSAxNC4yYy0xMS0yLjktMjEuNi01LTMxLjItNS4yYy03LjktLjEtMTYgMS44LTIxLjUgNWMtNC44IDIuOC02LjIgNS42LTYuMiA5LjNjMCAxLjggLjEgMy41IDUuMyA2LjdjNi4zIDMuOCAxNS41IDYuNyAyOC4zIDEwLjVsLjcgLjJjMTEuMiAzLjQgMjUuNiA3LjcgMzcuMSAxNWMxMi45IDguMSAyNC4zIDIxLjMgMjQuNiA0MS42Yy4zIDIwLjktMTAuNSAzNi4xLTI0LjggNDVjLTcuMiA0LjUtMTUuMiA3LjMtMjMuMiA5bDAgMTMuOGMwIDExLTkgMjAtMjAgMjBzLTIwLTktMjAtMjBsMC0xNC42Yy0xMC4zLTIuMi0yMC01LjUtMjguMi04LjRjMCAwIDAgMCAwIDBzMCAwIDAgMGMtMi4xLS43LTQuMS0xLjQtNi4xLTIuMWMtMTAuNS0zLjUtMTYuMS0xNC44LTEyLjYtMjUuM3MxNC44LTE2LjEgMjUuMy0xMi42YzIuNSAuOCA0LjkgMS43IDcuMiAyLjRjMTMuNiA0LjYgMjQgOC4xIDM1LjEgOC41YzguNiAuMyAxNi41LTEuNiAyMS40LTQuN2M0LjEtMi41IDYtNS41IDUuOS0xMC41YzAtMi45LS44LTUtNS45LTguMmMtNi4zLTQtMTUuNC02LjktMjgtMTAuN2wtMS43LS41Yy0xMC45LTMuMy0yNC42LTcuNC0zNS42LTE0Yy0xMi43LTcuNy0yNC42LTIwLjUtMjQuNy00MC43Yy0uMS0yMS4xIDExLjgtMzUuNyAyNS44LTQzLjljNi45LTQuMSAxNC41LTYuOCAyMi4yLTguNWwwLTE0YzAtMTEgOS0yMCAyMC0yMHMyMCA5IDIwIDIwelwiXVxufTtcbmNvbnN0IGZhTW9uZXlDaGVja0FsdCA9IGZhTW9uZXlDaGVja0RvbGxhcjtcbmNvbnN0IGZhVmVjdG9yU3F1YXJlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3ZlY3Rvci1zcXVhcmUnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImY1Y2JcIiwgXCJNMzY4IDgwbDMyIDAgMCAzMi0zMiAwIDAtMzJ6TTM1MiAzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJMMTI4IDY0YzAtMTcuNy0xNC4zLTMyLTMyLTMyTDMyIDMyQzE0LjMgMzIgMCA0Ni4zIDAgNjRsMCA2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMmwwIDE5MmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJsMCA2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMmw2NCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMybDE5MiAwYzAgMTcuNyAxNC4zIDMyIDMyIDMybDY0IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJsMC02NGMwLTE3LjctMTQuMy0zMi0zMi0zMmwwLTE5MmMxNy43IDAgMzItMTQuMyAzMi0zMmwwLTY0YzAtMTcuNy0xNC4zLTMyLTMyLTMybC02NCAwek05NiAxNjBjMTcuNyAwIDMyLTE0LjMgMzItMzJsMTkyIDBjMCAxNy43IDE0LjMgMzIgMzIgMzJsMCAxOTJjLTE3LjcgMC0zMiAxNC4zLTMyIDMybC0xOTIgMGMwLTE3LjctMTQuMy0zMi0zMi0zMmwwLTE5MnpNNDggNDAwbDMyIDAgMCAzMi0zMiAwIDAtMzJ6bTMyMCAzMmwwLTMyIDMyIDAgMCAzMi0zMiAwek00OCAxMTJsMC0zMiAzMiAwIDAgMzItMzIgMHpcIl1cbn07XG5jb25zdCBmYUJyZWFkU2xpY2UgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYnJlYWQtc2xpY2UnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY3ZWNcIiwgXCJNMjU2IDMyQzE5MiAzMiAwIDY0IDAgMTkyYzAgMzUuMyAyOC43IDY0IDY0IDY0VjQzMmMwIDI2LjUgMjEuNSA0OCA0OCA0OEg0MDBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMjU2YzM1LjMgMCA2NC0yOC43IDY0LTY0QzUxMiA2NCAzMjAgMzIgMjU2IDMyelwiXVxufTtcbmNvbnN0IGZhTGFuZ3VhZ2UgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbGFuZ3VhZ2UnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImYxYWJcIiwgXCJNMCAxMjhDMCA5Mi43IDI4LjcgNjQgNjQgNjRsMTkyIDAgNDggMCAxNiAwIDI1NiAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMjU2YzAgMzUuMy0yOC43IDY0LTY0IDY0bC0yNTYgMC0xNiAwLTQ4IDBMNjQgNDQ4Yy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDEyOHptMzIwIDBsMCAyNTYgMjU2IDAgMC0yNTYtMjU2IDB6TTE3OC4zIDE3NS45Yy0zLjItNy4yLTEwLjQtMTEuOS0xOC4zLTExLjlzLTE1LjEgNC43LTE4LjMgMTEuOWwtNjQgMTQ0Yy00LjUgMTAuMSAuMSAyMS45IDEwLjIgMjYuNHMyMS45LS4xIDI2LjQtMTAuMmw4LjktMjAuMSA3My42IDAgOC45IDIwLjFjNC41IDEwLjEgMTYuMyAxNC42IDI2LjQgMTAuMnMxNC42LTE2LjMgMTAuMi0yNi40bC02NC0xNDR6TTE2MCAyMzMuMkwxNzkgMjc2bC0zOCAwIDE5LTQyLjh6TTQ0OCAxNjRjMTEgMCAyMCA5IDIwIDIwbDAgNCA0NCAwIDE2IDBjMTEgMCAyMCA5IDIwIDIwcy05IDIwLTIwIDIwbC0yIDAtMS42IDQuNWMtOC45IDI0LjQtMjIuNCA0Ni42LTM5LjYgNjUuNGMuOSAuNiAxLjggMS4xIDIuNyAxLjZsMTguOSAxMS4zYzkuNSA1LjcgMTIuNSAxOCA2LjkgMjcuNHMtMTggMTIuNS0yNy40IDYuOWwtMTguOS0xMS4zYy00LjUtMi43LTguOC01LjUtMTMuMS04LjVjLTEwLjYgNy41LTIxLjkgMTQtMzQgMTkuNGwtMy42IDEuNmMtMTAuMSA0LjUtMjEuOS0uMS0yNi40LTEwLjJzLjEtMjEuOSAxMC4yLTI2LjRsMy42LTEuNmM2LjQtMi45IDEyLjYtNi4xIDE4LjUtOS44bC0xMi4yLTEyLjJjLTcuOC03LjgtNy44LTIwLjUgMC0yOC4zczIwLjUtNy44IDI4LjMgMGwxNC42IDE0LjYgLjUgLjVjMTIuNC0xMy4xIDIyLjUtMjguMyAyOS44LTQ1TDQ0OCAyMjhsLTcyIDBjLTExIDAtMjAtOS0yMC0yMHM5LTIwIDIwLTIwbDUyIDAgMC00YzAtMTEgOS0yMCAyMC0yMHpcIl1cbn07XG5jb25zdCBmYUZhY2VLaXNzV2lua0hlYXJ0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZhY2Uta2lzcy13aW5rLWhlYXJ0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI4NTM2LCBcImtpc3Mtd2luay1oZWFydFwiXSwgXCJmNTk4XCIsIFwiTTQ5OCAzMzkuN2M5LjEtMjYuMiAxNC01NC40IDE0LTgzLjdDNTEyIDExNC42IDM5Ny40IDAgMjU2IDBTMCAxMTQuNiAwIDI1NlMxMTQuNiA1MTIgMjU2IDUxMmMzNS40IDAgNjkuMS03LjIgOTkuNy0yMC4yYy00LjgtNS41LTguNS0xMi4yLTEwLjQtMTkuN2wtMjIuOS04OS4zYy0xMC0zOSAxMS44LTgwLjkgNTEuOC05Mi4xYzM3LjItMTAuNCA3My44IDEwLjEgODcuNSA0NGMxMi43LTEuNiAyNS4xIC40IDM2LjIgNXpNMjk2IDMzMmMwIDYuOS0zLjEgMTMuMi03LjMgMTguM2MtNC4zIDUuMi0xMC4xIDkuNy0xNi43IDEzLjRjLTIuNyAxLjUtNS43IDMtOC43IDQuM2MzLjEgMS4zIDYgMi43IDguNyA0LjNjNi42IDMuNyAxMi41IDguMiAxNi43IDEzLjRjNC4zIDUuMSA3LjMgMTEuNCA3LjMgMTguM3MtMy4xIDEzLjItNy4zIDE4LjNjLTQuMyA1LjItMTAuMSA5LjctMTYuNyAxMy40QzI1OC43IDQ0My4xIDI0MS40IDQ0OCAyMjQgNDQ4Yy0zLjYgMC02LjgtMi41LTcuNy02cy42LTcuMiAzLjgtOWMwIDAgMCAwIDAgMHMwIDAgMCAwczAgMCAwIDBjMCAwIDAgMCAwIDBsLjItLjFjLjItLjEgLjUtLjMgLjktLjVjLjgtLjUgMi0xLjIgMy40LTIuMWMyLjgtMS45IDYuNS00LjUgMTAuMi03LjZjMy43LTMuMSA3LjItNi42IDkuNi0xMC4xYzIuNS0zLjUgMy41LTYuNCAzLjUtOC42cy0xLTUtMy41LTguNmMtMi41LTMuNS01LjktNi45LTkuNi0xMC4xYy0zLjctMy4xLTcuNC01LjctMTAuMi03LjZjLTEuNC0uOS0yLjYtMS42LTMuNC0yLjFsLS42LS40LS4zLS4yLS4yLS4xYzAgMCAwIDAgMCAwYzAgMCAwIDAgMCAwczAgMCAwIDBjLTIuNS0xLjQtNC4xLTQuMS00LjEtN3MxLjYtNS42IDQuMS03YzAgMCAwIDAgMCAwczAgMCAwIDBzMCAwIDAgMHMwIDAgMCAwYzAgMCAwIDAgMCAwbC4yLS4xYy4yLS4xIC41LS4zIC45LS41Yy44LS41IDItMS4yIDMuNC0yLjFjMi44LTEuOSA2LjUtNC41IDEwLjItNy42YzMuNy0zLjEgNy4yLTYuNiA5LjYtMTAuMWMyLjUtMy41IDMuNS02LjQgMy41LTguNnMtMS01LTMuNS04LjZjLTIuNS0zLjUtNS45LTYuOS05LjYtMTAuMWMtMy43LTMuMS03LjQtNS43LTEwLjItNy42Yy0xLjQtLjktMi42LTEuNi0zLjQtMi4xYy0uNC0uMi0uNy0uNC0uOS0uNWwtLjItLjFjMCAwIDAgMCAwIDBjMCAwIDAgMCAwIDBzMCAwIDAgMGMtMy4yLTEuOC00LjctNS41LTMuOC05czQuMS02IDcuNy02YzE3LjQgMCAzNC43IDQuOSA0Ny45IDEyLjNjNi42IDMuNyAxMi41IDguMiAxNi43IDEzLjRjNC4zIDUuMSA3LjMgMTEuNCA3LjMgMTguM3pNMTc2LjQgMTc2YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHptMTk0LjggNTcuNmMtMTcuNi0yMy41LTUyLjgtMjMuNS03MC40IDBjLTUuMyA3LjEtMTUuMyA4LjUtMjIuNCAzLjJzLTguNS0xNS4zLTMuMi0yMi40YzMwLjQtNDAuNSA5MS4yLTQwLjUgMTIxLjYgMGM1LjMgNy4xIDMuOSAxNy4xLTMuMiAyMi40cy0xNy4xIDMuOS0yMi40LTMuMnpNNDM0IDM1Mi4zYy02LTIzLjItMjguOC0zNy01MS4xLTMwLjhzLTM1LjQgMzAuMS0yOS41IDUzLjRsMjIuOSA4OS4zYzIuMiA4LjcgMTEuMiAxMy45IDE5LjggMTEuNGw4NC45LTIzLjhjMjIuMi02LjIgMzUuNC0zMC4xIDI5LjUtNTMuNHMtMjguOC0zNy01MS4xLTMwLjhsLTIwLjIgNS42LTUuNC0yMXpcIl1cbn07XG5jb25zdCBmYUtpc3NXaW5rSGVhcnQgPSBmYUZhY2VLaXNzV2lua0hlYXJ0O1xuY29uc3QgZmFGaWx0ZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmlsdGVyJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMGIwXCIsIFwiTTMuOSA1NC45QzEwLjUgNDAuOSAyNC41IDMyIDQwIDMybDQzMiAwYzE1LjUgMCAyOS41IDguOSAzNi4xIDIyLjlzNC42IDMwLjUtNS4yIDQyLjVMMzIwIDMyMC45IDMyMCA0NDhjMCAxMi4xLTYuOCAyMy4yLTE3LjcgMjguNnMtMjMuOCA0LjMtMzMuNS0zbC02NC00OGMtOC4xLTYtMTIuOC0xNS41LTEyLjgtMjUuNmwwLTc5LjFMOSA5Ny4zQy0uNyA4NS40LTIuOCA2OC44IDMuOSA1NC45elwiXVxufTtcbmNvbnN0IGZhUXVlc3Rpb24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncXVlc3Rpb24nLFxuICBpY29uOiBbMzIwLCA1MTIsIFsxMDA2NywgMTAwNjgsIDYxNzM2XSwgXCIzZlwiLCBcIk04MCAxNjBjMC0zNS4zIDI4LjctNjQgNjQtNjRsMzIgMGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDMuNmMwIDIxLjgtMTEuMSA0Mi4xLTI5LjQgNTMuOGwtNDIuMiAyNy4xYy0yNS4yIDE2LjItNDAuNCA0NC4xLTQwLjQgNzRsMCAxLjRjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTEuNGMwLTguMiA0LjItMTUuOCAxMS0yMC4ybDQyLjItMjcuMWMzNi42LTIzLjYgNTguOC02NC4xIDU4LjgtMTA3LjdsMC0zLjZjMC03MC43LTU3LjMtMTI4LTEyOC0xMjhsLTMyIDBDNzMuMyAzMiAxNiA4OS4zIDE2IDE2MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyem04MCAzMjBhNDAgNDAgMCAxIDAgMC04MCA0MCA0MCAwIDEgMCAwIDgwelwiXVxufTtcbmNvbnN0IGZhRmlsZVNpZ25hdHVyZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmaWxlLXNpZ25hdHVyZScsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjU3M1wiLCBcIk02NCAwQzI4LjcgMCAwIDI4LjcgMCA2NEwwIDQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NGwyNTYgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTE5LjNjLTIuNyAxLjEtNS40IDItOC4yIDIuN2wtNjAuMSAxNWMtMyAuNy02IDEuMi05IDEuNGMtLjkgLjEtMS44IC4yLTIuNyAuMmwtNjQgMGMtNi4xIDAtMTEuNi0zLjQtMTQuMy04LjhsLTguOC0xNy43Yy0xLjctMy40LTUuMS01LjUtOC44LTUuNXMtNy4yIDIuMS04LjggNS41bC04LjggMTcuN2MtMi45IDUuOS05LjIgOS40LTE1LjcgOC44cy0xMi4xLTUuMS0xMy45LTExLjNMMTQ0IDM4MWwtOS44IDMyLjhjLTYuMSAyMC4zLTI0LjggMzQuMi00NiAzNC4yTDgwIDQ0OGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmw4LjIgMGM3LjEgMCAxMy4zLTQuNiAxNS4zLTExLjRsMTQuOS00OS41YzMuNC0xMS4zIDEzLjgtMTkuMSAyNS42LTE5LjFzMjIuMiA3LjggMjUuNiAxOS4xbDExLjYgMzguNmM3LjQtNi4yIDE2LjgtOS43IDI2LjgtOS43YzE1LjkgMCAzMC40IDkgMzcuNSAyMy4ybDQuNCA4LjggOC45IDBjLTMuMS04LjgtMy43LTE4LjQtMS40LTI3LjhsMTUtNjAuMWMyLjgtMTEuMyA4LjYtMjEuNSAxNi44LTI5LjdMMzg0IDIwMy42bDAtNDMuNi0xMjggMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJMMjI0IDAgNjQgMHpNMjU2IDBsMCAxMjggMTI4IDBMMjU2IDB6TTU0OS44IDEzOS43Yy0xNS42LTE1LjYtNDAuOS0xNS42LTU2LjYgMGwtMjkuNCAyOS40IDcxIDcxIDI5LjQtMjkuNGMxNS42LTE1LjYgMTUuNi00MC45IDAtNTYuNmwtMTQuNC0xNC40ek0zMTEuOSAzMjFjLTQuMSA0LjEtNyA5LjItOC40IDE0LjlsLTE1IDYwLjFjLTEuNCA1LjUgLjIgMTEuMiA0LjIgMTUuMnM5LjcgNS42IDE1LjIgNC4ybDYwLjEtMTVjNS42LTEuNCAxMC44LTQuMyAxNC45LTguNEw1MTIuMSAyNjIuN2wtNzEtNzFMMzExLjkgMzIxelwiXVxufTtcbmNvbnN0IGZhVXBEb3duTGVmdFJpZ2h0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3VwLWRvd24tbGVmdC1yaWdodCcsXG4gIGljb246IFs1MTIsIDUxMiwgW1wiYXJyb3dzLWFsdFwiXSwgXCJmMGIyXCIsIFwiTTI3OC42IDkuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBsLTY0IDY0Yy05LjIgOS4yLTExLjkgMjIuOS02LjkgMzQuOXMxNi42IDE5LjggMjkuNiAxOS44bDMyIDAgMCA5Ni05NiAwIDAtMzJjMC0xMi45LTcuOC0yNC42LTE5LjgtMjkuNnMtMjUuNy0yLjItMzQuOSA2LjlsLTY0IDY0Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM2w2NCA2NGM5LjIgOS4yIDIyLjkgMTEuOSAzNC45IDYuOXMxOS44LTE2LjYgMTkuOC0yOS42bDAtMzIgOTYgMCAwIDk2LTMyIDBjLTEyLjkgMC0yNC42IDcuOC0yOS42IDE5LjhzLTIuMiAyNS43IDYuOSAzNC45bDY0IDY0YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDY0LTY0YzkuMi05LjIgMTEuOS0yMi45IDYuOS0zNC45cy0xNi42LTE5LjgtMjkuNi0xOS44bC0zMiAwIDAtOTYgOTYgMCAwIDMyYzAgMTIuOSA3LjggMjQuNiAxOS44IDI5LjZzMjUuNyAyLjIgMzQuOS02LjlsNjQtNjRjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNsLTY0LTY0Yy05LjItOS4yLTIyLjktMTEuOS0zNC45LTYuOXMtMTkuOCAxNi42LTE5LjggMjkuNmwwIDMyLTk2IDAgMC05NiAzMiAwYzEyLjkgMCAyNC42LTcuOCAyOS42LTE5LjhzMi4yLTI1LjctNi45LTM0LjlsLTY0LTY0elwiXVxufTtcbmNvbnN0IGZhQXJyb3dzQWx0ID0gZmFVcERvd25MZWZ0UmlnaHQ7XG5jb25zdCBmYUhvdXNlQ2hpbW5leVVzZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaG91c2UtY2hpbW5leS11c2VyJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJlMDY1XCIsIFwiTTU0My44IDI4Ny42YzE3IDAgMzItMTQgMzItMzIuMWMxLTktMy0xNy0xMS0yNEw1MTIgMTg1bDAtMTIxYzAtMTcuNy0xNC4zLTMyLTMyLTMybC0zMiAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMmwwIDM2LjdMMzA5LjUgN2MtNi01LTE0LTctMjEtN3MtMTUgMS0yMiA4TDEwIDIzMS41Yy03IDctMTAgMTUtMTAgMjRjMCAxOCAxNCAzMi4xIDMyIDMyLjFsMzIgMCAwIDE2MC40YzAgMzUuMyAyOC43IDY0IDY0IDY0bDMyMC40IDBjMzUuNSAwIDY0LjItMjguOCA2NC02NC4zbC0uNy0xNjAuMiAzMiAwek0yODggMTYwYTY0IDY0IDAgMSAxIDAgMTI4IDY0IDY0IDAgMSAxIDAtMTI4ek0xNzYgNDAwYzAtNDQuMiAzNS44LTgwIDgwLTgwbDY0IDBjNDQuMiAwIDgwIDM1LjggODAgODBjMCA4LjgtNy4yIDE2LTE2IDE2bC0xOTIgMGMtOC44IDAtMTYtNy4yLTE2LTE2elwiXVxufTtcbmNvbnN0IGZhSGFuZEhvbGRpbmdIZWFydCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoYW5kLWhvbGRpbmctaGVhcnQnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImY0YmVcIiwgXCJNMTYzLjkgMTM2LjljLTI5LjQtMjkuOC0yOS40LTc4LjIgMC0xMDhzNzctMjkuOCAxMDYuNCAwbDE3LjcgMTggMTcuNy0xOGMyOS40LTI5LjggNzctMjkuOCAxMDYuNCAwczI5LjQgNzguMiAwIDEwOEwzMTAuNSAyNDAuMWMtNi4yIDYuMy0xNC4zIDkuNC0yMi41IDkuNHMtMTYuMy0zLjEtMjIuNS05LjRMMTYzLjkgMTM2Ljl6TTU2OC4yIDMzNi4zYzEzLjEgMTcuOCA5LjMgNDIuOC04LjUgNTUuOUw0MzMuMSA0ODUuNWMtMjMuNCAxNy4yLTUxLjYgMjYuNS04MC43IDI2LjVMMTkyIDUxMiAzMiA1MTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtNjRjMC0xNy43IDE0LjMtMzIgMzItMzJsMzYuOCAwIDQ0LjktMzZjMjIuNy0xOC4yIDUwLjktMjggODAtMjhsNzguMyAwIDE2IDAgNjQgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtNjQgMC0xNiAwYy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2bDEyMC42IDAgMTE5LjctODguMmMxNy44LTEzLjEgNDIuOC05LjMgNTUuOSA4LjV6TTE5My42IDM4NGMwIDAgMCAwIDAgMGwtLjkgMGMuMyAwIC42IDAgLjkgMHpcIl1cbn07XG5jb25zdCBmYVB1enpsZVBpZWNlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3B1enpsZS1waWVjZScsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyOTUxM10sIFwiZjEyZVwiLCBcIk0xOTIgMTA0LjhjMC05LjItNS44LTE3LjMtMTMuMi0yMi44QzE2Ny4yIDczLjMgMTYwIDYxLjMgMTYwIDQ4YzAtMjYuNSAyOC43LTQ4IDY0LTQ4czY0IDIxLjUgNjQgNDhjMCAxMy4zLTcuMiAyNS4zLTE4LjggMzRjLTcuNCA1LjUtMTMuMiAxMy42LTEzLjIgMjIuOGMwIDEyLjggMTAuNCAyMy4yIDIzLjIgMjMuMmw1Ni44IDBjMjYuNSAwIDQ4IDIxLjUgNDggNDhsMCA1Ni44YzAgMTIuOCAxMC40IDIzLjIgMjMuMiAyMy4yYzkuMiAwIDE3LjMtNS44IDIyLjgtMTMuMmM4LjctMTEuNiAyMC43LTE4LjggMzQtMTguOGMyNi41IDAgNDggMjguNyA0OCA2NHMtMjEuNSA2NC00OCA2NGMtMTMuMyAwLTI1LjMtNy4yLTM0LTE4LjhjLTUuNS03LjQtMTMuNi0xMy4yLTIyLjgtMTMuMmMtMTIuOCAwLTIzLjIgMTAuNC0yMy4yIDIzLjJMMzg0IDQ2NGMwIDI2LjUtMjEuNSA0OC00OCA0OGwtNTYuOCAwYy0xMi44IDAtMjMuMi0xMC40LTIzLjItMjMuMmMwLTkuMiA1LjgtMTcuMyAxMy4yLTIyLjhjMTEuNi04LjcgMTguOC0yMC43IDE4LjgtMzRjMC0yNi41LTI4LjctNDgtNjQtNDhzLTY0IDIxLjUtNjQgNDhjMCAxMy4zIDcuMiAyNS4zIDE4LjggMzRjNy40IDUuNSAxMy4yIDEzLjYgMTMuMiAyMi44YzAgMTIuOC0xMC40IDIzLjItMjMuMiAyMy4yTDQ4IDUxMmMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhMMCAzNDMuMkMwIDMzMC40IDEwLjQgMzIwIDIzLjIgMzIwYzkuMiAwIDE3LjMgNS44IDIyLjggMTMuMkM1NC43IDM0NC44IDY2LjcgMzUyIDgwIDM1MmMyNi41IDAgNDgtMjguNyA0OC02NHMtMjEuNS02NC00OC02NGMtMTMuMyAwLTI1LjMgNy4yLTM0IDE4LjhDNDAuNSAyNTAuMiAzMi40IDI1NiAyMy4yIDI1NkMxMC40IDI1NiAwIDI0NS42IDAgMjMyLjhMMCAxNzZjMC0yNi41IDIxLjUtNDggNDgtNDhsMTIwLjggMGMxMi44IDAgMjMuMi0xMC40IDIzLjItMjMuMnpcIl1cbn07XG5jb25zdCBmYU1vbmV5Q2hlY2sgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbW9uZXktY2hlY2snLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImY1M2NcIiwgXCJNNjQgNjRDMjguNyA2NCAwIDkyLjcgMCAxMjhMMCAzODRjMCAzNS4zIDI4LjcgNjQgNjQgNjRsNDQ4IDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0yNTZjMC0zNS4zLTI4LjctNjQtNjQtNjRMNjQgNjR6bTQ4IDE2MGwxNjAgMGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNmwtMTYwIDBjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6TTk2IDMzNmMwLTguOCA3LjItMTYgMTYtMTZsMzUyIDBjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZsLTM1MiAwYy04LjggMC0xNi03LjItMTYtMTZ6TTM3NiAxNjBsODAgMGMxMy4zIDAgMjQgMTAuNyAyNCAyNGwwIDQ4YzAgMTMuMy0xMC43IDI0LTI0IDI0bC04MCAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNGwwLTQ4YzAtMTMuMyAxMC43LTI0IDI0LTI0elwiXVxufTtcbmNvbnN0IGZhU3RhckhhbGZTdHJva2UgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3Rhci1oYWxmLXN0cm9rZScsXG4gIGljb246IFs1NzYsIDUxMiwgW1wic3Rhci1oYWxmLWFsdFwiXSwgXCJmNWMwXCIsIFwiTTI4OCAzNzYuNGwuMS0uMSAyNi40IDE0LjEgODUuMiA0NS41LTE2LjUtOTcuNi00LjgtMjguNyAyMC43LTIwLjUgNzAuMS02OS4zLTk2LjEtMTQuMi0yOS4zLTQuMy0xMi45LTI2LjZMMjg4LjEgODYuOWwtLjEgLjMgMCAyODkuMnptMTc1LjEgOTguM2MyIDEyLTMgMjQuMi0xMi45IDMxLjNzLTIzIDgtMzMuOCAyLjNMMjg4LjEgNDM5LjggMTU5LjggNTA4LjNDMTQ5IDUxNCAxMzUuOSA1MTMuMSAxMjYgNTA2cy0xNC45LTE5LjMtMTIuOS0zMS4zTDEzNy44IDMyOSAzMy42IDIyNS45Yy04LjYtOC41LTExLjctMjEuMi03LjktMzIuN3MxMy43LTE5LjkgMjUuNy0yMS43TDE5NSAxNTAuMyAyNTkuNCAxOGM1LjQtMTEgMTYuNS0xOCAyOC44LTE4czIzLjQgNyAyOC44IDE4bDY0LjMgMTMyLjMgMTQzLjYgMjEuMmMxMiAxLjggMjIgMTAuMiAyNS43IDIxLjdzLjcgMjQuMi03LjkgMzIuN0w0MzguNSAzMjlsMjQuNiAxNDUuN3pcIl1cbn07XG5jb25zdCBmYVN0YXJIYWxmQWx0ID0gZmFTdGFySGFsZlN0cm9rZTtcbmNvbnN0IGZhQ29kZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjb2RlJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmMTIxXCIsIFwiTTM5Mi44IDEuMmMtMTctNC45LTM0LjcgNS0zOS42IDIybC0xMjggNDQ4Yy00LjkgMTcgNSAzNC43IDIyIDM5LjZzMzQuNy01IDM5LjYtMjJsMTI4LTQ0OGM0LjktMTctNS0zNC43LTIyLTM5LjZ6bTgwLjYgMTIwLjFjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zTDU2Mi43IDI1NmwtODkuNCA4OS40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwbDExMi0xMTJjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNsLTExMi0xMTJjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwem0tMzA2LjcgMGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBsLTExMiAxMTJjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zbDExMiAxMTJjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM0w3Ny4zIDI1Nmw4OS40LTg5LjRjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjN6XCJdXG59O1xuY29uc3QgZmFXaGlza2V5R2xhc3MgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnd2hpc2tleS1nbGFzcycsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyOTM0NywgXCJnbGFzcy13aGlza2V5XCJdLCBcImY3YTBcIiwgXCJNMzIgMzJjLTkuMyAwLTE4LjEgNC0yNC4yIDExLjFTLTEgNTkuNCAuMyA2OC42bDUwIDM0Mi45YzUuNyAzOS4zIDM5LjQgNjguNSA3OS4yIDY4LjVsMjUzIDBjMzkuNyAwIDczLjQtMjkuMSA3OS4yLTY4LjVsNTAtMzQyLjljMS4zLTkuMi0xLjQtMTguNS03LjUtMjUuNVM0ODkuMyAzMiA0ODAgMzJMMzIgMzJ6TTg3LjcgMjI0TDY5IDk2bDM3NCAwTDQyNC4zIDIyNCA4Ny43IDIyNHpcIl1cbn07XG5jb25zdCBmYUdsYXNzV2hpc2tleSA9IGZhV2hpc2tleUdsYXNzO1xuY29uc3QgZmFCdWlsZGluZ0NpcmNsZUV4Y2xhbWF0aW9uID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2J1aWxkaW5nLWNpcmNsZS1leGNsYW1hdGlvbicsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTRkM1wiLCBcIk00OCAwQzIxLjUgMCAwIDIxLjUgMCA0OEwwIDQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGw5NiAwIDAtODBjMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OGwwIDgwIDk2IDBjMTUuMSAwIDI4LjUtNi45IDM3LjMtMTcuOEMzNDAuNCA0NjIuMiAzMjAgNDE3LjUgMzIwIDM2OGMwLTU0LjcgMjQuOS0xMDMuNSA2NC0xMzUuOEwzODQgNDhjMC0yNi41LTIxLjUtNDgtNDgtNDhMNDggMHpNNjQgMjQwYzAtOC44IDcuMi0xNiAxNi0xNmwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDMyYzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzJ6bTExMi0xNmwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDMyYzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzJjMC04LjggNy4yLTE2IDE2LTE2em04MCAxNmMwLTguOCA3LjItMTYgMTYtMTZsMzIgMGM4LjggMCAxNiA3LjIgMTYgMTZsMCAzMmMwIDguOC03LjIgMTYtMTYgMTZsLTMyIDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTMyek04MCA5NmwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDMyYzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzJjMC04LjggNy4yLTE2IDE2LTE2em04MCAxNmMwLTguOCA3LjItMTYgMTYtMTZsMzIgMGM4LjggMCAxNiA3LjIgMTYgMTZsMCAzMmMwIDguOC03LjIgMTYtMTYgMTZsLTMyIDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTMyek0yNzIgOTZsMzIgMGM4LjggMCAxNiA3LjIgMTYgMTZsMCAzMmMwIDguOC03LjIgMTYtMTYgMTZsLTMyIDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTMyYzAtOC44IDcuMi0xNiAxNi0xNnpNNDk2IDUxMmExNDQgMTQ0IDAgMSAwIDAtMjg4IDE0NCAxNDQgMCAxIDAgMCAyODh6bTAtOTZhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4em0wLTE0NGM4LjggMCAxNiA3LjIgMTYgMTZsMCA4MGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNmwwLTgwYzAtOC44IDcuMi0xNiAxNi0xNnpcIl1cbn07XG5jb25zdCBmYU1hZ25pZnlpbmdHbGFzc0NoYXJ0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21hZ25pZnlpbmctZ2xhc3MtY2hhcnQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImU1MjJcIiwgXCJNNDE2IDIwOGMwIDQ1LjktMTQuOSA4OC4zLTQwIDEyMi43TDUwMi42IDQ1Ny40YzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zcy0zMi44IDEyLjUtNDUuMyAwTDMzMC43IDM3NmMtMzQuNCAyNS4yLTc2LjggNDAtMTIyLjcgNDBDOTMuMSA0MTYgMCAzMjIuOSAwIDIwOFM5My4xIDAgMjA4IDBTNDE2IDkzLjEgNDE2IDIwOHptLTMxMiA4bDAgNjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGwwLTY0YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0em04MC05NmwwIDE2MGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0bDAtMTYwYzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0em04MCA2NGwwIDk2YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRsMC05NmMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNHpcIl1cbn07XG5jb25zdCBmYUFycm93VXBSaWdodEZyb21TcXVhcmUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYXJyb3ctdXAtcmlnaHQtZnJvbS1zcXVhcmUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtcImV4dGVybmFsLWxpbmtcIl0sIFwiZjA4ZVwiLCBcIk0zMjAgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmw4Mi43IDBMMjAxLjQgMjY1LjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBMNDQ4IDEwOS4zbDAgODIuN2MwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMTYwYzAtMTcuNy0xNC4zLTMyLTMyLTMyTDMyMCAwek04MCAzMkMzNS44IDMyIDAgNjcuOCAwIDExMkwwIDQzMmMwIDQ0LjIgMzUuOCA4MCA4MCA4MGwzMjAgMGM0NC4yIDAgODAtMzUuOCA4MC04MGwwLTExMmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMmwwIDExMmMwIDguOC03LjIgMTYtMTYgMTZMODAgNDQ4Yy04LjggMC0xNi03LjItMTYtMTZsMC0zMjBjMC04LjggNy4yLTE2IDE2LTE2bDExMiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyTDgwIDMyelwiXVxufTtcbmNvbnN0IGZhRXh0ZXJuYWxMaW5rID0gZmFBcnJvd1VwUmlnaHRGcm9tU3F1YXJlO1xuY29uc3QgZmFDdWJlc1N0YWNrZWQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY3ViZXMtc3RhY2tlZCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZTRlNlwiLCBcIk0xOTIgNjRsMCA2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMmw2NCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMybDAtNjRjMC0xNy43LTE0LjMtMzItMzItMzJsLTY0IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyek04Mi43IDIwN2MtMTUuMyA4LjgtMjAuNSAyOC40LTExLjcgNDMuN2wzMiA1NS40YzguOCAxNS4zIDI4LjQgMjAuNSA0My43IDExLjdsNTUuNC0zMmMxNS4zLTguOCAyMC41LTI4LjQgMTEuNy00My43bC0zMi01NS40Yy04LjgtMTUuMy0yOC40LTIwLjUtNDMuNy0xMS43TDgyLjcgMjA3ek0yODggMTkyYy0xNy43IDAtMzIgMTQuMy0zMiAzMmwwIDY0YzAgMTcuNyAxNC4zIDMyIDMyIDMybDY0IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJsMC02NGMwLTE3LjctMTQuMy0zMi0zMi0zMmwtNjQgMHptNjQgMTYwYy0xNy43IDAtMzIgMTQuMy0zMiAzMmwwIDY0YzAgMTcuNyAxNC4zIDMyIDMyIDMybDY0IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJsMC02NGMwLTE3LjctMTQuMy0zMi0zMi0zMmwtNjQgMHpNMTYwIDM4NGwwIDY0YzAgMTcuNyAxNC4zIDMyIDMyIDMybDY0IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJsMC02NGMwLTE3LjctMTQuMy0zMi0zMi0zMmwtNjQgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6TTMyIDM1MmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJsMCA2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMmw2NCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMybDAtNjRjMC0xNy43LTE0LjMtMzItMzItMzJsLTY0IDB6XCJdXG59O1xuY29uc3QgZmFXb25TaWduID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3dvbi1zaWduJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbODM2MSwgXCJrcndcIiwgXCJ3b25cIl0sIFwiZjE1OVwiLCBcIk02Mi40IDUzLjlDNTYuOCAzNy4xIDM4LjYgMjguMSAyMS45IDMzLjZTLTMuOSA1Ny40IDEuNiA3NC4xTDUxLjYgMjI0IDMyIDIyNGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmw0MC45IDAgNTYuNyAxNzAuMWM0LjUgMTMuNSAxNy40IDIyLjQgMzEuNiAyMS45czI2LjQtMTAuNCAyOS44LTI0LjJMMjMzIDI4OGw0NiAwTDMyMSA0NTUuOGMzLjQgMTMuOCAxNS42IDIzLjcgMjkuOCAyNC4yczI3LjEtOC40IDMxLjYtMjEuOUw0MzkuMSAyODhsNDAuOSAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC0xOS42IDAgNTAtMTQ5LjljNS42LTE2LjgtMy41LTM0LjktMjAuMi00MC41cy0zNC45IDMuNS00MC41IDIwLjJMMzkyLjkgMjI0bC02NCAwTDI4NyA1Ni4yQzI4My41IDQyIDI3MC43IDMyIDI1NiAzMnMtMjcuNSAxMC0zMSAyNC4yTDE4MyAyMjRsLTY0IDBMNjIuNCA1My45em03OCAyMzQuMWwyNi42IDAtMTEuNCA0NS42TDE0MC40IDI4OHpNMjQ5IDIyNGw3LTI4LjEgNyAyOC4xLTE0IDB6bTk2IDY0bDI2LjYgMC0xNS4yIDQ1LjZMMzQ1IDI4OHpcIl1cbn07XG5jb25zdCBmYUtydyA9IGZhV29uU2lnbjtcbmNvbnN0IGZhV29uID0gZmFXb25TaWduO1xuY29uc3QgZmFWaXJ1c0NvdmlkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3ZpcnVzLWNvdmlkJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJlNGE4XCIsIFwiTTE5MiAyNGMwLTEzLjMgMTAuNy0yNCAyNC0yNGw4MCAwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0bC0xNiAwIDAgMzMuNmMzMC43IDQuMiA1OC44IDE2LjMgODIuMyAzNC4xTDM4Ni4xIDkyIDM3NC44IDgwLjZjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMGw1Ni42IDU2LjZjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMEw0MjAgMTI1LjlsLTIzLjggMjMuOGMxNy45IDIzLjUgMjkuOSA1MS43IDM0LjEgODIuM2wzMy42IDAgMC0xNmMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0bDAgODBjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRsMC0xNi0zMy42IDBjLTQuMiAzMC43LTE2LjMgNTguOC0zNC4xIDgyLjNMNDIwIDM4Ni4xbDExLjMtMTEuM2M5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjlsLTU2LjYgNTYuNmMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOUwzODYuMSA0MjBsLTIzLjgtMjMuOGMtMjMuNSAxNy45LTUxLjcgMjkuOS04Mi4zIDM0LjFsMCAzMy42IDE2IDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRsLTgwIDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRsMTYgMCAwLTMzLjZjLTMwLjctNC4yLTU4LjgtMTYuMy04Mi4zLTM0LjFMMTI1LjkgNDIwbDExLjMgMTEuM2M5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwTDQ2LjcgNDA4LjdjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMEw5MiAzODYuMWwyMy44LTIzLjhDOTcuOSAzMzguOCA4NS44IDMxMC43IDgxLjYgMjgwTDQ4IDI4MGwwIDE2YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0bDAtODBjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNGwwIDE2IDMzLjYgMGM0LjItMzAuNyAxNi4zLTU4LjggMzQuMS04Mi4zTDkyIDEyNS45IDgwLjYgMTM3LjJjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlsNTYuNi01Ni42YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOUwxMjUuOSA5MmwyMy44IDIzLjhjMjMuNS0xNy45IDUxLjctMjkuOSA4Mi4zLTM0LjFMMjMyIDQ4bC0xNiAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHptNDggMjAwYTQ4IDQ4IDAgMSAwIC05NiAwIDQ4IDQ4IDAgMSAwIDk2IDB6bTY0IDEwNGEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6XCJdXG59O1xuY29uc3QgZmFBdXN0cmFsU2lnbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhdXN0cmFsLXNpZ24nLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImUwYTlcIiwgXCJNMjUzLjUgNTEuN0MyNDguNiAzOS44IDIzNi45IDMyIDIyNCAzMnMtMjQuNiA3LjgtMjkuNSAxOS43TDEyMi43IDIyNCAzMiAyMjRjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsNjQgMEw4Mi43IDMyMCAzMiAzMjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsMjQgMEwzNC41IDQzNS43Yy02LjggMTYuMyAuOSAzNSAxNy4yIDQxLjhzMzUtLjkgNDEuOC0xNy4yTDEyNS4zIDM4NGwxOTcuMyAwIDMxLjggNzYuM2M2LjggMTYuMyAyNS41IDI0IDQxLjggMTcuMnMyNC0yNS41IDE3LjItNDEuOEwzOTIgMzg0bDI0IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTUwLjcgMEwzNTIgMjg4bDY0IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTkwLjcgMEwyNTMuNSA1MS43ek0yNTYgMjI0bC02NCAwIDMyLTc2LjhMMjU2IDIyNHptLTkwLjcgNjRsMTE3LjMgMEwyOTYgMzIwbC0xNDQgMCAxMy4zLTMyelwiXVxufTtcbmNvbnN0IGZhRiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmJyxcbiAgaWNvbjogWzMyMCwgNTEyLCBbMTAyXSwgXCI0NlwiLCBcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2TDAgMjU2IDAgNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0xNjAgMTYwIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJMNjQgMjI0IDY0IDk2bDIyNCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyTDY0IDMyelwiXVxufTtcbmNvbnN0IGZhTGVhZiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdsZWFmJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMDZjXCIsIFwiTTI3MiA5NmMtNzguNiAwLTE0NS4xIDUxLjUtMTY3LjcgMTIyLjVjMzMuNi0xNyA3MS41LTI2LjUgMTExLjctMjYuNWw4OCAwYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2bC0xNiAwLTcyIDBzMCAwIDAgMGMtMTYuNiAwLTMyLjcgMS45LTQ4LjMgNS40Yy0yNS45IDUuOS00OS45IDE2LjQtNzEuNCAzMC43YzAgMCAwIDAgMCAwQzM4LjMgMjk4LjggMCAzNjQuOSAwIDQ0MGwwIDE2YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRsMC0xNmMwLTQ4LjcgMjAuNy05Mi41IDUzLjgtMTIzLjJDMTIxLjYgMzkyLjMgMTkwLjMgNDQ4IDI3MiA0NDhsMSAwYzEzMi4xLS43IDIzOS0xMzAuOSAyMzktMjkxLjRjMC00Mi42LTcuNS04My4xLTIxLjEtMTE5LjZjLTIuNi02LjktMTIuNy02LjYtMTYuMi0uMUM0NTUuOSA3Mi4xIDQxOC43IDk2IDM3NiA5NkwyNzIgOTZ6XCJdXG59O1xuY29uc3QgZmFSb2FkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3JvYWQnLFxuICBpY29uOiBbNTc2LCA1MTIsIFsxMjg3MzldLCBcImYwMThcIiwgXCJNMjU2IDMybC03NC44IDBjLTI3LjEgMC01MS4zIDE3LjEtNjAuMyA0Mi42TDMuMSA0MDcuMkMxLjEgNDEzIDAgNDE5LjIgMCA0MjUuNEMwIDQ1NS41IDI0LjUgNDgwIDU0LjYgNDgwTDI1NiA0ODBsMC02NGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMybDAgNjQgMjAxLjQgMGMzMC4yIDAgNTQuNi0yNC41IDU0LjYtNTQuNmMwLTYuMi0xLjEtMTIuNC0zLjEtMTguMkw0NTUuMSA3NC42QzQ0NiA0OS4xIDQyMS45IDMyIDM5NC44IDMyTDMyMCAzMmwwIDY0YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtNjR6bTY0IDE5MmwwIDY0YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtNjRjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnpcIl1cbn07XG5jb25zdCBmYVRheGkgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndGF4aScsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyODY2MiwgXCJjYWJcIl0sIFwiZjFiYVwiLCBcIk0xOTIgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJsMCAzMiAwIC4yYy0zOC42IDIuMi03Mi4zIDI3LjMtODUuMiA2NC4xTDM5LjYgMjI4LjhDMTYuNCAyMzguNCAwIDI2MS4zIDAgMjg4TDAgNDMybDAgNDhjMCAxNy43IDE0LjMgMzIgMzIgMzJsMzIgMGMxNy43IDAgMzItMTQuMyAzMi0zMmwwLTQ4IDMyMCAwIDAgNDhjMCAxNy43IDE0LjMgMzIgMzIgMzJsMzIgMGMxNy43IDAgMzItMTQuMyAzMi0zMmwwLTQ4IDAtMTQ0YzAtMjYuNy0xNi40LTQ5LjYtMzkuNi01OS4yTDQzNy4yIDEyOC4zYy0xMi45LTM2LjgtNDYuNi02Mi04NS4yLTY0LjFsMC0uMiAwLTMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyTDE5MiAwek0xNjUuNCAxMjhsMTgxLjIgMGMxMy42IDAgMjUuNyA4LjYgMzAuMiAyMS40TDQwMi45IDIyNGwtMjkzLjggMCAyNi4xLTc0LjZjNC41LTEyLjggMTYuNi0yMS40IDMwLjItMjEuNHpNOTYgMjg4YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHptMjg4IDMyYTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6XCJdXG59O1xuY29uc3QgZmFDYWIgPSBmYVRheGk7XG5jb25zdCBmYVBlcnNvbkNpcmNsZVBsdXMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGVyc29uLWNpcmNsZS1wbHVzJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJlNTQxXCIsIFwiTTExMiA0OGE0OCA0OCAwIDEgMSA5NiAwIDQ4IDQ4IDAgMSAxIC05NiAwem00MCAzMDRsMCAxMjhjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC0yMjMuMUw1OS40IDMwNC41Yy05LjEgMTUuMS0yOC44IDIwLTQzLjkgMTAuOXMtMjAtMjguOC0xMC45LTQzLjlsNTguMy05N2MxNy40LTI4LjkgNDguNi00Ni42IDgyLjMtNDYuNmwyOS43IDBjMzMuNyAwIDY0LjkgMTcuNyA4Mi4zIDQ2LjZsNDQuOSA3NC43Yy0xNi4xIDE3LjYtMjguNiAzOC41LTM2LjYgNjEuNWMtMS45LTEuOC0zLjUtMy45LTQuOS02LjNMMjMyIDI1Ni45IDIzMiA0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC0xMjgtMTYgMHpNNDMyIDIyNGExNDQgMTQ0IDAgMSAxIDAgMjg4IDE0NCAxNDQgMCAxIDEgMC0yODh6bTE2IDgwYzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2bDAgNDgtNDggMGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmw0OCAwIDAgNDhjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNmwwLTQ4IDQ4IDBjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZsLTQ4IDAgMC00OHpcIl1cbn07XG5jb25zdCBmYUNoYXJ0UGllID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NoYXJ0LXBpZScsXG4gIGljb246IFs1NzYsIDUxMiwgW1wicGllLWNoYXJ0XCJdLCBcImYyMDBcIiwgXCJNMzA0IDI0MGwwLTIyMy40YzAtOSA3LTE2LjYgMTYtMTYuNkM0NDMuNyAwIDU0NCAxMDAuMyA1NDQgMjI0YzAgOS03LjYgMTYtMTYuNiAxNkwzMDQgMjQwek0zMiAyNzJDMzIgMTUwLjcgMTIyLjEgNTAuMyAyMzkgMzQuM2M5LjItMS4zIDE3IDYuMSAxNyAxNS40TDI1NiAyODggNDEyLjUgNDQ0LjVjNi43IDYuNyA2LjIgMTcuNy0xLjUgMjMuMUMzNzEuOCA0OTUuNiAzMjMuOCA1MTIgMjcyIDUxMkMxMzkuNSA1MTIgMzIgNDA0LjYgMzIgMjcyem01MjYuNCAxNmM5LjMgMCAxNi42IDcuOCAxNS40IDE3Yy03LjcgNTUuOS0zNC42IDEwNS42LTczLjkgMTQyLjNjLTYgNS42LTE1LjQgNS4yLTIxLjItLjdMMzIwIDI4OGwyMzguNCAwelwiXVxufTtcbmNvbnN0IGZhUGllQ2hhcnQgPSBmYUNoYXJ0UGllO1xuY29uc3QgZmFCb2x0TGlnaHRuaW5nID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JvbHQtbGlnaHRuaW5nJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJlMGI3XCIsIFwiTTAgMjU2TDI4LjUgMjhjMi0xNiAxNS42LTI4IDMxLjgtMjhIMjI4LjljMTUgMCAyNy4xIDEyLjEgMjcuMSAyNy4xYzAgMy4yLS42IDYuNS0xLjcgOS41TDIwOCAxNjBIMzQ3LjNjMjAuMiAwIDM2LjcgMTYuNCAzNi43IDM2LjdjMCA3LjQtMi4yIDE0LjYtNi40IDIwLjdsLTE5Mi4yIDI4MWMtNS45IDguNi0xNS42IDEzLjctMjUuOSAxMy43aC0yLjljLTE1LjcgMC0yOC41LTEyLjgtMjguNS0yOC41YzAtMi4zIC4zLTQuNiAuOS02LjlMMTc2IDI4OEgzMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6XCJdXG59O1xuY29uc3QgZmFTYWNrWG1hcmsgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc2Fjay14bWFyaycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZTU2YVwiLCBcIk0xOTIgOTZsMTI4IDAgNDcuNC03MS4xQzM3NC41IDE0LjIgMzY2LjkgMCAzNTQuMSAwTDE1Ny45IDBjLTEyLjggMC0yMC40IDE0LjItMTMuMyAyNC45TDE5MiA5NnptMTI4IDMybC0xMjggMGMtMy44IDIuNS04LjEgNS4zLTEzIDguNGMwIDAgMCAwIDAgMHMwIDAgMCAwQzEyMi4zIDE3Mi43IDAgMjUwLjkgMCA0MTZjMCA1MyA0MyA5NiA5NiA5NmwzMjAgMGM1MyAwIDk2LTQzIDk2LTk2YzAtMTY1LjEtMTIyLjMtMjQzLjMtMTc5LTI3OS42Yy00LjgtMy4xLTkuMi01LjktMTMtOC40ek0yODkuOSAzMzZsNDcgNDdjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMGwtNDctNDctNDcgNDdjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlsNDctNDctNDctNDdjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMGw0NyA0NyA0Ny00N2M5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjlsLTQ3IDQ3elwiXVxufTtcbmNvbnN0IGZhRmlsZUV4Y2VsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZpbGUtZXhjZWwnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImYxYzNcIiwgXCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRMMCA0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMjU2IDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0yODgtMTI4IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyTDIyNCAwIDY0IDB6TTI1NiAwbDAgMTI4IDEyOCAwTDI1NiAwek0xNTUuNyAyNTAuMkwxOTIgMzAyLjFsMzYuMy01MS45YzcuNi0xMC45IDIyLjYtMTMuNSAzMy40LTUuOXMxMy41IDIyLjYgNS45IDMzLjRMMjIxLjMgMzQ0bDQ2LjQgNjYuMmM3LjYgMTAuOSA1IDI1LjgtNS45IDMzLjRzLTI1LjggNS0zMy40LTUuOUwxOTIgMzg1LjhsLTM2LjMgNTEuOWMtNy42IDEwLjktMjIuNiAxMy41LTMzLjQgNS45cy0xMy41LTIyLjYtNS45LTMzLjRMMTYyLjcgMzQ0bC00Ni40LTY2LjJjLTcuNi0xMC45LTUtMjUuOCA1LjktMzMuNHMyNS44LTUgMzMuNCA1Ljl6XCJdXG59O1xuY29uc3QgZmFGaWxlQ29udHJhY3QgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmlsZS1jb250cmFjdCcsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjU2Y1wiLCBcIk02NCAwQzI4LjcgMCAwIDI4LjcgMCA2NEwwIDQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NGwyNTYgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTI4OC0xMjggMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJMMjI0IDAgNjQgMHpNMjU2IDBsMCAxMjggMTI4IDBMMjU2IDB6TTgwIDY0bDY0IDBjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZMODAgOTZjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6bTAgNjRsNjQgMGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNmwtNjQgMGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnptNTQuMiAyNTMuOGMtNi4xIDIwLjMtMjQuOCAzNC4yLTQ2IDM0LjJMODAgNDE2Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2bDguMiAwYzcuMSAwIDEzLjMtNC42IDE1LjMtMTEuNGwxNC45LTQ5LjVjMy40LTExLjMgMTMuOC0xOS4xIDI1LjYtMTkuMXMyMi4yIDcuNyAyNS42IDE5LjFsMTEuNiAzOC42YzcuNC02LjIgMTYuOC05LjcgMjYuOC05LjdjMTUuOSAwIDMwLjQgOSAzNy41IDIzLjJsNC40IDguOCA1NC4xIDBjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZsLTY0IDBjLTYuMSAwLTExLjYtMy40LTE0LjMtOC44bC04LjgtMTcuN2MtMS43LTMuNC01LjEtNS41LTguOC01LjVzLTcuMiAyLjEtOC44IDUuNWwtOC44IDE3LjdjLTIuOSA1LjktOS4yIDkuNC0xNS43IDguOHMtMTIuMS01LjEtMTMuOS0xMS4zTDE0NCAzNDlsLTkuOCAzMi44elwiXVxufTtcbmNvbnN0IGZhRmlzaEZpbnMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmlzaC1maW5zJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJlNGYyXCIsIFwiTTI3NS4yIDM4LjRjLTEwLjYtOC0yNS04LjUtMzYuMy0xLjVTMjIyIDU3LjMgMjI0LjYgNzAuM2w5LjcgNDguNmMtMTkuNCA5LTM2LjkgMTkuOS01Mi40IDMxLjVjLTE1LjMgMTEuNS0yOSAyMy45LTQwLjcgMzYuM0w0OC4xIDEzMi40Yy0xMi41LTcuMy0yOC40LTUuMy0zOC42IDQuOVMtMyAxNjMuMyA0LjIgMTc1LjlMNTAgMjU2IDQuMiAzMzYuMWMtNy4yIDEyLjYtNSAyOC40IDUuMyAzOC42czI2LjEgMTIuMiAzOC42IDQuOWw5My4xLTU0LjNjMTEuOCAxMi4zIDI1LjQgMjQuOCA0MC43IDM2LjNjMTUuNSAxMS42IDMzIDIyLjUgNTIuNCAzMS41bC05LjcgNDguNmMtMi42IDEzIDMuMSAyNi4zIDE0LjMgMzMuM3MyNS42IDYuNSAzNi4zLTEuNWw3Ny42LTU4LjJjNTQuOS00IDEwMS41LTI3IDEzNy4yLTUzLjhjMzkuMi0yOS40IDY3LjItNjQuNyA4MS42LTg5LjVjNS44LTkuOSA1LjgtMjIuMiAwLTMyLjFjLTE0LjQtMjQuOC00Mi41LTYwLjEtODEuNi04OS41Yy0zNS44LTI2LjgtODIuMy00OS44LTEzNy4yLTUzLjhMMjc1LjIgMzguNHpNMzg0IDI1NmEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwelwiXVxufTtcbmNvbnN0IGZhQnVpbGRpbmdGbGFnID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2J1aWxkaW5nLWZsYWcnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU0ZDVcIiwgXCJNNDggMEMyMS41IDAgMCAyMS41IDAgNDhMMCA0NjRjMCAyNi41IDIxLjUgNDggNDggNDhsOTYgMCAwLTgwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4czQ4IDIxLjUgNDggNDhsMCA4MCA5NiAwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4bDAtNDE2YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4TDQ4IDB6TTY0IDI0MGMwLTguOCA3LjItMTYgMTYtMTZsMzIgMGM4LjggMCAxNiA3LjIgMTYgMTZsMCAzMmMwIDguOC03LjIgMTYtMTYgMTZsLTMyIDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTMyem0xMTItMTZsMzIgMGM4LjggMCAxNiA3LjIgMTYgMTZsMCAzMmMwIDguOC03LjIgMTYtMTYgMTZsLTMyIDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTMyYzAtOC44IDcuMi0xNiAxNi0xNnptODAgMTZjMC04LjggNy4yLTE2IDE2LTE2bDMyIDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgMzJjMCA4LjgtNy4yIDE2LTE2IDE2bC0zMiAwYy04LjggMC0xNi03LjItMTYtMTZsMC0zMnpNODAgOTZsMzIgMGM4LjggMCAxNiA3LjIgMTYgMTZsMCAzMmMwIDguOC03LjIgMTYtMTYgMTZsLTMyIDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTMyYzAtOC44IDcuMi0xNiAxNi0xNnptODAgMTZjMC04LjggNy4yLTE2IDE2LTE2bDMyIDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgMzJjMCA4LjgtNy4yIDE2LTE2IDE2bC0zMiAwYy04LjggMC0xNi03LjItMTYtMTZsMC0zMnpNMjcyIDk2bDMyIDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgMzJjMCA4LjgtNy4yIDE2LTE2IDE2bC0zMiAwYy04LjggMC0xNi03LjItMTYtMTZsMC0zMmMwLTguOCA3LjItMTYgMTYtMTZ6TTQ0OCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMmwwIDQ4MCA2NCAwIDAtMzIwIDE0NCAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTEyOGMwLTguOC03LjItMTYtMTYtMTZMNDgwIDMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyelwiXVxufTtcbmNvbnN0IGZhRmFjZUdyaW5CZWFtID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZhY2UtZ3Jpbi1iZWFtJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI4NTE2LCBcImdyaW4tYmVhbVwiXSwgXCJmNTgyXCIsIFwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0zODguMSAzMTIuOGMxMi4zLTMuOCAyNC4zIDYuOSAxOS4zIDE4LjdDMzgyLjQgMzkwLjYgMzI0LjIgNDMyIDI1Ni4zIDQzMnMtMTI2LjItNDEuNC0xNTEuMS0xMDAuNWMtNS0xMS44IDctMjIuNSAxOS4zLTE4LjdjMzkuNyAxMi4yIDg0LjUgMTkgMTMxLjggMTlzOTIuMS02LjggMTMxLjgtMTl6bS0xNzAuNS04NHMwIDAgMCAwYzAgMCAwIDAgMCAwbC0uMi0uMmMtLjItLjItLjQtLjUtLjctLjljLS42LS44LTEuNi0yLTIuOC0zLjRjLTIuNS0yLjgtNi02LjYtMTAuMi0xMC4zYy04LjgtNy44LTE4LjgtMTQtMjcuNy0xNHMtMTguOSA2LjItMjcuNyAxNGMtNC4yIDMuNy03LjcgNy41LTEwLjIgMTAuM2MtMS4yIDEuNC0yLjIgMi42LTIuOCAzLjRjLS4zIC40LS42IC43LS43IC45bC0uMiAuMmMwIDAgMCAwIDAgMGMwIDAgMCAwIDAgMHMwIDAgMCAwYy0yLjEgMi44LTUuNyAzLjktOC45IDIuOHMtNS41LTQuMS01LjUtNy42YzAtMTcuOSA2LjctMzUuNiAxNi42LTQ4LjhjOS44LTEzIDIzLjktMjMuMiAzOS40LTIzLjJzMjkuNiAxMC4yIDM5LjQgMjMuMmM5LjkgMTMuMiAxNi42IDMwLjkgMTYuNiA0OC44YzAgMy40LTIuMiA2LjUtNS41IDcuNnMtNi45IDAtOC45LTIuOGMwIDAgMCAwIDAgMHMwIDAgMCAwem0xNjAgMGMwIDAgMCAwIDAgMGwtLjItLjJjLS4yLS4yLS40LS41LS43LS45Yy0uNi0uOC0xLjYtMi0yLjgtMy40Yy0yLjUtMi44LTYtNi42LTEwLjItMTAuM2MtOC44LTcuOC0xOC44LTE0LTI3LjctMTRzLTE4LjkgNi4yLTI3LjcgMTRjLTQuMiAzLjctNy43IDcuNS0xMC4yIDEwLjNjLTEuMiAxLjQtMi4yIDIuNi0yLjggMy40Yy0uMyAuNC0uNiAuNy0uNyAuOWwtLjIgLjJjMCAwIDAgMCAwIDBjMCAwIDAgMCAwIDBzMCAwIDAgMGMtMi4xIDIuOC01LjcgMy45LTguOSAyLjhzLTUuNS00LjEtNS41LTcuNmMwLTE3LjkgNi43LTM1LjYgMTYuNi00OC44YzkuOC0xMyAyMy45LTIzLjIgMzkuNC0yMy4yczI5LjYgMTAuMiAzOS40IDIzLjJjOS45IDEzLjIgMTYuNiAzMC45IDE2LjYgNDguOGMwIDMuNC0yLjIgNi41LTUuNSA3LjZzLTYuOSAwLTguOS0yLjhjMCAwIDAgMCAwIDBzMCAwIDAgMHMwIDAgMCAwelwiXVxufTtcbmNvbnN0IGZhR3JpbkJlYW0gPSBmYUZhY2VHcmluQmVhbTtcbmNvbnN0IGZhT2JqZWN0VW5ncm91cCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdvYmplY3QtdW5ncm91cCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjI0OFwiLCBcIk0zMiAxMTkuNEMxMi45IDEwOC40IDAgODcuNyAwIDY0QzAgMjguNyAyOC43IDAgNjQgMGMyMy43IDAgNDQuNCAxMi45IDU1LjQgMzJsMjA5LjEgMEMzMzkuNiAxMi45IDM2MC4zIDAgMzg0IDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRjMCAyMy43LTEyLjkgNDQuNC0zMiA1NS40bDAgMTEzLjFjMTkuMSAxMS4xIDMyIDMxLjcgMzIgNTUuNGMwIDM1LjMtMjguNyA2NC02NCA2NGMtMjMuNyAwLTQ0LjQtMTIuOS01NS40LTMybC0yMDkuMSAwYy0xMS4xIDE5LjEtMzEuNyAzMi01NS40IDMyYy0zNS4zIDAtNjQtMjguNy02NC02NGMwLTIzLjcgMTIuOS00NC40IDMyLTU1LjRsMC0xMTMuMXpNMTE5LjQgOTZjLTUuNiA5LjctMTMuNyAxNy44LTIzLjQgMjMuNGwwIDExMy4xYzkuNyA1LjYgMTcuOCAxMy43IDIzLjQgMjMuNGwyMDkuMSAwYzUuNi05LjcgMTMuNy0xNy44IDIzLjQtMjMuNGwwLTExMy4xYy05LjctNS42LTE3LjgtMTMuNy0yMy40LTIzLjRMMTE5LjQgOTZ6bTE5MiAzODRjLTExLjEgMTkuMS0zMS43IDMyLTU1LjQgMzJjLTM1LjMgMC02NC0yOC43LTY0LTY0YzAtMjMuNyAxMi45LTQ0LjQgMzItNTUuNGwwLTQwLjYgNjQgMCAwIDQwLjZjOS43IDUuNiAxNy44IDEzLjcgMjMuNCAyMy40bDIwOS4xIDBjNS42LTkuNyAxMy43LTE3LjggMjMuNC0yMy40bDAtMTEzLjFjLTkuNy01LjYtMTcuOC0xMy43LTIzLjQtMjMuNGwtNDYgMGMtNS40LTE1LjQtMTQuNi0yOC45LTI2LjUtMzkuNmwwLTI0LjQgNzIuNiAwYzExLjEtMTkuMSAzMS43LTMyIDU1LjQtMzJjMzUuMyAwIDY0IDI4LjcgNjQgNjRjMCAyMy43LTEyLjkgNDQuNC0zMiA1NS40bDAgMTEzLjFjMTkuMSAxMS4xIDMyIDMxLjcgMzIgNTUuNGMwIDM1LjMtMjguNyA2NC02NCA2NGMtMjMuNyAwLTQ0LjQtMTIuOS01NS40LTMybC0yMDkuMSAwelwiXVxufTtcbmNvbnN0IGZhUG9vcCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwb29wJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNjE5XCIsIFwiTTI1NC40IDYuNmMzLjUtNC4zIDktNi41IDE0LjUtNS43QzMxNS44IDcuMiAzNTIgNDcuNCAzNTIgOTZjMCAxMS4yLTEuOSAyMi01LjUgMzJsNS41IDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRjMCAxOS4xLTguNCAzNi4zLTIxLjcgNDhsMTMuNyAwYzM5LjggMCA3MiAzMi4yIDcyIDcyYzAgMjMuMi0xMSA0My44LTI4IDU3YzM0LjEgNS43IDYwIDM1LjMgNjAgNzFjMCAzOS44LTMyLjIgNzItNzIgNzJMNzIgNTEyYy0zOS44IDAtNzItMzIuMi03Mi03MmMwLTM1LjcgMjUuOS02NS4zIDYwLTcxYy0xNy0xMy4yLTI4LTMzLjgtMjgtNTdjMC0zOS44IDMyLjItNzIgNzItNzJsMTMuNyAwQzEwNC40IDIyOC4zIDk2IDIxMS4xIDk2IDE5MmMwLTM1LjMgMjguNy02NCA2NC02NGwxNi4yIDBjNDQuMS0uMSA3OS44LTM1LjkgNzkuOC04MGMwLTkuMi0xLjUtMTcuOS00LjMtMjYuMWMtMS44LTUuMi0uOC0xMS4xIDIuOC0xNS40elwiXVxufTtcbmNvbnN0IGZhTG9jYXRpb25QaW4gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbG9jYXRpb24tcGluJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXCJtYXAtbWFya2VyXCJdLCBcImYwNDFcIiwgXCJNMzg0IDE5MmMwIDg3LjQtMTE3IDI0My0xNjguMyAzMDcuMmMtMTIuMyAxNS4zLTM1LjEgMTUuMy00Ny40IDBDMTE3IDQzNSAwIDI3OS40IDAgMTkyQzAgODYgODYgMCAxOTIgMFMzODQgODYgMzg0IDE5MnpcIl1cbn07XG5jb25zdCBmYU1hcE1hcmtlciA9IGZhTG9jYXRpb25QaW47XG5jb25zdCBmYUthYWJhID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2thYWJhJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbMTI4MzMxXSwgXCJmNjZiXCIsIFwiTTYwIDEyMGwyMjggNzEuMkw1MTYgMTIwIDI4OCA0OC44IDYwIDEyMHpNMjc4LjUgMS41YzYuMi0xLjkgMTIuOS0xLjkgMTkuMSAwbDI1NiA4MEM1NjYuOSA4NS42IDU3NiA5OCA1NzYgMTEybDAgMTZzMCAwIDAgMGwwIDIxLjJMMjkyLjggMjM3LjdjLTMuMSAxLTYuNCAxLTkuNSAwTDAgMTQ5LjIgMCAxMjhsMC0xNkMwIDk4IDkuMSA4NS42IDIyLjUgODEuNWwyNTYtODB6bTIzLjkgMjY2LjhMNTc2IDE4Mi44bDAgNDYuNS01Mi44IDE2LjVjLTguNCAyLjYtMTMuMSAxMS42LTEwLjUgMjBzMTEuNiAxMy4xIDIwIDEwLjVMNTc2IDI2Mi44IDU3NiA0MDBjMCAxNC05LjEgMjYuNC0yMi41IDMwLjVsLTI1NiA4MGMtNi4yIDEuOS0xMi45IDEuOS0xOS4xIDBsLTI1Ni04MEM5LjEgNDI2LjQgMCA0MTQgMCA0MDBMMCAyNjIuOGw0My4yIDEzLjVjOC40IDIuNiAxNy40LTIuMSAyMC0xMC41cy0yLjEtMTcuNC0xMC41LTIwTDAgMjI5LjJsMC00Ni41IDI3My43IDg1LjVjOS4zIDIuOSAxOS4zIDIuOSAyOC42IDB6bS0xODUuNS0yLjZjLTguNC0yLjYtMTcuNCAyLjEtMjAgMTAuNXMyLjEgMTcuNCAxMC41IDIwbDY0IDIwYzguNCAyLjYgMTcuNC0yLjEgMjAtMTAuNXMtMi4xLTE3LjQtMTAuNS0yMGwtNjQtMjB6bTM1MiAzMC41YzguNC0yLjYgMTMuMS0xMS42IDEwLjUtMjBzLTExLjYtMTMuMS0yMC0xMC41bC02NCAyMGMtOC40IDIuNi0xMy4xIDExLjYtMTAuNSAyMHMxMS42IDEzLjEgMjAgMTAuNWw2NC0yMHptLTIyNCA5LjVjLTguNC0yLjYtMTcuNCAyLjEtMjAgMTAuNXMyLjEgMTcuNCAxMC41IDIwbDM4LjUgMTJjOS4zIDIuOSAxOS4zIDIuOSAyOC42IDBsMzguNS0xMmM4LjQtMi42IDEzLjEtMTEuNiAxMC41LTIwcy0xMS42LTEzLjEtMjAtMTAuNWwtMzguNSAxMmMtMy4xIDEtNi40IDEtOS41IDBsLTM4LjUtMTJ6XCJdXG59O1xuY29uc3QgZmFUb2lsZXRQYXBlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0b2lsZXQtcGFwZXInLFxuICBpY29uOiBbNjQwLCA1MTIsIFsxMjk1MzFdLCBcImY3MWVcIiwgXCJNNDQ0LjIgMEMzOTcuMiA0OS42IDM4NCAxMjYuNSAzODQgMTkyYzAgMTU4LjgtMjcuMyAyNDctNDIuNyAyODMuOWMtMTAgMjQtMzMuMiAzNi4xLTU1LjQgMzYuMUw0OCA1MTJjLTExLjUgMC0yMi4yLTYuMi0yNy44LTE2LjJzLTUuNi0yMi4zIC40LTMyLjJjOS44LTE3LjcgMTUuNC0zOC4yIDIwLjUtNTcuN0M1Mi4zIDM2Mi44IDY0IDI5My41IDY0IDE5MkM2NCA4NiAxMDcgMCAxNjAgMEw0NDQuMiAwek01MTIgMzg0Yy01MyAwLTk2LTg2LTk2LTE5MlM0NTkgMCA1MTIgMHM5NiA4NiA5NiAxOTJzLTQzIDE5Mi05NiAxOTJ6bTAtMTI4YzE3LjcgMCAzMi0yOC43IDMyLTY0cy0xNC4zLTY0LTMyLTY0cy0zMiAyOC43LTMyIDY0czE0LjMgNjQgMzIgNjR6TTE0NCAyMDhhMTYgMTYgMCAxIDAgLTMyIDAgMTYgMTYgMCAxIDAgMzIgMHptNjQgMGExNiAxNiAwIDEgMCAtMzIgMCAxNiAxNiAwIDEgMCAzMiAwem00OCAxNmExNiAxNiAwIDEgMCAwLTMyIDE2IDE2IDAgMSAwIDAgMzJ6bTgwLTE2YTE2IDE2IDAgMSAwIC0zMiAwIDE2IDE2IDAgMSAwIDMyIDB6XCJdXG59O1xuY29uc3QgZmFIZWxtZXRTYWZldHkgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGVsbWV0LXNhZmV0eScsXG4gIGljb246IFs1NzYsIDUxMiwgW1wiaGFyZC1oYXRcIiwgXCJoYXQtaGFyZFwiXSwgXCJmODA3XCIsIFwiTTI1NiAzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJsMCAyLjMgMCA5OS42YzAgNS42LTQuNSAxMC4xLTEwLjEgMTAuMWMtMy42IDAtNy0xLjktOC44LTUuMUwxNTcuMSA4N0M4MyAxMjMuNSAzMiAxOTkuOCAzMiAyODhsMCA2NCA1MTIgMCAwLTY2LjRjLS45LTg3LjItNTEuNy0xNjIuNC0xMjUuMS0xOTguNmwtNDggODMuOWMtMS44IDMuMi01LjIgNS4xLTguOCA1LjFjLTUuNiAwLTEwLjEtNC41LTEwLjEtMTAuMWwwLTk5LjYgMC0yLjNjMC0xNy43LTE0LjMtMzItMzItMzJsLTY0IDB6TTE2LjYgMzg0QzcuNCAzODQgMCAzOTEuNCAwIDQwMC42YzAgNC43IDIgOS4yIDUuOCAxMS45QzI3LjUgNDI4LjQgMTExLjggNDgwIDI4OCA0ODBzMjYwLjUtNTEuNiAyODIuMi02Ny41YzMuOC0yLjggNS44LTcuMiA1LjgtMTEuOWMwLTkuMi03LjQtMTYuNi0xNi42LTE2LjZMMTYuNiAzODR6XCJdXG59O1xuY29uc3QgZmFIYXJkSGF0ID0gZmFIZWxtZXRTYWZldHk7XG5jb25zdCBmYUhhdEhhcmQgPSBmYUhlbG1ldFNhZmV0eTtcbmNvbnN0IGZhRWplY3QgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZWplY3QnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFs5MTY3XSwgXCJmMDUyXCIsIFwiTTIyNCAzMmMxMy41IDAgMjYuMyA1LjYgMzUuNCAxNS42bDE3NiAxOTJjMTIuOSAxNCAxNi4yIDM0LjMgOC42IDUxLjhTNDE5IDMyMCA0MDAgMzIwTDQ4IDMyMGMtMTkgMC0zNi4zLTExLjItNDMuOS0yOC43cy00LjMtMzcuNyA4LjYtNTEuOGwxNzYtMTkyQzE5Ny43IDM3LjYgMjEwLjUgMzIgMjI0IDMyek0wIDQzMmMwLTI2LjUgMjEuNS00OCA0OC00OGwzNTIgMGMyNi41IDAgNDggMjEuNSA0OCA0OHMtMjEuNSA0OC00OCA0OEw0OCA0ODBjLTI2LjUgMC00OC0yMS41LTQ4LTQ4elwiXVxufTtcbmNvbnN0IGZhQ2lyY2xlUmlnaHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2lyY2xlLXJpZ2h0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbNjE4MzgsIFwiYXJyb3ctYWx0LWNpcmNsZS1yaWdodFwiXSwgXCJmMzVhXCIsIFwiTTAgMjU2YTI1NiAyNTYgMCAxIDAgNTEyIDBBMjU2IDI1NiAwIDEgMCAwIDI1NnptMzk1LjMgMTEuM2wtMTEyIDExMmMtNC42IDQuNi0xMS41IDUuOS0xNy40IDMuNXMtOS45LTguMy05LjktMTQuOGwwLTY0LTk2IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtMzJjMC0xNy43IDE0LjMtMzIgMzItMzJsOTYgMCAwLTY0YzAtNi41IDMuOS0xMi4zIDkuOS0xNC44czEyLjktMS4xIDE3LjQgMy41bDExMiAxMTJjNi4yIDYuMiA2LjIgMTYuNCAwIDIyLjZ6XCJdXG59O1xuY29uc3QgZmFBcnJvd0FsdENpcmNsZVJpZ2h0ID0gZmFDaXJjbGVSaWdodDtcbmNvbnN0IGZhUGxhbmVDaXJjbGVDaGVjayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwbGFuZS1jaXJjbGUtY2hlY2snLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU1NTVcIiwgXCJNMjU2IDBjLTM1IDAtNjQgNTkuNS02NCA5My43bDAgODQuNkw4LjEgMjgzLjRjLTUgMi44LTguMSA4LjItOC4xIDEzLjlsMCA2NS41YzAgMTAuNiAxMC4yIDE4LjMgMjAuNCAxNS40bDE3MS42LTQ5IDAgNzAuOS01Ny42IDQzLjJjLTQgMy02LjQgNy44LTYuNCAxMi44bDAgNDJjMCA3LjggNi4zIDE0IDE0IDE0YzEuMyAwIDIuNi0uMiAzLjktLjVMMjU2IDQ4MGwxMTAuMSAzMS41YzEuMyAuNCAyLjYgLjUgMy45IC41YzYgMCAxMS4xLTMuNyAxMy4xLTlDMzQ0LjUgNDcwLjcgMzIwIDQyMi4yIDMyMCAzNjhjMC02MC42IDMwLjYtMTE0IDc3LjEtMTQ1LjZMMzIwIDE3OC4zbDAtODQuNkMzMjAgNTkuNSAyOTIgMCAyNTYgMHpNNjQwIDM2OGExNDQgMTQ0IDAgMSAwIC0yODggMCAxNDQgMTQ0IDAgMSAwIDI4OCAwem0tNzYuNy00My4zYzYuMiA2LjIgNi4yIDE2LjQgMCAyMi42bC03MiA3MmMtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBsLTQwLTQwYy02LjItNi4yLTYuMi0xNi40IDAtMjIuNnMxNi40LTYuMiAyMi42IDBMNDgwIDM4NS40bDYwLjctNjAuN2M2LjItNi4yIDE2LjQtNi4yIDIyLjYgMHpcIl1cbn07XG5jb25zdCBmYUZhY2VSb2xsaW5nRXllcyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmYWNlLXJvbGxpbmctZXllcycsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyODU4MCwgXCJtZWgtcm9sbGluZy1leWVzXCJdLCBcImY1YTVcIiwgXCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTE5MiAzNjhsMTI4IDBjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZsLTEyOCAwYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2em0zMi0xNDRjMCAzNS4zLTI4LjcgNjQtNjQgNjRzLTY0LTI4LjctNjQtNjRjMC0yNiAxNS41LTQ4LjQgMzcuOC01OC40Yy0zLjcgNS4yLTUuOCAxMS42LTUuOCAxOC40YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJjMC02LjktMi4yLTEzLjItNS44LTE4LjRDMjA4LjUgMTc1LjYgMjI0IDE5OCAyMjQgMjI0em0xMjggNjRjLTM1LjMgMC02NC0yOC43LTY0LTY0YzAtMjYgMTUuNS00OC40IDM3LjgtNTguNGMtMy43IDUuMi01LjggMTEuNi01LjggMTguNGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyYzAtNi45LTIuMi0xMy4yLTUuOC0xOC40QzQwMC41IDE3NS42IDQxNiAxOTggNDE2IDIyNGMwIDM1LjMtMjguNyA2NC02NCA2NHpcIl1cbn07XG5jb25zdCBmYU1laFJvbGxpbmdFeWVzID0gZmFGYWNlUm9sbGluZ0V5ZXM7XG5jb25zdCBmYU9iamVjdEdyb3VwID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ29iamVjdC1ncm91cCcsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjI0N1wiLCBcIk0zMiAxMTkuNEMxMi45IDEwOC40IDAgODcuNyAwIDY0QzAgMjguNyAyOC43IDAgNjQgMGMyMy43IDAgNDQuNCAxMi45IDU1LjQgMzJsMzM3LjEgMEM0NjcuNiAxMi45IDQ4OC4zIDAgNTEyIDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRjMCAyMy43LTEyLjkgNDQuNC0zMiA1NS40bDAgMjczLjFjMTkuMSAxMS4xIDMyIDMxLjcgMzIgNTUuNGMwIDM1LjMtMjguNyA2NC02NCA2NGMtMjMuNyAwLTQ0LjQtMTIuOS01NS40LTMybC0zMzcuMSAwYy0xMS4xIDE5LjEtMzEuNyAzMi01NS40IDMyYy0zNS4zIDAtNjQtMjguNy02NC02NGMwLTIzLjcgMTIuOS00NC40IDMyLTU1LjRsMC0yNzMuMXpNNDU2LjYgOTZMMTE5LjQgOTZjLTUuNiA5LjctMTMuNyAxNy44LTIzLjQgMjMuNGwwIDI3My4xYzkuNyA1LjYgMTcuOCAxMy43IDIzLjQgMjMuNGwzMzcuMSAwYzUuNi05LjcgMTMuNy0xNy44IDIzLjQtMjMuNGwwLTI3My4xYy05LjctNS42LTE3LjgtMTMuNy0yMy40LTIzLjR6TTEyOCAxNjBjMC0xNy43IDE0LjMtMzIgMzItMzJsMTI4IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCA5NmMwIDE3LjctMTQuMyAzMi0zMiAzMmwtMTI4IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtOTZ6TTI1NiAzMjBsMzIgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTMyIDY0IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCA5NmMwIDE3LjctMTQuMyAzMi0zMiAzMmwtMTI4IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtMzJ6XCJdXG59O1xuY29uc3QgZmFDaGFydExpbmUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2hhcnQtbGluZScsXG4gIGljb246IFs1MTIsIDUxMiwgW1wibGluZS1jaGFydFwiXSwgXCJmMjAxXCIsIFwiTTY0IDY0YzAtMTcuNy0xNC4zLTMyLTMyLTMyUzAgNDYuMyAwIDY0TDAgNDAwYzAgNDQuMiAzNS44IDgwIDgwIDgwbDQwMCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyTDgwIDQxNmMtOC44IDAtMTYtNy4yLTE2LTE2TDY0IDY0em00MDYuNiA4Ni42YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwTDMyMCAyMTAuN2wtNTcuNC01Ny40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMGwtMTEyIDExMmMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMEwyNDAgMjIxLjNsNTcuNCA1Ny40YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDEyOC0xMjh6XCJdXG59O1xuY29uc3QgZmFMaW5lQ2hhcnQgPSBmYUNoYXJ0TGluZTtcbmNvbnN0IGZhTWFza1ZlbnRpbGF0b3IgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbWFzay12ZW50aWxhdG9yJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlNTI0XCIsIFwiTTE1OS4xIDE3NkMxMzkuNCAyMTkuMiAxMjggMjY0LjcgMTI4IDMwMC44YzAgMTUuOSAyLjIgMzEuNCA2LjMgNDZsLTMxLjgtNy45QzcwLjUgMzMwLjkgNDggMzAyLjEgNDggMjY5bDAtODVjMC00LjQgMy42LTggOC04bDEwMy4xIDB6bTI2LTQ4TDU2IDEyOGMtMzAuOSAwLTU2IDI1LjEtNTYgNTZsMCA4NWMwIDU1LjEgMzcuNSAxMDMuMSA5MC45IDExNi40bDcxLjMgMTcuOGMyMi43IDMwLjUgNTUuNCA1NC4xIDkzLjggNjYuNmwwLTc2LjZjLTE5LjctMTYuNC0zMi00MC4zLTMyLTY2LjljMC00OS41IDQzLTEzNC40IDk2LTEzNC40YzUyLjUgMCA5NiA4NC45IDk2IDEzNC40YzAgMjYuNy0xMi40IDUwLjQtMzIgNjYuOGwwIDc2LjZjMzgtMTIuNiA3MC42LTM2IDkzLjUtNjYuNGw3MS42LTE3LjlDNjAyLjUgMzcyLjEgNjQwIDMyNC4xIDY0MCAyNjlsMC04NWMwLTMwLjktMjUuMS01Ni01Ni01NmwtMTI5LjUgMEM0MTkuNyA3My44IDM3Mi4xIDMyIDMyMCAzMmMtNTIuNiAwLTEwMC4yIDQxLjgtMTM0LjkgOTZ6bTI5NS42IDQ4TDU4NCAxNzZjNC40IDAgOCAzLjYgOCA4bDAgODVjMCAzMy0yMi41IDYxLjgtNTQuNSA2OS45bC0zMS44IDhjNC4yLTE0LjcgNi40LTMwLjEgNi40LTQ2LjFjMC0zNi4xLTExLjYtODEuNi0zMS4zLTEyNC44ek0yODggMzIwbDAgMTkyIDY0IDAgMC0xOTJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ6XCJdXG59O1xuY29uc3QgZmFBcnJvd1JpZ2h0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Fycm93LXJpZ2h0JyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbODU5NF0sIFwiZjA2MVwiLCBcIk00MzguNiAyNzguNmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM2wtMTYwLTE2MGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNMMzM4LjggMjI0IDMyIDIyNGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwzMDYuNyAwTDIzMy40IDM5My40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwbDE2MC0xNjB6XCJdXG59O1xuY29uc3QgZmFTaWduc1Bvc3QgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc2lnbnMtcG9zdCcsXG4gIGljb246IFs1MTIsIDUxMiwgW1wibWFwLXNpZ25zXCJdLCBcImYyNzdcIiwgXCJNMjI0IDMyTDY0IDMyQzQ2LjMgMzIgMzIgNDYuMyAzMiA2NGwwIDY0YzAgMTcuNyAxNC4zIDMyIDMyIDMybDM3Ny40IDBjNC4yIDAgOC4zLTEuNyAxMS4zLTQuN2w0OC00OGM2LjItNi4yIDYuMi0xNi40IDAtMjIuNmwtNDgtNDhjLTMtMy03LjEtNC43LTExLjMtNC43TDI4OCAzMmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMnpNNDgwIDI1NmMwLTE3LjctMTQuMy0zMi0zMi0zMmwtMTYwIDAgMC0zMi02NCAwIDAgMzJMNzAuNiAyMjRjLTQuMiAwLTguMyAxLjctMTEuMyA0LjdsLTQ4IDQ4Yy02LjIgNi4yLTYuMiAxNi40IDAgMjIuNmw0OCA0OGMzIDMgNy4xIDQuNyAxMS4zIDQuN0w0NDggMzUyYzE3LjcgMCAzMi0xNC4zIDMyLTMybDAtNjR6TTI4OCA0ODBsMC05Ni02NCAwIDAgOTZjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMnpcIl1cbn07XG5jb25zdCBmYU1hcFNpZ25zID0gZmFTaWduc1Bvc3Q7XG5jb25zdCBmYUNhc2hSZWdpc3RlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjYXNoLXJlZ2lzdGVyJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNzg4XCIsIFwiTTY0IDBDNDYuMyAwIDMyIDE0LjMgMzIgMzJsMCA2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMmw4MCAwIDAgMzItNTcgMGMtMzEuNiAwLTU4LjUgMjMuMS02My4zIDU0LjRMMS4xIDM2NC4xQy40IDM2OC44IDAgMzczLjYgMCAzNzguNEwwIDQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NGwzODQgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTY5LjZjMC00LjgtLjQtOS42LTEuMS0xNC40TDQ4OC4yIDIxNC40QzQ4My41IDE4My4xIDQ1Ni42IDE2MCA0MjUgMTYwbC0yMTcgMCAwLTMyIDgwIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJsMC02NGMwLTE3LjctMTQuMy0zMi0zMi0zMkw2NCAwek05NiA0OGwxNjAgMGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkw5NiA4MGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnpNNjQgNDMyYzAtOC44IDcuMi0xNiAxNi0xNmwzNTIgMGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNkw4MCA0NDhjLTguOCAwLTE2LTcuMi0xNi0xNnptNDgtMTY4YTI0IDI0IDAgMSAxIDAtNDggMjQgMjQgMCAxIDEgMCA0OHptMTIwLTI0YTI0IDI0IDAgMSAxIC00OCAwIDI0IDI0IDAgMSAxIDQ4IDB6TTE2MCAzNDRhMjQgMjQgMCAxIDEgMC00OCAyNCAyNCAwIDEgMSAwIDQ4ek0zMjggMjQwYTI0IDI0IDAgMSAxIC00OCAwIDI0IDI0IDAgMSAxIDQ4IDB6TTI1NiAzNDRhMjQgMjQgMCAxIDEgMC00OCAyNCAyNCAwIDEgMSAwIDQ4ek00MjQgMjQwYTI0IDI0IDAgMSAxIC00OCAwIDI0IDI0IDAgMSAxIDQ4IDB6TTM1MiAzNDRhMjQgMjQgMCAxIDEgMC00OCAyNCAyNCAwIDEgMSAwIDQ4elwiXVxufTtcbmNvbnN0IGZhUGVyc29uQ2lyY2xlUXVlc3Rpb24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGVyc29uLWNpcmNsZS1xdWVzdGlvbicsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZTU0MlwiLCBcIk0xMTIgNDhhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHptNDAgMzA0bDAgMTI4YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtMjIzLjFMNTkuNCAzMDQuNWMtOS4xIDE1LjEtMjguOCAyMC00My45IDEwLjlzLTIwLTI4LjgtMTAuOS00My45bDU4LjMtOTdjMTcuNC0yOC45IDQ4LjYtNDYuNiA4Mi4zLTQ2LjZsMjkuNyAwYzMzLjcgMCA2NC45IDE3LjcgODIuMyA0Ni42bDQ0LjkgNzQuN2MtMTYuMSAxNy42LTI4LjYgMzguNS0zNi42IDYxLjVjLTEuOS0xLjgtMy41LTMuOS00LjktNi4zTDIzMiAyNTYuOSAyMzIgNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtMTI4LTE2IDB6TTQzMiAyMjRhMTQ0IDE0NCAwIDEgMSAwIDI4OCAxNDQgMTQ0IDAgMSAxIDAtMjg4em0wIDI0MGEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6TTM2OCAzMjEuNmwwIDYuNGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2bDAtNi40YzAtNS4zIDQuMy05LjYgOS42LTkuNmw0MC41IDBjNy43IDAgMTMuOSA2LjIgMTMuOSAxMy45YzAgNS4yLTIuOSA5LjktNy40IDEyLjNsLTMyIDE2LjhjLTUuMyAyLjgtOC42IDguMi04LjYgMTQuMmwwIDE0LjhjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNmwwLTUuMSAyMy41LTEyLjNjMTUuMS03LjkgMjQuNS0yMy42IDI0LjUtNDAuNmMwLTI1LjQtMjAuNi00NS45LTQ1LjktNDUuOWwtNDAuNSAwYy0yMyAwLTQxLjYgMTguNi00MS42IDQxLjZ6XCJdXG59O1xuY29uc3QgZmFIID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2gnLFxuICBpY29uOiBbMzg0LCA1MTIsIFsxMDRdLCBcIjQ4XCIsIFwiTTMyMCAyNTZsMCAxOTJjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTIyNCAwLTE2MGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMmwwIDEyOEw2NCAxOTIgNjQgNjRjMC0xNy43LTE0LjMtMzItMzItMzJTMCA0Ni4zIDAgNjRMMCA0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTE5MiAyNTYgMHpcIl1cbn07XG5jb25zdCBmYVRhcnAgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndGFycCcsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZTU3YlwiLCBcIk01NzYgMTI4YzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDY0QzI4LjcgNjQgMCA5Mi43IDAgMTI4TDAgMzg0YzAgMzUuMyAyOC43IDY0IDY0IDY0bDM1MiAwIDAtMTI4YzAtMTcuNyAxNC4zLTMyIDMyLTMybDEyOCAwIDAtMTYwek00NDggNDQ4TDU3NiAzMjBsLTEyOCAwIDAgMTI4ek05NiAxMjhhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0elwiXVxufTtcbmNvbnN0IGZhU2NyZXdkcml2ZXJXcmVuY2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc2NyZXdkcml2ZXItd3JlbmNoJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXCJ0b29sc1wiXSwgXCJmN2Q5XCIsIFwiTTc4LjYgNUM2OS4xLTIuNCA1NS42LTEuNSA0NyA3TDcgNDdjLTguNSA4LjUtOS40IDIyLTIuMSAzMS42bDgwIDEwNGM0LjUgNS45IDExLjYgOS40IDE5IDkuNGw1NC4xIDAgMTA5IDEwOWMtMTQuNyAyOS0xMCA2NS40IDE0LjMgODkuNmwxMTIgMTEyYzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDY0LTY0YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zbC0xMTItMTEyYy0yNC4yLTI0LjItNjAuNi0yOS04OS42LTE0LjNsLTEwOS0xMDkgMC01NC4xYzAtNy41LTMuNS0xNC41LTkuNC0xOUw3OC42IDV6TTE5LjkgMzk2LjFDNy4yIDQwOC44IDAgNDI2LjEgMCA0NDQuMUMwIDQ4MS42IDMwLjQgNTEyIDY3LjkgNTEyYzE4IDAgMzUuMy03LjIgNDgtMTkuOUwyMzMuNyAzNzQuM2MtNy44LTIwLjktOS00My42LTMuNi02NS4xbC02MS43LTYxLjdMMTkuOSAzOTYuMXpNNTEyIDE0NGMwLTEwLjUtMS4xLTIwLjctMy4yLTMwLjVjLTIuNC0xMS4yLTE2LjEtMTQuMS0yNC4yLTZsLTYzLjkgNjMuOWMtMyAzLTcuMSA0LjctMTEuMyA0LjdMMzUyIDE3NmMtOC44IDAtMTYtNy4yLTE2LTE2bDAtNTcuNGMwLTQuMiAxLjctOC4zIDQuNy0xMS4zbDYzLjktNjMuOWM4LjEtOC4xIDUuMi0yMS44LTYtMjQuMkMzODguNyAxLjEgMzc4LjUgMCAzNjggMEMyODguNSAwIDIyNCA2NC41IDIyNCAxNDRsMCAuOCA4NS4zIDg1LjNjMzYtOS4xIDc1LjggLjUgMTA0IDI4LjdMNDI5IDI3NC41YzQ5LTIzIDgzLTcyLjggODMtMTMwLjV6TTU2IDQzMmEyNCAyNCAwIDEgMSA0OCAwIDI0IDI0IDAgMSAxIC00OCAwelwiXVxufTtcbmNvbnN0IGZhVG9vbHMgPSBmYVNjcmV3ZHJpdmVyV3JlbmNoO1xuY29uc3QgZmFBcnJvd3NUb0V5ZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhcnJvd3MtdG8tZXllJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlNGJmXCIsIFwiTTE1IDE1QzI0LjQgNS43IDM5LjYgNS43IDQ5IDE1bDYzIDYzTDExMiA0MGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0bDAgOTZjMCAxMy4zLTEwLjcgMjQtMjQgMjRsLTk2IDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRsMzguMSAwTDE1IDQ5QzUuNyAzOS42IDUuNyAyNC40IDE1IDE1ek0xMzMuNSAyNDMuOUMxNTguNiAxOTMuNiAyMjIuNyAxMTIgMzIwIDExMnMxNjEuNCA4MS42IDE4Ni41IDEzMS45YzMuOCA3LjYgMy44IDE2LjUgMCAyNC4yQzQ4MS40IDMxOC40IDQxNy4zIDQwMCAzMjAgNDAwcy0xNjEuNC04MS42LTE4Ni41LTEzMS45Yy0zLjgtNy42LTMuOC0xNi41IDAtMjQuMnpNMzIwIDMyMGE2NCA2NCAwIDEgMCAwLTEyOCA2NCA2NCAwIDEgMCAwIDEyOHpNNTkxIDE1YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOWwtNjMgNjMgMzguMSAwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0bC05NiAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNGwwLTk2YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjRsMCAzOC4xIDYzLTYzek0xNSA0OTdjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45bDYzLTYzTDQwIDQwMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGw5NiAwYzEzLjMgMCAyNCAxMC43IDI0IDI0bDAgOTZjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRsMC0zOC4xTDQ5IDQ5N2MtOS40IDkuNC0yNC42IDkuNC0zMy45IDB6bTU3NiAwbC02My02MyAwIDM4LjFjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRsMC05NmMwLTEzLjMgMTAuNy0yNCAyNC0yNGw5NiAwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0bC0zOC4xIDAgNjMgNjNjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMHpcIl1cbn07XG5jb25zdCBmYVBsdWdDaXJjbGVCb2x0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BsdWctY2lyY2xlLWJvbHQnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImU1NWJcIiwgXCJNOTYgMEM3OC4zIDAgNjQgMTQuMyA2NCAzMmwwIDk2IDY0IDAgMC05NmMwLTE3LjctMTQuMy0zMi0zMi0zMnpNMjg4IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMybDAgOTYgNjQgMCAwLTk2YzAtMTcuNy0xNC4zLTMyLTMyLTMyek0zMiAxNjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsMCAzMmMwIDc3LjQgNTUgMTQyIDEyOCAxNTYuOGwwIDY3LjJjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTY3LjJjMTIuMy0yLjUgMjQuMS02LjQgMzUuMS0xMS41Yy0yLjEtMTAuOC0zLjEtMjEuOS0zLjEtMzMuM2MwLTgwLjMgNTMuOC0xNDggMTI3LjMtMTY5LjJjLjUtMi4yIC43LTQuNSAuNy02LjhjMC0xNy43LTE0LjMtMzItMzItMzJMMzIgMTYwek00MzIgNTEyYTE0NCAxNDQgMCAxIDAgMC0yODggMTQ0IDE0NCAwIDEgMCAwIDI4OHptNDcuOS0yMjVjNC4zIDMuNyA1LjQgOS45IDIuNiAxNC45TDQ1Mi40IDM1NmwzNS42IDBjNS4yIDAgOS44IDMuMyAxMS40IDguMnMtLjEgMTAuMy00LjIgMTMuNGwtOTYgNzJjLTQuNSAzLjQtMTAuOCAzLjItMTUuMS0uNnMtNS40LTkuOS0yLjYtMTQuOUw0MTEuNiAzODAgMzc2IDM4MGMtNS4yIDAtOS44LTMuMy0xMS40LTguMnMuMS0xMC4zIDQuMi0xMy40bDk2LTcyYzQuNS0zLjQgMTAuOC0zLjIgMTUuMSAuNnpcIl1cbn07XG5jb25zdCBmYUhlYXJ0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hlYXJ0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI4MTUzLCAxMjgxNTQsIDEyODE1NSwgMTI4MTU2LCAxMjg0MjAsIDEyOTI5MywgMTI5Mjk0LCAxMjk1MDUsIDk4MjksIDEwMDg0LCA2MTU3OF0sIFwiZjAwNFwiLCBcIk00Ny42IDMwMC40TDIyOC4zIDQ2OS4xYzcuNSA3IDE3LjQgMTAuOSAyNy43IDEwLjlzMjAuMi0zLjkgMjcuNy0xMC45TDQ2NC40IDMwMC40YzMwLjQtMjguMyA0Ny42LTY4IDQ3LjYtMTA5LjV2LTUuOGMwLTY5LjktNTAuNS0xMjkuNS0xMTkuNC0xNDFDMzQ3IDM2LjUgMzAwLjYgNTEuNCAyNjggODRMMjU2IDk2IDI0NCA4NGMtMzIuNi0zMi42LTc5LTQ3LjUtMTI0LjYtMzkuOUM1MC41IDU1LjYgMCAxMTUuMiAwIDE4NS4xdjUuOGMwIDQxLjUgMTcuMiA4MS4yIDQ3LjYgMTA5LjV6XCJdXG59O1xuY29uc3QgZmFNYXJzQW5kVmVudXMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbWFycy1hbmQtdmVudXMnLFxuICBpY29uOiBbNTEyLCA1MTIsIFs5ODkzXSwgXCJmMjI0XCIsIFwiTTMzNy44IDE0LjhDMzQxLjUgNS44IDM1MC4zIDAgMzYwIDBMNDcyIDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRsMCAxMTJjMCA5LjctNS44IDE4LjUtMTQuOCAyMi4ycy0xOS4zIDEuNy0yNi4yLTUuMmwtMzktMzktMjQuNyAyNC43QzQwNyAxNjMuMyA0MTYgMTkyLjYgNDE2IDIyNGMwIDgwLjItNTkgMTQ2LjYtMTM2IDE1OC4ybDAgMjUuOCAyNCAwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0bC0yNCAwIDAgMzJjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRsMC0zMi0yNCAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0bDI0IDAgMC0yNS44QzE1NSAzNzAuNiA5NiAzMDQuMiA5NiAyMjRjMC04OC40IDcxLjYtMTYwIDE2MC0xNjBjMzkuNiAwIDc1LjkgMTQuNCAxMDMuOCAzOC4yTDM4Mi4xIDgwIDM0MyA0MWMtNi45LTYuOS04LjktMTcuMi01LjItMjYuMnpNNDQ4IDQ4czAgMCAwIDBzMCAwIDAgMHMwIDAgMCAwek0zNTIgMjI0YTk2IDk2IDAgMSAwIC0xOTIgMCA5NiA5NiAwIDEgMCAxOTIgMHpcIl1cbn07XG5jb25zdCBmYUhvdXNlVXNlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdob3VzZS11c2VyJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXCJob21lLXVzZXJcIl0sIFwiZTFiMFwiLCBcIk01NzUuOCAyNTUuNWMwIDE4LTE1IDMyLjEtMzIgMzIuMWwtMzIgMCAuNyAxNjAuMmMuMiAzNS41LTI4LjUgNjQuMy02NCA2NC4zbC0zMjAuNCAwYy0zNS4zIDAtNjQtMjguNy02NC02NGwwLTE2MC40LTMyIDBjLTE4IDAtMzItMTQtMzItMzIuMWMwLTkgMy0xNyAxMC0yNEwyNjYuNCA4YzctNyAxNS04IDIyLThzMTUgMiAyMSA3TDU2NC44IDIzMS41YzggNyAxMiAxNSAxMSAyNHpNMzUyIDIyNGE2NCA2NCAwIDEgMCAtMTI4IDAgNjQgNjQgMCAxIDAgMTI4IDB6bS05NiA5NmMtNDQuMiAwLTgwIDM1LjgtODAgODBjMCA4LjggNy4yIDE2IDE2IDE2bDE5MiAwYzguOCAwIDE2LTcuMiAxNi0xNmMwLTQ0LjItMzUuOC04MC04MC04MGwtNjQgMHpcIl1cbn07XG5jb25zdCBmYUhvbWVVc2VyID0gZmFIb3VzZVVzZXI7XG5jb25zdCBmYUR1bXBzdGVyRmlyZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdkdW1wc3Rlci1maXJlJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNzk0XCIsIFwiTTQ5LjcgMzJsOTAuOCAwTDExNC45IDE2MGwtOTQgMEM5LjMgMTYwIDAgMTUwLjcgMCAxMzkuMWMwLTIuMSAuMy00LjEgLjktNi4xTDI2LjggNDguOUMyOS45IDM4LjkgMzkuMiAzMiA0OS43IDMyek0yNzIgMTYwbC0xMjQuNSAwTDE3My4xIDMyIDI3MiAzMmwwIDEyOHptMzIgMGwwLTEyOCA5OC45IDAgMTQuNCA3Mi4xYy0xLjcgMS4xLTMuMyAyLjQtNC44IDMuOGMtMTguNCAxNi40LTM1LjQgMzQtNTAuNSA1Mi4xbC01OCAwem0yMDkuOS0yMy43Yy0xLjcgMS42LTMuNCAzLjItNSA0LjhDNDk4IDEyOS42IDQ4Ni43IDExOC42IDQ3NSAxMDhjLTcuNi02LjktMTctMTAuOC0yNi42LTExLjhMNDM1LjUgMzJsOTAuOCAwYzEwLjUgMCAxOS44IDYuOSAyMi45IDE2LjlMNTc1LjEgMTMzYy4yIC43IC40IDEuNCAuNSAyLjFjLTE3LjgtMTUtNDQuMy0xNC42LTYxLjcgMS4yek0zMjUuMiAyMTAuN0MzMDQuMyAyNDQuNSAyODggMjgyLjkgMjg4IDMxOC4xYzAgNDkuMyAxOC42IDk1LjIgNDkuNiAxMjkuOUwxMjggNDQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyTDQ0IDI4OGwtMTIgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmw0IDAtNC0zMiAzMDUuNSAwYy00LjQgNi4yLTguNSAxMi41LTEyLjMgMTguN3ptMTgwLjYtMzQuNUw1MTggMTYyLjVjNS40LTYuMSAxMy4zLTguOCAyMC45LTguOWM3LjIgMCAxNC4zIDIuNiAxOS45IDcuOGMxOS43IDE4LjMgMzkuOCA0My4yIDU1IDcwLjZDNjI5IDI1OS4yIDY0MCAyOTAuMiA2NDAgMzIwLjJDNjQwIDQwOC44IDU2OC43IDQ4MCA0ODAgNDgwYy04OS42IDAtMTYwLTcxLjMtMTYwLTE1OS44YzAtMzcuMyAxNi03My40IDM2LjgtMTA0LjVjMjAuOS0zMS4zIDQ3LjUtNTkgNzAuOS04MC4yYzUuNy01LjIgMTMuMS03LjcgMjAuMy03LjVjMTQuMSAuMyAyMy44IDExLjQgMzIuNyAyMS42YzAgMCAwIDAgMCAwYzIgMi4zIDQgNC42IDYgNi43bDE5IDE5Ljl6TTU0NCAzNjguMmMwLTM2LjUtMzctNzMtNTQuOC04OC40Yy01LjQtNC43LTEzLjEtNC43LTE4LjUgMEM0NTMgMjk1LjEgNDE2IDMzMS42IDQxNiAzNjguMmMwIDM1LjMgMjguNyA2NCA2NCA2NHM2NC0yOC43IDY0LTY0elwiXVxufTtcbmNvbnN0IGZhSG91c2VDcmFjayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdob3VzZS1jcmFjaycsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZTNiMVwiLCBcIk01NDMuOCAyODcuNmMxNyAwIDMyLTE0IDMyLTMyLjFjMS05LTMtMTctMTEtMjRMMzA5LjUgN2MtNi01LTE0LTctMjEtN3MtMTUgMS0yMiA4TDEwIDIzMS41Yy03IDctMTAgMTUtMTAgMjRjMCAxOCAxNCAzMi4xIDMyIDMyLjFsMzIgMCAwIDE2MC40YzAgMzUuMyAyOC43IDY0IDY0IDY0bDEwMi4zIDAtMzEuMy01Mi4yYy00LjEtNi44LTIuNi0xNS41IDMuNS0yMC41TDI4OCAzNjhsLTYwLjItODIuOGMtMTAuOS0xNSA4LjItMzMuNSAyMi44LTIybDExNy45IDkyLjZjOCA2LjMgOC4yIDE4LjQgLjQgMjQuOUwyODggNDQ4bDM4LjQgNjQgMTIyLjEgMGMzNS41IDAgNjQuMi0yOC44IDY0LTY0LjNsLS43LTE2MC4yIDMyIDB6XCJdXG59O1xuY29uc3QgZmFNYXJ0aW5pR2xhc3NDaXRydXMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbWFydGluaS1nbGFzcy1jaXRydXMnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtcImNvY2t0YWlsXCJdLCBcImY1NjFcIiwgXCJNNDMyIDI0MGM1MyAwIDk2LTQzIDk2LTk2cy00My05Ni05Ni05NmMtMzUuNSAwLTY2LjYgMTkuMy04My4yIDQ4bC01Mi42IDBDMzE2IDQwLjEgMzY5LjMgMCA0MzIgMGM3OS41IDAgMTQ0IDY0LjUgMTQ0IDE0NHMtNjQuNSAxNDQtMTQ0IDE0NGMtMjcuNyAwLTUzLjUtNy44LTc1LjUtMjEuM2wzNS40LTM1LjRjMTIuMiA1LjYgMjUuOCA4LjcgNDAuMSA4Ljd6TTEuOCAxNDIuOEM1LjUgMTMzLjggMTQuMyAxMjggMjQgMTI4bDM2OCAwYzkuNyAwIDE4LjUgNS44IDIyLjIgMTQuOHMxLjcgMTkuMy01LjIgMjYuMmwtMTc3IDE3N0wyMzIgNDY0bDY0IDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRsLTg4IDAtODggMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGw2NCAwIDAtMTE4LjFMNyAxNjljLTYuOS02LjktOC45LTE3LjItNS4yLTI2LjJ6XCJdXG59O1xuY29uc3QgZmFDb2NrdGFpbCA9IGZhTWFydGluaUdsYXNzQ2l0cnVzO1xuY29uc3QgZmFGYWNlU3VycHJpc2UgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmFjZS1zdXJwcmlzZScsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyODU1OCwgXCJzdXJwcmlzZVwiXSwgXCJmNWMyXCIsIFwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0xNzYuNCAxNzZhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0em0xMjggMzJhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHpNMjU2IDI4OGE2NCA2NCAwIDEgMSAwIDEyOCA2NCA2NCAwIDEgMSAwLTEyOHpcIl1cbn07XG5jb25zdCBmYVN1cnByaXNlID0gZmFGYWNlU3VycHJpc2U7XG5jb25zdCBmYUJvdHRsZVdhdGVyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JvdHRsZS13YXRlcicsXG4gIGljb246IFszMjAsIDUxMiwgW10sIFwiZTRjNVwiLCBcIk0xMjAgMGw4MCAwYzEzLjMgMCAyNCAxMC43IDI0IDI0bDAgNDBMOTYgNjRsMC00MGMwLTEzLjMgMTAuNy0yNCAyNC0yNHpNMzIgMTY3LjVjMC0xOS41IDEwLTM3LjYgMjYuNi00Ny45bDE1LjgtOS45Qzg4LjcgMTAwLjcgMTA1LjIgOTYgMTIyLjEgOTZsNzUuOCAwYzE2LjkgMCAzMy40IDQuNyA0Ny43IDEzLjdsMTUuOCA5LjlDMjc4IDEyOS45IDI4OCAxNDggMjg4IDE2Ny41YzAgMTctNy41IDMyLjMtMTkuNCA0Mi42QzI4MC42IDIyMS43IDI4OCAyMzggMjg4IDI1NmMwIDE5LjEtOC40IDM2LjMtMjEuNyA0OGMxMy4zIDExLjcgMjEuNyAyOC45IDIxLjcgNDhzLTguNCAzNi4zLTIxLjcgNDhjMTMuMyAxMS43IDIxLjcgMjguOSAyMS43IDQ4YzAgMzUuMy0yOC43IDY0LTY0IDY0TDk2IDUxMmMtMzUuMyAwLTY0LTI4LjctNjQtNjRjMC0xOS4xIDguNC0zNi4zIDIxLjctNDhDNDAuNCAzODguMyAzMiAzNzEuMSAzMiAzNTJzOC40LTM2LjMgMjEuNy00OEM0MC40IDI5Mi4zIDMyIDI3NS4xIDMyIDI1NmMwLTE4IDcuNC0zNC4zIDE5LjQtNDUuOUMzOS41IDE5OS43IDMyIDE4NC41IDMyIDE2Ny41ek05NiAyNDBjMCA4LjggNy4yIDE2IDE2IDE2bDk2IDBjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZsLTk2IDBjLTguOCAwLTE2IDcuMi0xNiAxNnptMTYgMTEyYy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2bDk2IDBjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZsLTk2IDB6XCJdXG59O1xuY29uc3QgZmFDaXJjbGVQYXVzZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaXJjbGUtcGF1c2UnLFxuICBpY29uOiBbNTEyLCA1MTIsIFs2MjA5MiwgXCJwYXVzZS1jaXJjbGVcIl0sIFwiZjI4YlwiLCBcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMjI0IDE5MmwwIDEyOGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTEyOGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyem0xMjggMGwwIDEyOGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTEyOGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyelwiXVxufTtcbmNvbnN0IGZhUGF1c2VDaXJjbGUgPSBmYUNpcmNsZVBhdXNlO1xuY29uc3QgZmFUb2lsZXRQYXBlclNsYXNoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RvaWxldC1wYXBlci1zbGFzaCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTA3MlwiLCBcIk0zOC44IDUuMUMyOC40LTMuMSAxMy4zLTEuMiA1LjEgOS4yUy0xLjIgMzQuNyA5LjIgNDIuOWw1OTIgNDY0YzEwLjQgOC4yIDI1LjUgNi4zIDMzLjctNC4xczYuMy0yNS41LTQuMS0zMy43bC0xMDkuNy04NkM1NjkuOSAzNzQgNjA4IDI5MS45IDYwOCAxOTJDNjA4IDg2IDU2NSAwIDUxMiAwcy05NiA4Ni05NiAxOTJjMCA0OS4xIDkuMiA5My45IDI0LjQgMTI3LjlsLTU5LTQ2LjJjMS42LTI0LjggMi42LTUyIDIuNi04MS42YzAtNjUuNSAxMy4yLTE0Mi40IDYwLjItMTkyTDE2MCAwYy0yNC44IDAtNDcuNCAxOC44LTY0LjQgNDkuNkwzOC44IDUuMXpNMzY3LjMgMzg1LjRMNjYuNSAxNDguNEM2NC45IDE2Mi40IDY0IDE3NyA2NCAxOTJjMCAxMDEuNS0xMS43IDE3MC44LTIzIDIxMy45Yy01LjEgMTkuNC0xMC43IDM5LjktMjAuNSA1Ny43Yy01LjkgOS45LTYuMSAyMi4xLS40IDMyLjJTMzYuNSA1MTIgNDggNTEybDIzNy45IDBjMjIuMyAwIDQ1LjQtMTIuMSA1NS40LTM2LjFjNy40LTE3LjcgMTcuNS00Ny4yIDI2LTkwLjZ6TTU0NCAxOTJjMCAzNS4zLTE0LjMgNjQtMzIgNjRzLTMyLTI4LjctMzItNjRzMTQuMy02NCAzMi02NHMzMiAyOC43IDMyIDY0elwiXVxufTtcbmNvbnN0IGZhQXBwbGVXaG9sZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhcHBsZS13aG9sZScsXG4gIGljb246IFs0NDgsIDUxMiwgWzEyNzgyMiwgMTI3ODIzLCBcImFwcGxlLWFsdFwiXSwgXCJmNWQxXCIsIFwiTTIyNCAxMTJjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTE2YzAtNDQuMiAzNS44LTgwIDgwLTgwbDE2IDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgMTZjMCA0NC4yLTM1LjggODAtODAgODBsLTE2IDB6TTAgMjg4YzAtNzYuMyAzNS43LTE2MCAxMTItMTYwYzI3LjMgMCA1OS43IDEwLjMgODIuNyAxOS4zYzE4LjggNy4zIDM5LjkgNy4zIDU4LjcgMGMyMi45LTguOSA1NS40LTE5LjMgODIuNy0xOS4zYzc2LjMgMCAxMTIgODMuNyAxMTIgMTYwYzAgMTI4LTgwIDIyNC0xNjAgMjI0Yy0xNi41IDAtMzguMS02LjYtNTEuNS0xMS4zYy04LjEtMi44LTE2LjktMi44LTI1IDBjLTEzLjQgNC43LTM1IDExLjMtNTEuNSAxMS4zQzgwIDUxMiAwIDQxNiAwIDI4OHpcIl1cbn07XG5jb25zdCBmYUFwcGxlQWx0ID0gZmFBcHBsZVdob2xlO1xuY29uc3QgZmFLaXRjaGVuU2V0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2tpdGNoZW4tc2V0JyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJlNTFhXCIsIFwiTTI0MCAxNDRBOTYgOTYgMCAxIDAgNDggMTQ0YTk2IDk2IDAgMSAwIDE5MiAwem00NC40IDMyQzI2OS45IDI0MC4xIDIxMi41IDI4OCAxNDQgMjg4QzY0LjUgMjg4IDAgMjIzLjUgMCAxNDRTNjQuNSAwIDE0NCAwYzY4LjUgMCAxMjUuOSA0Ny45IDE0MC40IDExMmw3MS44IDBjOC44LTkuOCAyMS42LTE2IDM1LjgtMTZsMTA0IDBjMjYuNSAwIDQ4IDIxLjUgNDggNDhzLTIxLjUgNDgtNDggNDhsLTEwNCAwYy0xNC4yIDAtMjctNi4yLTM1LjgtMTZsLTcxLjggMHpNMTQ0IDgwYTY0IDY0IDAgMSAxIDAgMTI4IDY0IDY0IDAgMSAxIDAtMTI4ek00MDAgMjQwYzEzLjMgMCAyNCAxMC43IDI0IDI0bDAgOCA5NiAwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0bC0yNDAgMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGw5NiAwIDAtOGMwLTEzLjMgMTAuNy0yNCAyNC0yNHpNMjg4IDQ2NGwwLTExMiAyMjQgMCAwIDExMmMwIDI2LjUtMjEuNSA0OC00OCA0OGwtMTI4IDBjLTI2LjUgMC00OC0yMS41LTQ4LTQ4ek00OCAzMjBsODAgMCAxNiAwIDMyIDBjMjYuNSAwIDQ4IDIxLjUgNDggNDhzLTIxLjUgNDgtNDggNDhsLTE2IDBjMCAxNy43LTE0LjMgMzItMzIgMzJsLTY0IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtODBjMC04LjggNy4yLTE2IDE2LTE2em0xMjggNjRjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZsLTE2IDAgMCAzMiAxNiAwek0yNCA0NjRsMTc2IDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRMMjQgNTEyYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0elwiXVxufTtcbmNvbnN0IGZhUiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdyJyxcbiAgaWNvbjogWzMyMCwgNTEyLCBbMTE0XSwgXCI1MlwiLCBcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2TDAgMjg4IDAgNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0xMjggOTUuMyAwTDI2MS44IDQ2Ni40YzEwLjEgMTQuNSAzMC4xIDE4IDQ0LjYgNy45czE4LTMwLjEgNy45LTQ0LjZMMjMwLjEgMzA5LjVDMjgyLjggMjg4LjEgMzIwIDIzNi40IDMyMCAxNzZjMC03OS41LTY0LjUtMTQ0LTE0NC0xNDRMNjQgMzJ6TTE3NiAyNTZMNjQgMjU2IDY0IDk2bDExMiAwYzQ0LjIgMCA4MCAzNS44IDgwIDgwcy0zNS44IDgwLTgwIDgwelwiXVxufTtcbmNvbnN0IGZhVGVtcGVyYXR1cmVRdWFydGVyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RlbXBlcmF0dXJlLXF1YXJ0ZXInLFxuICBpY29uOiBbMzIwLCA1MTIsIFtcInRlbXBlcmF0dXJlLTFcIiwgXCJ0aGVybW9tZXRlci0xXCIsIFwidGhlcm1vbWV0ZXItcXVhcnRlclwiXSwgXCJmMmNhXCIsIFwiTTE2MCA2NGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhsMCAxNjQuNWMwIDE3LjMtNy4xIDMxLjktMTUuMyA0Mi41Qzg2LjIgMzMyLjYgODAgMzQ5LjUgODAgMzY4YzAgNDQuMiAzNS44IDgwIDgwIDgwczgwLTM1LjggODAtODBjMC0xOC41LTYuMi0zNS40LTE2LjctNDguOWMtOC4yLTEwLjYtMTUuMy0yNS4yLTE1LjMtNDIuNUwyMDggMTEyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek00OCAxMTJDNDggNTAuMiA5OC4xIDAgMTYwIDBzMTEyIDUwLjEgMTEyIDExMmwwIDE2NC40YzAgLjEgLjEgLjMgLjIgLjZjLjIgLjYgLjggMS42IDEuNyAyLjhjMTguOSAyNC40IDMwLjEgNTUgMzAuMSA4OC4xYzAgNzkuNS02NC41IDE0NC0xNDQgMTQ0UzE2IDQ0Ny41IDE2IDM2OGMwLTMzLjIgMTEuMi02My44IDMwLjEtODguMWMuOS0xLjIgMS41LTIuMiAxLjctMi44Yy4xLS4zIC4yLS41IC4yLS42TDQ4IDExMnpNMjA4IDM2OGMwIDI2LjUtMjEuNSA0OC00OCA0OHMtNDgtMjEuNS00OC00OGMwLTIwLjkgMTMuNC0zOC43IDMyLTQ1LjNsMC01MC43YzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZsMCA1MC43YzE4LjYgNi42IDMyIDI0LjQgMzIgNDUuM3pcIl1cbn07XG5jb25zdCBmYVRlbXBlcmF0dXJlMSA9IGZhVGVtcGVyYXR1cmVRdWFydGVyO1xuY29uc3QgZmFUaGVybW9tZXRlcjEgPSBmYVRlbXBlcmF0dXJlUXVhcnRlcjtcbmNvbnN0IGZhVGhlcm1vbWV0ZXJRdWFydGVyID0gZmFUZW1wZXJhdHVyZVF1YXJ0ZXI7XG5jb25zdCBmYUN1YmUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY3ViZScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjFiMlwiLCBcIk0yMzQuNSA1LjdjMTMuOS01IDI5LjEtNSA0My4xIDBsMTkyIDY4LjZDNDk1IDgzLjQgNTEyIDEwNy41IDUxMiAxMzQuNmwwIDI0Mi45YzAgMjctMTcgNTEuMi00Mi41IDYwLjNsLTE5MiA2OC42Yy0xMy45IDUtMjkuMSA1LTQzLjEgMGwtMTkyLTY4LjZDMTcgNDI4LjYgMCA0MDQuNSAwIDM3Ny40TDAgMTM0LjZjMC0yNyAxNy01MS4yIDQyLjUtNjAuM2wxOTItNjguNnpNMjU2IDY2TDgyLjMgMTI4IDI1NiAxOTBsMTczLjctNjJMMjU2IDY2em0zMiAzNjguNmwxNjAtNTcuMSAwLTE4OEwyODggMjQ2LjZsMCAxODh6XCJdXG59O1xuY29uc3QgZmFCaXRjb2luU2lnbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdiaXRjb2luLXNpZ24nLFxuICBpY29uOiBbMzIwLCA1MTIsIFtdLCBcImUwYjRcIiwgXCJNNDggMzJDNDggMTQuMyA2Mi4zIDAgODAgMHMzMiAxNC4zIDMyIDMybDAgMzIgMzIgMCAwLTMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJsMCAzMmMwIDEuNS0uMSAzLjEtLjMgNC41QzI1NC4xIDgyLjIgMjg4IDEyNS4xIDI4OCAxNzZjMCAyNC4yLTcuNyA0Ni42LTIwLjcgNjQuOWMzMS43IDE5LjggNTIuNyA1NSA1Mi43IDk1LjFjMCA2MS45LTUwLjEgMTEyLTExMiAxMTJsMCAzMmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTMyLTMyIDAgMCAzMmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTMyLTYuMyAwQzE4LjcgNDQ4IDAgNDI5LjMgMCA0MDYuM0wwIDI4OGwwLTIyLjNMMCAyMjQgMCAxMDEuNkMwIDgwLjggMTYuOCA2NCAzNy42IDY0TDQ4IDY0bDAtMzJ6TTY0IDIyNGwxMTIgMGMyNi41IDAgNDgtMjEuNSA0OC00OHMtMjEuNS00OC00OC00OEw2NCAxMjhsMCA5NnptMTEyIDY0TDY0IDI4OGwwIDk2IDE0NCAwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4cy0yMS41LTQ4LTQ4LTQ4bC0zMiAwelwiXVxufTtcbmNvbnN0IGZhU2hpZWxkRG9nID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NoaWVsZC1kb2cnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImU1NzNcIiwgXCJNMjY5LjQgMi45QzI2NS4yIDEgMjYwLjcgMCAyNTYgMHMtOS4yIDEtMTMuNCAyLjlMNTQuMyA4Mi44Yy0yMiA5LjMtMzguNCAzMS0zOC4zIDU3LjJjLjUgOTkuMiA0MS4zIDI4MC43IDIxMy42IDM2My4yYzE2LjcgOCAzNi4xIDggNTIuOCAwQzQ1NC43IDQyMC43IDQ5NS41IDIzOS4yIDQ5NiAxNDBjLjEtMjYuMi0xNi4zLTQ3LjktMzguMy01Ny4yTDI2OS40IDIuOXpNMTYwLjkgMjg2LjJjNC44IDEuMiA5LjkgMS44IDE1LjEgMS44YzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtNjQgNDQuMiAwYzEyLjEgMCAyMy4yIDYuOCAyOC42IDE3LjdMMzIwIDE5Mmw2NCAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDMyYzAgNDQuMi0zNS44IDgwLTgwIDgwbC00OCAwIDAgNTAuN2MwIDcuMy01LjkgMTMuMy0xMy4zIDEzLjNjLTEuOCAwLTMuNi0uNC01LjItMS4xbC05OC43LTQyLjNjLTYuNi0yLjgtMTAuOC05LjMtMTAuOC0xNi40YzAtMi44IC42LTUuNSAxLjktOGwxNS0zMHpNMTYwIDE2MGw0MCAwIDggMCAwIDMyIDAgMzJjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC00OGMwLTguOCA3LjItMTYgMTYtMTZ6bTEyOCA0OGExNiAxNiAwIDEgMCAtMzIgMCAxNiAxNiAwIDEgMCAzMiAwelwiXVxufTtcbmNvbnN0IGZhU29sYXJQYW5lbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzb2xhci1wYW5lbCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjViYVwiLCBcIk0xMjIuMiAwQzkxLjcgMCA2NS41IDIxLjUgNTkuNSA1MS40TDguMyAzMDcuNEMuNCAzNDcgMzAuNiAzODQgNzEgMzg0bDIxNyAwIDAgNjQtNjQgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwxOTIgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtNjQgMCAwLTY0IDIxNyAwYzQwLjQgMCA3MC43LTM2LjkgNjIuOC03Ni42bC01MS4yLTI1NkM1NzQuNSAyMS41IDU0OC4zIDAgNTE3LjggMEwxMjIuMiAwek0yNjAuOSA2NGwxMTguMiAwIDEwLjQgMTA0LTEzOSAwTDI2MC45IDY0ek0yMDIuMyAxNjhsLTEwMC44IDBMMTIyLjIgNjRsOTAuNCAwTDIwMi4zIDE2OHpNOTEuOCAyMTZsMTA1LjYgMEwxODcuMSAzMjAgNzEgMzIwIDkxLjggMjE2em0xNTMuOSAwbDE0OC42IDAgMTAuNCAxMDQtMTY5LjQgMCAxMC40LTEwNHptMTk2LjggMGwxMDUuNiAwTDU2OSAzMjBsLTExNiAwTDQ0Mi41IDIxNnptOTYtNDhsLTEwMC44IDBMNDI3LjMgNjRsOTAuNCAwIDMxLjQtNi4zTDUxNy44IDY0bDIwLjggMTA0elwiXVxufTtcbmNvbnN0IGZhTG9ja09wZW4gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbG9jay1vcGVuJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmM2MxXCIsIFwiTTM1MiAxNDRjMC00NC4yIDM1LjgtODAgODAtODBzODAgMzUuOCA4MCA4MGwwIDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC00OEM1NzYgNjQuNSA1MTEuNSAwIDQzMiAwUzI4OCA2NC41IDI4OCAxNDRsMCA0OEw2NCAxOTJjLTM1LjMgMC02NCAyOC43LTY0IDY0TDAgNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0bDMyMCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMTkyYzAtMzUuMy0yOC43LTY0LTY0LTY0bC0zMiAwIDAtNDh6XCJdXG59O1xuY29uc3QgZmFFbGV2YXRvciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdlbGV2YXRvcicsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZTE2ZFwiLCBcIk0xMzIuNyA0LjdsLTY0IDY0Yy00LjYgNC42LTUuOSAxMS41LTMuNSAxNy40czguMyA5LjkgMTQuOCA5LjlsMTI4IDBjNi41IDAgMTIuMy0zLjkgMTQuOC05LjlzMS4xLTEyLjktMy41LTE3LjRsLTY0LTY0Yy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMHpNNjQgMTI4Yy0zNS4zIDAtNjQgMjguNy02NCA2NEwwIDQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NGwzODQgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTI1NmMwLTM1LjMtMjguNy02NC02NC02NEw2NCAxMjh6bTk2IDk2YTQ4IDQ4IDAgMSAxIDAgOTYgNDggNDggMCAxIDEgMC05NnpNODAgNDAwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4bDY0IDBjMjYuNSAwIDQ4IDIxLjUgNDggNDhsMCAxNmMwIDE3LjctMTQuMyAzMi0zMiAzMmwtOTYgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC0xNnptMTkyIDBjMC0yNi41IDIxLjUtNDggNDgtNDhsNjQgMGMyNi41IDAgNDggMjEuNSA0OCA0OGwwIDE2YzAgMTcuNy0xNC4zIDMyLTMyIDMybC05NiAwYy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTE2em0zMi0xMjhhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHpNMzU2LjcgOTEuM2M2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMGw2NC02NGM0LjYtNC42IDUuOS0xMS41IDMuNS0xNy40UzQzOC41IDAgNDMyIDBMMzA0IDBjLTYuNSAwLTEyLjMgMy45LTE0LjggOS45cy0xLjEgMTIuOSAzLjUgMTcuNGw2NCA2NHpcIl1cbn07XG5jb25zdCBmYU1vbmV5QmlsbFRyYW5zZmVyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21vbmV5LWJpbGwtdHJhbnNmZXInLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU1MjhcIiwgXCJNNTM1IDQxYy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXMyNC42LTkuNCAzMy45IDBsNjQgNjRjNC41IDQuNSA3IDEwLjYgNyAxN3MtMi41IDEyLjUtNyAxN2wtNjQgNjRjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlsMjMtMjNMMzg0IDExMmMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGwxNzQuMSAwTDUzNSA0MXpNMTA1IDM3N2wtMjMgMjNMMjU2IDQwMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEw4MS45IDQ0OGwyMyAyM2M5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwTDcgNDQxYy00LjUtNC41LTctMTAuNi03LTE3czIuNS0xMi41IDctMTdsNjQtNjRjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45ek05NiA2NGwyNDEuOSAwYy0zLjcgNy4yLTUuOSAxNS4zLTUuOSAyNGMwIDI4LjcgMjMuMyA1MiA1MiA1MmwxMTcuNCAwYy00IDE3IC42IDM1LjUgMTMuOCA0OC44YzIwLjMgMjAuMyA1My4yIDIwLjMgNzMuNSAwTDYwOCAxNjkuNSA2MDggMzg0YzAgMzUuMy0yOC43IDY0LTY0IDY0bC0yNDEuOSAwYzMuNy03LjIgNS45LTE1LjMgNS45LTI0YzAtMjguNy0yMy4zLTUyLTUyLTUybC0xMTcuNCAwYzQtMTctLjYtMzUuNS0xMy44LTQ4LjhjLTIwLjMtMjAuMy01My4yLTIwLjMtNzMuNSAwTDMyIDM0Mi41IDMyIDEyOGMwLTM1LjMgMjguNy02NCA2NC02NHptNjQgNjRsLTY0IDAgMCA2NGMzNS4zIDAgNjQtMjguNyA2NC02NHpNNTQ0IDMyMGMtMzUuMyAwLTY0IDI4LjctNjQgNjRsNjQgMCAwLTY0ek0zMjAgMzUyYTk2IDk2IDAgMSAwIDAtMTkyIDk2IDk2IDAgMSAwIDAgMTkyelwiXVxufTtcbmNvbnN0IGZhTW9uZXlCaWxsVHJlbmRVcCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtb25leS1iaWxsLXRyZW5kLXVwJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJlNTI5XCIsIFwiTTQ3MC43IDkuNGMzIDMuMSA1LjMgNi42IDYuOSAxMC4zczIuNCA3LjggMi40IDEyLjJjMCAwIDAgLjEgMCAuMWMwIDAgMCAwIDAgMGwwIDk2YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtMTguN0wzMTAuNiAyMTQuNmMtMTEuOCAxMS44LTMwLjggMTIuNi00My41IDEuN0wxNzYgMTM4LjEgODQuOCAyMTYuM2MtMTMuNCAxMS41LTMzLjYgOS45LTQ1LjEtMy41cy05LjktMzMuNiAzLjUtNDUuMWwxMTItOTZjMTItMTAuMyAyOS43LTEwLjMgNDEuNyAwbDg5LjUgNzYuN0wzNzAuNyA2NCAzNTIgNjRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJsOTYgMHMwIDAgMCAwYzguOCAwIDE2LjggMy42IDIyLjYgOS4zbC4xIC4xek0wIDMwNGMwLTI2LjUgMjEuNS00OCA0OC00OGw0MTYgMGMyNi41IDAgNDggMjEuNSA0OCA0OGwwIDE2MGMwIDI2LjUtMjEuNSA0OC00OCA0OEw0OCA1MTJjLTI2LjUgMC00OC0yMS41LTQ4LTQ4TDAgMzA0ek00OCA0MTZsMCA0OCA0OCAwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek05NiAzMDRsLTQ4IDAgMCA0OGMyNi41IDAgNDgtMjEuNSA0OC00OHpNNDY0IDQxNmMtMjYuNSAwLTQ4IDIxLjUtNDggNDhsNDggMCAwLTQ4ek00MTYgMzA0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4bDAtNDgtNDggMHptLTk2IDgwYTY0IDY0IDAgMSAwIC0xMjggMCA2NCA2NCAwIDEgMCAxMjggMHpcIl1cbn07XG5jb25zdCBmYUhvdXNlRmxvb2RXYXRlckNpcmNsZUFycm93UmlnaHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaG91c2UtZmxvb2Qtd2F0ZXItY2lyY2xlLWFycm93LXJpZ2h0JyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlNTBmXCIsIFwiTTI4OCAxNDRBMTQ0IDE0NCAwIDEgMCAwIDE0NGExNDQgMTQ0IDAgMSAwIDI4OCAwek0xNDAuNyA3Ni43YzYuMi02LjIgMTYuNC02LjIgMjIuNiAwbDU2IDU2YzYuMiA2LjIgNi4yIDE2LjQgMCAyMi42bC01NiA1NmMtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBzLTYuMi0xNi40IDAtMjIuNkwxNjkuNCAxNjAgODAgMTYwYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2bDg5LjQgMEwxNDAuNyA5OS4zYy02LjItNi4yLTYuMi0xNi40IDAtMjIuNnpNMzIwIDE0NGMwIDU3LjMtMjcuNCAxMDguMi02OS44IDE0MC4zYzExLjgtMy42IDIzLTkuNCAzMy0xNi4yYzIyLjEtMTUuNSA1MS42LTE1LjUgNzMuNyAwYzE4LjQgMTIuNyAzOS42IDIwLjMgNTkuMiAyMC4zYzE5IDAgNDEuMi03LjkgNTkuMi0yMC4zYzIzLjgtMTYuNyA1NS44LTE1LjQgNzguMSAzLjRjMi4xIDEuNyA0LjIgMy4zIDYuNSA0LjlsLS4zLTg0LjQgMTYuNiAwYzEzLjkgMCAyNi4xLTguOSAzMC40LTIyLjFzLS40LTI3LjYtMTEuNi0zNS44bC0xNzYtMTI4QzQwNy42LTIgMzkyLjQtMiAzODEuMiA2LjFMMzAxIDY0LjRjMTIuMSAyMy45IDE5IDUwLjkgMTkgNzkuNnptMTguNSAxNjUuOWMtMTEuMS03LjktMjUuOS03LjktMzcgMEMyNzkgMzI1LjQgMjUxLjUgMzM2IDIyNCAzMzZjLTI2LjkgMC01NS4zLTEwLjgtNzcuNC0yNi4xYzAgMCAwIDAgMCAwYy0xMS45LTguNS0yOC4xLTcuOC0zOS4yIDEuN2MtMTQuNCAxMS45LTMyLjUgMjEtNTAuNiAyNS4yYy0xNy4yIDQtMjcuOSAyMS4yLTIzLjkgMzguNHMyMS4yIDI3LjkgMzguNCAyMy45YzI0LjUtNS43IDQ0LjktMTYuNSA1OC4yLTI1QzE1OC41IDM4OS43IDE5MSA0MDAgMjI0IDQwMGMzMS45IDAgNjAuNi05LjkgODAuNC0xOC45YzUuOC0yLjcgMTEuMS01LjMgMTUuNi03LjdjNC41IDIuNCA5LjcgNS4xIDE1LjYgNy43YzE5LjggOSA0OC42IDE4LjkgODAuNCAxOC45YzMzIDAgNjUuNS0xMC4zIDk0LjUtMjUuOGMxMy40IDguNCAzMy43IDE5LjMgNTguMiAyNWMxNy4yIDQgMzQuNC02LjcgMzguNC0yMy45cy02LjctMzQuNC0yMy45LTM4LjRjLTE4LjEtNC4yLTM2LjItMTMuMy01MC42LTI1LjJjLTExLjEtOS41LTI3LjMtMTAuMS0zOS4yLTEuN2MwIDAgMCAwIDAgMEM0NzEuNCAzMjUuMiA0NDIuOSAzMzYgNDE2IDMzNmMtMjcuNSAwLTU1LTEwLjYtNzcuNS0yNi4xem0wIDExMmMtMTEuMS03LjktMjUuOS03LjktMzcgMEMyNzkgNDM3LjQgMjUxLjUgNDQ4IDIyNCA0NDhjLTI2LjkgMC01NS4zLTEwLjgtNzcuNC0yNi4xYzAgMCAwIDAgMCAwYy0xMS45LTguNS0yOC4xLTcuOC0zOS4yIDEuN2MtMTQuNCAxMS45LTMyLjUgMjEtNTAuNiAyNS4yYy0xNy4yIDQtMjcuOSAyMS4yLTIzLjkgMzguNHMyMS4yIDI3LjkgMzguNCAyMy45YzI0LjUtNS43IDQ0LjktMTYuNSA1OC4yLTI1QzE1OC41IDUwMS43IDE5MSA1MTIgMjI0IDUxMmMzMS45IDAgNjAuNi05LjkgODAuNC0xOC45YzUuOC0yLjcgMTEuMS01LjMgMTUuNi03LjdjNC41IDIuNCA5LjcgNS4xIDE1LjYgNy43YzE5LjggOSA0OC42IDE4LjkgODAuNCAxOC45YzMzIDAgNjUuNS0xMC4zIDk0LjUtMjUuOGMxMy40IDguNCAzMy43IDE5LjMgNTguMiAyNWMxNy4yIDQgMzQuNC02LjcgMzguNC0yMy45cy02LjctMzQuNC0yMy45LTM4LjRjLTE4LjEtNC4yLTM2LjItMTMuMy01MC42LTI1LjJjLTExLjEtOS40LTI3LjMtMTAuMS0zOS4yLTEuN2MwIDAgMCAwIDAgMEM0NzEuNCA0MzcuMiA0NDIuOSA0NDggNDE2IDQ0OGMtMjcuNSAwLTU1LTEwLjYtNzcuNS0yNi4xelwiXVxufTtcbmNvbnN0IGZhU3F1YXJlUG9sbEhvcml6b250YWwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3F1YXJlLXBvbGwtaG9yaXpvbnRhbCcsXG4gIGljb246IFs0NDgsIDUxMiwgW1wicG9sbC1oXCJdLCBcImY2ODJcIiwgXCJNNDQ4IDk2YzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZMMCA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzIwIDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0zMjB6TTI1NiAxNjBjMCAxNy43LTE0LjMgMzItMzIgMzJsLTk2IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJsOTYgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnptNjQgNjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTE5MiAwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDE5MiAwek0xOTIgMzUyYzAgMTcuNy0xNC4zIDMyLTMyIDMybC0zMiAwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDMyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJ6XCJdXG59O1xuY29uc3QgZmFQb2xsSCA9IGZhU3F1YXJlUG9sbEhvcml6b250YWw7XG5jb25zdCBmYUNpcmNsZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaXJjbGUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjgzMDgsIDEyODMwOSwgMTI4OTkyLCAxMjg5OTMsIDEyODk5NCwgMTI4OTk1LCAxMjg5OTYsIDk2NzksIDk4OTgsIDk4OTksIDExMDQ0LCA2MTcwOCwgNjE5MTVdLCBcImYxMTFcIiwgXCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6XCJdXG59O1xuY29uc3QgZmFCYWNrd2FyZEZhc3QgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYmFja3dhcmQtZmFzdCcsXG4gIGljb246IFs1MTIsIDUxMiwgWzkxOTgsIFwiZmFzdC1iYWNrd2FyZFwiXSwgXCJmMDQ5XCIsIFwiTTQ5My42IDQ0NWMtMTEuMiA1LjMtMjQuNSAzLjYtMzQuMS00LjRMMjg4IDI5Ny43IDI4OCA0MTZjMCAxMi40LTcuMiAyMy43LTE4LjQgMjlzLTI0LjUgMy42LTM0LjEtNC40TDY0IDI5Ny43IDY0IDQxNmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMkwwIDk2QzAgNzguMyAxNC4zIDY0IDMyIDY0czMyIDE0LjMgMzIgMzJsMCAxMTguM0wyMzUuNSA3MS40YzkuNS03LjkgMjIuOC05LjcgMzQuMS00LjRTMjg4IDgzLjYgMjg4IDk2bDAgMTE4LjNMNDU5LjUgNzEuNGM5LjUtNy45IDIyLjgtOS43IDM0LjEtNC40UzUxMiA4My42IDUxMiA5NmwwIDMyMGMwIDEyLjQtNy4yIDIzLjctMTguNCAyOXpcIl1cbn07XG5jb25zdCBmYUZhc3RCYWNrd2FyZCA9IGZhQmFja3dhcmRGYXN0O1xuY29uc3QgZmFSZWN5Y2xlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3JlY3ljbGUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFs5ODQyLCA5ODUwLCA5ODUxXSwgXCJmMWI4XCIsIFwiTTE3NC43IDQ1LjFDMTkyLjIgMTcgMjIzIDAgMjU2IDBzNjMuOCAxNyA4MS4zIDQ1LjFsMzguNiA2MS43IDI3LTE1LjZjOC40LTQuOSAxOC45LTQuMiAyNi42IDEuN3MxMS4xIDE1LjkgOC42IDI1LjNsLTIzLjQgODcuNGMtMy40IDEyLjgtMTYuNiAyMC40LTI5LjQgMTdsLTg3LjQtMjMuNGMtOS40LTIuNS0xNi4zLTEwLjQtMTcuNi0yMHMzLjQtMTkuMSAxMS44LTIzLjlsMjguNC0xNi40TDI4MyA3OWMtNS44LTkuMy0xNi0xNS0yNy0xNXMtMjEuMiA1LjctMjcgMTVsLTE3LjUgMjhjLTkuMiAxNC44LTI4LjYgMTkuNS00My42IDEwLjVjLTE1LjMtOS4yLTIwLjItMjkuMi0xMC43LTQ0LjRsMTcuNS0yOHpNNDI5LjUgMjUxLjljMTUtOSAzNC40LTQuMyA0My42IDEwLjVsMjQuNCAzOS4xYzkuNCAxNS4xIDE0LjQgMzIuNCAxNC42IDUwLjJjLjMgNTMuMS00Mi43IDk2LjQtOTUuOCA5Ni40TDMyMCA0NDhsMCAzMmMwIDkuNy01LjggMTguNS0xNC44IDIyLjJzLTE5LjMgMS43LTI2LjItNS4ybC02NC02NGMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlsNjQtNjRjNi45LTYuOSAxNy4yLTguOSAyNi4yLTUuMnMxNC44IDEyLjUgMTQuOCAyMi4ybDAgMzIgOTYuMiAwYzE3LjYgMCAzMS45LTE0LjQgMzEuOC0zMmMwLTUuOS0xLjctMTEuNy00LjgtMTYuN2wtMjQuNC0zOS4xYy05LjUtMTUuMi00LjctMzUuMiAxMC43LTQ0LjR6bS0zNjQuNi0zMUwzNiAyMDQuMmMtOC40LTQuOS0xMy4xLTE0LjMtMTEuOC0yMy45czguMi0xNy41IDE3LjYtMjBsODcuNC0yMy40YzEyLjgtMy40IDI2IDQuMiAyOS40IDE3TDE4MiAyNDEuMmMyLjUgOS40LS45IDE5LjMtOC42IDI1LjNzLTE4LjIgNi42LTI2LjYgMS43bC0yNi41LTE1LjNMNjguOCAzMzUuM2MtMy4xIDUtNC44IDEwLjgtNC44IDE2LjdjLS4xIDE3LjYgMTQuMiAzMiAzMS44IDMybDMyLjIgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtMzIuMiAwQzQyLjcgNDQ4LS4zIDQwNC44IDAgMzUxLjZjLjEtMTcuOCA1LjEtMzUuMSAxNC42LTUwLjJsNTAuMy04MC41elwiXVxufTtcbmNvbnN0IGZhVXNlckFzdHJvbmF1dCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd1c2VyLWFzdHJvbmF1dCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjRmYlwiLCBcIk0zNzAuNyA5Ni4xQzM0Ni4xIDM5LjUgMjg5LjcgMCAyMjQgMFMxMDEuOSAzOS41IDc3LjMgOTYuMUM2MC45IDk3LjUgNDggMTExLjIgNDggMTI4bDAgNjRjMCAxNi44IDEyLjkgMzAuNSAyOS4zIDMxLjlDMTAxLjkgMjgwLjUgMTU4LjMgMzIwIDIyNCAzMjBzMTIyLjEtMzkuNSAxNDYuNy05Ni4xYzE2LjQtMS40IDI5LjMtMTUuMSAyOS4zLTMxLjlsMC02NGMwLTE2LjgtMTIuOS0zMC41LTI5LjMtMzEuOXpNMzM2IDE0NGwwIDE2YzAgNTMtNDMgOTYtOTYgOTZsLTMyIDBjLTUzIDAtOTYtNDMtOTYtOTZsMC0xNmMwLTI2LjUgMjEuNS00OCA0OC00OGwxMjggMGMyNi41IDAgNDggMjEuNSA0OCA0OHpNMTg5LjMgMTYyLjdsLTYtMjEuMmMtLjktMy4zLTMuOS01LjUtNy4zLTUuNXMtNi40IDIuMi03LjMgNS41bC02IDIxLjItMjEuMiA2Yy0zLjMgLjktNS41IDMuOS01LjUgNy4zczIuMiA2LjQgNS41IDcuM2wyMS4yIDYgNiAyMS4yYy45IDMuMyAzLjkgNS41IDcuMyA1LjVzNi40LTIuMiA3LjMtNS41bDYtMjEuMiAyMS4yLTZjMy4zLS45IDUuNS0zLjkgNS41LTcuM3MtMi4yLTYuNC01LjUtNy4zbC0yMS4yLTZ6TTExMi43IDMxNi41QzQ2LjcgMzQyLjYgMCA0MDcgMCA0ODIuM0MwIDQ5OC43IDEzLjMgNTEyIDI5LjcgNTEybDk4LjMgMCAwLTY0YzAtMTcuNyAxNC4zLTMyIDMyLTMybDEyOCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgNjQgOTguMyAwYzE2LjQgMCAyOS43LTEzLjMgMjkuNy0yOS43YzAtNzUuMy00Ni43LTEzOS43LTExMi43LTE2NS44QzMwMy45IDMzOC44IDI2NS41IDM1MiAyMjQgMzUycy03OS45LTEzLjItMTExLjMtMzUuNXpNMTc2IDQ0OGMtOC44IDAtMTYgNy4yLTE2IDE2bDAgNDggMzIgMCAwLTQ4YzAtOC44LTcuMi0xNi0xNi0xNnptOTYgMzJhMTYgMTYgMCAxIDAgMC0zMiAxNiAxNiAwIDEgMCAwIDMyelwiXVxufTtcbmNvbnN0IGZhUGxhbmVTbGFzaCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwbGFuZS1zbGFzaCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTA2OVwiLCBcIk01MTQuMyAxOTJjMzQuMiAwIDkzLjcgMjkgOTMuNyA2NGMwIDM2LTU5LjUgNjQtOTMuNyA2NGwtNzMuOCAwTDYzMC44IDQ2OS4xYzEwLjQgOC4yIDEyLjMgMjMuMyA0LjEgMzMuN3MtMjMuMyAxMi4zLTMzLjcgNC4xTDkuMiA0Mi45Qy0xLjIgMzQuNy0zLjEgMTkuNiA1LjEgOS4yUzI4LjQtMy4xIDM4LjggNS4xTDIzOC4xIDE2MS4zIDE5Ny44IDIwLjRDMTk0LjkgMTAuMiAyMDIuNiAwIDIxMy4yIDBsNTYuMiAwYzExLjUgMCAyMi4xIDYuMiAyNy44IDE2LjFMMzk3LjcgMTkybDExNi42IDB6TTQxLjUgMTI4LjdsMzIxIDI1Mi45TDI5Ny4yIDQ5NS45Yy01LjcgMTAtMTYuMyAxNi4xLTI3LjggMTYuMWwtNTYuMiAwYy0xMC42IDAtMTguMy0xMC4yLTE1LjQtMjAuNGw0OS0xNzEuNkwxNDQgMzIwbC00My4yIDU3LjZjLTMgNC03LjggNi40LTEyLjggNi40bC00MiAwYy03LjggMC0xNC02LjMtMTQtMTRjMC0xLjMgLjItMi42IC41LTMuOUw2NCAyNTYgMzIuNSAxNDUuOWMtLjQtMS4zLS41LTIuNi0uNS0zLjljMC02LjIgNC0xMS40IDkuNS0xMy4zelwiXVxufTtcbmNvbnN0IGZhVHJhZGVtYXJrID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RyYWRlbWFyaycsXG4gIGljb246IFs2NDAsIDUxMiwgWzg0ODJdLCBcImYyNWNcIiwgXCJNMzQ1LjYgMTA4LjhjLTguMy0xMS0yMi43LTE1LjUtMzUuNy0xMS4yUzI4OCAxMTQuMiAyODggMTI4bDAgMjU2YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0xNjAgODYuNCAxMTUuMmM2IDguMSAxNS41IDEyLjggMjUuNiAxMi44czE5LjYtNC43IDI1LjYtMTIuOEw1NzYgMjI0bDAgMTYwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0yNTZjMC0xMy44LTguOC0yNi0yMS45LTMwLjRzLTI3LjUgLjEtMzUuNyAxMS4yTDQ2NCAyNjYuNyAzNDUuNiAxMDguOHpNMCAxMjhjMCAxNy43IDE0LjMgMzIgMzIgMzJsNjQgMCAwIDIyNGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMjI0IDY0IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJMMzIgOTZDMTQuMyA5NiAwIDExMC4zIDAgMTI4elwiXVxufTtcbmNvbnN0IGZhQmFza2V0YmFsbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdiYXNrZXRiYWxsJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI3OTM2LCBcImJhc2tldGJhbGwtYmFsbFwiXSwgXCJmNDM0XCIsIFwiTTg2LjYgNjRsODUuMiA4NS4yQzE5NC41IDEyMS43IDIwOCA4Ni40IDIwOCA0OGMwLTE0LjctMi0yOC45LTUuNy00Mi40QzE1OC42IDE1IDExOSAzNS41IDg2LjYgNjR6TTY0IDg2LjZDMzUuNSAxMTkgMTUgMTU4LjYgNS42IDIwMi4zQzE5LjEgMjA2IDMzLjMgMjA4IDQ4IDIwOGMzOC40IDAgNzMuNy0xMy41IDEwMS4zLTM2LjFMNjQgODYuNnpNMjU2IDBjLTcuMyAwLTE0LjYgLjMtMjEuOCAuOUMyMzggMTYgMjQwIDMxLjggMjQwIDQ4YzAgNDcuMy0xNy4xIDkwLjUtNDUuNCAxMjRMMjU2IDIzMy40IDQyNS40IDY0QzM4MC4yIDI0LjIgMzIwLjkgMCAyNTYgMHpNNDggMjQwYy0xNi4yIDAtMzItMi00Ny4xLTUuOEMuMyAyNDEuNCAwIDI0OC43IDAgMjU2YzAgNjQuOSAyNC4yIDEyNC4yIDY0IDE2OS40TDIzMy40IDI1NiAxNzIgMTk0LjZDMTM4LjUgMjIyLjkgOTUuMyAyNDAgNDggMjQwem00NjMuMSAzNy44Yy42LTcuMiAuOS0xNC41IC45LTIxLjhjMC02NC45LTI0LjItMTI0LjItNjQtMTY5LjRMMjc4LjYgMjU2IDM0MCAzMTcuNGMzMy40LTI4LjMgNzYuNy00NS40IDEyNC00NS40YzE2LjIgMCAzMiAyIDQ3LjEgNS44em0tNC43IDMxLjlDNDkyLjkgMzA2IDQ3OC43IDMwNCA0NjQgMzA0Yy0zOC40IDAtNzMuNyAxMy41LTEwMS4zIDM2LjFMNDQ4IDQyNS40YzI4LjUtMzIuMyA0OS4xLTcxLjkgNTguNC0xMTUuN3pNMzQwLjEgMzYyLjdDMzE3LjUgMzkwLjMgMzA0IDQyNS42IDMwNCA0NjRjMCAxNC43IDIgMjguOSA1LjcgNDIuNEMzNTMuNCA0OTcgMzkzIDQ3Ni41IDQyNS40IDQ0OGwtODUuMi04NS4yek0zMTcuNCAzNDBMMjU2IDI3OC42IDg2LjYgNDQ4YzQ1LjEgMzkuOCAxMDQuNCA2NCAxNjkuNCA2NGM3LjMgMCAxNC42LS4zIDIxLjgtLjlDMjc0IDQ5NiAyNzIgNDgwLjIgMjcyIDQ2NGMwLTQ3LjMgMTcuMS05MC41IDQ1LjQtMTI0elwiXVxufTtcbmNvbnN0IGZhQmFza2V0YmFsbEJhbGwgPSBmYUJhc2tldGJhbGw7XG5jb25zdCBmYVNhdGVsbGl0ZURpc2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc2F0ZWxsaXRlLWRpc2gnLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjgyMjVdLCBcImY3YzBcIiwgXCJNMTkyIDMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyQzM4My4xIDAgNTEyIDEyOC45IDUxMiAyODhjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJDNDQ4IDE2NC4zIDM0Ny43IDY0IDIyNCA2NGMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6TTYwLjYgMjIwLjZMMTY0LjcgMzI0LjdsMjguNC0yOC40Yy0uNy0yLjYtMS4xLTUuNC0xLjEtOC4zYzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJjLTIuOSAwLTUuNi0uNC04LjMtMS4xbC0yOC40IDI4LjRMMjkxLjQgNDUxLjRjMTQuNSAxNC41IDExLjggMzguOC03LjMgNDYuM0MyNjAuNSA1MDYuOSAyMzQuOSA1MTIgMjA4IDUxMkM5My4xIDUxMiAwIDQxOC45IDAgMzA0YzAtMjYuOSA1LjEtNTIuNSAxNC40LTc2LjFjNy41LTE5IDMxLjgtMjEuOCA0Ni4zLTcuM3pNMjI0IDk2YzEwNiAwIDE5MiA4NiAxOTIgMTkyYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyYzAtNzAuNy01Ny4zLTEyOC0xMjgtMTI4Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyelwiXVxufTtcbmNvbnN0IGZhQ2lyY2xlVXAgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2lyY2xlLXVwJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbNjE0NjcsIFwiYXJyb3ctYWx0LWNpcmNsZS11cFwiXSwgXCJmMzViXCIsIFwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyem0xMS4zLTM5NS4zbDExMiAxMTJjNC42IDQuNiA1LjkgMTEuNSAzLjUgMTcuNHMtOC4zIDkuOS0xNC44IDkuOWwtNjQgMCAwIDk2YzAgMTcuNy0xNC4zIDMyLTMyIDMybC0zMiAwYy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTk2LTY0IDBjLTYuNSAwLTEyLjMtMy45LTE0LjgtOS45cy0xLjEtMTIuOSAzLjUtMTcuNGwxMTItMTEyYzYuMi02LjIgMTYuNC02LjIgMjIuNiAwelwiXVxufTtcbmNvbnN0IGZhQXJyb3dBbHRDaXJjbGVVcCA9IGZhQ2lyY2xlVXA7XG5jb25zdCBmYU1vYmlsZVNjcmVlbkJ1dHRvbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtb2JpbGUtc2NyZWVuLWJ1dHRvbicsXG4gIGljb246IFszODQsIDUxMiwgW1wibW9iaWxlLWFsdFwiXSwgXCJmM2NkXCIsIFwiTTE2IDY0QzE2IDI4LjcgNDQuNyAwIDgwIDBMMzA0IDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCAzODRjMCAzNS4zLTI4LjcgNjQtNjQgNjRMODAgNTEyYy0zNS4zIDAtNjQtMjguNy02NC02NEwxNiA2NHpNMjI0IDQ0OGEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwek0zMDQgNjRMODAgNjRsMCAzMjAgMjI0IDAgMC0zMjB6XCJdXG59O1xuY29uc3QgZmFNb2JpbGVBbHQgPSBmYU1vYmlsZVNjcmVlbkJ1dHRvbjtcbmNvbnN0IGZhVm9sdW1lSGlnaCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd2b2x1bWUtaGlnaCcsXG4gIGljb246IFs2NDAsIDUxMiwgWzEyODI2NiwgXCJ2b2x1bWUtdXBcIl0sIFwiZjAyOFwiLCBcIk01MzMuNiAzMi41QzU5OC41IDg1LjIgNjQwIDE2NS44IDY0MCAyNTZzLTQxLjUgMTcwLjctMTA2LjQgMjIzLjVjLTEwLjMgOC40LTI1LjQgNi44LTMzLjgtMy41cy02LjgtMjUuNCAzLjUtMzMuOEM1NTcuNSAzOTguMiA1OTIgMzMxLjIgNTkyIDI1NnMtMzQuNS0xNDIuMi04OC43LTE4Ni4zYy0xMC4zLTguNC0xMS44LTIzLjUtMy41LTMzLjhzMjMuNS0xMS44IDMzLjgtMy41ek00NzMuMSAxMDdjNDMuMiAzNS4yIDcwLjkgODguOSA3MC45IDE0OXMtMjcuNyAxMTMuOC03MC45IDE0OWMtMTAuMyA4LjQtMjUuNCA2LjgtMzMuOC0zLjVzLTYuOC0yNS40IDMuNS0zMy44QzQ3NS4zIDM0MS4zIDQ5NiAzMDEuMSA0OTYgMjU2cy0yMC43LTg1LjMtNTMuMi0xMTEuOGMtMTAuMy04LjQtMTEuOC0yMy41LTMuNS0zMy44czIzLjUtMTEuOCAzMy44LTMuNXptLTYwLjUgNzQuNUM0MzQuMSAxOTkuMSA0NDggMjI1LjkgNDQ4IDI1NnMtMTMuOSA1Ni45LTM1LjQgNzQuNWMtMTAuMyA4LjQtMjUuNCA2LjgtMzMuOC0zLjVzLTYuOC0yNS40IDMuNS0zMy44QzM5My4xIDI4NC40IDQwMCAyNzEgNDAwIDI1NnMtNi45LTI4LjQtMTcuNy0zNy4zYy0xMC4zLTguNC0xMS44LTIzLjUtMy41LTMzLjhzMjMuNS0xMS44IDMzLjgtMy41ek0zMDEuMSAzNC44QzMxMi42IDQwIDMyMCA1MS40IDMyMCA2NGwwIDM4NGMwIDEyLjYtNy40IDI0LTE4LjkgMjkuMnMtMjUgMy4xLTM0LjQtNS4zTDEzMS44IDM1MiA2NCAzNTJjLTM1LjMgMC02NC0yOC43LTY0LTY0bDAtNjRjMC0zNS4zIDI4LjctNjQgNjQtNjRsNjcuOCAwTDI2Ni43IDQwLjFjOS40LTguNCAyMi45LTEwLjQgMzQuNC01LjN6XCJdXG59O1xuY29uc3QgZmFWb2x1bWVVcCA9IGZhVm9sdW1lSGlnaDtcbmNvbnN0IGZhVXNlcnNSYXlzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3VzZXJzLXJheXMnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU1OTNcIiwgXCJNNDEgN0MzMS42LTIuMyAxNi40LTIuMyA3IDdTLTIuMyAzMS42IDcgNDFsNzIgNzJjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45TDQxIDd6TTU5OSA3TDUyNyA3OWMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwbDcyLTcyYzkuNC05LjQgOS40LTI0LjYgMC0zMy45cy0yNC42LTkuNC0zMy45IDB6TTcgNTA1YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwbDcyLTcyYzkuNC05LjQgOS40LTI0LjYgMC0zMy45cy0yNC42LTkuNC0zMy45IDBMNyA0NzFjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45em01OTIgMGM5LjQgOS40IDI0LjYgOS40IDMzLjkgMHM5LjQtMjQuNiAwLTMzLjlsLTcyLTcyYy05LjQtOS40LTI0LjYtOS40LTMzLjkgMHMtOS40IDI0LjYgMCAzMy45bDcyIDcyek0zMjAgMjU2YTY0IDY0IDAgMSAwIDAtMTI4IDY0IDY0IDAgMSAwIDAgMTI4ek0yMTIuMSAzMzZjLTIuNyA3LjUtNC4xIDE1LjYtNC4xIDI0YzAgMTMuMyAxMC43IDI0IDI0IDI0bDE3NiAwYzEzLjMgMCAyNC0xMC43IDI0LTI0YzAtOC40LTEuNC0xNi41LTQuMS0yNGMtLjUtMS40LTEtMi43LTEuNi00Yy05LjQtMjIuMy0yOS44LTM4LjktNTQuMy00M2MtMy45LS43LTcuOS0xLTEyLTFsLTgwIDBjLTQuMSAwLTguMSAuMy0xMiAxYy0uOCAuMS0xLjcgLjMtMi41IC41Yy0yNC45IDUuMS00NS4xIDIzLTUzLjQgNDYuNXpNMTc1LjggMjI0YTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnptLTI2LjUgMzJDMTE5LjkgMjU2IDk2IDI3OS45IDk2IDMwOS4zYzAgMTQuNyAxMS45IDI2LjcgMjYuNyAyNi43bDU2LjEgMGM4LTM0LjEgMzIuOC02MS43IDY1LjItNzMuNmMtNy41LTQuMS0xNi4yLTYuNC0yNS4zLTYuNGwtNjkuMyAwem0zNjggODBjMTQuNyAwIDI2LjctMTEuOSAyNi43LTI2LjdjMC0yOS41LTIzLjktNTMuMy01My4zLTUzLjNsLTY5LjMgMGMtOS4yIDAtMTcuOCAyLjMtMjUuMyA2LjRjMzIuNCAxMS45IDU3LjIgMzkuNSA2NS4yIDczLjZsNTYuMSAwek00NjQgMjI0YTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnpcIl1cbn07XG5jb25zdCBmYVdhbGxldCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd3YWxsZXQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY1NTVcIiwgXCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NkwwIDQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NGwzODQgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTIyNGMwLTM1LjMtMjguNy02NC02NC02NEw4MCAxMjhjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZsMzY4IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJMNjQgMzJ6TTQxNiAyNzJhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0elwiXVxufTtcbmNvbnN0IGZhQ2xpcGJvYXJkQ2hlY2sgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2xpcGJvYXJkLWNoZWNrJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmNDZjXCIsIFwiTTE5MiAwYy00MS44IDAtNzcuNCAyNi43LTkwLjUgNjRMNjQgNjRDMjguNyA2NCAwIDkyLjcgMCAxMjhMMCA0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMjU2IDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0zMjBjMC0zNS4zLTI4LjctNjQtNjQtNjRsLTM3LjUgMEMyNjkuNCAyNi43IDIzMy44IDAgMTkyIDB6bTAgNjRhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0ek0zMDUgMjczTDE3NyA0MDFjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwTDc5IDMzN2MtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwbDQ3IDQ3TDI3MSAyMzljOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45elwiXVxufTtcbmNvbnN0IGZhRmlsZUF1ZGlvID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZpbGUtYXVkaW8nLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImYxYzdcIiwgXCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRMMCA0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMjU2IDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0yODgtMTI4IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyTDIyNCAwIDY0IDB6TTI1NiAwbDAgMTI4IDEyOCAwTDI1NiAwem0yIDIyNi4zYzM3LjEgMjIuNCA2MiA2My4xIDYyIDEwOS43cy0yNC45IDg3LjMtNjIgMTA5LjdjLTcuNiA0LjYtMTcuNCAyLjEtMjItNS40cy0yLjEtMTcuNCA1LjQtMjJDMjY5LjQgNDAxLjUgMjg4IDM3MC45IDI4OCAzMzZzLTE4LjYtNjUuNS00Ni41LTgyLjNjLTcuNi00LjYtMTAtMTQuNC01LjQtMjJzMTQuNC0xMCAyMi01LjR6bS05MS45IDMwLjljNiAyLjUgOS45IDguMyA5LjkgMTQuOGwwIDEyOGMwIDYuNS0zLjkgMTIuMy05LjkgMTQuOHMtMTIuOSAxLjEtMTcuNC0zLjVMMTEzLjQgMzc2IDgwIDM3NmMtOC44IDAtMTYtNy4yLTE2LTE2bDAtNDhjMC04LjggNy4yLTE2IDE2LTE2bDMzLjQgMCAzNS4zLTM1LjNjNC42LTQuNiAxMS41LTUuOSAxNy40LTMuNXptNTEgMzQuOWM2LjYtNS45IDE2LjctNS4zIDIyLjYgMS4zQzI0OS44IDMwNC42IDI1NiAzMTkuNiAyNTYgMzM2cy02LjIgMzEuNC0xNi4zIDQyLjdjLTUuOSA2LjYtMTYgNy4xLTIyLjYgMS4zcy03LjEtMTYtMS4zLTIyLjZjNS4xLTUuNyA4LjEtMTMuMSA4LjEtMjEuM3MtMy4xLTE1LjctOC4xLTIxLjNjLTUuOS02LjYtNS4zLTE2LjcgMS4zLTIyLjZ6XCJdXG59O1xuY29uc3QgZmFCdXJnZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYnVyZ2VyJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXCJoYW1idXJnZXJcIl0sIFwiZjgwNVwiLCBcIk02MS4xIDIyNEM0NSAyMjQgMzIgMjExIDMyIDE5NC45YzAtMS45IC4yLTMuNyAuNi01LjZDMzcuOSAxNjguMyA3OC44IDMyIDI1NiAzMnMyMTguMSAxMzYuMyAyMjMuNCAxNTcuM2MuNSAxLjkgLjYgMy43IC42IDUuNmMwIDE2LjEtMTMgMjkuMS0yOS4xIDI5LjFMNjEuMSAyMjR6TTE0NCAxMjhhMTYgMTYgMCAxIDAgLTMyIDAgMTYgMTYgMCAxIDAgMzIgMHptMjQwIDE2YTE2IDE2IDAgMSAwIDAtMzIgMTYgMTYgMCAxIDAgMCAzMnpNMjcyIDk2YTE2IDE2IDAgMSAwIC0zMiAwIDE2IDE2IDAgMSAwIDMyIDB6TTE2IDMwNGMwLTI2LjUgMjEuNS00OCA0OC00OGwzODQgMGMyNi41IDAgNDggMjEuNSA0OCA0OHMtMjEuNSA0OC00OCA0OEw2NCAzNTJjLTI2LjUgMC00OC0yMS41LTQ4LTQ4em0xNiA5NmMwLTguOCA3LjItMTYgMTYtMTZsNDE2IDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgMTZjMCAzNS4zLTI4LjcgNjQtNjQgNjRMOTYgNDgwYy0zNS4zIDAtNjQtMjguNy02NC02NGwwLTE2elwiXVxufTtcbmNvbnN0IGZhSGFtYnVyZ2VyID0gZmFCdXJnZXI7XG5jb25zdCBmYVdyZW5jaCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd3cmVuY2gnLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjgyOTVdLCBcImYwYWRcIiwgXCJNMzUyIDMyMGM4OC40IDAgMTYwLTcxLjYgMTYwLTE2MGMwLTE1LjMtMi4yLTMwLjEtNi4yLTQ0LjJjLTMuMS0xMC44LTE2LjQtMTMuMi0yNC4zLTUuM2wtNzYuOCA3Ni44Yy0zIDMtNy4xIDQuNy0xMS4zIDQuN0wzMzYgMTkyYy04LjggMC0xNi03LjItMTYtMTZsMC01Ny40YzAtNC4yIDEuNy04LjMgNC43LTExLjNsNzYuOC03Ni44YzcuOS03LjkgNS40LTIxLjItNS4zLTI0LjNDMzgyLjEgMi4yIDM2Ny4zIDAgMzUyIDBDMjYzLjYgMCAxOTIgNzEuNiAxOTIgMTYwYzAgMTkuMSAzLjQgMzcuNSA5LjUgNTQuNUwxOS45IDM5Ni4xQzcuMiA0MDguOCAwIDQyNi4xIDAgNDQ0LjFDMCA0ODEuNiAzMC40IDUxMiA2Ny45IDUxMmMxOCAwIDM1LjMtNy4yIDQ4LTE5LjlMMjk3LjUgMzEwLjVjMTcgNi4yIDM1LjQgOS41IDU0LjUgOS41ek04MCA0MDhhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4elwiXVxufTtcbmNvbnN0IGZhQnVncyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdidWdzJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJlNGQwXCIsIFwiTTE2NC41IDEwNy40bDMzLjQtNzMuNWM1LjUtMTIuMSAuMS0yNi4zLTExLjktMzEuOHMtMjYuMy0uMS0zMS44IDExLjlMMTI4IDcxLjcgMTAxLjkgMTQuMUM5Ni40IDIgODIuMS0zLjMgNzAuMSAyLjFTNTIuNyAyMS45IDU4LjEgMzMuOWwzMy40IDczLjVjLTEwLjIgNy4xLTE4LjIgMTctMjIuOSAyOC42bC0xNyAwLTQuMS0yMC43Yy0yLjYtMTMtMTUuMi0yMS40LTI4LjItMTguOFMtMi4xIDExMS43IC41IDEyNC43bDggNDBDMTAuNyAxNzUuOSAyMC42IDE4NCAzMiAxODRsMzIgMCAwIDIzLjMtMzcuOCA5LjVjLTkuNSAyLjQtMTYuNiAxMC4yLTE3LjkgMTkuOWwtOCA1NmMtMS45IDEzLjEgNy4yIDI1LjMgMjAuNCAyNy4yczI1LjMtNy4yIDI3LjItMjAuNGw1LjctNDAgMTguNC00LjZDODIuNyAyNzQuNiAxMDMuOCAyODggMTI4IDI4OHM0NS4zLTEzLjQgNTYuMS0zMy4ybDE4LjQgNC42IDUuNyA0MGMxLjkgMTMuMSAxNCAyMi4yIDI3LjIgMjAuNHMyMi4yLTE0IDIwLjQtMjcuMmwtOC01NmMtMS40LTkuNy04LjUtMTcuNS0xNy45LTE5LjlMMTkyIDIwNy4zbDAtMjMuMyAzMiAwYzExLjQgMCAyMS4zLTguMSAyMy41LTE5LjNsOC00MGMyLjYtMTMtNS44LTI1LjYtMTguOC0yOC4ycy0yNS42IDUuOC0yOC4yIDE4LjhMMjA0LjMgMTM2bC0xNyAwYy00LjctMTEuNi0xMi43LTIxLjUtMjIuOS0yOC42ek00OTYgMjg2LjVsNjUuNi00N2MxMC44LTcuNyAxMy4zLTIyLjcgNS42LTMzLjVzLTIyLjctMTMuMy0zMy41LTUuNmwtNTEuNCAzNi44IDYuMS02Mi45YzEuMy0xMy4yLTguNC0yNC45LTIxLjYtMjYuMnMtMjQuOSA4LjQtMjYuMiAyMS42TDQzMi44IDI1MGMtMTIuMyAxLTI0LjIgNS42LTM0LjEgMTMuM0wzODQgMjU0LjhsNi44LTIwYzQuMi0xMi42LTIuNS0yNi4yLTE1LTMwLjRzLTI2LjIgMi41LTMwLjQgMTVsLTEzLjEgMzguNmMtMy43IDEwLjggLjggMjIuOCAxMC43IDI4LjVsMjcuNyAxNkwzNTkgMzIyLjcgMzIxLjUgMzEyYy05LjQtMi43LTE5LjUgLjYtMjUuNSA4LjNsLTM0LjkgNDQuNWMtOC4yIDEwLjQtNi40IDI1LjUgNC4xIDMzLjdzMjUuNSA2LjQgMzMuNy00LjFsMjUtMzEuOCAxOC4yIDUuMmMtLjUgMjIuNiAxMSA0NC43IDMyIDU2LjhzNDUuOSAxMSA2NS4yLS43bDEzLjYgMTMuMi0xNS4xIDM3LjVjLTQuOSAxMi4zIDEgMjYuMyAxMy4zIDMxLjJzMjYuMy0xIDMxLjItMTMuM0w1MDMuNSA0NDBjMy42LTkuMSAxLjQtMTkuNC01LjYtMjYuMmwtMjgtMjcuMSAxMS42LTIwLjEgMjcuNyAxNmM5LjkgNS43IDIyLjUgMy43IDMwLTQuOUw1NjYuMiAzNDdjOC43LTEwIDcuOC0yNS4xLTIuMi0zMy45cy0yNS4xLTcuOC0zMy45IDIuMmwtMTMuOSAxNS45LTE0LjctOC41YzEuNy0xMi40LS4yLTI1LTUuNS0zNi4yelwiXVxufTtcbmNvbnN0IGZhUnVwZWVTaWduID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3J1cGVlLXNpZ24nLFxuICBpY29uOiBbNDQ4LCA1MTIsIFs4MzYwLCBcInJ1cGVlXCJdLCBcImYxNTZcIiwgXCJNMCA2NEMwIDQ2LjMgMTQuMyAzMiAzMiAzMmw4MCAwYzc5LjUgMCAxNDQgNjQuNSAxNDQgMTQ0YzAgNTguOC0zNS4yIDEwOS4zLTg1LjcgMTMxLjdsNTEuNCAxMjguNGM2LjYgMTYuNC0xLjQgMzUtMTcuOCA0MS42cy0zNS0xLjQtNDEuNi0xNy44TDEwNi4zIDMyMCA2NCAzMjBsMCAxMjhjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJMMCAyODggMCA2NHpNNjQgMjU2bDQ4IDBjNDQuMiAwIDgwLTM1LjggODAtODBzLTM1LjgtODAtODAtODBMNjQgOTZsMCAxNjB6bTI1Ni41IDE2LjRjLS45IDYgMCA4LjcgLjQgOS44Yy40IDEuMSAxLjQgMi42IDQuMiA0LjljNy4yIDUuNyAxOC43IDEwIDM3LjkgMTYuOGwxLjMgLjVjMTYgNS42IDM4LjcgMTMuNiA1NS43IDI4LjFjOS41IDguMSAxNy45IDE4LjYgMjMuMSAzMi4zYzUuMSAxMy43IDYuMSAyOC41IDMuOCA0NGMtNC4yIDI4LjEtMjAuNSA0OS4zLTQzLjggNjAuOWMtMjIuMSAxMS00OC4xIDEyLjUtNzMuMiA4bC0uMiAwczAgMCAwIDBjLTkuMy0xLjgtMjAuNS01LjctMjkuMy05Yy02LTIuMy0xMi42LTQuOS0xNy43LTYuOWMwIDAgMCAwIDAgMGMtMi41LTEtNC42LTEuOC02LjMtMi41Yy0xNi41LTYuNC0yNC42LTI1LTE4LjItNDEuNHMyNC45LTI0LjYgNDEuNC0xOC4yYzIuNiAxIDUuMiAyIDcuOSAzLjFjMCAwIDAgMCAwIDBjNC44IDEuOSA5LjggMy45IDE1LjQgNmM4LjggMy4zIDE1LjMgNS40IDE4LjcgNmMxNS43IDIuOCAyNi43IC44IDMyLjktMi4zYzUtMi41IDgtNiA5LjEtMTNjMS02LjkgLjItMTAuNS0uNS0xMi4zYy0uNi0xLjctMS44LTMuNi00LjUtNS45Yy02LjktNS44LTE4LjItMTAuNC0zNi45LTE3bC0zLTEuMWMtMTUuNS01LjQtMzctMTMtNTMuMy0yNS45Yy05LjUtNy41LTE4LjMtMTcuNi0yMy43LTMxYy01LjUtMTMuNC02LjYtMjgtNC40LTQzLjJjOC40LTU3LjEgNjctNzggMTE2LjktNjguOWM2LjkgMS4zIDI3LjMgNS44IDM1LjQgOC40YzE2LjkgNS4yIDI2LjMgMjMuMiAyMS4xIDQwLjFzLTIzLjIgMjYuMy00MC4xIDIxLjFjLTQuNy0xLjQtMjIuMy01LjUtMjcuOS02LjVjLTE0LjYtMi43LTI1LjgtLjQtMzIuNiAzLjJjLTYuMyAzLjMtOC45IDcuNi05LjUgMTJ6XCJdXG59O1xuY29uc3QgZmFSdXBlZSA9IGZhUnVwZWVTaWduO1xuY29uc3QgZmFGaWxlSW1hZ2UgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmlsZS1pbWFnZScsXG4gIGljb246IFszODQsIDUxMiwgWzEyODQ0M10sIFwiZjFjNVwiLCBcIk02NCAwQzI4LjcgMCAwIDI4LjcgMCA2NEwwIDQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NGwyNTYgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTI4OC0xMjggMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJMMjI0IDAgNjQgMHpNMjU2IDBsMCAxMjggMTI4IDBMMjU2IDB6TTY0IDI1NmEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwem0xNTIgMzJjNS4zIDAgMTAuMiAyLjYgMTMuMiA2LjlsODggMTI4YzMuNCA0LjkgMy43IDExLjMgMSAxNi41cy04LjIgOC42LTE0LjIgOC42bC04OCAwLTQwIDAtNDggMC00OCAwYy01LjggMC0xMS4xLTMuMS0xMy45LTguMXMtMi44LTExLjIgLjItMTYuMWw0OC04MGMyLjktNC44IDguMS03LjggMTMuNy03LjhzMTAuOCAyLjkgMTMuNyA3LjhsMTIuOCAyMS40IDQ4LjMtNzAuMmMzLTQuMyA3LjktNi45IDEzLjItNi45elwiXVxufTtcbmNvbnN0IGZhQ2lyY2xlUXVlc3Rpb24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2lyY2xlLXF1ZXN0aW9uJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbNjIxMDgsIFwicXVlc3Rpb24tY2lyY2xlXCJdLCBcImYwNTlcIiwgXCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTE2OS44IDE2NS4zYzcuOS0yMi4zIDI5LjEtMzcuMyA1Mi44LTM3LjNsNTguMyAwYzM0LjkgMCA2My4xIDI4LjMgNjMuMSA2My4xYzAgMjIuNi0xMi4xIDQzLjUtMzEuNyA1NC44TDI4MCAyNjQuNGMtLjIgMTMtMTAuOSAyMy42LTI0IDIzLjZjLTEzLjMgMC0yNC0xMC43LTI0LTI0bDAtMTMuNWMwLTguNiA0LjYtMTYuNSAxMi4xLTIwLjhsNDQuMy0yNS40YzQuNy0yLjcgNy42LTcuNyA3LjYtMTMuMWMwLTguNC02LjgtMTUuMS0xNS4xLTE1LjFsLTU4LjMgMGMtMy40IDAtNi40IDIuMS03LjUgNS4zbC0uNCAxLjJjLTQuNCAxMi41LTE4LjIgMTktMzAuNiAxNC42cy0xOS0xOC4yLTE0LjYtMzAuNmwuNC0xLjJ6TTIyNCAzNTJhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHpcIl1cbn07XG5jb25zdCBmYVF1ZXN0aW9uQ2lyY2xlID0gZmFDaXJjbGVRdWVzdGlvbjtcbmNvbnN0IGZhUGxhbmVEZXBhcnR1cmUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGxhbmUtZGVwYXJ0dXJlJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbMTI4NzQ3XSwgXCJmNWIwXCIsIFwiTTM4MSAxMTQuOUwxODYuMSA0MS44Yy0xNi43LTYuMi0zNS4yLTUuMy01MS4xIDIuN0w4OS4xIDY3LjRDNzggNzMgNzcuMiA4OC41IDg3LjYgOTUuMmwxNDYuOSA5NC41TDEzNiAyNDAgNzcuOCAyMTQuMWMtOC43LTMuOS0xOC44LTMuNy0yNy4zIC42TDE4LjMgMjMwLjhjLTkuMyA0LjctMTEuOCAxNi44LTUgMjQuN2w3My4xIDg1LjNjNi4xIDcuMSAxNSAxMS4yIDI0LjMgMTEuMmwxMzcuNyAwYzUgMCA5LjktMS4yIDE0LjMtMy40TDUzNS42IDIxMi4yYzQ2LjUtMjMuMyA4Mi41LTYzLjMgMTAwLjgtMTEyQzY0NS45IDc1IDYyNy4yIDQ4IDYwMC4yIDQ4bC01Ny40IDBjLTIwLjIgMC00MC4yIDQuOC01OC4yIDE0TDM4MSAxMTQuOXpNMCA0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJsNTc2IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJMMzIgNDQ4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnpcIl1cbn07XG5jb25zdCBmYUhhbmRzaGFrZVNsYXNoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hhbmRzaGFrZS1zbGFzaCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTA2MFwiLCBcIk0zOC44IDUuMUMyOC40LTMuMSAxMy4zLTEuMiA1LjEgOS4yUy0xLjIgMzQuNyA5LjIgNDIuOWw1OTIgNDY0YzEwLjQgOC4yIDI1LjUgNi4zIDMzLjctNC4xczYuMy0yNS41LTQuMS0zMy43bC0xMzUtMTA1LjhjLTEuMS0xMS40LTYuMy0yMi4zLTE1LjMtMzAuN2wtMTM0LjItMTIzLTIzLjQgMTguMi0yNi0yMC4zIDc3LjItNjAuMWM3LTUuNCAxNy00LjIgMjIuNSAyLjhzNC4yIDE3LTIuOCAyMi41bC0yMC45IDE2LjJMNTEyIDMxNi44IDUxMiAxMjhsLS43IDAtMy45LTIuNUw0MzQuOCA3OWMtMTUuMy05LjgtMzMuMi0xNS01MS40LTE1Yy0yMS44IDAtNDMgNy41LTYwIDIxLjJsLTg5LjcgNzIuNi0yNS44LTIwLjMgODEuOC02Ni4yYy0xMS42LTQuOS0yNC4xLTcuNC0zNi44LTcuNEMyMzQgNjQgMjE1LjcgNjkuNiAyMDAgODBsLTM1LjUgMjMuN0wzOC44IDUuMXpNOTYgMTcxLjZMNDAuNiAxMjggMCAxMjggMCAzNTJjMCAxNy43IDE0LjMgMzIgMzIgMzJsMzIgMGMxNy43IDAgMzItMTQuMyAzMi0zMmwwLTE4MC40ek00MTMuNiA0MjEuOUwxMjggMTk2LjkgMTI4IDM1MmwyOC4yIDAgOTEuNCA4My40YzE5LjYgMTcuOSA0OS45IDE2LjUgNjcuOC0zLjFjNS41LTYuMSA5LjItMTMuMiAxMS4xLTIwLjZsMTcgMTUuNmMxOS41IDE3LjkgNDkuOSAxNi42IDY3LjgtMi45Yy44LS44IDEuNS0xLjcgMi4yLTIuNnpNNDggMzIwYTE2IDE2IDAgMSAxIDAgMzIgMTYgMTYgMCAxIDEgMC0zMnpNNTQ0IDEyOGwwIDIyNGMwIDE3LjcgMTQuMyAzMiAzMiAzMmwzMiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMybDAtMjI0LTk2IDB6bTMyIDIwOGExNiAxNiAwIDEgMSAzMiAwIDE2IDE2IDAgMSAxIC0zMiAwelwiXVxufTtcbmNvbnN0IGZhQm9va0Jvb2ttYXJrID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Jvb2stYm9va21hcmsnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImUwYmJcIiwgXCJNMCA5NkMwIDQzIDQzIDAgOTYgMGw5NiAwIDAgMTkwLjdjMCAxMy40IDE1LjUgMjAuOSAyNiAxMi41TDI3MiAxNjBsNTQgNDMuMmMxMC41IDguNCAyNiAuOSAyNi0xMi41TDM1MiAwbDMyIDAgMzIgMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDMyMGMwIDE3LjctMTQuMyAzMi0zMiAzMmwwIDY0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC0zMiAwTDk2IDUxMmMtNTMgMC05Ni00My05Ni05NkwwIDk2ek02NCA0MTZjMCAxNy43IDE0LjMgMzIgMzIgMzJsMjU2IDAgMC02NEw5NiAzODRjLTE3LjcgMC0zMiAxNC4zLTMyIDMyelwiXVxufTtcbmNvbnN0IGZhQ29kZUJyYW5jaCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjb2RlLWJyYW5jaCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjEyNlwiLCBcIk04MCAxMDRhMjQgMjQgMCAxIDAgMC00OCAyNCAyNCAwIDEgMCAwIDQ4em04MC0yNGMwIDMyLjgtMTkuNyA2MS00OCA3My4zbDAgODcuOGMxOC44LTEwLjkgNDAuNy0xNy4xIDY0LTE3LjFsOTYgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTYuN0MzMDcuNyAxNDEgMjg4IDExMi44IDI4OCA4MGMwLTQ0LjIgMzUuOC04MCA4MC04MHM4MCAzNS44IDgwIDgwYzAgMzIuOC0xOS43IDYxLTQ4IDczLjNsMCA2LjdjMCA3MC43LTU3LjMgMTI4LTEyOCAxMjhsLTk2IDBjLTM1LjMgMC02NCAyOC43LTY0IDY0bDAgNi43YzI4LjMgMTIuMyA0OCA0MC41IDQ4IDczLjNjMCA0NC4yLTM1LjggODAtODAgODBzLTgwLTM1LjgtODAtODBjMC0zMi44IDE5LjctNjEgNDgtNzMuM2wwLTYuNyAwLTE5OC43QzE5LjcgMTQxIDAgMTEyLjggMCA4MEMwIDM1LjggMzUuOCAwIDgwIDBzODAgMzUuOCA4MCA4MHptMjMyIDBhMjQgMjQgMCAxIDAgLTQ4IDAgMjQgMjQgMCAxIDAgNDggMHpNODAgNDU2YTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHpcIl1cbn07XG5jb25zdCBmYUhhdENvd2JveSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoYXQtY293Ym95JyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmOGMwXCIsIFwiTTMyMCA2NGMxNC40IDAgMjIuMy03IDMwLjgtMTQuNEMzNjAuNCA0MS4xIDM3MC43IDMyIDM5MiAzMmM0OS4zIDAgODQuNCAxNTIuMiA5Ny45IDIyMS45QzQ0Ny44IDI3Mi4xIDM5MC45IDI4OCAzMjAgMjg4cy0xMjcuOC0xNS45LTE2OS45LTM0LjFDMTYzLjYgMTg0LjIgMTk4LjcgMzIgMjQ4IDMyYzIxLjMgMCAzMS42IDkuMSA0MS4yIDE3LjZDMjk3LjcgNTcgMzA1LjYgNjQgMzIwIDY0ek0xMTEuMSAyNzAuN2M0Ny4yIDI0LjUgMTE3LjUgNDkuMyAyMDkgNDkuM3MxNjEuOC0yNC44IDIwOC45LTQ5LjNjMjQuOC0xMi45IDQ5LjgtMjguMyA3MC4xLTQ3LjdjNy45LTcuOSAyMC4yLTkuMiAyOS42LTMuM2M5LjUgNS45IDEzLjUgMTcuOSA5LjkgMjguNWMtMTMuNSAzNy43LTM4LjQgNzIuMy02Ni4xIDEwMC42QzUyMy43IDM5OC45IDQ0My42IDQ0OCAzMjAgNDQ4cy0yMDMuNi00OS4xLTI1Mi41LTk5LjJDMzkuOCAzMjAuNCAxNC45IDI4NS44IDEuNCAyNDguMWMtMy42LTEwLjYgLjQtMjIuNiA5LjktMjguNWM5LjUtNS45IDIxLjctNC41IDI5LjYgMy4zYzIwLjQgMTkuNCA0NS4zIDM0LjggNzAuMSA0Ny43elwiXVxufTtcbmNvbnN0IGZhQnJpZGdlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JyaWRnZScsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZTRjOFwiLCBcIk0zMiAzMkMxNC4zIDMyIDAgNDYuMyAwIDY0UzE0LjMgOTYgMzIgOTZsNDAgMCAwIDY0TDAgMTYwIDAgMjg4YzUzIDAgOTYgNDMgOTYgOTZsMCA2NGMwIDE3LjcgMTQuMyAzMiAzMiAzMmwzMiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMybDAtNjRjMC01MyA0My05NiA5Ni05NnM5NiA0MyA5NiA5NmwwIDY0YzAgMTcuNyAxNC4zIDMyIDMyIDMybDMyIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJsMC02NGMwLTUzIDQzLTk2IDk2LTk2bDAtMTI4LTcyIDAgMC02NCA0MCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyTDMyIDMyek00NTYgOTZsMCA2NC04MCAwIDAtNjQgODAgMHpNMzI4IDk2bDAgNjQtODAgMCAwLTY0IDgwIDB6TTIwMCA5NmwwIDY0LTgwIDAgMC02NCA4MCAwelwiXVxufTtcbmNvbnN0IGZhUGhvbmVGbGlwID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3Bob25lLWZsaXAnLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjgzODEsIFwicGhvbmUtYWx0XCJdLCBcImY4NzlcIiwgXCJNMzQ3LjEgMjQuNmM3LjctMTguNiAyOC0yOC41IDQ3LjQtMjMuMmw4OCAyNEM0OTkuOSAzMC4yIDUxMiA0NiA1MTIgNjRjMCAyNDcuNC0yMDAuNiA0NDgtNDQ4IDQ0OGMtMTggMC0zMy44LTEyLjEtMzguNi0yOS41bC0yNC04OGMtNS4zLTE5LjQgNC42LTM5LjcgMjMuMi00Ny40bDk2LTQwYzE2LjMtNi44IDM1LjItMi4xIDQ2LjMgMTEuNkwyMDcuMyAzNjhjNzAuNC0zMy4zIDEyNy40LTkwLjMgMTYwLjctMTYwLjdMMzE4LjcgMTY3Yy0xMy43LTExLjItMTguNC0zMC0xMS42LTQ2LjNsNDAtOTZ6XCJdXG59O1xuY29uc3QgZmFQaG9uZUFsdCA9IGZhUGhvbmVGbGlwO1xuY29uc3QgZmFUcnVja0Zyb250ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RydWNrLWZyb250JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJlMmI3XCIsIFwiTTAgODBDMCAzNS44IDM1LjggMCA4MCAwTDQzMiAwYzQ0LjIgMCA4MCAzNS44IDgwIDgwbDAgMjg4YzAgMjYuMi0xMi42IDQ5LjQtMzIgNjRsMCA0OGMwIDE3LjctMTQuMyAzMi0zMiAzMmwtMzIgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC0zMi0yNTYgMCAwIDMyYzAgMTcuNy0xNC4zIDMyLTMyIDMybC0zMiAwYy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTQ4QzEyLjYgNDE3LjQgMCAzOTQuMiAwIDM2OEwwIDgwem0xMjkuOSA3Mi4yTDExMiAyMjRsMjg4IDAtMTcuOS03MS44QzM3OC41IDEzOCAzNjUuNyAxMjggMzUxIDEyOGwtMTkwIDBjLTE0LjcgMC0yNy41IDEwLTMxIDI0LjJ6TTEyOCAzMjBhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHptMjg4IDMyYTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpcIl1cbn07XG5jb25zdCBmYUNhdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjYXQnLFxuICBpY29uOiBbNTc2LCA1MTIsIFsxMjgwMDhdLCBcImY2YmVcIiwgXCJNMzIwIDE5MmwxNy4xIDBjMjIuMSAzOC4zIDYzLjUgNjQgMTEwLjkgNjRjMTEgMCAyMS44LTEuNCAzMi00bDAgNCAwIDMyIDAgMTkyYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtMTQwLjhMMjgwIDQ0OGw1NiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC0xNDQgMGMtNTMgMC05Ni00My05Ni05NmwwLTIyMy41YzAtMTYuMS0xMi0yOS44LTI4LTMxLjhsLTcuOS0xYy0xNy41LTIuMi0zMC0xOC4yLTI3LjgtMzUuN3MxOC4yLTMwIDM1LjctMjcuOGw3LjkgMWM0OCA2IDg0LjEgNDYuOCA4NC4xIDk1LjNsMCA4NS4zYzM0LjQtNTEuNyA5My4yLTg1LjggMTYwLTg1Ljh6bTE2MCAyNi41czAgMCAwIDBjLTEwIDMuNS0yMC44IDUuNS0zMiA1LjVjLTI4LjQgMC01NC0xMi40LTcxLjYtMzJjMCAwIDAgMCAwIDBjLTMuNy00LjEtNy04LjUtOS45LTEzLjJDMzU3LjMgMTY0IDM1MiAxNDYuNiAzNTIgMTI4YzAgMCAwIDAgMCAwbDAtOTYgMC0yMCAwLTEuM0MzNTIgNC44IDM1Ni43IC4xIDM2Mi42IDBsLjIgMGMzLjMgMCA2LjQgMS42IDguNCA0LjJjMCAwIDAgMCAwIC4xTDM4NCAyMS4zbDI3LjIgMzYuM0w0MTYgNjRsNjQgMCA0LjgtNi40TDUxMiAyMS4zIDUyNC44IDQuM2MwIDAgMCAwIDAtLjFjMi0yLjYgNS4xLTQuMiA4LjQtNC4ybC4yIDBDNTM5LjMgLjEgNTQ0IDQuOCA1NDQgMTAuN2wwIDEuMyAwIDIwIDAgOTZjMCAxNy4zLTQuNiAzMy42LTEyLjYgNDcuNmMtMTEuMyAxOS44LTI5LjYgMzUuMi01MS40IDQyLjl6TTQzMiAxMjhhMTYgMTYgMCAxIDAgLTMyIDAgMTYgMTYgMCAxIDAgMzIgMHptNDggMTZhMTYgMTYgMCAxIDAgMC0zMiAxNiAxNiAwIDEgMCAwIDMyelwiXVxufTtcbmNvbnN0IGZhQW5jaG9yQ2lyY2xlRXhjbGFtYXRpb24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYW5jaG9yLWNpcmNsZS1leGNsYW1hdGlvbicsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTRhYlwiLCBcIk0zMjAgOTZhMzIgMzIgMCAxIDEgLTY0IDAgMzIgMzIgMCAxIDEgNjQgMHptMjEuMSA4MEMzNjcgMTU4LjggMzg0IDEyOS40IDM4NCA5NmMwLTUzLTQzLTk2LTk2LTk2cy05NiA0My05NiA5NmMwIDMzLjQgMTcgNjIuOCA0Mi45IDgwTDIyNCAxNzZjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsMzIgMCAwIDIwOC00OCAwYy01MyAwLTk2LTQzLTk2LTk2bDAtNi4xIDcgN2M5LjQgOS40IDI0LjYgOS40IDMzLjkgMHM5LjQtMjQuNiAwLTMzLjlMOTcgMjYzYy05LjQtOS40LTI0LjYtOS40LTMzLjkgMEw3IDMxOWMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwbDctNyAwIDYuMWMwIDg4LjQgNzEuNiAxNjAgMTYwIDE2MGw4MCAwIDgwIDBjOC4yIDAgMTYuMy0uNiAyNC4yLTEuOGMtMjIuMi0xNi4yLTQwLjQtMzcuNS01My02Mi4yTDMyMCA0NDhsMC04MCAwLTEyOCAzMiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC0xMC45IDB6TTQ5NiA1MTJhMTQ0IDE0NCAwIDEgMCAwLTI4OCAxNDQgMTQ0IDAgMSAwIDAgMjg4em0wLTk2YTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHptMC0xNDRjOC44IDAgMTYgNy4yIDE2IDE2bDAgODBjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZsMC04MGMwLTguOCA3LjItMTYgMTYtMTZ6XCJdXG59O1xuY29uc3QgZmFUcnVja0ZpZWxkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RydWNrLWZpZWxkJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlNThkXCIsIFwiTTMyIDk2YzAtMzUuMyAyOC43LTY0IDY0LTY0bDIyNCAwYzIzLjcgMCA0NC40IDEyLjkgNTUuNCAzMmw1MS44IDBjMjUuMyAwIDQ4LjIgMTQuOSA1OC41IDM4bDUyLjggMTE4LjhjLjUgMS4xIC45IDIuMSAxLjMgMy4ybDQuMiAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTMyIDBjMCA1My00MyA5Ni05NiA5NnMtOTYtNDMtOTYtOTZsLTEyOCAwYzAgNTMtNDMgOTYtOTYgOTZzLTk2LTQzLTk2LTk2bC0zMiAwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDAtMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtOTZjMC0xNy43IDE0LjMtMzIgMzItMzJsMC0zMnpNMzg0IDIyNGw4NS45IDAtNDIuNy05NkwzODQgMTI4bDAgOTZ6TTE2MCA0MzJhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2em0zNjgtNDhhNDggNDggMCAxIDAgLTk2IDAgNDggNDggMCAxIDAgOTYgMHpcIl1cbn07XG5jb25zdCBmYVJvdXRlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3JvdXRlJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNGQ3XCIsIFwiTTUxMiA5NmMwIDUwLjItNTkuMSAxMjUuMS04NC42IDE1NWMtMy44IDQuNC05LjQgNi4xLTE0LjUgNUwzMjAgMjU2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDk2IDBjNTMgMCA5NiA0MyA5NiA5NnMtNDMgOTYtOTYgOTZsLTI3Ni40IDBjOC43LTkuOSAxOS4zLTIyLjYgMzAtMzYuOGM2LjMtOC40IDEyLjgtMTcuNiAxOS0yNy4yTDQxNiA0NDhjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTk2IDBjLTUzIDAtOTYtNDMtOTYtOTZzNDMtOTYgOTYtOTZsMzkuOCAwYy0yMS0zMS41LTM5LjgtNjcuNy0zOS44LTk2YzAtNTMgNDMtOTYgOTYtOTZzOTYgNDMgOTYgOTZ6TTExNy4xIDQ4OS4xYy0zLjggNC4zLTcuMiA4LjEtMTAuMSAxMS4zbC0xLjggMi0uMi0uMmMtNiA0LjYtMTQuNiA0LTIwLTEuOEM1OS44IDQ3MyAwIDQwMi41IDAgMzUyYzAtNTMgNDMtOTYgOTYtOTZzOTYgNDMgOTYgOTZjMCAzMC0yMS4xIDY3LTQzLjUgOTcuOWMtMTAuNyAxNC43LTIxLjcgMjgtMzAuOCAzOC41bC0uNiAuN3pNMTI4IDM1MmEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwek00MTYgMTI4YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpcIl1cbn07XG5jb25zdCBmYUNsaXBib2FyZFF1ZXN0aW9uID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NsaXBib2FyZC1xdWVzdGlvbicsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZTRlM1wiLCBcIk0xOTIgMGMtNDEuOCAwLTc3LjQgMjYuNy05MC41IDY0TDY0IDY0QzI4LjcgNjQgMCA5Mi43IDAgMTI4TDAgNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0bDI1NiAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMzIwYzAtMzUuMy0yOC43LTY0LTY0LTY0bC0zNy41IDBDMjY5LjQgMjYuNyAyMzMuOCAwIDE5MiAwem0wIDY0YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpNMTA1LjggMjI5LjNjNy45LTIyLjMgMjkuMS0zNy4zIDUyLjgtMzcuM2w1OC4zIDBjMzQuOSAwIDYzLjEgMjguMyA2My4xIDYzLjFjMCAyMi42LTEyLjEgNDMuNS0zMS43IDU0LjhMMjE2IDMyOC40Yy0uMiAxMy0xMC45IDIzLjYtMjQgMjMuNmMtMTMuMyAwLTI0LTEwLjctMjQtMjRsMC0xMy41YzAtOC42IDQuNi0xNi41IDEyLjEtMjAuOGw0NC4zLTI1LjRjNC43LTIuNyA3LjYtNy43IDcuNi0xMy4xYzAtOC40LTYuOC0xNS4xLTE1LjEtMTUuMWwtNTguMyAwYy0zLjQgMC02LjQgMi4xLTcuNSA1LjNsLS40IDEuMmMtNC40IDEyLjUtMTguMiAxOS0zMC42IDE0LjZzLTE5LTE4LjItMTQuNi0zMC42bC40LTEuMnpNMTYwIDQxNmEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwelwiXVxufTtcbmNvbnN0IGZhUGFub3JhbWEgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGFub3JhbWEnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImUyMDlcIiwgXCJNNDUuNiAzMkMyMC40IDMyIDAgNTIuNCAwIDc3LjZMMCA0MzQuNEMwIDQ1OS42IDIwLjQgNDgwIDQ1LjYgNDgwYzUuMSAwIDEwLS44IDE0LjctMi40Qzc0LjYgNDcyLjggMTc3LjYgNDQwIDMyMCA0NDBzMjQ1LjQgMzIuOCAyNTkuNiAzNy42YzQuNyAxLjYgOS43IDIuNCAxNC43IDIuNGMyNS4yIDAgNDUuNi0yMC40IDQ1LjYtNDUuNmwwLTM1Ni43QzY0MCA1Mi40IDYxOS42IDMyIDU5NC40IDMyYy01IDAtMTAgLjgtMTQuNyAyLjRDNTY1LjQgMzkuMiA0NjIuNCA3MiAzMjAgNzJTNzQuNiAzOS4yIDYwLjQgMzQuNEM1NS42IDMyLjggNTAuNyAzMiA0NS42IDMyek05NiAxNjBhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMjcyIDBjNy45IDAgMTUuNCAzLjkgMTkuOCAxMC41TDUxMi4zIDM1M2M1LjQgOCA1LjYgMTguNCAuNCAyNi41cy0xNC43IDEyLjMtMjQuMiAxMC43QzQ0Mi43IDM4Mi40IDM4NS4yIDM3NiAzMjAgMzc2Yy02NS42IDAtMTIzLjQgNi41LTE2OS4zIDE0LjRjLTkuOCAxLjctMTkuNy0yLjktMjQuNy0xMS41cy00LjMtMTkuNCAxLjktMjcuMkwxOTcuMyAyNjVjNC42LTUuNyAxMS40LTkgMTguNy05czE0LjIgMy4zIDE4LjcgOWwyNi40IDMzLjEgODctMTI3LjZjNC41LTYuNiAxMS45LTEwLjUgMTkuOC0xMC41elwiXVxufTtcbmNvbnN0IGZhQ29tbWVudE1lZGljYWwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY29tbWVudC1tZWRpY2FsJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmN2Y1XCIsIFwiTTI1NiA0NDhjMTQxLjQgMCAyNTYtOTMuMSAyNTYtMjA4UzM5Ny40IDMyIDI1NiAzMlMwIDEyNS4xIDAgMjQwYzAgNDUuMSAxNy43IDg2LjggNDcuNyAxMjAuOWMtMS45IDI0LjUtMTEuNCA0Ni4zLTIxLjQgNjIuOWMtNS41IDkuMi0xMS4xIDE2LjYtMTUuMiAyMS42Yy0yLjEgMi41LTMuNyA0LjQtNC45IDUuN2MtLjYgLjYtMSAxLjEtMS4zIDEuNGwtLjMgLjNjMCAwIDAgMCAwIDBjMCAwIDAgMCAwIDBzMCAwIDAgMHMwIDAgMCAwYy00LjYgNC42LTUuOSAxMS40LTMuNCAxNy40YzIuNSA2IDguMyA5LjkgMTQuOCA5LjljMjguNyAwIDU3LjYtOC45IDgxLjYtMTkuM2MyMi45LTEwIDQyLjQtMjEuOSA1NC4zLTMwLjZjMzEuOCAxMS41IDY3IDE3LjkgMTA0LjEgMTcuOXpNMjI0IDE2MGMwLTguOCA3LjItMTYgMTYtMTZsMzIgMGM4LjggMCAxNiA3LjIgMTYgMTZsMCA0OCA0OCAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDMyYzAgOC44LTcuMiAxNi0xNiAxNmwtNDggMCAwIDQ4YzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtNDgtNDggMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzJjMC04LjggNy4yLTE2IDE2LTE2bDQ4IDAgMC00OHpcIl1cbn07XG5jb25zdCBmYVRlZXRoT3BlbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0ZWV0aC1vcGVuJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmNjJmXCIsIFwiTTk2IDMyQzQzIDMyIDAgNzUgMCAxMjhsMCA2NGMwIDM1LjMgMjguNyA2NCA2NCA2NGw0NDggMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTY0YzAtNTMtNDMtOTYtOTYtOTZMOTYgMzJ6TTIyNCA5NmMyNi41IDAgNDggMjEuNSA0OCA0OGwwIDU2YzAgMTMuMy0xMC43IDI0LTI0IDI0bC00OCAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNGwwLTU2YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4em04MCA0OGMwLTI2LjUgMjEuNS00OCA0OC00OHM0OCAyMS41IDQ4IDQ4bDAgNTZjMCAxMy4zLTEwLjcgMjQtMjQgMjRsLTQ4IDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0bDAtNTZ6TTk2IDEyOGMyNi41IDAgNDggMjEuNSA0OCA0OGwwIDI0YzAgMTMuMy0xMC43IDI0LTI0IDI0bC00OCAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNGwwLTI0YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4em0zMzYgNDhjMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OGwwIDI0YzAgMTMuMy0xMC43IDI0LTI0IDI0bC00OCAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNGwwLTI0ek05NiA0ODBsMzg0IDBjNTMgMCA5Ni00MyA5Ni05NmwwLTMyYzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDI4OGMtMzUuMyAwLTY0IDI4LjctNjQgNjRsMCAzMmMwIDUzIDQzIDk2IDk2IDk2em0wLTY0Yy0yNi41IDAtNDgtMjEuNS00OC00OGwwLTI0YzAtMTMuMyAxMC43LTI0IDI0LTI0bDQ4IDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRsMCAyNGMwIDI2LjUtMjEuNSA0OC00OCA0OHptODAtNDhsMC0yNGMwLTEzLjMgMTAuNy0yNCAyNC0yNGw0OCAwYzEzLjMgMCAyNCAxMC43IDI0IDI0bDAgMjRjMCAyNi41LTIxLjUgNDgtNDggNDhzLTQ4LTIxLjUtNDgtNDh6bTE3NiA0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhsMC0yNGMwLTEzLjMgMTAuNy0yNCAyNC0yNGw0OCAwYzEzLjMgMCAyNCAxMC43IDI0IDI0bDAgMjRjMCAyNi41LTIxLjUgNDgtNDggNDh6bTgwLTQ4bDAtMjRjMC0xMy4zIDEwLjctMjQgMjQtMjRsNDggMGMxMy4zIDAgMjQgMTAuNyAyNCAyNGwwIDI0YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4cy00OC0yMS41LTQ4LTQ4elwiXVxufTtcbmNvbnN0IGZhRmlsZUNpcmNsZU1pbnVzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZpbGUtY2lyY2xlLW1pbnVzJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJlNGVkXCIsIFwiTTAgNjRDMCAyOC43IDI4LjcgMCA2NCAwTDIyNCAwbDAgMTI4YzAgMTcuNyAxNC4zIDMyIDMyIDMybDEyOCAwIDAgMzguNkMzMTAuMSAyMTkuNSAyNTYgMjg3LjQgMjU2IDM2OGMwIDU5LjEgMjkuMSAxMTEuMyA3My43IDE0My4zYy0zLjIgLjUtNi40IC43LTkuNyAuN0w2NCA1MTJjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgNjR6bTM4NCA2NGwtMTI4IDBMMjU2IDAgMzg0IDEyOHpNMjg4IDM2OGExNDQgMTQ0IDAgMSAxIDI4OCAwIDE0NCAxNDQgMCAxIDEgLTI4OCAwem0yMjQgMGMwLTguOC03LjItMTYtMTYtMTZsLTEyOCAwYy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2bDEyOCAwYzguOCAwIDE2LTcuMiAxNi0xNnpcIl1cbn07XG5jb25zdCBmYVRhZ3MgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndGFncycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjAyY1wiLCBcIk0zNDUgMzkuMUw0NzIuOCAxNjguNGM1Mi40IDUzIDUyLjQgMTM4LjIgMCAxOTEuMkwzNjAuOCA0NzIuOWMtOS4zIDkuNC0yNC41IDkuNS0zMy45IC4ycy05LjUtMjQuNS0uMi0zMy45TDQzOC42IDMyNS45YzMzLjktMzQuMyAzMy45LTg5LjQgMC0xMjMuN0wzMTAuOSA3Mi45Yy05LjMtOS40LTkuMi0yNC42IC4yLTMzLjlzMjQuNi05LjIgMzMuOSAuMnpNMCAyMjkuNUwwIDgwQzAgNTMuNSAyMS41IDMyIDQ4IDMybDE0OS41IDBjMTcgMCAzMy4zIDYuNyA0NS4zIDE4LjdsMTY4IDE2OGMyNSAyNSAyNSA2NS41IDAgOTAuNUwyNzcuMyA0NDIuN2MtMjUgMjUtNjUuNSAyNS05MC41IDBsLTE2OC0xNjhDNi43IDI2Mi43IDAgMjQ2LjUgMCAyMjkuNXpNMTQ0IDE0NGEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwelwiXVxufTtcbmNvbnN0IGZhV2luZUdsYXNzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3dpbmUtZ2xhc3MnLFxuICBpY29uOiBbMzIwLCA1MTIsIFsxMjc4NjNdLCBcImY0ZTNcIiwgXCJNMzIuMSAyOS4zQzMzLjUgMTIuOCA0Ny40IDAgNjQgMEwyNTYgMGMxNi42IDAgMzAuNSAxMi44IDMxLjkgMjkuM2wxNCAxNjguNGM2IDcyLTQyLjUgMTM1LjItMTA5LjkgMTUwLjZsMCA5OS42IDQ4IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTgwIDAtODAgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmw0OCAwIDAtOTkuNkM2MC42IDMzMyAxMi4xIDI2OS44IDE4LjEgMTk3LjhsMTQtMTY4LjR6bTU2IDk4LjdsMTQzLjggMC01LjMtNjRMOTMuNCA2NGwtNS4zIDY0elwiXVxufTtcbmNvbnN0IGZhRm9yd2FyZEZhc3QgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZm9yd2FyZC1mYXN0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbOTE5NywgXCJmYXN0LWZvcndhcmRcIl0sIFwiZjA1MFwiLCBcIk0xOC40IDQ0NWMxMS4yIDUuMyAyNC41IDMuNiAzNC4xLTQuNEwyMjQgMjk3LjcgMjI0IDQxNmMwIDEyLjQgNy4yIDIzLjcgMTguNCAyOXMyNC41IDMuNiAzNC4xLTQuNEw0NDggMjk3LjcgNDQ4IDQxNmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMzIwYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMybDAgMTE4LjNMMjc2LjUgNzEuNGMtOS41LTcuOS0yMi44LTkuNy0zNC4xLTQuNFMyMjQgODMuNiAyMjQgOTZsMCAxMTguM0w1Mi41IDcxLjRjLTkuNS03LjktMjIuOC05LjctMzQuMS00LjRTMCA4My42IDAgOTZMMCA0MTZjMCAxMi40IDcuMiAyMy43IDE4LjQgMjl6XCJdXG59O1xuY29uc3QgZmFGYXN0Rm9yd2FyZCA9IGZhRm9yd2FyZEZhc3Q7XG5jb25zdCBmYUZhY2VNZWhCbGFuayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmYWNlLW1laC1ibGFuaycsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyODU2NiwgXCJtZWgtYmxhbmtcIl0sIFwiZjVhNFwiLCBcIk0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6bTIwOC40LTQ4YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6bTEyOCAzMmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6XCJdXG59O1xuY29uc3QgZmFNZWhCbGFuayA9IGZhRmFjZU1laEJsYW5rO1xuY29uc3QgZmFTcXVhcmVQYXJraW5nID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NxdWFyZS1wYXJraW5nJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbMTI3MzU5LCBcInBhcmtpbmdcIl0sIFwiZjU0MFwiLCBcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2TDAgNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0bDMyMCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMzIwYzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDMyek0xOTIgMjU2bDQ4IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTQ4IDAgMCA2NHptNDggNjRsLTQ4IDAgMCAzMmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTY0IDAtMTIwYzAtMjIuMSAxNy45LTQwIDQwLTQwbDcyIDBjNTMgMCA5NiA0MyA5NiA5NnMtNDMgOTYtOTYgOTZ6XCJdXG59O1xuY29uc3QgZmFQYXJraW5nID0gZmFTcXVhcmVQYXJraW5nO1xuY29uc3QgZmFIb3VzZVNpZ25hbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdob3VzZS1zaWduYWwnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImUwMTJcIiwgXCJNMzU3LjcgOC41Yy0xMi4zLTExLjMtMzEuMi0xMS4zLTQzLjQgMGwtMjA4IDE5MmMtOS40IDguNi0xMi43IDIyLTguNSAzNGM4Ny4xIDI1LjMgMTU1LjYgOTQuMiAxODAuMyAxODEuNkw0NjQgNDE2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4bDAtMTEyIDMyIDBjMTMuMiAwIDI1LTguMSAyOS44LTIwLjNzMS42LTI2LjItOC4xLTM1LjJsLTIwOC0xOTJ6TTI4OCAyMDhjMC04LjggNy4yLTE2IDE2LTE2bDY0IDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgNjRjMCA4LjgtNy4yIDE2LTE2IDE2bC02NCAwYy04LjggMC0xNi03LjItMTYtMTZsMC02NHpNMjQgMjU2Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0YzEwMS42IDAgMTg0IDgyLjQgMTg0IDE4NGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0YzAtMTI4LjEtMTAzLjktMjMyLTIzMi0yMzJ6bTggMjU2YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpNMCAzNzZjMCAxMy4zIDEwLjcgMjQgMjQgMjRjNDguNiAwIDg4IDM5LjQgODggODhjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGMwLTc1LjEtNjAuOS0xMzYtMTM2LTEzNmMtMTMuMyAwLTI0IDEwLjctMjQgMjR6XCJdXG59O1xuY29uc3QgZmFCYXJzUHJvZ3Jlc3MgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYmFycy1wcm9ncmVzcycsXG4gIGljb246IFs1MTIsIDUxMiwgW1widGFza3MtYWx0XCJdLCBcImY4MjhcIiwgXCJNNDQ4IDE2MGwtMTI4IDAgMC0zMiAxMjggMCAwIDMyek00OCA2NEMyMS41IDY0IDAgODUuNSAwIDExMmwwIDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4bDQxNiAwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4bDAtNjRjMC0yNi41LTIxLjUtNDgtNDgtNDhMNDggNjR6TTQ0OCAzNTJsMCAzMi0yNTYgMCAwLTMyIDI1NiAwek00OCAyODhjLTI2LjUgMC00OCAyMS41LTQ4IDQ4bDAgNjRjMCAyNi41IDIxLjUgNDggNDggNDhsNDE2IDBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhsMC02NGMwLTI2LjUtMjEuNS00OC00OC00OEw0OCAyODh6XCJdXG59O1xuY29uc3QgZmFUYXNrc0FsdCA9IGZhQmFyc1Byb2dyZXNzO1xuY29uc3QgZmFGYXVjZXREcmlwID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZhdWNldC1kcmlwJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI4Njg4XSwgXCJlMDA2XCIsIFwiTTIyNCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgMTIgOTYtMTJjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJMMjU2IDg0bC0zMS0zLjktMS0uMS0xIC4xTDE5MiA4NCA5NiA5NkM3OC4zIDk2IDY0IDgxLjcgNjQgNjRzMTQuMy0zMiAzMi0zMmw5NiAxMiAwLTEyYzAtMTcuNyAxNC4zLTMyIDMyLTMyek0wIDIyNGMwLTE3LjcgMTQuMy0zMiAzMi0zMmw5NiAwIDIyLjYtMjIuNmM2LTYgMTQuMS05LjQgMjIuNi05LjRsMTguNyAwIDAtNDMuOCAzMi00IDMyIDQgMCA0My44IDE4LjcgMGM4LjUgMCAxNi42IDMuNCAyMi42IDkuNEwzMjAgMTkybDMyIDBjODguNCAwIDE2MCA3MS42IDE2MCAxNjBjMCAxNy43LTE0LjMgMzItMzIgMzJsLTY0IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMycy0xNC4zLTMyLTMyLTMybC0zNi4xIDBjLTIwLjIgMjktNTMuOSA0OC05MS45IDQ4cy03MS43LTE5LTkxLjktNDhMMzIgMzIwYy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTY0ek00MzYuOCA0MjMuNGMxLjktNC41IDYuMy03LjQgMTEuMi03LjRzOS4yIDIuOSAxMS4yIDcuNGwxOC4yIDQyLjRjMS44IDQuMSAyLjcgOC42IDIuNyAxMy4xbDAgMS4yYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtMS4yYzAtNC41IC45LTguOSAyLjctMTMuMWwxOC4yLTQyLjR6XCJdXG59O1xuY29uc3QgZmFDYXJ0RmxhdGJlZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjYXJ0LWZsYXRiZWQnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtcImRvbGx5LWZsYXRiZWRcIl0sIFwiZjQ3NFwiLCBcIk0zMiAwQzE0LjMgMCAwIDE0LjMgMCAzMlMxNC4zIDY0IDMyIDY0bDE2IDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgMjg4YzAgNDQuMiAzNS44IDgwIDgwIDgwbDE4LjcgMGMtMS44IDUtMi43IDEwLjQtMi43IDE2YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4czQ4LTIxLjUgNDgtNDhjMC01LjYtMS0xMS0yLjctMTZsMTk3LjUgMGMtMS44IDUtMi43IDEwLjQtMi43IDE2YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4czQ4LTIxLjUgNDgtNDhjMC01LjYtMS0xMS0yLjctMTZsNjYuNyAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC00NjQgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMjg4QzEyOCAzNS44IDkyLjIgMCA0OCAwTDMyIDB6TTE5MiA4MGwwIDE5MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGwzMjAgMGMyNi41IDAgNDgtMjEuNSA0OC00OGwwLTE5MmMwLTI2LjUtMjEuNS00OC00OC00OGwtOTYgMCAwIDE0NGMwIDUuOS0zLjIgMTEuMy04LjUgMTQuMXMtMTEuNSAyLjUtMTYuNC0uOEw0MDAgMTYzLjJsLTM5LjEgMjYuMWMtNC45IDMuMy0xMS4yIDMuNi0xNi40IC44cy04LjUtOC4yLTguNS0xNC4xbDAtMTQ0LTk2IDBjLTI2LjUgMC00OCAyMS41LTQ4IDQ4elwiXVxufTtcbmNvbnN0IGZhRG9sbHlGbGF0YmVkID0gZmFDYXJ0RmxhdGJlZDtcbmNvbnN0IGZhQmFuU21va2luZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdiYW4tc21va2luZycsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyODY4NSwgXCJzbW9raW5nLWJhblwiXSwgXCJmNTRkXCIsIFwiTTk5LjUgMTQ0LjhMMTc4LjcgMjI0bDk2IDk2IDkyLjUgOTIuNUMzMzUuOSA0MzQuOSAyOTcuNSA0NDggMjU2IDQ0OEMxNTAgNDQ4IDY0IDM2MiA2NCAyNTZjMC00MS41IDEzLjEtNzkuOSAzNS41LTExMS4yek0zMzMuMyAyODhsLTMyLTMyIDgyLjcgMCAwIDMyLTUwLjcgMHptMzIgMzJsMzQuNyAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTY0YzAtOC44LTcuMi0xNi0xNi0xNmwtMTMwLjcgMEwxNDQuOCA5OS41QzE3Ni4xIDc3LjEgMjE0LjUgNjQgMjU2IDY0YzEwNiAwIDE5MiA4NiAxOTIgMTkyYzAgNDEuNS0xMy4xIDc5LjktMzUuNSAxMTEuMkwzNjUuMyAzMjB6TTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0yNzIgOTZjLTguOCAwLTE2IDcuMi0xNiAxNmMwIDI2LjUgMjEuNSA0OCA0OCA0OGwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNnM3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4bC0zMiAwYy04LjggMC0xNi03LjItMTYtMTZzLTcuMi0xNi0xNi0xNnpNMjI5LjUgMzIwbC05Ni05NkwxMTIgMjI0Yy04LjggMC0xNiA3LjItMTYgMTZsMCA2NGMwIDguOCA3LjIgMTYgMTYgMTZsMTE3LjUgMHpcIl1cbn07XG5jb25zdCBmYVNtb2tpbmdCYW4gPSBmYUJhblNtb2tpbmc7XG5jb25zdCBmYVRlcm1pbmFsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3Rlcm1pbmFsJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmMTIwXCIsIFwiTTkuNCA4Ni42Qy0zLjEgNzQuMS0zLjEgNTMuOSA5LjQgNDEuNHMzMi44LTEyLjUgNDUuMyAwbDE5MiAxOTJjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNsLTE5MiAxOTJjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwcy0xMi41LTMyLjggMC00NS4zTDE3OC43IDI1NiA5LjQgODYuNnpNMjU2IDQxNmwyODggMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtMjg4IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJ6XCJdXG59O1xuY29uc3QgZmFNb2JpbGVCdXR0b24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbW9iaWxlLWJ1dHRvbicsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjEwYlwiLCBcIk04MCAwQzQ0LjcgMCAxNiAyOC43IDE2IDY0bDAgMzg0YzAgMzUuMyAyOC43IDY0IDY0IDY0bDIyNCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMzg0YzAtMzUuMy0yOC43LTY0LTY0LTY0TDgwIDB6TTE5MiA0MDBhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0elwiXVxufTtcbmNvbnN0IGZhSG91c2VNZWRpY2FsRmxhZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdob3VzZS1tZWRpY2FsLWZsYWcnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU1MTRcIiwgXCJNNDgwIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMTEyIDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgMTI4YzAgOC44LTcuMiAxNi0xNiAxNmwtMTEyIDAgMCAzMjAtNjQgMCAwLTMyMCAwLTE2MGMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNMjc2LjggMzkuN0w0MTYgMTU5bDAgMzUzIDEgMC0uMiAwTDk2IDUxMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC0xOTItMzIgMGMtMTMuNCAwLTI1LjQtOC4zLTMwLTIwLjlzLTEtMjYuNyA5LjItMzUuNGwyMjQtMTkyYzEyLTEwLjMgMjkuNy0xMC4zIDQxLjcgMHpNMjI0IDIwOGwwIDQ4LTQ4IDBjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDMyYzAgOC44IDcuMiAxNiAxNiAxNmw0OCAwIDAgNDhjMCA4LjggNy4yIDE2IDE2IDE2bDMyIDBjOC44IDAgMTYtNy4yIDE2LTE2bDAtNDggNDggMGM4LjggMCAxNi03LjIgMTYtMTZsMC0zMmMwLTguOC03LjItMTYtMTYtMTZsLTQ4IDAgMC00OGMwLTguOC03LjItMTYtMTYtMTZsLTMyIDBjLTguOCAwLTE2IDcuMi0xNiAxNnpcIl1cbn07XG5jb25zdCBmYUJhc2tldFNob3BwaW5nID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Jhc2tldC1zaG9wcGluZycsXG4gIGljb246IFs1NzYsIDUxMiwgW1wic2hvcHBpbmctYmFza2V0XCJdLCBcImYyOTFcIiwgXCJNMjUzLjMgMzUuMWM2LjEtMTEuOCAxLjUtMjYuMy0xMC4yLTMyLjRzLTI2LjMtMS41LTMyLjQgMTAuMkwxMTcuNiAxOTIgMzIgMTkyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyTDgzLjkgNDYzLjVDOTEgNDkyIDExNi42IDUxMiAxNDYgNTEyTDQzMCA1MTJjMjkuNCAwIDU1LTIwIDYyLjEtNDguNUw1NDQgMjU2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC04NS42IDBMMzY1LjMgMTIuOUMzNTkuMiAxLjIgMzQ0LjctMy40IDMzMi45IDIuN3MtMTYuMyAyMC42LTEwLjIgMzIuNEw0MDQuMyAxOTJsLTIzMi42IDBMMjUzLjMgMzUuMXpNMTkyIDMwNGwwIDk2YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2bDAtOTZjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnptOTYtMTZjOC44IDAgMTYgNy4yIDE2IDE2bDAgOTZjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZsMC05NmMwLTguOCA3LjItMTYgMTYtMTZ6bTEyOCAxNmwwIDk2YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2bDAtOTZjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnpcIl1cbn07XG5jb25zdCBmYVNob3BwaW5nQmFza2V0ID0gZmFCYXNrZXRTaG9wcGluZztcbmNvbnN0IGZhVGFwZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0YXBlJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmNGRiXCIsIFwiTTM4MC44IDQxNmM0MS41LTQwLjcgNjcuMi05Ny4zIDY3LjItMTYwQzQ0OCAxMzIuMyAzNDcuNyAzMiAyMjQgMzJTMCAxMzIuMyAwIDI1NlMxMDAuMyA0ODAgMjI0IDQ4MGwzMjAgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtMTYzLjIgMHpNMjI0IDE2MGE5NiA5NiAwIDEgMSAwIDE5MiA5NiA5NiAwIDEgMSAwLTE5MnptNjQgOTZhNjQgNjQgMCAxIDAgLTEyOCAwIDY0IDY0IDAgMSAwIDEyOCAwelwiXVxufTtcbmNvbnN0IGZhQnVzU2ltcGxlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2J1cy1zaW1wbGUnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtcImJ1cy1hbHRcIl0sIFwiZjU1ZVwiLCBcIk0yMjQgMEMzNDguOCAwIDQ0OCAzNS4yIDQ0OCA4MGwwIDE2IDAgMzIwYzAgMTcuNy0xNC4zIDMyLTMyIDMybDAgMzJjMCAxNy43LTE0LjMgMzItMzIgMzJsLTMyIDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtMzItMTkyIDAgMCAzMmMwIDE3LjctMTQuMyAzMi0zMiAzMmwtMzIgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC0zMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJMMCA5NiAwIDgwQzAgMzUuMiA5OS4yIDAgMjI0IDB6TTY0IDEyOGwwIDEyOGMwIDE3LjcgMTQuMyAzMiAzMiAzMmwyNTYgMGMxNy43IDAgMzItMTQuMyAzMi0zMmwwLTEyOGMwLTE3LjctMTQuMy0zMi0zMi0zMkw5NiA5NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6TTgwIDQwMGEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6bTI4OCAwYTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpcIl1cbn07XG5jb25zdCBmYUJ1c0FsdCA9IGZhQnVzU2ltcGxlO1xuY29uc3QgZmFFeWUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZXllJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbMTI4MDY1XSwgXCJmMDZlXCIsIFwiTTI4OCAzMmMtODAuOCAwLTE0NS41IDM2LjgtMTkyLjYgODAuNkM0OC42IDE1NiAxNy4zIDIwOCAyLjUgMjQzLjdjLTMuMyA3LjktMy4zIDE2LjcgMCAyNC42QzE3LjMgMzA0IDQ4LjYgMzU2IDk1LjQgMzk5LjRDMTQyLjUgNDQzLjIgMjA3LjIgNDgwIDI4OCA0ODBzMTQ1LjUtMzYuOCAxOTIuNi04MC42YzQ2LjgtNDMuNSA3OC4xLTk1LjQgOTMtMTMxLjFjMy4zLTcuOSAzLjMtMTYuNyAwLTI0LjZjLTE0LjktMzUuNy00Ni4yLTg3LjctOTMtMTMxLjFDNDMzLjUgNjguOCAzNjguOCAzMiAyODggMzJ6TTE0NCAyNTZhMTQ0IDE0NCAwIDEgMSAyODggMCAxNDQgMTQ0IDAgMSAxIC0yODggMHptMTQ0LTY0YzAgMzUuMy0yOC43IDY0LTY0IDY0Yy03LjEgMC0xMy45LTEuMi0yMC4zLTMuM2MtNS41LTEuOC0xMS45IDEuNi0xMS43IDcuNGMuMyA2LjkgMS4zIDEzLjggMy4yIDIwLjdjMTMuNyA1MS4yIDY2LjQgODEuNiAxMTcuNiA2Ny45czgxLjYtNjYuNCA2Ny45LTExNy42Yy0xMS4xLTQxLjUtNDcuOC02OS40LTg4LjYtNzEuMWMtNS44LS4yLTkuMiA2LjEtNy40IDExLjdjMi4xIDYuNCAzLjMgMTMuMiAzLjMgMjAuM3pcIl1cbn07XG5jb25zdCBmYUZhY2VTYWRDcnkgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmFjZS1zYWQtY3J5JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI4NTU3LCBcInNhZC1jcnlcIl0sIFwiZjViM1wiLCBcIk0zNTIgNDkzLjRjLTI5LjYgMTItNjIuMSAxOC42LTk2IDE4LjZzLTY2LjQtNi42LTk2LTE4LjZMMTYwIDI4OGMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNmwwIDE4OS44QzUxLjUgNDMzLjUgMCAzNTAuOCAwIDI1NkMwIDExNC42IDExNC42IDAgMjU2IDBTNTEyIDExNC42IDUxMiAyNTZjMCA5NC44LTUxLjUgMTc3LjUtMTI4IDIyMS44TDM4NCAyODhjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZsMCAyMDUuNHpNMTk1LjIgMjMzLjZjNS4zIDcuMSAxNS4zIDguNSAyMi40IDMuMnM4LjUtMTUuMyAzLjItMjIuNGMtMzAuNC00MC41LTkxLjItNDAuNS0xMjEuNiAwYy01LjMgNy4xLTMuOSAxNy4xIDMuMiAyMi40czE3LjEgMy45IDIyLjQtMy4yYzE3LjYtMjMuNSA1Mi44LTIzLjUgNzAuNCAwem0xMjEuNiAwYzE3LjYtMjMuNSA1Mi44LTIzLjUgNzAuNCAwYzUuMyA3LjEgMTUuMyA4LjUgMjIuNCAzLjJzOC41LTE1LjMgMy4yLTIyLjRjLTMwLjQtNDAuNS05MS4yLTQwLjUtMTIxLjYgMGMtNS4zIDcuMS0zLjkgMTcuMSAzLjIgMjIuNHMxNy4xIDMuOSAyMi40LTMuMnpNMjA4IDMzNmwwIDMyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4czQ4LTIxLjUgNDgtNDhsMC0zMmMwLTI2LjUtMjEuNS00OC00OC00OHMtNDggMjEuNS00OCA0OHpcIl1cbn07XG5jb25zdCBmYVNhZENyeSA9IGZhRmFjZVNhZENyeTtcbmNvbnN0IGZhQXVkaW9EZXNjcmlwdGlvbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhdWRpby1kZXNjcmlwdGlvbicsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjI5ZVwiLCBcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2TDAgNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0bDQ0OCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMzIwYzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDMyek0yMTMuNSAxNzMuM2w3MiAxNDRjNS45IDExLjkgMS4xIDI2LjMtMTAuNyAzMi4ycy0yNi4zIDEuMS0zMi4yLTEwLjdsLTkuNC0xOC45LTgyLjIgMC05LjQgMTguOWMtNS45IDExLjktMjAuMyAxNi43LTMyLjIgMTAuN3MtMTYuNy0yMC4zLTEwLjctMzIuMmw3Mi0xNDRjNC4xLTguMSAxMi40LTEzLjMgMjEuNS0xMy4zczE3LjQgNS4xIDIxLjUgMTMuM3ptLS40IDEwNi42TDE5MiAyMzcuN2wtMjEuMSA0Mi4yIDQyLjIgMHpNMzA0IDE4NGMwLTEzLjMgMTAuNy0yNCAyNC0yNGw1NiAwYzUzIDAgOTYgNDMgOTYgOTZzLTQzIDk2LTk2IDk2bC01NiAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNGwwLTE0NHptNDggMjRsMCA5NiAzMiAwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4cy0yMS41LTQ4LTQ4LTQ4bC0zMiAwelwiXVxufTtcbmNvbnN0IGZhUGVyc29uTWlsaXRhcnlUb1BlcnNvbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwZXJzb24tbWlsaXRhcnktdG8tcGVyc29uJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJlNTRjXCIsIFwiTTcxIDEyLjVjLTguNiAxLTE1IDguMi0xNSAxNi44YzAgOS4zIDcuNSAxNi44IDE2LjcgMTYuOWwxMTEuNCAwYzguOC0uMSAxNS45LTcuMiAxNS45LTE2TDIwMCAxNmMwLTkuNS04LjMtMTctMTcuOC0xNS45TDcxIDEyLjV6TTE4OS41IDc4LjFsLTEyMi45IDBDNjQuOSA4My44IDY0IDg5LjggNjQgOTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRzNjQtMjguNyA2NC02NGMwLTYuMi0uOS0xMi4yLTIuNS0xNy45ek0zMiAyNTZsMCAzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMmwxMjggMGMxLjggMCAzLjUtLjEgNS4yLS40TDUzIDIwOC42QzQwLjEgMjIwLjMgMzIgMjM3LjIgMzIgMjU2em0xOTAuMiA0Mi41YzEuMS0zLjMgMS44LTYuOCAxLjgtMTAuNWwwLTMyYzAtMzUuMy0yOC43LTY0LTY0LTY0bC02NCAwYy0zLjcgMC03LjQgLjMtMTAuOSAuOUwyMjIuMiAyOTguNXpNMzg0IDE2MGE2NCA2NCAwIDEgMCAwLTEyOCA2NCA2NCAwIDEgMCAwIDEyOHptLTMyIDMyYy0zNS4zIDAtNjQgMjguNy02NCA2NGwwIDMyYzAgMTcuNyAxNC4zIDMyIDMyIDMybDEyOCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMybDAtMzJjMC0zNS4zLTI4LjctNjQtNjQtNjRsLTY0IDB6TTIxNS44IDQ1MC4xYzUuMi00LjYgOC4yLTExLjEgOC4yLTE4LjFzLTMtMTMuNS04LjItMTguMWwtNjQtNTZjLTcuMS02LjItMTcuMS03LjctMjUuNy0zLjhTMTEyIDM2Ni42IDExMiAzNzZsMCAzMi04OCAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0bDg4IDAgMCAzMmMwIDkuNCA1LjUgMTggMTQuMSAyMS45czE4LjYgMi40IDI1LjctMy44bDY0LTU2ek0yODggNDMxLjljMCA2LjkgMi45IDEzLjUgOC4xIDE4LjFsNjQgNTYuNGM3LjEgNi4yIDE3LjEgNy44IDI1LjcgMy45czE0LjEtMTIuNCAxNC4xLTIxLjlsMC0zMi40IDg4IDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRsLTg4IDAgMC0zMmMwLTkuNC01LjUtMTgtMTQuMS0yMS45cy0xOC42LTIuNC0yNS43IDMuOGwtNjQgNTZjLTUuMiA0LjUtOC4yIDExLjEtOC4yIDE4elwiXVxufTtcbmNvbnN0IGZhRmlsZVNoaWVsZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmaWxlLXNoaWVsZCcsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZTRmMFwiLCBcIk0wIDY0QzAgMjguNyAyOC43IDAgNjQgMEwyMjQgMGwwIDEyOGMwIDE3LjcgMTQuMyAzMiAzMiAzMmwxMjggMCAwIDQ3LTkyLjggMzcuMWMtMjEuMyA4LjUtMzUuMiAyOS4xLTM1LjIgNTJjMCA1Ni42IDE4LjkgMTQ4IDk0LjIgMjA4LjNjLTkgNC44LTE5LjMgNy42LTMwLjIgNy42TDY0IDUxMmMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCA2NHptMzg0IDY0bC0xMjggMEwyNTYgMCAzODQgMTI4em0zOS4xIDk3LjdjNS43LTIuMyAxMi4xLTIuMyAxNy44IDBsMTIwIDQ4QzU3MCAyNzcuNCA1NzYgMjg2LjIgNTc2IDI5NmMwIDYzLjMtMjUuOSAxNjguOC0xMzQuOCAyMTQuMmMtNS45IDIuNS0xMi42IDIuNS0xOC41IDBDMzEzLjkgNDY0LjggMjg4IDM1OS4zIDI4OCAyOTZjMC05LjggNi0xOC42IDE1LjEtMjIuM2wxMjAtNDh6TTUyNy40IDMxMkw0MzIgMjczLjhsMCAxODcuOGM2OC4yLTMzIDkxLjUtOTkgOTUuNC0xNDkuN3pcIl1cbn07XG5jb25zdCBmYVVzZXJTbGFzaCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd1c2VyLXNsYXNoJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNTA2XCIsIFwiTTM4LjggNS4xQzI4LjQtMy4xIDEzLjMtMS4yIDUuMSA5LjJTLTEuMiAzNC43IDkuMiA0Mi45bDU5MiA0NjRjMTAuNCA4LjIgMjUuNSA2LjMgMzMuNy00LjFzNi4zLTI1LjUtNC4xLTMzLjdMMzUzLjMgMjUxLjZDNDA3LjkgMjM3IDQ0OCAxODcuMiA0NDggMTI4QzQ0OCA1Ny4zIDM5MC43IDAgMzIwIDBDMjUwLjIgMCAxOTMuNSA1NS44IDE5MiAxMjUuMkwzOC44IDUuMXpNMjY0LjMgMzA0LjNDMTcwLjUgMzA5LjQgOTYgMzg3LjIgOTYgNDgyLjNjMCAxNi40IDEzLjMgMjkuNyAyOS43IDI5LjdsMzg4LjYgMGMzLjkgMCA3LjYtLjcgMTEtMi4xbC0yNjEtMjA1LjZ6XCJdXG59O1xuY29uc3QgZmFQZW4gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGVuJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI4Mzk0XSwgXCJmMzA0XCIsIFwiTTM2Mi43IDE5LjNMMzE0LjMgNjcuNyA0NDQuMyAxOTcuN2w0OC40LTQ4LjRjMjUtMjUgMjUtNjUuNSAwLTkwLjVMNDUzLjMgMTkuM2MtMjUtMjUtNjUuNS0yNS05MC41IDB6bS03MSA3MUw1OC42IDMyMy41Yy0xMC40IDEwLjQtMTggMjMuMy0yMi4yIDM3LjRMMSA0ODEuMkMtMS41IDQ4OS43IC44IDQ5OC44IDcgNTA1czE1LjMgOC41IDIzLjcgNi4xbDEyMC4zLTM1LjRjMTQuMS00LjIgMjctMTEuOCAzNy40LTIyLjJMNDIxLjcgMjIwLjMgMjkxLjcgOTAuM3pcIl1cbn07XG5jb25zdCBmYVRvd2VyT2JzZXJ2YXRpb24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndG93ZXItb2JzZXJ2YXRpb24nLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImU1ODZcIiwgXCJNMjQxLjcgMy40YzktNC41IDE5LjYtNC41IDI4LjYgMGwxNjAgODBjMTUuOCA3LjkgMjIuMiAyNy4xIDE0LjMgNDIuOUM0MzkgMTM3LjUgNDI3LjcgMTQ0IDQxNiAxNDRsMCA4MGMwIDE3LjctMTQuMyAzMi0zMiAzMmwtNC45IDAgMzIgMTkyIDY4LjkgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtOTUuNSAwYy0uNCAwLS44IDAtMS4xIDBsLTI1NC44IDBjLS40IDAtLjggMC0xLjEgMEwzMiA1MTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJsNjguOSAwIDMyLTE5Mi00LjkgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC04MGMtMTEuNyAwLTIzLTYuNS0yOC42LTE3LjdjLTcuOS0xNS44LTEuNS0zNSAxNC4zLTQyLjlsMTYwLTgwek0zMTQuNSA0NDhMMjU2IDM5OS4yIDE5Ny41IDQ0OGwxMTcgMHpNMTk3LjggMjU2bC00LjcgMjguM0wyNTYgMzM2LjhsNjIuOS01Mi41TDMxNC4yIDI1NmwtMTE2LjUgMHptLTEzLjkgODMuMmwtMTEuMiA2N0wyMTguNSAzNjhsLTM0LjYtMjguOHpNMjkzLjUgMzY4bDQ1LjggMzguMS0xMS4yLTY3TDI5My41IDM2OHpNMTc2IDEyOGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmwxNjAgMGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNmwtMTYwIDB6XCJdXG59O1xuY29uc3QgZmFGaWxlQ29kZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmaWxlLWNvZGUnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImYxYzlcIiwgXCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRMMCA0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMjU2IDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0yODgtMTI4IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyTDIyNCAwIDY0IDB6TTI1NiAwbDAgMTI4IDEyOCAwTDI1NiAwek0xNTMgMjg5bC0zMSAzMSAzMSAzMWM5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwTDcxIDMzN2MtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlsNDgtNDhjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45ek0yNjUgMjU1bDQ4IDQ4YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45bC00OCA0OGMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOWwzMS0zMS0zMS0zMWMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwelwiXVxufTtcbmNvbnN0IGZhU2lnbmFsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NpZ25hbCcsXG4gIGljb246IFs2NDAsIDUxMiwgWzEyODI0NiwgXCJzaWduYWwtNVwiLCBcInNpZ25hbC1wZXJmZWN0XCJdLCBcImYwMTJcIiwgXCJNNTc2IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCA0NDhjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC00NDhjMC0xNy43IDE0LjMtMzIgMzItMzJ6TTQ0OCA5NmMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDM1MmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTM1MmMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNMzUyIDIyNGwwIDI1NmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTI1NmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyek0xOTIgMjg4YzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgMTYwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtMTYwYzAtMTcuNyAxNC4zLTMyIDMyLTMyek05NiA0MTZsMCA2NGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJ6XCJdXG59O1xuY29uc3QgZmFTaWduYWw1ID0gZmFTaWduYWw7XG5jb25zdCBmYVNpZ25hbFBlcmZlY3QgPSBmYVNpZ25hbDtcbmNvbnN0IGZhQnVzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2J1cycsXG4gIGljb246IFs1NzYsIDUxMiwgWzEyODY1M10sIFwiZjIwN1wiLCBcIk0yODggMEM0MjIuNCAwIDUxMiAzNS4yIDUxMiA4MGwwIDE2IDAgMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCA2NGMwIDE3LjctMTQuMyAzMi0zMiAzMmwwIDE2MGMwIDE3LjctMTQuMyAzMi0zMiAzMmwwIDMyYzAgMTcuNy0xNC4zIDMyLTMyIDMybC0zMiAwYy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTMyLTE5MiAwIDAgMzJjMCAxNy43LTE0LjMgMzItMzIgMzJsLTMyIDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtMTYwYy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyYzAgMCAwIDAgMCAwbDAtMzJzMCAwIDAgMGwwLTE2QzY0IDM1LjIgMTUzLjYgMCAyODggMHpNMTI4IDE2MGwwIDk2YzAgMTcuNyAxNC4zIDMyIDMyIDMybDExMiAwIDAtMTYwLTExMiAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnpNMzA0IDI4OGwxMTIgMGMxNy43IDAgMzItMTQuMyAzMi0zMmwwLTk2YzAtMTcuNy0xNC4zLTMyLTMyLTMybC0xMTIgMCAwIDE2MHpNMTQ0IDQwMGEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6bTI4OCAwYTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpNMzg0IDgwYzAtOC44LTcuMi0xNi0xNi0xNkwyMDggNjRjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZsMTYwIDBjOC44IDAgMTYtNy4yIDE2LTE2elwiXVxufTtcbmNvbnN0IGZhSGVhcnRDaXJjbGVYbWFyayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoZWFydC1jaXJjbGUteG1hcmsnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImU1MDFcIiwgXCJNNDcuNiAzMDAuNEwyMjguMyA0NjkuMWM3LjUgNyAxNy40IDEwLjkgMjcuNyAxMC45czIwLjItMy45IDI3LjctMTAuOWwyLjYtMi40QzI2Ny4yIDQzOC42IDI1NiA0MDQuNiAyNTYgMzY4YzAtOTcuMiA3OC44LTE3NiAxNzYtMTc2YzI4LjMgMCA1NSA2LjcgNzguNyAxOC41Yy45LTYuNSAxLjMtMTMgMS4zLTE5LjZsMC01LjhjMC02OS45LTUwLjUtMTI5LjUtMTE5LjQtMTQxQzM0NyAzNi41IDMwMC42IDUxLjQgMjY4IDg0TDI1NiA5NiAyNDQgODRjLTMyLjYtMzIuNi03OS00Ny41LTEyNC42LTM5LjlDNTAuNSA1NS42IDAgMTE1LjIgMCAxODUuMWwwIDUuOGMwIDQxLjUgMTcuMiA4MS4yIDQ3LjYgMTA5LjV6TTQzMiA1MTJhMTQ0IDE0NCAwIDEgMCAwLTI4OCAxNDQgMTQ0IDAgMSAwIDAgMjg4em01OS4zLTE4MC43TDQ1NC42IDM2OGwzNi43IDM2LjdjNi4yIDYuMiA2LjIgMTYuNCAwIDIyLjZzLTE2LjQgNi4yLTIyLjYgMEw0MzIgMzkwLjZsLTM2LjcgMzYuN2MtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBzLTYuMi0xNi40IDAtMjIuNkw0MDkuNCAzNjhsLTM2LjctMzYuN2MtNi4yLTYuMi02LjItMTYuNCAwLTIyLjZzMTYuNC02LjIgMjIuNiAwTDQzMiAzNDUuNGwzNi43LTM2LjdjNi4yLTYuMiAxNi40LTYuMiAyMi42IDBzNi4yIDE2LjQgMCAyMi42elwiXVxufTtcbmNvbnN0IGZhSG91c2VDaGltbmV5ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hvdXNlLWNoaW1uZXknLFxuICBpY29uOiBbNTc2LCA1MTIsIFs2MzQ5OSwgXCJob21lLWxnXCJdLCBcImUzYWZcIiwgXCJNNTQzLjggMjg3LjZjMTcgMCAzMi0xNCAzMi0zMi4xYzEtOS0zLTE3LTExLTI0TDUxMiAxODVsMC0xMjFjMC0xNy43LTE0LjMtMzItMzItMzJsLTMyIDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMybDAgMzYuN0wzMDkuNSA3Yy02LTUtMTQtNy0yMS03cy0xNSAxLTIyIDhMMTAgMjMxLjVjLTcgNy0xMCAxNS0xMCAyNGMwIDE4IDE0IDMyLjEgMzIgMzIuMWwzMiAwIDAgNjkuN2MtLjEgLjktLjEgMS44LS4xIDIuOGwwIDExMmMwIDIyLjEgMTcuOSA0MCA0MCA0MGwxNiAwYzEuMiAwIDIuNC0uMSAzLjYtLjJjMS41IC4xIDMgLjIgNC41IC4ybDMxLjkgMCAyNCAwYzIyLjEgMCA0MC0xNy45IDQwLTQwbDAtMjQgMC02NGMwLTE3LjcgMTQuMy0zMiAzMi0zMmw2NCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgNjQgMCAyNGMwIDIyLjEgMTcuOSA0MCA0MCA0MGwyNCAwIDMyLjUgMGMxLjQgMCAyLjggMCA0LjItLjFjMS4xIC4xIDIuMiAuMSAzLjMgLjFsMTYgMGMyMi4xIDAgNDAtMTcuOSA0MC00MGwwLTE2LjJjLjMtMi42IC41LTUuMyAuNS04LjFsLS43LTE2MC4yIDMyIDB6XCJdXG59O1xuY29uc3QgZmFIb21lTGcgPSBmYUhvdXNlQ2hpbW5leTtcbmNvbnN0IGZhV2luZG93TWF4aW1pemUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnd2luZG93LW1heGltaXplJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI4NDcwXSwgXCJmMmQwXCIsIFwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZMMCA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzg0IDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0zMjBjMC0zNS4zLTI4LjctNjQtNjQtNjRMNjQgMzJ6TTk2IDk2bDMyMCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyTDk2IDE2MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnpcIl1cbn07XG5jb25zdCBmYUZhY2VGcm93biA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmYWNlLWZyb3duJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbOTc4NSwgXCJmcm93blwiXSwgXCJmMTE5XCIsIFwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0xNTkuMyAzODguN2MtMi42IDguNC0xMS42IDEzLjItMjAgMTAuNXMtMTMuMi0xMS42LTEwLjUtMjBDMTQ1LjIgMzI2LjEgMTk2LjMgMjg4IDI1NiAyODhzMTEwLjggMzguMSAxMjcuMyA5MS4zYzIuNiA4LjQtMi4xIDE3LjQtMTAuNSAyMHMtMTcuNC0yLjEtMjAtMTAuNUMzNDAuNSAzNDkuNCAzMDIuMSAzMjAgMjU2IDMyMHMtODQuNSAyOS40LTk2LjcgNjguN3pNMTQ0LjQgMjA4YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bTE5Mi0zMmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJdXG59O1xuY29uc3QgZmFGcm93biA9IGZhRmFjZUZyb3duO1xuY29uc3QgZmFQcmVzY3JpcHRpb24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncHJlc2NyaXB0aW9uJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmNWIxXCIsIFwiTTMyIDBDMTQuMyAwIDAgMTQuMyAwIDMyTDAgMTkybDAgOTZjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTY0IDUwLjcgMCAxMjggMTI4TDEzNy40IDQ1Ny40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwTDI4OCAzOTcuMyAzOTMuNCA1MDIuNmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zTDMzMy4zIDM1MiA0MzguNiAyNDYuNmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMEwyODggMzA2LjdsLTg1LjgtODUuOEMyNTEuNCAyMDkuMSAyODggMTY0LjggMjg4IDExMkMyODggNTAuMSAyMzcuOSAwIDE3NiAwTDMyIDB6TTE3NiAxNjBMNjQgMTYwbDAtOTYgMTEyIDBjMjYuNSAwIDQ4IDIxLjUgNDggNDhzLTIxLjUgNDgtNDggNDh6XCJdXG59O1xuY29uc3QgZmFTaG9wID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3Nob3AnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtcInN0b3JlLWFsdFwiXSwgXCJmNTRmXCIsIFwiTTM2LjggMTkybDU2Ni4zIDBjMjAuMyAwIDM2LjgtMTYuNSAzNi44LTM2LjhjMC03LjMtMi4yLTE0LjQtNi4yLTIwLjRMNTU4LjIgMjEuNEM1NDkuMyA4IDUzNC40IDAgNTE4LjMgMEwxMjEuNyAwYy0xNiAwLTMxIDgtMzkuOSAyMS40TDYuMiAxMzQuN2MtNCA2LjEtNi4yIDEzLjItNi4yIDIwLjRDMCAxNzUuNSAxNi41IDE5MiAzNi44IDE5MnpNNjQgMjI0bDAgMTYwIDAgODBjMCAyNi41IDIxLjUgNDggNDggNDhsMjI0IDBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhsMC04MCAwLTE2MC02NCAwIDAgMTYwLTE5MiAwIDAtMTYwLTY0IDB6bTQ0OCAwbDAgMjU2YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0yNTYtNjQgMHpcIl1cbn07XG5jb25zdCBmYVN0b3JlQWx0ID0gZmFTaG9wO1xuY29uc3QgZmFGbG9wcHlEaXNrID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Zsb3BweS1kaXNrJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbMTI4MTkwLCAxMjg0MjYsIFwic2F2ZVwiXSwgXCJmMGM3XCIsIFwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZMMCA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzIwIDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0yNDIuN2MwLTE3LTYuNy0zMy4zLTE4LjctNDUuM0wzNTIgNTAuN0MzNDAgMzguNyAzMjMuNyAzMiAzMDYuNyAzMkw2NCAzMnptMCA5NmMwLTE3LjcgMTQuMy0zMiAzMi0zMmwxOTIgMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDY0YzAgMTcuNy0xNC4zIDMyLTMyIDMyTDk2IDIyNGMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC02NHpNMjI0IDI4OGE2NCA2NCAwIDEgMSAwIDEyOCA2NCA2NCAwIDEgMSAwLTEyOHpcIl1cbn07XG5jb25zdCBmYVNhdmUgPSBmYUZsb3BweURpc2s7XG5jb25zdCBmYVZpaGFyYSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd2aWhhcmEnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY2YTdcIiwgXCJNMjgxIDIyTDMwNS44IDQuN2MxLjMtLjkgMi43LTEuOCA0LjEtMi40QzMxMy4xIC43IDMxNi42IDAgMzIwIDBzNi45IC43IDEwLjEgMi4yYzEuNCAuNyAyLjggMS41IDQuMSAyLjRMMzU5IDIyQzM5MyA0NS44IDQzMC44IDYzLjUgNDcwLjggNzQuNGwyMyA2LjNjMS44IC41IDMuNiAxLjEgNS4yIDJjMy4yIDEuNyA1LjkgNCA4LjEgNi44YzMuOCA0LjkgNS42IDExLjMgNC43IDE3LjhjLS40IDIuOC0xLjIgNS40LTIuNSA3LjhjLTEuNyAzLjItNCA1LjktNi44IDguMWMtNC4zIDMuMi05LjYgNS4xLTE1LjEgNC45bC03LjUgMCAwIDU2LjEgNi40IDUuMSA1LjIgNC4xYzIxLjEgMTYuNyA0NSAyOS42IDcwLjUgMzguMWwyOC45IDkuNmMxLjYgLjUgMy4yIDEuMiA0LjYgMmMzLjEgMS43IDUuOCA0LjEgNy44IDYuOXMzLjUgNi4xIDQuMSA5LjZjLjUgMi43IC42IDUuNSAuMSA4LjNzLTEuNCA1LjQtMi43IDcuOGMtMS43IDMuMS00LjEgNS44LTYuOSA3LjhzLTYuMSAzLjUtOS42IDQuMWMtMS42IC4zLTMuMyAuNC01IC40TDU0NCAyODhsMCA2NS45YzIwLjUgMjIuOCA0Ny40IDM5LjIgNzcuNCA0Ni43QzYzMiA0MDMgNjQwIDQxMi42IDY0MCA0MjRjMCAxMy4zLTEwLjcgMjQtMjQgMjRsLTQwIDAgMCAzMmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTMyLTE2MCAwIDAgMzJjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC0zMi0xNjAgMCAwIDMyYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtMzItNDAgMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRjMC0xMS40IDgtMjEgMTguNi0yMy40YzMwLTcuNiA1Ni45LTIzLjkgNzcuNC00Ni43TDk2IDI4OGwtMzkuNCAwYy0xLjcgMC0zLjQtLjEtNS0uNGMtMy41LS43LTYuOC0yLjEtOS42LTQuMXMtNS4yLTQuNy03LTcuOGMtMS4zLTIuNC0yLjMtNS0yLjctNy44cy0uNC01LjYgLjEtOC4zYy43LTMuNSAyLjEtNi44IDQuMS05LjZzNC43LTUuMiA3LjgtNi45YzEuNC0uOCAzLTEuNSA0LjYtMmwyOC45LTkuNmMyNS41LTguNSA0OS40LTIxLjQgNzAuNS0zOC4xbDUuMi00LjEgNi40LTUuMSAwLTguMSAwLTQ4LTcuNSAwYy01LjUgLjEtMTAuOC0xLjctMTUuMS00LjljLTIuOC0yLjEtNS4xLTQuOC02LjgtOC4xYy0xLjItMi40LTIuMS01LTIuNS03LjhjLS45LTYuNSAuOS0xMi44IDQuNy0xNy44YzIuMS0yLjggNC44LTUuMSA4LjEtNi44YzEuNi0uOCAzLjQtMS41IDUuMi0ybDIzLTYuM0MyMDkuMiA2My41IDI0NyA0NS44IDI4MSAyMnpNNDE2IDEyOGwtOTYgMC05NiAwIDAgNjQgNzIgMCA0OCAwIDcyIDAgMC02NHpNMTYwIDI4OGwwIDY0IDEzNiAwIDI0IDAgMjQgMCAxMzYgMCAwLTY0LTEzNiAwLTI0IDBzMCAwIDAgMGwtMjQgMC0xMzYgMHpcIl1cbn07XG5jb25zdCBmYVNjYWxlVW5iYWxhbmNlZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzY2FsZS11bmJhbGFuY2VkJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXCJiYWxhbmNlLXNjYWxlLWxlZnRcIl0sIFwiZjUxNVwiLCBcIk01MjIuMSA2Mi40YzE2LjgtNS42IDI1LjgtMjMuNyAyMC4yLTQwLjVTNTE4LjYtMy45IDUwMS45IDEuNmwtMTEzIDM3LjdDMzc1IDE1LjggMzQ5LjMgMCAzMjAgMGMtNDQuMiAwLTgwIDM1LjgtODAgODBjMCAzIC4yIDUuOSAuNSA4LjhMMTE3LjkgMTI5LjZjLTE2LjggNS42LTI1LjggMjMuNy0yMC4yIDQwLjVzMjMuNyAyNS44IDQwLjUgMjAuMmwxMzUuNS00NS4yYzQuNSAzLjIgOS4zIDUuOSAxNC40IDguMkwyODggNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMybDE5MiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC0xNjAgMCAwLTI5NC43YzIxLTkuMiAzNy4yLTI3IDQ0LjItNDlsMTI1LjktNDJ6TTQzOS42IDI4OEw1MTIgMTYzLjggNTg0LjQgMjg4bC0xNDQuOSAwek01MTIgMzg0YzYyLjkgMCAxMTUuMi0zNCAxMjYtNzguOWMyLjYtMTEtMS0yMi4zLTYuNy0zMi4xTDUzNi4xIDEwOS44Yy01LTguNi0xNC4yLTEzLjgtMjQuMS0xMy44cy0xOS4xIDUuMy0yNC4xIDEzLjhMMzkyLjcgMjczLjFjLTUuNyA5LjgtOS4zIDIxLjEtNi43IDMyLjFDMzk2LjggMzUwIDQ0OS4xIDM4NCA1MTIgMzg0ek0xMjkuMiAyOTEuOEwyMDEuNiA0MTYgNTYuNyA0MTZsNzIuNC0xMjQuMnpNMy4yIDQzMy4xQzE0IDQ3OCA2Ni4zIDUxMiAxMjkuMiA1MTJzMTE1LjItMzQgMTI2LTc4LjljMi42LTExLTEtMjIuMy02LjctMzIuMUwxNTMuMiAyMzcuOGMtNS04LjYtMTQuMi0xMy44LTI0LjEtMTMuOHMtMTkuMSA1LjMtMjQuMSAxMy44TDkuOSA0MDEuMWMtNS43IDkuOC05LjMgMjEuMS02LjcgMzIuMXpcIl1cbn07XG5jb25zdCBmYUJhbGFuY2VTY2FsZUxlZnQgPSBmYVNjYWxlVW5iYWxhbmNlZDtcbmNvbnN0IGZhU29ydFVwID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NvcnQtdXAnLFxuICBpY29uOiBbMzIwLCA1MTIsIFtcInNvcnQtYXNjXCJdLCBcImYwZGVcIiwgXCJNMTgyLjYgNDEuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBsLTEyOCAxMjhjLTkuMiA5LjItMTEuOSAyMi45LTYuOSAzNC45czE2LjYgMTkuOCAyOS42IDE5LjhsMjU2IDBjMTIuOSAwIDI0LjYtNy44IDI5LjYtMTkuOHMyLjItMjUuNy02LjktMzQuOWwtMTI4LTEyOHpcIl1cbn07XG5jb25zdCBmYVNvcnRBc2MgPSBmYVNvcnRVcDtcbmNvbnN0IGZhQ29tbWVudERvdHMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY29tbWVudC1kb3RzJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI4MTcyLCA2MjA3NSwgXCJjb21tZW50aW5nXCJdLCBcImY0YWRcIiwgXCJNMjU2IDQ0OGMxNDEuNCAwIDI1Ni05My4xIDI1Ni0yMDhTMzk3LjQgMzIgMjU2IDMyUzAgMTI1LjEgMCAyNDBjMCA0NS4xIDE3LjcgODYuOCA0Ny43IDEyMC45Yy0xLjkgMjQuNS0xMS40IDQ2LjMtMjEuNCA2Mi45Yy01LjUgOS4yLTExLjEgMTYuNi0xNS4yIDIxLjZjLTIuMSAyLjUtMy43IDQuNC00LjkgNS43Yy0uNiAuNi0xIDEuMS0xLjMgMS40bC0uMyAuM2MwIDAgMCAwIDAgMGMwIDAgMCAwIDAgMHMwIDAgMCAwczAgMCAwIDBjLTQuNiA0LjYtNS45IDExLjQtMy40IDE3LjRjMi41IDYgOC4zIDkuOSAxNC44IDkuOWMyOC43IDAgNTcuNi04LjkgODEuNi0xOS4zYzIyLjktMTAgNDIuNC0yMS45IDU0LjMtMzAuNmMzMS44IDExLjUgNjcgMTcuOSAxMDQuMSAxNy45ek0xMjggMjA4YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHptMTI4IDBhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0em05NiAzMmEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwelwiXVxufTtcbmNvbnN0IGZhQ29tbWVudGluZyA9IGZhQ29tbWVudERvdHM7XG5jb25zdCBmYVBsYW50V2lsdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwbGFudC13aWx0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJlNWFhXCIsIFwiTTI4OCAxMjBjMC0zMC45IDI1LjEtNTYgNTYtNTZzNTYgMjUuMSA1NiA1NmwwIDEzYy0yOS4zIDEwLTQ4IDM0LjUtNDggNzAuMWMwIDI3LjkgMjUuMyA3NC44IDY2IDExMS42YzMuOCAzLjUgOC45IDUuMyAxNCA1LjNzMTAuMi0xLjggMTQtNS4zYzQwLjctMzYuOCA2Ni04My43IDY2LTExMS42YzAtMzUuNi0xOC43LTYwLjItNDgtNzAuMWwwLTEzQzQ2NCA1My43IDQxMC4zIDAgMzQ0IDBTMjI0IDUzLjcgMjI0IDEyMGwwIDIxLjhDMjA3LjMgMTMzIDE4OC4yIDEyOCAxNjggMTI4Yy02Ni4zIDAtMTIwIDUzLjctMTIwIDEyMGwwIDEzYy0yOS4zIDEwLTQ4IDM0LjUtNDggNzAuMUMwIDM1OSAyNS4zIDQwNS45IDY2IDQ0Mi43YzMuOCAzLjUgOC45IDUuMyAxNCA1LjNzMTAuMi0xLjggMTQtNS4zYzQwLjctMzYuOCA2Ni04My43IDY2LTExMS42YzAtMzUuNi0xOC43LTYwLjItNDgtNzAuMWwwLTEzYzAtMzAuOSAyNS4xLTU2IDU2LTU2czU2IDI1LjEgNTYgNTZsMCAzMiAwIDIwMGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMjAwIDAtMzIgMC0xMjh6XCJdXG59O1xuY29uc3QgZmFEaWFtb25kID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2RpYW1vbmQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFs5ODMwXSwgXCJmMjE5XCIsIFwiTTI4NC4zIDExLjdjLTE1LjYtMTUuNi00MC45LTE1LjYtNTYuNiAwbC0yMTYgMjE2Yy0xNS42IDE1LjYtMTUuNiA0MC45IDAgNTYuNmwyMTYgMjE2YzE1LjYgMTUuNiA0MC45IDE1LjYgNTYuNiAwbDIxNi0yMTZjMTUuNi0xNS42IDE1LjYtNDAuOSAwLTU2LjZsLTIxNi0yMTZ6XCJdXG59O1xuY29uc3QgZmFGYWNlR3JpblNxdWludCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmYWNlLWdyaW4tc3F1aW50JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI4NTE4LCBcImdyaW4tc3F1aW50XCJdLCBcImY1ODVcIiwgXCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTM4OC4xIDMxMi44YzEyLjMtMy44IDI0LjMgNi45IDE5LjMgMTguN0MzODIuNCAzOTAuNiAzMjQuMiA0MzIgMjU2LjMgNDMycy0xMjYuMi00MS40LTE1MS4xLTEwMC41Yy01LTExLjggNy0yMi41IDE5LjMtMTguN2MzOS43IDEyLjIgODQuNSAxOSAxMzEuOCAxOXM5Mi4xLTYuOCAxMzEuOC0xOXpNMTMzLjUgMTQ2LjdsODkuOSA0Ny45YzEwLjcgNS43IDEwLjcgMjEuMSAwIDI2LjhsLTg5LjkgNDcuOWMtNy45IDQuMi0xNy41LTEuNS0xNy41LTEwLjVjMC0yLjggMS01LjUgMi44LTcuNmwzNi00My4yLTM2LTQzLjJjLTEuOC0yLjEtMi44LTQuOC0yLjgtNy42YzAtOSA5LjYtMTQuNyAxNy41LTEwLjV6TTM5NiAxNTcuMWMwIDIuOC0xIDUuNS0yLjggNy42bC0zNiA0My4yIDM2IDQzLjJjMS44IDIuMSAyLjggNC44IDIuOCA3LjZjMCA5LTkuNiAxNC43LTE3LjUgMTAuNWwtODkuOS00Ny45Yy0xMC43LTUuNy0xMC43LTIxLjEgMC0yNi44bDg5LjktNDcuOWM3LjktNC4yIDE3LjUgMS41IDE3LjUgMTAuNXpcIl1cbn07XG5jb25zdCBmYUdyaW5TcXVpbnQgPSBmYUZhY2VHcmluU3F1aW50O1xuY29uc3QgZmFIYW5kSG9sZGluZ0RvbGxhciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoYW5kLWhvbGRpbmctZG9sbGFyJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXCJoYW5kLWhvbGRpbmctdXNkXCJdLCBcImY0YzBcIiwgXCJNMzEyIDI0bDAgMTAuNWM2LjQgMS4yIDEyLjYgMi43IDE4LjIgNC4yYzEyLjggMy40IDIwLjQgMTYuNiAxNyAyOS40cy0xNi42IDIwLjQtMjkuNCAxN2MtMTAuOS0yLjktMjEuMS00LjktMzAuMi01Yy03LjMtLjEtMTQuNyAxLjctMTkuNCA0LjRjLTIuMSAxLjMtMy4xIDIuNC0zLjUgM2MtLjMgLjUtLjcgMS4yLS43IDIuOGMwIC4zIDAgLjUgMCAuNmMuMiAuMiAuOSAxLjIgMy4zIDIuNmM1LjggMy41IDE0LjQgNi4yIDI3LjQgMTAuMWwuOSAuM3MwIDAgMCAwYzExLjEgMy4zIDI1LjkgNy44IDM3LjkgMTUuM2MxMy43IDguNiAyNi4xIDIyLjkgMjYuNCA0NC45Yy4zIDIyLjUtMTEuNCAzOC45LTI2LjcgNDguNWMtNi43IDQuMS0xMy45IDctMjEuMyA4LjhsMCAxMC42YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0bDAtMTEuNGMtOS41LTIuMy0xOC4yLTUuMy0yNS42LTcuOGMtMi4xLS43LTQuMS0xLjQtNi0yYy0xMi42LTQuMi0xOS40LTE3LjgtMTUuMi0zMC40czE3LjgtMTkuNCAzMC40LTE1LjJjMi42IC45IDUgMS43IDcuMyAyLjVjMTMuNiA0LjYgMjMuNCA3LjkgMzMuOSA4LjNjOCAuMyAxNS4xLTEuNiAxOS4yLTQuMWMxLjktMS4yIDIuOC0yLjIgMy4yLTIuOWMuNC0uNiAuOS0xLjggLjgtNC4xbDAtLjJjMC0xIDAtMi4xLTQtNC42Yy01LjctMy42LTE0LjMtNi40LTI3LjEtMTAuM2wtMS45LS42Yy0xMC44LTMuMi0yNS03LjUtMzYuNC0xNC40Yy0xMy41LTguMS0yNi41LTIyLTI2LjYtNDQuMWMtLjEtMjIuOSAxMi45LTM4LjYgMjcuNy00Ny40YzYuNC0zLjggMTMuMy02LjQgMjAuMi04LjJMMjY0IDI0YzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjR6TTU2OC4yIDMzNi4zYzEzLjEgMTcuOCA5LjMgNDIuOC04LjUgNTUuOUw0MzMuMSA0ODUuNWMtMjMuNCAxNy4yLTUxLjYgMjYuNS04MC43IDI2LjVMMTkyIDUxMiAzMiA1MTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtNjRjMC0xNy43IDE0LjMtMzIgMzItMzJsMzYuOCAwIDQ0LjktMzZjMjIuNy0xOC4yIDUwLjktMjggODAtMjhsNzguMyAwIDE2IDAgNjQgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtNjQgMC0xNiAwYy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2bDEyMC42IDAgMTE5LjctODguMmMxNy44LTEzLjEgNDIuOC05LjMgNTUuOSA4LjV6TTE5My42IDM4NGMwIDAgMCAwIDAgMGwtLjkgMGMuMyAwIC42IDAgLjkgMHpcIl1cbn07XG5jb25zdCBmYUhhbmRIb2xkaW5nVXNkID0gZmFIYW5kSG9sZGluZ0RvbGxhcjtcbmNvbnN0IGZhQmFjdGVyaXVtID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JhY3Rlcml1bScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZTA1YVwiLCBcIk00MjMuMSAzMC42YzMuNi0xMi43LTMuNy0yNi0xNi41LTI5LjdzLTI2IDMuNy0yOS43IDE2LjVsLTQuMiAxNC43Yy05LjgtLjQtMTkuOSAuNS0yOS45IDIuOGMtMTIuMSAyLjgtMjMuNyA1LjktMzQuOSA5LjRsLTUuOS0xMy43Yy01LjItMTIuMi0xOS4zLTE3LjgtMzEuNS0xMi42cy0xNy44IDE5LjMtMTIuNiAzMS41bDQuOSAxMS4zYy0yMiA5LjQtNDIgMjAuMS02MC4yIDMxLjhMMTk2IDgyLjdjLTcuNC0xMS0yMi4zLTE0LTMzLjMtNi43cy0xNCAyMi4zLTYuNyAzMy4zbDcuOCAxMS42Yy0xOCAxNS0zMy43IDMwLjgtNDcuMyA0Ny4xTDEwMyAxNTcuM2MtMTAuNC04LjMtMjUuNS02LjYtMzMuNyAzLjdzLTYuNiAyNS41IDMuNyAzMy43bDE1IDEyYy0yLjEgMy4yLTQuMSA2LjUtNiA5LjdjLTkuNCAxNS43LTE3IDMxLTIzLjIgNDUuM2wtOS45LTMuOWMtMTIuMy00LjktMjYuMyAxLjEtMzEuMiAxMy40czEuMSAyNi4zIDEzLjQgMzEuMmwxMS42IDQuNmMtLjMgMS4xLS42IDIuMS0uOSAzLjFjLTMuNSAxMi41LTUuNyAyMy4yLTcuMSAzMS4zYy0uNyA0LjEtMS4yIDcuNS0xLjYgMTAuM2MtLjIgMS40LS4zIDIuNi0uNCAzLjZsLS4xIDEuNC0uMSAuNiAwIC4zIDAgLjFjMCAwIDAgLjEgMzkuMiAzLjdjMCAwIDAgMCAwIDBsLTM5LjItMy42Yy0uNSA1LS42IDEwLS40IDE0LjlsLTE0LjcgNC4yQzQuNyAzODAuNi0yLjcgMzkzLjggLjkgNDA2LjZzMTYuOSAyMC4xIDI5LjcgMTYuNWwxMy44LTMuOWMxMC42IDIwLjcgMjcuNiAzNy44IDQ4LjUgNDguNWwtMy45IDEzLjdjLTMuNiAxMi43IDMuNyAyNiAxNi41IDI5LjdzMjYtMy43IDI5LjctMTYuNWw0LjItMTQuN2MyMy44IDEgNDYuMy01LjUgNjUuMS0xNy42TDIxNSA0NzNjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45bC0xMC42LTEwLjZjOS4xLTE0LjEgMTUuMS0zMC41IDE3LTQ4LjNsLjEtLjhjLjMtMS43IDEtNS4xIDIuMy05LjhsLjItLjggMTIuNiA1LjRjMTIuMiA1LjIgMjYuMy0uNCAzMS41LTEyLjZzLS40LTI2LjMtMTIuNi0zMS41bC0xMS4zLTQuOGM5LjktMTQuOSAyNC45LTMxLjYgNDguNi00NmwyLjEgNy41YzMuNiAxMi43IDE2LjkgMjAuMSAyOS43IDE2LjVzMjAuMS0xNi45IDE2LjUtMjkuN0wzNzEgMjU5LjJjNi45LTIuMiAxNC4zLTQuMyAyMi4yLTYuMWMxMi45LTMgMjQuNy04IDM1LjItMTQuOEw0MzkgMjQ5YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwczkuNC0yNC42IDAtMzMuOWwtMTAuNi0xMC42YzEyLjItMTkgMTguNi00MS42IDE3LjYtNjUuMWwxNC43LTQuMmMxMi43LTMuNiAyMC4xLTE2LjkgMTYuNS0yOS43cy0xNi45LTIwLjEtMjkuNy0xNi41bC0xMy43IDMuOWMtMTAuOC0yMS4yLTI4LTM4LTQ4LjUtNDguNWwzLjktMTMuOHpNOTIuMSAzNjMuM3MwIDAgMCAwTDE0NCAzNjhsLTUxLjktNC43ek0xMTIgMzIwYTQ4IDQ4IDAgMSAxIDk2IDAgNDggNDggMCAxIDEgLTk2IDB6TTI0MCAxODRhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4elwiXVxufTtcbmNvbnN0IGZhSGFuZFBvaW50ZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGFuZC1wb2ludGVyJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMjVhXCIsIFwiTTEyOCA0MGMwLTIyLjEgMTcuOS00MCA0MC00MHM0MCAxNy45IDQwIDQwbDAgMTQ4LjJjOC41LTcuNiAxOS43LTEyLjIgMzItMTIuMmMyMC42IDAgMzguMiAxMyA0NSAzMS4yYzguOC05LjMgMjEuMi0xNS4yIDM1LTE1LjJjMjUuMyAwIDQ2IDE5LjUgNDcuOSA0NC4zYzguNS03LjcgMTkuOC0xMi4zIDMyLjEtMTIuM2MyNi41IDAgNDggMjEuNSA0OCA0OGwwIDQ4IDAgMTYgMCA0OGMwIDcwLjctNTcuMyAxMjgtMTI4IDEyOGwtMTYgMC02NCAwLS4xIDAtNS4yIDBjLTUgMC05LjktLjMtMTQuNy0xYy01NS4zLTUuNi0xMDYuMi0zNC0xNDAtNzlMOCAzMzZjLTEzLjMtMTcuNy05LjctNDIuNyA4LTU2czQyLjctOS43IDU2IDhsNTYgNzQuN0wxMjggNDB6TTI0MCAzMDRjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZsMCA5NmMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2bDAtOTZ6bTQ4LTE2Yy04LjggMC0xNiA3LjItMTYgMTZsMCA5NmMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2bDAtOTZjMC04LjgtNy4yLTE2LTE2LTE2em04MCAxNmMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNmwwIDk2YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZsMC05NnpcIl1cbn07XG5jb25zdCBmYURydW1TdGVlbHBhbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdkcnVtLXN0ZWVscGFuJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmNTZhXCIsIFwiTTI4OCAzMmMxNTkuMSAwIDI4OCA0OCAyODggMTI4bDAgMTkyYzAgODAtMTI4LjkgMTI4LTI4OCAxMjhTMCA0MzIgMCAzNTJMMCAxNjBDMCA4MCAxMjguOSAzMiAyODggMzJ6TTUyOCAxNjBjMC05LjktOC0yOS45LTU1LTQ5LjhjLTE4LjYtNy45LTQwLjktMTQuNC02Ni0xOS40bC0yNy44IDQzLjZjLTcuMyAxMS41LTExLjIgMjQuOC0xMS4yIDM4LjRjMCAxNy41IDYuNCAzNC40IDE4LjEgNDcuNWw5LjggMTFjMjkuOC01LjIgNTUuOS0xMi41IDc3LjItMjEuNWM0Ny4xLTE5LjkgNTUtMzkuOSA1NS00OS44ek0zNDkuMiAyMzcuM2MtOC0yNi4yLTMyLjQtNDUuMy02MS4yLTQ1LjNzLTUzLjMgMTkuMS02MS4yIDQ1LjNjMTkuNCAxLjcgMzkuOSAyLjcgNjEuMiAyLjdzNDEuOC0uOSA2MS4yLTIuN3pNMTY5IDkwLjhjLTI1LjIgNS00Ny40IDExLjYtNjYgMTkuNEM1NiAxMzAuMSA0OCAxNTAuMSA0OCAxNjBzOCAyOS45IDU1IDQ5LjhjMjEuMyA5IDQ3LjQgMTYuMyA3Ny4yIDIxLjVsOS44LTExYzExLjYtMTMuMSAxOC4xLTMwIDE4LjEtNDcuNWMwLTEzLjYtMy45LTI2LjktMTEuMi0zOC40TDE2OSA5MC44em01Ni4zLThDMjI0LjUgODcgMjI0IDkxLjUgMjI0IDk2YzAgMzUuMyAyOC43IDY0IDY0IDY0czY0LTI4LjcgNjQtNjRjMC00LjUtLjUtOS0xLjQtMTMuMkMzMzAuOCA4MSAzMDkuOCA4MCAyODggODBzLTQyLjggMS02Mi42IDIuOHpcIl1cbn07XG5jb25zdCBmYUhhbmRTY2lzc29ycyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoYW5kLXNjaXNzb3JzJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMjU3XCIsIFwiTTQwIDIwOGMtMjIuMSAwLTQwIDE3LjktNDAgNDBzMTcuOSA0MCA0MCA0MGwxODAuMiAwYy03LjYgOC41LTEyLjIgMTkuNy0xMi4yIDMyYzAgMjUuMyAxOS41IDQ2IDQ0LjMgNDcuOWMtNy43IDguNS0xMi4zIDE5LjgtMTIuMyAzMi4xYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4bDMyIDAgNjQgMGM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOGwwLTExMy4xYzAtNDAuMi0xNi03OC44LTQ0LjQtMTA3LjNDNDQ0LjggNzYuOCA0MTMuOSA2NCAzODEuNyA2NEwzMzYgNjRjLTIxLjMgMC0zOS4zIDEzLjktNDUuNiAzMy4xbDc0LjUgMjMuN2M4LjQgMi43IDEzLjEgMTEuNyAxMC40IDIwLjFzLTExLjcgMTMuMS0yMC4xIDEwLjRMMjg4IDEyOS45YzAgMCAwIC4xIDAgLjFMODQgNjUuOEM2Mi45IDU5LjIgNDAuNSA3MC45IDMzLjggOTJzNS4xIDQzLjUgMjYuMiA1MC4yTDI2OS41IDIwOCA0MCAyMDh6XCJdXG59O1xuY29uc3QgZmFIYW5kc1ByYXlpbmcgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGFuZHMtcHJheWluZycsXG4gIGljb246IFs2NDAsIDUxMiwgW1wicHJheWluZy1oYW5kc1wiXSwgXCJmNjg0XCIsIFwiTTM1MS4yIDQuOGMzLjItMiA2LjYtMy4zIDEwLTQuMWM0LjctMSA5LjYtLjkgMTQuMSAuMWM3LjcgMS44IDE0LjggNi41IDE5LjQgMTMuNkw1MTQuNiAxOTQuMmM4LjggMTMuMSAxMy40IDI4LjYgMTMuNCA0NC40bDAgNzMuNWMwIDYuOSA0LjQgMTMgMTAuOSAxNS4ybDc5LjIgMjYuNEM2MzEuMiAzNTggNjQwIDM3MC4yIDY0MCAzODRsMCA5NmMwIDkuOS00LjYgMTkuMy0xMi41IDI1LjRzLTE4LjEgOC4xLTI3LjcgNS41TDQzMSA0NjUuOWMtNTYtMTQuOS05NS02NS43LTk1LTEyMy43TDMzNiAyMjRjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMmwwIDgwYzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZsMC04NC45YzAtNy0xLjgtMTMuOC01LjMtMTkuOEwzNDAuMyA0OC4xYy0xLjctMy0yLjktNi4xLTMuNi05LjNjLTEtNC43LTEtOS42IC4xLTE0LjFjMS45LTggNi44LTE1LjIgMTQuMy0xOS45em0tNjIuNCAwYzcuNSA0LjYgMTIuNCAxMS45IDE0LjMgMTkuOWMxLjEgNC42IDEuMiA5LjQgLjEgMTQuMWMtLjcgMy4yLTEuOSA2LjMtMy42IDkuM0wyMTMuMyAxOTkuM2MtMy41IDYtNS4zIDEyLjktNS4zIDE5LjhsMCA4NC45YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZsMC04MGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMybDAgMTE4LjJjMCA1OC0zOSAxMDguNy05NSAxMjMuN2wtMTY4LjcgNDVjLTkuNiAyLjYtMTkuOSAuNS0yNy43LTUuNVMwIDQ5MCAwIDQ4MGwwLTk2YzAtMTMuOCA4LjgtMjYgMjEuOS0zMC40bDc5LjItMjYuNGM2LjUtMi4yIDEwLjktOC4zIDEwLjktMTUuMmwwLTczLjVjMC0xNS44IDQuNy0zMS4yIDEzLjQtNDQuNEwyNDUuMiAxNC41YzQuNi03LjEgMTEuNy0xMS44IDE5LjQtMTMuNmM0LjYtMS4xIDkuNC0xLjIgMTQuMS0uMWMzLjUgLjggNi45IDIuMSAxMCA0LjF6XCJdXG59O1xuY29uc3QgZmFQcmF5aW5nSGFuZHMgPSBmYUhhbmRzUHJheWluZztcbmNvbnN0IGZhQXJyb3dSb3RhdGVSaWdodCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhcnJvdy1yb3RhdGUtcmlnaHQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFs4NjM1LCBcImFycm93LXJpZ2h0LXJvdGF0ZVwiLCBcImFycm93LXJvdGF0ZS1mb3J3YXJkXCIsIFwicmVkb1wiXSwgXCJmMDFlXCIsIFwiTTM4Ni4zIDE2MEwzMzYgMTYwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDEyOCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMybDAtMTI4YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMybDAgNTEuMkw0MTQuNCA5Ny42Yy04Ny41LTg3LjUtMjI5LjMtODcuNS0zMTYuOCAwcy04Ny41IDIyOS4zIDAgMzE2LjhzMjI5LjMgODcuNSAzMTYuOCAwYzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwYy02Mi41IDYyLjUtMTYzLjggNjIuNS0yMjYuMyAwcy02Mi41LTE2My44IDAtMjI2LjNzMTYzLjgtNjIuNSAyMjYuMyAwTDM4Ni4zIDE2MHpcIl1cbn07XG5jb25zdCBmYUFycm93UmlnaHRSb3RhdGUgPSBmYUFycm93Um90YXRlUmlnaHQ7XG5jb25zdCBmYUFycm93Um90YXRlRm9yd2FyZCA9IGZhQXJyb3dSb3RhdGVSaWdodDtcbmNvbnN0IGZhUmVkbyA9IGZhQXJyb3dSb3RhdGVSaWdodDtcbmNvbnN0IGZhV2ViQXdlc29tZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd3ZWItYXdlc29tZScsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTY4MlwiLCBcIk0zNzIuMiA1MmMwIDIwLjktMTIuNCAzOS0zMC4yIDQ3LjJMNDQ4IDE5MmwxMDQuNC0yMC45Yy01LjMtNy43LTguNC0xNy4xLTguNC0yNy4xYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4czQ4IDIxLjUgNDggNDhjMCAyNi0yMC42IDQ3LjEtNDYuNCA0OEw0ODEgNDQyLjNjLTEwLjMgMjMtMzMuMiAzNy43LTU4LjQgMzcuN2wtMjA1LjIgMGMtMjUuMiAwLTQ4LTE0LjgtNTguNC0zNy43TDQ2LjQgMTkyQzIwLjYgMTkxLjEgMCAxNzAgMCAxNDRjMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OGMwIDEwLjEtMy4xIDE5LjQtOC40IDI3LjFMMTkyIDE5MiAyOTguMSA5OS4xYy0xNy43LTguMy0zMC0yNi4zLTMwLTQ3LjFjMC0yOC43IDIzLjMtNTIgNTItNTJzNTIgMjMuMyA1MiA1MnpcIl1cbn07XG5jb25zdCBmYUJpb2hhemFyZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdiaW9oYXphcmQnLFxuICBpY29uOiBbNTc2LCA1MTIsIFs5NzYzXSwgXCJmNzgwXCIsIFwiTTE3My4yIDBjLTEuOCAwLTMuNSAuNy00LjggMkMxMzguNSAzMi4zIDEyMCA3NCAxMjAgMTIwYzAgMjYuMiA2IDUwLjkgMTYuNiA3M2MtMjIgMi40LTQzLjggOS4xLTY0LjIgMjAuNUMzNy45IDIzMi44IDEzLjMgMjYyLjQgLjQgMjk2Yy0uNyAxLjctLjUgMy43IC41IDUuMmMyLjIgMy43IDcuNCA0LjMgMTAuNiAxLjNDNjQuMiAyNTQuMyAxNTggMjQ1LjEgMjA1IDMyNHMtOC4xIDE1My4xLTc3LjYgMTczLjJjLTQuMiAxLjItNi4zIDUuOS00LjEgOS42YzEgMS42IDIuNiAyLjcgNC41IDNjMzYuNSA1LjkgNzUuMiAuMSAxMDkuNy0xOS4yYzIwLjQtMTEuNCAzNy40LTI2LjUgNTAuNS00My44YzEzLjEgMTcuMyAzMC4xIDMyLjQgNTAuNSA0My44YzM0LjUgMTkuMyA3My4zIDI1LjIgMTA5LjcgMTkuMmMxLjktLjMgMy41LTEuNCA0LjUtM2MyLjItMy43IC4xLTguNC00LjEtOS42QzM3OS4xIDQ3Ny4xIDMyNCA0MDMgMzcxIDMyNHMxNDAuNy02OS44IDE5My41LTIxLjRjMy4yIDIuOSA4LjQgMi4zIDEwLjYtMS4zYzEtMS42IDEuMS0zLjUgLjUtNS4yYy0xMi45LTMzLjYtMzcuNS02My4yLTcyLjEtODIuNWMtMjAuNC0xMS40LTQyLjItMTguMS02NC4yLTIwLjVDNDUwIDE3MC45IDQ1NiAxNDYuMiA0NTYgMTIwYzAtNDYtMTguNS04Ny43LTQ4LjQtMTE4Yy0xLjMtMS4zLTMtMi00LjgtMmMtNSAwLTguNCA1LjItNi43IDkuOUM0MjEuNyA4MC41IDM4NS42IDE3NiAyODggMTc2UzE1NC4zIDgwLjUgMTc5LjkgOS45YzEuNy00LjctMS42LTkuOS02LjctOS45ek0yNDAgMjcyYTQ4IDQ4IDAgMSAxIDk2IDAgNDggNDggMCAxIDEgLTk2IDB6TTE4MS43IDQxNy42YzYuMy0xMS44IDkuOC0yNS4xIDguNi0zOS44Yy0xOS41LTE4LTM0LTQxLjQtNDEuMi02Ny44Yy0xMi41LTguMS0yNi4yLTExLjgtNDAtMTIuNGMtOS0uNC0xOC4xIC42LTI3LjEgMi43YzcuOCA1Ny4xIDM4LjcgMTA2LjggODIuOSAxMzkuNGM2LjgtNi43IDEyLjYtMTQuMSAxNi44LTIyLjF6TTI4OCA2NGMtMjguOCAwLTU2LjMgNS45LTgxLjIgMTYuNWMyIDguMyA1IDE2LjIgOSAyMy41YzYuOCAxMi40IDE2LjcgMjMuMSAzMC4xIDMwLjNjMTMuMy00LjEgMjcuNS02LjMgNDIuMi02LjNzMjguOCAyLjIgNDIuMiA2LjNjMTMuNC03LjIgMjMuMy0xNy45IDMwLjEtMzAuM2M0LTcuMyA3LTE1LjIgOS0yMy41QzM0NC4zIDY5LjkgMzE2LjggNjQgMjg4IDY0ek00MjYuOSAzMTBjLTcuMiAyNi40LTIxLjcgNDkuNy00MS4yIDY3LjhjLTEuMiAxNC43IDIuMiAyOC4xIDguNiAzOS44YzQuMyA4IDEwIDE1LjQgMTYuOCAyMi4xYzQ0LjMtMzIuNiA3NS4yLTgyLjMgODIuOS0xMzkuNGMtOS0yLjItMTguMS0zLjEtMjcuMS0yLjdjLTEzLjggLjYtMjcuNSA0LjQtNDAgMTIuNHpcIl1cbn07XG5jb25zdCBmYUxvY2F0aW9uQ3Jvc3NoYWlycyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdsb2NhdGlvbi1jcm9zc2hhaXJzJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXCJsb2NhdGlvblwiXSwgXCJmNjAxXCIsIFwiTTI1NiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgMzQuN0MzNjguNCA4MC4xIDQzMS45IDE0My42IDQ0NS4zIDIyNGwzNC43IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTM0LjcgMEM0MzEuOSAzNjguNCAzNjguNCA0MzEuOSAyODggNDQ1LjNsMCAzNC43YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtMzQuN0MxNDMuNiA0MzEuOSA4MC4xIDM2OC40IDY2LjcgMjg4TDMyIDI4OGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmwzNC43IDBDODAuMSAxNDMuNiAxNDMuNiA4MC4xIDIyNCA2Ni43TDIyNCAzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNMTI4IDI1NmExMjggMTI4IDAgMSAwIDI1NiAwIDEyOCAxMjggMCAxIDAgLTI1NiAwem0xMjgtODBhODAgODAgMCAxIDEgMCAxNjAgODAgODAgMCAxIDEgMC0xNjB6XCJdXG59O1xuY29uc3QgZmFMb2NhdGlvbiA9IGZhTG9jYXRpb25Dcm9zc2hhaXJzO1xuY29uc3QgZmFNYXJzRG91YmxlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21hcnMtZG91YmxlJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbOTg5MV0sIFwiZjIyN1wiLCBcIk0zMTIgMzJjLTkuNyAwLTE4LjUgNS44LTIyLjIgMTQuOHMtMS43IDE5LjMgNS4yIDI2LjJsMzMuNCAzMy40TDI3NS44IDE1OWMtMjguNC0xOS41LTYyLjctMzEtOTkuOC0zMUM3OC44IDEyOCAwIDIwNi44IDAgMzA0czc4LjggMTc2IDE3NiAxNzZzMTc2LTc4LjggMTc2LTE3NmMwLTM3LTExLjQtNzEuNC0zMS05OS44bDUyLjYtNTIuNkw0MDcgMTg1YzYuOSA2LjkgMTcuMiA4LjkgMjYuMiA1LjJzMTQuOC0xMi41IDE0LjgtMjIuMmwwLTExMmMwLTEzLjMtMTAuNy0yNC0yNC0yNEwzMTIgMzJ6bTg4IDQ4czAgMCAwIDBzMCAwIDAgMHMwIDAgMCAwek02NCAzMDRhMTEyIDExMiAwIDEgMSAyMjQgMEExMTIgMTEyIDAgMSAxIDY0IDMwNHpNMzY4IDQ4MGM5Ny4yIDAgMTc2LTc4LjggMTc2LTE3NmMwLTM3LTExLjQtNzEuNC0zMS05OS44bDUyLjYtNTIuNkw1OTkgMTg1YzYuOSA2LjkgMTcuMiA4LjkgMjYuMiA1LjJzMTQuOC0xMi41IDE0LjgtMjIuMmwwLTExMmMwLTEzLjMtMTAuNy0yNC0yNC0yNEw1MDQgMzJjLTkuNyAwLTE4LjUgNS44LTIyLjIgMTQuOGMtMS4yIDIuOS0xLjggNi0xLjggOWwwIC4yIDAgLjJjMCA2LjIgMi41IDEyLjIgNyAxNi44bDMzLjQgMzMuNEw0ODAgMTQ2LjdsMCAyMS4zYzAgMjIuNi0xMy42IDQzLjEtMzQuNiA1MS43Yy0uOCAuMy0xLjcgLjctMi41IDFDNDY1LjcgMjQxLjIgNDgwIDI3MC45IDQ4MCAzMDRjMCA2MS45LTUwLjEgMTEyLTExMiAxMTJjLTUuNCAwLTEwLjgtLjQtMTYtMS4xYy0xMi45IDIwLjQtMjkuMSAzOC4zLTQ4LjEgNTMuMWMxOS44IDcuOCA0MS40IDEyIDY0IDEyelwiXVxufTtcbmNvbnN0IGZhQ2hpbGREcmVzcyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaGlsZC1kcmVzcycsXG4gIGljb246IFszMjAsIDUxMiwgW10sIFwiZTU5Y1wiLCBcIk0yMjQgNjRBNjQgNjQgMCAxIDAgOTYgNjRhNjQgNjQgMCAxIDAgMTI4IDB6TTg4IDQwMGwwIDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC04MCAxNiAwIDAgODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTgwIDE3LjggMGMxMC45IDAgMTguNi0xMC43IDE1LjItMjEuMWwtMzEuMS05My40IDI4LjYgMzcuOGMxMC43IDE0LjEgMzAuOCAxNi44IDQ0LjggNi4yczE2LjgtMzAuNyA2LjItNDQuOEwyNTQuNiAyMDdjLTIyLjQtMjkuNi01Ny41LTQ3LTk0LjYtNDdzLTcyLjIgMTcuNC05NC42IDQ3TDYuNSAyODQuN2MtMTAuNyAxNC4xLTcuOSAzNC4yIDYuMiA0NC44czM0LjIgNy45IDQ0LjgtNi4ybDI4LjctMzcuOEw1NSAzNzguOUM1MS42IDM4OS4zIDU5LjMgNDAwIDcwLjIgNDAwTDg4IDQwMHpcIl1cbn07XG5jb25zdCBmYVVzZXJzQmV0d2VlbkxpbmVzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3VzZXJzLWJldHdlZW4tbGluZXMnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU1OTFcIiwgXCJNMCAyNEMwIDEwLjcgMTAuNyAwIDI0IDBMNjE2IDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRMMjQgNDhDMTAuNyA0OCAwIDM3LjMgMCAyNHpNMCA0ODhjMC0xMy4zIDEwLjctMjQgMjQtMjRsNTkyIDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRMMjQgNTEyYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHpNODMuMiAxNjBhNjQgNjQgMCAxIDEgMTI4IDAgNjQgNjQgMCAxIDEgLTEyOCAwek0zMiAzMjBjMC0zNS4zIDI4LjctNjQgNjQtNjRsOTYgMGMxMi4yIDAgMjMuNyAzLjQgMzMuNCA5LjRjLTM3LjIgMTUuMS02NS42IDQ3LjItNzUuOCA4Ni42TDY0IDM1MmMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6bTQ2MS42IDMyYy0xMC4zLTQwLjEtMzkuNi03Mi42LTc3LjctODcuNGM5LjQtNS41IDIwLjQtOC42IDMyLjEtOC42bDk2IDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRjMCAxNy43LTE0LjMgMzItMzIgMzJsLTgyLjQgMHpNMzkxLjIgMjkwLjRjMzIuMSA3LjQgNTguMSAzMC45IDY4LjkgNjEuNmMzLjUgMTAgNS41IDIwLjggNS41IDMyYzAgMTcuNy0xNC4zIDMyLTMyIDMybC0yMjQgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJjMC0xMS4yIDEuOS0yMiA1LjUtMzJjMTAuNS0yOS43IDM1LjMtNTIuOCA2Ni4xLTYwLjljNy44LTIuMSAxNi0zLjEgMjQuNS0zLjFsOTYgMGM3LjQgMCAxNC43IC44IDIxLjYgMi40em00NC0xMzAuNGE2NCA2NCAwIDEgMSAxMjggMCA2NCA2NCAwIDEgMSAtMTI4IDB6TTMyMS42IDk2YTgwIDgwIDAgMSAxIDAgMTYwIDgwIDgwIDAgMSAxIDAtMTYwelwiXVxufTtcbmNvbnN0IGZhTHVuZ3NWaXJ1cyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdsdW5ncy12aXJ1cycsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTA2N1wiLCBcIk0zMjAgMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDEyNC4yYy04LjUtNy42LTE5LjctMTIuMi0zMi0xMi4ycy0yMy41IDQuNi0zMiAxMi4yTDI4OCAzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNNDQ0LjUgMTk1LjVjLTE2LjQtMTYuNC00MS44LTE4LjUtNjAuNS02LjFsMC0yNC4xQzM4NCAxMjcgNDE1IDk2IDQ1My4zIDk2YzIxLjcgMCA0Mi44IDEwLjIgNTUuOCAyOC44YzE1LjQgMjIuMSA0NC4zIDY1LjQgNzEgMTE2LjljMjYuNSA1MC45IDUyLjQgMTEyLjUgNTkuNiAxNzAuM2MuMiAxLjMgLjIgMi42IC4yIDRsMCA3YzAgNDkuMS0zOS44IDg5LTg5IDg5Yy03LjMgMC0xNC41LS45LTIxLjYtMi43bC03Mi43LTE4LjJjLTIwLjktNS4yLTM4LjctMTcuMS01MS41LTMyLjljMTQgMS41IDI4LjUtMyAzOS4yLTEzLjhsLTIyLjYtMjIuNiAyMi42IDIyLjZjMTguNy0xOC43IDE4LjctNDkuMSAwLTY3LjljLTEuMS0xLjEtMS40LTItMS41LTIuNWMtLjEtLjgtLjEtMS44IC40LTIuOXMxLjItMS45IDEuOC0yLjNjLjUtLjMgMS4zLS44IDIuOS0uOGMyNi41IDAgNDgtMjEuNSA0OC00OHMtMjEuNS00OC00OC00OGMtMS42IDAtMi40LS40LTIuOS0uOGMtLjYtLjQtMS4zLTEuMi0xLjgtMi4zcy0uNS0yLjItLjQtMi45Yy4xLS42IC40LTEuNCAxLjUtMi41YzE4LjctMTguNyAxOC43LTQ5LjEgMC02Ny45ek00MjEuOCA0MjEuOGMtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBDMzc1LjkgMzk4LjUgMzM2IDQxNSAzMzYgNDQ4YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2YzAtMzMtMzkuOS00OS41LTYzLjItMjYuMmMtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBzLTYuMi0xNi40IDAtMjIuNkMyNDEuNSAzNzUuOSAyMjUgMzM2IDE5MiAzMzZjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZjMzMgMCA0OS41LTM5LjkgMjYuMi02My4yYy02LjItNi4yLTYuMi0xNi40IDAtMjIuNnMxNi40LTYuMiAyMi42IDBDMjY0LjEgMjQxLjUgMzA0IDIyNSAzMDQgMTkyYzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZjMCAzMyAzOS45IDQ5LjUgNjMuMiAyNi4yYzYuMi02LjIgMTYuNC02LjIgMjIuNiAwczYuMiAxNi40IDAgMjIuNkMzOTguNSAyNjQuMSA0MTUgMzA0IDQ0OCAzMDRjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZjLTMzIDAtNDkuNSAzOS45LTI2LjIgNjMuMmM2LjIgNi4yIDYuMiAxNi40IDAgMjIuNnpNMTgzLjMgNDkxLjJsLTcyLjcgMTguMmMtNy4xIDEuOC0xNC4zIDIuNy0yMS42IDIuN2MtNDkuMSAwLTg5LTM5LjgtODktODlsMC03YzAtMS4zIC4xLTIuNyAuMi00YzcuMi01Ny45IDMzLjEtMTE5LjQgNTkuNi0xNzAuM2MyNi44LTUxLjUgNTUuNi05NC44IDcxLTExNi45YzEzLTE4LjYgMzQtMjguOCA1NS44LTI4LjhDMjI1IDk2IDI1NiAxMjcgMjU2IDE2NS4zbDAgMjQuMWMtMTguNi0xMi40LTQ0LTEwLjMtNjAuNSA2LjFjLTE4LjcgMTguNy0xOC43IDQ5LjEgMCA2Ny45YzEuMSAxLjEgMS40IDIgMS41IDIuNWMuMSAuOCAuMSAxLjgtLjQgMi45cy0xLjIgMS45LTEuOCAyLjNjLS41IC4zLTEuMyAuOC0yLjkgLjhjLTI2LjUgMC00OCAyMS41LTQ4IDQ4czIxLjUgNDggNDggNDhjMS42IDAgMi40IC40IDIuOSAuOGMuNiAuNCAxLjMgMS4yIDEuOCAyLjNzLjUgMi4yIC40IDIuOWMtLjEgLjYtLjQgMS40LTEuNSAyLjVjLTE4LjcgMTguNy0xOC43IDQ5LjEgMCA2Ny45YzEwLjcgMTAuNyAyNS4zIDE1LjMgMzkuMiAxMy44Yy0xMi44IDE1LjktMzAuNiAyNy43LTUxLjUgMzIuOXpNMjk2IDMyMGEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6bTcyIDMyYTE2IDE2IDAgMSAwIC0zMiAwIDE2IDE2IDAgMSAwIDMyIDB6XCJdXG59O1xuY29uc3QgZmFGYWNlR3JpblRlYXJzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZhY2UtZ3Jpbi10ZWFycycsXG4gIGljb246IFs2NDAsIDUxMiwgWzEyODUxNCwgXCJncmluLXRlYXJzXCJdLCBcImY1ODhcIiwgXCJNNTQ4LjYgMzcxLjRDNTA2LjQgNDU0LjggNDE5LjkgNTEyIDMyMCA1MTJzLTE4Ni40LTU3LjItMjI4LjYtMTQwLjZjNC41LTIuOSA4LjctNi4zIDEyLjctMTAuM2M4LjEtOC4xIDEzLjItMTguNiAxNi41LTI2LjZjMy42LTguOCA2LjUtMTguNCA4LjgtMjcuNWM0LjYtMTguMiA3LjctMzcgOS4zLTQ4LjJjMy45LTI2LjUtMTguOC00OS4yLTQ1LjItNDUuNGMtNi44IC45LTE2LjIgMi40LTI2LjYgNC40Qzg1LjMgOTQuNSAxOTEuNiAwIDMyMCAwUzU1NC43IDk0LjUgNTczLjIgMjE3LjdjLTEwLjMtMi0xOS44LTMuNS0yNi42LTQuNGMtMjYuNS0zLjktNDkuMiAxOC44LTQ1LjIgNDUuNGMxLjYgMTEuMyA0LjYgMzAgOS4zIDQ4LjJjMi4zIDkuMSA1LjIgMTguOCA4LjggMjcuNWMzLjMgOC4xIDguNCAxOC41IDE2LjUgMjYuNmMzLjkgMy45IDguMiA3LjQgMTIuNyAxMC4zek0xMDcgMjU0LjFjLTMuMSAyMS41LTExLjQgNzAuMi0yNS41IDg0LjRjLS45IDEtMS45IDEuOC0yLjkgMi43QzYwIDM1Ni43IDMyIDM1NS41IDE0LjMgMzM3LjdjLTE4LjctMTguNy0xOS4xLTQ4LjgtLjctNjcuMmM4LjYtOC42IDMwLjEtMTUuMSA1MC41LTE5LjZjMTMtMi44IDI1LjUtNC44IDMzLjktNmM1LjQtLjggOS45IDMuNyA5IDl6bTQ1NC41IDg3LjFjLS44LS42LTEuNS0xLjMtMi4zLTJjLS4yLS4yLS41LS40LS43LS43Yy0xNC4xLTE0LjEtMjIuNS02Mi45LTI1LjUtODQuNGMtLjgtNS40IDMuNy05LjkgOS05YzEgLjEgMi4yIC4zIDMuMyAuNWM4LjIgMS4yIDE5LjIgMyAzMC42IDUuNWMyMC40IDQuNCA0MS45IDEwLjkgNTAuNSAxOS42YzE4LjQgMTguNCAxOCA0OC41LS43IDY3LjJjLTE3LjcgMTcuNy00NS43IDE5LTY0LjIgMy40em0tOTAuMS05LjdjNS0xMS44LTctMjIuNS0xOS4zLTE4LjdjLTM5LjcgMTIuMi04NC41IDE5LTEzMS44IDE5cy05Mi4xLTYuOC0xMzEuOC0xOWMtMTIuMy0zLjgtMjQuMyA2LjktMTkuMyAxOC43YzI1IDU5LjEgODMuMiAxMDAuNSAxNTEuMSAxMDAuNXMxMjYuMi00MS40IDE1MS4xLTEwMC41ek0yODEuNiAyMjguOHMwIDAgMCAwczAgMCAwIDBzMCAwIDAgMGMyLjEgMi44IDUuNyAzLjkgOC45IDIuOHM1LjUtNC4xIDUuNS03LjZjMC0xNy45LTYuNy0zNS42LTE2LjYtNDguOGMtOS44LTEzLTIzLjktMjMuMi0zOS40LTIzLjJzLTI5LjYgMTAuMi0zOS40IDIzLjJDMTkwLjcgMTg4LjQgMTg0IDIwNi4xIDE4NCAyMjRjMCAzLjQgMi4yIDYuNSA1LjUgNy42czYuOSAwIDguOS0yLjhjMCAwIDAgMCAwIDBzMCAwIDAgMGMwIDAgMCAwIDAgMGwuMi0uMmMuMi0uMiAuNC0uNSAuNy0uOWMuNi0uOCAxLjYtMiAyLjgtMy40YzIuNS0yLjggNi02LjYgMTAuMi0xMC4zYzguOC03LjggMTguOC0xNCAyNy43LTE0czE4LjkgNi4yIDI3LjcgMTRjNC4yIDMuNyA3LjcgNy41IDEwLjIgMTAuM2MxLjIgMS40IDIuMiAyLjYgMi44IDMuNGMuMyAuNCAuNiAuNyAuNyAuOWwuMiAuMmMwIDAgMCAwIDAgMHptMTYwIDBzMCAwIDAgMHMwIDAgMCAwYzIuMSAyLjggNS43IDMuOSA4LjkgMi44czUuNS00LjEgNS41LTcuNmMwLTE3LjktNi43LTM1LjYtMTYuNi00OC44Yy05LjgtMTMtMjMuOS0yMy4yLTM5LjQtMjMuMnMtMjkuNiAxMC4yLTM5LjQgMjMuMkMzNTAuNyAxODguNCAzNDQgMjA2LjEgMzQ0IDIyNGMwIDMuNCAyLjIgNi41IDUuNSA3LjZzNi45IDAgOC45LTIuOGMwIDAgMCAwIDAgMHMwIDAgMCAwYzAgMCAwIDAgMCAwbC4yLS4yYy4yLS4yIC40LS41IC43LS45Yy42LS44IDEuNi0yIDIuOC0zLjRjMi41LTIuOCA2LTYuNiAxMC4yLTEwLjNjOC44LTcuOCAxOC44LTE0IDI3LjctMTRzMTguOSA2LjIgMjcuNyAxNGM0LjIgMy43IDcuNyA3LjUgMTAuMiAxMC4zYzEuMiAxLjQgMi4yIDIuNiAyLjggMy40Yy4zIC40IC42IC43IC43IC45bC4yIC4yYzAgMCAwIDAgMCAwYzAgMCAwIDAgMCAwelwiXVxufTtcbmNvbnN0IGZhR3JpblRlYXJzID0gZmFGYWNlR3JpblRlYXJzO1xuY29uc3QgZmFQaG9uZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwaG9uZScsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyODIyMiwgMTI4Mzc5XSwgXCJmMDk1XCIsIFwiTTE2NC45IDI0LjZjLTcuNy0xOC42LTI4LTI4LjUtNDcuNC0yMy4ybC04OCAyNEMxMi4xIDMwLjIgMCA0NiAwIDY0QzAgMzExLjQgMjAwLjYgNTEyIDQ0OCA1MTJjMTggMCAzMy44LTEyLjEgMzguNi0yOS41bDI0LTg4YzUuMy0xOS40LTQuNi0zOS43LTIzLjItNDcuNGwtOTYtNDBjLTE2LjMtNi44LTM1LjItMi4xLTQ2LjMgMTEuNkwzMDQuNyAzNjhDMjM0LjMgMzM0LjcgMTc3LjMgMjc3LjcgMTQ0IDIwNy4zTDE5My4zIDE2N2MxMy43LTExLjIgMTguNC0zMCAxMS42LTQ2LjNsLTQwLTk2elwiXVxufTtcbmNvbnN0IGZhQ2FsZW5kYXJYbWFyayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjYWxlbmRhci14bWFyaycsXG4gIGljb246IFs0NDgsIDUxMiwgW1wiY2FsZW5kYXItdGltZXNcIl0sIFwiZjI3M1wiLCBcIk0xMjggMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDMyIDEyOCAwIDAtMzJjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMmwwIDMyIDQ4IDBjMjYuNSAwIDQ4IDIxLjUgNDggNDhsMCA0OEwwIDE2MGwwLTQ4QzAgODUuNSAyMS41IDY0IDQ4IDY0bDQ4IDAgMC0zMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNMCAxOTJsNDQ4IDAgMCAyNzJjMCAyNi41LTIxLjUgNDgtNDggNDhMNDggNTEyYy0yNi41IDAtNDgtMjEuNS00OC00OEwwIDE5MnpNMzA1IDMwNWM5LjQtOS40IDkuNC0yNC42IDAtMzMuOXMtMjQuNi05LjQtMzMuOSAwbC00NyA0Ny00Ny00N2MtOS40LTkuNC0yNC42LTkuNC0zMy45IDBzLTkuNCAyNC42IDAgMzMuOWw0NyA0Ny00NyA0N2MtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwbDQ3LTQ3IDQ3IDQ3YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwczkuNC0yNC42IDAtMzMuOWwtNDctNDcgNDctNDd6XCJdXG59O1xuY29uc3QgZmFDYWxlbmRhclRpbWVzID0gZmFDYWxlbmRhclhtYXJrO1xuY29uc3QgZmFDaGlsZFJlYWNoaW5nID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NoaWxkLXJlYWNoaW5nJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJlNTlkXCIsIFwiTTI1NiA2NEE2NCA2NCAwIDEgMCAxMjggNjRhNjQgNjQgMCAxIDAgMTI4IDB6TTE1Mi45IDE2OS4zYy0yMy43LTguNC00NC41LTI0LjMtNTguOC00NS44TDc0LjYgOTQuMkM2NC44IDc5LjUgNDUgNzUuNiAzMC4yIDg1LjRzLTE4LjcgMjkuNy04LjkgNDQuNEw0MC45IDE1OWMxOC4xIDI3LjEgNDIuOCA0OC40IDcxLjEgNjIuNEwxMTIgNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC05NiAzMiAwIDAgOTZjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTI1OC40YzI5LjEtMTQuMiA1NC40LTM2LjIgNzIuNy02NC4ybDE4LjItMjcuOWM5LjYtMTQuOCA1LjQtMzQuNi05LjQtNDQuM3MtMzQuNi01LjUtNDQuMyA5LjRMMjkxIDEyMi40Yy0yMS44IDMzLjQtNTguOSA1My42LTk4LjggNTMuNmMtMTIuNiAwLTI0LjktMi0zNi42LTUuOGMtLjktLjMtMS44LS43LTIuNy0uOXpcIl1cbn07XG5jb25zdCBmYUhlYWRTaWRlVmlydXMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGVhZC1zaWRlLXZpcnVzJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJlMDY0XCIsIFwiTTAgMjI0LjJDMCAxMDAuNiAxMDAuMiAwIDIyNCAwbDI0IDBjOTUuMiAwIDE4MS4yIDY5LjMgMTk3LjMgMTYwLjJjMi4zIDEzIDYuOCAyNS43IDE1LjEgMzZsNDIgNTIuNmM2LjIgNy44IDkuNiAxNy40IDkuNiAyNy40YzAgMjQuMi0xOS42IDQzLjgtNDMuOCA0My44TDQ0OCAzMjBsMCA2NGMwIDM1LjMtMjguNyA2NC02NCA2NGwtNjQgMCAwIDMyYzAgMTcuNy0xNC4zIDMyLTMyIDMyTDk2IDUxMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC03Mi43YzAtMTYuNy02LjktMzIuNS0xNy4xLTQ1LjhDMTYuNiAzMjIuNCAwIDI3NC4xIDAgMjI0LjJ6TTIyNCA2NGMtOC44IDAtMTYgNy4yLTE2IDE2YzAgMzMtMzkuOSA0OS41LTYzLjIgMjYuMmMtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBzLTYuMiAxNi40IDAgMjIuNkMxNDUuNSAxNTIuMSAxMjkgMTkyIDk2IDE5MmMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmMzMyAwIDQ5LjUgMzkuOSAyNi4yIDYzLjJjLTYuMiA2LjItNi4yIDE2LjQgMCAyMi42czE2LjQgNi4yIDIyLjYgMEMxNjguMSAyODYuNSAyMDggMzAzIDIwOCAzMzZjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNmMwLTMzIDM5LjktNDkuNSA2My4yLTI2LjJjNi4yIDYuMiAxNi40IDYuMiAyMi42IDBzNi4yLTE2LjQgMC0yMi42QzMwMi41IDI2My45IDMxOSAyMjQgMzUyIDIyNGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNmMtMzMgMC00OS41LTM5LjktMjYuMi02My4yYzYuMi02LjIgNi4yLTE2LjQgMC0yMi42cy0xNi40LTYuMi0yMi42IDBDMjc5LjkgMTI5LjUgMjQwIDExMyAyNDAgODBjMC04LjgtNy4yLTE2LTE2LTE2em0tMjQgOTZhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4em00MCA4MGExNiAxNiAwIDEgMSAzMiAwIDE2IDE2IDAgMSAxIC0zMiAwelwiXVxufTtcbmNvbnN0IGZhVXNlckdlYXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndXNlci1nZWFyJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXCJ1c2VyLWNvZ1wiXSwgXCJmNGZlXCIsIFwiTTIyNCAwYTEyOCAxMjggMCAxIDEgMCAyNTZBMTI4IDEyOCAwIDEgMSAyMjQgMHpNMTc4LjMgMzA0bDkxLjQgMGMxMS44IDAgMjMuNCAxLjIgMzQuNSAzLjNjLTIuMSAxOC41IDcuNCAzNS42IDIxLjggNDQuOGMtMTYuNiAxMC42LTI2LjcgMzEuNi0yMCA1My4zYzQgMTIuOSA5LjQgMjUuNSAxNi40IDM3LjZzMTUuMiAyMy4xIDI0LjQgMzNjMTUuNyAxNi45IDM5LjYgMTguNCA1Ny4yIDguN2wwIC45YzAgOS4yIDIuNyAxOC41IDcuOSAyNi4zTDI5LjcgNTEyQzEzLjMgNTEyIDAgNDk4LjcgMCA0ODIuM0MwIDM4My44IDc5LjggMzA0IDE3OC4zIDMwNHpNNDM2IDIxOC4yYzAtNyA0LjUtMTMuMyAxMS4zLTE0LjhjMTAuNS0yLjQgMjEuNS0zLjcgMzIuNy0zLjdzMjIuMiAxLjMgMzIuNyAzLjdjNi44IDEuNSAxMS4zIDcuOCAxMS4zIDE0LjhsMCAzMC42YzcuOSAzLjQgMTUuNCA3LjcgMjIuMyAxMi44bDI0LjktMTQuM2M2LjEtMy41IDEzLjctMi43IDE4LjUgMi40YzcuNiA4LjEgMTQuMyAxNy4yIDIwLjEgMjcuMnMxMC4zIDIwLjQgMTMuNSAzMWMyLjEgNi43LTEuMSAxMy43LTcuMiAxNy4ybC0yNSAxNC40Yy40IDQgLjcgOC4xIC43IDEyLjNzLS4yIDguMi0uNyAxMi4zbDI1IDE0LjRjNi4xIDMuNSA5LjIgMTAuNSA3LjIgMTcuMmMtMy4zIDEwLjYtNy44IDIxLTEzLjUgMzFzLTEyLjUgMTkuMS0yMC4xIDI3LjJjLTQuOCA1LjEtMTIuNSA1LjktMTguNSAyLjRsLTI0LjktMTQuM2MtNi45IDUuMS0xNC4zIDkuNC0yMi4zIDEyLjhsMCAzMC42YzAgNy00LjUgMTMuMy0xMS4zIDE0LjhjLTEwLjUgMi40LTIxLjUgMy43LTMyLjcgMy43cy0yMi4yLTEuMy0zMi43LTMuN2MtNi44LTEuNS0xMS4zLTcuOC0xMS4zLTE0LjhsMC0zMC41Yy04LTMuNC0xNS42LTcuNy0yMi41LTEyLjlsLTI0LjcgMTQuM2MtNi4xIDMuNS0xMy43IDIuNy0xOC41LTIuNGMtNy42LTguMS0xNC4zLTE3LjItMjAuMS0yNy4ycy0xMC4zLTIwLjQtMTMuNS0zMWMtMi4xLTYuNyAxLjEtMTMuNyA3LjItMTcuMmwyNC44LTE0LjNjLS40LTQuMS0uNy04LjItLjctMTIuNHMuMi04LjMgLjctMTIuNEwzNDMuOCAzMjVjLTYuMS0zLjUtOS4yLTEwLjUtNy4yLTE3LjJjMy4zLTEwLjYgNy43LTIxIDEzLjUtMzFzMTIuNS0xOS4xIDIwLjEtMjcuMmM0LjgtNS4xIDEyLjQtNS45IDE4LjUtMi40bDI0LjggMTQuM2M2LjktNS4xIDE0LjUtOS40IDIyLjUtMTIuOWwwLTMwLjV6bTkyLjEgMTMzLjVhNDguMSA0OC4xIDAgMSAwIC05Ni4xIDAgNDguMSA0OC4xIDAgMSAwIDk2LjEgMHpcIl1cbn07XG5jb25zdCBmYVVzZXJDb2cgPSBmYVVzZXJHZWFyO1xuY29uc3QgZmFBcnJvd1VwMTkgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYXJyb3ctdXAtMS05JyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXCJzb3J0LW51bWVyaWMtdXBcIl0sIFwiZjE2M1wiLCBcIk00NTAuNyAzOGM4LjMgNiAxMy4zIDE1LjcgMTMuMyAyNmwwIDk2IDE2IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTQ4IDAtNDggMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmwxNiAwIDAtNTEuNi01LjkgMmMtMTYuOCA1LjYtMzQuOS0zLjUtNDAuNS0yMC4yczMuNS0zNC45IDIwLjItNDAuNWw0OC0xNmM5LjgtMy4zIDIwLjUtMS42IDI4LjggNC40ek0xNjAgMzJjOSAwIDE3LjUgMy44IDIzLjYgMTAuNGw4OCA5NmMxMS45IDEzIDExLjEgMzMuMy0yIDQ1LjJzLTMzLjMgMTEuMS00NS4yLTJMMTkyIDE0Ni4zIDE5MiA0NDhjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC0zMDEuN0w5NS42IDE4MS42Yy0xMS45IDEzLTMyLjIgMTMuOS00NS4yIDJzLTEzLjktMzIuMi0yLTQ1LjJsODgtOTZDMTQyLjUgMzUuOCAxNTEgMzIgMTYwIDMyek00NDUuNyAzNjQuOUEzMiAzMiAwIDEgMCA0MTguMyAzMDdhMzIgMzIgMCAxIDAgMjcuNCA1Ny45em0tNDAuNyA1NC45QzM2OS42IDQwOC40IDM0NCAzNzUuMiAzNDQgMzM2YzAtNDguNiAzOS40LTg4IDg4LTg4czg4IDM5LjQgODggODhjMCAyMy41LTcuNSA0Ni4zLTIxLjUgNjUuMkw0NDkuNyA0NjdjLTEwLjUgMTQuMi0zMC42IDE3LjItNDQuOCA2LjdzLTE3LjItMzAuNi02LjctNDQuOGw2LjgtOS4yelwiXVxufTtcbmNvbnN0IGZhU29ydE51bWVyaWNVcCA9IGZhQXJyb3dVcDE5O1xuY29uc3QgZmFEb29yQ2xvc2VkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Rvb3ItY2xvc2VkJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbMTI4NjgyXSwgXCJmNTJhXCIsIFwiTTk2IDY0YzAtMzUuMyAyOC43LTY0IDY0LTY0TDQxNiAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMzg0IDY0IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTExMiAwLTI4OCAwTDMyIDUxMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmw2NCAwTDk2IDY0ek0zODQgMjg4YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHpcIl1cbn07XG5jb25zdCBmYVNoaWVsZFZpcnVzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NoaWVsZC12aXJ1cycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZTA2Y1wiLCBcIk0yNjkuNCAyLjlDMjY1LjIgMSAyNjAuNyAwIDI1NiAwcy05LjIgMS0xMy40IDIuOUw1NC4zIDgyLjhjLTIyIDkuMy0zOC40IDMxLTM4LjMgNTcuMmMuNSA5OS4yIDQxLjMgMjgwLjcgMjEzLjYgMzYzLjJjMTYuNyA4IDM2LjEgOCA1Mi44IDBDNDU0LjcgNDIwLjcgNDk1LjUgMjM5LjIgNDk2IDE0MGMuMS0yNi4yLTE2LjMtNDcuOS0zOC4zLTU3LjJMMjY5LjQgMi45ek0yNTYgMTEyYzguOCAwIDE2IDcuMiAxNiAxNmMwIDMzIDM5LjkgNDkuNSA2My4yIDI2LjJjNi4yLTYuMiAxNi40LTYuMiAyMi42IDBzNi4yIDE2LjQgMCAyMi42QzMzNC41IDIwMC4xIDM1MSAyNDAgMzg0IDI0MGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNmMtMzMgMC00OS41IDM5LjktMjYuMiA2My4yYzYuMiA2LjIgNi4yIDE2LjQgMCAyMi42cy0xNi40IDYuMi0yMi42IDBDMzExLjkgMzM0LjUgMjcyIDM1MSAyNzIgMzg0YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2YzAtMzMtMzkuOS00OS41LTYzLjItMjYuMmMtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBzLTYuMi0xNi40IDAtMjIuNkMxNzcuNSAzMTEuOSAxNjEgMjcyIDEyOCAyNzJjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZjMzMgMCA0OS41LTM5LjkgMjYuMi02My4yYy02LjItNi4yLTYuMi0xNi40IDAtMjIuNnMxNi40LTYuMiAyMi42IDBDMjAwLjEgMTc3LjUgMjQwIDE2MSAyNDAgMTI4YzAtOC44IDcuMi0xNiAxNi0xNnpNMjMyIDI1NmEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6bTcyIDMyYTE2IDE2IDAgMSAwIC0zMiAwIDE2IDE2IDAgMSAwIDMyIDB6XCJdXG59O1xuY29uc3QgZmFEaWNlU2l4ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2RpY2Utc2l4JyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbOTg2MV0sIFwiZjUyNlwiLCBcIk0wIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMybDMyMCAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMzIwYzAgMzUuMy0yOC43IDY0LTY0IDY0TDY0IDQ4MGMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCA5NnptMTYwIDY0YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6TTEyOCAyODhhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0em0zMiA2NGEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwek0zMjAgMTkyYTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHptMzIgNjRhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHpNMzIwIDM4NGEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6XCJdXG59O1xuY29uc3QgZmFNb3NxdWl0b05ldCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtb3NxdWl0by1uZXQnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU1MmNcIiwgXCJNMTY4LjggNDYyLjNjLTcuOS00LTExLjEtMTMuNi03LjItMjEuNUwxOTIgMzgwLjJsMC00NC4yYzAtNC4yIDEuNy04LjMgNC43LTExLjNMMjU2IDI2NS40bDAtMjMuMUwxMzkuMiAzNDRDODcuOCAzOTUuMyAwIDM1OC45IDAgMjg2LjNjMC00MS4xIDMwLjYtNzUuOCA3MS40LTgwLjlsMTU5LjktMjMuOS00OS42LTQxLjNjLTUuMS00LjItNy0xMS4xLTQuOS0xNy40bDEzLjktNDEuNy0yOS01OC4xYy00LTcuOS0uNy0xNy41IDcuMi0yMS41czE3LjUtLjcgMjEuNSA3LjJsMzIgNjRjMS45IDMuOCAyLjIgOC4yIC45IDEyLjJsLTEyLjUgMzcuNkwyNTYgMTYwLjVsMC0yMi42YzAtMTQuOSAxMC4xLTI3LjMgMjMuOC0zMWwwLTQzLjNjMC00LjUgMy43LTguMiA4LjItOC4yczguMiAzLjcgOC4yIDguMmwwIDQzLjNjMTMuNyAzLjYgMjMuOCAxNi4xIDIzLjggMzFsMCAyMi42IDQ1LjQtMzcuOEwzNTIuOCA4NS4xYy0xLjMtNC0xLTguNCAuOS0xMi4ybDMyLTY0YzQtNy45IDEzLjYtMTEuMSAyMS41LTcuMnMxMS4xIDEzLjYgNy4yIDIxLjVsLTI5IDU4LjEgMTMuOSA0MS43YzIuMSA2LjIgLjEgMTMuMS00LjkgMTcuNGwtNDkuNiA0MS4zIDE1OS45IDIzLjljMjIuNSAyLjggNDEuOCAxNC42IDU0LjcgMzEuNGMtMi43IDIuNi01LjIgNS40LTcuMyA4LjZjLTguNi0xMi45LTIzLjMtMjEuNS00MC0yMS41cy0zMS40IDguNS00MCAyMS41Yy04LjYtMTIuOS0yMy4zLTIxLjUtNDAtMjEuNWMtMjEuNyAwLTQwIDE0LjMtNDUuOSAzNC4xYy0xMC43IDMuMi0xOS44IDEwLjEtMjUuOSAxOS4ybC00MC4yLTM1IDAgMjMuMSAzMi40IDMyLjRjLS4zIDItLjQgNC4xLS40IDYuMmMwIDE2LjcgOC41IDMxLjQgMjEuNSA0MGMtNCAyLjYtNy41IDUuOS0xMC42IDkuNUwzMjAgMzEwLjZsMCA1MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTUwLTMyIDMyIDAgNDEuNGMwIDIuNS0uNiA0LjktMS43IDcuMmwtMzIgNjRjLTQgNy45LTEzLjYgMTEuMS0yMS41IDcuMnpNNTEyIDI1NmM4LjggMCAxNiA3LjIgMTYgMTZsMCAxNiA0OCAwIDAtMTZjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNmwwIDE2IDE2IDBjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZsLTE2IDAgMCA0OCAxNiAwYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2bC0xNiAwIDAgNDggMTYgMGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNmwtMTYgMCAwIDE2YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2bDAtMTYtNDggMCAwIDE2YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2bDAtMTYtNDggMCAwIDE2YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2bDAtMTYtMTYgMGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmwxNiAwIDAtNDgtMTYgMGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmwxNiAwIDAtNDgtMTYgMGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmwxNiAwIDAtMTZjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNmwwIDE2IDQ4IDAgMC0xNmMwLTguOCA3LjItMTYgMTYtMTZ6bTE2IDExMmw0OCAwIDAtNDgtNDggMCAwIDQ4em0wIDgwbDQ4IDAgMC00OC00OCAwIDAgNDh6TTQ0OCAzMjBsMCA0OCA0OCAwIDAtNDgtNDggMHptMCA4MGwwIDQ4IDQ4IDAgMC00OC00OCAwelwiXVxufTtcbmNvbnN0IGZhQnJpZGdlV2F0ZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYnJpZGdlLXdhdGVyJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJlNGNlXCIsIFwiTTAgOTZDMCA3OC4zIDE0LjMgNjQgMzIgNjRsNTEyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCAzNS42YzAgMTUuNy0xMi43IDI4LjQtMjguNCAyOC40Yy0zNy4zIDAtNjcuNiAzMC4yLTY3LjYgNjcuNmwwIDEyNC45Yy0xMi45IDAtMjUuOCAzLjktMzYuOCAxMS43Yy0xOCAxMi40LTQwLjEgMjAuMy01OS4yIDIwLjNjMCAwIDAgMCAwIDBsMC0uNSAwLTEyOGMwLTUzLTQzLTk2LTk2LTk2cy05NiA0My05NiA5NmwwIDEyOCAwIC41Yy0xOSAwLTQxLjItNy45LTU5LjEtMjAuM2MtMTEuMS03LjgtMjQtMTEuNy0zNi45LTExLjdsMC0xMjQuOUM5NiAxOTAuMiA2NS44IDE2MCAyOC40IDE2MEMxMi43IDE2MCAwIDE0Ny4zIDAgMTMxLjZMMCA5NnpNMzA2LjUgMzg5LjlDMzI5IDQwNS40IDM1Ni41IDQxNiAzODQgNDE2YzI2LjkgMCA1NS40LTEwLjggNzcuNC0yNi4xYzAgMCAwIDAgMCAwYzExLjktOC41IDI4LjEtNy44IDM5LjIgMS43YzE0LjQgMTEuOSAzMi41IDIxIDUwLjYgMjUuMmMxNy4yIDQgMjcuOSAyMS4yIDIzLjkgMzguNHMtMjEuMiAyNy45LTM4LjQgMjMuOWMtMjQuNS01LjctNDQuOS0xNi41LTU4LjItMjVDNDQ5LjUgNDY5LjcgNDE3IDQ4MCAzODQgNDgwYy0zMS45IDAtNjAuNi05LjktODAuNC0xOC45Yy01LjgtMi43LTExLjEtNS4zLTE1LjYtNy43Yy00LjUgMi40LTkuNyA1LjEtMTUuNiA3LjdjLTE5LjggOS00OC41IDE4LjktODAuNCAxOC45Yy0zMyAwLTY1LjUtMTAuMy05NC41LTI1LjhjLTEzLjQgOC40LTMzLjcgMTkuMy01OC4yIDI1Yy0xNy4yIDQtMzQuNC02LjctMzguNC0yMy45czYuNy0zNC40IDIzLjktMzguNGMxOC4xLTQuMiAzNi4yLTEzLjMgNTAuNi0yNS4yYzExLjEtOS40IDI3LjMtMTAuMSAzOS4yLTEuN2MwIDAgMCAwIDAgMEMxMzYuNyA0MDUuMiAxNjUuMSA0MTYgMTkyIDQxNmMyNy41IDAgNTUtMTAuNiA3Ny41LTI2LjFjMTEuMS03LjkgMjUuOS03LjkgMzcgMHpcIl1cbn07XG5jb25zdCBmYVBlcnNvbkJvb3RoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BlcnNvbi1ib290aCcsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjc1NlwiLCBcIk0yNTYgMzJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJsMCAxNjAgNjQgMCAwLTE2MHptMzIwIDBjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJsMCA0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTQ0OHpNMjI0IDUxMmMxNy43IDAgMzItMTQuMyAzMi0zMmwwLTE2MC02NCAwIDAgMTYwYzAgMTcuNyAxNC4zIDMyIDMyIDMyek0zMjAgMGMtOS4zIDAtMTguMSA0LTI0LjIgMTFzLTguOCAxNi4zLTcuNSAyNS41bDMxLjIgMjE4LjZMMjg4LjYgNDA5LjdjLTMuNSAxNy4zIDcuOCAzNC4yIDI1LjEgMzcuN3MzNC4yLTcuOCAzNy43LTI1LjFsLjctMy42YzEuMyAxNi40IDE1LjEgMjkuNCAzMS45IDI5LjRjMTcuNyAwIDMyLTE0LjMgMzItMzJjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTM4NGMwLTE3LjctMTQuMy0zMi0zMi0zMkwzMjAgMHpNMTEyIDgwQTQ4IDQ4IDAgMSAwIDE2IDgwYTQ4IDQ4IDAgMSAwIDk2IDB6bTAgMjYxLjNsMC03Mi4xIDQuNyA0LjdjOSA5IDIxLjIgMTQuMSAzMy45IDE0LjFsNzMuNCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC02Ni43IDAtNDEuNi00MS42Yy0xNC4zLTE0LjMtMzMuOC0yMi40LTU0LTIyLjRDMjcuNiAxNjAgMCAxODcuNiAwIDIyMS42bDAgNTUuNyAwIC45TDAgNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC05NiAzMiA0Mi43TDk2IDQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtNTguN2MwLTEwLjQtMy40LTIwLjUtOS42LTI4LjhMMTEyIDM0MS4zelwiXVxufTtcbmNvbnN0IGZhVGV4dFdpZHRoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RleHQtd2lkdGgnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYwMzVcIiwgXCJNNjQgMTI4bDAtMzIgMTI4IDAgMCAxMjgtMTYgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmw5NiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC0xNiAwIDAtMTI4IDEyOCAwIDAgMzJjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4TDIyNCAzMiA0OCAzMkMyMS41IDMyIDAgNTMuNSAwIDgwbDAgNDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMnpNOS40IDM2MS40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM2w2NCA2NGM5LjIgOS4yIDIyLjkgMTEuOSAzNC45IDYuOXMxOS44LTE2LjYgMTkuOC0yOS42bDAtMzIgMTkyIDAgMCAzMmMwIDEyLjkgNy44IDI0LjYgMTkuOCAyOS42czI1LjcgMi4yIDM0LjktNi45bDY0LTY0YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zbC02NC02NGMtOS4yLTkuMi0yMi45LTExLjktMzQuOS02LjlzLTE5LjggMTYuNi0xOS44IDI5LjZsMCAzMi0xOTIgMCAwLTMyYzAtMTIuOS03LjgtMjQuNi0xOS44LTI5LjZzLTI1LjctMi4yLTM0LjkgNi45bC02NCA2NHpcIl1cbn07XG5jb25zdCBmYUhhdFdpemFyZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoYXQtd2l6YXJkJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNmU4XCIsIFwiTTY0IDQxNkwxNjguNiAxODAuN2MxNS4zLTM0LjQgNDAuMy02My41IDcyLTgzLjdsMTQ2LjktOTRjMy0xLjkgNi41LTIuOSAxMC0yLjlDNDA3LjcgMCA0MTYgOC4zIDQxNiAxOC42bDAgMS42YzAgMi42LS41IDUuMS0xLjQgNy41TDM1NC44IDE3Ni45Yy0xLjkgNC43LTIuOCA5LjctMi44IDE0LjdjMCA1LjUgMS4yIDExIDMuNCAxNi4xTDQ0OCA0MTZsLTIwNy4xIDAgMTEuOC0zNS40IDQwLjQtMTMuNWM2LjUtMi4yIDEwLjktOC4zIDEwLjktMTUuMnMtNC40LTEzLTEwLjktMTUuMmwtNDAuNC0xMy41LTEzLjUtNDAuNEMyMzcgMjc2LjQgMjMwLjkgMjcyIDIyNCAyNzJzLTEzIDQuNC0xNS4yIDEwLjlsLTEzLjUgNDAuNC00MC40IDEzLjVDMTQ4LjQgMzM5IDE0NCAzNDUuMSAxNDQgMzUyczQuNCAxMyAxMC45IDE1LjJsNDAuNCAxMy41TDIwNy4xIDQxNiA2NCA0MTZ6TTI3OS42IDE0MS41Yy0xLjEtMy4zLTQuMS01LjUtNy42LTUuNXMtNi41IDIuMi03LjYgNS41bC02LjcgMjAuMi0yMC4yIDYuN2MtMy4zIDEuMS01LjUgNC4xLTUuNSA3LjZzMi4yIDYuNSA1LjUgNy42bDIwLjIgNi43IDYuNyAyMC4yYzEuMSAzLjMgNC4xIDUuNSA3LjYgNS41czYuNS0yLjIgNy42LTUuNWw2LjctMjAuMiAyMC4yLTYuN2MzLjMtMS4xIDUuNS00LjEgNS41LTcuNnMtMi4yLTYuNS01LjUtNy42bC0yMC4yLTYuNy02LjctMjAuMnpNMzIgNDQ4bDQ0OCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyTDMyIDUxMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnpcIl1cbn07XG5jb25zdCBmYVBlbkZhbmN5ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3Blbi1mYW5jeScsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyODM5NSwgMTAwMDJdLCBcImY1YWNcIiwgXCJNMzczLjUgMjcuMUMzODguNSA5LjkgNDEwLjIgMCA0MzMgMGM0My42IDAgNzkgMzUuNCA3OSA3OWMwIDIyLjgtOS45IDQ0LjYtMjcuMSA1OS42TDI3Ny43IDMxOWwtMTAuMy0xMC4zLTY0LTY0TDE5MyAyMzQuMyAzNzMuNSAyNy4xek0xNzAuMyAyNTYuOWwxMC40IDEwLjQgNjQgNjQgMTAuNCAxMC40LTE5LjIgODMuNGMtMy45IDE3LjEtMTYuOSAzMC43LTMzLjggMzUuNEwyNC4zIDUxMC4zbDk1LjQtOTUuNGMyLjYgLjcgNS40IDEuMSA4LjMgMS4xYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyYzAgMi45IC40IDUuNiAxLjEgOC4zTDEuNyA0ODcuNiA1MS41IDMxMGM0LjctMTYuOSAxOC4zLTI5LjkgMzUuNC0zMy44bDgzLjQtMTkuMnpcIl1cbn07XG5jb25zdCBmYVBlcnNvbkRpZ2dpbmcgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGVyc29uLWRpZ2dpbmcnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtcImRpZ2dpbmdcIl0sIFwiZjg1ZVwiLCBcIk0yMDggNjRhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHpNOS44IDIxNC44YzUuMS0xMi4yIDE5LjEtMTggMzEuNC0xMi45TDYwLjcgMjEwbDIyLjktMzguMUM5OS45IDE0NC42IDEyOS4zIDEyOCAxNjEgMTI4YzUxLjQgMCA5NyAzMi45IDExMy4zIDgxLjdsMzQuNiAxMDMuNyA3OS4zIDMzLjEgMzQuMi00NS42YzYuNC04LjUgMTYuNi0xMy4zIDI3LjItMTIuOHMyMC4zIDYuNCAyNS44IDE1LjVsOTYgMTYwYzUuOSA5LjkgNi4xIDIyLjIgLjQgMzIuMnMtMTYuMyAxNi4yLTI3LjggMTYuMmwtMjU2IDBjLTExLjEgMC0yMS40LTUuNy0yNy4yLTE1LjJzLTYuNC0yMS4yLTEuNC0zMS4xbDE2LTMyYzUuNC0xMC44IDE2LjUtMTcuNyAyOC42LTE3LjdsMzIgMCAyMi41LTMwTDIyLjggMjQ2LjJjLTEyLjItNS4xLTE4LTE5LjEtMTIuOS0zMS40em04Mi44IDkxLjhsMTEyIDQ4YzExLjggNSAxOS40IDE2LjYgMTkuNCAyOS40bDAgOTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC03NC45LTYwLjYtMjYtMzcgMTExYy01LjYgMTYuOC0yMy43IDI1LjgtNDAuNSAyMC4yUy0zLjkgNDg2LjYgMS42IDQ2OS45bDQ4LTE0NCAxMS0zMyAzMiAxMy43elwiXVxufTtcbmNvbnN0IGZhRGlnZ2luZyA9IGZhUGVyc29uRGlnZ2luZztcbmNvbnN0IGZhVHJhc2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndHJhc2gnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYxZjhcIiwgXCJNMTM1LjIgMTcuN0wxMjggMzIgMzIgMzJDMTQuMyAzMiAwIDQ2LjMgMCA2NFMxNC4zIDk2IDMyIDk2bDM4NCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC05NiAwLTcuMi0xNC4zQzMwNy40IDYuOCAyOTYuMyAwIDI4NC4yIDBMMTYzLjggMGMtMTIuMSAwLTIzLjIgNi44LTI4LjYgMTcuN3pNNDE2IDEyOEwzMiAxMjggNTMuMiA0NjdjMS42IDI1LjMgMjIuNiA0NSA0Ny45IDQ1bDI0NS44IDBjMjUuMyAwIDQ2LjMtMTkuNyA0Ny45LTQ1TDQxNiAxMjh6XCJdXG59O1xuY29uc3QgZmFHYXVnZVNpbXBsZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdnYXVnZS1zaW1wbGUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtcImdhdWdlLXNpbXBsZS1tZWRcIiwgXCJ0YWNob21ldGVyLWF2ZXJhZ2VcIl0sIFwiZjYyOVwiLCBcIk0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6bTMyMCA5NmMwLTI2LjktMTYuNS00OS45LTQwLTU5LjNMMjgwIDg4YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0bDAgMjA0LjdjLTIzLjUgOS41LTQwIDMyLjUtNDAgNTkuM2MwIDM1LjMgMjguNyA2NCA2NCA2NHM2NC0yOC43IDY0LTY0elwiXVxufTtcbmNvbnN0IGZhR2F1Z2VTaW1wbGVNZWQgPSBmYUdhdWdlU2ltcGxlO1xuY29uc3QgZmFUYWNob21ldGVyQXZlcmFnZSA9IGZhR2F1Z2VTaW1wbGU7XG5jb25zdCBmYUJvb2tNZWRpY2FsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Jvb2stbWVkaWNhbCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjdlNlwiLCBcIk0wIDk2QzAgNDMgNDMgMCA5NiAwTDM4NCAwbDMyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCAzMjBjMCAxNy43LTE0LjMgMzItMzIgMzJsMCA2NGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtMzIgMEw5NiA1MTJjLTUzIDAtOTYtNDMtOTYtOTZMMCA5NnpNNjQgNDE2YzAgMTcuNyAxNC4zIDMyIDMyIDMybDI1NiAwIDAtNjRMOTYgMzg0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnpNMjA4IDExMmwwIDQ4LTQ4IDBjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDMyYzAgOC44IDcuMiAxNiAxNiAxNmw0OCAwIDAgNDhjMCA4LjggNy4yIDE2IDE2IDE2bDMyIDBjOC44IDAgMTYtNy4yIDE2LTE2bDAtNDggNDggMGM4LjggMCAxNi03LjIgMTYtMTZsMC0zMmMwLTguOC03LjItMTYtMTYtMTZsLTQ4IDAgMC00OGMwLTguOC03LjItMTYtMTYtMTZsLTMyIDBjLTguOCAwLTE2IDcuMi0xNiAxNnpcIl1cbn07XG5jb25zdCBmYVBvbyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwb28nLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjgxNjldLCBcImYyZmVcIiwgXCJNMjY4LjkgLjljLTUuNS0uNy0xMSAxLjQtMTQuNSA1LjdzLTQuNiAxMC4xLTIuOCAxNS40YzIuOCA4LjIgNC4zIDE2LjkgNC4zIDI2LjFjMCA0NC4xLTM1LjcgNzkuOS03OS44IDgwTDE2MCAxMjhjLTM1LjMgMC02NCAyOC43LTY0IDY0YzAgMTkuMSA4LjQgMzYuMyAyMS43IDQ4TDEwNCAyNDBjLTM5LjggMC03MiAzMi4yLTcyIDcyYzAgMjMuMiAxMSA0My44IDI4IDU3Yy0zNC4xIDUuNy02MCAzNS4zLTYwIDcxYzAgMzkuOCAzMi4yIDcyIDcyIDcybDM2OCAwYzM5LjggMCA3Mi0zMi4yIDcyLTcyYzAtMzUuNy0yNS45LTY1LjMtNjAtNzFjMTctMTMuMiAyOC0zMy44IDI4LTU3YzAtMzkuOC0zMi4yLTcyLTcyLTcybC0xMy43IDBjMTMuMy0xMS43IDIxLjctMjguOSAyMS43LTQ4YzAtMzUuMy0yOC43LTY0LTY0LTY0bC01LjUgMGMzLjUtMTAgNS41LTIwLjggNS41LTMyYzAtNDguNi0zNi4yLTg4LjgtODMuMS05NS4xek0xOTIgMjU2YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHptOTYgMzJhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptNjQgMTA4LjNjMCAyLjQtLjcgNC44LTIuMiA2LjdjLTguMiAxMC41LTM5LjUgNDUtOTMuOCA0NXMtODUuNi0zNC42LTkzLjgtNDVjLTEuNS0xLjktMi4yLTQuMy0yLjItNi43YzAtNi44IDUuNS0xMi4zIDEyLjMtMTIuM2wxNjcuNCAwYzYuOCAwIDEyLjMgNS41IDEyLjMgMTIuM3pcIl1cbn07XG5jb25zdCBmYVF1b3RlUmlnaHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncXVvdGUtcmlnaHQnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFs4MjIxLCBcInF1b3RlLXJpZ2h0LWFsdFwiXSwgXCJmMTBlXCIsIFwiTTQ0OCAyOTZjMCA2Ni4zLTUzLjcgMTIwLTEyMCAxMjBsLTggMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmw4IDBjMzAuOSAwIDU2LTI1LjEgNTYtNTZsMC04LTY0IDBjLTM1LjMgMC02NC0yOC43LTY0LTY0bDAtNjRjMC0zNS4zIDI4LjctNjQgNjQtNjRsNjQgMGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDMyIDAgMzIgMCA3MnptLTI1NiAwYzAgNjYuMy01My43IDEyMC0xMjAgMTIwbC04IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJsOCAwYzMwLjkgMCA1Ni0yNS4xIDU2LTU2bDAtOC02NCAwYy0zNS4zIDAtNjQtMjguNy02NC02NGwwLTY0YzAtMzUuMyAyOC43LTY0IDY0LTY0bDY0IDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCAzMiAwIDMyIDAgNzJ6XCJdXG59O1xuY29uc3QgZmFRdW90ZVJpZ2h0QWx0ID0gZmFRdW90ZVJpZ2h0O1xuY29uc3QgZmFTaGlydCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzaGlydCcsXG4gIGljb246IFs2NDAsIDUxMiwgWzEyODA4NSwgXCJ0LXNoaXJ0XCIsIFwidHNoaXJ0XCJdLCBcImY1NTNcIiwgXCJNMjExLjggMGM3LjggMCAxNC4zIDUuNyAxNi43IDEzLjJDMjQwLjggNTEuOSAyNzcuMSA4MCAzMjAgODBzNzkuMi0yOC4xIDkxLjUtNjYuOEM0MTMuOSA1LjcgNDIwLjQgMCA0MjguMiAwbDEyLjYgMGMyMi41IDAgNDQuMiA3LjkgNjEuNSAyMi4zTDYyOC41IDEyNy40YzYuNiA1LjUgMTAuNyAxMy41IDExLjQgMjIuMXMtMi4xIDE3LjEtNy44IDIzLjZsLTU2IDY0Yy0xMS40IDEzLjEtMzEuMiAxNC42LTQ0LjYgMy41TDQ4MCAxOTcuNyA0ODAgNDQ4YzAgMzUuMy0yOC43IDY0LTY0IDY0bC0xOTIgMGMtMzUuMyAwLTY0LTI4LjctNjQtNjRsMC0yNTAuMy01MS41IDQyLjljLTEzLjMgMTEuMS0zMy4xIDkuNi00NC42LTMuNWwtNTYtNjRjLTUuNy02LjUtOC41LTE1LTcuOC0yMy42czQuOC0xNi42IDExLjQtMjIuMUwxMzcuNyAyMi4zQzE1NSA3LjkgMTc2LjcgMCAxOTkuMiAwbDEyLjYgMHpcIl1cbn07XG5jb25zdCBmYVRTaGlydCA9IGZhU2hpcnQ7XG5jb25zdCBmYVRzaGlydCA9IGZhU2hpcnQ7XG5jb25zdCBmYUN1YmVzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2N1YmVzJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmMWIzXCIsIFwiTTI5MC44IDQ4LjZsNzguNCAyOS43TDI4OCAxMDkuNSAyMDYuOCA3OC4zbDc4LjQtMjkuN2MxLjgtLjcgMy44LS43IDUuNyAwek0xMzYgOTIuNWwwIDExMi4yYy0xLjMgLjQtMi42IC44LTMuOSAxLjNsLTk2IDM2LjRDMTQuNCAyNTAuNiAwIDI3MS41IDAgMjk0LjdMMCA0MTMuOWMwIDIyLjIgMTMuMSA0Mi4zIDMzLjUgNTEuM2w5NiA0Mi4yYzE0LjQgNi4zIDMwLjcgNi4zIDQ1LjEgMEwyODggNDU3LjVsMTEzLjUgNDkuOWMxNC40IDYuMyAzMC43IDYuMyA0NS4xIDBsOTYtNDIuMmMyMC4zLTguOSAzMy41LTI5LjEgMzMuNS01MS4zbDAtMTE5LjFjMC0yMy4zLTE0LjQtNDQuMS0zNi4xLTUyLjRsLTk2LTM2LjRjLTEuMy0uNS0yLjYtLjktMy45LTEuM2wwLTExMi4yYzAtMjMuMy0xNC40LTQ0LjEtMzYuMS01Mi40bC05Ni0zNi40Yy0xMi44LTQuOC0yNi45LTQuOC0zOS43IDBsLTk2IDM2LjRDMTUwLjQgNDguNCAxMzYgNjkuMyAxMzYgOTIuNXpNMzkyIDIxMC42bC04Mi40IDMxLjIgMC04OS4yTDM5MiAxMjFsMCA4OS42ek0xNTQuOCAyNTAuOWw3OC40IDI5LjdMMTUyIDMxMS43IDcwLjggMjgwLjZsNzguNC0yOS43YzEuOC0uNyAzLjgtLjcgNS43IDB6bTE4LjggMjA0LjRsMC0xMDAuNUwyNTYgMzIzLjJsMCA5NS45LTgyLjQgMzYuMnpNNDIxLjIgMjUwLjljMS44LS43IDMuOC0uNyA1LjcgMGw3OC40IDI5LjdMNDI0IDMxMS43bC04MS4yLTMxLjEgNzguNC0yOS43ek01MjMuMiA0MjEuMmwtNzcuNiAzNC4xIDAtMTAwLjVMNTI4IDMyMy4ybDAgOTAuN2MwIDMuMi0xLjkgNi00LjggNy4zelwiXVxufTtcbmNvbnN0IGZhRGl2aWRlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2RpdmlkZScsXG4gIGljb246IFs0NDgsIDUxMiwgWzEwMTM1LCAyNDddLCBcImY1MjlcIiwgXCJNMjcyIDk2YTQ4IDQ4IDAgMSAwIC05NiAwIDQ4IDQ4IDAgMSAwIDk2IDB6bTAgMzIwYTQ4IDQ4IDAgMSAwIC05NiAwIDQ4IDQ4IDAgMSAwIDk2IDB6TTQwMCAyODhjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJMNDggMjI0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDM1MiAwelwiXVxufTtcbmNvbnN0IGZhVGVuZ2VTaWduID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RlbmdlLXNpZ24nLFxuICBpY29uOiBbMzg0LCA1MTIsIFs4Mzc2LCBcInRlbmdlXCJdLCBcImY3ZDdcIiwgXCJNMCA2NEMwIDQ2LjMgMTQuMyAzMiAzMiAzMmwzMjAgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkwzMiA5NkMxNC4zIDk2IDAgODEuNyAwIDY0ek0wIDE5MmMwLTE3LjcgMTQuMy0zMiAzMi0zMmwxNjAgMCAxNjAgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtMTI4IDAgMCAyMjRjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC0yMjRMMzIgMjI0Yy0xNy43IDAtMzItMTQuMy0zMi0zMnpcIl1cbn07XG5jb25zdCBmYVRlbmdlID0gZmFUZW5nZVNpZ247XG5jb25zdCBmYUhlYWRwaG9uZXMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGVhZHBob25lcycsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyNzkxMV0sIFwiZjAyNVwiLCBcIk0yNTYgODBDMTQ5LjkgODAgNjIuNCAxNTkuNCA0OS42IDI2MmM5LjQtMy44IDE5LjYtNiAzMC40LTZjMjYuNSAwIDQ4IDIxLjUgNDggNDhsMCAxMjhjMCAyNi41LTIxLjUgNDgtNDggNDhjLTQ0LjIgMC04MC0zNS44LTgwLTgwbDAtMTYgMC00OCAwLTQ4QzAgMTQ2LjYgMTE0LjYgMzIgMjU2IDMyczI1NiAxMTQuNiAyNTYgMjU2bDAgNDggMCA0OCAwIDE2YzAgNDQuMi0zNS44IDgwLTgwIDgwYy0yNi41IDAtNDgtMjEuNS00OC00OGwwLTEyOGMwLTI2LjUgMjEuNS00OCA0OC00OGMxMC44IDAgMjEgMi4xIDMwLjQgNkM0NDkuNiAxNTkuNCAzNjIuMSA4MCAyNTYgODB6XCJdXG59O1xuY29uc3QgZmFIYW5kc0hvbGRpbmcgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGFuZHMtaG9sZGluZycsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjRjMlwiLCBcIk04MCAxMDRjMC0yMi4xLTE3LjktNDAtNDAtNDBTMCA4MS45IDAgMTA0bDAgNTYgMCA2NEwwIDMyNS41YzAgMjUuNSAxMC4xIDQ5LjkgMjguMSA2Ny45TDEyOCA0OTMuM2MxMiAxMiAyOC4zIDE4LjcgNDUuMyAxOC43bDY2LjcgMGMyNi41IDAgNDgtMjEuNSA0OC00OGwwLTc4LjljMC0yOS43LTExLjgtNTguMi0zMi44LTc5LjJsLTI1LjMtMjUuM2MwIDAgMCAwIDAgMGwtMTUuMi0xNS4yLTMyLTMyYy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM2wzMiAzMiAxNS4yIDE1LjJjMTEgMTEgOS4yIDI5LjItMy43IDM3LjhjLTkuNyA2LjUtMjIuNyA1LjItMzEtMy4xTDk4LjcgMzA5LjVjLTEyLTEyLTE4LjctMjguMy0xOC43LTQ1LjNMODAgMjI0bDAtODAgMC00MHptNDgwIDBsMCA0MCAwIDgwIDAgNDAuMmMwIDE3LTYuNyAzMy4zLTE4LjcgNDUuM2wtNTEuMSA1MS4xYy04LjMgOC4zLTIxLjMgOS42LTMxIDMuMWMtMTIuOS04LjYtMTQuNy0yNi45LTMuNy0zNy44bDE1LjItMTUuMiAzMi0zMmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMGwtMzIgMzItMTUuMiAxNS4yYzAgMCAwIDAgMCAwbC0yNS4zIDI1LjNjLTIxIDIxLTMyLjggNDkuNS0zMi44IDc5LjJsMCA3OC45YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4bDY2LjcgMGMxNyAwIDMzLjMtNi43IDQ1LjMtMTguN2w5OS45LTk5LjljMTgtMTggMjguMS00Mi40IDI4LjEtNjcuOUw2NDAgMjI0bDAtNjQgMC01NmMwLTIyLjEtMTcuOS00MC00MC00MHMtNDAgMTcuOS00MCA0MHpcIl1cbn07XG5jb25zdCBmYUhhbmRzQ2xhcHBpbmcgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGFuZHMtY2xhcHBpbmcnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImUxYThcIiwgXCJNMzM2IDE2bDAgNjRjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZsMC02NGMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2em0tOTguNyA3LjFsMzIgNDhjNC45IDcuNCAyLjkgMTcuMy00LjQgMjIuMnMtMTcuMyAyLjktMjIuMi00LjRsLTMyLTQ4Yy00LjktNy40LTIuOS0xNy4zIDQuNC0yMi4yczE3LjMtMi45IDIyLjIgNC40ek0xMzUgMTE5YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwTDI5Mi43IDI0Mi43YzEwLjEgMTAuMSAyNy4zIDIuOSAyNy4zLTExLjNsMC0zOS40YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJsMCAxNTMuNmMwIDU3LjEtMzAgMTEwLTc4LjkgMTM5LjRjLTY0IDM4LjQtMTQ1LjggMjguMy0xOTguNS0yNC40TDcgMzYxYy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXMyNC42LTkuNCAzMy45IDBsNTMgNTNjNi4xIDYuMSAxNiA2LjEgMjIuMSAwczYuMS0xNiAwLTIyLjFMMjMgMjY1Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXMyNC42LTkuNCAzMy45IDBsOTMgOTNjNi4xIDYuMSAxNiA2LjEgMjIuMSAwczYuMS0xNiAwLTIyLjFMNTUgMTg1Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXMyNC42LTkuNCAzMy45IDBsMTE3IDExN2M2LjEgNi4xIDE2IDYuMSAyMi4xIDBzNi4xLTE2IDAtMjIuMWwtOTMtOTNjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45ek00MzMuMSA0ODQuOWMtMjQuMiAxNC41LTUwLjkgMjIuMS03Ny43IDIzLjFjNDguMS0zOS42IDc2LjYtOTkgNzYuNi0xNjIuNGwwLTk4LjFjOC4yLS4xIDE2LTYuNCAxNi0xNmwwLTM5LjRjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMmwwIDE1My42YzAgNTcuMS0zMCAxMTAtNzguOSAxMzkuNHpNNDI0LjkgMTguN2M3LjQgNC45IDkuMyAxNC44IDQuNCAyMi4ybC0zMiA0OGMtNC45IDcuNC0xNC44IDkuMy0yMi4yIDQuNHMtOS4zLTE0LjgtNC40LTIyLjJsMzItNDhjNC45LTcuNCAxNC44LTkuMyAyMi4yLTQuNHpcIl1cbn07XG5jb25zdCBmYVJlcHVibGljYW4gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncmVwdWJsaWNhbicsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjc1ZVwiLCBcIk0wIDE5MkMwIDEwMy42IDcxLjYgMzIgMTYwIDMybDIyNCAwYzg4LjQgMCAxNjAgNzEuNiAxNjAgMTYwbDAgNjRMMCAyNTZsMC02NHptNDE1LjktNjRjLTIuNCAwLTQuNyAxLjMtNS43IDMuNGwtMTIuNiAyNC42LTI4LjIgNGMtMi40IC4zLTQuNCAyLTUuMiA0LjJzLS4xIDQuNyAxLjYgNi4zbDIwLjQgMTkuMi00LjggMjcuMWMtLjQgMi4zIC42IDQuNyAyLjUgNnM0LjYgMS42IDYuNyAuNWwyNS4yLTEyLjggMjUuMiAxMi44YzIuMiAxLjEgNC44IC45IDYuNy0uNXMzLTMuNyAyLjUtNmwtNC44LTI3LjFMNDY2IDE3MC41YzEuNy0xLjYgMi40LTQuMSAxLjYtNi4zcy0yLjgtMy45LTUuMi00LjJsLTI4LjItNC0xMi42LTI0LjZjLTEuMS0yLjEtMy4zLTMuNC01LjctMy40em0tMTM4LjMgMy40Yy0xLjEtMi4xLTMuMy0zLjQtNS43LTMuNHMtNC43IDEuMy01LjcgMy40bC0xMi42IDI0LjYtMjguMiA0Yy0yLjQgLjMtNC40IDItNS4yIDQuMnMtLjEgNC43IDEuNiA2LjNsMjAuNCAxOS4yLTQuOCAyNy4xYy0uNCAyLjMgLjYgNC43IDIuNSA2czQuNiAxLjYgNi43IC41bDI1LjItMTIuOCAyNS4yIDEyLjhjMi4yIDEuMSA0LjggLjkgNi43LS41czMtMy43IDIuNS02bC00LjgtMjcuMUwzMjIgMTcwLjVjMS43LTEuNiAyLjQtNC4xIDEuNi02LjNzLTIuOC0zLjktNS4yLTQuMmwtMjguMi00LTEyLjYtMjQuNnpNMTI3LjkgMTI4Yy0yLjQgMC00LjcgMS4zLTUuNyAzLjRsLTEyLjYgMjQuNi0yOC4yIDRjLTIuNCAuMy00LjQgMi01LjIgNC4ycy0uMSA0LjcgMS42IDYuM2wyMC40IDE5LjItNC44IDI3LjFjLS40IDIuMyAuNiA0LjcgMi41IDZzNC42IDEuNiA2LjcgLjVsMjUuMi0xMi44IDI1LjIgMTIuOGMyLjIgMS4xIDQuOCAuOSA2LjctLjVzMy0zLjcgMi41LTZsLTQuOC0yNy4xTDE3OCAxNzAuNWMxLjctMS42IDIuNC00LjEgMS42LTYuM3MtMi44LTMuOS01LjItNC4ybC0yOC4yLTQtMTIuNi0yNC42Yy0xLjEtMi4xLTMuMy0zLjQtNS43LTMuNHptLjEgMTYwbDE5MiAwIDk2IDAgMzIgMCA2NCAwIDMyIDAgMCAzMiAwIDgwYzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZsMC00OGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMybDAgNDhjMCA0NC4yLTM1LjggODAtODAgODBzLTgwLTM1LjgtODAtODBsMC00OC0zMiAwIDAgMzIgMCA2NGMwIDE3LjctMTQuMyAzMi0zMiAzMmwtNjQgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC02NC0xOTIgMCAwIDY0YzAgMTcuNy0xNC4zIDMyLTMyIDMybC02NCAwYy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTY0IDAtOTYgMTI4IDB6XCJdXG59O1xuY29uc3QgZmFBcnJvd0xlZnQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYXJyb3ctbGVmdCcsXG4gIGljb246IFs0NDgsIDUxMiwgWzg1OTJdLCBcImYwNjBcIiwgXCJNOS40IDIzMy40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM2wxNjAgMTYwYzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNMMTA5LjIgMjg4IDQxNiAyODhjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTMwNi43IDBMMjE0LjYgMTE4LjZjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBsLTE2MCAxNjB6XCJdXG59O1xuY29uc3QgZmFQZXJzb25DaXJjbGVYbWFyayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwZXJzb24tY2lyY2xlLXhtYXJrJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJlNTQzXCIsIFwiTTExMiA0OGE0OCA0OCAwIDEgMSA5NiAwIDQ4IDQ4IDAgMSAxIC05NiAwem00MCAzMDRsMCAxMjhjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC0yMjMuMUw1OS40IDMwNC41Yy05LjEgMTUuMS0yOC44IDIwLTQzLjkgMTAuOXMtMjAtMjguOC0xMC45LTQzLjlsNTguMy05N2MxNy40LTI4LjkgNDguNi00Ni42IDgyLjMtNDYuNmwyOS43IDBjMzMuNyAwIDY0LjkgMTcuNyA4Mi4zIDQ2LjZsNDQuOSA3NC43Yy0xNi4xIDE3LjYtMjguNiAzOC41LTM2LjYgNjEuNWMtMS45LTEuOC0zLjUtMy45LTQuOS02LjNMMjMyIDI1Ni45IDIzMiA0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC0xMjgtMTYgMHpNNDMyIDIyNGExNDQgMTQ0IDAgMSAxIDAgMjg4IDE0NCAxNDQgMCAxIDEgMC0yODh6bTU5LjMgMTA3LjNjNi4yLTYuMiA2LjItMTYuNCAwLTIyLjZzLTE2LjQtNi4yLTIyLjYgMEw0MzIgMzQ1LjRsLTM2LjctMzYuN2MtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBzLTYuMiAxNi40IDAgMjIuNkw0MDkuNCAzNjhsLTM2LjcgMzYuN2MtNi4yIDYuMi02LjIgMTYuNCAwIDIyLjZzMTYuNCA2LjIgMjIuNiAwTDQzMiAzOTAuNmwzNi43IDM2LjdjNi4yIDYuMiAxNi40IDYuMiAyMi42IDBzNi4yLTE2LjQgMC0yMi42TDQ1NC42IDM2OGwzNi43LTM2Ljd6XCJdXG59O1xuY29uc3QgZmFSdWxlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdydWxlcicsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyODIwN10sIFwiZjU0NVwiLCBcIk0xNzcuOSA0OTQuMWMtMTguNyAxOC43LTQ5LjEgMTguNy02Ny45IDBMMTcuOSA0MDEuOWMtMTguNy0xOC43LTE4LjctNDkuMSAwLTY3LjlsNTAuNy01MC43IDQ4IDQ4YzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwczYuMi0xNi40IDAtMjIuNmwtNDgtNDggNDEuNC00MS40IDQ4IDQ4YzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwczYuMi0xNi40IDAtMjIuNmwtNDgtNDggNDEuNC00MS40IDQ4IDQ4YzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwczYuMi0xNi40IDAtMjIuNmwtNDgtNDggNDEuNC00MS40IDQ4IDQ4YzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwczYuMi0xNi40IDAtMjIuNmwtNDgtNDggNTAuNy01MC43YzE4LjctMTguNyA0OS4xLTE4LjcgNjcuOSAwbDkyLjEgOTIuMWMxOC43IDE4LjcgMTguNyA0OS4xIDAgNjcuOUwxNzcuOSA0OTQuMXpcIl1cbn07XG5jb25zdCBmYUFsaWduTGVmdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhbGlnbi1sZWZ0JyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMDM2XCIsIFwiTTI4OCA2NGMwIDE3LjctMTQuMyAzMi0zMiAzMkwzMiA5NkMxNC4zIDk2IDAgODEuNyAwIDY0UzE0LjMgMzIgMzIgMzJsMjI0IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJ6bTAgMjU2YzAgMTcuNy0xNC4zIDMyLTMyIDMyTDMyIDM1MmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmwyMjQgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnpNMCAxOTJjMC0xNy43IDE0LjMtMzIgMzItMzJsMzg0IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJMMzIgMjI0Yy0xNy43IDAtMzItMTQuMy0zMi0zMnpNNDQ4IDQ0OGMwIDE3LjctMTQuMyAzMi0zMiAzMkwzMiA0ODBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJsMzg0IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJ6XCJdXG59O1xuY29uc3QgZmFEaWNlRDYgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZGljZS1kNicsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjZkMVwiLCBcIk0yMDEgMTAuM2MxNC4zLTcuOCAzMS42LTcuOCA0NiAwTDQyMi4zIDEwNmM1LjEgMi44IDguMyA4LjIgOC4zIDE0cy0zLjIgMTEuMi04LjMgMTRMMjMxLjcgMjM4Yy00LjggMi42LTEwLjUgMi42LTE1LjMgMEwyNS43IDEzNGMtNS4xLTIuOC04LjMtOC4yLTguMy0xNHMzLjItMTEuMiA4LjMtMTRMMjAxIDEwLjN6TTIzLjcgMTcwbDE3NiA5NmM1LjEgMi44IDguMyA4LjIgOC4zIDE0bDAgMjE2YzAgNS42LTMgMTAuOS03LjggMTMuOHMtMTAuOSAzLTE1LjggLjNMMjUgNDIzLjFDOS42IDQxNC43IDAgMzk4LjYgMCAzODFMMCAxODRjMC01LjYgMy0xMC45IDcuOC0xMy44czEwLjktMyAxNS44LS4zem00MDAuNyAwYzUtMi43IDExLTIuNiAxNS44IC4zczcuOCA4LjEgNy44IDEzLjhsMCAxOTdjMCAxNy42LTkuNiAzMy43LTI1IDQyLjFMMjYzLjcgNTEwYy01IDIuNy0xMSAyLjYtMTUuOC0uM3MtNy44LTguMS03LjgtMTMuOGwwLTIxNmMwLTUuOSAzLjItMTEuMiA4LjMtMTRsMTc2LTk2elwiXVxufTtcbmNvbnN0IGZhUmVzdHJvb20gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncmVzdHJvb20nLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY3YmRcIiwgXCJNODAgNDhhNDggNDggMCAxIDEgOTYgMEE0OCA0OCAwIDEgMSA4MCA0OHptNDAgMzA0bDAgMTI4YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtMTU0LjhjLTguMSA5LjItMjEuMSAxMy4yLTMzLjUgOS40Yy0xNi45LTUuMy0yNi4zLTIzLjItMjEtNDAuMWwzMC45LTk5LjFDNDQuOSAxNTUuMyA4MiAxMjggMTI0IDEyOGw4IDBjNDIgMCA3OS4xIDI3LjMgOTEuNiA2Ny40bDMwLjkgOTkuMWM1LjMgMTYuOS00LjEgMzQuOC0yMSA0MC4xYy0xMi40IDMuOS0yNS40LS4yLTMzLjUtOS40TDIwMCA0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC0xMjgtMTYgMHpNMzIwIDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRsMCA0NjRjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRsMC00NjRjMC0xMy4zIDEwLjctMjQgMjQtMjR6TTQ2NCA0OGE0OCA0OCAwIDEgMSA5NiAwIDQ4IDQ4IDAgMSAxIC05NiAwek00NDAgNDgwbDAtOTYtMTcuOCAwYy0xMC45IDAtMTguNi0xMC43LTE1LjItMjEuMWw5LTI2LjljLTMuMiAwLTYuNC0uNS05LjUtMS41Yy0xNi45LTUuMy0yNi4zLTIzLjItMjEtNDAuMWwyOS43LTk1LjJDNDI4LjQgMTU2LjkgNDY3LjYgMTI4IDUxMiAxMjhzODMuNiAyOC45IDk2LjggNzEuMmwyOS43IDk1LjJjNS4zIDE2LjktNC4xIDM0LjgtMjEgNDAuMWMtMy4yIDEtNi40IDEuNS05LjUgMS41bDkgMjYuOWMzLjUgMTAuNC00LjMgMjEuMS0xNS4yIDIxLjFMNTg0IDM4NGwwIDk2YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtOTYtMTYgMCAwIDk2YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyelwiXVxufTtcbmNvbnN0IGZhSiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdqJyxcbiAgaWNvbjogWzMyMCwgNTEyLCBbMTA2XSwgXCI0YVwiLCBcIk0yODggMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCAyNTZjMCA4OC40LTcxLjYgMTYwLTE2MCAxNjBTMCA0MDguNCAwIDMyMGwwLTMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJsMCAzMmMwIDUzIDQzIDk2IDk2IDk2czk2LTQzIDk2LTk2bDAtMjU2YzAtMTcuNyAxNC4zLTMyIDMyLTMyelwiXVxufTtcbmNvbnN0IGZhVXNlcnNWaWV3ZmluZGVyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3VzZXJzLXZpZXdmaW5kZXInLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU1OTVcIiwgXCJNNDggNDhsODggMGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNEwzMiAwQzE0LjMgMCAwIDE0LjMgMCAzMkwwIDEzNmMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0bDAtODh6TTE3NS44IDIyNGE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6bS0yNi41IDMyQzExOS45IDI1NiA5NiAyNzkuOSA5NiAzMDkuM2MwIDE0LjcgMTEuOSAyNi43IDI2LjcgMjYuN2w1Ni4xIDBjOC0zNC4xIDMyLjgtNjEuNyA2NS4yLTczLjZjLTcuNS00LjEtMTYuMi02LjQtMjUuMy02LjRsLTY5LjMgMHptMzY4IDgwYzE0LjcgMCAyNi43LTExLjkgMjYuNy0yNi43YzAtMjkuNS0yMy45LTUzLjMtNTMuMy01My4zbC02OS4zIDBjLTkuMiAwLTE3LjggMi4zLTI1LjMgNi40YzMyLjQgMTEuOSA1Ny4yIDM5LjUgNjUuMiA3My42bDU2LjEgMHptLTg5LjQgMGMtOC42LTI0LjMtMjkuOS00Mi42LTU1LjktNDdjLTMuOS0uNy03LjktMS0xMi0xbC04MCAwYy00LjEgMC04LjEgLjMtMTIgMWMtMjYgNC40LTQ3LjMgMjIuNy01NS45IDQ3Yy0yLjcgNy41LTQuMSAxNS42LTQuMSAyNGMwIDEzLjMgMTAuNyAyNCAyNCAyNGwxNzYgMGMxMy4zIDAgMjQtMTAuNyAyNC0yNGMwLTguNC0xLjQtMTYuNS00LjEtMjR6TTQ2NCAyMjRhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2em0tODAtMzJhNjQgNjQgMCAxIDAgLTEyOCAwIDY0IDY0IDAgMSAwIDEyOCAwek01MDQgNDhsODggMCAwIDg4YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRsMC0xMDRjMC0xNy43LTE0LjMtMzItMzItMzJMNTA0IDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjR6TTQ4IDQ2NGwwLTg4YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0TDAgNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMybDEwNCAwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0bC04OCAwem00NTYgMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGwxMDQgMGMxNy43IDAgMzItMTQuMyAzMi0zMmwwLTEwNGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNGwwIDg4LTg4IDB6XCJdXG59O1xuY29uc3QgZmFGaWxlVmlkZW8gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmlsZS12aWRlbycsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjFjOFwiLCBcIk02NCAwQzI4LjcgMCAwIDI4LjcgMCA2NEwwIDQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NGwyNTYgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTI4OC0xMjggMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJMMjI0IDAgNjQgMHpNMjU2IDBsMCAxMjggMTI4IDBMMjU2IDB6TTY0IDI4OGMwLTE3LjcgMTQuMy0zMiAzMi0zMmw5NiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgOTZjMCAxNy43LTE0LjMgMzItMzIgMzJsLTk2IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtOTZ6TTMwMC45IDM5Ny45TDI1NiAzNjhsMC02NCA0NC45LTI5LjljMi0xLjMgNC40LTIuMSA2LjgtMi4xYzYuOCAwIDEyLjMgNS41IDEyLjMgMTIuM2wwIDEwMy40YzAgNi44LTUuNSAxMi4zLTEyLjMgMTIuM2MtMi40IDAtNC44LS43LTYuOC0yLjF6XCJdXG59O1xuY29uc3QgZmFVcFJpZ2h0RnJvbVNxdWFyZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd1cC1yaWdodC1mcm9tLXNxdWFyZScsXG4gIGljb246IFs1MTIsIDUxMiwgW1wiZXh0ZXJuYWwtbGluay1hbHRcIl0sIFwiZjM1ZFwiLCBcIk0zNTIgMGMtMTIuOSAwLTI0LjYgNy44LTI5LjYgMTkuOHMtMi4yIDI1LjcgNi45IDM0LjlMMzcwLjcgOTYgMjAxLjQgMjY1LjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBMNDE2IDE0MS4zbDQxLjQgNDEuNGM5LjIgOS4yIDIyLjkgMTEuOSAzNC45IDYuOXMxOS44LTE2LjYgMTkuOC0yOS42bDAtMTI4YzAtMTcuNy0xNC4zLTMyLTMyLTMyTDM1MiAwek04MCAzMkMzNS44IDMyIDAgNjcuOCAwIDExMkwwIDQzMmMwIDQ0LjIgMzUuOCA4MCA4MCA4MGwzMjAgMGM0NC4yIDAgODAtMzUuOCA4MC04MGwwLTExMmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMmwwIDExMmMwIDguOC03LjIgMTYtMTYgMTZMODAgNDQ4Yy04LjggMC0xNi03LjItMTYtMTZsMC0zMjBjMC04LjggNy4yLTE2IDE2LTE2bDExMiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyTDgwIDMyelwiXVxufTtcbmNvbnN0IGZhRXh0ZXJuYWxMaW5rQWx0ID0gZmFVcFJpZ2h0RnJvbVNxdWFyZTtcbmNvbnN0IGZhVGFibGVDZWxscyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0YWJsZS1jZWxscycsXG4gIGljb246IFs1MTIsIDUxMiwgW1widGhcIl0sIFwiZjAwYVwiLCBcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2TDAgNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0bDM4NCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMzIwYzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDMyem04OCA2NGwwIDY0LTg4IDAgMC02NCA4OCAwem01NiAwbDg4IDAgMCA2NC04OCAwIDAtNjR6bTI0MCAwbDAgNjQtODggMCAwLTY0IDg4IDB6TTY0IDIyNGw4OCAwIDAgNjQtODggMCAwLTY0em0yMzIgMGwwIDY0LTg4IDAgMC02NCA4OCAwem02NCAwbDg4IDAgMCA2NC04OCAwIDAtNjR6TTE1MiAzNTJsMCA2NC04OCAwIDAtNjQgODggMHptNTYgMGw4OCAwIDAgNjQtODggMCAwLTY0em0yNDAgMGwwIDY0LTg4IDAgMC02NCA4OCAwelwiXVxufTtcbmNvbnN0IGZhVGggPSBmYVRhYmxlQ2VsbHM7XG5jb25zdCBmYUZpbGVQZGYgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmlsZS1wZGYnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYxYzFcIiwgXCJNMCA2NEMwIDI4LjcgMjguNyAwIDY0IDBMMjI0IDBsMCAxMjhjMCAxNy43IDE0LjMgMzIgMzIgMzJsMTI4IDAgMCAxNDQtMjA4IDBjLTM1LjMgMC02NCAyOC43LTY0IDY0bDAgMTQ0LTQ4IDBjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgNjR6bTM4NCA2NGwtMTI4IDBMMjU2IDAgMzg0IDEyOHpNMTc2IDM1MmwzMiAwYzMwLjkgMCA1NiAyNS4xIDU2IDU2cy0yNS4xIDU2LTU2IDU2bC0xNiAwIDAgMzJjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZsMC00OCAwLTgwYzAtOC44IDcuMi0xNiAxNi0xNnptMzIgODBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRsLTE2IDAgMCA0OCAxNiAwem05Ni04MGwzMiAwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4bDAgNjRjMCAyNi41LTIxLjUgNDgtNDggNDhsLTMyIDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTEyOGMwLTguOCA3LjItMTYgMTYtMTZ6bTMyIDEyOGM4LjggMCAxNi03LjIgMTYtMTZsMC02NGMwLTguOC03LjItMTYtMTYtMTZsLTE2IDAgMCA5NiAxNiAwem04MC0xMTJjMC04LjggNy4yLTE2IDE2LTE2bDQ4IDBjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZsLTMyIDAgMCAzMiAzMiAwYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2bC0zMiAwIDAgNDhjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZsMC02NCAwLTY0elwiXVxufTtcbmNvbnN0IGZhQm9va0JpYmxlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Jvb2stYmlibGUnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtcImJpYmxlXCJdLCBcImY2NDdcIiwgXCJNOTYgMEM0MyAwIDAgNDMgMCA5NkwwIDQxNmMwIDUzIDQzIDk2IDk2IDk2bDI4OCAwIDMyIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsMC02NGMxNy43IDAgMzItMTQuMyAzMi0zMmwwLTMyMGMwLTE3LjctMTQuMy0zMi0zMi0zMkwzODQgMCA5NiAwem0wIDM4NGwyNTYgMCAwIDY0TDk2IDQ0OGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnpNMjA4IDgwYzAtOC44IDcuMi0xNiAxNi0xNmwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDQ4IDQ4IDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgMzJjMCA4LjgtNy4yIDE2LTE2IDE2bC00OCAwIDAgMTEyYzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMTEyLTQ4IDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTMyYzAtOC44IDcuMi0xNiAxNi0xNmw0OCAwIDAtNDh6XCJdXG59O1xuY29uc3QgZmFCaWJsZSA9IGZhQm9va0JpYmxlO1xuY29uc3QgZmFPID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ28nLFxuICBpY29uOiBbNDQ4LCA1MTIsIFsxMTFdLCBcIjRmXCIsIFwiTTIyNCA5NmExNjAgMTYwIDAgMSAwIDAgMzIwIDE2MCAxNjAgMCAxIDAgMC0zMjB6TTQ0OCAyNTZBMjI0IDIyNCAwIDEgMSAwIDI1NmEyMjQgMjI0IDAgMSAxIDQ0OCAwelwiXVxufTtcbmNvbnN0IGZhU3VpdGNhc2VNZWRpY2FsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3N1aXRjYXNlLW1lZGljYWwnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtcIm1lZGtpdFwiXSwgXCJmMGZhXCIsIFwiTTE4NCA0OGwxNDQgMGM0LjQgMCA4IDMuNiA4IDhsMCA0MEwxNzYgOTZsMC00MGMwLTQuNCAzLjYtOCA4LTh6bS01NiA4bDAgNDAgMCAzMiAwIDM1MiAyNTYgMCAwLTM1MiAwLTMyIDAtNDBjMC0zMC45LTI1LjEtNTYtNTYtNTZMMTg0IDBjLTMwLjkgMC01NiAyNS4xLTU2IDU2ek05NiA5Nkw2NCA5NkMyOC43IDk2IDAgMTI0LjcgMCAxNjBMMCA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzIgMEw5NiA5NnpNNDE2IDQ4MGwzMiAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMjU2YzAtMzUuMy0yOC43LTY0LTY0LTY0bC0zMiAwIDAgMzg0ek0yMjQgMjA4YzAtOC44IDcuMi0xNiAxNi0xNmwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDQ4IDQ4IDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgMzJjMCA4LjgtNy4yIDE2LTE2IDE2bC00OCAwIDAgNDhjMCA4LjgtNy4yIDE2LTE2IDE2bC0zMiAwYy04LjggMC0xNi03LjItMTYtMTZsMC00OC00OCAwYy04LjggMC0xNi03LjItMTYtMTZsMC0zMmMwLTguOCA3LjItMTYgMTYtMTZsNDggMCAwLTQ4elwiXVxufTtcbmNvbnN0IGZhTWVka2l0ID0gZmFTdWl0Y2FzZU1lZGljYWw7XG5jb25zdCBmYVVzZXJTZWNyZXQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndXNlci1zZWNyZXQnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFsxMjgzNzNdLCBcImYyMWJcIiwgXCJNMjI0IDE2Yy02LjcgMC0xMC44LTIuOC0xNS41LTYuMUMyMDEuOSA1LjQgMTk0IDAgMTc2IDBjLTMwLjUgMC01MiA0My43LTY2IDg5LjRDNjIuNyA5OC4xIDMyIDExMi4yIDMyIDEyOGMwIDE0LjMgMjUgMjcuMSA2NC42IDM1LjljLS40IDQtLjYgOC0uNiAxMi4xYzAgMTcgMy4zIDMzLjIgOS4zIDQ4bC01OS45IDBDMzggMjI0IDMyIDIzMCAzMiAyMzcuNGMwIDEuNyAuMyAzLjQgMSA1bDM4LjggOTYuOUMyOC4yIDM3MS44IDAgNDIzLjggMCA0ODIuM0MwIDQ5OC43IDEzLjMgNTEyIDI5LjcgNTEybDM4OC42IDBjMTYuNCAwIDI5LjctMTMuMyAyOS43LTI5LjdjMC01OC41LTI4LjItMTEwLjQtNzEuNy0xNDNMNDE1IDI0Mi40Yy42LTEuNiAxLTMuMyAxLTVjMC03LjQtNi0xMy40LTEzLjQtMTMuNGwtNTkuOSAwYzYtMTQuOCA5LjMtMzEgOS4zLTQ4YzAtNC4xLS4yLTguMS0uNi0xMi4xQzM5MSAxNTUuMSA0MTYgMTQyLjMgNDE2IDEyOGMwLTE1LjgtMzAuNy0yOS45LTc4LTM4LjZDMzI0IDQzLjcgMzAyLjUgMCAyNzIgMGMtMTggMC0yNS45IDUuNC0zMi41IDkuOWMtNC44IDMuMy04LjggNi4xLTE1LjUgNi4xem01NiAyMDhsLTEyLjQgMGMtMTYuNSAwLTMxLjEtMTAuNi0zNi4zLTI2LjJjLTIuMy03LTEyLjItNy0xNC41IDBjLTUuMiAxNS42LTE5LjkgMjYuMi0zNi4zIDI2LjJMMTY4IDIyNGMtMjIuMSAwLTQwLTE3LjktNDAtNDBsMC0xNC40YzI4LjIgNC4xIDYxIDYuNCA5NiA2LjRzNjcuOC0yLjMgOTYtNi40bDAgMTQuNGMwIDIyLjEtMTcuOSA0MC00MCA0MHptLTg4IDk2bDE2IDMyTDE3NiA0ODAgMTI4IDI4OGw2NCAzMnptMTI4LTMyTDI3MiA0ODAgMjQwIDM1MmwxNi0zMiA2NC0zMnpcIl1cbn07XG5jb25zdCBmYU90dGVyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ290dGVyJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbMTI5NDQ2XSwgXCJmNzAwXCIsIFwiTTE4MS41IDE5Ny4xbDEyLjkgNi40YzUuOSAzIDEyLjQgNC41IDE5LjEgNC41YzIzLjUgMCA0Mi42LTE5LjEgNDIuNi00Mi42bDAtMjEuNGMwLTM1LjMtMjguNy02NC02NC02NGwtNjQgMGMtMzUuMyAwLTY0IDI4LjctNjQgNjRsMCAyMS40YzAgMjMuNSAxOS4xIDQyLjYgNDIuNiA0Mi42YzYuNiAwIDEzLjEtMS41IDE5LjEtNC41bDEyLjktNi40IDguNC00LjJMMTM1LjEgMTg1Yy00LjUtMy03LjEtOC03LjEtMTMuM2wwLTMuN2MwLTEzLjMgMTAuNy0yNCAyNC0yNGwxNiAwYzEzLjMgMCAyNCAxMC43IDI0IDI0bDAgMy43YzAgNS4zLTIuNyAxMC4zLTcuMSAxMy4zbC0xMS44IDcuOSA4LjQgNC4yem0tOC42IDQ5LjRMMTYwIDI0MGwtMTIuOSA2LjRjLTEyLjYgNi4zLTI2LjUgOS42LTQwLjUgOS42Yy0zLjYgMC03LjEtLjItMTAuNi0uNmwwIC42YzAgMzUuMyAyOC43IDY0IDY0IDY0bDY0IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsMTYwIDAgMC00OCAwLTE2YzAtMjMuNyAxMi45LTQ0LjQgMzItNTUuNGM5LjQtNS40IDIwLjMtOC42IDMyLTguNmwwLTE2YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4YzguOCAwIDE2IDcuMiAxNiAxNmwwIDMyIDAgMTYgMCA0OGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2bDAtOTkuN2MwLTQ4LjItMzAuOC05MS03Ni42LTEwNi4zbC04LjUtMi44Yy04LTIuNy0xMi42LTExLjEtMTAuNC0xOS4zczEwLjMtMTMuMiAxOC42LTExLjZsMTkuOSA0QzU3NiA4Ni4xIDY0MCAxNjQuMiA2NDAgMjU0LjlsMCAxLjFzMCAwIDAgMGMwIDEyMy43LTEwMC4zIDIyNC0yMjQgMjI0bC0xLjEgMEwyNTYgNDgwbC0uNiAwQzEzMiA0ODAgMzIgMzgwIDMyIDI1Ni42bDAtLjYgMC0zOS4yYy0xMC4xLTE0LjYtMTYtMzIuMy0xNi01MS40TDE2IDE0NGwwLTEuNEM2LjcgMTM5LjMgMCAxMzAuNSAwIDEyMGMwLTEzLjMgMTAuNy0yNCAyNC0yNGwyLjggMEM0NC44IDU4LjIgODMuMyAzMiAxMjggMzJsNjQgMGM0NC43IDAgODMuMiAyNi4yIDEwMS4yIDY0bDIuOCAwYzEzLjMgMCAyNCAxMC43IDI0IDI0YzAgMTAuNS02LjcgMTkuMy0xNiAyMi42bDAgMS40IDAgMjEuNGMwIDEuNCAwIDIuOC0uMSA0LjNjMTItNi4yIDI1LjctOS42IDQwLjEtOS42bDggMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtOCAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNGwwIDggNTYuNCAwYy0xNS4yIDE3LTI0LjQgMzkuNC0yNC40IDY0bC0zMiAwYy00Mi4zIDAtNzguMi0yNy40LTkxLTY1LjNjLTUuMSAuOS0xMC4zIDEuMy0xNS42IDEuM2MtMTQuMSAwLTI3LjktMy4zLTQwLjUtOS42ek05NiAxMjhhMTYgMTYgMCAxIDEgMCAzMiAxNiAxNiAwIDEgMSAwLTMyem0xMTIgMTZhMTYgMTYgMCAxIDEgMzIgMCAxNiAxNiAwIDEgMSAtMzIgMHpcIl1cbn07XG5jb25zdCBmYVBlcnNvbkRyZXNzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BlcnNvbi1kcmVzcycsXG4gIGljb246IFszMjAsIDUxMiwgW1wiZmVtYWxlXCJdLCBcImYxODJcIiwgXCJNMTYwIDBhNDggNDggMCAxIDEgMCA5NiA0OCA0OCAwIDEgMSAwLTk2ek04OCAzODRsLTE3LjggMGMtMTAuOSAwLTE4LjYtMTAuNy0xNS4yLTIxLjFMOTMuMyAyNDguMSA1OS40IDMwNC41Yy05LjEgMTUuMS0yOC44IDIwLTQzLjkgMTAuOXMtMjAtMjguOC0xMC45LTQzLjlsNTMuNi04OS4yYzIwLjMtMzMuNyA1Ni43LTU0LjMgOTYtNTQuM2wxMS42IDBjMzkuMyAwIDc1LjcgMjAuNiA5NiA1NC4zbDUzLjYgODkuMmM5LjEgMTUuMSA0LjIgMzQuOC0xMC45IDQzLjlzLTM0LjggNC4yLTQzLjktMTAuOWwtMzMuOS01Ni4zTDI2NSAzNjIuOWMzLjUgMTAuNC00LjMgMjEuMS0xNS4yIDIxLjFMMjMyIDM4NGwwIDk2YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtOTYtMTYgMCAwIDk2YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtOTZ6XCJdXG59O1xuY29uc3QgZmFGZW1hbGUgPSBmYVBlcnNvbkRyZXNzO1xuY29uc3QgZmFDb21tZW50RG9sbGFyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NvbW1lbnQtZG9sbGFyJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNjUxXCIsIFwiTTI1NiA0NDhjMTQxLjQgMCAyNTYtOTMuMSAyNTYtMjA4UzM5Ny40IDMyIDI1NiAzMlMwIDEyNS4xIDAgMjQwYzAgNDUuMSAxNy43IDg2LjggNDcuNyAxMjAuOWMtMS45IDI0LjUtMTEuNCA0Ni4zLTIxLjQgNjIuOWMtNS41IDkuMi0xMS4xIDE2LjYtMTUuMiAyMS42Yy0yLjEgMi41LTMuNyA0LjQtNC45IDUuN2MtLjYgLjYtMSAxLjEtMS4zIDEuNGwtLjMgLjNjMCAwIDAgMCAwIDBjMCAwIDAgMCAwIDBzMCAwIDAgMHMwIDAgMCAwYy00LjYgNC42LTUuOSAxMS40LTMuNCAxNy40YzIuNSA2IDguMyA5LjkgMTQuOCA5LjljMjguNyAwIDU3LjYtOC45IDgxLjYtMTkuM2MyMi45LTEwIDQyLjQtMjEuOSA1NC4zLTMwLjZjMzEuOCAxMS41IDY3IDE3LjkgMTA0LjEgMTcuOXptMjAtMzEybDAgMTMuOWM3LjUgMS4yIDE0LjYgMi45IDIxLjEgNC43YzEwLjcgMi44IDE3IDEzLjggMTQuMiAyNC41cy0xMy44IDE3LTI0LjUgMTQuMmMtMTEtMi45LTIxLjYtNS0zMS4yLTUuMmMtNy45LS4xLTE2IDEuOC0yMS41IDVjLTQuOCAyLjgtNi4yIDUuNi02LjIgOS4zYzAgMS44IC4xIDMuNSA1LjMgNi43YzYuMyAzLjggMTUuNSA2LjcgMjguMyAxMC41bC43IC4yYzExLjIgMy40IDI1LjYgNy43IDM3LjEgMTVjMTIuOSA4LjEgMjQuMyAyMS4zIDI0LjYgNDEuNmMuMyAyMC45LTEwLjUgMzYuMS0yNC44IDQ1Yy03LjIgNC41LTE1LjIgNy4zLTIzLjIgOWwwIDEzLjhjMCAxMS05IDIwLTIwIDIwcy0yMC05LTIwLTIwbDAtMTQuNmMtMTAuMy0yLjItMjAtNS41LTI4LjItOC40YzAgMCAwIDAgMCAwczAgMCAwIDBjLTIuMS0uNy00LjEtMS40LTYuMS0yLjFjLTEwLjUtMy41LTE2LjEtMTQuOC0xMi42LTI1LjNzMTQuOC0xNi4xIDI1LjMtMTIuNmMyLjUgLjggNC45IDEuNyA3LjIgMi40YzAgMCAwIDAgMCAwYzEzLjYgNC42IDI0IDguMSAzNS4xIDguNWM4LjYgLjMgMTYuNS0xLjYgMjEuNC00LjdjNC4xLTIuNSA2LTUuNSA1LjktMTAuNWMwLTIuOS0uOC01LTUuOS04LjJjLTYuMy00LTE1LjQtNi45LTI4LTEwLjdsLTEuNy0uNWMtMTAuOS0zLjMtMjQuNi03LjQtMzUuNi0xNGMtMTIuNy03LjctMjQuNi0yMC41LTI0LjctNDAuN2MtLjEtMjEuMSAxMS44LTM1LjcgMjUuOC00My45YzYuOS00LjEgMTQuNS02LjggMjIuMi04LjVsMC0xNGMwLTExIDktMjAgMjAtMjBzMjAgOSAyMCAyMHpcIl1cbn07XG5jb25zdCBmYUJ1c2luZXNzVGltZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdidXNpbmVzcy10aW1lJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXCJicmllZmNhc2UtY2xvY2tcIl0sIFwiZjY0YVwiLCBcIk0xODQgNDhsMTQ0IDBjNC40IDAgOCAzLjYgOCA4bDAgNDBMMTc2IDk2bDAtNDBjMC00LjQgMy42LTggOC04em0tNTYgOGwwIDQwTDY0IDk2QzI4LjcgOTYgMCAxMjQuNyAwIDE2MGwwIDk2IDE5MiAwIDE2MCAwIDguMiAwYzMyLjMtMzkuMSA4MS4xLTY0IDEzNS44LTY0YzUuNCAwIDEwLjcgLjIgMTYgLjdsMC0zMi43YzAtMzUuMy0yOC43LTY0LTY0LTY0bC02NCAwIDAtNDBjMC0zMC45LTI1LjEtNTYtNTYtNTZMMTg0IDBjLTMwLjkgMC01NiAyNS4xLTU2IDU2ek0zMjAgMzUybC05NiAwYy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTMyTDAgMjg4IDAgNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0bDI5Ni4yIDBDMzM1LjEgNDQ5LjYgMzIwIDQxMC41IDMyMCAzNjhjMC01LjQgLjItMTAuNyAuNy0xNmwtLjcgMHptMzIwIDE2YTE0NCAxNDQgMCAxIDAgLTI4OCAwIDE0NCAxNDQgMCAxIDAgMjg4IDB6TTQ5NiAyODhjOC44IDAgMTYgNy4yIDE2IDE2bDAgNDggMzIgMGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNmwtNDggMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtNjRjMC04LjggNy4yLTE2IDE2LTE2elwiXVxufTtcbmNvbnN0IGZhQnJpZWZjYXNlQ2xvY2sgPSBmYUJ1c2luZXNzVGltZTtcbmNvbnN0IGZhVGFibGVDZWxsc0xhcmdlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RhYmxlLWNlbGxzLWxhcmdlJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXCJ0aC1sYXJnZVwiXSwgXCJmMDA5XCIsIFwiTTQ0OCA5NmwwIDEyOC0xNjAgMCAwLTEyOCAxNjAgMHptMCAxOTJsMCAxMjgtMTYwIDAgMC0xMjggMTYwIDB6TTIyNCAyMjRMNjQgMjI0IDY0IDk2bDE2MCAwIDAgMTI4ek02NCAyODhsMTYwIDAgMCAxMjhMNjQgNDE2bDAtMTI4ek02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2TDAgNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0bDM4NCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMzIwYzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDMyelwiXVxufTtcbmNvbnN0IGZhVGhMYXJnZSA9IGZhVGFibGVDZWxsc0xhcmdlO1xuY29uc3QgZmFCb29rVGFuYWtoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Jvb2stdGFuYWtoJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXCJ0YW5ha2hcIl0sIFwiZjgyN1wiLCBcIk0zNTIgMGM1MyAwIDk2IDQzIDk2IDk2bDAgMzIwYzAgNTMtNDMgOTYtOTYgOTZMNjQgNTEybC0zMiAwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDAtNjRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyTDAgMzJDMCAxNC4zIDE0LjMgMCAzMiAwTDY0IDAgMzUyIDB6bTAgMzg0TDk2IDM4NGwwIDY0IDI1NiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyek0xMzguNyAyMDhsMTMuOSAyNC0yNy43IDAgMTMuOS0yNHptLTEzLjktMjRMOTcuMSAyMzJjLTYuMiAxMC43IDEuNSAyNCAxMy45IDI0bDU1LjQgMCAyNy43IDQ4YzYuMiAxMC43IDIxLjYgMTAuNyAyNy43IDBsMjcuNy00OCA1NS40IDBjMTIuMyAwIDIwLTEzLjMgMTMuOS0yNGwtMjcuNy00OCAyNy43LTQ4YzYuMi0xMC43LTEuNS0yNC0xMy45LTI0bC01NS40IDBMMjIxLjkgNjRjLTYuMi0xMC43LTIxLjYtMTAuNy0yNy43IDBsLTI3LjcgNDhMMTExIDExMmMtMTIuMyAwLTIwIDEzLjMtMTMuOSAyNGwyNy43IDQ4em0yNy43IDBsMjcuNy00OCA1NS40IDAgMjcuNyA0OC0yNy43IDQ4LTU1LjQgMC0yNy43LTQ4em0wLTQ4bC0xMy45IDI0LTEzLjktMjQgMjcuNyAwem00MS42LTI0TDIwOCA4OGwxMy45IDI0LTI3LjcgMHptNjkuMyAyNGwyNy43IDAtMTMuOSAyNC0xMy45LTI0em0xMy45IDcybDEzLjkgMjQtMjcuNyAwIDEzLjktMjR6bS01NS40IDQ4TDIwOCAyODBsLTEzLjktMjQgMjcuNyAwelwiXVxufTtcbmNvbnN0IGZhVGFuYWtoID0gZmFCb29rVGFuYWtoO1xuY29uc3QgZmFQaG9uZVZvbHVtZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwaG9uZS12b2x1bWUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtcInZvbHVtZS1jb250cm9sLXBob25lXCJdLCBcImYyYTBcIiwgXCJNMjgwIDBDNDA4LjEgMCA1MTIgMTAzLjkgNTEyIDIzMmMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNGMwLTEwMS42LTgyLjQtMTg0LTE4NC0xODRjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjR6bTggMTkyYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHptLTMyLTcyYzAtMTMuMyAxMC43LTI0IDI0LTI0Yzc1LjEgMCAxMzYgNjAuOSAxMzYgMTM2YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0YzAtNDguNi0zOS40LTg4LTg4LTg4Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHpNMTE3LjUgMS40YzE5LjQtNS4zIDM5LjcgNC42IDQ3LjQgMjMuMmw0MCA5NmM2LjggMTYuMyAyLjEgMzUuMi0xMS42IDQ2LjNMMTQ0IDIwNy4zYzMzLjMgNzAuNCA5MC4zIDEyNy40IDE2MC43IDE2MC43TDM0NSAzMTguN2MxMS4yLTEzLjcgMzAtMTguNCA0Ni4zLTExLjZsOTYgNDBjMTguNiA3LjcgMjguNSAyOCAyMy4yIDQ3LjRsLTI0IDg4QzQ4MS44IDQ5OS45IDQ2NiA1MTIgNDQ4IDUxMkMyMDAuNiA1MTIgMCAzMTEuNCAwIDY0QzAgNDYgMTIuMSAzMC4yIDI5LjUgMjUuNGw4OC0yNHpcIl1cbn07XG5jb25zdCBmYVZvbHVtZUNvbnRyb2xQaG9uZSA9IGZhUGhvbmVWb2x1bWU7XG5jb25zdCBmYUhhdENvd2JveVNpZGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGF0LWNvd2JveS1zaWRlJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmOGMxXCIsIFwiTTE1Mi43IDEzNS45bC0xMC40IDU3LjJjNi44LS43IDEzLjYtMS4xIDIwLjUtMS4xbDEwLjcgMGMzOS40IDAgNzcuOCAxMi4xIDExMC4xIDM0LjdMNTYyLjQgNDIxLjhsMzUuMSAyNC42YzI0LjQtNiA0Mi41LTI4LjEgNDIuNS01NC40YzAtNzUuOC05NC43LTEyNi42LTEzNC42LTE0NC43TDQ3NCA4My45QzQ2OC4yIDUzLjggNDQxLjggMzIgNDExLjEgMzJsLTIuNyAwYy01LjYgMC0xMS4xIC43LTE2LjUgMi4yTDE5OS4yIDg1LjVjLTIzLjkgNi40LTQyIDI2LTQ2LjUgNTAuNHpNMCAzODRjMCAzNS4zIDI4LjcgNjQgNjQgNjRsNDgwIDBMMjY1LjMgMjUyLjljLTI2LjktMTguOC01OC45LTI4LjktOTEuOC0yOC45bC0xMC43IDBjLTYwLjYgMC0xMTYgMzQuMi0xNDMuMSA4OC40TDEzLjUgMzI1QzQuNiAzNDIuNyAwIDM2Mi4zIDAgMzgyLjJMMCAzODR6XCJdXG59O1xuY29uc3QgZmFDbGlwYm9hcmRVc2VyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NsaXBib2FyZC11c2VyJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmN2YzXCIsIFwiTTE5MiAwYy00MS44IDAtNzcuNCAyNi43LTkwLjUgNjRMNjQgNjRDMjguNyA2NCAwIDkyLjcgMCAxMjhMMCA0NDhjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMjU2IDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0zMjBjMC0zNS4zLTI4LjctNjQtNjQtNjRsLTM3LjUgMEMyNjkuNCAyNi43IDIzMy44IDAgMTkyIDB6bTAgNjRhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0ek0xMjggMjU2YTY0IDY0IDAgMSAxIDEyOCAwIDY0IDY0IDAgMSAxIC0xMjggMHpNODAgNDMyYzAtNDQuMiAzNS44LTgwIDgwLTgwbDY0IDBjNDQuMiAwIDgwIDM1LjggODAgODBjMCA4LjgtNy4yIDE2LTE2IDE2TDk2IDQ0OGMtOC44IDAtMTYtNy4yLTE2LTE2elwiXVxufTtcbmNvbnN0IGZhQ2hpbGQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2hpbGQnLFxuICBpY29uOiBbMzIwLCA1MTIsIFtdLCBcImYxYWVcIiwgXCJNOTYgNjRhNjQgNjQgMCAxIDEgMTI4IDBBNjQgNjQgMCAxIDEgOTYgNjR6bTQ4IDMyMGwwIDk2YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtMTkyLjJMNTkuMSAzMjFjLTkuNCAxNS0yOS4yIDE5LjQtNDQuMSAxMFMtNC41IDMwMS45IDQuOSAyODdsMzkuOS02My4zQzY5LjcgMTg0IDExMy4yIDE2MCAxNjAgMTYwczkwLjMgMjQgMTE1LjIgNjMuNkwzMTUuMSAyODdjOS40IDE1IDQuOSAzNC43LTEwIDQ0LjFzLTM0LjcgNC45LTQ0LjEtMTBMMjQwIDI4Ny44IDI0MCA0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC05Ni0zMiAwelwiXVxufTtcbmNvbnN0IGZhTGlyYVNpZ24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbGlyYS1zaWduJyxcbiAgaWNvbjogWzMyMCwgNTEyLCBbODM1Nl0sIFwiZjE5NVwiLCBcIk0xMTIgMTYwLjRjMC0zNS41IDI4LjgtNjQuNCA2NC40LTY0LjRjNi45IDAgMTMuOCAxLjEgMjAuNCAzLjNsODEuMiAyNy4xYzE2LjggNS42IDM0LjktMy41IDQwLjUtMjAuMnMtMy41LTM0LjktMjAuMi00MC41TDIxNyAzOC42Yy0xMy4xLTQuNC0yNi44LTYuNi00MC42LTYuNkMxMDUuNSAzMiA0OCA4OS41IDQ4IDE2MC40TDQ4IDE5MmwtMTYgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwxNiAwIDAgMzItMTYgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwxNCAwYy0yLjIgMTAuNS02LjEgMjAuNi0xMS43IDI5LjlMNC42IDQzMS41Yy01LjkgOS45LTYuMSAyMi4yLS40IDMyLjJTMjAuNSA0ODAgMzIgNDgwbDI1NiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyTDg4LjUgNDE2bC43LTEuMWMxMS42LTE5LjMgMTguOS00MC43IDIxLjYtNjIuOUwyMjQgMzUyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC0xMTIgMCAwLTMyIDExMiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC0xMTIgMCAwLTMxLjZ6XCJdXG59O1xuY29uc3QgZmFTYXRlbGxpdGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc2F0ZWxsaXRlJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI4NzUyXSwgXCJmN2JmXCIsIFwiTTIzMyA3Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMGwtOTYgOTZjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45bDg5LjQgODkuNC0xNS41IDE1LjVDMTUyLjMgMjMwLjQgMTI0LjkgMjI0IDk2IDIyNGMtMzEuNyAwLTYxLjUgNy43LTg3LjggMjEuMmMtOSA0LjctMTAuMyAxNi43LTMuMSAyMy44TDExMi43IDM3Ni43IDk2LjMgMzkzLjFjLTIuNi0uNy01LjQtMS4xLTguMy0xLjFjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmMwLTIuOS0uNC01LjYtMS4xLTguM2wxNi40LTE2LjRMMjQyLjkgNTA2LjljNy4yIDcuMiAxOS4yIDUuOSAyMy44LTMuMUMyODAuMyA0NzcuNSAyODggNDQ3LjcgMjg4IDQxNmMwLTI4LjktNi40LTU2LjMtMTcuOC04MC45bDE1LjUtMTUuNUwzNzUgNDA5YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwbDk2LTk2YzkuNC05LjQgOS40LTI0LjYgMC0zMy45bC04OS40LTg5LjQgNTUtNTVjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNsLTQ4LTQ4Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMGwtNTUgNTVMMjMzIDd6bTE1OSAzNTFsLTcyLjQtNzIuNCA2Mi4xLTYyLjFMNDU0LjEgMjk2IDM5MiAzNTguMXpNMjI2LjMgMTkyLjRMMTUzLjkgMTIwIDIxNiA1Ny45bDcyLjQgNzIuNC02Mi4xIDYyLjF6XCJdXG59O1xuY29uc3QgZmFQbGFuZUxvY2sgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGxhbmUtbG9jaycsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTU1OFwiLCBcIk0xOTIgOTMuN0MxOTIgNTkuNSAyMjEgMCAyNTYgMGMzNiAwIDY0IDU5LjUgNjQgOTMuN2wwIDg0LjYgMTAxLjggNTguMkM0MTggMjQ3LjYgNDE2IDI1OS42IDQxNiAyNzJsMCAyNC42Yy0xNy45IDEwLjQtMzAuMyAyOS4xLTMxLjggNTAuOUwzMjAgMzI5LjFsMCA3MC45IDU3LjYgNDMuMmM0IDMgNi40IDcuOCA2LjQgMTIuOGwwIDI0IDAgMThjMCA3LjgtNi4zIDE0LTE0IDE0Yy0xLjMgMC0yLjYtLjItMy45LS41TDI1NiA0ODAgMTQ1LjkgNTExLjVjLTEuMyAuNC0yLjYgLjUtMy45IC41Yy03LjggMC0xNC02LjMtMTQtMTRsMC00MmMwLTUgMi40LTkuOCA2LjQtMTIuOEwxOTIgNDAwbDAtNzAuOS0xNzEuNiA0OUMxMC4yIDM4MS4xIDAgMzczLjQgMCAzNjIuOGwwLTY1LjVjMC01LjcgMy4xLTExIDguMS0xMy45TDE5MiAxNzguM2wwLTg0LjZ6TTUyOCAyNDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMybDAgNDggNjQgMCAwLTQ4YzAtMTcuNy0xNC4zLTMyLTMyLTMyem0tODAgMzJjMC00NC4yIDM1LjgtODAgODAtODBzODAgMzUuOCA4MCA4MGwwIDQ4YzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgMTI4YzAgMTcuNy0xNC4zIDMyLTMyIDMybC0xNjAgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC0xMjhjMC0xNy43IDE0LjMtMzIgMzItMzJsMC00OHpcIl1cbn07XG5jb25zdCBmYVRhZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0YWcnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFsxMjc5OTFdLCBcImYwMmJcIiwgXCJNMCA4MEwwIDIyOS41YzAgMTcgNi43IDMzLjMgMTguNyA0NS4zbDE3NiAxNzZjMjUgMjUgNjUuNSAyNSA5MC41IDBMNDE4LjcgMzE3LjNjMjUtMjUgMjUtNjUuNSAwLTkwLjVsLTE3Ni0xNzZjLTEyLTEyLTI4LjMtMTguNy00NS4zLTE4LjdMNDggMzJDMjEuNSAzMiAwIDUzLjUgMCA4MHptMTEyIDMyYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIl1cbn07XG5jb25zdCBmYUNvbW1lbnQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY29tbWVudCcsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyODQ4OSwgNjE2NjldLCBcImYwNzVcIiwgXCJNNTEyIDI0MGMwIDExNC45LTExNC42IDIwOC0yNTYgMjA4Yy0zNy4xIDAtNzIuMy02LjQtMTA0LjEtMTcuOWMtMTEuOSA4LjctMzEuMyAyMC42LTU0LjMgMzAuNkM3My42IDQ3MS4xIDQ0LjcgNDgwIDE2IDQ4MGMtNi41IDAtMTIuMy0zLjktMTQuOC05LjljLTIuNS02LTEuMS0xMi44IDMuNC0xNy40YzAgMCAwIDAgMCAwczAgMCAwIDBzMCAwIDAgMGMwIDAgMCAwIDAgMGwuMy0uM2MuMy0uMyAuNy0uNyAxLjMtMS40YzEuMS0xLjIgMi44LTMuMSA0LjktNS43YzQuMS01IDkuNi0xMi40IDE1LjItMjEuNmMxMC0xNi42IDE5LjUtMzguNCAyMS40LTYyLjlDMTcuNyAzMjYuOCAwIDI4NS4xIDAgMjQwQzAgMTI1LjEgMTE0LjYgMzIgMjU2IDMyczI1NiA5My4xIDI1NiAyMDh6XCJdXG59O1xuY29uc3QgZmFDYWtlQ2FuZGxlcyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjYWtlLWNhbmRsZXMnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFsxMjc4NzQsIFwiYmlydGhkYXktY2FrZVwiLCBcImNha2VcIl0sIFwiZjFmZFwiLCBcIk04Ni40IDUuNUw2MS44IDQ3LjZDNTggNTQuMSA1NiA2MS42IDU2IDY5LjJMNTYgNzJjMCAyMi4xIDE3LjkgNDAgNDAgNDBzNDAtMTcuOSA0MC00MGwwLTIuOGMwLTcuNi0yLTE1LTUuOC0yMS42TDEwNS42IDUuNUMxMDMuNiAyLjEgMTAwIDAgOTYgMHMtNy42IDIuMS05LjYgNS41em0xMjggMEwxODkuOCA0Ny42Yy0zLjggNi41LTUuOCAxNC01LjggMjEuNmwwIDIuOGMwIDIyLjEgMTcuOSA0MCA0MCA0MHM0MC0xNy45IDQwLTQwbDAtMi44YzAtNy42LTItMTUtNS44LTIxLjZMMjMzLjYgNS41QzIzMS42IDIuMSAyMjggMCAyMjQgMHMtNy42IDIuMS05LjYgNS41ek0zMTcuOCA0Ny42Yy0zLjggNi41LTUuOCAxNC01LjggMjEuNmwwIDIuOGMwIDIyLjEgMTcuOSA0MCA0MCA0MHM0MC0xNy45IDQwLTQwbDAtMi44YzAtNy42LTItMTUtNS44LTIxLjZMMzYxLjYgNS41QzM1OS42IDIuMSAzNTYgMCAzNTIgMHMtNy42IDIuMS05LjYgNS41TDMxNy44IDQ3LjZ6TTEyOCAxNzZjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJsMCA0OGMtMzUuMyAwLTY0IDI4LjctNjQgNjRsMCA3MWM4LjMgNS4yIDE4LjEgOSAyOC44IDljMTMuNSAwIDI3LjItNi4xIDM4LjQtMTMuNGM1LjQtMy41IDkuOS03LjEgMTMtOS43YzEuNS0xLjMgMi43LTIuNCAzLjUtMy4xYy40LS40IC43LS42IC44LS44bC4xLS4xczAgMCAwIDBzMCAwIDAgMHMwIDAgMCAwczAgMCAwIDBjMy4xLTMuMiA3LjQtNC45IDExLjktNC44czguNiAyLjEgMTEuNiA1LjRjMCAwIDAgMCAwIDBzMCAwIDAgMGwuMSAuMWMuMSAuMSAuNCAuNCAuNyAuN2MuNyAuNyAxLjcgMS43IDMuMSAzYzIuOCAyLjYgNi44IDYuMSAxMS44IDkuNWMxMC4yIDcuMSAyMyAxMy4xIDM2LjMgMTMuMXMyNi4xLTYgMzYuMy0xMy4xYzUtMy41IDktNi45IDExLjgtOS41YzEuNC0xLjMgMi40LTIuMyAzLjEtM2MuMy0uMyAuNi0uNiAuNy0uN2wuMS0uMWMzLTMuNSA3LjQtNS40IDEyLTUuNHM5IDIgMTIgNS40bC4xIC4xYy4xIC4xIC40IC40IC43IC43Yy43IC43IDEuNyAxLjcgMy4xIDNjMi44IDIuNiA2LjggNi4xIDExLjggOS41YzEwLjIgNy4xIDIzIDEzLjEgMzYuMyAxMy4xczI2LjEtNiAzNi4zLTEzLjFjNS0zLjUgOS02LjkgMTEuOC05LjVjMS40LTEuMyAyLjQtMi4zIDMuMS0zYy4zLS4zIC42LS42IC43LS43bC4xLS4xYzIuOS0zLjQgNy4xLTUuMyAxMS42LTUuNHM4LjcgMS42IDExLjkgNC44YzAgMCAwIDAgMCAwczAgMCAwIDBzMCAwIDAgMGwuMSAuMWMuMiAuMiAuNCAuNCAuOCAuOGMuOCAuNyAxLjkgMS44IDMuNSAzLjFjMy4xIDIuNiA3LjUgNi4yIDEzIDkuN2MxMS4yIDcuMyAyNC45IDEzLjQgMzguNCAxMy40YzEwLjcgMCAyMC41LTMuOSAyOC44LTlsMC03MWMwLTM1LjMtMjguNy02NC02NC02NGwwLTQ4YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMybDAgNDgtNjQgMCAwLTQ4YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMybDAgNDgtNjQgMCAwLTQ4ek00NDggMzk0LjZjLTguNSAzLjMtMTguMiA1LjQtMjguOCA1LjRjLTIyLjUgMC00Mi40LTkuOS01NS44LTE4LjZjLTQuMS0yLjctNy44LTUuNC0xMC45LTcuOGMtMi44IDIuNC02LjEgNS05LjggNy41QzMyOS44IDM5MCAzMTAuNiA0MDAgMjg4IDQwMHMtNDEuOC0xMC01NC42LTE4LjljLTMuNS0yLjQtNi43LTQuOS05LjQtNy4yYy0yLjcgMi4zLTUuOSA0LjctOS40IDcuMkMyMDEuOCAzOTAgMTgyLjYgNDAwIDE2MCA0MDBzLTQxLjgtMTAtNTQuNi0xOC45Yy0zLjctMi42LTctNS4yLTkuOC03LjVjLTMuMSAyLjQtNi44IDUuMS0xMC45IDcuOEM3MS4yIDM5MC4xIDUxLjMgNDAwIDI4LjggNDAwYy0xMC42IDAtMjAuMy0yLjItMjguOC01LjRMMCA0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJsMzg0IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJsMC04NS40elwiXVxufTtcbmNvbnN0IGZhQmlydGhkYXlDYWtlID0gZmFDYWtlQ2FuZGxlcztcbmNvbnN0IGZhQ2FrZSA9IGZhQ2FrZUNhbmRsZXM7XG5jb25zdCBmYUVudmVsb3BlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2VudmVsb3BlJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI4Mzg2LCA5OTkzLCA2MTQ0M10sIFwiZjBlMFwiLCBcIk00OCA2NEMyMS41IDY0IDAgODUuNSAwIDExMmMwIDE1LjEgNy4xIDI5LjMgMTkuMiAzOC40TDIzNi44IDMxMy42YzExLjQgOC41IDI3IDguNSAzOC40IDBMNDkyLjggMTUwLjRjMTIuMS05LjEgMTkuMi0yMy4zIDE5LjItMzguNGMwLTI2LjUtMjEuNS00OC00OC00OEw0OCA2NHpNMCAxNzZMMCAzODRjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzg0IDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0yMDhMMjk0LjQgMzM5LjJjLTIyLjggMTcuMS01NCAxNy4xLTc2LjggMEwwIDE3NnpcIl1cbn07XG5jb25zdCBmYUFuZ2xlc1VwID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2FuZ2xlcy11cCcsXG4gIGljb246IFs0NDgsIDUxMiwgW1wiYW5nbGUtZG91YmxlLXVwXCJdLCBcImYxMDJcIiwgXCJNMjQ2LjYgNDEuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBsLTE2MCAxNjBjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBMMjI0IDEwOS4zIDM2MS40IDI0Ni42YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNsLTE2MC0xNjB6bTE2MCAzNTJsLTE2MC0xNjBjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwbC0xNjAgMTYwYy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwTDIyNCAzMDEuMyAzNjEuNCA0MzguNmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zelwiXVxufTtcbmNvbnN0IGZhQW5nbGVEb3VibGVVcCA9IGZhQW5nbGVzVXA7XG5jb25zdCBmYVBhcGVyY2xpcCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwYXBlcmNsaXAnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFsxMjgyMDZdLCBcImYwYzZcIiwgXCJNMzY0LjIgODMuOGMtMjQuNC0yNC40LTY0LTI0LjQtODguNCAwbC0xODQgMTg0Yy00Mi4xIDQyLjEtNDIuMSAxMTAuMyAwIDE1Mi40czExMC4zIDQyLjEgMTUyLjQgMGwxNTItMTUyYzEwLjktMTAuOSAyOC43LTEwLjkgMzkuNiAwczEwLjkgMjguNyAwIDM5LjZsLTE1MiAxNTJjLTY0IDY0LTE2Ny42IDY0LTIzMS42IDBzLTY0LTE2Ny42IDAtMjMxLjZsMTg0LTE4NGM0Ni4zLTQ2LjMgMTIxLjMtNDYuMyAxNjcuNiAwczQ2LjMgMTIxLjMgMCAxNjcuNmwtMTc2IDE3NmMtMjguNiAyOC42LTc1IDI4LjYtMTAzLjYgMHMtMjguNi03NSAwLTEwMy42bDE0NC0xNDRjMTAuOS0xMC45IDI4LjctMTAuOSAzOS42IDBzMTAuOSAyOC43IDAgMzkuNmwtMTQ0IDE0NGMtNi43IDYuNy02LjcgMTcuNyAwIDI0LjRzMTcuNyA2LjcgMjQuNCAwbDE3Ni0xNzZjMjQuNC0yNC40IDI0LjQtNjQgMC04OC40elwiXVxufTtcbmNvbnN0IGZhQXJyb3dSaWdodFRvQ2l0eSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhcnJvdy1yaWdodC10by1jaXR5JyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlNGIzXCIsIFwiTTI4OCA0OGMwLTI2LjUgMjEuNS00OCA0OC00OGw5NiAwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4bDAgMTQ0IDQwIDAgMC03MmMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0bDAgNzIgMjQgMGMyNi41IDAgNDggMjEuNSA0OCA0OGwwIDIyNGMwIDI2LjUtMjEuNSA0OC00OCA0OGwtMTYwIDAtOTYgMGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhsMC00MTZ6bTY0IDMybDAgMzJjMCA4LjggNy4yIDE2IDE2IDE2bDMyIDBjOC44IDAgMTYtNy4yIDE2LTE2bDAtMzJjMC04LjgtNy4yLTE2LTE2LTE2bC0zMiAwYy04LjggMC0xNiA3LjItMTYgMTZ6bTE2IDgwYy04LjggMC0xNiA3LjItMTYgMTZsMCAzMmMwIDguOCA3LjIgMTYgMTYgMTZsMzIgMGM4LjggMCAxNi03LjIgMTYtMTZsMC0zMmMwLTguOC03LjItMTYtMTYtMTZsLTMyIDB6TTM1MiAyNzJsMCAzMmMwIDguOCA3LjIgMTYgMTYgMTZsMzIgMGM4LjggMCAxNi03LjIgMTYtMTZsMC0zMmMwLTguOC03LjItMTYtMTYtMTZsLTMyIDBjLTguOCAwLTE2IDcuMi0xNiAxNnptMTc2LTE2Yy04LjggMC0xNiA3LjItMTYgMTZsMCAzMmMwIDguOCA3LjIgMTYgMTYgMTZsMzIgMGM4LjggMCAxNi03LjIgMTYtMTZsMC0zMmMwLTguOC03LjItMTYtMTYtMTZsLTMyIDB6TTUxMiAzNjhsMCAzMmMwIDguOCA3LjIgMTYgMTYgMTZsMzIgMGM4LjggMCAxNi03LjIgMTYtMTZsMC0zMmMwLTguOC03LjItMTYtMTYtMTZsLTMyIDBjLTguOCAwLTE2IDcuMi0xNiAxNnpNMTY2LjYgMTUzLjRsODAgODBjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNsLTgwIDgwYy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMHMtMTIuNS0zMi44IDAtNDUuM0wxNDYuNyAyODggMzIgMjg4Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDExNC43IDAtMjUuNC0yNS40Yy0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM3MzMi44LTEyLjUgNDUuMyAwelwiXVxufTtcbmNvbnN0IGZhUmliYm9uID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3JpYmJvbicsXG4gIGljb246IFs0NDgsIDUxMiwgWzEyNzg5NV0sIFwiZjRkNlwiLCBcIk0zMzMuMiAzMjIuOHMwIDAgMCAwbC0xMzMuOS0xNDZzMCAwIDAgMEwxNDYgMTE4LjZjNy44LTUuMSAzNy0yMi42IDc4LTIyLjZzNzAuMiAxNy40IDc4IDIyLjZMMjQ1LjcgMTgwbDg1LjYgOTMuNCAyNy40LTI5LjhjMTYuMy0xNy43IDI1LjMtNDAuOSAyNS4zLTY1bDAtMjkuNWMwLTE5LTUuNi0zNy41LTE2LjEtNTMuM0wzMjcuOCAzNS42QzMxMi45IDEzLjQgMjg3LjkgMCAyNjEuMiAwbC03NiAwYy0yNS44IDAtNTAuMSAxMi41LTY1LjEgMzMuNUw4MS45IDg3QzcwLjMgMTAzLjIgNjQgMTIyLjggNjQgMTQyLjhMNjQgMTY0YzAgMjMuMiA4LjQgNDUuNiAyMy42IDYzLjFsNTYgNjQuMnMwIDAgMCAwbDgzLjMgOTUuNnMwIDAgMCAwbDkxLjggMTA1LjNjMTAgMTEuNSAyNi44IDE0LjMgNDAgNi44bDU0LjUtMzEuMWMxNy44LTEwLjIgMjEuNi0zNC4zIDcuNy00OS40bC04Ny43LTk1Ljd6TTIwNS4yIDQxMC42bC04My4zLTk1LjZMMjcuMSA0MTguNWMtMTMuOSAxNS4xLTEwLjEgMzkuMiA3LjcgNDkuNGw1NS4xIDMxLjVjMTMgNy40IDI5LjMgNC45IDM5LjQtNi4xbDc1LjktODIuNnpcIl1cbn07XG5jb25zdCBmYUx1bmdzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2x1bmdzJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbMTI5NzI5XSwgXCJmNjA0XCIsIFwiTTMyMCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgMTMyLjFjMCAxNi40IDguNCAzMS43IDIyLjIgNDAuNWw5LjggNi4yIDAtNDUuNUMzODQgMTI3IDQxNSA5NiA0NTMuMyA5NmMyMS43IDAgNDIuOCAxMC4yIDU1LjggMjguOGMxNS40IDIyLjEgNDQuMyA2NS40IDcxIDExNi45YzI2LjUgNTAuOSA1Mi40IDExMi41IDU5LjYgMTcwLjNjLjIgMS4zIC4yIDIuNiAuMiA0bDAgN2MwIDQ5LjEtMzkuOCA4OS04OSA4OWMtNy4zIDAtMTQuNS0uOS0yMS42LTIuN2wtNzIuNy0xOC4yQzQxNCA0ODAuNSAzODQgNDQyLjEgMzg0IDM5OGwwLTczIDkwLjUgNTcuNmM3LjUgNC43IDE3LjMgMi41IDIyLjEtNC45czIuNS0xNy4zLTQuOS0yMi4xTDM4NCAyODcuMWwwLS40LTQ0LjEtMjguMWMtNy4zLTQuNi0xMy45LTEwLjEtMTkuOS0xNi4xYy01LjkgNi0xMi42IDExLjUtMTkuOSAxNi4xTDI1NiAyODYuNyAxNjEuMiAzNDdsLTEzLjUgOC42YzAgMCAwIDAtLjEgMGMtNy40IDQuOC05LjYgMTQuNi00LjggMjIuMWM0LjcgNy41IDE0LjYgOS43IDIyLjEgNC45bDkxLjEtNTggMCA3My40YzAgNDQuMS0zMCA4Mi41LTcyLjcgOTMuMWwtNzIuNyAxOC4yYy03LjEgMS44LTE0LjMgMi43LTIxLjYgMi43Yy00OS4xIDAtODktMzkuOC04OS04OWwwLTdjMC0xLjMgLjEtMi43IC4yLTRjNy4yLTU3LjkgMzMuMS0xMTkuNCA1OS42LTE3MC4zYzI2LjgtNTEuNSA1NS42LTk0LjggNzEtMTE2LjljMTMtMTguNiAzNC0yOC44IDU1LjgtMjguOEMyMjUgOTYgMjU2IDEyNyAyNTYgMTY1LjNsMCA0NS41IDkuOC02LjJjMTMuOC04LjggMjIuMi0yNC4xIDIyLjItNDAuNUwyODggMzJjMC0xNy43IDE0LjMtMzIgMzItMzJ6XCJdXG59O1xuY29uc3QgZmFBcnJvd1VwOTEgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYXJyb3ctdXAtOS0xJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXCJzb3J0LW51bWVyaWMtdXAtYWx0XCJdLCBcImY4ODdcIiwgXCJNMTYwIDMyYzkgMCAxNy41IDMuOCAyMy42IDEwLjRsODggOTZjMTEuOSAxMyAxMS4xIDMzLjMtMiA0NS4ycy0zMy4zIDExLjEtNDUuMi0yTDE5MiAxNDYuMyAxOTIgNDQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtMzAxLjdMOTUuNiAxODEuNmMtMTEuOSAxMy0zMi4yIDEzLjktNDUuMiAycy0xMy45LTMyLjItMi00NS4ybDg4LTk2QzE0Mi41IDM1LjggMTUxIDMyIDE2MCAzMnpNNDUwLjcgMjk0YzguMyA2IDEzLjMgMTUuNyAxMy4zIDI2bDAgOTYgMTYgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtNDggMC00OCAwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDE2IDAgMC01MS42LTUuOSAyYy0xNi44IDUuNi0zNC45LTMuNS00MC41LTIwLjJzMy41LTM0LjkgMjAuMi00MC41bDQ4LTE2YzkuOC0zLjMgMjAuNS0xLjYgMjguOCA0LjR6bS01LTE0NS4xQTMyIDMyIDAgMSAwIDQxOC4zIDkxYTMyIDMyIDAgMSAwIDI3LjQgNTcuOXptLTQwLjcgNTQuOUMzNjkuNiAxOTIuNCAzNDQgMTU5LjIgMzQ0IDEyMGMwLTQ4LjYgMzkuNC04OCA4OC04OHM4OCAzOS40IDg4IDg4YzAgMjMuNS03LjUgNDYuMy0yMS41IDY1LjJMNDQ5LjcgMjUxYy0xMC41IDE0LjItMzAuNiAxNy4yLTQ0LjggNi43cy0xNy4yLTMwLjYtNi43LTQ0LjhsNi44LTkuMnpcIl1cbn07XG5jb25zdCBmYVNvcnROdW1lcmljVXBBbHQgPSBmYUFycm93VXA5MTtcbmNvbnN0IGZhTGl0ZWNvaW5TaWduID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2xpdGVjb2luLXNpZ24nLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImUxZDNcIiwgXCJNMTI4IDY0YzAtMTcuNy0xNC4zLTMyLTMyLTMyUzY0IDQ2LjMgNjQgNjRsMCAxNDkuNkwyMy4yIDIyNS4yYy0xNyA0LjktMjYuOCAyMi42LTIyIDM5LjZzMjIuNiAyNi44IDM5LjYgMjJMNjQgMjgwLjEgNjQgNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMybDI1NiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC0yMjQgMCAwLTE1NC4xIDEzNi44LTM5LjFjMTctNC45IDI2LjgtMjIuNiAyMi0zOS42cy0yMi42LTI2LjgtMzkuNi0yMkwxMjggMTk1LjMgMTI4IDY0elwiXVxufTtcbmNvbnN0IGZhQm9yZGVyTm9uZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdib3JkZXItbm9uZScsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjg1MFwiLCBcIk0zMiA0ODBhMzIgMzIgMCAxIDEgMC02NCAzMiAzMiAwIDEgMSAwIDY0em05Ni02NGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6bTAtMzg0YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHptMCAyNTZhMzIgMzIgMCAxIDEgMC02NCAzMiAzMiAwIDEgMSAwIDY0ek0zMjAgNDE2YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHptMC0zMjBhMzIgMzIgMCAxIDEgMC02NCAzMiAzMiAwIDEgMSAwIDY0em0wIDEyOGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6TTIyNCA0ODBhMzIgMzIgMCAxIDEgMC02NCAzMiAzMiAwIDEgMSAwIDY0em0wLTQ0OGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6bTAgMjU2YTMyIDMyIDAgMSAxIDAtNjQgMzIgMzIgMCAxIDEgMCA2NHpNNDE2IDQxNmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6bTAtMzg0YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpNMzIgOTZhMzIgMzIgMCAxIDEgMC02NCAzMiAzMiAwIDEgMSAwIDY0ek00MTYgMjI0YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpNMzIgMjg4YTMyIDMyIDAgMSAxIDAtNjQgMzIgMzIgMCAxIDEgMCA2NHptMTkyIDMyYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHptMTkyIDY0YTMyIDMyIDAgMSAxIDAtNjQgMzIgMzIgMCAxIDEgMCA2NHpNMzIgMzIwYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpNNDE2IDE5MmEzMiAzMiAwIDEgMSAwLTY0IDMyIDMyIDAgMSAxIDAgNjR6TTMyIDEyOGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6bTE5MiA2NGEzMiAzMiAwIDEgMSAwLTY0IDMyIDMyIDAgMSAxIDAgNjR6XCJdXG59O1xuY29uc3QgZmFDaXJjbGVOb2RlcyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaXJjbGUtbm9kZXMnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImU0ZTJcIiwgXCJNNDE4LjQgMTU3LjljMzUuMy04LjMgNjEuNi00MCA2MS42LTc3LjljMC00NC4yLTM1LjgtODAtODAtODBjLTQzLjQgMC03OC43IDM0LjUtODAgNzcuNUwxMzYuMiAxNTEuMUMxMjEuNyAxMzYuOCAxMDEuOSAxMjggODAgMTI4Yy00NC4yIDAtODAgMzUuOC04MCA4MHMzNS44IDgwIDgwIDgwYzEyLjIgMCAyMy44LTIuNyAzNC4xLTcuNkwyNTkuNyA0MDcuOGMtMi40IDcuNi0zLjcgMTUuOC0zLjcgMjQuMmMwIDQ0LjIgMzUuOCA4MCA4MCA4MHM4MC0zNS44IDgwLTgwYzAtMjcuNy0xNC01Mi4xLTM1LjQtNjYuNGwzNy44LTIwNy43ek0xNTYuMyAyMzIuMmMyLjItNi45IDMuNS0xNC4yIDMuNy0yMS43bDE4My44LTczLjVjMy42IDMuNSA3LjQgNi43IDExLjYgOS41TDMxNy42IDM1NC4xYy01LjUgMS4zLTEwLjggMy4xLTE1LjggNS41TDE1Ni4zIDIzMi4yelwiXVxufTtcbmNvbnN0IGZhUGFyYWNodXRlQm94ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BhcmFjaHV0ZS1ib3gnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY0Y2RcIiwgXCJNMzgzLjUgMTkyYy4zLTUuMyAuNS0xMC42IC41LTE2YzAtNTEtMTUuOS05Ni00MC4yLTEyNy42QzMxOS41IDE2LjkgMjg4LjIgMCAyNTYgMHMtNjMuNSAxNi45LTg3LjggNDguNEMxNDMuOSA4MCAxMjggMTI1IDEyOCAxNzZjMCA1LjQgLjIgMTAuNyAuNSAxNkwyNDAgMTkybDAgMTI4LTMyIDBjLTcgMC0xMy43IDEuNS0xOS43IDQuMkw2OC4yIDE5MmwyOC4zIDBjLS4zLTUuMy0uNS0xMC42LS41LTE2YzAtNjQgMjIuMi0xMjEuMiA1Ny4xLTE1OS4zQzYyIDQ5LjMgMTguNiAxMjIuNiA0LjIgMTczLjZDMS41IDE4My4xIDkgMTkyIDE4LjkgMTkybDYgMEwxNjUuMiAzNDYuM2MtMy4zIDYuNS01LjIgMTMuOS01LjIgMjEuN2wwIDk2YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4bDk2IDBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhsMC05NmMwLTcuOC0xLjktMTUuMi01LjItMjEuN0w0ODcuMSAxOTJsNiAwYzkuOSAwIDE3LjQtOC45IDE0LjctMTguNEM0OTMuNCAxMjIuNiA0NTAgNDkuMyAzNTguOSAxNi43QzM5My44IDU0LjggNDE2IDExMi4xIDQxNiAxNzZjMCA1LjQtLjIgMTAuNy0uNSAxNmwyOC4zIDBMMzIzLjcgMzI0LjJjLTYtMi43LTEyLjctNC4yLTE5LjctNC4ybC0zMiAwIDAtMTI4IDExMS41IDB6XCJdXG59O1xuY29uc3QgZmFJbmRlbnQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaW5kZW50JyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMDNjXCIsIFwiTTAgNjRDMCA0Ni4zIDE0LjMgMzIgMzIgMzJsMzg0IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJMMzIgOTZDMTQuMyA5NiAwIDgxLjcgMCA2NHpNMTkyIDE5MmMwLTE3LjcgMTQuMy0zMiAzMi0zMmwxOTIgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtMTkyIDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyem0zMiA5NmwxOTIgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtMTkyIDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJ6TTAgNDQ4YzAtMTcuNyAxNC4zLTMyIDMyLTMybDM4NCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyTDMyIDQ4MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6TTEyNy44IDI2OC42TDI1LjggMzQ3LjlDMTUuMyAzNTYuMSAwIDM0OC42IDAgMzM1LjNMMCAxNzYuN2MwLTEzLjMgMTUuMy0yMC44IDI1LjgtMTIuNmwxMDEuOSA3OS4zYzguMiA2LjQgOC4yIDE4LjkgMCAyNS4zelwiXVxufTtcbmNvbnN0IGZhVHJ1Y2tGaWVsZFVuID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RydWNrLWZpZWxkLXVuJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlNThlXCIsIFwiTTk2IDMyQzYwLjcgMzIgMzIgNjAuNyAzMiA5NmwwIDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMmwwIDk2YzAgMTcuNyAxNC4zIDMyIDMyIDMybDAgMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsMzIgMGMwIDUzIDQzIDk2IDk2IDk2czk2LTQzIDk2LTk2bDEyOCAwYzAgNTMgNDMgOTYgOTYgOTZzOTYtNDMgOTYtOTZsMzIgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwwLTMyYzAtMzUuMy0yOC43LTY0LTY0LTY0bC00LjIgMGMtLjQtMS4xLS45LTIuMS0xLjMtMy4yTDQ4NS43IDEwMmMtMTAuMy0yMy4xLTMzLjItMzgtNTguNS0zOGwtNTEuOCAwQzM2NC40IDQ0LjkgMzQzLjcgMzIgMzIwIDMyTDk2IDMyem0yODggOTZsNDMuMiAwIDQyLjcgOTZMMzg0IDIyNGwwLTk2ek0xMTIgMzg0YTQ4IDQ4IDAgMSAxIDk2IDAgNDggNDggMCAxIDEgLTk2IDB6bTM2OC00OGE0OCA0OCAwIDEgMSAwIDk2IDQ4IDQ4IDAgMSAxIDAtOTZ6TTI1My4zIDEzNS4xbDM0LjcgNTIgMC00My4yYzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZsMCA5NmMwIDcuMS00LjYgMTMuMy0xMS40IDE1LjNzLTE0LS42LTE3LjktNi40bC0zNC43LTUyIDAgNDMuMmMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNmwwLTk2YzAtNy4xIDQuNi0xMy4zIDExLjQtMTUuM3MxNCAuNiAxNy45IDYuNHpNMTI4IDE0NGwwIDY0YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZsMC02NGMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2bDAgNjRjMCAyNi41LTIxLjUgNDgtNDggNDhzLTQ4LTIxLjUtNDgtNDhsMC02NGMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2elwiXVxufTtcbmNvbnN0IGZhSG91cmdsYXNzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hvdXJnbGFzcycsXG4gIGljb246IFszODQsIDUxMiwgWzkyMDMsIDYyMDMyLCBcImhvdXJnbGFzcy1lbXB0eVwiXSwgXCJmMjU0XCIsIFwiTTAgMzJDMCAxNC4zIDE0LjMgMCAzMiAwTDY0IDAgMzIwIDBsMzIgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwwIDExYzAgNDIuNC0xNi45IDgzLjEtNDYuOSAxMTMuMUwyMzcuMyAyNTZsNjcuOSA2Ny45YzMwIDMwIDQ2LjkgNzAuNyA0Ni45IDExMy4xbDAgMTFjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTMyIDBMNjQgNTEybC0zMiAwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDAtMTFjMC00Mi40IDE2LjktODMuMSA0Ni45LTExMy4xTDE0Ni43IDI1NiA3OC45IDE4OC4xQzQ4LjkgMTU4LjEgMzIgMTE3LjQgMzIgNzVsMC0xMUMxNC4zIDY0IDAgNDkuNyAwIDMyek05NiA2NGwwIDExYzAgMjUuNSAxMC4xIDQ5LjkgMjguMSA2Ny45TDE5MiAyMTAuN2w2Ny45LTY3LjljMTgtMTggMjguMS00Mi40IDI4LjEtNjcuOWwwLTExTDk2IDY0em0wIDM4NGwxOTIgMCAwLTExYzAtMjUuNS0xMC4xLTQ5LjktMjguMS02Ny45TDE5MiAzMDEuM2wtNjcuOSA2Ny45Yy0xOCAxOC0yOC4xIDQyLjQtMjguMSA2Ny45bDAgMTF6XCJdXG59O1xuY29uc3QgZmFIb3VyZ2xhc3NFbXB0eSA9IGZhSG91cmdsYXNzO1xuY29uc3QgZmFNb3VudGFpbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtb3VudGFpbicsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyNzk1Nl0sIFwiZjZmY1wiLCBcIk0yNTYgMzJjMTIuNSAwIDI0LjEgNi40IDMwLjggMTdMNTAzLjQgMzk0LjRjNS42IDguOSA4LjYgMTkuMiA4LjYgMjkuN2MwIDMwLjktMjUgNTUuOS01NS45IDU1LjlMNTUuOSA0ODBDMjUgNDgwIDAgNDU1IDAgNDI0LjFjMC0xMC41IDMtMjAuOCA4LjYtMjkuN0wyMjUuMiA0OWM2LjYtMTAuNiAxOC4zLTE3IDMwLjgtMTd6bTY1IDE5MkwyNTYgMTIwLjQgMTc2LjkgMjQ2LjVsMTguMyAyNC40YzYuNCA4LjUgMTkuMiA4LjUgMjUuNiAwbDI1LjYtMzQuMWM2LTguMSAxNS41LTEyLjggMjUuNi0xMi44bDQ5IDB6XCJdXG59O1xuY29uc3QgZmFVc2VyRG9jdG9yID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3VzZXItZG9jdG9yJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXCJ1c2VyLW1kXCJdLCBcImYwZjBcIiwgXCJNMjI0IDI1NkExMjggMTI4IDAgMSAwIDIyNCAwYTEyOCAxMjggMCAxIDAgMCAyNTZ6bS05NiA1NS4yQzU0IDMzMi45IDAgNDAxLjMgMCA0ODIuM0MwIDQ5OC43IDEzLjMgNTEyIDI5LjcgNTEybDM4OC42IDBjMTYuNCAwIDI5LjctMTMuMyAyOS43LTI5LjdjMC04MS01NC0xNDkuNC0xMjgtMTcxLjFsMCA1MC44YzI3LjYgNy4xIDQ4IDMyLjIgNDggNjJsMCA0MGMwIDguOC03LjIgMTYtMTYgMTZsLTE2IDBjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZsMC0yNGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMmwwIDI0YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2bC0xNiAwYy04LjggMC0xNi03LjItMTYtMTZsMC00MGMwLTI5LjggMjAuNC01NC45IDQ4LTYybDAtNTcuMWMtNi0uNi0xMi4xLS45LTE4LjMtLjlsLTkxLjQgMGMtNi4yIDAtMTIuMyAuMy0xOC4zIC45bDAgNjUuNGMyMy4xIDYuOSA0MCAyOC4zIDQwIDUzLjdjMCAzMC45LTI1LjEgNTYtNTYgNTZzLTU2LTI1LjEtNTYtNTZjMC0yNS40IDE2LjktNDYuOCA0MC01My43bDAtNTkuMXpNMTQ0IDQ0OGEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6XCJdXG59O1xuY29uc3QgZmFVc2VyTWQgPSBmYVVzZXJEb2N0b3I7XG5jb25zdCBmYUNpcmNsZUluZm8gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2lyY2xlLWluZm8nLFxuICBpY29uOiBbNTEyLCA1MTIsIFtcImluZm8tY2lyY2xlXCJdLCBcImYwNWFcIiwgXCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTIxNiAzMzZsMjQgMCAwLTY0LTI0IDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRsNDggMGMxMy4zIDAgMjQgMTAuNyAyNCAyNGwwIDg4IDggMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGwtODAgMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNHptNDAtMjA4YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIl1cbn07XG5jb25zdCBmYUluZm9DaXJjbGUgPSBmYUNpcmNsZUluZm87XG5jb25zdCBmYUNsb3VkTWVhdGJhbGwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2xvdWQtbWVhdGJhbGwnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY3M2JcIiwgXCJNMCAyMjRjMCA1MyA0MyA5NiA5NiA5Nmw0NC43IDBjOS41LTIzLjUgMzIuNS00MCA1OS4zLTQwYzIgMCAzLjkgLjEgNS44IC4zQzIxNy42IDI2NS41IDIzNS43IDI1NiAyNTYgMjU2czM4LjQgOS41IDUwLjIgMjQuM2MxLjktLjIgMy45LS4zIDUuOC0uM2MyNi45IDAgNDkuOSAxNi41IDU5LjMgNDBsNDQuNyAwYzUzIDAgOTYtNDMgOTYtOTZzLTQzLTk2LTk2LTk2Yy0uNSAwLTEuMSAwLTEuNiAwYzEuMS01LjIgMS42LTEwLjUgMS42LTE2YzAtNDQuMi0zNS44LTgwLTgwLTgwYy0yNC4zIDAtNDYuMSAxMC45LTYwLjggMjhDMjU2LjUgMjQuMyAyMTkuMSAwIDE3NiAwQzExNC4xIDAgNjQgNTAuMSA2NCAxMTJjMCA3LjEgLjcgMTQuMSAxLjkgMjAuOEMyNy42IDE0NS40IDAgMTgxLjUgMCAyMjR6bTI4OCA5NmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMmMwIDEgLjEgMi4xIC4xIDMuMWMtLjctLjgtMS40LTEuNi0yLjEtMi4zYy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM2MuNyAuNyAxLjUgMS40IDIuMyAyLjFjLTEtLjEtMi4xLS4xLTMuMS0uMWMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmMxIDAgMi4xLS4xIDMuMS0uMWMtLjggLjctMS42IDEuMy0yLjMgMi4xYy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwYy43LS43IDEuNC0xLjUgMi4xLTIuM2MtLjEgMS0uMSAyLjEtLjEgMy4xYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJjMC0xLS4xLTIuMS0uMS0zLjFjLjcgLjggMS4zIDEuNiAyLjEgMi4zYzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNjLS43LS43LTEuNS0xLjQtMi4zLTIuMWMxIC4xIDIuMSAuMSAzLjEgLjFjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJjLTEgMC0yLjEgLjEtMy4xIC4xYy44LS43IDEuNi0xLjMgMi4zLTIuMWMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMGMtLjcgLjctMS40IDEuNS0yLjEgMi4zYy4xLTEgLjEtMi4xIC4xLTMuMXpNNDggNDQ4YTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnptNDE2IDBhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2elwiXVxufTtcbmNvbnN0IGZhQ2FtZXJhID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NhbWVyYScsXG4gIGljb246IFs1MTIsIDUxMiwgWzYyMjU4LCBcImNhbWVyYS1hbHRcIl0sIFwiZjAzMFwiLCBcIk0xNDkuMSA2NC44TDEzOC43IDk2IDY0IDk2QzI4LjcgOTYgMCAxMjQuNyAwIDE2MEwwIDQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NGwzODQgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTI1NmMwLTM1LjMtMjguNy02NC02NC02NGwtNzQuNyAwTDM2Mi45IDY0LjhDMzU2LjQgNDUuMiAzMzguMSAzMiAzMTcuNCAzMkwxOTQuNiAzMmMtMjAuNyAwLTM5IDEzLjItNDUuNSAzMi44ek0yNTYgMTkyYTk2IDk2IDAgMSAxIDAgMTkyIDk2IDk2IDAgMSAxIDAtMTkyelwiXVxufTtcbmNvbnN0IGZhQ2FtZXJhQWx0ID0gZmFDYW1lcmE7XG5jb25zdCBmYVNxdWFyZVZpcnVzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NxdWFyZS12aXJ1cycsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZTU3OFwiLCBcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2TDAgNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0bDMyMCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMzIwYzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDMyek0yMjMuOCA5My43YzEzLjMgMCAyNCAxMC43IDI0IDI0YzAgMjkuMyAzNS40IDQzLjkgNTYuMSAyMy4yYzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOWMtMjAuNyAyMC43LTYgNTYuMSAyMy4yIDU2LjFjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRjLTI5LjMgMC00My45IDM1LjQtMjMuMiA1Ni4xYzkuNCA5LjQgOS40IDI0LjYgMCAzMy45cy0yNC42IDkuNC0zMy45IDBjLTIwLjctMjAuNy01Ni4xLTYtNTYuMSAyMy4yYzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0YzAtMjkuMy0zNS40LTQzLjktNTYuMS0yMy4yYy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45YzIwLjctMjAuNyA2LTU2LjEtMjMuMi01Ni4xYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0YzI5LjMgMCA0My45LTM1LjQgMjMuMi01Ni4xYy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXMyNC42LTkuNCAzMy45IDBjMjAuNyAyMC43IDU2LjEgNiA1Ni4xLTIzLjJjMC0xMy4zIDEwLjctMjQgMjQtMjR6TTE5MiAyNTZhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0em04OCAzMmEyNCAyNCAwIDEgMCAtNDggMCAyNCAyNCAwIDEgMCA0OCAwelwiXVxufTtcbmNvbnN0IGZhTWV0ZW9yID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21ldGVvcicsXG4gIGljb246IFs1MTIsIDUxMiwgWzk3MzJdLCBcImY3NTNcIiwgXCJNNDkzLjcgLjlMMjk5LjQgNzUuNmwyLjMtMjkuM2MxLTEyLjgtMTIuOC0yMS41LTI0LTE1LjFMMTAxLjMgMTMzLjRDMzguNiAxNjkuNyAwIDIzNi42IDAgMzA5QzAgNDIxLjEgOTAuOSA1MTIgMjAzIDUxMmM3Mi40IDAgMTM5LjQtMzguNiAxNzUuNy0xMDEuM0w0ODAuOCAyMzQuM2M2LjUtMTEuMS0yLjItMjUtMTUuMS0yNGwtMjkuMyAyLjNMNTExLjEgMTguM2MuNi0xLjUgLjktMy4yIC45LTQuOEM1MTIgNiA1MDYgMCA0OTguNSAwYy0xLjcgMC0zLjMgLjMtNC44IC45ek0xOTIgMTkyYTEyOCAxMjggMCAxIDEgMCAyNTYgMTI4IDEyOCAwIDEgMSAwLTI1NnptMCA5NmEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwem0xNiA5NmExNiAxNiAwIDEgMCAwLTMyIDE2IDE2IDAgMSAwIDAgMzJ6XCJdXG59O1xuY29uc3QgZmFDYXJPbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjYXItb24nLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImU0ZGRcIiwgXCJNMjgwIDI0YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0bDAgODBjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGwwLTgwek0xODUuOCAyMjRsMTQwLjMgMGM2LjggMCAxMi44IDQuMyAxNS4xIDEwLjZMMzYwLjMgMjg4bC0yMDguNiAwIDE5LjEtNTMuNGMyLjMtNi40IDguMy0xMC42IDE1LjEtMTAuNnptLTc1LjMtMTAuOUw4Mi4yIDI5Mi40QzYyLjEgMzAwLjkgNDggMzIwLjggNDggMzQ0bDAgNDAgMCA2NCAwIDMyYzAgMTcuNyAxNC4zIDMyIDMyIDMybDE2IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJsMC0zMiAyNTYgMCAwIDMyYzAgMTcuNyAxNC4zIDMyIDMyIDMybDE2IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJsMC0zMiAwLTY0IDAtNDBjMC0yMy4yLTE0LjEtNDMuMS0zNC4yLTUxLjZsLTI4LjMtNzkuM0MzOTAuMSAxODEuMyAzNjAgMTYwIDMyNi4yIDE2MGwtMTQwLjMgMGMtMzMuOCAwLTY0IDIxLjMtNzUuMyA1My4xek0xMjggMzQ0YTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHptMjMyIDI0YTI0IDI0IDAgMSAxIDQ4IDAgMjQgMjQgMCAxIDEgLTQ4IDB6TTM5IDM5Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOWw0OCA0OGM5LjQgOS40IDI0LjYgOS40IDMzLjkgMHM5LjQtMjQuNiAwLTMzLjlMNzMgMzljLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwem00MDAgMEwzOTEgODdjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45czI0LjYgOS40IDMzLjkgMGw0OC00OGM5LjQtOS40IDkuNC0yNC42IDAtMzMuOXMtMjQuNi05LjQtMzMuOSAwelwiXVxufTtcbmNvbnN0IGZhU2xlaWdoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NsZWlnaCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjdjY1wiLCBcIk0zMiAzMkMxNC4zIDMyIDAgNDYuMyAwIDY0UzE0LjMgOTYgMzIgOTZsMCAxNjBjMCA1MyA0MyA5NiA5NiA5NmwwIDMyIDY0IDAgMC0zMiAxOTIgMCAwIDMyIDY0IDAgMC0zMmM1MyAwIDk2LTQzIDk2LTk2bDAtOTZjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTMyIDAtMzIgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJsMCA0MS4zYzAgMzAuMi0yNC41IDU0LjctNTQuNyA1NC43Yy03NS41IDAtMTQ1LjYtMzguOS0xODUuNi0xMDIuOWwtNC4zLTYuOUMxNzQuMiA2Ny42IDEyNSAzNy42IDcwLjcgMzIuN2MtMi4yLS41LTQuNC0uNy02LjctLjdsLTkgMEwzMiAzMnpNNjQwIDM4NGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMmwwIDhjMCAxMy4zLTEwLjcgMjQtMjQgMjRMNjQgNDE2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDQ4OCAwYzQ4LjYgMCA4OC0zOS40IDg4LTg4bDAtOHpcIl1cbn07XG5jb25zdCBmYUFycm93RG93bjE5ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Fycm93LWRvd24tMS05JyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXCJzb3J0LW51bWVyaWMtYXNjXCIsIFwic29ydC1udW1lcmljLWRvd25cIl0sIFwiZjE2MlwiLCBcIk00NTAuNyAzOGMtOC4zLTYtMTkuMS03LjctMjguOC00LjRsLTQ4IDE2Yy0xNi44IDUuNi0yNS44IDIzLjctMjAuMiA0MC41czIzLjcgMjUuOCA0MC41IDIwLjJsNS45LTIgMCA1MS42LTE2IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsNDggMCA0OCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC0xNiAwIDAtOTZjMC0xMC4zLTQuOS0xOS45LTEzLjMtMjZ6TTE2MCA0ODBjOSAwIDE3LjUtMy44IDIzLjYtMTAuNGw4OC05NmMxMS45LTEzIDExLjEtMzMuMy0yLTQ1LjJzLTMzLjMtMTEuMS00NS4yIDJMMTkyIDM2NS43IDE5MiA2NGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMmwwIDMwMS43TDk1LjYgMzMwLjRjLTExLjktMTMtMzIuMi0xMy45LTQ1LjItMnMtMTMuOSAzMi4yLTIgNDUuMmw4OCA5NkMxNDIuNSA0NzYuMiAxNTEgNDgwIDE2MCA0ODB6TTQxOC4zIDMwN2EzMiAzMiAwIDEgMSAyNy40IDU3LjlBMzIgMzIgMCAxIDEgNDE4LjMgMzA3ek00MDUuMSA0MTkuOGwtNi44IDkuMmMtMTAuNSAxNC4yLTcuNSAzNC4yIDYuNyA0NC44czM0LjIgNy41IDQ0LjgtNi43bDQ4LjgtNjUuOGMxNC0xOC45IDIxLjUtNDEuNyAyMS41LTY1LjJjMC00OC42LTM5LjQtODgtODgtODhzLTg4IDM5LjQtODggODhjMCAzOS4yIDI1LjYgNzIuNCA2MS4xIDgzLjh6XCJdXG59O1xuY29uc3QgZmFTb3J0TnVtZXJpY0FzYyA9IGZhQXJyb3dEb3duMTk7XG5jb25zdCBmYVNvcnROdW1lcmljRG93biA9IGZhQXJyb3dEb3duMTk7XG5jb25zdCBmYUhhbmRIb2xkaW5nRHJvcGxldCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoYW5kLWhvbGRpbmctZHJvcGxldCcsXG4gIGljb246IFs1NzYsIDUxMiwgW1wiaGFuZC1ob2xkaW5nLXdhdGVyXCJdLCBcImY0YzFcIiwgXCJNMjc1LjUgNi42QzI3OC4zIDIuNSAyODMgMCAyODggMHM5LjcgMi41IDEyLjUgNi42TDM2Ni44IDEwM0MzNzggMTE5LjMgMzg0IDEzOC42IDM4NCAxNTguM2wwIDEuN2MwIDUzLTQzIDk2LTk2IDk2cy05Ni00My05Ni05NmwwLTEuN2MwLTE5LjggNi0zOSAxNy4yLTU1LjNMMjc1LjUgNi42ek01NjguMiAzMzYuM2MxMy4xIDE3LjggOS4zIDQyLjgtOC41IDU1LjlMNDMzLjEgNDg1LjVjLTIzLjQgMTcuMi01MS42IDI2LjUtODAuNyAyNi41TDE5MiA1MTIgMzIgNTEyYy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTY0YzAtMTcuNyAxNC4zLTMyIDMyLTMybDM2LjggMCA0NC45LTM2YzIyLjctMTguMiA1MC45LTI4IDgwLTI4bDc4LjMgMCAxNiAwIDY0IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTY0IDAtMTYgMGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmwxMjAuNiAwIDExOS43LTg4LjJjMTcuOC0xMy4xIDQyLjgtOS4zIDU1LjkgOC41ek0xOTMuNiAzODRjMCAwIDAgMCAwIDBsLS45IDBjLjMgMCAuNiAwIC45IDB6XCJdXG59O1xuY29uc3QgZmFIYW5kSG9sZGluZ1dhdGVyID0gZmFIYW5kSG9sZGluZ0Ryb3BsZXQ7XG5jb25zdCBmYVdhdGVyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3dhdGVyJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmNzczXCIsIFwiTTI2OS41IDY5LjljMTEuMS03LjkgMjUuOS03LjkgMzcgMEMzMjkgODUuNCAzNTYuNSA5NiAzODQgOTZjMjYuOSAwIDU1LjQtMTAuOCA3Ny40LTI2LjFjMCAwIDAgMCAwIDBjMTEuOS04LjUgMjguMS03LjggMzkuMiAxLjdjMTQuNCAxMS45IDMyLjUgMjEgNTAuNiAyNS4yYzE3LjIgNCAyNy45IDIxLjIgMjMuOSAzOC40cy0yMS4yIDI3LjktMzguNCAyMy45Yy0yNC41LTUuNy00NC45LTE2LjUtNTguMi0yNUM0NDkuNSAxNDkuNyA0MTcgMTYwIDM4NCAxNjBjLTMxLjkgMC02MC42LTkuOS04MC40LTE4LjljLTUuOC0yLjctMTEuMS01LjMtMTUuNi03LjdjLTQuNSAyLjQtOS43IDUuMS0xNS42IDcuN2MtMTkuOCA5LTQ4LjUgMTguOS04MC40IDE4LjljLTMzIDAtNjUuNS0xMC4zLTk0LjUtMjUuOGMtMTMuNCA4LjQtMzMuNyAxOS4zLTU4LjIgMjVjLTE3LjIgNC0zNC40LTYuNy0zOC40LTIzLjlzNi43LTM0LjQgMjMuOS0zOC40QzQyLjggOTIuNiA2MSA4My41IDc1LjMgNzEuNmMxMS4xLTkuNSAyNy4zLTEwLjEgMzkuMi0xLjdjMCAwIDAgMCAwIDBDMTM2LjcgODUuMiAxNjUuMSA5NiAxOTIgOTZjMjcuNSAwIDU1LTEwLjYgNzcuNS0yNi4xem0zNyAyODhDMzI5IDM3My40IDM1Ni41IDM4NCAzODQgMzg0YzI2LjkgMCA1NS40LTEwLjggNzcuNC0yNi4xYzAgMCAwIDAgMCAwYzExLjktOC41IDI4LjEtNy44IDM5LjIgMS43YzE0LjQgMTEuOSAzMi41IDIxIDUwLjYgMjUuMmMxNy4yIDQgMjcuOSAyMS4yIDIzLjkgMzguNHMtMjEuMiAyNy45LTM4LjQgMjMuOWMtMjQuNS01LjctNDQuOS0xNi41LTU4LjItMjVDNDQ5LjUgNDM3LjcgNDE3IDQ0OCAzODQgNDQ4Yy0zMS45IDAtNjAuNi05LjktODAuNC0xOC45Yy01LjgtMi43LTExLjEtNS4zLTE1LjYtNy43Yy00LjUgMi40LTkuNyA1LjEtMTUuNiA3LjdjLTE5LjggOS00OC41IDE4LjktODAuNCAxOC45Yy0zMyAwLTY1LjUtMTAuMy05NC41LTI1LjhjLTEzLjQgOC40LTMzLjcgMTkuMy01OC4yIDI1Yy0xNy4yIDQtMzQuNC02LjctMzguNC0yMy45czYuNy0zNC40IDIzLjktMzguNGMxOC4xLTQuMiAzNi4yLTEzLjMgNTAuNi0yNS4yYzExLjEtOS40IDI3LjMtMTAuMSAzOS4yLTEuN2MwIDAgMCAwIDAgMEMxMzYuNyAzNzMuMiAxNjUuMSAzODQgMTkyIDM4NGMyNy41IDAgNTUtMTAuNiA3Ny41LTI2LjFjMTEuMS03LjkgMjUuOS03LjkgMzcgMHptMC0xNDRDMzI5IDIyOS40IDM1Ni41IDI0MCAzODQgMjQwYzI2LjkgMCA1NS40LTEwLjggNzcuNC0yNi4xYzAgMCAwIDAgMCAwYzExLjktOC41IDI4LjEtNy44IDM5LjIgMS43YzE0LjQgMTEuOSAzMi41IDIxIDUwLjYgMjUuMmMxNy4yIDQgMjcuOSAyMS4yIDIzLjkgMzguNHMtMjEuMiAyNy45LTM4LjQgMjMuOWMtMjQuNS01LjctNDQuOS0xNi41LTU4LjItMjVDNDQ5LjUgMjkzLjcgNDE3IDMwNCAzODQgMzA0Yy0zMS45IDAtNjAuNi05LjktODAuNC0xOC45Yy01LjgtMi43LTExLjEtNS4zLTE1LjYtNy43Yy00LjUgMi40LTkuNyA1LjEtMTUuNiA3LjdjLTE5LjggOS00OC41IDE4LjktODAuNCAxOC45Yy0zMyAwLTY1LjUtMTAuMy05NC41LTI1LjhjLTEzLjQgOC40LTMzLjcgMTkuMy01OC4yIDI1Yy0xNy4yIDQtMzQuNC02LjctMzguNC0yMy45czYuNy0zNC40IDIzLjktMzguNGMxOC4xLTQuMiAzNi4yLTEzLjMgNTAuNi0yNS4yYzExLjEtOS41IDI3LjMtMTAuMSAzOS4yLTEuN2MwIDAgMCAwIDAgMEMxMzYuNyAyMjkuMiAxNjUuMSAyNDAgMTkyIDI0MGMyNy41IDAgNTUtMTAuNiA3Ny41LTI2LjFjMTEuMS03LjkgMjUuOS03LjkgMzcgMHpcIl1cbn07XG5jb25zdCBmYUNhbGVuZGFyQ2hlY2sgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2FsZW5kYXItY2hlY2snLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYyNzRcIiwgXCJNMTI4IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCAzMiAxMjggMCAwLTMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJsMCAzMiA0OCAwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4bDAgNDhMMCAxNjBsMC00OEMwIDg1LjUgMjEuNSA2NCA0OCA2NGw0OCAwIDAtMzJjMC0xNy43IDE0LjMtMzIgMzItMzJ6TTAgMTkybDQ0OCAwIDAgMjcyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4TDQ4IDUxMmMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhMMCAxOTJ6TTMyOSAzMDVjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlzLTI0LjYtOS40LTMzLjkgMGwtOTUgOTUtNDctNDdjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwcy05LjQgMjQuNiAwIDMzLjlsNjQgNjRjOS40IDkuNCAyNC42IDkuNCAzMy45IDBMMzI5IDMwNXpcIl1cbn07XG5jb25zdCBmYUJyYWlsbGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYnJhaWxsZScsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjJhMVwiLCBcIk0wIDk2YTY0IDY0IDAgMSAxIDEyOCAwQTY0IDY0IDAgMSAxIDAgOTZ6TTIyNCAyNzJhMTYgMTYgMCAxIDAgMC0zMiAxNiAxNiAwIDEgMCAwIDMyem0wLTgwYTY0IDY0IDAgMSAxIDAgMTI4IDY0IDY0IDAgMSAxIDAtMTI4ek04MCA0MTZhMTYgMTYgMCAxIDAgLTMyIDAgMTYgMTYgMCAxIDAgMzIgMHpNMCA0MTZhNjQgNjQgMCAxIDEgMTI4IDBBNjQgNjQgMCAxIDEgMCA0MTZ6bTI0MCAwYTE2IDE2IDAgMSAwIC0zMiAwIDE2IDE2IDAgMSAwIDMyIDB6bS04MCAwYTY0IDY0IDAgMSAxIDEyOCAwIDY0IDY0IDAgMSAxIC0xMjggMHpNNjQgMTkyYTY0IDY0IDAgMSAxIDAgMTI4IDY0IDY0IDAgMSAxIDAtMTI4ek0yMjQgMzJhNjQgNjQgMCAxIDEgMCAxMjggNjQgNjQgMCAxIDEgMC0xMjh6TTM1MiA5NmE2NCA2NCAwIDEgMSAxMjggMEE2NCA2NCAwIDEgMSAzNTIgOTZ6bTI0MCAwYTE2IDE2IDAgMSAwIC0zMiAwIDE2IDE2IDAgMSAwIDMyIDB6bS04MCAwYTY0IDY0IDAgMSAxIDEyOCAwQTY0IDY0IDAgMSAxIDUxMiA5NnptNjQgMTc2YTE2IDE2IDAgMSAwIDAtMzIgMTYgMTYgMCAxIDAgMCAzMnptMC04MGE2NCA2NCAwIDEgMSAwIDEyOCA2NCA2NCAwIDEgMSAwLTEyOHptMTYgMjI0YTE2IDE2IDAgMSAwIC0zMiAwIDE2IDE2IDAgMSAwIDMyIDB6bS04MCAwYTY0IDY0IDAgMSAxIDEyOCAwIDY0IDY0IDAgMSAxIC0xMjggMHpNNDE2IDI3MmExNiAxNiAwIDEgMCAwLTMyIDE2IDE2IDAgMSAwIDAgMzJ6bTAtODBhNjQgNjQgMCAxIDEgMCAxMjggNjQgNjQgMCAxIDEgMC0xMjh6bTE2IDIyNGExNiAxNiAwIDEgMCAtMzIgMCAxNiAxNiAwIDEgMCAzMiAwem0tODAgMGE2NCA2NCAwIDEgMSAxMjggMCA2NCA2NCAwIDEgMSAtMTI4IDB6XCJdXG59O1xuY29uc3QgZmFQcmVzY3JpcHRpb25Cb3R0bGVNZWRpY2FsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3ByZXNjcmlwdGlvbi1ib3R0bGUtbWVkaWNhbCcsXG4gIGljb246IFszODQsIDUxMiwgW1wicHJlc2NyaXB0aW9uLWJvdHRsZS1hbHRcIl0sIFwiZjQ4NlwiLCBcIk0wIDMyQzAgMTQuMyAxNC4zIDAgMzIgMEwzNTIgMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDMyYzAgMTcuNy0xNC4zIDMyLTMyIDMyTDMyIDk2QzE0LjMgOTYgMCA4MS43IDAgNjRMMCAzMnptMzIgOTZsMzIwIDAgMCAzMjBjMCAzNS4zLTI4LjcgNjQtNjQgNjRMOTYgNTEyYy0zNS4zIDAtNjQtMjguNy02NC02NGwwLTMyMHpNMTYwIDI0MGwwIDQ4LTQ4IDBjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDMyYzAgOC44IDcuMiAxNiAxNiAxNmw0OCAwIDAgNDhjMCA4LjggNy4yIDE2IDE2IDE2bDMyIDBjOC44IDAgMTYtNy4yIDE2LTE2bDAtNDggNDggMGM4LjggMCAxNi03LjIgMTYtMTZsMC0zMmMwLTguOC03LjItMTYtMTYtMTZsLTQ4IDAgMC00OGMwLTguOC03LjItMTYtMTYtMTZsLTMyIDBjLTguOCAwLTE2IDcuMi0xNiAxNnpcIl1cbn07XG5jb25zdCBmYVByZXNjcmlwdGlvbkJvdHRsZUFsdCA9IGZhUHJlc2NyaXB0aW9uQm90dGxlTWVkaWNhbDtcbmNvbnN0IGZhTGFuZG1hcmsgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbGFuZG1hcmsnLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjc5NjNdLCBcImY2NmZcIiwgXCJNMjQwLjEgNC4yYzkuOC01LjYgMjEuOS01LjYgMzEuOCAwbDE3MS44IDk4LjFMNDQ4IDEwNGwwIC45IDQ3LjkgMjcuNGMxMi42IDcuMiAxOC44IDIyIDE1LjEgMzZzLTE2LjQgMjMuOC0zMC45IDIzLjhMMzIgMTkyYy0xNC41IDAtMjcuMi05LjgtMzAuOS0yMy44czIuNS0yOC44IDE1LjEtMzZMNjQgMTA0LjlsMC0uOSA0LjQtMS42TDI0MC4xIDQuMnpNNjQgMjI0bDY0IDAgMCAxOTIgNDAgMCAwLTE5MiA2NCAwIDAgMTkyIDQ4IDAgMC0xOTIgNjQgMCAwIDE5MiA0MCAwIDAtMTkyIDY0IDAgMCAxOTYuM2MuNiAuMyAxLjIgLjcgMS44IDEuMWw0OCAzMmMxMS43IDcuOCAxNyAyMi40IDEyLjkgMzUuOVM0OTQuMSA1MTIgNDgwIDUxMkwzMiA1MTJjLTE0LjEgMC0yNi41LTkuMi0zMC42LTIyLjdzMS4xLTI4LjEgMTIuOS0zNS45bDQ4LTMyYy42LS40IDEuMi0uNyAxLjgtMS4xTDY0IDIyNHpcIl1cbn07XG5jb25zdCBmYVRydWNrID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RydWNrJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbMTI4NjY2LCA5OTUxXSwgXCJmMGQxXCIsIFwiTTQ4IDBDMjEuNSAwIDAgMjEuNSAwIDQ4TDAgMzY4YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4bDE2IDBjMCA1MyA0MyA5NiA5NiA5NnM5Ni00MyA5Ni05NmwxMjggMGMwIDUzIDQzIDk2IDk2IDk2czk2LTQzIDk2LTk2bDMyIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsMC02NCAwLTMyIDAtMTguN2MwLTE3LTYuNy0zMy4zLTE4LjctNDUuM0w1MTIgMTE0LjdjLTEyLTEyLTI4LjMtMTguNy00NS4zLTE4LjdMNDE2IDk2bDAtNDhjMC0yNi41LTIxLjUtNDgtNDgtNDhMNDggMHpNNDE2IDE2MGw1MC43IDBMNTQ0IDIzNy4zbDAgMTguNy0xMjggMCAwLTk2ek0xMTIgNDE2YTQ4IDQ4IDAgMSAxIDk2IDAgNDggNDggMCAxIDEgLTk2IDB6bTM2OC00OGE0OCA0OCAwIDEgMSAwIDk2IDQ4IDQ4IDAgMSAxIDAtOTZ6XCJdXG59O1xuY29uc3QgZmFDcm9zc2hhaXJzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Nyb3NzaGFpcnMnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwNWJcIiwgXCJNMjU2IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCAxMC40YzkzLjcgMTMuOSAxNjcuNyA4OCAxODEuNiAxODEuNmwxMC40IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTEwLjQgMGMtMTMuOSA5My43LTg4IDE2Ny43LTE4MS42IDE4MS42bDAgMTAuNGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTEwLjRDMTMwLjMgNDU1LjcgNTYuMyAzODEuNyA0Mi40IDI4OEwzMiAyODhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJsMTAuNCAwQzU2LjMgMTMwLjMgMTMwLjMgNTYuMyAyMjQgNDIuNEwyMjQgMzJjMC0xNy43IDE0LjMtMzIgMzItMzJ6TTEwNy40IDI4OGMxMi41IDU4LjMgNTguNCAxMDQuMSAxMTYuNiAxMTYuNmwwLTIwLjZjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMmwwIDIwLjZjNTguMy0xMi41IDEwNC4xLTU4LjQgMTE2LjYtMTE2LjZMMzg0IDI4OGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmwyMC42IDBDMzkyLjEgMTY1LjcgMzQ2LjMgMTE5LjkgMjg4IDEwNy40bDAgMjAuNmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTIwLjZDMTY1LjcgMTE5LjkgMTE5LjkgMTY1LjcgMTA3LjQgMjI0bDIwLjYgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtMjAuNiAwek0yNTYgMjI0YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIl1cbn07XG5jb25zdCBmYVBlcnNvbkNhbmUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGVyc29uLWNhbmUnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImU1M2NcIiwgXCJNMjcyIDQ4YTQ4IDQ4IDAgMSAwIC05NiAwIDQ4IDQ4IDAgMSAwIDk2IDB6bS04IDE4Ny4zbDQ3LjQgNTcuMWMxMS4zIDEzLjYgMzEuNSAxNS41IDQ1LjEgNC4yczE1LjUtMzEuNSA0LjItNDUuMWwtNzMuNy04OC45Yy0xOC4yLTIyLTQ1LjMtMzQuNy03My45LTM0LjdsLTM1LjkgMGMtMzMuNyAwLTY0LjkgMTcuNy04Mi4zIDQ2LjZsLTU4LjMgOTdjLTkuMSAxNS4xLTQuMiAzNC44IDEwLjkgNDMuOXMzNC44IDQuMiA0My45LTEwLjlMMTIwIDI1Ni45IDEyMCA0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTEyOCAxNiAwIDAgMTI4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0yNDQuN3pNMzUyIDM3NmMwLTQuNCAzLjYtOCA4LThzOCAzLjYgOCA4bDAgMTEyYzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRsMC0xMTJjMC0zMC45LTI1LjEtNTYtNTYtNTZzLTU2IDI1LjEtNTYgNTZsMCA4YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRsMC04elwiXVxufTtcbmNvbnN0IGZhVGVudCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0ZW50JyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJlNTdkXCIsIFwiTTI2OS40IDZDMjgwLjUtMiAyOTUuNS0yIDMwNi42IDZsMjI0IDE2MGM3LjQgNS4zIDEyLjIgMTMuNSAxMy4yIDIyLjVsMzIgMjg4YzEgOS0xLjkgMTguMS04IDI0LjlzLTE0LjcgMTAuNy0yMy44IDEwLjdsLTgwIDAtMjguMiAwYy0xMi4xIDAtMjMuMi02LjgtMjguNi0xNy43TDMwNi43IDI5My41Yy0xLjctMy40LTUuMS01LjUtOC44LTUuNWMtNS41IDAtOS45IDQuNC05LjkgOS45TDI4OCA0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJsLTE2IDBMMzIgNTEyYy05LjEgMC0xNy44LTMuOS0yMy44LTEwLjdzLTktMTUuOC04LTI0LjlsMzItMjg4YzEtOSA1LjgtMTcuMiAxMy4yLTIyLjVMMjY5LjQgNnpcIl1cbn07XG5jb25zdCBmYVZlc3RQYXRjaGVzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3Zlc3QtcGF0Y2hlcycsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZTA4NlwiLCBcIk0xNTEuMiA2OS43bDU1LjkgMTY3LjctMTEgMzMuMWMtMi43IDguMi00LjEgMTYuNy00LjEgMjUuM0wxOTIgNDY0YzAgMTQuNSAzLjkgMjguMiAxMC43IDM5LjlDMTk1IDUwOSAxODUuOSA1MTIgMTc2IDUxMkw0OCA1MTJjLTI2LjUgMC00OC0yMS41LTQ4LTQ4TDAgMjcwLjVjMC05LjUgMi44LTE4LjcgOC4xLTI2LjZsNDcuOS03MS44YzUuMy03LjkgOC4xLTE3LjEgOC4xLTI2LjZMNjQgMTI4bDAtNzMuN0w2NCA0OEM2NCAyMS41IDg1LjUgMCAxMTIgMGw0LjUgMGMuMiAwIC40IDAgLjYgMGMuNCAwIC44IDAgMS4yIDBjMTguOCAwIDM0LjEgOS43IDQ0LjEgMTguOEMxNzEuNiAyNy4yIDE5MC44IDQwIDIyNCA0MHM1Mi40LTEyLjggNjEuNy0yMS4yQzI5NS43IDkuNyAzMTEgMCAzMjkuNyAwYy40IDAgLjggMCAxLjIgMGMuMiAwIC40IDAgLjYgMEwzMzYgMGMyNi41IDAgNDggMjEuNSA0OCA0OGwwIDYuMyAwIDczLjcgMCAxNy41YzAgOS41IDIuOCAxOC43IDguMSAyNi42bDQ3LjkgNzEuOGM1LjMgNy45IDguMSAxNy4xIDguMSAyNi42TDQ0OCA0NjRjMCAyNi41LTIxLjUgNDgtNDggNDhsLTEyOCAwYy0yNi41IDAtNDgtMjEuNS00OC00OGwwLTE2OC4yYzAtNS4yIC44LTEwLjMgMi41LTE1LjJMMjk2LjggNjkuN0MyNzkuNCA3OS43IDI1NS40IDg4IDIyNCA4OHMtNTUuNC04LjMtNzIuOC0xOC4zek05NiA0NTZhNDAgNDAgMCAxIDAgMC04MCA0MCA0MCAwIDEgMCAwIDgwek02My41IDI1NS41Yy00LjcgNC43LTQuNyAxMi4zIDAgMTdMNzkgMjg4IDYzLjUgMzAzLjVjLTQuNyA0LjctNC43IDEyLjMgMCAxN3MxMi4zIDQuNyAxNyAwTDk2IDMwNWwxNS41IDE1LjVjNC43IDQuNyAxMi4zIDQuNyAxNyAwczQuNy0xMi4zIDAtMTdMMTEzIDI4OGwxNS41LTE1LjVjNC43LTQuNyA0LjctMTIuMyAwLTE3cy0xMi4zLTQuNy0xNyAwTDk2IDI3MSA4MC41IDI1NS41Yy00LjctNC43LTEyLjMtNC43LTE3IDB6TTMwNCAyODBsMCA4IDAgMzJjMCA4LjggNy4yIDE2IDE2IDE2bDMyIDAgOCAwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0bC04IDAgMC04YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0elwiXVxufTtcbmNvbnN0IGZhQ2hlY2tEb3VibGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2hlY2stZG91YmxlJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmNTYwXCIsIFwiTTM0Mi42IDg2LjZjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBMMTYwIDE3OC43bC01Ny40LTU3LjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zbDgwIDgwYzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDE2MC0xNjB6bTk2IDEyOGMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMEwxNjAgNDAyLjcgNTQuNiAyOTcuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNsMTI4IDEyOGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGwyNTYtMjU2elwiXVxufTtcbmNvbnN0IGZhQXJyb3dEb3duQVogPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYXJyb3ctZG93bi1hLXonLFxuICBpY29uOiBbNTc2LCA1MTIsIFtcInNvcnQtYWxwaGEtYXNjXCIsIFwic29ydC1hbHBoYS1kb3duXCJdLCBcImYxNWRcIiwgXCJNMTgzLjYgNDY5LjZDMTc3LjUgNDc2LjIgMTY5IDQ4MCAxNjAgNDgwcy0xNy41LTMuOC0yMy42LTEwLjRsLTg4LTk2Yy0xMS45LTEzLTExLjEtMzMuMyAyLTQ1LjJzMzMuMy0xMS4xIDQ1LjIgMkwxMjggMzY1LjcgMTI4IDY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJsMCAzMDEuNyAzMi40LTM1LjRjMTEuOS0xMyAzMi4yLTEzLjkgNDUuMi0yczEzLjkgMzIuMiAyIDQ1LjJsLTg4IDk2ek0zMjAgMzIwYzAtMTcuNyAxNC4zLTMyIDMyLTMybDEyOCAwYzEyLjkgMCAyNC42IDcuOCAyOS42IDE5LjhzMi4yIDI1LjctNi45IDM0LjlMNDI5LjMgNDE2bDUwLjcgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtMTI4IDBjLTEyLjkgMC0yNC42LTcuOC0yOS42LTE5LjhzLTIuMi0yNS43IDYuOS0zNC45TDQwMi43IDM1MiAzNTIgMzUyYy0xNy43IDAtMzItMTQuMy0zMi0zMnpNNDE2IDMyYzEyLjEgMCAyMy4yIDYuOCAyOC42IDE3LjdsNjQgMTI4IDE2IDMyYzcuOSAxNS44IDEuNSAzNS0xNC4zIDQyLjlzLTM1IDEuNS00Mi45LTE0LjNMNDYwLjIgMjI0bC04OC40IDAtNy4yIDE0LjNjLTcuOSAxNS44LTI3LjEgMjIuMi00Mi45IDE0LjNzLTIyLjItMjcuMS0xNC4zLTQyLjlsMTYtMzIgNjQtMTI4QzM5Mi44IDM4LjggNDAzLjkgMzIgNDE2IDMyek0zOTUuOCAxNzZsNDAuNCAwTDQxNiAxMzUuNiAzOTUuOCAxNzZ6XCJdXG59O1xuY29uc3QgZmFTb3J0QWxwaGFBc2MgPSBmYUFycm93RG93bkFaO1xuY29uc3QgZmFTb3J0QWxwaGFEb3duID0gZmFBcnJvd0Rvd25BWjtcbmNvbnN0IGZhTW9uZXlCaWxsV2hlYXQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbW9uZXktYmlsbC13aGVhdCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZTUyYVwiLCBcIk0xNzYgMGM0NC4yIDAgODAgMzUuOCA4MCA4MGMwIDguOC03LjIgMTYtMTYgMTZjLTQ0LjIgMC04MC0zNS44LTgwLTgwYzAtOC44IDcuMi0xNiAxNi0xNnpNNTYgMTZsNDggMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNEw1NiA2NEM0Mi43IDY0IDMyIDUzLjMgMzIgNDBzMTAuNy0yNCAyNC0yNHpNMjQgODhsMTEyIDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRMMjQgMTM2Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNFMxMC43IDg4IDI0IDg4em04IDk2YzAtMTMuMyAxMC43LTI0IDI0LTI0bDQ4IDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRsLTQ4IDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0ek0yNzIgMTZjMC04LjggNy4yLTE2IDE2LTE2YzQ0LjIgMCA4MCAzNS44IDgwIDgwYzAgOC44LTcuMiAxNi0xNiAxNmMtNDQuMiAwLTgwLTM1LjgtODAtODB6TTQwMCAwYzQ0LjIgMCA4MCAzNS44IDgwIDgwYzAgOC44LTcuMiAxNi0xNiAxNmMtNDQuMiAwLTgwLTM1LjgtODAtODBjMC04LjggNy4yLTE2IDE2LTE2em04MCAxNDRjMCA0NC4yLTM1LjggODAtODAgODBjLTguOCAwLTE2LTcuMi0xNi0xNmMwLTQ0LjIgMzUuOC04MCA4MC04MGM4LjggMCAxNiA3LjIgMTYgMTZ6TTM1MiAxMjhjOC44IDAgMTYgNy4yIDE2IDE2YzAgNDQuMi0zNS44IDgwLTgwIDgwYy04LjggMC0xNi03LjItMTYtMTZjMC00NC4yIDM1LjgtODAgODAtODB6bS05NiAxNmMwIDQ0LjItMzUuOCA4MC04MCA4MGMtOC44IDAtMTYtNy4yLTE2LTE2YzAtNDQuMiAzNS44LTgwIDgwLTgwYzguOCAwIDE2IDcuMiAxNiAxNnpNMCAzMDRjMC0yNi41IDIxLjUtNDggNDgtNDhsNDE2IDBjMjYuNSAwIDQ4IDIxLjUgNDggNDhsMCAxNjBjMCAyNi41LTIxLjUgNDgtNDggNDhMNDggNTEyYy0yNi41IDAtNDgtMjEuNS00OC00OEwwIDMwNHpNNDggNDE2bDAgNDggNDggMGMwLTI2LjUtMjEuNS00OC00OC00OHpNOTYgMzA0bC00OCAwIDAgNDhjMjYuNSAwIDQ4LTIxLjUgNDgtNDh6TTQ2NCA0MTZjLTI2LjUgMC00OCAyMS41LTQ4IDQ4bDQ4IDAgMC00OHpNNDE2IDMwNGMwIDI2LjUgMjEuNSA0OCA0OCA0OGwwLTQ4LTQ4IDB6bS05NiA4MGE2NCA2NCAwIDEgMCAtMTI4IDAgNjQgNjQgMCAxIDAgMTI4IDB6XCJdXG59O1xuY29uc3QgZmFDb29raWUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY29va2llJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI3ODUwXSwgXCJmNTYzXCIsIFwiTTI0Ny4yIDE3Yy0yMi4xLTMuMS00NC42IC45LTY0LjQgMTEuNGwtNzQgMzkuNUM4OS4xIDc4LjQgNzMuMiA5NC45IDYzLjQgMTE1TDI2LjcgMTkwLjZjLTkuOCAyMC4xLTEzIDQyLjktOS4xIDY0LjlsMTQuNSA4Mi44YzMuOSAyMi4xIDE0LjYgNDIuMyAzMC43IDU3LjlsNjAuMyA1OC40YzE2LjEgMTUuNiAzNi42IDI1LjYgNTguNyAyOC43bDgzIDExLjdjMjIuMSAzLjEgNDQuNi0uOSA2NC40LTExLjRsNzQtMzkuNWMxOS43LTEwLjUgMzUuNi0yNyA0NS40LTQ3LjJsMzYuNy03NS41YzkuOC0yMC4xIDEzLTQyLjkgOS4xLTY0LjlsLTE0LjYtODIuOGMtMy45LTIyLjEtMTQuNi00Mi4zLTMwLjctNTcuOUwzODguOSA1Ny41Yy0xNi4xLTE1LjYtMzYuNi0yNS42LTU4LjctMjguN0wyNDcuMiAxN3pNMjA4IDE0NGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6TTE0NCAzMzZhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMjI0LTY0YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIl1cbn07XG5jb25zdCBmYUFycm93Um90YXRlTGVmdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhcnJvdy1yb3RhdGUtbGVmdCcsXG4gIGljb246IFs1MTIsIDUxMiwgWzg2MzQsIFwiYXJyb3ctbGVmdC1yb3RhdGVcIiwgXCJhcnJvdy1yb3RhdGUtYmFja1wiLCBcImFycm93LXJvdGF0ZS1iYWNrd2FyZFwiLCBcInVuZG9cIl0sIFwiZjBlMlwiLCBcIk0xMjUuNyAxNjBsNTAuMyAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyTDQ4IDIyNGMtMTcuNyAwLTMyLTE0LjMtMzItMzJMMTYgNjRjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMmwwIDUxLjJMOTcuNiA5Ny42Yzg3LjUtODcuNSAyMjkuMy04Ny41IDMxNi44IDBzODcuNSAyMjkuMyAwIDMxNi44cy0yMjkuMyA4Ny41LTMxNi44IDBjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zczMyLjgtMTIuNSA0NS4zIDBjNjIuNSA2Mi41IDE2My44IDYyLjUgMjI2LjMgMHM2Mi41LTE2My44IDAtMjI2LjNzLTE2My44LTYyLjUtMjI2LjMgMEwxMjUuNyAxNjB6XCJdXG59O1xuY29uc3QgZmFBcnJvd0xlZnRSb3RhdGUgPSBmYUFycm93Um90YXRlTGVmdDtcbmNvbnN0IGZhQXJyb3dSb3RhdGVCYWNrID0gZmFBcnJvd1JvdGF0ZUxlZnQ7XG5jb25zdCBmYUFycm93Um90YXRlQmFja3dhcmQgPSBmYUFycm93Um90YXRlTGVmdDtcbmNvbnN0IGZhVW5kbyA9IGZhQXJyb3dSb3RhdGVMZWZ0O1xuY29uc3QgZmFIYXJkRHJpdmUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGFyZC1kcml2ZScsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyODQzNiwgXCJoZGRcIl0sIFwiZjBhMFwiLCBcIk0wIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMybDM4NCAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMTg0LjRjLTE3LTE1LjItMzkuNC0yNC40LTY0LTI0LjRMNjQgMjU2Yy0yNC42IDAtNDcgOS4yLTY0IDI0LjRMMCA5NnpNNjQgMjg4bDM4NCAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgNjRjMCAzNS4zLTI4LjcgNjQtNjQgNjRMNjQgNDgwYy0zNS4zIDAtNjQtMjguNy02NC02NGwwLTY0YzAtMzUuMyAyOC43LTY0IDY0LTY0ek0zMjAgNDE2YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHptMTI4LTMyYTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6XCJdXG59O1xuY29uc3QgZmFIZGQgPSBmYUhhcmREcml2ZTtcbmNvbnN0IGZhRmFjZUdyaW5TcXVpbnRUZWFycyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmYWNlLWdyaW4tc3F1aW50LXRlYXJzJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI5MzE1LCBcImdyaW4tc3F1aW50LXRlYXJzXCJdLCBcImY1ODZcIiwgXCJNNDI2LjggMTQuMkM0NDYtNSA0NzcuNS00LjYgNDk3LjEgMTQuOXMyMCA1MSAuNyA3MC4zYy02LjggNi44LTIxLjQgMTIuNC0zNy40IDE2LjdjLTE2LjMgNC40LTM0LjEgNy41LTQ2LjMgOS4zYy0xLjYgLjItMy4xIC41LTQuNiAuNmMtNC45IC44LTkuMS0yLjgtOS41LTcuNGMtLjEtLjcgMC0xLjQgLjEtMi4xYzEuNi0xMS4yIDQuNi0yOS42IDktNDdjLjMtMS4zIC43LTIuNiAxLTMuOWM0LjMtMTUuOSA5LjgtMzAuNSAxNi43LTM3LjR6bS00NC43IDE5Yy0xLjUgNC44LTIuOSA5LjYtNC4xIDE0LjNjLTQuOCAxOC45LTggMzguNS05LjcgNTAuM2MtNCAyNi44IDE4LjkgNDkuNyA0NS43IDQ1LjhjMTEuOS0xLjYgMzEuNS00LjggNTAuNC05LjdjNC43LTEuMiA5LjUtMi41IDE0LjMtNC4xQzUzNC4yIDIyNy41IDUyMC4yIDM1My44IDQzNyA0MzdjLTgzLjIgODMuMi0yMDkuNSA5Ny4yLTMwNy4yIDQxLjhjMS41LTQuOCAyLjgtOS42IDQtMTQuM2M0LjgtMTguOSA4LTM4LjUgOS43LTUwLjNjNC0yNi44LTE4LjktNDkuNy00NS43LTQ1LjhjLTExLjkgMS42LTMxLjUgNC44LTUwLjQgOS43Yy00LjcgMS4yLTkuNSAyLjUtMTQuMyA0LjFDLTIyLjIgMjg0LjUtOC4yIDE1OC4yIDc1IDc1QzE1OC4yLTguMyAyODQuNS0yMi4yIDM4Mi4yIDMzLjJ6TTUxLjUgNDEwLjFjMTguNS01IDM4LjgtOC4zIDUwLjktMTBjLjQtLjEgLjctLjEgMS0uMWM1LjEtLjIgOS4yIDQuMyA4LjQgOS42Yy0xLjcgMTIuMS01IDMyLjQtMTAgNTAuOUM5Ny42IDQ3Ni40IDkyIDQ5MSA4NS4yIDQ5Ny44QzY2IDUxNyAzNC41IDUxNi42IDE0LjkgNDk3LjFzLTIwLTUxLS43LTcwLjNjNi44LTYuOCAyMS40LTEyLjQgMzcuNC0xNi43ek00MTYuOSAyMDljLTQuNy0xMS45LTIwLjgtMTEtMjYuOCAuM2MtMTkgMzUuNS00NSA3MC44LTc3LjUgMTAzLjNTMjQ0LjggMzcxLjEgMjA5LjMgMzkwYy0xMS4zIDYtMTIuMiAyMi4xLS4zIDI2LjhjNTcuNiAyMi45IDEyNS44IDExIDE3Mi4zLTM1LjVzNTguNC0xMTQuOCAzNS41LTE3Mi4zek04Ny4xIDI4NS4xYzIgMiA0LjYgMy4yIDcuMyAzLjRsNTYuMSA1LjEgNS4xIDU2LjFjLjMgMi44IDEuNSA1LjQgMy40IDcuM2M2LjMgNi4zIDE3LjIgMy42IDE5LjgtNC45bDI5LjctOTcuNGMzLjUtMTEuNi03LjMtMjIuNS0xOS0xOUw5MiAyNjUuM2MtOC42IDIuNi0xMS4zIDEzLjQtNC45IDE5Ljh6TTI2NS4zIDkybC0yOS43IDk3LjRjLTMuNSAxMS42IDcuMyAyMi41IDE5IDE5bDk3LjQtMjkuN2M4LjYtMi42IDExLjMtMTMuNCA0LjktMTkuOGMtMi0yLTQuNi0zLjItNy4zLTMuNGwtNTYuMS01LjEtNS4xLTU2LjFjLS4zLTIuOC0xLjUtNS40LTMuNC03LjNjLTYuMy02LjMtMTcuMi0zLjYtMTkuOCA0Ljl6XCJdXG59O1xuY29uc3QgZmFHcmluU3F1aW50VGVhcnMgPSBmYUZhY2VHcmluU3F1aW50VGVhcnM7XG5jb25zdCBmYUR1bWJiZWxsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2R1bWJiZWxsJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNDRiXCIsIFwiTTk2IDY0YzAtMTcuNyAxNC4zLTMyIDMyLTMybDMyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCAxNjAgMCA2NCAwIDE2MGMwIDE3LjctMTQuMyAzMi0zMiAzMmwtMzIgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC02NC0zMiAwYy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTY0Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDAtNjRjMC0xNy43IDE0LjMtMzIgMzItMzJsMzIgMCAwLTY0em00NDggMGwwIDY0IDMyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCA2NGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwwIDY0YzAgMTcuNy0xNC4zIDMyLTMyIDMybC0zMiAwIDAgNjRjMCAxNy43LTE0LjMgMzItMzIgMzJsLTMyIDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtMTYwIDAtNjQgMC0xNjBjMC0xNy43IDE0LjMtMzIgMzItMzJsMzIgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnpNNDE2IDIyNGwwIDY0LTE5MiAwIDAtNjQgMTkyIDB6XCJdXG59O1xuY29uc3QgZmFSZWN0YW5nbGVMaXN0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3JlY3RhbmdsZS1saXN0JyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXCJsaXN0LWFsdFwiXSwgXCJmMDIyXCIsIFwiTTAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJsNDQ4IDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCAzMjBjMCAzNS4zLTI4LjcgNjQtNjQgNjRMNjQgNDgwYy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDk2ek0xMjggMjg4YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHptMzItMTI4YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6TTEyOCAzODRhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0em05Ni0yNDhjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRsMjI0IDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRsLTIyNCAwem0wIDk2Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0bDIyNCAwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0bC0yMjQgMHptMCA5NmMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNGwyMjQgMGMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNGwtMjI0IDB6XCJdXG59O1xuY29uc3QgZmFMaXN0QWx0ID0gZmFSZWN0YW5nbGVMaXN0O1xuY29uc3QgZmFUYXJwRHJvcGxldCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0YXJwLWRyb3BsZXQnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImU1N2NcIiwgXCJNMjg4IDE2MGMtMzUuMyAwLTY0LTI2LjktNjQtNjBjMC0yNCAzMy43LTcwLjEgNTIuMi05My41YzYuMS03LjcgMTcuNS03LjcgMjMuNiAwQzMxOC4zIDI5LjkgMzUyIDc2IDM1MiAxMDBjMCAzMy4xLTI4LjcgNjAtNjQgNjB6TTY0IDEyOGwxMzMuNSAwYzEzLjIgMzcuMyA0OC43IDY0IDkwLjUgNjRzNzcuNC0yNi43IDkwLjUtNjRMNTEyIDEyOGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDE2MC0xMjggMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJsMCAxMjhMNjQgNTEyYy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDE5MmMwLTM1LjMgMjguNy02NCA2NC02NHpNNDQ4IDUxMmwwLTEyOCAxMjggMEw0NDggNTEyek05NiAyNTZhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0elwiXVxufTtcbmNvbnN0IGZhSG91c2VNZWRpY2FsQ2lyY2xlQ2hlY2sgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaG91c2UtbWVkaWNhbC1jaXJjbGUtY2hlY2snLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU1MTFcIiwgXCJNMzIwIDM2OGMwIDU5LjUgMjkuNSAxMTIuMSA3NC44IDE0NGwtMjY2LjcgMGMtMzUuMyAwLTY0LTI4LjctNjQtNjRsMC0xNjAuNC0zMiAwYy0xOCAwLTMyLTE0LTMyLTMyLjFjMC05IDMtMTcgMTAtMjRMMjY2LjQgOGM3LTcgMTUtOCAyMi04czE1IDIgMjEgN0w1MjIuMSAxOTMuOWMtOC41LTEuMy0xNy4zLTEuOS0yNi4xLTEuOWMtNTQuNyAwLTEwMy41IDI0LjktMTM1LjggNjRMMzIwIDI1NmwwLTQ4YzAtOC44LTcuMi0xNi0xNi0xNmwtMzIgMGMtOC44IDAtMTYgNy4yLTE2IDE2bDAgNDgtNDggMGMtOC44IDAtMTYgNy4yLTE2IDE2bDAgMzJjMCA4LjggNy4yIDE2IDE2IDE2bDQ4IDAgMCA0OGMwIDguOCA3LjIgMTYgMTYgMTZsMzIgMGM4LjggMCAxNi03LjIgMTYtMTZ6bTMyIDBhMTQ0IDE0NCAwIDEgMSAyODggMCAxNDQgMTQ0IDAgMSAxIC0yODggMHptMjExLjMtNDMuM2MtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBMNDgwIDM4NS40bC0yOC43LTI4LjdjLTYuMi02LjItMTYuNC02LjItMjIuNiAwcy02LjIgMTYuNCAwIDIyLjZsNDAgNDBjNi4yIDYuMiAxNi40IDYuMiAyMi42IDBsNzItNzJjNi4yLTYuMiA2LjItMTYuNCAwLTIyLjZ6XCJdXG59O1xuY29uc3QgZmFQZXJzb25Ta2lpbmdOb3JkaWMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGVyc29uLXNraWluZy1ub3JkaWMnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtcInNraWluZy1ub3JkaWNcIl0sIFwiZjdjYVwiLCBcIk0zMzYgOTZhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2ek0yMjcuMiAxNjBjMS45IDAgMy44IC4xIDUuNiAuM0wyMDEuNiAyNTRjLTkuMyAyOCAxLjcgNTguOCAyNi44IDc0LjVsODYuMiA1My45TDI5MS4zIDQ2NGwtODguNSAwIDQxLjEtODguMS0zMi40LTIwLjNjLTcuOC00LjktMTQuNy0xMC43LTIwLjYtMTcuM0wxMzIuMiA0NjRsLTMyLjQgMCA1NC4yLTI1Ny42YzQuNi0xLjUgOS00LjEgMTIuNy03LjhsMjMuMS0yMy4xYzkuOS05LjkgMjMuNC0xNS41IDM3LjUtMTUuNXpNMTIxLjQgMTk4LjZjLjQgLjQgLjggLjggMS4zIDEuMkw2NyA0NjRsLTQzIDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRsMTM1LjMgMGMuNSAwIC45IDAgMS40IDBsMTU4LjYgMGMuNSAwIDEgMCAxLjQgMEw1MDQgNTEyYzM5LjggMCA3Mi0zMi4yIDcyLTcybDAtOGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNGwwIDhjMCAxMy4zLTEwLjcgMjQtMjQgMjRsLTY5LjQgMCAyNy42LTE3OS4zYzEwLjUtNS4yIDE3LjgtMTYuMSAxNy44LTI4LjdjMC0xNy43LTE0LjMtMzItMzItMzJsLTIxLjMgMGMtMTIuOSAwLTI0LjYtNy44LTI5LjUtMTkuN2wtNi4zLTE1Yy0xNC42LTM1LjEtNDQuMS02MS45LTgwLjUtNzMuMWwtNDguNy0xNWMtMTEuMS0zLjQtMjIuNy01LjItMzQuNC01LjJjLTMxIDAtNjAuOCAxMi4zLTgyLjcgMzQuM2wtMjMuMSAyMy4xYy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3ptMzA4IDg5LjRMNDAyLjMgNDY0bC00NC40IDAgMjEuNi03NS42YzUuOS0yMC42LTIuNi00Mi42LTIwLjctNTMuOUwzMDIgMjk5bDMwLjktODIuNCA1LjEgMTIuM0MzNTMgMjY0LjcgMzg3LjkgMjg4IDQyNi43IDI4OGwyLjcgMHpcIl1cbn07XG5jb25zdCBmYVNraWluZ05vcmRpYyA9IGZhUGVyc29uU2tpaW5nTm9yZGljO1xuY29uc3QgZmFDYWxlbmRhclBsdXMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2FsZW5kYXItcGx1cycsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjI3MVwiLCBcIk05NiAzMmwwIDMyTDQ4IDY0QzIxLjUgNjQgMCA4NS41IDAgMTEybDAgNDggNDQ4IDAgMC00OGMwLTI2LjUtMjEuNS00OC00OC00OGwtNDggMCAwLTMyYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMybDAgMzJMMTYwIDY0bDAtMzJjMC0xNy43LTE0LjMtMzItMzItMzJTOTYgMTQuMyA5NiAzMnpNNDQ4IDE5MkwwIDE5MiAwIDQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGwzNTIgMGMyNi41IDAgNDgtMjEuNSA0OC00OGwwLTI3MnpNMjI0IDI0OGMxMy4zIDAgMjQgMTAuNyAyNCAyNGwwIDU2IDU2IDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRsLTU2IDAgMCA1NmMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNGwwLTU2LTU2IDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRsNTYgMCAwLTU2YzAtMTMuMyAxMC43LTI0IDI0LTI0elwiXVxufTtcbmNvbnN0IGZhUGxhbmVBcnJpdmFsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BsYW5lLWFycml2YWwnLFxuICBpY29uOiBbNjQwLCA1MTIsIFsxMjg3NDhdLCBcImY1YWZcIiwgXCJNLjMgMTY2LjlMMCA2OEMwIDU3LjcgOS41IDUwLjEgMTkuNSA1Mi4zbDM1LjYgNy45YzEwLjYgMi4zIDE5LjIgOS45IDIzIDIwTDk2IDEyOGwxMjcuMyAzNy42TDE4MS44IDIwLjRDMTc4LjkgMTAuMiAxODYuNiAwIDE5Ny4yIDBsNDAuMSAwYzExLjYgMCAyMi4yIDYuMiAyNy45IDE2LjNsMTA5IDE5My44IDEwNy4yIDMxLjdjMTUuOSA0LjcgMzAuOCAxMi41IDQzLjcgMjIuOGwzNC40IDI3LjZjMjQgMTkuMiAxOC4xIDU3LjMtMTAuNyA2OC4yYy00MS4yIDE1LjYtODYuMiAxOC4xLTEyOC44IDdMMTIxLjcgMjg5LjhjLTExLjEtMi45LTIxLjItOC43LTI5LjMtMTYuOUw5LjUgMTg5LjRjLTUuOS02LTkuMy0xNC4xLTkuMy0yMi41ek0zMiA0NDhsNTc2IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJMMzIgNTEyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyem05Ni04MGEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwem0xMjgtMTZhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0elwiXVxufTtcbmNvbnN0IGZhQ2lyY2xlTGVmdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaXJjbGUtbGVmdCcsXG4gIGljb246IFs1MTIsIDUxMiwgWzYxODQwLCBcImFycm93LWFsdC1jaXJjbGUtbGVmdFwiXSwgXCJmMzU5XCIsIFwiTTUxMiAyNTZBMjU2IDI1NiAwIDEgMCAwIDI1NmEyNTYgMjU2IDAgMSAwIDUxMiAwek0xMTYuNyAyNDQuN2wxMTItMTEyYzQuNi00LjYgMTEuNS01LjkgMTcuNC0zLjVzOS45IDguMyA5LjkgMTQuOGwwIDY0IDk2IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCAzMmMwIDE3LjctMTQuMyAzMi0zMiAzMmwtOTYgMCAwIDY0YzAgNi41LTMuOSAxMi4zLTkuOSAxNC44cy0xMi45IDEuMS0xNy40LTMuNWwtMTEyLTExMmMtNi4yLTYuMi02LjItMTYuNCAwLTIyLjZ6XCJdXG59O1xuY29uc3QgZmFBcnJvd0FsdENpcmNsZUxlZnQgPSBmYUNpcmNsZUxlZnQ7XG5jb25zdCBmYVRyYWluU3Vid2F5ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RyYWluLXN1YndheScsXG4gIGljb246IFs0NDgsIDUxMiwgW1wic3Vid2F5XCJdLCBcImYyMzlcIiwgXCJNOTYgMEM0MyAwIDAgNDMgMCA5NkwwIDM1MmMwIDQ4IDM1LjIgODcuNyA4MS4xIDk0LjlsLTQ2IDQ2QzI4LjEgNDk5LjkgMzMuMSA1MTIgNDMgNTEybDM5LjcgMGM4LjUgMCAxNi42LTMuNCAyMi42LTkuNEwxNjAgNDQ4bDEyOCAwIDU0LjYgNTQuNmM2IDYgMTQuMSA5LjQgMjIuNiA5LjRsMzkuNyAwYzEwIDAgMTUtMTIuMSA3LjktMTkuMWwtNDYtNDZjNDYtNy4xIDgxLjEtNDYuOSA4MS4xLTk0LjlsMC0yNTZjMC01My00My05Ni05Ni05Nkw5NiAwek02NCAxMjhjMC0xNy43IDE0LjMtMzIgMzItMzJsODAgMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDk2YzAgMTcuNy0xNC4zIDMyLTMyIDMybC04MCAwYy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTk2ek0yNzIgOTZsODAgMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDk2YzAgMTcuNy0xNC4zIDMyLTMyIDMybC04MCAwYy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTk2YzAtMTcuNyAxNC4zLTMyIDMyLTMyek02NCAzNTJhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMjg4LTMyYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIl1cbn07XG5jb25zdCBmYVN1YndheSA9IGZhVHJhaW5TdWJ3YXk7XG5jb25zdCBmYUNoYXJ0R2FudHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2hhcnQtZ2FudHQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImUwZTRcIiwgXCJNMzIgMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCAzMzZjMCA4LjggNy4yIDE2IDE2IDE2bDQwMCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyTDgwIDQ4MGMtNDQuMiAwLTgwLTM1LjgtODAtODBMMCA2NEMwIDQ2LjMgMTQuMyAzMiAzMiAzMnptOTYgOTZjMC0xNy43IDE0LjMtMzIgMzItMzJsOTYgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtOTYgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6bTk2IDY0bDEyOCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC0xMjggMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnptMTYwIDk2bDY0IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTY0IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJ6XCJdXG59O1xuY29uc3QgZmFJbmRpYW5SdXBlZVNpZ24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaW5kaWFuLXJ1cGVlLXNpZ24nLFxuICBpY29uOiBbMzIwLCA1MTIsIFtcImluZGlhbi1ydXBlZVwiLCBcImluclwiXSwgXCJlMWJjXCIsIFwiTTAgNjRDMCA0Ni4zIDE0LjMgMzIgMzIgMzJsNjQgMCAxNiAwIDE3NiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC01Ni4yIDBjOS42IDE0LjQgMTYuNyAzMC42IDIwLjcgNDhsMzUuNiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC0zNS42IDBjLTEzLjIgNTguMy02MS45IDEwMy4yLTEyMi4yIDExMC45TDI3NC42IDQyMmMxNC40IDEwLjMgMTcuNyAzMC4zIDcuNCA0NC42cy0zMC4zIDE3LjctNDQuNiA3LjRMMTMuNCAzMTRDMi4xIDMwNi0yLjcgMjkxLjUgMS41IDI3OC4yUzE4LjEgMjU2IDMyIDI1Nmw4MCAwYzMyLjggMCA2MS0xOS43IDczLjMtNDhMMzIgMjA4Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDE1My4zIDBDMTczIDExNS43IDE0NC44IDk2IDExMiA5Nkw5NiA5NiAzMiA5NkMxNC4zIDk2IDAgODEuNyAwIDY0elwiXVxufTtcbmNvbnN0IGZhSW5kaWFuUnVwZWUgPSBmYUluZGlhblJ1cGVlU2lnbjtcbmNvbnN0IGZhSW5yID0gZmFJbmRpYW5SdXBlZVNpZ247XG5jb25zdCBmYUNyb3BTaW1wbGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY3JvcC1zaW1wbGUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtcImNyb3AtYWx0XCJdLCBcImY1NjVcIiwgXCJNMTI4IDMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyUzY0IDE0LjMgNjQgMzJsMCAzMkwzMiA2NEMxNC4zIDY0IDAgNzguMyAwIDk2czE0LjMgMzIgMzIgMzJsMzIgMCAwIDI1NmMwIDM1LjMgMjguNyA2NCA2NCA2NGwyMjQgMCAwLTY0LTIyNCAwIDAtMzUyek0zODQgNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0zMiAzMiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC0zMiAwIDAtMjU2YzAtMzUuMy0yOC43LTY0LTY0LTY0TDE2MCA2NGwwIDY0IDIyNCAwIDAgMzUyelwiXVxufTtcbmNvbnN0IGZhQ3JvcEFsdCA9IGZhQ3JvcFNpbXBsZTtcbmNvbnN0IGZhTW9uZXlCaWxsMSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtb25leS1iaWxsLTEnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtcIm1vbmV5LWJpbGwtYWx0XCJdLCBcImYzZDFcIiwgXCJNNjQgNjRDMjguNyA2NCAwIDkyLjcgMCAxMjhMMCAzODRjMCAzNS4zIDI4LjcgNjQgNjQgNjRsNDQ4IDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0yNTZjMC0zNS4zLTI4LjctNjQtNjQtNjRMNjQgNjR6bTY0IDMyMGwtNjQgMCAwLTY0YzM1LjMgMCA2NCAyOC43IDY0IDY0ek02NCAxOTJsMC02NCA2NCAwYzAgMzUuMy0yOC43IDY0LTY0IDY0ek00NDggMzg0YzAtMzUuMyAyOC43LTY0IDY0LTY0bDAgNjQtNjQgMHptNjQtMTkyYy0zNS4zIDAtNjQtMjguNy02NC02NGw2NCAwIDAgNjR6TTE3NiAyNTZhMTEyIDExMiAwIDEgMSAyMjQgMCAxMTIgMTEyIDAgMSAxIC0yMjQgMHptNzYtNDhjMCA5LjcgNi45IDE3LjcgMTYgMTkuNmwwIDQ4LjQtNCAwYy0xMSAwLTIwIDktMjAgMjBzOSAyMCAyMCAyMGwyNCAwIDI0IDBjMTEgMCAyMC05IDIwLTIwcy05LTIwLTIwLTIwbC00IDAgMC02OGMwLTExLTktMjAtMjAtMjBsLTE2IDBjLTExIDAtMjAgOS0yMCAyMHpcIl1cbn07XG5jb25zdCBmYU1vbmV5QmlsbEFsdCA9IGZhTW9uZXlCaWxsMTtcbmNvbnN0IGZhTGVmdExvbmcgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbGVmdC1sb25nJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXCJsb25nLWFycm93LWFsdC1sZWZ0XCJdLCBcImYzMGFcIiwgXCJNMTc3LjUgNDE0Yy04LjggMy44LTE5IDItMjYtNC42bC0xNDQtMTM2QzIuNyAyNjguOSAwIDI2Mi42IDAgMjU2czIuNy0xMi45IDcuNS0xNy40bDE0NC0xMzZjNy02LjYgMTcuMi04LjQgMjYtNC42czE0LjUgMTIuNSAxNC41IDIybDAgNzIgMjg4IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCA2NGMwIDE3LjctMTQuMyAzMi0zMiAzMmwtMjg4IDAgMCA3MmMwIDkuNi01LjcgMTguMi0xNC41IDIyelwiXVxufTtcbmNvbnN0IGZhTG9uZ0Fycm93QWx0TGVmdCA9IGZhTGVmdExvbmc7XG5jb25zdCBmYURuYSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdkbmEnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFsxMjk1MTZdLCBcImY0NzFcIiwgXCJNNDE2IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJjMCA1OS44LTMwLjMgMTA3LjUtNjkuNCAxNDYuNmMtMjggMjgtNjIuNSA1My41LTk3LjMgNzcuNGwtMi41IDEuN2MtMTEuOSA4LjEtMjMuOCAxNi4xLTM1LjUgMjMuOWMwIDAgMCAwIDAgMHMwIDAgMCAwczAgMCAwIDBsLTEuNiAxYy02IDQtMTEuOSA3LjktMTcuOCAxMS45Yy0yMC45IDE0LTQwLjggMjcuNy01OS4zIDQxLjVsMTE4LjUgMGMtOS44LTcuNC0yMC4xLTE0LjctMzAuNy0yMi4xbDctNC43IDMtMmMxNS4xLTEwLjEgMzAuOS0yMC42IDQ2LjctMzEuNmMyNSAxOC4xIDQ4LjkgMzcuMyA2OS40IDU3LjdDNDE3LjcgMzcyLjUgNDQ4IDQyMC4yIDQ0OCA0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJMNjQgNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyYzAtNTkuOCAzMC4zLTEwNy41IDY5LjQtMTQ2LjZjMjgtMjggNjIuNS01My41IDk3LjMtNzcuNGMtMzQuOC0yMy45LTY5LjMtNDkuMy05Ny4zLTc3LjRDMzAuMyAxMzkuNSAwIDkxLjggMCAzMkMwIDE0LjMgMTQuMyAwIDMyIDBTNjQgMTQuMyA2NCAzMmwzMjAgMGMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNMzM4LjYgMzg0bC0yMjkuMiAwYy0xMC4xIDEwLjYtMTguNiAyMS4zLTI1LjUgMzJsMjgwLjIgMGMtNi44LTEwLjctMTUuMy0yMS40LTI1LjUtMzJ6TTEwOS40IDEyOGwyMjkuMiAwYzEwLjEtMTAuNyAxOC42LTIxLjMgMjUuNS0zMkw4My45IDk2YzYuOCAxMC43IDE1LjMgMjEuMyAyNS41IDMyem01NS40IDQ4YzE4LjQgMTMuOCAzOC40IDI3LjUgNTkuMyA0MS41YzIwLjktMTQgNDAuOC0yNy43IDU5LjMtNDEuNWwtMTE4LjUgMHpcIl1cbn07XG5jb25zdCBmYVZpcnVzU2xhc2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndmlydXMtc2xhc2gnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImUwNzVcIiwgXCJNMzguOCA1LjFDMjguNC0zLjEgMTMuMy0xLjIgNS4xIDkuMlMtMS4yIDM0LjcgOS4yIDQyLjlsNTkyIDQ2NGMxMC40IDguMiAyNS41IDYuMyAzMy43LTQuMXM2LjMtMjUuNS00LjEtMzMuN2wtMTU0LjMtMTIxYy0yLTMwLjEgMjAuOC02MC4xIDU2LTYwLjFsMTEuNSAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC0xMS41IDBjLTQ5LjkgMC03NC45LTYwLjMtMzkuNi05NS42bDguMi04LjJjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBsLTguMiA4LjJDNDEyLjMgMTE4LjQgMzUyIDkzLjQgMzUyIDQzLjVMMzUyIDMyYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMybDAgMTEuNWMwIDQ5LjktNjAuMyA3NC45LTk1LjYgMzkuNkwxODQuMiA3NWMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBjLTEuNiAxLjYtMy4xIDMuNC00LjMgNS4zTDM4LjggNS4xem0yMjUuOCAxNzdjNi45LTMuOSAxNC45LTYuMSAyMy40LTYuMWMyNi41IDAgNDggMjEuNSA0OCA0OGMwIDQuNC0uNiA4LjctMS43IDEyLjdsLTY5LjctNTQuNnpNNDAyIDQxMi43TDE0NC43IDIxMGMtOS41IDguNS0yMi4yIDE0LTM3LjIgMTRMOTYgMjI0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDExLjUgMGM0OS45IDAgNzQuOSA2MC4zIDM5LjYgOTUuNmwtOC4yIDguMmMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMGw4LjItOC4yYzM1LjMtMzUuMyA5NS42LTEwLjMgOTUuNiAzOS42bDAgMTEuNWMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMTEuNWMwLTMxLjIgMjMuNi01Mi43IDUwLTU1Ljd6XCJdXG59O1xuY29uc3QgZmFNaW51cyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtaW51cycsXG4gIGljb246IFs0NDgsIDUxMiwgWzgyMTEsIDg3MjIsIDEwMTM0LCBcInN1YnRyYWN0XCJdLCBcImYwNjhcIiwgXCJNNDMyIDI1NmMwIDE3LjctMTQuMyAzMi0zMiAzMkw0OCAyODhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJsMzUyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJ6XCJdXG59O1xuY29uc3QgZmFTdWJ0cmFjdCA9IGZhTWludXM7XG5jb25zdCBmYUNoZXNzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NoZXNzJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNDM5XCIsIFwiTTE0NCAxNmMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNmwwIDE2TDk2IDMyYy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2bDE2IDAgMCAzMkw2MC4yIDk2QzQ5LjEgOTYgNDAgMTA1LjEgNDAgMTE2LjJjMCAyLjUgLjUgNC45IDEuMyA3LjNMNzMuOCAyMDggNzIgMjA4Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0bDQgMEw2MCAzODRsMTM2IDBMMTgwIDI1Nmw0IDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRsLTEuOCAwIDMyLjUtODQuNWMuOS0yLjMgMS4zLTQuOCAxLjMtNy4zYzAtMTEuMi05LjEtMjAuMi0yMC4yLTIwLjJMMTQ0IDk2bDAtMzIgMTYgMGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNmwtMTYgMCAwLTE2ek00OCA0MTZMNC44IDQ3My42QzEuNyA0NzcuOCAwIDQ4Mi44IDAgNDg4YzAgMTMuMyAxMC43IDI0IDI0IDI0bDIwOCAwYzEzLjMgMCAyNC0xMC43IDI0LTI0YzAtNS4yLTEuNy0xMC4yLTQuOC0xNC40TDIwOCA0MTYgNDggNDE2em0yODggMGwtNDMuMiA1Ny42Yy0zLjEgNC4yLTQuOCA5LjItNC44IDE0LjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRsMTc2IDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRjMC01LjItMS43LTEwLjItNC44LTE0LjRMNDY0IDQxNmwtMTI4IDB6TTMwNCAyMDhsMCA1MS45YzAgNy44IDIuOCAxNS4zIDggMjEuMUwzMzkuMiAzMTIgMzM3IDM4NGwxMjUuNSAwLTMuMy03MiAyOC4zLTMwLjhjNS40LTUuOSA4LjUtMTMuNiA4LjUtMjEuN2wwLTUxLjVjMC04LjgtNy4yLTE2LTE2LTE2bC0xNiAwYy04LjggMC0xNiA3LjItMTYgMTZsMCAxNi0yNCAwIDAtMTZjMC04LjgtNy4yLTE2LTE2LTE2bC0xNiAwYy04LjggMC0xNiA3LjItMTYgMTZsMCAxNi0yNCAwIDAtMTZjMC04LjgtNy4yLTE2LTE2LTE2bC0xNiAwYy04LjggMC0xNiA3LjItMTYgMTZ6bTgwIDk2YzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZsMCAzMi0zMiAwIDAtMzJ6XCJdXG59O1xuY29uc3QgZmFBcnJvd0xlZnRMb25nID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Fycm93LWxlZnQtbG9uZycsXG4gIGljb246IFs1MTIsIDUxMiwgW1wibG9uZy1hcnJvdy1sZWZ0XCJdLCBcImYxNzdcIiwgXCJNOS40IDIzMy40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM2wxMjggMTI4YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNMMTA5LjMgMjg4IDQ4MCAyODhjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTM3MC43IDAgNzMuNC03My40YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwbC0xMjggMTI4elwiXVxufTtcbmNvbnN0IGZhTG9uZ0Fycm93TGVmdCA9IGZhQXJyb3dMZWZ0TG9uZztcbmNvbnN0IGZhUGx1Z0NpcmNsZUNoZWNrID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BsdWctY2lyY2xlLWNoZWNrJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJlNTVjXCIsIFwiTTk2IDBDNzguMyAwIDY0IDE0LjMgNjQgMzJsMCA5NiA2NCAwIDAtOTZjMC0xNy43LTE0LjMtMzItMzItMzJ6TTI4OCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMmwwIDk2IDY0IDAgMC05NmMwLTE3LjctMTQuMy0zMi0zMi0zMnpNMzIgMTYwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDAgMzJjMCA3Ny40IDU1IDE0MiAxMjggMTU2LjhsMCA2Ny4yYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC02Ny4yYzEyLjMtMi41IDI0LjEtNi40IDM1LjEtMTEuNWMtMi4xLTEwLjgtMy4xLTIxLjktMy4xLTMzLjNjMC04MC4zIDUzLjgtMTQ4IDEyNy4zLTE2OS4yYy41LTIuMiAuNy00LjUgLjctNi44YzAtMTcuNy0xNC4zLTMyLTMyLTMyTDMyIDE2MHpNNTc2IDM2OGExNDQgMTQ0IDAgMSAwIC0yODggMCAxNDQgMTQ0IDAgMSAwIDI4OCAwem0tNzYuNy00My4zYzYuMiA2LjIgNi4yIDE2LjQgMCAyMi42bC03MiA3MmMtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBsLTQwLTQwYy02LjItNi4yLTYuMi0xNi40IDAtMjIuNnMxNi40LTYuMiAyMi42IDBMNDE2IDM4NS40bDYwLjctNjAuN2M2LjItNi4yIDE2LjQtNi4yIDIyLjYgMHpcIl1cbn07XG5jb25zdCBmYVN0cmVldFZpZXcgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3RyZWV0LXZpZXcnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYyMWRcIiwgXCJNMzIwIDY0QTY0IDY0IDAgMSAwIDE5MiA2NGE2NCA2NCAwIDEgMCAxMjggMHptLTk2IDk2Yy0zNS4zIDAtNjQgMjguNy02NCA2NGwwIDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMybDEuOCAwIDExLjEgOTkuNWMxLjggMTYuMiAxNS41IDI4LjUgMzEuOCAyOC41bDM4LjcgMGMxNi4zIDAgMzAtMTIuMyAzMS44LTI4LjVMMzE4LjIgMzA0bDEuOCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMybDAtNDhjMC0zNS4zLTI4LjctNjQtNjQtNjRsLTY0IDB6TTEzMi4zIDM5NC4yYzEzLTIuNCAyMS43LTE0LjkgMTkuMy0yNy45cy0xNC45LTIxLjctMjcuOS0xOS4zYy0zMi40IDUuOS02MC45IDE0LjItODIgMjQuOGMtMTAuNSA1LjMtMjAuMyAxMS43LTI3LjggMTkuNkM2LjQgMzk5LjUgMCA0MTAuNSAwIDQyNGMwIDIxLjQgMTUuNSAzNi4xIDI5LjEgNDVjMTQuNyA5LjYgMzQuMyAxNy4zIDU2LjQgMjMuNEMxMzAuMiA1MDQuNyAxOTAuNCA1MTIgMjU2IDUxMnMxMjUuOC03LjMgMTcwLjQtMTkuNmMyMi4xLTYuMSA0MS44LTEzLjggNTYuNC0yMy40YzEzLjctOC45IDI5LjEtMjMuNiAyOS4xLTQ1YzAtMTMuNS02LjQtMjQuNS0xNC0zMi42Yy03LjUtNy45LTE3LjMtMTQuMy0yNy44LTE5LjZjLTIxLTEwLjYtNDkuNS0xOC45LTgyLTI0LjhjLTEzLTIuNC0yNS41IDYuMy0yNy45IDE5LjNzNi4zIDI1LjUgMTkuMyAyNy45YzMwLjIgNS41IDUzLjcgMTIuOCA2OSAyMC41YzMuMiAxLjYgNS44IDMuMSA3LjkgNC41YzMuNiAyLjQgMy42IDcuMiAwIDkuNmMtOC44IDUuNy0yMy4xIDExLjgtNDMgMTcuM0MzNzQuMyA0NTcgMzE4LjUgNDY0IDI1NiA0NjRzLTExOC4zLTctMTU3LjctMTcuOWMtMTkuOS01LjUtMzQuMi0xMS42LTQzLTE3LjNjLTMuNi0yLjQtMy42LTcuMiAwLTkuNmMyLjEtMS40IDQuOC0yLjkgNy45LTQuNWMxNS4zLTcuNyAzOC44LTE0LjkgNjktMjAuNXpcIl1cbn07XG5jb25zdCBmYUZyYW5jU2lnbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmcmFuYy1zaWduJyxcbiAgaWNvbjogWzMyMCwgNTEyLCBbXSwgXCJlMThmXCIsIFwiTTgwIDMyQzYyLjMgMzIgNDggNDYuMyA0OCA2NGwwIDE2MCAwIDk2LTE2IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsMTYgMCAwIDY0YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC02NCA4MCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC04MCAwIDAtNjQgMTQ0IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTE0NCAwIDAtOTYgMTc2IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJMODAgMzJ6XCJdXG59O1xuY29uc3QgZmFWb2x1bWVPZmYgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndm9sdW1lLW9mZicsXG4gIGljb246IFszMjAsIDUxMiwgW10sIFwiZjAyNlwiLCBcIk0zMjAgNjRjMC0xMi42LTcuNC0yNC0xOC45LTI5LjJzLTI1LTMuMS0zNC40IDUuM0wxMzEuOCAxNjAgNjQgMTYwYy0zNS4zIDAtNjQgMjguNy02NCA2NGwwIDY0YzAgMzUuMyAyOC43IDY0IDY0IDY0bDY3LjggMEwyNjYuNyA0NzEuOWM5LjQgOC40IDIyLjkgMTAuNCAzNC40IDUuM1MzMjAgNDYwLjYgMzIwIDQ0OGwwLTM4NHpcIl1cbn07XG5jb25zdCBmYUhhbmRzQXNsSW50ZXJwcmV0aW5nID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hhbmRzLWFzbC1pbnRlcnByZXRpbmcnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtcImFtZXJpY2FuLXNpZ24tbGFuZ3VhZ2UtaW50ZXJwcmV0aW5nXCIsIFwiYXNsLWludGVycHJldGluZ1wiLCBcImhhbmRzLWFtZXJpY2FuLXNpZ24tbGFuZ3VhZ2UtaW50ZXJwcmV0aW5nXCJdLCBcImYyYTNcIiwgXCJNMTU2LjYgNDYuM2M3LjktMTUuOCAxLjUtMzUtMTQuMy00Mi45cy0zNS0xLjUtNDIuOSAxNC4zTDEzLjUgMTg5LjRDNC42IDIwNy4yIDAgMjI2LjggMCAyNDYuN0wwIDI1NmMwIDcwLjcgNTcuMyAxMjggMTI4IDEyOGw3MiAwIDggMCAwLS4zYzM1LjItMi43IDY1LjQtMjIuOCA4Mi4xLTUxLjdjOC44LTE1LjMgMy42LTM0LjktMTEuNy00My43cy0zNC45LTMuNi00My43IDExLjdjLTcgMTItMTkuOSAyMC0zNC43IDIwYy0yMi4xIDAtNDAtMTcuOS00MC00MHMxNy45LTQwIDQwLTQwYzE0LjggMCAyNy43IDggMzQuNyAyMGM4LjggMTUuMyAyOC40IDIwLjUgNDMuNyAxMS43czIwLjUtMjguNCAxMS43LTQzLjdjLTEyLjgtMjIuMS0zMy42LTM5LjEtNTguNC00Ny4xbDgwLjgtMjJjMTctNC42IDI3LjEtMjIuMiAyMi41LTM5LjNzLTIyLjItMjcuMS0zOS4zLTIyLjVMMTk0LjkgMTI0LjZsODEuNi02OGMxMy42LTExLjMgMTUuNC0zMS41IDQuMS00NS4xUzI0OS4xLTMuOSAyMzUuNSA3LjRMMTMzLjYgOTIuM2wyMy00NnpNNDgzLjQgNDY1LjdjLTcuOSAxNS44LTEuNSAzNSAxNC4zIDQyLjlzMzUgMS41IDQyLjktMTQuM2w4NS45LTE3MS43YzguOS0xNy44IDEzLjUtMzcuNCAxMy41LTU3LjJsMC05LjNjMC03MC43LTU3LjMtMTI4LTEyOC0xMjhsLTcyIDAtOCAwIDAgLjNjLTM1LjIgMi43LTY1LjQgMjIuOC04Mi4xIDUxLjdjLTguOSAxNS4zLTMuNiAzNC45IDExLjcgNDMuN3MzNC45IDMuNiA0My43LTExLjdjNy0xMiAxOS45LTIwIDM0LjctMjBjMjIuMSAwIDQwIDE3LjkgNDAgNDBzLTE3LjkgNDAtNDAgNDBjLTE0LjggMC0yNy43LTgtMzQuNy0yMGMtOC45LTE1LjMtMjguNC0yMC41LTQzLjctMTEuN3MtMjAuNSAyOC40LTExLjcgNDMuN2MxMi44IDIyLjEgMzMuNiAzOS4xIDU4LjQgNDcuMWwtODAuOCAyMmMtMTcuMSA0LjctMjcuMSAyMi4yLTIyLjUgMzkuM3MyMi4yIDI3LjEgMzkuMyAyMi41bDEwMC43LTI3LjUtODEuNiA2OGMtMTMuNiAxMS4zLTE1LjQgMzEuNS00LjEgNDUuMXMzMS41IDE1LjQgNDUuMSA0LjFsMTAxLjktODQuOS0yMyA0NnpcIl1cbn07XG5jb25zdCBmYUFtZXJpY2FuU2lnbkxhbmd1YWdlSW50ZXJwcmV0aW5nID0gZmFIYW5kc0FzbEludGVycHJldGluZztcbmNvbnN0IGZhQXNsSW50ZXJwcmV0aW5nID0gZmFIYW5kc0FzbEludGVycHJldGluZztcbmNvbnN0IGZhSGFuZHNBbWVyaWNhblNpZ25MYW5ndWFnZUludGVycHJldGluZyA9IGZhSGFuZHNBc2xJbnRlcnByZXRpbmc7XG5jb25zdCBmYUdlYXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZ2VhcicsXG4gIGljb246IFs1MTIsIDUxMiwgWzk4ODEsIFwiY29nXCJdLCBcImYwMTNcIiwgXCJNNDk1LjkgMTY2LjZjMy4yIDguNyAuNSAxOC40LTYuNCAyNC42bC00My4zIDM5LjRjMS4xIDguMyAxLjcgMTYuOCAxLjcgMjUuNHMtLjYgMTcuMS0xLjcgMjUuNGw0My4zIDM5LjRjNi45IDYuMiA5LjYgMTUuOSA2LjQgMjQuNmMtNC40IDExLjktOS43IDIzLjMtMTUuOCAzNC4zbC00LjcgOC4xYy02LjYgMTEtMTQgMjEuNC0yMi4xIDMxLjJjLTUuOSA3LjItMTUuNyA5LjYtMjQuNSA2LjhsLTU1LjctMTcuN2MtMTMuNCAxMC4zLTI4LjIgMTguOS00NCAyNS40bC0xMi41IDU3LjFjLTIgOS4xLTkgMTYuMy0xOC4yIDE3LjhjLTEzLjggMi4zLTI4IDMuNS00Mi41IDMuNXMtMjguNy0xLjItNDIuNS0zLjVjLTkuMi0xLjUtMTYuMi04LjctMTguMi0xNy44bC0xMi41LTU3LjFjLTE1LjgtNi41LTMwLjYtMTUuMS00NC0yNS40TDgzLjEgNDI1LjljLTguOCAyLjgtMTguNiAuMy0yNC41LTYuOGMtOC4xLTkuOC0xNS41LTIwLjItMjIuMS0zMS4ybC00LjctOC4xYy02LjEtMTEtMTEuNC0yMi40LTE1LjgtMzQuM2MtMy4yLTguNy0uNS0xOC40IDYuNC0yNC42bDQzLjMtMzkuNEM2NC42IDI3My4xIDY0IDI2NC42IDY0IDI1NnMuNi0xNy4xIDEuNy0yNS40TDIyLjQgMTkxLjJjLTYuOS02LjItOS42LTE1LjktNi40LTI0LjZjNC40LTExLjkgOS43LTIzLjMgMTUuOC0zNC4zbDQuNy04LjFjNi42LTExIDE0LTIxLjQgMjIuMS0zMS4yYzUuOS03LjIgMTUuNy05LjYgMjQuNS02LjhsNTUuNyAxNy43YzEzLjQtMTAuMyAyOC4yLTE4LjkgNDQtMjUuNGwxMi41LTU3LjFjMi05LjEgOS0xNi4zIDE4LjItMTcuOEMyMjcuMyAxLjIgMjQxLjUgMCAyNTYgMHMyOC43IDEuMiA0Mi41IDMuNWM5LjIgMS41IDE2LjIgOC43IDE4LjIgMTcuOGwxMi41IDU3LjFjMTUuOCA2LjUgMzAuNiAxNS4xIDQ0IDI1LjRsNTUuNy0xNy43YzguOC0yLjggMTguNi0uMyAyNC41IDYuOGM4LjEgOS44IDE1LjUgMjAuMiAyMi4xIDMxLjJsNC43IDguMWM2LjEgMTEgMTEuNCAyMi40IDE1LjggMzQuM3pNMjU2IDMzNmE4MCA4MCAwIDEgMCAwLTE2MCA4MCA4MCAwIDEgMCAwIDE2MHpcIl1cbn07XG5jb25zdCBmYUNvZyA9IGZhR2VhcjtcbmNvbnN0IGZhRHJvcGxldFNsYXNoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Ryb3BsZXQtc2xhc2gnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtcInRpbnQtc2xhc2hcIl0sIFwiZjVjN1wiLCBcIk0zMjAgNTEyYzUzLjIgMCAxMDEuNC0yMS42IDEzNi4xLTU2LjZsLTI5OC4zLTIzNUMxNDAgMjU3LjEgMTI4IDI5Mi4zIDEyOCAzMjBjMCAxMDYgODYgMTkyIDE5MiAxOTJ6TTUwNS4yIDM3MC43YzQuNC0xNi4yIDYuOC0zMy4xIDYuOC01MC43YzAtOTEuMi0xMzAuMi0yNjIuMy0xNjYuNi0zMDguM0MzMzkuNCA0LjIgMzMwLjUgMCAzMjAuOSAwbC0xLjggMGMtOS42IDAtMTguNSA0LjItMjQuNSAxMS43QzI3Ny44IDMzIDI0MC43IDgxLjMgMjA1LjggMTM2TDM4LjggNS4xQzI4LjQtMy4xIDEzLjMtMS4yIDUuMSA5LjJTLTEuMiAzNC43IDkuMiA0Mi45bDU5MiA0NjRjMTAuNCA4LjIgMjUuNSA2LjMgMzMuNy00LjFzNi4zLTI1LjUtNC4xLTMzLjdMNTA1LjIgMzcwLjd6TTIyNCAzMzZjMCA0NC4yIDM1LjggODAgODAgODBjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZjLTYxLjkgMC0xMTItNTAuMS0xMTItMTEyYzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ6XCJdXG59O1xuY29uc3QgZmFUaW50U2xhc2ggPSBmYURyb3BsZXRTbGFzaDtcbmNvbnN0IGZhTW9zcXVlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21vc3F1ZScsXG4gIGljb246IFs2NDAsIDUxMiwgWzEyODMzMl0sIFwiZjY3OFwiLCBcIk00MDAgMGM1IDAgOS44IDIuNCAxMi44IDYuNGMzNC43IDQ2LjMgNzguMSA3NC45IDEzMy41IDExMS41YzAgMCAwIDAgMCAwczAgMCAwIDBjNS4yIDMuNCAxMC41IDcgMTYgMTAuNmMyOC45IDE5LjIgNDUuNyA1MS43IDQ1LjcgODYuMWMwIDI4LjYtMTEuMyA1NC41LTI5LjggNzMuNGwtMzU2LjQgMGMtMTguNC0xOS0yOS44LTQ0LjktMjkuOC03My40YzAtMzQuNCAxNi43LTY2LjkgNDUuNy04Ni4xYzUuNC0zLjYgMTAuOC03LjEgMTYtMTAuNmMwIDAgMCAwIDAgMHMwIDAgMCAwQzMwOS4xIDgxLjMgMzUyLjUgNTIuNyAzODcuMiA2LjRjMy00IDcuOC02LjQgMTIuOC02LjR6TTI4OCA1MTJsMC03MmMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNGwwIDcyLTQ4IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtMTI4YzAtMTcuNyAxNC4zLTMyIDMyLTMybDQxNiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgMTI4YzAgMTcuNy0xNC4zIDMyLTMyIDMybC00OCAwIDAtNzJjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjRsMCA3Mi02NCAwIDAtNThjMC0xOS04LjQtMzctMjMtNDkuMkw0MDAgMzg0bC0yNSAyMC44QzM2MC40IDQxNyAzNTIgNDM1IDM1MiA0NTRsMCA1OC02NCAwek03MC40IDUuMmM1LjctNC4zIDEzLjUtNC4zIDE5LjIgMGwxNiAxMkMxMzkuOCA0Mi45IDE2MCA4My4yIDE2MCAxMjZsMCAyTDAgMTI4bDAtMkMwIDgzLjIgMjAuMiA0Mi45IDU0LjQgMTcuMmwxNi0xMnpNMCAxNjBsMTYwIDAgMCAxMzYuNmMtMTkuMSAxMS4xLTMyIDMxLjctMzIgNTUuNGwwIDEyOGMwIDkuNiAyLjEgMTguNiA1LjggMjYuOGMtNi42IDMuNC0xNCA1LjItMjEuOCA1LjJsLTY0IDBjLTI2LjUgMC00OC0yMS41LTQ4LTQ4TDAgMTc2bDAtMTZ6XCJdXG59O1xuY29uc3QgZmFNb3NxdWl0byA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtb3NxdWl0bycsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTUyYlwiLCBcIk00NjMuNyA1MDUuOWM5LjgtOC45IDEwLjctMjQuMyAyLjEtMzQuM2wtNDIuMS00OSAwLTU0LjdjMC01LjUtMS44LTEwLjgtNS4xLTE1LjFMMzUyIDI2Ni4zbDAtLjNMNDg1LjQgMzg3LjhDNTQyLjQgNDQ3LjYgNjQwIDQwNS4yIDY0MCAzMjAuNmMwLTQ3LjktMzQtODguMy03OS40LTk0LjJsLTE1My0yMy45IDQwLjgtNDAuOWM3LjgtNy44IDkuNC0yMC4xIDMuOS0yOS44TDQyOC41IDkwLjFsMzguMi01MC45YzgtMTAuNiA2LjEtMjUuOS00LjMtMzQuMXMtMjUuMi02LjMtMzMuMiA0LjRsLTQ4IDYzLjljLTUuOSA3LjktNi42IDE4LjYtMS43IDI3LjJMNDAyLjIgMTQwIDM1MiAxOTAuM2wwLTM4LjJjMC0xNC45LTEwLjItMjcuNC0yNC0zMWwwLTU3LjJjMC00LjQtMy42LTgtOC04cy04IDMuNi04IDhsMCA1Ny4yYy0xMy44IDMuNi0yNCAxNi4xLTI0IDMxbDAgMzguMUwyMzcuOCAxNDBsMjIuNi0zOS41YzQuOS04LjYgNC4yLTE5LjMtMS43LTI3LjJsLTQ4LTYzLjljLTgtMTAuNi0yMi44LTEyLjYtMzMuMi00LjRzLTEyLjIgMjMuNS00LjMgMzQuMWwzOC4yIDUwLjktMjMuOSA0MS43Yy01LjUgOS43LTMuOSAyMiAzLjkgMjkuOGw0MC44IDQwLjktMTUzIDIzLjlDMzQgMjMyLjMgMCAyNzIuNyAwIDMyMC42YzAgODQuNiA5Ny42IDEyNyAxNTQuNiA2Ny4xTDI4OCAyNjZsMCAuMy02Ni41IDg2LjRjLTMuMyA0LjMtNS4xIDkuNi01LjEgMTUuMWwwIDU0LjctNDIuMSA0OWMtOC42IDEwLjEtNy43IDI1LjUgMi4xIDM0LjNzMjQuNyA3LjkgMzMuNC0yLjFsNDgtNTUuOWMzLjgtNC40IDUuOS0xMC4yIDUuOS0xNi4xbDAtNTUuNEwyODggMzQ0LjdsMCA2My4xYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC02My4xIDI0LjMgMzEuNiAwIDU1LjRjMCA1LjkgMi4xIDExLjcgNS45IDE2LjFsNDggNTUuOWM4LjYgMTAuMSAyMy42IDExIDMzLjQgMi4xelwiXVxufTtcbmNvbnN0IGZhU3Rhck9mRGF2aWQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3Rhci1vZi1kYXZpZCcsXG4gIGljb246IFs1MTIsIDUxMiwgWzEwMDE3XSwgXCJmNjlhXCIsIFwiTTQwNC4yIDMwOS41TDM4My4xIDM0NGw0Mi4zIDAtMjEuMS0zNC41ek0zNzEuNCAyNTZsLTU0LTg4LTEyMi44IDAtNTQgODggNTQgODggMTIyLjggMCA1NC04OHptNjUuNyAwbDUzLjQgODdjMy42IDUuOSA1LjUgMTIuNyA1LjUgMTkuNmMwIDIwLjctMTYuOCAzNy40LTM3LjQgMzcuNGwtMTA5LjggMC01Ni4yIDkxLjVDMjg0LjggNTA0LjMgMjcwLjkgNTEyIDI1NiA1MTJzLTI4LjgtNy43LTM2LjYtMjAuNUwxNjMuMyA0MDAgNTMuNCA0MDBDMzIuOCA0MDAgMTYgMzgzLjIgMTYgMzYyLjZjMC02LjkgMS45LTEzLjcgNS41LTE5LjZsNTMuNC04N0wyMS41IDE2OWMtMy42LTUuOS01LjUtMTIuNy01LjUtMTkuNkMxNiAxMjguOCAzMi44IDExMiA1My40IDExMmwxMDkuOCAwIDU2LjItOTEuNUMyMjcuMiA3LjcgMjQxLjEgMCAyNTYgMHMyOC44IDcuNyAzNi42IDIwLjVMMzQ4LjcgMTEybDEwOS44IDBjMjAuNyAwIDM3LjQgMTYuOCAzNy40IDM3LjRjMCA2LjktMS45IDEzLjctNS41IDE5LjZsLTUzLjQgODd6bS01NC04OGwyMS4xIDM0LjVMNDI1LjQgMTY4bC00Mi4zIDB6TTI4MyAxMTJMMjU2IDY4bC0yNyA0NCA1NCAwek0xMjguOSAxNjhsLTQyLjMgMCAyMS4xIDM0LjVMMTI4LjkgMTY4ek0xMDcuOCAzMDkuNUw4Ni42IDM0NGw0Mi4zIDAtMjEuMS0zNC41ek0yMjkgNDAwbDI3IDQ0IDI3LTQ0LTU0IDB6XCJdXG59O1xuY29uc3QgZmFQZXJzb25NaWxpdGFyeVJpZmxlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BlcnNvbi1taWxpdGFyeS1yaWZsZScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZTU0YlwiLCBcIk0xNjAgMzljMC0xMyAxMC0yMy44IDIyLjktMjQuOUwzMzQuNyAxLjRDMzQ0IC43IDM1MiA4IDM1MiAxNy40TDM1MiA0OGMwIDguOC03LjIgMTYtMTYgMTZMMTg1IDY0Yy0xMy44IDAtMjUtMTEuMi0yNS0yNXptMTcuNiA1N2wxNTYuOCAwYzEgNS4yIDEuNiAxMC41IDEuNiAxNmMwIDQ0LjItMzUuOCA4MC04MCA4MHMtODAtMzUuOC04MC04MGMwLTUuNSAuNi0xMC44IDEuNi0xNnptMjI4IDM2NC4zTDM1MiAzNjkuNyAzNTIgNDgwYzAgMS4zLS4xIDIuNS0uMiAzLjhMMTc3LjUgMjM0LjljMTYuNi03LjEgMzQuNi0xMC45IDUzLjMtMTAuOWw1MC40IDBjMTUuOSAwIDMxLjMgMi44IDQ1LjggNy45TDQyMS45IDY3LjdjLTcuNy00LjQtMTAuMy0xNC4yLTUuOS0yMS45czE0LjItMTAuMyAyMS45LTUuOWwxMy45IDggMTMuOSA4YzcuNyA0LjQgMTAuMyAxNC4yIDUuOSAyMS45TDQxNiAxNzMuOWwxLjYgLjljMTUuMyA4LjggMjAuNiAyOC40IDExLjcgNDMuN0wzOTIuNiAyODJjMiAyLjggMy45IDUuOCA1LjcgOC44bDc2LjEgMTI4LjhjMTEuMiAxOSA0LjkgNDMuNS0xNC4xIDU0LjhzLTQzLjUgNC45LTU0LjgtMTQuMXpNMzIwIDUxMmwtMTI4IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtMTEwLjMtNTMuNiA5MC42Yy0xMS4yIDE5LTM1LjggMjUuMy01NC44IDE0LjFzLTI1LjMtMzUuOC0xNC4xLTU0LjhsNzYuMS0xMjguOGM5LjQtMTUuOCAyMS43LTI5LjMgMzYtNDBMMzMxLjEgNTEwYy0zLjUgMS4zLTcuMiAyLTExLjEgMnpNMjk2IDMyMGEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6XCJdXG59O1xuY29uc3QgZmFDYXJ0U2hvcHBpbmcgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2FydC1zaG9wcGluZycsXG4gIGljb246IFs1NzYsIDUxMiwgWzEyODcyMiwgXCJzaG9wcGluZy1jYXJ0XCJdLCBcImYwN2FcIiwgXCJNMCAyNEMwIDEwLjcgMTAuNyAwIDI0IDBMNjkuNSAwYzIyIDAgNDEuNSAxMi44IDUwLjYgMzJsNDExIDBjMjYuMyAwIDQ1LjUgMjUgMzguNiA1MC40bC00MSAxNTIuM2MtOC41IDMxLjQtMzcgNTMuMy02OS41IDUzLjNsLTI4OC41IDAgNS40IDI4LjVjMi4yIDExLjMgMTIuMSAxOS41IDIzLjYgMTkuNUw0ODggMzM2YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0bC0yODguMyAwYy0zNC42IDAtNjQuMy0yNC42LTcwLjctNTguNUw3Ny40IDU0LjVjLS43LTMuOC00LTYuNS03LjktNi41TDI0IDQ4QzEwLjcgNDggMCAzNy4zIDAgMjR6TTEyOCA0NjRhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHptMzM2LTQ4YTQ4IDQ4IDAgMSAxIDAgOTYgNDggNDggMCAxIDEgMC05NnpcIl1cbn07XG5jb25zdCBmYVNob3BwaW5nQ2FydCA9IGZhQ2FydFNob3BwaW5nO1xuY29uc3QgZmFWaWFscyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd2aWFscycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjQ5M1wiLCBcIk0wIDY0QzAgNDYuMyAxNC4zIDMyIDMyIDMybDU2IDAgNDggMCA1NiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybDAgMzA0YzAgNDQuMi0zNS44IDgwLTgwIDgwcy04MC0zNS44LTgwLTgwTDMyIDk2QzE0LjMgOTYgMCA4MS43IDAgNjR6TTEzNiA5Nkw4OCA5NmwwIDE2MCA0OCAwIDAtMTYwek0yODggNjRjMC0xNy43IDE0LjMtMzIgMzItMzJsNTYgMCA0OCAwIDU2IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsMCAzMDRjMCA0NC4yLTM1LjggODAtODAgODBzLTgwLTM1LjgtODAtODBsMC0zMDRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyek00MjQgOTZsLTQ4IDAgMCAxNjAgNDggMCAwLTE2MHpcIl1cbn07XG5jb25zdCBmYVBsdWdDaXJjbGVQbHVzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BsdWctY2lyY2xlLXBsdXMnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImU1NWZcIiwgXCJNOTYgMEM3OC4zIDAgNjQgMTQuMyA2NCAzMmwwIDk2IDY0IDAgMC05NmMwLTE3LjctMTQuMy0zMi0zMi0zMnpNMjg4IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMybDAgOTYgNjQgMCAwLTk2YzAtMTcuNy0xNC4zLTMyLTMyLTMyek0zMiAxNjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsMCAzMmMwIDc3LjQgNTUgMTQyIDEyOCAxNTYuOGwwIDY3LjJjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTY3LjJjMTIuMy0yLjUgMjQuMS02LjQgMzUuMS0xMS41Yy0yLjEtMTAuOC0zLjEtMjEuOS0zLjEtMzMuM2MwLTgwLjMgNTMuOC0xNDggMTI3LjMtMTY5LjJjLjUtMi4yIC43LTQuNSAuNy02LjhjMC0xNy43LTE0LjMtMzItMzItMzJMMzIgMTYwek00MzIgNTEyYTE0NCAxNDQgMCAxIDAgMC0yODggMTQ0IDE0NCAwIDEgMCAwIDI4OHptMTYtMjA4bDAgNDggNDggMGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNmwtNDggMCAwIDQ4YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2bDAtNDgtNDggMGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmw0OCAwIDAtNDhjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnpcIl1cbn07XG5jb25zdCBmYVBsYWNlT2ZXb3JzaGlwID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BsYWNlLW9mLXdvcnNoaXAnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY2N2ZcIiwgXCJNMjI0IDEwOS4zbDAgMTA4LjNMMTgzLjMgMjQyYy0xNC41IDguNy0yMy4zIDI0LjMtMjMuMyA0MS4yTDE2MCA1MTJsOTYgMCAwLTk2YzAtMzUuMyAyOC43LTY0IDY0LTY0czY0IDI4LjcgNjQgNjRsMCA5NiA5NiAwIDAtMjI4LjhjMC0xNi45LTguOC0zMi41LTIzLjMtNDEuMkw0MTYgMjE3LjZsMC0xMDguM2MwLTguNS0zLjQtMTYuNi05LjQtMjIuNkwzMzEuMyAxMS4zYy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMEwyMzMuNCA4Ni42Yy02IDYtOS40IDE0LjEtOS40IDIyLjZ6TTI0LjkgMzMwLjNDOS41IDMzOC44IDAgMzU0LjkgMCAzNzIuNEwwIDQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGw4MCAwIDAtMjM4LjRMMjQuOSAzMzAuM3pNNTkyIDUxMmMyNi41IDAgNDgtMjEuNSA0OC00OGwwLTkxLjZjMC0xNy41LTkuNS0zMy42LTI0LjktNDIuMUw1MTIgMjczLjYgNTEyIDUxMmw4MCAwelwiXVxufTtcbmNvbnN0IGZhR3JpcFZlcnRpY2FsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2dyaXAtdmVydGljYWwnLFxuICBpY29uOiBbMzIwLCA1MTIsIFtdLCBcImY1OGVcIiwgXCJNNDAgMzUybDQ4IDBjMjIuMSAwIDQwIDE3LjkgNDAgNDBsMCA0OGMwIDIyLjEtMTcuOSA0MC00MCA0MGwtNDggMGMtMjIuMSAwLTQwLTE3LjktNDAtNDBsMC00OGMwLTIyLjEgMTcuOS00MCA0MC00MHptMTkyIDBsNDggMGMyMi4xIDAgNDAgMTcuOSA0MCA0MGwwIDQ4YzAgMjIuMS0xNy45IDQwLTQwIDQwbC00OCAwYy0yMi4xIDAtNDAtMTcuOS00MC00MGwwLTQ4YzAtMjIuMSAxNy45LTQwIDQwLTQwek00MCAzMjBjLTIyLjEgMC00MC0xNy45LTQwLTQwbDAtNDhjMC0yMi4xIDE3LjktNDAgNDAtNDBsNDggMGMyMi4xIDAgNDAgMTcuOSA0MCA0MGwwIDQ4YzAgMjIuMS0xNy45IDQwLTQwIDQwbC00OCAwek0yMzIgMTkybDQ4IDBjMjIuMSAwIDQwIDE3LjkgNDAgNDBsMCA0OGMwIDIyLjEtMTcuOSA0MC00MCA0MGwtNDggMGMtMjIuMSAwLTQwLTE3LjktNDAtNDBsMC00OGMwLTIyLjEgMTcuOS00MCA0MC00MHpNNDAgMTYwYy0yMi4xIDAtNDAtMTcuOS00MC00MEwwIDcyQzAgNDkuOSAxNy45IDMyIDQwIDMybDQ4IDBjMjIuMSAwIDQwIDE3LjkgNDAgNDBsMCA0OGMwIDIyLjEtMTcuOSA0MC00MCA0MGwtNDggMHpNMjMyIDMybDQ4IDBjMjIuMSAwIDQwIDE3LjkgNDAgNDBsMCA0OGMwIDIyLjEtMTcuOSA0MC00MCA0MGwtNDggMGMtMjIuMSAwLTQwLTE3LjktNDAtNDBsMC00OGMwLTIyLjEgMTcuOS00MCA0MC00MHpcIl1cbn07XG5jb25zdCBmYUFycm93VHVyblVwID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Fycm93LXR1cm4tdXAnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtcImxldmVsLXVwXCJdLCBcImYxNDhcIiwgXCJNMzIgNDQ4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDk2IDBjNTMgMCA5Ni00MyA5Ni05NmwwLTMwNi43IDczLjQgNzMuNGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zbC0xMjgtMTI4Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMGwtMTI4IDEyOGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMEwxNjAgMTA5LjMgMTYwIDQxNmMwIDE3LjctMTQuMyAzMi0zMiAzMmwtOTYgMHpcIl1cbn07XG5jb25zdCBmYUxldmVsVXAgPSBmYUFycm93VHVyblVwO1xuY29uc3QgZmFVID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3UnLFxuICBpY29uOiBbMzg0LCA1MTIsIFsxMTddLCBcIjU1XCIsIFwiTTMyIDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgMjI0YzAgNzAuNyA1Ny4zIDEyOCAxMjggMTI4czEyOC01Ny4zIDEyOC0xMjhsMC0yMjRjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMmwwIDIyNGMwIDEwNi04NiAxOTItMTkyIDE5MlMwIDM5NCAwIDI4OEwwIDY0QzAgNDYuMyAxNC4zIDMyIDMyIDMyelwiXVxufTtcbmNvbnN0IGZhU3F1YXJlUm9vdFZhcmlhYmxlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NxdWFyZS1yb290LXZhcmlhYmxlJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXCJzcXVhcmUtcm9vdC1hbHRcIl0sIFwiZjY5OFwiLCBcIk0yODIuNiA3OC4xYzgtMjcuMyAzMy00Ni4xIDYxLjQtNDYuMWwyMDAgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkwzNDQgOTYgMjM4LjcgNDU3Yy0zLjYgMTIuMy0xNC4xIDIxLjItMjYuOCAyMi44cy0yNS4xLTQuNi0zMS41LTE1LjZMNzcuNiAyODggMzIgMjg4Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDQ1LjYgMGMyMi44IDAgNDMuOCAxMi4xIDU1LjMgMzEuOGw2NS4yIDExMS44TDI4Mi42IDc4LjF6TTM5My40IDIzMy40YzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwTDQ4MCAyNzQuN2w0MS40LTQxLjRjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDBzMTIuNSAzMi44IDAgNDUuM0w1MjUuMyAzMjBsNDEuNCA0MS40YzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zcy0zMi44IDEyLjUtNDUuMyAwTDQ4MCAzNjUuM2wtNDEuNCA0MS40Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMHMtMTIuNS0zMi44IDAtNDUuM0w0MzQuNyAzMjBsLTQxLjQtNDEuNGMtMTIuNS0xMi41LTEyLjUtMzIuOCAwLTQ1LjN6XCJdXG59O1xuY29uc3QgZmFTcXVhcmVSb290QWx0ID0gZmFTcXVhcmVSb290VmFyaWFibGU7XG5jb25zdCBmYUNsb2NrID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Nsb2NrJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI4MzM5LCBcImNsb2NrLWZvdXJcIl0sIFwiZjAxN1wiLCBcIk0yNTYgMGEyNTYgMjU2IDAgMSAxIDAgNTEyQTI1NiAyNTYgMCAxIDEgMjU2IDB6TTIzMiAxMjBsMCAxMzZjMCA4IDQgMTUuNSAxMC43IDIwbDk2IDY0YzExIDcuNCAyNS45IDQuNCAzMy4zLTYuN3M0LjQtMjUuOS02LjctMzMuM0wyODAgMjQzLjIgMjgwIDEyMGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNHpcIl1cbn07XG5jb25zdCBmYUNsb2NrRm91ciA9IGZhQ2xvY2s7XG5jb25zdCBmYUJhY2t3YXJkU3RlcCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdiYWNrd2FyZC1zdGVwJyxcbiAgaWNvbjogWzMyMCwgNTEyLCBbXCJzdGVwLWJhY2t3YXJkXCJdLCBcImYwNDhcIiwgXCJNMjY3LjUgNDQwLjZjOS41IDcuOSAyMi44IDkuNyAzNC4xIDQuNHMxOC40LTE2LjYgMTguNC0yOWwwLTMyMGMwLTEyLjQtNy4yLTIzLjctMTguNC0yOXMtMjQuNS0zLjYtMzQuMSA0LjRsLTE5MiAxNjBMNjQgMjQxIDY0IDk2YzAtMTcuNy0xNC4zLTMyLTMyLTMyUzAgNzguMyAwIDk2TDAgNDE2YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0xNDUgMTEuNSA5LjYgMTkyIDE2MHpcIl1cbn07XG5jb25zdCBmYVN0ZXBCYWNrd2FyZCA9IGZhQmFja3dhcmRTdGVwO1xuY29uc3QgZmFQYWxsZXQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGFsbGV0JyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNDgyXCIsIFwiTTMyIDMyMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwzMiAwIDAgNjQtMzIgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmw2NCAwIDIyNCAwIDIyNCAwIDY0IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTMyIDAgMC02NCAzMiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC02NCAwLTIyNCAwTDk2IDMyMGwtNjQgMHptOTYgNjRsMTYwIDAgMCA2NC0xNjAgMCAwLTY0em0yMjQgMGwxNjAgMCAwIDY0LTE2MCAwIDAtNjR6XCJdXG59O1xuY29uc3QgZmFGYXVjZXQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmF1Y2V0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJlMDA1XCIsIFwiTTE5MiA5NmwwIDEyTDk2IDk2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDk2LTEyIDMxLTMuOSAxLS4xIDEgLjEgMzEgMy45IDk2IDEyYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC05NiAxMiAwLTEyYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyek0zMiAyNTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMybDAgNjRjMCAxNy43IDE0LjMgMzIgMzIgMzJsMTAwLjEgMGMyMC4yIDI5IDUzLjkgNDggOTEuOSA0OHM3MS43LTE5IDkxLjktNDhsMzYuMSAwYzE3LjcgMCAzMiAxNC4zIDMyIDMyczE0LjMgMzIgMzIgMzJsNjQgMGMxNy43IDAgMzItMTQuMyAzMi0zMmMwLTg4LjQtNzEuNi0xNjAtMTYwLTE2MGwtMzIgMC0yMi42LTIyLjZjLTYtNi0xNC4xLTkuNC0yMi42LTkuNEwyNTYgMjI0bDAtNDMuOC0zMi00LTMyIDQgMCA0My44LTE4LjcgMGMtOC41IDAtMTYuNiAzLjQtMjIuNiA5LjRMMTI4IDI1NmwtOTYgMHpcIl1cbn07XG5jb25zdCBmYUJhc2ViYWxsQmF0QmFsbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdiYXNlYmFsbC1iYXQtYmFsbCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjQzMlwiLCBcIk00MjQgMGMtMTIuNCAwLTI0LjIgNC45LTMzIDEzLjdMMjMzLjUgMTcxLjJjLTEwLjUgMTAuNS0xOS44IDIyLjEtMjcuNyAzNC42TDEzMi43IDMyMS42Yy03LjMgMTEuNS0xNS44IDIyLjItMjUuNSAzMS45TDY5LjkgMzkwLjdsNTEuMyA1MS4zIDM3LjMtMzcuM2M5LjYtOS42IDIwLjMtMTguMiAzMS45LTI1LjVsMTE1LjgtNzMuMWMxMi41LTcuOSAyNC4xLTE3LjIgMzQuNi0yNy43TDQ5OC4zIDEyMWM4LjctOC43IDEzLjctMjAuNiAxMy43LTMzcy00LjktMjQuMi0xMy43LTMzTDQ1NyAxMy43QzQ0OC4yIDQuOSA0MzYuNCAwIDQyNCAwem04OCA0MzJhODAgODAgMCAxIDAgLTE2MCAwIDgwIDgwIDAgMSAwIDE2MCAwek0xNSAzOTljLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45bDY0IDY0YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwczkuNC0yNC42IDAtMzMuOUw0OSAzOTljLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwelwiXVxufTtcbmNvbnN0IGZhUyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzJyxcbiAgaWNvbjogWzMyMCwgNTEyLCBbMTE1XSwgXCI1M1wiLCBcIk05OS4xIDEwNS40Qzc5IDExNCA2OC4yIDEyNy4yIDY1LjIgMTQ0LjhjLTIuNCAxNC4xLS43IDIzLjIgMiAyOS40YzIuOCA2LjMgNy45IDEyLjQgMTYuNyAxOC42YzE5LjIgMTMuNCA0OC4zIDIyLjEgODQuOSAzMi41YzEgLjMgMS45IC42IDIuOSAuOGMzMi43IDkuMyA3MiAyMC42IDEwMC45IDQwLjdjMTUuNyAxMC45IDI5LjkgMjUuNSAzOC42IDQ1LjFjOC44IDE5LjggMTAuOCA0MiA2LjYgNjYuM2MtNy4zIDQyLjUtMzUuMyA3MS43LTcxLjggODcuM2MtMzUuNCAxNS4yLTc5LjEgMTcuOS0xMjMuNyAxMC45bC0uMiAwczAgMCAwIDBjLTI0LTMuOS02Mi43LTE3LjEtODcuNi0yNS42Yy00LjgtMS43LTkuMi0zLjEtMTIuOC00LjNDNS4xIDQ0MC44LTMuOSA0MjIuNyAxLjYgNDA1LjlzMjMuNy0yNS44IDQwLjUtMjAuM2M0LjkgMS42IDEwLjIgMy40IDE1LjkgNS40YzI1LjQgOC42IDU2LjQgMTkuMiA3NC40IDIyLjFjMzYuOCA1LjcgNjcuNSAyLjUgODguNS02LjVjMjAuMS04LjYgMzAuOC0yMS44IDMzLjktMzkuNGMyLjQtMTQuMSAuNy0yMy4yLTItMjkuNGMtMi44LTYuMy03LjktMTIuNC0xNi43LTE4LjZjLTE5LjItMTMuNC00OC4zLTIyLjEtODQuOS0zMi41Yy0xLS4zLTEuOS0uNi0yLjktLjhjLTMyLjctOS4zLTcyLTIwLjYtMTAwLjktNDAuN2MtMTUuNy0xMC45LTI5LjktMjUuNS0zOC42LTQ1LjFjLTguOC0xOS44LTEwLjgtNDItNi42LTY2LjNsMzEuNSA1LjVMMi4xIDEzMy45QzkuNCA5MS40IDM3LjQgNjIuMiA3My45IDQ2LjZjMzUuNC0xNS4yIDc5LjEtMTcuOSAxMjMuNy0xMC45YzEzIDIgNTIuNCA5LjYgNjYuNiAxMy40YzE3LjEgNC41IDI3LjIgMjIuMSAyMi43IDM5LjJzLTIyLjEgMjcuMi0zOS4yIDIyLjdjLTExLjItMy00OC4xLTEwLjItNjAuMS0xMmw0LjktMzEuNS00LjkgMzEuNWMtMzYuOS01LjgtNjcuNS0yLjUtODguNiA2LjV6XCJdXG59O1xuY29uc3QgZmFUaW1lbGluZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0aW1lbGluZScsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTI5Y1wiLCBcIk0xMjggNzJhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4em0zMiA5Ny4zYzI4LjMtMTIuMyA0OC00MC41IDQ4LTczLjNjMC00NC4yLTM1LjgtODAtODAtODBTNDggNTEuOCA0OCA5NmMwIDMyLjggMTkuNyA2MSA0OCA3My4zTDk2IDIyNGwtNjQgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwyNTYgMCAwIDU0LjdjLTI4LjMgMTIuMy00OCA0MC41LTQ4IDczLjNjMCA0NC4yIDM1LjggODAgODAgODBzODAtMzUuOCA4MC04MGMwLTMyLjgtMTkuNy02MS00OC03My4zbDAtNTQuNyAyNTYgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtNjQgMCAwLTU0LjdjMjguMy0xMi4zIDQ4LTQwLjUgNDgtNzMuM2MwLTQ0LjItMzUuOC04MC04MC04MHMtODAgMzUuOC04MCA4MGMwIDMyLjggMTkuNyA2MSA0OCA3My4zbDAgNTQuNy0zMjAgMCAwLTU0Ljd6TTQ4OCA5NmEyNCAyNCAwIDEgMSA0OCAwIDI0IDI0IDAgMSAxIC00OCAwek0zMjAgMzkyYTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHpcIl1cbn07XG5jb25zdCBmYUtleWJvYXJkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2tleWJvYXJkJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbOTAwMF0sIFwiZjExY1wiLCBcIk02NCA2NEMyOC43IDY0IDAgOTIuNyAwIDEyOEwwIDM4NGMwIDM1LjMgMjguNyA2NCA2NCA2NGw0NDggMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTI1NmMwLTM1LjMtMjguNy02NC02NC02NEw2NCA2NHptMTYgNjRsMzIgMGM4LjggMCAxNiA3LjIgMTYgMTZsMCAzMmMwIDguOC03LjIgMTYtMTYgMTZsLTMyIDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTMyYzAtOC44IDcuMi0xNiAxNi0xNnpNNjQgMjQwYzAtOC44IDcuMi0xNiAxNi0xNmwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDMyYzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzJ6bTE2IDgwbDMyIDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgMzJjMCA4LjgtNy4yIDE2LTE2IDE2bC0zMiAwYy04LjggMC0xNi03LjItMTYtMTZsMC0zMmMwLTguOCA3LjItMTYgMTYtMTZ6bTgwLTE3NmMwLTguOCA3LjItMTYgMTYtMTZsMzIgMGM4LjggMCAxNiA3LjIgMTYgMTZsMCAzMmMwIDguOC03LjIgMTYtMTYgMTZsLTMyIDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTMyem0xNiA4MGwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDMyYzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzJjMC04LjggNy4yLTE2IDE2LTE2ek0xNjAgMzM2YzAtOC44IDcuMi0xNiAxNi0xNmwyMjQgMGM4LjggMCAxNiA3LjIgMTYgMTZsMCAzMmMwIDguOC03LjIgMTYtMTYgMTZsLTIyNCAwYy04LjggMC0xNi03LjItMTYtMTZsMC0zMnpNMjcyIDEyOGwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDMyYzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzJjMC04LjggNy4yLTE2IDE2LTE2ek0yNTYgMjQwYzAtOC44IDcuMi0xNiAxNi0xNmwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDMyYzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzJ6TTM2OCAxMjhsMzIgMGM4LjggMCAxNiA3LjIgMTYgMTZsMCAzMmMwIDguOC03LjIgMTYtMTYgMTZsLTMyIDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTMyYzAtOC44IDcuMi0xNiAxNi0xNnpNMzUyIDI0MGMwLTguOCA3LjItMTYgMTYtMTZsMzIgMGM4LjggMCAxNiA3LjIgMTYgMTZsMCAzMmMwIDguOC03LjIgMTYtMTYgMTZsLTMyIDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTMyek00NjQgMTI4bDMyIDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgMzJjMCA4LjgtNy4yIDE2LTE2IDE2bC0zMiAwYy04LjggMC0xNi03LjItMTYtMTZsMC0zMmMwLTguOCA3LjItMTYgMTYtMTZ6TTQ0OCAyNDBjMC04LjggNy4yLTE2IDE2LTE2bDMyIDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgMzJjMCA4LjgtNy4yIDE2LTE2IDE2bC0zMiAwYy04LjggMC0xNi03LjItMTYtMTZsMC0zMnptMTYgODBsMzIgMGM4LjggMCAxNiA3LjIgMTYgMTZsMCAzMmMwIDguOC03LjIgMTYtMTYgMTZsLTMyIDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTMyYzAtOC44IDcuMi0xNiAxNi0xNnpcIl1cbn07XG5jb25zdCBmYUNhcmV0RG93biA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjYXJldC1kb3duJyxcbiAgaWNvbjogWzMyMCwgNTEyLCBbXSwgXCJmMGQ3XCIsIFwiTTEzNy40IDM3NC42YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDEyOC0xMjhjOS4yLTkuMiAxMS45LTIyLjkgNi45LTM0LjlzLTE2LjYtMTkuOC0yOS42LTE5LjhMMzIgMTkyYy0xMi45IDAtMjQuNiA3LjgtMjkuNiAxOS44cy0yLjIgMjUuNyA2LjkgMzQuOWwxMjggMTI4elwiXVxufTtcbmNvbnN0IGZhSG91c2VDaGltbmV5TWVkaWNhbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdob3VzZS1jaGltbmV5LW1lZGljYWwnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtcImNsaW5pYy1tZWRpY2FsXCJdLCBcImY3ZjJcIiwgXCJNNTc1LjggMjU1LjVjMCAxOC0xNSAzMi4xLTMyIDMyLjFsLTMyIDAgLjcgMTYwLjJjLjIgMzUuNS0yOC41IDY0LjMtNjQgNjQuM2wtMzIwLjQgMGMtMzUuMyAwLTY0LTI4LjctNjQtNjRsMC0xNjAuNC0zMiAwYy0xOCAwLTMyLTE0LTMyLTMyLjFjMC05IDMtMTcgMTAtMjRMMjY2LjQgOGM3LTcgMTUtOCAyMi04czE1IDIgMjEgN0w0MTYgMTAwLjcgNDE2IDY0YzAtMTcuNyAxNC4zLTMyIDMyLTMybDMyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCAxMjEgNTIuOCA0Ni40YzggNyAxMiAxNSAxMSAyNHpNMjcyIDE5MmMtOC44IDAtMTYgNy4yLTE2IDE2bDAgNDgtNDggMGMtOC44IDAtMTYgNy4yLTE2IDE2bDAgMzJjMCA4LjggNy4yIDE2IDE2IDE2bDQ4IDAgMCA0OGMwIDguOCA3LjIgMTYgMTYgMTZsMzIgMGM4LjggMCAxNi03LjIgMTYtMTZsMC00OCA0OCAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTMyYzAtOC44LTcuMi0xNi0xNi0xNmwtNDggMCAwLTQ4YzAtOC44LTcuMi0xNi0xNi0xNmwtMzIgMHpcIl1cbn07XG5jb25zdCBmYUNsaW5pY01lZGljYWwgPSBmYUhvdXNlQ2hpbW5leU1lZGljYWw7XG5jb25zdCBmYVRlbXBlcmF0dXJlVGhyZWVRdWFydGVycyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0ZW1wZXJhdHVyZS10aHJlZS1xdWFydGVycycsXG4gIGljb246IFszMjAsIDUxMiwgW1widGVtcGVyYXR1cmUtM1wiLCBcInRoZXJtb21ldGVyLTNcIiwgXCJ0aGVybW9tZXRlci10aHJlZS1xdWFydGVyc1wiXSwgXCJmMmM4XCIsIFwiTTE2MCA2NGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhsMCAxNjQuNWMwIDE3LjMtNy4xIDMxLjktMTUuMyA0Mi41Qzg2LjIgMzMyLjYgODAgMzQ5LjUgODAgMzY4YzAgNDQuMiAzNS44IDgwIDgwIDgwczgwLTM1LjggODAtODBjMC0xOC41LTYuMi0zNS40LTE2LjctNDguOWMtOC4yLTEwLjYtMTUuMy0yNS4yLTE1LjMtNDIuNUwyMDggMTEyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek00OCAxMTJDNDggNTAuMiA5OC4xIDAgMTYwIDBzMTEyIDUwLjEgMTEyIDExMmwwIDE2NC40YzAgLjEgLjEgLjMgLjIgLjZjLjIgLjYgLjggMS42IDEuNyAyLjhjMTguOSAyNC40IDMwLjEgNTUgMzAuMSA4OC4xYzAgNzkuNS02NC41IDE0NC0xNDQgMTQ0UzE2IDQ0Ny41IDE2IDM2OGMwLTMzLjIgMTEuMi02My44IDMwLjEtODguMWMuOS0xLjIgMS41LTIuMiAxLjctMi44Yy4xLS4zIC4yLS41IC4yLS42TDQ4IDExMnpNMjA4IDM2OGMwIDI2LjUtMjEuNSA0OC00OCA0OHMtNDgtMjEuNS00OC00OGMwLTIwLjkgMTMuNC0zOC43IDMyLTQ1LjNMMTQ0IDE0NGMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2bDAgMTc4LjdjMTguNiA2LjYgMzIgMjQuNCAzMiA0NS4zelwiXVxufTtcbmNvbnN0IGZhVGVtcGVyYXR1cmUzID0gZmFUZW1wZXJhdHVyZVRocmVlUXVhcnRlcnM7XG5jb25zdCBmYVRoZXJtb21ldGVyMyA9IGZhVGVtcGVyYXR1cmVUaHJlZVF1YXJ0ZXJzO1xuY29uc3QgZmFUaGVybW9tZXRlclRocmVlUXVhcnRlcnMgPSBmYVRlbXBlcmF0dXJlVGhyZWVRdWFydGVycztcbmNvbnN0IGZhTW9iaWxlU2NyZWVuID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21vYmlsZS1zY3JlZW4nLFxuICBpY29uOiBbMzg0LCA1MTIsIFtcIm1vYmlsZS1hbmRyb2lkLWFsdFwiXSwgXCJmM2NmXCIsIFwiTTE2IDY0QzE2IDI4LjcgNDQuNyAwIDgwIDBMMzA0IDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCAzODRjMCAzNS4zLTI4LjcgNjQtNjQgNjRMODAgNTEyYy0zNS4zIDAtNjQtMjguNy02NC02NEwxNiA2NHpNMTQ0IDQ0OGMwIDguOCA3LjIgMTYgMTYgMTZsNjQgMGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNmwtNjQgMGMtOC44IDAtMTYgNy4yLTE2IDE2ek0zMDQgNjRMODAgNjRsMCAzMjAgMjI0IDAgMC0zMjB6XCJdXG59O1xuY29uc3QgZmFNb2JpbGVBbmRyb2lkQWx0ID0gZmFNb2JpbGVTY3JlZW47XG5jb25zdCBmYVBsYW5lVXAgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGxhbmUtdXAnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImUyMmRcIiwgXCJNMTkyIDkzLjdDMTkyIDU5LjUgMjIxIDAgMjU2IDBjMzYgMCA2NCA1OS41IDY0IDkzLjdsMCA2Ni4zTDQ5Ny44IDI3OC41YzguOSA1LjkgMTQuMiAxNS45IDE0LjIgMjYuNmwwIDU2LjdjMCAxMC45LTEwLjcgMTguNi0yMS4xIDE1LjJMMzIwIDMyMGwwIDgwIDU3LjYgNDMuMmM0IDMgNi40IDcuOCA2LjQgMTIuOGwwIDQyYzAgNy44LTYuMyAxNC0xNCAxNGMtMS4zIDAtMi42LS4yLTMuOS0uNUwyNTYgNDgwIDE0NS45IDUxMS41Yy0xLjMgLjQtMi42IC41LTMuOSAuNWMtNy44IDAtMTQtNi4zLTE0LTE0bDAtNDJjMC01IDIuNC05LjggNi40LTEyLjhMMTkyIDQwMGwwLTgwTDIxLjEgMzc3QzEwLjcgMzgwLjQgMCAzNzIuNyAwIDM2MS44bDAtNTYuN2MwLTEwLjcgNS4zLTIwLjcgMTQuMi0yNi42TDE5MiAxNjBsMC02Ni4zelwiXVxufTtcbmNvbnN0IGZhUGlnZ3lCYW5rID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BpZ2d5LWJhbmsnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImY0ZDNcIiwgXCJNNDAwIDk2bDAgLjdjLTUuMy0uNC0xMC42LS43LTE2LS43TDI1NiA5NmMtMTYuNSAwLTMyLjUgMi4xLTQ3LjggNmMtLjEtMi0uMi00LS4yLTZjMC01MyA0My05NiA5Ni05NnM5NiA0MyA5NiA5NnptLTE2IDMyYzMuNSAwIDcgLjEgMTAuNCAuM2M0LjIgLjMgOC40IC43IDEyLjYgMS4zQzQyNC42IDEwOS4xIDQ1MC44IDk2IDQ4MCA5NmwxMS41IDBjMTAuNCAwIDE4IDkuOCAxNS41IDE5LjlsLTEzLjggNTUuMmMxNS44IDE0LjggMjguNyAzMi44IDM3LjUgNTIuOWwxMy4zIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCA5NmMwIDE3LjctMTQuMyAzMi0zMiAzMmwtMzIgMGMtOS4xIDEyLjEtMTkuOSAyMi45LTMyIDMybDAgNjRjMCAxNy43LTE0LjMgMzItMzIgMzJsLTMyIDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtMzItMTI4IDAgMCAzMmMwIDE3LjctMTQuMyAzMi0zMiAzMmwtMzIgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC02NGMtMzQuOS0yNi4yLTU4LjctNjYuMy02My4yLTExMkw2OCAzMDRjLTM3LjYgMC02OC0zMC40LTY4LTY4czMwLjQtNjggNjgtNjhsNCAwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0bC00IDBjLTExIDAtMjAgOS0yMCAyMHM5IDIwIDIwIDIwbDMxLjIgMGMxMi4xLTU5LjggNTcuNy0xMDcuNSAxMTYuMy0xMjIuOGMxMi45LTMuNCAyNi41LTUuMiA0MC41LTUuMmwxMjggMHptNjQgMTM2YTI0IDI0IDAgMSAwIC00OCAwIDI0IDI0IDAgMSAwIDQ4IDB6XCJdXG59O1xuY29uc3QgZmFCYXR0ZXJ5SGFsZiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdiYXR0ZXJ5LWhhbGYnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtcImJhdHRlcnktM1wiXSwgXCJmMjQyXCIsIFwiTTQ2NCAxNjBjOC44IDAgMTYgNy4yIDE2IDE2bDAgMTYwYzAgOC44LTcuMiAxNi0xNiAxNkw4MCAzNTJjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTE2MGMwLTguOCA3LjItMTYgMTYtMTZsMzg0IDB6TTgwIDk2QzM1LjggOTYgMCAxMzEuOCAwIDE3NkwwIDMzNmMwIDQ0LjIgMzUuOCA4MCA4MCA4MGwzODQgMGM0NC4yIDAgODAtMzUuOCA4MC04MGwwLTE2YzE3LjcgMCAzMi0xNC4zIDMyLTMybDAtNjRjMC0xNy43LTE0LjMtMzItMzItMzJsMC0xNmMwLTQ0LjItMzUuOC04MC04MC04MEw4MCA5NnptMjA4IDk2TDk2IDE5MmwwIDEyOCAxOTIgMCAwLTEyOHpcIl1cbn07XG5jb25zdCBmYUJhdHRlcnkzID0gZmFCYXR0ZXJ5SGFsZjtcbmNvbnN0IGZhTW91bnRhaW5DaXR5ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21vdW50YWluLWNpdHknLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU1MmVcIiwgXCJNMzM2IDBjLTI2LjUgMC00OCAyMS41LTQ4IDQ4bDAgOTIuMSA3MS40IDExOC40YzIuNS0xLjYgNS40LTIuNSA4LjYtMi41bDMyIDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgMzJjMCA4LjgtNy4yIDE2LTE2IDE2bC0zLjUgMCA3My44IDEyMi40YzEyLjQgMjAuNiAxMi45IDQ2LjMgMS4yIDY3LjNjLS40IC44LS45IDEuNi0xLjQgMi4zTDU5MiA1MTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhsMC0yMjRjMC0yNi41LTIxLjUtNDgtNDgtNDhsLTI0IDAgMC03MmMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNGwwIDcyLTQwIDAgMC0xNDRjMC0yNi41LTIxLjUtNDgtNDgtNDhMMzM2IDB6bTMyIDY0bDMyIDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgMzJjMCA4LjgtNy4yIDE2LTE2IDE2bC0zMiAwYy04LjggMC0xNi03LjItMTYtMTZsMC0zMmMwLTguOCA3LjItMTYgMTYtMTZ6TTM1MiAxNzZjMC04LjggNy4yLTE2IDE2LTE2bDMyIDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgMzJjMCA4LjgtNy4yIDE2LTE2IDE2bC0zMiAwYy04LjggMC0xNi03LjItMTYtMTZsMC0zMnptMTYwIDk2YzAtOC44IDcuMi0xNiAxNi0xNmwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDMyYzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzJ6bTE2IDgwbDMyIDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgMzJjMCA4LjgtNy4yIDE2LTE2IDE2bC0zMiAwYy04LjggMC0xNi03LjItMTYtMTZsMC0zMmMwLTguOCA3LjItMTYgMTYtMTZ6TTIyNCAxODguOUwyODMuOCAyODggMjIzIDI4OGwtNDggNjQtMjQuNi00MS4yTDIyNCAxODguOXptMjkuNC00NC4yQzI0Ny4xIDEzNC4zIDIzNiAxMjggMjI0IDEyOHMtMjMuMSA2LjMtMjkuNCAxNi43TDUuMSA0NTguOWMtNi41IDEwLjgtNi43IDI0LjMtLjcgMzUuM1MyMiA1MTIgMzQuNSA1MTJsMzc5LjEgMGMxMi41IDAgMjQtNi44IDMwLjEtMTcuOHM1LjgtMjQuNS0uNy0zNS4zTDI1My40IDE0NC43elwiXVxufTtcbmNvbnN0IGZhQ29pbnMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY29pbnMnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY1MWVcIiwgXCJNNTEyIDgwYzAgMTgtMTQuMyAzNC42LTM4LjQgNDhjLTI5LjEgMTYuMS03Mi41IDI3LjUtMTIyLjMgMzAuOWMtMy43LTEuOC03LjQtMy41LTExLjMtNUMzMDAuNiAxMzcuNCAyNDguMiAxMjggMTkyIDEyOGMtOC4zIDAtMTYuNCAuMi0yNC41IC42bC0xLjEtLjZDMTQyLjMgMTE0LjYgMTI4IDk4IDEyOCA4MGMwLTQ0LjIgODYtODAgMTkyLTgwUzUxMiAzNS44IDUxMiA4MHpNMTYwLjcgMTYxLjFjMTAuMi0uNyAyMC43LTEuMSAzMS4zLTEuMWM2Mi4yIDAgMTE3LjQgMTIuMyAxNTIuNSAzMS40QzM2OS4zIDIwNC45IDM4NCAyMjEuNyAzODQgMjQwYzAgNC0uNyA3LjktMi4xIDExLjdjLTQuNiAxMy4yLTE3IDI1LjMtMzUgMzUuNWMwIDAgMCAwIDAgMGMtLjEgLjEtLjMgLjEtLjQgLjJjMCAwIDAgMCAwIDBzMCAwIDAgMGMtLjMgLjItLjYgLjMtLjkgLjVjLTM1IDE5LjQtOTAuOCAzMi0xNTMuNiAzMmMtNTkuNiAwLTExMi45LTExLjMtMTQ4LjItMjkuMWMtMS45LS45LTMuNy0xLjktNS41LTIuOUMxNC4zIDI3NC42IDAgMjU4IDAgMjQwYzAtMzQuOCA1My40LTY0LjUgMTI4LTc1LjRjMTAuNS0xLjUgMjEuNC0yLjcgMzIuNy0zLjV6TTQxNiAyNDBjMC0yMS45LTEwLjYtMzkuOS0yNC4xLTUzLjRjMjguMy00LjQgNTQuMi0xMS40IDc2LjItMjAuNWMxNi4zLTYuOCAzMS41LTE1LjIgNDMuOS0yNS41bDAgMzUuNGMwIDE5LjMtMTYuNSAzNy4xLTQzLjggNTAuOWMtMTQuNiA3LjQtMzIuNCAxMy43LTUyLjQgMTguNWMuMS0xLjggLjItMy41IC4yLTUuM3ptLTMyIDk2YzAgMTgtMTQuMyAzNC42LTM4LjQgNDhjLTEuOCAxLTMuNiAxLjktNS41IDIuOUMzMDQuOSA0MDQuNyAyNTEuNiA0MTYgMTkyIDQxNmMtNjIuOCAwLTExOC42LTEyLjYtMTUzLjYtMzJDMTQuMyAzNzAuNiAwIDM1NCAwIDMzNmwwLTM1LjRjMTIuNSAxMC4zIDI3LjYgMTguNyA0My45IDI1LjVDODMuNCAzNDIuNiAxMzUuOCAzNTIgMTkyIDM1MnMxMDguNi05LjQgMTQ4LjEtMjUuOWM3LjgtMy4yIDE1LjMtNi45IDIyLjQtMTAuOWM2LjEtMy40IDExLjgtNy4yIDE3LjItMTEuMmMxLjUtMS4xIDIuOS0yLjMgNC4zLTMuNGwwIDMuNCAwIDUuNyAwIDI2LjN6bTMyIDBsMC0zMiAwLTI1LjljMTktNC4yIDM2LjUtOS41IDUyLjEtMTZjMTYuMy02LjggMzEuNS0xNS4yIDQzLjktMjUuNWwwIDM1LjRjMCAxMC41LTUgMjEtMTQuOSAzMC45Yy0xNi4zIDE2LjMtNDUgMjkuNy04MS4zIDM4LjRjLjEtMS43IC4yLTMuNSAuMi01LjN6TTE5MiA0NDhjNTYuMiAwIDEwOC42LTkuNCAxNDguMS0yNS45YzE2LjMtNi44IDMxLjUtMTUuMiA0My45LTI1LjVsMCAzNS40YzAgNDQuMi04NiA4MC0xOTIgODBTMCA0NzYuMiAwIDQzMmwwLTM1LjRjMTIuNSAxMC4zIDI3LjYgMTguNyA0My45IDI1LjVDODMuNCA0MzguNiAxMzUuOCA0NDggMTkyIDQ0OHpcIl1cbn07XG5jb25zdCBmYUtoYW5kYSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdraGFuZGEnLFxuICBpY29uOiBbNTEyLCA1MTIsIFs5NzcyXSwgXCJmNjZkXCIsIFwiTTI0NS44IDMuN2M1LjktNC45IDE0LjYtNC45IDIwLjUgMGw0OCA0MGM1LjkgNC45IDcuNSAxMy4yIDMuOCAxOS45YzAgMCAwIDAgMCAwczAgMCAwIDBzMCAwIDAgMHMwIDAgMCAwbC0uMSAuMS0uMyAuNmMtLjMgLjUtLjcgMS4zLTEuMiAyLjNjLTEgMi0yLjYgNS00LjQgOC42Yy0uNSAuOS0uOSAxLjktMS40IDIuOUMzNDQuOSA5Ny40IDM2OCAxMzQgMzY4IDE3NnMtMjMuMSA3OC42LTU3LjMgOTcuOGMuNSAxIDEgMiAxLjQgMi45YzEuOCAzLjcgMy4zIDYuNiA0LjQgOC42Yy41IDEgLjkgMS44IDEuMiAyLjNsLjMgLjYgLjEgLjFzMCAwIDAgMHMwIDAgMCAwYzMuNiA2LjcgMiAxNS0zLjggMTkuOUwyNzIgMzQzLjVsMCAxOS44IDM1LjYtMjQuNSA0MS4xLTI4LjJjNDIuOC0yOS40IDY4LjQtNzggNjguNC0xMzBjMC0zMS4xLTkuMi02MS42LTI2LjUtODcuNWwtMi44LTQuMmMtNC02LTMuNS0xNCAxLjMtMTkuNXMxMi43LTcgMTkuMi0zLjdMNDAxLjEgODBjNy4yLTE0LjMgNy4yLTE0LjMgNy4yLTE0LjNzMCAwIDAgMHMwIDAgMCAwbC4xIDAgLjMgLjIgMSAuNWMuOCAuNCAyIDEuMSAzLjUgMS45YzIuOSAxLjcgNyA0LjEgMTEuOCA3LjNjOS42IDYuNCAyMi41IDE2LjEgMzUuNCAyOWMyNS43IDI1LjcgNTIuNyA2NS42IDUyLjcgMTE5LjNjMCA1My4xLTI2LjQgMTAwLjUtNTEuMiAxMzMuNmMtMTIuNiAxNi43LTI1LjEgMzAuMy0zNC41IDM5LjdjLTQuNyA0LjctOC43IDguNC0xMS41IDEwLjljLTEuNCAxLjMtMi41IDIuMi0zLjMgMi45bC0uOSAuOC0uMyAuMi0uMSAuMWMwIDAgMCAwIDAgMHMwIDAgMCAwTDQwMS4xIDQwMGwxMC4yIDEyLjNjLTUuMSA0LjMtMTIuNCA0LjktMTguMiAxLjZsLTc1LjYtNDMtMzIuNyAyMi41IDQ1LjUgMzEuM2MxLjgtLjQgMy43LS43IDUuNy0uN2MxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGMtMTIuMiAwLTIyLjMtOS4xLTIzLjgtMjFMMjcyIDQyMy40bDAgMjguOWM5LjYgNS41IDE2IDE1LjkgMTYgMjcuN2MwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmMwLTExLjggNi40LTIyLjIgMTYtMjcuN2wwLTI4LjEtNDAuMyAyNy43QzE5Ny44IDQ2My4zIDE4Ny45IDQ3MiAxNzYgNDcyYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0YzIuMiAwIDQuNCAuMyA2LjUgLjlsNDUuOC0zMS41LTMyLjctMjIuNS03NS42IDQzYy01LjggMy4zLTEzIDIuNy0xOC4yLTEuNkwxMTIgNDAwYy0xMC4yIDEyLjMtMTAuMiAxMi4zLTEwLjMgMTIuM3MwIDAgMCAwczAgMCAwIDBsLS4xLS4xLS4zLS4yLS45LS44Yy0uOC0uNy0xLjktMS43LTMuMy0yLjljLTIuOC0yLjUtNi43LTYuMi0xMS41LTEwLjljLTkuNC05LjQtMjEuOS0yMy0zNC41LTM5LjdDMjYuNCAzMjQuNSAwIDI3Ny4xIDAgMjI0YzAtNTMuNyAyNi45LTkzLjYgNTIuNy0xMTkuM2MxMi45LTEyLjkgMjUuOC0yMi42IDM1LjQtMjlDOTMgNzIuNSA5NyA3MCA5OS45IDY4LjRjMS41LS44IDIuNi0xLjUgMy41LTEuOWwxLS41IC4zLS4yIC4xIDBjMCAwIDAgMCAwIDBzMCAwIDAgMEwxMTIgODBsLTcuMi0xNC4zYzYuNS0zLjIgMTQuMy0xLjcgMTkuMiAzLjdzNS4zIDEzLjQgMS4zIDE5LjVsLTIuOCA0LjJDMTA1LjIgMTE5IDk2IDE0OS41IDk2IDE4MC42YzAgNTEuOSAyNS42IDEwMC42IDY4LjQgMTMwbDQxLjEgMjguMkwyNDAgMzYyLjZsMC0xOS4xLTQyLjItMzUuMmMtNS45LTQuOS03LjUtMTMuMi0zLjgtMTkuOWMwIDAgMCAwIDAgMHMwIDAgMCAwczAgMCAwIDBsLjEtLjEgLjMtLjZjLjMtLjUgLjctMS4zIDEuMi0yLjNjMS0yIDIuNi01IDQuNC04LjZjLjUtLjkgLjktMS45IDEuNC0yLjlDMTY3LjEgMjU0LjYgMTQ0IDIxOCAxNDQgMTc2czIzLjEtNzguNiA1Ny4zLTk3LjhjLS41LTEtMS0yLTEuNC0yLjljLTEuOC0zLjctMy4zLTYuNi00LjQtOC42Yy0uNS0xLS45LTEuOC0xLjItMi4zbC0uMy0uNi0uMS0uMXMwIDAgMCAwczAgMCAwIDBzMCAwIDAgMGMtMy42LTYuNy0yLTE1IDMuOC0xOS45bDQ4LTQwek0yMjAuMiAxMjIuOWMtMTcgMTEuNS0yOC4yIDMxLTI4LjIgNTMuMXMxMS4yIDQxLjYgMjguMiA1My4xQzIyNyAyMTAuMiAyMzIgMTkwLjkgMjMyIDE3NnMtNS0zNC4yLTExLjgtNTMuMXptNzEuNSAxMDYuMmMxNy0xMS41IDI4LjItMzEgMjguMi01My4xcy0xMS4yLTQxLjYtMjguMi01My4xQzI4NSAxNDEuOCAyODAgMTYxLjEgMjgwIDE3NnM1IDM0LjIgMTEuOCA1My4xelwiXVxufTtcbmNvbnN0IGZhU2xpZGVycyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzbGlkZXJzJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXCJzbGlkZXJzLWhcIl0sIFwiZjFkZVwiLCBcIk0wIDQxNmMwIDE3LjcgMTQuMyAzMiAzMiAzMmw1NC43IDBjMTIuMyAyOC4zIDQwLjUgNDggNzMuMyA0OHM2MS0xOS43IDczLjMtNDhMNDgwIDQ0OGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtMjQ2LjcgMGMtMTIuMy0yOC4zLTQwLjUtNDgtNzMuMy00OHMtNjEgMTkuNy03My4zIDQ4TDMyIDM4NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6bTEyOCAwYTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6TTMyMCAyNTZhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMzItODBjLTMyLjggMC02MSAxOS43LTczLjMgNDhMMzIgMjI0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDI0Ni43IDBjMTIuMyAyOC4zIDQwLjUgNDggNzMuMyA0OHM2MS0xOS43IDczLjMtNDhsNTQuNyAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC01NC43IDBjLTEyLjMtMjguMy00MC41LTQ4LTczLjMtNDh6TTE5MiAxMjhhMzIgMzIgMCAxIDEgMC02NCAzMiAzMiAwIDEgMSAwIDY0em03My4zLTY0QzI1MyAzNS43IDIyNC44IDE2IDE5MiAxNnMtNjEgMTkuNy03My4zIDQ4TDMyIDY0QzE0LjMgNjQgMCA3OC4zIDAgOTZzMTQuMyAzMiAzMiAzMmw4Ni43IDBjMTIuMyAyOC4zIDQwLjUgNDggNzMuMyA0OHM2MS0xOS43IDczLjMtNDhMNDgwIDEyOGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkwyNjUuMyA2NHpcIl1cbn07XG5jb25zdCBmYVNsaWRlcnNIID0gZmFTbGlkZXJzO1xuY29uc3QgZmFGb2xkZXJUcmVlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZvbGRlci10cmVlJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmODAyXCIsIFwiTTY0IDMyQzY0IDE0LjMgNDkuNyAwIDMyIDBTMCAxNC4zIDAgMzJsMCA5NkwwIDM4NGMwIDM1LjMgMjguNyA2NCA2NCA2NGwxOTIgMCAwLTY0TDY0IDM4NGwwLTIyNCAxOTIgMCAwLTY0TDY0IDk2bDAtNjR6TTI4OCAxOTJjMCAxNy43IDE0LjMgMzIgMzIgMzJsMjI0IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJsMC0xMjhjMC0xNy43LTE0LjMtMzItMzItMzJsLTk4LjcgMGMtOC41IDAtMTYuNi0zLjQtMjIuNi05LjRMNDA5LjQgOS40Yy02LTYtMTQuMS05LjQtMjIuNi05LjRMMzIwIDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMybDAgMTYwem0wIDI4OGMwIDE3LjcgMTQuMyAzMiAzMiAzMmwyMjQgMGMxNy43IDAgMzItMTQuMyAzMi0zMmwwLTEyOGMwLTE3LjctMTQuMy0zMi0zMi0zMmwtOTguNyAwYy04LjUgMC0xNi42LTMuNC0yMi42LTkuNGwtMTMuMy0xMy4zYy02LTYtMTQuMS05LjQtMjIuNi05LjRMMzIwIDI4OGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJsMCAxNjB6XCJdXG59O1xuY29uc3QgZmFOZXR3b3JrV2lyZWQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbmV0d29yay13aXJlZCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjZmZlwiLCBcIk0yNTYgNjRsMTI4IDAgMCA2NC0xMjggMCAwLTY0ek0yNDAgMGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhsMCA5NmMwIDI2LjUgMjEuNSA0OCA0OCA0OGw0OCAwIDAgMzJMMzIgMjI0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDk2IDAgMCAzMi00OCAwYy0yNi41IDAtNDggMjEuNS00OCA0OGwwIDk2YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4bDE2MCAwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4bDAtOTZjMC0yNi41LTIxLjUtNDgtNDgtNDhsLTQ4IDAgMC0zMiAyNTYgMCAwIDMyLTQ4IDBjLTI2LjUgMC00OCAyMS41LTQ4IDQ4bDAgOTZjMCAyNi41IDIxLjUgNDggNDggNDhsMTYwIDBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhsMC05NmMwLTI2LjUtMjEuNS00OC00OC00OGwtNDggMCAwLTMyIDk2IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTI1NiAwIDAtMzIgNDggMGMyNi41IDAgNDgtMjEuNSA0OC00OGwwLTk2YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4TDI0MCAwek05NiA0NDhsMC02NCAxMjggMCAwIDY0TDk2IDQ0OHptMzIwLTY0bDEyOCAwIDAgNjQtMTI4IDAgMC02NHpcIl1cbn07XG5jb25zdCBmYU1hcFBpbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtYXAtcGluJyxcbiAgaWNvbjogWzMyMCwgNTEyLCBbMTI4MjA1XSwgXCJmMjc2XCIsIFwiTTE2IDE0NGExNDQgMTQ0IDAgMSAxIDI4OCAwQTE0NCAxNDQgMCAxIDEgMTYgMTQ0ek0xNjAgODBjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZjLTUzIDAtOTYgNDMtOTYgOTZjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNmMwLTM1LjMgMjguNy02NCA2NC02NHpNMTI4IDQ4MGwwLTE2Mi45YzEwLjQgMS45IDIxLjEgMi45IDMyIDIuOXMyMS42LTEgMzItMi45TDE5MiA0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJ6XCJdXG59O1xuY29uc3QgZmFIYW1zYSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoYW1zYScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjY2NVwiLCBcIk0zNC42IDI4OEw4MCAyODhjOC44IDAgMTYtNy4yIDE2LTE2TDk2IDcyYzAtMjIuMSAxNy45LTQwIDQwLTQwczQwIDE3LjkgNDAgNDBsMCAxMzJjMCAxMSA5IDIwIDIwIDIwczIwLTkgMjAtMjBsMC0xNjRjMC0yMi4xIDE3LjktNDAgNDAtNDBzNDAgMTcuOSA0MCA0MGwwIDE2NGMwIDExIDkgMjAgMjAgMjBzMjAtOSAyMC0yMGwwLTEzMmMwLTIyLjEgMTcuOS00MCA0MC00MHM0MCAxNy45IDQwIDQwbDAgMjAwYzAgOC44IDcuMiAxNiAxNiAxNmw0NS40IDBjMTkuMSAwIDM0LjYgMTUuNSAzNC42IDM0LjZjMCA4LjYtMy4yIDE2LjktOSAyMy4zTDQxNi42IDQ0MWMtNDEuMSA0NS4yLTk5LjQgNzEtMTYwLjYgNzFzLTExOS40LTI1LjgtMTYwLjYtNzFMOSAzNDUuOWMtNS44LTYuNC05LTE0LjctOS0yMy4zQzAgMzAzLjUgMTUuNSAyODggMzQuNiAyODh6TTI1NiAyODhjLTM4LjQgMC03Ni44IDM1LjgtOTAuNiA1MC4yYy0zLjYgMy43LTUuNCA4LjctNS40IDEzLjhzMS44IDEwLjEgNS40IDEzLjhDMTc5LjIgMzgwLjIgMjE3LjYgNDE2IDI1NiA0MTZzNzYuOC0zNS44IDkwLjYtNTAuMmMzLjYtMy43IDUuNC04LjcgNS40LTEzLjhzLTEuOC0xMC4xLTUuNC0xMy44QzMzMi44IDMyMy44IDI5NC40IDI4OCAyNTYgMjg4em0wIDMyYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIl1cbn07XG5jb25zdCBmYUNlbnRTaWduID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NlbnQtc2lnbicsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZTNmNVwiLCBcIk0yMjQgMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDM0LjdjMzAuOSA1LjIgNTkuMiAxNy43IDgzLjIgMzUuOGMxNC4xIDEwLjYgMTcgMzAuNyA2LjQgNDQuOHMtMzAuNyAxNy00NC44IDYuNEMyNzkuNCAxMzcuNSAyNTIuOSAxMjggMjI0IDEyOGMtNzAuNyAwLTEyOCA1Ny4zLTEyOCAxMjhzNTcuMyAxMjggMTI4IDEyOGMyOC45IDAgNTUuNC05LjUgNzYuOC0yNS42YzE0LjEtMTAuNiAzNC4yLTcuOCA0NC44IDYuNHM3LjggMzQuMi02LjQgNDQuOGMtMjQgMTgtNTIuNCAzMC42LTgzLjIgMzUuOGwwIDM0LjdjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC0zNC43QzEwMS4yIDQzMC4xIDMyIDM1MS4xIDMyIDI1NnM2OS4yLTE3NC4xIDE2MC0xODkuM0wxOTIgMzJjMC0xNy43IDE0LjMtMzIgMzItMzJ6XCJdXG59O1xuY29uc3QgZmFGbGFzayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmbGFzaycsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjBjM1wiLCBcIk0yODggMEwxNjAgMCAxMjggMEMxMTAuMyAwIDk2IDE0LjMgOTYgMzJzMTQuMyAzMiAzMiAzMmwwIDEzMi44YzAgMTEuOC0zLjMgMjMuNS05LjUgMzMuNUwxMC4zIDQwNi4yQzMuNiA0MTcuMiAwIDQyOS43IDAgNDQyLjZDMCA0ODAuOSAzMS4xIDUxMiA2OS40IDUxMmwzMDkuMiAwYzM4LjMgMCA2OS40LTMxLjEgNjkuNC02OS40YzAtMTIuOC0zLjYtMjUuNC0xMC4zLTM2LjRMMzI5LjUgMjMwLjRjLTYuMi0xMC4xLTkuNS0yMS43LTkuNS0zMy41TDMyMCA2NGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkwyODggMHpNMTkyIDE5Ni44TDE5MiA2NGw2NCAwIDAgMTMyLjhjMCAyMy43IDYuNiA0Ni45IDE5IDY3LjFMMzA5LjUgMzIwbC0xNzEgMEwxNzMgMjYzLjljMTIuNC0yMC4yIDE5LTQzLjQgMTktNjcuMXpcIl1cbn07XG5jb25zdCBmYVBlcnNvblByZWduYW50ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BlcnNvbi1wcmVnbmFudCcsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZTMxZVwiLCBcIk0xOTIgMGE0OCA0OCAwIDEgMSAwIDk2IDQ4IDQ4IDAgMSAxIDAtOTZ6TTEyMCAzODNjLTEzLjgtMy42LTI0LTE2LjEtMjQtMzFsMC01NS4xLTQuNiA3LjZjLTkuMSAxNS4xLTI4LjggMjAtNDMuOSAxMC45cy0yMC0yOC44LTEwLjktNDMuOWw1OC4zLTk3YzE1LTI0LjkgNDAuMy00MS41IDY4LjctNDUuNmM0LjEtLjYgOC4yLTEgMTIuNS0xbDEuMSAwIDEyLjUgMCAyLjQgMGMxLjQgMCAyLjggLjEgNC4xIC4zYzM1LjcgMi45IDY1LjQgMjkuMyA3Mi4xIDY1bDYuMSAzMi41YzQ0LjMgOC42IDc3LjcgNDcuNSA3Ny43IDk0LjNsMCAzMmMwIDE3LjctMTQuMyAzMi0zMiAzMmwtMTYgMC00MCAwIDAgOTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC05Ni04IDAtOCAwIDAgOTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC05N3pcIl1cbn07XG5jb25zdCBmYVdhbmRTcGFya2xlcyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd3YW5kLXNwYXJrbGVzJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNzJiXCIsIFwiTTQ2NCA2LjFjOS41LTguNSAyNC04LjEgMzMgLjlsOCA4YzkgOSA5LjQgMjMuNSAuOSAzM2wtODUuOCA5NS45Yy0yLjYgMi45LTQuMSA2LjctNC4xIDEwLjdsMCAyMS40YzAgOC44LTcuMiAxNi0xNiAxNmwtMTUuOCAwYy00LjYgMC04LjkgMS45LTExLjkgNS4zTDEwMC43IDUwMC45Qzk0LjMgNTA4IDg1LjMgNTEyIDc1LjggNTEyYy04LjggMC0xNy4zLTMuNS0yMy41LTkuOEw5LjcgNDU5LjdDMy41IDQ1My40IDAgNDQ1IDAgNDM2LjJjMC05LjUgNC0xOC41IDExLjEtMjQuOGwxMTEuNi05OS44YzMuNC0zIDUuMy03LjQgNS4zLTExLjlsMC0yNy42YzAtOC44IDcuMi0xNiAxNi0xNmwzNC42IDBjMy45IDAgNy43LTEuNSAxMC43LTQuMUw0NjQgNi4xek00MzIgMjg4YzMuNiAwIDYuNyAyLjQgNy43IDUuOGwxNC44IDUxLjcgNTEuNyAxNC44YzMuNCAxIDUuOCA0LjEgNS44IDcuN3MtMi40IDYuNy01LjggNy43bC01MS43IDE0LjgtMTQuOCA1MS43Yy0xIDMuNC00LjEgNS44LTcuNyA1LjhzLTYuNy0yLjQtNy43LTUuOGwtMTQuOC01MS43LTUxLjctMTQuOGMtMy40LTEtNS44LTQuMS01LjgtNy43czIuNC02LjcgNS44LTcuN2w1MS43LTE0LjggMTQuOC01MS43YzEtMy40IDQuMS01LjggNy43LTUuOHpNODcuNyA2OS44bDE0LjggNTEuNyA1MS43IDE0LjhjMy40IDEgNS44IDQuMSA1LjggNy43cy0yLjQgNi43LTUuOCA3LjdsLTUxLjcgMTQuOEw4Ny43IDIxOC4yYy0xIDMuNC00LjEgNS44LTcuNyA1LjhzLTYuNy0yLjQtNy43LTUuOEw1Ny41IDE2Ni41IDUuOCAxNTEuN2MtMy40LTEtNS44LTQuMS01LjgtNy43czIuNC02LjcgNS44LTcuN2w1MS43LTE0LjhMNzIuMyA2OS44YzEtMy40IDQuMS01LjggNy43LTUuOHM2LjcgMi40IDcuNyA1Ljh6TTIwOCAwYzMuNyAwIDYuOSAyLjUgNy44IDYuMWw2LjggMjcuMyAyNy4zIDYuOGMzLjYgLjkgNi4xIDQuMSA2LjEgNy44cy0yLjUgNi45LTYuMSA3LjhsLTI3LjMgNi44LTYuOCAyNy4zYy0uOSAzLjYtNC4xIDYuMS03LjggNi4xcy02LjktMi41LTcuOC02LjFsLTYuOC0yNy4zLTI3LjMtNi44Yy0zLjYtLjktNi4xLTQuMS02LjEtNy44czIuNS02LjkgNi4xLTcuOGwyNy4zLTYuOCA2LjgtMjcuM2MuOS0zLjYgNC4xLTYuMSA3LjgtNi4xelwiXVxufTtcbmNvbnN0IGZhRWxsaXBzaXNWZXJ0aWNhbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdlbGxpcHNpcy12ZXJ0aWNhbCcsXG4gIGljb246IFsxMjgsIDUxMiwgW1wiZWxsaXBzaXMtdlwiXSwgXCJmMTQyXCIsIFwiTTY0IDM2MGE1NiA1NiAwIDEgMCAwIDExMiA1NiA1NiAwIDEgMCAwLTExMnptMC0xNjBhNTYgNTYgMCAxIDAgMCAxMTIgNTYgNTYgMCAxIDAgMC0xMTJ6TTEyMCA5NkE1NiA1NiAwIDEgMCA4IDk2YTU2IDU2IDAgMSAwIDExMiAwelwiXVxufTtcbmNvbnN0IGZhRWxsaXBzaXNWID0gZmFFbGxpcHNpc1ZlcnRpY2FsO1xuY29uc3QgZmFUaWNrZXQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndGlja2V0JyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbMTI3OTAzXSwgXCJmMTQ1XCIsIFwiTTY0IDY0QzI4LjcgNjQgMCA5Mi43IDAgMTI4bDAgNjRjMCA4LjggNy40IDE1LjcgMTUuNyAxOC42QzM0LjUgMjE3LjEgNDggMjM1IDQ4IDI1NnMtMTMuNSAzOC45LTMyLjMgNDUuNEM3LjQgMzA0LjMgMCAzMTEuMiAwIDMyMGwwIDY0YzAgMzUuMyAyOC43IDY0IDY0IDY0bDQ0OCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtNjRjMC04LjgtNy40LTE1LjctMTUuNy0xOC42QzU0MS41IDI5NC45IDUyOCAyNzcgNTI4IDI1NnMxMy41LTM4LjkgMzIuMy00NS40YzguMy0yLjkgMTUuNy05LjggMTUuNy0xOC42bDAtNjRjMC0zNS4zLTI4LjctNjQtNjQtNjRMNjQgNjR6bTY0IDExMmwwIDE2MGMwIDguOCA3LjIgMTYgMTYgMTZsMjg4IDBjOC44IDAgMTYtNy4yIDE2LTE2bDAtMTYwYzAtOC44LTcuMi0xNi0xNi0xNmwtMjg4IDBjLTguOCAwLTE2IDcuMi0xNiAxNnpNOTYgMTYwYzAtMTcuNyAxNC4zLTMyIDMyLTMybDMyMCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgMTkyYzAgMTcuNy0xNC4zIDMyLTMyIDMybC0zMjAgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC0xOTJ6XCJdXG59O1xuY29uc3QgZmFQb3dlck9mZiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwb3dlci1vZmYnLFxuICBpY29uOiBbNTEyLCA1MTIsIFs5MjExXSwgXCJmMDExXCIsIFwiTTI4OCAzMmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMmwwIDIyNGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMjI0ek0xNDMuNSAxMjAuNmMxMy42LTExLjMgMTUuNC0zMS41IDQuMS00NS4xcy0zMS41LTE1LjQtNDUuMS00LjFDNDkuNyAxMTUuNCAxNiAxODEuOCAxNiAyNTZjMCAxMzIuNSAxMDcuNSAyNDAgMjQwIDI0MHMyNDAtMTA3LjUgMjQwLTI0MGMwLTc0LjItMzMuOC0xNDAuNi04Ni42LTE4NC42Yy0xMy42LTExLjMtMzMuOC05LjQtNDUuMSA0LjFzLTkuNCAzMy44IDQuMSA0NS4xYzM4LjkgMzIuMyA2My41IDgxIDYzLjUgMTM1LjRjMCA5Ny4yLTc4LjggMTc2LTE3NiAxNzZzLTE3Ni03OC44LTE3Ni0xNzZjMC01NC40IDI0LjctMTAzLjEgNjMuNS0xMzUuNHpcIl1cbn07XG5jb25zdCBmYVJpZ2h0TG9uZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdyaWdodC1sb25nJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXCJsb25nLWFycm93LWFsdC1yaWdodFwiXSwgXCJmMzBiXCIsIFwiTTMzNC41IDQxNGM4LjggMy44IDE5IDIgMjYtNC42bDE0NC0xMzZjNC44LTQuNSA3LjUtMTAuOCA3LjUtMTcuNHMtMi43LTEyLjktNy41LTE3LjRsLTE0NC0xMzZjLTctNi42LTE3LjItOC40LTI2LTQuNnMtMTQuNSAxMi41LTE0LjUgMjJsMCA3MkwzMiAxOTJjLTE3LjcgMC0zMiAxNC4zLTMyIDMybDAgNjRjMCAxNy43IDE0LjMgMzIgMzIgMzJsMjg4IDAgMCA3MmMwIDkuNiA1LjcgMTguMiAxNC41IDIyelwiXVxufTtcbmNvbnN0IGZhTG9uZ0Fycm93QWx0UmlnaHQgPSBmYVJpZ2h0TG9uZztcbmNvbnN0IGZhRmxhZ1VzYSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmbGFnLXVzYScsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjc0ZFwiLCBcIk0zMiAwQzQ5LjcgMCA2NCAxNC4zIDY0IDMybDAgMTYgNjktMTcuMmMzOC4xLTkuNSA3OC4zLTUuMSAxMTMuNSAxMi41YzQ2LjMgMjMuMiAxMDAuOCAyMy4yIDE0Ny4xIDBsOS42LTQuOEM0MjMuOCAyOC4xIDQ0OCA0My4xIDQ0OCA2Ni4xbDAgMzYuMS00NC43IDE2LjJjLTQyLjggMTUuNi05MCAxMy45LTEzMS42LTQuNmwtMTYuMS03LjJjLTIwLjMtOS00MS44LTE0LjctNjMuNi0xNi45bDAgMzIuMmMxNy40IDIuMSAzNC40IDYuNyA1MC42IDEzLjlsMTYuMSA3LjJjNDkuMiAyMS45IDEwNSAyMy44IDE1NS42IDUuNEw0NDggMTM2LjNsMCA2Mi00NC43IDE2LjJjLTQyLjggMTUuNi05MCAxMy45LTEzMS42LTQuNmwtMTYuMS03LjJjLTQwLjItMTcuOS04NS0yMi41LTEyOC4xLTEzLjNMNjQgMjAzLjFsMCAzMi43IDcwLjItMTUuMWMzNi40LTcuOCA3NC4zLTMuOSAxMDguNCAxMS4zbDE2LjEgNy4yYzQ5LjIgMjEuOSAxMDUgMjMuOCAxNTUuNiA1LjRMNDQ4IDIzMi4zbDAgNjItNDQuNyAxNi4yYy00Mi44IDE1LjYtOTAgMTMuOS0xMzEuNi00LjZsLTE2LjEtNy4yYy00MC4yLTE3LjktODUtMjIuNS0xMjguMS0xMy4zTDY0IDI5OS4xbDAgMzIuNyA3MC4yLTE1LjFjMzYuNC03LjggNzQuMy0zLjkgMTA4LjQgMTEuM2wxNi4xIDcuMmM0OS4yIDIxLjkgMTA1IDIzLjggMTU1LjYgNS40TDQ0OCAzMjguM2wwIDMzLjVjMCAxMy4zLTguMyAyNS4zLTIwLjggMzBsLTM0LjcgMTNjLTQ2LjIgMTcuMy05Ny42IDE0LjYtMTQxLjctNy40Yy0zNy45LTE5LTgxLjMtMjMuNy0xMjIuNS0xMy40TDY0IDQwMGwwIDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtNjQgMC03MC41IDAtMzIuNyAwLTYzLjMgMC0zMi43IDAtNjMuMyAwLTMyLjdMMCA2NCAwIDMyQzAgMTQuMyAxNC4zIDAgMzIgMHptODAgOTZBMTYgMTYgMCAxIDAgODAgOTZhMTYgMTYgMCAxIDAgMzIgMHptMzIgMGExNiAxNiAwIDEgMCAwLTMyIDE2IDE2IDAgMSAwIDAgMzJ6bS0zMiA0OGExNiAxNiAwIDEgMCAtMzIgMCAxNiAxNiAwIDEgMCAzMiAwem0zMiAwYTE2IDE2IDAgMSAwIDAtMzIgMTYgMTYgMCAxIDAgMCAzMnpcIl1cbn07XG5jb25zdCBmYUxhcHRvcEZpbGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbGFwdG9wLWZpbGUnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU1MWRcIiwgXCJNMTI4IDBDOTIuNyAwIDY0IDI4LjcgNjQgNjRsMCAyMjQtNDQuOCAwQzguNiAyODggMCAyOTYuNiAwIDMwNy4yQzAgMzQ5LjYgMzQuNCAzODQgNzYuOCAzODRMMzIwIDM4NGwwLTk2LTE5MiAwIDAtMjI0IDMyMCAwIDAgMzIgNjQgMCAwLTMyYzAtMzUuMy0yOC43LTY0LTY0LTY0TDEyOCAwek01MTIgMTI4bC0xMTIgMGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhsMCAyODhjMCAyNi41IDIxLjUgNDggNDggNDhsMTkyIDBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhsMC0yMDgtOTYgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC05NnptMzIgMGwwIDk2IDk2IDAtOTYtOTZ6XCJdXG59O1xuY29uc3QgZmFUdHkgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndHR5JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXCJ0ZWxldHlwZVwiXSwgXCJmMWU0XCIsIFwiTTM4LjMgMjQxLjNMMTUuMSAyMDAuNmMtOS4yLTE2LjItOC40LTM2LjUgNC41LTUwQzYxLjQgMTA2LjggMTQ0LjcgNDggMjU2IDQ4czE5NC42IDU4LjggMjM2LjQgMTAyLjZjMTIuOSAxMy41IDEzLjcgMzMuOCA0LjUgNTBsLTIzLjEgNDAuN2MtNy41IDEzLjItMjMuMyAxOS4zLTM3LjggMTQuNmwtODEuMS0yNi42Yy0xMy4xLTQuMy0yMi0xNi42LTIyLTMwLjRsMC01NC44Yy00OS42LTE4LjEtMTA0LTE4LjEtMTUzLjYgMGwwIDU0LjhjMCAxMy44LTguOSAyNi4xLTIyIDMwLjRMNzYuMSAyNTUuOGMtMTQuNSA0LjctMzAuMy0xLjQtMzcuOC0xNC42ek0zMiAzMzZjMC04LjggNy4yLTE2IDE2LTE2bDMyIDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgMzJjMCA4LjgtNy4yIDE2LTE2IDE2bC0zMiAwYy04LjggMC0xNi03LjItMTYtMTZsMC0zMnptMCA5NmMwLTguOCA3LjItMTYgMTYtMTZsMzIgMGM4LjggMCAxNiA3LjIgMTYgMTZsMCAzMmMwIDguOC03LjIgMTYtMTYgMTZsLTMyIDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTMyek0xNDQgMzIwbDMyIDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgMzJjMCA4LjgtNy4yIDE2LTE2IDE2bC0zMiAwYy04LjggMC0xNi03LjItMTYtMTZsMC0zMmMwLTguOCA3LjItMTYgMTYtMTZ6bTgwIDE2YzAtOC44IDcuMi0xNiAxNi0xNmwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDMyYzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzJ6bTExMi0xNmwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDMyYzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzJjMC04LjggNy4yLTE2IDE2LTE2em04MCAxNmMwLTguOCA3LjItMTYgMTYtMTZsMzIgMGM4LjggMCAxNiA3LjIgMTYgMTZsMCAzMmMwIDguOC03LjIgMTYtMTYgMTZsLTMyIDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTMyem0xNiA4MGwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDMyYzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzJjMC04LjggNy4yLTE2IDE2LTE2ek0xMjggNDMyYzAtOC44IDcuMi0xNiAxNi0xNmwyMjQgMGM4LjggMCAxNiA3LjIgMTYgMTZsMCAzMmMwIDguOC03LjIgMTYtMTYgMTZsLTIyNCAwYy04LjggMC0xNi03LjItMTYtMTZsMC0zMnpcIl1cbn07XG5jb25zdCBmYVRlbGV0eXBlID0gZmFUdHk7XG5jb25zdCBmYURpYWdyYW1OZXh0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2RpYWdyYW0tbmV4dCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZTQ3NlwiLCBcIk01MTIgMTYwYzAgMzUuMy0yOC43IDY0LTY0IDY0bC0xNjggMCAwIDY0IDQ2LjEgMGMyMS40IDAgMzIuMSAyNS45IDE3IDQxTDI3MyAzOTljLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwTDE2OSAzMjljLTE1LjEtMTUuMS00LjQtNDEgMTctNDFsNDYuMSAwIDAtNjRMNjQgMjI0Yy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMybDM4NCAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgNjR6TTQ0OCA0MTZsMC02NC04Mi43IDAgLjQtLjRjMTguNC0xOC40IDIwLjQtNDMuNyAxMS02My42bDcxLjMgMGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDY0YzAgMzUuMy0yOC43IDY0LTY0IDY0TDY0IDQ4MGMtMzUuMyAwLTY0LTI4LjctNjQtNjRsMC02NGMwLTM1LjMgMjguNy02NCA2NC02NGw3MS4zIDBjLTkuNCAxOS45LTcuNCA0NS4yIDExIDYzLjZsLjQgLjRMNjQgMzUybDAgNjQgMTQ2LjcgMCA1LjcgNS43YzIxLjkgMjEuOSA1Ny4zIDIxLjkgNzkuMiAwbDUuNy01LjdMNDQ4IDQxNnpcIl1cbn07XG5jb25zdCBmYVBlcnNvblJpZmxlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BlcnNvbi1yaWZsZScsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZTU0ZVwiLCBcIk0yNjUuMiAxOTJjMjUuNCAwIDQ5LjggNy4xIDcwLjggMTkuOUwzMzYgNTEybC0xOTIgMCAwLTE3NC4zTDkwLjQgNDI4LjNjLTExLjIgMTktMzUuOCAyNS4zLTU0LjggMTQuMXMtMjUuMy0zNS44LTE0LjEtNTQuOEw5Ny43IDI1OC44YzI0LjUtNDEuNCA2OS02Ni44IDExNy4xLTY2LjhsNTAuNCAwek0xNjAgODBhODAgODAgMCAxIDEgMTYwIDBBODAgODAgMCAxIDEgMTYwIDgwek00NDggMGM4LjggMCAxNiA3LjIgMTYgMTZsMCAxMTYuM2M5LjYgNS41IDE2IDE1LjkgMTYgMjcuN2wwIDEwOS4zIDE2LTUuMyAwLTU2YzAtOC44IDcuMi0xNiAxNi0xNmwxNiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDg0LjVjMCA2LjktNC40IDEzLTEwLjkgMTUuMkw0ODAgMzI1LjNsMCAyNi43IDQ4IDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgMTZjMCA4LjgtNy4yIDE2LTE2IDE2bC00NCAwIDIzIDkyLjFjMi41IDEwLjEtNS4xIDE5LjktMTUuNSAxOS45TDQzMiA1MTJjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTk2LTE2IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtMTQ0YzAtMTcuNyAxNC4zLTMyIDMyLTMybDAtMzJjMC0xMS44IDYuNC0yMi4yIDE2LTI3LjdMNDE2IDMyYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2bDE2IDAgMTYgMHpcIl1cbn07XG5jb25zdCBmYUhvdXNlTWVkaWNhbENpcmNsZUV4Y2xhbWF0aW9uID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hvdXNlLW1lZGljYWwtY2lyY2xlLWV4Y2xhbWF0aW9uJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlNTEyXCIsIFwiTTMyMCAzNjhjMCA1OS41IDI5LjUgMTEyLjEgNzQuOCAxNDRsLTI2Ni43IDBjLTM1LjMgMC02NC0yOC43LTY0LTY0bDAtMTYwLjQtMzIgMGMtMTggMC0zMi0xNC0zMi0zMi4xYzAtOSAzLTE3IDEwLTI0TDI2Ni40IDhjNy03IDE1LTggMjItOHMxNSAyIDIxIDdMNTIyLjEgMTkzLjljLTguNS0xLjMtMTcuMy0xLjktMjYuMS0xLjljLTU0LjcgMC0xMDMuNSAyNC45LTEzNS44IDY0TDMyMCAyNTZsMC00OGMwLTguOC03LjItMTYtMTYtMTZsLTMyIDBjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDQ4LTQ4IDBjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDMyYzAgOC44IDcuMiAxNiAxNiAxNmw0OCAwIDAgNDhjMCA4LjggNy4yIDE2IDE2IDE2bDMyIDBjOC44IDAgMTYtNy4yIDE2LTE2ek00OTYgMjI0YTE0NCAxNDQgMCAxIDEgMCAyODggMTQ0IDE0NCAwIDEgMSAwLTI4OHptMCAyNDBhMjQgMjQgMCAxIDAgMC00OCAyNCAyNCAwIDEgMCAwIDQ4em0wLTE5MmMtOC44IDAtMTYgNy4yLTE2IDE2bDAgODBjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNmwwLTgwYzAtOC44LTcuMi0xNi0xNi0xNnpcIl1cbn07XG5jb25zdCBmYUNsb3NlZENhcHRpb25pbmcgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2xvc2VkLWNhcHRpb25pbmcnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImYyMGFcIiwgXCJNMCA5NkMwIDYwLjcgMjguNyAzMiA2NCAzMmw0NDggMGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDMyMGMwIDM1LjMtMjguNyA2NC02NCA2NEw2NCA0ODBjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgOTZ6TTIwMCAyMDhjMTQuMiAwIDI3IDYuMSAzNS44IDE2YzguOCA5LjkgMjQgMTAuNyAzMy45IDEuOXMxMC43LTI0IDEuOS0zMy45Yy0xNy41LTE5LjYtNDMuMS0zMi03MS41LTMyYy01MyAwLTk2IDQzLTk2IDk2czQzIDk2IDk2IDk2YzI4LjQgMCA1NC0xMi40IDcxLjUtMzJjOC44LTkuOSA4LTI1LTEuOS0zMy45cy0yNS04LTMzLjkgMS45Yy04LjggOS45LTIxLjYgMTYtMzUuOCAxNmMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhzMjEuNS00OCA0OC00OHptMTQ0IDQ4YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4YzE0LjIgMCAyNyA2LjEgMzUuOCAxNmM4LjggOS45IDI0IDEwLjcgMzMuOSAxLjlzMTAuNy0yNCAxLjktMzMuOWMtMTcuNS0xOS42LTQzLjEtMzItNzEuNS0zMmMtNTMgMC05NiA0My05NiA5NnM0MyA5NiA5NiA5NmMyOC40IDAgNTQtMTIuNCA3MS41LTMyYzguOC05LjkgOC0yNS0xLjktMzMuOXMtMjUtOC0zMy45IDEuOWMtOC44IDkuOS0yMS42IDE2LTM1LjggMTZjLTI2LjUgMC00OC0yMS41LTQ4LTQ4elwiXVxufTtcbmNvbnN0IGZhUGVyc29uSGlraW5nID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BlcnNvbi1oaWtpbmcnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtcImhpa2luZ1wiXSwgXCJmNmVjXCIsIFwiTTE5MiA0OGE0OCA0OCAwIDEgMSA5NiAwIDQ4IDQ4IDAgMSAxIC05NiAwem01MS4zIDE4Mi43TDIyNC4yIDMwN2w0OS43IDQ5LjdjOSA5IDE0LjEgMjEuMiAxNC4xIDMzLjlsMCA4OS40YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtODIuNy03My45LTczLjljLTE1LjgtMTUuOC0yMi4yLTM4LjYtMTYuOS02MC4zbDIwLjQtODRjOC4zLTM0LjEgNDIuNy01NC45IDc2LjctNDYuNGMxOSA0LjggMzUuNiAxNi40IDQ2LjQgMzIuN0wzMDUuMSAyMDhsMzAuOSAwIDAtMjRjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNGwwIDU1LjhjMCAuMSAwIC4yIDAgLjJzMCAuMiAwIC4yTDM4NCA0ODhjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRsMC0yMTYtMzkuNCAwYy0xNiAwLTMxLTgtMzkuOS0yMS40bC0xMy4zLTIwek04MS4xIDQ3MS45TDExNy4zIDMzNGMzIDQuMiA2LjQgOC4yIDEwLjEgMTEuOWw0MS45IDQxLjlMMTQyLjkgNDg4LjFjLTQuNSAxNy4xLTIyIDI3LjMtMzkuMSAyMi44cy0yNy4zLTIyLTIyLjgtMzkuMXptNTUuNS0zNDZMMTAxLjQgMjY2LjVjLTMgMTIuMS0xNC45IDE5LjktMjcuMiAxNy45bC00Ny45LThjLTE0LTIuMy0yMi45LTE2LjMtMTkuMi0zMEwzMS45IDE1NWM5LjUtMzQuOCA0MS4xLTU5IDc3LjItNTlsNC4yIDBjMTUuNiAwIDI3LjEgMTQuNyAyMy4zIDI5Ljh6XCJdXG59O1xuY29uc3QgZmFIaWtpbmcgPSBmYVBlcnNvbkhpa2luZztcbmNvbnN0IGZhVmVudXNEb3VibGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndmVudXMtZG91YmxlJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbOTg5MF0sIFwiZjIyNlwiLCBcIk0xOTIgMjg4YTExMiAxMTIgMCAxIDAgMC0yMjQgMTEyIDExMiAwIDEgMCAwIDIyNHpNMzY4IDE3NmMwIDg2LjMtNjIuMSAxNTguMS0xNDQgMTczLjFsMCAzNC45IDMyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTMyIDAgMCAzMmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTMyLTMyIDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJsMzIgMCAwLTM0LjlDNzguMSAzMzQuMSAxNiAyNjIuMyAxNiAxNzZDMTYgNzguOCA5NC44IDAgMTkyIDBzMTc2IDc4LjggMTc2IDE3NnpNMzQ0IDMxOGMxNC42LTE1LjYgMjYuOC0zMy40IDM2LTUzYzE4LjggMTQuNCA0Mi40IDIzIDY4IDIzYzYxLjkgMCAxMTItNTAuMSAxMTItMTEycy01MC4xLTExMi0xMTItMTEyYy0yNS42IDAtNDkuMSA4LjYtNjggMjNjLTkuMy0xOS41LTIxLjUtMzcuNC0zNi01M0MzNzMuMSAxMi42IDQwOS4xIDAgNDQ4IDBjOTcuMiAwIDE3NiA3OC44IDE3NiAxNzZjMCA4Ni4zLTYyLjEgMTU4LjEtMTQ0IDE3My4xbDAgMzQuOSAzMiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC0zMiAwIDAgMzJjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC0zMi0zMiAwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDMyIDAgMC0zNC45Yy0yNi42LTQuOS01MS4xLTE1LjctNzItMzEuMXpcIl1cbn07XG5jb25zdCBmYUltYWdlcyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdpbWFnZXMnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImYzMDJcIiwgXCJNMTYwIDMyYy0zNS4zIDAtNjQgMjguNy02NCA2NGwwIDIyNGMwIDM1LjMgMjguNyA2NCA2NCA2NGwzNTIgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTIyNGMwLTM1LjMtMjguNy02NC02NC02NEwxNjAgMzJ6TTM5NiAxMzguN2w5NiAxNDRjNC45IDcuNCA1LjQgMTYuOCAxLjIgMjQuNlM0ODAuOSAzMjAgNDcyIDMyMGwtMTQ0IDAtNDggMC04MCAwYy05LjIgMC0xNy42LTUuMy0yMS42LTEzLjZzLTIuOS0xOC4yIDIuOS0yNS40bDY0LTgwYzQuNi01LjcgMTEuNC05IDE4LjctOXMxNC4yIDMuMyAxOC43IDlsMTcuMyAyMS42IDU2LTg0QzM2MC41IDEzMiAzNjggMTI4IDM3NiAxMjhzMTUuNSA0IDIwIDEwLjd6TTE5MiAxMjhhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHpNNDggMTIwYzAtMTMuMy0xMC43LTI0LTI0LTI0UzAgMTA2LjcgMCAxMjBMMCAzNDRjMCA3NS4xIDYwLjkgMTM2IDEzNiAxMzZsMzIwIDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRsLTMyMCAwYy00OC42IDAtODgtMzkuNC04OC04OGwwLTIyNHpcIl1cbn07XG5jb25zdCBmYUNhbGN1bGF0b3IgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2FsY3VsYXRvcicsXG4gIGljb246IFszODQsIDUxMiwgWzEyODQyNV0sIFwiZjFlY1wiLCBcIk02NCAwQzI4LjcgMCAwIDI4LjcgMCA2NEwwIDQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NGwyNTYgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTM4NGMwLTM1LjMtMjguNy02NC02NC02NEw2NCAwek05NiA2NGwxOTIgMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDMyYzAgMTcuNy0xNC4zIDMyLTMyIDMyTDk2IDE2MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC0zMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnptMzIgMTYwYTMyIDMyIDAgMSAxIC02NCAwIDMyIDMyIDAgMSAxIDY0IDB6TTk2IDM1MmEzMiAzMiAwIDEgMSAwLTY0IDMyIDMyIDAgMSAxIDAgNjR6TTY0IDQxNmMwLTE3LjcgMTQuMy0zMiAzMi0zMmw5NiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC05NiAwYy0xNy43IDAtMzItMTQuMy0zMi0zMnpNMTkyIDI1NmEzMiAzMiAwIDEgMSAwLTY0IDMyIDMyIDAgMSAxIDAgNjR6bTMyIDY0YTMyIDMyIDAgMSAxIC02NCAwIDMyIDMyIDAgMSAxIDY0IDB6bTY0LTY0YTMyIDMyIDAgMSAxIDAtNjQgMzIgMzIgMCAxIDEgMCA2NHptMzIgNjRhMzIgMzIgMCAxIDEgLTY0IDAgMzIgMzIgMCAxIDEgNjQgMHpNMjg4IDQ0OGEzMiAzMiAwIDEgMSAwLTY0IDMyIDMyIDAgMSAxIDAgNjR6XCJdXG59O1xuY29uc3QgZmFQZW9wbGVQdWxsaW5nID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3Blb3BsZS1wdWxsaW5nJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJlNTM1XCIsIFwiTTgwIDk2QTQ4IDQ4IDAgMSAwIDgwIDBhNDggNDggMCAxIDAgMCA5NnpNNjQgMTI4Yy0zNS4zIDAtNjQgMjguNy02NCA2NEwwIDMyMGMwIDE3LjcgMTQuMyAzMiAzMiAzMmM5LjggMCAxOC41LTQuNCAyNC40LTExLjJMODAuNCA0ODUuM2MyLjkgMTcuNCAxOS40IDI5LjIgMzYuOCAyNi4zczI5LjItMTkuNCAyNi4zLTM2LjhMMTIzLjEgMzUybDE1LjcgMCAzMCAxMzQuOWMzLjggMTcuMyAyMC45IDI4LjEgMzguMiAyNC4zczI4LjEtMjAuOSAyNC4zLTM4LjJsLTU3LjMtMjU4IDExNi4zIDUzLjhjLjUgLjMgMS4xIC41IDEuNiAuN2M4LjYgMy42IDE4IDMuMSAyNS45LS43YzMuNC0xLjYgNi42LTMuOSA5LjMtNi43YzMuMS0zLjIgNS41LTcgNy4xLTExLjRjLjEtLjMgLjItLjcgLjMtMWwyLjUtNy41YzUuNy0xNy4xIDE4LjMtMzAuOSAzNC43LTM4LjJsOC0zLjVjMS0uNCAxLjktLjggMi45LTEuMmwtMTYuOSA2My41Yy01LjYgMjEuMS0uMSA0My42IDE0LjcgNTkuN2w3MC43IDc3LjEgMjIgODguMWM0LjMgMTcuMSAyMS43IDI3LjYgMzguOCAyMy4zczI3LjYtMjEuNyAyMy4zLTM4LjhsLTIzLTkyLjFjLTEuOS03LjgtNS44LTE0LjktMTEuMi0yMC44bC00OS41LTU0IDE5LjMtNjUuNSA5LjYgMjNjNC40IDEwLjYgMTIuNSAxOS4zIDIyLjggMjQuNWwyNi43IDEzLjNjMTUuOCA3LjkgMzUgMS41IDQyLjktMTQuM3MxLjUtMzUtMTQuMy00Mi45TDUzNyAyMzIuN2wtMTUuMy0zNi44QzUwNC41IDE1NC44IDQ2NC4zIDEyOCA0MTkuNyAxMjhjLTIyLjggMC00NS4zIDQuOC02Ni4xIDE0bC04IDMuNWMtMjQuNCAxMC45LTQ0LjYgMjktNTguMSA1MS42TDE1Ny4zIDEzNi45QzE0NC43IDEzMSAxMzAuOSAxMjggMTE3IDEyOGwtNTMgMHpNNDY0IDk2YTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnpNMzQ5LjcgMzM1LjZsLTI1IDYyLjQtNTkuNCA1OS40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwTDM3Mi4zIDQ0MWM0LjYtNC42IDguMi0xMC4xIDEwLjYtMTYuMWwxNC41LTM2LjItNDAuNy00NC40Yy0yLjUtMi43LTQuOC01LjYtNy04LjZ6XCJdXG59O1xuY29uc3QgZmFOID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ24nLFxuICBpY29uOiBbMzg0LCA1MTIsIFsxMTBdLCBcIjRlXCIsIFwiTTIxLjEgMzMuOWMxMi43LTQuNiAyNi45LS43IDM1LjUgOS42TDMyMCAzNTkuNiAzMjAgNjRjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMmwwIDM4NGMwIDEzLjUtOC40IDI1LjUtMjEuMSAzMC4xcy0yNi45IC43LTM1LjUtOS42TDY0IDE1Mi40IDY0IDQ0OGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMkwwIDY0QzAgNTAuNSA4LjQgMzguNSAyMS4xIDMzLjl6XCJdXG59O1xuY29uc3QgZmFDYWJsZUNhciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjYWJsZS1jYXInLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjg2NzMsIDU3NTUxLCBcInRyYW1cIl0sIFwiZjdkYVwiLCBcIk0yODggMGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6TTE2MCA1NmEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwek0zMiAyODhjMC0zNS4zIDI4LjctNjQgNjQtNjRsMTM2IDAgMC02Ni41LTIwMy4xIDQyYy0xMyAyLjctMjUuNy01LjctMjguNC0xOC42czUuNy0yNS43IDE4LjYtMjguNGwyMzItNDggMjMyLTQ4YzEzLTIuNyAyNS43IDUuNyAyOC40IDE4LjZzLTUuNyAyNS43LTE4LjYgMjguNEwyODAgMTQ3LjVsMCA3Ni41IDEzNiAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMTYwYzAgMzUuMy0yOC43IDY0LTY0IDY0TDk2IDUxMmMtMzUuMyAwLTY0LTI4LjctNjQtNjRsMC0xNjB6bTY0IDBjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDY0YzAgOC44IDcuMiAxNiAxNiAxNmw2NCAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTY0YzAtOC44LTcuMi0xNi0xNi0xNmwtNjQgMHptMTEyIDE2bDAgNjRjMCA4LjggNy4yIDE2IDE2IDE2bDY0IDBjOC44IDAgMTYtNy4yIDE2LTE2bDAtNjRjMC04LjgtNy4yLTE2LTE2LTE2bC02NCAwYy04LjggMC0xNiA3LjItMTYgMTZ6bTE0NC0xNmMtOC44IDAtMTYgNy4yLTE2IDE2bDAgNjRjMCA4LjggNy4yIDE2IDE2IDE2bDY0IDBjOC44IDAgMTYtNy4yIDE2LTE2bDAtNjRjMC04LjgtNy4yLTE2LTE2LTE2bC02NCAwelwiXVxufTtcbmNvbnN0IGZhVHJhbSA9IGZhQ2FibGVDYXI7XG5jb25zdCBmYUNsb3VkUmFpbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjbG91ZC1yYWluJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI3NzgzLCA5OTI2XSwgXCJmNzNkXCIsIFwiTTk2IDMyMGMtNTMgMC05Ni00My05Ni05NmMwLTQyLjUgMjcuNi03OC42IDY1LjktOTEuMkM2NC43IDEyNi4xIDY0IDExOS4xIDY0IDExMkM2NCA1MC4xIDExNC4xIDAgMTc2IDBjNDMuMSAwIDgwLjUgMjQuMyA5OS4yIDYwYzE0LjctMTcuMSAzNi41LTI4IDYwLjgtMjhjNDQuMiAwIDgwIDM1LjggODAgODBjMCA1LjUtLjYgMTAuOC0xLjYgMTZjLjUgMCAxLjEgMCAxLjYgMGM1MyAwIDk2IDQzIDk2IDk2cy00MyA5Ni05NiA5Nkw5NiAzMjB6bS02LjggNTJjMS4zLTIuNSAzLjktNCA2LjgtNHM1LjQgMS41IDYuOCA0bDM1LjEgNjQuNmM0LjEgNy41IDYuMiAxNS44IDYuMiAyNC4zbDAgM2MwIDI2LjUtMjEuNSA0OC00OCA0OHMtNDgtMjEuNS00OC00OGwwLTNjMC04LjUgMi4xLTE2LjkgNi4yLTI0LjNMODkuMiAzNzJ6bTE2MCAwYzEuMy0yLjUgMy45LTQgNi44LTRzNS40IDEuNSA2LjggNGwzNS4xIDY0LjZjNC4xIDcuNSA2LjIgMTUuOCA2LjIgMjQuM2wwIDNjMCAyNi41LTIxLjUgNDgtNDggNDhzLTQ4LTIxLjUtNDgtNDhsMC0zYzAtOC41IDIuMS0xNi45IDYuMi0yNC4zTDI0OS4yIDM3MnptMTI0LjkgNjQuNkw0MDkuMiAzNzJjMS4zLTIuNSAzLjktNCA2LjgtNHM1LjQgMS41IDYuOCA0bDM1LjEgNjQuNmM0LjEgNy41IDYuMiAxNS44IDYuMiAyNC4zbDAgM2MwIDI2LjUtMjEuNSA0OC00OCA0OHMtNDgtMjEuNS00OC00OGwwLTNjMC04LjUgMi4xLTE2LjkgNi4yLTI0LjN6XCJdXG59O1xuY29uc3QgZmFCdWlsZGluZ0NpcmNsZVhtYXJrID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2J1aWxkaW5nLWNpcmNsZS14bWFyaycsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTRkNFwiLCBcIk00OCAwQzIxLjUgMCAwIDIxLjUgMCA0OEwwIDQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGw5NiAwIDAtODBjMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OGwwIDgwIDk2IDBjMTUuMSAwIDI4LjUtNi45IDM3LjMtMTcuOEMzNDAuNCA0NjIuMiAzMjAgNDE3LjUgMzIwIDM2OGMwLTU0LjcgMjQuOS0xMDMuNSA2NC0xMzUuOEwzODQgNDhjMC0yNi41LTIxLjUtNDgtNDgtNDhMNDggMHpNNjQgMjQwYzAtOC44IDcuMi0xNiAxNi0xNmwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDMyYzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzJ6bTExMi0xNmwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDMyYzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzJjMC04LjggNy4yLTE2IDE2LTE2em04MCAxNmMwLTguOCA3LjItMTYgMTYtMTZsMzIgMGM4LjggMCAxNiA3LjIgMTYgMTZsMCAzMmMwIDguOC03LjIgMTYtMTYgMTZsLTMyIDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTMyek04MCA5NmwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDMyYzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzJjMC04LjggNy4yLTE2IDE2LTE2em04MCAxNmMwLTguOCA3LjItMTYgMTYtMTZsMzIgMGM4LjggMCAxNiA3LjIgMTYgMTZsMCAzMmMwIDguOC03LjIgMTYtMTYgMTZsLTMyIDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTMyek0yNzIgOTZsMzIgMGM4LjggMCAxNiA3LjIgMTYgMTZsMCAzMmMwIDguOC03LjIgMTYtMTYgMTZsLTMyIDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTMyYzAtOC44IDcuMi0xNiAxNi0xNnpNNDk2IDUxMmExNDQgMTQ0IDAgMSAwIDAtMjg4IDE0NCAxNDQgMCAxIDAgMCAyODh6bTU5LjMtMTgwLjdMNTE4LjYgMzY4bDM2LjcgMzYuN2M2LjIgNi4yIDYuMiAxNi40IDAgMjIuNnMtMTYuNCA2LjItMjIuNiAwTDQ5NiAzOTAuNmwtMzYuNyAzNi43Yy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMHMtNi4yLTE2LjQgMC0yMi42TDQ3My40IDM2OGwtMzYuNy0zNi43Yy02LjItNi4yLTYuMi0xNi40IDAtMjIuNnMxNi40LTYuMiAyMi42IDBMNDk2IDM0NS40bDM2LjctMzYuN2M2LjItNi4yIDE2LjQtNi4yIDIyLjYgMHM2LjIgMTYuNCAwIDIyLjZ6XCJdXG59O1xuY29uc3QgZmFTaGlwID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NoaXAnLFxuICBpY29uOiBbNTc2LCA1MTIsIFsxMjg2NzRdLCBcImYyMWFcIiwgXCJNMTkyIDMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyTDM1MiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgMzIgNDggMGMyNi41IDAgNDggMjEuNSA0OCA0OGwwIDEyOCA0NC40IDE0LjhjMjMuMSA3LjcgMjkuNSAzNy41IDExLjUgNTMuOWwtMTAxIDkyLjZjLTE2LjIgOS40LTM0LjcgMTUuMS01MC45IDE1LjFjLTE5LjYgMC00MC44LTcuNy01OS4yLTIwLjNjLTIyLjEtMTUuNS01MS42LTE1LjUtNzMuNyAwYy0xNy4xIDExLjgtMzggMjAuMy01OS4yIDIwLjNjLTE2LjIgMC0zNC43LTUuNy01MC45LTE1LjFsLTEwMS05Mi42Yy0xOC0xNi41LTExLjYtNDYuMiAxMS41LTUzLjlMOTYgMjQwbDAtMTI4YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4bDQ4IDAgMC0zMnpNMTYwIDIxOC43bDEwNy44LTM1LjljMTMuMS00LjQgMjcuMy00LjQgNDAuNSAwTDQxNiAyMTguN2wwLTkwLjctMjU2IDAgMCA5MC43ek0zMDYuNSA0MjEuOUMzMjkgNDM3LjQgMzU2LjUgNDQ4IDM4NCA0NDhjMjYuOSAwIDU1LjQtMTAuOCA3Ny40LTI2LjFjMCAwIDAgMCAwIDBjMTEuOS04LjUgMjguMS03LjggMzkuMiAxLjdjMTQuNCAxMS45IDMyLjUgMjEgNTAuNiAyNS4yYzE3LjIgNCAyNy45IDIxLjIgMjMuOSAzOC40cy0yMS4yIDI3LjktMzguNCAyMy45Yy0yNC41LTUuNy00NC45LTE2LjUtNTguMi0yNUM0NDkuNSA1MDEuNyA0MTcgNTEyIDM4NCA1MTJjLTMxLjkgMC02MC42LTkuOS04MC40LTE4LjljLTUuOC0yLjctMTEuMS01LjMtMTUuNi03LjdjLTQuNSAyLjQtOS43IDUuMS0xNS42IDcuN2MtMTkuOCA5LTQ4LjUgMTguOS04MC40IDE4LjljLTMzIDAtNjUuNS0xMC4zLTk0LjUtMjUuOGMtMTMuNCA4LjQtMzMuNyAxOS4zLTU4LjIgMjVjLTE3LjIgNC0zNC40LTYuNy0zOC40LTIzLjlzNi43LTM0LjQgMjMuOS0zOC40YzE4LjEtNC4yIDM2LjItMTMuMyA1MC42LTI1LjJjMTEuMS05LjQgMjcuMy0xMC4xIDM5LjItMS43YzAgMCAwIDAgMCAwQzEzNi43IDQzNy4yIDE2NS4xIDQ0OCAxOTIgNDQ4YzI3LjUgMCA1NS0xMC42IDc3LjUtMjYuMWMxMS4xLTcuOSAyNS45LTcuOSAzNyAwelwiXVxufTtcbmNvbnN0IGZhQXJyb3dzRG93blRvTGluZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhcnJvd3MtZG93bi10by1saW5lJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJlNGI4XCIsIFwiTTU0NCA0MTZMMzIgNDE2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDUxMiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyem0yMi42LTEzNy40YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwTDQ4MCAyNzQuNyA0ODAgNjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJsMCAyMTAuNy00MS40LTQxLjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zbDk2IDk2YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDk2LTk2em0tMzIwLTQ1LjNjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwTDE2MCAyNzQuNyAxNjAgNjRjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJsMCAyMTAuN0w1NC42IDIzMy40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM2w5NiA5NmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGw5Ni05NmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3pcIl1cbn07XG5jb25zdCBmYURvd25sb2FkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Rvd25sb2FkJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMDE5XCIsIFwiTTI4OCAzMmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMmwwIDI0Mi43LTczLjQtNzMuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNsMTI4IDEyOGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGwxMjgtMTI4YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwTDI4OCAyNzQuNyAyODggMzJ6TTY0IDM1MmMtMzUuMyAwLTY0IDI4LjctNjQgNjRsMCAzMmMwIDM1LjMgMjguNyA2NCA2NCA2NGwzODQgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTMyYzAtMzUuMy0yOC43LTY0LTY0LTY0bC0xMDEuNSAwLTQ1LjMgNDUuM2MtMjUgMjUtNjUuNSAyNS05MC41IDBMMTY1LjUgMzUyIDY0IDM1MnptMzY4IDU2YTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHpcIl1cbn07XG5jb25zdCBmYUZhY2VHcmluID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZhY2UtZ3JpbicsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyODUxMiwgXCJncmluXCJdLCBcImY1ODBcIiwgXCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTM4OC4xIDMxMi44YzEyLjMtMy44IDI0LjMgNi45IDE5LjMgMTguN0MzODIuNCAzOTAuNiAzMjQuMiA0MzIgMjU2LjMgNDMycy0xMjYuMi00MS40LTE1MS4xLTEwMC41Yy01LTExLjggNy0yMi41IDE5LjMtMTguN2MzOS43IDEyLjIgODQuNSAxOSAxMzEuOCAxOXM5Mi4xLTYuOCAxMzEuOC0xOXpNMTQ0LjQgMjA4YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6bTE5Mi0zMmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJdXG59O1xuY29uc3QgZmFHcmluID0gZmFGYWNlR3JpbjtcbmNvbnN0IGZhRGVsZXRlTGVmdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdkZWxldGUtbGVmdCcsXG4gIGljb246IFs1NzYsIDUxMiwgWzkwMDMsIFwiYmFja3NwYWNlXCJdLCBcImY1NWFcIiwgXCJNNTc2IDEyOGMwLTM1LjMtMjguNy02NC02NC02NEwyMDUuMyA2NGMtMTcgMC0zMy4zIDYuNy00NS4zIDE4LjdMOS40IDIzMy40Yy02IDYtOS40IDE0LjEtOS40IDIyLjZzMy40IDE2LjYgOS40IDIyLjZMMTYwIDQyOS4zYzEyIDEyIDI4LjMgMTguNyA0NS4zIDE4LjdMNTEyIDQ0OGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTI1NnpNMjcxIDE3NWM5LjQtOS40IDI0LjYtOS40IDMzLjkgMGw0NyA0NyA0Ny00N2M5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjlsLTQ3IDQ3IDQ3IDQ3YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45cy0yNC42IDkuNC0zMy45IDBsLTQ3LTQ3LTQ3IDQ3Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45bDQ3LTQ3LTQ3LTQ3Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXpcIl1cbn07XG5jb25zdCBmYUJhY2tzcGFjZSA9IGZhRGVsZXRlTGVmdDtcbmNvbnN0IGZhRXllRHJvcHBlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdleWUtZHJvcHBlcicsXG4gIGljb246IFs1MTIsIDUxMiwgW1wiZXllLWRyb3BwZXItZW1wdHlcIiwgXCJleWVkcm9wcGVyXCJdLCBcImYxZmJcIiwgXCJNMzQxLjYgMjkuMkwyNDAuMSAxMzAuOGwtOS40LTkuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNsMTYwIDE2MGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zbC05LjQtOS40TDQ4Mi44IDE3MC40YzM5LTM5IDM5LTEwMi4yIDAtMTQxLjFzLTEwMi4yLTM5LTE0MS4xIDB6TTU1LjQgMzIzLjNjLTE1IDE1LTIzLjQgMzUuNC0yMy40IDU2LjZsMCA0Mi40TDUuNCA0NjIuMmMtOC41IDEyLjctNi44IDI5LjYgNCA0MC40czI3LjcgMTIuNSA0MC40IDRMODkuNyA0ODBsNDIuNCAwYzIxLjIgMCA0MS42LTguNCA1Ni42LTIzLjRMMzA5LjQgMzM1LjlsLTQ1LjMtNDUuM0wxNDMuNCA0MTEuM2MtMyAzLTcuMSA0LjctMTEuMyA0LjdMOTYgNDE2bDAtMzYuMWMwLTQuMiAxLjctOC4zIDQuNy0xMS4zTDIyMS40IDI0Ny45bC00NS4zLTQ1LjNMNTUuNCAzMjMuM3pcIl1cbn07XG5jb25zdCBmYUV5ZURyb3BwZXJFbXB0eSA9IGZhRXllRHJvcHBlcjtcbmNvbnN0IGZhRXllZHJvcHBlciA9IGZhRXllRHJvcHBlcjtcbmNvbnN0IGZhRmlsZUNpcmNsZUNoZWNrID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZpbGUtY2lyY2xlLWNoZWNrJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJlNWEwXCIsIFwiTTAgNjRDMCAyOC43IDI4LjcgMCA2NCAwTDIyNCAwbDAgMTI4YzAgMTcuNyAxNC4zIDMyIDMyIDMybDEyOCAwIDAgMzguNkMzMTAuMSAyMTkuNSAyNTYgMjg3LjQgMjU2IDM2OGMwIDU5LjEgMjkuMSAxMTEuMyA3My43IDE0My4zYy0zLjIgLjUtNi40IC43LTkuNyAuN0w2NCA1MTJjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgNjR6bTM4NCA2NGwtMTI4IDBMMjU2IDAgMzg0IDEyOHpNMjg4IDM2OGExNDQgMTQ0IDAgMSAxIDI4OCAwIDE0NCAxNDQgMCAxIDEgLTI4OCAwem0yMTEuMy00My4zYy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMEw0MTYgMzg1LjRsLTI4LjctMjguN2MtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBzLTYuMiAxNi40IDAgMjIuNmw0MCA0MGM2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMGw3Mi03MmM2LjItNi4yIDYuMi0xNi40IDAtMjIuNnpcIl1cbn07XG5jb25zdCBmYUZvcndhcmQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZm9yd2FyZCcsXG4gIGljb246IFs1MTIsIDUxMiwgWzkxOTNdLCBcImYwNGVcIiwgXCJNNTIuNSA0NDAuNmMtOS41IDcuOS0yMi44IDkuNy0zNC4xIDQuNFMwIDQyOC40IDAgNDE2TDAgOTZDMCA4My42IDcuMiA3Mi4zIDE4LjQgNjdzMjQuNS0zLjYgMzQuMSA0LjRMMjI0IDIxNC4zbDAgNDEuNyAwIDQxLjdMNTIuNSA0NDAuNnpNMjU2IDM1MmwwLTk2IDAtMTI4IDAtMzJjMC0xMi40IDcuMi0yMy43IDE4LjQtMjlzMjQuNS0zLjYgMzQuMSA0LjRsMTkyIDE2MGM3LjMgNi4xIDExLjUgMTUuMSAxMS41IDI0LjZzLTQuMiAxOC41LTExLjUgMjQuNmwtMTkyIDE2MGMtOS41IDcuOS0yMi44IDkuNy0zNC4xIDQuNHMtMTguNC0xNi42LTE4LjQtMjlsMC02NHpcIl1cbn07XG5jb25zdCBmYU1vYmlsZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtb2JpbGUnLFxuICBpY29uOiBbMzg0LCA1MTIsIFsxMjgyNDEsIFwibW9iaWxlLWFuZHJvaWRcIiwgXCJtb2JpbGUtcGhvbmVcIl0sIFwiZjNjZVwiLCBcIk04MCAwQzQ0LjcgMCAxNiAyOC43IDE2IDY0bDAgMzg0YzAgMzUuMyAyOC43IDY0IDY0IDY0bDIyNCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMzg0YzAtMzUuMy0yOC43LTY0LTY0LTY0TDgwIDB6bTgwIDQzMmw2NCAwYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2bC02NCAwYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2elwiXVxufTtcbmNvbnN0IGZhTW9iaWxlQW5kcm9pZCA9IGZhTW9iaWxlO1xuY29uc3QgZmFNb2JpbGVQaG9uZSA9IGZhTW9iaWxlO1xuY29uc3QgZmFGYWNlTWVoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZhY2UtbWVoJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI4NTI4LCBcIm1laFwiXSwgXCJmMTFhXCIsIFwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0xNzYuNCAxNzZhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0em0xMjggMzJhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHpNMTYwIDMzNmwxOTIgMGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNmwtMTkyIDBjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6XCJdXG59O1xuY29uc3QgZmFNZWggPSBmYUZhY2VNZWg7XG5jb25zdCBmYUFsaWduQ2VudGVyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2FsaWduLWNlbnRlcicsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjAzN1wiLCBcIk0zNTIgNjRjMC0xNy43LTE0LjMtMzItMzItMzJMMTI4IDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDE5MiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMyem05NiAxMjhjMC0xNy43LTE0LjMtMzItMzItMzJMMzIgMTYwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDM4NCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMyek0wIDQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMmwzODQgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkwzMiA0MTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMyek0zNTIgMzIwYzAtMTcuNy0xNC4zLTMyLTMyLTMybC0xOTIgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwxOTIgMGMxNy43IDAgMzItMTQuMyAzMi0zMnpcIl1cbn07XG5jb25zdCBmYUJvb2tTa3VsbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdib29rLXNrdWxsJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXCJib29rLWRlYWRcIl0sIFwiZjZiN1wiLCBcIk0wIDk2QzAgNDMgNDMgMCA5NiAwTDM4NCAwbDMyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCAzMjBjMCAxNy43LTE0LjMgMzItMzIgMzJsMCA2NGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtMzIgMEw5NiA1MTJjLTUzIDAtOTYtNDMtOTYtOTZMMCA5NnpNNjQgNDE2YzAgMTcuNyAxNC4zIDMyIDMyIDMybDI1NiAwIDAtNjRMOTYgMzg0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnpNMzIwIDExMmMwLTM1LjMtMzUuOC02NC04MC02NHMtODAgMjguNy04MCA2NGMwIDIwLjkgMTIuNiAzOS41IDMyIDUxLjJsMCAxMi44YzAgOC44IDcuMiAxNiAxNiAxNmw2NCAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTEyLjhjMTkuNC0xMS43IDMyLTMwLjMgMzItNTEuMnpNMjA4IDk2YTE2IDE2IDAgMSAxIDAgMzIgMTYgMTYgMCAxIDEgMC0zMnptNDggMTZhMTYgMTYgMCAxIDEgMzIgMCAxNiAxNiAwIDEgMSAtMzIgMHpNMTM0LjMgMjA5LjNjLTguMS0zLjUtMTcuNSAuMy0yMSA4LjRzLjMgMTcuNSA4LjQgMjFMMTk5LjQgMjcybC03Ny43IDMzLjNjLTguMSAzLjUtMTEuOSAxMi45LTguNCAyMXMxMi45IDExLjkgMjEgOC40TDI0MCAyODkuNGwxMDUuNyA0NS4zYzguMSAzLjUgMTcuNS0uMyAyMS04LjRzLS4zLTE3LjUtOC40LTIxTDI4MC42IDI3Mmw3Ny43LTMzLjNjOC4xLTMuNSAxMS45LTEyLjkgOC40LTIxcy0xMi45LTExLjktMjEtOC40TDI0MCAyNTQuNiAxMzQuMyAyMDkuM3pcIl1cbn07XG5jb25zdCBmYUJvb2tEZWFkID0gZmFCb29rU2t1bGw7XG5jb25zdCBmYUlkQ2FyZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdpZC1jYXJkJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbNjIxNDcsIFwiZHJpdmVycy1saWNlbnNlXCJdLCBcImYyYzJcIiwgXCJNMCA5Nmw1NzYgMGMwLTM1LjMtMjguNy02NC02NC02NEw2NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2em0wIDMyTDAgNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0bDQ0OCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMjg4TDAgMTI4ek02NCA0MDUuM2MwLTI5LjUgMjMuOS01My4zIDUzLjMtNTMuM2wxMTcuMyAwYzI5LjUgMCA1My4zIDIzLjkgNTMuMyA1My4zYzAgNS45LTQuOCAxMC43LTEwLjcgMTAuN0w3NC43IDQxNmMtNS45IDAtMTAuNy00LjgtMTAuNy0xMC43ek0xNzYgMTkyYTY0IDY0IDAgMSAxIDAgMTI4IDY0IDY0IDAgMSAxIDAtMTI4em0xNzYgMTZjMC04LjggNy4yLTE2IDE2LTE2bDEyOCAwYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2bC0xMjggMGMtOC44IDAtMTYtNy4yLTE2LTE2em0wIDY0YzAtOC44IDcuMi0xNiAxNi0xNmwxMjggMGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNmwtMTI4IDBjLTguOCAwLTE2LTcuMi0xNi0xNnptMCA2NGMwLTguOCA3LjItMTYgMTYtMTZsMTI4IDBjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZsLTEyOCAwYy04LjggMC0xNi03LjItMTYtMTZ6XCJdXG59O1xuY29uc3QgZmFEcml2ZXJzTGljZW5zZSA9IGZhSWRDYXJkO1xuY29uc3QgZmFPdXRkZW50ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ291dGRlbnQnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtcImRlZGVudFwiXSwgXCJmMDNiXCIsIFwiTTAgNjRDMCA0Ni4zIDE0LjMgMzIgMzIgMzJsMzg0IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJMMzIgOTZDMTQuMyA5NiAwIDgxLjcgMCA2NHpNMTkyIDE5MmMwLTE3LjcgMTQuMy0zMiAzMi0zMmwxOTIgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtMTkyIDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyem0zMiA5NmwxOTIgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtMTkyIDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJ6TTAgNDQ4YzAtMTcuNyAxNC4zLTMyIDMyLTMybDM4NCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyTDMyIDQ4MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6TS4yIDI2OC42Yy04LjItNi40LTguMi0xOC45IDAtMjUuM2wxMDEuOS03OS4zYzEwLjUtOC4yIDI1LjgtLjcgMjUuOCAxMi42bDAgMTU4LjZjMCAxMy4zLTE1LjMgMjAuOC0yNS44IDEyLjZMLjIgMjY4LjZ6XCJdXG59O1xuY29uc3QgZmFEZWRlbnQgPSBmYU91dGRlbnQ7XG5jb25zdCBmYUhlYXJ0Q2lyY2xlRXhjbGFtYXRpb24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGVhcnQtY2lyY2xlLWV4Y2xhbWF0aW9uJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJlNGZlXCIsIFwiTTQ3LjYgMzAwLjRMMjI4LjMgNDY5LjFjNy41IDcgMTcuNCAxMC45IDI3LjcgMTAuOXMyMC4yLTMuOSAyNy43LTEwLjlsMi42LTIuNEMyNjcuMiA0MzguNiAyNTYgNDA0LjYgMjU2IDM2OGMwLTk3LjIgNzguOC0xNzYgMTc2LTE3NmMyOC4zIDAgNTUgNi43IDc4LjcgMTguNWMuOS02LjUgMS4zLTEzIDEuMy0xOS42bDAtNS44YzAtNjkuOS01MC41LTEyOS41LTExOS40LTE0MUMzNDcgMzYuNSAzMDAuNiA1MS40IDI2OCA4NEwyNTYgOTYgMjQ0IDg0Yy0zMi42LTMyLjYtNzktNDcuNS0xMjQuNi0zOS45QzUwLjUgNTUuNiAwIDExNS4yIDAgMTg1LjFsMCA1LjhjMCA0MS41IDE3LjIgODEuMiA0Ny42IDEwOS41ek00MzIgNTEyYTE0NCAxNDQgMCAxIDAgMC0yODggMTQ0IDE0NCAwIDEgMCAwIDI4OHptMC05NmEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6bTAtMTQ0YzguOCAwIDE2IDcuMiAxNiAxNmwwIDgwYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2bDAtODBjMC04LjggNy4yLTE2IDE2LTE2elwiXVxufTtcbmNvbnN0IGZhSG91c2UgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaG91c2UnLFxuICBpY29uOiBbNTc2LCA1MTIsIFsxMjc5NjgsIDYzNDk4LCA2MzUwMCwgXCJob21lXCIsIFwiaG9tZS1hbHRcIiwgXCJob21lLWxnLWFsdFwiXSwgXCJmMDE1XCIsIFwiTTU3NS44IDI1NS41YzAgMTgtMTUgMzIuMS0zMiAzMi4xbC0zMiAwIC43IDE2MC4yYzAgMi43LS4yIDUuNC0uNSA4LjFsMCAxNi4yYzAgMjIuMS0xNy45IDQwLTQwIDQwbC0xNiAwYy0xLjEgMC0yLjIgMC0zLjMtLjFjLTEuNCAuMS0yLjggLjEtNC4yIC4xTDQxNiA1MTJsLTI0IDBjLTIyLjEgMC00MC0xNy45LTQwLTQwbDAtMjQgMC02NGMwLTE3LjctMTQuMy0zMi0zMi0zMmwtNjQgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJsMCA2NCAwIDI0YzAgMjIuMS0xNy45IDQwLTQwIDQwbC0yNCAwLTMxLjkgMGMtMS41IDAtMy0uMS00LjUtLjJjLTEuMiAuMS0yLjQgLjItMy42IC4ybC0xNiAwYy0yMi4xIDAtNDAtMTcuOS00MC00MGwwLTExMmMwLS45IDAtMS45IC4xLTIuOGwwLTY5LjctMzIgMGMtMTggMC0zMi0xNC0zMi0zMi4xYzAtOSAzLTE3IDEwLTI0TDI2Ni40IDhjNy03IDE1LTggMjItOHMxNSAyIDIxIDdMNTY0LjggMjMxLjVjOCA3IDEyIDE1IDExIDI0elwiXVxufTtcbmNvbnN0IGZhSG9tZSA9IGZhSG91c2U7XG5jb25zdCBmYUhvbWVBbHQgPSBmYUhvdXNlO1xuY29uc3QgZmFIb21lTGdBbHQgPSBmYUhvdXNlO1xuY29uc3QgZmFDYWxlbmRhcldlZWsgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2FsZW5kYXItd2VlaycsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjc4NFwiLCBcIk0xMjggMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDMyIDEyOCAwIDAtMzJjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMmwwIDMyIDQ4IDBjMjYuNSAwIDQ4IDIxLjUgNDggNDhsMCA0OEwwIDE2MGwwLTQ4QzAgODUuNSAyMS41IDY0IDQ4IDY0bDQ4IDAgMC0zMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNMCAxOTJsNDQ4IDAgMCAyNzJjMCAyNi41LTIxLjUgNDgtNDggNDhMNDggNTEyYy0yNi41IDAtNDgtMjEuNS00OC00OEwwIDE5MnptODAgNjRjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDY0YzAgOC44IDcuMiAxNiAxNiAxNmwyODggMGM4LjggMCAxNi03LjIgMTYtMTZsMC02NGMwLTguOC03LjItMTYtMTYtMTZMODAgMjU2elwiXVxufTtcbmNvbnN0IGZhTGFwdG9wTWVkaWNhbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdsYXB0b3AtbWVkaWNhbCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjgxMlwiLCBcIk02NCA5NmMwLTM1LjMgMjguNy02NCA2NC02NGwzODQgMGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDI1Ni02NCAwIDAtMjU2TDEyOCA5NmwwIDI1Ni02NCAwTDY0IDk2ek0wIDQwMy4yQzAgMzkyLjYgOC42IDM4NCAxOS4yIDM4NGw2MDEuNiAwYzEwLjYgMCAxOS4yIDguNiAxOS4yIDE5LjJjMCA0Mi40LTM0LjQgNzYuOC03Ni44IDc2LjhMNzYuOCA0ODBDMzQuNCA0ODAgMCA0NDUuNiAwIDQwMy4yek0yODggMTYwYzAtOC44IDcuMi0xNiAxNi0xNmwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDQ4IDQ4IDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgMzJjMCA4LjgtNy4yIDE2LTE2IDE2bC00OCAwIDAgNDhjMCA4LjgtNy4yIDE2LTE2IDE2bC0zMiAwYy04LjggMC0xNi03LjItMTYtMTZsMC00OC00OCAwYy04LjggMC0xNi03LjItMTYtMTZsMC0zMmMwLTguOCA3LjItMTYgMTYtMTZsNDggMCAwLTQ4elwiXVxufTtcbmNvbnN0IGZhQiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdiJyxcbiAgaWNvbjogWzMyMCwgNTEyLCBbOThdLCBcIjQyXCIsIFwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZMMCAyNTYgMCA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMTI4IDBjNzAuNyAwIDEyOC01Ny4zIDEyOC0xMjhjMC00Ni41LTI0LjgtODcuMy02Mi0xMDkuN2MxOC43LTIyLjMgMzAtNTEgMzAtODIuM2MwLTcwLjctNTcuMy0xMjgtMTI4LTEyOEw2NCAzMnptOTYgMTkybC05NiAwTDY0IDk2bDk2IDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRzLTI4LjcgNjQtNjQgNjR6TTY0IDI4OGw5NiAwIDMyIDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRzLTI4LjcgNjQtNjQgNjRMNjQgNDE2bDAtMTI4elwiXVxufTtcbmNvbnN0IGZhRmlsZU1lZGljYWwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmlsZS1tZWRpY2FsJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmNDc3XCIsIFwiTTY0IDBDMjguNyAwIDAgMjguNyAwIDY0TDAgNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0bDI1NiAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMjg4LTEyOCAwYy0xNy43IDAtMzItMTQuMy0zMi0zMkwyMjQgMCA2NCAwek0yNTYgMGwwIDEyOCAxMjggMEwyNTYgMHpNMTYwIDI0MGMwLTguOCA3LjItMTYgMTYtMTZsMzIgMGM4LjggMCAxNiA3LjIgMTYgMTZsMCA0OCA0OCAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDMyYzAgOC44LTcuMiAxNi0xNiAxNmwtNDggMCAwIDQ4YzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtNDgtNDggMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzJjMC04LjggNy4yLTE2IDE2LTE2bDQ4IDAgMC00OHpcIl1cbn07XG5jb25zdCBmYURpY2VPbmUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZGljZS1vbmUnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFs5ODU2XSwgXCJmNTI1XCIsIFwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZMMCA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzIwIDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0zMjBjMC0zNS4zLTI4LjctNjQtNjQtNjRMNjQgMzJ6TTIyNCAyMjRhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0elwiXVxufTtcbmNvbnN0IGZhS2l3aUJpcmQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAna2l3aS1iaXJkJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmNTM1XCIsIFwiTTI5MS4yIDM4OC40YzMxLjItMTguOCA2NC43LTM2LjQgMTAxLjEtMzYuNGw1NS43IDBjNC42IDAgOS4xLS4yIDEzLjYtLjdsODUuMyAxMjEuOWM0IDUuNyAxMS4zIDguMiAxNy45IDYuMXMxMS4yLTguMyAxMS4yLTE1LjNsMC0yNDBjMC03MC43LTU3LjMtMTI4LTEyOC0xMjhsLTU1LjcgMGMtMzYuNCAwLTY5LjktMTcuNi0xMDEuMS0zNi40QzI2Mi4zIDQyLjEgMjI4LjMgMzIgMTkyIDMyQzg2IDMyIDAgMTE4IDAgMjI0YzAgNzEuMSAzOC42IDEzMy4xIDk2IDE2Ni4zTDk2IDQ1NmMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0bDAtNDZjMTUuMyAzLjkgMzEuNCA2IDQ4IDZjNS40IDAgMTAuNy0uMiAxNi0uN2wwIDQwLjdjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGwwLTUwLjljMTIuNC00LjQgMjQuMi0xMCAzNS4yLTE2Ljd6TTQ0OCAyMDBhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4elwiXVxufTtcbmNvbnN0IGZhQXJyb3dSaWdodEFycm93TGVmdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhcnJvdy1yaWdodC1hcnJvdy1sZWZ0JyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbODY0NCwgXCJleGNoYW5nZVwiXSwgXCJmMGVjXCIsIFwiTTQzOC42IDE1MC42YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zbC05Ni05NmMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNMMzM4LjcgOTYgMzIgOTZDMTQuMyA5NiAwIDExMC4zIDAgMTI4czE0LjMgMzIgMzIgMzJsMzA2LjcgMC00MS40IDQxLjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBsOTYtOTZ6bS0zMzMuMyAzNTJjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM0wxMDkuMyA0MTYgNDE2IDQxNmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtMzA2LjcgMCA0MS40LTQxLjRjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBsLTk2IDk2Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM2w5NiA5NnpcIl1cbn07XG5jb25zdCBmYUV4Y2hhbmdlID0gZmFBcnJvd1JpZ2h0QXJyb3dMZWZ0O1xuY29uc3QgZmFSb3RhdGVSaWdodCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdyb3RhdGUtcmlnaHQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtcInJlZG8tYWx0XCIsIFwicm90YXRlLWZvcndhcmRcIl0sIFwiZjJmOVwiLCBcIk00NjMuNSAyMjRsOC41IDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRsMC0xMjhjMC05LjctNS44LTE4LjUtMTQuOC0yMi4ycy0xOS4zLTEuNy0yNi4yIDUuMkw0MTMuNCA5Ni42Yy04Ny42LTg2LjUtMjI4LjctODYuMi0zMTUuOCAxYy04Ny41IDg3LjUtODcuNSAyMjkuMyAwIDMxNi44czIyOS4zIDg3LjUgMzE2LjggMGMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMGMtNjIuNSA2Mi41LTE2My44IDYyLjUtMjI2LjMgMHMtNjIuNS0xNjMuOCAwLTIyNi4zYzYyLjItNjIuMiAxNjIuNy02Mi41IDIyNS4zLTFMMzI3IDE4M2MtNi45IDYuOS04LjkgMTcuMi01LjIgMjYuMnMxMi41IDE0LjggMjIuMiAxNC44bDExOS41IDB6XCJdXG59O1xuY29uc3QgZmFSZWRvQWx0ID0gZmFSb3RhdGVSaWdodDtcbmNvbnN0IGZhUm90YXRlRm9yd2FyZCA9IGZhUm90YXRlUmlnaHQ7XG5jb25zdCBmYVV0ZW5zaWxzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3V0ZW5zaWxzJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbMTI3ODYwLCA2MTY4NSwgXCJjdXRsZXJ5XCJdLCBcImYyZTdcIiwgXCJNNDE2IDBDNDAwIDAgMjg4IDMyIDI4OCAxNzZsMCAxMTJjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzIgMCAwIDEyOGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMTI4IDAtMTEyIDAtMjA4YzAtMTcuNy0xNC4zLTMyLTMyLTMyek02NCAxNkM2NCA3LjggNTcuOSAxIDQ5LjcgLjFTMzQuMiA0LjYgMzIuNCAxMi41TDIuMSAxNDguOEMuNyAxNTUuMSAwIDE2MS41IDAgMTY3LjljMCA0NS45IDM1LjEgODMuNiA4MCA4Ny43TDgwIDQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMjI0LjRjNDQuOS00LjEgODAtNDEuOCA4MC04Ny43YzAtNi40LS43LTEyLjgtMi4xLTE5LjFMMTkxLjYgMTIuNWMtMS44LTgtOS4zLTEzLjMtMTcuNC0xMi40UzE2MCA3LjggMTYwIDE2bDAgMTM0LjJjMCA1LjQtNC40IDkuOC05LjggOS44Yy01LjEgMC05LjMtMy45LTkuOC05TDEyNy45IDE0LjZDMTI3LjIgNi4zIDEyMC4zIDAgMTEyIDBzLTE1LjIgNi4zLTE1LjkgMTQuNkw4My43IDE1MWMtLjUgNS4xLTQuNyA5LTkuOCA5Yy01LjQgMC05LjgtNC40LTkuOC05LjhMNjQgMTZ6bTQ4LjMgMTUybC0uMyAwLS4zIDAgLjMtLjcgLjMgLjd6XCJdXG59O1xuY29uc3QgZmFDdXRsZXJ5ID0gZmFVdGVuc2lscztcbmNvbnN0IGZhQXJyb3dVcFdpZGVTaG9ydCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhcnJvdy11cC13aWRlLXNob3J0JyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXCJzb3J0LWFtb3VudC11cFwiXSwgXCJmMTYxXCIsIFwiTTE1MS42IDQyLjRDMTQ1LjUgMzUuOCAxMzcgMzIgMTI4IDMycy0xNy41IDMuOC0yMy42IDEwLjRsLTg4IDk2Yy0xMS45IDEzLTExLjEgMzMuMyAyIDQ1LjJzMzMuMyAxMS4xIDQ1LjItMkw5NiAxNDYuMyA5NiA0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTMwMS43IDMyLjQgMzUuNGMxMS45IDEzIDMyLjIgMTMuOSA0NS4yIDJzMTMuOS0zMi4yIDItNDUuMmwtODgtOTZ6TTMyMCA0ODBsMzIgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtMzIgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMnptMC0xMjhsOTYgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtOTYgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMnptMC0xMjhsMTYwIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTE2MCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyem0wLTEyOGwyMjQgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkwzMjAgMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJ6XCJdXG59O1xuY29uc3QgZmFTb3J0QW1vdW50VXAgPSBmYUFycm93VXBXaWRlU2hvcnQ7XG5jb25zdCBmYU1pbGxTaWduID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21pbGwtc2lnbicsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZTFlZFwiLCBcIk0zMDIuMSA0Mi44YzUuOS0xNi42LTIuNy0zNS0xOS40LTQwLjlzLTM1IDIuNy00MC45IDE5LjRMMjA4IDExNi4xYy01LjcgNC0xMS4xIDguNS0xNiAxMy41QzE3MS43IDEwOC45IDE0My4zIDk2IDExMiA5NmMtMTkuNSAwLTM3LjggNS01My43IDEzLjdDNTIuNSAxMDEuNCA0Mi45IDk2IDMyIDk2QzE0LjMgOTYgMCAxMTAuMyAwIDEyOGwwIDgwTDAgNDE2YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0yMDhjMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OGwwIDQyLjVMODEuOSA0NjkuMmMtNS45IDE2LjYgMi43IDM1IDE5LjQgNDAuOXMzNS0yLjcgNDAuOS0xOS40bDIxLjQtNjBDMTY4LjkgNDQxIDE3OS42IDQ0OCAxOTIgNDQ4YzE3LjcgMCAzMi0xNC4zIDMyLTMybDAtMTU0LjUgMzUuNy0xMDBjMy45LTEgOC4xLTEuNiAxMi4zLTEuNmMyNi41IDAgNDggMjEuNSA0OCA0OGwwIDIwOGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMjA4YzAtNTguMi00NC4zLTEwNi0xMDEuMS0xMTEuNWwxOS4yLTUzLjh6XCJdXG59O1xuY29uc3QgZmFCb3dsUmljZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdib3dsLXJpY2UnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImUyZWJcIiwgXCJNMTc2IDU2YzAtMTMuMyAxMC43LTI0IDI0LTI0bDE2IDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRsLTE2IDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0em0yNCA0OGwxNiAwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0bC0xNiAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0ek01NiAxNzZsMTYgMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGwtMTYgMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNHpNMCAyODMuNEMwIDI2OC4zIDEyLjMgMjU2IDI3LjQgMjU2bDQ1Ny4xIDBjMTUuMSAwIDI3LjQgMTIuMyAyNy40IDI3LjRjMCA3MC41LTQ0LjQgMTMwLjctMTA2LjcgMTU0LjFMNDAzLjUgNDUyYy0yIDE2LTE1LjYgMjgtMzEuOCAyOGwtMjMxLjUgMGMtMTYuMSAwLTI5LjgtMTItMzEuOC0yOGwtMS44LTE0LjRDNDQuNCA0MTQuMSAwIDM1My45IDAgMjgzLjR6TTIyNCAyMDBjMC0xMy4zIDEwLjctMjQgMjQtMjRsMTYgMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGwtMTYgMGMtMTMuMyAwLTI0LTEwLjctMjQtMjR6bS05NiAwYzAtMTMuMyAxMC43LTI0IDI0LTI0bDE2IDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRsLTE2IDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0em0tMjQtOTZsMTYgMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGwtMTYgMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNHptMjE2IDk2YzAtMTMuMyAxMC43LTI0IDI0LTI0bDE2IDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRsLTE2IDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0em0tMjQtOTZsMTYgMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGwtMTYgMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNHptMTIwIDk2YzAtMTMuMyAxMC43LTI0IDI0LTI0bDE2IDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRsLTE2IDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0em0tMjQtOTZsMTYgMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGwtMTYgMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNHpNMjk2IDMybDE2IDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRsLTE2IDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjR6XCJdXG59O1xuY29uc3QgZmFTa3VsbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdza3VsbCcsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyODEyOF0sIFwiZjU0Y1wiLCBcIk00MTYgMzk4LjljNTguNS00MS4xIDk2LTEwNC4xIDk2LTE3NC45QzUxMiAxMDAuMyAzOTcuNCAwIDI1NiAwUzAgMTAwLjMgMCAyMjRjMCA3MC43IDM3LjUgMTMzLjggOTYgMTc0LjljMCAuNCAwIC43IDAgMS4xbDAgNjRjMCAyNi41IDIxLjUgNDggNDggNDhsNDggMCAwLTQ4YzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZsMCA0OCA2NCAwIDAtNDhjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNmwwIDQ4IDQ4IDBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhsMC02NGMwLS40IDAtLjcgMC0xLjF6TTk2IDI1NmE2NCA2NCAwIDEgMSAxMjggMEE2NCA2NCAwIDEgMSA5NiAyNTZ6bTI1Ni02NGE2NCA2NCAwIDEgMSAwIDEyOCA2NCA2NCAwIDEgMSAwLTEyOHpcIl1cbn07XG5jb25zdCBmYVRvd2VyQnJvYWRjYXN0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3Rvd2VyLWJyb2FkY2FzdCcsXG4gIGljb246IFs1NzYsIDUxMiwgW1wiYnJvYWRjYXN0LXRvd2VyXCJdLCBcImY1MTlcIiwgXCJNODAuMyA0NEM2OS44IDY5LjkgNjQgOTguMiA2NCAxMjhzNS44IDU4LjEgMTYuMyA4NGM2LjYgMTYuNC0xLjMgMzUtMTcuNyA0MS43cy0zNS0xLjMtNDEuNy0xNy43QzcuNCAyMDIuNiAwIDE2Ni4xIDAgMTI4UzcuNCA1My40IDIwLjkgMjBDMjcuNiAzLjYgNDYuMi00LjMgNjIuNiAyLjNTODYuOSAyNy42IDgwLjMgNDR6TTU1NS4xIDIwQzU2OC42IDUzLjQgNTc2IDg5LjkgNTc2IDEyOHMtNy40IDc0LjYtMjAuOSAxMDhjLTYuNiAxNi40LTI1LjMgMjQuMy00MS43IDE3LjdTNDg5LjEgMjI4LjQgNDk1LjcgMjEyYzEwLjUtMjUuOSAxNi4zLTU0LjIgMTYuMy04NHMtNS44LTU4LjEtMTYuMy04NEM0ODkuMSAyNy42IDQ5NyA5IDUxMy40IDIuM3MzNSAxLjMgNDEuNyAxNy43ek0zNTIgMTI4YzAgMjMuNy0xMi45IDQ0LjQtMzIgNTUuNEwzMjAgNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtMjk2LjZjLTE5LjEtMTEuMS0zMi0zMS43LTMyLTU1LjRjMC0zNS4zIDI4LjctNjQgNjQtNjRzNjQgMjguNyA2NCA2NHpNMTcwLjYgNzYuOEMxNjMuOCA5Mi40IDE2MCAxMDkuNyAxNjAgMTI4czMuOCAzNS42IDEwLjYgNTEuMmM3LjEgMTYuMi0uMyAzNS4xLTE2LjUgNDIuMXMtMzUuMS0uMy00Mi4xLTE2LjVjLTEwLjMtMjMuNi0xNi00OS42LTE2LTc2LjhzNS43LTUzLjIgMTYtNzYuOGM3LjEtMTYuMiAyNS45LTIzLjYgNDIuMS0xNi41czIzLjYgMjUuOSAxNi41IDQyLjF6TTQ2NCA1MS4yYzEwLjMgMjMuNiAxNiA0OS42IDE2IDc2LjhzLTUuNyA1My4yLTE2IDc2LjhjLTcuMSAxNi4yLTI1LjkgMjMuNi00Mi4xIDE2LjVzLTIzLjYtMjUuOS0xNi41LTQyLjFjNi44LTE1LjYgMTAuNi0zMi45IDEwLjYtNTEuMnMtMy44LTM1LjYtMTAuNi01MS4yYy03LjEtMTYuMiAuMy0zNS4xIDE2LjUtNDIuMXMzNS4xIC4zIDQyLjEgMTYuNXpcIl1cbn07XG5jb25zdCBmYUJyb2FkY2FzdFRvd2VyID0gZmFUb3dlckJyb2FkY2FzdDtcbmNvbnN0IGZhVHJ1Y2tQaWNrdXAgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndHJ1Y2stcGlja3VwJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbMTI4NzYzXSwgXCJmNjNjXCIsIFwiTTM2OC42IDk2bDc2LjggOTZMMjg4IDE5MmwwLTk2IDgwLjYgMHpNMjI0IDgwbDAgMTEyTDY0IDE5MmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJsMCA2NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwzMy4xIDBjLS43IDUuMi0xLjEgMTAuNi0xLjEgMTZjMCA2MS45IDUwLjEgMTEyIDExMiAxMTJzMTEyLTUwLjEgMTEyLTExMmMwLTUuNC0uNC0xMC44LTEuMS0xNmw2Ni4zIDBjLS43IDUuMi0xLjEgMTAuNi0xLjEgMTZjMCA2MS45IDUwLjEgMTEyIDExMiAxMTJzMTEyLTUwLjEgMTEyLTExMmMwLTUuNC0uNC0xMC44LTEuMS0xNmwzMy4xIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsMC02NGMwLTE3LjctMTQuMy0zMi0zMi0zMmwtNDguNiAwTDQxOC42IDU2Yy0xMi4xLTE1LjItMzAuNS0yNC01MC0yNEwyNzIgMzJjLTI2LjUgMC00OCAyMS41LTQ4IDQ4em0wIDI4OGE0OCA0OCAwIDEgMSAtOTYgMCA0OCA0OCAwIDEgMSA5NiAwem0yODggMGE0OCA0OCAwIDEgMSAtOTYgMCA0OCA0OCAwIDEgMSA5NiAwelwiXVxufTtcbmNvbnN0IGZhVXBMb25nID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3VwLWxvbmcnLFxuICBpY29uOiBbMzIwLCA1MTIsIFtcImxvbmctYXJyb3ctYWx0LXVwXCJdLCBcImYzMGNcIiwgXCJNMzE4IDE3Ny41YzMuOC04LjggMi0xOS00LjYtMjZsLTEzNi0xNDRDMTcyLjkgMi43IDE2Ni42IDAgMTYwIDBzLTEyLjkgMi43LTE3LjQgNy41bC0xMzYgMTQ0Yy02LjYgNy04LjQgMTcuMi00LjYgMjZTMTQuNCAxOTIgMjQgMTkybDcyIDAgMCAyODhjMCAxNy43IDE0LjMgMzIgMzIgMzJsNjQgMGMxNy43IDAgMzItMTQuMyAzMi0zMmwwLTI4OCA3MiAwYzkuNiAwIDE4LjItNS43IDIyLTE0LjV6XCJdXG59O1xuY29uc3QgZmFMb25nQXJyb3dBbHRVcCA9IGZhVXBMb25nO1xuY29uc3QgZmFTdG9wID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3N0b3AnLFxuICBpY29uOiBbMzg0LCA1MTIsIFs5MjA5XSwgXCJmMDRkXCIsIFwiTTAgMTI4QzAgOTIuNyAyOC43IDY0IDY0IDY0SDMyMGMzNS4zIDAgNjQgMjguNyA2NCA2NFYzODRjMCAzNS4zLTI4LjcgNjQtNjQgNjRINjRjLTM1LjMgMC02NC0yOC43LTY0LTY0VjEyOHpcIl1cbn07XG5jb25zdCBmYUNvZGVNZXJnZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjb2RlLW1lcmdlJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMzg3XCIsIFwiTTgwIDU2YTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHptMzIuNCA5Ny4yYzI4LTEyLjQgNDcuNi00MC41IDQ3LjYtNzMuMmMwLTQ0LjItMzUuOC04MC04MC04MFMwIDM1LjggMCA4MGMwIDMyLjggMTkuNyA2MSA0OCA3My4zbDAgMjA1LjNDMTkuNyAzNzEgMCAzOTkuMiAwIDQzMmMwIDQ0LjIgMzUuOCA4MCA4MCA4MHM4MC0zNS44IDgwLTgwYzAtMzIuOC0xOS43LTYxLTQ4LTczLjNsMC04Ni42YzI2LjcgMjAuMSA2MCAzMiA5NiAzMmw4Ni43IDBjMTIuMyAyOC4zIDQwLjUgNDggNzMuMyA0OGM0NC4yIDAgODAtMzUuOCA4MC04MHMtMzUuOC04MC04MC04MGMtMzIuOCAwLTYxIDE5LjctNzMuMyA0OEwyMDggMjQwYy00OS45IDAtOTEtMzguMS05NS42LTg2Ljh6TTgwIDQwOGEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6TTM0NCAyNzJhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHpcIl1cbn07XG5jb25zdCBmYVVwbG9hZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd1cGxvYWQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwOTNcIiwgXCJNMjg4IDEwOS4zTDI4OCAzNTJjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC0yNDIuNy03My40IDczLjRjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwcy0xMi41LTMyLjggMC00NS4zbDEyOC0xMjhjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDBsMTI4IDEyOGMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM3MtMzIuOCAxMi41LTQ1LjMgMEwyODggMTA5LjN6TTY0IDM1MmwxMjggMGMwIDM1LjMgMjguNyA2NCA2NCA2NHM2NC0yOC43IDY0LTY0bDEyOCAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMzJjMCAzNS4zLTI4LjcgNjQtNjQgNjRMNjQgNTEyYy0zNS4zIDAtNjQtMjguNy02NC02NGwwLTMyYzAtMzUuMyAyOC43LTY0IDY0LTY0ek00MzIgNDU2YTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHpcIl1cbn07XG5jb25zdCBmYUh1cnJpY2FuZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdodXJyaWNhbmUnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImY3NTFcIiwgXCJNMCAyMDhDMCAxMDQuNCA3NS43IDE4LjUgMTc0LjkgMi42QzE4NCAxLjIgMTkyIDguNiAxOTIgMTcuOWwwIDYzLjNjMCA4LjQgNi41IDE1LjMgMTQuNyAxNi41QzMwNyAxMTIuNSAzODQgMTk5IDM4NCAzMDMuNGMwIDEwMy42LTc1LjcgMTg5LjUtMTc0LjkgMjA1LjRjLTkuMiAxLjUtMTcuMS01LjktMTcuMS0xNS4ybDAtNjMuM2MwLTguNC02LjUtMTUuMy0xNC43LTE2LjVDNzcgMzk4LjkgMCAzMTIuNCAwIDIwOHptMjg4IDQ4QTk2IDk2IDAgMSAwIDk2IDI1NmE5NiA5NiAwIDEgMCAxOTIgMHptLTk2LTMyYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIl1cbn07XG5jb25zdCBmYU1vdW5kID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21vdW5kJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJlNTJkXCIsIFwiTTE0NC4xIDE3OS4yQzE3My44IDEyNy43IDIyOC42IDk2IDI4OCA5NnMxMTQuMiAzMS43IDE0My45IDgzLjJMNTQwLjQgMzY4YzEyLjMgMjEuMy0zLjEgNDgtMjcuNyA0OEg2My4zYy0yNC42IDAtNDAtMjYuNi0yNy43LTQ4TDE0NC4xIDE3OS4yelwiXVxufTtcbmNvbnN0IGZhVG9pbGV0UG9ydGFibGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndG9pbGV0LXBvcnRhYmxlJyxcbiAgaWNvbjogWzMyMCwgNTEyLCBbXSwgXCJlNTgzXCIsIFwiTTAgMzJMMCA2NGwzMjAgMCAwLTMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyTDMyIDBDMTQuMyAwIDAgMTQuMyAwIDMyek0yNCA5NkwwIDk2bDAgMjRMMCA0ODhjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGwwLTggMjI0IDAgMCA4YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRsMC0zNjggMC0yNC0yNCAwTDI0IDk2ek0yNTYgMjQwbDAgNjRjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZsMC02NGMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2elwiXVxufTtcbmNvbnN0IGZhQ29tcGFjdERpc2MgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY29tcGFjdC1kaXNjJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI4MTkxLCAxMjgxOTIsIDEyODQ0MF0sIFwiZjUxZlwiLCBcIk0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6bTI1NiAzMmEzMiAzMiAwIDEgMSAwLTY0IDMyIDMyIDAgMSAxIDAgNjR6bS05Ni0zMmE5NiA5NiAwIDEgMCAxOTIgMCA5NiA5NiAwIDEgMCAtMTkyIDB6TTk2IDI0MGMwLTM1IDE3LjUtNzEuMSA0NS4yLTk4LjhTMjA1IDk2IDI0MCA5NmM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNmMtNDUuNCAwLTg5LjIgMjIuMy0xMjEuNSA1NC41UzY0IDE5NC42IDY0IDI0MGMwIDguOCA3LjIgMTYgMTYgMTZzMTYtNy4yIDE2LTE2elwiXVxufTtcbmNvbnN0IGZhRmlsZUFycm93RG93biA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmaWxlLWFycm93LWRvd24nLFxuICBpY29uOiBbMzg0LCA1MTIsIFtcImZpbGUtZG93bmxvYWRcIl0sIFwiZjU2ZFwiLCBcIk02NCAwQzI4LjcgMCAwIDI4LjcgMCA2NEwwIDQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NGwyNTYgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTI4OC0xMjggMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJMMjI0IDAgNjQgMHpNMjU2IDBsMCAxMjggMTI4IDBMMjU2IDB6TTIxNiAyMzJsMCAxMDIuMSAzMS0zMWM5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjlsLTcyIDcyYy05LjQgOS40LTI0LjYgOS40LTMzLjkgMGwtNzItNzJjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMGwzMSAzMUwxNjggMjMyYzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjR6XCJdXG59O1xuY29uc3QgZmFGaWxlRG93bmxvYWQgPSBmYUZpbGVBcnJvd0Rvd247XG5jb25zdCBmYUNhcmF2YW4gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2FyYXZhbicsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjhmZlwiLCBcIk0wIDExMkMwIDY3LjggMzUuOCAzMiA4MCAzMmwzMzYgMGM4OC40IDAgMTYwIDcxLjYgMTYwIDE2MGwwIDE2MCAzMiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC0zMiAwLTI4OCAwYzAgNTMtNDMgOTYtOTYgOTZzLTk2LTQzLTk2LTk2bC0xNiAwYy00NC4yIDAtODAtMzUuOC04MC04MEwwIDExMnpNMzIwIDM1MmwxMjggMCAwLTk2LTMyIDBjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZsMzIgMCAwLTY0YzAtMTcuNy0xNC4zLTMyLTMyLTMybC02NCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMmwwIDE5MnpNOTYgMTI4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMmwwIDY0YzAgMTcuNyAxNC4zIDMyIDMyIDMybDEyOCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMybDAtNjRjMC0xNy43LTE0LjMtMzItMzItMzJMOTYgMTI4em05NiAzMzZhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2elwiXVxufTtcbmNvbnN0IGZhU2hpZWxkQ2F0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NoaWVsZC1jYXQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImU1NzJcIiwgXCJNMjY5LjQgMi45QzI2NS4yIDEgMjYwLjcgMCAyNTYgMHMtOS4yIDEtMTMuNCAyLjlMNTQuMyA4Mi44Yy0yMiA5LjMtMzguNCAzMS0zOC4zIDU3LjJjLjUgOTkuMiA0MS4zIDI4MC43IDIxMy42IDM2My4yYzE2LjcgOCAzNi4xIDggNTIuOCAwQzQ1NC43IDQyMC43IDQ5NS41IDIzOS4yIDQ5NiAxNDBjLjEtMjYuMi0xNi4zLTQ3LjktMzguMy01Ny4yTDI2OS40IDIuOXpNMTYwIDE1NC40YzAtNS44IDQuNy0xMC40IDEwLjQtMTAuNGwuMiAwYzMuNCAwIDYuNSAxLjYgOC41IDQuM2w0MCA1My4zYzMgNCA3LjggNi40IDEyLjggNi40bDQ4IDBjNSAwIDkuOC0yLjQgMTIuOC02LjRsNDAtNTMuM2MyLTIuNyA1LjItNC4zIDguNS00LjNsLjIgMGM1LjggMCAxMC40IDQuNyAxMC40IDEwLjRMMzUyIDI3MmMwIDUzLTQzIDk2LTk2IDk2cy05Ni00My05Ni05NmwwLTExNy42ek0yMTYgMjg4YTE2IDE2IDAgMSAwIDAtMzIgMTYgMTYgMCAxIDAgMCAzMnptOTYtMTZhMTYgMTYgMCAxIDAgLTMyIDAgMTYgMTYgMCAxIDAgMzIgMHpcIl1cbn07XG5jb25zdCBmYUJvbHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYm9sdCcsXG4gIGljb246IFs0NDgsIDUxMiwgWzk4ODksIFwiemFwXCJdLCBcImYwZTdcIiwgXCJNMzQ5LjQgNDQuNmM1LjktMTMuNyAxLjUtMjkuNy0xMC42LTM4LjVzLTI4LjYtOC0zOS45IDEuOGwtMjU2IDIyNGMtMTAgOC44LTEzLjYgMjIuOS04LjkgMzUuM1M1MC43IDI4OCA2NCAyODhsMTExLjUgMEw5OC42IDQ2Ny40Yy01LjkgMTMuNy0xLjUgMjkuNyAxMC42IDM4LjVzMjguNiA4IDM5LjktMS44bDI1Ni0yMjRjMTAtOC44IDEzLjYtMjIuOSA4LjktMzUuM3MtMTYuNi0yMC43LTMwLTIwLjdsLTExMS41IDBMMzQ5LjQgNDQuNnpcIl1cbn07XG5jb25zdCBmYVphcCA9IGZhQm9sdDtcbmNvbnN0IGZhR2xhc3NXYXRlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdnbGFzcy13YXRlcicsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZTRmNFwiLCBcIk0zMiAwQzIzLjEgMCAxNC42IDMuNyA4LjYgMTAuMlMtLjYgMjUuNCAuMSAzNC4zTDI4LjkgNDM3LjdjMyA0MS45IDM3LjggNzQuMyA3OS44IDc0LjNsMTY2LjYgMGM0MiAwIDc2LjgtMzIuNCA3OS44LTc0LjNMMzgzLjkgMzQuM2MuNi04LjktMi40LTE3LjYtOC41LTI0LjFTMzYwLjkgMCAzNTIgMEwzMiAwek03MyAxNTYuNUw2Ni40IDY0bDI1MS4zIDBMMzExIDE1Ni41bC0yNC4yIDEyLjFjLTE5LjQgOS43LTQyLjIgOS43LTYxLjYgMGMtMjAuOS0xMC40LTQ1LjUtMTAuNC02Ni40IDBjLTE5LjQgOS43LTQyLjIgOS43LTYxLjYgMEw3MyAxNTYuNXpcIl1cbn07XG5jb25zdCBmYU9pbFdlbGwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnb2lsLXdlbGwnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImU1MzJcIiwgXCJNNTI4LjMgNjEuM2MtMTEuNC00Mi43LTU1LjMtNjgtOTgtNTYuNkw0MTQuOSA4LjhDMzk3LjggMTMuNCAzODcuNyAzMSAzOTIuMyA0OGwyNC41IDkxLjRMMzA4LjUgMTY3LjVsLTYuMy0xOC4xQzI5Ny43IDEzNi42IDI4NS42IDEyOCAyNzIgMTI4cy0yNS43IDguNi0zMC4yIDIxLjRsLTEzLjYgMzlMOTYgMjIyLjYgOTYgMTg0YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0bDAgMjY0LTE2IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsNTEyIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTEzNy4zIDBMMzQwIDI1Ny41bC02Mi4yIDE2LjFMMzA1LjMgMzUybC02Ni42IDBMMjY1IDI3N2wtNzQuNiAxOS4zTDEzNy4zIDQ0OCA5NiA0NDhsMC0xNTkuMiAzMzcuNC04Ny41IDI1LjIgOTRjNC42IDE3LjEgMjIuMSAyNy4yIDM5LjIgMjIuNmwxNS41LTQuMWM0Mi43LTExLjQgNjgtNTUuMyA1Ni42LTk4TDUyOC4zIDYxLjN6TTIwNS4xIDQ0OGwxMS4yLTMyIDExMS40IDAgMTEuMiAzMi0xMzMuOCAwelwiXVxufTtcbmNvbnN0IGZhVmF1bHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndmF1bHQnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImUyYzVcIiwgXCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRMMCA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMTYgMCAxNiAzMiA2NCAwIDE2LTMyIDIyNCAwIDE2IDMyIDY0IDAgMTYtMzIgMTYgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTM1MmMwLTM1LjMtMjguNy02NC02NC02NEw2NCAwek0yMjQgMzIwYTgwIDgwIDAgMSAwIDAtMTYwIDgwIDgwIDAgMSAwIDAgMTYwem0wLTI0MGExNjAgMTYwIDAgMSAxIDAgMzIwIDE2MCAxNjAgMCAxIDEgMC0zMjB6TTQ4MCAyMjEuM0w0ODAgMzM2YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2bDAtMTE0LjdjLTE4LjYtNi42LTMyLTI0LjQtMzItNDUuM2MwLTI2LjUgMjEuNS00OCA0OC00OHM0OCAyMS41IDQ4IDQ4YzAgMjAuOS0xMy40IDM4LjctMzIgNDUuM3pcIl1cbn07XG5jb25zdCBmYU1hcnMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbWFycycsXG4gIGljb246IFs0NDgsIDUxMiwgWzk3OTRdLCBcImYyMjJcIiwgXCJNMjg5LjggNDYuOGMzLjctOSAxMi41LTE0LjggMjIuMi0xNC44bDExMiAwYzEzLjMgMCAyNCAxMC43IDI0IDI0bDAgMTEyYzAgOS43LTUuOCAxOC41LTE0LjggMjIuMnMtMTkuMyAxLjctMjYuMi01LjJsLTMzLjQtMzMuNEwzMjEgMjA0LjJjMTkuNSAyOC40IDMxIDYyLjcgMzEgOTkuOGMwIDk3LjItNzguOCAxNzYtMTc2IDE3NlMwIDQwMS4yIDAgMzA0czc4LjgtMTc2IDE3Ni0xNzZjMzcgMCA3MS40IDExLjQgOTkuOCAzMWw1Mi42LTUyLjZMMjk1IDczYy02LjktNi45LTguOS0xNy4yLTUuMi0yNi4yek00MDAgODBzMCAwIDAgMHMwIDAgMCAwczAgMCAwIDB6TTE3NiA0MTZhMTEyIDExMiAwIDEgMCAwLTIyNCAxMTIgMTEyIDAgMSAwIDAgMjI0elwiXVxufTtcbmNvbnN0IGZhVG9pbGV0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RvaWxldCcsXG4gIGljb246IFs0NDgsIDUxMiwgWzEyODcwMV0sIFwiZjdkOFwiLCBcIk0yNCAwQzEwLjcgMCAwIDEwLjcgMCAyNFMxMC43IDQ4IDI0IDQ4bDggMCAwIDE0OC45Yy0xLjkgMS40LTMuOCAyLjktNS42IDQuNEMxMC45IDIxNC41IDAgMjMyLjkgMCAyNTZjMCA0Ni45IDE0LjMgODQuMSAzNyAxMTIuNWMxNC4yIDE3LjcgMzEuMSAzMS4zIDQ4LjUgNDEuOEw2NS42IDQ2OS45Yy0zLjMgOS44LTEuNiAyMC41IDQuNCAyOC44czE1LjcgMTMuMyAyNiAxMy4zbDI1NiAwYzEwLjMgMCAxOS45LTQuOSAyNi0xMy4zczcuNy0xOS4xIDQuNC0yOC44bC0xOS44LTU5LjVjMTcuNC0xMC41IDM0LjMtMjQuMSA0OC41LTQxLjhjMjIuNy0yOC40IDM3LTY1LjUgMzctMTEyLjVjMC0yMy4xLTEwLjktNDEuNS0yNi40LTU0LjZjLTEuOC0xLjUtMy43LTMtNS42LTQuNEw0MTYgNDhsOCAwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0TDI0IDB6TTM4NCAyNTYuM2MwIDEtLjMgMi42LTMuOCA1LjZjLTQuOCA0LjEtMTQgOS0yOS4zIDEzLjRDMzIwLjUgMjg0IDI3Ni4xIDI4OCAyMjQgMjg4cy05Ni41LTQtMTI2LjktMTIuOGMtMTUuMy00LjQtMjQuNS05LjMtMjkuMy0xMy40Yy0zLjUtMy0zLjgtNC42LTMuOC01LjZsMC0uM2MwIDAgMC0uMSAwLS4xYzAtMSAwLTIuNSAzLjgtNS44YzQuOC00LjEgMTQtOSAyOS4zLTEzLjRDMTI3LjUgMjI4IDE3MS45IDIyNCAyMjQgMjI0czk2LjUgNCAxMjYuOSAxMi44YzE1LjMgNC40IDI0LjUgOS4zIDI5LjMgMTMuNGMzLjggMy4yIDMuOCA0LjggMy44IDUuOGMwIDAgMCAuMSAwIC4xbDAgLjN6TTMyOC4yIDM4NGwtLjIgLjUgMC0uNSAuMiAwek0xMTIgNjRsMzIgMGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnpcIl1cbn07XG5jb25zdCBmYVBsYW5lQ2lyY2xlWG1hcmsgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGxhbmUtY2lyY2xlLXhtYXJrJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlNTU3XCIsIFwiTTI1NiAwYy0zNSAwLTY0IDU5LjUtNjQgOTMuN2wwIDg0LjZMOC4xIDI4My40Yy01IDIuOC04LjEgOC4yLTguMSAxMy45bDAgNjUuNWMwIDEwLjYgMTAuMiAxOC4zIDIwLjQgMTUuNGwxNzEuNi00OSAwIDcwLjktNTcuNiA0My4yYy00IDMtNi40IDcuOC02LjQgMTIuOGwwIDQyYzAgNy44IDYuMyAxNCAxNCAxNGMxLjMgMCAyLjYtLjIgMy45LS41TDI1NiA0ODBsMTEwLjEgMzEuNWMxLjMgLjQgMi42IC41IDMuOSAuNWM2IDAgMTEuMS0zLjcgMTMuMS05QzM0NC41IDQ3MC43IDMyMCA0MjIuMiAzMjAgMzY4YzAtNjAuNiAzMC42LTExNCA3Ny4xLTE0NS42TDMyMCAxNzguM2wwLTg0LjZDMzIwIDU5LjUgMjkyIDAgMjU2IDB6TTQ5NiA1MTJhMTQ0IDE0NCAwIDEgMCAwLTI4OCAxNDQgMTQ0IDAgMSAwIDAgMjg4em01OS4zLTE4MC43TDUxOC42IDM2OGwzNi43IDM2LjdjNi4yIDYuMiA2LjIgMTYuNCAwIDIyLjZzLTE2LjQgNi4yLTIyLjYgMEw0OTYgMzkwLjZsLTM2LjcgMzYuN2MtNi4yIDYuMi0xNi40IDYuMi0yMi42IDBzLTYuMi0xNi40IDAtMjIuNkw0NzMuNCAzNjhsLTM2LjctMzYuN2MtNi4yLTYuMi02LjItMTYuNCAwLTIyLjZzMTYuNC02LjIgMjIuNiAwTDQ5NiAzNDUuNGwzNi43LTM2LjdjNi4yLTYuMiAxNi40LTYuMiAyMi42IDBzNi4yIDE2LjQgMCAyMi42elwiXVxufTtcbmNvbnN0IGZhWWVuU2lnbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd5ZW4tc2lnbicsXG4gIGljb246IFszMjAsIDUxMiwgWzE2NSwgXCJjbnlcIiwgXCJqcHlcIiwgXCJybWJcIiwgXCJ5ZW5cIl0sIFwiZjE1N1wiLCBcIk01OC42IDQ2LjNDNDguOCAzMS41IDI5IDI3LjYgMTQuMiAzNy40Uy00LjQgNjcgNS40IDgxLjhMMTAwLjIgMjI0IDQ4IDIyNGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmw4MCAwIDAgMzItODAgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmw4MCAwIDAgNjRjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTY0IDgwIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTgwIDAgMC0zMiA4MCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC01Mi4yIDBMMzE0LjYgODEuOGM5LjgtMTQuNyA1LjgtMzQuNi04LjktNDQuNHMtMzQuNi01LjgtNDQuNCA4LjlMMTYwIDE5OC4zIDU4LjYgNDYuM3pcIl1cbn07XG5jb25zdCBmYUNueSA9IGZhWWVuU2lnbjtcbmNvbnN0IGZhSnB5ID0gZmFZZW5TaWduO1xuY29uc3QgZmFSbWIgPSBmYVllblNpZ247XG5jb25zdCBmYVllbiA9IGZhWWVuU2lnbjtcbmNvbnN0IGZhUnVibGVTaWduID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3J1YmxlLXNpZ24nLFxuICBpY29uOiBbMzg0LCA1MTIsIFs4MzgxLCBcInJvdWJsZVwiLCBcInJ1YlwiLCBcInJ1YmxlXCJdLCBcImYxNThcIiwgXCJNOTYgMzJDNzguMyAzMiA2NCA0Ni4zIDY0IDY0bDAgMTkyLTMyIDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsMzIgMCAwIDMyLTMyIDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsMzIgMCAwIDMyYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0zMiAxNjAgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtMTYwIDAgMC0zMiAxMTIgMGM3OS41IDAgMTQ0LTY0LjUgMTQ0LTE0NHMtNjQuNS0xNDQtMTQ0LTE0NEw5NiAzMnpNMjQwIDI1NmwtMTEyIDAgMC0xNjAgMTEyIDBjNDQuMiAwIDgwIDM1LjggODAgODBzLTM1LjggODAtODAgODB6XCJdXG59O1xuY29uc3QgZmFSb3VibGUgPSBmYVJ1YmxlU2lnbjtcbmNvbnN0IGZhUnViID0gZmFSdWJsZVNpZ247XG5jb25zdCBmYVJ1YmxlID0gZmFSdWJsZVNpZ247XG5jb25zdCBmYVN1biA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzdW4nLFxuICBpY29uOiBbNTEyLCA1MTIsIFs5NzI4XSwgXCJmMTg1XCIsIFwiTTM2MS41IDEuMmM1IDIuMSA4LjYgNi42IDkuNiAxMS45TDM5MSAxMjFsMTA3LjkgMTkuOGM1LjMgMSA5LjggNC42IDExLjkgOS42czEuNSAxMC43LTEuNiAxNS4yTDQ0Ni45IDI1Nmw2Mi4zIDkwLjNjMy4xIDQuNSAzLjcgMTAuMiAxLjYgMTUuMnMtNi42IDguNi0xMS45IDkuNkwzOTEgMzkxIDM3MS4xIDQ5OC45Yy0xIDUuMy00LjYgOS44LTkuNiAxMS45cy0xMC43IDEuNS0xNS4yLTEuNkwyNTYgNDQ2LjlsLTkwLjMgNjIuM2MtNC41IDMuMS0xMC4yIDMuNy0xNS4yIDEuNnMtOC42LTYuNi05LjYtMTEuOUwxMjEgMzkxIDEzLjEgMzcxLjFjLTUuMy0xLTkuOC00LjYtMTEuOS05LjZzLTEuNS0xMC43IDEuNi0xNS4yTDY1LjEgMjU2IDIuOCAxNjUuN2MtMy4xLTQuNS0zLjctMTAuMi0xLjYtMTUuMnM2LjYtOC42IDExLjktOS42TDEyMSAxMjEgMTQwLjkgMTMuMWMxLTUuMyA0LjYtOS44IDkuNi0xMS45czEwLjctMS41IDE1LjIgMS42TDI1NiA2NS4xIDM0Ni4zIDIuOGM0LjUtMy4xIDEwLjItMy43IDE1LjItMS42ek0xNjAgMjU2YTk2IDk2IDAgMSAxIDE5MiAwIDk2IDk2IDAgMSAxIC0xOTIgMHptMjI0IDBhMTI4IDEyOCAwIDEgMCAtMjU2IDAgMTI4IDEyOCAwIDEgMCAyNTYgMHpcIl1cbn07XG5jb25zdCBmYUd1aXRhciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdndWl0YXInLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY3YTZcIiwgXCJNNDY1IDdjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwTDM4MyA1NWMtMi40IDIuNC00LjMgNS4zLTUuNSA4LjVsLTE1LjQgNDEtNzcuNSA3Ny42Yy00NS4xLTI5LjQtOTkuMy0zMC4yLTEzMSAxLjZjLTExIDExLTE4IDI0LjYtMjEuNCAzOS42Yy0zLjcgMTYuNi0xOS4xIDMwLjctMzYuMSAzMS42Yy0yNS42IDEuMy00OS4zIDEwLjctNjcuMyAyOC42Qy0xNiAzMjguNC03LjYgNDA5LjQgNDcuNSA0NjQuNXMxMzYuMSA2My41IDE4MC45IDE4LjdjMTcuOS0xNy45IDI3LjQtNDEuNyAyOC42LTY3LjNjLjktMTcgMTUtMzIuMyAzMS42LTM2LjFjMTUtMy40IDI4LjYtMTAuNSAzOS42LTIxLjRjMzEuOC0zMS44IDMxLTg1LjkgMS42LTEzMWw3Ny42LTc3LjYgNDEtMTUuNGMzLjItMS4yIDYuMS0zLjEgOC41LTUuNWw0OC00OGM5LjQtOS40IDkuNC0yNC42IDAtMzMuOUw0NjUgN3pNMjA4IDI1NmE0OCA0OCAwIDEgMSAwIDk2IDQ4IDQ4IDAgMSAxIDAtOTZ6XCJdXG59O1xuY29uc3QgZmFGYWNlTGF1Z2hXaW5rID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZhY2UtbGF1Z2gtd2luaycsXG4gIGljb246IFs1MTIsIDUxMiwgW1wibGF1Z2gtd2lua1wiXSwgXCJmNTljXCIsIFwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek05Ni44IDMxNC4xYy0zLjgtMTMuNyA3LjQtMjYuMSAyMS42LTI2LjFsMjc1LjIgMGMxNC4yIDAgMjUuNSAxMi40IDIxLjYgMjYuMUMzOTYuMiAzODIgMzMyLjEgNDMyIDI1NiA0MzJzLTE0MC4yLTUwLTE1OS4yLTExNy45ek0xNDQuNCAxOTJhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMTU2LjQgMjUuNmMtNS4zIDcuMS0xNS4zIDguNS0yMi40IDMuMnMtOC41LTE1LjMtMy4yLTIyLjRjMzAuNC00MC41IDkxLjItNDAuNSAxMjEuNiAwYzUuMyA3LjEgMy45IDE3LjEtMy4yIDIyLjRzLTE3LjEgMy45LTIyLjQtMy4yYy0xNy42LTIzLjUtNTIuOC0yMy41LTcwLjQgMHpcIl1cbn07XG5jb25zdCBmYUxhdWdoV2luayA9IGZhRmFjZUxhdWdoV2luaztcbmNvbnN0IGZhSG9yc2VIZWFkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hvcnNlLWhlYWQnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY3YWJcIiwgXCJNNjQgNDY0bDAtMTQ3LjFjMC0xMDguNCA2OC4zLTIwNS4xIDE3MC41LTI0MS4zTDQwNC4yIDE1LjVDNDI1LjYgNy45IDQ0OCAyMy44IDQ0OCA0Ni40YzAgMTEtNS41IDIxLjItMTQuNiAyNy4zTDQwMCA5NmM0OC4xIDAgOTEuMiAyOS44IDEwOC4xIDc0LjlsNDguNiAxMjkuNWMxMS44IDMxLjQgNC4xIDY2LjgtMTkuNiA5MC41Yy0xNiAxNi0zNy44IDI1LjEtNjAuNSAyNS4xbC0zLjQgMGMtMjYuMSAwLTUwLjktMTEuNi02Ny42LTMxLjdsLTMyLjMtMzguN2MtMTEuNyA0LjEtMjQuMiA2LjQtMzcuMyA2LjRjMCAwIDAgMC0uMSAwYzAgMCAwIDAgMCAwYy02LjMgMC0xMi41LS41LTE4LjYtMS41Yy0zLjYtLjYtNy4yLTEuNC0xMC43LTIuM2MwIDAgMCAwIDAgMGMtMjguOS03LjgtNTMuMS0yNi44LTY3LjgtNTIuMmMtNC40LTcuNi0xNC4yLTEwLjMtMjEuOS01LjhzLTEwLjMgMTQuMi01LjggMjEuOWMyNCA0MS41IDY4LjMgNzAgMTE5LjMgNzEuOWw0Ny4yIDcwLjhjNCA2LjEgNi4yIDEzLjIgNi4yIDIwLjRjMCAyMC4zLTE2LjUgMzYuOC0zNi44IDM2LjhMMTEyIDUxMmMtMjYuNSAwLTQ4LTIxLjUtNDgtNDh6TTM5MiAyMjRhMjQgMjQgMCAxIDAgMC00OCAyNCAyNCAwIDEgMCAwIDQ4elwiXVxufTtcbmNvbnN0IGZhQm9yZUhvbGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYm9yZS1ob2xlJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJlNGMzXCIsIFwiTTI1NiAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMmwwIDI2NC42Yy0xOS4xIDExLjEtMzIgMzEuNy0zMiA1NS40YzAgMzUuMyAyOC43IDY0IDY0IDY0czY0LTI4LjcgNjQtNjRjMC0yMy43LTEyLjktNDQuNC0zMi01NS40TDI4OCAzMmMwLTE3LjctMTQuMy0zMi0zMi0zMnpNNDggMTI4Yy0yNi41IDAtNDggMjEuNS00OCA0OEwwIDQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGw0MTYgMGMyNi41IDAgNDgtMjEuNSA0OC00OGwwLTI4OGMwLTI2LjUtMjEuNS00OC00OC00OGwtODAgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJsMCAxOTJjMCA1My00MyA5Ni05NiA5NnMtOTYtNDMtOTYtOTZsMC0xOTJjMC0xNy43LTE0LjMtMzItMzItMzJsLTgwIDB6XCJdXG59O1xuY29uc3QgZmFJbmR1c3RyeSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdpbmR1c3RyeScsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjI3NVwiLCBcIk02NCAzMkM0Ni4zIDMyIDMyIDQ2LjMgMzIgNjRsMCAyNDAgMCA0OCAwIDgwYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4bDQxNiAwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4bDAtMTI4IDAtMTUxLjhjMC0xOC4yLTE5LjQtMjkuNy0zNS40LTIxLjFMMzUyIDIxNS40bDAtNjMuMmMwLTE4LjItMTkuNC0yOS43LTM1LjQtMjEuMUwxNjAgMjE1LjQgMTYwIDY0YzAtMTcuNy0xNC4zLTMyLTMyLTMyTDY0IDMyelwiXVxufTtcbmNvbnN0IGZhQ2lyY2xlRG93biA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaXJjbGUtZG93bicsXG4gIGljb246IFs1MTIsIDUxMiwgWzYxNDY2LCBcImFycm93LWFsdC1jaXJjbGUtZG93blwiXSwgXCJmMzU4XCIsIFwiTTI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMHpNMjQ0LjcgMzk1LjNsLTExMi0xMTJjLTQuNi00LjYtNS45LTExLjUtMy41LTE3LjRzOC4zLTkuOSAxNC44LTkuOWw2NCAwIDAtOTZjMC0xNy43IDE0LjMtMzIgMzItMzJsMzIgMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDk2IDY0IDBjNi41IDAgMTIuMyAzLjkgMTQuOCA5LjlzMS4xIDEyLjktMy41IDE3LjRsLTExMiAxMTJjLTYuMiA2LjItMTYuNCA2LjItMjIuNiAwelwiXVxufTtcbmNvbnN0IGZhQXJyb3dBbHRDaXJjbGVEb3duID0gZmFDaXJjbGVEb3duO1xuY29uc3QgZmFBcnJvd3NUdXJuVG9Eb3RzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Fycm93cy10dXJuLXRvLWRvdHMnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImU0YzFcIiwgXCJNMjQ5LjQgMjUuNGMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMHMxMi41IDMyLjggMCA0NS4zTDI2OS4zIDk2IDQxNiA5NmM1MyAwIDk2IDQzIDk2IDk2bDAgMzJjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC0zMmMwLTE3LjctMTQuMy0zMi0zMi0zMmwtMTQ2LjcgMCAyNS40IDI1LjRjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNzLTMyLjggMTIuNS00NS4zIDBsLTgwLTgwYy0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM2w4MC04MHptMTMuMyAyNTZsODAgODBjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNsLTgwIDgwYy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMHMtMTIuNS0zMi44IDAtNDUuM0wyNDIuNyA0MTYgOTYgNDE2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMmwwIDMyYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtMzJjMC01MyA0My05NiA5Ni05NmwxNDYuNyAwLTI1LjQtMjUuNGMtMTIuNS0xMi41LTEyLjUtMzIuOCAwLTQ1LjNzMzIuOC0xMi41IDQ1LjMgMHpNMzg0IDM4NGE2NCA2NCAwIDEgMSAxMjggMCA2NCA2NCAwIDEgMSAtMTI4IDB6TTY0IDE5MkE2NCA2NCAwIDEgMSA2NCA2NGE2NCA2NCAwIDEgMSAwIDEyOHpcIl1cbn07XG5jb25zdCBmYUZsb3JpblNpZ24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmxvcmluLXNpZ24nLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImUxODRcIiwgXCJNMzE0LjcgMzJjLTM4LjggMC03My43IDIzLjMtODguNiA1OS4xTDE3MC43IDIyNCA2NCAyMjRjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsODAgMEw5OC45IDM5Ni4zYy01IDExLjktMTYuNiAxOS43LTI5LjUgMTkuN0wzMiA0MTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsMzcuMyAwYzM4LjggMCA3My43LTIzLjMgODguNi01OS4xTDIxMy4zIDI4OCAzMjAgMjg4YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC04MCAwIDQ1LjEtMTA4LjNjNS0xMS45IDE2LjYtMTkuNyAyOS41LTE5LjdMMzUyIDk2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC0zNy4zIDB6XCJdXG59O1xuY29uc3QgZmFBcnJvd0Rvd25TaG9ydFdpZGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYXJyb3ctZG93bi1zaG9ydC13aWRlJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXCJzb3J0LWFtb3VudC1kZXNjXCIsIFwic29ydC1hbW91bnQtZG93bi1hbHRcIl0sIFwiZjg4NFwiLCBcIk0xNTEuNiA0NjkuNkMxNDUuNSA0NzYuMiAxMzcgNDgwIDEyOCA0ODBzLTE3LjUtMy44LTIzLjYtMTAuNGwtODgtOTZjLTExLjktMTMtMTEuMS0zMy4zIDItNDUuMnMzMy4zLTExLjEgNDUuMiAyTDk2IDM2NS43IDk2IDY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJsMCAzMDEuNyAzMi40LTM1LjRjMTEuOS0xMyAzMi4yLTEzLjkgNDUuMi0yczEzLjkgMzIuMiAyIDQ1LjJsLTg4IDk2ek0zMjAgMzJsMzIgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtMzIgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnptMCAxMjhsOTYgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtOTYgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnptMCAxMjhsMTYwIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTE2MCAwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyem0wIDEyOGwyMjQgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtMjI0IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJ6XCJdXG59O1xuY29uc3QgZmFTb3J0QW1vdW50RGVzYyA9IGZhQXJyb3dEb3duU2hvcnRXaWRlO1xuY29uc3QgZmFTb3J0QW1vdW50RG93bkFsdCA9IGZhQXJyb3dEb3duU2hvcnRXaWRlO1xuY29uc3QgZmFMZXNzVGhhbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdsZXNzLXRoYW4nLFxuICBpY29uOiBbMzg0LCA1MTIsIFs2Mjc3NF0sIFwiM2NcIiwgXCJNMzgwLjYgODEuN2M3LjkgMTUuOCAxLjUgMzUtMTQuMyA0Mi45TDEwMy42IDI1NiAzNjYuMyAzODcuNGMxNS44IDcuOSAyMi4yIDI3LjEgMTQuMyA0Mi45cy0yNy4xIDIyLjItNDIuOSAxNC4zbC0zMjAtMTYwQzYuOCAyNzkuMiAwIDI2OC4xIDAgMjU2czYuOC0yMy4yIDE3LjctMjguNmwzMjAtMTYwYzE1LjgtNy45IDM1LTEuNSA0Mi45IDE0LjN6XCJdXG59O1xuY29uc3QgZmFBbmdsZURvd24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYW5nbGUtZG93bicsXG4gIGljb246IFs0NDgsIDUxMiwgWzg5NjRdLCBcImYxMDdcIiwgXCJNMjAxLjQgMzc0LjZjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBsMTYwLTE2MGMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMEwyMjQgMzA2LjcgODYuNiAxNjkuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNsMTYwIDE2MHpcIl1cbn07XG5jb25zdCBmYUNhclR1bm5lbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjYXItdHVubmVsJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJlNGRlXCIsIFwiTTI1NiAwQzExNC42IDAgMCAxMTQuNiAwIDI1NkwwIDQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NGw0Mi44IDBjLTYuNi01LjktMTAuOC0xNC40LTEwLjgtMjRsMC0xMTJjMC0yMC44IDExLjMtMzguOSAyOC4xLTQ4LjZsMjEtNjQuN2M3LjUtMjMuMSAyOS0zOC43IDUzLjMtMzguN2wxMTUuMiAwYzI0LjMgMCA0NS44IDE1LjYgNTMuMyAzOC43bDIxIDY0LjdjMTYuOCA5LjcgMjguMiAyNy44IDI4LjIgNDguNmwwIDExMmMwIDkuNi00LjIgMTguMS0xMC44IDI0bDQyLjggMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTE5MkM1MTIgMTE0LjYgMzk3LjQgMCAyNTYgMHpNMzYyLjggNTEyYy02LjYtNS45LTEwLjgtMTQuNC0xMC44LTI0bDAtNDAtMTkyIDAgMCA0MGMwIDkuNi00LjIgMTguMS0xMC44IDI0bDIxMy43IDB6TTE5MC44IDI3Ny41TDE3NyAzMjBsMTU4IDAtMTMuOC00Mi41Yy0xLjEtMy4zLTQuMS01LjUtNy42LTUuNWwtMTE1LjIgMGMtMy41IDAtNi41IDIuMi03LjYgNS41ek0xNjggNDA4YTI0IDI0IDAgMSAwIDAtNDggMjQgMjQgMCAxIDAgMCA0OHptMjAwLTI0YTI0IDI0IDAgMSAwIC00OCAwIDI0IDI0IDAgMSAwIDQ4IDB6XCJdXG59O1xuY29uc3QgZmFIZWFkU2lkZUNvdWdoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hlYWQtc2lkZS1jb3VnaCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTA2MVwiLCBcIk0wIDIyNC4yQzAgMTAwLjYgMTAwLjIgMCAyMjQgMGwyNCAwYzk1LjIgMCAxODEuMiA2OS4zIDE5Ny4zIDE2MC4yYzIuMyAxMyA2LjggMjUuNyAxNS4xIDM2bDQyIDUyLjZjNi4yIDcuOCA5LjYgMTcuNCA5LjYgMjcuNGMwIDI0LjItMTkuNiA0My44LTQzLjggNDMuOEw0NDggMzIwczAgMCAwIDBsMCAzMkwzMzkuMiAzNjUuNmMtMTEgMS40LTE5LjIgMTAuNy0xOS4yIDIxLjhjMCAxMS42IDkgMjEuMiAyMC42IDIxLjlMNDQ4IDQxNmwwIDE2YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4bC04MCAwIDAgOGMwIDEzLjMtMTAuNyAyNC0yNCAyNGwtNDAgMHMwIDAgMCAwTDk2IDUxMmMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC03Mi43YzAtMTYuNy02LjktMzIuNS0xNy4xLTQ1LjhDMTYuNiAzMjIuNCAwIDI3NC4xIDAgMjI0LjJ6bTM1Mi0uMmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6TTQ2NCAzODRhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHptMTUyLTI0YTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHpNNTkyIDQ4MGEyNCAyNCAwIDEgMSA0OCAwIDI0IDI0IDAgMSAxIC00OCAwek01NTIgMzEyYTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHptNDAtMjRhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHpNNTUyIDQwOGEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6XCJdXG59O1xuY29uc3QgZmFHcmlwTGluZXMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZ3JpcC1saW5lcycsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjdhNFwiLCBcIk0zMiAyODhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsMzg0IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJMMzIgMjg4em0wLTEyOGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwzODQgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkwzMiAxNjB6XCJdXG59O1xuY29uc3QgZmFUaHVtYnNEb3duID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RodW1icy1kb3duJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI4MDc4LCA2MTU3Nl0sIFwiZjE2NVwiLCBcIk0zMTMuNCA0NzkuMWMyNi01LjIgNDIuOS0zMC41IDM3LjctNTYuNWwtMi4zLTExLjRjLTUuMy0yNi43LTE1LjEtNTIuMS0yOC44LTc1LjJsMTQ0IDBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhjMC0xOC41LTEwLjUtMzQuNi0yNS45LTQyLjZDNDk3IDIzNi42IDUwNCAyMjMuMSA1MDQgMjA4YzAtMjMuNC0xNi44LTQyLjktMzguOS00Ny4xYzQuNC03LjMgNi45LTE1LjggNi45LTI0LjljMC0yMS4zLTEzLjktMzkuNC0zMy4xLTQ1LjZjLjctMy4zIDEuMS02LjggMS4xLTEwLjRjMC0yNi41LTIxLjUtNDgtNDgtNDhsLTk3LjUgMGMtMTkgMC0zNy41IDUuNi01My4zIDE2LjFMMjAyLjcgNzMuOEMxNzYgOTEuNiAxNjAgMTIxLjYgMTYwIDE1My43bDAgMzguMyAwIDQ4IDAgMjQuOWMwIDI5LjIgMTMuMyA1Ni43IDM2IDc1bDcuNCA1LjljMjYuNSAyMS4yIDQ0LjYgNTEgNTEuMiA4NC4ybDIuMyAxMS40YzUuMiAyNiAzMC41IDQyLjkgNTYuNSAzNy43ek0zMiAzODRsNjQgMGMxNy43IDAgMzItMTQuMyAzMi0zMmwwLTIyNGMwLTE3LjctMTQuMy0zMi0zMi0zMkwzMiA5NkMxNC4zIDk2IDAgMTEwLjMgMCAxMjhMMCAzNTJjMCAxNy43IDE0LjMgMzIgMzIgMzJ6XCJdXG59O1xuY29uc3QgZmFVc2VyTG9jayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd1c2VyLWxvY2snLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY1MDJcIiwgXCJNMjI0IDI1NkExMjggMTI4IDAgMSAwIDIyNCAwYTEyOCAxMjggMCAxIDAgMCAyNTZ6bS00NS43IDQ4Qzc5LjggMzA0IDAgMzgzLjggMCA0ODIuM0MwIDQ5OC43IDEzLjMgNTEyIDI5LjcgNTEybDM2Mi44IDBjLTUuNC05LjQtOC42LTIwLjMtOC42LTMybDAtMTI4YzAtMi4xIC4xLTQuMiAuMy02LjNjLTMxLTI2LTcxLTQxLjctMTE0LjYtNDEuN2wtOTEuNCAwek01MjggMjQwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgNDgtNjQgMCAwLTQ4YzAtMTcuNyAxNC4zLTMyIDMyLTMyem0tODAgMzJsMCA0OGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJsMCAxMjhjMCAxNy43IDE0LjMgMzIgMzIgMzJsMTYwIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJsMC0xMjhjMC0xNy43LTE0LjMtMzItMzItMzJsMC00OGMwLTQ0LjItMzUuOC04MC04MC04MHMtODAgMzUuOC04MCA4MHpcIl1cbn07XG5jb25zdCBmYUFycm93UmlnaHRMb25nID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Fycm93LXJpZ2h0LWxvbmcnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtcImxvbmctYXJyb3ctcmlnaHRcIl0sIFwiZjE3OFwiLCBcIk01MDIuNiAyNzguNmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM2wtMTI4LTEyOGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNMNDAyLjcgMjI0IDMyIDIyNGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwzNzAuNyAwLTczLjQgNzMuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMGwxMjgtMTI4elwiXVxufTtcbmNvbnN0IGZhTG9uZ0Fycm93UmlnaHQgPSBmYUFycm93UmlnaHRMb25nO1xuY29uc3QgZmFBbmNob3JDaXJjbGVYbWFyayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhbmNob3ItY2lyY2xlLXhtYXJrJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlNGFjXCIsIFwiTTMyMCA5NmEzMiAzMiAwIDEgMSAtNjQgMCAzMiAzMiAwIDEgMSA2NCAwem0yMS4xIDgwQzM2NyAxNTguOCAzODQgMTI5LjQgMzg0IDk2YzAtNTMtNDMtOTYtOTYtOTZzLTk2IDQzLTk2IDk2YzAgMzMuNCAxNyA2Mi44IDQyLjkgODBMMjI0IDE3NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwzMiAwIDAgMjA4LTQ4IDBjLTUzIDAtOTYtNDMtOTYtOTZsMC02LjEgNyA3YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwczkuNC0yNC42IDAtMzMuOUw5NyAyNjNjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwTDcgMzE5Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOXMyNC42IDkuNCAzMy45IDBsNy03IDAgNi4xYzAgODguNCA3MS42IDE2MCAxNjAgMTYwbDgwIDAgODAgMGM4LjIgMCAxNi4zLS42IDI0LjItMS44Yy0yMi4yLTE2LjItNDAuNC0zNy41LTUzLTYyLjJMMzIwIDQ0OGwwLTgwIDAtMTI4IDMyIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTEwLjkgMHpNNDk2IDUxMmExNDQgMTQ0IDAgMSAwIDAtMjg4IDE0NCAxNDQgMCAxIDAgMCAyODh6bTU5LjMtMTgwLjdMNTE4LjYgMzY4bDM2LjcgMzYuN2M2LjIgNi4yIDYuMiAxNi40IDAgMjIuNnMtMTYuNCA2LjItMjIuNiAwTDQ5NiAzOTAuNmwtMzYuNyAzNi43Yy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMHMtNi4yLTE2LjQgMC0yMi42TDQ3My40IDM2OGwtMzYuNy0zNi43Yy02LjItNi4yLTYuMi0xNi40IDAtMjIuNnMxNi40LTYuMiAyMi42IDBMNDk2IDM0NS40bDM2LjctMzYuN2M2LjItNi4yIDE2LjQtNi4yIDIyLjYgMHM2LjIgMTYuNCAwIDIyLjZ6XCJdXG59O1xuY29uc3QgZmFFbGxpcHNpcyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdlbGxpcHNpcycsXG4gIGljb246IFs0NDgsIDUxMiwgW1wiZWxsaXBzaXMtaFwiXSwgXCJmMTQxXCIsIFwiTTggMjU2YTU2IDU2IDAgMSAxIDExMiAwQTU2IDU2IDAgMSAxIDggMjU2em0xNjAgMGE1NiA1NiAwIDEgMSAxMTIgMCA1NiA1NiAwIDEgMSAtMTEyIDB6bTIxNi01NmE1NiA1NiAwIDEgMSAwIDExMiA1NiA1NiAwIDEgMSAwLTExMnpcIl1cbn07XG5jb25zdCBmYUVsbGlwc2lzSCA9IGZhRWxsaXBzaXM7XG5jb25zdCBmYUNoZXNzUGF3biA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaGVzcy1wYXduJyxcbiAgaWNvbjogWzMyMCwgNTEyLCBbOTgyM10sIFwiZjQ0M1wiLCBcIk0yMTUuNSAyMjRjMjkuMi0xOC40IDQ4LjUtNTAuOSA0OC41LTg4YzAtNTcuNC00Ni42LTEwNC0xMDQtMTA0UzU2IDc4LjYgNTYgMTM2YzAgMzcuMSAxOS40IDY5LjYgNDguNSA4OEw5NiAyMjRjLTE3LjcgMC0zMiAxNC4zLTMyIDMyYzAgMTYuNSAxMi41IDMwIDI4LjUgMzEuOEw4MCA0MDBsMTYwIDBMMjI3LjUgMjg3LjhjMTYtMS44IDI4LjUtMTUuMyAyOC41LTMxLjhjMC0xNy43LTE0LjMtMzItMzItMzJsLTguNSAwek0yMi42IDQ3My40Yy00LjIgNC4yLTYuNiAxMC02LjYgMTZDMTYgNTAxLjkgMjYuMSA1MTIgMzguNiA1MTJsMjQyLjcgMGMxMi41IDAgMjIuNi0xMC4xIDIyLjYtMjIuNmMwLTYtMi40LTExLjgtNi42LTE2TDI1NiA0MzIgNjQgNDMyIDIyLjYgNDczLjR6XCJdXG59O1xuY29uc3QgZmFLaXRNZWRpY2FsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2tpdC1tZWRpY2FsJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXCJmaXJzdC1haWRcIl0sIFwiZjQ3OVwiLCBcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2TDAgNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0bDMyIDBMOTYgMzIgNjQgMzJ6bTY0IDBsMCA0NDggMzIwIDAgMC00NDhMMTI4IDMyek01MTIgNDgwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMzIwYzAtMzUuMy0yOC43LTY0LTY0LTY0bC0zMiAwIDAgNDQ4IDMyIDB6TTI1NiAxNzZjMC04LjggNy4yLTE2IDE2LTE2bDMyIDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgNDggNDggMGM4LjggMCAxNiA3LjIgMTYgMTZsMCAzMmMwIDguOC03LjIgMTYtMTYgMTZsLTQ4IDAgMCA0OGMwIDguOC03LjIgMTYtMTYgMTZsLTMyIDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTQ4LTQ4IDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTMyYzAtOC44IDcuMi0xNiAxNi0xNmw0OCAwIDAtNDh6XCJdXG59O1xuY29uc3QgZmFGaXJzdEFpZCA9IGZhS2l0TWVkaWNhbDtcbmNvbnN0IGZhUGVyc29uVGhyb3VnaFdpbmRvdyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwZXJzb24tdGhyb3VnaC13aW5kb3cnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU1YTlcIiwgXCJNNjQgNjRsMjI0IDAgMCA5LjhjMCAzOS0yMy43IDc0LTU5LjkgODguNEMxNjcuNiAxODYuNSAxMjggMjQ1IDEyOCAzMTAuMmwwIDczLjhzMCAwIDAgMGwtNjQgMEw2NCA2NHptMjg4IDBsMjI0IDAgMCAzMjAtNjcuNyAwLTMuNy00LjUtNzUuMi05MC4yYy05LjEtMTAuOS0yMi42LTE3LjMtMzYuOS0xNy4zbC03MS4xIDAtNDEtNjMuMWMtLjMtLjUtLjYtMS0xLTEuNGM0NC43LTI5IDcyLjUtNzkgNzIuNS0xMzMuNmwwLTkuOHptNzMgMzIwbC00NS44IDAgNDIuNyA2NEw1OTIgNDQ4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4bDAtMzUyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4TDQ4IDBDMjEuNSAwIDAgMjEuNSAwIDQ4TDAgNDAwYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4bDI2MC4yIDAgMzMuMiA0OS44YzkuOCAxNC43IDI5LjcgMTguNyA0NC40IDguOXMxOC43LTI5LjcgOC45LTQ0LjRMMzEwLjUgMzM2bDc0LjYgMCA0MCA0OHptLTE1OS41IDBMMTkyIDM4NHMwIDAgMCAwbDAtNzMuOGMwLTEwLjIgMS42LTIwLjEgNC43LTI5LjVMMjY1LjUgMzg0ek0xOTIgMTI4YTQ4IDQ4IDAgMSAwIC05NiAwIDQ4IDQ4IDAgMSAwIDk2IDB6XCJdXG59O1xuY29uc3QgZmFUb29sYm94ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3Rvb2xib3gnLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjk1MjBdLCBcImY1NTJcIiwgXCJNMTc2IDg4bDAgNDAgMTYwIDAgMC00MGMwLTQuNC0zLjYtOC04LThMMTg0IDgwYy00LjQgMC04IDMuNi04IDh6bS00OCA0MGwwLTQwYzAtMzAuOSAyNS4xLTU2IDU2LTU2bDE0NCAwYzMwLjkgMCA1NiAyNS4xIDU2IDU2bDAgNDAgMjguMSAwYzEyLjcgMCAyNC45IDUuMSAzMy45IDE0LjFsNTEuOSA1MS45YzkgOSAxNC4xIDIxLjIgMTQuMSAzMy45bDAgOTIuMS0xMjggMCAwLTMyYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMybDAgMzItMTI4IDAgMC0zMmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMmwwIDMyTDAgMzIwbDAtOTIuMWMwLTEyLjcgNS4xLTI0LjkgMTQuMS0zMy45bDUxLjktNTEuOWM5LTkgMjEuMi0xNC4xIDMzLjktMTQuMWwyOC4xIDB6TTAgNDE2bDAtNjQgMTI4IDBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwxMjggMGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDEyOCAwIDAgNjRjMCAzNS4zLTI4LjcgNjQtNjQgNjRMNjQgNDgwYy0zNS4zIDAtNjQtMjguNy02NC02NHpcIl1cbn07XG5jb25zdCBmYUhhbmRzSG9sZGluZ0NpcmNsZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoYW5kcy1ob2xkaW5nLWNpcmNsZScsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTRmYlwiLCBcIk0zMjAgMGExMjggMTI4IDAgMSAxIDAgMjU2QTEyOCAxMjggMCAxIDEgMzIwIDB6TTQwIDY0YzIyLjEgMCA0MCAxNy45IDQwIDQwbDAgNDAgMCA4MCAwIDQwLjJjMCAxNyA2LjcgMzMuMyAxOC43IDQ1LjNsNTEuMSA1MS4xYzguMyA4LjMgMjEuMyA5LjYgMzEgMy4xYzEyLjktOC42IDE0LjctMjYuOSAzLjctMzcuOGwtMTUuMi0xNS4yLTMyLTMyYy0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM3MzMi44LTEyLjUgNDUuMyAwbDMyIDMyIDE1LjIgMTUuMmMwIDAgMCAwIDAgMGwyNS4zIDI1LjNjMjEgMjEgMzIuOCA0OS41IDMyLjggNzkuMmwwIDc4LjljMCAyNi41LTIxLjUgNDgtNDggNDhsLTY2LjcgMGMtMTcgMC0zMy4zLTYuNy00NS4zLTE4LjdMMjguMSAzOTMuNEMxMC4xIDM3NS40IDAgMzUxIDAgMzI1LjVMMCAyMjRsMC02NCAwLTU2QzAgODEuOSAxNy45IDY0IDQwIDY0em01NjAgMGMyMi4xIDAgNDAgMTcuOSA0MCA0MGwwIDU2IDAgNjQgMCAxMDEuNWMwIDI1LjUtMTAuMSA0OS45LTI4LjEgNjcuOUw1MTIgNDkzLjNjLTEyIDEyLTI4LjMgMTguNy00NS4zIDE4LjdMNDAwIDUxMmMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhsMC03OC45YzAtMjkuNyAxMS44LTU4LjIgMzIuOC03OS4ybDI1LjMtMjUuM2MwIDAgMCAwIDAgMGwxNS4yLTE1LjIgMzItMzJjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDBzMTIuNSAzMi44IDAgNDUuM2wtMzIgMzItMTUuMiAxNS4yYy0xMSAxMS05LjIgMjkuMiAzLjcgMzcuOGM5LjcgNi41IDIyLjcgNS4yIDMxLTMuMWw1MS4xLTUxLjFjMTItMTIgMTguNy0yOC4zIDE4LjctNDUuM2wwLTQwLjIgMC04MCAwLTQwYzAtMjIuMSAxNy45LTQwIDQwLTQwelwiXVxufTtcbmNvbnN0IGZhQnVnID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2J1ZycsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjE4OFwiLCBcIk0yNTYgMGM1MyAwIDk2IDQzIDk2IDk2bDAgMy42YzAgMTUuNy0xMi43IDI4LjQtMjguNCAyOC40bC0xMzUuMSAwYy0xNS43IDAtMjguNC0xMi43LTI4LjQtMjguNGwwLTMuNmMwLTUzIDQzLTk2IDk2LTk2ek00MS40IDEwNS40YzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwbDY0IDY0Yy43IC43IDEuMyAxLjQgMS45IDIuMWMxNC4yLTcuMyAzMC40LTExLjQgNDcuNS0xMS40bDExMiAwYzE3LjEgMCAzMy4yIDQuMSA0Ny41IDExLjRjLjYtLjcgMS4yLTEuNCAxLjktMi4xbDY0LTY0YzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwczEyLjUgMzIuOCAwIDQ1LjNsLTY0IDY0Yy0uNyAuNy0xLjQgMS4zLTIuMSAxLjljNi4yIDEyIDEwLjEgMjUuMyAxMS4xIDM5LjVsNjQuMyAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC02NCAwYzAgMjQuNi01LjUgNDcuOC0xNS40IDY4LjZjMi4yIDEuMyA0LjIgMi45IDYgNC44bDY0IDY0YzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zcy0zMi44IDEyLjUtNDUuMyAwbC02My4xLTYzLjFjLTI0LjUgMjEuOC01NS44IDM2LjItOTAuMyAzOS42TDI3MiAyNDBjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZsMCAyMzkuMmMtMzQuNS0zLjQtNjUuOC0xNy44LTkwLjMtMzkuNkw4Ni42IDUwMi42Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMHMtMTIuNS0zMi44IDAtNDUuM2w2NC02NGMxLjktMS45IDMuOS0zLjQgNi00LjhDMTAxLjUgMzY3LjggOTYgMzQ0LjYgOTYgMzIwbC02NCAwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDY0LjMgMGMxLjEtMTQuMSA1LTI3LjUgMTEuMS0zOS41Yy0uNy0uNi0xLjQtMS4yLTIuMS0xLjlsLTY0LTY0Yy0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM3pcIl1cbn07XG5jb25zdCBmYUNyZWRpdENhcmQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY3JlZGl0LWNhcmQnLFxuICBpY29uOiBbNTc2LCA1MTIsIFsxMjgxNzksIDYyMDgzLCBcImNyZWRpdC1jYXJkLWFsdFwiXSwgXCJmMDlkXCIsIFwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZsMCAzMiA1NzYgMCAwLTMyYzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDMyek01NzYgMjI0TDAgMjI0IDAgNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0bDQ0OCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMTkyek0xMTIgMzUybDY0IDBjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZsLTY0IDBjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6bTExMiAxNmMwLTguOCA3LjItMTYgMTYtMTZsMTI4IDBjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZsLTEyOCAwYy04LjggMC0xNi03LjItMTYtMTZ6XCJdXG59O1xuY29uc3QgZmFDcmVkaXRDYXJkQWx0ID0gZmFDcmVkaXRDYXJkO1xuY29uc3QgZmFDYXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2FyJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI4NjY0LCBcImF1dG9tb2JpbGVcIl0sIFwiZjFiOVwiLCBcIk0xMzUuMiAxMTcuNEwxMDkuMSAxOTJsMjkzLjggMC0yNi4xLTc0LjZDMzcyLjMgMTA0LjYgMzYwLjIgOTYgMzQ2LjYgOTZMMTY1LjQgOTZjLTEzLjYgMC0yNS43IDguNi0zMC4yIDIxLjR6TTM5LjYgMTk2LjhMNzQuOCA5Ni4zQzg4LjMgNTcuOCAxMjQuNiAzMiAxNjUuNCAzMmwxODEuMiAwYzQwLjggMCA3Ny4xIDI1LjggOTAuNiA2NC4zbDM1LjIgMTAwLjVjMjMuMiA5LjYgMzkuNiAzMi41IDM5LjYgNTkuMmwwIDE0NCAwIDQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMybC0zMiAwYy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTQ4TDk2IDQwMGwwIDQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMybC0zMiAwYy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTQ4TDAgMjU2YzAtMjYuNyAxNi40LTQ5LjYgMzkuNi01OS4yek0xMjggMjg4YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6bTI4OCAzMmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6XCJdXG59O1xuY29uc3QgZmFBdXRvbW9iaWxlID0gZmFDYXI7XG5jb25zdCBmYUhhbmRIb2xkaW5nSGFuZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoYW5kLWhvbGRpbmctaGFuZCcsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZTRmN1wiLCBcIk03LjggMjA3LjdjLTEzLjEtMTcuOC05LjMtNDIuOCA4LjUtNTUuOUwxNDIuOSA1OC41QzE2Ni4yIDQxLjMgMTk0LjUgMzIgMjIzLjUgMzJMMzg0IDMybDE2MCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgNjRjMCAxNy43LTE0LjMgMzItMzIgMzJsLTM2LjggMC00NC45IDM2Yy0yMi43IDE4LjItNTAuOSAyOC04MCAyOEwzMDQgMjI0bC0xNiAwLTY0IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJsNjQgMCAxNiAwYzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2bC0xMjAuNiAwTDYzLjcgMjE2LjJjLTE3LjggMTMuMS00Mi44IDkuMy01NS45LTguNXpNMzgyLjQgMTYwYzAgMCAwIDAgMCAwbC45IDBjLS4zIDAtLjYgMC0uOSAwek01NjguMiAzMDQuM2MxMy4xIDE3LjggOS4zIDQyLjgtOC41IDU1LjlMNDMzLjEgNDUzLjVjLTIzLjQgMTcuMi01MS42IDI2LjUtODAuNyAyNi41TDE5MiA0ODAgMzIgNDgwYy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTY0YzAtMTcuNyAxNC4zLTMyIDMyLTMybDM2LjggMCA0NC45LTM2YzIyLjctMTguMiA1MC45LTI4IDgwLTI4bDc4LjMgMCAxNiAwIDY0IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTY0IDAtMTYgMGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmwxMjAuNiAwIDExOS43LTg4LjJjMTcuOC0xMy4xIDQyLjgtOS4zIDU1LjkgOC41ek0xOTMuNiAzNTJjMCAwIDAgMCAwIDBsLS45IDBjLjMgMCAuNiAwIC45IDB6XCJdXG59O1xuY29uc3QgZmFCb29rT3BlblJlYWRlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdib29rLW9wZW4tcmVhZGVyJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXCJib29rLXJlYWRlclwiXSwgXCJmNWRhXCIsIFwiTTE2MCA5NmE5NiA5NiAwIDEgMSAxOTIgMEE5NiA5NiAwIDEgMSAxNjAgOTZ6bTgwIDE1MmwwIDI2NC00OC40LTI0LjJjLTIwLjktMTAuNC00My41LTE3LTY2LjgtMTkuM2wtOTYtOS42QzEyLjUgNDU3LjIgMCA0NDMuNSAwIDQyN0wwIDIyNGMwLTE3LjcgMTQuMy0zMiAzMi0zMmwzMC4zIDBjNjMuNiAwIDEyNS42IDE5LjYgMTc3LjcgNTZ6bTMyIDI2NGwwLTI2NGM1Mi4xLTM2LjQgMTE0LjEtNTYgMTc3LjctNTZsMzAuMyAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgMjAzYzAgMTYuNC0xMi41IDMwLjItMjguOCAzMS44bC05NiA5LjZjLTIzLjIgMi4zLTQ1LjkgOC45LTY2LjggMTkuM0wyNzIgNTEyelwiXVxufTtcbmNvbnN0IGZhQm9va1JlYWRlciA9IGZhQm9va09wZW5SZWFkZXI7XG5jb25zdCBmYU1vdW50YWluU3VuID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21vdW50YWluLXN1bicsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTUyZlwiLCBcIk01NjAgMTYwQTgwIDgwIDAgMSAwIDU2MCAwYTgwIDgwIDAgMSAwIDAgMTYwek01NS45IDUxMmwzMjUuMiAwIDc1IDAgMTIyLjggMGMzMy44IDAgNjEuMS0yNy40IDYxLjEtNjEuMWMwLTExLjItMy4xLTIyLjItOC45LTMxLjhsLTEzMi0yMTYuM0M0OTUgMTk2LjEgNDg3LjggMTkyIDQ4MCAxOTJzLTE1IDQuMS0xOS4xIDEwLjdsLTQ4LjIgNzlMMjg2LjggODFjLTYuNi0xMC42LTE4LjMtMTctMzAuOC0xN3MtMjQuMSA2LjQtMzAuOCAxN0w4LjYgNDI2LjRDMyA0MzUuMyAwIDQ0NS42IDAgNDU2LjFDMCA0ODcgMjUgNTEyIDU1LjkgNTEyelwiXVxufTtcbmNvbnN0IGZhQXJyb3dzTGVmdFJpZ2h0VG9MaW5lID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Fycm93cy1sZWZ0LXJpZ2h0LXRvLWxpbmUnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU0YmFcIiwgXCJNMzIgNjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCAzMjBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJMMCA5NkMwIDc4LjMgMTQuMyA2NCAzMiA2NHptMjE0LjYgNzMuNGMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM0wyMDUuMyAyMjRsMjI5LjUgMC00MS40LTQxLjRjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zczMyLjgtMTIuNSA0NS4zIDBsOTYgOTZjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNsLTk2IDk2Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMHMtMTIuNS0zMi44IDAtNDUuM0w0MzQuNyAyODhsLTIyOS41IDAgNDEuNCA0MS40YzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zcy0zMi44IDEyLjUtNDUuMyAwbC05Ni05NmMtMTIuNS0xMi41LTEyLjUtMzIuOCAwLTQ1LjNsOTYtOTZjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDB6TTY0MCA5NmwwIDMyMGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTMyMGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMyelwiXVxufTtcbmNvbnN0IGZhRGljZUQyMCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdkaWNlLWQyMCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjZjZlwiLCBcIk00OC43IDEyNS44bDUzLjIgMzEuOWM3LjggNC43IDE3LjggMiAyMi4yLTUuOUwyMDEuNiAxMi4xYzMtNS40LS45LTEyLjEtNy4xLTEyLjFjLTEuNiAwLTMuMiAuNS00LjYgMS40TDQ3LjkgOTguOGMtOS42IDYuNi05LjIgMjAuOSAuOCAyNi45ek0xNiAxNzEuN2wwIDEyMy41YzAgOCAxMC40IDExIDE0LjcgNC40bDYwLTkyYzUtNy42IDIuNi0xNy44LTUuMi0yMi41TDQwLjIgMTU4QzI5LjYgMTUxLjYgMTYgMTU5LjMgMTYgMTcxLjd6TTMxMC40IDEyLjFsNzcuNiAxMzkuNmM0LjQgNy45IDE0LjUgMTAuNiAyMi4yIDUuOWw1My4yLTMxLjljMTAtNiAxMC40LTIwLjMgLjgtMjYuOUwzMjIuMSAxLjRjLTEuNC0uOS0zLTEuNC00LjYtMS40Yy02LjIgMC0xMC4xIDYuNy03LjEgMTIuMXpNNDk2IDE3MS43YzAtMTIuNC0xMy42LTIwLjEtMjQuMi0xMy43bC00NS4zIDI3LjJjLTcuOCA0LjctMTAuMSAxNC45LTUuMiAyMi41bDYwIDkyYzQuMyA2LjcgMTQuNyAzLjYgMTQuNy00LjRsMC0xMjMuNXptLTQ5LjMgMjQ2TDI4Ni4xIDQzNi42Yy04LjEgLjktMTQuMSA3LjgtMTQuMSAxNS45bDAgNTIuOGMwIDMuNyAzIDYuOCA2LjggNi44Yy44IDAgMS42LS4xIDIuNC0uNGwxNzIuNy02NGM2LjEtMi4yIDEwLjEtOCAxMC4xLTE0LjVjMC05LjMtOC4xLTE2LjUtMTcuMy0xNS40ek0yMzMuMiA1MTJjMy43IDAgNi44LTMgNi44LTYuOGwwLTUyLjZjMC04LjEtNi4xLTE0LjktMTQuMS0xNS45bC0xNjAuNi0xOWMtOS4yLTEuMS0xNy4zIDYuMS0xNy4zIDE1LjRjMCA2LjUgNCAxMi4zIDEwLjEgMTQuNWwxNzIuNyA2NGMuOCAuMyAxLjYgLjQgMi40IC40ek00MS43IDM4Mi45bDE3MC45IDIwLjJjNy44IC45IDEzLjQtNy41IDkuNS0xNC4zbC04NS43LTE1MGMtNS45LTEwLjQtMjAuNy0xMC44LTI3LjMtLjhMMzAuMiAzNTguMmMtNi41IDkuOS0uMyAyMy4zIDExLjUgMjQuN3ptNDM5LjYtMjQuOEw0MDIuOSAyMzguMWMtNi41LTEwLTIxLjQtOS42LTI3LjMgLjhMMjkwLjIgMzg4LjVjLTMuOSA2LjggMS42IDE1LjIgOS41IDE0LjNsMTcwLjEtMjBjMTEuOC0xLjQgMTgtMTQuNyAxMS41LTI0LjZ6bS0yMTYuOSAxMWw3OC40LTEzNy4yYzYuMS0xMC43LTEuNi0yMy45LTEzLjktMjMuOWwtMTQ1LjcgMGMtMTIuMyAwLTIwIDEzLjMtMTMuOSAyMy45bDc4LjQgMTM3LjJjMy43IDYuNCAxMyA2LjQgMTYuNyAwek0xNzQuNCAxNzZsMTYzLjIgMGMxMi4yIDAgMTkuOS0xMy4xIDE0LTIzLjhsLTgwLTE0NGMtMi44LTUuMS04LjItOC4yLTE0LTguMmwtMy4yIDBjLTUuOCAwLTExLjIgMy4yLTE0IDguMmwtODAgMTQ0Yy01LjkgMTAuNyAxLjggMjMuOCAxNCAyMy44elwiXVxufTtcbmNvbnN0IGZhVHJ1Y2tEcm9wbGV0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RydWNrLWRyb3BsZXQnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU1OGNcIiwgXCJNMCA0OEMwIDIxLjUgMjEuNSAwIDQ4IDBMMzY4IDBjMjYuNSAwIDQ4IDIxLjUgNDggNDhsMCA0OCA1MC43IDBjMTcgMCAzMy4zIDYuNyA0NS4zIDE4LjdMNTg5LjMgMTkyYzEyIDEyIDE4LjcgMjguMyAxOC43IDQ1LjNsMCAxOC43IDAgMzIgMCA2NGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtMzIgMGMwIDUzLTQzIDk2LTk2IDk2cy05Ni00My05Ni05NmwtMTI4IDBjMCA1My00MyA5Ni05NiA5NnMtOTYtNDMtOTYtOTZsLTE2IDBjLTI2LjUgMC00OC0yMS41LTQ4LTQ4TDAgNDh6TTQxNiAyNTZsMTI4IDAgMC0xOC43TDQ2Ni43IDE2MCA0MTYgMTYwbDAgOTZ6TTE2MCA0NjRhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2em0zNjgtNDhhNDggNDggMCAxIDAgLTk2IDAgNDggNDggMCAxIDAgOTYgMHpNMjA4IDI3MmMzOS44IDAgNzItMjkuNiA3Mi02NmMwLTI3LTM5LjQtODIuOS01OS45LTExMC4zYy02LjEtOC4yLTE4LjEtOC4yLTI0LjIgMEMxNzUuNCAxMjMgMTM2IDE3OSAxMzYgMjA2YzAgMzYuNSAzMi4yIDY2IDcyIDY2elwiXVxufTtcbmNvbnN0IGZhRmlsZUNpcmNsZVhtYXJrID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZpbGUtY2lyY2xlLXhtYXJrJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJlNWExXCIsIFwiTTAgNjRDMCAyOC43IDI4LjcgMCA2NCAwTDIyNCAwbDAgMTI4YzAgMTcuNyAxNC4zIDMyIDMyIDMybDEyOCAwIDAgMzguNkMzMTAuMSAyMTkuNSAyNTYgMjg3LjQgMjU2IDM2OGMwIDU5LjEgMjkuMSAxMTEuMyA3My43IDE0My4zYy0zLjIgLjUtNi40IC43LTkuNyAuN0w2NCA1MTJjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgNjR6bTM4NCA2NGwtMTI4IDBMMjU2IDAgMzg0IDEyOHptNDggOTZhMTQ0IDE0NCAwIDEgMSAwIDI4OCAxNDQgMTQ0IDAgMSAxIDAtMjg4em01OS4zIDEwNy4zYzYuMi02LjIgNi4yLTE2LjQgMC0yMi42cy0xNi40LTYuMi0yMi42IDBMNDMyIDM0NS40bC0zNi43LTM2LjdjLTYuMi02LjItMTYuNC02LjItMjIuNiAwcy02LjIgMTYuNCAwIDIyLjZMNDA5LjQgMzY4bC0zNi43IDM2LjdjLTYuMiA2LjItNi4yIDE2LjQgMCAyMi42czE2LjQgNi4yIDIyLjYgMEw0MzIgMzkwLjZsMzYuNyAzNi43YzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwczYuMi0xNi40IDAtMjIuNkw0NTQuNiAzNjhsMzYuNy0zNi43elwiXVxufTtcbmNvbnN0IGZhVGVtcGVyYXR1cmVBcnJvd1VwID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RlbXBlcmF0dXJlLWFycm93LXVwJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXCJ0ZW1wZXJhdHVyZS11cFwiXSwgXCJlMDQwXCIsIFwiTTEyOCAxMTJjMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OGwwIDE2NC41YzAgMTcuMyA3LjEgMzEuOSAxNS4zIDQyLjVDMjQ5LjggMzMyLjYgMjU2IDM0OS41IDI1NiAzNjhjMCA0NC4yLTM1LjggODAtODAgODBzLTgwLTM1LjgtODAtODBjMC0xOC41IDYuMi0zNS40IDE2LjctNDguOWM4LjItMTAuNiAxNS4zLTI1LjIgMTUuMy00Mi41TDEyOCAxMTJ6TTE3NiAwQzExNC4xIDAgNjQgNTAuMSA2NCAxMTJsMCAxNjQuNGMwIC4xLS4xIC4zLS4yIC42Yy0uMiAuNi0uOCAxLjYtMS43IDIuOEM0My4yIDMwNC4yIDMyIDMzNC44IDMyIDM2OGMwIDc5LjUgNjQuNSAxNDQgMTQ0IDE0NHMxNDQtNjQuNSAxNDQtMTQ0YzAtMzMuMi0xMS4yLTYzLjgtMzAuMS04OC4xYy0uOS0xLjItMS41LTIuMi0xLjctMi44Yy0uMS0uMy0uMi0uNS0uMi0uNkwyODggMTEyQzI4OCA1MC4xIDIzNy45IDAgMTc2IDB6bTAgNDE2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4YzAtMjAuOS0xMy40LTM4LjctMzItNDUuM0wxOTIgMTEyYzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2bDAgMjEwLjdjLTE4LjYgNi42LTMyIDI0LjQtMzIgNDUuM2MwIDI2LjUgMjEuNSA0OCA0OCA0OHpNNDgwIDE2MGwzMiAwYzEyLjkgMCAyNC42LTcuOCAyOS42LTE5LjhzMi4yLTI1LjctNi45LTM0LjlsLTY0LTY0Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMGwtNjQgNjRjLTkuMiA5LjItMTEuOSAyMi45LTYuOSAzNC45czE2LjYgMTkuOCAyOS42IDE5LjhsMzIgMCAwIDI4OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMjg4elwiXVxufTtcbmNvbnN0IGZhVGVtcGVyYXR1cmVVcCA9IGZhVGVtcGVyYXR1cmVBcnJvd1VwO1xuY29uc3QgZmFNZWRhbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtZWRhbCcsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyNzk0MV0sIFwiZjVhMlwiLCBcIk00LjEgMzguMkMxLjQgMzQuMiAwIDI5LjQgMCAyNC42QzAgMTEgMTEgMCAyNC42IDBMMTMzLjkgMGMxMS4yIDAgMjEuNyA1LjkgMjcuNCAxNS41bDY4LjUgMTE0LjFjLTQ4LjIgNi4xLTkxLjMgMjguNi0xMjMuNCA2MS45TDQuMSAzOC4yem01MDMuNyAwTDQwNS42IDE5MS41Yy0zMi4xLTMzLjMtNzUuMi01NS44LTEyMy40LTYxLjlMMzUwLjcgMTUuNUMzNTYuNSA1LjkgMzY2LjkgMCAzNzguMSAwTDQ4Ny40IDBDNTAxIDAgNTEyIDExIDUxMiAyNC42YzAgNC44LTEuNCA5LjYtNC4xIDEzLjZ6TTgwIDMzNmExNzYgMTc2IDAgMSAxIDM1MiAwQTE3NiAxNzYgMCAxIDEgODAgMzM2em0xODQuNC05NC45Yy0zLjQtNy0xMy4zLTctMTYuOCAwbC0yMi40IDQ1LjRjLTEuNCAyLjgtNCA0LjctNyA1LjFMMTY4IDI5OC45Yy03LjcgMS4xLTEwLjcgMTAuNS01LjIgMTZsMzYuMyAzNS40YzIuMiAyLjIgMy4yIDUuMiAyLjcgOC4zbC04LjYgNDkuOWMtMS4zIDcuNiA2LjcgMTMuNSAxMy42IDkuOWw0NC44LTIzLjZjMi43LTEuNCA2LTEuNCA4LjcgMGw0NC44IDIzLjZjNi45IDMuNiAxNC45LTIuMiAxMy42LTkuOWwtOC42LTQ5LjljLS41LTMgLjUtNi4xIDIuNy04LjNsMzYuMy0zNS40YzUuNi01LjQgMi41LTE0LjgtNS4yLTE2bC01MC4xLTcuM2MtMy0uNC01LjctMi40LTctNS4xbC0yMi40LTQ1LjR6XCJdXG59O1xuY29uc3QgZmFCZWQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYmVkJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbMTI4NzE2XSwgXCJmMjM2XCIsIFwiTTMyIDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgMjU2IDIyNCAwIDAtMTYwYzAtMTcuNyAxNC4zLTMyIDMyLTMybDIyNCAwYzUzIDAgOTYgNDMgOTYgOTZsMCAyMjRjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC0zMi0yMjQgMC0zMiAwTDY0IDQxNmwwIDMyYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyTDAgNjRDMCA0Ni4zIDE0LjMgMzIgMzIgMzJ6bTE0NCA5NmE4MCA4MCAwIDEgMSAwIDE2MCA4MCA4MCAwIDEgMSAwLTE2MHpcIl1cbn07XG5jb25zdCBmYVNxdWFyZUggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3F1YXJlLWgnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtcImgtc3F1YXJlXCJdLCBcImYwZmRcIiwgXCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NkwwIDQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NGwzMjAgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTMyMGMwLTM1LjMtMjguNy02NC02NC02NEw2NCAzMnpNMzM2IDE1MmwwIDEwNCAwIDEwNGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNGwwLTgwLTEyOCAwIDAgODBjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRsMC0yMDhjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNGwwIDgwIDEyOCAwIDAtODBjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNHpcIl1cbn07XG5jb25zdCBmYUhTcXVhcmUgPSBmYVNxdWFyZUg7XG5jb25zdCBmYVBvZGNhc3QgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncG9kY2FzdCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjJjZVwiLCBcIk0zMTkuNCAzNzJjNDguNS0zMS4zIDgwLjYtODUuOSA4MC42LTE0OGMwLTk3LjItNzguOC0xNzYtMTc2LTE3NlM0OCAxMjYuOCA0OCAyMjRjMCA2Mi4xIDMyLjEgMTE2LjYgODAuNiAxNDhjMS4yIDE3LjMgNCAzOCA3LjIgNTcuMWwuMiAxQzU2IDM5NS44IDAgMzE2LjUgMCAyMjRDMCAxMDAuMyAxMDAuMyAwIDIyNCAwUzQ0OCAxMDAuMyA0NDggMjI0YzAgOTIuNS01NiAxNzEuOS0xMzYgMjA2LjFsLjItMS4xYzMuMS0xOS4yIDYtMzkuOCA3LjItNTd6bS0yLjMtMzguMWMtMS42LTUuNy0zLjktMTEuMS03LTE2LjJjLTUuOC05LjctMTMuNS0xNy0yMS45LTIyLjRjMTkuNS0xNy42IDMxLjgtNDMgMzEuOC03MS4zYzAtNTMtNDMtOTYtOTYtOTZzLTk2IDQzLTk2IDk2YzAgMjguMyAxMi4zIDUzLjggMzEuOCA3MS4zYy04LjQgNS40LTE2LjEgMTIuNy0yMS45IDIyLjRjLTMuMSA1LjEtNS40IDEwLjUtNyAxNi4yQzk5LjggMzA3LjUgODAgMjY4IDgwIDIyNGMwLTc5LjUgNjQuNS0xNDQgMTQ0LTE0NHMxNDQgNjQuNSAxNDQgMTQ0YzAgNDQtMTkuOCA4My41LTUwLjkgMTA5Ljl6TTIyNCAzMTJjMzIuOSAwIDY0IDguNiA2NCA0My44YzAgMzMtMTIuOSAxMDQuMS0yMC42IDEzMi45Yy01LjEgMTktMjQuNSAyMy40LTQzLjQgMjMuNHMtMzguMi00LjQtNDMuNC0yMy40Yy03LjgtMjguNS0yMC42LTk5LjctMjAuNi0xMzIuOGMwLTM1LjEgMzEuMS00My44IDY0LTQzLjh6bTAtMTQ0YTU2IDU2IDAgMSAxIDAgMTEyIDU2IDU2IDAgMSAxIDAtMTEyelwiXVxufTtcbmNvbnN0IGZhVGVtcGVyYXR1cmVGdWxsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RlbXBlcmF0dXJlLWZ1bGwnLFxuICBpY29uOiBbMzIwLCA1MTIsIFtcInRlbXBlcmF0dXJlLTRcIiwgXCJ0aGVybW9tZXRlci00XCIsIFwidGhlcm1vbWV0ZXItZnVsbFwiXSwgXCJmMmM3XCIsIFwiTTE2MCA2NGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhsMCAxNjQuNWMwIDE3LjMtNy4xIDMxLjktMTUuMyA0Mi41Qzg2LjIgMzMyLjYgODAgMzQ5LjUgODAgMzY4YzAgNDQuMiAzNS44IDgwIDgwIDgwczgwLTM1LjggODAtODBjMC0xOC41LTYuMi0zNS40LTE2LjctNDguOWMtOC4yLTEwLjYtMTUuMy0yNS4yLTE1LjMtNDIuNUwyMDggMTEyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek00OCAxMTJDNDggNTAuMiA5OC4xIDAgMTYwIDBzMTEyIDUwLjEgMTEyIDExMmwwIDE2NC40YzAgLjEgLjEgLjMgLjIgLjZjLjIgLjYgLjggMS42IDEuNyAyLjhjMTguOSAyNC40IDMwLjEgNTUgMzAuMSA4OC4xYzAgNzkuNS02NC41IDE0NC0xNDQgMTQ0UzE2IDQ0Ny41IDE2IDM2OGMwLTMzLjIgMTEuMi02My44IDMwLjEtODguMWMuOS0xLjIgMS41LTIuMiAxLjctMi44Yy4xLS4zIC4yLS41IC4yLS42TDQ4IDExMnpNMjA4IDM2OGMwIDI2LjUtMjEuNSA0OC00OCA0OHMtNDgtMjEuNS00OC00OGMwLTIwLjkgMTMuNC0zOC43IDMyLTQ1LjNMMTQ0IDExMmMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2bDAgMjEwLjdjMTguNiA2LjYgMzIgMjQuNCAzMiA0NS4zelwiXVxufTtcbmNvbnN0IGZhVGVtcGVyYXR1cmU0ID0gZmFUZW1wZXJhdHVyZUZ1bGw7XG5jb25zdCBmYVRoZXJtb21ldGVyNCA9IGZhVGVtcGVyYXR1cmVGdWxsO1xuY29uc3QgZmFUaGVybW9tZXRlckZ1bGwgPSBmYVRlbXBlcmF0dXJlRnVsbDtcbmNvbnN0IGZhQmVsbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdiZWxsJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbMTI4Mjc2LCA2MTYwMl0sIFwiZjBmM1wiLCBcIk0yMjQgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJsMCAxOS4yQzExOSA2NiA2NCAxMzAuNiA2NCAyMDhsMCAxOC44YzAgNDctMTcuMyA5Mi40LTQ4LjUgMTI3LjZsLTcuNCA4LjNjLTguNCA5LjQtMTAuNCAyMi45LTUuMyAzNC40UzE5LjQgNDE2IDMyIDQxNmwzODQgMGMxMi42IDAgMjQtNy40IDI5LjItMTguOXMzLjEtMjUtNS4zLTM0LjRsLTcuNC04LjNDNDAxLjMgMzE5LjIgMzg0IDI3My45IDM4NCAyMjYuOGwwLTE4LjhjMC03Ny40LTU1LTE0Mi0xMjgtMTU2LjhMMjU2IDMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyem00NS4zIDQ5My4zYzEyLTEyIDE4LjctMjguMyAxOC43LTQ1LjNsLTY0IDAtNjQgMGMwIDE3IDYuNyAzMy4zIDE4LjcgNDUuM3MyOC4zIDE4LjcgNDUuMyAxOC43czMzLjMtNi43IDQ1LjMtMTguN3pcIl1cbn07XG5jb25zdCBmYVN1cGVyc2NyaXB0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3N1cGVyc2NyaXB0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMTJiXCIsIFwiTTQ4MCAzMmMwLTExLjEtNS43LTIxLjQtMTUuMi0yNy4ycy0yMS4yLTYuNC0zMS4xLTEuNGwtMzIgMTZjLTE1LjggNy45LTIyLjIgMjcuMS0xNC4zIDQyLjlDMzkzIDczLjUgNDA0LjMgODAgNDE2IDgwbDAgODBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsMzIgMCAzMiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybDAtMTI4ek0zMiA2NEMxNC4zIDY0IDAgNzguMyAwIDk2czE0LjMgMzIgMzIgMzJsMTUuMyAwIDg5LjYgMTI4TDQ3LjMgMzg0IDMyIDM4NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwzMiAwYzEwLjQgMCAyMC4yLTUuMSAyNi4yLTEzLjZMMTc2IDMxMS44bDg1LjggMTIyLjZjNiA4LjYgMTUuOCAxMy42IDI2LjIgMTMuNmwzMiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC0xNS4zIDBMMjE1LjEgMjU2bDg5LjYtMTI4IDE1LjMgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtMzIgMGMtMTAuNCAwLTIwLjIgNS4xLTI2LjIgMTMuNkwxNzYgMjAwLjIgOTAuMiA3Ny42Qzg0LjIgNjkuMSA3NC40IDY0IDY0IDY0TDMyIDY0elwiXVxufTtcbmNvbnN0IGZhUGx1Z0NpcmNsZVhtYXJrID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BsdWctY2lyY2xlLXhtYXJrJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJlNTYwXCIsIFwiTTk2IDBDNzguMyAwIDY0IDE0LjMgNjQgMzJsMCA5NiA2NCAwIDAtOTZjMC0xNy43LTE0LjMtMzItMzItMzJ6TTI4OCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMmwwIDk2IDY0IDAgMC05NmMwLTE3LjctMTQuMy0zMi0zMi0zMnpNMzIgMTYwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDAgMzJjMCA3Ny40IDU1IDE0MiAxMjggMTU2LjhsMCA2Ny4yYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC02Ny4yYzEyLjMtMi41IDI0LjEtNi40IDM1LjEtMTEuNWMtMi4xLTEwLjgtMy4xLTIxLjktMy4xLTMzLjNjMC04MC4zIDUzLjgtMTQ4IDEyNy4zLTE2OS4yYy41LTIuMiAuNy00LjUgLjctNi44YzAtMTcuNy0xNC4zLTMyLTMyLTMyTDMyIDE2MHpNNDMyIDUxMmExNDQgMTQ0IDAgMSAwIDAtMjg4IDE0NCAxNDQgMCAxIDAgMCAyODh6bTU5LjMtMTgwLjdMNDU0LjYgMzY4bDM2LjcgMzYuN2M2LjIgNi4yIDYuMiAxNi40IDAgMjIuNnMtMTYuNCA2LjItMjIuNiAwTDQzMiAzOTAuNmwtMzYuNyAzNi43Yy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMHMtNi4yLTE2LjQgMC0yMi42TDQwOS40IDM2OGwtMzYuNy0zNi43Yy02LjItNi4yLTYuMi0xNi40IDAtMjIuNnMxNi40LTYuMiAyMi42IDBMNDMyIDM0NS40bDM2LjctMzYuN2M2LjItNi4yIDE2LjQtNi4yIDIyLjYgMHM2LjIgMTYuNCAwIDIyLjZ6XCJdXG59O1xuY29uc3QgZmFTdGFyT2ZMaWZlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3N0YXItb2YtbGlmZScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjYyMVwiLCBcIk0yMDggMzJjMC0xNy43IDE0LjMtMzIgMzItMzJsMzIgMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDE0MC45IDEyMi03MC40YzE1LjMtOC44IDM0LjktMy42IDQzLjcgMTEuN2wxNiAyNy43YzguOCAxNS4zIDMuNiAzNC45LTExLjcgNDMuN0wzNTIgMjU2bDEyMiA3MC40YzE1LjMgOC44IDIwLjYgMjguNCAxMS43IDQzLjdsLTE2IDI3LjdjLTguOCAxNS4zLTI4LjQgMjAuNi00My43IDExLjdMMzA0IDMzOS4xIDMwNCA0ODBjMCAxNy43LTE0LjMgMzItMzIgMzJsLTMyIDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtMTQwLjlMODYgNDA5LjZjLTE1LjMgOC44LTM0LjkgMy42LTQzLjctMTEuN2wtMTYtMjcuN2MtOC44LTE1LjMtMy42LTM0LjkgMTEuNy00My43TDE2MCAyNTYgMzggMTg1LjZjLTE1LjMtOC44LTIwLjUtMjguNC0xMS43LTQzLjdsMTYtMjcuN0M1MS4xIDk4LjggNzAuNyA5My42IDg2IDEwMi40bDEyMiA3MC40TDIwOCAzMnpcIl1cbn07XG5jb25zdCBmYVBob25lU2xhc2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGhvbmUtc2xhc2gnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImYzZGRcIiwgXCJNMjI4LjkgMjQuNmMtNy43LTE4LjYtMjgtMjguNS00Ny40LTIzLjJsLTg4IDI0Qzc2LjEgMzAuMiA2NCA0NiA2NCA2NGMwIDEwNy40IDM3LjggMjA2IDEwMC44IDI4My4xTDkuMiA0NjkuMWMtMTAuNCA4LjItMTIuMyAyMy4zLTQuMSAzMy43czIzLjMgMTIuMyAzMy43IDQuMWw1OTItNDY0YzEwLjQtOC4yIDEyLjMtMjMuMyA0LjEtMzMuN3MtMjMuMy0xMi4zLTMzLjctNC4xTDI1MyAyNzhjLTE3LjgtMjEuNS0zMi45LTQ1LjItNDUtNzAuN0wyNTcuMyAxNjdjMTMuNy0xMS4yIDE4LjQtMzAgMTEuNi00Ni4zbC00MC05NnptOTYuOCAzMTlsLTkxLjMgNzJDMzEwLjcgNDc2IDQwNy4xIDUxMiA1MTIgNTEyYzE4IDAgMzMuOC0xMi4xIDM4LjYtMjkuNWwyNC04OGM1LjMtMTkuNC00LjYtMzkuNy0yMy4yLTQ3LjRsLTk2LTQwYy0xNi4zLTYuOC0zNS4yLTIuMS00Ni4zIDExLjZMMzY4LjcgMzY4Yy0xNS03LjEtMjkuMy0xNS4yLTQzLTI0LjN6XCJdXG59O1xuY29uc3QgZmFQYWludFJvbGxlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwYWludC1yb2xsZXInLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY1YWFcIiwgXCJNMCA2NEMwIDI4LjcgMjguNyAwIDY0IDBMMzUyIDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCA2NGMwIDM1LjMtMjguNyA2NC02NCA2NEw2NCAxOTJjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgNjR6TTE2MCAzNTJjMC0xNy43IDE0LjMtMzIgMzItMzJsMC0xNmMwLTQ0LjIgMzUuOC04MCA4MC04MGwxNDQgMGMxNy43IDAgMzItMTQuMyAzMi0zMmwwLTMyIDAtOTAuNWMzNy4zIDEzLjIgNjQgNDguNyA2NCA5MC41bDAgMzJjMCA1My00MyA5Ni05NiA5NmwtMTQ0IDBjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDE2YzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgMTI4YzAgMTcuNy0xNC4zIDMyLTMyIDMybC02NCAwYy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTEyOHpcIl1cbn07XG5jb25zdCBmYUhhbmRzaGFrZUFuZ2xlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hhbmRzaGFrZS1hbmdsZScsXG4gIGljb246IFs2NDAsIDUxMiwgW1wiaGFuZHMtaGVscGluZ1wiXSwgXCJmNGM0XCIsIFwiTTU0NCAyNDhsMCAzLjMgNjkuNy02OS43YzIxLjktMjEuOSAyMS45LTU3LjMgMC03OS4yTDUzNS42IDI0LjRjLTIxLjktMjEuOS01Ny4zLTIxLjktNzkuMiAwTDQxNi4zIDY0LjVjLTIuNy0uMy01LjUtLjUtOC4zLS41TDI5NiA2NGMtMzcuMSAwLTY3LjYgMjgtNzEuNiA2NGwtLjQgMCAwIDEyMGMwIDIyLjEgMTcuOSA0MCA0MCA0MHM0MC0xNy45IDQwLTQwbDAtNzJjMCAwIDAtLjEgMC0uMWwwLTE1LjkgMTYgMCAxMzYgMGMwIDAgMCAwIC4xIDBsNy45IDBjNDQuMiAwIDgwIDM1LjggODAgODBsMCA4ek0zMzYgMTkybDAgNTZjMCAzOS44LTMyLjIgNzItNzIgNzJzLTcyLTMyLjItNzItNzJsMC0xMTguNmMtMzUuOSA2LjItNjUuOCAzMi4zLTc2IDY4LjJMOTkuNSAyNTUuMiAyNi4zIDMyOC40Yy0yMS45IDIxLjktMjEuOSA1Ny4zIDAgNzkuMmw3OC4xIDc4LjFjMjEuOSAyMS45IDU3LjMgMjEuOSA3OS4yIDBsMzcuNy0zNy43Yy45IDAgMS44IC4xIDIuNyAuMWwxNjAgMGMyNi41IDAgNDgtMjEuNSA0OC00OGMwLTUuNi0xLTExLTIuNy0xNmwyLjcgMGMyNi41IDAgNDgtMjEuNSA0OC00OGMwLTEyLjgtNS0yNC40LTEzLjItMzNjMjUuNy01IDQ1LjEtMjcuNiA0NS4yLTU0LjhsMC0uNGMtLjEtMzAuOC0yNS4xLTU1LjgtNTYtNTUuOGMwIDAgMCAwIDAgMGwtMTIwIDB6XCJdXG59O1xuY29uc3QgZmFIYW5kc0hlbHBpbmcgPSBmYUhhbmRzaGFrZUFuZ2xlO1xuY29uc3QgZmFMb2NhdGlvbkRvdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdsb2NhdGlvbi1kb3QnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtcIm1hcC1tYXJrZXItYWx0XCJdLCBcImYzYzVcIiwgXCJNMjE1LjcgNDk5LjJDMjY3IDQzNSAzODQgMjc5LjQgMzg0IDE5MkMzODQgODYgMjk4IDAgMTkyIDBTMCA4NiAwIDE5MmMwIDg3LjQgMTE3IDI0MyAxNjguMyAzMDcuMmMxMi4zIDE1LjMgMzUuMSAxNS4zIDQ3LjQgMHpNMTkyIDEyOGE2NCA2NCAwIDEgMSAwIDEyOCA2NCA2NCAwIDEgMSAwLTEyOHpcIl1cbn07XG5jb25zdCBmYU1hcE1hcmtlckFsdCA9IGZhTG9jYXRpb25Eb3Q7XG5jb25zdCBmYUZpbGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmlsZScsXG4gIGljb246IFszODQsIDUxMiwgWzEyODE5NiwgMTI4NDU5LCA2MTQ2Ml0sIFwiZjE1YlwiLCBcIk0wIDY0QzAgMjguNyAyOC43IDAgNjQgMEwyMjQgMGwwIDEyOGMwIDE3LjcgMTQuMyAzMiAzMiAzMmwxMjggMCAwIDI4OGMwIDM1LjMtMjguNyA2NC02NCA2NEw2NCA1MTJjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgNjR6bTM4NCA2NGwtMTI4IDBMMjU2IDAgMzg0IDEyOHpcIl1cbn07XG5jb25zdCBmYUdyZWF0ZXJUaGFuID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2dyZWF0ZXItdGhhbicsXG4gIGljb246IFszODQsIDUxMiwgWzYyNzY5XSwgXCIzZVwiLCBcIk0zLjQgODEuN2MtNy45IDE1LjgtMS41IDM1IDE0LjMgNDIuOUwyODAuNSAyNTYgMTcuNyAzODcuNEMxLjkgMzk1LjMtNC41IDQxNC41IDMuNCA0MzAuM3MyNy4xIDIyLjIgNDIuOSAxNC4zbDMyMC0xNjBjMTAuOC01LjQgMTcuNy0xNi41IDE3LjctMjguNnMtNi44LTIzLjItMTcuNy0yOC42bC0zMjAtMTYwYy0xNS44LTcuOS0zNS0xLjUtNDIuOSAxNC4zelwiXVxufTtcbmNvbnN0IGZhUGVyc29uU3dpbW1pbmcgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGVyc29uLXN3aW1taW5nJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbMTI3OTQ2LCBcInN3aW1tZXJcIl0sIFwiZjVjNFwiLCBcIk0zMDkuNSAxNzguNEw0NDcuOSAyOTcuMWMtMS42IC45LTMuMiAyLTQuOCAzYy0xOCAxMi40LTQwLjEgMjAuMy01OS4yIDIwLjNjLTE5LjYgMC00MC44LTcuNy01OS4yLTIwLjNjLTIyLjEtMTUuNS01MS42LTE1LjUtNzMuNyAwYy0xNy4xIDExLjgtMzggMjAuMy01OS4yIDIwLjNjLTEwLjEgMC0yMS4xLTIuMi0zMS45LTYuMkMxNjMuMSAxOTMuMiAyNjIuMiA5NiAzODQgOTZsNjQgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtNjQgMGMtMjYuOSAwLTUyLjMgNi42LTc0LjUgMTguNHpNMTYwIDE2MEE2NCA2NCAwIDEgMSAzMiAxNjBhNjQgNjQgMCAxIDEgMTI4IDB6TTMwNi41IDMyNS45QzMyOSAzNDEuNCAzNTYuNSAzNTIgMzg0IDM1MmMyNi45IDAgNTUuNC0xMC44IDc3LjQtMjYuMWMwIDAgMCAwIDAgMGMxMS45LTguNSAyOC4xLTcuOCAzOS4yIDEuN2MxNC40IDExLjkgMzIuNSAyMSA1MC42IDI1LjJjMTcuMiA0IDI3LjkgMjEuMiAyMy45IDM4LjRzLTIxLjIgMjcuOS0zOC40IDIzLjljLTI0LjUtNS43LTQ0LjktMTYuNS01OC4yLTI1QzQ0OS41IDQwNS43IDQxNyA0MTYgMzg0IDQxNmMtMzEuOSAwLTYwLjYtOS45LTgwLjQtMTguOWMtNS44LTIuNy0xMS4xLTUuMy0xNS42LTcuN2MtNC41IDIuNC05LjcgNS4xLTE1LjYgNy43Yy0xOS44IDktNDguNSAxOC45LTgwLjQgMTguOWMtMzMgMC02NS41LTEwLjMtOTQuNS0yNS44Yy0xMy40IDguNC0zMy43IDE5LjMtNTguMiAyNWMtMTcuMiA0LTM0LjQtNi43LTM4LjQtMjMuOXM2LjctMzQuNCAyMy45LTM4LjRjMTguMS00LjIgMzYuMi0xMy4zIDUwLjYtMjUuMmMxMS4xLTkuNCAyNy4zLTEwLjEgMzkuMi0xLjdjMCAwIDAgMCAwIDBDMTM2LjcgMzQxLjIgMTY1LjEgMzUyIDE5MiAzNTJjMjcuNSAwIDU1LTEwLjYgNzcuNS0yNi4xYzExLjEtNy45IDI1LjktNy45IDM3IDB6XCJdXG59O1xuY29uc3QgZmFTd2ltbWVyID0gZmFQZXJzb25Td2ltbWluZztcbmNvbnN0IGZhQXJyb3dEb3duID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Fycm93LWRvd24nLFxuICBpY29uOiBbMzg0LCA1MTIsIFs4NTk1XSwgXCJmMDYzXCIsIFwiTTE2OS40IDQ3MC42YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDE2MC0xNjBjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBMMjI0IDM3MC44IDIyNCA2NGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMmwwIDMwNi43TDU0LjYgMjY1LjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zbDE2MCAxNjB6XCJdXG59O1xuY29uc3QgZmFEcm9wbGV0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Ryb3BsZXQnLFxuICBpY29uOiBbMzg0LCA1MTIsIFsxMjgxNjcsIFwidGludFwiXSwgXCJmMDQzXCIsIFwiTTE5MiA1MTJDODYgNTEyIDAgNDI2IDAgMzIwQzAgMjI4LjggMTMwLjIgNTcuNyAxNjYuNiAxMS43QzE3Mi42IDQuMiAxODEuNSAwIDE5MS4xIDBsMS44IDBjOS42IDAgMTguNSA0LjIgMjQuNSAxMS43QzI1My44IDU3LjcgMzg0IDIyOC44IDM4NCAzMjBjMCAxMDYtODYgMTkyLTE5MiAxOTJ6TTk2IDMzNmMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNmMwIDYxLjkgNTAuMSAxMTIgMTEyIDExMmM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNmMtNDQuMiAwLTgwLTM1LjgtODAtODB6XCJdXG59O1xuY29uc3QgZmFUaW50ID0gZmFEcm9wbGV0O1xuY29uc3QgZmFFcmFzZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZXJhc2VyJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmMTJkXCIsIFwiTTI5MC43IDU3LjRMNTcuNCAyOTAuN2MtMjUgMjUtMjUgNjUuNSAwIDkwLjVsODAgODBjMTIgMTIgMjguMyAxOC43IDQ1LjMgMTguN0wyODggNDgwbDkuNCAwTDUxMiA0ODBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTEyNC4xIDBMNTE4LjYgMjg1LjNjMjUtMjUgMjUtNjUuNSAwLTkwLjVMMzgxLjMgNTcuNGMtMjUtMjUtNjUuNS0yNS05MC41IDB6TTI5Ny40IDQxNmwtOS40IDAtMTA1LjQgMC04MC04MEwyMjcuMyAyMTEuMyAzNjQuNyAzNDguNyAyOTcuNCA0MTZ6XCJdXG59O1xuY29uc3QgZmFFYXJ0aEFtZXJpY2FzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2VhcnRoLWFtZXJpY2FzJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI3NzU4LCBcImVhcnRoXCIsIFwiZWFydGgtYW1lcmljYVwiLCBcImdsb2JlLWFtZXJpY2FzXCJdLCBcImY1N2RcIiwgXCJNNTcuNyAxOTNsOS40IDE2LjRjOC4zIDE0LjUgMjEuOSAyNS4yIDM4IDI5LjhMMTYzIDI1NS43YzE3LjIgNC45IDI5IDIwLjYgMjkgMzguNWwwIDM5LjljMCAxMSA2LjIgMjEgMTYgMjUuOXMxNiAxNC45IDE2IDI1LjlsMCAzOWMwIDE1LjYgMTQuOSAyNi45IDI5LjkgMjIuNmMxNi4xLTQuNiAyOC42LTE3LjUgMzIuNy0zMy44bDIuOC0xMS4yYzQuMi0xNi45IDE1LjItMzEuNCAzMC4zLTQwbDguMS00LjZjMTUtOC41IDI0LjItMjQuNSAyNC4yLTQxLjdsMC04LjNjMC0xMi43LTUuMS0yNC45LTE0LjEtMzMuOWwtMy45LTMuOWMtOS05LTIxLjItMTQuMS0zMy45LTE0LjFMMjU3IDI1NmMtMTEuMSAwLTIyLjEtMi45LTMxLjgtOC40bC0zNC41LTE5LjdjLTQuMy0yLjUtNy42LTYuNS05LjItMTEuMmMtMy4yLTkuNiAxLjEtMjAgMTAuMi0yNC41bDUuOS0zYzYuNi0zLjMgMTQuMy0zLjkgMjEuMy0xLjVsMjMuMiA3LjdjOC4yIDIuNyAxNy4yLS40IDIxLjktNy41YzQuNy03IDQuMi0xNi4zLTEuMi0yMi44bC0xMy42LTE2LjNjLTEwLTEyLTkuOS0yOS41IC4zLTQxLjNsMTUuNy0xOC4zYzguOC0xMC4zIDEwLjItMjUgMy41LTM2LjdsLTIuNC00LjJjLTMuNS0uMi02LjktLjMtMTAuNC0uM0MxNjMuMSA0OCA4NC40IDEwOC45IDU3LjcgMTkzek00NjQgMjU2YzAtMzYuOC05LjYtNzEuNC0yNi40LTEwMS41TDQxMiAxNjQuOGMtMTUuNyA2LjMtMjMuOCAyMy44LTE4LjUgMzkuOGwxNi45IDUwLjdjMy41IDEwLjQgMTIgMTguMyAyMi42IDIwLjlsMjkuMSA3LjNjMS4yLTkgMS44LTE4LjIgMS44LTI3LjV6TTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnpcIl1cbn07XG5jb25zdCBmYUVhcnRoID0gZmFFYXJ0aEFtZXJpY2FzO1xuY29uc3QgZmFFYXJ0aEFtZXJpY2EgPSBmYUVhcnRoQW1lcmljYXM7XG5jb25zdCBmYUdsb2JlQW1lcmljYXMgPSBmYUVhcnRoQW1lcmljYXM7XG5jb25zdCBmYVBlcnNvbkJ1cnN0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BlcnNvbi1idXJzdCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTUzYlwiLCBcIk00ODAgOTZhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2em0tOCAzODRsMC0xMjggMTYgMCAwIDEyOGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMjIzLjEgMjguNiA0Ny41YzkuMSAxNS4xIDI4LjggMjAgNDMuOSAxMC45czIwLTI4LjggMTAuOS00My45bC01OC4zLTk3Yy0xNy40LTI4LjktNDguNi00Ni42LTgyLjMtNDYuNmwtMjkuNyAwYy0zMy43IDAtNjQuOSAxNy43LTgyLjMgNDYuNmwtNTguMyA5N2MtOS4xIDE1LjEtNC4yIDM0LjggMTAuOSA0My45czM0LjggNC4yIDQzLjktMTAuOUw0MDggMjU2LjkgNDA4IDQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyek0xOTAuOSAxOC4xQzE4OC40IDEyIDE4Mi42IDggMTc2IDhzLTEyLjQgNC0xNC45IDEwLjFsLTI5LjQgNzRMNTUuNiA2OC45Yy02LjMtMS45LTEzLjEgLjItMTcuMiA1LjNzLTQuNiAxMi4yLTEuNCAxNy45bDM5LjUgNjkuMUwxMC45IDIwNi40Yy01LjQgMy43LTggMTAuMy02LjUgMTYuN3M2LjcgMTEuMiAxMy4xIDEyLjJsNzguNyAxMi4yTDkwLjYgMzI3Yy0uNSA2LjUgMy4xIDEyLjcgOSAxNS41czEyLjkgMS44IDE3LjgtMi42TDE3NiAyODYuMWw1OC42IDUzLjljNC44IDQuNCAxMS45IDUuNSAxNy44IDIuNnM5LjUtOSA5LTE1LjVsLTUuNi03OS40IDUwLjUtNy44IDI0LjMtNDAuNS01NS4yLTM4TDMxNSA5Mi4yYzMuMy01LjcgMi43LTEyLjgtMS40LTE3LjlzLTEwLjktNy4yLTE3LjItNS4zTDIyMC4zIDkyLjFsLTI5LjQtNzR6XCJdXG59O1xuY29uc3QgZmFEb3ZlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2RvdmUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjgzMzBdLCBcImY0YmFcIiwgXCJNMTYwLjggOTYuNWMxNCAxNyAzMSAzMC45IDQ5LjUgNDIuMmMyNS45IDE1LjggNTMuNyAyNS45IDc3LjcgMzEuNmwwLTMxLjVDMjY1LjggMTA4LjUgMjUwIDcxLjUgMjQ4LjYgMjhjLS40LTExLjMtNy41LTIxLjUtMTguNC0yNC40Yy03LjYtMi0xNS44LS4yLTIxIDUuOGMtMTMuMyAxNS40LTMyLjcgNDQuNi00OC40IDg3LjJ6TTMyMCAxNDRsMCAzMC42czAgMCAwIDBsMCAxLjNzMCAwIDAgMGwwIDMyLjFjLTYwLjgtNS4xLTE4NS00My44LTIxOS4zLTE1Ny4yQzk3LjQgNDAgODcuOSAzMiA3Ni42IDMyYy03LjkgMC0xNS4zIDMuOS0xOC44IDExQzQ2LjggNjUuOSAzMiAxMTIuMSAzMiAxNzZjMCAxMTYuOSA4MC4xIDE4MC41IDExOC40IDIwMi44TDExLjggNDE2LjZDNi43IDQxOCAyLjYgNDIxLjggLjkgNDI2LjhzLS44IDEwLjYgMi4zIDE0LjhDMjEuNyA0NjYuMiA3Ny4zIDUxMiAxNjAgNTEyYzMuNiAwIDcuMi0xLjIgMTAtMy41TDI0NS42IDQ0OGw3NC40IDBjODguNCAwIDE2MC03MS42IDE2MC0xNjBsMC0xNjAgMjkuOS00NC45YzEuMy0yIDIuMS00LjQgMi4xLTYuOGMwLTYuOC01LjUtMTIuMy0xMi4zLTEyLjNMNDAwIDY0Yy00NC4yIDAtODAgMzUuOC04MCA4MHptODAtMTZhMTYgMTYgMCAxIDEgMCAzMiAxNiAxNiAwIDEgMSAwLTMyelwiXVxufTtcbmNvbnN0IGZhQmF0dGVyeUVtcHR5ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JhdHRlcnktZW1wdHknLFxuICBpY29uOiBbNTc2LCA1MTIsIFtcImJhdHRlcnktMFwiXSwgXCJmMjQ0XCIsIFwiTTgwIDE2MGMtOC44IDAtMTYgNy4yLTE2IDE2bDAgMTYwYzAgOC44IDcuMiAxNiAxNiAxNmwzODQgMGM4LjggMCAxNi03LjIgMTYtMTZsMC0xNjBjMC04LjgtNy4yLTE2LTE2LTE2TDgwIDE2MHpNMCAxNzZjMC00NC4yIDM1LjgtODAgODAtODBsMzg0IDBjNDQuMiAwIDgwIDM1LjggODAgODBsMCAxNmMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDY0YzAgMTcuNy0xNC4zIDMyLTMyIDMybDAgMTZjMCA0NC4yLTM1LjggODAtODAgODBMODAgNDE2Yy00NC4yIDAtODAtMzUuOC04MC04MEwwIDE3NnpcIl1cbn07XG5jb25zdCBmYUJhdHRlcnkwID0gZmFCYXR0ZXJ5RW1wdHk7XG5jb25zdCBmYVNvY2tzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NvY2tzJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI5NTEwXSwgXCJmNjk2XCIsIFwiTTE3NS4yIDQ3Ni42Yy05LjctMTgtMTUuMi0zOC43LTE1LjItNjAuNmMwLTQwLjMgMTktNzguMiA1MS4yLTEwMi40bDY0LTQ4YzguMS02IDEyLjgtMTUuNSAxMi44LTI1LjZsMC0xNDRMMTI4IDk2bDAgMTQ0YzAgMjAuMS05LjUgMzkuMS0yNS42IDUxLjJsLTY0IDQ4QzE0LjIgMzU3LjMgMCAzODUuOCAwIDQxNmMwIDUzIDQzIDk2IDk2IDk2YzIwLjggMCA0MS02LjcgNTcuNi0xOS4ybDIxLjYtMTYuMnpNMTI4IDY0bDE2MCAwIDAtMTZjMC0xNC41IDMuOS0yOC4yIDEwLjctMzkuOUMyOTEgMyAyODEuOSAwIDI3MiAwTDE3NiAwYy0yNi41IDAtNDggMjEuNS00OCA0OGwwIDE2ek0zMjAgOTZsMCAxNDRjMCAyMC4xLTkuNSAzOS4xLTI1LjYgNTEuMmwtNjQgNDhDMjA2LjIgMzU3LjMgMTkyIDM4NS44IDE5MiA0MTZjMCA1MyA0MyA5NiA5NiA5NmMyMC44IDAgNDEtNi43IDU3LjYtMTkuMmwxMTUuMi04Ni40QzQ5MyAzODIuMiA1MTIgMzQ0LjMgNTEyIDMwNGwwLTIwOEwzMjAgOTZ6TTUxMiA2NGwwLTE2YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4TDM2OCAwYy0yNi41IDAtNDggMjEuNS00OCA0OGwwIDE2IDE5MiAwelwiXVxufTtcbmNvbnN0IGZhSW5ib3ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaW5ib3gnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwMWNcIiwgXCJNMTIxIDMyQzkxLjYgMzIgNjYgNTIgNTguOSA4MC41TDEuOSAzMDguNEMuNiAzMTMuNSAwIDMxOC43IDAgMzIzLjlMMCA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzg0IDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC05Mi4xYzAtNS4yLS42LTEwLjQtMS45LTE1LjVsLTU3LTIyNy45QzQ0NiA1MiA0MjAuNCAzMiAzOTEgMzJMMTIxIDMyem0wIDY0bDI3MCAwIDQ4IDE5Mi01MS4yIDBjLTEyLjEgMC0yMy4yIDYuOC0yOC42IDE3LjdsLTE0LjMgMjguNmMtNS40IDEwLjgtMTYuNSAxNy43LTI4LjYgMTcuN2wtMTIwLjQgMGMtMTIuMSAwLTIzLjItNi44LTI4LjYtMTcuN2wtMTQuMy0yOC42Yy01LjQtMTAuOC0xNi41LTE3LjctMjguNi0xNy43TDczIDI4OCAxMjEgOTZ6XCJdXG59O1xuY29uc3QgZmFTZWN0aW9uID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NlY3Rpb24nLFxuICBpY29uOiBbMjU2LCA1MTIsIFtdLCBcImU0NDdcIiwgXCJNNjQuOSA5NkM2Ny4xIDg0LjQgNzMuNyA3Ni4yIDg2IDcwLjZjMTMuOC02LjIgMzQuOC04LjkgNjEuMi00LjVjOC44IDEuNCAzNi4xIDcuMSA0NC4xIDkuM2MxNyA0LjggMzQuNy01LjEgMzkuNS0yMi4ycy01LjEtMzQuNy0yMi4yLTM5LjVjLTExLjEtMy4xLTQxLTkuMi01MC45LTEwLjhDMTIzLTIuNyA4OC4zLS42IDU5LjcgMTIuM0MyOS45IDI1LjggNy41IDUwLjkgMS42IDg2LjVjLS4xIC41LS4yIDEuMS0uMiAxLjZjLTIuMiAxOS43IC4zIDM3LjkgOC4xIDU0LjFjNy43IDE2LjEgMTkuNCAyOCAzMiAzNi45Yy42IC41IDEuMyAuOSAyIDEuNEMyMi4zIDE5NC4yIDYuNSAyMTUuMSAxLjcgMjQzYy0uMSAuNi0uMiAxLjEtLjIgMS43Yy0yLjMgMTkuMyAuNCAzNy4xIDguNCA1M2M3LjkgMTUuNiAxOS44IDI3IDMyLjMgMzUuNWMyMi40IDE1LjIgNTEuOSAyNCA3NS40IDMxYzAgMCAwIDAgMCAwbDMuNyAxLjFjMjcuMiA4LjIgNDYuOSAxNC42IDU5LjQgMjMuOGM1LjUgNCA4LjIgNy42IDkuNSAxMC45YzEuMyAzLjIgMi42IDguNiAuOSAxOC4xYy0xLjcgMTAuMS03LjcgMTgtMjAuNyAyMy41Yy0xNCA2LTM1LjQgOC41LTYyIDQuNGMtMTIuOC0yLjEtMzUuMS05LjctNTQuMS0xNi4yYzAgMCAwIDAgMCAwYy00LjMtMS41LTguNS0yLjktMTIuMy00LjJDMjUuMyA0MjAgNy4yIDQyOS4xIDEuNiA0NDUuOHMzLjUgMzQuOSAyMC4zIDQwLjVjMi42IC44IDUuNyAxLjkgOS4yIDMuMWMxOC42IDYuMyA0OC41IDE2LjYgNjcuMyAxOS42YzAgMCAwIDAgMCAwbC4yIDBjMzQuNSA1LjQgNjguOCAzLjQgOTcuMi04LjdjMjkuNC0xMi42IDUyLjUtMzYuNSA1OC41LTcxLjVjMy4zLTE5LjMgMS45LTM3LjQtNS01My45Yy02LjMtMTUtMTYuNC0yNi40LTI3LjYtMzUuMmMxNi41LTEzLjkgMjguNS0zMy4yIDMyLjYtNTguMmMzLjItMTkuOCAxLjktMzguMy00LjgtNTUuMWMtNi43LTE2LjgtMTcuOC0yOS40LTMwLjItMzljLTIyLjgtMTcuNi01My42LTI3LjQtNzcuNy0zNWwtMS40LS41Yy0yNy40LTguNy00Ny44LTE1LjMtNjEuNS0yNWMtNi4xLTQuNC05LjUtOC41LTExLjQtMTIuNGMtMS44LTMuNy0zLjItOS4zLTIuMy0xOC41em03Ni43IDIwOC41bC0uNi0uMi0xLjQtLjRjLTI3LjQtOC4yLTQ3LjktMTQuNS02MS43LTIzLjhjLTYuMi00LjItOS4zLTcuOS0xMS0xMS4zYy0xLjUtMy0yLjktNy43LTIuMS0xNS43YzEuOS05LjcgNy45LTE3LjMgMjAuNS0yMi43YzE0LTYgMzUuNC04LjUgNjIuMS00LjNsMTYuNCAyLjZjNi4zIDIuOSAxMS43IDYgMTYuMiA5LjVjNS41IDQuMiA4LjQgOC4yIDEwIDEyLjJjMS42IDQgMi44IDEwLjQgMS4xIDIwLjljLTIuNCAxNC43LTEyLjggMjYuNC0zNy4xIDMxbC0xMi40IDIuM3pcIl1cbn07XG5jb25zdCBmYUdhdWdlSGlnaCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdnYXVnZS1oaWdoJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbNjI0NjEsIFwidGFjaG9tZXRlci1hbHRcIiwgXCJ0YWNob21ldGVyLWFsdC1mYXN0XCJdLCBcImY2MjVcIiwgXCJNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2ek0yODggOTZhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHpNMjU2IDQxNmMzNS4zIDAgNjQtMjguNyA2NC02NGMwLTE3LjQtNi45LTMzLjEtMTguMS00NC42TDM2NiAxNjEuN2M1LjMtMTIuMS0uMi0yNi4zLTEyLjMtMzEuNnMtMjYuMyAuMi0zMS42IDEyLjNMMjU3LjkgMjg4Yy0uNiAwLTEuMyAwLTEuOSAwYy0zNS4zIDAtNjQgMjguNy02NCA2NHMyOC43IDY0IDY0IDY0ek0xNzYgMTQ0YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6TTk2IDI4OGEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6bTM1Mi0zMmEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwelwiXVxufTtcbmNvbnN0IGZhVGFjaG9tZXRlckFsdCA9IGZhR2F1Z2VIaWdoO1xuY29uc3QgZmFUYWNob21ldGVyQWx0RmFzdCA9IGZhR2F1Z2VIaWdoO1xuY29uc3QgZmFFbnZlbG9wZU9wZW5UZXh0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2VudmVsb3BlLW9wZW4tdGV4dCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjY1OFwiLCBcIk0yMTUuNCA5NkwxNDQgOTZsLTM2LjIgMEw5NiA5NmwwIDguOEw5NiAxNDRsMCA0MC40IDAgODlMLjIgMjAyLjVjMS42LTE4LjEgMTAuOS0zNC45IDI1LjctNDUuOEw0OCAxNDAuMyA0OCA5NmMwLTI2LjUgMjEuNS00OCA0OC00OGw3Ni42IDAgNDkuOS0zNi45QzIzMi4yIDMuOSAyNDMuOSAwIDI1NiAwczIzLjggMy45IDMzLjUgMTFMMzM5LjQgNDggNDE2IDQ4YzI2LjUgMCA0OCAyMS41IDQ4IDQ4bDAgNDQuMyAyMi4xIDE2LjRjMTQuOCAxMC45IDI0LjEgMjcuNyAyNS43IDQ1LjhMNDE2IDI3My40bDAtODkgMC00MC40IDAtMzkuMiAwLTguOC0xMS44IDBMMzY4IDk2bC03MS40IDAtODEuMyAwek0wIDQ0OEwwIDI0Mi4xIDIxNy42IDQwMy4zYzExLjEgOC4yIDI0LjYgMTIuNyAzOC40IDEyLjdzMjcuMy00LjQgMzguNC0xMi43TDUxMiAyNDIuMSA1MTIgNDQ4czAgMCAwIDBjMCAzNS4zLTI4LjcgNjQtNjQgNjRMNjQgNTEyYy0zNS4zIDAtNjQtMjguNy02NC02NGMwIDAgMCAwIDAgMHpNMTc2IDE2MGwxNjAgMGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNmwtMTYwIDBjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6bTAgNjRsMTYwIDBjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZsLTE2MCAwYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2elwiXVxufTtcbmNvbnN0IGZhSG9zcGl0YWwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaG9zcGl0YWwnLFxuICBpY29uOiBbNjQwLCA1MTIsIFsxMjc5NzMsIDYyNTg5LCBcImhvc3BpdGFsLWFsdFwiLCBcImhvc3BpdGFsLXdpZGVcIl0sIFwiZjBmOFwiLCBcIk0xOTIgNDhjMC0yNi41IDIxLjUtNDggNDgtNDhMNDAwIDBjMjYuNSAwIDQ4IDIxLjUgNDggNDhsMCA0NjQtODAgMCAwLTgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4cy00OCAyMS41LTQ4IDQ4bDAgODAtODAgMCAwLTQ2NHpNNDggOTZsMTEyIDAgMCA0MTZMNDggNTEyYy0yNi41IDAtNDgtMjEuNS00OC00OEwwIDMyMGw4MCAwYzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2TDAgMjg4bDAtNjQgODAgMGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNkwwIDE5MmwwLTQ4YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4em01NDQgMGMyNi41IDAgNDggMjEuNSA0OCA0OGwwIDQ4LTgwIDBjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZsODAgMCAwIDY0LTgwIDBjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZsODAgMCAwIDE0NGMwIDI2LjUtMjEuNSA0OC00OCA0OGwtMTEyIDAgMC00MTYgMTEyIDB6TTMxMiA2NGMtOC44IDAtMTYgNy4yLTE2IDE2bDAgMjQtMjQgMGMtOC44IDAtMTYgNy4yLTE2IDE2bDAgMTZjMCA4LjggNy4yIDE2IDE2IDE2bDI0IDAgMCAyNGMwIDguOCA3LjIgMTYgMTYgMTZsMTYgMGM4LjggMCAxNi03LjIgMTYtMTZsMC0yNCAyNCAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTE2YzAtOC44LTcuMi0xNi0xNi0xNmwtMjQgMCAwLTI0YzAtOC44LTcuMi0xNi0xNi0xNmwtMTYgMHpcIl1cbn07XG5jb25zdCBmYUhvc3BpdGFsQWx0ID0gZmFIb3NwaXRhbDtcbmNvbnN0IGZhSG9zcGl0YWxXaWRlID0gZmFIb3NwaXRhbDtcbmNvbnN0IGZhV2luZUJvdHRsZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd3aW5lLWJvdHRsZScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjcyZlwiLCBcIk0zOTMuNCA5LjRjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDBsNjQgNjRjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNjLTExLjggMTEuOC0zMC43IDEyLjUtNDMuMiAxLjlsLTkuNSA5LjUtNDguOCA0OC44Yy05LjIgOS4yLTExLjUgMjIuOS04LjYgMzUuNmM5LjQgNDAuOS0xLjkgODUuNi0zMy44IDExNy41TDE5Ny4zIDQ5My4zYy0yNSAyNS02NS41IDI1LTkwLjUgMGwtODgtODhjLTI1LTI1LTI1LTY1LjUgMC05MC41TDE4MC4yIDE1My4zYzMxLjktMzEuOSA3Ni42LTQzLjEgMTE3LjUtMzMuOGMxMi42IDIuOSAyNi40IC41IDM1LjUtOC42bDQ4LjgtNDguOCA5LjUtOS41Yy0xMC42LTEyLjYtMTAtMzEuNCAxLjktNDMuMnpNOTkuMyAzNDcuM2w2NS40IDY1LjRjNi4yIDYuMiAxNi40IDYuMiAyMi42IDBsOTcuNC05Ny40YzYuMi02LjIgNi4yLTE2LjQgMC0yMi42bC02NS40LTY1LjRjLTYuMi02LjItMTYuNC02LjItMjIuNiAwTDk5LjMgMzI0LjdjLTYuMiA2LjItNi4yIDE2LjQgMCAyMi42elwiXVxufTtcbmNvbnN0IGZhQ2hlc3NSb29rID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NoZXNzLXJvb2snLFxuICBpY29uOiBbNDQ4LCA1MTIsIFs5ODIwXSwgXCJmNDQ3XCIsIFwiTTMyIDE5MkwzMiA0OGMwLTguOCA3LjItMTYgMTYtMTZsNjQgMGM4LjggMCAxNiA3LjIgMTYgMTZsMCA0MGMwIDQuNCAzLjYgOCA4IDhsMzIgMGM0LjQgMCA4LTMuNiA4LThsMC00MGMwLTguOCA3LjItMTYgMTYtMTZsNjQgMGM4LjggMCAxNiA3LjIgMTYgMTZsMCA0MGMwIDQuNCAzLjYgOCA4IDhsMzIgMGM0LjQgMCA4LTMuNiA4LThsMC00MGMwLTguOCA3LjItMTYgMTYtMTZsNjQgMGM4LjggMCAxNiA3LjIgMTYgMTZsMCAxNDRjMCAxMC4xLTQuNyAxOS42LTEyLjggMjUuNkwzNTIgMjU2bDE2IDE0NEw4MCA0MDAgOTYgMjU2IDQ0LjggMjE3LjZDMzYuNyAyMTEuNiAzMiAyMDIuMSAzMiAxOTJ6bTE3NiA5NmwzMiAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTQ4YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMybDAgNDhjMCA4LjggNy4yIDE2IDE2IDE2ek0yMi42IDQ3My40TDY0IDQzMmwzMjAgMCA0MS40IDQxLjRjNC4yIDQuMiA2LjYgMTAgNi42IDE2YzAgMTIuNS0xMC4xIDIyLjYtMjIuNiAyMi42TDM4LjYgNTEyQzI2LjEgNTEyIDE2IDUwMS45IDE2IDQ4OS40YzAtNiAyLjQtMTEuOCA2LjYtMTZ6XCJdXG59O1xuY29uc3QgZmFCYXJzU3RhZ2dlcmVkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JhcnMtc3RhZ2dlcmVkJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXCJyZW9yZGVyXCIsIFwic3RyZWFtXCJdLCBcImY1NTBcIiwgXCJNMCA5NkMwIDc4LjMgMTQuMyA2NCAzMiA2NGwzODQgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkwzMiAxMjhDMTQuMyAxMjggMCAxMTMuNyAwIDk2ek02NCAyNTZjMC0xNy43IDE0LjMtMzIgMzItMzJsMzg0IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJMOTYgMjg4Yy0xNy43IDAtMzItMTQuMy0zMi0zMnpNNDQ4IDQxNmMwIDE3LjctMTQuMyAzMi0zMiAzMkwzMiA0NDhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJsMzg0IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJ6XCJdXG59O1xuY29uc3QgZmFSZW9yZGVyID0gZmFCYXJzU3RhZ2dlcmVkO1xuY29uc3QgZmFTdHJlYW0gPSBmYUJhcnNTdGFnZ2VyZWQ7XG5jb25zdCBmYURoYXJtYWNoYWtyYSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdkaGFybWFjaGFrcmEnLFxuICBpY29uOiBbNTEyLCA1MTIsIFs5Nzg0XSwgXCJmNjU1XCIsIFwiTTMzNy44IDIwNS43bDQ4LjYtNDIuNWMxMy44IDE5LjMgMjMuNCA0MS45IDI3LjQgNjYuMmwtNjQuNCA0LjNjLTIuNC0xMC4xLTYuNC0xOS41LTExLjYtMjh6bTE0MC4xIDE5LjVjLTUuMy0zOC44LTIwLjYtNzQuNS00My4yLTEwNC4zbC44LS43QzQ0OSAxMDguNCA0NDkuNyA4Ny42IDQzNyA3NXMtMzMuNC0xMi00NS4yIDEuNWwtLjcgLjhjLTI5LjgtMjIuNi02NS41LTM3LjktMTA0LjMtNDMuMmwuMS0xLjFjMS4yLTE3LjktMTMtMzMtMzAuOS0zM3MtMzIuMSAxNS4yLTMwLjkgMzNsLjEgMS4xYy0zOC44IDUuMy03NC41IDIwLjYtMTA0LjMgNDMuMmwtLjctLjhDMTA4LjQgNjMgODcuNiA2Mi4zIDc1IDc1cy0xMiAzMy40IDEuNSA0NS4ybC44IC43Yy0yMi42IDI5LjgtMzcuOSA2NS41LTQzLjIgMTA0LjNsLTEuMS0uMWMtMTcuOS0xLjItMzMgMTMtMzMgMzAuOXMxNS4yIDMyLjEgMzMgMzAuOWwxLjEtLjFjNS4zIDM4LjggMjAuNiA3NC41IDQzLjIgMTA0LjNsLS44IC43QzYzIDQwMy42IDYyLjMgNDI0LjQgNzUgNDM3czMzLjQgMTIgNDUuMi0xLjVsLjctLjhjMjkuOCAyMi42IDY1LjUgMzcuOSAxMDQuMyA0My4ybC0uMSAxLjFjLTEuMiAxNy45IDEzIDMzIDMwLjkgMzNzMzIuMS0xNS4yIDMwLjktMzNsLS4xLTEuMWMzOC44LTUuMyA3NC41LTIwLjYgMTA0LjMtNDMuMmwuNyAuOGMxMS44IDEzLjUgMzIuNSAxNC4yIDQ1LjIgMS41czEyLTMzLjQtMS41LTQ1LjJsLS44LS43YzIyLjYtMjkuOCAzNy45LTY1LjUgNDMuMi0xMDQuM2wxLjEgLjFjMTcuOSAxLjIgMzMtMTMgMzMtMzAuOXMtMTUuMi0zMi4xLTMzLTMwLjlsLTEuMSAuMXpNMTYzLjIgMTI1LjZjMTkuMy0xMy44IDQxLjktMjMuNCA2Ni4yLTI3LjVsNC4zIDY0LjRjLTEwIDIuNC0xOS41IDYuNC0yOCAxMS42bC00Mi41LTQ4LjZ6bS02NSAxMDMuOGM0LjEtMjQuNCAxMy43LTQ2LjkgMjcuNS02Ni4ybDQ4LjYgNDIuNWMtNS4zIDguNS05LjIgMTgtMTEuNiAyOGwtNjQuNC00LjN6bTI3LjUgMTE5LjRjLTEzLjgtMTkuMy0yMy40LTQxLjktMjcuNS02Ni4ybDY0LjQtNC4zYzIuNCAxMCA2LjQgMTkuNSAxMS42IDI4bC00OC42IDQyLjV6bTEwMy44IDY1Yy0yNC40LTQuMS00Ni45LTEzLjctNjYuMi0yNy40bDQyLjUtNDguNmM4LjUgNS4zIDE4IDkuMiAyOCAxMS42bC00LjMgNjQuNHptMTE5LjQtMjcuNGMtMTkuMyAxMy44LTQxLjkgMjMuNC02Ni4yIDI3LjRsLTQuMy02NC40YzEwLTIuNCAxOS41LTYuNCAyOC0xMS42bDQyLjUgNDguNnptNjUtMTAzLjhjLTQuMSAyNC40LTEzLjcgNDYuOS0yNy40IDY2LjJsLTQ4LjYtNDIuNWM1LjMtOC41IDkuMi0xOCAxMS42LTI4bDY0LjQgNC4zem0tNjUtMTU2LjlsLTQyLjUgNDguNmMtOC41LTUuMy0xOC05LjItMjgtMTEuNmw0LjMtNjQuNGMyNC40IDQuMSA0Ni45IDEzLjcgNjYuMiAyNy41ek0yNTYgMjI0YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIl1cbn07XG5jb25zdCBmYUhvdGRvZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdob3Rkb2cnLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjc3ODldLCBcImY4MGZcIiwgXCJNNDg4LjYgMjMuNGMzMS4yIDMxLjIgMzEuMiA4MS45IDAgMTEzLjFsLTM1MiAzNTJjLTMxLjIgMzEuMi04MS45IDMxLjItMTEzLjEgMHMtMzEuMi04MS45IDAtMTEzLjFsMzUyLTM1MmMzMS4yLTMxLjIgODEuOS0zMS4yIDExMy4xIDB6TTQ0My4zIDkyLjdjLTYuMi02LjItMTYuNC02LjItMjIuNiAwYy0xMi41IDEyLjUtMjMuOCAxNS4xLTM3LjUgMTcuNmwtMi41IC40Yy0xMy44IDIuNS0zMS42IDUuNi00OCAyMmMtMTYuNyAxNi43LTIwLjkgMzYtMjQuMSA1MC45YzAgMCAwIDAgMCAwczAgMCAwIDBsLS4yIDFjLTMuNCAxNS42LTYgMjYuNC0xNS43IDM2LjFzLTIwLjUgMTIuMy0zNi4xIDE1LjdsLTEgLjJjLTE0LjkgMy4yLTM0LjIgNy40LTUwLjkgMjQuMXMtMjAuOSAzNi0yNC4xIDUwLjlsLS4yIDFjLTMuNCAxNS42LTYgMjYuNC0xNS43IDM2LjFjLTkuMiA5LjItMTggMTAuOC0zMi43IDEzLjRjMCAwIDAgMCAwIDBsLS45IC4yYy0xNS42IDIuOC0zNC45IDYuOS01NC40IDI2LjRjLTYuMiA2LjItNi4yIDE2LjQgMCAyMi42czE2LjQgNi4yIDIyLjYgMGMxMi41LTEyLjUgMjMuOC0xNS4xIDM3LjUtMTcuNmwyLjUtLjRjMTMuOC0yLjUgMzEuNi01LjYgNDgtMjJjMTYuNy0xNi43IDIwLjktMzYgMjQuMS01MC45bC4yLTFjMy40LTE1LjYgNi0yNi40IDE1LjctMzYuMXMyMC41LTEyLjMgMzYuMS0xNS43bDEtLjJjMTQuOS0zLjIgMzQuMi03LjQgNTAuOS0yNC4xczIwLjktMzYgMjQuMS01MC45bC4yLTFjMy40LTE1LjYgNi0yNi40IDE1LjctMzYuMWM5LjItOS4yIDE4LTEwLjggMzIuNy0xMy40bC45LS4yYzE1LjYtMi44IDM0LjktNi45IDU0LjQtMjYuNGM2LjItNi4yIDYuMi0xNi40IDAtMjIuNnpNMTkxLjIgNDc5LjJsMjg4LTI4OEw0OTUgMjA3YzEwLjkgMTAuOSAxNyAyNS42IDE3IDQxcy02LjEgMzAuMS0xNyA0MUwyODkgNDk1Yy0xMC45IDEwLjktMjUuNiAxNy00MSAxN3MtMzAuMS02LjEtNDEtMTdsLTE1LjgtMTUuOHpNMTcgMzA1QzYuMSAyOTQuMSAwIDI3OS40IDAgMjY0czYuMS0zMC4xIDE3LTQxTDIyMyAxN0MyMzMuOSA2LjEgMjQ4LjYgMCAyNjQgMHMzMC4xIDYuMSA0MSAxN2wxNS44IDE1LjgtMjg4IDI4OEwxNyAzMDV6XCJdXG59O1xuY29uc3QgZmFQZXJzb25XYWxraW5nV2l0aENhbmUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGVyc29uLXdhbGtpbmctd2l0aC1jYW5lJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXCJibGluZFwiXSwgXCJmMjlkXCIsIFwiTTE3NiA5NmE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6bS04LjQgMzJjLTM2LjQgMC02OS42IDIwLjUtODUuOSA1My4xTDM1LjQgMjczLjdjLTcuOSAxNS44LTEuNSAzNSAxNC4zIDQyLjlzMzUgMS41IDQyLjktMTQuM0wxMjggMjMxLjZsMCA0My4yYzAgMTcgNi43IDMzLjMgMTguNyA0NS4zTDIyNCAzOTcuM2wwIDgyLjdjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTg5LjRjMC0xMi43LTUuMS0yNC45LTE0LjEtMzMuOUwyMjQgMzA2LjdsMC05My40IDcwLjQgOTMuOWMxMC42IDE0LjEgMzAuNyAxNyA0NC44IDYuNHMxNy0zMC43IDYuNC00NC44TDI2OC44IDE2Ni40QzI1MC43IDE0Mi4yIDIyMi4yIDEyOCAxOTIgMTI4bC0yNC40IDB6TTEyOC4zIDM0Ni44TDk3IDQ3Mi4yYy00LjMgMTcuMSA2LjEgMzQuNSAyMy4zIDM4LjhzMzQuNS02LjEgMzguOC0yMy4zbDIyLTg4LjItNTIuOC01Mi44ek00NTAuOCA1MDUuMWM1IDcuMyAxNSA5LjEgMjIuMyA0czkuMS0xNSA0LTIyLjNMMzU4LjkgMzE2LjFjLTIuOCAzLjgtNi4xIDcuMy0xMC4xIDEwLjNjLTUgMy44LTEwLjUgNi40LTE2LjIgNy45TDQ1MC44IDUwNS4xelwiXVxufTtcbmNvbnN0IGZhQmxpbmQgPSBmYVBlcnNvbldhbGtpbmdXaXRoQ2FuZTtcbmNvbnN0IGZhRHJ1bSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdkcnVtJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI5MzQ1XSwgXCJmNTY5XCIsIFwiTTUwMS4yIDc2LjFjMTEuMS03LjMgMTQuMi0yMi4xIDYuOS0zMy4ycy0yMi4xLTE0LjItMzMuMi02LjlMMzcwLjIgMTA0LjVDMzM1LjggOTguNyAyOTcgOTYgMjU2IDk2QzExNC42IDk2IDAgMTI4IDAgMjA4TDAgMzY4YzAgMzEuMyAyNy40IDU4LjggNzIgNzguN0w3MiAzNDRjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNGwwIDExOS40YzMzIDguOSA3MS4xIDE0LjUgMTEyIDE2LjFMMjMyIDM3NmMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0bDAgMTAzLjVjNDAuOS0xLjYgNzktNy4yIDExMi0xNi4xTDM5MiAzNDRjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNGwwIDEwMi43YzQ0LjYtMTkuOSA3Mi00Ny40IDcyLTc4LjdsMC0xNjBjMC00MS4xLTMwLjItNjkuNS03OC44LTg3LjRsNjcuOS00NC41ek0zMDcuNCAxNDUuNmwtNjQuNiA0Mi4zYy0xMS4xIDcuMy0xNC4yIDIyLjEtNi45IDMzLjJzMjIuMSAxNC4yIDMzLjIgNi45bDExMS4xLTcyLjhjMTQuNyAzLjIgMjcuOSA3IDM5LjQgMTEuNUM0NTguNCAxODEuOCA0NjQgMTk3LjQgNDY0IDIwOGMwIC44LTIuNyAxNy4yLTQ2IDM1LjlDMzc5LjEgMjYwLjcgMzIyIDI3MiAyNTYgMjcycy0xMjMuMS0xMS4zLTE2Mi0yOC4xQzUwLjcgMjI1LjIgNDggMjA4LjggNDggMjA4YzAtMTAuNiA1LjYtMjYuMiA0NC40LTQxLjNDMTMwLjYgMTUxLjkgMTg3LjggMTQ0IDI1NiAxNDRjMTggMCAzNS4xIC41IDUxLjQgMS42elwiXVxufTtcbmNvbnN0IGZhSWNlQ3JlYW0gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaWNlLWNyZWFtJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbMTI3ODQ4XSwgXCJmODEwXCIsIFwiTTM2Ny4xIDE2MGMuNi01LjMgLjktMTAuNiAuOS0xNkMzNjggNjQuNSAzMDMuNSAwIDIyNCAwUzgwIDY0LjUgODAgMTQ0YzAgNS40IC4zIDEwLjcgLjkgMTZsLS45IDBjLTI2LjUgMC00OCAyMS41LTQ4IDQ4czIxLjUgNDggNDggNDhsNTMuNSAwIDE4MSAwIDUzLjUgMGMyNi41IDAgNDgtMjEuNSA0OC00OHMtMjEuNS00OC00OC00OGwtLjkgMHpNOTYgMjg4TDIwMC44IDQ5Ny43YzQuNCA4LjggMTMuMyAxNC4zIDIzLjIgMTQuM3MxOC44LTUuNSAyMy4yLTE0LjNMMzUyIDI4OCA5NiAyODh6XCJdXG59O1xuY29uc3QgZmFIZWFydENpcmNsZUJvbHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGVhcnQtY2lyY2xlLWJvbHQnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImU0ZmNcIiwgXCJNNDcuNiAzMDAuNEwyMjguMyA0NjkuMWM3LjUgNyAxNy40IDEwLjkgMjcuNyAxMC45czIwLjItMy45IDI3LjctMTAuOWwyLjYtMi40QzI2Ny4yIDQzOC42IDI1NiA0MDQuNiAyNTYgMzY4YzAtOTcuMiA3OC44LTE3NiAxNzYtMTc2YzI4LjMgMCA1NSA2LjcgNzguNyAxOC41Yy45LTYuNSAxLjMtMTMgMS4zLTE5LjZsMC01LjhjMC02OS45LTUwLjUtMTI5LjUtMTE5LjQtMTQxQzM0NyAzNi41IDMwMC42IDUxLjQgMjY4IDg0TDI1NiA5NiAyNDQgODRjLTMyLjYtMzIuNi03OS00Ny41LTEyNC42LTM5LjlDNTAuNSA1NS42IDAgMTE1LjIgMCAxODUuMWwwIDUuOGMwIDQxLjUgMTcuMiA4MS4yIDQ3LjYgMTA5LjV6TTQzMiA1MTJhMTQ0IDE0NCAwIDEgMCAwLTI4OCAxNDQgMTQ0IDAgMSAwIDAgMjg4em00Ny45LTIyNWM0LjMgMy43IDUuNCA5LjkgMi42IDE0LjlMNDUyLjQgMzU2bDM1LjYgMGM1LjIgMCA5LjggMy4zIDExLjQgOC4ycy0uMSAxMC4zLTQuMiAxMy40bC05NiA3MmMtNC41IDMuNC0xMC44IDMuMi0xNS4xLS42cy01LjQtOS45LTIuNi0xNC45TDQxMS42IDM4MCAzNzYgMzgwYy01LjIgMC05LjgtMy4zLTExLjQtOC4ycy4xLTEwLjMgNC4yLTEzLjRsOTYtNzJjNC41LTMuNCAxMC44LTMuMiAxNS4xIC42elwiXVxufTtcbmNvbnN0IGZhRmF4ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZheCcsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyODIyNCwgMTI4NDM5XSwgXCJmMWFjXCIsIFwiTTEyOCA2NGwwIDk2IDY0IDAgMC05NiAxOTQuNyAwTDQxNiA5My4zbDAgNjYuNyA2NCAwIDAtNjYuN2MwLTE3LTYuNy0zMy4zLTE4LjctNDUuM0w0MzIgMTguN0M0MjAgNi43IDQwMy43IDAgMzg2LjcgMEwxOTIgMGMtMzUuMyAwLTY0IDI4LjctNjQgNjR6TTAgMTYwTDAgNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMybDMyIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJsMC0zMjBjMC0xNy43LTE0LjMtMzItMzItMzJsLTMyIDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyem00ODAgMzJsLTM1MiAwIDAgMjg4YzAgMTcuNyAxNC4zIDMyIDMyIDMybDMyMCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMybDAtMjU2YzAtMTcuNy0xNC4zLTMyLTMyLTMyek0yNTYgMjU2YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHptOTYgMzJhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptMzIgOTZhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0ek0yMjQgNDE2YTMyIDMyIDAgMSAxIDY0IDAgMzIgMzIgMCAxIDEgLTY0IDB6XCJdXG59O1xuY29uc3QgZmFQYXJhZ3JhcGggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGFyYWdyYXBoJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbMTgyXSwgXCJmMWRkXCIsIFwiTTE5MiAzMmw2NCAwIDE2MCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC0zMiAwIDAgMzUyYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtMzUyLTMyIDAgMCAzNTJjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC05Ni0zMiAwYy04OC40IDAtMTYwLTcxLjYtMTYwLTE2MHM3MS42LTE2MCAxNjAtMTYwelwiXVxufTtcbmNvbnN0IGZhQ2hlY2tUb1Nsb3QgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2hlY2stdG8tc2xvdCcsXG4gIGljb246IFs1NzYsIDUxMiwgW1widm90ZS15ZWFcIl0sIFwiZjc3MlwiLCBcIk05NiA4MGMwLTI2LjUgMjEuNS00OCA0OC00OGwyODggMGMyNi41IDAgNDggMjEuNSA0OCA0OGwwIDMwNEw5NiAzODQgOTYgODB6bTMxMyA0N2MtOS40LTkuNC0yNC42LTkuNC0zMy45IDBsLTExMSAxMTEtNDctNDdjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwcy05LjQgMjQuNiAwIDMzLjlsNjQgNjRjOS40IDkuNCAyNC42IDkuNCAzMy45IDBMNDA5IDE2MWM5LjQtOS40IDkuNC0yNC42IDAtMzMuOXpNMCAzMzZjMC0yNi41IDIxLjUtNDggNDgtNDhsMTYgMCAwIDEyOCA0NDggMCAwLTEyOCAxNiAwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4bDAgOTZjMCAyNi41LTIxLjUgNDgtNDggNDhMNDggNDgwYy0yNi41IDAtNDgtMjEuNS00OC00OGwwLTk2elwiXVxufTtcbmNvbnN0IGZhVm90ZVllYSA9IGZhQ2hlY2tUb1Nsb3Q7XG5jb25zdCBmYVN0YXJIYWxmID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3N0YXItaGFsZicsXG4gIGljb246IFs1NzYsIDUxMiwgWzYxNzMxXSwgXCJmMDg5XCIsIFwiTTI4OCAwYy0xMi4yIC4xLTIzLjMgNy0yOC42IDE4TDE5NSAxNTAuMyA1MS40IDE3MS41Yy0xMiAxLjgtMjIgMTAuMi0yNS43IDIxLjdzLS43IDI0LjIgNy45IDMyLjdMMTM3LjggMzI5IDExMy4yIDQ3NC43Yy0yIDEyIDMgMjQuMiAxMi45IDMxLjNzMjMgOCAzMy44IDIuM0wyODggNDM5LjggMjg4IDB6TTQyOS45IDUxMmMxLjEgLjEgMi4xIC4xIDMuMiAwbC0zLjIgMHpcIl1cbn07XG5jb25zdCBmYUJveGVzU3RhY2tlZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdib3hlcy1zdGFja2VkJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbNjI2MjUsIFwiYm94ZXNcIiwgXCJib3hlcy1hbHRcIl0sIFwiZjQ2OFwiLCBcIk0yNDggMEwyMDggMGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhsMCAxMTJjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMTI4IDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0xMTJjMC0yNi41LTIxLjUtNDgtNDgtNDhMMzI4IDBsMCA4MGMwIDguOC03LjIgMTYtMTYgMTZsLTQ4IDBjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTgwek02NCAyNTZjLTM1LjMgMC02NCAyOC43LTY0IDY0TDAgNDQ4YzAgMzUuMyAyOC43IDY0IDY0IDY0bDE2MCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMTI4YzAtMzUuMy0yOC43LTY0LTY0LTY0bC00MCAwIDAgODBjMCA4LjgtNy4yIDE2LTE2IDE2bC00OCAwYy04LjggMC0xNi03LjItMTYtMTZsMC04MC00MCAwek0zNTIgNTEybDE2MCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMTI4YzAtMzUuMy0yOC43LTY0LTY0LTY0bC00MCAwIDAgODBjMCA4LjgtNy4yIDE2LTE2IDE2bC00OCAwYy04LjggMC0xNi03LjItMTYtMTZsMC04MC00MCAwYy0xNSAwLTI4LjggNS4xLTM5LjcgMTMuOGM0LjkgMTAuNCA3LjcgMjIgNy43IDM0LjJsMCAxNjBjMCAxMi4yLTIuOCAyMy44LTcuNyAzNC4yQzMyMy4yIDUwNi45IDMzNyA1MTIgMzUyIDUxMnpcIl1cbn07XG5jb25zdCBmYUJveGVzID0gZmFCb3hlc1N0YWNrZWQ7XG5jb25zdCBmYUJveGVzQWx0ID0gZmFCb3hlc1N0YWNrZWQ7XG5jb25zdCBmYUxpbmsgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbGluaycsXG4gIGljb246IFs2NDAsIDUxMiwgWzEyODI3OSwgXCJjaGFpblwiXSwgXCJmMGMxXCIsIFwiTTU3OS44IDI2Ny43YzU2LjUtNTYuNSA1Ni41LTE0OCAwLTIwNC41Yy01MC01MC0xMjguOC01Ni41LTE4Ni4zLTE1LjRsLTEuNiAxLjFjLTE0LjQgMTAuMy0xNy43IDMwLjMtNy40IDQ0LjZzMzAuMyAxNy43IDQ0LjYgNy40bDEuNi0xLjFjMzIuMS0yMi45IDc2LTE5LjMgMTAzLjggOC42YzMxLjUgMzEuNSAzMS41IDgyLjUgMCAxMTRMNDIyLjMgMzM0LjhjLTMxLjUgMzEuNS04Mi41IDMxLjUtMTE0IDBjLTI3LjktMjcuOS0zMS41LTcxLjgtOC42LTEwMy44bDEuMS0xLjZjMTAuMy0xNC40IDYuOS0zNC40LTcuNC00NC42cy0zNC40LTYuOS00NC42IDcuNGwtMS4xIDEuNkMyMDYuNSAyNTEuMiAyMTMgMzMwIDI2MyAzODBjNTYuNSA1Ni41IDE0OCA1Ni41IDIwNC41IDBMNTc5LjggMjY3Ljd6TTYwLjIgMjQ0LjNjLTU2LjUgNTYuNS01Ni41IDE0OCAwIDIwNC41YzUwIDUwIDEyOC44IDU2LjUgMTg2LjMgMTUuNGwxLjYtMS4xYzE0LjQtMTAuMyAxNy43LTMwLjMgNy40LTQ0LjZzLTMwLjMtMTcuNy00NC42LTcuNGwtMS42IDEuMWMtMzIuMSAyMi45LTc2IDE5LjMtMTAzLjgtOC42Qzc0IDM3MiA3NCAzMjEgMTA1LjUgMjg5LjVMMjE3LjcgMTc3LjJjMzEuNS0zMS41IDgyLjUtMzEuNSAxMTQgMGMyNy45IDI3LjkgMzEuNSA3MS44IDguNiAxMDMuOWwtMS4xIDEuNmMtMTAuMyAxNC40LTYuOSAzNC40IDcuNCA0NC42czM0LjQgNi45IDQ0LjYtNy40bDEuMS0xLjZDNDMzLjUgMjYwLjggNDI3IDE4MiAzNzcgMTMyYy01Ni41LTU2LjUtMTQ4LTU2LjUtMjA0LjUgMEw2MC4yIDI0NC4zelwiXVxufTtcbmNvbnN0IGZhQ2hhaW4gPSBmYUxpbms7XG5jb25zdCBmYUVhckxpc3RlbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdlYXItbGlzdGVuJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXCJhc3Npc3RpdmUtbGlzdGVuaW5nLXN5c3RlbXNcIl0sIFwiZjJhMlwiLCBcIk0zOTguMyAzLjRjLTE1LjgtNy45LTM1LTEuNS00Mi45IDE0LjNjLTcuOSAxNS44LTEuNSAzNC45IDE0LjIgNDIuOWwuNCAuMmMuNCAuMiAxLjEgLjYgMi4xIDEuMmMyIDEuMiA1IDMgOC43IDUuNmM3LjUgNS4yIDE3LjYgMTMuMiAyNy43IDI0LjJDNDI4LjUgMTEzLjQgNDQ4IDE0NiA0NDggMTkyYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJjMC02Ni0yOC41LTExMy40LTU2LjUtMTQzLjdDNDQxLjYgMzMuMiA0MjcuNyAyMi4yIDQxNy4zIDE1Yy01LjMtMy43LTkuNy02LjQtMTMtOC4zYy0xLjYtMS0zLTEuNy00LTIuMmMtLjUtLjMtLjktLjUtMS4yLS43bC0uNC0uMi0uMi0uMWMwIDAgMCAwLS4xIDBjMCAwIDAgMCAwIDBMMzg0IDMyIDM5OC4zIDMuNHpNMTI4LjcgMjI3LjVjNi4yLTU2IDUzLjctOTkuNSAxMTEuMy05OS41YzYxLjkgMCAxMTIgNTAuMSAxMTIgMTEyYzAgMjkuMy0xMS4yIDU1LjktMjkuNiA3NS45Yy0xNyAxOC40LTM0LjQgNDUuMS0zNC40IDc4bDAgNi4xYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyYzYxLjkgMCAxMTItNTAuMSAxMTItMTEybDAtNi4xYzAtOS44IDUuNC0yMS43IDE3LjQtMzQuN0MzOTguMyAzMjcuOSA0MTYgMjg2IDQxNiAyNDBjMC05Ny4yLTc4LjgtMTc2LTE3Ni0xNzZDMTQ5LjQgNjQgNzQuOCAxMzIuNSA2NS4xIDIyMC41Yy0xLjkgMTcuNiAxMC43IDMzLjQgMjguMyAzNS4zczMzLjQtMTAuNyAzNS4zLTI4LjN6TTMyIDUxMmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6TTE5MiAzNTJhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHpNNDEuNCAzNjEuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNsNjQgNjRjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM2wtNjQtNjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwek0yMDggMjQwYzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGMwLTQ0LjItMzUuOC04MC04MC04MHMtODAgMzUuOC04MCA4MGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0elwiXVxufTtcbmNvbnN0IGZhQXNzaXN0aXZlTGlzdGVuaW5nU3lzdGVtcyA9IGZhRWFyTGlzdGVuO1xuY29uc3QgZmFUcmVlQ2l0eSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0cmVlLWNpdHknLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU1ODdcIiwgXCJNMjg4IDQ4YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4bDk2IDBjMjYuNSAwIDQ4IDIxLjUgNDggNDhsMCAxNDQgNDAgMCAwLTcyYzAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjRsMCA3MiAyNCAwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4bDAgMjI0YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4bC0xNjAgMC05NiAwYy0yNi41IDAtNDgtMjEuNS00OC00OGwwLTQxNnptNjQgMzJsMCAzMmMwIDguOCA3LjIgMTYgMTYgMTZsMzIgMGM4LjggMCAxNi03LjIgMTYtMTZsMC0zMmMwLTguOC03LjItMTYtMTYtMTZsLTMyIDBjLTguOCAwLTE2IDcuMi0xNiAxNnptMTYgODBjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDMyYzAgOC44IDcuMiAxNiAxNiAxNmwzMiAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTMyYzAtOC44LTcuMi0xNi0xNi0xNmwtMzIgMHpNMzUyIDI3MmwwIDMyYzAgOC44IDcuMiAxNiAxNiAxNmwzMiAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTMyYzAtOC44LTcuMi0xNi0xNi0xNmwtMzIgMGMtOC44IDAtMTYgNy4yLTE2IDE2em0xNzYtMTZjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDMyYzAgOC44IDcuMiAxNiAxNiAxNmwzMiAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTMyYzAtOC44LTcuMi0xNi0xNi0xNmwtMzIgMHpNNTEyIDM2OGwwIDMyYzAgOC44IDcuMiAxNiAxNiAxNmwzMiAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTMyYzAtOC44LTcuMi0xNi0xNi0xNmwtMzIgMGMtOC44IDAtMTYgNy4yLTE2IDE2ek0yMjQgMTYwYzAgNi0xIDExLTIgMTZjMjAgMTQgMzQgMzggMzQgNjRjMCA0NS0zNiA4MC04MCA4MGwtMTYgMCAwIDE2MGMwIDE4LTE1IDMyLTMyIDMyYy0xOCAwLTMyLTE0LTMyLTMybDAtMTYwLTE2IDBjLTQ1IDAtODAtMzUtODAtODBjMC0yNiAxMy01MCAzMy02NGMtMS01LTEtMTAtMS0xNmMwLTUzIDQyLTk2IDk2LTk2YzUzIDAgOTYgNDMgOTYgOTZ6XCJdXG59O1xuY29uc3QgZmFQbGF5ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BsYXknLFxuICBpY29uOiBbMzg0LCA1MTIsIFs5NjU0XSwgXCJmMDRiXCIsIFwiTTczIDM5Yy0xNC44LTkuMS0zMy40LTkuNC00OC41LS45UzAgNjIuNiAwIDgwTDAgNDMyYzAgMTcuNCA5LjQgMzMuNCAyNC41IDQxLjlzMzMuNyA4LjEgNDguNS0uOUwzNjEgMjk3YzE0LjMtOC43IDIzLTI0LjIgMjMtNDFzLTguNy0zMi4yLTIzLTQxTDczIDM5elwiXVxufTtcbmNvbnN0IGZhRm9udCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmb250JyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMDMxXCIsIFwiTTI1NCA1Mi44QzI0OS4zIDQwLjMgMjM3LjMgMzIgMjI0IDMycy0yNS4zIDguMy0zMCAyMC44TDU3LjggNDE2IDMyIDQxNmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmw5NiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC0xLjggMCAxOC00OCAxNTkuNiAwIDE4IDQ4LTEuOCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDk2IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTI1LjggMEwyNTQgNTIuOHpNMjc5LjggMzA0bC0xMTEuNiAwTDIyNCAxNTUuMSAyNzkuOCAzMDR6XCJdXG59O1xuY29uc3QgZmFUYWJsZUNlbGxzUm93TG9jayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0YWJsZS1jZWxscy1yb3ctbG9jaycsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTY3YVwiLCBcIk0wIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMybDM4NCAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgNjUuMWMtMzcuOCA1LjQtNjkuNCAyOS42LTg1LjIgNjIuOUwzNjAgMjI0bDAgNjQgNTYgMCAwIDguNmMtMTkuMSAxMS4xLTMyIDMxLjctMzIgNTUuNGwtMjQgMCAwIDY0IDI0IDAgMCA2NEw2NCA0ODBjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgOTZ6TTY0IDIyNGwwIDY0IDg4IDAgMC02NC04OCAwem0yMzIgMGwtODggMCAwIDY0IDg4IDAgMC02NHpNMTUyIDM1MmwtODggMCAwIDY0IDg4IDAgMC02NHptNTYgMGwwIDY0IDg4IDAgMC02NC04OCAwek01MjggMjQwYy0xNy43IDAtMzIgMTQuMy0zMiAzMmwwIDQ4IDY0IDAgMC00OGMwLTE3LjctMTQuMy0zMi0zMi0zMnptLTgwIDMyYzAtNDQuMiAzNS44LTgwIDgwLTgwczgwIDM1LjggODAgODBsMCA0OGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDEyOGMwIDE3LjctMTQuMyAzMi0zMiAzMmwtMTYwIDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtMTI4YzAtMTcuNyAxNC4zLTMyIDMyLTMybDAtNDh6XCJdXG59O1xuY29uc3QgZmFSdXBpYWhTaWduID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3J1cGlhaC1zaWduJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJlMjNkXCIsIFwiTTAgNjRDMCA0Ni4zIDE0LjMgMzIgMzIgMzJsODAgMGM3OS41IDAgMTQ0IDY0LjUgMTQ0IDE0NGMwIDU4LjgtMzUuMiAxMDkuMy04NS43IDEzMS43bDUxLjQgMTI4LjRjNi42IDE2LjQtMS40IDM1LTE3LjggNDEuNnMtMzUtMS40LTQxLjYtMTcuOEwxMDYuMyAzMjAgNjQgMzIwbDAgMTI4YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyTDAgMjg4IDAgNjR6TTY0IDI1Nmw0OCAwYzQ0LjIgMCA4MC0zNS44IDgwLTgwcy0zNS44LTgwLTgwLTgwTDY0IDk2bDAgMTYwem0yNTYtOTZsODAgMGM2MS45IDAgMTEyIDUwLjEgMTEyIDExMnMtNTAuMSAxMTItMTEyIDExMmwtNDggMCAwIDk2YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtMTI4IDAtMTYwYzAtMTcuNyAxNC4zLTMyIDMyLTMyem04MCAxNjBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhzLTIxLjUtNDgtNDgtNDhsLTQ4IDAgMCA5NiA0OCAwelwiXVxufTtcbmNvbnN0IGZhTWFnbmlmeWluZ0dsYXNzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21hZ25pZnlpbmctZ2xhc3MnLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjgyNjksIFwic2VhcmNoXCJdLCBcImYwMDJcIiwgXCJNNDE2IDIwOGMwIDQ1LjktMTQuOSA4OC4zLTQwIDEyMi43TDUwMi42IDQ1Ny40YzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zcy0zMi44IDEyLjUtNDUuMyAwTDMzMC43IDM3NmMtMzQuNCAyNS4yLTc2LjggNDAtMTIyLjcgNDBDOTMuMSA0MTYgMCAzMjIuOSAwIDIwOFM5My4xIDAgMjA4IDBTNDE2IDkzLjEgNDE2IDIwOHpNMjA4IDM1MmExNDQgMTQ0IDAgMSAwIDAtMjg4IDE0NCAxNDQgMCAxIDAgMCAyODh6XCJdXG59O1xuY29uc3QgZmFTZWFyY2ggPSBmYU1hZ25pZnlpbmdHbGFzcztcbmNvbnN0IGZhVGFibGVUZW5uaXNQYWRkbGVCYWxsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RhYmxlLXRlbm5pcy1wYWRkbGUtYmFsbCcsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyNzk1NSwgXCJwaW5nLXBvbmctcGFkZGxlLWJhbGxcIiwgXCJ0YWJsZS10ZW5uaXNcIl0sIFwiZjQ1ZFwiLCBcIk00MTYgMjg4Yy01MC4xIDAtOTMuNiAyOC44LTExNC42IDcwLjhMNjguOSAxMjYuM2wuNi0uNiA2MC4xLTYwLjFjODcuNS04Ny41IDIyOS4zLTg3LjUgMzE2LjggMGM2Ny4xIDY3LjEgODIuNyAxNjYuMyA0Ni44IDI0OC4zQzQ3MS44IDI5Ny42IDQ0NSAyODggNDE2IDI4OHpNNDkuMyAxNTEuOUwyOTAuMSAzOTIuN2MtMS40IDcuNS0yLjEgMTUuMy0yLjEgMjMuM2MwIDIzLjIgNi4yIDQ0LjkgMTYuOSA2My43Yy0zIC4yLTYuMSAuMy05LjIgLjNsLTIuNyAwYy0zMy45IDAtNjYuNS0xMy41LTkwLjUtMzcuNWwtOS44LTkuOGMtMTMuMS0xMy4xLTM0LjYtMTIuNC00Ni44IDEuN0w4OC4yIDUwMWMtNS44IDYuNy0xNC4yIDEwLjctMjMgMTFzLTE3LjUtMy4xLTIzLjgtOS40bC0zMi0zMkMzLjEgNDY0LjMtLjMgNDU1LjcgMCA0NDYuOXM0LjMtMTcuMiAxMS0yM2w2Ni42LTU3LjdjMTQtMTIuMiAxNC44LTMzLjcgMS43LTQ2LjhsLTkuOC05LjhDNDUuNSAyODUuNSAzMiAyNTIuOSAzMiAyMTlsMC0yLjdjMC0yMi44IDYuMS00NC45IDE3LjMtNjQuM3pNNDE2IDMyMGE5NiA5NiAwIDEgMSAwIDE5MiA5NiA5NiAwIDEgMSAwLTE5MnpcIl1cbn07XG5jb25zdCBmYVBpbmdQb25nUGFkZGxlQmFsbCA9IGZhVGFibGVUZW5uaXNQYWRkbGVCYWxsO1xuY29uc3QgZmFUYWJsZVRlbm5pcyA9IGZhVGFibGVUZW5uaXNQYWRkbGVCYWxsO1xuY29uc3QgZmFQZXJzb25Eb3RzRnJvbUxpbmUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGVyc29uLWRvdHMtZnJvbS1saW5lJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXCJkaWFnbm9zZXNcIl0sIFwiZjQ3MFwiLCBcIk0yODggMTc2QTg4IDg4IDAgMSAwIDI4OCAwYTg4IDg4IDAgMSAwIDAgMTc2ek03OC43IDM3Mi45YzE1LTEyLjUgNTAtMzQuNCA5Ny4zLTUwLjFMMTc2IDQzMmwyMjQgMCAwLTEwOS4zYzQ3LjMgMTUuOCA4Mi4zIDM3LjcgOTcuMyA1MC4xYzIwLjQgMTcgNTAuNiAxNC4yIDY3LjYtNi4xczE0LjItNTAuNi02LjEtNjcuNmMtMTItMTAtMzAuMS0yMi41LTUzLjItMzVDNDk3LjIgMjc4LjQgNDgxLjcgMjg4IDQ2NCAyODhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4YzAtNC4zIC42LTguNCAxLjYtMTIuNEMzNzkuMSAyMTUuOSAzMzUuMyAyMDggMjg4IDIwOGMtNjAuMiAwLTExNC45IDEyLjktMTYwIDI5LjljMCAuNyAwIDEuNCAwIDIuMWMwIDI2LjUtMjEuNSA0OC00OCA0OGMtMTEuOCAwLTIyLjctNC4zLTMxLTExLjRjLTEzLjEgOC4xLTIzLjcgMTUuOS0zMS43IDIyLjVjLTIwLjQgMTctMjMuMSA0Ny4yLTYuMSA2Ny42czQ3LjIgMjMuMSA2Ny42IDYuMXpNMjQgNDY0Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0bDUyOCAwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0TDI0IDQ2NHpNMjI0IDI4MGEyNCAyNCAwIDEgMSA0OCAwIDI0IDI0IDAgMSAxIC00OCAwem0xMDQgNTZhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4ek05NiAyNDBhMTYgMTYgMCAxIDAgLTMyIDAgMTYgMTYgMCAxIDAgMzIgMHptMzY4IDE2YTE2IDE2IDAgMSAwIDAtMzIgMTYgMTYgMCAxIDAgMCAzMnpcIl1cbn07XG5jb25zdCBmYURpYWdub3NlcyA9IGZhUGVyc29uRG90c0Zyb21MaW5lO1xuY29uc3QgZmFUcmFzaENhbkFycm93VXAgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndHJhc2gtY2FuLWFycm93LXVwJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXCJ0cmFzaC1yZXN0b3JlLWFsdFwiXSwgXCJmODJhXCIsIFwiTTE2My44IDBMMjg0LjIgMGMxMi4xIDAgMjMuMiA2LjggMjguNiAxNy43TDMyMCAzMmw5NiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyTDMyIDk2QzE0LjMgOTYgMCA4MS43IDAgNjRTMTQuMyAzMiAzMiAzMmw5NiAwIDcuMi0xNC4zQzE0MC42IDYuOCAxNTEuNyAwIDE2My44IDB6TTMyIDEyOGwzODQgMCAwIDMyMGMwIDM1LjMtMjguNyA2NC02NCA2NEw5NiA1MTJjLTM1LjMgMC02NC0yOC43LTY0LTY0bDAtMzIwem0xOTIgNjRjLTYuNCAwLTEyLjUgMi41LTE3IDdsLTgwIDgwYy05LjQgOS40LTkuNCAyNC42IDAgMzMuOXMyNC42IDkuNCAzMy45IDBsMzktMzlMMjAwIDQwOGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0bDAtMTM0LjEgMzkgMzljOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45bC04MC04MGMtNC41LTQuNS0xMC42LTctMTctN3pcIl1cbn07XG5jb25zdCBmYVRyYXNoUmVzdG9yZUFsdCA9IGZhVHJhc2hDYW5BcnJvd1VwO1xuY29uc3QgZmFOYWlyYVNpZ24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbmFpcmEtc2lnbicsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZTFmNlwiLCBcIk0xMjIuNiA0Ni4zYy03LjgtMTEuNy0yMi40LTE3LTM1LjktMTIuOVM2NCA0OS45IDY0IDY0bDAgMTkyLTMyIDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsMzIgMCAwIDEyOGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMTI4IDEwMC4yIDAgOTcuMiAxNDUuOGM3LjggMTEuNyAyMi40IDE3IDM1LjkgMTIuOXMyMi43LTE2LjUgMjIuNy0zMC42bDAtMTI4IDMyIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTMyIDAgMC0xOTJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJsMCAxOTItNTcuNSAwTDEyMi42IDQ2LjN6TTMwNS4xIDMyMGwxNC45IDAgMCAyMi4zTDMwNS4xIDMyMHpNMTg1LjUgMjU2TDEyOCAyNTZsMC04Ni4zTDE4NS41IDI1NnpcIl1cbn07XG5jb25zdCBmYUNhcnRBcnJvd0Rvd24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2FydC1hcnJvdy1kb3duJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmMjE4XCIsIFwiTTI0IDBDMTAuNyAwIDAgMTAuNyAwIDI0UzEwLjcgNDggMjQgNDhsNDUuNSAwYzMuOCAwIDcuMSAyLjcgNy45IDYuNWw1MS42IDI3MWM2LjUgMzQgMzYuMiA1OC41IDcwLjcgNTguNUw0ODggMzg0YzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0bC0yODguMyAwYy0xMS41IDAtMjEuNC04LjItMjMuNi0xOS41TDE3MC43IDI4OGwyODguNSAwYzMyLjYgMCA2MS4xLTIxLjggNjkuNS01My4zbDQxLTE1Mi4zQzU3Ni42IDU3IDU1Ny40IDMyIDUzMS4xIDMyTDM2MCAzMmwwIDEwMi4xIDIzLTIzYzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOWwtNjQgNjRjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwbC02NC02NGMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwbDIzIDIzTDMxMiAzMiAxMjAuMSAzMkMxMTEgMTIuOCA5MS42IDAgNjkuNSAwTDI0IDB6TTE3NiA1MTJhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2em0zMzYtNDhhNDggNDggMCAxIDAgLTk2IDAgNDggNDggMCAxIDAgOTYgMHpcIl1cbn07XG5jb25zdCBmYVdhbGtpZVRhbGtpZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd3YWxraWUtdGFsa2llJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmOGVmXCIsIFwiTTExMiAyNGMwLTEzLjMtMTAuNy0yNC0yNC0yNFM2NCAxMC43IDY0IDI0bDAgNzJMNDggOTZDMjEuNSA5NiAwIDExNy41IDAgMTQ0TDAgMzAwLjFjMCAxMi43IDUuMSAyNC45IDE0LjEgMzMuOWwzLjkgMy45YzkgOSAxNC4xIDIxLjIgMTQuMSAzMy45TDMyIDQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGwyMjQgMGMyNi41IDAgNDgtMjEuNSA0OC00OGwwLTkyLjFjMC0xMi43IDUuMS0yNC45IDE0LjEtMzMuOWwzLjktMy45YzktOSAxNC4xLTIxLjIgMTQuMS0zMy45TDM4NCAxNDRjMC0yNi41LTIxLjUtNDgtNDgtNDhsLTE2IDBjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJsLTMyIDBjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJsLTQ4IDAgMC03MnptMCAxMzZsMTYwIDBjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZsLTE2MCAwYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2em0wIDY0bDE2MCAwYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2bC0xNjAgMGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnptMCA2NGwxNjAgMGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNmwtMTYwIDBjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6XCJdXG59O1xuY29uc3QgZmFGaWxlUGVuID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZpbGUtcGVuJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbMTI4MjIxLCBcImZpbGUtZWRpdFwiXSwgXCJmMzFjXCIsIFwiTTAgNjRDMCAyOC43IDI4LjcgMCA2NCAwTDIyNCAwbDAgMTI4YzAgMTcuNyAxNC4zIDMyIDMyIDMybDEyOCAwIDAgMTI1LjctODYuOCA4Ni44Yy0xMC4zIDEwLjMtMTcuNSAyMy4xLTIxIDM3LjJsLTE4LjcgNzQuOWMtMi4zIDkuMi0xLjggMTguOCAxLjMgMjcuNUw2NCA1MTJjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgNjR6bTM4NCA2NGwtMTI4IDBMMjU2IDAgMzg0IDEyOHpNNTQ5LjggMjM1LjdsMTQuNCAxNC40YzE1LjYgMTUuNiAxNS42IDQwLjkgMCA1Ni42bC0yOS40IDI5LjQtNzEtNzEgMjkuNC0yOS40YzE1LjYtMTUuNiA0MC45LTE1LjYgNTYuNiAwek0zMTEuOSA0MTdMNDQxLjEgMjg3LjhsNzEgNzFMMzgyLjkgNDg3LjljLTQuMSA0LjEtOS4yIDctMTQuOSA4LjRsLTYwLjEgMTVjLTUuNSAxLjQtMTEuMi0uMi0xNS4yLTQuMnMtNS42LTkuNy00LjItMTUuMmwxNS02MC4xYzEuNC01LjYgNC4zLTEwLjggOC40LTE0Ljl6XCJdXG59O1xuY29uc3QgZmFGaWxlRWRpdCA9IGZhRmlsZVBlbjtcbmNvbnN0IGZhUmVjZWlwdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdyZWNlaXB0JyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbMTI5NTM0XSwgXCJmNTQzXCIsIFwiTTE0IDIuMkMyMi41LTEuNyAzMi41LS4zIDM5LjYgNS44TDgwIDQwLjQgMTIwLjQgNS44YzktNy43IDIyLjMtNy43IDMxLjIgMEwxOTIgNDAuNCAyMzIuNCA1LjhjOS03LjcgMjIuMy03LjcgMzEuMiAwTDMwNCA0MC40IDM0NC40IDUuOGM3LjEtNi4xIDE3LjEtNy41IDI1LjYtMy42czE0IDEyLjQgMTQgMjEuOGwwIDQ2NGMwIDkuNC01LjUgMTcuOS0xNCAyMS44cy0xOC41IDIuNS0yNS42LTMuNkwzMDQgNDcxLjZsLTQwLjQgMzQuNmMtOSA3LjctMjIuMyA3LjctMzEuMiAwTDE5MiA0NzEuNmwtNDAuNCAzNC42Yy05IDcuNy0yMi4zIDcuNy0zMS4yIDBMODAgNDcxLjYgMzkuNiA1MDYuMmMtNy4xIDYuMS0xNy4xIDcuNS0yNS42IDMuNlMwIDQ5Ny40IDAgNDg4TDAgMjRDMCAxNC42IDUuNSA2LjEgMTQgMi4yek05NiAxNDRjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZsMTkyIDBjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZMOTYgMTQ0ek04MCAzNTJjMCA4LjggNy4yIDE2IDE2IDE2bDE5MiAwYzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2TDk2IDMzNmMtOC44IDAtMTYgNy4yLTE2IDE2ek05NiAyNDBjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZsMTkyIDBjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZMOTYgMjQwelwiXVxufTtcbmNvbnN0IGZhU3F1YXJlUGVuID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NxdWFyZS1wZW4nLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtcInBlbi1zcXVhcmVcIiwgXCJwZW5jaWwtc3F1YXJlXCJdLCBcImYxNGJcIiwgXCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NkwwIDQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NGwzMjAgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTMyMGMwLTM1LjMtMjguNy02NC02NC02NEw2NCAzMnpNMzI1LjggMTM5LjdsMTQuNCAxNC40YzE1LjYgMTUuNiAxNS42IDQwLjkgMCA1Ni42bC0yMS40IDIxLjQtNzEtNzEgMjEuNC0yMS40YzE1LjYtMTUuNiA0MC45LTE1LjYgNTYuNiAwek0xMTkuOSAyODlMMjI1LjEgMTgzLjhsNzEgNzFMMTkwLjkgMzU5LjljLTQuMSA0LjEtOS4yIDctMTQuOSA4LjRsLTYwLjEgMTVjLTUuNSAxLjQtMTEuMi0uMi0xNS4yLTQuMnMtNS42LTkuNy00LjItMTUuMmwxNS02MC4xYzEuNC01LjYgNC4zLTEwLjggOC40LTE0Ljl6XCJdXG59O1xuY29uc3QgZmFQZW5TcXVhcmUgPSBmYVNxdWFyZVBlbjtcbmNvbnN0IGZhUGVuY2lsU3F1YXJlID0gZmFTcXVhcmVQZW47XG5jb25zdCBmYVN1aXRjYXNlUm9sbGluZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzdWl0Y2FzZS1yb2xsaW5nJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmNWMxXCIsIFwiTTE0NCA1NmMwLTQuNCAzLjYtOCA4LThsODAgMGM0LjQgMCA4IDMuNiA4IDhsMCA3Mi05NiAwIDAtNzJ6bTE3NiA3MmwtMzIgMCAwLTcyYzAtMzAuOS0yNS4xLTU2LTU2LTU2TDE1MiAwQzEyMS4xIDAgOTYgMjUuMSA5NiA1NmwwIDcyLTMyIDBjLTM1LjMgMC02NCAyOC43LTY0IDY0TDAgNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMTI4IDBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTIyNGMwLTM1LjMtMjguNy02NC02NC02NHpNMTEyIDIyNGwxNjAgMGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNmwtMTYwIDBjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6bTAgMTI4bDE2MCAwYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2bC0xNjAgMGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnpcIl1cbn07XG5jb25zdCBmYVBlcnNvbkNpcmNsZUV4Y2xhbWF0aW9uID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BlcnNvbi1jaXJjbGUtZXhjbGFtYXRpb24nLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImU1M2ZcIiwgXCJNMTEyIDQ4YTQ4IDQ4IDAgMSAxIDk2IDAgNDggNDggMCAxIDEgLTk2IDB6bTQwIDMwNGwwIDEyOGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTIyMy4xTDU5LjQgMzA0LjVjLTkuMSAxNS4xLTI4LjggMjAtNDMuOSAxMC45cy0yMC0yOC44LTEwLjktNDMuOWw1OC4zLTk3YzE3LjQtMjguOSA0OC42LTQ2LjYgODIuMy00Ni42bDI5LjcgMGMzMy43IDAgNjQuOSAxNy43IDgyLjMgNDYuNmw0NC45IDc0LjdjLTE2LjEgMTcuNi0yOC42IDM4LjUtMzYuNiA2MS41Yy0xLjktMS44LTMuNS0zLjktNC45LTYuM0wyMzIgMjU2LjkgMjMyIDQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTEyOC0xNiAwek00MzIgMjI0YTE0NCAxNDQgMCAxIDEgMCAyODggMTQ0IDE0NCAwIDEgMSAwLTI4OHptMCAyNDBhMjQgMjQgMCAxIDAgMC00OCAyNCAyNCAwIDEgMCAwIDQ4em0wLTE5MmMtOC44IDAtMTYgNy4yLTE2IDE2bDAgODBjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNmwwLTgwYzAtOC44LTcuMi0xNi0xNi0xNnpcIl1cbn07XG5jb25zdCBmYUNoZXZyb25Eb3duID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NoZXZyb24tZG93bicsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjA3OFwiLCBcIk0yMzMuNCA0MDYuNmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGwxOTItMTkyYzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwTDI1NiAzMzguNyA4Ni42IDE2OS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM2wxOTIgMTkyelwiXVxufTtcbmNvbnN0IGZhQmF0dGVyeUZ1bGwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYmF0dGVyeS1mdWxsJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbMTI4MjY3LCBcImJhdHRlcnlcIiwgXCJiYXR0ZXJ5LTVcIl0sIFwiZjI0MFwiLCBcIk00NjQgMTYwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDE2MGMwIDguOC03LjIgMTYtMTYgMTZMODAgMzUyYy04LjggMC0xNi03LjItMTYtMTZsMC0xNjBjMC04LjggNy4yLTE2IDE2LTE2bDM4NCAwek04MCA5NkMzNS44IDk2IDAgMTMxLjggMCAxNzZMMCAzMzZjMCA0NC4yIDM1LjggODAgODAgODBsMzg0IDBjNDQuMiAwIDgwLTM1LjggODAtODBsMC0xNmMxNy43IDAgMzItMTQuMyAzMi0zMmwwLTY0YzAtMTcuNy0xNC4zLTMyLTMyLTMybDAtMTZjMC00NC4yLTM1LjgtODAtODAtODBMODAgOTZ6bTM2OCA5Nkw5NiAxOTJsMCAxMjggMzUyIDAgMC0xMjh6XCJdXG59O1xuY29uc3QgZmFCYXR0ZXJ5ID0gZmFCYXR0ZXJ5RnVsbDtcbmNvbnN0IGZhQmF0dGVyeTUgPSBmYUJhdHRlcnlGdWxsO1xuY29uc3QgZmFTa3VsbENyb3NzYm9uZXMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc2t1bGwtY3Jvc3Nib25lcycsXG4gIGljb246IFs0NDgsIDUxMiwgWzEyODM2OSwgOTc2MF0sIFwiZjcxNFwiLCBcIk0zNjggMTI4YzAgNDQuNC0yNS40IDgzLjUtNjQgMTA2LjRsMCAyMS42YzAgMTcuNy0xNC4zIDMyLTMyIDMybC05NiAwYy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTIxLjZjLTM4LjYtMjMtNjQtNjIuMS02NC0xMDYuNEM4MCA1Ny4zIDE0NC41IDAgMjI0IDBzMTQ0IDU3LjMgMTQ0IDEyOHpNMTY4IDE3NmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6bTE0NC0zMmEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwek0zLjQgMjczLjdjNy45LTE1LjggMjcuMS0yMi4yIDQyLjktMTQuM0wyMjQgMzQ4LjJsMTc3LjctODguOGMxNS44LTcuOSAzNS0xLjUgNDIuOSAxNC4zczEuNSAzNS0xNC4zIDQyLjlMMjk1LjYgMzg0bDEzNC44IDY3LjRjMTUuOCA3LjkgMjIuMiAyNy4xIDE0LjMgNDIuOXMtMjcuMSAyMi4yLTQyLjkgMTQuM0wyMjQgNDE5LjggNDYuMyA1MDguNmMtMTUuOCA3LjktMzUgMS41LTQyLjktMTQuM3MtMS41LTM1IDE0LjMtNDIuOUwxNTIuNCAzODQgMTcuNyAzMTYuNkMxLjkgMzA4LjctNC41IDI4OS41IDMuNCAyNzMuN3pcIl1cbn07XG5jb25zdCBmYUNvZGVDb21wYXJlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NvZGUtY29tcGFyZScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZTEzYVwiLCBcIk0zMjAgNDg4YzAgOS41LTUuNiAxOC4xLTE0LjIgMjEuOXMtMTguOCAyLjMtMjUuOC00LjFsLTgwLTcyYy01LjEtNC42LTcuOS0xMS03LjktMTcuOHMyLjktMTMuMyA3LjktMTcuOGw4MC03MmM3LTYuMyAxNy4yLTcuOSAyNS44LTQuMXMxNC4yIDEyLjQgMTQuMiAyMS45bDAgNDAgMTYgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTE2Ni43QzM3MS43IDE0MSAzNTIgMTEyLjggMzUyIDgwYzAtNDQuMiAzNS44LTgwIDgwLTgwczgwIDM1LjggODAgODBjMCAzMi44LTE5LjcgNjEtNDggNzMuM0w0NjQgMzIwYzAgNzAuNy01Ny4zIDEyOC0xMjggMTI4bC0xNiAwIDAgNDB6TTQ1NiA4MGEyNCAyNCAwIDEgMCAtNDggMCAyNCAyNCAwIDEgMCA0OCAwek0xOTIgMjRjMC05LjUgNS42LTE4LjEgMTQuMi0yMS45czE4LjgtMi4zIDI1LjggNC4xbDgwIDcyYzUuMSA0LjYgNy45IDExIDcuOSAxNy44cy0yLjkgMTMuMy03LjkgMTcuOGwtODAgNzJjLTcgNi4zLTE3LjIgNy45LTI1LjggNC4xcy0xNC4yLTEyLjQtMTQuMi0yMS45bDAtNDAtMTYgMGMtMzUuMyAwLTY0IDI4LjctNjQgNjRsMCAxNjYuN2MyOC4zIDEyLjMgNDggNDAuNSA0OCA3My4zYzAgNDQuMi0zNS44IDgwLTgwIDgwcy04MC0zNS44LTgwLTgwYzAtMzIuOCAxOS43LTYxIDQ4LTczLjNMNDggMTkyYzAtNzAuNyA1Ny4zLTEyOCAxMjgtMTI4bDE2IDAgMC00MHpNNTYgNDMyYTI0IDI0IDAgMSAwIDQ4IDAgMjQgMjQgMCAxIDAgLTQ4IDB6XCJdXG59O1xuY29uc3QgZmFMaXN0VWwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbGlzdC11bCcsXG4gIGljb246IFs1MTIsIDUxMiwgW1wibGlzdC1kb3RzXCJdLCBcImYwY2FcIiwgXCJNNjQgMTQ0YTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnpNMTkyIDY0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDI4OCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyTDE5MiA2NHptMCAxNjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsMjg4IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTI4OCAwem0wIDE2MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwyODggMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtMjg4IDB6TTY0IDQ2NGE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6bTQ4LTIwOGE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwelwiXVxufTtcbmNvbnN0IGZhTGlzdERvdHMgPSBmYUxpc3RVbDtcbmNvbnN0IGZhU2Nob29sTG9jayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzY2hvb2wtbG9jaycsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTU2ZlwiLCBcIk0zMDIuMiA1LjRjMTAuNy03LjIgMjQuOC03LjIgMzUuNSAwTDQ3My43IDk2IDU5MiA5NmMyNi41IDAgNDggMjEuNSA0OCA0OGwwIDEyOGMwLTYxLjktNTAuMS0xMTItMTEyLTExMnMtMTEyIDUwLjEtMTEyIDExMmwwIDI0LjZjLTE5LjEgMTEuMS0zMiAzMS43LTMyIDU1LjRsLTYzLjcgMC0uMyAwYy0zNS4zIDAtNjQgMjguNy02NCA2NGwwIDk2IDY0IDBzMCAwIDAgMEw0OCA1MTJjLTI2LjUgMC00OC0yMS41LTQ4LTQ4TDAgMTQ0YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4bDExOC4zIDBMMzAyLjIgNS40ek04MCAyMDhsMCA2NGMwIDguOCA3LjIgMTYgMTYgMTZsMzIgMGM4LjggMCAxNi03LjIgMTYtMTZsMC02NGMwLTguOC03LjItMTYtMTYtMTZsLTMyIDBjLTguOCAwLTE2IDcuMi0xNiAxNnptMCAxMjhsMCA2NGMwIDguOCA3LjIgMTYgMTYgMTZsMzIgMGM4LjggMCAxNi03LjIgMTYtMTZsMC02NGMwLTguOC03LjItMTYtMTYtMTZsLTMyIDBjLTguOCAwLTE2IDcuMi0xNiAxNnptMjQwLTcyYTg4IDg4IDAgMSAwIDAtMTc2IDg4IDg4IDAgMSAwIDAgMTc2em0xNi0xMjBsMCAxNiAxNiAwYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2bC0zMiAwYy04LjggMC0xNi03LjItMTYtMTZsMC0zMmMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2em0xOTIgOTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMybDAgNDggNjQgMCAwLTQ4YzAtMTcuNy0xNC4zLTMyLTMyLTMyem0tODAgMzJjMC00NC4yIDM1LjgtODAgODAtODBzODAgMzUuOCA4MCA4MGwwIDQ4YzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgMTI4YzAgMTcuNy0xNC4zIDMyLTMyIDMybC0xNjAgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC0xMjhjMC0xNy43IDE0LjMtMzIgMzItMzJsMC00OHpcIl1cbn07XG5jb25zdCBmYVRvd2VyQ2VsbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0b3dlci1jZWxsJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJlNTg1XCIsIFwiTTYyLjYgMi4zQzQ2LjItNC4zIDI3LjYgMy42IDIwLjkgMjBDNy40IDUzLjQgMCA4OS45IDAgMTI4czcuNCA3NC42IDIwLjkgMTA4YzYuNiAxNi40IDI1LjMgMjQuMyA0MS43IDE3LjdTODYuOSAyMjguNCA4MC4zIDIxMkM2OS44IDE4Ni4xIDY0IDE1Ny44IDY0IDEyOHM1LjgtNTguMSAxNi4zLTg0Qzg2LjkgMjcuNiA3OSA5IDYyLjYgMi4zem00NTAuOCAwQzQ5NyA5IDQ4OS4xIDI3LjYgNDk1LjcgNDRDNTA2LjIgNjkuOSA1MTIgOTguMiA1MTIgMTI4cy01LjggNTguMS0xNi4zIDg0Yy02LjYgMTYuNCAxLjMgMzUgMTcuNyA0MS43czM1LTEuMyA0MS43LTE3LjdjMTMuNS0zMy40IDIwLjktNjkuOSAyMC45LTEwOHMtNy40LTc0LjYtMjAuOS0xMDhDNTQ4LjQgMy42IDUyOS44LTQuMyA1MTMuNCAyLjN6TTM0MC4xIDE2NS4yYzcuNS0xMC41IDExLjktMjMuMyAxMS45LTM3LjJjMC0zNS4zLTI4LjctNjQtNjQtNjRzLTY0IDI4LjctNjQgNjRjMCAxMy45IDQuNCAyNi43IDExLjkgMzcuMkw5OC45IDQ2Ni44Yy03LjMgMTYuMS0uMiAzNS4xIDE1LjkgNDIuNHMzNS4xIC4yIDQyLjQtMTUuOUwxNzcuNyA0NDhsMjIwLjYgMCAyMC42IDQ1LjJjNy4zIDE2LjEgMjYuMyAyMy4yIDQyLjQgMTUuOXMyMy4yLTI2LjMgMTUuOS00Mi40TDM0MC4xIDE2NS4yek0zNjkuMiAzODRsLTE2Mi40IDAgMTQuNS0zMiAxMzMuMyAwIDE0LjUgMzJ6TTI4OCAyMDUuM0wzMjUuNiAyODhsLTc1LjIgMEwyODggMjA1LjN6TTE2My4zIDczLjZjNS4zLTEyLjEtLjItMjYuMy0xMi40LTMxLjZzLTI2LjMgLjItMzEuNiAxMi40QzEwOS41IDc3IDEwNCAxMDEuOSAxMDQgMTI4czUuNSA1MSAxNS4zIDczLjZjNS4zIDEyLjEgMTkuNSAxNy43IDMxLjYgMTIuNHMxNy43LTE5LjUgMTIuNC0zMS42QzE1NiAxNjUuOCAxNTIgMTQ3LjQgMTUyIDEyOHM0LTM3LjggMTEuMy01NC40ek00NTYuNyA1NC40Yy01LjMtMTIuMS0xOS41LTE3LjctMzEuNi0xMi40cy0xNy43IDE5LjUtMTIuNCAzMS42QzQyMCA5MC4yIDQyNCAxMDguNiA0MjQgMTI4cy00IDM3LjgtMTEuMyA1NC40Yy01LjMgMTIuMSAuMiAyNi4zIDEyLjQgMzEuNnMyNi4zLS4yIDMxLjYtMTIuNEM0NjYuNSAxNzkgNDcyIDE1NC4xIDQ3MiAxMjhzLTUuNS01MS0xNS4zLTczLjZ6XCJdXG59O1xuY29uc3QgZmFEb3duTG9uZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdkb3duLWxvbmcnLFxuICBpY29uOiBbMzIwLCA1MTIsIFtcImxvbmctYXJyb3ctYWx0LWRvd25cIl0sIFwiZjMwOVwiLCBcIk0yIDMzNC41Yy0zLjggOC44LTIgMTkgNC42IDI2bDEzNiAxNDRjNC41IDQuOCAxMC44IDcuNSAxNy40IDcuNXMxMi45LTIuNyAxNy40LTcuNWwxMzYtMTQ0YzYuNi03IDguNC0xNy4yIDQuNi0yNnMtMTIuNS0xNC41LTIyLTE0LjVsLTcyIDAgMC0yODhjMC0xNy43LTE0LjMtMzItMzItMzJMMTI4IDBDMTEwLjMgMCA5NiAxNC4zIDk2IDMybDAgMjg4LTcyIDBjLTkuNiAwLTE4LjIgNS43LTIyIDE0LjV6XCJdXG59O1xuY29uc3QgZmFMb25nQXJyb3dBbHREb3duID0gZmFEb3duTG9uZztcbmNvbnN0IGZhUmFua2luZ1N0YXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncmFua2luZy1zdGFyJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlNTYxXCIsIFwiTTM1My44IDU0LjFMMzMwLjIgNi4zYy0zLjktOC4zLTE2LjEtOC42LTIwLjQgMEwyODYuMiA1NC4xbC01Mi4zIDcuNWMtOS4zIDEuNC0xMy4zIDEyLjktNi40IDE5LjhsMzggMzctOSA1Mi4xYy0xLjQgOS4zIDguMiAxNi41IDE2LjggMTIuMmw0Ni45LTI0LjggNDYuNiAyNC40YzguNiA0LjMgMTguMy0yLjkgMTYuOC0xMi4ybC05LTUyLjEgMzgtMzYuNmM2LjgtNi44IDIuOS0xOC4zLTYuNC0xOS44bC01Mi4zLTcuNXpNMjU2IDI1NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJsMCAxOTJjMCAxNy43IDE0LjMgMzIgMzIgMzJsMTI4IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJsMC0xOTJjMC0xNy43LTE0LjMtMzItMzItMzJsLTEyOCAwek0zMiAzMjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyTDAgNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMybDEyOCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMybDAtMTI4YzAtMTcuNy0xNC4zLTMyLTMyLTMyTDMyIDMyMHptNDE2IDk2bDAgNjRjMCAxNy43IDE0LjMgMzIgMzIgMzJsMTI4IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJsMC02NGMwLTE3LjctMTQuMy0zMi0zMi0zMmwtMTI4IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyelwiXVxufTtcbmNvbnN0IGZhQ2hlc3NLaW5nID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NoZXNzLWtpbmcnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFs5ODE4XSwgXCJmNDNmXCIsIFwiTTIyNCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgMTYgMTYgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtMTYgMCAwIDQ4IDE1MiAwYzIyLjEgMCA0MCAxNy45IDQwIDQwYzAgNS4zLTEgMTAuNS0zLjEgMTUuNEwzNjggNDAwIDgwIDQwMCAzLjEgMjE1LjRDMSAyMTAuNSAwIDIwNS4zIDAgMjAwYzAtMjIuMSAxNy45LTQwIDQwLTQwbDE1MiAwIDAtNDgtMTYgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmwxNiAwIDAtMTZjMC0xNy43IDE0LjMtMzIgMzItMzJ6TTM4LjYgNDczLjRMODAgNDMybDI4OCAwIDQxLjQgNDEuNGM0LjIgNC4yIDYuNiAxMCA2LjYgMTZjMCAxMi41LTEwLjEgMjIuNi0yMi42IDIyLjZMNTQuNiA1MTJDNDIuMSA1MTIgMzIgNTAxLjkgMzIgNDg5LjRjMC02IDIuNC0xMS44IDYuNi0xNnpcIl1cbn07XG5jb25zdCBmYVBlcnNvbkhhcmFzc2luZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwZXJzb24taGFyYXNzaW5nJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJlNTQ5XCIsIFwiTTE5MiA5NmE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6TTU5LjQgMzA0LjVMODggMjU2LjkgODggNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0xMjggMTYgMCAwIDEyOGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMjQ0LjcgNDcuNCA1Ny4xYzExLjMgMTMuNiAzMS41IDE1LjUgNDUuMSA0LjJzMTUuNS0zMS41IDQuMi00NS4xbC03My43LTg4LjljLTE4LjItMjItNDUuMy0zNC43LTczLjktMzQuN2wtMzUuOSAwYy0zMy43IDAtNjQuOSAxNy43LTgyLjMgNDYuNmwtNTguMyA5N2MtOS4xIDE1LjEtNC4yIDM0LjggMTAuOSA0My45czM0LjggNC4yIDQzLjktMTAuOXpNNDgwIDI0MGE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwek00NjQgMzQ0bDAgNTguNy00MS40LTQxLjRjLTcuMy03LjMtMTcuNi0xMC42LTI3LjgtOXMtMTguOSA4LjEtMjMuNSAxNy4zbC00OCA5NmMtNy45IDE1LjgtMS41IDM1IDE0LjMgNDIuOXMzNSAxLjUgNDIuOS0xNC4zTDQwOC44IDQzOGw1NC43IDU0LjdjMTIuNCAxMi40IDI5LjEgMTkuMyA0Ni42IDE5LjNjMzYuNCAwIDY1LjktMjkuNSA2NS45LTY1LjlMNTc2IDM0NGMwLTMwLjktMjUuMS01Ni01Ni01NnMtNTYgMjUuMS01NiA1NnpNMjg4IDQ4YzAgOC44IDcuMiAxNiAxNiAxNmw1NiAwYzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2bC01NiAwYy04LjggMC0xNiA3LjItMTYgMTZ6bS0uOCA0OS43Yy03LjktNC0xNy41LS43LTIxLjUgNy4ycy0uNyAxNy41IDcuMiAyMS41bDQ4IDI0YzcuOSA0IDE3LjUgLjcgMjEuNS03LjJzLjctMTcuNS03LjItMjEuNWwtNDgtMjR6XCJdXG59O1xuY29uc3QgZmFCcmF6aWxpYW5SZWFsU2lnbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdicmF6aWxpYW4tcmVhbC1zaWduJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJlNDZjXCIsIFwiTTQwMCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgMTguMmMxMi41IDIuMyAyNC43IDYuNCAzNi4yIDEyLjFsMTAuMSA1LjFjMTUuOCA3LjkgMjIuMiAyNy4xIDE0LjMgNDIuOXMtMjcuMSAyMi4yLTQyLjkgMTQuM2wtMTAuMi01LjFjLTkuOS01LTIwLjktNy41LTMyLTcuNWwtMS43IDBjLTI5LjggMC01My45IDI0LjEtNTMuOSA1My45YzAgMjIgMTMuNCA0MS44IDMzLjkgNTBsNTIgMjAuOGM0NC43IDE3LjkgNzQuMSA2MS4yIDc0LjEgMTA5LjRsMCAzLjRjMCA1MS4yLTMzLjYgOTQuNi04MCAxMDkuMmwwIDIxLjNjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC0xOS40Yy0xNS0zLjUtMjkuNC05LjctNDIuMy0xOC4zbC0yMy40LTE1LjZjLTE0LjctOS44LTE4LjctMjkuNy04LjktNDQuNHMyOS43LTE4LjcgNDQuNC04LjlMMzYxLjIgMzg5YzEwLjggNy4yIDIzLjQgMTEgMzYuMyAxMWMyNy45IDAgNTAuNS0yMi42IDUwLjUtNTAuNWwwLTMuNGMwLTIyLTEzLjQtNDEuOC0zMy45LTUwbC01Mi0yMC44QzMxNy4zIDI1Ny40IDI4OCAyMTQuMSAyODggMTY1LjlDMjg4IDExNCAzMjEuNSA3MCAzNjggNTQuMkwzNjggMzJjMC0xNy43IDE0LjMtMzIgMzItMzJ6TTAgNjRDMCA0Ni4zIDE0LjMgMzIgMzIgMzJsODAgMGM3OS41IDAgMTQ0IDY0LjUgMTQ0IDE0NGMwIDU4LjgtMzUuMiAxMDkuMy04NS43IDEzMS43bDUxLjQgMTI4LjRjNi42IDE2LjQtMS40IDM1LTE3LjggNDEuNnMtMzUtMS40LTQxLjYtMTcuOEwxMDYuMyAzMjAgNjQgMzIwbDAgMTI4YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyTDAgMjg4IDAgNjR6TTY0IDI1Nmw0OCAwYzQ0LjIgMCA4MC0zNS44IDgwLTgwcy0zNS44LTgwLTgwLTgwTDY0IDk2bDAgMTYwelwiXVxufTtcbmNvbnN0IGZhTGFuZG1hcmtEb21lID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2xhbmRtYXJrLWRvbWUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtcImxhbmRtYXJrLWFsdFwiXSwgXCJmNzUyXCIsIFwiTTI0OCAwbDE2IDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRsMCAxMC43QzM2OC40IDQ4LjEgNDMxLjkgMTExLjYgNDQ1LjMgMTkybDIuNyAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyTDY0IDI1NmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmwyLjcgMEM4MC4xIDExMS42IDE0My42IDQ4LjEgMjI0IDM0LjdMMjI0IDI0YzAtMTMuMyAxMC43LTI0IDI0LTI0ek02NCAyODhsNjQgMCAwIDEyOCA0MCAwIDAtMTI4IDY0IDAgMCAxMjggNDggMCAwLTEyOCA2NCAwIDAgMTI4IDQwIDAgMC0xMjggNjQgMCAwIDEzMi4zYy42IC4zIDEuMiAuNyAxLjggMS4xbDQ4IDMyYzExLjcgNy44IDE3IDIyLjQgMTIuOSAzNS45UzQ5NC4xIDUxMiA0ODAgNTEyTDMyIDUxMmMtMTQuMSAwLTI2LjUtOS4yLTMwLjYtMjIuN3MxLjEtMjguMSAxMi45LTM1LjlsNDgtMzJjLjYtLjQgMS4yLS43IDEuOC0xLjFMNjQgMjg4elwiXVxufTtcbmNvbnN0IGZhTGFuZG1hcmtBbHQgPSBmYUxhbmRtYXJrRG9tZTtcbmNvbnN0IGZhQXJyb3dVcCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhcnJvdy11cCcsXG4gIGljb246IFszODQsIDUxMiwgWzg1OTNdLCBcImYwNjJcIiwgXCJNMjE0LjYgNDEuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBsLTE2MCAxNjBjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBMMTYwIDE0MS4yIDE2MCA0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTMwNi43TDMyOS40IDI0Ni42YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNsLTE2MC0xNjB6XCJdXG59O1xuY29uc3QgZmFUdiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0dicsXG4gIGljb246IFs2NDAsIDUxMiwgWzYzNzE3LCBcInRlbGV2aXNpb25cIiwgXCJ0di1hbHRcIl0sIFwiZjI2Y1wiLCBcIk02NCA2NGwwIDI4OCA1MTIgMCAwLTI4OEw2NCA2NHpNMCA2NEMwIDI4LjcgMjguNyAwIDY0IDBMNTc2IDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCAyODhjMCAzNS4zLTI4LjcgNjQtNjQgNjRMNjQgNDE2Yy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDY0ek0xMjggNDQ4bDM4NCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC0zODQgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnpcIl1cbn07XG5jb25zdCBmYVRlbGV2aXNpb24gPSBmYVR2O1xuY29uc3QgZmFUdkFsdCA9IGZhVHY7XG5jb25zdCBmYVNocmltcCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzaHJpbXAnLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjk0MjRdLCBcImU0NDhcIiwgXCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NnMyOC43IDY0IDY0IDY0bDEgMGMzLjcgODguOSA3NyAxNjAgMTY3IDE2MGw1NiAwIDAtMTkyLTI0IDBMODguOCAxMjggNjQgMTI4Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDQwMCAwYzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2TDY0IDMyek0yMjQgNDU2YzAgMTMuMyAxMC43IDI0IDI0IDI0bDcyIDAgMC03Mi4yLTY0LjEtMjIuNGMtMTIuNS00LjQtMjYuMiAyLjItMzAuNiAxNC43czIuMiAyNi4yIDE0LjcgMzAuNmw0LjUgMS42QzIzMyA0MzMuOSAyMjQgNDQzLjkgMjI0IDQ1NnptMTI4IDIzLjNjMzYuNC0zLjMgNjkuNS0xNy42IDk2LjEtMzkuNmwtODYuNS0zNC42Yy0zIDEuOC02LjIgMy4yLTkuNiA0LjNsMCA2OS45ek00NzIuNiA0MTVjMjQuNi0zMC4zIDM5LjQtNjguOSAzOS40LTExMWMwLTEyLjMtMS4zLTI0LjMtMy43LTM1LjlMMzgyLjggMzU1LjFjLjggMy40IDEuMiA3IDEuMiAxMC42YzAgNC42LS43IDktMS45IDEzLjFMNDcyLjYgNDE1ek0zMzYgMTI4bC0xNiAwIDAgMTkyIDE4LjMgMGM5LjkgMCAxOS4xIDMuMiAyNi42IDguNWwxMzMuNS05Mi40QzQ3MS44IDE3Mi42IDQwOS4xIDEyOCAzMzYgMTI4ek0xNjggMTkyYTI0IDI0IDAgMSAxIDQ4IDAgMjQgMjQgMCAxIDEgLTQ4IDB6XCJdXG59O1xuY29uc3QgZmFMaXN0Q2hlY2sgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbGlzdC1jaGVjaycsXG4gIGljb246IFs1MTIsIDUxMiwgW1widGFza3NcIl0sIFwiZjBhZVwiLCBcIk0xNTIuMSAzOC4yYzkuOSA4LjkgMTAuNyAyNCAxLjggMzMuOWwtNzIgODBjLTQuNCA0LjktMTAuNiA3LjgtMTcuMiA3LjlzLTEyLjktMi40LTE3LjYtN0w3IDExM0MtMi4zIDEwMy42LTIuMyA4OC40IDcgNzlzMjQuNi05LjQgMzMuOSAwbDIyLjEgMjIuMSA1NS4xLTYxLjJjOC45LTkuOSAyNC0xMC43IDMzLjktMS44em0wIDE2MGM5LjkgOC45IDEwLjcgMjQgMS44IDMzLjlsLTcyIDgwYy00LjQgNC45LTEwLjYgNy44LTE3LjIgNy45cy0xMi45LTIuNC0xNy42LTdMNyAyNzNjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMGwyMi4xIDIyLjEgNTUuMS02MS4yYzguOS05LjkgMjQtMTAuNyAzMy45LTEuOHpNMjI0IDk2YzAtMTcuNyAxNC4zLTMyIDMyLTMybDIyNCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC0yMjQgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6bTAgMTYwYzAtMTcuNyAxNC4zLTMyIDMyLTMybDIyNCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC0yMjQgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6TTE2MCA0MTZjMC0xNy43IDE0LjMtMzIgMzItMzJsMjg4IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTI4OCAwYy0xNy43IDAtMzItMTQuMy0zMi0zMnpNNDggMzY4YTQ4IDQ4IDAgMSAxIDAgOTYgNDggNDggMCAxIDEgMC05NnpcIl1cbn07XG5jb25zdCBmYVRhc2tzID0gZmFMaXN0Q2hlY2s7XG5jb25zdCBmYUp1Z0RldGVyZ2VudCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdqdWctZGV0ZXJnZW50JyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJlNTE5XCIsIFwiTTk2IDI0YzAtMTMuMyAxMC43LTI0IDI0LTI0bDgwIDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRsMCAyNCA4IDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRMODggOTZDNzQuNyA5NiA2NCA4NS4zIDY0IDcyczEwLjctMjQgMjQtMjRsOCAwIDAtMjR6TTAgMjU2YzAtNzAuNyA1Ny4zLTEyOCAxMjgtMTI4bDEyOCAwYzcwLjcgMCAxMjggNTcuMyAxMjggMTI4bDAgMTkyYzAgMzUuMy0yOC43IDY0LTY0IDY0TDY0IDUxMmMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCAyNTZ6bTI1NiAwbDAgOTZjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTk2YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyelwiXVxufTtcbmNvbnN0IGZhQ2lyY2xlVXNlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaXJjbGUtdXNlcicsXG4gIGljb246IFs1MTIsIDUxMiwgWzYyMTQyLCBcInVzZXItY2lyY2xlXCJdLCBcImYyYmRcIiwgXCJNMzk5IDM4NC4yQzM3Ni45IDM0NS44IDMzNS40IDMyMCAyODggMzIwbC02NCAwYy00Ny40IDAtODguOSAyNS44LTExMSA2NC4yYzM1LjIgMzkuMiA4Ni4yIDYzLjggMTQzIDYzLjhzMTA3LjgtMjQuNyAxNDMtNjMuOHpNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2em0yNTYgMTZhNzIgNzIgMCAxIDAgMC0xNDQgNzIgNzIgMCAxIDAgMCAxNDR6XCJdXG59O1xuY29uc3QgZmFVc2VyQ2lyY2xlID0gZmFDaXJjbGVVc2VyO1xuY29uc3QgZmFVc2VyU2hpZWxkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3VzZXItc2hpZWxkJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNTA1XCIsIFwiTTIyNCAyNTZBMTI4IDEyOCAwIDEgMCAyMjQgMGExMjggMTI4IDAgMSAwIDAgMjU2em0tNDUuNyA0OEM3OS44IDMwNCAwIDM4My44IDAgNDgyLjNDMCA0OTguNyAxMy4zIDUxMiAyOS43IDUxMmwzODguNiAwYzEuOCAwIDMuNS0uMiA1LjMtLjVjLTc2LjMtNTUuMS05OS44LTE0MS0xMDMuMS0yMDAuMmMtMTYuMS00LjgtMzMuMS03LjMtNTAuNy03LjNsLTkxLjQgMHptMzA4LjgtNzguM2wtMTIwIDQ4QzM1OCAyNzcuNCAzNTIgMjg2LjIgMzUyIDI5NmMwIDYzLjMgMjUuOSAxNjguOCAxMzQuOCAyMTQuMmM1LjkgMi41IDEyLjYgMi41IDE4LjUgMEM2MTQuMSA0NjQuOCA2NDAgMzU5LjMgNjQwIDI5NmMwLTkuOC02LTE4LjYtMTUuMS0yMi4zbC0xMjAtNDhjLTUuNy0yLjMtMTIuMS0yLjMtMTcuOCAwek01OTEuNCAzMTJjLTMuOSA1MC43LTI3LjIgMTE2LjctOTUuNCAxNDkuN2wwLTE4Ny44TDU5MS40IDMxMnpcIl1cbn07XG5jb25zdCBmYVdpbmQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnd2luZCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjcyZVwiLCBcIk0yODggMzJjMCAxNy43IDE0LjMgMzIgMzIgMzJsMzIgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkwzMiAxMjhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsMzIwIDBjNTMgMCA5Ni00MyA5Ni05NnMtNDMtOTYtOTYtOTZMMzIwIDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyem02NCAzNTJjMCAxNy43IDE0LjMgMzIgMzIgMzJsMzIgMGM1MyAwIDk2LTQzIDk2LTk2cy00My05Ni05Ni05NkwzMiAyMjRjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsMzg0IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTMyIDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyek0xMjggNTEybDMyIDBjNTMgMCA5Ni00MyA5Ni05NnMtNDMtOTYtOTYtOTZMMzIgMzIwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDEyOCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC0zMiAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyelwiXVxufTtcbmNvbnN0IGZhQ2FyQnVyc3QgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2FyLWJ1cnN0JyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXCJjYXItY3Jhc2hcIl0sIFwiZjVlMVwiLCBcIk0xNzYgOGMtNi42IDAtMTIuNCA0LTE0LjkgMTAuMWwtMjkuNCA3NEw1NS42IDY4LjljLTYuMy0xLjktMTMuMSAuMi0xNy4yIDUuM3MtNC42IDEyLjItMS40IDE3LjlsMzkuNSA2OS4xTDEwLjkgMjA2LjRjLTUuNCAzLjctOCAxMC4zLTYuNSAxNi43czYuNyAxMS4yIDEzLjEgMTIuMmw3OC43IDEyLjJMOTAuNiAzMjdjLS41IDYuNSAzLjEgMTIuNyA5IDE1LjVzMTIuOSAxLjggMTcuOC0yLjZsMzUuMy0zMi41IDkuNS0zNS40IDEwLjQtMzguNmM4LTI5LjkgMzAuNS01Mi4xIDU3LjktNjAuOWw0MS01OS4yYzExLjMtMTYuMyAyNi40LTI4LjkgNDMuNS0zNy4yYy0uNC0uNi0uOC0xLjItMS4zLTEuOGMtNC4xLTUuMS0xMC45LTcuMi0xNy4yLTUuM0wyMjAuMyA5Mi4xbC0yOS40LTc0QzE4OC40IDEyIDE4Mi42IDggMTc2IDh6TTM2Ny43IDE2MS41bDEzNS42IDM2LjNjNi41IDEuOCAxMS4zIDcuNCAxMS44IDE0LjJsNC42IDU2LjUtMjAxLjUtNTQgMzIuMi00Ni42YzMuOC01LjYgMTAuOC04LjEgMTcuMy02LjR6bS02OS45LTMwbC00Ny45IDY5LjNjLTIxLjYgMy00MC4zIDE4LjYtNDYuMyA0MWwtMTAuNCAzOC42LTE2LjYgNjEuOC04LjMgMzAuOWMtNC42IDE3LjEgNS42IDM0LjYgMjIuNiAzOS4ybDE1LjUgNC4xYzE3LjEgNC42IDM0LjYtNS42IDM5LjItMjIuNmw4LjMtMzAuOSAyNDcuMyA2Ni4zLTguMyAzMC45Yy00LjYgMTcuMSA1LjYgMzQuNiAyMi42IDM5LjJsMTUuNSA0LjFjMTcuMSA0LjYgMzQuNi01LjYgMzkuMi0yMi42bDguMy0zMC45TDU5NSAzODhsMTAuNC0zOC42YzYtMjIuNC0yLjUtNDUuMi0xOS42LTU4LjdsLTYuOC04NGMtMi43LTMzLjctMjYuNC02Mi01OS03MC44TDM4NC4yIDk5LjdjLTMyLjctOC44LTY3LjMgNC04Ni41IDMxLjh6bS0xNyAxMzFhMjQgMjQgMCAxIDEgLTEyLjQgNDYuNCAyNCAyNCAwIDEgMSAxMi40LTQ2LjR6bTIxNy45IDgzLjJBMjQgMjQgMCAxIDEgNTQ1IDM1OC4xYTI0IDI0IDAgMSAxIC00Ni40LTEyLjR6XCJdXG59O1xuY29uc3QgZmFDYXJDcmFzaCA9IGZhQ2FyQnVyc3Q7XG5jb25zdCBmYVkgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAneScsXG4gIGljb246IFszODQsIDUxMiwgWzEyMV0sIFwiNTlcIiwgXCJNNTggNDUuNEM0Ny44IDMxIDI3LjggMjcuNyAxMy40IDM4Uy00LjMgNjguMiA2IDgyLjZMMTYwIDI5OC4zIDE2MCA0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTE0OS43TDM3OCA4Mi42YzEwLjMtMTQuNCA2LjktMzQuNC03LjQtNDQuNlMzMzYuMiAzMSAzMjYgNDUuNEwxOTIgMjMyLjkgNTggNDUuNHpcIl1cbn07XG5jb25zdCBmYVBlcnNvblNub3dib2FyZGluZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwZXJzb24tc25vd2JvYXJkaW5nJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI3OTM4LCBcInNub3dib2FyZGluZ1wiXSwgXCJmN2NlXCIsIFwiTTIwOS43IDMuNGMxNS44LTcuOSAzNS0xLjUgNDIuOSAxNC4zbDI1IDUwIDQyLjQgOC41YzE5LjUgMy45IDM3LjggMTIuMyA1My41IDI0LjVsMTI2LjEgOTguMWMxNCAxMC45IDE2LjUgMzEgNS42IDQ0LjlzLTMxIDE2LjUtNDQuOSA1LjZsLTcyLjEtNTYuMS03MS41IDMxLjggMzMuMSAyNy42YzIzLjIgMTkuMyAzMy41IDUwIDI2LjcgNzkuNGwtMTcuNCA3NS4yYy0yLjIgOS40LTguMiAxNi44LTE2LjEgMjFsODYuNSAzMy4xYzQuNiAxLjggOS40IDIuNiAxNC4zIDIuNmwyOC4yIDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRsLTI4LjIgMGMtMTAuOCAwLTIxLjQtMi0zMS41LTUuOEw2MC4xIDM3MS4zYy0xMS41LTQuNC0yMi0xMS4yLTMwLjgtMjBMNyAzMjljLTkuNC05LjQtOS40LTI0LjYgMC0zMy45czI0LjYtOS40IDMzLjkgMGwyMi40IDIyLjRjNCA0IDguNyA3LjEgMTQgOS4xbDIyLjQgOC42Yy0uOC0xLjYtMS41LTMuMi0yLjEtNC45Yy01LjYtMTYuOCAzLjUtMzQuOSAyMC4yLTQwLjVMMTkyIDI2NC45bDAtNTMuMmMwLTI0LjIgMTMuNy00Ni40IDM1LjQtNTcuMmw0NS4yLTIyLjYtNy41LTEuNWMtMTkuNC0zLjktMzUuOS0xNi41LTQ0LjctMzQuMWwtMjUtNTBjLTcuOS0xNS44LTEuNS0zNSAxNC4zLTQyLjl6TTEzOSAzNTAuMWwxNTkgNjAuOWMtMi4xLTUuNi0yLjYtMTEuOS0xLjEtMTguMmwxNy40LTc1LjJjMS40LTUuOS0uNy0xMi01LjMtMTUuOWwtNTIuOC00NCAwIDE4LjhjMCAyMC43LTEzLjIgMzktMzIuOCA0NS41TDEzOSAzNTAuMXpNNDMyIDBhNDggNDggMCAxIDEgMCA5NiA0OCA0OCAwIDEgMSAwLTk2elwiXVxufTtcbmNvbnN0IGZhU25vd2JvYXJkaW5nID0gZmFQZXJzb25Tbm93Ym9hcmRpbmc7XG5jb25zdCBmYVRydWNrRmFzdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0cnVjay1mYXN0JyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXCJzaGlwcGluZy1mYXN0XCJdLCBcImY0OGJcIiwgXCJNMTEyIDBDODUuNSAwIDY0IDIxLjUgNjQgNDhsMCA0OEwxNiA5NmMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmw0OCAwIDIwOCAwYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2TDY0IDE2MGwtMTYgMGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmwxNiAwIDE3NiAwYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2TDY0IDIyNGwtNDggMGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmw0OCAwIDE0NCAwYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2TDY0IDI4OGwwIDEyOGMwIDUzIDQzIDk2IDk2IDk2czk2LTQzIDk2LTk2bDEyOCAwYzAgNTMgNDMgOTYgOTYgOTZzOTYtNDMgOTYtOTZsMzIgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwwLTY0IDAtMzIgMC0xOC43YzAtMTctNi43LTMzLjMtMTguNy00NS4zTDUxMiAxMTQuN2MtMTItMTItMjguMy0xOC43LTQ1LjMtMTguN0w0MTYgOTZsMC00OGMwLTI2LjUtMjEuNS00OC00OC00OEwxMTIgMHpNNTQ0IDIzNy4zbDAgMTguNy0xMjggMCAwLTk2IDUwLjcgMEw1NDQgMjM3LjN6TTE2MCAzNjhhNDggNDggMCAxIDEgMCA5NiA0OCA0OCAwIDEgMSAwLTk2em0yNzIgNDhhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHpcIl1cbn07XG5jb25zdCBmYVNoaXBwaW5nRmFzdCA9IGZhVHJ1Y2tGYXN0O1xuY29uc3QgZmFGaXNoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Zpc2gnLFxuICBpY29uOiBbNTc2LCA1MTIsIFsxMjgwMzFdLCBcImY1NzhcIiwgXCJNMTgwLjUgMTQxLjVDMjE5LjcgMTA4LjUgMjcyLjYgODAgMzM2IDgwczExNi4zIDI4LjUgMTU1LjUgNjEuNWMzOS4xIDMzIDY2LjkgNzIuNCA4MSA5OS44YzQuNyA5LjIgNC43IDIwLjEgMCAyOS4zYy0xNC4xIDI3LjQtNDEuOSA2Ni44LTgxIDk5LjhDNDUyLjMgNDAzLjUgMzk5LjQgNDMyIDMzNiA0MzJzLTExNi4zLTI4LjUtMTU1LjUtNjEuNWMtMTYuMi0xMy43LTMwLjUtMjguNS00Mi43LTQzLjFMNDguMSAzNzkuNmMtMTIuNSA3LjMtMjguNCA1LjMtMzguNy00LjlTLTMgMzQ4LjcgNC4yIDMzNi4xTDUwIDI1NiA0LjIgMTc1LjljLTcuMi0xMi42LTUtMjguNCA1LjMtMzguNnMyNi4xLTEyLjIgMzguNy00LjlsODkuNyA1Mi4zYzEyLjItMTQuNiAyNi41LTI5LjQgNDIuNy00My4xek00NDggMjU2YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6XCJdXG59O1xuY29uc3QgZmFVc2VyR3JhZHVhdGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndXNlci1ncmFkdWF0ZScsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjUwMVwiLCBcIk0yMTkuMyAuNWMzLjEtLjYgNi4zLS42IDkuNCAwbDIwMCA0MEM0MzkuOSA0Mi43IDQ0OCA1Mi42IDQ0OCA2NHMtOC4xIDIxLjMtMTkuMyAyMy41TDM1MiAxMDIuOWwwIDU3LjFjMCA3MC43LTU3LjMgMTI4LTEyOCAxMjhzLTEyOC01Ny4zLTEyOC0xMjhsMC01Ny4xTDQ4IDkzLjNsMCA2NS4xIDE1LjcgNzguNGMuOSA0LjctLjMgOS42LTMuMyAxMy4zcy03LjYgNS45LTEyLjQgNS45bC0zMiAwYy00LjggMC05LjMtMi4xLTEyLjQtNS45cy00LjMtOC42LTMuMy0xMy4zTDE2IDE1OC40bDAtNzEuOEM2LjUgODMuMyAwIDc0LjMgMCA2NEMwIDUyLjYgOC4xIDQyLjcgMTkuMyA0MC41bDIwMC00MHpNMTExLjkgMzI3LjdjMTAuNS0zLjQgMjEuOCAuNCAyOS40IDguNWw3MSA3NS41YzYuMyA2LjcgMTcgNi43IDIzLjMgMGw3MS03NS41YzcuNi04LjEgMTguOS0xMS45IDI5LjQtOC41QzQwMSAzNDguNiA0NDggNDA5LjQgNDQ4IDQ4MS4zYzAgMTctMTMuOCAzMC43LTMwLjcgMzAuN0wzMC43IDUxMkMxMy44IDUxMiAwIDQ5OC4yIDAgNDgxLjNjMC03MS45IDQ3LTEzMi43IDExMS45LTE1My42elwiXVxufTtcbmNvbnN0IGZhQ2lyY2xlSGFsZlN0cm9rZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaXJjbGUtaGFsZi1zdHJva2UnLFxuICBpY29uOiBbNTEyLCA1MTIsIFs5NjgwLCBcImFkanVzdFwiXSwgXCJmMDQyXCIsIFwiTTQ0OCAyNTZjMC0xMDYtODYtMTkyLTE5Mi0xOTJsMCAzODRjMTA2IDAgMTkyLTg2IDE5Mi0xOTJ6TTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnpcIl1cbn07XG5jb25zdCBmYUFkanVzdCA9IGZhQ2lyY2xlSGFsZlN0cm9rZTtcbmNvbnN0IGZhQ2xhcHBlcmJvYXJkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NsYXBwZXJib2FyZCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZTEzMVwiLCBcIk00NDggMzJsLTg2LjEgMC0xIDEtMTI3IDEyNyA5Mi4xIDAgMS0xTDQ1My44IDMyLjNjLTEuOS0uMi0zLjgtLjMtNS44LS4zem02NCAxMjhsMC02NGMwLTE1LjEtNS4zLTI5LjEtMTQtNDBsLTEwNCAxMDRMNTEyIDE2MHpNMjk0LjEgMzJsLTkyLjEgMC0xIDFMNzMuOSAxNjBsOTIuMSAwIDEtMSAxMjctMTI3ek02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2bDAgNjQgNi4xIDAgMS0xIDEyNy0xMjdMNjQgMzJ6TTUxMiAxOTJMMCAxOTIgMCA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzg0IDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0yMjR6XCJdXG59O1xuY29uc3QgZmFDaXJjbGVSYWRpYXRpb24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2lyY2xlLXJhZGlhdGlvbicsXG4gIGljb246IFs1MTIsIDUxMiwgWzk3NjIsIFwicmFkaWF0aW9uLWFsdFwiXSwgXCJmN2JhXCIsIFwiTTI1NiA2NGExOTIgMTkyIDAgMSAxIDAgMzg0IDE5MiAxOTIgMCAxIDEgMC0zODR6bTAgNDQ4QTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMjAwIDI1NmMwLTIwLjcgMTEuMy0zOC44IDI4LTQ4LjVsLTM2LTYyLjNjLTguOC0xNS4zLTI4LjctMjAuOC00Mi05Yy0yNS42IDIyLjYtNDMuOSA1My4zLTUwLjkgODguMUM5NS43IDI0MS41IDExMC4zIDI1NiAxMjggMjU2bDcyIDB6bTI4IDQ4LjVsLTM2IDYyLjRjLTguOCAxNS4zLTMuNiAzNS4yIDEzLjEgNDAuOGMxNiA1LjQgMzMuMSA4LjMgNTAuOSA4LjNzMzQuOS0yLjkgNTAuOS04LjNjMTYuNy01LjYgMjEuOS0yNS41IDEzLjEtNDAuOGwtMzYtNjIuNGMtOC4yIDQuOC0xNy44IDcuNS0yOCA3LjVzLTE5LjgtMi43LTI4LTcuNXpNMzEyIDI1Nmw3MiAwYzE3LjcgMCAzMi4zLTE0LjUgMjguOC0zMS44Yy03LTM0LjgtMjUuMy02NS41LTUwLjktODguMWMtMTMuMi0xMS43LTMzLjEtNi4zLTQyIDlsLTM2IDYyLjNjMTYuNyA5LjcgMjggMjcuOCAyOCA0OC41em0tNTYgMzJhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0elwiXVxufTtcbmNvbnN0IGZhUmFkaWF0aW9uQWx0ID0gZmFDaXJjbGVSYWRpYXRpb247XG5jb25zdCBmYUJhc2ViYWxsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Jhc2ViYWxsJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI5MzU4LCA5OTE4LCBcImJhc2ViYWxsLWJhbGxcIl0sIFwiZjQzM1wiLCBcIk02Mi43IDIyMy40Yy00LjggLjQtOS43IC42LTE0LjcgLjZjLTE1LjYgMC0zMC44LTItNDUuMi01LjlDMTkuMiAxMDcuMSAxMDcuMSAxOS4yIDIxOC4xIDIuOEMyMjIgMTcuMiAyMjQgMzIuNCAyMjQgNDhjMCA0LjktLjIgOS44LS42IDE0LjdjLS43IDguOCA1LjggMTYuNSAxNC42IDE3LjNzMTYuNS01LjggMTcuMy0xNC42Yy41LTUuNyAuNy0xMS41IC43LTE3LjNjMC0xNi41LTEuOS0zMi42LTUuNi00Ny45YzEuOCAwIDMuNy0uMSA1LjYtLjFDMzk3LjQgMCA1MTIgMTE0LjYgNTEyIDI1NmMwIDEuOSAwIDMuNy0uMSA1LjZjLTE1LjQtMy42LTMxLjQtNS42LTQ3LjktNS42Yy01LjggMC0xMS42IC4yLTE3LjMgLjdjLTguOCAuNy0xNS40IDguNS0xNC42IDE3LjNzOC41IDE1LjQgMTcuMyAxNC42YzQuOC0uNCA5LjctLjYgMTQuNy0uNmMxNS42IDAgMzAuOCAyIDQ1LjIgNS45QzQ5Mi44IDQwNC45IDQwNC45IDQ5Mi44IDI5My45IDUwOS4yQzI5MCA0OTQuOCAyODggNDc5LjYgMjg4IDQ2NGMwLTQuOSAuMi05LjggLjYtMTQuN2MuNy04LjgtNS44LTE2LjUtMTQuNi0xNy4zcy0xNi41IDUuOC0xNy4zIDE0LjZjLS41IDUuNy0uNyAxMS41LS43IDE3LjNjMCAxNi41IDEuOSAzMi42IDUuNiA0Ny45Yy0xLjggMC0zLjcgLjEtNS42IC4xQzExNC42IDUxMiAwIDM5Ny40IDAgMjU2YzAtMS45IDAtMy43IC4xLTUuNkMxNS40IDI1NC4xIDMxLjUgMjU2IDQ4IDI1NmM1LjggMCAxMS42LS4yIDE3LjMtLjdjOC44LS43IDE1LjQtOC41IDE0LjYtMTcuM3MtOC41LTE1LjQtMTcuMy0xNC42ek0xMjEuMyAyMDhjLTggMy43LTExLjYgMTMuMi03LjkgMjEuMnMxMy4yIDExLjYgMjEuMiA3LjljNDUuMi0yMC44IDgxLjctNTcuMiAxMDIuNS0xMDIuNWMzLjctOCAuMi0xNy41LTcuOS0yMS4ycy0xNy41LS4yLTIxLjIgNy45Yy0xNy42IDM4LjMtNDguNSA2OS4yLTg2LjcgODYuN3ptMjc3LjIgNzQuN2MtMy43LTgtMTMuMi0xMS42LTIxLjItNy45Yy00NS4yIDIwLjgtODEuNyA1Ny4yLTEwMi41IDEwMi41Yy0zLjcgOC0uMiAxNy41IDcuOSAyMS4yczE3LjUgLjIgMjEuMi03LjljMTcuNi0zOC4zIDQ4LjUtNjkuMiA4Ni43LTg2LjdjOC0zLjcgMTEuNi0xMy4yIDcuOS0yMS4yelwiXVxufTtcbmNvbnN0IGZhQmFzZWJhbGxCYWxsID0gZmFCYXNlYmFsbDtcbmNvbnN0IGZhSmV0RmlnaHRlclVwID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2pldC1maWdodGVyLXVwJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJlNTE4XCIsIFwiTTI3MC43IDkuN0MyNjguMiAzLjggMjYyLjQgMCAyNTYgMHMtMTIuMiAzLjgtMTQuNyA5LjdMMTk3LjIgMTEyLjZjLTMuNCA4LTUuMiAxNi41LTUuMiAyNS4ybDAgNzctMTQ0IDg0TDQ4IDI4MGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNGwwIDU2IDAgMzIgMCAyNGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0bDAtOCAxNDQgMCAwIDMyLjdMMTMzLjUgNDY4Yy0zLjUgMy01LjUgNy40LTUuNSAxMmwwIDE2YzAgOC44IDcuMiAxNiAxNiAxNmw5NiAwIDAtNjRjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNmwwIDY0IDk2IDBjOC44IDAgMTYtNy4yIDE2LTE2bDAtMTZjMC00LjYtMi05LTUuNS0xMkwzMjAgNDE2LjdsMC0zMi43IDE0NCAwIDAgOGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0bDAtMjQgMC0zMiAwLTU2YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0bDAgMTguOC0xNDQtODQgMC03N2MwLTguNy0xLjgtMTcuMi01LjItMjUuMkwyNzAuNyA5Ljd6XCJdXG59O1xuY29uc3QgZmFEaWFncmFtUHJvamVjdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdkaWFncmFtLXByb2plY3QnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtcInByb2plY3QtZGlhZ3JhbVwiXSwgXCJmNTQyXCIsIFwiTTAgODBDMCA1My41IDIxLjUgMzIgNDggMzJsOTYgMGMyNi41IDAgNDggMjEuNSA0OCA0OGwwIDE2IDE5MiAwIDAtMTZjMC0yNi41IDIxLjUtNDggNDgtNDhsOTYgMGMyNi41IDAgNDggMjEuNSA0OCA0OGwwIDk2YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4bC05NiAwYy0yNi41IDAtNDgtMjEuNS00OC00OGwwLTE2LTE5MiAwIDAgMTZjMCAxLjctLjEgMy40LS4zIDVMMjcyIDI4OGw5NiAwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4bDAgOTZjMCAyNi41LTIxLjUgNDgtNDggNDhsLTk2IDBjLTI2LjUgMC00OC0yMS41LTQ4LTQ4bDAtOTZjMC0xLjcgLjEtMy40IC4zLTVMMTQ0IDIyNGwtOTYgMGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhMMCA4MHpcIl1cbn07XG5jb25zdCBmYVByb2plY3REaWFncmFtID0gZmFEaWFncmFtUHJvamVjdDtcbmNvbnN0IGZhQ29weSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjb3B5JyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMGM1XCIsIFwiTTIwOCAwTDMzMi4xIDBjMTIuNyAwIDI0LjkgNS4xIDMzLjkgMTQuMWw2Ny45IDY3LjljOSA5IDE0LjEgMjEuMiAxNC4xIDMzLjlMNDQ4IDMzNmMwIDI2LjUtMjEuNSA0OC00OCA0OGwtMTkyIDBjLTI2LjUgMC00OC0yMS41LTQ4LTQ4bDAtMjg4YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4ek00OCAxMjhsODAgMCAwIDY0LTY0IDAgMCAyNTYgMTkyIDAgMC0zMiA2NCAwIDAgNDhjMCAyNi41LTIxLjUgNDgtNDggNDhMNDggNTEyYy0yNi41IDAtNDgtMjEuNS00OC00OEwwIDE3NmMwLTI2LjUgMjEuNS00OCA0OC00OHpcIl1cbn07XG5jb25zdCBmYVZvbHVtZVhtYXJrID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3ZvbHVtZS14bWFyaycsXG4gIGljb246IFs1NzYsIDUxMiwgW1widm9sdW1lLW11dGVcIiwgXCJ2b2x1bWUtdGltZXNcIl0sIFwiZjZhOVwiLCBcIk0zMDEuMSAzNC44QzMxMi42IDQwIDMyMCA1MS40IDMyMCA2NGwwIDM4NGMwIDEyLjYtNy40IDI0LTE4LjkgMjkuMnMtMjUgMy4xLTM0LjQtNS4zTDEzMS44IDM1MiA2NCAzNTJjLTM1LjMgMC02NC0yOC43LTY0LTY0bDAtNjRjMC0zNS4zIDI4LjctNjQgNjQtNjRsNjcuOCAwTDI2Ni43IDQwLjFjOS40LTguNCAyMi45LTEwLjQgMzQuNC01LjN6TTQyNSAxNjdsNTUgNTUgNTUtNTVjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45bC01NSA1NSA1NSA1NWM5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwbC01NS01NS01NSA1NWMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOWw1NS01NS01NS01NWMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwelwiXVxufTtcbmNvbnN0IGZhVm9sdW1lTXV0ZSA9IGZhVm9sdW1lWG1hcms7XG5jb25zdCBmYVZvbHVtZVRpbWVzID0gZmFWb2x1bWVYbWFyaztcbmNvbnN0IGZhSGFuZFNwYXJrbGVzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hhbmQtc3BhcmtsZXMnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImUwNWRcIiwgXCJNMzIwIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCAyMDhjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNmwwLTE3NmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMybDAgMTc2YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZsMC0xMTJjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMmwwIDE5NS4xYy0xMS45IDQuOC0yMS4zIDE0LjktMjUgMjcuOGwtOC45IDMxLjJMNDc4LjkgMzkxQzQ2MC42IDM5Ni4zIDQ0OCA0MTMgNDQ4IDQzMmMwIDE4LjkgMTIuNSAzNS42IDMwLjYgNDAuOUM0NDguNCA0OTcuNCA0MDkuOSA1MTIgMzY4IDUxMmwtMTkuMiAwYy01OS42IDAtMTE2LjktMjIuOS0xNjAtNjRMNzYuNCAzNDFjLTE2LTE1LjItMTYuNi00MC42LTEuNC01Ni42czQwLjYtMTYuNiA1Ni42LTEuNGw2MC41IDU3LjZjMC0xLjUtLjEtMy4xLS4xLTQuNmwwLTI3MmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMybDAgMTc2YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZsMC0yMDhjMC0xNy43IDE0LjMtMzIgMzItMzJ6bS03LjMgMzI2LjZjLTEuMS0zLjktNC43LTYuNi04LjctNi42cy03LjYgMi43LTguNyA2LjZMMjg4IDM1MmwtMjUuNCA3LjNjLTMuOSAxLjEtNi42IDQuNy02LjYgOC43czIuNyA3LjYgNi42IDguN0wyODggMzg0bDcuMyAyNS40YzEuMSAzLjkgNC43IDYuNiA4LjcgNi42czcuNi0yLjcgOC43LTYuNkwzMjAgMzg0bDI1LjQtNy4zYzMuOS0xLjEgNi42LTQuNyA2LjYtOC43cy0yLjctNy42LTYuNi04LjdMMzIwIDM1MmwtNy4zLTI1LjR6TTEwNCAxMjBsNDguMyAxMy44YzQuNiAxLjMgNy43IDUuNSA3LjcgMTAuMnMtMy4xIDguOS03LjcgMTAuMkwxMDQgMTY4IDkwLjIgMjE2LjNjLTEuMyA0LjYtNS41IDcuNy0xMC4yIDcuN3MtOC45LTMuMS0xMC4yLTcuN0w1NiAxNjggNy43IDE1NC4yQzMuMSAxNTIuOSAwIDE0OC43IDAgMTQ0czMuMS04LjkgNy43LTEwLjJMNTYgMTIwIDY5LjggNzEuN0M3MS4xIDY3LjEgNzUuMyA2NCA4MCA2NHM4LjkgMy4xIDEwLjIgNy43TDEwNCAxMjB6TTU4NCA0MDhsNDguMyAxMy44YzQuNiAxLjMgNy43IDUuNSA3LjcgMTAuMnMtMy4xIDguOS03LjcgMTAuMkw1ODQgNDU2bC0xMy44IDQ4LjNjLTEuMyA0LjYtNS41IDcuNy0xMC4yIDcuN3MtOC45LTMuMS0xMC4yLTcuN0w1MzYgNDU2bC00OC4zLTEzLjhjLTQuNi0xLjMtNy43LTUuNS03LjctMTAuMnMzLjEtOC45IDcuNy0xMC4yTDUzNiA0MDhsMTMuOC00OC4zYzEuMy00LjYgNS41LTcuNyAxMC4yLTcuN3M4LjkgMy4xIDEwLjIgNy43TDU4NCA0MDh6XCJdXG59O1xuY29uc3QgZmFHcmlwID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2dyaXAnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtcImdyaXAtaG9yaXpvbnRhbFwiXSwgXCJmNThkXCIsIFwiTTEyOCAxMzZjMC0yMi4xLTE3LjktNDAtNDAtNDBMNDAgOTZDMTcuOSA5NiAwIDExMy45IDAgMTM2bDAgNDhjMCAyMi4xIDE3LjkgNDAgNDAgNDBsNDggMGMyMi4xIDAgNDAtMTcuOSA0MC00MGwwLTQ4em0wIDE5MmMwLTIyLjEtMTcuOS00MC00MC00MGwtNDggMGMtMjIuMSAwLTQwIDE3LjktNDAgNDBsMCA0OGMwIDIyLjEgMTcuOSA0MCA0MCA0MGw0OCAwYzIyLjEgMCA0MC0xNy45IDQwLTQwbDAtNDh6bTMyLTE5MmwwIDQ4YzAgMjIuMSAxNy45IDQwIDQwIDQwbDQ4IDBjMjIuMSAwIDQwLTE3LjkgNDAtNDBsMC00OGMwLTIyLjEtMTcuOS00MC00MC00MGwtNDggMGMtMjIuMSAwLTQwIDE3LjktNDAgNDB6TTI4OCAzMjhjMC0yMi4xLTE3LjktNDAtNDAtNDBsLTQ4IDBjLTIyLjEgMC00MCAxNy45LTQwIDQwbDAgNDhjMCAyMi4xIDE3LjkgNDAgNDAgNDBsNDggMGMyMi4xIDAgNDAtMTcuOSA0MC00MGwwLTQ4em0zMi0xOTJsMCA0OGMwIDIyLjEgMTcuOSA0MCA0MCA0MGw0OCAwYzIyLjEgMCA0MC0xNy45IDQwLTQwbDAtNDhjMC0yMi4xLTE3LjktNDAtNDAtNDBsLTQ4IDBjLTIyLjEgMC00MCAxNy45LTQwIDQwek00NDggMzI4YzAtMjIuMS0xNy45LTQwLTQwLTQwbC00OCAwYy0yMi4xIDAtNDAgMTcuOS00MCA0MGwwIDQ4YzAgMjIuMSAxNy45IDQwIDQwIDQwbDQ4IDBjMjIuMSAwIDQwLTE3LjkgNDAtNDBsMC00OHpcIl1cbn07XG5jb25zdCBmYUdyaXBIb3Jpem9udGFsID0gZmFHcmlwO1xuY29uc3QgZmFTaGFyZUZyb21TcXVhcmUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc2hhcmUtZnJvbS1zcXVhcmUnLFxuICBpY29uOiBbNTc2LCA1MTIsIFs2MTUwOSwgXCJzaGFyZS1zcXVhcmVcIl0sIFwiZjE0ZFwiLCBcIk0zNTIgMjI0bC00Ni41IDBjLTQ1IDAtODEuNSAzNi41LTgxLjUgODEuNWMwIDIyLjMgMTAuMyAzNC4zIDE5LjIgNDAuNWM2LjggNC43IDEyLjggMTIgMTIuOCAyMC4zYzAgOS44LTggMTcuOC0xNy44IDE3LjhsLTIuNSAwYy0yLjQgMC00LjgtLjQtNy4xLTEuNEMyMTAuOCAzNzQuOCAxMjggMzMzLjQgMTI4IDI0MGMwLTc5LjUgNjQuNS0xNDQgMTQ0LTE0NGw4MCAwIDAtNjEuM0MzNTIgMTUuNSAzNjcuNSAwIDM4Ni43IDBjOC42IDAgMTYuOCAzLjIgMjMuMiA4LjlMNTQ4LjEgMTMzLjNjNy42IDYuOCAxMS45IDE2LjUgMTEuOSAyNi43cy00LjMgMTkuOS0xMS45IDI2LjdsLTEzOSAxMjUuMWMtNS45IDUuMy0xMy41IDguMi0yMS40IDguMmwtMy43IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtNjR6TTgwIDk2Yy04LjggMC0xNiA3LjItMTYgMTZsMCAzMjBjMCA4LjggNy4yIDE2IDE2IDE2bDMyMCAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTQ4YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJsMCA0OGMwIDQ0LjItMzUuOCA4MC04MCA4MEw4MCA1MTJjLTQ0LjIgMC04MC0zNS44LTgwLTgwTDAgMTEyQzAgNjcuOCAzNS44IDMyIDgwIDMybDQ4IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJMODAgOTZ6XCJdXG59O1xuY29uc3QgZmFTaGFyZVNxdWFyZSA9IGZhU2hhcmVGcm9tU3F1YXJlO1xuY29uc3QgZmFDaGlsZENvbWJhdGFudCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaGlsZC1jb21iYXRhbnQnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtcImNoaWxkLXJpZmxlXCJdLCBcImU0ZTBcIiwgXCJNMTc2IDEyOEE2NCA2NCAwIDEgMCAxNzYgMGE2NCA2NCAwIDEgMCAwIDEyOHptLTggMzUybDAtMTI4IDE2IDAgMCAxMjhjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTE3OS41TDI2MC45IDMyMWM5LjQgMTUgMjkuMiAxOS40IDQ0LjEgMTBzMTkuNC0yOS4yIDEwLTQ0LjFsLTUxLjctODIuMWMtMTcuNi0yNy45LTQ4LjMtNDQuOS04MS4yLTQ0LjlsLTEyLjMgMGMtMzMgMC02My43IDE2LjktODEuMiA0NC45TDM2LjkgMjg3Yy05LjQgMTUtNC45IDM0LjcgMTAgNDQuMXMzNC43IDQuOSA0NC4xLTEwTDEwNCAzMDAuNSAxMDQgNDgwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJ6TTQ0OCAwTDQzMiAwIDQxNiAwYy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2bDAgMTAwLjNjLTkuNiA1LjUtMTYgMTUuOS0xNiAyNy43bDAgMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMybDAgMTQ0YzAgMTcuNyAxNC4zIDMyIDMyIDMybDE2IDAgMCA5NmMwIDguOCA3LjIgMTYgMTYgMTZsNTkuNSAwYzEwLjQgMCAxOC05LjggMTUuNS0xOS45TDQ4NCA0MDBsNDQgMGM4LjggMCAxNi03LjIgMTYtMTZsMC0xNmMwLTguOC03LjItMTYtMTYtMTZsLTQ4IDAgMC0yNi43IDUzLjEtMTcuN2M2LjUtMi4yIDEwLjktOC4zIDEwLjktMTUuMmwwLTg0LjVjMC04LjgtNy4yLTE2LTE2LTE2bC0xNiAwYy04LjggMC0xNiA3LjItMTYgMTZsMCA1Ni0xNiA1LjNMNDgwIDE2MGMwLTExLjgtNi40LTIyLjItMTYtMjcuN0w0NjQgMTZjMC04LjgtNy4yLTE2LTE2LTE2elwiXVxufTtcbmNvbnN0IGZhQ2hpbGRSaWZsZSA9IGZhQ2hpbGRDb21iYXRhbnQ7XG5jb25zdCBmYUd1biA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdndW4nLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImUxOWJcIiwgXCJNNTI4IDU2YzAtMTMuMy0xMC43LTI0LTI0LTI0cy0yNCAxMC43LTI0IDI0bDAgOEwzMiA2NEMxNC4zIDY0IDAgNzguMyAwIDk2TDAgMjA4YzAgMTcuNyAxNC4zIDMyIDMyIDMybDEwIDBjMjAuOCAwIDM2LjEgMTkuNiAzMSAzOS44TDMzIDQ0MC4yYy0yLjQgOS42LS4yIDE5LjcgNS44IDI3LjVTNTQuMSA0ODAgNjQgNDgwbDk2IDBjMTQuNyAwIDI3LjUtMTAgMzEtMjQuMkwyMTcgMzUybDEwNC41IDBjMjMuNyAwIDQ0LjgtMTQuOSA1Mi43LTM3LjJMNDAwLjkgMjQwbDMxLjEgMGM4LjUgMCAxNi42LTMuNCAyMi42LTkuNEw0NzcuMyAyMDhsNjYuNyAwYzE3LjcgMCAzMi0xNC4zIDMyLTMybDAtODBjMC0xNy43LTE0LjMtMzItMzItMzJsLTE2IDAgMC04ek0zMjEuNCAzMDRMMjI5IDMwNGwxNi02NCAxMDUgMC0yMSA1OC43Yy0xLjEgMy4yLTQuMiA1LjMtNy41IDUuM3pNODAgMTI4bDM4NCAwYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2TDgwIDE2MGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnpcIl1cbn07XG5jb25zdCBmYVNxdWFyZVBob25lID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NxdWFyZS1waG9uZScsXG4gIGljb246IFs0NDgsIDUxMiwgW1wicGhvbmUtc3F1YXJlXCJdLCBcImYwOThcIiwgXCJNNjQgMzJDMjguNyAzMiAwIDYwLjcgMCA5NkwwIDQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NGwzMjAgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTMyMGMwLTM1LjMtMjguNy02NC02NC02NEw2NCAzMnptOTAuNyA5Ni43YzkuNy0yLjYgMTkuOSAyLjMgMjMuNyAxMS42bDIwIDQ4YzMuNCA4LjIgMSAxNy42LTUuOCAyMy4yTDE2OCAyMzEuN2MxNi42IDM1LjIgNDUuMSA2My43IDgwLjMgODAuM2wyMC4yLTI0LjdjNS42LTYuOCAxNS05LjIgMjMuMi01LjhsNDggMjBjOS4zIDMuOSAxNC4yIDE0IDExLjYgMjMuN2wtMTIgNDRDMzM2LjkgMzc4IDMyOSAzODQgMzIwIDM4NEMxOTYuMyAzODQgOTYgMjgzLjcgOTYgMTYwYzAtOSA2LTE2LjkgMTQuNy0xOS4zbDQ0LTEyelwiXVxufTtcbmNvbnN0IGZhUGhvbmVTcXVhcmUgPSBmYVNxdWFyZVBob25lO1xuY29uc3QgZmFQbHVzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BsdXMnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFsxMDEzMywgNjE1NDMsIFwiYWRkXCJdLCBcIjJiXCIsIFwiTTI1NiA4MGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMmwwIDE0NEw0OCAyMjRjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsMTQ0IDAgMCAxNDRjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTE0NCAxNDQgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtMTQ0IDAgMC0xNDR6XCJdXG59O1xuY29uc3QgZmFBZGQgPSBmYVBsdXM7XG5jb25zdCBmYUV4cGFuZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdleHBhbmQnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYwNjVcIiwgXCJNMzIgMzJDMTQuMyAzMiAwIDQ2LjMgMCA2NGwwIDk2YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC02NCA2NCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyTDMyIDMyek02NCAzNTJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJsMCA5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMmw5NiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC02NCAwIDAtNjR6TTMyMCAzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmw2NCAwIDAgNjRjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTk2YzAtMTcuNy0xNC4zLTMyLTMyLTMybC05NiAwek00NDggMzUyYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMybDAgNjQtNjQgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmw5NiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMybDAtOTZ6XCJdXG59O1xuY29uc3QgZmFDb21wdXRlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjb21wdXRlcicsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTRlNVwiLCBcIk0zODQgOTZsMCAyMjRMNjQgMzIwIDY0IDk2bDMyMCAwek02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2TDAgMzIwYzAgMzUuMyAyOC43IDY0IDY0IDY0bDExNy4zIDAtMTAuNyAzMkw5NiA0MTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsMjU2IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTc0LjcgMC0xMC43LTMyTDM4NCAzODRjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0yMjRjMC0zNS4zLTI4LjctNjQtNjQtNjRMNjQgMzJ6bTQ2NCAwYy0yNi41IDAtNDggMjEuNS00OCA0OGwwIDM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGw2NCAwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4bDAtMzUyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4bC02NCAwem0xNiA2NGwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2bC0zMiAwYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2em0tMTYgODBjMC04LjggNy4yLTE2IDE2LTE2bDMyIDBjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZsLTMyIDBjLTguOCAwLTE2LTcuMi0xNi0xNnptMzIgMTYwYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIl1cbn07XG5jb25zdCBmYVhtYXJrID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3htYXJrJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbMTI4NDczLCAxMDAwNSwgMTAwMDYsIDEwMDYwLCAyMTUsIFwiY2xvc2VcIiwgXCJtdWx0aXBseVwiLCBcInJlbW92ZVwiLCBcInRpbWVzXCJdLCBcImYwMGRcIiwgXCJNMzQyLjYgMTUwLjZjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBMMTkyIDIxMC43IDg2LjYgMTA1LjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zTDE0Ni43IDI1NiA0MS40IDM2MS40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwTDE5MiAzMDEuMyAyOTcuNCA0MDYuNmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zTDIzNy4zIDI1NiAzNDIuNiAxNTAuNnpcIl1cbn07XG5jb25zdCBmYUNsb3NlID0gZmFYbWFyaztcbmNvbnN0IGZhTXVsdGlwbHkgPSBmYVhtYXJrO1xuY29uc3QgZmFSZW1vdmUgPSBmYVhtYXJrO1xuY29uc3QgZmFUaW1lcyA9IGZhWG1hcms7XG5jb25zdCBmYUFycm93c1VwRG93bkxlZnRSaWdodCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhcnJvd3MtdXAtZG93bi1sZWZ0LXJpZ2h0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXCJhcnJvd3NcIl0sIFwiZjA0N1wiLCBcIk0yNzguNiA5LjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwbC02NCA2NGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMGw5LjQtOS40TDIyNCAyMjRsLTExNC43IDAgOS40LTkuNGMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMGwtNjQgNjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zbDY0IDY0YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNsLTkuNC05LjRMMjI0IDI4OGwwIDExNC43LTkuNC05LjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zbDY0IDY0YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDY0LTY0YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwbC05LjQgOS40TDI4OCAyODhsMTE0LjcgMC05LjQgOS40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwbDY0LTY0YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zbC02NC02NGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNsOS40IDkuNEwyODggMjI0bDAtMTE0LjcgOS40IDkuNGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zbC02NC02NHpcIl1cbn07XG5jb25zdCBmYUFycm93cyA9IGZhQXJyb3dzVXBEb3duTGVmdFJpZ2h0O1xuY29uc3QgZmFDaGFsa2JvYXJkVXNlciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaGFsa2JvYXJkLXVzZXInLFxuICBpY29uOiBbNjQwLCA1MTIsIFtcImNoYWxrYm9hcmQtdGVhY2hlclwiXSwgXCJmNTFjXCIsIFwiTTE2MCA2NGMwLTM1LjMgMjguNy02NCA2NC02NEw1NzYgMGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDI4OGMwIDM1LjMtMjguNyA2NC02NCA2NGwtMjM5LjIgMGMtMTEuOC0yNS41LTI5LjktNDcuNS01Mi40LTY0bDk5LjYgMCAwLTMyYzAtMTcuNyAxNC4zLTMyIDMyLTMybDY0IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCAzMiA2NCAwIDAtMjg4TDIyNCA2NGwwIDQ5LjFDMjA1LjIgMTAyLjIgMTgzLjMgOTYgMTYwIDk2bDAtMzJ6bTAgNjRhOTYgOTYgMCAxIDEgMCAxOTIgOTYgOTYgMCAxIDEgMC0xOTJ6TTEzMy4zIDM1Mmw1My4zIDBDMjYwLjMgMzUyIDMyMCA0MTEuNyAzMjAgNDg1LjNjMCAxNC43LTExLjkgMjYuNy0yNi43IDI2LjdMMjYuNyA1MTJDMTEuOSA1MTIgMCA1MDAuMSAwIDQ4NS4zQzAgNDExLjcgNTkuNyAzNTIgMTMzLjMgMzUyelwiXVxufTtcbmNvbnN0IGZhQ2hhbGtib2FyZFRlYWNoZXIgPSBmYUNoYWxrYm9hcmRVc2VyO1xuY29uc3QgZmFQZXNvU2lnbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwZXNvLXNpZ24nLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImUyMjJcIiwgXCJNNjQgMzJDNDYuMyAzMiAzMiA0Ni4zIDMyIDY0bDAgNjRjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsMCAzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwwIDY0IDAgOTZjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTY0IDgwIDBjNjguNCAwIDEyNy43LTM5IDE1Ni44LTk2bDE5LjIgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtLjcgMGMuNS01LjMgLjctMTAuNiAuNy0xNnMtLjItMTAuNy0uNy0xNmwuNyAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC0xOS4yIDBDMzAzLjcgNzEgMjQ0LjQgMzIgMTc2IDMyTDY0IDMyem0xOTAuNCA5Nkw5NiAxMjhsMC0zMiA4MCAwYzMwLjUgMCA1OC4yIDEyLjIgNzguNCAzMnpNOTYgMTkybDE5MC45IDBjLjcgNS4yIDEuMSAxMC42IDEuMSAxNnMtLjQgMTAuOC0xLjEgMTZMOTYgMjI0bDAtMzJ6bTE1OC40IDk2Yy0yMC4yIDE5LjgtNDcuOSAzMi03OC40IDMybC04MCAwIDAtMzIgMTU4LjQgMHpcIl1cbn07XG5jb25zdCBmYUJ1aWxkaW5nU2hpZWxkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2J1aWxkaW5nLXNoaWVsZCcsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZTRkOFwiLCBcIk0wIDQ4QzAgMjEuNSAyMS41IDAgNDggMEwzMzYgMGMyNi41IDAgNDggMjEuNSA0OCA0OGwwIDE1OS00Mi40IDE3TDMwNCAyMjRsLTMyIDBjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDMyIDAgMjQuMiAwIDcuOGMwIC45IC4xIDEuNyAuMiAyLjZjMi4zIDU4LjEgMjQuMSAxNDQuOCA5OC43IDIwMS41Yy01LjggMi41LTEyLjIgMy45LTE4LjkgMy45bC05NiAwIDAtODBjMC0yNi41LTIxLjUtNDgtNDgtNDhzLTQ4IDIxLjUtNDggNDhsMCA4MC05NiAwYy0yNi41IDAtNDgtMjEuNS00OC00OEwwIDQ4ek04MCAyMjRjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDMyYzAgOC44IDcuMiAxNiAxNiAxNmwzMiAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTMyYzAtOC44LTcuMi0xNi0xNi0xNmwtMzIgMHptODAgMTZsMCAzMmMwIDguOCA3LjIgMTYgMTYgMTZsMzIgMGM4LjggMCAxNi03LjIgMTYtMTZsMC0zMmMwLTguOC03LjItMTYtMTYtMTZsLTMyIDBjLTguOCAwLTE2IDcuMi0xNiAxNnpNNjQgMTEybDAgMzJjMCA4LjggNy4yIDE2IDE2IDE2bDMyIDBjOC44IDAgMTYtNy4yIDE2LTE2bDAtMzJjMC04LjgtNy4yLTE2LTE2LTE2TDgwIDk2Yy04LjggMC0xNiA3LjItMTYgMTZ6TTE3NiA5NmMtOC44IDAtMTYgNy4yLTE2IDE2bDAgMzJjMCA4LjggNy4yIDE2IDE2IDE2bDMyIDBjOC44IDAgMTYtNy4yIDE2LTE2bDAtMzJjMC04LjgtNy4yLTE2LTE2LTE2bC0zMiAwem04MCAxNmwwIDMyYzAgOC44IDcuMiAxNiAxNiAxNmwzMiAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTMyYzAtOC44LTcuMi0xNi0xNi0xNmwtMzIgMGMtOC44IDAtMTYgNy4yLTE2IDE2ek00MjMuMSAyMjUuN2M1LjctMi4zIDEyLjEtMi4zIDE3LjggMGwxMjAgNDhDNTcwIDI3Ny40IDU3NiAyODYuMiA1NzYgMjk2YzAgNjMuMy0yNS45IDE2OC44LTEzNC44IDIxNC4yYy01LjkgMi41LTEyLjYgMi41LTE4LjUgMEMzMTMuOSA0NjQuOCAyODggMzU5LjMgMjg4IDI5NmMwLTkuOCA2LTE4LjYgMTUuMS0yMi4zbDEyMC00OHpNNTI3LjQgMzEyTDQzMiAyNzMuOGwwIDE4Ny44YzY4LjItMzMgOTEuNS05OSA5NS40LTE0OS43elwiXVxufTtcbmNvbnN0IGZhQmFieSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdiYWJ5JyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmNzdjXCIsIFwiTTE1MiA4OGE3MiA3MiAwIDEgMSAxNDQgMEE3MiA3MiAwIDEgMSAxNTIgODh6TTM5LjcgMTQ0LjVjMTMtMTcuOSAzOC0yMS44IDU1LjktOC44TDEzMS44IDE2MmMyNi44IDE5LjUgNTkuMSAzMCA5Mi4yIDMwczY1LjQtMTAuNSA5Mi4yLTMwbDM2LjItMjYuNGMxNy45LTEzIDQyLjktOSA1NS45IDguOHM5IDQyLjktOC44IDU1LjlsLTM2LjIgMjYuNGMtMTMuNiA5LjktMjguMSAxOC4yLTQzLjMgMjVsMCAzNi4zLTE5MiAwIDAtMzYuM2MtMTUuMi02LjctMjkuNy0xNS4xLTQzLjMtMjVMNDguNSAyMDAuM2MtMTcuOS0xMy0yMS44LTM4LTguOC01NS45em04OS44IDE4NC44bDYwLjYgNTMtMjYgMzcuMiAyNC4zIDI0LjNjMTUuNiAxNS42IDE1LjYgNDAuOSAwIDU2LjZzLTQwLjkgMTUuNi01Ni42IDBsLTQ4LTQ4QzcwIDQzOC42IDY4LjEgNDE3IDc5LjIgNDAxLjFsNTAuMi03MS44em0xMjguNSA1M2w2MC42LTUzIDUwLjIgNzEuOGMxMS4xIDE1LjkgOS4yIDM3LjUtNC41IDUxLjJsLTQ4IDQ4Yy0xNS42IDE1LjYtNDAuOSAxNS42LTU2LjYgMHMtMTUuNi00MC45IDAtNTYuNkwyODQgNDE5LjRsLTI2LTM3LjJ6XCJdXG59O1xuY29uc3QgZmFVc2Vyc0xpbmUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndXNlcnMtbGluZScsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTU5MlwiLCBcIk0yMTEuMiA5NmE2NCA2NCAwIDEgMCAtMTI4IDAgNjQgNjQgMCAxIDAgMTI4IDB6TTMyIDI1NmMwIDE3LjcgMTQuMyAzMiAzMiAzMmw4NS42IDBjMTAuMS0zOS40IDM4LjYtNzEuNSA3NS44LTg2LjZjLTkuNy02LTIxLjItOS40LTMzLjQtOS40bC05NiAwYy0zNS4zIDAtNjQgMjguNy02NCA2NHptNDYxLjYgMzJsODIuNCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMyYzAtMzUuMy0yOC43LTY0LTY0LTY0bC05NiAwYy0xMS43IDAtMjIuNyAzLjEtMzIuMSA4LjZjMzguMSAxNC44IDY3LjQgNDcuMyA3Ny43IDg3LjR6TTM5MS4yIDIyNi40Yy02LjktMS42LTE0LjItMi40LTIxLjYtMi40bC05NiAwYy04LjUgMC0xNi43IDEuMS0yNC41IDMuMWMtMzAuOCA4LjEtNTUuNiAzMS4xLTY2LjEgNjAuOWMtMy41IDEwLTUuNSAyMC44LTUuNSAzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMmwyMjQgMGMxNy43IDAgMzItMTQuMyAzMi0zMmMwLTExLjItMS45LTIyLTUuNS0zMmMtMTAuOC0zMC43LTM2LjgtNTQuMi02OC45LTYxLjZ6TTU2My4yIDk2YTY0IDY0IDAgMSAwIC0xMjggMCA2NCA2NCAwIDEgMCAxMjggMHpNMzIxLjYgMTkyYTgwIDgwIDAgMSAwIDAtMTYwIDgwIDgwIDAgMSAwIDAgMTYwek0zMiA0MTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsNTc2IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJMMzIgNDE2elwiXVxufTtcbmNvbnN0IGZhUXVvdGVMZWZ0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3F1b3RlLWxlZnQnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFs4MjIwLCBcInF1b3RlLWxlZnQtYWx0XCJdLCBcImYxMGRcIiwgXCJNMCAyMTZDMCAxNDkuNyA1My43IDk2IDEyMCA5Nmw4IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTggMGMtMzAuOSAwLTU2IDI1LjEtNTYgNTZsMCA4IDY0IDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCA2NGMwIDM1LjMtMjguNyA2NC02NCA2NGwtNjQgMGMtMzUuMyAwLTY0LTI4LjctNjQtNjRsMC0zMiAwLTMyIDAtNzJ6bTI1NiAwYzAtNjYuMyA1My43LTEyMCAxMjAtMTIwbDggMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtOCAwYy0zMC45IDAtNTYgMjUuMS01NiA1NmwwIDggNjQgMGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDY0YzAgMzUuMy0yOC43IDY0LTY0IDY0bC02NCAwYy0zNS4zIDAtNjQtMjguNy02NC02NGwwLTMyIDAtMzIgMC03MnpcIl1cbn07XG5jb25zdCBmYVF1b3RlTGVmdEFsdCA9IGZhUXVvdGVMZWZ0O1xuY29uc3QgZmFUcmFjdG9yID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RyYWN0b3InLFxuICBpY29uOiBbNjQwLCA1MTIsIFsxMjg2NjhdLCBcImY3MjJcIiwgXCJNOTYgNjRjMC0zNS4zIDI4LjctNjQgNjQtNjRMMjY2LjMgMGMyNi4yIDAgNDkuNyAxNS45IDU5LjQgNDAuMkwzNzMuNyAxNjAgNDgwIDE2MGwwLTMzLjhjMC0yNC44IDUuOC00OS4zIDE2LjktNzEuNmwyLjUtNWM3LjktMTUuOCAyNy4xLTIyLjIgNDIuOS0xNC4zczIyLjIgMjcuMSAxNC4zIDQyLjlsLTIuNSA1Yy02LjcgMTMuMy0xMC4xIDI4LTEwLjEgNDIuOWwwIDMzLjggNTYgMGMyMi4xIDAgNDAgMTcuOSA0MCA0MGwwIDQ1LjRjMCAxNi41LTguNSAzMS45LTIyLjYgNDAuN2wtNDMuMyAyNy4xYy0xNC4yLTUuOS0yOS44LTkuMi00Ni4xLTkuMmMtMzkuMyAwLTc0LjEgMTguOS05NiA0OGwtODAgMGMwIDE3LjctMTQuMyAzMi0zMiAzMmwtOC4yIDBjLTEuNyA0LjgtMy43IDkuNS01LjggMTQuMWw1LjggNS44YzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zbC0yMi42IDIyLjZjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwbC01LjgtNS44Yy00LjYgMi4yLTkuMyA0LjEtMTQuMSA1LjhsMCA4LjJjMCAxNy43LTE0LjMgMzItMzIgMzJsLTMyIDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtOC4yYy00LjgtMS43LTkuNS0zLjctMTQuMS01LjhsLTUuOCA1LjhjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwTDQwLjIgNDQ5LjFjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zbDUuOC01LjhjLTIuMi00LjYtNC4xLTkuMy01LjgtMTQuMUwzMiAzODRjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtMzJjMC0xNy43IDE0LjMtMzIgMzItMzJsOC4yIDBjMS43LTQuOCAzLjctOS41IDUuOC0xNC4xbC01LjgtNS44Yy0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM2wyMi42LTIyLjZjOS05IDIxLjktMTEuNSAzMy4xLTcuNmwwLS42IDAtMzIgMC05NnptMTcwLjMgMEwxNjAgNjRsMCA5NiAzMiAwIDExMi43IDBMMjY2LjMgNjR6TTE3NiAyNTZhODAgODAgMCAxIDAgMCAxNjAgODAgODAgMCAxIDAgMC0xNjB6TTUyOCA0NDhhMjQgMjQgMCAxIDAgMC00OCAyNCAyNCAwIDEgMCAwIDQ4em0wIDY0Yy00OC42IDAtODgtMzkuNC04OC04OGMwLTI5LjggMTQuOC01Ni4xIDM3LjQtNzJjMTQuMy0xMC4xIDMxLjgtMTYgNTAuNi0xNmMyLjcgMCA1LjMgLjEgNy45IC4zYzQ0LjkgNCA4MC4xIDQxLjcgODAuMSA4Ny43YzAgNDguNi0zOS40IDg4LTg4IDg4elwiXVxufTtcbmNvbnN0IGZhVHJhc2hBcnJvd1VwID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RyYXNoLWFycm93LXVwJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXCJ0cmFzaC1yZXN0b3JlXCJdLCBcImY4MjlcIiwgXCJNMTYzLjggMEwyODQuMiAwYzEyLjEgMCAyMy4yIDYuOCAyOC42IDE3LjdMMzIwIDMybDk2IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJMMzIgOTZDMTQuMyA5NiAwIDgxLjcgMCA2NFMxNC4zIDMyIDMyIDMybDk2IDAgNy4yLTE0LjNDMTQwLjYgNi44IDE1MS43IDAgMTYzLjggMHpNMzIgMTI4bDM4NCAwTDM5NC44IDQ2N2MtMS42IDI1LjMtMjIuNiA0NS00Ny45IDQ1bC0yNDUuOCAwYy0yNS4zIDAtNDYuMy0xOS43LTQ3LjktNDVMMzIgMTI4em0xOTIgNjRjLTYuNCAwLTEyLjUgMi41LTE3IDdsLTgwIDgwYy05LjQgOS40LTkuNCAyNC42IDAgMzMuOXMyNC42IDkuNCAzMy45IDBsMzktMzlMMjAwIDQwOGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0bDAtMTM0LjEgMzkgMzljOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45bC04MC04MGMtNC41LTQuNS0xMC42LTctMTctN3pcIl1cbn07XG5jb25zdCBmYVRyYXNoUmVzdG9yZSA9IGZhVHJhc2hBcnJvd1VwO1xuY29uc3QgZmFBcnJvd0Rvd25VcExvY2sgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYXJyb3ctZG93bi11cC1sb2NrJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlNGIwXCIsIFwiTTE1MC42IDUwMi42bDk2LTk2YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwTDE2MCA0MDIuNyAxNjAgMjg4bDI1NiAwIDAtMTZjMC0xNy4yIDMuOS0zMy41IDEwLjgtNDhMMzUyIDIyNGwwLTExNC43IDQxLjQgNDEuNGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zbC05Ni05NmMtNi02LTE0LjEtOS40LTIyLjYtOS40cy0xNi42IDMuNC0yMi42IDkuNGwtOTYgOTZjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBMMjg4IDEwOS4zIDI4OCAyMjRsLTEyOCAwLTY0IDAtNjQgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmw2NCAwIDAgMTE0LjdMNTQuNiAzNjEuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNsOTYgOTZjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDB6TTE2MCAxOTJsMC0xMjhjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJsMCAxMjggNjQgMHpNMjg4IDMyMGwwIDEyOGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMTI4LTY0IDB6bTI0MC04MGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDQ4LTY0IDAgMC00OGMwLTE3LjcgMTQuMy0zMiAzMi0zMnptLTgwIDMybDAgNDhjLTE3LjcgMC0zMiAxNC4zLTMyIDMybDAgMTI4YzAgMTcuNyAxNC4zIDMyIDMyIDMybDE2MCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMybDAtMTI4YzAtMTcuNy0xNC4zLTMyLTMyLTMybDAtNDhjMC00NC4yLTM1LjgtODAtODAtODBzLTgwIDM1LjgtODAgODB6XCJdXG59O1xuY29uc3QgZmFMaW5lc0xlYW5pbmcgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbGluZXMtbGVhbmluZycsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZTUxZVwiLCBcIk0xOTAuNCA3NC4xYzUuNi0xNi44LTMuNS0zNC45LTIwLjItNDAuNXMtMzQuOSAzLjUtNDAuNSAyMC4ybC0xMjggMzg0Yy01LjYgMTYuOCAzLjUgMzQuOSAyMC4yIDQwLjVzMzQuOS0zLjUgNDAuNS0yMC4ybDEyOC0zODR6bTcwLjktNDEuN2MtMTcuNC0yLjktMzMuOSA4LjktMzYuOCAyNi4zbC02NCAzODRjLTIuOSAxNy40IDguOSAzMy45IDI2LjMgMzYuOHMzMy45LTguOSAzNi44LTI2LjNsNjQtMzg0YzIuOS0xNy40LTguOS0zMy45LTI2LjMtMzYuOHpNMzUyIDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMmwwIDM4NGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMzg0YzAtMTcuNy0xNC4zLTMyLTMyLTMyelwiXVxufTtcbmNvbnN0IGZhUnVsZXJDb21iaW5lZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdydWxlci1jb21iaW5lZCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjU0NlwiLCBcIk0uMiA0NjguOUMyLjcgNDkzLjEgMjMuMSA1MTIgNDggNTEybDk2IDAgMzIwIDBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhsMC05NmMwLTI2LjUtMjEuNS00OC00OC00OGwtNDggMCAwIDgwYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2bDAtODAtNjQgMCAwIDgwYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2bDAtODAtNjQgMCAwIDgwYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2bDAtODAtODAgMGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmw4MCAwIDAtNjQtODAgMGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmw4MCAwIDAtNjQtODAgMGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmw4MCAwIDAtNDhjMC0yNi41LTIxLjUtNDgtNDgtNDhMNDggMEMyMS41IDAgMCAyMS41IDAgNDhMMCAzNjhsMCA5NmMwIDEuNyAuMSAzLjMgLjIgNC45elwiXVxufTtcbmNvbnN0IGZhQ29weXJpZ2h0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NvcHlyaWdodCcsXG4gIGljb246IFs1MTIsIDUxMiwgWzE2OV0sIFwiZjFmOVwiLCBcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMTk5LjQgMzEyLjZjMzEuMiAzMS4yIDgxLjkgMzEuMiAxMTMuMSAwYzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOWMtNTAgNTAtMTMxIDUwLTE4MSAwcy01MC0xMzEgMC0xODFzMTMxLTUwIDE4MSAwYzkuNCA5LjQgOS40IDI0LjYgMCAzMy45cy0yNC42IDkuNC0zMy45IDBjLTMxLjItMzEuMi04MS45LTMxLjItMTEzLjEgMHMtMzEuMiA4MS45IDAgMTEzLjF6XCJdXG59O1xuY29uc3QgZmFFcXVhbHMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZXF1YWxzJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbNjI3NjRdLCBcIjNkXCIsIFwiTTQ4IDEyOGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwzNTIgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkw0OCAxMjh6bTAgMTkyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDM1MiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyTDQ4IDMyMHpcIl1cbn07XG5jb25zdCBmYUJsZW5kZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYmxlbmRlcicsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjUxN1wiLCBcIk0wIDY0QzAgMjguNyAyOC43IDAgNjQgMGw2NCAwIDMyIDBMNDcwLjEgMGMyMS4xIDAgMzYuNCAyMC4xIDMwLjkgNDAuNEw0OTQuNSA2NCAzMzYgNjRjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZsMTQ5LjggMC0xNy41IDY0TDMzNiAxNjBjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZsMTIzLjYgMC0xNy41IDY0TDMzNiAyNTZjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZsOTcuNSAwTDQxNiAzNTJsLTI1NiAwLTguNy05Nkw2NCAyNTZjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgNjR6TTE0NS41IDE5MkwxMzMuOCA2NCA2NCA2NGwwIDEyOCA4MS41IDB6TTE0NCAzODRsMjg4IDBjMjYuNSAwIDQ4IDIxLjUgNDggNDhsMCAzMmMwIDI2LjUtMjEuNSA0OC00OCA0OGwtMjg4IDBjLTI2LjUgMC00OC0yMS41LTQ4LTQ4bDAtMzJjMC0yNi41IDIxLjUtNDggNDgtNDh6bTE0NCA5NmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6XCJdXG59O1xuY29uc3QgZmFUZWV0aCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0ZWV0aCcsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjYyZVwiLCBcIk0wIDEyOEMwIDc1IDQzIDMyIDk2IDMybDM4NCAwYzUzIDAgOTYgNDMgOTYgOTZsMCAyNTZjMCA1My00MyA5Ni05NiA5Nkw5NiA0ODBjLTUzIDAtOTYtNDMtOTYtOTZMMCAxMjh6bTE3NiA0OGwwIDU2YzAgMTMuMyAxMC43IDI0IDI0IDI0bDQ4IDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRsMC01NmMwLTI2LjUtMjEuNS00OC00OC00OHMtNDggMjEuNS00OCA0OHptMTc2LTQ4Yy0yNi41IDAtNDggMjEuNS00OCA0OGwwIDU2YzAgMTMuMyAxMC43IDI0IDI0IDI0bDQ4IDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRsMC01NmMwLTI2LjUtMjEuNS00OC00OC00OHpNNDggMjA4bDAgMjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRsNDggMGMxMy4zIDAgMjQtMTAuNyAyNC0yNGwwLTI0YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4cy00OCAyMS41LTQ4IDQ4ek05NiAzODRjMjYuNSAwIDQ4LTIxLjUgNDgtNDhsMC0yNGMwLTEzLjMtMTAuNy0yNC0yNC0yNGwtNDggMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRsMCAyNGMwIDI2LjUgMjEuNSA0OCA0OCA0OHptODAtNDhjMCAyNi41IDIxLjUgNDggNDggNDhzNDgtMjEuNSA0OC00OGwwLTI0YzAtMTMuMy0xMC43LTI0LTI0LTI0bC00OCAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNGwwIDI0em0xNzYgNDhjMjYuNSAwIDQ4LTIxLjUgNDgtNDhsMC0yNGMwLTEzLjMtMTAuNy0yNC0yNC0yNGwtNDggMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRsMCAyNGMwIDI2LjUgMjEuNSA0OCA0OCA0OHptODAtMTc2bDAgMjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRsNDggMGMxMy4zIDAgMjQtMTAuNyAyNC0yNGwwLTI0YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4cy00OCAyMS41LTQ4IDQ4em00OCAxNzZjMjYuNSAwIDQ4LTIxLjUgNDgtNDhsMC0yNGMwLTEzLjMtMTAuNy0yNC0yNC0yNGwtNDggMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRsMCAyNGMwIDI2LjUgMjEuNSA0OCA0OCA0OHpcIl1cbn07XG5jb25zdCBmYVNoZWtlbFNpZ24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc2hla2VsLXNpZ24nLFxuICBpY29uOiBbNDQ4LCA1MTIsIFs4MzYyLCBcImlsc1wiLCBcInNoZWtlbFwiLCBcInNoZXFlbFwiLCBcInNoZXFlbC1zaWduXCJdLCBcImYyMGJcIiwgXCJNMzIgMzJDMTQuMyAzMiAwIDQ2LjMgMCA2NEwwIDQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyTDY0IDk2bDEyOCAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMTYwYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0xNjBjMC03MC43LTU3LjMtMTI4LTEyOC0xMjhMMzIgMzJ6TTMyMCA0ODBjNzAuNyAwIDEyOC01Ny4zIDEyOC0xMjhsMC0yODhjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJsMCAyODhjMCAzNS4zLTI4LjcgNjQtNjQgNjRsLTEyOCAwIDAtMjI0YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMybDAgMjU2YzAgMTcuNyAxNC4zIDMyIDMyIDMybDE2MCAwelwiXVxufTtcbmNvbnN0IGZhSWxzID0gZmFTaGVrZWxTaWduO1xuY29uc3QgZmFTaGVrZWwgPSBmYVNoZWtlbFNpZ247XG5jb25zdCBmYVNoZXFlbCA9IGZhU2hla2VsU2lnbjtcbmNvbnN0IGZhU2hlcWVsU2lnbiA9IGZhU2hla2VsU2lnbjtcbmNvbnN0IGZhTWFwID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21hcCcsXG4gIGljb246IFs1NzYsIDUxMiwgWzEyODUwNiwgNjIwNzJdLCBcImYyNzlcIiwgXCJNMzg0IDQ3Ni4xTDE5MiA0MjEuMmwwLTM4NS4zTDM4NCA5MC44bDAgMzg1LjN6bTMyLTEuMmwwLTM4Ni41TDU0My4xIDM3LjVjMTUuOC02LjMgMzIuOSA1LjMgMzIuOSAyMi4zbDAgMzM0LjhjMCA5LjgtNiAxOC42LTE1LjEgMjIuM0w0MTYgNDc0Ljh6TTE1LjEgOTUuMUwxNjAgMzcuMmwwIDM4Ni41TDMyLjkgNDc0LjVDMTcuMSA0ODAuOCAwIDQ2OS4yIDAgNDUyLjJMMCAxMTcuNGMwLTkuOCA2LTE4LjYgMTUuMS0yMi4zelwiXVxufTtcbmNvbnN0IGZhUm9ja2V0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3JvY2tldCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjEzNVwiLCBcIk0xNTYuNiAzODQuOUwxMjUuNyAzNTRjLTguNS04LjUtMTEuNS0yMC44LTcuNy0zMi4yYzMtOC45IDctMjAuNSAxMS44LTMzLjhMMjQgMjg4Yy04LjYgMC0xNi42LTQuNi0yMC45LTEyLjFzLTQuMi0xNi43IC4yLTI0LjFsNTIuNS04OC41YzEzLTIxLjkgMzYuNS0zNS4zIDYxLjktMzUuM2w4Mi4zIDBjMi40LTQgNC44LTcuNyA3LjItMTEuM0MyODkuMS00LjEgNDExLjEtOC4xIDQ4My45IDUuM2MxMS42IDIuMSAyMC42IDExLjIgMjIuOCAyMi44YzEzLjQgNzIuOSA5LjMgMTk0LjgtMTExLjQgMjc2LjdjLTMuNSAyLjQtNy4zIDQuOC0xMS4zIDcuMmwwIDgyLjNjMCAyNS40LTEzLjQgNDktMzUuMyA2MS45bC04OC41IDUyLjVjLTcuNCA0LjQtMTYuNiA0LjUtMjQuMSAuMnMtMTIuMS0xMi4yLTEyLjEtMjAuOWwwLTEwNy4yYy0xNC4xIDQuOS0yNi40IDguOS0zNS43IDExLjljLTExLjIgMy42LTIzLjQgLjUtMzEuOC03Ljh6TTM4NCAxNjhhNDAgNDAgMCAxIDAgMC04MCA0MCA0MCAwIDEgMCAwIDgwelwiXVxufTtcbmNvbnN0IGZhUGhvdG9GaWxtID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3Bob3RvLWZpbG0nLFxuICBpY29uOiBbNjQwLCA1MTIsIFtcInBob3RvLXZpZGVvXCJdLCBcImY4N2NcIiwgXCJNMjU2IDBMNTc2IDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCAyMjRjMCAzNS4zLTI4LjcgNjQtNjQgNjRsLTMyMCAwYy0zNS4zIDAtNjQtMjguNy02NC02NGwwLTIyNGMwLTM1LjMgMjguNy02NCA2NC02NHpNNDc2IDEwNi43QzQ3MS41IDEwMCA0NjQgOTYgNDU2IDk2cy0xNS41IDQtMjAgMTAuN2wtNTYgODRMMzYyLjcgMTY5Yy00LjYtNS43LTExLjUtOS0xOC43LTlzLTE0LjIgMy4zLTE4LjcgOWwtNjQgODBjLTUuOCA3LjItNi45IDE3LjEtMi45IDI1LjRzMTIuNCAxMy42IDIxLjYgMTMuNmw4MCAwIDQ4IDAgMTQ0IDBjOC45IDAgMTctNC45IDIxLjItMTIuN3MzLjctMTcuMy0xLjItMjQuNmwtOTYtMTQ0ek0zMzYgOTZhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHpNNjQgMTI4bDk2IDAgMCAyNTYgMCAzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMmwxMjggMGMxNy43IDAgMzItMTQuMyAzMi0zMmwwLTMyIDE2MCAwIDAgNjRjMCAzNS4zLTI4LjcgNjQtNjQgNjRMNjQgNTEyYy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDE5MmMwLTM1LjMgMjguNy02NCA2NC02NHptOCA2NGMtOC44IDAtMTYgNy4yLTE2IDE2bDAgMTZjMCA4LjggNy4yIDE2IDE2IDE2bDE2IDBjOC44IDAgMTYtNy4yIDE2LTE2bDAtMTZjMC04LjgtNy4yLTE2LTE2LTE2bC0xNiAwem0wIDEwNGMtOC44IDAtMTYgNy4yLTE2IDE2bDAgMTZjMCA4LjggNy4yIDE2IDE2IDE2bDE2IDBjOC44IDAgMTYtNy4yIDE2LTE2bDAtMTZjMC04LjgtNy4yLTE2LTE2LTE2bC0xNiAwem0wIDEwNGMtOC44IDAtMTYgNy4yLTE2IDE2bDAgMTZjMCA4LjggNy4yIDE2IDE2IDE2bDE2IDBjOC44IDAgMTYtNy4yIDE2LTE2bDAtMTZjMC04LjgtNy4yLTE2LTE2LTE2bC0xNiAwem0zMzYgMTZsMCAxNmMwIDguOCA3LjIgMTYgMTYgMTZsMTYgMGM4LjggMCAxNi03LjIgMTYtMTZsMC0xNmMwLTguOC03LjItMTYtMTYtMTZsLTE2IDBjLTguOCAwLTE2IDcuMi0xNiAxNnpcIl1cbn07XG5jb25zdCBmYVBob3RvVmlkZW8gPSBmYVBob3RvRmlsbTtcbmNvbnN0IGZhRm9sZGVyTWludXMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZm9sZGVyLW1pbnVzJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmNjVkXCIsIFwiTTQ0OCA0ODBMNjQgNDgwYy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMybDEyOCAwYzIwLjEgMCAzOS4xIDkuNSA1MS4yIDI1LjZsMTkuMiAyNS42YzYgOC4xIDE1LjUgMTIuOCAyNS42IDEyLjhsMTYwIDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCAyNTZjMCAzNS4zLTI4LjcgNjQtNjQgNjR6TTE4NCAyNzJjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRsMTQ0IDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRsLTE0NCAwelwiXVxufTtcbmNvbnN0IGZhU3RvcmUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3RvcmUnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImY1NGVcIiwgXCJNNTQ3LjYgMTAzLjhMNDkwLjMgMTMuMUM0ODUuMiA1IDQ3Ni4xIDAgNDY2LjQgMEwxMDkuNiAwQzk5LjkgMCA5MC44IDUgODUuNyAxMy4xTDI4LjMgMTAzLjhjLTI5LjYgNDYuOC0zLjQgMTExLjkgNTEuOSAxMTkuNGM0IC41IDguMSAuOCAxMi4xIC44YzI2LjEgMCA0OS4zLTExLjQgNjUuMi0yOWMxNS45IDE3LjYgMzkuMSAyOSA2NS4yIDI5YzI2LjEgMCA0OS4zLTExLjQgNjUuMi0yOWMxNS45IDE3LjYgMzkuMSAyOSA2NS4yIDI5YzI2LjIgMCA0OS4zLTExLjQgNjUuMi0yOWMxNiAxNy42IDM5LjEgMjkgNjUuMiAyOWM0LjEgMCA4LjEtLjMgMTIuMS0uOGM1NS41LTcuNCA4MS44LTcyLjUgNTIuMS0xMTkuNHpNNDk5LjcgMjU0LjljMCAwIDAgMC0uMSAwYy01LjMgLjctMTAuNyAxLjEtMTYuMiAxLjFjLTEyLjQgMC0yNC4zLTEuOS0zNS40LTUuM0w0NDggMzg0bC0zMjAgMCAwLTEzMy40Yy0xMS4yIDMuNS0yMy4yIDUuNC0zNS42IDUuNGMtNS41IDAtMTEtLjQtMTYuMy0xLjFsLS4xIDBjLTQuMS0uNi04LjEtMS4zLTEyLTIuM0w2NCAzODRsMCA2NGMwIDM1LjMgMjguNyA2NCA2NCA2NGwzMjAgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTY0IDAtMTMxLjRjLTQgMS04IDEuOC0xMi4zIDIuM3pcIl1cbn07XG5jb25zdCBmYUFycm93VHJlbmRVcCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhcnJvdy10cmVuZC11cCcsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZTA5OFwiLCBcIk0zODQgMTYwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDE2MCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgMTYwYzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtODIuN0wzNDIuNiAzNzQuNmMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBMMTkyIDI2OS4zIDU0LjYgNDA2LjZjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwcy0xMi41LTMyLjggMC00NS4zbDE2MC0xNjBjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDBMMzIwIDMwNi43IDQ2Ni43IDE2MCAzODQgMTYwelwiXVxufTtcbmNvbnN0IGZhUGx1Z0NpcmNsZU1pbnVzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BsdWctY2lyY2xlLW1pbnVzJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJlNTVlXCIsIFwiTTk2IDBDNzguMyAwIDY0IDE0LjMgNjQgMzJsMCA5NiA2NCAwIDAtOTZjMC0xNy43LTE0LjMtMzItMzItMzJ6TTI4OCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMmwwIDk2IDY0IDAgMC05NmMwLTE3LjctMTQuMy0zMi0zMi0zMnpNMzIgMTYwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDAgMzJjMCA3Ny40IDU1IDE0MiAxMjggMTU2LjhsMCA2Ny4yYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC02Ny4yYzEyLjMtMi41IDI0LjEtNi40IDM1LjEtMTEuNWMtMi4xLTEwLjgtMy4xLTIxLjktMy4xLTMzLjNjMC04MC4zIDUzLjgtMTQ4IDEyNy4zLTE2OS4yYy41LTIuMiAuNy00LjUgLjctNi44YzAtMTcuNy0xNC4zLTMyLTMyLTMyTDMyIDE2MHpNNTc2IDM2OGExNDQgMTQ0IDAgMSAwIC0yODggMCAxNDQgMTQ0IDAgMSAwIDI4OCAwem0tNjQgMGMwIDguOC03LjIgMTYtMTYgMTZsLTEyOCAwYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2bDEyOCAwYzguOCAwIDE2IDcuMiAxNiAxNnpcIl1cbn07XG5jb25zdCBmYVNpZ25IYW5naW5nID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NpZ24taGFuZ2luZycsXG4gIGljb246IFs1MTIsIDUxMiwgW1wic2lnblwiXSwgXCJmNGQ5XCIsIFwiTTk2IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCAzMiAzNTIgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtMzUyIDAgMCAzNTJjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC0zNTItMzIgMEMxNC4zIDEyOCAwIDExMy43IDAgOTZTMTQuMyA2NCAzMiA2NGwzMiAwIDAtMzJDNjQgMTQuMyA3OC4zIDAgOTYgMHptOTYgMTYwbDI1NiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgMTYwYzAgMTcuNy0xNC4zIDMyLTMyIDMybC0yNTYgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC0xNjBjMC0xNy43IDE0LjMtMzIgMzItMzJ6XCJdXG59O1xuY29uc3QgZmFTaWduID0gZmFTaWduSGFuZ2luZztcbmNvbnN0IGZhQmV6aWVyQ3VydmUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYmV6aWVyLWN1cnZlJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNTViXCIsIFwiTTI5NiAxMzZsMC00OCA0OCAwIDAgNDgtNDggMHpNMjg4IDMyYy0yNi41IDAtNDggMjEuNS00OCA0OGwwIDRMMTIxLjYgODRDMTExLjIgNjIuNyA4OS4zIDQ4IDY0IDQ4QzI4LjcgNDggMCA3Ni43IDAgMTEyczI4LjcgNjQgNjQgNjRjMjUuMyAwIDQ3LjItMTQuNyA1Ny42LTM2bDY2LjkgMGMtNTguOSAzOS42LTk4LjkgMTA1LTEwNCAxODBMODAgMzIwYy0yNi41IDAtNDggMjEuNS00OCA0OGwwIDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4bDY0IDBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhsMC02NGMwLTI2LjUtMjEuNS00OC00OC00OGwtMy4zIDBjNS45LTY3IDQ4LjUtMTIzLjQgMTA3LjUtMTQ5LjFjOC42IDEyLjcgMjMuMiAyMS4xIDM5LjggMjEuMWw2NCAwYzE2LjYgMCAzMS4xLTguNCAzOS44LTIxLjFjNTkgMjUuNyAxMDEuNiA4Mi4xIDEwNy41IDE0OS4xbC0zLjMgMGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhsMCA2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGw2NCAwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4bDAtNjRjMC0yNi41LTIxLjUtNDgtNDgtNDhsLTQuNSAwYy01LTc1LTQ1LjEtMTQwLjQtMTA0LTE4MGw2Ni45IDBjMTAuNCAyMS4zIDMyLjMgMzYgNTcuNiAzNmMzNS4zIDAgNjQtMjguNyA2NC02NHMtMjguNy02NC02NC02NGMtMjUuMyAwLTQ3LjIgMTQuNy01Ny42IDM2TDQwMCA4NGwwLTRjMC0yNi41LTIxLjUtNDgtNDgtNDhsLTY0IDB6TTg4IDM3Nmw0OCAwIDAgNDgtNDggMCAwLTQ4em00MTYgNDhsMC00OCA0OCAwIDAgNDgtNDggMHpcIl1cbn07XG5jb25zdCBmYUJlbGxTbGFzaCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdiZWxsLXNsYXNoJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbMTI4Mjc3LCA2MTk0M10sIFwiZjFmNlwiLCBcIk0zOC44IDUuMUMyOC40LTMuMSAxMy4zLTEuMiA1LjEgOS4yUy0xLjIgMzQuNyA5LjIgNDIuOWw1OTIgNDY0YzEwLjQgOC4yIDI1LjUgNi4zIDMzLjctNC4xczYuMy0yNS41LTQuMS0zMy43bC05MC4yLTcwLjdjLjItLjQgLjQtLjkgLjYtMS4zYzUuMi0xMS41IDMuMS0yNS01LjMtMzQuNGwtNy40LTguM0M0OTcuMyAzMTkuMiA0ODAgMjczLjkgNDgwIDIyNi44bDAtMTguOGMwLTc3LjQtNTUtMTQyLTEyOC0xNTYuOEwzNTIgMzJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJsMCAxOS4yYy00Mi42IDguNi03OSAzNC4yLTEwMiA2OS4zTDM4LjggNS4xek00MDYuMiA0MTZMMTYwIDIyMi4xbDAgNC44YzAgNDctMTcuMyA5Mi40LTQ4LjUgMTI3LjZsLTcuNCA4LjNjLTguNCA5LjQtMTAuNCAyMi45LTUuMyAzNC40UzExNS40IDQxNiAxMjggNDE2bDI3OC4yIDB6bS00MC45IDc3LjNjMTItMTIgMTguNy0yOC4zIDE4LjctNDUuM2wtNjQgMC02NCAwYzAgMTcgNi43IDMzLjMgMTguNyA0NS4zczI4LjMgMTguNyA0NS4zIDE4LjdzMzMuMy02LjcgNDUuMy0xOC43elwiXVxufTtcbmNvbnN0IGZhVGFibGV0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RhYmxldCcsXG4gIGljb246IFs0NDgsIDUxMiwgW1widGFibGV0LWFuZHJvaWRcIl0sIFwiZjNmYlwiLCBcIk02NCAwQzI4LjcgMCAwIDI4LjcgMCA2NEwwIDQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NGwzMjAgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTM4NGMwLTM1LjMtMjguNy02NC02NC02NEw2NCAwek0xNzYgNDMybDk2IDBjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZsLTk2IDBjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6XCJdXG59O1xuY29uc3QgZmFUYWJsZXRBbmRyb2lkID0gZmFUYWJsZXQ7XG5jb25zdCBmYVNjaG9vbEZsYWcgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc2Nob29sLWZsYWcnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImU1NmVcIiwgXCJNMjg4IDBMNDAwIDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgNjRjMCA4LjgtNy4yIDE2LTE2IDE2bC03OS4zIDAgODkuNiA2NEw1MTIgMTYwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMjI0YzAgMzUuMy0yOC43IDY0LTY0IDY0bC0xNzYgMCAwLTExMmMwLTI2LjUtMjEuNS00OC00OC00OHMtNDggMjEuNS00OCA0OGwwIDExMkw2NCA1MTJjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgMjI0YzAtMzUuMyAyOC43LTY0IDY0LTY0bDEwMS43IDBMMjU2IDk1LjUgMjU2IDMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyem00OCAyNDBhNDggNDggMCAxIDAgLTk2IDAgNDggNDggMCAxIDAgOTYgMHpNODAgMjI0Yy04LjggMC0xNiA3LjItMTYgMTZsMCA2NGMwIDguOCA3LjIgMTYgMTYgMTZsMzIgMGM4LjggMCAxNi03LjIgMTYtMTZsMC02NGMwLTguOC03LjItMTYtMTYtMTZsLTMyIDB6bTM2OCAxNmwwIDY0YzAgOC44IDcuMiAxNiAxNiAxNmwzMiAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTY0YzAtOC44LTcuMi0xNi0xNi0xNmwtMzIgMGMtOC44IDAtMTYgNy4yLTE2IDE2ek04MCAzNTJjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDY0YzAgOC44IDcuMiAxNiAxNiAxNmwzMiAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTY0YzAtOC44LTcuMi0xNi0xNi0xNmwtMzIgMHptMzg0IDBjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDY0YzAgOC44IDcuMiAxNiAxNiAxNmwzMiAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTY0YzAtOC44LTcuMi0xNi0xNi0xNmwtMzIgMHpcIl1cbn07XG5jb25zdCBmYUZpbGwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmlsbCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjU3NVwiLCBcIk04Ni42IDkuNEM3NC4xLTMuMSA1My45LTMuMSA0MS40IDkuNHMtMTIuNSAzMi44IDAgNDUuM0wxMjIuNyAxMzYgMzAuNiAyMjguMWMtMzcuNSAzNy41LTM3LjUgOTguMyAwIDEzNS44TDE0OC4xIDQ4MS40YzM3LjUgMzcuNSA5OC4zIDM3LjUgMTM1LjggMEw0NzQuMyAyOTAuOWMyOC4xLTI4LjEgMjguMS03My43IDAtMTAxLjhMMzIyLjkgMzcuN2MtMjguMS0yOC4xLTczLjctMjguMS0xMDEuOCAwTDE2OCA5MC43IDg2LjYgOS40ek0xNjggMTgxLjNsNDkuNCA0OS40YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNMMjEzLjMgMTM2bDUzLjEtNTMuMWMzLjEtMy4xIDguMi0zLjEgMTEuMyAwTDQyOS4xIDIzNC4zYzMuMSAzLjEgMy4xIDguMiAwIDExLjNMMzg2LjcgMjg4IDY3LjUgMjg4YzEuNC01LjQgNC4yLTEwLjQgOC40LTE0LjZMMTY4IDE4MS4zelwiXVxufTtcbmNvbnN0IGZhQW5nbGVVcCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhbmdsZS11cCcsXG4gIGljb246IFs0NDgsIDUxMiwgWzg5NjNdLCBcImYxMDZcIiwgXCJNMjAxLjQgMTM3LjRjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDBsMTYwIDE2MGMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM3MtMzIuOCAxMi41LTQ1LjMgMEwyMjQgMjA1LjMgODYuNiAzNDIuNmMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBzLTEyLjUtMzIuOCAwLTQ1LjNsMTYwLTE2MHpcIl1cbn07XG5jb25zdCBmYURydW1zdGlja0JpdGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZHJ1bXN0aWNrLWJpdGUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY2ZDdcIiwgXCJNMTYwIDI2NS4yYzAgOC41LTMuNCAxNi42LTkuNCAyMi42bC0yNi44IDI2LjhjLTEyLjMgMTIuMy0zMi41IDExLjQtNDkuNCA3LjJDNjkuOCAzMjAuNiA2NSAzMjAgNjAgMzIwYy0zMy4xIDAtNjAgMjYuOS02MCA2MHMyNi45IDYwIDYwIDYwYzYuMyAwIDEyIDUuNyAxMiAxMmMwIDMzLjEgMjYuOSA2MCA2MCA2MHM2MC0yNi45IDYwLTYwYzAtNS0uNi05LjgtMS44LTE0LjVjLTQuMi0xNi45LTUuMi0zNy4xIDcuMi00OS40bDI2LjgtMjYuOGM2LTYgMTQuMS05LjQgMjIuNi05LjRsODkuMiAwYzYuMyAwIDEyLjQtLjMgMTguNS0xYzExLjktMS4yIDE2LjQtMTUuNSAxMC44LTI2Yy04LjUtMTUuOC0xMy4zLTMzLjgtMTMuMy01M2MwLTYxLjkgNTAuMS0xMTIgMTEyLTExMmM4IDAgMTUuNyAuOCAyMy4yIDIuNGMxMS43IDIuNSAyNC4xLTUuOSAyMi0xNy42QzQ5NC41IDYyLjUgNDIyLjUgMCAzMzYgMEMyMzguOCAwIDE2MCA3OC44IDE2MCAxNzZsMCA4OS4yelwiXVxufTtcbmNvbnN0IGZhSG9sbHlCZXJyeSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdob2xseS1iZXJyeScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjdhYVwiLCBcIk0yNTYgOTZhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2em0tODAgOTZhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2ek0yNzYuOCAzODMuOGMxIC4xIDIuMSAuMiAzLjIgLjJjMzkuOCAwIDcyIDMyLjIgNzIgNzJsMCAyMi43YzAgMTYuNCAxNiAyNy45IDMxLjYgMjIuOGwxMi44LTQuM2MxOC02IDM3LjMtNi41IDU1LjYtMS41bDE5LjQgNS4zYzE3LjkgNC45IDM0LjQtMTEuNiAyOS41LTI5LjVMNDk1LjYgNDUyYy01LTE4LjMtNC40LTM3LjYgMS41LTU1LjZsNC4zLTEyLjhjNS4yLTE1LjUtNi40LTMxLjYtMjIuOC0zMS42Yy0zNC42IDAtNjIuNy0yOC4xLTYyLjctNjIuN2wwLTMyYzAtMTYuNC0xNi0yNy45LTMxLjYtMjIuOGwtMTIuOCA0LjNjLTE4IDYtMzcuMyA2LjUtNTUuNiAxLjVsLTI5LjYtOC4xYy0yLjktLjgtNS45LTEtOC43LS43YzQuMiA5LjcgNS44IDIwLjggMy43IDMyLjNMMjc1IDI5OC43Yy0xLjUgOC40LTEuNCAxNyAuNSAyNS4zbDUuMyAyMy45YzIuOCAxMi43IDEuMSAyNS4yLTQgMzUuOXpNMTI3LjYgMjM0LjVjLTE1LjUtNS4yLTMxLjYgNi40LTMxLjYgMjIuOGwwIDMyQzk2IDMyMy45IDY3LjkgMzUyIDMzLjMgMzUyYy0xNi40IDAtMjcuOSAxNi0yMi44IDMxLjZsNC4zIDEyLjhjNiAxOCA2LjUgMzcuMyAxLjUgNTUuNmwtNS4zIDE5LjRDNi4yIDQ4OS40IDIyLjYgNTA1LjggNDAuNSA1MDFMNjAgNDk1LjZjMTguMy01IDM3LjYtNC41IDU1LjYgMS41bDEyLjggNC4zYzE1LjUgNS4yIDMxLjYtNi40IDMxLjYtMjIuOGwwLTMyYzAtMzQuNiAyOC4xLTYyLjcgNjIuNy02Mi43YzE2LjQgMCAyNy45LTE2IDIyLjgtMzEuNmwtNC4zLTEyLjhjLTYtMTgtNi41LTM3LjMtMS41LTU1LjZsNS4zLTE5LjRjNC45LTE3LjktMTEuNi0zNC40LTI5LjUtMjkuNUwxOTYgMjQwLjRjLTE4LjMgNS0zNy42IDQuNC01NS42LTEuNWwtMTIuOC00LjN6TTM4NCAxNDRhNDggNDggMCAxIDAgLTk2IDAgNDggNDggMCAxIDAgOTYgMHpcIl1cbn07XG5jb25zdCBmYUNoZXZyb25MZWZ0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NoZXZyb24tbGVmdCcsXG4gIGljb246IFszMjAsIDUxMiwgWzkwMDFdLCBcImYwNTNcIiwgXCJNOS40IDIzMy40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM2wxOTIgMTkyYzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNMNzcuMyAyNTYgMjQ2LjYgODYuNmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMGwtMTkyIDE5MnpcIl1cbn07XG5jb25zdCBmYUJhY3RlcmlhID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JhY3RlcmlhJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlMDU5XCIsIFwiTTMwNC45IC43Yy05LjYtMi43LTE5LjUgMi44LTIyLjMgMTIuNGwtNC4zIDE1LjJjLTguMy0uNi0xNi44IDAtMjUuMiAxLjljLTcuMyAxLjctMTQuMyAzLjUtMjEuMSA1LjVsLTUuNS0xMi43Yy0zLjktOS4xLTE0LjUtMTMuNC0yMy42LTkuNXMtMTMuNCAxNC41LTkuNSAyMy42bDQuNCAxMC40Yy0xNi42IDYuNy0zMS43IDE0LjQtNDUuNCAyMi44TDE0NyA2MmMtNS41LTguMy0xNi43LTEwLjUtMjUtNXMtMTAuNSAxNi43LTUgMjVsNiA5Yy0xMy43IDExLTI1LjUgMjIuOC0zNS44IDM0LjlsLTEwLThjLTcuOC02LjItMTkuMS01LTI1LjMgMi44cy01IDE5LjEgMi44IDI1LjNMNjUuOSAxNTVjLTEuOCAyLjgtMy41IDUuNy01LjEgOC41Yy02LjYgMTEuNC0xMS44IDIyLjYtMTYgMzNsLTgtMy4yYy05LjItMy43LTE5LjcgLjgtMjMuNCAxMHMuOCAxOS43IDEwIDIzLjRsMTAuNCA0LjJjLS4yIC44LS40IDEuNS0uNSAyLjNjLTIuMiA5LjMtMy40IDE3LjMtNC4xIDIzLjRjLS40IDMuMS0uNiA1LjctLjggNy44Yy0uMSAxLjEtLjEgMi0uMiAyLjhsLS4xIDEuMSAwIC41IDAgLjIgMCAuMWMwIDAgMCAuMSAyOS4xIDFjMCAwIDAgMC0uMSAwTDI4IDI2OS4zYy0uMSAzLjEgMCA2LjEgLjIgOS4xbC0xNS4yIDQuM0MzLjUgMjg1LjQtMiAyOTUuNCAuNyAzMDQuOXMxMi43IDE1LjEgMjIuMyAxMi40bDE1LjYtNC41YzcuNiAxMy42IDE4LjkgMjUgMzIuNiAzMi42TDY2LjcgMzYxYy0yLjcgOS42IDIuOCAxOS41IDEyLjQgMjIuM3MxOS41LTIuOCAyMi4zLTEyLjRsNC4zLTE1LjJjMS4yIC4xIDIuNCAuMiAzLjYgLjJjMTUuNiAuNSAzMC4zLTMuMyA0My0xMC4ybDkgOWM3IDcgMTguNCA3IDI1LjUgMHM3LTE4LjQgMC0yNS41bC03LjItNy4yYzkuMy0xMi42IDE1LjItMjcuOCAxNi4zLTQ0LjVsNy4xIDNjOS4xIDMuOSAxOS43LS4zIDIzLjYtOS41cy0uMy0xOS43LTkuNS0yMy42bC04LjYtMy43YzYuNC05LjkgMTcuMy0yMi40IDM2LjktMzMuM2wxLjMgNC40YzIuNyA5LjYgMTIuNyAxNS4xIDIyLjMgMTIuNHMxNS4xLTEyLjcgMTIuNC0yMi4zbC0yLjMtOC4xYzMuOC0xLjEgNy43LTIuMSAxMS45LTMuMWMxMS42LTIuNyAyMi4xLTcuNyAzMS4xLTE0LjRsNy4yIDcuMmM3IDcgMTguNCA3IDI1LjUgMHM3LTE4LjQgMC0yNS41bC05LTljNy42LTEzLjkgMTEuMy0zMC4xIDEwLjEtNDYuNmwxNS4yLTQuM2M5LjYtMi43IDE1LjEtMTIuNyAxMi40LTIyLjNTMzcwLjYgNjQgMzYxIDY2LjdsLTE1LjYgNC41Yy03LjctMTMuOS0xOS4xLTI1LjEtMzIuNi0zMi42bDQuNS0xNS42YzIuNy05LjYtMi44LTE5LjUtMTIuNC0yMi4zek0xMTIgMjcybC00OC0xLjVjMCAwIDAgMCAwIDBjMTEuNyAuNCAyNy4zIC45IDQ4IDEuNnptMTYtODBhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0em02NC00OGExNiAxNiAwIDEgMSAzMiAwIDE2IDE2IDAgMSAxIC0zMiAwek0zMjIuNyA0ODljLTIuNyA5LjYgMi44IDE5LjUgMTIuNCAyMi4zczE5LjUtMi44IDIyLjItMTIuNGw0LjMtMTUuMmM4LjMgLjYgMTYuOCAwIDI1LjItMS45YzcuMy0xLjcgMTQuMy0zLjUgMjEuMS01LjVsNS41IDEyLjdjMy45IDkuMSAxNC41IDEzLjQgMjMuNiA5LjVzMTMuNC0xNC41IDkuNS0yMy42bC00LjQtMTAuNGMxNi42LTYuNyAzMS43LTE0LjQgNDUuNC0yMi44TDQ5MyA0NTBjNS41IDguMyAxNi43IDEwLjUgMjUgNXMxMC41LTE2LjcgNS0yNWwtNi05YzEzLjctMTEgMjUuNS0yMi44IDM1LjgtMzQuOWwxMCA4YzcuOCA2LjIgMTkuMSA1IDI1LjMtMi44czUtMTkuMS0yLjgtMjUuM0w1NzQuMSAzNTdjMS44LTIuOCAzLjUtNS43IDUuMS04LjVjNi42LTExLjQgMTEuOC0yMi42IDE2LTMzbDggMy4yYzkuMiAzLjcgMTkuNy0uOCAyMy40LTEwcy0uOC0xOS43LTEwLTIzLjRsLTEwLjQtNC4yYy4yLS44IC40LTEuNSAuNS0yLjNjMi4yLTkuMyAzLjQtMTcuMyA0LjEtMjMuNGMuNC0zLjEgLjYtNS43IC44LTcuOGMuMS0xLjEgLjEtMiAuMi0yLjhsLjEtMS4xIDAtLjUgMC0uMiAwLS4xYzAgMCAwLS4xLTI5LjEtMWMwIDAgMCAwIC4xIDBsMjkuMSAuOWMuMS0zLjEgMC02LjEtLjItOS4xbDE1LjItNC4zYzkuNi0yLjcgMTUuMS0xMi43IDEyLjQtMjIuM3MtMTIuNy0xNS4xLTIyLjMtMTIuNGwtMTUuNiA0LjVjLTcuNi0xMy42LTE4LjktMjUtMzIuNi0zMi42bDQuNS0xNS42YzIuNy05LjYtMi44LTE5LjUtMTIuNC0yMi4zcy0xOS41IDIuOC0yMi4zIDEyLjRsLTQuMyAxNS4yYy0xLjItLjEtMi40LS4yLTMuNi0uMmMtMTUuNi0uNS0zMC4zIDMuMy00MyAxMC4ybC05LTljLTctNy0xOC40LTctMjUuNSAwcy03IDE4LjQgMCAyNS41bDcuMiA3LjJjLTkuMyAxMi42LTE1LjIgMjcuOC0xNi4zIDQ0LjVsLTcuMS0zYy05LjEtMy45LTE5LjcgLjMtMjMuNiA5LjVzLjMgMTkuNyA5LjUgMjMuNmw4LjYgMy43Yy02LjQgOS45LTE3LjMgMjIuNC0zNi45IDMzLjNsLTEuMy00LjRjLTIuNy05LjYtMTIuNy0xNS4xLTIyLjMtMTIuNHMtMTUuMSAxMi43LTEyLjQgMjIuM2wyLjMgOC4xYy0zLjggMS4xLTcuNyAyLjEtMTEuOSAzLjFjLTExLjYgMi43LTIyLjEgNy43LTMxLjEgMTQuNGwtNy4yLTcuMmMtNy03LTE4LjQtNy0yNS41IDBzLTcgMTguNCAwIDI1LjVsOSA5Yy03LjYgMTMuOS0xMS4zIDMwLjEtMTAuMSA0Ni42bC0xNS4yIDQuM2MtOS42IDIuNy0xNS4xIDEyLjctMTIuNCAyMi4yczEyLjcgMTUuMSAyMi4zIDEyLjRsMTUuNi00LjVjNy43IDEzLjkgMTkuMSAyNS4xIDMyLjYgMzIuNkwzMjIuNyA0ODl6TTU3NiAyNDEuNWMwIDAgMCAwIDAgMGMtMTEuNy0uNC0yNy4zLS45LTQ4LTEuNmw0OCAxLjV6TTQ0OCAzODRhMzIgMzIgMCAxIDEgLTY0IDAgMzIgMzIgMCAxIDEgNjQgMHpcIl1cbn07XG5jb25zdCBmYUhhbmRMaXphcmQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGFuZC1saXphcmQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYyNThcIiwgXCJNMCAxMTJDMCA4NS41IDIxLjUgNjQgNDggNjRsMTEyIDAgODAgMCA0Ni41IDBjMzYuOCAwIDcxLjIgMTggOTIuMSA0OC4ybDExMy41IDE2NGMxMyAxOC43IDE5LjkgNDEgMTkuOSA2My44bDAgMTIgMCAxNiAwIDQ4YzAgMTcuNy0xNC4zIDMyLTMyIDMybC05NiAwYy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTEzLjhMMjczLjkgMzUyIDI0MCAzNTJsLTgwIDAtNDggMGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhzMjEuNS00OCA0OC00OGw0OCAwIDgwIDBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhzLTIxLjUtNDgtNDgtNDhsLTgwIDBMNDggMTYwYy0yNi41IDAtNDgtMjEuNS00OC00OHpcIl1cbn07XG5jb25zdCBmYU5vdGRlZiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdub3RkZWYnLFxuICBpY29uOiBbMzg0LCA1MTIsIFtdLCBcImUxZmVcIiwgXCJNNjQgMzkwLjNMMTUzLjUgMjU2IDY0IDEyMS43bDAgMjY4LjZ6TTEwMi41IDQ0OGwxNzkuMSAwTDE5MiAzMTMuNyAxMDIuNSA0NDh6bTEyOC0xOTJMMzIwIDM5MC4zbDAtMjY4LjZMMjMwLjUgMjU2ek0yODEuNSA2NEwxMDIuNSA2NCAxOTIgMTk4LjMgMjgxLjUgNjR6TTAgNDhDMCAyMS41IDIxLjUgMCA0OCAwTDMzNiAwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4bDAgNDE2YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4TDQ4IDUxMmMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhMMCA0OHpcIl1cbn07XG5jb25zdCBmYURpc2Vhc2UgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZGlzZWFzZScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjdmYVwiLCBcIk0yMzYuNCA2MS40TDIyNyA3NS41Yy0yMS4zIDMyLTU5LjQgNDguNS05Ny4zIDQyLjFsLTU5LjYtOS45QzMzLjQgMTAxLjYgMCAxMjkuOSAuMSAxNjcuMWMwIDE1LjkgNi40IDMxLjIgMTcuNiA0Mi41bDI5LjIgMjkuMmMxMSAxMSAxNy4yIDI1LjkgMTcuMiA0MS41YzAgMTUuOC02LjQgMzAuOS0xNy43IDQyTDMzLjMgMzM1LjFDMjIuMiAzNDUuOSAxNiAzNjAuNyAxNiAzNzYuMmMwIDM2LjggMzQuMSA2NC4yIDcwLjEgNTYuMmw2Mi4zLTEzLjhjNy43LTEuNyAxNS43LTIuNiAyMy42LTIuNmwxMCAwYzI3LjIgMCA1My43IDkuMyA3NSAyNi4zTDI4Ny44IDQ2N2MxMC41IDguNCAyMy42IDEzIDM3IDEzYzMyLjcgMCA1OS4zLTI2LjUgNTkuMy01OS4zbDAtMjUuMmMwLTM0LjkgMjEuNC02Ni4yIDUzLjktNzguOGwzNi45LTE0LjNjMjIuNC04LjcgMzcuMi0zMC4zIDM3LjItNTQuM2MwLTI4LjEtMjAuMS01Mi4zLTQ3LjgtNTcuM2wtMjgtNS4xYy0zNi41LTYuNy02NS40LTM0LjUtNzMuNi03MC43bC03LjEtMzEuNUMzNDguOSA1My40IDMyMi4xIDMyIDI5MS4zIDMyYy0yMiAwLTQyLjYgMTEtNTQuOSAyOS40ek0xNjAgMTkyYTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHptMTI4IDE2YTE2IDE2IDAgMSAxIDMyIDAgMTYgMTYgMCAxIDEgLTMyIDB6bTAgODBhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0elwiXVxufTtcbmNvbnN0IGZhQnJpZWZjYXNlTWVkaWNhbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdicmllZmNhc2UtbWVkaWNhbCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjQ2OVwiLCBcIk0xODQgNDhsMTQ0IDBjNC40IDAgOCAzLjYgOCA4bDAgNDBMMTc2IDk2bDAtNDBjMC00LjQgMy42LTggOC04em0tNTYgOGwwIDQwTDY0IDk2QzI4LjcgOTYgMCAxMjQuNyAwIDE2MEwwIDQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NGwzODQgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTI1NmMwLTM1LjMtMjguNy02NC02NC02NGwtNjQgMCAwLTQwYzAtMzAuOS0yNS4xLTU2LTU2LTU2TDE4NCAwYy0zMC45IDAtNTYgMjUuMS01NiA1NnptOTYgMTUyYzAtOC44IDcuMi0xNiAxNi0xNmwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDQ4IDQ4IDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgMzJjMCA4LjgtNy4yIDE2LTE2IDE2bC00OCAwIDAgNDhjMCA4LjgtNy4yIDE2LTE2IDE2bC0zMiAwYy04LjggMC0xNi03LjItMTYtMTZsMC00OC00OCAwYy04LjggMC0xNi03LjItMTYtMTZsMC0zMmMwLTguOCA3LjItMTYgMTYtMTZsNDggMCAwLTQ4elwiXVxufTtcbmNvbnN0IGZhR2VuZGVybGVzcyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdnZW5kZXJsZXNzJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmMjJkXCIsIFwiTTE5MiAxNDRhMTEyIDExMiAwIDEgMSAwIDIyNCAxMTIgMTEyIDAgMSAxIDAtMjI0em0wIDI4OGExNzYgMTc2IDAgMSAwIDAtMzUyIDE3NiAxNzYgMCAxIDAgMCAzNTJ6XCJdXG59O1xuY29uc3QgZmFDaGV2cm9uUmlnaHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2hldnJvbi1yaWdodCcsXG4gIGljb246IFszMjAsIDUxMiwgWzkwMDJdLCBcImYwNTRcIiwgXCJNMzEwLjYgMjMzLjRjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNsLTE5MiAxOTJjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwcy0xMi41LTMyLjggMC00NS4zTDI0Mi43IDI1NiA3My40IDg2LjZjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zczMyLjgtMTIuNSA0NS4zIDBsMTkyIDE5MnpcIl1cbn07XG5jb25zdCBmYVJldHdlZXQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncmV0d2VldCcsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjA3OVwiLCBcIk0yNzIgNDE2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC0xMTIgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC0xMjggMzIgMGMxMi45IDAgMjQuNi03LjggMjkuNi0xOS44czIuMi0yNS43LTYuOS0zNC45bC02NC02NGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBsLTY0IDY0Yy05LjIgOS4yLTExLjkgMjIuOS02LjkgMzQuOXMxNi42IDE5LjggMjkuNiAxOS44bDMyIDAgMCAxMjhjMCA1MyA0MyA5NiA5NiA5NmwxMTIgMHpNMzA0IDk2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDExMiAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgMTI4LTMyIDBjLTEyLjkgMC0yNC42IDcuOC0yOS42IDE5LjhzLTIuMiAyNS43IDYuOSAzNC45bDY0IDY0YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDY0LTY0YzkuMi05LjIgMTEuOS0yMi45IDYuOS0zNC45cy0xNi42LTE5LjgtMjkuNi0xOS44bC0zMiAwIDAtMTI4YzAtNTMtNDMtOTYtOTYtOTZMMzA0IDk2elwiXVxufTtcbmNvbnN0IGZhQ2FyUmVhciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjYXItcmVhcicsXG4gIGljb246IFs1MTIsIDUxMiwgW1wiY2FyLWFsdFwiXSwgXCJmNWRlXCIsIFwiTTE2NS40IDk2bDE4MS4yIDBjMTMuNiAwIDI1LjcgOC42IDMwLjIgMjEuNEw0MDIuOSAxOTJsLTI5My44IDAgMjYuMS03NC42YzQuNS0xMi44IDE2LjYtMjEuNCAzMC4yLTIxLjR6bS05MC42IC4zTDM5LjYgMTk2LjhDMTYuNCAyMDYuNCAwIDIyOS4zIDAgMjU2bDAgODBjMCAyMy43IDEyLjkgNDQuNCAzMiA1NS40TDMyIDQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMmwzMiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMybDAtNDggMjU2IDAgMCA0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMmwzMiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMybDAtNTYuNmMxOS4xLTExLjEgMzItMzEuNyAzMi01NS40bDAtODBjMC0yNi43LTE2LjQtNDkuNi0zOS42LTU5LjJMNDM3LjIgOTYuM0M0MjMuNyA1Ny44IDM4Ny40IDMyIDM0Ni42IDMyTDE2NS40IDMyYy00MC44IDAtNzcuMSAyNS44LTkwLjYgNjQuM3pNMjA4IDI3Mmw5NiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDMyYzAgOC44LTcuMiAxNi0xNiAxNmwtOTYgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzJjMC04LjggNy4yLTE2IDE2LTE2ek00OCAyODBjMC0xMy4zIDEwLjctMjQgMjQtMjRsMzIgMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGwtMzIgMGMtMTMuMyAwLTI0LTEwLjctMjQtMjR6bTM2MC0yNGwzMiAwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0bC0zMiAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0elwiXVxufTtcbmNvbnN0IGZhQ2FyQWx0ID0gZmFDYXJSZWFyO1xuY29uc3QgZmFQdW1wU29hcCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwdW1wLXNvYXAnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImUwNmJcIiwgXCJNMTI4IDMybDAgOTYgMTI4IDAgMC0zMiA2MC4xIDBjNC4yIDAgOC4zIDEuNyAxMS4zIDQuN2wzMy45IDMzLjljMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM0wzNzIuNyA1NS40Yy0xNS0xNS0zNS40LTIzLjQtNTYuNi0yMy40TDI1NiAzMmMwLTE3LjctMTQuMy0zMi0zMi0zMkwxNjAgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6TTExNy40IDE2MGMtMzMuMyAwLTYxIDI1LjUtNjMuOCA1OC43TDM1IDQ0Mi43QzMxLjkgNDgwIDYxLjMgNTEyIDk4LjggNTEybDE4Ni40IDBjMzcuNCAwIDY2LjktMzIgNjMuOC02OS4zbC0xOC43LTIyNGMtMi44LTMzLjItMzAuNS01OC43LTYzLjgtNTguN2wtMTQ5LjEgMHpNMjU2IDM2MGMwIDM1LjMtMjguNyA1Ni02NCA1NnMtNjQtMjAuNy02NC01NmMwLTMyLjUgMzctODAuOSA1MC45LTk3LjljMy4yLTMuOSA4LjEtNi4xIDEzLjEtNi4xczkuOSAyLjIgMTMuMSA2LjFDMjE5IDI3OS4xIDI1NiAzMjcuNSAyNTYgMzYwelwiXVxufTtcbmNvbnN0IGZhVmlkZW9TbGFzaCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd2aWRlby1zbGFzaCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjRlMlwiLCBcIk0zOC44IDUuMUMyOC40LTMuMSAxMy4zLTEuMiA1LjEgOS4yUy0xLjIgMzQuNyA5LjIgNDIuOWw1OTIgNDY0YzEwLjQgOC4yIDI1LjUgNi4zIDMzLjctNC4xczYuMy0yNS41LTQuMS0zMy43bC04Ni40LTY3LjcgMTMuOCA5LjJjOS44IDYuNSAyMi40IDcuMiAzMi45IDEuNnMxNi45LTE2LjQgMTYuOS0yOC4ybDAtMjU2YzAtMTEuOC02LjUtMjIuNi0xNi45LTI4LjJzLTIzLTUtMzIuOSAxLjZsLTk2IDY0TDQ0OCAxNzQuOWwwIDE3LjEgMCAxMjggMCA1LjgtMzItMjUuMUw0MTYgMTI4YzAtMzUuMy0yOC43LTY0LTY0LTY0TDExMy45IDY0IDM4LjggNS4xek00MDcgNDE2LjdMMzIuMyAxMjEuNWMtLjIgMi4xLS4zIDQuMy0uMyA2LjVsMCAyNTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMjU2IDBjMjMuNCAwIDQzLjktMTIuNiA1NS0zMS4zelwiXVxufTtcbmNvbnN0IGZhQmF0dGVyeVF1YXJ0ZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYmF0dGVyeS1xdWFydGVyJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXCJiYXR0ZXJ5LTJcIl0sIFwiZjI0M1wiLCBcIk00NjQgMTYwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDE2MGMwIDguOC03LjIgMTYtMTYgMTZMODAgMzUyYy04LjggMC0xNi03LjItMTYtMTZsMC0xNjBjMC04LjggNy4yLTE2IDE2LTE2bDM4NCAwek04MCA5NkMzNS44IDk2IDAgMTMxLjggMCAxNzZMMCAzMzZjMCA0NC4yIDM1LjggODAgODAgODBsMzg0IDBjNDQuMiAwIDgwLTM1LjggODAtODBsMC0xNmMxNy43IDAgMzItMTQuMyAzMi0zMmwwLTY0YzAtMTcuNy0xNC4zLTMyLTMyLTMybDAtMTZjMC00NC4yLTM1LjgtODAtODAtODBMODAgOTZ6bTExMiA5NmwtOTYgMCAwIDEyOCA5NiAwIDAtMTI4elwiXVxufTtcbmNvbnN0IGZhQmF0dGVyeTIgPSBmYUJhdHRlcnlRdWFydGVyO1xuY29uc3QgZmFSYWRpbyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdyYWRpbycsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyODI1MV0sIFwiZjhkN1wiLCBcIk00OTQuOCA0N2MxMi43LTMuNyAyMC0xNy4xIDE2LjMtMjkuOFM0OTQtMi44IDQ4MS4yIDFMNTEuNyAxMjYuOWMtOS40IDIuNy0xNy45IDcuMy0yNS4xIDEzLjJDMTAuNSAxNTEuNyAwIDE3MC42IDAgMTkybDAgNEwwIDMwNCAwIDQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NGwzODQgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTI1NmMwLTM1LjMtMjguNy02NC02NC02NGwtMjI5LjUgMEw0OTQuOCA0N3pNMzY4IDI0MGE4MCA4MCAwIDEgMSAwIDE2MCA4MCA4MCAwIDEgMSAwLTE2MHpNODAgMjU2YzAtOC44IDcuMi0xNiAxNi0xNmw5NiAwYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2bC05NiAwYy04LjggMC0xNi03LjItMTYtMTZ6TTY0IDMyMGMwLTguOCA3LjItMTYgMTYtMTZsMTI4IDBjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZMODAgMzM2Yy04LjggMC0xNi03LjItMTYtMTZ6bTE2IDY0YzAtOC44IDcuMi0xNiAxNi0xNmw5NiAwYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2bC05NiAwYy04LjggMC0xNi03LjItMTYtMTZ6XCJdXG59O1xuY29uc3QgZmFCYWJ5Q2FycmlhZ2UgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYmFieS1jYXJyaWFnZScsXG4gIGljb246IFs1MTIsIDUxMiwgW1wiY2FycmlhZ2UtYmFieVwiXSwgXCJmNzdkXCIsIFwiTTI1NiAxOTJMLjEgMTkyQzIuNyAxMTcuOSA0MS4zIDUyLjkgOTkgMTQuMWMxMy4zLTguOSAzMC44LTQuMyAzOS45IDguOEwyNTYgMTkyem0xMjgtMzJjMC0zNS4zIDI4LjctNjQgNjQtNjRsMzIgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtMzIgMCAwIDY0YzAgMjUuMi01LjggNTAuMi0xNyA3My41cy0yNy44IDQ0LjUtNDguNiA2Mi4zcy00NS41IDMyLTcyLjcgNDEuNlMyNTMuNCA0MTYgMjI0IDQxNnMtNTguNS01LTg1LjctMTQuNnMtNTEuOS0yMy44LTcyLjctNDEuNnMtMzcuMy0zOS00OC42LTYyLjNTMCAyNDkuMiAwIDIyNGwyMjQgMCAxNjAgMCAwLTY0ek04MCA0MTZhNDggNDggMCAxIDEgMCA5NiA0OCA0OCAwIDEgMSAwLTk2em0yNDAgNDhhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHpcIl1cbn07XG5jb25zdCBmYUNhcnJpYWdlQmFieSA9IGZhQmFieUNhcnJpYWdlO1xuY29uc3QgZmFUcmFmZmljTGlnaHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndHJhZmZpYy1saWdodCcsXG4gIGljb246IFszMjAsIDUxMiwgWzEyODY3OF0sIFwiZjYzN1wiLCBcIk02NCAwQzI4LjcgMCAwIDI4LjcgMCA2NEwwIDM1MmMwIDg4LjQgNzEuNiAxNjAgMTYwIDE2MHMxNjAtNzEuNiAxNjAtMTYwbDAtMjg4YzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDB6bTk2IDQxNmE0OCA0OCAwIDEgMSAwLTk2IDQ4IDQ4IDAgMSAxIDAgOTZ6bTQ4LTE3NmE0OCA0OCAwIDEgMSAtOTYgMCA0OCA0OCAwIDEgMSA5NiAwem0tNDgtODBhNDggNDggMCAxIDEgMC05NiA0OCA0OCAwIDEgMSAwIDk2elwiXVxufTtcbmNvbnN0IGZhVGhlcm1vbWV0ZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndGhlcm1vbWV0ZXInLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY0OTFcIiwgXCJNOTYgMzgyLjFsMC04OC44YzAtMTQuOSA1LjktMjkuMSAxNi40LTM5LjZsMjcuMy0yNy4zIDU3IDU3YzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwczYuMi0xNi40IDAtMjIuNmwtNTctNTcgNDEuNC00MS40IDU3IDU3YzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwczYuMi0xNi40IDAtMjIuNmwtNTctNTcgNDEuNC00MS40IDU3IDU3YzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwczYuMi0xNi40IDAtMjIuNmwtNTctNTcgNDUuNS00NS41QzM1NS4yIDEwLjkgMzgxLjQgMCA0MDguOCAwQzQ2NS44IDAgNTEyIDQ2LjIgNTEyIDEwMy4yYzAgMjcuNC0xMC45IDUzLjYtMzAuMiA3M0wyNTguMyAzOTkuNmMtMTAuNSAxMC41LTI0LjcgMTYuNC0zOS42IDE2LjRsLTg4LjggMEw0MSA1MDVjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlsODktODl6XCJdXG59O1xuY29uc3QgZmFWckNhcmRib2FyZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd2ci1jYXJkYm9hcmQnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY3MjlcIiwgXCJNNTc2IDY0TDY0IDY0QzI4LjcgNjQgMCA5Mi43IDAgMTI4TDAgMzg0YzAgMzUuMyAyOC43IDY0IDY0IDY0bDEyMC40IDBjMjQuMiAwIDQ2LjQtMTMuNyA1Ny4yLTM1LjRsMzItNjRjOC44LTE3LjUgMjYuNy0yOC42IDQ2LjMtMjguNnMzNy41IDExLjEgNDYuMyAyOC42bDMyIDY0YzEwLjggMjEuNyAzMyAzNS40IDU3LjIgMzUuNEw1NzYgNDQ4YzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMjU2YzAtMzUuMy0yOC43LTY0LTY0LTY0ek05NiAyNDBhNjQgNjQgMCAxIDEgMTI4IDBBNjQgNjQgMCAxIDEgOTYgMjQwem0zODQtNjRhNjQgNjQgMCAxIDEgMCAxMjggNjQgNjQgMCAxIDEgMC0xMjh6XCJdXG59O1xuY29uc3QgZmFIYW5kTWlkZGxlRmluZ2VyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hhbmQtbWlkZGxlLWZpbmdlcicsXG4gIGljb246IFs0NDgsIDUxMiwgWzEyODQwNV0sIFwiZjgwNlwiLCBcIk0yMzIgMGMtMjIuMSAwLTQwIDE3LjktNDAgNDBsMCAxNjQuMmMtOC41LTcuNi0xOS43LTEyLjItMzItMTIuMmMtMjYuNSAwLTQ4IDIxLjUtNDggNDhsMCA3IDAgNzNjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZsMC01NS43Yy0yIDEuNC0zLjkgMy01LjggNC41TDU1IDI4NC44QzQwLjQgMjk3IDMyIDMxNSAzMiAzMzRMMzIgMzcyYzAgMzggMTYuOSA3NCA0Ni4xIDk4LjNsNS40IDQuNWMyOC44IDI0IDY1IDM3LjEgMTAyLjQgMzcuMUwzMDQgNTEyYzcwLjcgMCAxMjgtNTcuMyAxMjgtMTI4bDAtNjQgMC0zMmMwLTI2LjUtMjEuNS00OC00OC00OGMtMTIuNCAwLTIzLjYgNC43LTMyLjEgMTIuM0MzNTAgMjI3LjUgMzI5LjMgMjA4IDMwNCAyMDhjLTEyLjMgMC0yMy41IDQuNi0zMiAxMi4yTDI3MiA0MGMwLTIyLjEtMTcuOS00MC00MC00MHpcIl1cbn07XG5jb25zdCBmYVBlcmNlbnQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGVyY2VudCcsXG4gIGljb246IFszODQsIDUxMiwgWzYyMTAxLCA2Mjc4NSwgXCJwZXJjZW50YWdlXCJdLCBcIjI1XCIsIFwiTTM3NC42IDExOC42YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwbC0zMjAgMzIwYy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwbDMyMC0zMjB6TTEyOCAxMjhBNjQgNjQgMCAxIDAgMCAxMjhhNjQgNjQgMCAxIDAgMTI4IDB6TTM4NCAzODRhNjQgNjQgMCAxIDAgLTEyOCAwIDY0IDY0IDAgMSAwIDEyOCAwelwiXVxufTtcbmNvbnN0IGZhUGVyY2VudGFnZSA9IGZhUGVyY2VudDtcbmNvbnN0IGZhVHJ1Y2tNb3ZpbmcgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndHJ1Y2stbW92aW5nJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNGRmXCIsIFwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZMMCAzMDRsMCA4MCAwIDE2YzAgNDQuMiAzNS44IDgwIDgwIDgwYzI2LjIgMCA0OS40LTEyLjYgNjQtMzJjMTQuNiAxOS40IDM3LjggMzIgNjQgMzJjNDQuMiAwIDgwLTM1LjggODAtODBjMC01LjUtLjYtMTAuOC0xLjYtMTZMNDE2IDM4NGwzMy42IDBjLTEgNS4yLTEuNiAxMC41LTEuNiAxNmMwIDQ0LjIgMzUuOCA4MCA4MCA4MHM4MC0zNS44IDgwLTgwYzAtNS41LS42LTEwLjgtMS42LTE2bDEuNiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMybDAtNjQgMC0xNiAwLTEwLjNjMC05LjItMy4yLTE4LjItOS0yNS4zbC01OC44LTcxLjhjLTEwLjYtMTMtMjYuNS0yMC41LTQzLjMtMjAuNUw0ODAgMTQ0bDAtNDhjMC0zNS4zLTI4LjctNjQtNjQtNjRMNjQgMzJ6TTU4NSAyNTZsLTEwNSAwIDAtNjQgNDguOCAwYzIuNCAwIDQuNyAxLjEgNi4yIDIuOUw1ODUgMjU2ek01MjggMzY4YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpNMTc2IDQwMGEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwek04MCAzNjhhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0elwiXVxufTtcbmNvbnN0IGZhR2xhc3NXYXRlckRyb3BsZXQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZ2xhc3Mtd2F0ZXItZHJvcGxldCcsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZTRmNVwiLCBcIk0zMiAwQzIzLjEgMCAxNC42IDMuNyA4LjYgMTAuMlMtLjYgMjUuNCAuMSAzNC4zTDI4LjkgNDM3LjdjMyA0MS45IDM3LjggNzQuMyA3OS44IDc0LjNsMTY2LjYgMGM0MiAwIDc2LjgtMzIuNCA3OS44LTc0LjNMMzgzLjkgMzQuM2MuNi04LjktMi40LTE3LjYtOC41LTI0LjFTMzYwLjkgMCAzNTIgMEwzMiAwek04MyAyOTcuNUw2Ni40IDY0bDI1MS4zIDBMMzAxIDI5Ny41IDI4OCAzMDRjLTIwLjEgMTAuMS00My45IDEwLjEtNjQgMHMtNDMuOS0xMC4xLTY0IDBzLTQzLjkgMTAuMS02NCAwbC0xMy02LjV6TTI1NiAxOTZjMC0yNC0zMy43LTcwLjEtNTIuMi05My41Yy02LjEtNy43LTE3LjUtNy43LTIzLjYgMEMxNjEuNyAxMjUuOSAxMjggMTcyIDEyOCAxOTZjMCAzMy4xIDI4LjcgNjAgNjQgNjBzNjQtMjYuOSA2NC02MHpcIl1cbn07XG5jb25zdCBmYURpc3BsYXkgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZGlzcGxheScsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZTE2M1wiLCBcIk02NCAwQzI4LjcgMCAwIDI4LjcgMCA2NEwwIDM1MmMwIDM1LjMgMjguNyA2NCA2NCA2NGwxNzYgMC0xMC43IDMyTDE2MCA0NDhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsMjU2IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTY5LjMgMEwzMzYgNDE2bDE3NiAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMjg4YzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDB6TTUxMiA2NGwwIDI4OEw2NCAzNTIgNjQgNjRsNDQ4IDB6XCJdXG59O1xuY29uc3QgZmFGYWNlU21pbGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmFjZS1zbWlsZScsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyODU3OCwgXCJzbWlsZVwiXSwgXCJmMTE4XCIsIFwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0xNjQuMSAzMjUuNUMxODIgMzQ2LjIgMjEyLjYgMzY4IDI1NiAzNjhzNzQtMjEuOCA5MS45LTQyLjVjNS44LTYuNyAxNS45LTcuNCAyMi42LTEuNnM3LjQgMTUuOSAxLjYgMjIuNkMzNDkuOCAzNzIuMSAzMTEuMSA0MDAgMjU2IDQwMHMtOTMuOC0yNy45LTExNi4xLTUzLjVjLTUuOC02LjctNS4xLTE2LjggMS42LTIyLjZzMTYuOC01LjEgMjIuNiAxLjZ6TTE0NC40IDIwOGEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwem0xOTItMzJhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0elwiXVxufTtcbmNvbnN0IGZhU21pbGUgPSBmYUZhY2VTbWlsZTtcbmNvbnN0IGZhVGh1bWJ0YWNrID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RodW1idGFjaycsXG4gIGljb246IFszODQsIDUxMiwgWzEyODIwNCwgMTI4MzkyLCBcInRodW1iLXRhY2tcIl0sIFwiZjA4ZFwiLCBcIk0zMiAzMkMzMiAxNC4zIDQ2LjMgMCA2NCAwTDMyMCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC0yOS41IDAgMTEuNCAxNDguMmMzNi43IDE5LjkgNjUuNyA1My4yIDc5LjUgOTQuN2wxIDNjMy4zIDkuOCAxLjYgMjAuNS00LjQgMjguOHMtMTUuNyAxMy4zLTI2IDEzLjNMMzIgMzUyYy0xMC4zIDAtMTkuOS00LjktMjYtMTMuM3MtNy43LTE5LjEtNC40LTI4LjhsMS0zYzEzLjgtNDEuNSA0Mi44LTc0LjggNzkuNS05NC43TDkzLjUgNjQgNjQgNjRDNDYuMyA2NCAzMiA0OS43IDMyIDMyek0xNjAgMzg0bDY0IDAgMCA5NmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTk2elwiXVxufTtcbmNvbnN0IGZhVGh1bWJUYWNrID0gZmFUaHVtYnRhY2s7XG5jb25zdCBmYVRyb3BoeSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0cm9waHknLFxuICBpY29uOiBbNTc2LCA1MTIsIFsxMjc5NDJdLCBcImYwOTFcIiwgXCJNNDAwIDBMMTc2IDBjLTI2LjUgMC00OC4xIDIxLjgtNDcuMSA0OC4yYy4yIDUuMyAuNCAxMC42IC43IDE1LjhMMjQgNjRDMTAuNyA2NCAwIDc0LjcgMCA4OGMwIDkyLjYgMzMuNSAxNTcgNzguNSAyMDAuN2M0NC4zIDQzLjEgOTguMyA2NC44IDEzOC4xIDc1LjhjMjMuNCA2LjUgMzkuNCAyNiAzOS40IDQ1LjZjMCAyMC45LTE3IDM3LjktMzcuOSAzNy45TDE5MiA0NDhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsMTkyIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTI2LjEgMEMzMzcgNDQ4IDMyMCA0MzEgMzIwIDQxMC4xYzAtMTkuNiAxNS45LTM5LjIgMzkuNC00NS42YzM5LjktMTEgOTMuOS0zMi43IDEzOC4yLTc1LjhDNTQyLjUgMjQ1IDU3NiAxODAuNiA1NzYgODhjMC0xMy4zLTEwLjctMjQtMjQtMjRMNDQ2LjQgNjRjLjMtNS4yIC41LTEwLjQgLjctMTUuOEM0NDguMSAyMS44IDQyNi41IDAgNDAwIDB6TTQ4LjkgMTEybDg0LjQgMGM5LjEgOTAuMSAyOS4yIDE1MC4zIDUxLjkgMTkwLjZjLTI0LjktMTEtNTAuOC0yNi41LTczLjItNDguM2MtMzItMzEuMS01OC03Ni02My0xNDIuM3pNNDY0LjEgMjU0LjNjLTIyLjQgMjEuOC00OC4zIDM3LjMtNzMuMiA0OC4zYzIyLjctNDAuMyA0Mi44LTEwMC41IDUxLjktMTkwLjZsODQuNCAwYy01LjEgNjYuMy0zMS4xIDExMS4yLTYzIDE0Mi4zelwiXVxufTtcbmNvbnN0IGZhUGVyc29uUHJheWluZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwZXJzb24tcHJheWluZycsXG4gIGljb246IFs0NDgsIDUxMiwgWzEyODcyMCwgXCJwcmF5XCJdLCBcImY2ODNcIiwgXCJNMzUyIDY0QTY0IDY0IDAgMSAwIDIyNCA2NGE2NCA2NCAwIDEgMCAxMjggMHpNMjMyLjcgMjY0bDIyLjkgMzEuNWM2LjUgOC45IDE2LjMgMTQuNyAyNy4yIDE2LjFzMjEuOS0xLjcgMzAuNC04LjdsODgtNzJjMTcuMS0xNCAxOS42LTM5LjIgNS42LTU2LjNzLTM5LjItMTkuNi01Ni4zLTUuNmwtNTUuMiA0NS4yLTI2LjItMzZDMjUzLjYgMTU2LjcgMjI4LjYgMTQ0IDIwMiAxNDRjLTMwLjkgMC01OS4yIDE3LjEtNzMuNiA0NC40TDc5LjggMjgwLjljLTIwLjIgMzguNS05LjQgODUuOSAyNS42IDExMS44TDE1OC42IDQzMiA3MiA0MzJjLTIyLjEgMC00MCAxNy45LTQwIDQwczE3LjkgNDAgNDAgNDBsMjA4IDBjMTcuMyAwIDMyLjYtMTEuMSAzOC0yNy41cy0uMy0zNC40LTE0LjItNDQuN0wxODcuNyAzNTRsNDUtOTB6XCJdXG59O1xuY29uc3QgZmFQcmF5ID0gZmFQZXJzb25QcmF5aW5nO1xuY29uc3QgZmFIYW1tZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGFtbWVyJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbMTI4Mjk2XSwgXCJmNmUzXCIsIFwiTTQxMy41IDIzNy41Yy0yOC4yIDQuOC01OC4yLTMuNi04MC0yNS40bC0zOC4xLTM4LjFDMjgwLjQgMTU5IDI3MiAxMzguOCAyNzIgMTE3LjZsMC0xMi4xTDE5Mi4zIDYyYy01LjMtMi45LTguNi04LjYtOC4zLTE0LjdzMy45LTExLjUgOS41LTE0bDQ3LjItMjFDMjU5LjEgNC4yIDI3OSAwIDI5OS4yIDBsMTguMSAwYzM2LjcgMCA3MiAxNCA5OC43IDM5LjFsNDQuNiA0MmMyNC4yIDIyLjggMzMuMiA1NS43IDI2LjYgODZMNTAzIDE4M2w4LThjOS40LTkuNCAyNC42LTkuNCAzMy45IDBsMjQgMjRjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlsLTg4IDg4Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMGwtMjQtMjRjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45bDgtOC0xNy41LTE3LjV6TTI3LjQgMzc3LjFMMjYwLjkgMTgyLjZjMy41IDQuOSA3LjUgOS42IDExLjggMTRsMzguMSAzOC4xYzYgNiAxMi40IDExLjIgMTkuMiAxNS43TDEzNC45IDQ4NC42Yy0xNC41IDE3LjQtMzYgMjcuNC01OC42IDI3LjRDMzQuMSA1MTIgMCA0NzcuOCAwIDQzNS43YzAtMjIuNiAxMC4xLTQ0LjEgMjcuNC01OC42elwiXVxufTtcbmNvbnN0IGZhSGFuZFBlYWNlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hhbmQtcGVhY2UnLFxuICBpY29uOiBbNTEyLCA1MTIsIFs5OTk2XSwgXCJmMjViXCIsIFwiTTIyNCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgMjA4LTY0IDAgMC0yMDhjMC0xNy43IDE0LjMtMzIgMzItMzJ6bTk2IDE2MGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDY0YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtNjRjMC0xNy43IDE0LjMtMzIgMzItMzJ6bTY0IDY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJsMCA2NGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTY0ek05My4zIDUxLjJMMTc1LjkgMjQwbC02OS45IDBMMzQuNyA3Ni44QzI3LjYgNjAuNiAzNSA0MS44IDUxLjIgMzQuN3MzNS4xIC4zIDQyLjEgMTYuNXptMjcgMjIxLjNsLS4yLS41IDY5LjkgMCAyNi4xIDBjMjIuMSAwIDQwIDE3LjkgNDAgNDBzLTE3LjkgNDAtNDAgNDBsLTU2IDBjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZsNTYgMGMzOS44IDAgNzItMzIuMiA3Mi03MmwwLS42YzkuNCA1LjQgMjAuMyA4LjYgMzIgOC42YzEzLjIgMCAyNS40LTQgMzUuNi0xMC44YzguNyAyNC45IDMyLjUgNDIuOCA2MC40IDQyLjhjMTEuNyAwIDIyLjYtMy4xIDMyLTguNmwwIDguNmMwIDg4LjQtNzEuNiAxNjAtMTYwIDE2MGwtNjEuNyAwYy00Mi40IDAtODMuMS0xNi45LTExMy4xLTQ2LjlsLTExLjYtMTEuNkM3Ny41IDQyOS41IDY0IDM5Ni45IDY0IDM2M2wwLTI3YzAtMzIuNyAyNC42LTU5LjcgNTYuMy02My41elwiXVxufTtcbmNvbnN0IGZhUm90YXRlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3JvdGF0ZScsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyODI2MCwgXCJzeW5jLWFsdFwiXSwgXCJmMmYxXCIsIFwiTTE0Mi45IDE0Mi45Yy0xNy41IDE3LjUtMzAuMSAzOC0zNy44IDU5LjhjLTUuOSAxNi43LTI0LjIgMjUuNC00MC44IDE5LjVzLTI1LjQtMjQuMi0xOS41LTQwLjhDNTUuNiAxNTAuNyA3My4yIDEyMiA5Ny42IDk3LjZjODcuMi04Ny4yIDIyOC4zLTg3LjUgMzE1LjgtMUw0NTUgNTVjNi45LTYuOSAxNy4yLTguOSAyNi4yLTUuMnMxNC44IDEyLjUgMTQuOCAyMi4ybDAgMTI4YzAgMTMuMy0xMC43IDI0LTI0IDI0bC04LjQgMGMwIDAgMCAwIDAgMEwzNDQgMjI0Yy05LjcgMC0xOC41LTUuOC0yMi4yLTE0LjhzLTEuNy0xOS4zIDUuMi0yNi4ybDQxLjEtNDEuMWMtNjIuNi02MS41LTE2My4xLTYxLjItMjI1LjMgMXpNMTYgMzEyYzAtMTMuMyAxMC43LTI0IDI0LTI0bDcuNiAwIC43IDBMMTY4IDI4OGM5LjcgMCAxOC41IDUuOCAyMi4yIDE0LjhzMS43IDE5LjMtNS4yIDI2LjJsLTQxLjEgNDEuMWM2Mi42IDYxLjUgMTYzLjEgNjEuMiAyMjUuMy0xYzE3LjUtMTcuNSAzMC4xLTM4IDM3LjgtNTkuOGM1LjktMTYuNyAyNC4yLTI1LjQgNDAuOC0xOS41czI1LjQgMjQuMiAxOS41IDQwLjhjLTEwLjggMzAuNi0yOC40IDU5LjMtNTIuOSA4My44Yy04Ny4yIDg3LjItMjI4LjMgODcuNS0zMTUuOCAxTDU3IDQ1N2MtNi45IDYuOS0xNy4yIDguOS0yNi4yIDUuMlMxNiA0NDkuNyAxNiA0NDBsMC0xMTkuNiAwLS43IDAtNy42elwiXVxufTtcbmNvbnN0IGZhU3luY0FsdCA9IGZhUm90YXRlO1xuY29uc3QgZmFTcGlubmVyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NwaW5uZXInLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYxMTBcIiwgXCJNMzA0IDQ4YTQ4IDQ4IDAgMSAwIC05NiAwIDQ4IDQ4IDAgMSAwIDk2IDB6bTAgNDE2YTQ4IDQ4IDAgMSAwIC05NiAwIDQ4IDQ4IDAgMSAwIDk2IDB6TTQ4IDMwNGE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6bTQ2NC00OGE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwek0xNDIuOSA0MzdBNDggNDggMCAxIDAgNzUgMzY5LjEgNDggNDggMCAxIDAgMTQyLjkgNDM3em0wLTI5NC4yQTQ4IDQ4IDAgMSAwIDc1IDc1YTQ4IDQ4IDAgMSAwIDY3LjkgNjcuOXpNMzY5LjEgNDM3QTQ4IDQ4IDAgMSAwIDQzNyAzNjkuMSA0OCA0OCAwIDEgMCAzNjkuMSA0Mzd6XCJdXG59O1xuY29uc3QgZmFSb2JvdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdyb2JvdCcsXG4gIGljb246IFs2NDAsIDUxMiwgWzEyOTMwMl0sIFwiZjU0NFwiLCBcIk0zMjAgMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDY0IDEyMCAwYzM5LjggMCA3MiAzMi4yIDcyIDcybDAgMjcyYzAgMzkuOC0zMi4yIDcyLTcyIDcybC0zMDQgMGMtMzkuOCAwLTcyLTMyLjItNzItNzJsMC0yNzJjMC0zOS44IDMyLjItNzIgNzItNzJsMTIwIDAgMC02NGMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNMjA4IDM4NGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmwzMiAwYzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2bC0zMiAwem05NiAwYy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2bDMyIDBjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZsLTMyIDB6bTk2IDBjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZsMzIgMGM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNmwtMzIgMHpNMjY0IDI1NmE0MCA0MCAwIDEgMCAtODAgMCA0MCA0MCAwIDEgMCA4MCAwem0xNTIgNDBhNDAgNDAgMCAxIDAgMC04MCA0MCA0MCAwIDEgMCAwIDgwek00OCAyMjRsMTYgMCAwIDE5Mi0xNiAwYy0yNi41IDAtNDgtMjEuNS00OC00OGwwLTk2YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4em01NDQgMGMyNi41IDAgNDggMjEuNSA0OCA0OGwwIDk2YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4bC0xNiAwIDAtMTkyIDE2IDB6XCJdXG59O1xuY29uc3QgZmFQZWFjZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwZWFjZScsXG4gIGljb246IFs1MTIsIDUxMiwgWzk3NzRdLCBcImY2N2NcIiwgXCJNMjI0IDQ0NS4zbDAtMTIxLjgtOTQuMyA3Ny4xYzI2LjEgMjIuOCA1OC41IDM4LjcgOTQuMyA0NC43ek04OS4yIDM1MS4xTDIyNCAyNDAuOGwwLTE3NC4yQzEzMy4yIDgxLjkgNjQgMTYwLjkgNjQgMjU2YzAgMzQuNiA5LjIgNjcuMSAyNS4yIDk1LjF6bTI5My4xIDQ5LjVMMjg4IDMyMy41bDAgMTIxLjhjMzUuNy02IDY4LjEtMjEuOSA5NC4zLTQ0Ljd6bTQwLjYtNDkuNWMxNi0yOCAyNS4yLTYwLjUgMjUuMi05NS4xYzAtOTUuMS02OS4yLTE3NC4xLTE2MC0xODkuM2wwIDE3NC4yTDQyMi44IDM1MS4xek0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6XCJdXG59O1xuY29uc3QgZmFHZWFycyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdnZWFycycsXG4gIGljb246IFs2NDAsIDUxMiwgW1wiY29nc1wiXSwgXCJmMDg1XCIsIFwiTTMwOC41IDEzNS4zYzcuMS02LjMgOS45LTE2LjIgNi4yLTI1Yy0yLjMtNS4zLTQuOC0xMC41LTcuNi0xNS41TDMwNCA4OS40Yy0zLTUtNi4zLTkuOS05LjgtMTQuNmMtNS43LTcuNi0xNS43LTEwLjEtMjQuNy03LjFsLTI4LjIgOS4zYy0xMC43LTguOC0yMy0xNi0zNi4yLTIwLjlMMTk5IDI3LjFjLTEuOS05LjMtOS4xLTE2LjctMTguNS0xNy44QzE3My45IDguNCAxNjcuMiA4IDE2MC40IDhsLS43IDBjLTYuOCAwLTEzLjUgLjQtMjAuMSAxLjJjLTkuNCAxLjEtMTYuNiA4LjYtMTguNSAxNy44TDExNSA1Ni4xYy0xMy4zIDUtMjUuNSAxMi4xLTM2LjIgMjAuOUw1MC41IDY3LjhjLTktMy0xOS0uNS0yNC43IDcuMWMtMy41IDQuNy02LjggOS42LTkuOSAxNC42bC0zIDUuM2MtMi44IDUtNS4zIDEwLjItNy42IDE1LjZjLTMuNyA4LjctLjkgMTguNiA2LjIgMjVsMjIuMiAxOS44QzMyLjYgMTYxLjkgMzIgMTY4LjkgMzIgMTc2cy42IDE0LjEgMS43IDIwLjlMMTEuNSAyMTYuN2MtNy4xIDYuMy05LjkgMTYuMi02LjIgMjVjMi4zIDUuMyA0LjggMTAuNSA3LjYgMTUuNmwzIDUuMmMzIDUuMSA2LjMgOS45IDkuOSAxNC42YzUuNyA3LjYgMTUuNyAxMC4xIDI0LjcgNy4xbDI4LjItOS4zYzEwLjcgOC44IDIzIDE2IDM2LjIgMjAuOWw2LjEgMjkuMWMxLjkgOS4zIDkuMSAxNi43IDE4LjUgMTcuOGM2LjcgLjggMTMuNSAxLjIgMjAuNCAxLjJzMTMuNy0uNCAyMC40LTEuMmM5LjQtMS4xIDE2LjYtOC42IDE4LjUtMTcuOGw2LjEtMjkuMWMxMy4zLTUgMjUuNS0xMi4xIDM2LjItMjAuOWwyOC4yIDkuM2M5IDMgMTkgLjUgMjQuNy03LjFjMy41LTQuNyA2LjgtOS41IDkuOC0xNC42bDMuMS01LjRjMi44LTUgNS4zLTEwLjIgNy42LTE1LjVjMy43LTguNyAuOS0xOC42LTYuMi0yNWwtMjIuMi0xOS44YzEuMS02LjggMS43LTEzLjggMS43LTIwLjlzLS42LTE0LjEtMS43LTIwLjlsMjIuMi0xOS44ek0xMTIgMTc2YTQ4IDQ4IDAgMSAxIDk2IDAgNDggNDggMCAxIDEgLTk2IDB6TTUwNC43IDUwMC41YzYuMyA3LjEgMTYuMiA5LjkgMjUgNi4yYzUuMy0yLjMgMTAuNS00LjggMTUuNS03LjZsNS40LTMuMWM1LTMgOS45LTYuMyAxNC42LTkuOGM3LjYtNS43IDEwLjEtMTUuNyA3LjEtMjQuN2wtOS4zLTI4LjJjOC44LTEwLjcgMTYtMjMgMjAuOS0zNi4ybDI5LjEtNi4xYzkuMy0xLjkgMTYuNy05LjEgMTcuOC0xOC41Yy44LTYuNyAxLjItMTMuNSAxLjItMjAuNHMtLjQtMTMuNy0xLjItMjAuNGMtMS4xLTkuNC04LjYtMTYuNi0xNy44LTE4LjVMNTgzLjkgMzA3Yy01LTEzLjMtMTIuMS0yNS41LTIwLjktMzYuMmw5LjMtMjguMmMzLTkgLjUtMTktNy4xLTI0LjdjLTQuNy0zLjUtOS42LTYuOC0xNC42LTkuOWwtNS4zLTNjLTUtMi44LTEwLjItNS4zLTE1LjYtNy42Yy04LjctMy43LTE4LjYtLjktMjUgNi4ybC0xOS44IDIyLjJjLTYuOC0xLjEtMTMuOC0xLjctMjAuOS0xLjdzLTE0LjEgLjYtMjAuOSAxLjdsLTE5LjgtMjIuMmMtNi4zLTcuMS0xNi4yLTkuOS0yNS02LjJjLTUuMyAyLjMtMTAuNSA0LjgtMTUuNiA3LjZsLTUuMiAzYy01LjEgMy05LjkgNi4zLTE0LjYgOS45Yy03LjYgNS43LTEwLjEgMTUuNy03LjEgMjQuN2w5LjMgMjguMmMtOC44IDEwLjctMTYgMjMtMjAuOSAzNi4yTDMxNS4xIDMxM2MtOS4zIDEuOS0xNi43IDkuMS0xNy44IDE4LjVjLS44IDYuNy0xLjIgMTMuNS0xLjIgMjAuNHMuNCAxMy43IDEuMiAyMC40YzEuMSA5LjQgOC42IDE2LjYgMTcuOCAxOC41bDI5LjEgNi4xYzUgMTMuMyAxMi4xIDI1LjUgMjAuOSAzNi4ybC05LjMgMjguMmMtMyA5LS41IDE5IDcuMSAyNC43YzQuNyAzLjUgOS41IDYuOCAxNC42IDkuOGw1LjQgMy4xYzUgMi44IDEwLjIgNS4zIDE1LjUgNy42YzguNyAzLjcgMTguNiAuOSAyNS02LjJsMTkuOC0yMi4yYzYuOCAxLjEgMTMuOCAxLjcgMjAuOSAxLjdzMTQuMS0uNiAyMC45LTEuN2wxOS44IDIyLjJ6TTQ2NCAzMDRhNDggNDggMCAxIDEgMCA5NiA0OCA0OCAwIDEgMSAwLTk2elwiXVxufTtcbmNvbnN0IGZhQ29ncyA9IGZhR2VhcnM7XG5jb25zdCBmYVdhcmVob3VzZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd3YXJlaG91c2UnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY0OTRcIiwgXCJNMCA0ODhMMCAxNzEuM2MwLTI2LjIgMTUuOS00OS43IDQwLjItNTkuNEwzMDguMSA0LjhjNy42LTMuMSAxNi4xLTMuMSAyMy44IDBMNTk5LjggMTExLjljMjQuMyA5LjcgNDAuMiAzMy4zIDQwLjIgNTkuNEw2NDAgNDg4YzAgMTMuMy0xMC43IDI0LTI0IDI0bC00OCAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNGwwLTI2NGMwLTE3LjctMTQuMy0zMi0zMi0zMmwtMzg0IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMybDAgMjY0YzAgMTMuMy0xMC43IDI0LTI0IDI0bC00OCAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHptNDg4IDI0bC0zMzYgMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRsMC01NiAzODQgMCAwIDU2YzAgMTMuMy0xMC43IDI0LTI0IDI0ek0xMjggNDAwbDAtNjQgMzg0IDAgMCA2NC0zODQgMHptMC05NmwwLTgwIDM4NCAwIDAgODAtMzg0IDB6XCJdXG59O1xuY29uc3QgZmFBcnJvd1VwUmlnaHREb3RzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Fycm93LXVwLXJpZ2h0LWRvdHMnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImU0YjdcIiwgXCJNMTYwIDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsNTAuNyAwTDkuNCAyNjUuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMEwyNTYgMTA5LjNsMCA1MC43YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0xMjhjMC0xNy43LTE0LjMtMzItMzItMzJMMTYwIDB6TTU3NiA4MGE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwek00NDggMjA4YTQ4IDQ4IDAgMSAwIC05NiAwIDQ4IDQ4IDAgMSAwIDk2IDB6TTQwMCAzODRhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2em00OCA4MGE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwem0xMjggMGE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwek0yNzIgMzg0YTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnptNDggODBhNDggNDggMCAxIDAgLTk2IDAgNDggNDggMCAxIDAgOTYgMHpNMTQ0IDUxMmE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6TTU3NiAzMzZhNDggNDggMCAxIDAgLTk2IDAgNDggNDggMCAxIDAgOTYgMHptLTQ4LTgwYTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnpcIl1cbn07XG5jb25zdCBmYVNwbG90Y2ggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3Bsb3RjaCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjViY1wiLCBcIk0yMDguNSA2Mi4zbDI4LjEtMzYuOUMyNDguOCA5LjQgMjY3LjggMCAyODggMGMyOC41IDAgNTMuNiAxOC43IDYxLjggNDZsMTcuOCA1OS40YzEwLjMgMzQuNCAzNi4xIDYyIDY5LjggNzQuNmwzOS44IDE0LjljMjAuOSA3LjkgMzQuOCAyNy45IDM0LjggNTAuMmMwIDE2LjktNy45IDMyLjgtMjEuNSA0Mi45bC02Ny4zIDUwLjVjLTI0LjMgMTguMi0zNy4yIDQ3LjktMzMuOCA3OC4xbDIuNSAyMi43YzQuMyAzOC43LTI2IDcyLjYtNjUgNzIuNmMtMTQuOCAwLTI5LjMtNS4xLTQwLjgtMTQuM2wtNTUuNC00NC4zYy00LjUtMy42LTkuMy02LjctMTQuNS05LjJjLTE1LjgtNy45LTMzLjctMTAuNC01MS03LjNMODIuNCA0NTEuOUM0Ny44IDQ1OC4yIDE2IDQzMS42IDE2IDM5Ni41YzAtMTMuMiA0LjctMjYgMTMuMS0zNi4ybDExLjItMTMuNGMxNC42LTE3LjQgMjIuNi0zOS40IDIyLjYtNjIuMWMwLTE4LjgtNS41LTM3LjItMTUuOC01M0w4LjggMTczLjVDMy4xIDE2NC43IDAgMTU0LjQgMCAxNDMuOWMwLTMzLjQgMzAuMS01OC44IDYzLTUzLjJsNTEuMyA4LjdjMzUuOSA2LjEgNzIuMi04LjIgOTQuMi0zNy4xelwiXVxufTtcbmNvbnN0IGZhRmFjZUdyaW5IZWFydHMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmFjZS1ncmluLWhlYXJ0cycsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyODUyNSwgXCJncmluLWhlYXJ0c1wiXSwgXCJmNTg0XCIsIFwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0zODguMSAzMTIuOGMxMi4zLTMuOCAyNC4zIDYuOSAxOS4zIDE4LjdDMzgyLjQgMzkwLjYgMzI0LjIgNDMyIDI1Ni4zIDQzMnMtMTI2LjItNDEuNC0xNTEuMS0xMDAuNWMtNS0xMS44IDctMjIuNSAxOS4zLTE4LjdjMzkuNyAxMi4yIDg0LjUgMTkgMTMxLjggMTlzOTIuMS02LjggMTMxLjgtMTl6TTE5OS4zIDEyOS4xYzE3LjggNC44IDI4LjQgMjMuMSAyMy42IDQwLjhsLTE3LjQgNjVjLTIuMyA4LjUtMTEuMSAxMy42LTE5LjYgMTEuM2wtNjUuMS0xNy40Yy0xNy44LTQuOC0yOC40LTIzLjEtMjMuNi00MC44czIzLjEtMjguNCA0MC44LTIzLjZsMTYuMSA0LjMgNC4zLTE2LjFjNC44LTE3LjggMjMuMS0yOC40IDQwLjgtMjMuNnptMTU0LjMgMjMuNmw0LjMgMTYuMSAxNi4xLTQuM2MxNy44LTQuOCAzNi4xIDUuOCA0MC44IDIzLjZzLTUuOCAzNi4xLTIzLjYgNDAuOGwtNjUuMSAxNy40Yy04LjUgMi4zLTE3LjMtMi44LTE5LjYtMTEuM2wtMTcuNC02NWMtNC44LTE3LjggNS44LTM2LjEgMjMuNi00MC44czM2LjEgNS44IDQwLjkgMjMuNnpcIl1cbn07XG5jb25zdCBmYUdyaW5IZWFydHMgPSBmYUZhY2VHcmluSGVhcnRzO1xuY29uc3QgZmFEaWNlRm91ciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdkaWNlLWZvdXInLFxuICBpY29uOiBbNDQ4LCA1MTIsIFs5ODU5XSwgXCJmNTI0XCIsIFwiTTAgOTZDMCA2MC43IDI4LjcgMzIgNjQgMzJsMzIwIDBjMzUuMyAwIDY0IDI4LjcgNjQgNjRsMCAzMjBjMCAzNS4zLTI4LjcgNjQtNjQgNjRMNjQgNDgwYy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDk2em0xNjAgNjRhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHpNMTI4IDM4NGEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6TTM1MiAxNjBhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHpNMzIwIDM4NGEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6XCJdXG59O1xuY29uc3QgZmFTaW1DYXJkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NpbS1jYXJkJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmN2M0XCIsIFwiTTY0IDBMMjQyLjcgMGMxNyAwIDMzLjMgNi43IDQ1LjMgMTguN0wzNjUuMyA5NmMxMiAxMiAxOC43IDI4LjMgMTguNyA0NS4zTDM4NCA0NDhjMCAzNS4zLTI4LjcgNjQtNjQgNjRMNjQgNTEyYy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDY0QzAgMjguNyAyOC43IDAgNjQgMHpNOTYgMTkyYy0xNy43IDAtMzIgMTQuMy0zMiAzMmwwIDMyIDY0IDAgMC02NC0zMiAwek02NCAzNTJsODAgMCA5NiAwIDgwIDAgMC02NC04MCAwLTk2IDAtODAgMCAwIDY0ek0zMjAgMjI0YzAtMTcuNy0xNC4zLTMyLTMyLTMybC0zMiAwIDAgNjQgNjQgMCAwLTMyek0xNjAgMTkybDAgNjQgNjQgMCAwLTY0LTY0IDB6TTI4OCA0NDhjMTcuNyAwIDMyLTE0LjMgMzItMzJsMC0zMi02NCAwIDAgNjQgMzIgMHpNMTYwIDM4NGwwIDY0IDY0IDAgMC02NC02NCAwek02NCA0MTZjMCAxNy43IDE0LjMgMzIgMzIgMzJsMzIgMCAwLTY0LTY0IDAgMCAzMnpcIl1cbn07XG5jb25zdCBmYVRyYW5zZ2VuZGVyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RyYW5zZ2VuZGVyJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbOTg5NSwgXCJ0cmFuc2dlbmRlci1hbHRcIl0sIFwiZjIyNVwiLCBcIk0xMTIgMGM2LjUgMCAxMi4zIDMuOSAxNC44IDkuOXMxLjEgMTIuOS0zLjUgMTcuNGwtMzEgMzFMMTEyIDc4LjFsNy03YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOWwtNyA3IDE1LjIgMTUuMkMxODcuNyAxMDcuNiAyMjAuNSA5NiAyNTYgOTZzNjguMyAxMS42IDk0LjkgMzEuMmw2OC44LTY4LjgtMzEtMzFjLTQuNi00LjYtNS45LTExLjUtMy41LTE3LjRzOC4zLTkuOSAxNC44LTkuOWw5NiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDk2YzAgNi41LTMuOSAxMi4zLTkuOSAxNC44cy0xMi45IDEuMS0xNy40LTMuNWwtMzEtMzEtNjguOCA2OC44QzQwNC40IDE4Ny43IDQxNiAyMjAuNSA0MTYgMjU2YzAgODAuMi01OSAxNDYuNi0xMzYgMTU4LjJsMCAxNy44IDE2IDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRsLTE2IDAgMCA4YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0bDAtOC0xNiAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0bDE2IDAgMC0xNy44QzE1NSA0MDIuNiA5NiAzMzYuMiA5NiAyNTZjMC0zNS41IDExLjYtNjguMyAzMS4yLTk0LjlMMTEyIDE0NS45bC03IDdjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlsNy03TDU4LjMgOTIuM2wtMzEgMzFjLTQuNiA0LjYtMTEuNSA1LjktMTcuNCAzLjVTMCAxMTguNSAwIDExMkwwIDE2QzAgNy4yIDcuMiAwIDE2IDBsOTYgMHpNMzUyIDI1NmE5NiA5NiAwIDEgMCAtMTkyIDAgOTYgOTYgMCAxIDAgMTkyIDB6XCJdXG59O1xuY29uc3QgZmFUcmFuc2dlbmRlckFsdCA9IGZhVHJhbnNnZW5kZXI7XG5jb25zdCBmYU1lcmN1cnkgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbWVyY3VyeScsXG4gIGljb246IFszODQsIDUxMiwgWzk3OTFdLCBcImYyMjNcIiwgXCJNNzIuMSA3Qzg1LjgtNCAxMDYtMS44IDExNyAxMmMxNy42IDIyIDQ0LjcgMzYgNzUgMzZzNTcuMy0xNCA3NS0zNmMxMS4xLTEzLjggMzEuMi0xNiA0NS01czE2IDMxLjIgNSA0NWMtNy44IDkuNy0xNi42IDE4LjQtMjYuNCAyNi4xQzMzNy4zIDEwOS43IDM2OCAxNjMuMyAzNjggMjI0YzAgODkuMS02Ni4yIDE2Mi43LTE1MiAxNzQuNGwwIDI1LjYgMzIgMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGwtMzIgMCAwIDE2YzAgMTMuMy0xMC43IDI0LTI0IDI0cy0yNC0xMC43LTI0LTI0bDAtMTYtMzIgMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGwzMiAwIDAtMjUuNkM4Mi4yIDM4Ni43IDE2IDMxMy4xIDE2IDIyNGMwLTYwLjcgMzAuNy0xMTQuMyA3Ny41LTE0NS45QzgzLjcgNzAuNSA3NC45IDYxLjcgNjcuMSA1MmMtMTEuMS0xMy44LTguOC0zMy45IDUtNDV6TTgwIDIyNGExMTIgMTEyIDAgMSAwIDIyNCAwQTExMiAxMTIgMCAxIDAgODAgMjI0elwiXVxufTtcbmNvbnN0IGZhQXJyb3dUdXJuRG93biA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhcnJvdy10dXJuLWRvd24nLFxuICBpY29uOiBbMzg0LCA1MTIsIFtcImxldmVsLWRvd25cIl0sIFwiZjE0OVwiLCBcIk0zMiA2NEMxNC4zIDY0IDAgNDkuNyAwIDMyUzE0LjMgMCAzMiAwbDk2IDBjNTMgMCA5NiA0MyA5NiA5NmwwIDMwNi43IDczLjQtNzMuNGMxMi41LTEyLjUgMzIuOC0xMi41IDQ1LjMgMHMxMi41IDMyLjggMCA0NS4zbC0xMjggMTI4Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMGwtMTI4LTEyOGMtMTIuNS0xMi41LTEyLjUtMzIuOCAwLTQ1LjNzMzIuOC0xMi41IDQ1LjMgMEwxNjAgNDAyLjcgMTYwIDk2YzAtMTcuNy0xNC4zLTMyLTMyLTMyTDMyIDY0elwiXVxufTtcbmNvbnN0IGZhTGV2ZWxEb3duID0gZmFBcnJvd1R1cm5Eb3duO1xuY29uc3QgZmFQZXJzb25GYWxsaW5nQnVyc3QgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGVyc29uLWZhbGxpbmctYnVyc3QnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU1NDdcIiwgXCJNMjU2IDMyYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMybDAgOS44YzAgMzktMjMuNyA3NC01OS45IDg4LjRDNzEuNiAxNTQuNSAzMiAyMTMgMzIgMjc4LjJMMzIgMzUyYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC03My44YzAtMTAgMS42LTE5LjggNC41LTI5TDI2MS4xIDQ5Ny40YzkuNiAxNC44IDI5LjQgMTkuMSA0NC4zIDkuNXMxOS4xLTI5LjQgOS41LTQ0LjNMMjIyLjYgMzIwbDEuNCAwIDgwIDAgMzguNCA1MS4yYzEwLjYgMTQuMSAzMC43IDE3IDQ0LjggNi40czE3LTMwLjcgNi40LTQ0LjhsLTQzLjItNTcuNkMzNDEuMyAyNjMuMSAzMjcuMSAyNTYgMzEyIDI1NmwtNzEuNSAwLTU2LjgtODAuMi0uMi0uM2M0NC43LTI5IDcyLjUtNzkgNzIuNS0xMzMuNmwwLTkuOHpNOTYgODBBNDggNDggMCAxIDAgMCA4MGE0OCA0OCAwIDEgMCA5NiAwek00NjQgMjg2LjFsNTguNiA1My45YzQuOCA0LjQgMTEuOSA1LjUgMTcuOCAyLjZzOS41LTkgOS0xNS41bC01LjYtNzkuNCA3OC43LTEyLjJjNi41LTEgMTEuNy01LjkgMTMuMS0xMi4ycy0xLjEtMTMtNi41LTE2LjdsLTY1LjYtNDUuMUw2MDMgOTIuMmMzLjMtNS43IDIuNy0xMi44LTEuNC0xNy45cy0xMC45LTcuMi0xNy4yLTUuM0w1MDguMyA5Mi4xbC0yOS40LTc0QzQ3Ni40IDEyIDQ3MC42IDggNDY0IDhzLTEyLjQgNC0xNC45IDEwLjFsLTI5LjQgNzRMMzQzLjYgNjguOWMtNi4zLTEuOS0xMy4xIC4yLTE3LjIgNS4zcy00LjYgMTIuMi0xLjQgMTcuOWwzOS41IDY5LjEtNjUuNiA0NS4xYy01LjQgMy43LTggMTAuMy02LjUgMTYuN2MuMSAuMyAuMSAuNiAuMiAuOGwxOS40IDBjMjAuMSAwIDM5LjIgNy41IDUzLjggMjAuOGwxOC40IDIuOUwzODMgMjY1LjNsMzYuMiA0OC4zYzIuMSAyLjggMy45IDUuNyA1LjUgOC42TDQ2NCAyODYuMXpcIl1cbn07XG5jb25zdCBmYUF3YXJkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2F3YXJkJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmNTU5XCIsIFwiTTE3My44IDUuNWMxMS03LjMgMjUuNC03LjMgMzYuNCAwTDIyOCAxNy4yYzYgMy45IDEzIDUuOCAyMC4xIDUuNGwyMS4zLTEuM2MxMy4yLS44IDI1LjYgNi40IDMxLjUgMTguMmw5LjYgMTkuMWMzLjIgNi40IDguNCAxMS41IDE0LjcgMTQuN0wzNDQuNSA4M2MxMS44IDUuOSAxOSAxOC4zIDE4LjIgMzEuNWwtMS4zIDIxLjNjLS40IDcuMSAxLjUgMTQuMiA1LjQgMjAuMWwxMS44IDE3LjhjNy4zIDExIDcuMyAyNS40IDAgMzYuNEwzNjYuOCAyMjhjLTMuOSA2LTUuOCAxMy01LjQgMjAuMWwxLjMgMjEuM2MuOCAxMy4yLTYuNCAyNS42LTE4LjIgMzEuNWwtMTkuMSA5LjZjLTYuNCAzLjItMTEuNSA4LjQtMTQuNyAxNC43TDMwMSAzNDQuNWMtNS45IDExLjgtMTguMyAxOS0zMS41IDE4LjJsLTIxLjMtMS4zYy03LjEtLjQtMTQuMiAxLjUtMjAuMSA1LjRsLTE3LjggMTEuOGMtMTEgNy4zLTI1LjQgNy4zLTM2LjQgMEwxNTYgMzY2LjhjLTYtMy45LTEzLTUuOC0yMC4xLTUuNGwtMjEuMyAxLjNjLTEzLjIgLjgtMjUuNi02LjQtMzEuNS0xOC4ybC05LjYtMTkuMWMtMy4yLTYuNC04LjQtMTEuNS0xNC43LTE0LjdMMzkuNSAzMDFjLTExLjgtNS45LTE5LTE4LjMtMTguMi0zMS41bDEuMy0yMS4zYy40LTcuMS0xLjUtMTQuMi01LjQtMjAuMUw1LjUgMjEwLjJjLTcuMy0xMS03LjMtMjUuNCAwLTM2LjRMMTcuMiAxNTZjMy45LTYgNS44LTEzIDUuNC0yMC4xbC0xLjMtMjEuM2MtLjgtMTMuMiA2LjQtMjUuNiAxOC4yLTMxLjVsMTkuMS05LjZDNjUgNzAuMiA3MC4yIDY1IDczLjQgNTguNkw4MyAzOS41YzUuOS0xMS44IDE4LjMtMTkgMzEuNS0xOC4ybDIxLjMgMS4zYzcuMSAuNCAxNC4yLTEuNSAyMC4xLTUuNEwxNzMuOCA1LjV6TTI3MiAxOTJhODAgODAgMCAxIDAgLTE2MCAwIDgwIDgwIDAgMSAwIDE2MCAwek0xLjMgNDQxLjhMNDQuNCAzMzkuM2MuMiAuMSAuMyAuMiAuNCAuNGw5LjYgMTkuMWMxMS43IDIzLjIgMzYgMzcuMyA2MiAzNS44bDIxLjMtMS4zYy4yIDAgLjUgMCAuNyAuMmwxNy44IDExLjhjNS4xIDMuMyAxMC41IDUuOSAxNi4xIDcuN2wtMzcuNiA4OS4zYy0yLjMgNS41LTcuNCA5LjItMTMuMyA5LjdzLTExLjYtMi4yLTE0LjgtNy4yTDc0LjQgNDU1LjVsLTU2LjEgOC4zYy01LjcgLjgtMTEuNC0xLjUtMTUtNnMtNC4zLTEwLjctMi4xLTE2em0yNDggNjAuNEwyMTEuNyA0MTNjNS42LTEuOCAxMS00LjMgMTYuMS03LjdsMTcuOC0xMS44Yy4yLS4xIC40LS4yIC43LS4ybDIxLjMgMS4zYzI2IDEuNSA1MC4zLTEyLjYgNjItMzUuOGw5LjYtMTkuMWMuMS0uMiAuMi0uMyAuNC0uNGw0My4yIDEwMi41YzIuMiA1LjMgMS40IDExLjQtMi4xIDE2cy05LjMgNi45LTE1IDZsLTU2LjEtOC4zLTMyLjIgNDkuMmMtMy4yIDUtOC45IDcuNy0xNC44IDcuMnMtMTEtNC4zLTEzLjMtOS43elwiXVxufTtcbmNvbnN0IGZhVGlja2V0U2ltcGxlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RpY2tldC1zaW1wbGUnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtcInRpY2tldC1hbHRcIl0sIFwiZjNmZlwiLCBcIk0wIDEyOEMwIDkyLjcgMjguNyA2NCA2NCA2NGw0NDggMGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDY0YzAgOC44LTcuNCAxNS43LTE1LjcgMTguNkM1NDEuNSAyMTcuMSA1MjggMjM1IDUyOCAyNTZzMTMuNSAzOC45IDMyLjMgNDUuNGM4LjMgMi45IDE1LjcgOS44IDE1LjcgMTguNmwwIDY0YzAgMzUuMy0yOC43IDY0LTY0IDY0TDY0IDQ0OGMtMzUuMyAwLTY0LTI4LjctNjQtNjRsMC02NGMwLTguOCA3LjQtMTUuNyAxNS43LTE4LjZDMzQuNSAyOTQuOSA0OCAyNzcgNDggMjU2cy0xMy41LTM4LjktMzIuMy00NS40QzcuNCAyMDcuNyAwIDIwMC44IDAgMTkybDAtNjR6XCJdXG59O1xuY29uc3QgZmFUaWNrZXRBbHQgPSBmYVRpY2tldFNpbXBsZTtcbmNvbnN0IGZhQnVpbGRpbmcgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYnVpbGRpbmcnLFxuICBpY29uOiBbMzg0LCA1MTIsIFsxMjc5NzAsIDYxNjg3XSwgXCJmMWFkXCIsIFwiTTQ4IDBDMjEuNSAwIDAgMjEuNSAwIDQ4TDAgNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4bDk2IDAgMC04MGMwLTI2LjUgMjEuNS00OCA0OC00OHM0OCAyMS41IDQ4IDQ4bDAgODAgOTYgMGMyNi41IDAgNDgtMjEuNSA0OC00OGwwLTQxNmMwLTI2LjUtMjEuNS00OC00OC00OEw0OCAwek02NCAyNDBjMC04LjggNy4yLTE2IDE2LTE2bDMyIDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgMzJjMCA4LjgtNy4yIDE2LTE2IDE2bC0zMiAwYy04LjggMC0xNi03LjItMTYtMTZsMC0zMnptMTEyLTE2bDMyIDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgMzJjMCA4LjgtNy4yIDE2LTE2IDE2bC0zMiAwYy04LjggMC0xNi03LjItMTYtMTZsMC0zMmMwLTguOCA3LjItMTYgMTYtMTZ6bTgwIDE2YzAtOC44IDcuMi0xNiAxNi0xNmwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDMyYzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzJ6TTgwIDk2bDMyIDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgMzJjMCA4LjgtNy4yIDE2LTE2IDE2bC0zMiAwYy04LjggMC0xNi03LjItMTYtMTZsMC0zMmMwLTguOCA3LjItMTYgMTYtMTZ6bTgwIDE2YzAtOC44IDcuMi0xNiAxNi0xNmwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDMyYzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzJ6TTI3MiA5NmwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDMyYzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMzJjMC04LjggNy4yLTE2IDE2LTE2elwiXVxufTtcbmNvbnN0IGZhQW5nbGVzTGVmdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhbmdsZXMtbGVmdCcsXG4gIGljb246IFs1MTIsIDUxMiwgWzE3MSwgXCJhbmdsZS1kb3VibGUtbGVmdFwiXSwgXCJmMTAwXCIsIFwiTTQxLjQgMjMzLjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zbDE2MCAxNjBjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM0wxMDkuMyAyNTYgMjQ2LjYgMTE4LjZjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBsLTE2MCAxNjB6bTM1Mi0xNjBsLTE2MCAxNjBjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zbDE2MCAxNjBjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM0wzMDEuMyAyNTYgNDM4LjYgMTE4LjZjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDB6XCJdXG59O1xuY29uc3QgZmFBbmdsZURvdWJsZUxlZnQgPSBmYUFuZ2xlc0xlZnQ7XG5jb25zdCBmYVFyY29kZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdxcmNvZGUnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtdLCBcImYwMjlcIiwgXCJNMCA4MEMwIDUzLjUgMjEuNSAzMiA0OCAzMmw5NiAwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4bDAgOTZjMCAyNi41LTIxLjUgNDgtNDggNDhsLTk2IDBjLTI2LjUgMC00OC0yMS41LTQ4LTQ4TDAgODB6TTY0IDk2bDAgNjQgNjQgMCAwLTY0TDY0IDk2ek0wIDMzNmMwLTI2LjUgMjEuNS00OCA0OC00OGw5NiAwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4bDAgOTZjMCAyNi41LTIxLjUgNDgtNDggNDhsLTk2IDBjLTI2LjUgMC00OC0yMS41LTQ4LTQ4bDAtOTZ6bTY0IDE2bDAgNjQgNjQgMCAwLTY0LTY0IDB6TTMwNCAzMmw5NiAwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4bDAgOTZjMCAyNi41LTIxLjUgNDgtNDggNDhsLTk2IDBjLTI2LjUgMC00OC0yMS41LTQ4LTQ4bDAtOTZjMC0yNi41IDIxLjUtNDggNDgtNDh6bTgwIDY0bC02NCAwIDAgNjQgNjQgMCAwLTY0ek0yNTYgMzA0YzAtOC44IDcuMi0xNiAxNi0xNmw2NCAwYzguOCAwIDE2IDcuMiAxNiAxNnM3LjIgMTYgMTYgMTZsMzIgMGM4LjggMCAxNi03LjIgMTYtMTZzNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNmwwIDk2YzAgOC44LTcuMiAxNi0xNiAxNmwtNjQgMGMtOC44IDAtMTYtNy4yLTE2LTE2cy03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNmwwIDY0YzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMTYwek0zNjggNDgwYTE2IDE2IDAgMSAxIDAtMzIgMTYgMTYgMCAxIDEgMCAzMnptNjQgMGExNiAxNiAwIDEgMSAwLTMyIDE2IDE2IDAgMSAxIDAgMzJ6XCJdXG59O1xuY29uc3QgZmFDbG9ja1JvdGF0ZUxlZnQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2xvY2stcm90YXRlLWxlZnQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtcImhpc3RvcnlcIl0sIFwiZjFkYVwiLCBcIk03NSA3NUw0MSA0MUMyNS45IDI1LjkgMCAzNi42IDAgNTcuOUwwIDE2OGMwIDEzLjMgMTAuNyAyNCAyNCAyNGwxMTAuMSAwYzIxLjQgMCAzMi4xLTI1LjkgMTctNDFsLTMwLjgtMzAuOEMxNTUgODUuNSAyMDMgNjQgMjU2IDY0YzEwNiAwIDE5MiA4NiAxOTIgMTkycy04NiAxOTItMTkyIDE5MmMtNDAuOCAwLTc4LjYtMTIuNy0xMDkuNy0zNC40Yy0xNC41LTEwLjEtMzQuNC02LjYtNDQuNiA3LjlzLTYuNiAzNC40IDcuOSA0NC42QzE1MS4yIDQ5NSAyMDEuNyA1MTIgMjU2IDUxMmMxNDEuNCAwIDI1Ni0xMTQuNiAyNTYtMjU2UzM5Ny40IDAgMjU2IDBDMTg1LjMgMCAxMjEuMyAyOC43IDc1IDc1em0xODEgNTNjLTEzLjMgMC0yNCAxMC43LTI0IDI0bDAgMTA0YzAgNi40IDIuNSAxMi41IDcgMTdsNzIgNzJjOS40IDkuNCAyNC42IDkuNCAzMy45IDBzOS40LTI0LjYgMC0zMy45bC02NS02NSAwLTk0LjFjMC0xMy4zLTEwLjctMjQtMjQtMjR6XCJdXG59O1xuY29uc3QgZmFIaXN0b3J5ID0gZmFDbG9ja1JvdGF0ZUxlZnQ7XG5jb25zdCBmYUZhY2VHcmluQmVhbVN3ZWF0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZhY2UtZ3Jpbi1iZWFtLXN3ZWF0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI4NTE3LCBcImdyaW4tYmVhbS1zd2VhdFwiXSwgXCJmNTgzXCIsIFwiTTQ3Ni44IDEyNi4zYy00LjEgMS4xLTguNCAxLjctMTIuOCAxLjdjLTI2LjUgMC00OC0yMS00OC00N2MwLTUgMS44LTExLjMgNC42LTE4LjFjLjMtLjcgLjYtMS40IC45LTIuMWM5LTIwLjIgMjYuNS00NC45IDM2LTU3LjVjMy4yLTQuNCA5LjYtNC40IDEyLjggMEM0ODMuNCAyMC42IDUxMiA2MSA1MTIgODFjMCAyMS43LTE0LjkgMzkuOC0zNS4yIDQ1LjN6TTI1NiAwYzUxLjQgMCA5OS4zIDE1LjIgMTM5LjQgNDEuMmMtMS41IDMuMS0zIDYuMi00LjMgOS4zYy0zLjQgOC03LjEgMTktNy4xIDMwLjVjMCA0NC4zIDM2LjYgNzkgODAgNzljOS42IDAgMTguOC0xLjcgMjcuNC00LjhjMTMuMyAzMC45IDIwLjYgNjUgMjAuNiAxMDAuOGMwIDE0MS40LTExNC42IDI1Ni0yNTYgMjU2UzAgMzk3LjQgMCAyNTZTMTE0LjYgMCAyNTYgMHpNMzgzLjggMzE3LjhDMzQ1LjMgMzI5LjQgMzAxLjkgMzM2IDI1NiAzMzZzLTg5LjMtNi42LTEyNy44LTE4LjJjLTEyLjMtMy43LTI0LjMgNy0xOS4yIDE4LjdjMjQuNSA1Ni45IDgxLjEgOTYuNyAxNDcgOTYuN3MxMjIuNS0zOS44IDE0Ny05Ni43YzUuMS0xMS44LTYuOS0yMi40LTE5LjItMTguN3ptLTE2Ni4yLTg5czAgMCAwIDBzMCAwIDAgMGMyLjEgMi44IDUuNyAzLjkgOC45IDIuOHM1LjUtNC4xIDUuNS03LjZjMC0xNy45LTYuNy0zNS42LTE2LjYtNDguOGMtOS44LTEzLTIzLjktMjMuMi0zOS40LTIzLjJzLTI5LjYgMTAuMi0zOS40IDIzLjJDMTI2LjcgMTg4LjQgMTIwIDIwNi4xIDEyMCAyMjRjMCAzLjQgMi4yIDYuNSA1LjUgNy42czYuOSAwIDguOS0yLjhjMCAwIDAgMCAwIDBzMCAwIDAgMGMwIDAgMCAwIDAgMGwuMi0uMmMuMi0uMiAuNC0uNSAuNy0uOWMuNi0uOCAxLjYtMiAyLjgtMy40YzIuNS0yLjggNi02LjYgMTAuMi0xMC4zYzguOC03LjggMTguOC0xNCAyNy43LTE0czE4LjkgNi4yIDI3LjcgMTRjNC4yIDMuNyA3LjcgNy41IDEwLjIgMTAuM2MxLjIgMS40IDIuMiAyLjYgMi44IDMuNGMuMyAuNCAuNiAuNyAuNyAuOWwuMiAuMmMwIDAgMCAwIDAgMGMwIDAgMCAwIDAgMHptMTYwIDBzMCAwIDAgMHMwIDAgMCAwczAgMCAwIDBjMi4xIDIuOCA1LjcgMy45IDguOSAyLjhzNS41LTQuMSA1LjUtNy42YzAtMTcuOS02LjctMzUuNi0xNi42LTQ4LjhjLTkuOC0xMy0yMy45LTIzLjItMzkuNC0yMy4ycy0yOS42IDEwLjItMzkuNCAyMy4yQzI4Ni43IDE4OC40IDI4MCAyMDYuMSAyODAgMjI0YzAgMy40IDIuMiA2LjUgNS41IDcuNnM2LjkgMCA4LjktMi44YzAgMCAwIDAgMCAwczAgMCAwIDBjMCAwIDAgMCAwIDBsLjItLjJjLjItLjIgLjQtLjUgLjctLjljLjYtLjggMS42LTIgMi44LTMuNGMyLjUtMi44IDYtNi42IDEwLjItMTAuM2M4LjgtNy44IDE4LjgtMTQgMjcuNy0xNHMxOC45IDYuMiAyNy43IDE0YzQuMiAzLjcgNy43IDcuNSAxMC4yIDEwLjNjMS4yIDEuNCAyLjIgMi42IDIuOCAzLjRjLjMgLjQgLjYgLjcgLjcgLjlsLjIgLjJjMCAwIDAgMCAwIDB6XCJdXG59O1xuY29uc3QgZmFHcmluQmVhbVN3ZWF0ID0gZmFGYWNlR3JpbkJlYW1Td2VhdDtcbmNvbnN0IGZhRmlsZUV4cG9ydCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmaWxlLWV4cG9ydCcsXG4gIGljb246IFs1NzYsIDUxMiwgW1wiYXJyb3ctcmlnaHQtZnJvbS1maWxlXCJdLCBcImY1NmVcIiwgXCJNMCA2NEMwIDI4LjcgMjguNyAwIDY0IDBMMjI0IDBsMCAxMjhjMCAxNy43IDE0LjMgMzIgMzIgMzJsMTI4IDAgMCAxMjgtMTY4IDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRsMTY4IDAgMCAxMTJjMCAzNS4zLTI4LjcgNjQtNjQgNjRMNjQgNTEyYy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDY0ek0zODQgMzM2bDAtNDggMTEwLjEgMC0zOS0zOWMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlzMjQuNi05LjQgMzMuOSAwbDgwIDgwYzkuNCA5LjQgOS40IDI0LjYgMCAzMy45bC04MCA4MGMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOWwzOS0zOUwzODQgMzM2em0wLTIwOGwtMTI4IDBMMjU2IDAgMzg0IDEyOHpcIl1cbn07XG5jb25zdCBmYUFycm93UmlnaHRGcm9tRmlsZSA9IGZhRmlsZUV4cG9ydDtcbmNvbnN0IGZhU2hpZWxkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NoaWVsZCcsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyODczNywgXCJzaGllbGQtYmxhbmtcIl0sIFwiZjEzMlwiLCBcIk0yNTYgMGM0LjYgMCA5LjIgMSAxMy40IDIuOUw0NTcuNyA4Mi44YzIyIDkuMyAzOC40IDMxIDM4LjMgNTcuMmMtLjUgOTkuMi00MS4zIDI4MC43LTIxMy42IDM2My4yYy0xNi43IDgtMzYuMSA4LTUyLjggMEM1Ny4zIDQyMC43IDE2LjUgMjM5LjIgMTYgMTQwYy0uMS0yNi4yIDE2LjMtNDcuOSAzOC4zLTU3LjJMMjQyLjcgMi45QzI0Ni44IDEgMjUxLjQgMCAyNTYgMHpcIl1cbn07XG5jb25zdCBmYVNoaWVsZEJsYW5rID0gZmFTaGllbGQ7XG5jb25zdCBmYUFycm93VXBTaG9ydFdpZGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYXJyb3ctdXAtc2hvcnQtd2lkZScsXG4gIGljb246IFs1NzYsIDUxMiwgW1wic29ydC1hbW91bnQtdXAtYWx0XCJdLCBcImY4ODVcIiwgXCJNMTUxLjYgNDIuNEMxNDUuNSAzNS44IDEzNyAzMiAxMjggMzJzLTE3LjUgMy44LTIzLjYgMTAuNGwtODggOTZjLTExLjkgMTMtMTEuMSAzMy4zIDIgNDUuMnMzMy4zIDExLjEgNDUuMi0yTDk2IDE0Ni4zIDk2IDQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMzAxLjcgMzIuNCAzNS40YzExLjkgMTMgMzIuMiAxMy45IDQ1LjIgMnMxMy45LTMyLjIgMi00NS4ybC04OC05NnpNMzIwIDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDMyIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTMyIDB6bTAgMTI4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDk2IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTk2IDB6bTAgMTI4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDE2MCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC0xNjAgMHptMCAxMjhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsMjI0IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTIyNCAwelwiXVxufTtcbmNvbnN0IGZhU29ydEFtb3VudFVwQWx0ID0gZmFBcnJvd1VwU2hvcnRXaWRlO1xuY29uc3QgZmFIb3VzZU1lZGljYWwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaG91c2UtbWVkaWNhbCcsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZTNiMlwiLCBcIk01NDMuOCAyODcuNmMxNyAwIDMyLTE0IDMyLTMyLjFjMS05LTMtMTctMTEtMjRMMzA5LjUgN2MtNi01LTE0LTctMjEtN3MtMTUgMS0yMiA4TDEwIDIzMS41Yy03IDctMTAgMTUtMTAgMjRjMCAxOCAxNCAzMi4xIDMyIDMyLjFsMzIgMCAwIDE2MC40YzAgMzUuMyAyOC43IDY0IDY0IDY0bDMyMC40IDBjMzUuNSAwIDY0LjItMjguOCA2NC02NC4zbC0uNy0xNjAuMiAzMiAwek0yNTYgMjA4YzAtOC44IDcuMi0xNiAxNi0xNmwzMiAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDQ4IDQ4IDBjOC44IDAgMTYgNy4yIDE2IDE2bDAgMzJjMCA4LjgtNy4yIDE2LTE2IDE2bC00OCAwIDAgNDhjMCA4LjgtNy4yIDE2LTE2IDE2bC0zMiAwYy04LjggMC0xNi03LjItMTYtMTZsMC00OC00OCAwYy04LjggMC0xNi03LjItMTYtMTZsMC0zMmMwLTguOCA3LjItMTYgMTYtMTZsNDggMCAwLTQ4elwiXVxufTtcbmNvbnN0IGZhR29sZkJhbGxUZWUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZ29sZi1iYWxsLXRlZScsXG4gIGljb246IFszODQsIDUxMiwgW1wiZ29sZi1iYWxsXCJdLCBcImY0NTBcIiwgXCJNMzg0IDE5MmMwIDY2LjgtMzQuMSAxMjUuNi04NS44IDE2MEw4NS44IDM1MkMzNC4xIDMxNy42IDAgMjU4LjggMCAxOTJDMCA4NiA4NiAwIDE5MiAwUzM4NCA4NiAzODQgMTkyek0yNDIuMSAyNTYuNmMwIDE4LjUtMTUgMzMuNS0zMy41IDMzLjVjLTQuOSAwLTkuMSA1LjEtNS40IDguNGM1LjkgNS4yIDEzLjcgOC40IDIyLjEgOC40YzE4LjUgMCAzMy41LTE1IDMzLjUtMzMuNWMwLTguNS0zLjItMTYuMi04LjQtMjIuMWMtMy4zLTMuNy04LjQgLjUtOC40IDUuNHptLTUyLjMtNDkuM2MtNC45IDAtOS4xIDUuMS01LjQgOC40YzUuOSA1LjIgMTMuNyA4LjQgMjIuMSA4LjRjMTguNSAwIDMzLjUtMTUgMzMuNS0zMy41YzAtOC41LTMuMi0xNi4yLTguNC0yMi4xYy0zLjMtMy43LTguNCAuNS04LjQgNS40YzAgMTguNS0xNSAzMy41LTMzLjUgMzMuNXptMTEzLjUtMTcuNWMwIDE4LjUtMTUgMzMuNS0zMy41IDMzLjVjLTQuOSAwLTkuMSA1LjEtNS40IDguNGM1LjkgNS4yIDEzLjcgOC40IDIyLjEgOC40YzE4LjUgMCAzMy41LTE1IDMzLjUtMzMuNWMwLTguNS0zLjItMTYuMi04LjQtMjIuMWMtMy4zLTMuNy04LjQgLjUtOC40IDUuNHpNOTYgNDE2YzAtMTcuNyAxNC4zLTMyIDMyLTMybDY0IDAgNjQgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtMTYgMGMtOC44IDAtMTYgNy4yLTE2IDE2bDAgMTZjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC0xNmMwLTguOC03LjItMTYtMTYtMTZsLTE2IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyelwiXVxufTtcbmNvbnN0IGZhR29sZkJhbGwgPSBmYUdvbGZCYWxsVGVlO1xuY29uc3QgZmFDaXJjbGVDaGV2cm9uTGVmdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaXJjbGUtY2hldnJvbi1sZWZ0JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXCJjaGV2cm9uLWNpcmNsZS1sZWZ0XCJdLCBcImYxMzdcIiwgXCJNNTEyIDI1NkEyNTYgMjU2IDAgMSAwIDAgMjU2YTI1NiAyNTYgMCAxIDAgNTEyIDB6TTI3MSAxMzVjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45bC04NyA4NyA4NyA4N2M5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwTDE2NyAyNzNjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45TDI3MSAxMzV6XCJdXG59O1xuY29uc3QgZmFDaGV2cm9uQ2lyY2xlTGVmdCA9IGZhQ2lyY2xlQ2hldnJvbkxlZnQ7XG5jb25zdCBmYUhvdXNlQ2hpbW5leVdpbmRvdyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdob3VzZS1jaGltbmV5LXdpbmRvdycsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZTAwZFwiLCBcIk01NzUuOCAyNTUuNWMwIDE4LTE1IDMyLjEtMzIgMzIuMWwtMzIgMCAuNyAxNjAuMmMuMiAzNS41LTI4LjUgNjQuMy02NCA2NC4zbC0zMjAuNCAwYy0zNS4zIDAtNjQtMjguNy02NC02NGwwLTE2MC40LTMyIDBjLTE4IDAtMzItMTQtMzItMzIuMWMwLTkgMy0xNyAxMC0yNEwyNjYuNCA4YzctNyAxNS04IDIyLThzMTUgMiAyMSA3TDQxNiAxMDAuNyA0MTYgNjRjMC0xNy43IDE0LjMtMzIgMzItMzJsMzIgMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDEyMSA1Mi44IDQ2LjRjOCA3IDEyIDE1IDExIDI0ek0yNDggMTkyYy0xMy4zIDAtMjQgMTAuNy0yNCAyNGwwIDgwYzAgMTMuMyAxMC43IDI0IDI0IDI0bDgwIDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRsMC04MGMwLTEzLjMtMTAuNy0yNC0yNC0yNGwtODAgMHpcIl1cbn07XG5jb25zdCBmYVBlbk5pYiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwZW4tbmliJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTAwMDFdLCBcImY1YWRcIiwgXCJNMzY4LjQgMTguM0wzMTIuNyA3NC4xIDQzNy45IDE5OS4zbDU1LjctNTUuN2MyMS45LTIxLjkgMjEuOS01Ny4zIDAtNzkuMkw0NDcuNiAxOC4zYy0yMS45LTIxLjktNTcuMy0yMS45LTc5LjIgMHpNMjg4IDk0LjZsLTkuMiAyLjhMMTM0LjcgMTQwLjZjLTE5LjkgNi0zNS43IDIxLjItNDIuMyA0MUwzLjggNDQ1LjhjLTMuOCAxMS4zLTEgMjMuOSA3LjMgMzIuNEwxNjQuNyAzMjQuN2MtMy02LjMtNC43LTEzLjMtNC43LTIwLjdjMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OHMtMjEuNSA0OC00OCA0OGMtNy40IDAtMTQuNC0xLjctMjAuNy00LjdMMzMuNyA1MDAuOWM4LjYgOC4zIDIxLjEgMTEuMiAzMi40IDcuM2wyNjQuMy04OC42YzE5LjctNi42IDM1LTIyLjQgNDEtNDIuM2w0My4yLTE0NC4xIDIuNy05LjJMMjg4IDk0LjZ6XCJdXG59O1xuY29uc3QgZmFUZW50QXJyb3dUdXJuTGVmdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0ZW50LWFycm93LXR1cm4tbGVmdCcsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZTU4MFwiLCBcIk0xMjAuMSA0MS44YzkuOS04LjkgMTAuNy0yNCAxLjgtMzMuOVM5Ny44LTIuNyA4Ny45IDYuMmwtODAgNzJDMi45IDgyLjcgMCA4OS4yIDAgOTZzMi45IDEzLjMgNy45IDE3LjhsODAgNzJjOS45IDguOSAyNSA4LjEgMzMuOS0xLjhzOC4xLTI1LTEuOC0zMy45TDg2LjUgMTIwIDQ1NiAxMjBjMzkuOCAwIDcyIDMyLjIgNzIgNzJsMCA0MGMwIDEzLjMgMTAuNyAyNCAyNCAyNHMyNC0xMC43IDI0LTI0bDAtNDBjMC02Ni4zLTUzLjctMTIwLTEyMC0xMjBMODYuNSA3MmwzMy41LTMwLjJ6TTMwNy40IDE2Ni41Yy0xMS41LTguNy0yNy4zLTguNy0zOC44IDBsLTE2OCAxMjhjLTYuNiA1LTExIDEyLjUtMTIuMyAyMC43bC0yNCAxNjBjLTEuNCA5LjIgMS4zIDE4LjYgNy40IDI1LjZTODYuNyA1MTIgOTYgNTEybDE0NCAwIDE2IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJsMC0xMTguMWMwLTUuNSA0LjQtOS45IDkuOS05LjljMy43IDAgNy4yIDIuMSA4LjggNS41bDY4LjQgMTM2LjhjNS40IDEwLjggMTYuNSAxNy43IDI4LjYgMTcuN2w2MC4yIDAgMTYgMGM5LjMgMCAxOC4yLTQuMSAyNC4yLTExLjFzOC44LTE2LjQgNy40LTI1LjZsLTI0LTE2MGMtMS4yLTguMi01LjYtMTUuNy0xMi4zLTIwLjdsLTE2OC0xMjh6XCJdXG59O1xuY29uc3QgZmFUZW50cyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0ZW50cycsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTU4MlwiLCBcIk0zOTYuNiA2LjVMMjM1LjggMTI5LjFjOS42IDEuOCAxOC45IDUuOCAyNyAxMmwxNjggMTI4YzEzLjIgMTAuMSAyMiAyNC45IDI0LjUgNDEuNGw2LjIgNDEuNUw2MDggMzUyYzkuMyAwIDE4LjItNC4xIDI0LjItMTEuMXM4LjgtMTYuNCA3LjQtMjUuNmwtMjQtMTYwYy0xLjItOC4yLTUuNi0xNS43LTEyLjMtMjAuN2wtMTY4LTEyOGMtMTEuNS04LjctMjcuMy04LjctMzguOCAwem0tMTUzLjIgMTYwYy0xMS41LTguNy0yNy4zLTguNy0zOC44IDBsLTE2OCAxMjhjLTYuNiA1LTExIDEyLjUtMTIuMyAyMC43bC0yNCAxNjBjLTEuNCA5LjIgMS4zIDE4LjYgNy40IDI1LjZTMjIuNyA1MTIgMzIgNTEybDE0NCAwIDE2IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJsMC0xMTguMWMwLTUuNSA0LjQtOS45IDkuOS05LjljMy43IDAgNy4yIDIuMSA4LjggNS41bDY4LjQgMTM2LjhjNS40IDEwLjggMTYuNSAxNy43IDI4LjYgMTcuN2w2MC4yIDAgMTYgMGM5LjMgMCAxOC4yLTQuMSAyNC4yLTExLjFzOC44LTE2LjQgNy40LTI1LjZsLTI0LTE2MGMtMS4yLTguMi01LjYtMTUuNy0xMi4zLTIwLjdsLTE2OC0xMjh6XCJdXG59O1xuY29uc3QgZmFXYW5kTWFnaWMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnd2FuZC1tYWdpYycsXG4gIGljb246IFs1MTIsIDUxMiwgW1wibWFnaWNcIl0sIFwiZjBkMFwiLCBcIk0xNC4xIDQ2My4zYy0xOC43LTE4LjctMTguNy00OS4xIDAtNjcuOUwzOTUuNCAxNC4xYzE4LjctMTguNyA0OS4xLTE4LjcgNjcuOSAwbDM0LjYgMzQuNmMxOC43IDE4LjcgMTguNyA0OS4xIDAgNjcuOUwxMTYuNSA0OTcuOWMtMTguNyAxOC43LTQ5LjEgMTguNy02Ny45IDBMMTQuMSA0NjMuM3pNMzQ3LjYgMTg3LjZsMTA1LTEwNUw0MjkuNCA1OS4zbC0xMDUgMTA1IDIzLjMgMjMuM3pcIl1cbn07XG5jb25zdCBmYU1hZ2ljID0gZmFXYW5kTWFnaWM7XG5jb25zdCBmYURvZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdkb2cnLFxuICBpY29uOiBbNTc2LCA1MTIsIFsxMjgwMjFdLCBcImY2ZDNcIiwgXCJNMzA5LjYgMTU4LjVMMzMyLjcgMTkuOEMzMzQuNiA4LjQgMzQ0LjUgMCAzNTYuMSAwYzcuNSAwIDE0LjUgMy41IDE5IDkuNUwzOTIgMzJsNTIuMSAwYzEyLjcgMCAyNC45IDUuMSAzMy45IDE0LjFMNDk2IDY0bDU2IDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRsMCAyNGMwIDQ0LjItMzUuOCA4MC04MCA4MGwtMzIgMC0xNiAwLTIxLjMgMC01LjEgMzAuNS0xMTItNjR6TTQxNiAyNTYuMUw0MTYgNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMybC0zMiAwYy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTExNS4yYy0yNCAxMi4zLTUxLjIgMTkuMi04MCAxOS4ycy01Ni02LjktODAtMTkuMkwxNjAgNDgwYzAgMTcuNy0xNC4zIDMyLTMyIDMybC0zMiAwYy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTIzMC4yYy0yOC44LTEwLjktNTEuNC0zNS4zLTU5LjItNjYuNUwxIDE2Ny44Yy00LjMtMTcuMSA2LjEtMzQuNSAyMy4zLTM4LjhzMzQuNSA2LjEgMzguOCAyMy4zbDMuOSAxNS41QzcwLjUgMTgyIDgzLjMgMTkyIDk4IDE5MmwzMCAwIDE2IDAgMTU5LjggMEw0MTYgMjU2LjF6TTQ2NCA4MGExNiAxNiAwIDEgMCAtMzIgMCAxNiAxNiAwIDEgMCAzMiAwelwiXVxufTtcbmNvbnN0IGZhQ2Fycm90ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NhcnJvdCcsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyOTM2NV0sIFwiZjc4N1wiLCBcIk0zNDYuNyA2QzMzNy42IDE3IDMyMCA0Mi4zIDMyMCA3MmMwIDQwIDE1LjMgNTUuMyA0MCA4MHM0MCA0MCA4MCA0MGMyOS43IDAgNTUtMTcuNiA2Ni0yNi43YzQtMy4zIDYtOC4yIDYtMTMuM3MtMi0xMC02LTEzLjJjLTExLjQtOS4xLTM4LjMtMjYuOC03NC0yNi44Yy0zMiAwLTQwIDgtNDAgOHM4LTggOC00MGMwLTM1LjctMTcuNy02Mi42LTI2LjgtNzRDMzcwIDIgMzY1LjEgMCAzNjAgMHMtMTAgMi0xMy4zIDZ6TTI0NC42IDEzNmMtNDAgMC03Ny4xIDE4LjEtMTAxLjcgNDguMmw2MC41IDYwLjVjNi4yIDYuMiA2LjIgMTYuNCAwIDIyLjZzLTE2LjQgNi4yLTIyLjYgMGwtNTUuMy01NS4zIDAgLjFMMi4yIDQ3Ny45Qy0yIDQ4Ny0uMSA0OTcuOCA3IDUwNXMxNy45IDkgMjcuMSA0LjhsMTM0LjctNjIuNC01Mi4xLTUyLjFjLTYuMi02LjItNi4yLTE2LjQgMC0yMi42czE2LjQtNi4yIDIyLjYgMEwxOTkuNyA0MzNsMTAwLjItNDYuNGM0Ni40LTIxLjUgNzYuMi02OCA3Ni4yLTExOS4yQzM3NiAxOTQuOCAzMTcuMiAxMzYgMjQ0LjYgMTM2elwiXVxufTtcbmNvbnN0IGZhTW9vbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtb29uJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbMTI3NzY5LCA5MjE0XSwgXCJmMTg2XCIsIFwiTTIyMy41IDMyQzEwMCAzMiAwIDEzMi4zIDAgMjU2UzEwMCA0ODAgMjIzLjUgNDgwYzYwLjYgMCAxMTUuNS0yNC4yIDE1NS44LTYzLjRjNS00LjkgNi4zLTEyLjUgMy4xLTE4LjdzLTEwLjEtOS43LTE3LTguNWMtOS44IDEuNy0xOS44IDIuNi0zMC4xIDIuNmMtOTYuOSAwLTE3NS41LTc4LjgtMTc1LjUtMTc2YzAtNjUuOCAzNi0xMjMuMSA4OS4zLTE1My4zYzYuMS0zLjUgOS4yLTEwLjUgNy43LTE3LjNzLTcuMy0xMS45LTE0LjMtMTIuNWMtNi4zLS41LTEyLjYtLjgtMTktLjh6XCJdXG59O1xuY29uc3QgZmFXaW5lR2xhc3NFbXB0eSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd3aW5lLWdsYXNzLWVtcHR5JyxcbiAgaWNvbjogWzMyMCwgNTEyLCBbXCJ3aW5lLWdsYXNzLWFsdFwiXSwgXCJmNWNlXCIsIFwiTTY0IDBDNDcuNCAwIDMzLjUgMTIuOCAzMi4xIDI5LjNsLTE0IDE2OC40Yy02IDcyIDQyLjUgMTM1LjIgMTA5LjkgMTUwLjZsMCA5OS42LTQ4IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsODAgMCA4MCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC00OCAwIDAtOTkuNmM2Ny40LTE1LjQgMTE1LjktNzguNiAxMDkuOS0xNTAuNmwtMTQtMTY4LjRDMjg2LjUgMTIuOCAyNzIuNiAwIDI1NiAwTDY0IDB6TTgxLjkgMjAzLjFMOTMuNCA2NGwxMzMuMSAwIDExLjYgMTM5LjFDMjQyIDI0OC44IDIwNS45IDI4OCAxNjAgMjg4cy04Mi0zOS4yLTc4LjEtODQuOXpcIl1cbn07XG5jb25zdCBmYVdpbmVHbGFzc0FsdCA9IGZhV2luZUdsYXNzRW1wdHk7XG5jb25zdCBmYUNoZWVzZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaGVlc2UnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY3ZWZcIiwgXCJNNTEyIDI0MC4ybDAgMTUuOEwwIDI1NmMwLTIwIDEwLTM4LjcgMjYuNi00OS44TDI3NC45IDQwLjdjOC42LTUuNyAxOC42LTguNyAyOC45LTguN0M0MTguOCAzMiA1MTIgMTI1LjIgNTEyIDI0MC4yem0wIDQ3LjhsMCAxMjhjMCAzNS4zLTI4LjcgNjQtNjQgNjRMNjQgNDgwYy0zNS4zIDAtNjQtMjguNy02NC02NEwwIDI4OGw1MTIgMHpcIl1cbn07XG5jb25zdCBmYVlpbllhbmcgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAneWluLXlhbmcnLFxuICBpY29uOiBbNTEyLCA1MTIsIFs5Nzc1XSwgXCJmNmFkXCIsIFwiTTI1NiA2NGM1MyAwIDk2IDQzIDk2IDk2cy00MyA5Ni05NiA5NnMtOTYgNDMtOTYgOTZzNDMgOTYgOTYgOTZDMTUwIDQ0OCA2NCAzNjIgNjQgMjU2UzE1MCA2NCAyNTYgNjR6bTAgNDQ4QTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnptMzItMzUyYTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6TTIyNCAzNTJhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHpcIl1cbn07XG5jb25zdCBmYU11c2ljID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ211c2ljJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI3OTI1XSwgXCJmMDAxXCIsIFwiTTQ5OS4xIDYuM2M4LjEgNiAxMi45IDE1LjYgMTIuOSAyNS43bDAgNzIgMCAyNjRjMCA0NC4yLTQzIDgwLTk2IDgwcy05Ni0zNS44LTk2LTgwczQzLTgwIDk2LTgwYzExLjIgMCAyMiAxLjYgMzIgNC42TDQ0OCAxNDcgMTkyIDIyMy44IDE5MiA0MzJjMCA0NC4yLTQzIDgwLTk2IDgwcy05Ni0zNS44LTk2LTgwczQzLTgwIDk2LTgwYzExLjIgMCAyMiAxLjYgMzIgNC42TDEyOCAyMDBsMC03MmMwLTE0LjEgOS4zLTI2LjYgMjIuOC0zMC43bDMyMC05NmM5LjctMi45IDIwLjItMS4xIDI4LjMgNXpcIl1cbn07XG5jb25zdCBmYUNvZGVDb21taXQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY29kZS1jb21taXQnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImYzODZcIiwgXCJNMzIwIDMzNmE4MCA4MCAwIDEgMCAwLTE2MCA4MCA4MCAwIDEgMCAwIDE2MHptMTU2LjgtNDhDNDYyIDM2MSAzOTcuNCA0MTYgMzIwIDQxNnMtMTQyLTU1LTE1Ni44LTEyOEwzMiAyODhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJsMTMxLjIgMEMxNzggMTUxIDI0Mi42IDk2IDMyMCA5NnMxNDIgNTUgMTU2LjggMTI4TDYwOCAyMjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTEzMS4yIDB6XCJdXG59O1xuY29uc3QgZmFUZW1wZXJhdHVyZUxvdyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0ZW1wZXJhdHVyZS1sb3cnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY3NmJcIiwgXCJNNDQ4IDk2YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6TTMyMCA5NmE5NiA5NiAwIDEgMSAxOTIgMEE5NiA5NiAwIDEgMSAzMjAgOTZ6TTE0NCA2NGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhsMCAxNjQuNWMwIDE3LjMtNy4xIDMxLjktMTUuMyA0Mi41QzcwLjIgMzMyLjYgNjQgMzQ5LjUgNjQgMzY4YzAgNDQuMiAzNS44IDgwIDgwIDgwczgwLTM1LjggODAtODBjMC0xOC41LTYuMi0zNS40LTE2LjctNDguOWMtOC4yLTEwLjYtMTUuMy0yNS4yLTE1LjMtNDIuNUwxOTIgMTEyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek0zMiAxMTJDMzIgNTAuMiA4Mi4xIDAgMTQ0IDBzMTEyIDUwLjEgMTEyIDExMmwwIDE2NC40YzAgLjEgLjEgLjMgLjIgLjZjLjIgLjYgLjggMS42IDEuNyAyLjhjMTguOSAyNC40IDMwLjEgNTUgMzAuMSA4OC4xYzAgNzkuNS02NC41IDE0NC0xNDQgMTQ0UzAgNDQ3LjUgMCAzNjhjMC0zMy4yIDExLjItNjMuOCAzMC4xLTg4LjFjLjktMS4yIDEuNS0yLjIgMS43LTIuOGMuMS0uMyAuMi0uNSAuMi0uNkwzMiAxMTJ6TTE5MiAzNjhjMCAyNi41LTIxLjUgNDgtNDggNDhzLTQ4LTIxLjUtNDgtNDhjMC0yMC45IDEzLjQtMzguNyAzMi00NS4zbDAtNTAuN2MwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2bDAgNTAuN2MxOC42IDYuNiAzMiAyNC40IDMyIDQ1LjN6XCJdXG59O1xuY29uc3QgZmFQZXJzb25CaWtpbmcgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGVyc29uLWJpa2luZycsXG4gIGljb246IFs2NDAsIDUxMiwgWzEyODY5MiwgXCJiaWtpbmdcIl0sIFwiZjg0YVwiLCBcIk00MDAgOTZhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2em0yNy4yIDY0bC02MS44LTQ4LjhjLTE3LjMtMTMuNi00MS43LTEzLjgtNTkuMS0uM2wtODMuMSA2NC4yYy0zMC43IDIzLjgtMjguNSA3MC44IDQuMyA5MS42TDI4OCAzMDUuMSAyODggNDE2YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0xMjhjMC0xMC43LTUuMy0yMC43LTE0LjItMjYuNkwyOTUgMjMyLjlsNjAuMy00OC41TDM5NiAyMTdjNS43IDQuNSAxMi43IDcgMjAgN2w2NCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC01Mi44IDB6TTU2IDM4NGE3MiA3MiAwIDEgMSAxNDQgMEE3MiA3MiAwIDEgMSA1NiAzODR6bTIwMCAwQTEyOCAxMjggMCAxIDAgMCAzODRhMTI4IDEyOCAwIDEgMCAyNTYgMHptMTg0IDBhNzIgNzIgMCAxIDEgMTQ0IDAgNzIgNzIgMCAxIDEgLTE0NCAwem0yMDAgMGExMjggMTI4IDAgMSAwIC0yNTYgMCAxMjggMTI4IDAgMSAwIDI1NiAwelwiXVxufTtcbmNvbnN0IGZhQmlraW5nID0gZmFQZXJzb25CaWtpbmc7XG5jb25zdCBmYUJyb29tID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Jyb29tJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbMTI5NTI5XSwgXCJmNTFhXCIsIFwiTTU2Ni42IDU0LjZjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBsLTE5MiAxOTItMzQuNy0zNC43Yy00LjItNC4yLTEwLTYuNi0xNi02LjZjLTEyLjUgMC0yMi42IDEwLjEtMjIuNiAyMi42bDAgMjkuMUwzNjQuMyAzMjBsMjkuMSAwYzEyLjUgMCAyMi42LTEwLjEgMjIuNi0yMi42YzAtNi0yLjQtMTEuOC02LjYtMTZsLTM0LjctMzQuNyAxOTItMTkyek0zNDEuMSAzNTMuNEwyMjIuNiAyMzQuOWMtNDIuNy0zLjctODUuMiAxMS43LTExNS44IDQyLjNsLTggOEM3Ni41IDMwNy41IDY0IDMzNy43IDY0IDM2OS4yYzAgNi44IDcuMSAxMS4yIDEzLjIgOC4ybDUxLjEtMjUuNWM1LTIuNSA5LjUgNC4xIDUuNCA3LjlMNy4zIDQ3My40QzIuNyA0NzcuNiAwIDQ4My42IDAgNDg5LjlDMCA1MDIuMSA5LjkgNTEyIDIyLjEgNTEybDE3My4zIDBjMzguOCAwIDc1LjktMTUuNCAxMDMuNC00Mi44YzMwLjYtMzAuNiA0NS45LTczLjEgNDIuMy0xMTUuOHpcIl1cbn07XG5jb25zdCBmYVNoaWVsZEhlYXJ0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NoaWVsZC1oZWFydCcsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZTU3NFwiLCBcIk0yNjkuNCAyLjlDMjY1LjIgMSAyNjAuNyAwIDI1NiAwcy05LjIgMS0xMy40IDIuOUw1NC4zIDgyLjhjLTIyIDkuMy0zOC40IDMxLTM4LjMgNTcuMmMuNSA5OS4yIDQxLjMgMjgwLjcgMjEzLjYgMzYzLjJjMTYuNyA4IDM2LjEgOCA1Mi44IDBDNDU0LjcgNDIwLjcgNDk1LjUgMjM5LjIgNDk2IDE0MGMuMS0yNi4yLTE2LjMtNDcuOS0zOC4zLTU3LjJMMjY5LjQgMi45ek0xNDQgMjIxLjNjMC0zMy44IDI3LjQtNjEuMyA2MS4zLTYxLjNjMTYuMiAwIDMxLjggNi41IDQzLjMgMTcuOWw3LjQgNy40IDcuNC03LjRjMTEuNS0xMS41IDI3LjEtMTcuOSA0My4zLTE3LjljMzMuOCAwIDYxLjMgMjcuNCA2MS4zIDYxLjNjMCAxNi4yLTYuNSAzMS44LTE3LjkgNDMuM2wtODIuNyA4Mi43Yy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMGwtODIuNy04Mi43Yy0xMS41LTExLjUtMTcuOS0yNy4xLTE3LjktNDMuM3pcIl1cbn07XG5jb25zdCBmYUdvcHVyYW0gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZ29wdXJhbScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjY2NFwiLCBcIk0xMjAgMGMxMy4zIDAgMjQgMTAuNyAyNCAyNGwwIDggNDAgMCAwLThjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNGwwIDggNDggMCAwLThjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNGwwIDggNDAgMCAwLThjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNGwwIDggMCAzMiAwIDY0YzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgNjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCA5NmMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDk2YzAgMTcuNy0xNC4zIDMyLTMyIDMybC02NCAwIDAtMTYwLTMyIDAgMC0xMjgtMzIgMCAwLTk2LTMyIDAgMCA5NiAzMiAwIDAgMTI4IDMyIDAgMCAxNjAtODAgMCAwLTQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4cy00OCAyMS41LTQ4IDQ4bDAgNDgtODAgMCAwLTE2MCAzMiAwIDAtMTI4IDMyIDAgMC05Ni0zMiAwIDAgOTYtMzIgMCAwIDEyOC0zMiAwIDAgMTYwLTY0IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtOTZjMC0xNy43IDE0LjMtMzIgMzItMzJsMC05NmMwLTE3LjcgMTQuMy0zMiAzMi0zMmwwLTY0YzAtMTcuNyAxNC4zLTMyIDMyLTMybDAtNjQgMC0zMiAwLThjMC0xMy4zIDEwLjctMjQgMjQtMjR6TTI1NiAyNzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMybDAgNDggNjQgMCAwLTQ4YzAtMTcuNy0xNC4zLTMyLTMyLTMyem0tMzItODBsMCAzMiA2NCAwIDAtMzJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJ6XCJdXG59O1xuY29uc3QgZmFFYXJ0aE9jZWFuaWEgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZWFydGgtb2NlYW5pYScsXG4gIGljb246IFs1MTIsIDUxMiwgW1wiZ2xvYmUtb2NlYW5pYVwiXSwgXCJlNDdiXCIsIFwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0yMDguNiAzNTcuM2wtMzktMTMuNWMtNi41LTIuMi0xMy42LTIuMy0yMC4xLS4zbC0xNS4zIDQuOWMtMTguNSA1LjktMzguNS0yLjQtNDcuNS0xOS41bC0zLjMtNi4yYy0xMC42LTIwLjEtMi4zLTQ1IDE4LjItNTQuN2wzNS4zLTE2LjhjMi4zLTEuMSA0LjQtMi44IDUuOS00LjhsNS4zLTdjNy4yLTkuNiAxOC42LTE1LjMgMzAuNi0xNS4zczIzLjQgNS43IDMwLjYgMTUuM2w0LjYgNi4xYzIgMi42IDQuOSA0LjUgOC4xIDUuMWM3LjggMS42IDE1LjctMS41IDIwLjQtNy45bDEwLjQtMTQuMmMyLTIuOCA1LjMtNC40IDguNy00LjRjNC40IDAgOC40IDIuNyAxMCA2LjhsMTAuMSAyNS45YzIuOCA3LjIgNi43IDE0IDExLjUgMjAuMkwzMTEgMjk5LjhjNS44IDcuNCA5IDE2LjYgOSAyNnMtMy4yIDE4LjYtOSAyNkwyOTkgMzY3LjJjLTguMyAxMC42LTIxIDE2LjgtMzQuNCAxNi44Yy04LjQgMC0xNi42LTIuNC0yMy43LTdsLTI1LjQtMTYuNGMtMi4yLTEuNC00LjUtMi41LTYuOS0zLjR6bTY1LjItMjE0LjhMMjk2IDE2NC43YzEwLjEgMTAuMSAyLjkgMjcuMy0xMS4zIDI3LjNsLTI5LjkgMGMtNS42IDAtMTEuMS0xLjItMTYuMi0zLjRsLTQyLjgtMTljLTE0LjMtNi4zLTExLjktMjcuMyAzLjQtMzAuM2wzOC41LTcuN2MxMy4xLTIuNiAyNi43IDEuNSAzNi4xIDEwLjl6TTI0OCA0MzJjMC04LjggNy4yLTE2IDE2LTE2bDE2IDBjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZsLTE2IDBjLTguOCAwLTE2LTcuMi0xNi0xNnpNNDMxLjIgMjk4LjlsOCAyNGMyLjggOC40LTEuNyAxNy40LTEwLjEgMjAuMnMtMTcuNC0xLjctMjAuMi0xMC4xbC04LTI0Yy0yLjgtOC40IDEuNy0xNy40IDEwLjEtMjAuMnMxNy40IDEuNyAyMC4yIDEwLjF6bS0xOS45IDgwLjRsLTMyIDMyYy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMHMtNi4yLTE2LjQgMC0yMi42bDMyLTMyYzYuMi02LjIgMTYuNC02LjIgMjIuNiAwczYuMiAxNi40IDAgMjIuNnpcIl1cbn07XG5jb25zdCBmYUdsb2JlT2NlYW5pYSA9IGZhRWFydGhPY2VhbmlhO1xuY29uc3QgZmFTcXVhcmVYbWFyayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzcXVhcmUteG1hcmsnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFsxMDA2MiwgXCJ0aW1lcy1zcXVhcmVcIiwgXCJ4bWFyay1zcXVhcmVcIl0sIFwiZjJkM1wiLCBcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2TDAgNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0bDMyMCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMzIwYzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDMyem03OSAxNDNjOS40LTkuNCAyNC42LTkuNCAzMy45IDBsNDcgNDcgNDctNDdjOS40LTkuNCAyNC42LTkuNCAzMy45IDBzOS40IDI0LjYgMCAzMy45bC00NyA0NyA0NyA0N2M5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwbC00Ny00Ny00NyA0N2MtOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOWw0Ny00Ny00Ny00N2MtOS40LTkuNC05LjQtMjQuNiAwLTMzLjl6XCJdXG59O1xuY29uc3QgZmFUaW1lc1NxdWFyZSA9IGZhU3F1YXJlWG1hcms7XG5jb25zdCBmYVhtYXJrU3F1YXJlID0gZmFTcXVhcmVYbWFyaztcbmNvbnN0IGZhSGFzaHRhZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoYXNodGFnJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbNjIwOThdLCBcIjIzXCIsIFwiTTE4MS4zIDMyLjRjMTcuNCAyLjkgMjkuMiAxOS40IDI2LjMgMzYuOEwxOTcuOCAxMjhsOTUuMSAwIDExLjUtNjkuM2MyLjktMTcuNCAxOS40LTI5LjIgMzYuOC0yNi4zczI5LjIgMTkuNCAyNi4zIDM2LjhMMzU3LjggMTI4bDU4LjIgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtNjguOSAwTDMyNS44IDMyMGw1OC4yIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTY4LjkgMC0xMS41IDY5LjNjLTIuOSAxNy40LTE5LjQgMjkuMi0zNi44IDI2LjNzLTI5LjItMTkuNC0yNi4zLTM2LjhsOS44LTU4LjctOTUuMSAwLTExLjUgNjkuM2MtMi45IDE3LjQtMTkuNCAyOS4yLTM2LjggMjYuM3MtMjkuMi0xOS40LTI2LjMtMzYuOEw5MC4yIDM4NCAzMiAzODRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJsNjguOSAwIDIxLjMtMTI4TDY0IDE5MmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmw2OC45IDAgMTEuNS02OS4zYzIuOS0xNy40IDE5LjQtMjkuMiAzNi44LTI2LjN6TTE4Ny4xIDE5MkwxNjUuOCAzMjBsOTUuMSAwIDIxLjMtMTI4LTk1LjEgMHpcIl1cbn07XG5jb25zdCBmYVVwUmlnaHRBbmREb3duTGVmdEZyb21DZW50ZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndXAtcmlnaHQtYW5kLWRvd24tbGVmdC1mcm9tLWNlbnRlcicsXG4gIGljb246IFs1MTIsIDUxMiwgW1wiZXhwYW5kLWFsdFwiXSwgXCJmNDI0XCIsIFwiTTM0NCAwTDQ4OCAwYzEzLjMgMCAyNCAxMC43IDI0IDI0bDAgMTQ0YzAgOS43LTUuOCAxOC41LTE0LjggMjIuMnMtMTkuMyAxLjctMjYuMi01LjJsLTM5LTM5LTg3IDg3Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMGwtMzItMzJjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45bDg3LTg3TDMyNyA0MWMtNi45LTYuOS04LjktMTcuMi01LjItMjYuMlMzMzQuMyAwIDM0NCAwek0xNjggNTEyTDI0IDUxMmMtMTMuMyAwLTI0LTEwLjctMjQtMjRMMCAzNDRjMC05LjcgNS44LTE4LjUgMTQuOC0yMi4yczE5LjMtMS43IDI2LjIgNS4ybDM5IDM5IDg3LTg3YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwbDMyIDMyYzkuNCA5LjQgOS40IDI0LjYgMCAzMy45bC04NyA4NyAzOSAzOWM2LjkgNi45IDguOSAxNy4yIDUuMiAyNi4ycy0xMi41IDE0LjgtMjIuMiAxNC44elwiXVxufTtcbmNvbnN0IGZhRXhwYW5kQWx0ID0gZmFVcFJpZ2h0QW5kRG93bkxlZnRGcm9tQ2VudGVyO1xuY29uc3QgZmFPaWxDYW4gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnb2lsLWNhbicsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjYxM1wiLCBcIk0zMjAgMTI4YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyTDE5MiA2NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwzMiAwIDAgMzItODAgMC00OCAwLTQ4IDBjLTI2LjUgMC00OCAyMS41LTQ4IDQ4bDAgNjQuOGMwIDE5IDExLjIgMzYuMiAyOC41IDQzLjlsNjcuNSAzMEw5NiAzNjhjMCAyNi41IDIxLjUgNDggNDggNDhsMjU5LjEgMGMxOC40IDAgMzUuOC03LjkgNDgtMjEuN0w2MzMuNSAxODcuN2MxMi4zLTEzLjktLjMtMzUuNC0xOC40LTMxLjVMNDQ4IDE5MmwtNTAuNS0yNS4yYy04LjktNC40LTE4LjctNi44LTI4LjYtNi44TDI4OCAxNjBsMC0zMiAzMiAwek05NiAyMDhsMCA4Ni4xTDQ4IDI3Mi44IDQ4IDIwOGw0OCAwelwiXVxufTtcbmNvbnN0IGZhVCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0JyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbMTE2XSwgXCI1NFwiLCBcIk0zMiAzMkMxNC4zIDMyIDAgNDYuMyAwIDY0UzE0LjMgOTYgMzIgOTZsMTI4IDAgMCAzNTJjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTM1MiAxMjggMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkwxOTIgMzIgMzIgMzJ6XCJdXG59O1xuY29uc3QgZmFIaXBwbyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoaXBwbycsXG4gIGljb246IFs2NDAsIDUxMiwgWzEyOTQzNV0sIFwiZjZlZFwiLCBcIk00MDcgNDdjOS40LTkuNCAyNC42LTkuNCAzMy45IDBsMTcuMiAxNy4yYzEuOS0uMSAzLjktLjIgNS44LS4ybDMyIDBjMTEuMiAwIDIxLjkgMi4zIDMxLjYgNi41TDU0MyA1NWM5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjlMNTY0IDEwMS45YzcuNiAxMi4yIDEyIDI2LjcgMTIgNDIuMWMwIDEwLjIgNy40IDE4LjggMTYuNyAyM2MyNy45IDEyLjUgNDcuMyA0MC41IDQ3LjMgNzNjMCAyNi4yLTEyLjYgNDkuNC0zMiA2NGwwIDMyYzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMTYtNjQgMCAwIDE2YzAgOC44LTcuMiAxNi0xNiAxNmwtMzIgMGMtOC44IDAtMTYtNy4yLTE2LTE2bDAtMTcuNmMtMTEuOC0yLjQtMjIuNy03LjQtMzItMTQuNGMtMS41LTEuMS0yLjktMi4zLTQuMy0zLjVjLTE3LTE0LjctMjcuNy0zNi40LTI3LjctNjAuNWMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNmMwIDQ0LjcgMjYuMiA4My4yIDY0IDEwMS4ybDAgMTAuOGMwIDE3LjcgMTQuMyAzMiAzMiAzMmwzMiAwIDAgNjRjMCAxNy43LTE0LjMgMzItMzIgMzJsLTY0IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtNzZjLTE5LjggNy43LTQxLjQgMTItNjQgMTJzLTQ0LjItNC4zLTY0LTEybDAgNzZjMCAxNy43LTE0LjMgMzItMzIgMzJsLTY0IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtMTE4LjlMNDUuOSAzNjkuN2MtNS40IDEyLjEtMTkuNiAxNy42LTMxLjcgMTIuMlMtMy4zIDM2Mi40IDIuMSAzNTAuM0wyNCAzMDAuOWM1LjMtMTEuOSA4LTI0LjcgOC0zNy43QzMyIDE1NS43IDExNy4yIDY4IDIyMy44IDY0LjFsLjItLjEgNy4yIDBMMjU2IDY0bDMyIDBjNDEuNyAwIDgzLjQgMTIuMSAxMTcuMiAyNS43YzEuNy0xLjggMy41LTMuNiA1LjMtNS4yTDQwNyA4MWMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjl6bTczIDE4NWEyNCAyNCAwIDEgMCAtNDggMCAyNCAyNCAwIDEgMCA0OCAwem04OCAyNGEyNCAyNCAwIDEgMCAwLTQ4IDI0IDI0IDAgMSAwIDAgNDh6TTQ4MCAxNDRhMTYgMTYgMCAxIDAgLTMyIDAgMTYgMTYgMCAxIDAgMzIgMHptNDggMTZhMTYgMTYgMCAxIDAgMC0zMiAxNiAxNiAwIDEgMCAwIDMyelwiXVxufTtcbmNvbnN0IGZhQ2hhcnRDb2x1bW4gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2hhcnQtY29sdW1uJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJlMGUzXCIsIFwiTTMyIDMyYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgMzM2YzAgOC44IDcuMiAxNiAxNiAxNmw0MDAgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMkw4MCA0ODBjLTQ0LjIgMC04MC0zNS44LTgwLTgwTDAgNjRDMCA0Ni4zIDE0LjMgMzIgMzIgMzJ6TTE2MCAyMjRjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCA2NGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyem0xMjgtNjRsMCAxNjBjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC0xNjBjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnptNjQgMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCA5NmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTk2YzAtMTcuNyAxNC4zLTMyIDMyLTMyek00ODAgOTZsMCAyMjRjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC0yMjRjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMnpcIl1cbn07XG5jb25zdCBmYUluZmluaXR5ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2luZmluaXR5JyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbODczNCwgOTg1NF0sIFwiZjUzNFwiLCBcIk0wIDI0MS4xQzAgMTYxIDY1IDk2IDE0NS4xIDk2YzM4LjUgMCA3NS40IDE1LjMgMTAyLjYgNDIuNUwzMjAgMjEwLjdsNzIuMi03Mi4yQzQxOS41IDExMS4zIDQ1Ni40IDk2IDQ5NC45IDk2QzU3NSA5NiA2NDAgMTYxIDY0MCAyNDEuMWwwIDI5LjdDNjQwIDM1MSA1NzUgNDE2IDQ5NC45IDQxNmMtMzguNSAwLTc1LjQtMTUuMy0xMDIuNi00Mi41TDMyMCAzMDEuM2wtNzIuMiA3Mi4yQzIyMC41IDQwMC43IDE4My42IDQxNiAxNDUuMSA0MTZDNjUgNDE2IDAgMzUxIDAgMjcwLjlsMC0yOS43ek0yNzQuNyAyNTZsLTcyLjItNzIuMmMtMTUuMi0xNS4yLTM1LjktMjMuOC01Ny40LTIzLjhDMTAwLjMgMTYwIDY0IDE5Ni4zIDY0IDI0MS4xbDAgMjkuN2MwIDQ0LjggMzYuMyA4MS4xIDgxLjEgODEuMWMyMS41IDAgNDIuMi04LjUgNTcuNC0yMy44TDI3NC43IDI1NnptOTAuNSAwbDcyLjIgNzIuMmMxNS4yIDE1LjIgMzUuOSAyMy44IDU3LjQgMjMuOGM0NC44IDAgODEuMS0zNi4zIDgxLjEtODEuMWwwLTI5LjdjMC00NC44LTM2LjMtODEuMS04MS4xLTgxLjFjLTIxLjUgMC00Mi4yIDguNS01Ny40IDIzLjhMMzY1LjMgMjU2elwiXVxufTtcbmNvbnN0IGZhVmlhbENpcmNsZUNoZWNrID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3ZpYWwtY2lyY2xlLWNoZWNrJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJlNTk2XCIsIFwiTTAgNjRDMCA0Ni4zIDE0LjMgMzIgMzIgMzJsNjQgMCA2NCAwIDY0IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsMCAxNzAuOGMtMjAuMiAyOC42LTMyIDYzLjUtMzIgMTAxLjJjMCAyNS4yIDUuMyA0OS4xIDE0LjggNzAuOEMxODkuNSA0NjMuNyAxNjAuNiA0ODAgMTI4IDQ4MGMtNTMgMC05Ni00My05Ni05NkwzMiA5NkMxNC4zIDk2IDAgODEuNyAwIDY0ek05NiA5NmwwIDk2IDY0IDAgMC05Nkw5NiA5NnpNMjI0IDM2OGExNDQgMTQ0IDAgMSAxIDI4OCAwIDE0NCAxNDQgMCAxIDEgLTI4OCAwem0yMTEuMy00My4zYy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMEwzNTIgMzg1LjRsLTI4LjctMjguN2MtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBzLTYuMiAxNi40IDAgMjIuNmw0MCA0MGM2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMGw3Mi03MmM2LjItNi4yIDYuMi0xNi40IDAtMjIuNnpcIl1cbn07XG5jb25zdCBmYVBlcnNvbkFycm93RG93blRvTGluZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwZXJzb24tYXJyb3ctZG93bi10by1saW5lJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlNTM4XCIsIFwiTTE5MiA5NmE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6bS04IDM1MmwwLTk2IDE2IDAgMCA5Ni0xNiAwem0tNjQgMGwtODggMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwxMjAgMCA4MCAwIDM3NiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC0zNDQgMCAwLTE5MS4xIDI4LjYgNDcuNWM5LjEgMTUuMSAyOC44IDIwIDQzLjkgMTAuOXMyMC0yOC44IDEwLjktNDMuOWwtNTguMy05N2MtMTcuNC0yOC45LTQ4LjYtNDYuNi04Mi4zLTQ2LjZsLTI5LjcgMGMtMzMuNyAwLTY0LjkgMTcuNy04Mi4zIDQ2LjZsLTU4LjMgOTdjLTkuMSAxNS4xLTQuMiAzNC44IDEwLjkgNDMuOXMzNC44IDQuMiA0My45LTEwLjlMMTIwIDI1Ni45IDEyMCA0NDh6TTQ2NCA2NGwwIDI0Mi43LTI1LjQtMjUuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBzLTEyLjUgMzIuOCAwIDQ1LjNsODAgODBjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBsODAtODBjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBMNTI4IDMwNi43IDUyOCA2NGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMnpcIl1cbn07XG5jb25zdCBmYVZvaWNlbWFpbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd2b2ljZW1haWwnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY4OTdcIiwgXCJNMTQ0IDMyMGE4MCA4MCAwIDEgMSAwLTE2MCA4MCA4MCAwIDEgMSAwIDE2MHptMTE5LjggMGMxNS4zLTIyLjkgMjQuMi01MC40IDI0LjItODBjMC03OS41LTY0LjUtMTQ0LTE0NC0xNDRTMCAxNjAuNSAwIDI0MHM2NC41IDE0NCAxNDQgMTQ0bDM1MiAwYzc5LjUgMCAxNDQtNjQuNSAxNDQtMTQ0cy02NC41LTE0NC0xNDQtMTQ0cy0xNDQgNjQuNS0xNDQgMTQ0YzAgMjkuNiA4LjkgNTcuMSAyNC4yIDgwbC0xMTIuNSAwek00OTYgMTYwYTgwIDgwIDAgMSAxIDAgMTYwIDgwIDgwIDAgMSAxIDAtMTYwelwiXVxufTtcbmNvbnN0IGZhRmFuID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZhbicsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjg2M1wiLCBcIk0yNTguNiAwYy0xLjcgMC0zLjQgLjEtNS4xIC41QzE2OCAxNyAxMTUuNiAxMDIuMyAxMzAuNSAxODkuM2MyLjkgMTcgOC40IDMyLjkgMTUuOSA0Ny40TDMyIDIyNGwtMi42IDBDMTMuMiAyMjQgMCAyMzcuMiAwIDI1My40YzAgMS43IC4xIDMuNCAuNSA1LjFDMTcgMzQ0IDEwMi4zIDM5Ni40IDE4OS4zIDM4MS41YzE3LTIuOSAzMi45LTguNCA0Ny40LTE1LjlMMjI0IDQ4MGwwIDIuNmMwIDE2LjIgMTMuMiAyOS40IDI5LjQgMjkuNGMxLjcgMCAzLjQtLjEgNS4xLS41QzM0NCA0OTUgMzk2LjQgNDA5LjcgMzgxLjUgMzIyLjdjLTIuOS0xNy04LjQtMzIuOS0xNS45LTQ3LjRMNDgwIDI4OGwyLjYgMGMxNi4yIDAgMjkuNC0xMy4yIDI5LjQtMjkuNGMwLTEuNy0uMS0zLjQtLjUtNS4xQzQ5NSAxNjggNDA5LjcgMTE1LjYgMzIyLjcgMTMwLjVjLTE3IDIuOS0zMi45IDguNC00Ny40IDE1LjlMMjg4IDMybDAtMi42QzI4OCAxMy4yIDI3NC44IDAgMjU4LjYgMHpNMjU2IDIyNGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJdXG59O1xuY29uc3QgZmFQZXJzb25XYWxraW5nTHVnZ2FnZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdwZXJzb24td2Fsa2luZy1sdWdnYWdlJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJlNTU0XCIsIFwiTTQzMiA5NmE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6TTM0Ny43IDIwMC41YzEtLjQgMS45LS44IDIuOS0xLjJsLTE2LjkgNjMuNWMtNS42IDIxLjEtLjEgNDMuNiAxNC43IDU5LjdsNzAuNyA3Ny4xIDIyIDg4LjFjNC4zIDE3LjEgMjEuNyAyNy42IDM4LjggMjMuM3MyNy42LTIxLjcgMjMuMy0zOC44bC0yMy05Mi4xYy0xLjktNy44LTUuOC0xNC45LTExLjItMjAuOGwtNDkuNS01NCAxOS4zLTY1LjUgOS42IDIzYzQuNCAxMC42IDEyLjUgMTkuMyAyMi44IDI0LjVsMjYuNyAxMy4zYzE1LjggNy45IDM1IDEuNSA0Mi45LTE0LjNzMS41LTM1LTE0LjMtNDIuOUw1MDUgMjMyLjdsLTE1LjMtMzYuOEM0NzIuNSAxNTQuOCA0MzIuMyAxMjggMzg3LjcgMTI4Yy0yMi44IDAtNDUuMyA0LjgtNjYuMSAxNGwtOCAzLjVjLTMyLjkgMTQuNi01OC4xIDQyLjQtNjkuNCA3Ni41bC0yLjYgNy44Yy01LjYgMTYuOCAzLjUgMzQuOSAyMC4yIDQwLjVzMzQuOS0zLjUgNDAuNS0yMC4ybDIuNi03LjhjNS43LTE3LjEgMTguMy0zMC45IDM0LjctMzguMmw4LTMuNXptLTMwIDEzNS4xbC0yNSA2Mi40LTU5LjQgNTkuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMEwzNDAuMyA0NDFjNC42LTQuNiA4LjItMTAuMSAxMC42LTE2LjFsMTQuNS0zNi4yLTQwLjctNDQuNGMtMi41LTIuNy00LjgtNS42LTctOC42ek0yNTYgMjc0LjFjLTcuNy00LjQtMTcuNC0xLjgtMjEuOSA1LjlsLTMyIDU1LjRMMTQ3LjcgMzA0Yy0xNS4zLTguOC0zNC45LTMuNi00My43IDExLjdMNDAgNDI2LjZjLTguOCAxNS4zLTMuNiAzNC45IDExLjcgNDMuN2w1NS40IDMyYzE1LjMgOC44IDM0LjkgMy42IDQzLjctMTEuN2w2NC0xMTAuOWMxLjUtMi42IDIuNi01LjIgMy4zLThMMjYxLjkgMjk2YzQuNC03LjcgMS44LTE3LjQtNS45LTIxLjl6XCJdXG59O1xuY29uc3QgZmFVcERvd24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndXAtZG93bicsXG4gIGljb246IFsyNTYsIDUxMiwgWzg1OTcsIDExMDIxLCBcImFycm93cy1hbHQtdlwiXSwgXCJmMzM4XCIsIFwiTTE0NS42IDcuN0MxNDEgMi44IDEzNC43IDAgMTI4IDBzLTEzIDIuOC0xNy42IDcuN2wtMTA0IDExMmMtNi41IDctOC4yIDE3LjItNC40IDI1LjlTMTQuNSAxNjAgMjQgMTYwbDU2IDAgMCAxOTItNTYgMGMtOS41IDAtMTguMiA1LjctMjIgMTQuNHMtMi4xIDE4LjkgNC40IDI1LjlsMTA0IDExMmM0LjUgNC45IDEwLjkgNy43IDE3LjYgNy43czEzLTIuOCAxNy42LTcuN2wxMDQtMTEyYzYuNS03IDguMi0xNy4yIDQuNC0yNS45cy0xMi41LTE0LjQtMjItMTQuNGwtNTYgMCAwLTE5MiA1NiAwYzkuNSAwIDE4LjItNS43IDIyLTE0LjRzMi4xLTE4LjktNC40LTI1LjlsLTEwNC0xMTJ6XCJdXG59O1xuY29uc3QgZmFBcnJvd3NBbHRWID0gZmFVcERvd247XG5jb25zdCBmYUNsb3VkTW9vblJhaW4gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2xvdWQtbW9vbi1yYWluJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmNzNjXCIsIFwiTTQ4MS4yIDBDNDE3IDAgMzYzLjUgNDYuNSAzNTMuNyAxMDcuNmMzNS40IDE3LjYgNjAuMiA1My4zIDYyLjEgOTUuMWMyMy4yIDExIDQyIDI5LjcgNTMuMSA1Mi43YzQgLjQgOC4xIC42IDEyLjMgLjZjMzQuOSAwIDY2LjctMTMuOCA4OS45LTM2LjFjNS4xLTQuOSA2LjQtMTIuNSAzLjItMTguN3MtMTAuMS05LjctMTctOC42Yy00LjkgLjgtMTAgMS4zLTE1LjIgMS4zYy00OSAwLTg4LjQtMzkuMy04OC40LTg3LjRjMC0zMi42IDE4LTYxLjEgNDQuOS03Ni4xYzYuMS0zLjQgOS4zLTEwLjUgNy44LTE3LjRzLTcuMy0xMi0xNC4zLTEyLjZjLTMuNi0uMy03LjMtLjUtMTAuOS0uNXpNMzY3LjkgMzgzLjljNDQuMiAwIDgwLTM1LjggODAtODBjMC0zOS4zLTI4LjQtNzIuMS02NS44LTc4LjdjMS4yLTUuNiAxLjktMTEuMyAxLjktMTcuMmMwLTQ0LjItMzUuOC04MC04MC04MGMtMTcgMC0zMi44IDUuMy00NS44IDE0LjRDMjQxLjMgMTE0LjYgMjEwLjggOTYgMTc2IDk2Yy01MyAwLTk2IDQzLTk2IDk2bDAgMS4zYy00NS40IDcuNi04MCA0Ny4xLTgwIDk0LjZjMCA1MyA0MyA5NiA5NiA5NmwyNzEuOSAwek04NS40IDQyMC4xYy0xMS03LjQtMjUuOS00LjQtMzMuMyA2LjdsLTMyIDQ4Yy03LjQgMTEtNC40IDI1LjkgNi43IDMzLjNzMjUuOSA0LjQgMzMuMy02LjdsMzItNDhjNy40LTExIDQuNC0yNS45LTYuNy0zMy4zem05NiAwYy0xMS03LjQtMjUuOS00LjQtMzMuMyA2LjdsLTMyIDQ4Yy03LjQgMTEtNC40IDI1LjkgNi43IDMzLjNzMjUuOSA0LjQgMzMuMy02LjdsMzItNDhjNy40LTExIDQuNC0yNS45LTYuNy0zMy4zem05NiAwYy0xMS03LjQtMjUuOS00LjQtMzMuMyA2LjdsLTMyIDQ4Yy03LjQgMTEtNC40IDI1LjkgNi43IDMzLjNzMjUuOSA0LjQgMzMuMy02LjdsMzItNDhjNy40LTExIDQuNC0yNS45LTYuNy0zMy4zem05NiAwYy0xMS03LjQtMjUuOS00LjQtMzMuMyA2LjdsLTMyIDQ4Yy03LjQgMTEtNC40IDI1LjkgNi43IDMzLjNzMjUuOSA0LjQgMzMuMy02LjdsMzItNDhjNy40LTExIDQuNC0yNS45LTYuNy0zMy4zelwiXVxufTtcbmNvbnN0IGZhQ2FsZW5kYXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY2FsZW5kYXInLFxuICBpY29uOiBbNDQ4LCA1MTIsIFsxMjgxOTcsIDEyODE5OF0sIFwiZjEzM1wiLCBcIk05NiAzMmwwIDMyTDQ4IDY0QzIxLjUgNjQgMCA4NS41IDAgMTEybDAgNDggNDQ4IDAgMC00OGMwLTI2LjUtMjEuNS00OC00OC00OGwtNDggMCAwLTMyYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMybDAgMzJMMTYwIDY0bDAtMzJjMC0xNy43LTE0LjMtMzItMzItMzJTOTYgMTQuMyA5NiAzMnpNNDQ4IDE5MkwwIDE5MiAwIDQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGwzNTIgMGMyNi41IDAgNDgtMjEuNSA0OC00OGwwLTI3MnpcIl1cbn07XG5jb25zdCBmYVRyYWlsZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndHJhaWxlcicsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTA0MVwiLCBcIk00OCAzMkMyMS41IDMyIDAgNTMuNSAwIDgwTDAgMzM2YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4bDE3LjEgMGM3LjgtNTQuMyA1NC40LTk2IDExMC45LTk2czEwMy4xIDQxLjcgMTEwLjkgOTZMNDg4IDM4NGw4IDAgMTEyIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTY0IDAgMC0yNDBjMC0yNi41LTIxLjUtNDgtNDgtNDhMNDggMzJ6TTgwIDk2YzguOCAwIDE2IDcuMiAxNiAxNmwwIDEzMS4yYy0xMS40IDUuOS0yMi4yIDEyLjktMzIgMjFMNjQgMTEyYzAtOC44IDcuMi0xNiAxNi0xNnptOTYgMTI4Yy01LjQgMC0xMC43IC4yLTE2IC43TDE2MCAxMTJjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNmwwIDExMi43Yy01LjMtLjUtMTAuNi0uNy0xNi0uN3ptODAgMTkuMkwyNTYgMTEyYzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZsMCAxNTIuMmMtOS44LTguMS0yMC42LTE1LjItMzItMjF6TTM2OCA5NmM4LjggMCAxNiA3LjIgMTYgMTZsMCAxOTJjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZsMC0xOTJjMC04LjggNy4yLTE2IDE2LTE2em0xMTIgMTZsMCAxOTJjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZsMC0xOTJjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnpNMTc2IDQ4MGE4MCA4MCAwIDEgMCAwLTE2MCA4MCA4MCAwIDEgMCAwIDE2MHptMC0xMTJhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0elwiXVxufTtcbmNvbnN0IGZhQmFoYWkgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYmFoYWknLFxuICBpY29uOiBbNTc2LCA1MTIsIFtcImhheWthbFwiXSwgXCJmNjY2XCIsIFwiTTI4OCAwYzE0LjUgMCAyNy4yIDkuNyAzMC45IDIzLjhsMjMuOSA4OS42IDc1LjktNTMuM2MxMS45LTguMyAyNy44LTcuNiAzOSAxLjdzMTQuNiAyNC45IDguNCAzOC4xbC0zOS4zIDg0IDkyLjQgOGMxNC40IDEuMiAyNi4yIDEyIDI4LjggMjYuM3MtNC45IDI4LjUtMTggMzQuNmwtODQuMSAzOS4xIDY1LjcgNjUuNWMxMC4zIDEwLjIgMTIuNCAyNi4xIDUuMSAzOC43cy0yMiAxOC43LTM2IDE0LjlMMzkxIDM4Ni44bDguMiA5Mi40YzEuMyAxNC40LTcuMyAyNy45LTIwLjkgMzIuOXMtMjguOSAuMS0zNy4yLTExLjdsLTUzLjEtNzYtNTMuMSA3NmMtOC4zIDExLjktMjMuNiAxNi43LTM3LjIgMTEuN3MtMjIuMi0xOC41LTIwLjktMzIuOWw4LjItOTIuNEw5NS40IDQxMC45Yy0xNCAzLjgtMjguOC0yLjMtMzYtMTQuOXMtNS4yLTI4LjQgNS4xLTM4LjdsNjUuNy02NS41TDQ2IDI1Mi43Yy0xMy4xLTYuMS0yMC41LTIwLjMtMTgtMzQuNnMxNC4zLTI1LjEgMjguOC0yNi4zbDkyLjQtOC0zOS4zLTg0Yy02LjEtMTMuMS0yLjctMjguOCA4LjQtMzguMXMyNy4xLTEwIDM5LTEuN2w3NS45IDUzLjMgMjMuOS04OS42QzI2MC44IDkuNyAyNzMuNSAwIDI4OCAwem0wIDE1Ni4ybC00LjggMThjLTIuNyAxMC4xLTEwLjIgMTguMi0yMCAyMS44cy0yMC44IDIuMS0yOS4zLTMuOWwtMTUuMi0xMC43IDcuOSAxNi44YzQuNCA5LjUgNCAyMC41LTEuMyAyOS42cy0xNC41IDE1LTI1IDE1LjlsLTE4LjUgMS42IDE2LjggNy44YzkuNSA0LjQgMTYuMiAxMy4yIDE4IDIzLjVzLTEuNSAyMC44LTguOSAyOC4ybC0xMy4yIDEzLjEgMTcuOS00LjhjMTAuMS0yLjcgMjAuOS0uMyAyOC45IDYuNHMxMi4yIDE2LjkgMTEuMyAyNy4zbC0xLjYgMTguNSAxMC42LTE1LjJjNi04LjYgMTUuOC0xMy43IDI2LjItMTMuN3MyMC4yIDUuMSAyNi4yIDEzLjdsMTAuNiAxNS4yLTEuNi0xOC41Yy0uOS0xMC40IDMuMy0yMC42IDExLjMtMjcuM3MxOC44LTkuMSAyOC45LTYuNGwxNy45IDQuOC0xMy4yLTEzLjFjLTcuNC03LjQtMTAuNy0xNy45LTguOS0yOC4yczguNS0xOS4xIDE4LTIzLjVsMTYuOC03LjgtMTguNS0xLjZjLTEwLjQtLjktMTkuNy02LjgtMjUtMTUuOXMtNS43LTIwLjEtMS4zLTI5LjZsNy45LTE2LjgtMTUuMiAxMC43Yy04LjYgNi0xOS41IDcuNS0yOS4zIDMuOXMtMTcuMy0xMS43LTIwLTIxLjhsLTQuOC0xOHpcIl1cbn07XG5jb25zdCBmYUhheWthbCA9IGZhQmFoYWk7XG5jb25zdCBmYVNkQ2FyZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzZC1jYXJkJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmN2MyXCIsIFwiTTMyMCAwTDE0MS4zIDBDMTI0LjMgMCAxMDggNi43IDk2IDE4LjdMMTguNyA5NkM2LjcgMTA4IDAgMTI0LjMgMCAxNDEuM0wwIDQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NGwyNTYgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTM4NGMwLTM1LjMtMjguNy02NC02NC02NHpNMTYwIDg4bDAgNDhjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRsMC00OGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0em04MCAwbDAgNDhjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRsMC00OGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0em04MCAwbDAgNDhjMCAxMy4zLTEwLjcgMjQtMjQgMjRzLTI0LTEwLjctMjQtMjRsMC00OGMwLTEzLjMgMTAuNy0yNCAyNC0yNHMyNCAxMC43IDI0IDI0elwiXVxufTtcbmNvbnN0IGZhRHJhZ29uID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2RyYWdvbicsXG4gIGljb246IFs2NDAsIDUxMiwgWzEyODAwOV0sIFwiZjZkNVwiLCBcIk0zNTIgMTI0LjVsLTUxLjktMTNjLTYuNS0xLjYtMTEuMy03LjEtMTItMTMuOHMyLjgtMTMuMSA4LjctMTYuMWw0MC44LTIwLjRMMjk0LjQgMjguOGMtNS41LTQuMS03LjgtMTEuMy01LjYtMTcuOVMyOTcuMSAwIDMwNCAwTDQxNiAwbDMyIDAgMTYgMGMzMC4yIDAgNTguNyAxNC4yIDc2LjggMzguNGw1Ny42IDc2LjhjNi4yIDguMyA5LjYgMTguNCA5LjYgMjguOGMwIDI2LjUtMjEuNSA0OC00OCA0OGwtMjEuNSAwYy0xNyAwLTMzLjMtNi43LTQ1LjMtMTguN0w0ODAgMTYwbC0zMiAwIDAgMjEuNWMwIDI0LjggMTIuOCA0Ny45IDMzLjggNjEuMWwxMDYuNiA2Ni42YzMyLjEgMjAuMSA1MS42IDU1LjIgNTEuNiA5My4xQzY0MCA0NjIuOSA1OTAuOSA1MTIgNTMwLjIgNTEyTDQ5NiA1MTJsLTY0IDBMMzIuMyA1MTJjLTMuMyAwLTYuNi0uNC05LjYtMS40QzEzLjUgNTA3LjggNiA1MDEgMi40IDQ5Mi4xQzEgNDg4LjcgLjIgNDg1LjIgMCA0ODEuNGMtLjItMy43IC4zLTcuMyAxLjMtMTAuN2MyLjgtOS4yIDkuNi0xNi43IDE4LjYtMjAuNGMzLTEuMiA2LjItMiA5LjUtMi4yTDQzMy4zIDQxMmM4LjMtLjcgMTQuNy03LjcgMTQuNy0xNi4xYzAtNC4zLTEuNy04LjQtNC43LTExLjRsLTQ0LjQtNDQuNGMtMzAtMzAtNDYuOS03MC43LTQ2LjktMTEzLjFsMC00NS41IDAtNTd6TTUxMiA3Mi4zYzAtLjEgMC0uMiAwLS4zczAtLjIgMC0uM2wwIC42em0tMS4zIDcuNEw0NjQuMyA2OC4xYy0uMiAxLjMtLjMgMi42LS4zIDMuOWMwIDEzLjMgMTAuNyAyNCAyNCAyNGMxMC42IDAgMTkuNS02LjggMjIuNy0xNi4zek0xMzAuOSAxMTYuNWMxNi4zLTE0LjUgNDAuNC0xNi4yIDU4LjUtNC4xbDEzMC42IDg3IDAgMjcuNWMwIDMyLjggOC40IDY0LjggMjQgOTNsLTIzMiAwYy02LjcgMC0xMi43LTQuMi0xNS0xMC40cy0uNS0xMy4zIDQuNi0xNy43TDE3MSAyMzIuMyAxOC40IDI1NS44Yy03IDEuMS0xMy45LTIuNi0xNi45LTlzLTEuNS0xNC4xIDMuOC0xOC44TDEzMC45IDExNi41elwiXVxufTtcbmNvbnN0IGZhU2hvZVByaW50cyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzaG9lLXByaW50cycsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjU0YlwiLCBcIk00MTYgMEMzNTIuMyAwIDI1NiAzMiAyNTYgMzJsMCAxMjhjNDggMCA3NiAxNiAxMDQgMzJzNTYgMzIgMTA0IDMyYzU2LjQgMCAxNzYtMTYgMTc2LTk2UzUxMiAwIDQxNiAwek0xMjggOTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzIgMCAwLTEyOC0zMiAwYy0zNS4zIDAtNjQgMjguNy02NCA2NHpNMjg4IDUxMmM5NiAwIDIyNC00OCAyMjQtMTI4cy0xMTkuNi05Ni0xNzYtOTZjLTQ4IDAtNzYgMTYtMTA0IDMycy01NiAzMi0xMDQgMzJsMCAxMjhzOTYuMyAzMiAxNjAgMzJ6TTAgNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0bDMyIDAgMC0xMjgtMzIgMGMtMzUuMyAwLTY0IDI4LjctNjQgNjR6XCJdXG59O1xuY29uc3QgZmFDaXJjbGVQbHVzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NpcmNsZS1wbHVzJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXCJwbHVzLWNpcmNsZVwiXSwgXCJmMDU1XCIsIFwiTTI1NiA1MTJBMjU2IDI1NiAwIDEgMCAyNTYgMGEyNTYgMjU2IDAgMSAwIDAgNTEyek0yMzIgMzQ0bDAtNjQtNjQgMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGw2NCAwIDAtNjRjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNGwwIDY0IDY0IDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRsLTY0IDAgMCA2NGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNHpcIl1cbn07XG5jb25zdCBmYVBsdXNDaXJjbGUgPSBmYUNpcmNsZVBsdXM7XG5jb25zdCBmYUZhY2VHcmluVG9uZ3VlV2luayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmYWNlLWdyaW4tdG9uZ3VlLXdpbmsnLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjg1NDAsIFwiZ3Jpbi10b25ndWUtd2lua1wiXSwgXCJmNThiXCIsIFwiTTE3NC41IDQ5OC44QzczLjEgNDY0LjcgMCAzNjguOSAwIDI1NkMwIDExNC42IDExNC42IDAgMjU2IDBTNTEyIDExNC42IDUxMiAyNTZjMCAxMTIuOS03My4xIDIwOC43LTE3NC41IDI0Mi44QzM0Ni43IDQ4NCAzNTIgNDY2LjYgMzUyIDQ0OGwwLTQ2LjljMjQuMy0xNy41IDQzLjYtNDEuNiA1NS40LTY5LjZjNS0xMS44LTctMjIuNS0xOS4zLTE4LjdjLTM5LjcgMTIuMi04NC41IDE5LTEzMS44IDE5cy05Mi4xLTYuOC0xMzEuOC0xOWMtMTIuMy0zLjgtMjQuMyA2LjktMTkuMyAxOC43YzExLjcgMjcuOCAzMC44IDUxLjcgNTQuOCA2OS4ybDAgNDcuM2MwIDE4LjYgNS4zIDM2IDE0LjUgNTAuOHptMjAuNy0yNjUuMmM1LjMgNy4xIDE1LjMgOC41IDIyLjQgMy4yczguNS0xNS4zIDMuMi0yMi40Yy0zMC40LTQwLjUtOTEuMi00MC41LTEyMS42IDBjLTUuMyA3LjEtMy45IDE3LjEgMy4yIDIyLjRzMTcuMSAzLjkgMjIuNC0zLjJjMTcuNi0yMy41IDUyLjgtMjMuNSA3MC40IDB6TTMzNiAyNzJhNjQgNjQgMCAxIDAgMC0xMjggNjQgNjQgMCAxIDAgMCAxMjh6TTMyMCA0MDIuNmwwIDQ1LjRjMCAzNS4zLTI4LjcgNjQtNjQgNjRzLTY0LTI4LjctNjQtNjRsMC00NS40YzAtMTQuNyAxMS45LTI2LjYgMjYuNi0yNi42bDIgMGMxMS4zIDAgMjEuMSA3LjkgMjMuNiAxOC45YzIuOCAxMi42IDIwLjggMTIuNiAyMy42IDBjMi41LTExLjEgMTIuMy0xOC45IDIzLjYtMTguOWwyIDBjMTQuNyAwIDI2LjYgMTEuOSAyNi42IDI2LjZ6TTMzNiAxODRhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4elwiXVxufTtcbmNvbnN0IGZhR3JpblRvbmd1ZVdpbmsgPSBmYUZhY2VHcmluVG9uZ3VlV2luaztcbmNvbnN0IGZhSGFuZEhvbGRpbmcgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGFuZC1ob2xkaW5nJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmNGJkXCIsIFwiTTU1OS43IDM5Mi4yYzE3LjgtMTMuMSAyMS42LTM4LjEgOC41LTU1LjlzLTM4LjEtMjEuNi01NS45LTguNUwzOTIuNiA0MTYgMjcyIDQxNmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmwxNiAwIDY0IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTY0IDAtMTYgMC03OC4zIDBjLTI5LjEgMC01Ny4zIDkuOS04MCAyOEw2OC44IDM4NCAzMiAzODRjLTE3LjcgMC0zMiAxNC4zLTMyIDMybDAgNjRjMCAxNy43IDE0LjMgMzIgMzIgMzJsMTYwIDAgMTYwLjUgMGMyOSAwIDU3LjMtOS4zIDgwLjctMjYuNWwxMjYuNi05My4zem0tMzY3LTguMmMuMyAwIC42IDAgLjkgMGMwIDAgMCAwIDAgMGMtLjMgMC0uNiAwLS45IDB6XCJdXG59O1xuY29uc3QgZmFQbHVnQ2lyY2xlRXhjbGFtYXRpb24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGx1Zy1jaXJjbGUtZXhjbGFtYXRpb24nLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImU1NWRcIiwgXCJNOTYgMEM3OC4zIDAgNjQgMTQuMyA2NCAzMmwwIDk2IDY0IDAgMC05NmMwLTE3LjctMTQuMy0zMi0zMi0zMnpNMjg4IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMybDAgOTYgNjQgMCAwLTk2YzAtMTcuNy0xNC4zLTMyLTMyLTMyek0zMiAxNjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsMCAzMmMwIDc3LjQgNTUgMTQyIDEyOCAxNTYuOGwwIDY3LjJjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTY3LjJjMTIuMy0yLjUgMjQuMS02LjQgMzUuMS0xMS41Yy0yLjEtMTAuOC0zLjEtMjEuOS0zLjEtMzMuM2MwLTgwLjMgNTMuOC0xNDggMTI3LjMtMTY5LjJjLjUtMi4yIC43LTQuNSAuNy02LjhjMC0xNy43LTE0LjMtMzItMzItMzJMMzIgMTYwek00MzIgNTEyYTE0NCAxNDQgMCAxIDAgMC0yODggMTQ0IDE0NCAwIDEgMCAwIDI4OHptMC05NmEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6bTAtMTQ0YzguOCAwIDE2IDcuMiAxNiAxNmwwIDgwYzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2bDAtODBjMC04LjggNy4yLTE2IDE2LTE2elwiXVxufTtcbmNvbnN0IGZhTGlua1NsYXNoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2xpbmstc2xhc2gnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtcImNoYWluLWJyb2tlblwiLCBcImNoYWluLXNsYXNoXCIsIFwidW5saW5rXCJdLCBcImYxMjdcIiwgXCJNMzguOCA1LjFDMjguNC0zLjEgMTMuMy0xLjIgNS4xIDkuMlMtMS4yIDM0LjcgOS4yIDQyLjlsNTkyIDQ2NGMxMC40IDguMiAyNS41IDYuMyAzMy43LTQuMXM2LjMtMjUuNS00LjEtMzMuN0w0ODkuMyAzNTguMmw5MC41LTkwLjVjNTYuNS01Ni41IDU2LjUtMTQ4IDAtMjA0LjVjLTUwLTUwLTEyOC44LTU2LjUtMTg2LjMtMTUuNGwtMS42IDEuMWMtMTQuNCAxMC4zLTE3LjcgMzAuMy03LjQgNDQuNnMzMC4zIDE3LjcgNDQuNiA3LjRsMS42LTEuMWMzMi4xLTIyLjkgNzYtMTkuMyAxMDMuOCA4LjZjMzEuNSAzMS41IDMxLjUgODIuNSAwIDExNGwtOTYgOTYtMzEuOS0yNUM0MzAuOSAyMzkuNiA0MjAuMSAxNzUuMSAzNzcgMTMyYy01Mi4yLTUyLjMtMTM0LjUtNTYuMi0xOTEuMy0xMS43TDM4LjggNS4xek0yMzkgMTYyYzMwLjEtMTQuOSA2Ny43LTkuOSA5Mi44IDE1LjNjMjAgMjAgMjcuNSA0OC4zIDIxLjcgNzQuNUwyMzkgMTYyek00MDYuNiA0MTYuNEwyMjAuOSAyNzBjLTIuMSAzOS44IDEyLjIgODAuMSA0Mi4yIDExMGMzOC45IDM4LjkgOTQuNCA1MSAxNDMuNiAzNi4zem0tMjkwLTIyOC41TDYwLjIgMjQ0LjNjLTU2LjUgNTYuNS01Ni41IDE0OCAwIDIwNC41YzUwIDUwIDEyOC44IDU2LjUgMTg2LjMgMTUuNGwxLjYtMS4xYzE0LjQtMTAuMyAxNy43LTMwLjMgNy40LTQ0LjZzLTMwLjMtMTcuNy00NC42LTcuNGwtMS42IDEuMWMtMzIuMSAyMi45LTc2IDE5LjMtMTAzLjgtOC42Qzc0IDM3MiA3NCAzMjEgMTA1LjUgMjg5LjVsNjEuOC02MS44LTUwLjYtMzkuOXpcIl1cbn07XG5jb25zdCBmYUNoYWluQnJva2VuID0gZmFMaW5rU2xhc2g7XG5jb25zdCBmYUNoYWluU2xhc2ggPSBmYUxpbmtTbGFzaDtcbmNvbnN0IGZhVW5saW5rID0gZmFMaW5rU2xhc2g7XG5jb25zdCBmYUNsb25lID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Nsb25lJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMjRkXCIsIFwiTTI4OCA0NDhMNjQgNDQ4bDAtMjI0IDY0IDAgMC02NC02NCAwYy0zNS4zIDAtNjQgMjguNy02NCA2NEwwIDQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NGwyMjQgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTY0LTY0IDAgMCA2NHptLTY0LTk2bDIyNCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMjI0YzAtMzUuMy0yOC43LTY0LTY0LTY0TDIyNCAwYy0zNS4zIDAtNjQgMjguNy02NCA2NGwwIDIyNGMwIDM1LjMgMjguNyA2NCA2NCA2NHpcIl1cbn07XG5jb25zdCBmYVBlcnNvbldhbGtpbmdBcnJvd0xvb3BMZWZ0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BlcnNvbi13YWxraW5nLWFycm93LWxvb3AtbGVmdCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTU1MVwiLCBcIk0yMDggOTZhNDggNDggMCAxIDAgMC05NiA0OCA0OCAwIDEgMCAwIDk2ek0xMjMuNyAyMDAuNWMxLS40IDEuOS0uOCAyLjktMS4ybC0xNi45IDYzLjVjLTUuNiAyMS4xLS4xIDQzLjYgMTQuNyA1OS43bDcwLjcgNzcuMSAyMiA4OC4xYzQuMyAxNy4xIDIxLjcgMjcuNiAzOC44IDIzLjNzMjcuNi0yMS43IDIzLjMtMzguOGwtMjMtOTIuMWMtMS45LTcuOC01LjgtMTQuOS0xMS4yLTIwLjhsLTQ5LjUtNTQgMTkuMy02NS41IDkuNiAyM2M0LjQgMTAuNiAxMi41IDE5LjMgMjIuOCAyNC41bDI2LjcgMTMuM2MxNS44IDcuOSAzNSAxLjUgNDIuOS0xNC4zczEuNS0zNS0xNC4zLTQyLjlMMjgxIDIzMi43bC0xNS4zLTM2LjhDMjQ4LjUgMTU0LjggMjA4LjMgMTI4IDE2My43IDEyOGMtMjIuOCAwLTQ1LjMgNC44LTY2LjEgMTRsLTggMy41Yy0zMi45IDE0LjYtNTguMSA0Mi40LTY5LjQgNzYuNWwtMi42IDcuOGMtNS42IDE2LjggMy41IDM0LjkgMjAuMiA0MC41czM0LjktMy41IDQwLjUtMjAuMmwyLjYtNy44YzUuNy0xNy4xIDE4LjMtMzAuOSAzNC43LTM4LjJsOC0zLjV6bS0zMCAxMzUuMUw2OC43IDM5OCA5LjQgNDU3LjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zczMyLjggMTIuNSA0NS4zIDBMMTE2LjMgNDQxYzQuNi00LjYgOC4yLTEwLjEgMTAuNi0xNi4xbDE0LjUtMzYuMi00MC43LTQ0LjRjLTIuNS0yLjctNC44LTUuNi03LTguNnptMzQ3LjcgMTE5YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNMNDYxLjMgMzg0bDE4LjcgMGM4OC40IDAgMTYwLTcxLjYgMTYwLTE2MHMtNzEuNi0xNjAtMTYwLTE2MEwzNTIgNjRjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsMTI4IDBjNTMgMCA5NiA0MyA5NiA5NnMtNDMgOTYtOTYgOTZsLTE4LjcgMCAyNS40LTI1LjRjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBsLTgwIDgwYy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM2w4MCA4MHpcIl1cbn07XG5jb25zdCBmYUFycm93VXBaQSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhcnJvdy11cC16LWEnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtcInNvcnQtYWxwaGEtdXAtYWx0XCJdLCBcImY4ODJcIiwgXCJNMTgzLjYgNDIuNEMxNzcuNSAzNS44IDE2OSAzMiAxNjAgMzJzLTE3LjUgMy44LTIzLjYgMTAuNGwtODggOTZjLTExLjkgMTMtMTEuMSAzMy4zIDIgNDUuMnMzMy4zIDExLjEgNDUuMi0yTDEyOCAxNDYuMyAxMjggNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0zMDEuNyAzMi40IDM1LjRjMTEuOSAxMyAzMi4yIDEzLjkgNDUuMiAyczEzLjktMzIuMiAyLTQ1LjJsLTg4LTk2ek0zMjAgNjRjMCAxNy43IDE0LjMgMzIgMzIgMzJsNTAuNyAwLTczLjQgNzMuNGMtOS4yIDkuMi0xMS45IDIyLjktNi45IDM0LjlzMTYuNiAxOS44IDI5LjYgMTkuOGwxMjggMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtNTAuNyAwIDczLjQtNzMuNGM5LjItOS4yIDExLjktMjIuOSA2LjktMzQuOXMtMTYuNi0xOS44LTI5LjYtMTkuOEwzNTIgMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyem05NiAxOTJjLTEyLjEgMC0yMy4yIDYuOC0yOC42IDE3LjdsLTY0IDEyOC0xNiAzMmMtNy45IDE1LjgtMS41IDM1IDE0LjMgNDIuOXMzNSAxLjUgNDIuOS0xNC4zbDcuMi0xNC4zIDg4LjQgMCA3LjIgMTQuM2M3LjkgMTUuOCAyNy4xIDIyLjIgNDIuOSAxNC4zczIyLjItMjcuMSAxNC4zLTQyLjlsLTE2LTMyLTY0LTEyOEM0MzkuMiAyNjIuOCA0MjguMSAyNTYgNDE2IDI1NnpNMzk1LjggNDAwTDQxNiAzNTkuNiA0MzYuMiA0MDBsLTQwLjQgMHpcIl1cbn07XG5jb25zdCBmYVNvcnRBbHBoYVVwQWx0ID0gZmFBcnJvd1VwWkE7XG5jb25zdCBmYUZpcmVGbGFtZUN1cnZlZCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdmaXJlLWZsYW1lLWN1cnZlZCcsXG4gIGljb246IFszODQsIDUxMiwgW1wiZmlyZS1hbHRcIl0sIFwiZjdlNFwiLCBcIk0xNTMuNiAyOS45bDE2LTIxLjNDMTczLjYgMy4yIDE4MCAwIDE4Ni43IDBDMTk4LjQgMCAyMDggOS42IDIwOCAyMS4zVjQzLjVjMCAxMy4xIDUuNCAyNS43IDE0LjkgMzQuN0wzMDcuNiAxNTlDMzU2LjQgMjA1LjYgMzg0IDI3MC4yIDM4NCAzMzcuN0MzODQgNDM0IDMwNiA1MTIgMjA5LjcgNTEySDE5MkM4NiA1MTIgMCA0MjYgMCAzMjB2LTMuOGMwLTQ4LjggMTkuNC05NS42IDUzLjktMTMwLjFsMy41LTMuNWM0LjItNC4yIDEwLTYuNiAxNi02LjZDODUuOSAxNzYgOTYgMTg2LjEgOTYgMTk4LjZWMjg4YzAgMzUuMyAyOC43IDY0IDY0IDY0czY0LTI4LjcgNjQtNjR2LTMuOWMwLTE4LTcuMi0zNS4zLTE5LjktNDhsLTM4LjYtMzguNmMtMjQtMjQtMzcuNS01Ni43LTM3LjUtOTAuN2MwLTI3LjcgOS01NC44IDI1LjYtNzYuOXpcIl1cbn07XG5jb25zdCBmYUZpcmVBbHQgPSBmYUZpcmVGbGFtZUN1cnZlZDtcbmNvbnN0IGZhVG9ybmFkbyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0b3JuYWRvJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbMTI3Nzg2XSwgXCJmNzZmXCIsIFwiTTAgMzJMMCA0NS42QzAgNjIuNyAxLjcgNzkuNiA1IDk2bDM1Mi44IDBjMy4yLTYuOSA3LjUtMTMuMyAxMy0xOC44bDM4LjYtMzguNmM0LjItNC4yIDYuNi0xMCA2LjYtMTZDNDE2IDEwLjEgNDA1LjkgMCAzOTMuNCAwTDMyIDBDMTQuMyAwIDAgMTQuMyAwIDMyem0zNTIuMiA5NkwxMy42IDEyOGMxMi4yIDM1LjkgMzIuMyA2OC43IDU4LjggOTZMNDEyIDIyNGwtNDcuMi02Mi45Yy03LjMtOS43LTExLjYtMjEuMi0xMi42LTMzLjF6bS0yMjYgMTM4LjJsMTE2LjQgNjguNWM4LjIgNC44IDE1LjggMTAuNyAyMi41IDE3LjNMNDQ1IDM1MmMyLTkuOCAzLTE5LjkgMy0zMC4xYzAtMjMtNS4zLTQ1LjUtMTUuMy02NS45bC0zMjIuNSAwYzUuMiAzLjYgMTAuNSA3IDE2IDEwLjJ6TTI4OCAzODRjMTAuMyAyMS40IDEzLjggNDUuNSA5LjkgNjlsLTUuOSAzNS43Yy0yIDEyLjIgNy40IDIzLjQgMTkuOCAyMy40YzUuMyAwIDEwLjQtMi4xIDE0LjItNS45bDc4LjItNzguMmMxMi44LTEyLjggMjMuMS0yNy43IDMwLjQtNDMuOUwyODggMzg0elwiXVxufTtcbmNvbnN0IGZhRmlsZUNpcmNsZVBsdXMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmlsZS1jaXJjbGUtcGx1cycsXG4gIGljb246IFs1NzYsIDUxMiwgWzU4NjA2XSwgXCJlNDk0XCIsIFwiTTAgNjRDMCAyOC43IDI4LjcgMCA2NCAwTDIyNCAwbDAgMTI4YzAgMTcuNyAxNC4zIDMyIDMyIDMybDEyOCAwIDAgMzguNkMzMTAuMSAyMTkuNSAyNTYgMjg3LjQgMjU2IDM2OGMwIDU5LjEgMjkuMSAxMTEuMyA3My43IDE0My4zYy0zLjIgLjUtNi40IC43LTkuNyAuN0w2NCA1MTJjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgNjR6bTM4NCA2NGwtMTI4IDBMMjU2IDAgMzg0IDEyOHptNDggOTZhMTQ0IDE0NCAwIDEgMSAwIDI4OCAxNDQgMTQ0IDAgMSAxIDAtMjg4em0xNiA4MGMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNmwwIDQ4LTQ4IDBjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZsNDggMCAwIDQ4YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZsMC00OCA0OCAwYzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2bC00OCAwIDAtNDh6XCJdXG59O1xuY29uc3QgZmFCb29rUXVyYW4gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYm9vay1xdXJhbicsXG4gIGljb246IFs0NDgsIDUxMiwgW1wicXVyYW5cIl0sIFwiZjY4N1wiLCBcIk0zNTIgMGM1MyAwIDk2IDQzIDk2IDk2bDAgMzIwYzAgNTMtNDMgOTYtOTYgOTZMNjQgNTEybC0zMiAwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDAtNjRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyTDAgMzJDMCAxNC4zIDE0LjMgMCAzMiAwTDY0IDAgMzUyIDB6bTAgMzg0TDk2IDM4NGwwIDY0IDI1NiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyek0yNzQuMSAxNTAuMmwtOC45IDIxLjQtMjMuMSAxLjljLTUuNyAuNS04IDcuNS0zLjcgMTEuMkwyNTYgMTk5LjhsLTUuNCAyMi42Yy0xLjMgNS41IDQuNyA5LjkgOS42IDYuOUwyODAgMjE3LjJsMTkuOCAxMi4xYzQuOSAzIDEwLjktMS40IDkuNi02LjlMMzA0IDE5OS44bDE3LjYtMTUuMWM0LjMtMy43IDItMTAuOC0zLjctMTEuMmwtMjMuMS0xLjktOC45LTIxLjRjLTIuMi01LjMtOS42LTUuMy0xMS44IDB6TTk2IDE5MmMwIDcwLjcgNTcuMyAxMjggMTI4IDEyOGMyNS42IDAgNDkuNS03LjUgNjkuNS0yMC41YzMuMi0yLjEgNC41LTYuMiAzLjEtOS43cy01LjItNS42LTktNC44Yy02LjEgMS4yLTEyLjUgMS45LTE5IDEuOWMtNTIuNCAwLTk0LjktNDIuNS05NC45LTk0LjlzNDIuNS05NC45IDk0LjktOTQuOWM2LjUgMCAxMi44IC43IDE5IDEuOWMzLjggLjggNy41LTEuMyA5LTQuOHMuMi03LjYtMy4xLTkuN0MyNzMuNSA3MS41IDI0OS42IDY0IDIyNCA2NEMxNTMuMyA2NCA5NiAxMjEuMyA5NiAxOTJ6XCJdXG59O1xuY29uc3QgZmFRdXJhbiA9IGZhQm9va1F1cmFuO1xuY29uc3QgZmFBbmNob3IgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYW5jaG9yJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbOTg3NV0sIFwiZjEzZFwiLCBcIk0zMjAgOTZhMzIgMzIgMCAxIDEgLTY0IDAgMzIgMzIgMCAxIDEgNjQgMHptMjEuMSA4MEMzNjcgMTU4LjggMzg0IDEyOS40IDM4NCA5NmMwLTUzLTQzLTk2LTk2LTk2cy05NiA0My05NiA5NmMwIDMzLjQgMTcgNjIuOCA0Mi45IDgwTDIyNCAxNzZjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsMzIgMCAwIDIwOC00OCAwYy01MyAwLTk2LTQzLTk2LTk2bDAtNi4xIDcgN2M5LjQgOS40IDI0LjYgOS40IDMzLjkgMHM5LjQtMjQuNiAwLTMzLjlMOTcgMjYzYy05LjQtOS40LTI0LjYtOS40LTMzLjkgMEw3IDMxOWMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwbDctNyAwIDYuMWMwIDg4LjQgNzEuNiAxNjAgMTYwIDE2MGw4MCAwIDgwIDBjODguNCAwIDE2MC03MS42IDE2MC0xNjBsMC02LjEgNyA3YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwczkuNC0yNC42IDAtMzMuOWwtNTYtNTZjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwbC01NiA1NmMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwbDctNyAwIDYuMWMwIDUzLTQzIDk2LTk2IDk2bC00OCAwIDAtMjA4IDMyIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTEwLjkgMHpcIl1cbn07XG5jb25zdCBmYUJvcmRlckFsbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdib3JkZXItYWxsJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmODRjXCIsIFwiTTM4NCA5NmwwIDEyOC0xMjggMCAwLTEyOCAxMjggMHptMCAxOTJsMCAxMjgtMTI4IDAgMC0xMjggMTI4IDB6TTE5MiAyMjRMNjQgMjI0IDY0IDk2bDEyOCAwIDAgMTI4ek02NCAyODhsMTI4IDAgMCAxMjhMNjQgNDE2bDAtMTI4ek02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2TDAgNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0bDMyMCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMzIwYzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDMyelwiXVxufTtcbmNvbnN0IGZhRmFjZUFuZ3J5ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZhY2UtYW5ncnknLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjg1NDQsIFwiYW5ncnlcIl0sIFwiZjU1NlwiLCBcIk0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6TTMzOC43IDM5NS45YzYuNi01LjkgNy4xLTE2IDEuMi0yMi42QzMyMy44IDM1NS40IDI5NS43IDMzNiAyNTYgMzM2cy02Ny44IDE5LjQtODMuOSAzNy4zYy01LjkgNi42LTUuNCAxNi43IDEuMiAyMi42czE2LjcgNS40IDIyLjYtMS4yYzExLjctMTMgMzEuNi0yNi43IDYwLjEtMjYuN3M0OC40IDEzLjcgNjAuMSAyNi43YzUuOSA2LjYgMTYgNy4xIDIyLjYgMS4yek0xNzYuNCAyNzJjMTcuNyAwIDMyLTE0LjMgMzItMzJjMC0xLjUtLjEtMy0uMy00LjRsMTAuOSAzLjZjOC40IDIuOCAxNy40LTEuNyAyMC4yLTEwLjFzLTEuNy0xNy40LTEwLjEtMjAuMmwtOTYtMzJjLTguNC0yLjgtMTcuNCAxLjctMjAuMiAxMC4xczEuNyAxNy40IDEwLjEgMjAuMmwzMC43IDEwLjJjLTUuOCA1LjgtOS4zIDEzLjgtOS4zIDIyLjZjMCAxNy43IDE0LjMgMzIgMzIgMzJ6bTE5Mi0zMmMwLTguOS0zLjYtMTctOS41LTIyLjhsMzAuMi0xMC4xYzguNC0yLjggMTIuOS0xMS45IDEwLjEtMjAuMnMtMTEuOS0xMi45LTIwLjItMTAuMWwtOTYgMzJjLTguNCAyLjgtMTIuOSAxMS45LTEwLjEgMjAuMnMxMS45IDEyLjkgMjAuMiAxMC4xbDExLjctMy45Yy0uMiAxLjUtLjMgMy4xLS4zIDQuN2MwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyelwiXVxufTtcbmNvbnN0IGZhQW5ncnkgPSBmYUZhY2VBbmdyeTtcbmNvbnN0IGZhQ29va2llQml0ZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjb29raWUtYml0ZScsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjU2NFwiLCBcIk0yNTcuNSAyNy42Yy0uOC01LjQtNC45LTkuOC0xMC4zLTEwLjZjLTIyLjEtMy4xLTQ0LjYgLjktNjQuNCAxMS40bC03NCAzOS41Qzg5LjEgNzguNCA3My4yIDk0LjkgNjMuNCAxMTVMMjYuNyAxOTAuNmMtOS44IDIwLjEtMTMgNDIuOS05LjEgNjQuOWwxNC41IDgyLjhjMy45IDIyLjEgMTQuNiA0Mi4zIDMwLjcgNTcuOWw2MC4zIDU4LjRjMTYuMSAxNS42IDM2LjYgMjUuNiA1OC43IDI4LjdsODMgMTEuN2MyMi4xIDMuMSA0NC42LS45IDY0LjQtMTEuNGw3NC0zOS41YzE5LjctMTAuNSAzNS42LTI3IDQ1LjQtNDcuMmwzNi43LTc1LjVjOS44LTIwLjEgMTMtNDIuOSA5LjEtNjQuOWMtLjktNS4zLTUuMy05LjMtMTAuNi0xMC4xYy01MS41LTguMi05Mi44LTQ3LjEtMTA0LjUtOTcuNGMtMS44LTcuNi04LTEzLjQtMTUuNy0xNC42Yy01NC42LTguNy05Ny43LTUyLTEwNi4yLTEwNi44ek0yMDggMTQ0YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpNMTQ0IDMzNmEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwem0yMjQtNjRhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0elwiXVxufTtcbmNvbnN0IGZhQXJyb3dUcmVuZERvd24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYXJyb3ctdHJlbmQtZG93bicsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZTA5N1wiLCBcIk0zODQgMzUyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDE2MCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMybDAtMTYwYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMybDAgODIuN0wzNDIuNiAxMzcuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4zIDBMMTkyIDI0Mi43IDU0LjYgMTA1LjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zbDE2MCAxNjBjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBMMzIwIDIwNS4zIDQ2Ni43IDM1MiAzODQgMzUyelwiXVxufTtcbmNvbnN0IGZhUnNzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3JzcycsXG4gIGljb246IFs0NDgsIDUxMiwgW1wiZmVlZFwiXSwgXCJmMDllXCIsIFwiTTAgNjRDMCA0Ni4zIDE0LjMgMzIgMzIgMzJjMjI5LjggMCA0MTYgMTg2LjIgNDE2IDQxNmMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMkMzODQgMjUzLjYgMjI2LjQgOTYgMzIgOTZDMTQuMyA5NiAwIDgxLjcgMCA2NHpNMCA0MTZhNjQgNjQgMCAxIDEgMTI4IDBBNjQgNjQgMCAxIDEgMCA0MTZ6TTMyIDE2MGMxNTkuMSAwIDI4OCAxMjguOSAyODggMjg4YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyYzAtMTIzLjctMTAwLjMtMjI0LTIyNC0yMjRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJ6XCJdXG59O1xuY29uc3QgZmFGZWVkID0gZmFSc3M7XG5jb25zdCBmYURyYXdQb2x5Z29uID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2RyYXctcG9seWdvbicsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjVlZVwiLCBcIk05NiAxNTEuNGwwIDIwOS4xYzkuNyA1LjYgMTcuOCAxMy43IDIzLjQgMjMuNGwyMDkuMSAwYzAtLjEgLjEtLjIgLjEtLjNsLTQuNS03LjktMzItNTZzMCAwIDAgMGMtMS40IC4xLTIuOCAuMS00LjIgLjFjLTM1LjMgMC02NC0yOC43LTY0LTY0czI4LjctNjQgNjQtNjRjMS40IDAgMi44IDAgNC4yIC4xYzAgMCAwIDAgMCAwbDMyLTU2IDQuNS03LjktLjEtLjMtMjA5LjEgMGMtNS42IDkuNy0xMy43IDE3LjgtMjMuNCAyMy40ek0zODQuMyAzNTJjMzUuMiAuMiA2My43IDI4LjcgNjMuNyA2NGMwIDM1LjMtMjguNyA2NC02NCA2NGMtMjMuNyAwLTQ0LjQtMTIuOS01NS40LTMybC0yMDkuMSAwYy0xMS4xIDE5LjEtMzEuNyAzMi01NS40IDMyYy0zNS4zIDAtNjQtMjguNy02NC02NGMwLTIzLjcgMTIuOS00NC40IDMyLTU1LjRsMC0yMDkuMUMxMi45IDE0MC40IDAgMTE5LjcgMCA5NkMwIDYwLjcgMjguNyAzMiA2NCAzMmMyMy43IDAgNDQuNCAxMi45IDU1LjQgMzJsMjA5LjEgMGMxMS4xLTE5LjEgMzEuNy0zMiA1NS40LTMyYzM1LjMgMCA2NCAyOC43IDY0IDY0YzAgMzUuMy0yOC41IDYzLjgtNjMuNyA2NGwtNC41IDcuOS0zMiA1Ni0yLjMgNGM0LjIgOC41IDYuNSAxOCA2LjUgMjguMXMtMi4zIDE5LjYtNi41IDI4LjFsMi4zIDQgMzIgNTYgNC41IDcuOXpcIl1cbn07XG5jb25zdCBmYVNjYWxlQmFsYW5jZWQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc2NhbGUtYmFsYW5jZWQnLFxuICBpY29uOiBbNjQwLCA1MTIsIFs5ODc4LCBcImJhbGFuY2Utc2NhbGVcIl0sIFwiZjI0ZVwiLCBcIk0zODQgMzJsMTI4IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJMMzk4LjQgOTZjLTUuMiAyNS44LTIyLjkgNDcuMS00Ni40IDU3LjNMMzUyIDQ0OGwxNjAgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtMTkyIDAtMTkyIDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJsMTYwIDAgMC0yOTQuN2MtMjMuNS0xMC4zLTQxLjItMzEuNi00Ni40LTU3LjNMMTI4IDk2Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDEyOCAwYzE0LjYtMTkuNCAzNy44LTMyIDY0LTMyczQ5LjQgMTIuNiA2NCAzMnptNTUuNiAyODhsMTQ0LjkgMEw1MTIgMTk1LjggNDM5LjYgMzIwek01MTIgNDE2Yy02Mi45IDAtMTE1LjItMzQtMTI2LTc4LjljLTIuNi0xMSAxLTIyLjMgNi43LTMyLjFsOTUuMi0xNjMuMmM1LTguNiAxNC4yLTEzLjggMjQuMS0xMy44czE5LjEgNS4zIDI0LjEgMTMuOGw5NS4yIDE2My4yYzUuNyA5LjggOS4zIDIxLjEgNi43IDMyLjFDNjI3LjIgMzgyIDU3NC45IDQxNiA1MTIgNDE2ek0xMjYuOCAxOTUuOEw1NC40IDMyMGwxNDQuOSAwTDEyNi44IDE5NS44ek0uOSAzMzcuMWMtMi42LTExIDEtMjIuMyA2LjctMzIuMWw5NS4yLTE2My4yYzUtOC42IDE0LjItMTMuOCAyNC4xLTEzLjhzMTkuMSA1LjMgMjQuMSAxMy44bDk1LjIgMTYzLjJjNS43IDkuOCA5LjMgMjEuMSA2LjcgMzIuMUMyNDIgMzgyIDE4OS43IDQxNiAxMjYuOCA0MTZTMTEuNyAzODIgLjkgMzM3LjF6XCJdXG59O1xuY29uc3QgZmFCYWxhbmNlU2NhbGUgPSBmYVNjYWxlQmFsYW5jZWQ7XG5jb25zdCBmYUdhdWdlU2ltcGxlSGlnaCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdnYXVnZS1zaW1wbGUtaGlnaCcsXG4gIGljb246IFs1MTIsIDUxMiwgWzYxNjY4LCBcInRhY2hvbWV0ZXJcIiwgXCJ0YWNob21ldGVyLWZhc3RcIl0sIFwiZjYyYVwiLCBcIk0wIDI1NmEyNTYgMjU2IDAgMSAxIDUxMiAwQTI1NiAyNTYgMCAxIDEgMCAyNTZ6bTMyMCA5NmMwLTE1LjktNS44LTMwLjQtMTUuMy00MS42bDc2LjYtMTQ3LjRjNi4xLTExLjggMS41LTI2LjMtMTAuMi0zMi40cy0yNi4yLTEuNS0zMi40IDEwLjJMMjYyLjEgMjg4LjNjLTItLjItNC0uMy02LjEtLjNjLTM1LjMgMC02NCAyOC43LTY0IDY0czI4LjcgNjQgNjQgNjRzNjQtMjguNyA2NC02NHpcIl1cbn07XG5jb25zdCBmYVRhY2hvbWV0ZXIgPSBmYUdhdWdlU2ltcGxlSGlnaDtcbmNvbnN0IGZhVGFjaG9tZXRlckZhc3QgPSBmYUdhdWdlU2ltcGxlSGlnaDtcbmNvbnN0IGZhU2hvd2VyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3Nob3dlcicsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyODcwM10sIFwiZjJjY1wiLCBcIk02NCAxMzEuOUM2NCAxMTIuMSA4MC4xIDk2IDk5LjkgOTZjOS41IDAgMTguNiAzLjggMjUuNCAxMC41bDE2LjIgMTYuMmMtMjEgMzguOS0xNy40IDg3LjUgMTAuOSAxMjNMMTUxIDI0N2MtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlzMjQuNiA5LjQgMzMuOSAwTDM0NSAxMjFjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlzLTI0LjYtOS40LTMzLjkgMGwtMS4zIDEuM2MtMzUuNS0yOC4zLTg0LjItMzEuOS0xMjMtMTAuOUwxNzAuNSA2MS4zQzE1MS44IDQyLjUgMTI2LjQgMzIgOTkuOSAzMkM0NC43IDMyIDAgNzYuNyAwIDEzMS45TDAgNDQ4YzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0zMTYuMXpNMjU2IDM1MmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6bTY0IDY0YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6bTAtMTI4YTMyIDMyIDAgMSAwIDAtNjQgMzIgMzIgMCAxIDAgMCA2NHptNjQgNjRhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHptMC0xMjhhMzIgMzIgMCAxIDAgMC02NCAzMiAzMiAwIDEgMCAwIDY0em02NCA2NGEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwem0zMi0zMmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6XCJdXG59O1xuY29uc3QgZmFEZXNrdG9wID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Rlc2t0b3AnLFxuICBpY29uOiBbNTc2LCA1MTIsIFsxMjg0MjEsIDYxNzA0LCBcImRlc2t0b3AtYWx0XCJdLCBcImYzOTBcIiwgXCJNNjQgMEMyOC43IDAgMCAyOC43IDAgNjRMMCAzNTJjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMTc2IDAtMTAuNyAzMkwxNjAgNDQ4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDI1NiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC02OS4zIDBMMzM2IDQxNmwxNzYgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTI4OGMwLTM1LjMtMjguNy02NC02NC02NEw2NCAwek01MTIgNjRsMCAyMjRMNjQgMjg4IDY0IDY0bDQ0OCAwelwiXVxufTtcbmNvbnN0IGZhRGVza3RvcEFsdCA9IGZhRGVza3RvcDtcbmNvbnN0IGZhTSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbMTA5XSwgXCI0ZFwiLCBcIk0yMi43IDMzLjRjMTMuNS00LjEgMjguMSAxLjEgMzUuOSAxMi45TDIyNCAyOTQuMyAzODkuNCA0Ni4zYzcuOC0xMS43IDIyLjQtMTcgMzUuOS0xMi45UzQ0OCA0OS45IDQ0OCA2NGwwIDM4NGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTI3OC4zTDI1MC42IDM2OS44Yy01LjkgOC45LTE1LjkgMTQuMi0yNi42IDE0LjJzLTIwLjctNS4zLTI2LjYtMTQuMkw2NCAxNjkuNyA2NCA0NDhjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJMMCA2NEMwIDQ5LjkgOS4yIDM3LjUgMjIuNyAzMy40elwiXVxufTtcbmNvbnN0IGZhVGFibGVMaXN0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RhYmxlLWxpc3QnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtcInRoLWxpc3RcIl0sIFwiZjAwYlwiLCBcIk0wIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMybDM4NCAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMzIwYzAgMzUuMy0yOC43IDY0LTY0IDY0TDY0IDQ4MGMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCA5NnptNjQgMGwwIDY0IDY0IDAgMC02NEw2NCA5NnptMzg0IDBMMTkyIDk2bDAgNjQgMjU2IDAgMC02NHpNNjQgMjI0bDAgNjQgNjQgMCAwLTY0LTY0IDB6bTM4NCAwbC0yNTYgMCAwIDY0IDI1NiAwIDAtNjR6TTY0IDM1MmwwIDY0IDY0IDAgMC02NC02NCAwem0zODQgMGwtMjU2IDAgMCA2NCAyNTYgMCAwLTY0elwiXVxufTtcbmNvbnN0IGZhVGhMaXN0ID0gZmFUYWJsZUxpc3Q7XG5jb25zdCBmYUNvbW1lbnRTbXMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnY29tbWVudC1zbXMnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtcInNtc1wiXSwgXCJmN2NkXCIsIFwiTTI1NiA0NDhjMTQxLjQgMCAyNTYtOTMuMSAyNTYtMjA4UzM5Ny40IDMyIDI1NiAzMlMwIDEyNS4xIDAgMjQwYzAgNDUuMSAxNy43IDg2LjggNDcuNyAxMjAuOWMtMS45IDI0LjUtMTEuNCA0Ni4zLTIxLjQgNjIuOWMtNS41IDkuMi0xMS4xIDE2LjYtMTUuMiAyMS42Yy0yLjEgMi41LTMuNyA0LjQtNC45IDUuN2MtLjYgLjYtMSAxLjEtMS4zIDEuNGwtLjMgLjNjMCAwIDAgMCAwIDBjMCAwIDAgMCAwIDBzMCAwIDAgMHMwIDAgMCAwYy00LjYgNC42LTUuOSAxMS40LTMuNCAxNy40YzIuNSA2IDguMyA5LjkgMTQuOCA5LjljMjguNyAwIDU3LjYtOC45IDgxLjYtMTkuM2MyMi45LTEwIDQyLjQtMjEuOSA1NC4zLTMwLjZjMzEuOCAxMS41IDY3IDE3LjkgMTA0LjEgMTcuOXpNOTYgMjEyLjhjMC0yMC4zIDE2LjUtMzYuOCAzNi44LTM2LjhsMTkuMiAwYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2bC0xOS4yIDBjLTIuNyAwLTQuOCAyLjItNC44IDQuOGMwIDEuNiAuOCAzLjEgMi4yIDRsMjkuNCAxOS42YzEwLjMgNi44IDE2LjQgMTguMyAxNi40IDMwLjdjMCAyMC4zLTE2LjUgMzYuOC0zNi44IDM2LjhMMTEyIDMwNGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmwyNy4yIDBjMi43IDAgNC44LTIuMiA0LjgtNC44YzAtMS42LS44LTMuMS0yLjItNGwtMjkuNC0xOS42QzEwMi4yIDIzNi43IDk2IDIyNS4yIDk2IDIxMi44ek0zNzIuOCAxNzZsMTkuMiAwYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2bC0xOS4yIDBjLTIuNyAwLTQuOCAyLjItNC44IDQuOGMwIDEuNiAuOCAzLjEgMi4yIDRsMjkuNCAxOS42YzEwLjIgNi44IDE2LjQgMTguMyAxNi40IDMwLjdjMCAyMC4zLTE2LjUgMzYuOC0zNi44IDM2LjhMMzUyIDMwNGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmwyNy4yIDBjMi43IDAgNC44LTIuMiA0LjgtNC44YzAtMS42LS44LTMuMS0yLjItNGwtMjkuNC0xOS42Yy0xMC4yLTYuOC0xNi40LTE4LjMtMTYuNC0zMC43YzAtMjAuMyAxNi41LTM2LjggMzYuOC0zNi44em0tMTUyIDYuNEwyNTYgMjI5LjNsMzUuMi00Ni45YzQuMS01LjUgMTEuMy03LjggMTcuOS01LjZzMTAuOSA4LjMgMTAuOSAxNS4ybDAgOTZjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZsMC00OC0xOS4yIDI1LjZjLTMgNC03LjggNi40LTEyLjggNi40cy05LjgtMi40LTEyLjgtNi40TDIyNCAyNDBsMCA0OGMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNmwwLTk2YzAtNi45IDQuNC0xMyAxMC45LTE1LjJzMTMuNyAuMSAxNy45IDUuNnpcIl1cbn07XG5jb25zdCBmYVNtcyA9IGZhQ29tbWVudFNtcztcbmNvbnN0IGZhQm9vayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdib29rJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbMTI4MjEyXSwgXCJmMDJkXCIsIFwiTTk2IDBDNDMgMCAwIDQzIDAgOTZMMCA0MTZjMCA1MyA0MyA5NiA5NiA5NmwyODggMCAzMiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybDAtNjRjMTcuNyAwIDMyLTE0LjMgMzItMzJsMC0zMjBjMC0xNy43LTE0LjMtMzItMzItMzJMMzg0IDAgOTYgMHptMCAzODRsMjU2IDAgMCA2NEw5NiA0NDhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJ6bTMyLTI0MGMwLTguOCA3LjItMTYgMTYtMTZsMTkyIDBjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZsLTE5MiAwYy04LjggMC0xNi03LjItMTYtMTZ6bTE2IDQ4bDE5MiAwYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2bC0xOTIgMGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnpcIl1cbn07XG5jb25zdCBmYVVzZXJQbHVzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3VzZXItcGx1cycsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjIzNFwiLCBcIk05NiAxMjhhMTI4IDEyOCAwIDEgMSAyNTYgMEExMjggMTI4IDAgMSAxIDk2IDEyOHpNMCA0ODIuM0MwIDM4My44IDc5LjggMzA0IDE3OC4zIDMwNGw5MS40IDBDMzY4LjIgMzA0IDQ0OCAzODMuOCA0NDggNDgyLjNjMCAxNi40LTEzLjMgMjkuNy0yOS43IDI5LjdMMjkuNyA1MTJDMTMuMyA1MTIgMCA0OTguNyAwIDQ4Mi4zek01MDQgMzEybDAtNjQtNjQgMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGw2NCAwIDAtNjRjMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNGwwIDY0IDY0IDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRsLTY0IDAgMCA2NGMwIDEzLjMtMTAuNyAyNC0yNCAyNHMtMjQtMTAuNy0yNC0yNHpcIl1cbn07XG5jb25zdCBmYUNoZWNrID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NoZWNrJyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbMTAwMDMsIDEwMDA0XSwgXCJmMDBjXCIsIFwiTTQzOC42IDEwNS40YzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zbC0yNTYgMjU2Yy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMGwtMTI4LTEyOGMtMTIuNS0xMi41LTEyLjUtMzIuOCAwLTQ1LjNzMzIuOC0xMi41IDQ1LjMgMEwxNjAgMzM4LjcgMzkzLjQgMTA1LjRjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDB6XCJdXG59O1xuY29uc3QgZmFCYXR0ZXJ5VGhyZWVRdWFydGVycyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdiYXR0ZXJ5LXRocmVlLXF1YXJ0ZXJzJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXCJiYXR0ZXJ5LTRcIl0sIFwiZjI0MVwiLCBcIk00NjQgMTYwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDE2MGMwIDguOC03LjIgMTYtMTYgMTZMODAgMzUyYy04LjggMC0xNi03LjItMTYtMTZsMC0xNjBjMC04LjggNy4yLTE2IDE2LTE2bDM4NCAwek04MCA5NkMzNS44IDk2IDAgMTMxLjggMCAxNzZMMCAzMzZjMCA0NC4yIDM1LjggODAgODAgODBsMzg0IDBjNDQuMiAwIDgwLTM1LjggODAtODBsMC0xNmMxNy43IDAgMzItMTQuMyAzMi0zMmwwLTY0YzAtMTcuNy0xNC4zLTMyLTMyLTMybDAtMTZjMC00NC4yLTM1LjgtODAtODAtODBMODAgOTZ6bTI3MiA5Nkw5NiAxOTJsMCAxMjggMjU2IDAgMC0xMjh6XCJdXG59O1xuY29uc3QgZmFCYXR0ZXJ5NCA9IGZhQmF0dGVyeVRocmVlUXVhcnRlcnM7XG5jb25zdCBmYUhvdXNlQ2lyY2xlQ2hlY2sgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaG91c2UtY2lyY2xlLWNoZWNrJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlNTA5XCIsIFwiTTMyMC43IDM1MmM4LjEtODkuNyA4My41LTE2MCAxNzUuMy0xNjBjOC45IDAgMTcuNiAuNyAyNi4xIDEuOUwzMDkuNSA3Yy02LTUtMTQtNy0yMS03cy0xNSAxLTIyIDhMMTAgMjMxLjVjLTcgNy0xMCAxNS0xMCAyNGMwIDE4IDE0IDMyLjEgMzIgMzIuMWwzMiAwIDAgNjkuN2MtLjEgLjktLjEgMS44LS4xIDIuOGwwIDExMmMwIDIyLjEgMTcuOSA0MCA0MCA0MGwxNiAwYzEuMiAwIDIuNC0uMSAzLjYtLjJjMS41IC4xIDMgLjIgNC41IC4ybDMxLjkgMCAyNCAwYzIyLjEgMCA0MC0xNy45IDQwLTQwbDAtMjQgMC02NGMwLTE3LjcgMTQuMy0zMiAzMi0zMmw2NCAwIC43IDB6TTY0MCAzNjhhMTQ0IDE0NCAwIDEgMCAtMjg4IDAgMTQ0IDE0NCAwIDEgMCAyODggMHptLTc2LjctNDMuM2M2LjIgNi4yIDYuMiAxNi40IDAgMjIuNmwtNzIgNzJjLTYuMiA2LjItMTYuNCA2LjItMjIuNiAwbC00MC00MGMtNi4yLTYuMi02LjItMTYuNCAwLTIyLjZzMTYuNC02LjIgMjIuNiAwTDQ4MCAzODUuNGw2MC43LTYwLjdjNi4yLTYuMiAxNi40LTYuMiAyMi42IDB6XCJdXG59O1xuY29uc3QgZmFBbmdsZUxlZnQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYW5nbGUtbGVmdCcsXG4gIGljb246IFszMjAsIDUxMiwgWzgyNDldLCBcImYxMDRcIiwgXCJNNDEuNCAyMzMuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNsMTYwIDE2MGMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMHMxMi41LTMyLjggMC00NS4zTDEwOS4zIDI1NiAyNDYuNiAxMTguNmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMGwtMTYwIDE2MHpcIl1cbn07XG5jb25zdCBmYURpYWdyYW1TdWNjZXNzb3IgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZGlhZ3JhbS1zdWNjZXNzb3InLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImU0N2FcIiwgXCJNNTEyIDQxNmwwLTY0YzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDI4OGMtMzUuMyAwLTY0IDI4LjctNjQgNjRsMCA2NGMwIDM1LjMgMjguNyA2NCA2NCA2NGwzODQgMGMzNS4zIDAgNjQtMjguNyA2NC02NHpNNjQgMTYwbDAtNjQgMTQ0IDAgMTYgMCAwIDY0TDY0IDE2MHptMjI0IDBsMC02NCA4MCAwYzguOCAwIDE2IDcuMiAxNiAxNmwwIDE2LTM4LjEgMGMtMjEuNCAwLTMyLjEgMjUuOS0xNyA0MUwzOTkgMjM5YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwTDUwMyAxNjljMTUuMS0xNS4xIDQuNC00MS0xNy00MUw0NDggMTI4bDAtMTZjMC00NC4yLTM1LjgtODAtODAtODBMMjI0IDMybC0xNiAwTDY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZsMCA2NGMwIDM1LjMgMjguNyA2NCA2NCA2NGwxNjAgMGMzNS4zIDAgNjQtMjguNyA2NC02NHpcIl1cbn07XG5jb25zdCBmYVRydWNrQXJyb3dSaWdodCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0cnVjay1hcnJvdy1yaWdodCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTU4YlwiLCBcIk0wIDQ4QzAgMjEuNSAyMS41IDAgNDggMEwzNjggMGMyNi41IDAgNDggMjEuNSA0OCA0OGwwIDQ4IDUwLjcgMGMxNyAwIDMzLjMgNi43IDQ1LjMgMTguN0w1ODkuMyAxOTJjMTIgMTIgMTguNyAyOC4zIDE4LjcgNDUuM2wwIDE4LjcgMCAzMiAwIDY0YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMybC0zMiAwYzAgNTMtNDMgOTYtOTYgOTZzLTk2LTQzLTk2LTk2bC0xMjggMGMwIDUzLTQzIDk2LTk2IDk2cy05Ni00My05Ni05NmwtMTYgMGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhMMCA0OHpNNDE2IDI1NmwxMjggMCAwLTE4LjdMNDY2LjcgMTYwIDQxNiAxNjBsMCA5NnpNMTYwIDQ2NGE0OCA0OCAwIDEgMCAwLTk2IDQ4IDQ4IDAgMSAwIDAgOTZ6bTM2OC00OGE0OCA0OCAwIDEgMCAtOTYgMCA0OCA0OCAwIDEgMCA5NiAwek0yNTcgOTVjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwcy05LjQgMjQuNiAwIDMzLjlsMzkgMzlMOTYgMTY4Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0bDE2Ni4xIDAtMzkgMzljLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45czI0LjYgOS40IDMzLjkgMGw4MC04MGM5LjQtOS40IDkuNC0yNC42IDAtMzMuOUwyNTcgOTV6XCJdXG59O1xuY29uc3QgZmFBcnJvd3NTcGxpdFVwQW5kTGVmdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhcnJvd3Mtc3BsaXQtdXAtYW5kLWxlZnQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImU0YmNcIiwgXCJNMjQ2LjYgMTUwLjZjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwcy0xMi41LTMyLjggMC00NS4zbDk2LTk2YzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwbDk2IDk2YzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zcy0zMi44IDEyLjUtNDUuMyAwTDM1MiAxMDkuMyAzNTIgMzg0YzAgMzUuMyAyOC43IDY0IDY0IDY0bDY0IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTY0IDBjLTcwLjcgMC0xMjgtNTcuMy0xMjgtMTI4YzAtMzUuMy0yOC43LTY0LTY0LTY0bC0xMTQuNyAwIDQxLjQgNDEuNGMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM3MtMzIuOCAxMi41LTQ1LjMgMGwtOTYtOTZjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zbDk2LTk2YzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwczEyLjUgMzIuOCAwIDQ1LjNMMTA5LjMgMjU2IDIyNCAyNTZjMjMuMyAwIDQ1LjIgNi4yIDY0IDE3LjFsMC0xNjMuOS00MS40IDQxLjR6XCJdXG59O1xuY29uc3QgZmFIYW5kRmlzdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoYW5kLWZpc3QnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFs5OTk0LCBcImZpc3QtcmFpc2VkXCJdLCBcImY2ZGVcIiwgXCJNMTkyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCAxMTItNjQgMCAwLTExMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNNjQgNjRjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMmwwIDgwLTY0IDAgMC04MHptMTkyIDBjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMmwwIDk2YzAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMybDAtOTZ6bTk2IDY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzJsMCA2NGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTY0em0tOTYgODhsMC0uNmM5LjQgNS40IDIwLjMgOC42IDMyIDguNmMxMy4yIDAgMjUuNC00IDM1LjYtMTAuOGM4LjcgMjQuOSAzMi41IDQyLjggNjAuNCA0Mi44YzExLjcgMCAyMi42LTMuMSAzMi04LjZsMCA4LjZjMCA1Mi4zLTI1LjEgOTguOC02NCAxMjhsMCA5NmMwIDE3LjctMTQuMyAzMi0zMiAzMmwtMTYwIDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtNzguNGMtMTcuMy03LjktMzMuMi0xOC44LTQ2LjktMzIuNUw2OS41IDM1Ny41QzQ1LjUgMzMzLjUgMzIgMzAwLjkgMzIgMjY3bDAtMjdjMC0zNS4zIDI4LjctNjQgNjQtNjRsODggMGMyMi4xIDAgNDAgMTcuOSA0MCA0MHMtMTcuOSA0MC00MCA0MGwtNTYgMGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNmw1NiAwYzM5LjggMCA3Mi0zMi4yIDcyLTcyelwiXVxufTtcbmNvbnN0IGZhRmlzdFJhaXNlZCA9IGZhSGFuZEZpc3Q7XG5jb25zdCBmYUNsb3VkTW9vbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjbG91ZC1tb29uJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNmMzXCIsIFwiTTQ5NS44IDBjNS41IDAgMTAuOSAuMiAxNi4zIC43YzcgLjYgMTIuOCA1LjcgMTQuMyAxMi41cy0xLjYgMTMuOS03LjcgMTcuM2MtNDQuNCAyNS4yLTc0LjQgNzMtNzQuNCAxMjcuOGMwIDgxIDY1LjUgMTQ2LjYgMTQ2LjIgMTQ2LjZjOC42IDAgMTctLjcgMjUuMS0yLjFjNi45LTEuMiAxMy44IDIuMiAxNyA4LjVzMS45IDEzLjgtMy4xIDE4LjdjLTM0LjUgMzMuNi04MS43IDU0LjQtMTMzLjYgNTQuNGMtOS4zIDAtMTguNC0uNy0yNy40LTEuOWMtMTEuMi0yMi42LTI5LjgtNDAuOS01Mi42LTUxLjdjLTIuNy01OC41LTUwLjMtMTA1LjMtMTA5LjItMTA2LjdjLTEuNy0xMC40LTIuNi0yMS0yLjYtMzEuOEMzMDQgODYuMSAzODkuOCAwIDQ5NS44IDB6TTQ0Ny45IDQzMS45YzAgNDQuMi0zNS44IDgwLTgwIDgwTDk2IDUxMS45Yy01MyAwLTk2LTQzLTk2LTk2YzAtNDcuNiAzNC42LTg3IDgwLTk0LjZsMC0xLjNjMC01MyA0My05NiA5Ni05NmMzNC45IDAgNjUuNCAxOC42IDgyLjIgNDYuNGMxMy05LjEgMjguOC0xNC40IDQ1LjgtMTQuNGM0NC4yIDAgODAgMzUuOCA4MCA4MGMwIDUuOS0uNiAxMS43LTEuOSAxNy4yYzM3LjQgNi43IDY1LjggMzkuNCA2NS44IDc4Ljd6XCJdXG59O1xuY29uc3QgZmFCcmllZmNhc2UgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYnJpZWZjYXNlJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI4MTg4XSwgXCJmMGIxXCIsIFwiTTE4NCA0OGwxNDQgMGM0LjQgMCA4IDMuNiA4IDhsMCA0MEwxNzYgOTZsMC00MGMwLTQuNCAzLjYtOCA4LTh6bS01NiA4bDAgNDBMNjQgOTZDMjguNyA5NiAwIDEyNC43IDAgMTYwbDAgOTYgMTkyIDAgMTI4IDAgMTkyIDAgMC05NmMwLTM1LjMtMjguNy02NC02NC02NGwtNjQgMCAwLTQwYzAtMzAuOS0yNS4xLTU2LTU2LTU2TDE4NCAwYy0zMC45IDAtNTYgMjUuMS01NiA1NnpNNTEyIDI4OGwtMTkyIDAgMCAzMmMwIDE3LjctMTQuMyAzMi0zMiAzMmwtNjQgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC0zMkwwIDI4OCAwIDQxNmMwIDM1LjMgMjguNyA2NCA2NCA2NGwzODQgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTEyOHpcIl1cbn07XG5jb25zdCBmYVBlcnNvbkZhbGxpbmcgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGVyc29uLWZhbGxpbmcnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImU1NDZcIiwgXCJNMjg4IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCA5LjhjMCA1NC42LTI3LjkgMTA0LjYtNzIuNSAxMzMuNmwuMiAuM0wzMDQuNSAyNTZsODcuNSAwYzE1LjEgMCAyOS4zIDcuMSAzOC40IDE5LjJsNDMuMiA1Ny42YzEwLjYgMTQuMSA3LjcgMzQuMi02LjQgNDQuOHMtMzQuMiA3LjctNDQuOC02LjRMMzg0IDMyMGwtOTYgMC0xLjQgMCA5Mi4zIDE0Mi42YzkuNiAxNC44IDUuNCAzNC42LTkuNSA0NC4zcy0zNC42IDUuNC00NC4zLTkuNUwxNjQuNSAyNDkuMmMtMi45IDkuMi00LjUgMTktNC41IDI5bDAgNzMuOGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTczLjhjMC02NS4xIDM5LjYtMTIzLjcgMTAwLjEtMTQ3LjlDMjMyLjMgMTE1LjggMjU2IDgwLjggMjU2IDQxLjhsMC05LjhjMC0xNy43IDE0LjMtMzIgMzItMzJ6TTExMiAzMmE0OCA0OCAwIDEgMSAwIDk2IDQ4IDQ4IDAgMSAxIDAtOTZ6XCJdXG59O1xuY29uc3QgZmFJbWFnZVBvcnRyYWl0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ltYWdlLXBvcnRyYWl0JyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXCJwb3J0cmFpdFwiXSwgXCJmM2UwXCIsIFwiTTM4NCA2NGMwLTM1LjMtMjguNy02NC02NC02NEw2NCAwQzI4LjcgMCAwIDI4LjcgMCA2NEwwIDQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NGwyNTYgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTM4NHpNMTI4IDE5MmE2NCA2NCAwIDEgMSAxMjggMCA2NCA2NCAwIDEgMSAtMTI4IDB6TTgwIDM1Ni42YzAtMzcuOSAzMC43LTY4LjYgNjguNi02OC42bDg2LjkgMGMzNy45IDAgNjguNiAzMC43IDY4LjYgNjguNmMwIDE1LjEtMTIuMyAyNy40LTI3LjQgMjcuNGwtMTY5LjEgMEM5Mi4zIDM4NCA4MCAzNzEuNyA4MCAzNTYuNnpcIl1cbn07XG5jb25zdCBmYVBvcnRyYWl0ID0gZmFJbWFnZVBvcnRyYWl0O1xuY29uc3QgZmFVc2VyVGFnID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3VzZXItdGFnJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJmNTA3XCIsIFwiTTIyNCAyNTZBMTI4IDEyOCAwIDEgMCAyMjQgMGExMjggMTI4IDAgMSAwIDAgMjU2em0tNDUuNyA0OEM3OS44IDMwNCAwIDM4My44IDAgNDgyLjNDMCA0OTguNyAxMy4zIDUxMiAyOS43IDUxMmwzODguNiAwYzEwIDAgMTguOC00LjkgMjQuMi0xMi41bC05OS4yLTk5LjJjLTE0LjktMTQuOS0yMy4zLTM1LjEtMjMuMy01Ni4xbDAtMzNjLTE1LjktNC43LTMyLjgtNy4yLTUwLjMtNy4ybC05MS40IDB6TTM4NCAyMjRjLTE3LjcgMC0zMiAxNC4zLTMyIDMybDAgODIuN2MwIDE3IDYuNyAzMy4zIDE4LjcgNDUuM0w0NzguMSA0OTEuM2MxOC43IDE4LjcgNDkuMSAxOC43IDY3LjkgMGw3My40LTczLjRjMTguNy0xOC43IDE4LjctNDkuMSAwLTY3LjlMNTEyIDI0Mi43Yy0xMi0xMi0yOC4zLTE4LjctNDUuMy0xOC43TDM4NCAyMjR6bTI0IDgwYTI0IDI0IDAgMSAxIDQ4IDAgMjQgMjQgMCAxIDEgLTQ4IDB6XCJdXG59O1xuY29uc3QgZmFSdWcgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncnVnJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlNTY5XCIsIFwiTTI0IDY0bDMyIDAgMjQgMCAwIDI0IDAgODggMCA4MCAwIDgwIDAgODggMCAyNC0yNCAwLTMyIDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRsOCAwIDAtNDAtOCAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0bDggMCAwLTMyLTggMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGw4IDAgMC0zMi04IDBjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRsOCAwIDAtNDAtOCAwQzEwLjcgMTEyIDAgMTAxLjMgMCA4OFMxMC43IDY0IDI0IDY0em04OCAwbDQxNiAwIDAgMzg0LTQxNiAwIDAtMzg0ek02NDAgODhjMCAxMy4zLTEwLjcgMjQtMjQgMjRsLTggMCAwIDQwIDggMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGwtOCAwIDAgMzIgOCAwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0bC04IDAgMCAzMiA4IDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRsLTggMCAwIDQwIDggMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGwtMzIgMC0yNCAwIDAtMjQgMC04OCAwLTgwIDAtODAgMC04OCAwLTI0IDI0IDAgMzIgMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHpcIl1cbn07XG5jb25zdCBmYUVhcnRoRXVyb3BlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2VhcnRoLWV1cm9wZScsXG4gIGljb246IFs1MTIsIDUxMiwgW1wiZ2xvYmUtZXVyb3BlXCJdLCBcImY3YTJcIiwgXCJNMjY2LjMgNDguM0wyMzIuNSA3My42Yy01LjQgNC04LjUgMTAuNC04LjUgMTcuMWwwIDkuMWMwIDYuOCA1LjUgMTIuMyAxMi4zIDEyLjNjMi40IDAgNC44LS43IDYuOC0yLjFsNDEuOC0yNy45YzItMS4zIDQuNC0yLjEgNi44LTIuMWwxIDBjNi4yIDAgMTEuMyA1LjEgMTEuMyAxMS4zYzAgMy0xLjIgNS45LTMuMyA4bC0xOS45IDE5LjljLTUuOCA1LjgtMTIuOSAxMC4yLTIwLjcgMTIuOGwtMjYuNSA4LjhjLTUuOCAxLjktOS42IDcuMy05LjYgMTMuNGMwIDMuNy0xLjUgNy4zLTQuMSAxMGwtMTcuOSAxNy45Yy02LjQgNi40LTkuOSAxNS05LjkgMjRsMCA0LjNjMCAxNi40IDEzLjYgMjkuNyAyOS45IDI5LjdjMTEgMCAyMS4yLTYuMiAyNi4xLTE2bDQtOC4xYzIuNC00LjggNy40LTcuOSAxMi44LTcuOWM0LjUgMCA4LjcgMi4xIDExLjQgNS43bDE2LjMgMjEuN2MyLjEgMi45IDUuNSA0LjUgOS4xIDQuNWM4LjQgMCAxMy45LTguOSAxMC4xLTE2LjRsLTEuMS0yLjNjLTMuNS03IDAtMTUuNSA3LjUtMThsMjEuMi03LjFjNy42LTIuNSAxMi43LTkuNiAxMi43LTE3LjZjMC0xMC4zIDguMy0xOC42IDE4LjYtMTguNmwyOS40IDBjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZsLTIwLjcgMGMtNy4yIDAtMTQuMiAyLjktMTkuMyA4bC00LjcgNC43Yy0yLjEgMi4xLTMuMyA1LTMuMyA4YzAgNi4yIDUuMSAxMS4zIDExLjMgMTEuM2wxMS4zIDBjNiAwIDExLjggMi40IDE2IDYuNmw2LjUgNi41YzEuOCAxLjggMi44IDQuMyAyLjggNi44cy0xIDUtMi44IDYuOGwtNy41IDcuNUMzODYgMjYyIDM4NCAyNjYuOSAzODQgMjcyczIgMTAgNS43IDEzLjdMNDA4IDMwNGMxMC4yIDEwLjIgMjQuMSAxNiAzOC42IDE2bDcuMyAwYzYuNS0yMC4yIDEwLTQxLjcgMTAtNjRjMC0xMTEuNC04Ny42LTIwMi40LTE5Ny43LTIwNy43em0xNzIgMzA3LjljLTMuNy0yLjYtOC4yLTQuMS0xMy00LjFjLTYgMC0xMS44LTIuNC0xNi02LjZMMzk2IDMzMmMtNy43LTcuNy0xOC0xMi0yOC45LTEyYy05LjcgMC0xOS4yLTMuNS0yNi42LTkuOEwzMTQgMjg3LjRjLTExLjYtOS45LTI2LjQtMTUuNC00MS43LTE1LjRsLTIwLjkgMGMtMTIuNiAwLTI1IDMuNy0zNS41IDEwLjdMMTg4LjUgMzAxYy0xNy44IDExLjktMjguNSAzMS45LTI4LjUgNTMuM2wwIDMuMmMwIDE3IDYuNyAzMy4zIDE4LjcgNDUuM2wxNiAxNmM4LjUgOC41IDIwIDEzLjMgMzIgMTMuM2wyMS4zIDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRjMCAyLjUgLjQgNSAxLjEgNy4zYzcxLjMtNS44IDEzMi41LTQ3LjYgMTY1LjItMTA3LjJ6TTAgMjU2YTI1NiAyNTYgMCAxIDEgNTEyIDBBMjU2IDI1NiAwIDEgMSAwIDI1NnpNMTg3LjMgMTAwLjdjLTYuMi02LjItMTYuNC02LjItMjIuNiAwbC0zMiAzMmMtNi4yIDYuMi02LjIgMTYuNCAwIDIyLjZzMTYuNCA2LjIgMjIuNiAwbDMyLTMyYzYuMi02LjIgNi4yLTE2LjQgMC0yMi42elwiXVxufTtcbmNvbnN0IGZhR2xvYmVFdXJvcGUgPSBmYUVhcnRoRXVyb3BlO1xuY29uc3QgZmFDYXJ0RmxhdGJlZFN1aXRjYXNlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NhcnQtZmxhdGJlZC1zdWl0Y2FzZScsXG4gIGljb246IFs2NDAsIDUxMiwgW1wibHVnZ2FnZS1jYXJ0XCJdLCBcImY1OWRcIiwgXCJNMCAzMkMwIDE0LjMgMTQuMyAwIDMyIDBMNDggMGM0NC4yIDAgODAgMzUuOCA4MCA4MGwwIDI4OGMwIDguOCA3LjIgMTYgMTYgMTZsNDY0IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTY2LjcgMGMxLjggNSAyLjcgMTAuNCAyLjcgMTZjMCAyNi41LTIxLjUgNDgtNDggNDhzLTQ4LTIxLjUtNDgtNDhjMC01LjYgMS0xMSAyLjctMTZsLTE5Ny41IDBjMS44IDUgMi43IDEwLjQgMi43IDE2YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4cy00OC0yMS41LTQ4LTQ4YzAtNS42IDEtMTEgMi43LTE2TDE0NCA0NDhjLTQ0LjIgMC04MC0zNS44LTgwLTgwTDY0IDgwYzAtOC44LTcuMi0xNi0xNi0xNkwzMiA2NEMxNC4zIDY0IDAgNDkuNyAwIDMyek00MzIgOTZsMC00MGMwLTQuNC0zLjYtOC04LThsLTgwIDBjLTQuNCAwLTggMy42LTggOGwwIDQwIDk2IDB6TTI4OCA5NmwwLTQwYzAtMzAuOSAyNS4xLTU2IDU2LTU2bDgwIDBjMzAuOSAwIDU2IDI1LjEgNTYgNTZsMCA0MCAwIDIyNC0xOTIgMCAwLTIyNHpNNTEyIDMyMGwwLTIyNCAxNiAwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4bDAgMTI4YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4bC0xNiAwek0yNDAgOTZsMTYgMCAwIDIyNC0xNiAwYy0yNi41IDAtNDgtMjEuNS00OC00OGwwLTEyOGMwLTI2LjUgMjEuNS00OCA0OC00OHpcIl1cbn07XG5jb25zdCBmYUx1Z2dhZ2VDYXJ0ID0gZmFDYXJ0RmxhdGJlZFN1aXRjYXNlO1xuY29uc3QgZmFSZWN0YW5nbGVYbWFyayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdyZWN0YW5nbGUteG1hcmsnLFxuICBpY29uOiBbNTEyLCA1MTIsIFs2MjE2NCwgXCJyZWN0YW5nbGUtdGltZXNcIiwgXCJ0aW1lcy1yZWN0YW5nbGVcIiwgXCJ3aW5kb3ctY2xvc2VcIl0sIFwiZjQxMFwiLCBcIk02NCAzMkMyOC43IDMyIDAgNjAuNyAwIDk2TDAgNDE2YzAgMzUuMyAyOC43IDY0IDY0IDY0bDM4NCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMzIwYzAtMzUuMy0yOC43LTY0LTY0LTY0TDY0IDMyek0xNzUgMTc1YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwbDQ3IDQ3IDQ3LTQ3YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwczkuNCAyNC42IDAgMzMuOWwtNDcgNDcgNDcgNDdjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMGwtNDctNDctNDcgNDdjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwcy05LjQtMjQuNiAwLTMzLjlsNDctNDctNDctNDdjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45elwiXVxufTtcbmNvbnN0IGZhUmVjdGFuZ2xlVGltZXMgPSBmYVJlY3RhbmdsZVhtYXJrO1xuY29uc3QgZmFUaW1lc1JlY3RhbmdsZSA9IGZhUmVjdGFuZ2xlWG1hcms7XG5jb25zdCBmYVdpbmRvd0Nsb3NlID0gZmFSZWN0YW5nbGVYbWFyaztcbmNvbnN0IGZhQmFodFNpZ24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYmFodC1zaWduJyxcbiAgaWNvbjogWzMyMCwgNTEyLCBbXSwgXCJlMGFjXCIsIFwiTTE0NCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMmwwIDMyTDM3LjYgNjRDMTYuOCA2NCAwIDgwLjggMCAxMDEuNkwwIDIyNGwwIDQxLjdMMCAyODggMCA0MDYuM2MwIDIzIDE4LjcgNDEuNyA0MS43IDQxLjdsNzAuMyAwIDAgMzJjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTMyIDMyIDBjNjEuOSAwIDExMi01MC4xIDExMi0xMTJjMC00MC4xLTIxLjEtNzUuMy01Mi43LTk1LjFDMjgwLjMgMjIyLjYgMjg4IDIwMC4yIDI4OCAxNzZjMC02MS45LTUwLjEtMTEyLTExMi0xMTJsMC0zMmMwLTE3LjctMTQuMy0zMi0zMi0zMnpNMTEyIDEyOGwwIDk2LTQ4IDAgMC05NiA0OCAwem02NCA5NmwwLTk2YzI2LjUgMCA0OCAyMS41IDQ4IDQ4cy0yMS41IDQ4LTQ4IDQ4em0tNjQgNjRsMCA5Ni00OCAwIDAtOTYgNDggMHptNjQgOTZsMC05NiAzMiAwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4cy0yMS41IDQ4LTQ4IDQ4bC0zMiAwelwiXVxufTtcbmNvbnN0IGZhQm9va09wZW4gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYm9vay1vcGVuJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbMTI4MjE0LCAxMjgzNjZdLCBcImY1MThcIiwgXCJNMjQ5LjYgNDcxLjVjMTAuOCAzLjggMjIuNC00LjEgMjIuNC0xNS41bDAtMzc3LjRjMC00LjItMS42LTguNC01LTExQzI0Ny40IDUyIDIwMi40IDMyIDE0NCAzMkM5My41IDMyIDQ2LjMgNDUuMyAxOC4xIDU2LjFDNi44IDYwLjUgMCA3MS43IDAgODMuOEwwIDQ1NC4xYzAgMTEuOSAxMi44IDIwLjIgMjQuMSAxNi41QzU1LjYgNDYwLjEgMTA1LjUgNDQ4IDE0NCA0NDhjMzMuOSAwIDc5IDE0IDEwNS42IDIzLjV6bTc2LjggMEMzNTMgNDYyIDM5OC4xIDQ0OCA0MzIgNDQ4YzM4LjUgMCA4OC40IDEyLjEgMTE5LjkgMjIuNmMxMS4zIDMuOCAyNC4xLTQuNiAyNC4xLTE2LjVsMC0zNzAuM2MwLTEyLjEtNi44LTIzLjMtMTguMS0yNy42QzUyOS43IDQ1LjMgNDgyLjUgMzIgNDMyIDMyYy01OC40IDAtMTAzLjQgMjAtMTIzIDM1LjZjLTMuMyAyLjYtNSA2LjgtNSAxMUwzMDQgNDU2YzAgMTEuNCAxMS43IDE5LjMgMjIuNCAxNS41elwiXVxufTtcbmNvbnN0IGZhQm9va0pvdXJuYWxXaGlsbHMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYm9vay1qb3VybmFsLXdoaWxscycsXG4gIGljb246IFs0NDgsIDUxMiwgW1wiam91cm5hbC13aGlsbHNcIl0sIFwiZjY2YVwiLCBcIk0wIDk2QzAgNDMgNDMgMCA5NiAwTDM4NCAwbDMyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCAzMjBjMCAxNy43LTE0LjMgMzItMzIgMzJsMCA2NGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtMzIgMEw5NiA1MTJjLTUzIDAtOTYtNDMtOTYtOTZMMCA5NnpNNjQgNDE2YzAgMTcuNyAxNC4zIDMyIDMyIDMybDI1NiAwIDAtNjRMOTYgMzg0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnptOTAuNC0yMzQuNGwtMjEuMi0yMS4yYy0zIDEwLjEtNS4xIDIwLjYtNS4xIDMxLjZjMCAuMiAwIC41IC4xIC44cy4xIC41IC4xIC44TDE2NS4yIDIyNmMyLjUgMi4xIDMuNCA1LjggMi4zIDguOWMtMS4zIDMtNC4xIDUuMS03LjUgNS4xYy0xLjktLjEtMy44LS44LTUuMi0ybC0yMy42LTIwLjZDMTQyLjggMjY3IDE4Ni45IDMwNCAyNDAgMzA0czk3LjMtMzcgMTA4LjktODYuNkwzMjUuMyAyMzhjLTEuNCAxLjItMy4zIDItNS4zIDJjLTIuMi0uMS00LjQtMS4xLTYtMi44Yy0xLjItMS41LTEuOS0zLjQtMi01LjJjLjEtMi4yIDEuMS00LjQgMi44LTZsMzcuMS0zMi41YzAtLjMgMC0uNSAuMS0uOHMuMS0uNSAuMS0uOGMwLTExLTIuMS0yMS41LTUuMS0zMS42bC0yMS4yIDIxLjJjLTMuMSAzLjEtOC4xIDMuMS0xMS4zIDBzLTMuMS04LjEgMC0xMS4ybDI2LjQtMjYuNWMtOC4yLTE3LTIwLjUtMzEuNy0zNS45LTQyLjZjLTIuNy0xLjktNi4yIDEuNC01IDQuNWM4LjUgMjIuNCAzLjYgNDgtMTMgNjUuNmMtMy4yIDMuNC0zLjYgOC45LS45IDEyLjdjOS44IDE0IDEyLjcgMzEuOSA3LjUgNDguNWMtNS45IDE5LjQtMjIgMzQuMS00MS45IDM4LjNsLTEuNC0zNC4zIDEyLjYgOC42Yy42IC40IDEuNSAuNiAyLjMgLjZjMS41IDAgMi43LS44IDMuNS0ycy42LTIuOC0uMS00TDI2MCAyMjUuNGwxOC0zLjZjMS44LS40IDMuMS0yLjEgMy4xLTRzLTEuNC0zLjUtMy4xLTMuOWwtMTgtMy43IDguNS0xNC4zYy44LTEuMiAuOS0yLjkgLjEtNC4xcy0yLTItMy41LTJsLS4xIDBjLS43IC4xLTEuNSAuMy0yLjEgLjdsLTE0LjEgOS42TDI0NCA4Ny45Yy0uMS0yLjItMS45LTMuOS00LTMuOXMtMy45IDEuNi00IDMuOWwtNC42IDExMC44LTEyLTguMWMtMS41LTEuMS0zLjYtLjktNSAuNHMtMS42IDMuNC0uOCA1bDguNiAxNC4zLTE4IDMuN2MtMS44IC40LTMuMSAyLTMuMSAzLjlzMS40IDMuNiAzLjEgNGwxOCAzLjgtOC42IDE0LjJjLS4yIC42LS41IDEuNC0uNSAyYzAgMS4xIC41IDIuMSAxLjIgM2MuOCAuNiAxLjggMSAyLjggMWMuNyAwIDEuNi0uMiAyLjItLjZsMTAuNC03LjEtMS40IDMyLjhjLTE5LjktNC4xLTM2LTE4LjktNDEuOS0zOC4zYy01LjEtMTYuNi0yLjItMzQuNCA3LjYtNDguNWMyLjctMy45IDIuMy05LjMtLjktMTIuN2MtMTYuNi0xNy41LTIxLjYtNDMuMS0xMy4xLTY1LjVjMS4yLTMuMS0yLjMtNi40LTUtNC41Yy0xNS4zIDEwLjktMjcuNiAyNS42LTM1LjggNDIuNmwyNi40IDI2LjVjMy4xIDMuMSAzLjEgOC4xIDAgMTEuMnMtOC4xIDMuMS0xMS4yIDB6XCJdXG59O1xuY29uc3QgZmFKb3VybmFsV2hpbGxzID0gZmFCb29rSm91cm5hbFdoaWxscztcbmNvbnN0IGZhSGFuZGN1ZmZzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hhbmRjdWZmcycsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTRmOFwiLCBcIk0yNDAgMzJhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHpNMTkyIDQ4YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHptLTMyIDgwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDggMGMxMy4zIDAgMjQgMTAuNyAyNCAyNGwwIDE2YzAgMS43LS4yIDMuNC0uNSA1LjFDMjgwLjMgMjI5LjYgMzIwIDI4Ni4yIDMyMCAzNTJjMCA4OC40LTcxLjYgMTYwLTE2MCAxNjBTMCA0NDAuNCAwIDM1MmMwLTY1LjggMzkuNy0xMjIuNCA5Ni41LTE0Ni45Yy0uNC0xLjYtLjUtMy4zLS41LTUuMWwwLTE2YzAtMTMuMyAxMC43LTI0IDI0LTI0bDggMGMwLTE3LjcgMTQuMy0zMiAzMi0zMnptMCAzMjBhOTYgOTYgMCAxIDAgMC0xOTIgOTYgOTYgMCAxIDAgMCAxOTJ6bTE5Mi05NmMwLTI1LjktNS4xLTUwLjUtMTQuNC03My4xYzE2LjktMzIuOSA0NC44LTU5LjEgNzguOS03My45Yy0uNC0xLjYtLjUtMy4zLS41LTUuMWwwLTE2YzAtMTMuMyAxMC43LTI0IDI0LTI0bDggMGMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMybDggMGMxMy4zIDAgMjQgMTAuNyAyNCAyNGwwIDE2YzAgMS43LS4yIDMuNC0uNSA1LjFDNjAwLjMgMjI5LjYgNjQwIDI4Ni4yIDY0MCAzNTJjMCA4OC40LTcxLjYgMTYwLTE2MCAxNjBjLTYyIDAtMTE1LjgtMzUuMy0xNDIuNC04Ni45YzkuMy0yMi41IDE0LjQtNDcuMiAxNC40LTczLjF6bTIyNCAwYTk2IDk2IDAgMSAwIC0xOTIgMCA5NiA5NiAwIDEgMCAxOTIgMHpNMzY4IDBhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0em04MCA0OGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJdXG59O1xuY29uc3QgZmFUcmlhbmdsZUV4Y2xhbWF0aW9uID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RyaWFuZ2xlLWV4Y2xhbWF0aW9uJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbOTg4OCwgXCJleGNsYW1hdGlvbi10cmlhbmdsZVwiLCBcIndhcm5pbmdcIl0sIFwiZjA3MVwiLCBcIk0yNTYgMzJjMTQuMiAwIDI3LjMgNy41IDM0LjUgMTkuOGwyMTYgMzY4YzcuMyAxMi40IDcuMyAyNy43IC4yIDQwLjFTNDg2LjMgNDgwIDQ3MiA0ODBMNDAgNDgwYy0xNC4zIDAtMjcuNi03LjctMzQuNy0yMC4xcy03LTI3LjggLjItNDAuMWwyMTYtMzY4QzIyOC43IDM5LjUgMjQxLjggMzIgMjU2IDMyem0wIDEyOGMtMTMuMyAwLTI0IDEwLjctMjQgMjRsMCAxMTJjMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGwwLTExMmMwLTEzLjMtMTAuNy0yNC0yNC0yNHptMzIgMjI0YTMyIDMyIDAgMSAwIC02NCAwIDMyIDMyIDAgMSAwIDY0IDB6XCJdXG59O1xuY29uc3QgZmFFeGNsYW1hdGlvblRyaWFuZ2xlID0gZmFUcmlhbmdsZUV4Y2xhbWF0aW9uO1xuY29uc3QgZmFXYXJuaW5nID0gZmFUcmlhbmdsZUV4Y2xhbWF0aW9uO1xuY29uc3QgZmFEYXRhYmFzZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdkYXRhYmFzZScsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjFjMFwiLCBcIk00NDggODBsMCA0OGMwIDQ0LjItMTAwLjMgODAtMjI0IDgwUzAgMTcyLjIgMCAxMjhMMCA4MEMwIDM1LjggMTAwLjMgMCAyMjQgMFM0NDggMzUuOCA0NDggODB6TTM5My4yIDIxNC43YzIwLjgtNy40IDM5LjktMTYuOSA1NC44LTI4LjZMNDQ4IDI4OGMwIDQ0LjItMTAwLjMgODAtMjI0IDgwUzAgMzMyLjIgMCAyODhMMCAxODYuMWMxNC45IDExLjggMzQgMjEuMiA1NC44IDI4LjZDOTkuNyAyMzAuNyAxNTkuNSAyNDAgMjI0IDI0MHMxMjQuMy05LjMgMTY5LjItMjUuM3pNMCAzNDYuMWMxNC45IDExLjggMzQgMjEuMiA1NC44IDI4LjZDOTkuNyAzOTAuNyAxNTkuNSA0MDAgMjI0IDQwMHMxMjQuMy05LjMgMTY5LjItMjUuM2MyMC44LTcuNCAzOS45LTE2LjkgNTQuOC0yOC42bDAgODUuOWMwIDQ0LjItMTAwLjMgODAtMjI0IDgwUzAgNDc2LjIgMCA0MzJsMC04NS45elwiXVxufTtcbmNvbnN0IGZhU2hhcmUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc2hhcmUnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtcIm1haWwtZm9yd2FyZFwiXSwgXCJmMDY0XCIsIFwiTTMwNyAzNC44Yy0xMS41IDUuMS0xOSAxNi42LTE5IDI5LjJsMCA2NC0xMTIgMEM3OC44IDEyOCAwIDIwNi44IDAgMzA0QzAgNDE3LjMgODEuNSA0NjcuOSAxMDAuMiA0NzguMWMyLjUgMS40IDUuMyAxLjkgOC4xIDEuOWMxMC45IDAgMTkuNy04LjkgMTkuNy0xOS43YzAtNy41LTQuMy0xNC40LTkuOC0xOS41QzEwOC44IDQzMS45IDk2IDQxNC40IDk2IDM4NGMwLTUzIDQzLTk2IDk2LTk2bDk2IDAgMCA2NGMwIDEyLjYgNy40IDI0LjEgMTkgMjkuMnMyNSAzIDM0LjQtNS40bDE2MC0xNDRjNi43LTYuMSAxMC42LTE0LjcgMTAuNi0yMy44cy0zLjgtMTcuNy0xMC42LTIzLjhsLTE2MC0xNDRjLTkuNC04LjUtMjIuOS0xMC42LTM0LjQtNS40elwiXVxufTtcbmNvbnN0IGZhTWFpbEZvcndhcmQgPSBmYVNoYXJlO1xuY29uc3QgZmFCb3R0bGVEcm9wbGV0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JvdHRsZS1kcm9wbGV0JyxcbiAgaWNvbjogWzMyMCwgNTEyLCBbXSwgXCJlNGM0XCIsIFwiTTk2IDBDODIuNyAwIDcyIDEwLjcgNzIgMjRzMTAuNyAyNCAyNCAyNGM0LjQgMCA4IDMuNiA4IDhsMCA2NC45YzAgMTIuMi03LjIgMjMuMS0xNy4yIDMwLjFDNTMuNyAxNzQuMSAzMiAyMTIuNSAzMiAyNTZsMCAxOTJjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMTI4IDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0xOTJjMC00My41LTIxLjctODEuOS01NC44LTEwNWMtMTAtNy0xNy4yLTE3LjktMTcuMi0zMC4xTDIxNiA1NmMwLTQuNCAzLjYtOCA4LThjMTMuMyAwIDI0LTEwLjcgMjQtMjRzLTEwLjctMjQtMjQtMjRsLTggMHMwIDAgMCAwczAgMCAwIDBMMTA0IDBzMCAwIDAgMHMwIDAgMCAwTDk2IDB6bTY0IDM4MmMtMjYuNSAwLTQ4LTIwLjEtNDgtNDVjMC0xNi44IDIyLjEtNDguMSAzNi4zLTY2LjRjNi03LjggMTcuNS03LjggMjMuNSAwQzE4NS45IDI4OC45IDIwOCAzMjAuMiAyMDggMzM3YzAgMjQuOS0yMS41IDQ1LTQ4IDQ1elwiXVxufTtcbmNvbnN0IGZhTWFza0ZhY2UgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbWFzay1mYWNlJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXSwgXCJlMWQ3XCIsIFwiTTMyMCA2NGMtMjcuMiAwLTUzLjggOC03Ni40IDIzLjFsLTM3LjEgMjQuOGMtMTUuOCAxMC41LTM0LjMgMTYuMS01My4zIDE2LjFsLTkuMiAwLTE2IDAtNzIgMGMtMzAuOSAwLTU2IDI1LjEtNTYgNTZsMCA4NWMwIDU1LjEgMzcuNSAxMDMuMSA5MC45IDExNi40bDEwOCAyN0MyMzMuOCA0MzUgMjc1LjQgNDQ4IDMyMCA0NDhzODYuMi0xMyAxMjEuMS0zNS41bDEwOC0yN0M2MDIuNSAzNzIuMSA2NDAgMzI0LjEgNjQwIDI2OWwwLTg1YzAtMzAuOS0yNS4xLTU2LTU2LTU2bC03MiAwLTE2IDAtOS4yIDBjLTE5IDAtMzcuNS01LjYtNTMuMy0xNi4xTDM5Ni40IDg3LjFDMzczLjggNzIgMzQ3LjIgNjQgMzIwIDY0ek0xMzIuMyAzNDYuM2wtMjkuOC03LjRDNzAuNSAzMzAuOSA0OCAzMDIuMSA0OCAyNjlsMC04NWMwLTQuNCAzLjYtOCA4LThsNDAgMCAwIDQ4YzAgNDUuMSAxMy40IDg3LjIgMzYuMyAxMjIuM3ptNDA1LjEtNy40bC0yOS44IDcuNGMyMy0zNS4yIDM2LjMtNzcuMiAzNi4zLTEyMi4zbDAtNDggNDAgMGM0LjQgMCA4IDMuNiA4IDhsMCA4NWMwIDMzLTIyLjUgNjEuOC01NC41IDY5Ljl6TTE5MiAyMDhjMC04LjggNy4yLTE2IDE2LTE2bDIyNCAwYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2bC0yMjQgMGMtOC44IDAtMTYtNy4yLTE2LTE2em0xNiA0OGwyMjQgMGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNmwtMjI0IDBjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6bTE2IDgwYzAtOC44IDcuMi0xNiAxNi0xNmwxNjAgMGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNmwtMTYwIDBjLTguOCAwLTE2LTcuMi0xNi0xNnpcIl1cbn07XG5jb25zdCBmYUhpbGxSb2Nrc2xpZGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGlsbC1yb2Nrc2xpZGUnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImU1MDhcIiwgXCJNMjUyLjQgMTAzLjhsMjcgNDhjMi44IDUgOC4yIDguMiAxMy45IDguMmw1My4zIDBjNS44IDAgMTEuMS0zLjEgMTMuOS04LjJsMjctNDhjMi43LTQuOSAyLjctMTAuOCAwLTE1LjdsLTI3LTQ4Yy0yLjgtNS04LjItOC4yLTEzLjktOC4ybC01My4zIDBjLTUuOCAwLTExLjEgMy4xLTEzLjkgOC4ybC0yNyA0OGMtMi43IDQuOS0yLjcgMTAuOCAwIDE1Ljd6TTY4LjMgODdDNDMuMSA2MS44IDAgNzkuNyAwIDExNS4zTDAgNDMyYzAgNDQuMiAzNS44IDgwIDgwIDgwbDMxNi43IDBjMzUuNiAwIDUzLjUtNDMuMSAyOC4zLTY4LjNMNjguMyA4N3pNNTA0LjIgNDAzLjZjNC45IDIuNyAxMC44IDIuNyAxNS43IDBsNDgtMjdjNS0yLjggOC4yLTguMiA4LjItMTMuOWwwLTUzLjNjMC01LjgtMy4xLTExLjEtOC4yLTEzLjlsLTQ4LTI3Yy00LjktMi43LTEwLjgtMi43LTE1LjcgMGwtNDggMjdjLTUgMi44LTguMiA4LjItOC4yIDEzLjlsMCA1My4zYzAgNS44IDMuMSAxMS4xIDguMiAxMy45bDQ4IDI3ek0xOTIgNjRhMzIgMzIgMCAxIDAgLTY0IDAgMzIgMzIgMCAxIDAgNjQgMHpNMzg0IDI4OGEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6XCJdXG59O1xuY29uc3QgZmFSaWdodExlZnQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncmlnaHQtbGVmdCcsXG4gIGljb246IFs1MTIsIDUxMiwgW1wiZXhjaGFuZ2UtYWx0XCJdLCBcImYzNjJcIiwgXCJNMzIgOTZsMzIwIDAgMC02NGMwLTEyLjkgNy44LTI0LjYgMTkuOC0yOS42czI1LjctMi4yIDM0LjkgNi45bDk2IDk2YzYgNiA5LjQgMTQuMSA5LjQgMjIuNnMtMy40IDE2LjYtOS40IDIyLjZsLTk2IDk2Yy05LjIgOS4yLTIyLjkgMTEuOS0zNC45IDYuOXMtMTkuOC0xNi42LTE5LjgtMjkuNmwwLTY0TDMyIDE2MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMnpNNDgwIDM1MmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwtMzIwIDAgMCA2NGMwIDEyLjktNy44IDI0LjYtMTkuOCAyOS42cy0yNS43IDIuMi0zNC45LTYuOWwtOTYtOTZjLTYtNi05LjQtMTQuMS05LjQtMjIuNnMzLjQtMTYuNiA5LjQtMjIuNmw5Ni05NmM5LjItOS4yIDIyLjktMTEuOSAzNC45LTYuOXMxOS44IDE2LjYgMTkuOCAyOS42bDAgNjQgMzIwIDB6XCJdXG59O1xuY29uc3QgZmFFeGNoYW5nZUFsdCA9IGZhUmlnaHRMZWZ0O1xuY29uc3QgZmFQYXBlclBsYW5lID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BhcGVyLXBsYW5lJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbNjE5MTNdLCBcImYxZDhcIiwgXCJNNDk4LjEgNS42YzEwLjEgNyAxNS40IDE5LjEgMTMuNSAzMS4ybC02NCA0MTZjLTEuNSA5LjctNy40IDE4LjItMTYgMjNzLTE4LjkgNS40LTI4IDEuNkwyODQgNDI3LjdsLTY4LjUgNzQuMWMtOC45IDkuNy0yMi45IDEyLjktMzUuMiA4LjFTMTYwIDQ5My4yIDE2MCA0ODBsMC04My42YzAtNCAxLjUtNy44IDQuMi0xMC44TDMzMS44IDIwMi44YzUuOC02LjMgNS42LTE2LS40LTIycy0xNS43LTYuNC0yMi0uN0wxMDYgMzYwLjggMTcuNyAzMTYuNkM3LjEgMzExLjMgLjMgMzAwLjcgMCAyODguOXM1LjktMjIuOCAxNi4xLTI4LjdsNDQ4LTI1NmMxMC43LTYuMSAyMy45LTUuNSAzNCAxLjR6XCJdXG59O1xuY29uc3QgZmFSb2FkQ2lyY2xlRXhjbGFtYXRpb24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncm9hZC1jaXJjbGUtZXhjbGFtYXRpb24nLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU1NjVcIiwgXCJNMjEzLjIgMzJMMjg4IDMybDAgNjRjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTY0IDc0LjggMGMyNy4xIDAgNTEuMyAxNy4xIDYwLjMgNDIuNmw0Mi43IDEyMC42Yy0xMC45LTIuMS0yMi4yLTMuMi0zMy44LTMuMmMtNTkuNSAwLTExMi4xIDI5LjYtMTQ0IDc0LjhsMC00Mi44YzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMybDAgNjRjMCAxNy43IDE0LjMgMzIgMzIgMzJjMi4zIDAgNC42LS4zIDYuOC0uN2MtNC41IDE1LjUtNi44IDMxLjgtNi44IDQ4LjdjMCA1LjQgLjIgMTAuNyAuNyAxNmwtLjcgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJsMCA2NEw4Ni42IDQ4MEM1Ni41IDQ4MCAzMiA0NTUuNSAzMiA0MjUuNGMwLTYuMiAxLjEtMTIuNCAzLjEtMTguMkwxNTIuOSA3NC42QzE2MiA0OS4xIDE4Ni4xIDMyIDIxMy4yIDMyek00OTYgMjI0YTE0NCAxNDQgMCAxIDEgMCAyODggMTQ0IDE0NCAwIDEgMSAwLTI4OHptMCAyNDBhMjQgMjQgMCAxIDAgMC00OCAyNCAyNCAwIDEgMCAwIDQ4em0wLTE5MmMtOC44IDAtMTYgNy4yLTE2IDE2bDAgODBjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNmwwLTgwYzAtOC44LTcuMi0xNi0xNi0xNnpcIl1cbn07XG5jb25zdCBmYUR1bmdlb24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZHVuZ2VvbicsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZjZkOVwiLCBcIk0zMzYuNiAxNTYuNWMxLjMgMS4xIDIuNyAyLjIgMy45IDMuM2M5LjMgOC4yIDIzIDEwLjUgMzMuNCAzLjZsNjcuNi00NS4xYzExLjQtNy42IDE0LjItMjMuMiA1LjEtMzMuNEM0MzAgNjYuNiA0MTAuOSA1MC42IDM4OS43IDM3LjZjLTExLjktNy4zLTI2LjktMS40LTMyLjEgMTEuNmwtMzAuNSA3Ni4yYy00LjUgMTEuMSAuMiAyMy42IDkuNSAzMS4yek0zMjggMzYuOGM1LjEtMTIuOC0xLjYtMjcuNC0xNS0zMC41QzI5NC43IDIuMiAyNzUuNiAwIDI1NiAwcy0zOC43IDIuMi01NyA2LjRDMTg1LjUgOS40IDE3OC44IDI0IDE4NCAzNi44bDMwLjMgNzUuOGM0LjUgMTEuMyAxNi44IDE3LjIgMjkgMTZjNC4yLS40IDguNC0uNiAxMi43LS42czguNiAuMiAxMi43IC42YzEyLjEgMS4yIDI0LjQtNC43IDI5LTE2TDMyOCAzNi44ek02NS41IDg1Yy05LjEgMTAuMi02LjMgMjUuOCA1LjEgMzMuNGw2Ny42IDQ1LjFjMTAuMyA2LjkgMjQuMSA0LjYgMzMuNC0zLjZjMS4zLTEuMSAyLjYtMi4zIDQtMy4zYzkuMy03LjUgMTMuOS0yMC4xIDkuNS0zMS4yTDE1NC40IDQ5LjJjLTUuMi0xMi45LTIwLjMtMTguOC0zMi4xLTExLjZDMTAxLjEgNTAuNiA4MiA2Ni42IDY1LjUgODV6bTMxNCAxMzcuMWMuOSAzLjMgMS43IDYuNiAyLjMgMTBjMi41IDEzIDEzIDIzLjkgMjYuMiAyMy45bDgwIDBjMTMuMyAwIDI0LjEtMTAuOCAyMi45LTI0Yy0yLjUtMjcuMi05LjMtNTMuMi0xOS43LTc3LjNjLTUuNS0xMi45LTIxLjQtMTYuNi0zMy4xLTguOWwtNjguNiA0NS43Yy05LjggNi41LTEzLjIgMTkuMi0xMCAzMC41ek01My45IDE0NS44Yy0xMS42LTcuOC0yNy42LTQtMzMuMSA4LjlDMTAuNCAxNzguOCAzLjYgMjA0LjggMS4xIDIzMmMtMS4yIDEzLjIgOS42IDI0IDIyLjkgMjRsODAgMGMxMy4zIDAgMjMuOC0xMC44IDI2LjItMjMuOWMuNi0zLjQgMS40LTYuNyAyLjMtMTBjMy4xLTExLjQtLjItMjQtMTAtMzAuNUw1My45IDE0NS44ek0xMDQgMjg4bC04MCAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNGwwIDQ4YzAgMTMuMyAxMC43IDI0IDI0IDI0bDgwIDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRsMC00OGMwLTEzLjMtMTAuNy0yNC0yNC0yNHptMzA0IDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0bDAgNDhjMCAxMy4zIDEwLjcgMjQgMjQgMjRsODAgMGMxMy4zIDAgMjQtMTAuNyAyNC0yNGwwLTQ4YzAtMTMuMy0xMC43LTI0LTI0LTI0bC04MCAwek0yNCA0MTZjLTEzLjMgMC0yNCAxMC43LTI0IDI0bDAgNDhjMCAxMy4zIDEwLjcgMjQgMjQgMjRsODAgMGMxMy4zIDAgMjQtMTAuNyAyNC0yNGwwLTQ4YzAtMTMuMy0xMC43LTI0LTI0LTI0bC04MCAwem0zODQgMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRsMCA0OGMwIDEzLjMgMTAuNyAyNCAyNCAyNGw4MCAwYzEzLjMgMCAyNC0xMC43IDI0LTI0bDAtNDhjMC0xMy4zLTEwLjctMjQtMjQtMjRsLTgwIDB6TTI3MiAxOTJjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZsMCAyNzJjMCA4LjggNy4yIDE2IDE2IDE2czE2LTcuMiAxNi0xNmwwLTI3MnptLTY0IDMyYzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2bDAgMjQwYzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZsMC0yNDB6bTEyOCAwYzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2bDAgMjQwYzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZsMC0yNDB6XCJdXG59O1xuY29uc3QgZmFBbGlnblJpZ2h0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2FsaWduLXJpZ2h0JyxcbiAgaWNvbjogWzQ0OCwgNTEyLCBbXSwgXCJmMDM4XCIsIFwiTTQ0OCA2NGMwIDE3LjctMTQuMyAzMi0zMiAzMkwxOTIgOTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJsMjI0IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJ6bTAgMjU2YzAgMTcuNy0xNC4zIDMyLTMyIDMybC0yMjQgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmwyMjQgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnpNMCAxOTJjMC0xNy43IDE0LjMtMzIgMzItMzJsMzg0IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJMMzIgMjI0Yy0xNy43IDAtMzItMTQuMy0zMi0zMnpNNDQ4IDQ0OGMwIDE3LjctMTQuMyAzMi0zMiAzMkwzMiA0ODBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJsMzg0IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJ6XCJdXG59O1xuY29uc3QgZmFNb25leUJpbGwxV2F2ZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtb25leS1iaWxsLTEtd2F2ZScsXG4gIGljb246IFs1NzYsIDUxMiwgW1wibW9uZXktYmlsbC13YXZlLWFsdFwiXSwgXCJmNTNiXCIsIFwiTTAgMTEyLjVMMCA0MjIuM2MwIDE4IDEwLjEgMzUgMjcgNDEuM2M4NyAzMi41IDE3NCAxMC4zIDI2MS0xMS45Yzc5LjgtMjAuMyAxNTkuNi00MC43IDIzOS4zLTE4LjljMjMgNi4zIDQ4LjctOS41IDQ4LjctMzMuNGwwLTMwOS45YzAtMTgtMTAuMS0zNS0yNy00MS4zQzQ2MiAxNS45IDM3NSAzOC4xIDI4OCA2MC4zQzIwOC4yIDgwLjYgMTI4LjQgMTAwLjkgNDguNyA3OS4xQzI1LjYgNzIuOCAwIDg4LjYgMCAxMTIuNXpNMTI4IDQxNmwtNjQgMCAwLTY0YzM1LjMgMCA2NCAyOC43IDY0IDY0ek02NCAyMjRsMC02NCA2NCAwYzAgMzUuMy0yOC43IDY0LTY0IDY0ek00NDggMzUyYzAtMzUuMyAyOC43LTY0IDY0LTY0bDAgNjQtNjQgMHptNjQtMTkyYy0zNS4zIDAtNjQtMjguNy02NC02NGw2NCAwIDAgNjR6TTM4NCAyNTZjMCA2MS45LTQzIDExMi05NiAxMTJzLTk2LTUwLjEtOTYtMTEyczQzLTExMiA5Ni0xMTJzOTYgNTAuMSA5NiAxMTJ6TTI1MiAyMDhjMCA5LjcgNi45IDE3LjcgMTYgMTkuNmwwIDQ4LjQtNCAwYy0xMSAwLTIwIDktMjAgMjBzOSAyMCAyMCAyMGwyNCAwIDI0IDBjMTEgMCAyMC05IDIwLTIwcy05LTIwLTIwLTIwbC00IDAgMC02OGMwLTExLTktMjAtMjAtMjBsLTE2IDBjLTExIDAtMjAgOS0yMCAyMHpcIl1cbn07XG5jb25zdCBmYU1vbmV5QmlsbFdhdmVBbHQgPSBmYU1vbmV5QmlsbDFXYXZlO1xuY29uc3QgZmFMaWZlUmluZyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdsaWZlLXJpbmcnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYxY2RcIiwgXCJNMzY3LjIgNDEyLjVDMzM1LjkgNDM0LjkgMjk3LjUgNDQ4IDI1NiA0NDhzLTc5LjktMTMuMS0xMTEuMi0zNS41bDU4LTU4YzE1LjggOC42IDM0IDEzLjUgNTMuMyAxMy41czM3LjQtNC45IDUzLjMtMTMuNWw1OCA1OHptOTAuNyAuOGMzMy44LTQzLjQgNTQtOTggNTQtMTU3LjNzLTIwLjItMTEzLjktNTQtMTU3LjNjOS0xMi41IDcuOS0zMC4xLTMuNC00MS4zUzQyNS44IDQ1IDQxMy4zIDU0QzM2OS45IDIwLjIgMzE1LjMgMCAyNTYgMFMxNDIuMSAyMC4yIDk4LjcgNTRjLTEyLjUtOS0zMC4xLTcuOS00MS4zIDMuNFM0NSA4Ni4yIDU0IDk4LjdDMjAuMiAxNDIuMSAwIDE5Ni43IDAgMjU2czIwLjIgMTEzLjkgNTQgMTU3LjNjLTkgMTIuNS03LjkgMzAuMSAzLjQgNDEuM1M4Ni4yIDQ2NyA5OC43IDQ1OGM0My40IDMzLjggOTggNTQgMTU3LjMgNTRzMTEzLjktMjAuMiAxNTcuMy01NGMxMi41IDkgMzAuMSA3LjkgNDEuMy0zLjRzMTIuNC0yOC44IDMuNC00MS4zem0tNDUuNS00Ni4xbC01OC01OGM4LjYtMTUuOCAxMy41LTM0IDEzLjUtNTMuM3MtNC45LTM3LjQtMTMuNS01My4zbDU4LTU4QzQzNC45IDE3Ni4xIDQ0OCAyMTQuNSA0NDggMjU2cy0xMy4xIDc5LjktMzUuNSAxMTEuMnpNMzY3LjIgOTkuNWwtNTggNThjLTE1LjgtOC42LTM0LTEzLjUtNTMuMy0xMy41cy0zNy40IDQuOS01My4zIDEzLjVsLTU4LTU4QzE3Ni4xIDc3LjEgMjE0LjUgNjQgMjU2IDY0czc5LjkgMTMuMSAxMTEuMiAzNS41ek0xNTcuNSAzMDkuM2wtNTggNThDNzcuMSAzMzUuOSA2NCAyOTcuNSA2NCAyNTZzMTMuMS03OS45IDM1LjUtMTExLjJsNTggNThjLTguNiAxNS44LTEzLjUgMzQtMTMuNSA1My4zczQuOSAzNy40IDEzLjUgNTMuM3pNMjA4IDI1NmE0OCA0OCAwIDEgMSA5NiAwIDQ4IDQ4IDAgMSAxIC05NiAwelwiXVxufTtcbmNvbnN0IGZhSGFuZHMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGFuZHMnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtcInNpZ24tbGFuZ3VhZ2VcIiwgXCJzaWduaW5nXCJdLCBcImYyYTdcIiwgXCJNNTQ0IDE2MGwtLjEgNzIuNmMtLjEgNTIuMi0yNCAxMDEtNjQgMTMzLjFjLjEtMS45IC4xLTMuOCAuMS01LjdsMC04YzAtNzEuOC0zNy0xMzguNi05Ny45LTE3Ni43bC02MC4yLTM3LjZjLTguNi01LjQtMTcuOS04LjQtMjcuMy05LjRMMjQ4LjcgNDguOGMtNi42LTExLjUtMi43LTI2LjIgOC44LTMyLjhzMjYuMi0yLjcgMzIuOCA4LjhsNzggMTM1LjFjMy4zIDUuNyAxMC43IDcuNyAxNi40IDQuNHM3LjctMTAuNyA0LjQtMTYuNGwtNjItMTA3LjRjLTYuNi0xMS41LTIuNy0yNi4yIDguOC0zMi44UzM2MiA1IDM2OC42IDE2LjVsNjggMTE3LjhzMCAwIDAgMHMwIDAgMCAwbDQzLjMgNzVMNDgwIDE2MGMwLTE3LjcgMTQuNC0zMiAzMi0zMnMzMiAxNC40IDMyIDMyek0yNDMuOSA4OC41TDI2OC41IDEzMWMtMTMuOSA0LjUtMjYuNCAxMy43LTM0LjcgMjdjLS45IDEuNC0xLjcgMi45LTIuNSA0LjRsLTI4LjktNTBjLTYuNi0xMS41LTIuNy0yNi4yIDguOC0zMi44czI2LjItMi43IDMyLjggOC44em0tNDYuNCA2My43bDI2LjggNDYuNGMuNiA2IDIuMSAxMS44IDQuMyAxNy40bC00LjcgMC0xMy4zIDBzMCAwIDAgMEwxNzkgMjE2bC0yMy0zOS44Yy02LjYtMTEuNS0yLjctMjYuMiA4LjgtMzIuOHMyNi4yLTIuNyAzMi44IDguOHpNMjYwLjkgMTc1YzkuNC0xNSAyOS4xLTE5LjUgNDQuMS0xMC4ybDYwLjIgMzcuNkM0MTYuNyAyMzQuNyA0NDggMjkxLjIgNDQ4IDM1MmwwIDhjMCA4My45LTY4LjEgMTUyLTE1MiAxNTJsLTE3NiAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0bDkyIDBjNi42IDAgMTItNS40IDEyLTEycy01LjQtMTItMTItMTJMODggNDQwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0bDEyNCAwYzYuNiAwIDEyLTUuNCAxMi0xMnMtNS40LTEyLTEyLTEyTDU2IDM2OGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGwxNTYgMGM2LjYgMCAxMi01LjQgMTItMTJzLTUuNC0xMi0xMi0xMkw4OCAyOTZjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjRsMTM2IDBzMCAwIDAgMHMwIDAgMCAwbDkzLjIgMEwyNzEgMjE5LjFjLTE1LTkuNC0xOS41LTI5LjEtMTAuMi00NC4xelwiXVxufTtcbmNvbnN0IGZhU2lnbkxhbmd1YWdlID0gZmFIYW5kcztcbmNvbnN0IGZhU2lnbmluZyA9IGZhSGFuZHM7XG5jb25zdCBmYUNhbGVuZGFyRGF5ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2NhbGVuZGFyLWRheScsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjc4M1wiLCBcIk0xMjggMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDMyIDEyOCAwIDAtMzJjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMmwwIDMyIDQ4IDBjMjYuNSAwIDQ4IDIxLjUgNDggNDhsMCA0OEwwIDE2MGwwLTQ4QzAgODUuNSAyMS41IDY0IDQ4IDY0bDQ4IDAgMC0zMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNMCAxOTJsNDQ4IDAgMCAyNzJjMCAyNi41LTIxLjUgNDgtNDggNDhMNDggNTEyYy0yNi41IDAtNDgtMjEuNS00OC00OEwwIDE5MnptODAgNjRjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDk2YzAgOC44IDcuMiAxNiAxNiAxNmw5NiAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTk2YzAtOC44LTcuMi0xNi0xNi0xNmwtOTYgMHpcIl1cbn07XG5jb25zdCBmYVdhdGVyTGFkZGVyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3dhdGVyLWxhZGRlcicsXG4gIGljb246IFs1NzYsIDUxMiwgW1wibGFkZGVyLXdhdGVyXCIsIFwic3dpbW1pbmctcG9vbFwiXSwgXCJmNWM1XCIsIFwiTTEyOCAxMjcuN0MxMjggNzQuOSAxNzAuOSAzMiAyMjMuNyAzMmM0OC4zIDAgODkgMzYgOTUgODMuOWwxIDguMmMyLjIgMTcuNS0xMC4yIDMzLjUtMjcuOCAzNS43cy0zMy41LTEwLjItMzUuNy0yNy44bC0xLTguMmMtMi0xNS45LTE1LjUtMjcuOC0zMS41LTI3LjhjLTE3LjUgMC0zMS43IDE0LjItMzEuNyAzMS43bDAgOTYuMyAxOTIgMCAwLTk2LjNDMzg0IDc0LjkgNDI2LjkgMzIgNDc5LjcgMzJjNDguMyAwIDg5IDM2IDk1IDgzLjlsMSA4LjJjMi4yIDE3LjUtMTAuMiAzMy41LTI3LjggMzUuN3MtMzMuNS0xMC4yLTM1LjctMjcuOGwtMS04LjJjLTItMTUuOS0xNS41LTI3LjgtMzEuNS0yNy44Yy0xNy41IDAtMzEuNyAxNC4yLTMxLjcgMzEuN0w0NDggMzYxYy0xLjYgMS0zLjMgMi00LjggMy4xYy0xOCAxMi40LTQwLjEgMjAuMy01OS4yIDIwLjNjMCAwIDAgMCAwIDBsMC05Ni41LTE5MiAwIDAgOTYuNWMtMTkgMC00MS4yLTcuOS01OS4xLTIwLjNjLTEuNi0xLjEtMy4yLTIuMi00LjktMy4xbDAtMjMzLjN6TTMwNi41IDM4OS45QzMyOSA0MDUuNCAzNTYuNSA0MTYgMzg0IDQxNmMyNi45IDAgNTUuNC0xMC44IDc3LjQtMjYuMWMwIDAgMCAwIDAgMGMxMS45LTguNSAyOC4xLTcuOCAzOS4yIDEuN2MxNC40IDExLjkgMzIuNSAyMSA1MC42IDI1LjJjMTcuMiA0IDI3LjkgMjEuMiAyMy45IDM4LjRzLTIxLjIgMjcuOS0zOC40IDIzLjljLTI0LjUtNS43LTQ0LjktMTYuNS01OC4yLTI1QzQ0OS41IDQ2OS43IDQxNyA0ODAgMzg0IDQ4MGMtMzEuOSAwLTYwLjYtOS45LTgwLjQtMTguOWMtNS44LTIuNy0xMS4xLTUuMy0xNS42LTcuN2MtNC41IDIuNC05LjcgNS4xLTE1LjYgNy43Yy0xOS44IDktNDguNSAxOC45LTgwLjQgMTguOWMtMzMgMC02NS41LTEwLjMtOTQuNS0yNS44Yy0xMy40IDguNC0zMy43IDE5LjMtNTguMiAyNWMtMTcuMiA0LTM0LjQtNi43LTM4LjQtMjMuOXM2LjctMzQuNCAyMy45LTM4LjRjMTguMS00LjIgMzYuMi0xMy4zIDUwLjYtMjUuMmMxMS4xLTkuNCAyNy4zLTEwLjEgMzkuMi0xLjdjMCAwIDAgMCAwIDBDMTM2LjcgNDA1LjIgMTY1LjEgNDE2IDE5MiA0MTZjMjcuNSAwIDU1LTEwLjYgNzcuNS0yNi4xYzExLjEtNy45IDI1LjktNy45IDM3IDB6XCJdXG59O1xuY29uc3QgZmFMYWRkZXJXYXRlciA9IGZhV2F0ZXJMYWRkZXI7XG5jb25zdCBmYVN3aW1taW5nUG9vbCA9IGZhV2F0ZXJMYWRkZXI7XG5jb25zdCBmYUFycm93c1VwRG93biA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhcnJvd3MtdXAtZG93bicsXG4gIGljb246IFszMjAsIDUxMiwgW1wiYXJyb3dzLXZcIl0sIFwiZjA3ZFwiLCBcIk0xODIuNiA5LjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwbC05NiA5NmMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMEwxMjggMTA5LjNsMCAyOTMuNUw4Ni42IDM2MS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM2w5NiA5NmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGw5Ni05NmMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMEwxOTIgNDAyLjdsMC0yOTMuNSA0MS40IDQxLjRjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM2wtOTYtOTZ6XCJdXG59O1xuY29uc3QgZmFBcnJvd3NWID0gZmFBcnJvd3NVcERvd247XG5jb25zdCBmYUZhY2VHcmltYWNlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZhY2UtZ3JpbWFjZScsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyODU1NiwgXCJncmltYWNlXCJdLCBcImY1N2ZcIiwgXCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6bTk2LTExMmwtOCAwIDAtNDAgNTUuMyAwYy0zLjggMjIuNy0yMy42IDQwLTQ3LjMgNDB6bTQ3LjMtNTZMMzQ0IDM0NGwwLTQwIDggMGMyMy44IDAgNDMuNSAxNy4zIDQ3LjMgNDB6TTMyOCAzNDRsLTY0IDAgMC00MCA2NCAwIDAgNDB6bTAgNTZsLTY0IDAgMC00MCA2NCAwIDAgNDB6bS04MC05NmwwIDQwLTY0IDAgMC00MCA2NCAwem0wIDU2bDAgNDAtNjQgMCAwLTQwIDY0IDB6bS04MC0xNmwtNTUuMyAwYzMuOC0yMi43IDIzLjYtNDAgNDcuMy00MGw4IDAgMCA0MHptMCA1NmwtOCAwYy0yMy44IDAtNDMuNS0xNy4zLTQ3LjMtNDBsNTUuMyAwIDAgNDB6TTE0NC40IDIwOGEzMiAzMiAwIDEgMSA2NCAwIDMyIDMyIDAgMSAxIC02NCAwem0xOTItMzJhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0elwiXVxufTtcbmNvbnN0IGZhR3JpbWFjZSA9IGZhRmFjZUdyaW1hY2U7XG5jb25zdCBmYVdoZWVsY2hhaXJNb3ZlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3doZWVsY2hhaXItbW92ZScsXG4gIGljb246IFs0NDgsIDUxMiwgW1wid2hlZWxjaGFpci1hbHRcIl0sIFwiZTJjZVwiLCBcIk0zMjAgNDhhNDggNDggMCAxIDEgOTYgMCA0OCA0OCAwIDEgMSAtOTYgMHpNMjA0LjUgMTIxLjNjLTUuNC0yLjUtMTEuNy0xLjktMTYuNCAxLjdsLTQwLjkgMzAuN2MtMTQuMSAxMC42LTM0LjIgNy43LTQ0LjgtNi40cy03LjctMzQuMiA2LjQtNDQuOGw0MC45LTMwLjdjMjMuNy0xNy44IDU1LjMtMjEgODIuMS04LjRsOTAuNCA0Mi41YzI5LjEgMTMuNyAzNi44IDUxLjYgMTUuMiA3NS41TDI5OS4xIDIyNGw5Ny40IDBjMzAuMyAwIDUzIDI3LjcgNDcuMSA1Ny40TDQxNS40IDQyMi4zYy0zLjUgMTcuMy0yMC4zIDI4LjYtMzcuNyAyNS4xcy0yOC42LTIwLjMtMjUuMS0zNy43TDM3NyAyODhsLTcwLjMgMGM4LjYgMTkuNiAxMy4zIDQxLjIgMTMuMyA2NGMwIDg4LjQtNzEuNiAxNjAtMTYwIDE2MFMwIDQ0MC40IDAgMzUyczcxLjYtMTYwIDE2MC0xNjBjMTEuMSAwIDIyIDEuMSAzMi40IDMuM2w1NC4yLTU0LjItNDIuMS0xOS44ek0xNjAgNDQ4YTk2IDk2IDAgMSAwIDAtMTkyIDk2IDk2IDAgMSAwIDAgMTkyelwiXVxufTtcbmNvbnN0IGZhV2hlZWxjaGFpckFsdCA9IGZhV2hlZWxjaGFpck1vdmU7XG5jb25zdCBmYVR1cm5Eb3duID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3R1cm4tZG93bicsXG4gIGljb246IFszODQsIDUxMiwgWzEwNTQ5LCBcImxldmVsLWRvd24tYWx0XCJdLCBcImYzYmVcIiwgXCJNMzUwIDMzNC41YzMuOCA4LjggMiAxOS00LjYgMjZsLTEzNiAxNDRjLTQuNSA0LjgtMTAuOCA3LjUtMTcuNCA3LjVzLTEyLjktMi43LTE3LjQtNy41bC0xMzYtMTQ0Yy02LjYtNy04LjQtMTcuMi00LjYtMjZzMTIuNS0xNC41IDIyLTE0LjVsODggMCAwLTE5MmMwLTE3LjctMTQuMy0zMi0zMi0zMkwzMiA5NkMxNC4zIDk2IDAgODEuNyAwIDY0TDAgMzJDMCAxNC4zIDE0LjMgMCAzMiAwbDgwIDBjNzAuNyAwIDEyOCA1Ny4zIDEyOCAxMjhsMCAxOTIgODggMGM5LjYgMCAxOC4yIDUuNyAyMiAxNC41elwiXVxufTtcbmNvbnN0IGZhTGV2ZWxEb3duQWx0ID0gZmFUdXJuRG93bjtcbmNvbnN0IGZhUGVyc29uV2Fsa2luZ0Fycm93UmlnaHQgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGVyc29uLXdhbGtpbmctYXJyb3ctcmlnaHQnLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU1NTJcIiwgXCJNMjA4IDk2YTQ4IDQ4IDAgMSAwIDAtOTYgNDggNDggMCAxIDAgMCA5NnpNMTIzLjcgMjAwLjVjMS0uNCAxLjktLjggMi45LTEuMmwtMTYuOSA2My41Yy01LjYgMjEuMS0uMSA0My42IDE0LjcgNTkuN2w3MC43IDc3LjEgMjIgODguMWM0LjMgMTcuMSAyMS43IDI3LjYgMzguOCAyMy4zczI3LjYtMjEuNyAyMy4zLTM4LjhsLTIzLTkyLjFjLTEuOS03LjgtNS44LTE0LjktMTEuMi0yMC44bC00OS41LTU0IDE5LjMtNjUuNSA5LjYgMjNjNC40IDEwLjYgMTIuNSAxOS4zIDIyLjggMjQuNWwyNi43IDEzLjNjMTUuOCA3LjkgMzUgMS41IDQyLjktMTQuM3MxLjUtMzUtMTQuMy00Mi45TDI4MSAyMzIuN2wtMTUuMy0zNi44QzI0OC41IDE1NC44IDIwOC4zIDEyOCAxNjMuNyAxMjhjLTIyLjggMC00NS4zIDQuOC02Ni4xIDE0bC04IDMuNWMtMzIuOSAxNC42LTU4LjEgNDIuNC02OS40IDc2LjVsLTIuNiA3LjhjLTUuNiAxNi44IDMuNSAzNC45IDIwLjIgNDAuNXMzNC45LTMuNSA0MC41LTIwLjJsMi42LTcuOGM1LjctMTcuMSAxOC4zLTMwLjkgMzQuNy0zOC4ybDgtMy41em0tMzAgMTM1LjFMNjguNyAzOTggOS40IDQ1Ny40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwTDExNi4zIDQ0MWM0LjYtNC42IDguMi0xMC4xIDEwLjYtMTYuMWwxNC41LTM2LjItNDAuNy00NC40Yy0yLjUtMi43LTQuOC01LjYtNy04LjZ6TTU1MC42IDE1My40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM0w1MzAuNyAyMjQgMzg0IDIyNGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwxNDYuNyAwLTI1LjQgMjUuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMGw4MC04MGMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM2wtODAtODB6XCJdXG59O1xuY29uc3QgZmFTcXVhcmVFbnZlbG9wZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdzcXVhcmUtZW52ZWxvcGUnLFxuICBpY29uOiBbNDQ4LCA1MTIsIFtcImVudmVsb3BlLXNxdWFyZVwiXSwgXCJmMTk5XCIsIFwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZMMCA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzIwIDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0zMjBjMC0zNS4zLTI4LjctNjQtNjQtNjRMNjQgMzJ6TTIxOCAyNzEuN0w2NC4yIDE3Mi40QzY2IDE1Ni40IDc5LjUgMTQ0IDk2IDE0NGwyNTYgMGMxNi41IDAgMzAgMTIuNCAzMS44IDI4LjRMMjMwIDI3MS43Yy0xLjggMS4yLTMuOSAxLjgtNiAxLjhzLTQuMi0uNi02LTEuOHptMjkuNCAyNi45TDM4NCAyMTAuNCAzODQgMzM2YzAgMTcuNy0xNC4zIDMyLTMyIDMyTDk2IDM2OGMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC0xMjUuNiAxMzYuNiA4OC4yYzcgNC41IDE1LjEgNi45IDIzLjQgNi45czE2LjQtMi40IDIzLjQtNi45elwiXVxufTtcbmNvbnN0IGZhRW52ZWxvcGVTcXVhcmUgPSBmYVNxdWFyZUVudmVsb3BlO1xuY29uc3QgZmFEaWNlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2RpY2UnLFxuICBpY29uOiBbNjQwLCA1MTIsIFsxMjc5MjJdLCBcImY1MjJcIiwgXCJNMjc0LjkgMzQuM2MtMjguMS0yOC4xLTczLjctMjguMS0xMDEuOCAwTDM0LjMgMTczLjFjLTI4LjEgMjguMS0yOC4xIDczLjcgMCAxMDEuOEwxNzMuMSA0MTMuN2MyOC4xIDI4LjEgNzMuNyAyOC4xIDEwMS44IDBMNDEzLjcgMjc0LjljMjguMS0yOC4xIDI4LjEtNzMuNyAwLTEwMS44TDI3NC45IDM0LjN6TTIwMCAyMjRhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHpNOTYgMjAwYTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHpNMjI0IDM3NmEyNCAyNCAwIDEgMSAwLTQ4IDI0IDI0IDAgMSAxIDAgNDh6TTM1MiAyMDBhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4ek0yMjQgMTIwYTI0IDI0IDAgMSAxIDAtNDggMjQgMjQgMCAxIDEgMCA0OHptOTYgMzI4YzAgMzUuMyAyOC43IDY0IDY0IDY0bDE5MiAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMTkyYzAtMzUuMy0yOC43LTY0LTY0LTY0bC0xMTQuMyAwYzExLjYgMzYgMy4xIDc3LTI1LjQgMTA1LjVMMzIwIDQxMy44bDAgMzQuMnpNNDgwIDMyOGEyNCAyNCAwIDEgMSAwIDQ4IDI0IDI0IDAgMSAxIDAtNDh6XCJdXG59O1xuY29uc3QgZmFCb3dsaW5nQmFsbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdib3dsaW5nLWJhbGwnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImY0MzZcIiwgXCJNMjU2IDUxMkEyNTYgMjU2IDAgMSAwIDI1NiAwYTI1NiAyNTYgMCAxIDAgMCA1MTJ6TTI0MCA4MGEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6TTIwOCAyMDhhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptLTY0LTY0YTMyIDMyIDAgMSAxIDAgNjQgMzIgMzIgMCAxIDEgMC02NHpcIl1cbn07XG5jb25zdCBmYUJyYWluID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JyYWluJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI5NTA0XSwgXCJmNWRjXCIsIFwiTTE4NCAwYzMwLjkgMCA1NiAyNS4xIDU2IDU2bDAgNDAwYzAgMzAuOS0yNS4xIDU2LTU2IDU2Yy0yOC45IDAtNTIuNy0yMS45LTU1LjctNTAuMWMtNS4yIDEuNC0xMC43IDIuMS0xNi4zIDIuMWMtMzUuMyAwLTY0LTI4LjctNjQtNjRjMC03LjQgMS4zLTE0LjYgMy42LTIxLjJDMjEuNCAzNjcuNCAwIDMzOC4yIDAgMzA0YzAtMzEuOSAxOC43LTU5LjUgNDUuOC03Mi4zQzM3LjEgMjIwLjggMzIgMjA3IDMyIDE5MmMwLTMwLjcgMjEuNi01Ni4zIDUwLjQtNjIuNkM4MC44IDEyMy45IDgwIDExOCA4MCAxMTJjMC0yOS45IDIwLjYtNTUuMSA0OC4zLTYyLjFDMTMxLjMgMjEuOSAxNTUuMSAwIDE4NCAwek0zMjggMGMyOC45IDAgNTIuNiAyMS45IDU1LjcgNDkuOWMyNy44IDcgNDguMyAzMi4xIDQ4LjMgNjIuMWMwIDYtLjggMTEuOS0yLjQgMTcuNGMyOC44IDYuMiA1MC40IDMxLjkgNTAuNCA2Mi42YzAgMTUtNS4xIDI4LjgtMTMuOCAzOS43QzQ5My4zIDI0NC41IDUxMiAyNzIuMSA1MTIgMzA0YzAgMzQuMi0yMS40IDYzLjQtNTEuNiA3NC44YzIuMyA2LjYgMy42IDEzLjggMy42IDIxLjJjMCAzNS4zLTI4LjcgNjQtNjQgNjRjLTUuNiAwLTExLjEtLjctMTYuMy0yLjFjLTMgMjguMi0yNi44IDUwLjEtNTUuNyA1MC4xYy0zMC45IDAtNTYtMjUuMS01Ni01NmwwLTQwMGMwLTMwLjkgMjUuMS01NiA1Ni01NnpcIl1cbn07XG5jb25zdCBmYUJhbmRhZ2UgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYmFuZGFnZScsXG4gIGljb246IFs2NDAsIDUxMiwgWzEyOTY1NywgXCJiYW5kLWFpZFwiXSwgXCJmNDYyXCIsIFwiTTQ4MCA0MTZsOTYgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTE5MmMwLTM1LjMtMjguNy02NC02NC02NGwtOTYgMCAwIDMyMHpNNDQ4IDk2TDE5MiA5NmwwIDMyMCAyNTYgMCAwLTMyMHpNNjQgOTZDMjguNyA5NiAwIDEyNC43IDAgMTYwTDAgMzUyYzAgMzUuMyAyOC43IDY0IDY0IDY0bDk2IDAgMC0zMjBMNjQgOTZ6TTI0OCAyMDhhMjQgMjQgMCAxIDEgNDggMCAyNCAyNCAwIDEgMSAtNDggMHptMTIwLTI0YTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHpNMjQ4IDMwNGEyNCAyNCAwIDEgMSA0OCAwIDI0IDI0IDAgMSAxIC00OCAwem0xMjAtMjRhMjQgMjQgMCAxIDEgMCA0OCAyNCAyNCAwIDEgMSAwLTQ4elwiXVxufTtcbmNvbnN0IGZhQmFuZEFpZCA9IGZhQmFuZGFnZTtcbmNvbnN0IGZhQ2FsZW5kYXJNaW51cyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjYWxlbmRhci1taW51cycsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjI3MlwiLCBcIk0xMjggMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDMyIDEyOCAwIDAtMzJjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMmwwIDMyIDQ4IDBjMjYuNSAwIDQ4IDIxLjUgNDggNDhsMCA0OEwwIDE2MGwwLTQ4QzAgODUuNSAyMS41IDY0IDQ4IDY0bDQ4IDAgMC0zMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnpNMCAxOTJsNDQ4IDAgMCAyNzJjMCAyNi41LTIxLjUgNDgtNDggNDhMNDggNTEyYy0yNi41IDAtNDgtMjEuNS00OC00OEwwIDE5MnpNMzEyIDM3NmMxMy4zIDAgMjQtMTAuNyAyNC0yNHMtMTAuNy0yNC0yNC0yNGwtMTc2IDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRsMTc2IDB6XCJdXG59O1xuY29uc3QgZmFDaXJjbGVYbWFyayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdjaXJjbGUteG1hcmsnLFxuICBpY29uOiBbNTEyLCA1MTIsIFs2MTUzMiwgXCJ0aW1lcy1jaXJjbGVcIiwgXCJ4bWFyay1jaXJjbGVcIl0sIFwiZjA1N1wiLCBcIk0yNTYgNTEyQTI1NiAyNTYgMCAxIDAgMjU2IDBhMjU2IDI1NiAwIDEgMCAwIDUxMnpNMTc1IDE3NWM5LjQtOS40IDI0LjYtOS40IDMzLjkgMGw0NyA0NyA0Ny00N2M5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjlsLTQ3IDQ3IDQ3IDQ3YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45cy0yNC42IDkuNC0zMy45IDBsLTQ3LTQ3LTQ3IDQ3Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45bDQ3LTQ3LTQ3LTQ3Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXpcIl1cbn07XG5jb25zdCBmYVRpbWVzQ2lyY2xlID0gZmFDaXJjbGVYbWFyaztcbmNvbnN0IGZhWG1hcmtDaXJjbGUgPSBmYUNpcmNsZVhtYXJrO1xuY29uc3QgZmFHaWZ0cyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdnaWZ0cycsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZjc5Y1wiLCBcIk0yMDAuNiAzMkMyMDUgMTkuNSAxOTguNSA1LjggMTg2IDEuNFMxNTkuOCAzLjUgMTU1LjQgMTZMMTQ0LjcgNDYuMmwtOS45LTI5LjhDMTMwLjYgMy44IDExNy0zIDEwNC40IDEuMlM4NSAxOSA4OS4yIDMxLjZsOC4zIDI1LTI3LjQtMjBjLTEwLjctNy44LTI1LjctNS40LTMzLjUgNS4zcy01LjQgMjUuNyA1LjMgMzMuNUw3MC4yIDk2IDQ4IDk2QzIxLjUgOTYgMCAxMTcuNSAwIDE0NEwwIDQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGwxNTIuNiAwYy01LjQtOS40LTguNi0yMC4zLTguNi0zMmwwLTIyNGMwLTI5LjkgMjAuNS01NSA0OC4yLTYyYzEuOC0zMSAxNy4xLTU4LjIgNDAuMS03Ni4xQzI3MS43IDEwNC43IDI1Ni45IDk2IDI0MCA5NmwtMjIuMiAwIDI4LjMtMjAuNmMxMC43LTcuOCAxMy4xLTIyLjggNS4zLTMzLjVzLTIyLjgtMTMuMS0zMy41LTUuM0wxOTIuNSA1NS4xIDIwMC42IDMyek0zNjMuNSAxODUuNUwzOTMuMSAyMjQgMzQ0IDIyNGMtMTMuMyAwLTI0LTEwLjctMjQtMjRjMC0xMy4xIDEwLjgtMjQgMjQuMi0yNGM3LjYgMCAxNC43IDMuNSAxOS4zIDkuNXpNMjcyIDIwMGMwIDguNCAxLjQgMTYuNSA0LjEgMjRsLTQuMSAwYy0yNi41IDAtNDggMjEuNS00OCA0OGwwIDgwIDE5MiAwIDAtOTYgMzIgMCAwIDk2IDE5MiAwIDAtODBjMC0yNi41LTIxLjUtNDgtNDgtNDhsLTQuMSAwYzIuNy03LjUgNC4xLTE1LjYgNC4xLTI0YzAtMzkuOS0zMi41LTcyLTcyLjItNzJjLTIyLjQgMC00My42IDEwLjQtNTcuMyAyOC4yTDQzMiAxOTUuOGwtMzAuNS0zOS42Yy0xMy43LTE3LjgtMzUtMjguMi01Ny4zLTI4LjJjLTM5LjcgMC03Mi4yIDMyLjEtNzIuMiA3MnpNMjI0IDQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGwxNDQgMCAwLTEyOC0xOTIgMCAwIDgwem0yMjQgNDhsMTQ0IDBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhsMC04MC0xOTIgMCAwIDEyOHptOTYtMzEyYzAgMTMuMy0xMC43IDI0LTI0IDI0bC00OS4xIDAgMjkuNi0zOC41YzQuNi01LjkgMTEuNy05LjUgMTkuMy05LjVjMTMuNCAwIDI0LjIgMTAuOSAyNC4yIDI0elwiXVxufTtcbmNvbnN0IGZhSG90ZWwgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaG90ZWwnLFxuICBpY29uOiBbNTEyLCA1MTIsIFsxMjc5NzZdLCBcImY1OTRcIiwgXCJNMCAzMkMwIDE0LjMgMTQuMyAwIDMyIDBMNDgwIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsMCAzODRjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTE3NiAwIDAtNDhjMC0yNi41LTIxLjUtNDgtNDgtNDhzLTQ4IDIxLjUtNDggNDhsMCA0OEwzMiA1MTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJMMzIgNjRDMTQuMyA2NCAwIDQ5LjcgMCAzMnptOTYgODBsMCAzMmMwIDguOCA3LjIgMTYgMTYgMTZsMzIgMGM4LjggMCAxNi03LjIgMTYtMTZsMC0zMmMwLTguOC03LjItMTYtMTYtMTZsLTMyIDBjLTguOCAwLTE2IDcuMi0xNiAxNnpNMjQwIDk2Yy04LjggMC0xNiA3LjItMTYgMTZsMCAzMmMwIDguOCA3LjIgMTYgMTYgMTZsMzIgMGM4LjggMCAxNi03LjIgMTYtMTZsMC0zMmMwLTguOC03LjItMTYtMTYtMTZsLTMyIDB6bTExMiAxNmwwIDMyYzAgOC44IDcuMiAxNiAxNiAxNmwzMiAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTMyYzAtOC44LTcuMi0xNi0xNi0xNmwtMzIgMGMtOC44IDAtMTYgNy4yLTE2IDE2ek0xMTIgMTkyYy04LjggMC0xNiA3LjItMTYgMTZsMCAzMmMwIDguOCA3LjIgMTYgMTYgMTZsMzIgMGM4LjggMCAxNi03LjIgMTYtMTZsMC0zMmMwLTguOC03LjItMTYtMTYtMTZsLTMyIDB6bTExMiAxNmwwIDMyYzAgOC44IDcuMiAxNiAxNiAxNmwzMiAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTMyYzAtOC44LTcuMi0xNi0xNi0xNmwtMzIgMGMtOC44IDAtMTYgNy4yLTE2IDE2em0xNDQtMTZjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDMyYzAgOC44IDcuMiAxNiAxNiAxNmwzMiAwYzguOCAwIDE2LTcuMiAxNi0xNmwwLTMyYzAtOC44LTcuMi0xNi0xNi0xNmwtMzIgMHpNMzI4IDM4NGMxMy4zIDAgMjQuMy0xMC45IDIxLTIzLjhjLTEwLjYtNDEuNS00OC4yLTcyLjItOTMtNzIuMnMtODIuNSAzMC43LTkzIDcyLjJjLTMuMyAxMi44IDcuOCAyMy44IDIxIDIzLjhsMTQ0IDB6XCJdXG59O1xuY29uc3QgZmFFYXJ0aEFzaWEgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZWFydGgtYXNpYScsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyNzc1OSwgXCJnbG9iZS1hc2lhXCJdLCBcImY1N2VcIiwgXCJNNTEuNyAyOTUuMWwzMS43IDYuM2M3LjkgMS42IDE2LS45IDIxLjctNi42bDE1LjQtMTUuNGMxMS42LTExLjYgMzEuMS04LjQgMzguNCA2LjJsOS4zIDE4LjVjNC44IDkuNiAxNC42IDE1LjcgMjUuNCAxNS43YzE1LjIgMCAyNi4xLTE0LjYgMjEuNy0yOS4ybC02LTE5LjljLTQuNi0xNS40IDYuOS0zMC45IDIzLTMwLjlsMi4zIDBjMTMuNCAwIDI1LjktNi43IDMzLjMtMTcuOGwxMC43LTE2LjFjNS42LTguNSA1LjMtMTkuNi0uOC0yNy43bC0xNi4xLTIxLjVjLTEwLjMtMTMuNy0zLjMtMzMuNSAxMy40LTM3LjdsMTctNC4zYzcuNS0xLjkgMTMuNi03LjIgMTYuNS0xNC40bDE2LjQtNDAuOUMzMDMuNCA1Mi4xIDI4MC4yIDQ4IDI1NiA0OEMxNDEuMSA0OCA0OCAxNDEuMSA0OCAyNTZjMCAxMy40IDEuMyAyNi41IDMuNyAzOS4xem00MDcuNyA0LjZjLTMtLjMtNi0uMS05IC44bC0xNS44IDQuNGMtNi43IDEuOS0xMy44LS45LTE3LjUtNi43bC0yLTMuMWMtNi05LjQtMTYuNC0xNS4xLTI3LjYtMTUuMXMtMjEuNiA1LjctMjcuNiAxNS4xbC02LjEgOS41Yy0xLjQgMi4yLTMuNCA0LjEtNS43IDUuM0wzMTIgMzMwLjFjLTE4LjEgMTAuMS0yNS41IDMyLjQtMTcgNTEuM2w1LjUgMTIuNGM4LjYgMTkuMiAzMC43IDI4LjUgNTAuNSAyMS4xbDIuNi0xYzEwLTMuNyAyMS4zLTIuMiAyOS45IDQuMWwxLjUgMS4xYzM3LjItMjkuNSA2NC4xLTcxLjQgNzQuNC0xMTkuNXpNMCAyNTZhMjU2IDI1NiAwIDEgMSA1MTIgMEEyNTYgMjU2IDAgMSAxIDAgMjU2em0xNDQuNSA5Mi4xYy0yLjEgOC42IDMuMSAxNy4zIDExLjYgMTkuNGwzMiA4YzguNiAyLjEgMTcuMy0zLjEgMTkuNC0xMS42cy0zLjEtMTcuMy0xMS42LTE5LjRsLTMyLThjLTguNi0yLjEtMTcuMyAzLjEtMTkuNCAxMS42em05Mi0yMGMtMi4xIDguNiAzLjEgMTcuMyAxMS42IDE5LjRzMTcuMy0zLjEgMTkuNC0xMS42bDgtMzJjMi4xLTguNi0zLjEtMTcuMy0xMS42LTE5LjRzLTE3LjMgMy4xLTE5LjQgMTEuNmwtOCAzMnpNMzQzLjIgMTEzLjdjLTcuOS00LTE3LjUtLjctMjEuNSA3LjJsLTE2IDMyYy00IDcuOS0uNyAxNy41IDcuMiAyMS41czE3LjUgLjcgMjEuNS03LjJsMTYtMzJjNC03LjkgLjctMTcuNS03LjItMjEuNXpcIl1cbn07XG5jb25zdCBmYUdsb2JlQXNpYSA9IGZhRWFydGhBc2lhO1xuY29uc3QgZmFJZENhcmRDbGlwID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2lkLWNhcmQtY2xpcCcsXG4gIGljb246IFs1NzYsIDUxMiwgW1wiaWQtY2FyZC1hbHRcIl0sIFwiZjQ3ZlwiLCBcIk0yNTYgMGw2NCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgNjRjMCAxNy43LTE0LjMgMzItMzIgMzJsLTY0IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtNjRjMC0xNy43IDE0LjMtMzIgMzItMzJ6TTY0IDY0bDEyOCAwIDAgNDhjMCAyNi41IDIxLjUgNDggNDggNDhsOTYgMGMyNi41IDAgNDgtMjEuNSA0OC00OGwwLTQ4IDEyOCAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMzIwYzAgMzUuMy0yOC43IDY0LTY0IDY0TDY0IDUxMmMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCAxMjhDMCA5Mi43IDI4LjcgNjQgNjQgNjR6TTE3NiA0MzcuM2MwIDUuOSA0LjggMTAuNyAxMC43IDEwLjdsMjAyLjcgMGM1LjkgMCAxMC43LTQuOCAxMC43LTEwLjdjMC0yOS41LTIzLjktNTMuMy01My4zLTUzLjNsLTExNy4zIDBjLTI5LjUgMC01My4zIDIzLjktNTMuMyA1My4zek0yODggMzUyYTY0IDY0IDAgMSAwIDAtMTI4IDY0IDY0IDAgMSAwIDAgMTI4elwiXVxufTtcbmNvbnN0IGZhSWRDYXJkQWx0ID0gZmFJZENhcmRDbGlwO1xuY29uc3QgZmFNYWduaWZ5aW5nR2xhc3NQbHVzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21hZ25pZnlpbmctZ2xhc3MtcGx1cycsXG4gIGljb246IFs1MTIsIDUxMiwgW1wic2VhcmNoLXBsdXNcIl0sIFwiZjAwZVwiLCBcIk00MTYgMjA4YzAgNDUuOS0xNC45IDg4LjMtNDAgMTIyLjdMNTAyLjYgNDU3LjRjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNzLTMyLjggMTIuNS00NS4zIDBMMzMwLjcgMzc2Yy0zNC40IDI1LjItNzYuOCA0MC0xMjIuNyA0MEM5My4xIDQxNiAwIDMyMi45IDAgMjA4UzkzLjEgMCAyMDggMFM0MTYgOTMuMSA0MTYgMjA4ek0xODQgMjk2YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRsMC02NCA2NCAwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0bC02NCAwIDAtNjRjMC0xMy4zLTEwLjctMjQtMjQtMjRzLTI0IDEwLjctMjQgMjRsMCA2NC02NCAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0bDY0IDAgMCA2NHpcIl1cbn07XG5jb25zdCBmYVNlYXJjaFBsdXMgPSBmYU1hZ25pZnlpbmdHbGFzc1BsdXM7XG5jb25zdCBmYVRodW1ic1VwID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3RodW1icy11cCcsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyODA3NywgNjE1NzVdLCBcImYxNjRcIiwgXCJNMzEzLjQgMzIuOWMyNiA1LjIgNDIuOSAzMC41IDM3LjcgNTYuNWwtMi4zIDExLjRjLTUuMyAyNi43LTE1LjEgNTIuMS0yOC44IDc1LjJsMTQ0IDBjMjYuNSAwIDQ4IDIxLjUgNDggNDhjMCAxOC41LTEwLjUgMzQuNi0yNS45IDQyLjZDNDk3IDI3NS40IDUwNCAyODguOSA1MDQgMzA0YzAgMjMuNC0xNi44IDQyLjktMzguOSA0Ny4xYzQuNCA3LjMgNi45IDE1LjggNi45IDI0LjljMCAyMS4zLTEzLjkgMzkuNC0zMy4xIDQ1LjZjLjcgMy4zIDEuMSA2LjggMS4xIDEwLjRjMCAyNi41LTIxLjUgNDgtNDggNDhsLTk3LjUgMGMtMTkgMC0zNy41LTUuNi01My4zLTE2LjFsLTM4LjUtMjUuN0MxNzYgNDIwLjQgMTYwIDM5MC40IDE2MCAzNTguM2wwLTM4LjMgMC00OCAwLTI0LjljMC0yOS4yIDEzLjMtNTYuNyAzNi03NWw3LjQtNS45YzI2LjUtMjEuMiA0NC42LTUxIDUxLjItODQuMmwyLjMtMTEuNGM1LjItMjYgMzAuNS00Mi45IDU2LjUtMzcuN3pNMzIgMTkybDY0IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCAyMjRjMCAxNy43LTE0LjMgMzItMzIgMzJsLTY0IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyTDAgMjI0YzAtMTcuNyAxNC4zLTMyIDMyLTMyelwiXVxufTtcbmNvbnN0IGZhVXNlckNsb2NrID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3VzZXItY2xvY2snLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImY0ZmRcIiwgXCJNMjI0IDBhMTI4IDEyOCAwIDEgMSAwIDI1NkExMjggMTI4IDAgMSAxIDIyNCAwek0xNzguMyAzMDRsOTEuNCAwYzIwLjYgMCA0MC40IDMuNSA1OC44IDkuOUMzMjMgMzMxIDMyMCAzNDkuMSAzMjAgMzY4YzAgNTkuNSAyOS41IDExMi4xIDc0LjggMTQ0TDI5LjcgNTEyQzEzLjMgNTEyIDAgNDk4LjcgMCA0ODIuM0MwIDM4My44IDc5LjggMzA0IDE3OC4zIDMwNHpNMzUyIDM2OGExNDQgMTQ0IDAgMSAxIDI4OCAwIDE0NCAxNDQgMCAxIDEgLTI4OCAwem0xNDQtODBjLTguOCAwLTE2IDcuMi0xNiAxNmwwIDY0YzAgOC44IDcuMiAxNiAxNiAxNmw0OCAwYzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2bC0zMiAwIDAtNDhjMC04LjgtNy4yLTE2LTE2LTE2elwiXVxufTtcbmNvbnN0IGZhSGFuZERvdHMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGFuZC1kb3RzJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXCJhbGxlcmdpZXNcIl0sIFwiZjQ2MVwiLCBcIk0yODggMzJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJsMCAyMDhjMCA4LjgtNy4yIDE2LTE2IDE2cy0xNi03LjItMTYtMTZsMC0xNzZjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJsMCAyNzJjMCAxLjUgMCAzLjEgLjEgNC42TDY3LjYgMjgzYy0xNi0xNS4yLTQxLjMtMTQuNi01Ni42IDEuNHMtMTQuNiA0MS4zIDEuNCA1Ni42TDEyNC44IDQ0OGM0My4xIDQxLjEgMTAwLjQgNjQgMTYwIDY0bDE5LjIgMGM5Ny4yIDAgMTc2LTc4LjggMTc2LTE3NmwwLTIwOGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMmwwIDExMmMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNmwwLTE3NmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMmwwIDE3NmMwIDguOC03LjIgMTYtMTYgMTZzLTE2LTcuMi0xNi0xNmwwLTIwOHpNMjQwIDMzNmExNiAxNiAwIDEgMSAzMiAwIDE2IDE2IDAgMSAxIC0zMiAwem04MCAxNmExNiAxNiAwIDEgMSAwIDMyIDE2IDE2IDAgMSAxIDAtMzJ6bTQ4LTE2YTE2IDE2IDAgMSAxIDMyIDAgMTYgMTYgMCAxIDEgLTMyIDB6bS0xNiA4MGExNiAxNiAwIDEgMSAwIDMyIDE2IDE2IDAgMSAxIDAtMzJ6TTI0MCA0MzJhMTYgMTYgMCAxIDEgMzIgMCAxNiAxNiAwIDEgMSAtMzIgMHptLTQ4LTQ4YTE2IDE2IDAgMSAxIDAgMzIgMTYgMTYgMCAxIDEgMC0zMnpcIl1cbn07XG5jb25zdCBmYUFsbGVyZ2llcyA9IGZhSGFuZERvdHM7XG5jb25zdCBmYUZpbGVJbnZvaWNlID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2ZpbGUtaW52b2ljZScsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZjU3MFwiLCBcIk02NCAwQzI4LjcgMCAwIDI4LjcgMCA2NEwwIDQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NGwyNTYgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTI4OC0xMjggMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJMMjI0IDAgNjQgMHpNMjU2IDBsMCAxMjggMTI4IDBMMjU2IDB6TTgwIDY0bDY0IDBjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZMODAgOTZjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZ6bTAgNjRsNjQgMGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNmwtNjQgMGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnptMTYgOTZsMTkyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCA2NGMwIDE3LjctMTQuMyAzMi0zMiAzMkw5NiAzNTJjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtNjRjMC0xNy43IDE0LjMtMzIgMzItMzJ6bTAgMzJsMCA2NCAxOTIgMCAwLTY0TDk2IDI1NnpNMjQwIDQxNmw2NCAwYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2bC02NCAwYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2elwiXVxufTtcbmNvbnN0IGZhV2luZG93TWluaW1pemUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnd2luZG93LW1pbmltaXplJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI4NDY5XSwgXCJmMmQxXCIsIFwiTTMyIDQxNmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmw0NDggMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkwzMiA0MTZ6XCJdXG59O1xuY29uc3QgZmFNdWdTYXVjZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbXVnLXNhdWNlcicsXG4gIGljb246IFs2NDAsIDUxMiwgW1wiY29mZmVlXCJdLCBcImYwZjRcIiwgXCJNOTYgNjRjMC0xNy43IDE0LjMtMzIgMzItMzJsMzIwIDAgNjQgMGM3MC43IDAgMTI4IDU3LjMgMTI4IDEyOHMtNTcuMyAxMjgtMTI4IDEyOGwtMzIgMGMwIDUzLTQzIDk2LTk2IDk2bC0xOTIgMGMtNTMgMC05Ni00My05Ni05Nkw5NiA2NHpNNDgwIDIyNGwzMiAwYzM1LjMgMCA2NC0yOC43IDY0LTY0cy0yOC43LTY0LTY0LTY0bC0zMiAwIDAgMTI4ek0zMiA0MTZsNTEyIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJMMzIgNDgwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyelwiXVxufTtcbmNvbnN0IGZhQ29mZmVlID0gZmFNdWdTYXVjZXI7XG5jb25zdCBmYUJydXNoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JydXNoJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbXSwgXCJmNTVkXCIsIFwiTTE2Mi40IDZjLTEuNS0zLjYtNS02LTguOS02bC0xOSAwYy0zLjkgMC03LjUgMi40LTguOSA2TDEwNC45IDU3LjdjLTMuMiA4LTE0LjYgOC0xNy44IDBMNjYuNCA2Yy0xLjUtMy42LTUtNi04LjktNkw0OCAwQzIxLjUgMCAwIDIxLjUgMCA0OEwwIDIyNGwwIDIyLjRMMCAyNTZsOS42IDAgMzY0LjggMCA5LjYgMCAwLTkuNiAwLTIyLjQgMC0xNzZjMC0yNi41LTIxLjUtNDgtNDgtNDhMMjMwLjUgMGMtMy45IDAtNy41IDIuNC04LjkgNkwyMDAuOSA1Ny43Yy0zLjIgOC0xNC42IDgtMTcuOCAwTDE2Mi40IDZ6TTAgMjg4bDAgMzJjMCAzNS4zIDI4LjcgNjQgNjQgNjRsNjQgMCAwIDY0YzAgMzUuMyAyOC43IDY0IDY0IDY0czY0LTI4LjcgNjQtNjRsMC02NCA2NCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0bDAtMzJMMCAyODh6TTE5MiA0MzJhMTYgMTYgMCAxIDEgMCAzMiAxNiAxNiAwIDEgMSAwLTMyelwiXVxufTtcbmNvbnN0IGZhTWFzayA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtYXNrJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJmNmZhXCIsIFwiTTI4OCA2NEM2NCA2NCAwIDE2MCAwIDI3MlM4MCA0NDggMTc2IDQ0OGw4LjQgMGMyNC4yIDAgNDYuNC0xMy43IDU3LjItMzUuNGwyMy4yLTQ2LjNjNC40LTguOCAxMy4zLTE0LjMgMjMuMi0xNC4zczE4LjggNS41IDIzLjIgMTQuM2wyMy4yIDQ2LjNjMTAuOCAyMS43IDMzIDM1LjQgNTcuMiAzNS40bDguNCAwYzk2IDAgMTc2LTY0IDE3Ni0xNzZzLTY0LTIwOC0yODgtMjA4ek05NiAyNTZhNjQgNjQgMCAxIDEgMTI4IDBBNjQgNjQgMCAxIDEgOTYgMjU2em0zMjAtNjRhNjQgNjQgMCAxIDEgMCAxMjggNjQgNjQgMCAxIDEgMC0xMjh6XCJdXG59O1xuY29uc3QgZmFNYWduaWZ5aW5nR2xhc3NNaW51cyA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtYWduaWZ5aW5nLWdsYXNzLW1pbnVzJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXCJzZWFyY2gtbWludXNcIl0sIFwiZjAxMFwiLCBcIk00MTYgMjA4YzAgNDUuOS0xNC45IDg4LjMtNDAgMTIyLjdMNTAyLjYgNDU3LjRjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNzLTMyLjggMTIuNS00NS4zIDBMMzMwLjcgMzc2Yy0zNC40IDI1LjItNzYuOCA0MC0xMjIuNyA0MEM5My4xIDQxNiAwIDMyMi45IDAgMjA4UzkzLjEgMCAyMDggMFM0MTYgOTMuMSA0MTYgMjA4ek0xMzYgMTg0Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0bDE0NCAwYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0bC0xNDQgMHpcIl1cbn07XG5jb25zdCBmYVNlYXJjaE1pbnVzID0gZmFNYWduaWZ5aW5nR2xhc3NNaW51cztcbmNvbnN0IGZhUnVsZXJWZXJ0aWNhbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdydWxlci12ZXJ0aWNhbCcsXG4gIGljb246IFsyNTYsIDUxMiwgW10sIFwiZjU0OFwiLCBcIk0wIDQ4QzAgMjEuNSAyMS41IDAgNDggMEwyMDggMGMyNi41IDAgNDggMjEuNSA0OCA0OGwwIDQ4LTgwIDBjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZsODAgMCAwIDY0LTgwIDBjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZsODAgMCAwIDY0LTgwIDBjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZsODAgMCAwIDY0LTgwIDBjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTZsODAgMCAwIDQ4YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4TDQ4IDUxMmMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhMMCA0OHpcIl1cbn07XG5jb25zdCBmYVVzZXJMYXJnZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd1c2VyLWxhcmdlJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXCJ1c2VyLWFsdFwiXSwgXCJmNDA2XCIsIFwiTTI1NiAyODhBMTQ0IDE0NCAwIDEgMCAyNTYgMGExNDQgMTQ0IDAgMSAwIDAgMjg4em0tOTQuNyAzMkM3Mi4yIDMyMCAwIDM5Mi4yIDAgNDgxLjNjMCAxNyAxMy44IDMwLjcgMzAuNyAzMC43bDQ1MC42IDBjMTcgMCAzMC43LTEzLjggMzAuNy0zMC43QzUxMiAzOTIuMiA0MzkuOCAzMjAgMzUwLjcgMzIwbC0xODkuNCAwelwiXVxufTtcbmNvbnN0IGZhVXNlckFsdCA9IGZhVXNlckxhcmdlO1xuY29uc3QgZmFUcmFpblRyYW0gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndHJhaW4tdHJhbScsXG4gIGljb246IFs0NDgsIDUxMiwgWzEyODY1MF0sIFwiZTViNFwiLCBcIk04Ni44IDQ4Yy0xMi4yIDAtMjMuNiA1LjUtMzEuMiAxNUw0Mi43IDc5QzM0LjUgODkuMyAxOS40IDkxIDkgODIuN1MtMyA1OS40IDUuMyA0OUwxOCAzM0MzNC43IDEyLjIgNjAgMCA4Ni44IDBMMzYxLjIgMGMyNi43IDAgNTIgMTIuMiA2OC43IDMzbDEyLjggMTZjOC4zIDEwLjQgNi42IDI1LjUtMy44IDMzLjdzLTI1LjUgNi42LTMzLjctMy43TDM5Mi41IDYzYy03LjYtOS41LTE5LjEtMTUtMzEuMi0xNUwyNDggNDhsMCA0OCA0MCAwYzUzIDAgOTYgNDMgOTYgOTZsMCAxNjBjMCAzMC42LTE0LjMgNTcuOC0zNi42IDc1LjRsNjUuNSA2NS41YzcuMSA3LjEgMi4xIDE5LjEtNy45IDE5LjFsLTM5LjcgMGMtOC41IDAtMTYuNi0zLjQtMjIuNi05LjRMMjg4IDQ0OGwtMTI4IDAtNTQuNiA1NC42Yy02IDYtMTQuMSA5LjQtMjIuNiA5LjRMNDMgNTEyYy0xMCAwLTE1LTEyLjEtNy45LTE5LjFsNjUuNS02NS41Qzc4LjMgNDA5LjggNjQgMzgyLjYgNjQgMzUybDAtMTYwYzAtNTMgNDMtOTYgOTYtOTZsNDAgMCAwLTQ4TDg2LjggNDh6TTE2MCAxNjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMybDAgMzJjMCAxNy43IDE0LjMgMzIgMzIgMzJsMTI4IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJsMC0zMmMwLTE3LjctMTQuMy0zMi0zMi0zMmwtMTI4IDB6bTMyIDE5MmEzMiAzMiAwIDEgMCAtNjQgMCAzMiAzMiAwIDEgMCA2NCAwem05NiAzMmEzMiAzMiAwIDEgMCAwLTY0IDMyIDMyIDAgMSAwIDAgNjR6XCJdXG59O1xuY29uc3QgZmFVc2VyTnVyc2UgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndXNlci1udXJzZScsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjgyZlwiLCBcIk05NiAxMjhsMC01Ny44YzAtMTMuMyA4LjMtMjUuMyAyMC44LTMwbDk2LTM2YzcuMi0yLjcgMTUuMi0yLjcgMjIuNSAwbDk2IDM2YzEyLjUgNC43IDIwLjggMTYuNiAyMC44IDMwbDAgNTcuOC0uMyAwYy4yIDIuNiAuMyA1LjMgLjMgOGwwIDQwYzAgNzAuNy01Ny4zIDEyOC0xMjggMTI4cy0xMjgtNTcuMy0xMjgtMTI4bDAtNDBjMC0yLjcgLjEtNS40IC4zLThsLS4zIDB6bTQ4IDQ4YzAgNDQuMiAzNS44IDgwIDgwIDgwczgwLTM1LjggODAtODBsMC0xNi0xNjAgMCAwIDE2ek0xMTEuOSAzMjcuN2MxMC41LTMuNCAyMS44IC40IDI5LjQgOC41bDcxIDc1LjVjNi4zIDYuNyAxNyA2LjcgMjMuMyAwbDcxLTc1LjVjNy42LTguMSAxOC45LTExLjkgMjkuNC04LjVDNDAxIDM0OC42IDQ0OCA0MDkuNCA0NDggNDgxLjNjMCAxNy0xMy44IDMwLjctMzAuNyAzMC43TDMwLjcgNTEyQzEzLjggNTEyIDAgNDk4LjIgMCA0ODEuM2MwLTcxLjkgNDctMTMyLjcgMTExLjktMTUzLjZ6TTIwOCA0OGwwIDE2LTE2IDBjLTQuNCAwLTggMy42LTggOGwwIDE2YzAgNC40IDMuNiA4IDggOGwxNiAwIDAgMTZjMCA0LjQgMy42IDggOCA4bDE2IDBjNC40IDAgOC0zLjYgOC04bDAtMTYgMTYgMGM0LjQgMCA4LTMuNiA4LThsMC0xNmMwLTQuNC0zLjYtOC04LThsLTE2IDAgMC0xNmMwLTQuNC0zLjYtOC04LThsLTE2IDBjLTQuNCAwLTggMy42LTggOHpcIl1cbn07XG5jb25zdCBmYVN5cmluZ2UgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnc3lyaW5nZScsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyODEzN10sIFwiZjQ4ZVwiLCBcIk00NDEgN2wzMiAzMiAzMiAzMmM5LjQgOS40IDkuNCAyNC42IDAgMzMuOXMtMjQuNiA5LjQtMzMuOSAwbC0xNS0xNUw0MTcuOSAxMjhsNTUgNTVjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlzLTI0LjYgOS40LTMzLjkgMGwtNzItNzJMMjk1IDczYy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXMyNC42LTkuNCAzMy45IDBsNTUgNTVMNDIyLjEgNTYgNDA3IDQxYy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXMyNC42LTkuNCAzMy45IDB6TTIxMC4zIDE1NS43bDYxLjEtNjEuMWMuMyAuMyAuNiAuNyAxIDFsMTYgMTYgNTYgNTYgNTYgNTYgMTYgMTZjLjMgLjMgLjYgLjYgMSAxbC0xOTEgMTkxYy0xMC41IDEwLjUtMjQuNyAxNi40LTM5LjYgMTYuNGwtODguOCAwTDQxIDUwNWMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBzLTkuNC0yNC42IDAtMzMuOWw1Ny01NyAwLTg4LjhjMC0xNC45IDUuOS0yOS4xIDE2LjQtMzkuNmw0My4zLTQzLjMgNTcgNTdjNi4yIDYuMiAxNi40IDYuMiAyMi42IDBzNi4yLTE2LjQgMC0yMi42bC01Ny01NyA0MS40LTQxLjQgNTcgNTdjNi4yIDYuMiAxNi40IDYuMiAyMi42IDBzNi4yLTE2LjQgMC0yMi42bC01Ny01N3pcIl1cbn07XG5jb25zdCBmYUNsb3VkU3VuID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2Nsb3VkLXN1bicsXG4gIGljb246IFs2NDAsIDUxMiwgWzk5MjVdLCBcImY2YzRcIiwgXCJNMjk0LjIgMS4yYzUuMSAyLjEgOC43IDYuNyA5LjYgMTIuMWwxNC4xIDg0LjcgODQuNyAxNC4xYzUuNCAuOSAxMCA0LjUgMTIuMSA5LjZzMS41IDEwLjktMS42IDE1LjRsLTM4LjUgNTVjLTIuMi0uMS00LjQtLjItNi43LS4yYy0yMy4zIDAtNDUuMSA2LjItNjQgMTcuMWwwLTEuMWMwLTUzLTQzLTk2LTk2LTk2cy05NiA0My05NiA5NnM0MyA5NiA5NiA5NmM4LjEgMCAxNS45LTEgMjMuNC0yLjljLTM2LjYgMTguMS02My4zIDUzLjEtNjkuOCA5NC45bC0yNC40IDE3Yy00LjUgMy4yLTEwLjMgMy44LTE1LjQgMS42cy04LjctNi43LTkuNi0xMi4xTDk4LjEgMzE3LjkgMTMuNCAzMDMuOGMtNS40LS45LTEwLTQuNS0xMi4xLTkuNnMtMS41LTEwLjkgMS42LTE1LjRMNTIuNSAyMDggMi45IDEzNy4yYy0zLjItNC41LTMuOC0xMC4zLTEuNi0xNS40czYuNy04LjcgMTIuMS05LjZMOTguMSA5OC4xbDE0LjEtODQuN2MuOS01LjQgNC41LTEwIDkuNi0xMi4xczEwLjktMS41IDE1LjQgMS42TDIwOCA1Mi41IDI3OC44IDIuOWM0LjUtMy4yIDEwLjMtMy44IDE1LjQtMS42ek0xNDQgMjA4YTY0IDY0IDAgMSAxIDEyOCAwIDY0IDY0IDAgMSAxIC0xMjggMHpNNjM5LjkgNDMxLjljMCA0NC4yLTM1LjggODAtODAgODBsLTI3MS45IDBjLTUzIDAtOTYtNDMtOTYtOTZjMC00Ny42IDM0LjYtODcgODAtOTQuNmwwLTEuM2MwLTUzIDQzLTk2IDk2LTk2YzM0LjkgMCA2NS40IDE4LjYgODIuMiA0Ni40YzEzLTkuMSAyOC44LTE0LjQgNDUuOC0xNC40YzQ0LjIgMCA4MCAzNS44IDgwIDgwYzAgNS45LS42IDExLjctMS45IDE3LjJjMzcuNCA2LjcgNjUuOCAzOS40IDY1LjggNzguN3pcIl1cbn07XG5jb25zdCBmYVN0b3B3YXRjaDIwID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3N0b3B3YXRjaC0yMCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZTA2ZlwiLCBcIk0xNzYgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmwxNiAwIDAgMzQuNEM5Mi4zIDExMy44IDE2IDIwMCAxNiAzMDRjMCAxMTQuOSA5My4xIDIwOCAyMDggMjA4czIwOC05My4xIDIwOC0yMDhjMC00MS44LTEyLjMtODAuNy0zMy41LTExMy4ybDI0LjEtMjQuMWMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMEwzNTUuNyAxNDNjLTI4LjEtMjMtNjIuMi0zOC44LTk5LjctNDQuNkwyNTYgNjRsMTYgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkwxNzYgMHpNMjg4IDIwNGMyOC43IDAgNTIgMjMuMyA1MiA1MmwwIDk2YzAgMjguNy0yMy4zIDUyLTUyIDUycy01Mi0yMy4zLTUyLTUybDAtOTZjMC0yOC43IDIzLjMtNTIgNTItNTJ6bS0xMiA1MmwwIDk2YzAgNi42IDUuNCAxMiAxMiAxMnMxMi01LjQgMTItMTJsMC05NmMwLTYuNi01LjQtMTItMTItMTJzLTEyIDUuNC0xMiAxMnpNMTU5LjUgMjQ0Yy01LjQgMC0xMC4yIDMuNS0xMS45IDguNmwtLjYgMS43Yy0zLjUgMTAuNS0xNC44IDE2LjEtMjUuMyAxMi42cy0xNi4xLTE0LjgtMTIuNi0yNS4zbC42LTEuN2M3LjItMjEuNSAyNy4yLTM1LjkgNDkuOC0zNS45YzI5IDAgNTIuNSAyMy41IDUyLjUgNTIuNWwwIDIuMmMwIDEzLjQtNC45IDI2LjQtMTMuOCAzNi40bC0zOSA0My45Yy02LjIgNy0xMCAxNS43LTEwLjkgMjQuOWw0My44IDBjMTEgMCAyMCA5IDIwIDIwcy05IDIwLTIwIDIwbC02NCAwYy0xMSAwLTIwLTktMjAtMjBsMC0xNS43YzAtMjAuNiA3LjUtNDAuNCAyMS4yLTU1LjhsMzktNDMuOWMyLjQtMi43IDMuNy02LjIgMy43LTkuOGwwLTIuMmMwLTYuOS01LjYtMTIuNS0xMi41LTEyLjV6XCJdXG59O1xuY29uc3QgZmFTcXVhcmVGdWxsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NxdWFyZS1mdWxsJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI4OTk3LCAxMjg5OTgsIDEyODk5OSwgMTI5MDAwLCAxMjkwMDEsIDEyOTAwMiwgMTI5MDAzLCAxMTAzNSwgMTEwMzZdLCBcImY0NWNcIiwgXCJNMCAwSDUxMlY1MTJIMFYwelwiXVxufTtcbmNvbnN0IGZhTWFnbmV0ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21hZ25ldCcsXG4gIGljb246IFs0NDgsIDUxMiwgWzEyOTUyMl0sIFwiZjA3NlwiLCBcIk0wIDE2MGwwIDk2QzAgMzc5LjcgMTAwLjMgNDgwIDIyNCA0ODBzMjI0LTEwMC4zIDIyNC0yMjRsMC05Ni0xMjggMCAwIDk2YzAgNTMtNDMgOTYtOTYgOTZzLTk2LTQzLTk2LTk2bDAtOTZMMCAxNjB6bTAtMzJsMTI4IDAgMC02NGMwLTE3LjctMTQuMy0zMi0zMi0zMkwzMiAzMkMxNC4zIDMyIDAgNDYuMyAwIDY0bDAgNjR6bTMyMCAwbDEyOCAwIDAtNjRjMC0xNy43LTE0LjMtMzItMzItMzJsLTY0IDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMybDAgNjR6XCJdXG59O1xuY29uc3QgZmFKYXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnamFyJyxcbiAgaWNvbjogWzMyMCwgNTEyLCBbXSwgXCJlNTE2XCIsIFwiTTMyIDMyQzMyIDE0LjMgNDYuMyAwIDY0IDBMMjU2IDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJMNjQgNjRDNDYuMyA2NCAzMiA0OS43IDMyIDMyek0wIDE2MGMwLTM1LjMgMjguNy02NCA2NC02NGwxOTIgMGMzNS4zIDAgNjQgMjguNyA2NCA2NGwwIDI4OGMwIDM1LjMtMjguNyA2NC02NCA2NEw2NCA1MTJjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgMTYwem05NiA2NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJsMCA5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMmwxMjggMGMxNy43IDAgMzItMTQuMyAzMi0zMmwwLTk2YzAtMTcuNy0xNC4zLTMyLTMyLTMyTDk2IDIyNHpcIl1cbn07XG5jb25zdCBmYU5vdGVTdGlja3kgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnbm90ZS1zdGlja3knLFxuICBpY29uOiBbNDQ4LCA1MTIsIFs2MjAyNiwgXCJzdGlja3ktbm90ZVwiXSwgXCJmMjQ5XCIsIFwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZMMCA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMjI0IDAgMC0xMTJjMC0yNi41IDIxLjUtNDggNDgtNDhsMTEyIDAgMC0yMjRjMC0zNS4zLTI4LjctNjQtNjQtNjRMNjQgMzJ6TTQ0OCAzNTJsLTQ1LjMgMEwzMzYgMzUyYy04LjggMC0xNiA3LjItMTYgMTZsMCA2Ni43IDAgNDUuMyAzMi0zMiA2NC02NCAzMi0zMnpcIl1cbn07XG5jb25zdCBmYVN0aWNreU5vdGUgPSBmYU5vdGVTdGlja3k7XG5jb25zdCBmYUJ1Z1NsYXNoID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2J1Zy1zbGFzaCcsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTQ5MFwiLCBcIk0zOC44IDUuMUMyOC40LTMuMSAxMy4zLTEuMiA1LjEgOS4yUy0xLjIgMzQuNyA5LjIgNDIuOWw1OTIgNDY0YzEwLjQgOC4yIDI1LjUgNi4zIDMzLjctNC4xczYuMy0yNS41LTQuMS0zMy43TDQ3Ny40IDM0OC45YzEuNy05LjQgMi42LTE5IDIuNi0yOC45bDY0IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTY0LjMgMGMtMS4xLTE0LjEtNS0yNy41LTExLjEtMzkuNWMuNy0uNiAxLjQtMS4yIDIuMS0xLjlsNjQtNjRjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBsLTY0IDY0Yy0uNyAuNy0xLjMgMS40LTEuOSAyLjFDNDA5LjIgMTY0LjEgMzkzLjEgMTYwIDM3NiAxNjBsLTExMiAwYy04LjMgMC0xNi4zIDEtMjQgMi44TDM4LjggNS4xek0zMjAgMGMtNTMgMC05NiA0My05NiA5NmwwIDMuNmMwIDE1LjcgMTIuNyAyOC40IDI4LjQgMjguNGwxMzUuMSAwYzE1LjcgMCAyOC40LTEyLjcgMjguNC0yOC40bDAtMy42YzAtNTMtNDMtOTYtOTYtOTZ6TTE2MC4zIDI1Nkw5NiAyNTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzJsNjQgMGMwIDI0LjYgNS41IDQ3LjggMTUuNCA2OC42Yy0yLjIgMS4zLTQuMiAyLjktNiA0LjhsLTY0IDY0Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwbDYzLjEtNjMuMWMyNC41IDIxLjggNTUuOCAzNi4yIDkwLjMgMzkuNmwwLTE0My43TDE2Ni43IDIyNy4zYy0zLjQgOS01LjYgMTguNy02LjQgMjguN3pNMzM2IDQ3OS4yYzM2LjYtMy42IDY5LjctMTkuNiA5NC44LTQzLjhMMzM2IDM2MC43bDAgMTE4LjV6XCJdXG59O1xuY29uc3QgZmFBcnJvd1VwRnJvbVdhdGVyUHVtcCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhcnJvdy11cC1mcm9tLXdhdGVyLXB1bXAnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImU0YjZcIiwgXCJNMTEyIDBDODUuNSAwIDY0IDIxLjUgNjQgNDhsMCAyMDgtMTYgMGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhsMCA5NmMwIDggMiAxNS42IDUuNCAyMi4yYzMuOC0xLjcgNy44LTMuMSAxMi00LjFjMTMuMS0zLjEgMjYuNy05LjggMzcuMy0xOC42YzIyLjItMTguNyA1NC4zLTIwLjEgNzguMS0zLjRjMTggMTIuNCA0MC4xIDIwLjMgNTkuMiAyMC4zYzIxLjEgMCA0Mi04LjUgNTkuMi0yMC4zYzIyLjEtMTUuNSA1MS42LTE1LjUgNzMuNyAwYzE4LjQgMTIuNyAzOS42IDIwLjMgNTkuMiAyMC4zYzE5IDAgNDEuMi03LjkgNTkuMi0yMC4zYzIzLjgtMTYuNyA1NS44LTE1LjMgNzguMSAzLjRjMTAuNiA4LjggMjQuMiAxNS42IDM3LjMgMTguNmM0LjIgMSA4LjIgMi40IDEyIDQuMUM1NzQgNDE1LjYgNTc2IDQwOCA1NzYgNDAwbDAtOTZjMC0yNi41LTIxLjUtNDgtNDgtNDhsLTQ4IDAgMC0xNDYuNyAyNS40IDI1LjRjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM2wtODAtODBjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwbC04MCA4MGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMEw0MTYgMTA5LjMgNDE2IDI1NmwtMTI4IDAgMC0yMDhjMC0yNi41LTIxLjUtNDgtNDgtNDhMMTEyIDB6TTMwNi41IDQyMS45Yy0xMS4xLTcuOS0yNS45LTcuOS0zNyAwQzI0NyA0MzcuNCAyMTkuNSA0NDggMTkyIDQ0OGMtMjYuOSAwLTU1LjMtMTAuOC03Ny40LTI2LjFjMCAwIDAgMCAwIDBjLTExLjktOC41LTI4LjEtNy44LTM5LjIgMS43Yy0xNC40IDExLjktMzIuNSAyMS01MC42IDI1LjJjLTE3LjIgNC0yNy45IDIxLjItMjMuOSAzOC40czIxLjIgMjcuOSAzOC40IDIzLjljMjQuNS01LjcgNDQuOS0xNi41IDU4LjItMjVDMTI2LjUgNTAxLjcgMTU5IDUxMiAxOTIgNTEyYzMxLjkgMCA2MC42LTkuOSA4MC40LTE4LjljNS44LTIuNyAxMS4xLTUuMyAxNS42LTcuN2M0LjUgMi40IDkuNyA1LjEgMTUuNiA3LjdjMTkuOCA5IDQ4LjUgMTguOSA4MC40IDE4LjljMzMgMCA2NS41LTEwLjMgOTQuNS0yNS44YzEzLjQgOC40IDMzLjcgMTkuMyA1OC4yIDI1YzE3LjIgNCAzNC40LTYuNyAzOC40LTIzLjlzLTYuNy0zNC40LTIzLjktMzguNGMtMTguMS00LjItMzYuMi0xMy4zLTUwLjYtMjUuMmMtMTEuMS05LjQtMjcuMy0xMC4xLTM5LjItMS43YzAgMCAwIDAgMCAwQzQzOS40IDQzNy4yIDQxMC45IDQ0OCAzODQgNDQ4Yy0yNy41IDAtNTUtMTAuNi03Ny41LTI2LjF6XCJdXG59O1xuY29uc3QgZmFCb25lID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2JvbmUnLFxuICBpY29uOiBbNTc2LCA1MTIsIFsxMjk0NjBdLCBcImY1ZDdcIiwgXCJNMTUzLjcgMTQ0LjhjNi45IDE2LjMgMjAuNiAzMS4yIDM4LjMgMzEuMmwxOTIgMGMxNy43IDAgMzEuNC0xNC45IDM4LjMtMzEuMkM0MzQuNCAxMTYuMSA0NjIuOSA5NiA0OTYgOTZjNDQuMiAwIDgwIDM1LjggODAgODBjMCAzMC40LTE3IDU2LjktNDIgNzAuNGMtMy42IDEuOS02IDUuNS02IDkuNnMyLjQgNy43IDYgOS42YzI1IDEzLjUgNDIgNDAgNDIgNzAuNGMwIDQ0LjItMzUuOCA4MC04MCA4MGMtMzMuMSAwLTYxLjYtMjAuMS03My43LTQ4LjhDNDE1LjQgMzUwLjkgNDAxLjcgMzM2IDM4NCAzMzZsLTE5MiAwYy0xNy43IDAtMzEuNCAxNC45LTM4LjMgMzEuMkMxNDEuNiAzOTUuOSAxMTMuMSA0MTYgODAgNDE2Yy00NC4yIDAtODAtMzUuOC04MC04MGMwLTMwLjQgMTctNTYuOSA0Mi03MC40YzMuNi0xLjkgNi01LjUgNi05LjZzLTIuNC03LjctNi05LjZDMTcgMjMyLjkgMCAyMDYuNCAwIDE3NmMwLTQ0LjIgMzUuOC04MCA4MC04MGMzMy4xIDAgNjEuNiAyMC4xIDczLjcgNDguOHpcIl1cbn07XG5jb25zdCBmYVRhYmxlQ2VsbHNSb3dVbmxvY2sgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndGFibGUtY2VsbHMtcm93LXVubG9jaycsXG4gIGljb246IFs2NDAsIDUxMiwgW10sIFwiZTY5MVwiLCBcIk0wIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMybDM4NCAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgNjUuMWMtMzcuOCA1LjQtNjkuNCAyOS42LTg1LjIgNjIuOUwzNjAgMjI0bDAgNjQgNTYgMCAwIDguNmMtMTkuMSAxMS4xLTMyIDMxLjctMzIgNTUuNGwtMjQgMCAwIDY0IDI0IDAgMCA2NEw2NCA0ODBjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgOTZ6TTY0IDIyNGwwIDY0IDg4IDAgMC02NC04OCAwem0yMzIgMGwtODggMCAwIDY0IDg4IDAgMC02NHpNMTUyIDM1MmwtODggMCAwIDY0IDg4IDAgMC02NHptNTYgMGwwIDY0IDg4IDAgMC02NC04OCAwem0yODgtODBsMCA0OCAzMiAwIDMyIDAgNDggMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDEyOGMwIDE3LjctMTQuMyAzMi0zMiAzMmwtMTYwIDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtMTI4YzAtMTcuNyAxNC4zLTMyIDMyLTMybDAtNDhjMC00NC4yIDM1LjgtODAgODAtODBzODAgMzUuOCA4MCA4MGwtNDggMGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMnpcIl1cbn07XG5jb25zdCBmYVVzZXJJbmp1cmVkID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3VzZXItaW5qdXJlZCcsXG4gIGljb246IFs0NDgsIDUxMiwgW10sIFwiZjcyOFwiLCBcIk0yNDAgODBsMTAyLjcgMGMtNy45LTE5LjUtMjAuNC0zNi41LTM2LjItNDkuOUwyNDAgODB6bTM3LjctNjguMkMyNjEuMyA0LjIgMjQzLjIgMCAyMjQgMGMtNTMuNyAwLTk5LjcgMzMuMS0xMTguNyA4MGw4MS40IDAgOTEtNjguMnpNMjI0IDI1NmM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOGMwLTUuNC0uMy0xMC44LTEtMTZMOTcgMTEyYy0uNyA1LjItMSAxMC42LTEgMTZjMCA3MC43IDU3LjMgMTI4IDEyOCAxMjh6TTEyNCAzMTIuNGMtOS43IDMuMS0xOS4xIDctMjggMTEuN0w5NiA1MTJsMTQ3LjcgMEwxODEuNSA0MDguMiAxMjQgMzEyLjR6bTMzLTcuMkwyMDQuMyAzODRsNjcuNyAwYzQ0LjIgMCA4MCAzNS44IDgwIDgwYzAgMTgtNiAzNC42LTE2IDQ4bDgyLjMgMGMxNi40IDAgMjkuNy0xMy4zIDI5LjctMjkuN0M0NDggMzgzLjggMzY4LjIgMzA0IDI2OS43IDMwNGwtOTEuNCAwYy03LjIgMC0xNC4zIC40LTIxLjMgMS4zek0wIDQ4Mi4zQzAgNDk4LjcgMTMuMyA1MTIgMjkuNyA1MTJMNjQgNTEybDAtMTY2LjZDMjQuOSAzNzguMSAwIDQyNy4zIDAgNDgyLjN6TTMyMCA0NjRjMC0yNi41LTIxLjUtNDgtNDgtNDhsLTQ4LjUgMCA1Ny4xIDk1LjJDMzAzIDUwNy4yIDMyMCA0ODcuNiAzMjAgNDY0elwiXVxufTtcbmNvbnN0IGZhRmFjZVNhZFRlYXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZmFjZS1zYWQtdGVhcicsXG4gIGljb246IFs1MTIsIDUxMiwgWzEyODU0NiwgXCJzYWQtdGVhclwiXSwgXCJmNWI0XCIsIFwiTTAgMjU2YTI1NiAyNTYgMCAxIDAgNTEyIDBBMjU2IDI1NiAwIDEgMCAwIDI1NnptMjQwIDgwYzAtOC44IDcuMi0xNiAxNi0xNmM0NSAwIDg1LjYgMjAuNSAxMTUuNyA1My4xYzYgNi41IDUuNiAxNi42LS45IDIyLjZzLTE2LjYgNS42LTIyLjYtLjljLTI1LTI3LjEtNTcuNC00Mi45LTkyLjMtNDIuOWMtOC44IDAtMTYtNy4yLTE2LTE2em0tODAgODBjLTI2LjUgMC00OC0yMS00OC00N2MwLTIwIDI4LjYtNjAuNCA0MS42LTc3LjdjMy4yLTQuNCA5LjYtNC40IDEyLjggMEMxNzkuNiAzMDguNiAyMDggMzQ5IDIwOCAzNjljMCAyNi0yMS41IDQ3LTQ4IDQ3ek0zNjcuNiAyMDhhMzIgMzIgMCAxIDEgLTY0IDAgMzIgMzIgMCAxIDEgNjQgMHptLTE5Mi0zMmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6XCJdXG59O1xuY29uc3QgZmFTYWRUZWFyID0gZmFGYWNlU2FkVGVhcjtcbmNvbnN0IGZhUGxhbmUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGxhbmUnLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImYwNzJcIiwgXCJNNDgyLjMgMTkyYzM0LjIgMCA5My43IDI5IDkzLjcgNjRjMCAzNi01OS41IDY0LTkzLjcgNjRsLTExNi42IDBMMjY1LjIgNDk1LjljLTUuNyAxMC0xNi4zIDE2LjEtMjcuOCAxNi4xbC01Ni4yIDBjLTEwLjYgMC0xOC4zLTEwLjItMTUuNC0yMC40bDQ5LTE3MS42TDExMiAzMjAgNjguOCAzNzcuNmMtMyA0LTcuOCA2LjQtMTIuOCA2LjRsLTQyIDBjLTcuOCAwLTE0LTYuMy0xNC0xNGMwLTEuMyAuMi0yLjYgLjUtMy45TDMyIDI1NiAuNSAxNDUuOWMtLjQtMS4zLS41LTIuNi0uNS0zLjljMC03LjggNi4zLTE0IDE0LTE0bDQyIDBjNSAwIDkuOCAyLjQgMTIuOCA2LjRMMTEyIDE5MmwxMDIuOSAwLTQ5LTE3MS42QzE2Mi45IDEwLjIgMTcwLjYgMCAxODEuMiAwbDU2LjIgMGMxMS41IDAgMjIuMSA2LjIgMjcuOCAxNi4xTDM2NS43IDE5MmwxMTYuNiAwelwiXVxufTtcbmNvbnN0IGZhVGVudEFycm93c0Rvd24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndGVudC1hcnJvd3MtZG93bicsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZTU4MVwiLCBcIk0yMDkuOCAxMTEuOWMtOC45LTkuOS0yNC0xMC43LTMzLjktMS44bC0zOS45IDM2TDEzNiAyNGMwLTEzLjMtMTAuNy0yNC0yNC0yNFM4OCAxMC43IDg4IDI0bDAgMTIyLjEtMzkuOS0zNmMtOS45LTguOS0yNS04LjEtMzMuOSAxLjhzLTguMSAyNSAxLjggMzMuOWw4MCA3MmM5LjEgOC4yIDIzIDguMiAzMi4xIDBsODAtNzJjOS45LTguOSAxMC43LTI0IDEuOC0zMy45em0zNTIgMGMtOC45LTkuOS0yNC0xMC43LTMzLjktMS44bC0zOS45IDM2TDQ4OCAyNGMwLTEzLjMtMTAuNy0yNC0yNC0yNHMtMjQgMTAuNy0yNCAyNGwwIDEyMi4xLTM5LjktMzZjLTkuOS04LjktMjUtOC4xLTMzLjkgMS44cy04LjEgMjUgMS44IDMzLjlsODAgNzJjOS4xIDguMiAyMyA4LjIgMzIuMSAwbDgwLTcyYzkuOS04LjkgMTAuNy0yNCAxLjgtMzMuOXpNMzA3LjQgMTY2LjVjLTExLjUtOC43LTI3LjMtOC43LTM4LjggMGwtMTY4IDEyOGMtNi42IDUtMTEgMTIuNS0xMi4zIDIwLjdsLTI0IDE2MGMtMS40IDkuMiAxLjMgMTguNiA3LjQgMjUuNlM4Ni43IDUxMiA5NiA1MTJsMTQ0IDAgMTYgMGMxNy43IDAgMzItMTQuMyAzMi0zMmwwLTExOC4xYzAtNS41IDQuNC05LjkgOS45LTkuOWMzLjcgMCA3LjIgMi4xIDguOCA1LjVsNjguNCAxMzYuOGM1LjQgMTAuOCAxNi41IDE3LjcgMjguNiAxNy43bDYwLjIgMCAxNiAwYzkuMyAwIDE4LjItNC4xIDI0LjItMTEuMXM4LjgtMTYuNCA3LjQtMjUuNmwtMjQtMTYwYy0xLjItOC4yLTUuNi0xNS43LTEyLjMtMjAuN2wtMTY4LTEyOHpcIl1cbn07XG5jb25zdCBmYUV4Y2xhbWF0aW9uID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2V4Y2xhbWF0aW9uJyxcbiAgaWNvbjogWzEyOCwgNTEyLCBbMTAwNjksIDEwMDcxLCA2MTczOF0sIFwiMjFcIiwgXCJNOTYgNjRjMC0xNy43LTE0LjMtMzItMzItMzJTMzIgNDYuMyAzMiA2NGwwIDI1NmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyTDk2IDY0ek02NCA0ODBhNDAgNDAgMCAxIDAgMC04MCA0MCA0MCAwIDEgMCAwIDgwelwiXVxufTtcbmNvbnN0IGZhQXJyb3dzU3BpbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdhcnJvd3Mtc3BpbicsXG4gIGljb246IFs1MTIsIDUxMiwgW10sIFwiZTRiYlwiLCBcIk0yNTYgOTZjMzguNCAwIDczLjcgMTMuNSAxMDEuMyAzNi4xbC0zMi42IDMyLjZjLTQuNiA0LjYtNS45IDExLjUtMy41IDE3LjRzOC4zIDkuOSAxNC44IDkuOWwxMTIgMGM4LjggMCAxNi03LjIgMTYtMTZsMC0xMTJjMC02LjUtMy45LTEyLjMtOS45LTE0LjhzLTEyLjktMS4xLTE3LjQgMy41bC0zNCAzNEMzNjMuNCA1Mi42IDMxMi4xIDMyIDI1NiAzMmMtMTAuOSAwLTIxLjUgLjgtMzIgMi4zbDAgNjQuOWMxMC4zLTIuMSAyMS0zLjIgMzItMy4yek0xMzIuMSAxNTQuN2wzMi42IDMyLjZjNC42IDQuNiAxMS41IDUuOSAxNy40IDMuNXM5LjktOC4zIDkuOS0xNC44bDAtMTEyYzAtOC44LTcuMi0xNi0xNi0xNkw2NCA0OGMtNi41IDAtMTIuMyAzLjktMTQuOCA5LjlzLTEuMSAxMi45IDMuNSAxNy40bDM0IDM0QzUyLjYgMTQ4LjYgMzIgMTk5LjkgMzIgMjU2YzAgMTAuOSAuOCAyMS41IDIuMyAzMmw2NC45IDBjLTIuMS0xMC4zLTMuMi0yMS0zLjItMzJjMC0zOC40IDEzLjUtNzMuNyAzNi4xLTEwMS4zek00NzcuNyAyMjRsLTY0LjkgMGMyLjEgMTAuMyAzLjIgMjEgMy4yIDMyYzAgMzguNC0xMy41IDczLjctMzYuMSAxMDEuM2wtMzIuNi0zMi42Yy00LjYtNC42LTExLjUtNS45LTE3LjQtMy41cy05LjkgOC4zLTkuOSAxNC44bDAgMTEyYzAgOC44IDcuMiAxNiAxNiAxNmwxMTIgMGM2LjUgMCAxMi4zLTMuOSAxNC44LTkuOXMxLjEtMTIuOS0zLjUtMTcuNGwtMzQtMzRDNDU5LjQgMzYzLjQgNDgwIDMxMi4xIDQ4MCAyNTZjMC0xMC45LS44LTIxLjUtMi4zLTMyek0yNTYgNDE2Yy0zOC40IDAtNzMuNy0xMy41LTEwMS4zLTM2LjFsMzIuNi0zMi42YzQuNi00LjYgNS45LTExLjUgMy41LTE3LjRzLTguMy05LjktMTQuOC05LjlMNjQgMzIwYy04LjggMC0xNiA3LjItMTYgMTZsMCAxMTJjMCA2LjUgMy45IDEyLjMgOS45IDE0LjhzMTIuOSAxLjEgMTcuNC0zLjVsMzQtMzRDMTQ4LjYgNDU5LjQgMTk5LjkgNDgwIDI1NiA0ODBjMTAuOSAwIDIxLjUtLjggMzItMi4zbDAtNjQuOWMtMTAuMyAyLjEtMjEgMy4yLTMyIDMuMnpcIl1cbn07XG5jb25zdCBmYVByaW50ID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3ByaW50JyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbMTI4NDI0LCAxMjg0MzgsIDkxMTNdLCBcImYwMmZcIiwgXCJNMTI4IDBDOTIuNyAwIDY0IDI4LjcgNjQgNjRsMCA5NiA2NCAwIDAtOTYgMjI2LjcgMEwzODQgOTMuM2wwIDY2LjcgNjQgMCAwLTY2LjdjMC0xNy02LjctMzMuMy0xOC43LTQ1LjNMNDAwIDE4LjdDMzg4IDYuNyAzNzEuNyAwIDM1NC43IDBMMTI4IDB6TTM4NCAzNTJsMCAzMiAwIDY0LTI1NiAwIDAtNjQgMC0xNiAwLTE2IDI1NiAwem02NCAzMmwzMiAwYzE3LjcgMCAzMi0xNC4zIDMyLTMybDAtOTZjMC0zNS4zLTI4LjctNjQtNjQtNjRMNjQgMTkyYy0zNS4zIDAtNjQgMjguNy02NCA2NGwwIDk2YzAgMTcuNyAxNC4zIDMyIDMyIDMybDMyIDAgMCA2NGMwIDM1LjMgMjguNyA2NCA2NCA2NGwyNTYgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTY0ek00MzIgMjQ4YTI0IDI0IDAgMSAxIDAgNDggMjQgMjQgMCAxIDEgMC00OHpcIl1cbn07XG5jb25zdCBmYVR1cmtpc2hMaXJhU2lnbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0dXJraXNoLWxpcmEtc2lnbicsXG4gIGljb246IFszODQsIDUxMiwgW1widHJ5XCIsIFwidHVya2lzaC1saXJhXCJdLCBcImUyYmJcIiwgXCJNOTYgMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJsMCAzNS4zTDI0Ny4yIDY1LjJjMTctNC45IDM0LjcgNSAzOS42IDIycy01IDM0LjctMjIgMzkuNkwxMjggMTY1LjlsMCAyOS40IDExOS4yLTM0LjFjMTctNC45IDM0LjcgNSAzOS42IDIycy01IDM0LjctMjIgMzkuNkwxMjggMjYxLjkgMTI4IDQxNmw2My44IDBjNjguMiAwIDEyNC40LTUzLjUgMTI3LjgtMTIxLjZsLjQtOGMuOS0xNy43IDE1LjktMzEuMiAzMy42LTMwLjRzMzEuMiAxNS45IDMwLjQgMzMuNmwtLjQgOEMzNzguNSAzOTkuOCAyOTQuMSA0ODAgMTkxLjggNDgwTDk2IDQ4MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC0xNjcuOS0yMy4yIDYuNmMtMTcgNC45LTM0LjctNS0zOS42LTIyczUtMzQuNyAyMi0zOS42TDY0IDIxMy42bDAtMjkuNC0yMy4yIDYuNmMtMTcgNC45LTM0LjctNS0zOS42LTIyczUtMzQuNyAyMi0zOS42TDY0IDExNy42IDY0IDY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyelwiXVxufTtcbmNvbnN0IGZhVHJ5ID0gZmFUdXJraXNoTGlyYVNpZ247XG5jb25zdCBmYVR1cmtpc2hMaXJhID0gZmFUdXJraXNoTGlyYVNpZ247XG5jb25zdCBmYURvbGxhclNpZ24gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnZG9sbGFyLXNpZ24nLFxuICBpY29uOiBbMzIwLCA1MTIsIFsxMjgxNzgsIDYxNzgxLCBcImRvbGxhclwiLCBcInVzZFwiXSwgXCIyNFwiLCBcIk0xNjAgMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDM1LjdjMS42IC4yIDMuMSAuNCA0LjcgLjdjLjQgLjEgLjcgLjEgMS4xIC4ybDQ4IDguOGMxNy40IDMuMiAyOC45IDE5LjkgMjUuNyAzNy4ycy0xOS45IDI4LjktMzcuMiAyNS43bC00Ny41LTguN2MtMzEuMy00LjYtNTguOS0xLjUtNzguMyA2LjJzLTI3LjIgMTguMy0yOSAyOC4xYy0yIDEwLjctLjUgMTYuNyAxLjIgMjAuNGMxLjggMy45IDUuNSA4LjMgMTIuOCAxMy4yYzE2LjMgMTAuNyA0MS4zIDE3LjcgNzMuNyAyNi4zbDIuOSAuOGMyOC42IDcuNiA2My42IDE2LjggODkuNiAzMy44YzE0LjIgOS4zIDI3LjYgMjEuOSAzNS45IDM5LjVjOC41IDE3LjkgMTAuMyAzNy45IDYuNCA1OS4yYy02LjkgMzgtMzMuMSA2My40LTY1LjYgNzYuN2MtMTMuNyA1LjYtMjguNiA5LjItNDQuNCAxMWwwIDMzLjRjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC0zNC45Yy0uNC0uMS0uOS0uMS0xLjMtLjJsLS4yIDBzMCAwIDAgMGMtMjQuNC0zLjgtNjQuNS0xNC4zLTkxLjUtMjYuM2MtMTYuMS03LjItMjMuNC0yNi4xLTE2LjItNDIuMnMyNi4xLTIzLjQgNDIuMi0xNi4yYzIwLjkgOS4zIDU1LjMgMTguNSA3NS4yIDIxLjZjMzEuOSA0LjcgNTguMiAyIDc2LTUuM2MxNi45LTYuOSAyNC42LTE2LjkgMjYuOC0yOC45YzEuOS0xMC42IC40LTE2LjctMS4zLTIwLjRjLTEuOS00LTUuNi04LjQtMTMtMTMuM2MtMTYuNC0xMC43LTQxLjUtMTcuNy03NC0yNi4zbC0yLjgtLjdzMCAwIDAgMEMxMTkuNCAyNzkuMyA4NC40IDI3MCA1OC40IDI1M2MtMTQuMi05LjMtMjcuNS0yMi0zNS44LTM5LjZjLTguNC0xNy45LTEwLjEtMzcuOS02LjEtNTkuMkMyMy43IDExNiA1Mi4zIDkxLjIgODQuOCA3OC4zYzEzLjMtNS4zIDI3LjktOC45IDQzLjItMTFMMTI4IDMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyelwiXVxufTtcbmNvbnN0IGZhRG9sbGFyID0gZmFEb2xsYXJTaWduO1xuY29uc3QgZmFVc2QgPSBmYURvbGxhclNpZ247XG5jb25zdCBmYVggPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAneCcsXG4gIGljb246IFszODQsIDUxMiwgWzEyMF0sIFwiNThcIiwgXCJNMzc2LjYgODQuNWMxMS4zLTEzLjYgOS41LTMzLjgtNC4xLTQ1LjFzLTMzLjgtOS41LTQ1LjEgNC4xTDE5MiAyMDYgNTYuNiA0My41QzQ1LjMgMjkuOSAyNS4xIDI4LjEgMTEuNSAzOS40Uy0zLjkgNzAuOSA3LjQgODQuNUwxNTAuMyAyNTYgNy40IDQyNy41Yy0xMS4zIDEzLjYtOS41IDMzLjggNC4xIDQ1LjFzMzMuOCA5LjUgNDUuMS00LjFMMTkyIDMwNiAzMjcuNCA0NjguNWMxMS4zIDEzLjYgMzEuNSAxNS40IDQ1LjEgNC4xczE1LjQtMzEuNSA0LjEtNDUuMUwyMzMuNyAyNTYgMzc2LjYgODQuNXpcIl1cbn07XG5jb25zdCBmYU1hZ25pZnlpbmdHbGFzc0RvbGxhciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdtYWduaWZ5aW5nLWdsYXNzLWRvbGxhcicsXG4gIGljb246IFs1MTIsIDUxMiwgW1wic2VhcmNoLWRvbGxhclwiXSwgXCJmNjg4XCIsIFwiTTQxNiAyMDhjMCA0NS45LTE0LjkgODguMy00MCAxMjIuN0w1MDIuNiA0NTcuNGMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM3MtMzIuOCAxMi41LTQ1LjMgMEwzMzAuNyAzNzZjLTM0LjQgMjUuMi03Ni44IDQwLTEyMi43IDQwQzkzLjEgNDE2IDAgMzIyLjkgMCAyMDhTOTMuMSAwIDIwOCAwUzQxNiA5My4xIDQxNiAyMDh6TTIyOCAxMDRjMC0xMS05LTIwLTIwLTIwcy0yMCA5LTIwIDIwbDAgMTRjLTcuNiAxLjctMTUuMiA0LjQtMjIuMiA4LjVjLTEzLjkgOC4zLTI1LjkgMjIuOC0yNS44IDQzLjljLjEgMjAuMyAxMiAzMy4xIDI0LjcgNDAuN2MxMSA2LjYgMjQuNyAxMC44IDM1LjYgMTRsMS43IC41YzEyLjYgMy44IDIxLjggNi44IDI4IDEwLjdjNS4xIDMuMiA1LjggNS40IDUuOSA4LjJjLjEgNS0xLjggOC01LjkgMTAuNWMtNSAzLjEtMTIuOSA1LTIxLjQgNC43Yy0xMS4xLS40LTIxLjUtMy45LTM1LjEtOC41Yy0yLjMtLjgtNC43LTEuNi03LjItMi40Yy0xMC41LTMuNS0yMS44IDIuMi0yNS4zIDEyLjZzMi4yIDIxLjggMTIuNiAyNS4zYzEuOSAuNiA0IDEuMyA2LjEgMi4xYzAgMCAwIDAgMCAwczAgMCAwIDBjOC4zIDIuOSAxNy45IDYuMiAyOC4yIDguNGwwIDE0LjZjMCAxMSA5IDIwIDIwIDIwczIwLTkgMjAtMjBsMC0xMy44YzgtMS43IDE2LTQuNSAyMy4yLTljMTQuMy04LjkgMjUuMS0yNC4xIDI0LjgtNDVjLS4zLTIwLjMtMTEuNy0zMy40LTI0LjYtNDEuNmMtMTEuNS03LjItMjUuOS0xMS42LTM3LjEtMTVsLS43LS4yYy0xMi44LTMuOS0yMS45LTYuNy0yOC4zLTEwLjVjLTUuMi0zLjEtNS4zLTQuOS01LjMtNi43YzAtMy43IDEuNC02LjUgNi4yLTkuM2M1LjQtMy4yIDEzLjYtNS4xIDIxLjUtNWM5LjYgLjEgMjAuMiAyLjIgMzEuMiA1LjJjMTAuNyAyLjggMjEuNi0zLjUgMjQuNS0xNC4ycy0zLjUtMjEuNi0xNC4yLTI0LjVjLTYuNS0xLjctMTMuNy0zLjQtMjEuMS00LjdsMC0xMy45elwiXVxufTtcbmNvbnN0IGZhU2VhcmNoRG9sbGFyID0gZmFNYWduaWZ5aW5nR2xhc3NEb2xsYXI7XG5jb25zdCBmYVVzZXJzR2VhciA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd1c2Vycy1nZWFyJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbXCJ1c2Vycy1jb2dcIl0sIFwiZjUwOVwiLCBcIk0xNDQgMTYwQTgwIDgwIDAgMSAwIDE0NCAwYTgwIDgwIDAgMSAwIDAgMTYwem0zNjggMEE4MCA4MCAwIDEgMCA1MTIgMGE4MCA4MCAwIDEgMCAwIDE2MHpNMCAyOTguN0MwIDMxMC40IDkuNiAzMjAgMjEuMyAzMjBsMjEzLjMgMGMuMiAwIC40IDAgLjcgMGMtMjYuNi0yMy41LTQzLjMtNTcuOC00My4zLTk2YzAtNy42IC43LTE1IDEuOS0yMi4zYy0xMy42LTYuMy0yOC43LTkuNy00NC42LTkuN2wtNDIuNyAwQzQ3LjggMTkyIDAgMjM5LjggMCAyOTguN3pNMzIwIDMyMGMyNCAwIDQ1LjktOC44IDYyLjctMjMuM2MyLjUtMy43IDUuMi03LjMgOC0xMC43YzIuNy0zLjMgNS43LTYuMSA5LTguM0M0MTAgMjYyLjMgNDE2IDI0My45IDQxNiAyMjRjMC01My00My05Ni05Ni05NnMtOTYgNDMtOTYgOTZzNDMgOTYgOTYgOTZ6bTY1LjQgNjAuMmMtMTAuMy01LjktMTguMS0xNi4yLTIwLjgtMjguMmwtMTAzLjIgMEMxODcuNyAzNTIgMTI4IDQxMS43IDEyOCA0ODUuM2MwIDE0LjcgMTEuOSAyNi43IDI2LjcgMjYuN2wzMDAuNiAwYy0yLjEtNS4yLTMuMi0xMC45LTMuMi0xNi40bDAtM2MtMS4zLS43LTIuNy0xLjUtNC0yLjNsLTIuNiAxLjVjLTE2LjggOS43LTQwLjUgOC01NC43LTkuN2MtNC41LTUuNi04LjYtMTEuNS0xMi40LTE3LjZsLS4xLS4yLS4xLS4yLTIuNC00LjEtLjEtLjItLjEtLjJjLTMuNC02LjItNi40LTEyLjYtOS0xOS4zYy04LjItMjEuMiAyLjItNDIuNiAxOS01Mi4zbDIuNy0xLjVjMC0uOCAwLTEuNSAwLTIuM3MwLTEuNSAwLTIuM2wtMi43LTEuNXpNNTMzLjMgMTkybC00Mi43IDBjLTE1LjkgMC0zMSAzLjUtNDQuNiA5LjdjMS4zIDcuMiAxLjkgMTQuNyAxLjkgMjIuM2MwIDE3LjQtMy41IDMzLjktOS43IDQ5YzIuNSAuOSA0LjkgMiA3LjEgMy4zbDIuNiAxLjVjMS4zLS44IDIuNi0xLjYgNC0yLjNsMC0zYzAtMTkuNCAxMy4zLTM5LjEgMzUuOC00Mi42YzcuOS0xLjIgMTYtMS45IDI0LjItMS45czE2LjMgLjYgMjQuMiAxLjljMjIuNSAzLjUgMzUuOCAyMy4yIDM1LjggNDIuNmwwIDNjMS4zIC43IDIuNyAxLjUgNCAyLjNsMi42LTEuNWMxNi44LTkuNyA0MC41LTggNTQuNyA5LjdjMi4zIDIuOCA0LjUgNS44IDYuNiA4LjdjLTIuMS01Ny4xLTQ5LTEwMi43LTEwNi42LTEwMi43em05MS4zIDE2My45YzYuMy0zLjYgOS41LTExLjEgNi44LTE4Yy0yLjEtNS41LTQuNi0xMC44LTcuNC0xNS45bC0yLjMtNGMtMy4xLTUuMS02LjUtOS45LTEwLjItMTQuNWMtNC42LTUuNy0xMi43LTYuNy0xOS0zbC0yLjkgMS43Yy05LjIgNS4zLTIwLjQgNC0yOS42LTEuM3MtMTYuMS0xNC41LTE2LjEtMjUuMWwwLTMuNGMwLTcuMy00LjktMTMuOC0xMi4xLTE0LjljLTYuNS0xLTEzLjEtMS41LTE5LjktMS41cy0xMy40IC41LTE5LjkgMS41Yy03LjIgMS4xLTEyLjEgNy42LTEyLjEgMTQuOWwwIDMuNGMwIDEwLjYtNi45IDE5LjgtMTYuMSAyNS4xcy0yMC40IDYuNi0yOS42IDEuM2wtMi45LTEuN2MtNi4zLTMuNi0xNC40LTIuNi0xOSAzYy0zLjcgNC42LTcuMSA5LjUtMTAuMiAxNC42bC0yLjMgMy45Yy0yLjggNS4xLTUuMyAxMC40LTcuNCAxNS45Yy0yLjYgNi44IC41IDE0LjMgNi44IDE3LjlsMi45IDEuN2M5LjIgNS4zIDEzLjcgMTUuOCAxMy43IDI2LjRzLTQuNSAyMS4xLTEzLjcgMjYuNGwtMyAxLjdjLTYuMyAzLjYtOS41IDExLjEtNi44IDE3LjljMi4xIDUuNSA0LjYgMTAuNyA3LjQgMTUuOGwyLjQgNC4xYzMgNS4xIDYuNCA5LjkgMTAuMSAxNC41YzQuNiA1LjcgMTIuNyA2LjcgMTkgM2wyLjktMS43YzkuMi01LjMgMjAuNC00IDI5LjYgMS4zczE2LjEgMTQuNSAxNi4xIDI1LjFsMCAzLjRjMCA3LjMgNC45IDEzLjggMTIuMSAxNC45YzYuNSAxIDEzLjEgMS41IDE5LjkgMS41czEzLjQtLjUgMTkuOS0xLjVjNy4yLTEuMSAxMi4xLTcuNiAxMi4xLTE0LjlsMC0zLjRjMC0xMC42IDYuOS0xOS44IDE2LjEtMjUuMXMyMC40LTYuNiAyOS42LTEuM2wyLjkgMS43YzYuMyAzLjYgMTQuNCAyLjYgMTktM2MzLjctNC42IDcuMS05LjQgMTAuMS0xNC41bDIuNC00LjJjMi44LTUuMSA1LjMtMTAuMyA3LjQtMTUuOGMyLjYtNi44LS41LTE0LjMtNi44LTE3LjlsLTMtMS43Yy05LjItNS4zLTEzLjctMTUuOC0xMy43LTI2LjRzNC41LTIxLjEgMTMuNy0yNi40bDMtMS43ek00NzIgMzg0YTQwIDQwIDAgMSAxIDgwIDAgNDAgNDAgMCAxIDEgLTgwIDB6XCJdXG59O1xuY29uc3QgZmFVc2Vyc0NvZyA9IGZhVXNlcnNHZWFyO1xuY29uc3QgZmFQZXJzb25NaWxpdGFyeVBvaW50aW5nID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BlcnNvbi1taWxpdGFyeS1wb2ludGluZycsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZTU0YVwiLCBcIk0yNDYuOSAxNC4xQzIzNCAxNS4yIDIyNCAyNiAyMjQgMzljMCAxMy44IDExLjIgMjUgMjUgMjVsMTUxIDBjOC44IDAgMTYtNy4yIDE2LTE2bDAtMzAuNkM0MTYgOCA0MDggLjcgMzk4LjcgMS40TDI0Ni45IDE0LjF6TTI0MCAxMTJjMCA0NC4yIDM1LjggODAgODAgODBzODAtMzUuOCA4MC04MGMwLTUuNS0uNi0xMC44LTEuNi0xNkwyNDEuNiA5NmMtMSA1LjItMS42IDEwLjUtMS42IDE2ek03MiAyMjRjLTIyLjEgMC00MCAxNy45LTQwIDQwczE3LjkgNDAgNDAgNDBsMTUyIDAgMCA4OS40TDM4Ni44IDIzMC41Yy0xMy4zLTQuMy0yNy4zLTYuNS00MS42LTYuNUwyNDAgMjI0IDcyIDIyNHptMzQ1LjcgMjAuOUwyNDYuNiA0MTYgNDE2IDQxNmwwLTQ2LjMgNTMuNiA5MC42YzExLjIgMTkgMzUuOCAyNS4zIDU0LjggMTQuMXMyNS4zLTM1LjggMTQuMS01NC44TDQ2Mi4zIDI5MC44Yy0xMS4yLTE4LjktMjYuNi0zNC41LTQ0LjYtNDUuOXpNMjI0IDQ0OGwwIDMyYzAgMTcuNyAxNC4zIDMyIDMyIDMybDEyOCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMybDAtMzItMTkyIDB6XCJdXG59O1xuY29uc3QgZmFCdWlsZGluZ0NvbHVtbnMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnYnVpbGRpbmctY29sdW1ucycsXG4gIGljb246IFs1MTIsIDUxMiwgW1wiYmFua1wiLCBcImluc3RpdHV0aW9uXCIsIFwibXVzZXVtXCIsIFwidW5pdmVyc2l0eVwiXSwgXCJmMTljXCIsIFwiTTI0My40IDIuNmwtMjI0IDk2Yy0xNCA2LTIxLjggMjEtMTguNyAzNS44UzE2LjggMTYwIDMyIDE2MGwwIDhjMCAxMy4zIDEwLjcgMjQgMjQgMjRsNDAwIDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRsMC04YzE1LjIgMCAyOC4zLTEwLjcgMzEuMy0yNS42cy00LjgtMjkuOS0xOC43LTM1LjhsLTIyNC05NmMtOC0zLjQtMTcuMi0zLjQtMjUuMiAwek0xMjggMjI0bC02NCAwIDAgMTk2LjNjLS42IC4zLTEuMiAuNy0xLjggMS4xbC00OCAzMmMtMTEuNyA3LjgtMTcgMjIuNC0xMi45IDM1LjlTMTcuOSA1MTIgMzIgNTEybDQ0OCAwYzE0LjEgMCAyNi41LTkuMiAzMC42LTIyLjdzLTEuMS0yOC4xLTEyLjktMzUuOWwtNDgtMzJjLS42LS40LTEuMi0uNy0xLjgtMS4xTDQ0OCAyMjRsLTY0IDAgMCAxOTItNDAgMCAwLTE5Mi02NCAwIDAgMTkyLTQ4IDAgMC0xOTItNjQgMCAwIDE5Mi00MCAwIDAtMTkyek0yNTYgNjRhMzIgMzIgMCAxIDEgMCA2NCAzMiAzMiAwIDEgMSAwLTY0elwiXVxufTtcbmNvbnN0IGZhQmFuayA9IGZhQnVpbGRpbmdDb2x1bW5zO1xuY29uc3QgZmFJbnN0aXR1dGlvbiA9IGZhQnVpbGRpbmdDb2x1bW5zO1xuY29uc3QgZmFNdXNldW0gPSBmYUJ1aWxkaW5nQ29sdW1ucztcbmNvbnN0IGZhVW5pdmVyc2l0eSA9IGZhQnVpbGRpbmdDb2x1bW5zO1xuY29uc3QgZmFVbWJyZWxsYSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd1bWJyZWxsYScsXG4gIGljb246IFs1NzYsIDUxMiwgW10sIFwiZjBlOVwiLCBcIk0yODggMGMxNy43IDAgMzIgMTQuMyAzMiAzMmwwIDE3LjdDNDUxLjggNjMuNCA1NTcuNyAxNjEgNTczLjkgMjg1LjljMiAxNS42LTE3LjMgMjQuNC0yNy44IDEyLjdDNTMyLjEgMjgzIDUwNC44IDI3MiA0ODAgMjcyYy0zOC43IDAtNzEgMjcuNS03OC40IDY0LjFjLTEuNyA4LjctOC43IDE1LjktMTcuNiAxNS45cy0xNS44LTcuMi0xNy42LTE1LjlDMzU5IDI5OS41IDMyNi43IDI3MiAyODggMjcycy03MSAyNy41LTc4LjQgNjQuMWMtMS43IDguNy04LjcgMTUuOS0xNy42IDE1LjlzLTE1LjgtNy4yLTE3LjYtMTUuOUMxNjcgMjk5LjUgMTM0LjcgMjcyIDk2IDI3MmMtMjQuOCAwLTUyLjEgMTEtNjYuMSAyNi43QzE5LjQgMzEwLjQgLjEgMzAxLjUgMi4xIDI4NS45QzE4LjMgMTYxIDEyNC4yIDYzLjQgMjU2IDQ5LjdMMjU2IDMyYzAtMTcuNyAxNC4zLTMyIDMyLTMyem0wIDMwNGMxMi4zIDAgMjMuNSA0LjYgMzIgMTIuMmwwIDExNC4zYzAgNDUtMzYuNSA4MS40LTgxLjQgODEuNGMtMzAuOCAwLTU5LTE3LjQtNzIuOC00NWwtMi4zLTQuN2MtNy45LTE1LjgtMS41LTM1IDE0LjMtNDIuOXMzNS0xLjUgNDIuOSAxNC4zbDIuMyA0LjdjMyA1LjkgOSA5LjYgMTUuNiA5LjZjOS42IDAgMTcuNC03LjggMTcuNC0xNy40bDAtMTE0LjNjOC41LTcuNiAxOS43LTEyLjIgMzItMTIuMnpcIl1cbn07XG5jb25zdCBmYVRyb3dlbCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICd0cm93ZWwnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImU1ODlcIiwgXCJNMzQzLjkgMjEzLjRMMjQ1LjMgMzEybDY1LjQgNjUuNGM3LjkgNy45IDExLjEgMTkuNCA4LjQgMzAuM3MtMTAuOCAxOS42LTIxLjUgMjIuOWwtMjU2IDgwYy0xMS40IDMuNS0yMy44IC41LTMyLjItNy45Uy0yLjEgNDgxLjggMS41IDQ3MC41bDgwLTI1NmMzLjMtMTAuNyAxMi0xOC45IDIyLjktMjEuNXMyMi40IC41IDMwLjMgOC40TDIwMCAyNjYuN2w5OC42LTk4LjZjLTE0LjMtMTQuNi0xNC4yLTM4IC4zLTUyLjVsOTUuNC05NS40YzI2LjktMjYuOSA3MC41LTI2LjkgOTcuNSAwczI2LjkgNzAuNSAwIDk3LjVsLTk1LjQgOTUuNGMtMTQuNSAxNC41LTM3LjkgMTQuNi01Mi41IC4zelwiXVxufTtcbmNvbnN0IGZhRCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdkJyxcbiAgaWNvbjogWzM4NCwgNTEyLCBbMTAwXSwgXCI0NFwiLCBcIk0wIDk2QzAgNjAuNyAyOC43IDMyIDY0IDMybDk2IDBjMTIzLjcgMCAyMjQgMTAwLjMgMjI0IDIyNHMtMTAwLjMgMjI0LTIyNCAyMjRsLTk2IDBjLTM1LjMgMC02NC0yOC43LTY0LTY0TDAgOTZ6bTE2MCAwTDY0IDk2bDAgMzIwIDk2IDBjODguNCAwIDE2MC03MS42IDE2MC0xNjBzLTcxLjYtMTYwLTE2MC0xNjB6XCJdXG59O1xuY29uc3QgZmFTdGFwbGVyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3N0YXBsZXInLFxuICBpY29uOiBbNjQwLCA1MTIsIFtdLCBcImU1YWZcIiwgXCJNNjQwIDI5OS4zbDAgNC43IDAgMTI4YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4bC04MCAwLTY0IDBMNjQgNDgwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMybDM4NCAwIDAtNDhMOTYgMzY4Yy0xNy43IDAtMzItMTQuMy0zMi0zMmwwLTExNi42TDMzLjggMjE0QzE0LjIgMjEwLjUgMCAxOTMuNSAwIDE3My43YzAtOC45IDIuOS0xNy41IDguMi0yNC42bDM1LjYtNDcuNUM3Ni43IDU3LjggMTI4LjIgMzIgMTgyLjkgMzJjMjcgMCA1My42IDYuMyA3Ny44IDE4LjRMNTg2LjkgMjEzLjVDNjE5LjUgMjI5LjcgNjQwIDI2MyA2NDAgMjk5LjN6TTQ0OCAzMDRsMC0xNkwxMjggMjMwLjlsMCA3My4xIDMyMCAwelwiXVxufTtcbmNvbnN0IGZhTWFza3NUaGVhdGVyID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ21hc2tzLXRoZWF0ZXInLFxuICBpY29uOiBbNjQwLCA1MTIsIFsxMjc5MTcsIFwidGhlYXRlci1tYXNrc1wiXSwgXCJmNjMwXCIsIFwiTTc0LjYgMzczLjJjNDEuNyAzNi4xIDEwOCA4Mi41IDE2Ni4xIDczLjdjNi4xLS45IDEyLjEtMi41IDE4LTQuNWMtOS4yLTEyLjMtMTcuMy0yNC40LTI0LjItMzUuNGMtMjEuOS0zNS0yOC44LTc1LjItMjUuOS0xMTMuNmMtMjAuNiA0LjEtMzkuMiAxMy01NC43IDI1LjRjLTYuNSA1LjItMTYuMyAxLjMtMTQuOC03YzYuNC0zMy41IDMzLTYwLjkgNjguMi02Ni4zYzIuNi0uNCA1LjMtLjcgNy45LS44bDE5LjQtMTMxLjNjMi0xMy44IDgtMzIuNyAyNS00NS45QzI3OC4yIDUzLjIgMzEwLjUgMzcgMzYzLjIgMzIuMmMtLjgtLjctMS42LTEuNC0yLjQtMi4xQzM0MC42IDE0LjUgMjg4LjQtMTEuNSAxNzUuNyA1LjZTMjAuNSA2MyA1LjcgODMuOUMwIDkxLjktLjggMTAyIC42IDExMS44TDI0LjggMjc2LjFjNS41IDM3LjMgMjEuNSA3Mi42IDQ5LjggOTcuMnptODcuNy0yMTkuNmM0LjQtMy4xIDEwLjgtMiAxMS44IDMuM2MuMSAuNSAuMiAxLjEgLjMgMS42YzMuMiAyMS44LTExLjYgNDItMzMuMSA0NS4zcy00MS41LTExLjgtNDQuNy0zMy41Yy0uMS0uNS0uMS0xLjEtLjItMS42Yy0uNi01LjQgNS4yLTguNCAxMC4zLTYuN2M5IDMgMTguOCAzLjkgMjguNyAyLjRzMTkuMS01LjMgMjYuOC0xMC44ek0yNjEuNiAzOTBjMjkuNCA0Ni45IDc5LjUgMTEwLjkgMTM3LjYgMTE5LjdzMTI0LjUtMzcuNSAxNjYuMS03My43YzI4LjMtMjQuNSA0NC4zLTU5LjggNDkuOC05Ny4ybDI0LjItMTY0LjNjMS40LTkuOCAuNi0xOS45LTUuMS0yNy45Yy0xNC44LTIwLjktNTcuMy02MS4yLTE3MC03OC4zUzI5OS40IDc3LjIgMjc5LjIgOTIuOGMtNy44IDYtMTEuNSAxNS40LTEyLjkgMjUuMkwyNDIuMSAyODIuM2MtNS41IDM3LjMtLjQgNzUuOCAxOS42IDEwNy43ek00MDQuNSAyMzUuM2MtNy43LTUuNS0xNi44LTkuMy0yNi44LTEwLjhzLTE5LjgtLjYtMjguNyAyLjRjLTUuMSAxLjctMTAuOS0xLjMtMTAuMy02LjdjLjEtLjUgLjEtMS4xIC4yLTEuNmMzLjItMjEuOCAyMy4yLTM2LjggNDQuNy0zMy41czM2LjMgMjMuNSAzMy4xIDQ1LjNjLS4xIC41LS4yIDEuMS0uMyAxLjZjLTEgNS4zLTcuNCA2LjQtMTEuOCAzLjN6bTEzNi4yIDE1LjVjLTEgNS4zLTcuNCA2LjQtMTEuOCAzLjNjLTcuNy01LjUtMTYuOC05LjMtMjYuOC0xMC44cy0xOS44LS42LTI4LjcgMi40Yy01LjEgMS43LTEwLjktMS4zLTEwLjMtNi43Yy4xLS41IC4xLTEuMSAuMi0xLjZjMy4yLTIxLjggMjMuMi0zNi44IDQ0LjctMzMuNXMzNi4zIDIzLjUgMzMuMSA0NS4zYy0uMSAuNS0uMiAxLjEtLjMgMS42ek01MzAgMzUwLjJjLTE5LjYgNDQuNy02Ni44IDcyLjUtMTE2LjggNjQuOXMtODcuMS00OC4yLTkzLTk2LjdjLTEtOC4zIDguOS0xMi4xIDE1LjItNi43YzIzLjkgMjAuOCA1My42IDM1LjMgODcgNDAuM3M2Ni4xIC4xIDk0LjktMTIuOGM3LjYtMy40IDE2IDMuMiAxMi42IDEwLjl6XCJdXG59O1xuY29uc3QgZmFUaGVhdGVyTWFza3MgPSBmYU1hc2tzVGhlYXRlcjtcbmNvbnN0IGZhS2lwU2lnbiA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdraXAtc2lnbicsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZTFjNFwiLCBcIk0zNDAuOCA4OC4zYzEzLjQtMTEuNSAxNS0zMS43IDMuNS00NS4xcy0zMS43LTE1LTQ1LjEtMy41TDEyOCAxODYuNCAxMjggNjRjMC0xNy43LTE0LjMtMzItMzItMzJTNjQgNDYuMyA2NCA2NGwwIDE2MC0zMiAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDMyIDAgMCAxNjBjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMmwwLTEyMi40TDI5OS4yIDQ3Mi4zYzEzLjQgMTEuNSAzMy42IDkuOSA0NS4xLTMuNXM5LjktMzMuNi0zLjUtNDUuMUwxODIuNSAyODggMzUyIDI4OGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtMTY5LjUgMEwzNDAuOCA4OC4zelwiXVxufTtcbmNvbnN0IGZhSGFuZFBvaW50TGVmdCA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdoYW5kLXBvaW50LWxlZnQnLFxuICBpY29uOiBbNTEyLCA1MTIsIFtdLCBcImYwYTVcIiwgXCJNMzIgOTZDMTQuMyA5NiAwIDExMC4zIDAgMTI4czE0LjMgMzIgMzIgMzJsMjA4IDAgMC02NEwzMiA5NnpNMTkyIDI4OGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmw2NCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC02NCAwem0tNjQtNjRjMCAxNy43IDE0LjMgMzIgMzIgMzJsNDggMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtNDggMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ6bTk2IDE2MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMmw2NCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC02NCAwem04OC05NmwtLjYgMGM1LjQgOS40IDguNiAyMC4zIDguNiAzMmMwIDEzLjItNCAyNS40LTEwLjggMzUuNmMyNC45IDguNyA0Mi44IDMyLjUgNDIuOCA2MC40YzAgMTEuNy0zLjEgMjIuNi04LjYgMzJsOC42IDBjODguNCAwIDE2MC03MS42IDE2MC0xNjBsMC02MS43YzAtNDIuNC0xNi45LTgzLjEtNDYuOS0xMTMuMWwtMTEuNi0xMS42QzQyOS41IDc3LjUgMzk2LjkgNjQgMzYzIDY0bC0yNyAwYy0zNS4zIDAtNjQgMjguNy02NCA2NGwwIDg4YzAgMjIuMSAxNy45IDQwIDQwIDQwczQwLTE3LjkgNDAtNDBsMC01NmMwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4yIDE2IDE2bDAgNTZjMCAzOS44LTMyLjIgNzItNzIgNzJ6XCJdXG59O1xuY29uc3QgZmFIYW5kc2hha2VTaW1wbGUgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnaGFuZHNoYWtlLXNpbXBsZScsXG4gIGljb246IFs2NDAsIDUxMiwgWzEyOTMwOSwgXCJoYW5kc2hha2UtYWx0XCJdLCBcImY0YzZcIiwgXCJNMzIzLjQgODUuMmwtOTYuOCA3OC40Yy0xNi4xIDEzLTE5LjIgMzYuNC03IDUzLjFjMTIuOSAxNy44IDM4IDIxLjMgNTUuMyA3LjhsOTkuMy03Ny4yYzctNS40IDE3LTQuMiAyMi41IDIuOHM0LjIgMTctMi44IDIyLjVsLTIwLjkgMTYuMkw1NTAuMiAzNTJsNDEuOCAwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4bDAtMTI4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4bC03NiAwLTQgMC0uNyAwLTMuOS0yLjVMNDM0LjggNzljLTE1LjMtOS44LTMzLjItMTUtNTEuNC0xNWMtMjEuOCAwLTQzIDcuNS02MCAyMS4yem0yMi44IDEyNC40bC01MS43IDQwLjJDMjYzIDI3NC40IDIxNy4zIDI2OCAxOTMuNyAyMzUuNmMtMjIuMi0zMC41LTE2LjYtNzMuMSAxMi43LTk2LjhsODMuMi02Ny4zYy0xMS42LTQuOS0yNC4xLTcuNC0zNi44LTcuNEMyMzQgNjQgMjE1LjcgNjkuNiAyMDAgODBsLTcyIDQ4LTgwIDBjLTI2LjUgMC00OCAyMS41LTQ4IDQ4TDAgMzA0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4bDEwOC4yIDAgOTEuNCA4My40YzE5LjYgMTcuOSA0OS45IDE2LjUgNjcuOC0zLjFjNS41LTYuMSA5LjItMTMuMiAxMS4xLTIwLjZsMTcgMTUuNmMxOS41IDE3LjkgNDkuOSAxNi42IDY3LjgtMi45YzQuNS00LjkgNy44LTEwLjYgOS45LTE2LjVjMTkuNCAxMyA0NS44IDEwLjMgNjIuMS03LjVjMTcuOS0xOS41IDE2LjYtNDkuOS0yLjktNjcuOGwtMTM0LjItMTIzelwiXVxufTtcbmNvbnN0IGZhSGFuZHNoYWtlQWx0ID0gZmFIYW5kc2hha2VTaW1wbGU7XG5jb25zdCBmYUpldEZpZ2h0ZXIgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAnamV0LWZpZ2h0ZXInLFxuICBpY29uOiBbNjQwLCA1MTIsIFtcImZpZ2h0ZXItamV0XCJdLCBcImYwZmJcIiwgXCJNMTYwIDI0YzAtMTMuMyAxMC43LTI0IDI0LTI0TDI5NiAwYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0bC0xNiAwTDM4NCAxOTJsMTE2LjQgMGM3LjcgMCAxNS4zIDEuNCAyMi41IDQuMUw2MjUgMjM0LjRjOSAzLjQgMTUgMTIgMTUgMjEuNnMtNiAxOC4yLTE1IDIxLjZMNTIyLjkgMzE1LjljLTcuMiAyLjctMTQuOCA0LjEtMjIuNSA0LjFMMzg0IDMyMCAyODAgNDY0bDE2IDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjRsLTExMiAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0bDggMCAwLTE0NC0zMiAwLTU0LjYgNTQuNmMtNiA2LTE0LjEgOS40LTIyLjYgOS40TDY0IDM4NGMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC02NGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmwwLTY0YzAtMTcuNyAxNC4zLTMyIDMyLTMybDE4LjcgMGM4LjUgMCAxNi42IDMuNCAyMi42IDkuNEwxNjAgMTkybDMyIDAgMC0xNDQtOCAwYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHpNODAgMjQwYy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2bDY0IDBjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZsLTY0IDB6XCJdXG59O1xuY29uc3QgZmFGaWdodGVySmV0ID0gZmFKZXRGaWdodGVyO1xuY29uc3QgZmFTcXVhcmVTaGFyZU5vZGVzID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3NxdWFyZS1zaGFyZS1ub2RlcycsXG4gIGljb246IFs0NDgsIDUxMiwgW1wic2hhcmUtYWx0LXNxdWFyZVwiXSwgXCJmMWUxXCIsIFwiTTY0IDMyQzI4LjcgMzIgMCA2MC43IDAgOTZMMCA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzIwIDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0zMjBjMC0zNS4zLTI4LjctNjQtNjQtNjRMNjQgMzJ6TTM4NCAxNjBjMCAzNS4zLTI4LjcgNjQtNjQgNjRjLTE1LjQgMC0yOS41LTUuNC00MC42LTE0LjVMMTk0LjEgMjU2bDg1LjMgNDYuNWMxMS05LjEgMjUuMi0xNC41IDQwLjYtMTQuNWMzNS4zIDAgNjQgMjguNyA2NCA2NHMtMjguNyA2NC02NCA2NHMtNjQtMjguNy02NC02NGMwLTIuNSAuMS00LjkgLjQtNy4zTDE3NC41IDMwMGMtMTEuNyAxMi4zLTI4LjIgMjAtNDYuNSAyMGMtMzUuMyAwLTY0LTI4LjctNjQtNjRzMjguNy02NCA2NC02NGMxOC4zIDAgMzQuOCA3LjcgNDYuNSAyMGw4MS45LTQ0LjdjLS4zLTIuNC0uNC00LjktLjQtNy4zYzAtMzUuMyAyOC43LTY0IDY0LTY0czY0IDI4LjcgNjQgNjR6XCJdXG59O1xuY29uc3QgZmFTaGFyZUFsdFNxdWFyZSA9IGZhU3F1YXJlU2hhcmVOb2RlcztcbmNvbnN0IGZhQmFyY29kZSA9IHtcbiAgcHJlZml4OiAnZmFzJyxcbiAgaWNvbk5hbWU6ICdiYXJjb2RlJyxcbiAgaWNvbjogWzUxMiwgNTEyLCBbXSwgXCJmMDJhXCIsIFwiTTI0IDMyQzEwLjcgMzIgMCA0Mi43IDAgNTZMMCA0NTZjMCAxMy4zIDEwLjcgMjQgMjQgMjRsMTYgMGMxMy4zIDAgMjQtMTAuNyAyNC0yNEw2NCA1NmMwLTEzLjMtMTAuNy0yNC0yNC0yNEwyNCAzMnptODggMGMtOC44IDAtMTYgNy4yLTE2IDE2bDAgNDE2YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZsMC00MTZjMC04LjgtNy4yLTE2LTE2LTE2em03MiAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNGwwIDQwMGMwIDEzLjMgMTAuNyAyNCAyNCAyNGwxNiAwYzEzLjMgMCAyNC0xMC43IDI0LTI0bDAtNDAwYzAtMTMuMy0xMC43LTI0LTI0LTI0bC0xNiAwem05NiAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNGwwIDQwMGMwIDEzLjMgMTAuNyAyNCAyNCAyNGwxNiAwYzEzLjMgMCAyNC0xMC43IDI0LTI0bDAtNDAwYzAtMTMuMy0xMC43LTI0LTI0LTI0bC0xNiAwek00NDggNTZsMCA0MDBjMCAxMy4zIDEwLjcgMjQgMjQgMjRsMTYgMGMxMy4zIDAgMjQtMTAuNyAyNC0yNGwwLTQwMGMwLTEzLjMtMTAuNy0yNC0yNC0yNGwtMTYgMGMtMTMuMyAwLTI0IDEwLjctMjQgMjR6bS02NC04bDAgNDE2YzAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZsMC00MTZjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZ6XCJdXG59O1xuY29uc3QgZmFQbHVzTWludXMgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAncGx1cy1taW51cycsXG4gIGljb246IFszODQsIDUxMiwgW10sIFwiZTQzY1wiLCBcIk0yMjQgMzJjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzJsMCAxMTJMNDggMTQ0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDExMiAwIDAgMTEyYzAgMTcuNyAxNC4zIDMyIDMyIDMyczMyLTE0LjMgMzItMzJsMC0xMTIgMTEyIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTExMiAwIDAtMTEyek0wIDQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMmwzMjAgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkwzMiA0NDhjLTE3LjcgMC0zMiAxNC4zLTMyIDMyelwiXVxufTtcbmNvbnN0IGZhVmlkZW8gPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndmlkZW8nLFxuICBpY29uOiBbNTc2LCA1MTIsIFtcInZpZGVvLWNhbWVyYVwiXSwgXCJmMDNkXCIsIFwiTTAgMTI4QzAgOTIuNyAyOC43IDY0IDY0IDY0bDI1NiAwYzM1LjMgMCA2NCAyOC43IDY0IDY0bDAgMjU2YzAgMzUuMy0yOC43IDY0LTY0IDY0TDY0IDQ0OGMtMzUuMyAwLTY0LTI4LjctNjQtNjRMMCAxMjh6TTU1OS4xIDk5LjhjMTAuNCA1LjYgMTYuOSAxNi40IDE2LjkgMjguMmwwIDI1NmMwIDExLjgtNi41IDIyLjYtMTYuOSAyOC4ycy0yMyA1LTMyLjktMS42bC05Ni02NEw0MTYgMzM3LjFsMC0xNy4xIDAtMTI4IDAtMTcuMSAxNC4yLTkuNSA5Ni02NGM5LjgtNi41IDIyLjQtNy4yIDMyLjktMS42elwiXVxufTtcbmNvbnN0IGZhVmlkZW9DYW1lcmEgPSBmYVZpZGVvO1xuY29uc3QgZmFHcmFkdWF0aW9uQ2FwID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2dyYWR1YXRpb24tY2FwJyxcbiAgaWNvbjogWzY0MCwgNTEyLCBbMTI3ODkxLCBcIm1vcnRhci1ib2FyZFwiXSwgXCJmMTlkXCIsIFwiTTMyMCAzMmMtOC4xIDAtMTYuMSAxLjQtMjMuNyA0LjFMMTUuOCAxMzcuNEM2LjMgMTQwLjkgMCAxNDkuOSAwIDE2MHM2LjMgMTkuMSAxNS44IDIyLjZsNTcuOSAyMC45QzU3LjMgMjI5LjMgNDggMjU5LjggNDggMjkxLjlsMCAyOC4xYzAgMjguNC0xMC44IDU3LjctMjIuMyA4MC44Yy02LjUgMTMtMTMuOSAyNS44LTIyLjUgMzcuNkMwIDQ0Mi43LS45IDQ0OC4zIC45IDQ1My40czYgOC45IDExLjIgMTAuMmw2NCAxNmM0LjIgMS4xIDguNyAuMyAxMi40LTJzNi4zLTYuMSA3LjEtMTAuNGM4LjYtNDIuOCA0LjMtODEuMi0yLjEtMTA4LjdDOTAuMyAzNDQuMyA4NiAzMjkuOCA4MCAzMTYuNWwwLTI0LjZjMC0zMC4yIDEwLjItNTguNyAyNy45LTgxLjVjMTIuOS0xNS41IDI5LjYtMjggNDkuMi0zNS43bDE1Ny02MS43YzguMi0zLjIgMTcuNSAuOCAyMC43IDlzLS44IDE3LjUtOSAyMC43bC0xNTcgNjEuN2MtMTIuNCA0LjktMjMuMyAxMi40LTMyLjIgMjEuNmwxNTkuNiA1Ny42YzcuNiAyLjcgMTUuNiA0LjEgMjMuNyA0LjFzMTYuMS0xLjQgMjMuNy00LjFMNjI0LjIgMTgyLjZjOS41LTMuNCAxNS44LTEyLjUgMTUuOC0yMi42cy02LjMtMTkuMS0xNS44LTIyLjZMMzQzLjcgMzYuMUMzMzYuMSAzMy40IDMyOC4xIDMyIDMyMCAzMnpNMTI4IDQwOGMwIDM1LjMgODYgNzIgMTkyIDcyczE5Mi0zNi43IDE5Mi03Mkw0OTYuNyAyNjIuNiAzNTQuNSAzMTRjLTExLjEgNC0yMi44IDYtMzQuNSA2cy0yMy41LTItMzQuNS02TDE0My4zIDI2Mi42IDEyOCA0MDh6XCJdXG59O1xuY29uc3QgZmFNb3J0YXJCb2FyZCA9IGZhR3JhZHVhdGlvbkNhcDtcbmNvbnN0IGZhSGFuZEhvbGRpbmdNZWRpY2FsID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ2hhbmQtaG9sZGluZy1tZWRpY2FsJyxcbiAgaWNvbjogWzU3NiwgNTEyLCBbXSwgXCJlMDVjXCIsIFwiTTIyNCAyNGwwIDU2LTU2IDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0bDAgNDhjMCAxMy4zIDEwLjcgMjQgMjQgMjRsNTYgMCAwIDU2YzAgMTMuMyAxMC43IDI0IDI0IDI0bDQ4IDBjMTMuMyAwIDI0LTEwLjcgMjQtMjRsMC01NiA1NiAwYzEzLjMgMCAyNC0xMC43IDI0LTI0bDAtNDhjMC0xMy4zLTEwLjctMjQtMjQtMjRsLTU2IDAgMC01NmMwLTEzLjMtMTAuNy0yNC0yNC0yNEwyNDggMGMtMTMuMyAwLTI0IDEwLjctMjQgMjR6TTU1OS43IDM5Mi4yYzE3LjgtMTMuMSAyMS42LTM4LjEgOC41LTU1LjlzLTM4LjEtMjEuNi01NS45LTguNUwzOTIuNiA0MTYgMjcyIDQxNmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNmwxNiAwIDY0IDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJsLTY0IDAtMTYgMC03OC4zIDBjLTI5LjEgMC01Ny4zIDkuOS04MCAyOEw2OC44IDM4NCAzMiAzODRjLTE3LjcgMC0zMiAxNC4zLTMyIDMybDAgNjRjMCAxNy43IDE0LjMgMzIgMzIgMzJsMTYwIDAgMTYwLjUgMGMyOSAwIDU3LjMtOS4zIDgwLjctMjYuNWwxMjYuNi05My4zem0tMzY3LTguMmwuOSAwYzAgMCAwIDAgMCAwYy0uMyAwLS42IDAtLjkgMHpcIl1cbn07XG5jb25zdCBmYVBlcnNvbkNpcmNsZUNoZWNrID0ge1xuICBwcmVmaXg6ICdmYXMnLFxuICBpY29uTmFtZTogJ3BlcnNvbi1jaXJjbGUtY2hlY2snLFxuICBpY29uOiBbNTc2LCA1MTIsIFtdLCBcImU1M2VcIiwgXCJNMTEyIDQ4YTQ4IDQ4IDAgMSAxIDk2IDAgNDggNDggMCAxIDEgLTk2IDB6bTQwIDMwNGwwIDEyOGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTIyMy4xTDU5LjQgMzA0LjVjLTkuMSAxNS4xLTI4LjggMjAtNDMuOSAxMC45cy0yMC0yOC44LTEwLjktNDMuOWw1OC4zLTk3YzE3LjQtMjguOSA0OC42LTQ2LjYgODIuMy00Ni42bDI5LjcgMGMzMy43IDAgNjQuOSAxNy43IDgyLjMgNDYuNmw0NC45IDc0LjdjLTE2LjEgMTcuNi0yOC42IDM4LjUtMzYuNiA2MS41Yy0xLjktMS44LTMuNS0zLjktNC45LTYuM0wyMzIgMjU2LjkgMjMyIDQ4MGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMmwwLTEyOC0xNiAwem0xMzYgMTZhMTQ0IDE0NCAwIDEgMSAyODggMCAxNDQgMTQ0IDAgMSAxIC0yODggMHptMjExLjMtNDMuM2MtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBMNDE2IDM4NS40bC0yOC43LTI4LjdjLTYuMi02LjItMTYuNC02LjItMjIuNiAwcy02LjIgMTYuNCAwIDIyLjZsNDAgNDBjNi4yIDYuMiAxNi40IDYuMiAyMi42IDBsNzItNzJjNi4yLTYuMiA2LjItMTYuNCAwLTIyLjZ6XCJdXG59O1xuY29uc3QgZmFUdXJuVXAgPSB7XG4gIHByZWZpeDogJ2ZhcycsXG4gIGljb25OYW1lOiAndHVybi11cCcsXG4gIGljb246IFszODQsIDUxMiwgWzEwNTQ4LCBcImxldmVsLXVwLWFsdFwiXSwgXCJmM2JmXCIsIFwiTTM1MCAxNzcuNWMzLjgtOC44IDItMTktNC42LTI2bC0xMzYtMTQ0QzIwNC45IDIuNyAxOTguNiAwIDE5MiAwcy0xMi45IDIuNy0xNy40IDcuNWwtMTM2IDE0NGMtNi42IDctOC40IDE3LjItNC42IDI2czEyLjUgMTQuNSAyMiAxNC41bDg4IDAgMCAxOTJjMCAxNy43LTE0LjMgMzItMzIgMzJsLTgwIDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMybDAgMzJjMCAxNy43IDE0LjMgMzIgMzIgMzJsODAgMGM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOGwwLTE5MiA4OCAwYzkuNiAwIDE4LjItNS43IDIyLTE0LjV6XCJdXG59O1xuY29uc3QgZmFMZXZlbFVwQWx0ID0gZmFUdXJuVXA7XG52YXIgaWNvbnMgPSB7XG4gIGZhMCxcbiAgZmExLFxuICBmYTIsXG4gIGZhMyxcbiAgZmE0LFxuICBmYTUsXG4gIGZhNixcbiAgZmE3LFxuICBmYTgsXG4gIGZhOSxcbiAgZmFGaWxsRHJpcCxcbiAgZmFBcnJvd3NUb0NpcmNsZSxcbiAgZmFDaXJjbGVDaGV2cm9uUmlnaHQsXG4gIGZhQ2hldnJvbkNpcmNsZVJpZ2h0LFxuICBmYUF0LFxuICBmYVRyYXNoQ2FuLFxuICBmYVRyYXNoQWx0LFxuICBmYVRleHRIZWlnaHQsXG4gIGZhVXNlclhtYXJrLFxuICBmYVVzZXJUaW1lcyxcbiAgZmFTdGV0aG9zY29wZSxcbiAgZmFNZXNzYWdlLFxuICBmYUNvbW1lbnRBbHQsXG4gIGZhSW5mbyxcbiAgZmFEb3duTGVmdEFuZFVwUmlnaHRUb0NlbnRlcixcbiAgZmFDb21wcmVzc0FsdCxcbiAgZmFFeHBsb3Npb24sXG4gIGZhRmlsZUxpbmVzLFxuICBmYUZpbGVBbHQsXG4gIGZhRmlsZVRleHQsXG4gIGZhV2F2ZVNxdWFyZSxcbiAgZmFSaW5nLFxuICBmYUJ1aWxkaW5nVW4sXG4gIGZhRGljZVRocmVlLFxuICBmYUNhbGVuZGFyRGF5cyxcbiAgZmFDYWxlbmRhckFsdCxcbiAgZmFBbmNob3JDaXJjbGVDaGVjayxcbiAgZmFCdWlsZGluZ0NpcmNsZUFycm93UmlnaHQsXG4gIGZhVm9sbGV5YmFsbCxcbiAgZmFWb2xsZXliYWxsQmFsbCxcbiAgZmFBcnJvd3NVcFRvTGluZSxcbiAgZmFTb3J0RG93bixcbiAgZmFTb3J0RGVzYyxcbiAgZmFDaXJjbGVNaW51cyxcbiAgZmFNaW51c0NpcmNsZSxcbiAgZmFEb29yT3BlbixcbiAgZmFSaWdodEZyb21CcmFja2V0LFxuICBmYVNpZ25PdXRBbHQsXG4gIGZhQXRvbSxcbiAgZmFTb2FwLFxuICBmYUljb25zLFxuICBmYUhlYXJ0TXVzaWNDYW1lcmFCb2x0LFxuICBmYU1pY3JvcGhvbmVMaW5lc1NsYXNoLFxuICBmYU1pY3JvcGhvbmVBbHRTbGFzaCxcbiAgZmFCcmlkZ2VDaXJjbGVDaGVjayxcbiAgZmFQdW1wTWVkaWNhbCxcbiAgZmFGaW5nZXJwcmludCxcbiAgZmFIYW5kUG9pbnRSaWdodCxcbiAgZmFNYWduaWZ5aW5nR2xhc3NMb2NhdGlvbixcbiAgZmFTZWFyY2hMb2NhdGlvbixcbiAgZmFGb3J3YXJkU3RlcCxcbiAgZmFTdGVwRm9yd2FyZCxcbiAgZmFGYWNlU21pbGVCZWFtLFxuICBmYVNtaWxlQmVhbSxcbiAgZmFGbGFnQ2hlY2tlcmVkLFxuICBmYUZvb3RiYWxsLFxuICBmYUZvb3RiYWxsQmFsbCxcbiAgZmFTY2hvb2xDaXJjbGVFeGNsYW1hdGlvbixcbiAgZmFDcm9wLFxuICBmYUFuZ2xlc0Rvd24sXG4gIGZhQW5nbGVEb3VibGVEb3duLFxuICBmYVVzZXJzUmVjdGFuZ2xlLFxuICBmYVBlb3BsZVJvb2YsXG4gIGZhUGVvcGxlTGluZSxcbiAgZmFCZWVyTXVnRW1wdHksXG4gIGZhQmVlcixcbiAgZmFEaWFncmFtUHJlZGVjZXNzb3IsXG4gIGZhQXJyb3dVcExvbmcsXG4gIGZhTG9uZ0Fycm93VXAsXG4gIGZhRmlyZUZsYW1lU2ltcGxlLFxuICBmYUJ1cm4sXG4gIGZhUGVyc29uLFxuICBmYU1hbGUsXG4gIGZhTGFwdG9wLFxuICBmYUZpbGVDc3YsXG4gIGZhTWVub3JhaCxcbiAgZmFUcnVja1BsYW5lLFxuICBmYVJlY29yZFZpbnlsLFxuICBmYUZhY2VHcmluU3RhcnMsXG4gIGZhR3JpblN0YXJzLFxuICBmYUJvbmcsXG4gIGZhU3BhZ2hldHRpTW9uc3RlckZseWluZyxcbiAgZmFQYXN0YWZhcmlhbmlzbSxcbiAgZmFBcnJvd0Rvd25VcEFjcm9zc0xpbmUsXG4gIGZhU3Bvb24sXG4gIGZhVXRlbnNpbFNwb29uLFxuICBmYUphcldoZWF0LFxuICBmYUVudmVsb3Blc0J1bGssXG4gIGZhTWFpbEJ1bGssXG4gIGZhRmlsZUNpcmNsZUV4Y2xhbWF0aW9uLFxuICBmYUNpcmNsZUgsXG4gIGZhSG9zcGl0YWxTeW1ib2wsXG4gIGZhUGFnZXIsXG4gIGZhQWRkcmVzc0Jvb2ssXG4gIGZhQ29udGFjdEJvb2ssXG4gIGZhU3RyaWtldGhyb3VnaCxcbiAgZmFLLFxuICBmYUxhbmRtYXJrRmxhZyxcbiAgZmFQZW5jaWwsXG4gIGZhUGVuY2lsQWx0LFxuICBmYUJhY2t3YXJkLFxuICBmYUNhcmV0UmlnaHQsXG4gIGZhQ29tbWVudHMsXG4gIGZhUGFzdGUsXG4gIGZhRmlsZUNsaXBib2FyZCxcbiAgZmFDb2RlUHVsbFJlcXVlc3QsXG4gIGZhQ2xpcGJvYXJkTGlzdCxcbiAgZmFUcnVja1JhbXBCb3gsXG4gIGZhVHJ1Y2tMb2FkaW5nLFxuICBmYVVzZXJDaGVjayxcbiAgZmFWaWFsVmlydXMsXG4gIGZhU2hlZXRQbGFzdGljLFxuICBmYUJsb2csXG4gIGZhVXNlck5pbmphLFxuICBmYVBlcnNvbkFycm93VXBGcm9tTGluZSxcbiAgZmFTY3JvbGxUb3JhaCxcbiAgZmFUb3JhaCxcbiAgZmFCcm9vbUJhbGwsXG4gIGZhUXVpZGRpdGNoLFxuICBmYVF1aWRkaXRjaEJyb29tQmFsbCxcbiAgZmFUb2dnbGVPZmYsXG4gIGZhQm94QXJjaGl2ZSxcbiAgZmFBcmNoaXZlLFxuICBmYVBlcnNvbkRyb3duaW5nLFxuICBmYUFycm93RG93bjkxLFxuICBmYVNvcnROdW1lcmljRGVzYyxcbiAgZmFTb3J0TnVtZXJpY0Rvd25BbHQsXG4gIGZhRmFjZUdyaW5Ub25ndWVTcXVpbnQsXG4gIGZhR3JpblRvbmd1ZVNxdWludCxcbiAgZmFTcHJheUNhbixcbiAgZmFUcnVja01vbnN0ZXIsXG4gIGZhVyxcbiAgZmFFYXJ0aEFmcmljYSxcbiAgZmFHbG9iZUFmcmljYSxcbiAgZmFSYWluYm93LFxuICBmYUNpcmNsZU5vdGNoLFxuICBmYVRhYmxldFNjcmVlbkJ1dHRvbixcbiAgZmFUYWJsZXRBbHQsXG4gIGZhUGF3LFxuICBmYUNsb3VkLFxuICBmYVRyb3dlbEJyaWNrcyxcbiAgZmFGYWNlRmx1c2hlZCxcbiAgZmFGbHVzaGVkLFxuICBmYUhvc3BpdGFsVXNlcixcbiAgZmFUZW50QXJyb3dMZWZ0UmlnaHQsXG4gIGZhR2F2ZWwsXG4gIGZhTGVnYWwsXG4gIGZhQmlub2N1bGFycyxcbiAgZmFNaWNyb3Bob25lU2xhc2gsXG4gIGZhQm94VGlzc3VlLFxuICBmYU1vdG9yY3ljbGUsXG4gIGZhQmVsbENvbmNpZXJnZSxcbiAgZmFDb25jaWVyZ2VCZWxsLFxuICBmYVBlblJ1bGVyLFxuICBmYVBlbmNpbFJ1bGVyLFxuICBmYVBlb3BsZUFycm93cyxcbiAgZmFQZW9wbGVBcnJvd3NMZWZ0UmlnaHQsXG4gIGZhTWFyc0FuZFZlbnVzQnVyc3QsXG4gIGZhU3F1YXJlQ2FyZXRSaWdodCxcbiAgZmFDYXJldFNxdWFyZVJpZ2h0LFxuICBmYVNjaXNzb3JzLFxuICBmYUN1dCxcbiAgZmFTdW5QbGFudFdpbHQsXG4gIGZhVG9pbGV0c1BvcnRhYmxlLFxuICBmYUhvY2tleVB1Y2ssXG4gIGZhVGFibGUsXG4gIGZhTWFnbmlmeWluZ0dsYXNzQXJyb3dSaWdodCxcbiAgZmFUYWNob2dyYXBoRGlnaXRhbCxcbiAgZmFEaWdpdGFsVGFjaG9ncmFwaCxcbiAgZmFVc2Vyc1NsYXNoLFxuICBmYUNsb3ZlcixcbiAgZmFSZXBseSxcbiAgZmFNYWlsUmVwbHksXG4gIGZhU3RhckFuZENyZXNjZW50LFxuICBmYUhvdXNlRmlyZSxcbiAgZmFTcXVhcmVNaW51cyxcbiAgZmFNaW51c1NxdWFyZSxcbiAgZmFIZWxpY29wdGVyLFxuICBmYUNvbXBhc3MsXG4gIGZhU3F1YXJlQ2FyZXREb3duLFxuICBmYUNhcmV0U3F1YXJlRG93bixcbiAgZmFGaWxlQ2lyY2xlUXVlc3Rpb24sXG4gIGZhTGFwdG9wQ29kZSxcbiAgZmFTd2F0Y2hib29rLFxuICBmYVByZXNjcmlwdGlvbkJvdHRsZSxcbiAgZmFCYXJzLFxuICBmYU5hdmljb24sXG4gIGZhUGVvcGxlR3JvdXAsXG4gIGZhSG91cmdsYXNzRW5kLFxuICBmYUhvdXJnbGFzczMsXG4gIGZhSGVhcnRDcmFjayxcbiAgZmFIZWFydEJyb2tlbixcbiAgZmFTcXVhcmVVcFJpZ2h0LFxuICBmYUV4dGVybmFsTGlua1NxdWFyZUFsdCxcbiAgZmFGYWNlS2lzc0JlYW0sXG4gIGZhS2lzc0JlYW0sXG4gIGZhRmlsbSxcbiAgZmFSdWxlckhvcml6b250YWwsXG4gIGZhUGVvcGxlUm9iYmVyeSxcbiAgZmFMaWdodGJ1bGIsXG4gIGZhQ2FyZXRMZWZ0LFxuICBmYUNpcmNsZUV4Y2xhbWF0aW9uLFxuICBmYUV4Y2xhbWF0aW9uQ2lyY2xlLFxuICBmYVNjaG9vbENpcmNsZVhtYXJrLFxuICBmYUFycm93UmlnaHRGcm9tQnJhY2tldCxcbiAgZmFTaWduT3V0LFxuICBmYUNpcmNsZUNoZXZyb25Eb3duLFxuICBmYUNoZXZyb25DaXJjbGVEb3duLFxuICBmYVVubG9ja0tleWhvbGUsXG4gIGZhVW5sb2NrQWx0LFxuICBmYUNsb3VkU2hvd2Vyc0hlYXZ5LFxuICBmYUhlYWRwaG9uZXNTaW1wbGUsXG4gIGZhSGVhZHBob25lc0FsdCxcbiAgZmFTaXRlbWFwLFxuICBmYUNpcmNsZURvbGxhclRvU2xvdCxcbiAgZmFEb25hdGUsXG4gIGZhTWVtb3J5LFxuICBmYVJvYWRTcGlrZXMsXG4gIGZhRmlyZUJ1cm5lcixcbiAgZmFGbGFnLFxuICBmYUhhbnVraWFoLFxuICBmYUZlYXRoZXIsXG4gIGZhVm9sdW1lTG93LFxuICBmYVZvbHVtZURvd24sXG4gIGZhQ29tbWVudFNsYXNoLFxuICBmYUNsb3VkU3VuUmFpbixcbiAgZmFDb21wcmVzcyxcbiAgZmFXaGVhdEF3bixcbiAgZmFXaGVhdEFsdCxcbiAgZmFBbmtoLFxuICBmYUhhbmRzSG9sZGluZ0NoaWxkLFxuICBmYUFzdGVyaXNrLFxuICBmYVNxdWFyZUNoZWNrLFxuICBmYUNoZWNrU3F1YXJlLFxuICBmYVBlc2V0YVNpZ24sXG4gIGZhSGVhZGluZyxcbiAgZmFIZWFkZXIsXG4gIGZhR2hvc3QsXG4gIGZhTGlzdCxcbiAgZmFMaXN0U3F1YXJlcyxcbiAgZmFTcXVhcmVQaG9uZUZsaXAsXG4gIGZhUGhvbmVTcXVhcmVBbHQsXG4gIGZhQ2FydFBsdXMsXG4gIGZhR2FtZXBhZCxcbiAgZmFDaXJjbGVEb3QsXG4gIGZhRG90Q2lyY2xlLFxuICBmYUZhY2VEaXp6eSxcbiAgZmFEaXp6eSxcbiAgZmFFZ2csXG4gIGZhSG91c2VNZWRpY2FsQ2lyY2xlWG1hcmssXG4gIGZhQ2FtcGdyb3VuZCxcbiAgZmFGb2xkZXJQbHVzLFxuICBmYUZ1dGJvbCxcbiAgZmFGdXRib2xCYWxsLFxuICBmYVNvY2NlckJhbGwsXG4gIGZhUGFpbnRicnVzaCxcbiAgZmFQYWludEJydXNoLFxuICBmYUxvY2ssXG4gIGZhR2FzUHVtcCxcbiAgZmFIb3RUdWJQZXJzb24sXG4gIGZhSG90VHViLFxuICBmYU1hcExvY2F0aW9uLFxuICBmYU1hcE1hcmtlZCxcbiAgZmFIb3VzZUZsb29kV2F0ZXIsXG4gIGZhVHJlZSxcbiAgZmFCcmlkZ2VMb2NrLFxuICBmYVNhY2tEb2xsYXIsXG4gIGZhUGVuVG9TcXVhcmUsXG4gIGZhRWRpdCxcbiAgZmFDYXJTaWRlLFxuICBmYVNoYXJlTm9kZXMsXG4gIGZhU2hhcmVBbHQsXG4gIGZhSGVhcnRDaXJjbGVNaW51cyxcbiAgZmFIb3VyZ2xhc3NIYWxmLFxuICBmYUhvdXJnbGFzczIsXG4gIGZhTWljcm9zY29wZSxcbiAgZmFTaW5rLFxuICBmYUJhZ1Nob3BwaW5nLFxuICBmYVNob3BwaW5nQmFnLFxuICBmYUFycm93RG93blpBLFxuICBmYVNvcnRBbHBoYURlc2MsXG4gIGZhU29ydEFscGhhRG93bkFsdCxcbiAgZmFNaXR0ZW4sXG4gIGZhUGVyc29uUmF5cyxcbiAgZmFVc2VycyxcbiAgZmFFeWVTbGFzaCxcbiAgZmFGbGFza1ZpYWwsXG4gIGZhSGFuZCxcbiAgZmFIYW5kUGFwZXIsXG4gIGZhT20sXG4gIGZhV29ybSxcbiAgZmFIb3VzZUNpcmNsZVhtYXJrLFxuICBmYVBsdWcsXG4gIGZhQ2hldnJvblVwLFxuICBmYUhhbmRTcG9jayxcbiAgZmFTdG9wd2F0Y2gsXG4gIGZhRmFjZUtpc3MsXG4gIGZhS2lzcyxcbiAgZmFCcmlkZ2VDaXJjbGVYbWFyayxcbiAgZmFGYWNlR3JpblRvbmd1ZSxcbiAgZmFHcmluVG9uZ3VlLFxuICBmYUNoZXNzQmlzaG9wLFxuICBmYUZhY2VHcmluV2luayxcbiAgZmFHcmluV2luayxcbiAgZmFFYXJEZWFmLFxuICBmYURlYWYsXG4gIGZhRGVhZm5lc3MsXG4gIGZhSGFyZE9mSGVhcmluZyxcbiAgZmFSb2FkQ2lyY2xlQ2hlY2ssXG4gIGZhRGljZUZpdmUsXG4gIGZhU3F1YXJlUnNzLFxuICBmYVJzc1NxdWFyZSxcbiAgZmFMYW5kTWluZU9uLFxuICBmYUlDdXJzb3IsXG4gIGZhU3RhbXAsXG4gIGZhU3RhaXJzLFxuICBmYUksXG4gIGZhSHJ5dm5pYVNpZ24sXG4gIGZhSHJ5dm5pYSxcbiAgZmFQaWxscyxcbiAgZmFGYWNlR3JpbldpZGUsXG4gIGZhR3JpbkFsdCxcbiAgZmFUb290aCxcbiAgZmFWLFxuICBmYUJhbmdsYWRlc2hpVGFrYVNpZ24sXG4gIGZhQmljeWNsZSxcbiAgZmFTdGFmZlNuYWtlLFxuICBmYVJvZEFzY2xlcGl1cyxcbiAgZmFSb2RTbmFrZSxcbiAgZmFTdGFmZkFlc2N1bGFwaXVzLFxuICBmYUhlYWRTaWRlQ291Z2hTbGFzaCxcbiAgZmFUcnVja01lZGljYWwsXG4gIGZhQW1idWxhbmNlLFxuICBmYVdoZWF0QXduQ2lyY2xlRXhjbGFtYXRpb24sXG4gIGZhU25vd21hbixcbiAgZmFNb3J0YXJQZXN0bGUsXG4gIGZhUm9hZEJhcnJpZXIsXG4gIGZhU2Nob29sLFxuICBmYUlnbG9vLFxuICBmYUpvaW50LFxuICBmYUFuZ2xlUmlnaHQsXG4gIGZhSG9yc2UsXG4gIGZhUSxcbiAgZmFHLFxuICBmYU5vdGVzTWVkaWNhbCxcbiAgZmFUZW1wZXJhdHVyZUhhbGYsXG4gIGZhVGVtcGVyYXR1cmUyLFxuICBmYVRoZXJtb21ldGVyMixcbiAgZmFUaGVybW9tZXRlckhhbGYsXG4gIGZhRG9uZ1NpZ24sXG4gIGZhQ2Fwc3VsZXMsXG4gIGZhUG9vU3Rvcm0sXG4gIGZhUG9vQm9sdCxcbiAgZmFGYWNlRnJvd25PcGVuLFxuICBmYUZyb3duT3BlbixcbiAgZmFIYW5kUG9pbnRVcCxcbiAgZmFNb25leUJpbGwsXG4gIGZhQm9va21hcmssXG4gIGZhQWxpZ25KdXN0aWZ5LFxuICBmYVVtYnJlbGxhQmVhY2gsXG4gIGZhSGVsbWV0VW4sXG4gIGZhQnVsbHNleWUsXG4gIGZhQmFjb24sXG4gIGZhSGFuZFBvaW50RG93bixcbiAgZmFBcnJvd1VwRnJvbUJyYWNrZXQsXG4gIGZhRm9sZGVyLFxuICBmYUZvbGRlckJsYW5rLFxuICBmYUZpbGVXYXZlZm9ybSxcbiAgZmFGaWxlTWVkaWNhbEFsdCxcbiAgZmFSYWRpYXRpb24sXG4gIGZhQ2hhcnRTaW1wbGUsXG4gIGZhTWFyc1N0cm9rZSxcbiAgZmFWaWFsLFxuICBmYUdhdWdlLFxuICBmYURhc2hib2FyZCxcbiAgZmFHYXVnZU1lZCxcbiAgZmFUYWNob21ldGVyQWx0QXZlcmFnZSxcbiAgZmFXYW5kTWFnaWNTcGFya2xlcyxcbiAgZmFNYWdpY1dhbmRTcGFya2xlcyxcbiAgZmFFLFxuICBmYVBlbkNsaXAsXG4gIGZhUGVuQWx0LFxuICBmYUJyaWRnZUNpcmNsZUV4Y2xhbWF0aW9uLFxuICBmYVVzZXIsXG4gIGZhU2Nob29sQ2lyY2xlQ2hlY2ssXG4gIGZhRHVtcHN0ZXIsXG4gIGZhVmFuU2h1dHRsZSxcbiAgZmFTaHV0dGxlVmFuLFxuICBmYUJ1aWxkaW5nVXNlcixcbiAgZmFTcXVhcmVDYXJldExlZnQsXG4gIGZhQ2FyZXRTcXVhcmVMZWZ0LFxuICBmYUhpZ2hsaWdodGVyLFxuICBmYUtleSxcbiAgZmFCdWxsaG9ybixcbiAgZmFHbG9iZSxcbiAgZmFTeW5hZ29ndWUsXG4gIGZhUGVyc29uSGFsZkRyZXNzLFxuICBmYVJvYWRCcmlkZ2UsXG4gIGZhTG9jYXRpb25BcnJvdyxcbiAgZmFDLFxuICBmYVRhYmxldEJ1dHRvbixcbiAgZmFCdWlsZGluZ0xvY2ssXG4gIGZhUGl6emFTbGljZSxcbiAgZmFNb25leUJpbGxXYXZlLFxuICBmYUNoYXJ0QXJlYSxcbiAgZmFBcmVhQ2hhcnQsXG4gIGZhSG91c2VGbGFnLFxuICBmYVBlcnNvbkNpcmNsZU1pbnVzLFxuICBmYUJhbixcbiAgZmFDYW5jZWwsXG4gIGZhQ2FtZXJhUm90YXRlLFxuICBmYVNwcmF5Q2FuU3BhcmtsZXMsXG4gIGZhQWlyRnJlc2hlbmVyLFxuICBmYVN0YXIsXG4gIGZhUmVwZWF0LFxuICBmYUNyb3NzLFxuICBmYUJveCxcbiAgZmFWZW51c01hcnMsXG4gIGZhQXJyb3dQb2ludGVyLFxuICBmYU1vdXNlUG9pbnRlcixcbiAgZmFNYXhpbWl6ZSxcbiAgZmFFeHBhbmRBcnJvd3NBbHQsXG4gIGZhQ2hhcmdpbmdTdGF0aW9uLFxuICBmYVNoYXBlcyxcbiAgZmFUcmlhbmdsZUNpcmNsZVNxdWFyZSxcbiAgZmFTaHVmZmxlLFxuICBmYVJhbmRvbSxcbiAgZmFQZXJzb25SdW5uaW5nLFxuICBmYVJ1bm5pbmcsXG4gIGZhTW9iaWxlUmV0cm8sXG4gIGZhR3JpcExpbmVzVmVydGljYWwsXG4gIGZhU3BpZGVyLFxuICBmYUhhbmRzQm91bmQsXG4gIGZhRmlsZUludm9pY2VEb2xsYXIsXG4gIGZhUGxhbmVDaXJjbGVFeGNsYW1hdGlvbixcbiAgZmFYUmF5LFxuICBmYVNwZWxsQ2hlY2ssXG4gIGZhU2xhc2gsXG4gIGZhQ29tcHV0ZXJNb3VzZSxcbiAgZmFNb3VzZSxcbiAgZmFBcnJvd1JpZ2h0VG9CcmFja2V0LFxuICBmYVNpZ25JbixcbiAgZmFTaG9wU2xhc2gsXG4gIGZhU3RvcmVBbHRTbGFzaCxcbiAgZmFTZXJ2ZXIsXG4gIGZhVmlydXNDb3ZpZFNsYXNoLFxuICBmYVNob3BMb2NrLFxuICBmYUhvdXJnbGFzc1N0YXJ0LFxuICBmYUhvdXJnbGFzczEsXG4gIGZhQmxlbmRlclBob25lLFxuICBmYUJ1aWxkaW5nV2hlYXQsXG4gIGZhUGVyc29uQnJlYXN0ZmVlZGluZyxcbiAgZmFSaWdodFRvQnJhY2tldCxcbiAgZmFTaWduSW5BbHQsXG4gIGZhVmVudXMsXG4gIGZhUGFzc3BvcnQsXG4gIGZhVGh1bWJ0YWNrU2xhc2gsXG4gIGZhVGh1bWJUYWNrU2xhc2gsXG4gIGZhSGVhcnRQdWxzZSxcbiAgZmFIZWFydGJlYXQsXG4gIGZhUGVvcGxlQ2FycnlCb3gsXG4gIGZhUGVvcGxlQ2FycnksXG4gIGZhVGVtcGVyYXR1cmVIaWdoLFxuICBmYU1pY3JvY2hpcCxcbiAgZmFDcm93bixcbiAgZmFXZWlnaHRIYW5naW5nLFxuICBmYVhtYXJrc0xpbmVzLFxuICBmYUZpbGVQcmVzY3JpcHRpb24sXG4gIGZhV2VpZ2h0U2NhbGUsXG4gIGZhV2VpZ2h0LFxuICBmYVVzZXJHcm91cCxcbiAgZmFVc2VyRnJpZW5kcyxcbiAgZmFBcnJvd1VwQVosXG4gIGZhU29ydEFscGhhVXAsXG4gIGZhQ2hlc3NLbmlnaHQsXG4gIGZhRmFjZUxhdWdoU3F1aW50LFxuICBmYUxhdWdoU3F1aW50LFxuICBmYVdoZWVsY2hhaXIsXG4gIGZhQ2lyY2xlQXJyb3dVcCxcbiAgZmFBcnJvd0NpcmNsZVVwLFxuICBmYVRvZ2dsZU9uLFxuICBmYVBlcnNvbldhbGtpbmcsXG4gIGZhV2Fsa2luZyxcbiAgZmFMLFxuICBmYUZpcmUsXG4gIGZhQmVkUHVsc2UsXG4gIGZhUHJvY2VkdXJlcyxcbiAgZmFTaHV0dGxlU3BhY2UsXG4gIGZhU3BhY2VTaHV0dGxlLFxuICBmYUZhY2VMYXVnaCxcbiAgZmFMYXVnaCxcbiAgZmFGb2xkZXJPcGVuLFxuICBmYUhlYXJ0Q2lyY2xlUGx1cyxcbiAgZmFDb2RlRm9yayxcbiAgZmFDaXR5LFxuICBmYU1pY3JvcGhvbmVMaW5lcyxcbiAgZmFNaWNyb3Bob25lQWx0LFxuICBmYVBlcHBlckhvdCxcbiAgZmFVbmxvY2ssXG4gIGZhQ29sb25TaWduLFxuICBmYUhlYWRzZXQsXG4gIGZhU3RvcmVTbGFzaCxcbiAgZmFSb2FkQ2lyY2xlWG1hcmssXG4gIGZhVXNlck1pbnVzLFxuICBmYU1hcnNTdHJva2VVcCxcbiAgZmFNYXJzU3Ryb2tlVixcbiAgZmFDaGFtcGFnbmVHbGFzc2VzLFxuICBmYUdsYXNzQ2hlZXJzLFxuICBmYUNsaXBib2FyZCxcbiAgZmFIb3VzZUNpcmNsZUV4Y2xhbWF0aW9uLFxuICBmYUZpbGVBcnJvd1VwLFxuICBmYUZpbGVVcGxvYWQsXG4gIGZhV2lmaSxcbiAgZmFXaWZpMyxcbiAgZmFXaWZpU3Ryb25nLFxuICBmYUJhdGgsXG4gIGZhQmF0aHR1YixcbiAgZmFVbmRlcmxpbmUsXG4gIGZhVXNlclBlbixcbiAgZmFVc2VyRWRpdCxcbiAgZmFTaWduYXR1cmUsXG4gIGZhU3Ryb29wd2FmZWwsXG4gIGZhQm9sZCxcbiAgZmFBbmNob3JMb2NrLFxuICBmYUJ1aWxkaW5nTmdvLFxuICBmYU1hbmF0U2lnbixcbiAgZmFOb3RFcXVhbCxcbiAgZmFCb3JkZXJUb3BMZWZ0LFxuICBmYUJvcmRlclN0eWxlLFxuICBmYU1hcExvY2F0aW9uRG90LFxuICBmYU1hcE1hcmtlZEFsdCxcbiAgZmFKZWRpLFxuICBmYVNxdWFyZVBvbGxWZXJ0aWNhbCxcbiAgZmFQb2xsLFxuICBmYU11Z0hvdCxcbiAgZmFDYXJCYXR0ZXJ5LFxuICBmYUJhdHRlcnlDYXIsXG4gIGZhR2lmdCxcbiAgZmFEaWNlVHdvLFxuICBmYUNoZXNzUXVlZW4sXG4gIGZhR2xhc3NlcyxcbiAgZmFDaGVzc0JvYXJkLFxuICBmYUJ1aWxkaW5nQ2lyY2xlQ2hlY2ssXG4gIGZhUGVyc29uQ2hhbGtib2FyZCxcbiAgZmFNYXJzU3Ryb2tlUmlnaHQsXG4gIGZhTWFyc1N0cm9rZUgsXG4gIGZhSGFuZEJhY2tGaXN0LFxuICBmYUhhbmRSb2NrLFxuICBmYVNxdWFyZUNhcmV0VXAsXG4gIGZhQ2FyZXRTcXVhcmVVcCxcbiAgZmFDbG91ZFNob3dlcnNXYXRlcixcbiAgZmFDaGFydEJhcixcbiAgZmFCYXJDaGFydCxcbiAgZmFIYW5kc0J1YmJsZXMsXG4gIGZhSGFuZHNXYXNoLFxuICBmYUxlc3NUaGFuRXF1YWwsXG4gIGZhVHJhaW4sXG4gIGZhRXllTG93VmlzaW9uLFxuICBmYUxvd1Zpc2lvbixcbiAgZmFDcm93LFxuICBmYVNhaWxib2F0LFxuICBmYVdpbmRvd1Jlc3RvcmUsXG4gIGZhU3F1YXJlUGx1cyxcbiAgZmFQbHVzU3F1YXJlLFxuICBmYVRvcmlpR2F0ZSxcbiAgZmFGcm9nLFxuICBmYUJ1Y2tldCxcbiAgZmFJbWFnZSxcbiAgZmFNaWNyb3Bob25lLFxuICBmYUNvdyxcbiAgZmFDYXJldFVwLFxuICBmYVNjcmV3ZHJpdmVyLFxuICBmYUZvbGRlckNsb3NlZCxcbiAgZmFIb3VzZVRzdW5hbWksXG4gIGZhU3F1YXJlTmZpLFxuICBmYUFycm93VXBGcm9tR3JvdW5kV2F0ZXIsXG4gIGZhTWFydGluaUdsYXNzLFxuICBmYUdsYXNzTWFydGluaUFsdCxcbiAgZmFSb3RhdGVMZWZ0LFxuICBmYVJvdGF0ZUJhY2ssXG4gIGZhUm90YXRlQmFja3dhcmQsXG4gIGZhVW5kb0FsdCxcbiAgZmFUYWJsZUNvbHVtbnMsXG4gIGZhQ29sdW1ucyxcbiAgZmFMZW1vbixcbiAgZmFIZWFkU2lkZU1hc2ssXG4gIGZhSGFuZHNoYWtlLFxuICBmYUdlbSxcbiAgZmFEb2xseSxcbiAgZmFEb2xseUJveCxcbiAgZmFTbW9raW5nLFxuICBmYU1pbmltaXplLFxuICBmYUNvbXByZXNzQXJyb3dzQWx0LFxuICBmYU1vbnVtZW50LFxuICBmYVNub3dwbG93LFxuICBmYUFuZ2xlc1JpZ2h0LFxuICBmYUFuZ2xlRG91YmxlUmlnaHQsXG4gIGZhQ2FubmFiaXMsXG4gIGZhQ2lyY2xlUGxheSxcbiAgZmFQbGF5Q2lyY2xlLFxuICBmYVRhYmxldHMsXG4gIGZhRXRoZXJuZXQsXG4gIGZhRXVyb1NpZ24sXG4gIGZhRXVyLFxuICBmYUV1cm8sXG4gIGZhQ2hhaXIsXG4gIGZhQ2lyY2xlQ2hlY2ssXG4gIGZhQ2hlY2tDaXJjbGUsXG4gIGZhQ2lyY2xlU3RvcCxcbiAgZmFTdG9wQ2lyY2xlLFxuICBmYUNvbXBhc3NEcmFmdGluZyxcbiAgZmFEcmFmdGluZ0NvbXBhc3MsXG4gIGZhUGxhdGVXaGVhdCxcbiAgZmFJY2ljbGVzLFxuICBmYVBlcnNvblNoZWx0ZXIsXG4gIGZhTmV1dGVyLFxuICBmYUlkQmFkZ2UsXG4gIGZhTWFya2VyLFxuICBmYUZhY2VMYXVnaEJlYW0sXG4gIGZhTGF1Z2hCZWFtLFxuICBmYUhlbGljb3B0ZXJTeW1ib2wsXG4gIGZhVW5pdmVyc2FsQWNjZXNzLFxuICBmYUNpcmNsZUNoZXZyb25VcCxcbiAgZmFDaGV2cm9uQ2lyY2xlVXAsXG4gIGZhTGFyaVNpZ24sXG4gIGZhVm9sY2FubyxcbiAgZmFQZXJzb25XYWxraW5nRGFzaGVkTGluZUFycm93UmlnaHQsXG4gIGZhU3RlcmxpbmdTaWduLFxuICBmYUdicCxcbiAgZmFQb3VuZFNpZ24sXG4gIGZhVmlydXNlcyxcbiAgZmFTcXVhcmVQZXJzb25Db25maW5lZCxcbiAgZmFVc2VyVGllLFxuICBmYUFycm93RG93bkxvbmcsXG4gIGZhTG9uZ0Fycm93RG93bixcbiAgZmFUZW50QXJyb3dEb3duVG9MaW5lLFxuICBmYUNlcnRpZmljYXRlLFxuICBmYVJlcGx5QWxsLFxuICBmYU1haWxSZXBseUFsbCxcbiAgZmFTdWl0Y2FzZSxcbiAgZmFQZXJzb25Ta2F0aW5nLFxuICBmYVNrYXRpbmcsXG4gIGZhRmlsdGVyQ2lyY2xlRG9sbGFyLFxuICBmYUZ1bm5lbERvbGxhcixcbiAgZmFDYW1lcmFSZXRybyxcbiAgZmFDaXJjbGVBcnJvd0Rvd24sXG4gIGZhQXJyb3dDaXJjbGVEb3duLFxuICBmYUZpbGVJbXBvcnQsXG4gIGZhQXJyb3dSaWdodFRvRmlsZSxcbiAgZmFTcXVhcmVBcnJvd1VwUmlnaHQsXG4gIGZhRXh0ZXJuYWxMaW5rU3F1YXJlLFxuICBmYUJveE9wZW4sXG4gIGZhU2Nyb2xsLFxuICBmYVNwYSxcbiAgZmFMb2NhdGlvblBpbkxvY2ssXG4gIGZhUGF1c2UsXG4gIGZhSGlsbEF2YWxhbmNoZSxcbiAgZmFUZW1wZXJhdHVyZUVtcHR5LFxuICBmYVRlbXBlcmF0dXJlMCxcbiAgZmFUaGVybW9tZXRlcjAsXG4gIGZhVGhlcm1vbWV0ZXJFbXB0eSxcbiAgZmFCb21iLFxuICBmYVJlZ2lzdGVyZWQsXG4gIGZhQWRkcmVzc0NhcmQsXG4gIGZhQ29udGFjdENhcmQsXG4gIGZhVmNhcmQsXG4gIGZhU2NhbGVVbmJhbGFuY2VkRmxpcCxcbiAgZmFCYWxhbmNlU2NhbGVSaWdodCxcbiAgZmFTdWJzY3JpcHQsXG4gIGZhRGlhbW9uZFR1cm5SaWdodCxcbiAgZmFEaXJlY3Rpb25zLFxuICBmYUJ1cnN0LFxuICBmYUhvdXNlTGFwdG9wLFxuICBmYUxhcHRvcEhvdXNlLFxuICBmYUZhY2VUaXJlZCxcbiAgZmFUaXJlZCxcbiAgZmFNb25leUJpbGxzLFxuICBmYVNtb2csXG4gIGZhQ3J1dGNoLFxuICBmYUZvbnRBd2Vzb21lLFxuICBmYUZvbnRBd2Vzb21lRmxhZyxcbiAgZmFGb250QXdlc29tZUxvZ29GdWxsLFxuICBmYUNsb3VkQXJyb3dVcCxcbiAgZmFDbG91ZFVwbG9hZCxcbiAgZmFDbG91ZFVwbG9hZEFsdCxcbiAgZmFQYWxldHRlLFxuICBmYUFycm93c1R1cm5SaWdodCxcbiAgZmFWZXN0LFxuICBmYUZlcnJ5LFxuICBmYUFycm93c0Rvd25Ub1Blb3BsZSxcbiAgZmFTZWVkbGluZyxcbiAgZmFTcHJvdXQsXG4gIGZhTGVmdFJpZ2h0LFxuICBmYUFycm93c0FsdEgsXG4gIGZhQm94ZXNQYWNraW5nLFxuICBmYUNpcmNsZUFycm93TGVmdCxcbiAgZmFBcnJvd0NpcmNsZUxlZnQsXG4gIGZhR3JvdXBBcnJvd3NSb3RhdGUsXG4gIGZhQm93bEZvb2QsXG4gIGZhQ2FuZHlDYW5lLFxuICBmYUFycm93RG93bldpZGVTaG9ydCxcbiAgZmFTb3J0QW1vdW50QXNjLFxuICBmYVNvcnRBbW91bnREb3duLFxuICBmYUNsb3VkQm9sdCxcbiAgZmFUaHVuZGVyc3Rvcm0sXG4gIGZhVGV4dFNsYXNoLFxuICBmYVJlbW92ZUZvcm1hdCxcbiAgZmFGYWNlU21pbGVXaW5rLFxuICBmYVNtaWxlV2luayxcbiAgZmFGaWxlV29yZCxcbiAgZmFGaWxlUG93ZXJwb2ludCxcbiAgZmFBcnJvd3NMZWZ0UmlnaHQsXG4gIGZhQXJyb3dzSCxcbiAgZmFIb3VzZUxvY2ssXG4gIGZhQ2xvdWRBcnJvd0Rvd24sXG4gIGZhQ2xvdWREb3dubG9hZCxcbiAgZmFDbG91ZERvd25sb2FkQWx0LFxuICBmYUNoaWxkcmVuLFxuICBmYUNoYWxrYm9hcmQsXG4gIGZhQmxhY2tib2FyZCxcbiAgZmFVc2VyTGFyZ2VTbGFzaCxcbiAgZmFVc2VyQWx0U2xhc2gsXG4gIGZhRW52ZWxvcGVPcGVuLFxuICBmYUhhbmRzaGFrZVNpbXBsZVNsYXNoLFxuICBmYUhhbmRzaGFrZUFsdFNsYXNoLFxuICBmYU1hdHRyZXNzUGlsbG93LFxuICBmYUd1YXJhbmlTaWduLFxuICBmYUFycm93c1JvdGF0ZSxcbiAgZmFSZWZyZXNoLFxuICBmYVN5bmMsXG4gIGZhRmlyZUV4dGluZ3Vpc2hlcixcbiAgZmFDcnV6ZWlyb1NpZ24sXG4gIGZhR3JlYXRlclRoYW5FcXVhbCxcbiAgZmFTaGllbGRIYWx2ZWQsXG4gIGZhU2hpZWxkQWx0LFxuICBmYUJvb2tBdGxhcyxcbiAgZmFBdGxhcyxcbiAgZmFWaXJ1cyxcbiAgZmFFbnZlbG9wZUNpcmNsZUNoZWNrLFxuICBmYUxheWVyR3JvdXAsXG4gIGZhQXJyb3dzVG9Eb3QsXG4gIGZhQXJjaHdheSxcbiAgZmFIZWFydENpcmNsZUNoZWNrLFxuICBmYUhvdXNlQ2hpbW5leUNyYWNrLFxuICBmYUhvdXNlRGFtYWdlLFxuICBmYUZpbGVaaXBwZXIsXG4gIGZhRmlsZUFyY2hpdmUsXG4gIGZhU3F1YXJlLFxuICBmYU1hcnRpbmlHbGFzc0VtcHR5LFxuICBmYUdsYXNzTWFydGluaSxcbiAgZmFDb3VjaCxcbiAgZmFDZWRpU2lnbixcbiAgZmFJdGFsaWMsXG4gIGZhVGFibGVDZWxsc0NvbHVtbkxvY2ssXG4gIGZhQ2h1cmNoLFxuICBmYUNvbW1lbnRzRG9sbGFyLFxuICBmYURlbW9jcmF0LFxuICBmYVosXG4gIGZhUGVyc29uU2tpaW5nLFxuICBmYVNraWluZyxcbiAgZmFSb2FkTG9jayxcbiAgZmFBLFxuICBmYVRlbXBlcmF0dXJlQXJyb3dEb3duLFxuICBmYVRlbXBlcmF0dXJlRG93bixcbiAgZmFGZWF0aGVyUG9pbnRlZCxcbiAgZmFGZWF0aGVyQWx0LFxuICBmYVAsXG4gIGZhU25vd2ZsYWtlLFxuICBmYU5ld3NwYXBlcixcbiAgZmFSZWN0YW5nbGVBZCxcbiAgZmFBZCxcbiAgZmFDaXJjbGVBcnJvd1JpZ2h0LFxuICBmYUFycm93Q2lyY2xlUmlnaHQsXG4gIGZhRmlsdGVyQ2lyY2xlWG1hcmssXG4gIGZhTG9jdXN0LFxuICBmYVNvcnQsXG4gIGZhVW5zb3J0ZWQsXG4gIGZhTGlzdE9sLFxuICBmYUxpc3QxMixcbiAgZmFMaXN0TnVtZXJpYyxcbiAgZmFQZXJzb25EcmVzc0J1cnN0LFxuICBmYU1vbmV5Q2hlY2tEb2xsYXIsXG4gIGZhTW9uZXlDaGVja0FsdCxcbiAgZmFWZWN0b3JTcXVhcmUsXG4gIGZhQnJlYWRTbGljZSxcbiAgZmFMYW5ndWFnZSxcbiAgZmFGYWNlS2lzc1dpbmtIZWFydCxcbiAgZmFLaXNzV2lua0hlYXJ0LFxuICBmYUZpbHRlcixcbiAgZmFRdWVzdGlvbixcbiAgZmFGaWxlU2lnbmF0dXJlLFxuICBmYVVwRG93bkxlZnRSaWdodCxcbiAgZmFBcnJvd3NBbHQsXG4gIGZhSG91c2VDaGltbmV5VXNlcixcbiAgZmFIYW5kSG9sZGluZ0hlYXJ0LFxuICBmYVB1enpsZVBpZWNlLFxuICBmYU1vbmV5Q2hlY2ssXG4gIGZhU3RhckhhbGZTdHJva2UsXG4gIGZhU3RhckhhbGZBbHQsXG4gIGZhQ29kZSxcbiAgZmFXaGlza2V5R2xhc3MsXG4gIGZhR2xhc3NXaGlza2V5LFxuICBmYUJ1aWxkaW5nQ2lyY2xlRXhjbGFtYXRpb24sXG4gIGZhTWFnbmlmeWluZ0dsYXNzQ2hhcnQsXG4gIGZhQXJyb3dVcFJpZ2h0RnJvbVNxdWFyZSxcbiAgZmFFeHRlcm5hbExpbmssXG4gIGZhQ3ViZXNTdGFja2VkLFxuICBmYVdvblNpZ24sXG4gIGZhS3J3LFxuICBmYVdvbixcbiAgZmFWaXJ1c0NvdmlkLFxuICBmYUF1c3RyYWxTaWduLFxuICBmYUYsXG4gIGZhTGVhZixcbiAgZmFSb2FkLFxuICBmYVRheGksXG4gIGZhQ2FiLFxuICBmYVBlcnNvbkNpcmNsZVBsdXMsXG4gIGZhQ2hhcnRQaWUsXG4gIGZhUGllQ2hhcnQsXG4gIGZhQm9sdExpZ2h0bmluZyxcbiAgZmFTYWNrWG1hcmssXG4gIGZhRmlsZUV4Y2VsLFxuICBmYUZpbGVDb250cmFjdCxcbiAgZmFGaXNoRmlucyxcbiAgZmFCdWlsZGluZ0ZsYWcsXG4gIGZhRmFjZUdyaW5CZWFtLFxuICBmYUdyaW5CZWFtLFxuICBmYU9iamVjdFVuZ3JvdXAsXG4gIGZhUG9vcCxcbiAgZmFMb2NhdGlvblBpbixcbiAgZmFNYXBNYXJrZXIsXG4gIGZhS2FhYmEsXG4gIGZhVG9pbGV0UGFwZXIsXG4gIGZhSGVsbWV0U2FmZXR5LFxuICBmYUhhcmRIYXQsXG4gIGZhSGF0SGFyZCxcbiAgZmFFamVjdCxcbiAgZmFDaXJjbGVSaWdodCxcbiAgZmFBcnJvd0FsdENpcmNsZVJpZ2h0LFxuICBmYVBsYW5lQ2lyY2xlQ2hlY2ssXG4gIGZhRmFjZVJvbGxpbmdFeWVzLFxuICBmYU1laFJvbGxpbmdFeWVzLFxuICBmYU9iamVjdEdyb3VwLFxuICBmYUNoYXJ0TGluZSxcbiAgZmFMaW5lQ2hhcnQsXG4gIGZhTWFza1ZlbnRpbGF0b3IsXG4gIGZhQXJyb3dSaWdodCxcbiAgZmFTaWduc1Bvc3QsXG4gIGZhTWFwU2lnbnMsXG4gIGZhQ2FzaFJlZ2lzdGVyLFxuICBmYVBlcnNvbkNpcmNsZVF1ZXN0aW9uLFxuICBmYUgsXG4gIGZhVGFycCxcbiAgZmFTY3Jld2RyaXZlcldyZW5jaCxcbiAgZmFUb29scyxcbiAgZmFBcnJvd3NUb0V5ZSxcbiAgZmFQbHVnQ2lyY2xlQm9sdCxcbiAgZmFIZWFydCxcbiAgZmFNYXJzQW5kVmVudXMsXG4gIGZhSG91c2VVc2VyLFxuICBmYUhvbWVVc2VyLFxuICBmYUR1bXBzdGVyRmlyZSxcbiAgZmFIb3VzZUNyYWNrLFxuICBmYU1hcnRpbmlHbGFzc0NpdHJ1cyxcbiAgZmFDb2NrdGFpbCxcbiAgZmFGYWNlU3VycHJpc2UsXG4gIGZhU3VycHJpc2UsXG4gIGZhQm90dGxlV2F0ZXIsXG4gIGZhQ2lyY2xlUGF1c2UsXG4gIGZhUGF1c2VDaXJjbGUsXG4gIGZhVG9pbGV0UGFwZXJTbGFzaCxcbiAgZmFBcHBsZVdob2xlLFxuICBmYUFwcGxlQWx0LFxuICBmYUtpdGNoZW5TZXQsXG4gIGZhUixcbiAgZmFUZW1wZXJhdHVyZVF1YXJ0ZXIsXG4gIGZhVGVtcGVyYXR1cmUxLFxuICBmYVRoZXJtb21ldGVyMSxcbiAgZmFUaGVybW9tZXRlclF1YXJ0ZXIsXG4gIGZhQ3ViZSxcbiAgZmFCaXRjb2luU2lnbixcbiAgZmFTaGllbGREb2csXG4gIGZhU29sYXJQYW5lbCxcbiAgZmFMb2NrT3BlbixcbiAgZmFFbGV2YXRvcixcbiAgZmFNb25leUJpbGxUcmFuc2ZlcixcbiAgZmFNb25leUJpbGxUcmVuZFVwLFxuICBmYUhvdXNlRmxvb2RXYXRlckNpcmNsZUFycm93UmlnaHQsXG4gIGZhU3F1YXJlUG9sbEhvcml6b250YWwsXG4gIGZhUG9sbEgsXG4gIGZhQ2lyY2xlLFxuICBmYUJhY2t3YXJkRmFzdCxcbiAgZmFGYXN0QmFja3dhcmQsXG4gIGZhUmVjeWNsZSxcbiAgZmFVc2VyQXN0cm9uYXV0LFxuICBmYVBsYW5lU2xhc2gsXG4gIGZhVHJhZGVtYXJrLFxuICBmYUJhc2tldGJhbGwsXG4gIGZhQmFza2V0YmFsbEJhbGwsXG4gIGZhU2F0ZWxsaXRlRGlzaCxcbiAgZmFDaXJjbGVVcCxcbiAgZmFBcnJvd0FsdENpcmNsZVVwLFxuICBmYU1vYmlsZVNjcmVlbkJ1dHRvbixcbiAgZmFNb2JpbGVBbHQsXG4gIGZhVm9sdW1lSGlnaCxcbiAgZmFWb2x1bWVVcCxcbiAgZmFVc2Vyc1JheXMsXG4gIGZhV2FsbGV0LFxuICBmYUNsaXBib2FyZENoZWNrLFxuICBmYUZpbGVBdWRpbyxcbiAgZmFCdXJnZXIsXG4gIGZhSGFtYnVyZ2VyLFxuICBmYVdyZW5jaCxcbiAgZmFCdWdzLFxuICBmYVJ1cGVlU2lnbixcbiAgZmFSdXBlZSxcbiAgZmFGaWxlSW1hZ2UsXG4gIGZhQ2lyY2xlUXVlc3Rpb24sXG4gIGZhUXVlc3Rpb25DaXJjbGUsXG4gIGZhUGxhbmVEZXBhcnR1cmUsXG4gIGZhSGFuZHNoYWtlU2xhc2gsXG4gIGZhQm9va0Jvb2ttYXJrLFxuICBmYUNvZGVCcmFuY2gsXG4gIGZhSGF0Q293Ym95LFxuICBmYUJyaWRnZSxcbiAgZmFQaG9uZUZsaXAsXG4gIGZhUGhvbmVBbHQsXG4gIGZhVHJ1Y2tGcm9udCxcbiAgZmFDYXQsXG4gIGZhQW5jaG9yQ2lyY2xlRXhjbGFtYXRpb24sXG4gIGZhVHJ1Y2tGaWVsZCxcbiAgZmFSb3V0ZSxcbiAgZmFDbGlwYm9hcmRRdWVzdGlvbixcbiAgZmFQYW5vcmFtYSxcbiAgZmFDb21tZW50TWVkaWNhbCxcbiAgZmFUZWV0aE9wZW4sXG4gIGZhRmlsZUNpcmNsZU1pbnVzLFxuICBmYVRhZ3MsXG4gIGZhV2luZUdsYXNzLFxuICBmYUZvcndhcmRGYXN0LFxuICBmYUZhc3RGb3J3YXJkLFxuICBmYUZhY2VNZWhCbGFuayxcbiAgZmFNZWhCbGFuayxcbiAgZmFTcXVhcmVQYXJraW5nLFxuICBmYVBhcmtpbmcsXG4gIGZhSG91c2VTaWduYWwsXG4gIGZhQmFyc1Byb2dyZXNzLFxuICBmYVRhc2tzQWx0LFxuICBmYUZhdWNldERyaXAsXG4gIGZhQ2FydEZsYXRiZWQsXG4gIGZhRG9sbHlGbGF0YmVkLFxuICBmYUJhblNtb2tpbmcsXG4gIGZhU21va2luZ0JhbixcbiAgZmFUZXJtaW5hbCxcbiAgZmFNb2JpbGVCdXR0b24sXG4gIGZhSG91c2VNZWRpY2FsRmxhZyxcbiAgZmFCYXNrZXRTaG9wcGluZyxcbiAgZmFTaG9wcGluZ0Jhc2tldCxcbiAgZmFUYXBlLFxuICBmYUJ1c1NpbXBsZSxcbiAgZmFCdXNBbHQsXG4gIGZhRXllLFxuICBmYUZhY2VTYWRDcnksXG4gIGZhU2FkQ3J5LFxuICBmYUF1ZGlvRGVzY3JpcHRpb24sXG4gIGZhUGVyc29uTWlsaXRhcnlUb1BlcnNvbixcbiAgZmFGaWxlU2hpZWxkLFxuICBmYVVzZXJTbGFzaCxcbiAgZmFQZW4sXG4gIGZhVG93ZXJPYnNlcnZhdGlvbixcbiAgZmFGaWxlQ29kZSxcbiAgZmFTaWduYWwsXG4gIGZhU2lnbmFsNSxcbiAgZmFTaWduYWxQZXJmZWN0LFxuICBmYUJ1cyxcbiAgZmFIZWFydENpcmNsZVhtYXJrLFxuICBmYUhvdXNlQ2hpbW5leSxcbiAgZmFIb21lTGcsXG4gIGZhV2luZG93TWF4aW1pemUsXG4gIGZhRmFjZUZyb3duLFxuICBmYUZyb3duLFxuICBmYVByZXNjcmlwdGlvbixcbiAgZmFTaG9wLFxuICBmYVN0b3JlQWx0LFxuICBmYUZsb3BweURpc2ssXG4gIGZhU2F2ZSxcbiAgZmFWaWhhcmEsXG4gIGZhU2NhbGVVbmJhbGFuY2VkLFxuICBmYUJhbGFuY2VTY2FsZUxlZnQsXG4gIGZhU29ydFVwLFxuICBmYVNvcnRBc2MsXG4gIGZhQ29tbWVudERvdHMsXG4gIGZhQ29tbWVudGluZyxcbiAgZmFQbGFudFdpbHQsXG4gIGZhRGlhbW9uZCxcbiAgZmFGYWNlR3JpblNxdWludCxcbiAgZmFHcmluU3F1aW50LFxuICBmYUhhbmRIb2xkaW5nRG9sbGFyLFxuICBmYUhhbmRIb2xkaW5nVXNkLFxuICBmYUJhY3Rlcml1bSxcbiAgZmFIYW5kUG9pbnRlcixcbiAgZmFEcnVtU3RlZWxwYW4sXG4gIGZhSGFuZFNjaXNzb3JzLFxuICBmYUhhbmRzUHJheWluZyxcbiAgZmFQcmF5aW5nSGFuZHMsXG4gIGZhQXJyb3dSb3RhdGVSaWdodCxcbiAgZmFBcnJvd1JpZ2h0Um90YXRlLFxuICBmYUFycm93Um90YXRlRm9yd2FyZCxcbiAgZmFSZWRvLFxuICBmYVdlYkF3ZXNvbWUsXG4gIGZhQmlvaGF6YXJkLFxuICBmYUxvY2F0aW9uQ3Jvc3NoYWlycyxcbiAgZmFMb2NhdGlvbixcbiAgZmFNYXJzRG91YmxlLFxuICBmYUNoaWxkRHJlc3MsXG4gIGZhVXNlcnNCZXR3ZWVuTGluZXMsXG4gIGZhTHVuZ3NWaXJ1cyxcbiAgZmFGYWNlR3JpblRlYXJzLFxuICBmYUdyaW5UZWFycyxcbiAgZmFQaG9uZSxcbiAgZmFDYWxlbmRhclhtYXJrLFxuICBmYUNhbGVuZGFyVGltZXMsXG4gIGZhQ2hpbGRSZWFjaGluZyxcbiAgZmFIZWFkU2lkZVZpcnVzLFxuICBmYVVzZXJHZWFyLFxuICBmYVVzZXJDb2csXG4gIGZhQXJyb3dVcDE5LFxuICBmYVNvcnROdW1lcmljVXAsXG4gIGZhRG9vckNsb3NlZCxcbiAgZmFTaGllbGRWaXJ1cyxcbiAgZmFEaWNlU2l4LFxuICBmYU1vc3F1aXRvTmV0LFxuICBmYUJyaWRnZVdhdGVyLFxuICBmYVBlcnNvbkJvb3RoLFxuICBmYVRleHRXaWR0aCxcbiAgZmFIYXRXaXphcmQsXG4gIGZhUGVuRmFuY3ksXG4gIGZhUGVyc29uRGlnZ2luZyxcbiAgZmFEaWdnaW5nLFxuICBmYVRyYXNoLFxuICBmYUdhdWdlU2ltcGxlLFxuICBmYUdhdWdlU2ltcGxlTWVkLFxuICBmYVRhY2hvbWV0ZXJBdmVyYWdlLFxuICBmYUJvb2tNZWRpY2FsLFxuICBmYVBvbyxcbiAgZmFRdW90ZVJpZ2h0LFxuICBmYVF1b3RlUmlnaHRBbHQsXG4gIGZhU2hpcnQsXG4gIGZhVFNoaXJ0LFxuICBmYVRzaGlydCxcbiAgZmFDdWJlcyxcbiAgZmFEaXZpZGUsXG4gIGZhVGVuZ2VTaWduLFxuICBmYVRlbmdlLFxuICBmYUhlYWRwaG9uZXMsXG4gIGZhSGFuZHNIb2xkaW5nLFxuICBmYUhhbmRzQ2xhcHBpbmcsXG4gIGZhUmVwdWJsaWNhbixcbiAgZmFBcnJvd0xlZnQsXG4gIGZhUGVyc29uQ2lyY2xlWG1hcmssXG4gIGZhUnVsZXIsXG4gIGZhQWxpZ25MZWZ0LFxuICBmYURpY2VENixcbiAgZmFSZXN0cm9vbSxcbiAgZmFKLFxuICBmYVVzZXJzVmlld2ZpbmRlcixcbiAgZmFGaWxlVmlkZW8sXG4gIGZhVXBSaWdodEZyb21TcXVhcmUsXG4gIGZhRXh0ZXJuYWxMaW5rQWx0LFxuICBmYVRhYmxlQ2VsbHMsXG4gIGZhVGgsXG4gIGZhRmlsZVBkZixcbiAgZmFCb29rQmlibGUsXG4gIGZhQmlibGUsXG4gIGZhTyxcbiAgZmFTdWl0Y2FzZU1lZGljYWwsXG4gIGZhTWVka2l0LFxuICBmYVVzZXJTZWNyZXQsXG4gIGZhT3R0ZXIsXG4gIGZhUGVyc29uRHJlc3MsXG4gIGZhRmVtYWxlLFxuICBmYUNvbW1lbnREb2xsYXIsXG4gIGZhQnVzaW5lc3NUaW1lLFxuICBmYUJyaWVmY2FzZUNsb2NrLFxuICBmYVRhYmxlQ2VsbHNMYXJnZSxcbiAgZmFUaExhcmdlLFxuICBmYUJvb2tUYW5ha2gsXG4gIGZhVGFuYWtoLFxuICBmYVBob25lVm9sdW1lLFxuICBmYVZvbHVtZUNvbnRyb2xQaG9uZSxcbiAgZmFIYXRDb3dib3lTaWRlLFxuICBmYUNsaXBib2FyZFVzZXIsXG4gIGZhQ2hpbGQsXG4gIGZhTGlyYVNpZ24sXG4gIGZhU2F0ZWxsaXRlLFxuICBmYVBsYW5lTG9jayxcbiAgZmFUYWcsXG4gIGZhQ29tbWVudCxcbiAgZmFDYWtlQ2FuZGxlcyxcbiAgZmFCaXJ0aGRheUNha2UsXG4gIGZhQ2FrZSxcbiAgZmFFbnZlbG9wZSxcbiAgZmFBbmdsZXNVcCxcbiAgZmFBbmdsZURvdWJsZVVwLFxuICBmYVBhcGVyY2xpcCxcbiAgZmFBcnJvd1JpZ2h0VG9DaXR5LFxuICBmYVJpYmJvbixcbiAgZmFMdW5ncyxcbiAgZmFBcnJvd1VwOTEsXG4gIGZhU29ydE51bWVyaWNVcEFsdCxcbiAgZmFMaXRlY29pblNpZ24sXG4gIGZhQm9yZGVyTm9uZSxcbiAgZmFDaXJjbGVOb2RlcyxcbiAgZmFQYXJhY2h1dGVCb3gsXG4gIGZhSW5kZW50LFxuICBmYVRydWNrRmllbGRVbixcbiAgZmFIb3VyZ2xhc3MsXG4gIGZhSG91cmdsYXNzRW1wdHksXG4gIGZhTW91bnRhaW4sXG4gIGZhVXNlckRvY3RvcixcbiAgZmFVc2VyTWQsXG4gIGZhQ2lyY2xlSW5mbyxcbiAgZmFJbmZvQ2lyY2xlLFxuICBmYUNsb3VkTWVhdGJhbGwsXG4gIGZhQ2FtZXJhLFxuICBmYUNhbWVyYUFsdCxcbiAgZmFTcXVhcmVWaXJ1cyxcbiAgZmFNZXRlb3IsXG4gIGZhQ2FyT24sXG4gIGZhU2xlaWdoLFxuICBmYUFycm93RG93bjE5LFxuICBmYVNvcnROdW1lcmljQXNjLFxuICBmYVNvcnROdW1lcmljRG93bixcbiAgZmFIYW5kSG9sZGluZ0Ryb3BsZXQsXG4gIGZhSGFuZEhvbGRpbmdXYXRlcixcbiAgZmFXYXRlcixcbiAgZmFDYWxlbmRhckNoZWNrLFxuICBmYUJyYWlsbGUsXG4gIGZhUHJlc2NyaXB0aW9uQm90dGxlTWVkaWNhbCxcbiAgZmFQcmVzY3JpcHRpb25Cb3R0bGVBbHQsXG4gIGZhTGFuZG1hcmssXG4gIGZhVHJ1Y2ssXG4gIGZhQ3Jvc3NoYWlycyxcbiAgZmFQZXJzb25DYW5lLFxuICBmYVRlbnQsXG4gIGZhVmVzdFBhdGNoZXMsXG4gIGZhQ2hlY2tEb3VibGUsXG4gIGZhQXJyb3dEb3duQVosXG4gIGZhU29ydEFscGhhQXNjLFxuICBmYVNvcnRBbHBoYURvd24sXG4gIGZhTW9uZXlCaWxsV2hlYXQsXG4gIGZhQ29va2llLFxuICBmYUFycm93Um90YXRlTGVmdCxcbiAgZmFBcnJvd0xlZnRSb3RhdGUsXG4gIGZhQXJyb3dSb3RhdGVCYWNrLFxuICBmYUFycm93Um90YXRlQmFja3dhcmQsXG4gIGZhVW5kbyxcbiAgZmFIYXJkRHJpdmUsXG4gIGZhSGRkLFxuICBmYUZhY2VHcmluU3F1aW50VGVhcnMsXG4gIGZhR3JpblNxdWludFRlYXJzLFxuICBmYUR1bWJiZWxsLFxuICBmYVJlY3RhbmdsZUxpc3QsXG4gIGZhTGlzdEFsdCxcbiAgZmFUYXJwRHJvcGxldCxcbiAgZmFIb3VzZU1lZGljYWxDaXJjbGVDaGVjayxcbiAgZmFQZXJzb25Ta2lpbmdOb3JkaWMsXG4gIGZhU2tpaW5nTm9yZGljLFxuICBmYUNhbGVuZGFyUGx1cyxcbiAgZmFQbGFuZUFycml2YWwsXG4gIGZhQ2lyY2xlTGVmdCxcbiAgZmFBcnJvd0FsdENpcmNsZUxlZnQsXG4gIGZhVHJhaW5TdWJ3YXksXG4gIGZhU3Vid2F5LFxuICBmYUNoYXJ0R2FudHQsXG4gIGZhSW5kaWFuUnVwZWVTaWduLFxuICBmYUluZGlhblJ1cGVlLFxuICBmYUlucixcbiAgZmFDcm9wU2ltcGxlLFxuICBmYUNyb3BBbHQsXG4gIGZhTW9uZXlCaWxsMSxcbiAgZmFNb25leUJpbGxBbHQsXG4gIGZhTGVmdExvbmcsXG4gIGZhTG9uZ0Fycm93QWx0TGVmdCxcbiAgZmFEbmEsXG4gIGZhVmlydXNTbGFzaCxcbiAgZmFNaW51cyxcbiAgZmFTdWJ0cmFjdCxcbiAgZmFDaGVzcyxcbiAgZmFBcnJvd0xlZnRMb25nLFxuICBmYUxvbmdBcnJvd0xlZnQsXG4gIGZhUGx1Z0NpcmNsZUNoZWNrLFxuICBmYVN0cmVldFZpZXcsXG4gIGZhRnJhbmNTaWduLFxuICBmYVZvbHVtZU9mZixcbiAgZmFIYW5kc0FzbEludGVycHJldGluZyxcbiAgZmFBbWVyaWNhblNpZ25MYW5ndWFnZUludGVycHJldGluZyxcbiAgZmFBc2xJbnRlcnByZXRpbmcsXG4gIGZhSGFuZHNBbWVyaWNhblNpZ25MYW5ndWFnZUludGVycHJldGluZyxcbiAgZmFHZWFyLFxuICBmYUNvZyxcbiAgZmFEcm9wbGV0U2xhc2gsXG4gIGZhVGludFNsYXNoLFxuICBmYU1vc3F1ZSxcbiAgZmFNb3NxdWl0byxcbiAgZmFTdGFyT2ZEYXZpZCxcbiAgZmFQZXJzb25NaWxpdGFyeVJpZmxlLFxuICBmYUNhcnRTaG9wcGluZyxcbiAgZmFTaG9wcGluZ0NhcnQsXG4gIGZhVmlhbHMsXG4gIGZhUGx1Z0NpcmNsZVBsdXMsXG4gIGZhUGxhY2VPZldvcnNoaXAsXG4gIGZhR3JpcFZlcnRpY2FsLFxuICBmYUFycm93VHVyblVwLFxuICBmYUxldmVsVXAsXG4gIGZhVSxcbiAgZmFTcXVhcmVSb290VmFyaWFibGUsXG4gIGZhU3F1YXJlUm9vdEFsdCxcbiAgZmFDbG9jayxcbiAgZmFDbG9ja0ZvdXIsXG4gIGZhQmFja3dhcmRTdGVwLFxuICBmYVN0ZXBCYWNrd2FyZCxcbiAgZmFQYWxsZXQsXG4gIGZhRmF1Y2V0LFxuICBmYUJhc2ViYWxsQmF0QmFsbCxcbiAgZmFTLFxuICBmYVRpbWVsaW5lLFxuICBmYUtleWJvYXJkLFxuICBmYUNhcmV0RG93bixcbiAgZmFIb3VzZUNoaW1uZXlNZWRpY2FsLFxuICBmYUNsaW5pY01lZGljYWwsXG4gIGZhVGVtcGVyYXR1cmVUaHJlZVF1YXJ0ZXJzLFxuICBmYVRlbXBlcmF0dXJlMyxcbiAgZmFUaGVybW9tZXRlcjMsXG4gIGZhVGhlcm1vbWV0ZXJUaHJlZVF1YXJ0ZXJzLFxuICBmYU1vYmlsZVNjcmVlbixcbiAgZmFNb2JpbGVBbmRyb2lkQWx0LFxuICBmYVBsYW5lVXAsXG4gIGZhUGlnZ3lCYW5rLFxuICBmYUJhdHRlcnlIYWxmLFxuICBmYUJhdHRlcnkzLFxuICBmYU1vdW50YWluQ2l0eSxcbiAgZmFDb2lucyxcbiAgZmFLaGFuZGEsXG4gIGZhU2xpZGVycyxcbiAgZmFTbGlkZXJzSCxcbiAgZmFGb2xkZXJUcmVlLFxuICBmYU5ldHdvcmtXaXJlZCxcbiAgZmFNYXBQaW4sXG4gIGZhSGFtc2EsXG4gIGZhQ2VudFNpZ24sXG4gIGZhRmxhc2ssXG4gIGZhUGVyc29uUHJlZ25hbnQsXG4gIGZhV2FuZFNwYXJrbGVzLFxuICBmYUVsbGlwc2lzVmVydGljYWwsXG4gIGZhRWxsaXBzaXNWLFxuICBmYVRpY2tldCxcbiAgZmFQb3dlck9mZixcbiAgZmFSaWdodExvbmcsXG4gIGZhTG9uZ0Fycm93QWx0UmlnaHQsXG4gIGZhRmxhZ1VzYSxcbiAgZmFMYXB0b3BGaWxlLFxuICBmYVR0eSxcbiAgZmFUZWxldHlwZSxcbiAgZmFEaWFncmFtTmV4dCxcbiAgZmFQZXJzb25SaWZsZSxcbiAgZmFIb3VzZU1lZGljYWxDaXJjbGVFeGNsYW1hdGlvbixcbiAgZmFDbG9zZWRDYXB0aW9uaW5nLFxuICBmYVBlcnNvbkhpa2luZyxcbiAgZmFIaWtpbmcsXG4gIGZhVmVudXNEb3VibGUsXG4gIGZhSW1hZ2VzLFxuICBmYUNhbGN1bGF0b3IsXG4gIGZhUGVvcGxlUHVsbGluZyxcbiAgZmFOLFxuICBmYUNhYmxlQ2FyLFxuICBmYVRyYW0sXG4gIGZhQ2xvdWRSYWluLFxuICBmYUJ1aWxkaW5nQ2lyY2xlWG1hcmssXG4gIGZhU2hpcCxcbiAgZmFBcnJvd3NEb3duVG9MaW5lLFxuICBmYURvd25sb2FkLFxuICBmYUZhY2VHcmluLFxuICBmYUdyaW4sXG4gIGZhRGVsZXRlTGVmdCxcbiAgZmFCYWNrc3BhY2UsXG4gIGZhRXllRHJvcHBlcixcbiAgZmFFeWVEcm9wcGVyRW1wdHksXG4gIGZhRXllZHJvcHBlcixcbiAgZmFGaWxlQ2lyY2xlQ2hlY2ssXG4gIGZhRm9yd2FyZCxcbiAgZmFNb2JpbGUsXG4gIGZhTW9iaWxlQW5kcm9pZCxcbiAgZmFNb2JpbGVQaG9uZSxcbiAgZmFGYWNlTWVoLFxuICBmYU1laCxcbiAgZmFBbGlnbkNlbnRlcixcbiAgZmFCb29rU2t1bGwsXG4gIGZhQm9va0RlYWQsXG4gIGZhSWRDYXJkLFxuICBmYURyaXZlcnNMaWNlbnNlLFxuICBmYU91dGRlbnQsXG4gIGZhRGVkZW50LFxuICBmYUhlYXJ0Q2lyY2xlRXhjbGFtYXRpb24sXG4gIGZhSG91c2UsXG4gIGZhSG9tZSxcbiAgZmFIb21lQWx0LFxuICBmYUhvbWVMZ0FsdCxcbiAgZmFDYWxlbmRhcldlZWssXG4gIGZhTGFwdG9wTWVkaWNhbCxcbiAgZmFCLFxuICBmYUZpbGVNZWRpY2FsLFxuICBmYURpY2VPbmUsXG4gIGZhS2l3aUJpcmQsXG4gIGZhQXJyb3dSaWdodEFycm93TGVmdCxcbiAgZmFFeGNoYW5nZSxcbiAgZmFSb3RhdGVSaWdodCxcbiAgZmFSZWRvQWx0LFxuICBmYVJvdGF0ZUZvcndhcmQsXG4gIGZhVXRlbnNpbHMsXG4gIGZhQ3V0bGVyeSxcbiAgZmFBcnJvd1VwV2lkZVNob3J0LFxuICBmYVNvcnRBbW91bnRVcCxcbiAgZmFNaWxsU2lnbixcbiAgZmFCb3dsUmljZSxcbiAgZmFTa3VsbCxcbiAgZmFUb3dlckJyb2FkY2FzdCxcbiAgZmFCcm9hZGNhc3RUb3dlcixcbiAgZmFUcnVja1BpY2t1cCxcbiAgZmFVcExvbmcsXG4gIGZhTG9uZ0Fycm93QWx0VXAsXG4gIGZhU3RvcCxcbiAgZmFDb2RlTWVyZ2UsXG4gIGZhVXBsb2FkLFxuICBmYUh1cnJpY2FuZSxcbiAgZmFNb3VuZCxcbiAgZmFUb2lsZXRQb3J0YWJsZSxcbiAgZmFDb21wYWN0RGlzYyxcbiAgZmFGaWxlQXJyb3dEb3duLFxuICBmYUZpbGVEb3dubG9hZCxcbiAgZmFDYXJhdmFuLFxuICBmYVNoaWVsZENhdCxcbiAgZmFCb2x0LFxuICBmYVphcCxcbiAgZmFHbGFzc1dhdGVyLFxuICBmYU9pbFdlbGwsXG4gIGZhVmF1bHQsXG4gIGZhTWFycyxcbiAgZmFUb2lsZXQsXG4gIGZhUGxhbmVDaXJjbGVYbWFyayxcbiAgZmFZZW5TaWduLFxuICBmYUNueSxcbiAgZmFKcHksXG4gIGZhUm1iLFxuICBmYVllbixcbiAgZmFSdWJsZVNpZ24sXG4gIGZhUm91YmxlLFxuICBmYVJ1YixcbiAgZmFSdWJsZSxcbiAgZmFTdW4sXG4gIGZhR3VpdGFyLFxuICBmYUZhY2VMYXVnaFdpbmssXG4gIGZhTGF1Z2hXaW5rLFxuICBmYUhvcnNlSGVhZCxcbiAgZmFCb3JlSG9sZSxcbiAgZmFJbmR1c3RyeSxcbiAgZmFDaXJjbGVEb3duLFxuICBmYUFycm93QWx0Q2lyY2xlRG93bixcbiAgZmFBcnJvd3NUdXJuVG9Eb3RzLFxuICBmYUZsb3JpblNpZ24sXG4gIGZhQXJyb3dEb3duU2hvcnRXaWRlLFxuICBmYVNvcnRBbW91bnREZXNjLFxuICBmYVNvcnRBbW91bnREb3duQWx0LFxuICBmYUxlc3NUaGFuLFxuICBmYUFuZ2xlRG93bixcbiAgZmFDYXJUdW5uZWwsXG4gIGZhSGVhZFNpZGVDb3VnaCxcbiAgZmFHcmlwTGluZXMsXG4gIGZhVGh1bWJzRG93bixcbiAgZmFVc2VyTG9jayxcbiAgZmFBcnJvd1JpZ2h0TG9uZyxcbiAgZmFMb25nQXJyb3dSaWdodCxcbiAgZmFBbmNob3JDaXJjbGVYbWFyayxcbiAgZmFFbGxpcHNpcyxcbiAgZmFFbGxpcHNpc0gsXG4gIGZhQ2hlc3NQYXduLFxuICBmYUtpdE1lZGljYWwsXG4gIGZhRmlyc3RBaWQsXG4gIGZhUGVyc29uVGhyb3VnaFdpbmRvdyxcbiAgZmFUb29sYm94LFxuICBmYUhhbmRzSG9sZGluZ0NpcmNsZSxcbiAgZmFCdWcsXG4gIGZhQ3JlZGl0Q2FyZCxcbiAgZmFDcmVkaXRDYXJkQWx0LFxuICBmYUNhcixcbiAgZmFBdXRvbW9iaWxlLFxuICBmYUhhbmRIb2xkaW5nSGFuZCxcbiAgZmFCb29rT3BlblJlYWRlcixcbiAgZmFCb29rUmVhZGVyLFxuICBmYU1vdW50YWluU3VuLFxuICBmYUFycm93c0xlZnRSaWdodFRvTGluZSxcbiAgZmFEaWNlRDIwLFxuICBmYVRydWNrRHJvcGxldCxcbiAgZmFGaWxlQ2lyY2xlWG1hcmssXG4gIGZhVGVtcGVyYXR1cmVBcnJvd1VwLFxuICBmYVRlbXBlcmF0dXJlVXAsXG4gIGZhTWVkYWwsXG4gIGZhQmVkLFxuICBmYVNxdWFyZUgsXG4gIGZhSFNxdWFyZSxcbiAgZmFQb2RjYXN0LFxuICBmYVRlbXBlcmF0dXJlRnVsbCxcbiAgZmFUZW1wZXJhdHVyZTQsXG4gIGZhVGhlcm1vbWV0ZXI0LFxuICBmYVRoZXJtb21ldGVyRnVsbCxcbiAgZmFCZWxsLFxuICBmYVN1cGVyc2NyaXB0LFxuICBmYVBsdWdDaXJjbGVYbWFyayxcbiAgZmFTdGFyT2ZMaWZlLFxuICBmYVBob25lU2xhc2gsXG4gIGZhUGFpbnRSb2xsZXIsXG4gIGZhSGFuZHNoYWtlQW5nbGUsXG4gIGZhSGFuZHNIZWxwaW5nLFxuICBmYUxvY2F0aW9uRG90LFxuICBmYU1hcE1hcmtlckFsdCxcbiAgZmFGaWxlLFxuICBmYUdyZWF0ZXJUaGFuLFxuICBmYVBlcnNvblN3aW1taW5nLFxuICBmYVN3aW1tZXIsXG4gIGZhQXJyb3dEb3duLFxuICBmYURyb3BsZXQsXG4gIGZhVGludCxcbiAgZmFFcmFzZXIsXG4gIGZhRWFydGhBbWVyaWNhcyxcbiAgZmFFYXJ0aCxcbiAgZmFFYXJ0aEFtZXJpY2EsXG4gIGZhR2xvYmVBbWVyaWNhcyxcbiAgZmFQZXJzb25CdXJzdCxcbiAgZmFEb3ZlLFxuICBmYUJhdHRlcnlFbXB0eSxcbiAgZmFCYXR0ZXJ5MCxcbiAgZmFTb2NrcyxcbiAgZmFJbmJveCxcbiAgZmFTZWN0aW9uLFxuICBmYUdhdWdlSGlnaCxcbiAgZmFUYWNob21ldGVyQWx0LFxuICBmYVRhY2hvbWV0ZXJBbHRGYXN0LFxuICBmYUVudmVsb3BlT3BlblRleHQsXG4gIGZhSG9zcGl0YWwsXG4gIGZhSG9zcGl0YWxBbHQsXG4gIGZhSG9zcGl0YWxXaWRlLFxuICBmYVdpbmVCb3R0bGUsXG4gIGZhQ2hlc3NSb29rLFxuICBmYUJhcnNTdGFnZ2VyZWQsXG4gIGZhUmVvcmRlcixcbiAgZmFTdHJlYW0sXG4gIGZhRGhhcm1hY2hha3JhLFxuICBmYUhvdGRvZyxcbiAgZmFQZXJzb25XYWxraW5nV2l0aENhbmUsXG4gIGZhQmxpbmQsXG4gIGZhRHJ1bSxcbiAgZmFJY2VDcmVhbSxcbiAgZmFIZWFydENpcmNsZUJvbHQsXG4gIGZhRmF4LFxuICBmYVBhcmFncmFwaCxcbiAgZmFDaGVja1RvU2xvdCxcbiAgZmFWb3RlWWVhLFxuICBmYVN0YXJIYWxmLFxuICBmYUJveGVzU3RhY2tlZCxcbiAgZmFCb3hlcyxcbiAgZmFCb3hlc0FsdCxcbiAgZmFMaW5rLFxuICBmYUNoYWluLFxuICBmYUVhckxpc3RlbixcbiAgZmFBc3Npc3RpdmVMaXN0ZW5pbmdTeXN0ZW1zLFxuICBmYVRyZWVDaXR5LFxuICBmYVBsYXksXG4gIGZhRm9udCxcbiAgZmFUYWJsZUNlbGxzUm93TG9jayxcbiAgZmFSdXBpYWhTaWduLFxuICBmYU1hZ25pZnlpbmdHbGFzcyxcbiAgZmFTZWFyY2gsXG4gIGZhVGFibGVUZW5uaXNQYWRkbGVCYWxsLFxuICBmYVBpbmdQb25nUGFkZGxlQmFsbCxcbiAgZmFUYWJsZVRlbm5pcyxcbiAgZmFQZXJzb25Eb3RzRnJvbUxpbmUsXG4gIGZhRGlhZ25vc2VzLFxuICBmYVRyYXNoQ2FuQXJyb3dVcCxcbiAgZmFUcmFzaFJlc3RvcmVBbHQsXG4gIGZhTmFpcmFTaWduLFxuICBmYUNhcnRBcnJvd0Rvd24sXG4gIGZhV2Fsa2llVGFsa2llLFxuICBmYUZpbGVQZW4sXG4gIGZhRmlsZUVkaXQsXG4gIGZhUmVjZWlwdCxcbiAgZmFTcXVhcmVQZW4sXG4gIGZhUGVuU3F1YXJlLFxuICBmYVBlbmNpbFNxdWFyZSxcbiAgZmFTdWl0Y2FzZVJvbGxpbmcsXG4gIGZhUGVyc29uQ2lyY2xlRXhjbGFtYXRpb24sXG4gIGZhQ2hldnJvbkRvd24sXG4gIGZhQmF0dGVyeUZ1bGwsXG4gIGZhQmF0dGVyeSxcbiAgZmFCYXR0ZXJ5NSxcbiAgZmFTa3VsbENyb3NzYm9uZXMsXG4gIGZhQ29kZUNvbXBhcmUsXG4gIGZhTGlzdFVsLFxuICBmYUxpc3REb3RzLFxuICBmYVNjaG9vbExvY2ssXG4gIGZhVG93ZXJDZWxsLFxuICBmYURvd25Mb25nLFxuICBmYUxvbmdBcnJvd0FsdERvd24sXG4gIGZhUmFua2luZ1N0YXIsXG4gIGZhQ2hlc3NLaW5nLFxuICBmYVBlcnNvbkhhcmFzc2luZyxcbiAgZmFCcmF6aWxpYW5SZWFsU2lnbixcbiAgZmFMYW5kbWFya0RvbWUsXG4gIGZhTGFuZG1hcmtBbHQsXG4gIGZhQXJyb3dVcCxcbiAgZmFUdixcbiAgZmFUZWxldmlzaW9uLFxuICBmYVR2QWx0LFxuICBmYVNocmltcCxcbiAgZmFMaXN0Q2hlY2ssXG4gIGZhVGFza3MsXG4gIGZhSnVnRGV0ZXJnZW50LFxuICBmYUNpcmNsZVVzZXIsXG4gIGZhVXNlckNpcmNsZSxcbiAgZmFVc2VyU2hpZWxkLFxuICBmYVdpbmQsXG4gIGZhQ2FyQnVyc3QsXG4gIGZhQ2FyQ3Jhc2gsXG4gIGZhWSxcbiAgZmFQZXJzb25Tbm93Ym9hcmRpbmcsXG4gIGZhU25vd2JvYXJkaW5nLFxuICBmYVRydWNrRmFzdCxcbiAgZmFTaGlwcGluZ0Zhc3QsXG4gIGZhRmlzaCxcbiAgZmFVc2VyR3JhZHVhdGUsXG4gIGZhQ2lyY2xlSGFsZlN0cm9rZSxcbiAgZmFBZGp1c3QsXG4gIGZhQ2xhcHBlcmJvYXJkLFxuICBmYUNpcmNsZVJhZGlhdGlvbixcbiAgZmFSYWRpYXRpb25BbHQsXG4gIGZhQmFzZWJhbGwsXG4gIGZhQmFzZWJhbGxCYWxsLFxuICBmYUpldEZpZ2h0ZXJVcCxcbiAgZmFEaWFncmFtUHJvamVjdCxcbiAgZmFQcm9qZWN0RGlhZ3JhbSxcbiAgZmFDb3B5LFxuICBmYVZvbHVtZVhtYXJrLFxuICBmYVZvbHVtZU11dGUsXG4gIGZhVm9sdW1lVGltZXMsXG4gIGZhSGFuZFNwYXJrbGVzLFxuICBmYUdyaXAsXG4gIGZhR3JpcEhvcml6b250YWwsXG4gIGZhU2hhcmVGcm9tU3F1YXJlLFxuICBmYVNoYXJlU3F1YXJlLFxuICBmYUNoaWxkQ29tYmF0YW50LFxuICBmYUNoaWxkUmlmbGUsXG4gIGZhR3VuLFxuICBmYVNxdWFyZVBob25lLFxuICBmYVBob25lU3F1YXJlLFxuICBmYVBsdXMsXG4gIGZhQWRkLFxuICBmYUV4cGFuZCxcbiAgZmFDb21wdXRlcixcbiAgZmFYbWFyayxcbiAgZmFDbG9zZSxcbiAgZmFNdWx0aXBseSxcbiAgZmFSZW1vdmUsXG4gIGZhVGltZXMsXG4gIGZhQXJyb3dzVXBEb3duTGVmdFJpZ2h0LFxuICBmYUFycm93cyxcbiAgZmFDaGFsa2JvYXJkVXNlcixcbiAgZmFDaGFsa2JvYXJkVGVhY2hlcixcbiAgZmFQZXNvU2lnbixcbiAgZmFCdWlsZGluZ1NoaWVsZCxcbiAgZmFCYWJ5LFxuICBmYVVzZXJzTGluZSxcbiAgZmFRdW90ZUxlZnQsXG4gIGZhUXVvdGVMZWZ0QWx0LFxuICBmYVRyYWN0b3IsXG4gIGZhVHJhc2hBcnJvd1VwLFxuICBmYVRyYXNoUmVzdG9yZSxcbiAgZmFBcnJvd0Rvd25VcExvY2ssXG4gIGZhTGluZXNMZWFuaW5nLFxuICBmYVJ1bGVyQ29tYmluZWQsXG4gIGZhQ29weXJpZ2h0LFxuICBmYUVxdWFscyxcbiAgZmFCbGVuZGVyLFxuICBmYVRlZXRoLFxuICBmYVNoZWtlbFNpZ24sXG4gIGZhSWxzLFxuICBmYVNoZWtlbCxcbiAgZmFTaGVxZWwsXG4gIGZhU2hlcWVsU2lnbixcbiAgZmFNYXAsXG4gIGZhUm9ja2V0LFxuICBmYVBob3RvRmlsbSxcbiAgZmFQaG90b1ZpZGVvLFxuICBmYUZvbGRlck1pbnVzLFxuICBmYVN0b3JlLFxuICBmYUFycm93VHJlbmRVcCxcbiAgZmFQbHVnQ2lyY2xlTWludXMsXG4gIGZhU2lnbkhhbmdpbmcsXG4gIGZhU2lnbixcbiAgZmFCZXppZXJDdXJ2ZSxcbiAgZmFCZWxsU2xhc2gsXG4gIGZhVGFibGV0LFxuICBmYVRhYmxldEFuZHJvaWQsXG4gIGZhU2Nob29sRmxhZyxcbiAgZmFGaWxsLFxuICBmYUFuZ2xlVXAsXG4gIGZhRHJ1bXN0aWNrQml0ZSxcbiAgZmFIb2xseUJlcnJ5LFxuICBmYUNoZXZyb25MZWZ0LFxuICBmYUJhY3RlcmlhLFxuICBmYUhhbmRMaXphcmQsXG4gIGZhTm90ZGVmLFxuICBmYURpc2Vhc2UsXG4gIGZhQnJpZWZjYXNlTWVkaWNhbCxcbiAgZmFHZW5kZXJsZXNzLFxuICBmYUNoZXZyb25SaWdodCxcbiAgZmFSZXR3ZWV0LFxuICBmYUNhclJlYXIsXG4gIGZhQ2FyQWx0LFxuICBmYVB1bXBTb2FwLFxuICBmYVZpZGVvU2xhc2gsXG4gIGZhQmF0dGVyeVF1YXJ0ZXIsXG4gIGZhQmF0dGVyeTIsXG4gIGZhUmFkaW8sXG4gIGZhQmFieUNhcnJpYWdlLFxuICBmYUNhcnJpYWdlQmFieSxcbiAgZmFUcmFmZmljTGlnaHQsXG4gIGZhVGhlcm1vbWV0ZXIsXG4gIGZhVnJDYXJkYm9hcmQsXG4gIGZhSGFuZE1pZGRsZUZpbmdlcixcbiAgZmFQZXJjZW50LFxuICBmYVBlcmNlbnRhZ2UsXG4gIGZhVHJ1Y2tNb3ZpbmcsXG4gIGZhR2xhc3NXYXRlckRyb3BsZXQsXG4gIGZhRGlzcGxheSxcbiAgZmFGYWNlU21pbGUsXG4gIGZhU21pbGUsXG4gIGZhVGh1bWJ0YWNrLFxuICBmYVRodW1iVGFjayxcbiAgZmFUcm9waHksXG4gIGZhUGVyc29uUHJheWluZyxcbiAgZmFQcmF5LFxuICBmYUhhbW1lcixcbiAgZmFIYW5kUGVhY2UsXG4gIGZhUm90YXRlLFxuICBmYVN5bmNBbHQsXG4gIGZhU3Bpbm5lcixcbiAgZmFSb2JvdCxcbiAgZmFQZWFjZSxcbiAgZmFHZWFycyxcbiAgZmFDb2dzLFxuICBmYVdhcmVob3VzZSxcbiAgZmFBcnJvd1VwUmlnaHREb3RzLFxuICBmYVNwbG90Y2gsXG4gIGZhRmFjZUdyaW5IZWFydHMsXG4gIGZhR3JpbkhlYXJ0cyxcbiAgZmFEaWNlRm91cixcbiAgZmFTaW1DYXJkLFxuICBmYVRyYW5zZ2VuZGVyLFxuICBmYVRyYW5zZ2VuZGVyQWx0LFxuICBmYU1lcmN1cnksXG4gIGZhQXJyb3dUdXJuRG93bixcbiAgZmFMZXZlbERvd24sXG4gIGZhUGVyc29uRmFsbGluZ0J1cnN0LFxuICBmYUF3YXJkLFxuICBmYVRpY2tldFNpbXBsZSxcbiAgZmFUaWNrZXRBbHQsXG4gIGZhQnVpbGRpbmcsXG4gIGZhQW5nbGVzTGVmdCxcbiAgZmFBbmdsZURvdWJsZUxlZnQsXG4gIGZhUXJjb2RlLFxuICBmYUNsb2NrUm90YXRlTGVmdCxcbiAgZmFIaXN0b3J5LFxuICBmYUZhY2VHcmluQmVhbVN3ZWF0LFxuICBmYUdyaW5CZWFtU3dlYXQsXG4gIGZhRmlsZUV4cG9ydCxcbiAgZmFBcnJvd1JpZ2h0RnJvbUZpbGUsXG4gIGZhU2hpZWxkLFxuICBmYVNoaWVsZEJsYW5rLFxuICBmYUFycm93VXBTaG9ydFdpZGUsXG4gIGZhU29ydEFtb3VudFVwQWx0LFxuICBmYUhvdXNlTWVkaWNhbCxcbiAgZmFHb2xmQmFsbFRlZSxcbiAgZmFHb2xmQmFsbCxcbiAgZmFDaXJjbGVDaGV2cm9uTGVmdCxcbiAgZmFDaGV2cm9uQ2lyY2xlTGVmdCxcbiAgZmFIb3VzZUNoaW1uZXlXaW5kb3csXG4gIGZhUGVuTmliLFxuICBmYVRlbnRBcnJvd1R1cm5MZWZ0LFxuICBmYVRlbnRzLFxuICBmYVdhbmRNYWdpYyxcbiAgZmFNYWdpYyxcbiAgZmFEb2csXG4gIGZhQ2Fycm90LFxuICBmYU1vb24sXG4gIGZhV2luZUdsYXNzRW1wdHksXG4gIGZhV2luZUdsYXNzQWx0LFxuICBmYUNoZWVzZSxcbiAgZmFZaW5ZYW5nLFxuICBmYU11c2ljLFxuICBmYUNvZGVDb21taXQsXG4gIGZhVGVtcGVyYXR1cmVMb3csXG4gIGZhUGVyc29uQmlraW5nLFxuICBmYUJpa2luZyxcbiAgZmFCcm9vbSxcbiAgZmFTaGllbGRIZWFydCxcbiAgZmFHb3B1cmFtLFxuICBmYUVhcnRoT2NlYW5pYSxcbiAgZmFHbG9iZU9jZWFuaWEsXG4gIGZhU3F1YXJlWG1hcmssXG4gIGZhVGltZXNTcXVhcmUsXG4gIGZhWG1hcmtTcXVhcmUsXG4gIGZhSGFzaHRhZyxcbiAgZmFVcFJpZ2h0QW5kRG93bkxlZnRGcm9tQ2VudGVyLFxuICBmYUV4cGFuZEFsdCxcbiAgZmFPaWxDYW4sXG4gIGZhVCxcbiAgZmFIaXBwbyxcbiAgZmFDaGFydENvbHVtbixcbiAgZmFJbmZpbml0eSxcbiAgZmFWaWFsQ2lyY2xlQ2hlY2ssXG4gIGZhUGVyc29uQXJyb3dEb3duVG9MaW5lLFxuICBmYVZvaWNlbWFpbCxcbiAgZmFGYW4sXG4gIGZhUGVyc29uV2Fsa2luZ0x1Z2dhZ2UsXG4gIGZhVXBEb3duLFxuICBmYUFycm93c0FsdFYsXG4gIGZhQ2xvdWRNb29uUmFpbixcbiAgZmFDYWxlbmRhcixcbiAgZmFUcmFpbGVyLFxuICBmYUJhaGFpLFxuICBmYUhheWthbCxcbiAgZmFTZENhcmQsXG4gIGZhRHJhZ29uLFxuICBmYVNob2VQcmludHMsXG4gIGZhQ2lyY2xlUGx1cyxcbiAgZmFQbHVzQ2lyY2xlLFxuICBmYUZhY2VHcmluVG9uZ3VlV2luayxcbiAgZmFHcmluVG9uZ3VlV2luayxcbiAgZmFIYW5kSG9sZGluZyxcbiAgZmFQbHVnQ2lyY2xlRXhjbGFtYXRpb24sXG4gIGZhTGlua1NsYXNoLFxuICBmYUNoYWluQnJva2VuLFxuICBmYUNoYWluU2xhc2gsXG4gIGZhVW5saW5rLFxuICBmYUNsb25lLFxuICBmYVBlcnNvbldhbGtpbmdBcnJvd0xvb3BMZWZ0LFxuICBmYUFycm93VXBaQSxcbiAgZmFTb3J0QWxwaGFVcEFsdCxcbiAgZmFGaXJlRmxhbWVDdXJ2ZWQsXG4gIGZhRmlyZUFsdCxcbiAgZmFUb3JuYWRvLFxuICBmYUZpbGVDaXJjbGVQbHVzLFxuICBmYUJvb2tRdXJhbixcbiAgZmFRdXJhbixcbiAgZmFBbmNob3IsXG4gIGZhQm9yZGVyQWxsLFxuICBmYUZhY2VBbmdyeSxcbiAgZmFBbmdyeSxcbiAgZmFDb29raWVCaXRlLFxuICBmYUFycm93VHJlbmREb3duLFxuICBmYVJzcyxcbiAgZmFGZWVkLFxuICBmYURyYXdQb2x5Z29uLFxuICBmYVNjYWxlQmFsYW5jZWQsXG4gIGZhQmFsYW5jZVNjYWxlLFxuICBmYUdhdWdlU2ltcGxlSGlnaCxcbiAgZmFUYWNob21ldGVyLFxuICBmYVRhY2hvbWV0ZXJGYXN0LFxuICBmYVNob3dlcixcbiAgZmFEZXNrdG9wLFxuICBmYURlc2t0b3BBbHQsXG4gIGZhTSxcbiAgZmFUYWJsZUxpc3QsXG4gIGZhVGhMaXN0LFxuICBmYUNvbW1lbnRTbXMsXG4gIGZhU21zLFxuICBmYUJvb2ssXG4gIGZhVXNlclBsdXMsXG4gIGZhQ2hlY2ssXG4gIGZhQmF0dGVyeVRocmVlUXVhcnRlcnMsXG4gIGZhQmF0dGVyeTQsXG4gIGZhSG91c2VDaXJjbGVDaGVjayxcbiAgZmFBbmdsZUxlZnQsXG4gIGZhRGlhZ3JhbVN1Y2Nlc3NvcixcbiAgZmFUcnVja0Fycm93UmlnaHQsXG4gIGZhQXJyb3dzU3BsaXRVcEFuZExlZnQsXG4gIGZhSGFuZEZpc3QsXG4gIGZhRmlzdFJhaXNlZCxcbiAgZmFDbG91ZE1vb24sXG4gIGZhQnJpZWZjYXNlLFxuICBmYVBlcnNvbkZhbGxpbmcsXG4gIGZhSW1hZ2VQb3J0cmFpdCxcbiAgZmFQb3J0cmFpdCxcbiAgZmFVc2VyVGFnLFxuICBmYVJ1ZyxcbiAgZmFFYXJ0aEV1cm9wZSxcbiAgZmFHbG9iZUV1cm9wZSxcbiAgZmFDYXJ0RmxhdGJlZFN1aXRjYXNlLFxuICBmYUx1Z2dhZ2VDYXJ0LFxuICBmYVJlY3RhbmdsZVhtYXJrLFxuICBmYVJlY3RhbmdsZVRpbWVzLFxuICBmYVRpbWVzUmVjdGFuZ2xlLFxuICBmYVdpbmRvd0Nsb3NlLFxuICBmYUJhaHRTaWduLFxuICBmYUJvb2tPcGVuLFxuICBmYUJvb2tKb3VybmFsV2hpbGxzLFxuICBmYUpvdXJuYWxXaGlsbHMsXG4gIGZhSGFuZGN1ZmZzLFxuICBmYVRyaWFuZ2xlRXhjbGFtYXRpb24sXG4gIGZhRXhjbGFtYXRpb25UcmlhbmdsZSxcbiAgZmFXYXJuaW5nLFxuICBmYURhdGFiYXNlLFxuICBmYVNoYXJlLFxuICBmYU1haWxGb3J3YXJkLFxuICBmYUJvdHRsZURyb3BsZXQsXG4gIGZhTWFza0ZhY2UsXG4gIGZhSGlsbFJvY2tzbGlkZSxcbiAgZmFSaWdodExlZnQsXG4gIGZhRXhjaGFuZ2VBbHQsXG4gIGZhUGFwZXJQbGFuZSxcbiAgZmFSb2FkQ2lyY2xlRXhjbGFtYXRpb24sXG4gIGZhRHVuZ2VvbixcbiAgZmFBbGlnblJpZ2h0LFxuICBmYU1vbmV5QmlsbDFXYXZlLFxuICBmYU1vbmV5QmlsbFdhdmVBbHQsXG4gIGZhTGlmZVJpbmcsXG4gIGZhSGFuZHMsXG4gIGZhU2lnbkxhbmd1YWdlLFxuICBmYVNpZ25pbmcsXG4gIGZhQ2FsZW5kYXJEYXksXG4gIGZhV2F0ZXJMYWRkZXIsXG4gIGZhTGFkZGVyV2F0ZXIsXG4gIGZhU3dpbW1pbmdQb29sLFxuICBmYUFycm93c1VwRG93bixcbiAgZmFBcnJvd3NWLFxuICBmYUZhY2VHcmltYWNlLFxuICBmYUdyaW1hY2UsXG4gIGZhV2hlZWxjaGFpck1vdmUsXG4gIGZhV2hlZWxjaGFpckFsdCxcbiAgZmFUdXJuRG93bixcbiAgZmFMZXZlbERvd25BbHQsXG4gIGZhUGVyc29uV2Fsa2luZ0Fycm93UmlnaHQsXG4gIGZhU3F1YXJlRW52ZWxvcGUsXG4gIGZhRW52ZWxvcGVTcXVhcmUsXG4gIGZhRGljZSxcbiAgZmFCb3dsaW5nQmFsbCxcbiAgZmFCcmFpbixcbiAgZmFCYW5kYWdlLFxuICBmYUJhbmRBaWQsXG4gIGZhQ2FsZW5kYXJNaW51cyxcbiAgZmFDaXJjbGVYbWFyayxcbiAgZmFUaW1lc0NpcmNsZSxcbiAgZmFYbWFya0NpcmNsZSxcbiAgZmFHaWZ0cyxcbiAgZmFIb3RlbCxcbiAgZmFFYXJ0aEFzaWEsXG4gIGZhR2xvYmVBc2lhLFxuICBmYUlkQ2FyZENsaXAsXG4gIGZhSWRDYXJkQWx0LFxuICBmYU1hZ25pZnlpbmdHbGFzc1BsdXMsXG4gIGZhU2VhcmNoUGx1cyxcbiAgZmFUaHVtYnNVcCxcbiAgZmFVc2VyQ2xvY2ssXG4gIGZhSGFuZERvdHMsXG4gIGZhQWxsZXJnaWVzLFxuICBmYUZpbGVJbnZvaWNlLFxuICBmYVdpbmRvd01pbmltaXplLFxuICBmYU11Z1NhdWNlcixcbiAgZmFDb2ZmZWUsXG4gIGZhQnJ1c2gsXG4gIGZhTWFzayxcbiAgZmFNYWduaWZ5aW5nR2xhc3NNaW51cyxcbiAgZmFTZWFyY2hNaW51cyxcbiAgZmFSdWxlclZlcnRpY2FsLFxuICBmYVVzZXJMYXJnZSxcbiAgZmFVc2VyQWx0LFxuICBmYVRyYWluVHJhbSxcbiAgZmFVc2VyTnVyc2UsXG4gIGZhU3lyaW5nZSxcbiAgZmFDbG91ZFN1bixcbiAgZmFTdG9wd2F0Y2gyMCxcbiAgZmFTcXVhcmVGdWxsLFxuICBmYU1hZ25ldCxcbiAgZmFKYXIsXG4gIGZhTm90ZVN0aWNreSxcbiAgZmFTdGlja3lOb3RlLFxuICBmYUJ1Z1NsYXNoLFxuICBmYUFycm93VXBGcm9tV2F0ZXJQdW1wLFxuICBmYUJvbmUsXG4gIGZhVGFibGVDZWxsc1Jvd1VubG9jayxcbiAgZmFVc2VySW5qdXJlZCxcbiAgZmFGYWNlU2FkVGVhcixcbiAgZmFTYWRUZWFyLFxuICBmYVBsYW5lLFxuICBmYVRlbnRBcnJvd3NEb3duLFxuICBmYUV4Y2xhbWF0aW9uLFxuICBmYUFycm93c1NwaW4sXG4gIGZhUHJpbnQsXG4gIGZhVHVya2lzaExpcmFTaWduLFxuICBmYVRyeSxcbiAgZmFUdXJraXNoTGlyYSxcbiAgZmFEb2xsYXJTaWduLFxuICBmYURvbGxhcixcbiAgZmFVc2QsXG4gIGZhWCxcbiAgZmFNYWduaWZ5aW5nR2xhc3NEb2xsYXIsXG4gIGZhU2VhcmNoRG9sbGFyLFxuICBmYVVzZXJzR2VhcixcbiAgZmFVc2Vyc0NvZyxcbiAgZmFQZXJzb25NaWxpdGFyeVBvaW50aW5nLFxuICBmYUJ1aWxkaW5nQ29sdW1ucyxcbiAgZmFCYW5rLFxuICBmYUluc3RpdHV0aW9uLFxuICBmYU11c2V1bSxcbiAgZmFVbml2ZXJzaXR5LFxuICBmYVVtYnJlbGxhLFxuICBmYVRyb3dlbCxcbiAgZmFELFxuICBmYVN0YXBsZXIsXG4gIGZhTWFza3NUaGVhdGVyLFxuICBmYVRoZWF0ZXJNYXNrcyxcbiAgZmFLaXBTaWduLFxuICBmYUhhbmRQb2ludExlZnQsXG4gIGZhSGFuZHNoYWtlU2ltcGxlLFxuICBmYUhhbmRzaGFrZUFsdCxcbiAgZmFKZXRGaWdodGVyLFxuICBmYUZpZ2h0ZXJKZXQsXG4gIGZhU3F1YXJlU2hhcmVOb2RlcyxcbiAgZmFTaGFyZUFsdFNxdWFyZSxcbiAgZmFCYXJjb2RlLFxuICBmYVBsdXNNaW51cyxcbiAgZmFWaWRlbyxcbiAgZmFWaWRlb0NhbWVyYSxcbiAgZmFHcmFkdWF0aW9uQ2FwLFxuICBmYU1vcnRhckJvYXJkLFxuICBmYUhhbmRIb2xkaW5nTWVkaWNhbCxcbiAgZmFQZXJzb25DaXJjbGVDaGVjayxcbiAgZmFUdXJuVXAsXG4gIGZhTGV2ZWxVcEFsdFxufTtcblxuZXhwb3J0IHsgaWNvbnMgYXMgZmFzLCBwcmVmaXgsIGZhMCwgZmExLCBmYTIsIGZhMywgZmE0LCBmYTUsIGZhNiwgZmE3LCBmYTgsIGZhOSwgZmFGaWxsRHJpcCwgZmFBcnJvd3NUb0NpcmNsZSwgZmFDaXJjbGVDaGV2cm9uUmlnaHQsIGZhQ2hldnJvbkNpcmNsZVJpZ2h0LCBmYUF0LCBmYVRyYXNoQ2FuLCBmYVRyYXNoQWx0LCBmYVRleHRIZWlnaHQsIGZhVXNlclhtYXJrLCBmYVVzZXJUaW1lcywgZmFTdGV0aG9zY29wZSwgZmFNZXNzYWdlLCBmYUNvbW1lbnRBbHQsIGZhSW5mbywgZmFEb3duTGVmdEFuZFVwUmlnaHRUb0NlbnRlciwgZmFDb21wcmVzc0FsdCwgZmFFeHBsb3Npb24sIGZhRmlsZUxpbmVzLCBmYUZpbGVBbHQsIGZhRmlsZVRleHQsIGZhV2F2ZVNxdWFyZSwgZmFSaW5nLCBmYUJ1aWxkaW5nVW4sIGZhRGljZVRocmVlLCBmYUNhbGVuZGFyRGF5cywgZmFDYWxlbmRhckFsdCwgZmFBbmNob3JDaXJjbGVDaGVjaywgZmFCdWlsZGluZ0NpcmNsZUFycm93UmlnaHQsIGZhVm9sbGV5YmFsbCwgZmFWb2xsZXliYWxsQmFsbCwgZmFBcnJvd3NVcFRvTGluZSwgZmFTb3J0RG93biwgZmFTb3J0RGVzYywgZmFDaXJjbGVNaW51cywgZmFNaW51c0NpcmNsZSwgZmFEb29yT3BlbiwgZmFSaWdodEZyb21CcmFja2V0LCBmYVNpZ25PdXRBbHQsIGZhQXRvbSwgZmFTb2FwLCBmYUljb25zLCBmYUhlYXJ0TXVzaWNDYW1lcmFCb2x0LCBmYU1pY3JvcGhvbmVMaW5lc1NsYXNoLCBmYU1pY3JvcGhvbmVBbHRTbGFzaCwgZmFCcmlkZ2VDaXJjbGVDaGVjaywgZmFQdW1wTWVkaWNhbCwgZmFGaW5nZXJwcmludCwgZmFIYW5kUG9pbnRSaWdodCwgZmFNYWduaWZ5aW5nR2xhc3NMb2NhdGlvbiwgZmFTZWFyY2hMb2NhdGlvbiwgZmFGb3J3YXJkU3RlcCwgZmFTdGVwRm9yd2FyZCwgZmFGYWNlU21pbGVCZWFtLCBmYVNtaWxlQmVhbSwgZmFGbGFnQ2hlY2tlcmVkLCBmYUZvb3RiYWxsLCBmYUZvb3RiYWxsQmFsbCwgZmFTY2hvb2xDaXJjbGVFeGNsYW1hdGlvbiwgZmFDcm9wLCBmYUFuZ2xlc0Rvd24sIGZhQW5nbGVEb3VibGVEb3duLCBmYVVzZXJzUmVjdGFuZ2xlLCBmYVBlb3BsZVJvb2YsIGZhUGVvcGxlTGluZSwgZmFCZWVyTXVnRW1wdHksIGZhQmVlciwgZmFEaWFncmFtUHJlZGVjZXNzb3IsIGZhQXJyb3dVcExvbmcsIGZhTG9uZ0Fycm93VXAsIGZhRmlyZUZsYW1lU2ltcGxlLCBmYUJ1cm4sIGZhUGVyc29uLCBmYU1hbGUsIGZhTGFwdG9wLCBmYUZpbGVDc3YsIGZhTWVub3JhaCwgZmFUcnVja1BsYW5lLCBmYVJlY29yZFZpbnlsLCBmYUZhY2VHcmluU3RhcnMsIGZhR3JpblN0YXJzLCBmYUJvbmcsIGZhU3BhZ2hldHRpTW9uc3RlckZseWluZywgZmFQYXN0YWZhcmlhbmlzbSwgZmFBcnJvd0Rvd25VcEFjcm9zc0xpbmUsIGZhU3Bvb24sIGZhVXRlbnNpbFNwb29uLCBmYUphcldoZWF0LCBmYUVudmVsb3Blc0J1bGssIGZhTWFpbEJ1bGssIGZhRmlsZUNpcmNsZUV4Y2xhbWF0aW9uLCBmYUNpcmNsZUgsIGZhSG9zcGl0YWxTeW1ib2wsIGZhUGFnZXIsIGZhQWRkcmVzc0Jvb2ssIGZhQ29udGFjdEJvb2ssIGZhU3RyaWtldGhyb3VnaCwgZmFLLCBmYUxhbmRtYXJrRmxhZywgZmFQZW5jaWwsIGZhUGVuY2lsQWx0LCBmYUJhY2t3YXJkLCBmYUNhcmV0UmlnaHQsIGZhQ29tbWVudHMsIGZhUGFzdGUsIGZhRmlsZUNsaXBib2FyZCwgZmFDb2RlUHVsbFJlcXVlc3QsIGZhQ2xpcGJvYXJkTGlzdCwgZmFUcnVja1JhbXBCb3gsIGZhVHJ1Y2tMb2FkaW5nLCBmYVVzZXJDaGVjaywgZmFWaWFsVmlydXMsIGZhU2hlZXRQbGFzdGljLCBmYUJsb2csIGZhVXNlck5pbmphLCBmYVBlcnNvbkFycm93VXBGcm9tTGluZSwgZmFTY3JvbGxUb3JhaCwgZmFUb3JhaCwgZmFCcm9vbUJhbGwsIGZhUXVpZGRpdGNoLCBmYVF1aWRkaXRjaEJyb29tQmFsbCwgZmFUb2dnbGVPZmYsIGZhQm94QXJjaGl2ZSwgZmFBcmNoaXZlLCBmYVBlcnNvbkRyb3duaW5nLCBmYUFycm93RG93bjkxLCBmYVNvcnROdW1lcmljRGVzYywgZmFTb3J0TnVtZXJpY0Rvd25BbHQsIGZhRmFjZUdyaW5Ub25ndWVTcXVpbnQsIGZhR3JpblRvbmd1ZVNxdWludCwgZmFTcHJheUNhbiwgZmFUcnVja01vbnN0ZXIsIGZhVywgZmFFYXJ0aEFmcmljYSwgZmFHbG9iZUFmcmljYSwgZmFSYWluYm93LCBmYUNpcmNsZU5vdGNoLCBmYVRhYmxldFNjcmVlbkJ1dHRvbiwgZmFUYWJsZXRBbHQsIGZhUGF3LCBmYUNsb3VkLCBmYVRyb3dlbEJyaWNrcywgZmFGYWNlRmx1c2hlZCwgZmFGbHVzaGVkLCBmYUhvc3BpdGFsVXNlciwgZmFUZW50QXJyb3dMZWZ0UmlnaHQsIGZhR2F2ZWwsIGZhTGVnYWwsIGZhQmlub2N1bGFycywgZmFNaWNyb3Bob25lU2xhc2gsIGZhQm94VGlzc3VlLCBmYU1vdG9yY3ljbGUsIGZhQmVsbENvbmNpZXJnZSwgZmFDb25jaWVyZ2VCZWxsLCBmYVBlblJ1bGVyLCBmYVBlbmNpbFJ1bGVyLCBmYVBlb3BsZUFycm93cywgZmFQZW9wbGVBcnJvd3NMZWZ0UmlnaHQsIGZhTWFyc0FuZFZlbnVzQnVyc3QsIGZhU3F1YXJlQ2FyZXRSaWdodCwgZmFDYXJldFNxdWFyZVJpZ2h0LCBmYVNjaXNzb3JzLCBmYUN1dCwgZmFTdW5QbGFudFdpbHQsIGZhVG9pbGV0c1BvcnRhYmxlLCBmYUhvY2tleVB1Y2ssIGZhVGFibGUsIGZhTWFnbmlmeWluZ0dsYXNzQXJyb3dSaWdodCwgZmFUYWNob2dyYXBoRGlnaXRhbCwgZmFEaWdpdGFsVGFjaG9ncmFwaCwgZmFVc2Vyc1NsYXNoLCBmYUNsb3ZlciwgZmFSZXBseSwgZmFNYWlsUmVwbHksIGZhU3RhckFuZENyZXNjZW50LCBmYUhvdXNlRmlyZSwgZmFTcXVhcmVNaW51cywgZmFNaW51c1NxdWFyZSwgZmFIZWxpY29wdGVyLCBmYUNvbXBhc3MsIGZhU3F1YXJlQ2FyZXREb3duLCBmYUNhcmV0U3F1YXJlRG93biwgZmFGaWxlQ2lyY2xlUXVlc3Rpb24sIGZhTGFwdG9wQ29kZSwgZmFTd2F0Y2hib29rLCBmYVByZXNjcmlwdGlvbkJvdHRsZSwgZmFCYXJzLCBmYU5hdmljb24sIGZhUGVvcGxlR3JvdXAsIGZhSG91cmdsYXNzRW5kLCBmYUhvdXJnbGFzczMsIGZhSGVhcnRDcmFjaywgZmFIZWFydEJyb2tlbiwgZmFTcXVhcmVVcFJpZ2h0LCBmYUV4dGVybmFsTGlua1NxdWFyZUFsdCwgZmFGYWNlS2lzc0JlYW0sIGZhS2lzc0JlYW0sIGZhRmlsbSwgZmFSdWxlckhvcml6b250YWwsIGZhUGVvcGxlUm9iYmVyeSwgZmFMaWdodGJ1bGIsIGZhQ2FyZXRMZWZ0LCBmYUNpcmNsZUV4Y2xhbWF0aW9uLCBmYUV4Y2xhbWF0aW9uQ2lyY2xlLCBmYVNjaG9vbENpcmNsZVhtYXJrLCBmYUFycm93UmlnaHRGcm9tQnJhY2tldCwgZmFTaWduT3V0LCBmYUNpcmNsZUNoZXZyb25Eb3duLCBmYUNoZXZyb25DaXJjbGVEb3duLCBmYVVubG9ja0tleWhvbGUsIGZhVW5sb2NrQWx0LCBmYUNsb3VkU2hvd2Vyc0hlYXZ5LCBmYUhlYWRwaG9uZXNTaW1wbGUsIGZhSGVhZHBob25lc0FsdCwgZmFTaXRlbWFwLCBmYUNpcmNsZURvbGxhclRvU2xvdCwgZmFEb25hdGUsIGZhTWVtb3J5LCBmYVJvYWRTcGlrZXMsIGZhRmlyZUJ1cm5lciwgZmFGbGFnLCBmYUhhbnVraWFoLCBmYUZlYXRoZXIsIGZhVm9sdW1lTG93LCBmYVZvbHVtZURvd24sIGZhQ29tbWVudFNsYXNoLCBmYUNsb3VkU3VuUmFpbiwgZmFDb21wcmVzcywgZmFXaGVhdEF3biwgZmFXaGVhdEFsdCwgZmFBbmtoLCBmYUhhbmRzSG9sZGluZ0NoaWxkLCBmYUFzdGVyaXNrLCBmYVNxdWFyZUNoZWNrLCBmYUNoZWNrU3F1YXJlLCBmYVBlc2V0YVNpZ24sIGZhSGVhZGluZywgZmFIZWFkZXIsIGZhR2hvc3QsIGZhTGlzdCwgZmFMaXN0U3F1YXJlcywgZmFTcXVhcmVQaG9uZUZsaXAsIGZhUGhvbmVTcXVhcmVBbHQsIGZhQ2FydFBsdXMsIGZhR2FtZXBhZCwgZmFDaXJjbGVEb3QsIGZhRG90Q2lyY2xlLCBmYUZhY2VEaXp6eSwgZmFEaXp6eSwgZmFFZ2csIGZhSG91c2VNZWRpY2FsQ2lyY2xlWG1hcmssIGZhQ2FtcGdyb3VuZCwgZmFGb2xkZXJQbHVzLCBmYUZ1dGJvbCwgZmFGdXRib2xCYWxsLCBmYVNvY2NlckJhbGwsIGZhUGFpbnRicnVzaCwgZmFQYWludEJydXNoLCBmYUxvY2ssIGZhR2FzUHVtcCwgZmFIb3RUdWJQZXJzb24sIGZhSG90VHViLCBmYU1hcExvY2F0aW9uLCBmYU1hcE1hcmtlZCwgZmFIb3VzZUZsb29kV2F0ZXIsIGZhVHJlZSwgZmFCcmlkZ2VMb2NrLCBmYVNhY2tEb2xsYXIsIGZhUGVuVG9TcXVhcmUsIGZhRWRpdCwgZmFDYXJTaWRlLCBmYVNoYXJlTm9kZXMsIGZhU2hhcmVBbHQsIGZhSGVhcnRDaXJjbGVNaW51cywgZmFIb3VyZ2xhc3NIYWxmLCBmYUhvdXJnbGFzczIsIGZhTWljcm9zY29wZSwgZmFTaW5rLCBmYUJhZ1Nob3BwaW5nLCBmYVNob3BwaW5nQmFnLCBmYUFycm93RG93blpBLCBmYVNvcnRBbHBoYURlc2MsIGZhU29ydEFscGhhRG93bkFsdCwgZmFNaXR0ZW4sIGZhUGVyc29uUmF5cywgZmFVc2VycywgZmFFeWVTbGFzaCwgZmFGbGFza1ZpYWwsIGZhSGFuZCwgZmFIYW5kUGFwZXIsIGZhT20sIGZhV29ybSwgZmFIb3VzZUNpcmNsZVhtYXJrLCBmYVBsdWcsIGZhQ2hldnJvblVwLCBmYUhhbmRTcG9jaywgZmFTdG9wd2F0Y2gsIGZhRmFjZUtpc3MsIGZhS2lzcywgZmFCcmlkZ2VDaXJjbGVYbWFyaywgZmFGYWNlR3JpblRvbmd1ZSwgZmFHcmluVG9uZ3VlLCBmYUNoZXNzQmlzaG9wLCBmYUZhY2VHcmluV2luaywgZmFHcmluV2luaywgZmFFYXJEZWFmLCBmYURlYWYsIGZhRGVhZm5lc3MsIGZhSGFyZE9mSGVhcmluZywgZmFSb2FkQ2lyY2xlQ2hlY2ssIGZhRGljZUZpdmUsIGZhU3F1YXJlUnNzLCBmYVJzc1NxdWFyZSwgZmFMYW5kTWluZU9uLCBmYUlDdXJzb3IsIGZhU3RhbXAsIGZhU3RhaXJzLCBmYUksIGZhSHJ5dm5pYVNpZ24sIGZhSHJ5dm5pYSwgZmFQaWxscywgZmFGYWNlR3JpbldpZGUsIGZhR3JpbkFsdCwgZmFUb290aCwgZmFWLCBmYUJhbmdsYWRlc2hpVGFrYVNpZ24sIGZhQmljeWNsZSwgZmFTdGFmZlNuYWtlLCBmYVJvZEFzY2xlcGl1cywgZmFSb2RTbmFrZSwgZmFTdGFmZkFlc2N1bGFwaXVzLCBmYUhlYWRTaWRlQ291Z2hTbGFzaCwgZmFUcnVja01lZGljYWwsIGZhQW1idWxhbmNlLCBmYVdoZWF0QXduQ2lyY2xlRXhjbGFtYXRpb24sIGZhU25vd21hbiwgZmFNb3J0YXJQZXN0bGUsIGZhUm9hZEJhcnJpZXIsIGZhU2Nob29sLCBmYUlnbG9vLCBmYUpvaW50LCBmYUFuZ2xlUmlnaHQsIGZhSG9yc2UsIGZhUSwgZmFHLCBmYU5vdGVzTWVkaWNhbCwgZmFUZW1wZXJhdHVyZUhhbGYsIGZhVGVtcGVyYXR1cmUyLCBmYVRoZXJtb21ldGVyMiwgZmFUaGVybW9tZXRlckhhbGYsIGZhRG9uZ1NpZ24sIGZhQ2Fwc3VsZXMsIGZhUG9vU3Rvcm0sIGZhUG9vQm9sdCwgZmFGYWNlRnJvd25PcGVuLCBmYUZyb3duT3BlbiwgZmFIYW5kUG9pbnRVcCwgZmFNb25leUJpbGwsIGZhQm9va21hcmssIGZhQWxpZ25KdXN0aWZ5LCBmYVVtYnJlbGxhQmVhY2gsIGZhSGVsbWV0VW4sIGZhQnVsbHNleWUsIGZhQmFjb24sIGZhSGFuZFBvaW50RG93biwgZmFBcnJvd1VwRnJvbUJyYWNrZXQsIGZhRm9sZGVyLCBmYUZvbGRlckJsYW5rLCBmYUZpbGVXYXZlZm9ybSwgZmFGaWxlTWVkaWNhbEFsdCwgZmFSYWRpYXRpb24sIGZhQ2hhcnRTaW1wbGUsIGZhTWFyc1N0cm9rZSwgZmFWaWFsLCBmYUdhdWdlLCBmYURhc2hib2FyZCwgZmFHYXVnZU1lZCwgZmFUYWNob21ldGVyQWx0QXZlcmFnZSwgZmFXYW5kTWFnaWNTcGFya2xlcywgZmFNYWdpY1dhbmRTcGFya2xlcywgZmFFLCBmYVBlbkNsaXAsIGZhUGVuQWx0LCBmYUJyaWRnZUNpcmNsZUV4Y2xhbWF0aW9uLCBmYVVzZXIsIGZhU2Nob29sQ2lyY2xlQ2hlY2ssIGZhRHVtcHN0ZXIsIGZhVmFuU2h1dHRsZSwgZmFTaHV0dGxlVmFuLCBmYUJ1aWxkaW5nVXNlciwgZmFTcXVhcmVDYXJldExlZnQsIGZhQ2FyZXRTcXVhcmVMZWZ0LCBmYUhpZ2hsaWdodGVyLCBmYUtleSwgZmFCdWxsaG9ybiwgZmFHbG9iZSwgZmFTeW5hZ29ndWUsIGZhUGVyc29uSGFsZkRyZXNzLCBmYVJvYWRCcmlkZ2UsIGZhTG9jYXRpb25BcnJvdywgZmFDLCBmYVRhYmxldEJ1dHRvbiwgZmFCdWlsZGluZ0xvY2ssIGZhUGl6emFTbGljZSwgZmFNb25leUJpbGxXYXZlLCBmYUNoYXJ0QXJlYSwgZmFBcmVhQ2hhcnQsIGZhSG91c2VGbGFnLCBmYVBlcnNvbkNpcmNsZU1pbnVzLCBmYUJhbiwgZmFDYW5jZWwsIGZhQ2FtZXJhUm90YXRlLCBmYVNwcmF5Q2FuU3BhcmtsZXMsIGZhQWlyRnJlc2hlbmVyLCBmYVN0YXIsIGZhUmVwZWF0LCBmYUNyb3NzLCBmYUJveCwgZmFWZW51c01hcnMsIGZhQXJyb3dQb2ludGVyLCBmYU1vdXNlUG9pbnRlciwgZmFNYXhpbWl6ZSwgZmFFeHBhbmRBcnJvd3NBbHQsIGZhQ2hhcmdpbmdTdGF0aW9uLCBmYVNoYXBlcywgZmFUcmlhbmdsZUNpcmNsZVNxdWFyZSwgZmFTaHVmZmxlLCBmYVJhbmRvbSwgZmFQZXJzb25SdW5uaW5nLCBmYVJ1bm5pbmcsIGZhTW9iaWxlUmV0cm8sIGZhR3JpcExpbmVzVmVydGljYWwsIGZhU3BpZGVyLCBmYUhhbmRzQm91bmQsIGZhRmlsZUludm9pY2VEb2xsYXIsIGZhUGxhbmVDaXJjbGVFeGNsYW1hdGlvbiwgZmFYUmF5LCBmYVNwZWxsQ2hlY2ssIGZhU2xhc2gsIGZhQ29tcHV0ZXJNb3VzZSwgZmFNb3VzZSwgZmFBcnJvd1JpZ2h0VG9CcmFja2V0LCBmYVNpZ25JbiwgZmFTaG9wU2xhc2gsIGZhU3RvcmVBbHRTbGFzaCwgZmFTZXJ2ZXIsIGZhVmlydXNDb3ZpZFNsYXNoLCBmYVNob3BMb2NrLCBmYUhvdXJnbGFzc1N0YXJ0LCBmYUhvdXJnbGFzczEsIGZhQmxlbmRlclBob25lLCBmYUJ1aWxkaW5nV2hlYXQsIGZhUGVyc29uQnJlYXN0ZmVlZGluZywgZmFSaWdodFRvQnJhY2tldCwgZmFTaWduSW5BbHQsIGZhVmVudXMsIGZhUGFzc3BvcnQsIGZhVGh1bWJ0YWNrU2xhc2gsIGZhVGh1bWJUYWNrU2xhc2gsIGZhSGVhcnRQdWxzZSwgZmFIZWFydGJlYXQsIGZhUGVvcGxlQ2FycnlCb3gsIGZhUGVvcGxlQ2FycnksIGZhVGVtcGVyYXR1cmVIaWdoLCBmYU1pY3JvY2hpcCwgZmFDcm93biwgZmFXZWlnaHRIYW5naW5nLCBmYVhtYXJrc0xpbmVzLCBmYUZpbGVQcmVzY3JpcHRpb24sIGZhV2VpZ2h0U2NhbGUsIGZhV2VpZ2h0LCBmYVVzZXJHcm91cCwgZmFVc2VyRnJpZW5kcywgZmFBcnJvd1VwQVosIGZhU29ydEFscGhhVXAsIGZhQ2hlc3NLbmlnaHQsIGZhRmFjZUxhdWdoU3F1aW50LCBmYUxhdWdoU3F1aW50LCBmYVdoZWVsY2hhaXIsIGZhQ2lyY2xlQXJyb3dVcCwgZmFBcnJvd0NpcmNsZVVwLCBmYVRvZ2dsZU9uLCBmYVBlcnNvbldhbGtpbmcsIGZhV2Fsa2luZywgZmFMLCBmYUZpcmUsIGZhQmVkUHVsc2UsIGZhUHJvY2VkdXJlcywgZmFTaHV0dGxlU3BhY2UsIGZhU3BhY2VTaHV0dGxlLCBmYUZhY2VMYXVnaCwgZmFMYXVnaCwgZmFGb2xkZXJPcGVuLCBmYUhlYXJ0Q2lyY2xlUGx1cywgZmFDb2RlRm9yaywgZmFDaXR5LCBmYU1pY3JvcGhvbmVMaW5lcywgZmFNaWNyb3Bob25lQWx0LCBmYVBlcHBlckhvdCwgZmFVbmxvY2ssIGZhQ29sb25TaWduLCBmYUhlYWRzZXQsIGZhU3RvcmVTbGFzaCwgZmFSb2FkQ2lyY2xlWG1hcmssIGZhVXNlck1pbnVzLCBmYU1hcnNTdHJva2VVcCwgZmFNYXJzU3Ryb2tlViwgZmFDaGFtcGFnbmVHbGFzc2VzLCBmYUdsYXNzQ2hlZXJzLCBmYUNsaXBib2FyZCwgZmFIb3VzZUNpcmNsZUV4Y2xhbWF0aW9uLCBmYUZpbGVBcnJvd1VwLCBmYUZpbGVVcGxvYWQsIGZhV2lmaSwgZmFXaWZpMywgZmFXaWZpU3Ryb25nLCBmYUJhdGgsIGZhQmF0aHR1YiwgZmFVbmRlcmxpbmUsIGZhVXNlclBlbiwgZmFVc2VyRWRpdCwgZmFTaWduYXR1cmUsIGZhU3Ryb29wd2FmZWwsIGZhQm9sZCwgZmFBbmNob3JMb2NrLCBmYUJ1aWxkaW5nTmdvLCBmYU1hbmF0U2lnbiwgZmFOb3RFcXVhbCwgZmFCb3JkZXJUb3BMZWZ0LCBmYUJvcmRlclN0eWxlLCBmYU1hcExvY2F0aW9uRG90LCBmYU1hcE1hcmtlZEFsdCwgZmFKZWRpLCBmYVNxdWFyZVBvbGxWZXJ0aWNhbCwgZmFQb2xsLCBmYU11Z0hvdCwgZmFDYXJCYXR0ZXJ5LCBmYUJhdHRlcnlDYXIsIGZhR2lmdCwgZmFEaWNlVHdvLCBmYUNoZXNzUXVlZW4sIGZhR2xhc3NlcywgZmFDaGVzc0JvYXJkLCBmYUJ1aWxkaW5nQ2lyY2xlQ2hlY2ssIGZhUGVyc29uQ2hhbGtib2FyZCwgZmFNYXJzU3Ryb2tlUmlnaHQsIGZhTWFyc1N0cm9rZUgsIGZhSGFuZEJhY2tGaXN0LCBmYUhhbmRSb2NrLCBmYVNxdWFyZUNhcmV0VXAsIGZhQ2FyZXRTcXVhcmVVcCwgZmFDbG91ZFNob3dlcnNXYXRlciwgZmFDaGFydEJhciwgZmFCYXJDaGFydCwgZmFIYW5kc0J1YmJsZXMsIGZhSGFuZHNXYXNoLCBmYUxlc3NUaGFuRXF1YWwsIGZhVHJhaW4sIGZhRXllTG93VmlzaW9uLCBmYUxvd1Zpc2lvbiwgZmFDcm93LCBmYVNhaWxib2F0LCBmYVdpbmRvd1Jlc3RvcmUsIGZhU3F1YXJlUGx1cywgZmFQbHVzU3F1YXJlLCBmYVRvcmlpR2F0ZSwgZmFGcm9nLCBmYUJ1Y2tldCwgZmFJbWFnZSwgZmFNaWNyb3Bob25lLCBmYUNvdywgZmFDYXJldFVwLCBmYVNjcmV3ZHJpdmVyLCBmYUZvbGRlckNsb3NlZCwgZmFIb3VzZVRzdW5hbWksIGZhU3F1YXJlTmZpLCBmYUFycm93VXBGcm9tR3JvdW5kV2F0ZXIsIGZhTWFydGluaUdsYXNzLCBmYUdsYXNzTWFydGluaUFsdCwgZmFSb3RhdGVMZWZ0LCBmYVJvdGF0ZUJhY2ssIGZhUm90YXRlQmFja3dhcmQsIGZhVW5kb0FsdCwgZmFUYWJsZUNvbHVtbnMsIGZhQ29sdW1ucywgZmFMZW1vbiwgZmFIZWFkU2lkZU1hc2ssIGZhSGFuZHNoYWtlLCBmYUdlbSwgZmFEb2xseSwgZmFEb2xseUJveCwgZmFTbW9raW5nLCBmYU1pbmltaXplLCBmYUNvbXByZXNzQXJyb3dzQWx0LCBmYU1vbnVtZW50LCBmYVNub3dwbG93LCBmYUFuZ2xlc1JpZ2h0LCBmYUFuZ2xlRG91YmxlUmlnaHQsIGZhQ2FubmFiaXMsIGZhQ2lyY2xlUGxheSwgZmFQbGF5Q2lyY2xlLCBmYVRhYmxldHMsIGZhRXRoZXJuZXQsIGZhRXVyb1NpZ24sIGZhRXVyLCBmYUV1cm8sIGZhQ2hhaXIsIGZhQ2lyY2xlQ2hlY2ssIGZhQ2hlY2tDaXJjbGUsIGZhQ2lyY2xlU3RvcCwgZmFTdG9wQ2lyY2xlLCBmYUNvbXBhc3NEcmFmdGluZywgZmFEcmFmdGluZ0NvbXBhc3MsIGZhUGxhdGVXaGVhdCwgZmFJY2ljbGVzLCBmYVBlcnNvblNoZWx0ZXIsIGZhTmV1dGVyLCBmYUlkQmFkZ2UsIGZhTWFya2VyLCBmYUZhY2VMYXVnaEJlYW0sIGZhTGF1Z2hCZWFtLCBmYUhlbGljb3B0ZXJTeW1ib2wsIGZhVW5pdmVyc2FsQWNjZXNzLCBmYUNpcmNsZUNoZXZyb25VcCwgZmFDaGV2cm9uQ2lyY2xlVXAsIGZhTGFyaVNpZ24sIGZhVm9sY2FubywgZmFQZXJzb25XYWxraW5nRGFzaGVkTGluZUFycm93UmlnaHQsIGZhU3RlcmxpbmdTaWduLCBmYUdicCwgZmFQb3VuZFNpZ24sIGZhVmlydXNlcywgZmFTcXVhcmVQZXJzb25Db25maW5lZCwgZmFVc2VyVGllLCBmYUFycm93RG93bkxvbmcsIGZhTG9uZ0Fycm93RG93biwgZmFUZW50QXJyb3dEb3duVG9MaW5lLCBmYUNlcnRpZmljYXRlLCBmYVJlcGx5QWxsLCBmYU1haWxSZXBseUFsbCwgZmFTdWl0Y2FzZSwgZmFQZXJzb25Ta2F0aW5nLCBmYVNrYXRpbmcsIGZhRmlsdGVyQ2lyY2xlRG9sbGFyLCBmYUZ1bm5lbERvbGxhciwgZmFDYW1lcmFSZXRybywgZmFDaXJjbGVBcnJvd0Rvd24sIGZhQXJyb3dDaXJjbGVEb3duLCBmYUZpbGVJbXBvcnQsIGZhQXJyb3dSaWdodFRvRmlsZSwgZmFTcXVhcmVBcnJvd1VwUmlnaHQsIGZhRXh0ZXJuYWxMaW5rU3F1YXJlLCBmYUJveE9wZW4sIGZhU2Nyb2xsLCBmYVNwYSwgZmFMb2NhdGlvblBpbkxvY2ssIGZhUGF1c2UsIGZhSGlsbEF2YWxhbmNoZSwgZmFUZW1wZXJhdHVyZUVtcHR5LCBmYVRlbXBlcmF0dXJlMCwgZmFUaGVybW9tZXRlcjAsIGZhVGhlcm1vbWV0ZXJFbXB0eSwgZmFCb21iLCBmYVJlZ2lzdGVyZWQsIGZhQWRkcmVzc0NhcmQsIGZhQ29udGFjdENhcmQsIGZhVmNhcmQsIGZhU2NhbGVVbmJhbGFuY2VkRmxpcCwgZmFCYWxhbmNlU2NhbGVSaWdodCwgZmFTdWJzY3JpcHQsIGZhRGlhbW9uZFR1cm5SaWdodCwgZmFEaXJlY3Rpb25zLCBmYUJ1cnN0LCBmYUhvdXNlTGFwdG9wLCBmYUxhcHRvcEhvdXNlLCBmYUZhY2VUaXJlZCwgZmFUaXJlZCwgZmFNb25leUJpbGxzLCBmYVNtb2csIGZhQ3J1dGNoLCBmYUZvbnRBd2Vzb21lLCBmYUZvbnRBd2Vzb21lRmxhZywgZmFGb250QXdlc29tZUxvZ29GdWxsLCBmYUNsb3VkQXJyb3dVcCwgZmFDbG91ZFVwbG9hZCwgZmFDbG91ZFVwbG9hZEFsdCwgZmFQYWxldHRlLCBmYUFycm93c1R1cm5SaWdodCwgZmFWZXN0LCBmYUZlcnJ5LCBmYUFycm93c0Rvd25Ub1Blb3BsZSwgZmFTZWVkbGluZywgZmFTcHJvdXQsIGZhTGVmdFJpZ2h0LCBmYUFycm93c0FsdEgsIGZhQm94ZXNQYWNraW5nLCBmYUNpcmNsZUFycm93TGVmdCwgZmFBcnJvd0NpcmNsZUxlZnQsIGZhR3JvdXBBcnJvd3NSb3RhdGUsIGZhQm93bEZvb2QsIGZhQ2FuZHlDYW5lLCBmYUFycm93RG93bldpZGVTaG9ydCwgZmFTb3J0QW1vdW50QXNjLCBmYVNvcnRBbW91bnREb3duLCBmYUNsb3VkQm9sdCwgZmFUaHVuZGVyc3Rvcm0sIGZhVGV4dFNsYXNoLCBmYVJlbW92ZUZvcm1hdCwgZmFGYWNlU21pbGVXaW5rLCBmYVNtaWxlV2luaywgZmFGaWxlV29yZCwgZmFGaWxlUG93ZXJwb2ludCwgZmFBcnJvd3NMZWZ0UmlnaHQsIGZhQXJyb3dzSCwgZmFIb3VzZUxvY2ssIGZhQ2xvdWRBcnJvd0Rvd24sIGZhQ2xvdWREb3dubG9hZCwgZmFDbG91ZERvd25sb2FkQWx0LCBmYUNoaWxkcmVuLCBmYUNoYWxrYm9hcmQsIGZhQmxhY2tib2FyZCwgZmFVc2VyTGFyZ2VTbGFzaCwgZmFVc2VyQWx0U2xhc2gsIGZhRW52ZWxvcGVPcGVuLCBmYUhhbmRzaGFrZVNpbXBsZVNsYXNoLCBmYUhhbmRzaGFrZUFsdFNsYXNoLCBmYU1hdHRyZXNzUGlsbG93LCBmYUd1YXJhbmlTaWduLCBmYUFycm93c1JvdGF0ZSwgZmFSZWZyZXNoLCBmYVN5bmMsIGZhRmlyZUV4dGluZ3Vpc2hlciwgZmFDcnV6ZWlyb1NpZ24sIGZhR3JlYXRlclRoYW5FcXVhbCwgZmFTaGllbGRIYWx2ZWQsIGZhU2hpZWxkQWx0LCBmYUJvb2tBdGxhcywgZmFBdGxhcywgZmFWaXJ1cywgZmFFbnZlbG9wZUNpcmNsZUNoZWNrLCBmYUxheWVyR3JvdXAsIGZhQXJyb3dzVG9Eb3QsIGZhQXJjaHdheSwgZmFIZWFydENpcmNsZUNoZWNrLCBmYUhvdXNlQ2hpbW5leUNyYWNrLCBmYUhvdXNlRGFtYWdlLCBmYUZpbGVaaXBwZXIsIGZhRmlsZUFyY2hpdmUsIGZhU3F1YXJlLCBmYU1hcnRpbmlHbGFzc0VtcHR5LCBmYUdsYXNzTWFydGluaSwgZmFDb3VjaCwgZmFDZWRpU2lnbiwgZmFJdGFsaWMsIGZhVGFibGVDZWxsc0NvbHVtbkxvY2ssIGZhQ2h1cmNoLCBmYUNvbW1lbnRzRG9sbGFyLCBmYURlbW9jcmF0LCBmYVosIGZhUGVyc29uU2tpaW5nLCBmYVNraWluZywgZmFSb2FkTG9jaywgZmFBLCBmYVRlbXBlcmF0dXJlQXJyb3dEb3duLCBmYVRlbXBlcmF0dXJlRG93biwgZmFGZWF0aGVyUG9pbnRlZCwgZmFGZWF0aGVyQWx0LCBmYVAsIGZhU25vd2ZsYWtlLCBmYU5ld3NwYXBlciwgZmFSZWN0YW5nbGVBZCwgZmFBZCwgZmFDaXJjbGVBcnJvd1JpZ2h0LCBmYUFycm93Q2lyY2xlUmlnaHQsIGZhRmlsdGVyQ2lyY2xlWG1hcmssIGZhTG9jdXN0LCBmYVNvcnQsIGZhVW5zb3J0ZWQsIGZhTGlzdE9sLCBmYUxpc3QxMiwgZmFMaXN0TnVtZXJpYywgZmFQZXJzb25EcmVzc0J1cnN0LCBmYU1vbmV5Q2hlY2tEb2xsYXIsIGZhTW9uZXlDaGVja0FsdCwgZmFWZWN0b3JTcXVhcmUsIGZhQnJlYWRTbGljZSwgZmFMYW5ndWFnZSwgZmFGYWNlS2lzc1dpbmtIZWFydCwgZmFLaXNzV2lua0hlYXJ0LCBmYUZpbHRlciwgZmFRdWVzdGlvbiwgZmFGaWxlU2lnbmF0dXJlLCBmYVVwRG93bkxlZnRSaWdodCwgZmFBcnJvd3NBbHQsIGZhSG91c2VDaGltbmV5VXNlciwgZmFIYW5kSG9sZGluZ0hlYXJ0LCBmYVB1enpsZVBpZWNlLCBmYU1vbmV5Q2hlY2ssIGZhU3RhckhhbGZTdHJva2UsIGZhU3RhckhhbGZBbHQsIGZhQ29kZSwgZmFXaGlza2V5R2xhc3MsIGZhR2xhc3NXaGlza2V5LCBmYUJ1aWxkaW5nQ2lyY2xlRXhjbGFtYXRpb24sIGZhTWFnbmlmeWluZ0dsYXNzQ2hhcnQsIGZhQXJyb3dVcFJpZ2h0RnJvbVNxdWFyZSwgZmFFeHRlcm5hbExpbmssIGZhQ3ViZXNTdGFja2VkLCBmYVdvblNpZ24sIGZhS3J3LCBmYVdvbiwgZmFWaXJ1c0NvdmlkLCBmYUF1c3RyYWxTaWduLCBmYUYsIGZhTGVhZiwgZmFSb2FkLCBmYVRheGksIGZhQ2FiLCBmYVBlcnNvbkNpcmNsZVBsdXMsIGZhQ2hhcnRQaWUsIGZhUGllQ2hhcnQsIGZhQm9sdExpZ2h0bmluZywgZmFTYWNrWG1hcmssIGZhRmlsZUV4Y2VsLCBmYUZpbGVDb250cmFjdCwgZmFGaXNoRmlucywgZmFCdWlsZGluZ0ZsYWcsIGZhRmFjZUdyaW5CZWFtLCBmYUdyaW5CZWFtLCBmYU9iamVjdFVuZ3JvdXAsIGZhUG9vcCwgZmFMb2NhdGlvblBpbiwgZmFNYXBNYXJrZXIsIGZhS2FhYmEsIGZhVG9pbGV0UGFwZXIsIGZhSGVsbWV0U2FmZXR5LCBmYUhhcmRIYXQsIGZhSGF0SGFyZCwgZmFFamVjdCwgZmFDaXJjbGVSaWdodCwgZmFBcnJvd0FsdENpcmNsZVJpZ2h0LCBmYVBsYW5lQ2lyY2xlQ2hlY2ssIGZhRmFjZVJvbGxpbmdFeWVzLCBmYU1laFJvbGxpbmdFeWVzLCBmYU9iamVjdEdyb3VwLCBmYUNoYXJ0TGluZSwgZmFMaW5lQ2hhcnQsIGZhTWFza1ZlbnRpbGF0b3IsIGZhQXJyb3dSaWdodCwgZmFTaWduc1Bvc3QsIGZhTWFwU2lnbnMsIGZhQ2FzaFJlZ2lzdGVyLCBmYVBlcnNvbkNpcmNsZVF1ZXN0aW9uLCBmYUgsIGZhVGFycCwgZmFTY3Jld2RyaXZlcldyZW5jaCwgZmFUb29scywgZmFBcnJvd3NUb0V5ZSwgZmFQbHVnQ2lyY2xlQm9sdCwgZmFIZWFydCwgZmFNYXJzQW5kVmVudXMsIGZhSG91c2VVc2VyLCBmYUhvbWVVc2VyLCBmYUR1bXBzdGVyRmlyZSwgZmFIb3VzZUNyYWNrLCBmYU1hcnRpbmlHbGFzc0NpdHJ1cywgZmFDb2NrdGFpbCwgZmFGYWNlU3VycHJpc2UsIGZhU3VycHJpc2UsIGZhQm90dGxlV2F0ZXIsIGZhQ2lyY2xlUGF1c2UsIGZhUGF1c2VDaXJjbGUsIGZhVG9pbGV0UGFwZXJTbGFzaCwgZmFBcHBsZVdob2xlLCBmYUFwcGxlQWx0LCBmYUtpdGNoZW5TZXQsIGZhUiwgZmFUZW1wZXJhdHVyZVF1YXJ0ZXIsIGZhVGVtcGVyYXR1cmUxLCBmYVRoZXJtb21ldGVyMSwgZmFUaGVybW9tZXRlclF1YXJ0ZXIsIGZhQ3ViZSwgZmFCaXRjb2luU2lnbiwgZmFTaGllbGREb2csIGZhU29sYXJQYW5lbCwgZmFMb2NrT3BlbiwgZmFFbGV2YXRvciwgZmFNb25leUJpbGxUcmFuc2ZlciwgZmFNb25leUJpbGxUcmVuZFVwLCBmYUhvdXNlRmxvb2RXYXRlckNpcmNsZUFycm93UmlnaHQsIGZhU3F1YXJlUG9sbEhvcml6b250YWwsIGZhUG9sbEgsIGZhQ2lyY2xlLCBmYUJhY2t3YXJkRmFzdCwgZmFGYXN0QmFja3dhcmQsIGZhUmVjeWNsZSwgZmFVc2VyQXN0cm9uYXV0LCBmYVBsYW5lU2xhc2gsIGZhVHJhZGVtYXJrLCBmYUJhc2tldGJhbGwsIGZhQmFza2V0YmFsbEJhbGwsIGZhU2F0ZWxsaXRlRGlzaCwgZmFDaXJjbGVVcCwgZmFBcnJvd0FsdENpcmNsZVVwLCBmYU1vYmlsZVNjcmVlbkJ1dHRvbiwgZmFNb2JpbGVBbHQsIGZhVm9sdW1lSGlnaCwgZmFWb2x1bWVVcCwgZmFVc2Vyc1JheXMsIGZhV2FsbGV0LCBmYUNsaXBib2FyZENoZWNrLCBmYUZpbGVBdWRpbywgZmFCdXJnZXIsIGZhSGFtYnVyZ2VyLCBmYVdyZW5jaCwgZmFCdWdzLCBmYVJ1cGVlU2lnbiwgZmFSdXBlZSwgZmFGaWxlSW1hZ2UsIGZhQ2lyY2xlUXVlc3Rpb24sIGZhUXVlc3Rpb25DaXJjbGUsIGZhUGxhbmVEZXBhcnR1cmUsIGZhSGFuZHNoYWtlU2xhc2gsIGZhQm9va0Jvb2ttYXJrLCBmYUNvZGVCcmFuY2gsIGZhSGF0Q293Ym95LCBmYUJyaWRnZSwgZmFQaG9uZUZsaXAsIGZhUGhvbmVBbHQsIGZhVHJ1Y2tGcm9udCwgZmFDYXQsIGZhQW5jaG9yQ2lyY2xlRXhjbGFtYXRpb24sIGZhVHJ1Y2tGaWVsZCwgZmFSb3V0ZSwgZmFDbGlwYm9hcmRRdWVzdGlvbiwgZmFQYW5vcmFtYSwgZmFDb21tZW50TWVkaWNhbCwgZmFUZWV0aE9wZW4sIGZhRmlsZUNpcmNsZU1pbnVzLCBmYVRhZ3MsIGZhV2luZUdsYXNzLCBmYUZvcndhcmRGYXN0LCBmYUZhc3RGb3J3YXJkLCBmYUZhY2VNZWhCbGFuaywgZmFNZWhCbGFuaywgZmFTcXVhcmVQYXJraW5nLCBmYVBhcmtpbmcsIGZhSG91c2VTaWduYWwsIGZhQmFyc1Byb2dyZXNzLCBmYVRhc2tzQWx0LCBmYUZhdWNldERyaXAsIGZhQ2FydEZsYXRiZWQsIGZhRG9sbHlGbGF0YmVkLCBmYUJhblNtb2tpbmcsIGZhU21va2luZ0JhbiwgZmFUZXJtaW5hbCwgZmFNb2JpbGVCdXR0b24sIGZhSG91c2VNZWRpY2FsRmxhZywgZmFCYXNrZXRTaG9wcGluZywgZmFTaG9wcGluZ0Jhc2tldCwgZmFUYXBlLCBmYUJ1c1NpbXBsZSwgZmFCdXNBbHQsIGZhRXllLCBmYUZhY2VTYWRDcnksIGZhU2FkQ3J5LCBmYUF1ZGlvRGVzY3JpcHRpb24sIGZhUGVyc29uTWlsaXRhcnlUb1BlcnNvbiwgZmFGaWxlU2hpZWxkLCBmYVVzZXJTbGFzaCwgZmFQZW4sIGZhVG93ZXJPYnNlcnZhdGlvbiwgZmFGaWxlQ29kZSwgZmFTaWduYWwsIGZhU2lnbmFsNSwgZmFTaWduYWxQZXJmZWN0LCBmYUJ1cywgZmFIZWFydENpcmNsZVhtYXJrLCBmYUhvdXNlQ2hpbW5leSwgZmFIb21lTGcsIGZhV2luZG93TWF4aW1pemUsIGZhRmFjZUZyb3duLCBmYUZyb3duLCBmYVByZXNjcmlwdGlvbiwgZmFTaG9wLCBmYVN0b3JlQWx0LCBmYUZsb3BweURpc2ssIGZhU2F2ZSwgZmFWaWhhcmEsIGZhU2NhbGVVbmJhbGFuY2VkLCBmYUJhbGFuY2VTY2FsZUxlZnQsIGZhU29ydFVwLCBmYVNvcnRBc2MsIGZhQ29tbWVudERvdHMsIGZhQ29tbWVudGluZywgZmFQbGFudFdpbHQsIGZhRGlhbW9uZCwgZmFGYWNlR3JpblNxdWludCwgZmFHcmluU3F1aW50LCBmYUhhbmRIb2xkaW5nRG9sbGFyLCBmYUhhbmRIb2xkaW5nVXNkLCBmYUJhY3Rlcml1bSwgZmFIYW5kUG9pbnRlciwgZmFEcnVtU3RlZWxwYW4sIGZhSGFuZFNjaXNzb3JzLCBmYUhhbmRzUHJheWluZywgZmFQcmF5aW5nSGFuZHMsIGZhQXJyb3dSb3RhdGVSaWdodCwgZmFBcnJvd1JpZ2h0Um90YXRlLCBmYUFycm93Um90YXRlRm9yd2FyZCwgZmFSZWRvLCBmYVdlYkF3ZXNvbWUsIGZhQmlvaGF6YXJkLCBmYUxvY2F0aW9uQ3Jvc3NoYWlycywgZmFMb2NhdGlvbiwgZmFNYXJzRG91YmxlLCBmYUNoaWxkRHJlc3MsIGZhVXNlcnNCZXR3ZWVuTGluZXMsIGZhTHVuZ3NWaXJ1cywgZmFGYWNlR3JpblRlYXJzLCBmYUdyaW5UZWFycywgZmFQaG9uZSwgZmFDYWxlbmRhclhtYXJrLCBmYUNhbGVuZGFyVGltZXMsIGZhQ2hpbGRSZWFjaGluZywgZmFIZWFkU2lkZVZpcnVzLCBmYVVzZXJHZWFyLCBmYVVzZXJDb2csIGZhQXJyb3dVcDE5LCBmYVNvcnROdW1lcmljVXAsIGZhRG9vckNsb3NlZCwgZmFTaGllbGRWaXJ1cywgZmFEaWNlU2l4LCBmYU1vc3F1aXRvTmV0LCBmYUJyaWRnZVdhdGVyLCBmYVBlcnNvbkJvb3RoLCBmYVRleHRXaWR0aCwgZmFIYXRXaXphcmQsIGZhUGVuRmFuY3ksIGZhUGVyc29uRGlnZ2luZywgZmFEaWdnaW5nLCBmYVRyYXNoLCBmYUdhdWdlU2ltcGxlLCBmYUdhdWdlU2ltcGxlTWVkLCBmYVRhY2hvbWV0ZXJBdmVyYWdlLCBmYUJvb2tNZWRpY2FsLCBmYVBvbywgZmFRdW90ZVJpZ2h0LCBmYVF1b3RlUmlnaHRBbHQsIGZhU2hpcnQsIGZhVFNoaXJ0LCBmYVRzaGlydCwgZmFDdWJlcywgZmFEaXZpZGUsIGZhVGVuZ2VTaWduLCBmYVRlbmdlLCBmYUhlYWRwaG9uZXMsIGZhSGFuZHNIb2xkaW5nLCBmYUhhbmRzQ2xhcHBpbmcsIGZhUmVwdWJsaWNhbiwgZmFBcnJvd0xlZnQsIGZhUGVyc29uQ2lyY2xlWG1hcmssIGZhUnVsZXIsIGZhQWxpZ25MZWZ0LCBmYURpY2VENiwgZmFSZXN0cm9vbSwgZmFKLCBmYVVzZXJzVmlld2ZpbmRlciwgZmFGaWxlVmlkZW8sIGZhVXBSaWdodEZyb21TcXVhcmUsIGZhRXh0ZXJuYWxMaW5rQWx0LCBmYVRhYmxlQ2VsbHMsIGZhVGgsIGZhRmlsZVBkZiwgZmFCb29rQmlibGUsIGZhQmlibGUsIGZhTywgZmFTdWl0Y2FzZU1lZGljYWwsIGZhTWVka2l0LCBmYVVzZXJTZWNyZXQsIGZhT3R0ZXIsIGZhUGVyc29uRHJlc3MsIGZhRmVtYWxlLCBmYUNvbW1lbnREb2xsYXIsIGZhQnVzaW5lc3NUaW1lLCBmYUJyaWVmY2FzZUNsb2NrLCBmYVRhYmxlQ2VsbHNMYXJnZSwgZmFUaExhcmdlLCBmYUJvb2tUYW5ha2gsIGZhVGFuYWtoLCBmYVBob25lVm9sdW1lLCBmYVZvbHVtZUNvbnRyb2xQaG9uZSwgZmFIYXRDb3dib3lTaWRlLCBmYUNsaXBib2FyZFVzZXIsIGZhQ2hpbGQsIGZhTGlyYVNpZ24sIGZhU2F0ZWxsaXRlLCBmYVBsYW5lTG9jaywgZmFUYWcsIGZhQ29tbWVudCwgZmFDYWtlQ2FuZGxlcywgZmFCaXJ0aGRheUNha2UsIGZhQ2FrZSwgZmFFbnZlbG9wZSwgZmFBbmdsZXNVcCwgZmFBbmdsZURvdWJsZVVwLCBmYVBhcGVyY2xpcCwgZmFBcnJvd1JpZ2h0VG9DaXR5LCBmYVJpYmJvbiwgZmFMdW5ncywgZmFBcnJvd1VwOTEsIGZhU29ydE51bWVyaWNVcEFsdCwgZmFMaXRlY29pblNpZ24sIGZhQm9yZGVyTm9uZSwgZmFDaXJjbGVOb2RlcywgZmFQYXJhY2h1dGVCb3gsIGZhSW5kZW50LCBmYVRydWNrRmllbGRVbiwgZmFIb3VyZ2xhc3MsIGZhSG91cmdsYXNzRW1wdHksIGZhTW91bnRhaW4sIGZhVXNlckRvY3RvciwgZmFVc2VyTWQsIGZhQ2lyY2xlSW5mbywgZmFJbmZvQ2lyY2xlLCBmYUNsb3VkTWVhdGJhbGwsIGZhQ2FtZXJhLCBmYUNhbWVyYUFsdCwgZmFTcXVhcmVWaXJ1cywgZmFNZXRlb3IsIGZhQ2FyT24sIGZhU2xlaWdoLCBmYUFycm93RG93bjE5LCBmYVNvcnROdW1lcmljQXNjLCBmYVNvcnROdW1lcmljRG93biwgZmFIYW5kSG9sZGluZ0Ryb3BsZXQsIGZhSGFuZEhvbGRpbmdXYXRlciwgZmFXYXRlciwgZmFDYWxlbmRhckNoZWNrLCBmYUJyYWlsbGUsIGZhUHJlc2NyaXB0aW9uQm90dGxlTWVkaWNhbCwgZmFQcmVzY3JpcHRpb25Cb3R0bGVBbHQsIGZhTGFuZG1hcmssIGZhVHJ1Y2ssIGZhQ3Jvc3NoYWlycywgZmFQZXJzb25DYW5lLCBmYVRlbnQsIGZhVmVzdFBhdGNoZXMsIGZhQ2hlY2tEb3VibGUsIGZhQXJyb3dEb3duQVosIGZhU29ydEFscGhhQXNjLCBmYVNvcnRBbHBoYURvd24sIGZhTW9uZXlCaWxsV2hlYXQsIGZhQ29va2llLCBmYUFycm93Um90YXRlTGVmdCwgZmFBcnJvd0xlZnRSb3RhdGUsIGZhQXJyb3dSb3RhdGVCYWNrLCBmYUFycm93Um90YXRlQmFja3dhcmQsIGZhVW5kbywgZmFIYXJkRHJpdmUsIGZhSGRkLCBmYUZhY2VHcmluU3F1aW50VGVhcnMsIGZhR3JpblNxdWludFRlYXJzLCBmYUR1bWJiZWxsLCBmYVJlY3RhbmdsZUxpc3QsIGZhTGlzdEFsdCwgZmFUYXJwRHJvcGxldCwgZmFIb3VzZU1lZGljYWxDaXJjbGVDaGVjaywgZmFQZXJzb25Ta2lpbmdOb3JkaWMsIGZhU2tpaW5nTm9yZGljLCBmYUNhbGVuZGFyUGx1cywgZmFQbGFuZUFycml2YWwsIGZhQ2lyY2xlTGVmdCwgZmFBcnJvd0FsdENpcmNsZUxlZnQsIGZhVHJhaW5TdWJ3YXksIGZhU3Vid2F5LCBmYUNoYXJ0R2FudHQsIGZhSW5kaWFuUnVwZWVTaWduLCBmYUluZGlhblJ1cGVlLCBmYUluciwgZmFDcm9wU2ltcGxlLCBmYUNyb3BBbHQsIGZhTW9uZXlCaWxsMSwgZmFNb25leUJpbGxBbHQsIGZhTGVmdExvbmcsIGZhTG9uZ0Fycm93QWx0TGVmdCwgZmFEbmEsIGZhVmlydXNTbGFzaCwgZmFNaW51cywgZmFTdWJ0cmFjdCwgZmFDaGVzcywgZmFBcnJvd0xlZnRMb25nLCBmYUxvbmdBcnJvd0xlZnQsIGZhUGx1Z0NpcmNsZUNoZWNrLCBmYVN0cmVldFZpZXcsIGZhRnJhbmNTaWduLCBmYVZvbHVtZU9mZiwgZmFIYW5kc0FzbEludGVycHJldGluZywgZmFBbWVyaWNhblNpZ25MYW5ndWFnZUludGVycHJldGluZywgZmFBc2xJbnRlcnByZXRpbmcsIGZhSGFuZHNBbWVyaWNhblNpZ25MYW5ndWFnZUludGVycHJldGluZywgZmFHZWFyLCBmYUNvZywgZmFEcm9wbGV0U2xhc2gsIGZhVGludFNsYXNoLCBmYU1vc3F1ZSwgZmFNb3NxdWl0bywgZmFTdGFyT2ZEYXZpZCwgZmFQZXJzb25NaWxpdGFyeVJpZmxlLCBmYUNhcnRTaG9wcGluZywgZmFTaG9wcGluZ0NhcnQsIGZhVmlhbHMsIGZhUGx1Z0NpcmNsZVBsdXMsIGZhUGxhY2VPZldvcnNoaXAsIGZhR3JpcFZlcnRpY2FsLCBmYUFycm93VHVyblVwLCBmYUxldmVsVXAsIGZhVSwgZmFTcXVhcmVSb290VmFyaWFibGUsIGZhU3F1YXJlUm9vdEFsdCwgZmFDbG9jaywgZmFDbG9ja0ZvdXIsIGZhQmFja3dhcmRTdGVwLCBmYVN0ZXBCYWNrd2FyZCwgZmFQYWxsZXQsIGZhRmF1Y2V0LCBmYUJhc2ViYWxsQmF0QmFsbCwgZmFTLCBmYVRpbWVsaW5lLCBmYUtleWJvYXJkLCBmYUNhcmV0RG93biwgZmFIb3VzZUNoaW1uZXlNZWRpY2FsLCBmYUNsaW5pY01lZGljYWwsIGZhVGVtcGVyYXR1cmVUaHJlZVF1YXJ0ZXJzLCBmYVRlbXBlcmF0dXJlMywgZmFUaGVybW9tZXRlcjMsIGZhVGhlcm1vbWV0ZXJUaHJlZVF1YXJ0ZXJzLCBmYU1vYmlsZVNjcmVlbiwgZmFNb2JpbGVBbmRyb2lkQWx0LCBmYVBsYW5lVXAsIGZhUGlnZ3lCYW5rLCBmYUJhdHRlcnlIYWxmLCBmYUJhdHRlcnkzLCBmYU1vdW50YWluQ2l0eSwgZmFDb2lucywgZmFLaGFuZGEsIGZhU2xpZGVycywgZmFTbGlkZXJzSCwgZmFGb2xkZXJUcmVlLCBmYU5ldHdvcmtXaXJlZCwgZmFNYXBQaW4sIGZhSGFtc2EsIGZhQ2VudFNpZ24sIGZhRmxhc2ssIGZhUGVyc29uUHJlZ25hbnQsIGZhV2FuZFNwYXJrbGVzLCBmYUVsbGlwc2lzVmVydGljYWwsIGZhRWxsaXBzaXNWLCBmYVRpY2tldCwgZmFQb3dlck9mZiwgZmFSaWdodExvbmcsIGZhTG9uZ0Fycm93QWx0UmlnaHQsIGZhRmxhZ1VzYSwgZmFMYXB0b3BGaWxlLCBmYVR0eSwgZmFUZWxldHlwZSwgZmFEaWFncmFtTmV4dCwgZmFQZXJzb25SaWZsZSwgZmFIb3VzZU1lZGljYWxDaXJjbGVFeGNsYW1hdGlvbiwgZmFDbG9zZWRDYXB0aW9uaW5nLCBmYVBlcnNvbkhpa2luZywgZmFIaWtpbmcsIGZhVmVudXNEb3VibGUsIGZhSW1hZ2VzLCBmYUNhbGN1bGF0b3IsIGZhUGVvcGxlUHVsbGluZywgZmFOLCBmYUNhYmxlQ2FyLCBmYVRyYW0sIGZhQ2xvdWRSYWluLCBmYUJ1aWxkaW5nQ2lyY2xlWG1hcmssIGZhU2hpcCwgZmFBcnJvd3NEb3duVG9MaW5lLCBmYURvd25sb2FkLCBmYUZhY2VHcmluLCBmYUdyaW4sIGZhRGVsZXRlTGVmdCwgZmFCYWNrc3BhY2UsIGZhRXllRHJvcHBlciwgZmFFeWVEcm9wcGVyRW1wdHksIGZhRXllZHJvcHBlciwgZmFGaWxlQ2lyY2xlQ2hlY2ssIGZhRm9yd2FyZCwgZmFNb2JpbGUsIGZhTW9iaWxlQW5kcm9pZCwgZmFNb2JpbGVQaG9uZSwgZmFGYWNlTWVoLCBmYU1laCwgZmFBbGlnbkNlbnRlciwgZmFCb29rU2t1bGwsIGZhQm9va0RlYWQsIGZhSWRDYXJkLCBmYURyaXZlcnNMaWNlbnNlLCBmYU91dGRlbnQsIGZhRGVkZW50LCBmYUhlYXJ0Q2lyY2xlRXhjbGFtYXRpb24sIGZhSG91c2UsIGZhSG9tZSwgZmFIb21lQWx0LCBmYUhvbWVMZ0FsdCwgZmFDYWxlbmRhcldlZWssIGZhTGFwdG9wTWVkaWNhbCwgZmFCLCBmYUZpbGVNZWRpY2FsLCBmYURpY2VPbmUsIGZhS2l3aUJpcmQsIGZhQXJyb3dSaWdodEFycm93TGVmdCwgZmFFeGNoYW5nZSwgZmFSb3RhdGVSaWdodCwgZmFSZWRvQWx0LCBmYVJvdGF0ZUZvcndhcmQsIGZhVXRlbnNpbHMsIGZhQ3V0bGVyeSwgZmFBcnJvd1VwV2lkZVNob3J0LCBmYVNvcnRBbW91bnRVcCwgZmFNaWxsU2lnbiwgZmFCb3dsUmljZSwgZmFTa3VsbCwgZmFUb3dlckJyb2FkY2FzdCwgZmFCcm9hZGNhc3RUb3dlciwgZmFUcnVja1BpY2t1cCwgZmFVcExvbmcsIGZhTG9uZ0Fycm93QWx0VXAsIGZhU3RvcCwgZmFDb2RlTWVyZ2UsIGZhVXBsb2FkLCBmYUh1cnJpY2FuZSwgZmFNb3VuZCwgZmFUb2lsZXRQb3J0YWJsZSwgZmFDb21wYWN0RGlzYywgZmFGaWxlQXJyb3dEb3duLCBmYUZpbGVEb3dubG9hZCwgZmFDYXJhdmFuLCBmYVNoaWVsZENhdCwgZmFCb2x0LCBmYVphcCwgZmFHbGFzc1dhdGVyLCBmYU9pbFdlbGwsIGZhVmF1bHQsIGZhTWFycywgZmFUb2lsZXQsIGZhUGxhbmVDaXJjbGVYbWFyaywgZmFZZW5TaWduLCBmYUNueSwgZmFKcHksIGZhUm1iLCBmYVllbiwgZmFSdWJsZVNpZ24sIGZhUm91YmxlLCBmYVJ1YiwgZmFSdWJsZSwgZmFTdW4sIGZhR3VpdGFyLCBmYUZhY2VMYXVnaFdpbmssIGZhTGF1Z2hXaW5rLCBmYUhvcnNlSGVhZCwgZmFCb3JlSG9sZSwgZmFJbmR1c3RyeSwgZmFDaXJjbGVEb3duLCBmYUFycm93QWx0Q2lyY2xlRG93biwgZmFBcnJvd3NUdXJuVG9Eb3RzLCBmYUZsb3JpblNpZ24sIGZhQXJyb3dEb3duU2hvcnRXaWRlLCBmYVNvcnRBbW91bnREZXNjLCBmYVNvcnRBbW91bnREb3duQWx0LCBmYUxlc3NUaGFuLCBmYUFuZ2xlRG93biwgZmFDYXJUdW5uZWwsIGZhSGVhZFNpZGVDb3VnaCwgZmFHcmlwTGluZXMsIGZhVGh1bWJzRG93biwgZmFVc2VyTG9jaywgZmFBcnJvd1JpZ2h0TG9uZywgZmFMb25nQXJyb3dSaWdodCwgZmFBbmNob3JDaXJjbGVYbWFyaywgZmFFbGxpcHNpcywgZmFFbGxpcHNpc0gsIGZhQ2hlc3NQYXduLCBmYUtpdE1lZGljYWwsIGZhRmlyc3RBaWQsIGZhUGVyc29uVGhyb3VnaFdpbmRvdywgZmFUb29sYm94LCBmYUhhbmRzSG9sZGluZ0NpcmNsZSwgZmFCdWcsIGZhQ3JlZGl0Q2FyZCwgZmFDcmVkaXRDYXJkQWx0LCBmYUNhciwgZmFBdXRvbW9iaWxlLCBmYUhhbmRIb2xkaW5nSGFuZCwgZmFCb29rT3BlblJlYWRlciwgZmFCb29rUmVhZGVyLCBmYU1vdW50YWluU3VuLCBmYUFycm93c0xlZnRSaWdodFRvTGluZSwgZmFEaWNlRDIwLCBmYVRydWNrRHJvcGxldCwgZmFGaWxlQ2lyY2xlWG1hcmssIGZhVGVtcGVyYXR1cmVBcnJvd1VwLCBmYVRlbXBlcmF0dXJlVXAsIGZhTWVkYWwsIGZhQmVkLCBmYVNxdWFyZUgsIGZhSFNxdWFyZSwgZmFQb2RjYXN0LCBmYVRlbXBlcmF0dXJlRnVsbCwgZmFUZW1wZXJhdHVyZTQsIGZhVGhlcm1vbWV0ZXI0LCBmYVRoZXJtb21ldGVyRnVsbCwgZmFCZWxsLCBmYVN1cGVyc2NyaXB0LCBmYVBsdWdDaXJjbGVYbWFyaywgZmFTdGFyT2ZMaWZlLCBmYVBob25lU2xhc2gsIGZhUGFpbnRSb2xsZXIsIGZhSGFuZHNoYWtlQW5nbGUsIGZhSGFuZHNIZWxwaW5nLCBmYUxvY2F0aW9uRG90LCBmYU1hcE1hcmtlckFsdCwgZmFGaWxlLCBmYUdyZWF0ZXJUaGFuLCBmYVBlcnNvblN3aW1taW5nLCBmYVN3aW1tZXIsIGZhQXJyb3dEb3duLCBmYURyb3BsZXQsIGZhVGludCwgZmFFcmFzZXIsIGZhRWFydGhBbWVyaWNhcywgZmFFYXJ0aCwgZmFFYXJ0aEFtZXJpY2EsIGZhR2xvYmVBbWVyaWNhcywgZmFQZXJzb25CdXJzdCwgZmFEb3ZlLCBmYUJhdHRlcnlFbXB0eSwgZmFCYXR0ZXJ5MCwgZmFTb2NrcywgZmFJbmJveCwgZmFTZWN0aW9uLCBmYUdhdWdlSGlnaCwgZmFUYWNob21ldGVyQWx0LCBmYVRhY2hvbWV0ZXJBbHRGYXN0LCBmYUVudmVsb3BlT3BlblRleHQsIGZhSG9zcGl0YWwsIGZhSG9zcGl0YWxBbHQsIGZhSG9zcGl0YWxXaWRlLCBmYVdpbmVCb3R0bGUsIGZhQ2hlc3NSb29rLCBmYUJhcnNTdGFnZ2VyZWQsIGZhUmVvcmRlciwgZmFTdHJlYW0sIGZhRGhhcm1hY2hha3JhLCBmYUhvdGRvZywgZmFQZXJzb25XYWxraW5nV2l0aENhbmUsIGZhQmxpbmQsIGZhRHJ1bSwgZmFJY2VDcmVhbSwgZmFIZWFydENpcmNsZUJvbHQsIGZhRmF4LCBmYVBhcmFncmFwaCwgZmFDaGVja1RvU2xvdCwgZmFWb3RlWWVhLCBmYVN0YXJIYWxmLCBmYUJveGVzU3RhY2tlZCwgZmFCb3hlcywgZmFCb3hlc0FsdCwgZmFMaW5rLCBmYUNoYWluLCBmYUVhckxpc3RlbiwgZmFBc3Npc3RpdmVMaXN0ZW5pbmdTeXN0ZW1zLCBmYVRyZWVDaXR5LCBmYVBsYXksIGZhRm9udCwgZmFUYWJsZUNlbGxzUm93TG9jaywgZmFSdXBpYWhTaWduLCBmYU1hZ25pZnlpbmdHbGFzcywgZmFTZWFyY2gsIGZhVGFibGVUZW5uaXNQYWRkbGVCYWxsLCBmYVBpbmdQb25nUGFkZGxlQmFsbCwgZmFUYWJsZVRlbm5pcywgZmFQZXJzb25Eb3RzRnJvbUxpbmUsIGZhRGlhZ25vc2VzLCBmYVRyYXNoQ2FuQXJyb3dVcCwgZmFUcmFzaFJlc3RvcmVBbHQsIGZhTmFpcmFTaWduLCBmYUNhcnRBcnJvd0Rvd24sIGZhV2Fsa2llVGFsa2llLCBmYUZpbGVQZW4sIGZhRmlsZUVkaXQsIGZhUmVjZWlwdCwgZmFTcXVhcmVQZW4sIGZhUGVuU3F1YXJlLCBmYVBlbmNpbFNxdWFyZSwgZmFTdWl0Y2FzZVJvbGxpbmcsIGZhUGVyc29uQ2lyY2xlRXhjbGFtYXRpb24sIGZhQ2hldnJvbkRvd24sIGZhQmF0dGVyeUZ1bGwsIGZhQmF0dGVyeSwgZmFCYXR0ZXJ5NSwgZmFTa3VsbENyb3NzYm9uZXMsIGZhQ29kZUNvbXBhcmUsIGZhTGlzdFVsLCBmYUxpc3REb3RzLCBmYVNjaG9vbExvY2ssIGZhVG93ZXJDZWxsLCBmYURvd25Mb25nLCBmYUxvbmdBcnJvd0FsdERvd24sIGZhUmFua2luZ1N0YXIsIGZhQ2hlc3NLaW5nLCBmYVBlcnNvbkhhcmFzc2luZywgZmFCcmF6aWxpYW5SZWFsU2lnbiwgZmFMYW5kbWFya0RvbWUsIGZhTGFuZG1hcmtBbHQsIGZhQXJyb3dVcCwgZmFUdiwgZmFUZWxldmlzaW9uLCBmYVR2QWx0LCBmYVNocmltcCwgZmFMaXN0Q2hlY2ssIGZhVGFza3MsIGZhSnVnRGV0ZXJnZW50LCBmYUNpcmNsZVVzZXIsIGZhVXNlckNpcmNsZSwgZmFVc2VyU2hpZWxkLCBmYVdpbmQsIGZhQ2FyQnVyc3QsIGZhQ2FyQ3Jhc2gsIGZhWSwgZmFQZXJzb25Tbm93Ym9hcmRpbmcsIGZhU25vd2JvYXJkaW5nLCBmYVRydWNrRmFzdCwgZmFTaGlwcGluZ0Zhc3QsIGZhRmlzaCwgZmFVc2VyR3JhZHVhdGUsIGZhQ2lyY2xlSGFsZlN0cm9rZSwgZmFBZGp1c3QsIGZhQ2xhcHBlcmJvYXJkLCBmYUNpcmNsZVJhZGlhdGlvbiwgZmFSYWRpYXRpb25BbHQsIGZhQmFzZWJhbGwsIGZhQmFzZWJhbGxCYWxsLCBmYUpldEZpZ2h0ZXJVcCwgZmFEaWFncmFtUHJvamVjdCwgZmFQcm9qZWN0RGlhZ3JhbSwgZmFDb3B5LCBmYVZvbHVtZVhtYXJrLCBmYVZvbHVtZU11dGUsIGZhVm9sdW1lVGltZXMsIGZhSGFuZFNwYXJrbGVzLCBmYUdyaXAsIGZhR3JpcEhvcml6b250YWwsIGZhU2hhcmVGcm9tU3F1YXJlLCBmYVNoYXJlU3F1YXJlLCBmYUNoaWxkQ29tYmF0YW50LCBmYUNoaWxkUmlmbGUsIGZhR3VuLCBmYVNxdWFyZVBob25lLCBmYVBob25lU3F1YXJlLCBmYVBsdXMsIGZhQWRkLCBmYUV4cGFuZCwgZmFDb21wdXRlciwgZmFYbWFyaywgZmFDbG9zZSwgZmFNdWx0aXBseSwgZmFSZW1vdmUsIGZhVGltZXMsIGZhQXJyb3dzVXBEb3duTGVmdFJpZ2h0LCBmYUFycm93cywgZmFDaGFsa2JvYXJkVXNlciwgZmFDaGFsa2JvYXJkVGVhY2hlciwgZmFQZXNvU2lnbiwgZmFCdWlsZGluZ1NoaWVsZCwgZmFCYWJ5LCBmYVVzZXJzTGluZSwgZmFRdW90ZUxlZnQsIGZhUXVvdGVMZWZ0QWx0LCBmYVRyYWN0b3IsIGZhVHJhc2hBcnJvd1VwLCBmYVRyYXNoUmVzdG9yZSwgZmFBcnJvd0Rvd25VcExvY2ssIGZhTGluZXNMZWFuaW5nLCBmYVJ1bGVyQ29tYmluZWQsIGZhQ29weXJpZ2h0LCBmYUVxdWFscywgZmFCbGVuZGVyLCBmYVRlZXRoLCBmYVNoZWtlbFNpZ24sIGZhSWxzLCBmYVNoZWtlbCwgZmFTaGVxZWwsIGZhU2hlcWVsU2lnbiwgZmFNYXAsIGZhUm9ja2V0LCBmYVBob3RvRmlsbSwgZmFQaG90b1ZpZGVvLCBmYUZvbGRlck1pbnVzLCBmYVN0b3JlLCBmYUFycm93VHJlbmRVcCwgZmFQbHVnQ2lyY2xlTWludXMsIGZhU2lnbkhhbmdpbmcsIGZhU2lnbiwgZmFCZXppZXJDdXJ2ZSwgZmFCZWxsU2xhc2gsIGZhVGFibGV0LCBmYVRhYmxldEFuZHJvaWQsIGZhU2Nob29sRmxhZywgZmFGaWxsLCBmYUFuZ2xlVXAsIGZhRHJ1bXN0aWNrQml0ZSwgZmFIb2xseUJlcnJ5LCBmYUNoZXZyb25MZWZ0LCBmYUJhY3RlcmlhLCBmYUhhbmRMaXphcmQsIGZhTm90ZGVmLCBmYURpc2Vhc2UsIGZhQnJpZWZjYXNlTWVkaWNhbCwgZmFHZW5kZXJsZXNzLCBmYUNoZXZyb25SaWdodCwgZmFSZXR3ZWV0LCBmYUNhclJlYXIsIGZhQ2FyQWx0LCBmYVB1bXBTb2FwLCBmYVZpZGVvU2xhc2gsIGZhQmF0dGVyeVF1YXJ0ZXIsIGZhQmF0dGVyeTIsIGZhUmFkaW8sIGZhQmFieUNhcnJpYWdlLCBmYUNhcnJpYWdlQmFieSwgZmFUcmFmZmljTGlnaHQsIGZhVGhlcm1vbWV0ZXIsIGZhVnJDYXJkYm9hcmQsIGZhSGFuZE1pZGRsZUZpbmdlciwgZmFQZXJjZW50LCBmYVBlcmNlbnRhZ2UsIGZhVHJ1Y2tNb3ZpbmcsIGZhR2xhc3NXYXRlckRyb3BsZXQsIGZhRGlzcGxheSwgZmFGYWNlU21pbGUsIGZhU21pbGUsIGZhVGh1bWJ0YWNrLCBmYVRodW1iVGFjaywgZmFUcm9waHksIGZhUGVyc29uUHJheWluZywgZmFQcmF5LCBmYUhhbW1lciwgZmFIYW5kUGVhY2UsIGZhUm90YXRlLCBmYVN5bmNBbHQsIGZhU3Bpbm5lciwgZmFSb2JvdCwgZmFQZWFjZSwgZmFHZWFycywgZmFDb2dzLCBmYVdhcmVob3VzZSwgZmFBcnJvd1VwUmlnaHREb3RzLCBmYVNwbG90Y2gsIGZhRmFjZUdyaW5IZWFydHMsIGZhR3JpbkhlYXJ0cywgZmFEaWNlRm91ciwgZmFTaW1DYXJkLCBmYVRyYW5zZ2VuZGVyLCBmYVRyYW5zZ2VuZGVyQWx0LCBmYU1lcmN1cnksIGZhQXJyb3dUdXJuRG93biwgZmFMZXZlbERvd24sIGZhUGVyc29uRmFsbGluZ0J1cnN0LCBmYUF3YXJkLCBmYVRpY2tldFNpbXBsZSwgZmFUaWNrZXRBbHQsIGZhQnVpbGRpbmcsIGZhQW5nbGVzTGVmdCwgZmFBbmdsZURvdWJsZUxlZnQsIGZhUXJjb2RlLCBmYUNsb2NrUm90YXRlTGVmdCwgZmFIaXN0b3J5LCBmYUZhY2VHcmluQmVhbVN3ZWF0LCBmYUdyaW5CZWFtU3dlYXQsIGZhRmlsZUV4cG9ydCwgZmFBcnJvd1JpZ2h0RnJvbUZpbGUsIGZhU2hpZWxkLCBmYVNoaWVsZEJsYW5rLCBmYUFycm93VXBTaG9ydFdpZGUsIGZhU29ydEFtb3VudFVwQWx0LCBmYUhvdXNlTWVkaWNhbCwgZmFHb2xmQmFsbFRlZSwgZmFHb2xmQmFsbCwgZmFDaXJjbGVDaGV2cm9uTGVmdCwgZmFDaGV2cm9uQ2lyY2xlTGVmdCwgZmFIb3VzZUNoaW1uZXlXaW5kb3csIGZhUGVuTmliLCBmYVRlbnRBcnJvd1R1cm5MZWZ0LCBmYVRlbnRzLCBmYVdhbmRNYWdpYywgZmFNYWdpYywgZmFEb2csIGZhQ2Fycm90LCBmYU1vb24sIGZhV2luZUdsYXNzRW1wdHksIGZhV2luZUdsYXNzQWx0LCBmYUNoZWVzZSwgZmFZaW5ZYW5nLCBmYU11c2ljLCBmYUNvZGVDb21taXQsIGZhVGVtcGVyYXR1cmVMb3csIGZhUGVyc29uQmlraW5nLCBmYUJpa2luZywgZmFCcm9vbSwgZmFTaGllbGRIZWFydCwgZmFHb3B1cmFtLCBmYUVhcnRoT2NlYW5pYSwgZmFHbG9iZU9jZWFuaWEsIGZhU3F1YXJlWG1hcmssIGZhVGltZXNTcXVhcmUsIGZhWG1hcmtTcXVhcmUsIGZhSGFzaHRhZywgZmFVcFJpZ2h0QW5kRG93bkxlZnRGcm9tQ2VudGVyLCBmYUV4cGFuZEFsdCwgZmFPaWxDYW4sIGZhVCwgZmFIaXBwbywgZmFDaGFydENvbHVtbiwgZmFJbmZpbml0eSwgZmFWaWFsQ2lyY2xlQ2hlY2ssIGZhUGVyc29uQXJyb3dEb3duVG9MaW5lLCBmYVZvaWNlbWFpbCwgZmFGYW4sIGZhUGVyc29uV2Fsa2luZ0x1Z2dhZ2UsIGZhVXBEb3duLCBmYUFycm93c0FsdFYsIGZhQ2xvdWRNb29uUmFpbiwgZmFDYWxlbmRhciwgZmFUcmFpbGVyLCBmYUJhaGFpLCBmYUhheWthbCwgZmFTZENhcmQsIGZhRHJhZ29uLCBmYVNob2VQcmludHMsIGZhQ2lyY2xlUGx1cywgZmFQbHVzQ2lyY2xlLCBmYUZhY2VHcmluVG9uZ3VlV2luaywgZmFHcmluVG9uZ3VlV2luaywgZmFIYW5kSG9sZGluZywgZmFQbHVnQ2lyY2xlRXhjbGFtYXRpb24sIGZhTGlua1NsYXNoLCBmYUNoYWluQnJva2VuLCBmYUNoYWluU2xhc2gsIGZhVW5saW5rLCBmYUNsb25lLCBmYVBlcnNvbldhbGtpbmdBcnJvd0xvb3BMZWZ0LCBmYUFycm93VXBaQSwgZmFTb3J0QWxwaGFVcEFsdCwgZmFGaXJlRmxhbWVDdXJ2ZWQsIGZhRmlyZUFsdCwgZmFUb3JuYWRvLCBmYUZpbGVDaXJjbGVQbHVzLCBmYUJvb2tRdXJhbiwgZmFRdXJhbiwgZmFBbmNob3IsIGZhQm9yZGVyQWxsLCBmYUZhY2VBbmdyeSwgZmFBbmdyeSwgZmFDb29raWVCaXRlLCBmYUFycm93VHJlbmREb3duLCBmYVJzcywgZmFGZWVkLCBmYURyYXdQb2x5Z29uLCBmYVNjYWxlQmFsYW5jZWQsIGZhQmFsYW5jZVNjYWxlLCBmYUdhdWdlU2ltcGxlSGlnaCwgZmFUYWNob21ldGVyLCBmYVRhY2hvbWV0ZXJGYXN0LCBmYVNob3dlciwgZmFEZXNrdG9wLCBmYURlc2t0b3BBbHQsIGZhTSwgZmFUYWJsZUxpc3QsIGZhVGhMaXN0LCBmYUNvbW1lbnRTbXMsIGZhU21zLCBmYUJvb2ssIGZhVXNlclBsdXMsIGZhQ2hlY2ssIGZhQmF0dGVyeVRocmVlUXVhcnRlcnMsIGZhQmF0dGVyeTQsIGZhSG91c2VDaXJjbGVDaGVjaywgZmFBbmdsZUxlZnQsIGZhRGlhZ3JhbVN1Y2Nlc3NvciwgZmFUcnVja0Fycm93UmlnaHQsIGZhQXJyb3dzU3BsaXRVcEFuZExlZnQsIGZhSGFuZEZpc3QsIGZhRmlzdFJhaXNlZCwgZmFDbG91ZE1vb24sIGZhQnJpZWZjYXNlLCBmYVBlcnNvbkZhbGxpbmcsIGZhSW1hZ2VQb3J0cmFpdCwgZmFQb3J0cmFpdCwgZmFVc2VyVGFnLCBmYVJ1ZywgZmFFYXJ0aEV1cm9wZSwgZmFHbG9iZUV1cm9wZSwgZmFDYXJ0RmxhdGJlZFN1aXRjYXNlLCBmYUx1Z2dhZ2VDYXJ0LCBmYVJlY3RhbmdsZVhtYXJrLCBmYVJlY3RhbmdsZVRpbWVzLCBmYVRpbWVzUmVjdGFuZ2xlLCBmYVdpbmRvd0Nsb3NlLCBmYUJhaHRTaWduLCBmYUJvb2tPcGVuLCBmYUJvb2tKb3VybmFsV2hpbGxzLCBmYUpvdXJuYWxXaGlsbHMsIGZhSGFuZGN1ZmZzLCBmYVRyaWFuZ2xlRXhjbGFtYXRpb24sIGZhRXhjbGFtYXRpb25UcmlhbmdsZSwgZmFXYXJuaW5nLCBmYURhdGFiYXNlLCBmYVNoYXJlLCBmYU1haWxGb3J3YXJkLCBmYUJvdHRsZURyb3BsZXQsIGZhTWFza0ZhY2UsIGZhSGlsbFJvY2tzbGlkZSwgZmFSaWdodExlZnQsIGZhRXhjaGFuZ2VBbHQsIGZhUGFwZXJQbGFuZSwgZmFSb2FkQ2lyY2xlRXhjbGFtYXRpb24sIGZhRHVuZ2VvbiwgZmFBbGlnblJpZ2h0LCBmYU1vbmV5QmlsbDFXYXZlLCBmYU1vbmV5QmlsbFdhdmVBbHQsIGZhTGlmZVJpbmcsIGZhSGFuZHMsIGZhU2lnbkxhbmd1YWdlLCBmYVNpZ25pbmcsIGZhQ2FsZW5kYXJEYXksIGZhV2F0ZXJMYWRkZXIsIGZhTGFkZGVyV2F0ZXIsIGZhU3dpbW1pbmdQb29sLCBmYUFycm93c1VwRG93biwgZmFBcnJvd3NWLCBmYUZhY2VHcmltYWNlLCBmYUdyaW1hY2UsIGZhV2hlZWxjaGFpck1vdmUsIGZhV2hlZWxjaGFpckFsdCwgZmFUdXJuRG93biwgZmFMZXZlbERvd25BbHQsIGZhUGVyc29uV2Fsa2luZ0Fycm93UmlnaHQsIGZhU3F1YXJlRW52ZWxvcGUsIGZhRW52ZWxvcGVTcXVhcmUsIGZhRGljZSwgZmFCb3dsaW5nQmFsbCwgZmFCcmFpbiwgZmFCYW5kYWdlLCBmYUJhbmRBaWQsIGZhQ2FsZW5kYXJNaW51cywgZmFDaXJjbGVYbWFyaywgZmFUaW1lc0NpcmNsZSwgZmFYbWFya0NpcmNsZSwgZmFHaWZ0cywgZmFIb3RlbCwgZmFFYXJ0aEFzaWEsIGZhR2xvYmVBc2lhLCBmYUlkQ2FyZENsaXAsIGZhSWRDYXJkQWx0LCBmYU1hZ25pZnlpbmdHbGFzc1BsdXMsIGZhU2VhcmNoUGx1cywgZmFUaHVtYnNVcCwgZmFVc2VyQ2xvY2ssIGZhSGFuZERvdHMsIGZhQWxsZXJnaWVzLCBmYUZpbGVJbnZvaWNlLCBmYVdpbmRvd01pbmltaXplLCBmYU11Z1NhdWNlciwgZmFDb2ZmZWUsIGZhQnJ1c2gsIGZhTWFzaywgZmFNYWduaWZ5aW5nR2xhc3NNaW51cywgZmFTZWFyY2hNaW51cywgZmFSdWxlclZlcnRpY2FsLCBmYVVzZXJMYXJnZSwgZmFVc2VyQWx0LCBmYVRyYWluVHJhbSwgZmFVc2VyTnVyc2UsIGZhU3lyaW5nZSwgZmFDbG91ZFN1biwgZmFTdG9wd2F0Y2gyMCwgZmFTcXVhcmVGdWxsLCBmYU1hZ25ldCwgZmFKYXIsIGZhTm90ZVN0aWNreSwgZmFTdGlja3lOb3RlLCBmYUJ1Z1NsYXNoLCBmYUFycm93VXBGcm9tV2F0ZXJQdW1wLCBmYUJvbmUsIGZhVGFibGVDZWxsc1Jvd1VubG9jaywgZmFVc2VySW5qdXJlZCwgZmFGYWNlU2FkVGVhciwgZmFTYWRUZWFyLCBmYVBsYW5lLCBmYVRlbnRBcnJvd3NEb3duLCBmYUV4Y2xhbWF0aW9uLCBmYUFycm93c1NwaW4sIGZhUHJpbnQsIGZhVHVya2lzaExpcmFTaWduLCBmYVRyeSwgZmFUdXJraXNoTGlyYSwgZmFEb2xsYXJTaWduLCBmYURvbGxhciwgZmFVc2QsIGZhWCwgZmFNYWduaWZ5aW5nR2xhc3NEb2xsYXIsIGZhU2VhcmNoRG9sbGFyLCBmYVVzZXJzR2VhciwgZmFVc2Vyc0NvZywgZmFQZXJzb25NaWxpdGFyeVBvaW50aW5nLCBmYUJ1aWxkaW5nQ29sdW1ucywgZmFCYW5rLCBmYUluc3RpdHV0aW9uLCBmYU11c2V1bSwgZmFVbml2ZXJzaXR5LCBmYVVtYnJlbGxhLCBmYVRyb3dlbCwgZmFELCBmYVN0YXBsZXIsIGZhTWFza3NUaGVhdGVyLCBmYVRoZWF0ZXJNYXNrcywgZmFLaXBTaWduLCBmYUhhbmRQb2ludExlZnQsIGZhSGFuZHNoYWtlU2ltcGxlLCBmYUhhbmRzaGFrZUFsdCwgZmFKZXRGaWdodGVyLCBmYUZpZ2h0ZXJKZXQsIGZhU3F1YXJlU2hhcmVOb2RlcywgZmFTaGFyZUFsdFNxdWFyZSwgZmFCYXJjb2RlLCBmYVBsdXNNaW51cywgZmFWaWRlbywgZmFWaWRlb0NhbWVyYSwgZmFHcmFkdWF0aW9uQ2FwLCBmYU1vcnRhckJvYXJkLCBmYUhhbmRIb2xkaW5nTWVkaWNhbCwgZmFQZXJzb25DaXJjbGVDaGVjaywgZmFUdXJuVXAsIGZhTGV2ZWxVcEFsdCB9O1xuIiwgIi8qKlxuICogQG1vZHVsZSB2aWV3c1xuICovXG5pbXBvcnQgeyBHcm91cEVsZW1lbnQsIEdyb3VwaW5nLCBHcm91cGluZ3MsIExpdGVyYWwsIExpdGVyYWxzIH0gZnJvbSBcImV4cHJlc3Npb24vbGl0ZXJhbFwiO1xuaW1wb3J0IHsgRGlzcGF0Y2gsIHVzZUNhbGxiYWNrLCB1c2VDb250ZXh0LCB1c2VNZW1vLCB1c2VSZWYgfSBmcm9tIFwicHJlYWN0L2hvb2tzXCI7XG5pbXBvcnQgeyBDVVJSRU5UX0ZJTEVfQ09OVEVYVCwgTGl0IH0gZnJvbSBcInVpL21hcmtkb3duXCI7XG5pbXBvcnQgeyB1c2VJbnRlcm5pbmcgfSBmcm9tIFwidWkvaG9va3NcIjtcbmltcG9ydCB7IEZyYWdtZW50IH0gZnJvbSBcInByZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgVk5vZGUsIGlzVmFsaWRFbGVtZW50IH0gZnJvbSBcInByZWFjdFwiO1xuaW1wb3J0IHsgQ29udHJvbGxlZFBhZ2VyLCB1c2VEYXRhY29yZVBhZ2luZyB9IGZyb20gXCIuL3BhZ2luZ1wiO1xuXG5pbXBvcnQgXCIuL3RhYmxlLmNzc1wiO1xuaW1wb3J0IHsgRWRpdGFibGUsIEVkaXRhYmxlQWN0aW9uLCB1c2VFZGl0YWJsZURpc3BhdGNoIH0gZnJvbSBcInVpL2ZpZWxkcy9lZGl0YWJsZVwiO1xuaW1wb3J0IHsgZmFTb3J0RG93biwgZmFTb3J0VXAsIGZhU29ydCB9IGZyb20gXCJAZm9ydGF3ZXNvbWUvZnJlZS1zb2xpZC1zdmctaWNvbnNcIjtcbmltcG9ydCB7IEZvbnRBd2Vzb21lSWNvbiB9IGZyb20gXCJAZm9ydGF3ZXNvbWUvcmVhY3QtZm9udGF3ZXNvbWVcIjtcblxuLyoqIEEgc2ltcGxlIGNvbHVtbiBkZWZpbml0aW9uIHdoaWNoIGFsbG93cyBmb3IgY3VzdG9tIHJlbmRlcmVycyBhbmQgdGl0bGVzLlxuICogQGdyb3VwIFByb3BzXG4gKiBAdHlwZVBhcmFtIFQgLSB0aGUgdHlwZSBvZiBlYWNoIHJvd1xuICogQHR5cGVQYXJhbSBWIC0gdGhlIHR5cGUgb2YgdGhlIHZhbHVlIGluIHRoaXMgY29sdW1uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmFuaWxsYUNvbHVtbjxULCBWID0gTGl0ZXJhbD4ge1xuICAgIC8qKiBUaGUgdW5pcXVlIElEIG9mIHRoaXMgdGFibGUgY29sdW1uOyB5b3UgY2Fubm90IGhhdmUgbXVsdGlwbGUgY29sdW1ucyB3aXRoIHRoZSBzYW1lIElEIGluIGEgZ2l2ZW4gdGFibGUuICovXG4gICAgaWQ6IHN0cmluZztcblxuICAgIC8qKiBUaGUgdGl0bGUgd2hpY2ggd2lsbCBkaXNwbGF5IGF0IHRoZSB0b3Agb2YgdGhlIGNvbHVtbiBpZiBwcmVzZW50LiAqL1xuICAgIHRpdGxlPzogc3RyaW5nIHwgVk5vZGUgfCAoKCkgPT4gc3RyaW5nIHwgVk5vZGUpO1xuXG4gICAgLyoqIElmIHByZXNlbnQsIHRoZSBDU1Mgd2lkdGggdG8gYXBwbHkgdG8gdGhlIGNvbHVtbi4gJ21pbmltdW0nIHdpbGwgc2V0IHRoZSBjb2x1bW4gc2l6ZSB0byBpdCdzIHNtYWxsZXN0IHBvc3NpYmxlIHZhbHVlLCB3aGlsZSAnbWF4aW11bScgd2lsbCBkbyB0aGUgb3Bwb3NpdGUuICovXG4gICAgd2lkdGg/OiBcIm1pbmltdW1cIiB8IFwibWF4aW11bVwiIHwgc3RyaW5nO1xuXG4gICAgLyoqIFZhbHVlIGZ1bmN0aW9uIHdoaWNoIG1hcHMgdGhlIHJvdyB0byB0aGUgdmFsdWUgYmVpbmcgcmVuZGVyZWQuICovXG4gICAgdmFsdWU6IChvYmplY3Q6IFQpID0+IFY7XG5cbiAgICAvKiogQ2FsbGVkIHRvIHJlbmRlciB0aGUgZ2l2ZW4gY29sdW1uIHZhbHVlLiBDYW4gZGVwZW5kIG9uIGJvdGggdGhlIHNwZWNpZmljIHZhbHVlIGFuZCB0aGUgcm93IG9iamVjdC4gKi9cbiAgICByZW5kZXI/OiAodmFsdWU6IFYsIG9iamVjdDogVCkgPT4gTGl0ZXJhbCB8IFZOb2RlO1xuXG4gICAgLyoqIHdoZXRoZXIgdGhpcyBjb2x1bW4gaXMgZWRpdGFibGUgb3Igbm90ICovXG4gICAgZWRpdGFibGU/OiBib29sZWFuO1xuXG4gICAgLyoqIFJlbmRlcmVkIHdoZW4gZWRpdGluZyB0aGUgY29sdW1uICovXG4gICAgZWRpdG9yPzogKHZhbHVlOiBWLCBvYmplY3Q6IFQpID0+IEpTWC5FbGVtZW50O1xuXG4gICAgLyoqIENhbGxlZCB3aGVuIHRoZSBjb2x1bW4gdmFsdWUgdXBkYXRlcy4gKi9cbiAgICBvblVwZGF0ZT86ICh2YWx1ZTogViwgb2JqZWN0OiBUKSA9PiB1bmtub3duO1xufVxuXG4vKiogTWV0YWRhdGEgZm9yIGNvbmZpZ3VyaW5nIGhvdyBncm91cGluZ3MgaW4gdGhlIGRhdGEgc2hvdWxkIGJlIGhhbmRsZWQuXG4gKiBAZ3JvdXAgUHJvcHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHcm91cGluZ0NvbmZpZzxUPiB7XG4gICAgLyoqIEhvdyBhIGdyb3VwaW5nIHdpdGggdGhlIGdpdmVuIGtleSBhbmQgc2V0IG9mIHJvd3Mgc2hvdWxkIGJlIGhhbmRsZWQuICovXG4gICAgcmVuZGVyPzogKGtleTogTGl0ZXJhbCwgcm93czogR3JvdXBpbmc8VD4pID0+IExpdGVyYWwgfCBWTm9kZTtcbn1cblxuLyoqIEFsbCBhdmFpbGFibGUgcHJvcHMgZm9yIGEgdmFuaWxsYSB0YWJsZS5cbiAqIEBncm91cCBQcm9wc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFZhbmlsbGFUYWJsZVByb3BzPFQ+IHtcbiAgICAvKiogVGhlIGNvbHVtbnMgdG8gcmVuZGVyIGluIHRoZSB0YWJsZS4gKi9cbiAgICBjb2x1bW5zOiBWYW5pbGxhQ29sdW1uPFQ+W107XG5cbiAgICAvKiogVGhlIHJvd3MgdG8gcmVuZGVyOyBtYXkgcG90ZW50aWFsbHkgYmUgZ3JvdXBlZCBvciBqdXN0IGEgcGxhaW4gYXJyYXkuICovXG4gICAgcm93czogR3JvdXBpbmc8VD47XG5cbiAgICAvKiogQWxsb3dzIGZvciBncm91cGluZyBoZWFkZXIgY29sdW1ucyB0byBiZSBvdmVycmlkZGVuIHdpdGggY3VzdG9tIHJlbmRlcmluZy9sb2dpYy4gKi9cbiAgICBncm91cGluZ3M/OiBHcm91cGluZ0NvbmZpZzxUPiB8IEdyb3VwaW5nQ29uZmlnPFQ+W10gfCAoKGtleTogTGl0ZXJhbCwgcm93czogR3JvdXBpbmc8VD4pID0+IExpdGVyYWwgfCBWTm9kZSk7XG5cbiAgICAvKipcbiAgICAgKiBJZiBzZXQgdG8gYSBib29sZWFuIC0gZW5hYmxlcyBvciBkaXNhYmxlcyBwYWdpbmcuXG4gICAgICogSWYgc2V0IHRvIGEgbnVtYmVyLCBwYWdpbmcgd2lsbCBiZSBlbmFibGVkIHdpdGggdGhlIGdpdmVuIG51bWJlciBvZiByb3dzIHBlciBwYWdlLlxuICAgICAqL1xuICAgIHBhZ2luZz86IGJvb2xlYW4gfCBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSB2aWV3IHdpbGwgc2Nyb2xsIHRvIHRoZSB0b3AgYXV0b21hdGljYWxseSBvbiBwYWdlIGNoYW5nZXMuIElmIHRydWUsIHdpbGwgYWx3YXlzIHNjcm9sbCBvbiBwYWdlIGNoYW5nZXMuXG4gICAgICogSWYgYSBudW1iZXIsIHdpbGwgc2Nyb2xsIG9ubHkgaWYgdGhlIG51bWJlciBpcyBncmVhdGVyIHRoYW4gdGhlIGN1cnJlbnQgcGFnZSBzaXplLlxuICAgICAqKi9cbiAgICBzY3JvbGxPblBhZ2luZz86IGJvb2xlYW4gfCBudW1iZXI7XG59XG5cbi8qKiBBIHNpbXBsZSB0YWJsZSB3aGljaCBzdXBwb3J0cyBncm91cGluZywgc29ydGluZywgcGFnaW5nLCBhbmQgY3VzdG9tIGNvbHVtbnMuXG4gKiBAZ3JvdXAgQ29tcG9uZW50c1xuICogQHBhcmFtIHByb3BzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBWYW5pbGxhVGFibGU8VD4ocHJvcHM6IFZhbmlsbGFUYWJsZVByb3BzPFQ+KSB7XG4gICAgLy8gQ2FjaGUgY29sdW1ucyBieSByZWZlcmVuY2UgZXF1YWxpdHkgb2YgdGhlIHNwZWNpZmljIGNvbHVtbnMuIENvbHVtbnMgaGF2ZSB2YXJpb3VzIGZ1bmN0aW9uIHJlZmVyZW5jZXNcbiAgICAvLyBpbnNpZGUgdGhlbSBhbmQgc28gY2Fubm90IGJlIGNvbXBhcmVkIGJ5IHZhbHVlIGVxdWFsaXR5LlxuICAgIGNvbnN0IGNvbHVtbnMgPSB1c2VJbnRlcm5pbmcocHJvcHMuY29sdW1ucywgKGEsIGIpID0+IHtcbiAgICAgICAgaWYgKGEubGVuZ3RoICE9IGIubGVuZ3RoKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIHJldHVybiBhLmV2ZXJ5KCh2YWx1ZSwgaW5kZXgpID0+IHZhbHVlID09IGJbaW5kZXhdKTtcbiAgICB9KTtcblxuICAgIC8vIENvdW50IHRvdGFsIGVsZW1lbnRzIGFuZCB0aGVuIHBhZ2UgYXBwcm9wcmlhdGVseS5cbiAgICBjb25zdCB0YWJsZVJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gICAgY29uc3QgdG90YWxFbGVtZW50cyA9IHVzZU1lbW8oKCkgPT4gR3JvdXBpbmdzLmNvdW50KHByb3BzLnJvd3MpLCBbcHJvcHMucm93c10pO1xuICAgIGNvbnN0IHBhZ2luZyA9IHVzZURhdGFjb3JlUGFnaW5nKHtcbiAgICAgICAgaW5pdGlhbFBhZ2U6IDAsXG4gICAgICAgIHBhZ2luZzogcHJvcHMucGFnaW5nLFxuICAgICAgICBzY3JvbGxPblBhZ2VDaGFuZ2U6IHByb3BzLnNjcm9sbE9uUGFnaW5nLFxuICAgICAgICBlbGVtZW50czogdG90YWxFbGVtZW50cyxcbiAgICAgICAgY29udGFpbmVyOiB0YWJsZVJlZixcbiAgICB9KTtcblxuICAgIGNvbnN0IHBhZ2VkUm93cyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICBpZiAocGFnaW5nLmVuYWJsZWQpXG4gICAgICAgICAgICByZXR1cm4gR3JvdXBpbmdzLnNsaWNlKHByb3BzLnJvd3MsIHBhZ2luZy5wYWdlICogcGFnaW5nLnBhZ2VTaXplLCAocGFnaW5nLnBhZ2UgKyAxKSAqIHBhZ2luZy5wYWdlU2l6ZSk7XG4gICAgICAgIGVsc2UgcmV0dXJuIHByb3BzLnJvd3M7XG4gICAgfSwgW3BhZ2luZy5wYWdlLCBwYWdpbmcucGFnZVNpemUsIHBhZ2luZy5lbmFibGVkLCBwcm9wcy5yb3dzXSk7XG5cbiAgICBjb25zdCBncm91cGluZ3MgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgICAgaWYgKCFwcm9wcy5ncm91cGluZ3MpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHByb3BzLmdyb3VwaW5ncykpIHJldHVybiBwcm9wcy5ncm91cGluZ3M7XG5cbiAgICAgICAgaWYgKExpdGVyYWxzLmlzRnVuY3Rpb24ocHJvcHMuZ3JvdXBpbmdzKSkgcmV0dXJuIFt7IHJlbmRlcjogcHJvcHMuZ3JvdXBpbmdzIH1dO1xuICAgICAgICBlbHNlIHJldHVybiBbcHJvcHMuZ3JvdXBpbmdzXTtcbiAgICB9LCBbcHJvcHMuZ3JvdXBpbmdzXSk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2IHJlZj17dGFibGVSZWZ9PlxuICAgICAgICAgICAgPHRhYmxlIGNsYXNzTmFtZT1cImRhdGFjb3JlLXRhYmxlXCI+XG4gICAgICAgICAgICAgICAgPHRoZWFkPlxuICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3NOYW1lPVwiZGF0YWNvcmUtdGFibGUtaGVhZGVyLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAge2NvbHVtbnMubWFwKChjb2wpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VmFuaWxsYVRhYmxlSGVhZGVyQ2VsbCBjb2x1bW49e2NvbH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgIDwvdGhlYWQ+XG4gICAgICAgICAgICAgICAgPHRib2R5PlxuICAgICAgICAgICAgICAgICAgICB7cGFnZWRSb3dzLm1hcCgocm93KSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8VmFuaWxsYVJvd0dyb3VwIGxldmVsPXswfSBncm91cGluZ3M9e2dyb3VwaW5nc30gY29sdW1ucz17Y29sdW1uc30gZWxlbWVudD17cm93fSAvPlxuICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICAgICAgPC90YWJsZT5cbiAgICAgICAgICAgIHtwYWdpbmcuZW5hYmxlZCAmJiAoXG4gICAgICAgICAgICAgICAgPENvbnRyb2xsZWRQYWdlciBwYWdlPXtwYWdpbmcucGFnZX0gdG90YWxQYWdlcz17cGFnaW5nLnRvdGFsUGFnZXN9IHNldFBhZ2U9e3BhZ2luZy5zZXRQYWdlfSAvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgPC9kaXY+XG4gICAgKTtcbn1cblxuLyoqIEFuIGluZGl2aWR1YWwgY29sdW1uIGNlbGwgaW4gdGhlIHRhYmxlLlxuICogQGhpZGRlblxuICovXG5leHBvcnQgZnVuY3Rpb24gVmFuaWxsYVRhYmxlSGVhZGVyQ2VsbDxUPih7IGNvbHVtbiB9OiB7IGNvbHVtbjogVmFuaWxsYUNvbHVtbjxUPiB9KSB7XG4gICAgY29uc3QgaGVhZGVyOiBzdHJpbmcgfCBWTm9kZSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICBpZiAoIWNvbHVtbi50aXRsZSkge1xuICAgICAgICAgICAgcmV0dXJuIGNvbHVtbi5pZDtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgY29sdW1uLnRpdGxlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBjb2x1bW4udGl0bGUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBjb2x1bW4udGl0bGU7XG4gICAgICAgIH1cbiAgICB9LCBbY29sdW1uLmlkLCBjb2x1bW4udGl0bGVdKTtcblxuICAgIGNvbnN0IHJlYWxXaWR0aCA9IHVzZU1lbW8oXG4gICAgICAgICgpID0+IChjb2x1bW4ud2lkdGggPT09IFwibWluaW11bVwiID8gXCIxcHhcIiA6IGNvbHVtbi53aWR0aCA9PT0gXCJtYXhpbXVtXCIgPyBcImF1dG9cIiA6IGNvbHVtbi53aWR0aCksXG4gICAgICAgIFtjb2x1bW4ud2lkdGhdXG4gICAgKTtcblxuICAgIC8vIFdlIHVzZSBhbiBpbnRlcm5hbCBkaXYgdG8gYXZvaWQgZmxleCBtZXNzaW5nIHdpdGggdGhlIHRhYmxlIGxheW91dC5cbiAgICByZXR1cm4gKFxuICAgICAgICA8dGggd2lkdGg9e3JlYWxXaWR0aH0gY2xhc3NOYW1lPVwiZGF0YWNvcmUtdGFibGUtaGVhZGVyLWNlbGxcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZGF0YWNvcmUtdGFibGUtaGVhZGVyLXRpdGxlXCI+e2hlYWRlcn08L2Rpdj5cbiAgICAgICAgPC90aD5cbiAgICApO1xufVxuXG4vKiogQSBncm91cGluZyBpbiB0aGUgdGFibGUsIG9yIGFuIGluZGl2aWR1YWwgcm93LlxuICogQGhpZGRlblxuICovXG5leHBvcnQgZnVuY3Rpb24gVmFuaWxsYVJvd0dyb3VwPFQ+KHtcbiAgICBsZXZlbCxcbiAgICBjb2x1bW5zLFxuICAgIGVsZW1lbnQsXG4gICAgZ3JvdXBpbmdzLFxufToge1xuICAgIGxldmVsOiBudW1iZXI7XG4gICAgY29sdW1uczogVmFuaWxsYUNvbHVtbjxUPltdO1xuICAgIGVsZW1lbnQ6IFQgfCBHcm91cEVsZW1lbnQ8VD47XG4gICAgZ3JvdXBpbmdzPzogR3JvdXBpbmdDb25maWc8VD5bXTtcbn0pIHtcbiAgICBpZiAoR3JvdXBpbmdzLmlzRWxlbWVudEdyb3VwKGVsZW1lbnQpKSB7XG4gICAgICAgIGNvbnN0IGdyb3VwaW5nQ29uZmlnID0gZ3JvdXBpbmdzID8gZ3JvdXBpbmdzW01hdGgubWluKGdyb3VwaW5ncy5sZW5ndGggLSAxLCBsZXZlbCldIDogdW5kZWZpbmVkO1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8RnJhZ21lbnQ+XG4gICAgICAgICAgICAgICAgPFRhYmxlR3JvdXBIZWFkZXIgbGV2ZWw9e2xldmVsfSB2YWx1ZT17ZWxlbWVudH0gd2lkdGg9e2NvbHVtbnMubGVuZ3RofSBjb25maWc9e2dyb3VwaW5nQ29uZmlnfSAvPlxuICAgICAgICAgICAgICAgIHtlbGVtZW50LnJvd3MubWFwKChyb3cpID0+IChcbiAgICAgICAgICAgICAgICAgICAgPFZhbmlsbGFSb3dHcm91cCBsZXZlbD17bGV2ZWwgKyAxfSBjb2x1bW5zPXtjb2x1bW5zfSBlbGVtZW50PXtyb3d9IC8+XG4gICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICA8L0ZyYWdtZW50PlxuICAgICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiA8VGFibGVSb3cgbGV2ZWw9e2xldmVsfSByb3c9e2VsZW1lbnR9IGNvbHVtbnM9e2NvbHVtbnN9IC8+O1xuICAgIH1cbn1cblxuLyoqIEEgaGVhZGVyIG9mIGEgZ3JvdXBlZCBzZXQgb2YgY29sdW1ucy5cbiAqIEBoaWRkZW5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFRhYmxlR3JvdXBIZWFkZXI8VD4oe1xuICAgIGxldmVsLFxuICAgIHZhbHVlLFxuICAgIHdpZHRoLFxuICAgIGNvbmZpZyxcbn06IHtcbiAgICBsZXZlbDogbnVtYmVyO1xuICAgIHZhbHVlOiBHcm91cEVsZW1lbnQ8VD47XG4gICAgd2lkdGg6IG51bWJlcjtcbiAgICBjb25maWc/OiBHcm91cGluZ0NvbmZpZzxUPjtcbn0pIHtcbiAgICBjb25zdCBzb3VyY2VQYXRoID0gdXNlQ29udGV4dChDVVJSRU5UX0ZJTEVfQ09OVEVYVCk7XG4gICAgY29uc3QgcmF3UmVuZGVyYWJsZSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICBpZiAoY29uZmlnPy5yZW5kZXIpIHJldHVybiBjb25maWcucmVuZGVyKHZhbHVlLmtleSwgdmFsdWUucm93cyk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPGgyPlxuICAgICAgICAgICAgICAgICAgICA8TGl0IHNvdXJjZVBhdGg9e3NvdXJjZVBhdGh9IGlubGluZT17dHJ1ZX0gdmFsdWU9e3ZhbHVlLmtleX0gLz5cbiAgICAgICAgICAgICAgICA8L2gyPlxuICAgICAgICAgICAgKTtcbiAgICB9LCBbY29uZmlnPy5yZW5kZXIsIHZhbHVlLmtleSwgdmFsdWUucm93c10pO1xuICAgIGNvbnN0IHJlbmRlcmFibGUgPSB1c2VBc0VsZW1lbnQocmF3UmVuZGVyYWJsZSk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8dHIgY2xhc3NOYW1lPVwiZGF0YWNvcmUtdGFibGUtZ3JvdXAtaGVhZGVyXCI+XG4gICAgICAgICAgICA8dGQgY29sU3Bhbj17d2lkdGh9PntyZW5kZXJhYmxlfTwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgKTtcbn1cblxuLyoqIEEgc2luZ2xlIHJvdyBpbnNpZGUgdGhlIHRhYmxlLlxuICogQGhpZGRlblxuICovXG5leHBvcnQgZnVuY3Rpb24gVGFibGVSb3c8VD4oeyBsZXZlbCwgcm93LCBjb2x1bW5zIH06IHsgbGV2ZWw6IG51bWJlcjsgcm93OiBUOyBjb2x1bW5zOiBWYW5pbGxhQ29sdW1uPFQ+W10gfSkge1xuICAgIHJldHVybiAoXG4gICAgICAgIDx0ciBjbGFzc05hbWU9XCJkYXRhY29yZS10YWJsZS1yb3dcIiBzdHlsZT17bGV2ZWwgPyBgcGFkZGluZy1sZWZ0OiAke2xldmVsICogNX1weGAgOiB1bmRlZmluZWR9PlxuICAgICAgICAgICAge2NvbHVtbnMubWFwKChjb2wpID0+IChcbiAgICAgICAgICAgICAgICA8VGFibGVSb3dDZWxsIHJvdz17cm93fSBjb2x1bW49e2NvbH0gLz5cbiAgICAgICAgICAgICkpfVxuICAgICAgICA8L3RyPlxuICAgICk7XG59XG5cbi8qKiBBIHNpbmdsZSBjZWxsIGluc2lkZSBvZiBhIHJvdyBvZiB0aGUgdGFibGUuXG4gKiBAaGlkZGVuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBUYWJsZVJvd0NlbGw8VD4oeyByb3csIGNvbHVtbiB9OiB7IHJvdzogVDsgY29sdW1uOiBWYW5pbGxhQ29sdW1uPFQ+IH0pIHtcbiAgICBjb25zdCB2YWx1ZSA9IHVzZU1lbW8oKCkgPT4gY29sdW1uLnZhbHVlKHJvdyksIFtyb3csIGNvbHVtbi52YWx1ZV0pO1xuICAgIGNvbnN0IFtlZGl0YWJsZVN0YXRlLCBkaXNwYXRjaF0gPSB1c2VFZGl0YWJsZURpc3BhdGNoPHR5cGVvZiB2YWx1ZT4oe1xuICAgICAgICBjb250ZW50OiB2YWx1ZSxcbiAgICAgICAgaXNFZGl0aW5nOiBmYWxzZSxcbiAgICAgICAgdXBkYXRlcjogKHYpID0+IGNvbHVtbi5vblVwZGF0ZSAmJiBjb2x1bW4ub25VcGRhdGUodiwgcm93KSxcbiAgICB9KTtcbiAgICBjb25zdCByZW5kZXJhYmxlID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIGlmIChjb2x1bW4ucmVuZGVyKSB7XG4gICAgICAgICAgICBsZXQgciA9IGNvbHVtbi5yZW5kZXIoZWRpdGFibGVTdGF0ZS5jb250ZW50LCByb3cpO1xuICAgICAgICAgICAgaWYgKHIgJiYgdHlwZW9mIHIgPT0gXCJvYmplY3RcIiAmJiBcInByb3BzXCIgaW4gcikgcmV0dXJuIHsgLi4uciwgcHJvcHM6IHsgLi4uci5wcm9wcywgZGlzcGF0Y2ggfSB9O1xuICAgICAgICAgICAgcmV0dXJuIHI7XG4gICAgICAgIH0gZWxzZSByZXR1cm4gdmFsdWU7XG4gICAgfSwgW3JvdywgY29sdW1uLnJlbmRlciwgdmFsdWVdKTtcblxuICAgIGNvbnN0IHJlbmRlcmVkID0gdXNlQXNFbGVtZW50KHJlbmRlcmFibGUpO1xuXG4gICAgY29uc3QgRWRpdG9yID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIGxldCBlO1xuICAgICAgICBpZiAoY29sdW1uLmVkaXRhYmxlICYmIGNvbHVtbi5lZGl0b3IpIGUgPSBjb2x1bW4uZWRpdG9yKGVkaXRhYmxlU3RhdGUuY29udGVudCwgcm93KTtcbiAgICAgICAgZWxzZSBlID0gbnVsbDtcbiAgICAgICAgaWYgKGUpIHJldHVybiB7IC4uLmUsIHByb3BzOiB7IC4uLmUucHJvcHMsIGRpc3BhdGNoIH0gfTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgfSwgW3JvdywgY29sdW1uLmVkaXRvciwgY29sdW1uLmVkaXRhYmxlLCB2YWx1ZV0pO1xuICAgIHJldHVybiAoXG4gICAgICAgIDx0ZFxuICAgICAgICAgICAgb25EYmxDbGljaz17KCkgPT4gZGlzcGF0Y2goeyB0eXBlOiBcImVkaXRpbmctdG9nZ2xlZFwiLCBuZXdWYWx1ZTogIWVkaXRhYmxlU3RhdGUuaXNFZGl0aW5nIH0pfVxuICAgICAgICAgICAgY2xhc3NOYW1lPVwiZGF0YWNvcmUtdGFibGUtY2VsbFwiXG4gICAgICAgID5cbiAgICAgICAgICAgIHtjb2x1bW4uZWRpdGFibGUgPyAoXG4gICAgICAgICAgICAgICAgPEVkaXRhYmxlPHR5cGVvZiB2YWx1ZT5cbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdFJlbmRlcj17cmVuZGVyZWR9XG4gICAgICAgICAgICAgICAgICAgIGVkaXRvcj17RWRpdG9yfVxuICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaD17ZGlzcGF0Y2h9XG4gICAgICAgICAgICAgICAgICAgIHN0YXRlPXtlZGl0YWJsZVN0YXRlfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgIHJlbmRlcmVkXG4gICAgICAgICAgICApfVxuICAgICAgICA8L3RkPlxuICAgICk7XG59XG5cbi8qKiBFbnN1cmUgdGhhdCBhIGdpdmVuIGxpdGVyYWwgb3IgZWxlbWVudCBpbnB1dCBpcyByZW5kZXJlZCBhcyBhIEpTWC5FbGVtZW50LlxuICogQGhpZGRlblxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlQXNFbGVtZW50KGVsZW1lbnQ6IFZOb2RlIHwgTGl0ZXJhbCk6IFZOb2RlIHtcbiAgICBjb25zdCBzb3VyY2VQYXRoID0gdXNlQ29udGV4dChDVVJSRU5UX0ZJTEVfQ09OVEVYVCk7XG5cbiAgICByZXR1cm4gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIGlmIChpc1ZhbGlkRWxlbWVudChlbGVtZW50KSkge1xuICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQgYXMgVk5vZGU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gPExpdCBzb3VyY2VQYXRoPXtzb3VyY2VQYXRofSBpbmxpbmU9e3RydWV9IHZhbHVlPXtlbGVtZW50IGFzIGFueX0gLz47XG4gICAgICAgIH1cbiAgICB9LCBbZWxlbWVudF0pO1xufVxuLyoqIFByb3ZpZGVzIGEgc29ydCBidXR0b24gdGhhdCBoYXMgYSBjbGljayBoYW5kbGVyLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFNvcnRCdXR0b24oe1xuICAgIGRpcmVjdGlvbixcbiAgICBvbkNsaWNrLFxuICAgIGNsYXNzTmFtZSxcbn06IHtcbiAgICBkaXJlY3Rpb24/OiBTb3J0RGlyZWN0aW9uO1xuICAgIG9uQ2xpY2s/OiAoZXZ0OiBNb3VzZUV2ZW50KSA9PiBhbnk7XG4gICAgY2xhc3NOYW1lPzogc3RyaW5nO1xufSkge1xuICAgIGNvbnN0IGljb24gPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSBcImFzY2VuZGluZ1wiKSByZXR1cm4gZmFTb3J0RG93bjtcbiAgICAgICAgZWxzZSBpZiAoZGlyZWN0aW9uID09IFwiZGVzY2VuZGluZ1wiKSByZXR1cm4gZmFTb3J0VXA7XG4gICAgICAgIHJldHVybiBmYVNvcnQ7XG4gICAgfSwgW2RpcmVjdGlvbl0pO1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPGRpdiBvbkNsaWNrPXtvbkNsaWNrfSBjbGFzc05hbWU9e2NsYXNzTmFtZX0+XG4gICAgICAgICAgICA8Rm9udEF3ZXNvbWVJY29uIGljb249e2ljb259IC8+XG4gICAgICAgIDwvZGl2PlxuICAgICk7XG59XG5cbi8qKiBEZWZhdWx0IGNvbXBhcmF0b3IgZm9yIHNvcnRpbmcgb24gYSB0YWJsZSBjb2x1bW4uICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9UQUJMRV9DT01QQVJBVE9SOiA8VD4oYTogTGl0ZXJhbCwgYjogTGl0ZXJhbCwgYW86IFQsIGJvOiBUKSA9PiBudW1iZXIgPSAoYSwgYiwgX2FvLCBfYm8pID0+XG4gICAgTGl0ZXJhbHMuY29tcGFyZShhLCBiKTtcblxuLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFRhYmxlIEhvb2tzIC8vXG4vLy8vLy8vLy8vLy8vLy8vL1xuXG5leHBvcnQgdHlwZSBUYWJsZUFjdGlvbiA9XG4gICAgfCB7IHR5cGU6IFwicmVzZXQtYWxsXCIgfVxuICAgIHwgeyB0eXBlOiBcInNldC1wYWdlXCI7IHBhZ2U6IG51bWJlciB9XG4gICAgfCB7IHR5cGU6IFwic29ydC1jb2x1bW5cIjsgY29sdW1uOiBzdHJpbmc7IGRpcmVjdGlvbj86IFwiYXNjZW5kaW5nXCIgfCBcImRlc2NlbmRpbmdcIiB9O1xuXG5leHBvcnQgdHlwZSBTb3J0RGlyZWN0aW9uID0gXCJhc2NlbmRpbmdcIiB8IFwiZGVzY2VuZGluZ1wiO1xuXG4vKiogVGhlIHdheXMgdGhhdCB0aGUgdGFibGUgY2FuIGJlIHNvcnRlZC4gKi9cbmV4cG9ydCB0eXBlIFNvcnRPbiA9IHsgdHlwZTogXCJjb2x1bW5cIjsgaWQ6IHN0cmluZzsgZGlyZWN0aW9uOiBTb3J0RGlyZWN0aW9uIH07XG4iLCAiLyoqXG4gKiBAbW9kdWxlIHZpZXdzXG4gKi9cbmltcG9ydCB7IFZOb2RlIH0gZnJvbSBcInByZWFjdFwiO1xuaW1wb3J0IHsgUHJvcHNXaXRoQ2hpbGRyZW4gfSBmcm9tIFwicHJlYWN0L2NvbXBhdFwiO1xuaW1wb3J0IHsgdXNlQ29udHJvbGxlZFN0YXRlIH0gZnJvbSBcInVpL2hvb2tzXCI7XG5cbmltcG9ydCBcIi4vY2FsbG91dC5jc3NcIjtcbmltcG9ydCB7IGNvbWJpbmVDbGFzc2VzIH0gZnJvbSBcIi4uL2Jhc2ljc1wiO1xuXG4vKiogR2VuZXJhbCBwcm9wZXJ0aWVzIGZvciBjb25maWd1cmluZyBhIGNhbGxvdXQuXG4gKiBAZ3JvdXAgUHJvcHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDYWxsb3V0UHJvcHMge1xuICAgIC8qKiBUaXRsZSBvZiB0aGUgY2FsbG91dC4gKi9cbiAgICB0aXRsZTogc3RyaW5nIHwgVk5vZGU7XG4gICAgLyoqIEFyYml0cmFyeSBpY29uIHRvIHNob3cgYXQgdGhlIGxlZnQgc2lkZSBvZiB0aGUgdGl0bGUgaW4gdGhlIGNhbGxvdXQuICovXG4gICAgaWNvbj86IFZOb2RlO1xuICAgIC8qKiBUaGUgdHlwZSBvZiB0aGUgY2FsbG91dC4gKi9cbiAgICB0eXBlPzogc3RyaW5nO1xuICAgIC8qKiBXaGV0aGVyIHRoZSBjYWxsb3V0IGlzIGNvbGxhcHNpYmxlIChkZWZhdWx0cyB0byB0cnVlKS4gKi9cbiAgICBjb2xsYXBzaWJsZT86IGJvb2xlYW47XG5cbiAgICAvKiogQ29udHJvbGxlZCBwcm9wIGZvciBzZXR0aW5nIHdoZXRoZXIgdGhlIGNhbGxvdXQgaXMgb3Blbi4gKi9cbiAgICBvcGVuOiBib29sZWFuO1xuICAgIC8qKiBXaGV0aGVyIHRoZSBjYWxsb3V0IGlzIGluaXRpYWxseSBvcGVuIGlmIHVuY29udHJvbGxlZC4gKi9cbiAgICBpbml0aWFsT3Blbj86IGJvb2xlYW47XG4gICAgLyoqIENhbGxlZCB3aGVuZXZlciB0aGUgb3BlbiBzdGF0ZSBvZiB0aGUgY2FsbG91dCBjaGFuZ2VzIGR1ZSB0byB1c2VyIGFjdGlvbi4gKi9cbiAgICBvbk9wZW5DaGFuZ2U/OiAodmFsdWU6IGJvb2xlYW4pID0+IHZvaWQ7XG59XG5cbi8qKiBTcGxpdHMgb24gYHw8c3R1ZmY+YC4gKi9cbmNvbnN0IE1FVEFEQVRBX1NQTElUX1JFR0VYID0gL1xcfCguKikvcztcblxuLyoqXG4gKiBAZ3JvdXAgQ29tcG9uZW50c1xuICogQHBhcmFtIHByb3BzIHtAaW5oZXJpdERvYyBDYWxsb3V0UHJvcHN9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBDYWxsb3V0KHtcbiAgICBjb2xsYXBzaWJsZSA9IHRydWUsXG4gICAgb3Blbjogb3BlblByb3AsXG4gICAgaW5pdGlhbE9wZW4sXG4gICAgb25PcGVuQ2hhbmdlLFxuICAgIHRpdGxlLFxuICAgIGljb24sXG4gICAgY2hpbGRyZW4sXG4gICAgdHlwZSxcbn06IFByb3BzV2l0aENoaWxkcmVuPENhbGxvdXRQcm9wcz4pIHtcbiAgICBjb25zdCBbb3Blbiwgc2V0T3Blbl0gPSB1c2VDb250cm9sbGVkU3RhdGUoaW5pdGlhbE9wZW4gPz8gdHJ1ZSwgb3BlblByb3AsIG9uT3BlbkNoYW5nZSk7XG4gICAgcmV0dXJuIChcbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgZGF0YS1jYWxsb3V0LW1ldGFkYXRhPXt0eXBlPy5zcGxpdChNRVRBREFUQV9TUExJVF9SRUdFWCk/LlsxXX1cbiAgICAgICAgICAgIGRhdGEtY2FsbG91dD17dHlwZT8uc3BsaXQoTUVUQURBVEFfU1BMSVRfUkVHRVgpPy5bMF19XG4gICAgICAgICAgICBkYXRhLWNhbGxvdXQtZm9sZD17b3BlbiA/IFwiK1wiIDogXCItXCJ9XG4gICAgICAgICAgICBjbGFzc05hbWU9e2NvbWJpbmVDbGFzc2VzKFwiZGF0YWNvcmVcIiwgXCJjYWxsb3V0XCIsIGNvbGxhcHNpYmxlID8gXCJpcy1jb2xsYXBzaWJsZVwiIDogdW5kZWZpbmVkKX1cbiAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjYWxsb3V0LXRpdGxlXCIgb25DbGljaz17KCkgPT4gY29sbGFwc2libGUgJiYgc2V0T3Blbighb3Blbil9PlxuICAgICAgICAgICAgICAgIHtpY29uICYmIDxkaXYgY2xhc3NOYW1lPVwiY2FsbG91dC1pY29uXCI+e2ljb259PC9kaXY+fVxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY2FsbG91dC10aXRsZS1pbm5lclwiPnt0aXRsZX08L2Rpdj5cbiAgICAgICAgICAgICAgICB7Y29sbGFwc2libGUgJiYgKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y29tYmluZUNsYXNzZXMoXCJjYWxsb3V0LWZvbGRcIiwgIW9wZW4gPyBcImlzLWNvbGxhcHNlZFwiIDogdW5kZWZpbmVkKX0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIyNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMjRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInN2Zy1pY29uIGx1Y2lkZS1jaGV2cm9uLWRvd25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJtNiA5IDYgNiA2LTZcIj48L3BhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAge29wZW4gJiYgPGRpdiBjbGFzc05hbWU9XCJjYWxsb3V0LWNvbnRlbnRcIj57Y2hpbGRyZW59PC9kaXY+fVxuICAgICAgICA8L2Rpdj5cbiAgICApO1xufVxuIiwgIi8qKlxuICogQG1vZHVsZSB2aWV3c1xuICovXG5cbmltcG9ydCB7IExpdGVyYWwgfSBmcm9tIFwiZXhwcmVzc2lvbi9saXRlcmFsXCI7XG5pbXBvcnQgeyBWTm9kZSB9IGZyb20gXCJwcmVhY3RcIjtcbmltcG9ydCB7IHVzZU1lbW8gfSBmcm9tIFwicHJlYWN0L2hvb2tzXCI7XG5cbmltcG9ydCBcIi4vY2FyZHMuY3NzXCI7XG4vKipcbiAqIFByb3BzIGZvciB0aGUgY2FyZCBjb21wb25lbnRcbiAqXG4gKiBAZ3JvdXAgUHJvcHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDYXJkUHJvcHM8VD4ge1xuICAgIC8qKiB0aGUgYWN0dWFsIHZhbHVlIGhlbGQgaW4gdGhpcyBjYXJkLiAqL1xuICAgIHZhbHVlOiBUO1xuXG4gICAgLyoqIFRoZSB0aXRsZSBvZiB0aGUgY2FyZC4gKi9cbiAgICB0aXRsZTogTGl0ZXJhbCB8ICgodmFsOiBUKSA9PiBMaXRlcmFsIHwgVk5vZGUpO1xuXG4gICAgLyoqIFRoZSByYXcgY29udGVudCBvZiB0aGUgY2FyZC4gKi9cbiAgICBjb250ZW50OiBMaXRlcmFsIHwgKCh2YWw6IFQpID0+IExpdGVyYWwgfCBWTm9kZSk7XG5cbiAgICAvKiogb3B0aW9uYWwgZm9vdGVyIChiZWNhdXNlIHdoeSBub3Q/KSAqL1xuICAgIGZvb3Rlcj86IExpdGVyYWwgfCAoKHZhbDogVCkgPT4gTGl0ZXJhbCB8IFZOb2RlKTtcblxuICAgIC8qKiBJZiB0cnVlLCB0aGUgdGl0bGUgd2lsbCBiZSByZW5kZXJlZCBjZW50ZXJlZC4gKi9cbiAgICBjZW50ZXJUaXRsZT86IGJvb2xlYW47XG59XG4vKipcbiAqIEEgY2FyZCB3aXRoIGEgdGl0bGUgYW5kIGNvbnRlbnRcbiAqXG4gKiBAZ3JvdXAgQ29tcG9uZW50c1xuICovXG5leHBvcnQgZnVuY3Rpb24gQ2FyZDxUPihwcm9wczogQ2FyZFByb3BzPFQ+KSB7XG4gICAgY29uc3QgY2FyZFRpdGxlID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgcHJvcHMudGl0bGUgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgcmV0dXJuIHByb3BzLnRpdGxlKHByb3BzLnZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBwcm9wcy50aXRsZTtcbiAgICAgICAgfVxuICAgIH0sIFtwcm9wcy52YWx1ZSwgcHJvcHMudGl0bGVdKTtcblxuICAgIGNvbnN0IGlubmVyQ29udGVudCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIHByb3BzLmNvbnRlbnQgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIHByb3BzLmNvbnRlbnQocHJvcHMudmFsdWUpO1xuICAgICAgICBlbHNlIHJldHVybiBwcm9wcy5jb250ZW50O1xuICAgIH0sIFtwcm9wcy52YWx1ZSwgcHJvcHMuY29udGVudF0pO1xuXG4gICAgY29uc3QgZm9vdGVyQ29udGVudCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICBpZiAocHJvcHMuZm9vdGVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgcHJvcHMuZm9vdGVyID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJvcHMuZm9vdGVyKHByb3BzLnZhbHVlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHByb3BzLmZvb3RlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9LCBbcHJvcHMuZm9vdGVyLCBwcm9wcy52YWx1ZV0pO1xuXG4gICAgY29uc3QgdGl0bGVDbGFzc2VzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIGxldCBiYXNlID0gW1wiZGF0YWNvcmUtY2FyZC10aXRsZVwiXTtcbiAgICAgICAgaWYgKHByb3BzLmNlbnRlclRpdGxlKSBiYXNlID0gYmFzZS5jb25jYXQoXCJjZW50ZXJlZFwiKTtcbiAgICAgICAgcmV0dXJuIGJhc2U7XG4gICAgfSwgW3Byb3BzLmNlbnRlclRpdGxlLCBwcm9wcy50aXRsZSwgcHJvcHMuY29udGVudCwgcHJvcHMudmFsdWVdKTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZGF0YWNvcmUtY2FyZFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3RpdGxlQ2xhc3Nlcy5qb2luKFwiIFwiKX0+e2NhcmRUaXRsZX08L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZGF0YWNvcmUtY2FyZC1pbm5lclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZGF0YWNvcmUtY2FyZC1jb250ZW50XCI+e2lubmVyQ29udGVudH08L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRhdGFjb3JlLWNhcmQtZm9vdGVyXCI+e2Zvb3RlckNvbnRlbnR9PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgKTtcbn1cbiIsICIvKipcbiAqIEBtb2R1bGUgYXBpXG4gKi9cbmltcG9ydCB7IEdyb3VwaW5ncywgTGl0ZXJhbHMgfSBmcm9tIFwiZXhwcmVzc2lvbi9saXRlcmFsXCI7XG5cbi8qKiBBIGZ1bmN0aW9uIHdoaWNoIG1hcHMgYW4gYXJyYXkgZWxlbWVudCB0byBzb21lIHZhbHVlLiAqL1xuZXhwb3J0IHR5cGUgQXJyYXlGdW5jPFQsIE8+ID0gKGVsZW06IFQsIGluZGV4OiBudW1iZXIsIGFycjogVFtdKSA9PiBPO1xuXG4vKiogQSBmdW5jdGlvbiB3aGljaCBjb21wYXJlcyB0d28gdHlwZXMuICovXG5leHBvcnQgdHlwZSBBcnJheUNvbXBhcmF0b3I8VD4gPSAoYTogVCwgYjogVCkgPT4gbnVtYmVyO1xuXG4vKiogRmluZHMgdGhlIHZhbHVlIG9mIHRoZSBsb3dlc3QgdmFsdWUgdHlwZSBpbiBhIGdyb3VwaW5nLiAqL1xuZXhwb3J0IHR5cGUgTG93ZXN0S2V5PFQ+ID0gVCBleHRlbmRzIHsga2V5OiBhbnk7IHJvd3M6IGFueSB9ID8gTG93ZXN0S2V5PFRbXCJyb3dzXCJdWzBdPiA6IFQ7XG5cbi8qKiBBIHJpZGljdWxvdXMgdHlwZSB3aGljaCBwcm9wZXJseSB0eXBlcyB0aGUgcmVzdWx0IG9mIHRoZSAnZ3JvdXBJbicgY29tbWFuZC4gKi9cbmV4cG9ydCB0eXBlIEluZ3JvdXBlZDxVLCBUPiA9IFQgZXh0ZW5kcyB7IGtleTogYW55OyByb3dzOiBhbnkgfVxuICAgID8geyBrZXk6IFRbXCJrZXlcIl07IHJvd3M6IEluZ3JvdXBlZDxVLCBUW1wicm93c1wiXVswXT4gfVxuICAgIDogeyBrZXk6IFU7IHJvd3M6IFRbXSB9O1xuXG4vKipcbiAqIFByb3hpZWQgaW50ZXJmYWNlIHdoaWNoIGFsbG93cyBtYW5pcHVsYXRpbmcgYXJyYXktYmFzZWQgZGF0YS4gQWxsIGZ1bmN0aW9ucyBvbiBhIGRhdGEgYXJyYXkgcHJvZHVjZSBhIE5FVyBhcnJheVxuICogKGkuZS4sIHRoZSBhcnJheXMgYXJlIGltbXV0YWJsZSkuXG4gKiBAZ3JvdXAgQ29tbW9uIFR5cGVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YUFycmF5PFQ+IHtcbiAgICAvKiogVGhlIHRvdGFsIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgYXJyYXkuICovXG4gICAgbGVuZ3RoOiBudW1iZXI7XG5cbiAgICAvKiogQXBwbGllcyB0aGUgZ2l2ZW4gZnVuY3Rpb24gdG8gdGhlIGVudGlyZSBkYXRhIGFycmF5LiBBbGxvd3MgdXNpbmcgZnVuY3Rpb24gY2hhaW5pbmcgd2hpbGUgYXBwbHlpbmcgYW4gYXJiaXRyYXJ5IGludGVybWVkaWF0ZSBmdW5jdGlvbi4gKi9cbiAgICBjaGFpbjxVPihvcDogKGFycjogRGF0YUFycmF5PFQ+KSA9PiBEYXRhQXJyYXk8VT4pOiBEYXRhQXJyYXk8VT47XG5cbiAgICAvKiogRmlsdGVyIHRoZSBkYXRhIGFycmF5IGRvd24gdG8ganVzdCBlbGVtZW50cyB3aGljaCBtYXRjaCB0aGUgZ2l2ZW4gcHJlZGljYXRlLiAqL1xuICAgIHdoZXJlKHByZWRpY2F0ZTogQXJyYXlGdW5jPFQsIGJvb2xlYW4+KTogRGF0YUFycmF5PFQ+O1xuICAgIC8qKiBBbGlhcyBmb3IgJ3doZXJlJyBmb3IgcGVvcGxlIHdobyB3YW50IGFycmF5IHNlbWFudGljcy4gKi9cbiAgICBmaWx0ZXIocHJlZGljYXRlOiBBcnJheUZ1bmM8VCwgYm9vbGVhbj4pOiBEYXRhQXJyYXk8VD47XG5cbiAgICAvKiogTWFwIGVsZW1lbnRzIGluIHRoZSBkYXRhIGFycmF5IGJ5IGFwcGx5aW5nIGEgZnVuY3Rpb24gdG8gZWFjaC4gKi9cbiAgICBtYXA8VT4oZjogQXJyYXlGdW5jPFQsIFU+KTogRGF0YUFycmF5PFU+O1xuICAgIC8qKiBNYXAgZWxlbWVudHMgaW4gdGhlIGRhdGEgYXJyYXkgYnkgYXBwbHlpbmcgYSBmdW5jdGlvbiB0byBlYWNoLCB0aGVuIGZsYXR0ZW4gdGhlIHJlc3VsdHMgdG8gcHJvZHVjZSBhIG5ldyBhcnJheS4gKi9cbiAgICBmbGF0TWFwPFU+KGY6IEFycmF5RnVuYzxULCBVW10+KTogRGF0YUFycmF5PFU+O1xuICAgIC8qKiBNdXRhYmx5IGNoYW5nZSBlYWNoIHZhbHVlIGluIHRoZSBhcnJheSwgcmV0dXJuaW5nIHRoZSBzYW1lIGFycmF5IHdoaWNoIHlvdSBjYW4gZnVydGhlciBjaGFpbiBvZmYgb2YuICovXG4gICAgbXV0YXRlKGY6IEFycmF5RnVuYzxULCB2b2lkPik6IERhdGFBcnJheTxUPjtcblxuICAgIC8qKiBMaW1pdCB0aGUgdG90YWwgbnVtYmVyIG9mIGVudHJpZXMgaW4gdGhlIGFycmF5IHRvIHRoZSBnaXZlbiB2YWx1ZS4gKi9cbiAgICBsaW1pdChjb3VudDogbnVtYmVyKTogRGF0YUFycmF5PFQ+O1xuICAgIC8qKlxuICAgICAqIFRha2UgYSBzbGljZSBvZiB0aGUgYXJyYXkuIElmIGBzdGFydGAgaXMgdW5kZWZpbmVkLCBpdCBpcyBhc3N1bWVkIHRvIGJlIDA7IGlmIGBlbmRgIGlzIHVuZGVmaW5lZCwgaXQgaXMgYXNzdW1iZWRcbiAgICAgKiB0byBiZSB0aGUgZW5kIG9mIHRoZSBhcnJheS5cbiAgICAgKi9cbiAgICBzbGljZShzdGFydD86IG51bWJlciwgZW5kPzogbnVtYmVyKTogRGF0YUFycmF5PFQ+O1xuICAgIC8qKiBDb25jYXRlbmF0ZSB0aGUgdmFsdWVzIGluIHRoaXMgZGF0YSBhcnJheSB3aXRoIHRob3NlIG9mIGFub3RoZXIgaXRlcmFibGUgLyBkYXRhIGFycmF5IC8gYXJyYXkuICovXG4gICAgY29uY2F0KG90aGVyOiBJdGVyYWJsZTxUPik6IERhdGFBcnJheTxUPjtcblxuICAgIC8qKiBSZXR1cm4gdGhlIGZpcnN0IGluZGV4IG9mIHRoZSBnaXZlbiAob3B0aW9uYWxseSBzdGFydGluZyB0aGUgc2VhcmNoKSAqL1xuICAgIGluZGV4T2YoZWxlbWVudDogVCwgZnJvbUluZGV4PzogbnVtYmVyKTogbnVtYmVyO1xuICAgIC8qKiBSZXR1cm4gdGhlIGZpcnN0IGVsZW1lbnQgdGhhdCBzYXRpc2ZpZXMgdGhlIGdpdmVuIHByZWRpY2F0ZS4gKi9cbiAgICBmaW5kKHByZWQ6IEFycmF5RnVuYzxULCBib29sZWFuPik6IFQgfCB1bmRlZmluZWQ7XG4gICAgLyoqIEZpbmQgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBlbGVtZW50IHRoYXQgc2F0aXNmaWVzIHRoZSBnaXZlbiBwcmVkaWNhdGUuIFJldHVybnMgLTEgaWYgbm90aGluZyB3YXMgZm91bmQuICovXG4gICAgZmluZEluZGV4KHByZWQ6IEFycmF5RnVuYzxULCBib29sZWFuPiwgZnJvbUluZGV4PzogbnVtYmVyKTogbnVtYmVyO1xuICAgIC8qKiBSZXR1cm5zIHRydWUgaWYgdGhlIGFycmF5IGNvbnRhaW5zIHRoZSBnaXZlbiBlbGVtZW50LCBhbmQgZmFsc2Ugb3RoZXJ3aXNlLiAqL1xuICAgIGluY2x1ZGVzKGVsZW1lbnQ6IFQpOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogUmV0dXJuIGEgc3RyaW5nIG9idGFpbmVkIGJ5IGNvbnZlcnRpbmcgZWFjaCBlbGVtZW50IGluIHRoZSBhcnJheSB0byBhIHN0cmluZywgYW5kIGpvaW5pbmcgaXQgd2l0aCB0aGVcbiAgICAgKiBnaXZlbiBzZXBhcmF0b3IgKHdoaWNoIGRlZmF1bHRzIHRvICcsICcpLlxuICAgICAqL1xuICAgIGpvaW4oc2VwPzogc3RyaW5nKTogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogUmV0dXJuIGEgc29ydGVkIGFycmF5IHNvcnRlZCBieSB0aGUgZ2l2ZW4ga2V5OyBhbiBvcHRpb25hbCBjb21wYXJhdG9yIGNhbiBiZSBwcm92aWRlZCwgd2hpY2ggd2lsbFxuICAgICAqIGJlIHVzZWQgdG8gY29tcGFyZSB0aGUga2V5cyBpbiBsZWl1IG9mIHRoZSBkZWZhdWx0IGRhdGF2aWV3IGNvbXBhcmF0b3IuXG4gICAgICovXG4gICAgc29ydDxVPihrZXk6IEFycmF5RnVuYzxULCBVPiwgZGlyZWN0aW9uPzogXCJhc2NcIiB8IFwiZGVzY1wiLCBjb21wYXJhdG9yPzogQXJyYXlDb21wYXJhdG9yPFU+KTogRGF0YUFycmF5PFQ+O1xuXG4gICAgLyoqXG4gICAgICogTXV0YWJseSBtb2RpZnkgdGhlIGN1cnJlbnQgYXJyYXkgd2l0aCBhbiBpbiBwbGFjZSBzb3J0OyB0aGlzIGlzIGxlc3MgZmxleGlibGUgdGhhbiBhIHJlZ3VsYXIgc29ydCBpbiBleGNoYW5nZVxuICAgICAqIGZvciBiZWluZyBhIGxpdHRsZSBtb3JlIHBlcmZvcm1hbnQuIE9ubHkgdXNlIHRoaXMgaXMgcGVyZm9ybWFuY2UgaXMgYSBzZXJpb3VzIGNvbnNpZGVyYXRpb24uXG4gICAgICovXG4gICAgc29ydEluUGxhY2U8VT4oa2V5OiAodjogVCkgPT4gVSwgZGlyZWN0aW9uPzogXCJhc2NcIiB8IFwiZGVzY1wiLCBjb21wYXJhdG9yPzogQXJyYXlDb21wYXJhdG9yPFU+KTogRGF0YUFycmF5PFQ+O1xuXG4gICAgLyoqXG4gICAgICogUmV0dXJuIGFuIGFycmF5IHdoZXJlIGVsZW1lbnRzIGFyZSBncm91cGVkIGJ5IHRoZSBnaXZlbiBrZXk7IHRoZSByZXN1bHRpbmcgYXJyYXkgd2lsbCBoYXZlIG9iamVjdHMgb2YgdGhlIGZvcm1cbiAgICAgKiBcXGB7IGtleTogXFw8a2V5IHZhbHVlXFw+LCByb3dzOiBEYXRhQXJyYXkgfWAuXG4gICAgICovXG4gICAgZ3JvdXBCeTxVPihrZXk6IEFycmF5RnVuYzxULCBVPiwgY29tcGFyYXRvcj86IEFycmF5Q29tcGFyYXRvcjxVPik6IERhdGFBcnJheTx7IGtleTogVTsgcm93czogVFtdIH0+O1xuXG4gICAgLyoqXG4gICAgICogSWYgdGhlIGFycmF5IGlzIG5vdCBncm91cGVkLCBncm91cHMgaXQgYXMgYGdyb3VwQnlgIGRvZXM7IG90aGVyd2lzZSwgZ3JvdXBzIHRoZSBlbGVtZW50cyBpbnNpZGUgZWFjaCBjdXJyZW50XG4gICAgICogZ3JvdXAuIFRoaXMgYWxsb3dzIGZvciB0b3AtZG93biByZWN1cnNpdmUgZ3JvdXBpbmcgd2hpY2ggbWF5IGJlIGVhc2llciB0aGFuIGJvdHRvbS11cCBncm91cGluZy5cbiAgICAgKi9cbiAgICBncm91cEluPFU+KGtleTogQXJyYXlGdW5jPExvd2VzdEtleTxUPiwgVT4sIGNvbXBhcmF0b3I/OiBBcnJheUNvbXBhcmF0b3I8VT4pOiBEYXRhQXJyYXk8SW5ncm91cGVkPFUsIFQ+PjtcblxuICAgIC8qKlxuICAgICAqIFJldHVybiBkaXN0aW5jdCBlbnRyaWVzLiBJZiBhIGtleSBpcyBwcm92aWRlZCwgdGhlbiByb3dzIHdpdGggZGlzdGluY3Qga2V5cyBhcmUgcmV0dXJuZWQuXG4gICAgICovXG4gICAgZGlzdGluY3Q8VT4oa2V5PzogQXJyYXlGdW5jPFQsIFU+LCBjb21wYXJhdG9yPzogQXJyYXlDb21wYXJhdG9yPFU+KTogRGF0YUFycmF5PFQ+O1xuXG4gICAgLyoqIFJldHVybiB0cnVlIGlmIHRoZSBwcmVkaWNhdGUgaXMgdHJ1ZSBmb3IgYWxsIHZhbHVlcy4gKi9cbiAgICBldmVyeShmOiBBcnJheUZ1bmM8VCwgYm9vbGVhbj4pOiBib29sZWFuO1xuICAgIC8qKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgcHJlZGljYXRlIGlzIHRydWUgZm9yIGF0IGxlYXN0IG9uZSB2YWx1ZS4gKi9cbiAgICBzb21lKGY6IEFycmF5RnVuYzxULCBib29sZWFuPik6IGJvb2xlYW47XG4gICAgLyoqIFJldHVybiB0cnVlIGlmIHRoZSBwcmVkaWNhdGUgaXMgRkFMU0UgZm9yIGFsbCB2YWx1ZXMuICovXG4gICAgbm9uZShmOiBBcnJheUZ1bmM8VCwgYm9vbGVhbj4pOiBib29sZWFuO1xuXG4gICAgLyoqIFJldHVybiB0aGUgZmlyc3QgZWxlbWVudCBpbiB0aGUgZGF0YSBhcnJheS4gUmV0dXJucyB1bmRlZmluZWQgaWYgdGhlIGFycmF5IGlzIGVtcHR5LiAqL1xuICAgIGZpcnN0KCk6IFQ7XG4gICAgLyoqIFJldHVybiB0aGUgbGFzdCBlbGVtZW50IGluIHRoZSBkYXRhIGFycmF5LiBSZXR1cm5zIHVuZGVmaW5lZCBpZiB0aGUgYXJyYXkgaXMgZW1wdHkuICovXG4gICAgbGFzdCgpOiBUO1xuXG4gICAgLyoqIE1hcCBldmVyeSBlbGVtZW50IGluIHRoaXMgZGF0YSBhcnJheSB0byB0aGUgZ2l2ZW4ga2V5LCBhbmQgdGhlbiBmbGF0dGVuIGl0LiovXG4gICAgdG8oa2V5OiBzdHJpbmcpOiBEYXRhQXJyYXk8YW55PjtcbiAgICAvKiogTWFwIGV2ZXJ5IGVsZW1lbnQgaW4gdGhpcyBkYXRhIGFycmF5IHRvIHRoZSBnaXZlbiBrZXk7IHVubGlrZSB0bygpLCBkb2VzIG5vdCBmbGF0dGVuIHRoZSByZXN1bHQuICovXG4gICAgaW50byhrZXk6IHN0cmluZyk6IERhdGFBcnJheTxhbnk+O1xuXG4gICAgLyoqXG4gICAgICogUmVjdXJzaXZlbHkgZXhwYW5kIHRoZSBnaXZlbiBrZXksIGZsYXR0ZW5pbmcgYSB0cmVlIHN0cnVjdHVyZSBiYXNlZCBvbiB0aGUga2V5IGludG8gYSBmbGF0IGFycmF5LiBVc2VmdWwgZm9yIGhhbmRsaW5nXG4gICAgICogaGVpcmFyY2hpY2FsIGRhdGEgbGlrZSB0YXNrcyB3aXRoICdzdWJ0YXNrcycuXG4gICAgICovXG4gICAgZXhwYW5kKGtleTogc3RyaW5nKTogRGF0YUFycmF5PGFueT47XG5cbiAgICAvKiogUnVuIGEgbGFtYmRhIG9uIGVhY2ggZWxlbWVudCBpbiB0aGUgYXJyYXkuICovXG4gICAgZm9yRWFjaChmOiBBcnJheUZ1bmM8VCwgdm9pZD4pOiB2b2lkO1xuXG4gICAgLyoqIENvbnZlcnQgdGhpcyB0byBhIHBsYWluIGphdmFzY3JpcHQgYXJyYXkuICovXG4gICAgYXJyYXkoKTogVFtdO1xuXG4gICAgLyoqIEFsbG93IGl0ZXJhdGluZyBkaXJlY3RseSBvdmVyIHRoZSBhcnJheS4gKi9cbiAgICBbU3ltYm9sLml0ZXJhdG9yXSgpOiBJdGVyYXRvcjxUPjtcblxuICAgIC8qKiBNYXAgaW5kZXhlcyB0byB2YWx1ZXMuICovXG4gICAgW2luZGV4OiBudW1iZXJdOiBhbnk7XG4gICAgLyoqIEF1dG9tYXRpYyBmbGF0dGVuaW5nIG9mIGZpZWxkcy4gRXF1aXZhbGVudCB0byBpbXBsaWNpdGx5IGNhbGxpbmcgYGFycmF5LnRvKFwiZmllbGRcIilgICovXG4gICAgW2ZpZWxkOiBzdHJpbmddOiBhbnk7XG59XG5cbi8qKlxuICogQGludGVybmFsXG4gKiBAaGlkZGVuXG4gKiBJbXBsZW1lbnRhdGlvbiBvZiBEYXRhQXJyYXksIG1pbnVzIHRoZSBkeW5hbWljIHZhcmlhYmxlIGFjY2Vzcywgd2hpY2ggaXMgaW1wbGVtZW50ZWQgdmlhIHByb3h5LlxuICogKi9cbmNsYXNzIERhdGFBcnJheUltcGw8VD4gaW1wbGVtZW50cyBEYXRhQXJyYXk8VD4ge1xuICAgIHByaXZhdGUgc3RhdGljIEFSUkFZX0ZVTkNUSU9OUzogU2V0PHN0cmluZz4gPSBuZXcgU2V0KFtcbiAgICAgICAgXCJjaGFpblwiLFxuICAgICAgICBcIndoZXJlXCIsXG4gICAgICAgIFwiZmlsdGVyXCIsXG4gICAgICAgIFwibWFwXCIsXG4gICAgICAgIFwiZmxhdE1hcFwiLFxuICAgICAgICBcIm11dGF0ZVwiLFxuICAgICAgICBcInNsaWNlXCIsXG4gICAgICAgIFwiY29uY2F0XCIsXG4gICAgICAgIFwiaW5kZXhPZlwiLFxuICAgICAgICBcImxpbWl0XCIsXG4gICAgICAgIFwiZmluZFwiLFxuICAgICAgICBcImZpbmRJbmRleFwiLFxuICAgICAgICBcImluY2x1ZGVzXCIsXG4gICAgICAgIFwiam9pblwiLFxuICAgICAgICBcInNvcnRcIixcbiAgICAgICAgXCJzb3J0SW5QbGFjZVwiLFxuICAgICAgICBcImdyb3VwQnlcIixcbiAgICAgICAgXCJncm91cEluXCIsXG4gICAgICAgIFwiZGlzdGluY3RcIixcbiAgICAgICAgXCJldmVyeVwiLFxuICAgICAgICBcInNvbWVcIixcbiAgICAgICAgXCJub25lXCIsXG4gICAgICAgIFwiZmlyc3RcIixcbiAgICAgICAgXCJsYXN0XCIsXG4gICAgICAgIFwidG9cIixcbiAgICAgICAgXCJpbnRvXCIsXG4gICAgICAgIFwibHdyYXBcIixcbiAgICAgICAgXCJleHBhbmRcIixcbiAgICAgICAgXCJmb3JFYWNoXCIsXG4gICAgICAgIFwibGVuZ3RoXCIsXG4gICAgICAgIFwidmFsdWVzXCIsXG4gICAgICAgIFwiYXJyYXlcIixcbiAgICAgICAgXCJkZWZhdWx0Q29tcGFyYXRvclwiLFxuICAgICAgICBcInRvU3RyaW5nXCIsXG4gICAgICAgIFwic2V0dGluZ3NcIixcbiAgICBdKTtcblxuICAgIHByaXZhdGUgc3RhdGljIEFSUkFZX1BST1hZOiBQcm94eUhhbmRsZXI8RGF0YUFycmF5SW1wbDxhbnk+PiA9IHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAodGFyZ2V0LCBwcm9wLCByZWNpZXZlcikge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBwcm9wID09PSBcInN5bWJvbFwiKSByZXR1cm4gKHRhcmdldCBhcyBhbnkpW3Byb3BdO1xuICAgICAgICAgICAgZWxzZSBpZiAodHlwZW9mIHByb3AgPT09IFwibnVtYmVyXCIpIHJldHVybiB0YXJnZXQudmFsdWVzW3Byb3BdO1xuICAgICAgICAgICAgZWxzZSBpZiAocHJvcCA9PT0gXCJjb25zdHJ1Y3RvclwiKSByZXR1cm4gdGFyZ2V0LnZhbHVlcy5jb25zdHJ1Y3RvcjtcbiAgICAgICAgICAgIGVsc2UgaWYgKCFpc05hTihwYXJzZUludChwcm9wKSkpIHJldHVybiB0YXJnZXQudmFsdWVzW3BhcnNlSW50KHByb3ApXTtcbiAgICAgICAgICAgIGVsc2UgaWYgKERhdGFBcnJheUltcGwuQVJSQVlfRlVOQ1RJT05TLmhhcyhwcm9wLnRvU3RyaW5nKCkpKSByZXR1cm4gdGFyZ2V0W3Byb3AudG9TdHJpbmcoKV07XG5cbiAgICAgICAgICAgIHJldHVybiB0YXJnZXQudG8ocHJvcCk7XG4gICAgICAgIH0sXG4gICAgfTtcblxuICAgIHB1YmxpYyBzdGF0aWMgd3JhcDxUPihhcnI6IFRbXSwgZGVmYXVsdENvbXBhcmF0b3I6IEFycmF5Q29tcGFyYXRvcjxhbnk+ID0gTGl0ZXJhbHMuY29tcGFyZSk6IERhdGFBcnJheTxUPiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJveHk8RGF0YUFycmF5SW1wbDxUPj4obmV3IERhdGFBcnJheUltcGw8VD4oYXJyLCBkZWZhdWx0Q29tcGFyYXRvciksIERhdGFBcnJheUltcGwuQVJSQVlfUFJPWFkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBsZW5ndGg6IG51bWJlcjtcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XG5cbiAgICBwcml2YXRlIGNvbnN0cnVjdG9yKHB1YmxpYyB2YWx1ZXM6IGFueVtdLCBwdWJsaWMgZGVmYXVsdENvbXBhcmF0b3I6IEFycmF5Q29tcGFyYXRvcjxhbnk+ID0gTGl0ZXJhbHMuY29tcGFyZSkge1xuICAgICAgICB0aGlzLmxlbmd0aCA9IHZhbHVlcy5sZW5ndGg7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsd3JhcDxVPih2YWx1ZXM6IFVbXSk6IERhdGFBcnJheTxVPiB7XG4gICAgICAgIHJldHVybiBEYXRhQXJyYXlJbXBsLndyYXAodmFsdWVzLCB0aGlzLmRlZmF1bHRDb21wYXJhdG9yKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2hhaW48VT4ob3A6IChhcnI6IERhdGFBcnJheTxUPikgPT4gRGF0YUFycmF5PFU+KTogRGF0YUFycmF5PFU+IHtcbiAgICAgICAgcmV0dXJuIG9wKHRoaXMpO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aGVyZShwcmVkaWNhdGU6IEFycmF5RnVuYzxULCBib29sZWFuPik6IERhdGFBcnJheTxUPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmx3cmFwKHRoaXMudmFsdWVzLmZpbHRlcihwcmVkaWNhdGUpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZmlsdGVyKHByZWRpY2F0ZTogQXJyYXlGdW5jPFQsIGJvb2xlYW4+KTogRGF0YUFycmF5PFQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMud2hlcmUocHJlZGljYXRlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbWFwPFU+KGY6IEFycmF5RnVuYzxULCBVPik6IERhdGFBcnJheTxVPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmx3cmFwKHRoaXMudmFsdWVzLm1hcChmKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGZsYXRNYXA8VT4oZjogQXJyYXlGdW5jPFQsIFVbXT4pOiBEYXRhQXJyYXk8VT4ge1xuICAgICAgICBsZXQgcmVzdWx0ID0gW107XG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgICAgbGV0IHZhbHVlID0gZih0aGlzLnZhbHVlc1tpbmRleF0sIGluZGV4LCB0aGlzLnZhbHVlcyk7XG4gICAgICAgICAgICBpZiAoIXZhbHVlIHx8IHZhbHVlLmxlbmd0aCA9PSAwKSBjb250aW51ZTtcblxuICAgICAgICAgICAgZm9yIChsZXQgciBvZiB2YWx1ZSkgcmVzdWx0LnB1c2gocik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5sd3JhcChyZXN1bHQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBtdXRhdGUoZjogQXJyYXlGdW5jPFQsIHZvaWQ+KTogRGF0YUFycmF5PFQ+IHtcbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMudmFsdWVzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgICAgZih0aGlzLnZhbHVlc1tpbmRleF0sIGluZGV4LCB0aGlzLnZhbHVlcyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcyBhcyBhbnk7XG4gICAgfVxuXG4gICAgcHVibGljIGxpbWl0KGNvdW50OiBudW1iZXIpOiBEYXRhQXJyYXk8VD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5sd3JhcCh0aGlzLnZhbHVlcy5zbGljZSgwLCBjb3VudCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzbGljZShzdGFydD86IG51bWJlciwgZW5kPzogbnVtYmVyKTogRGF0YUFycmF5PFQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubHdyYXAodGhpcy52YWx1ZXMuc2xpY2Uoc3RhcnQsIGVuZCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb25jYXQob3RoZXI6IERhdGFBcnJheTxUPik6IERhdGFBcnJheTxUPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmx3cmFwKHRoaXMudmFsdWVzLmNvbmNhdChvdGhlci52YWx1ZXMpKTtcbiAgICB9XG5cbiAgICAvKiogUmV0dXJuIHRoZSBmaXJzdCBpbmRleCBvZiB0aGUgZ2l2ZW4gKG9wdGlvbmFsbHkgc3RhcnRpbmcgdGhlIHNlYXJjaCkgKi9cbiAgICBwdWJsaWMgaW5kZXhPZihlbGVtZW50OiBULCBmcm9tSW5kZXg/OiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5maW5kSW5kZXgoKGUpID0+IHRoaXMuZGVmYXVsdENvbXBhcmF0b3IoZSwgZWxlbWVudCkgPT0gMCwgZnJvbUluZGV4KTtcbiAgICB9XG5cbiAgICAvKiogUmV0dXJuIHRoZSBmaXJzdCBlbGVtZW50IHRoYXQgc2F0aXNmaWVzIHRoZSBnaXZlbiBwcmVkaWNhdGUuICovXG4gICAgcHVibGljIGZpbmQocHJlZDogQXJyYXlGdW5jPFQsIGJvb2xlYW4+KTogVCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGxldCBpbmRleCA9IHRoaXMuZmluZEluZGV4KHByZWQpO1xuICAgICAgICBpZiAoaW5kZXggPT0gLTEpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIGVsc2UgcmV0dXJuIHRoaXMudmFsdWVzW2luZGV4XTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZmluZEluZGV4KHByZWQ6IEFycmF5RnVuYzxULCBib29sZWFuPiwgZnJvbUluZGV4PzogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSBmcm9tSW5kZXggPz8gMDsgaW5kZXggPCB0aGlzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgICAgaWYgKHByZWQodGhpcy52YWx1ZXNbaW5kZXhdLCBpbmRleCwgdGhpcy52YWx1ZXMpKSByZXR1cm4gaW5kZXg7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gLTE7XG4gICAgfVxuXG4gICAgcHVibGljIGluY2x1ZGVzKGVsZW1lbnQ6IFQpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5kZXhPZihlbGVtZW50LCAwKSAhPSAtMTtcbiAgICB9XG5cbiAgICBwdWJsaWMgam9pbihzZXA/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXAoKHMpID0+IExpdGVyYWxzLnRvU3RyaW5nKHMpKVxuICAgICAgICAgICAgLmFycmF5KClcbiAgICAgICAgICAgIC5qb2luKHNlcCA/PyBcIiwgXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzb3J0PFU+KGtleT86IEFycmF5RnVuYzxULCBVPiwgZGlyZWN0aW9uPzogXCJhc2NcIiB8IFwiZGVzY1wiLCBjb21wYXJhdG9yPzogQXJyYXlDb21wYXJhdG9yPFU+KTogRGF0YUFycmF5PFQ+IHtcbiAgICAgICAgaWYgKHRoaXMudmFsdWVzLmxlbmd0aCA9PSAwKSByZXR1cm4gdGhpcztcbiAgICAgICAgbGV0IHJlYWxDb21wYXJhdG9yID0gY29tcGFyYXRvciA/PyB0aGlzLmRlZmF1bHRDb21wYXJhdG9yO1xuICAgICAgICBsZXQgcmVhbEtleSA9IGtleSA/PyAoKGw6IFQpID0+IGwgYXMgYW55IGFzIFUpO1xuXG4gICAgICAgIC8vIEFzc29jaWF0ZSBlYWNoIGVudHJ5IHdpdGggaXQncyBpbmRleCBmb3IgdGhlIGtleSBmdW5jdGlvbiwgYW5kIHRoZW4gZG8gYSBub3JtYWwgc29ydC5cbiAgICAgICAgbGV0IGNvcHkgPSAoW10gYXMgYW55W10pLmNvbmNhdCh0aGlzLmFycmF5KCkpLm1hcCgoZWxlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7IGluZGV4OiBpbmRleCwgdmFsdWU6IGVsZW0gfTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvcHkuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICAgICAgbGV0IGFLZXkgPSByZWFsS2V5KGEudmFsdWUsIGEuaW5kZXgsIHRoaXMudmFsdWVzKTtcbiAgICAgICAgICAgIGxldCBiS2V5ID0gcmVhbEtleShiLnZhbHVlLCBiLmluZGV4LCB0aGlzLnZhbHVlcyk7XG4gICAgICAgICAgICByZXR1cm4gZGlyZWN0aW9uID09PSBcImRlc2NcIiA/IC1yZWFsQ29tcGFyYXRvcihhS2V5LCBiS2V5KSA6IHJlYWxDb21wYXJhdG9yKGFLZXksIGJLZXkpO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gdGhpcy5sd3JhcChjb3B5Lm1hcCgoZSkgPT4gZS52YWx1ZSkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzb3J0SW5QbGFjZTxVPihcbiAgICAgICAga2V5PzogKHZhbHVlOiBUKSA9PiBVLFxuICAgICAgICBkaXJlY3Rpb24/OiBcImFzY1wiIHwgXCJkZXNjXCIsXG4gICAgICAgIGNvbXBhcmF0b3I/OiBBcnJheUNvbXBhcmF0b3I8VT5cbiAgICApOiBEYXRhQXJyYXk8VD4ge1xuICAgICAgICBpZiAodGhpcy52YWx1ZXMubGVuZ3RoID09IDApIHJldHVybiB0aGlzO1xuICAgICAgICBsZXQgcmVhbENvbXBhcmF0b3IgPSBjb21wYXJhdG9yID8/IHRoaXMuZGVmYXVsdENvbXBhcmF0b3I7XG4gICAgICAgIGxldCByZWFsS2V5ID0ga2V5ID8/ICgobDogVCkgPT4gbCBhcyBhbnkgYXMgVSk7XG5cbiAgICAgICAgdGhpcy52YWx1ZXMuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICAgICAgbGV0IGFLZXkgPSByZWFsS2V5KGEpO1xuICAgICAgICAgICAgbGV0IGJLZXkgPSByZWFsS2V5KGIpO1xuXG4gICAgICAgICAgICByZXR1cm4gZGlyZWN0aW9uID09IFwiZGVzY1wiID8gLXJlYWxDb21wYXJhdG9yKGFLZXksIGJLZXkpIDogcmVhbENvbXBhcmF0b3IoYUtleSwgYktleSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBncm91cEJ5PFU+KGtleTogQXJyYXlGdW5jPFQsIFU+LCBjb21wYXJhdG9yPzogQXJyYXlDb21wYXJhdG9yPFU+KTogRGF0YUFycmF5PHsga2V5OiBVOyByb3dzOiBUW10gfT4ge1xuICAgICAgICBpZiAodGhpcy52YWx1ZXMubGVuZ3RoID09IDApIHJldHVybiB0aGlzLmx3cmFwKFtdKTtcblxuICAgICAgICAvLyBKYXZhU2NyaXB0IHN1Y2tzIGFuZCB3ZSBjYW4ndCBtYWtlIGhhc2ggbWFwcyBvdmVyIGFyYml0cmFyeSB0eXBlcyAob25seSBzdHJpbmdzL2ludHMpLCBzb1xuICAgICAgICAvLyB3ZSBkbyBhIHBvb3IgbWFuIGFsZ29yaXRobSB3aGVyZSB3ZSBTT1JULCBmb2xsb3dlZCBieSBncm91cGluZy5cbiAgICAgICAgbGV0IGludGVybWVkaWF0ZSA9IHRoaXMuc29ydChrZXksIFwiYXNjXCIsIGNvbXBhcmF0b3IpO1xuICAgICAgICBjb21wYXJhdG9yID0gY29tcGFyYXRvciA/PyB0aGlzLmRlZmF1bHRDb21wYXJhdG9yO1xuXG4gICAgICAgIGxldCByZXN1bHQ6IHsga2V5OiBVOyByb3dzOiBUW10gfVtdID0gW107XG4gICAgICAgIGxldCBjdXJyZW50Um93ID0gW2ludGVybWVkaWF0ZVswXV07XG4gICAgICAgIGxldCBjdXJyZW50ID0ga2V5KGludGVybWVkaWF0ZVswXSwgMCwgaW50ZXJtZWRpYXRlLnZhbHVlcyk7XG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMTsgaW5kZXggPCBpbnRlcm1lZGlhdGUubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgICAgICBsZXQgbmV3S2V5ID0ga2V5KGludGVybWVkaWF0ZVtpbmRleF0sIGluZGV4LCBpbnRlcm1lZGlhdGUudmFsdWVzKTtcbiAgICAgICAgICAgIGlmIChjb21wYXJhdG9yKGN1cnJlbnQsIG5ld0tleSkgIT0gMCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHsga2V5OiBjdXJyZW50LCByb3dzOiBjdXJyZW50Um93IH0pO1xuICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBuZXdLZXk7XG4gICAgICAgICAgICAgICAgY3VycmVudFJvdyA9IFtpbnRlcm1lZGlhdGVbaW5kZXhdXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY3VycmVudFJvdy5wdXNoKGludGVybWVkaWF0ZVtpbmRleF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJlc3VsdC5wdXNoKHsga2V5OiBjdXJyZW50LCByb3dzOiBjdXJyZW50Um93IH0pO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmx3cmFwKHJlc3VsdCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdyb3VwSW48VT4oa2V5OiBBcnJheUZ1bmM8TG93ZXN0S2V5PFQ+LCBVPiwgY29tcGFyYXRvcj86IEFycmF5Q29tcGFyYXRvcjxVPik6IERhdGFBcnJheTxJbmdyb3VwZWQ8VSwgVD4+IHtcbiAgICAgICAgaWYgKEdyb3VwaW5ncy5pc0dyb3VwaW5nKHRoaXMudmFsdWVzKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubWFwKCh2KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiAodiBhcyBhbnkpLmtleSxcbiAgICAgICAgICAgICAgICAgICAgcm93czogRGF0YUFycmF5LndyYXAoKHYgYXMgYW55KS5yb3dzKS5ncm91cEluKGtleSBhcyBhbnksIGNvbXBhcmF0b3IgYXMgYW55KSxcbiAgICAgICAgICAgICAgICB9IGFzIGFueTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ3JvdXBCeShrZXkgYXMgYW55LCBjb21wYXJhdG9yKSBhcyBhbnk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZGlzdGluY3Q8VT4oa2V5PzogQXJyYXlGdW5jPFQsIFU+LCBjb21wYXJhdG9yPzogQXJyYXlDb21wYXJhdG9yPFU+KTogRGF0YUFycmF5PFQ+IHtcbiAgICAgICAgaWYgKHRoaXMudmFsdWVzLmxlbmd0aCA9PSAwKSByZXR1cm4gdGhpcztcbiAgICAgICAgbGV0IHJlYWxLZXkgPSBrZXkgPz8gKCh4KSA9PiB4IGFzIGFueSBhcyBVKTtcblxuICAgICAgICAvLyBGb3Igc2ltaWxhciByZWFzb25zIHRvIGdyb3VwQnksIGRvIGEgc29ydCBhbmQgdGFrZSB0aGUgZmlyc3QgZWxlbWVudCBvZiBlYWNoIGJsb2NrLlxuICAgICAgICBsZXQgaW50ZXJtZWRpYXRlID0gdGhpcy5tYXAoKHgsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4geyBrZXk6IHJlYWxLZXkoeCwgaW5kZXgsIHRoaXMudmFsdWVzKSwgdmFsdWU6IHggfTtcbiAgICAgICAgfSkuc29ydCgoeCkgPT4geC5rZXksIFwiYXNjXCIsIGNvbXBhcmF0b3IpO1xuICAgICAgICBjb21wYXJhdG9yID0gY29tcGFyYXRvciA/PyB0aGlzLmRlZmF1bHRDb21wYXJhdG9yO1xuXG4gICAgICAgIGxldCByZXN1bHQ6IFRbXSA9IFtpbnRlcm1lZGlhdGVbMF0udmFsdWVdO1xuICAgICAgICBmb3IgKGxldCBpbmRleCA9IDE7IGluZGV4IDwgaW50ZXJtZWRpYXRlLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgICAgaWYgKGNvbXBhcmF0b3IoaW50ZXJtZWRpYXRlW2luZGV4IC0gMV0ua2V5LCBpbnRlcm1lZGlhdGVbaW5kZXhdLmtleSkgIT0gMCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGludGVybWVkaWF0ZVtpbmRleF0udmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMubHdyYXAocmVzdWx0KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZXZlcnkoZjogQXJyYXlGdW5jPFQsIGJvb2xlYW4+KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlcy5ldmVyeShmKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc29tZShmOiBBcnJheUZ1bmM8VCwgYm9vbGVhbj4pOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVzLnNvbWUoZik7XG4gICAgfVxuXG4gICAgcHVibGljIG5vbmUoZjogQXJyYXlGdW5jPFQsIGJvb2xlYW4+KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlcy5ldmVyeSgodiwgaSwgYSkgPT4gIWYodiwgaSwgYSkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBmaXJzdCgpOiBUIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVzLmxlbmd0aCA+IDAgPyB0aGlzLnZhbHVlc1swXSA6IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcHVibGljIGxhc3QoKTogVCB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlcy5sZW5ndGggPiAwID8gdGhpcy52YWx1ZXNbdGhpcy52YWx1ZXMubGVuZ3RoIC0gMV0gOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIHRvKGtleTogc3RyaW5nKTogRGF0YUFycmF5PGFueT4ge1xuICAgICAgICBsZXQgcmVzdWx0OiBhbnlbXSA9IFtdO1xuICAgICAgICBmb3IgKGxldCBjaGlsZCBvZiB0aGlzLnZhbHVlcykge1xuICAgICAgICAgICAgbGV0IHZhbHVlID0gY2hpbGRba2V5XTtcbiAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsKSBjb250aW51ZTtcblxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpIHx8IERhdGFBcnJheS5pc0RhdGFBcnJheSh2YWx1ZSkpIHZhbHVlLmZvckVhY2goKHYpID0+IHJlc3VsdC5wdXNoKHYpKTtcbiAgICAgICAgICAgIGVsc2UgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMubHdyYXAocmVzdWx0KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaW50byhrZXk6IHN0cmluZyk6IERhdGFBcnJheTxhbnk+IHtcbiAgICAgICAgbGV0IHJlc3VsdDogYW55W10gPSBbXTtcbiAgICAgICAgZm9yIChsZXQgY2hpbGQgb2YgdGhpcy52YWx1ZXMpIHtcbiAgICAgICAgICAgIGxldCB2YWx1ZSA9IGNoaWxkW2tleV07XG4gICAgICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCkgY29udGludWU7XG5cbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmx3cmFwKHJlc3VsdCk7XG4gICAgfVxuXG4gICAgcHVibGljIGV4cGFuZChrZXk6IHN0cmluZyk6IERhdGFBcnJheTxhbnk+IHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IFtdO1xuICAgICAgICBsZXQgcXVldWU6IGFueVtdID0gKFtdIGFzIGFueVtdKS5jb25jYXQodGhpcy52YWx1ZXMpO1xuXG4gICAgICAgIHdoaWxlIChxdWV1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBsZXQgbmV4dCA9IHF1ZXVlLnBvcCgpO1xuICAgICAgICAgICAgbGV0IHZhbHVlID0gbmV4dFtrZXldO1xuXG4gICAgICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCkgY29udGludWU7XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHZhbHVlLmZvckVhY2goKHYpID0+IHF1ZXVlLnB1c2godikpO1xuICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRhQXJyYXlJbXBsKSB2YWx1ZS5mb3JFYWNoKCh2KSA9PiBxdWV1ZS5wdXNoKHYpKTtcbiAgICAgICAgICAgIGVsc2UgcXVldWUucHVzaCh2YWx1ZSk7XG5cbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKG5leHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMubHdyYXAocmVzdWx0KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZm9yRWFjaChmOiBBcnJheUZ1bmM8VCwgdm9pZD4pIHtcbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMudmFsdWVzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgICAgZih0aGlzLnZhbHVlc1tpbmRleF0sIGluZGV4LCB0aGlzLnZhbHVlcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYXJyYXkoKTogVFtdIHtcbiAgICAgICAgcmV0dXJuIChbXSBhcyBhbnlbXSkuY29uY2F0KHRoaXMudmFsdWVzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgW1N5bWJvbC5pdGVyYXRvcl0oKTogSXRlcmF0b3I8VD4ge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZXNbU3ltYm9sLml0ZXJhdG9yXSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gXCJbXCIgKyB0aGlzLnZhbHVlcy5qb2luKFwiLCBcIikgKyBcIl1cIjtcbiAgICB9XG59XG5cbi8qKiBQcm92aWRlcyB1dGlsaXR5IGZ1bmN0aW9ucyBmb3IgZ2VuZXJhdGluZyBkYXRhIGFycmF5cy5cbiAqIEBoaWRkZW5cbiAqL1xuZXhwb3J0IG5hbWVzcGFjZSBEYXRhQXJyYXkge1xuICAgIC8qKiBDcmVhdGUgYSBuZXcgRGF0YXZpZXcgZGF0YSBhcnJheS4gKi9cbiAgICBleHBvcnQgZnVuY3Rpb24gd3JhcDxUPihyYXc6IFRbXSB8IERhdGFBcnJheTxUPik6IERhdGFBcnJheTxUPiB7XG4gICAgICAgIGlmIChpc0RhdGFBcnJheShyYXcpKSByZXR1cm4gcmF3O1xuICAgICAgICByZXR1cm4gRGF0YUFycmF5SW1wbC53cmFwKHJhdyk7XG4gICAgfVxuXG4gICAgLyoqIENyZWF0ZSBhIG5ldyBEYXRhQXJyYXkgZnJvbSBhbiBpdGVyYWJsZSBvYmplY3QuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGZyb208VD4ocmF3OiBJdGVyYWJsZTxUPik6IERhdGFBcnJheTxUPiB7XG4gICAgICAgIGlmIChpc0RhdGFBcnJheShyYXcpKSByZXR1cm4gcmF3O1xuXG4gICAgICAgIGxldCBkYXRhID0gW107XG4gICAgICAgIGZvciAobGV0IGVsZW0gb2YgcmF3KSBkYXRhLnB1c2goZWxlbSk7XG4gICAgICAgIHJldHVybiBEYXRhQXJyYXlJbXBsLndyYXAoZGF0YSk7XG4gICAgfVxuXG4gICAgLyoqIFJldHVybiB0cnVlIGlmIHRoZSBnaXZlbiBvYmplY3QgaXMgYSBkYXRhIGFycmF5LiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiBpc0RhdGFBcnJheShvYmo6IGFueSk6IG9iaiBpcyBEYXRhQXJyYXk8YW55PiB7XG4gICAgICAgIHJldHVybiBvYmogaW5zdGFuY2VvZiBEYXRhQXJyYXlJbXBsO1xuICAgIH1cbn1cblxuLy8gQSBzY2FyeSBsb29raW5nIHBvbHlmaWxsLCBzdXJlLCBidXQgaXQgZml4ZXMgdXAgZGF0YSBhcnJheS9hcnJheSBpbnRlcm9wIGZvciB1cy5cbmNvbnN0IG9sZEFycmF5SXNBcnJheSA9IEFycmF5LmlzQXJyYXk7XG5BcnJheS5pc0FycmF5ID0gKGFyZyk6IGFyZyBpcyBhbnlbXSA9PiB7XG4gICAgcmV0dXJuIG9sZEFycmF5SXNBcnJheShhcmcpIHx8IERhdGFBcnJheS5pc0RhdGFBcnJheShhcmcpO1xufTtcbiIsICIvKiogQGlnbm9yZSAqL1xuLy8hIFV0aWxpdGllcyBmb3IgZm9yY2luZyB0eXBlcyB0byBiZSBvZiBhIHNwZWNpZmljIHR5cGUgb3IgcmV0dXJuaW5nICd1bmRlZmluZWQnIGlmIG5vdCwgYWxsb3dpbmcgZm9yIG11Y2ggbW9yZSBjb25jaXNlIHR5cGluZy5cblxuaW1wb3J0IHsgTGluaywgTGl0ZXJhbCwgTGl0ZXJhbHMgfSBmcm9tIFwiZXhwcmVzc2lvbi9saXRlcmFsXCI7XG5pbXBvcnQgeyBQUklNSVRJVkVTIH0gZnJvbSBcImV4cHJlc3Npb24vcGFyc2VyXCI7XG5pbXBvcnQgeyBEYXRlVGltZSwgRHVyYXRpb24gfSBmcm9tIFwibHV4b25cIjtcbmltcG9ydCB7IHJlbmRlck1pbmltYWxEYXRlIH0gZnJvbSBcInV0aWxzL25vcm1hbGl6ZXJzXCI7XG5cbmV4cG9ydCBuYW1lc3BhY2UgQ29lcmNlIHtcbiAgICAvKiogQ29lcmNlcyBjb21tb24gdHlwZXMgdG8gc3RyaW5nIG9yIG90aGVyd2lzZSB1bmRlZmluZWQuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIHN0cmluZyh2YWx1ZTogTGl0ZXJhbCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IHdyYXBwZWQgPSBMaXRlcmFscy53cmFwVmFsdWUodmFsdWUpO1xuICAgICAgICBpZiAoIXdyYXBwZWQpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICAgICAgc3dpdGNoICh3cmFwcGVkLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgXCJzdHJpbmdcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZTtcbiAgICAgICAgICAgIGNhc2UgXCJudW1iZXJcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJcIiArIHdyYXBwZWQudmFsdWU7XG4gICAgICAgICAgICBjYXNlIFwiZGF0ZVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiByZW5kZXJNaW5pbWFsRGF0ZSh3cmFwcGVkLnZhbHVlLCBcInl5eXktTU0tZGRcIiwgXCJ5eXl5LU1NLWRkIEhIOm1tOnNzXCIpO1xuICAgICAgICAgICAgY2FzZSBcImxpbmtcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZS5tYXJrZG93bigpO1xuICAgICAgICAgICAgY2FzZSBcImJvb2xlYW5cIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJcIiArIHdyYXBwZWQudmFsdWU7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQ29lcmNlcyBib29sZWFucyBhbmQgc3RyaW5nLWJvb2xlYW5zLiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiBib29sZWFuKHZhbHVlOiBMaXRlcmFsKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwiYm9vbGVhblwiKSByZXR1cm4gdmFsdWU7XG4gICAgICAgIGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiAmJiB2YWx1ZS50b0xvd2VyQ2FzZSgpID09PSBcInRydWVcIikgcmV0dXJuIHRydWU7XG4gICAgICAgIGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiAmJiB2YWx1ZS50b0xvd2VyQ2FzZSgpID09PSBcImZhbHNlXCIpIHJldHVybiBmYWxzZTtcbiAgICAgICAgZWxzZSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKiBDb2VyY2VzIG51bWJlcnMgYW5kIHN0cmluZ3MgdG8gbnVtYmVycy4gKi9cbiAgICBleHBvcnQgZnVuY3Rpb24gbnVtYmVyKHZhbHVlOiBMaXRlcmFsKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJudW1iZXJcIikgcmV0dXJuIHZhbHVlO1xuICAgICAgICBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlRmxvYXQodmFsdWUpO1xuICAgICAgICAgICAgaWYgKCFpc05hTihwYXJzZWQpKSByZXR1cm4gcGFyc2VkO1xuICAgICAgICAgICAgZWxzZSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9IGVsc2UgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKiogQ29lcmNlcyBkYXRlcyBhbmQgc3RyaW5ncyBpbnRvIGRhdGVzLiAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiBkYXRlKHZhbHVlOiBMaXRlcmFsKTogRGF0ZVRpbWUgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlVGltZSkgcmV0dXJuIHZhbHVlO1xuICAgICAgICBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcnNlZCA9IFBSSU1JVElWRVMuZGF0ZVBsdXMucGFyc2UodmFsdWUpO1xuICAgICAgICAgICAgaWYgKHBhcnNlZC5zdGF0dXMpIHJldHVybiBwYXJzZWQudmFsdWU7XG4gICAgICAgICAgICBlbHNlIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH0gZWxzZSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKiBDb2VyY2VzIGR1cmF0aW9ucyBhbmQgc3RyaW5ncyBpbnRvIGR1cmF0aW9ucy4gKi9cbiAgICBleHBvcnQgZnVuY3Rpb24gZHVyYXRpb24odmFsdWU6IExpdGVyYWwpOiBEdXJhdGlvbiB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIER1cmF0aW9uKSByZXR1cm4gdmFsdWU7XG4gICAgICAgIGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgY29uc3QgcGFyc2VkID0gUFJJTUlUSVZFUy5kdXJhdGlvbi5wYXJzZSh2YWx1ZSk7XG4gICAgICAgICAgICBpZiAocGFyc2VkLnN0YXR1cykgcmV0dXJuIHBhcnNlZC52YWx1ZTtcbiAgICAgICAgICAgIGVsc2UgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfSBlbHNlIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqIENvZXJjZXMgbGlua3MgYW5kIHN0cmluZ3MgaW50byBsaW5rcy4gKi9cbiAgICBleHBvcnQgZnVuY3Rpb24gbGluayh2YWx1ZTogTGl0ZXJhbCk6IExpbmsgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBMaW5rKSByZXR1cm4gdmFsdWU7XG4gICAgICAgIGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgY29uc3QgcGFyc2VkID0gUFJJTUlUSVZFUy5lbWJlZExpbmsucGFyc2UodmFsdWUpO1xuICAgICAgICAgICAgaWYgKHBhcnNlZC5zdGF0dXMpIHJldHVybiBwYXJzZWQudmFsdWU7XG4gICAgICAgICAgICBlbHNlIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH0gZWxzZSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKiBDb2VyY2VzIGFueXRoaW5nIGludG8gYW4gYXJyYXksIGJ5IGNvbnZlcnRpbmcgbm9uLWFycmF5cyBpbnRvIHVuaXQgbGVuZ3RoIGFycmF5cy4gKi9cbiAgICBleHBvcnQgZnVuY3Rpb24gYXJyYXkodmFsdWU6IExpdGVyYWwpOiBMaXRlcmFsW10gfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHJldHVybiB2YWx1ZTtcbiAgICAgICAgZWxzZSByZXR1cm4gW3ZhbHVlXTtcbiAgICB9XG59XG4iLCAiLyoqIEEgcHJvbWlzZSB0aGF0IGNhbiBiZSByZXNvbHZlZCBkaXJlY3RseS4gKi9cbmV4cG9ydCB0eXBlIERlZmVycmVkPFQ+ID0gUHJvbWlzZTxUPiAmIHtcbiAgICByZXNvbHZlOiAodmFsdWU6IFQpID0+IHZvaWQ7XG4gICAgcmVqZWN0OiAoZXJyb3I6IGFueSkgPT4gdm9pZDtcbn07XG5cbi8qKiBDcmVhdGUgYSBuZXcgZGVmZXJyZWQgb2JqZWN0LCB3aGljaCBpcyBhIHJlc29sdmFibGUgcHJvbWlzZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWZlcnJlZDxUPigpOiBEZWZlcnJlZDxUPiB7XG4gICAgbGV0IHJlc29sdmU6ICh2YWx1ZTogVCkgPT4gdm9pZDtcbiAgICBsZXQgcmVqZWN0OiAoZXJyb3I6IGFueSkgPT4gdm9pZDtcblxuICAgIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzLCByZWopID0+IHtcbiAgICAgICAgcmVzb2x2ZSA9IHJlcztcbiAgICAgICAgcmVqZWN0ID0gcmVqO1xuICAgIH0pO1xuXG4gICAgY29uc3QgZGVmZXJyZWQgPSBwcm9taXNlIGFzIGFueSBhcyBEZWZlcnJlZDxUPjtcbiAgICBkZWZlcnJlZC5yZXNvbHZlID0gcmVzb2x2ZSE7XG4gICAgZGVmZXJyZWQucmVqZWN0ID0gcmVqZWN0ITtcblxuICAgIHJldHVybiBkZWZlcnJlZDtcbn1cbiIsICJpbXBvcnQgeyBMaW5rIH0gZnJvbSBcImV4cHJlc3Npb24vbGlua1wiO1xuaW1wb3J0IHsgRGF0YXN0b3JlIH0gZnJvbSBcImluZGV4L2RhdGFzdG9yZVwiO1xuaW1wb3J0IHsgUmVzdWx0IH0gZnJvbSBcIi4vcmVzdWx0XCI7XG5pbXBvcnQgeyBNYXJrZG93bkNvZGVibG9jaywgTWFya2Rvd25TZWN0aW9uIH0gZnJvbSBcImluZGV4L3R5cGVzL21hcmtkb3duXCI7XG5pbXBvcnQgeyBEZWZlcnJlZCwgZGVmZXJyZWQgfSBmcm9tIFwidXRpbHMvZGVmZXJyZWRcIjtcbmltcG9ydCB7IFNjcmlwdExhbmd1YWdlLCBhc3luY0V2YWxJbkNvbnRleHQsIHRyYW5zcGlsZSB9IGZyb20gXCJ1dGlscy9qYXZhc2NyaXB0XCI7XG5pbXBvcnQgeyBsaW5lUmFuZ2UgfSBmcm9tIFwidXRpbHMvbm9ybWFsaXplcnNcIjtcbmltcG9ydCB7IFRGaWxlIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5pbXBvcnQgeyBGcmFnbWVudCwgaCB9IGZyb20gXCJwcmVhY3RcIjtcblxuLyoqIEEgc2NyaXB0IHRoYXQgaXMgY3VycmVudGx5IGJlaW5nIGxvYWRlZC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTG9hZGluZ1NjcmlwdCB7XG4gICAgdHlwZTogXCJsb2FkaW5nXCI7XG5cbiAgICBwYXRoOiBzdHJpbmc7XG4gICAgcHJvbWlzZTogRGVmZXJyZWQ8UmVzdWx0PGFueSwgc3RyaW5nPj47XG59XG5cbi8qKiBBIHNjcmlwdCB0aGF0IGhhcyBzdWNjZXNzZnVsbHkgbG9hZGVkLiAqL1xuZXhwb3J0IGludGVyZmFjZSBMb2FkZWRTY3JpcHQge1xuICAgIHR5cGU6IFwibG9hZGVkXCI7XG5cbiAgICBwYXRoOiBzdHJpbmc7XG4gICAgb2JqZWN0OiBhbnk7XG59XG5cbmV4cG9ydCB0eXBlIERhdGFjb3JlU2NyaXB0ID0gTG9hZGluZ1NjcmlwdCB8IExvYWRlZFNjcmlwdDtcblxuLyoqIEEgc2ltcGxlIGNhY2hpbmcgc2NyaXB0IGxvYWRlciB0aGF0IGNhbiBsb2FkIGFueSBEQUcgb2Ygc2NyaXB0IGRlcGVuZGVuY2llcy4gKi9cbmV4cG9ydCBjbGFzcyBTY3JpcHRDYWNoZSB7XG4gICAgLyoqIEFsbCBvZiB0aGUgdGFncyB3ZSByZWNvZ25pemUgZm9yIHNjcmlwdHMuICovXG4gICAgcHJpdmF0ZSBzdGF0aWMgU0NSSVBUX0xBTkdVQUdFUzogUmVjb3JkPHN0cmluZywgU2NyaXB0TGFuZ3VhZ2U+ID0ge1xuICAgICAgICBqczogXCJqc1wiLFxuICAgICAgICBqYXZhc2NyaXB0OiBcImpzXCIsXG4gICAgICAgIGRhdGFjb3JlanM6IFwianNcIixcbiAgICAgICAgdHlwZXNjcmlwdDogXCJ0c1wiLFxuICAgICAgICB0czogXCJ0c1wiLFxuICAgICAgICBkYXRhY29yZXRzOiBcInRzXCIsXG4gICAgICAgIGpzeDogXCJqc3hcIixcbiAgICAgICAgZGF0YWNvcmVqc3g6IFwianN4XCIsXG4gICAgICAgIHRzeDogXCJ0c3hcIixcbiAgICAgICAgZGF0YWNvcmV0c3g6IFwidHN4XCIsXG4gICAgfTtcblxuICAgIC8qKiBBbGwgb2YgdGhlIGRpcmVjdCBmaWxlIGV4dGVuc2lvbnMgd2UgY2FuIGxvYWQuICovXG4gICAgcHJpdmF0ZSBzdGF0aWMgRklMRV9FWFRFTlNJT05TOiBSZWNvcmQ8c3RyaW5nLCBTY3JpcHRMYW5ndWFnZT4gPSB7XG4gICAgICAgIHRzeDogXCJ0c3hcIixcbiAgICAgICAganN4OiBcImpzeFwiLFxuICAgICAgICBqczogXCJqc1wiLFxuICAgICAgICB0czogXCJ0c1wiLFxuICAgIH07XG5cbiAgICAvKiogQ2FjaGVzIHNjcmlwdHMgYnkgZnVsbHkgcXVhbGlmaWVkIHBhdGguICovXG4gICAgcHVibGljIHNjcmlwdHM6IE1hcDxzdHJpbmcsIERhdGFjb3JlU2NyaXB0PiA9IG5ldyBNYXA8c3RyaW5nLCBEYXRhY29yZVNjcmlwdD4oKTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIHN0b3JlOiBEYXRhc3RvcmUpIHt9XG5cbiAgICAvKiogTG9hZCB0aGUgZ2l2ZW4gc2NyaXB0IGF0IHRoZSBnaXZlbiBwYXRoLCByZWN1cnNpdmVseSBsb2FkaW5nIGFueSBzdWJzY3JpcHRzIGFzIHdlbGwuICAqL1xuICAgIHB1YmxpYyBhc3luYyBsb2FkKHBhdGg6IHN0cmluZyB8IExpbmssIGNvbnRleHQ6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBQcm9taXNlPFJlc3VsdDxhbnksIHN0cmluZz4+IHtcbiAgICAgICAgLy8gQWx3YXlzIGNoZWNrIHRoZSBjYWNoZSBmaXJzdC5cbiAgICAgICAgY29uc3Qga2V5ID0gdGhpcy5wYXRoa2V5KHBhdGgpO1xuICAgICAgICBjb25zdCBjdXJyZW50U2NyaXB0ID0gdGhpcy5zY3JpcHRzLmdldChrZXkpO1xuICAgICAgICBpZiAoY3VycmVudFNjcmlwdCkge1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRTY3JpcHQudHlwZSA9PT0gXCJsb2FkZWRcIikgcmV0dXJuIFJlc3VsdC5zdWNjZXNzKGN1cnJlbnRTY3JpcHQub2JqZWN0KTtcblxuICAgICAgICAgICAgLy8gVE9ETzogSWYgd2UgdHJ5IHRvIGxvYWQgYW4gYWxyZWFkeS1sb2FkaW5nIHNjcmlwdCwgd2UgYXJlIGFsbW9zdCBjZXJ0YWlubHkgZG9pbmcgc29tZXRoaW5nXG4gICAgICAgICAgICAvLyB3ZWlyZC4gRWl0aGVyIHRoZSBjYWxsZXIgaXMgbm90IGBhd2FpdGAtaW5nIHRoZSBsb2FkIGFuZCBsb2FkaW5nIG11bHRpcGxlIHRpbWVzLCBPUlxuICAgICAgICAgICAgLy8gd2UgYXJlIGluIGEgYHJlcXVpcmUoKWAgbG9vcC4gRWl0aGVyIHdheSwgd2UnbGwgZXJyb3Igb3V0IGZvciBub3cgc2luY2Ugd2UgY2FuJ3QgaGFuZGxlXG4gICAgICAgICAgICAvLyBlaXRoZXIgY2FzZSBjdXJyZW50bHkuXG4gICAgICAgICAgICByZXR1cm4gUmVzdWx0LmZhaWx1cmUoXG4gICAgICAgICAgICAgICAgYEZhaWxlZCB0byBpbXBvcnQgc2NyaXB0IFwiJHtwYXRoLnRvU3RyaW5nKCl9XCIsIGFzIGl0IGlzIGluIHRoZSBtaWRkbGUgb2YgYmVpbmcgbG9hZGVkLiBEbyB5b3UgaGF2ZVxuICAgICAgICAgICAgICAgICBhIGNpcmN1bGFyIGRlcGVuZGVuY3kgaW4geW91ciByZXF1aXJlKCkgY2FsbHM/IFRoZSBjdXJyZW50bHkgbG9hZGVkIG9yIGxvYWRpbmcgc2NyaXB0cyBhcmU6IFxuICAgICAgICAgICAgICAgICAke0FycmF5LmZyb20odGhpcy5zY3JpcHRzLnZhbHVlcygpKVxuICAgICAgICAgICAgICAgICAgICAgLm1hcCgoc2MpID0+IFwiXFx0XCIgKyBzYy5wYXRoKVxuICAgICAgICAgICAgICAgICAgICAgLmpvaW4oXCJcXG5cIil9YFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENhY2hlIGhhcyBtaXNzZWQsIHNvIGFkZCBvdXJzZWx2ZXMgdG8gdGhlIGNhY2hlIGFuZCB0cnkgYW5kIGxvYWQgaXQgZGlyZWN0bHkuXG4gICAgICAgIGNvbnN0IGRlZmVycmFsID0gZGVmZXJyZWQ8UmVzdWx0PGFueSwgc3RyaW5nPj4oKTtcbiAgICAgICAgdGhpcy5zY3JpcHRzLnNldChrZXksIHsgdHlwZTogXCJsb2FkaW5nXCIsIHByb21pc2U6IGRlZmVycmFsLCBwYXRoOiBrZXkgfSk7XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5sb2FkVW5jYWNoZWQocGF0aCwgY29udGV4dCk7XG4gICAgICAgIGRlZmVycmFsLnJlc29sdmUocmVzdWx0KTtcblxuICAgICAgICBpZiAocmVzdWx0LnN1Y2Nlc3NmdWwpIHtcbiAgICAgICAgICAgIHRoaXMuc2NyaXB0cy5zZXQoa2V5LCB7IHR5cGU6IFwibG9hZGVkXCIsIHBhdGg6IGtleSwgb2JqZWN0OiByZXN1bHQudmFsdWUgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNjcmlwdHMuZGVsZXRlKGtleSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKiBMb2FkIGEgc2NyaXB0LCBkaXJlY3RseSBieXBhc3NpbmcgdGhlIGNhY2hlLiAqL1xuICAgIHByaXZhdGUgYXN5bmMgbG9hZFVuY2FjaGVkKHBhdGg6IHN0cmluZyB8IExpbmssIGNvbnRleHQ6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBQcm9taXNlPFJlc3VsdDxhbnksIHN0cmluZz4+IHtcbiAgICAgICAgY29uc3QgbWF5YmVTb3VyY2UgPSBhd2FpdCB0aGlzLnJlc29sdmVTb3VyY2UocGF0aCk7XG4gICAgICAgIGlmICghbWF5YmVTb3VyY2Uuc3VjY2Vzc2Z1bCkgcmV0dXJuIG1heWJlU291cmNlO1xuXG4gICAgICAgIC8vIFRyYW5zcGlsZSB0byB2YW5pbGxhIGphdmFzY3JpcHQgZmlyc3QuLi5cbiAgICAgICAgY29uc3QgeyBjb2RlLCBsYW5ndWFnZSB9ID0gbWF5YmVTb3VyY2UudmFsdWU7XG4gICAgICAgIGxldCBiYXNpYztcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGJhc2ljID0gdHJhbnNwaWxlKGNvZGUsIGxhbmd1YWdlKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBSZXN1bHQuZmFpbHVyZShgRmFpbGVkIHRvIGltcG9ydCAke3BhdGgudG9TdHJpbmcoKX0gd2hpbGUgdHJhbnNwaWxpbmcgZnJvbSAke2xhbmd1YWdlfTogJHtlcnJvcn1gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoZW4gZmluYWxseSBleGVjdXRlIHRoZSBzY3JpcHQgdG8gJ2xvYWQnIGl0LlxuICAgICAgICBjb25zdCBmaW5hbENvbnRleHQgPSBPYmplY3QuYXNzaWduKHsgaDogaCwgRnJhZ21lbnQ6IEZyYWdtZW50IH0sIGNvbnRleHQpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIFJlc3VsdC5zdWNjZXNzKGF3YWl0IGFzeW5jRXZhbEluQ29udGV4dChiYXNpYywgZmluYWxDb250ZXh0KSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gUmVzdWx0LmZhaWx1cmUoYEZhaWxlZCB0byBleGVjdXRlIHNjcmlwdCAnJHtwYXRoLnRvU3RyaW5nKCl9JzogJHtlcnJvcn1gKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBOb3JtYWxpemUgYSBwYXRoIG9yIGxpbmsgdG8gYSB0ZXh0dWFsIHBhdGguICovXG4gICAgcHJpdmF0ZSBwYXRoa2V5KHBhdGg6IHN0cmluZyB8IExpbmspOiBzdHJpbmcge1xuICAgICAgICBpZiAocGF0aCBpbnN0YW5jZW9mIExpbmspIHJldHVybiBwYXRoLm9ic2lkaWFuTGluaygpO1xuICAgICAgICBlbHNlIHJldHVybiBwYXRoO1xuICAgIH1cblxuICAgIC8qKiBBdHRlbXB0cyB0byByZXNvbHZlIHRoZSBzb3VyY2UgdG8gbG9hZCBnaXZlbiBhIHBhdGggb3IgbGluayB0byBhIG1hcmtkb3duIHNlY3Rpb24uICovXG4gICAgcHJpdmF0ZSBhc3luYyByZXNvbHZlU291cmNlKFxuICAgICAgICBwYXRoOiBzdHJpbmcgfCBMaW5rXG4gICAgKTogUHJvbWlzZTxSZXN1bHQ8eyBjb2RlOiBzdHJpbmc7IGxhbmd1YWdlOiBTY3JpcHRMYW5ndWFnZSB9LCBzdHJpbmc+PiB7XG4gICAgICAgIGNvbnN0IG9iamVjdCA9IHRoaXMuc3RvcmUucmVzb2x2ZUxpbmsocGF0aCk7XG4gICAgICAgIGlmICghb2JqZWN0KSByZXR1cm4gUmVzdWx0LmZhaWx1cmUoXCJDb3VsZCBub3QgZmluZCBhIHNjcmlwdCBhdCB0aGUgZ2l2ZW4gcGF0aDogXCIgKyBwYXRoLnRvU3RyaW5nKCkpO1xuXG4gICAgICAgIGNvbnN0IHRmaWxlID0gdGhpcy5zdG9yZS52YXVsdC5nZXRGaWxlQnlQYXRoKG9iamVjdC4kZmlsZSEpO1xuICAgICAgICBpZiAoIXRmaWxlKSByZXR1cm4gUmVzdWx0LmZhaWx1cmUoYEZpbGUgXCIke29iamVjdC4kZmlsZX1cIiBub3QgZm91bmQuYCk7XG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgdGhpcyBpcyBhIEpTIGZpbGUgd2Ugc2hvdWxkIGxvYWQgZGlyZWN0bHkuXG4gICAgICAgIGlmICh0ZmlsZS5leHRlbnNpb24udG9Mb2NhbGVMb3dlckNhc2UoKSBpbiBTY3JpcHRDYWNoZS5GSUxFX0VYVEVOU0lPTlMpIHtcbiAgICAgICAgICAgIGNvbnN0IGxhbmd1YWdlID0gU2NyaXB0Q2FjaGUuRklMRV9FWFRFTlNJT05TW3RmaWxlLmV4dGVuc2lvbi50b0xvY2FsZUxvd2VyQ2FzZSgpXTtcblxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb2RlID0gYXdhaXQgdGhpcy5zdG9yZS52YXVsdC5jYWNoZWRSZWFkKHRmaWxlKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gUmVzdWx0LnN1Y2Nlc3MoeyBjb2RlLCBsYW5ndWFnZSB9KTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJlc3VsdC5mYWlsdXJlKFwiRmFpbGVkIHRvIGxvYWQgamF2YXNjcmlwdC90eXBlc2NyaXB0IHNvdXJjZSBmaWxlOiBcIiArIGVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElmIHRoZSBvYmplY3QgaXMgYSBtYXJrZG93biBzZWN0aW9uLCBzZWFyY2ggZm9yIGFueSBqYXZhc2NyaXB0IGNvZGVibG9ja3M7IG90aGVyd2lzZSwgY2hlY2sgaWYgaXQgaXMgYSBmdWxsIHNjcmlwdCBmaWxlLlxuICAgICAgICBpZiAob2JqZWN0IGluc3RhbmNlb2YgTWFya2Rvd25TZWN0aW9uKSB7XG4gICAgICAgICAgICBjb25zdCBtYXliZUJsb2NrID0gb2JqZWN0LiRibG9ja3NcbiAgICAgICAgICAgICAgICAuZmlsdGVyKChiKTogYiBpcyBNYXJrZG93bkNvZGVibG9jayA9PiBiLiR0eXBlID09PSBcImNvZGVibG9ja1wiKVxuICAgICAgICAgICAgICAgIC5maW5kKChjYikgPT5cbiAgICAgICAgICAgICAgICAgICAgY2IuJGxhbmd1YWdlcy5zb21lKChsYW5ndWFnZSkgPT4gbGFuZ3VhZ2UudG9Mb2NhbGVMb3dlckNhc2UoKSBpbiBTY3JpcHRDYWNoZS5TQ1JJUFRfTEFOR1VBR0VTKVxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmICghbWF5YmVCbG9jaylcbiAgICAgICAgICAgICAgICByZXR1cm4gUmVzdWx0LmZhaWx1cmUoXCJDb3VsZCBub3QgZmluZCBhIHNjcmlwdCBpbiB0aGUgZ2l2ZW4gbWFya2Rvd24gc2VjdGlvbjogXCIgKyBwYXRoLnRvU3RyaW5nKCkpO1xuXG4gICAgICAgICAgICBjb25zdCBsYW5ndWFnZSA9XG4gICAgICAgICAgICAgICAgU2NyaXB0Q2FjaGUuU0NSSVBUX0xBTkdVQUdFU1tcbiAgICAgICAgICAgICAgICAgICAgbWF5YmVCbG9jay4kbGFuZ3VhZ2VzLmZpbmQoKGxhbmcpID0+IGxhbmcudG9Mb2NhbGVMb3dlckNhc2UoKSBpbiBTY3JpcHRDYWNoZS5TQ1JJUFRfTEFOR1VBR0VTKSFcbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgcmV0dXJuIChhd2FpdCB0aGlzLnJlYWRDb2RlYmxvY2sodGZpbGUsIG1heWJlQmxvY2spKS5tYXAoKGNvZGUpID0+ICh7IGNvZGUsIGxhbmd1YWdlIH0pKTtcbiAgICAgICAgfSBlbHNlIGlmIChvYmplY3QgaW5zdGFuY2VvZiBNYXJrZG93bkNvZGVibG9jaykge1xuICAgICAgICAgICAgY29uc3QgbWF5YmVMYW5ndWFnZSA9IG9iamVjdC4kbGFuZ3VhZ2VzLmZpbmQoXG4gICAgICAgICAgICAgICAgKGxhbmcpID0+IGxhbmcudG9Mb2NhbGVMb3dlckNhc2UoKSBpbiBTY3JpcHRDYWNoZS5TQ1JJUFRfTEFOR1VBR0VTXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKCFtYXliZUxhbmd1YWdlKVxuICAgICAgICAgICAgICAgIHJldHVybiBSZXN1bHQuZmFpbHVyZShgVGhlIGNvZGVibG9jayByZWZlcmVuY2VkIGJ5ICcke3BhdGh9JyBpcyBub3QgYSBKUy9UUyBjb2RlYmxvY2suYCk7XG5cbiAgICAgICAgICAgIGNvbnN0IGxhbmd1YWdlID0gU2NyaXB0Q2FjaGUuU0NSSVBUX0xBTkdVQUdFU1ttYXliZUxhbmd1YWdlXTtcbiAgICAgICAgICAgIHJldHVybiAoYXdhaXQgdGhpcy5yZWFkQ29kZWJsb2NrKHRmaWxlLCBvYmplY3QpKS5tYXAoKGNvZGUpID0+ICh7IGNvZGUsIGxhbmd1YWdlIH0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBSZXN1bHQuZmFpbHVyZShgQ2Fubm90IGltcG9ydCAnJHtwYXRoLnRvU3RyaW5nKCl9OiBub3QgYSBKUy9UUyBmaWxlIG9yIGNvZGVibG9jayByZWZlcmVuY2UuYCk7XG4gICAgfVxuXG4gICAgLyoqIFJlYWQgdGhlIGNvbnRlbnRzIG9mIGEgY29kZWJsb2NrIGZyb20gYSBmaWxlLiAqL1xuICAgIHByaXZhdGUgYXN5bmMgcmVhZENvZGVibG9jayhmaWxlOiBURmlsZSwgYmxvY2s6IE1hcmtkb3duQ29kZWJsb2NrKTogUHJvbWlzZTxSZXN1bHQ8c3RyaW5nLCBzdHJpbmc+PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCByYXcgPSBsaW5lUmFuZ2UoXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5zdG9yZS52YXVsdC5jYWNoZWRSZWFkKGZpbGUpLFxuICAgICAgICAgICAgICAgIGJsb2NrLiRjb250ZW50UG9zaXRpb24uc3RhcnQsXG4gICAgICAgICAgICAgICAgYmxvY2suJGNvbnRlbnRQb3NpdGlvbi5lbmRcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmIChibG9jay4kc3R5bGUgPT09IFwiZmVuY2VkXCIpIHJldHVybiBSZXN1bHQuc3VjY2VzcyhyYXcpO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHJldHVybiBSZXN1bHQuc3VjY2VzcyhcbiAgICAgICAgICAgICAgICAgICAgcmF3XG4gICAgICAgICAgICAgICAgICAgICAgICAuc3BsaXQoXCJcXG5cIilcbiAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKGxpbmUpID0+IGxpbmUudHJpbVN0YXJ0KCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAuam9pbihcIlxcblwiKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gUmVzdWx0LmZhaWx1cmUoYEZhaWxlZCB0byByZWFkIGEgY29kZWJsb2NrIGZyb20gJHtmaWxlLnBhdGh9OiAke2Vycm9yfWApO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwgImltcG9ydCB7IENoZWNrYm94LCBPbWl0dGFibGUsIFNsaWRlciwgU3dpdGNoIH0gZnJvbSBcImFwaS91aS9iYXNpY3NcIjtcbmltcG9ydCB7IEZpZWxkIH0gZnJvbSBcImV4cHJlc3Npb24vZmllbGRcIjtcbmltcG9ydCB7IERpc3BhdGNoLCB1c2VDYWxsYmFjaywgdXNlTWVtbywgdXNlU3RhdGUgfSBmcm9tIFwicHJlYWN0L2hvb2tzXCI7XG5pbXBvcnQgeyB1c2VGaW5hbGl6ZXIsIHVzZVNldEZpZWxkIH0gZnJvbSBcInV0aWxzL2ZpZWxkc1wiO1xuaW1wb3J0IHsgRWRpdGFibGVBY3Rpb24sIFVuY29udHJvbGxlZFRleHRFZGl0YWJsZSB9IGZyb20gXCIuL2VkaXRhYmxlXCI7XG5pbXBvcnQgU2VsZWN0IGZyb20gXCJyZWFjdC1zZWxlY3RcIjtcbmV4cG9ydCBmdW5jdGlvbiBGaWVsZENoZWNrYm94KFxuICAgIHByb3BzOiB7XG4gICAgICAgIGNsYXNzTmFtZT86IHN0cmluZztcbiAgICAgICAgZmllbGQ6IEZpZWxkO1xuICAgICAgICBkZWZhdWx0Q2hlY2tlZD86IGJvb2xlYW47XG4gICAgICAgIGRpc3BhdGNoOiBEaXNwYXRjaDxFZGl0YWJsZUFjdGlvbjxGaWVsZD4+O1xuICAgIH0gJiBSZWFjdC5IVE1MUHJvcHM8SFRNTElucHV0RWxlbWVudD5cbikge1xuICAgIGNvbnN0IHsgZmllbGQsIGRlZmF1bHRDaGVja2VkID0gZmFsc2UsIGRpc3BhdGNoLCAuLi5yZXN0IH0gPSBwcm9wcztcbiAgICByZXR1cm4gKFxuICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAgICAgZGlzYWJsZWQ9e3VuZGVmaW5lZH1cbiAgICAgICAgICAgIGRlZmF1bHRDaGVja2VkPXsoZmllbGQ/LnZhbHVlID8/IGRlZmF1bHRDaGVja2VkKSBhcyBib29sZWFufVxuICAgICAgICAgICAgb25DaGVja0NoYW5nZT17dXNlU2V0RmllbGQoZmllbGQsIChiKSA9PlxuICAgICAgICAgICAgICAgIGRpc3BhdGNoKHsgdHlwZTogXCJjb250ZW50LWNoYW5nZWRcIiwgbmV3VmFsdWU6IHsgLi4uZmllbGQsIHZhbHVlOiBiIH0gfSlcbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICBjaGVja2VkPXt1bmRlZmluZWR9XG4gICAgICAgIC8+XG4gICAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEVkaXRhYmxlVGV4dEZpZWxkKHByb3BzOiB7XG4gICAgZmllbGQ6IEZpZWxkO1xuICAgIGlubGluZTogYm9vbGVhbjtcbiAgICBkZWZhdWx0VmFsdWU6IHN0cmluZztcbiAgICBkaXNwYXRjaDogRGlzcGF0Y2g8RWRpdGFibGVBY3Rpb248c3RyaW5nPj47XG59KSB7XG4gICAgY29uc3QgeyBmaWVsZCwgZGVmYXVsdFZhbHVlID0gXCJcIiwgaW5saW5lLCBkaXNwYXRjaCB9ID0gcHJvcHM7XG4gICAgcmV0dXJuIChcbiAgICAgICAgPENvbnRyb2xsZWRFZGl0YWJsZVRleHRGaWVsZFxuICAgICAgICAgICAgdGV4dD17KGZpZWxkPy52YWx1ZSA/PyBkZWZhdWx0VmFsdWUpIGFzIHN0cmluZ31cbiAgICAgICAgICAgIGlubGluZT17aW5saW5lfVxuICAgICAgICAgICAgZGlzcGF0Y2g9e2Rpc3BhdGNofVxuICAgICAgICAvPlxuICAgICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBDb250cm9sbGVkRWRpdGFibGVUZXh0RmllbGQocHJvcHM6IHtcbiAgICB0ZXh0OiBzdHJpbmc7XG4gICAgaW5saW5lOiBib29sZWFuO1xuICAgIGRpc3BhdGNoOiBEaXNwYXRjaDxFZGl0YWJsZUFjdGlvbjxzdHJpbmc+Pjtcbn0pIHtcbiAgICBjb25zdCB7IHRleHQsIGlubGluZSwgZGlzcGF0Y2ggfSA9IHByb3BzO1xuICAgIGNvbnN0IFt0ZXh0U3RhdGUsIHNldFRleHRdID0gdXNlU3RhdGUodGV4dCk7XG4gICAgY29uc3Qgb25JbnB1dCA9IGFzeW5jIChlOiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIHNldFRleHQoKGUuY3VycmVudFRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZSk7XG5cbiAgICAgICAgaWYgKHByb3BzLmlubGluZSkge1xuICAgICAgICAgICAgaWYgKGUua2V5ID09PSBcIkVudGVyXCIpIHtcbiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgYXdhaXQgdXNlRmluYWxpemVyKHRleHRTdGF0ZSwgZGlzcGF0Y2gpKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoZS5rZXkgPT09IFwiRW50ZXJcIiAmJiBlLmN0cmxLZXkpIHtcbiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgYXdhaXQgdXNlRmluYWxpemVyKHRleHRTdGF0ZSwgZGlzcGF0Y2gpKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiA8VW5jb250cm9sbGVkVGV4dEVkaXRhYmxlIHRleHQ9e3RleHR9IGlubGluZT17aW5saW5lfSBkaXNwYXRjaD17ZGlzcGF0Y2h9IG9uSW5wdXQ9e29uSW5wdXR9IC8+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gRmllbGRTbGlkZXIoXG4gICAgcHJvcHM6IHtcbiAgICAgICAgY2xhc3NOYW1lOiBzdHJpbmc7XG4gICAgICAgIG1pbjogbnVtYmVyO1xuICAgICAgICBtYXg6IG51bWJlcjtcbiAgICAgICAgc3RlcDogbnVtYmVyO1xuICAgICAgICBkZWZhdWx0VmFsdWU6IG51bWJlcjtcbiAgICAgICAgZmllbGQ6IEZpZWxkO1xuICAgICAgICBkaXNwYXRjaDogRGlzcGF0Y2g8RWRpdGFibGVBY3Rpb248RmllbGQ+PjtcbiAgICB9ICYgT21pdDxSZWFjdC5IVE1MUHJvcHM8SFRNTElucHV0RWxlbWVudD4sIE9taXR0YWJsZT5cbikge1xuICAgIGNvbnN0IHsgZmllbGQsIGRpc3BhdGNoLCBkZWZhdWx0VmFsdWUgPSAwLCBtaW4sIG1heCwgc3RlcCwgLi4ucmVzdCB9ID0gcHJvcHM7XG4gICAgY29uc3QgdmFsdWUgPSAoZmllbGQ/LnZhbHVlID8/IGRlZmF1bHRWYWx1ZSkgYXMgbnVtYmVyO1xuICAgIHJldHVybiAoXG4gICAgICAgIDxTbGlkZXJcbiAgICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAgICAgZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICAgIG1pbj17bWlufVxuICAgICAgICAgICAgbWF4PXttYXh9XG4gICAgICAgICAgICBzdGVwPXtzdGVwfVxuICAgICAgICAgICAgdmFsdWU9e3VuZGVmaW5lZH1cbiAgICAgICAgICAgIG9uVmFsdWVDaGFuZ2U9e3VzZVNldEZpZWxkKGZpZWxkLCAoYikgPT5cbiAgICAgICAgICAgICAgICBkaXNwYXRjaCh7IHR5cGU6IFwiY29udGVudC1jaGFuZ2VkXCIsIG5ld1ZhbHVlOiB7IC4uLmZpZWxkLCB2YWx1ZTogYiB9IH0pXG4gICAgICAgICAgICApfVxuICAgICAgICAvPlxuICAgICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBGaWVsZFN3aXRjaChcbiAgICBwcm9wczoge1xuICAgICAgICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gICAgICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBib29sZWFuO1xuICAgICAgICBmaWVsZDogRmllbGQ7XG4gICAgICAgIGRpc3BhdGNoOiBEaXNwYXRjaDxFZGl0YWJsZUFjdGlvbjxGaWVsZD4+O1xuICAgIH0gJiBPbWl0PFJlYWN0LkhUTUxQcm9wczxIVE1MSW5wdXRFbGVtZW50PiwgT21pdHRhYmxlPlxuKSB7XG4gICAgY29uc3QgeyBmaWVsZCwgZGlzcGF0Y2gsIGRlZmF1bHRWYWx1ZSA9IGZhbHNlLCAuLi5yZXN0IH0gPSBwcm9wcztcbiAgICByZXR1cm4gKFxuICAgICAgICA8U3dpdGNoXG4gICAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgICAgIG9uVG9nZ2xlQ2hhbmdlPXt1c2VTZXRGaWVsZChmaWVsZCwgKGIpID0+XG4gICAgICAgICAgICAgICAgZGlzcGF0Y2goeyB0eXBlOiBcImNvbnRlbnQtY2hhbmdlZFwiLCBuZXdWYWx1ZTogeyAuLi5maWVsZCwgdmFsdWU6IGIgfSB9KVxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIGRlZmF1bHRDaGVja2VkPXsoZmllbGQ/LnZhbHVlID8/IGRlZmF1bHRWYWx1ZSkgYXMgYm9vbGVhbn1cbiAgICAgICAgICAgIGNoZWNrZWQ9e3VuZGVmaW5lZH1cbiAgICAgICAgLz5cbiAgICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gRmllbGRTZWxlY3Qoe1xuICAgIG11bHRpID0gZmFsc2UsXG4gICAgb3B0aW9ucyxcbiAgICBkZWZhdWx0VmFsdWUsXG4gICAgZmllbGQsXG4gICAgZGlzcGF0Y2gsXG59OiB7XG4gICAgbXVsdGk/OiBib29sZWFuO1xuICAgIGRlZmF1bHRWYWx1ZTogc3RyaW5nIHwgc3RyaW5nW107XG4gICAgZmllbGQ6IEZpZWxkO1xuICAgIG9wdGlvbnM6IHsgdmFsdWU6IHN0cmluZzsgbGFiZWw6IHN0cmluZyB9W107XG4gICAgZGlzcGF0Y2g6IERpc3BhdGNoPEVkaXRhYmxlQWN0aW9uPEZpZWxkPj47XG59KSB7XG4gICAgY29uc3QgaW5uZXJDYWxsYmFjayA9IHVzZVNldEZpZWxkKGZpZWxkLCAoYikgPT5cbiAgICAgICAgZGlzcGF0Y2goeyB0eXBlOiBcImNvbnRlbnQtY2hhbmdlZFwiLCBuZXdWYWx1ZTogeyAuLi5maWVsZCwgdmFsdWU6IGIgfSB9KVxuICAgICk7XG4gICAgY29uc3Qgb25DaGFuZ2UgPSB1c2VDYWxsYmFjayhcbiAgICAgICAgKG5ld1ZhbHVlOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGxldCBub3JtYWxpemVkO1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobmV3VmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgbm9ybWFsaXplZCA9IG5ld1ZhbHVlLm1hcCgoeCkgPT4geC52YWx1ZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWQgPSBuZXdWYWx1ZS52YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlubmVyQ2FsbGJhY2sobm9ybWFsaXplZCk7XG4gICAgICAgIH0sXG4gICAgICAgIFtmaWVsZCwgaW5uZXJDYWxsYmFja11cbiAgICApO1xuXG4gICAgY29uc3QgYXJyYXlWYWwgPSB1c2VNZW1vKFxuICAgICAgICAoKSA9PiAoQXJyYXkuaXNBcnJheShmaWVsZD8udmFsdWUpID8gZmllbGQudmFsdWUgOiAhIWZpZWxkID8gW2ZpZWxkLnZhbHVlXSA6IFtkZWZhdWx0VmFsdWVdKSxcbiAgICAgICAgW2ZpZWxkXVxuICAgICk7XG4gICAgY29uc3QgZGVmVmFsID0gdXNlTWVtbyhcbiAgICAgICAgKCkgPT5cbiAgICAgICAgICAgIG11bHRpXG4gICAgICAgICAgICAgICAgPyBvcHRpb25zLmZpbHRlcigoYSkgPT4gYXJyYXlWYWwuZmluZEluZGV4KChiKSA9PiBiID09IGEudmFsdWUpICE9IC0xKVxuICAgICAgICAgICAgICAgIDogb3B0aW9ucy5maW5kKChhKSA9PiBhLnZhbHVlID09IGZpZWxkPy52YWx1ZSksXG4gICAgICAgIFtvcHRpb25zLCBtdWx0aV1cbiAgICApO1xuICAgIHJldHVybiAoXG4gICAgICAgIDxTZWxlY3RcbiAgICAgICAgICAgIGNsYXNzTmFtZVByZWZpeD1cImRhdGFjb3JlLXNlbGVjdGFibGVcIlxuICAgICAgICAgICAgb25DaGFuZ2U9eyhuKSA9PiBvbkNoYW5nZShuKX1cbiAgICAgICAgICAgIHVuc3R5bGVkXG4gICAgICAgICAgICBpc011bHRpPXttdWx0aSA/PyBmYWxzZX1cbiAgICAgICAgICAgIG9wdGlvbnM9e29wdGlvbnN9XG4gICAgICAgICAgICBtZW51UG9ydGFsVGFyZ2V0PXtkb2N1bWVudC5ib2R5fVxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlPXtkZWZWYWx9XG4gICAgICAgICAgICBjbGFzc05hbWVzPXt7XG4gICAgICAgICAgICAgICAgaW5wdXQ6ICgpID0+IFwicHJvbXB0LWlucHV0XCIsXG4gICAgICAgICAgICAgICAgdmFsdWVDb250YWluZXI6ICgpID0+IFwic3VnZ2VzdGlvbi1pdGVtIHZhbHVlLWNvbnRhaW5lclwiLFxuICAgICAgICAgICAgICAgIGNvbnRhaW5lcjogKCkgPT4gXCJzdWdnZXN0aW9uLWNvbnRhaW5lclwiLFxuICAgICAgICAgICAgICAgIG1lbnU6ICgpID0+IFwic3VnZ2VzdGlvbi1jb250ZW50IHN1Z2dlc3Rpb24tY29udGFpbmVyXCIsXG4gICAgICAgICAgICAgICAgb3B0aW9uOiAocHJvcHM6IGFueSkgPT4gYHN1Z2dlc3Rpb24taXRlbSR7cHJvcHMuaXNTZWxlY3RlZCA/IFwiIGlzLXNlbGVjdGVkXCIgOiBcIlwifWAsXG4gICAgICAgICAgICB9fVxuICAgICAgICAvPlxuICAgICk7XG59XG4iLCAiaW1wb3J0IHsgR3JvdXBFbGVtZW50LCBHcm91cGluZywgR3JvdXBpbmdzLCBMaXRlcmFsLCBMaXRlcmFscyB9IGZyb20gXCJleHByZXNzaW9uL2xpdGVyYWxcIjtcbmltcG9ydCB7IEdyb3VwaW5nQ29uZmlnLCB1c2VBc0VsZW1lbnQsIFZhbmlsbGFDb2x1bW4sIFZhbmlsbGFUYWJsZVByb3BzIH0gZnJvbSBcIi4vdGFibGVcIjtcbmltcG9ydCB7IHVzZUludGVybmluZywgdXNlU3RhYmxlQ2FsbGJhY2sgfSBmcm9tIFwidWkvaG9va3NcIjtcbmltcG9ydCB7IERpc3BhdGNoLCBSZWR1Y2VyLCB1c2VDYWxsYmFjaywgdXNlQ29udGV4dCwgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWR1Y2VyLCB1c2VSZWYgfSBmcm9tIFwicHJlYWN0L2hvb2tzXCI7XG5pbXBvcnQgeyBDb250cm9sbGVkUGFnZXIsIHVzZURhdGFjb3JlUGFnaW5nIH0gZnJvbSBcIi4vcGFnaW5nXCI7XG5pbXBvcnQgeyBERUZBVUxUX1RBQkxFX0NPTVBBUkFUT1IsIFNvcnRCdXR0b24sIFNvcnREaXJlY3Rpb24sIFNvcnRPbiB9IGZyb20gXCIuL3RhYmxlXCI7XG5pbXBvcnQgeyBDb250ZXh0LCBjcmVhdGVDb250ZXh0LCBGcmFnbWVudCwgVk5vZGUgfSBmcm9tIFwicHJlYWN0XCI7XG5pbXBvcnQgeyBDVVJSRU5UX0ZJTEVfQ09OVEVYVCwgTGl0IH0gZnJvbSBcInVpL21hcmtkb3duXCI7XG5pbXBvcnQgeyBFZGl0YWJsZSwgdXNlRWRpdGFibGVEaXNwYXRjaCB9IGZyb20gXCJ1aS9maWVsZHMvZWRpdGFibGVcIjtcbmltcG9ydCB7IGNvbWJpbmVDbGFzc2VzIH0gZnJvbSBcIi4uL2Jhc2ljc1wiO1xuaW1wb3J0IHsgSW5kZXhhYmxlIH0gZnJvbSBcImluZGV4L3R5cGVzL2luZGV4YWJsZVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRyZWVUYWJsZVJvd0RhdGE8VD4ge1xuICAgIHZhbHVlOiBUO1xuICAgIGNoaWxkcmVuOiBUcmVlVGFibGVSb3dEYXRhPFQ+W107XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgVHJlZVV0aWxzIHtcbiAgICBleHBvcnQgZnVuY3Rpb24gaXNUcmVlVGFibGVSb3dEYXRhPFQ+KGRhdGE6IGFueSk6IGRhdGEgaXMgVHJlZVRhYmxlUm93RGF0YTxUPiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBcImNoaWxkcmVuXCIgaW4gZGF0YSAmJlxuICAgICAgICAgICAgXCJ2YWx1ZVwiIGluIGRhdGEgJiZcbiAgICAgICAgICAgICFBcnJheS5pc0FycmF5KGRhdGEpICYmXG4gICAgICAgICAgICBPYmplY3Qua2V5cyhkYXRhKS5sZW5ndGggPT0gMiAmJlxuICAgICAgICAgICAgQXJyYXkuaXNBcnJheShkYXRhLmNoaWxkcmVuKVxuICAgICAgICApO1xuICAgIH1cbiAgICBleHBvcnQgZnVuY3Rpb24gY291bnRJblRyZWVSb3c8VD4obm9kZTogVHJlZVRhYmxlUm93RGF0YTxUPiwgdG9wOiBib29sZWFuID0gdHJ1ZSk6IG51bWJlciB7XG4gICAgICAgIGxldCByZXN1bHQgPSAwO1xuICAgICAgICBpZiAoIXRvcCkgcmVzdWx0Kys7XG4gICAgICAgIGZvciAobGV0IG4gb2Ygbm9kZS5jaGlsZHJlbikgcmVzdWx0ICs9IGNvdW50SW5UcmVlUm93KG4sIGZhbHNlKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgZXhwb3J0IGZ1bmN0aW9uIG9mQXJyYXk8VD4oc291cmNlOiBUW10sIGNoaWxkRm46IChlbDogVCkgPT4gVFtdKTogVHJlZVRhYmxlUm93RGF0YTxUPltdIHtcbiAgICAgICAgY29uc3QgbWFwcGVyID0gKGVsOiBUKTogVHJlZVRhYmxlUm93RGF0YTxUPiA9PiB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHZhbHVlOiBlbCxcbiAgICAgICAgICAgICAgICBjaGlsZHJlbjogY2hpbGRGbihlbCkubWFwKG1hcHBlciksXG4gICAgICAgICAgICB9IGFzIFRyZWVUYWJsZVJvd0RhdGE8VD47XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBzb3VyY2UubWFwKG1hcHBlcik7XG4gICAgfVxuICAgIGV4cG9ydCBmdW5jdGlvbiBvZk5vZGU8VD4oc291cmNlOiBULCBjaGlsZEZuOiAoZWw6IFQpID0+IFRbXSk6IFRyZWVUYWJsZVJvd0RhdGE8VD4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdmFsdWU6IHNvdXJjZSxcbiAgICAgICAgICAgIGNoaWxkcmVuOiBvZkFycmF5KGNoaWxkRm4oc291cmNlKSwgY2hpbGRGbiksXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZXhwb3J0IGZ1bmN0aW9uIG9mR3JvdXBpbmc8VD4oZWxlbWVudHM6IEdyb3VwaW5nPFQ+LCBjaGlsZEZuOiAoZWw6IFQpID0+IFRbXSk6IEdyb3VwaW5nPFRyZWVUYWJsZVJvd0RhdGE8VD4+IHtcbiAgICAgICAgY29uc3QgbWFwcGVyID0gKGw6IFQgfCBHcm91cEVsZW1lbnQ8VD4pOiBHcm91cEVsZW1lbnQ8VHJlZVRhYmxlUm93RGF0YTxUPj4gfCBUcmVlVGFibGVSb3dEYXRhPFQ+ID0+IHtcbiAgICAgICAgICAgIGlmIChHcm91cGluZ3MuaXNFbGVtZW50R3JvdXAobCkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHsga2V5OiBsLmtleSwgcm93czogbC5yb3dzLm1hcChtYXBwZXIpIH0gYXMgR3JvdXBFbGVtZW50PFRyZWVUYWJsZVJvd0RhdGE8VD4+O1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogbCxcbiAgICAgICAgICAgICAgICBjaGlsZHJlbjogY2hpbGRGbihsKS5tYXAobWFwcGVyKSxcbiAgICAgICAgICAgIH0gYXMgVHJlZVRhYmxlUm93RGF0YTxUPjtcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnRzLm1hcChtYXBwZXIpIGFzIEdyb3VwaW5nPFRyZWVUYWJsZVJvd0RhdGE8VD4+O1xuICAgIH1cblxuICAgIGV4cG9ydCBmdW5jdGlvbiBjb3VudDxUPihlbGVtZW50czogR3JvdXBpbmc8VHJlZVRhYmxlUm93RGF0YTxUPj4gfCBHcm91cEVsZW1lbnQ8VHJlZVRhYmxlUm93RGF0YTxUPj4pOiBudW1iZXIge1xuICAgICAgICBpZiAoR3JvdXBpbmdzLmlzRWxlbWVudEdyb3VwKGVsZW1lbnRzKSkge1xuICAgICAgICAgICAgcmV0dXJuIGNvdW50KGVsZW1lbnRzLnJvd3MpO1xuICAgICAgICB9IGVsc2UgaWYgKEdyb3VwaW5ncy5pc0dyb3VwaW5nKGVsZW1lbnRzKSkge1xuICAgICAgICAgICAgbGV0IHJlc3VsdCA9IDA7XG4gICAgICAgICAgICBmb3IgKGxldCBncm91cCBvZiBlbGVtZW50cykgcmVzdWx0ICs9IGNvdW50KGdyb3VwLnJvd3MpO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBlbGVtZW50cy5yZWR1Y2UoKHB2LCBjdikgPT4gcHYgKyBjb3VudEluVHJlZVJvdyhjdiksIDApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2xpY2VJblRyZWVSb3c8VD4oZWxlbWVudHM6IFRyZWVUYWJsZVJvd0RhdGE8VD5bXSwgc3RhcnQ6IG51bWJlciwgZW5kOiBudW1iZXIpOiBUcmVlVGFibGVSb3dEYXRhPFQ+W10ge1xuICAgICAgICBpZiAoZW5kIDw9IHN0YXJ0KSByZXR1cm4gW107XG5cbiAgICAgICAgbGV0IGluZGV4ID0gMCxcbiAgICAgICAgICAgIHNlZW4gPSAwO1xuICAgICAgICB3aGlsZSAoaW5kZXggPCBlbGVtZW50cy5sZW5ndGggJiYgc2VlbiArIGNvdW50SW5UcmVlUm93KGVsZW1lbnRzW2luZGV4XSkgPD0gc3RhcnQpIHtcbiAgICAgICAgICAgIHNlZW4gKz0gY291bnRJblRyZWVSb3coZWxlbWVudHNbaW5kZXhdKTtcbiAgICAgICAgICAgIGluZGV4Kys7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaW5kZXggPj0gZWxlbWVudHMubGVuZ3RoKSByZXR1cm4gW107XG5cbiAgICAgICAgY29uc3QgcmVzdWx0OiBUcmVlVGFibGVSb3dEYXRhPFQ+W10gPSBbXTtcbiAgICAgICAgd2hpbGUgKGluZGV4IDwgZWxlbWVudHMubGVuZ3RoICYmIHNlZW4gPCBlbmQpIHtcbiAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gZWxlbWVudHNbaW5kZXhdO1xuICAgICAgICAgICAgY29uc3QgZ3JvdXBTaXplID0gY291bnRJblRyZWVSb3coZ3JvdXApO1xuICAgICAgICAgICAgY29uc3QgZ3JvdXBTdGFydCA9IE1hdGgubWF4KHNlZW4sIHN0YXJ0KTtcbiAgICAgICAgICAgIGNvbnN0IGdyb3VwRW5kID0gTWF0aC5taW4oZ3JvdXBTaXplICsgc2VlbiwgZW5kKTtcblxuICAgICAgICAgICAgcmVzdWx0LnB1c2goe1xuICAgICAgICAgICAgICAgIHZhbHVlOiBncm91cC52YWx1ZSxcbiAgICAgICAgICAgICAgICBjaGlsZHJlbjogc2xpY2VJblRyZWVSb3coZ3JvdXAuY2hpbGRyZW4sIGdyb3VwU3RhcnQgLSBzZWVuLCBncm91cEVuZCAtIHNlZW4pLFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHNlZW4gKz0gZ3JvdXBTaXplO1xuICAgICAgICAgICAgaW5kZXgrKztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgZXhwb3J0IGZ1bmN0aW9uIHNsaWNlPFQ+KFxuICAgICAgICBlbGVtZW50czogR3JvdXBpbmc8VHJlZVRhYmxlUm93RGF0YTxUPj4sXG4gICAgICAgIHN0YXJ0OiBudW1iZXIsXG4gICAgICAgIGVuZDogbnVtYmVyXG4gICAgKTogR3JvdXBpbmc8VHJlZVRhYmxlUm93RGF0YTxUPj4ge1xuICAgICAgICBsZXQgaW5pdGlhbCA9IFsuLi5Hcm91cGluZ3Muc2xpY2UoZWxlbWVudHMsIHN0YXJ0LCBlbmQpXSBhcyBHcm91cGluZzxUcmVlVGFibGVSb3dEYXRhPFQ+PjtcbiAgICAgICAgbGV0IGluZGV4ID0gMCxcbiAgICAgICAgICAgIHNlZW4gPSAwO1xuXG4gICAgICAgIGZvciAobGV0IGVsZW1lbnQgb2YgaW5pdGlhbCkge1xuICAgICAgICAgICAgaWYgKEdyb3VwaW5ncy5pc0VsZW1lbnRHcm91cChlbGVtZW50KSkge1xuICAgICAgICAgICAgICAgIGxldCBncm91cFNpemUgPSBHcm91cGluZ3MuY291bnQoZWxlbWVudHMpO1xuICAgICAgICAgICAgICAgIGxldCBncm91cFN0YXJ0ID0gTWF0aC5taW4oc2Vlbiwgc3RhcnQpO1xuICAgICAgICAgICAgICAgIGxldCBncm91cEVuZCA9IE1hdGgubWluKGdyb3VwU2l6ZSwgZW5kKTtcbiAgICAgICAgICAgICAgICAoaW5pdGlhbFtpbmRleF0gYXMgR3JvdXBFbGVtZW50PFRyZWVUYWJsZVJvd0RhdGE8VD4+KS5yb3dzID0gR3JvdXBpbmdzLnNsaWNlKFxuICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnJvd3MsXG4gICAgICAgICAgICAgICAgICAgIGdyb3VwU3RhcnQsXG4gICAgICAgICAgICAgICAgICAgIGdyb3VwRW5kXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBzZWVuICs9IGdyb3VwU2l6ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc2VlbiArPSBjb3VudEluVHJlZVJvdyhlbGVtZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGluZGV4Kys7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGluaXRpYWw7XG4gICAgfVxuICAgIC8qKiByZWN1cnNpdmVseSBzb3J0IGEgdHJlZSAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiBzb3J0PFQsIFYgPSBMaXRlcmFsPihcbiAgICAgICAgcm93czogKFRyZWVUYWJsZVJvd0RhdGE8VD4gfCBHcm91cEVsZW1lbnQ8VHJlZVRhYmxlUm93RGF0YTxUPj4pW10sXG4gICAgICAgIGNvbXBhcmF0b3JzOiB7XG4gICAgICAgICAgICBmbjogKGE6IFYsIGI6IFYsIGFvOiBULCBhYjogVCkgPT4gbnVtYmVyO1xuICAgICAgICAgICAgZGlyZWN0aW9uOiBTb3J0RGlyZWN0aW9uO1xuICAgICAgICAgICAgYWN0dWFsVmFsdWU6IChvYmo6IFQpID0+IFY7XG4gICAgICAgIH1bXVxuICAgICk6IChUcmVlVGFibGVSb3dEYXRhPFQ+IHwgR3JvdXBFbGVtZW50PFRyZWVUYWJsZVJvd0RhdGE8VD4+KVtdIHtcbiAgICAgICAgY29uc3QgcmVhbENvbXBhcmF0b3IgPSAoXG4gICAgICAgICAgICBhOiBUcmVlVGFibGVSb3dEYXRhPFQ+IHwgR3JvdXBFbGVtZW50PFRyZWVUYWJsZVJvd0RhdGE8VD4+LFxuICAgICAgICAgICAgYjogVHJlZVRhYmxlUm93RGF0YTxUPiB8IEdyb3VwRWxlbWVudDxUcmVlVGFibGVSb3dEYXRhPFQ+PlxuICAgICAgICApOiBudW1iZXIgPT4ge1xuICAgICAgICAgICAgZm9yIChsZXQgY29tcCBvZiBjb21wYXJhdG9ycykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRpcmVjdGlvbiA9IGNvbXAuZGlyZWN0aW9uLnRvTG9jYWxlTG93ZXJDYXNlKCkgPT09IFwiYXNjZW5kaW5nXCIgPyAxIDogLTE7XG4gICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IDA7XG4gICAgICAgICAgICAgICAgaWYgKEdyb3VwaW5ncy5pc0VsZW1lbnRHcm91cChhKSAmJiBHcm91cGluZ3MuaXNFbGVtZW50R3JvdXAoYikpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gMDtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFHcm91cGluZ3MuaXNFbGVtZW50R3JvdXAoYSkgJiYgIUdyb3VwaW5ncy5pc0VsZW1lbnRHcm91cChiKSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aW9uICogY29tcC5mbihjb21wLmFjdHVhbFZhbHVlKGEudmFsdWUpLCBjb21wLmFjdHVhbFZhbHVlKGIudmFsdWUpLCBhLnZhbHVlLCBiLnZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCAhPSAwKSByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IG1hcCA9IChcbiAgICAgICAgICAgIHQ6IFRyZWVUYWJsZVJvd0RhdGE8VD4gfCBHcm91cEVsZW1lbnQ8VHJlZVRhYmxlUm93RGF0YTxUPj5cbiAgICAgICAgKTogVHJlZVRhYmxlUm93RGF0YTxUPiB8IEdyb3VwRWxlbWVudDxUcmVlVGFibGVSb3dEYXRhPFQ+PiA9PiB7XG4gICAgICAgICAgICBsZXQgcjtcbiAgICAgICAgICAgIGlmIChHcm91cGluZ3MuaXNFbGVtZW50R3JvdXAodCkpXG4gICAgICAgICAgICAgICAgciA9IHsgLi4udCwgcm93czogc29ydCh0LnJvd3MsIGNvbXBhcmF0b3JzKS5tYXAobWFwKSB9IGFzIEdyb3VwRWxlbWVudDxUcmVlVGFibGVSb3dEYXRhPFQ+PjtcbiAgICAgICAgICAgIGVsc2UgciA9IHsgLi4udCwgY2hpbGRyZW46IHNvcnQodC5jaGlsZHJlbiwgY29tcGFyYXRvcnMpLm1hcChtYXApIH0gYXMgVHJlZVRhYmxlUm93RGF0YTxUPjtcbiAgICAgICAgICAgIHJldHVybiByO1xuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gcm93cy5tYXAobWFwKS5zb3J0KHJlYWxDb21wYXJhdG9yKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHVzZUtleUZuPFQ+KGlkOiBUcmVlVGFibGVTdGF0ZTxUPltcImlkXCJdLCAuLi5kZXBzOiBhbnlbXSkge1xuICAgIGNvbnN0IHJldCA9IHVzZUNhbGxiYWNrKFxuICAgICAgICAoZWw6IFRyZWVUYWJsZVJvd0RhdGE8VD4gfCBHcm91cEVsZW1lbnQ8VHJlZVRhYmxlUm93RGF0YTxUPj4pID0+IHtcbiAgICAgICAgICAgIGlmIChHcm91cGluZ3MuaXNFbGVtZW50R3JvdXAoZWwpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVsLmtleTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlkKGVsLnZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgWy4uLmRlcHNdXG4gICAgKTtcbiAgICByZXR1cm4gcmV0O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRyZWVUYWJsZUNvbHVtbjxULCBWID0gTGl0ZXJhbD4gZXh0ZW5kcyBWYW5pbGxhQ29sdW1uPFQsIFY+IHtcbiAgICBzb3J0YWJsZT86IGJvb2xlYW47XG5cbiAgICBjb21wYXJhdG9yPzogKGZpcnN0OiBWLCBzZWNvbmQ6IFYsIGZpcnN0T2JqZWN0OiBULCBzZWNvbmRPYmplY3Q6IFQpID0+IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcmVlVGFibGVTdGF0ZTxUPiB7XG4gICAgc29ydE9uPzogU29ydE9uW107XG4gICAgb3Blbk1hcD86IE1hcDxzdHJpbmcsIGJvb2xlYW4+O1xuICAgIGlkOiAob2JqOiBUKSA9PiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJlZVRhYmxlUHJvcHM8VD4ge1xuICAgIGNvbHVtbnM6IFRyZWVUYWJsZUNvbHVtbjxUPltdO1xuICAgIHJvd3M6IFRbXSB8IEdyb3VwaW5nPFQ+O1xuICAgIHBhZ2luZz86IGJvb2xlYW4gfCBudW1iZXI7XG4gICAgc2Nyb2xsT25QYWdpbmc/OiBib29sZWFuIHwgbnVtYmVyO1xuICAgIGdyb3VwaW5ncz86IFZhbmlsbGFUYWJsZVByb3BzPFRyZWVUYWJsZVJvd0RhdGE8VD4+W1wiZ3JvdXBpbmdzXCJdO1xuICAgIHNvcnRPbj86IFNvcnRPbltdO1xuICAgIGNoaWxkU2VsZWN0b3I6IChyYXc6IFQpID0+IFRbXTtcbiAgICBpZD86IChvYmo6IFQpID0+IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgVHJlZVRhYmxlQWN0aW9uPFQ+ID1cbiAgICB8IHsgdHlwZTogXCJzb3J0LWNvbHVtblwiOyBjb2x1bW46IHN0cmluZzsgZGlyZWN0aW9uOiBTb3J0RGlyZWN0aW9uIHwgdW5kZWZpbmVkIH1cbiAgICB8IHtcbiAgICAgICAgICB0eXBlOiBcInJvdy1leHBhbmRcIjtcbiAgICAgICAgICByb3c6IFQ7XG4gICAgICAgICAgbmV3VmFsdWU6IGJvb2xlYW47XG4gICAgICB9XG4gICAgfCB7IHR5cGU6IFwib3Blbi1tYXAtY2hhbmdlZFwiOyBuZXdWYWx1ZTogTWFwPHN0cmluZywgYm9vbGVhbj4gfTtcblxuZXhwb3J0IGZ1bmN0aW9uIHRyZWVUYWJsZVJlZHVjZXI8VD4oc3RhdGU6IFRyZWVUYWJsZVN0YXRlPFQ+LCBhY3Rpb246IFRyZWVUYWJsZUFjdGlvbjxUPik6IFRyZWVUYWJsZVN0YXRlPFQ+IHtcbiAgICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gICAgICAgIGNhc2UgXCJzb3J0LWNvbHVtblwiOlxuICAgICAgICAgICAgaWYgKGFjdGlvbi5kaXJlY3Rpb24gPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIHNvcnRPbjogdW5kZWZpbmVkIH07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgICAgICAgICBzb3J0T246IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcImNvbHVtblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBhY3Rpb24uY29sdW1uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbjogYWN0aW9uLmRpcmVjdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgY2FzZSBcInJvdy1leHBhbmRcIjpcbiAgICAgICAgICAgIGNvbnN0IG5ld01hcCA9IG5ldyBNYXA8c3RyaW5nLCBib29sZWFuPigpO1xuICAgICAgICAgICAgaWYgKCFzdGF0ZS5vcGVuTWFwKSByZXR1cm4geyAuLi5zdGF0ZSB9O1xuICAgICAgICAgICAgZm9yIChjb25zdCBrIG9mIHN0YXRlLm9wZW5NYXAua2V5cygpKSBuZXdNYXAuc2V0KGssIHN0YXRlLm9wZW5NYXAuZ2V0KGspISk7XG4gICAgICAgICAgICBuZXdNYXAuc2V0KHN0YXRlLmlkKGFjdGlvbi5yb3cpLCBhY3Rpb24ubmV3VmFsdWUpO1xuICAgICAgICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIG9wZW5NYXA6IG5ld01hcCB9O1xuICAgICAgICBjYXNlIFwib3Blbi1tYXAtY2hhbmdlZFwiOlxuICAgICAgICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIG9wZW5NYXA6IGFjdGlvbi5uZXdWYWx1ZSB9O1xuICAgIH1cbiAgICBjb25zb2xlLndhcm4oXCJkYXRhY29yZTogRW5jb3VudGVyZWQgdW5yZWNvZ25pemVkIG9wZXJhdGlvbjogXCIgKyAoYWN0aW9uIGFzIFRyZWVUYWJsZUFjdGlvbjxUPikudHlwZSk7XG4gICAgcmV0dXJuIHN0YXRlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlVHJlZVRhYmxlRGlzcGF0Y2g8VD4oXG4gICAgaW5pdGlhbDogVHJlZVRhYmxlU3RhdGU8VD4gfCAoKCkgPT4gVHJlZVRhYmxlU3RhdGU8VD4pXG4pOiBbVHJlZVRhYmxlU3RhdGU8VD4sIERpc3BhdGNoPFRyZWVUYWJsZUFjdGlvbjxUPj5dIHtcbiAgICBjb25zdCBpbml0ID0gdXNlTWVtbygoKSA9PiAodHlwZW9mIGluaXRpYWwgPT0gXCJmdW5jdGlvblwiID8gaW5pdGlhbCgpIDogaW5pdGlhbCksIFtdKTtcbiAgICByZXR1cm4gdXNlUmVkdWNlcih0cmVlVGFibGVSZWR1Y2VyIGFzIFJlZHVjZXI8VHJlZVRhYmxlU3RhdGU8VD4sIFRyZWVUYWJsZUFjdGlvbjxUPj4sIGluaXQpO1xufVxuXG5leHBvcnQgdHlwZSBSb3dFeHBhbnNpb25Db250ZXh0VHlwZTxUPiA9IHtcbiAgICBkaXNwYXRjaDogRGlzcGF0Y2g8VHJlZVRhYmxlQWN0aW9uPFQ+PjtcbiAgICBvcGVuTWFwOiBNYXA8c3RyaW5nLCBib29sZWFuPjtcbiAgICBpZDogKG9iajogVCkgPT4gc3RyaW5nO1xufTtcblxuZXhwb3J0IGNvbnN0IEVYUEFOREVEX0NPTlRFWFQgPSBjcmVhdGVDb250ZXh0PFJvd0V4cGFuc2lvbkNvbnRleHRUeXBlPHVua25vd24+IHwgbnVsbD4obnVsbCk7XG5cbmV4cG9ydCBmdW5jdGlvbiBUeXBlZEV4cGFuZGVkQ29udGV4dDxUPigpIHtcbiAgICByZXR1cm4gRVhQQU5ERURfQ09OVEVYVCBhcyBDb250ZXh0PFJvd0V4cGFuc2lvbkNvbnRleHRUeXBlPFQ+Pjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFRyZWVUYWJsZUhlYWRlckNlbGw8VD4oe1xuICAgIGNvbHVtbixcbiAgICBzb3J0LFxuICAgIHNvcnRhYmxlLFxufToge1xuICAgIGNvbHVtbjogVHJlZVRhYmxlQ29sdW1uPFQ+O1xuICAgIHNvcnQ/OiBTb3J0RGlyZWN0aW9uO1xuICAgIHNvcnRhYmxlOiBib29sZWFuO1xufSkge1xuICAgIGNvbnN0IHsgZGlzcGF0Y2ggfSA9IHVzZUNvbnRleHQoVHlwZWRFeHBhbmRlZENvbnRleHQ8VD4oKSk7XG4gICAgY29uc3QgaGVhZGVyOiBzdHJpbmcgfCBWTm9kZSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICBpZiAoIWNvbHVtbi50aXRsZSkgcmV0dXJuIGNvbHVtbi5pZDtcbiAgICAgICAgZWxzZSBpZiAodHlwZW9mIGNvbHVtbi50aXRsZSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gY29sdW1uLnRpdGxlKCk7XG4gICAgICAgIGVsc2UgcmV0dXJuIGNvbHVtbi50aXRsZTtcbiAgICB9LCBbY29sdW1uLmlkLCBjb2x1bW4udGl0bGVdKTtcblxuICAgIGNvbnN0IHNvcnRDbGlja2VkID0gdXNlU3RhYmxlQ2FsbGJhY2soXG4gICAgICAgIChfZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgICAgIGlmIChzb3J0ID09IHVuZGVmaW5lZCkgZGlzcGF0Y2goeyB0eXBlOiBcInNvcnQtY29sdW1uXCIsIGNvbHVtbjogY29sdW1uLmlkLCBkaXJlY3Rpb246IFwiYXNjZW5kaW5nXCIgfSk7XG4gICAgICAgICAgICBlbHNlIGlmIChzb3J0ID09IFwiYXNjZW5kaW5nXCIpIGRpc3BhdGNoKHsgdHlwZTogXCJzb3J0LWNvbHVtblwiLCBjb2x1bW46IGNvbHVtbi5pZCwgZGlyZWN0aW9uOiBcImRlc2NlbmRpbmdcIiB9KTtcbiAgICAgICAgICAgIGVsc2UgZGlzcGF0Y2goeyB0eXBlOiBcInNvcnQtY29sdW1uXCIsIGNvbHVtbjogY29sdW1uLmlkLCBkaXJlY3Rpb246IHVuZGVmaW5lZCB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgW2NvbHVtbi5pZF1cbiAgICApO1xuXG4gICAgY29uc3QgcmVhbFdpZHRoID0gdXNlTWVtbyhcbiAgICAgICAgKCkgPT4gKGNvbHVtbi53aWR0aCA9PT0gXCJtaW5pbXVtXCIgPyBcIjFweFwiIDogY29sdW1uLndpZHRoID09PSBcIm1heGltdW1cIiA/IFwiYXV0b1wiIDogY29sdW1uLndpZHRoICsgXCJweFwiKSxcbiAgICAgICAgW2NvbHVtbi53aWR0aF1cbiAgICApO1xuICAgIHJldHVybiAoXG4gICAgICAgIDx0aCB3aWR0aD17cmVhbFdpZHRofSBjbGFzc05hbWU9XCJkYXRhY29yZS10YWJsZS1oZWFkZXItY2VsbFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkYXRhY29yZS10YWJsZS1oZWFkZXItY2VsbC1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAge3NvcnRhYmxlICYmIDxTb3J0QnV0dG9uIGNsYXNzTmFtZT1cImRhdGFjb3JlLXRhYmxlLXNvcnRcIiBkaXJlY3Rpb249e3NvcnR9IG9uQ2xpY2s9e3NvcnRDbGlja2VkfSAvPn1cbiAgICAgICAgICAgICAgICA8ZGl2IG9uQ2xpY2s9e3NvcnRDbGlja2VkfSBjbGFzc05hbWU9XCJkYXRhY29yZS10YWJsZS1oZWFkZXItdGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAge2hlYWRlcn1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3RoPlxuICAgICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBUcmVlVGFibGVHcm91cEhlYWRlcjxUPih7XG4gICAgbGV2ZWwsXG4gICAgdmFsdWUsXG4gICAgd2lkdGgsXG4gICAgY29uZmlnLFxufToge1xuICAgIGxldmVsOiBudW1iZXI7XG4gICAgdmFsdWU6IEdyb3VwRWxlbWVudDxUcmVlVGFibGVSb3dEYXRhPFQ+PjtcbiAgICB3aWR0aDogbnVtYmVyO1xuICAgIGNvbmZpZz86IEdyb3VwaW5nQ29uZmlnPFRyZWVUYWJsZVJvd0RhdGE8VD4+O1xufSkge1xuICAgIGNvbnN0IHNvdXJjZVBhdGggPSB1c2VDb250ZXh0KENVUlJFTlRfRklMRV9DT05URVhUKTtcbiAgICBjb25zdCByYXdSZW5kZXJhYmxlID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIGlmIChjb25maWc/LnJlbmRlcikgcmV0dXJuIGNvbmZpZy5yZW5kZXIodmFsdWUua2V5LCB2YWx1ZS5yb3dzKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8aDI+XG4gICAgICAgICAgICAgICAgICAgIDxMaXQgc291cmNlUGF0aD17c291cmNlUGF0aH0gaW5saW5lPXt0cnVlfSB2YWx1ZT17dmFsdWUua2V5fSAvPlxuICAgICAgICAgICAgICAgIDwvaDI+XG4gICAgICAgICAgICApO1xuICAgIH0sIFtjb25maWc/LnJlbmRlciwgdmFsdWUua2V5LCB2YWx1ZS5yb3dzXSk7XG4gICAgY29uc3QgcmVuZGVyYWJsZSA9IHVzZUFzRWxlbWVudChyYXdSZW5kZXJhYmxlKTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDx0ciBjbGFzc05hbWU9XCJkYXRhY29yZS10YWJsZS1ncm91cC1oZWFkZXJcIj5cbiAgICAgICAgICAgIDx0ZCBzdHlsZT17eyBwYWRkaW5nTGVmdDogYCR7bGV2ZWwgKiAxLjEyfWVtYCB9fSBjb2xTcGFuPXt3aWR0aCArIDF9PlxuICAgICAgICAgICAgICAgIHtyZW5kZXJhYmxlfVxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICApO1xufVxuZXhwb3J0IGZ1bmN0aW9uIFRyZWVUYWJsZVJvd0dyb3VwPFQ+KHtcbiAgICBsZXZlbCxcbiAgICBjb2x1bW5zLFxuICAgIGVsZW1lbnQsXG4gICAgZ3JvdXBpbmdzLFxufToge1xuICAgIGxldmVsOiBudW1iZXI7XG4gICAgY29sdW1uczogVHJlZVRhYmxlQ29sdW1uPFQ+W107XG4gICAgZWxlbWVudDogR3JvdXBFbGVtZW50PFRyZWVUYWJsZVJvd0RhdGE8VD4+IHwgVHJlZVRhYmxlUm93RGF0YTxUPjtcbiAgICBncm91cGluZ3M/OiBHcm91cGluZ0NvbmZpZzxUcmVlVGFibGVSb3dEYXRhPFQ+PltdO1xufSkge1xuICAgIGNvbnN0IHsgaWQgfSA9IHVzZUNvbnRleHQoVHlwZWRFeHBhbmRlZENvbnRleHQ8VD4oKSk7XG4gICAgY29uc3Qga2V5Rm4gPSB1c2VLZXlGbihpZCk7XG4gICAgY29uc3QgZ3JvdXBJbmRleCA9IGdyb3VwaW5ncyA/IE1hdGgubWluKGdyb3VwaW5ncy5sZW5ndGggLSAxLCBsZXZlbCkgOiAwO1xuICAgIGlmIChHcm91cGluZ3MuaXNFbGVtZW50R3JvdXAoZWxlbWVudCkpIHtcbiAgICAgICAgY29uc3QgZ3JvdXBpbmdDb25maWcgPSBncm91cGluZ3MgPyBncm91cGluZ3NbZ3JvdXBJbmRleF0gOiB1bmRlZmluZWQ7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8RnJhZ21lbnQga2V5PXtrZXlGbihlbGVtZW50KX0+XG4gICAgICAgICAgICAgICAgPFRyZWVUYWJsZUdyb3VwSGVhZGVyIGxldmVsPXtsZXZlbH0gdmFsdWU9e2VsZW1lbnR9IHdpZHRoPXtjb2x1bW5zLmxlbmd0aH0gY29uZmlnPXtncm91cGluZ0NvbmZpZ30gLz5cbiAgICAgICAgICAgICAgICB7ZWxlbWVudC5yb3dzLm1hcCgocm93KSA9PiAoXG4gICAgICAgICAgICAgICAgICAgIDxUcmVlVGFibGVSb3dHcm91cDxUPiBsZXZlbD17bGV2ZWwgKyAxfSBjb2x1bW5zPXtjb2x1bW5zfSBlbGVtZW50PXtyb3d9IGdyb3VwaW5ncz17Z3JvdXBpbmdzfSAvPlxuICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgPC9GcmFnbWVudD5cbiAgICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gPFRyZWVUYWJsZVJvdyByb3c9e2VsZW1lbnR9IGNvbHVtbnM9e2NvbHVtbnN9IGxldmVsPXtsZXZlbCAtIGdyb3VwSW5kZXggKyAxfSBrZXk9e2tleUZuKGVsZW1lbnQpfSAvPjtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBUcmVlVGFibGVSb3dFeHBhbmRlcjxUPih7IHJvdywgbGV2ZWwgfTogeyByb3c6IFQ7IGxldmVsOiBudW1iZXIgfSkge1xuICAgIGNvbnN0IHsgb3Blbk1hcCwgZGlzcGF0Y2gsIGlkIH0gPSB1c2VDb250ZXh0KFR5cGVkRXhwYW5kZWRDb250ZXh0PFQ+KCkpO1xuICAgIGNvbnN0IG9wZW4gPSB1c2VNZW1vKCgpID0+IG9wZW5NYXAuZ2V0KGlkKHJvdykpID8/IGZhbHNlLCBbcm93LCBvcGVuTWFwLCBvcGVuTWFwLmdldChpZChyb3cpKSwgZGlzcGF0Y2hdKTtcbiAgICByZXR1cm4gKFxuICAgICAgICA8dGRcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGRpc3BhdGNoKHsgdHlwZTogXCJyb3ctZXhwYW5kXCIsIHJvdywgbmV3VmFsdWU6ICFvcGVuIH0pfVxuICAgICAgICAgICAgc3R5bGU9e3sgcGFkZGluZ0xlZnQ6IGAkeyhsZXZlbCAtIDEpICogMS4xMjV9ZW1gIH19XG4gICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjb21iaW5lQ2xhc3NlcyhcImRhdGFjb3JlLWNvbGxhcHNlclwiLCAhb3BlbiA/IFwiaXMtY29sbGFwc2VkXCIgOiB1bmRlZmluZWQpfSBkaXI9XCJhdXRvXCI+XG4gICAgICAgICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIyNFwiXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjI0XCJcbiAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMlwiXG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInN2Zy1pY29uIHJpZ2h0LXRyaWFuZ2xlXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMyA4TDEyIDE3TDIxIDhcIj48L3BhdGg+XG4gICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC90ZD5cbiAgICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gVHJlZVRhYmxlUm93PFQ+KHtcbiAgICBsZXZlbCxcbiAgICByb3csXG4gICAgY29sdW1ucyxcbn06IHtcbiAgICBsZXZlbDogbnVtYmVyO1xuICAgIHJvdzogVHJlZVRhYmxlUm93RGF0YTxUPjtcbiAgICBjb2x1bW5zOiBUcmVlVGFibGVDb2x1bW48VD5bXTtcbn0pIHtcbiAgICBjb25zdCB7IG9wZW5NYXAsIGlkIH0gPSB1c2VDb250ZXh0KFR5cGVkRXhwYW5kZWRDb250ZXh0PFQ+KCkpO1xuICAgIGNvbnN0IG9wZW4gPSB1c2VNZW1vKCgpID0+IG9wZW5NYXAuZ2V0KGlkKHJvdy52YWx1ZSkpLCBbb3Blbk1hcCwgb3Blbk1hcC5nZXQoaWQocm93LnZhbHVlKSksIHJvdywgcm93LnZhbHVlXSk7XG4gICAgY29uc3QgaGFzQ2hpbGRyZW4gPSB1c2VNZW1vKCgpID0+IHJvdy5jaGlsZHJlbi5sZW5ndGggPiAwLCBbcm93LCByb3cuY2hpbGRyZW4sIHJvdy52YWx1ZV0pO1xuICAgIHJldHVybiAoXG4gICAgICAgIDxGcmFnbWVudD5cbiAgICAgICAgICAgIDx0ciBjbGFzc05hbWU9XCJkYXRhY29yZS10YWJsZS1yb3dcIj5cbiAgICAgICAgICAgICAgICB7aGFzQ2hpbGRyZW4gPyA8VHJlZVRhYmxlUm93RXhwYW5kZXI8VD4gbGV2ZWw9e2xldmVsfSByb3c9e3Jvdy52YWx1ZX0gLz4gOiA8dGQ+PC90ZD59XG4gICAgICAgICAgICAgICAge2NvbHVtbnMubWFwKChjb2wsIGkpID0+IChcbiAgICAgICAgICAgICAgICAgICAgPFRyZWVUYWJsZVJvd0NlbGw8VD4gcm93PXtyb3d9IGNvbHVtbj17Y29sfSBsZXZlbD17bGV2ZWx9IGlzRmlyc3Q9e2kgPT0gMH0gLz5cbiAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICB7b3BlblxuICAgICAgICAgICAgICAgID8gcm93LmNoaWxkcmVuLm1hcCgoY2hpbGQpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICA8VHJlZVRhYmxlUm93IHJvdz17Y2hpbGR9IGNvbHVtbnM9e2NvbHVtbnN9IGxldmVsPXtsZXZlbCArIDF9IGtleT17aWQoY2hpbGQudmFsdWUpfSAvPlxuICAgICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgICA6IG51bGx9XG4gICAgICAgIDwvRnJhZ21lbnQ+XG4gICAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFRyZWVUYWJsZVJvd0NlbGw8VD4oe1xuICAgIHJvdyxcbiAgICBjb2x1bW4sXG4gICAgbGV2ZWwsXG4gICAgaXNGaXJzdCA9IGZhbHNlLFxufToge1xuICAgIHJvdzogVHJlZVRhYmxlUm93RGF0YTxUPjtcbiAgICBjb2x1bW46IFRyZWVUYWJsZUNvbHVtbjxUPjtcbiAgICBsZXZlbDogbnVtYmVyO1xuICAgIGlzRmlyc3Q6IGJvb2xlYW47XG59KSB7XG4gICAgY29uc3QgdmFsdWUgPSB1c2VNZW1vKCgpID0+IGNvbHVtbi52YWx1ZShyb3cudmFsdWUpLCBbcm93LnZhbHVlLCBjb2x1bW4udmFsdWUsIGNvbHVtbi52YWx1ZShyb3cudmFsdWUpXSk7XG4gICAgY29uc3QgdXBkYXRlciA9IHVzZUNhbGxiYWNrKFxuICAgICAgICAodjogTGl0ZXJhbCkgPT4ge1xuICAgICAgICAgICAgY29sdW1uLm9uVXBkYXRlICYmIGNvbHVtbi5vblVwZGF0ZSh2LCByb3cudmFsdWUpO1xuICAgICAgICB9LFxuICAgICAgICBbdmFsdWUsIHJvdy52YWx1ZV1cbiAgICApO1xuICAgIGNvbnN0IFtlZGl0YWJsZVN0YXRlLCBkaXNwYXRjaF0gPSB1c2VFZGl0YWJsZURpc3BhdGNoPHR5cGVvZiB2YWx1ZT4oe1xuICAgICAgICBjb250ZW50OiB2YWx1ZSxcbiAgICAgICAgaXNFZGl0aW5nOiBmYWxzZSxcbiAgICAgICAgdXBkYXRlcjogKHYpID0+IGNvbHVtbi5vblVwZGF0ZSAmJiBjb2x1bW4ub25VcGRhdGUodiwgcm93LnZhbHVlKSxcbiAgICB9KTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBkaXNwYXRjaCh7IHR5cGU6IFwiY29udGVudC1jaGFuZ2VkXCIsIG5ld1ZhbHVlOiB2YWx1ZSB9KTtcbiAgICB9LCBbdmFsdWUsIHVwZGF0ZXJdKTtcbiAgICBsZXQgcmVuZGVyZWRDb2x1bW4gPSBjb2x1bW4ucmVuZGVyID8gY29sdW1uLnJlbmRlcihlZGl0YWJsZVN0YXRlLmNvbnRlbnQsIHJvdy52YWx1ZSkgOiB2YWx1ZTtcbiAgICBjb25zdCByZW5kZXJhYmxlID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIGlmIChyZW5kZXJlZENvbHVtbiAmJiB0eXBlb2YgcmVuZGVyZWRDb2x1bW4gPT0gXCJvYmplY3RcIiAmJiBcInByb3BzXCIgaW4gcmVuZGVyZWRDb2x1bW4pXG4gICAgICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihyZW5kZXJlZENvbHVtbiwgeyBwcm9wczogT2JqZWN0LmFzc2lnbihyZW5kZXJlZENvbHVtbi5wcm9wcywgeyBkaXNwYXRjaCB9KSB9KTtcbiAgICAgICAgZWxzZSByZXR1cm4gcmVuZGVyZWRDb2x1bW47XG4gICAgfSwgW2NvbHVtbi5yZW5kZXIsIHZhbHVlLCBlZGl0YWJsZVN0YXRlLmNvbnRlbnQsIHJlbmRlcmVkQ29sdW1uLCByb3cudmFsdWUsIHVwZGF0ZXJdKTtcblxuICAgIGNvbnN0IHJlbmRlcmVkID0gdXNlQXNFbGVtZW50KHJlbmRlcmFibGUpO1xuXG4gICAgY29uc3QgRWRpdG9yID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIGxldCBlO1xuICAgICAgICBpZiAoY29sdW1uLmVkaXRhYmxlICYmIGNvbHVtbi5lZGl0b3IpIGUgPSBjb2x1bW4uZWRpdG9yKGVkaXRhYmxlU3RhdGUuY29udGVudCwgcm93LnZhbHVlKTtcbiAgICAgICAgZWxzZSBlID0gbnVsbDtcbiAgICAgICAgaWYgKGUpIHJldHVybiBPYmplY3QuYXNzaWduKGUsIHsgcHJvcHM6IE9iamVjdC5hc3NpZ24oZS5wcm9wcywgeyBkaXNwYXRjaCB9KSB9KTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgfSwgW2NvbHVtbi5lZGl0b3IsIGNvbHVtbi5lZGl0YWJsZSwgZWRpdGFibGVTdGF0ZS5jb250ZW50LCByb3cudmFsdWVdKTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDx0ZFxuICAgICAgICAgICAgc3R5bGU9e3sgcGFkZGluZ0xlZnQ6IGlzRmlyc3QgPyBgJHsobGV2ZWwgLSAxKSAqIDEuMn1lbWAgOiB1bmRlZmluZWQgfX1cbiAgICAgICAgICAgIG9uRGJsQ2xpY2s9eygpID0+IGRpc3BhdGNoKHsgdHlwZTogXCJlZGl0aW5nLXRvZ2dsZWRcIiwgbmV3VmFsdWU6ICFlZGl0YWJsZVN0YXRlLmlzRWRpdGluZyB9KX1cbiAgICAgICAgICAgIGNsYXNzTmFtZT1cImRhdGFjb3JlLXRhYmxlLWNlbGxcIlxuICAgICAgICA+XG4gICAgICAgICAgICB7Y29sdW1uLmVkaXRhYmxlID8gKFxuICAgICAgICAgICAgICAgIDxFZGl0YWJsZTx0eXBlb2YgdmFsdWU+XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRSZW5kZXI9e3JlbmRlcmVkfVxuICAgICAgICAgICAgICAgICAgICBlZGl0b3I9e0VkaXRvcn1cbiAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2g9e2Rpc3BhdGNofVxuICAgICAgICAgICAgICAgICAgICBzdGF0ZT17ZWRpdGFibGVTdGF0ZX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICByZW5kZXJlZFxuICAgICAgICAgICAgKX1cbiAgICAgICAgPC90ZD5cbiAgICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gQ29udHJvbGxlZFRyZWVUYWJsZVZpZXc8VD4oXG4gICAgcHJvcHM6IFRyZWVUYWJsZVN0YXRlPFQ+ICYgVHJlZVRhYmxlUHJvcHM8VD4gJiB7IGRpc3BhdGNoOiBEaXNwYXRjaDxUcmVlVGFibGVBY3Rpb248VD4+IH1cbikge1xuICAgIGNvbnN0IGNvbHVtbnMgPSB1c2VJbnRlcm5pbmcocHJvcHMuY29sdW1ucywgKGEsIGIpID0+IHtcbiAgICAgICAgaWYgKGEubGVuZ3RoICE9IGIubGVuZ3RoKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIHJldHVybiBhLmV2ZXJ5KCh2YWx1ZSwgaW5kZXgpID0+IHZhbHVlID09IGJbaW5kZXhdKTtcbiAgICB9KTtcbiAgICBjb25zdCB0b3RhbEVsZW1lbnRzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIGlmIChHcm91cGluZ3MuaXNHcm91cGluZyhwcm9wcy5yb3dzKSkgcmV0dXJuIEdyb3VwaW5ncy5jb3VudChwcm9wcy5yb3dzKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgcmV0dXJuIHByb3BzLnJvd3MucmVkdWNlKFxuICAgICAgICAgICAgICAgIChwdiwgY3YpID0+IHB2ICsgVHJlZVV0aWxzLmNvdW50SW5UcmVlUm93KFRyZWVVdGlscy5vZk5vZGUoY3YsIHByb3BzLmNoaWxkU2VsZWN0b3IpKSxcbiAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICApO1xuICAgIH0sIFtwcm9wcy5yb3dzXSk7XG4gICAgY29uc3QgdGFibGVSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpO1xuICAgIGNvbnN0IHBhZ2luZyA9IHVzZURhdGFjb3JlUGFnaW5nKHtcbiAgICAgICAgaW5pdGlhbFBhZ2U6IDAsXG4gICAgICAgIHBhZ2luZzogcHJvcHMucGFnaW5nLFxuICAgICAgICBzY3JvbGxPblBhZ2VDaGFuZ2U6IHByb3BzLnNjcm9sbE9uUGFnaW5nLFxuICAgICAgICBlbGVtZW50czogdG90YWxFbGVtZW50cyxcbiAgICAgICAgY29udGFpbmVyOiB0YWJsZVJlZixcbiAgICB9KTtcbiAgICBjb25zdCByYXdTb3J0cyA9IHVzZUludGVybmluZyhwcm9wcy5zb3J0T24sIChhLCBiKSA9PiBMaXRlcmFscy5jb21wYXJlKGEsIGIpID09IDApO1xuICAgIGNvbnN0IHNvcnRzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIHJldHVybiByYXdTb3J0cz8uZmlsdGVyKChzb3J0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb2x1bW4gPSBjb2x1bW5zLmZpbmQoKGNvbCkgPT4gY29sLmlkID09IHNvcnQuaWQpO1xuICAgICAgICAgICAgcmV0dXJuIGNvbHVtbiAmJiAoY29sdW1uLnNvcnRhYmxlID8/IHRydWUpO1xuICAgICAgICB9KTtcbiAgICB9LCBbY29sdW1ucywgcmF3U29ydHNdKTtcbiAgICBjb25zdCBncm91cGluZ3MgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgICAgaWYgKCFwcm9wcy5ncm91cGluZ3MpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHByb3BzLmdyb3VwaW5ncykpIHJldHVybiBwcm9wcy5ncm91cGluZ3M7XG5cbiAgICAgICAgaWYgKExpdGVyYWxzLmlzRnVuY3Rpb24ocHJvcHMuZ3JvdXBpbmdzKSkgcmV0dXJuIFt7IHJlbmRlcjogcHJvcHMuZ3JvdXBpbmdzIH1dO1xuICAgICAgICBlbHNlIHJldHVybiBbcHJvcHMuZ3JvdXBpbmdzXTtcbiAgICB9LCBbcHJvcHMuZ3JvdXBpbmdzXSk7XG4gICAgY29uc3QgcmF3Um93cyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICBpZiAoIUdyb3VwaW5ncy5pc0dyb3VwaW5nKHByb3BzLnJvd3MpKSByZXR1cm4gVHJlZVV0aWxzLm9mQXJyYXkocHJvcHMucm93cywgcHJvcHMuY2hpbGRTZWxlY3Rvcik7XG4gICAgICAgIHJldHVybiBUcmVlVXRpbHMub2ZHcm91cGluZyhwcm9wcy5yb3dzLCBwcm9wcy5jaGlsZFNlbGVjdG9yKTtcbiAgICB9LCBbcHJvcHMucm93c10pO1xuICAgIGNvbnN0IHJvd3MgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgICAgaWYgKHNvcnRzID09IHVuZGVmaW5lZCB8fCBzb3J0cy5sZW5ndGggPT0gMCkgcmV0dXJuIHJhd1Jvd3M7XG4gICAgICAgIGNvbnN0IGNvbXBhcmF0b3JzID0gc29ydHMubWFwKCh4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb2wgPSBjb2x1bW5zLmZpbmQoKHkpID0+IHkuaWQgPT0geC5pZCkhO1xuICAgICAgICAgICAgY29uc3QgY29tcCA9IGNvbD8uY29tcGFyYXRvciA/PyBERUZBVUxUX1RBQkxFX0NPTVBBUkFUT1I7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGZuOiBjb21wLFxuICAgICAgICAgICAgICAgIGRpcmVjdGlvbjogeC5kaXJlY3Rpb24sXG4gICAgICAgICAgICAgICAgYWN0dWFsVmFsdWU6IGNvbC52YWx1ZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gVHJlZVV0aWxzLnNvcnQ8VCwgTGl0ZXJhbD4ocmF3Um93cywgY29tcGFyYXRvcnMpIGFzIEdyb3VwaW5nPFRyZWVUYWJsZVJvd0RhdGE8VD4+O1xuICAgIH0sIFtyYXdSb3dzLCBzb3J0c10pO1xuXG4gICAgY29uc3QgcGFnZWRSb3dzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIGlmIChwYWdpbmcuZW5hYmxlZClcbiAgICAgICAgICAgIHJldHVybiBUcmVlVXRpbHMuc2xpY2Uocm93cywgcGFnaW5nLnBhZ2UgKiBwYWdpbmcucGFnZVNpemUsIChwYWdpbmcucGFnZSArIDEpICogcGFnaW5nLnBhZ2VTaXplKTtcbiAgICAgICAgcmV0dXJuIHJvd3M7XG4gICAgfSwgW3BhZ2luZy5wYWdlLCBwYWdpbmcucGFnZVNpemUsIHBhZ2luZy5lbmFibGVkLCBwcm9wcy5yb3dzLCByb3dzXSk7XG5cbiAgICBjb25zdCBrZXlGbiA9IHVzZUtleUZuKHByb3BzLmlkLCBwYWdlZFJvd3MpO1xuICAgIGNvbnN0IENvbnRleHQgPSBUeXBlZEV4cGFuZGVkQ29udGV4dDxUPigpO1xuICAgIHJldHVybiAoXG4gICAgICAgIDxDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt7IG9wZW5NYXA6IHByb3BzLm9wZW5NYXAhLCBkaXNwYXRjaDogcHJvcHMuZGlzcGF0Y2gsIGlkOiBwcm9wcy5pZCB9fT5cbiAgICAgICAgICAgIDxkaXYgcmVmPXt0YWJsZVJlZn0+XG4gICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzTmFtZT1cImRhdGFjb3JlLXRhYmxlXCI+XG4gICAgICAgICAgICAgICAgICAgIDx0aGVhZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzc05hbWU9XCJkYXRhY29yZS10YWJsZS1oZWFkZXItcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzTmFtZT1cImRhdGFjb3JlLXRhYmxlLWhlYWRlci1jZWxsXCIgd2lkdGg9XCIxcHhcIj48L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjb2x1bW5zLm1hcCgoeCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VHJlZVRhYmxlSGVhZGVyQ2VsbDxUPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydD17cHJvcHMuc29ydE9uPy5maW5kKChzKSA9PiBzLmlkID09PSB4LmlkKT8uZGlyZWN0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uPXt4fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydGFibGU9e3guc29ydGFibGUgPz8gdHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XG4gICAgICAgICAgICAgICAgICAgIDx0Ym9keT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtwYWdlZFJvd3MubWFwKChyb3cpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VHJlZVRhYmxlUm93R3JvdXA8VD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudD17cm93fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zPXtjb2x1bW5zfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbD17MH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXBpbmdzPXtncm91cGluZ3N9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17a2V5Rm4ocm93KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgICAgICAgICAgPC90YWJsZT5cbiAgICAgICAgICAgICAgICB7cGFnaW5nLmVuYWJsZWQgJiYgKFxuICAgICAgICAgICAgICAgICAgICA8Q29udHJvbGxlZFBhZ2VyIHBhZ2U9e3BhZ2luZy5wYWdlfSB0b3RhbFBhZ2VzPXtwYWdpbmcudG90YWxQYWdlc30gc2V0UGFnZT17cGFnaW5nLnNldFBhZ2V9IC8+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L0NvbnRleHQuUHJvdmlkZXI+XG4gICAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFRyZWVUYWJsZVZpZXc8VD4ocHJvcHM6IFRyZWVUYWJsZVByb3BzPFQ+KSB7XG4gICAgY29uc3QgW3N0YXRlLCBkaXNwYXRjaF0gPSB1c2VUcmVlVGFibGVEaXNwYXRjaDxUPih7XG4gICAgICAgIHNvcnRPbjogcHJvcHMuc29ydE9uID8/IFtdLFxuICAgICAgICBpZDogcHJvcHMuaWQgPyBwcm9wcy5pZCA6ICh4KSA9PiAoeCBhcyBJbmRleGFibGUpLiRpZCxcbiAgICB9KTtcblxuICAgIGNvbnN0IHJlZlN0YXRlID0gdXNlTWVtbygoKSA9PiB1c2VSZWYoc3RhdGUpLCBbc3RhdGVdKTtcbiAgICBpZiAoc3RhdGUub3Blbk1hcCAhPT0gdW5kZWZpbmVkKSByZWZTdGF0ZS5jdXJyZW50ID0gc3RhdGU7XG4gICAgZWxzZSByZWZTdGF0ZS5jdXJyZW50Lm9wZW5NYXAgPSBuZXcgTWFwPHN0cmluZywgYm9vbGVhbj4oKTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBkaXNwYXRjaCh7IHR5cGU6IFwib3Blbi1tYXAtY2hhbmdlZFwiLCBuZXdWYWx1ZTogcmVmU3RhdGUuY3VycmVudC5vcGVuTWFwID8/IG5ldyBNYXA8c3RyaW5nLCBib29sZWFuPigpIH0pO1xuICAgIH0sIFtkaXNwYXRjaF0pO1xuICAgIGRlbGV0ZSBwcm9wcy5zb3J0T247XG4gICAgcmV0dXJuIDxDb250cm9sbGVkVHJlZVRhYmxlVmlldzxUPiBkaXNwYXRjaD17ZGlzcGF0Y2h9IHsuLi5zdGF0ZX0gey4uLnByb3BzfSAvPjtcbn1cbiIsICIvKipcbiAqIEBtb2R1bGUgYXBpXG4gKi9cbmltcG9ydCB7IERhdGFjb3JlQXBpIH0gZnJvbSBcImFwaS9hcGlcIjtcbmltcG9ydCB7IExpbmsgfSBmcm9tIFwiZXhwcmVzc2lvbi9saW5rXCI7XG5pbXBvcnQgeyBEYXRhY29yZSB9IGZyb20gXCJpbmRleC9kYXRhY29yZVwiO1xuaW1wb3J0IHsgU2VhcmNoUmVzdWx0IH0gZnJvbSBcImluZGV4L2RhdGFzdG9yZVwiO1xuaW1wb3J0IHsgSW5kZXhRdWVyeSB9IGZyb20gXCJpbmRleC90eXBlcy9pbmRleC1xdWVyeVwiO1xuaW1wb3J0IHsgSW5kZXhhYmxlIH0gZnJvbSBcImluZGV4L3R5cGVzL2luZGV4YWJsZVwiO1xuaW1wb3J0IHsgTWFya2Rvd25QYWdlLCBNYXJrZG93blRhc2tJdGVtIH0gZnJvbSBcImluZGV4L3R5cGVzL21hcmtkb3duXCI7XG5pbXBvcnQgeyBBcHAgfSBmcm9tIFwib2JzaWRpYW5cIjtcbmltcG9ydCB7IHVzZUZpbGVNZXRhZGF0YSwgdXNlRnVsbFF1ZXJ5LCB1c2VJbmRleFVwZGF0ZXMsIHVzZUludGVybmluZywgdXNlUXVlcnkgfSBmcm9tIFwidWkvaG9va3NcIjtcbmltcG9ydCAqIGFzIGx1eG9uIGZyb20gXCJsdXhvblwiO1xuaW1wb3J0ICogYXMgcHJlYWN0IGZyb20gXCJwcmVhY3RcIjtcbmltcG9ydCAqIGFzIGhvb2tzIGZyb20gXCJwcmVhY3QvaG9va3NcIjtcbmltcG9ydCB7IFJlc3VsdCB9IGZyb20gXCIuL3Jlc3VsdFwiO1xuaW1wb3J0IHsgR3JvdXAsIFN0YWNrIH0gZnJvbSBcIi4vdWkvbGF5b3V0XCI7XG5pbXBvcnQgeyBFbWJlZCwgTGluZVNwYW5FbWJlZCB9IGZyb20gXCJhcGkvdWkvZW1iZWRcIjtcbmltcG9ydCB7IENVUlJFTlRfRklMRV9DT05URVhULCBMaXQsIE1hcmtkb3duLCBPYnNpZGlhbkxpbmsgfSBmcm9tIFwidWkvbWFya2Rvd25cIjtcbmltcG9ydCB7IENTU1Byb3BlcnRpZXMgfSBmcm9tIFwicHJlYWN0L2NvbXBhdFwiO1xuaW1wb3J0IHsgTGl0ZXJhbCB9IGZyb20gXCJleHByZXNzaW9uL2xpdGVyYWxcIjtcbmltcG9ydCB7IEJ1dHRvbiwgQ2hlY2tib3gsIEljb24sIFNsaWRlciwgU3dpdGNoLCBUZXh0Ym94LCBWYW5pbGxhU2VsZWN0IH0gZnJvbSBcIi4vdWkvYmFzaWNzXCI7XG5pbXBvcnQgeyBUYXNrTGlzdCB9IGZyb20gXCIuL3VpL3ZpZXdzL3Rhc2tcIjtcbmltcG9ydCB7IFZhbmlsbGFUYWJsZSB9IGZyb20gXCIuL3VpL3ZpZXdzL3RhYmxlXCI7XG5pbXBvcnQgeyBDYWxsb3V0IH0gZnJvbSBcIi4vdWkvdmlld3MvY2FsbG91dFwiO1xuaW1wb3J0IHsgQ2FyZCB9IGZyb20gXCIuL3VpL3ZpZXdzL2NhcmRzXCI7XG5pbXBvcnQgeyBEYXRhQXJyYXkgfSBmcm9tIFwiLi9kYXRhLWFycmF5XCI7XG5pbXBvcnQgeyBDb2VyY2UgfSBmcm9tIFwiLi9jb2VyY2VcIjtcbmltcG9ydCB7IFNjcmlwdENhY2hlIH0gZnJvbSBcIi4vc2NyaXB0LWNhY2hlXCI7XG5pbXBvcnQgeyBzZXRUYXNrVGV4dCwgdXNlU2V0RmllbGQgfSBmcm9tIFwidXRpbHMvZmllbGRzXCI7XG5pbXBvcnQge1xuICAgIENvbnRyb2xsZWRFZGl0YWJsZVRleHRGaWVsZCxcbiAgICBGaWVsZENoZWNrYm94LFxuICAgIEVkaXRhYmxlVGV4dEZpZWxkLFxuICAgIEZpZWxkU2xpZGVyLFxuICAgIEZpZWxkU2VsZWN0LFxuICAgIEZpZWxkU3dpdGNoLFxufSBmcm9tIFwidWkvZmllbGRzL2VkaXRhYmxlLWZpZWxkc1wiO1xuaW1wb3J0IHsgY29tcGxldGVUYXNrIH0gZnJvbSBcInV0aWxzL3Rhc2tcIjtcbmltcG9ydCB7IFRyZWVUYWJsZVZpZXcgfSBmcm9tIFwiLi91aS92aWV3cy90cmVlLXRhYmxlXCI7XG5cbi8qKiBMb2NhbCBBUEkgcHJvdmlkZWQgdG8gc3BlY2lmaWMgY29kZWJsb2NrcyB3aGVuIHRoZXkgYXJlIGV4ZWN1dGluZy5cbiAqIEBncm91cCBDb3JlXG4gKi9cbmV4cG9ydCBjbGFzcyBEYXRhY29yZUxvY2FsQXBpIHtcbiAgICAvKipcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIHByaXZhdGUgc2NyaXB0Q2FjaGU6IFNjcmlwdENhY2hlO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHB1YmxpYyBhcGk6IERhdGFjb3JlQXBpLCBwdWJsaWMgcGF0aDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuc2NyaXB0Q2FjaGUgPSBuZXcgU2NyaXB0Q2FjaGUodGhpcy5jb3JlLmRhdGFzdG9yZSk7XG4gICAgfVxuXG4gICAgLyoqIFRoZSBjdXJyZW50IGZpbGUgcGF0aCBmb3IgdGhlIGxvY2FsIEFQSS4gKi9cbiAgICBwdWJsaWMgY3VycmVudFBhdGgoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGF0aDtcbiAgICB9XG5cbiAgICAvKiogVGhlIGZ1bGwgbWFya2Rvd24gZmlsZSBtZXRhZGF0YSBmb3IgdGhlIGN1cnJlbnQgZmlsZS4gKi9cbiAgICBwdWJsaWMgY3VycmVudEZpbGUoKTogTWFya2Rvd25QYWdlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLnBhZ2UodGhpcy5wYXRoKSE7XG4gICAgfVxuXG4gICAgLyoqIEdldCBhY2VzcyB0byBsdXhvbiBmdW5jdGlvbnMuICovXG4gICAgZ2V0IGx1eG9uKCk6IHR5cGVvZiBsdXhvbiB7XG4gICAgICAgIHJldHVybiBsdXhvbjtcbiAgICB9XG5cbiAgICAvKiogR2V0IGFjY2VzcyB0byBwcmVhY3QgZnVuY3Rpb25zLiAqL1xuICAgIGdldCBwcmVhY3QoKTogdHlwZW9mIHByZWFjdCB7XG4gICAgICAgIHJldHVybiBwcmVhY3Q7XG4gICAgfVxuXG4gICAgLyoqIENlbnRyYWwgT2JzaWRpYW4gYXBwIG9iamVjdC4gKi9cbiAgICBnZXQgYXBwKCk6IEFwcCB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvcmUuYXBwO1xuICAgIH1cblxuICAgIC8qKiBUaGUgaW50ZXJuYWwgcGx1Z2luIGNlbnRyYWwgZGF0YXN0cnVjdHVyZS4gKi9cbiAgICBnZXQgY29yZSgpOiBEYXRhY29yZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5jb3JlO1xuICAgIH1cblxuICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIFNjcmlwdCBsb2FkaW5nIHV0aWxpdGllcyAvL1xuICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gICAgLyoqXG4gICAgICogQXN5bmNocm9ub3VzbHkgbG9hZCBhIGphdmFzY3JpcHQgYmxvY2sgZnJvbSB0aGUgZ2l2ZW4gcGF0aCBvciBsaW5rOyB5b3UgY2FuIGVpdGhlciBsb2FkIGZyb20gSlMvVFMvSlNYL1RTWCBmaWxlc1xuICAgICAqIGRpcmVjdGx5LCBvciBmcm9tIGNvZGVibG9ja3MgYnkgbG9hZGluZyBmcm9tIHRoZSBzZWN0aW9uIHRoZSBjb2RlYmxvY2sgaXMgaW5zaWRlIG9mLiBUaGVyZSBhcmUgYSBmZXcgc3RpcHVsYXRpb25zXG4gICAgICogdG8gbG9hZGluZzpcbiAgICAgKiAtIFlvdSBjYW5ub3QgbG9hZCBjeWNsaWNhbCBkZXBlbmRlbmNpZXMuXG4gICAgICogLSBUaGlzIGlzIHNpbWlsYXIgdG8gdmFuaWxsYSBqcyBgcmVxdWlyZSgpYCwgbm90IGBpbXBvcnQgLi4uIGAuIFlvdXIgc2NyaXB0cyB5b3UgYXJlIHJlcXVpcmluZyBuZWVkIHRvIGV4cGxpY2l0bHlcbiAgICAgKiAgIHJldHVybiB0aGUgdGhpbmdzIHRoZXkgYXJlIGV4cG9ydGluZywgbGlrZSB0aGUgZXhhbXBsZSBiZWxvdy4gVGhlIGBleHBvcnRgIGtleXdvcmQgZG9lcyBub3Qgd29yay5cbiAgICAgKlxuICAgICAqIGBgYGpzXG4gICAgICogZnVuY3Rpb24gTXlFbGVtZW50KCkge1xuICAgICAqICAuLi5cbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiByZXR1cm4geyBNeUVsZW1lbnQgfTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgYXN5bmMgcmVxdWlyZShwYXRoOiBzdHJpbmcgfCBMaW5rKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5zY3JpcHRDYWNoZS5sb2FkKHBhdGgsIHsgZGM6IHRoaXMgfSk7XG4gICAgICAgIHJldHVybiByZXN1bHQub3JFbHNlVGhyb3coKTtcbiAgICB9XG5cbiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIEdlbmVyYWwgdXRpbGl0aWVzIC8vXG4gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAgIC8qKiBVdGlsaXRpZXMgZm9yIGNvZXJjaW5nIHR5cGVzIGludG8gb25lIHNwZWNpZmljIHR5cGUgZm9yIGVhc2llciBwcm9ncmFtbWluZy4gKi9cbiAgICBwdWJsaWMgY29lcmNlID0gQ29lcmNlO1xuXG4gICAgLyoqIFJlc29sdmUgYSBsb2NhbCBvciBhYnNvbHV0ZSBwYXRoIG9yIGxpbmsgdG8gYW4gYWJzb2x1dGUgcGF0aC4gKi9cbiAgICBwdWJsaWMgcmVzb2x2ZVBhdGgocGF0aDogc3RyaW5nIHwgTGluaywgc291cmNlUGF0aD86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5yZXNvbHZlUGF0aChwYXRoLCBzb3VyY2VQYXRoID8/IHRoaXMucGF0aCk7XG4gICAgfVxuXG4gICAgLyoqIFRyeSB0byBwYXJzZSB0aGUgZ2l2ZW4gcXVlcnksIHJldHVybmluZyBhIG1vbmFkaWMgc3VjY2Vzcy9mYWlsdXJlIHJlc3VsdC4gKi9cbiAgICBwdWJsaWMgdHJ5UGFyc2VRdWVyeShxdWVyeTogc3RyaW5nIHwgSW5kZXhRdWVyeSk6IFJlc3VsdDxJbmRleFF1ZXJ5LCBzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLnRyeVBhcnNlUXVlcnkocXVlcnkpO1xuICAgIH1cblxuICAgIC8qKiBUcnkgdG8gcGFyc2UgdGhlIGdpdmVuIHF1ZXJ5LCB0aHJvd2luZyBhbiBlcnJvciBpZiBpdCBpcyBpbnZhbGlkLiAqL1xuICAgIHB1YmxpYyBwYXJzZVF1ZXJ5KHF1ZXJ5OiBzdHJpbmcgfCBJbmRleFF1ZXJ5KTogSW5kZXhRdWVyeSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRyeVBhcnNlUXVlcnkocXVlcnkpLm9yRWxzZVRocm93KChlKSA9PiBcIkZhaWxlZCB0byBwYXJzZSBxdWVyeTogXCIgKyBlKTtcbiAgICB9XG5cbiAgICAvKiogQ3JlYXRlIGEgZmlsZSBsaW5rIHBvaW50aW5nIHRvIHRoZSBnaXZlbiBwYXRoLiAqL1xuICAgIHB1YmxpYyBmaWxlTGluayhwYXRoOiBzdHJpbmcpOiBMaW5rIHtcbiAgICAgICAgcmV0dXJuIExpbmsuZmlsZShwYXRoKTtcbiAgICB9XG5cbiAgICAvKiogQ3JlYXRlIGEgbGluayB0byBhIGhlYWRlciB3aXRoIHRoZSBnaXZlbiBuYW1lLiAqL1xuICAgIHB1YmxpYyBoZWFkZXJMaW5rKHBhdGg6IHN0cmluZywgaGVhZGVyOiBzdHJpbmcpOiBMaW5rIHtcbiAgICAgICAgcmV0dXJuIExpbmsuaGVhZGVyKHBhdGgsIGhlYWRlcik7XG4gICAgfVxuXG4gICAgLyoqIENyZWF0ZSBhIGxpbmsgdG8gYSBibG9jayB3aXRoIHRoZSBnaXZlbiBwYXRoIGFuZCBibG9jayBJRC4gKi9cbiAgICBwdWJsaWMgYmxvY2tMaW5rKHBhdGg6IHN0cmluZywgYmxvY2s6IHN0cmluZyk6IExpbmsge1xuICAgICAgICByZXR1cm4gTGluay5ibG9jayhwYXRoLCBibG9jayk7XG4gICAgfVxuXG4gICAgLyoqIFRyeSB0byBwYXJzZSB0aGUgZ2l2ZW4gbGluaywgdGhyb3dpbmcgYW4gZXJyb3IgaWYgaXQgaXMgaW52YWxpZC4gKi9cbiAgICBwdWJsaWMgcGFyc2VMaW5rKGxpbmt0ZXh0OiBzdHJpbmcpOiBMaW5rIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLnBhcnNlTGluayhsaW5rdGV4dCk7XG4gICAgfVxuXG4gICAgLyoqIFRyeSB0byBwYXJzZSBhIGxpbmssIHJldHVybmluZyBhIG1vbmFkaWMgc3VjY2Vzcy9mYWlsdXJlIHJlc3VsdC4gKi9cbiAgICBwdWJsaWMgdHJ5UGFyc2VMaW5rKGxpbmt0ZXh0OiBzdHJpbmcpOiBSZXN1bHQ8TGluaywgc3RyaW5nPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS50cnlQYXJzZUxpbmsobGlua3RleHQpO1xuICAgIH1cblxuICAgIC8qKiBDcmVhdGUgYSBkYXRhIGFycmF5IGZyb20gYSByZWd1bGFyIGFycmF5LiAqL1xuICAgIHB1YmxpYyBhcnJheTxUPihpbnB1dDogVFtdIHwgRGF0YUFycmF5PFQ+KTogRGF0YUFycmF5PFQ+IHtcbiAgICAgICAgcmV0dXJuIERhdGFBcnJheS53cmFwKGlucHV0KTtcbiAgICB9XG5cbiAgICAvKiogU2V0cyB0aGUgdGV4dCBvZiBhIGdpdmVuIHRhc2sgcHJvZ3JhbW1hdGljYWxseS4gKi9cblxuICAgIHB1YmxpYyBzZXRUYXNrVGV4dChuZXdUZXh0OiBzdHJpbmcsIHRhc2s6IE1hcmtkb3duVGFza0l0ZW0pOiB2b2lkIHtcbiAgICAgICAgc2V0VGFza1RleHQodGhpcy5hcHAsIHRoaXMuY29yZSwgbmV3VGV4dCwgdGFzayk7XG4gICAgfVxuXG4gICAgLyoqIFNldHMgdGhlIGNvbXBsZXRpb24gc3RhdHVzIG9mIGEgZ2l2ZW4gdGFzayBwcm9ncmFtbWF0aWNhbGx5LiAqL1xuICAgIHB1YmxpYyBzZXRUYXNrQ29tcGxldGlvbihjb21wbGV0ZWQ6IGJvb2xlYW4sIHRhc2s6IE1hcmtkb3duVGFza0l0ZW0pOiB2b2lkIHtcbiAgICAgICAgY29tcGxldGVUYXNrKGNvbXBsZXRlZCwgdGFzaywgdGhpcy5hcHAudmF1bHQsIHRoaXMuY29yZSk7XG4gICAgfVxuXG4gICAgLy8vLy8vLy8vLy8vL1xuICAgIC8vICBIb29rcyAgLy9cbiAgICAvLy8vLy8vLy8vLy8vXG5cbiAgICAvLyBFeHBvcnQgdGhlIGNvbW1vbiBwcmVhY3QgaG9va3MgZm9yIHBlb3BsZSB0byB1c2UgdmlhIGBkYy5gOlxuICAgIHB1YmxpYyB1c2VTdGF0ZSA9IGhvb2tzLnVzZVN0YXRlO1xuICAgIHB1YmxpYyB1c2VDYWxsYmFjayA9IGhvb2tzLnVzZUNhbGxiYWNrO1xuICAgIHB1YmxpYyB1c2VSZWR1Y2VyID0gaG9va3MudXNlUmVkdWNlcjtcbiAgICBwdWJsaWMgdXNlTWVtbyA9IGhvb2tzLnVzZU1lbW87XG4gICAgcHVibGljIHVzZUVmZmVjdCA9IGhvb2tzLnVzZUVmZmVjdDtcbiAgICBwdWJsaWMgY3JlYXRlQ29udGV4dCA9IHByZWFjdC5jcmVhdGVDb250ZXh0O1xuICAgIHB1YmxpYyB1c2VDb250ZXh0ID0gaG9va3MudXNlQ29udGV4dDtcbiAgICBwdWJsaWMgdXNlUmVmID0gaG9va3MudXNlUmVmO1xuICAgIHB1YmxpYyB1c2VJbnRlcm5pbmcgPSB1c2VJbnRlcm5pbmc7XG4gICAgcHVibGljIHVzZVNldEZpZWxkID0gdXNlU2V0RmllbGQ7XG5cbiAgICAvKiogTWVtb2l6ZSB0aGUgaW5wdXQgYXV0b21hdGljYWxseSBhbmQgcHJvY2VzcyBpdCB1c2luZyBhIERhdGEgQXJyYXk7IHJldHVybnMgYSB2YW5pbGxhIGFycmF5IGJhY2suICovXG4gICAgcHVibGljIHVzZUFycmF5PFQsIFU+KGlucHV0OiBUW10gfCBEYXRhQXJyYXk8VD4sIHByb2Nlc3M6IChkYXRhOiBEYXRhQXJyYXk8VD4pID0+IERhdGFBcnJheTxVPiwgZGVwcz86IGFueVtdKTogVVtdIHtcbiAgICAgICAgcmV0dXJuIGhvb2tzLnVzZU1lbW8oKCkgPT4gcHJvY2VzcyhEYXRhQXJyYXkud3JhcChpbnB1dCkpLmFycmF5KCksIFtpbnB1dCwgLi4uKGRlcHMgPz8gW10pXSk7XG4gICAgfVxuXG4gICAgLyoqIFVzZSB0aGUgZmlsZSBtZXRhZGF0YSBmb3IgdGhlIGN1cnJlbnQgZmlsZS4gQXV0b21hdGljYWxseSB1cGRhdGVzIHRoZSB2aWV3IHdoZW4gdGhlIGN1cnJlbnQgZmlsZSBtZXRhZGF0YSBjaGFuZ2VzLiAqL1xuICAgIHB1YmxpYyB1c2VDdXJyZW50RmlsZShzZXR0aW5ncz86IHsgZGVib3VuY2U/OiBudW1iZXIgfSk6IE1hcmtkb3duUGFnZSB7XG4gICAgICAgIHJldHVybiB1c2VGaWxlTWV0YWRhdGEodGhpcy5jb3JlLCB0aGlzLnBhdGgsIHNldHRpbmdzKSBhcyBNYXJrZG93blBhZ2U7XG4gICAgfVxuXG4gICAgLyoqIFVzZSB0aGUgY3VycmVudCBwYXRoLiBBdXRvbWF0aWNhbGx5IHVwZGF0ZXMgdGhlIHZpZXcgaWYgdGhlIHBhdGggY2hhbmdlcyAodGhvdWdoIHRoYXQgd291bGQgYmUgd2VpcmQpLiAqL1xuICAgIHB1YmxpYyB1c2VDdXJyZW50UGF0aChzZXR0aW5ncz86IHsgZGVib3VuY2U/OiBudW1iZXIgfSk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IG1ldGEgPSB0aGlzLnVzZUN1cnJlbnRGaWxlKHNldHRpbmdzKTtcbiAgICAgICAgcmV0dXJuIG1ldGEuJHBhdGg7XG4gICAgfVxuXG4gICAgLyoqIFVzZSB0aGUgZmlsZSBtZXRhZGF0YSBmb3IgYSBzcGVjaWZpYyBmaWxlLiBBdXRvbWF0aWNhbGx5IHVwZGF0ZXMgdGhlIHZpZXcgd2hlbiB0aGUgZmlsZSBjaGFuZ2VzLiAqL1xuICAgIHB1YmxpYyB1c2VGaWxlKHBhdGg6IHN0cmluZywgc2V0dGluZ3M/OiB7IGRlYm91bmNlPzogbnVtYmVyIH0pOiBJbmRleGFibGUgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdXNlRmlsZU1ldGFkYXRhKHRoaXMuY29yZSwgcGF0aCwgc2V0dGluZ3MpITtcbiAgICB9XG5cbiAgICAvKiogQXV0b21hdGljYWxseSByZWZyZXNoIHRoZSB2aWV3IHdoZW5ldmVyIHRoZSBpbmRleCB1cGRhdGVzOyByZXR1cm5zIHRoZSBsYXRlc3QgaW5kZXggcmV2aXNpb24gSUQuICovXG4gICAgcHVibGljIHVzZUluZGV4VXBkYXRlcyhzZXR0aW5ncz86IHsgZGVib3VuY2U/OiBudW1iZXIgfSk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB1c2VJbmRleFVwZGF0ZXModGhpcy5jb3JlLCBzZXR0aW5ncyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUnVuIGEgcXVlcnksIGF1dG9tYXRpY2FsbHkgcmUtcnVubmluZyBpdCB3aGVuZXZlciB0aGUgdmF1bHQgY2hhbmdlcy4gUmV0dXJucyBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBxdWVyeVxuICAgICAqIGV4ZWN1dGlvbiwgc3VjaCBhcyBpbmRleCByZXZpc2lvbiBhbmQgdG90YWwgc2VhcmNoIGR1cmF0aW9uLlxuICAgICAqL1xuICAgIHB1YmxpYyB1c2VGdWxsUXVlcnkocXVlcnk6IHN0cmluZyB8IEluZGV4UXVlcnksIHNldHRpbmdzPzogeyBkZWJvdW5jZT86IG51bWJlciB9KTogU2VhcmNoUmVzdWx0PEluZGV4YWJsZT4ge1xuICAgICAgICByZXR1cm4gdXNlRnVsbFF1ZXJ5KHRoaXMuY29yZSwgdGhpcy5wYXJzZVF1ZXJ5KHF1ZXJ5KSwgc2V0dGluZ3MpO1xuICAgIH1cblxuICAgIC8qKiBSdW4gYSBxdWVyeSwgYXV0b21hdGljYWxseSByZS1ydW5uaW5nIGl0IHdoZW5ldmVyIHRoZSB2YXVsdCBjaGFuZ2VzLiAqL1xuICAgIHB1YmxpYyB1c2VRdWVyeShxdWVyeTogc3RyaW5nIHwgSW5kZXhRdWVyeSwgc2V0dGluZ3M/OiB7IGRlYm91bmNlPzogbnVtYmVyIH0pOiBJbmRleGFibGVbXSB7XG4gICAgICAgIC8vIEhvb2tzIG5lZWQgdG8gYmUgY2FsbGVkIGluIGEgY29uc2lzdGVudCBvcmRlciwgc28gd2UgZG9uJ3QgbmVzdCB0aGUgYHVzZVF1ZXJ5YCBjYWxsIGluIHRoZSBEYXRhQXJyYXkud3JhcCBfanVzdF8gaW4gY2FzZS5cbiAgICAgICAgcmV0dXJuIHVzZVF1ZXJ5KHRoaXMuY29yZSwgdGhpcy5wYXJzZVF1ZXJ5KHF1ZXJ5KSwgc2V0dGluZ3MpO1xuICAgIH1cblxuICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIFZpc3VhbCBFbGVtZW50cyAvL1xuICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gICAgLyoqIFZlcnRpY2FsIGZsZXhib3ggY29udGFpbmVyOyBnb29kIGZvciBwdXR0aW5nIGl0ZW1zIHRvZ2V0aGVyIGluIGEgY29sdW1uLiAqL1xuICAgIHB1YmxpYyBTdGFjayA9IFN0YWNrO1xuICAgIC8qKiBIb3Jpem9udGFsIGZsZXhib3ggY29udGFpbmVyOyBnb29kIGZvciBwdXR0aW5nIGl0ZW1zIHRvZ2V0aGVyIGluIGEgcm93LiAqL1xuICAgIHB1YmxpYyBHcm91cCA9IEdyb3VwO1xuXG4gICAgLyoqIFJlbmRlcnMgYSBsaXRlcmFsIHZhbHVlIGluIGEgcHJldHR5IHdheSB0aGF0IHJlc3BlY3RzIHNldHRpbmdzLiAqL1xuICAgIHB1YmxpYyBMaXRlcmFsID0gKCh7IHZhbHVlLCBzb3VyY2VQYXRoLCBpbmxpbmUgfTogeyB2YWx1ZTogTGl0ZXJhbDsgc291cmNlUGF0aD86IHN0cmluZzsgaW5saW5lPzogYm9vbGVhbiB9KSA9PiB7XG4gICAgICAgIGNvbnN0IGltcGxpY2l0U291cmNlUGF0aCA9IGhvb2tzLnVzZUNvbnRleHQoQ1VSUkVOVF9GSUxFX0NPTlRFWFQpO1xuICAgICAgICByZXR1cm4gPExpdCB2YWx1ZT17dmFsdWV9IHNvdXJjZVBhdGg9e3NvdXJjZVBhdGggPz8gaW1wbGljaXRTb3VyY2VQYXRoID8/IHRoaXMucGF0aH0gaW5saW5lPXtpbmxpbmV9IC8+O1xuICAgIH0pLmJpbmQodGhpcyk7XG5cbiAgICAvKiogUmVuZGVycyBtYXJrZG93biB1c2luZyB0aGUgT2JzaWRpYW4gbWFya2Rvd24gcmVuZGVyZXIsIG9wdGlvbmFsbHkgYXR0YWNoaW5nIGFkZGl0aW9uYWwgc3R5bGVzLiAqL1xuICAgIHB1YmxpYyBNYXJrZG93biA9ICgoe1xuICAgICAgICBjb250ZW50LFxuICAgICAgICBzb3VyY2VQYXRoLFxuICAgICAgICBpbmxpbmUsXG4gICAgICAgIHN0eWxlLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgfToge1xuICAgICAgICBjb250ZW50OiBzdHJpbmc7XG4gICAgICAgIHNvdXJjZVBhdGg/OiBzdHJpbmc7XG4gICAgICAgIGlubGluZT86IGJvb2xlYW47XG4gICAgICAgIHN0eWxlPzogQ1NTUHJvcGVydGllcztcbiAgICAgICAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICAgIH0pID0+IHtcbiAgICAgICAgY29uc3QgaW1wbGljaXRTb3VyY2VQYXRoID0gaG9va3MudXNlQ29udGV4dChDVVJSRU5UX0ZJTEVfQ09OVEVYVCk7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8TWFya2Rvd25cbiAgICAgICAgICAgICAgICBjb250ZW50PXtjb250ZW50fVxuICAgICAgICAgICAgICAgIHNvdXJjZVBhdGg9e3NvdXJjZVBhdGggPz8gaW1wbGljaXRTb3VyY2VQYXRoID8/IHRoaXMucGF0aH1cbiAgICAgICAgICAgICAgICBpbmxpbmU9e2lubGluZX1cbiAgICAgICAgICAgICAgICBzdHlsZT17c3R5bGV9XG4gICAgICAgICAgICAgICAgY2xzPXtjbGFzc05hbWV9XG4gICAgICAgICAgICAvPlxuICAgICAgICApO1xuICAgIH0pLmJpbmQodGhpcyk7XG5cbiAgICAvKiogUmVuZGVycyBhbiBvYnNpZGlhbi1zdHlsZSBsaW5rIGRpcmVjdGx5IGFuZCBtb3JlIGVmZmllaWNudGx5IHRoYW4gcmVuZGVyaW5nIG1hcmtkb3duLiAqL1xuICAgIHB1YmxpYyBMaW5rID0gT2JzaWRpYW5MaW5rO1xuXG4gICAgLyoqIENyZWF0ZSBhIHZhbmlsbGEgT2JzaWRpYW4gZW1iZWQgZm9yIHRoZSBnaXZlbiBsaW5rLiAqL1xuICAgIHB1YmxpYyBMaW5rRW1iZWQgPSAoKHtcbiAgICAgICAgbGluayxcbiAgICAgICAgaW5saW5lLFxuICAgICAgICBzb3VyY2VQYXRoLFxuICAgIH06IHtcbiAgICAgICAgbGluazogc3RyaW5nIHwgTGluaztcbiAgICAgICAgaW5saW5lPzogYm9vbGVhbjtcbiAgICAgICAgc291cmNlUGF0aD86IHN0cmluZztcbiAgICB9KSA9PiB7XG4gICAgICAgIGNvbnN0IHJlYWxMaW5rID0gaG9va3MudXNlTWVtbygoKSA9PiAodHlwZW9mIGxpbmsgPT09IFwic3RyaW5nXCIgPyBMaW5rLmZpbGUobGluaykgOiBsaW5rKSwgW2xpbmtdKTtcbiAgICAgICAgY29uc3QgaW1wbGljaXRTb3VyY2VQYXRoID0gaG9va3MudXNlQ29udGV4dChDVVJSRU5UX0ZJTEVfQ09OVEVYVCk7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8RW1iZWRcbiAgICAgICAgICAgICAgICBsaW5rPXtyZWFsTGlua31cbiAgICAgICAgICAgICAgICBpbmxpbmU9e2lubGluZSA/PyBmYWxzZX1cbiAgICAgICAgICAgICAgICBzb3VyY2VQYXRoPXtzb3VyY2VQYXRoID8/IGltcGxpY2l0U291cmNlUGF0aCA/PyB0aGlzLnBhdGh9XG4gICAgICAgICAgICAvPlxuICAgICAgICApO1xuICAgIH0pLmJpbmQodGhpcyk7XG5cbiAgICAvKiogQ3JlYXRlIGFuIGV4cGxpY2l0ICdzcGFuJyBlbWJlZCB3aGljaCBleHRyYWN0cyBhIHNwYW4gb2YgbGluZXMgZnJvbSBhIG1hcmtkb3duIGZpbGUuICovXG4gICAgcHVibGljIFNwYW5FbWJlZCA9ICgoe1xuICAgICAgICBwYXRoLFxuICAgICAgICBzdGFydCxcbiAgICAgICAgZW5kLFxuICAgICAgICBleHBsYWluLFxuICAgICAgICBzaG93RXhwbGFpbixcbiAgICAgICAgc291cmNlUGF0aDogbWF5YmVTb3VyY2VQYXRoLFxuICAgIH06IHtcbiAgICAgICAgcGF0aDogc3RyaW5nO1xuICAgICAgICBzb3VyY2VQYXRoPzogc3RyaW5nO1xuICAgICAgICBleHBsYWluPzogc3RyaW5nO1xuICAgICAgICBzaG93RXhwbGFpbj86IGJvb2xlYW47XG4gICAgICAgIHN0YXJ0OiBudW1iZXI7XG4gICAgICAgIGVuZDogbnVtYmVyO1xuICAgIH0pID0+IHtcbiAgICAgICAgLy8gUmVzb2x2ZSB0aGUgcGF0aCB0byB0aGUgY29ycmVjdCBwYXRoIGlmIGEgc291cmNlIHBhdGggaXMgcHJvdmlkZWQuXG4gICAgICAgIGNvbnN0IHNvdXJjZVBhdGggPSBtYXliZVNvdXJjZVBhdGggPz8gdGhpcy5wYXRoO1xuICAgICAgICBjb25zdCByZXNvbHZlZFBhdGggPSBob29rcy51c2VNZW1vKCgpID0+IHRoaXMucmVzb2x2ZVBhdGgocGF0aCwgc291cmNlUGF0aCksIFtwYXRoLCBzb3VyY2VQYXRoXSk7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxMaW5lU3BhbkVtYmVkIHBhdGg9e3Jlc29sdmVkUGF0aH0gc3RhcnQ9e3N0YXJ0fSBlbmQ9e2VuZH0gZXhwbGFpbj17ZXhwbGFpbn0gc2hvd0V4cGxhaW49e3Nob3dFeHBsYWlufSAvPlxuICAgICAgICApO1xuICAgIH0pLmJpbmQodGhpcyk7XG5cbiAgICAvKiogUmVuZGVycyBhbiBvYnNpZGlhbiBsdWNpZGUgaWNvbi4gKi9cbiAgICBwdWJsaWMgSWNvbiA9IEljb247XG5cbiAgICAvLy8vLy8vLy8vL1xuICAgIC8vIFZpZXdzIC8vXG4gICAgLy8vLy8vLy8vLy9cblxuICAgIHB1YmxpYyBUYXNrTGlzdCA9IFRhc2tMaXN0O1xuICAgIHB1YmxpYyBWYW5pbGxhVGFibGUgPSBWYW5pbGxhVGFibGU7XG4gICAgcHVibGljIFRyZWVUYWJsZSA9IFRyZWVUYWJsZVZpZXc7XG4gICAgcHVibGljIENhcmQgPSBDYXJkO1xuXG4gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIEludGVyYXRpdmUgZWxlbWVudHMgLy9cbiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgICBwdWJsaWMgQnV0dG9uID0gQnV0dG9uO1xuICAgIHB1YmxpYyBUZXh0Ym94ID0gVGV4dGJveDtcbiAgICBwdWJsaWMgQ2FsbG91dCA9IENhbGxvdXQ7XG4gICAgcHVibGljIENoZWNrYm94ID0gQ2hlY2tib3g7XG4gICAgcHVibGljIFNsaWRlciA9IFNsaWRlcjtcbiAgICBwdWJsaWMgU3dpdGNoID0gU3dpdGNoO1xuICAgIHB1YmxpYyBWYW5pbGxhU2VsZWN0ID0gVmFuaWxsYVNlbGVjdDtcblxuICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAvLyAgICBmaWVsZCBlZGl0b3JzICAgIC8vXG4gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIHB1YmxpYyBGaWVsZENoZWNrYm94ID0gRmllbGRDaGVja2JveDtcbiAgICBwdWJsaWMgRmllbGRTbGlkZXIgPSBGaWVsZFNsaWRlcjtcbiAgICBwdWJsaWMgRmllbGRTZWxlY3QgPSBGaWVsZFNlbGVjdDtcbiAgICBwdWJsaWMgRmllbGRTd2l0Y2ggPSBGaWVsZFN3aXRjaDtcbiAgICBwdWJsaWMgVGV4dEZpZWxkID0gRWRpdGFibGVUZXh0RmllbGQ7XG4gICAgcHVibGljIFZhbmlsbGFUZXh0Qm94ID0gQ29udHJvbGxlZEVkaXRhYmxlVGV4dEZpZWxkO1xufVxuIiwgIi8qKlxuICogQG1vZHVsZSBhcGlcbiAqL1xuaW1wb3J0IHsgTGluayB9IGZyb20gXCJleHByZXNzaW9uL2xpbmtcIjtcbmltcG9ydCB7IERhdGFjb3JlIH0gZnJvbSBcImluZGV4L2RhdGFjb3JlXCI7XG5pbXBvcnQgeyBTZWFyY2hSZXN1bHQgfSBmcm9tIFwiaW5kZXgvZGF0YXN0b3JlXCI7XG5pbXBvcnQgeyBQUklNSVRJVkVTLCBRVUVSWSB9IGZyb20gXCJleHByZXNzaW9uL3BhcnNlclwiO1xuaW1wb3J0IHsgSW5kZXhRdWVyeSB9IGZyb20gXCJpbmRleC90eXBlcy9pbmRleC1xdWVyeVwiO1xuaW1wb3J0IHsgSW5kZXhhYmxlIH0gZnJvbSBcImluZGV4L3R5cGVzL2luZGV4YWJsZVwiO1xuaW1wb3J0IHsgTWFya2Rvd25QYWdlIH0gZnJvbSBcImluZGV4L3R5cGVzL21hcmtkb3duXCI7XG5pbXBvcnQgeyBSZXN1bHQgfSBmcm9tIFwiLi9yZXN1bHRcIjtcbmltcG9ydCB7IEFwcCwgQ29tcG9uZW50LCBNYXJrZG93blBvc3RQcm9jZXNzb3JDb250ZXh0LCBNYXJrZG93blJlbmRlckNoaWxkIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5pbXBvcnQgeyBEYXRhY29yZUpTUmVuZGVyZXIgfSBmcm9tIFwidWkvamF2YXNjcmlwdFwiO1xuaW1wb3J0IHsgRGF0YWNvcmVMb2NhbEFwaSB9IGZyb20gXCIuL2xvY2FsLWFwaVwiO1xuaW1wb3J0IFBhcnNpbW1vbiBmcm9tIFwicGFyc2ltbW9uXCI7XG5pbXBvcnQgeyBDb2VyY2UgfSBmcm9tIFwiLi9jb2VyY2VcIjtcbmltcG9ydCB7IERhdGFBcnJheSB9IGZyb20gXCIuL2RhdGEtYXJyYXlcIjtcbmltcG9ydCAqIGFzIGx1eG9uIGZyb20gXCJsdXhvblwiO1xuaW1wb3J0ICogYXMgcHJlYWN0IGZyb20gXCJwcmVhY3RcIjtcblxuLyoqIEV4dGVyYWxseSB2aXNpYmxlIEFQSSBmb3IgZGF0YWNvcmUuXG4gKiBAZ3JvdXAgQ29yZVxuICovXG5leHBvcnQgY2xhc3MgRGF0YWNvcmVBcGkge1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihwdWJsaWMgY29yZTogRGF0YWNvcmUpIHt9XG5cbiAgICAvKiogR2V0IGFjZXNzIHRvIGx1eG9uIGZ1bmN0aW9ucy4gKi9cbiAgICBnZXQgbHV4b24oKTogdHlwZW9mIGx1eG9uIHtcbiAgICAgICAgcmV0dXJuIGx1eG9uO1xuICAgIH1cblxuICAgIC8qKiBHZXQgYWNjZXNzIHRvIHByZWFjdCBmdW5jdGlvbnMuICovXG4gICAgZ2V0IHByZWFjdCgpOiB0eXBlb2YgcHJlYWN0IHtcbiAgICAgICAgcmV0dXJuIHByZWFjdDtcbiAgICB9XG5cbiAgICAvKiogQ2VudHJhbCBPYnNpZGlhbiBhcHAgb2JqZWN0LiAqL1xuICAgIGdldCBhcHAoKTogQXBwIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29yZS5hcHA7XG4gICAgfVxuXG4gICAgLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gTG9jYWwgQVBJIC8vXG4gICAgLy8vLy8vLy8vLy8vLy8vXG5cbiAgICAvKiogQ29uc3RydWN0IGEgbG9jYWwgQVBJIGZvciB0aGUgZmlsZSBhdCB0aGUgZ2l2ZW4gcGF0aC4gKi9cbiAgICBwdWJsaWMgbG9jYWwocGF0aDogc3RyaW5nKTogRGF0YWNvcmVMb2NhbEFwaSB7XG4gICAgICAgIHJldHVybiBuZXcgRGF0YWNvcmVMb2NhbEFwaSh0aGlzLCBwYXRoKTtcbiAgICB9XG5cbiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gUXVlcnlpbmcgKyBGZXRjaGluZyAvL1xuICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAgIC8qKiBMb2FkIGEgbWFya2Rvd24gZmlsZSBieSBmdWxsIHBhdGggb3IgbGluay4gKi9cbiAgICBwdWJsaWMgcGFnZShwYXRoOiBzdHJpbmcgfCBMaW5rKTogTWFya2Rvd25QYWdlIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgcmVhbFBhdGggPSBwYXRoIGluc3RhbmNlb2YgTGluayA/IHBhdGgucGF0aCA6IHBhdGg7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuY29yZS5kYXRhc3RvcmUubG9hZChyZWFsUGF0aCkgYXMgTWFya2Rvd25QYWdlIHwgdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKiBFeGVjdXRlIGEgdGV4dHVhbCBvciB0eXBlZCBpbmRleCBxdWVyeSwgcmV0dXJuaW5nIGFsbCByZXN1bHRzLiAqL1xuICAgIHB1YmxpYyBxdWVyeShxdWVyeTogc3RyaW5nIHwgSW5kZXhRdWVyeSk6IEluZGV4YWJsZVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJ5UXVlcnkocXVlcnkpLm9yRWxzZVRocm93KCk7XG4gICAgfVxuXG4gICAgLyoqIEV4ZWN1dGUgYSB0ZXh0dWFsIG9yIHR5cGVkIGluZGV4IHF1ZXJ5LCByZXR1cm5pbmcgYWxsIHJlc3VsdHMuICovXG4gICAgcHVibGljIHRyeVF1ZXJ5KHF1ZXJ5OiBzdHJpbmcgfCBJbmRleFF1ZXJ5KTogUmVzdWx0PEluZGV4YWJsZVtdLCBzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJ5RnVsbFF1ZXJ5KHF1ZXJ5KS5tYXAoKHJlc3VsdCkgPT4gcmVzdWx0LnJlc3VsdHMpO1xuICAgIH1cblxuICAgIC8qKiBFeGVjdXRlIGEgdGV4dHVhbCBvciB0eXBlZCBpbmRleCBxdWVyeSwgcmV0dXJuaW5nIHJlc3VsdHMgcGx1cyBwZXJmb3JtYW5jZSBtZXRhZGF0YS4gKi9cbiAgICBwdWJsaWMgZnVsbHF1ZXJ5KHF1ZXJ5OiBzdHJpbmcgfCBJbmRleFF1ZXJ5KTogU2VhcmNoUmVzdWx0PEluZGV4YWJsZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy50cnlGdWxsUXVlcnkocXVlcnkpLm9yRWxzZVRocm93KCk7XG4gICAgfVxuXG4gICAgLyoqIEV4ZWN1dGUgYSB0ZXh0dWFsIG9yIHR5cGVkIGluZGV4IHF1ZXJ5LCByZXR1cm5pbmcgcmVzdWx0cyBwbHVzIHBlcmZvcm1hbmNlIG1ldGFkYXRhLiAqL1xuICAgIHB1YmxpYyB0cnlGdWxsUXVlcnkocXVlcnk6IHN0cmluZyB8IEluZGV4UXVlcnkpOiBSZXN1bHQ8U2VhcmNoUmVzdWx0PEluZGV4YWJsZT4sIHN0cmluZz4ge1xuICAgICAgICBjb25zdCBwYXJzZWRRdWVyeSA9IHR5cGVvZiBxdWVyeSA9PT0gXCJzdHJpbmdcIiA/IFFVRVJZLnF1ZXJ5LnRyeVBhcnNlKHF1ZXJ5KSA6IHF1ZXJ5O1xuICAgICAgICByZXR1cm4gdGhpcy5jb3JlLmRhdGFzdG9yZS5zZWFyY2gocGFyc2VkUXVlcnkpO1xuICAgIH1cblxuICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gR2VuZXJhbCB1dGlsaXRpZXMgLy9cbiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gICAgLyoqIFV0aWxpdGllcyBmb3IgY29lcmNpbmcgdHlwZXMgaW50byBvbmUgc3BlY2lmaWMgdHlwZSBmb3IgZWFzaWVyIHByb2dyYW1taW5nLiAqL1xuICAgIHB1YmxpYyBjb2VyY2UgPSBDb2VyY2U7XG5cbiAgICAvKiogUmVzb2x2ZSBhIGxvY2FsIG9yIGFic29sdXRlIHBhdGggb3IgbGluayB0byBhbiBhYnNvbHV0ZSBwYXRoLiAqL1xuICAgIHB1YmxpYyByZXNvbHZlUGF0aChwYXRoOiBzdHJpbmcgfCBMaW5rLCBzb3VyY2VQYXRoPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgcmF3cGF0aCA9IHBhdGggaW5zdGFuY2VvZiBMaW5rID8gcGF0aC5wYXRoIDogcGF0aDtcbiAgICAgICAgaWYgKHJhd3BhdGguc3RhcnRzV2l0aChcIi9cIikpIHJldHVybiByYXdwYXRoLnN1YnN0cmluZygxKTtcblxuICAgICAgICBjb25zdCBhYnNvbHV0ZSA9IHRoaXMuY29yZS5tZXRhZGF0YUNhY2hlLmdldEZpcnN0TGlua3BhdGhEZXN0KHJhd3BhdGgsIHNvdXJjZVBhdGggPz8gXCJcIik7XG4gICAgICAgIGlmIChhYnNvbHV0ZSkgcmV0dXJuIGFic29sdXRlLnBhdGg7XG5cbiAgICAgICAgcmV0dXJuIHJhd3BhdGg7XG4gICAgfVxuXG4gICAgLyoqIFRyeSB0byBwYXJzZSB0aGUgZ2l2ZW4gcXVlcnksIHJldHVybmluZyBhIG1vbmFkaWMgc3VjY2Vzcy9mYWlsdXJlIHJlc3VsdC4gKi9cbiAgICBwdWJsaWMgdHJ5UGFyc2VRdWVyeShxdWVyeTogc3RyaW5nIHwgSW5kZXhRdWVyeSk6IFJlc3VsdDxJbmRleFF1ZXJ5LCBzdHJpbmc+IHtcbiAgICAgICAgaWYgKCEodHlwZW9mIHF1ZXJ5ID09PSBcInN0cmluZ1wiKSkgcmV0dXJuIFJlc3VsdC5zdWNjZXNzKHF1ZXJ5KTtcblxuICAgICAgICBjb25zdCByZXN1bHQgPSBRVUVSWS5xdWVyeS5wYXJzZShxdWVyeSk7XG4gICAgICAgIGlmIChyZXN1bHQuc3RhdHVzKSByZXR1cm4gUmVzdWx0LnN1Y2Nlc3MocmVzdWx0LnZhbHVlKTtcbiAgICAgICAgZWxzZSByZXR1cm4gUmVzdWx0LmZhaWx1cmUoUGFyc2ltbW9uLmZvcm1hdEVycm9yKHF1ZXJ5LCByZXN1bHQpKTtcbiAgICB9XG5cbiAgICAvKiogVHJ5IHRvIHBhcnNlIHRoZSBnaXZlbiBxdWVyeSwgdGhyb3dpbmcgYW4gZXJyb3IgaWYgaXQgaXMgaW52YWxpZC4gKi9cbiAgICBwdWJsaWMgcGFyc2VRdWVyeShxdWVyeTogc3RyaW5nIHwgSW5kZXhRdWVyeSk6IEluZGV4UXVlcnkge1xuICAgICAgICByZXR1cm4gdGhpcy50cnlQYXJzZVF1ZXJ5KHF1ZXJ5KS5vckVsc2VUaHJvdygoZSkgPT4gXCJGYWlsZWQgdG8gcGFyc2UgcXVlcnk6IFwiICsgZSk7XG4gICAgfVxuXG4gICAgLyoqIENyZWF0ZSBhIGZpbGUgbGluayBwb2ludGluZyB0byB0aGUgZ2l2ZW4gcGF0aC4gKi9cbiAgICBwdWJsaWMgZmlsZUxpbmsocGF0aDogc3RyaW5nKTogTGluayB7XG4gICAgICAgIHJldHVybiBMaW5rLmZpbGUocGF0aCk7XG4gICAgfVxuXG4gICAgLyoqIENyZWF0ZSBhIGxpbmsgdG8gYSBoZWFkZXIgd2l0aCB0aGUgZ2l2ZW4gbmFtZS4gKi9cbiAgICBwdWJsaWMgaGVhZGVyTGluayhwYXRoOiBzdHJpbmcsIGhlYWRlcjogc3RyaW5nKTogTGluayB7XG4gICAgICAgIHJldHVybiBMaW5rLmhlYWRlcihwYXRoLCBoZWFkZXIpO1xuICAgIH1cblxuICAgIC8qKiBDcmVhdGUgYSBsaW5rIHRvIGEgYmxvY2sgd2l0aCB0aGUgZ2l2ZW4gcGF0aCBhbmQgYmxvY2sgSUQuICovXG4gICAgcHVibGljIGJsb2NrTGluayhwYXRoOiBzdHJpbmcsIGJsb2NrOiBzdHJpbmcpOiBMaW5rIHtcbiAgICAgICAgcmV0dXJuIExpbmsuYmxvY2socGF0aCwgYmxvY2spO1xuICAgIH1cblxuICAgIC8qKiBUcnkgdG8gcGFyc2UgdGhlIGdpdmVuIGxpbmssIHRocm93aW5nIGFuIGVycm9yIGlmIGl0IGlzIGludmFsaWQuICovXG4gICAgcHVibGljIHBhcnNlTGluayhsaW5rdGV4dDogc3RyaW5nKTogTGluayB7XG4gICAgICAgIHJldHVybiB0aGlzLnRyeVBhcnNlTGluayhsaW5rdGV4dCkub3JFbHNlVGhyb3coKGUpID0+IFwiRmFpbGVkIHRvIHBhcnNlIGxpbms6IFwiICsgZSk7XG4gICAgfVxuXG4gICAgLyoqIFRyeSB0byBwYXJzZSBhIGxpbmssIHJldHVybmluZyBhIG1vbmFkaWMgc3VjY2Vzcy9mYWlsdXJlIHJlc3VsdC4gKi9cbiAgICBwdWJsaWMgdHJ5UGFyc2VMaW5rKGxpbmt0ZXh0OiBzdHJpbmcpOiBSZXN1bHQ8TGluaywgc3RyaW5nPiB7XG4gICAgICAgIGNvbnN0IHBhcnNlZCA9IFBSSU1JVElWRVMuZW1iZWRMaW5rLnBhcnNlKGxpbmt0ZXh0KTtcbiAgICAgICAgaWYgKCFwYXJzZWQuc3RhdHVzKSByZXR1cm4gUmVzdWx0LmZhaWx1cmUoUGFyc2ltbW9uLmZvcm1hdEVycm9yKGxpbmt0ZXh0LCBwYXJzZWQpKTtcblxuICAgICAgICByZXR1cm4gUmVzdWx0LnN1Y2Nlc3MocGFyc2VkLnZhbHVlKTtcbiAgICB9XG5cbiAgICAvKiogQ3JlYXRlIGEgZGF0YSBhcnJheSBmcm9tIGEgcmVndWxhciBhcnJheS4gKi9cbiAgICBwdWJsaWMgYXJyYXk8VD4oaW5wdXQ6IFRbXSB8IERhdGFBcnJheTxUPik6IERhdGFBcnJheTxUPiB7XG4gICAgICAgIHJldHVybiBEYXRhQXJyYXkud3JhcChpbnB1dCk7XG4gICAgfVxuXG4gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gVmlzdWFsIEVsZW1lbnRzIC8vXG4gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgICAvKipcbiAgICAgKiBSdW4gdGhlIGdpdmVuIERhdGFjb3JlSlMgc2NyaXB0LCByZW5kZXJpbmcgaXQgaW50byB0aGUgZ2l2ZW4gY29udGFpbmVyLiBUaGlzIGZ1bmN0aW9uXG4gICAgICogd2lsbCByZXR1cm4gcXVpY2tseTsgYWN0dWFsIHJlbmRlcmluZyBpcyBkb25lIGFzeW5jaHJvbm91c2x5IGluIHRoZSBiYWNrZ3JvdW5kLlxuICAgICAqXG4gICAgICogUmV0dXJucyBhIG1hcmtkb3duIHJlbmRlciBjaGlsZCByZXByZXNlbnRpbmcgdGhlIHJlbmRlcmVkIG9iamVjdC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZXhlY3V0ZUpzKFxuICAgICAgICBzb3VyY2U6IHN0cmluZyxcbiAgICAgICAgY29udGFpbmVyOiBIVE1MRWxlbWVudCxcbiAgICAgICAgY29tcG9uZW50OiBDb21wb25lbnQgfCBNYXJrZG93blBvc3RQcm9jZXNzb3JDb250ZXh0LFxuICAgICAgICBzb3VyY2VQYXRoOiBzdHJpbmdcbiAgICApOiBNYXJrZG93blJlbmRlckNoaWxkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlbmRlckphdmFzY3JpcHQoc291cmNlLCBjb250YWluZXIsIGNvbXBvbmVudCwgc291cmNlUGF0aCwgXCJqc1wiKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTaW1pbGFyIHRvIGBleGVjdXRlSnNgLCBidXQgZm9yIEpTWCBzY3JpcHRzLiBJZiB5b3UgYXJlIHVuc3VyZSBpZiB5b3VyIGlucHV0IHdpbGwgYmUgSlNcbiAgICAgKiBvciBKU1gsIHVzZSB0aGlzIG9uZSwgYXMgaXQgYWxzbyBzdXBwb3J0cyByZWd1bGFyIGphdmFzY3JpcHQgKGFsYmVpdCBhdCBhdCBhIG1pbGQgcGVyZm9ybWFuY2VcbiAgICAgKiBoaXQgdG8gcmVuZGVyaW5nKS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZXhlY3V0ZUpzeChcbiAgICAgICAgc291cmNlOiBzdHJpbmcsXG4gICAgICAgIGNvbnRhaW5lcjogSFRNTEVsZW1lbnQsXG4gICAgICAgIGNvbXBvbmVudDogQ29tcG9uZW50IHwgTWFya2Rvd25Qb3N0UHJvY2Vzc29yQ29udGV4dCxcbiAgICAgICAgc291cmNlUGF0aDogc3RyaW5nXG4gICAgKTogTWFya2Rvd25SZW5kZXJDaGlsZCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZW5kZXJKYXZhc2NyaXB0KHNvdXJjZSwgY29udGFpbmVyLCBjb21wb25lbnQsIHNvdXJjZVBhdGgsIFwianN4XCIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNpbWlsYXIgdG8gYGV4ZWN1dGVKc2AsIGJ1dCBmb3IgVHlwZVNjcmlwdCBzY3JpcHRzLiBVc2UgdGhlIFRTWCB2YXJpYW50IGZvciBUU1ggc3VwcHJvdC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZXhlY3V0ZVRzKFxuICAgICAgICBzb3VyY2U6IHN0cmluZyxcbiAgICAgICAgY29udGFpbmVyOiBIVE1MRWxlbWVudCxcbiAgICAgICAgY29tcG9uZW50OiBDb21wb25lbnQgfCBNYXJrZG93blBvc3RQcm9jZXNzb3JDb250ZXh0LFxuICAgICAgICBzb3VyY2VQYXRoOiBzdHJpbmdcbiAgICApOiBNYXJrZG93blJlbmRlckNoaWxkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlbmRlckphdmFzY3JpcHQoc291cmNlLCBjb250YWluZXIsIGNvbXBvbmVudCwgc291cmNlUGF0aCwgXCJ0c1wiKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTaW1pbGFyIHRvIGBleGVjdXRlVHNgLCBidXQgZm9yIFRTWCBzY3JpcHRzLiBJZiB5b3UgYXJlIHVuc3VyZSBpZiB5b3VyIGlucHV0IHdpbGwgYmUgVFNcbiAgICAgKiBvciBUU1gsIHVzZSB0aGlzIG9uZSwgYXMgaXQgYWxzbyBzdXBwb3J0cyByZWd1bGFyIGphdmFzY3JpcHQgKGFsYmVpdCBhdCBhdCBhIG1pbGQgcGVyZm9ybWFuY2VcbiAgICAgKiBoaXQgdG8gcmVuZGVyaW5nKS5cbiAgICAgKlxuICAgICAqIFRoaXMgZ2VuZXJhbGx5IHdpbGwgYWxzbyB3b3JrIGlmIHlvdSBhcmUgdW5zdXJlIGlmIHlvdXIgaW5wdXQgaXMgamF2YXNjcmlwdCBvciB0eXBlc2NyaXB0LFxuICAgICAqIHRob3VnaCBiZXdhcmUgdGhlcmUgYXJlIGEgZmV3IG5pY2hlIGNhc2VzIHdoZXJlIGphdmFzY3JpcHQgYW5kIHR5cGVzY3JpcHQgZGl2ZXJnZSBpbiBzeW50YXguXG4gICAgICovXG4gICAgcHVibGljIGV4ZWN1dGVUc3goXG4gICAgICAgIHNvdXJjZTogc3RyaW5nLFxuICAgICAgICBjb250YWluZXI6IEhUTUxFbGVtZW50LFxuICAgICAgICBjb21wb25lbnQ6IENvbXBvbmVudCB8IE1hcmtkb3duUG9zdFByb2Nlc3NvckNvbnRleHQsXG4gICAgICAgIHNvdXJjZVBhdGg6IHN0cmluZ1xuICAgICk6IE1hcmtkb3duUmVuZGVyQ2hpbGQge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVuZGVySmF2YXNjcmlwdChzb3VyY2UsIGNvbnRhaW5lciwgY29tcG9uZW50LCBzb3VyY2VQYXRoLCBcInRzeFwiKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIFNoYXJlZCBsb2dpYyBmb3IgcmVuZGVyaW5nIGFueSBKUy9UUyBzY3JpcHQuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfcmVuZGVySmF2YXNjcmlwdChcbiAgICAgICAgc291cmNlOiBzdHJpbmcsXG4gICAgICAgIGNvbnRhaW5lcjogSFRNTEVsZW1lbnQsXG4gICAgICAgIGNvbXBvbmVudDogQ29tcG9uZW50IHwgTWFya2Rvd25Qb3N0UHJvY2Vzc29yQ29udGV4dCxcbiAgICAgICAgc291cmNlUGF0aDogc3RyaW5nLFxuICAgICAgICBsYW5ndWFnZTogXCJqc1wiIHwgXCJ0c1wiIHwgXCJqc3hcIiB8IFwidHN4XCJcbiAgICApIHtcbiAgICAgICAgbGV0IGxvY2FsID0gbmV3IERhdGFjb3JlTG9jYWxBcGkodGhpcywgc291cmNlUGF0aCk7XG4gICAgICAgIGNvbnN0IHJlbmRlcmVyID0gbmV3IERhdGFjb3JlSlNSZW5kZXJlcihsb2NhbCwgY29udGFpbmVyLCBzb3VyY2VQYXRoLCBzb3VyY2UsIGxhbmd1YWdlKTtcbiAgICAgICAgY29tcG9uZW50LmFkZENoaWxkKHJlbmRlcmVyKTtcblxuICAgICAgICByZXR1cm4gcmVuZGVyZXI7XG4gICAgfVxufVxuIiwgImltcG9ydCB7IGdldFBhcmVudEZvbGRlciB9IGZyb20gXCJ1dGlscy9ub3JtYWxpemVyc1wiO1xuaW1wb3J0IHsgVEZpbGUsIFRGb2xkZXIsIFZhdWx0IH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbi8qKiBTcGVjaWZpYyBpbmRleCBmb3IgdHJhY2tpbmcgb2JqZWN0cyBpbiByZWxhdGl2ZSBwYXRocy4gU3BlY2lmaWNhbGx5IHRyYWNrcyB0b3AtbGV2ZWwgcGFnZSBvYmplY3RzLiAqL1xuZXhwb3J0IGNsYXNzIEZvbGRlckluZGV4IHtcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgdmF1bHQ6IFZhdWx0KSB7fVxuXG4gICAgLyoqIEdldCB0aGUgbGlzdCBvZiBhbGwgZmlsZXMgdW5kZXIgdGhlIGdpdmVuIHBhdGguICovXG4gICAgcHVibGljIGdldChwcmVmaXg6IHN0cmluZywgZmlsdGVyPzogKHBhdGg6IHN0cmluZykgPT4gYm9vbGVhbik6IFNldDxzdHJpbmc+IHtcbiAgICAgICAgbGV0IGZvbGRlciA9IHRoaXMudmF1bHQuZ2V0QWJzdHJhY3RGaWxlQnlQYXRoKHByZWZpeCB8fCBcIi9cIik7XG4gICAgICAgIGlmICghZm9sZGVyKSB7XG4gICAgICAgICAgICByZXR1cm4gRm9sZGVySW5kZXguRU1QVFlfU0VUO1xuICAgICAgICB9IGVsc2UgaWYgKGZvbGRlciBpbnN0YW5jZW9mIFRGb2xkZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgU2V0KHRoaXMud2Fsayhmb2xkZXIsIGZpbHRlcikpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCFmaWx0ZXIgfHwgZmlsdGVyKHByZWZpeCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFNldChwcmVmaXgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gRm9sZGVySW5kZXguRU1QVFlfU0VUO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEdldCB0aGUgbGlzdCBvZiBmaWxlcyBzcGVjaWZpY2FsbHkgdW5kZXIgdGhlIGdpdmVuIHBhdGguICovXG4gICAgcHVibGljIGdldEV4YWN0KHByZWZpeDogc3RyaW5nLCBmaWx0ZXI/OiAocGF0aDogc3RyaW5nKSA9PiBib29sZWFuKTogU2V0PHN0cmluZz4ge1xuICAgICAgICBsZXQgZm9sZGVyID0gdGhpcy52YXVsdC5nZXRBYnN0cmFjdEZpbGVCeVBhdGgocHJlZml4IHx8IFwiL1wiKTtcbiAgICAgICAgaWYgKCFmb2xkZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBGb2xkZXJJbmRleC5FTVBUWV9TRVQ7XG4gICAgICAgIH0gZWxzZSBpZiAoZm9sZGVyIGluc3RhbmNlb2YgVEZvbGRlcikge1xuICAgICAgICAgICAgY29uc3QgZWxlbWVudHMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZmlsZSBvZiBmb2xkZXIuY2hpbGRyZW4pIHtcbiAgICAgICAgICAgICAgICBpZiAoIShmaWxlIGluc3RhbmNlb2YgVEZpbGUpKSBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBpZiAoZmlsdGVyICYmICFmaWx0ZXIoZmlsZS5wYXRoKSkgY29udGludWU7XG5cbiAgICAgICAgICAgICAgICBlbGVtZW50cy5hZGQoZmlsZS5wYXRoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnRzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCFmaWx0ZXIgfHwgZmlsdGVyKHByZWZpeCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFNldChwcmVmaXgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gRm9sZGVySW5kZXguRU1QVFlfU0VUO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIERldGVybWluZXMgaWYgdGhlIGdpdmVuIHBhdGggZXhpc3RzIGluIHRoZSBpbmRleC4gKi9cbiAgICBwdWJsaWMgcGF0aEV4aXN0cyhwYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmF1bHQuZ2V0QWJzdHJhY3RGaWxlQnlQYXRoKHBhdGggfHwgXCIvXCIpICE9IG51bGw7XG4gICAgfVxuXG4gICAgLyoqIERldGVybWluZXMgaWYgdGhlIGdpdmVuIGZvbGRlciBleGlzdHMgaW4gdGhlIGluZGV4LiAqL1xuICAgIHB1YmxpYyBmb2xkZXJFeGlzdHMoZm9sZGVyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmF1bHQuZ2V0QWJzdHJhY3RGaWxlQnlQYXRoKGZvbGRlciB8fCBcIi9cIikgaW5zdGFuY2VvZiBURm9sZGVyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVzZSB0aGUgaW4tbWVtb3J5IHByZWZpeCBpbmRleCB0byBjb252ZXJ0IGEgcmVsYXRpdmUgcGF0aCB0byBhbiBhYnNvbHV0ZSBvbmUuXG4gICAgICovXG4gICAgcHVibGljIHJlc29sdmVSZWxhdGl2ZShwYXRoOiBzdHJpbmcsIG9yaWdpbj86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGlmICghb3JpZ2luKSByZXR1cm4gcGF0aDtcbiAgICAgICAgZWxzZSBpZiAocGF0aC5zdGFydHNXaXRoKFwiL1wiKSkgcmV0dXJuIHBhdGguc3Vic3RyaW5nKDEpO1xuXG4gICAgICAgIGxldCByZWxhdGl2ZVBhdGggPSBnZXRQYXJlbnRGb2xkZXIob3JpZ2luKSArIFwiL1wiICsgcGF0aDtcbiAgICAgICAgaWYgKHRoaXMucGF0aEV4aXN0cyhyZWxhdGl2ZVBhdGgpKSByZXR1cm4gcmVsYXRpdmVQYXRoO1xuICAgICAgICBlbHNlIHJldHVybiBwYXRoO1xuICAgIH1cblxuICAgIHByaXZhdGUgKndhbGsoZm9sZGVyOiBURm9sZGVyLCBmaWx0ZXI/OiAocGF0aDogc3RyaW5nKSA9PiBib29sZWFuKTogR2VuZXJhdG9yPHN0cmluZz4ge1xuICAgICAgICBmb3IgKGNvbnN0IGZpbGUgb2YgZm9sZGVyLmNoaWxkcmVuKSB7XG4gICAgICAgICAgICBpZiAoZmlsZSBpbnN0YW5jZW9mIFRGb2xkZXIpIHtcbiAgICAgICAgICAgICAgICB5aWVsZCogdGhpcy53YWxrKGZpbGUsIGZpbHRlcik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGZpbHRlciA/IGZpbHRlcihmaWxlLnBhdGgpIDogdHJ1ZSkge1xuICAgICAgICAgICAgICAgIHlpZWxkIGZpbGUucGF0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBFbXB0eSBwbGFjZWhvbGRlciBzZXQuICovXG4gICAgcHJpdmF0ZSBzdGF0aWMgRU1QVFlfU0VUOiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoKTtcbn1cbiIsICIvKiogVHJhY2tzIGFuIGludmVydGVkIGluZGV4IG9mIHZhbHVlIC0+IHNldFxcPGlkc1xcPi4gKi9cbmV4cG9ydCBjbGFzcyBJbnZlcnRlZEluZGV4PFY+IHtcbiAgICBwcml2YXRlIGludmVydGVkOiBNYXA8ViwgU2V0PHN0cmluZz4+O1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmludmVydGVkID0gbmV3IE1hcCgpO1xuICAgIH1cblxuICAgIC8qKiBTZXQgdGhlIGtleSB0byB0aGUgZ2l2ZW4gdmFsdWVzLiAqL1xuICAgIHB1YmxpYyBzZXQoa2V5OiBzdHJpbmcsIHZhbHVlczogSXRlcmFibGU8Vj4pIHtcbiAgICAgICAgZm9yIChsZXQgdmFsdWUgb2YgdmFsdWVzKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuaW52ZXJ0ZWQuaGFzKHZhbHVlKSkgdGhpcy5pbnZlcnRlZC5zZXQodmFsdWUsIG5ldyBTZXQoKSk7XG4gICAgICAgICAgICB0aGlzLmludmVydGVkLmdldCh2YWx1ZSkhLmFkZChrZXkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEdldCBhbGwga2V5cyB0aGF0IG1hcCB0byB0aGUgZ2l2ZW4gdmFsdWUuICovXG4gICAgcHVibGljIGdldCh2YWx1ZTogVik6IFNldDxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW52ZXJ0ZWQuZ2V0KHZhbHVlKSA/PyBJbnZlcnRlZEluZGV4LkVNUFRZX1NFVDtcbiAgICB9XG5cbiAgICAvKiogRGVsZXRlIGEga2V5IGZyb20gdGhlIHNldCBvZiBhc3NvY2lhdGVkIHZhbHVlcy4gKi9cbiAgICBwdWJsaWMgZGVsZXRlKGtleTogc3RyaW5nLCB2YWx1ZXM6IEl0ZXJhYmxlPFY+KSB7XG4gICAgICAgIGZvciAobGV0IHZhbHVlIG9mIHZhbHVlcykge1xuICAgICAgICAgICAgY29uc3Qgc2V0ID0gdGhpcy5pbnZlcnRlZC5nZXQodmFsdWUpO1xuICAgICAgICAgICAgaWYgKHNldCkge1xuICAgICAgICAgICAgICAgIHNldC5kZWxldGUoa2V5KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHNldCAmJiBzZXQuc2l6ZSA9PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnZlcnRlZC5kZWxldGUodmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGNsZWFyKCkge1xuICAgICAgICB0aGlzLmludmVydGVkLmNsZWFyKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgRU1QVFlfU0VUOiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoKTtcbn1cbiIsICJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZsYXRRdWV1ZSB7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5pZHMgPSBbXTtcbiAgICAgICAgdGhpcy52YWx1ZXMgPSBbXTtcbiAgICAgICAgdGhpcy5sZW5ndGggPSAwO1xuICAgIH1cblxuICAgIGNsZWFyKCkge1xuICAgICAgICB0aGlzLmxlbmd0aCA9IDA7XG4gICAgfVxuXG4gICAgcHVzaChpZCwgdmFsdWUpIHtcbiAgICAgICAgbGV0IHBvcyA9IHRoaXMubGVuZ3RoKys7XG5cbiAgICAgICAgd2hpbGUgKHBvcyA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IChwb3MgLSAxKSA+PiAxO1xuICAgICAgICAgICAgY29uc3QgcGFyZW50VmFsdWUgPSB0aGlzLnZhbHVlc1twYXJlbnRdO1xuICAgICAgICAgICAgaWYgKHZhbHVlID49IHBhcmVudFZhbHVlKSBicmVhaztcbiAgICAgICAgICAgIHRoaXMuaWRzW3Bvc10gPSB0aGlzLmlkc1twYXJlbnRdO1xuICAgICAgICAgICAgdGhpcy52YWx1ZXNbcG9zXSA9IHBhcmVudFZhbHVlO1xuICAgICAgICAgICAgcG9zID0gcGFyZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pZHNbcG9zXSA9IGlkO1xuICAgICAgICB0aGlzLnZhbHVlc1twb3NdID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcG9wKCkge1xuICAgICAgICBpZiAodGhpcy5sZW5ndGggPT09IDApIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICAgICAgY29uc3QgdG9wID0gdGhpcy5pZHNbMF07XG4gICAgICAgIHRoaXMubGVuZ3RoLS07XG5cbiAgICAgICAgaWYgKHRoaXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgaWQgPSB0aGlzLmlkc1swXSA9IHRoaXMuaWRzW3RoaXMubGVuZ3RoXTtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy52YWx1ZXNbMF0gPSB0aGlzLnZhbHVlc1t0aGlzLmxlbmd0aF07XG4gICAgICAgICAgICBjb25zdCBoYWxmTGVuZ3RoID0gdGhpcy5sZW5ndGggPj4gMTtcbiAgICAgICAgICAgIGxldCBwb3MgPSAwO1xuXG4gICAgICAgICAgICB3aGlsZSAocG9zIDwgaGFsZkxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGxldCBsZWZ0ID0gKHBvcyA8PCAxKSArIDE7XG4gICAgICAgICAgICAgICAgY29uc3QgcmlnaHQgPSBsZWZ0ICsgMTtcbiAgICAgICAgICAgICAgICBsZXQgYmVzdEluZGV4ID0gdGhpcy5pZHNbbGVmdF07XG4gICAgICAgICAgICAgICAgbGV0IGJlc3RWYWx1ZSA9IHRoaXMudmFsdWVzW2xlZnRdO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJpZ2h0VmFsdWUgPSB0aGlzLnZhbHVlc1tyaWdodF07XG5cbiAgICAgICAgICAgICAgICBpZiAocmlnaHQgPCB0aGlzLmxlbmd0aCAmJiByaWdodFZhbHVlIDwgYmVzdFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGxlZnQgPSByaWdodDtcbiAgICAgICAgICAgICAgICAgICAgYmVzdEluZGV4ID0gdGhpcy5pZHNbcmlnaHRdO1xuICAgICAgICAgICAgICAgICAgICBiZXN0VmFsdWUgPSByaWdodFZhbHVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoYmVzdFZhbHVlID49IHZhbHVlKSBicmVhaztcblxuICAgICAgICAgICAgICAgIHRoaXMuaWRzW3Bvc10gPSBiZXN0SW5kZXg7XG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZXNbcG9zXSA9IGJlc3RWYWx1ZTtcbiAgICAgICAgICAgICAgICBwb3MgPSBsZWZ0O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmlkc1twb3NdID0gaWQ7XG4gICAgICAgICAgICB0aGlzLnZhbHVlc1twb3NdID0gdmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdG9wO1xuICAgIH1cblxuICAgIHBlZWsoKSB7XG4gICAgICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgcmV0dXJuIHRoaXMuaWRzWzBdO1xuICAgIH1cblxuICAgIHBlZWtWYWx1ZSgpIHtcbiAgICAgICAgaWYgKHRoaXMubGVuZ3RoID09PSAwKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZXNbMF07XG4gICAgfVxuXG4gICAgc2hyaW5rKCkge1xuICAgICAgICB0aGlzLmlkcy5sZW5ndGggPSB0aGlzLnZhbHVlcy5sZW5ndGggPSB0aGlzLmxlbmd0aDtcbiAgICB9XG59XG4iLCAiaW1wb3J0IHsgTGl0ZXJhbCwgTGl0ZXJhbHMgfSBmcm9tIFwiZXhwcmVzc2lvbi9saXRlcmFsXCI7XG5pbXBvcnQge2RlZmF1bHQgYXMgQlRyZWV9IGZyb20gXCJzb3J0ZWQtYnRyZWVcIjtcblxuLyoqIEdlbmVyYWwgYWJzdHJhY3Rpb24gZm9yIGFsbCBmaWVsZCBpbmRpY2VzOyBzb21lIG1heSBiZSBvcHRpbWl6ZWQgZm9yIHNvbWUgdHlwZXMuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpZWxkSW5kZXgge1xuICAgIC8vIFRPRE86IENoYW5nZSBhbGwoKSBhbmQgZXF1YWxzKCkgdG8gcmV0dXJuIEZpbHRlcjxzdHJpbmc+IGluc3RlYWQgZm9yIHBlcmZvcm1hbmNlIG9uIHNvbWUgaW5kZXggdHlwZXMuXG5cbiAgICAvKiogQWRkIGFuIChvYmplY3QsIHZhbHVlKSBwYWlyaW5nIHRvIHRoZSBjb2xsZWN0aW9uLiAqL1xuICAgIGFkZChpZDogc3RyaW5nLCB2YWx1ZTogTGl0ZXJhbCk6IHZvaWQ7XG5cbiAgICAvKiogRGVsZXRlIGFuIChvYmplY3QsIHZhbHVlKSBwYWlyaW5nIGZyb20gdGhlIGNvbGxlY3Rpb24uICovXG4gICAgZGVsZXRlKGlkOiBzdHJpbmcsIHZhbHVlOiBMaXRlcmFsKTogdm9pZDtcblxuICAgIC8qKiBSZXR1cm4gYSBzZXQgb2YgYWxsIHBhZ2VzIGluIHRoZSBjb2xsZWN0aW9uLiAqL1xuICAgIGFsbCgpOiBTZXQ8c3RyaW5nPjtcblxuICAgIC8qKiBGb3IgaW5kaWNlcyB3aGljaCBzdXBwb3J0IGZhc3QgdmFsdWUgbG9va3VwcywgcmV0dXJucyB0aGUgc2V0IG9mIGFsbCBkb2N1bWVudHMgd2l0aCB0aGUgZ2l2ZW4gdmFsdWUuICovXG4gICAgZXF1YWxzKHZhbHVlOiBMaXRlcmFsKTogU2V0PHN0cmluZz4gfCB1bmRlZmluZWQ7XG59XG5cbi8qKiBGaWVsZCBpbmRleCBmb3IgYW55IGZpZWxkIHdoaWNoIGlzIGFsd2F5cyBvciBhbG1vc3QgYWx3YXlzIHByZXNlbnQgKCRyZXZpc2lvbiwgJHR5cGVzKS4gKi9cbmV4cG9ydCBjbGFzcyBFdmVyeXRoaW5nRmllbGRJbmRleCBpbXBsZW1lbnRzIEZpZWxkSW5kZXgge1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihwdWJsaWMgYWxsOiAoKSA9PiBTZXQ8c3RyaW5nPikge31cblxuICAgIHB1YmxpYyBhZGQoaWQ6IHN0cmluZywgdmFsdWU6IExpdGVyYWwpOiB2b2lkIHt9XG4gICAgcHVibGljIGRlbGV0ZShpZDogc3RyaW5nLCB2YWx1ZTogTGl0ZXJhbCk6IHZvaWQge31cblxuICAgIHB1YmxpYyBlcXVhbHModmFsdWU6IExpdGVyYWwpOiBTZXQ8c3RyaW5nPiB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxufVxuXG4vKiogU3BlY2lhbGl6ZWQgZmllbGQgaW5kZXggZm9yIElEcyB3aGljaCBrbm93cyB0byBkaXJlY3RseSBqdXN0IHJldHVybiB0aGUgSUQuICovXG5leHBvcnQgY2xhc3MgSWRGaWVsZEluZGV4IGltcGxlbWVudHMgRmllbGRJbmRleCB7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHB1YmxpYyBhbGw6ICgpID0+IFNldDxzdHJpbmc+LCBwdWJsaWMgbG9va3VwOiAoaWQ6IHN0cmluZykgPT4gYm9vbGVhbikge31cblxuICAgIHB1YmxpYyBhZGQoaWQ6IHN0cmluZywgdmFsdWU6IExpdGVyYWwpOiB2b2lkIHt9XG4gICAgcHVibGljIGRlbGV0ZShpZDogc3RyaW5nLCB2YWx1ZTogTGl0ZXJhbCk6IHZvaWQge31cblxuICAgIHB1YmxpYyBlcXVhbHModmFsdWU6IExpdGVyYWwpOiBTZXQ8c3RyaW5nPiB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmICghTGl0ZXJhbHMuaXNTdHJpbmcodmFsdWUpKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgICAgIGlmICh0aGlzLmxvb2t1cCh2YWx1ZSBhcyBzdHJpbmcpKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFNldChbdmFsdWUgYXMgc3RyaW5nXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vKiogRGVmYXVsdCBmaWVsZCBpbmRleCB3aGljaCB0cmFja3MgZmllbGQgbG9jYXRpb25zIHVzaW5nIGEgc2V0LiAqL1xuZXhwb3J0IGNsYXNzIFNldEZpZWxkSW5kZXggaW1wbGVtZW50cyBGaWVsZEluZGV4IHtcbiAgICAvKiogVGhlIElEIG9mIGV2ZXJ5IG9iamVjdCB0aGF0IHRoaXMgZmllbGQgaXMgcHJlc2VudCBvbi4gKi9cbiAgICBwcml2YXRlIHByZXNlbnQ6IFNldDxzdHJpbmc+O1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLnByZXNlbnQgPSBuZXcgU2V0KCk7XG4gICAgfVxuXG4gICAgLyoqIEFkZCBhbiAob2JqZWN0LCB2YWx1ZSkgcGFpcmluZyB0byB0aGUgY29sbGVjdGlvbi4gKi9cbiAgICBwdWJsaWMgYWRkKGlkOiBzdHJpbmcsIHZhbHVlOiBMaXRlcmFsKTogdm9pZCB7XG4gICAgICAgIHRoaXMucHJlc2VudC5hZGQoaWQpO1xuICAgIH1cblxuICAgIC8qKiBEZWxldGUgYW4gKG9iamVjdCwgdmFsdWUpIHBhaXJpbmcgZnJvbSB0aGUgY29sbGVjdGlvbi4gKi9cbiAgICBwdWJsaWMgZGVsZXRlKGlkOiBzdHJpbmcsIHZhbHVlOiBMaXRlcmFsKTogdm9pZCB7XG4gICAgICAgIHRoaXMucHJlc2VudC5kZWxldGUoaWQpO1xuICAgIH1cblxuICAgIC8qKiBSZXR1cm4gYSBzZXQgb2YgYWxsIHBhZ2VzIGluIHdoaWNoIHRoZSBmaWVsZCBleGlzdHMgYXQgYWxsIChldmVuIGlmIHVuZGVmaW5lZCkuICovXG4gICAgcHVibGljIGFsbCgpOiBTZXQ8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnByZXNlbnQ7XG4gICAgfVxuXG4gICAgLyoqIFJldHVybiBhbGwgcGFnZXMgd2l0aCBhIHZhbHVlIGV4YWN0bHkgZXF1YWwgdG8gdGhlIGdpdmVuIHZhbHVlLiAqL1xuICAgIHB1YmxpYyBlcXVhbHModmFsdWU6IExpdGVyYWwpOiBTZXQ8c3RyaW5nPiB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxufVxuXG4vKiogRmllbGQgaW5kZXggd2hpY2ggdHJhY2tzIGZpZWxkIGxvY2F0aW9ucyB1c2luZyBib3RoIGFuIG92ZXJhbGwgc2V0IGFuZCBhIEJUcmVlIG9mIHZhbHVlcy4gKi9cbmV4cG9ydCBjbGFzcyBCVHJlZUZpZWxkSW5kZXggaW1wbGVtZW50cyBGaWVsZEluZGV4IHtcbiAgICAvKiogVGhlIElEIG9mIGV2ZXJ5IG9iamVjdCB0aGF0IHRoaXMgZmllbGQgaXMgcHJlc2VudCBvbi4gKi9cbiAgICBwcml2YXRlIHByZXNlbnQ6IFNldDxzdHJpbmc+O1xuICAgIC8qKiBNYXBzICh2YWx1ZSwgc2V0IG9mIHBhZ2VzIGNvbnRhaW5pbmcgdGhhdCB2YWx1ZSkuICovXG4gICAgcHJpdmF0ZSB2YWx1ZXM6IEJUcmVlPExpdGVyYWwsIFNldDxzdHJpbmc+PjtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5wcmVzZW50ID0gbmV3IFNldCgpO1xuICAgICAgICB0aGlzLnZhbHVlcyA9IG5ldyBCVHJlZShbXSwgKGEsIGIpID0+IExpdGVyYWxzLmNvbXBhcmUoYSwgYikpO1xuICAgIH1cblxuICAgIC8qKiBBZGQgYW4gKG9iamVjdCwgdmFsdWUpIHBhaXJpbmcgdG8gdGhlIGNvbGxlY3Rpb24uICovXG4gICAgcHVibGljIGFkZChpZDogc3RyaW5nLCB2YWx1ZTogTGl0ZXJhbCk6IHZvaWQge1xuICAgICAgICB0aGlzLnByZXNlbnQuYWRkKGlkKTtcblxuICAgICAgICB0aGlzLnZhbHVlcy5zZXRJZk5vdFByZXNlbnQodmFsdWUsIG5ldyBTZXQoKSk7XG4gICAgICAgIHRoaXMudmFsdWVzLmdldCh2YWx1ZSkhLmFkZChpZCk7XG4gICAgfVxuXG4gICAgLyoqIERlbGV0ZSBhbiAob2JqZWN0LCB2YWx1ZSkgcGFpcmluZyBmcm9tIHRoZSBjb2xsZWN0aW9uLiAqL1xuICAgIHB1YmxpYyBkZWxldGUoaWQ6IHN0cmluZywgdmFsdWU6IExpdGVyYWwpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wcmVzZW50LmRlbGV0ZShpZCk7XG5cbiAgICAgICAgY29uc3Qgc2V0ID0gdGhpcy52YWx1ZXMuZ2V0KHZhbHVlKTtcbiAgICAgICAgc2V0Py5kZWxldGUoaWQpO1xuXG4gICAgICAgIGlmIChzZXQgPT0gbnVsbCB8fCBzZXQuc2l6ZSA9PSAwKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlcy5kZWxldGUodmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIFJldHVybiBhIHNldCBvZiBhbGwgcGFnZXMgaW4gd2hpY2ggdGhlIGZpZWxkIGV4aXN0cyBhdCBhbGwgKGV2ZW4gaWYgdW5kZWZpbmVkKS4gKi9cbiAgICBwdWJsaWMgYWxsKCk6IFNldDxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJlc2VudDtcbiAgICB9XG5cbiAgICAvKiogUmV0dXJuIGFsbCBwYWdlcyB3aXRoIGEgdmFsdWUgZXhhY3RseSBlcXVhbCB0byB0aGUgZ2l2ZW4gdmFsdWUuICovXG4gICAgcHVibGljIGVxdWFscyh2YWx1ZTogTGl0ZXJhbCk6IFNldDxzdHJpbmc+IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVzLmdldCh2YWx1ZSwgQlRyZWVGaWVsZEluZGV4LkVNUFRZX1NFVCk7XG4gICAgfVxuXG4gICAgLyoqIFBsYWNlaG9sZGVyIGVtcHR5IHNldC4gKi9cbiAgICBwcml2YXRlIHN0YXRpYyBFTVBUWV9TRVQgPSBuZXcgU2V0PHN0cmluZz4oKTtcbn1cbiIsICIvKiogUHJvdmlkZXMgYSBnbG9iYWwgZGlzcGF0Y2ggdGFibGUgZm9yIGV2YWx1YXRpbmcgYmluYXJ5IG9wZXJhdG9ycywgaW5jbHVkaW5nIGNvbXBhcmlzb24uICovXG5pbXBvcnQgeyBMaXRlcmFsUmVwciwgTGl0ZXJhbFR5cGUsIExpdGVyYWwsIExpdGVyYWxzLCBMaW5rIH0gZnJvbSBcImV4cHJlc3Npb24vbGl0ZXJhbFwiO1xuaW1wb3J0IHsgbm9ybWFsaXplRHVyYXRpb24gfSBmcm9tIFwidXRpbHMvbm9ybWFsaXplcnNcIjtcbmltcG9ydCB7IFJlc3VsdCB9IGZyb20gXCJhcGkvcmVzdWx0XCI7XG5pbXBvcnQgeyBCaW5hcnlPcCwgRXhwcmVzc2lvbnMgfSBmcm9tIFwiZXhwcmVzc2lvbi9leHByZXNzaW9uXCI7XG5pbXBvcnQgdHlwZSB7IEV2YWx1YXRvciB9IGZyb20gXCJleHByZXNzaW9uL2V2YWx1YXRvclwiO1xuaW1wb3J0IHsgRGF0ZVRpbWUsIER1cmF0aW9uIH0gZnJvbSBcImx1eG9uXCI7XG5pbXBvcnQgeyBTZXR0aW5ncyB9IGZyb20gXCJzZXR0aW5nc1wiO1xuaW1wb3J0IHsgRmllbGRiZWFyaW5ncyB9IGZyb20gXCIuL2ZpZWxkXCI7XG5cbi8qKiBBIGxpdGVyYWwgdHlwZSBvciBhIGNhdGNoLWFsbCAnKicuICovXG5leHBvcnQgdHlwZSBMaXRlcmFsVHlwZU9yQWxsID0gTGl0ZXJhbFR5cGUgfCBcIipcIjtcblxuLyoqIE1hcHMgYSBsaXRlcmFsIHR5cGUgb3IgdGhlIGNhdGNoLWFsbCAnKicuICovXG5leHBvcnQgdHlwZSBMaXRlcmFsUmVwckFsbDxUIGV4dGVuZHMgTGl0ZXJhbFR5cGVPckFsbD4gPSBUIGV4dGVuZHMgXCIqXCJcbiAgICA/IExpdGVyYWxcbiAgICA6IFQgZXh0ZW5kcyBMaXRlcmFsVHlwZVxuICAgID8gTGl0ZXJhbFJlcHI8VD5cbiAgICA6IGFueTtcblxuLyoqIEFuIGltcGxlbWVudGF0aW9uIGZvciBhIGJpbmFyeSBvcGVyYXRvci4gKi9cbmV4cG9ydCB0eXBlIEJpbmFyeU9wSW1wbDxBIGV4dGVuZHMgTGl0ZXJhbCwgQiBleHRlbmRzIExpdGVyYWw+ID0gKGZpcnN0OiBBLCBzZWNvbmQ6IEIsIGN0eDogRXZhbHVhdG9yKSA9PiBMaXRlcmFsO1xuLyoqIEJpbmFyeSBvcGVyYXRvciB3aGljaCBjYW4gZmFpbCBhbmQgcHJvZHVjZSBhbiBlcnJvci4gKi9cbmV4cG9ydCB0eXBlIEJpbmFyeU9wUmVzdWx0SW1wbDxBIGV4dGVuZHMgTGl0ZXJhbCwgQiBleHRlbmRzIExpdGVyYWw+ID0gKFxuICAgIGZpcnN0OiBBLFxuICAgIHNlY29uZDogQixcbiAgICBjdHg6IEV2YWx1YXRvclxuKSA9PiBSZXN1bHQ8TGl0ZXJhbCwgc3RyaW5nPjtcbi8qKiBBbiBpbXBsZW1lbnRhdGlvbiBvZiBhIGNvbXBhcmF0b3IgKHJldHVybmluZyBhIG51bWJlcikgd2hpY2ggdGhlbiBhdXRvbWF0aWNhbGx5IGRlZmluZXMgYWxsIG9mIHRoZSBjb21wYXJpc29uIG9wZXJhdG9ycy4gKi9cbmV4cG9ydCB0eXBlIENvbXBhcmVJbXBsPFQgZXh0ZW5kcyBMaXRlcmFsPiA9IChmaXJzdDogVCwgc2Vjb25kOiBULCBjdHg6IEV2YWx1YXRvcikgPT4gbnVtYmVyO1xuXG4vKiogUHJvdmlkZXMgaW1wbGVtZW50YXRpb25zIGZvciBiaW5hcnkgb3BlcmF0b3JzIG9uIHR3byB0eXBlcyB1c2luZyBhIHJlZ2lzdHJ5LiAqL1xuZXhwb3J0IGNsYXNzIEJpbmFyeU9wSGFuZGxlciB7XG4gICAgcHJpdmF0ZSBtYXA6IE1hcDxzdHJpbmcsIEJpbmFyeU9wUmVzdWx0SW1wbDxhbnksIGFueT4+O1xuICAgIHByaXZhdGUgaGFuZGxlRGVmYXVsdE51bGxzOiBib29sZWFuO1xuXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGUoKSB7XG4gICAgICAgIHJldHVybiBuZXcgQmluYXJ5T3BIYW5kbGVyKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLm1hcCA9IG5ldyBNYXAoKTtcbiAgICAgICAgdGhpcy5oYW5kbGVEZWZhdWx0TnVsbHMgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXI8VCBleHRlbmRzIExpdGVyYWxUeXBlT3JBbGwsIFUgZXh0ZW5kcyBMaXRlcmFsVHlwZU9yQWxsPihcbiAgICAgICAgbGVmdDogVCxcbiAgICAgICAgb3A6IEJpbmFyeU9wLFxuICAgICAgICByaWdodDogVSxcbiAgICAgICAgZnVuYzogQmluYXJ5T3BJbXBsPExpdGVyYWxSZXByQWxsPFQ+LCBMaXRlcmFsUmVwckFsbDxVPj5cbiAgICApOiBCaW5hcnlPcEhhbmRsZXIge1xuICAgICAgICB0aGlzLm1hcC5zZXQoQmluYXJ5T3BIYW5kbGVyLnJlcHIob3AsIGxlZnQsIHJpZ2h0KSwgKGEsIGIsIGMpID0+IFJlc3VsdC5zdWNjZXNzKGZ1bmMoYSwgYiwgYykpKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHJlZ2lzdGVyUmVzdWx0PFQgZXh0ZW5kcyBMaXRlcmFsVHlwZU9yQWxsLCBVIGV4dGVuZHMgTGl0ZXJhbFR5cGVPckFsbD4oXG4gICAgICAgIGxlZnQ6IFQsXG4gICAgICAgIG9wOiBCaW5hcnlPcCxcbiAgICAgICAgcmlnaHQ6IFUsXG4gICAgICAgIGZ1bmM6IEJpbmFyeU9wUmVzdWx0SW1wbDxMaXRlcmFsUmVwckFsbDxUPiwgTGl0ZXJhbFJlcHJBbGw8VT4+XG4gICAgKTogQmluYXJ5T3BIYW5kbGVyIHtcbiAgICAgICAgdGhpcy5tYXAuc2V0KEJpbmFyeU9wSGFuZGxlci5yZXByKG9wLCBsZWZ0LCByaWdodCksIGZ1bmMpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJDb21tPFQgZXh0ZW5kcyBMaXRlcmFsVHlwZU9yQWxsLCBVIGV4dGVuZHMgTGl0ZXJhbFR5cGVPckFsbD4oXG4gICAgICAgIGxlZnQ6IFQsXG4gICAgICAgIG9wOiBCaW5hcnlPcCxcbiAgICAgICAgcmlnaHQ6IFUsXG4gICAgICAgIGZ1bmM6IEJpbmFyeU9wSW1wbDxMaXRlcmFsUmVwckFsbDxUPiwgTGl0ZXJhbFJlcHJBbGw8VT4+XG4gICAgKTogQmluYXJ5T3BIYW5kbGVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVnaXN0ZXIobGVmdCwgb3AsIHJpZ2h0LCBmdW5jKS5yZWdpc3RlcihyaWdodCwgb3AsIGxlZnQsIChhLCBiLCBjdHgpID0+IGZ1bmMoYiwgYSwgY3R4KSk7XG4gICAgfVxuXG4gICAgLyoqIElmIGVuYWJsZWQsIGFsbCBudWxsIChvcCkgbnVsbCBvcGVyYXRpb25zIHByb2R1Y2UgbnVsbC4gKi9cbiAgICBwdWJsaWMgd2l0aERlZmF1bHROdWxsSGFuZGxpbmcoKTogQmluYXJ5T3BIYW5kbGVyIHtcbiAgICAgICAgdGhpcy5oYW5kbGVEZWZhdWx0TnVsbHMgPSB0cnVlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKiogSW1wbGVtZW50IGEgY29tcGFyaXNvbiBmdW5jdGlvbi4gKi9cbiAgICBwdWJsaWMgY29tcGFyZTxUIGV4dGVuZHMgTGl0ZXJhbFR5cGVPckFsbD4odHlwZTogVCwgY29tcGFyZTogQ29tcGFyZUltcGw8TGl0ZXJhbFJlcHJBbGw8VD4+KTogQmluYXJ5T3BIYW5kbGVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVnaXN0ZXIodHlwZSwgXCI8XCIsIHR5cGUsIChhLCBiLCBjdHgpID0+IGNvbXBhcmUoYSwgYiwgY3R4KSA8IDApXG4gICAgICAgICAgICAucmVnaXN0ZXIodHlwZSwgXCI8PVwiLCB0eXBlLCAoYSwgYiwgY3R4KSA9PiBjb21wYXJlKGEsIGIsIGN0eCkgPD0gMClcbiAgICAgICAgICAgIC5yZWdpc3Rlcih0eXBlLCBcIj5cIiwgdHlwZSwgKGEsIGIsIGN0eCkgPT4gY29tcGFyZShhLCBiLCBjdHgpID4gMClcbiAgICAgICAgICAgIC5yZWdpc3Rlcih0eXBlLCBcIj49XCIsIHR5cGUsIChhLCBiLCBjdHgpID0+IGNvbXBhcmUoYSwgYiwgY3R4KSA+PSAwKVxuICAgICAgICAgICAgLnJlZ2lzdGVyKHR5cGUsIFwiPVwiLCB0eXBlLCAoYSwgYiwgY3R4KSA9PiBjb21wYXJlKGEsIGIsIGN0eCkgPT0gMClcbiAgICAgICAgICAgIC5yZWdpc3Rlcih0eXBlLCBcIiE9XCIsIHR5cGUsIChhLCBiLCBjdHgpID0+IGNvbXBhcmUoYSwgYiwgY3R4KSAhPSAwKTtcbiAgICB9XG5cbiAgICAvKiogQXR0ZW1wdCB0byBldmFsdWF0ZSB0aGUgZ2l2ZW4gYmluYXJ5IG9wZXJhdG9yIG9uIHRoZSB0d28gbGl0ZXJhbCBmaWVsZHMuICovXG4gICAgcHVibGljIGV2YWx1YXRlKG9wOiBCaW5hcnlPcCwgbGVmdDogTGl0ZXJhbCwgcmlnaHQ6IExpdGVyYWwsIGN0eDogRXZhbHVhdG9yKTogUmVzdWx0PExpdGVyYWwsIHN0cmluZz4ge1xuICAgICAgICBsZXQgbGVmdFR5cGUgPSBMaXRlcmFscy50eXBlT2YobGVmdCk7XG4gICAgICAgIGxldCByaWdodFR5cGUgPSBMaXRlcmFscy50eXBlT2YocmlnaHQpO1xuICAgICAgICBpZiAoIWxlZnRUeXBlKSByZXR1cm4gUmVzdWx0LmZhaWx1cmUoYFVucmVjb2duaXplZCB2YWx1ZSAnJHtsZWZ0fSdgKTtcbiAgICAgICAgZWxzZSBpZiAoIXJpZ2h0VHlwZSkgcmV0dXJuIFJlc3VsdC5mYWlsdXJlKGBVbnJlY29nbml6ZWQgdmFsdWUgJyR7cmlnaHR9J2ApO1xuXG4gICAgICAgIC8vIFF1aWNrIGNhc2U6IGhhbmRsZSBudWxsIChvcCkgbnVsbCBieSBkZWZhdWx0IGlmIGVuYWJsZWQuXG4gICAgICAgIGlmICh0aGlzLmhhbmRsZURlZmF1bHROdWxscyAmJiBsZWZ0VHlwZSA9PT0gXCJudWxsXCIgJiYgcmlnaHRUeXBlID09PSBcIm51bGxcIikgcmV0dXJuIFJlc3VsdC5zdWNjZXNzKG51bGwpO1xuXG4gICAgICAgIGxldCBoYW5kbGVyID0gdGhpcy5tYXAuZ2V0KEJpbmFyeU9wSGFuZGxlci5yZXByKG9wLCBsZWZ0VHlwZSwgcmlnaHRUeXBlKSk7XG4gICAgICAgIGlmIChoYW5kbGVyKSByZXR1cm4gaGFuZGxlcihsZWZ0LCByaWdodCwgY3R4KTtcblxuICAgICAgICAvLyBSaWdodC0nKicgZmFsbGJhY2s6XG4gICAgICAgIGxldCBoYW5kbGVyMiA9IHRoaXMubWFwLmdldChCaW5hcnlPcEhhbmRsZXIucmVwcihvcCwgbGVmdFR5cGUsIFwiKlwiKSk7XG4gICAgICAgIGlmIChoYW5kbGVyMikgcmV0dXJuIGhhbmRsZXIyKGxlZnQsIHJpZ2h0LCBjdHgpO1xuXG4gICAgICAgIC8vIExlZnQtJyonIGZhbGxiYWNrOlxuICAgICAgICBsZXQgaGFuZGxlcjMgPSB0aGlzLm1hcC5nZXQoQmluYXJ5T3BIYW5kbGVyLnJlcHIob3AsIFwiKlwiLCByaWdodFR5cGUpKTtcbiAgICAgICAgaWYgKGhhbmRsZXIzKSByZXR1cm4gaGFuZGxlcjMobGVmdCwgcmlnaHQsIGN0eCk7XG5cbiAgICAgICAgLy8gRG91YmxlICcqJyBmYWxsYmFjay5cbiAgICAgICAgbGV0IGhhbmRsZXI0ID0gdGhpcy5tYXAuZ2V0KEJpbmFyeU9wSGFuZGxlci5yZXByKG9wLCBcIipcIiwgXCIqXCIpKTtcbiAgICAgICAgaWYgKGhhbmRsZXI0KSByZXR1cm4gaGFuZGxlcjQobGVmdCwgcmlnaHQsIGN0eCk7XG5cbiAgICAgICAgcmV0dXJuIFJlc3VsdC5mYWlsdXJlKGBObyBpbXBsZW1lbnRhdGlvbiBmb3VuZCBmb3IgJyR7bGVmdFR5cGV9ICR7b3B9ICR7cmlnaHRUeXBlfSdgKTtcbiAgICB9XG5cbiAgICAvKiogQ3JlYXRlIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBnaXZlbiB0cmlwbGV0IGZvciB1bmlxdWUgbG9va3VwIGluIHRoZSBtYXAuICovXG4gICAgcHVibGljIHN0YXRpYyByZXByKG9wOiBCaW5hcnlPcCwgbGVmdDogTGl0ZXJhbFR5cGVPckFsbCwgcmlnaHQ6IExpdGVyYWxUeXBlT3JBbGwpIHtcbiAgICAgICAgcmV0dXJuIGAke2xlZnR9LCR7b3B9LCR7cmlnaHR9YDtcbiAgICB9XG59XG5cbi8qKiBDb25maWd1cmUgYW5kIGNyZWF0ZSBhIGJpbmFyeSBPUCBoYW5kbGVyIHdpdGggdGhlIGdpdmVuIHBhcmFtZXRlcnMuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQmluYXJ5T3BzKGxpbmtOb3JtYWxpemVyOiAoeDogc3RyaW5nKSA9PiBzdHJpbmcpOiBCaW5hcnlPcEhhbmRsZXIge1xuICAgIHJldHVybiAoXG4gICAgICAgIEJpbmFyeU9wSGFuZGxlci5jcmVhdGUoKVxuICAgICAgICAgICAgLmNvbXBhcmUoXCIqXCIsIChhLCBiKSA9PiBMaXRlcmFscy5jb21wYXJlKGEsIGIsIGxpbmtOb3JtYWxpemVyKSlcbiAgICAgICAgICAgIC8vIEdsb2JhbCBib29sZWFuIG9wZXJhdGlvbnMuXG4gICAgICAgICAgICAucmVnaXN0ZXIoXCIqXCIsIFwiJlwiLCBcIipcIiwgKGEsIGIpID0+IExpdGVyYWxzLmlzVHJ1dGh5KGEpICYmIExpdGVyYWxzLmlzVHJ1dGh5KGIpKVxuICAgICAgICAgICAgLnJlZ2lzdGVyKFwiKlwiLCBcInxcIiwgXCIqXCIsIChhLCBiKSA9PiBMaXRlcmFscy5pc1RydXRoeShhKSB8fCBMaXRlcmFscy5pc1RydXRoeShiKSlcbiAgICAgICAgICAgIC8vIE51bWJlciBpbXBsZW1lbnRhdGlvbnMuXG4gICAgICAgICAgICAucmVnaXN0ZXIoXCJudW1iZXJcIiwgXCIrXCIsIFwibnVtYmVyXCIsIChhLCBiKSA9PiBhICsgYilcbiAgICAgICAgICAgIC5yZWdpc3RlcihcIm51bWJlclwiLCBcIi1cIiwgXCJudW1iZXJcIiwgKGEsIGIpID0+IGEgLSBiKVxuICAgICAgICAgICAgLnJlZ2lzdGVyKFwibnVtYmVyXCIsIFwiKlwiLCBcIm51bWJlclwiLCAoYSwgYikgPT4gYSAqIGIpXG4gICAgICAgICAgICAucmVnaXN0ZXIoXCJudW1iZXJcIiwgXCIvXCIsIFwibnVtYmVyXCIsIChhLCBiKSA9PiBhIC8gYilcbiAgICAgICAgICAgIC5yZWdpc3RlcihcIm51bWJlclwiLCBcIiVcIiwgXCJudW1iZXJcIiwgKGEsIGIpID0+IGEgJSBiKVxuICAgICAgICAgICAgLy8gU3RyaW5nIGltcGxlbWVudGF0aW9ucy5cbiAgICAgICAgICAgIC5yZWdpc3RlcihcInN0cmluZ1wiLCBcIitcIiwgXCIqXCIsIChhLCBiLCBjdHgpID0+IGEgKyBMaXRlcmFscy50b1N0cmluZyhiLCBzdHJpbmdTZXR0aW5ncyhjdHguc2V0dGluZ3MpKSlcbiAgICAgICAgICAgIC5yZWdpc3RlcihcIipcIiwgXCIrXCIsIFwic3RyaW5nXCIsIChhLCBiLCBjdHgpID0+IExpdGVyYWxzLnRvU3RyaW5nKGEsIHN0cmluZ1NldHRpbmdzKGN0eC5zZXR0aW5ncykpICsgYilcbiAgICAgICAgICAgIC5yZWdpc3RlckNvbW0oXCJzdHJpbmdcIiwgXCIqXCIsIFwibnVtYmVyXCIsIChhLCBiKSA9PiAoYiA8IDAgPyBcIlwiIDogYS5yZXBlYXQoYikpKVxuICAgICAgICAgICAgLy8gRGF0ZSBPcGVyYXRpb25zLlxuICAgICAgICAgICAgLnJlZ2lzdGVyKFwiZGF0ZVwiLCBcIi1cIiwgXCJkYXRlXCIsIChhLCBiKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZUR1cmF0aW9uKFxuICAgICAgICAgICAgICAgICAgICBhLmRpZmYoYiwgW1wieWVhcnNcIiwgXCJtb250aHNcIiwgXCJkYXlzXCIsIFwiaG91cnNcIiwgXCJtaW51dGVzXCIsIFwic2Vjb25kc1wiLCBcIm1pbGxpc2Vjb25kc1wiXSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5yZWdpc3RlcihcImRhdGVcIiwgXCItXCIsIFwiZHVyYXRpb25cIiwgKGEsIGIpID0+IGEubWludXMoYikpXG4gICAgICAgICAgICAucmVnaXN0ZXJDb21tKFwiZGF0ZVwiLCBcIitcIiwgXCJkdXJhdGlvblwiLCAoYSwgYikgPT4gYS5wbHVzKGIpKVxuICAgICAgICAgICAgLy8gRHVyYXRpb24gT3BlcmF0aW9ucy5cbiAgICAgICAgICAgIC5yZWdpc3RlcihcImR1cmF0aW9uXCIsIFwiK1wiLCBcImR1cmF0aW9uXCIsIChhLCBiKSA9PiBub3JtYWxpemVEdXJhdGlvbihhLnBsdXMoYikpKVxuICAgICAgICAgICAgLnJlZ2lzdGVyKFwiZHVyYXRpb25cIiwgXCItXCIsIFwiZHVyYXRpb25cIiwgKGEsIGIpID0+IG5vcm1hbGl6ZUR1cmF0aW9uKGEubWludXMoYikpKVxuICAgICAgICAgICAgLnJlZ2lzdGVyKFwiZHVyYXRpb25cIiwgXCIvXCIsIFwibnVtYmVyXCIsIChhLCBiKSA9PiBub3JtYWxpemVEdXJhdGlvbihhLm1hcFVuaXRzKCh4KSA9PiB4IC8gYikpKVxuICAgICAgICAgICAgLnJlZ2lzdGVyQ29tbShcImR1cmF0aW9uXCIsIFwiKlwiLCBcIm51bWJlclwiLCAoYSwgYikgPT4gbm9ybWFsaXplRHVyYXRpb24oYS5tYXBVbml0cygoeCkgPT4geCAqIGIpKSlcbiAgICAgICAgICAgIC8vIEFycmF5IG9wZXJhdGlvbnMuXG4gICAgICAgICAgICAucmVnaXN0ZXIoXCJhcnJheVwiLCBcIitcIiwgXCJhcnJheVwiLCAoYSwgYikgPT4gKFtdIGFzIExpdGVyYWxbXSkuY29uY2F0KGEpLmNvbmNhdChiKSlcbiAgICAgICAgICAgIC8vIE9iamVjdCBvcGVyYXRpb25zLlxuICAgICAgICAgICAgLnJlZ2lzdGVyKFwib2JqZWN0XCIsIFwiK1wiLCBcIm9iamVjdFwiLCAoYSwgYikgPT4gT2JqZWN0LmFzc2lnbih7fSwgYSwgYikpXG4gICAgICAgICAgICAvLyBJbmRleCBvcGVyYXRpb25zLlxuICAgICAgICAgICAgLnJlZ2lzdGVyKFwiYXJyYXlcIiwgXCJpbmRleFwiLCBcIm51bWJlclwiLCAoYXJyLCBpZHgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaWR4IDwgMCB8fCBpZHggPj0gYXJyLmxlbmd0aCkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFycltpZHhdO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5yZWdpc3RlclJlc3VsdChcImFycmF5XCIsIFwiaW5kZXhcIiwgXCJzdHJpbmdcIiwgKGFyciwga2V5LCBjb250ZXh0KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGFyci5sZW5ndGggPT0gMCkgcmV0dXJuIFJlc3VsdC5zdWNjZXNzKFtdKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiBhcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzb2x2ZWQgPSBjb250ZXh0LmV2YWx1YXRlKFxuICAgICAgICAgICAgICAgICAgICAgICAgRXhwcmVzc2lvbnMuaW5kZXgoRXhwcmVzc2lvbnMubGl0ZXJhbChlbGVtZW50KSwgRXhwcmVzc2lvbnMubGl0ZXJhbChrZXkpKVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXJlc29sdmVkLnN1Y2Nlc3NmdWwpIHJldHVybiBSZXN1bHQuZmFpbHVyZShyZXNvbHZlZC5lcnJvcik7XG5cbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gocmVzb2x2ZWQudmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBSZXN1bHQuc3VjY2VzcyhyZXN1bHQpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5yZWdpc3RlcihcIm9iamVjdFwiLCBcImluZGV4XCIsIFwic3RyaW5nXCIsIChvYmosIGtleSkgPT4gRmllbGRiZWFyaW5ncy5nZXQob2JqLCBrZXkpID8/IG51bGwpXG4gICAgICAgICAgICAucmVnaXN0ZXJSZXN1bHQoXCJsaW5rXCIsIFwiaW5kZXhcIiwgXCJzdHJpbmdcIiwgaW5kZXhMaW5rKVxuICAgICAgICAgICAgLnJlZ2lzdGVyUmVzdWx0KFwibGlua1wiLCBcImluZGV4XCIsIFwibnVtYmVyXCIsIGluZGV4TGluaylcbiAgICAgICAgICAgIC5yZWdpc3RlcihcIm9iamVjdFwiLCBcImluZGV4XCIsIFwibnVtYmVyXCIsIChvYmosIGtleSkgPT4gb2JqW2tleV0gPz8gbnVsbClcbiAgICAgICAgICAgIC5yZWdpc3RlcihcInN0cmluZ1wiLCBcImluZGV4XCIsIFwibnVtYmVyXCIsIChzdHIsIGlkeCkgPT4gKGlkeCA8IDAgfHwgaWR4ID49IHN0ci5sZW5ndGggPyBudWxsIDogc3RyW2lkeF0pKVxuICAgICAgICAgICAgLnJlZ2lzdGVyKFwiZGF0ZVwiLCBcImluZGV4XCIsIFwic3RyaW5nXCIsIGluZGV4RGF0ZSlcbiAgICAgICAgICAgIC5yZWdpc3RlcihcImR1cmF0aW9uXCIsIFwiaW5kZXhcIiwgXCJzdHJpbmdcIiwgaW5kZXhEdXJhdGlvbilcbiAgICAgICAgICAgIC53aXRoRGVmYXVsdE51bGxIYW5kbGluZygpXG4gICAgKTtcbn1cblxuLyoqIENvbnZlcnQgaGlnaCBsZXZlbCBzZXR0aW5ncyB0byBzZXR0aW5ncyB1c2VkIGZvciBzdHJpbmcgcmVuZGVyaW5nLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZ1NldHRpbmdzKHNldHRpbmdzOiBTZXR0aW5ncyk6IExpdGVyYWxzLlRvU3RyaW5nU2V0dGluZ3Mge1xuICAgIHJldHVybiB7XG4gICAgICAgIGRhdGVGb3JtYXQ6IHNldHRpbmdzLmRlZmF1bHREYXRlRm9ybWF0LFxuICAgICAgICBkYXRlVGltZUZvcm1hdDogc2V0dGluZ3MuZGVmYXVsdERhdGVUaW1lRm9ybWF0LFxuICAgICAgICBudWxsUmVwcmVzZW50YXRpb246IHNldHRpbmdzLnJlbmRlck51bGxBcyxcbiAgICB9O1xufVxuXG4vKiogQWxsb3dzIHlvdSB0byBpbmRleCBpbnRvIGxpbmtzIHRvIGdldCBtZXRhZGF0YS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbmRleExpbmsobGluazogTGluaywga2V5OiBzdHJpbmcgfCBudW1iZXIsIGNvbnRleHQ6IEV2YWx1YXRvcik6IFJlc3VsdDxMaXRlcmFsLCBzdHJpbmc+IHtcbiAgICBjb25zdCBvYmplY3QgPSBjb250ZXh0LmxpbmtIYW5kbGVyLnJlc29sdmUobGluayk7XG4gICAgaWYgKCFvYmplY3QpIHJldHVybiBSZXN1bHQuc3VjY2VzcyhudWxsKTtcblxuICAgIHJldHVybiBjb250ZXh0LmV2YWx1YXRlKEV4cHJlc3Npb25zLmluZGV4KEV4cHJlc3Npb25zLmxpdGVyYWwob2JqZWN0KSwgRXhwcmVzc2lvbnMubGl0ZXJhbChrZXkpKSk7XG59XG5cbi8qKiBJbmRleCBpbnRvIGEgZGF0ZSwgcHJvZHVjaW5nIHZhcmlvdXMgdXNlZnVsIGZpZWxkcy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbmRleERhdGUoZGF0ZTogRGF0ZVRpbWUsIGtleTogc3RyaW5nKSB7XG4gICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgY2FzZSBcInllYXJcIjpcbiAgICAgICAgICAgIHJldHVybiBkYXRlLnllYXI7XG4gICAgICAgIGNhc2UgXCJtb250aFwiOlxuICAgICAgICAgICAgcmV0dXJuIGRhdGUubW9udGg7XG4gICAgICAgIGNhc2UgXCJkYXlcIjpcbiAgICAgICAgICAgIHJldHVybiBkYXRlLmRheTtcbiAgICAgICAgY2FzZSBcImhvdXJcIjpcbiAgICAgICAgICAgIHJldHVybiBkYXRlLmhvdXI7XG4gICAgICAgIGNhc2UgXCJtaW51dGVcIjpcbiAgICAgICAgICAgIHJldHVybiBkYXRlLm1pbnV0ZTtcbiAgICAgICAgY2FzZSBcInNlY29uZFwiOlxuICAgICAgICAgICAgcmV0dXJuIGRhdGUuc2Vjb25kO1xuICAgICAgICBjYXNlIFwibWlsbGlzZWNvbmRcIjpcbiAgICAgICAgICAgIHJldHVybiBkYXRlLm1pbGxpc2Vjb25kO1xuICAgICAgICBjYXNlIFwid2Vla1wiOlxuICAgICAgICAgICAgcmV0dXJuIGRhdGUud2Vla051bWJlcjtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbn1cblxuLyoqIEluZGV4IGludG8gYSBkdXJhdGlvbiwgcHJvZHVjaW5nIHZhcmlvdXMgdXNlZnVsIGZpZWxkcy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbmRleER1cmF0aW9uKGR1cjogRHVyYXRpb24sIGtleTogc3RyaW5nKSB7XG4gICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgY2FzZSBcInllYXJzXCI6XG4gICAgICAgICAgICByZXR1cm4gZHVyLnllYXJzO1xuICAgICAgICBjYXNlIFwibW9udGhzXCI6XG4gICAgICAgICAgICByZXR1cm4gZHVyLm1vbnRocztcbiAgICAgICAgY2FzZSBcImRheXNcIjpcbiAgICAgICAgICAgIHJldHVybiBkdXIuZGF5cztcbiAgICAgICAgY2FzZSBcImhvdXJzXCI6XG4gICAgICAgICAgICByZXR1cm4gZHVyLmhvdXJzO1xuICAgICAgICBjYXNlIFwibWludXRlc1wiOlxuICAgICAgICAgICAgcmV0dXJuIGR1ci5taW51dGVzO1xuICAgICAgICBjYXNlIFwic2Vjb25kc1wiOlxuICAgICAgICAgICAgcmV0dXJuIGR1ci5zZWNvbmRzO1xuICAgICAgICBjYXNlIFwibWlsbGlzZWNvbmRzXCI6XG4gICAgICAgICAgICByZXR1cm4gZHVyLm1pbGxpc2Vjb25kcztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbn1cbiIsICIvKiogRGVmYXVsdCBmdW5jdGlvbiBpbXBsZW1lbnRhdGlvbnMgZm9yIHRoZSBleHByZXNzaW9uIGV2YWx1YXRvci4gKi9cblxuaW1wb3J0IHsgRGF0ZVRpbWUgfSBmcm9tIFwibHV4b25cIjtcbmltcG9ydCB7IExpdGVyYWxUeXBlLCBMaW5rLCBMaXRlcmFsLCBMaXRlcmFscyB9IGZyb20gXCJleHByZXNzaW9uL2xpdGVyYWxcIjtcbmltcG9ydCB7IGVzY2FwZVJlZ2V4LCBjdXJyZW50TG9jYWxlIH0gZnJvbSBcInV0aWxzL25vcm1hbGl6ZXJzXCI7XG5pbXBvcnQgeyBMaXRlcmFsUmVwckFsbCwgTGl0ZXJhbFR5cGVPckFsbCwgc3RyaW5nU2V0dGluZ3MgfSBmcm9tIFwiZXhwcmVzc2lvbi9iaW5hcnlvcFwiO1xuaW1wb3J0IHsgRXZhbHVhdG9yIH0gZnJvbSBcImV4cHJlc3Npb24vZXZhbHVhdG9yXCI7XG5pbXBvcnQgeyBFeHByZXNzaW9ucyB9IGZyb20gXCJleHByZXNzaW9uL2V4cHJlc3Npb25cIjtcbmltcG9ydCB7IFBSSU1JVElWRVMgfSBmcm9tIFwiZXhwcmVzc2lvbi9wYXJzZXJcIjtcblxuLyoqXG4gKiBBIGZ1bmN0aW9uIGltcGxlbWVudGF0aW9uIHdoaWNoIHRha2VzIGluIGEgZnVuY3Rpb24gY29udGV4dCBhbmQgYSB2YXJpYWJsZSBudW1iZXIgb2YgYXJndW1lbnRzLiBUaHJvd3MgYW4gZXJyb3IgaWYgYW5cbiAqIGludmFsaWQgbnVtYmVyL3R5cGUgb2YgYXJndW1lbnRzIGFyZSBwYXNzZWQuXG4gKi9cbmV4cG9ydCB0eXBlIEZ1bmN0aW9uSW1wbCA9IChjb250ZXh0OiBFdmFsdWF0b3IsIC4uLnJlc3Q6IExpdGVyYWxbXSkgPT4gTGl0ZXJhbDtcbi8qKiBBIFwiYm91bmRcIiBmdW5jdGlvbiBpbXBsZW1lbnRhdGlvbiB3aGljaCBoYXMgYWxyZWFkeSBoYWQgYSBmdW5jdGlvbiBjb250ZXh0IHBhc3NlZCB0byBpdC4gKi9cbmV4cG9ydCB0eXBlIEJvdW5kRnVuY3Rpb25JbXBsID0gKC4uLmFyZ3M6IExpdGVyYWxbXSkgPT4gTGl0ZXJhbDtcblxuLyoqIEEgZnVuY3Rpb24gdmFyaWFudCB1c2VkIGluIHRoZSBmdW5jdGlvbiBidWlsZGVyIHdoaWNoIGhvbGRzIHRoZSBhcmd1bWVudCB0eXBlcy4gKi9cbmludGVyZmFjZSBGdW5jdGlvblZhcmlhbnQge1xuICAgIGFyZ3M6IExpdGVyYWxUeXBlT3JBbGxbXTtcbiAgICB2YXJhcmdzOiBib29sZWFuO1xuICAgIC8qKiBUaGUgaW1wbGVtZW50aW5nIGZ1bmN0aW9uIGZvciB0aGlzIHNwZWNpZmljIHZhcmlhbnQuICovXG4gICAgaW1wbDogRnVuY3Rpb25JbXBsO1xufVxuXG4vKipcbiAqIEFsbG93cyBmb3IgdGhlIGNyZWF0aW9uIG9mIGZ1bmN0aW9ucyB0aGF0IGNoZWNrIHRoZSBudW1iZXIgYW5kIHR5cGUgb2YgdGhlaXIgYXJndW1lbnRzLCBhbmQgZGlzcGF0Y2hcbiAqIHRvIGRpZmZlcmVudCBpbXBsZW1lbmF0aW9ucyBiYXNlZCBvbiB0aGUgdHlwZXMgb2YgdGhlIGlucHV0cy5cbiAqL1xuZXhwb3J0IGNsYXNzIEZ1bmN0aW9uQnVpbGRlciB7XG4gICAgdmFyaWFudHM6IEZ1bmN0aW9uVmFyaWFudFtdO1xuICAgIHZlY3Rvcml6ZWQ6IFJlY29yZDxudW1iZXIsIG51bWJlcltdPjtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihwdWJsaWMgbmFtZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMudmFyaWFudHMgPSBbXTtcbiAgICAgICAgdGhpcy52ZWN0b3JpemVkID0ge307XG4gICAgfVxuXG4gICAgLyoqIEFkZCBhIGdlbmVyYWwgZnVuY3Rpb24gdmFyaWFudCB3aGljaCBhY2NlcHRzIGFueSBudW1iZXIgb2YgYXJndW1lbnRzIG9mIGFueSB0eXBlLiAqL1xuICAgIHB1YmxpYyB2YXJhcmcoaW1wbDogRnVuY3Rpb25JbXBsKTogRnVuY3Rpb25CdWlsZGVyIHtcbiAgICAgICAgdGhpcy52YXJpYW50cy5wdXNoKHsgYXJnczogW10sIHZhcmFyZ3M6IHRydWUsIGltcGwgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKiBBZGQgYSBmdW5jdGlvbiB2YXJpYW50IHdoaWNoIHRha2VzIGluIGEgc2luZ2xlIGFyZ3VtZW50LiAqL1xuICAgIHB1YmxpYyBhZGQxPFQgZXh0ZW5kcyBMaXRlcmFsVHlwZU9yQWxsPihcbiAgICAgICAgYXJnVHlwZTogVCxcbiAgICAgICAgaW1wbDogKGE6IExpdGVyYWxSZXByQWxsPFQ+LCBjb250ZXh0OiBFdmFsdWF0b3IpID0+IExpdGVyYWxcbiAgICApOiBGdW5jdGlvbkJ1aWxkZXIge1xuICAgICAgICB0aGlzLnZhcmlhbnRzLnB1c2goe1xuICAgICAgICAgICAgYXJnczogW2FyZ1R5cGVdLFxuICAgICAgICAgICAgdmFyYXJnczogZmFsc2UsXG4gICAgICAgICAgICBpbXBsOiAoYywgLi4ucmVzdCkgPT4gaW1wbChyZXN0WzBdIGFzIExpdGVyYWxSZXByQWxsPFQ+LCBjKSxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKiBBZGQgYSBmdW5jdGlvbiB2YXJpYW50IHdoaWNoIHRha2VzIGluIHR3byB0eXBlZCBhcmd1bWVudHMuICovXG4gICAgcHVibGljIGFkZDI8VCBleHRlbmRzIExpdGVyYWxUeXBlT3JBbGwsIFUgZXh0ZW5kcyBMaXRlcmFsVHlwZU9yQWxsPihcbiAgICAgICAgYXJnMTogVCxcbiAgICAgICAgYXJnMjogVSxcbiAgICAgICAgaW1wbDogKGE6IExpdGVyYWxSZXByQWxsPFQ+LCBiOiBMaXRlcmFsUmVwckFsbDxVPiwgY29udGV4dDogRXZhbHVhdG9yKSA9PiBMaXRlcmFsXG4gICAgKTogRnVuY3Rpb25CdWlsZGVyIHtcbiAgICAgICAgdGhpcy52YXJpYW50cy5wdXNoKHtcbiAgICAgICAgICAgIGFyZ3M6IFthcmcxLCBhcmcyXSxcbiAgICAgICAgICAgIHZhcmFyZ3M6IGZhbHNlLFxuICAgICAgICAgICAgaW1wbDogKGMsIC4uLnJlc3QpID0+IGltcGwocmVzdFswXSBhcyBMaXRlcmFsUmVwckFsbDxUPiwgcmVzdFsxXSBhcyBMaXRlcmFsUmVwckFsbDxVPiwgYyksXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKiogQWRkIGEgZnVuY3Rpb24gdmFyaWFudCB3aGljaCB0YWtlcyBpbiB0aHJlZSB0eXBlZCBhcmd1bWVudHMuICovXG4gICAgcHVibGljIGFkZDM8VCBleHRlbmRzIExpdGVyYWxUeXBlT3JBbGwsIFUgZXh0ZW5kcyBMaXRlcmFsVHlwZU9yQWxsLCBWIGV4dGVuZHMgTGl0ZXJhbFR5cGVPckFsbD4oXG4gICAgICAgIGFyZzE6IFQsXG4gICAgICAgIGFyZzI6IFUsXG4gICAgICAgIGFyZzM6IFYsXG4gICAgICAgIGltcGw6IChhOiBMaXRlcmFsUmVwckFsbDxUPiwgYjogTGl0ZXJhbFJlcHJBbGw8VT4sIGM6IExpdGVyYWxSZXByQWxsPFY+LCBjb250ZXh0OiBFdmFsdWF0b3IpID0+IExpdGVyYWxcbiAgICApOiBGdW5jdGlvbkJ1aWxkZXIge1xuICAgICAgICB0aGlzLnZhcmlhbnRzLnB1c2goe1xuICAgICAgICAgICAgYXJnczogW2FyZzEsIGFyZzIsIGFyZzNdLFxuICAgICAgICAgICAgdmFyYXJnczogZmFsc2UsXG4gICAgICAgICAgICBpbXBsOiAoYywgLi4ucmVzdCkgPT5cbiAgICAgICAgICAgICAgICBpbXBsKHJlc3RbMF0gYXMgTGl0ZXJhbFJlcHJBbGw8VD4sIHJlc3RbMV0gYXMgTGl0ZXJhbFJlcHJBbGw8VT4sIHJlc3RbMl0gYXMgTGl0ZXJhbFJlcHJBbGw8Vj4sIGMpLFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqIEFkZCB2ZWN0b3JpemVkIHZhcmlhbnRzIHdoaWNoIGFjY2VwdCB0aGUgZ2l2ZW4gbnVtYmVyIG9mIGFyZ3VtZW50cyBhbmQgZGVsZWdhdGUuICovXG4gICAgcHVibGljIHZlY3Rvcml6ZShudW1BcmdzOiBudW1iZXIsIHBvc2l0aW9uczogbnVtYmVyW10pOiBGdW5jdGlvbkJ1aWxkZXIge1xuICAgICAgICB0aGlzLnZlY3Rvcml6ZWRbbnVtQXJnc10gPSBwb3NpdGlvbnM7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKiBSZXR1cm4gYSBmdW5jdGlvbiB3aGljaCBjaGVja3MgdGhlIG51bWJlciBhbmQgdHlwZSBvZiBhcmd1bWVudHMsIHBhc3NpbmcgdGhlbSBvbiB0byB0aGUgZmlyc3QgbWF0Y2hpbmcgdmFyaWFudC4gKi9cbiAgICBwdWJsaWMgYnVpbGQoKTogRnVuY3Rpb25JbXBsIHtcbiAgICAgICAgbGV0IHNlbGY6IEZ1bmN0aW9uSW1wbCA9IChjb250ZXh0OiBFdmFsdWF0b3IsIC4uLmFyZ3M6IExpdGVyYWxbXSkgPT4ge1xuICAgICAgICAgICAgbGV0IHR5cGVzOiBMaXRlcmFsVHlwZVtdID0gW107XG4gICAgICAgICAgICBmb3IgKGxldCBhcmcgb2YgYXJncykge1xuICAgICAgICAgICAgICAgIGxldCBhcmdUeXBlID0gTGl0ZXJhbHMudHlwZU9mKGFyZyk7XG4gICAgICAgICAgICAgICAgaWYgKCFhcmdUeXBlKSB0aHJvdyBFcnJvcihgVW5yZWNvZ25pemVkIGFyZ3VtZW50IHR5cGUgZm9yIGFyZ3VtZW50ICcke2FyZ30nYCk7XG4gICAgICAgICAgICAgICAgdHlwZXMucHVzaChhcmdUeXBlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gSGFuZGxlIHZlY3Rvcml6YXRpb24sIHBvc3NpYmx5IGluIG11bHRpcGxlIGZpZWxkcy5cbiAgICAgICAgICAgIGlmICh0aGlzLnZlY3Rvcml6ZWRbdHlwZXMubGVuZ3RoXSkge1xuICAgICAgICAgICAgICAgIGxldCB2ZWN0b3JpemVkUG9zaXRpb25zID0gdGhpcy52ZWN0b3JpemVkW3R5cGVzLmxlbmd0aF0uZmlsdGVyKChrKSA9PiB0eXBlc1trXSA9PSBcImFycmF5XCIpO1xuICAgICAgICAgICAgICAgIGlmICh2ZWN0b3JpemVkUG9zaXRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG1pbkxlbmd0aCA9IHZlY3Rvcml6ZWRQb3NpdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKHApID0+IChhcmdzW3BdIGFzIGFueVtdKS5sZW5ndGgpXG4gICAgICAgICAgICAgICAgICAgICAgICAucmVkdWNlKChwLCBjKSA9PiBNYXRoLm1pbihwLCBjKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gQ2FsbCB0aGUgc3ViZnVuY3Rpb24gZm9yIGVhY2ggZWxlbWVudCBpbiB0aGUgbG9uZ2VzdCBhcnJheS5cbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgeW91IGNhbGwgYSB2ZWN0b3JpemVkIGZ1bmN0aW9uIHdpdGggZGlmZmVyZW50LWxlbmd0aCBhcnJheXMsXG4gICAgICAgICAgICAgICAgICAgIC8vIHRoZSBvdXRwdXQgaXMgbGltaXRlZCBieSB0aGUgbGVuZ3RoIG9mIHRoZSBzaG9ydGVzdCBhcnJheS5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCB2cG9zID0gMDsgdnBvcyA8IG1pbkxlbmd0aDsgdnBvcysrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgc3ViYXJncyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGFyZ3MubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZlY3Rvcml6ZWRQb3NpdGlvbnMuaW5jbHVkZXMoaW5kZXgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBhcnIgPSBhcmdzW2luZGV4XSBhcyBhbnlbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViYXJncy5wdXNoKGFyclt2cG9zXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViYXJncy5wdXNoKGFyZ3NbaW5kZXhdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHNlbGYoY29udGV4dCwgLi4uc3ViYXJncykpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIG91dGVyOiBmb3IgKGxldCB2YXJpYW50IG9mIHRoaXMudmFyaWFudHMpIHtcbiAgICAgICAgICAgICAgICBpZiAodmFyaWFudC52YXJhcmdzKSByZXR1cm4gdmFyaWFudC5pbXBsKGNvbnRleHQsIC4uLmFyZ3MpO1xuICAgICAgICAgICAgICAgIGlmICh2YXJpYW50LmFyZ3MubGVuZ3RoICE9IHR5cGVzLmxlbmd0aCkgY29udGludWU7XG5cbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdmFyaWFudC5hcmdzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgICAgICAgICAgICBpZiAodmFyaWFudC5hcmdzW2luZGV4XSAhPSBcIipcIiAmJiB2YXJpYW50LmFyZ3NbaW5kZXhdICE9IHR5cGVzW2luZGV4XSkgY29udGludWUgb3V0ZXI7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhcmlhbnQuaW1wbChjb250ZXh0LCAuLi5hcmdzKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhyb3cgRXJyb3IoYE5vIGltcGxlbWVudGF0aW9uIG9mICcke3RoaXMubmFtZX0nIGZvdW5kIGZvciBhcmd1bWVudHM6ICR7dHlwZXMuam9pbihcIiwgXCIpfWApO1xuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiBzZWxmO1xuICAgIH1cbn1cblxuLyoqIFV0aWxpdGllcyBmb3IgbWFuYWdpbmcgZnVuY3Rpb24gaW1wbGVtZW50YXRpb25zLiAqL1xuZXhwb3J0IG5hbWVzcGFjZSBGdW5jdGlvbnMge1xuICAgIC8qKiBCaW5kIGEgY29udGV4dCB0byBhIGZ1bmN0aW9uIGltcGxlbWVudGF0aW9uLCB5aWVsZGluZyBhIGZ1bmN0aW9uIHdoaWNoIGRvZXMgbm90IG5lZWQgdGhlIGNvbnRleHQgYXJndW1lbnQuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGJpbmQoZnVuYzogRnVuY3Rpb25JbXBsLCBjb250ZXh0OiBFdmFsdWF0b3IpOiBCb3VuZEZ1bmN0aW9uSW1wbCB7XG4gICAgICAgIHJldHVybiAoLi4uYXJnczogTGl0ZXJhbFtdKSA9PiBmdW5jKGNvbnRleHQsIC4uLmFyZ3MpO1xuICAgIH1cblxuICAgIC8qKiBCaW5kIGEgY29udGV4dCB0byBhbGwgZnVuY3Rpb25zIGluIHRoZSBnaXZlbiBtYXAsIHlpZWxkaW5nIGEgbmV3IG1hcCBvZiBib3VuZCBmdW5jdGlvbnMuICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGJpbmRBbGwoXG4gICAgICAgIGZ1bmNzOiBSZWNvcmQ8c3RyaW5nLCBGdW5jdGlvbkltcGw+LFxuICAgICAgICBjb250ZXh0OiBFdmFsdWF0b3JcbiAgICApOiBSZWNvcmQ8c3RyaW5nLCBCb3VuZEZ1bmN0aW9uSW1wbD4ge1xuICAgICAgICBsZXQgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBCb3VuZEZ1bmN0aW9uSW1wbD4gPSB7fTtcbiAgICAgICAgZm9yIChsZXQgW2tleSwgZnVuY10gb2YgT2JqZWN0LmVudHJpZXMoZnVuY3MpKSB7XG4gICAgICAgICAgICByZXN1bHRba2V5XSA9IEZ1bmN0aW9ucy5iaW5kKGZ1bmMsIGNvbnRleHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG59XG5cbi8qKlxuICogQ29sbGVjdGlvbiBvZiBhbGwgZGVmaW5lZCBmdW5jdGlvbnM7IGRlZmluZWQgaGVyZSBzbyB0aGF0IHRoZXkgY2FuIGJlIGNhbGxlZCBmcm9tIHdpdGhpbiBkYXRhdmlldyxcbiAqIGFuZCB0ZXN0IGNvZGUuXG4gKi9cbmV4cG9ydCBuYW1lc3BhY2UgRGVmYXVsdEZ1bmN0aW9ucyB7XG4gICAgZXhwb3J0IGNvbnN0IHR5cGVPZiA9IG5ldyBGdW5jdGlvbkJ1aWxkZXIoXCJ0eXBlXCIpXG4gICAgICAgIC5hZGQxKFwiYXJyYXlcIiwgKF8pID0+IFwiYXJyYXlcIilcbiAgICAgICAgLmFkZDEoXCJib29sZWFuXCIsIChfKSA9PiBcImJvb2xlYW5cIilcbiAgICAgICAgLmFkZDEoXCJkYXRlXCIsIChfKSA9PiBcImRhdGVcIilcbiAgICAgICAgLmFkZDEoXCJkdXJhdGlvblwiLCAoXykgPT4gXCJkdXJhdGlvblwiKVxuICAgICAgICAuYWRkMShcImZ1bmN0aW9uXCIsIChfKSA9PiBcImZ1bmN0aW9uXCIpXG4gICAgICAgIC5hZGQxKFwibGlua1wiLCAoXykgPT4gXCJsaW5rXCIpXG4gICAgICAgIC5hZGQxKFwibnVsbFwiLCAoXykgPT4gXCJudWxsXCIpXG4gICAgICAgIC5hZGQxKFwibnVtYmVyXCIsIChfKSA9PiBcIm51bWJlclwiKVxuICAgICAgICAuYWRkMShcIm9iamVjdFwiLCAoXykgPT4gXCJvYmplY3RcIilcbiAgICAgICAgLmFkZDEoXCJzdHJpbmdcIiwgKF8pID0+IFwic3RyaW5nXCIpXG4gICAgICAgIC5hZGQxKFwiKlwiLCAoXykgPT4gXCJ1bmtub3duXCIpXG4gICAgICAgIC5idWlsZCgpO1xuXG4gICAgLyoqIENvbXB1dGUgdGhlIGxlbmd0aCBvZiBhIGRhdGEgdHlwZS4gKi9cbiAgICBleHBvcnQgY29uc3QgbGVuZ3RoID0gbmV3IEZ1bmN0aW9uQnVpbGRlcihcImxlbmd0aFwiKVxuICAgICAgICAuYWRkMShcImFycmF5XCIsIChhKSA9PiBhLmxlbmd0aClcbiAgICAgICAgLmFkZDEoXCJvYmplY3RcIiwgKGEpID0+IE9iamVjdC5rZXlzKGEpLmxlbmd0aClcbiAgICAgICAgLmFkZDEoXCJzdHJpbmdcIiwgKGEpID0+IGEubGVuZ3RoKVxuICAgICAgICAuYWRkMShcIm51bGxcIiwgKF9hKSA9PiAwKVxuICAgICAgICAuYnVpbGQoKTtcblxuICAgIC8qKiBMaXN0IGNvbnN0cnVjdG9yIGZ1bmN0aW9uLiAqL1xuICAgIGV4cG9ydCBjb25zdCBsaXN0OiBGdW5jdGlvbkltcGwgPSAoX2NvbnRleHQsIC4uLmFyZ3MpID0+IGFyZ3M7XG5cbiAgICAvKiogT2JqZWN0IGNvbnN0cnVjdG9yIGZ1bmN0aW9uLiAqL1xuICAgIGV4cG9ydCBjb25zdCBvYmplY3Q6IEZ1bmN0aW9uSW1wbCA9IChfY29udGV4dCwgLi4uYXJncykgPT4ge1xuICAgICAgICBpZiAoYXJncy5sZW5ndGggJSAyICE9IDApIHRocm93IEVycm9yKFwib2JqZWN0KCkgcmVxdWlyZXMgYW4gZXZlbiBudW1iZXIgb2YgYXJndW1lbnRzXCIpO1xuICAgICAgICBsZXQgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBMaXRlcmFsPiA9IHt9O1xuICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgYXJncy5sZW5ndGg7IGluZGV4ICs9IDIpIHtcbiAgICAgICAgICAgIGxldCBrZXkgPSBhcmdzW2luZGV4XTtcbiAgICAgICAgICAgIGlmICghTGl0ZXJhbHMuaXNTdHJpbmcoa2V5KSkgdGhyb3cgRXJyb3IoXCJrZXlzIHNob3VsZCBiZSBvZiB0eXBlIHN0cmluZyBmb3Igb2JqZWN0KGtleTEsIHZhbHVlMSwgLi4uKVwiKTtcbiAgICAgICAgICAgIHJlc3VsdFtrZXldID0gYXJnc1tpbmRleCArIDFdO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuXG4gICAgLyoqIEludGVybmFsIGxpbmsgY29uc3RydWN0b3IgZnVuY3Rpb24uICovXG4gICAgZXhwb3J0IGNvbnN0IGxpbms6IEZ1bmN0aW9uSW1wbCA9IG5ldyBGdW5jdGlvbkJ1aWxkZXIoXCJsaW5rXCIpXG4gICAgICAgIC5hZGQxKFwic3RyaW5nXCIsIChhLCBjKSA9PiBMaW5rLmZpbGUoYy5saW5rSGFuZGxlci5ub3JtYWxpemUoYSksIGZhbHNlKSlcbiAgICAgICAgLmFkZDEoXCJsaW5rXCIsIChhKSA9PiBhKVxuICAgICAgICAuYWRkMShcIm51bGxcIiwgKF9hKSA9PiBudWxsKVxuICAgICAgICAudmVjdG9yaXplKDEsIFswXSlcbiAgICAgICAgLmFkZDIoXCJzdHJpbmdcIiwgXCJzdHJpbmdcIiwgKHQsIGQsIGMpID0+IExpbmsuZmlsZShjLmxpbmtIYW5kbGVyLm5vcm1hbGl6ZSh0KSwgZmFsc2UsIGQpKVxuICAgICAgICAuYWRkMyhcInN0cmluZ1wiLCBcInN0cmluZ1wiLCBcImJvb2xlYW5cIiwgKHQsIGQsIGUsIGMpID0+IExpbmsuZmlsZShjLmxpbmtIYW5kbGVyLm5vcm1hbGl6ZSh0KSwgZSwgZCkpXG4gICAgICAgIC5hZGQyKFwibGlua1wiLCBcInN0cmluZ1wiLCAodCwgZCkgPT4gdC53aXRoRGlzcGxheShkKSlcbiAgICAgICAgLmFkZDIoXCJudWxsXCIsIFwiKlwiLCAoKSA9PiBudWxsKVxuICAgICAgICAuYWRkMihcIipcIiwgXCJudWxsXCIsICh0LCBfbiwgYykgPT4gbGluayhjLCB0KSlcbiAgICAgICAgLnZlY3Rvcml6ZSgyLCBbMCwgMV0pXG4gICAgICAgIC5idWlsZCgpO1xuXG4gICAgLyoqIEVtYmVkIGFuZCB1bi1lbWJlZCBhIGxpbmsuICovXG4gICAgZXhwb3J0IGNvbnN0IGVtYmVkOiBGdW5jdGlvbkltcGwgPSBuZXcgRnVuY3Rpb25CdWlsZGVyKFwiZW1iZWRcIilcbiAgICAgICAgLmFkZDEoXCJsaW5rXCIsIChsKSA9PiBsLnRvRW1iZWQoKSlcbiAgICAgICAgLnZlY3Rvcml6ZSgxLCBbMF0pXG4gICAgICAgIC5hZGQyKFwibGlua1wiLCBcImJvb2xlYW5cIiwgKGwsIGUsIGMpID0+IChlID8gbC50b0VtYmVkKCkgOiBsLmZyb21FbWJlZCgpKSlcbiAgICAgICAgLmFkZDEoXCJudWxsXCIsICgpID0+IG51bGwpXG4gICAgICAgIC5hZGQyKFwibnVsbFwiLCBcIipcIiwgKCkgPT4gbnVsbClcbiAgICAgICAgLmFkZDIoXCIqXCIsIFwibnVsbFwiLCAoKSA9PiBudWxsKVxuICAgICAgICAudmVjdG9yaXplKDIsIFswLCAxXSlcbiAgICAgICAgLmJ1aWxkKCk7XG5cbiAgICAvKiogRGF0ZSBjb25zdHJ1Y3RvciBmdW5jdGlvbi4gKi9cbiAgICBleHBvcnQgY29uc3QgZGF0ZSA9IG5ldyBGdW5jdGlvbkJ1aWxkZXIoXCJkYXRlXCIpXG4gICAgICAgIC5hZGQxKFwic3RyaW5nXCIsIChzdHIpID0+IHtcbiAgICAgICAgICAgIGxldCBwYXJzZWREYXRlID0gUFJJTUlUSVZFUy5kYXRlUGx1cy5wYXJzZShzdHIpO1xuICAgICAgICAgICAgaWYgKHBhcnNlZERhdGUuc3RhdHVzKSByZXR1cm4gcGFyc2VkRGF0ZS52YWx1ZTtcbiAgICAgICAgICAgIGVsc2UgcmV0dXJuIG51bGw7XG4gICAgICAgIH0pXG4gICAgICAgIC5hZGQxKFwiZGF0ZVwiLCAoZCkgPT4gZClcbiAgICAgICAgLmFkZDEoXCJsaW5rXCIsIChsaW5rLCBjKSA9PiB7XG4gICAgICAgICAgICAvLyBUcnkgdG8gcGFyc2UgZnJvbSB0aGUgZGlzcGxheS4uLlxuICAgICAgICAgICAgaWYgKGxpbmsuZGlzcGxheSkge1xuICAgICAgICAgICAgICAgIGxldCBwYXJzZWREYXRlID0gUFJJTUlUSVZFUy5kYXRlLnBhcnNlKGxpbmsuZGlzcGxheSk7XG4gICAgICAgICAgICAgICAgaWYgKHBhcnNlZERhdGUuc3RhdHVzKSByZXR1cm4gcGFyc2VkRGF0ZS52YWx1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gVGhlbiB0cnkgdG8gcGFyc2UgZnJvbSB0aGUgcGF0aC4uLlxuICAgICAgICAgICAgbGV0IHBhcnNlZERhdGUgPSBQUklNSVRJVkVTLmRhdGUucGFyc2UobGluay5wYXRoKTtcbiAgICAgICAgICAgIGlmIChwYXJzZWREYXRlLnN0YXR1cykgcmV0dXJuIHBhcnNlZERhdGUudmFsdWU7XG5cbiAgICAgICAgICAgIC8vIFRoZW4gcHVsbCBpdCBmcm9tIHRoZSBmaWxlLlxuICAgICAgICAgICAgbGV0IHJlc29sdmVkID0gYy5saW5rSGFuZGxlci5yZXNvbHZlKGxpbmsucGF0aCk7XG4gICAgICAgICAgICBpZiAocmVzb2x2ZWQgJiYgKHJlc29sdmVkIGFzIGFueSk/LmZpbGU/LmRheSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAocmVzb2x2ZWQgYXMgYW55KT8uZmlsZT8uZGF5O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfSlcbiAgICAgICAgLmFkZDIoXCJzdHJpbmdcIiwgXCJzdHJpbmdcIiwgKGQsIGYpID0+IHtcbiAgICAgICAgICAgIGlmIChmID09PSBcInhcIiB8fCBmID09PSBcIlhcIikge1xuICAgICAgICAgICAgICAgIGxldCBtYXRjaCA9IE5VTUJFUl9SRUdFWC5leGVjKGQpO1xuICAgICAgICAgICAgICAgIGlmIChtYXRjaCkgcmV0dXJuIERhdGVUaW1lLmZyb21NaWxsaXMoTnVtYmVyLnBhcnNlSW50KG1hdGNoWzBdKSAqIChmID09PSBcIlhcIiA/IDEwMDAgOiAxKSk7XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKFwiTm90IGEgbnVtYmVyIGZvciBmb3JtYXQoICgkeyBmIH0pOiAkeyBkIH1cIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBsZXQgcGFyc2VkRGF0ZSA9IERhdGVUaW1lLmZyb21Gb3JtYXQoZCwgZik7XG4gICAgICAgICAgICAgICAgaWYgKHBhcnNlZERhdGUuaXNWYWxpZCkgcmV0dXJuIHBhcnNlZERhdGU7XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKGBDYW4ndCBoYW5kbGUgZm9ybWF0ICgke2Z9KSBvbiBkYXRlIHN0cmluZyAoJHtkfSlgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC5hZGQxKFwibnVsbFwiLCAoKSA9PiBudWxsKVxuICAgICAgICAudmVjdG9yaXplKDEsIFswXSlcbiAgICAgICAgLmJ1aWxkKCk7XG5cbiAgICAvKiogRHVyYXRpb24gY29uc3RydWN0b3IgZnVuY3Rpb24uICovXG4gICAgZXhwb3J0IGNvbnN0IGR1ciA9IG5ldyBGdW5jdGlvbkJ1aWxkZXIoXCJkdXJcIilcbiAgICAgICAgLmFkZDEoXCJzdHJpbmdcIiwgKHN0cikgPT4ge1xuICAgICAgICAgICAgbGV0IHBhcnNlZER1ciA9IFBSSU1JVElWRVMuZHVyYXRpb24ucGFyc2Uoc3RyLnRyaW0oKSk7XG4gICAgICAgICAgICBpZiAocGFyc2VkRHVyLnN0YXR1cykgcmV0dXJuIHBhcnNlZER1ci52YWx1ZTtcbiAgICAgICAgICAgIGVsc2UgcmV0dXJuIG51bGw7XG4gICAgICAgIH0pXG4gICAgICAgIC5hZGQxKFwiZHVyYXRpb25cIiwgKGQpID0+IGQpXG4gICAgICAgIC5hZGQxKFwibnVsbFwiLCAoZCkgPT4gZClcbiAgICAgICAgLnZlY3Rvcml6ZSgxLCBbMF0pXG4gICAgICAgIC5idWlsZCgpO1xuXG4gICAgLyoqIEZvcm1hdCBhIGRhdGUgdXNpbmcgYSBsdXhvbi9tb21lbnQtc3R5bGUgZGF0ZSBmb3JtYXQuICovXG4gICAgZXhwb3J0IGNvbnN0IGRhdGVmb3JtYXQgPSBuZXcgRnVuY3Rpb25CdWlsZGVyKFwiZGF0ZWZvcm1hdFwiKVxuICAgICAgICAuYWRkMihcImRhdGVcIiwgXCJzdHJpbmdcIiwgKGRhdGUsIGZvcm1hdCkgPT4gZGF0ZS50b0Zvcm1hdChmb3JtYXQsIHsgbG9jYWxlOiBjdXJyZW50TG9jYWxlKCkgfSkpXG4gICAgICAgIC5hZGQyKFwibnVsbFwiLCBcInN0cmluZ1wiLCAoX251bCwgX2Zvcm1hdCkgPT4gbnVsbClcbiAgICAgICAgLnZlY3Rvcml6ZSgyLCBbMF0pXG4gICAgICAgIC5idWlsZCgpO1xuXG4gICAgZXhwb3J0IGNvbnN0IGxvY2FsdGltZSA9IG5ldyBGdW5jdGlvbkJ1aWxkZXIoXCJsb2NhbHRpbWVcIilcbiAgICAgICAgLmFkZDEoXCJkYXRlXCIsIChkKSA9PiBkLnRvTG9jYWwoKSlcbiAgICAgICAgLmFkZDEoXCJudWxsXCIsICgpID0+IG51bGwpXG4gICAgICAgIC52ZWN0b3JpemUoMSwgWzBdKVxuICAgICAgICAuYnVpbGQoKTtcblxuICAgIGNvbnN0IE5VTUJFUl9SRUdFWCA9IC8tP1swLTldKyhcXC5bMC05XSspPy87XG5cbiAgICAvKiogTnVtYmVyIGNvbnN0cnVjdG9yIGZ1bmN0aW9uLiAqL1xuICAgIGV4cG9ydCBjb25zdCBudW1iZXIgPSBuZXcgRnVuY3Rpb25CdWlsZGVyKFwibnVtYmVyXCIpXG4gICAgICAgIC5hZGQxKFwibnVtYmVyXCIsIChhKSA9PiBhKVxuICAgICAgICAuYWRkMShcInN0cmluZ1wiLCAoc3RyKSA9PiB7XG4gICAgICAgICAgICBsZXQgbWF0Y2ggPSBOVU1CRVJfUkVHRVguZXhlYyhzdHIpO1xuICAgICAgICAgICAgaWYgKG1hdGNoKSByZXR1cm4gTnVtYmVyLnBhcnNlRmxvYXQobWF0Y2hbMF0pO1xuICAgICAgICAgICAgZWxzZSByZXR1cm4gbnVsbDtcbiAgICAgICAgfSlcbiAgICAgICAgLmFkZDEoXCJudWxsXCIsICgpID0+IG51bGwpXG4gICAgICAgIC52ZWN0b3JpemUoMSwgWzBdKVxuICAgICAgICAuYnVpbGQoKTtcblxuICAgIC8qKlxuICAgICAqIENvbnZlcnQgYW55IHZhbHVlIHRvIGEgcmVhc29uYWJsZSBpbnRlcm5hbCBzdHJpbmcgcmVwcmVzZW50YXRpb24uIE1vc3QgdXNlZnVsIGZvciBkYXRlcywgc3RyaW5ncywgbnVtYmVycywgYW5kXG4gICAgICogc28gb24uXG4gICAgICovXG4gICAgZXhwb3J0IGNvbnN0IHN0cmluZyA9IG5ldyBGdW5jdGlvbkJ1aWxkZXIoXCJzdHJpbmdcIilcbiAgICAgICAgLmFkZDEoXCIqXCIsIChhLCBjdHgpID0+IExpdGVyYWxzLnRvU3RyaW5nKGEsIHN0cmluZ1NldHRpbmdzKGN0eC5zZXR0aW5ncykpKVxuICAgICAgICAuYnVpbGQoKTtcblxuICAgIGV4cG9ydCBjb25zdCByb3VuZCA9IG5ldyBGdW5jdGlvbkJ1aWxkZXIoXCJyb3VuZFwiKVxuICAgICAgICAuYWRkMShcIm51bWJlclwiLCAobikgPT4gTWF0aC5yb3VuZChuKSlcbiAgICAgICAgLmFkZDEoXCJudWxsXCIsICgpID0+IG51bGwpXG4gICAgICAgIC52ZWN0b3JpemUoMSwgWzBdKVxuICAgICAgICAuYWRkMihcIm51bWJlclwiLCBcIm51bWJlclwiLCAobiwgcCkgPT4ge1xuICAgICAgICAgICAgaWYgKHAgPD0gMCkgcmV0dXJuIE1hdGgucm91bmQobik7XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VGbG9hdChuLnRvRml4ZWQocCkpO1xuICAgICAgICB9KVxuICAgICAgICAuYWRkMihcIm51bWJlclwiLCBcIm51bGxcIiwgKG4pID0+IE1hdGgucm91bmQobikpXG4gICAgICAgIC5hZGQyKFwibnVsbFwiLCBcIipcIiwgKCkgPT4gbnVsbClcbiAgICAgICAgLnZlY3Rvcml6ZSgyLCBbMF0pXG4gICAgICAgIC5idWlsZCgpO1xuXG4gICAgZXhwb3J0IGNvbnN0IG1pbjogRnVuY3Rpb25JbXBsID0gbmV3IEZ1bmN0aW9uQnVpbGRlcihcIm1pblwiKVxuICAgICAgICAuYWRkMihcIipcIiwgXCJudWxsXCIsIChhLCBfbikgPT4gYSlcbiAgICAgICAgLmFkZDIoXCJudWxsXCIsIFwiKlwiLCAoX24sIGEpID0+IGEpXG4gICAgICAgIC5hZGQyKFwiKlwiLCBcIipcIiwgKGEsIGIsIGN0eCkgPT4gKExpdGVyYWxzLmNvbXBhcmUoYSwgYiwgY3R4LmxpbmtIYW5kbGVyLm5vcm1hbGl6ZSkgPD0gMCA/IGEgOiBiKSlcbiAgICAgICAgLmFkZDEoXCJhcnJheVwiLCAoYSwgY3R4KSA9PiBtaW4oY3R4LCAuLi5hKSlcbiAgICAgICAgLnZhcmFyZygoY3R4LCAuLi5hcmdzKSA9PiAoYXJncy5sZW5ndGggPT0gMCA/IG51bGwgOiBhcmdzLnJlZHVjZSgocCwgYykgPT4gbWluKGN0eCwgcCwgYykpKSlcbiAgICAgICAgLmJ1aWxkKCk7XG5cbiAgICBleHBvcnQgY29uc3QgbWF4OiBGdW5jdGlvbkltcGwgPSBuZXcgRnVuY3Rpb25CdWlsZGVyKFwibWF4XCIpXG4gICAgICAgIC5hZGQyKFwiKlwiLCBcIm51bGxcIiwgKGEsIF9uKSA9PiBhKVxuICAgICAgICAuYWRkMihcIm51bGxcIiwgXCIqXCIsIChfbiwgYSkgPT4gYSlcbiAgICAgICAgLmFkZDIoXCIqXCIsIFwiKlwiLCAoYSwgYiwgY3R4KSA9PiAoTGl0ZXJhbHMuY29tcGFyZShhLCBiLCBjdHgubGlua0hhbmRsZXIubm9ybWFsaXplKSA+IDAgPyBhIDogYikpXG4gICAgICAgIC5hZGQxKFwiYXJyYXlcIiwgKGEsIGN0eCkgPT4gbWF4KGN0eCwgLi4uYSkpXG4gICAgICAgIC52YXJhcmcoKGN0eCwgLi4uYXJncykgPT4gKGFyZ3MubGVuZ3RoID09IDAgPyBudWxsIDogYXJncy5yZWR1Y2UoKHAsIGMpID0+IG1heChjdHgsIHAsIGMpKSkpXG4gICAgICAgIC5idWlsZCgpO1xuXG4gICAgZXhwb3J0IGNvbnN0IG1pbmJ5OiBGdW5jdGlvbkltcGwgPSBuZXcgRnVuY3Rpb25CdWlsZGVyKFwibWluYnlcIilcbiAgICAgICAgLmFkZDIoXCJhcnJheVwiLCBcImZ1bmN0aW9uXCIsIChhcnIsIGZ1bmMsIGN0eCkgPT4ge1xuICAgICAgICAgICAgaWYgKGFyci5sZW5ndGggPT0gMCkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgICAgIGxldCB2YWx1ZXMgPSBhcnIubWFwKCh2KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IHYsIG1hcHBlZDogZnVuYyhjdHgsIHYpIH07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGxldCBmaWx0ZXJlZCA9IHZhbHVlcy5maWx0ZXIoKHYpID0+ICFMaXRlcmFscy5pc051bGwodi5tYXBwZWQpKTtcbiAgICAgICAgICAgIGlmIChmaWx0ZXJlZC5sZW5ndGggPT0gMCkgcmV0dXJuIGFyclswXTtcblxuICAgICAgICAgICAgcmV0dXJuIGZpbHRlcmVkLnJlZHVjZSgocCwgYykgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChMaXRlcmFscy5jb21wYXJlKHAubWFwcGVkLCBjLm1hcHBlZCwgY3R4LmxpbmtIYW5kbGVyLm5vcm1hbGl6ZSkgPD0gMCkgcmV0dXJuIHA7XG4gICAgICAgICAgICAgICAgZWxzZSByZXR1cm4gYztcbiAgICAgICAgICAgIH0pLnZhbHVlO1xuICAgICAgICB9KVxuICAgICAgICAuYWRkMihcIm51bGxcIiwgXCJmdW5jdGlvblwiLCAoX2FyciwgX2Z1bmMsIF9jdHgpID0+IG51bGwpXG4gICAgICAgIC5idWlsZCgpO1xuXG4gICAgZXhwb3J0IGNvbnN0IG1heGJ5OiBGdW5jdGlvbkltcGwgPSBuZXcgRnVuY3Rpb25CdWlsZGVyKFwibWF4YnlcIilcbiAgICAgICAgLmFkZDIoXCJhcnJheVwiLCBcImZ1bmN0aW9uXCIsIChhcnIsIGZ1bmMsIGN0eCkgPT4ge1xuICAgICAgICAgICAgaWYgKGFyci5sZW5ndGggPT0gMCkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgICAgIGxldCB2YWx1ZXMgPSBhcnIubWFwKCh2KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IHYsIG1hcHBlZDogZnVuYyhjdHgsIHYpIH07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGxldCBmaWx0ZXJlZCA9IHZhbHVlcy5maWx0ZXIoKHYpID0+ICFMaXRlcmFscy5pc051bGwodi5tYXBwZWQpKTtcbiAgICAgICAgICAgIGlmIChmaWx0ZXJlZC5sZW5ndGggPT0gMCkgcmV0dXJuIGFyclswXTtcblxuICAgICAgICAgICAgcmV0dXJuIGZpbHRlcmVkLnJlZHVjZSgocCwgYykgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChMaXRlcmFscy5jb21wYXJlKHAubWFwcGVkLCBjLm1hcHBlZCwgY3R4LmxpbmtIYW5kbGVyLm5vcm1hbGl6ZSkgPiAwKSByZXR1cm4gcDtcbiAgICAgICAgICAgICAgICBlbHNlIHJldHVybiBjO1xuICAgICAgICAgICAgfSkudmFsdWU7XG4gICAgICAgIH0pXG4gICAgICAgIC5hZGQyKFwibnVsbFwiLCBcImZ1bmN0aW9uXCIsIChfYXJyLCBfZnVuYywgX2N0eCkgPT4gbnVsbClcbiAgICAgICAgLmJ1aWxkKCk7XG5cbiAgICBleHBvcnQgY29uc3Qgc3RyaXB0aW1lID0gbmV3IEZ1bmN0aW9uQnVpbGRlcihcInN0cmlwdGltZVwiKVxuICAgICAgICAuYWRkMShcImRhdGVcIiwgKGQpID0+IERhdGVUaW1lLmZyb21PYmplY3QoeyB5ZWFyOiBkLnllYXIsIG1vbnRoOiBkLm1vbnRoLCBkYXk6IGQuZGF5IH0pKVxuICAgICAgICAuYWRkMShcIm51bGxcIiwgKF9uKSA9PiBudWxsKVxuICAgICAgICAudmVjdG9yaXplKDEsIFswXSlcbiAgICAgICAgLmJ1aWxkKCk7XG5cbiAgICAvLyBEZWZhdWx0IGNvbnRhaW5zLCB3aGljaCBsb29rcyB0aHJvdWdoIGRhdGEgc3RydWN0dXJlcyByZWN1cnNpdmVseS5cbiAgICBleHBvcnQgY29uc3QgY29udGFpbnM6IEZ1bmN0aW9uSW1wbCA9IG5ldyBGdW5jdGlvbkJ1aWxkZXIoXCJjb250YWluc1wiKVxuICAgICAgICAuYWRkMihcImFycmF5XCIsIFwiKlwiLCAobCwgZWxlbSwgY29udGV4dCkgPT4gbC5zb21lKChlKSA9PiBjb250YWlucyhjb250ZXh0LCBlLCBlbGVtKSkpXG4gICAgICAgIC5hZGQyKFwic3RyaW5nXCIsIFwic3RyaW5nXCIsIChoYXlzdGFjaywgbmVlZGxlKSA9PiBoYXlzdGFjay5pbmNsdWRlcyhuZWVkbGUpKVxuICAgICAgICAuYWRkMihcIm9iamVjdFwiLCBcInN0cmluZ1wiLCAob2JqLCBrZXkpID0+IGtleSBpbiBvYmopXG4gICAgICAgIC5hZGQyKFwiKlwiLCBcIipcIiwgKGVsZW0xLCBlbGVtMiwgY29udGV4dCkgPT5cbiAgICAgICAgICAgIGNvbnRleHRcbiAgICAgICAgICAgICAgICAuZXZhbHVhdGUoRXhwcmVzc2lvbnMuYmluYXJ5T3AoRXhwcmVzc2lvbnMubGl0ZXJhbChlbGVtMSksIFwiPVwiLCBFeHByZXNzaW9ucy5saXRlcmFsKGVsZW0yKSkpXG4gICAgICAgICAgICAgICAgLm9yRWxzZVRocm93KClcbiAgICAgICAgKVxuICAgICAgICAudmVjdG9yaXplKDIsIFsxXSlcbiAgICAgICAgLmJ1aWxkKCk7XG5cbiAgICAvLyBDYXNlIGluc2Vuc2l0aXZlIHZlcnNpb24gb2YgY29udGFpbnMuXG4gICAgZXhwb3J0IGNvbnN0IGljb250YWluczogRnVuY3Rpb25JbXBsID0gbmV3IEZ1bmN0aW9uQnVpbGRlcihcImljb250YWluc1wiKVxuICAgICAgICAuYWRkMihcImFycmF5XCIsIFwiKlwiLCAobCwgZWxlbSwgY29udGV4dCkgPT4gbC5zb21lKChlKSA9PiBpY29udGFpbnMoY29udGV4dCwgZSwgZWxlbSkpKVxuICAgICAgICAuYWRkMihcInN0cmluZ1wiLCBcInN0cmluZ1wiLCAoaGF5c3RhY2ssIG5lZWRsZSkgPT5cbiAgICAgICAgICAgIGhheXN0YWNrLnRvTG9jYWxlTG93ZXJDYXNlKCkuaW5jbHVkZXMobmVlZGxlLnRvTG9jYWxlTG93ZXJDYXNlKCkpXG4gICAgICAgIClcbiAgICAgICAgLmFkZDIoXCJvYmplY3RcIiwgXCJzdHJpbmdcIiwgKG9iaiwga2V5KSA9PiBrZXkgaW4gb2JqKVxuICAgICAgICAuYWRkMihcIipcIiwgXCIqXCIsIChlbGVtMSwgZWxlbTIsIGNvbnRleHQpID0+XG4gICAgICAgICAgICBjb250ZXh0XG4gICAgICAgICAgICAgICAgLmV2YWx1YXRlKEV4cHJlc3Npb25zLmJpbmFyeU9wKEV4cHJlc3Npb25zLmxpdGVyYWwoZWxlbTEpLCBcIj1cIiwgRXhwcmVzc2lvbnMubGl0ZXJhbChlbGVtMikpKVxuICAgICAgICAgICAgICAgIC5vckVsc2VUaHJvdygpXG4gICAgICAgIClcbiAgICAgICAgLnZlY3Rvcml6ZSgyLCBbMV0pXG4gICAgICAgIC5idWlsZCgpO1xuXG4gICAgLy8gXCJleGFjdFwiIGNvbnRhaW5zLCBkb2VzIG5vdCBsb29rIHJlY3Vyc2l2ZWx5LlxuICAgIGV4cG9ydCBjb25zdCBlY29udGFpbnM6IEZ1bmN0aW9uSW1wbCA9IG5ldyBGdW5jdGlvbkJ1aWxkZXIoXCJlY29udGFpbnNcIilcbiAgICAgICAgLmFkZDIoXCJhcnJheVwiLCBcIipcIiwgKGwsIGVsZW0sIGNvbnRleHQpID0+XG4gICAgICAgICAgICBsLnNvbWUoKGUpID0+XG4gICAgICAgICAgICAgICAgY29udGV4dFxuICAgICAgICAgICAgICAgICAgICAuZXZhbHVhdGUoRXhwcmVzc2lvbnMuYmluYXJ5T3AoRXhwcmVzc2lvbnMubGl0ZXJhbChlbGVtKSwgXCI9XCIsIEV4cHJlc3Npb25zLmxpdGVyYWwoZSkpKVxuICAgICAgICAgICAgICAgICAgICAub3JFbHNlVGhyb3coKVxuICAgICAgICAgICAgKVxuICAgICAgICApXG4gICAgICAgIC5hZGQyKFwic3RyaW5nXCIsIFwic3RyaW5nXCIsIChoYXlzdGFjaywgbmVlZGxlKSA9PiBoYXlzdGFjay5pbmNsdWRlcyhuZWVkbGUpKVxuICAgICAgICAuYWRkMihcIm9iamVjdFwiLCBcInN0cmluZ1wiLCAob2JqLCBrZXkpID0+IGtleSBpbiBvYmopXG4gICAgICAgIC5hZGQyKFwiKlwiLCBcIipcIiwgKGVsZW0xLCBlbGVtMiwgY29udGV4dCkgPT5cbiAgICAgICAgICAgIGNvbnRleHRcbiAgICAgICAgICAgICAgICAuZXZhbHVhdGUoRXhwcmVzc2lvbnMuYmluYXJ5T3AoRXhwcmVzc2lvbnMubGl0ZXJhbChlbGVtMSksIFwiPVwiLCBFeHByZXNzaW9ucy5saXRlcmFsKGVsZW0yKSkpXG4gICAgICAgICAgICAgICAgLm9yRWxzZVRocm93KClcbiAgICAgICAgKVxuICAgICAgICAudmVjdG9yaXplKDIsIFsxXSlcbiAgICAgICAgLmJ1aWxkKCk7XG5cbiAgICAvLyBDYXNlIGluc2Vuc2l0aXZlIGNvbnRhaW5zIHdoaWNoIGxvb2tzIGZvciBleGFjdCB3b3JkIG1hdGNoZXMgKGkuZS4sIGJvdW5kcnktdG8tYm91bmRyeSBtYXRjaCkuXG4gICAgZXhwb3J0IGNvbnN0IGNvbnRhaW5zd29yZDogRnVuY3Rpb25JbXBsID0gbmV3IEZ1bmN0aW9uQnVpbGRlcihcImNvbnRhaW5zd29yZFwiKVxuICAgICAgICAuYWRkMihcbiAgICAgICAgICAgIFwic3RyaW5nXCIsXG4gICAgICAgICAgICBcInN0cmluZ1wiLFxuICAgICAgICAgICAgKGhheSwgbmVlZGxlKSA9PiAhIWhheS5tYXRjaChuZXcgUmVnRXhwKFwiLipcXFxcYlwiICsgZXNjYXBlUmVnZXgobmVlZGxlKSArIFwiXFxcXGIuKlwiLCBcImlcIikpXG4gICAgICAgIClcbiAgICAgICAgLmFkZDIoXCJudWxsXCIsIFwiKlwiLCAoX2EsIF9iKSA9PiBudWxsKVxuICAgICAgICAuYWRkMihcIipcIiwgXCJudWxsXCIsIChfYSwgX2IpID0+IG51bGwpXG4gICAgICAgIC52ZWN0b3JpemUoMiwgWzAsIDFdKVxuICAgICAgICAuYnVpbGQoKTtcblxuICAgIC8qKiBFeHRyYWN0IDAgb3IgbW9yZSBrZXlzIGZyb20gYSBnaXZlbiBvYmplY3QgdmlhIGluZGV4aW5nLiAqL1xuICAgIGV4cG9ydCBjb25zdCBleHRyYWN0OiBGdW5jdGlvbkltcGwgPSAoY29udGV4dDogRXZhbHVhdG9yLCAuLi5hcmdzOiBMaXRlcmFsW10pID0+IHtcbiAgICAgICAgaWYgKGFyZ3MubGVuZ3RoID09IDApIHJldHVybiBcImV4dHJhY3Qob2JqZWN0LCBrZXkxLCAuLi4pIHJlcXVpcmVzIGF0IGxlYXN0IDEgYXJndW1lbnRcIjtcblxuICAgICAgICAvLyBNYW51YWxseSBoYW5kbGUgdmVjdG9yaXphdGlvbiBpbiB0aGUgZmlyc3QgYXJndW1lbnQuXG4gICAgICAgIGxldCBvYmplY3QgPSBhcmdzWzBdO1xuICAgICAgICBpZiAoTGl0ZXJhbHMuaXNBcnJheShvYmplY3QpKSByZXR1cm4gb2JqZWN0Lm1hcCgodikgPT4gZXh0cmFjdChjb250ZXh0LCB2LCAuLi5hcmdzLnNsaWNlKDEpKSk7XG5cbiAgICAgICAgbGV0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgTGl0ZXJhbD4gPSB7fTtcbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSAxOyBpbmRleCA8IGFyZ3MubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgICAgICBsZXQga2V5ID0gYXJnc1tpbmRleF07XG4gICAgICAgICAgICBpZiAoIUxpdGVyYWxzLmlzU3RyaW5nKGtleSkpIHRocm93IEVycm9yKFwiZXh0cmFjdChvYmplY3QsIGtleTEsIC4uLikgbXVzdCBiZSBjYWxsZWQgd2l0aCBzdHJpbmcga2V5c1wiKTtcblxuICAgICAgICAgICAgcmVzdWx0W2tleV0gPSBjb250ZXh0XG4gICAgICAgICAgICAgICAgLmV2YWx1YXRlKEV4cHJlc3Npb25zLmluZGV4KEV4cHJlc3Npb25zLmxpdGVyYWwob2JqZWN0KSwgRXhwcmVzc2lvbnMubGl0ZXJhbChrZXkpKSlcbiAgICAgICAgICAgICAgICAub3JFbHNlVGhyb3coKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcblxuICAgIC8vIFJldmVyc2UgYW4gYXJyYXkgb3Igc3RyaW5nLlxuICAgIGV4cG9ydCBjb25zdCByZXZlcnNlID0gbmV3IEZ1bmN0aW9uQnVpbGRlcihcInJldmVyc2VcIilcbiAgICAgICAgLmFkZDEoXCJhcnJheVwiLCAobCkgPT4ge1xuICAgICAgICAgICAgbGV0IHJlc3VsdCA9IFtdO1xuICAgICAgICAgICAgZm9yIChsZXQgaW5kZXggPSBsLmxlbmd0aCAtIDE7IGluZGV4ID49IDA7IGluZGV4LS0pIHJlc3VsdC5wdXNoKGxbaW5kZXhdKTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0pXG4gICAgICAgIC5hZGQxKFwic3RyaW5nXCIsIChsKSA9PiB7XG4gICAgICAgICAgICBsZXQgcmVzdWx0ID0gXCJcIjtcbiAgICAgICAgICAgIGZvciAobGV0IGMgPSAwOyBjIDwgbC5sZW5ndGg7IGMrKykgcmVzdWx0ICs9IGxbbC5sZW5ndGggLSBjIC0gMV07XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9KVxuICAgICAgICAuYWRkMShcIipcIiwgKGUpID0+IGUpXG4gICAgICAgIC5idWlsZCgpO1xuXG4gICAgLy8gU29ydCBhbiBhcnJheTsgaWYgZ2l2ZW4gdHdvIGFyZ3VtZW50cywgc29ydHMgYnkgdGhlIGtleSByZXR1cm5lZC5cbiAgICBleHBvcnQgY29uc3Qgc29ydDogRnVuY3Rpb25JbXBsID0gbmV3IEZ1bmN0aW9uQnVpbGRlcihcInNvcnRcIilcbiAgICAgICAgLmFkZDEoXCJhcnJheVwiLCAobGlzdCwgY29udGV4dCkgPT4gc29ydChjb250ZXh0LCBsaXN0LCAoX2N0eDogRXZhbHVhdG9yLCBhOiBMaXRlcmFsKSA9PiBhKSlcbiAgICAgICAgLmFkZDIoXCJhcnJheVwiLCBcImZ1bmN0aW9uXCIsIChsaXN0LCBrZXksIGNvbnRleHQpID0+IHtcbiAgICAgICAgICAgIGxldCByZXN1bHQgPSAoW10gYXMgTGl0ZXJhbFtdKS5jb25jYXQobGlzdCk7XG4gICAgICAgICAgICByZXN1bHQuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBha2V5ID0ga2V5KGNvbnRleHQsIGEpO1xuICAgICAgICAgICAgICAgIGxldCBia2V5ID0ga2V5KGNvbnRleHQsIGIpO1xuICAgICAgICAgICAgICAgIGxldCBsZSA9IGNvbnRleHRcbiAgICAgICAgICAgICAgICAgICAgLmV2YWx1YXRlKEV4cHJlc3Npb25zLmJpbmFyeU9wKEV4cHJlc3Npb25zLmxpdGVyYWwoYWtleSksIFwiPFwiLCBFeHByZXNzaW9ucy5saXRlcmFsKGJrZXkpKSlcbiAgICAgICAgICAgICAgICAgICAgLm9yRWxzZVRocm93KCk7XG4gICAgICAgICAgICAgICAgaWYgKExpdGVyYWxzLmlzVHJ1dGh5KGxlKSkgcmV0dXJuIC0xO1xuXG4gICAgICAgICAgICAgICAgbGV0IGVxID0gY29udGV4dFxuICAgICAgICAgICAgICAgICAgICAuZXZhbHVhdGUoRXhwcmVzc2lvbnMuYmluYXJ5T3AoRXhwcmVzc2lvbnMubGl0ZXJhbChha2V5KSwgXCI9XCIsIEV4cHJlc3Npb25zLmxpdGVyYWwoYmtleSkpKVxuICAgICAgICAgICAgICAgICAgICAub3JFbHNlVGhyb3coKTtcbiAgICAgICAgICAgICAgICBpZiAoTGl0ZXJhbHMuaXNUcnV0aHkoZXEpKSByZXR1cm4gMDtcblxuICAgICAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9KVxuICAgICAgICAuYWRkMShcIipcIiwgKGUpID0+IGUpXG4gICAgICAgIC5idWlsZCgpO1xuXG4gICAgZXhwb3J0IGNvbnN0IHJlZ2V4dGVzdCA9IG5ldyBGdW5jdGlvbkJ1aWxkZXIoXCJyZWdleHRlc3RcIilcbiAgICAgICAgLmFkZDIoXCJzdHJpbmdcIiwgXCJzdHJpbmdcIiwgKHBhdHRlcm46IHN0cmluZywgZmllbGQ6IHN0cmluZykgPT4gUmVnRXhwKHBhdHRlcm4pLnRlc3QoZmllbGQpKVxuICAgICAgICAuYWRkMihcIm51bGxcIiwgXCIqXCIsIChfbiwgX2EpID0+IGZhbHNlKVxuICAgICAgICAuYWRkMihcIipcIiwgXCJudWxsXCIsIChfYSwgX24pID0+IGZhbHNlKVxuICAgICAgICAudmVjdG9yaXplKDIsIFswLCAxXSlcbiAgICAgICAgLmJ1aWxkKCk7XG5cbiAgICBleHBvcnQgY29uc3QgcmVnZXhtYXRjaCA9IG5ldyBGdW5jdGlvbkJ1aWxkZXIoXCJyZWdleG1hdGNoXCIpXG4gICAgICAgIC5hZGQyKFwic3RyaW5nXCIsIFwic3RyaW5nXCIsIChwYXR0ZXJuOiBzdHJpbmcsIGZpZWxkOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGlmICghcGF0dGVybi5zdGFydHNXaXRoKFwiXlwiKSAmJiAhcGF0dGVybi5lbmRzV2l0aChcIiRcIikpIHBhdHRlcm4gPSBcIl5cIiArIHBhdHRlcm4gKyBcIiRcIjtcbiAgICAgICAgICAgIHJldHVybiAhIWZpZWxkLm1hdGNoKHBhdHRlcm4pO1xuICAgICAgICB9KVxuICAgICAgICAuYWRkMihcIm51bGxcIiwgXCIqXCIsIChfbiwgX2EpID0+IGZhbHNlKVxuICAgICAgICAuYWRkMihcIipcIiwgXCJudWxsXCIsIChfYSwgX24pID0+IGZhbHNlKVxuICAgICAgICAudmVjdG9yaXplKDIsIFswLCAxXSlcbiAgICAgICAgLmJ1aWxkKCk7XG5cbiAgICBleHBvcnQgY29uc3QgcmVnZXhyZXBsYWNlID0gbmV3IEZ1bmN0aW9uQnVpbGRlcihcInJlZ2V4cmVwbGFjZVwiKVxuICAgICAgICAuYWRkMyhcInN0cmluZ1wiLCBcInN0cmluZ1wiLCBcInN0cmluZ1wiLCAoZmllbGQ6IHN0cmluZywgcGF0OiBzdHJpbmcsIHJlcDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxldCByZWcgPSBuZXcgUmVnRXhwKHBhdCwgXCJnXCIpO1xuICAgICAgICAgICAgICAgIHJldHVybiBmaWVsZC5yZXBsYWNlKHJlZywgcmVwKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoYEludmFsaWQgcmVnZXhwICcke3BhdH0nIGluIHJlZ2V4cmVwbGFjZWApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAuYWRkMyhcIm51bGxcIiwgXCIqXCIsIFwiKlwiLCAoKSA9PiBudWxsKVxuICAgICAgICAuYWRkMyhcIipcIiwgXCJudWxsXCIsIFwiKlwiLCAoKSA9PiBudWxsKVxuICAgICAgICAuYWRkMyhcIipcIiwgXCIqXCIsIFwibnVsbFwiLCAoKSA9PiBudWxsKVxuICAgICAgICAudmVjdG9yaXplKDMsIFswLCAxLCAyXSlcbiAgICAgICAgLmJ1aWxkKCk7XG5cbiAgICBleHBvcnQgY29uc3QgbG93ZXIgPSBuZXcgRnVuY3Rpb25CdWlsZGVyKFwibG93ZXJcIilcbiAgICAgICAgLmFkZDEoXCJzdHJpbmdcIiwgKHMpID0+IHMudG9Mb2NhbGVMb3dlckNhc2UoKSlcbiAgICAgICAgLmFkZDEoXCJudWxsXCIsICgpID0+IG51bGwpXG4gICAgICAgIC52ZWN0b3JpemUoMSwgWzBdKVxuICAgICAgICAuYnVpbGQoKTtcblxuICAgIGV4cG9ydCBjb25zdCB1cHBlciA9IG5ldyBGdW5jdGlvbkJ1aWxkZXIoXCJ1cHBlclwiKVxuICAgICAgICAuYWRkMShcInN0cmluZ1wiLCAocykgPT4gcy50b0xvY2FsZVVwcGVyQ2FzZSgpKVxuICAgICAgICAuYWRkMShcIm51bGxcIiwgKCkgPT4gbnVsbClcbiAgICAgICAgLnZlY3Rvcml6ZSgxLCBbMF0pXG4gICAgICAgIC5idWlsZCgpO1xuXG4gICAgZXhwb3J0IGNvbnN0IHJlcGxhY2UgPSBuZXcgRnVuY3Rpb25CdWlsZGVyKFwicmVwbGFjZVwiKVxuICAgICAgICAuYWRkMyhcInN0cmluZ1wiLCBcInN0cmluZ1wiLCBcInN0cmluZ1wiLCAoc3RyLCBwYXQsIHJlcHIpID0+IHN0ci5zcGxpdChwYXQpLmpvaW4ocmVwcikpXG4gICAgICAgIC5hZGQzKFwibnVsbFwiLCBcIipcIiwgXCIqXCIsICgpID0+IG51bGwpXG4gICAgICAgIC5hZGQzKFwiKlwiLCBcIm51bGxcIiwgXCIqXCIsICgpID0+IG51bGwpXG4gICAgICAgIC5hZGQzKFwiKlwiLCBcIipcIiwgXCJudWxsXCIsICgpID0+IG51bGwpXG4gICAgICAgIC52ZWN0b3JpemUoMywgWzAsIDEsIDJdKVxuICAgICAgICAuYnVpbGQoKTtcblxuICAgIC8vIEVuc3VyZSB1bmRlZmluZWQgbWF0Y2hlcyB0dXJuIGludG8gZW1wdHkgc3RyaW5ncyBmb3Igc3BsaXQvMiBhbmQgc3BsaXQvMy5cbiAgICBjb25zdCBzcGxpdEltcGwgPSAoc3RyOiBzdHJpbmcsIGRlbGltOiBzdHJpbmcsIGxpbWl0PzogbnVtYmVyKTogc3RyaW5nW10gPT5cbiAgICAgICAgc3RyLnNwbGl0KG5ldyBSZWdFeHAoZGVsaW0pLCBsaW1pdCkubWFwKChzdHIpID0+IHN0ciB8fCBcIlwiKTtcblxuICAgIC8qKiBTcGxpdCBhIHN0cmluZyBvbiBhIGdpdmVuIHN0cmluZy4gKi9cbiAgICBleHBvcnQgY29uc3Qgc3BsaXQ6IEZ1bmN0aW9uSW1wbCA9IG5ldyBGdW5jdGlvbkJ1aWxkZXIoXCJzcGxpdFwiKVxuICAgICAgICAuYWRkMihcInN0cmluZ1wiLCBcInN0cmluZ1wiLCAoc3RyaW5nLCBzcGxpdHRlcikgPT4gc3BsaXRJbXBsKHN0cmluZywgc3BsaXR0ZXIpKVxuICAgICAgICAuYWRkMyhcInN0cmluZ1wiLCBcInN0cmluZ1wiLCBcIm51bWJlclwiLCAoc3RyaW5nLCBzcGxpdHRlciwgbGltaXQpID0+IHNwbGl0SW1wbChzdHJpbmcsIHNwbGl0dGVyLCBsaW1pdCkpXG4gICAgICAgIC5hZGQyKFwibnVsbFwiLCBcIipcIiwgKCkgPT4gbnVsbClcbiAgICAgICAgLmFkZDIoXCIqXCIsIFwibnVsbFwiLCAoKSA9PiBudWxsKVxuICAgICAgICAuYWRkMyhcIipcIiwgXCIqXCIsIFwibnVsbFwiLCAoKSA9PiBudWxsKVxuICAgICAgICAuYWRkMyhcIipcIiwgXCJudWxsXCIsIFwiKlwiLCAoKSA9PiBudWxsKVxuICAgICAgICAuYWRkMyhcIm51bGxcIiwgXCIqXCIsIFwiKlwiLCAoKSA9PiBudWxsKVxuICAgICAgICAuYnVpbGQoKTtcblxuICAgIGV4cG9ydCBjb25zdCBzdGFydHN3aXRoOiBGdW5jdGlvbkltcGwgPSBuZXcgRnVuY3Rpb25CdWlsZGVyKFwic3RhcnRzd2l0aFwiKVxuICAgICAgICAuYWRkMihcInN0cmluZ1wiLCBcInN0cmluZ1wiLCAoc3RyLCBzdGFydGluZykgPT4gc3RyLnN0YXJ0c1dpdGgoc3RhcnRpbmcpKVxuICAgICAgICAuYWRkMihcIm51bGxcIiwgXCIqXCIsICgpID0+IG51bGwpXG4gICAgICAgIC5hZGQyKFwiKlwiLCBcIm51bGxcIiwgKCkgPT4gbnVsbClcbiAgICAgICAgLnZlY3Rvcml6ZSgyLCBbMCwgMV0pXG4gICAgICAgIC5idWlsZCgpO1xuXG4gICAgZXhwb3J0IGNvbnN0IGVuZHN3aXRoOiBGdW5jdGlvbkltcGwgPSBuZXcgRnVuY3Rpb25CdWlsZGVyKFwiZW5kc3dpdGhcIilcbiAgICAgICAgLmFkZDIoXCJzdHJpbmdcIiwgXCJzdHJpbmdcIiwgKHN0ciwgZW5kaW5nKSA9PiBzdHIuZW5kc1dpdGgoZW5kaW5nKSlcbiAgICAgICAgLmFkZDIoXCJudWxsXCIsIFwiKlwiLCAoKSA9PiBudWxsKVxuICAgICAgICAuYWRkMihcIipcIiwgXCJudWxsXCIsICgpID0+IG51bGwpXG4gICAgICAgIC52ZWN0b3JpemUoMiwgWzAsIDFdKVxuICAgICAgICAuYnVpbGQoKTtcblxuICAgIGV4cG9ydCBjb25zdCBwYWRsZWZ0OiBGdW5jdGlvbkltcGwgPSBuZXcgRnVuY3Rpb25CdWlsZGVyKFwicGFkbGVmdFwiKVxuICAgICAgICAuYWRkMihcInN0cmluZ1wiLCBcIm51bWJlclwiLCAoc3RyLCBsZW4pID0+IHN0ci5wYWRTdGFydChsZW4sIFwiIFwiKSlcbiAgICAgICAgLmFkZDMoXCJzdHJpbmdcIiwgXCJudW1iZXJcIiwgXCJzdHJpbmdcIiwgKHN0ciwgbGVuLCBwYWRkaW5nKSA9PiBzdHIucGFkU3RhcnQobGVuLCBwYWRkaW5nKSlcbiAgICAgICAgLmFkZDIoXCJudWxsXCIsIFwiKlwiLCAoKSA9PiBudWxsKVxuICAgICAgICAuYWRkMihcIipcIiwgXCJudWxsXCIsICgpID0+IG51bGwpXG4gICAgICAgIC5hZGQzKFwibnVsbFwiLCBcIipcIiwgXCIqXCIsICgpID0+IG51bGwpXG4gICAgICAgIC5hZGQzKFwiKlwiLCBcIm51bGxcIiwgXCIqXCIsICgpID0+IG51bGwpXG4gICAgICAgIC5hZGQzKFwiKlwiLCBcIipcIiwgXCJudWxsXCIsICgpID0+IG51bGwpXG4gICAgICAgIC52ZWN0b3JpemUoMiwgWzAsIDFdKVxuICAgICAgICAudmVjdG9yaXplKDMsIFswLCAxLCAyXSlcbiAgICAgICAgLmJ1aWxkKCk7XG5cbiAgICBleHBvcnQgY29uc3QgcGFkcmlnaHQ6IEZ1bmN0aW9uSW1wbCA9IG5ldyBGdW5jdGlvbkJ1aWxkZXIoXCJwYWRyaWdodFwiKVxuICAgICAgICAuYWRkMihcInN0cmluZ1wiLCBcIm51bWJlclwiLCAoc3RyLCBsZW4pID0+IHN0ci5wYWRFbmQobGVuLCBcIiBcIikpXG4gICAgICAgIC5hZGQzKFwic3RyaW5nXCIsIFwibnVtYmVyXCIsIFwic3RyaW5nXCIsIChzdHIsIGxlbiwgcGFkZGluZykgPT4gc3RyLnBhZEVuZChsZW4sIHBhZGRpbmcpKVxuICAgICAgICAuYWRkMihcIm51bGxcIiwgXCIqXCIsICgpID0+IG51bGwpXG4gICAgICAgIC5hZGQyKFwiKlwiLCBcIm51bGxcIiwgKCkgPT4gbnVsbClcbiAgICAgICAgLmFkZDMoXCJudWxsXCIsIFwiKlwiLCBcIipcIiwgKCkgPT4gbnVsbClcbiAgICAgICAgLmFkZDMoXCIqXCIsIFwibnVsbFwiLCBcIipcIiwgKCkgPT4gbnVsbClcbiAgICAgICAgLmFkZDMoXCIqXCIsIFwiKlwiLCBcIm51bGxcIiwgKCkgPT4gbnVsbClcbiAgICAgICAgLnZlY3Rvcml6ZSgyLCBbMCwgMV0pXG4gICAgICAgIC52ZWN0b3JpemUoMywgWzAsIDEsIDJdKVxuICAgICAgICAuYnVpbGQoKTtcblxuICAgIGV4cG9ydCBjb25zdCBzdWJzdHJpbmc6IEZ1bmN0aW9uSW1wbCA9IG5ldyBGdW5jdGlvbkJ1aWxkZXIoXCJzdWJzdHJpbmdcIilcbiAgICAgICAgLmFkZDIoXCJzdHJpbmdcIiwgXCJudW1iZXJcIiwgKHN0ciwgc3RhcnQpID0+IHN0ci5zdWJzdHJpbmcoc3RhcnQpKVxuICAgICAgICAuYWRkMyhcInN0cmluZ1wiLCBcIm51bWJlclwiLCBcIm51bWJlclwiLCAoc3RyLCBzdGFydCwgZW5kKSA9PiBzdHIuc3Vic3RyaW5nKHN0YXJ0LCBlbmQpKVxuICAgICAgICAuYWRkMihcIm51bGxcIiwgXCIqXCIsICgpID0+IG51bGwpXG4gICAgICAgIC5hZGQyKFwiKlwiLCBcIm51bGxcIiwgKCkgPT4gbnVsbClcbiAgICAgICAgLmFkZDMoXCJudWxsXCIsIFwiKlwiLCBcIipcIiwgKCkgPT4gbnVsbClcbiAgICAgICAgLmFkZDMoXCIqXCIsIFwibnVsbFwiLCBcIipcIiwgKCkgPT4gbnVsbClcbiAgICAgICAgLmFkZDMoXCIqXCIsIFwiKlwiLCBcIm51bGxcIiwgKCkgPT4gbnVsbClcbiAgICAgICAgLnZlY3Rvcml6ZSgyLCBbMCwgMV0pXG4gICAgICAgIC52ZWN0b3JpemUoMywgWzAsIDEsIDJdKVxuICAgICAgICAuYnVpbGQoKTtcblxuICAgIGV4cG9ydCBjb25zdCB0cnVuY2F0ZTogRnVuY3Rpb25JbXBsID0gbmV3IEZ1bmN0aW9uQnVpbGRlcihcInRydW5jYXRlXCIpXG4gICAgICAgIC5hZGQzKFwic3RyaW5nXCIsIFwibnVtYmVyXCIsIFwic3RyaW5nXCIsIChzdHIsIGxlbmd0aCwgc3VmZml4KSA9PiB7XG4gICAgICAgICAgICBpZiAoc3RyLmxlbmd0aCA+IGxlbmd0aCAtIHN1ZmZpeC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3RyLnN1YnN0cmluZygwLCBNYXRoLm1heCgwLCBsZW5ndGggLSBzdWZmaXgubGVuZ3RoKSkgKyBzdWZmaXg7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBzdHI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC5hZGQyKFwic3RyaW5nXCIsIFwibnVtYmVyXCIsIChzdHIsIGxlbmd0aCwgY3R4KSA9PiB0cnVuY2F0ZShjdHgsIHN0ciwgbGVuZ3RoLCBcIi4uLlwiKSlcbiAgICAgICAgLmFkZDIoXCJudWxsXCIsIFwiKlwiLCAoKSA9PiBudWxsKVxuICAgICAgICAuYWRkMihcIipcIiwgXCJudWxsXCIsICgpID0+IG51bGwpXG4gICAgICAgIC5hZGQzKFwibnVsbFwiLCBcIipcIiwgXCIqXCIsICgpID0+IG51bGwpXG4gICAgICAgIC5hZGQzKFwiKlwiLCBcIm51bGxcIiwgXCIqXCIsICgpID0+IG51bGwpXG4gICAgICAgIC5hZGQzKFwiKlwiLCBcIipcIiwgXCJudWxsXCIsICgpID0+IG51bGwpXG4gICAgICAgIC52ZWN0b3JpemUoMiwgWzAsIDFdKVxuICAgICAgICAudmVjdG9yaXplKDMsIFswLCAxLCAyXSlcbiAgICAgICAgLmJ1aWxkKCk7XG5cbiAgICBleHBvcnQgY29uc3QgZmRlZmF1bHQgPSBuZXcgRnVuY3Rpb25CdWlsZGVyKFwiZGVmYXVsdFwiKVxuICAgICAgICAuYWRkMihcIipcIiwgXCIqXCIsICh2LCBiaykgPT4gKExpdGVyYWxzLmlzTnVsbCh2KSA/IGJrIDogdikpXG4gICAgICAgIC52ZWN0b3JpemUoMiwgWzAsIDFdKVxuICAgICAgICAuYnVpbGQoKTtcblxuICAgIGV4cG9ydCBjb25zdCBsZGVmYXVsdCA9IG5ldyBGdW5jdGlvbkJ1aWxkZXIoXCJsZGVmYXVsdFwiKVxuICAgICAgICAuYWRkMihcIipcIiwgXCIqXCIsICh2LCBiaykgPT4gKExpdGVyYWxzLmlzTnVsbCh2KSA/IGJrIDogdikpXG4gICAgICAgIC5idWlsZCgpO1xuXG4gICAgZXhwb3J0IGNvbnN0IGNob2ljZSA9IG5ldyBGdW5jdGlvbkJ1aWxkZXIoXCJjaG9pY2VcIilcbiAgICAgICAgLmFkZDMoXCIqXCIsIFwiKlwiLCBcIipcIiwgKGIsIGxlZnQsIHJpZ2h0KSA9PiAoTGl0ZXJhbHMuaXNUcnV0aHkoYikgPyBsZWZ0IDogcmlnaHQpKVxuICAgICAgICAudmVjdG9yaXplKDMsIFswXSlcbiAgICAgICAgLmJ1aWxkKCk7XG5cbiAgICBleHBvcnQgY29uc3QgcmVkdWNlID0gbmV3IEZ1bmN0aW9uQnVpbGRlcihcInJlZHVjZVwiKVxuICAgICAgICAuYWRkMihcImFycmF5XCIsIFwic3RyaW5nXCIsIChsaXMsIG9wLCBjb250ZXh0KSA9PiB7XG4gICAgICAgICAgICBpZiAobGlzLmxlbmd0aCA9PSAwKSByZXR1cm4gbnVsbDtcblxuICAgICAgICAgICAgaWYgKG9wICE9IFwiK1wiICYmIG9wICE9IFwiLVwiICYmIG9wICE9IFwiKlwiICYmIG9wICE9IFwiL1wiICYmIG9wICE9IFwiJlwiICYmIG9wICE9IFwifFwiKVxuICAgICAgICAgICAgICAgIHRocm93IEVycm9yKFwicmVkdWNlKGFycmF5LCBvcCkgc3VwcG9ydHMgJysnLCAnLScsICcvJywgJyonLCAnJicsIGFuZCAnfCdcIik7XG5cbiAgICAgICAgICAgIGxldCB2YWx1ZSA9IGxpc1swXTtcbiAgICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gMTsgaW5kZXggPCBsaXMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSBjb250ZXh0XG4gICAgICAgICAgICAgICAgICAgIC5ldmFsdWF0ZShFeHByZXNzaW9ucy5iaW5hcnlPcChFeHByZXNzaW9ucy5saXRlcmFsKHZhbHVlKSwgb3AsIEV4cHJlc3Npb25zLmxpdGVyYWwobGlzW2luZGV4XSkpKVxuICAgICAgICAgICAgICAgICAgICAub3JFbHNlVGhyb3coKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9KVxuICAgICAgICAuYWRkMihcImFycmF5XCIsIFwiZnVuY3Rpb25cIiwgKGxpcywgb3AsIGNvbnRleHQpID0+IHtcbiAgICAgICAgICAgIGlmIChsaXMubGVuZ3RoID09IDApIHJldHVybiBudWxsO1xuXG4gICAgICAgICAgICBsZXQgdmFsdWUgPSBsaXNbMF07XG4gICAgICAgICAgICBmb3IgKGxldCBpbmRleCA9IDE7IGluZGV4IDwgbGlzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgICAgICAgIC8vIFNraXAgbnVsbCB2YWx1ZXMgdG8gcmVkdWNlIHRoZSBwYWluIG9mIHN1bW1pbmcgb3ZlciBmaWVsZHMgdGhhdCBtYXkgb3IgbWF5IG5vdCBleGlzdC5cbiAgICAgICAgICAgICAgICBpZiAoTGl0ZXJhbHMuaXNOdWxsKGxpc1tpbmRleF0pKSBjb250aW51ZTtcblxuICAgICAgICAgICAgICAgIHZhbHVlID0gb3AoY29udGV4dCwgdmFsdWUsIGxpc1tpbmRleF0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH0pXG4gICAgICAgIC5hZGQyKFwibnVsbFwiLCBcIipcIiwgKCkgPT4gbnVsbClcbiAgICAgICAgLmFkZDIoXCIqXCIsIFwibnVsbFwiLCAoKSA9PiBudWxsKVxuICAgICAgICAudmVjdG9yaXplKDIsIFsxXSlcbiAgICAgICAgLmJ1aWxkKCk7XG5cbiAgICBleHBvcnQgY29uc3Qgc3VtID0gbmV3IEZ1bmN0aW9uQnVpbGRlcihcInN1bVwiKVxuICAgICAgICAuYWRkMShcImFycmF5XCIsIChhcnIsIGMpID0+IHJlZHVjZShjLCBhcnIsIFwiK1wiKSlcbiAgICAgICAgLmFkZDEoXCIqXCIsIChlKSA9PiBlKVxuICAgICAgICAuYnVpbGQoKTtcblxuICAgIGV4cG9ydCBjb25zdCBhdmVyYWdlID0gbmV3IEZ1bmN0aW9uQnVpbGRlcihcImF2ZXJhZ2VcIilcbiAgICAgICAgLmFkZDEoXCJhcnJheVwiLCAoYXJyYXksIGNvbnRleHQpID0+IHtcbiAgICAgICAgICAgIGlmIChhcnJheS5sZW5ndGggPT0gMCkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgICAgIGNvbnN0IGFkZCA9IHN1bShjb250ZXh0LCBhcnJheSk7XG4gICAgICAgICAgICBpZiAoYWRkID09IG51bGwgfHwgYWRkID09IHVuZGVmaW5lZCkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgICAgIHJldHVybiBjb250ZXh0XG4gICAgICAgICAgICAgICAgLmV2YWx1YXRlKEV4cHJlc3Npb25zLmJpbmFyeU9wKEV4cHJlc3Npb25zLmxpdGVyYWwoYWRkKSwgXCIvXCIsIEV4cHJlc3Npb25zLmxpdGVyYWwoYXJyYXkubGVuZ3RoKSkpXG4gICAgICAgICAgICAgICAgLm9yRWxzZVRocm93KCk7XG4gICAgICAgIH0pXG4gICAgICAgIC5hZGQxKFwiKlwiLCAoZSkgPT4gZSlcbiAgICAgICAgLmJ1aWxkKCk7XG5cbiAgICBleHBvcnQgY29uc3QgcHJvZHVjdCA9IG5ldyBGdW5jdGlvbkJ1aWxkZXIoXCJwcm9kdWN0XCIpXG4gICAgICAgIC5hZGQxKFwiYXJyYXlcIiwgKGFyciwgYykgPT4gcmVkdWNlKGMsIGFyciwgXCIqXCIpKVxuICAgICAgICAuYWRkMShcIipcIiwgKGUpID0+IGUpXG4gICAgICAgIC5idWlsZCgpO1xuXG4gICAgZXhwb3J0IGNvbnN0IGpvaW46IEZ1bmN0aW9uSW1wbCA9IG5ldyBGdW5jdGlvbkJ1aWxkZXIoXCJqb2luXCIpXG4gICAgICAgIC5hZGQyKFwiYXJyYXlcIiwgXCJzdHJpbmdcIiwgKGFyciwgc2VwLCBjdHgpID0+XG4gICAgICAgICAgICBhcnIubWFwKChlKSA9PiBMaXRlcmFscy50b1N0cmluZyhlLCBzdHJpbmdTZXR0aW5ncyhjdHguc2V0dGluZ3MpKSkuam9pbihzZXApXG4gICAgICAgIClcbiAgICAgICAgLmFkZDIoXCJhcnJheVwiLCBcIm51bGxcIiwgKGFyciwgX3MsIGNvbnRleHQpID0+IGpvaW4oY29udGV4dCwgYXJyLCBcIiwgXCIpKVxuICAgICAgICAuYWRkMihcIipcIiwgXCJzdHJpbmdcIiwgKGVsZW0sIHNlcCwgY3R4KSA9PiBMaXRlcmFscy50b1N0cmluZyhlbGVtLCBzdHJpbmdTZXR0aW5ncyhjdHguc2V0dGluZ3MpKSlcbiAgICAgICAgLmFkZDEoXCJhcnJheVwiLCAoYXJyLCBjb250ZXh0KSA9PiBqb2luKGNvbnRleHQsIGFyciwgXCIsIFwiKSlcbiAgICAgICAgLmFkZDEoXCIqXCIsIChlLCBjdHgpID0+IExpdGVyYWxzLnRvU3RyaW5nKGUsIHN0cmluZ1NldHRpbmdzKGN0eC5zZXR0aW5ncykpKVxuICAgICAgICAudmVjdG9yaXplKDIsIFsxXSlcbiAgICAgICAgLmJ1aWxkKCk7XG5cbiAgICBleHBvcnQgY29uc3QgYW55ID0gbmV3IEZ1bmN0aW9uQnVpbGRlcihcImFueVwiKVxuICAgICAgICAuYWRkMShcImFycmF5XCIsIChhcnIpID0+IGFyci5zb21lKCh2KSA9PiBMaXRlcmFscy5pc1RydXRoeSh2KSkpXG4gICAgICAgIC5hZGQyKFwiYXJyYXlcIiwgXCJmdW5jdGlvblwiLCAoYXJyLCBmLCBjdHgpID0+IGFyci5zb21lKCh2KSA9PiBMaXRlcmFscy5pc1RydXRoeShmKGN0eCwgdikpKSlcbiAgICAgICAgLnZhcmFyZygoX2N0eCwgLi4uYXJncykgPT4gYXJncy5zb21lKCh2KSA9PiBMaXRlcmFscy5pc1RydXRoeSh2KSkpXG4gICAgICAgIC5idWlsZCgpO1xuXG4gICAgZXhwb3J0IGNvbnN0IGFsbCA9IG5ldyBGdW5jdGlvbkJ1aWxkZXIoXCJhbGxcIilcbiAgICAgICAgLmFkZDEoXCJhcnJheVwiLCAoYXJyKSA9PiBhcnIuZXZlcnkoKHYpID0+IExpdGVyYWxzLmlzVHJ1dGh5KHYpKSlcbiAgICAgICAgLmFkZDIoXCJhcnJheVwiLCBcImZ1bmN0aW9uXCIsIChhcnIsIGYsIGN0eCkgPT4gYXJyLmV2ZXJ5KCh2KSA9PiBMaXRlcmFscy5pc1RydXRoeShmKGN0eCwgdikpKSlcbiAgICAgICAgLnZhcmFyZygoX2N0eCwgLi4uYXJncykgPT4gYXJncy5ldmVyeSgodikgPT4gTGl0ZXJhbHMuaXNUcnV0aHkodikpKVxuICAgICAgICAuYnVpbGQoKTtcblxuICAgIGV4cG9ydCBjb25zdCBub25lID0gbmV3IEZ1bmN0aW9uQnVpbGRlcihcImFsbFwiKVxuICAgICAgICAuYWRkMShcImFycmF5XCIsIChhcnIpID0+ICFhcnIuc29tZSgodikgPT4gTGl0ZXJhbHMuaXNUcnV0aHkodikpKVxuICAgICAgICAuYWRkMihcImFycmF5XCIsIFwiZnVuY3Rpb25cIiwgKGFyciwgZiwgY3R4KSA9PiAhYXJyLnNvbWUoKHYpID0+IExpdGVyYWxzLmlzVHJ1dGh5KGYoY3R4LCB2KSkpKVxuICAgICAgICAudmFyYXJnKChfY3R4LCAuLi5hcmdzKSA9PiAhYXJncy5zb21lKCh2KSA9PiBMaXRlcmFscy5pc1RydXRoeSh2KSkpXG4gICAgICAgIC5idWlsZCgpO1xuXG4gICAgZXhwb3J0IGNvbnN0IGZpbHRlciA9IG5ldyBGdW5jdGlvbkJ1aWxkZXIoXCJmaWx0ZXJcIilcbiAgICAgICAgLmFkZDIoXCJhcnJheVwiLCBcImZ1bmN0aW9uXCIsIChhcnIsIGYsIGN0eCkgPT4gYXJyLmZpbHRlcigodikgPT4gTGl0ZXJhbHMuaXNUcnV0aHkoZihjdHgsIHYpKSkpXG4gICAgICAgIC5hZGQyKFwibnVsbFwiLCBcIipcIiwgKCkgPT4gbnVsbClcbiAgICAgICAgLmJ1aWxkKCk7XG5cbiAgICBleHBvcnQgY29uc3QgbWFwID0gbmV3IEZ1bmN0aW9uQnVpbGRlcihcIm1hcFwiKVxuICAgICAgICAuYWRkMihcImFycmF5XCIsIFwiZnVuY3Rpb25cIiwgKGFyciwgZiwgY3R4KSA9PiBhcnIubWFwKCh2KSA9PiBmKGN0eCwgdikpKVxuICAgICAgICAuYWRkMihcIm51bGxcIiwgXCIqXCIsICgpID0+IG51bGwpXG4gICAgICAgIC5idWlsZCgpO1xuXG4gICAgZXhwb3J0IGNvbnN0IG5vbm51bGwgPSBuZXcgRnVuY3Rpb25CdWlsZGVyKFwibm9ubnVsbFwiKVxuICAgICAgICAuYWRkMShcImFycmF5XCIsIChhcnIpID0+IGFyci5maWx0ZXIoKHYpID0+IExpdGVyYWxzLnR5cGVPZih2KSAhPSBcIm51bGxcIikpXG4gICAgICAgIC52YXJhcmcoKF9jdHgsIC4uLmFyZ3MpID0+IGFyZ3MuZmlsdGVyKCh2KSA9PiBMaXRlcmFscy50eXBlT2YodikgIT0gXCJudWxsXCIpKVxuICAgICAgICAuYnVpbGQoKTtcblxuICAgIC8qKiBHZXRzIGFuIG9iamVjdCBjb250YWluaW5nIGEgbGluaydzIG93biBwcm9wZXJ0aWVzICovXG4gICAgZXhwb3J0IGNvbnN0IG1ldGE6IEZ1bmN0aW9uSW1wbCA9IG5ldyBGdW5jdGlvbkJ1aWxkZXIoXCJtZXRhXCIpXG4gICAgICAgIC5hZGQxKFwibGlua1wiLCAobGluaykgPT4gKHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGxpbmsuZGlzcGxheSA/PyBudWxsLFxuICAgICAgICAgICAgZW1iZWQ6IGxpbmsuZW1iZWQsXG4gICAgICAgICAgICBwYXRoOiBsaW5rLnBhdGgsXG4gICAgICAgICAgICBzdWJwYXRoOiBsaW5rLnN1YnBhdGggPz8gbnVsbCxcbiAgICAgICAgICAgIHR5cGU6IGxpbmsudHlwZSxcbiAgICAgICAgfSkpXG4gICAgICAgIC5idWlsZCgpO1xuXG4gICAgLy8gQ29uY2F0ZW5hdGVzIHN1Yi1hcnJheSBlbGVtZW50cyBpbnRvIGEgbmV3IGFycmF5XG4gICAgZXhwb3J0IGNvbnN0IGZsYXQgPSBuZXcgRnVuY3Rpb25CdWlsZGVyKFwiZmxhdFwiKVxuICAgICAgICAuYWRkMShcImFycmF5XCIsIChhKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYS5mbGF0KCk7XG4gICAgICAgIH0pXG4gICAgICAgIC5hZGQyKFwiYXJyYXlcIiwgXCJudW1iZXJcIiwgKGEsIG4pID0+IHtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIHJldHVybiBhLmZsYXQobik7XG4gICAgICAgIH0pXG4gICAgICAgIC5hZGQxKFwibnVsbFwiLCAoKSA9PiBudWxsKVxuICAgICAgICAuYnVpbGQoKTtcbn1cblxuLyoqIERlZmF1bHQgZnVuY3Rpb24gaW1wbGVtZW50YXRpb25zIGZvciB0aGUgZXhwcmVzc2lvbiBldmFsdWF0b3IuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9GVU5DVElPTlM6IFJlY29yZDxzdHJpbmcsIEZ1bmN0aW9uSW1wbD4gPSB7XG4gICAgLy8gQ29uc3RydWN0b3JzLlxuICAgIGxpc3Q6IERlZmF1bHRGdW5jdGlvbnMubGlzdCxcbiAgICBhcnJheTogRGVmYXVsdEZ1bmN0aW9ucy5saXN0LFxuICAgIGxpbms6IERlZmF1bHRGdW5jdGlvbnMubGluayxcbiAgICBlbWJlZDogRGVmYXVsdEZ1bmN0aW9ucy5lbWJlZCxcbiAgICBkYXRlOiBEZWZhdWx0RnVuY3Rpb25zLmRhdGUsXG4gICAgZHVyOiBEZWZhdWx0RnVuY3Rpb25zLmR1cixcbiAgICBkYXRlZm9ybWF0OiBEZWZhdWx0RnVuY3Rpb25zLmRhdGVmb3JtYXQsXG4gICAgbG9jYWx0aW1lOiBEZWZhdWx0RnVuY3Rpb25zLmxvY2FsdGltZSxcbiAgICBudW1iZXI6IERlZmF1bHRGdW5jdGlvbnMubnVtYmVyLFxuICAgIHN0cmluZzogRGVmYXVsdEZ1bmN0aW9ucy5zdHJpbmcsXG4gICAgb2JqZWN0OiBEZWZhdWx0RnVuY3Rpb25zLm9iamVjdCxcbiAgICB0eXBlb2Y6IERlZmF1bHRGdW5jdGlvbnMudHlwZU9mLFxuXG4gICAgLy8gTWF0aCBPcGVyYXRpb25zLlxuICAgIHJvdW5kOiBEZWZhdWx0RnVuY3Rpb25zLnJvdW5kLFxuICAgIG1pbjogRGVmYXVsdEZ1bmN0aW9ucy5taW4sXG4gICAgbWF4OiBEZWZhdWx0RnVuY3Rpb25zLm1heCxcbiAgICBtaW5ieTogRGVmYXVsdEZ1bmN0aW9ucy5taW5ieSxcbiAgICBtYXhieTogRGVmYXVsdEZ1bmN0aW9ucy5tYXhieSxcblxuICAgIC8vIFN0cmluZyBvcGVyYXRpb25zLlxuICAgIHJlZ2V4cmVwbGFjZTogRGVmYXVsdEZ1bmN0aW9ucy5yZWdleHJlcGxhY2UsXG4gICAgcmVnZXh0ZXN0OiBEZWZhdWx0RnVuY3Rpb25zLnJlZ2V4dGVzdCxcbiAgICByZWdleG1hdGNoOiBEZWZhdWx0RnVuY3Rpb25zLnJlZ2V4bWF0Y2gsXG4gICAgcmVwbGFjZTogRGVmYXVsdEZ1bmN0aW9ucy5yZXBsYWNlLFxuICAgIGxvd2VyOiBEZWZhdWx0RnVuY3Rpb25zLmxvd2VyLFxuICAgIHVwcGVyOiBEZWZhdWx0RnVuY3Rpb25zLnVwcGVyLFxuICAgIHNwbGl0OiBEZWZhdWx0RnVuY3Rpb25zLnNwbGl0LFxuICAgIHN0YXJ0c3dpdGg6IERlZmF1bHRGdW5jdGlvbnMuc3RhcnRzd2l0aCxcbiAgICBlbmRzd2l0aDogRGVmYXVsdEZ1bmN0aW9ucy5lbmRzd2l0aCxcbiAgICBwYWRsZWZ0OiBEZWZhdWx0RnVuY3Rpb25zLnBhZGxlZnQsXG4gICAgcGFkcmlnaHQ6IERlZmF1bHRGdW5jdGlvbnMucGFkcmlnaHQsXG4gICAgc3Vic3RyaW5nOiBEZWZhdWx0RnVuY3Rpb25zLnN1YnN0cmluZyxcbiAgICB0cnVuY2F0ZTogRGVmYXVsdEZ1bmN0aW9ucy50cnVuY2F0ZSxcblxuICAgIC8vIERhdGUgT3BlcmF0aW9ucy5cbiAgICBzdHJpcHRpbWU6IERlZmF1bHRGdW5jdGlvbnMuc3RyaXB0aW1lLFxuXG4gICAgLy8gTGlzdCBvcGVyYXRpb25zLlxuICAgIGxlbmd0aDogRGVmYXVsdEZ1bmN0aW9ucy5sZW5ndGgsXG4gICAgY29udGFpbnM6IERlZmF1bHRGdW5jdGlvbnMuY29udGFpbnMsXG4gICAgaWNvbnRhaW5zOiBEZWZhdWx0RnVuY3Rpb25zLmljb250YWlucyxcbiAgICBlY29udGFpbnM6IERlZmF1bHRGdW5jdGlvbnMuZWNvbnRhaW5zLFxuICAgIGNvbnRhaW5zd29yZDogRGVmYXVsdEZ1bmN0aW9ucy5jb250YWluc3dvcmQsXG4gICAgcmV2ZXJzZTogRGVmYXVsdEZ1bmN0aW9ucy5yZXZlcnNlLFxuICAgIHNvcnQ6IERlZmF1bHRGdW5jdGlvbnMuc29ydCxcbiAgICBmbGF0OiBEZWZhdWx0RnVuY3Rpb25zLmZsYXQsXG5cbiAgICAvLyBBZ2dyZWdhdGlvbiBvcGVyYXRpb25zIGxpa2UgcmVkdWNlLlxuICAgIHJlZHVjZTogRGVmYXVsdEZ1bmN0aW9ucy5yZWR1Y2UsXG4gICAgam9pbjogRGVmYXVsdEZ1bmN0aW9ucy5qb2luLFxuICAgIHN1bTogRGVmYXVsdEZ1bmN0aW9ucy5zdW0sXG4gICAgcHJvZHVjdDogRGVmYXVsdEZ1bmN0aW9ucy5wcm9kdWN0LFxuICAgIGF2ZXJhZ2U6IERlZmF1bHRGdW5jdGlvbnMuYXZlcmFnZSxcbiAgICBhbGw6IERlZmF1bHRGdW5jdGlvbnMuYWxsLFxuICAgIGFueTogRGVmYXVsdEZ1bmN0aW9ucy5hbnksXG4gICAgbm9uZTogRGVmYXVsdEZ1bmN0aW9ucy5ub25lLFxuICAgIGZpbHRlcjogRGVmYXVsdEZ1bmN0aW9ucy5maWx0ZXIsXG4gICAgbWFwOiBEZWZhdWx0RnVuY3Rpb25zLm1hcCxcbiAgICBub25udWxsOiBEZWZhdWx0RnVuY3Rpb25zLm5vbm51bGwsXG5cbiAgICAvLyBPYmplY3QvVXRpbGl0eSBvcGVyYXRpb25zLlxuICAgIGV4dHJhY3Q6IERlZmF1bHRGdW5jdGlvbnMuZXh0cmFjdCxcbiAgICBkZWZhdWx0OiBEZWZhdWx0RnVuY3Rpb25zLmZkZWZhdWx0LFxuICAgIGxkZWZhdWx0OiBEZWZhdWx0RnVuY3Rpb25zLmxkZWZhdWx0LFxuICAgIGNob2ljZTogRGVmYXVsdEZ1bmN0aW9ucy5jaG9pY2UsXG4gICAgbWV0YTogRGVmYXVsdEZ1bmN0aW9ucy5tZXRhLFxufTtcbiIsICIvKiogQ29yZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgcXVlcnkgbGFuZ3VhZ2UgZXZhbHVhdGlvbiBlbmdpbmUuICovXG5cbmltcG9ydCB7IERhdGFPYmplY3QsIExpbmssIExpdGVyYWwsIExpdGVyYWxzIH0gZnJvbSBcImV4cHJlc3Npb24vbGl0ZXJhbFwiO1xuaW1wb3J0IHsgUmVzdWx0IH0gZnJvbSBcImFwaS9yZXN1bHRcIjtcbmltcG9ydCB7IEJpbmFyeU9wSGFuZGxlciwgY3JlYXRlQmluYXJ5T3BzIH0gZnJvbSBcIi4vYmluYXJ5b3BcIjtcbmltcG9ydCB7IEV4cHJlc3Npb24sIEV4cHJlc3Npb25zIH0gZnJvbSBcImV4cHJlc3Npb24vZXhwcmVzc2lvblwiO1xuaW1wb3J0IHsgREVGQVVMVF9GVU5DVElPTlMsIEZ1bmN0aW9uSW1wbCB9IGZyb20gXCIuL2Z1bmN0aW9uc1wiO1xuaW1wb3J0IHsgU2V0dGluZ3MgfSBmcm9tIFwic2V0dGluZ3NcIjtcbmltcG9ydCB7IEZpZWxkYmVhcmluZywgRmllbGRiZWFyaW5ncyB9IGZyb20gXCIuL2ZpZWxkXCI7XG5cbi8qKiBIYW5kbGVzIGxpbmsgcmVzb2x1dGlvbiBhbmQgbm9ybWFsaXphdGlvbiBpbnNpZGUgb2YgYSBjb250ZXh0LiAqL1xuZXhwb3J0IGludGVyZmFjZSBMaW5rSGFuZGxlciB7XG4gICAgLyoqIFJlc29sdmUgYSBsaW5rIHRvIHRoZSBtZXRhZGF0YSBpdCBjb250YWlucy4gKi9cbiAgICByZXNvbHZlKHBhdGg6IHN0cmluZyB8IExpbmspOiBEYXRhT2JqZWN0IHwgbnVsbDtcbiAgICAvKipcbiAgICAgKiBOb3JtYWxpemUgYSBsaW5rIHRvIGl0J3MgZnVsbHktcXVhbGlmaWVkIHBhdGggZm9yIGNvbXBhcmlzb24gcHVycG9zZXMuXG4gICAgICogSWYgdGhlIHBhdGggZG9lcyBub3QgZXhpc3QsIHJldHVybnMgaXQgdW5jaGFuZ2VkLlxuICAgICAqL1xuICAgIG5vcm1hbGl6ZShwYXRoOiBzdHJpbmcpOiBzdHJpbmc7XG4gICAgLyoqIFJldHVybiB0cnVlIGlmIHRoZSBnaXZlbiBwYXRoIGFjdHVhbGx5IGV4aXN0cywgZmFsc2Ugb3RoZXJ3aXNlLiAqL1xuICAgIGV4aXN0cyhwYXRoOiBzdHJpbmcpOiBib29sZWFuO1xufVxuXG4vKiogU291cmNlIG9mIHZhcmlhYmxlcyB3aGljaCBjYW4gYmUgcmVmZXJlbmNlZCBpbiB0aGUgZXZhbHVhdG9yLiAqL1xuZXhwb3J0IGludGVyZmFjZSBWYXJpYWJsZXMge1xuICAgIC8qKiBSZW5kZXIgdGhlIGVudGlyZSB2YXJpYWJsZSBzdG9yZSB0byBhIGtleS12YWx1ZSBtYXAuICovXG4gICAgYWxsKCk6IERhdGFPYmplY3Q7XG5cbiAgICAvKiogUmVzb2x2ZSBhIHZhcmlhYmxlIGJ5IG5hbWUuICovXG4gICAgcmVzb2x2ZShuYW1lOiBzdHJpbmcpOiBMaXRlcmFsIHwgdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIEV2YWx1YXRpb24gY29udGV4dCB0aGF0IGV4cHJlc3Npb25zIGNhbiBiZSBldmFsdWF0ZWQgaW4uIEluY2x1ZGVzIGdsb2JhbCBzdGF0ZSwgYXMgd2VsbCBhcyBhdmFpbGFibGUgZnVuY3Rpb25zIGFuZCBhIGhhbmRsZXJcbiAqIGZvciBiaW5hcnkgb3BlcmF0b3JzLlxuICovXG5leHBvcnQgY2xhc3MgRXZhbHVhdG9yIHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGUgYSBuZXcgY29udGV4dCB3aXRoIHRoZSBnaXZlbiBuYW1lc3BhY2Ugb2YgZ2xvYmFscywgYXMgd2VsbCBhcyBvcHRpb25hbGx5IHdpdGggY3VzdG9tIGJpbmFyeSBvcGVyYXRvciwgZnVuY3Rpb24sXG4gICAgICogYW5kIGxpbmsgaGFuZGxlcnMuXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgbGlua0hhbmRsZXI6IExpbmtIYW5kbGVyLFxuICAgICAgICBwdWJsaWMgc2V0dGluZ3M6IFNldHRpbmdzLFxuICAgICAgICBwdWJsaWMgZ2xvYmFsczogUmVjb3JkPHN0cmluZywgTGl0ZXJhbD4gPSB7fSxcbiAgICAgICAgcHVibGljIGJpbmFyeU9wczogQmluYXJ5T3BIYW5kbGVyID0gY3JlYXRlQmluYXJ5T3BzKGxpbmtIYW5kbGVyLm5vcm1hbGl6ZSksXG4gICAgICAgIHB1YmxpYyBmdW5jdGlvbnM6IFJlY29yZDxzdHJpbmcsIEZ1bmN0aW9uSW1wbD4gPSBERUZBVUxUX0ZVTkNUSU9OU1xuICAgICkge31cblxuICAgIC8qKiBTZXQgYSBnbG9iYWwgdmFsdWUgaW4gdGhpcyBjb250ZXh0LiAqL1xuICAgIHB1YmxpYyBzZXQobmFtZTogc3RyaW5nLCB2YWx1ZTogTGl0ZXJhbCk6IEV2YWx1YXRvciB7XG4gICAgICAgIHRoaXMuZ2xvYmFsc1tuYW1lXSA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKiogR2V0IHRoZSB2YWx1ZSBvZiBhIGdsb2JhbCB2YXJpYWJsZSBieSBuYW1lLiBSZXR1cm5zIG51bGwgaWYgbm90IHByZXNlbnQuICovXG4gICAgcHVibGljIGdldChuYW1lOiBzdHJpbmcpOiBMaXRlcmFsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2xvYmFsc1tuYW1lXSA/PyBudWxsO1xuICAgIH1cblxuICAgIC8qKiBUcnkgdG8gZXZhbHVhdGUgYW4gYXJiaXRyYXJ5IGV4cHJlc3Npb24gaW4gdGhpcyBjb250ZXh0LCByYWlzaW5nIGFuIGV4Y2VwdGlvbiBvbiBmYWlsdXJlLiAqL1xuICAgIHB1YmxpYyB0cnlFdmFsdWF0ZShleHByOiBFeHByZXNzaW9uLCB2YXJpYWJsZXM6IFZhcmlhYmxlcyA9IFZhcmlhYmxlcy5lbXB0eSgpKTogTGl0ZXJhbCB7XG4gICAgICAgIHJldHVybiB0aGlzLmV2YWx1YXRlKGV4cHIsIHZhcmlhYmxlcykub3JFbHNlVGhyb3coKTtcbiAgICB9XG5cbiAgICAvKiogRXZhbHVhdGUgYW4gYXJiaXRyYXJ5IGV4cHJlc3Npb24gaW4gdGhpcyBjb250ZXh0LiAqL1xuICAgIHB1YmxpYyBldmFsdWF0ZShleHByOiBFeHByZXNzaW9uLCB2YXJpYWJsZXM6IFZhcmlhYmxlcyA9IFZhcmlhYmxlcy5lbXB0eSgpKTogUmVzdWx0PExpdGVyYWwsIHN0cmluZz4ge1xuICAgICAgICBzd2l0Y2ggKGV4cHIudHlwZSkge1xuICAgICAgICAgICAgY2FzZSBcImxpdGVyYWxcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gUmVzdWx0LnN1Y2Nlc3MoZXhwci52YWx1ZSk7XG4gICAgICAgICAgICBjYXNlIFwidmFyaWFibGVcIjpcbiAgICAgICAgICAgICAgICBpZiAoZXhwci5uYW1lID09PSBFeHByZXNzaW9ucy5ST1cpIHJldHVybiBSZXN1bHQuc3VjY2Vzcyh2YXJpYWJsZXMuYWxsKCkpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgcmVzb2x2ZWQgPSB2YXJpYWJsZXMucmVzb2x2ZShleHByLm5hbWUpO1xuICAgICAgICAgICAgICAgIGlmIChyZXNvbHZlZCAhPT0gdW5kZWZpbmVkKSByZXR1cm4gUmVzdWx0LnN1Y2Nlc3MocmVzb2x2ZWQpO1xuICAgICAgICAgICAgICAgIGlmIChleHByLm5hbWUgaW4gdGhpcy5nbG9iYWxzKSByZXR1cm4gUmVzdWx0LnN1Y2Nlc3ModGhpcy5nbG9iYWxzW2V4cHIubmFtZV0pO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIFJlc3VsdC5zdWNjZXNzKG51bGwpO1xuICAgICAgICAgICAgY2FzZSBcIm5lZ2F0ZWRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5ldmFsdWF0ZShleHByLmNoaWxkLCB2YXJpYWJsZXMpLm1hcCgocykgPT4gIUxpdGVyYWxzLmlzVHJ1dGh5KHMpKTtcbiAgICAgICAgICAgIGNhc2UgXCJiaW5hcnlvcFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBSZXN1bHQuZmxhdE1hcDIoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZXZhbHVhdGUoZXhwci5sZWZ0LCB2YXJpYWJsZXMpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmV2YWx1YXRlKGV4cHIucmlnaHQsIHZhcmlhYmxlcyksXG4gICAgICAgICAgICAgICAgICAgIChhLCBiKSA9PiB0aGlzLmJpbmFyeU9wcy5ldmFsdWF0ZShleHByLm9wLCBhLCBiLCB0aGlzKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjYXNlIFwibGlzdFwiOlxuICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSBbXTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBjaGlsZCBvZiBleHByLnZhbHVlcykge1xuICAgICAgICAgICAgICAgICAgICBsZXQgc3ViZXZhbCA9IHRoaXMuZXZhbHVhdGUoY2hpbGQsIHZhcmlhYmxlcyk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghc3ViZXZhbC5zdWNjZXNzZnVsKSByZXR1cm4gc3ViZXZhbDtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goc3ViZXZhbC52YWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBSZXN1bHQuc3VjY2VzcyhyZXN1bHQpO1xuICAgICAgICAgICAgY2FzZSBcIm9iamVjdFwiOlxuICAgICAgICAgICAgICAgIGxldCBvYmpSZXN1bHQ6IERhdGFPYmplY3QgPSB7fTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBba2V5LCBjaGlsZF0gb2YgT2JqZWN0LmVudHJpZXMoZXhwci52YWx1ZXMpKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBzdWJldmFsID0gdGhpcy5ldmFsdWF0ZShjaGlsZCwgdmFyaWFibGVzKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFzdWJldmFsLnN1Y2Nlc3NmdWwpIHJldHVybiBzdWJldmFsO1xuICAgICAgICAgICAgICAgICAgICBvYmpSZXN1bHRba2V5XSA9IHN1YmV2YWwudmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBSZXN1bHQuc3VjY2VzcyhvYmpSZXN1bHQpO1xuICAgICAgICAgICAgY2FzZSBcImxhbWJkYVwiOlxuICAgICAgICAgICAgICAgIC8vIEp1c3QgcmVseWluZyBvbiBKUyB0byBjYXB0dXJlICdkYXRhJyBmb3IgdXMgaW1wbGljaXRseTsgdW5zdXJlXG4gICAgICAgICAgICAgICAgLy8gaWYgdGhpcyBpcyBjb3JyZWN0IHRoaW5nIHRvIGRvLiBDb3VsZCBjYXVzZSB3ZWlyZCBiZWhhdmlvcnMuXG4gICAgICAgICAgICAgICAgcmV0dXJuIFJlc3VsdC5zdWNjZXNzKChjdHg6IEV2YWx1YXRvciwgLi4uYXJnczogTGl0ZXJhbFtdKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBsb2NhbHM6IFJlY29yZDxzdHJpbmcsIExpdGVyYWw+ID0ge307XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGFyZyA9IDA7IGFyZyA8IE1hdGgubWluKGFyZ3MubGVuZ3RoLCBleHByLmFyZ3VtZW50cy5sZW5ndGgpOyBhcmcrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxzW2V4cHIuYXJndW1lbnRzW2FyZ11dID0gYXJnc1thcmddO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGN0eC5ldmFsdWF0ZShleHByLnZhbHVlLCBWYXJpYWJsZXMubGFtYmRhKHZhcmlhYmxlcywgbG9jYWxzKSkub3JFbHNlVGhyb3coKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNhc2UgXCJmdW5jdGlvblwiOlxuICAgICAgICAgICAgICAgIGxldCByYXdGdW5jID1cbiAgICAgICAgICAgICAgICAgICAgZXhwci5mdW5jLnR5cGUgPT0gXCJ2YXJpYWJsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA/IFJlc3VsdC5zdWNjZXNzPHN0cmluZywgc3RyaW5nPihleHByLmZ1bmMubmFtZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogdGhpcy5ldmFsdWF0ZShleHByLmZ1bmMsIHZhcmlhYmxlcyk7XG4gICAgICAgICAgICAgICAgaWYgKCFyYXdGdW5jLnN1Y2Nlc3NmdWwpIHJldHVybiByYXdGdW5jO1xuICAgICAgICAgICAgICAgIGxldCBmdW5jID0gcmF3RnVuYy52YWx1ZTtcblxuICAgICAgICAgICAgICAgIGxldCBhcmdzOiBMaXRlcmFsW10gPSBbXTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBhcmcgb2YgZXhwci5hcmd1bWVudHMpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlc29sdmVkID0gdGhpcy5ldmFsdWF0ZShhcmcsIHZhcmlhYmxlcyk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghcmVzb2x2ZWQuc3VjY2Vzc2Z1bCkgcmV0dXJuIHJlc29sdmVkO1xuICAgICAgICAgICAgICAgICAgICBhcmdzLnB1c2gocmVzb2x2ZWQudmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGxldCBjYWxsOiBGdW5jdGlvbkltcGw7XG4gICAgICAgICAgICAgICAgaWYgKExpdGVyYWxzLmlzRnVuY3Rpb24oZnVuYykpIGNhbGwgPSBmdW5jIGFzIEZ1bmN0aW9uSW1wbDtcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChMaXRlcmFscy5pc1N0cmluZyhmdW5jKSAmJiBmdW5jIGluIHRoaXMuZnVuY3Rpb25zKSBjYWxsID0gdGhpcy5mdW5jdGlvbnNbZnVuY107XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoTGl0ZXJhbHMuaXNTdHJpbmcoZnVuYykpIHJldHVybiBSZXN1bHQuZmFpbHVyZShgVW5yZWNvZ25pemVkIGZ1bmN0aW9uIG5hbWUgJyR7ZnVuY30nYCk7XG4gICAgICAgICAgICAgICAgZWxzZSByZXR1cm4gUmVzdWx0LmZhaWx1cmUoYENhbm5vdCBjYWxsIHR5cGUgJyR7TGl0ZXJhbHMudHlwZU9mKGZ1bmMpfScgYXMgYSBmdW5jdGlvbmApO1xuXG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJlc3VsdC5zdWNjZXNzKGNhbGwodGhpcywgLi4uYXJncykpO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJlc3VsdC5mYWlsdXJlKGUubWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4vKiogR2V0IHZhcmlhYmxlcyBmcm9tIGEgcGxhaW4gb2JqZWN0LiAqL1xuZXhwb3J0IGNsYXNzIE9iamVjdFZhcmlhYmxlcyBpbXBsZW1lbnRzIFZhcmlhYmxlcyB7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHB1YmxpYyBvYmplY3Q6IERhdGFPYmplY3QpIHt9XG5cbiAgICBwdWJsaWMgYWxsKCk6IERhdGFPYmplY3Qge1xuICAgICAgICByZXR1cm4gdGhpcy5vYmplY3Q7XG4gICAgfVxuXG4gICAgcHVibGljIHJlc29sdmUobmFtZTogc3RyaW5nKTogTGl0ZXJhbCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLm9iamVjdFtuYW1lXTtcbiAgICB9XG59XG5cbi8qKiBHZXQgdmFyaWFibGVzIGZyb20gYSBmaWVsZC1iZWFyaW5nIG9iamVjdCAod2hpY2ggc3VwcG9ydHMgY2FzZSBpbnNlbnNpdGl2aXR5KS4gKi9cbmV4cG9ydCBjbGFzcyBGaWVsZGJlYXJpbmdWYXJpYWJsZXMgaW1wbGVtZW50cyBWYXJpYWJsZXMge1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihwdWJsaWMgb2JqZWN0OiBGaWVsZGJlYXJpbmcpIHt9XG5cbiAgICBwdWJsaWMgYWxsKCk6IERhdGFPYmplY3Qge1xuICAgICAgICBjb25zdCBvYmplY3Q6IERhdGFPYmplY3QgPSB7fTtcbiAgICAgICAgZm9yIChjb25zdCBmaWVsZCBvZiB0aGlzLm9iamVjdC5maWVsZHMpIHtcbiAgICAgICAgICAgIG9iamVjdFtmaWVsZC5rZXldID0gZmllbGQudmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gb2JqZWN0O1xuICAgIH1cblxuICAgIHB1YmxpYyByZXNvbHZlKG5hbWU6IHN0cmluZyk6IExpdGVyYWwgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5vYmplY3QuZmllbGQobmFtZSk/LnZhbHVlO1xuICAgIH1cbn1cblxuLyoqIERlbGVnYXRlIHRvIGxvY2FsIGNvbnRleHQgZmlyc3QsIHRoZW4gdG8gcGFyZW50IGNvbnRleHQgaWYgbm90IGF2YWlsYWJsZS4gKi9cbmV4cG9ydCBjbGFzcyBMYW1iZGFWYXJpYWJsZXMgaW1wbGVtZW50cyBWYXJpYWJsZXMge1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihwdWJsaWMgcGFyZW50OiBWYXJpYWJsZXMsIHB1YmxpYyBsb2NhbHM6IFJlY29yZDxzdHJpbmcsIExpdGVyYWw+KSB7fVxuXG4gICAgcHVibGljIGFsbCgpOiBEYXRhT2JqZWN0IHtcbiAgICAgICAgcmV0dXJuIHsgLi4udGhpcy5wYXJlbnQuYWxsKCksIC4uLnRoaXMubG9jYWxzIH07XG4gICAgfVxuXG4gICAgcHVibGljIHJlc29sdmUobmFtZTogc3RyaW5nKTogTGl0ZXJhbCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvY2Fsc1tuYW1lXSA/PyB0aGlzLnBhcmVudC5yZXNvbHZlKG5hbWUpO1xuICAgIH1cbn1cblxuLyoqIERlZmF1bHQgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIG1ha2luZyB2YXJpYWJsZSBzdG9yZXMuICovXG5leHBvcnQgbmFtZXNwYWNlIFZhcmlhYmxlcyB7XG4gICAgZXhwb3J0IGZ1bmN0aW9uIGVtcHR5KCkge1xuICAgICAgICByZXR1cm4gbmV3IE9iamVjdFZhcmlhYmxlcyh7fSk7XG4gICAgfVxuXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGluZmVyKG9iamVjdDogYW55KTogVmFyaWFibGVzIHtcbiAgICAgICAgaWYgKEZpZWxkYmVhcmluZ3MuaXNGaWVsZGJlYXJpbmcob2JqZWN0KSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBGaWVsZGJlYXJpbmdWYXJpYWJsZXMob2JqZWN0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgT2JqZWN0VmFyaWFibGVzKG9iamVjdCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBleHBvcnQgZnVuY3Rpb24gbGFtYmRhKHBhcmVudDogVmFyaWFibGVzLCBsb2NhbHM6IFJlY29yZDxzdHJpbmcsIExpdGVyYWw+KTogVmFyaWFibGVzIHtcbiAgICAgICAgcmV0dXJuIG5ldyBMYW1iZGFWYXJpYWJsZXMocGFyZW50LCBsb2NhbHMpO1xuICAgIH1cbn1cbiIsICIvLyEgUHJvdmlkZXMgdXRpbGl0aWVzIGZvciBleGVjdXRpbmcgcXVlcmllcyBhZ2FpbnN0IHRoZSBzdG9yYWdlIGxheWVyLlxuaW1wb3J0IHsgSW5kZXhQcmltaXRpdmUsIEluZGV4UXVlcnksIEluZGV4U291cmNlIH0gZnJvbSBcImluZGV4L3R5cGVzL2luZGV4LXF1ZXJ5XCI7XG5pbXBvcnQgeyBGaWx0ZXIsIEZpbHRlcnMgfSBmcm9tIFwiZXhwcmVzc2lvbi9maWx0ZXJzXCI7XG5pbXBvcnQgeyBSZXN1bHQgfSBmcm9tIFwiYXBpL3Jlc3VsdFwiO1xuaW1wb3J0IHsgRXhwcmVzc2lvbiwgRXhwcmVzc2lvbnMgfSBmcm9tIFwiZXhwcmVzc2lvbi9leHByZXNzaW9uXCI7XG5pbXBvcnQgeyBFdmFsdWF0b3IsIFZhcmlhYmxlcyB9IGZyb20gXCJleHByZXNzaW9uL2V2YWx1YXRvclwiO1xuaW1wb3J0IHsgSW5kZXhhYmxlIH0gZnJvbSBcImluZGV4L3R5cGVzL2luZGV4YWJsZVwiO1xuaW1wb3J0IHsgTGl0ZXJhbHMgfSBmcm9tIFwiZXhwcmVzc2lvbi9saXRlcmFsXCI7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSW5kZXggUXVlcnkgT3B0aW1pemF0aW9uIC8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuLyoqIFBlcmZvcm0gc2ltcGxlIHJlY3Vyc2l2ZSBvcHRpbWl6YXRpb25zIG92ZXIgYW4gaW5kZXggcXVlcnksIHN1Y2ggYXMgY29uc3RhbnQgZm9sZGluZyBhbmQgZGUtbmVzdGluZy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvcHRpbWl6ZVF1ZXJ5KHF1ZXJ5OiBJbmRleFF1ZXJ5KTogSW5kZXhRdWVyeSB7XG4gICAgcXVlcnkgPSBkZW5lc3QocXVlcnkpO1xuICAgIHF1ZXJ5ID0gY29uc3RhbnRmb2xkKHF1ZXJ5KTtcblxuICAgIHJldHVybiBxdWVyeTtcbn1cblxuLyoqIERlLW5lc3QgcmVjdXJzaXZlbHkgbmVzdGVkIEFORCBhbmQgT1IgcXVlcmllcyBpbnRvIGEgc2luZ2xlIHRvcC1sZXZlbCBhbmQvb3IuICovXG5mdW5jdGlvbiBkZW5lc3QocXVlcnk6IEluZGV4UXVlcnkpOiBJbmRleFF1ZXJ5IHtcbiAgICBzd2l0Y2ggKHF1ZXJ5LnR5cGUpIHtcbiAgICAgICAgY2FzZSBcImFuZFwiOlxuICAgICAgICAgICAgY29uc3QgYW5kcyA9IHF1ZXJ5LmVsZW1lbnRzLmZsYXRNYXAoKGVsZW1lbnQpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaXhlZCA9IGRlbmVzdChlbGVtZW50KTtcbiAgICAgICAgICAgICAgICBpZiAoZml4ZWQudHlwZSA9PT0gXCJhbmRcIikgcmV0dXJuIGZpeGVkLmVsZW1lbnRzO1xuICAgICAgICAgICAgICAgIGVsc2UgcmV0dXJuIFtmaXhlZF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiB7IHR5cGU6IFwiYW5kXCIsIGVsZW1lbnRzOiBhbmRzIH07XG4gICAgICAgIGNhc2UgXCJvclwiOlxuICAgICAgICAgICAgY29uc3Qgb3JzID0gcXVlcnkuZWxlbWVudHMuZmxhdE1hcCgoZWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpeGVkID0gZGVuZXN0KGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGlmIChmaXhlZC50eXBlID09PSBcIm9yXCIpIHJldHVybiBmaXhlZC5lbGVtZW50cztcbiAgICAgICAgICAgICAgICBlbHNlIHJldHVybiBbZml4ZWRdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4geyB0eXBlOiBcIm9yXCIsIGVsZW1lbnRzOiBvcnMgfTtcbiAgICAgICAgY2FzZSBcIm5vdFwiOlxuICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogXCJub3RcIiwgZWxlbWVudDogZGVuZXN0KHF1ZXJ5LmVsZW1lbnQpIH07XG4gICAgICAgIGNhc2UgXCJjaGlsZC1vZlwiOlxuICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHF1ZXJ5LCB7IHBhcmVudHM6IGRlbmVzdChxdWVyeS5wYXJlbnRzKSB9KTtcbiAgICAgICAgY2FzZSBcInBhcmVudC1vZlwiOlxuICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHF1ZXJ5LCB7IGNoaWxkcmVuOiBkZW5lc3QocXVlcnkuY2hpbGRyZW4pIH0pO1xuICAgICAgICBjYXNlIFwibGlua2VkXCI6XG4gICAgICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgcXVlcnksIHsgc291cmNlOiBkZW5lc3QocXVlcnkuc291cmNlKSB9KTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBxdWVyeTtcbiAgICB9XG59XG5cbi8qKiBQZXJmb3JtIGNvbnN0YW50IGZvbGRpbmcgYnkgZWxpbWluYXRpbmcgZGVhZCAndHJ1ZScgYW5kICdmYWxzZScgdGVybXMuICovXG5mdW5jdGlvbiBjb25zdGFudGZvbGQocXVlcnk6IEluZGV4UXVlcnkpOiBJbmRleFF1ZXJ5IHtcbiAgICBzd2l0Y2ggKHF1ZXJ5LnR5cGUpIHtcbiAgICAgICAgY2FzZSBcImFuZFwiOlxuICAgICAgICAgICAgY29uc3QgYWNoaWxkcmVuID0gW10gYXMgSW5kZXhRdWVyeVtdO1xuICAgICAgICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBxdWVyeS5lbGVtZW50cykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZvbGRlZCA9IGNvbnN0YW50Zm9sZChjaGlsZCk7XG5cbiAgICAgICAgICAgICAgICAvLyBFbGltaW5hdGUgJ3RydWUnIGNvbnN0YW50cyBhbmQgZWxpbWluYXRlIHRoZSBlbnRpcmUgYW5kIG9uIGEgJ2ZhbHNlJyBjb25zdGFudC5cbiAgICAgICAgICAgICAgICBpZiAoZm9sZGVkLnR5cGUgPT09IFwiY29uc3RhbnRcIikge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZm9sZGVkLmNvbnN0YW50KSBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZSByZXR1cm4geyB0eXBlOiBcImNvbnN0YW50XCIsIGNvbnN0YW50OiBmYWxzZSB9O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGFjaGlsZHJlbi5wdXNoKGZvbGRlZCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB7IHR5cGU6IFwiYW5kXCIsIGVsZW1lbnRzOiBhY2hpbGRyZW4gfTtcbiAgICAgICAgY2FzZSBcIm9yXCI6XG4gICAgICAgICAgICBjb25zdCBvY2hpbGRyZW4gPSBbXSBhcyBJbmRleFF1ZXJ5W107XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIHF1ZXJ5LmVsZW1lbnRzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZm9sZGVkID0gY29uc3RhbnRmb2xkKGNoaWxkKTtcblxuICAgICAgICAgICAgICAgIC8vIEVsaW1pbmF0ZSAnZmFsc2UnIGNvbnN0YW50cyBhbmQgc2hvcnQgY2lyY3VpdCBvbiBhICd0cnVlJyBjb25zdGFudC5cbiAgICAgICAgICAgICAgICBpZiAoZm9sZGVkLnR5cGUgPT09IFwiY29uc3RhbnRcIikge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWZvbGRlZC5jb25zdGFudCkgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgcmV0dXJuIHsgdHlwZTogXCJjb25zdGFudFwiLCBjb25zdGFudDogdHJ1ZSB9O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIG9jaGlsZHJlbi5wdXNoKGZvbGRlZCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB7IHR5cGU6IFwib3JcIiwgZWxlbWVudHM6IG9jaGlsZHJlbiB9O1xuICAgICAgICBjYXNlIFwibm90XCI6XG4gICAgICAgICAgICBjb25zdCBmb2xkZWQgPSBjb25zdGFudGZvbGQocXVlcnkuZWxlbWVudCk7XG5cbiAgICAgICAgICAgIGlmIChmb2xkZWQudHlwZSA9PT0gXCJjb25zdGFudFwiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogXCJjb25zdGFudFwiLCBjb25zdGFudDogIWZvbGRlZC5jb25zdGFudCB9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4geyB0eXBlOiBcIm5vdFwiLCBlbGVtZW50OiBmb2xkZWQgfTtcbiAgICAgICAgY2FzZSBcImNoaWxkLW9mXCI6XG4gICAgICAgICAgICAvLyBwYXJlbnRzID0gRU1QVFkgbWVhbnMgdGhpcyB3aWxsIGFsc28gYmUgZW1wdHkuXG4gICAgICAgICAgICBjb25zdCBwYXJlbnRzID0gY29uc3RhbnRmb2xkKHF1ZXJ5LnBhcmVudHMpO1xuICAgICAgICAgICAgaWYgKHBhcmVudHMudHlwZSA9PT0gXCJjb25zdGFudFwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFwYXJlbnRzLmNvbnN0YW50KSByZXR1cm4geyB0eXBlOiBcImNvbnN0YW50XCIsIGNvbnN0YW50OiBmYWxzZSB9O1xuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHBhcmVudHMuY29uc3RhbnQgJiYgcXVlcnkuaW5jbHVzaXZlKSByZXR1cm4geyB0eXBlOiBcImNvbnN0YW50XCIsIGNvbnN0YW50OiB0cnVlIH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBxdWVyeSwgeyBwYXJlbnRzIH0pO1xuICAgICAgICBjYXNlIFwicGFyZW50LW9mXCI6XG4gICAgICAgICAgICAvLyBjaGlsZHJlbiA9IEVNUFRZIG1lYW5zIHRoaXMgd2lsbCBhbHNvIGJlIGVtcHR5LlxuICAgICAgICAgICAgY29uc3QgY2hpbGRyZW4gPSBjb25zdGFudGZvbGQocXVlcnkuY2hpbGRyZW4pO1xuICAgICAgICAgICAgaWYgKGNoaWxkcmVuLnR5cGUgPT09IFwiY29uc3RhbnRcIikge1xuICAgICAgICAgICAgICAgIGlmICghY2hpbGRyZW4uY29uc3RhbnQpIHJldHVybiB7IHR5cGU6IFwiY29uc3RhbnRcIiwgY29uc3RhbnQ6IGZhbHNlIH07XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoY2hpbGRyZW4uY29uc3RhbnQgJiYgcXVlcnkuaW5jbHVzaXZlKSByZXR1cm4geyB0eXBlOiBcImNvbnN0YW50XCIsIGNvbnN0YW50OiB0cnVlIH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBxdWVyeSwgeyBjaGlsZHJlbiB9KTtcbiAgICAgICAgY2FzZSBcImxpbmtlZFwiOlxuICAgICAgICAgICAgY29uc3Qgc291cmNlID0gY29uc3RhbnRmb2xkKHF1ZXJ5LnNvdXJjZSk7XG4gICAgICAgICAgICBpZiAoc291cmNlLnR5cGUgPT09IFwiY29uc3RhbnRcIikge1xuICAgICAgICAgICAgICAgIGlmICghc291cmNlLmNvbnN0YW50KSByZXR1cm4geyB0eXBlOiBcImNvbnN0YW50XCIsIGNvbnN0YW50OiBmYWxzZSB9O1xuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNvdXJjZS5jb25zdGFudCAmJiBxdWVyeS5pbmNsdXNpdmUpIHJldHVybiB7IHR5cGU6IFwiY29uc3RhbnRcIiwgY29uc3RhbnQ6IHRydWUgfTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHF1ZXJ5LCB7IHNvdXJjZSB9KTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBxdWVyeTtcbiAgICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbmRleCBRdWVyeSBFeGVjdXRvciAvL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuLyoqIEludGVyZmFjZSBwcm92aWRlZCB0byB0aGUgcXVlcnkgZXhlY3V0b3IgdG8gcmVzb2x2ZSBxdWVyeSBsZWFmIG5vZGVzIChsaWtlIFwiZmluZCBhbGwgcGFnZXMgbWF0Y2hpbmcgJyN0YWcnXCIpLiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbmRleFJlc29sdmVyPFQ+IHtcbiAgICAvKiogVGhlIHNldCBvZiBhbGwgcG9zc2libGUgb2JqZWN0cy4gKi9cbiAgICB1bml2ZXJzZTogU2V0PFQ+O1xuXG4gICAgLyoqIFJlc29sdmUgYW4gYXJiaXRyYXJ5IGluZGV4IHNvdXJjZSAobGlrZSBcImZpbmQgYWxsIHBhZ2VzIG1hdGNoaW5nICcjdGFnJ1wiKSBpbnRvIGEgZmlsdGVyLiAgKi9cbiAgICByZXNvbHZlKGxlYWY6IEluZGV4U291cmNlKTogUmVzdWx0PEZpbHRlcjxUPiwgc3RyaW5nPjtcblxuICAgIC8qKiBSZXNvbHZlIGFuIGluZGV4IHByaW1pdGl2ZSwgd2hpY2ggaXMgZ2FyYXVudGVlZCB0byBuZXZlciByYWlzZSBhbiBleGNlcHRpb24uICovXG4gICAgcmVzb2x2ZVByaW1pdGl2ZShsZWFmOiBJbmRleFByaW1pdGl2ZSk6IEZpbHRlcjxUPjtcblxuICAgIC8qKiBMb2FkIGEgc3BlY2lmaWMgb2JqZWN0IGlmIGF2YWlsYWJsZS4gKi9cbiAgICBsb2FkKGlkOiBUKTogSW5kZXhhYmxlIHwgdW5kZWZpbmVkO1xufVxuXG4vKiogRXhlY3V0ZSBhIHF1ZXJ5LCB1c2luZyB0aGUgZ2l2ZW4gcmVzb2x2ZXIgdG8gZXhlY3V0ZSB0aGUgbGVhZiBub2RlcyBhbmQgdGhlIGdpdmVuIGV2YWx1YXRvciB0byByZXNvbHZlIGV4cHJlc3Npb25zLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4ZWN1dGU8VD4oXG4gICAgcXVlcnk6IEluZGV4UXVlcnksXG4gICAgcmVzb2x2ZXI6IEluZGV4UmVzb2x2ZXI8VD4sXG4gICAgZXZhbHVhdG9yOiBFdmFsdWF0b3Jcbik6IFJlc3VsdDxGaWx0ZXI8VD4sIHN0cmluZz4ge1xuICAgIHJldHVybiBzaW1wbGlmeShxdWVyeSwgcmVzb2x2ZXIpLmZsYXRNYXAoKHRyZWUpID0+IGNvbGxhcHNlKHRyZWUsIHJlc29sdmVyLCBldmFsdWF0b3IpKTtcbn1cblxuLyoqIFNpbXBsaWZ5IGEgdHJlZSwgY29tYmluaW5nIHByaW1pdGl2ZXMgaW4gQU5Ecy9PUnMuICovXG5leHBvcnQgZnVuY3Rpb24gc2ltcGxpZnk8VD4ocXVlcnk6IEluZGV4UXVlcnksIHJlc29sdmVyOiBJbmRleFJlc29sdmVyPFQ+KTogUmVzdWx0PEZpbHRlclRyZWU8VD4sIHN0cmluZz4ge1xuICAgIHN3aXRjaCAocXVlcnkudHlwZSkge1xuICAgICAgICBjYXNlIFwiYW5kXCI6XG4gICAgICAgICAgICAvLyBUT0RPOiBFYXJseSByZXR1cm4gb24gYSBOT1RISU5HIGluc2lkZSB0aGUgbWFwQWxsIGxvb3AuXG4gICAgICAgICAgICByZXR1cm4gUmVzdWx0Lm1hcEFsbChxdWVyeS5lbGVtZW50cywgKGNoaWxkKSA9PiBzaW1wbGlmeShjaGlsZCwgcmVzb2x2ZXIpKS5tYXAoKGVsZW1lbnRzKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmxhdHRlbmVkID0gZWxlbWVudHMuZmxhdE1hcCgoZWxlbWVudCkgPT5cbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC50eXBlID09PSBcImFuZFwiID8gZWxlbWVudC5lbGVtZW50cyA6IFtlbGVtZW50XVxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBvdGhlcjogRmlsdGVyVHJlZTxUPltdID0gW107XG4gICAgICAgICAgICAgICAgY29uc3QgcHJpbWl0aXZlID0gRmlsdGVycy5sYXp5SW50ZXJzZWN0KGZsYXR0ZW5lZCwgKGVsZW1lbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQudHlwZSA9PT0gXCJmaWx0ZXJcIikgcmV0dXJuIGVsZW1lbnQuZmlsdGVyO1xuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG90aGVyLnB1c2goZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAvLyBFYXJseSByZXR1cm4gb24gTk9USElORyAobm90aGluZyB3aWxsIG1hdGNoKSwgYW5kIHNraXAgb24gTk9USElORy5cbiAgICAgICAgICAgICAgICBpZiAocHJpbWl0aXZlLnR5cGUgPT09IFwibm90aGluZ1wiKSByZXR1cm4geyB0eXBlOiBcImZpbHRlclwiLCBmaWx0ZXI6IEZpbHRlcnMuTk9USElORyB9O1xuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHByaW1pdGl2ZS50eXBlICE9IFwiZXZlcnl0aGluZ1wiKSBvdGhlci5wdXNoKEZpbHRlclRyZWVzLmZpbHRlcihwcmltaXRpdmUpKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBGaWx0ZXJUcmVlcy5hbmQob3RoZXIpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIGNhc2UgXCJvclwiOlxuICAgICAgICAgICAgcmV0dXJuIFJlc3VsdC5tYXBBbGwocXVlcnkuZWxlbWVudHMsIChjaGlsZCkgPT4gc2ltcGxpZnkoY2hpbGQsIHJlc29sdmVyKSkubWFwKChlbGVtZW50cykgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZsYXR0ZW5lZCA9IGVsZW1lbnRzLmZsYXRNYXAoKGVsZW1lbnQpID0+IChlbGVtZW50LnR5cGUgPT09IFwib3JcIiA/IGVsZW1lbnQuZWxlbWVudHMgOiBbZWxlbWVudF0pKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IG90aGVyOiBGaWx0ZXJUcmVlPFQ+W10gPSBbXTtcbiAgICAgICAgICAgICAgICBjb25zdCBwcmltaXRpdmUgPSBGaWx0ZXJzLmxhenlVbmlvbihmbGF0dGVuZWQsIChlbGVtZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50LnR5cGUgPT09IFwiZmlsdGVyXCIpIHJldHVybiBlbGVtZW50LmZpbHRlcjtcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvdGhlci5wdXNoKGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgLy8gRWFybHkgcmV0dXJuIG9uIEVWRVJZVEhJTkcgKGFsbCB3aWxsIG1hdGNoKSwgYW5kIHNraXAgb24gTk9USElORy5cbiAgICAgICAgICAgICAgICBpZiAocHJpbWl0aXZlLnR5cGUgPT09IFwiZXZlcnl0aGluZ1wiKSByZXR1cm4geyB0eXBlOiBcImZpbHRlclwiLCBmaWx0ZXI6IEZpbHRlcnMuRVZFUllUSElORyB9O1xuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHByaW1pdGl2ZS50eXBlICE9IFwibm90aGluZ1wiKSBvdGhlci5wdXNoKEZpbHRlclRyZWVzLmZpbHRlcihwcmltaXRpdmUpKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBGaWx0ZXJUcmVlcy5vcihvdGhlcik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgY2FzZSBcIm5vdFwiOlxuICAgICAgICAgICAgcmV0dXJuIHNpbXBsaWZ5KHF1ZXJ5LmVsZW1lbnQsIHJlc29sdmVyKS5tYXAoRmlsdGVyVHJlZXMubm90KTtcbiAgICAgICAgY2FzZSBcImV4cHJlc3Npb25cIjpcbiAgICAgICAgICAgIGNvbnN0IGNhbmRpZGF0ZXMgPSBoYXNWYXJpYWJsZXMocXVlcnkuZXhwcmVzc2lvbiwgcmVzb2x2ZXIpO1xuICAgICAgICAgICAgcmV0dXJuIFJlc3VsdC5zdWNjZXNzKHsgdHlwZTogXCJzY2FuXCIsIGNhbmRpZGF0ZXMsIGV4cHJlc3Npb246IHF1ZXJ5LmV4cHJlc3Npb24gfSk7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gcmVzb2x2ZXIucmVzb2x2ZShxdWVyeSkubWFwKChmaWx0ZXIpID0+ICh7IHR5cGU6IFwiZmlsdGVyXCIsIGZpbHRlciB9KSk7XG4gICAgfVxufVxuXG4vKiogQ29sbGFwc2UgYSBmaWx0ZXIgdHJlZSBieSBldmFsdWF0aW5nIGFsbCBzY2FucyB3aXRoIHRoZSBhcHByb3ByaWF0ZSBjb250ZXh0LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbGxhcHNlPFQ+KFxuICAgIHRyZWU6IEZpbHRlclRyZWU8VD4sXG4gICAgcmVzb2x2ZXI6IEluZGV4UmVzb2x2ZXI8VD4sXG4gICAgZXZhbHVhdG9yOiBFdmFsdWF0b3IsXG4gICAgbGltaXQ6IEZpbHRlcjxUPiA9IEZpbHRlcnMuRVZFUllUSElOR1xuKTogUmVzdWx0PEZpbHRlcjxUPiwgc3RyaW5nPiB7XG4gICAgc3dpdGNoICh0cmVlLnR5cGUpIHtcbiAgICAgICAgY2FzZSBcIm9yXCI6XG4gICAgICAgICAgICByZXR1cm4gRmlsdGVycy5sYXp5RmFpbGFibGVVbmlvbih0cmVlLmVsZW1lbnRzLCAoZWxlbWVudCkgPT4gY29sbGFwc2UoZWxlbWVudCwgcmVzb2x2ZXIsIGV2YWx1YXRvciwgbGltaXQpKTtcbiAgICAgICAgY2FzZSBcImFuZFwiOlxuICAgICAgICAgICAgY29uc3QgcHJpbWl0aXZlcyA9IHRyZWUuZWxlbWVudHNcbiAgICAgICAgICAgICAgICAuZmlsdGVyKChlbGVtKTogZWxlbSBpcyB7IHR5cGU6IFwiZmlsdGVyXCI7IGZpbHRlcjogRmlsdGVyPFQ+IH0gPT4gZWxlbS50eXBlID09PSBcImZpbHRlclwiKVxuICAgICAgICAgICAgICAgIC5tYXAoKGYpID0+IGYuZmlsdGVyKTtcbiAgICAgICAgICAgIGxldCByZXN0cmljdGVkTGltaXQgPSBGaWx0ZXJzLmludGVyc2VjdChbbGltaXQsIC4uLnByaW1pdGl2ZXNdKTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCBlbGVtZW50IG9mIHRyZWUuZWxlbWVudHMpIHtcbiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC50eXBlID09PSBcImZpbHRlclwiKSBjb250aW51ZTsgLy8gQWxyZWFkeSBpbiB0aGUgaW50ZXJzZWN0aW9uLlxuXG4gICAgICAgICAgICAgICAgY29uc3QgbWF5YmVFdmFsdWF0ZWQgPSBjb2xsYXBzZShlbGVtZW50LCByZXNvbHZlciwgZXZhbHVhdG9yLCByZXN0cmljdGVkTGltaXQpO1xuICAgICAgICAgICAgICAgIGlmICghbWF5YmVFdmFsdWF0ZWQuc3VjY2Vzc2Z1bCkgcmV0dXJuIG1heWJlRXZhbHVhdGVkLmNhc3QoKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGV2YWx1YXRlZCA9IG1heWJlRXZhbHVhdGVkLnZhbHVlO1xuICAgICAgICAgICAgICAgIHJlc3RyaWN0ZWRMaW1pdCA9IEZpbHRlcnMuaW50ZXJzZWN0KFtyZXN0cmljdGVkTGltaXQsIGV2YWx1YXRlZF0pO1xuXG4gICAgICAgICAgICAgICAgaWYgKHJlc3RyaWN0ZWRMaW1pdC50eXBlID09PSBcIm5vdGhpbmdcIikgcmV0dXJuIFJlc3VsdC5zdWNjZXNzKEZpbHRlcnMuTk9USElORyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBSZXN1bHQuc3VjY2VzcyhyZXN0cmljdGVkTGltaXQpO1xuICAgICAgICBjYXNlIFwibm90XCI6XG4gICAgICAgICAgICByZXR1cm4gY29sbGFwc2UodHJlZS5lbGVtZW50LCByZXNvbHZlciwgZXZhbHVhdG9yLCBsaW1pdCkubWFwKEZpbHRlcnMubmVnYXRlKTtcbiAgICAgICAgY2FzZSBcImZpbHRlclwiOlxuICAgICAgICAgICAgcmV0dXJuIFJlc3VsdC5zdWNjZXNzKHRyZWUuZmlsdGVyKTtcbiAgICAgICAgY2FzZSBcInNjYW5cIjpcbiAgICAgICAgICAgIC8vIExvY2FsIHRyZWUgY2FuZGlkYXRlcyArIGV4aXN0aW5nIGxpbWl0IHRvIHByb2R1Y2UgdGhlIG1pbmltYWwgc2V0IG9mIGNhbmRpZGF0ZXMuXG4gICAgICAgICAgICBjb25zdCBjYW5kaWRhdGVzID0gRmlsdGVycy5yZXNvbHZlKEZpbHRlcnMuaW50ZXJzZWN0KFt0cmVlLmNhbmRpZGF0ZXMsIGxpbWl0XSksIHJlc29sdmVyLnVuaXZlcnNlKTtcbiAgICAgICAgICAgIHJldHVybiBmaWx0ZXJTY2FuKGNhbmRpZGF0ZXMsIHRyZWUuZXhwcmVzc2lvbiwgZXZhbHVhdG9yLCByZXNvbHZlcikubWFwKEZpbHRlcnMuYXRvbSk7XG4gICAgfVxufVxuXG4vKiogU2NhbiBvdmVyIGFsbCBjYW5kaWRhdGUgb2JqZWN0cywgcmV0dXJuaW5nIG9iamVjdHMgZm9yIHdoaWNoIHRoZSBnaXZlbiBleHByZXNzaW9uIHJlc29sdmVzIHRvIHRydWUuICovXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyU2NhbjxUPihcbiAgICBjYW5kaWRhdGVzOiBTZXQ8VD4sXG4gICAgZXhwcjogRXhwcmVzc2lvbixcbiAgICBldmFsdWF0b3I6IEV2YWx1YXRvcixcbiAgICByZXNvbHZlcjogSW5kZXhSZXNvbHZlcjxUPlxuKTogUmVzdWx0PFNldDxUPiwgc3RyaW5nPiB7XG4gICAgY29uc3QgcmVzdWx0ID0gbmV3IFNldDxUPigpO1xuICAgIGZvciAoY29uc3QgY2FuZGlkYXRlIG9mIGNhbmRpZGF0ZXMpIHtcbiAgICAgICAgY29uc3Qgb2JqZWN0ID0gcmVzb2x2ZXIubG9hZChjYW5kaWRhdGUpO1xuICAgICAgICBpZiAoIW9iamVjdCkgY29udGludWU7XG5cbiAgICAgICAgY29uc3QgdmFsdWUgPSBldmFsdWF0b3IuZXZhbHVhdGUoZXhwciwgVmFyaWFibGVzLmluZmVyKG9iamVjdCkpO1xuICAgICAgICBpZiAoIXZhbHVlLnN1Y2Nlc3NmdWwpIHtcbiAgICAgICAgICAgIHJldHVybiBSZXN1bHQuZmFpbHVyZShgRXJyb3Igd2hpbGUgZXZhbHVhdGluZyBleHByZXNzaW9uIFwiJHtFeHByZXNzaW9ucy50b1N0cmluZyhleHByKX1cIjogJHt2YWx1ZS5lcnJvcn1gKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChMaXRlcmFscy5pc1RydXRoeSh2YWx1ZS52YWx1ZSkpIHJlc3VsdC5hZGQoY2FuZGlkYXRlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBSZXN1bHQuc3VjY2VzcyhyZXN1bHQpO1xufVxuXG4vKiogRmlsdGVycyBhbiBleHByZXNzaW9uIHRvIGZpbmQgcGFnZXMgdGhhdCBoYXZlIHRoZSB2YXJpYWJsZXMgZm9yIHRoYXQgZXhwcmVzc2lvbi4gICovXG5leHBvcnQgZnVuY3Rpb24gaGFzVmFyaWFibGVzPFQ+KGV4cHI6IEV4cHJlc3Npb24sIHJlc29sdmVyOiBJbmRleFJlc29sdmVyPFQ+KTogRmlsdGVyPFQ+IHtcbiAgICBjb25zdCB2YXJpYWJsZXMgPSBFeHByZXNzaW9ucy51bmJvdW5kVmFyaWFibGVzKGV4cHIsIG5ldyBTZXQoW0V4cHJlc3Npb25zLlJPVywgXCJ0aGlzXCJdKSk7XG5cbiAgICAvLyB2YXJpYWJsZXMgPSAwIGltcGxpZXNzIHNvbWUgd2VpcmQgZnVuY3Rpb24gb3IgY29uc3RhbnQgZXhwcmVzc2lvbi5cbiAgICAvLyBUT0RPOiB3ZSBjYW4gcHJvYmFibHkgZXZhbHVhdGUgaXQgd2l0aG91dCBldmVuIHNjYW5uaW5nIHRvIGB0cnVlYCBvciBgZmFsc2VgIGJ1dCB0byBiZSBkZWZlbnNpdmUgaGF2ZSB0byByZXR1cm4gZXZlcnl0aGluZyBmb3Igbm93LlxuICAgIGlmICh2YXJpYWJsZXMuc2l6ZSA9PSAwKSByZXR1cm4gRmlsdGVycy5FVkVSWVRISU5HO1xuXG4gICAgcmV0dXJuIEZpbHRlcnMubGF6eVVuaW9uKHZhcmlhYmxlcywgKHZhcmlhYmxlKSA9PiByZXNvbHZlci5yZXNvbHZlUHJpbWl0aXZlKHsgdHlwZTogXCJmaWVsZFwiLCB2YWx1ZTogdmFyaWFibGUgfSkpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEZpbHRlciBUcmVlcyAvL1xuLy8vLy8vLy8vLy8vLy8vLy8vXG5cbmV4cG9ydCB0eXBlIEZpbHRlclRyZWU8VD4gPVxuICAgIHwgeyB0eXBlOiBcImFuZFwiOyBlbGVtZW50czogRmlsdGVyVHJlZTxUPltdIH1cbiAgICB8IHsgdHlwZTogXCJvclwiOyBlbGVtZW50czogRmlsdGVyVHJlZTxUPltdIH1cbiAgICB8IHsgdHlwZTogXCJub3RcIjsgZWxlbWVudDogRmlsdGVyVHJlZTxUPiB9XG4gICAgfCB7IHR5cGU6IFwiZmlsdGVyXCI7IGZpbHRlcjogRmlsdGVyPFQ+IH1cbiAgICB8IHsgdHlwZTogXCJzY2FuXCI7IGNhbmRpZGF0ZXM6IEZpbHRlcjxUPjsgZXhwcmVzc2lvbjogRXhwcmVzc2lvbiB9O1xuXG5leHBvcnQgbmFtZXNwYWNlIEZpbHRlclRyZWVzIHtcbiAgICBleHBvcnQgZnVuY3Rpb24gZmlsdGVyPFQ+KGZpbHRlcjogRmlsdGVyPFQ+KTogRmlsdGVyVHJlZTxUPiB7XG4gICAgICAgIHJldHVybiB7IHR5cGU6IFwiZmlsdGVyXCIsIGZpbHRlciB9O1xuICAgIH1cblxuICAgIGV4cG9ydCBmdW5jdGlvbiBhbmQ8VD4oY2hpbGRyZW46IEZpbHRlclRyZWU8VD5bXSk6IEZpbHRlclRyZWU8VD4ge1xuICAgICAgICBpZiAoY2hpbGRyZW4ubGVuZ3RoID09IDApIHJldHVybiBmaWx0ZXIoRmlsdGVycy5FVkVSWVRISU5HKTtcbiAgICAgICAgZWxzZSBpZiAoY2hpbGRyZW4ubGVuZ3RoID09IDEpIHJldHVybiBjaGlsZHJlblswXTtcbiAgICAgICAgZWxzZSByZXR1cm4geyB0eXBlOiBcImFuZFwiLCBlbGVtZW50czogY2hpbGRyZW4gfTtcbiAgICB9XG5cbiAgICBleHBvcnQgZnVuY3Rpb24gb3I8VD4oY2hpbGRyZW46IEZpbHRlclRyZWU8VD5bXSk6IEZpbHRlclRyZWU8VD4ge1xuICAgICAgICBpZiAoY2hpbGRyZW4ubGVuZ3RoID09IDApIHJldHVybiBmaWx0ZXIoRmlsdGVycy5OT1RISU5HKTtcbiAgICAgICAgZWxzZSBpZiAoY2hpbGRyZW4ubGVuZ3RoID09IDEpIHJldHVybiBjaGlsZHJlblswXTtcbiAgICAgICAgZWxzZSByZXR1cm4geyB0eXBlOiBcIm9yXCIsIGVsZW1lbnRzOiBjaGlsZHJlbiB9O1xuICAgIH1cblxuICAgIGV4cG9ydCBmdW5jdGlvbiBub3Q8VD4oY2hpbGQ6IEZpbHRlclRyZWU8VD4pOiBGaWx0ZXJUcmVlPFQ+IHtcbiAgICAgICAgaWYgKGNoaWxkLnR5cGUgPT09IFwiZmlsdGVyXCIpIHJldHVybiB7IHR5cGU6IFwiZmlsdGVyXCIsIGZpbHRlcjogRmlsdGVycy5uZWdhdGUoY2hpbGQuZmlsdGVyKSB9O1xuICAgICAgICBlbHNlIHJldHVybiB7IHR5cGU6IFwibm90XCIsIGVsZW1lbnQ6IGNoaWxkIH07XG4gICAgfVxufVxuIiwgImltcG9ydCB7IExpbmssIExpdGVyYWxzIH0gZnJvbSBcImV4cHJlc3Npb24vbGl0ZXJhbFwiO1xuaW1wb3J0IHsgRmlsdGVyLCBGaWx0ZXJzIH0gZnJvbSBcImV4cHJlc3Npb24vZmlsdGVyc1wiO1xuaW1wb3J0IHsgRm9sZGVySW5kZXggfSBmcm9tIFwiaW5kZXgvc3RvcmFnZS9mb2xkZXJcIjtcbmltcG9ydCB7IEludmVydGVkSW5kZXggfSBmcm9tIFwiaW5kZXgvc3RvcmFnZS9pbnZlcnRlZFwiO1xuaW1wb3J0IHsgSW5kZXhQcmltaXRpdmUsIEluZGV4UXVlcnksIEluZGV4U291cmNlIH0gZnJvbSBcImluZGV4L3R5cGVzL2luZGV4LXF1ZXJ5XCI7XG5pbXBvcnQgeyBJbmRleGFibGUsIExJTktBQkxFX1RZUEUsIExJTktCRUFSSU5HX1RZUEUsIFRBR0dBQkxFX1RZUEUgfSBmcm9tIFwiaW5kZXgvdHlwZXMvaW5kZXhhYmxlXCI7XG5pbXBvcnQgeyBNZXRhZGF0YUNhY2hlLCBWYXVsdCB9IGZyb20gXCJvYnNpZGlhblwiO1xuaW1wb3J0IHsgTWFya2Rvd25QYWdlIH0gZnJvbSBcIi4vdHlwZXMvbWFya2Rvd25cIjtcbmltcG9ydCB7IGV4dHJhY3RTdWJ0YWdzLCBub3JtYWxpemVIZWFkZXJGb3JMaW5rIH0gZnJvbSBcInV0aWxzL25vcm1hbGl6ZXJzXCI7XG5pbXBvcnQgRmxhdFF1ZXVlIGZyb20gXCJmbGF0cXVldWVcIjtcbmltcG9ydCB7IEJUcmVlRmllbGRJbmRleCwgRXZlcnl0aGluZ0ZpZWxkSW5kZXgsIEZpZWxkSW5kZXgsIElkRmllbGRJbmRleCwgU2V0RmllbGRJbmRleCB9IGZyb20gXCJpbmRleC9zdG9yYWdlL2ZpZWxkc1wiO1xuaW1wb3J0IHsgRklFTERCRUFSSU5HX1RZUEUsIEZpZWxkLCBGaWVsZGJlYXJpbmcgfSBmcm9tIFwiZXhwcmVzc2lvbi9maWVsZFwiO1xuaW1wb3J0IHsgSW5kZXhSZXNvbHZlciwgZXhlY3V0ZSwgb3B0aW1pemVRdWVyeSB9IGZyb20gXCJpbmRleC9zdG9yYWdlL3F1ZXJ5LWV4ZWN1dG9yXCI7XG5pbXBvcnQgeyBSZXN1bHQgfSBmcm9tIFwiYXBpL3Jlc3VsdFwiO1xuaW1wb3J0IHsgRXZhbHVhdG9yIH0gZnJvbSBcImV4cHJlc3Npb24vZXZhbHVhdG9yXCI7XG5pbXBvcnQgeyBTZXR0aW5ncyB9IGZyb20gXCJzZXR0aW5nc1wiO1xuXG4vKiogQ2VudHJhbCwgaW5kZXggc3RvcmFnZSBmb3IgZGF0YWNvcmUgdmFsdWVzLiAqL1xuZXhwb3J0IGNsYXNzIERhdGFzdG9yZSB7XG4gICAgLyoqIFRoZSBjdXJyZW50IHN0b3JlIHJldmlzaW9uLiAqL1xuICAgIHB1YmxpYyByZXZpc2lvbjogbnVtYmVyO1xuICAgIC8qKlxuICAgICAqIE1hc3RlciBjb2xsZWN0aW9uIG9mIGFsbCBvYmplY3QgSURzLiBUaGlzIGlzIHRlY2huaWNhbGx5IHJlZHVuZGFudCB3aXRoIG9iamVjdHMua2V5cygpIGJ1dCB0aGlzIGlzIGEgZmFzdCBzZXRcbiAgICAgKiBjb21wYXJlZCB0byBhbiBpdGVyYXRvci5cbiAgICAgKi9cbiAgICBwcml2YXRlIGlkczogU2V0PHN0cmluZz47XG4gICAgLyoqIFRoZSBtYXN0ZXIgY29sbGVjdGlvbiBvZiBBTEwgaW5kZXhlZCBvYmplY3RzLCBtYXBwaW5nIElEIC0+IHRoZSBvYmplY3QuICovXG4gICAgcHJpdmF0ZSBvYmplY3RzOiBNYXA8c3RyaW5nLCBJbmRleGFibGU+O1xuICAgIC8qKiBNYXAgcGFyZW50IG9iamVjdCB0byBpdCdzIGRpcmVjdCBjaGlsZCBvYmplY3RzLiAqL1xuICAgIHByaXZhdGUgY2hpbGRyZW46IE1hcDxzdHJpbmcsIFNldDxzdHJpbmc+PjtcblxuICAgIC8vIEluZGljZXMgZm9yIHRoZSB2YXJpb3VzIGFjY2VwdGVkIHF1ZXJ5IHR5cGVzLiBUaGVzZSB3aWxsIHByb2JhYmx5IGJlIG1vdmVkIHRvIGEgZGlmZmVyZW50IHR5cGUgbGF0ZXIuXG4gICAgLyoqIEdsb2JhbCBtYXAgb2Ygb2JqZWN0IHR5cGUgLT4gbGlzdCBvZiBhbGwgb2JqZWN0cyBvZiB0aGF0IHR5cGUuICovXG4gICAgcHJpdmF0ZSB0eXBlczogSW52ZXJ0ZWRJbmRleDxzdHJpbmc+O1xuICAgIC8qKiBUcmFja3MgZXhhY3QgdGFnIG9jY3VyZW5jZSBpbiBvYmplY3RzLiAqL1xuICAgIHByaXZhdGUgZXRhZ3M6IEludmVydGVkSW5kZXg8c3RyaW5nPjtcbiAgICAvKiogVHJhY2tzIHRhZyBvY2N1cmVuY2UgaW4gb2JqZWN0cy4gKi9cbiAgICBwcml2YXRlIHRhZ3M6IEludmVydGVkSW5kZXg8c3RyaW5nPjtcbiAgICAvKiogTWFwcyBsaW5rIHN0cmluZ3MgdG8gdGhlIG9iamVjdCBJRHMgdGhhdCBsaW5rIHRvIHRob3NlIGxpbmtzLiAqL1xuICAgIHByaXZhdGUgbGlua3M6IEludmVydGVkSW5kZXg8c3RyaW5nPjtcbiAgICAvKiogVHJhY2tzIHRoZSBleGlzdGVuY2Ugb2YgZmllbGRzIChpbmRleGVkIGJ5IG5vcm1hbGl6ZWQga2V5IG5hbWUpLiAqL1xuICAgIHByaXZhdGUgZmllbGRzOiBNYXA8c3RyaW5nLCBGaWVsZEluZGV4PjtcbiAgICAvKipcbiAgICAgKiBRdWljayBzZWFyY2hlcyBmb3Igb2JqZWN0cyBpbiBmb2xkZXJzLiBUaGlzIGluZGV4IG9ubHkgdHJhY2tzIHRvcC1sZXZlbCBvYmplY3RzIC0gaXQgaXMgZXhwYW5kZWQgcmVjdXJzaXZlbHkgdG9cbiAgICAgKiBmaW5kIGNoaWxkIG9iamVjdHMuXG4gICAgICovXG4gICAgcHJpdmF0ZSBmb2xkZXI6IEZvbGRlckluZGV4O1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHB1YmxpYyB2YXVsdDogVmF1bHQsIHB1YmxpYyBtZXRhZGF0YUNhY2hlOiBNZXRhZGF0YUNhY2hlLCBwdWJsaWMgc2V0dGluZ3M6IFNldHRpbmdzKSB7XG4gICAgICAgIHRoaXMucmV2aXNpb24gPSAwO1xuICAgICAgICB0aGlzLmlkcyA9IG5ldyBTZXQoKTtcbiAgICAgICAgdGhpcy5vYmplY3RzID0gbmV3IE1hcCgpO1xuICAgICAgICB0aGlzLmNoaWxkcmVuID0gbmV3IE1hcCgpO1xuXG4gICAgICAgIHRoaXMudHlwZXMgPSBuZXcgSW52ZXJ0ZWRJbmRleCgpO1xuICAgICAgICB0aGlzLmV0YWdzID0gbmV3IEludmVydGVkSW5kZXgoKTtcbiAgICAgICAgdGhpcy50YWdzID0gbmV3IEludmVydGVkSW5kZXgoKTtcbiAgICAgICAgdGhpcy5saW5rcyA9IG5ldyBJbnZlcnRlZEluZGV4KCk7XG4gICAgICAgIHRoaXMuZmllbGRzID0gdGhpcy5faW5pdGlhbGl6ZUZpZWxkcygpO1xuICAgICAgICB0aGlzLmZvbGRlciA9IG5ldyBGb2xkZXJJbmRleCh2YXVsdCk7XG4gICAgfVxuXG4gICAgLyoqIFJldHVybiB0aGUgdG90YWwgbnVtYmVyIG9mIG9iamVjdHMgaW4gdGhlIHN0b3JlLiAqL1xuICAgIHB1YmxpYyBnZXQgc2l6ZSgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5vYmplY3RzLnNpemU7XG4gICAgfVxuXG4gICAgLyoqIFVwZGF0ZSB0aGUgcmV2aXNpb24gb2YgdGhlIGRhdGFzdG9yZSBkdWUgdG8gYW4gZXh0ZXJuYWwgdXBkYXRlLiAqL1xuICAgIHB1YmxpYyB0b3VjaCgpIHtcbiAgICAgICAgdGhpcy5yZXZpc2lvbiArPSAxO1xuICAgIH1cblxuICAgIC8qKiBMb2FkIGFuIG9iamVjdCBieSBJRC4gKi9cbiAgICBwdWJsaWMgbG9hZChpZDogc3RyaW5nKTogSW5kZXhhYmxlIHwgdW5kZWZpbmVkO1xuICAgIC8qKiBMb2FkIGEgbGlzdCBvZiBvYmplY3RzIGJ5IElELiAqL1xuICAgIHB1YmxpYyBsb2FkKGlkczogc3RyaW5nW10pOiBJbmRleGFibGVbXTtcblxuICAgIC8qKiBMb2FkIGFuIG9iamVjdCBieSBJRCBvciBsaXN0IG9mIElEcy4gKi9cbiAgICBsb2FkKGlkOiBzdHJpbmcgfCBzdHJpbmdbXSk6IEluZGV4YWJsZSB8IEluZGV4YWJsZVtdIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaWQpKSB7XG4gICAgICAgICAgICByZXR1cm4gaWQubWFwKChhKSA9PiB0aGlzLmxvYWQoYSkpLmZpbHRlcigob2JqKTogb2JqIGlzIEluZGV4YWJsZSA9PiBvYmogIT09IHVuZGVmaW5lZCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5vYmplY3RzLmdldChpZCk7XG4gICAgfVxuXG4gICAgLyoqIFNldHMgdXAgc2FuZSBmaWVsZCBkZWZhdWx0cyBmb3Igc2V2ZXJhbCBpbmRleGFibGUgZmllbGRzLiAqL1xuICAgIHByaXZhdGUgX2luaXRpYWxpemVGaWVsZHMoKTogTWFwPHN0cmluZywgRmllbGRJbmRleD4ge1xuICAgICAgICBjb25zdCBmaWVsZHMgPSBuZXcgTWFwPHN0cmluZywgRmllbGRJbmRleD4oKTtcblxuICAgICAgICAvLyBTcGVjaWFsaXplIGluZGljZXMgZm9yICRpZCBhbmQgdGhlIG90aGVyIG9tbmlwcmVzZW50IGZpZWxkIHZhbHVlcy5cbiAgICAgICAgZmllbGRzLnNldChcbiAgICAgICAgICAgIFwiJGlkXCIsXG4gICAgICAgICAgICBuZXcgSWRGaWVsZEluZGV4KFxuICAgICAgICAgICAgICAgICgpID0+IHRoaXMuaWRzLFxuICAgICAgICAgICAgICAgIChpZCkgPT4gdGhpcy5vYmplY3RzLmhhcyhpZClcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgICAgZmllbGRzLnNldChcIiR0eXBlc1wiLCBuZXcgRXZlcnl0aGluZ0ZpZWxkSW5kZXgoKCkgPT4gdGhpcy5pZHMpKTtcbiAgICAgICAgZmllbGRzLnNldChcIiR0eXBlbmFtZVwiLCBuZXcgRXZlcnl0aGluZ0ZpZWxkSW5kZXgoKCkgPT4gdGhpcy5pZHMpKTtcbiAgICAgICAgZmllbGRzLnNldChcIiRyZXZpc2lvblwiLCBuZXcgRXZlcnl0aGluZ0ZpZWxkSW5kZXgoKCkgPT4gdGhpcy5pZHMpKTtcblxuICAgICAgICAvLyBPcHRpbWl6ZSBvdmVyICRjb21wbGV0ZWQgYW5kICRzdGF0dXMgbG9va3VwcyBmb3IgdGFza3MuXG4gICAgICAgIGZpZWxkcy5zZXQoXCIkY29tcGxldGVkXCIsIG5ldyBCVHJlZUZpZWxkSW5kZXgoKSk7XG4gICAgICAgIGZpZWxkcy5zZXQoXCIkc3RhdHVzXCIsIG5ldyBCVHJlZUZpZWxkSW5kZXgoKSk7XG5cbiAgICAgICAgcmV0dXJuIGZpZWxkcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTdG9yZSB0aGUgZ2l2ZW4gb2JqZWN0LCBtYWtpbmcgaXQgaW1tZWRpYXRlbHkgcXVlcnlhYmxlLiBTdG9yaW5nIGFuIG9iamVjdFxuICAgICAqIHRha2VzIG93bmVyc2hpcCBvdmVyIGl0LCBhbmQgaW5kZXgtc3BlY2lmaWMgdmFyaWFibGVzIChwcmVmaXhlZCB2aWEgJyQnKSBtYXkgYmVcbiAgICAgKiBhZGRlZCB0byB0aGUgb2JqZWN0LlxuICAgICAqL1xuICAgIHB1YmxpYyBzdG9yZTxUIGV4dGVuZHMgSW5kZXhhYmxlPihvYmplY3Q6IFQgfCBUW10sIHN1YnN0b3Jlcj86IFN1YnN0b3JlcjxUPikge1xuICAgICAgICB0aGlzLl9yZWN1cnNpdmVTdG9yZShvYmplY3QsIHRoaXMucmV2aXNpb24rKywgc3Vic3RvcmVyLCB1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIC8qKiBSZWN1cnNpdmVseSBzdG9yZSBvYmplY3RzIHVzaW5nIGEgcG90ZW50aWFsIHN1YmluZGV4ZXIuICovXG4gICAgcHJpdmF0ZSBfcmVjdXJzaXZlU3RvcmU8VCBleHRlbmRzIEluZGV4YWJsZT4oXG4gICAgICAgIG9iamVjdDogVCB8IFRbXSxcbiAgICAgICAgcmV2aXNpb246IG51bWJlcixcbiAgICAgICAgc3Vic3RvcmVyPzogU3Vic3RvcmVyPFQ+LFxuICAgICAgICBwYXJlbnQ/OiBJbmRleGFibGVcbiAgICApIHtcbiAgICAgICAgLy8gSGFuZGxlIGFycmF5IGlucHV0cy5cbiAgICAgICAgaWYgKExpdGVyYWxzLmlzQXJyYXkob2JqZWN0KSkge1xuICAgICAgICAgICAgZm9yIChsZXQgZWxlbWVudCBvZiBvYmplY3QpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9yZWN1cnNpdmVTdG9yZShlbGVtZW50LCByZXZpc2lvbiwgc3Vic3RvcmVyLCBwYXJlbnQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBEZWxldGUgdGhlIHByZXZpb3VzIGluc3RhbmNlIG9mIHRoaXMgb2JqZWN0IGlmIHByZXNlbnQuXG4gICAgICAgIC8vIFRPRE86IFByb2JhYmx5IG9ubHkgYWN0dWFsbHkgbmVlZCB0byBkZWxldGUgdGhlIHJvb3Qgb2JqZWN0cy5cbiAgICAgICAgdGhpcy5fZGVsZXRlUmVjdXJzaXZlKG9iamVjdC4kaWQpO1xuXG4gICAgICAgIC8vIEFzc2lnbiB0aGUgbmV4dCByZXZpc2lvbiB0byB0aGlzIG9iamVjdDsgaW5kZXhlZCBvYmplY3RzIGFyZSBpbXBsaWVkIHRvIGJlIHJvb3Qgb2JqZWN0cy5cbiAgICAgICAgb2JqZWN0LiRyZXZpc2lvbiA9IHJldmlzaW9uO1xuICAgICAgICBvYmplY3QuJHBhcmVudCA9IHBhcmVudDtcblxuICAgICAgICAvLyBBZGQgdGhlIG9iamVjdCB0byB0aGUgYXBwcm9wcmlhdGUgb2JqZWN0IG1hcHMuXG4gICAgICAgIHRoaXMuaWRzLmFkZChvYmplY3QuJGlkKTtcbiAgICAgICAgdGhpcy5vYmplY3RzLnNldChvYmplY3QuJGlkLCBvYmplY3QpO1xuXG4gICAgICAgIC8vIEFkZCB0aGUgb2JqZWN0IHRvIHRoZSBwYXJlbnQgY2hpbGRyZW4gbWFwLlxuICAgICAgICBpZiAocGFyZW50KSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuY2hpbGRyZW4uaGFzKHBhcmVudC4kaWQpKSB0aGlzLmNoaWxkcmVuLnNldChwYXJlbnQuJGlkLCBuZXcgU2V0KCkpO1xuICAgICAgICAgICAgdGhpcy5jaGlsZHJlbi5nZXQocGFyZW50LiRpZCkhLmFkZChvYmplY3QuJGlkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2luZGV4KG9iamVjdCk7XG5cbiAgICAgICAgLy8gSW5kZXggYW55IHN1Ym9yZGluYXRlIG9iamVjdHMgaW4gdGhpcyBvYmplY3QuXG4gICAgICAgIHN1YnN0b3Jlcj8uKG9iamVjdCwgKGluY29taW5nLCBzdWJpbmRleCkgPT4gdGhpcy5fcmVjdXJzaXZlU3RvcmUoaW5jb21pbmcsIHJldmlzaW9uLCBzdWJpbmRleCwgb2JqZWN0KSk7XG4gICAgfVxuXG4gICAgLyoqIERlbGV0ZSBhbiBvYmplY3QgYnkgSUQgZnJvbSB0aGUgaW5kZXgsIHJlY3Vyc2l2ZWx5IGRlbGV0aW5nIGFueSBjaGlsZCBvYmplY3RzIGFzIHdlbGwuICovXG4gICAgcHVibGljIGRlbGV0ZShpZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLl9kZWxldGVSZWN1cnNpdmUoaWQpKSB7XG4gICAgICAgICAgICB0aGlzLnJldmlzaW9uKys7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKiogSW50ZXJuYWwgbWV0aG9kIHRoYXQgZG9lcyBub3QgYnVtcCB0aGUgcmV2aXNpb24uICovXG4gICAgcHJpdmF0ZSBfZGVsZXRlUmVjdXJzaXZlKGlkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3Qgb2JqZWN0ID0gdGhpcy5vYmplY3RzLmdldChpZCk7XG4gICAgICAgIGlmICghb2JqZWN0KSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBSZWN1cnNpdmVseSBkZWxldGUgYWxsIGNoaWxkIG9iamVjdHMuXG4gICAgICAgIGNvbnN0IGNoaWxkcmVuID0gdGhpcy5jaGlsZHJlbi5nZXQoaWQpO1xuICAgICAgICBpZiAoY2hpbGRyZW4pIHtcbiAgICAgICAgICAgIGZvciAobGV0IGNoaWxkIG9mIGNoaWxkcmVuKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZGVsZXRlUmVjdXJzaXZlKGNoaWxkKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5jaGlsZHJlbi5kZWxldGUoaWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRHJvcCB0aGlzIG9iamVjdCBmcm9tIHRoZSBhcHByb3ByaWF0ZSBtYXBzLlxuICAgICAgICB0aGlzLl91bmluZGV4KG9iamVjdCk7XG4gICAgICAgIHRoaXMuaWRzLmRlbGV0ZShpZCk7XG4gICAgICAgIHRoaXMub2JqZWN0cy5kZWxldGUoaWQpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKiogQWRkIHRoZSBnaXZlbiBpbmRleGFibGUgdG8gdGhlIGFwcHJvcHJpYXRlIGluZGljZXMuICovXG4gICAgcHJpdmF0ZSBfaW5kZXgob2JqZWN0OiBJbmRleGFibGUpIHtcbiAgICAgICAgdGhpcy50eXBlcy5zZXQob2JqZWN0LiRpZCwgb2JqZWN0LiR0eXBlcyk7XG5cbiAgICAgICAgLy8gRXhhY3QgYW5kIGRlcml2ZWQgdGFncy5cbiAgICAgICAgaWYgKG9iamVjdC4kdHlwZXMuY29udGFpbnMoVEFHR0FCTEVfVFlQRSkgJiYgaXRlcmFibGVFeGlzdHMob2JqZWN0LCBcIiR0YWdzXCIpKSB7XG4gICAgICAgICAgICBjb25zdCB0YWdzID0gb2JqZWN0LiR0YWdzIGFzIFNldDxzdHJpbmc+O1xuXG4gICAgICAgICAgICB0aGlzLmV0YWdzLnNldChvYmplY3QuJGlkLCB0YWdzKTtcbiAgICAgICAgICAgIHRoaXMudGFncy5zZXQob2JqZWN0LiRpZCwgZXh0cmFjdFN1YnRhZ3ModGFncykpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRXhhY3QgYW5kIGRlcml2ZWQgbGlua3MuXG4gICAgICAgIGlmIChvYmplY3QuJHR5cGVzLmNvbnRhaW5zKExJTktCRUFSSU5HX1RZUEUpICYmIGl0ZXJhYmxlRXhpc3RzKG9iamVjdCwgXCIkbGlua3NcIikpIHtcbiAgICAgICAgICAgIHRoaXMubGlua3Muc2V0KFxuICAgICAgICAgICAgICAgIG9iamVjdC4kaWQsXG4gICAgICAgICAgICAgICAgKG9iamVjdC4kbGlua3MgYXMgTGlua1tdKS5tYXAoKGxpbmspID0+IGxpbmsub2JzaWRpYW5MaW5rKCkpXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQWxsIGZpZWxkcyBvbiBhbiBvYmplY3QuXG4gICAgICAgIGlmIChvYmplY3QuJHR5cGVzLmNvbnRhaW5zKEZJRUxEQkVBUklOR19UWVBFKSAmJiBcImZpZWxkc1wiIGluIG9iamVjdCkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBmaWVsZCBvZiBvYmplY3QuZmllbGRzIGFzIEl0ZXJhYmxlPEZpZWxkPikge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5vcm0gPSBmaWVsZC5rZXkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZmllbGRzLmhhcyhub3JtKSkgdGhpcy5maWVsZHMuc2V0KG5vcm0sIG5ldyBTZXRGaWVsZEluZGV4KCkpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5maWVsZHMuZ2V0KG5vcm0pIS5hZGQob2JqZWN0LiRpZCwgZmllbGQudmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIFJlbW92ZSB0aGUgZ2l2ZW4gaW5kZXhhYmxlIGZyb20gYWxsIGluZGljZXMuICovXG4gICAgcHJpdmF0ZSBfdW5pbmRleChvYmplY3Q6IEluZGV4YWJsZSkge1xuICAgICAgICB0aGlzLnR5cGVzLmRlbGV0ZShvYmplY3QuJGlkLCBvYmplY3QuJHR5cGVzKTtcblxuICAgICAgICBpZiAob2JqZWN0LiR0eXBlcy5jb250YWlucyhUQUdHQUJMRV9UWVBFKSAmJiBpdGVyYWJsZUV4aXN0cyhvYmplY3QsIFwiJHRhZ3NcIikpIHtcbiAgICAgICAgICAgIGNvbnN0IHRhZ3MgPSBvYmplY3QuJHRhZ3MgYXMgU2V0PHN0cmluZz47XG5cbiAgICAgICAgICAgIHRoaXMuZXRhZ3MuZGVsZXRlKG9iamVjdC4kaWQsIHRhZ3MpO1xuICAgICAgICAgICAgdGhpcy50YWdzLmRlbGV0ZShvYmplY3QuJGlkLCBleHRyYWN0U3VidGFncyh0YWdzKSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob2JqZWN0LiR0eXBlcy5jb250YWlucyhMSU5LQkVBUklOR19UWVBFKSAmJiBpdGVyYWJsZUV4aXN0cyhvYmplY3QsIFwiJGxpbmtzXCIpKSB7XG4gICAgICAgICAgICAvLyBBc3N1bWUgbGlua3MgYXJlIG5vcm1hbGl6ZWQgd2hlbiBkZWxldGluZyB0aGVtLiBDb3VsZCBiZSBicm9rZW4gYnV0IEkgaG9wZSBub3QuIFdlIGNhbiBhbHdheXMgdXNlIGEgMi13YXkgaW5kZXggdG9cbiAgICAgICAgICAgIC8vIGZpeCB0aGlzIGlmIHdlIGVuY291bnRlciBub24tbm9ybWFsaXplZCBsaW5rcy5cbiAgICAgICAgICAgIHRoaXMubGlua3MuZGVsZXRlKFxuICAgICAgICAgICAgICAgIG9iamVjdC4kaWQsXG4gICAgICAgICAgICAgICAgKG9iamVjdC4kbGlua3MgYXMgTGlua1tdKS5tYXAoKGxpbmspID0+IGxpbmsub2JzaWRpYW5MaW5rKCkpXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9iamVjdC4kdHlwZXMuY29udGFpbnMoRklFTERCRUFSSU5HX1RZUEUpICYmIFwiZmllbGRzXCIgaW4gb2JqZWN0KSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIG9iamVjdC5maWVsZHMgYXMgSXRlcmFibGU8RmllbGQ+KSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgbm9ybSA9IGZpZWxkLmtleS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5maWVsZHMuaGFzKG5vcm0pKSBjb250aW51ZTtcblxuICAgICAgICAgICAgICAgIHRoaXMuZmllbGRzLmdldChub3JtKSEuZGVsZXRlKG9iamVjdC4kaWQsIGZpZWxkLnZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBDb21wbGV0ZWx5IGNsZWFyIHRoZSBkYXRhc3RvcmUgb2YgYWxsIHZhbHVlcy4gKi9cbiAgICBwdWJsaWMgY2xlYXIoKSB7XG4gICAgICAgIHRoaXMuaWRzLmNsZWFyKCk7XG4gICAgICAgIHRoaXMub2JqZWN0cy5jbGVhcigpO1xuICAgICAgICB0aGlzLmNoaWxkcmVuLmNsZWFyKCk7XG5cbiAgICAgICAgdGhpcy50eXBlcy5jbGVhcigpO1xuICAgICAgICB0aGlzLnRhZ3MuY2xlYXIoKTtcbiAgICAgICAgdGhpcy5ldGFncy5jbGVhcigpO1xuICAgICAgICB0aGlzLmxpbmtzLmNsZWFyKCk7XG4gICAgICAgIHRoaXMuZmllbGRzLmNsZWFyKCk7XG5cbiAgICAgICAgdGhpcy5yZXZpc2lvbisrO1xuICAgIH1cblxuICAgIC8qKiBGaW5kIHRoZSBjb3JyZXNwb25kaW5nIG9iamVjdCBmb3IgYSBnaXZlbiBsaW5rLiAqL1xuICAgIHB1YmxpYyByZXNvbHZlTGluayhyYXdMaW5rOiBzdHJpbmcgfCBMaW5rLCBzb3VyY2VQYXRoPzogc3RyaW5nKTogSW5kZXhhYmxlIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgbGV0IGxpbmsgPSB0eXBlb2YgcmF3TGluayA9PT0gXCJzdHJpbmdcIiA/IExpbmsucGFyc2VJbm5lcihyYXdMaW5rKSA6IHJhd0xpbms7XG5cbiAgICAgICAgaWYgKHNvdXJjZVBhdGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGxpbmtkZXN0ID0gdGhpcy5tZXRhZGF0YUNhY2hlLmdldEZpcnN0TGlua3BhdGhEZXN0KGxpbmsucGF0aCwgc291cmNlUGF0aCk7XG4gICAgICAgICAgICBpZiAobGlua2Rlc3QpIGxpbmsgPSBsaW5rLndpdGhQYXRoKGxpbmtkZXN0LnBhdGgpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZmlsZSA9IHRoaXMub2JqZWN0cy5nZXQobGluay5wYXRoKTtcbiAgICAgICAgaWYgKCFmaWxlKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgICAgIGlmIChsaW5rLnR5cGUgPT09IFwiZmlsZVwiKSByZXR1cm4gZmlsZTtcblxuICAgICAgICAvLyBCbG9ja3MgYW5kIGhlYWRlciBsaW5rcyBjYW4gb25seSByZXNvbHZlIGluc2lkZSBvZiBtYXJrZG93biBmaWxlcy5cbiAgICAgICAgaWYgKCEoZmlsZSBpbnN0YW5jZW9mIE1hcmtkb3duUGFnZSkpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICAgICAgaWYgKGxpbmsudHlwZSA9PT0gXCJoZWFkZXJcIikge1xuICAgICAgICAgICAgY29uc3Qgc2VjdGlvbiA9IGZpbGUuJHNlY3Rpb25zLmZpbmQoXG4gICAgICAgICAgICAgICAgKHNlYykgPT4gbm9ybWFsaXplSGVhZGVyRm9yTGluayhzZWMuJHRpdGxlKSA9PSBsaW5rLnN1YnBhdGggfHwgc2VjLiR0aXRsZSA9PSBsaW5rLnN1YnBhdGhcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmIChzZWN0aW9uKSByZXR1cm4gc2VjdGlvbjtcbiAgICAgICAgICAgIGVsc2UgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfSBlbHNlIGlmIChsaW5rLnR5cGUgPT09IFwiYmxvY2tcIikge1xuICAgICAgICAgICAgZm9yIChjb25zdCBzZWN0aW9uIG9mIGZpbGUuJHNlY3Rpb25zKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYmxvY2sgPSBzZWN0aW9uLiRibG9ja3MuZmluZCgoYmwpID0+IGJsLiRibG9ja0lkID09PSBsaW5rLnN1YnBhdGgpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGJsb2NrKSByZXR1cm4gYmxvY2s7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVucmVjb2duaXplZCBsaW5rIHR5cGU6ICR7bGluay50eXBlfWApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2VhcmNoIHRoZSBkYXRhc3RvcmUgZm9yIGFsbCBkb2N1bWVudHMgbWF0Y2hpbmcgdGhlIGdpdmVuIHF1ZXJ5LCByZXR1cm5pbmcgdGhlbVxuICAgICAqIGFzIGEgbGlzdCBvZiBpbmRleGVkIG9iamVjdHMgYWxvbmcgd2l0aCBwZXJmb3JtYW5jZSBtZXRhZGF0YS5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2VhcmNoKHF1ZXJ5OiBJbmRleFF1ZXJ5LCBzZXR0aW5ncz86IFNlYXJjaFNldHRpbmdzKTogUmVzdWx0PFNlYXJjaFJlc3VsdDxJbmRleGFibGU+LCBzdHJpbmc+IHtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuXG4gICAgICAgIGNvbnN0IG1heWJlRmlsdGVyID0gdGhpcy5fc2VhcmNoKHF1ZXJ5LCBzZXR0aW5ncyk7XG4gICAgICAgIGlmICghbWF5YmVGaWx0ZXIuc3VjY2Vzc2Z1bCkgcmV0dXJuIG1heWJlRmlsdGVyLmNhc3QoKTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gRmlsdGVycy5yZXNvbHZlKG1heWJlRmlsdGVyLnZhbHVlLCB0aGlzLmlkcyk7XG5cbiAgICAgICAgY29uc3Qgb2JqZWN0czogSW5kZXhhYmxlW10gPSBbXTtcbiAgICAgICAgbGV0IG1heFJldmlzaW9uID0gMDtcbiAgICAgICAgZm9yIChsZXQgaWQgb2YgcmVzdWx0KSB7XG4gICAgICAgICAgICBjb25zdCBvYmplY3QgPSB0aGlzLm9iamVjdHMuZ2V0KGlkKTtcbiAgICAgICAgICAgIGlmIChvYmplY3QpIHtcbiAgICAgICAgICAgICAgICBvYmplY3RzLnB1c2gob2JqZWN0KTtcbiAgICAgICAgICAgICAgICBtYXhSZXZpc2lvbiA9IE1hdGgubWF4KG1heFJldmlzaW9uLCBvYmplY3QuJHJldmlzaW9uID8/IDApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFJlc3VsdC5zdWNjZXNzKHtcbiAgICAgICAgICAgIHF1ZXJ5OiBxdWVyeSxcbiAgICAgICAgICAgIHJlc3VsdHM6IG9iamVjdHMsXG4gICAgICAgICAgICBkdXJhdGlvbjogKERhdGUubm93KCkgLSBzdGFydCkgLyAxMDAwLjAsXG4gICAgICAgICAgICByZXZpc2lvbjogbWF4UmV2aXNpb24sXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBJbnRlcm5hbCBzZWFyY2ggd2hpY2ggeWllbGRzIGEgZmlsdGVyIG9mIHJlc3VsdHMuICovXG4gICAgcHJpdmF0ZSBfc2VhcmNoKHF1ZXJ5OiBJbmRleFF1ZXJ5LCBzZXR0aW5ncz86IFNlYXJjaFNldHRpbmdzKTogUmVzdWx0PEZpbHRlcjxzdHJpbmc+LCBzdHJpbmc+IHtcbiAgICAgICAgY29uc3Qgc291cmNlUGF0aCA9IHNldHRpbmdzPy5zb3VyY2VQYXRoO1xuICAgICAgICBjb25zdCBmaWxlID0gc291cmNlUGF0aCA/IHRoaXMub2JqZWN0cy5nZXQoc291cmNlUGF0aCkgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgY29uc3QgZXZhbHVhdG9yID0gbmV3IEV2YWx1YXRvcihcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBleGlzdHM6IChwYXRoOiBzdHJpbmcgfCBMaW5rKSA9PlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc29sdmVMaW5rKHR5cGVvZiBwYXRoID09IFwic3RyaW5nXCIgPyBMaW5rLmZpbGUocGF0aCkgOiBwYXRoLCBzb3VyY2VQYXRoKSAhPSBudWxsLFxuICAgICAgICAgICAgICAgIHJlc29sdmU6IChwYXRoOiBzdHJpbmcpID0+XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVzb2x2ZUxpbmsodHlwZW9mIHBhdGggPT0gXCJzdHJpbmdcIiA/IExpbmsuZmlsZShwYXRoKSA6IHBhdGgsIHNvdXJjZVBhdGgpID8/IG51bGwsXG4gICAgICAgICAgICAgICAgbm9ybWFsaXplOiAocGF0aDogc3RyaW5nKSA9PlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1ldGFkYXRhQ2FjaGUuZ2V0Rmlyc3RMaW5rcGF0aERlc3QocGF0aCwgc291cmNlUGF0aCA/PyBcIlwiKT8ucGF0aCA/PyBwYXRoLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZ3NcbiAgICAgICAgKTtcblxuICAgICAgICAvLyBTZXQgYHRoaXNgIG9uIHRoZSBmaWxlIGlmIG5lZWRlZC5cbiAgICAgICAgaWYgKGZpbGUpIGV2YWx1YXRvci5zZXQoXCJ0aGlzXCIsIGZpbGUpO1xuXG4gICAgICAgIGNvbnN0IHJlc29sdmVyOiBJbmRleFJlc29sdmVyPHN0cmluZz4gPSB7XG4gICAgICAgICAgICB1bml2ZXJzZTogdGhpcy5pZHMsXG4gICAgICAgICAgICByZXNvbHZlOiAobGVhZikgPT4gdGhpcy5fcmVzb2x2ZVNvdXJjZShsZWFmLCBzZXR0aW5ncyksXG4gICAgICAgICAgICByZXNvbHZlUHJpbWl0aXZlOiAobGVhZikgPT4gdGhpcy5fcmVzb2x2ZVByaW1pdGl2ZShsZWFmLCBzZXR0aW5ncyksXG4gICAgICAgICAgICBsb2FkOiAoaWQpID0+IHRoaXMubG9hZChpZCksXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIGV4ZWN1dGUob3B0aW1pemVRdWVyeShxdWVyeSksIHJlc29sdmVyLCBldmFsdWF0b3IpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3Jlc29sdmVTb3VyY2UocXVlcnk6IEluZGV4U291cmNlLCBzZXR0aW5ncz86IFNlYXJjaFNldHRpbmdzKTogUmVzdWx0PEZpbHRlcjxzdHJpbmc+LCBzdHJpbmc+IHtcbiAgICAgICAgc3dpdGNoIChxdWVyeS50eXBlKSB7XG4gICAgICAgICAgICBjYXNlIFwiY2hpbGQtb2ZcIjpcbiAgICAgICAgICAgICAgICAvLyBUT0RPOiBDb25zaWRlciBjb252ZXJ0aW5nIHRoaXMgdG8gYmUgYSBzY2FuIGluc3RlYWQgZm9yIGEgbm90aWNhYmxlIHNwZWVkdXAuXG4gICAgICAgICAgICAgICAgY29uc3QgbWF5YmVQYXJlbnRzID0gdGhpcy5fc2VhcmNoKHF1ZXJ5LnBhcmVudHMsIHNldHRpbmdzKTtcbiAgICAgICAgICAgICAgICBpZiAoIW1heWJlUGFyZW50cy5zdWNjZXNzZnVsKSByZXR1cm4gbWF5YmVQYXJlbnRzLmNhc3QoKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudHMgPSBtYXliZVBhcmVudHMudmFsdWU7XG4gICAgICAgICAgICAgICAgaWYgKEZpbHRlcnMuZW1wdHkocGFyZW50cykpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJlc3VsdC5zdWNjZXNzKEZpbHRlcnMuTk9USElORyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwYXJlbnRzLnR5cGUgPT09IFwiZXZlcnl0aGluZ1wiKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChxdWVyeS5pbmNsdXNpdmUpIHJldHVybiBSZXN1bHQuc3VjY2VzcyhGaWx0ZXJzLkVWRVJZVEhJTkcpO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIFJldHVybiB0aGUgc2V0IGFsbCBjaGlsZHJlbi4gVE9ETzogQ29uc2lkZXIgY2FjaGluZyB2aWEgYSBgcGFyZW50c2AgbWFwLlxuICAgICAgICAgICAgICAgICAgICBjb25zdCBhbGxDaGlsZHJlbiA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgdGhpcy5vYmplY3RzLnZhbHVlcygpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC4kcGFyZW50KSBhbGxDaGlsZHJlbi5hZGQoZWxlbWVudC4kaWQpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJlc3VsdC5zdWNjZXNzKEZpbHRlcnMuYXRvbShhbGxDaGlsZHJlbikpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IHJlc29sdmVkUGFyZW50cyA9IEZpbHRlcnMucmVzb2x2ZShwYXJlbnRzLCB0aGlzLmlkcyk7XG4gICAgICAgICAgICAgICAgY29uc3QgY2hpbGRSZXN1bHRzID0gbmV3IFNldDxzdHJpbmc+KHF1ZXJ5LmluY2x1c2l2ZSA/IHJlc29sdmVkUGFyZW50cyA6IFtdKTtcblxuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcGFyZW50IG9mIHJlc29sdmVkUGFyZW50cykge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIHRoaXMuX2l0ZXJhdGVDaGlsZHJlbihwYXJlbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGlsZFJlc3VsdHMuYWRkKGNoaWxkKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBSZXN1bHQuc3VjY2VzcyhGaWx0ZXJzLmF0b20oY2hpbGRSZXN1bHRzKSk7XG4gICAgICAgICAgICBjYXNlIFwicGFyZW50LW9mXCI6XG4gICAgICAgICAgICAgICAgLy8gVE9ETzogQ29uc2lkZXIgY29udmVydGluZyB0aGlzIHRvIGJlIGEgc2NhbiBpbnN0ZWFkIGZvciBhIG5vdGljYWJsZSBzcGVlZHVwLlxuICAgICAgICAgICAgICAgIGNvbnN0IG1heWJlQ2hpbGRyZW4gPSB0aGlzLl9zZWFyY2gocXVlcnkuY2hpbGRyZW4sIHNldHRpbmdzKTtcbiAgICAgICAgICAgICAgICBpZiAoIW1heWJlQ2hpbGRyZW4uc3VjY2Vzc2Z1bCkgcmV0dXJuIG1heWJlQ2hpbGRyZW4uY2FzdCgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkcmVuID0gbWF5YmVDaGlsZHJlbi52YWx1ZTtcblxuICAgICAgICAgICAgICAgIGlmIChGaWx0ZXJzLmVtcHR5KGNoaWxkcmVuKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmVzdWx0LnN1Y2Nlc3MoRmlsdGVycy5OT1RISU5HKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNoaWxkcmVuLnR5cGUgPT09IFwiZXZlcnl0aGluZ1wiKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChxdWVyeS5pbmNsdXNpdmUpIHJldHVybiBSZXN1bHQuc3VjY2VzcyhGaWx0ZXJzLkVWRVJZVEhJTkcpO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBSZXN1bHQuc3VjY2VzcyhGaWx0ZXJzLmF0b20obmV3IFNldCh0aGlzLmNoaWxkcmVuLmtleXMoKSkpKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCByZXNvbHZlZENoaWxkcmVuID0gRmlsdGVycy5yZXNvbHZlKGNoaWxkcmVuLCB0aGlzLmlkcyk7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyZW50UmVzdWx0cyA9IG5ldyBTZXQ8c3RyaW5nPihxdWVyeS5pbmNsdXNpdmUgPyByZXNvbHZlZENoaWxkcmVuIDogW10pO1xuXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiByZXNvbHZlZENoaWxkcmVuKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcGFyZW50IG9mIHRoaXMuX2l0ZXJhdGVQYXJlbnRzKGNoaWxkKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50UmVzdWx0cy5hZGQocGFyZW50KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBSZXN1bHQuc3VjY2VzcyhGaWx0ZXJzLmF0b20ocGFyZW50UmVzdWx0cykpO1xuICAgICAgICAgICAgY2FzZSBcImxpbmtlZFwiOlxuICAgICAgICAgICAgICAgIGlmIChxdWVyeS5kaXN0YW5jZSAmJiBxdWVyeS5kaXN0YW5jZSA8IDApIHJldHVybiBSZXN1bHQuc3VjY2VzcyhGaWx0ZXJzLk5PVEhJTkcpO1xuXG4gICAgICAgICAgICAgICAgLy8gQ29tcHV0ZSB0aGUgc291cmNlIG9iamVjdHMgZmlyc3QuXG4gICAgICAgICAgICAgICAgY29uc3QgbWF5YmVTb3VyY2VzID0gdGhpcy5fc2VhcmNoKHF1ZXJ5LnNvdXJjZSwgc2V0dGluZ3MpO1xuICAgICAgICAgICAgICAgIGlmICghbWF5YmVTb3VyY2VzLnN1Y2Nlc3NmdWwpIHJldHVybiBtYXliZVNvdXJjZXMuY2FzdCgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNvdXJjZXMgPSBtYXliZVNvdXJjZXMudmFsdWU7XG5cbiAgICAgICAgICAgICAgICBpZiAoRmlsdGVycy5lbXB0eShzb3VyY2VzKSkgcmV0dXJuIFJlc3VsdC5zdWNjZXNzKEZpbHRlcnMuTk9USElORyk7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoc291cmNlcy50eXBlID09PSBcImV2ZXJ5dGhpbmdcIikge1xuICAgICAgICAgICAgICAgICAgICBpZiAocXVlcnkuaW5jbHVzaXZlKSByZXR1cm4gUmVzdWx0LnN1Y2Nlc3MoRmlsdGVycy5FVkVSWVRISU5HKTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZSByZXR1cm4gUmVzdWx0LnN1Y2Nlc3MoRmlsdGVycy5OT1RISU5HKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCByZXNvbHZlZFNvdXJjZXMgPSBGaWx0ZXJzLnJlc29sdmUoc291cmNlcywgdGhpcy5pZHMpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGRpcmVjdGlvbiA9IHF1ZXJ5LmRpcmVjdGlvbiA/PyBcImJvdGhcIjtcbiAgICAgICAgICAgICAgICBjb25zdCByZXN1bHRzID0gdGhpcy5fdHJhdmVyc2VMaW5rZWQocmVzb2x2ZWRTb3VyY2VzLCBxdWVyeS5kaXN0YW5jZSA/PyAxLCAoaWQpID0+XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2l0ZXJhdGVBZGphY2VudExpbmtlZChpZCwgZGlyZWN0aW9uKVxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXF1ZXJ5LmluY2x1c2l2ZSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJlc3VsdC5zdWNjZXNzKEZpbHRlcnMuYXRvbShGaWx0ZXJzLnNldEludGVyc2VjdE5lZ2F0aW9uKHJlc3VsdHMsIHJlc29sdmVkU291cmNlcykpKTtcbiAgICAgICAgICAgICAgICBlbHNlIHJldHVybiBSZXN1bHQuc3VjY2VzcyhGaWx0ZXJzLmF0b20ocmVzdWx0cykpO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gUmVzdWx0LnN1Y2Nlc3ModGhpcy5fcmVzb2x2ZVByaW1pdGl2ZShxdWVyeSwgc2V0dGluZ3MpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBSZXNvbHZlIGxlYWYgbm9kZXMgaW4gYSBzZWFyY2ggQVNULCB5aWVsZGluZyByYXcgc2V0cyBvZiByZXN1bHRzLiAqL1xuICAgIHByaXZhdGUgX3Jlc29sdmVQcmltaXRpdmUocXVlcnk6IEluZGV4UHJpbWl0aXZlLCBzZXR0aW5ncz86IFNlYXJjaFNldHRpbmdzKTogRmlsdGVyPHN0cmluZz4ge1xuICAgICAgICBzd2l0Y2ggKHF1ZXJ5LnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgXCJjb25zdGFudFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBGaWx0ZXJzLmNvbnN0YW50KHF1ZXJ5LmNvbnN0YW50KTtcbiAgICAgICAgICAgIGNhc2UgXCJpZFwiOlxuICAgICAgICAgICAgICAgIGNvbnN0IGV4YWN0T2JqZWN0ID0gdGhpcy5vYmplY3RzLmdldChxdWVyeS52YWx1ZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGV4YWN0T2JqZWN0ID8gRmlsdGVycy5hdG9tKG5ldyBTZXQoW2V4YWN0T2JqZWN0LiRpZF0pKSA6IEZpbHRlcnMuTk9USElORztcbiAgICAgICAgICAgIGNhc2UgXCJsaW5rXCI6XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzb2x2ZWRQYXRoID0gdGhpcy5tZXRhZGF0YUNhY2hlLmdldEZpcnN0TGlua3BhdGhEZXN0KFxuICAgICAgICAgICAgICAgICAgICBxdWVyeS52YWx1ZS5wYXRoLFxuICAgICAgICAgICAgICAgICAgICBzZXR0aW5ncz8uc291cmNlUGF0aCA/PyBcIlwiXG4gICAgICAgICAgICAgICAgKT8ucGF0aDtcbiAgICAgICAgICAgICAgICBjb25zdCByZXNvbHZlZCA9IHJlc29sdmVkUGF0aCA/IHF1ZXJ5LnZhbHVlLndpdGhQYXRoKHJlc29sdmVkUGF0aCkgOiBxdWVyeS52YWx1ZTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IG9iamVjdCA9IHRoaXMucmVzb2x2ZUxpbmsocmVzb2x2ZWQpO1xuICAgICAgICAgICAgICAgIHJldHVybiBvYmplY3QgPyBGaWx0ZXJzLmF0b20obmV3IFNldChbb2JqZWN0LiRpZF0pKSA6IEZpbHRlcnMuTk9USElORztcbiAgICAgICAgICAgIGNhc2UgXCJ0eXBlZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBGaWx0ZXJzLm51bGxhYmxlQXRvbSh0aGlzLnR5cGVzLmdldChxdWVyeS52YWx1ZSkpO1xuICAgICAgICAgICAgY2FzZSBcInRhZ2dlZFwiOlxuICAgICAgICAgICAgICAgIGlmIChxdWVyeS5leGFjdCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmlsdGVycy5udWxsYWJsZUF0b20odGhpcy5ldGFncy5nZXQocXVlcnkudmFsdWUpKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmlsdGVycy5udWxsYWJsZUF0b20odGhpcy50YWdzLmdldChxdWVyeS52YWx1ZSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJwYXRoXCI6XG4gICAgICAgICAgICAgICAgbGV0IHRvcGxldmVsO1xuICAgICAgICAgICAgICAgIGlmIChxdWVyeS5leGFjdCkge1xuICAgICAgICAgICAgICAgICAgICB0b3BsZXZlbCA9IHRoaXMuZm9sZGVyLmdldEV4YWN0KHF1ZXJ5LnZhbHVlKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAocXVlcnkudmFsdWUgPT0gXCJcIiB8fCBxdWVyeS52YWx1ZSA9PSBcIi9cIikgcmV0dXJuIEZpbHRlcnMuRVZFUllUSElORztcblxuICAgICAgICAgICAgICAgICAgICB0b3BsZXZlbCA9IHRoaXMuZm9sZGVyLmdldChxdWVyeS52YWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHRvcGxldmVsLnNpemUgPT0gMCkgcmV0dXJuIEZpbHRlcnMuTk9USElORztcblxuICAgICAgICAgICAgICAgIC8vIEV4cGFuZCBhbGwgY2hpbGRyZW4uXG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gbmV3IFNldCh0b3BsZXZlbCk7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgdG9wIG9mIHRvcGxldmVsKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGNoaWxkIG9mIHRoaXMuX2l0ZXJhdGVDaGlsZHJlbih0b3ApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuYWRkKGNoaWxkKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBGaWx0ZXJzLmF0b20ocmVzdWx0KTtcbiAgICAgICAgICAgIGNhc2UgXCJmaWVsZFwiOlxuICAgICAgICAgICAgICAgIGNvbnN0IG5vcm1rZXkgPSBxdWVyeS52YWx1ZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpZWxkSW5kZXggPSB0aGlzLmZpZWxkcy5nZXQobm9ybWtleSk7XG4gICAgICAgICAgICAgICAgaWYgKGZpZWxkSW5kZXggPT0gbnVsbCkgcmV0dXJuIEZpbHRlcnMuTk9USElORztcblxuICAgICAgICAgICAgICAgIHJldHVybiBGaWx0ZXJzLmF0b20oZmllbGRJbmRleC5hbGwoKSk7XG4gICAgICAgICAgICBjYXNlIFwiZXF1YWwtdmFsdWVcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gRmlsdGVycy5sYXp5VW5pb24ocXVlcnkudmFsdWVzLCAodmFsdWUpID0+XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2ZpbHRlckZpZWxkcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5LmZpZWxkLFxuICAgICAgICAgICAgICAgICAgICAgICAgKGluZGV4KSA9PiBpbmRleC5lcXVhbHModmFsdWUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgKGZpZWxkKSA9PiBMaXRlcmFscy5jb21wYXJlKHZhbHVlLCBmaWVsZC52YWx1ZSkgPT0gMFxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBGaWx0ZXIgZG9jdW1lbnRzIGJ5IGZpZWxkIHZhbHVlcywgdXNpbmcgdGhlIGZhc3QgbG9va3VwIGlmIGl0IHJldHVybnMgYSByZXN1bHQgYW5kIG90aGVyd2lzZSBmaWx0ZXJpbmcgb3ZlciBldmVyeSBkb2N1bWVudCB1c2luZyB0aGUgc2xvdyBwcmVkaWNhdGUuICovXG4gICAgcHJpdmF0ZSBfZmlsdGVyRmllbGRzKFxuICAgICAgICBrZXk6IHN0cmluZyxcbiAgICAgICAgZmFzdDogKGluZGV4OiBGaWVsZEluZGV4KSA9PiBTZXQ8c3RyaW5nPiB8IHVuZGVmaW5lZCxcbiAgICAgICAgc2xvdzogKGZpZWxkOiBGaWVsZCkgPT4gYm9vbGVhblxuICAgICk6IEZpbHRlcjxzdHJpbmc+IHtcbiAgICAgICAgY29uc3Qgbm9ybWtleSA9IGtleS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuZmllbGRzLmdldChub3Jta2V5KTtcbiAgICAgICAgaWYgKGluZGV4ID09IG51bGwpIHJldHVybiBGaWx0ZXJzLk5PVEhJTkc7XG5cbiAgICAgICAgY29uc3QgZmFzdGxvb2t1cCA9IGZhc3QoaW5kZXgpO1xuICAgICAgICBpZiAoZmFzdGxvb2t1cCAhPSBudWxsKSByZXR1cm4gRmlsdGVycy5hdG9tKGZhc3Rsb29rdXApO1xuXG4gICAgICAgIC8vIENvbXB1dGUgYnkgaXRlcmF0aW5nIG92ZXIgZWFjaCBmaWVsZC5cbiAgICAgICAgY29uc3QgbWF0Y2hlcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgICAgICBmb3IgKGNvbnN0IG9iamVjdElkIG9mIGluZGV4LmFsbCgpKSB7XG4gICAgICAgICAgICBjb25zdCBvYmplY3QgPSB0aGlzLm9iamVjdHMuZ2V0KG9iamVjdElkKTtcbiAgICAgICAgICAgIGlmICghb2JqZWN0IHx8ICFvYmplY3QuJHR5cGVzLmNvbnRhaW5zKEZJRUxEQkVBUklOR19UWVBFKSkgY29udGludWU7XG5cbiAgICAgICAgICAgIGNvbnN0IGZpZWxkID0gKG9iamVjdCBhcyBhbnkgYXMgRmllbGRiZWFyaW5nKS5maWVsZChub3Jta2V5KTtcbiAgICAgICAgICAgIGlmICghZmllbGQpIGNvbnRpbnVlO1xuXG4gICAgICAgICAgICBpZiAoc2xvdyhmaWVsZCkpIG1hdGNoZXMuYWRkKG9iamVjdElkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBGaWx0ZXJzLmF0b20obWF0Y2hlcyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRG9lcyBCcmVhZHRoLWZpcnN0IFNlYXJjaCB0byBmaW5kIGFsbCBsaW5rZWQgZmlsZXMgd2l0aGluIGRpc3RhbmNlIDxkaXN0YW5jZT4uIFRoaXMgaW5jbHVkZXMgYWxsIHNvdXJjZSBub2RlcyxcbiAgICAgKiBzbyByZW1vdmUgdGhlbSBhZnRlcndhcmRzIGlmIHlvdSBkbyBub3Qgd2FudCB0aGVtLlxuICAgICAqL1xuICAgIHByaXZhdGUgX3RyYXZlcnNlTGlua2VkKFxuICAgICAgICBzb3VyY2VJZHM6IFNldDxzdHJpbmc+LFxuICAgICAgICBkaXN0YW5jZTogbnVtYmVyLFxuICAgICAgICBhZGphY2VudDogKGlkOiBzdHJpbmcpID0+IEl0ZXJhYmxlPHN0cmluZz5cbiAgICApOiBTZXQ8c3RyaW5nPiB7XG4gICAgICAgIGlmIChkaXN0YW5jZSA8IDApIHJldHVybiBuZXcgU2V0KCk7XG4gICAgICAgIGlmIChzb3VyY2VJZHMuc2l6ZSA9PSAwKSByZXR1cm4gbmV3IFNldCgpO1xuXG4gICAgICAgIGNvbnN0IHZpc2l0ZWQgPSBuZXcgU2V0PHN0cmluZz4oc291cmNlSWRzKTtcblxuICAgICAgICBjb25zdCBxdWV1ZSA9IG5ldyBGbGF0UXVldWU8c3RyaW5nPigpO1xuICAgICAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2Ygc291cmNlSWRzKSBxdWV1ZS5wdXNoKGVsZW1lbnQsIDApO1xuXG4gICAgICAgIHdoaWxlIChxdWV1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBkaXN0ID0gcXVldWUucGVla1ZhbHVlKCkhO1xuICAgICAgICAgICAgY29uc3QgZWxlbWVudCA9IHF1ZXVlLnBvcCgpITtcblxuICAgICAgICAgICAgZm9yIChjb25zdCBuZWlnaGJvciBvZiBhZGphY2VudChlbGVtZW50KSkge1xuICAgICAgICAgICAgICAgIGlmICh2aXNpdGVkLmhhcyhuZWlnaGJvcikpIGNvbnRpbnVlO1xuXG4gICAgICAgICAgICAgICAgdmlzaXRlZC5hZGQobmVpZ2hib3IpO1xuICAgICAgICAgICAgICAgIGlmIChkaXN0IDwgZGlzdGFuY2UpIHF1ZXVlLnB1c2gobmVpZ2hib3IsIGRpc3QgKyAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2aXNpdGVkO1xuICAgIH1cblxuICAgIC8qKiBJdGVyYXRlIGFsbCBsaW5rZWQgb2JqZWN0cyBmb3IgdGhlIGdpdmVuIG9iamVjdC4gKi9cbiAgICBwcml2YXRlICpfaXRlcmF0ZUFkamFjZW50TGlua2VkKGlkOiBzdHJpbmcsIGRpcmVjdGlvbjogXCJpbmNvbWluZ1wiIHwgXCJvdXRnb2luZ1wiIHwgXCJib3RoXCIpOiBHZW5lcmF0b3I8c3RyaW5nPiB7XG4gICAgICAgIGNvbnN0IG9iamVjdCA9IHRoaXMub2JqZWN0cy5nZXQoaWQpO1xuICAgICAgICBpZiAoIW9iamVjdCkgcmV0dXJuO1xuXG4gICAgICAgIGlmICgoZGlyZWN0aW9uID09PSBcImJvdGhcIiB8fCBkaXJlY3Rpb24gPT09IFwiaW5jb21pbmdcIikgJiYgXCIkbGlua1wiIGluIG9iamVjdCAmJiBvYmplY3RbXCIkbGlua1wiXSkge1xuICAgICAgICAgICAgY29uc3QgaW5jb21pbmcgPSB0aGlzLmxpbmtzLmdldCgob2JqZWN0LiRsaW5rIGFzIExpbmspLm9ic2lkaWFuTGluaygpKTtcbiAgICAgICAgICAgIGlmIChpbmNvbWluZykge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgaWQgb2YgaW5jb21pbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgeWllbGQgaWQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgKGRpcmVjdGlvbiA9PT0gXCJib3RoXCIgfHwgZGlyZWN0aW9uID09PSBcIm91dGdvaW5nXCIpICYmXG4gICAgICAgICAgICBvYmplY3QuJHR5cGVzLmNvbnRhaW5zKExJTktBQkxFX1RZUEUpICYmXG4gICAgICAgICAgICBpdGVyYWJsZUV4aXN0cyhvYmplY3QsIFwiJGxpbmtzXCIpXG4gICAgICAgICkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBsaW5rIG9mIG9iamVjdC4kbGlua3MgYXMgTGlua1tdKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzb2x2ZWQgPSB0aGlzLnJlc29sdmVMaW5rKGxpbmspO1xuICAgICAgICAgICAgICAgIGlmIChyZXNvbHZlZCkgeWllbGQgcmVzb2x2ZWQuJGlkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEl0ZXJhdG9yIHdoaWNoIHByb2R1Y2VzIGFsbCBwYXJlbnRzIG9mIHRoZSBnaXZlbiBvYmplY3QuICovXG4gICAgcHJpdmF0ZSAqX2l0ZXJhdGVQYXJlbnRzKGNoaWxkOiBzdHJpbmcpOiBHZW5lcmF0b3I8c3RyaW5nPiB7XG4gICAgICAgIGxldCBvYmplY3QgPSB0aGlzLm9iamVjdHMuZ2V0KGNoaWxkKTtcbiAgICAgICAgd2hpbGUgKG9iamVjdCAmJiBvYmplY3Q/LiRwYXJlbnQpIHtcbiAgICAgICAgICAgIHlpZWxkIG9iamVjdC4kcGFyZW50LiRpZDtcbiAgICAgICAgICAgIG9iamVjdCA9IG9iamVjdC4kcGFyZW50O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEl0ZXJhdGl2ZSB3aGljaCBwcm9kdWNlcyBhbGwgY2hpbGRyZW4gKHJlY3Vyc2l2ZWx5KSBvZiB0aGUgZ2l2ZW4gb2JqZWN0LiAqL1xuICAgIHByaXZhdGUgKl9pdGVyYXRlQ2hpbGRyZW4ocGFyZW50OiBzdHJpbmcpOiBHZW5lcmF0b3I8c3RyaW5nPiB7XG4gICAgICAgIGNvbnN0IGNoaWxkcmVuID0gdGhpcy5jaGlsZHJlbi5nZXQocGFyZW50KTtcbiAgICAgICAgaWYgKGNoaWxkcmVuICYmIGNoaWxkcmVuLnNpemUgPiAwKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBjaGlsZCBvZiBjaGlsZHJlbikge1xuICAgICAgICAgICAgICAgIHlpZWxkIGNoaWxkO1xuICAgICAgICAgICAgICAgIHlpZWxkKiB0aGlzLl9pdGVyYXRlQ2hpbGRyZW4oY2hpbGQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4vKiogQSBnZW5lcmFsIGZ1bmN0aW9uIGZvciBzdG9yaW5nIHN1Yi1vYmplY3RzIGluIGEgZ2l2ZW4gb2JqZWN0LiAqL1xuZXhwb3J0IHR5cGUgU3Vic3RvcmVyPFQgZXh0ZW5kcyBJbmRleGFibGU+ID0gKFxuICAgIG9iamVjdDogVCxcbiAgICBhZGQ6IDxVIGV4dGVuZHMgSW5kZXhhYmxlPihvYmplY3Q6IFUgfCBVW10sIHN1YmluZGV4PzogU3Vic3RvcmVyPFU+KSA9PiB2b2lkXG4pID0+IHZvaWQ7XG5cbi8qKiBUaGUgcmVzdWx0IG9mIHNlYXJjaGluZyBnaXZlbiBhbiBpbmRleCBxdWVyeS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VhcmNoUmVzdWx0PE8+IHtcbiAgICAvKiogVGhlIHF1ZXJ5IHVzZWQgdG8gc2VhcmNoLiAqL1xuICAgIHF1ZXJ5OiBJbmRleFF1ZXJ5O1xuICAgIC8qKiBBbGwgb2YgdGhlIHJldHVybmVkIHJlc3VsdHMuICovXG4gICAgcmVzdWx0czogT1tdO1xuICAgIC8qKiBUaGUgYW1vdW50IG9mIHRpbWUgaW4gc2Vjb25kcyB0aGF0IHRoZSBzZWFyY2ggdG9vay4gKi9cbiAgICBkdXJhdGlvbjogbnVtYmVyO1xuICAgIC8qKiBUaGUgbWF4aW11bSByZXZpc2lvbiBvZiBhbnkgZG9jdW1lbnQgaW4gdGhlIHJlc3VsdCwgd2hpY2ggaXMgdXNlZnVsIGZvciBkaWZmaW5nLiAqL1xuICAgIHJldmlzaW9uOiBudW1iZXI7XG59XG5cbi8qKiBFeHRyYSBzZXR0aW5ncyB0aGF0IGNhbiBiZSBwcm92aWRlZCB0byBhIHNlYXJjaC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VhcmNoU2V0dGluZ3Mge1xuICAgIC8qKiBUaGUgcGF0aCB0byBydW4gZnJvbSB3aGVuIHJlc29sdmluZyBsaW5rcyBhbmQgYHRoaXNgIHNlY3Rpb25zLiAqL1xuICAgIHNvdXJjZVBhdGg/OiBzdHJpbmc7XG59XG5cbi8qKiBUeXBlIGd1YXJkIHdoaWNoIGNoZWNrcyBpZiBvYmplY3Rba2V5XSBleGlzdHMgYW5kIGlzIGFuIGl0ZXJhYmxlLiAqL1xuZnVuY3Rpb24gaXRlcmFibGVFeGlzdHM8VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4sIEsgZXh0ZW5kcyBzdHJpbmc+KFxuICAgIG9iamVjdDogVCxcbiAgICBrZXk6IEtcbik6IG9iamVjdCBpcyBUICYgUmVjb3JkPEssIEl0ZXJhYmxlPGFueT4+IHtcbiAgICByZXR1cm4ga2V5IGluIG9iamVjdCAmJiBvYmplY3Rba2V5XSAhPT0gdW5kZWZpbmVkICYmIFN5bWJvbC5pdGVyYXRvciBpbiBvYmplY3Rba2V5XTtcbn1cbiIsICJpbXBvcnQgbG9jYWxmb3JhZ2UgZnJvbSBcImxvY2FsZm9yYWdlXCI7XG5cbi8qKiBBIHBpZWNlIG9mIGRhdGEgdGhhdCBoYXMgYmVlbiBjYWNoZWQgZm9yIGEgc3BlY2lmaWMgdmVyc2lvbiBhbmQgdGltZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2FjaGVkPFQ+IHtcbiAgICAvKiogVGhlIHZlcnNpb24gb2YgdGhlIHBsdWdpbiB0aGF0IHRoZSBkYXRhIHdhcyB3cml0dGVuIHRvIGNhY2hlIHdpdGguICovXG4gICAgdmVyc2lvbjogc3RyaW5nO1xuICAgIC8qKiBUaGUgVU5JWCBlcG9jaCB0aW1lIGluIG1pbGxpc2Vjb25kcyB0aGF0IHRoZSBkYXRhIHdhcyB3cml0dGVuIHRvIGNhY2hlLiAqL1xuICAgIHRpbWU6IG51bWJlcjtcbiAgICAvKiogVGhlIGRhdGEgdGhhdCB3YXMgY2FjaGVkLiAqL1xuICAgIGRhdGE6IFQ7XG59XG5cbi8qKiBTaW1wbGVyIHdyYXBwZXIgZm9yIGEgZmlsZS1iYWNrZWQgY2FjaGUgZm9yIGFyYml0cmFyeSBtZXRhZGF0YS4gKi9cbmV4cG9ydCBjbGFzcyBMb2NhbFN0b3JhZ2VDYWNoZSB7XG4gICAgcHVibGljIHBlcnNpc3RlcjogTG9jYWxGb3JhZ2U7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IocHVibGljIGFwcElkOiBzdHJpbmcsIHB1YmxpYyB2ZXJzaW9uOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5wZXJzaXN0ZXIgPSBsb2NhbGZvcmFnZS5jcmVhdGVJbnN0YW5jZSh7XG4gICAgICAgICAgICBuYW1lOiBcImRhdGFjb3JlL2NhY2hlL1wiICsgYXBwSWQsXG4gICAgICAgICAgICBkcml2ZXI6IFtsb2NhbGZvcmFnZS5JTkRFWEVEREJdLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiQ2FjaGUgbWV0YWRhdGEgYWJvdXQgZmlsZXMgYW5kIHNlY3Rpb25zIGluIHRoZSBkYXRhY29yZSBpbmRleC5cIixcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIERyb3AgdGhlIGVudGlyZSBjYWNoZSBpbnN0YW5jZSBhbmQgcmUtY3JlYXRlIGEgbmV3IGZyZXNoIGluc3RhbmNlLiAqL1xuICAgIHB1YmxpYyBhc3luYyByZWNyZWF0ZSgpIHtcbiAgICAgICAgYXdhaXQgbG9jYWxmb3JhZ2UuZHJvcEluc3RhbmNlKHsgbmFtZTogXCJkYXRhY29yZS9jYWNoZS9cIiArIHRoaXMuYXBwSWQgfSk7XG5cbiAgICAgICAgdGhpcy5wZXJzaXN0ZXIgPSBsb2NhbGZvcmFnZS5jcmVhdGVJbnN0YW5jZSh7XG4gICAgICAgICAgICBuYW1lOiBcImRhdGFjb3JlL2NhY2hlL1wiICsgdGhpcy5hcHBJZCxcbiAgICAgICAgICAgIGRyaXZlcjogW2xvY2FsZm9yYWdlLklOREVYRUREQl0sXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJDYWNoZSBtZXRhZGF0YSBhYm91dCBmaWxlcyBhbmQgc2VjdGlvbnMgaW4gdGhlIGRhdGFjb3JlIGluZGV4LlwiLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogTG9hZCBmaWxlIG1ldGFkYXRhIGJ5IHBhdGguICovXG4gICAgcHVibGljIGFzeW5jIGxvYWRGaWxlKHBhdGg6IHN0cmluZyk6IFByb21pc2U8Q2FjaGVkPFBhcnRpYWw8YW55Pj4gfCBudWxsIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnBlcnNpc3Rlci5nZXRJdGVtKHRoaXMuZmlsZUtleShwYXRoKSkudGhlbigocmF3KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcmF3IGFzIGFueSBhcyBDYWNoZWQ8UGFydGlhbDxhbnk+PjtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIFN0b3JlIGZpbGUgbWV0YWRhdGEgYnkgcGF0aC4gKi9cbiAgICBwdWJsaWMgYXN5bmMgc3RvcmVGaWxlKHBhdGg6IHN0cmluZywgZGF0YTogUGFydGlhbDxhbnk+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMucGVyc2lzdGVyLnNldEl0ZW0odGhpcy5maWxlS2V5KHBhdGgpLCB7XG4gICAgICAgICAgICB2ZXJzaW9uOiB0aGlzLnZlcnNpb24sXG4gICAgICAgICAgICB0aW1lOiBEYXRlLm5vdygpLFxuICAgICAgICAgICAgZGF0YTogZGF0YSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIERyb3Agb2xkIGZpbGUga2V5cyB0aGF0IG5vIGxvbmdlciBleGlzdC4gKi9cbiAgICBwdWJsaWMgYXN5bmMgc3luY2hyb25pemUoZXhpc3Rpbmc6IHN0cmluZ1tdIHwgU2V0PHN0cmluZz4pOiBQcm9taXNlPFNldDxzdHJpbmc+PiB7XG4gICAgICAgIGxldCBrZXlzID0gbmV3IFNldChhd2FpdCB0aGlzLmFsbEZpbGVzKCkpO1xuICAgICAgICBmb3IgKGxldCBleGlzdCBvZiBleGlzdGluZykga2V5cy5kZWxldGUoZXhpc3QpO1xuXG4gICAgICAgIC8vIEFueSBrZXlzIHJlbWFpbmluZyBhZnRlciBkZWxldGluZyBleGlzdGluZyBrZXlzIGFyZSBub24tZXhpc3RlbnQga2V5cyB0aGF0IHNob3VsZCBiZSBjbGVhcmVkIGZyb20gY2FjaGUuXG4gICAgICAgIGZvciAobGV0IGtleSBvZiBrZXlzKSBhd2FpdCB0aGlzLnBlcnNpc3Rlci5yZW1vdmVJdGVtKHRoaXMuZmlsZUtleShrZXkpKTtcblxuICAgICAgICByZXR1cm4ga2V5cztcbiAgICB9XG5cbiAgICAvKiogT2J0YWluIGEgbGlzdCBvZiBhbGwgbWV0YWRhdGEga2V5cy4gKi9cbiAgICBwdWJsaWMgYXN5bmMgYWxsS2V5cygpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnBlcnNpc3Rlci5rZXlzKCk7XG4gICAgfVxuXG4gICAgLyoqIE9idGFpbiBhIGxpc3Qgb2YgYWxsIHBlcnNpc3RlZCBmaWxlcy4gKi9cbiAgICBwdWJsaWMgYXN5bmMgYWxsRmlsZXMoKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgICAgICBsZXQga2V5cyA9IGF3YWl0IHRoaXMuYWxsS2V5cygpO1xuICAgICAgICByZXR1cm4ga2V5cy5maWx0ZXIoKGspID0+IGsuc3RhcnRzV2l0aChcImZpbGU6XCIpKS5tYXAoKGspID0+IGsuc3Vic3RyaW5nKDUpKTtcbiAgICB9XG5cbiAgICAvKiogR2V0IGEgdW5pcXVlIGtleSBmb3IgYSBnaXZlbiBmaWxlIHBhdGguICovXG4gICAgcHVibGljIGZpbGVLZXkocGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIFwiZmlsZTpcIiArIHBhdGg7XG4gICAgfVxufVxuIiwgIlxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaW5saW5lV29ya2VyKHNjcmlwdFRleHQpIHtcbiAgbGV0IGJsb2IgPSBuZXcgQmxvYihbc2NyaXB0VGV4dF0sIHt0eXBlOiAndGV4dC9qYXZhc2NyaXB0J30pO1xuICBsZXQgdXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgbGV0IHdvcmtlciA9IG5ldyBXb3JrZXIodXJsLCB7XCJuYW1lXCI6XCJEYXRhY29yZSBJbmRleGVyXCJ9KTtcbiAgVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpO1xuICByZXR1cm4gd29ya2VyO1xufVxuIiwgImltcG9ydCBpbmxpbmVXb3JrZXIgZnJvbSAnX19pbmxpbmUtd29ya2VyJ1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gV29ya2VyKCkge1xuICByZXR1cm4gaW5saW5lV29ya2VyKFwidmFyIGNsPU9iamVjdC5jcmVhdGU7dmFyIEpzPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxmbD1PYmplY3QuZGVmaW5lUHJvcGVydGllcyxkbD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLGhsPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzLG1sPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzLHFyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMscGw9T2JqZWN0LmdldFByb3RvdHlwZU9mLHpzPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksTW89T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTt2YXIgSHM9KG4sZSk9PihlPVN5bWJvbFtuXSk/ZTpTeW1ib2wuZm9yKFxcXCJTeW1ib2wuXFxcIituKSxEbD1uPT57dGhyb3cgVHlwZUVycm9yKG4pfTt2YXIgQW89KG4sZSx0KT0+ZSBpbiBuP0pzKG4sZSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6dH0pOm5bZV09dCxSPShuLGUpPT57Zm9yKHZhciB0IGluIGV8fChlPXt9KSl6cy5jYWxsKGUsdCkmJkFvKG4sdCxlW3RdKTtpZihxcilmb3IodmFyIHQgb2YgcXIoZSkpTW8uY2FsbChlLHQpJiZBbyhuLHQsZVt0XSk7cmV0dXJuIG59LHllPShuLGUpPT5mbChuLGhsKGUpKTt2YXIgWXM9KG4sZSk9Pnt2YXIgdD17fTtmb3IodmFyIHIgaW4gbil6cy5jYWxsKG4scikmJmUuaW5kZXhPZihyKTwwJiYodFtyXT1uW3JdKTtpZihuIT1udWxsJiZxcilmb3IodmFyIHIgb2YgcXIobikpZS5pbmRleE9mKHIpPDAmJk1vLmNhbGwobixyKSYmKHRbcl09bltyXSk7cmV0dXJuIHR9O3ZhciBfbz0obixlKT0+KCk9PihlfHxuKChlPXtleHBvcnRzOnt9fSkuZXhwb3J0cyxlKSxlLmV4cG9ydHMpO3ZhciB5bD0obixlLHQscik9PntpZihlJiZ0eXBlb2YgZT09XFxcIm9iamVjdFxcXCJ8fHR5cGVvZiBlPT1cXFwiZnVuY3Rpb25cXFwiKWZvcihsZXQgcyBvZiBtbChlKSkhenMuY2FsbChuLHMpJiZzIT09dCYmSnMobixzLHtnZXQ6KCk9PmVbc10sZW51bWVyYWJsZTohKHI9ZGwoZSxzKSl8fHIuZW51bWVyYWJsZX0pO3JldHVybiBufTt2YXIgVnI9KG4sZSx0KT0+KHQ9biE9bnVsbD9jbChwbChuKSk6e30seWwoZXx8IW58fCFuLl9fZXNNb2R1bGU/SnModCxcXFwiZGVmYXVsdFxcXCIse3ZhbHVlOm4sZW51bWVyYWJsZTohMH0pOnQsbikpO3ZhciBnbD1mdW5jdGlvbihuLGUpe3RoaXNbMF09bix0aGlzWzFdPWV9O3ZhciBTPW49Pnt2YXIgZT1uW0hzKFxcXCJhc3luY0l0ZXJhdG9yXFxcIildLHQ9ITEscixzPXt9O3JldHVybiBlPT1udWxsPyhlPW5bSHMoXFxcIml0ZXJhdG9yXFxcIildKCkscj1pPT5zW2ldPW89PmVbaV0obykpOihlPWUuY2FsbChuKSxyPWk9PnNbaV09bz0+e2lmKHQpe2lmKHQ9ITEsaT09PVxcXCJ0aHJvd1xcXCIpdGhyb3cgbztyZXR1cm4gb31yZXR1cm4gdD0hMCx7ZG9uZTohMSx2YWx1ZTpuZXcgZ2wobmV3IFByb21pc2UoYT0+e3ZhciB1PWVbaV0obyk7dSBpbnN0YW5jZW9mIE9iamVjdHx8RGwoXFxcIk9iamVjdCBleHBlY3RlZFxcXCIpLGEodSl9KSwxKX19KSxzW0hzKFxcXCJpdGVyYXRvclxcXCIpXT0oKT0+cyxyKFxcXCJuZXh0XFxcIiksXFxcInRocm93XFxcImluIGU/cihcXFwidGhyb3dcXFwiKTpzLnRocm93PWk9Pnt0aHJvdyBpfSxcXFwicmV0dXJuXFxcImluIGUmJnIoXFxcInJldHVyblxcXCIpLHN9O3ZhciBucz1fbygobXIsQWkpPT57KGZ1bmN0aW9uKG4sZSl7dHlwZW9mIG1yPT1cXFwib2JqZWN0XFxcIiYmdHlwZW9mIEFpPT1cXFwib2JqZWN0XFxcIj9BaS5leHBvcnRzPWUoKTp0eXBlb2YgZGVmaW5lPT1cXFwiZnVuY3Rpb25cXFwiJiZkZWZpbmUuYW1kP2RlZmluZShbXSxlKTp0eXBlb2YgbXI9PVxcXCJvYmplY3RcXFwiP21yLlBhcnNpbW1vbj1lKCk6bi5QYXJzaW1tb249ZSgpfSkodHlwZW9mIHNlbGYhPVxcXCJ1bmRlZmluZWRcXFwiP3NlbGY6bXIsZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24obil7dmFyIGU9e307ZnVuY3Rpb24gdChyKXtpZihlW3JdKXJldHVybiBlW3JdLmV4cG9ydHM7dmFyIHM9ZVtyXT17aTpyLGw6ITEsZXhwb3J0czp7fX07cmV0dXJuIG5bcl0uY2FsbChzLmV4cG9ydHMscyxzLmV4cG9ydHMsdCkscy5sPSEwLHMuZXhwb3J0c31yZXR1cm4gdC5tPW4sdC5jPWUsdC5kPWZ1bmN0aW9uKHIscyxpKXt0Lm8ocixzKXx8T2JqZWN0LmRlZmluZVByb3BlcnR5KHIscyx7Y29uZmlndXJhYmxlOiExLGVudW1lcmFibGU6ITAsZ2V0Oml9KX0sdC5yPWZ1bmN0aW9uKHIpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShyLFxcXCJfX2VzTW9kdWxlXFxcIix7dmFsdWU6ITB9KX0sdC5uPWZ1bmN0aW9uKHIpe3ZhciBzPXImJnIuX19lc01vZHVsZT9mdW5jdGlvbigpe3JldHVybiByLmRlZmF1bHR9OmZ1bmN0aW9uKCl7cmV0dXJuIHJ9O3JldHVybiB0LmQocyxcXFwiYVxcXCIscyksc30sdC5vPWZ1bmN0aW9uKHIscyl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChyLHMpfSx0LnA9XFxcIlxcXCIsdCh0LnM9MCl9KFtmdW5jdGlvbihuLGUsdCl7XFxcInVzZSBzdHJpY3RcXFwiO2Z1bmN0aW9uIHIoYyl7aWYoISh0aGlzIGluc3RhbmNlb2YgcikpcmV0dXJuIG5ldyByKGMpO3RoaXMuXz1jfXZhciBzPXIucHJvdG90eXBlO2Z1bmN0aW9uIGkoYyxwKXtmb3IodmFyIEU9MDtFPGM7RSsrKXAoRSl9ZnVuY3Rpb24gbyhjLHAsRSl7cmV0dXJuIGZ1bmN0aW9uKGssTCl7aShMLmxlbmd0aCxmdW5jdGlvbihBKXtrKExbQV0sQSxMKX0pfShmdW5jdGlvbihrLEwsQSl7cD1jKHAsayxMLEEpfSxFKSxwfWZ1bmN0aW9uIGEoYyxwKXtyZXR1cm4gbyhmdW5jdGlvbihFLGssTCxBKXtyZXR1cm4gRS5jb25jYXQoW2MoayxMLEEpXSl9LFtdLHApfWZ1bmN0aW9uIHUoYyxwKXt2YXIgRT17djowLGJ1ZjpwfTtyZXR1cm4gaShjLGZ1bmN0aW9uKCl7dmFyIGs7RT17djpFLnY8PDF8KGs9RS5idWYsa1swXT4+NyksYnVmOmZ1bmN0aW9uKEwpe3ZhciBBPW8oZnVuY3Rpb24oTSxVLHRlLEVlKXtyZXR1cm4gTS5jb25jYXQodGU9PT1FZS5sZW5ndGgtMT9CdWZmZXIuZnJvbShbVSwwXSkucmVhZFVJbnQxNkJFKDApOkVlLnJlYWRVSW50MTZCRSh0ZSkpfSxbXSxMKTtyZXR1cm4gQnVmZmVyLmZyb20oYShmdW5jdGlvbihNKXtyZXR1cm4oTTw8MSY2NTUzNSk+Pjh9LEEpKX0oRS5idWYpfX0pLEV9ZnVuY3Rpb24gbCgpe3JldHVybiB0eXBlb2YgQnVmZmVyIT1cXFwidW5kZWZpbmVkXFxcIn1mdW5jdGlvbiBmKCl7aWYoIWwoKSl0aHJvdyBuZXcgRXJyb3IoXFxcIkJ1ZmZlciBnbG9iYWwgZG9lcyBub3QgZXhpc3Q7IHBsZWFzZSB1c2Ugd2VicGFjayBpZiB5b3UgbmVlZCB0byBwYXJzZSBCdWZmZXJzIGluIHRoZSBicm93c2VyLlxcXCIpfWZ1bmN0aW9uIGQoYyl7ZigpO3ZhciBwPW8oZnVuY3Rpb24oQSxNKXtyZXR1cm4gQStNfSwwLGMpO2lmKHAlOCE9MCl0aHJvdyBuZXcgRXJyb3IoXFxcIlRoZSBiaXRzIFtcXFwiK2Muam9pbihcXFwiLCBcXFwiKStcXFwiXSBhZGQgdXAgdG8gXFxcIitwK1xcXCIgd2hpY2ggaXMgbm90IGFuIGV2ZW4gbnVtYmVyIG9mIGJ5dGVzOyB0aGUgdG90YWwgc2hvdWxkIGJlIGRpdmlzaWJsZSBieSA4XFxcIik7dmFyIEUsaz1wLzgsTD0oRT1mdW5jdGlvbihBKXtyZXR1cm4gQT40OH0sbyhmdW5jdGlvbihBLE0pe3JldHVybiBBfHwoRShNKT9NOkEpfSxudWxsLGMpKTtpZihMKXRocm93IG5ldyBFcnJvcihMK1xcXCIgYml0IHJhbmdlIHJlcXVlc3RlZCBleGNlZWRzIDQ4IGJpdCAoNiBieXRlKSBOdW1iZXIgbWF4LlxcXCIpO3JldHVybiBuZXcgcihmdW5jdGlvbihBLE0pe3ZhciBVPWsrTTtyZXR1cm4gVT5BLmxlbmd0aD92KE0say50b1N0cmluZygpK1xcXCIgYnl0ZXNcXFwiKTp3KFUsbyhmdW5jdGlvbih0ZSxFZSl7dmFyIG1lPXUoRWUsdGUuYnVmKTtyZXR1cm57Y29sbDp0ZS5jb2xsLmNvbmNhdChtZS52KSxidWY6bWUuYnVmfX0se2NvbGw6W10sYnVmOkEuc2xpY2UoTSxVKX0sYykuY29sbCl9KX1mdW5jdGlvbiBtKGMscCl7cmV0dXJuIG5ldyByKGZ1bmN0aW9uKEUsayl7cmV0dXJuIGYoKSxrK3A+RS5sZW5ndGg/dihrLHArXFxcIiBieXRlcyBmb3IgXFxcIitjKTp3KGsrcCxFLnNsaWNlKGssaytwKSl9KX1mdW5jdGlvbiBoKGMscCl7aWYodHlwZW9mKEU9cCkhPVxcXCJudW1iZXJcXFwifHxNYXRoLmZsb29yKEUpIT09RXx8cDwwfHxwPjYpdGhyb3cgbmV3IEVycm9yKGMrXFxcIiByZXF1aXJlcyBpbnRlZ2VyIGxlbmd0aCBpbiByYW5nZSBbMCwgNl0uXFxcIik7dmFyIEV9ZnVuY3Rpb24gYihjKXtyZXR1cm4gaChcXFwidWludEJFXFxcIixjKSxtKFxcXCJ1aW50QkUoXFxcIitjK1xcXCIpXFxcIixjKS5tYXAoZnVuY3Rpb24ocCl7cmV0dXJuIHAucmVhZFVJbnRCRSgwLGMpfSl9ZnVuY3Rpb24gZyhjKXtyZXR1cm4gaChcXFwidWludExFXFxcIixjKSxtKFxcXCJ1aW50TEUoXFxcIitjK1xcXCIpXFxcIixjKS5tYXAoZnVuY3Rpb24ocCl7cmV0dXJuIHAucmVhZFVJbnRMRSgwLGMpfSl9ZnVuY3Rpb24gRChjKXtyZXR1cm4gaChcXFwiaW50QkVcXFwiLGMpLG0oXFxcImludEJFKFxcXCIrYytcXFwiKVxcXCIsYykubWFwKGZ1bmN0aW9uKHApe3JldHVybiBwLnJlYWRJbnRCRSgwLGMpfSl9ZnVuY3Rpb24gVChjKXtyZXR1cm4gaChcXFwiaW50TEVcXFwiLGMpLG0oXFxcImludExFKFxcXCIrYytcXFwiKVxcXCIsYykubWFwKGZ1bmN0aW9uKHApe3JldHVybiBwLnJlYWRJbnRMRSgwLGMpfSl9ZnVuY3Rpb24gSShjKXtyZXR1cm4gYyBpbnN0YW5jZW9mIHJ9ZnVuY3Rpb24gTihjKXtyZXR1cm57fS50b1N0cmluZy5jYWxsKGMpPT09XFxcIltvYmplY3QgQXJyYXldXFxcIn1mdW5jdGlvbiB5KGMpe3JldHVybiBsKCkmJkJ1ZmZlci5pc0J1ZmZlcihjKX1mdW5jdGlvbiB3KGMscCl7cmV0dXJue3N0YXR1czohMCxpbmRleDpjLHZhbHVlOnAsZnVydGhlc3Q6LTEsZXhwZWN0ZWQ6W119fWZ1bmN0aW9uIHYoYyxwKXtyZXR1cm4gTihwKXx8KHA9W3BdKSx7c3RhdHVzOiExLGluZGV4Oi0xLHZhbHVlOm51bGwsZnVydGhlc3Q6YyxleHBlY3RlZDpwfX1mdW5jdGlvbiB4KGMscCl7aWYoIXB8fGMuZnVydGhlc3Q+cC5mdXJ0aGVzdClyZXR1cm4gYzt2YXIgRT1jLmZ1cnRoZXN0PT09cC5mdXJ0aGVzdD9mdW5jdGlvbihrLEwpe2lmKGZ1bmN0aW9uKCl7aWYoci5fc3VwcG9ydHNTZXQhPT12b2lkIDApcmV0dXJuIHIuX3N1cHBvcnRzU2V0O3ZhciBodD10eXBlb2YgU2V0IT1cXFwidW5kZWZpbmVkXFxcIjtyZXR1cm4gci5fc3VwcG9ydHNTZXQ9aHQsaHR9KCkmJkFycmF5LmZyb20pe2Zvcih2YXIgQT1uZXcgU2V0KGspLE09MDtNPEwubGVuZ3RoO00rKylBLmFkZChMW01dKTt2YXIgVT1BcnJheS5mcm9tKEEpO3JldHVybiBVLnNvcnQoKSxVfWZvcih2YXIgdGU9e30sRWU9MDtFZTxrLmxlbmd0aDtFZSsrKXRlW2tbRWVdXT0hMDtmb3IodmFyIG1lPTA7bWU8TC5sZW5ndGg7bWUrKyl0ZVtMW21lXV09ITA7dmFyIGR0PVtdO2Zvcih2YXIgdmUgaW4gdGUpKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRlLHZlKSYmZHQucHVzaCh2ZSk7cmV0dXJuIGR0LnNvcnQoKSxkdH0oYy5leHBlY3RlZCxwLmV4cGVjdGVkKTpwLmV4cGVjdGVkO3JldHVybntzdGF0dXM6Yy5zdGF0dXMsaW5kZXg6Yy5pbmRleCx2YWx1ZTpjLnZhbHVlLGZ1cnRoZXN0OnAuZnVydGhlc3QsZXhwZWN0ZWQ6RX19dmFyIEM9e307ZnVuY3Rpb24gVihjLHApe2lmKHkoYykpcmV0dXJue29mZnNldDpwLGxpbmU6LTEsY29sdW1uOi0xfTtjIGluIEN8fChDW2NdPXt9KTtmb3IodmFyIEU9Q1tjXSxrPTAsTD0wLEE9MCxNPXA7TT49MDspe2lmKE0gaW4gRSl7az1FW01dLmxpbmUsQT09PTAmJihBPUVbTV0ubGluZVN0YXJ0KTticmVha30oYy5jaGFyQXQoTSk9PT1gXFxuYHx8Yy5jaGFyQXQoTSk9PT1cXFwiXFxcXHJcXFwiJiZjLmNoYXJBdChNKzEpIT09YFxcbmApJiYoTCsrLEE9PT0wJiYoQT1NKzEpKSxNLS19dmFyIFU9aytMLHRlPXAtQTtyZXR1cm4gRVtwXT17bGluZTpVLGxpbmVTdGFydDpBfSx7b2Zmc2V0OnAsbGluZTpVKzEsY29sdW1uOnRlKzF9fWZ1bmN0aW9uIGooYyl7aWYoIUkoYykpdGhyb3cgbmV3IEVycm9yKFxcXCJub3QgYSBwYXJzZXI6IFxcXCIrYyl9ZnVuY3Rpb24gWShjLHApe3JldHVybiB0eXBlb2YgYz09XFxcInN0cmluZ1xcXCI/Yy5jaGFyQXQocCk6Y1twXX1mdW5jdGlvbiBlZShjKXtpZih0eXBlb2YgYyE9XFxcIm51bWJlclxcXCIpdGhyb3cgbmV3IEVycm9yKFxcXCJub3QgYSBudW1iZXI6IFxcXCIrYyl9ZnVuY3Rpb24gYWUoYyl7aWYodHlwZW9mIGMhPVxcXCJmdW5jdGlvblxcXCIpdGhyb3cgbmV3IEVycm9yKFxcXCJub3QgYSBmdW5jdGlvbjogXFxcIitjKX1mdW5jdGlvbiBPKGMpe2lmKHR5cGVvZiBjIT1cXFwic3RyaW5nXFxcIil0aHJvdyBuZXcgRXJyb3IoXFxcIm5vdCBhIHN0cmluZzogXFxcIitjKX12YXIgJD0yLFE9Myx1ZT04LERlPTUqdWUsUmU9NCp1ZSxRdD1cXFwiICBcXFwiO2Z1bmN0aW9uIE10KGMscCl7cmV0dXJuIG5ldyBBcnJheShwKzEpLmpvaW4oYyl9ZnVuY3Rpb24gX3QoYyxwLEUpe3ZhciBrPXAtYy5sZW5ndGg7cmV0dXJuIGs8PTA/YzpNdChFLGspK2N9ZnVuY3Rpb24gQWUoYyxwLEUsayl7cmV0dXJue2Zyb206Yy1wPjA/Yy1wOjAsdG86YytFPms/azpjK0V9fWZ1bmN0aW9uIEJ0KGMscCl7dmFyIEUsayxMLEEsTSxVPXAuaW5kZXgsdGU9VS5vZmZzZXQsRWU9MTtpZih0ZT09PWMubGVuZ3RoKXJldHVyblxcXCJHb3QgdGhlIGVuZCBvZiB0aGUgaW5wdXRcXFwiO2lmKHkoYykpe3ZhciBtZT10ZS10ZSV1ZSxkdD10ZS1tZSx2ZT1BZShtZSxEZSxSZSt1ZSxjLmxlbmd0aCksaHQ9YShmdW5jdGlvbihsZSl7cmV0dXJuIGEoZnVuY3Rpb24oZW4pe3JldHVybiBfdChlbi50b1N0cmluZygxNiksMixcXFwiMFxcXCIpfSxsZSl9LGZ1bmN0aW9uKGxlLGVuKXt2YXIgdG49bGUubGVuZ3RoLFJ0PVtdLG5uPTA7aWYodG48PWVuKXJldHVybltsZS5zbGljZSgpXTtmb3IodmFyIHJuPTA7cm48dG47cm4rKylSdFtubl18fFJ0LnB1c2goW10pLFJ0W25uXS5wdXNoKGxlW3JuXSksKHJuKzEpJWVuPT0wJiZubisrO3JldHVybiBSdH0oYy5zbGljZSh2ZS5mcm9tLHZlLnRvKS50b0pTT04oKS5kYXRhLHVlKSk7QT1mdW5jdGlvbihsZSl7cmV0dXJuIGxlLmZyb209PT0wJiZsZS50bz09PTE/e2Zyb206bGUuZnJvbSx0bzpsZS50b306e2Zyb206bGUuZnJvbS91ZSx0bzpNYXRoLmZsb29yKGxlLnRvL3VlKX19KHZlKSxrPW1lL3VlLEU9MypkdCxkdD49NCYmKEUrPTEpLEVlPTIsTD1hKGZ1bmN0aW9uKGxlKXtyZXR1cm4gbGUubGVuZ3RoPD00P2xlLmpvaW4oXFxcIiBcXFwiKTpsZS5zbGljZSgwLDQpLmpvaW4oXFxcIiBcXFwiKStcXFwiICBcXFwiK2xlLnNsaWNlKDQpLmpvaW4oXFxcIiBcXFwiKX0saHQpLChNPSg4KihBLnRvPjA/QS50by0xOkEudG8pKS50b1N0cmluZygxNikubGVuZ3RoKTwyJiYoTT0yKX1lbHNle3ZhciBYdD1jLnNwbGl0KC9cXFxcclxcXFxufFtcXFxcblxcXFxyXFxcXHUyMDI4XFxcXHUyMDI5XS8pO0U9VS5jb2x1bW4tMSxrPVUubGluZS0xLEE9QWUoaywkLFEsWHQubGVuZ3RoKSxMPVh0LnNsaWNlKEEuZnJvbSxBLnRvKSxNPUEudG8udG9TdHJpbmcoKS5sZW5ndGh9dmFyIGxsPWstQS5mcm9tO3JldHVybiB5KGMpJiYoTT0oOCooQS50bz4wP0EudG8tMTpBLnRvKSkudG9TdHJpbmcoMTYpLmxlbmd0aCk8MiYmKE09MiksbyhmdW5jdGlvbihsZSxlbix0bil7dmFyIFJ0LG5uPXRuPT09bGwscm49bm4/XFxcIj4gXFxcIjpRdDtyZXR1cm4gUnQ9eShjKT9fdCgoOCooQS5mcm9tK3RuKSkudG9TdHJpbmcoMTYpLE0sXFxcIjBcXFwiKTpfdCgoQS5mcm9tK3RuKzEpLnRvU3RyaW5nKCksTSxcXFwiIFxcXCIpLFtdLmNvbmNhdChsZSxbcm4rUnQrXFxcIiB8IFxcXCIrZW5dLG5uP1tRdCtNdChcXFwiIFxcXCIsTSkrXFxcIiB8IFxcXCIrX3QoXFxcIlxcXCIsRSxcXFwiIFxcXCIpK010KFxcXCJeXFxcIixFZSldOltdKX0sW10sTCkuam9pbihgXFxuYCl9ZnVuY3Rpb24gU28oYyxwKXtyZXR1cm5bYFxcbmAsXFxcIi0tIFBBUlNJTkcgRkFJTEVEIFxcXCIrTXQoXFxcIi1cXFwiLDUwKSxgXFxuXFxuYCxCdChjLHApLGBcXG5cXG5gLChFPXAuZXhwZWN0ZWQsRS5sZW5ndGg9PT0xP2BFeHBlY3RlZDpcXG5cXG5gK0VbMF06YEV4cGVjdGVkIG9uZSBvZiB0aGUgZm9sbG93aW5nOiBcXG5cXG5gK0Uuam9pbihcXFwiLCBcXFwiKSksYFxcbmBdLmpvaW4oXFxcIlxcXCIpO3ZhciBFfWZ1bmN0aW9uIGtvKGMpe3JldHVybiBjLmZsYWdzIT09dm9pZCAwP2MuZmxhZ3M6W2MuZ2xvYmFsP1xcXCJnXFxcIjpcXFwiXFxcIixjLmlnbm9yZUNhc2U/XFxcImlcXFwiOlxcXCJcXFwiLGMubXVsdGlsaW5lP1xcXCJtXFxcIjpcXFwiXFxcIixjLnVuaWNvZGU/XFxcInVcXFwiOlxcXCJcXFwiLGMuc3RpY2t5P1xcXCJ5XFxcIjpcXFwiXFxcIl0uam9pbihcXFwiXFxcIil9ZnVuY3Rpb24gQnIoKXtmb3IodmFyIGM9W10uc2xpY2UuY2FsbChhcmd1bWVudHMpLHA9Yy5sZW5ndGgsRT0wO0U8cDtFKz0xKWooY1tFXSk7cmV0dXJuIHIoZnVuY3Rpb24oayxMKXtmb3IodmFyIEEsTT1uZXcgQXJyYXkocCksVT0wO1U8cDtVKz0xKXtpZighKEE9eChjW1VdLl8oayxMKSxBKSkuc3RhdHVzKXJldHVybiBBO01bVV09QS52YWx1ZSxMPUEuaW5kZXh9cmV0dXJuIHgodyhMLE0pLEEpfSl9ZnVuY3Rpb24gUHQoKXt2YXIgYz1bXS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7aWYoYy5sZW5ndGg9PT0wKXRocm93IG5ldyBFcnJvcihcXFwic2VxTWFwIG5lZWRzIGF0IGxlYXN0IG9uZSBhcmd1bWVudFxcXCIpO3ZhciBwPWMucG9wKCk7cmV0dXJuIGFlKHApLEJyLmFwcGx5KG51bGwsYykubWFwKGZ1bmN0aW9uKEUpe3JldHVybiBwLmFwcGx5KG51bGwsRSl9KX1mdW5jdGlvbiBQcigpe3ZhciBjPVtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKSxwPWMubGVuZ3RoO2lmKHA9PT0wKXJldHVybiAkcihcXFwiemVybyBhbHRlcm5hdGVzXFxcIik7Zm9yKHZhciBFPTA7RTxwO0UrPTEpaihjW0VdKTtyZXR1cm4gcihmdW5jdGlvbihrLEwpe2Zvcih2YXIgQSxNPTA7TTxjLmxlbmd0aDtNKz0xKWlmKChBPXgoY1tNXS5fKGssTCksQSkpLnN0YXR1cylyZXR1cm4gQTtyZXR1cm4gQX0pfWZ1bmN0aW9uIENvKGMscCl7cmV0dXJuIFVzKGMscCkub3IoJHQoW10pKX1mdW5jdGlvbiBVcyhjLHApe3JldHVybiBqKGMpLGoocCksUHQoYyxwLnRoZW4oYykubWFueSgpLGZ1bmN0aW9uKEUsayl7cmV0dXJuW0VdLmNvbmNhdChrKX0pfWZ1bmN0aW9uIEJuKGMpe08oYyk7dmFyIHA9XFxcIidcXFwiK2MrXFxcIidcXFwiO3JldHVybiByKGZ1bmN0aW9uKEUsayl7dmFyIEw9aytjLmxlbmd0aCxBPUUuc2xpY2UoayxMKTtyZXR1cm4gQT09PWM/dyhMLEEpOnYoayxwKX0pfWZ1bmN0aW9uIGZ0KGMscCl7KGZ1bmN0aW9uKEwpe2lmKCEoTCBpbnN0YW5jZW9mIFJlZ0V4cCkpdGhyb3cgbmV3IEVycm9yKFxcXCJub3QgYSByZWdleHA6IFxcXCIrTCk7Zm9yKHZhciBBPWtvKEwpLE09MDtNPEEubGVuZ3RoO00rKyl7dmFyIFU9QS5jaGFyQXQoTSk7aWYoVSE9PVxcXCJpXFxcIiYmVSE9PVxcXCJtXFxcIiYmVSE9PVxcXCJ1XFxcIiYmVSE9PVxcXCJzXFxcIil0aHJvdyBuZXcgRXJyb3IoJ3Vuc3VwcG9ydGVkIHJlZ2V4cCBmbGFnIFxcXCInK1UrJ1xcXCI6ICcrTCl9fSkoYyksYXJndW1lbnRzLmxlbmd0aD49Mj9lZShwKTpwPTA7dmFyIEU9ZnVuY3Rpb24oTCl7cmV0dXJuIFJlZ0V4cChcXFwiXig/OlxcXCIrTC5zb3VyY2UrXFxcIilcXFwiLGtvKEwpKX0oYyksaz1cXFwiXFxcIitjO3JldHVybiByKGZ1bmN0aW9uKEwsQSl7dmFyIE09RS5leGVjKEwuc2xpY2UoQSkpO2lmKE0pe2lmKDA8PXAmJnA8PU0ubGVuZ3RoKXt2YXIgVT1NWzBdLHRlPU1bcF07cmV0dXJuIHcoQStVLmxlbmd0aCx0ZSl9cmV0dXJuIHYoQSxcXFwidmFsaWQgbWF0Y2ggZ3JvdXAgKDAgdG8gXFxcIitNLmxlbmd0aCtcXFwiKSBpbiBcXFwiK2spfXJldHVybiB2KEEsayl9KX1mdW5jdGlvbiAkdChjKXtyZXR1cm4gcihmdW5jdGlvbihwLEUpe3JldHVybiB3KEUsYyl9KX1mdW5jdGlvbiAkcihjKXtyZXR1cm4gcihmdW5jdGlvbihwLEUpe3JldHVybiB2KEUsYyl9KX1mdW5jdGlvbiBScihjKXtpZihJKGMpKXJldHVybiByKGZ1bmN0aW9uKHAsRSl7dmFyIGs9Yy5fKHAsRSk7cmV0dXJuIGsuaW5kZXg9RSxrLnZhbHVlPVxcXCJcXFwiLGt9KTtpZih0eXBlb2YgYz09XFxcInN0cmluZ1xcXCIpcmV0dXJuIFJyKEJuKGMpKTtpZihjIGluc3RhbmNlb2YgUmVnRXhwKXJldHVybiBScihmdChjKSk7dGhyb3cgbmV3IEVycm9yKFxcXCJub3QgYSBzdHJpbmcsIHJlZ2V4cCwgb3IgcGFyc2VyOiBcXFwiK2MpfWZ1bmN0aW9uIHZvKGMpe3JldHVybiBqKGMpLHIoZnVuY3Rpb24ocCxFKXt2YXIgaz1jLl8ocCxFKSxMPXAuc2xpY2UoRSxrLmluZGV4KTtyZXR1cm4gay5zdGF0dXM/dihFLCdub3QgXFxcIicrTCsnXFxcIicpOncoRSxudWxsKX0pfWZ1bmN0aW9uIGpyKGMpe3JldHVybiBhZShjKSxyKGZ1bmN0aW9uKHAsRSl7dmFyIGs9WShwLEUpO3JldHVybiBFPHAubGVuZ3RoJiZjKGspP3coRSsxLGspOnYoRSxcXFwiYSBjaGFyYWN0ZXIvYnl0ZSBtYXRjaGluZyBcXFwiK2MpfSl9ZnVuY3Rpb24geG8oYyxwKXthcmd1bWVudHMubGVuZ3RoPDImJihwPWMsYz12b2lkIDApO3ZhciBFPXIoZnVuY3Rpb24oayxMKXtyZXR1cm4gRS5fPXAoKS5fLEUuXyhrLEwpfSk7cmV0dXJuIGM/RS5kZXNjKGMpOkV9ZnVuY3Rpb24gS3MoKXtyZXR1cm4gJHIoXFxcImZhbnRhc3ktbGFuZC9lbXB0eVxcXCIpfXMucGFyc2U9ZnVuY3Rpb24oYyl7aWYodHlwZW9mIGMhPVxcXCJzdHJpbmdcXFwiJiYheShjKSl0aHJvdyBuZXcgRXJyb3IoXFxcIi5wYXJzZSBtdXN0IGJlIGNhbGxlZCB3aXRoIGEgc3RyaW5nIG9yIEJ1ZmZlciBhcyBpdHMgYXJndW1lbnRcXFwiKTt2YXIgcCxFPXRoaXMuc2tpcChXcykuXyhjLDApO3JldHVybiBwPUUuc3RhdHVzP3tzdGF0dXM6ITAsdmFsdWU6RS52YWx1ZX06e3N0YXR1czohMSxpbmRleDpWKGMsRS5mdXJ0aGVzdCksZXhwZWN0ZWQ6RS5leHBlY3RlZH0sZGVsZXRlIENbY10scH0scy50cnlQYXJzZT1mdW5jdGlvbihjKXt2YXIgcD10aGlzLnBhcnNlKGMpO2lmKHAuc3RhdHVzKXJldHVybiBwLnZhbHVlO3ZhciBFPVNvKGMscCksaz1uZXcgRXJyb3IoRSk7dGhyb3cgay50eXBlPVxcXCJQYXJzaW1tb25FcnJvclxcXCIsay5yZXN1bHQ9cCxrfSxzLmFzc2VydD1mdW5jdGlvbihjLHApe3JldHVybiB0aGlzLmNoYWluKGZ1bmN0aW9uKEUpe3JldHVybiBjKEUpPyR0KEUpOiRyKHApfSl9LHMub3I9ZnVuY3Rpb24oYyl7cmV0dXJuIFByKHRoaXMsYyl9LHMudHJpbT1mdW5jdGlvbihjKXtyZXR1cm4gdGhpcy53cmFwKGMsYyl9LHMud3JhcD1mdW5jdGlvbihjLHApe3JldHVybiBQdChjLHRoaXMscCxmdW5jdGlvbihFLGspe3JldHVybiBrfSl9LHMudGhydT1mdW5jdGlvbihjKXtyZXR1cm4gYyh0aGlzKX0scy50aGVuPWZ1bmN0aW9uKGMpe3JldHVybiBqKGMpLEJyKHRoaXMsYykubWFwKGZ1bmN0aW9uKHApe3JldHVybiBwWzFdfSl9LHMubWFueT1mdW5jdGlvbigpe3ZhciBjPXRoaXM7cmV0dXJuIHIoZnVuY3Rpb24ocCxFKXtmb3IodmFyIGs9W10sTD12b2lkIDA7Oyl7aWYoIShMPXgoYy5fKHAsRSksTCkpLnN0YXR1cylyZXR1cm4geCh3KEUsayksTCk7aWYoRT09PUwuaW5kZXgpdGhyb3cgbmV3IEVycm9yKFxcXCJpbmZpbml0ZSBsb29wIGRldGVjdGVkIGluIC5tYW55KCkgcGFyc2VyIC0tLSBjYWxsaW5nIC5tYW55KCkgb24gYSBwYXJzZXIgd2hpY2ggY2FuIGFjY2VwdCB6ZXJvIGNoYXJhY3RlcnMgaXMgdXN1YWxseSB0aGUgY2F1c2VcXFwiKTtFPUwuaW5kZXgsay5wdXNoKEwudmFsdWUpfX0pfSxzLnRpZVdpdGg9ZnVuY3Rpb24oYyl7cmV0dXJuIE8oYyksdGhpcy5tYXAoZnVuY3Rpb24ocCl7aWYoZnVuY3Rpb24oTCl7aWYoIU4oTCkpdGhyb3cgbmV3IEVycm9yKFxcXCJub3QgYW4gYXJyYXk6IFxcXCIrTCl9KHApLHAubGVuZ3RoKXtPKHBbMF0pO2Zvcih2YXIgRT1wWzBdLGs9MTtrPHAubGVuZ3RoO2srKylPKHBba10pLEUrPWMrcFtrXTtyZXR1cm4gRX1yZXR1cm5cXFwiXFxcIn0pfSxzLnRpZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRpZVdpdGgoXFxcIlxcXCIpfSxzLnRpbWVzPWZ1bmN0aW9uKGMscCl7dmFyIEU9dGhpcztyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwyJiYocD1jKSxlZShjKSxlZShwKSxyKGZ1bmN0aW9uKGssTCl7Zm9yKHZhciBBPVtdLE09dm9pZCAwLFU9dm9pZCAwLHRlPTA7dGU8Yzt0ZSs9MSl7aWYoVT14KE09RS5fKGssTCksVSksIU0uc3RhdHVzKXJldHVybiBVO0w9TS5pbmRleCxBLnB1c2goTS52YWx1ZSl9Zm9yKDt0ZTxwJiYoVT14KE09RS5fKGssTCksVSksTS5zdGF0dXMpO3RlKz0xKUw9TS5pbmRleCxBLnB1c2goTS52YWx1ZSk7cmV0dXJuIHgodyhMLEEpLFUpfSl9LHMucmVzdWx0PWZ1bmN0aW9uKGMpe3JldHVybiB0aGlzLm1hcChmdW5jdGlvbigpe3JldHVybiBjfSl9LHMuYXRNb3N0PWZ1bmN0aW9uKGMpe3JldHVybiB0aGlzLnRpbWVzKDAsYyl9LHMuYXRMZWFzdD1mdW5jdGlvbihjKXtyZXR1cm4gUHQodGhpcy50aW1lcyhjKSx0aGlzLm1hbnkoKSxmdW5jdGlvbihwLEUpe3JldHVybiBwLmNvbmNhdChFKX0pfSxzLm1hcD1mdW5jdGlvbihjKXthZShjKTt2YXIgcD10aGlzO3JldHVybiByKGZ1bmN0aW9uKEUsayl7dmFyIEw9cC5fKEUsayk7cmV0dXJuIEwuc3RhdHVzP3godyhMLmluZGV4LGMoTC52YWx1ZSkpLEwpOkx9KX0scy5jb250cmFtYXA9ZnVuY3Rpb24oYyl7YWUoYyk7dmFyIHA9dGhpcztyZXR1cm4gcihmdW5jdGlvbihFLGspe3ZhciBMPXAucGFyc2UoYyhFLnNsaWNlKGspKSk7cmV0dXJuIEwuc3RhdHVzP3coaytFLmxlbmd0aCxMLnZhbHVlKTpMfSl9LHMucHJvbWFwPWZ1bmN0aW9uKGMscCl7cmV0dXJuIGFlKGMpLGFlKHApLHRoaXMuY29udHJhbWFwKGMpLm1hcChwKX0scy5za2lwPWZ1bmN0aW9uKGMpe3JldHVybiBCcih0aGlzLGMpLm1hcChmdW5jdGlvbihwKXtyZXR1cm4gcFswXX0pfSxzLm1hcms9ZnVuY3Rpb24oKXtyZXR1cm4gUHQoUG4sdGhpcyxQbixmdW5jdGlvbihjLHAsRSl7cmV0dXJue3N0YXJ0OmMsdmFsdWU6cCxlbmQ6RX19KX0scy5ub2RlPWZ1bmN0aW9uKGMpe3JldHVybiBQdChQbix0aGlzLFBuLGZ1bmN0aW9uKHAsRSxrKXtyZXR1cm57bmFtZTpjLHZhbHVlOkUsc3RhcnQ6cCxlbmQ6a319KX0scy5zZXBCeT1mdW5jdGlvbihjKXtyZXR1cm4gQ28odGhpcyxjKX0scy5zZXBCeTE9ZnVuY3Rpb24oYyl7cmV0dXJuIFVzKHRoaXMsYyl9LHMubG9va2FoZWFkPWZ1bmN0aW9uKGMpe3JldHVybiB0aGlzLnNraXAoUnIoYykpfSxzLm5vdEZvbGxvd2VkQnk9ZnVuY3Rpb24oYyl7cmV0dXJuIHRoaXMuc2tpcCh2byhjKSl9LHMuZGVzYz1mdW5jdGlvbihjKXtOKGMpfHwoYz1bY10pO3ZhciBwPXRoaXM7cmV0dXJuIHIoZnVuY3Rpb24oRSxrKXt2YXIgTD1wLl8oRSxrKTtyZXR1cm4gTC5zdGF0dXN8fChMLmV4cGVjdGVkPWMpLEx9KX0scy5mYWxsYmFjaz1mdW5jdGlvbihjKXtyZXR1cm4gdGhpcy5vcigkdChjKSl9LHMuYXA9ZnVuY3Rpb24oYyl7cmV0dXJuIFB0KGMsdGhpcyxmdW5jdGlvbihwLEUpe3JldHVybiBwKEUpfSl9LHMuY2hhaW49ZnVuY3Rpb24oYyl7dmFyIHA9dGhpcztyZXR1cm4gcihmdW5jdGlvbihFLGspe3ZhciBMPXAuXyhFLGspO3JldHVybiBMLnN0YXR1cz94KGMoTC52YWx1ZSkuXyhFLEwuaW5kZXgpLEwpOkx9KX0scy5jb25jYXQ9cy5vcixzLmVtcHR5PUtzLHMub2Y9JHQsc1tcXFwiZmFudGFzeS1sYW5kL2FwXFxcIl09cy5hcCxzW1xcXCJmYW50YXN5LWxhbmQvY2hhaW5cXFwiXT1zLmNoYWluLHNbXFxcImZhbnRhc3ktbGFuZC9jb25jYXRcXFwiXT1zLmNvbmNhdCxzW1xcXCJmYW50YXN5LWxhbmQvZW1wdHlcXFwiXT1zLmVtcHR5LHNbXFxcImZhbnRhc3ktbGFuZC9vZlxcXCJdPXMub2Ysc1tcXFwiZmFudGFzeS1sYW5kL21hcFxcXCJdPXMubWFwO3ZhciBQbj1yKGZ1bmN0aW9uKGMscCl7cmV0dXJuIHcocCxWKGMscCkpfSksZWw9cihmdW5jdGlvbihjLHApe3JldHVybiBwPj1jLmxlbmd0aD92KHAsXFxcImFueSBjaGFyYWN0ZXIvYnl0ZVxcXCIpOncocCsxLFkoYyxwKSl9KSx0bD1yKGZ1bmN0aW9uKGMscCl7cmV0dXJuIHcoYy5sZW5ndGgsYy5zbGljZShwKSl9KSxXcz1yKGZ1bmN0aW9uKGMscCl7cmV0dXJuIHA8Yy5sZW5ndGg/dihwLFxcXCJFT0ZcXFwiKTp3KHAsbnVsbCl9KSxubD1mdCgvWzAtOV0vKS5kZXNjKFxcXCJhIGRpZ2l0XFxcIikscmw9ZnQoL1swLTldKi8pLmRlc2MoXFxcIm9wdGlvbmFsIGRpZ2l0c1xcXCIpLHNsPWZ0KC9bYS16XS9pKS5kZXNjKFxcXCJhIGxldHRlclxcXCIpLGlsPWZ0KC9bYS16XSovaSkuZGVzYyhcXFwib3B0aW9uYWwgbGV0dGVyc1xcXCIpLG9sPWZ0KC9cXFxccyovKS5kZXNjKFxcXCJvcHRpb25hbCB3aGl0ZXNwYWNlXFxcIiksYWw9ZnQoL1xcXFxzKy8pLmRlc2MoXFxcIndoaXRlc3BhY2VcXFwiKSxPbz1CbihcXFwiXFxcXHJcXFwiKSxJbz1CbihgXFxuYCksTG89Qm4oYFxcXFxyXFxuYCksTm89UHIoTG8sSW8sT28pLmRlc2MoXFxcIm5ld2xpbmVcXFwiKSx1bD1QcihObyxXcyk7ci5hbGw9dGwsci5hbHQ9UHIsci5hbnk9ZWwsci5jcj1PbyxyLmNyZWF0ZUxhbmd1YWdlPWZ1bmN0aW9uKGMpe3ZhciBwPXt9O2Zvcih2YXIgRSBpbiBjKSh7fSkuaGFzT3duUHJvcGVydHkuY2FsbChjLEUpJiZmdW5jdGlvbihrKXtwW2tdPXhvKGZ1bmN0aW9uKCl7cmV0dXJuIGNba10ocCl9KX0oRSk7cmV0dXJuIHB9LHIuY3JsZj1MbyxyLmN1c3RvbT1mdW5jdGlvbihjKXtyZXR1cm4gcihjKHcsdikpfSxyLmRpZ2l0PW5sLHIuZGlnaXRzPXJsLHIuZW1wdHk9S3Msci5lbmQ9dWwsci5lb2Y9V3Msci5mYWlsPSRyLHIuZm9ybWF0RXJyb3I9U28sci5pbmRleD1QbixyLmlzUGFyc2VyPUksci5sYXp5PXhvLHIubGV0dGVyPXNsLHIubGV0dGVycz1pbCxyLmxmPUlvLHIubG9va2FoZWFkPVJyLHIubWFrZUZhaWx1cmU9dixyLm1ha2VTdWNjZXNzPXcsci5uZXdsaW5lPU5vLHIubm9uZU9mPWZ1bmN0aW9uKGMpe3JldHVybiBqcihmdW5jdGlvbihwKXtyZXR1cm4gYy5pbmRleE9mKHApPDB9KS5kZXNjKFxcXCJub25lIG9mICdcXFwiK2MrXFxcIidcXFwiKX0sci5ub3RGb2xsb3dlZEJ5PXZvLHIub2Y9JHQsci5vbmVPZj1mdW5jdGlvbihjKXtmb3IodmFyIHA9Yy5zcGxpdChcXFwiXFxcIiksRT0wO0U8cC5sZW5ndGg7RSsrKXBbRV09XFxcIidcXFwiK3BbRV0rXFxcIidcXFwiO3JldHVybiBqcihmdW5jdGlvbihrKXtyZXR1cm4gYy5pbmRleE9mKGspPj0wfSkuZGVzYyhwKX0sci5vcHRXaGl0ZXNwYWNlPW9sLHIuUGFyc2VyPXIsci5yYW5nZT1mdW5jdGlvbihjLHApe3JldHVybiBqcihmdW5jdGlvbihFKXtyZXR1cm4gYzw9RSYmRTw9cH0pLmRlc2MoYytcXFwiLVxcXCIrcCl9LHIucmVnZXg9ZnQsci5yZWdleHA9ZnQsci5zZXBCeT1DbyxyLnNlcEJ5MT1VcyxyLnNlcT1CcixyLnNlcU1hcD1QdCxyLnNlcU9iaj1mdW5jdGlvbigpe2Zvcih2YXIgYyxwPXt9LEU9MCxrPShjPWFyZ3VtZW50cyxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChjKSksTD1rLmxlbmd0aCxBPTA7QTxMO0ErPTEpe3ZhciBNPWtbQV07aWYoIUkoTSkpe2lmKE4oTSkmJk0ubGVuZ3RoPT09MiYmdHlwZW9mIE1bMF09PVxcXCJzdHJpbmdcXFwiJiZJKE1bMV0pKXt2YXIgVT1NWzBdO2lmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChwLFUpKXRocm93IG5ldyBFcnJvcihcXFwic2VxT2JqOiBkdXBsaWNhdGUga2V5IFxcXCIrVSk7cFtVXT0hMCxFKys7Y29udGludWV9dGhyb3cgbmV3IEVycm9yKFxcXCJzZXFPYmogYXJndW1lbnRzIG11c3QgYmUgcGFyc2VycyBvciBbc3RyaW5nLCBwYXJzZXJdIGFycmF5IHBhaXJzLlxcXCIpfX1pZihFPT09MCl0aHJvdyBuZXcgRXJyb3IoXFxcInNlcU9iaiBleHBlY3RzIGF0IGxlYXN0IG9uZSBuYW1lZCBwYXJzZXIsIGZvdW5kIHplcm9cXFwiKTtyZXR1cm4gcihmdW5jdGlvbih0ZSxFZSl7Zm9yKHZhciBtZSxkdD17fSx2ZT0wO3ZlPEw7dmUrPTEpe3ZhciBodCxYdDtpZihOKGtbdmVdKT8oaHQ9a1t2ZV1bMF0sWHQ9a1t2ZV1bMV0pOihodD1udWxsLFh0PWtbdmVdKSwhKG1lPXgoWHQuXyh0ZSxFZSksbWUpKS5zdGF0dXMpcmV0dXJuIG1lO2h0JiYoZHRbaHRdPW1lLnZhbHVlKSxFZT1tZS5pbmRleH1yZXR1cm4geCh3KEVlLGR0KSxtZSl9KX0sci5zdHJpbmc9Qm4sci5zdWNjZWVkPSR0LHIudGFrZVdoaWxlPWZ1bmN0aW9uKGMpe3JldHVybiBhZShjKSxyKGZ1bmN0aW9uKHAsRSl7Zm9yKHZhciBrPUU7azxwLmxlbmd0aCYmYyhZKHAsaykpOylrKys7cmV0dXJuIHcoayxwLnNsaWNlKEUsaykpfSl9LHIudGVzdD1qcixyLndoaXRlc3BhY2U9YWwscltcXFwiZmFudGFzeS1sYW5kL2VtcHR5XFxcIl09S3MscltcXFwiZmFudGFzeS1sYW5kL29mXFxcIl09JHQsci5CaW5hcnk9e2JpdFNlcTpkLGJpdFNlcU9iajpmdW5jdGlvbihjKXtmKCk7dmFyIHA9e30sRT0wLGs9YShmdW5jdGlvbihBKXtpZihOKEEpKXt2YXIgTT1BO2lmKE0ubGVuZ3RoIT09Mil0aHJvdyBuZXcgRXJyb3IoXFxcIltcXFwiK00uam9pbihcXFwiLCBcXFwiKStcXFwiXSBzaG91bGQgYmUgbGVuZ3RoIDIsIGdvdCBsZW5ndGggXFxcIitNLmxlbmd0aCk7aWYoTyhNWzBdKSxlZShNWzFdKSxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocCxNWzBdKSl0aHJvdyBuZXcgRXJyb3IoXFxcImR1cGxpY2F0ZSBrZXkgaW4gYml0U2VxT2JqOiBcXFwiK01bMF0pO3JldHVybiBwW01bMF1dPSEwLEUrKyxNfXJldHVybiBlZShBKSxbbnVsbCxBXX0sYyk7aWYoRTwxKXRocm93IG5ldyBFcnJvcihcXFwiYml0U2VxT2JqIGV4cGVjdHMgYXQgbGVhc3Qgb25lIG5hbWVkIHBhaXIsIGdvdCBbXFxcIitjLmpvaW4oXFxcIiwgXFxcIikrXFxcIl1cXFwiKTt2YXIgTD1hKGZ1bmN0aW9uKEEpe3JldHVybiBBWzBdfSxrKTtyZXR1cm4gZChhKGZ1bmN0aW9uKEEpe3JldHVybiBBWzFdfSxrKSkubWFwKGZ1bmN0aW9uKEEpe3JldHVybiBvKGZ1bmN0aW9uKE0sVSl7cmV0dXJuIFVbMF0hPT1udWxsJiYoTVtVWzBdXT1VWzFdKSxNfSx7fSxhKGZ1bmN0aW9uKE0sVSl7cmV0dXJuW00sQVtVXV19LEwpKX0pfSxieXRlOmZ1bmN0aW9uKGMpe2lmKGYoKSxlZShjKSxjPjI1NSl0aHJvdyBuZXcgRXJyb3IoXFxcIlZhbHVlIHNwZWNpZmllZCB0byBieXRlIGNvbnN0cnVjdG9yIChcXFwiK2MrXFxcIj0weFxcXCIrYy50b1N0cmluZygxNikrXFxcIikgaXMgbGFyZ2VyIGluIHZhbHVlIHRoYW4gYSBzaW5nbGUgYnl0ZS5cXFwiKTt2YXIgcD0oYz4xNT9cXFwiMHhcXFwiOlxcXCIweDBcXFwiKStjLnRvU3RyaW5nKDE2KTtyZXR1cm4gcihmdW5jdGlvbihFLGspe3ZhciBMPVkoRSxrKTtyZXR1cm4gTD09PWM/dyhrKzEsTCk6dihrLHApfSl9LGJ1ZmZlcjpmdW5jdGlvbihjKXtyZXR1cm4gbShcXFwiYnVmZmVyXFxcIixjKS5tYXAoZnVuY3Rpb24ocCl7cmV0dXJuIEJ1ZmZlci5mcm9tKHApfSl9LGVuY29kZWRTdHJpbmc6ZnVuY3Rpb24oYyxwKXtyZXR1cm4gbShcXFwic3RyaW5nXFxcIixwKS5tYXAoZnVuY3Rpb24oRSl7cmV0dXJuIEUudG9TdHJpbmcoYyl9KX0sdWludEJFOmIsdWludDhCRTpiKDEpLHVpbnQxNkJFOmIoMiksdWludDMyQkU6Yig0KSx1aW50TEU6Zyx1aW50OExFOmcoMSksdWludDE2TEU6ZygyKSx1aW50MzJMRTpnKDQpLGludEJFOkQsaW50OEJFOkQoMSksaW50MTZCRTpEKDIpLGludDMyQkU6RCg0KSxpbnRMRTpULGludDhMRTpUKDEpLGludDE2TEU6VCgyKSxpbnQzMkxFOlQoNCksZmxvYXRCRTptKFxcXCJmbG9hdEJFXFxcIiw0KS5tYXAoZnVuY3Rpb24oYyl7cmV0dXJuIGMucmVhZEZsb2F0QkUoMCl9KSxmbG9hdExFOm0oXFxcImZsb2F0TEVcXFwiLDQpLm1hcChmdW5jdGlvbihjKXtyZXR1cm4gYy5yZWFkRmxvYXRMRSgwKX0pLGRvdWJsZUJFOm0oXFxcImRvdWJsZUJFXFxcIiw4KS5tYXAoZnVuY3Rpb24oYyl7cmV0dXJuIGMucmVhZERvdWJsZUJFKDApfSksZG91YmxlTEU6bShcXFwiZG91YmxlTEVcXFwiLDgpLm1hcChmdW5jdGlvbihjKXtyZXR1cm4gYy5yZWFkRG91YmxlTEUoMCl9KX0sbi5leHBvcnRzPXJ9XSl9KX0pO3ZhciBSdT1fbyhOZT0+e1xcXCJ1c2Ugc3RyaWN0XFxcIjt2YXIgU2Y9TmUmJk5lLl9fZXh0ZW5kc3x8ZnVuY3Rpb24oKXt2YXIgbj1mdW5jdGlvbihlLHQpe3JldHVybiBuPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihyLHMpe3IuX19wcm90b19fPXN9fHxmdW5jdGlvbihyLHMpe2Zvcih2YXIgaSBpbiBzKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLGkpJiYocltpXT1zW2ldKX0sbihlLHQpfTtyZXR1cm4gZnVuY3Rpb24oZSx0KXtpZih0eXBlb2YgdCE9XFxcImZ1bmN0aW9uXFxcIiYmdCE9PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcihcXFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcXFwiK1N0cmluZyh0KStcXFwiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcXFwiKTtuKGUsdCk7ZnVuY3Rpb24gcigpe3RoaXMuY29uc3RydWN0b3I9ZX1lLnByb3RvdHlwZT10PT09bnVsbD9PYmplY3QuY3JlYXRlKHQpOihyLnByb3RvdHlwZT10LnByb3RvdHlwZSxuZXcgcil9fSgpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShOZSxcXFwiX19lc01vZHVsZVxcXCIse3ZhbHVlOiEwfSk7TmUuRW1wdHlCVHJlZT1OZS5hc1NldD1OZS5zaW1wbGVDb21wYXJhdG9yPU5lLmRlZmF1bHRDb21wYXJhdG9yPXZvaWQgMDtmdW5jdGlvbiBCdShuLGUpe2lmKE51bWJlci5pc0Zpbml0ZShuKSYmTnVtYmVyLmlzRmluaXRlKGUpKXJldHVybiBuLWU7dmFyIHQ9dHlwZW9mIG4scj10eXBlb2YgZTtpZih0IT09cilyZXR1cm4gdDxyPy0xOjE7aWYodD09PVxcXCJvYmplY3RcXFwiKXtpZihuPT09bnVsbClyZXR1cm4gZT09PW51bGw/MDotMTtpZihlPT09bnVsbClyZXR1cm4gMTtpZihuPW4udmFsdWVPZigpLGU9ZS52YWx1ZU9mKCksdD10eXBlb2YgbixyPXR5cGVvZiBlLHQhPT1yKXJldHVybiB0PHI/LTE6MX1yZXR1cm4gbjxlPy0xOm4+ZT8xOm49PT1lPzA6TnVtYmVyLmlzTmFOKG4pP051bWJlci5pc05hTihlKT8wOi0xOk51bWJlci5pc05hTihlKT8xOkFycmF5LmlzQXJyYXkobik/MDpOdW1iZXIuTmFOfU5lLmRlZmF1bHRDb21wYXJhdG9yPUJ1O2Z1bmN0aW9uIGtmKG4sZSl7cmV0dXJuIG4+ZT8xOm48ZT8tMTowfU5lLnNpbXBsZUNvbXBhcmF0b3I9a2Y7dmFyIGx0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihlLHQscil7dGhpcy5fcm9vdD1mbyx0aGlzLl9zaXplPTAsdGhpcy5fbWF4Tm9kZVNpemU9cj49ND9NYXRoLm1pbihyLDI1Nik6MzIsdGhpcy5fY29tcGFyZT10fHxCdSxlJiZ0aGlzLnNldFBhaXJzKGUpfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkobi5wcm90b3R5cGUsXFxcInNpemVcXFwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc2l6ZX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkobi5wcm90b3R5cGUsXFxcImxlbmd0aFxcXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zaXplfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLnByb3RvdHlwZSxcXFwiaXNFbXB0eVxcXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zaXplPT09MH0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxuLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuX3Jvb3Q9Zm8sdGhpcy5fc2l6ZT0wfSxuLnByb3RvdHlwZS5mb3JFYWNoPWZ1bmN0aW9uKGUsdCl7dmFyIHI9dGhpcztyZXR1cm4gdCE9PXZvaWQgMCYmKGU9ZS5iaW5kKHQpKSx0aGlzLmZvckVhY2hQYWlyKGZ1bmN0aW9uKHMsaSl7cmV0dXJuIGUoaSxzLHIpfSl9LG4ucHJvdG90eXBlLmZvckVhY2hQYWlyPWZ1bmN0aW9uKGUsdCl7dmFyIHI9dGhpcy5taW5LZXkoKSxzPXRoaXMubWF4S2V5KCk7cmV0dXJuIHRoaXMuZm9yUmFuZ2UocixzLCEwLGUsdCl9LG4ucHJvdG90eXBlLmdldD1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLl9yb290LmdldChlLHQsdGhpcyl9LG4ucHJvdG90eXBlLnNldD1mdW5jdGlvbihlLHQscil7dGhpcy5fcm9vdC5pc1NoYXJlZCYmKHRoaXMuX3Jvb3Q9dGhpcy5fcm9vdC5jbG9uZSgpKTt2YXIgcz10aGlzLl9yb290LnNldChlLHQscix0aGlzKTtyZXR1cm4gcz09PSEwfHxzPT09ITE/czoodGhpcy5fcm9vdD1uZXcgdmYoW3RoaXMuX3Jvb3Qsc10pLCEwKX0sbi5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmZvclJhbmdlKGUsZSwhMCx2b2lkIDApIT09MH0sbi5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmVkaXRSYW5nZShlLGUsITAsTXUpIT09MH0sbi5wcm90b3R5cGUud2l0aD1mdW5jdGlvbihlLHQscil7dmFyIHM9dGhpcy5jbG9uZSgpO3JldHVybiBzLnNldChlLHQscil8fHI/czp0aGlzfSxuLnByb3RvdHlwZS53aXRoUGFpcnM9ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzLmNsb25lKCk7cmV0dXJuIHIuc2V0UGFpcnMoZSx0KSE9PTB8fHQ/cjp0aGlzfSxuLnByb3RvdHlwZS53aXRoS2V5cz1mdW5jdGlvbihlLHQpe2Zvcih2YXIgcj10aGlzLmNsb25lKCkscz0hMSxpPTA7aTxlLmxlbmd0aDtpKyspcz1yLnNldChlW2ldLHZvaWQgMCwhMSl8fHM7cmV0dXJuIHQmJiFzP3RoaXM6cn0sbi5wcm90b3R5cGUud2l0aG91dD1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLndpdGhvdXRSYW5nZShlLGUsITAsdCl9LG4ucHJvdG90eXBlLndpdGhvdXRLZXlzPWZ1bmN0aW9uKGUsdCl7dmFyIHI9dGhpcy5jbG9uZSgpO3JldHVybiByLmRlbGV0ZUtleXMoZSl8fCF0P3I6dGhpc30sbi5wcm90b3R5cGUud2l0aG91dFJhbmdlPWZ1bmN0aW9uKGUsdCxyLHMpe3ZhciBpPXRoaXMuY2xvbmUoKTtyZXR1cm4gaS5kZWxldGVSYW5nZShlLHQscik9PT0wJiZzP3RoaXM6aX0sbi5wcm90b3R5cGUuZmlsdGVyPWZ1bmN0aW9uKGUsdCl7dmFyIHI9dGhpcy5ncmVlZHlDbG9uZSgpLHM7cmV0dXJuIHIuZWRpdEFsbChmdW5jdGlvbihpLG8sYSl7aWYoIWUoaSxvLGEpKXJldHVybiBzPSR1fSksIXMmJnQ/dGhpczpyfSxuLnByb3RvdHlwZS5tYXBWYWx1ZXM9ZnVuY3Rpb24oZSl7dmFyIHQ9e30scj10aGlzLmdyZWVkeUNsb25lKCk7cmV0dXJuIHIuZWRpdEFsbChmdW5jdGlvbihzLGksbyl7cmV0dXJuIHQudmFsdWU9ZShpLHMsbyksdH0pLHJ9LG4ucHJvdG90eXBlLnJlZHVjZT1mdW5jdGlvbihlLHQpe2Zvcih2YXIgcj0wLHM9dCxpPXRoaXMuZW50cmllcyh0aGlzLm1pbktleSgpLE1yKSxvOyEobz1pLm5leHQoKSkuZG9uZTspcz1lKHMsby52YWx1ZSxyKyssdGhpcyk7cmV0dXJuIHN9LG4ucHJvdG90eXBlLmVudHJpZXM9ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzLmZpbmRQYXRoKGUpO2lmKHI9PT12b2lkIDApcmV0dXJuIEFuKCk7dmFyIHM9ci5ub2RlcXVldWUsaT1yLm5vZGVpbmRleCxvPXIubGVhZixhPXQhPT12b2lkIDA/MTowLHU9ZT09PXZvaWQgMD8tMTpvLmluZGV4T2YoZSwwLHRoaXMuX2NvbXBhcmUpLTE7cmV0dXJuIEFuKGZ1bmN0aW9uKCl7ZTpmb3IoOzspc3dpdGNoKGEpe2Nhc2UgMDppZigrK3U8by5rZXlzLmxlbmd0aClyZXR1cm57ZG9uZTohMSx2YWx1ZTpbby5rZXlzW3VdLG8udmFsdWVzW3VdXX07YT0yO2NvbnRpbnVlO2Nhc2UgMTppZigrK3U8by5rZXlzLmxlbmd0aClyZXR1cm4gdFswXT1vLmtleXNbdV0sdFsxXT1vLnZhbHVlc1t1XSx7ZG9uZTohMSx2YWx1ZTp0fTthPTI7Y2FzZSAyOmZvcih2YXIgbD0tMTs7KXtpZigrK2w+PXMubGVuZ3RoKXthPTM7Y29udGludWUgZX1pZigrK2lbbF08c1tsXS5sZW5ndGgpYnJlYWt9Zm9yKDtsPjA7bC0tKXNbbC0xXT1zW2xdW2lbbF1dLmNoaWxkcmVuLGlbbC0xXT0wO289c1swXVtpWzBdXSx1PS0xLGE9dCE9PXZvaWQgMD8xOjA7Y29udGludWU7Y2FzZSAzOnJldHVybntkb25lOiEwLHZhbHVlOnZvaWQgMH19fSl9LG4ucHJvdG90eXBlLmVudHJpZXNSZXZlcnNlZD1mdW5jdGlvbihlLHQscil7aWYoZT09PXZvaWQgMCYmKGU9dGhpcy5tYXhLZXkoKSxyPXZvaWQgMCxlPT09dm9pZCAwKSlyZXR1cm4gQW4oKTt2YXIgcz10aGlzLmZpbmRQYXRoKGUpfHx0aGlzLmZpbmRQYXRoKHRoaXMubWF4S2V5KCkpLGk9cy5ub2RlcXVldWUsbz1zLm5vZGVpbmRleCxhPXMubGVhZjtMZSghaVswXXx8YT09PWlbMF1bb1swXV0sXFxcIndhdCFcXFwiKTt2YXIgdT1hLmluZGV4T2YoZSwwLHRoaXMuX2NvbXBhcmUpOyFyJiZ1PGEua2V5cy5sZW5ndGgmJnRoaXMuX2NvbXBhcmUoYS5rZXlzW3VdLGUpPD0wJiZ1Kys7dmFyIGw9dCE9PXZvaWQgMD8xOjA7cmV0dXJuIEFuKGZ1bmN0aW9uKCl7ZTpmb3IoOzspc3dpdGNoKGwpe2Nhc2UgMDppZigtLXU+PTApcmV0dXJue2RvbmU6ITEsdmFsdWU6W2Eua2V5c1t1XSxhLnZhbHVlc1t1XV19O2w9Mjtjb250aW51ZTtjYXNlIDE6aWYoLS11Pj0wKXJldHVybiB0WzBdPWEua2V5c1t1XSx0WzFdPWEudmFsdWVzW3VdLHtkb25lOiExLHZhbHVlOnR9O2w9MjtjYXNlIDI6Zm9yKHZhciBmPS0xOzspe2lmKCsrZj49aS5sZW5ndGgpe2w9Mztjb250aW51ZSBlfWlmKC0tb1tmXT49MClicmVha31mb3IoO2Y+MDtmLS0paVtmLTFdPWlbZl1bb1tmXV0uY2hpbGRyZW4sb1tmLTFdPWlbZi0xXS5sZW5ndGgtMTthPWlbMF1bb1swXV0sdT1hLmtleXMubGVuZ3RoLGw9dCE9PXZvaWQgMD8xOjA7Y29udGludWU7Y2FzZSAzOnJldHVybntkb25lOiEwLHZhbHVlOnZvaWQgMH19fSl9LG4ucHJvdG90eXBlLmZpbmRQYXRoPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX3Jvb3QscixzO2lmKHQuaXNMZWFmKXI9X3Uscz1fdTtlbHNle3I9W10scz1bXTtmb3IodmFyIGk9MDshdC5pc0xlYWY7aSsrKXtpZihyW2ldPXQuY2hpbGRyZW4sc1tpXT1lPT09dm9pZCAwPzA6dC5pbmRleE9mKGUsMCx0aGlzLl9jb21wYXJlKSxzW2ldPj1yW2ldLmxlbmd0aClyZXR1cm47dD1yW2ldW3NbaV1dfXIucmV2ZXJzZSgpLHMucmV2ZXJzZSgpfXJldHVybntub2RlcXVldWU6cixub2RlaW5kZXg6cyxsZWFmOnR9fSxuLnByb3RvdHlwZS5kaWZmQWdhaW5zdD1mdW5jdGlvbihlLHQscixzKXtpZihlLl9jb21wYXJlIT09dGhpcy5fY29tcGFyZSl0aHJvdyBuZXcgRXJyb3IoXFxcIlRyZWUgY29tcGFyYXRvcnMgYXJlIG5vdCB0aGUgc2FtZS5cXFwiKTtpZih0aGlzLmlzRW1wdHl8fGUuaXNFbXB0eSlyZXR1cm4gdGhpcy5pc0VtcHR5JiZlLmlzRW1wdHk/dm9pZCAwOnRoaXMuaXNFbXB0eT9yPT09dm9pZCAwP3ZvaWQgMDpuLnN0ZXBUb0VuZChuLm1ha2VEaWZmQ3Vyc29yKGUpLHIpOnQ9PT12b2lkIDA/dm9pZCAwOm4uc3RlcFRvRW5kKG4ubWFrZURpZmZDdXJzb3IodGhpcyksdCk7Zm9yKHZhciBpPXRoaXMuX2NvbXBhcmUsbz1uLm1ha2VEaWZmQ3Vyc29yKHRoaXMpLGE9bi5tYWtlRGlmZkN1cnNvcihlKSx1PSEwLGw9ITAsZj1uLmNvbXBhcmUobyxhLGkpO3UmJmw7KXt2YXIgZD1uLmNvbXBhcmUobyxhLGkpLG09by5sZWFmLGg9by5pbnRlcm5hbFNwaW5lLGI9by5sZXZlbEluZGljZXMsZz1hLmxlYWYsRD1hLmludGVybmFsU3BpbmUsVD1hLmxldmVsSW5kaWNlcztpZihtfHxnKXtpZihmIT09MCl7aWYoZD09PTApe2lmKG0mJmcmJnMpe3ZhciBJPW0udmFsdWVzW2JbYi5sZW5ndGgtMV1dLE49Zy52YWx1ZXNbVFtULmxlbmd0aC0xXV07aWYoIU9iamVjdC5pcyhJLE4pKXt2YXIgeT1zKG8uY3VycmVudEtleSxJLE4pO2lmKHkmJnkuYnJlYWspcmV0dXJuIHkuYnJlYWt9fX1lbHNlIGlmKGQ+MCl7aWYoZyYmcil7dmFyIHc9Zy52YWx1ZXNbVFtULmxlbmd0aC0xXV0seT1yKGEuY3VycmVudEtleSx3KTtpZih5JiZ5LmJyZWFrKXJldHVybiB5LmJyZWFrfX1lbHNlIGlmKHQmJm0mJmYhPT0wKXt2YXIgST1tLnZhbHVlc1tiW2IubGVuZ3RoLTFdXSx5PXQoby5jdXJyZW50S2V5LEkpO2lmKHkmJnkuYnJlYWspcmV0dXJuIHkuYnJlYWt9fX1lbHNlIGlmKCFtJiYhZyYmZD09PTApe3ZhciB2PWgubGVuZ3RoLTEseD1ELmxlbmd0aC0xLEM9aFt2XVtiW3ZdXSxWPURbeF1bVFt4XV07aWYoVj09PUMpe2Y9MCx1PW4uc3RlcChvLCEwKSxsPW4uc3RlcChhLCEwKTtjb250aW51ZX19Zj1kLGQ8MD91PW4uc3RlcChvKTpsPW4uc3RlcChhKX1pZih1JiZ0KXJldHVybiBuLmZpbmlzaEN1cnNvcldhbGsobyxhLGksdCk7aWYobCYmcilyZXR1cm4gbi5maW5pc2hDdXJzb3JXYWxrKGEsbyxpLHIpfSxuLmZpbmlzaEN1cnNvcldhbGs9ZnVuY3Rpb24oZSx0LHIscyl7dmFyIGk9bi5jb21wYXJlKGUsdCxyKTtpZihpPT09MCl7aWYoIW4uc3RlcChlKSlyZXR1cm59ZWxzZSBpPDAmJkxlKCExLFxcXCJjdXJzb3Igd2FsayB0ZXJtaW5hdGVkIGVhcmx5XFxcIik7cmV0dXJuIG4uc3RlcFRvRW5kKGUscyl9LG4uc3RlcFRvRW5kPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPSEwO3I7KXt2YXIgcz1lLmxlYWYsaT1lLmxldmVsSW5kaWNlcyxvPWUuY3VycmVudEtleTtpZihzKXt2YXIgYT1zLnZhbHVlc1tpW2kubGVuZ3RoLTFdXSx1PXQobyxhKTtpZih1JiZ1LmJyZWFrKXJldHVybiB1LmJyZWFrfXI9bi5zdGVwKGUpfX0sbi5tYWtlRGlmZkN1cnNvcj1mdW5jdGlvbihlKXt2YXIgdD1lLl9yb290LHI9ZS5oZWlnaHQ7cmV0dXJue2hlaWdodDpyLGludGVybmFsU3BpbmU6W1t0XV0sbGV2ZWxJbmRpY2VzOlswXSxsZWFmOnZvaWQgMCxjdXJyZW50S2V5OnQubWF4S2V5KCl9fSxuLnN0ZXA9ZnVuY3Rpb24oZSx0KXt2YXIgcj1lLmludGVybmFsU3BpbmUscz1lLmxldmVsSW5kaWNlcyxpPWUubGVhZjtpZih0PT09ITB8fGkpe3ZhciBvPXMubGVuZ3RoO2lmKHQ9PT0hMHx8c1tvLTFdPT09MCl7dmFyIGE9ci5sZW5ndGg7aWYoYT09PTApcmV0dXJuITE7Zm9yKHZhciB1PWEtMSxsPXU7bD49MDspe2lmKHNbbF0+MClyZXR1cm4gbDxvLTEmJihlLmxlYWY9dm9pZCAwLHMucG9wKCkpLGw8dSYmKGUuaW50ZXJuYWxTcGluZT1yLnNsaWNlKDAsbCsxKSksZS5jdXJyZW50S2V5PXJbbF1bLS1zW2xdXS5tYXhLZXkoKSwhMDtsLS19cmV0dXJuITF9ZWxzZXt2YXIgZj0tLXNbby0xXTtyZXR1cm4gZS5jdXJyZW50S2V5PWkua2V5c1tmXSwhMH19ZWxzZXt2YXIgZD1yLmxlbmd0aCxtPWQtMSxoPXJbbV1bc1ttXV07aWYoaC5pc0xlYWYpe2UubGVhZj1oO3ZhciBmPXNbZF09aC52YWx1ZXMubGVuZ3RoLTE7ZS5jdXJyZW50S2V5PWgua2V5c1tmXX1lbHNle3ZhciBiPWguY2hpbGRyZW47cltkXT1iO3ZhciBnPWIubGVuZ3RoLTE7c1tkXT1nLGUuY3VycmVudEtleT1iW2ddLm1heEtleSgpfXJldHVybiEwfX0sbi5jb21wYXJlPWZ1bmN0aW9uKGUsdCxyKXt2YXIgcz1lLmhlaWdodCxpPWUuY3VycmVudEtleSxvPWUubGV2ZWxJbmRpY2VzLGE9dC5oZWlnaHQsdT10LmN1cnJlbnRLZXksbD10LmxldmVsSW5kaWNlcyxmPXIodSxpKTtpZihmIT09MClyZXR1cm4gZjt2YXIgZD1zPGE/czphLG09by5sZW5ndGgtKHMtZCksaD1sLmxlbmd0aC0oYS1kKTtyZXR1cm4gbS1ofSxuLnByb3RvdHlwZS5rZXlzPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuZW50cmllcyhlLE1yKTtyZXR1cm4gQW4oZnVuY3Rpb24oKXt2YXIgcj10Lm5leHQoKTtyZXR1cm4gci52YWx1ZSYmKHIudmFsdWU9ci52YWx1ZVswXSkscn0pfSxuLnByb3RvdHlwZS52YWx1ZXM9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5lbnRyaWVzKGUsTXIpO3JldHVybiBBbihmdW5jdGlvbigpe3ZhciByPXQubmV4dCgpO3JldHVybiByLnZhbHVlJiYoci52YWx1ZT1yLnZhbHVlWzFdKSxyfSl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLnByb3RvdHlwZSxcXFwibWF4Tm9kZVNpemVcXFwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbWF4Tm9kZVNpemV9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksbi5wcm90b3R5cGUubWluS2V5PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Jvb3QubWluS2V5KCl9LG4ucHJvdG90eXBlLm1heEtleT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9yb290Lm1heEtleSgpfSxuLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3RoaXMuX3Jvb3QuaXNTaGFyZWQ9ITA7dmFyIGU9bmV3IG4odm9pZCAwLHRoaXMuX2NvbXBhcmUsdGhpcy5fbWF4Tm9kZVNpemUpO3JldHVybiBlLl9yb290PXRoaXMuX3Jvb3QsZS5fc2l6ZT10aGlzLl9zaXplLGV9LG4ucHJvdG90eXBlLmdyZWVkeUNsb25lPWZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBuKHZvaWQgMCx0aGlzLl9jb21wYXJlLHRoaXMuX21heE5vZGVTaXplKTtyZXR1cm4gdC5fcm9vdD10aGlzLl9yb290LmdyZWVkeUNsb25lKGUpLHQuX3NpemU9dGhpcy5fc2l6ZSx0fSxuLnByb3RvdHlwZS50b0FycmF5PWZ1bmN0aW9uKGUpe2U9PT12b2lkIDAmJihlPTIxNDc0ODM2NDcpO3ZhciB0PXRoaXMubWluS2V5KCkscj10aGlzLm1heEtleSgpO3JldHVybiB0IT09dm9pZCAwP3RoaXMuZ2V0UmFuZ2UodCxyLCEwLGUpOltdfSxuLnByb3RvdHlwZS5rZXlzQXJyYXk9ZnVuY3Rpb24oKXt2YXIgZT1bXTtyZXR1cm4gdGhpcy5fcm9vdC5mb3JSYW5nZSh0aGlzLm1pbktleSgpLHRoaXMubWF4S2V5KCksITAsITEsdGhpcywwLGZ1bmN0aW9uKHQscil7ZS5wdXNoKHQpfSksZX0sbi5wcm90b3R5cGUudmFsdWVzQXJyYXk9ZnVuY3Rpb24oKXt2YXIgZT1bXTtyZXR1cm4gdGhpcy5fcm9vdC5mb3JSYW5nZSh0aGlzLm1pbktleSgpLHRoaXMubWF4S2V5KCksITAsITEsdGhpcywwLGZ1bmN0aW9uKHQscil7ZS5wdXNoKHIpfSksZX0sbi5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50b0FycmF5KCkudG9TdHJpbmcoKX0sbi5wcm90b3R5cGUuc2V0SWZOb3RQcmVzZW50PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuc2V0KGUsdCwhMSl9LG4ucHJvdG90eXBlLm5leHRIaWdoZXJQYWlyPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ9dHx8W10sZT09PXZvaWQgMD90aGlzLl9yb290Lm1pblBhaXIodCk6dGhpcy5fcm9vdC5nZXRQYWlyT3JOZXh0SGlnaGVyKGUsdGhpcy5fY29tcGFyZSwhMSx0KX0sbi5wcm90b3R5cGUubmV4dEhpZ2hlcktleT1mdW5jdGlvbihlKXt2YXIgdD10aGlzLm5leHRIaWdoZXJQYWlyKGUsTXIpO3JldHVybiB0JiZ0WzBdfSxuLnByb3RvdHlwZS5uZXh0TG93ZXJQYWlyPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ9dHx8W10sZT09PXZvaWQgMD90aGlzLl9yb290Lm1heFBhaXIodCk6dGhpcy5fcm9vdC5nZXRQYWlyT3JOZXh0TG93ZXIoZSx0aGlzLl9jb21wYXJlLCExLHQpfSxuLnByb3RvdHlwZS5uZXh0TG93ZXJLZXk9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5uZXh0TG93ZXJQYWlyKGUsTXIpO3JldHVybiB0JiZ0WzBdfSxuLnByb3RvdHlwZS5nZXRQYWlyT3JOZXh0TG93ZXI9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fcm9vdC5nZXRQYWlyT3JOZXh0TG93ZXIoZSx0aGlzLl9jb21wYXJlLCEwLHR8fFtdKX0sbi5wcm90b3R5cGUuZ2V0UGFpck9yTmV4dEhpZ2hlcj1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLl9yb290LmdldFBhaXJPck5leHRIaWdoZXIoZSx0aGlzLl9jb21wYXJlLCEwLHR8fFtdKX0sbi5wcm90b3R5cGUuY2hhbmdlSWZQcmVzZW50PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuZWRpdFJhbmdlKGUsZSwhMCxmdW5jdGlvbihyLHMpe3JldHVybnt2YWx1ZTp0fX0pIT09MH0sbi5wcm90b3R5cGUuZ2V0UmFuZ2U9ZnVuY3Rpb24oZSx0LHIscyl7cz09PXZvaWQgMCYmKHM9NjcxMDg4NjMpO3ZhciBpPVtdO3JldHVybiB0aGlzLl9yb290LmZvclJhbmdlKGUsdCxyLCExLHRoaXMsMCxmdW5jdGlvbihvLGEpe3JldHVybiBpLnB1c2goW28sYV0pLGkubGVuZ3RoPnM/eGY6dm9pZCAwfSksaX0sbi5wcm90b3R5cGUuc2V0UGFpcnM9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIHI9MCxzPTA7czxlLmxlbmd0aDtzKyspdGhpcy5zZXQoZVtzXVswXSxlW3NdWzFdLHQpJiZyKys7cmV0dXJuIHJ9LG4ucHJvdG90eXBlLmZvclJhbmdlPWZ1bmN0aW9uKGUsdCxyLHMsaSl7dmFyIG89dGhpcy5fcm9vdC5mb3JSYW5nZShlLHQsciwhMSx0aGlzLGl8fDAscyk7cmV0dXJuIHR5cGVvZiBvPT1cXFwibnVtYmVyXFxcIj9vOm8uYnJlYWt9LG4ucHJvdG90eXBlLmVkaXRSYW5nZT1mdW5jdGlvbihlLHQscixzLGkpe3ZhciBvPXRoaXMuX3Jvb3Q7by5pc1NoYXJlZCYmKHRoaXMuX3Jvb3Q9bz1vLmNsb25lKCkpO3RyeXt2YXIgYT1vLmZvclJhbmdlKGUsdCxyLCEwLHRoaXMsaXx8MCxzKTtyZXR1cm4gdHlwZW9mIGE9PVxcXCJudW1iZXJcXFwiP2E6YS5icmVha31maW5hbGx5e2Zvcih2YXIgdT12b2lkIDA7by5rZXlzLmxlbmd0aDw9MSYmIW8uaXNMZWFmOyl1fHwodT1vLmlzU2hhcmVkKSx0aGlzLl9yb290PW89by5rZXlzLmxlbmd0aD09PTA/Zm86by5jaGlsZHJlblswXTt1JiYoby5pc1NoYXJlZD0hMCl9fSxuLnByb3RvdHlwZS5lZGl0QWxsPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuZWRpdFJhbmdlKHRoaXMubWluS2V5KCksdGhpcy5tYXhLZXkoKSwhMCxlLHQpfSxuLnByb3RvdHlwZS5kZWxldGVSYW5nZT1mdW5jdGlvbihlLHQscil7cmV0dXJuIHRoaXMuZWRpdFJhbmdlKGUsdCxyLE11KX0sbi5wcm90b3R5cGUuZGVsZXRlS2V5cz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MCxyPTA7dDxlLmxlbmd0aDt0KyspdGhpcy5kZWxldGUoZVt0XSkmJnIrKztyZXR1cm4gcn0sT2JqZWN0LmRlZmluZVByb3BlcnR5KG4ucHJvdG90eXBlLFxcXCJoZWlnaHRcXFwiLHtnZXQ6ZnVuY3Rpb24oKXtmb3IodmFyIGU9dGhpcy5fcm9vdCx0PS0xO2U7KXQrKyxlPWUuaXNMZWFmP3ZvaWQgMDplLmNoaWxkcmVuWzBdO3JldHVybiB0fSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLG4ucHJvdG90eXBlLmZyZWV6ZT1mdW5jdGlvbigpe3ZhciBlPXRoaXM7ZS5jbGVhcj1lLnNldD1lLmVkaXRSYW5nZT1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcihcXFwiQXR0ZW1wdGVkIHRvIG1vZGlmeSBhIGZyb3plbiBCVHJlZVxcXCIpfX0sbi5wcm90b3R5cGUudW5mcmVlemU9ZnVuY3Rpb24oKXtkZWxldGUgdGhpcy5jbGVhcixkZWxldGUgdGhpcy5zZXQsZGVsZXRlIHRoaXMuZWRpdFJhbmdlfSxPYmplY3QuZGVmaW5lUHJvcGVydHkobi5wcm90b3R5cGUsXFxcImlzRnJvemVuXFxcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaGFzT3duUHJvcGVydHkoXFxcImVkaXRSYW5nZVxcXCIpfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLG4ucHJvdG90eXBlLmNoZWNrVmFsaWQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9yb290LmNoZWNrVmFsaWQoMCx0aGlzLDApO0xlKGU9PT10aGlzLnNpemUsXFxcInNpemUgbWlzbWF0Y2g6IGNvdW50ZWQgXFxcIixlLFxcXCJidXQgc3RvcmVkXFxcIix0aGlzLnNpemUpfSxufSgpO05lLmRlZmF1bHQ9bHQ7ZnVuY3Rpb24gQ2Yobil7cmV0dXJuIG59TmUuYXNTZXQ9Q2Y7U3ltYm9sJiZTeW1ib2wuaXRlcmF0b3ImJihsdC5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXT1sdC5wcm90b3R5cGUuZW50cmllcyk7bHQucHJvdG90eXBlLndoZXJlPWx0LnByb3RvdHlwZS5maWx0ZXI7bHQucHJvdG90eXBlLnNldFJhbmdlPWx0LnByb3RvdHlwZS5zZXRQYWlycztsdC5wcm90b3R5cGUuYWRkPWx0LnByb3RvdHlwZS5zZXQ7ZnVuY3Rpb24gQW4obil7bj09PXZvaWQgMCYmKG49ZnVuY3Rpb24oKXtyZXR1cm57ZG9uZTohMCx2YWx1ZTp2b2lkIDB9fSk7dmFyIGU9e25leHQ6bn07cmV0dXJuIFN5bWJvbCYmU3ltYm9sLml0ZXJhdG9yJiYoZVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxlfXZhciBQdT1mdW5jdGlvbigpe2Z1bmN0aW9uIG4oZSx0KXtlPT09dm9pZCAwJiYoZT1bXSksdGhpcy5rZXlzPWUsdGhpcy52YWx1ZXM9dHx8cGUsdGhpcy5pc1NoYXJlZD12b2lkIDB9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLnByb3RvdHlwZSxcXFwiaXNMZWFmXFxcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2hpbGRyZW49PT12b2lkIDB9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksbi5wcm90b3R5cGUubWF4S2V5PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMua2V5c1t0aGlzLmtleXMubGVuZ3RoLTFdfSxuLnByb3RvdHlwZS5pbmRleE9mPWZ1bmN0aW9uKGUsdCxyKXtmb3IodmFyIHM9dGhpcy5rZXlzLGk9MCxvPXMubGVuZ3RoLGE9bz4+MTtpPG87KXt2YXIgdT1yKHNbYV0sZSk7aWYodTwwKWk9YSsxO2Vsc2UgaWYodT4wKW89YTtlbHNle2lmKHU9PT0wKXJldHVybiBhO2lmKGU9PT1lKXJldHVybiBzLmxlbmd0aDt0aHJvdyBuZXcgRXJyb3IoXFxcIkJUcmVlOiBOYU4gd2FzIHVzZWQgYXMgYSBrZXlcXFwiKX1hPWkrbz4+MX1yZXR1cm4gYV50fSxuLnByb3RvdHlwZS5taW5LZXk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5rZXlzWzBdfSxuLnByb3RvdHlwZS5taW5QYWlyPWZ1bmN0aW9uKGUpe2lmKHRoaXMua2V5cy5sZW5ndGghPT0wKXJldHVybiBlWzBdPXRoaXMua2V5c1swXSxlWzFdPXRoaXMudmFsdWVzWzBdLGV9LG4ucHJvdG90eXBlLm1heFBhaXI9ZnVuY3Rpb24oZSl7aWYodGhpcy5rZXlzLmxlbmd0aCE9PTApe3ZhciB0PXRoaXMua2V5cy5sZW5ndGgtMTtyZXR1cm4gZVswXT10aGlzLmtleXNbdF0sZVsxXT10aGlzLnZhbHVlc1t0XSxlfX0sbi5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnZhbHVlcztyZXR1cm4gbmV3IG4odGhpcy5rZXlzLnNsaWNlKDApLGU9PT1wZT9lOmUuc2xpY2UoMCkpfSxuLnByb3RvdHlwZS5ncmVlZHlDbG9uZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5pc1NoYXJlZCYmIWU/dGhpczp0aGlzLmNsb25lKCl9LG4ucHJvdG90eXBlLmdldD1mdW5jdGlvbihlLHQscil7dmFyIHM9dGhpcy5pbmRleE9mKGUsLTEsci5fY29tcGFyZSk7cmV0dXJuIHM8MD90OnRoaXMudmFsdWVzW3NdfSxuLnByb3RvdHlwZS5nZXRQYWlyT3JOZXh0TG93ZXI9ZnVuY3Rpb24oZSx0LHIscyl7dmFyIGk9dGhpcy5pbmRleE9mKGUsLTEsdCksbz1pPDA/fmktMTpyP2k6aS0xO2lmKG8+PTApcmV0dXJuIHNbMF09dGhpcy5rZXlzW29dLHNbMV09dGhpcy52YWx1ZXNbb10sc30sbi5wcm90b3R5cGUuZ2V0UGFpck9yTmV4dEhpZ2hlcj1mdW5jdGlvbihlLHQscixzKXt2YXIgaT10aGlzLmluZGV4T2YoZSwtMSx0KSxvPWk8MD9+aTpyP2k6aSsxLGE9dGhpcy5rZXlzO2lmKG88YS5sZW5ndGgpcmV0dXJuIHNbMF09YVtvXSxzWzFdPXRoaXMudmFsdWVzW29dLHN9LG4ucHJvdG90eXBlLmNoZWNrVmFsaWQ9ZnVuY3Rpb24oZSx0LHIpe3ZhciBzPXRoaXMua2V5cy5sZW5ndGgsaT10aGlzLnZhbHVlcy5sZW5ndGg7cmV0dXJuIExlKHRoaXMudmFsdWVzPT09cGU/czw9aTpzPT09aSxcXFwia2V5cy92YWx1ZXMgbGVuZ3RoIG1pc21hdGNoOiBkZXB0aFxcXCIsZSxcXFwid2l0aCBsZW5ndGhzXFxcIixzLGksXFxcImFuZCBiYXNlSW5kZXhcXFwiLHIpLExlKGU9PTB8fHM+MCxcXFwiZW1wdHkgbGVhZiBhdCBkZXB0aFxcXCIsZSxcXFwiYW5kIGJhc2VJbmRleFxcXCIsciksc30sbi5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKGUsdCxyLHMpe3ZhciBpPXRoaXMuaW5kZXhPZihlLC0xLHMuX2NvbXBhcmUpO2lmKGk8MCl7aWYoaT1+aSxzLl9zaXplKyssdGhpcy5rZXlzLmxlbmd0aDxzLl9tYXhOb2RlU2l6ZSlyZXR1cm4gdGhpcy5pbnNlcnRJbkxlYWYoaSxlLHQscyk7dmFyIG89dGhpcy5zcGxpdE9mZlJpZ2h0U2lkZSgpLGE9dGhpcztyZXR1cm4gaT50aGlzLmtleXMubGVuZ3RoJiYoaS09dGhpcy5rZXlzLmxlbmd0aCxhPW8pLGEuaW5zZXJ0SW5MZWFmKGksZSx0LHMpLG99ZWxzZSByZXR1cm4gciE9PSExJiYodCE9PXZvaWQgMCYmdGhpcy5yZWlmeVZhbHVlcygpLHRoaXMua2V5c1tpXT1lLHRoaXMudmFsdWVzW2ldPXQpLCExfSxuLnByb3RvdHlwZS5yZWlmeVZhbHVlcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlcz09PXBlP3RoaXMudmFsdWVzPXRoaXMudmFsdWVzLnNsaWNlKDAsdGhpcy5rZXlzLmxlbmd0aCk6dGhpcy52YWx1ZXN9LG4ucHJvdG90eXBlLmluc2VydEluTGVhZj1mdW5jdGlvbihlLHQscixzKXtpZih0aGlzLmtleXMuc3BsaWNlKGUsMCx0KSx0aGlzLnZhbHVlcz09PXBlKXtmb3IoO3BlLmxlbmd0aDxzLl9tYXhOb2RlU2l6ZTspcGUucHVzaCh2b2lkIDApO2lmKHI9PT12b2lkIDApcmV0dXJuITA7dGhpcy52YWx1ZXM9cGUuc2xpY2UoMCx0aGlzLmtleXMubGVuZ3RoLTEpfXJldHVybiB0aGlzLnZhbHVlcy5zcGxpY2UoZSwwLHIpLCEwfSxuLnByb3RvdHlwZS50YWtlRnJvbVJpZ2h0PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMudmFsdWVzO2UudmFsdWVzPT09cGU/dCE9PXBlJiZ0LnB1c2godm9pZCAwKToodD10aGlzLnJlaWZ5VmFsdWVzKCksdC5wdXNoKGUudmFsdWVzLnNoaWZ0KCkpKSx0aGlzLmtleXMucHVzaChlLmtleXMuc2hpZnQoKSl9LG4ucHJvdG90eXBlLnRha2VGcm9tTGVmdD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLnZhbHVlcztlLnZhbHVlcz09PXBlP3QhPT1wZSYmdC51bnNoaWZ0KHZvaWQgMCk6KHQ9dGhpcy5yZWlmeVZhbHVlcygpLHQudW5zaGlmdChlLnZhbHVlcy5wb3AoKSkpLHRoaXMua2V5cy51bnNoaWZ0KGUua2V5cy5wb3AoKSl9LG4ucHJvdG90eXBlLnNwbGl0T2ZmUmlnaHRTaWRlPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5rZXlzLmxlbmd0aD4+MSx0PXRoaXMua2V5cy5zcGxpY2UoZSkscj10aGlzLnZhbHVlcz09PXBlP3BlOnRoaXMudmFsdWVzLnNwbGljZShlKTtyZXR1cm4gbmV3IG4odCxyKX0sbi5wcm90b3R5cGUuZm9yUmFuZ2U9ZnVuY3Rpb24oZSx0LHIscyxpLG8sYSl7dmFyIHU9aS5fY29tcGFyZSxsLGY7aWYodD09PWUpe2lmKCFyfHwoZj0obD10aGlzLmluZGV4T2YoZSwtMSx1KSkrMSxsPDApKXJldHVybiBvfWVsc2UgbD10aGlzLmluZGV4T2YoZSwwLHUpLGY9dGhpcy5pbmRleE9mKHQsLTEsdSksZjwwP2Y9fmY6cj09PSEwJiZmKys7dmFyIGQ9dGhpcy5rZXlzLG09dGhpcy52YWx1ZXM7aWYoYSE9PXZvaWQgMClmb3IodmFyIGg9bDtoPGY7aCsrKXt2YXIgYj1kW2hdLGc9YShiLG1baF0sbysrKTtpZihnIT09dm9pZCAwKXtpZihzPT09ITApe2lmKGIhPT1kW2hdfHx0aGlzLmlzU2hhcmVkPT09ITApdGhyb3cgbmV3IEVycm9yKFxcXCJCVHJlZSBpbGxlZ2FsbHkgY2hhbmdlZCBvciBjbG9uZWQgaW4gZWRpdFJhbmdlXFxcIik7Zy5kZWxldGU/KHRoaXMua2V5cy5zcGxpY2UoaCwxKSx0aGlzLnZhbHVlcyE9PXBlJiZ0aGlzLnZhbHVlcy5zcGxpY2UoaCwxKSxpLl9zaXplLS0saC0tLGYtLSk6Zy5oYXNPd25Qcm9wZXJ0eShcXFwidmFsdWVcXFwiKSYmKG1baF09Zy52YWx1ZSl9aWYoZy5icmVhayE9PXZvaWQgMClyZXR1cm4gZ319ZWxzZSBvKz1mLWw7cmV0dXJuIG99LG4ucHJvdG90eXBlLm1lcmdlU2libGluZz1mdW5jdGlvbihlLHQpe2lmKHRoaXMua2V5cy5wdXNoLmFwcGx5KHRoaXMua2V5cyxlLmtleXMpLHRoaXMudmFsdWVzPT09cGUpe2lmKGUudmFsdWVzPT09cGUpcmV0dXJuO3RoaXMudmFsdWVzPXRoaXMudmFsdWVzLnNsaWNlKDAsdGhpcy5rZXlzLmxlbmd0aCl9dGhpcy52YWx1ZXMucHVzaC5hcHBseSh0aGlzLnZhbHVlcyxlLnJlaWZ5VmFsdWVzKCkpfSxufSgpLHZmPWZ1bmN0aW9uKG4pe1NmKGUsbik7ZnVuY3Rpb24gZSh0LHIpe3ZhciBzPXRoaXM7aWYoIXIpe3I9W107Zm9yKHZhciBpPTA7aTx0Lmxlbmd0aDtpKyspcltpXT10W2ldLm1heEtleSgpfXJldHVybiBzPW4uY2FsbCh0aGlzLHIpfHx0aGlzLHMuY2hpbGRyZW49dCxzfXJldHVybiBlLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLmNoaWxkcmVuLnNsaWNlKDApLHI9MDtyPHQubGVuZ3RoO3IrKyl0W3JdLmlzU2hhcmVkPSEwO3JldHVybiBuZXcgZSh0LHRoaXMua2V5cy5zbGljZSgwKSl9LGUucHJvdG90eXBlLmdyZWVkeUNsb25lPWZ1bmN0aW9uKHQpe2lmKHRoaXMuaXNTaGFyZWQmJiF0KXJldHVybiB0aGlzO2Zvcih2YXIgcj1uZXcgZSh0aGlzLmNoaWxkcmVuLnNsaWNlKDApLHRoaXMua2V5cy5zbGljZSgwKSkscz0wO3M8ci5jaGlsZHJlbi5sZW5ndGg7cysrKXIuY2hpbGRyZW5bc109ci5jaGlsZHJlbltzXS5ncmVlZHlDbG9uZSh0KTtyZXR1cm4gcn0sZS5wcm90b3R5cGUubWluS2V5PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2hpbGRyZW5bMF0ubWluS2V5KCl9LGUucHJvdG90eXBlLm1pblBhaXI9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY2hpbGRyZW5bMF0ubWluUGFpcih0KX0sZS5wcm90b3R5cGUubWF4UGFpcj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jaGlsZHJlblt0aGlzLmNoaWxkcmVuLmxlbmd0aC0xXS5tYXhQYWlyKHQpfSxlLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCxyLHMpe3ZhciBpPXRoaXMuaW5kZXhPZih0LDAscy5fY29tcGFyZSksbz10aGlzLmNoaWxkcmVuO3JldHVybiBpPG8ubGVuZ3RoP29baV0uZ2V0KHQscixzKTp2b2lkIDB9LGUucHJvdG90eXBlLmdldFBhaXJPck5leHRMb3dlcj1mdW5jdGlvbih0LHIscyxpKXt2YXIgbz10aGlzLmluZGV4T2YodCwwLHIpLGE9dGhpcy5jaGlsZHJlbjtpZihvPj1hLmxlbmd0aClyZXR1cm4gdGhpcy5tYXhQYWlyKGkpO3ZhciB1PWFbb10uZ2V0UGFpck9yTmV4dExvd2VyKHQscixzLGkpO3JldHVybiB1PT09dm9pZCAwJiZvPjA/YVtvLTFdLm1heFBhaXIoaSk6dX0sZS5wcm90b3R5cGUuZ2V0UGFpck9yTmV4dEhpZ2hlcj1mdW5jdGlvbih0LHIscyxpKXt2YXIgbz10aGlzLmluZGV4T2YodCwwLHIpLGE9dGhpcy5jaGlsZHJlbix1PWEubGVuZ3RoO2lmKCEobz49dSkpe3ZhciBsPWFbb10uZ2V0UGFpck9yTmV4dEhpZ2hlcih0LHIscyxpKTtyZXR1cm4gbD09PXZvaWQgMCYmbzx1LTE/YVtvKzFdLm1pblBhaXIoaSk6bH19LGUucHJvdG90eXBlLmNoZWNrVmFsaWQ9ZnVuY3Rpb24odCxyLHMpe3ZhciBpPXRoaXMua2V5cy5sZW5ndGgsbz10aGlzLmNoaWxkcmVuLmxlbmd0aDtMZShpPT09byxcXFwia2V5cy9jaGlsZHJlbiBsZW5ndGggbWlzbWF0Y2g6IGRlcHRoXFxcIix0LFxcXCJsZW5ndGhzXFxcIixpLG8sXFxcImJhc2VJbmRleFxcXCIscyksTGUoaT4xfHx0PjAsXFxcImludGVybmFsIG5vZGUgaGFzIGxlbmd0aFxcXCIsaSxcXFwiYXQgZGVwdGhcXFwiLHQsXFxcImJhc2VJbmRleFxcXCIscyk7Zm9yKHZhciBhPTAsdT10aGlzLmNoaWxkcmVuLGw9dGhpcy5rZXlzLGY9MCxkPTA7ZDxvO2QrKylhKz11W2RdLmNoZWNrVmFsaWQodCsxLHIscythKSxmKz11W2RdLmtleXMubGVuZ3RoLExlKGE+PWYsXFxcInd0ZlxcXCIscyksTGUoZD09PTB8fHVbZC0xXS5jb25zdHJ1Y3Rvcj09PXVbZF0uY29uc3RydWN0b3IsXFxcInR5cGUgbWlzbWF0Y2gsIGJhc2VJbmRleDpcXFwiLHMpLHVbZF0ubWF4S2V5KCkhPWxbZF0mJkxlKCExLFxcXCJrZXlzW1xcXCIsZCxcXFwiXSA9XFxcIixsW2RdLFxcXCJpcyB3cm9uZywgc2hvdWxkIGJlIFxcXCIsdVtkXS5tYXhLZXkoKSxcXFwiYXQgZGVwdGhcXFwiLHQsXFxcImJhc2VJbmRleFxcXCIscyksZD09PTB8fHIuX2NvbXBhcmUobFtkLTFdLGxbZF0pPDB8fExlKCExLFxcXCJzb3J0IHZpb2xhdGlvbiBhdCBkZXB0aFxcXCIsdCxcXFwiaW5kZXhcXFwiLGQsXFxcImtleXNcXFwiLGxbZC0xXSxsW2RdKTt2YXIgbT1mPT09MDtyZXR1cm4obXx8Zj5yLm1heE5vZGVTaXplKm8pJiZMZSghMSxtP1xcXCJ0b28gZmV3XFxcIjpcXFwidG9vIG1hbnlcXFwiLFxcXCJjaGlsZHJlbiAoXFxcIixmLGEsXFxcIikgYXQgZGVwdGhcXFwiLHQsXFxcIm1heE5vZGVTaXplOlxcXCIsci5tYXhOb2RlU2l6ZSxcXFwiY2hpbGRyZW4ubGVuZ3RoOlxcXCIsbyxcXFwiYmFzZUluZGV4OlxcXCIscyksYX0sZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQscixzLGkpe3ZhciBvPXRoaXMuY2hpbGRyZW4sYT1pLl9tYXhOb2RlU2l6ZSx1PWkuX2NvbXBhcmUsbD1NYXRoLm1pbih0aGlzLmluZGV4T2YodCwwLHUpLG8ubGVuZ3RoLTEpLGY9b1tsXTtpZihmLmlzU2hhcmVkJiYob1tsXT1mPWYuY2xvbmUoKSksZi5rZXlzLmxlbmd0aD49YSl7dmFyIGQ7bD4wJiYoZD1vW2wtMV0pLmtleXMubGVuZ3RoPGEmJnUoZi5rZXlzWzBdLHQpPDA/KGQuaXNTaGFyZWQmJihvW2wtMV09ZD1kLmNsb25lKCkpLGQudGFrZUZyb21SaWdodChmKSx0aGlzLmtleXNbbC0xXT1kLm1heEtleSgpKTooZD1vW2wrMV0pIT09dm9pZCAwJiZkLmtleXMubGVuZ3RoPGEmJnUoZi5tYXhLZXkoKSx0KTwwJiYoZC5pc1NoYXJlZCYmKG9bbCsxXT1kPWQuY2xvbmUoKSksZC50YWtlRnJvbUxlZnQoZiksdGhpcy5rZXlzW2xdPW9bbF0ubWF4S2V5KCkpfXZhciBtPWYuc2V0KHQscixzLGkpO2lmKG09PT0hMSlyZXR1cm4hMTtpZih0aGlzLmtleXNbbF09Zi5tYXhLZXkoKSxtPT09ITApcmV0dXJuITA7aWYodGhpcy5rZXlzLmxlbmd0aDxhKXJldHVybiB0aGlzLmluc2VydChsKzEsbSksITA7dmFyIGg9dGhpcy5zcGxpdE9mZlJpZ2h0U2lkZSgpLGI9dGhpcztyZXR1cm4gdShtLm1heEtleSgpLHRoaXMubWF4S2V5KCkpPjAmJihiPWgsbC09dGhpcy5rZXlzLmxlbmd0aCksYi5pbnNlcnQobCsxLG0pLGh9LGUucHJvdG90eXBlLmluc2VydD1mdW5jdGlvbih0LHIpe3RoaXMuY2hpbGRyZW4uc3BsaWNlKHQsMCxyKSx0aGlzLmtleXMuc3BsaWNlKHQsMCxyLm1heEtleSgpKX0sZS5wcm90b3R5cGUuc3BsaXRPZmZSaWdodFNpZGU9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmNoaWxkcmVuLmxlbmd0aD4+MTtyZXR1cm4gbmV3IGUodGhpcy5jaGlsZHJlbi5zcGxpY2UodCksdGhpcy5rZXlzLnNwbGljZSh0KSl9LGUucHJvdG90eXBlLnRha2VGcm9tUmlnaHQ9ZnVuY3Rpb24odCl7dGhpcy5rZXlzLnB1c2godC5rZXlzLnNoaWZ0KCkpLHRoaXMuY2hpbGRyZW4ucHVzaCh0LmNoaWxkcmVuLnNoaWZ0KCkpfSxlLnByb3RvdHlwZS50YWtlRnJvbUxlZnQ9ZnVuY3Rpb24odCl7dGhpcy5rZXlzLnVuc2hpZnQodC5rZXlzLnBvcCgpKSx0aGlzLmNoaWxkcmVuLnVuc2hpZnQodC5jaGlsZHJlbi5wb3AoKSl9LGUucHJvdG90eXBlLmZvclJhbmdlPWZ1bmN0aW9uKHQscixzLGksbyxhLHUpe3ZhciBsPW8uX2NvbXBhcmUsZj10aGlzLmtleXMsZD10aGlzLmNoaWxkcmVuLG09dGhpcy5pbmRleE9mKHQsMCxsKSxoPW0sYj1NYXRoLm1pbihyPT09dD9tOnRoaXMuaW5kZXhPZihyLDAsbCksZi5sZW5ndGgtMSk7aWYoaSl7aWYoaDw9Yil0cnl7Zm9yKDtoPD1iO2grKyl7ZFtoXS5pc1NoYXJlZCYmKGRbaF09ZFtoXS5jbG9uZSgpKTt2YXIgZz1kW2hdLmZvclJhbmdlKHQscixzLGksbyxhLHUpO2lmKGZbaF09ZFtoXS5tYXhLZXkoKSx0eXBlb2YgZyE9XFxcIm51bWJlclxcXCIpcmV0dXJuIGc7YT1nfX1maW5hbGx5e3ZhciBEPW8uX21heE5vZGVTaXplPj4xO2ZvcihtPjAmJm0tLSxoPWI7aD49bTtoLS0pZFtoXS5rZXlzLmxlbmd0aDw9RCYmKGRbaF0ua2V5cy5sZW5ndGghPT0wP3RoaXMudHJ5TWVyZ2UoaCxvLl9tYXhOb2RlU2l6ZSk6KGYuc3BsaWNlKGgsMSksZC5zcGxpY2UoaCwxKSkpO2QubGVuZ3RoIT09MCYmZFswXS5rZXlzLmxlbmd0aD09PTAmJkxlKCExLFxcXCJlbXB0aW5lc3MgYnVnXFxcIil9fWVsc2UgZm9yKDtoPD1iO2grKyl7dmFyIGc9ZFtoXS5mb3JSYW5nZSh0LHIscyxpLG8sYSx1KTtpZih0eXBlb2YgZyE9XFxcIm51bWJlclxcXCIpcmV0dXJuIGc7YT1nfXJldHVybiBhfSxlLnByb3RvdHlwZS50cnlNZXJnZT1mdW5jdGlvbih0LHIpe3ZhciBzPXRoaXMuY2hpbGRyZW47cmV0dXJuIHQ+PTAmJnQrMTxzLmxlbmd0aCYmc1t0XS5rZXlzLmxlbmd0aCtzW3QrMV0ua2V5cy5sZW5ndGg8PXI/KHNbdF0uaXNTaGFyZWQmJihzW3RdPXNbdF0uY2xvbmUoKSksc1t0XS5tZXJnZVNpYmxpbmcoc1t0KzFdLHIpLHMuc3BsaWNlKHQrMSwxKSx0aGlzLmtleXMuc3BsaWNlKHQrMSwxKSx0aGlzLmtleXNbdF09c1t0XS5tYXhLZXkoKSwhMCk6ITF9LGUucHJvdG90eXBlLm1lcmdlU2libGluZz1mdW5jdGlvbih0LHIpe3ZhciBzPXRoaXMua2V5cy5sZW5ndGg7dGhpcy5rZXlzLnB1c2guYXBwbHkodGhpcy5rZXlzLHQua2V5cyk7dmFyIGk9dC5jaGlsZHJlbjtpZih0aGlzLmNoaWxkcmVuLnB1c2guYXBwbHkodGhpcy5jaGlsZHJlbixpKSx0LmlzU2hhcmVkJiYhdGhpcy5pc1NoYXJlZClmb3IodmFyIG89MDtvPGkubGVuZ3RoO28rKylpW29dLmlzU2hhcmVkPSEwO3RoaXMudHJ5TWVyZ2Uocy0xLHIpfSxlfShQdSkscGU9W10sJHU9e2RlbGV0ZTohMH0sTXU9ZnVuY3Rpb24oKXtyZXR1cm4gJHV9LHhmPXticmVhazohMH0sZm89ZnVuY3Rpb24oKXt2YXIgbj1uZXcgUHU7cmV0dXJuIG4uaXNTaGFyZWQ9ITAsbn0oKSxfdT1bXSxNcj1bXTtmdW5jdGlvbiBMZShuKXtmb3IodmFyIGU9W10sdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0KyspZVt0LTFdPWFyZ3VtZW50c1t0XTtpZighbil0aHJvdyBlLnVuc2hpZnQoXFxcIkIrIHRyZWVcXFwiKSxuZXcgRXJyb3IoZS5qb2luKFxcXCIgXFxcIikpfU5lLkVtcHR5QlRyZWU9ZnVuY3Rpb24oKXt2YXIgbj1uZXcgbHQ7cmV0dXJuIG4uZnJlZXplKCksbn0oKX0pO3ZhciBtdD1jbGFzcyBleHRlbmRzIEVycm9ye30sVXI9Y2xhc3MgZXh0ZW5kcyBtdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihgSW52YWxpZCBEYXRlVGltZTogJHtlLnRvTWVzc2FnZSgpfWApfX0sS3I9Y2xhc3MgZXh0ZW5kcyBtdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihgSW52YWxpZCBJbnRlcnZhbDogJHtlLnRvTWVzc2FnZSgpfWApfX0sV3I9Y2xhc3MgZXh0ZW5kcyBtdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihgSW52YWxpZCBEdXJhdGlvbjogJHtlLnRvTWVzc2FnZSgpfWApfX0scHQ9Y2xhc3MgZXh0ZW5kcyBtdHt9LHNuPWNsYXNzIGV4dGVuZHMgbXR7Y29uc3RydWN0b3IoZSl7c3VwZXIoYEludmFsaWQgdW5pdCAke2V9YCl9fSxmZT1jbGFzcyBleHRlbmRzIG10e30samU9Y2xhc3MgZXh0ZW5kcyBtdHtjb25zdHJ1Y3Rvcigpe3N1cGVyKFxcXCJab25lIGlzIGFuIGFic3RyYWN0IGNsYXNzXFxcIil9fTt2YXIgXz1cXFwibnVtZXJpY1xcXCIscWU9XFxcInNob3J0XFxcIix4ZT1cXFwibG9uZ1xcXCIsb249e3llYXI6Xyxtb250aDpfLGRheTpffSwkbj17eWVhcjpfLG1vbnRoOnFlLGRheTpffSxHcz17eWVhcjpfLG1vbnRoOnFlLGRheTpfLHdlZWtkYXk6cWV9LFJuPXt5ZWFyOl8sbW9udGg6eGUsZGF5Ol99LGpuPXt5ZWFyOl8sbW9udGg6eGUsZGF5Ol8sd2Vla2RheTp4ZX0scW49e2hvdXI6XyxtaW51dGU6X30sVm49e2hvdXI6XyxtaW51dGU6XyxzZWNvbmQ6X30sVW49e2hvdXI6XyxtaW51dGU6XyxzZWNvbmQ6Xyx0aW1lWm9uZU5hbWU6cWV9LEtuPXtob3VyOl8sbWludXRlOl8sc2Vjb25kOl8sdGltZVpvbmVOYW1lOnhlfSxXbj17aG91cjpfLG1pbnV0ZTpfLGhvdXJDeWNsZTpcXFwiaDIzXFxcIn0sSG49e2hvdXI6XyxtaW51dGU6XyxzZWNvbmQ6Xyxob3VyQ3ljbGU6XFxcImgyM1xcXCJ9LEpuPXtob3VyOl8sbWludXRlOl8sc2Vjb25kOl8saG91ckN5Y2xlOlxcXCJoMjNcXFwiLHRpbWVab25lTmFtZTpxZX0sem49e2hvdXI6XyxtaW51dGU6XyxzZWNvbmQ6Xyxob3VyQ3ljbGU6XFxcImgyM1xcXCIsdGltZVpvbmVOYW1lOnhlfSxZbj17eWVhcjpfLG1vbnRoOl8sZGF5Ol8saG91cjpfLG1pbnV0ZTpffSxHbj17eWVhcjpfLG1vbnRoOl8sZGF5Ol8saG91cjpfLG1pbnV0ZTpfLHNlY29uZDpffSxabj17eWVhcjpfLG1vbnRoOnFlLGRheTpfLGhvdXI6XyxtaW51dGU6X30sUW49e3llYXI6Xyxtb250aDpxZSxkYXk6Xyxob3VyOl8sbWludXRlOl8sc2Vjb25kOl99LFpzPXt5ZWFyOl8sbW9udGg6cWUsZGF5Ol8sd2Vla2RheTpxZSxob3VyOl8sbWludXRlOl99LFhuPXt5ZWFyOl8sbW9udGg6eGUsZGF5Ol8saG91cjpfLG1pbnV0ZTpfLHRpbWVab25lTmFtZTpxZX0sZXI9e3llYXI6Xyxtb250aDp4ZSxkYXk6Xyxob3VyOl8sbWludXRlOl8sc2Vjb25kOl8sdGltZVpvbmVOYW1lOnFlfSx0cj17eWVhcjpfLG1vbnRoOnhlLGRheTpfLHdlZWtkYXk6eGUsaG91cjpfLG1pbnV0ZTpfLHRpbWVab25lTmFtZTp4ZX0sbnI9e3llYXI6Xyxtb250aDp4ZSxkYXk6Xyx3ZWVrZGF5OnhlLGhvdXI6XyxtaW51dGU6XyxzZWNvbmQ6Xyx0aW1lWm9uZU5hbWU6eGV9O2Z1bmN0aW9uIFcobil7cmV0dXJuIHR5cGVvZiBuPT1cXFwidW5kZWZpbmVkXFxcIn1mdW5jdGlvbiB0dChuKXtyZXR1cm4gdHlwZW9mIG49PVxcXCJudW1iZXJcXFwifWZ1bmN0aW9uIHJyKG4pe3JldHVybiB0eXBlb2Ygbj09XFxcIm51bWJlclxcXCImJm4lMT09PTB9ZnVuY3Rpb24gQm8obil7cmV0dXJuIHR5cGVvZiBuPT1cXFwic3RyaW5nXFxcIn1mdW5jdGlvbiBQbyhuKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG4pPT09XFxcIltvYmplY3QgRGF0ZV1cXFwifWZ1bmN0aW9uIEhyKCl7dHJ5e3JldHVybiB0eXBlb2YgSW50bCE9XFxcInVuZGVmaW5lZFxcXCImJiEhSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXR9Y2F0Y2gobil7cmV0dXJuITF9fWZ1bmN0aW9uICRvKG4pe3JldHVybiBBcnJheS5pc0FycmF5KG4pP246W25dfWZ1bmN0aW9uIFhzKG4sZSx0KXtpZihuLmxlbmd0aCE9PTApcmV0dXJuIG4ucmVkdWNlKChyLHMpPT57bGV0IGk9W2Uocyksc107cmV0dXJuIHImJnQoclswXSxpWzBdKT09PXJbMF0/cjppfSxudWxsKVsxXX1mdW5jdGlvbiBSbyhuLGUpe3JldHVybiBlLnJlZHVjZSgodCxyKT0+KHRbcl09bltyXSx0KSx7fSl9ZnVuY3Rpb24ga3QobixlKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4sZSl9ZnVuY3Rpb24gbnQobixlLHQpe3JldHVybiBycihuKSYmbj49ZSYmbjw9dH1mdW5jdGlvbiBibChuLGUpe3JldHVybiBuLWUqTWF0aC5mbG9vcihuL2UpfWZ1bmN0aW9uIHJlKG4sZT0yKXtsZXQgdD1uPDAscjtyZXR1cm4gdD9yPVxcXCItXFxcIisoXFxcIlxcXCIrLW4pLnBhZFN0YXJ0KGUsXFxcIjBcXFwiKTpyPShcXFwiXFxcIituKS5wYWRTdGFydChlLFxcXCIwXFxcIikscn1mdW5jdGlvbiBEdChuKXtpZighKFcobil8fG49PT1udWxsfHxuPT09XFxcIlxcXCIpKXJldHVybiBwYXJzZUludChuLDEwKX1mdW5jdGlvbiBDdChuKXtpZighKFcobil8fG49PT1udWxsfHxuPT09XFxcIlxcXCIpKXJldHVybiBwYXJzZUZsb2F0KG4pfWZ1bmN0aW9uIHNyKG4pe2lmKCEoVyhuKXx8bj09PW51bGx8fG49PT1cXFwiXFxcIikpe2xldCBlPXBhcnNlRmxvYXQoXFxcIjAuXFxcIituKSoxZTM7cmV0dXJuIE1hdGguZmxvb3IoZSl9fWZ1bmN0aW9uIGFuKG4sZSx0PSExKXtsZXQgcj0xMCoqZTtyZXR1cm4odD9NYXRoLnRydW5jOk1hdGgucm91bmQpKG4qcikvcn1mdW5jdGlvbiBqdChuKXtyZXR1cm4gbiU0PT09MCYmKG4lMTAwIT09MHx8biU0MDA9PT0wKX1mdW5jdGlvbiBxdChuKXtyZXR1cm4ganQobik/MzY2OjM2NX1mdW5jdGlvbiB1bihuLGUpe2xldCB0PWJsKGUtMSwxMikrMSxyPW4rKGUtdCkvMTI7cmV0dXJuIHQ9PT0yP2p0KHIpPzI5OjI4OlszMSxudWxsLDMxLDMwLDMxLDMwLDMxLDMxLDMwLDMxLDMwLDMxXVt0LTFdfWZ1bmN0aW9uIGlyKG4pe2xldCBlPURhdGUuVVRDKG4ueWVhcixuLm1vbnRoLTEsbi5kYXksbi5ob3VyLG4ubWludXRlLG4uc2Vjb25kLG4ubWlsbGlzZWNvbmQpO3JldHVybiBuLnllYXI8MTAwJiZuLnllYXI+PTAmJihlPW5ldyBEYXRlKGUpLGUuc2V0VVRDRnVsbFllYXIoZS5nZXRVVENGdWxsWWVhcigpLTE5MDApKSwrZX1mdW5jdGlvbiBsbihuKXtsZXQgZT0obitNYXRoLmZsb29yKG4vNCktTWF0aC5mbG9vcihuLzEwMCkrTWF0aC5mbG9vcihuLzQwMCkpJTcsdD1uLTEscj0odCtNYXRoLmZsb29yKHQvNCktTWF0aC5mbG9vcih0LzEwMCkrTWF0aC5mbG9vcih0LzQwMCkpJTc7cmV0dXJuIGU9PT00fHxyPT09Mz81Mzo1Mn1mdW5jdGlvbiBvcihuKXtyZXR1cm4gbj45OT9uOm4+NjA/MTkwMCtuOjJlMytufWZ1bmN0aW9uIEpyKG4sZSx0LHI9bnVsbCl7bGV0IHM9bmV3IERhdGUobiksaT17aG91ckN5Y2xlOlxcXCJoMjNcXFwiLHllYXI6XFxcIm51bWVyaWNcXFwiLG1vbnRoOlxcXCIyLWRpZ2l0XFxcIixkYXk6XFxcIjItZGlnaXRcXFwiLGhvdXI6XFxcIjItZGlnaXRcXFwiLG1pbnV0ZTpcXFwiMi1kaWdpdFxcXCJ9O3ImJihpLnRpbWVab25lPXIpO2xldCBvPVIoe3RpbWVab25lTmFtZTplfSxpKSxhPW5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KHQsbykuZm9ybWF0VG9QYXJ0cyhzKS5maW5kKHU9PnUudHlwZS50b0xvd2VyQ2FzZSgpPT09XFxcInRpbWV6b25lbmFtZVxcXCIpO3JldHVybiBhP2EudmFsdWU6bnVsbH1mdW5jdGlvbiBWdChuLGUpe2xldCB0PXBhcnNlSW50KG4sMTApO051bWJlci5pc05hTih0KSYmKHQ9MCk7bGV0IHI9cGFyc2VJbnQoZSwxMCl8fDAscz10PDB8fE9iamVjdC5pcyh0LC0wKT8tcjpyO3JldHVybiB0KjYwK3N9ZnVuY3Rpb24gZWkobil7bGV0IGU9TnVtYmVyKG4pO2lmKHR5cGVvZiBuPT1cXFwiYm9vbGVhblxcXCJ8fG49PT1cXFwiXFxcInx8TnVtYmVyLmlzTmFOKGUpKXRocm93IG5ldyBmZShgSW52YWxpZCB1bml0IHZhbHVlICR7bn1gKTtyZXR1cm4gZX1mdW5jdGlvbiBjbihuLGUpe2xldCB0PXt9O2ZvcihsZXQgciBpbiBuKWlmKGt0KG4scikpe2xldCBzPW5bcl07aWYocz09bnVsbCljb250aW51ZTt0W2UocildPWVpKHMpfXJldHVybiB0fWZ1bmN0aW9uIHZ0KG4sZSl7bGV0IHQ9TWF0aC50cnVuYyhNYXRoLmFicyhuLzYwKSkscj1NYXRoLnRydW5jKE1hdGguYWJzKG4lNjApKSxzPW4+PTA/XFxcIitcXFwiOlxcXCItXFxcIjtzd2l0Y2goZSl7Y2FzZVxcXCJzaG9ydFxcXCI6cmV0dXJuYCR7c30ke3JlKHQsMil9OiR7cmUociwyKX1gO2Nhc2VcXFwibmFycm93XFxcIjpyZXR1cm5gJHtzfSR7dH0ke3I+MD9gOiR7cn1gOlxcXCJcXFwifWA7Y2FzZVxcXCJ0ZWNoaWVcXFwiOnJldHVybmAke3N9JHtyZSh0LDIpfSR7cmUociwyKX1gO2RlZmF1bHQ6dGhyb3cgbmV3IFJhbmdlRXJyb3IoYFZhbHVlIGZvcm1hdCAke2V9IGlzIG91dCBvZiByYW5nZSBmb3IgcHJvcGVydHkgZm9ybWF0YCl9fWZ1bmN0aW9uIGFyKG4pe3JldHVybiBSbyhuLFtcXFwiaG91clxcXCIsXFxcIm1pbnV0ZVxcXCIsXFxcInNlY29uZFxcXCIsXFxcIm1pbGxpc2Vjb25kXFxcIl0pfXZhciB0aT0vW0EtWmEtel8rLV17MSwyNTZ9KD86Oj9cXFxcL1tBLVphLXowLTlfKy1dezEsMjU2fSg/OlxcXFwvW0EtWmEtejAtOV8rLV17MSwyNTZ9KT8pPy87dmFyIEZsPVtcXFwiSmFudWFyeVxcXCIsXFxcIkZlYnJ1YXJ5XFxcIixcXFwiTWFyY2hcXFwiLFxcXCJBcHJpbFxcXCIsXFxcIk1heVxcXCIsXFxcIkp1bmVcXFwiLFxcXCJKdWx5XFxcIixcXFwiQXVndXN0XFxcIixcXFwiU2VwdGVtYmVyXFxcIixcXFwiT2N0b2JlclxcXCIsXFxcIk5vdmVtYmVyXFxcIixcXFwiRGVjZW1iZXJcXFwiXSxuaT1bXFxcIkphblxcXCIsXFxcIkZlYlxcXCIsXFxcIk1hclxcXCIsXFxcIkFwclxcXCIsXFxcIk1heVxcXCIsXFxcIkp1blxcXCIsXFxcIkp1bFxcXCIsXFxcIkF1Z1xcXCIsXFxcIlNlcFxcXCIsXFxcIk9jdFxcXCIsXFxcIk5vdlxcXCIsXFxcIkRlY1xcXCJdLEVsPVtcXFwiSlxcXCIsXFxcIkZcXFwiLFxcXCJNXFxcIixcXFwiQVxcXCIsXFxcIk1cXFwiLFxcXCJKXFxcIixcXFwiSlxcXCIsXFxcIkFcXFwiLFxcXCJTXFxcIixcXFwiT1xcXCIsXFxcIk5cXFwiLFxcXCJEXFxcIl07ZnVuY3Rpb24gcmkobil7c3dpdGNoKG4pe2Nhc2VcXFwibmFycm93XFxcIjpyZXR1cm5bLi4uRWxdO2Nhc2VcXFwic2hvcnRcXFwiOnJldHVyblsuLi5uaV07Y2FzZVxcXCJsb25nXFxcIjpyZXR1cm5bLi4uRmxdO2Nhc2VcXFwibnVtZXJpY1xcXCI6cmV0dXJuW1xcXCIxXFxcIixcXFwiMlxcXCIsXFxcIjNcXFwiLFxcXCI0XFxcIixcXFwiNVxcXCIsXFxcIjZcXFwiLFxcXCI3XFxcIixcXFwiOFxcXCIsXFxcIjlcXFwiLFxcXCIxMFxcXCIsXFxcIjExXFxcIixcXFwiMTJcXFwiXTtjYXNlXFxcIjItZGlnaXRcXFwiOnJldHVybltcXFwiMDFcXFwiLFxcXCIwMlxcXCIsXFxcIjAzXFxcIixcXFwiMDRcXFwiLFxcXCIwNVxcXCIsXFxcIjA2XFxcIixcXFwiMDdcXFwiLFxcXCIwOFxcXCIsXFxcIjA5XFxcIixcXFwiMTBcXFwiLFxcXCIxMVxcXCIsXFxcIjEyXFxcIl07ZGVmYXVsdDpyZXR1cm4gbnVsbH19dmFyIHNpPVtcXFwiTW9uZGF5XFxcIixcXFwiVHVlc2RheVxcXCIsXFxcIldlZG5lc2RheVxcXCIsXFxcIlRodXJzZGF5XFxcIixcXFwiRnJpZGF5XFxcIixcXFwiU2F0dXJkYXlcXFwiLFxcXCJTdW5kYXlcXFwiXSxpaT1bXFxcIk1vblxcXCIsXFxcIlR1ZVxcXCIsXFxcIldlZFxcXCIsXFxcIlRodVxcXCIsXFxcIkZyaVxcXCIsXFxcIlNhdFxcXCIsXFxcIlN1blxcXCJdLHdsPVtcXFwiTVxcXCIsXFxcIlRcXFwiLFxcXCJXXFxcIixcXFwiVFxcXCIsXFxcIkZcXFwiLFxcXCJTXFxcIixcXFwiU1xcXCJdO2Z1bmN0aW9uIG9pKG4pe3N3aXRjaChuKXtjYXNlXFxcIm5hcnJvd1xcXCI6cmV0dXJuWy4uLndsXTtjYXNlXFxcInNob3J0XFxcIjpyZXR1cm5bLi4uaWldO2Nhc2VcXFwibG9uZ1xcXCI6cmV0dXJuWy4uLnNpXTtjYXNlXFxcIm51bWVyaWNcXFwiOnJldHVybltcXFwiMVxcXCIsXFxcIjJcXFwiLFxcXCIzXFxcIixcXFwiNFxcXCIsXFxcIjVcXFwiLFxcXCI2XFxcIixcXFwiN1xcXCJdO2RlZmF1bHQ6cmV0dXJuIG51bGx9fXZhciBhaT1bXFxcIkFNXFxcIixcXFwiUE1cXFwiXSxUbD1bXFxcIkJlZm9yZSBDaHJpc3RcXFwiLFxcXCJBbm5vIERvbWluaVxcXCJdLFNsPVtcXFwiQkNcXFwiLFxcXCJBRFxcXCJdLGtsPVtcXFwiQlxcXCIsXFxcIkFcXFwiXTtmdW5jdGlvbiB1aShuKXtzd2l0Y2gobil7Y2FzZVxcXCJuYXJyb3dcXFwiOnJldHVyblsuLi5rbF07Y2FzZVxcXCJzaG9ydFxcXCI6cmV0dXJuWy4uLlNsXTtjYXNlXFxcImxvbmdcXFwiOnJldHVyblsuLi5UbF07ZGVmYXVsdDpyZXR1cm4gbnVsbH19ZnVuY3Rpb24gam8obil7cmV0dXJuIGFpW24uaG91cjwxMj8wOjFdfWZ1bmN0aW9uIHFvKG4sZSl7cmV0dXJuIG9pKGUpW24ud2Vla2RheS0xXX1mdW5jdGlvbiBWbyhuLGUpe3JldHVybiByaShlKVtuLm1vbnRoLTFdfWZ1bmN0aW9uIFVvKG4sZSl7cmV0dXJuIHVpKGUpW24ueWVhcjwwPzA6MV19ZnVuY3Rpb24gS28obixlLHQ9XFxcImFsd2F5c1xcXCIscj0hMSl7bGV0IHM9e3llYXJzOltcXFwieWVhclxcXCIsXFxcInlyLlxcXCJdLHF1YXJ0ZXJzOltcXFwicXVhcnRlclxcXCIsXFxcInF0ci5cXFwiXSxtb250aHM6W1xcXCJtb250aFxcXCIsXFxcIm1vLlxcXCJdLHdlZWtzOltcXFwid2Vla1xcXCIsXFxcIndrLlxcXCJdLGRheXM6W1xcXCJkYXlcXFwiLFxcXCJkYXlcXFwiLFxcXCJkYXlzXFxcIl0saG91cnM6W1xcXCJob3VyXFxcIixcXFwiaHIuXFxcIl0sbWludXRlczpbXFxcIm1pbnV0ZVxcXCIsXFxcIm1pbi5cXFwiXSxzZWNvbmRzOltcXFwic2Vjb25kXFxcIixcXFwic2VjLlxcXCJdfSxpPVtcXFwiaG91cnNcXFwiLFxcXCJtaW51dGVzXFxcIixcXFwic2Vjb25kc1xcXCJdLmluZGV4T2Yobik9PT0tMTtpZih0PT09XFxcImF1dG9cXFwiJiZpKXtsZXQgZD1uPT09XFxcImRheXNcXFwiO3N3aXRjaChlKXtjYXNlIDE6cmV0dXJuIGQ/XFxcInRvbW9ycm93XFxcIjpgbmV4dCAke3Nbbl1bMF19YDtjYXNlLTE6cmV0dXJuIGQ/XFxcInllc3RlcmRheVxcXCI6YGxhc3QgJHtzW25dWzBdfWA7Y2FzZSAwOnJldHVybiBkP1xcXCJ0b2RheVxcXCI6YHRoaXMgJHtzW25dWzBdfWA7ZGVmYXVsdDp9fWxldCBvPU9iamVjdC5pcyhlLC0wKXx8ZTwwLGE9TWF0aC5hYnMoZSksdT1hPT09MSxsPXNbbl0sZj1yP3U/bFsxXTpsWzJdfHxsWzFdOnU/c1tuXVswXTpuO3JldHVybiBvP2Ake2F9ICR7Zn0gYWdvYDpgaW4gJHthfSAke2Z9YH1mdW5jdGlvbiBXbyhuLGUpe2xldCB0PVxcXCJcXFwiO2ZvcihsZXQgciBvZiBuKXIubGl0ZXJhbD90Kz1yLnZhbDp0Kz1lKHIudmFsKTtyZXR1cm4gdH12YXIgQ2w9e0Q6b24sREQ6JG4sREREOlJuLEREREQ6am4sdDpxbix0dDpWbix0dHQ6VW4sdHR0dDpLbixUOlduLFRUOkhuLFRUVDpKbixUVFRUOnpuLGY6WW4sZmY6Wm4sZmZmOlhuLGZmZmY6dHIsRjpHbixGRjpRbixGRkY6ZXIsRkZGRjpucn0sd2U9Y2xhc3MgbntzdGF0aWMgY3JlYXRlKGUsdD17fSl7cmV0dXJuIG5ldyBuKGUsdCl9c3RhdGljIHBhcnNlRm9ybWF0KGUpe2xldCB0PW51bGwscj1cXFwiXFxcIixzPSExLGk9W107Zm9yKGxldCBvPTA7bzxlLmxlbmd0aDtvKyspe2xldCBhPWUuY2hhckF0KG8pO2E9PT1cXFwiJ1xcXCI/KHIubGVuZ3RoPjAmJmkucHVzaCh7bGl0ZXJhbDpzLHZhbDpyfSksdD1udWxsLHI9XFxcIlxcXCIscz0hcyk6c3x8YT09PXQ/cis9YTooci5sZW5ndGg+MCYmaS5wdXNoKHtsaXRlcmFsOiExLHZhbDpyfSkscj1hLHQ9YSl9cmV0dXJuIHIubGVuZ3RoPjAmJmkucHVzaCh7bGl0ZXJhbDpzLHZhbDpyfSksaX1zdGF0aWMgbWFjcm9Ub2tlblRvRm9ybWF0T3B0cyhlKXtyZXR1cm4gQ2xbZV19Y29uc3RydWN0b3IoZSx0KXt0aGlzLm9wdHM9dCx0aGlzLmxvYz1lLHRoaXMuc3lzdGVtTG9jPW51bGx9Zm9ybWF0V2l0aFN5c3RlbURlZmF1bHQoZSx0KXtyZXR1cm4gdGhpcy5zeXN0ZW1Mb2M9PT1udWxsJiYodGhpcy5zeXN0ZW1Mb2M9dGhpcy5sb2MucmVkZWZhdWx0VG9TeXN0ZW0oKSksdGhpcy5zeXN0ZW1Mb2MuZHRGb3JtYXR0ZXIoZSxSKFIoe30sdGhpcy5vcHRzKSx0KSkuZm9ybWF0KCl9Zm9ybWF0RGF0ZVRpbWUoZSx0PXt9KXtyZXR1cm4gdGhpcy5sb2MuZHRGb3JtYXR0ZXIoZSxSKFIoe30sdGhpcy5vcHRzKSx0KSkuZm9ybWF0KCl9Zm9ybWF0RGF0ZVRpbWVQYXJ0cyhlLHQ9e30pe3JldHVybiB0aGlzLmxvYy5kdEZvcm1hdHRlcihlLFIoUih7fSx0aGlzLm9wdHMpLHQpKS5mb3JtYXRUb1BhcnRzKCl9cmVzb2x2ZWRPcHRpb25zKGUsdD17fSl7cmV0dXJuIHRoaXMubG9jLmR0Rm9ybWF0dGVyKGUsUihSKHt9LHRoaXMub3B0cyksdCkpLnJlc29sdmVkT3B0aW9ucygpfW51bShlLHQ9MCl7aWYodGhpcy5vcHRzLmZvcmNlU2ltcGxlKXJldHVybiByZShlLHQpO2xldCByPVIoe30sdGhpcy5vcHRzKTtyZXR1cm4gdD4wJiYoci5wYWRUbz10KSx0aGlzLmxvYy5udW1iZXJGb3JtYXR0ZXIocikuZm9ybWF0KGUpfWZvcm1hdERhdGVUaW1lRnJvbVN0cmluZyhlLHQpe2xldCByPXRoaXMubG9jLmxpc3RpbmdNb2RlKCk9PT1cXFwiZW5cXFwiLHM9dGhpcy5sb2Mub3V0cHV0Q2FsZW5kYXImJnRoaXMubG9jLm91dHB1dENhbGVuZGFyIT09XFxcImdyZWdvcnlcXFwiLGk9KGgsYik9PnRoaXMubG9jLmV4dHJhY3QoZSxoLGIpLG89aD0+ZS5pc09mZnNldEZpeGVkJiZlLm9mZnNldD09PTAmJmguYWxsb3daP1xcXCJaXFxcIjplLmlzVmFsaWQ/ZS56b25lLmZvcm1hdE9mZnNldChlLnRzLGguZm9ybWF0KTpcXFwiXFxcIixhPSgpPT5yP2pvKGUpOmkoe2hvdXI6XFxcIm51bWVyaWNcXFwiLGhvdXJDeWNsZTpcXFwiaDEyXFxcIn0sXFxcImRheXBlcmlvZFxcXCIpLHU9KGgsYik9PnI/Vm8oZSxoKTppKGI/e21vbnRoOmh9Onttb250aDpoLGRheTpcXFwibnVtZXJpY1xcXCJ9LFxcXCJtb250aFxcXCIpLGw9KGgsYik9PnI/cW8oZSxoKTppKGI/e3dlZWtkYXk6aH06e3dlZWtkYXk6aCxtb250aDpcXFwibG9uZ1xcXCIsZGF5OlxcXCJudW1lcmljXFxcIn0sXFxcIndlZWtkYXlcXFwiKSxmPWg9PntsZXQgYj1uLm1hY3JvVG9rZW5Ub0Zvcm1hdE9wdHMoaCk7cmV0dXJuIGI/dGhpcy5mb3JtYXRXaXRoU3lzdGVtRGVmYXVsdChlLGIpOmh9LGQ9aD0+cj9VbyhlLGgpOmkoe2VyYTpofSxcXFwiZXJhXFxcIiksbT1oPT57c3dpdGNoKGgpe2Nhc2VcXFwiU1xcXCI6cmV0dXJuIHRoaXMubnVtKGUubWlsbGlzZWNvbmQpO2Nhc2VcXFwidVxcXCI6Y2FzZVxcXCJTU1NcXFwiOnJldHVybiB0aGlzLm51bShlLm1pbGxpc2Vjb25kLDMpO2Nhc2VcXFwic1xcXCI6cmV0dXJuIHRoaXMubnVtKGUuc2Vjb25kKTtjYXNlXFxcInNzXFxcIjpyZXR1cm4gdGhpcy5udW0oZS5zZWNvbmQsMik7Y2FzZVxcXCJ1dVxcXCI6cmV0dXJuIHRoaXMubnVtKE1hdGguZmxvb3IoZS5taWxsaXNlY29uZC8xMCksMik7Y2FzZVxcXCJ1dXVcXFwiOnJldHVybiB0aGlzLm51bShNYXRoLmZsb29yKGUubWlsbGlzZWNvbmQvMTAwKSk7Y2FzZVxcXCJtXFxcIjpyZXR1cm4gdGhpcy5udW0oZS5taW51dGUpO2Nhc2VcXFwibW1cXFwiOnJldHVybiB0aGlzLm51bShlLm1pbnV0ZSwyKTtjYXNlXFxcImhcXFwiOnJldHVybiB0aGlzLm51bShlLmhvdXIlMTI9PT0wPzEyOmUuaG91ciUxMik7Y2FzZVxcXCJoaFxcXCI6cmV0dXJuIHRoaXMubnVtKGUuaG91ciUxMj09PTA/MTI6ZS5ob3VyJTEyLDIpO2Nhc2VcXFwiSFxcXCI6cmV0dXJuIHRoaXMubnVtKGUuaG91cik7Y2FzZVxcXCJISFxcXCI6cmV0dXJuIHRoaXMubnVtKGUuaG91ciwyKTtjYXNlXFxcIlpcXFwiOnJldHVybiBvKHtmb3JtYXQ6XFxcIm5hcnJvd1xcXCIsYWxsb3daOnRoaXMub3B0cy5hbGxvd1p9KTtjYXNlXFxcIlpaXFxcIjpyZXR1cm4gbyh7Zm9ybWF0OlxcXCJzaG9ydFxcXCIsYWxsb3daOnRoaXMub3B0cy5hbGxvd1p9KTtjYXNlXFxcIlpaWlxcXCI6cmV0dXJuIG8oe2Zvcm1hdDpcXFwidGVjaGllXFxcIixhbGxvd1o6dGhpcy5vcHRzLmFsbG93Wn0pO2Nhc2VcXFwiWlpaWlxcXCI6cmV0dXJuIGUuem9uZS5vZmZzZXROYW1lKGUudHMse2Zvcm1hdDpcXFwic2hvcnRcXFwiLGxvY2FsZTp0aGlzLmxvYy5sb2NhbGV9KTtjYXNlXFxcIlpaWlpaXFxcIjpyZXR1cm4gZS56b25lLm9mZnNldE5hbWUoZS50cyx7Zm9ybWF0OlxcXCJsb25nXFxcIixsb2NhbGU6dGhpcy5sb2MubG9jYWxlfSk7Y2FzZVxcXCJ6XFxcIjpyZXR1cm4gZS56b25lTmFtZTtjYXNlXFxcImFcXFwiOnJldHVybiBhKCk7Y2FzZVxcXCJkXFxcIjpyZXR1cm4gcz9pKHtkYXk6XFxcIm51bWVyaWNcXFwifSxcXFwiZGF5XFxcIik6dGhpcy5udW0oZS5kYXkpO2Nhc2VcXFwiZGRcXFwiOnJldHVybiBzP2koe2RheTpcXFwiMi1kaWdpdFxcXCJ9LFxcXCJkYXlcXFwiKTp0aGlzLm51bShlLmRheSwyKTtjYXNlXFxcImNcXFwiOnJldHVybiB0aGlzLm51bShlLndlZWtkYXkpO2Nhc2VcXFwiY2NjXFxcIjpyZXR1cm4gbChcXFwic2hvcnRcXFwiLCEwKTtjYXNlXFxcImNjY2NcXFwiOnJldHVybiBsKFxcXCJsb25nXFxcIiwhMCk7Y2FzZVxcXCJjY2NjY1xcXCI6cmV0dXJuIGwoXFxcIm5hcnJvd1xcXCIsITApO2Nhc2VcXFwiRVxcXCI6cmV0dXJuIHRoaXMubnVtKGUud2Vla2RheSk7Y2FzZVxcXCJFRUVcXFwiOnJldHVybiBsKFxcXCJzaG9ydFxcXCIsITEpO2Nhc2VcXFwiRUVFRVxcXCI6cmV0dXJuIGwoXFxcImxvbmdcXFwiLCExKTtjYXNlXFxcIkVFRUVFXFxcIjpyZXR1cm4gbChcXFwibmFycm93XFxcIiwhMSk7Y2FzZVxcXCJMXFxcIjpyZXR1cm4gcz9pKHttb250aDpcXFwibnVtZXJpY1xcXCIsZGF5OlxcXCJudW1lcmljXFxcIn0sXFxcIm1vbnRoXFxcIik6dGhpcy5udW0oZS5tb250aCk7Y2FzZVxcXCJMTFxcXCI6cmV0dXJuIHM/aSh7bW9udGg6XFxcIjItZGlnaXRcXFwiLGRheTpcXFwibnVtZXJpY1xcXCJ9LFxcXCJtb250aFxcXCIpOnRoaXMubnVtKGUubW9udGgsMik7Y2FzZVxcXCJMTExcXFwiOnJldHVybiB1KFxcXCJzaG9ydFxcXCIsITApO2Nhc2VcXFwiTExMTFxcXCI6cmV0dXJuIHUoXFxcImxvbmdcXFwiLCEwKTtjYXNlXFxcIkxMTExMXFxcIjpyZXR1cm4gdShcXFwibmFycm93XFxcIiwhMCk7Y2FzZVxcXCJNXFxcIjpyZXR1cm4gcz9pKHttb250aDpcXFwibnVtZXJpY1xcXCJ9LFxcXCJtb250aFxcXCIpOnRoaXMubnVtKGUubW9udGgpO2Nhc2VcXFwiTU1cXFwiOnJldHVybiBzP2koe21vbnRoOlxcXCIyLWRpZ2l0XFxcIn0sXFxcIm1vbnRoXFxcIik6dGhpcy5udW0oZS5tb250aCwyKTtjYXNlXFxcIk1NTVxcXCI6cmV0dXJuIHUoXFxcInNob3J0XFxcIiwhMSk7Y2FzZVxcXCJNTU1NXFxcIjpyZXR1cm4gdShcXFwibG9uZ1xcXCIsITEpO2Nhc2VcXFwiTU1NTU1cXFwiOnJldHVybiB1KFxcXCJuYXJyb3dcXFwiLCExKTtjYXNlXFxcInlcXFwiOnJldHVybiBzP2koe3llYXI6XFxcIm51bWVyaWNcXFwifSxcXFwieWVhclxcXCIpOnRoaXMubnVtKGUueWVhcik7Y2FzZVxcXCJ5eVxcXCI6cmV0dXJuIHM/aSh7eWVhcjpcXFwiMi1kaWdpdFxcXCJ9LFxcXCJ5ZWFyXFxcIik6dGhpcy5udW0oZS55ZWFyLnRvU3RyaW5nKCkuc2xpY2UoLTIpLDIpO2Nhc2VcXFwieXl5eVxcXCI6cmV0dXJuIHM/aSh7eWVhcjpcXFwibnVtZXJpY1xcXCJ9LFxcXCJ5ZWFyXFxcIik6dGhpcy5udW0oZS55ZWFyLDQpO2Nhc2VcXFwieXl5eXl5XFxcIjpyZXR1cm4gcz9pKHt5ZWFyOlxcXCJudW1lcmljXFxcIn0sXFxcInllYXJcXFwiKTp0aGlzLm51bShlLnllYXIsNik7Y2FzZVxcXCJHXFxcIjpyZXR1cm4gZChcXFwic2hvcnRcXFwiKTtjYXNlXFxcIkdHXFxcIjpyZXR1cm4gZChcXFwibG9uZ1xcXCIpO2Nhc2VcXFwiR0dHR0dcXFwiOnJldHVybiBkKFxcXCJuYXJyb3dcXFwiKTtjYXNlXFxcImtrXFxcIjpyZXR1cm4gdGhpcy5udW0oZS53ZWVrWWVhci50b1N0cmluZygpLnNsaWNlKC0yKSwyKTtjYXNlXFxcImtra2tcXFwiOnJldHVybiB0aGlzLm51bShlLndlZWtZZWFyLDQpO2Nhc2VcXFwiV1xcXCI6cmV0dXJuIHRoaXMubnVtKGUud2Vla051bWJlcik7Y2FzZVxcXCJXV1xcXCI6cmV0dXJuIHRoaXMubnVtKGUud2Vla051bWJlciwyKTtjYXNlXFxcIm9cXFwiOnJldHVybiB0aGlzLm51bShlLm9yZGluYWwpO2Nhc2VcXFwib29vXFxcIjpyZXR1cm4gdGhpcy5udW0oZS5vcmRpbmFsLDMpO2Nhc2VcXFwicVxcXCI6cmV0dXJuIHRoaXMubnVtKGUucXVhcnRlcik7Y2FzZVxcXCJxcVxcXCI6cmV0dXJuIHRoaXMubnVtKGUucXVhcnRlciwyKTtjYXNlXFxcIlhcXFwiOnJldHVybiB0aGlzLm51bShNYXRoLmZsb29yKGUudHMvMWUzKSk7Y2FzZVxcXCJ4XFxcIjpyZXR1cm4gdGhpcy5udW0oZS50cyk7ZGVmYXVsdDpyZXR1cm4gZihoKX19O3JldHVybiBXbyhuLnBhcnNlRm9ybWF0KHQpLG0pfWZvcm1hdER1cmF0aW9uRnJvbVN0cmluZyhlLHQpe2xldCByPXU9Pntzd2l0Y2godVswXSl7Y2FzZVxcXCJTXFxcIjpyZXR1cm5cXFwibWlsbGlzZWNvbmRcXFwiO2Nhc2VcXFwic1xcXCI6cmV0dXJuXFxcInNlY29uZFxcXCI7Y2FzZVxcXCJtXFxcIjpyZXR1cm5cXFwibWludXRlXFxcIjtjYXNlXFxcImhcXFwiOnJldHVyblxcXCJob3VyXFxcIjtjYXNlXFxcImRcXFwiOnJldHVyblxcXCJkYXlcXFwiO2Nhc2VcXFwid1xcXCI6cmV0dXJuXFxcIndlZWtcXFwiO2Nhc2VcXFwiTVxcXCI6cmV0dXJuXFxcIm1vbnRoXFxcIjtjYXNlXFxcInlcXFwiOnJldHVyblxcXCJ5ZWFyXFxcIjtkZWZhdWx0OnJldHVybiBudWxsfX0scz11PT5sPT57bGV0IGY9cihsKTtyZXR1cm4gZj90aGlzLm51bSh1LmdldChmKSxsLmxlbmd0aCk6bH0saT1uLnBhcnNlRm9ybWF0KHQpLG89aS5yZWR1Y2UoKHUse2xpdGVyYWw6bCx2YWw6Zn0pPT5sP3U6dS5jb25jYXQoZiksW10pLGE9ZS5zaGlmdFRvKC4uLm8ubWFwKHIpLmZpbHRlcih1PT51KSk7cmV0dXJuIFdvKGkscyhhKSl9fTt2YXIgZGU9Y2xhc3N7Y29uc3RydWN0b3IoZSx0KXt0aGlzLnJlYXNvbj1lLHRoaXMuZXhwbGFuYXRpb249dH10b01lc3NhZ2UoKXtyZXR1cm4gdGhpcy5leHBsYW5hdGlvbj9gJHt0aGlzLnJlYXNvbn06ICR7dGhpcy5leHBsYW5hdGlvbn1gOnRoaXMucmVhc29ufX07dmFyIGtlPWNsYXNze2dldCB0eXBlKCl7dGhyb3cgbmV3IGplfWdldCBuYW1lKCl7dGhyb3cgbmV3IGplfWdldCBpYW5hTmFtZSgpe3JldHVybiB0aGlzLm5hbWV9Z2V0IGlzVW5pdmVyc2FsKCl7dGhyb3cgbmV3IGplfW9mZnNldE5hbWUoZSx0KXt0aHJvdyBuZXcgamV9Zm9ybWF0T2Zmc2V0KGUsdCl7dGhyb3cgbmV3IGplfW9mZnNldChlKXt0aHJvdyBuZXcgamV9ZXF1YWxzKGUpe3Rocm93IG5ldyBqZX1nZXQgaXNWYWxpZCgpe3Rocm93IG5ldyBqZX19O3ZhciBjaT1udWxsLGZuPWNsYXNzIG4gZXh0ZW5kcyBrZXtzdGF0aWMgZ2V0IGluc3RhbmNlKCl7cmV0dXJuIGNpPT09bnVsbCYmKGNpPW5ldyBuKSxjaX1nZXQgdHlwZSgpe3JldHVyblxcXCJzeXN0ZW1cXFwifWdldCBuYW1lKCl7cmV0dXJuIG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KCkucmVzb2x2ZWRPcHRpb25zKCkudGltZVpvbmV9Z2V0IGlzVW5pdmVyc2FsKCl7cmV0dXJuITF9b2Zmc2V0TmFtZShlLHtmb3JtYXQ6dCxsb2NhbGU6cn0pe3JldHVybiBKcihlLHQscil9Zm9ybWF0T2Zmc2V0KGUsdCl7cmV0dXJuIHZ0KHRoaXMub2Zmc2V0KGUpLHQpfW9mZnNldChlKXtyZXR1cm4tbmV3IERhdGUoZSkuZ2V0VGltZXpvbmVPZmZzZXQoKX1lcXVhbHMoZSl7cmV0dXJuIGUudHlwZT09PVxcXCJzeXN0ZW1cXFwifWdldCBpc1ZhbGlkKCl7cmV0dXJuITB9fTt2YXIgWXI9e307ZnVuY3Rpb24gdmwobil7cmV0dXJuIFlyW25dfHwoWXJbbl09bmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoXFxcImVuLVVTXFxcIix7aG91cjEyOiExLHRpbWVab25lOm4seWVhcjpcXFwibnVtZXJpY1xcXCIsbW9udGg6XFxcIjItZGlnaXRcXFwiLGRheTpcXFwiMi1kaWdpdFxcXCIsaG91cjpcXFwiMi1kaWdpdFxcXCIsbWludXRlOlxcXCIyLWRpZ2l0XFxcIixzZWNvbmQ6XFxcIjItZGlnaXRcXFwiLGVyYTpcXFwic2hvcnRcXFwifSkpLFlyW25dfXZhciB4bD17eWVhcjowLG1vbnRoOjEsZGF5OjIsZXJhOjMsaG91cjo0LG1pbnV0ZTo1LHNlY29uZDo2fTtmdW5jdGlvbiBPbChuLGUpe2xldCB0PW4uZm9ybWF0KGUpLnJlcGxhY2UoL1xcXFx1MjAwRS9nLFxcXCJcXFwiKSxyPS8oXFxcXGQrKVxcXFwvKFxcXFxkKylcXFxcLyhcXFxcZCspIChBRHxCQyksPyAoXFxcXGQrKTooXFxcXGQrKTooXFxcXGQrKS8uZXhlYyh0KSxbLHMsaSxvLGEsdSxsLGZdPXI7cmV0dXJuW28scyxpLGEsdSxsLGZdfWZ1bmN0aW9uIElsKG4sZSl7bGV0IHQ9bi5mb3JtYXRUb1BhcnRzKGUpLHI9W107Zm9yKGxldCBzPTA7czx0Lmxlbmd0aDtzKyspe2xldHt0eXBlOmksdmFsdWU6b309dFtzXSxhPXhsW2ldO2k9PT1cXFwiZXJhXFxcIj9yW2FdPW86VyhhKXx8KHJbYV09cGFyc2VJbnQobywxMCkpfXJldHVybiByfXZhciB6cj17fSxnZT1jbGFzcyBuIGV4dGVuZHMga2V7c3RhdGljIGNyZWF0ZShlKXtyZXR1cm4genJbZV18fCh6cltlXT1uZXcgbihlKSksenJbZV19c3RhdGljIHJlc2V0Q2FjaGUoKXt6cj17fSxZcj17fX1zdGF0aWMgaXNWYWxpZFNwZWNpZmllcihlKXtyZXR1cm4gdGhpcy5pc1ZhbGlkWm9uZShlKX1zdGF0aWMgaXNWYWxpZFpvbmUoZSl7aWYoIWUpcmV0dXJuITE7dHJ5e3JldHVybiBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChcXFwiZW4tVVNcXFwiLHt0aW1lWm9uZTplfSkuZm9ybWF0KCksITB9Y2F0Y2godCl7cmV0dXJuITF9fWNvbnN0cnVjdG9yKGUpe3N1cGVyKCksdGhpcy56b25lTmFtZT1lLHRoaXMudmFsaWQ9bi5pc1ZhbGlkWm9uZShlKX1nZXQgdHlwZSgpe3JldHVyblxcXCJpYW5hXFxcIn1nZXQgbmFtZSgpe3JldHVybiB0aGlzLnpvbmVOYW1lfWdldCBpc1VuaXZlcnNhbCgpe3JldHVybiExfW9mZnNldE5hbWUoZSx7Zm9ybWF0OnQsbG9jYWxlOnJ9KXtyZXR1cm4gSnIoZSx0LHIsdGhpcy5uYW1lKX1mb3JtYXRPZmZzZXQoZSx0KXtyZXR1cm4gdnQodGhpcy5vZmZzZXQoZSksdCl9b2Zmc2V0KGUpe2xldCB0PW5ldyBEYXRlKGUpO2lmKGlzTmFOKHQpKXJldHVybiBOYU47bGV0IHI9dmwodGhpcy5uYW1lKSxbcyxpLG8sYSx1LGwsZl09ci5mb3JtYXRUb1BhcnRzP0lsKHIsdCk6T2wocix0KTthPT09XFxcIkJDXFxcIiYmKHM9LU1hdGguYWJzKHMpKzEpO2xldCBtPWlyKHt5ZWFyOnMsbW9udGg6aSxkYXk6byxob3VyOnU9PT0yND8wOnUsbWludXRlOmwsc2Vjb25kOmYsbWlsbGlzZWNvbmQ6MH0pLGg9K3QsYj1oJTFlMztyZXR1cm4gaC09Yj49MD9iOjFlMytiLChtLWgpLyg2MCoxZTMpfWVxdWFscyhlKXtyZXR1cm4gZS50eXBlPT09XFxcImlhbmFcXFwiJiZlLm5hbWU9PT10aGlzLm5hbWV9Z2V0IGlzVmFsaWQoKXtyZXR1cm4gdGhpcy52YWxpZH19O3ZhciBmaT1udWxsLGhlPWNsYXNzIG4gZXh0ZW5kcyBrZXtzdGF0aWMgZ2V0IHV0Y0luc3RhbmNlKCl7cmV0dXJuIGZpPT09bnVsbCYmKGZpPW5ldyBuKDApKSxmaX1zdGF0aWMgaW5zdGFuY2UoZSl7cmV0dXJuIGU9PT0wP24udXRjSW5zdGFuY2U6bmV3IG4oZSl9c3RhdGljIHBhcnNlU3BlY2lmaWVyKGUpe2lmKGUpe2xldCB0PWUubWF0Y2goL151dGMoPzooWystXVxcXFxkezEsMn0pKD86OihcXFxcZHsyfSkpPyk/JC9pKTtpZih0KXJldHVybiBuZXcgbihWdCh0WzFdLHRbMl0pKX1yZXR1cm4gbnVsbH1jb25zdHJ1Y3RvcihlKXtzdXBlcigpLHRoaXMuZml4ZWQ9ZX1nZXQgdHlwZSgpe3JldHVyblxcXCJmaXhlZFxcXCJ9Z2V0IG5hbWUoKXtyZXR1cm4gdGhpcy5maXhlZD09PTA/XFxcIlVUQ1xcXCI6YFVUQyR7dnQodGhpcy5maXhlZCxcXFwibmFycm93XFxcIil9YH1nZXQgaWFuYU5hbWUoKXtyZXR1cm4gdGhpcy5maXhlZD09PTA/XFxcIkV0Yy9VVENcXFwiOmBFdGMvR01UJHt2dCgtdGhpcy5maXhlZCxcXFwibmFycm93XFxcIil9YH1vZmZzZXROYW1lKCl7cmV0dXJuIHRoaXMubmFtZX1mb3JtYXRPZmZzZXQoZSx0KXtyZXR1cm4gdnQodGhpcy5maXhlZCx0KX1nZXQgaXNVbml2ZXJzYWwoKXtyZXR1cm4hMH1vZmZzZXQoKXtyZXR1cm4gdGhpcy5maXhlZH1lcXVhbHMoZSl7cmV0dXJuIGUudHlwZT09PVxcXCJmaXhlZFxcXCImJmUuZml4ZWQ9PT10aGlzLmZpeGVkfWdldCBpc1ZhbGlkKCl7cmV0dXJuITB9fTt2YXIgZG49Y2xhc3MgZXh0ZW5kcyBrZXtjb25zdHJ1Y3RvcihlKXtzdXBlcigpLHRoaXMuem9uZU5hbWU9ZX1nZXQgdHlwZSgpe3JldHVyblxcXCJpbnZhbGlkXFxcIn1nZXQgbmFtZSgpe3JldHVybiB0aGlzLnpvbmVOYW1lfWdldCBpc1VuaXZlcnNhbCgpe3JldHVybiExfW9mZnNldE5hbWUoKXtyZXR1cm4gbnVsbH1mb3JtYXRPZmZzZXQoKXtyZXR1cm5cXFwiXFxcIn1vZmZzZXQoKXtyZXR1cm4gTmFOfWVxdWFscygpe3JldHVybiExfWdldCBpc1ZhbGlkKCl7cmV0dXJuITF9fTtmdW5jdGlvbiBWZShuLGUpe2xldCB0O2lmKFcobil8fG49PT1udWxsKXJldHVybiBlO2lmKG4gaW5zdGFuY2VvZiBrZSlyZXR1cm4gbjtpZihCbyhuKSl7bGV0IHI9bi50b0xvd2VyQ2FzZSgpO3JldHVybiByPT09XFxcImxvY2FsXFxcInx8cj09PVxcXCJzeXN0ZW1cXFwiP2U6cj09PVxcXCJ1dGNcXFwifHxyPT09XFxcImdtdFxcXCI/aGUudXRjSW5zdGFuY2U6aGUucGFyc2VTcGVjaWZpZXIocil8fGdlLmNyZWF0ZShuKX1lbHNlIHJldHVybiB0dChuKT9oZS5pbnN0YW5jZShuKTp0eXBlb2Ygbj09XFxcIm9iamVjdFxcXCImJm4ub2Zmc2V0JiZ0eXBlb2Ygbi5vZmZzZXQ9PVxcXCJudW1iZXJcXFwiP246bmV3IGRuKG4pfXZhciBIbz0oKT0+RGF0ZS5ub3coKSxKbz1cXFwic3lzdGVtXFxcIix6bz1udWxsLFlvPW51bGwsR289bnVsbCxabyxYPWNsYXNze3N0YXRpYyBnZXQgbm93KCl7cmV0dXJuIEhvfXN0YXRpYyBzZXQgbm93KGUpe0hvPWV9c3RhdGljIHNldCBkZWZhdWx0Wm9uZShlKXtKbz1lfXN0YXRpYyBnZXQgZGVmYXVsdFpvbmUoKXtyZXR1cm4gVmUoSm8sZm4uaW5zdGFuY2UpfXN0YXRpYyBnZXQgZGVmYXVsdExvY2FsZSgpe3JldHVybiB6b31zdGF0aWMgc2V0IGRlZmF1bHRMb2NhbGUoZSl7em89ZX1zdGF0aWMgZ2V0IGRlZmF1bHROdW1iZXJpbmdTeXN0ZW0oKXtyZXR1cm4gWW99c3RhdGljIHNldCBkZWZhdWx0TnVtYmVyaW5nU3lzdGVtKGUpe1lvPWV9c3RhdGljIGdldCBkZWZhdWx0T3V0cHV0Q2FsZW5kYXIoKXtyZXR1cm4gR299c3RhdGljIHNldCBkZWZhdWx0T3V0cHV0Q2FsZW5kYXIoZSl7R289ZX1zdGF0aWMgZ2V0IHRocm93T25JbnZhbGlkKCl7cmV0dXJuIFpvfXN0YXRpYyBzZXQgdGhyb3dPbkludmFsaWQoZSl7Wm89ZX1zdGF0aWMgcmVzZXRDYWNoZXMoKXtuZS5yZXNldENhY2hlKCksZ2UucmVzZXRDYWNoZSgpfX07dmFyIFFvPXt9O2Z1bmN0aW9uIExsKG4sZT17fSl7bGV0IHQ9SlNPTi5zdHJpbmdpZnkoW24sZV0pLHI9UW9bdF07cmV0dXJuIHJ8fChyPW5ldyBJbnRsLkxpc3RGb3JtYXQobixlKSxRb1t0XT1yKSxyfXZhciBkaT17fTtmdW5jdGlvbiBoaShuLGU9e30pe2xldCB0PUpTT04uc3RyaW5naWZ5KFtuLGVdKSxyPWRpW3RdO3JldHVybiByfHwocj1uZXcgSW50bC5EYXRlVGltZUZvcm1hdChuLGUpLGRpW3RdPXIpLHJ9dmFyIG1pPXt9O2Z1bmN0aW9uIE5sKG4sZT17fSl7bGV0IHQ9SlNPTi5zdHJpbmdpZnkoW24sZV0pLHI9bWlbdF07cmV0dXJuIHJ8fChyPW5ldyBJbnRsLk51bWJlckZvcm1hdChuLGUpLG1pW3RdPXIpLHJ9dmFyIHBpPXt9O2Z1bmN0aW9uIEFsKG4sZT17fSl7bGV0IG89ZSx7YmFzZTp0fT1vLHI9WXMobyxbXFxcImJhc2VcXFwiXSkscz1KU09OLnN0cmluZ2lmeShbbixyXSksaT1waVtzXTtyZXR1cm4gaXx8KGk9bmV3IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0KG4sZSkscGlbc109aSksaX12YXIgdXI9bnVsbDtmdW5jdGlvbiBNbCgpe3JldHVybiB1cnx8KHVyPW5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KCkucmVzb2x2ZWRPcHRpb25zKCkubG9jYWxlLHVyKX1mdW5jdGlvbiBfbChuKXtsZXQgZT1uLmluZGV4T2YoXFxcIi11LVxcXCIpO2lmKGU9PT0tMSlyZXR1cm5bbl07e2xldCB0LHI9bi5zdWJzdHJpbmcoMCxlKTt0cnl7dD1oaShuKS5yZXNvbHZlZE9wdGlvbnMoKX1jYXRjaChvKXt0PWhpKHIpLnJlc29sdmVkT3B0aW9ucygpfWxldHtudW1iZXJpbmdTeXN0ZW06cyxjYWxlbmRhcjppfT10O3JldHVybltyLHMsaV19fWZ1bmN0aW9uIEJsKG4sZSx0KXtyZXR1cm4odHx8ZSkmJihuKz1cXFwiLXVcXFwiLHQmJihuKz1gLWNhLSR7dH1gKSxlJiYobis9YC1udS0ke2V9YCkpLG59ZnVuY3Rpb24gUGwobil7bGV0IGU9W107Zm9yKGxldCB0PTE7dDw9MTI7dCsrKXtsZXQgcj1xLnV0YygyMDE2LHQsMSk7ZS5wdXNoKG4ocikpfXJldHVybiBlfWZ1bmN0aW9uICRsKG4pe2xldCBlPVtdO2ZvcihsZXQgdD0xO3Q8PTc7dCsrKXtsZXQgcj1xLnV0YygyMDE2LDExLDEzK3QpO2UucHVzaChuKHIpKX1yZXR1cm4gZX1mdW5jdGlvbiBHcihuLGUsdCxyLHMpe2xldCBpPW4ubGlzdGluZ01vZGUodCk7cmV0dXJuIGk9PT1cXFwiZXJyb3JcXFwiP251bGw6aT09PVxcXCJlblxcXCI/cihlKTpzKGUpfWZ1bmN0aW9uIFJsKG4pe3JldHVybiBuLm51bWJlcmluZ1N5c3RlbSYmbi5udW1iZXJpbmdTeXN0ZW0hPT1cXFwibGF0blxcXCI/ITE6bi5udW1iZXJpbmdTeXN0ZW09PT1cXFwibGF0blxcXCJ8fCFuLmxvY2FsZXx8bi5sb2NhbGUuc3RhcnRzV2l0aChcXFwiZW5cXFwiKXx8bmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobi5pbnRsKS5yZXNvbHZlZE9wdGlvbnMoKS5udW1iZXJpbmdTeXN0ZW09PT1cXFwibGF0blxcXCJ9dmFyIERpPWNsYXNze2NvbnN0cnVjdG9yKGUsdCxyKXt0aGlzLnBhZFRvPXIucGFkVG98fDAsdGhpcy5mbG9vcj1yLmZsb29yfHwhMTtsZXQgYT1yLHtwYWRUbzpzLGZsb29yOml9PWEsbz1ZcyhhLFtcXFwicGFkVG9cXFwiLFxcXCJmbG9vclxcXCJdKTtpZighdHx8T2JqZWN0LmtleXMobykubGVuZ3RoPjApe2xldCB1PVIoe3VzZUdyb3VwaW5nOiExfSxyKTtyLnBhZFRvPjAmJih1Lm1pbmltdW1JbnRlZ2VyRGlnaXRzPXIucGFkVG8pLHRoaXMuaW5mPU5sKGUsdSl9fWZvcm1hdChlKXtpZih0aGlzLmluZil7bGV0IHQ9dGhpcy5mbG9vcj9NYXRoLmZsb29yKGUpOmU7cmV0dXJuIHRoaXMuaW5mLmZvcm1hdCh0KX1lbHNle2xldCB0PXRoaXMuZmxvb3I/TWF0aC5mbG9vcihlKTphbihlLDMpO3JldHVybiByZSh0LHRoaXMucGFkVG8pfX19LHlpPWNsYXNze2NvbnN0cnVjdG9yKGUsdCxyKXt0aGlzLm9wdHM9cjtsZXQgcztpZihlLnpvbmUuaXNVbml2ZXJzYWwpe2xldCBvPS0xKihlLm9mZnNldC82MCksYT1vPj0wP2BFdGMvR01UKyR7b31gOmBFdGMvR01UJHtvfWA7ZS5vZmZzZXQhPT0wJiZnZS5jcmVhdGUoYSkudmFsaWQ/KHM9YSx0aGlzLmR0PWUpOihzPVxcXCJVVENcXFwiLHIudGltZVpvbmVOYW1lP3RoaXMuZHQ9ZTp0aGlzLmR0PWUub2Zmc2V0PT09MD9lOnEuZnJvbU1pbGxpcyhlLnRzK2Uub2Zmc2V0KjYwKjFlMykpfWVsc2UgZS56b25lLnR5cGU9PT1cXFwic3lzdGVtXFxcIj90aGlzLmR0PWU6KHRoaXMuZHQ9ZSxzPWUuem9uZS5uYW1lKTtsZXQgaT1SKHt9LHRoaXMub3B0cyk7cyYmKGkudGltZVpvbmU9cyksdGhpcy5kdGY9aGkodCxpKX1mb3JtYXQoKXtyZXR1cm4gdGhpcy5kdGYuZm9ybWF0KHRoaXMuZHQudG9KU0RhdGUoKSl9Zm9ybWF0VG9QYXJ0cygpe3JldHVybiB0aGlzLmR0Zi5mb3JtYXRUb1BhcnRzKHRoaXMuZHQudG9KU0RhdGUoKSl9cmVzb2x2ZWRPcHRpb25zKCl7cmV0dXJuIHRoaXMuZHRmLnJlc29sdmVkT3B0aW9ucygpfX0sZ2k9Y2xhc3N7Y29uc3RydWN0b3IoZSx0LHIpe3RoaXMub3B0cz1SKHtzdHlsZTpcXFwibG9uZ1xcXCJ9LHIpLCF0JiZIcigpJiYodGhpcy5ydGY9QWwoZSxyKSl9Zm9ybWF0KGUsdCl7cmV0dXJuIHRoaXMucnRmP3RoaXMucnRmLmZvcm1hdChlLHQpOktvKHQsZSx0aGlzLm9wdHMubnVtZXJpYyx0aGlzLm9wdHMuc3R5bGUhPT1cXFwibG9uZ1xcXCIpfWZvcm1hdFRvUGFydHMoZSx0KXtyZXR1cm4gdGhpcy5ydGY/dGhpcy5ydGYuZm9ybWF0VG9QYXJ0cyhlLHQpOltdfX0sbmU9Y2xhc3MgbntzdGF0aWMgZnJvbU9wdHMoZSl7cmV0dXJuIG4uY3JlYXRlKGUubG9jYWxlLGUubnVtYmVyaW5nU3lzdGVtLGUub3V0cHV0Q2FsZW5kYXIsZS5kZWZhdWx0VG9FTil9c3RhdGljIGNyZWF0ZShlLHQscixzPSExKXtsZXQgaT1lfHxYLmRlZmF1bHRMb2NhbGUsbz1pfHwocz9cXFwiZW4tVVNcXFwiOk1sKCkpLGE9dHx8WC5kZWZhdWx0TnVtYmVyaW5nU3lzdGVtLHU9cnx8WC5kZWZhdWx0T3V0cHV0Q2FsZW5kYXI7cmV0dXJuIG5ldyBuKG8sYSx1LGkpfXN0YXRpYyByZXNldENhY2hlKCl7dXI9bnVsbCxkaT17fSxtaT17fSxwaT17fX1zdGF0aWMgZnJvbU9iamVjdCh7bG9jYWxlOmUsbnVtYmVyaW5nU3lzdGVtOnQsb3V0cHV0Q2FsZW5kYXI6cn09e30pe3JldHVybiBuLmNyZWF0ZShlLHQscil9Y29uc3RydWN0b3IoZSx0LHIscyl7bGV0W2ksbyxhXT1fbChlKTt0aGlzLmxvY2FsZT1pLHRoaXMubnVtYmVyaW5nU3lzdGVtPXR8fG98fG51bGwsdGhpcy5vdXRwdXRDYWxlbmRhcj1yfHxhfHxudWxsLHRoaXMuaW50bD1CbCh0aGlzLmxvY2FsZSx0aGlzLm51bWJlcmluZ1N5c3RlbSx0aGlzLm91dHB1dENhbGVuZGFyKSx0aGlzLndlZWtkYXlzQ2FjaGU9e2Zvcm1hdDp7fSxzdGFuZGFsb25lOnt9fSx0aGlzLm1vbnRoc0NhY2hlPXtmb3JtYXQ6e30sc3RhbmRhbG9uZTp7fX0sdGhpcy5tZXJpZGllbUNhY2hlPW51bGwsdGhpcy5lcmFDYWNoZT17fSx0aGlzLnNwZWNpZmllZExvY2FsZT1zLHRoaXMuZmFzdE51bWJlcnNDYWNoZWQ9bnVsbH1nZXQgZmFzdE51bWJlcnMoKXtyZXR1cm4gdGhpcy5mYXN0TnVtYmVyc0NhY2hlZD09bnVsbCYmKHRoaXMuZmFzdE51bWJlcnNDYWNoZWQ9UmwodGhpcykpLHRoaXMuZmFzdE51bWJlcnNDYWNoZWR9bGlzdGluZ01vZGUoKXtsZXQgZT10aGlzLmlzRW5nbGlzaCgpLHQ9KHRoaXMubnVtYmVyaW5nU3lzdGVtPT09bnVsbHx8dGhpcy5udW1iZXJpbmdTeXN0ZW09PT1cXFwibGF0blxcXCIpJiYodGhpcy5vdXRwdXRDYWxlbmRhcj09PW51bGx8fHRoaXMub3V0cHV0Q2FsZW5kYXI9PT1cXFwiZ3JlZ29yeVxcXCIpO3JldHVybiBlJiZ0P1xcXCJlblxcXCI6XFxcImludGxcXFwifWNsb25lKGUpe3JldHVybiFlfHxPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhlKS5sZW5ndGg9PT0wP3RoaXM6bi5jcmVhdGUoZS5sb2NhbGV8fHRoaXMuc3BlY2lmaWVkTG9jYWxlLGUubnVtYmVyaW5nU3lzdGVtfHx0aGlzLm51bWJlcmluZ1N5c3RlbSxlLm91dHB1dENhbGVuZGFyfHx0aGlzLm91dHB1dENhbGVuZGFyLGUuZGVmYXVsdFRvRU58fCExKX1yZWRlZmF1bHRUb0VOKGU9e30pe3JldHVybiB0aGlzLmNsb25lKHllKFIoe30sZSkse2RlZmF1bHRUb0VOOiEwfSkpfXJlZGVmYXVsdFRvU3lzdGVtKGU9e30pe3JldHVybiB0aGlzLmNsb25lKHllKFIoe30sZSkse2RlZmF1bHRUb0VOOiExfSkpfW1vbnRocyhlLHQ9ITEscj0hMCl7cmV0dXJuIEdyKHRoaXMsZSxyLHJpLCgpPT57bGV0IHM9dD97bW9udGg6ZSxkYXk6XFxcIm51bWVyaWNcXFwifTp7bW9udGg6ZX0saT10P1xcXCJmb3JtYXRcXFwiOlxcXCJzdGFuZGFsb25lXFxcIjtyZXR1cm4gdGhpcy5tb250aHNDYWNoZVtpXVtlXXx8KHRoaXMubW9udGhzQ2FjaGVbaV1bZV09UGwobz0+dGhpcy5leHRyYWN0KG8scyxcXFwibW9udGhcXFwiKSkpLHRoaXMubW9udGhzQ2FjaGVbaV1bZV19KX13ZWVrZGF5cyhlLHQ9ITEscj0hMCl7cmV0dXJuIEdyKHRoaXMsZSxyLG9pLCgpPT57bGV0IHM9dD97d2Vla2RheTplLHllYXI6XFxcIm51bWVyaWNcXFwiLG1vbnRoOlxcXCJsb25nXFxcIixkYXk6XFxcIm51bWVyaWNcXFwifTp7d2Vla2RheTplfSxpPXQ/XFxcImZvcm1hdFxcXCI6XFxcInN0YW5kYWxvbmVcXFwiO3JldHVybiB0aGlzLndlZWtkYXlzQ2FjaGVbaV1bZV18fCh0aGlzLndlZWtkYXlzQ2FjaGVbaV1bZV09JGwobz0+dGhpcy5leHRyYWN0KG8scyxcXFwid2Vla2RheVxcXCIpKSksdGhpcy53ZWVrZGF5c0NhY2hlW2ldW2VdfSl9bWVyaWRpZW1zKGU9ITApe3JldHVybiBHcih0aGlzLHZvaWQgMCxlLCgpPT5haSwoKT0+e2lmKCF0aGlzLm1lcmlkaWVtQ2FjaGUpe2xldCB0PXtob3VyOlxcXCJudW1lcmljXFxcIixob3VyQ3ljbGU6XFxcImgxMlxcXCJ9O3RoaXMubWVyaWRpZW1DYWNoZT1bcS51dGMoMjAxNiwxMSwxMyw5KSxxLnV0YygyMDE2LDExLDEzLDE5KV0ubWFwKHI9PnRoaXMuZXh0cmFjdChyLHQsXFxcImRheXBlcmlvZFxcXCIpKX1yZXR1cm4gdGhpcy5tZXJpZGllbUNhY2hlfSl9ZXJhcyhlLHQ9ITApe3JldHVybiBHcih0aGlzLGUsdCx1aSwoKT0+e2xldCByPXtlcmE6ZX07cmV0dXJuIHRoaXMuZXJhQ2FjaGVbZV18fCh0aGlzLmVyYUNhY2hlW2VdPVtxLnV0YygtNDAsMSwxKSxxLnV0YygyMDE3LDEsMSldLm1hcChzPT50aGlzLmV4dHJhY3QocyxyLFxcXCJlcmFcXFwiKSkpLHRoaXMuZXJhQ2FjaGVbZV19KX1leHRyYWN0KGUsdCxyKXtsZXQgcz10aGlzLmR0Rm9ybWF0dGVyKGUsdCksaT1zLmZvcm1hdFRvUGFydHMoKSxvPWkuZmluZChhPT5hLnR5cGUudG9Mb3dlckNhc2UoKT09PXIpO3JldHVybiBvP28udmFsdWU6bnVsbH1udW1iZXJGb3JtYXR0ZXIoZT17fSl7cmV0dXJuIG5ldyBEaSh0aGlzLmludGwsZS5mb3JjZVNpbXBsZXx8dGhpcy5mYXN0TnVtYmVycyxlKX1kdEZvcm1hdHRlcihlLHQ9e30pe3JldHVybiBuZXcgeWkoZSx0aGlzLmludGwsdCl9cmVsRm9ybWF0dGVyKGU9e30pe3JldHVybiBuZXcgZ2kodGhpcy5pbnRsLHRoaXMuaXNFbmdsaXNoKCksZSl9bGlzdEZvcm1hdHRlcihlPXt9KXtyZXR1cm4gTGwodGhpcy5pbnRsLGUpfWlzRW5nbGlzaCgpe3JldHVybiB0aGlzLmxvY2FsZT09PVxcXCJlblxcXCJ8fHRoaXMubG9jYWxlLnRvTG93ZXJDYXNlKCk9PT1cXFwiZW4tdXNcXFwifHxuZXcgSW50bC5EYXRlVGltZUZvcm1hdCh0aGlzLmludGwpLnJlc29sdmVkT3B0aW9ucygpLmxvY2FsZS5zdGFydHNXaXRoKFxcXCJlbi11c1xcXCIpfWVxdWFscyhlKXtyZXR1cm4gdGhpcy5sb2NhbGU9PT1lLmxvY2FsZSYmdGhpcy5udW1iZXJpbmdTeXN0ZW09PT1lLm51bWJlcmluZ1N5c3RlbSYmdGhpcy5vdXRwdXRDYWxlbmRhcj09PWUub3V0cHV0Q2FsZW5kYXJ9fTtmdW5jdGlvbiBtbiguLi5uKXtsZXQgZT1uLnJlZHVjZSgodCxyKT0+dCtyLnNvdXJjZSxcXFwiXFxcIik7cmV0dXJuIFJlZ0V4cChgXiR7ZX0kYCl9ZnVuY3Rpb24gcG4oLi4ubil7cmV0dXJuIGU9Pm4ucmVkdWNlKChbdCxyLHNdLGkpPT57bGV0W28sYSx1XT1pKGUscyk7cmV0dXJuW1IoUih7fSx0KSxvKSxhfHxyLHVdfSxbe30sbnVsbCwxXSkuc2xpY2UoMCwyKX1mdW5jdGlvbiBEbihuLC4uLmUpe2lmKG49PW51bGwpcmV0dXJuW251bGwsbnVsbF07Zm9yKGxldFt0LHJdb2YgZSl7bGV0IHM9dC5leGVjKG4pO2lmKHMpcmV0dXJuIHIocyl9cmV0dXJuW251bGwsbnVsbF19ZnVuY3Rpb24gZWEoLi4ubil7cmV0dXJuKGUsdCk9PntsZXQgcj17fSxzO2ZvcihzPTA7czxuLmxlbmd0aDtzKyspcltuW3NdXT1EdChlW3Qrc10pO3JldHVybltyLG51bGwsdCtzXX19dmFyIHRhPS8oPzooWil8KFsrLV1cXFxcZFxcXFxkKSg/Ojo/KFxcXFxkXFxcXGQpKT8pLyxqbD1gKD86JHt0YS5zb3VyY2V9Pyg/OlxcXFxcXFxcWygke3RpLnNvdXJjZX0pXFxcXFxcXFxdKT8pP2AsYmk9LyhcXFxcZFxcXFxkKSg/Ojo/KFxcXFxkXFxcXGQpKD86Oj8oXFxcXGRcXFxcZCkoPzpbLixdKFxcXFxkezEsMzB9KSk/KT8pPy8sbmE9UmVnRXhwKGAke2JpLnNvdXJjZX0ke2psfWApLEZpPVJlZ0V4cChgKD86VCR7bmEuc291cmNlfSk/YCkscWw9LyhbKy1dXFxcXGR7Nn18XFxcXGR7NH0pKD86LT8oXFxcXGRcXFxcZCkoPzotPyhcXFxcZFxcXFxkKSk/KT8vLFZsPS8oXFxcXGR7NH0pLT9XKFxcXFxkXFxcXGQpKD86LT8oXFxcXGQpKT8vLFVsPS8oXFxcXGR7NH0pLT8oXFxcXGR7M30pLyxLbD1lYShcXFwid2Vla1llYXJcXFwiLFxcXCJ3ZWVrTnVtYmVyXFxcIixcXFwid2Vla0RheVxcXCIpLFdsPWVhKFxcXCJ5ZWFyXFxcIixcXFwib3JkaW5hbFxcXCIpLEhsPS8oXFxcXGR7NH0pLShcXFxcZFxcXFxkKS0oXFxcXGRcXFxcZCkvLHJhPVJlZ0V4cChgJHtiaS5zb3VyY2V9ID8oPzoke3RhLnNvdXJjZX18KCR7dGkuc291cmNlfSkpP2ApLEpsPVJlZ0V4cChgKD86ICR7cmEuc291cmNlfSk/YCk7ZnVuY3Rpb24gaG4obixlLHQpe2xldCByPW5bZV07cmV0dXJuIFcocik/dDpEdChyKX1mdW5jdGlvbiB6bChuLGUpe3JldHVyblt7eWVhcjpobihuLGUpLG1vbnRoOmhuKG4sZSsxLDEpLGRheTpobihuLGUrMiwxKX0sbnVsbCxlKzNdfWZ1bmN0aW9uIHluKG4sZSl7cmV0dXJuW3tob3VyczpobihuLGUsMCksbWludXRlczpobihuLGUrMSwwKSxzZWNvbmRzOmhuKG4sZSsyLDApLG1pbGxpc2Vjb25kczpzcihuW2UrM10pfSxudWxsLGUrNF19ZnVuY3Rpb24gbHIobixlKXtsZXQgdD0hbltlXSYmIW5bZSsxXSxyPVZ0KG5bZSsxXSxuW2UrMl0pLHM9dD9udWxsOmhlLmluc3RhbmNlKHIpO3JldHVyblt7fSxzLGUrM119ZnVuY3Rpb24gY3IobixlKXtsZXQgdD1uW2VdP2dlLmNyZWF0ZShuW2VdKTpudWxsO3JldHVyblt7fSx0LGUrMV19dmFyIFlsPVJlZ0V4cChgXlQ/JHtiaS5zb3VyY2V9JGApLEdsPS9eLT9QKD86KD86KC0/XFxcXGR7MSwyMH0oPzpcXFxcLlxcXFxkezEsMjB9KT8pWSk/KD86KC0/XFxcXGR7MSwyMH0oPzpcXFxcLlxcXFxkezEsMjB9KT8pTSk/KD86KC0/XFxcXGR7MSwyMH0oPzpcXFxcLlxcXFxkezEsMjB9KT8pVyk/KD86KC0/XFxcXGR7MSwyMH0oPzpcXFxcLlxcXFxkezEsMjB9KT8pRCk/KD86VCg/OigtP1xcXFxkezEsMjB9KD86XFxcXC5cXFxcZHsxLDIwfSk/KUgpPyg/OigtP1xcXFxkezEsMjB9KD86XFxcXC5cXFxcZHsxLDIwfSk/KU0pPyg/OigtP1xcXFxkezEsMjB9KSg/OlsuLF0oLT9cXFxcZHsxLDIwfSkpP1MpPyk/KSQvO2Z1bmN0aW9uIFpsKG4pe2xldFtlLHQscixzLGksbyxhLHUsbF09bixmPWVbMF09PT1cXFwiLVxcXCIsZD11JiZ1WzBdPT09XFxcIi1cXFwiLG09KGgsYj0hMSk9PmghPT12b2lkIDAmJihifHxoJiZmKT8taDpoO3JldHVyblt7eWVhcnM6bShDdCh0KSksbW9udGhzOm0oQ3QocikpLHdlZWtzOm0oQ3QocykpLGRheXM6bShDdChpKSksaG91cnM6bShDdChvKSksbWludXRlczptKEN0KGEpKSxzZWNvbmRzOm0oQ3QodSksdT09PVxcXCItMFxcXCIpLG1pbGxpc2Vjb25kczptKHNyKGwpLGQpfV19dmFyIFFsPXtHTVQ6MCxFRFQ6LTQqNjAsRVNUOi01KjYwLENEVDotNSo2MCxDU1Q6LTYqNjAsTURUOi02KjYwLE1TVDotNyo2MCxQRFQ6LTcqNjAsUFNUOi04KjYwfTtmdW5jdGlvbiBFaShuLGUsdCxyLHMsaSxvKXtsZXQgYT17eWVhcjplLmxlbmd0aD09PTI/b3IoRHQoZSkpOkR0KGUpLG1vbnRoOm5pLmluZGV4T2YodCkrMSxkYXk6RHQociksaG91cjpEdChzKSxtaW51dGU6RHQoaSl9O3JldHVybiBvJiYoYS5zZWNvbmQ9RHQobykpLG4mJihhLndlZWtkYXk9bi5sZW5ndGg+Mz9zaS5pbmRleE9mKG4pKzE6aWkuaW5kZXhPZihuKSsxKSxhfXZhciBYbD0vXig/OihNb258VHVlfFdlZHxUaHV8RnJpfFNhdHxTdW4pLFxcXFxzKT8oXFxcXGR7MSwyfSlcXFxccyhKYW58RmVifE1hcnxBcHJ8TWF5fEp1bnxKdWx8QXVnfFNlcHxPY3R8Tm92fERlYylcXFxccyhcXFxcZHsyLDR9KVxcXFxzKFxcXFxkXFxcXGQpOihcXFxcZFxcXFxkKSg/OjooXFxcXGRcXFxcZCkpP1xcXFxzKD86KFVUfEdNVHxbRUNNUF1bU0RdVCl8KFtael0pfCg/OihbKy1dXFxcXGRcXFxcZCkoXFxcXGRcXFxcZCkpKSQvO2Z1bmN0aW9uIGVjKG4pe2xldFssZSx0LHIscyxpLG8sYSx1LGwsZixkXT1uLG09RWkoZSxzLHIsdCxpLG8sYSksaDtyZXR1cm4gdT9oPVFsW3VdOmw/aD0wOmg9VnQoZixkKSxbbSxuZXcgaGUoaCldfWZ1bmN0aW9uIHRjKG4pe3JldHVybiBuLnJlcGxhY2UoL1xcXFwoW14oKV0qXFxcXCl8W1xcXFxuXFxcXHRdL2csXFxcIiBcXFwiKS5yZXBsYWNlKC8oXFxcXHNcXFxccyspL2csXFxcIiBcXFwiKS50cmltKCl9dmFyIG5jPS9eKE1vbnxUdWV8V2VkfFRodXxGcml8U2F0fFN1biksIChcXFxcZFxcXFxkKSAoSmFufEZlYnxNYXJ8QXByfE1heXxKdW58SnVsfEF1Z3xTZXB8T2N0fE5vdnxEZWMpIChcXFxcZHs0fSkgKFxcXFxkXFxcXGQpOihcXFxcZFxcXFxkKTooXFxcXGRcXFxcZCkgR01UJC8scmM9L14oTW9uZGF5fFR1ZXNkYXl8V2VkbmVzZGF5fFRodXJzZGF5fEZyaWRheXxTYXR1cmRheXxTdW5kYXkpLCAoXFxcXGRcXFxcZCktKEphbnxGZWJ8TWFyfEFwcnxNYXl8SnVufEp1bHxBdWd8U2VwfE9jdHxOb3Z8RGVjKS0oXFxcXGRcXFxcZCkgKFxcXFxkXFxcXGQpOihcXFxcZFxcXFxkKTooXFxcXGRcXFxcZCkgR01UJC8sc2M9L14oTW9ufFR1ZXxXZWR8VGh1fEZyaXxTYXR8U3VuKSAoSmFufEZlYnxNYXJ8QXByfE1heXxKdW58SnVsfEF1Z3xTZXB8T2N0fE5vdnxEZWMpICggXFxcXGR8XFxcXGRcXFxcZCkgKFxcXFxkXFxcXGQpOihcXFxcZFxcXFxkKTooXFxcXGRcXFxcZCkgKFxcXFxkezR9KSQvO2Z1bmN0aW9uIFhvKG4pe2xldFssZSx0LHIscyxpLG8sYV09bjtyZXR1cm5bRWkoZSxzLHIsdCxpLG8sYSksaGUudXRjSW5zdGFuY2VdfWZ1bmN0aW9uIGljKG4pe2xldFssZSx0LHIscyxpLG8sYV09bjtyZXR1cm5bRWkoZSxhLHQscixzLGksbyksaGUudXRjSW5zdGFuY2VdfXZhciBvYz1tbihxbCxGaSksYWM9bW4oVmwsRmkpLHVjPW1uKFVsLEZpKSxsYz1tbihuYSksc2E9cG4oemwseW4sbHIsY3IpLGNjPXBuKEtsLHluLGxyLGNyKSxmYz1wbihXbCx5bixscixjciksZGM9cG4oeW4sbHIsY3IpO2Z1bmN0aW9uIGlhKG4pe3JldHVybiBEbihuLFtvYyxzYV0sW2FjLGNjXSxbdWMsZmNdLFtsYyxkY10pfWZ1bmN0aW9uIG9hKG4pe3JldHVybiBEbih0YyhuKSxbWGwsZWNdKX1mdW5jdGlvbiBhYShuKXtyZXR1cm4gRG4obixbbmMsWG9dLFtyYyxYb10sW3NjLGljXSl9ZnVuY3Rpb24gdWEobil7cmV0dXJuIERuKG4sW0dsLFpsXSl9dmFyIGhjPXBuKHluKTtmdW5jdGlvbiBsYShuKXtyZXR1cm4gRG4obixbWWwsaGNdKX12YXIgbWM9bW4oSGwsSmwpLHBjPW1uKHJhKSxEYz1wbih5bixscixjcik7ZnVuY3Rpb24gY2Eobil7cmV0dXJuIERuKG4sW21jLHNhXSxbcGMsRGNdKX12YXIgeWM9XFxcIkludmFsaWQgRHVyYXRpb25cXFwiLGZhPXt3ZWVrczp7ZGF5czo3LGhvdXJzOjcqMjQsbWludXRlczo3KjI0KjYwLHNlY29uZHM6NyoyNCo2MCo2MCxtaWxsaXNlY29uZHM6NyoyNCo2MCo2MCoxZTN9LGRheXM6e2hvdXJzOjI0LG1pbnV0ZXM6MjQqNjAsc2Vjb25kczoyNCo2MCo2MCxtaWxsaXNlY29uZHM6MjQqNjAqNjAqMWUzfSxob3Vyczp7bWludXRlczo2MCxzZWNvbmRzOjYwKjYwLG1pbGxpc2Vjb25kczo2MCo2MCoxZTN9LG1pbnV0ZXM6e3NlY29uZHM6NjAsbWlsbGlzZWNvbmRzOjYwKjFlM30sc2Vjb25kczp7bWlsbGlzZWNvbmRzOjFlM319LGdjPVIoe3llYXJzOntxdWFydGVyczo0LG1vbnRoczoxMix3ZWVrczo1MixkYXlzOjM2NSxob3VyczozNjUqMjQsbWludXRlczozNjUqMjQqNjAsc2Vjb25kczozNjUqMjQqNjAqNjAsbWlsbGlzZWNvbmRzOjM2NSoyNCo2MCo2MCoxZTN9LHF1YXJ0ZXJzOnttb250aHM6Myx3ZWVrczoxMyxkYXlzOjkxLGhvdXJzOjkxKjI0LG1pbnV0ZXM6OTEqMjQqNjAsc2Vjb25kczo5MSoyNCo2MCo2MCxtaWxsaXNlY29uZHM6OTEqMjQqNjAqNjAqMWUzfSxtb250aHM6e3dlZWtzOjQsZGF5czozMCxob3VyczozMCoyNCxtaW51dGVzOjMwKjI0KjYwLHNlY29uZHM6MzAqMjQqNjAqNjAsbWlsbGlzZWNvbmRzOjMwKjI0KjYwKjYwKjFlM319LGZhKSxNZT0xNDYwOTcvNDAwLGduPTE0NjA5Ny80ODAwLGJjPVIoe3llYXJzOntxdWFydGVyczo0LG1vbnRoczoxMix3ZWVrczpNZS83LGRheXM6TWUsaG91cnM6TWUqMjQsbWludXRlczpNZSoyNCo2MCxzZWNvbmRzOk1lKjI0KjYwKjYwLG1pbGxpc2Vjb25kczpNZSoyNCo2MCo2MCoxZTN9LHF1YXJ0ZXJzOnttb250aHM6Myx3ZWVrczpNZS8yOCxkYXlzOk1lLzQsaG91cnM6TWUqMjQvNCxtaW51dGVzOk1lKjI0KjYwLzQsc2Vjb25kczpNZSoyNCo2MCo2MC80LG1pbGxpc2Vjb25kczpNZSoyNCo2MCo2MCoxZTMvNH0sbW9udGhzOnt3ZWVrczpnbi83LGRheXM6Z24saG91cnM6Z24qMjQsbWludXRlczpnbioyNCo2MCxzZWNvbmRzOmduKjI0KjYwKjYwLG1pbGxpc2Vjb25kczpnbioyNCo2MCo2MCoxZTN9fSxmYSksS3Q9W1xcXCJ5ZWFyc1xcXCIsXFxcInF1YXJ0ZXJzXFxcIixcXFwibW9udGhzXFxcIixcXFwid2Vla3NcXFwiLFxcXCJkYXlzXFxcIixcXFwiaG91cnNcXFwiLFxcXCJtaW51dGVzXFxcIixcXFwic2Vjb25kc1xcXCIsXFxcIm1pbGxpc2Vjb25kc1xcXCJdLEZjPUt0LnNsaWNlKDApLnJldmVyc2UoKTtmdW5jdGlvbiBVdChuLGUsdD0hMSl7bGV0IHI9e3ZhbHVlczp0P2UudmFsdWVzOlIoUih7fSxuLnZhbHVlcyksZS52YWx1ZXN8fHt9KSxsb2M6bi5sb2MuY2xvbmUoZS5sb2MpLGNvbnZlcnNpb25BY2N1cmFjeTplLmNvbnZlcnNpb25BY2N1cmFjeXx8bi5jb252ZXJzaW9uQWNjdXJhY3l9O3JldHVybiBuZXcgQihyKX1mdW5jdGlvbiBFYyhuKXtyZXR1cm4gbjwwP01hdGguZmxvb3Iobik6TWF0aC5jZWlsKG4pfWZ1bmN0aW9uIGRhKG4sZSx0LHIscyl7bGV0IGk9bltzXVt0XSxvPWVbdF0vaSxhPU1hdGguc2lnbihvKT09PU1hdGguc2lnbihyW3NdKSx1PSFhJiZyW3NdIT09MCYmTWF0aC5hYnMobyk8PTE/RWMobyk6TWF0aC50cnVuYyhvKTtyW3NdKz11LGVbdF0tPXUqaX1mdW5jdGlvbiB3YyhuLGUpe0ZjLnJlZHVjZSgodCxyKT0+VyhlW3JdKT90Oih0JiZkYShuLGUsdCxlLHIpLHIpLG51bGwpfXZhciBCPWNsYXNzIG57Y29uc3RydWN0b3IoZSl7bGV0IHQ9ZS5jb252ZXJzaW9uQWNjdXJhY3k9PT1cXFwibG9uZ3Rlcm1cXFwifHwhMTt0aGlzLnZhbHVlcz1lLnZhbHVlcyx0aGlzLmxvYz1lLmxvY3x8bmUuY3JlYXRlKCksdGhpcy5jb252ZXJzaW9uQWNjdXJhY3k9dD9cXFwibG9uZ3Rlcm1cXFwiOlxcXCJjYXN1YWxcXFwiLHRoaXMuaW52YWxpZD1lLmludmFsaWR8fG51bGwsdGhpcy5tYXRyaXg9dD9iYzpnYyx0aGlzLmlzTHV4b25EdXJhdGlvbj0hMH1zdGF0aWMgZnJvbU1pbGxpcyhlLHQpe3JldHVybiBuLmZyb21PYmplY3Qoe21pbGxpc2Vjb25kczplfSx0KX1zdGF0aWMgZnJvbU9iamVjdChlLHQ9e30pe2lmKGU9PW51bGx8fHR5cGVvZiBlIT1cXFwib2JqZWN0XFxcIil0aHJvdyBuZXcgZmUoYER1cmF0aW9uLmZyb21PYmplY3Q6IGFyZ3VtZW50IGV4cGVjdGVkIHRvIGJlIGFuIG9iamVjdCwgZ290ICR7ZT09PW51bGw/XFxcIm51bGxcXFwiOnR5cGVvZiBlfWApO3JldHVybiBuZXcgbih7dmFsdWVzOmNuKGUsbi5ub3JtYWxpemVVbml0KSxsb2M6bmUuZnJvbU9iamVjdCh0KSxjb252ZXJzaW9uQWNjdXJhY3k6dC5jb252ZXJzaW9uQWNjdXJhY3l9KX1zdGF0aWMgZnJvbUR1cmF0aW9uTGlrZShlKXtpZih0dChlKSlyZXR1cm4gbi5mcm9tTWlsbGlzKGUpO2lmKG4uaXNEdXJhdGlvbihlKSlyZXR1cm4gZTtpZih0eXBlb2YgZT09XFxcIm9iamVjdFxcXCIpcmV0dXJuIG4uZnJvbU9iamVjdChlKTt0aHJvdyBuZXcgZmUoYFVua25vd24gZHVyYXRpb24gYXJndW1lbnQgJHtlfSBvZiB0eXBlICR7dHlwZW9mIGV9YCl9c3RhdGljIGZyb21JU08oZSx0KXtsZXRbcl09dWEoZSk7cmV0dXJuIHI/bi5mcm9tT2JqZWN0KHIsdCk6bi5pbnZhbGlkKFxcXCJ1bnBhcnNhYmxlXFxcIixgdGhlIGlucHV0IFxcXCIke2V9XFxcIiBjYW4ndCBiZSBwYXJzZWQgYXMgSVNPIDg2MDFgKX1zdGF0aWMgZnJvbUlTT1RpbWUoZSx0KXtsZXRbcl09bGEoZSk7cmV0dXJuIHI/bi5mcm9tT2JqZWN0KHIsdCk6bi5pbnZhbGlkKFxcXCJ1bnBhcnNhYmxlXFxcIixgdGhlIGlucHV0IFxcXCIke2V9XFxcIiBjYW4ndCBiZSBwYXJzZWQgYXMgSVNPIDg2MDFgKX1zdGF0aWMgaW52YWxpZChlLHQ9bnVsbCl7aWYoIWUpdGhyb3cgbmV3IGZlKFxcXCJuZWVkIHRvIHNwZWNpZnkgYSByZWFzb24gdGhlIER1cmF0aW9uIGlzIGludmFsaWRcXFwiKTtsZXQgcj1lIGluc3RhbmNlb2YgZGU/ZTpuZXcgZGUoZSx0KTtpZihYLnRocm93T25JbnZhbGlkKXRocm93IG5ldyBXcihyKTtyZXR1cm4gbmV3IG4oe2ludmFsaWQ6cn0pfXN0YXRpYyBub3JtYWxpemVVbml0KGUpe2xldCB0PXt5ZWFyOlxcXCJ5ZWFyc1xcXCIseWVhcnM6XFxcInllYXJzXFxcIixxdWFydGVyOlxcXCJxdWFydGVyc1xcXCIscXVhcnRlcnM6XFxcInF1YXJ0ZXJzXFxcIixtb250aDpcXFwibW9udGhzXFxcIixtb250aHM6XFxcIm1vbnRoc1xcXCIsd2VlazpcXFwid2Vla3NcXFwiLHdlZWtzOlxcXCJ3ZWVrc1xcXCIsZGF5OlxcXCJkYXlzXFxcIixkYXlzOlxcXCJkYXlzXFxcIixob3VyOlxcXCJob3Vyc1xcXCIsaG91cnM6XFxcImhvdXJzXFxcIixtaW51dGU6XFxcIm1pbnV0ZXNcXFwiLG1pbnV0ZXM6XFxcIm1pbnV0ZXNcXFwiLHNlY29uZDpcXFwic2Vjb25kc1xcXCIsc2Vjb25kczpcXFwic2Vjb25kc1xcXCIsbWlsbGlzZWNvbmQ6XFxcIm1pbGxpc2Vjb25kc1xcXCIsbWlsbGlzZWNvbmRzOlxcXCJtaWxsaXNlY29uZHNcXFwifVtlJiZlLnRvTG93ZXJDYXNlKCldO2lmKCF0KXRocm93IG5ldyBzbihlKTtyZXR1cm4gdH1zdGF0aWMgaXNEdXJhdGlvbihlKXtyZXR1cm4gZSYmZS5pc0x1eG9uRHVyYXRpb258fCExfWdldCBsb2NhbGUoKXtyZXR1cm4gdGhpcy5pc1ZhbGlkP3RoaXMubG9jLmxvY2FsZTpudWxsfWdldCBudW1iZXJpbmdTeXN0ZW0oKXtyZXR1cm4gdGhpcy5pc1ZhbGlkP3RoaXMubG9jLm51bWJlcmluZ1N5c3RlbTpudWxsfXRvRm9ybWF0KGUsdD17fSl7bGV0IHI9eWUoUih7fSx0KSx7Zmxvb3I6dC5yb3VuZCE9PSExJiZ0LmZsb29yIT09ITF9KTtyZXR1cm4gdGhpcy5pc1ZhbGlkP3dlLmNyZWF0ZSh0aGlzLmxvYyxyKS5mb3JtYXREdXJhdGlvbkZyb21TdHJpbmcodGhpcyxlKTp5Y310b0h1bWFuKGU9e30pe2xldCB0PUt0Lm1hcChyPT57bGV0IHM9dGhpcy52YWx1ZXNbcl07cmV0dXJuIFcocyk/bnVsbDp0aGlzLmxvYy5udW1iZXJGb3JtYXR0ZXIoeWUoUih7c3R5bGU6XFxcInVuaXRcXFwiLHVuaXREaXNwbGF5OlxcXCJsb25nXFxcIn0sZSkse3VuaXQ6ci5zbGljZSgwLC0xKX0pKS5mb3JtYXQocyl9KS5maWx0ZXIocj0+cik7cmV0dXJuIHRoaXMubG9jLmxpc3RGb3JtYXR0ZXIoUih7dHlwZTpcXFwiY29uanVuY3Rpb25cXFwiLHN0eWxlOmUubGlzdFN0eWxlfHxcXFwibmFycm93XFxcIn0sZSkpLmZvcm1hdCh0KX10b09iamVjdCgpe3JldHVybiB0aGlzLmlzVmFsaWQ/Uih7fSx0aGlzLnZhbHVlcyk6e319dG9JU08oKXtpZighdGhpcy5pc1ZhbGlkKXJldHVybiBudWxsO2xldCBlPVxcXCJQXFxcIjtyZXR1cm4gdGhpcy55ZWFycyE9PTAmJihlKz10aGlzLnllYXJzK1xcXCJZXFxcIiksKHRoaXMubW9udGhzIT09MHx8dGhpcy5xdWFydGVycyE9PTApJiYoZSs9dGhpcy5tb250aHMrdGhpcy5xdWFydGVycyozK1xcXCJNXFxcIiksdGhpcy53ZWVrcyE9PTAmJihlKz10aGlzLndlZWtzK1xcXCJXXFxcIiksdGhpcy5kYXlzIT09MCYmKGUrPXRoaXMuZGF5cytcXFwiRFxcXCIpLCh0aGlzLmhvdXJzIT09MHx8dGhpcy5taW51dGVzIT09MHx8dGhpcy5zZWNvbmRzIT09MHx8dGhpcy5taWxsaXNlY29uZHMhPT0wKSYmKGUrPVxcXCJUXFxcIiksdGhpcy5ob3VycyE9PTAmJihlKz10aGlzLmhvdXJzK1xcXCJIXFxcIiksdGhpcy5taW51dGVzIT09MCYmKGUrPXRoaXMubWludXRlcytcXFwiTVxcXCIpLCh0aGlzLnNlY29uZHMhPT0wfHx0aGlzLm1pbGxpc2Vjb25kcyE9PTApJiYoZSs9YW4odGhpcy5zZWNvbmRzK3RoaXMubWlsbGlzZWNvbmRzLzFlMywzKStcXFwiU1xcXCIpLGU9PT1cXFwiUFxcXCImJihlKz1cXFwiVDBTXFxcIiksZX10b0lTT1RpbWUoZT17fSl7aWYoIXRoaXMuaXNWYWxpZClyZXR1cm4gbnVsbDtsZXQgdD10aGlzLnRvTWlsbGlzKCk7aWYodDwwfHx0Pj04NjRlNSlyZXR1cm4gbnVsbDtlPVIoe3N1cHByZXNzTWlsbGlzZWNvbmRzOiExLHN1cHByZXNzU2Vjb25kczohMSxpbmNsdWRlUHJlZml4OiExLGZvcm1hdDpcXFwiZXh0ZW5kZWRcXFwifSxlKTtsZXQgcj10aGlzLnNoaWZ0VG8oXFxcImhvdXJzXFxcIixcXFwibWludXRlc1xcXCIsXFxcInNlY29uZHNcXFwiLFxcXCJtaWxsaXNlY29uZHNcXFwiKSxzPWUuZm9ybWF0PT09XFxcImJhc2ljXFxcIj9cXFwiaGhtbVxcXCI6XFxcImhoOm1tXFxcIjsoIWUuc3VwcHJlc3NTZWNvbmRzfHxyLnNlY29uZHMhPT0wfHxyLm1pbGxpc2Vjb25kcyE9PTApJiYocys9ZS5mb3JtYXQ9PT1cXFwiYmFzaWNcXFwiP1xcXCJzc1xcXCI6XFxcIjpzc1xcXCIsKCFlLnN1cHByZXNzTWlsbGlzZWNvbmRzfHxyLm1pbGxpc2Vjb25kcyE9PTApJiYocys9XFxcIi5TU1NcXFwiKSk7bGV0IGk9ci50b0Zvcm1hdChzKTtyZXR1cm4gZS5pbmNsdWRlUHJlZml4JiYoaT1cXFwiVFxcXCIraSksaX10b0pTT04oKXtyZXR1cm4gdGhpcy50b0lTTygpfXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMudG9JU08oKX10b01pbGxpcygpe3JldHVybiB0aGlzLmFzKFxcXCJtaWxsaXNlY29uZHNcXFwiKX12YWx1ZU9mKCl7cmV0dXJuIHRoaXMudG9NaWxsaXMoKX1wbHVzKGUpe2lmKCF0aGlzLmlzVmFsaWQpcmV0dXJuIHRoaXM7bGV0IHQ9bi5mcm9tRHVyYXRpb25MaWtlKGUpLHI9e307Zm9yKGxldCBzIG9mIEt0KShrdCh0LnZhbHVlcyxzKXx8a3QodGhpcy52YWx1ZXMscykpJiYocltzXT10LmdldChzKSt0aGlzLmdldChzKSk7cmV0dXJuIFV0KHRoaXMse3ZhbHVlczpyfSwhMCl9bWludXMoZSl7aWYoIXRoaXMuaXNWYWxpZClyZXR1cm4gdGhpcztsZXQgdD1uLmZyb21EdXJhdGlvbkxpa2UoZSk7cmV0dXJuIHRoaXMucGx1cyh0Lm5lZ2F0ZSgpKX1tYXBVbml0cyhlKXtpZighdGhpcy5pc1ZhbGlkKXJldHVybiB0aGlzO2xldCB0PXt9O2ZvcihsZXQgciBvZiBPYmplY3Qua2V5cyh0aGlzLnZhbHVlcykpdFtyXT1laShlKHRoaXMudmFsdWVzW3JdLHIpKTtyZXR1cm4gVXQodGhpcyx7dmFsdWVzOnR9LCEwKX1nZXQoZSl7cmV0dXJuIHRoaXNbbi5ub3JtYWxpemVVbml0KGUpXX1zZXQoZSl7aWYoIXRoaXMuaXNWYWxpZClyZXR1cm4gdGhpcztsZXQgdD1SKFIoe30sdGhpcy52YWx1ZXMpLGNuKGUsbi5ub3JtYWxpemVVbml0KSk7cmV0dXJuIFV0KHRoaXMse3ZhbHVlczp0fSl9cmVjb25maWd1cmUoe2xvY2FsZTplLG51bWJlcmluZ1N5c3RlbTp0LGNvbnZlcnNpb25BY2N1cmFjeTpyfT17fSl7bGV0IHM9dGhpcy5sb2MuY2xvbmUoe2xvY2FsZTplLG51bWJlcmluZ1N5c3RlbTp0fSksaT17bG9jOnN9O3JldHVybiByJiYoaS5jb252ZXJzaW9uQWNjdXJhY3k9ciksVXQodGhpcyxpKX1hcyhlKXtyZXR1cm4gdGhpcy5pc1ZhbGlkP3RoaXMuc2hpZnRUbyhlKS5nZXQoZSk6TmFOfW5vcm1hbGl6ZSgpe2lmKCF0aGlzLmlzVmFsaWQpcmV0dXJuIHRoaXM7bGV0IGU9dGhpcy50b09iamVjdCgpO3JldHVybiB3Yyh0aGlzLm1hdHJpeCxlKSxVdCh0aGlzLHt2YWx1ZXM6ZX0sITApfXNoaWZ0VG8oLi4uZSl7aWYoIXRoaXMuaXNWYWxpZClyZXR1cm4gdGhpcztpZihlLmxlbmd0aD09PTApcmV0dXJuIHRoaXM7ZT1lLm1hcChvPT5uLm5vcm1hbGl6ZVVuaXQobykpO2xldCB0PXt9LHI9e30scz10aGlzLnRvT2JqZWN0KCksaTtmb3IobGV0IG8gb2YgS3QpaWYoZS5pbmRleE9mKG8pPj0wKXtpPW87bGV0IGE9MDtmb3IobGV0IGwgaW4gcilhKz10aGlzLm1hdHJpeFtsXVtvXSpyW2xdLHJbbF09MDt0dChzW29dKSYmKGErPXNbb10pO2xldCB1PU1hdGgudHJ1bmMoYSk7dFtvXT11LHJbb109KGEqMWUzLXUqMWUzKS8xZTM7Zm9yKGxldCBsIGluIHMpS3QuaW5kZXhPZihsKT5LdC5pbmRleE9mKG8pJiZkYSh0aGlzLm1hdHJpeCxzLGwsdCxvKX1lbHNlIHR0KHNbb10pJiYocltvXT1zW29dKTtmb3IobGV0IG8gaW4gcilyW29dIT09MCYmKHRbaV0rPW89PT1pP3Jbb106cltvXS90aGlzLm1hdHJpeFtpXVtvXSk7cmV0dXJuIFV0KHRoaXMse3ZhbHVlczp0fSwhMCkubm9ybWFsaXplKCl9bmVnYXRlKCl7aWYoIXRoaXMuaXNWYWxpZClyZXR1cm4gdGhpcztsZXQgZT17fTtmb3IobGV0IHQgb2YgT2JqZWN0LmtleXModGhpcy52YWx1ZXMpKWVbdF09dGhpcy52YWx1ZXNbdF09PT0wPzA6LXRoaXMudmFsdWVzW3RdO3JldHVybiBVdCh0aGlzLHt2YWx1ZXM6ZX0sITApfWdldCB5ZWFycygpe3JldHVybiB0aGlzLmlzVmFsaWQ/dGhpcy52YWx1ZXMueWVhcnN8fDA6TmFOfWdldCBxdWFydGVycygpe3JldHVybiB0aGlzLmlzVmFsaWQ/dGhpcy52YWx1ZXMucXVhcnRlcnN8fDA6TmFOfWdldCBtb250aHMoKXtyZXR1cm4gdGhpcy5pc1ZhbGlkP3RoaXMudmFsdWVzLm1vbnRoc3x8MDpOYU59Z2V0IHdlZWtzKCl7cmV0dXJuIHRoaXMuaXNWYWxpZD90aGlzLnZhbHVlcy53ZWVrc3x8MDpOYU59Z2V0IGRheXMoKXtyZXR1cm4gdGhpcy5pc1ZhbGlkP3RoaXMudmFsdWVzLmRheXN8fDA6TmFOfWdldCBob3Vycygpe3JldHVybiB0aGlzLmlzVmFsaWQ/dGhpcy52YWx1ZXMuaG91cnN8fDA6TmFOfWdldCBtaW51dGVzKCl7cmV0dXJuIHRoaXMuaXNWYWxpZD90aGlzLnZhbHVlcy5taW51dGVzfHwwOk5hTn1nZXQgc2Vjb25kcygpe3JldHVybiB0aGlzLmlzVmFsaWQ/dGhpcy52YWx1ZXMuc2Vjb25kc3x8MDpOYU59Z2V0IG1pbGxpc2Vjb25kcygpe3JldHVybiB0aGlzLmlzVmFsaWQ/dGhpcy52YWx1ZXMubWlsbGlzZWNvbmRzfHwwOk5hTn1nZXQgaXNWYWxpZCgpe3JldHVybiB0aGlzLmludmFsaWQ9PT1udWxsfWdldCBpbnZhbGlkUmVhc29uKCl7cmV0dXJuIHRoaXMuaW52YWxpZD90aGlzLmludmFsaWQucmVhc29uOm51bGx9Z2V0IGludmFsaWRFeHBsYW5hdGlvbigpe3JldHVybiB0aGlzLmludmFsaWQ/dGhpcy5pbnZhbGlkLmV4cGxhbmF0aW9uOm51bGx9ZXF1YWxzKGUpe2lmKCF0aGlzLmlzVmFsaWR8fCFlLmlzVmFsaWR8fCF0aGlzLmxvYy5lcXVhbHMoZS5sb2MpKXJldHVybiExO2Z1bmN0aW9uIHQocixzKXtyZXR1cm4gcj09PXZvaWQgMHx8cj09PTA/cz09PXZvaWQgMHx8cz09PTA6cj09PXN9Zm9yKGxldCByIG9mIEt0KWlmKCF0KHRoaXMudmFsdWVzW3JdLGUudmFsdWVzW3JdKSlyZXR1cm4hMTtyZXR1cm4hMH19O3ZhciBmcj1cXFwiSW52YWxpZCBJbnRlcnZhbFxcXCI7ZnVuY3Rpb24gVGMobixlKXtyZXR1cm4hbnx8IW4uaXNWYWxpZD95dC5pbnZhbGlkKFxcXCJtaXNzaW5nIG9yIGludmFsaWQgc3RhcnRcXFwiKTohZXx8IWUuaXNWYWxpZD95dC5pbnZhbGlkKFxcXCJtaXNzaW5nIG9yIGludmFsaWQgZW5kXFxcIik6ZTxuP3l0LmludmFsaWQoXFxcImVuZCBiZWZvcmUgc3RhcnRcXFwiLGBUaGUgZW5kIG9mIGFuIGludGVydmFsIG11c3QgYmUgYWZ0ZXIgaXRzIHN0YXJ0LCBidXQgeW91IGhhZCBzdGFydD0ke24udG9JU08oKX0gYW5kIGVuZD0ke2UudG9JU08oKX1gKTpudWxsfXZhciB5dD1jbGFzcyBue2NvbnN0cnVjdG9yKGUpe3RoaXMucz1lLnN0YXJ0LHRoaXMuZT1lLmVuZCx0aGlzLmludmFsaWQ9ZS5pbnZhbGlkfHxudWxsLHRoaXMuaXNMdXhvbkludGVydmFsPSEwfXN0YXRpYyBpbnZhbGlkKGUsdD1udWxsKXtpZighZSl0aHJvdyBuZXcgZmUoXFxcIm5lZWQgdG8gc3BlY2lmeSBhIHJlYXNvbiB0aGUgSW50ZXJ2YWwgaXMgaW52YWxpZFxcXCIpO2xldCByPWUgaW5zdGFuY2VvZiBkZT9lOm5ldyBkZShlLHQpO2lmKFgudGhyb3dPbkludmFsaWQpdGhyb3cgbmV3IEtyKHIpO3JldHVybiBuZXcgbih7aW52YWxpZDpyfSl9c3RhdGljIGZyb21EYXRlVGltZXMoZSx0KXtsZXQgcj1ibihlKSxzPWJuKHQpLGk9VGMocixzKTtyZXR1cm4gaT09bnVsbD9uZXcgbih7c3RhcnQ6cixlbmQ6c30pOml9c3RhdGljIGFmdGVyKGUsdCl7bGV0IHI9Qi5mcm9tRHVyYXRpb25MaWtlKHQpLHM9Ym4oZSk7cmV0dXJuIG4uZnJvbURhdGVUaW1lcyhzLHMucGx1cyhyKSl9c3RhdGljIGJlZm9yZShlLHQpe2xldCByPUIuZnJvbUR1cmF0aW9uTGlrZSh0KSxzPWJuKGUpO3JldHVybiBuLmZyb21EYXRlVGltZXMocy5taW51cyhyKSxzKX1zdGF0aWMgZnJvbUlTTyhlLHQpe2xldFtyLHNdPShlfHxcXFwiXFxcIikuc3BsaXQoXFxcIi9cXFwiLDIpO2lmKHImJnMpe2xldCBpLG87dHJ5e2k9cS5mcm9tSVNPKHIsdCksbz1pLmlzVmFsaWR9Y2F0Y2gobCl7bz0hMX1sZXQgYSx1O3RyeXthPXEuZnJvbUlTTyhzLHQpLHU9YS5pc1ZhbGlkfWNhdGNoKGwpe3U9ITF9aWYobyYmdSlyZXR1cm4gbi5mcm9tRGF0ZVRpbWVzKGksYSk7aWYobyl7bGV0IGw9Qi5mcm9tSVNPKHMsdCk7aWYobC5pc1ZhbGlkKXJldHVybiBuLmFmdGVyKGksbCl9ZWxzZSBpZih1KXtsZXQgbD1CLmZyb21JU08ocix0KTtpZihsLmlzVmFsaWQpcmV0dXJuIG4uYmVmb3JlKGEsbCl9fXJldHVybiBuLmludmFsaWQoXFxcInVucGFyc2FibGVcXFwiLGB0aGUgaW5wdXQgXFxcIiR7ZX1cXFwiIGNhbid0IGJlIHBhcnNlZCBhcyBJU08gODYwMWApfXN0YXRpYyBpc0ludGVydmFsKGUpe3JldHVybiBlJiZlLmlzTHV4b25JbnRlcnZhbHx8ITF9Z2V0IHN0YXJ0KCl7cmV0dXJuIHRoaXMuaXNWYWxpZD90aGlzLnM6bnVsbH1nZXQgZW5kKCl7cmV0dXJuIHRoaXMuaXNWYWxpZD90aGlzLmU6bnVsbH1nZXQgaXNWYWxpZCgpe3JldHVybiB0aGlzLmludmFsaWRSZWFzb249PT1udWxsfWdldCBpbnZhbGlkUmVhc29uKCl7cmV0dXJuIHRoaXMuaW52YWxpZD90aGlzLmludmFsaWQucmVhc29uOm51bGx9Z2V0IGludmFsaWRFeHBsYW5hdGlvbigpe3JldHVybiB0aGlzLmludmFsaWQ/dGhpcy5pbnZhbGlkLmV4cGxhbmF0aW9uOm51bGx9bGVuZ3RoKGU9XFxcIm1pbGxpc2Vjb25kc1xcXCIpe3JldHVybiB0aGlzLmlzVmFsaWQ/dGhpcy50b0R1cmF0aW9uKGUpLmdldChlKTpOYU59Y291bnQoZT1cXFwibWlsbGlzZWNvbmRzXFxcIil7aWYoIXRoaXMuaXNWYWxpZClyZXR1cm4gTmFOO2xldCB0PXRoaXMuc3RhcnQuc3RhcnRPZihlKSxyPXRoaXMuZW5kLnN0YXJ0T2YoZSk7cmV0dXJuIE1hdGguZmxvb3Ioci5kaWZmKHQsZSkuZ2V0KGUpKSsxfWhhc1NhbWUoZSl7cmV0dXJuIHRoaXMuaXNWYWxpZD90aGlzLmlzRW1wdHkoKXx8dGhpcy5lLm1pbnVzKDEpLmhhc1NhbWUodGhpcy5zLGUpOiExfWlzRW1wdHkoKXtyZXR1cm4gdGhpcy5zLnZhbHVlT2YoKT09PXRoaXMuZS52YWx1ZU9mKCl9aXNBZnRlcihlKXtyZXR1cm4gdGhpcy5pc1ZhbGlkP3RoaXMucz5lOiExfWlzQmVmb3JlKGUpe3JldHVybiB0aGlzLmlzVmFsaWQ/dGhpcy5lPD1lOiExfWNvbnRhaW5zKGUpe3JldHVybiB0aGlzLmlzVmFsaWQ/dGhpcy5zPD1lJiZ0aGlzLmU+ZTohMX1zZXQoe3N0YXJ0OmUsZW5kOnR9PXt9KXtyZXR1cm4gdGhpcy5pc1ZhbGlkP24uZnJvbURhdGVUaW1lcyhlfHx0aGlzLnMsdHx8dGhpcy5lKTp0aGlzfXNwbGl0QXQoLi4uZSl7aWYoIXRoaXMuaXNWYWxpZClyZXR1cm5bXTtsZXQgdD1lLm1hcChibikuZmlsdGVyKG89PnRoaXMuY29udGFpbnMobykpLnNvcnQoKSxyPVtdLHtzfT10aGlzLGk9MDtmb3IoO3M8dGhpcy5lOyl7bGV0IG89dFtpXXx8dGhpcy5lLGE9K28+K3RoaXMuZT90aGlzLmU6bztyLnB1c2gobi5mcm9tRGF0ZVRpbWVzKHMsYSkpLHM9YSxpKz0xfXJldHVybiByfXNwbGl0QnkoZSl7bGV0IHQ9Qi5mcm9tRHVyYXRpb25MaWtlKGUpO2lmKCF0aGlzLmlzVmFsaWR8fCF0LmlzVmFsaWR8fHQuYXMoXFxcIm1pbGxpc2Vjb25kc1xcXCIpPT09MClyZXR1cm5bXTtsZXR7czpyfT10aGlzLHM9MSxpLG89W107Zm9yKDtyPHRoaXMuZTspe2xldCBhPXRoaXMuc3RhcnQucGx1cyh0Lm1hcFVuaXRzKHU9PnUqcykpO2k9K2E+K3RoaXMuZT90aGlzLmU6YSxvLnB1c2gobi5mcm9tRGF0ZVRpbWVzKHIsaSkpLHI9aSxzKz0xfXJldHVybiBvfWRpdmlkZUVxdWFsbHkoZSl7cmV0dXJuIHRoaXMuaXNWYWxpZD90aGlzLnNwbGl0QnkodGhpcy5sZW5ndGgoKS9lKS5zbGljZSgwLGUpOltdfW92ZXJsYXBzKGUpe3JldHVybiB0aGlzLmU+ZS5zJiZ0aGlzLnM8ZS5lfWFidXRzU3RhcnQoZSl7cmV0dXJuIHRoaXMuaXNWYWxpZD8rdGhpcy5lPT0rZS5zOiExfWFidXRzRW5kKGUpe3JldHVybiB0aGlzLmlzVmFsaWQ/K2UuZT09K3RoaXMuczohMX1lbmd1bGZzKGUpe3JldHVybiB0aGlzLmlzVmFsaWQ/dGhpcy5zPD1lLnMmJnRoaXMuZT49ZS5lOiExfWVxdWFscyhlKXtyZXR1cm4hdGhpcy5pc1ZhbGlkfHwhZS5pc1ZhbGlkPyExOnRoaXMucy5lcXVhbHMoZS5zKSYmdGhpcy5lLmVxdWFscyhlLmUpfWludGVyc2VjdGlvbihlKXtpZighdGhpcy5pc1ZhbGlkKXJldHVybiB0aGlzO2xldCB0PXRoaXMucz5lLnM/dGhpcy5zOmUucyxyPXRoaXMuZTxlLmU/dGhpcy5lOmUuZTtyZXR1cm4gdD49cj9udWxsOm4uZnJvbURhdGVUaW1lcyh0LHIpfXVuaW9uKGUpe2lmKCF0aGlzLmlzVmFsaWQpcmV0dXJuIHRoaXM7bGV0IHQ9dGhpcy5zPGUucz90aGlzLnM6ZS5zLHI9dGhpcy5lPmUuZT90aGlzLmU6ZS5lO3JldHVybiBuLmZyb21EYXRlVGltZXModCxyKX1zdGF0aWMgbWVyZ2UoZSl7bGV0W3Qscl09ZS5zb3J0KChzLGkpPT5zLnMtaS5zKS5yZWR1Y2UoKFtzLGldLG8pPT5pP2kub3ZlcmxhcHMobyl8fGkuYWJ1dHNTdGFydChvKT9bcyxpLnVuaW9uKG8pXTpbcy5jb25jYXQoW2ldKSxvXTpbcyxvXSxbW10sbnVsbF0pO3JldHVybiByJiZ0LnB1c2gociksdH1zdGF0aWMgeG9yKGUpe2xldCB0PW51bGwscj0wLHM9W10saT1lLm1hcCh1PT5be3RpbWU6dS5zLHR5cGU6XFxcInNcXFwifSx7dGltZTp1LmUsdHlwZTpcXFwiZVxcXCJ9XSksbz1BcnJheS5wcm90b3R5cGUuY29uY2F0KC4uLmkpLGE9by5zb3J0KCh1LGwpPT51LnRpbWUtbC50aW1lKTtmb3IobGV0IHUgb2YgYSlyKz11LnR5cGU9PT1cXFwic1xcXCI/MTotMSxyPT09MT90PXUudGltZToodCYmK3QhPSt1LnRpbWUmJnMucHVzaChuLmZyb21EYXRlVGltZXModCx1LnRpbWUpKSx0PW51bGwpO3JldHVybiBuLm1lcmdlKHMpfWRpZmZlcmVuY2UoLi4uZSl7cmV0dXJuIG4ueG9yKFt0aGlzXS5jb25jYXQoZSkpLm1hcCh0PT50aGlzLmludGVyc2VjdGlvbih0KSkuZmlsdGVyKHQ9PnQmJiF0LmlzRW1wdHkoKSl9dG9TdHJpbmcoKXtyZXR1cm4gdGhpcy5pc1ZhbGlkP2BbJHt0aGlzLnMudG9JU08oKX0gXFxcXHUyMDEzICR7dGhpcy5lLnRvSVNPKCl9KWA6ZnJ9dG9JU08oZSl7cmV0dXJuIHRoaXMuaXNWYWxpZD9gJHt0aGlzLnMudG9JU08oZSl9LyR7dGhpcy5lLnRvSVNPKGUpfWA6ZnJ9dG9JU09EYXRlKCl7cmV0dXJuIHRoaXMuaXNWYWxpZD9gJHt0aGlzLnMudG9JU09EYXRlKCl9LyR7dGhpcy5lLnRvSVNPRGF0ZSgpfWA6ZnJ9dG9JU09UaW1lKGUpe3JldHVybiB0aGlzLmlzVmFsaWQ/YCR7dGhpcy5zLnRvSVNPVGltZShlKX0vJHt0aGlzLmUudG9JU09UaW1lKGUpfWA6ZnJ9dG9Gb3JtYXQoZSx7c2VwYXJhdG9yOnQ9XFxcIiBcXFxcdTIwMTMgXFxcIn09e30pe3JldHVybiB0aGlzLmlzVmFsaWQ/YCR7dGhpcy5zLnRvRm9ybWF0KGUpfSR7dH0ke3RoaXMuZS50b0Zvcm1hdChlKX1gOmZyfXRvRHVyYXRpb24oZSx0KXtyZXR1cm4gdGhpcy5pc1ZhbGlkP3RoaXMuZS5kaWZmKHRoaXMucyxlLHQpOkIuaW52YWxpZCh0aGlzLmludmFsaWRSZWFzb24pfW1hcEVuZHBvaW50cyhlKXtyZXR1cm4gbi5mcm9tRGF0ZVRpbWVzKGUodGhpcy5zKSxlKHRoaXMuZSkpfX07dmFyIGd0PWNsYXNze3N0YXRpYyBoYXNEU1QoZT1YLmRlZmF1bHRab25lKXtsZXQgdD1xLm5vdygpLnNldFpvbmUoZSkuc2V0KHttb250aDoxMn0pO3JldHVybiFlLmlzVW5pdmVyc2FsJiZ0Lm9mZnNldCE9PXQuc2V0KHttb250aDo2fSkub2Zmc2V0fXN0YXRpYyBpc1ZhbGlkSUFOQVpvbmUoZSl7cmV0dXJuIGdlLmlzVmFsaWRab25lKGUpfXN0YXRpYyBub3JtYWxpemVab25lKGUpe3JldHVybiBWZShlLFguZGVmYXVsdFpvbmUpfXN0YXRpYyBtb250aHMoZT1cXFwibG9uZ1xcXCIse2xvY2FsZTp0PW51bGwsbnVtYmVyaW5nU3lzdGVtOnI9bnVsbCxsb2NPYmo6cz1udWxsLG91dHB1dENhbGVuZGFyOmk9XFxcImdyZWdvcnlcXFwifT17fSl7cmV0dXJuKHN8fG5lLmNyZWF0ZSh0LHIsaSkpLm1vbnRocyhlKX1zdGF0aWMgbW9udGhzRm9ybWF0KGU9XFxcImxvbmdcXFwiLHtsb2NhbGU6dD1udWxsLG51bWJlcmluZ1N5c3RlbTpyPW51bGwsbG9jT2JqOnM9bnVsbCxvdXRwdXRDYWxlbmRhcjppPVxcXCJncmVnb3J5XFxcIn09e30pe3JldHVybihzfHxuZS5jcmVhdGUodCxyLGkpKS5tb250aHMoZSwhMCl9c3RhdGljIHdlZWtkYXlzKGU9XFxcImxvbmdcXFwiLHtsb2NhbGU6dD1udWxsLG51bWJlcmluZ1N5c3RlbTpyPW51bGwsbG9jT2JqOnM9bnVsbH09e30pe3JldHVybihzfHxuZS5jcmVhdGUodCxyLG51bGwpKS53ZWVrZGF5cyhlKX1zdGF0aWMgd2Vla2RheXNGb3JtYXQoZT1cXFwibG9uZ1xcXCIse2xvY2FsZTp0PW51bGwsbnVtYmVyaW5nU3lzdGVtOnI9bnVsbCxsb2NPYmo6cz1udWxsfT17fSl7cmV0dXJuKHN8fG5lLmNyZWF0ZSh0LHIsbnVsbCkpLndlZWtkYXlzKGUsITApfXN0YXRpYyBtZXJpZGllbXMoe2xvY2FsZTplPW51bGx9PXt9KXtyZXR1cm4gbmUuY3JlYXRlKGUpLm1lcmlkaWVtcygpfXN0YXRpYyBlcmFzKGU9XFxcInNob3J0XFxcIix7bG9jYWxlOnQ9bnVsbH09e30pe3JldHVybiBuZS5jcmVhdGUodCxudWxsLFxcXCJncmVnb3J5XFxcIikuZXJhcyhlKX1zdGF0aWMgZmVhdHVyZXMoKXtyZXR1cm57cmVsYXRpdmU6SHIoKX19fTtmdW5jdGlvbiBoYShuLGUpe2xldCB0PXM9PnMudG9VVEMoMCx7a2VlcExvY2FsVGltZTohMH0pLnN0YXJ0T2YoXFxcImRheVxcXCIpLnZhbHVlT2YoKSxyPXQoZSktdChuKTtyZXR1cm4gTWF0aC5mbG9vcihCLmZyb21NaWxsaXMocikuYXMoXFxcImRheXNcXFwiKSl9ZnVuY3Rpb24gU2MobixlLHQpe2xldCByPVtbXFxcInllYXJzXFxcIiwoYSx1KT0+dS55ZWFyLWEueWVhcl0sW1xcXCJxdWFydGVyc1xcXCIsKGEsdSk9PnUucXVhcnRlci1hLnF1YXJ0ZXJdLFtcXFwibW9udGhzXFxcIiwoYSx1KT0+dS5tb250aC1hLm1vbnRoKyh1LnllYXItYS55ZWFyKSoxMl0sW1xcXCJ3ZWVrc1xcXCIsKGEsdSk9PntsZXQgbD1oYShhLHUpO3JldHVybihsLWwlNykvN31dLFtcXFwiZGF5c1xcXCIsaGFdXSxzPXt9LGksbztmb3IobGV0W2EsdV1vZiByKWlmKHQuaW5kZXhPZihhKT49MCl7aT1hO2xldCBsPXUobixlKTtvPW4ucGx1cyh7W2FdOmx9KSxvPmU/KG49bi5wbHVzKHtbYV06bC0xfSksbC09MSk6bj1vLHNbYV09bH1yZXR1cm5bbixzLG8saV19ZnVuY3Rpb24gbWEobixlLHQscil7bGV0W3MsaSxvLGFdPVNjKG4sZSx0KSx1PWUtcyxsPXQuZmlsdGVyKGQ9PltcXFwiaG91cnNcXFwiLFxcXCJtaW51dGVzXFxcIixcXFwic2Vjb25kc1xcXCIsXFxcIm1pbGxpc2Vjb25kc1xcXCJdLmluZGV4T2YoZCk+PTApO2wubGVuZ3RoPT09MCYmKG88ZSYmKG89cy5wbHVzKHtbYV06MX0pKSxvIT09cyYmKGlbYV09KGlbYV18fDApK3UvKG8tcykpKTtsZXQgZj1CLmZyb21PYmplY3QoaSxyKTtyZXR1cm4gbC5sZW5ndGg+MD9CLmZyb21NaWxsaXModSxyKS5zaGlmdFRvKC4uLmwpLnBsdXMoZik6Zn12YXIgd2k9e2FyYWI6XFxcIltcXFxcdTA2NjAtXFxcXHUwNjY5XVxcXCIsYXJhYmV4dDpcXFwiW1xcXFx1MDZGMC1cXFxcdTA2RjldXFxcIixiYWxpOlxcXCJbXFxcXHUxQjUwLVxcXFx1MUI1OV1cXFwiLGJlbmc6XFxcIltcXFxcdTA5RTYtXFxcXHUwOUVGXVxcXCIsZGV2YTpcXFwiW1xcXFx1MDk2Ni1cXFxcdTA5NkZdXFxcIixmdWxsd2lkZTpcXFwiW1xcXFx1RkYxMC1cXFxcdUZGMTldXFxcIixndWpyOlxcXCJbXFxcXHUwQUU2LVxcXFx1MEFFRl1cXFwiLGhhbmlkZWM6XFxcIltcXFxcdTMwMDd8XFxcXHU0RTAwfFxcXFx1NEU4Q3xcXFxcdTRFMDl8XFxcXHU1NkRCfFxcXFx1NEU5NHxcXFxcdTUxNkR8XFxcXHU0RTAzfFxcXFx1NTE2QnxcXFxcdTRFNURdXFxcIixraG1yOlxcXCJbXFxcXHUxN0UwLVxcXFx1MTdFOV1cXFwiLGtuZGE6XFxcIltcXFxcdTBDRTYtXFxcXHUwQ0VGXVxcXCIsbGFvbzpcXFwiW1xcXFx1MEVEMC1cXFxcdTBFRDldXFxcIixsaW1iOlxcXCJbXFxcXHUxOTQ2LVxcXFx1MTk0Rl1cXFwiLG1seW06XFxcIltcXFxcdTBENjYtXFxcXHUwRDZGXVxcXCIsbW9uZzpcXFwiW1xcXFx1MTgxMC1cXFxcdTE4MTldXFxcIixteW1yOlxcXCJbXFxcXHUxMDQwLVxcXFx1MTA0OV1cXFwiLG9yeWE6XFxcIltcXFxcdTBCNjYtXFxcXHUwQjZGXVxcXCIsdGFtbGRlYzpcXFwiW1xcXFx1MEJFNi1cXFxcdTBCRUZdXFxcIix0ZWx1OlxcXCJbXFxcXHUwQzY2LVxcXFx1MEM2Rl1cXFwiLHRoYWk6XFxcIltcXFxcdTBFNTAtXFxcXHUwRTU5XVxcXCIsdGlidDpcXFwiW1xcXFx1MEYyMC1cXFxcdTBGMjldXFxcIixsYXRuOlxcXCJcXFxcXFxcXGRcXFwifSxwYT17YXJhYjpbMTYzMiwxNjQxXSxhcmFiZXh0OlsxNzc2LDE3ODVdLGJhbGk6WzY5OTIsNzAwMV0sYmVuZzpbMjUzNCwyNTQzXSxkZXZhOlsyNDA2LDI0MTVdLGZ1bGx3aWRlOls2NTI5Niw2NTMwM10sZ3VqcjpbMjc5MCwyNzk5XSxraG1yOls2MTEyLDYxMjFdLGtuZGE6WzMzMDIsMzMxMV0sbGFvbzpbMzc5MiwzODAxXSxsaW1iOls2NDcwLDY0NzldLG1seW06WzM0MzAsMzQzOV0sbW9uZzpbNjE2MCw2MTY5XSxteW1yOls0MTYwLDQxNjldLG9yeWE6WzI5MTgsMjkyN10sdGFtbGRlYzpbMzA0NiwzMDU1XSx0ZWx1OlszMTc0LDMxODNdLHRoYWk6WzM2NjQsMzY3M10sdGlidDpbMzg3MiwzODgxXX0sa2M9d2kuaGFuaWRlYy5yZXBsYWNlKC9bXFxcXFt8XFxcXF1dL2csXFxcIlxcXCIpLnNwbGl0KFxcXCJcXFwiKTtmdW5jdGlvbiBEYShuKXtsZXQgZT1wYXJzZUludChuLDEwKTtpZihpc05hTihlKSl7ZT1cXFwiXFxcIjtmb3IobGV0IHQ9MDt0PG4ubGVuZ3RoO3QrKyl7bGV0IHI9bi5jaGFyQ29kZUF0KHQpO2lmKG5bdF0uc2VhcmNoKHdpLmhhbmlkZWMpIT09LTEpZSs9a2MuaW5kZXhPZihuW3RdKTtlbHNlIGZvcihsZXQgcyBpbiBwYSl7bGV0W2ksb109cGFbc107cj49aSYmcjw9byYmKGUrPXItaSl9fXJldHVybiBwYXJzZUludChlLDEwKX1lbHNlIHJldHVybiBlfWZ1bmN0aW9uIF9lKHtudW1iZXJpbmdTeXN0ZW06bn0sZT1cXFwiXFxcIil7cmV0dXJuIG5ldyBSZWdFeHAoYCR7d2lbbnx8XFxcImxhdG5cXFwiXX0ke2V9YCl9dmFyIENjPVxcXCJtaXNzaW5nIEludGwuRGF0ZVRpbWVGb3JtYXQuZm9ybWF0VG9QYXJ0cyBzdXBwb3J0XFxcIjtmdW5jdGlvbiBHKG4sZT10PT50KXtyZXR1cm57cmVnZXg6bixkZXNlcjooW3RdKT0+ZShEYSh0KSl9fXZhciB2Yz1cXFwiXFxcXHhBMFxcXCIsYmE9YFsgJHt2Y31dYCxGYT1uZXcgUmVnRXhwKGJhLFxcXCJnXFxcIik7ZnVuY3Rpb24geGMobil7cmV0dXJuIG4ucmVwbGFjZSgvXFxcXC4vZyxcXFwiXFxcXFxcXFwuP1xcXCIpLnJlcGxhY2UoRmEsYmEpfWZ1bmN0aW9uIHlhKG4pe3JldHVybiBuLnJlcGxhY2UoL1xcXFwuL2csXFxcIlxcXCIpLnJlcGxhY2UoRmEsXFxcIiBcXFwiKS50b0xvd2VyQ2FzZSgpfWZ1bmN0aW9uIFVlKG4sZSl7cmV0dXJuIG49PT1udWxsP251bGw6e3JlZ2V4OlJlZ0V4cChuLm1hcCh4Yykuam9pbihcXFwifFxcXCIpKSxkZXNlcjooW3RdKT0+bi5maW5kSW5kZXgocj0+eWEodCk9PT15YShyKSkrZX19ZnVuY3Rpb24gZ2EobixlKXtyZXR1cm57cmVnZXg6bixkZXNlcjooWyx0LHJdKT0+VnQodCxyKSxncm91cHM6ZX19ZnVuY3Rpb24gVGkobil7cmV0dXJue3JlZ2V4Om4sZGVzZXI6KFtlXSk9PmV9fWZ1bmN0aW9uIE9jKG4pe3JldHVybiBuLnJlcGxhY2UoL1tcXFxcLVxcXFxbXFxcXF17fSgpKis/LixcXFxcXFxcXFxcXFxeJHwjXFxcXHNdL2csXFxcIlxcXFxcXFxcJCZcXFwiKX1mdW5jdGlvbiBJYyhuLGUpe2xldCB0PV9lKGUpLHI9X2UoZSxcXFwiezJ9XFxcIikscz1fZShlLFxcXCJ7M31cXFwiKSxpPV9lKGUsXFxcIns0fVxcXCIpLG89X2UoZSxcXFwiezZ9XFxcIiksYT1fZShlLFxcXCJ7MSwyfVxcXCIpLHU9X2UoZSxcXFwiezEsM31cXFwiKSxsPV9lKGUsXFxcInsxLDZ9XFxcIiksZj1fZShlLFxcXCJ7MSw5fVxcXCIpLGQ9X2UoZSxcXFwiezIsNH1cXFwiKSxtPV9lKGUsXFxcIns0LDZ9XFxcIiksaD1EPT4oe3JlZ2V4OlJlZ0V4cChPYyhELnZhbCkpLGRlc2VyOihbVF0pPT5ULGxpdGVyYWw6ITB9KSxnPShEPT57aWYobi5saXRlcmFsKXJldHVybiBoKEQpO3N3aXRjaChELnZhbCl7Y2FzZVxcXCJHXFxcIjpyZXR1cm4gVWUoZS5lcmFzKFxcXCJzaG9ydFxcXCIsITEpLDApO2Nhc2VcXFwiR0dcXFwiOnJldHVybiBVZShlLmVyYXMoXFxcImxvbmdcXFwiLCExKSwwKTtjYXNlXFxcInlcXFwiOnJldHVybiBHKGwpO2Nhc2VcXFwieXlcXFwiOnJldHVybiBHKGQsb3IpO2Nhc2VcXFwieXl5eVxcXCI6cmV0dXJuIEcoaSk7Y2FzZVxcXCJ5eXl5eVxcXCI6cmV0dXJuIEcobSk7Y2FzZVxcXCJ5eXl5eXlcXFwiOnJldHVybiBHKG8pO2Nhc2VcXFwiTVxcXCI6cmV0dXJuIEcoYSk7Y2FzZVxcXCJNTVxcXCI6cmV0dXJuIEcocik7Y2FzZVxcXCJNTU1cXFwiOnJldHVybiBVZShlLm1vbnRocyhcXFwic2hvcnRcXFwiLCEwLCExKSwxKTtjYXNlXFxcIk1NTU1cXFwiOnJldHVybiBVZShlLm1vbnRocyhcXFwibG9uZ1xcXCIsITAsITEpLDEpO2Nhc2VcXFwiTFxcXCI6cmV0dXJuIEcoYSk7Y2FzZVxcXCJMTFxcXCI6cmV0dXJuIEcocik7Y2FzZVxcXCJMTExcXFwiOnJldHVybiBVZShlLm1vbnRocyhcXFwic2hvcnRcXFwiLCExLCExKSwxKTtjYXNlXFxcIkxMTExcXFwiOnJldHVybiBVZShlLm1vbnRocyhcXFwibG9uZ1xcXCIsITEsITEpLDEpO2Nhc2VcXFwiZFxcXCI6cmV0dXJuIEcoYSk7Y2FzZVxcXCJkZFxcXCI6cmV0dXJuIEcocik7Y2FzZVxcXCJvXFxcIjpyZXR1cm4gRyh1KTtjYXNlXFxcIm9vb1xcXCI6cmV0dXJuIEcocyk7Y2FzZVxcXCJISFxcXCI6cmV0dXJuIEcocik7Y2FzZVxcXCJIXFxcIjpyZXR1cm4gRyhhKTtjYXNlXFxcImhoXFxcIjpyZXR1cm4gRyhyKTtjYXNlXFxcImhcXFwiOnJldHVybiBHKGEpO2Nhc2VcXFwibW1cXFwiOnJldHVybiBHKHIpO2Nhc2VcXFwibVxcXCI6cmV0dXJuIEcoYSk7Y2FzZVxcXCJxXFxcIjpyZXR1cm4gRyhhKTtjYXNlXFxcInFxXFxcIjpyZXR1cm4gRyhyKTtjYXNlXFxcInNcXFwiOnJldHVybiBHKGEpO2Nhc2VcXFwic3NcXFwiOnJldHVybiBHKHIpO2Nhc2VcXFwiU1xcXCI6cmV0dXJuIEcodSk7Y2FzZVxcXCJTU1NcXFwiOnJldHVybiBHKHMpO2Nhc2VcXFwidVxcXCI6cmV0dXJuIFRpKGYpO2Nhc2VcXFwidXVcXFwiOnJldHVybiBUaShhKTtjYXNlXFxcInV1dVxcXCI6cmV0dXJuIEcodCk7Y2FzZVxcXCJhXFxcIjpyZXR1cm4gVWUoZS5tZXJpZGllbXMoKSwwKTtjYXNlXFxcImtra2tcXFwiOnJldHVybiBHKGkpO2Nhc2VcXFwia2tcXFwiOnJldHVybiBHKGQsb3IpO2Nhc2VcXFwiV1xcXCI6cmV0dXJuIEcoYSk7Y2FzZVxcXCJXV1xcXCI6cmV0dXJuIEcocik7Y2FzZVxcXCJFXFxcIjpjYXNlXFxcImNcXFwiOnJldHVybiBHKHQpO2Nhc2VcXFwiRUVFXFxcIjpyZXR1cm4gVWUoZS53ZWVrZGF5cyhcXFwic2hvcnRcXFwiLCExLCExKSwxKTtjYXNlXFxcIkVFRUVcXFwiOnJldHVybiBVZShlLndlZWtkYXlzKFxcXCJsb25nXFxcIiwhMSwhMSksMSk7Y2FzZVxcXCJjY2NcXFwiOnJldHVybiBVZShlLndlZWtkYXlzKFxcXCJzaG9ydFxcXCIsITAsITEpLDEpO2Nhc2VcXFwiY2NjY1xcXCI6cmV0dXJuIFVlKGUud2Vla2RheXMoXFxcImxvbmdcXFwiLCEwLCExKSwxKTtjYXNlXFxcIlpcXFwiOmNhc2VcXFwiWlpcXFwiOnJldHVybiBnYShuZXcgUmVnRXhwKGAoWystXSR7YS5zb3VyY2V9KSg/OjooJHtyLnNvdXJjZX0pKT9gKSwyKTtjYXNlXFxcIlpaWlxcXCI6cmV0dXJuIGdhKG5ldyBSZWdFeHAoYChbKy1dJHthLnNvdXJjZX0pKCR7ci5zb3VyY2V9KT9gKSwyKTtjYXNlXFxcInpcXFwiOnJldHVybiBUaSgvW2Etel8rLS9dezEsMjU2fT8vaSk7ZGVmYXVsdDpyZXR1cm4gaChEKX19KShuKXx8e2ludmFsaWRSZWFzb246Q2N9O3JldHVybiBnLnRva2VuPW4sZ312YXIgTGM9e3llYXI6e1xcXCIyLWRpZ2l0XFxcIjpcXFwieXlcXFwiLG51bWVyaWM6XFxcInl5eXl5XFxcIn0sbW9udGg6e251bWVyaWM6XFxcIk1cXFwiLFxcXCIyLWRpZ2l0XFxcIjpcXFwiTU1cXFwiLHNob3J0OlxcXCJNTU1cXFwiLGxvbmc6XFxcIk1NTU1cXFwifSxkYXk6e251bWVyaWM6XFxcImRcXFwiLFxcXCIyLWRpZ2l0XFxcIjpcXFwiZGRcXFwifSx3ZWVrZGF5OntzaG9ydDpcXFwiRUVFXFxcIixsb25nOlxcXCJFRUVFXFxcIn0sZGF5cGVyaW9kOlxcXCJhXFxcIixkYXlQZXJpb2Q6XFxcImFcXFwiLGhvdXI6e251bWVyaWM6XFxcImhcXFwiLFxcXCIyLWRpZ2l0XFxcIjpcXFwiaGhcXFwifSxtaW51dGU6e251bWVyaWM6XFxcIm1cXFwiLFxcXCIyLWRpZ2l0XFxcIjpcXFwibW1cXFwifSxzZWNvbmQ6e251bWVyaWM6XFxcInNcXFwiLFxcXCIyLWRpZ2l0XFxcIjpcXFwic3NcXFwifX07ZnVuY3Rpb24gTmMobixlLHQpe2xldHt0eXBlOnIsdmFsdWU6c309bjtpZihyPT09XFxcImxpdGVyYWxcXFwiKXJldHVybntsaXRlcmFsOiEwLHZhbDpzfTtsZXQgaT10W3JdLG89TGNbcl07aWYodHlwZW9mIG89PVxcXCJvYmplY3RcXFwiJiYobz1vW2ldKSxvKXJldHVybntsaXRlcmFsOiExLHZhbDpvfX1mdW5jdGlvbiBBYyhuKXtyZXR1cm5bYF4ke24ubWFwKHQ9PnQucmVnZXgpLnJlZHVjZSgodCxyKT0+YCR7dH0oJHtyLnNvdXJjZX0pYCxcXFwiXFxcIil9JGAsbl19ZnVuY3Rpb24gTWMobixlLHQpe2xldCByPW4ubWF0Y2goZSk7aWYocil7bGV0IHM9e30saT0xO2ZvcihsZXQgbyBpbiB0KWlmKGt0KHQsbykpe2xldCBhPXRbb10sdT1hLmdyb3Vwcz9hLmdyb3VwcysxOjE7IWEubGl0ZXJhbCYmYS50b2tlbiYmKHNbYS50b2tlbi52YWxbMF1dPWEuZGVzZXIoci5zbGljZShpLGkrdSkpKSxpKz11fXJldHVybltyLHNdfWVsc2UgcmV0dXJuW3Ise31dfWZ1bmN0aW9uIF9jKG4pe2xldCBlPWk9Pntzd2l0Y2goaSl7Y2FzZVxcXCJTXFxcIjpyZXR1cm5cXFwibWlsbGlzZWNvbmRcXFwiO2Nhc2VcXFwic1xcXCI6cmV0dXJuXFxcInNlY29uZFxcXCI7Y2FzZVxcXCJtXFxcIjpyZXR1cm5cXFwibWludXRlXFxcIjtjYXNlXFxcImhcXFwiOmNhc2VcXFwiSFxcXCI6cmV0dXJuXFxcImhvdXJcXFwiO2Nhc2VcXFwiZFxcXCI6cmV0dXJuXFxcImRheVxcXCI7Y2FzZVxcXCJvXFxcIjpyZXR1cm5cXFwib3JkaW5hbFxcXCI7Y2FzZVxcXCJMXFxcIjpjYXNlXFxcIk1cXFwiOnJldHVyblxcXCJtb250aFxcXCI7Y2FzZVxcXCJ5XFxcIjpyZXR1cm5cXFwieWVhclxcXCI7Y2FzZVxcXCJFXFxcIjpjYXNlXFxcImNcXFwiOnJldHVyblxcXCJ3ZWVrZGF5XFxcIjtjYXNlXFxcIldcXFwiOnJldHVyblxcXCJ3ZWVrTnVtYmVyXFxcIjtjYXNlXFxcImtcXFwiOnJldHVyblxcXCJ3ZWVrWWVhclxcXCI7Y2FzZVxcXCJxXFxcIjpyZXR1cm5cXFwicXVhcnRlclxcXCI7ZGVmYXVsdDpyZXR1cm4gbnVsbH19LHQ9bnVsbCxyO3JldHVybiBXKG4ueil8fCh0PWdlLmNyZWF0ZShuLnopKSxXKG4uWil8fCh0fHwodD1uZXcgaGUobi5aKSkscj1uLlopLFcobi5xKXx8KG4uTT0obi5xLTEpKjMrMSksVyhuLmgpfHwobi5oPDEyJiZuLmE9PT0xP24uaCs9MTI6bi5oPT09MTImJm4uYT09PTAmJihuLmg9MCkpLG4uRz09PTAmJm4ueSYmKG4ueT0tbi55KSxXKG4udSl8fChuLlM9c3Iobi51KSksW09iamVjdC5rZXlzKG4pLnJlZHVjZSgoaSxvKT0+e2xldCBhPWUobyk7cmV0dXJuIGEmJihpW2FdPW5bb10pLGl9LHt9KSx0LHJdfXZhciBTaT1udWxsO2Z1bmN0aW9uIEJjKCl7cmV0dXJuIFNpfHwoU2k9cS5mcm9tTWlsbGlzKDE1NTU1NTU1NTU1NTUpKSxTaX1mdW5jdGlvbiBQYyhuLGUpe2lmKG4ubGl0ZXJhbClyZXR1cm4gbjtsZXQgdD13ZS5tYWNyb1Rva2VuVG9Gb3JtYXRPcHRzKG4udmFsKTtpZighdClyZXR1cm4gbjtsZXQgaT13ZS5jcmVhdGUoZSx0KS5mb3JtYXREYXRlVGltZVBhcnRzKEJjKCkpLm1hcChvPT5OYyhvLGUsdCkpO3JldHVybiBpLmluY2x1ZGVzKHZvaWQgMCk/bjppfWZ1bmN0aW9uICRjKG4sZSl7cmV0dXJuIEFycmF5LnByb3RvdHlwZS5jb25jYXQoLi4ubi5tYXAodD0+UGModCxlKSkpfWZ1bmN0aW9uIGtpKG4sZSx0KXtsZXQgcj0kYyh3ZS5wYXJzZUZvcm1hdCh0KSxuKSxzPXIubWFwKG89PkljKG8sbikpLGk9cy5maW5kKG89Pm8uaW52YWxpZFJlYXNvbik7aWYoaSlyZXR1cm57aW5wdXQ6ZSx0b2tlbnM6cixpbnZhbGlkUmVhc29uOmkuaW52YWxpZFJlYXNvbn07e2xldFtvLGFdPUFjKHMpLHU9UmVnRXhwKG8sXFxcImlcXFwiKSxbbCxmXT1NYyhlLHUsYSksW2QsbSxoXT1mP19jKGYpOltudWxsLG51bGwsdm9pZCAwXTtpZihrdChmLFxcXCJhXFxcIikmJmt0KGYsXFxcIkhcXFwiKSl0aHJvdyBuZXcgcHQoXFxcIkNhbid0IGluY2x1ZGUgbWVyaWRpZW0gd2hlbiBzcGVjaWZ5aW5nIDI0LWhvdXIgZm9ybWF0XFxcIik7cmV0dXJue2lucHV0OmUsdG9rZW5zOnIscmVnZXg6dSxyYXdNYXRjaGVzOmwsbWF0Y2hlczpmLHJlc3VsdDpkLHpvbmU6bSxzcGVjaWZpY09mZnNldDpofX19ZnVuY3Rpb24gRWEobixlLHQpe2xldHtyZXN1bHQ6cix6b25lOnMsc3BlY2lmaWNPZmZzZXQ6aSxpbnZhbGlkUmVhc29uOm99PWtpKG4sZSx0KTtyZXR1cm5bcixzLGksb119dmFyIHdhPVswLDMxLDU5LDkwLDEyMCwxNTEsMTgxLDIxMiwyNDMsMjczLDMwNCwzMzRdLFRhPVswLDMxLDYwLDkxLDEyMSwxNTIsMTgyLDIxMywyNDQsMjc0LDMwNSwzMzVdO2Z1bmN0aW9uIEJlKG4sZSl7cmV0dXJuIG5ldyBkZShcXFwidW5pdCBvdXQgb2YgcmFuZ2VcXFwiLGB5b3Ugc3BlY2lmaWVkICR7ZX0gKG9mIHR5cGUgJHt0eXBlb2YgZX0pIGFzIGEgJHtufSwgd2hpY2ggaXMgaW52YWxpZGApfWZ1bmN0aW9uIFNhKG4sZSx0KXtsZXQgcj1uZXcgRGF0ZShEYXRlLlVUQyhuLGUtMSx0KSk7bjwxMDAmJm4+PTAmJnIuc2V0VVRDRnVsbFllYXIoci5nZXRVVENGdWxsWWVhcigpLTE5MDApO2xldCBzPXIuZ2V0VVRDRGF5KCk7cmV0dXJuIHM9PT0wPzc6c31mdW5jdGlvbiBrYShuLGUsdCl7cmV0dXJuIHQrKGp0KG4pP1RhOndhKVtlLTFdfWZ1bmN0aW9uIENhKG4sZSl7bGV0IHQ9anQobik/VGE6d2Escj10LmZpbmRJbmRleChpPT5pPGUpLHM9ZS10W3JdO3JldHVybnttb250aDpyKzEsZGF5OnN9fWZ1bmN0aW9uIFpyKG4pe2xldHt5ZWFyOmUsbW9udGg6dCxkYXk6cn09bixzPWthKGUsdCxyKSxpPVNhKGUsdCxyKSxvPU1hdGguZmxvb3IoKHMtaSsxMCkvNyksYTtyZXR1cm4gbzwxPyhhPWUtMSxvPWxuKGEpKTpvPmxuKGUpPyhhPWUrMSxvPTEpOmE9ZSxSKHt3ZWVrWWVhcjphLHdlZWtOdW1iZXI6byx3ZWVrZGF5Oml9LGFyKG4pKX1mdW5jdGlvbiBDaShuKXtsZXR7d2Vla1llYXI6ZSx3ZWVrTnVtYmVyOnQsd2Vla2RheTpyfT1uLHM9U2EoZSwxLDQpLGk9cXQoZSksbz10Kjcrci1zLTMsYTtvPDE/KGE9ZS0xLG8rPXF0KGEpKTpvPmk/KGE9ZSsxLG8tPXF0KGUpKTphPWU7bGV0e21vbnRoOnUsZGF5Omx9PUNhKGEsbyk7cmV0dXJuIFIoe3llYXI6YSxtb250aDp1LGRheTpsfSxhcihuKSl9ZnVuY3Rpb24gUXIobil7bGV0e3llYXI6ZSxtb250aDp0LGRheTpyfT1uLHM9a2EoZSx0LHIpO3JldHVybiBSKHt5ZWFyOmUsb3JkaW5hbDpzfSxhcihuKSl9ZnVuY3Rpb24gdmkobil7bGV0e3llYXI6ZSxvcmRpbmFsOnR9PW4se21vbnRoOnIsZGF5OnN9PUNhKGUsdCk7cmV0dXJuIFIoe3llYXI6ZSxtb250aDpyLGRheTpzfSxhcihuKSl9ZnVuY3Rpb24gdmEobil7bGV0IGU9cnIobi53ZWVrWWVhciksdD1udChuLndlZWtOdW1iZXIsMSxsbihuLndlZWtZZWFyKSkscj1udChuLndlZWtkYXksMSw3KTtyZXR1cm4gZT90P3I/ITE6QmUoXFxcIndlZWtkYXlcXFwiLG4ud2Vla2RheSk6QmUoXFxcIndlZWtcXFwiLG4ud2Vlayk6QmUoXFxcIndlZWtZZWFyXFxcIixuLndlZWtZZWFyKX1mdW5jdGlvbiB4YShuKXtsZXQgZT1ycihuLnllYXIpLHQ9bnQobi5vcmRpbmFsLDEscXQobi55ZWFyKSk7cmV0dXJuIGU/dD8hMTpCZShcXFwib3JkaW5hbFxcXCIsbi5vcmRpbmFsKTpCZShcXFwieWVhclxcXCIsbi55ZWFyKX1mdW5jdGlvbiB4aShuKXtsZXQgZT1ycihuLnllYXIpLHQ9bnQobi5tb250aCwxLDEyKSxyPW50KG4uZGF5LDEsdW4obi55ZWFyLG4ubW9udGgpKTtyZXR1cm4gZT90P3I/ITE6QmUoXFxcImRheVxcXCIsbi5kYXkpOkJlKFxcXCJtb250aFxcXCIsbi5tb250aCk6QmUoXFxcInllYXJcXFwiLG4ueWVhcil9ZnVuY3Rpb24gT2kobil7bGV0e2hvdXI6ZSxtaW51dGU6dCxzZWNvbmQ6cixtaWxsaXNlY29uZDpzfT1uLGk9bnQoZSwwLDIzKXx8ZT09PTI0JiZ0PT09MCYmcj09PTAmJnM9PT0wLG89bnQodCwwLDU5KSxhPW50KHIsMCw1OSksdT1udChzLDAsOTk5KTtyZXR1cm4gaT9vP2E/dT8hMTpCZShcXFwibWlsbGlzZWNvbmRcXFwiLHMpOkJlKFxcXCJzZWNvbmRcXFwiLHIpOkJlKFxcXCJtaW51dGVcXFwiLHQpOkJlKFxcXCJob3VyXFxcIixlKX12YXIgSWk9XFxcIkludmFsaWQgRGF0ZVRpbWVcXFwiLE9hPTg2NGUxMztmdW5jdGlvbiBYcihuKXtyZXR1cm4gbmV3IGRlKFxcXCJ1bnN1cHBvcnRlZCB6b25lXFxcIixgdGhlIHpvbmUgXFxcIiR7bi5uYW1lfVxcXCIgaXMgbm90IHN1cHBvcnRlZGApfWZ1bmN0aW9uIExpKG4pe3JldHVybiBuLndlZWtEYXRhPT09bnVsbCYmKG4ud2Vla0RhdGE9WnIobi5jKSksbi53ZWVrRGF0YX1mdW5jdGlvbiBkcihuLGUpe2xldCB0PXt0czpuLnRzLHpvbmU6bi56b25lLGM6bi5jLG86bi5vLGxvYzpuLmxvYyxpbnZhbGlkOm4uaW52YWxpZH07cmV0dXJuIG5ldyBxKHllKFIoUih7fSx0KSxlKSx7b2xkOnR9KSl9ZnVuY3Rpb24gUGEobixlLHQpe2xldCByPW4tZSo2MCoxZTMscz10Lm9mZnNldChyKTtpZihlPT09cylyZXR1cm5bcixlXTtyLT0ocy1lKSo2MCoxZTM7bGV0IGk9dC5vZmZzZXQocik7cmV0dXJuIHM9PT1pP1tyLHNdOltuLU1hdGgubWluKHMsaSkqNjAqMWUzLE1hdGgubWF4KHMsaSldfWZ1bmN0aW9uIElhKG4sZSl7bis9ZSo2MCoxZTM7bGV0IHQ9bmV3IERhdGUobik7cmV0dXJue3llYXI6dC5nZXRVVENGdWxsWWVhcigpLG1vbnRoOnQuZ2V0VVRDTW9udGgoKSsxLGRheTp0LmdldFVUQ0RhdGUoKSxob3VyOnQuZ2V0VVRDSG91cnMoKSxtaW51dGU6dC5nZXRVVENNaW51dGVzKCksc2Vjb25kOnQuZ2V0VVRDU2Vjb25kcygpLG1pbGxpc2Vjb25kOnQuZ2V0VVRDTWlsbGlzZWNvbmRzKCl9fWZ1bmN0aW9uIHRzKG4sZSx0KXtyZXR1cm4gUGEoaXIobiksZSx0KX1mdW5jdGlvbiBMYShuLGUpe2xldCB0PW4ubyxyPW4uYy55ZWFyK01hdGgudHJ1bmMoZS55ZWFycykscz1uLmMubW9udGgrTWF0aC50cnVuYyhlLm1vbnRocykrTWF0aC50cnVuYyhlLnF1YXJ0ZXJzKSozLGk9eWUoUih7fSxuLmMpLHt5ZWFyOnIsbW9udGg6cyxkYXk6TWF0aC5taW4obi5jLmRheSx1bihyLHMpKStNYXRoLnRydW5jKGUuZGF5cykrTWF0aC50cnVuYyhlLndlZWtzKSo3fSksbz1CLmZyb21PYmplY3Qoe3llYXJzOmUueWVhcnMtTWF0aC50cnVuYyhlLnllYXJzKSxxdWFydGVyczplLnF1YXJ0ZXJzLU1hdGgudHJ1bmMoZS5xdWFydGVycyksbW9udGhzOmUubW9udGhzLU1hdGgudHJ1bmMoZS5tb250aHMpLHdlZWtzOmUud2Vla3MtTWF0aC50cnVuYyhlLndlZWtzKSxkYXlzOmUuZGF5cy1NYXRoLnRydW5jKGUuZGF5cyksaG91cnM6ZS5ob3VycyxtaW51dGVzOmUubWludXRlcyxzZWNvbmRzOmUuc2Vjb25kcyxtaWxsaXNlY29uZHM6ZS5taWxsaXNlY29uZHN9KS5hcyhcXFwibWlsbGlzZWNvbmRzXFxcIiksYT1pcihpKSxbdSxsXT1QYShhLHQsbi56b25lKTtyZXR1cm4gbyE9PTAmJih1Kz1vLGw9bi56b25lLm9mZnNldCh1KSkse3RzOnUsbzpsfX1mdW5jdGlvbiBocihuLGUsdCxyLHMsaSl7bGV0e3NldFpvbmU6byx6b25lOmF9PXQ7aWYobiYmT2JqZWN0LmtleXMobikubGVuZ3RoIT09MCl7bGV0IHU9ZXx8YSxsPXEuZnJvbU9iamVjdChuLHllKFIoe30sdCkse3pvbmU6dSxzcGVjaWZpY09mZnNldDppfSkpO3JldHVybiBvP2w6bC5zZXRab25lKGEpfWVsc2UgcmV0dXJuIHEuaW52YWxpZChuZXcgZGUoXFxcInVucGFyc2FibGVcXFwiLGB0aGUgaW5wdXQgXFxcIiR7c31cXFwiIGNhbid0IGJlIHBhcnNlZCBhcyAke3J9YCkpfWZ1bmN0aW9uIGVzKG4sZSx0PSEwKXtyZXR1cm4gbi5pc1ZhbGlkP3dlLmNyZWF0ZShuZS5jcmVhdGUoXFxcImVuLVVTXFxcIikse2FsbG93Wjp0LGZvcmNlU2ltcGxlOiEwfSkuZm9ybWF0RGF0ZVRpbWVGcm9tU3RyaW5nKG4sZSk6bnVsbH1mdW5jdGlvbiBOaShuLGUpe2xldCB0PW4uYy55ZWFyPjk5OTl8fG4uYy55ZWFyPDAscj1cXFwiXFxcIjtyZXR1cm4gdCYmbi5jLnllYXI+PTAmJihyKz1cXFwiK1xcXCIpLHIrPXJlKG4uYy55ZWFyLHQ/Njo0KSxlPyhyKz1cXFwiLVxcXCIscis9cmUobi5jLm1vbnRoKSxyKz1cXFwiLVxcXCIscis9cmUobi5jLmRheSkpOihyKz1yZShuLmMubW9udGgpLHIrPXJlKG4uYy5kYXkpKSxyfWZ1bmN0aW9uIE5hKG4sZSx0LHIscyxpKXtsZXQgbz1yZShuLmMuaG91cik7cmV0dXJuIGU/KG8rPVxcXCI6XFxcIixvKz1yZShuLmMubWludXRlKSwobi5jLnNlY29uZCE9PTB8fCF0KSYmKG8rPVxcXCI6XFxcIikpOm8rPXJlKG4uYy5taW51dGUpLChuLmMuc2Vjb25kIT09MHx8IXQpJiYobys9cmUobi5jLnNlY29uZCksKG4uYy5taWxsaXNlY29uZCE9PTB8fCFyKSYmKG8rPVxcXCIuXFxcIixvKz1yZShuLmMubWlsbGlzZWNvbmQsMykpKSxzJiYobi5pc09mZnNldEZpeGVkJiZuLm9mZnNldD09PTAmJiFpP28rPVxcXCJaXFxcIjpuLm88MD8obys9XFxcIi1cXFwiLG8rPXJlKE1hdGgudHJ1bmMoLW4uby82MCkpLG8rPVxcXCI6XFxcIixvKz1yZShNYXRoLnRydW5jKC1uLm8lNjApKSk6KG8rPVxcXCIrXFxcIixvKz1yZShNYXRoLnRydW5jKG4uby82MCkpLG8rPVxcXCI6XFxcIixvKz1yZShNYXRoLnRydW5jKG4ubyU2MCkpKSksaSYmKG8rPVxcXCJbXFxcIituLnpvbmUuaWFuYU5hbWUrXFxcIl1cXFwiKSxvfXZhciAkYT17bW9udGg6MSxkYXk6MSxob3VyOjAsbWludXRlOjAsc2Vjb25kOjAsbWlsbGlzZWNvbmQ6MH0sUmM9e3dlZWtOdW1iZXI6MSx3ZWVrZGF5OjEsaG91cjowLG1pbnV0ZTowLHNlY29uZDowLG1pbGxpc2Vjb25kOjB9LGpjPXtvcmRpbmFsOjEsaG91cjowLG1pbnV0ZTowLHNlY29uZDowLG1pbGxpc2Vjb25kOjB9LFJhPVtcXFwieWVhclxcXCIsXFxcIm1vbnRoXFxcIixcXFwiZGF5XFxcIixcXFwiaG91clxcXCIsXFxcIm1pbnV0ZVxcXCIsXFxcInNlY29uZFxcXCIsXFxcIm1pbGxpc2Vjb25kXFxcIl0scWM9W1xcXCJ3ZWVrWWVhclxcXCIsXFxcIndlZWtOdW1iZXJcXFwiLFxcXCJ3ZWVrZGF5XFxcIixcXFwiaG91clxcXCIsXFxcIm1pbnV0ZVxcXCIsXFxcInNlY29uZFxcXCIsXFxcIm1pbGxpc2Vjb25kXFxcIl0sVmM9W1xcXCJ5ZWFyXFxcIixcXFwib3JkaW5hbFxcXCIsXFxcImhvdXJcXFwiLFxcXCJtaW51dGVcXFwiLFxcXCJzZWNvbmRcXFwiLFxcXCJtaWxsaXNlY29uZFxcXCJdO2Z1bmN0aW9uIEFhKG4pe2xldCBlPXt5ZWFyOlxcXCJ5ZWFyXFxcIix5ZWFyczpcXFwieWVhclxcXCIsbW9udGg6XFxcIm1vbnRoXFxcIixtb250aHM6XFxcIm1vbnRoXFxcIixkYXk6XFxcImRheVxcXCIsZGF5czpcXFwiZGF5XFxcIixob3VyOlxcXCJob3VyXFxcIixob3VyczpcXFwiaG91clxcXCIsbWludXRlOlxcXCJtaW51dGVcXFwiLG1pbnV0ZXM6XFxcIm1pbnV0ZVxcXCIscXVhcnRlcjpcXFwicXVhcnRlclxcXCIscXVhcnRlcnM6XFxcInF1YXJ0ZXJcXFwiLHNlY29uZDpcXFwic2Vjb25kXFxcIixzZWNvbmRzOlxcXCJzZWNvbmRcXFwiLG1pbGxpc2Vjb25kOlxcXCJtaWxsaXNlY29uZFxcXCIsbWlsbGlzZWNvbmRzOlxcXCJtaWxsaXNlY29uZFxcXCIsd2Vla2RheTpcXFwid2Vla2RheVxcXCIsd2Vla2RheXM6XFxcIndlZWtkYXlcXFwiLHdlZWtudW1iZXI6XFxcIndlZWtOdW1iZXJcXFwiLHdlZWtzbnVtYmVyOlxcXCJ3ZWVrTnVtYmVyXFxcIix3ZWVrbnVtYmVyczpcXFwid2Vla051bWJlclxcXCIsd2Vla3llYXI6XFxcIndlZWtZZWFyXFxcIix3ZWVreWVhcnM6XFxcIndlZWtZZWFyXFxcIixvcmRpbmFsOlxcXCJvcmRpbmFsXFxcIn1bbi50b0xvd2VyQ2FzZSgpXTtpZighZSl0aHJvdyBuZXcgc24obik7cmV0dXJuIGV9ZnVuY3Rpb24gTWEobixlKXtsZXQgdD1WZShlLnpvbmUsWC5kZWZhdWx0Wm9uZSkscj1uZS5mcm9tT2JqZWN0KGUpLHM9WC5ub3coKSxpLG87aWYoVyhuLnllYXIpKWk9cztlbHNle2ZvcihsZXQgbCBvZiBSYSlXKG5bbF0pJiYobltsXT0kYVtsXSk7bGV0IGE9eGkobil8fE9pKG4pO2lmKGEpcmV0dXJuIHEuaW52YWxpZChhKTtsZXQgdT10Lm9mZnNldChzKTtbaSxvXT10cyhuLHUsdCl9cmV0dXJuIG5ldyBxKHt0czppLHpvbmU6dCxsb2M6cixvfSl9ZnVuY3Rpb24gX2EobixlLHQpe2xldCByPVcodC5yb3VuZCk/ITA6dC5yb3VuZCxzPShvLGEpPT4obz1hbihvLHJ8fHQuY2FsZW5kYXJ5PzA6MiwhMCksZS5sb2MuY2xvbmUodCkucmVsRm9ybWF0dGVyKHQpLmZvcm1hdChvLGEpKSxpPW89PnQuY2FsZW5kYXJ5P2UuaGFzU2FtZShuLG8pPzA6ZS5zdGFydE9mKG8pLmRpZmYobi5zdGFydE9mKG8pLG8pLmdldChvKTplLmRpZmYobixvKS5nZXQobyk7aWYodC51bml0KXJldHVybiBzKGkodC51bml0KSx0LnVuaXQpO2ZvcihsZXQgbyBvZiB0LnVuaXRzKXtsZXQgYT1pKG8pO2lmKE1hdGguYWJzKGEpPj0xKXJldHVybiBzKGEsbyl9cmV0dXJuIHMobj5lPy0wOjAsdC51bml0c1t0LnVuaXRzLmxlbmd0aC0xXSl9ZnVuY3Rpb24gQmEobil7bGV0IGU9e30sdDtyZXR1cm4gbi5sZW5ndGg+MCYmdHlwZW9mIG5bbi5sZW5ndGgtMV09PVxcXCJvYmplY3RcXFwiPyhlPW5bbi5sZW5ndGgtMV0sdD1BcnJheS5mcm9tKG4pLnNsaWNlKDAsbi5sZW5ndGgtMSkpOnQ9QXJyYXkuZnJvbShuKSxbZSx0XX12YXIgcT1jbGFzcyBue2NvbnN0cnVjdG9yKGUpe2xldCB0PWUuem9uZXx8WC5kZWZhdWx0Wm9uZSxyPWUuaW52YWxpZHx8KE51bWJlci5pc05hTihlLnRzKT9uZXcgZGUoXFxcImludmFsaWQgaW5wdXRcXFwiKTpudWxsKXx8KHQuaXNWYWxpZD9udWxsOlhyKHQpKTt0aGlzLnRzPVcoZS50cyk/WC5ub3coKTplLnRzO2xldCBzPW51bGwsaT1udWxsO2lmKCFyKWlmKGUub2xkJiZlLm9sZC50cz09PXRoaXMudHMmJmUub2xkLnpvbmUuZXF1YWxzKHQpKVtzLGldPVtlLm9sZC5jLGUub2xkLm9dO2Vsc2V7bGV0IGE9dC5vZmZzZXQodGhpcy50cyk7cz1JYSh0aGlzLnRzLGEpLHI9TnVtYmVyLmlzTmFOKHMueWVhcik/bmV3IGRlKFxcXCJpbnZhbGlkIGlucHV0XFxcIik6bnVsbCxzPXI/bnVsbDpzLGk9cj9udWxsOmF9dGhpcy5fem9uZT10LHRoaXMubG9jPWUubG9jfHxuZS5jcmVhdGUoKSx0aGlzLmludmFsaWQ9cix0aGlzLndlZWtEYXRhPW51bGwsdGhpcy5jPXMsdGhpcy5vPWksdGhpcy5pc0x1eG9uRGF0ZVRpbWU9ITB9c3RhdGljIG5vdygpe3JldHVybiBuZXcgbih7fSl9c3RhdGljIGxvY2FsKCl7bGV0W2UsdF09QmEoYXJndW1lbnRzKSxbcixzLGksbyxhLHUsbF09dDtyZXR1cm4gTWEoe3llYXI6cixtb250aDpzLGRheTppLGhvdXI6byxtaW51dGU6YSxzZWNvbmQ6dSxtaWxsaXNlY29uZDpsfSxlKX1zdGF0aWMgdXRjKCl7bGV0W2UsdF09QmEoYXJndW1lbnRzKSxbcixzLGksbyxhLHUsbF09dDtyZXR1cm4gZS56b25lPWhlLnV0Y0luc3RhbmNlLE1hKHt5ZWFyOnIsbW9udGg6cyxkYXk6aSxob3VyOm8sbWludXRlOmEsc2Vjb25kOnUsbWlsbGlzZWNvbmQ6bH0sZSl9c3RhdGljIGZyb21KU0RhdGUoZSx0PXt9KXtsZXQgcj1QbyhlKT9lLnZhbHVlT2YoKTpOYU47aWYoTnVtYmVyLmlzTmFOKHIpKXJldHVybiBuLmludmFsaWQoXFxcImludmFsaWQgaW5wdXRcXFwiKTtsZXQgcz1WZSh0LnpvbmUsWC5kZWZhdWx0Wm9uZSk7cmV0dXJuIHMuaXNWYWxpZD9uZXcgbih7dHM6cix6b25lOnMsbG9jOm5lLmZyb21PYmplY3QodCl9KTpuLmludmFsaWQoWHIocykpfXN0YXRpYyBmcm9tTWlsbGlzKGUsdD17fSl7aWYodHQoZSkpcmV0dXJuIGU8LU9hfHxlPk9hP24uaW52YWxpZChcXFwiVGltZXN0YW1wIG91dCBvZiByYW5nZVxcXCIpOm5ldyBuKHt0czplLHpvbmU6VmUodC56b25lLFguZGVmYXVsdFpvbmUpLGxvYzpuZS5mcm9tT2JqZWN0KHQpfSk7dGhyb3cgbmV3IGZlKGBmcm9tTWlsbGlzIHJlcXVpcmVzIGEgbnVtZXJpY2FsIGlucHV0LCBidXQgcmVjZWl2ZWQgYSAke3R5cGVvZiBlfSB3aXRoIHZhbHVlICR7ZX1gKX1zdGF0aWMgZnJvbVNlY29uZHMoZSx0PXt9KXtpZih0dChlKSlyZXR1cm4gbmV3IG4oe3RzOmUqMWUzLHpvbmU6VmUodC56b25lLFguZGVmYXVsdFpvbmUpLGxvYzpuZS5mcm9tT2JqZWN0KHQpfSk7dGhyb3cgbmV3IGZlKFxcXCJmcm9tU2Vjb25kcyByZXF1aXJlcyBhIG51bWVyaWNhbCBpbnB1dFxcXCIpfXN0YXRpYyBmcm9tT2JqZWN0KGUsdD17fSl7ZT1lfHx7fTtsZXQgcj1WZSh0LnpvbmUsWC5kZWZhdWx0Wm9uZSk7aWYoIXIuaXNWYWxpZClyZXR1cm4gbi5pbnZhbGlkKFhyKHIpKTtsZXQgcz1YLm5vdygpLGk9Vyh0LnNwZWNpZmljT2Zmc2V0KT9yLm9mZnNldChzKTp0LnNwZWNpZmljT2Zmc2V0LG89Y24oZSxBYSksYT0hVyhvLm9yZGluYWwpLHU9IVcoby55ZWFyKSxsPSFXKG8ubW9udGgpfHwhVyhvLmRheSksZj11fHxsLGQ9by53ZWVrWWVhcnx8by53ZWVrTnVtYmVyLG09bmUuZnJvbU9iamVjdCh0KTtpZigoZnx8YSkmJmQpdGhyb3cgbmV3IHB0KFxcXCJDYW4ndCBtaXggd2Vla1llYXIvd2Vla051bWJlciB1bml0cyB3aXRoIHllYXIvbW9udGgvZGF5IG9yIG9yZGluYWxzXFxcIik7aWYobCYmYSl0aHJvdyBuZXcgcHQoXFxcIkNhbid0IG1peCBvcmRpbmFsIGRhdGVzIHdpdGggbW9udGgvZGF5XFxcIik7bGV0IGg9ZHx8by53ZWVrZGF5JiYhZixiLGcsRD1JYShzLGkpO2g/KGI9cWMsZz1SYyxEPVpyKEQpKTphPyhiPVZjLGc9amMsRD1RcihEKSk6KGI9UmEsZz0kYSk7bGV0IFQ9ITE7Zm9yKGxldCBDIG9mIGIpe2xldCBWPW9bQ107VyhWKT9UP29bQ109Z1tDXTpvW0NdPURbQ106VD0hMH1sZXQgST1oP3ZhKG8pOmE/eGEobyk6eGkobyksTj1JfHxPaShvKTtpZihOKXJldHVybiBuLmludmFsaWQoTik7bGV0IHk9aD9DaShvKTphP3ZpKG8pOm8sW3csdl09dHMoeSxpLHIpLHg9bmV3IG4oe3RzOncsem9uZTpyLG86dixsb2M6bX0pO3JldHVybiBvLndlZWtkYXkmJmYmJmUud2Vla2RheSE9PXgud2Vla2RheT9uLmludmFsaWQoXFxcIm1pc21hdGNoZWQgd2Vla2RheVxcXCIsYHlvdSBjYW4ndCBzcGVjaWZ5IGJvdGggYSB3ZWVrZGF5IG9mICR7by53ZWVrZGF5fSBhbmQgYSBkYXRlIG9mICR7eC50b0lTTygpfWApOnh9c3RhdGljIGZyb21JU08oZSx0PXt9KXtsZXRbcixzXT1pYShlKTtyZXR1cm4gaHIocixzLHQsXFxcIklTTyA4NjAxXFxcIixlKX1zdGF0aWMgZnJvbVJGQzI4MjIoZSx0PXt9KXtsZXRbcixzXT1vYShlKTtyZXR1cm4gaHIocixzLHQsXFxcIlJGQyAyODIyXFxcIixlKX1zdGF0aWMgZnJvbUhUVFAoZSx0PXt9KXtsZXRbcixzXT1hYShlKTtyZXR1cm4gaHIocixzLHQsXFxcIkhUVFBcXFwiLHQpfXN0YXRpYyBmcm9tRm9ybWF0KGUsdCxyPXt9KXtpZihXKGUpfHxXKHQpKXRocm93IG5ldyBmZShcXFwiZnJvbUZvcm1hdCByZXF1aXJlcyBhbiBpbnB1dCBzdHJpbmcgYW5kIGEgZm9ybWF0XFxcIik7bGV0e2xvY2FsZTpzPW51bGwsbnVtYmVyaW5nU3lzdGVtOmk9bnVsbH09cixvPW5lLmZyb21PcHRzKHtsb2NhbGU6cyxudW1iZXJpbmdTeXN0ZW06aSxkZWZhdWx0VG9FTjohMH0pLFthLHUsbCxmXT1FYShvLGUsdCk7cmV0dXJuIGY/bi5pbnZhbGlkKGYpOmhyKGEsdSxyLGBmb3JtYXQgJHt0fWAsZSxsKX1zdGF0aWMgZnJvbVN0cmluZyhlLHQscj17fSl7cmV0dXJuIG4uZnJvbUZvcm1hdChlLHQscil9c3RhdGljIGZyb21TUUwoZSx0PXt9KXtsZXRbcixzXT1jYShlKTtyZXR1cm4gaHIocixzLHQsXFxcIlNRTFxcXCIsZSl9c3RhdGljIGludmFsaWQoZSx0PW51bGwpe2lmKCFlKXRocm93IG5ldyBmZShcXFwibmVlZCB0byBzcGVjaWZ5IGEgcmVhc29uIHRoZSBEYXRlVGltZSBpcyBpbnZhbGlkXFxcIik7bGV0IHI9ZSBpbnN0YW5jZW9mIGRlP2U6bmV3IGRlKGUsdCk7aWYoWC50aHJvd09uSW52YWxpZCl0aHJvdyBuZXcgVXIocik7cmV0dXJuIG5ldyBuKHtpbnZhbGlkOnJ9KX1zdGF0aWMgaXNEYXRlVGltZShlKXtyZXR1cm4gZSYmZS5pc0x1eG9uRGF0ZVRpbWV8fCExfWdldChlKXtyZXR1cm4gdGhpc1tlXX1nZXQgaXNWYWxpZCgpe3JldHVybiB0aGlzLmludmFsaWQ9PT1udWxsfWdldCBpbnZhbGlkUmVhc29uKCl7cmV0dXJuIHRoaXMuaW52YWxpZD90aGlzLmludmFsaWQucmVhc29uOm51bGx9Z2V0IGludmFsaWRFeHBsYW5hdGlvbigpe3JldHVybiB0aGlzLmludmFsaWQ/dGhpcy5pbnZhbGlkLmV4cGxhbmF0aW9uOm51bGx9Z2V0IGxvY2FsZSgpe3JldHVybiB0aGlzLmlzVmFsaWQ/dGhpcy5sb2MubG9jYWxlOm51bGx9Z2V0IG51bWJlcmluZ1N5c3RlbSgpe3JldHVybiB0aGlzLmlzVmFsaWQ/dGhpcy5sb2MubnVtYmVyaW5nU3lzdGVtOm51bGx9Z2V0IG91dHB1dENhbGVuZGFyKCl7cmV0dXJuIHRoaXMuaXNWYWxpZD90aGlzLmxvYy5vdXRwdXRDYWxlbmRhcjpudWxsfWdldCB6b25lKCl7cmV0dXJuIHRoaXMuX3pvbmV9Z2V0IHpvbmVOYW1lKCl7cmV0dXJuIHRoaXMuaXNWYWxpZD90aGlzLnpvbmUubmFtZTpudWxsfWdldCB5ZWFyKCl7cmV0dXJuIHRoaXMuaXNWYWxpZD90aGlzLmMueWVhcjpOYU59Z2V0IHF1YXJ0ZXIoKXtyZXR1cm4gdGhpcy5pc1ZhbGlkP01hdGguY2VpbCh0aGlzLmMubW9udGgvMyk6TmFOfWdldCBtb250aCgpe3JldHVybiB0aGlzLmlzVmFsaWQ/dGhpcy5jLm1vbnRoOk5hTn1nZXQgZGF5KCl7cmV0dXJuIHRoaXMuaXNWYWxpZD90aGlzLmMuZGF5Ok5hTn1nZXQgaG91cigpe3JldHVybiB0aGlzLmlzVmFsaWQ/dGhpcy5jLmhvdXI6TmFOfWdldCBtaW51dGUoKXtyZXR1cm4gdGhpcy5pc1ZhbGlkP3RoaXMuYy5taW51dGU6TmFOfWdldCBzZWNvbmQoKXtyZXR1cm4gdGhpcy5pc1ZhbGlkP3RoaXMuYy5zZWNvbmQ6TmFOfWdldCBtaWxsaXNlY29uZCgpe3JldHVybiB0aGlzLmlzVmFsaWQ/dGhpcy5jLm1pbGxpc2Vjb25kOk5hTn1nZXQgd2Vla1llYXIoKXtyZXR1cm4gdGhpcy5pc1ZhbGlkP0xpKHRoaXMpLndlZWtZZWFyOk5hTn1nZXQgd2Vla051bWJlcigpe3JldHVybiB0aGlzLmlzVmFsaWQ/TGkodGhpcykud2Vla051bWJlcjpOYU59Z2V0IHdlZWtkYXkoKXtyZXR1cm4gdGhpcy5pc1ZhbGlkP0xpKHRoaXMpLndlZWtkYXk6TmFOfWdldCBvcmRpbmFsKCl7cmV0dXJuIHRoaXMuaXNWYWxpZD9Rcih0aGlzLmMpLm9yZGluYWw6TmFOfWdldCBtb250aFNob3J0KCl7cmV0dXJuIHRoaXMuaXNWYWxpZD9ndC5tb250aHMoXFxcInNob3J0XFxcIix7bG9jT2JqOnRoaXMubG9jfSlbdGhpcy5tb250aC0xXTpudWxsfWdldCBtb250aExvbmcoKXtyZXR1cm4gdGhpcy5pc1ZhbGlkP2d0Lm1vbnRocyhcXFwibG9uZ1xcXCIse2xvY09iajp0aGlzLmxvY30pW3RoaXMubW9udGgtMV06bnVsbH1nZXQgd2Vla2RheVNob3J0KCl7cmV0dXJuIHRoaXMuaXNWYWxpZD9ndC53ZWVrZGF5cyhcXFwic2hvcnRcXFwiLHtsb2NPYmo6dGhpcy5sb2N9KVt0aGlzLndlZWtkYXktMV06bnVsbH1nZXQgd2Vla2RheUxvbmcoKXtyZXR1cm4gdGhpcy5pc1ZhbGlkP2d0LndlZWtkYXlzKFxcXCJsb25nXFxcIix7bG9jT2JqOnRoaXMubG9jfSlbdGhpcy53ZWVrZGF5LTFdOm51bGx9Z2V0IG9mZnNldCgpe3JldHVybiB0aGlzLmlzVmFsaWQ/K3RoaXMubzpOYU59Z2V0IG9mZnNldE5hbWVTaG9ydCgpe3JldHVybiB0aGlzLmlzVmFsaWQ/dGhpcy56b25lLm9mZnNldE5hbWUodGhpcy50cyx7Zm9ybWF0OlxcXCJzaG9ydFxcXCIsbG9jYWxlOnRoaXMubG9jYWxlfSk6bnVsbH1nZXQgb2Zmc2V0TmFtZUxvbmcoKXtyZXR1cm4gdGhpcy5pc1ZhbGlkP3RoaXMuem9uZS5vZmZzZXROYW1lKHRoaXMudHMse2Zvcm1hdDpcXFwibG9uZ1xcXCIsbG9jYWxlOnRoaXMubG9jYWxlfSk6bnVsbH1nZXQgaXNPZmZzZXRGaXhlZCgpe3JldHVybiB0aGlzLmlzVmFsaWQ/dGhpcy56b25lLmlzVW5pdmVyc2FsOm51bGx9Z2V0IGlzSW5EU1QoKXtyZXR1cm4gdGhpcy5pc09mZnNldEZpeGVkPyExOnRoaXMub2Zmc2V0PnRoaXMuc2V0KHttb250aDoxLGRheToxfSkub2Zmc2V0fHx0aGlzLm9mZnNldD50aGlzLnNldCh7bW9udGg6NX0pLm9mZnNldH1nZXQgaXNJbkxlYXBZZWFyKCl7cmV0dXJuIGp0KHRoaXMueWVhcil9Z2V0IGRheXNJbk1vbnRoKCl7cmV0dXJuIHVuKHRoaXMueWVhcix0aGlzLm1vbnRoKX1nZXQgZGF5c0luWWVhcigpe3JldHVybiB0aGlzLmlzVmFsaWQ/cXQodGhpcy55ZWFyKTpOYU59Z2V0IHdlZWtzSW5XZWVrWWVhcigpe3JldHVybiB0aGlzLmlzVmFsaWQ/bG4odGhpcy53ZWVrWWVhcik6TmFOfXJlc29sdmVkTG9jYWxlT3B0aW9ucyhlPXt9KXtsZXR7bG9jYWxlOnQsbnVtYmVyaW5nU3lzdGVtOnIsY2FsZW5kYXI6c309d2UuY3JlYXRlKHRoaXMubG9jLmNsb25lKGUpLGUpLnJlc29sdmVkT3B0aW9ucyh0aGlzKTtyZXR1cm57bG9jYWxlOnQsbnVtYmVyaW5nU3lzdGVtOnIsb3V0cHV0Q2FsZW5kYXI6c319dG9VVEMoZT0wLHQ9e30pe3JldHVybiB0aGlzLnNldFpvbmUoaGUuaW5zdGFuY2UoZSksdCl9dG9Mb2NhbCgpe3JldHVybiB0aGlzLnNldFpvbmUoWC5kZWZhdWx0Wm9uZSl9c2V0Wm9uZShlLHtrZWVwTG9jYWxUaW1lOnQ9ITEsa2VlcENhbGVuZGFyVGltZTpyPSExfT17fSl7aWYoZT1WZShlLFguZGVmYXVsdFpvbmUpLGUuZXF1YWxzKHRoaXMuem9uZSkpcmV0dXJuIHRoaXM7aWYoZS5pc1ZhbGlkKXtsZXQgcz10aGlzLnRzO2lmKHR8fHIpe2xldCBpPWUub2Zmc2V0KHRoaXMudHMpLG89dGhpcy50b09iamVjdCgpO1tzXT10cyhvLGksZSl9cmV0dXJuIGRyKHRoaXMse3RzOnMsem9uZTplfSl9ZWxzZSByZXR1cm4gbi5pbnZhbGlkKFhyKGUpKX1yZWNvbmZpZ3VyZSh7bG9jYWxlOmUsbnVtYmVyaW5nU3lzdGVtOnQsb3V0cHV0Q2FsZW5kYXI6cn09e30pe2xldCBzPXRoaXMubG9jLmNsb25lKHtsb2NhbGU6ZSxudW1iZXJpbmdTeXN0ZW06dCxvdXRwdXRDYWxlbmRhcjpyfSk7cmV0dXJuIGRyKHRoaXMse2xvYzpzfSl9c2V0TG9jYWxlKGUpe3JldHVybiB0aGlzLnJlY29uZmlndXJlKHtsb2NhbGU6ZX0pfXNldChlKXtpZighdGhpcy5pc1ZhbGlkKXJldHVybiB0aGlzO2xldCB0PWNuKGUsQWEpLHI9IVcodC53ZWVrWWVhcil8fCFXKHQud2Vla051bWJlcil8fCFXKHQud2Vla2RheSkscz0hVyh0Lm9yZGluYWwpLGk9IVcodC55ZWFyKSxvPSFXKHQubW9udGgpfHwhVyh0LmRheSksYT1pfHxvLHU9dC53ZWVrWWVhcnx8dC53ZWVrTnVtYmVyO2lmKChhfHxzKSYmdSl0aHJvdyBuZXcgcHQoXFxcIkNhbid0IG1peCB3ZWVrWWVhci93ZWVrTnVtYmVyIHVuaXRzIHdpdGggeWVhci9tb250aC9kYXkgb3Igb3JkaW5hbHNcXFwiKTtpZihvJiZzKXRocm93IG5ldyBwdChcXFwiQ2FuJ3QgbWl4IG9yZGluYWwgZGF0ZXMgd2l0aCBtb250aC9kYXlcXFwiKTtsZXQgbDtyP2w9Q2koUihSKHt9LFpyKHRoaXMuYykpLHQpKTpXKHQub3JkaW5hbCk/KGw9UihSKHt9LHRoaXMudG9PYmplY3QoKSksdCksVyh0LmRheSkmJihsLmRheT1NYXRoLm1pbih1bihsLnllYXIsbC5tb250aCksbC5kYXkpKSk6bD12aShSKFIoe30sUXIodGhpcy5jKSksdCkpO2xldFtmLGRdPXRzKGwsdGhpcy5vLHRoaXMuem9uZSk7cmV0dXJuIGRyKHRoaXMse3RzOmYsbzpkfSl9cGx1cyhlKXtpZighdGhpcy5pc1ZhbGlkKXJldHVybiB0aGlzO2xldCB0PUIuZnJvbUR1cmF0aW9uTGlrZShlKTtyZXR1cm4gZHIodGhpcyxMYSh0aGlzLHQpKX1taW51cyhlKXtpZighdGhpcy5pc1ZhbGlkKXJldHVybiB0aGlzO2xldCB0PUIuZnJvbUR1cmF0aW9uTGlrZShlKS5uZWdhdGUoKTtyZXR1cm4gZHIodGhpcyxMYSh0aGlzLHQpKX1zdGFydE9mKGUpe2lmKCF0aGlzLmlzVmFsaWQpcmV0dXJuIHRoaXM7bGV0IHQ9e30scj1CLm5vcm1hbGl6ZVVuaXQoZSk7c3dpdGNoKHIpe2Nhc2VcXFwieWVhcnNcXFwiOnQubW9udGg9MTtjYXNlXFxcInF1YXJ0ZXJzXFxcIjpjYXNlXFxcIm1vbnRoc1xcXCI6dC5kYXk9MTtjYXNlXFxcIndlZWtzXFxcIjpjYXNlXFxcImRheXNcXFwiOnQuaG91cj0wO2Nhc2VcXFwiaG91cnNcXFwiOnQubWludXRlPTA7Y2FzZVxcXCJtaW51dGVzXFxcIjp0LnNlY29uZD0wO2Nhc2VcXFwic2Vjb25kc1xcXCI6dC5taWxsaXNlY29uZD0wO2JyZWFrO2Nhc2VcXFwibWlsbGlzZWNvbmRzXFxcIjpicmVha31pZihyPT09XFxcIndlZWtzXFxcIiYmKHQud2Vla2RheT0xKSxyPT09XFxcInF1YXJ0ZXJzXFxcIil7bGV0IHM9TWF0aC5jZWlsKHRoaXMubW9udGgvMyk7dC5tb250aD0ocy0xKSozKzF9cmV0dXJuIHRoaXMuc2V0KHQpfWVuZE9mKGUpe3JldHVybiB0aGlzLmlzVmFsaWQ/dGhpcy5wbHVzKHtbZV06MX0pLnN0YXJ0T2YoZSkubWludXMoMSk6dGhpc310b0Zvcm1hdChlLHQ9e30pe3JldHVybiB0aGlzLmlzVmFsaWQ/d2UuY3JlYXRlKHRoaXMubG9jLnJlZGVmYXVsdFRvRU4odCkpLmZvcm1hdERhdGVUaW1lRnJvbVN0cmluZyh0aGlzLGUpOklpfXRvTG9jYWxlU3RyaW5nKGU9b24sdD17fSl7cmV0dXJuIHRoaXMuaXNWYWxpZD93ZS5jcmVhdGUodGhpcy5sb2MuY2xvbmUodCksZSkuZm9ybWF0RGF0ZVRpbWUodGhpcyk6SWl9dG9Mb2NhbGVQYXJ0cyhlPXt9KXtyZXR1cm4gdGhpcy5pc1ZhbGlkP3dlLmNyZWF0ZSh0aGlzLmxvYy5jbG9uZShlKSxlKS5mb3JtYXREYXRlVGltZVBhcnRzKHRoaXMpOltdfXRvSVNPKHtmb3JtYXQ6ZT1cXFwiZXh0ZW5kZWRcXFwiLHN1cHByZXNzU2Vjb25kczp0PSExLHN1cHByZXNzTWlsbGlzZWNvbmRzOnI9ITEsaW5jbHVkZU9mZnNldDpzPSEwLGV4dGVuZGVkWm9uZTppPSExfT17fSl7aWYoIXRoaXMuaXNWYWxpZClyZXR1cm4gbnVsbDtsZXQgbz1lPT09XFxcImV4dGVuZGVkXFxcIixhPU5pKHRoaXMsbyk7cmV0dXJuIGErPVxcXCJUXFxcIixhKz1OYSh0aGlzLG8sdCxyLHMsaSksYX10b0lTT0RhdGUoe2Zvcm1hdDplPVxcXCJleHRlbmRlZFxcXCJ9PXt9KXtyZXR1cm4gdGhpcy5pc1ZhbGlkP05pKHRoaXMsZT09PVxcXCJleHRlbmRlZFxcXCIpOm51bGx9dG9JU09XZWVrRGF0ZSgpe3JldHVybiBlcyh0aGlzLFxcXCJra2trLSdXJ1dXLWNcXFwiKX10b0lTT1RpbWUoe3N1cHByZXNzTWlsbGlzZWNvbmRzOmU9ITEsc3VwcHJlc3NTZWNvbmRzOnQ9ITEsaW5jbHVkZU9mZnNldDpyPSEwLGluY2x1ZGVQcmVmaXg6cz0hMSxleHRlbmRlZFpvbmU6aT0hMSxmb3JtYXQ6bz1cXFwiZXh0ZW5kZWRcXFwifT17fSl7cmV0dXJuIHRoaXMuaXNWYWxpZD8ocz9cXFwiVFxcXCI6XFxcIlxcXCIpK05hKHRoaXMsbz09PVxcXCJleHRlbmRlZFxcXCIsdCxlLHIsaSk6bnVsbH10b1JGQzI4MjIoKXtyZXR1cm4gZXModGhpcyxcXFwiRUVFLCBkZCBMTEwgeXl5eSBISDptbTpzcyBaWlpcXFwiLCExKX10b0hUVFAoKXtyZXR1cm4gZXModGhpcy50b1VUQygpLFxcXCJFRUUsIGRkIExMTCB5eXl5IEhIOm1tOnNzICdHTVQnXFxcIil9dG9TUUxEYXRlKCl7cmV0dXJuIHRoaXMuaXNWYWxpZD9OaSh0aGlzLCEwKTpudWxsfXRvU1FMVGltZSh7aW5jbHVkZU9mZnNldDplPSEwLGluY2x1ZGVab25lOnQ9ITEsaW5jbHVkZU9mZnNldFNwYWNlOnI9ITB9PXt9KXtsZXQgcz1cXFwiSEg6bW06c3MuU1NTXFxcIjtyZXR1cm4odHx8ZSkmJihyJiYocys9XFxcIiBcXFwiKSx0P3MrPVxcXCJ6XFxcIjplJiYocys9XFxcIlpaXFxcIikpLGVzKHRoaXMscywhMCl9dG9TUUwoZT17fSl7cmV0dXJuIHRoaXMuaXNWYWxpZD9gJHt0aGlzLnRvU1FMRGF0ZSgpfSAke3RoaXMudG9TUUxUaW1lKGUpfWA6bnVsbH10b1N0cmluZygpe3JldHVybiB0aGlzLmlzVmFsaWQ/dGhpcy50b0lTTygpOklpfXZhbHVlT2YoKXtyZXR1cm4gdGhpcy50b01pbGxpcygpfXRvTWlsbGlzKCl7cmV0dXJuIHRoaXMuaXNWYWxpZD90aGlzLnRzOk5hTn10b1NlY29uZHMoKXtyZXR1cm4gdGhpcy5pc1ZhbGlkP3RoaXMudHMvMWUzOk5hTn10b1VuaXhJbnRlZ2VyKCl7cmV0dXJuIHRoaXMuaXNWYWxpZD9NYXRoLmZsb29yKHRoaXMudHMvMWUzKTpOYU59dG9KU09OKCl7cmV0dXJuIHRoaXMudG9JU08oKX10b0JTT04oKXtyZXR1cm4gdGhpcy50b0pTRGF0ZSgpfXRvT2JqZWN0KGU9e30pe2lmKCF0aGlzLmlzVmFsaWQpcmV0dXJue307bGV0IHQ9Uih7fSx0aGlzLmMpO3JldHVybiBlLmluY2x1ZGVDb25maWcmJih0Lm91dHB1dENhbGVuZGFyPXRoaXMub3V0cHV0Q2FsZW5kYXIsdC5udW1iZXJpbmdTeXN0ZW09dGhpcy5sb2MubnVtYmVyaW5nU3lzdGVtLHQubG9jYWxlPXRoaXMubG9jLmxvY2FsZSksdH10b0pTRGF0ZSgpe3JldHVybiBuZXcgRGF0ZSh0aGlzLmlzVmFsaWQ/dGhpcy50czpOYU4pfWRpZmYoZSx0PVxcXCJtaWxsaXNlY29uZHNcXFwiLHI9e30pe2lmKCF0aGlzLmlzVmFsaWR8fCFlLmlzVmFsaWQpcmV0dXJuIEIuaW52YWxpZChcXFwiY3JlYXRlZCBieSBkaWZmaW5nIGFuIGludmFsaWQgRGF0ZVRpbWVcXFwiKTtsZXQgcz1SKHtsb2NhbGU6dGhpcy5sb2NhbGUsbnVtYmVyaW5nU3lzdGVtOnRoaXMubnVtYmVyaW5nU3lzdGVtfSxyKSxpPSRvKHQpLm1hcChCLm5vcm1hbGl6ZVVuaXQpLG89ZS52YWx1ZU9mKCk+dGhpcy52YWx1ZU9mKCksYT1vP3RoaXM6ZSx1PW8/ZTp0aGlzLGw9bWEoYSx1LGkscyk7cmV0dXJuIG8/bC5uZWdhdGUoKTpsfWRpZmZOb3coZT1cXFwibWlsbGlzZWNvbmRzXFxcIix0PXt9KXtyZXR1cm4gdGhpcy5kaWZmKG4ubm93KCksZSx0KX11bnRpbChlKXtyZXR1cm4gdGhpcy5pc1ZhbGlkP3l0LmZyb21EYXRlVGltZXModGhpcyxlKTp0aGlzfWhhc1NhbWUoZSx0KXtpZighdGhpcy5pc1ZhbGlkKXJldHVybiExO2xldCByPWUudmFsdWVPZigpLHM9dGhpcy5zZXRab25lKGUuem9uZSx7a2VlcExvY2FsVGltZTohMH0pO3JldHVybiBzLnN0YXJ0T2YodCk8PXImJnI8PXMuZW5kT2YodCl9ZXF1YWxzKGUpe3JldHVybiB0aGlzLmlzVmFsaWQmJmUuaXNWYWxpZCYmdGhpcy52YWx1ZU9mKCk9PT1lLnZhbHVlT2YoKSYmdGhpcy56b25lLmVxdWFscyhlLnpvbmUpJiZ0aGlzLmxvYy5lcXVhbHMoZS5sb2MpfXRvUmVsYXRpdmUoZT17fSl7aWYoIXRoaXMuaXNWYWxpZClyZXR1cm4gbnVsbDtsZXQgdD1lLmJhc2V8fG4uZnJvbU9iamVjdCh7fSx7em9uZTp0aGlzLnpvbmV9KSxyPWUucGFkZGluZz90aGlzPHQ/LWUucGFkZGluZzplLnBhZGRpbmc6MCxzPVtcXFwieWVhcnNcXFwiLFxcXCJtb250aHNcXFwiLFxcXCJkYXlzXFxcIixcXFwiaG91cnNcXFwiLFxcXCJtaW51dGVzXFxcIixcXFwic2Vjb25kc1xcXCJdLGk9ZS51bml0O3JldHVybiBBcnJheS5pc0FycmF5KGUudW5pdCkmJihzPWUudW5pdCxpPXZvaWQgMCksX2EodCx0aGlzLnBsdXMocikseWUoUih7fSxlKSx7bnVtZXJpYzpcXFwiYWx3YXlzXFxcIix1bml0czpzLHVuaXQ6aX0pKX10b1JlbGF0aXZlQ2FsZW5kYXIoZT17fSl7cmV0dXJuIHRoaXMuaXNWYWxpZD9fYShlLmJhc2V8fG4uZnJvbU9iamVjdCh7fSx7em9uZTp0aGlzLnpvbmV9KSx0aGlzLHllKFIoe30sZSkse251bWVyaWM6XFxcImF1dG9cXFwiLHVuaXRzOltcXFwieWVhcnNcXFwiLFxcXCJtb250aHNcXFwiLFxcXCJkYXlzXFxcIl0sY2FsZW5kYXJ5OiEwfSkpOm51bGx9c3RhdGljIG1pbiguLi5lKXtpZighZS5ldmVyeShuLmlzRGF0ZVRpbWUpKXRocm93IG5ldyBmZShcXFwibWluIHJlcXVpcmVzIGFsbCBhcmd1bWVudHMgYmUgRGF0ZVRpbWVzXFxcIik7cmV0dXJuIFhzKGUsdD0+dC52YWx1ZU9mKCksTWF0aC5taW4pfXN0YXRpYyBtYXgoLi4uZSl7aWYoIWUuZXZlcnkobi5pc0RhdGVUaW1lKSl0aHJvdyBuZXcgZmUoXFxcIm1heCByZXF1aXJlcyBhbGwgYXJndW1lbnRzIGJlIERhdGVUaW1lc1xcXCIpO3JldHVybiBYcyhlLHQ9PnQudmFsdWVPZigpLE1hdGgubWF4KX1zdGF0aWMgZnJvbUZvcm1hdEV4cGxhaW4oZSx0LHI9e30pe2xldHtsb2NhbGU6cz1udWxsLG51bWJlcmluZ1N5c3RlbTppPW51bGx9PXIsbz1uZS5mcm9tT3B0cyh7bG9jYWxlOnMsbnVtYmVyaW5nU3lzdGVtOmksZGVmYXVsdFRvRU46ITB9KTtyZXR1cm4ga2kobyxlLHQpfXN0YXRpYyBmcm9tU3RyaW5nRXhwbGFpbihlLHQscj17fSl7cmV0dXJuIG4uZnJvbUZvcm1hdEV4cGxhaW4oZSx0LHIpfXN0YXRpYyBnZXQgREFURV9TSE9SVCgpe3JldHVybiBvbn1zdGF0aWMgZ2V0IERBVEVfTUVEKCl7cmV0dXJuICRufXN0YXRpYyBnZXQgREFURV9NRURfV0lUSF9XRUVLREFZKCl7cmV0dXJuIEdzfXN0YXRpYyBnZXQgREFURV9GVUxMKCl7cmV0dXJuIFJufXN0YXRpYyBnZXQgREFURV9IVUdFKCl7cmV0dXJuIGpufXN0YXRpYyBnZXQgVElNRV9TSU1QTEUoKXtyZXR1cm4gcW59c3RhdGljIGdldCBUSU1FX1dJVEhfU0VDT05EUygpe3JldHVybiBWbn1zdGF0aWMgZ2V0IFRJTUVfV0lUSF9TSE9SVF9PRkZTRVQoKXtyZXR1cm4gVW59c3RhdGljIGdldCBUSU1FX1dJVEhfTE9OR19PRkZTRVQoKXtyZXR1cm4gS259c3RhdGljIGdldCBUSU1FXzI0X1NJTVBMRSgpe3JldHVybiBXbn1zdGF0aWMgZ2V0IFRJTUVfMjRfV0lUSF9TRUNPTkRTKCl7cmV0dXJuIEhufXN0YXRpYyBnZXQgVElNRV8yNF9XSVRIX1NIT1JUX09GRlNFVCgpe3JldHVybiBKbn1zdGF0aWMgZ2V0IFRJTUVfMjRfV0lUSF9MT05HX09GRlNFVCgpe3JldHVybiB6bn1zdGF0aWMgZ2V0IERBVEVUSU1FX1NIT1JUKCl7cmV0dXJuIFlufXN0YXRpYyBnZXQgREFURVRJTUVfU0hPUlRfV0lUSF9TRUNPTkRTKCl7cmV0dXJuIEdufXN0YXRpYyBnZXQgREFURVRJTUVfTUVEKCl7cmV0dXJuIFpufXN0YXRpYyBnZXQgREFURVRJTUVfTUVEX1dJVEhfU0VDT05EUygpe3JldHVybiBRbn1zdGF0aWMgZ2V0IERBVEVUSU1FX01FRF9XSVRIX1dFRUtEQVkoKXtyZXR1cm4gWnN9c3RhdGljIGdldCBEQVRFVElNRV9GVUxMKCl7cmV0dXJuIFhufXN0YXRpYyBnZXQgREFURVRJTUVfRlVMTF9XSVRIX1NFQ09ORFMoKXtyZXR1cm4gZXJ9c3RhdGljIGdldCBEQVRFVElNRV9IVUdFKCl7cmV0dXJuIHRyfXN0YXRpYyBnZXQgREFURVRJTUVfSFVHRV9XSVRIX1NFQ09ORFMoKXtyZXR1cm4gbnJ9fTtmdW5jdGlvbiBibihuKXtpZihxLmlzRGF0ZVRpbWUobikpcmV0dXJuIG47aWYobiYmbi52YWx1ZU9mJiZ0dChuLnZhbHVlT2YoKSkpcmV0dXJuIHEuZnJvbUpTRGF0ZShuKTtpZihuJiZ0eXBlb2Ygbj09XFxcIm9iamVjdFxcXCIpcmV0dXJuIHEuZnJvbU9iamVjdChuKTt0aHJvdyBuZXcgZmUoYFVua25vd24gZGF0ZXRpbWUgYXJndW1lbnQ6ICR7bn0sIG9mIHR5cGUgJHt0eXBlb2Ygbn1gKX12YXIgYnQ9VnIobnMoKSk7dmFyIEZuPSgpPT4vWyMqMC05XVxcXFx1RkUwRj9cXFxcdTIwRTN8W1xcXFx4QTlcXFxceEFFXFxcXHUyMDNDXFxcXHUyMDQ5XFxcXHUyMTIyXFxcXHUyMTM5XFxcXHUyMTk0LVxcXFx1MjE5OVxcXFx1MjFBOVxcXFx1MjFBQVxcXFx1MjMxQVxcXFx1MjMxQlxcXFx1MjMyOFxcXFx1MjNDRlxcXFx1MjNFRC1cXFxcdTIzRUZcXFxcdTIzRjFcXFxcdTIzRjJcXFxcdTIzRjgtXFxcXHUyM0ZBXFxcXHUyNEMyXFxcXHUyNUFBXFxcXHUyNUFCXFxcXHUyNUI2XFxcXHUyNUMwXFxcXHUyNUZCXFxcXHUyNUZDXFxcXHUyNUZFXFxcXHUyNjAwLVxcXFx1MjYwNFxcXFx1MjYwRVxcXFx1MjYxMVxcXFx1MjYxNFxcXFx1MjYxNVxcXFx1MjYxOFxcXFx1MjYyMFxcXFx1MjYyMlxcXFx1MjYyM1xcXFx1MjYyNlxcXFx1MjYyQVxcXFx1MjYyRVxcXFx1MjYyRlxcXFx1MjYzOC1cXFxcdTI2M0FcXFxcdTI2NDBcXFxcdTI2NDJcXFxcdTI2NDgtXFxcXHUyNjUzXFxcXHUyNjVGXFxcXHUyNjYwXFxcXHUyNjYzXFxcXHUyNjY1XFxcXHUyNjY2XFxcXHUyNjY4XFxcXHUyNjdCXFxcXHUyNjdFXFxcXHUyNjdGXFxcXHUyNjkyXFxcXHUyNjk0LVxcXFx1MjY5N1xcXFx1MjY5OVxcXFx1MjY5QlxcXFx1MjY5Q1xcXFx1MjZBMFxcXFx1MjZBN1xcXFx1MjZBQVxcXFx1MjZCMFxcXFx1MjZCMVxcXFx1MjZCRFxcXFx1MjZCRVxcXFx1MjZDNFxcXFx1MjZDOFxcXFx1MjZDRlxcXFx1MjZEMVxcXFx1MjZFOVxcXFx1MjZGMC1cXFxcdTI2RjVcXFxcdTI2RjdcXFxcdTI2RjhcXFxcdTI2RkFcXFxcdTI3MDJcXFxcdTI3MDhcXFxcdTI3MDlcXFxcdTI3MEZcXFxcdTI3MTJcXFxcdTI3MTRcXFxcdTI3MTZcXFxcdTI3MURcXFxcdTI3MjFcXFxcdTI3MzNcXFxcdTI3MzRcXFxcdTI3NDRcXFxcdTI3NDdcXFxcdTI3NTdcXFxcdTI3NjNcXFxcdTI3QTFcXFxcdTI5MzRcXFxcdTI5MzVcXFxcdTJCMDUtXFxcXHUyQjA3XFxcXHUyQjFCXFxcXHUyQjFDXFxcXHUyQjU1XFxcXHUzMDMwXFxcXHUzMDNEXFxcXHUzMjk3XFxcXHUzMjk5XVxcXFx1RkUwRj98W1xcXFx1MjYxRFxcXFx1MjcwQ1xcXFx1MjcwRF0oPzpcXFxcdUQ4M0NbXFxcXHVERkZCLVxcXFx1REZGRl18XFxcXHVGRTBGKT98W1xcXFx1MjcwQVxcXFx1MjcwQl0oPzpcXFxcdUQ4M0NbXFxcXHVERkZCLVxcXFx1REZGRl0pP3xbXFxcXHUyM0U5LVxcXFx1MjNFQ1xcXFx1MjNGMFxcXFx1MjNGM1xcXFx1MjVGRFxcXFx1MjY5M1xcXFx1MjZBMVxcXFx1MjZBQlxcXFx1MjZDNVxcXFx1MjZDRVxcXFx1MjZENFxcXFx1MjZFQVxcXFx1MjZGRFxcXFx1MjcwNVxcXFx1MjcyOFxcXFx1Mjc0Q1xcXFx1Mjc0RVxcXFx1Mjc1My1cXFxcdTI3NTVcXFxcdTI3OTUtXFxcXHUyNzk3XFxcXHUyN0IwXFxcXHUyN0JGXFxcXHUyQjUwXXxcXFxcdTI2RDNcXFxcdUZFMEY/KD86XFxcXHUyMDBEXFxcXHVEODNEXFxcXHVEQ0E1KT98XFxcXHUyNkY5KD86XFxcXHVEODNDW1xcXFx1REZGQi1cXFxcdURGRkZdfFxcXFx1RkUwRik/KD86XFxcXHUyMDBEW1xcXFx1MjY0MFxcXFx1MjY0Ml1cXFxcdUZFMEY/KT98XFxcXHUyNzY0XFxcXHVGRTBGPyg/OlxcXFx1MjAwRCg/OlxcXFx1RDgzRFxcXFx1REQyNXxcXFxcdUQ4M0VcXFxcdURFNzkpKT98XFxcXHVEODNDKD86W1xcXFx1REMwNFxcXFx1REQ3MFxcXFx1REQ3MVxcXFx1REQ3RVxcXFx1REQ3RlxcXFx1REUwMlxcXFx1REUzN1xcXFx1REYyMVxcXFx1REYyNC1cXFxcdURGMkNcXFxcdURGMzZcXFxcdURGN0RcXFxcdURGOTZcXFxcdURGOTdcXFxcdURGOTktXFxcXHVERjlCXFxcXHVERjlFXFxcXHVERjlGXFxcXHVERkNEXFxcXHVERkNFXFxcXHVERkQ0LVxcXFx1REZERlxcXFx1REZGNVxcXFx1REZGN11cXFxcdUZFMEY/fFtcXFxcdURGODVcXFxcdURGQzJcXFxcdURGQzddKD86XFxcXHVEODNDW1xcXFx1REZGQi1cXFxcdURGRkZdKT98W1xcXFx1REZDNFxcXFx1REZDQV0oPzpcXFxcdUQ4M0NbXFxcXHVERkZCLVxcXFx1REZGRl0pPyg/OlxcXFx1MjAwRFtcXFxcdTI2NDBcXFxcdTI2NDJdXFxcXHVGRTBGPyk/fFtcXFxcdURGQ0JcXFxcdURGQ0NdKD86XFxcXHVEODNDW1xcXFx1REZGQi1cXFxcdURGRkZdfFxcXFx1RkUwRik/KD86XFxcXHUyMDBEW1xcXFx1MjY0MFxcXFx1MjY0Ml1cXFxcdUZFMEY/KT98W1xcXFx1RENDRlxcXFx1REQ4RVxcXFx1REQ5MS1cXFxcdUREOUFcXFxcdURFMDFcXFxcdURFMUFcXFxcdURFMkZcXFxcdURFMzItXFxcXHVERTM2XFxcXHVERTM4LVxcXFx1REUzQVxcXFx1REU1MFxcXFx1REU1MVxcXFx1REYwMC1cXFxcdURGMjBcXFxcdURGMkQtXFxcXHVERjM1XFxcXHVERjM3LVxcXFx1REY0M1xcXFx1REY0NS1cXFxcdURGNEFcXFxcdURGNEMtXFxcXHVERjdDXFxcXHVERjdFLVxcXFx1REY4NFxcXFx1REY4Ni1cXFxcdURGOTNcXFxcdURGQTAtXFxcXHVERkMxXFxcXHVERkM1XFxcXHVERkM2XFxcXHVERkM4XFxcXHVERkM5XFxcXHVERkNGLVxcXFx1REZEM1xcXFx1REZFMC1cXFxcdURGRjBcXFxcdURGRjgtXFxcXHVERkZGXXxcXFxcdURERTZcXFxcdUQ4M0NbXFxcXHVEREU4LVxcXFx1RERFQ1xcXFx1RERFRVxcXFx1RERGMVxcXFx1RERGMlxcXFx1RERGNFxcXFx1RERGNi1cXFxcdURERkFcXFxcdURERkNcXFxcdURERkRcXFxcdURERkZdfFxcXFx1RERFN1xcXFx1RDgzQ1tcXFxcdURERTZcXFxcdURERTdcXFxcdURERTktXFxcXHVEREVGXFxcXHVEREYxLVxcXFx1RERGNFxcXFx1RERGNi1cXFxcdURERjlcXFxcdURERkJcXFxcdURERkNcXFxcdURERkVcXFxcdURERkZdfFxcXFx1RERFOFxcXFx1RDgzQ1tcXFxcdURERTZcXFxcdURERThcXFxcdURERTlcXFxcdURERUItXFxcXHVEREVFXFxcXHVEREYwLVxcXFx1RERGN1xcXFx1RERGQS1cXFxcdURERkZdfFxcXFx1RERFOVxcXFx1RDgzQ1tcXFxcdURERUFcXFxcdURERUNcXFxcdURERUZcXFxcdURERjBcXFxcdURERjJcXFxcdURERjRcXFxcdURERkZdfFxcXFx1RERFQVxcXFx1RDgzQ1tcXFxcdURERTZcXFxcdURERThcXFxcdURERUFcXFxcdURERUNcXFxcdURERURcXFxcdURERjctXFxcXHVEREZBXXxcXFxcdURERUJcXFxcdUQ4M0NbXFxcXHVEREVFLVxcXFx1RERGMFxcXFx1RERGMlxcXFx1RERGNFxcXFx1RERGN118XFxcXHVEREVDXFxcXHVEODNDW1xcXFx1RERFNlxcXFx1RERFN1xcXFx1RERFOS1cXFxcdURERUVcXFxcdURERjEtXFxcXHVEREYzXFxcXHVEREY1LVxcXFx1RERGQVxcXFx1RERGQ1xcXFx1RERGRV18XFxcXHVEREVEXFxcXHVEODNDW1xcXFx1RERGMFxcXFx1RERGMlxcXFx1RERGM1xcXFx1RERGN1xcXFx1RERGOVxcXFx1RERGQV18XFxcXHVEREVFXFxcXHVEODNDW1xcXFx1RERFOC1cXFxcdURERUFcXFxcdURERjEtXFxcXHVEREY0XFxcXHVEREY2LVxcXFx1RERGOV18XFxcXHVEREVGXFxcXHVEODNDW1xcXFx1RERFQVxcXFx1RERGMlxcXFx1RERGNFxcXFx1RERGNV18XFxcXHVEREYwXFxcXHVEODNDW1xcXFx1RERFQVxcXFx1RERFQy1cXFxcdURERUVcXFxcdURERjJcXFxcdURERjNcXFxcdURERjVcXFxcdURERjdcXFxcdURERkNcXFxcdURERkVcXFxcdURERkZdfFxcXFx1RERGMVxcXFx1RDgzQ1tcXFxcdURERTYtXFxcXHVEREU4XFxcXHVEREVFXFxcXHVEREYwXFxcXHVEREY3LVxcXFx1RERGQlxcXFx1RERGRV18XFxcXHVEREYyXFxcXHVEODNDW1xcXFx1RERFNlxcXFx1RERFOC1cXFxcdURERURcXFxcdURERjAtXFxcXHVEREZGXXxcXFxcdURERjNcXFxcdUQ4M0NbXFxcXHVEREU2XFxcXHVEREU4XFxcXHVEREVBLVxcXFx1RERFQ1xcXFx1RERFRVxcXFx1RERGMVxcXFx1RERGNFxcXFx1RERGNVxcXFx1RERGN1xcXFx1RERGQVxcXFx1RERGRl18XFxcXHVEREY0XFxcXHVEODNDXFxcXHVEREYyfFxcXFx1RERGNVxcXFx1RDgzQ1tcXFxcdURERTZcXFxcdURERUEtXFxcXHVEREVEXFxcXHVEREYwLVxcXFx1RERGM1xcXFx1RERGNy1cXFxcdURERjlcXFxcdURERkNcXFxcdURERkVdfFxcXFx1RERGNlxcXFx1RDgzQ1xcXFx1RERFNnxcXFxcdURERjdcXFxcdUQ4M0NbXFxcXHVEREVBXFxcXHVEREY0XFxcXHVEREY4XFxcXHVEREZBXFxcXHVEREZDXXxcXFxcdURERjhcXFxcdUQ4M0NbXFxcXHVEREU2LVxcXFx1RERFQVxcXFx1RERFQy1cXFxcdURERjRcXFxcdURERjctXFxcXHVEREY5XFxcXHVEREZCXFxcXHVEREZELVxcXFx1RERGRl18XFxcXHVEREY5XFxcXHVEODNDW1xcXFx1RERFNlxcXFx1RERFOFxcXFx1RERFOVxcXFx1RERFQi1cXFxcdURERURcXFxcdURERUYtXFxcXHVEREY0XFxcXHVEREY3XFxcXHVEREY5XFxcXHVEREZCXFxcXHVEREZDXFxcXHVEREZGXXxcXFxcdURERkFcXFxcdUQ4M0NbXFxcXHVEREU2XFxcXHVEREVDXFxcXHVEREYyXFxcXHVEREYzXFxcXHVEREY4XFxcXHVEREZFXFxcXHVEREZGXXxcXFxcdURERkJcXFxcdUQ4M0NbXFxcXHVEREU2XFxcXHVEREU4XFxcXHVEREVBXFxcXHVEREVDXFxcXHVEREVFXFxcXHVEREYzXFxcXHVEREZBXXxcXFxcdURERkNcXFxcdUQ4M0NbXFxcXHVEREVCXFxcXHVEREY4XXxcXFxcdURERkRcXFxcdUQ4M0NcXFxcdURERjB8XFxcXHVEREZFXFxcXHVEODNDW1xcXFx1RERFQVxcXFx1RERGOV18XFxcXHVEREZGXFxcXHVEODNDW1xcXFx1RERFNlxcXFx1RERGMlxcXFx1RERGQ118XFxcXHVERjQ0KD86XFxcXHUyMDBEXFxcXHVEODNEXFxcXHVERkVCKT98XFxcXHVERjRCKD86XFxcXHUyMDBEXFxcXHVEODNEXFxcXHVERkU5KT98XFxcXHVERkMzKD86XFxcXHVEODNDW1xcXFx1REZGQi1cXFxcdURGRkZdKT8oPzpcXFxcdTIwMEQoPzpbXFxcXHUyNjQwXFxcXHUyNjQyXVxcXFx1RkUwRj8oPzpcXFxcdTIwMERcXFxcdTI3QTFcXFxcdUZFMEY/KT98XFxcXHUyN0ExXFxcXHVGRTBGPykpP3xcXFxcdURGRjNcXFxcdUZFMEY/KD86XFxcXHUyMDBEKD86XFxcXHUyNkE3XFxcXHVGRTBGP3xcXFxcdUQ4M0NcXFxcdURGMDgpKT98XFxcXHVERkY0KD86XFxcXHUyMDBEXFxcXHUyNjIwXFxcXHVGRTBGP3xcXFxcdURCNDBcXFxcdURDNjdcXFxcdURCNDBcXFxcdURDNjJcXFxcdURCNDAoPzpcXFxcdURDNjVcXFxcdURCNDBcXFxcdURDNkVcXFxcdURCNDBcXFxcdURDNjd8XFxcXHVEQzczXFxcXHVEQjQwXFxcXHVEQzYzXFxcXHVEQjQwXFxcXHVEQzc0fFxcXFx1REM3N1xcXFx1REI0MFxcXFx1REM2Q1xcXFx1REI0MFxcXFx1REM3MylcXFxcdURCNDBcXFxcdURDN0YpPyl8XFxcXHVEODNEKD86W1xcXFx1REMzRlxcXFx1RENGRFxcXFx1REQ0OVxcXFx1REQ0QVxcXFx1REQ2RlxcXFx1REQ3MFxcXFx1REQ3M1xcXFx1REQ3Ni1cXFxcdURENzlcXFxcdUREODdcXFxcdUREOEEtXFxcXHVERDhEXFxcXHVEREE1XFxcXHVEREE4XFxcXHVEREIxXFxcXHVEREIyXFxcXHVEREJDXFxcXHVEREMyLVxcXFx1RERDNFxcXFx1REREMS1cXFxcdURERDNcXFxcdUREREMtXFxcXHVERERFXFxcXHVEREUxXFxcXHVEREUzXFxcXHVEREU4XFxcXHVEREVGXFxcXHVEREYzXFxcXHVEREZBXFxcXHVERUNCXFxcXHVERUNELVxcXFx1REVDRlxcXFx1REVFMC1cXFxcdURFRTVcXFxcdURFRTlcXFxcdURFRjBcXFxcdURFRjNdXFxcXHVGRTBGP3xbXFxcXHVEQzQyXFxcXHVEQzQzXFxcXHVEQzQ2LVxcXFx1REM1MFxcXFx1REM2NlxcXFx1REM2N1xcXFx1REM2Qi1cXFxcdURDNkRcXFxcdURDNzJcXFxcdURDNzQtXFxcXHVEQzc2XFxcXHVEQzc4XFxcXHVEQzdDXFxcXHVEQzgzXFxcXHVEQzg1XFxcXHVEQzhGXFxcXHVEQzkxXFxcXHVEQ0FBXFxcXHVERDdBXFxcXHVERDk1XFxcXHVERDk2XFxcXHVERTRDXFxcXHVERTRGXFxcXHVERUMwXFxcXHVERUNDXSg/OlxcXFx1RDgzQ1tcXFxcdURGRkItXFxcXHVERkZGXSk/fFtcXFxcdURDNkVcXFxcdURDNzBcXFxcdURDNzFcXFxcdURDNzNcXFxcdURDNzdcXFxcdURDODFcXFxcdURDODJcXFxcdURDODZcXFxcdURDODdcXFxcdURFNDUtXFxcXHVERTQ3XFxcXHVERTRCXFxcXHVERTREXFxcXHVERTRFXFxcXHVERUEzXFxcXHVERUI0XFxcXHVERUI1XSg/OlxcXFx1RDgzQ1tcXFxcdURGRkItXFxcXHVERkZGXSk/KD86XFxcXHUyMDBEW1xcXFx1MjY0MFxcXFx1MjY0Ml1cXFxcdUZFMEY/KT98W1xcXFx1REQ3NFxcXFx1REQ5MF0oPzpcXFxcdUQ4M0NbXFxcXHVERkZCLVxcXFx1REZGRl18XFxcXHVGRTBGKT98W1xcXFx1REMwMC1cXFxcdURDMDdcXFxcdURDMDktXFxcXHVEQzE0XFxcXHVEQzE2LVxcXFx1REMyNVxcXFx1REMyNy1cXFxcdURDM0FcXFxcdURDM0MtXFxcXHVEQzNFXFxcXHVEQzQwXFxcXHVEQzQ0XFxcXHVEQzQ1XFxcXHVEQzUxLVxcXFx1REM2NVxcXFx1REM2QVxcXFx1REM3OS1cXFxcdURDN0JcXFxcdURDN0QtXFxcXHVEQzgwXFxcXHVEQzg0XFxcXHVEQzg4LVxcXFx1REM4RVxcXFx1REM5MFxcXFx1REM5Mi1cXFxcdURDQTlcXFxcdURDQUItXFxcXHVEQ0ZDXFxcXHVEQ0ZGLVxcXFx1REQzRFxcXFx1REQ0Qi1cXFxcdURENEVcXFxcdURENTAtXFxcXHVERDY3XFxcXHVEREE0XFxcXHVEREZCLVxcXFx1REUyRFxcXFx1REUyRi1cXFxcdURFMzRcXFxcdURFMzctXFxcXHVERTQxXFxcXHVERTQzXFxcXHVERTQ0XFxcXHVERTQ4LVxcXFx1REU0QVxcXFx1REU4MC1cXFxcdURFQTJcXFxcdURFQTQtXFxcXHVERUIzXFxcXHVERUI3LVxcXFx1REVCRlxcXFx1REVDMS1cXFxcdURFQzVcXFxcdURFRDAtXFxcXHVERUQyXFxcXHVERUQ1LVxcXFx1REVEN1xcXFx1REVEQy1cXFxcdURFREZcXFxcdURFRUJcXFxcdURFRUNcXFxcdURFRjQtXFxcXHVERUZDXFxcXHVERkUwLVxcXFx1REZFQlxcXFx1REZGMF18XFxcXHVEQzA4KD86XFxcXHUyMDBEXFxcXHUyQjFCKT98XFxcXHVEQzE1KD86XFxcXHUyMDBEXFxcXHVEODNFXFxcXHVEREJBKT98XFxcXHVEQzI2KD86XFxcXHUyMDBEKD86XFxcXHUyQjFCfFxcXFx1RDgzRFxcXFx1REQyNSkpP3xcXFxcdURDM0IoPzpcXFxcdTIwMERcXFxcdTI3NDRcXFxcdUZFMEY/KT98XFxcXHVEQzQxXFxcXHVGRTBGPyg/OlxcXFx1MjAwRFxcXFx1RDgzRFxcXFx1RERFOFxcXFx1RkUwRj8pP3xcXFxcdURDNjgoPzpcXFxcdTIwMEQoPzpbXFxcXHUyNjk1XFxcXHUyNjk2XFxcXHUyNzA4XVxcXFx1RkUwRj98XFxcXHUyNzY0XFxcXHVGRTBGP1xcXFx1MjAwRFxcXFx1RDgzRCg/OlxcXFx1REM4QlxcXFx1MjAwRFxcXFx1RDgzRCk/XFxcXHVEQzY4fFxcXFx1RDgzQ1tcXFxcdURGM0VcXFxcdURGNzNcXFxcdURGN0NcXFxcdURGOTNcXFxcdURGQTRcXFxcdURGQThcXFxcdURGRUJcXFxcdURGRURdfFxcXFx1RDgzRCg/OltcXFxcdURDNjhcXFxcdURDNjldXFxcXHUyMDBEXFxcXHVEODNEKD86XFxcXHVEQzY2KD86XFxcXHUyMDBEXFxcXHVEODNEXFxcXHVEQzY2KT98XFxcXHVEQzY3KD86XFxcXHUyMDBEXFxcXHVEODNEW1xcXFx1REM2NlxcXFx1REM2N10pPyl8W1xcXFx1RENCQlxcXFx1RENCQ1xcXFx1REQyN1xcXFx1REQyQ1xcXFx1REU4MFxcXFx1REU5Ml18XFxcXHVEQzY2KD86XFxcXHUyMDBEXFxcXHVEODNEXFxcXHVEQzY2KT98XFxcXHVEQzY3KD86XFxcXHUyMDBEXFxcXHVEODNEW1xcXFx1REM2NlxcXFx1REM2N10pPyl8XFxcXHVEODNFKD86W1xcXFx1RERBRlxcXFx1RERCQ1xcXFx1RERCRF0oPzpcXFxcdTIwMERcXFxcdTI3QTFcXFxcdUZFMEY/KT98W1xcXFx1RERCMC1cXFxcdUREQjNdKSl8XFxcXHVEODNDKD86XFxcXHVERkZCKD86XFxcXHUyMDBEKD86W1xcXFx1MjY5NVxcXFx1MjY5NlxcXFx1MjcwOF1cXFxcdUZFMEY/fFxcXFx1Mjc2NFxcXFx1RkUwRj9cXFxcdTIwMERcXFxcdUQ4M0QoPzpcXFxcdURDOEJcXFxcdTIwMERcXFxcdUQ4M0QpP1xcXFx1REM2OFxcXFx1RDgzQ1tcXFxcdURGRkItXFxcXHVERkZGXXxcXFxcdUQ4M0NbXFxcXHVERjNFXFxcXHVERjczXFxcXHVERjdDXFxcXHVERjkzXFxcXHVERkE0XFxcXHVERkE4XFxcXHVERkVCXFxcXHVERkVEXXxcXFxcdUQ4M0RbXFxcXHVEQ0JCXFxcXHVEQ0JDXFxcXHVERDI3XFxcXHVERDJDXFxcXHVERTgwXFxcXHVERTkyXXxcXFxcdUQ4M0UoPzpbXFxcXHVEREFGXFxcXHVEREJDXFxcXHVEREJEXSg/OlxcXFx1MjAwRFxcXFx1MjdBMVxcXFx1RkUwRj8pP3xbXFxcXHVEREIwLVxcXFx1RERCM118XFxcXHVERDFEXFxcXHUyMDBEXFxcXHVEODNEXFxcXHVEQzY4XFxcXHVEODNDW1xcXFx1REZGQy1cXFxcdURGRkZdKSkpP3xcXFxcdURGRkMoPzpcXFxcdTIwMEQoPzpbXFxcXHUyNjk1XFxcXHUyNjk2XFxcXHUyNzA4XVxcXFx1RkUwRj98XFxcXHUyNzY0XFxcXHVGRTBGP1xcXFx1MjAwRFxcXFx1RDgzRCg/OlxcXFx1REM4QlxcXFx1MjAwRFxcXFx1RDgzRCk/XFxcXHVEQzY4XFxcXHVEODNDW1xcXFx1REZGQi1cXFxcdURGRkZdfFxcXFx1RDgzQ1tcXFxcdURGM0VcXFxcdURGNzNcXFxcdURGN0NcXFxcdURGOTNcXFxcdURGQTRcXFxcdURGQThcXFxcdURGRUJcXFxcdURGRURdfFxcXFx1RDgzRFtcXFxcdURDQkJcXFxcdURDQkNcXFxcdUREMjdcXFxcdUREMkNcXFxcdURFODBcXFxcdURFOTJdfFxcXFx1RDgzRSg/OltcXFxcdUREQUZcXFxcdUREQkNcXFxcdUREQkRdKD86XFxcXHUyMDBEXFxcXHUyN0ExXFxcXHVGRTBGPyk/fFtcXFxcdUREQjAtXFxcXHVEREIzXXxcXFxcdUREMURcXFxcdTIwMERcXFxcdUQ4M0RcXFxcdURDNjhcXFxcdUQ4M0NbXFxcXHVERkZCXFxcXHVERkZELVxcXFx1REZGRl0pKSk/fFxcXFx1REZGRCg/OlxcXFx1MjAwRCg/OltcXFxcdTI2OTVcXFxcdTI2OTZcXFxcdTI3MDhdXFxcXHVGRTBGP3xcXFxcdTI3NjRcXFxcdUZFMEY/XFxcXHUyMDBEXFxcXHVEODNEKD86XFxcXHVEQzhCXFxcXHUyMDBEXFxcXHVEODNEKT9cXFxcdURDNjhcXFxcdUQ4M0NbXFxcXHVERkZCLVxcXFx1REZGRl18XFxcXHVEODNDW1xcXFx1REYzRVxcXFx1REY3M1xcXFx1REY3Q1xcXFx1REY5M1xcXFx1REZBNFxcXFx1REZBOFxcXFx1REZFQlxcXFx1REZFRF18XFxcXHVEODNEW1xcXFx1RENCQlxcXFx1RENCQ1xcXFx1REQyN1xcXFx1REQyQ1xcXFx1REU4MFxcXFx1REU5Ml18XFxcXHVEODNFKD86W1xcXFx1RERBRlxcXFx1RERCQ1xcXFx1RERCRF0oPzpcXFxcdTIwMERcXFxcdTI3QTFcXFxcdUZFMEY/KT98W1xcXFx1RERCMC1cXFxcdUREQjNdfFxcXFx1REQxRFxcXFx1MjAwRFxcXFx1RDgzRFxcXFx1REM2OFxcXFx1RDgzQ1tcXFxcdURGRkJcXFxcdURGRkNcXFxcdURGRkVcXFxcdURGRkZdKSkpP3xcXFxcdURGRkUoPzpcXFxcdTIwMEQoPzpbXFxcXHUyNjk1XFxcXHUyNjk2XFxcXHUyNzA4XVxcXFx1RkUwRj98XFxcXHUyNzY0XFxcXHVGRTBGP1xcXFx1MjAwRFxcXFx1RDgzRCg/OlxcXFx1REM4QlxcXFx1MjAwRFxcXFx1RDgzRCk/XFxcXHVEQzY4XFxcXHVEODNDW1xcXFx1REZGQi1cXFxcdURGRkZdfFxcXFx1RDgzQ1tcXFxcdURGM0VcXFxcdURGNzNcXFxcdURGN0NcXFxcdURGOTNcXFxcdURGQTRcXFxcdURGQThcXFxcdURGRUJcXFxcdURGRURdfFxcXFx1RDgzRFtcXFxcdURDQkJcXFxcdURDQkNcXFxcdUREMjdcXFxcdUREMkNcXFxcdURFODBcXFxcdURFOTJdfFxcXFx1RDgzRSg/OltcXFxcdUREQUZcXFxcdUREQkNcXFxcdUREQkRdKD86XFxcXHUyMDBEXFxcXHUyN0ExXFxcXHVGRTBGPyk/fFtcXFxcdUREQjAtXFxcXHVEREIzXXxcXFxcdUREMURcXFxcdTIwMERcXFxcdUQ4M0RcXFxcdURDNjhcXFxcdUQ4M0NbXFxcXHVERkZCLVxcXFx1REZGRFxcXFx1REZGRl0pKSk/fFxcXFx1REZGRig/OlxcXFx1MjAwRCg/OltcXFxcdTI2OTVcXFxcdTI2OTZcXFxcdTI3MDhdXFxcXHVGRTBGP3xcXFxcdTI3NjRcXFxcdUZFMEY/XFxcXHUyMDBEXFxcXHVEODNEKD86XFxcXHVEQzhCXFxcXHUyMDBEXFxcXHVEODNEKT9cXFxcdURDNjhcXFxcdUQ4M0NbXFxcXHVERkZCLVxcXFx1REZGRl18XFxcXHVEODNDW1xcXFx1REYzRVxcXFx1REY3M1xcXFx1REY3Q1xcXFx1REY5M1xcXFx1REZBNFxcXFx1REZBOFxcXFx1REZFQlxcXFx1REZFRF18XFxcXHVEODNEW1xcXFx1RENCQlxcXFx1RENCQ1xcXFx1REQyN1xcXFx1REQyQ1xcXFx1REU4MFxcXFx1REU5Ml18XFxcXHVEODNFKD86W1xcXFx1RERBRlxcXFx1RERCQ1xcXFx1RERCRF0oPzpcXFxcdTIwMERcXFxcdTI3QTFcXFxcdUZFMEY/KT98W1xcXFx1RERCMC1cXFxcdUREQjNdfFxcXFx1REQxRFxcXFx1MjAwRFxcXFx1RDgzRFxcXFx1REM2OFxcXFx1RDgzQ1tcXFxcdURGRkItXFxcXHVERkZFXSkpKT8pKT98XFxcXHVEQzY5KD86XFxcXHUyMDBEKD86W1xcXFx1MjY5NVxcXFx1MjY5NlxcXFx1MjcwOF1cXFxcdUZFMEY/fFxcXFx1Mjc2NFxcXFx1RkUwRj9cXFxcdTIwMERcXFxcdUQ4M0QoPzpcXFxcdURDOEJcXFxcdTIwMERcXFxcdUQ4M0QpP1tcXFxcdURDNjhcXFxcdURDNjldfFxcXFx1RDgzQ1tcXFxcdURGM0VcXFxcdURGNzNcXFxcdURGN0NcXFxcdURGOTNcXFxcdURGQTRcXFxcdURGQThcXFxcdURGRUJcXFxcdURGRURdfFxcXFx1RDgzRCg/OltcXFxcdURDQkJcXFxcdURDQkNcXFxcdUREMjdcXFxcdUREMkNcXFxcdURFODBcXFxcdURFOTJdfFxcXFx1REM2Nig/OlxcXFx1MjAwRFxcXFx1RDgzRFxcXFx1REM2Nik/fFxcXFx1REM2Nyg/OlxcXFx1MjAwRFxcXFx1RDgzRFtcXFxcdURDNjZcXFxcdURDNjddKT98XFxcXHVEQzY5XFxcXHUyMDBEXFxcXHVEODNEKD86XFxcXHVEQzY2KD86XFxcXHUyMDBEXFxcXHVEODNEXFxcXHVEQzY2KT98XFxcXHVEQzY3KD86XFxcXHUyMDBEXFxcXHVEODNEW1xcXFx1REM2NlxcXFx1REM2N10pPykpfFxcXFx1RDgzRSg/OltcXFxcdUREQUZcXFxcdUREQkNcXFxcdUREQkRdKD86XFxcXHUyMDBEXFxcXHUyN0ExXFxcXHVGRTBGPyk/fFtcXFxcdUREQjAtXFxcXHVEREIzXSkpfFxcXFx1RDgzQyg/OlxcXFx1REZGQig/OlxcXFx1MjAwRCg/OltcXFxcdTI2OTVcXFxcdTI2OTZcXFxcdTI3MDhdXFxcXHVGRTBGP3xcXFxcdTI3NjRcXFxcdUZFMEY/XFxcXHUyMDBEXFxcXHVEODNEKD86W1xcXFx1REM2OFxcXFx1REM2OV18XFxcXHVEQzhCXFxcXHUyMDBEXFxcXHVEODNEW1xcXFx1REM2OFxcXFx1REM2OV0pXFxcXHVEODNDW1xcXFx1REZGQi1cXFxcdURGRkZdfFxcXFx1RDgzQ1tcXFxcdURGM0VcXFxcdURGNzNcXFxcdURGN0NcXFxcdURGOTNcXFxcdURGQTRcXFxcdURGQThcXFxcdURGRUJcXFxcdURGRURdfFxcXFx1RDgzRFtcXFxcdURDQkJcXFxcdURDQkNcXFxcdUREMjdcXFxcdUREMkNcXFxcdURFODBcXFxcdURFOTJdfFxcXFx1RDgzRSg/OltcXFxcdUREQUZcXFxcdUREQkNcXFxcdUREQkRdKD86XFxcXHUyMDBEXFxcXHUyN0ExXFxcXHVGRTBGPyk/fFtcXFxcdUREQjAtXFxcXHVEREIzXXxcXFxcdUREMURcXFxcdTIwMERcXFxcdUQ4M0RbXFxcXHVEQzY4XFxcXHVEQzY5XVxcXFx1RDgzQ1tcXFxcdURGRkMtXFxcXHVERkZGXSkpKT98XFxcXHVERkZDKD86XFxcXHUyMDBEKD86W1xcXFx1MjY5NVxcXFx1MjY5NlxcXFx1MjcwOF1cXFxcdUZFMEY/fFxcXFx1Mjc2NFxcXFx1RkUwRj9cXFxcdTIwMERcXFxcdUQ4M0QoPzpbXFxcXHVEQzY4XFxcXHVEQzY5XXxcXFxcdURDOEJcXFxcdTIwMERcXFxcdUQ4M0RbXFxcXHVEQzY4XFxcXHVEQzY5XSlcXFxcdUQ4M0NbXFxcXHVERkZCLVxcXFx1REZGRl18XFxcXHVEODNDW1xcXFx1REYzRVxcXFx1REY3M1xcXFx1REY3Q1xcXFx1REY5M1xcXFx1REZBNFxcXFx1REZBOFxcXFx1REZFQlxcXFx1REZFRF18XFxcXHVEODNEW1xcXFx1RENCQlxcXFx1RENCQ1xcXFx1REQyN1xcXFx1REQyQ1xcXFx1REU4MFxcXFx1REU5Ml18XFxcXHVEODNFKD86W1xcXFx1RERBRlxcXFx1RERCQ1xcXFx1RERCRF0oPzpcXFxcdTIwMERcXFxcdTI3QTFcXFxcdUZFMEY/KT98W1xcXFx1RERCMC1cXFxcdUREQjNdfFxcXFx1REQxRFxcXFx1MjAwRFxcXFx1RDgzRFtcXFxcdURDNjhcXFxcdURDNjldXFxcXHVEODNDW1xcXFx1REZGQlxcXFx1REZGRC1cXFxcdURGRkZdKSkpP3xcXFxcdURGRkQoPzpcXFxcdTIwMEQoPzpbXFxcXHUyNjk1XFxcXHUyNjk2XFxcXHUyNzA4XVxcXFx1RkUwRj98XFxcXHUyNzY0XFxcXHVGRTBGP1xcXFx1MjAwRFxcXFx1RDgzRCg/OltcXFxcdURDNjhcXFxcdURDNjldfFxcXFx1REM4QlxcXFx1MjAwRFxcXFx1RDgzRFtcXFxcdURDNjhcXFxcdURDNjldKVxcXFx1RDgzQ1tcXFxcdURGRkItXFxcXHVERkZGXXxcXFxcdUQ4M0NbXFxcXHVERjNFXFxcXHVERjczXFxcXHVERjdDXFxcXHVERjkzXFxcXHVERkE0XFxcXHVERkE4XFxcXHVERkVCXFxcXHVERkVEXXxcXFxcdUQ4M0RbXFxcXHVEQ0JCXFxcXHVEQ0JDXFxcXHVERDI3XFxcXHVERDJDXFxcXHVERTgwXFxcXHVERTkyXXxcXFxcdUQ4M0UoPzpbXFxcXHVEREFGXFxcXHVEREJDXFxcXHVEREJEXSg/OlxcXFx1MjAwRFxcXFx1MjdBMVxcXFx1RkUwRj8pP3xbXFxcXHVEREIwLVxcXFx1RERCM118XFxcXHVERDFEXFxcXHUyMDBEXFxcXHVEODNEW1xcXFx1REM2OFxcXFx1REM2OV1cXFxcdUQ4M0NbXFxcXHVERkZCXFxcXHVERkZDXFxcXHVERkZFXFxcXHVERkZGXSkpKT98XFxcXHVERkZFKD86XFxcXHUyMDBEKD86W1xcXFx1MjY5NVxcXFx1MjY5NlxcXFx1MjcwOF1cXFxcdUZFMEY/fFxcXFx1Mjc2NFxcXFx1RkUwRj9cXFxcdTIwMERcXFxcdUQ4M0QoPzpbXFxcXHVEQzY4XFxcXHVEQzY5XXxcXFxcdURDOEJcXFxcdTIwMERcXFxcdUQ4M0RbXFxcXHVEQzY4XFxcXHVEQzY5XSlcXFxcdUQ4M0NbXFxcXHVERkZCLVxcXFx1REZGRl18XFxcXHVEODNDW1xcXFx1REYzRVxcXFx1REY3M1xcXFx1REY3Q1xcXFx1REY5M1xcXFx1REZBNFxcXFx1REZBOFxcXFx1REZFQlxcXFx1REZFRF18XFxcXHVEODNEW1xcXFx1RENCQlxcXFx1RENCQ1xcXFx1REQyN1xcXFx1REQyQ1xcXFx1REU4MFxcXFx1REU5Ml18XFxcXHVEODNFKD86W1xcXFx1RERBRlxcXFx1RERCQ1xcXFx1RERCRF0oPzpcXFxcdTIwMERcXFxcdTI3QTFcXFxcdUZFMEY/KT98W1xcXFx1RERCMC1cXFxcdUREQjNdfFxcXFx1REQxRFxcXFx1MjAwRFxcXFx1RDgzRFtcXFxcdURDNjhcXFxcdURDNjldXFxcXHVEODNDW1xcXFx1REZGQi1cXFxcdURGRkRcXFxcdURGRkZdKSkpP3xcXFxcdURGRkYoPzpcXFxcdTIwMEQoPzpbXFxcXHUyNjk1XFxcXHUyNjk2XFxcXHUyNzA4XVxcXFx1RkUwRj98XFxcXHUyNzY0XFxcXHVGRTBGP1xcXFx1MjAwRFxcXFx1RDgzRCg/OltcXFxcdURDNjhcXFxcdURDNjldfFxcXFx1REM4QlxcXFx1MjAwRFxcXFx1RDgzRFtcXFxcdURDNjhcXFxcdURDNjldKVxcXFx1RDgzQ1tcXFxcdURGRkItXFxcXHVERkZGXXxcXFxcdUQ4M0NbXFxcXHVERjNFXFxcXHVERjczXFxcXHVERjdDXFxcXHVERjkzXFxcXHVERkE0XFxcXHVERkE4XFxcXHVERkVCXFxcXHVERkVEXXxcXFxcdUQ4M0RbXFxcXHVEQ0JCXFxcXHVEQ0JDXFxcXHVERDI3XFxcXHVERDJDXFxcXHVERTgwXFxcXHVERTkyXXxcXFxcdUQ4M0UoPzpbXFxcXHVEREFGXFxcXHVEREJDXFxcXHVEREJEXSg/OlxcXFx1MjAwRFxcXFx1MjdBMVxcXFx1RkUwRj8pP3xbXFxcXHVEREIwLVxcXFx1RERCM118XFxcXHVERDFEXFxcXHUyMDBEXFxcXHVEODNEW1xcXFx1REM2OFxcXFx1REM2OV1cXFxcdUQ4M0NbXFxcXHVERkZCLVxcXFx1REZGRV0pKSk/KSk/fFxcXFx1REM2Rig/OlxcXFx1MjAwRFtcXFxcdTI2NDBcXFxcdTI2NDJdXFxcXHVGRTBGPyk/fFxcXFx1REQ3NSg/OlxcXFx1RDgzQ1tcXFxcdURGRkItXFxcXHVERkZGXXxcXFxcdUZFMEYpPyg/OlxcXFx1MjAwRFtcXFxcdTI2NDBcXFxcdTI2NDJdXFxcXHVGRTBGPyk/fFxcXFx1REUyRSg/OlxcXFx1MjAwRFxcXFx1RDgzRFxcXFx1RENBOCk/fFxcXFx1REUzNSg/OlxcXFx1MjAwRFxcXFx1RDgzRFxcXFx1RENBQik/fFxcXFx1REUzNig/OlxcXFx1MjAwRFxcXFx1RDgzQ1xcXFx1REYyQlxcXFx1RkUwRj8pP3xcXFxcdURFNDIoPzpcXFxcdTIwMERbXFxcXHUyMTk0XFxcXHUyMTk1XVxcXFx1RkUwRj8pP3xcXFxcdURFQjYoPzpcXFxcdUQ4M0NbXFxcXHVERkZCLVxcXFx1REZGRl0pPyg/OlxcXFx1MjAwRCg/OltcXFxcdTI2NDBcXFxcdTI2NDJdXFxcXHVGRTBGPyg/OlxcXFx1MjAwRFxcXFx1MjdBMVxcXFx1RkUwRj8pP3xcXFxcdTI3QTFcXFxcdUZFMEY/KSk/KXxcXFxcdUQ4M0UoPzpbXFxcXHVERDBDXFxcXHVERDBGXFxcXHVERDE4LVxcXFx1REQxRlxcXFx1REQzMC1cXFxcdUREMzRcXFxcdUREMzZcXFxcdURENzdcXFxcdUREQjVcXFxcdUREQjZcXFxcdUREQkJcXFxcdURERDJcXFxcdURERDNcXFxcdURERDVcXFxcdURFQzMtXFxcXHVERUM1XFxcXHVERUYwXFxcXHVERUYyLVxcXFx1REVGOF0oPzpcXFxcdUQ4M0NbXFxcXHVERkZCLVxcXFx1REZGRl0pP3xbXFxcXHVERDI2XFxcXHVERDM1XFxcXHVERDM3LVxcXFx1REQzOVxcXFx1REQzRFxcXFx1REQzRVxcXFx1RERCOFxcXFx1RERCOVxcXFx1RERDRFxcXFx1RERDRlxcXFx1RERENFxcXFx1RERENi1cXFxcdURERERdKD86XFxcXHVEODNDW1xcXFx1REZGQi1cXFxcdURGRkZdKT8oPzpcXFxcdTIwMERbXFxcXHUyNjQwXFxcXHUyNjQyXVxcXFx1RkUwRj8pP3xbXFxcXHVERERFXFxcXHVERERGXSg/OlxcXFx1MjAwRFtcXFxcdTI2NDBcXFxcdTI2NDJdXFxcXHVGRTBGPyk/fFtcXFxcdUREMERcXFxcdUREMEVcXFxcdUREMTAtXFxcXHVERDE3XFxcXHVERDIwLVxcXFx1REQyNVxcXFx1REQyNy1cXFxcdUREMkZcXFxcdUREM0FcXFxcdUREM0YtXFxcXHVERDQ1XFxcXHVERDQ3LVxcXFx1REQ3NlxcXFx1REQ3OC1cXFxcdUREQjRcXFxcdUREQjdcXFxcdUREQkFcXFxcdUREQkMtXFxcXHVERENDXFxcXHVEREQwXFxcXHVEREUwLVxcXFx1RERGRlxcXFx1REU3MC1cXFxcdURFN0NcXFxcdURFODAtXFxcXHVERTg5XFxcXHVERThGLVxcXFx1REVDMlxcXFx1REVDNlxcXFx1REVDRS1cXFxcdURFRENcXFxcdURFREYtXFxcXHVERUU5XXxcXFxcdUREM0MoPzpcXFxcdTIwMERbXFxcXHUyNjQwXFxcXHUyNjQyXVxcXFx1RkUwRj98XFxcXHVEODNDW1xcXFx1REZGQi1cXFxcdURGRkZdKT98XFxcXHVERENFKD86XFxcXHVEODNDW1xcXFx1REZGQi1cXFxcdURGRkZdKT8oPzpcXFxcdTIwMEQoPzpbXFxcXHUyNjQwXFxcXHUyNjQyXVxcXFx1RkUwRj8oPzpcXFxcdTIwMERcXFxcdTI3QTFcXFxcdUZFMEY/KT98XFxcXHUyN0ExXFxcXHVGRTBGPykpP3xcXFxcdURERDEoPzpcXFxcdTIwMEQoPzpbXFxcXHUyNjk1XFxcXHUyNjk2XFxcXHUyNzA4XVxcXFx1RkUwRj98XFxcXHVEODNDW1xcXFx1REYzRVxcXFx1REY3M1xcXFx1REY3Q1xcXFx1REY4NFxcXFx1REY5M1xcXFx1REZBNFxcXFx1REZBOFxcXFx1REZFQlxcXFx1REZFRF18XFxcXHVEODNEW1xcXFx1RENCQlxcXFx1RENCQ1xcXFx1REQyN1xcXFx1REQyQ1xcXFx1REU4MFxcXFx1REU5Ml18XFxcXHVEODNFKD86W1xcXFx1RERBRlxcXFx1RERCQ1xcXFx1RERCRF0oPzpcXFxcdTIwMERcXFxcdTI3QTFcXFxcdUZFMEY/KT98W1xcXFx1RERCMC1cXFxcdUREQjNdfFxcXFx1REQxRFxcXFx1MjAwRFxcXFx1RDgzRVxcXFx1REREMXxcXFxcdURERDFcXFxcdTIwMERcXFxcdUQ4M0VcXFxcdURERDIoPzpcXFxcdTIwMERcXFxcdUQ4M0VcXFxcdURERDIpP3xcXFxcdURERDIoPzpcXFxcdTIwMERcXFxcdUQ4M0VcXFxcdURERDIpPykpfFxcXFx1RDgzQyg/OlxcXFx1REZGQig/OlxcXFx1MjAwRCg/OltcXFxcdTI2OTVcXFxcdTI2OTZcXFxcdTI3MDhdXFxcXHVGRTBGP3xcXFxcdTI3NjRcXFxcdUZFMEY/XFxcXHUyMDBEKD86XFxcXHVEODNEXFxcXHVEQzhCXFxcXHUyMDBEKT9cXFxcdUQ4M0VcXFxcdURERDFcXFxcdUQ4M0NbXFxcXHVERkZDLVxcXFx1REZGRl18XFxcXHVEODNDW1xcXFx1REYzRVxcXFx1REY3M1xcXFx1REY3Q1xcXFx1REY4NFxcXFx1REY5M1xcXFx1REZBNFxcXFx1REZBOFxcXFx1REZFQlxcXFx1REZFRF18XFxcXHVEODNEW1xcXFx1RENCQlxcXFx1RENCQ1xcXFx1REQyN1xcXFx1REQyQ1xcXFx1REU4MFxcXFx1REU5Ml18XFxcXHVEODNFKD86W1xcXFx1RERBRlxcXFx1RERCQ1xcXFx1RERCRF0oPzpcXFxcdTIwMERcXFxcdTI3QTFcXFxcdUZFMEY/KT98W1xcXFx1RERCMC1cXFxcdUREQjNdfFxcXFx1REQxRFxcXFx1MjAwRFxcXFx1RDgzRVxcXFx1REREMVxcXFx1RDgzQ1tcXFxcdURGRkItXFxcXHVERkZGXSkpKT98XFxcXHVERkZDKD86XFxcXHUyMDBEKD86W1xcXFx1MjY5NVxcXFx1MjY5NlxcXFx1MjcwOF1cXFxcdUZFMEY/fFxcXFx1Mjc2NFxcXFx1RkUwRj9cXFxcdTIwMEQoPzpcXFxcdUQ4M0RcXFxcdURDOEJcXFxcdTIwMEQpP1xcXFx1RDgzRVxcXFx1REREMVxcXFx1RDgzQ1tcXFxcdURGRkJcXFxcdURGRkQtXFxcXHVERkZGXXxcXFxcdUQ4M0NbXFxcXHVERjNFXFxcXHVERjczXFxcXHVERjdDXFxcXHVERjg0XFxcXHVERjkzXFxcXHVERkE0XFxcXHVERkE4XFxcXHVERkVCXFxcXHVERkVEXXxcXFxcdUQ4M0RbXFxcXHVEQ0JCXFxcXHVEQ0JDXFxcXHVERDI3XFxcXHVERDJDXFxcXHVERTgwXFxcXHVERTkyXXxcXFxcdUQ4M0UoPzpbXFxcXHVEREFGXFxcXHVEREJDXFxcXHVEREJEXSg/OlxcXFx1MjAwRFxcXFx1MjdBMVxcXFx1RkUwRj8pP3xbXFxcXHVEREIwLVxcXFx1RERCM118XFxcXHVERDFEXFxcXHUyMDBEXFxcXHVEODNFXFxcXHVEREQxXFxcXHVEODNDW1xcXFx1REZGQi1cXFxcdURGRkZdKSkpP3xcXFxcdURGRkQoPzpcXFxcdTIwMEQoPzpbXFxcXHUyNjk1XFxcXHUyNjk2XFxcXHUyNzA4XVxcXFx1RkUwRj98XFxcXHUyNzY0XFxcXHVGRTBGP1xcXFx1MjAwRCg/OlxcXFx1RDgzRFxcXFx1REM4QlxcXFx1MjAwRCk/XFxcXHVEODNFXFxcXHVEREQxXFxcXHVEODNDW1xcXFx1REZGQlxcXFx1REZGQ1xcXFx1REZGRVxcXFx1REZGRl18XFxcXHVEODNDW1xcXFx1REYzRVxcXFx1REY3M1xcXFx1REY3Q1xcXFx1REY4NFxcXFx1REY5M1xcXFx1REZBNFxcXFx1REZBOFxcXFx1REZFQlxcXFx1REZFRF18XFxcXHVEODNEW1xcXFx1RENCQlxcXFx1RENCQ1xcXFx1REQyN1xcXFx1REQyQ1xcXFx1REU4MFxcXFx1REU5Ml18XFxcXHVEODNFKD86W1xcXFx1RERBRlxcXFx1RERCQ1xcXFx1RERCRF0oPzpcXFxcdTIwMERcXFxcdTI3QTFcXFxcdUZFMEY/KT98W1xcXFx1RERCMC1cXFxcdUREQjNdfFxcXFx1REQxRFxcXFx1MjAwRFxcXFx1RDgzRVxcXFx1REREMVxcXFx1RDgzQ1tcXFxcdURGRkItXFxcXHVERkZGXSkpKT98XFxcXHVERkZFKD86XFxcXHUyMDBEKD86W1xcXFx1MjY5NVxcXFx1MjY5NlxcXFx1MjcwOF1cXFxcdUZFMEY/fFxcXFx1Mjc2NFxcXFx1RkUwRj9cXFxcdTIwMEQoPzpcXFxcdUQ4M0RcXFxcdURDOEJcXFxcdTIwMEQpP1xcXFx1RDgzRVxcXFx1REREMVxcXFx1RDgzQ1tcXFxcdURGRkItXFxcXHVERkZEXFxcXHVERkZGXXxcXFxcdUQ4M0NbXFxcXHVERjNFXFxcXHVERjczXFxcXHVERjdDXFxcXHVERjg0XFxcXHVERjkzXFxcXHVERkE0XFxcXHVERkE4XFxcXHVERkVCXFxcXHVERkVEXXxcXFxcdUQ4M0RbXFxcXHVEQ0JCXFxcXHVEQ0JDXFxcXHVERDI3XFxcXHVERDJDXFxcXHVERTgwXFxcXHVERTkyXXxcXFxcdUQ4M0UoPzpbXFxcXHVEREFGXFxcXHVEREJDXFxcXHVEREJEXSg/OlxcXFx1MjAwRFxcXFx1MjdBMVxcXFx1RkUwRj8pP3xbXFxcXHVEREIwLVxcXFx1RERCM118XFxcXHVERDFEXFxcXHUyMDBEXFxcXHVEODNFXFxcXHVEREQxXFxcXHVEODNDW1xcXFx1REZGQi1cXFxcdURGRkZdKSkpP3xcXFxcdURGRkYoPzpcXFxcdTIwMEQoPzpbXFxcXHUyNjk1XFxcXHUyNjk2XFxcXHUyNzA4XVxcXFx1RkUwRj98XFxcXHUyNzY0XFxcXHVGRTBGP1xcXFx1MjAwRCg/OlxcXFx1RDgzRFxcXFx1REM4QlxcXFx1MjAwRCk/XFxcXHVEODNFXFxcXHVEREQxXFxcXHVEODNDW1xcXFx1REZGQi1cXFxcdURGRkVdfFxcXFx1RDgzQ1tcXFxcdURGM0VcXFxcdURGNzNcXFxcdURGN0NcXFxcdURGODRcXFxcdURGOTNcXFxcdURGQTRcXFxcdURGQThcXFxcdURGRUJcXFxcdURGRURdfFxcXFx1RDgzRFtcXFxcdURDQkJcXFxcdURDQkNcXFxcdUREMjdcXFxcdUREMkNcXFxcdURFODBcXFxcdURFOTJdfFxcXFx1RDgzRSg/OltcXFxcdUREQUZcXFxcdUREQkNcXFxcdUREQkRdKD86XFxcXHUyMDBEXFxcXHUyN0ExXFxcXHVGRTBGPyk/fFtcXFxcdUREQjAtXFxcXHVEREIzXXxcXFxcdUREMURcXFxcdTIwMERcXFxcdUQ4M0VcXFxcdURERDFcXFxcdUQ4M0NbXFxcXHVERkZCLVxcXFx1REZGRl0pKSk/KSk/fFxcXFx1REVGMSg/OlxcXFx1RDgzQyg/OlxcXFx1REZGQig/OlxcXFx1MjAwRFxcXFx1RDgzRVxcXFx1REVGMlxcXFx1RDgzQ1tcXFxcdURGRkMtXFxcXHVERkZGXSk/fFxcXFx1REZGQyg/OlxcXFx1MjAwRFxcXFx1RDgzRVxcXFx1REVGMlxcXFx1RDgzQ1tcXFxcdURGRkJcXFxcdURGRkQtXFxcXHVERkZGXSk/fFxcXFx1REZGRCg/OlxcXFx1MjAwRFxcXFx1RDgzRVxcXFx1REVGMlxcXFx1RDgzQ1tcXFxcdURGRkJcXFxcdURGRkNcXFxcdURGRkVcXFxcdURGRkZdKT98XFxcXHVERkZFKD86XFxcXHUyMDBEXFxcXHVEODNFXFxcXHVERUYyXFxcXHVEODNDW1xcXFx1REZGQi1cXFxcdURGRkRcXFxcdURGRkZdKT98XFxcXHVERkZGKD86XFxcXHUyMDBEXFxcXHVEODNFXFxcXHVERUYyXFxcXHVEODNDW1xcXFx1REZGQi1cXFxcdURGRkVdKT8pKT8pL2c7ZnVuY3Rpb24gTWkobil7cmV0dXJuIG49PW51bGw/bjpuLnNoaWZ0VG8oXFxcInllYXJzXFxcIixcXFwibW9udGhzXFxcIixcXFwid2Vla3NcXFwiLFxcXCJkYXlzXFxcIixcXFwiaG91cnNcXFwiLFxcXCJtaW51dGVzXFxcIixcXFwic2Vjb25kc1xcXCIsXFxcIm1pbGxpc2Vjb25kc1xcXCIpLm5vcm1hbGl6ZSgpfWZ1bmN0aW9uIGphKG4sZSx0LHIpe3JldHVybiBuLnNlY29uZD09MCYmbi5taW51dGU9PTAmJm4uaG91cj09MD9uLnRvTG9jYWwoKS50b0Zvcm1hdChlLHtsb2NhbGU6cn0pOm4udG9Mb2NhbCgpLnRvRm9ybWF0KHQse2xvY2FsZTpyfSl9ZnVuY3Rpb24gcWEobil7bj1NaShuKTtsZXQgZT1cXFwiXFxcIjtyZXR1cm4gbi55ZWFycyYmKGUrPWAke24ueWVhcnN9IHllYXJzLCBgKSxuLm1vbnRocyYmKGUrPWAke24ubW9udGhzfSBtb250aHMsIGApLG4ud2Vla3MmJihlKz1gJHtuLndlZWtzfSB3ZWVrcywgYCksbi5kYXlzJiYoZSs9YCR7bi5kYXlzfSBkYXlzLCBgKSxuLmhvdXJzJiYoZSs9YCR7bi5ob3Vyc30gaG91cnMsIGApLG4ubWludXRlcyYmKGUrPWAke24ubWludXRlc30gbWludXRlcywgYCksbi5zZWNvbmRzJiYoZSs9YCR7TWF0aC5yb3VuZChuLnNlY29uZHMpfSBzZWNvbmRzLCBgKSxuLm1pbGxpc2Vjb25kcyYmKGUrPWAke01hdGgucm91bmQobi5taWxsaXNlY29uZHMpfSBtcywgYCksZS5lbmRzV2l0aChcXFwiLCBcXFwiKSYmKGU9ZS5zdWJzdHJpbmcoMCxlLmxlbmd0aC0yKSksZX1mdW5jdGlvbiBFbihuKXtyZXR1cm4gbi5pbmNsdWRlcyhcXFwiL1xcXCIpJiYobj1uLnN1YnN0cmluZyhuLmxhc3RJbmRleE9mKFxcXCIvXFxcIikrMSkpLG4uZW5kc1dpdGgoXFxcIi5tZFxcXCIpJiYobj1uLnN1YnN0cmluZygwLG4ubGVuZ3RoLTMpKSxufWZ1bmN0aW9uIFZhKG4pe3JldHVybiBuLmluY2x1ZGVzKFxcXCIuXFxcIik/bi5zdWJzdHJpbmcobi5sYXN0SW5kZXhPZihcXFwiLlxcXCIpKzEpOlxcXCJcXFwifXZhciBVYz1idC5hbHQoYnQucmVnZXgobmV3IFJlZ0V4cChGbigpLFxcXCJcXFwiKSksYnQucmVnZXgoL1swLTlcXFxccHtMZXR0ZXJ9Xy1dKy91KSxidC53aGl0ZXNwYWNlLm1hcChuPT5cXFwiIFxcXCIpLGJ0LmFueS5tYXAobj0+XFxcIiBcXFwiKSkubWFueSgpLm1hcChuPT5uLmpvaW4oXFxcIlxcXCIpLnNwbGl0KC9cXFxccysvKS5qb2luKFxcXCIgXFxcIikudHJpbSgpKTtmdW5jdGlvbiBVYShuKXtyZXR1cm4gVWMudHJ5UGFyc2Uobil9dmFyIE9lPWNsYXNzIG57c3RhdGljIGZpbGUoZSx0PSExLHIpe3JldHVybiBuZXcgbih7cGF0aDplLGVtYmVkOnQsZGlzcGxheTpyLHN1YnBhdGg6dm9pZCAwLHR5cGU6XFxcImZpbGVcXFwifSl9c3RhdGljIGluZmVyKGUsdD0hMSxyKXtpZihlLmluY2x1ZGVzKFxcXCIjXlxcXCIpKXtsZXQgcz1lLnNwbGl0KFxcXCIjXlxcXCIpO3JldHVybiBuLmJsb2NrKHNbMF0sc1sxXSx0LHIpfWVsc2UgaWYoZS5pbmNsdWRlcyhcXFwiI1xcXCIpKXtsZXQgcz1lLnNwbGl0KFxcXCIjXFxcIik7cmV0dXJuIG4uaGVhZGVyKHNbMF0sc1sxXSx0LHIpfWVsc2UgcmV0dXJuIG4uZmlsZShlLHQscil9c3RhdGljIGhlYWRlcihlLHQscixzKXtyZXR1cm4gbmV3IG4oe3BhdGg6ZSxlbWJlZDpyLGRpc3BsYXk6cyxzdWJwYXRoOlVhKHQpLHR5cGU6XFxcImhlYWRlclxcXCJ9KX1zdGF0aWMgYmxvY2soZSx0LHIscyl7cmV0dXJuIG5ldyBuKHtwYXRoOmUsZW1iZWQ6cixkaXNwbGF5OnMsc3VicGF0aDp0LHR5cGU6XFxcImJsb2NrXFxcIn0pfXN0YXRpYyBmcm9tT2JqZWN0KGUpe3JldHVybiBuZXcgbihlKX1zdGF0aWMgcGFyc2VJbm5lcihlKXtsZXRbdCxyXT1LYyhlKTtyZXR1cm4gbi5pbmZlcih0LCExLHIpfWNvbnN0cnVjdG9yKGUpe09iamVjdC5hc3NpZ24odGhpcyxlKX13aXRoUGF0aChlKXtyZXR1cm4gbmV3IG4oT2JqZWN0LmFzc2lnbih7fSx0aGlzLHtwYXRoOmV9KSl9d2l0aERpc3BsYXkoZSl7cmV0dXJuIG5ldyBuKE9iamVjdC5hc3NpZ24oe30sdGhpcyx7ZGlzcGxheTplfSkpfXdpdGhFbWJlZChlKXtyZXR1cm4gdGhpcy5lbWJlZD09ZT90aGlzOm5ldyBuKE9iamVjdC5hc3NpZ24oe30sdGhpcyx7ZW1iZWQ6ZX0pKX13aXRoSGVhZGVyKGUpe3JldHVybiBuLmhlYWRlcih0aGlzLnBhdGgsZSx0aGlzLmVtYmVkLHRoaXMuZGlzcGxheSl9d2l0aEJsb2NrKGUpe3JldHVybiBuLmJsb2NrKHRoaXMucGF0aCxlLHRoaXMuZW1iZWQsdGhpcy5kaXNwbGF5KX1lcXVhbHMoZSl7cmV0dXJuIGU9PW51bGx8fGU9PW51bGw/ITE6dGhpcy5wYXRoPT1lLnBhdGgmJnRoaXMudHlwZT09ZS50eXBlJiZ0aGlzLnN1YnBhdGg9PWUuc3VicGF0aH10b1N0cmluZygpe3JldHVybiB0aGlzLm1hcmtkb3duKCl9dG9PYmplY3QoKXtyZXR1cm57cGF0aDp0aGlzLnBhdGgsdHlwZTp0aGlzLnR5cGUsc3VicGF0aDp0aGlzLnN1YnBhdGgsZGlzcGxheTp0aGlzLmRpc3BsYXksZW1iZWQ6dGhpcy5lbWJlZH19dG9GaWxlKCl7cmV0dXJuIG4uZmlsZSh0aGlzLnBhdGgsdGhpcy5lbWJlZCx0aGlzLmRpc3BsYXkpfXRvRW1iZWQoKXtyZXR1cm4gdGhpcy53aXRoRW1iZWQoITApfWZyb21FbWJlZCgpe3JldHVybiB0aGlzLndpdGhFbWJlZCghMSl9bWFya2Rvd24oKXtsZXQgZT0odGhpcy5lbWJlZD9cXFwiIVxcXCI6XFxcIlxcXCIpK1xcXCJbW1xcXCIrdGhpcy5vYnNpZGlhbkxpbmsoKTtyZXR1cm4gZSs9XFxcInxcXFwiLGUrPXRoaXMuZGlzcGxheU9yRGVmYXVsdCgpLGUrPVxcXCJdXVxcXCIsZX1kaXNwbGF5T3JEZWZhdWx0KCl7aWYodGhpcy5kaXNwbGF5KXJldHVybiB0aGlzLmRpc3BsYXk7e2xldCBlPUVuKHRoaXMucGF0aCk7cmV0dXJuKHRoaXMudHlwZT09XFxcImhlYWRlclxcXCJ8fHRoaXMudHlwZT09XFxcImJsb2NrXFxcIikmJihlKz1cXFwiID4gXFxcIit0aGlzLnN1YnBhdGgpLGV9fW9ic2lkaWFuTGluaygpe3ZhciB0LHI7bGV0IGU9dGhpcy5wYXRoLnJlcGxhY2UoXFxcInxcXFwiLFxcXCJcXFxcXFxcXHxcXFwiKTtyZXR1cm4gdGhpcy50eXBlPT1cXFwiaGVhZGVyXFxcIj9lK1xcXCIjXFxcIisoKHQ9dGhpcy5zdWJwYXRoKT09bnVsbD92b2lkIDA6dC5yZXBsYWNlKFxcXCJ8XFxcIixcXFwiXFxcXFxcXFx8XFxcIikpOnRoaXMudHlwZT09XFxcImJsb2NrXFxcIj9lK1xcXCIjXlxcXCIrKChyPXRoaXMuc3VicGF0aCk9PW51bGw/dm9pZCAwOnIucmVwbGFjZShcXFwifFxcXCIsXFxcIlxcXFxcXFxcfFxcXCIpKTplfWZpbGVOYW1lKCl7cmV0dXJuIEVuKHRoaXMucGF0aCl9fTtmdW5jdGlvbiBLYyhuKXtsZXQgZT0tMTtmb3IoOyhlPW4uaW5kZXhPZihcXFwifFxcXCIsZSsxKSk+PTA7KWlmKCEoZT4wJiZuW2UtMV09PVxcXCJcXFxcXFxcXFxcXCIpKXJldHVybltuLnN1YnN0cmluZygwLGUpLnJlcGxhY2UoL1xcXFxcXFxcXFxcXHwvZyxcXFwifFxcXCIpLG4uc3Vic3RyaW5nKGUrMSldO3JldHVybltuLnJlcGxhY2UoL1xcXFxcXFxcXFxcXHwvZyxcXFwifFxcXCIpLHZvaWQgMF19dmFyIHJzPVN5bWJvbC5mb3IoXFxcInlhbWwuYWxpYXNcXFwiKSxzcz1TeW1ib2wuZm9yKFxcXCJ5YW1sLmRvY3VtZW50XFxcIiksS2U9U3ltYm9sLmZvcihcXFwieWFtbC5tYXBcXFwiKSxfaT1TeW1ib2wuZm9yKFxcXCJ5YW1sLnBhaXJcXFwiKSxJZT1TeW1ib2wuZm9yKFxcXCJ5YW1sLnNjYWxhclxcXCIpLEZ0PVN5bWJvbC5mb3IoXFxcInlhbWwuc2VxXFxcIiksVGU9U3ltYm9sLmZvcihcXFwieWFtbC5ub2RlLnR5cGVcXFwiKSxXZT1uPT4hIW4mJnR5cGVvZiBuPT1cXFwib2JqZWN0XFxcIiYmbltUZV09PT1ycyxydD1uPT4hIW4mJnR5cGVvZiBuPT1cXFwib2JqZWN0XFxcIiYmbltUZV09PT1zcyxIZT1uPT4hIW4mJnR5cGVvZiBuPT1cXFwib2JqZWN0XFxcIiYmbltUZV09PT1LZSxIPW49PiEhbiYmdHlwZW9mIG49PVxcXCJvYmplY3RcXFwiJiZuW1RlXT09PV9pLEs9bj0+ISFuJiZ0eXBlb2Ygbj09XFxcIm9iamVjdFxcXCImJm5bVGVdPT09SWUsSmU9bj0+ISFuJiZ0eXBlb2Ygbj09XFxcIm9iamVjdFxcXCImJm5bVGVdPT09RnQ7ZnVuY3Rpb24gWihuKXtpZihuJiZ0eXBlb2Ygbj09XFxcIm9iamVjdFxcXCIpc3dpdGNoKG5bVGVdKXtjYXNlIEtlOmNhc2UgRnQ6cmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24gSihuKXtpZihuJiZ0eXBlb2Ygbj09XFxcIm9iamVjdFxcXCIpc3dpdGNoKG5bVGVdKXtjYXNlIHJzOmNhc2UgS2U6Y2FzZSBJZTpjYXNlIEZ0OnJldHVybiEwfXJldHVybiExfXZhciBLYT1uPT4oSyhuKXx8WihuKSkmJiEhbi5hbmNob3I7dmFyIENlPVN5bWJvbChcXFwiYnJlYWsgdmlzaXRcXFwiKSxXYT1TeW1ib2woXFxcInNraXAgY2hpbGRyZW5cXFwiKSxzdD1TeW1ib2woXFxcInJlbW92ZSBub2RlXFxcIik7ZnVuY3Rpb24gemUobixlKXtsZXQgdD1IYShlKTtydChuKT93bihudWxsLG4uY29udGVudHMsdCxPYmplY3QuZnJlZXplKFtuXSkpPT09c3QmJihuLmNvbnRlbnRzPW51bGwpOnduKG51bGwsbix0LE9iamVjdC5mcmVlemUoW10pKX16ZS5CUkVBSz1DZTt6ZS5TS0lQPVdhO3plLlJFTU9WRT1zdDtmdW5jdGlvbiB3bihuLGUsdCxyKXtsZXQgcz1KYShuLGUsdCxyKTtpZihKKHMpfHxIKHMpKXJldHVybiB6YShuLHIscyksd24obixzLHQscik7aWYodHlwZW9mIHMhPVxcXCJzeW1ib2xcXFwiKXtpZihaKGUpKXtyPU9iamVjdC5mcmVlemUoci5jb25jYXQoZSkpO2ZvcihsZXQgaT0wO2k8ZS5pdGVtcy5sZW5ndGg7KytpKXtsZXQgbz13bihpLGUuaXRlbXNbaV0sdCxyKTtpZih0eXBlb2Ygbz09XFxcIm51bWJlclxcXCIpaT1vLTE7ZWxzZXtpZihvPT09Q2UpcmV0dXJuIENlO289PT1zdCYmKGUuaXRlbXMuc3BsaWNlKGksMSksaS09MSl9fX1lbHNlIGlmKEgoZSkpe3I9T2JqZWN0LmZyZWV6ZShyLmNvbmNhdChlKSk7bGV0IGk9d24oXFxcImtleVxcXCIsZS5rZXksdCxyKTtpZihpPT09Q2UpcmV0dXJuIENlO2k9PT1zdCYmKGUua2V5PW51bGwpO2xldCBvPXduKFxcXCJ2YWx1ZVxcXCIsZS52YWx1ZSx0LHIpO2lmKG89PT1DZSlyZXR1cm4gQ2U7bz09PXN0JiYoZS52YWx1ZT1udWxsKX19cmV0dXJuIHN9YXN5bmMgZnVuY3Rpb24gaXMobixlKXtsZXQgdD1IYShlKTtydChuKT9hd2FpdCBUbihudWxsLG4uY29udGVudHMsdCxPYmplY3QuZnJlZXplKFtuXSkpPT09c3QmJihuLmNvbnRlbnRzPW51bGwpOmF3YWl0IFRuKG51bGwsbix0LE9iamVjdC5mcmVlemUoW10pKX1pcy5CUkVBSz1DZTtpcy5TS0lQPVdhO2lzLlJFTU9WRT1zdDthc3luYyBmdW5jdGlvbiBUbihuLGUsdCxyKXtsZXQgcz1hd2FpdCBKYShuLGUsdCxyKTtpZihKKHMpfHxIKHMpKXJldHVybiB6YShuLHIscyksVG4obixzLHQscik7aWYodHlwZW9mIHMhPVxcXCJzeW1ib2xcXFwiKXtpZihaKGUpKXtyPU9iamVjdC5mcmVlemUoci5jb25jYXQoZSkpO2ZvcihsZXQgaT0wO2k8ZS5pdGVtcy5sZW5ndGg7KytpKXtsZXQgbz1hd2FpdCBUbihpLGUuaXRlbXNbaV0sdCxyKTtpZih0eXBlb2Ygbz09XFxcIm51bWJlclxcXCIpaT1vLTE7ZWxzZXtpZihvPT09Q2UpcmV0dXJuIENlO289PT1zdCYmKGUuaXRlbXMuc3BsaWNlKGksMSksaS09MSl9fX1lbHNlIGlmKEgoZSkpe3I9T2JqZWN0LmZyZWV6ZShyLmNvbmNhdChlKSk7bGV0IGk9YXdhaXQgVG4oXFxcImtleVxcXCIsZS5rZXksdCxyKTtpZihpPT09Q2UpcmV0dXJuIENlO2k9PT1zdCYmKGUua2V5PW51bGwpO2xldCBvPWF3YWl0IFRuKFxcXCJ2YWx1ZVxcXCIsZS52YWx1ZSx0LHIpO2lmKG89PT1DZSlyZXR1cm4gQ2U7bz09PXN0JiYoZS52YWx1ZT1udWxsKX19cmV0dXJuIHN9ZnVuY3Rpb24gSGEobil7cmV0dXJuIHR5cGVvZiBuPT1cXFwib2JqZWN0XFxcIiYmKG4uQ29sbGVjdGlvbnx8bi5Ob2RlfHxuLlZhbHVlKT9PYmplY3QuYXNzaWduKHtBbGlhczpuLk5vZGUsTWFwOm4uTm9kZSxTY2FsYXI6bi5Ob2RlLFNlcTpuLk5vZGV9LG4uVmFsdWUmJntNYXA6bi5WYWx1ZSxTY2FsYXI6bi5WYWx1ZSxTZXE6bi5WYWx1ZX0sbi5Db2xsZWN0aW9uJiZ7TWFwOm4uQ29sbGVjdGlvbixTZXE6bi5Db2xsZWN0aW9ufSxuKTpufWZ1bmN0aW9uIEphKG4sZSx0LHIpe3ZhciBzLGksbyxhLHU7aWYodHlwZW9mIHQ9PVxcXCJmdW5jdGlvblxcXCIpcmV0dXJuIHQobixlLHIpO2lmKEhlKGUpKXJldHVybihzPXQuTWFwKT09bnVsbD92b2lkIDA6cy5jYWxsKHQsbixlLHIpO2lmKEplKGUpKXJldHVybihpPXQuU2VxKT09bnVsbD92b2lkIDA6aS5jYWxsKHQsbixlLHIpO2lmKEgoZSkpcmV0dXJuKG89dC5QYWlyKT09bnVsbD92b2lkIDA6by5jYWxsKHQsbixlLHIpO2lmKEsoZSkpcmV0dXJuKGE9dC5TY2FsYXIpPT1udWxsP3ZvaWQgMDphLmNhbGwodCxuLGUscik7aWYoV2UoZSkpcmV0dXJuKHU9dC5BbGlhcyk9PW51bGw/dm9pZCAwOnUuY2FsbCh0LG4sZSxyKX1mdW5jdGlvbiB6YShuLGUsdCl7bGV0IHI9ZVtlLmxlbmd0aC0xXTtpZihaKHIpKXIuaXRlbXNbbl09dDtlbHNlIGlmKEgocikpbj09PVxcXCJrZXlcXFwiP3Iua2V5PXQ6ci52YWx1ZT10O2Vsc2UgaWYocnQocikpci5jb250ZW50cz10O2Vsc2V7bGV0IHM9V2Uocik/XFxcImFsaWFzXFxcIjpcXFwic2NhbGFyXFxcIjt0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCByZXBsYWNlIG5vZGUgd2l0aCAke3N9IHBhcmVudGApfX12YXIgV2M9e1xcXCIhXFxcIjpcXFwiJTIxXFxcIixcXFwiLFxcXCI6XFxcIiUyQ1xcXCIsXFxcIltcXFwiOlxcXCIlNUJcXFwiLFxcXCJdXFxcIjpcXFwiJTVEXFxcIixcXFwie1xcXCI6XFxcIiU3QlxcXCIsXFxcIn1cXFwiOlxcXCIlN0RcXFwifSxIYz1uPT5uLnJlcGxhY2UoL1shLFtcXFxcXXt9XS9nLGU9PldjW2VdKSxpdD1jbGFzcyBue2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5kb2NTdGFydD1udWxsLHRoaXMuZG9jRW5kPSExLHRoaXMueWFtbD1PYmplY3QuYXNzaWduKHt9LG4uZGVmYXVsdFlhbWwsZSksdGhpcy50YWdzPU9iamVjdC5hc3NpZ24oe30sbi5kZWZhdWx0VGFncyx0KX1jbG9uZSgpe2xldCBlPW5ldyBuKHRoaXMueWFtbCx0aGlzLnRhZ3MpO3JldHVybiBlLmRvY1N0YXJ0PXRoaXMuZG9jU3RhcnQsZX1hdERvY3VtZW50KCl7bGV0IGU9bmV3IG4odGhpcy55YW1sLHRoaXMudGFncyk7c3dpdGNoKHRoaXMueWFtbC52ZXJzaW9uKXtjYXNlXFxcIjEuMVxcXCI6dGhpcy5hdE5leHREb2N1bWVudD0hMDticmVhaztjYXNlXFxcIjEuMlxcXCI6dGhpcy5hdE5leHREb2N1bWVudD0hMSx0aGlzLnlhbWw9e2V4cGxpY2l0Om4uZGVmYXVsdFlhbWwuZXhwbGljaXQsdmVyc2lvbjpcXFwiMS4yXFxcIn0sdGhpcy50YWdzPU9iamVjdC5hc3NpZ24oe30sbi5kZWZhdWx0VGFncyk7YnJlYWt9cmV0dXJuIGV9YWRkKGUsdCl7dGhpcy5hdE5leHREb2N1bWVudCYmKHRoaXMueWFtbD17ZXhwbGljaXQ6bi5kZWZhdWx0WWFtbC5leHBsaWNpdCx2ZXJzaW9uOlxcXCIxLjFcXFwifSx0aGlzLnRhZ3M9T2JqZWN0LmFzc2lnbih7fSxuLmRlZmF1bHRUYWdzKSx0aGlzLmF0TmV4dERvY3VtZW50PSExKTtsZXQgcj1lLnRyaW0oKS5zcGxpdCgvWyBcXFxcdF0rLykscz1yLnNoaWZ0KCk7c3dpdGNoKHMpe2Nhc2VcXFwiJVRBR1xcXCI6e2lmKHIubGVuZ3RoIT09MiYmKHQoMCxcXFwiJVRBRyBkaXJlY3RpdmUgc2hvdWxkIGNvbnRhaW4gZXhhY3RseSB0d28gcGFydHNcXFwiKSxyLmxlbmd0aDwyKSlyZXR1cm4hMTtsZXRbaSxvXT1yO3JldHVybiB0aGlzLnRhZ3NbaV09bywhMH1jYXNlXFxcIiVZQU1MXFxcIjp7aWYodGhpcy55YW1sLmV4cGxpY2l0PSEwLHIubGVuZ3RoIT09MSlyZXR1cm4gdCgwLFxcXCIlWUFNTCBkaXJlY3RpdmUgc2hvdWxkIGNvbnRhaW4gZXhhY3RseSBvbmUgcGFydFxcXCIpLCExO2xldFtpXT1yO2lmKGk9PT1cXFwiMS4xXFxcInx8aT09PVxcXCIxLjJcXFwiKXJldHVybiB0aGlzLnlhbWwudmVyc2lvbj1pLCEwO3tsZXQgbz0vXlxcXFxkK1xcXFwuXFxcXGQrJC8udGVzdChpKTtyZXR1cm4gdCg2LGBVbnN1cHBvcnRlZCBZQU1MIHZlcnNpb24gJHtpfWAsbyksITF9fWRlZmF1bHQ6cmV0dXJuIHQoMCxgVW5rbm93biBkaXJlY3RpdmUgJHtzfWAsITApLCExfX10YWdOYW1lKGUsdCl7aWYoZT09PVxcXCIhXFxcIilyZXR1cm5cXFwiIVxcXCI7aWYoZVswXSE9PVxcXCIhXFxcIilyZXR1cm4gdChgTm90IGEgdmFsaWQgdGFnOiAke2V9YCksbnVsbDtpZihlWzFdPT09XFxcIjxcXFwiKXtsZXQgbz1lLnNsaWNlKDIsLTEpO3JldHVybiBvPT09XFxcIiFcXFwifHxvPT09XFxcIiEhXFxcIj8odChgVmVyYmF0aW0gdGFncyBhcmVuJ3QgcmVzb2x2ZWQsIHNvICR7ZX0gaXMgaW52YWxpZC5gKSxudWxsKTooZVtlLmxlbmd0aC0xXSE9PVxcXCI+XFxcIiYmdChcXFwiVmVyYmF0aW0gdGFncyBtdXN0IGVuZCB3aXRoIGEgPlxcXCIpLG8pfWxldFsscixzXT1lLm1hdGNoKG5ldyBSZWdFeHAoXFxcIl4oLiohKShbXiFdKikkXFxcIixcXFwic1xcXCIpKTtzfHx0KGBUaGUgJHtlfSB0YWcgaGFzIG5vIHN1ZmZpeGApO2xldCBpPXRoaXMudGFnc1tyXTtpZihpKXRyeXtyZXR1cm4gaStkZWNvZGVVUklDb21wb25lbnQocyl9Y2F0Y2gobyl7cmV0dXJuIHQoU3RyaW5nKG8pKSxudWxsfXJldHVybiByPT09XFxcIiFcXFwiP2U6KHQoYENvdWxkIG5vdCByZXNvbHZlIHRhZzogJHtlfWApLG51bGwpfXRhZ1N0cmluZyhlKXtmb3IobGV0W3Qscl1vZiBPYmplY3QuZW50cmllcyh0aGlzLnRhZ3MpKWlmKGUuc3RhcnRzV2l0aChyKSlyZXR1cm4gdCtIYyhlLnN1YnN0cmluZyhyLmxlbmd0aCkpO3JldHVybiBlWzBdPT09XFxcIiFcXFwiP2U6YCE8JHtlfT5gfXRvU3RyaW5nKGUpe2xldCB0PXRoaXMueWFtbC5leHBsaWNpdD9bYCVZQU1MICR7dGhpcy55YW1sLnZlcnNpb258fFxcXCIxLjJcXFwifWBdOltdLHI9T2JqZWN0LmVudHJpZXModGhpcy50YWdzKSxzO2lmKGUmJnIubGVuZ3RoPjAmJkooZS5jb250ZW50cykpe2xldCBpPXt9O3plKGUuY29udGVudHMsKG8sYSk9PntKKGEpJiZhLnRhZyYmKGlbYS50YWddPSEwKX0pLHM9T2JqZWN0LmtleXMoaSl9ZWxzZSBzPVtdO2ZvcihsZXRbaSxvXW9mIHIpaT09PVxcXCIhIVxcXCImJm89PT1cXFwidGFnOnlhbWwub3JnLDIwMDI6XFxcInx8KCFlfHxzLnNvbWUoYT0+YS5zdGFydHNXaXRoKG8pKSkmJnQucHVzaChgJVRBRyAke2l9ICR7b31gKTtyZXR1cm4gdC5qb2luKGBcXG5gKX19O2l0LmRlZmF1bHRZYW1sPXtleHBsaWNpdDohMSx2ZXJzaW9uOlxcXCIxLjJcXFwifTtpdC5kZWZhdWx0VGFncz17XFxcIiEhXFxcIjpcXFwidGFnOnlhbWwub3JnLDIwMDI6XFxcIn07ZnVuY3Rpb24gb3Mobil7aWYoL1tcXFxceDAwLVxcXFx4MTlcXFxccyxbXFxcXF17fV0vLnRlc3Qobikpe2xldCB0PWBBbmNob3IgbXVzdCBub3QgY29udGFpbiB3aGl0ZXNwYWNlIG9yIGNvbnRyb2wgY2hhcmFjdGVyczogJHtKU09OLnN0cmluZ2lmeShuKX1gO3Rocm93IG5ldyBFcnJvcih0KX1yZXR1cm4hMH1mdW5jdGlvbiBCaShuKXtsZXQgZT1uZXcgU2V0O3JldHVybiB6ZShuLHtWYWx1ZSh0LHIpe3IuYW5jaG9yJiZlLmFkZChyLmFuY2hvcil9fSksZX1mdW5jdGlvbiBQaShuLGUpe2ZvcihsZXQgdD0xOzsrK3Qpe2xldCByPWAke259JHt0fWA7aWYoIWUuaGFzKHIpKXJldHVybiByfX1mdW5jdGlvbiBZYShuLGUpe2xldCB0PVtdLHI9bmV3IE1hcCxzPW51bGw7cmV0dXJue29uQW5jaG9yOmk9Pnt0LnB1c2goaSksc3x8KHM9QmkobikpO2xldCBvPVBpKGUscyk7cmV0dXJuIHMuYWRkKG8pLG99LHNldEFuY2hvcnM6KCk9Pntmb3IobGV0IGkgb2YgdCl7bGV0IG89ci5nZXQoaSk7aWYodHlwZW9mIG89PVxcXCJvYmplY3RcXFwiJiZvLmFuY2hvciYmKEsoby5ub2RlKXx8WihvLm5vZGUpKSlvLm5vZGUuYW5jaG9yPW8uYW5jaG9yO2Vsc2V7bGV0IGE9bmV3IEVycm9yKFxcXCJGYWlsZWQgdG8gcmVzb2x2ZSByZXBlYXRlZCBvYmplY3QgKHRoaXMgc2hvdWxkIG5vdCBoYXBwZW4pXFxcIik7dGhyb3cgYS5zb3VyY2U9aSxhfX19LHNvdXJjZU9iamVjdHM6cn19ZnVuY3Rpb24geHQobixlLHQscil7aWYociYmdHlwZW9mIHI9PVxcXCJvYmplY3RcXFwiKWlmKEFycmF5LmlzQXJyYXkocikpZm9yKGxldCBzPTAsaT1yLmxlbmd0aDtzPGk7KytzKXtsZXQgbz1yW3NdLGE9eHQobixyLFN0cmluZyhzKSxvKTthPT09dm9pZCAwP2RlbGV0ZSByW3NdOmEhPT1vJiYocltzXT1hKX1lbHNlIGlmKHIgaW5zdGFuY2VvZiBNYXApZm9yKGxldCBzIG9mIEFycmF5LmZyb20oci5rZXlzKCkpKXtsZXQgaT1yLmdldChzKSxvPXh0KG4scixzLGkpO289PT12b2lkIDA/ci5kZWxldGUocyk6byE9PWkmJnIuc2V0KHMsbyl9ZWxzZSBpZihyIGluc3RhbmNlb2YgU2V0KWZvcihsZXQgcyBvZiBBcnJheS5mcm9tKHIpKXtsZXQgaT14dChuLHIscyxzKTtpPT09dm9pZCAwP3IuZGVsZXRlKHMpOmkhPT1zJiYoci5kZWxldGUocyksci5hZGQoaSkpfWVsc2UgZm9yKGxldFtzLGldb2YgT2JqZWN0LmVudHJpZXMocikpe2xldCBvPXh0KG4scixzLGkpO289PT12b2lkIDA/ZGVsZXRlIHJbc106byE9PWkmJihyW3NdPW8pfXJldHVybiBuLmNhbGwoZSx0LHIpfWZ1bmN0aW9uIGNlKG4sZSx0KXtpZihBcnJheS5pc0FycmF5KG4pKXJldHVybiBuLm1hcCgocixzKT0+Y2UocixTdHJpbmcocyksdCkpO2lmKG4mJnR5cGVvZiBuLnRvSlNPTj09XFxcImZ1bmN0aW9uXFxcIil7aWYoIXR8fCFLYShuKSlyZXR1cm4gbi50b0pTT04oZSx0KTtsZXQgcj17YWxpYXNDb3VudDowLGNvdW50OjEscmVzOnZvaWQgMH07dC5hbmNob3JzLnNldChuLHIpLHQub25DcmVhdGU9aT0+e3IucmVzPWksZGVsZXRlIHQub25DcmVhdGV9O2xldCBzPW4udG9KU09OKGUsdCk7cmV0dXJuIHQub25DcmVhdGUmJnQub25DcmVhdGUocyksc31yZXR1cm4gdHlwZW9mIG49PVxcXCJiaWdpbnRcXFwiJiYhKHQhPW51bGwmJnQua2VlcCk/TnVtYmVyKG4pOm59dmFyIE90PWNsYXNze2NvbnN0cnVjdG9yKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLFRlLHt2YWx1ZTplfSl9Y2xvbmUoKXtsZXQgZT1PYmplY3QuY3JlYXRlKE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh0aGlzKSk7cmV0dXJuIHRoaXMucmFuZ2UmJihlLnJhbmdlPXRoaXMucmFuZ2Uuc2xpY2UoKSksZX10b0pTKGUse21hcEFzTWFwOnQsbWF4QWxpYXNDb3VudDpyLG9uQW5jaG9yOnMscmV2aXZlcjppfT17fSl7aWYoIXJ0KGUpKXRocm93IG5ldyBUeXBlRXJyb3IoXFxcIkEgZG9jdW1lbnQgYXJndW1lbnQgaXMgcmVxdWlyZWRcXFwiKTtsZXQgbz17YW5jaG9yczpuZXcgTWFwLGRvYzplLGtlZXA6ITAsbWFwQXNNYXA6dD09PSEwLG1hcEtleVdhcm5lZDohMSxtYXhBbGlhc0NvdW50OnR5cGVvZiByPT1cXFwibnVtYmVyXFxcIj9yOjEwMH0sYT1jZSh0aGlzLFxcXCJcXFwiLG8pO2lmKHR5cGVvZiBzPT1cXFwiZnVuY3Rpb25cXFwiKWZvcihsZXR7Y291bnQ6dSxyZXM6bH1vZiBvLmFuY2hvcnMudmFsdWVzKCkpcyhsLHUpO3JldHVybiB0eXBlb2YgaT09XFxcImZ1bmN0aW9uXFxcIj94dChpLHtcXFwiXFxcIjphfSxcXFwiXFxcIixhKTphfX07dmFyIEV0PWNsYXNzIGV4dGVuZHMgT3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocnMpLHRoaXMuc291cmNlPWUsT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsXFxcInRhZ1xcXCIse3NldCgpe3Rocm93IG5ldyBFcnJvcihcXFwiQWxpYXMgbm9kZXMgY2Fubm90IGhhdmUgdGFnc1xcXCIpfX0pfXJlc29sdmUoZSl7bGV0IHQ7cmV0dXJuIHplKGUse05vZGU6KHIscyk9PntpZihzPT09dGhpcylyZXR1cm4gemUuQlJFQUs7cy5hbmNob3I9PT10aGlzLnNvdXJjZSYmKHQ9cyl9fSksdH10b0pTT04oZSx0KXtpZighdClyZXR1cm57c291cmNlOnRoaXMuc291cmNlfTtsZXR7YW5jaG9yczpyLGRvYzpzLG1heEFsaWFzQ291bnQ6aX09dCxvPXRoaXMucmVzb2x2ZShzKTtpZighbyl7bGV0IHU9YFVucmVzb2x2ZWQgYWxpYXMgKHRoZSBhbmNob3IgbXVzdCBiZSBzZXQgYmVmb3JlIHRoZSBhbGlhcyk6ICR7dGhpcy5zb3VyY2V9YDt0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IodSl9bGV0IGE9ci5nZXQobyk7aWYoYXx8KGNlKG8sbnVsbCx0KSxhPXIuZ2V0KG8pKSwhYXx8YS5yZXM9PT12b2lkIDApe2xldCB1PVxcXCJUaGlzIHNob3VsZCBub3QgaGFwcGVuOiBBbGlhcyBhbmNob3Igd2FzIG5vdCByZXNvbHZlZD9cXFwiO3Rocm93IG5ldyBSZWZlcmVuY2VFcnJvcih1KX1pZihpPj0wJiYoYS5jb3VudCs9MSxhLmFsaWFzQ291bnQ9PT0wJiYoYS5hbGlhc0NvdW50PWFzKHMsbyxyKSksYS5jb3VudCphLmFsaWFzQ291bnQ+aSkpe2xldCB1PVxcXCJFeGNlc3NpdmUgYWxpYXMgY291bnQgaW5kaWNhdGVzIGEgcmVzb3VyY2UgZXhoYXVzdGlvbiBhdHRhY2tcXFwiO3Rocm93IG5ldyBSZWZlcmVuY2VFcnJvcih1KX1yZXR1cm4gYS5yZXN9dG9TdHJpbmcoZSx0LHIpe2xldCBzPWAqJHt0aGlzLnNvdXJjZX1gO2lmKGUpe2lmKG9zKHRoaXMuc291cmNlKSxlLm9wdGlvbnMudmVyaWZ5QWxpYXNPcmRlciYmIWUuYW5jaG9ycy5oYXModGhpcy5zb3VyY2UpKXtsZXQgaT1gVW5yZXNvbHZlZCBhbGlhcyAodGhlIGFuY2hvciBtdXN0IGJlIHNldCBiZWZvcmUgdGhlIGFsaWFzKTogJHt0aGlzLnNvdXJjZX1gO3Rocm93IG5ldyBFcnJvcihpKX1pZihlLmltcGxpY2l0S2V5KXJldHVybmAke3N9IGB9cmV0dXJuIHN9fTtmdW5jdGlvbiBhcyhuLGUsdCl7aWYoV2UoZSkpe2xldCByPWUucmVzb2x2ZShuKSxzPXQmJnImJnQuZ2V0KHIpO3JldHVybiBzP3MuY291bnQqcy5hbGlhc0NvdW50OjB9ZWxzZSBpZihaKGUpKXtsZXQgcj0wO2ZvcihsZXQgcyBvZiBlLml0ZW1zKXtsZXQgaT1hcyhuLHMsdCk7aT5yJiYocj1pKX1yZXR1cm4gcn1lbHNlIGlmKEgoZSkpe2xldCByPWFzKG4sZS5rZXksdCkscz1hcyhuLGUudmFsdWUsdCk7cmV0dXJuIE1hdGgubWF4KHIscyl9cmV0dXJuIDF9dmFyIHVzPW49PiFufHx0eXBlb2YgbiE9XFxcImZ1bmN0aW9uXFxcIiYmdHlwZW9mIG4hPVxcXCJvYmplY3RcXFwiLFA9Y2xhc3MgZXh0ZW5kcyBPdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihJZSksdGhpcy52YWx1ZT1lfXRvSlNPTihlLHQpe3JldHVybiB0IT1udWxsJiZ0LmtlZXA/dGhpcy52YWx1ZTpjZSh0aGlzLnZhbHVlLGUsdCl9dG9TdHJpbmcoKXtyZXR1cm4gU3RyaW5nKHRoaXMudmFsdWUpfX07UC5CTE9DS19GT0xERUQ9XFxcIkJMT0NLX0ZPTERFRFxcXCI7UC5CTE9DS19MSVRFUkFMPVxcXCJCTE9DS19MSVRFUkFMXFxcIjtQLlBMQUlOPVxcXCJQTEFJTlxcXCI7UC5RVU9URV9ET1VCTEU9XFxcIlFVT1RFX0RPVUJMRVxcXCI7UC5RVU9URV9TSU5HTEU9XFxcIlFVT1RFX1NJTkdMRVxcXCI7dmFyIEpjPVxcXCJ0YWc6eWFtbC5vcmcsMjAwMjpcXFwiO2Z1bmN0aW9uIHpjKG4sZSx0KXt2YXIgcjtpZihlKXtsZXQgcz10LmZpbHRlcihvPT5vLnRhZz09PWUpLGk9KHI9cy5maW5kKG89PiFvLmZvcm1hdCkpIT1udWxsP3I6c1swXTtpZighaSl0aHJvdyBuZXcgRXJyb3IoYFRhZyAke2V9IG5vdCBmb3VuZGApO3JldHVybiBpfXJldHVybiB0LmZpbmQocz0+e3ZhciBpO3JldHVybigoaT1zLmlkZW50aWZ5KT09bnVsbD92b2lkIDA6aS5jYWxsKHMsbikpJiYhcy5mb3JtYXR9KX1mdW5jdGlvbiB3dChuLGUsdCl7dmFyIGQsbSxoO2lmKHJ0KG4pJiYobj1uLmNvbnRlbnRzKSxKKG4pKXJldHVybiBuO2lmKEgobikpe2xldCBiPShtPShkPXQuc2NoZW1hW0tlXSkuY3JlYXRlTm9kZSk9PW51bGw/dm9pZCAwOm0uY2FsbChkLHQuc2NoZW1hLG51bGwsdCk7cmV0dXJuIGIuaXRlbXMucHVzaChuKSxifShuIGluc3RhbmNlb2YgU3RyaW5nfHxuIGluc3RhbmNlb2YgTnVtYmVyfHxuIGluc3RhbmNlb2YgQm9vbGVhbnx8dHlwZW9mIEJpZ0ludCE9XFxcInVuZGVmaW5lZFxcXCImJm4gaW5zdGFuY2VvZiBCaWdJbnQpJiYobj1uLnZhbHVlT2YoKSk7bGV0e2FsaWFzRHVwbGljYXRlT2JqZWN0czpyLG9uQW5jaG9yOnMsb25UYWdPYmo6aSxzY2hlbWE6byxzb3VyY2VPYmplY3RzOmF9PXQsdTtpZihyJiZuJiZ0eXBlb2Ygbj09XFxcIm9iamVjdFxcXCIpe2lmKHU9YS5nZXQobiksdSlyZXR1cm4gdS5hbmNob3J8fCh1LmFuY2hvcj1zKG4pKSxuZXcgRXQodS5hbmNob3IpO3U9e2FuY2hvcjpudWxsLG5vZGU6bnVsbH0sYS5zZXQobix1KX1lIT1udWxsJiZlLnN0YXJ0c1dpdGgoXFxcIiEhXFxcIikmJihlPUpjK2Uuc2xpY2UoMikpO2xldCBsPXpjKG4sZSxvLnRhZ3MpO2lmKCFsKXtpZihuJiZ0eXBlb2Ygbi50b0pTT049PVxcXCJmdW5jdGlvblxcXCImJihuPW4udG9KU09OKCkpLCFufHx0eXBlb2YgbiE9XFxcIm9iamVjdFxcXCIpe2xldCBiPW5ldyBQKG4pO3JldHVybiB1JiYodS5ub2RlPWIpLGJ9bD1uIGluc3RhbmNlb2YgTWFwP29bS2VdOlN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3Qobik/b1tGdF06b1tLZV19aSYmKGkobCksZGVsZXRlIHQub25UYWdPYmopO2xldCBmPWwhPW51bGwmJmwuY3JlYXRlTm9kZT9sLmNyZWF0ZU5vZGUodC5zY2hlbWEsbix0KTp0eXBlb2YoKGg9bD09bnVsbD92b2lkIDA6bC5ub2RlQ2xhc3MpPT1udWxsP3ZvaWQgMDpoLmZyb20pPT1cXFwiZnVuY3Rpb25cXFwiP2wubm9kZUNsYXNzLmZyb20odC5zY2hlbWEsbix0KTpuZXcgUChuKTtyZXR1cm4gZT9mLnRhZz1lOmwuZGVmYXVsdHx8KGYudGFnPWwudGFnKSx1JiYodS5ub2RlPWYpLGZ9ZnVuY3Rpb24gcHIobixlLHQpe2xldCByPXQ7Zm9yKGxldCBzPWUubGVuZ3RoLTE7cz49MDstLXMpe2xldCBpPWVbc107aWYodHlwZW9mIGk9PVxcXCJudW1iZXJcXFwiJiZOdW1iZXIuaXNJbnRlZ2VyKGkpJiZpPj0wKXtsZXQgbz1bXTtvW2ldPXIscj1vfWVsc2Ugcj1uZXcgTWFwKFtbaSxyXV0pfXJldHVybiB3dChyLHZvaWQgMCx7YWxpYXNEdXBsaWNhdGVPYmplY3RzOiExLGtlZXBVbmRlZmluZWQ6ITEsb25BbmNob3I6KCk9Pnt0aHJvdyBuZXcgRXJyb3IoXFxcIlRoaXMgc2hvdWxkIG5vdCBoYXBwZW4sIHBsZWFzZSByZXBvcnQgYSBidWcuXFxcIil9LHNjaGVtYTpuLHNvdXJjZU9iamVjdHM6bmV3IE1hcH0pfXZhciBrbj1uPT5uPT1udWxsfHx0eXBlb2Ygbj09XFxcIm9iamVjdFxcXCImJiEhbltTeW1ib2wuaXRlcmF0b3JdKCkubmV4dCgpLmRvbmUsU249Y2xhc3MgZXh0ZW5kcyBPdHtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLFxcXCJzY2hlbWFcXFwiLHt2YWx1ZTp0LGNvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwfSl9Y2xvbmUoZSl7bGV0IHQ9T2JqZWN0LmNyZWF0ZShPYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcyksT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnModGhpcykpO3JldHVybiBlJiYodC5zY2hlbWE9ZSksdC5pdGVtcz10Lml0ZW1zLm1hcChyPT5KKHIpfHxIKHIpP3IuY2xvbmUoZSk6ciksdGhpcy5yYW5nZSYmKHQucmFuZ2U9dGhpcy5yYW5nZS5zbGljZSgpKSx0fWFkZEluKGUsdCl7aWYoa24oZSkpdGhpcy5hZGQodCk7ZWxzZXtsZXRbciwuLi5zXT1lLGk9dGhpcy5nZXQociwhMCk7aWYoWihpKSlpLmFkZEluKHMsdCk7ZWxzZSBpZihpPT09dm9pZCAwJiZ0aGlzLnNjaGVtYSl0aGlzLnNldChyLHByKHRoaXMuc2NoZW1hLHMsdCkpO2Vsc2UgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBZQU1MIGNvbGxlY3Rpb24gYXQgJHtyfS4gUmVtYWluaW5nIHBhdGg6ICR7c31gKX19ZGVsZXRlSW4oZSl7bGV0W3QsLi4ucl09ZTtpZihyLmxlbmd0aD09PTApcmV0dXJuIHRoaXMuZGVsZXRlKHQpO2xldCBzPXRoaXMuZ2V0KHQsITApO2lmKFoocykpcmV0dXJuIHMuZGVsZXRlSW4ocik7dGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBZQU1MIGNvbGxlY3Rpb24gYXQgJHt0fS4gUmVtYWluaW5nIHBhdGg6ICR7cn1gKX1nZXRJbihlLHQpe2xldFtyLC4uLnNdPWUsaT10aGlzLmdldChyLCEwKTtyZXR1cm4gcy5sZW5ndGg9PT0wPyF0JiZLKGkpP2kudmFsdWU6aTpaKGkpP2kuZ2V0SW4ocyx0KTp2b2lkIDB9aGFzQWxsTnVsbFZhbHVlcyhlKXtyZXR1cm4gdGhpcy5pdGVtcy5ldmVyeSh0PT57aWYoIUgodCkpcmV0dXJuITE7bGV0IHI9dC52YWx1ZTtyZXR1cm4gcj09bnVsbHx8ZSYmSyhyKSYmci52YWx1ZT09bnVsbCYmIXIuY29tbWVudEJlZm9yZSYmIXIuY29tbWVudCYmIXIudGFnfSl9aGFzSW4oZSl7bGV0W3QsLi4ucl09ZTtpZihyLmxlbmd0aD09PTApcmV0dXJuIHRoaXMuaGFzKHQpO2xldCBzPXRoaXMuZ2V0KHQsITApO3JldHVybiBaKHMpP3MuaGFzSW4ocik6ITF9c2V0SW4oZSx0KXtsZXRbciwuLi5zXT1lO2lmKHMubGVuZ3RoPT09MCl0aGlzLnNldChyLHQpO2Vsc2V7bGV0IGk9dGhpcy5nZXQociwhMCk7aWYoWihpKSlpLnNldEluKHMsdCk7ZWxzZSBpZihpPT09dm9pZCAwJiZ0aGlzLnNjaGVtYSl0aGlzLnNldChyLHByKHRoaXMuc2NoZW1hLHMsdCkpO2Vsc2UgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBZQU1MIGNvbGxlY3Rpb24gYXQgJHtyfS4gUmVtYWluaW5nIHBhdGg6ICR7c31gKX19fTt2YXIgR2E9bj0+bi5yZXBsYWNlKC9eKD8hJCkoPzogJCk/L2dtLFxcXCIjXFxcIik7ZnVuY3Rpb24gUGUobixlKXtyZXR1cm4vXlxcXFxuKyQvLnRlc3Qobik/bi5zdWJzdHJpbmcoMSk6ZT9uLnJlcGxhY2UoL14oPyEgKiQpL2dtLGUpOm59dmFyIG90PShuLGUsdCk9Pm4uZW5kc1dpdGgoYFxcbmApP1BlKHQsZSk6dC5pbmNsdWRlcyhgXFxuYCk/YFxcbmArUGUodCxlKToobi5lbmRzV2l0aChcXFwiIFxcXCIpP1xcXCJcXFwiOlxcXCIgXFxcIikrdDt2YXIgJGk9XFxcImZsb3dcXFwiLGxzPVxcXCJibG9ja1xcXCIsRHI9XFxcInF1b3RlZFxcXCI7ZnVuY3Rpb24geXIobixlLHQ9XFxcImZsb3dcXFwiLHtpbmRlbnRBdFN0YXJ0OnIsbGluZVdpZHRoOnM9ODAsbWluQ29udGVudFdpZHRoOmk9MjAsb25Gb2xkOm8sb25PdmVyZmxvdzphfT17fSl7aWYoIXN8fHM8MClyZXR1cm4gbjtzPGkmJihpPTApO2xldCB1PU1hdGgubWF4KDEraSwxK3MtZS5sZW5ndGgpO2lmKG4ubGVuZ3RoPD11KXJldHVybiBuO2xldCBsPVtdLGY9e30sZD1zLWUubGVuZ3RoO3R5cGVvZiByPT1cXFwibnVtYmVyXFxcIiYmKHI+cy1NYXRoLm1heCgyLGkpP2wucHVzaCgwKTpkPXMtcik7bGV0IG0saCxiPSExLGc9LTEsRD0tMSxUPS0xO3Q9PT1scyYmKGc9WmEobixnLGUubGVuZ3RoKSxnIT09LTEmJihkPWcrdSkpO2ZvcihsZXQgTjtOPW5bZys9MV07KXtpZih0PT09RHImJk49PT1cXFwiXFxcXFxcXFxcXFwiKXtzd2l0Y2goRD1nLG5bZysxXSl7Y2FzZVxcXCJ4XFxcIjpnKz0zO2JyZWFrO2Nhc2VcXFwidVxcXCI6Zys9NTticmVhaztjYXNlXFxcIlVcXFwiOmcrPTk7YnJlYWs7ZGVmYXVsdDpnKz0xfVQ9Z31pZihOPT09YFxcbmApdD09PWxzJiYoZz1aYShuLGcsZS5sZW5ndGgpKSxkPWcrZS5sZW5ndGgrdSxtPXZvaWQgMDtlbHNle2lmKE49PT1cXFwiIFxcXCImJmgmJmghPT1cXFwiIFxcXCImJmghPT1gXFxuYCYmaCE9PVxcXCJcXHRcXFwiKXtsZXQgeT1uW2crMV07eSYmeSE9PVxcXCIgXFxcIiYmeSE9PWBcXG5gJiZ5IT09XFxcIlxcdFxcXCImJihtPWcpfWlmKGc+PWQpaWYobSlsLnB1c2gobSksZD1tK3UsbT12b2lkIDA7ZWxzZSBpZih0PT09RHIpe2Zvcig7aD09PVxcXCIgXFxcInx8aD09PVxcXCJcXHRcXFwiOyloPU4sTj1uW2crPTFdLGI9ITA7bGV0IHk9Zz5UKzE/Zy0yOkQtMTtpZihmW3ldKXJldHVybiBuO2wucHVzaCh5KSxmW3ldPSEwLGQ9eSt1LG09dm9pZCAwfWVsc2UgYj0hMH1oPU59aWYoYiYmYSYmYSgpLGwubGVuZ3RoPT09MClyZXR1cm4gbjtvJiZvKCk7bGV0IEk9bi5zbGljZSgwLGxbMF0pO2ZvcihsZXQgTj0wO048bC5sZW5ndGg7KytOKXtsZXQgeT1sW05dLHc9bFtOKzFdfHxuLmxlbmd0aDt5PT09MD9JPWBcXG4ke2V9JHtuLnNsaWNlKDAsdyl9YDoodD09PURyJiZmW3ldJiYoSSs9YCR7blt5XX1cXFxcXFxcXGApLEkrPWBcXG4ke2V9JHtuLnNsaWNlKHkrMSx3KX1gKX1yZXR1cm4gSX1mdW5jdGlvbiBaYShuLGUsdCl7bGV0IHI9ZSxzPWUrMSxpPW5bc107Zm9yKDtpPT09XFxcIiBcXFwifHxpPT09XFxcIlxcdFxcXCI7KWlmKGU8cyt0KWk9blsrK2VdO2Vsc2V7ZG8gaT1uWysrZV07d2hpbGUoaSYmaSE9PWBcXG5gKTtyPWUscz1lKzEsaT1uW3NdfXJldHVybiByfXZhciBmcz0obixlKT0+KHtpbmRlbnRBdFN0YXJ0OmU/bi5pbmRlbnQubGVuZ3RoOm4uaW5kZW50QXRTdGFydCxsaW5lV2lkdGg6bi5vcHRpb25zLmxpbmVXaWR0aCxtaW5Db250ZW50V2lkdGg6bi5vcHRpb25zLm1pbkNvbnRlbnRXaWR0aH0pLGRzPW49Pi9eKCV8LS0tfFxcXFwuXFxcXC5cXFxcLikvbS50ZXN0KG4pO2Z1bmN0aW9uIFljKG4sZSx0KXtpZighZXx8ZTwwKXJldHVybiExO2xldCByPWUtdCxzPW4ubGVuZ3RoO2lmKHM8PXIpcmV0dXJuITE7Zm9yKGxldCBpPTAsbz0wO2k8czsrK2kpaWYobltpXT09PWBcXG5gKXtpZihpLW8+cilyZXR1cm4hMDtpZihvPWkrMSxzLW88PXIpcmV0dXJuITF9cmV0dXJuITB9ZnVuY3Rpb24gZ3IobixlKXtsZXQgdD1KU09OLnN0cmluZ2lmeShuKTtpZihlLm9wdGlvbnMuZG91YmxlUXVvdGVkQXNKU09OKXJldHVybiB0O2xldHtpbXBsaWNpdEtleTpyfT1lLHM9ZS5vcHRpb25zLmRvdWJsZVF1b3RlZE1pbk11bHRpTGluZUxlbmd0aCxpPWUuaW5kZW50fHwoZHMobik/XFxcIiAgXFxcIjpcXFwiXFxcIiksbz1cXFwiXFxcIixhPTA7Zm9yKGxldCB1PTAsbD10W3VdO2w7bD10WysrdV0paWYobD09PVxcXCIgXFxcIiYmdFt1KzFdPT09XFxcIlxcXFxcXFxcXFxcIiYmdFt1KzJdPT09XFxcIm5cXFwiJiYobys9dC5zbGljZShhLHUpK1xcXCJcXFxcXFxcXCBcXFwiLHUrPTEsYT11LGw9XFxcIlxcXFxcXFxcXFxcIiksbD09PVxcXCJcXFxcXFxcXFxcXCIpc3dpdGNoKHRbdSsxXSl7Y2FzZVxcXCJ1XFxcIjp7bys9dC5zbGljZShhLHUpO2xldCBmPXQuc3Vic3RyKHUrMiw0KTtzd2l0Y2goZil7Y2FzZVxcXCIwMDAwXFxcIjpvKz1cXFwiXFxcXFxcXFwwXFxcIjticmVhaztjYXNlXFxcIjAwMDdcXFwiOm8rPVxcXCJcXFxcXFxcXGFcXFwiO2JyZWFrO2Nhc2VcXFwiMDAwYlxcXCI6bys9XFxcIlxcXFxcXFxcdlxcXCI7YnJlYWs7Y2FzZVxcXCIwMDFiXFxcIjpvKz1cXFwiXFxcXFxcXFxlXFxcIjticmVhaztjYXNlXFxcIjAwODVcXFwiOm8rPVxcXCJcXFxcXFxcXE5cXFwiO2JyZWFrO2Nhc2VcXFwiMDBhMFxcXCI6bys9XFxcIlxcXFxcXFxcX1xcXCI7YnJlYWs7Y2FzZVxcXCIyMDI4XFxcIjpvKz1cXFwiXFxcXFxcXFxMXFxcIjticmVhaztjYXNlXFxcIjIwMjlcXFwiOm8rPVxcXCJcXFxcXFxcXFBcXFwiO2JyZWFrO2RlZmF1bHQ6Zi5zdWJzdHIoMCwyKT09PVxcXCIwMFxcXCI/bys9XFxcIlxcXFxcXFxceFxcXCIrZi5zdWJzdHIoMik6bys9dC5zdWJzdHIodSw2KX11Kz01LGE9dSsxfWJyZWFrO2Nhc2VcXFwiblxcXCI6aWYocnx8dFt1KzJdPT09J1xcXCInfHx0Lmxlbmd0aDxzKXUrPTE7ZWxzZXtmb3Iobys9dC5zbGljZShhLHUpK2BcXG5cXG5gO3RbdSsyXT09PVxcXCJcXFxcXFxcXFxcXCImJnRbdSszXT09PVxcXCJuXFxcIiYmdFt1KzRdIT09J1xcXCInOylvKz1gXFxuYCx1Kz0yO28rPWksdFt1KzJdPT09XFxcIiBcXFwiJiYobys9XFxcIlxcXFxcXFxcXFxcIiksdSs9MSxhPXUrMX1icmVhaztkZWZhdWx0OnUrPTF9cmV0dXJuIG89YT9vK3Quc2xpY2UoYSk6dCxyP286eXIobyxpLERyLGZzKGUsITEpKX1mdW5jdGlvbiBSaShuLGUpe2lmKGUub3B0aW9ucy5zaW5nbGVRdW90ZT09PSExfHxlLmltcGxpY2l0S2V5JiZuLmluY2x1ZGVzKGBcXG5gKXx8L1sgXFxcXHRdXFxcXG58XFxcXG5bIFxcXFx0XS8udGVzdChuKSlyZXR1cm4gZ3IobixlKTtsZXQgdD1lLmluZGVudHx8KGRzKG4pP1xcXCIgIFxcXCI6XFxcIlxcXCIpLHI9XFxcIidcXFwiK24ucmVwbGFjZSgvJy9nLFxcXCInJ1xcXCIpLnJlcGxhY2UoL1xcXFxuKy9nLGAkJlxcbiR7dH1gKStcXFwiJ1xcXCI7cmV0dXJuIGUuaW1wbGljaXRLZXk/cjp5cihyLHQsJGksZnMoZSwhMSkpfWZ1bmN0aW9uIENuKG4sZSl7bGV0e3NpbmdsZVF1b3RlOnR9PWUub3B0aW9ucyxyO2lmKHQ9PT0hMSlyPWdyO2Vsc2V7bGV0IHM9bi5pbmNsdWRlcygnXFxcIicpLGk9bi5pbmNsdWRlcyhcXFwiJ1xcXCIpO3MmJiFpP3I9Umk6aSYmIXM/cj1ncjpyPXQ/Umk6Z3J9cmV0dXJuIHIobixlKX12YXIgamk7dHJ5e2ppPW5ldyBSZWdFeHAoYChefCg/PCFcXG4pKVxcbisoPyFcXG58JClgLFxcXCJnXFxcIil9Y2F0Y2gobil7amk9L1xcXFxuKyg/IVxcXFxufCQpL2d9ZnVuY3Rpb24gY3Moe2NvbW1lbnQ6bix0eXBlOmUsdmFsdWU6dH0scixzLGkpe2xldHtibG9ja1F1b3RlOm8sY29tbWVudFN0cmluZzphLGxpbmVXaWR0aDp1fT1yLm9wdGlvbnM7aWYoIW98fC9cXFxcbltcXFxcdCBdKyQvLnRlc3QodCl8fC9eXFxcXHMqJC8udGVzdCh0KSlyZXR1cm4gQ24odCxyKTtsZXQgbD1yLmluZGVudHx8KHIuZm9yY2VCbG9ja0luZGVudHx8ZHModCk/XFxcIiAgXFxcIjpcXFwiXFxcIiksZj1vPT09XFxcImxpdGVyYWxcXFwiPyEwOm89PT1cXFwiZm9sZGVkXFxcInx8ZT09PVAuQkxPQ0tfRk9MREVEPyExOmU9PT1QLkJMT0NLX0xJVEVSQUw/ITA6IVljKHQsdSxsLmxlbmd0aCk7aWYoIXQpcmV0dXJuIGY/YHxcXG5gOmA+XFxuYDtsZXQgZCxtO2ZvcihtPXQubGVuZ3RoO20+MDstLW0pe2xldCB2PXRbbS0xXTtpZih2IT09YFxcbmAmJnYhPT1cXFwiXFx0XFxcIiYmdiE9PVxcXCIgXFxcIilicmVha31sZXQgaD10LnN1YnN0cmluZyhtKSxiPWguaW5kZXhPZihgXFxuYCk7Yj09PS0xP2Q9XFxcIi1cXFwiOnQ9PT1ofHxiIT09aC5sZW5ndGgtMT8oZD1cXFwiK1xcXCIsaSYmaSgpKTpkPVxcXCJcXFwiLGgmJih0PXQuc2xpY2UoMCwtaC5sZW5ndGgpLGhbaC5sZW5ndGgtMV09PT1gXFxuYCYmKGg9aC5zbGljZSgwLC0xKSksaD1oLnJlcGxhY2UoamksYCQmJHtsfWApKTtsZXQgZz0hMSxELFQ9LTE7Zm9yKEQ9MDtEPHQubGVuZ3RoOysrRCl7bGV0IHY9dFtEXTtpZih2PT09XFxcIiBcXFwiKWc9ITA7ZWxzZSBpZih2PT09YFxcbmApVD1EO2Vsc2UgYnJlYWt9bGV0IEk9dC5zdWJzdHJpbmcoMCxUPEQ/VCsxOkQpO0kmJih0PXQuc3Vic3RyaW5nKEkubGVuZ3RoKSxJPUkucmVwbGFjZSgvXFxcXG4rL2csYCQmJHtsfWApKTtsZXQgeT0oZj9cXFwifFxcXCI6XFxcIj5cXFwiKSsoZz9sP1xcXCIyXFxcIjpcXFwiMVxcXCI6XFxcIlxcXCIpK2Q7aWYobiYmKHkrPVxcXCIgXFxcIithKG4ucmVwbGFjZSgvID9bXFxcXHJcXFxcbl0rL2csXFxcIiBcXFwiKSkscyYmcygpKSxmKXJldHVybiB0PXQucmVwbGFjZSgvXFxcXG4rL2csYCQmJHtsfWApLGAke3l9XFxuJHtsfSR7SX0ke3R9JHtofWA7dD10LnJlcGxhY2UoL1xcXFxuKy9nLGBcXG4kJmApLnJlcGxhY2UoLyg/Ol58XFxcXG4pKFtcXFxcdCBdLiopKD86KFtcXFxcblxcXFx0IF0qKVxcXFxuKD8hW1xcXFxuXFxcXHQgXSkpPy9nLFxcXCIkMSQyXFxcIikucmVwbGFjZSgvXFxcXG4rL2csYCQmJHtsfWApO2xldCB3PXlyKGAke0l9JHt0fSR7aH1gLGwsbHMsZnMociwhMCkpO3JldHVybmAke3l9XFxuJHtsfSR7d31gfWZ1bmN0aW9uIEdjKG4sZSx0LHIpe2xldHt0eXBlOnMsdmFsdWU6aX09bix7YWN0dWFsU3RyaW5nOm8saW1wbGljaXRLZXk6YSxpbmRlbnQ6dSxpbmRlbnRTdGVwOmwsaW5GbG93OmZ9PWU7aWYoYSYmaS5pbmNsdWRlcyhgXFxuYCl8fGYmJi9bW1xcXFxde30sXS8udGVzdChpKSlyZXR1cm4gQ24oaSxlKTtpZighaXx8L15bXFxcXG5cXFxcdCAsW1xcXFxde30jJiohfD4nXFxcIiVAYF18Xls/LV0kfF5bPy1dWyBcXFxcdF18W1xcXFxuOl1bIFxcXFx0XXxbIFxcXFx0XVxcXFxufFtcXFxcblxcXFx0IF0jfFtcXFxcblxcXFx0IDpdJC8udGVzdChpKSlyZXR1cm4gYXx8Znx8IWkuaW5jbHVkZXMoYFxcbmApP0NuKGksZSk6Y3MobixlLHQscik7aWYoIWEmJiFmJiZzIT09UC5QTEFJTiYmaS5pbmNsdWRlcyhgXFxuYCkpcmV0dXJuIGNzKG4sZSx0LHIpO2lmKGRzKGkpKXtpZih1PT09XFxcIlxcXCIpcmV0dXJuIGUuZm9yY2VCbG9ja0luZGVudD0hMCxjcyhuLGUsdCxyKTtpZihhJiZ1PT09bClyZXR1cm4gQ24oaSxlKX1sZXQgZD1pLnJlcGxhY2UoL1xcXFxuKy9nLGAkJlxcbiR7dX1gKTtpZihvKXtsZXQgbT1nPT57dmFyIEQ7cmV0dXJuIGcuZGVmYXVsdCYmZy50YWchPT1cXFwidGFnOnlhbWwub3JnLDIwMDI6c3RyXFxcIiYmKChEPWcudGVzdCk9PW51bGw/dm9pZCAwOkQudGVzdChkKSl9LHtjb21wYXQ6aCx0YWdzOmJ9PWUuZG9jLnNjaGVtYTtpZihiLnNvbWUobSl8fGghPW51bGwmJmguc29tZShtKSlyZXR1cm4gQ24oaSxlKX1yZXR1cm4gYT9kOnlyKGQsdSwkaSxmcyhlLCExKSl9ZnVuY3Rpb24gV3QobixlLHQscil7bGV0e2ltcGxpY2l0S2V5OnMsaW5GbG93Oml9PWUsbz10eXBlb2Ygbi52YWx1ZT09XFxcInN0cmluZ1xcXCI/bjpPYmplY3QuYXNzaWduKHt9LG4se3ZhbHVlOlN0cmluZyhuLnZhbHVlKX0pLHt0eXBlOmF9PW47YSE9PVAuUVVPVEVfRE9VQkxFJiYvW1xcXFx4MDAtXFxcXHgwOFxcXFx4MGItXFxcXHgxZlxcXFx4N2YtXFxcXHg5ZlxcXFx1e0Q4MDB9LVxcXFx1e0RGRkZ9XS91LnRlc3Qoby52YWx1ZSkmJihhPVAuUVVPVEVfRE9VQkxFKTtsZXQgdT1mPT57c3dpdGNoKGYpe2Nhc2UgUC5CTE9DS19GT0xERUQ6Y2FzZSBQLkJMT0NLX0xJVEVSQUw6cmV0dXJuIHN8fGk/Q24oby52YWx1ZSxlKTpjcyhvLGUsdCxyKTtjYXNlIFAuUVVPVEVfRE9VQkxFOnJldHVybiBncihvLnZhbHVlLGUpO2Nhc2UgUC5RVU9URV9TSU5HTEU6cmV0dXJuIFJpKG8udmFsdWUsZSk7Y2FzZSBQLlBMQUlOOnJldHVybiBHYyhvLGUsdCxyKTtkZWZhdWx0OnJldHVybiBudWxsfX0sbD11KGEpO2lmKGw9PT1udWxsKXtsZXR7ZGVmYXVsdEtleVR5cGU6ZixkZWZhdWx0U3RyaW5nVHlwZTpkfT1lLm9wdGlvbnMsbT1zJiZmfHxkO2lmKGw9dShtKSxsPT09bnVsbCl0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIGRlZmF1bHQgc3RyaW5nIHR5cGUgJHttfWApfXJldHVybiBsfWZ1bmN0aW9uIGhzKG4sZSl7bGV0IHQ9T2JqZWN0LmFzc2lnbih7YmxvY2tRdW90ZTohMCxjb21tZW50U3RyaW5nOkdhLGRlZmF1bHRLZXlUeXBlOm51bGwsZGVmYXVsdFN0cmluZ1R5cGU6XFxcIlBMQUlOXFxcIixkaXJlY3RpdmVzOm51bGwsZG91YmxlUXVvdGVkQXNKU09OOiExLGRvdWJsZVF1b3RlZE1pbk11bHRpTGluZUxlbmd0aDo0MCxmYWxzZVN0cjpcXFwiZmFsc2VcXFwiLGZsb3dDb2xsZWN0aW9uUGFkZGluZzohMCxpbmRlbnRTZXE6ITAsbGluZVdpZHRoOjgwLG1pbkNvbnRlbnRXaWR0aDoyMCxudWxsU3RyOlxcXCJudWxsXFxcIixzaW1wbGVLZXlzOiExLHNpbmdsZVF1b3RlOm51bGwsdHJ1ZVN0cjpcXFwidHJ1ZVxcXCIsdmVyaWZ5QWxpYXNPcmRlcjohMH0sbi5zY2hlbWEudG9TdHJpbmdPcHRpb25zLGUpLHI7c3dpdGNoKHQuY29sbGVjdGlvblN0eWxlKXtjYXNlXFxcImJsb2NrXFxcIjpyPSExO2JyZWFrO2Nhc2VcXFwiZmxvd1xcXCI6cj0hMDticmVhaztkZWZhdWx0OnI9bnVsbH1yZXR1cm57YW5jaG9yczpuZXcgU2V0LGRvYzpuLGZsb3dDb2xsZWN0aW9uUGFkZGluZzp0LmZsb3dDb2xsZWN0aW9uUGFkZGluZz9cXFwiIFxcXCI6XFxcIlxcXCIsaW5kZW50OlxcXCJcXFwiLGluZGVudFN0ZXA6dHlwZW9mIHQuaW5kZW50PT1cXFwibnVtYmVyXFxcIj9cXFwiIFxcXCIucmVwZWF0KHQuaW5kZW50KTpcXFwiICBcXFwiLGluRmxvdzpyLG9wdGlvbnM6dH19ZnVuY3Rpb24gWmMobixlKXt2YXIgcyxpLG8sYTtpZihlLnRhZyl7bGV0IHU9bi5maWx0ZXIobD0+bC50YWc9PT1lLnRhZyk7aWYodS5sZW5ndGg+MClyZXR1cm4ocz11LmZpbmQobD0+bC5mb3JtYXQ9PT1lLmZvcm1hdCkpIT1udWxsP3M6dVswXX1sZXQgdCxyO2lmKEsoZSkpe3I9ZS52YWx1ZTtsZXQgdT1uLmZpbHRlcihsPT57dmFyIGY7cmV0dXJuKGY9bC5pZGVudGlmeSk9PW51bGw/dm9pZCAwOmYuY2FsbChsLHIpfSk7aWYodS5sZW5ndGg+MSl7bGV0IGw9dS5maWx0ZXIoZj0+Zi50ZXN0KTtsLmxlbmd0aD4wJiYodT1sKX10PShpPXUuZmluZChsPT5sLmZvcm1hdD09PWUuZm9ybWF0KSkhPW51bGw/aTp1LmZpbmQobD0+IWwuZm9ybWF0KX1lbHNlIHI9ZSx0PW4uZmluZCh1PT51Lm5vZGVDbGFzcyYmciBpbnN0YW5jZW9mIHUubm9kZUNsYXNzKTtpZighdCl7bGV0IHU9KGE9KG89cj09bnVsbD92b2lkIDA6ci5jb25zdHJ1Y3Rvcik9PW51bGw/dm9pZCAwOm8ubmFtZSkhPW51bGw/YTp0eXBlb2Ygcjt0aHJvdyBuZXcgRXJyb3IoYFRhZyBub3QgcmVzb2x2ZWQgZm9yICR7dX0gdmFsdWVgKX1yZXR1cm4gdH1mdW5jdGlvbiBRYyhuLGUse2FuY2hvcnM6dCxkb2M6cn0pe2lmKCFyLmRpcmVjdGl2ZXMpcmV0dXJuXFxcIlxcXCI7bGV0IHM9W10saT0oSyhuKXx8WihuKSkmJm4uYW5jaG9yO2kmJm9zKGkpJiYodC5hZGQoaSkscy5wdXNoKGAmJHtpfWApKTtsZXQgbz1uLnRhZz9uLnRhZzplLmRlZmF1bHQ/bnVsbDplLnRhZztyZXR1cm4gbyYmcy5wdXNoKHIuZGlyZWN0aXZlcy50YWdTdHJpbmcobykpLHMuam9pbihcXFwiIFxcXCIpfWZ1bmN0aW9uIFR0KG4sZSx0LHIpe3ZhciB1LGw7aWYoSChuKSlyZXR1cm4gbi50b1N0cmluZyhlLHQscik7aWYoV2Uobikpe2lmKGUuZG9jLmRpcmVjdGl2ZXMpcmV0dXJuIG4udG9TdHJpbmcoZSk7aWYoKHU9ZS5yZXNvbHZlZEFsaWFzZXMpIT1udWxsJiZ1LmhhcyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKFxcXCJDYW5ub3Qgc3RyaW5naWZ5IGNpcmN1bGFyIHN0cnVjdHVyZSB3aXRob3V0IGFsaWFzIG5vZGVzXFxcIik7ZS5yZXNvbHZlZEFsaWFzZXM/ZS5yZXNvbHZlZEFsaWFzZXMuYWRkKG4pOmUucmVzb2x2ZWRBbGlhc2VzPW5ldyBTZXQoW25dKSxuPW4ucmVzb2x2ZShlLmRvYyl9bGV0IHMsaT1KKG4pP246ZS5kb2MuY3JlYXRlTm9kZShuLHtvblRhZ09iajpmPT5zPWZ9KTtzfHwocz1aYyhlLmRvYy5zY2hlbWEudGFncyxpKSk7bGV0IG89UWMoaSxzLGUpO28ubGVuZ3RoPjAmJihlLmluZGVudEF0U3RhcnQ9KChsPWUuaW5kZW50QXRTdGFydCkhPW51bGw/bDowKStvLmxlbmd0aCsxKTtsZXQgYT10eXBlb2Ygcy5zdHJpbmdpZnk9PVxcXCJmdW5jdGlvblxcXCI/cy5zdHJpbmdpZnkoaSxlLHQscik6SyhpKT9XdChpLGUsdCxyKTppLnRvU3RyaW5nKGUsdCxyKTtyZXR1cm4gbz9LKGkpfHxhWzBdPT09XFxcIntcXFwifHxhWzBdPT09XFxcIltcXFwiP2Ake299ICR7YX1gOmAke299XFxuJHtlLmluZGVudH0ke2F9YDphfWZ1bmN0aW9uIFFhKHtrZXk6bix2YWx1ZTplfSx0LHIscyl7dmFyIHgsQztsZXR7YWxsTnVsbFZhbHVlczppLGRvYzpvLGluZGVudDphLGluZGVudFN0ZXA6dSxvcHRpb25zOntjb21tZW50U3RyaW5nOmwsaW5kZW50U2VxOmYsc2ltcGxlS2V5czpkfX09dCxtPUoobikmJm4uY29tbWVudHx8bnVsbDtpZihkKXtpZihtKXRocm93IG5ldyBFcnJvcihcXFwiV2l0aCBzaW1wbGUga2V5cywga2V5IG5vZGVzIGNhbm5vdCBoYXZlIGNvbW1lbnRzXFxcIik7aWYoWihuKXx8IUoobikmJnR5cGVvZiBuPT1cXFwib2JqZWN0XFxcIil7bGV0IFY9XFxcIldpdGggc2ltcGxlIGtleXMsIGNvbGxlY3Rpb24gY2Fubm90IGJlIHVzZWQgYXMgYSBrZXkgdmFsdWVcXFwiO3Rocm93IG5ldyBFcnJvcihWKX19bGV0IGg9IWQmJighbnx8bSYmZT09bnVsbCYmIXQuaW5GbG93fHxaKG4pfHwoSyhuKT9uLnR5cGU9PT1QLkJMT0NLX0ZPTERFRHx8bi50eXBlPT09UC5CTE9DS19MSVRFUkFMOnR5cGVvZiBuPT1cXFwib2JqZWN0XFxcIikpO3Q9T2JqZWN0LmFzc2lnbih7fSx0LHthbGxOdWxsVmFsdWVzOiExLGltcGxpY2l0S2V5OiFoJiYoZHx8IWkpLGluZGVudDphK3V9KTtsZXQgYj0hMSxnPSExLEQ9VHQobix0LCgpPT5iPSEwLCgpPT5nPSEwKTtpZighaCYmIXQuaW5GbG93JiZELmxlbmd0aD4xMDI0KXtpZihkKXRocm93IG5ldyBFcnJvcihcXFwiV2l0aCBzaW1wbGUga2V5cywgc2luZ2xlIGxpbmUgc2NhbGFyIG11c3Qgbm90IHNwYW4gbW9yZSB0aGFuIDEwMjQgY2hhcmFjdGVyc1xcXCIpO2g9ITB9aWYodC5pbkZsb3cpe2lmKGl8fGU9PW51bGwpcmV0dXJuIGImJnImJnIoKSxEPT09XFxcIlxcXCI/XFxcIj9cXFwiOmg/YD8gJHtEfWA6RH1lbHNlIGlmKGkmJiFkfHxlPT1udWxsJiZoKXJldHVybiBEPWA/ICR7RH1gLG0mJiFiP0QrPW90KEQsdC5pbmRlbnQsbChtKSk6ZyYmcyYmcygpLEQ7YiYmKG09bnVsbCksaD8obSYmKEQrPW90KEQsdC5pbmRlbnQsbChtKSkpLEQ9YD8gJHtEfVxcbiR7YX06YCk6KEQ9YCR7RH06YCxtJiYoRCs9b3QoRCx0LmluZGVudCxsKG0pKSkpO2xldCBULEksTjtKKGUpPyhUPSEhZS5zcGFjZUJlZm9yZSxJPWUuY29tbWVudEJlZm9yZSxOPWUuY29tbWVudCk6KFQ9ITEsST1udWxsLE49bnVsbCxlJiZ0eXBlb2YgZT09XFxcIm9iamVjdFxcXCImJihlPW8uY3JlYXRlTm9kZShlKSkpLHQuaW1wbGljaXRLZXk9ITEsIWgmJiFtJiZLKGUpJiYodC5pbmRlbnRBdFN0YXJ0PUQubGVuZ3RoKzEpLGc9ITEsIWYmJnUubGVuZ3RoPj0yJiYhdC5pbkZsb3cmJiFoJiZKZShlKSYmIWUuZmxvdyYmIWUudGFnJiYhZS5hbmNob3ImJih0LmluZGVudD10LmluZGVudC5zdWJzdHJpbmcoMikpO2xldCB5PSExLHc9VHQoZSx0LCgpPT55PSEwLCgpPT5nPSEwKSx2PVxcXCIgXFxcIjtpZihtfHxUfHxJKXtpZih2PVQ/YFxcbmA6XFxcIlxcXCIsSSl7bGV0IFY9bChJKTt2Kz1gXFxuJHtQZShWLHQuaW5kZW50KX1gfXc9PT1cXFwiXFxcIiYmIXQuaW5GbG93P3Y9PT1gXFxuYCYmKHY9YFxcblxcbmApOnYrPWBcXG4ke3QuaW5kZW50fWB9ZWxzZSBpZighaCYmWihlKSl7bGV0IFY9d1swXSxqPXcuaW5kZXhPZihgXFxuYCksWT1qIT09LTEsZWU9KEM9KHg9dC5pbkZsb3cpIT1udWxsP3g6ZS5mbG93KSE9bnVsbD9DOmUuaXRlbXMubGVuZ3RoPT09MDtpZihZfHwhZWUpe2xldCBhZT0hMTtpZihZJiYoVj09PVxcXCImXFxcInx8Vj09PVxcXCIhXFxcIikpe2xldCBPPXcuaW5kZXhPZihcXFwiIFxcXCIpO1Y9PT1cXFwiJlxcXCImJk8hPT0tMSYmTzxqJiZ3W08rMV09PT1cXFwiIVxcXCImJihPPXcuaW5kZXhPZihcXFwiIFxcXCIsTysxKSksKE89PT0tMXx8ajxPKSYmKGFlPSEwKX1hZXx8KHY9YFxcbiR7dC5pbmRlbnR9YCl9fWVsc2Uodz09PVxcXCJcXFwifHx3WzBdPT09YFxcbmApJiYodj1cXFwiXFxcIik7cmV0dXJuIEQrPXYrdyx0LmluRmxvdz95JiZyJiZyKCk6TiYmIXk/RCs9b3QoRCx0LmluZGVudCxsKE4pKTpnJiZzJiZzKCksRH1mdW5jdGlvbiBtcyhuLGUpeyhuPT09XFxcImRlYnVnXFxcInx8bj09PVxcXCJ3YXJuXFxcIikmJih0eXBlb2YgcHJvY2VzcyE9XFxcInVuZGVmaW5lZFxcXCImJnByb2Nlc3MuZW1pdFdhcm5pbmc/cHJvY2Vzcy5lbWl0V2FybmluZyhlKTpjb25zb2xlLndhcm4oZSkpfXZhciBwcz1cXFwiPDxcXFwiLFllPXtpZGVudGlmeTpuPT5uPT09cHN8fHR5cGVvZiBuPT1cXFwic3ltYm9sXFxcIiYmbi5kZXNjcmlwdGlvbj09PXBzLGRlZmF1bHQ6XFxcImtleVxcXCIsdGFnOlxcXCJ0YWc6eWFtbC5vcmcsMjAwMjptZXJnZVxcXCIsdGVzdDovXjw8JC8scmVzb2x2ZTooKT0+T2JqZWN0LmFzc2lnbihuZXcgUChTeW1ib2wocHMpKSx7YWRkVG9KU01hcDpWaX0pLHN0cmluZ2lmeTooKT0+cHN9LFhhPShuLGUpPT4oWWUuaWRlbnRpZnkoZSl8fEsoZSkmJighZS50eXBlfHxlLnR5cGU9PT1QLlBMQUlOKSYmWWUuaWRlbnRpZnkoZS52YWx1ZSkpJiYobj09bnVsbD92b2lkIDA6bi5kb2Muc2NoZW1hLnRhZ3Muc29tZSh0PT50LnRhZz09PVllLnRhZyYmdC5kZWZhdWx0KSk7ZnVuY3Rpb24gVmkobixlLHQpe2lmKHQ9biYmV2UodCk/dC5yZXNvbHZlKG4uZG9jKTp0LEplKHQpKWZvcihsZXQgciBvZiB0Lml0ZW1zKXFpKG4sZSxyKTtlbHNlIGlmKEFycmF5LmlzQXJyYXkodCkpZm9yKGxldCByIG9mIHQpcWkobixlLHIpO2Vsc2UgcWkobixlLHQpfWZ1bmN0aW9uIHFpKG4sZSx0KXtsZXQgcj1uJiZXZSh0KT90LnJlc29sdmUobi5kb2MpOnQ7aWYoIUhlKHIpKXRocm93IG5ldyBFcnJvcihcXFwiTWVyZ2Ugc291cmNlcyBtdXN0IGJlIG1hcHMgb3IgbWFwIGFsaWFzZXNcXFwiKTtsZXQgcz1yLnRvSlNPTihudWxsLG4sTWFwKTtmb3IobGV0W2ksb11vZiBzKWUgaW5zdGFuY2VvZiBNYXA/ZS5oYXMoaSl8fGUuc2V0KGksbyk6ZSBpbnN0YW5jZW9mIFNldD9lLmFkZChpKTpPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxpKXx8T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsaSx7dmFsdWU6byx3cml0YWJsZTohMCxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pO3JldHVybiBlfWZ1bmN0aW9uIERzKG4sZSx7a2V5OnQsdmFsdWU6cn0pe2lmKEoodCkmJnQuYWRkVG9KU01hcCl0LmFkZFRvSlNNYXAobixlLHIpO2Vsc2UgaWYoWGEobix0KSlWaShuLGUscik7ZWxzZXtsZXQgcz1jZSh0LFxcXCJcXFwiLG4pO2lmKGUgaW5zdGFuY2VvZiBNYXApZS5zZXQocyxjZShyLHMsbikpO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIFNldCllLmFkZChzKTtlbHNle2xldCBpPVhjKHQscyxuKSxvPWNlKHIsaSxuKTtpIGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsaSx7dmFsdWU6byx3cml0YWJsZTohMCxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pOmVbaV09b319cmV0dXJuIGV9ZnVuY3Rpb24gWGMobixlLHQpe2lmKGU9PT1udWxsKXJldHVyblxcXCJcXFwiO2lmKHR5cGVvZiBlIT1cXFwib2JqZWN0XFxcIilyZXR1cm4gU3RyaW5nKGUpO2lmKEoobikmJih0IT1udWxsJiZ0LmRvYykpe2xldCByPWhzKHQuZG9jLHt9KTtyLmFuY2hvcnM9bmV3IFNldDtmb3IobGV0IGkgb2YgdC5hbmNob3JzLmtleXMoKSlyLmFuY2hvcnMuYWRkKGkuYW5jaG9yKTtyLmluRmxvdz0hMCxyLmluU3RyaW5naWZ5S2V5PSEwO2xldCBzPW4udG9TdHJpbmcocik7aWYoIXQubWFwS2V5V2FybmVkKXtsZXQgaT1KU09OLnN0cmluZ2lmeShzKTtpLmxlbmd0aD40MCYmKGk9aS5zdWJzdHJpbmcoMCwzNikrJy4uLlxcXCInKSxtcyh0LmRvYy5vcHRpb25zLmxvZ0xldmVsLGBLZXlzIHdpdGggY29sbGVjdGlvbiB2YWx1ZXMgd2lsbCBiZSBzdHJpbmdpZmllZCBkdWUgdG8gSlMgT2JqZWN0IHJlc3RyaWN0aW9uczogJHtpfS4gU2V0IG1hcEFzTWFwOiB0cnVlIHRvIHVzZSBvYmplY3Qga2V5cy5gKSx0Lm1hcEtleVdhcm5lZD0hMH1yZXR1cm4gc31yZXR1cm4gSlNPTi5zdHJpbmdpZnkoZSl9ZnVuY3Rpb24gdm4obixlLHQpe2xldCByPXd0KG4sdm9pZCAwLHQpLHM9d3QoZSx2b2lkIDAsdCk7cmV0dXJuIG5ldyBpZShyLHMpfXZhciBpZT1jbGFzcyBue2NvbnN0cnVjdG9yKGUsdD1udWxsKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcyxUZSx7dmFsdWU6X2l9KSx0aGlzLmtleT1lLHRoaXMudmFsdWU9dH1jbG9uZShlKXtsZXR7a2V5OnQsdmFsdWU6cn09dGhpcztyZXR1cm4gSih0KSYmKHQ9dC5jbG9uZShlKSksSihyKSYmKHI9ci5jbG9uZShlKSksbmV3IG4odCxyKX10b0pTT04oZSx0KXtsZXQgcj10IT1udWxsJiZ0Lm1hcEFzTWFwP25ldyBNYXA6e307cmV0dXJuIERzKHQscix0aGlzKX10b1N0cmluZyhlLHQscil7cmV0dXJuIGUhPW51bGwmJmUuZG9jP1FhKHRoaXMsZSx0LHIpOkpTT04uc3RyaW5naWZ5KHRoaXMpfX07ZnVuY3Rpb24gZ3MobixlLHQpe3ZhciBpO3JldHVybigoKGk9ZS5pbkZsb3cpIT1udWxsP2k6bi5mbG93KT90ZjplZikobixlLHQpfWZ1bmN0aW9uIGVmKHtjb21tZW50Om4saXRlbXM6ZX0sdCx7YmxvY2tJdGVtUHJlZml4OnIsZmxvd0NoYXJzOnMsaXRlbUluZGVudDppLG9uQ2hvbXBLZWVwOm8sb25Db21tZW50OmF9KXtsZXR7aW5kZW50OnUsb3B0aW9uczp7Y29tbWVudFN0cmluZzpsfX09dCxmPU9iamVjdC5hc3NpZ24oe30sdCx7aW5kZW50OmksdHlwZTpudWxsfSksZD0hMSxtPVtdO2ZvcihsZXQgYj0wO2I8ZS5sZW5ndGg7KytiKXtsZXQgZz1lW2JdLEQ9bnVsbDtpZihKKGcpKSFkJiZnLnNwYWNlQmVmb3JlJiZtLnB1c2goXFxcIlxcXCIpLHlzKHQsbSxnLmNvbW1lbnRCZWZvcmUsZCksZy5jb21tZW50JiYoRD1nLmNvbW1lbnQpO2Vsc2UgaWYoSChnKSl7bGV0IEk9SihnLmtleSk/Zy5rZXk6bnVsbDtJJiYoIWQmJkkuc3BhY2VCZWZvcmUmJm0ucHVzaChcXFwiXFxcIikseXModCxtLEkuY29tbWVudEJlZm9yZSxkKSl9ZD0hMTtsZXQgVD1UdChnLGYsKCk9PkQ9bnVsbCwoKT0+ZD0hMCk7RCYmKFQrPW90KFQsaSxsKEQpKSksZCYmRCYmKGQ9ITEpLG0ucHVzaChyK1QpfWxldCBoO2lmKG0ubGVuZ3RoPT09MCloPXMuc3RhcnQrcy5lbmQ7ZWxzZXtoPW1bMF07Zm9yKGxldCBiPTE7YjxtLmxlbmd0aDsrK2Ipe2xldCBnPW1bYl07aCs9Zz9gXFxuJHt1fSR7Z31gOmBcXG5gfX1yZXR1cm4gbj8oaCs9YFxcbmArUGUobChuKSx1KSxhJiZhKCkpOmQmJm8mJm8oKSxofWZ1bmN0aW9uIHRmKHtpdGVtczpufSxlLHtmbG93Q2hhcnM6dCxpdGVtSW5kZW50OnJ9KXtsZXR7aW5kZW50OnMsaW5kZW50U3RlcDppLGZsb3dDb2xsZWN0aW9uUGFkZGluZzpvLG9wdGlvbnM6e2NvbW1lbnRTdHJpbmc6YX19PWU7cis9aTtsZXQgdT1PYmplY3QuYXNzaWduKHt9LGUse2luZGVudDpyLGluRmxvdzohMCx0eXBlOm51bGx9KSxsPSExLGY9MCxkPVtdO2ZvcihsZXQgYj0wO2I8bi5sZW5ndGg7KytiKXtsZXQgZz1uW2JdLEQ9bnVsbDtpZihKKGcpKWcuc3BhY2VCZWZvcmUmJmQucHVzaChcXFwiXFxcIikseXMoZSxkLGcuY29tbWVudEJlZm9yZSwhMSksZy5jb21tZW50JiYoRD1nLmNvbW1lbnQpO2Vsc2UgaWYoSChnKSl7bGV0IEk9SihnLmtleSk/Zy5rZXk6bnVsbDtJJiYoSS5zcGFjZUJlZm9yZSYmZC5wdXNoKFxcXCJcXFwiKSx5cyhlLGQsSS5jb21tZW50QmVmb3JlLCExKSxJLmNvbW1lbnQmJihsPSEwKSk7bGV0IE49SihnLnZhbHVlKT9nLnZhbHVlOm51bGw7Tj8oTi5jb21tZW50JiYoRD1OLmNvbW1lbnQpLE4uY29tbWVudEJlZm9yZSYmKGw9ITApKTpnLnZhbHVlPT1udWxsJiYoSSE9bnVsbCYmSS5jb21tZW50KSYmKEQ9SS5jb21tZW50KX1EJiYobD0hMCk7bGV0IFQ9VHQoZyx1LCgpPT5EPW51bGwpO2I8bi5sZW5ndGgtMSYmKFQrPVxcXCIsXFxcIiksRCYmKFQrPW90KFQscixhKEQpKSksIWwmJihkLmxlbmd0aD5mfHxULmluY2x1ZGVzKGBcXG5gKSkmJihsPSEwKSxkLnB1c2goVCksZj1kLmxlbmd0aH1sZXR7c3RhcnQ6bSxlbmQ6aH09dDtpZihkLmxlbmd0aD09PTApcmV0dXJuIG0raDtpZighbCl7bGV0IGI9ZC5yZWR1Y2UoKGcsRCk9PmcrRC5sZW5ndGgrMiwyKTtsPWUub3B0aW9ucy5saW5lV2lkdGg+MCYmYj5lLm9wdGlvbnMubGluZVdpZHRofWlmKGwpe2xldCBiPW07Zm9yKGxldCBnIG9mIGQpYis9Zz9gXFxuJHtpfSR7c30ke2d9YDpgXFxuYDtyZXR1cm5gJHtifVxcbiR7c30ke2h9YH1lbHNlIHJldHVybmAke219JHtvfSR7ZC5qb2luKFxcXCIgXFxcIil9JHtvfSR7aH1gfWZ1bmN0aW9uIHlzKHtpbmRlbnQ6bixvcHRpb25zOntjb21tZW50U3RyaW5nOmV9fSx0LHIscyl7aWYociYmcyYmKHI9ci5yZXBsYWNlKC9eXFxcXG4rLyxcXFwiXFxcIikpLHIpe2xldCBpPVBlKGUociksbik7dC5wdXNoKGkudHJpbVN0YXJ0KCkpfX1mdW5jdGlvbiBJdChuLGUpe2xldCB0PUsoZSk/ZS52YWx1ZTplO2ZvcihsZXQgciBvZiBuKWlmKEgocikmJihyLmtleT09PWV8fHIua2V5PT09dHx8SyhyLmtleSkmJnIua2V5LnZhbHVlPT09dCkpcmV0dXJuIHJ9dmFyIG9lPWNsYXNzIGV4dGVuZHMgU257c3RhdGljIGdldCB0YWdOYW1lKCl7cmV0dXJuXFxcInRhZzp5YW1sLm9yZywyMDAyOm1hcFxcXCJ9Y29uc3RydWN0b3IoZSl7c3VwZXIoS2UsZSksdGhpcy5pdGVtcz1bXX1zdGF0aWMgZnJvbShlLHQscil7bGV0e2tlZXBVbmRlZmluZWQ6cyxyZXBsYWNlcjppfT1yLG89bmV3IHRoaXMoZSksYT0odSxsKT0+e2lmKHR5cGVvZiBpPT1cXFwiZnVuY3Rpb25cXFwiKWw9aS5jYWxsKHQsdSxsKTtlbHNlIGlmKEFycmF5LmlzQXJyYXkoaSkmJiFpLmluY2x1ZGVzKHUpKXJldHVybjsobCE9PXZvaWQgMHx8cykmJm8uaXRlbXMucHVzaCh2bih1LGwscikpfTtpZih0IGluc3RhbmNlb2YgTWFwKWZvcihsZXRbdSxsXW9mIHQpYSh1LGwpO2Vsc2UgaWYodCYmdHlwZW9mIHQ9PVxcXCJvYmplY3RcXFwiKWZvcihsZXQgdSBvZiBPYmplY3Qua2V5cyh0KSlhKHUsdFt1XSk7cmV0dXJuIHR5cGVvZiBlLnNvcnRNYXBFbnRyaWVzPT1cXFwiZnVuY3Rpb25cXFwiJiZvLml0ZW1zLnNvcnQoZS5zb3J0TWFwRW50cmllcyksb31hZGQoZSx0KXt2YXIgbztsZXQgcjtIKGUpP3I9ZTohZXx8dHlwZW9mIGUhPVxcXCJvYmplY3RcXFwifHwhKFxcXCJrZXlcXFwiaW4gZSk/cj1uZXcgaWUoZSxlPT1udWxsP3ZvaWQgMDplLnZhbHVlKTpyPW5ldyBpZShlLmtleSxlLnZhbHVlKTtsZXQgcz1JdCh0aGlzLml0ZW1zLHIua2V5KSxpPShvPXRoaXMuc2NoZW1hKT09bnVsbD92b2lkIDA6by5zb3J0TWFwRW50cmllcztpZihzKXtpZighdCl0aHJvdyBuZXcgRXJyb3IoYEtleSAke3Iua2V5fSBhbHJlYWR5IHNldGApO0socy52YWx1ZSkmJnVzKHIudmFsdWUpP3MudmFsdWUudmFsdWU9ci52YWx1ZTpzLnZhbHVlPXIudmFsdWV9ZWxzZSBpZihpKXtsZXQgYT10aGlzLml0ZW1zLmZpbmRJbmRleCh1PT5pKHIsdSk8MCk7YT09PS0xP3RoaXMuaXRlbXMucHVzaChyKTp0aGlzLml0ZW1zLnNwbGljZShhLDAscil9ZWxzZSB0aGlzLml0ZW1zLnB1c2gocil9ZGVsZXRlKGUpe2xldCB0PUl0KHRoaXMuaXRlbXMsZSk7cmV0dXJuIHQ/dGhpcy5pdGVtcy5zcGxpY2UodGhpcy5pdGVtcy5pbmRleE9mKHQpLDEpLmxlbmd0aD4wOiExfWdldChlLHQpe3ZhciBpO2xldCByPUl0KHRoaXMuaXRlbXMsZSkscz1yPT1udWxsP3ZvaWQgMDpyLnZhbHVlO3JldHVybihpPSF0JiZLKHMpP3MudmFsdWU6cykhPW51bGw/aTp2b2lkIDB9aGFzKGUpe3JldHVybiEhSXQodGhpcy5pdGVtcyxlKX1zZXQoZSx0KXt0aGlzLmFkZChuZXcgaWUoZSx0KSwhMCl9dG9KU09OKGUsdCxyKXtsZXQgcz1yP25ldyByOnQhPW51bGwmJnQubWFwQXNNYXA/bmV3IE1hcDp7fTt0IT1udWxsJiZ0Lm9uQ3JlYXRlJiZ0Lm9uQ3JlYXRlKHMpO2ZvcihsZXQgaSBvZiB0aGlzLml0ZW1zKURzKHQscyxpKTtyZXR1cm4gc310b1N0cmluZyhlLHQscil7aWYoIWUpcmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMpO2ZvcihsZXQgcyBvZiB0aGlzLml0ZW1zKWlmKCFIKHMpKXRocm93IG5ldyBFcnJvcihgTWFwIGl0ZW1zIG11c3QgYWxsIGJlIHBhaXJzOyBmb3VuZCAke0pTT04uc3RyaW5naWZ5KHMpfSBpbnN0ZWFkYCk7cmV0dXJuIWUuYWxsTnVsbFZhbHVlcyYmdGhpcy5oYXNBbGxOdWxsVmFsdWVzKCExKSYmKGU9T2JqZWN0LmFzc2lnbih7fSxlLHthbGxOdWxsVmFsdWVzOiEwfSkpLGdzKHRoaXMsZSx7YmxvY2tJdGVtUHJlZml4OlxcXCJcXFwiLGZsb3dDaGFyczp7c3RhcnQ6XFxcIntcXFwiLGVuZDpcXFwifVxcXCJ9LGl0ZW1JbmRlbnQ6ZS5pbmRlbnR8fFxcXCJcXFwiLG9uQ2hvbXBLZWVwOnIsb25Db21tZW50OnR9KX19O3ZhciBHZT17Y29sbGVjdGlvbjpcXFwibWFwXFxcIixkZWZhdWx0OiEwLG5vZGVDbGFzczpvZSx0YWc6XFxcInRhZzp5YW1sLm9yZywyMDAyOm1hcFxcXCIscmVzb2x2ZShuLGUpe3JldHVybiBIZShuKXx8ZShcXFwiRXhwZWN0ZWQgYSBtYXBwaW5nIGZvciB0aGlzIHRhZ1xcXCIpLG59LGNyZWF0ZU5vZGU6KG4sZSx0KT0+b2UuZnJvbShuLGUsdCl9O3ZhciBiZT1jbGFzcyBleHRlbmRzIFNue3N0YXRpYyBnZXQgdGFnTmFtZSgpe3JldHVyblxcXCJ0YWc6eWFtbC5vcmcsMjAwMjpzZXFcXFwifWNvbnN0cnVjdG9yKGUpe3N1cGVyKEZ0LGUpLHRoaXMuaXRlbXM9W119YWRkKGUpe3RoaXMuaXRlbXMucHVzaChlKX1kZWxldGUoZSl7bGV0IHQ9YnMoZSk7cmV0dXJuIHR5cGVvZiB0IT1cXFwibnVtYmVyXFxcIj8hMTp0aGlzLml0ZW1zLnNwbGljZSh0LDEpLmxlbmd0aD4wfWdldChlLHQpe2xldCByPWJzKGUpO2lmKHR5cGVvZiByIT1cXFwibnVtYmVyXFxcIilyZXR1cm47bGV0IHM9dGhpcy5pdGVtc1tyXTtyZXR1cm4hdCYmSyhzKT9zLnZhbHVlOnN9aGFzKGUpe2xldCB0PWJzKGUpO3JldHVybiB0eXBlb2YgdD09XFxcIm51bWJlclxcXCImJnQ8dGhpcy5pdGVtcy5sZW5ndGh9c2V0KGUsdCl7bGV0IHI9YnMoZSk7aWYodHlwZW9mIHIhPVxcXCJudW1iZXJcXFwiKXRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgYSB2YWxpZCBpbmRleCwgbm90ICR7ZX0uYCk7bGV0IHM9dGhpcy5pdGVtc1tyXTtLKHMpJiZ1cyh0KT9zLnZhbHVlPXQ6dGhpcy5pdGVtc1tyXT10fXRvSlNPTihlLHQpe2xldCByPVtdO3QhPW51bGwmJnQub25DcmVhdGUmJnQub25DcmVhdGUocik7bGV0IHM9MDtmb3IobGV0IGkgb2YgdGhpcy5pdGVtcylyLnB1c2goY2UoaSxTdHJpbmcocysrKSx0KSk7cmV0dXJuIHJ9dG9TdHJpbmcoZSx0LHIpe3JldHVybiBlP2dzKHRoaXMsZSx7YmxvY2tJdGVtUHJlZml4OlxcXCItIFxcXCIsZmxvd0NoYXJzOntzdGFydDpcXFwiW1xcXCIsZW5kOlxcXCJdXFxcIn0saXRlbUluZGVudDooZS5pbmRlbnR8fFxcXCJcXFwiKStcXFwiICBcXFwiLG9uQ2hvbXBLZWVwOnIsb25Db21tZW50OnR9KTpKU09OLnN0cmluZ2lmeSh0aGlzKX1zdGF0aWMgZnJvbShlLHQscil7bGV0e3JlcGxhY2VyOnN9PXIsaT1uZXcgdGhpcyhlKTtpZih0JiZTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KHQpKXtsZXQgbz0wO2ZvcihsZXQgYSBvZiB0KXtpZih0eXBlb2Ygcz09XFxcImZ1bmN0aW9uXFxcIil7bGV0IHU9dCBpbnN0YW5jZW9mIFNldD9hOlN0cmluZyhvKyspO2E9cy5jYWxsKHQsdSxhKX1pLml0ZW1zLnB1c2god3QoYSx2b2lkIDAscikpfX1yZXR1cm4gaX19O2Z1bmN0aW9uIGJzKG4pe2xldCBlPUsobik/bi52YWx1ZTpuO3JldHVybiBlJiZ0eXBlb2YgZT09XFxcInN0cmluZ1xcXCImJihlPU51bWJlcihlKSksdHlwZW9mIGU9PVxcXCJudW1iZXJcXFwiJiZOdW1iZXIuaXNJbnRlZ2VyKGUpJiZlPj0wP2U6bnVsbH12YXIgWmU9e2NvbGxlY3Rpb246XFxcInNlcVxcXCIsZGVmYXVsdDohMCxub2RlQ2xhc3M6YmUsdGFnOlxcXCJ0YWc6eWFtbC5vcmcsMjAwMjpzZXFcXFwiLHJlc29sdmUobixlKXtyZXR1cm4gSmUobil8fGUoXFxcIkV4cGVjdGVkIGEgc2VxdWVuY2UgZm9yIHRoaXMgdGFnXFxcIiksbn0sY3JlYXRlTm9kZToobixlLHQpPT5iZS5mcm9tKG4sZSx0KX07dmFyIEx0PXtpZGVudGlmeTpuPT50eXBlb2Ygbj09XFxcInN0cmluZ1xcXCIsZGVmYXVsdDohMCx0YWc6XFxcInRhZzp5YW1sLm9yZywyMDAyOnN0clxcXCIscmVzb2x2ZTpuPT5uLHN0cmluZ2lmeShuLGUsdCxyKXtyZXR1cm4gZT1PYmplY3QuYXNzaWduKHthY3R1YWxTdHJpbmc6ITB9LGUpLFd0KG4sZSx0LHIpfX07dmFyIEh0PXtpZGVudGlmeTpuPT5uPT1udWxsLGNyZWF0ZU5vZGU6KCk9Pm5ldyBQKG51bGwpLGRlZmF1bHQ6ITAsdGFnOlxcXCJ0YWc6eWFtbC5vcmcsMjAwMjpudWxsXFxcIix0ZXN0Oi9eKD86fnxbTm5ddWxsfE5VTEwpPyQvLHJlc29sdmU6KCk9Pm5ldyBQKG51bGwpLHN0cmluZ2lmeTooe3NvdXJjZTpufSxlKT0+dHlwZW9mIG49PVxcXCJzdHJpbmdcXFwiJiZIdC50ZXN0LnRlc3Qobik/bjplLm9wdGlvbnMubnVsbFN0cn07dmFyIGJyPXtpZGVudGlmeTpuPT50eXBlb2Ygbj09XFxcImJvb2xlYW5cXFwiLGRlZmF1bHQ6ITAsdGFnOlxcXCJ0YWc6eWFtbC5vcmcsMjAwMjpib29sXFxcIix0ZXN0Oi9eKD86W1R0XXJ1ZXxUUlVFfFtGZl1hbHNlfEZBTFNFKSQvLHJlc29sdmU6bj0+bmV3IFAoblswXT09PVxcXCJ0XFxcInx8blswXT09PVxcXCJUXFxcIiksc3RyaW5naWZ5KHtzb3VyY2U6bix2YWx1ZTplfSx0KXtpZihuJiZici50ZXN0LnRlc3Qobikpe2xldCByPW5bMF09PT1cXFwidFxcXCJ8fG5bMF09PT1cXFwiVFxcXCI7aWYoZT09PXIpcmV0dXJuIG59cmV0dXJuIGU/dC5vcHRpb25zLnRydWVTdHI6dC5vcHRpb25zLmZhbHNlU3RyfX07ZnVuY3Rpb24gRmUoe2Zvcm1hdDpuLG1pbkZyYWN0aW9uRGlnaXRzOmUsdGFnOnQsdmFsdWU6cn0pe2lmKHR5cGVvZiByPT1cXFwiYmlnaW50XFxcIilyZXR1cm4gU3RyaW5nKHIpO2xldCBzPXR5cGVvZiByPT1cXFwibnVtYmVyXFxcIj9yOk51bWJlcihyKTtpZighaXNGaW5pdGUocykpcmV0dXJuIGlzTmFOKHMpP1xcXCIubmFuXFxcIjpzPDA/XFxcIi0uaW5mXFxcIjpcXFwiLmluZlxcXCI7bGV0IGk9SlNPTi5zdHJpbmdpZnkocik7aWYoIW4mJmUmJighdHx8dD09PVxcXCJ0YWc6eWFtbC5vcmcsMjAwMjpmbG9hdFxcXCIpJiYvXlxcXFxkLy50ZXN0KGkpKXtsZXQgbz1pLmluZGV4T2YoXFxcIi5cXFwiKTtvPDAmJihvPWkubGVuZ3RoLGkrPVxcXCIuXFxcIik7bGV0IGE9ZS0oaS5sZW5ndGgtby0xKTtmb3IoO2EtLSA+MDspaSs9XFxcIjBcXFwifXJldHVybiBpfXZhciBGcz17aWRlbnRpZnk6bj0+dHlwZW9mIG49PVxcXCJudW1iZXJcXFwiLGRlZmF1bHQ6ITAsdGFnOlxcXCJ0YWc6eWFtbC5vcmcsMjAwMjpmbG9hdFxcXCIsdGVzdDovXig/OlstK10/XFxcXC4oPzppbmZ8SW5mfElORil8XFxcXC5uYW58XFxcXC5OYU58XFxcXC5OQU4pJC8scmVzb2x2ZTpuPT5uLnNsaWNlKC0zKS50b0xvd2VyQ2FzZSgpPT09XFxcIm5hblxcXCI/TmFOOm5bMF09PT1cXFwiLVxcXCI/TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZOk51bWJlci5QT1NJVElWRV9JTkZJTklUWSxzdHJpbmdpZnk6RmV9LEVzPXtpZGVudGlmeTpuPT50eXBlb2Ygbj09XFxcIm51bWJlclxcXCIsZGVmYXVsdDohMCx0YWc6XFxcInRhZzp5YW1sLm9yZywyMDAyOmZsb2F0XFxcIixmb3JtYXQ6XFxcIkVYUFxcXCIsdGVzdDovXlstK10/KD86XFxcXC5bMC05XSt8WzAtOV0rKD86XFxcXC5bMC05XSopPylbZUVdWy0rXT9bMC05XSskLyxyZXNvbHZlOm49PnBhcnNlRmxvYXQobiksc3RyaW5naWZ5KG4pe2xldCBlPU51bWJlcihuLnZhbHVlKTtyZXR1cm4gaXNGaW5pdGUoZSk/ZS50b0V4cG9uZW50aWFsKCk6RmUobil9fSx3cz17aWRlbnRpZnk6bj0+dHlwZW9mIG49PVxcXCJudW1iZXJcXFwiLGRlZmF1bHQ6ITAsdGFnOlxcXCJ0YWc6eWFtbC5vcmcsMjAwMjpmbG9hdFxcXCIsdGVzdDovXlstK10/KD86XFxcXC5bMC05XSt8WzAtOV0rXFxcXC5bMC05XSopJC8scmVzb2x2ZShuKXtsZXQgZT1uZXcgUChwYXJzZUZsb2F0KG4pKSx0PW4uaW5kZXhPZihcXFwiLlxcXCIpO3JldHVybiB0IT09LTEmJm5bbi5sZW5ndGgtMV09PT1cXFwiMFxcXCImJihlLm1pbkZyYWN0aW9uRGlnaXRzPW4ubGVuZ3RoLXQtMSksZX0sc3RyaW5naWZ5OkZlfTt2YXIgVHM9bj0+dHlwZW9mIG49PVxcXCJiaWdpbnRcXFwifHxOdW1iZXIuaXNJbnRlZ2VyKG4pLFVpPShuLGUsdCx7aW50QXNCaWdJbnQ6cn0pPT5yP0JpZ0ludChuKTpwYXJzZUludChuLnN1YnN0cmluZyhlKSx0KTtmdW5jdGlvbiBldShuLGUsdCl7bGV0e3ZhbHVlOnJ9PW47cmV0dXJuIFRzKHIpJiZyPj0wP3Qrci50b1N0cmluZyhlKTpGZShuKX12YXIgU3M9e2lkZW50aWZ5Om49PlRzKG4pJiZuPj0wLGRlZmF1bHQ6ITAsdGFnOlxcXCJ0YWc6eWFtbC5vcmcsMjAwMjppbnRcXFwiLGZvcm1hdDpcXFwiT0NUXFxcIix0ZXN0Oi9eMG9bMC03XSskLyxyZXNvbHZlOihuLGUsdCk9PlVpKG4sMiw4LHQpLHN0cmluZ2lmeTpuPT5ldShuLDgsXFxcIjBvXFxcIil9LGtzPXtpZGVudGlmeTpUcyxkZWZhdWx0OiEwLHRhZzpcXFwidGFnOnlhbWwub3JnLDIwMDI6aW50XFxcIix0ZXN0Oi9eWy0rXT9bMC05XSskLyxyZXNvbHZlOihuLGUsdCk9PlVpKG4sMCwxMCx0KSxzdHJpbmdpZnk6RmV9LENzPXtpZGVudGlmeTpuPT5UcyhuKSYmbj49MCxkZWZhdWx0OiEwLHRhZzpcXFwidGFnOnlhbWwub3JnLDIwMDI6aW50XFxcIixmb3JtYXQ6XFxcIkhFWFxcXCIsdGVzdDovXjB4WzAtOWEtZkEtRl0rJC8scmVzb2x2ZToobixlLHQpPT5VaShuLDIsMTYsdCksc3RyaW5naWZ5Om49PmV1KG4sMTYsXFxcIjB4XFxcIil9O3ZhciB0dT1bR2UsWmUsTHQsSHQsYnIsU3Msa3MsQ3MsRnMsRXMsd3NdO2Z1bmN0aW9uIG51KG4pe3JldHVybiB0eXBlb2Ygbj09XFxcImJpZ2ludFxcXCJ8fE51bWJlci5pc0ludGVnZXIobil9dmFyIHZzPSh7dmFsdWU6bn0pPT5KU09OLnN0cmluZ2lmeShuKSxuZj1be2lkZW50aWZ5Om49PnR5cGVvZiBuPT1cXFwic3RyaW5nXFxcIixkZWZhdWx0OiEwLHRhZzpcXFwidGFnOnlhbWwub3JnLDIwMDI6c3RyXFxcIixyZXNvbHZlOm49Pm4sc3RyaW5naWZ5OnZzfSx7aWRlbnRpZnk6bj0+bj09bnVsbCxjcmVhdGVOb2RlOigpPT5uZXcgUChudWxsKSxkZWZhdWx0OiEwLHRhZzpcXFwidGFnOnlhbWwub3JnLDIwMDI6bnVsbFxcXCIsdGVzdDovXm51bGwkLyxyZXNvbHZlOigpPT5udWxsLHN0cmluZ2lmeTp2c30se2lkZW50aWZ5Om49PnR5cGVvZiBuPT1cXFwiYm9vbGVhblxcXCIsZGVmYXVsdDohMCx0YWc6XFxcInRhZzp5YW1sLm9yZywyMDAyOmJvb2xcXFwiLHRlc3Q6L150cnVlfGZhbHNlJC8scmVzb2x2ZTpuPT5uPT09XFxcInRydWVcXFwiLHN0cmluZ2lmeTp2c30se2lkZW50aWZ5Om51LGRlZmF1bHQ6ITAsdGFnOlxcXCJ0YWc6eWFtbC5vcmcsMjAwMjppbnRcXFwiLHRlc3Q6L14tPyg/OjB8WzEtOV1bMC05XSopJC8scmVzb2x2ZToobixlLHtpbnRBc0JpZ0ludDp0fSk9PnQ/QmlnSW50KG4pOnBhcnNlSW50KG4sMTApLHN0cmluZ2lmeTooe3ZhbHVlOm59KT0+bnUobik/bi50b1N0cmluZygpOkpTT04uc3RyaW5naWZ5KG4pfSx7aWRlbnRpZnk6bj0+dHlwZW9mIG49PVxcXCJudW1iZXJcXFwiLGRlZmF1bHQ6ITAsdGFnOlxcXCJ0YWc6eWFtbC5vcmcsMjAwMjpmbG9hdFxcXCIsdGVzdDovXi0/KD86MHxbMS05XVswLTldKikoPzpcXFxcLlswLTldKik/KD86W2VFXVstK10/WzAtOV0rKT8kLyxyZXNvbHZlOm49PnBhcnNlRmxvYXQobiksc3RyaW5naWZ5OnZzfV0scmY9e2RlZmF1bHQ6ITAsdGFnOlxcXCJcXFwiLHRlc3Q6L14vLHJlc29sdmUobixlKXtyZXR1cm4gZShgVW5yZXNvbHZlZCBwbGFpbiBzY2FsYXIgJHtKU09OLnN0cmluZ2lmeShuKX1gKSxufX0scnU9W0dlLFplXS5jb25jYXQobmYscmYpO3ZhciBGcj17aWRlbnRpZnk6bj0+biBpbnN0YW5jZW9mIFVpbnQ4QXJyYXksZGVmYXVsdDohMSx0YWc6XFxcInRhZzp5YW1sLm9yZywyMDAyOmJpbmFyeVxcXCIscmVzb2x2ZShuLGUpe2lmKHR5cGVvZiBCdWZmZXI9PVxcXCJmdW5jdGlvblxcXCIpcmV0dXJuIEJ1ZmZlci5mcm9tKG4sXFxcImJhc2U2NFxcXCIpO2lmKHR5cGVvZiBhdG9iPT1cXFwiZnVuY3Rpb25cXFwiKXtsZXQgdD1hdG9iKG4ucmVwbGFjZSgvW1xcXFxuXFxcXHJdL2csXFxcIlxcXCIpKSxyPW5ldyBVaW50OEFycmF5KHQubGVuZ3RoKTtmb3IobGV0IHM9MDtzPHQubGVuZ3RoOysrcylyW3NdPXQuY2hhckNvZGVBdChzKTtyZXR1cm4gcn1lbHNlIHJldHVybiBlKFxcXCJUaGlzIGVudmlyb25tZW50IGRvZXMgbm90IHN1cHBvcnQgcmVhZGluZyBiaW5hcnkgdGFnczsgZWl0aGVyIEJ1ZmZlciBvciBhdG9iIGlzIHJlcXVpcmVkXFxcIiksbn0sc3RyaW5naWZ5KHtjb21tZW50Om4sdHlwZTplLHZhbHVlOnR9LHIscyxpKXtsZXQgbz10LGE7aWYodHlwZW9mIEJ1ZmZlcj09XFxcImZ1bmN0aW9uXFxcIilhPW8gaW5zdGFuY2VvZiBCdWZmZXI/by50b1N0cmluZyhcXFwiYmFzZTY0XFxcIik6QnVmZmVyLmZyb20oby5idWZmZXIpLnRvU3RyaW5nKFxcXCJiYXNlNjRcXFwiKTtlbHNlIGlmKHR5cGVvZiBidG9hPT1cXFwiZnVuY3Rpb25cXFwiKXtsZXQgdT1cXFwiXFxcIjtmb3IobGV0IGw9MDtsPG8ubGVuZ3RoOysrbCl1Kz1TdHJpbmcuZnJvbUNoYXJDb2RlKG9bbF0pO2E9YnRvYSh1KX1lbHNlIHRocm93IG5ldyBFcnJvcihcXFwiVGhpcyBlbnZpcm9ubWVudCBkb2VzIG5vdCBzdXBwb3J0IHdyaXRpbmcgYmluYXJ5IHRhZ3M7IGVpdGhlciBCdWZmZXIgb3IgYnRvYSBpcyByZXF1aXJlZFxcXCIpO2lmKGV8fChlPVAuQkxPQ0tfTElURVJBTCksZSE9PVAuUVVPVEVfRE9VQkxFKXtsZXQgdT1NYXRoLm1heChyLm9wdGlvbnMubGluZVdpZHRoLXIuaW5kZW50Lmxlbmd0aCxyLm9wdGlvbnMubWluQ29udGVudFdpZHRoKSxsPU1hdGguY2VpbChhLmxlbmd0aC91KSxmPW5ldyBBcnJheShsKTtmb3IobGV0IGQ9MCxtPTA7ZDxsOysrZCxtKz11KWZbZF09YS5zdWJzdHIobSx1KTthPWYuam9pbihlPT09UC5CTE9DS19MSVRFUkFMP2BcXG5gOlxcXCIgXFxcIil9cmV0dXJuIFd0KHtjb21tZW50Om4sdHlwZTplLHZhbHVlOmF9LHIscyxpKX19O2Z1bmN0aW9uIEtpKG4sZSl7dmFyIHQ7aWYoSmUobikpZm9yKGxldCByPTA7cjxuLml0ZW1zLmxlbmd0aDsrK3Ipe2xldCBzPW4uaXRlbXNbcl07aWYoIUgocykpe2lmKEhlKHMpKXtzLml0ZW1zLmxlbmd0aD4xJiZlKFxcXCJFYWNoIHBhaXIgbXVzdCBoYXZlIGl0cyBvd24gc2VxdWVuY2UgaW5kaWNhdG9yXFxcIik7bGV0IGk9cy5pdGVtc1swXXx8bmV3IGllKG5ldyBQKG51bGwpKTtpZihzLmNvbW1lbnRCZWZvcmUmJihpLmtleS5jb21tZW50QmVmb3JlPWkua2V5LmNvbW1lbnRCZWZvcmU/YCR7cy5jb21tZW50QmVmb3JlfVxcbiR7aS5rZXkuY29tbWVudEJlZm9yZX1gOnMuY29tbWVudEJlZm9yZSkscy5jb21tZW50KXtsZXQgbz0odD1pLnZhbHVlKSE9bnVsbD90Omkua2V5O28uY29tbWVudD1vLmNvbW1lbnQ/YCR7cy5jb21tZW50fVxcbiR7by5jb21tZW50fWA6cy5jb21tZW50fXM9aX1uLml0ZW1zW3JdPUgocyk/czpuZXcgaWUocyl9fWVsc2UgZShcXFwiRXhwZWN0ZWQgYSBzZXF1ZW5jZSBmb3IgdGhpcyB0YWdcXFwiKTtyZXR1cm4gbn1mdW5jdGlvbiBXaShuLGUsdCl7bGV0e3JlcGxhY2VyOnJ9PXQscz1uZXcgYmUobik7cy50YWc9XFxcInRhZzp5YW1sLm9yZywyMDAyOnBhaXJzXFxcIjtsZXQgaT0wO2lmKGUmJlN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QoZSkpZm9yKGxldCBvIG9mIGUpe3R5cGVvZiByPT1cXFwiZnVuY3Rpb25cXFwiJiYobz1yLmNhbGwoZSxTdHJpbmcoaSsrKSxvKSk7bGV0IGEsdTtpZihBcnJheS5pc0FycmF5KG8pKWlmKG8ubGVuZ3RoPT09MilhPW9bMF0sdT1vWzFdO2Vsc2UgdGhyb3cgbmV3IFR5cGVFcnJvcihgRXhwZWN0ZWQgW2tleSwgdmFsdWVdIHR1cGxlOiAke299YCk7ZWxzZSBpZihvJiZvIGluc3RhbmNlb2YgT2JqZWN0KXtsZXQgbD1PYmplY3Qua2V5cyhvKTtpZihsLmxlbmd0aD09PTEpYT1sWzBdLHU9b1thXTtlbHNlIHRocm93IG5ldyBUeXBlRXJyb3IoYEV4cGVjdGVkIHR1cGxlIHdpdGggb25lIGtleSwgbm90ICR7bC5sZW5ndGh9IGtleXNgKX1lbHNlIGE9bztzLml0ZW1zLnB1c2godm4oYSx1LHQpKX1yZXR1cm4gc312YXIgRXI9e2NvbGxlY3Rpb246XFxcInNlcVxcXCIsZGVmYXVsdDohMSx0YWc6XFxcInRhZzp5YW1sLm9yZywyMDAyOnBhaXJzXFxcIixyZXNvbHZlOktpLGNyZWF0ZU5vZGU6V2l9O3ZhciB4bj1jbGFzcyBuIGV4dGVuZHMgYmV7Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMuYWRkPW9lLnByb3RvdHlwZS5hZGQuYmluZCh0aGlzKSx0aGlzLmRlbGV0ZT1vZS5wcm90b3R5cGUuZGVsZXRlLmJpbmQodGhpcyksdGhpcy5nZXQ9b2UucHJvdG90eXBlLmdldC5iaW5kKHRoaXMpLHRoaXMuaGFzPW9lLnByb3RvdHlwZS5oYXMuYmluZCh0aGlzKSx0aGlzLnNldD1vZS5wcm90b3R5cGUuc2V0LmJpbmQodGhpcyksdGhpcy50YWc9bi50YWd9dG9KU09OKGUsdCl7aWYoIXQpcmV0dXJuIHN1cGVyLnRvSlNPTihlKTtsZXQgcj1uZXcgTWFwO3QhPW51bGwmJnQub25DcmVhdGUmJnQub25DcmVhdGUocik7Zm9yKGxldCBzIG9mIHRoaXMuaXRlbXMpe2xldCBpLG87aWYoSChzKT8oaT1jZShzLmtleSxcXFwiXFxcIix0KSxvPWNlKHMudmFsdWUsaSx0KSk6aT1jZShzLFxcXCJcXFwiLHQpLHIuaGFzKGkpKXRocm93IG5ldyBFcnJvcihcXFwiT3JkZXJlZCBtYXBzIG11c3Qgbm90IGluY2x1ZGUgZHVwbGljYXRlIGtleXNcXFwiKTtyLnNldChpLG8pfXJldHVybiByfXN0YXRpYyBmcm9tKGUsdCxyKXtsZXQgcz1XaShlLHQsciksaT1uZXcgdGhpcztyZXR1cm4gaS5pdGVtcz1zLml0ZW1zLGl9fTt4bi50YWc9XFxcInRhZzp5YW1sLm9yZywyMDAyOm9tYXBcXFwiO3ZhciB3cj17Y29sbGVjdGlvbjpcXFwic2VxXFxcIixpZGVudGlmeTpuPT5uIGluc3RhbmNlb2YgTWFwLG5vZGVDbGFzczp4bixkZWZhdWx0OiExLHRhZzpcXFwidGFnOnlhbWwub3JnLDIwMDI6b21hcFxcXCIscmVzb2x2ZShuLGUpe2xldCB0PUtpKG4sZSkscj1bXTtmb3IobGV0e2tleTpzfW9mIHQuaXRlbXMpSyhzKSYmKHIuaW5jbHVkZXMocy52YWx1ZSk/ZShgT3JkZXJlZCBtYXBzIG11c3Qgbm90IGluY2x1ZGUgZHVwbGljYXRlIGtleXM6ICR7cy52YWx1ZX1gKTpyLnB1c2gocy52YWx1ZSkpO3JldHVybiBPYmplY3QuYXNzaWduKG5ldyB4bix0KX0sY3JlYXRlTm9kZToobixlLHQpPT54bi5mcm9tKG4sZSx0KX07ZnVuY3Rpb24gc3Uoe3ZhbHVlOm4sc291cmNlOmV9LHQpe3JldHVybiBlJiYobj9IaTpKaSkudGVzdC50ZXN0KGUpP2U6bj90Lm9wdGlvbnMudHJ1ZVN0cjp0Lm9wdGlvbnMuZmFsc2VTdHJ9dmFyIEhpPXtpZGVudGlmeTpuPT5uPT09ITAsZGVmYXVsdDohMCx0YWc6XFxcInRhZzp5YW1sLm9yZywyMDAyOmJvb2xcXFwiLHRlc3Q6L14oPzpZfHl8W1l5XWVzfFlFU3xbVHRdcnVlfFRSVUV8W09vXW58T04pJC8scmVzb2x2ZTooKT0+bmV3IFAoITApLHN0cmluZ2lmeTpzdX0sSmk9e2lkZW50aWZ5Om49Pm49PT0hMSxkZWZhdWx0OiEwLHRhZzpcXFwidGFnOnlhbWwub3JnLDIwMDI6Ym9vbFxcXCIsdGVzdDovXig/Ok58bnxbTm5db3xOT3xbRmZdYWxzZXxGQUxTRXxbT29dZmZ8T0ZGKSQvLHJlc29sdmU6KCk9Pm5ldyBQKCExKSxzdHJpbmdpZnk6c3V9O3ZhciBpdT17aWRlbnRpZnk6bj0+dHlwZW9mIG49PVxcXCJudW1iZXJcXFwiLGRlZmF1bHQ6ITAsdGFnOlxcXCJ0YWc6eWFtbC5vcmcsMjAwMjpmbG9hdFxcXCIsdGVzdDovXig/OlstK10/XFxcXC4oPzppbmZ8SW5mfElORil8XFxcXC5uYW58XFxcXC5OYU58XFxcXC5OQU4pJC8scmVzb2x2ZTpuPT5uLnNsaWNlKC0zKS50b0xvd2VyQ2FzZSgpPT09XFxcIm5hblxcXCI/TmFOOm5bMF09PT1cXFwiLVxcXCI/TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZOk51bWJlci5QT1NJVElWRV9JTkZJTklUWSxzdHJpbmdpZnk6RmV9LG91PXtpZGVudGlmeTpuPT50eXBlb2Ygbj09XFxcIm51bWJlclxcXCIsZGVmYXVsdDohMCx0YWc6XFxcInRhZzp5YW1sLm9yZywyMDAyOmZsb2F0XFxcIixmb3JtYXQ6XFxcIkVYUFxcXCIsdGVzdDovXlstK10/KD86WzAtOV1bMC05X10qKT8oPzpcXFxcLlswLTlfXSopP1tlRV1bLStdP1swLTldKyQvLHJlc29sdmU6bj0+cGFyc2VGbG9hdChuLnJlcGxhY2UoL18vZyxcXFwiXFxcIikpLHN0cmluZ2lmeShuKXtsZXQgZT1OdW1iZXIobi52YWx1ZSk7cmV0dXJuIGlzRmluaXRlKGUpP2UudG9FeHBvbmVudGlhbCgpOkZlKG4pfX0sYXU9e2lkZW50aWZ5Om49PnR5cGVvZiBuPT1cXFwibnVtYmVyXFxcIixkZWZhdWx0OiEwLHRhZzpcXFwidGFnOnlhbWwub3JnLDIwMDI6ZmxvYXRcXFwiLHRlc3Q6L15bLStdPyg/OlswLTldWzAtOV9dKik/XFxcXC5bMC05X10qJC8scmVzb2x2ZShuKXtsZXQgZT1uZXcgUChwYXJzZUZsb2F0KG4ucmVwbGFjZSgvXy9nLFxcXCJcXFwiKSkpLHQ9bi5pbmRleE9mKFxcXCIuXFxcIik7aWYodCE9PS0xKXtsZXQgcj1uLnN1YnN0cmluZyh0KzEpLnJlcGxhY2UoL18vZyxcXFwiXFxcIik7cltyLmxlbmd0aC0xXT09PVxcXCIwXFxcIiYmKGUubWluRnJhY3Rpb25EaWdpdHM9ci5sZW5ndGgpfXJldHVybiBlfSxzdHJpbmdpZnk6RmV9O3ZhciBUcj1uPT50eXBlb2Ygbj09XFxcImJpZ2ludFxcXCJ8fE51bWJlci5pc0ludGVnZXIobik7ZnVuY3Rpb24geHMobixlLHQse2ludEFzQmlnSW50OnJ9KXtsZXQgcz1uWzBdO2lmKChzPT09XFxcIi1cXFwifHxzPT09XFxcIitcXFwiKSYmKGUrPTEpLG49bi5zdWJzdHJpbmcoZSkucmVwbGFjZSgvXy9nLFxcXCJcXFwiKSxyKXtzd2l0Y2godCl7Y2FzZSAyOm49YDBiJHtufWA7YnJlYWs7Y2FzZSA4Om49YDBvJHtufWA7YnJlYWs7Y2FzZSAxNjpuPWAweCR7bn1gO2JyZWFrfWxldCBvPUJpZ0ludChuKTtyZXR1cm4gcz09PVxcXCItXFxcIj9CaWdJbnQoLTEpKm86b31sZXQgaT1wYXJzZUludChuLHQpO3JldHVybiBzPT09XFxcIi1cXFwiPy0xKmk6aX1mdW5jdGlvbiB6aShuLGUsdCl7bGV0e3ZhbHVlOnJ9PW47aWYoVHIocikpe2xldCBzPXIudG9TdHJpbmcoZSk7cmV0dXJuIHI8MD9cXFwiLVxcXCIrdCtzLnN1YnN0cigxKTp0K3N9cmV0dXJuIEZlKG4pfXZhciB1dT17aWRlbnRpZnk6VHIsZGVmYXVsdDohMCx0YWc6XFxcInRhZzp5YW1sLm9yZywyMDAyOmludFxcXCIsZm9ybWF0OlxcXCJCSU5cXFwiLHRlc3Q6L15bLStdPzBiWzAtMV9dKyQvLHJlc29sdmU6KG4sZSx0KT0+eHMobiwyLDIsdCksc3RyaW5naWZ5Om49PnppKG4sMixcXFwiMGJcXFwiKX0sbHU9e2lkZW50aWZ5OlRyLGRlZmF1bHQ6ITAsdGFnOlxcXCJ0YWc6eWFtbC5vcmcsMjAwMjppbnRcXFwiLGZvcm1hdDpcXFwiT0NUXFxcIix0ZXN0Oi9eWy0rXT8wWzAtN19dKyQvLHJlc29sdmU6KG4sZSx0KT0+eHMobiwxLDgsdCksc3RyaW5naWZ5Om49PnppKG4sOCxcXFwiMFxcXCIpfSxjdT17aWRlbnRpZnk6VHIsZGVmYXVsdDohMCx0YWc6XFxcInRhZzp5YW1sLm9yZywyMDAyOmludFxcXCIsdGVzdDovXlstK10/WzAtOV1bMC05X10qJC8scmVzb2x2ZToobixlLHQpPT54cyhuLDAsMTAsdCksc3RyaW5naWZ5OkZlfSxmdT17aWRlbnRpZnk6VHIsZGVmYXVsdDohMCx0YWc6XFxcInRhZzp5YW1sLm9yZywyMDAyOmludFxcXCIsZm9ybWF0OlxcXCJIRVhcXFwiLHRlc3Q6L15bLStdPzB4WzAtOWEtZkEtRl9dKyQvLHJlc29sdmU6KG4sZSx0KT0+eHMobiwyLDE2LHQpLHN0cmluZ2lmeTpuPT56aShuLDE2LFxcXCIweFxcXCIpfTt2YXIgT249Y2xhc3MgbiBleHRlbmRzIG9le2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpLHRoaXMudGFnPW4udGFnfWFkZChlKXtsZXQgdDtIKGUpP3Q9ZTplJiZ0eXBlb2YgZT09XFxcIm9iamVjdFxcXCImJlxcXCJrZXlcXFwiaW4gZSYmXFxcInZhbHVlXFxcImluIGUmJmUudmFsdWU9PT1udWxsP3Q9bmV3IGllKGUua2V5LG51bGwpOnQ9bmV3IGllKGUsbnVsbCksSXQodGhpcy5pdGVtcyx0LmtleSl8fHRoaXMuaXRlbXMucHVzaCh0KX1nZXQoZSx0KXtsZXQgcj1JdCh0aGlzLml0ZW1zLGUpO3JldHVybiF0JiZIKHIpP0soci5rZXkpP3Iua2V5LnZhbHVlOnIua2V5OnJ9c2V0KGUsdCl7aWYodHlwZW9mIHQhPVxcXCJib29sZWFuXFxcIil0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIGJvb2xlYW4gdmFsdWUgZm9yIHNldChrZXksIHZhbHVlKSBpbiBhIFlBTUwgc2V0LCBub3QgJHt0eXBlb2YgdH1gKTtsZXQgcj1JdCh0aGlzLml0ZW1zLGUpO3ImJiF0P3RoaXMuaXRlbXMuc3BsaWNlKHRoaXMuaXRlbXMuaW5kZXhPZihyKSwxKTohciYmdCYmdGhpcy5pdGVtcy5wdXNoKG5ldyBpZShlKSl9dG9KU09OKGUsdCl7cmV0dXJuIHN1cGVyLnRvSlNPTihlLHQsU2V0KX10b1N0cmluZyhlLHQscil7aWYoIWUpcmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMpO2lmKHRoaXMuaGFzQWxsTnVsbFZhbHVlcyghMCkpcmV0dXJuIHN1cGVyLnRvU3RyaW5nKE9iamVjdC5hc3NpZ24oe30sZSx7YWxsTnVsbFZhbHVlczohMH0pLHQscik7dGhyb3cgbmV3IEVycm9yKFxcXCJTZXQgaXRlbXMgbXVzdCBhbGwgaGF2ZSBudWxsIHZhbHVlc1xcXCIpfXN0YXRpYyBmcm9tKGUsdCxyKXtsZXR7cmVwbGFjZXI6c309cixpPW5ldyB0aGlzKGUpO2lmKHQmJlN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QodCkpZm9yKGxldCBvIG9mIHQpdHlwZW9mIHM9PVxcXCJmdW5jdGlvblxcXCImJihvPXMuY2FsbCh0LG8sbykpLGkuaXRlbXMucHVzaCh2bihvLG51bGwscikpO3JldHVybiBpfX07T24udGFnPVxcXCJ0YWc6eWFtbC5vcmcsMjAwMjpzZXRcXFwiO3ZhciBTcj17Y29sbGVjdGlvbjpcXFwibWFwXFxcIixpZGVudGlmeTpuPT5uIGluc3RhbmNlb2YgU2V0LG5vZGVDbGFzczpPbixkZWZhdWx0OiExLHRhZzpcXFwidGFnOnlhbWwub3JnLDIwMDI6c2V0XFxcIixjcmVhdGVOb2RlOihuLGUsdCk9Pk9uLmZyb20obixlLHQpLHJlc29sdmUobixlKXtpZihIZShuKSl7aWYobi5oYXNBbGxOdWxsVmFsdWVzKCEwKSlyZXR1cm4gT2JqZWN0LmFzc2lnbihuZXcgT24sbik7ZShcXFwiU2V0IGl0ZW1zIG11c3QgYWxsIGhhdmUgbnVsbCB2YWx1ZXNcXFwiKX1lbHNlIGUoXFxcIkV4cGVjdGVkIGEgbWFwcGluZyBmb3IgdGhpcyB0YWdcXFwiKTtyZXR1cm4gbn19O2Z1bmN0aW9uIFlpKG4sZSl7bGV0IHQ9blswXSxyPXQ9PT1cXFwiLVxcXCJ8fHQ9PT1cXFwiK1xcXCI/bi5zdWJzdHJpbmcoMSk6bixzPW89PmU/QmlnSW50KG8pOk51bWJlcihvKSxpPXIucmVwbGFjZSgvXy9nLFxcXCJcXFwiKS5zcGxpdChcXFwiOlxcXCIpLnJlZHVjZSgobyxhKT0+bypzKDYwKStzKGEpLHMoMCkpO3JldHVybiB0PT09XFxcIi1cXFwiP3MoLTEpKmk6aX1mdW5jdGlvbiBkdShuKXtsZXR7dmFsdWU6ZX09bix0PW89Pm87aWYodHlwZW9mIGU9PVxcXCJiaWdpbnRcXFwiKXQ9bz0+QmlnSW50KG8pO2Vsc2UgaWYoaXNOYU4oZSl8fCFpc0Zpbml0ZShlKSlyZXR1cm4gRmUobik7bGV0IHI9XFxcIlxcXCI7ZTwwJiYocj1cXFwiLVxcXCIsZSo9dCgtMSkpO2xldCBzPXQoNjApLGk9W2Ulc107cmV0dXJuIGU8NjA/aS51bnNoaWZ0KDApOihlPShlLWlbMF0pL3MsaS51bnNoaWZ0KGUlcyksZT49NjAmJihlPShlLWlbMF0pL3MsaS51bnNoaWZ0KGUpKSkscitpLm1hcChvPT5TdHJpbmcobykucGFkU3RhcnQoMixcXFwiMFxcXCIpKS5qb2luKFxcXCI6XFxcIikucmVwbGFjZSgvMDAwMDAwXFxcXGQqJC8sXFxcIlxcXCIpfXZhciBPcz17aWRlbnRpZnk6bj0+dHlwZW9mIG49PVxcXCJiaWdpbnRcXFwifHxOdW1iZXIuaXNJbnRlZ2VyKG4pLGRlZmF1bHQ6ITAsdGFnOlxcXCJ0YWc6eWFtbC5vcmcsMjAwMjppbnRcXFwiLGZvcm1hdDpcXFwiVElNRVxcXCIsdGVzdDovXlstK10/WzAtOV1bMC05X10qKD86OlswLTVdP1swLTldKSskLyxyZXNvbHZlOihuLGUse2ludEFzQmlnSW50OnR9KT0+WWkobix0KSxzdHJpbmdpZnk6ZHV9LElzPXtpZGVudGlmeTpuPT50eXBlb2Ygbj09XFxcIm51bWJlclxcXCIsZGVmYXVsdDohMCx0YWc6XFxcInRhZzp5YW1sLm9yZywyMDAyOmZsb2F0XFxcIixmb3JtYXQ6XFxcIlRJTUVcXFwiLHRlc3Q6L15bLStdP1swLTldWzAtOV9dKig/OjpbMC01XT9bMC05XSkrXFxcXC5bMC05X10qJC8scmVzb2x2ZTpuPT5ZaShuLCExKSxzdHJpbmdpZnk6ZHV9LEluPXtpZGVudGlmeTpuPT5uIGluc3RhbmNlb2YgRGF0ZSxkZWZhdWx0OiEwLHRhZzpcXFwidGFnOnlhbWwub3JnLDIwMDI6dGltZXN0YW1wXFxcIix0ZXN0OlJlZ0V4cChcXFwiXihbMC05XXs0fSktKFswLTldezEsMn0pLShbMC05XXsxLDJ9KSg/Oig/OnR8VHxbIFxcXFxcXFxcdF0rKShbMC05XXsxLDJ9KTooWzAtOV17MSwyfSk6KFswLTldezEsMn0oXFxcXFxcXFwuWzAtOV0rKT8pKD86WyBcXFxcXFxcXHRdKihafFstK11bMDEyXT9bMC05XSg/OjpbMC05XXsyfSk/KSk/KT8kXFxcIikscmVzb2x2ZShuKXtsZXQgZT1uLm1hdGNoKEluLnRlc3QpO2lmKCFlKXRocm93IG5ldyBFcnJvcihcXFwiISF0aW1lc3RhbXAgZXhwZWN0cyBhIGRhdGUsIHN0YXJ0aW5nIHdpdGggeXl5eS1tbS1kZFxcXCIpO2xldFssdCxyLHMsaSxvLGFdPWUubWFwKE51bWJlciksdT1lWzddP051bWJlcigoZVs3XStcXFwiMDBcXFwiKS5zdWJzdHIoMSwzKSk6MCxsPURhdGUuVVRDKHQsci0xLHMsaXx8MCxvfHwwLGF8fDAsdSksZj1lWzhdO2lmKGYmJmYhPT1cXFwiWlxcXCIpe2xldCBkPVlpKGYsITEpO01hdGguYWJzKGQpPDMwJiYoZCo9NjApLGwtPTZlNCpkfXJldHVybiBuZXcgRGF0ZShsKX0sc3RyaW5naWZ5Oih7dmFsdWU6bn0pPT5uLnRvSVNPU3RyaW5nKCkucmVwbGFjZSgvKChUMDA6MDApPzowMCk/XFxcXC4wMDBaJC8sXFxcIlxcXCIpfTt2YXIgR2k9W0dlLFplLEx0LEh0LEhpLEppLHV1LGx1LGN1LGZ1LGl1LG91LGF1LEZyLFllLHdyLEVyLFNyLE9zLElzLEluXTt2YXIgaHU9bmV3IE1hcChbW1xcXCJjb3JlXFxcIix0dV0sW1xcXCJmYWlsc2FmZVxcXCIsW0dlLFplLEx0XV0sW1xcXCJqc29uXFxcIixydV0sW1xcXCJ5YW1sMTFcXFwiLEdpXSxbXFxcInlhbWwtMS4xXFxcIixHaV1dKSxtdT17YmluYXJ5OkZyLGJvb2w6YnIsZmxvYXQ6d3MsZmxvYXRFeHA6RXMsZmxvYXROYU46RnMsZmxvYXRUaW1lOklzLGludDprcyxpbnRIZXg6Q3MsaW50T2N0OlNzLGludFRpbWU6T3MsbWFwOkdlLG1lcmdlOlllLG51bGw6SHQsb21hcDp3cixwYWlyczpFcixzZXE6WmUsc2V0OlNyLHRpbWVzdGFtcDpJbn0scHU9e1xcXCJ0YWc6eWFtbC5vcmcsMjAwMjpiaW5hcnlcXFwiOkZyLFxcXCJ0YWc6eWFtbC5vcmcsMjAwMjptZXJnZVxcXCI6WWUsXFxcInRhZzp5YW1sLm9yZywyMDAyOm9tYXBcXFwiOndyLFxcXCJ0YWc6eWFtbC5vcmcsMjAwMjpwYWlyc1xcXCI6RXIsXFxcInRhZzp5YW1sLm9yZywyMDAyOnNldFxcXCI6U3IsXFxcInRhZzp5YW1sLm9yZywyMDAyOnRpbWVzdGFtcFxcXCI6SW59O2Z1bmN0aW9uIExzKG4sZSx0KXtsZXQgcj1odS5nZXQoZSk7aWYociYmIW4pcmV0dXJuIHQmJiFyLmluY2x1ZGVzKFllKT9yLmNvbmNhdChZZSk6ci5zbGljZSgpO2xldCBzPXI7aWYoIXMpaWYoQXJyYXkuaXNBcnJheShuKSlzPVtdO2Vsc2V7bGV0IGk9QXJyYXkuZnJvbShodS5rZXlzKCkpLmZpbHRlcihvPT5vIT09XFxcInlhbWwxMVxcXCIpLm1hcChvPT5KU09OLnN0cmluZ2lmeShvKSkuam9pbihcXFwiLCBcXFwiKTt0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gc2NoZW1hIFxcXCIke2V9XFxcIjsgdXNlIG9uZSBvZiAke2l9IG9yIGRlZmluZSBjdXN0b21UYWdzIGFycmF5YCl9aWYoQXJyYXkuaXNBcnJheShuKSlmb3IobGV0IGkgb2YgbilzPXMuY29uY2F0KGkpO2Vsc2UgdHlwZW9mIG49PVxcXCJmdW5jdGlvblxcXCImJihzPW4ocy5zbGljZSgpKSk7cmV0dXJuIHQmJihzPXMuY29uY2F0KFllKSkscy5yZWR1Y2UoKGksbyk9PntsZXQgYT10eXBlb2Ygbz09XFxcInN0cmluZ1xcXCI/bXVbb106bztpZighYSl7bGV0IHU9SlNPTi5zdHJpbmdpZnkobyksbD1PYmplY3Qua2V5cyhtdSkubWFwKGY9PkpTT04uc3RyaW5naWZ5KGYpKS5qb2luKFxcXCIsIFxcXCIpO3Rocm93IG5ldyBFcnJvcihgVW5rbm93biBjdXN0b20gdGFnICR7dX07IHVzZSBvbmUgb2YgJHtsfWApfXJldHVybiBpLmluY2x1ZGVzKGEpfHxpLnB1c2goYSksaX0sW10pfXZhciBzZj0obixlKT0+bi5rZXk8ZS5rZXk/LTE6bi5rZXk+ZS5rZXk/MTowLGtyPWNsYXNzIG57Y29uc3RydWN0b3Ioe2NvbXBhdDplLGN1c3RvbVRhZ3M6dCxtZXJnZTpyLHJlc29sdmVLbm93blRhZ3M6cyxzY2hlbWE6aSxzb3J0TWFwRW50cmllczpvLHRvU3RyaW5nRGVmYXVsdHM6YX0pe3RoaXMuY29tcGF0PUFycmF5LmlzQXJyYXkoZSk/THMoZSxcXFwiY29tcGF0XFxcIik6ZT9McyhudWxsLGUpOm51bGwsdGhpcy5uYW1lPXR5cGVvZiBpPT1cXFwic3RyaW5nXFxcIiYmaXx8XFxcImNvcmVcXFwiLHRoaXMua25vd25UYWdzPXM/cHU6e30sdGhpcy50YWdzPUxzKHQsdGhpcy5uYW1lLHIpLHRoaXMudG9TdHJpbmdPcHRpb25zPWEhPW51bGw/YTpudWxsLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLEtlLHt2YWx1ZTpHZX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLEllLHt2YWx1ZTpMdH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLEZ0LHt2YWx1ZTpaZX0pLHRoaXMuc29ydE1hcEVudHJpZXM9dHlwZW9mIG89PVxcXCJmdW5jdGlvblxcXCI/bzpvPT09ITA/c2Y6bnVsbH1jbG9uZSgpe2xldCBlPU9iamVjdC5jcmVhdGUobi5wcm90b3R5cGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnModGhpcykpO3JldHVybiBlLnRhZ3M9dGhpcy50YWdzLnNsaWNlKCksZX19O2Z1bmN0aW9uIER1KG4sZSl7dmFyIHU7bGV0IHQ9W10scj1lLmRpcmVjdGl2ZXM9PT0hMDtpZihlLmRpcmVjdGl2ZXMhPT0hMSYmbi5kaXJlY3RpdmVzKXtsZXQgbD1uLmRpcmVjdGl2ZXMudG9TdHJpbmcobik7bD8odC5wdXNoKGwpLHI9ITApOm4uZGlyZWN0aXZlcy5kb2NTdGFydCYmKHI9ITApfXImJnQucHVzaChcXFwiLS0tXFxcIik7bGV0IHM9aHMobixlKSx7Y29tbWVudFN0cmluZzppfT1zLm9wdGlvbnM7aWYobi5jb21tZW50QmVmb3JlKXt0Lmxlbmd0aCE9PTEmJnQudW5zaGlmdChcXFwiXFxcIik7bGV0IGw9aShuLmNvbW1lbnRCZWZvcmUpO3QudW5zaGlmdChQZShsLFxcXCJcXFwiKSl9bGV0IG89ITEsYT1udWxsO2lmKG4uY29udGVudHMpe2lmKEoobi5jb250ZW50cykpe2lmKG4uY29udGVudHMuc3BhY2VCZWZvcmUmJnImJnQucHVzaChcXFwiXFxcIiksbi5jb250ZW50cy5jb21tZW50QmVmb3JlKXtsZXQgZD1pKG4uY29udGVudHMuY29tbWVudEJlZm9yZSk7dC5wdXNoKFBlKGQsXFxcIlxcXCIpKX1zLmZvcmNlQmxvY2tJbmRlbnQ9ISFuLmNvbW1lbnQsYT1uLmNvbnRlbnRzLmNvbW1lbnR9bGV0IGw9YT92b2lkIDA6KCk9Pm89ITAsZj1UdChuLmNvbnRlbnRzLHMsKCk9PmE9bnVsbCxsKTthJiYoZis9b3QoZixcXFwiXFxcIixpKGEpKSksKGZbMF09PT1cXFwifFxcXCJ8fGZbMF09PT1cXFwiPlxcXCIpJiZ0W3QubGVuZ3RoLTFdPT09XFxcIi0tLVxcXCI/dFt0Lmxlbmd0aC0xXT1gLS0tICR7Zn1gOnQucHVzaChmKX1lbHNlIHQucHVzaChUdChuLmNvbnRlbnRzLHMpKTtpZigodT1uLmRpcmVjdGl2ZXMpIT1udWxsJiZ1LmRvY0VuZClpZihuLmNvbW1lbnQpe2xldCBsPWkobi5jb21tZW50KTtsLmluY2x1ZGVzKGBcXG5gKT8odC5wdXNoKFxcXCIuLi5cXFwiKSx0LnB1c2goUGUobCxcXFwiXFxcIikpKTp0LnB1c2goYC4uLiAke2x9YCl9ZWxzZSB0LnB1c2goXFxcIi4uLlxcXCIpO2Vsc2V7bGV0IGw9bi5jb21tZW50O2wmJm8mJihsPWwucmVwbGFjZSgvXlxcXFxuKy8sXFxcIlxcXCIpKSxsJiYoKCFvfHxhKSYmdFt0Lmxlbmd0aC0xXSE9PVxcXCJcXFwiJiZ0LnB1c2goXFxcIlxcXCIpLHQucHVzaChQZShpKGwpLFxcXCJcXFwiKSkpfXJldHVybiB0LmpvaW4oYFxcbmApK2BcXG5gfXZhciBOdD1jbGFzcyBue2NvbnN0cnVjdG9yKGUsdCxyKXt0aGlzLmNvbW1lbnRCZWZvcmU9bnVsbCx0aGlzLmNvbW1lbnQ9bnVsbCx0aGlzLmVycm9ycz1bXSx0aGlzLndhcm5pbmdzPVtdLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLFRlLHt2YWx1ZTpzc30pO2xldCBzPW51bGw7dHlwZW9mIHQ9PVxcXCJmdW5jdGlvblxcXCJ8fEFycmF5LmlzQXJyYXkodCk/cz10OnI9PT12b2lkIDAmJnQmJihyPXQsdD12b2lkIDApO2xldCBpPU9iamVjdC5hc3NpZ24oe2ludEFzQmlnSW50OiExLGtlZXBTb3VyY2VUb2tlbnM6ITEsbG9nTGV2ZWw6XFxcIndhcm5cXFwiLHByZXR0eUVycm9yczohMCxzdHJpY3Q6ITAsc3RyaW5nS2V5czohMSx1bmlxdWVLZXlzOiEwLHZlcnNpb246XFxcIjEuMlxcXCJ9LHIpO3RoaXMub3B0aW9ucz1pO2xldHt2ZXJzaW9uOm99PWk7ciE9bnVsbCYmci5fZGlyZWN0aXZlcz8odGhpcy5kaXJlY3RpdmVzPXIuX2RpcmVjdGl2ZXMuYXREb2N1bWVudCgpLHRoaXMuZGlyZWN0aXZlcy55YW1sLmV4cGxpY2l0JiYobz10aGlzLmRpcmVjdGl2ZXMueWFtbC52ZXJzaW9uKSk6dGhpcy5kaXJlY3RpdmVzPW5ldyBpdCh7dmVyc2lvbjpvfSksdGhpcy5zZXRTY2hlbWEobyxyKSx0aGlzLmNvbnRlbnRzPWU9PT12b2lkIDA/bnVsbDp0aGlzLmNyZWF0ZU5vZGUoZSxzLHIpfWNsb25lKCl7bGV0IGU9T2JqZWN0LmNyZWF0ZShuLnByb3RvdHlwZSx7W1RlXTp7dmFsdWU6c3N9fSk7cmV0dXJuIGUuY29tbWVudEJlZm9yZT10aGlzLmNvbW1lbnRCZWZvcmUsZS5jb21tZW50PXRoaXMuY29tbWVudCxlLmVycm9ycz10aGlzLmVycm9ycy5zbGljZSgpLGUud2FybmluZ3M9dGhpcy53YXJuaW5ncy5zbGljZSgpLGUub3B0aW9ucz1PYmplY3QuYXNzaWduKHt9LHRoaXMub3B0aW9ucyksdGhpcy5kaXJlY3RpdmVzJiYoZS5kaXJlY3RpdmVzPXRoaXMuZGlyZWN0aXZlcy5jbG9uZSgpKSxlLnNjaGVtYT10aGlzLnNjaGVtYS5jbG9uZSgpLGUuY29udGVudHM9Sih0aGlzLmNvbnRlbnRzKT90aGlzLmNvbnRlbnRzLmNsb25lKGUuc2NoZW1hKTp0aGlzLmNvbnRlbnRzLHRoaXMucmFuZ2UmJihlLnJhbmdlPXRoaXMucmFuZ2Uuc2xpY2UoKSksZX1hZGQoZSl7TG4odGhpcy5jb250ZW50cykmJnRoaXMuY29udGVudHMuYWRkKGUpfWFkZEluKGUsdCl7TG4odGhpcy5jb250ZW50cykmJnRoaXMuY29udGVudHMuYWRkSW4oZSx0KX1jcmVhdGVBbGlhcyhlLHQpe2lmKCFlLmFuY2hvcil7bGV0IHI9QmkodGhpcyk7ZS5hbmNob3I9IXR8fHIuaGFzKHQpP1BpKHR8fFxcXCJhXFxcIixyKTp0fXJldHVybiBuZXcgRXQoZS5hbmNob3IpfWNyZWF0ZU5vZGUoZSx0LHIpe2xldCBzO2lmKHR5cGVvZiB0PT1cXFwiZnVuY3Rpb25cXFwiKWU9dC5jYWxsKHtcXFwiXFxcIjplfSxcXFwiXFxcIixlKSxzPXQ7ZWxzZSBpZihBcnJheS5pc0FycmF5KHQpKXtsZXQgRD1JPT50eXBlb2YgST09XFxcIm51bWJlclxcXCJ8fEkgaW5zdGFuY2VvZiBTdHJpbmd8fEkgaW5zdGFuY2VvZiBOdW1iZXIsVD10LmZpbHRlcihEKS5tYXAoU3RyaW5nKTtULmxlbmd0aD4wJiYodD10LmNvbmNhdChUKSkscz10fWVsc2Ugcj09PXZvaWQgMCYmdCYmKHI9dCx0PXZvaWQgMCk7bGV0e2FsaWFzRHVwbGljYXRlT2JqZWN0czppLGFuY2hvclByZWZpeDpvLGZsb3c6YSxrZWVwVW5kZWZpbmVkOnUsb25UYWdPYmo6bCx0YWc6Zn09ciE9bnVsbD9yOnt9LHtvbkFuY2hvcjpkLHNldEFuY2hvcnM6bSxzb3VyY2VPYmplY3RzOmh9PVlhKHRoaXMsb3x8XFxcImFcXFwiKSxiPXthbGlhc0R1cGxpY2F0ZU9iamVjdHM6aSE9bnVsbD9pOiEwLGtlZXBVbmRlZmluZWQ6dSE9bnVsbD91OiExLG9uQW5jaG9yOmQsb25UYWdPYmo6bCxyZXBsYWNlcjpzLHNjaGVtYTp0aGlzLnNjaGVtYSxzb3VyY2VPYmplY3RzOmh9LGc9d3QoZSxmLGIpO3JldHVybiBhJiZaKGcpJiYoZy5mbG93PSEwKSxtKCksZ31jcmVhdGVQYWlyKGUsdCxyPXt9KXtsZXQgcz10aGlzLmNyZWF0ZU5vZGUoZSxudWxsLHIpLGk9dGhpcy5jcmVhdGVOb2RlKHQsbnVsbCxyKTtyZXR1cm4gbmV3IGllKHMsaSl9ZGVsZXRlKGUpe3JldHVybiBMbih0aGlzLmNvbnRlbnRzKT90aGlzLmNvbnRlbnRzLmRlbGV0ZShlKTohMX1kZWxldGVJbihlKXtyZXR1cm4ga24oZSk/dGhpcy5jb250ZW50cz09bnVsbD8hMToodGhpcy5jb250ZW50cz1udWxsLCEwKTpMbih0aGlzLmNvbnRlbnRzKT90aGlzLmNvbnRlbnRzLmRlbGV0ZUluKGUpOiExfWdldChlLHQpe3JldHVybiBaKHRoaXMuY29udGVudHMpP3RoaXMuY29udGVudHMuZ2V0KGUsdCk6dm9pZCAwfWdldEluKGUsdCl7cmV0dXJuIGtuKGUpPyF0JiZLKHRoaXMuY29udGVudHMpP3RoaXMuY29udGVudHMudmFsdWU6dGhpcy5jb250ZW50czpaKHRoaXMuY29udGVudHMpP3RoaXMuY29udGVudHMuZ2V0SW4oZSx0KTp2b2lkIDB9aGFzKGUpe3JldHVybiBaKHRoaXMuY29udGVudHMpP3RoaXMuY29udGVudHMuaGFzKGUpOiExfWhhc0luKGUpe3JldHVybiBrbihlKT90aGlzLmNvbnRlbnRzIT09dm9pZCAwOloodGhpcy5jb250ZW50cyk/dGhpcy5jb250ZW50cy5oYXNJbihlKTohMX1zZXQoZSx0KXt0aGlzLmNvbnRlbnRzPT1udWxsP3RoaXMuY29udGVudHM9cHIodGhpcy5zY2hlbWEsW2VdLHQpOkxuKHRoaXMuY29udGVudHMpJiZ0aGlzLmNvbnRlbnRzLnNldChlLHQpfXNldEluKGUsdCl7a24oZSk/dGhpcy5jb250ZW50cz10OnRoaXMuY29udGVudHM9PW51bGw/dGhpcy5jb250ZW50cz1wcih0aGlzLnNjaGVtYSxBcnJheS5mcm9tKGUpLHQpOkxuKHRoaXMuY29udGVudHMpJiZ0aGlzLmNvbnRlbnRzLnNldEluKGUsdCl9c2V0U2NoZW1hKGUsdD17fSl7dHlwZW9mIGU9PVxcXCJudW1iZXJcXFwiJiYoZT1TdHJpbmcoZSkpO2xldCByO3N3aXRjaChlKXtjYXNlXFxcIjEuMVxcXCI6dGhpcy5kaXJlY3RpdmVzP3RoaXMuZGlyZWN0aXZlcy55YW1sLnZlcnNpb249XFxcIjEuMVxcXCI6dGhpcy5kaXJlY3RpdmVzPW5ldyBpdCh7dmVyc2lvbjpcXFwiMS4xXFxcIn0pLHI9e3Jlc29sdmVLbm93blRhZ3M6ITEsc2NoZW1hOlxcXCJ5YW1sLTEuMVxcXCJ9O2JyZWFrO2Nhc2VcXFwiMS4yXFxcIjpjYXNlXFxcIm5leHRcXFwiOnRoaXMuZGlyZWN0aXZlcz90aGlzLmRpcmVjdGl2ZXMueWFtbC52ZXJzaW9uPWU6dGhpcy5kaXJlY3RpdmVzPW5ldyBpdCh7dmVyc2lvbjplfSkscj17cmVzb2x2ZUtub3duVGFnczohMCxzY2hlbWE6XFxcImNvcmVcXFwifTticmVhaztjYXNlIG51bGw6dGhpcy5kaXJlY3RpdmVzJiZkZWxldGUgdGhpcy5kaXJlY3RpdmVzLHI9bnVsbDticmVhaztkZWZhdWx0OntsZXQgcz1KU09OLnN0cmluZ2lmeShlKTt0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkICcxLjEnLCAnMS4yJyBvciBudWxsIGFzIGZpcnN0IGFyZ3VtZW50LCBidXQgZm91bmQ6ICR7c31gKX19aWYodC5zY2hlbWEgaW5zdGFuY2VvZiBPYmplY3QpdGhpcy5zY2hlbWE9dC5zY2hlbWE7ZWxzZSBpZihyKXRoaXMuc2NoZW1hPW5ldyBrcihPYmplY3QuYXNzaWduKHIsdCkpO2Vsc2UgdGhyb3cgbmV3IEVycm9yKFxcXCJXaXRoIGEgbnVsbCBZQU1MIHZlcnNpb24sIHRoZSB7IHNjaGVtYTogU2NoZW1hIH0gb3B0aW9uIGlzIHJlcXVpcmVkXFxcIil9dG9KUyh7anNvbjplLGpzb25Bcmc6dCxtYXBBc01hcDpyLG1heEFsaWFzQ291bnQ6cyxvbkFuY2hvcjppLHJldml2ZXI6b309e30pe2xldCBhPXthbmNob3JzOm5ldyBNYXAsZG9jOnRoaXMsa2VlcDohZSxtYXBBc01hcDpyPT09ITAsbWFwS2V5V2FybmVkOiExLG1heEFsaWFzQ291bnQ6dHlwZW9mIHM9PVxcXCJudW1iZXJcXFwiP3M6MTAwfSx1PWNlKHRoaXMuY29udGVudHMsdCE9bnVsbD90OlxcXCJcXFwiLGEpO2lmKHR5cGVvZiBpPT1cXFwiZnVuY3Rpb25cXFwiKWZvcihsZXR7Y291bnQ6bCxyZXM6Zn1vZiBhLmFuY2hvcnMudmFsdWVzKCkpaShmLGwpO3JldHVybiB0eXBlb2Ygbz09XFxcImZ1bmN0aW9uXFxcIj94dChvLHtcXFwiXFxcIjp1fSxcXFwiXFxcIix1KTp1fXRvSlNPTihlLHQpe3JldHVybiB0aGlzLnRvSlMoe2pzb246ITAsanNvbkFyZzplLG1hcEFzTWFwOiExLG9uQW5jaG9yOnR9KX10b1N0cmluZyhlPXt9KXtpZih0aGlzLmVycm9ycy5sZW5ndGg+MCl0aHJvdyBuZXcgRXJyb3IoXFxcIkRvY3VtZW50IHdpdGggZXJyb3JzIGNhbm5vdCBiZSBzdHJpbmdpZmllZFxcXCIpO2lmKFxcXCJpbmRlbnRcXFwiaW4gZSYmKCFOdW1iZXIuaXNJbnRlZ2VyKGUuaW5kZW50KXx8TnVtYmVyKGUuaW5kZW50KTw9MCkpe2xldCB0PUpTT04uc3RyaW5naWZ5KGUuaW5kZW50KTt0aHJvdyBuZXcgRXJyb3IoYFxcXCJpbmRlbnRcXFwiIG9wdGlvbiBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlciwgbm90ICR7dH1gKX1yZXR1cm4gRHUodGhpcyxlKX19O2Z1bmN0aW9uIExuKG4pe2lmKFoobikpcmV0dXJuITA7dGhyb3cgbmV3IEVycm9yKFxcXCJFeHBlY3RlZCBhIFlBTUwgY29sbGVjdGlvbiBhcyBkb2N1bWVudCBjb250ZW50c1xcXCIpfXZhciBDcj1jbGFzcyBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKGUsdCxyLHMpe3N1cGVyKCksdGhpcy5uYW1lPWUsdGhpcy5jb2RlPXIsdGhpcy5tZXNzYWdlPXMsdGhpcy5wb3M9dH19LFFlPWNsYXNzIGV4dGVuZHMgQ3J7Y29uc3RydWN0b3IoZSx0LHIpe3N1cGVyKFxcXCJZQU1MUGFyc2VFcnJvclxcXCIsZSx0LHIpfX0sdnI9Y2xhc3MgZXh0ZW5kcyBDcntjb25zdHJ1Y3RvcihlLHQscil7c3VwZXIoXFxcIllBTUxXYXJuaW5nXFxcIixlLHQscil9fSxaaT0obixlKT0+dD0+e2lmKHQucG9zWzBdPT09LTEpcmV0dXJuO3QubGluZVBvcz10LnBvcy5tYXAoYT0+ZS5saW5lUG9zKGEpKTtsZXR7bGluZTpyLGNvbDpzfT10LmxpbmVQb3NbMF07dC5tZXNzYWdlKz1gIGF0IGxpbmUgJHtyfSwgY29sdW1uICR7c31gO2xldCBpPXMtMSxvPW4uc3Vic3RyaW5nKGUubGluZVN0YXJ0c1tyLTFdLGUubGluZVN0YXJ0c1tyXSkucmVwbGFjZSgvW1xcXFxuXFxcXHJdKyQvLFxcXCJcXFwiKTtpZihpPj02MCYmby5sZW5ndGg+ODApe2xldCBhPU1hdGgubWluKGktMzksby5sZW5ndGgtNzkpO289XFxcIlxcXFx1MjAyNlxcXCIrby5zdWJzdHJpbmcoYSksaS09YS0xfWlmKG8ubGVuZ3RoPjgwJiYobz1vLnN1YnN0cmluZygwLDc5KStcXFwiXFxcXHUyMDI2XFxcIikscj4xJiYvXiAqJC8udGVzdChvLnN1YnN0cmluZygwLGkpKSl7bGV0IGE9bi5zdWJzdHJpbmcoZS5saW5lU3RhcnRzW3ItMl0sZS5saW5lU3RhcnRzW3ItMV0pO2EubGVuZ3RoPjgwJiYoYT1hLnN1YnN0cmluZygwLDc5KStgXFxcXHUyMDI2XFxuYCksbz1hK299aWYoL1teIF0vLnRlc3Qobykpe2xldCBhPTEsdT10LmxpbmVQb3NbMV07dSYmdS5saW5lPT09ciYmdS5jb2w+cyYmKGE9TWF0aC5tYXgoMSxNYXRoLm1pbih1LmNvbC1zLDgwLWkpKSk7bGV0IGw9XFxcIiBcXFwiLnJlcGVhdChpKStcXFwiXlxcXCIucmVwZWF0KGEpO3QubWVzc2FnZSs9YDpcXG5cXG4ke299XFxuJHtsfVxcbmB9fTtmdW5jdGlvbiBhdChuLHtmbG93OmUsaW5kaWNhdG9yOnQsbmV4dDpyLG9mZnNldDpzLG9uRXJyb3I6aSxwYXJlbnRJbmRlbnQ6byxzdGFydE9uTmV3bGluZTphfSl7bGV0IHU9ITEsbD1hLGY9YSxkPVxcXCJcXFwiLG09XFxcIlxcXCIsaD0hMSxiPSExLGc9bnVsbCxEPW51bGwsVD1udWxsLEk9bnVsbCxOPW51bGwseT1udWxsLHc9bnVsbDtmb3IobGV0IEMgb2Ygbilzd2l0Y2goYiYmKEMudHlwZSE9PVxcXCJzcGFjZVxcXCImJkMudHlwZSE9PVxcXCJuZXdsaW5lXFxcIiYmQy50eXBlIT09XFxcImNvbW1hXFxcIiYmaShDLm9mZnNldCxcXFwiTUlTU0lOR19DSEFSXFxcIixcXFwiVGFncyBhbmQgYW5jaG9ycyBtdXN0IGJlIHNlcGFyYXRlZCBmcm9tIHRoZSBuZXh0IHRva2VuIGJ5IHdoaXRlIHNwYWNlXFxcIiksYj0hMSksZyYmKGwmJkMudHlwZSE9PVxcXCJjb21tZW50XFxcIiYmQy50eXBlIT09XFxcIm5ld2xpbmVcXFwiJiZpKGcsXFxcIlRBQl9BU19JTkRFTlRcXFwiLFxcXCJUYWJzIGFyZSBub3QgYWxsb3dlZCBhcyBpbmRlbnRhdGlvblxcXCIpLGc9bnVsbCksQy50eXBlKXtjYXNlXFxcInNwYWNlXFxcIjohZSYmKHQhPT1cXFwiZG9jLXN0YXJ0XFxcInx8KHI9PW51bGw/dm9pZCAwOnIudHlwZSkhPT1cXFwiZmxvdy1jb2xsZWN0aW9uXFxcIikmJkMuc291cmNlLmluY2x1ZGVzKFxcXCJcXHRcXFwiKSYmKGc9QyksZj0hMDticmVhaztjYXNlXFxcImNvbW1lbnRcXFwiOntmfHxpKEMsXFxcIk1JU1NJTkdfQ0hBUlxcXCIsXFxcIkNvbW1lbnRzIG11c3QgYmUgc2VwYXJhdGVkIGZyb20gb3RoZXIgdG9rZW5zIGJ5IHdoaXRlIHNwYWNlIGNoYXJhY3RlcnNcXFwiKTtsZXQgVj1DLnNvdXJjZS5zdWJzdHJpbmcoMSl8fFxcXCIgXFxcIjtkP2QrPW0rVjpkPVYsbT1cXFwiXFxcIixsPSExO2JyZWFrfWNhc2VcXFwibmV3bGluZVxcXCI6bD9kP2QrPUMuc291cmNlOnU9ITA6bSs9Qy5zb3VyY2UsbD0hMCxoPSEwLChEfHxUKSYmKEk9QyksZj0hMDticmVhaztjYXNlXFxcImFuY2hvclxcXCI6RCYmaShDLFxcXCJNVUxUSVBMRV9BTkNIT1JTXFxcIixcXFwiQSBub2RlIGNhbiBoYXZlIGF0IG1vc3Qgb25lIGFuY2hvclxcXCIpLEMuc291cmNlLmVuZHNXaXRoKFxcXCI6XFxcIikmJmkoQy5vZmZzZXQrQy5zb3VyY2UubGVuZ3RoLTEsXFxcIkJBRF9BTElBU1xcXCIsXFxcIkFuY2hvciBlbmRpbmcgaW4gOiBpcyBhbWJpZ3VvdXNcXFwiLCEwKSxEPUMsdz09PW51bGwmJih3PUMub2Zmc2V0KSxsPSExLGY9ITEsYj0hMDticmVhaztjYXNlXFxcInRhZ1xcXCI6e1QmJmkoQyxcXFwiTVVMVElQTEVfVEFHU1xcXCIsXFxcIkEgbm9kZSBjYW4gaGF2ZSBhdCBtb3N0IG9uZSB0YWdcXFwiKSxUPUMsdz09PW51bGwmJih3PUMub2Zmc2V0KSxsPSExLGY9ITEsYj0hMDticmVha31jYXNlIHQ6KER8fFQpJiZpKEMsXFxcIkJBRF9QUk9QX09SREVSXFxcIixgQW5jaG9ycyBhbmQgdGFncyBtdXN0IGJlIGFmdGVyIHRoZSAke0Muc291cmNlfSBpbmRpY2F0b3JgKSx5JiZpKEMsXFxcIlVORVhQRUNURURfVE9LRU5cXFwiLGBVbmV4cGVjdGVkICR7Qy5zb3VyY2V9IGluICR7ZSE9bnVsbD9lOlxcXCJjb2xsZWN0aW9uXFxcIn1gKSx5PUMsbD10PT09XFxcInNlcS1pdGVtLWluZFxcXCJ8fHQ9PT1cXFwiZXhwbGljaXQta2V5LWluZFxcXCIsZj0hMTticmVhaztjYXNlXFxcImNvbW1hXFxcIjppZihlKXtOJiZpKEMsXFxcIlVORVhQRUNURURfVE9LRU5cXFwiLGBVbmV4cGVjdGVkICwgaW4gJHtlfWApLE49QyxsPSExLGY9ITE7YnJlYWt9ZGVmYXVsdDppKEMsXFxcIlVORVhQRUNURURfVE9LRU5cXFwiLGBVbmV4cGVjdGVkICR7Qy50eXBlfSB0b2tlbmApLGw9ITEsZj0hMX1sZXQgdj1uW24ubGVuZ3RoLTFdLHg9dj92Lm9mZnNldCt2LnNvdXJjZS5sZW5ndGg6cztyZXR1cm4gYiYmciYmci50eXBlIT09XFxcInNwYWNlXFxcIiYmci50eXBlIT09XFxcIm5ld2xpbmVcXFwiJiZyLnR5cGUhPT1cXFwiY29tbWFcXFwiJiYoci50eXBlIT09XFxcInNjYWxhclxcXCJ8fHIuc291cmNlIT09XFxcIlxcXCIpJiZpKHIub2Zmc2V0LFxcXCJNSVNTSU5HX0NIQVJcXFwiLFxcXCJUYWdzIGFuZCBhbmNob3JzIG11c3QgYmUgc2VwYXJhdGVkIGZyb20gdGhlIG5leHQgdG9rZW4gYnkgd2hpdGUgc3BhY2VcXFwiKSxnJiYobCYmZy5pbmRlbnQ8PW98fChyPT1udWxsP3ZvaWQgMDpyLnR5cGUpPT09XFxcImJsb2NrLW1hcFxcXCJ8fChyPT1udWxsP3ZvaWQgMDpyLnR5cGUpPT09XFxcImJsb2NrLXNlcVxcXCIpJiZpKGcsXFxcIlRBQl9BU19JTkRFTlRcXFwiLFxcXCJUYWJzIGFyZSBub3QgYWxsb3dlZCBhcyBpbmRlbnRhdGlvblxcXCIpLHtjb21tYTpOLGZvdW5kOnksc3BhY2VCZWZvcmU6dSxjb21tZW50OmQsaGFzTmV3bGluZTpoLGFuY2hvcjpELHRhZzpULG5ld2xpbmVBZnRlclByb3A6SSxlbmQ6eCxzdGFydDp3IT1udWxsP3c6eH19ZnVuY3Rpb24gQXQobil7aWYoIW4pcmV0dXJuIG51bGw7c3dpdGNoKG4udHlwZSl7Y2FzZVxcXCJhbGlhc1xcXCI6Y2FzZVxcXCJzY2FsYXJcXFwiOmNhc2VcXFwiZG91YmxlLXF1b3RlZC1zY2FsYXJcXFwiOmNhc2VcXFwic2luZ2xlLXF1b3RlZC1zY2FsYXJcXFwiOmlmKG4uc291cmNlLmluY2x1ZGVzKGBcXG5gKSlyZXR1cm4hMDtpZihuLmVuZCl7Zm9yKGxldCBlIG9mIG4uZW5kKWlmKGUudHlwZT09PVxcXCJuZXdsaW5lXFxcIilyZXR1cm4hMH1yZXR1cm4hMTtjYXNlXFxcImZsb3ctY29sbGVjdGlvblxcXCI6Zm9yKGxldCBlIG9mIG4uaXRlbXMpe2ZvcihsZXQgdCBvZiBlLnN0YXJ0KWlmKHQudHlwZT09PVxcXCJuZXdsaW5lXFxcIilyZXR1cm4hMDtpZihlLnNlcCl7Zm9yKGxldCB0IG9mIGUuc2VwKWlmKHQudHlwZT09PVxcXCJuZXdsaW5lXFxcIilyZXR1cm4hMH1pZihBdChlLmtleSl8fEF0KGUudmFsdWUpKXJldHVybiEwfXJldHVybiExO2RlZmF1bHQ6cmV0dXJuITB9fWZ1bmN0aW9uIHhyKG4sZSx0KXtpZigoZT09bnVsbD92b2lkIDA6ZS50eXBlKT09PVxcXCJmbG93LWNvbGxlY3Rpb25cXFwiKXtsZXQgcj1lLmVuZFswXTtyLmluZGVudD09PW4mJihyLnNvdXJjZT09PVxcXCJdXFxcInx8ci5zb3VyY2U9PT1cXFwifVxcXCIpJiZBdChlKSYmdChyLFxcXCJCQURfSU5ERU5UXFxcIixcXFwiRmxvdyBlbmQgaW5kaWNhdG9yIHNob3VsZCBiZSBtb3JlIGluZGVudGVkIHRoYW4gcGFyZW50XFxcIiwhMCl9fWZ1bmN0aW9uIE5zKG4sZSx0KXtsZXR7dW5pcXVlS2V5czpyfT1uLm9wdGlvbnM7aWYocj09PSExKXJldHVybiExO2xldCBzPXR5cGVvZiByPT1cXFwiZnVuY3Rpb25cXFwiP3I6KGksbyk9Pmk9PT1vfHxLKGkpJiZLKG8pJiZpLnZhbHVlPT09by52YWx1ZTtyZXR1cm4gZS5zb21lKGk9PnMoaS5rZXksdCkpfXZhciB5dT1cXFwiQWxsIG1hcHBpbmcgaXRlbXMgbXVzdCBzdGFydCBhdCB0aGUgc2FtZSBjb2x1bW5cXFwiO2Z1bmN0aW9uIGd1KHtjb21wb3NlTm9kZTpuLGNvbXBvc2VFbXB0eU5vZGU6ZX0sdCxyLHMsaSl7dmFyIGYsZDtsZXQgbz0oZj1pPT1udWxsP3ZvaWQgMDppLm5vZGVDbGFzcykhPW51bGw/ZjpvZSxhPW5ldyBvKHQuc2NoZW1hKTt0LmF0Um9vdCYmKHQuYXRSb290PSExKTtsZXQgdT1yLm9mZnNldCxsPW51bGw7Zm9yKGxldCBtIG9mIHIuaXRlbXMpe2xldHtzdGFydDpoLGtleTpiLHNlcDpnLHZhbHVlOkR9PW0sVD1hdChoLHtpbmRpY2F0b3I6XFxcImV4cGxpY2l0LWtleS1pbmRcXFwiLG5leHQ6YiE9bnVsbD9iOmc9PW51bGw/dm9pZCAwOmdbMF0sb2Zmc2V0OnUsb25FcnJvcjpzLHBhcmVudEluZGVudDpyLmluZGVudCxzdGFydE9uTmV3bGluZTohMH0pLEk9IVQuZm91bmQ7aWYoSSl7aWYoYiYmKGIudHlwZT09PVxcXCJibG9jay1zZXFcXFwiP3ModSxcXFwiQkxPQ0tfQVNfSU1QTElDSVRfS0VZXFxcIixcXFwiQSBibG9jayBzZXF1ZW5jZSBtYXkgbm90IGJlIHVzZWQgYXMgYW4gaW1wbGljaXQgbWFwIGtleVxcXCIpOlxcXCJpbmRlbnRcXFwiaW4gYiYmYi5pbmRlbnQhPT1yLmluZGVudCYmcyh1LFxcXCJCQURfSU5ERU5UXFxcIix5dSkpLCFULmFuY2hvciYmIVQudGFnJiYhZyl7bD1ULmVuZCxULmNvbW1lbnQmJihhLmNvbW1lbnQ/YS5jb21tZW50Kz1gXFxuYCtULmNvbW1lbnQ6YS5jb21tZW50PVQuY29tbWVudCk7Y29udGludWV9KFQubmV3bGluZUFmdGVyUHJvcHx8QXQoYikpJiZzKGIhPW51bGw/YjpoW2gubGVuZ3RoLTFdLFxcXCJNVUxUSUxJTkVfSU1QTElDSVRfS0VZXFxcIixcXFwiSW1wbGljaXQga2V5cyBuZWVkIHRvIGJlIG9uIGEgc2luZ2xlIGxpbmVcXFwiKX1lbHNlKChkPVQuZm91bmQpPT1udWxsP3ZvaWQgMDpkLmluZGVudCkhPT1yLmluZGVudCYmcyh1LFxcXCJCQURfSU5ERU5UXFxcIix5dSk7dC5hdEtleT0hMDtsZXQgTj1ULmVuZCx5PWI/bih0LGIsVCxzKTplKHQsTixoLG51bGwsVCxzKTt0LnNjaGVtYS5jb21wYXQmJnhyKHIuaW5kZW50LGIscyksdC5hdEtleT0hMSxOcyh0LGEuaXRlbXMseSkmJnMoTixcXFwiRFVQTElDQVRFX0tFWVxcXCIsXFxcIk1hcCBrZXlzIG11c3QgYmUgdW5pcXVlXFxcIik7bGV0IHc9YXQoZyE9bnVsbD9nOltdLHtpbmRpY2F0b3I6XFxcIm1hcC12YWx1ZS1pbmRcXFwiLG5leHQ6RCxvZmZzZXQ6eS5yYW5nZVsyXSxvbkVycm9yOnMscGFyZW50SW5kZW50OnIuaW5kZW50LHN0YXJ0T25OZXdsaW5lOiFifHxiLnR5cGU9PT1cXFwiYmxvY2stc2NhbGFyXFxcIn0pO2lmKHU9dy5lbmQsdy5mb3VuZCl7SSYmKChEPT1udWxsP3ZvaWQgMDpELnR5cGUpPT09XFxcImJsb2NrLW1hcFxcXCImJiF3Lmhhc05ld2xpbmUmJnModSxcXFwiQkxPQ0tfQVNfSU1QTElDSVRfS0VZXFxcIixcXFwiTmVzdGVkIG1hcHBpbmdzIGFyZSBub3QgYWxsb3dlZCBpbiBjb21wYWN0IG1hcHBpbmdzXFxcIiksdC5vcHRpb25zLnN0cmljdCYmVC5zdGFydDx3LmZvdW5kLm9mZnNldC0xMDI0JiZzKHkucmFuZ2UsXFxcIktFWV9PVkVSXzEwMjRfQ0hBUlNcXFwiLFxcXCJUaGUgOiBpbmRpY2F0b3IgbXVzdCBiZSBhdCBtb3N0IDEwMjQgY2hhcnMgYWZ0ZXIgdGhlIHN0YXJ0IG9mIGFuIGltcGxpY2l0IGJsb2NrIG1hcHBpbmcga2V5XFxcIikpO2xldCB2PUQ/bih0LEQsdyxzKTplKHQsdSxnLG51bGwsdyxzKTt0LnNjaGVtYS5jb21wYXQmJnhyKHIuaW5kZW50LEQscyksdT12LnJhbmdlWzJdO2xldCB4PW5ldyBpZSh5LHYpO3Qub3B0aW9ucy5rZWVwU291cmNlVG9rZW5zJiYoeC5zcmNUb2tlbj1tKSxhLml0ZW1zLnB1c2goeCl9ZWxzZXtJJiZzKHkucmFuZ2UsXFxcIk1JU1NJTkdfQ0hBUlxcXCIsXFxcIkltcGxpY2l0IG1hcCBrZXlzIG5lZWQgdG8gYmUgZm9sbG93ZWQgYnkgbWFwIHZhbHVlc1xcXCIpLHcuY29tbWVudCYmKHkuY29tbWVudD95LmNvbW1lbnQrPWBcXG5gK3cuY29tbWVudDp5LmNvbW1lbnQ9dy5jb21tZW50KTtsZXQgdj1uZXcgaWUoeSk7dC5vcHRpb25zLmtlZXBTb3VyY2VUb2tlbnMmJih2LnNyY1Rva2VuPW0pLGEuaXRlbXMucHVzaCh2KX19cmV0dXJuIGwmJmw8dSYmcyhsLFxcXCJJTVBPU1NJQkxFXFxcIixcXFwiTWFwIGNvbW1lbnQgd2l0aCB0cmFpbGluZyBjb250ZW50XFxcIiksYS5yYW5nZT1bci5vZmZzZXQsdSxsIT1udWxsP2w6dV0sYX1mdW5jdGlvbiBidSh7Y29tcG9zZU5vZGU6bixjb21wb3NlRW1wdHlOb2RlOmV9LHQscixzLGkpe3ZhciBmO2xldCBvPShmPWk9PW51bGw/dm9pZCAwOmkubm9kZUNsYXNzKSE9bnVsbD9mOmJlLGE9bmV3IG8odC5zY2hlbWEpO3QuYXRSb290JiYodC5hdFJvb3Q9ITEpLHQuYXRLZXkmJih0LmF0S2V5PSExKTtsZXQgdT1yLm9mZnNldCxsPW51bGw7Zm9yKGxldHtzdGFydDpkLHZhbHVlOm19b2Ygci5pdGVtcyl7bGV0IGg9YXQoZCx7aW5kaWNhdG9yOlxcXCJzZXEtaXRlbS1pbmRcXFwiLG5leHQ6bSxvZmZzZXQ6dSxvbkVycm9yOnMscGFyZW50SW5kZW50OnIuaW5kZW50LHN0YXJ0T25OZXdsaW5lOiEwfSk7aWYoIWguZm91bmQpaWYoaC5hbmNob3J8fGgudGFnfHxtKW0mJm0udHlwZT09PVxcXCJibG9jay1zZXFcXFwiP3MoaC5lbmQsXFxcIkJBRF9JTkRFTlRcXFwiLFxcXCJBbGwgc2VxdWVuY2UgaXRlbXMgbXVzdCBzdGFydCBhdCB0aGUgc2FtZSBjb2x1bW5cXFwiKTpzKHUsXFxcIk1JU1NJTkdfQ0hBUlxcXCIsXFxcIlNlcXVlbmNlIGl0ZW0gd2l0aG91dCAtIGluZGljYXRvclxcXCIpO2Vsc2V7bD1oLmVuZCxoLmNvbW1lbnQmJihhLmNvbW1lbnQ9aC5jb21tZW50KTtjb250aW51ZX1sZXQgYj1tP24odCxtLGgscyk6ZSh0LGguZW5kLGQsbnVsbCxoLHMpO3Quc2NoZW1hLmNvbXBhdCYmeHIoci5pbmRlbnQsbSxzKSx1PWIucmFuZ2VbMl0sYS5pdGVtcy5wdXNoKGIpfXJldHVybiBhLnJhbmdlPVtyLm9mZnNldCx1LGwhPW51bGw/bDp1XSxhfWZ1bmN0aW9uIHV0KG4sZSx0LHIpe2xldCBzPVxcXCJcXFwiO2lmKG4pe2xldCBpPSExLG89XFxcIlxcXCI7Zm9yKGxldCBhIG9mIG4pe2xldHtzb3VyY2U6dSx0eXBlOmx9PWE7c3dpdGNoKGwpe2Nhc2VcXFwic3BhY2VcXFwiOmk9ITA7YnJlYWs7Y2FzZVxcXCJjb21tZW50XFxcIjp7dCYmIWkmJnIoYSxcXFwiTUlTU0lOR19DSEFSXFxcIixcXFwiQ29tbWVudHMgbXVzdCBiZSBzZXBhcmF0ZWQgZnJvbSBvdGhlciB0b2tlbnMgYnkgd2hpdGUgc3BhY2UgY2hhcmFjdGVyc1xcXCIpO2xldCBmPXUuc3Vic3RyaW5nKDEpfHxcXFwiIFxcXCI7cz9zKz1vK2Y6cz1mLG89XFxcIlxcXCI7YnJlYWt9Y2FzZVxcXCJuZXdsaW5lXFxcIjpzJiYobys9dSksaT0hMDticmVhaztkZWZhdWx0OnIoYSxcXFwiVU5FWFBFQ1RFRF9UT0tFTlxcXCIsYFVuZXhwZWN0ZWQgJHtsfSBhdCBub2RlIGVuZGApfWUrPXUubGVuZ3RofX1yZXR1cm57Y29tbWVudDpzLG9mZnNldDplfX12YXIgUWk9XFxcIkJsb2NrIGNvbGxlY3Rpb25zIGFyZSBub3QgYWxsb3dlZCB3aXRoaW4gZmxvdyBjb2xsZWN0aW9uc1xcXCIsWGk9bj0+biYmKG4udHlwZT09PVxcXCJibG9jay1tYXBcXFwifHxuLnR5cGU9PT1cXFwiYmxvY2stc2VxXFxcIik7ZnVuY3Rpb24gRnUoe2NvbXBvc2VOb2RlOm4sY29tcG9zZUVtcHR5Tm9kZTplfSx0LHIscyxpKXt2YXIgRCxUO2xldCBvPXIuc3RhcnQuc291cmNlPT09XFxcIntcXFwiLGE9bz9cXFwiZmxvdyBtYXBcXFwiOlxcXCJmbG93IHNlcXVlbmNlXFxcIix1PShEPWk9PW51bGw/dm9pZCAwOmkubm9kZUNsYXNzKSE9bnVsbD9EOm8/b2U6YmUsbD1uZXcgdSh0LnNjaGVtYSk7bC5mbG93PSEwO2xldCBmPXQuYXRSb290O2YmJih0LmF0Um9vdD0hMSksdC5hdEtleSYmKHQuYXRLZXk9ITEpO2xldCBkPXIub2Zmc2V0K3Iuc3RhcnQuc291cmNlLmxlbmd0aDtmb3IobGV0IEk9MDtJPHIuaXRlbXMubGVuZ3RoOysrSSl7bGV0IE49ci5pdGVtc1tJXSx7c3RhcnQ6eSxrZXk6dyxzZXA6dix2YWx1ZTp4fT1OLEM9YXQoeSx7ZmxvdzphLGluZGljYXRvcjpcXFwiZXhwbGljaXQta2V5LWluZFxcXCIsbmV4dDp3IT1udWxsP3c6dj09bnVsbD92b2lkIDA6dlswXSxvZmZzZXQ6ZCxvbkVycm9yOnMscGFyZW50SW5kZW50OnIuaW5kZW50LHN0YXJ0T25OZXdsaW5lOiExfSk7aWYoIUMuZm91bmQpe2lmKCFDLmFuY2hvciYmIUMudGFnJiYhdiYmIXgpe0k9PT0wJiZDLmNvbW1hP3MoQy5jb21tYSxcXFwiVU5FWFBFQ1RFRF9UT0tFTlxcXCIsYFVuZXhwZWN0ZWQgLCBpbiAke2F9YCk6STxyLml0ZW1zLmxlbmd0aC0xJiZzKEMuc3RhcnQsXFxcIlVORVhQRUNURURfVE9LRU5cXFwiLGBVbmV4cGVjdGVkIGVtcHR5IGl0ZW0gaW4gJHthfWApLEMuY29tbWVudCYmKGwuY29tbWVudD9sLmNvbW1lbnQrPWBcXG5gK0MuY29tbWVudDpsLmNvbW1lbnQ9Qy5jb21tZW50KSxkPUMuZW5kO2NvbnRpbnVlfSFvJiZ0Lm9wdGlvbnMuc3RyaWN0JiZBdCh3KSYmcyh3LFxcXCJNVUxUSUxJTkVfSU1QTElDSVRfS0VZXFxcIixcXFwiSW1wbGljaXQga2V5cyBvZiBmbG93IHNlcXVlbmNlIHBhaXJzIG5lZWQgdG8gYmUgb24gYSBzaW5nbGUgbGluZVxcXCIpfWlmKEk9PT0wKUMuY29tbWEmJnMoQy5jb21tYSxcXFwiVU5FWFBFQ1RFRF9UT0tFTlxcXCIsYFVuZXhwZWN0ZWQgLCBpbiAke2F9YCk7ZWxzZSBpZihDLmNvbW1hfHxzKEMuc3RhcnQsXFxcIk1JU1NJTkdfQ0hBUlxcXCIsYE1pc3NpbmcgLCBiZXR3ZWVuICR7YX0gaXRlbXNgKSxDLmNvbW1lbnQpe2xldCBWPVxcXCJcXFwiO2U6Zm9yKGxldCBqIG9mIHkpc3dpdGNoKGoudHlwZSl7Y2FzZVxcXCJjb21tYVxcXCI6Y2FzZVxcXCJzcGFjZVxcXCI6YnJlYWs7Y2FzZVxcXCJjb21tZW50XFxcIjpWPWouc291cmNlLnN1YnN0cmluZygxKTticmVhayBlO2RlZmF1bHQ6YnJlYWsgZX1pZihWKXtsZXQgaj1sLml0ZW1zW2wuaXRlbXMubGVuZ3RoLTFdO0goaikmJihqPShUPWoudmFsdWUpIT1udWxsP1Q6ai5rZXkpLGouY29tbWVudD9qLmNvbW1lbnQrPWBcXG5gK1Y6ai5jb21tZW50PVYsQy5jb21tZW50PUMuY29tbWVudC5zdWJzdHJpbmcoVi5sZW5ndGgrMSl9fWlmKCFvJiYhdiYmIUMuZm91bmQpe2xldCBWPXg/bih0LHgsQyxzKTplKHQsQy5lbmQsdixudWxsLEMscyk7bC5pdGVtcy5wdXNoKFYpLGQ9Vi5yYW5nZVsyXSxYaSh4KSYmcyhWLnJhbmdlLFxcXCJCTE9DS19JTl9GTE9XXFxcIixRaSl9ZWxzZXt0LmF0S2V5PSEwO2xldCBWPUMuZW5kLGo9dz9uKHQsdyxDLHMpOmUodCxWLHksbnVsbCxDLHMpO1hpKHcpJiZzKGoucmFuZ2UsXFxcIkJMT0NLX0lOX0ZMT1dcXFwiLFFpKSx0LmF0S2V5PSExO2xldCBZPWF0KHYhPW51bGw/djpbXSx7ZmxvdzphLGluZGljYXRvcjpcXFwibWFwLXZhbHVlLWluZFxcXCIsbmV4dDp4LG9mZnNldDpqLnJhbmdlWzJdLG9uRXJyb3I6cyxwYXJlbnRJbmRlbnQ6ci5pbmRlbnQsc3RhcnRPbk5ld2xpbmU6ITF9KTtpZihZLmZvdW5kKXtpZighbyYmIUMuZm91bmQmJnQub3B0aW9ucy5zdHJpY3Qpe2lmKHYpZm9yKGxldCBPIG9mIHYpe2lmKE89PT1ZLmZvdW5kKWJyZWFrO2lmKE8udHlwZT09PVxcXCJuZXdsaW5lXFxcIil7cyhPLFxcXCJNVUxUSUxJTkVfSU1QTElDSVRfS0VZXFxcIixcXFwiSW1wbGljaXQga2V5cyBvZiBmbG93IHNlcXVlbmNlIHBhaXJzIG5lZWQgdG8gYmUgb24gYSBzaW5nbGUgbGluZVxcXCIpO2JyZWFrfX1DLnN0YXJ0PFkuZm91bmQub2Zmc2V0LTEwMjQmJnMoWS5mb3VuZCxcXFwiS0VZX09WRVJfMTAyNF9DSEFSU1xcXCIsXFxcIlRoZSA6IGluZGljYXRvciBtdXN0IGJlIGF0IG1vc3QgMTAyNCBjaGFycyBhZnRlciB0aGUgc3RhcnQgb2YgYW4gaW1wbGljaXQgZmxvdyBzZXF1ZW5jZSBrZXlcXFwiKX19ZWxzZSB4JiYoXFxcInNvdXJjZVxcXCJpbiB4JiZ4LnNvdXJjZSYmeC5zb3VyY2VbMF09PT1cXFwiOlxcXCI/cyh4LFxcXCJNSVNTSU5HX0NIQVJcXFwiLGBNaXNzaW5nIHNwYWNlIGFmdGVyIDogaW4gJHthfWApOnMoWS5zdGFydCxcXFwiTUlTU0lOR19DSEFSXFxcIixgTWlzc2luZyAsIG9yIDogYmV0d2VlbiAke2F9IGl0ZW1zYCkpO2xldCBlZT14P24odCx4LFkscyk6WS5mb3VuZD9lKHQsWS5lbmQsdixudWxsLFkscyk6bnVsbDtlZT9YaSh4KSYmcyhlZS5yYW5nZSxcXFwiQkxPQ0tfSU5fRkxPV1xcXCIsUWkpOlkuY29tbWVudCYmKGouY29tbWVudD9qLmNvbW1lbnQrPWBcXG5gK1kuY29tbWVudDpqLmNvbW1lbnQ9WS5jb21tZW50KTtsZXQgYWU9bmV3IGllKGosZWUpO2lmKHQub3B0aW9ucy5rZWVwU291cmNlVG9rZW5zJiYoYWUuc3JjVG9rZW49Tiksbyl7bGV0IE89bDtOcyh0LE8uaXRlbXMsaikmJnMoVixcXFwiRFVQTElDQVRFX0tFWVxcXCIsXFxcIk1hcCBrZXlzIG11c3QgYmUgdW5pcXVlXFxcIiksTy5pdGVtcy5wdXNoKGFlKX1lbHNle2xldCBPPW5ldyBvZSh0LnNjaGVtYSk7Ty5mbG93PSEwLE8uaXRlbXMucHVzaChhZSk7bGV0ICQ9KGVlIT1udWxsP2VlOmopLnJhbmdlO08ucmFuZ2U9W2oucmFuZ2VbMF0sJFsxXSwkWzJdXSxsLml0ZW1zLnB1c2goTyl9ZD1lZT9lZS5yYW5nZVsyXTpZLmVuZH19bGV0IG09bz9cXFwifVxcXCI6XFxcIl1cXFwiLFtoLC4uLmJdPXIuZW5kLGc9ZDtpZihoJiZoLnNvdXJjZT09PW0pZz1oLm9mZnNldCtoLnNvdXJjZS5sZW5ndGg7ZWxzZXtsZXQgST1hWzBdLnRvVXBwZXJDYXNlKCkrYS5zdWJzdHJpbmcoMSksTj1mP2Ake0l9IG11c3QgZW5kIHdpdGggYSAke219YDpgJHtJfSBpbiBibG9jayBjb2xsZWN0aW9uIG11c3QgYmUgc3VmZmljaWVudGx5IGluZGVudGVkIGFuZCBlbmQgd2l0aCBhICR7bX1gO3MoZCxmP1xcXCJNSVNTSU5HX0NIQVJcXFwiOlxcXCJCQURfSU5ERU5UXFxcIixOKSxoJiZoLnNvdXJjZS5sZW5ndGghPT0xJiZiLnVuc2hpZnQoaCl9aWYoYi5sZW5ndGg+MCl7bGV0IEk9dXQoYixnLHQub3B0aW9ucy5zdHJpY3Qscyk7SS5jb21tZW50JiYobC5jb21tZW50P2wuY29tbWVudCs9YFxcbmArSS5jb21tZW50OmwuY29tbWVudD1JLmNvbW1lbnQpLGwucmFuZ2U9W3Iub2Zmc2V0LGcsSS5vZmZzZXRdfWVsc2UgbC5yYW5nZT1bci5vZmZzZXQsZyxnXTtyZXR1cm4gbH1mdW5jdGlvbiBlbyhuLGUsdCxyLHMsaSl7bGV0IG89dC50eXBlPT09XFxcImJsb2NrLW1hcFxcXCI/Z3UobixlLHQscixpKTp0LnR5cGU9PT1cXFwiYmxvY2stc2VxXFxcIj9idShuLGUsdCxyLGkpOkZ1KG4sZSx0LHIsaSksYT1vLmNvbnN0cnVjdG9yO3JldHVybiBzPT09XFxcIiFcXFwifHxzPT09YS50YWdOYW1lPyhvLnRhZz1hLnRhZ05hbWUsbyk6KHMmJihvLnRhZz1zKSxvKX1mdW5jdGlvbiBFdShuLGUsdCxyLHMpe3ZhciBtLGg7bGV0IGk9ci50YWcsbz1pP2UuZGlyZWN0aXZlcy50YWdOYW1lKGkuc291cmNlLGI9PnMoaSxcXFwiVEFHX1JFU09MVkVfRkFJTEVEXFxcIixiKSk6bnVsbDtpZih0LnR5cGU9PT1cXFwiYmxvY2stc2VxXFxcIil7bGV0e2FuY2hvcjpiLG5ld2xpbmVBZnRlclByb3A6Z309cixEPWImJmk/Yi5vZmZzZXQ+aS5vZmZzZXQ/YjppOmIhPW51bGw/YjppO0QmJighZ3x8Zy5vZmZzZXQ8RC5vZmZzZXQpJiZzKEQsXFxcIk1JU1NJTkdfQ0hBUlxcXCIsXFxcIk1pc3NpbmcgbmV3bGluZSBhZnRlciBibG9jayBzZXF1ZW5jZSBwcm9wc1xcXCIpfWxldCBhPXQudHlwZT09PVxcXCJibG9jay1tYXBcXFwiP1xcXCJtYXBcXFwiOnQudHlwZT09PVxcXCJibG9jay1zZXFcXFwiP1xcXCJzZXFcXFwiOnQuc3RhcnQuc291cmNlPT09XFxcIntcXFwiP1xcXCJtYXBcXFwiOlxcXCJzZXFcXFwiO2lmKCFpfHwhb3x8bz09PVxcXCIhXFxcInx8bz09PW9lLnRhZ05hbWUmJmE9PT1cXFwibWFwXFxcInx8bz09PWJlLnRhZ05hbWUmJmE9PT1cXFwic2VxXFxcIilyZXR1cm4gZW8obixlLHQscyxvKTtsZXQgdT1lLnNjaGVtYS50YWdzLmZpbmQoYj0+Yi50YWc9PT1vJiZiLmNvbGxlY3Rpb249PT1hKTtpZighdSl7bGV0IGI9ZS5zY2hlbWEua25vd25UYWdzW29dO2lmKGImJmIuY29sbGVjdGlvbj09PWEpZS5zY2hlbWEudGFncy5wdXNoKE9iamVjdC5hc3NpZ24oe30sYix7ZGVmYXVsdDohMX0pKSx1PWI7ZWxzZSByZXR1cm4gYiE9bnVsbCYmYi5jb2xsZWN0aW9uP3MoaSxcXFwiQkFEX0NPTExFQ1RJT05fVFlQRVxcXCIsYCR7Yi50YWd9IHVzZWQgZm9yICR7YX0gY29sbGVjdGlvbiwgYnV0IGV4cGVjdHMgJHtiLmNvbGxlY3Rpb259YCwhMCk6cyhpLFxcXCJUQUdfUkVTT0xWRV9GQUlMRURcXFwiLGBVbnJlc29sdmVkIHRhZzogJHtvfWAsITApLGVvKG4sZSx0LHMsbyl9bGV0IGw9ZW8obixlLHQscyxvLHUpLGY9KGg9KG09dS5yZXNvbHZlKT09bnVsbD92b2lkIDA6bS5jYWxsKHUsbCxiPT5zKGksXFxcIlRBR19SRVNPTFZFX0ZBSUxFRFxcXCIsYiksZS5vcHRpb25zKSkhPW51bGw/aDpsLGQ9SihmKT9mOm5ldyBQKGYpO3JldHVybiBkLnJhbmdlPWwucmFuZ2UsZC50YWc9byx1IT1udWxsJiZ1LmZvcm1hdCYmKGQuZm9ybWF0PXUuZm9ybWF0KSxkfWZ1bmN0aW9uIHRvKG4sZSx0KXtsZXQgcj1lLm9mZnNldCxzPW9mKGUsbi5vcHRpb25zLnN0cmljdCx0KTtpZighcylyZXR1cm57dmFsdWU6XFxcIlxcXCIsdHlwZTpudWxsLGNvbW1lbnQ6XFxcIlxcXCIscmFuZ2U6W3IscixyXX07bGV0IGk9cy5tb2RlPT09XFxcIj5cXFwiP1AuQkxPQ0tfRk9MREVEOlAuQkxPQ0tfTElURVJBTCxvPWUuc291cmNlP2FmKGUuc291cmNlKTpbXSxhPW8ubGVuZ3RoO2ZvcihsZXQgZz1vLmxlbmd0aC0xO2c+PTA7LS1nKXtsZXQgRD1vW2ddWzFdO2lmKEQ9PT1cXFwiXFxcInx8RD09PVxcXCJcXFxcclxcXCIpYT1nO2Vsc2UgYnJlYWt9aWYoYT09PTApe2xldCBnPXMuY2hvbXA9PT1cXFwiK1xcXCImJm8ubGVuZ3RoPjA/YFxcbmAucmVwZWF0KE1hdGgubWF4KDEsby5sZW5ndGgtMSkpOlxcXCJcXFwiLEQ9citzLmxlbmd0aDtyZXR1cm4gZS5zb3VyY2UmJihEKz1lLnNvdXJjZS5sZW5ndGgpLHt2YWx1ZTpnLHR5cGU6aSxjb21tZW50OnMuY29tbWVudCxyYW5nZTpbcixELERdfX1sZXQgdT1lLmluZGVudCtzLmluZGVudCxsPWUub2Zmc2V0K3MubGVuZ3RoLGY9MDtmb3IobGV0IGc9MDtnPGE7KytnKXtsZXRbRCxUXT1vW2ddO2lmKFQ9PT1cXFwiXFxcInx8VD09PVxcXCJcXFxcclxcXCIpcy5pbmRlbnQ9PT0wJiZELmxlbmd0aD51JiYodT1ELmxlbmd0aCk7ZWxzZXtELmxlbmd0aDx1JiZ0KGwrRC5sZW5ndGgsXFxcIk1JU1NJTkdfQ0hBUlxcXCIsXFxcIkJsb2NrIHNjYWxhcnMgd2l0aCBtb3JlLWluZGVudGVkIGxlYWRpbmcgZW1wdHkgbGluZXMgbXVzdCB1c2UgYW4gZXhwbGljaXQgaW5kZW50YXRpb24gaW5kaWNhdG9yXFxcIikscy5pbmRlbnQ9PT0wJiYodT1ELmxlbmd0aCksZj1nLHU9PT0wJiYhbi5hdFJvb3QmJnQobCxcXFwiQkFEX0lOREVOVFxcXCIsXFxcIkJsb2NrIHNjYWxhciB2YWx1ZXMgaW4gY29sbGVjdGlvbnMgbXVzdCBiZSBpbmRlbnRlZFxcXCIpO2JyZWFrfWwrPUQubGVuZ3RoK1QubGVuZ3RoKzF9Zm9yKGxldCBnPW8ubGVuZ3RoLTE7Zz49YTstLWcpb1tnXVswXS5sZW5ndGg+dSYmKGE9ZysxKTtsZXQgZD1cXFwiXFxcIixtPVxcXCJcXFwiLGg9ITE7Zm9yKGxldCBnPTA7ZzxmOysrZylkKz1vW2ddWzBdLnNsaWNlKHUpK2BcXG5gO2ZvcihsZXQgZz1mO2c8YTsrK2cpe2xldFtELFRdPW9bZ107bCs9RC5sZW5ndGgrVC5sZW5ndGgrMTtsZXQgST1UW1QubGVuZ3RoLTFdPT09XFxcIlxcXFxyXFxcIjtpZihJJiYoVD1ULnNsaWNlKDAsLTEpKSxUJiZELmxlbmd0aDx1KXtsZXQgeT1gQmxvY2sgc2NhbGFyIGxpbmVzIG11c3Qgbm90IGJlIGxlc3MgaW5kZW50ZWQgdGhhbiB0aGVpciAke3MuaW5kZW50P1xcXCJleHBsaWNpdCBpbmRlbnRhdGlvbiBpbmRpY2F0b3JcXFwiOlxcXCJmaXJzdCBsaW5lXFxcIn1gO3QobC1ULmxlbmd0aC0oST8yOjEpLFxcXCJCQURfSU5ERU5UXFxcIix5KSxEPVxcXCJcXFwifWk9PT1QLkJMT0NLX0xJVEVSQUw/KGQrPW0rRC5zbGljZSh1KStULG09YFxcbmApOkQubGVuZ3RoPnV8fFRbMF09PT1cXFwiXFx0XFxcIj8obT09PVxcXCIgXFxcIj9tPWBcXG5gOiFoJiZtPT09YFxcbmAmJihtPWBcXG5cXG5gKSxkKz1tK0Quc2xpY2UodSkrVCxtPWBcXG5gLGg9ITApOlQ9PT1cXFwiXFxcIj9tPT09YFxcbmA/ZCs9YFxcbmA6bT1gXFxuYDooZCs9bStULG09XFxcIiBcXFwiLGg9ITEpfXN3aXRjaChzLmNob21wKXtjYXNlXFxcIi1cXFwiOmJyZWFrO2Nhc2VcXFwiK1xcXCI6Zm9yKGxldCBnPWE7ZzxvLmxlbmd0aDsrK2cpZCs9YFxcbmArb1tnXVswXS5zbGljZSh1KTtkW2QubGVuZ3RoLTFdIT09YFxcbmAmJihkKz1gXFxuYCk7YnJlYWs7ZGVmYXVsdDpkKz1gXFxuYH1sZXQgYj1yK3MubGVuZ3RoK2Uuc291cmNlLmxlbmd0aDtyZXR1cm57dmFsdWU6ZCx0eXBlOmksY29tbWVudDpzLmNvbW1lbnQscmFuZ2U6W3IsYixiXX19ZnVuY3Rpb24gb2Yoe29mZnNldDpuLHByb3BzOmV9LHQscil7aWYoZVswXS50eXBlIT09XFxcImJsb2NrLXNjYWxhci1oZWFkZXJcXFwiKXJldHVybiByKGVbMF0sXFxcIklNUE9TU0lCTEVcXFwiLFxcXCJCbG9jayBzY2FsYXIgaGVhZGVyIG5vdCBmb3VuZFxcXCIpLG51bGw7bGV0e3NvdXJjZTpzfT1lWzBdLGk9c1swXSxvPTAsYT1cXFwiXFxcIix1PS0xO2ZvcihsZXQgbT0xO208cy5sZW5ndGg7KyttKXtsZXQgaD1zW21dO2lmKCFhJiYoaD09PVxcXCItXFxcInx8aD09PVxcXCIrXFxcIikpYT1oO2Vsc2V7bGV0IGI9TnVtYmVyKGgpOyFvJiZiP289Yjp1PT09LTEmJih1PW4rbSl9fXUhPT0tMSYmcih1LFxcXCJVTkVYUEVDVEVEX1RPS0VOXFxcIixgQmxvY2sgc2NhbGFyIGhlYWRlciBpbmNsdWRlcyBleHRyYSBjaGFyYWN0ZXJzOiAke3N9YCk7bGV0IGw9ITEsZj1cXFwiXFxcIixkPXMubGVuZ3RoO2ZvcihsZXQgbT0xO208ZS5sZW5ndGg7KyttKXtsZXQgaD1lW21dO3N3aXRjaChoLnR5cGUpe2Nhc2VcXFwic3BhY2VcXFwiOmw9ITA7Y2FzZVxcXCJuZXdsaW5lXFxcIjpkKz1oLnNvdXJjZS5sZW5ndGg7YnJlYWs7Y2FzZVxcXCJjb21tZW50XFxcIjp0JiYhbCYmcihoLFxcXCJNSVNTSU5HX0NIQVJcXFwiLFxcXCJDb21tZW50cyBtdXN0IGJlIHNlcGFyYXRlZCBmcm9tIG90aGVyIHRva2VucyBieSB3aGl0ZSBzcGFjZSBjaGFyYWN0ZXJzXFxcIiksZCs9aC5zb3VyY2UubGVuZ3RoLGY9aC5zb3VyY2Uuc3Vic3RyaW5nKDEpO2JyZWFrO2Nhc2VcXFwiZXJyb3JcXFwiOnIoaCxcXFwiVU5FWFBFQ1RFRF9UT0tFTlxcXCIsaC5tZXNzYWdlKSxkKz1oLnNvdXJjZS5sZW5ndGg7YnJlYWs7ZGVmYXVsdDp7bGV0IGI9YFVuZXhwZWN0ZWQgdG9rZW4gaW4gYmxvY2sgc2NhbGFyIGhlYWRlcjogJHtoLnR5cGV9YDtyKGgsXFxcIlVORVhQRUNURURfVE9LRU5cXFwiLGIpO2xldCBnPWguc291cmNlO2cmJnR5cGVvZiBnPT1cXFwic3RyaW5nXFxcIiYmKGQrPWcubGVuZ3RoKX19fXJldHVybnttb2RlOmksaW5kZW50Om8sY2hvbXA6YSxjb21tZW50OmYsbGVuZ3RoOmR9fWZ1bmN0aW9uIGFmKG4pe2xldCBlPW4uc3BsaXQoL1xcXFxuKCAqKS8pLHQ9ZVswXSxyPXQubWF0Y2goL14oICopLyksaT1bciE9bnVsbCYmclsxXT9bclsxXSx0LnNsaWNlKHJbMV0ubGVuZ3RoKV06W1xcXCJcXFwiLHRdXTtmb3IobGV0IG89MTtvPGUubGVuZ3RoO28rPTIpaS5wdXNoKFtlW29dLGVbbysxXV0pO3JldHVybiBpfWZ1bmN0aW9uIG5vKG4sZSx0KXtsZXR7b2Zmc2V0OnIsdHlwZTpzLHNvdXJjZTppLGVuZDpvfT1uLGEsdSxsPShtLGgsYik9PnQocittLGgsYik7c3dpdGNoKHMpe2Nhc2VcXFwic2NhbGFyXFxcIjphPVAuUExBSU4sdT11ZihpLGwpO2JyZWFrO2Nhc2VcXFwic2luZ2xlLXF1b3RlZC1zY2FsYXJcXFwiOmE9UC5RVU9URV9TSU5HTEUsdT1sZihpLGwpO2JyZWFrO2Nhc2VcXFwiZG91YmxlLXF1b3RlZC1zY2FsYXJcXFwiOmE9UC5RVU9URV9ET1VCTEUsdT1jZihpLGwpO2JyZWFrO2RlZmF1bHQ6cmV0dXJuIHQobixcXFwiVU5FWFBFQ1RFRF9UT0tFTlxcXCIsYEV4cGVjdGVkIGEgZmxvdyBzY2FsYXIgdmFsdWUsIGJ1dCBmb3VuZDogJHtzfWApLHt2YWx1ZTpcXFwiXFxcIix0eXBlOm51bGwsY29tbWVudDpcXFwiXFxcIixyYW5nZTpbcixyK2kubGVuZ3RoLHIraS5sZW5ndGhdfX1sZXQgZj1yK2kubGVuZ3RoLGQ9dXQobyxmLGUsdCk7cmV0dXJue3ZhbHVlOnUsdHlwZTphLGNvbW1lbnQ6ZC5jb21tZW50LHJhbmdlOltyLGYsZC5vZmZzZXRdfX1mdW5jdGlvbiB1ZihuLGUpe2xldCB0PVxcXCJcXFwiO3N3aXRjaChuWzBdKXtjYXNlXFxcIlxcdFxcXCI6dD1cXFwiYSB0YWIgY2hhcmFjdGVyXFxcIjticmVhaztjYXNlXFxcIixcXFwiOnQ9XFxcImZsb3cgaW5kaWNhdG9yIGNoYXJhY3RlciAsXFxcIjticmVhaztjYXNlXFxcIiVcXFwiOnQ9XFxcImRpcmVjdGl2ZSBpbmRpY2F0b3IgY2hhcmFjdGVyICVcXFwiO2JyZWFrO2Nhc2VcXFwifFxcXCI6Y2FzZVxcXCI+XFxcIjp7dD1gYmxvY2sgc2NhbGFyIGluZGljYXRvciAke25bMF19YDticmVha31jYXNlXFxcIkBcXFwiOmNhc2VcXFwiYFxcXCI6e3Q9YHJlc2VydmVkIGNoYXJhY3RlciAke25bMF19YDticmVha319cmV0dXJuIHQmJmUoMCxcXFwiQkFEX1NDQUxBUl9TVEFSVFxcXCIsYFBsYWluIHZhbHVlIGNhbm5vdCBzdGFydCB3aXRoICR7dH1gKSx3dShuKX1mdW5jdGlvbiBsZihuLGUpe3JldHVybihuW24ubGVuZ3RoLTFdIT09XFxcIidcXFwifHxuLmxlbmd0aD09PTEpJiZlKG4ubGVuZ3RoLFxcXCJNSVNTSU5HX0NIQVJcXFwiLFxcXCJNaXNzaW5nIGNsb3NpbmcgJ3F1b3RlXFxcIiksd3Uobi5zbGljZSgxLC0xKSkucmVwbGFjZSgvJycvZyxcXFwiJ1xcXCIpfWZ1bmN0aW9uIHd1KG4pe3ZhciB1O2xldCBlLHQ7dHJ5e2U9bmV3IFJlZ0V4cChgKC4qPykoPzwhWyBcXHRdKVsgXFx0XSpcXFxccj9cXG5gLFxcXCJzeVxcXCIpLHQ9bmV3IFJlZ0V4cChgWyBcXHRdKiguKj8pKD86KD88IVsgXFx0XSlbIFxcdF0qKT9cXFxccj9cXG5gLFxcXCJzeVxcXCIpfWNhdGNoKGwpe2U9bmV3IFJlZ0V4cChcXFwiKC4qPylbIFxcXFxcXFxcdF0qXFxcXFxcXFxyP1xcXFxcXFxcblxcXCIsXFxcInN5XFxcIiksdD1uZXcgUmVnRXhwKFxcXCJbIFxcXFxcXFxcdF0qKC4qPylbIFxcXFxcXFxcdF0qXFxcXFxcXFxyP1xcXFxcXFxcblxcXCIsXFxcInN5XFxcIil9bGV0IHI9ZS5leGVjKG4pO2lmKCFyKXJldHVybiBuO2xldCBzPXJbMV0saT1cXFwiIFxcXCIsbz1lLmxhc3RJbmRleDtmb3IodC5sYXN0SW5kZXg9bztyPXQuZXhlYyhuKTspclsxXT09PVxcXCJcXFwiP2k9PT1gXFxuYD9zKz1pOmk9YFxcbmA6KHMrPWkrclsxXSxpPVxcXCIgXFxcIiksbz10Lmxhc3RJbmRleDtsZXQgYT1uZXcgUmVnRXhwKFxcXCJbIFxcXFxcXFxcdF0qKC4qKVxcXCIsXFxcInN5XFxcIik7cmV0dXJuIGEubGFzdEluZGV4PW8scj1hLmV4ZWMobikscytpKygodT1yPT1udWxsP3ZvaWQgMDpyWzFdKSE9bnVsbD91OlxcXCJcXFwiKX1mdW5jdGlvbiBjZihuLGUpe2xldCB0PVxcXCJcXFwiO2ZvcihsZXQgcj0xO3I8bi5sZW5ndGgtMTsrK3Ipe2xldCBzPW5bcl07aWYoIShzPT09XFxcIlxcXFxyXFxcIiYmbltyKzFdPT09YFxcbmApKWlmKHM9PT1gXFxuYCl7bGV0e2ZvbGQ6aSxvZmZzZXQ6b309ZmYobixyKTt0Kz1pLHI9b31lbHNlIGlmKHM9PT1cXFwiXFxcXFxcXFxcXFwiKXtsZXQgaT1uWysrcl0sbz1kZltpXTtpZihvKXQrPW87ZWxzZSBpZihpPT09YFxcbmApZm9yKGk9bltyKzFdO2k9PT1cXFwiIFxcXCJ8fGk9PT1cXFwiXFx0XFxcIjspaT1uWysrcisxXTtlbHNlIGlmKGk9PT1cXFwiXFxcXHJcXFwiJiZuW3IrMV09PT1gXFxuYClmb3IoaT1uWysrcisxXTtpPT09XFxcIiBcXFwifHxpPT09XFxcIlxcdFxcXCI7KWk9blsrK3IrMV07ZWxzZSBpZihpPT09XFxcInhcXFwifHxpPT09XFxcInVcXFwifHxpPT09XFxcIlVcXFwiKXtsZXQgYT17eDoyLHU6NCxVOjh9W2ldO3QrPWhmKG4scisxLGEsZSkscis9YX1lbHNle2xldCBhPW4uc3Vic3RyKHItMSwyKTtlKHItMSxcXFwiQkFEX0RRX0VTQ0FQRVxcXCIsYEludmFsaWQgZXNjYXBlIHNlcXVlbmNlICR7YX1gKSx0Kz1hfX1lbHNlIGlmKHM9PT1cXFwiIFxcXCJ8fHM9PT1cXFwiXFx0XFxcIil7bGV0IGk9cixvPW5bcisxXTtmb3IoO289PT1cXFwiIFxcXCJ8fG89PT1cXFwiXFx0XFxcIjspbz1uWysrcisxXTtvIT09YFxcbmAmJiEobz09PVxcXCJcXFxcclxcXCImJm5bcisyXT09PWBcXG5gKSYmKHQrPXI+aT9uLnNsaWNlKGkscisxKTpzKX1lbHNlIHQrPXN9cmV0dXJuKG5bbi5sZW5ndGgtMV0hPT0nXFxcIid8fG4ubGVuZ3RoPT09MSkmJmUobi5sZW5ndGgsXFxcIk1JU1NJTkdfQ0hBUlxcXCIsJ01pc3NpbmcgY2xvc2luZyBcXFwicXVvdGUnKSx0fWZ1bmN0aW9uIGZmKG4sZSl7bGV0IHQ9XFxcIlxcXCIscj1uW2UrMV07Zm9yKDsocj09PVxcXCIgXFxcInx8cj09PVxcXCJcXHRcXFwifHxyPT09YFxcbmB8fHI9PT1cXFwiXFxcXHJcXFwiKSYmIShyPT09XFxcIlxcXFxyXFxcIiYmbltlKzJdIT09YFxcbmApOylyPT09YFxcbmAmJih0Kz1gXFxuYCksZSs9MSxyPW5bZSsxXTtyZXR1cm4gdHx8KHQ9XFxcIiBcXFwiKSx7Zm9sZDp0LG9mZnNldDplfX12YXIgZGY9ezA6XFxcIlxcXFwwXFxcIixhOlxcXCJcXFxceDA3XFxcIixiOlxcXCJcXFxcYlxcXCIsZTpcXFwiXFxcXHgxQlxcXCIsZjpcXFwiXFxcXGZcXFwiLG46YFxcbmAscjpcXFwiXFxcXHJcXFwiLHQ6XFxcIlxcdFxcXCIsdjpcXFwiXFxcXHZcXFwiLE46XFxcIlxcXFx4ODVcXFwiLF86XFxcIlxcXFx4QTBcXFwiLEw6XFxcIlxcXFx1MjAyOFxcXCIsUDpcXFwiXFxcXHUyMDI5XFxcIixcXFwiIFxcXCI6XFxcIiBcXFwiLCdcXFwiJzonXFxcIicsXFxcIi9cXFwiOlxcXCIvXFxcIixcXFwiXFxcXFxcXFxcXFwiOlxcXCJcXFxcXFxcXFxcXCIsXFxcIlxcdFxcXCI6XFxcIlxcdFxcXCJ9O2Z1bmN0aW9uIGhmKG4sZSx0LHIpe2xldCBzPW4uc3Vic3RyKGUsdCksbz1zLmxlbmd0aD09PXQmJi9eWzAtOWEtZkEtRl0rJC8udGVzdChzKT9wYXJzZUludChzLDE2KTpOYU47aWYoaXNOYU4obykpe2xldCBhPW4uc3Vic3RyKGUtMix0KzIpO3JldHVybiByKGUtMixcXFwiQkFEX0RRX0VTQ0FQRVxcXCIsYEludmFsaWQgZXNjYXBlIHNlcXVlbmNlICR7YX1gKSxhfXJldHVybiBTdHJpbmcuZnJvbUNvZGVQb2ludChvKX1mdW5jdGlvbiBybyhuLGUsdCxyKXtsZXR7dmFsdWU6cyx0eXBlOmksY29tbWVudDpvLHJhbmdlOmF9PWUudHlwZT09PVxcXCJibG9jay1zY2FsYXJcXFwiP3RvKG4sZSxyKTpubyhlLG4ub3B0aW9ucy5zdHJpY3QsciksdT10P24uZGlyZWN0aXZlcy50YWdOYW1lKHQuc291cmNlLGQ9PnIodCxcXFwiVEFHX1JFU09MVkVfRkFJTEVEXFxcIixkKSk6bnVsbCxsO24ub3B0aW9ucy5zdHJpbmdLZXlzJiZuLmF0S2V5P2w9bi5zY2hlbWFbSWVdOnU/bD1tZihuLnNjaGVtYSxzLHUsdCxyKTplLnR5cGU9PT1cXFwic2NhbGFyXFxcIj9sPXBmKG4scyxlLHIpOmw9bi5zY2hlbWFbSWVdO2xldCBmO3RyeXtsZXQgZD1sLnJlc29sdmUocyxtPT5yKHQhPW51bGw/dDplLFxcXCJUQUdfUkVTT0xWRV9GQUlMRURcXFwiLG0pLG4ub3B0aW9ucyk7Zj1LKGQpP2Q6bmV3IFAoZCl9Y2F0Y2goZCl7bGV0IG09ZCBpbnN0YW5jZW9mIEVycm9yP2QubWVzc2FnZTpTdHJpbmcoZCk7cih0IT1udWxsP3Q6ZSxcXFwiVEFHX1JFU09MVkVfRkFJTEVEXFxcIixtKSxmPW5ldyBQKHMpfXJldHVybiBmLnJhbmdlPWEsZi5zb3VyY2U9cyxpJiYoZi50eXBlPWkpLHUmJihmLnRhZz11KSxsLmZvcm1hdCYmKGYuZm9ybWF0PWwuZm9ybWF0KSxvJiYoZi5jb21tZW50PW8pLGZ9ZnVuY3Rpb24gbWYobixlLHQscixzKXt2YXIgYTtpZih0PT09XFxcIiFcXFwiKXJldHVybiBuW0llXTtsZXQgaT1bXTtmb3IobGV0IHUgb2Ygbi50YWdzKWlmKCF1LmNvbGxlY3Rpb24mJnUudGFnPT09dClpZih1LmRlZmF1bHQmJnUudGVzdClpLnB1c2godSk7ZWxzZSByZXR1cm4gdTtmb3IobGV0IHUgb2YgaSlpZigoYT11LnRlc3QpIT1udWxsJiZhLnRlc3QoZSkpcmV0dXJuIHU7bGV0IG89bi5rbm93blRhZ3NbdF07cmV0dXJuIG8mJiFvLmNvbGxlY3Rpb24/KG4udGFncy5wdXNoKE9iamVjdC5hc3NpZ24oe30sbyx7ZGVmYXVsdDohMSx0ZXN0OnZvaWQgMH0pKSxvKToocyhyLFxcXCJUQUdfUkVTT0xWRV9GQUlMRURcXFwiLGBVbnJlc29sdmVkIHRhZzogJHt0fWAsdCE9PVxcXCJ0YWc6eWFtbC5vcmcsMjAwMjpzdHJcXFwiKSxuW0llXSl9ZnVuY3Rpb24gcGYoe2F0S2V5Om4sZGlyZWN0aXZlczplLHNjaGVtYTp0fSxyLHMsaSl7dmFyIGE7bGV0IG89dC50YWdzLmZpbmQodT0+e3ZhciBsO3JldHVybih1LmRlZmF1bHQ9PT0hMHx8biYmdS5kZWZhdWx0PT09XFxcImtleVxcXCIpJiYoKGw9dS50ZXN0KT09bnVsbD92b2lkIDA6bC50ZXN0KHIpKX0pfHx0W0llXTtpZih0LmNvbXBhdCl7bGV0IHU9KGE9dC5jb21wYXQuZmluZChsPT57dmFyIGY7cmV0dXJuIGwuZGVmYXVsdCYmKChmPWwudGVzdCk9PW51bGw/dm9pZCAwOmYudGVzdChyKSl9KSkhPW51bGw/YTp0W0llXTtpZihvLnRhZyE9PXUudGFnKXtsZXQgbD1lLnRhZ1N0cmluZyhvLnRhZyksZj1lLnRhZ1N0cmluZyh1LnRhZyksZD1gVmFsdWUgbWF5IGJlIHBhcnNlZCBhcyBlaXRoZXIgJHtsfSBvciAke2Z9YDtpKHMsXFxcIlRBR19SRVNPTFZFX0ZBSUxFRFxcXCIsZCwhMCl9fXJldHVybiBvfWZ1bmN0aW9uIFR1KG4sZSx0KXtpZihlKXt0PT09bnVsbCYmKHQ9ZS5sZW5ndGgpO2ZvcihsZXQgcj10LTE7cj49MDstLXIpe2xldCBzPWVbcl07c3dpdGNoKHMudHlwZSl7Y2FzZVxcXCJzcGFjZVxcXCI6Y2FzZVxcXCJjb21tZW50XFxcIjpjYXNlXFxcIm5ld2xpbmVcXFwiOm4tPXMuc291cmNlLmxlbmd0aDtjb250aW51ZX1mb3Iocz1lWysrcl07KHM9PW51bGw/dm9pZCAwOnMudHlwZSk9PT1cXFwic3BhY2VcXFwiOyluKz1zLnNvdXJjZS5sZW5ndGgscz1lWysrcl07YnJlYWt9fXJldHVybiBufXZhciBEZj17Y29tcG9zZU5vZGU6c28sY29tcG9zZUVtcHR5Tm9kZTpBc307ZnVuY3Rpb24gc28obixlLHQscil7bGV0IHM9bi5hdEtleSx7c3BhY2VCZWZvcmU6aSxjb21tZW50Om8sYW5jaG9yOmEsdGFnOnV9PXQsbCxmPSEwO3N3aXRjaChlLnR5cGUpe2Nhc2VcXFwiYWxpYXNcXFwiOmw9eWYobixlLHIpLChhfHx1KSYmcihlLFxcXCJBTElBU19QUk9QU1xcXCIsXFxcIkFuIGFsaWFzIG5vZGUgbXVzdCBub3Qgc3BlY2lmeSBhbnkgcHJvcGVydGllc1xcXCIpO2JyZWFrO2Nhc2VcXFwic2NhbGFyXFxcIjpjYXNlXFxcInNpbmdsZS1xdW90ZWQtc2NhbGFyXFxcIjpjYXNlXFxcImRvdWJsZS1xdW90ZWQtc2NhbGFyXFxcIjpjYXNlXFxcImJsb2NrLXNjYWxhclxcXCI6bD1ybyhuLGUsdSxyKSxhJiYobC5hbmNob3I9YS5zb3VyY2Uuc3Vic3RyaW5nKDEpKTticmVhaztjYXNlXFxcImJsb2NrLW1hcFxcXCI6Y2FzZVxcXCJibG9jay1zZXFcXFwiOmNhc2VcXFwiZmxvdy1jb2xsZWN0aW9uXFxcIjpsPUV1KERmLG4sZSx0LHIpLGEmJihsLmFuY2hvcj1hLnNvdXJjZS5zdWJzdHJpbmcoMSkpO2JyZWFrO2RlZmF1bHQ6e2xldCBkPWUudHlwZT09PVxcXCJlcnJvclxcXCI/ZS5tZXNzYWdlOmBVbnN1cHBvcnRlZCB0b2tlbiAodHlwZTogJHtlLnR5cGV9KWA7cihlLFxcXCJVTkVYUEVDVEVEX1RPS0VOXFxcIixkKSxsPUFzKG4sZS5vZmZzZXQsdm9pZCAwLG51bGwsdCxyKSxmPSExfX1yZXR1cm4gYSYmbC5hbmNob3I9PT1cXFwiXFxcIiYmcihhLFxcXCJCQURfQUxJQVNcXFwiLFxcXCJBbmNob3IgY2Fubm90IGJlIGFuIGVtcHR5IHN0cmluZ1xcXCIpLHMmJm4ub3B0aW9ucy5zdHJpbmdLZXlzJiYoIUsobCl8fHR5cGVvZiBsLnZhbHVlIT1cXFwic3RyaW5nXFxcInx8bC50YWcmJmwudGFnIT09XFxcInRhZzp5YW1sLm9yZywyMDAyOnN0clxcXCIpJiZyKHUhPW51bGw/dTplLFxcXCJOT05fU1RSSU5HX0tFWVxcXCIsXFxcIldpdGggc3RyaW5nS2V5cywgYWxsIGtleXMgbXVzdCBiZSBzdHJpbmdzXFxcIiksaSYmKGwuc3BhY2VCZWZvcmU9ITApLG8mJihlLnR5cGU9PT1cXFwic2NhbGFyXFxcIiYmZS5zb3VyY2U9PT1cXFwiXFxcIj9sLmNvbW1lbnQ9bzpsLmNvbW1lbnRCZWZvcmU9byksbi5vcHRpb25zLmtlZXBTb3VyY2VUb2tlbnMmJmYmJihsLnNyY1Rva2VuPWUpLGx9ZnVuY3Rpb24gQXMobixlLHQscix7c3BhY2VCZWZvcmU6cyxjb21tZW50OmksYW5jaG9yOm8sdGFnOmEsZW5kOnV9LGwpe2xldCBmPXt0eXBlOlxcXCJzY2FsYXJcXFwiLG9mZnNldDpUdShlLHQsciksaW5kZW50Oi0xLHNvdXJjZTpcXFwiXFxcIn0sZD1ybyhuLGYsYSxsKTtyZXR1cm4gbyYmKGQuYW5jaG9yPW8uc291cmNlLnN1YnN0cmluZygxKSxkLmFuY2hvcj09PVxcXCJcXFwiJiZsKG8sXFxcIkJBRF9BTElBU1xcXCIsXFxcIkFuY2hvciBjYW5ub3QgYmUgYW4gZW1wdHkgc3RyaW5nXFxcIikpLHMmJihkLnNwYWNlQmVmb3JlPSEwKSxpJiYoZC5jb21tZW50PWksZC5yYW5nZVsyXT11KSxkfWZ1bmN0aW9uIHlmKHtvcHRpb25zOm59LHtvZmZzZXQ6ZSxzb3VyY2U6dCxlbmQ6cn0scyl7bGV0IGk9bmV3IEV0KHQuc3Vic3RyaW5nKDEpKTtpLnNvdXJjZT09PVxcXCJcXFwiJiZzKGUsXFxcIkJBRF9BTElBU1xcXCIsXFxcIkFsaWFzIGNhbm5vdCBiZSBhbiBlbXB0eSBzdHJpbmdcXFwiKSxpLnNvdXJjZS5lbmRzV2l0aChcXFwiOlxcXCIpJiZzKGUrdC5sZW5ndGgtMSxcXFwiQkFEX0FMSUFTXFxcIixcXFwiQWxpYXMgZW5kaW5nIGluIDogaXMgYW1iaWd1b3VzXFxcIiwhMCk7bGV0IG89ZSt0Lmxlbmd0aCxhPXV0KHIsbyxuLnN0cmljdCxzKTtyZXR1cm4gaS5yYW5nZT1bZSxvLGEub2Zmc2V0XSxhLmNvbW1lbnQmJihpLmNvbW1lbnQ9YS5jb21tZW50KSxpfWZ1bmN0aW9uIFN1KG4sZSx7b2Zmc2V0OnQsc3RhcnQ6cix2YWx1ZTpzLGVuZDppfSxvKXtsZXQgYT1PYmplY3QuYXNzaWduKHtfZGlyZWN0aXZlczplfSxuKSx1PW5ldyBOdCh2b2lkIDAsYSksbD17YXRLZXk6ITEsYXRSb290OiEwLGRpcmVjdGl2ZXM6dS5kaXJlY3RpdmVzLG9wdGlvbnM6dS5vcHRpb25zLHNjaGVtYTp1LnNjaGVtYX0sZj1hdChyLHtpbmRpY2F0b3I6XFxcImRvYy1zdGFydFxcXCIsbmV4dDpzIT1udWxsP3M6aT09bnVsbD92b2lkIDA6aVswXSxvZmZzZXQ6dCxvbkVycm9yOm8scGFyZW50SW5kZW50OjAsc3RhcnRPbk5ld2xpbmU6ITB9KTtmLmZvdW5kJiYodS5kaXJlY3RpdmVzLmRvY1N0YXJ0PSEwLHMmJihzLnR5cGU9PT1cXFwiYmxvY2stbWFwXFxcInx8cy50eXBlPT09XFxcImJsb2NrLXNlcVxcXCIpJiYhZi5oYXNOZXdsaW5lJiZvKGYuZW5kLFxcXCJNSVNTSU5HX0NIQVJcXFwiLFxcXCJCbG9jayBjb2xsZWN0aW9uIGNhbm5vdCBzdGFydCBvbiBzYW1lIGxpbmUgd2l0aCBkaXJlY3RpdmVzLWVuZCBtYXJrZXJcXFwiKSksdS5jb250ZW50cz1zP3NvKGwscyxmLG8pOkFzKGwsZi5lbmQscixudWxsLGYsbyk7bGV0IGQ9dS5jb250ZW50cy5yYW5nZVsyXSxtPXV0KGksZCwhMSxvKTtyZXR1cm4gbS5jb21tZW50JiYodS5jb21tZW50PW0uY29tbWVudCksdS5yYW5nZT1bdCxkLG0ub2Zmc2V0XSx1fWZ1bmN0aW9uIE9yKG4pe2lmKHR5cGVvZiBuPT1cXFwibnVtYmVyXFxcIilyZXR1cm5bbixuKzFdO2lmKEFycmF5LmlzQXJyYXkobikpcmV0dXJuIG4ubGVuZ3RoPT09Mj9uOltuWzBdLG5bMV1dO2xldHtvZmZzZXQ6ZSxzb3VyY2U6dH09bjtyZXR1cm5bZSxlKyh0eXBlb2YgdD09XFxcInN0cmluZ1xcXCI/dC5sZW5ndGg6MSldfWZ1bmN0aW9uIGt1KG4pe3ZhciBzO2xldCBlPVxcXCJcXFwiLHQ9ITEscj0hMTtmb3IobGV0IGk9MDtpPG4ubGVuZ3RoOysraSl7bGV0IG89bltpXTtzd2l0Y2gob1swXSl7Y2FzZVxcXCIjXFxcIjplKz0oZT09PVxcXCJcXFwiP1xcXCJcXFwiOnI/YFxcblxcbmA6YFxcbmApKyhvLnN1YnN0cmluZygxKXx8XFxcIiBcXFwiKSx0PSEwLHI9ITE7YnJlYWs7Y2FzZVxcXCIlXFxcIjooKHM9bltpKzFdKT09bnVsbD92b2lkIDA6c1swXSkhPT1cXFwiI1xcXCImJihpKz0xKSx0PSExO2JyZWFrO2RlZmF1bHQ6dHx8KHI9ITApLHQ9ITF9fXJldHVybntjb21tZW50OmUsYWZ0ZXJFbXB0eUxpbmU6cn19dmFyIElyPWNsYXNze2NvbnN0cnVjdG9yKGU9e30pe3RoaXMuZG9jPW51bGwsdGhpcy5hdERpcmVjdGl2ZXM9ITEsdGhpcy5wcmVsdWRlPVtdLHRoaXMuZXJyb3JzPVtdLHRoaXMud2FybmluZ3M9W10sdGhpcy5vbkVycm9yPSh0LHIscyxpKT0+e2xldCBvPU9yKHQpO2k/dGhpcy53YXJuaW5ncy5wdXNoKG5ldyB2cihvLHIscykpOnRoaXMuZXJyb3JzLnB1c2gobmV3IFFlKG8scixzKSl9LHRoaXMuZGlyZWN0aXZlcz1uZXcgaXQoe3ZlcnNpb246ZS52ZXJzaW9ufHxcXFwiMS4yXFxcIn0pLHRoaXMub3B0aW9ucz1lfWRlY29yYXRlKGUsdCl7bGV0e2NvbW1lbnQ6cixhZnRlckVtcHR5TGluZTpzfT1rdSh0aGlzLnByZWx1ZGUpO2lmKHIpe2xldCBpPWUuY29udGVudHM7aWYodCllLmNvbW1lbnQ9ZS5jb21tZW50P2Ake2UuY29tbWVudH1cXG4ke3J9YDpyO2Vsc2UgaWYoc3x8ZS5kaXJlY3RpdmVzLmRvY1N0YXJ0fHwhaSllLmNvbW1lbnRCZWZvcmU9cjtlbHNlIGlmKFooaSkmJiFpLmZsb3cmJmkuaXRlbXMubGVuZ3RoPjApe2xldCBvPWkuaXRlbXNbMF07SChvKSYmKG89by5rZXkpO2xldCBhPW8uY29tbWVudEJlZm9yZTtvLmNvbW1lbnRCZWZvcmU9YT9gJHtyfVxcbiR7YX1gOnJ9ZWxzZXtsZXQgbz1pLmNvbW1lbnRCZWZvcmU7aS5jb21tZW50QmVmb3JlPW8/YCR7cn1cXG4ke299YDpyfX10PyhBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShlLmVycm9ycyx0aGlzLmVycm9ycyksQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkoZS53YXJuaW5ncyx0aGlzLndhcm5pbmdzKSk6KGUuZXJyb3JzPXRoaXMuZXJyb3JzLGUud2FybmluZ3M9dGhpcy53YXJuaW5ncyksdGhpcy5wcmVsdWRlPVtdLHRoaXMuZXJyb3JzPVtdLHRoaXMud2FybmluZ3M9W119c3RyZWFtSW5mbygpe3JldHVybntjb21tZW50Omt1KHRoaXMucHJlbHVkZSkuY29tbWVudCxkaXJlY3RpdmVzOnRoaXMuZGlyZWN0aXZlcyxlcnJvcnM6dGhpcy5lcnJvcnMsd2FybmluZ3M6dGhpcy53YXJuaW5nc319KmNvbXBvc2UoZSx0PSExLHI9LTEpe2ZvcihsZXQgcyBvZiBlKXlpZWxkKlModGhpcy5uZXh0KHMpKTt5aWVsZCpTKHRoaXMuZW5kKHQscikpfSpuZXh0KGUpe3N3aXRjaChlLnR5cGUpe2Nhc2VcXFwiZGlyZWN0aXZlXFxcIjp0aGlzLmRpcmVjdGl2ZXMuYWRkKGUuc291cmNlLCh0LHIscyk9PntsZXQgaT1PcihlKTtpWzBdKz10LHRoaXMub25FcnJvcihpLFxcXCJCQURfRElSRUNUSVZFXFxcIixyLHMpfSksdGhpcy5wcmVsdWRlLnB1c2goZS5zb3VyY2UpLHRoaXMuYXREaXJlY3RpdmVzPSEwO2JyZWFrO2Nhc2VcXFwiZG9jdW1lbnRcXFwiOntsZXQgdD1TdSh0aGlzLm9wdGlvbnMsdGhpcy5kaXJlY3RpdmVzLGUsdGhpcy5vbkVycm9yKTt0aGlzLmF0RGlyZWN0aXZlcyYmIXQuZGlyZWN0aXZlcy5kb2NTdGFydCYmdGhpcy5vbkVycm9yKGUsXFxcIk1JU1NJTkdfQ0hBUlxcXCIsXFxcIk1pc3NpbmcgZGlyZWN0aXZlcy1lbmQvZG9jLXN0YXJ0IGluZGljYXRvciBsaW5lXFxcIiksdGhpcy5kZWNvcmF0ZSh0LCExKSx0aGlzLmRvYyYmKHlpZWxkIHRoaXMuZG9jKSx0aGlzLmRvYz10LHRoaXMuYXREaXJlY3RpdmVzPSExO2JyZWFrfWNhc2VcXFwiYnl0ZS1vcmRlci1tYXJrXFxcIjpjYXNlXFxcInNwYWNlXFxcIjpicmVhaztjYXNlXFxcImNvbW1lbnRcXFwiOmNhc2VcXFwibmV3bGluZVxcXCI6dGhpcy5wcmVsdWRlLnB1c2goZS5zb3VyY2UpO2JyZWFrO2Nhc2VcXFwiZXJyb3JcXFwiOntsZXQgdD1lLnNvdXJjZT9gJHtlLm1lc3NhZ2V9OiAke0pTT04uc3RyaW5naWZ5KGUuc291cmNlKX1gOmUubWVzc2FnZSxyPW5ldyBRZShPcihlKSxcXFwiVU5FWFBFQ1RFRF9UT0tFTlxcXCIsdCk7dGhpcy5hdERpcmVjdGl2ZXN8fCF0aGlzLmRvYz90aGlzLmVycm9ycy5wdXNoKHIpOnRoaXMuZG9jLmVycm9ycy5wdXNoKHIpO2JyZWFrfWNhc2VcXFwiZG9jLWVuZFxcXCI6e2lmKCF0aGlzLmRvYyl7bGV0IHI9XFxcIlVuZXhwZWN0ZWQgZG9jLWVuZCB3aXRob3V0IHByZWNlZGluZyBkb2N1bWVudFxcXCI7dGhpcy5lcnJvcnMucHVzaChuZXcgUWUoT3IoZSksXFxcIlVORVhQRUNURURfVE9LRU5cXFwiLHIpKTticmVha310aGlzLmRvYy5kaXJlY3RpdmVzLmRvY0VuZD0hMDtsZXQgdD11dChlLmVuZCxlLm9mZnNldCtlLnNvdXJjZS5sZW5ndGgsdGhpcy5kb2Mub3B0aW9ucy5zdHJpY3QsdGhpcy5vbkVycm9yKTtpZih0aGlzLmRlY29yYXRlKHRoaXMuZG9jLCEwKSx0LmNvbW1lbnQpe2xldCByPXRoaXMuZG9jLmNvbW1lbnQ7dGhpcy5kb2MuY29tbWVudD1yP2Ake3J9XFxuJHt0LmNvbW1lbnR9YDp0LmNvbW1lbnR9dGhpcy5kb2MucmFuZ2VbMl09dC5vZmZzZXQ7YnJlYWt9ZGVmYXVsdDp0aGlzLmVycm9ycy5wdXNoKG5ldyBRZShPcihlKSxcXFwiVU5FWFBFQ1RFRF9UT0tFTlxcXCIsYFVuc3VwcG9ydGVkIHRva2VuICR7ZS50eXBlfWApKX19KmVuZChlPSExLHQ9LTEpe2lmKHRoaXMuZG9jKXRoaXMuZGVjb3JhdGUodGhpcy5kb2MsITApLHlpZWxkIHRoaXMuZG9jLHRoaXMuZG9jPW51bGw7ZWxzZSBpZihlKXtsZXQgcj1PYmplY3QuYXNzaWduKHtfZGlyZWN0aXZlczp0aGlzLmRpcmVjdGl2ZXN9LHRoaXMub3B0aW9ucykscz1uZXcgTnQodm9pZCAwLHIpO3RoaXMuYXREaXJlY3RpdmVzJiZ0aGlzLm9uRXJyb3IodCxcXFwiTUlTU0lOR19DSEFSXFxcIixcXFwiTWlzc2luZyBkaXJlY3RpdmVzLWVuZCBpbmRpY2F0b3IgbGluZVxcXCIpLHMucmFuZ2U9WzAsdCx0XSx0aGlzLmRlY29yYXRlKHMsITEpLHlpZWxkIHN9fX07dmFyIGlvPVN5bWJvbChcXFwiYnJlYWsgdmlzaXRcXFwiKSxnZj1TeW1ib2woXFxcInNraXAgY2hpbGRyZW5cXFwiKSxDdT1TeW1ib2woXFxcInJlbW92ZSBpdGVtXFxcIik7ZnVuY3Rpb24gSnQobixlKXtcXFwidHlwZVxcXCJpbiBuJiZuLnR5cGU9PT1cXFwiZG9jdW1lbnRcXFwiJiYobj17c3RhcnQ6bi5zdGFydCx2YWx1ZTpuLnZhbHVlfSksdnUoT2JqZWN0LmZyZWV6ZShbXSksbixlKX1KdC5CUkVBSz1pbztKdC5TS0lQPWdmO0p0LlJFTU9WRT1DdTtKdC5pdGVtQXRQYXRoPShuLGUpPT57bGV0IHQ9bjtmb3IobGV0W3Isc11vZiBlKXtsZXQgaT10PT1udWxsP3ZvaWQgMDp0W3JdO2lmKGkmJlxcXCJpdGVtc1xcXCJpbiBpKXQ9aS5pdGVtc1tzXTtlbHNlIHJldHVybn1yZXR1cm4gdH07SnQucGFyZW50Q29sbGVjdGlvbj0obixlKT0+e2xldCB0PUp0Lml0ZW1BdFBhdGgobixlLnNsaWNlKDAsLTEpKSxyPWVbZS5sZW5ndGgtMV1bMF0scz10PT1udWxsP3ZvaWQgMDp0W3JdO2lmKHMmJlxcXCJpdGVtc1xcXCJpbiBzKXJldHVybiBzO3Rocm93IG5ldyBFcnJvcihcXFwiUGFyZW50IGNvbGxlY3Rpb24gbm90IGZvdW5kXFxcIil9O2Z1bmN0aW9uIHZ1KG4sZSx0KXtsZXQgcj10KGUsbik7aWYodHlwZW9mIHI9PVxcXCJzeW1ib2xcXFwiKXJldHVybiByO2ZvcihsZXQgcyBvZltcXFwia2V5XFxcIixcXFwidmFsdWVcXFwiXSl7bGV0IGk9ZVtzXTtpZihpJiZcXFwiaXRlbXNcXFwiaW4gaSl7Zm9yKGxldCBvPTA7bzxpLml0ZW1zLmxlbmd0aDsrK28pe2xldCBhPXZ1KE9iamVjdC5mcmVlemUobi5jb25jYXQoW1tzLG9dXSkpLGkuaXRlbXNbb10sdCk7aWYodHlwZW9mIGE9PVxcXCJudW1iZXJcXFwiKW89YS0xO2Vsc2V7aWYoYT09PWlvKXJldHVybiBpbzthPT09Q3UmJihpLml0ZW1zLnNwbGljZShvLDEpLG8tPTEpfX10eXBlb2Ygcj09XFxcImZ1bmN0aW9uXFxcIiYmcz09PVxcXCJrZXlcXFwiJiYocj1yKGUsbikpfX1yZXR1cm4gdHlwZW9mIHI9PVxcXCJmdW5jdGlvblxcXCI/cihlLG4pOnJ9dmFyIG9vPVxcXCJcXFxcdUZFRkZcXFwiLGFvPVxcXCJcXHUwMDAyXFxcIix1bz1cXFwiXFx1MDAxOFxcXCIsTXM9XFxcIlxcdTAwMWZcXFwiO2Z1bmN0aW9uIHh1KG4pe3N3aXRjaChuKXtjYXNlIG9vOnJldHVyblxcXCJieXRlLW9yZGVyLW1hcmtcXFwiO2Nhc2UgYW86cmV0dXJuXFxcImRvYy1tb2RlXFxcIjtjYXNlIHVvOnJldHVyblxcXCJmbG93LWVycm9yLWVuZFxcXCI7Y2FzZSBNczpyZXR1cm5cXFwic2NhbGFyXFxcIjtjYXNlXFxcIi0tLVxcXCI6cmV0dXJuXFxcImRvYy1zdGFydFxcXCI7Y2FzZVxcXCIuLi5cXFwiOnJldHVyblxcXCJkb2MtZW5kXFxcIjtjYXNlXFxcIlxcXCI6Y2FzZWBcXG5gOmNhc2VgXFxcXHJcXG5gOnJldHVyblxcXCJuZXdsaW5lXFxcIjtjYXNlXFxcIi1cXFwiOnJldHVyblxcXCJzZXEtaXRlbS1pbmRcXFwiO2Nhc2VcXFwiP1xcXCI6cmV0dXJuXFxcImV4cGxpY2l0LWtleS1pbmRcXFwiO2Nhc2VcXFwiOlxcXCI6cmV0dXJuXFxcIm1hcC12YWx1ZS1pbmRcXFwiO2Nhc2VcXFwie1xcXCI6cmV0dXJuXFxcImZsb3ctbWFwLXN0YXJ0XFxcIjtjYXNlXFxcIn1cXFwiOnJldHVyblxcXCJmbG93LW1hcC1lbmRcXFwiO2Nhc2VcXFwiW1xcXCI6cmV0dXJuXFxcImZsb3ctc2VxLXN0YXJ0XFxcIjtjYXNlXFxcIl1cXFwiOnJldHVyblxcXCJmbG93LXNlcS1lbmRcXFwiO2Nhc2VcXFwiLFxcXCI6cmV0dXJuXFxcImNvbW1hXFxcIn1zd2l0Y2goblswXSl7Y2FzZVxcXCIgXFxcIjpjYXNlXFxcIlxcdFxcXCI6cmV0dXJuXFxcInNwYWNlXFxcIjtjYXNlXFxcIiNcXFwiOnJldHVyblxcXCJjb21tZW50XFxcIjtjYXNlXFxcIiVcXFwiOnJldHVyblxcXCJkaXJlY3RpdmUtbGluZVxcXCI7Y2FzZVxcXCIqXFxcIjpyZXR1cm5cXFwiYWxpYXNcXFwiO2Nhc2VcXFwiJlxcXCI6cmV0dXJuXFxcImFuY2hvclxcXCI7Y2FzZVxcXCIhXFxcIjpyZXR1cm5cXFwidGFnXFxcIjtjYXNlXFxcIidcXFwiOnJldHVyblxcXCJzaW5nbGUtcXVvdGVkLXNjYWxhclxcXCI7Y2FzZSdcXFwiJzpyZXR1cm5cXFwiZG91YmxlLXF1b3RlZC1zY2FsYXJcXFwiO2Nhc2VcXFwifFxcXCI6Y2FzZVxcXCI+XFxcIjpyZXR1cm5cXFwiYmxvY2stc2NhbGFyLWhlYWRlclxcXCJ9cmV0dXJuIG51bGx9ZnVuY3Rpb24gWGUobil7c3dpdGNoKG4pe2Nhc2Ugdm9pZCAwOmNhc2VcXFwiIFxcXCI6Y2FzZWBcXG5gOmNhc2VcXFwiXFxcXHJcXFwiOmNhc2VcXFwiXFx0XFxcIjpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfX12YXIgT3U9bmV3IFNldChcXFwiMDEyMzQ1Njc4OUFCQ0RFRmFiY2RlZlxcXCIpLEZmPW5ldyBTZXQoXFxcIjAxMjM0NTY3ODlBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6LSM7Lz86QCY9KyRfLiF+KicoKVxcXCIpLF9zPW5ldyBTZXQoXFxcIixbXXt9XFxcIiksRWY9bmV3IFNldChgICxbXXt9XFxuXFxcXHJcXHRgKSxsbz1uPT4hbnx8RWYuaGFzKG4pLExyPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5hdEVuZD0hMSx0aGlzLmJsb2NrU2NhbGFySW5kZW50PS0xLHRoaXMuYmxvY2tTY2FsYXJLZWVwPSExLHRoaXMuYnVmZmVyPVxcXCJcXFwiLHRoaXMuZmxvd0tleT0hMSx0aGlzLmZsb3dMZXZlbD0wLHRoaXMuaW5kZW50TmV4dD0wLHRoaXMuaW5kZW50VmFsdWU9MCx0aGlzLmxpbmVFbmRQb3M9bnVsbCx0aGlzLm5leHQ9bnVsbCx0aGlzLnBvcz0wfSpsZXgoZSx0PSExKXt2YXIgcztpZihlKXtpZih0eXBlb2YgZSE9XFxcInN0cmluZ1xcXCIpdGhyb3cgVHlwZUVycm9yKFxcXCJzb3VyY2UgaXMgbm90IGEgc3RyaW5nXFxcIik7dGhpcy5idWZmZXI9dGhpcy5idWZmZXI/dGhpcy5idWZmZXIrZTplLHRoaXMubGluZUVuZFBvcz1udWxsfXRoaXMuYXRFbmQ9IXQ7bGV0IHI9KHM9dGhpcy5uZXh0KSE9bnVsbD9zOlxcXCJzdHJlYW1cXFwiO2Zvcig7ciYmKHR8fHRoaXMuaGFzQ2hhcnMoMSkpOylyPXlpZWxkKlModGhpcy5wYXJzZU5leHQocikpfWF0TGluZUVuZCgpe2xldCBlPXRoaXMucG9zLHQ9dGhpcy5idWZmZXJbZV07Zm9yKDt0PT09XFxcIiBcXFwifHx0PT09XFxcIlxcdFxcXCI7KXQ9dGhpcy5idWZmZXJbKytlXTtyZXR1cm4hdHx8dD09PVxcXCIjXFxcInx8dD09PWBcXG5gPyEwOnQ9PT1cXFwiXFxcXHJcXFwiP3RoaXMuYnVmZmVyW2UrMV09PT1gXFxuYDohMX1jaGFyQXQoZSl7cmV0dXJuIHRoaXMuYnVmZmVyW3RoaXMucG9zK2VdfWNvbnRpbnVlU2NhbGFyKGUpe2xldCB0PXRoaXMuYnVmZmVyW2VdO2lmKHRoaXMuaW5kZW50TmV4dD4wKXtsZXQgcj0wO2Zvcig7dD09PVxcXCIgXFxcIjspdD10aGlzLmJ1ZmZlclsrK3IrZV07aWYodD09PVxcXCJcXFxcclxcXCIpe2xldCBzPXRoaXMuYnVmZmVyW3IrZSsxXTtpZihzPT09YFxcbmB8fCFzJiYhdGhpcy5hdEVuZClyZXR1cm4gZStyKzF9cmV0dXJuIHQ9PT1gXFxuYHx8cj49dGhpcy5pbmRlbnROZXh0fHwhdCYmIXRoaXMuYXRFbmQ/ZStyOi0xfWlmKHQ9PT1cXFwiLVxcXCJ8fHQ9PT1cXFwiLlxcXCIpe2xldCByPXRoaXMuYnVmZmVyLnN1YnN0cihlLDMpO2lmKChyPT09XFxcIi0tLVxcXCJ8fHI9PT1cXFwiLi4uXFxcIikmJlhlKHRoaXMuYnVmZmVyW2UrM10pKXJldHVybi0xfXJldHVybiBlfWdldExpbmUoKXtsZXQgZT10aGlzLmxpbmVFbmRQb3M7cmV0dXJuKHR5cGVvZiBlIT1cXFwibnVtYmVyXFxcInx8ZSE9PS0xJiZlPHRoaXMucG9zKSYmKGU9dGhpcy5idWZmZXIuaW5kZXhPZihgXFxuYCx0aGlzLnBvcyksdGhpcy5saW5lRW5kUG9zPWUpLGU9PT0tMT90aGlzLmF0RW5kP3RoaXMuYnVmZmVyLnN1YnN0cmluZyh0aGlzLnBvcyk6bnVsbDoodGhpcy5idWZmZXJbZS0xXT09PVxcXCJcXFxcclxcXCImJihlLT0xKSx0aGlzLmJ1ZmZlci5zdWJzdHJpbmcodGhpcy5wb3MsZSkpfWhhc0NoYXJzKGUpe3JldHVybiB0aGlzLnBvcytlPD10aGlzLmJ1ZmZlci5sZW5ndGh9c2V0TmV4dChlKXtyZXR1cm4gdGhpcy5idWZmZXI9dGhpcy5idWZmZXIuc3Vic3RyaW5nKHRoaXMucG9zKSx0aGlzLnBvcz0wLHRoaXMubGluZUVuZFBvcz1udWxsLHRoaXMubmV4dD1lLG51bGx9cGVlayhlKXtyZXR1cm4gdGhpcy5idWZmZXIuc3Vic3RyKHRoaXMucG9zLGUpfSpwYXJzZU5leHQoZSl7c3dpdGNoKGUpe2Nhc2VcXFwic3RyZWFtXFxcIjpyZXR1cm4geWllbGQqUyh0aGlzLnBhcnNlU3RyZWFtKCkpO2Nhc2VcXFwibGluZS1zdGFydFxcXCI6cmV0dXJuIHlpZWxkKlModGhpcy5wYXJzZUxpbmVTdGFydCgpKTtjYXNlXFxcImJsb2NrLXN0YXJ0XFxcIjpyZXR1cm4geWllbGQqUyh0aGlzLnBhcnNlQmxvY2tTdGFydCgpKTtjYXNlXFxcImRvY1xcXCI6cmV0dXJuIHlpZWxkKlModGhpcy5wYXJzZURvY3VtZW50KCkpO2Nhc2VcXFwiZmxvd1xcXCI6cmV0dXJuIHlpZWxkKlModGhpcy5wYXJzZUZsb3dDb2xsZWN0aW9uKCkpO2Nhc2VcXFwicXVvdGVkLXNjYWxhclxcXCI6cmV0dXJuIHlpZWxkKlModGhpcy5wYXJzZVF1b3RlZFNjYWxhcigpKTtjYXNlXFxcImJsb2NrLXNjYWxhclxcXCI6cmV0dXJuIHlpZWxkKlModGhpcy5wYXJzZUJsb2NrU2NhbGFyKCkpO2Nhc2VcXFwicGxhaW4tc2NhbGFyXFxcIjpyZXR1cm4geWllbGQqUyh0aGlzLnBhcnNlUGxhaW5TY2FsYXIoKSl9fSpwYXJzZVN0cmVhbSgpe2xldCBlPXRoaXMuZ2V0TGluZSgpO2lmKGU9PT1udWxsKXJldHVybiB0aGlzLnNldE5leHQoXFxcInN0cmVhbVxcXCIpO2lmKGVbMF09PT1vbyYmKHlpZWxkKlModGhpcy5wdXNoQ291bnQoMSkpLGU9ZS5zdWJzdHJpbmcoMSkpLGVbMF09PT1cXFwiJVxcXCIpe2xldCB0PWUubGVuZ3RoLHI9ZS5pbmRleE9mKFxcXCIjXFxcIik7Zm9yKDtyIT09LTE7KXtsZXQgaT1lW3ItMV07aWYoaT09PVxcXCIgXFxcInx8aT09PVxcXCJcXHRcXFwiKXt0PXItMTticmVha31lbHNlIHI9ZS5pbmRleE9mKFxcXCIjXFxcIixyKzEpfWZvcig7Oyl7bGV0IGk9ZVt0LTFdO2lmKGk9PT1cXFwiIFxcXCJ8fGk9PT1cXFwiXFx0XFxcIil0LT0xO2Vsc2UgYnJlYWt9bGV0IHM9KHlpZWxkKlModGhpcy5wdXNoQ291bnQodCkpKSsoeWllbGQqUyh0aGlzLnB1c2hTcGFjZXMoITApKSk7cmV0dXJuIHlpZWxkKlModGhpcy5wdXNoQ291bnQoZS5sZW5ndGgtcykpLHRoaXMucHVzaE5ld2xpbmUoKSxcXFwic3RyZWFtXFxcIn1pZih0aGlzLmF0TGluZUVuZCgpKXtsZXQgdD15aWVsZCpTKHRoaXMucHVzaFNwYWNlcyghMCkpO3JldHVybiB5aWVsZCpTKHRoaXMucHVzaENvdW50KGUubGVuZ3RoLXQpKSx5aWVsZCpTKHRoaXMucHVzaE5ld2xpbmUoKSksXFxcInN0cmVhbVxcXCJ9cmV0dXJuIHlpZWxkIGFvLHlpZWxkKlModGhpcy5wYXJzZUxpbmVTdGFydCgpKX0qcGFyc2VMaW5lU3RhcnQoKXtsZXQgZT10aGlzLmNoYXJBdCgwKTtpZighZSYmIXRoaXMuYXRFbmQpcmV0dXJuIHRoaXMuc2V0TmV4dChcXFwibGluZS1zdGFydFxcXCIpO2lmKGU9PT1cXFwiLVxcXCJ8fGU9PT1cXFwiLlxcXCIpe2lmKCF0aGlzLmF0RW5kJiYhdGhpcy5oYXNDaGFycyg0KSlyZXR1cm4gdGhpcy5zZXROZXh0KFxcXCJsaW5lLXN0YXJ0XFxcIik7bGV0IHQ9dGhpcy5wZWVrKDMpO2lmKCh0PT09XFxcIi0tLVxcXCJ8fHQ9PT1cXFwiLi4uXFxcIikmJlhlKHRoaXMuY2hhckF0KDMpKSlyZXR1cm4geWllbGQqUyh0aGlzLnB1c2hDb3VudCgzKSksdGhpcy5pbmRlbnRWYWx1ZT0wLHRoaXMuaW5kZW50TmV4dD0wLHQ9PT1cXFwiLS0tXFxcIj9cXFwiZG9jXFxcIjpcXFwic3RyZWFtXFxcIn1yZXR1cm4gdGhpcy5pbmRlbnRWYWx1ZT15aWVsZCpTKHRoaXMucHVzaFNwYWNlcyghMSkpLHRoaXMuaW5kZW50TmV4dD50aGlzLmluZGVudFZhbHVlJiYhWGUodGhpcy5jaGFyQXQoMSkpJiYodGhpcy5pbmRlbnROZXh0PXRoaXMuaW5kZW50VmFsdWUpLHlpZWxkKlModGhpcy5wYXJzZUJsb2NrU3RhcnQoKSl9KnBhcnNlQmxvY2tTdGFydCgpe2xldFtlLHRdPXRoaXMucGVlaygyKTtpZighdCYmIXRoaXMuYXRFbmQpcmV0dXJuIHRoaXMuc2V0TmV4dChcXFwiYmxvY2stc3RhcnRcXFwiKTtpZigoZT09PVxcXCItXFxcInx8ZT09PVxcXCI/XFxcInx8ZT09PVxcXCI6XFxcIikmJlhlKHQpKXtsZXQgcj0oeWllbGQqUyh0aGlzLnB1c2hDb3VudCgxKSkpKyh5aWVsZCpTKHRoaXMucHVzaFNwYWNlcyghMCkpKTtyZXR1cm4gdGhpcy5pbmRlbnROZXh0PXRoaXMuaW5kZW50VmFsdWUrMSx0aGlzLmluZGVudFZhbHVlKz1yLHlpZWxkKlModGhpcy5wYXJzZUJsb2NrU3RhcnQoKSl9cmV0dXJuXFxcImRvY1xcXCJ9KnBhcnNlRG9jdW1lbnQoKXt5aWVsZCpTKHRoaXMucHVzaFNwYWNlcyghMCkpO2xldCBlPXRoaXMuZ2V0TGluZSgpO2lmKGU9PT1udWxsKXJldHVybiB0aGlzLnNldE5leHQoXFxcImRvY1xcXCIpO2xldCB0PXlpZWxkKlModGhpcy5wdXNoSW5kaWNhdG9ycygpKTtzd2l0Y2goZVt0XSl7Y2FzZVxcXCIjXFxcIjp5aWVsZCpTKHRoaXMucHVzaENvdW50KGUubGVuZ3RoLXQpKTtjYXNlIHZvaWQgMDpyZXR1cm4geWllbGQqUyh0aGlzLnB1c2hOZXdsaW5lKCkpLHlpZWxkKlModGhpcy5wYXJzZUxpbmVTdGFydCgpKTtjYXNlXFxcIntcXFwiOmNhc2VcXFwiW1xcXCI6cmV0dXJuIHlpZWxkKlModGhpcy5wdXNoQ291bnQoMSkpLHRoaXMuZmxvd0tleT0hMSx0aGlzLmZsb3dMZXZlbD0xLFxcXCJmbG93XFxcIjtjYXNlXFxcIn1cXFwiOmNhc2VcXFwiXVxcXCI6cmV0dXJuIHlpZWxkKlModGhpcy5wdXNoQ291bnQoMSkpLFxcXCJkb2NcXFwiO2Nhc2VcXFwiKlxcXCI6cmV0dXJuIHlpZWxkKlModGhpcy5wdXNoVW50aWwobG8pKSxcXFwiZG9jXFxcIjtjYXNlJ1xcXCInOmNhc2VcXFwiJ1xcXCI6cmV0dXJuIHlpZWxkKlModGhpcy5wYXJzZVF1b3RlZFNjYWxhcigpKTtjYXNlXFxcInxcXFwiOmNhc2VcXFwiPlxcXCI6cmV0dXJuIHQrPXlpZWxkKlModGhpcy5wYXJzZUJsb2NrU2NhbGFySGVhZGVyKCkpLHQrPXlpZWxkKlModGhpcy5wdXNoU3BhY2VzKCEwKSkseWllbGQqUyh0aGlzLnB1c2hDb3VudChlLmxlbmd0aC10KSkseWllbGQqUyh0aGlzLnB1c2hOZXdsaW5lKCkpLHlpZWxkKlModGhpcy5wYXJzZUJsb2NrU2NhbGFyKCkpO2RlZmF1bHQ6cmV0dXJuIHlpZWxkKlModGhpcy5wYXJzZVBsYWluU2NhbGFyKCkpfX0qcGFyc2VGbG93Q29sbGVjdGlvbigpe2xldCBlLHQscj0tMTtkbyBlPXlpZWxkKlModGhpcy5wdXNoTmV3bGluZSgpKSxlPjA/KHQ9eWllbGQqUyh0aGlzLnB1c2hTcGFjZXMoITEpKSx0aGlzLmluZGVudFZhbHVlPXI9dCk6dD0wLHQrPXlpZWxkKlModGhpcy5wdXNoU3BhY2VzKCEwKSk7d2hpbGUoZSt0PjApO2xldCBzPXRoaXMuZ2V0TGluZSgpO2lmKHM9PT1udWxsKXJldHVybiB0aGlzLnNldE5leHQoXFxcImZsb3dcXFwiKTtpZigociE9PS0xJiZyPHRoaXMuaW5kZW50TmV4dCYmc1swXSE9PVxcXCIjXFxcInx8cj09PTAmJihzLnN0YXJ0c1dpdGgoXFxcIi0tLVxcXCIpfHxzLnN0YXJ0c1dpdGgoXFxcIi4uLlxcXCIpKSYmWGUoc1szXSkpJiYhKHI9PT10aGlzLmluZGVudE5leHQtMSYmdGhpcy5mbG93TGV2ZWw9PT0xJiYoc1swXT09PVxcXCJdXFxcInx8c1swXT09PVxcXCJ9XFxcIikpKXJldHVybiB0aGlzLmZsb3dMZXZlbD0wLHlpZWxkIHVvLHlpZWxkKlModGhpcy5wYXJzZUxpbmVTdGFydCgpKTtsZXQgaT0wO2Zvcig7c1tpXT09PVxcXCIsXFxcIjspaSs9eWllbGQqUyh0aGlzLnB1c2hDb3VudCgxKSksaSs9eWllbGQqUyh0aGlzLnB1c2hTcGFjZXMoITApKSx0aGlzLmZsb3dLZXk9ITE7c3dpdGNoKGkrPXlpZWxkKlModGhpcy5wdXNoSW5kaWNhdG9ycygpKSxzW2ldKXtjYXNlIHZvaWQgMDpyZXR1cm5cXFwiZmxvd1xcXCI7Y2FzZVxcXCIjXFxcIjpyZXR1cm4geWllbGQqUyh0aGlzLnB1c2hDb3VudChzLmxlbmd0aC1pKSksXFxcImZsb3dcXFwiO2Nhc2VcXFwie1xcXCI6Y2FzZVxcXCJbXFxcIjpyZXR1cm4geWllbGQqUyh0aGlzLnB1c2hDb3VudCgxKSksdGhpcy5mbG93S2V5PSExLHRoaXMuZmxvd0xldmVsKz0xLFxcXCJmbG93XFxcIjtjYXNlXFxcIn1cXFwiOmNhc2VcXFwiXVxcXCI6cmV0dXJuIHlpZWxkKlModGhpcy5wdXNoQ291bnQoMSkpLHRoaXMuZmxvd0tleT0hMCx0aGlzLmZsb3dMZXZlbC09MSx0aGlzLmZsb3dMZXZlbD9cXFwiZmxvd1xcXCI6XFxcImRvY1xcXCI7Y2FzZVxcXCIqXFxcIjpyZXR1cm4geWllbGQqUyh0aGlzLnB1c2hVbnRpbChsbykpLFxcXCJmbG93XFxcIjtjYXNlJ1xcXCInOmNhc2VcXFwiJ1xcXCI6cmV0dXJuIHRoaXMuZmxvd0tleT0hMCx5aWVsZCpTKHRoaXMucGFyc2VRdW90ZWRTY2FsYXIoKSk7Y2FzZVxcXCI6XFxcIjp7bGV0IG89dGhpcy5jaGFyQXQoMSk7aWYodGhpcy5mbG93S2V5fHxYZShvKXx8bz09PVxcXCIsXFxcIilyZXR1cm4gdGhpcy5mbG93S2V5PSExLHlpZWxkKlModGhpcy5wdXNoQ291bnQoMSkpLHlpZWxkKlModGhpcy5wdXNoU3BhY2VzKCEwKSksXFxcImZsb3dcXFwifWRlZmF1bHQ6cmV0dXJuIHRoaXMuZmxvd0tleT0hMSx5aWVsZCpTKHRoaXMucGFyc2VQbGFpblNjYWxhcigpKX19KnBhcnNlUXVvdGVkU2NhbGFyKCl7bGV0IGU9dGhpcy5jaGFyQXQoMCksdD10aGlzLmJ1ZmZlci5pbmRleE9mKGUsdGhpcy5wb3MrMSk7aWYoZT09PVxcXCInXFxcIilmb3IoO3QhPT0tMSYmdGhpcy5idWZmZXJbdCsxXT09PVxcXCInXFxcIjspdD10aGlzLmJ1ZmZlci5pbmRleE9mKFxcXCInXFxcIix0KzIpO2Vsc2UgZm9yKDt0IT09LTE7KXtsZXQgaT0wO2Zvcig7dGhpcy5idWZmZXJbdC0xLWldPT09XFxcIlxcXFxcXFxcXFxcIjspaSs9MTtpZihpJTI9PT0wKWJyZWFrO3Q9dGhpcy5idWZmZXIuaW5kZXhPZignXFxcIicsdCsxKX1sZXQgcj10aGlzLmJ1ZmZlci5zdWJzdHJpbmcoMCx0KSxzPXIuaW5kZXhPZihgXFxuYCx0aGlzLnBvcyk7aWYocyE9PS0xKXtmb3IoO3MhPT0tMTspe2xldCBpPXRoaXMuY29udGludWVTY2FsYXIocysxKTtpZihpPT09LTEpYnJlYWs7cz1yLmluZGV4T2YoYFxcbmAsaSl9cyE9PS0xJiYodD1zLShyW3MtMV09PT1cXFwiXFxcXHJcXFwiPzI6MSkpfWlmKHQ9PT0tMSl7aWYoIXRoaXMuYXRFbmQpcmV0dXJuIHRoaXMuc2V0TmV4dChcXFwicXVvdGVkLXNjYWxhclxcXCIpO3Q9dGhpcy5idWZmZXIubGVuZ3RofXJldHVybiB5aWVsZCpTKHRoaXMucHVzaFRvSW5kZXgodCsxLCExKSksdGhpcy5mbG93TGV2ZWw/XFxcImZsb3dcXFwiOlxcXCJkb2NcXFwifSpwYXJzZUJsb2NrU2NhbGFySGVhZGVyKCl7dGhpcy5ibG9ja1NjYWxhckluZGVudD0tMSx0aGlzLmJsb2NrU2NhbGFyS2VlcD0hMTtsZXQgZT10aGlzLnBvcztmb3IoOzspe2xldCB0PXRoaXMuYnVmZmVyWysrZV07aWYodD09PVxcXCIrXFxcIil0aGlzLmJsb2NrU2NhbGFyS2VlcD0hMDtlbHNlIGlmKHQ+XFxcIjBcXFwiJiZ0PD1cXFwiOVxcXCIpdGhpcy5ibG9ja1NjYWxhckluZGVudD1OdW1iZXIodCktMTtlbHNlIGlmKHQhPT1cXFwiLVxcXCIpYnJlYWt9cmV0dXJuIHlpZWxkKlModGhpcy5wdXNoVW50aWwodD0+WGUodCl8fHQ9PT1cXFwiI1xcXCIpKX0qcGFyc2VCbG9ja1NjYWxhcigpe2xldCBlPXRoaXMucG9zLTEsdD0wLHI7ZTpmb3IobGV0IGk9dGhpcy5wb3M7cj10aGlzLmJ1ZmZlcltpXTsrK2kpc3dpdGNoKHIpe2Nhc2VcXFwiIFxcXCI6dCs9MTticmVhaztjYXNlYFxcbmA6ZT1pLHQ9MDticmVhaztjYXNlXFxcIlxcXFxyXFxcIjp7bGV0IG89dGhpcy5idWZmZXJbaSsxXTtpZighbyYmIXRoaXMuYXRFbmQpcmV0dXJuIHRoaXMuc2V0TmV4dChcXFwiYmxvY2stc2NhbGFyXFxcIik7aWYobz09PWBcXG5gKWJyZWFrfWRlZmF1bHQ6YnJlYWsgZX1pZighciYmIXRoaXMuYXRFbmQpcmV0dXJuIHRoaXMuc2V0TmV4dChcXFwiYmxvY2stc2NhbGFyXFxcIik7aWYodD49dGhpcy5pbmRlbnROZXh0KXt0aGlzLmJsb2NrU2NhbGFySW5kZW50PT09LTE/dGhpcy5pbmRlbnROZXh0PXQ6dGhpcy5pbmRlbnROZXh0PXRoaXMuYmxvY2tTY2FsYXJJbmRlbnQrKHRoaXMuaW5kZW50TmV4dD09PTA/MTp0aGlzLmluZGVudE5leHQpO2Rve2xldCBpPXRoaXMuY29udGludWVTY2FsYXIoZSsxKTtpZihpPT09LTEpYnJlYWs7ZT10aGlzLmJ1ZmZlci5pbmRleE9mKGBcXG5gLGkpfXdoaWxlKGUhPT0tMSk7aWYoZT09PS0xKXtpZighdGhpcy5hdEVuZClyZXR1cm4gdGhpcy5zZXROZXh0KFxcXCJibG9jay1zY2FsYXJcXFwiKTtlPXRoaXMuYnVmZmVyLmxlbmd0aH19bGV0IHM9ZSsxO2ZvcihyPXRoaXMuYnVmZmVyW3NdO3I9PT1cXFwiIFxcXCI7KXI9dGhpcy5idWZmZXJbKytzXTtpZihyPT09XFxcIlxcdFxcXCIpe2Zvcig7cj09PVxcXCJcXHRcXFwifHxyPT09XFxcIiBcXFwifHxyPT09XFxcIlxcXFxyXFxcInx8cj09PWBcXG5gOylyPXRoaXMuYnVmZmVyWysrc107ZT1zLTF9ZWxzZSBpZighdGhpcy5ibG9ja1NjYWxhcktlZXApZG97bGV0IGk9ZS0xLG89dGhpcy5idWZmZXJbaV07bz09PVxcXCJcXFxcclxcXCImJihvPXRoaXMuYnVmZmVyWy0taV0pO2xldCBhPWk7Zm9yKDtvPT09XFxcIiBcXFwiOylvPXRoaXMuYnVmZmVyWy0taV07aWYobz09PWBcXG5gJiZpPj10aGlzLnBvcyYmaSsxK3Q+YSllPWk7ZWxzZSBicmVha313aGlsZSghMCk7cmV0dXJuIHlpZWxkIE1zLHlpZWxkKlModGhpcy5wdXNoVG9JbmRleChlKzEsITApKSx5aWVsZCpTKHRoaXMucGFyc2VMaW5lU3RhcnQoKSl9KnBhcnNlUGxhaW5TY2FsYXIoKXtsZXQgZT10aGlzLmZsb3dMZXZlbD4wLHQ9dGhpcy5wb3MtMSxyPXRoaXMucG9zLTEscztmb3IoO3M9dGhpcy5idWZmZXJbKytyXTspaWYocz09PVxcXCI6XFxcIil7bGV0IGk9dGhpcy5idWZmZXJbcisxXTtpZihYZShpKXx8ZSYmX3MuaGFzKGkpKWJyZWFrO3Q9cn1lbHNlIGlmKFhlKHMpKXtsZXQgaT10aGlzLmJ1ZmZlcltyKzFdO2lmKHM9PT1cXFwiXFxcXHJcXFwiJiYoaT09PWBcXG5gPyhyKz0xLHM9YFxcbmAsaT10aGlzLmJ1ZmZlcltyKzFdKTp0PXIpLGk9PT1cXFwiI1xcXCJ8fGUmJl9zLmhhcyhpKSlicmVhaztpZihzPT09YFxcbmApe2xldCBvPXRoaXMuY29udGludWVTY2FsYXIocisxKTtpZihvPT09LTEpYnJlYWs7cj1NYXRoLm1heChyLG8tMil9fWVsc2V7aWYoZSYmX3MuaGFzKHMpKWJyZWFrO3Q9cn1yZXR1cm4hcyYmIXRoaXMuYXRFbmQ/dGhpcy5zZXROZXh0KFxcXCJwbGFpbi1zY2FsYXJcXFwiKTooeWllbGQgTXMseWllbGQqUyh0aGlzLnB1c2hUb0luZGV4KHQrMSwhMCkpLGU/XFxcImZsb3dcXFwiOlxcXCJkb2NcXFwiKX0qcHVzaENvdW50KGUpe3JldHVybiBlPjA/KHlpZWxkIHRoaXMuYnVmZmVyLnN1YnN0cih0aGlzLnBvcyxlKSx0aGlzLnBvcys9ZSxlKTowfSpwdXNoVG9JbmRleChlLHQpe2xldCByPXRoaXMuYnVmZmVyLnNsaWNlKHRoaXMucG9zLGUpO3JldHVybiByPyh5aWVsZCByLHRoaXMucG9zKz1yLmxlbmd0aCxyLmxlbmd0aCk6KHQmJih5aWVsZFxcXCJcXFwiKSwwKX0qcHVzaEluZGljYXRvcnMoKXtzd2l0Y2godGhpcy5jaGFyQXQoMCkpe2Nhc2VcXFwiIVxcXCI6cmV0dXJuKHlpZWxkKlModGhpcy5wdXNoVGFnKCkpKSsoeWllbGQqUyh0aGlzLnB1c2hTcGFjZXMoITApKSkrKHlpZWxkKlModGhpcy5wdXNoSW5kaWNhdG9ycygpKSk7Y2FzZVxcXCImXFxcIjpyZXR1cm4oeWllbGQqUyh0aGlzLnB1c2hVbnRpbChsbykpKSsoeWllbGQqUyh0aGlzLnB1c2hTcGFjZXMoITApKSkrKHlpZWxkKlModGhpcy5wdXNoSW5kaWNhdG9ycygpKSk7Y2FzZVxcXCItXFxcIjpjYXNlXFxcIj9cXFwiOmNhc2VcXFwiOlxcXCI6e2xldCBlPXRoaXMuZmxvd0xldmVsPjAsdD10aGlzLmNoYXJBdCgxKTtpZihYZSh0KXx8ZSYmX3MuaGFzKHQpKXJldHVybiBlP3RoaXMuZmxvd0tleSYmKHRoaXMuZmxvd0tleT0hMSk6dGhpcy5pbmRlbnROZXh0PXRoaXMuaW5kZW50VmFsdWUrMSwoeWllbGQqUyh0aGlzLnB1c2hDb3VudCgxKSkpKyh5aWVsZCpTKHRoaXMucHVzaFNwYWNlcyghMCkpKSsoeWllbGQqUyh0aGlzLnB1c2hJbmRpY2F0b3JzKCkpKX19cmV0dXJuIDB9KnB1c2hUYWcoKXtpZih0aGlzLmNoYXJBdCgxKT09PVxcXCI8XFxcIil7bGV0IGU9dGhpcy5wb3MrMix0PXRoaXMuYnVmZmVyW2VdO2Zvcig7IVhlKHQpJiZ0IT09XFxcIj5cXFwiOyl0PXRoaXMuYnVmZmVyWysrZV07cmV0dXJuIHlpZWxkKlModGhpcy5wdXNoVG9JbmRleCh0PT09XFxcIj5cXFwiP2UrMTplLCExKSl9ZWxzZXtsZXQgZT10aGlzLnBvcysxLHQ9dGhpcy5idWZmZXJbZV07Zm9yKDt0OylpZihGZi5oYXModCkpdD10aGlzLmJ1ZmZlclsrK2VdO2Vsc2UgaWYodD09PVxcXCIlXFxcIiYmT3UuaGFzKHRoaXMuYnVmZmVyW2UrMV0pJiZPdS5oYXModGhpcy5idWZmZXJbZSsyXSkpdD10aGlzLmJ1ZmZlcltlKz0zXTtlbHNlIGJyZWFrO3JldHVybiB5aWVsZCpTKHRoaXMucHVzaFRvSW5kZXgoZSwhMSkpfX0qcHVzaE5ld2xpbmUoKXtsZXQgZT10aGlzLmJ1ZmZlclt0aGlzLnBvc107cmV0dXJuIGU9PT1gXFxuYD95aWVsZCpTKHRoaXMucHVzaENvdW50KDEpKTplPT09XFxcIlxcXFxyXFxcIiYmdGhpcy5jaGFyQXQoMSk9PT1gXFxuYD95aWVsZCpTKHRoaXMucHVzaENvdW50KDIpKTowfSpwdXNoU3BhY2VzKGUpe2xldCB0PXRoaXMucG9zLTEscjtkbyByPXRoaXMuYnVmZmVyWysrdF07d2hpbGUocj09PVxcXCIgXFxcInx8ZSYmcj09PVxcXCJcXHRcXFwiKTtsZXQgcz10LXRoaXMucG9zO3JldHVybiBzPjAmJih5aWVsZCB0aGlzLmJ1ZmZlci5zdWJzdHIodGhpcy5wb3MscyksdGhpcy5wb3M9dCksc30qcHVzaFVudGlsKGUpe2xldCB0PXRoaXMucG9zLHI9dGhpcy5idWZmZXJbdF07Zm9yKDshZShyKTspcj10aGlzLmJ1ZmZlclsrK3RdO3JldHVybiB5aWVsZCpTKHRoaXMucHVzaFRvSW5kZXgodCwhMSkpfX07dmFyIE5yPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5saW5lU3RhcnRzPVtdLHRoaXMuYWRkTmV3TGluZT1lPT50aGlzLmxpbmVTdGFydHMucHVzaChlKSx0aGlzLmxpbmVQb3M9ZT0+e2xldCB0PTAscj10aGlzLmxpbmVTdGFydHMubGVuZ3RoO2Zvcig7dDxyOyl7bGV0IGk9dCtyPj4xO3RoaXMubGluZVN0YXJ0c1tpXTxlP3Q9aSsxOnI9aX1pZih0aGlzLmxpbmVTdGFydHNbdF09PT1lKXJldHVybntsaW5lOnQrMSxjb2w6MX07aWYodD09PTApcmV0dXJue2xpbmU6MCxjb2w6ZX07bGV0IHM9dGhpcy5saW5lU3RhcnRzW3QtMV07cmV0dXJue2xpbmU6dCxjb2w6ZS1zKzF9fX19O2Z1bmN0aW9uIHp0KG4sZSl7Zm9yKGxldCB0PTA7dDxuLmxlbmd0aDsrK3QpaWYoblt0XS50eXBlPT09ZSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBJdShuKXtmb3IobGV0IGU9MDtlPG4ubGVuZ3RoOysrZSlzd2l0Y2gobltlXS50eXBlKXtjYXNlXFxcInNwYWNlXFxcIjpjYXNlXFxcImNvbW1lbnRcXFwiOmNhc2VcXFwibmV3bGluZVxcXCI6YnJlYWs7ZGVmYXVsdDpyZXR1cm4gZX1yZXR1cm4tMX1mdW5jdGlvbiBOdShuKXtzd2l0Y2gobj09bnVsbD92b2lkIDA6bi50eXBlKXtjYXNlXFxcImFsaWFzXFxcIjpjYXNlXFxcInNjYWxhclxcXCI6Y2FzZVxcXCJzaW5nbGUtcXVvdGVkLXNjYWxhclxcXCI6Y2FzZVxcXCJkb3VibGUtcXVvdGVkLXNjYWxhclxcXCI6Y2FzZVxcXCJmbG93LWNvbGxlY3Rpb25cXFwiOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fWZ1bmN0aW9uIEJzKG4pe3ZhciBlO3N3aXRjaChuLnR5cGUpe2Nhc2VcXFwiZG9jdW1lbnRcXFwiOnJldHVybiBuLnN0YXJ0O2Nhc2VcXFwiYmxvY2stbWFwXFxcIjp7bGV0IHQ9bi5pdGVtc1tuLml0ZW1zLmxlbmd0aC0xXTtyZXR1cm4oZT10LnNlcCkhPW51bGw/ZTp0LnN0YXJ0fWNhc2VcXFwiYmxvY2stc2VxXFxcIjpyZXR1cm4gbi5pdGVtc1tuLml0ZW1zLmxlbmd0aC0xXS5zdGFydDtkZWZhdWx0OnJldHVybltdfX1mdW5jdGlvbiBObihuKXt2YXIgdDtpZihuLmxlbmd0aD09PTApcmV0dXJuW107bGV0IGU9bi5sZW5ndGg7ZTpmb3IoOy0tZT49MDspc3dpdGNoKG5bZV0udHlwZSl7Y2FzZVxcXCJkb2Mtc3RhcnRcXFwiOmNhc2VcXFwiZXhwbGljaXQta2V5LWluZFxcXCI6Y2FzZVxcXCJtYXAtdmFsdWUtaW5kXFxcIjpjYXNlXFxcInNlcS1pdGVtLWluZFxcXCI6Y2FzZVxcXCJuZXdsaW5lXFxcIjpicmVhayBlfWZvcig7KCh0PW5bKytlXSk9PW51bGw/dm9pZCAwOnQudHlwZSk9PT1cXFwic3BhY2VcXFwiOyk7cmV0dXJuIG4uc3BsaWNlKGUsbi5sZW5ndGgpfWZ1bmN0aW9uIEx1KG4pe2lmKG4uc3RhcnQudHlwZT09PVxcXCJmbG93LXNlcS1zdGFydFxcXCIpZm9yKGxldCBlIG9mIG4uaXRlbXMpZS5zZXAmJiFlLnZhbHVlJiYhenQoZS5zdGFydCxcXFwiZXhwbGljaXQta2V5LWluZFxcXCIpJiYhenQoZS5zZXAsXFxcIm1hcC12YWx1ZS1pbmRcXFwiKSYmKGUua2V5JiYoZS52YWx1ZT1lLmtleSksZGVsZXRlIGUua2V5LE51KGUudmFsdWUpP2UudmFsdWUuZW5kP0FycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KGUudmFsdWUuZW5kLGUuc2VwKTplLnZhbHVlLmVuZD1lLnNlcDpBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShlLnN0YXJ0LGUuc2VwKSxkZWxldGUgZS5zZXApfXZhciBBcj1jbGFzc3tjb25zdHJ1Y3RvcihlKXt0aGlzLmF0TmV3TGluZT0hMCx0aGlzLmF0U2NhbGFyPSExLHRoaXMuaW5kZW50PTAsdGhpcy5vZmZzZXQ9MCx0aGlzLm9uS2V5TGluZT0hMSx0aGlzLnN0YWNrPVtdLHRoaXMuc291cmNlPVxcXCJcXFwiLHRoaXMudHlwZT1cXFwiXFxcIix0aGlzLmxleGVyPW5ldyBMcix0aGlzLm9uTmV3TGluZT1lfSpwYXJzZShlLHQ9ITEpe3RoaXMub25OZXdMaW5lJiZ0aGlzLm9mZnNldD09PTAmJnRoaXMub25OZXdMaW5lKDApO2ZvcihsZXQgciBvZiB0aGlzLmxleGVyLmxleChlLHQpKXlpZWxkKlModGhpcy5uZXh0KHIpKTt0fHwoeWllbGQqUyh0aGlzLmVuZCgpKSl9Km5leHQoZSl7aWYodGhpcy5zb3VyY2U9ZSx0aGlzLmF0U2NhbGFyKXt0aGlzLmF0U2NhbGFyPSExLHlpZWxkKlModGhpcy5zdGVwKCkpLHRoaXMub2Zmc2V0Kz1lLmxlbmd0aDtyZXR1cm59bGV0IHQ9eHUoZSk7aWYodClpZih0PT09XFxcInNjYWxhclxcXCIpdGhpcy5hdE5ld0xpbmU9ITEsdGhpcy5hdFNjYWxhcj0hMCx0aGlzLnR5cGU9XFxcInNjYWxhclxcXCI7ZWxzZXtzd2l0Y2godGhpcy50eXBlPXQseWllbGQqUyh0aGlzLnN0ZXAoKSksdCl7Y2FzZVxcXCJuZXdsaW5lXFxcIjp0aGlzLmF0TmV3TGluZT0hMCx0aGlzLmluZGVudD0wLHRoaXMub25OZXdMaW5lJiZ0aGlzLm9uTmV3TGluZSh0aGlzLm9mZnNldCtlLmxlbmd0aCk7YnJlYWs7Y2FzZVxcXCJzcGFjZVxcXCI6dGhpcy5hdE5ld0xpbmUmJmVbMF09PT1cXFwiIFxcXCImJih0aGlzLmluZGVudCs9ZS5sZW5ndGgpO2JyZWFrO2Nhc2VcXFwiZXhwbGljaXQta2V5LWluZFxcXCI6Y2FzZVxcXCJtYXAtdmFsdWUtaW5kXFxcIjpjYXNlXFxcInNlcS1pdGVtLWluZFxcXCI6dGhpcy5hdE5ld0xpbmUmJih0aGlzLmluZGVudCs9ZS5sZW5ndGgpO2JyZWFrO2Nhc2VcXFwiZG9jLW1vZGVcXFwiOmNhc2VcXFwiZmxvdy1lcnJvci1lbmRcXFwiOnJldHVybjtkZWZhdWx0OnRoaXMuYXROZXdMaW5lPSExfXRoaXMub2Zmc2V0Kz1lLmxlbmd0aH1lbHNle2xldCByPWBOb3QgYSBZQU1MIHRva2VuOiAke2V9YDt5aWVsZCpTKHRoaXMucG9wKHt0eXBlOlxcXCJlcnJvclxcXCIsb2Zmc2V0OnRoaXMub2Zmc2V0LG1lc3NhZ2U6cixzb3VyY2U6ZX0pKSx0aGlzLm9mZnNldCs9ZS5sZW5ndGh9fSplbmQoKXtmb3IoO3RoaXMuc3RhY2subGVuZ3RoPjA7KXlpZWxkKlModGhpcy5wb3AoKSl9Z2V0IHNvdXJjZVRva2VuKCl7cmV0dXJue3R5cGU6dGhpcy50eXBlLG9mZnNldDp0aGlzLm9mZnNldCxpbmRlbnQ6dGhpcy5pbmRlbnQsc291cmNlOnRoaXMuc291cmNlfX0qc3RlcCgpe2xldCBlPXRoaXMucGVlaygxKTtpZih0aGlzLnR5cGU9PT1cXFwiZG9jLWVuZFxcXCImJighZXx8ZS50eXBlIT09XFxcImRvYy1lbmRcXFwiKSl7Zm9yKDt0aGlzLnN0YWNrLmxlbmd0aD4wOyl5aWVsZCpTKHRoaXMucG9wKCkpO3RoaXMuc3RhY2sucHVzaCh7dHlwZTpcXFwiZG9jLWVuZFxcXCIsb2Zmc2V0OnRoaXMub2Zmc2V0LHNvdXJjZTp0aGlzLnNvdXJjZX0pO3JldHVybn1pZighZSlyZXR1cm4geWllbGQqUyh0aGlzLnN0cmVhbSgpKTtzd2l0Y2goZS50eXBlKXtjYXNlXFxcImRvY3VtZW50XFxcIjpyZXR1cm4geWllbGQqUyh0aGlzLmRvY3VtZW50KGUpKTtjYXNlXFxcImFsaWFzXFxcIjpjYXNlXFxcInNjYWxhclxcXCI6Y2FzZVxcXCJzaW5nbGUtcXVvdGVkLXNjYWxhclxcXCI6Y2FzZVxcXCJkb3VibGUtcXVvdGVkLXNjYWxhclxcXCI6cmV0dXJuIHlpZWxkKlModGhpcy5zY2FsYXIoZSkpO2Nhc2VcXFwiYmxvY2stc2NhbGFyXFxcIjpyZXR1cm4geWllbGQqUyh0aGlzLmJsb2NrU2NhbGFyKGUpKTtjYXNlXFxcImJsb2NrLW1hcFxcXCI6cmV0dXJuIHlpZWxkKlModGhpcy5ibG9ja01hcChlKSk7Y2FzZVxcXCJibG9jay1zZXFcXFwiOnJldHVybiB5aWVsZCpTKHRoaXMuYmxvY2tTZXF1ZW5jZShlKSk7Y2FzZVxcXCJmbG93LWNvbGxlY3Rpb25cXFwiOnJldHVybiB5aWVsZCpTKHRoaXMuZmxvd0NvbGxlY3Rpb24oZSkpO2Nhc2VcXFwiZG9jLWVuZFxcXCI6cmV0dXJuIHlpZWxkKlModGhpcy5kb2N1bWVudEVuZChlKSl9eWllbGQqUyh0aGlzLnBvcCgpKX1wZWVrKGUpe3JldHVybiB0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoLWVdfSpwb3AoZSl7bGV0IHQ9ZSE9bnVsbD9lOnRoaXMuc3RhY2sucG9wKCk7aWYoIXQpeWllbGR7dHlwZTpcXFwiZXJyb3JcXFwiLG9mZnNldDp0aGlzLm9mZnNldCxzb3VyY2U6XFxcIlxcXCIsbWVzc2FnZTpcXFwiVHJpZWQgdG8gcG9wIGFuIGVtcHR5IHN0YWNrXFxcIn07ZWxzZSBpZih0aGlzLnN0YWNrLmxlbmd0aD09PTApeWllbGQgdDtlbHNle2xldCByPXRoaXMucGVlaygxKTtzd2l0Y2godC50eXBlPT09XFxcImJsb2NrLXNjYWxhclxcXCI/dC5pbmRlbnQ9XFxcImluZGVudFxcXCJpbiByP3IuaW5kZW50OjA6dC50eXBlPT09XFxcImZsb3ctY29sbGVjdGlvblxcXCImJnIudHlwZT09PVxcXCJkb2N1bWVudFxcXCImJih0LmluZGVudD0wKSx0LnR5cGU9PT1cXFwiZmxvdy1jb2xsZWN0aW9uXFxcIiYmTHUodCksci50eXBlKXtjYXNlXFxcImRvY3VtZW50XFxcIjpyLnZhbHVlPXQ7YnJlYWs7Y2FzZVxcXCJibG9jay1zY2FsYXJcXFwiOnIucHJvcHMucHVzaCh0KTticmVhaztjYXNlXFxcImJsb2NrLW1hcFxcXCI6e2xldCBzPXIuaXRlbXNbci5pdGVtcy5sZW5ndGgtMV07aWYocy52YWx1ZSl7ci5pdGVtcy5wdXNoKHtzdGFydDpbXSxrZXk6dCxzZXA6W119KSx0aGlzLm9uS2V5TGluZT0hMDtyZXR1cm59ZWxzZSBpZihzLnNlcClzLnZhbHVlPXQ7ZWxzZXtPYmplY3QuYXNzaWduKHMse2tleTp0LHNlcDpbXX0pLHRoaXMub25LZXlMaW5lPSFzLmV4cGxpY2l0S2V5O3JldHVybn1icmVha31jYXNlXFxcImJsb2NrLXNlcVxcXCI6e2xldCBzPXIuaXRlbXNbci5pdGVtcy5sZW5ndGgtMV07cy52YWx1ZT9yLml0ZW1zLnB1c2goe3N0YXJ0OltdLHZhbHVlOnR9KTpzLnZhbHVlPXQ7YnJlYWt9Y2FzZVxcXCJmbG93LWNvbGxlY3Rpb25cXFwiOntsZXQgcz1yLml0ZW1zW3IuaXRlbXMubGVuZ3RoLTFdOyFzfHxzLnZhbHVlP3IuaXRlbXMucHVzaCh7c3RhcnQ6W10sa2V5OnQsc2VwOltdfSk6cy5zZXA/cy52YWx1ZT10Ok9iamVjdC5hc3NpZ24ocyx7a2V5OnQsc2VwOltdfSk7cmV0dXJufWRlZmF1bHQ6eWllbGQqUyh0aGlzLnBvcCgpKSx5aWVsZCpTKHRoaXMucG9wKHQpKX1pZigoci50eXBlPT09XFxcImRvY3VtZW50XFxcInx8ci50eXBlPT09XFxcImJsb2NrLW1hcFxcXCJ8fHIudHlwZT09PVxcXCJibG9jay1zZXFcXFwiKSYmKHQudHlwZT09PVxcXCJibG9jay1tYXBcXFwifHx0LnR5cGU9PT1cXFwiYmxvY2stc2VxXFxcIikpe2xldCBzPXQuaXRlbXNbdC5pdGVtcy5sZW5ndGgtMV07cyYmIXMuc2VwJiYhcy52YWx1ZSYmcy5zdGFydC5sZW5ndGg+MCYmSXUocy5zdGFydCk9PT0tMSYmKHQuaW5kZW50PT09MHx8cy5zdGFydC5ldmVyeShpPT5pLnR5cGUhPT1cXFwiY29tbWVudFxcXCJ8fGkuaW5kZW50PHQuaW5kZW50KSkmJihyLnR5cGU9PT1cXFwiZG9jdW1lbnRcXFwiP3IuZW5kPXMuc3RhcnQ6ci5pdGVtcy5wdXNoKHtzdGFydDpzLnN0YXJ0fSksdC5pdGVtcy5zcGxpY2UoLTEsMSkpfX19KnN0cmVhbSgpe3N3aXRjaCh0aGlzLnR5cGUpe2Nhc2VcXFwiZGlyZWN0aXZlLWxpbmVcXFwiOnlpZWxke3R5cGU6XFxcImRpcmVjdGl2ZVxcXCIsb2Zmc2V0OnRoaXMub2Zmc2V0LHNvdXJjZTp0aGlzLnNvdXJjZX07cmV0dXJuO2Nhc2VcXFwiYnl0ZS1vcmRlci1tYXJrXFxcIjpjYXNlXFxcInNwYWNlXFxcIjpjYXNlXFxcImNvbW1lbnRcXFwiOmNhc2VcXFwibmV3bGluZVxcXCI6eWllbGQgdGhpcy5zb3VyY2VUb2tlbjtyZXR1cm47Y2FzZVxcXCJkb2MtbW9kZVxcXCI6Y2FzZVxcXCJkb2Mtc3RhcnRcXFwiOntsZXQgZT17dHlwZTpcXFwiZG9jdW1lbnRcXFwiLG9mZnNldDp0aGlzLm9mZnNldCxzdGFydDpbXX07dGhpcy50eXBlPT09XFxcImRvYy1zdGFydFxcXCImJmUuc3RhcnQucHVzaCh0aGlzLnNvdXJjZVRva2VuKSx0aGlzLnN0YWNrLnB1c2goZSk7cmV0dXJufX15aWVsZHt0eXBlOlxcXCJlcnJvclxcXCIsb2Zmc2V0OnRoaXMub2Zmc2V0LG1lc3NhZ2U6YFVuZXhwZWN0ZWQgJHt0aGlzLnR5cGV9IHRva2VuIGluIFlBTUwgc3RyZWFtYCxzb3VyY2U6dGhpcy5zb3VyY2V9fSpkb2N1bWVudChlKXtpZihlLnZhbHVlKXJldHVybiB5aWVsZCpTKHRoaXMubGluZUVuZChlKSk7c3dpdGNoKHRoaXMudHlwZSl7Y2FzZVxcXCJkb2Mtc3RhcnRcXFwiOntJdShlLnN0YXJ0KSE9PS0xPyh5aWVsZCpTKHRoaXMucG9wKCkpLHlpZWxkKlModGhpcy5zdGVwKCkpKTplLnN0YXJ0LnB1c2godGhpcy5zb3VyY2VUb2tlbik7cmV0dXJufWNhc2VcXFwiYW5jaG9yXFxcIjpjYXNlXFxcInRhZ1xcXCI6Y2FzZVxcXCJzcGFjZVxcXCI6Y2FzZVxcXCJjb21tZW50XFxcIjpjYXNlXFxcIm5ld2xpbmVcXFwiOmUuc3RhcnQucHVzaCh0aGlzLnNvdXJjZVRva2VuKTtyZXR1cm59bGV0IHQ9dGhpcy5zdGFydEJsb2NrVmFsdWUoZSk7dD90aGlzLnN0YWNrLnB1c2godCk6eWllbGR7dHlwZTpcXFwiZXJyb3JcXFwiLG9mZnNldDp0aGlzLm9mZnNldCxtZXNzYWdlOmBVbmV4cGVjdGVkICR7dGhpcy50eXBlfSB0b2tlbiBpbiBZQU1MIGRvY3VtZW50YCxzb3VyY2U6dGhpcy5zb3VyY2V9fSpzY2FsYXIoZSl7aWYodGhpcy50eXBlPT09XFxcIm1hcC12YWx1ZS1pbmRcXFwiKXtsZXQgdD1Ccyh0aGlzLnBlZWsoMikpLHI9Tm4odCkscztlLmVuZD8ocz1lLmVuZCxzLnB1c2godGhpcy5zb3VyY2VUb2tlbiksZGVsZXRlIGUuZW5kKTpzPVt0aGlzLnNvdXJjZVRva2VuXTtsZXQgaT17dHlwZTpcXFwiYmxvY2stbWFwXFxcIixvZmZzZXQ6ZS5vZmZzZXQsaW5kZW50OmUuaW5kZW50LGl0ZW1zOlt7c3RhcnQ6cixrZXk6ZSxzZXA6c31dfTt0aGlzLm9uS2V5TGluZT0hMCx0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoLTFdPWl9ZWxzZSB5aWVsZCpTKHRoaXMubGluZUVuZChlKSl9KmJsb2NrU2NhbGFyKGUpe3N3aXRjaCh0aGlzLnR5cGUpe2Nhc2VcXFwic3BhY2VcXFwiOmNhc2VcXFwiY29tbWVudFxcXCI6Y2FzZVxcXCJuZXdsaW5lXFxcIjplLnByb3BzLnB1c2godGhpcy5zb3VyY2VUb2tlbik7cmV0dXJuO2Nhc2VcXFwic2NhbGFyXFxcIjppZihlLnNvdXJjZT10aGlzLnNvdXJjZSx0aGlzLmF0TmV3TGluZT0hMCx0aGlzLmluZGVudD0wLHRoaXMub25OZXdMaW5lKXtsZXQgdD10aGlzLnNvdXJjZS5pbmRleE9mKGBcXG5gKSsxO2Zvcig7dCE9PTA7KXRoaXMub25OZXdMaW5lKHRoaXMub2Zmc2V0K3QpLHQ9dGhpcy5zb3VyY2UuaW5kZXhPZihgXFxuYCx0KSsxfXlpZWxkKlModGhpcy5wb3AoKSk7YnJlYWs7ZGVmYXVsdDp5aWVsZCpTKHRoaXMucG9wKCkpLHlpZWxkKlModGhpcy5zdGVwKCkpfX0qYmxvY2tNYXAoZSl7dmFyIHI7bGV0IHQ9ZS5pdGVtc1tlLml0ZW1zLmxlbmd0aC0xXTtzd2l0Y2godGhpcy50eXBlKXtjYXNlXFxcIm5ld2xpbmVcXFwiOmlmKHRoaXMub25LZXlMaW5lPSExLHQudmFsdWUpe2xldCBzPVxcXCJlbmRcXFwiaW4gdC52YWx1ZT90LnZhbHVlLmVuZDp2b2lkIDAsaT1BcnJheS5pc0FycmF5KHMpP3Nbcy5sZW5ndGgtMV06dm9pZCAwOyhpPT1udWxsP3ZvaWQgMDppLnR5cGUpPT09XFxcImNvbW1lbnRcXFwiP3M9PW51bGx8fHMucHVzaCh0aGlzLnNvdXJjZVRva2VuKTplLml0ZW1zLnB1c2goe3N0YXJ0Olt0aGlzLnNvdXJjZVRva2VuXX0pfWVsc2UgdC5zZXA/dC5zZXAucHVzaCh0aGlzLnNvdXJjZVRva2VuKTp0LnN0YXJ0LnB1c2godGhpcy5zb3VyY2VUb2tlbik7cmV0dXJuO2Nhc2VcXFwic3BhY2VcXFwiOmNhc2VcXFwiY29tbWVudFxcXCI6aWYodC52YWx1ZSllLml0ZW1zLnB1c2goe3N0YXJ0Olt0aGlzLnNvdXJjZVRva2VuXX0pO2Vsc2UgaWYodC5zZXApdC5zZXAucHVzaCh0aGlzLnNvdXJjZVRva2VuKTtlbHNle2lmKHRoaXMuYXRJbmRlbnRlZENvbW1lbnQodC5zdGFydCxlLmluZGVudCkpe2xldCBzPWUuaXRlbXNbZS5pdGVtcy5sZW5ndGgtMl0saT0ocj1zPT1udWxsP3ZvaWQgMDpzLnZhbHVlKT09bnVsbD92b2lkIDA6ci5lbmQ7aWYoQXJyYXkuaXNBcnJheShpKSl7QXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkoaSx0LnN0YXJ0KSxpLnB1c2godGhpcy5zb3VyY2VUb2tlbiksZS5pdGVtcy5wb3AoKTtyZXR1cm59fXQuc3RhcnQucHVzaCh0aGlzLnNvdXJjZVRva2VuKX1yZXR1cm59aWYodGhpcy5pbmRlbnQ+PWUuaW5kZW50KXtsZXQgcz0hdGhpcy5vbktleUxpbmUmJnRoaXMuaW5kZW50PT09ZS5pbmRlbnQsaT1zJiYodC5zZXB8fHQuZXhwbGljaXRLZXkpJiZ0aGlzLnR5cGUhPT1cXFwic2VxLWl0ZW0taW5kXFxcIixvPVtdO2lmKGkmJnQuc2VwJiYhdC52YWx1ZSl7bGV0IGE9W107Zm9yKGxldCB1PTA7dTx0LnNlcC5sZW5ndGg7Kyt1KXtsZXQgbD10LnNlcFt1XTtzd2l0Y2gobC50eXBlKXtjYXNlXFxcIm5ld2xpbmVcXFwiOmEucHVzaCh1KTticmVhaztjYXNlXFxcInNwYWNlXFxcIjpicmVhaztjYXNlXFxcImNvbW1lbnRcXFwiOmwuaW5kZW50PmUuaW5kZW50JiYoYS5sZW5ndGg9MCk7YnJlYWs7ZGVmYXVsdDphLmxlbmd0aD0wfX1hLmxlbmd0aD49MiYmKG89dC5zZXAuc3BsaWNlKGFbMV0pKX1zd2l0Y2godGhpcy50eXBlKXtjYXNlXFxcImFuY2hvclxcXCI6Y2FzZVxcXCJ0YWdcXFwiOml8fHQudmFsdWU/KG8ucHVzaCh0aGlzLnNvdXJjZVRva2VuKSxlLml0ZW1zLnB1c2goe3N0YXJ0Om99KSx0aGlzLm9uS2V5TGluZT0hMCk6dC5zZXA/dC5zZXAucHVzaCh0aGlzLnNvdXJjZVRva2VuKTp0LnN0YXJ0LnB1c2godGhpcy5zb3VyY2VUb2tlbik7cmV0dXJuO2Nhc2VcXFwiZXhwbGljaXQta2V5LWluZFxcXCI6IXQuc2VwJiYhdC5leHBsaWNpdEtleT8odC5zdGFydC5wdXNoKHRoaXMuc291cmNlVG9rZW4pLHQuZXhwbGljaXRLZXk9ITApOml8fHQudmFsdWU/KG8ucHVzaCh0aGlzLnNvdXJjZVRva2VuKSxlLml0ZW1zLnB1c2goe3N0YXJ0Om8sZXhwbGljaXRLZXk6ITB9KSk6dGhpcy5zdGFjay5wdXNoKHt0eXBlOlxcXCJibG9jay1tYXBcXFwiLG9mZnNldDp0aGlzLm9mZnNldCxpbmRlbnQ6dGhpcy5pbmRlbnQsaXRlbXM6W3tzdGFydDpbdGhpcy5zb3VyY2VUb2tlbl0sZXhwbGljaXRLZXk6ITB9XX0pLHRoaXMub25LZXlMaW5lPSEwO3JldHVybjtjYXNlXFxcIm1hcC12YWx1ZS1pbmRcXFwiOmlmKHQuZXhwbGljaXRLZXkpaWYodC5zZXApaWYodC52YWx1ZSllLml0ZW1zLnB1c2goe3N0YXJ0OltdLGtleTpudWxsLHNlcDpbdGhpcy5zb3VyY2VUb2tlbl19KTtlbHNlIGlmKHp0KHQuc2VwLFxcXCJtYXAtdmFsdWUtaW5kXFxcIikpdGhpcy5zdGFjay5wdXNoKHt0eXBlOlxcXCJibG9jay1tYXBcXFwiLG9mZnNldDp0aGlzLm9mZnNldCxpbmRlbnQ6dGhpcy5pbmRlbnQsaXRlbXM6W3tzdGFydDpvLGtleTpudWxsLHNlcDpbdGhpcy5zb3VyY2VUb2tlbl19XX0pO2Vsc2UgaWYoTnUodC5rZXkpJiYhenQodC5zZXAsXFxcIm5ld2xpbmVcXFwiKSl7bGV0IGE9Tm4odC5zdGFydCksdT10LmtleSxsPXQuc2VwO2wucHVzaCh0aGlzLnNvdXJjZVRva2VuKSxkZWxldGUgdC5rZXksZGVsZXRlIHQuc2VwLHRoaXMuc3RhY2sucHVzaCh7dHlwZTpcXFwiYmxvY2stbWFwXFxcIixvZmZzZXQ6dGhpcy5vZmZzZXQsaW5kZW50OnRoaXMuaW5kZW50LGl0ZW1zOlt7c3RhcnQ6YSxrZXk6dSxzZXA6bH1dfSl9ZWxzZSBvLmxlbmd0aD4wP3Quc2VwPXQuc2VwLmNvbmNhdChvLHRoaXMuc291cmNlVG9rZW4pOnQuc2VwLnB1c2godGhpcy5zb3VyY2VUb2tlbik7ZWxzZSBpZih6dCh0LnN0YXJ0LFxcXCJuZXdsaW5lXFxcIikpT2JqZWN0LmFzc2lnbih0LHtrZXk6bnVsbCxzZXA6W3RoaXMuc291cmNlVG9rZW5dfSk7ZWxzZXtsZXQgYT1Obih0LnN0YXJ0KTt0aGlzLnN0YWNrLnB1c2goe3R5cGU6XFxcImJsb2NrLW1hcFxcXCIsb2Zmc2V0OnRoaXMub2Zmc2V0LGluZGVudDp0aGlzLmluZGVudCxpdGVtczpbe3N0YXJ0OmEsa2V5Om51bGwsc2VwOlt0aGlzLnNvdXJjZVRva2VuXX1dfSl9ZWxzZSB0LnNlcD90LnZhbHVlfHxpP2UuaXRlbXMucHVzaCh7c3RhcnQ6byxrZXk6bnVsbCxzZXA6W3RoaXMuc291cmNlVG9rZW5dfSk6enQodC5zZXAsXFxcIm1hcC12YWx1ZS1pbmRcXFwiKT90aGlzLnN0YWNrLnB1c2goe3R5cGU6XFxcImJsb2NrLW1hcFxcXCIsb2Zmc2V0OnRoaXMub2Zmc2V0LGluZGVudDp0aGlzLmluZGVudCxpdGVtczpbe3N0YXJ0OltdLGtleTpudWxsLHNlcDpbdGhpcy5zb3VyY2VUb2tlbl19XX0pOnQuc2VwLnB1c2godGhpcy5zb3VyY2VUb2tlbik6T2JqZWN0LmFzc2lnbih0LHtrZXk6bnVsbCxzZXA6W3RoaXMuc291cmNlVG9rZW5dfSk7dGhpcy5vbktleUxpbmU9ITA7cmV0dXJuO2Nhc2VcXFwiYWxpYXNcXFwiOmNhc2VcXFwic2NhbGFyXFxcIjpjYXNlXFxcInNpbmdsZS1xdW90ZWQtc2NhbGFyXFxcIjpjYXNlXFxcImRvdWJsZS1xdW90ZWQtc2NhbGFyXFxcIjp7bGV0IGE9dGhpcy5mbG93U2NhbGFyKHRoaXMudHlwZSk7aXx8dC52YWx1ZT8oZS5pdGVtcy5wdXNoKHtzdGFydDpvLGtleTphLHNlcDpbXX0pLHRoaXMub25LZXlMaW5lPSEwKTp0LnNlcD90aGlzLnN0YWNrLnB1c2goYSk6KE9iamVjdC5hc3NpZ24odCx7a2V5OmEsc2VwOltdfSksdGhpcy5vbktleUxpbmU9ITApO3JldHVybn1kZWZhdWx0OntsZXQgYT10aGlzLnN0YXJ0QmxvY2tWYWx1ZShlKTtpZihhKXtzJiZhLnR5cGUhPT1cXFwiYmxvY2stc2VxXFxcIiYmZS5pdGVtcy5wdXNoKHtzdGFydDpvfSksdGhpcy5zdGFjay5wdXNoKGEpO3JldHVybn19fX15aWVsZCpTKHRoaXMucG9wKCkpLHlpZWxkKlModGhpcy5zdGVwKCkpfSpibG9ja1NlcXVlbmNlKGUpe3ZhciByO2xldCB0PWUuaXRlbXNbZS5pdGVtcy5sZW5ndGgtMV07c3dpdGNoKHRoaXMudHlwZSl7Y2FzZVxcXCJuZXdsaW5lXFxcIjppZih0LnZhbHVlKXtsZXQgcz1cXFwiZW5kXFxcImluIHQudmFsdWU/dC52YWx1ZS5lbmQ6dm9pZCAwLGk9QXJyYXkuaXNBcnJheShzKT9zW3MubGVuZ3RoLTFdOnZvaWQgMDsoaT09bnVsbD92b2lkIDA6aS50eXBlKT09PVxcXCJjb21tZW50XFxcIj9zPT1udWxsfHxzLnB1c2godGhpcy5zb3VyY2VUb2tlbik6ZS5pdGVtcy5wdXNoKHtzdGFydDpbdGhpcy5zb3VyY2VUb2tlbl19KX1lbHNlIHQuc3RhcnQucHVzaCh0aGlzLnNvdXJjZVRva2VuKTtyZXR1cm47Y2FzZVxcXCJzcGFjZVxcXCI6Y2FzZVxcXCJjb21tZW50XFxcIjppZih0LnZhbHVlKWUuaXRlbXMucHVzaCh7c3RhcnQ6W3RoaXMuc291cmNlVG9rZW5dfSk7ZWxzZXtpZih0aGlzLmF0SW5kZW50ZWRDb21tZW50KHQuc3RhcnQsZS5pbmRlbnQpKXtsZXQgcz1lLml0ZW1zW2UuaXRlbXMubGVuZ3RoLTJdLGk9KHI9cz09bnVsbD92b2lkIDA6cy52YWx1ZSk9PW51bGw/dm9pZCAwOnIuZW5kO2lmKEFycmF5LmlzQXJyYXkoaSkpe0FycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KGksdC5zdGFydCksaS5wdXNoKHRoaXMuc291cmNlVG9rZW4pLGUuaXRlbXMucG9wKCk7cmV0dXJufX10LnN0YXJ0LnB1c2godGhpcy5zb3VyY2VUb2tlbil9cmV0dXJuO2Nhc2VcXFwiYW5jaG9yXFxcIjpjYXNlXFxcInRhZ1xcXCI6aWYodC52YWx1ZXx8dGhpcy5pbmRlbnQ8PWUuaW5kZW50KWJyZWFrO3Quc3RhcnQucHVzaCh0aGlzLnNvdXJjZVRva2VuKTtyZXR1cm47Y2FzZVxcXCJzZXEtaXRlbS1pbmRcXFwiOmlmKHRoaXMuaW5kZW50IT09ZS5pbmRlbnQpYnJlYWs7dC52YWx1ZXx8enQodC5zdGFydCxcXFwic2VxLWl0ZW0taW5kXFxcIik/ZS5pdGVtcy5wdXNoKHtzdGFydDpbdGhpcy5zb3VyY2VUb2tlbl19KTp0LnN0YXJ0LnB1c2godGhpcy5zb3VyY2VUb2tlbik7cmV0dXJufWlmKHRoaXMuaW5kZW50PmUuaW5kZW50KXtsZXQgcz10aGlzLnN0YXJ0QmxvY2tWYWx1ZShlKTtpZihzKXt0aGlzLnN0YWNrLnB1c2gocyk7cmV0dXJufX15aWVsZCpTKHRoaXMucG9wKCkpLHlpZWxkKlModGhpcy5zdGVwKCkpfSpmbG93Q29sbGVjdGlvbihlKXtsZXQgdD1lLml0ZW1zW2UuaXRlbXMubGVuZ3RoLTFdO2lmKHRoaXMudHlwZT09PVxcXCJmbG93LWVycm9yLWVuZFxcXCIpe2xldCByO2RvIHlpZWxkKlModGhpcy5wb3AoKSkscj10aGlzLnBlZWsoMSk7d2hpbGUociYmci50eXBlPT09XFxcImZsb3ctY29sbGVjdGlvblxcXCIpfWVsc2UgaWYoZS5lbmQubGVuZ3RoPT09MCl7c3dpdGNoKHRoaXMudHlwZSl7Y2FzZVxcXCJjb21tYVxcXCI6Y2FzZVxcXCJleHBsaWNpdC1rZXktaW5kXFxcIjohdHx8dC5zZXA/ZS5pdGVtcy5wdXNoKHtzdGFydDpbdGhpcy5zb3VyY2VUb2tlbl19KTp0LnN0YXJ0LnB1c2godGhpcy5zb3VyY2VUb2tlbik7cmV0dXJuO2Nhc2VcXFwibWFwLXZhbHVlLWluZFxcXCI6IXR8fHQudmFsdWU/ZS5pdGVtcy5wdXNoKHtzdGFydDpbXSxrZXk6bnVsbCxzZXA6W3RoaXMuc291cmNlVG9rZW5dfSk6dC5zZXA/dC5zZXAucHVzaCh0aGlzLnNvdXJjZVRva2VuKTpPYmplY3QuYXNzaWduKHQse2tleTpudWxsLHNlcDpbdGhpcy5zb3VyY2VUb2tlbl19KTtyZXR1cm47Y2FzZVxcXCJzcGFjZVxcXCI6Y2FzZVxcXCJjb21tZW50XFxcIjpjYXNlXFxcIm5ld2xpbmVcXFwiOmNhc2VcXFwiYW5jaG9yXFxcIjpjYXNlXFxcInRhZ1xcXCI6IXR8fHQudmFsdWU/ZS5pdGVtcy5wdXNoKHtzdGFydDpbdGhpcy5zb3VyY2VUb2tlbl19KTp0LnNlcD90LnNlcC5wdXNoKHRoaXMuc291cmNlVG9rZW4pOnQuc3RhcnQucHVzaCh0aGlzLnNvdXJjZVRva2VuKTtyZXR1cm47Y2FzZVxcXCJhbGlhc1xcXCI6Y2FzZVxcXCJzY2FsYXJcXFwiOmNhc2VcXFwic2luZ2xlLXF1b3RlZC1zY2FsYXJcXFwiOmNhc2VcXFwiZG91YmxlLXF1b3RlZC1zY2FsYXJcXFwiOntsZXQgcz10aGlzLmZsb3dTY2FsYXIodGhpcy50eXBlKTshdHx8dC52YWx1ZT9lLml0ZW1zLnB1c2goe3N0YXJ0OltdLGtleTpzLHNlcDpbXX0pOnQuc2VwP3RoaXMuc3RhY2sucHVzaChzKTpPYmplY3QuYXNzaWduKHQse2tleTpzLHNlcDpbXX0pO3JldHVybn1jYXNlXFxcImZsb3ctbWFwLWVuZFxcXCI6Y2FzZVxcXCJmbG93LXNlcS1lbmRcXFwiOmUuZW5kLnB1c2godGhpcy5zb3VyY2VUb2tlbik7cmV0dXJufWxldCByPXRoaXMuc3RhcnRCbG9ja1ZhbHVlKGUpO3I/dGhpcy5zdGFjay5wdXNoKHIpOih5aWVsZCpTKHRoaXMucG9wKCkpLHlpZWxkKlModGhpcy5zdGVwKCkpKX1lbHNle2xldCByPXRoaXMucGVlaygyKTtpZihyLnR5cGU9PT1cXFwiYmxvY2stbWFwXFxcIiYmKHRoaXMudHlwZT09PVxcXCJtYXAtdmFsdWUtaW5kXFxcIiYmci5pbmRlbnQ9PT1lLmluZGVudHx8dGhpcy50eXBlPT09XFxcIm5ld2xpbmVcXFwiJiYhci5pdGVtc1tyLml0ZW1zLmxlbmd0aC0xXS5zZXApKXlpZWxkKlModGhpcy5wb3AoKSkseWllbGQqUyh0aGlzLnN0ZXAoKSk7ZWxzZSBpZih0aGlzLnR5cGU9PT1cXFwibWFwLXZhbHVlLWluZFxcXCImJnIudHlwZSE9PVxcXCJmbG93LWNvbGxlY3Rpb25cXFwiKXtsZXQgcz1CcyhyKSxpPU5uKHMpO0x1KGUpO2xldCBvPWUuZW5kLnNwbGljZSgxLGUuZW5kLmxlbmd0aCk7by5wdXNoKHRoaXMuc291cmNlVG9rZW4pO2xldCBhPXt0eXBlOlxcXCJibG9jay1tYXBcXFwiLG9mZnNldDplLm9mZnNldCxpbmRlbnQ6ZS5pbmRlbnQsaXRlbXM6W3tzdGFydDppLGtleTplLHNlcDpvfV19O3RoaXMub25LZXlMaW5lPSEwLHRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGgtMV09YX1lbHNlIHlpZWxkKlModGhpcy5saW5lRW5kKGUpKX19Zmxvd1NjYWxhcihlKXtpZih0aGlzLm9uTmV3TGluZSl7bGV0IHQ9dGhpcy5zb3VyY2UuaW5kZXhPZihgXFxuYCkrMTtmb3IoO3QhPT0wOyl0aGlzLm9uTmV3TGluZSh0aGlzLm9mZnNldCt0KSx0PXRoaXMuc291cmNlLmluZGV4T2YoYFxcbmAsdCkrMX1yZXR1cm57dHlwZTplLG9mZnNldDp0aGlzLm9mZnNldCxpbmRlbnQ6dGhpcy5pbmRlbnQsc291cmNlOnRoaXMuc291cmNlfX1zdGFydEJsb2NrVmFsdWUoZSl7c3dpdGNoKHRoaXMudHlwZSl7Y2FzZVxcXCJhbGlhc1xcXCI6Y2FzZVxcXCJzY2FsYXJcXFwiOmNhc2VcXFwic2luZ2xlLXF1b3RlZC1zY2FsYXJcXFwiOmNhc2VcXFwiZG91YmxlLXF1b3RlZC1zY2FsYXJcXFwiOnJldHVybiB0aGlzLmZsb3dTY2FsYXIodGhpcy50eXBlKTtjYXNlXFxcImJsb2NrLXNjYWxhci1oZWFkZXJcXFwiOnJldHVybnt0eXBlOlxcXCJibG9jay1zY2FsYXJcXFwiLG9mZnNldDp0aGlzLm9mZnNldCxpbmRlbnQ6dGhpcy5pbmRlbnQscHJvcHM6W3RoaXMuc291cmNlVG9rZW5dLHNvdXJjZTpcXFwiXFxcIn07Y2FzZVxcXCJmbG93LW1hcC1zdGFydFxcXCI6Y2FzZVxcXCJmbG93LXNlcS1zdGFydFxcXCI6cmV0dXJue3R5cGU6XFxcImZsb3ctY29sbGVjdGlvblxcXCIsb2Zmc2V0OnRoaXMub2Zmc2V0LGluZGVudDp0aGlzLmluZGVudCxzdGFydDp0aGlzLnNvdXJjZVRva2VuLGl0ZW1zOltdLGVuZDpbXX07Y2FzZVxcXCJzZXEtaXRlbS1pbmRcXFwiOnJldHVybnt0eXBlOlxcXCJibG9jay1zZXFcXFwiLG9mZnNldDp0aGlzLm9mZnNldCxpbmRlbnQ6dGhpcy5pbmRlbnQsaXRlbXM6W3tzdGFydDpbdGhpcy5zb3VyY2VUb2tlbl19XX07Y2FzZVxcXCJleHBsaWNpdC1rZXktaW5kXFxcIjp7dGhpcy5vbktleUxpbmU9ITA7bGV0IHQ9QnMoZSkscj1Obih0KTtyZXR1cm4gci5wdXNoKHRoaXMuc291cmNlVG9rZW4pLHt0eXBlOlxcXCJibG9jay1tYXBcXFwiLG9mZnNldDp0aGlzLm9mZnNldCxpbmRlbnQ6dGhpcy5pbmRlbnQsaXRlbXM6W3tzdGFydDpyLGV4cGxpY2l0S2V5OiEwfV19fWNhc2VcXFwibWFwLXZhbHVlLWluZFxcXCI6e3RoaXMub25LZXlMaW5lPSEwO2xldCB0PUJzKGUpLHI9Tm4odCk7cmV0dXJue3R5cGU6XFxcImJsb2NrLW1hcFxcXCIsb2Zmc2V0OnRoaXMub2Zmc2V0LGluZGVudDp0aGlzLmluZGVudCxpdGVtczpbe3N0YXJ0OnIsa2V5Om51bGwsc2VwOlt0aGlzLnNvdXJjZVRva2VuXX1dfX19cmV0dXJuIG51bGx9YXRJbmRlbnRlZENvbW1lbnQoZSx0KXtyZXR1cm4gdGhpcy50eXBlIT09XFxcImNvbW1lbnRcXFwifHx0aGlzLmluZGVudDw9dD8hMTplLmV2ZXJ5KHI9PnIudHlwZT09PVxcXCJuZXdsaW5lXFxcInx8ci50eXBlPT09XFxcInNwYWNlXFxcIil9KmRvY3VtZW50RW5kKGUpe3RoaXMudHlwZSE9PVxcXCJkb2MtbW9kZVxcXCImJihlLmVuZD9lLmVuZC5wdXNoKHRoaXMuc291cmNlVG9rZW4pOmUuZW5kPVt0aGlzLnNvdXJjZVRva2VuXSx0aGlzLnR5cGU9PT1cXFwibmV3bGluZVxcXCImJih5aWVsZCpTKHRoaXMucG9wKCkpKSl9KmxpbmVFbmQoZSl7c3dpdGNoKHRoaXMudHlwZSl7Y2FzZVxcXCJjb21tYVxcXCI6Y2FzZVxcXCJkb2Mtc3RhcnRcXFwiOmNhc2VcXFwiZG9jLWVuZFxcXCI6Y2FzZVxcXCJmbG93LXNlcS1lbmRcXFwiOmNhc2VcXFwiZmxvdy1tYXAtZW5kXFxcIjpjYXNlXFxcIm1hcC12YWx1ZS1pbmRcXFwiOnlpZWxkKlModGhpcy5wb3AoKSkseWllbGQqUyh0aGlzLnN0ZXAoKSk7YnJlYWs7Y2FzZVxcXCJuZXdsaW5lXFxcIjp0aGlzLm9uS2V5TGluZT0hMTtjYXNlXFxcInNwYWNlXFxcIjpjYXNlXFxcImNvbW1lbnRcXFwiOmRlZmF1bHQ6ZS5lbmQ/ZS5lbmQucHVzaCh0aGlzLnNvdXJjZVRva2VuKTplLmVuZD1bdGhpcy5zb3VyY2VUb2tlbl0sdGhpcy50eXBlPT09XFxcIm5ld2xpbmVcXFwiJiYoeWllbGQqUyh0aGlzLnBvcCgpKSl9fX07ZnVuY3Rpb24gd2Yobil7bGV0IGU9bi5wcmV0dHlFcnJvcnMhPT0hMTtyZXR1cm57bGluZUNvdW50ZXI6bi5saW5lQ291bnRlcnx8ZSYmbmV3IE5yfHxudWxsLHByZXR0eUVycm9yczplfX1mdW5jdGlvbiBBdShuLGU9e30pe2xldHtsaW5lQ291bnRlcjp0LHByZXR0eUVycm9yczpyfT13ZihlKSxzPW5ldyBBcih0PT1udWxsP3ZvaWQgMDp0LmFkZE5ld0xpbmUpLGk9bmV3IElyKGUpLG89bnVsbDtmb3IobGV0IGEgb2YgaS5jb21wb3NlKHMucGFyc2UobiksITAsbi5sZW5ndGgpKWlmKCFvKW89YTtlbHNlIGlmKG8ub3B0aW9ucy5sb2dMZXZlbCE9PVxcXCJzaWxlbnRcXFwiKXtvLmVycm9ycy5wdXNoKG5ldyBRZShhLnJhbmdlLnNsaWNlKDAsMiksXFxcIk1VTFRJUExFX0RPQ1NcXFwiLFxcXCJTb3VyY2UgY29udGFpbnMgbXVsdGlwbGUgZG9jdW1lbnRzOyBwbGVhc2UgdXNlIFlBTUwucGFyc2VBbGxEb2N1bWVudHMoKVxcXCIpKTticmVha31yZXR1cm4gciYmdCYmKG8uZXJyb3JzLmZvckVhY2goWmkobix0KSksby53YXJuaW5ncy5mb3JFYWNoKFppKG4sdCkpKSxvfWZ1bmN0aW9uIGNvKG4sZSx0KXtsZXQgcjt0eXBlb2YgZT09XFxcImZ1bmN0aW9uXFxcIj9yPWU6dD09PXZvaWQgMCYmZSYmdHlwZW9mIGU9PVxcXCJvYmplY3RcXFwiJiYodD1lKTtsZXQgcz1BdShuLHQpO2lmKCFzKXJldHVybiBudWxsO2lmKHMud2FybmluZ3MuZm9yRWFjaChpPT5tcyhzLm9wdGlvbnMubG9nTGV2ZWwsaSkpLHMuZXJyb3JzLmxlbmd0aD4wKXtpZihzLm9wdGlvbnMubG9nTGV2ZWwhPT1cXFwic2lsZW50XFxcIil0aHJvdyBzLmVycm9yc1swXTtzLmVycm9ycz1bXX1yZXR1cm4gcy50b0pTKE9iamVjdC5hc3NpZ24oe3Jldml2ZXI6cn0sdCkpfXZhciBqcz1WcihSdSgpKTt2YXIgRj1WcihucygpKTt2YXIgZXQ7KE49PntOLkRFRkFVTFRfVE9fU1RSSU5HPXtudWxsUmVwcmVzZW50YXRpb246XFxcIi1cXFwiLGRhdGVGb3JtYXQ6XFxcIk1NTU0gZGQsIHl5eXlcXFwiLGRhdGVUaW1lRm9ybWF0OlxcXCJoOm1tIGEgLSBNTU1NIGRkLCB5eXl5XFxcIn07ZnVuY3Rpb24gZSh5LHc9Ti5ERUZBVUxUX1RPX1NUUklORyx2PSExKXtsZXQgeD10KHkpO2lmKCF4KXJldHVybiB3Lm51bGxSZXByZXNlbnRhdGlvbjtzd2l0Y2goeC50eXBlKXtjYXNlXFxcIm51bGxcXFwiOnJldHVybiB3Lm51bGxSZXByZXNlbnRhdGlvbjtjYXNlXFxcInN0cmluZ1xcXCI6cmV0dXJuIHgudmFsdWU7Y2FzZVxcXCJudW1iZXJcXFwiOmNhc2VcXFwiYm9vbGVhblxcXCI6cmV0dXJuXFxcIlxcXCIreC52YWx1ZTtjYXNlXFxcImxpbmtcXFwiOnJldHVybiB4LnZhbHVlLm1hcmtkb3duKCk7Y2FzZVxcXCJmdW5jdGlvblxcXCI6cmV0dXJuXFxcIjxmdW5jdGlvbj5cXFwiO2Nhc2VcXFwiYXJyYXlcXFwiOmxldCBDPVxcXCJcXFwiO3JldHVybiB2JiYoQys9XFxcIltcXFwiKSxDKz14LnZhbHVlLm1hcChWPT5lKFYsdywhMCkpLmpvaW4oXFxcIiwgXFxcIiksdiYmKEMrPVxcXCJdXFxcIiksQztjYXNlXFxcIm9iamVjdFxcXCI6cmV0dXJuXFxcInsgXFxcIitPYmplY3QuZW50cmllcyh4LnZhbHVlKS5tYXAoVj0+VlswXStcXFwiOiBcXFwiK2UoVlsxXSx3LCEwKSkuam9pbihcXFwiLCBcXFwiKStcXFwiIH1cXFwiO2Nhc2VcXFwiZGF0ZVxcXCI6cmV0dXJuIGphKHgudmFsdWUsdy5kYXRlRm9ybWF0LHcuZGF0ZVRpbWVGb3JtYXQpO2Nhc2VcXFwiZHVyYXRpb25cXFwiOnJldHVybiBxYSh4LnZhbHVlKX19Ti50b1N0cmluZz1lO2Z1bmN0aW9uIHQoeSl7cmV0dXJuIGgoeSk/e3R5cGU6XFxcIm51bGxcXFwiLHZhbHVlOnl9OmYoeSk/e3R5cGU6XFxcIm51bWJlclxcXCIsdmFsdWU6eX06bCh5KT97dHlwZTpcXFwic3RyaW5nXFxcIix2YWx1ZTp5fTpnKHkpP3t0eXBlOlxcXCJib29sZWFuXFxcIix2YWx1ZTp5fTptKHkpP3t0eXBlOlxcXCJkdXJhdGlvblxcXCIsdmFsdWU6eX06ZCh5KT97dHlwZTpcXFwiZGF0ZVxcXCIsdmFsdWU6eX06Yih5KT97dHlwZTpcXFwiYXJyYXlcXFwiLHZhbHVlOnl9OkQoeSk/e3R5cGU6XFxcImxpbmtcXFwiLHZhbHVlOnl9OkkoeSk/e3R5cGU6XFxcImZ1bmN0aW9uXFxcIix2YWx1ZTp5fTpUKHkpP3t0eXBlOlxcXCJvYmplY3RcXFwiLHZhbHVlOnl9OnZvaWQgMH1OLndyYXBWYWx1ZT10O2Z1bmN0aW9uIHIoeSx3KXtpZihUKHkpKXtsZXQgdj17fTtmb3IobGV0W3gsQ11vZiBPYmplY3QuZW50cmllcyh5KSl2W3hdPXIoQyx3KTtyZXR1cm4gdn1lbHNlIGlmKGIoeSkpe2xldCB2PVtdO2ZvcihsZXQgeCBvZiB5KXYucHVzaChyKHgsdykpO3JldHVybiB2fWVsc2UgcmV0dXJuIHcoeSl9Ti5tYXBMZWF2ZXM9cjtmdW5jdGlvbiBzKHksdyl7cmV0dXJuIGkoeSx3KT09MH1OLmVxdWFscz1zO2Z1bmN0aW9uIGkoeSx3LHYpe3ZhciBWLGo7aWYoeT09PXd8fCh5PT09dm9pZCAwJiYoeT1udWxsKSx3PT09dm9pZCAwJiYodz1udWxsKSx5PT09bnVsbCYmdz09PW51bGwpKXJldHVybiAwO2lmKHk9PT1udWxsKXJldHVybi0xO2lmKHc9PT1udWxsKXJldHVybiAxO2xldCB4PXQoeSksQz10KHcpO2lmKHg9PT12b2lkIDAmJkM9PT12b2lkIDApcmV0dXJuIDA7aWYoeD09PXZvaWQgMClyZXR1cm4tMTtpZihDPT09dm9pZCAwKXJldHVybiAxO2lmKHgudHlwZSE9Qy50eXBlKXJldHVybiB4LnR5cGUubG9jYWxlQ29tcGFyZShDLnR5cGUpO2lmKHgudmFsdWU9PT1DLnZhbHVlKXJldHVybiAwO3N3aXRjaCh4LnR5cGUpe2Nhc2VcXFwic3RyaW5nXFxcIjpyZXR1cm4geC52YWx1ZS5sb2NhbGVDb21wYXJlKEMudmFsdWUpO2Nhc2VcXFwibnVtYmVyXFxcIjpyZXR1cm4geC52YWx1ZTxDLnZhbHVlPy0xOngudmFsdWU9PUMudmFsdWU/MDoxO2Nhc2VcXFwibnVsbFxcXCI6cmV0dXJuIDA7Y2FzZVxcXCJib29sZWFuXFxcIjpyZXR1cm4geC52YWx1ZT09Qy52YWx1ZT8wOngudmFsdWU/MTotMTtjYXNlXFxcImxpbmtcXFwiOmxldCBZPXgudmFsdWUsZWU9Qy52YWx1ZSxhZT12IT1udWxsP3Y6QWU9PkFlLE89YWUoWS5wYXRoKS5sb2NhbGVDb21wYXJlKGFlKGVlLnBhdGgpKTtpZihPIT0wKXJldHVybiBPO2xldCAkPVkudHlwZS5sb2NhbGVDb21wYXJlKGVlLnR5cGUpO3JldHVybiAkIT0wPyQ6WS5zdWJwYXRoJiYhZWUuc3VicGF0aD8xOiFZLnN1YnBhdGgmJmVlLnN1YnBhdGg/LTE6IVkuc3VicGF0aCYmIWVlLnN1YnBhdGg/MDooKFY9WS5zdWJwYXRoKSE9bnVsbD9WOlxcXCJcXFwiKS5sb2NhbGVDb21wYXJlKChqPWVlLnN1YnBhdGgpIT1udWxsP2o6XFxcIlxcXCIpO2Nhc2VcXFwiZGF0ZVxcXCI6cmV0dXJuIHgudmFsdWU8Qy52YWx1ZT8tMTp4LnZhbHVlLmVxdWFscyhDLnZhbHVlKT8wOjE7Y2FzZVxcXCJkdXJhdGlvblxcXCI6cmV0dXJuIHgudmFsdWU8Qy52YWx1ZT8tMTp4LnZhbHVlLmVxdWFscyhDLnZhbHVlKT8wOjE7Y2FzZVxcXCJhcnJheVxcXCI6bGV0IFE9eC52YWx1ZSx1ZT1DLnZhbHVlO2ZvcihsZXQgQWU9MDtBZTxNYXRoLm1pbihRLmxlbmd0aCx1ZS5sZW5ndGgpO0FlKyspe2xldCBCdD1pKFFbQWVdLHVlW0FlXSk7aWYoQnQhPTApcmV0dXJuIEJ0fXJldHVybiBRLmxlbmd0aC11ZS5sZW5ndGg7Y2FzZVxcXCJvYmplY3RcXFwiOmxldCBEZT14LnZhbHVlLFJlPUMudmFsdWUsUXQ9QXJyYXkuZnJvbShPYmplY3Qua2V5cyhEZSkpLE10PUFycmF5LmZyb20oT2JqZWN0LmtleXMoUmUpKTtRdC5zb3J0KCksTXQuc29ydCgpO2xldCBfdD1pKFF0LE10KTtpZihfdCE9MClyZXR1cm4gX3Q7Zm9yKGxldCBBZSBvZiBRdCl7bGV0IEJ0PWkoRGVbQWVdLFJlW0FlXSk7aWYoQnQhPTApcmV0dXJuIEJ0fXJldHVybiAwO2Nhc2VcXFwiZnVuY3Rpb25cXFwiOnJldHVybiAwfX1OLmNvbXBhcmU9aTtmdW5jdGlvbiBvKHkpe3ZhciB3O3JldHVybih3PXQoeSkpPT1udWxsP3ZvaWQgMDp3LnR5cGV9Ti50eXBlT2Y9bztmdW5jdGlvbiBhKHkpe2xldCB3PXQoeSk7aWYoIXcpcmV0dXJuITE7c3dpdGNoKHcudHlwZSl7Y2FzZVxcXCJudW1iZXJcXFwiOnJldHVybiB3LnZhbHVlIT0wO2Nhc2VcXFwic3RyaW5nXFxcIjpyZXR1cm4gdy52YWx1ZS5sZW5ndGg+MDtjYXNlXFxcImJvb2xlYW5cXFwiOnJldHVybiB3LnZhbHVlO2Nhc2VcXFwibGlua1xcXCI6cmV0dXJuISF3LnZhbHVlLnBhdGg7Y2FzZVxcXCJkYXRlXFxcIjpyZXR1cm4gdy52YWx1ZS50b01pbGxpcygpIT0wO2Nhc2VcXFwiZHVyYXRpb25cXFwiOnJldHVybiB3LnZhbHVlLmFzKFxcXCJzZWNvbmRzXFxcIikhPTA7Y2FzZVxcXCJvYmplY3RcXFwiOnJldHVybiBPYmplY3Qua2V5cyh3LnZhbHVlKS5sZW5ndGg+MDtjYXNlXFxcImFycmF5XFxcIjpyZXR1cm4gdy52YWx1ZS5sZW5ndGg+MDtjYXNlXFxcIm51bGxcXFwiOnJldHVybiExO2Nhc2VcXFwiZnVuY3Rpb25cXFwiOnJldHVybiEwfX1OLmlzVHJ1dGh5PWE7ZnVuY3Rpb24gdSh5KXtpZih5PT1udWxsKXJldHVybiB5O2lmKE4uaXNBcnJheSh5KSlyZXR1cm5bXS5jb25jYXQoeS5tYXAodz0+dSh3KSkpO2lmKE4uaXNPYmplY3QoeSkpe2xldCB3PXt9O2ZvcihsZXRbdix4XW9mIE9iamVjdC5lbnRyaWVzKHkpKXdbdl09dSh4KTtyZXR1cm4gd31lbHNlIHJldHVybiB5fU4uZGVlcENvcHk9dTtmdW5jdGlvbiBsKHkpe3JldHVybiB0eXBlb2YgeT09XFxcInN0cmluZ1xcXCJ9Ti5pc1N0cmluZz1sO2Z1bmN0aW9uIGYoeSl7cmV0dXJuIHR5cGVvZiB5PT1cXFwibnVtYmVyXFxcIn1OLmlzTnVtYmVyPWY7ZnVuY3Rpb24gZCh5KXtyZXR1cm4geSBpbnN0YW5jZW9mIHF9Ti5pc0RhdGU9ZDtmdW5jdGlvbiBtKHkpe3JldHVybiB5IGluc3RhbmNlb2YgQn1OLmlzRHVyYXRpb249bTtmdW5jdGlvbiBoKHkpe3JldHVybiB5PT1udWxsfU4uaXNOdWxsPWg7ZnVuY3Rpb24gYih5KXtyZXR1cm4gQXJyYXkuaXNBcnJheSh5KX1OLmlzQXJyYXk9YjtmdW5jdGlvbiBnKHkpe3JldHVybiB0eXBlb2YgeT09XFxcImJvb2xlYW5cXFwifU4uaXNCb29sZWFuPWc7ZnVuY3Rpb24gRCh5KXtyZXR1cm4geSBpbnN0YW5jZW9mIE9lfU4uaXNMaW5rPUQ7ZnVuY3Rpb24gVCh5KXtyZXR1cm4geSE9PXZvaWQgMCYmdHlwZW9mIHk9PVxcXCJvYmplY3RcXFwiJiYhYih5KSYmIW0oeSkmJiFkKHkpJiYhRCh5KSYmIWgoeSl9Ti5pc09iamVjdD1UO2Z1bmN0aW9uIEkoeSl7cmV0dXJuIHR5cGVvZiB5PT1cXFwiZnVuY3Rpb25cXFwifU4uaXNGdW5jdGlvbj1JfSkoZXR8fChldD17fSkpO3ZhciBqdTsoaT0+e2Z1bmN0aW9uIG4obyl7cmV0dXJuIGV0LmlzT2JqZWN0KG8pJiZPYmplY3Qua2V5cyhvKS5sZW5ndGg9PTImJlxcXCJrZXlcXFwiaW4gbyYmXFxcInJvd3NcXFwiaW4gb31pLmlzRWxlbWVudEdyb3VwPW47ZnVuY3Rpb24gZShvKXtmb3IobGV0IGEgb2YgbylpZighbihhKSlyZXR1cm4hMTtyZXR1cm4hMH1pLmlzR3JvdXBpbmc9ZTtmdW5jdGlvbiB0KG8pe2ZvcihsZXQgYSBvZiBvKWlmKG4oYSkpcmV0dXJuITE7cmV0dXJuITB9aS5pc0xlYWY9dDtmdW5jdGlvbiByKG8pe2lmKG4obykpcmV0dXJuIHIoby5yb3dzKTtpZihlKG8pKXtsZXQgYT0wO2ZvcihsZXQgdSBvZiBvKWErPXIodS5yb3dzKTtyZXR1cm4gYX1lbHNlIHJldHVybiBvLmxlbmd0aH1pLmNvdW50PXI7ZnVuY3Rpb24gcyhvLGEsdSl7aWYodTw9YSlyZXR1cm5bXTtpZih0KG8pKXJldHVybiBvLnNsaWNlKGEsdSk7bGV0IGw9MCxmPTA7Zm9yKDtsPG8ubGVuZ3RoJiZmK3Iob1tsXSk8PWE7KWYrPXIob1tsXSksbCsrO2lmKGw+PW8ubGVuZ3RoKXJldHVybltdO2xldCBkPVtdO2Zvcig7bDxvLmxlbmd0aCYmZjx1Oyl7bGV0IG09b1tsXSxoPXIobSksYj1NYXRoLm1heChmLGEpLGc9TWF0aC5taW4oaCtmLHUpO2QucHVzaCh7a2V5Om0ua2V5LHJvd3M6cyhtLnJvd3MsYi1mLGctZil9KSxmKz1oLGwrK31yZXR1cm4gZH1pLnNsaWNlPXN9KShqdXx8KGp1PXt9KSk7dmFyIGhvPWNsYXNzIG57Y29uc3RydWN0b3IoZSl7dGhpcy52YWx1ZT1lO3RoaXMuc3VjY2Vzc2Z1bD0hMH1tYXAoZSl7cmV0dXJuIG5ldyBuKGUodGhpcy52YWx1ZSkpfWZsYXRNYXAoZSl7cmV0dXJuIGUodGhpcy52YWx1ZSl9bWFwRXJyKGUpe3JldHVybiB0aGlzfWJpbWFwKGUsdCl7cmV0dXJuIHRoaXMubWFwKGUpfW9yRWxzZShlKXtyZXR1cm4gdGhpcy52YWx1ZX1jYXN0KCl7cmV0dXJuIHRoaXN9b3JFbHNlVGhyb3coZSl7cmV0dXJuIHRoaXMudmFsdWV9fSxtbz1jbGFzcyBue2NvbnN0cnVjdG9yKGUpe3RoaXMuZXJyb3I9ZTt0aGlzLnN1Y2Nlc3NmdWw9ITF9bWFwKGUpe3JldHVybiB0aGlzfWZsYXRNYXAoZSl7cmV0dXJuIHRoaXN9bWFwRXJyKGUpe3JldHVybiBuZXcgbihlKHRoaXMuZXJyb3IpKX1iaW1hcChlLHQpe3JldHVybiB0aGlzLm1hcEVycih0KX1vckVsc2UoZSl7cmV0dXJuIGV9Y2FzdCgpe3JldHVybiB0aGlzfW9yRWxzZVRocm93KGUpe3Rocm93IGU/bmV3IEVycm9yKGUodGhpcy5lcnJvcikpOm5ldyBFcnJvcihcXFwiXFxcIit0aGlzLmVycm9yKX19LFNlOyhhPT57ZnVuY3Rpb24gbih1KXtyZXR1cm4gbmV3IGhvKHUpfWEuc3VjY2Vzcz1uO2Z1bmN0aW9uIGUodSl7cmV0dXJuIG5ldyBtbyh1KX1hLmZhaWx1cmU9ZTtmdW5jdGlvbiB0KHUsbCxmKXtyZXR1cm4gdS5zdWNjZXNzZnVsP2wuc3VjY2Vzc2Z1bD9mKHUudmFsdWUsbC52YWx1ZSk6ZShsLmVycm9yKTplKHUuZXJyb3IpfWEuZmxhdE1hcDI9dDtmdW5jdGlvbiByKHUsbCxmKXtyZXR1cm4gdCh1LGwsKGQsbSk9Pm4oZihkLG0pKSl9YS5tYXAyPXI7ZnVuY3Rpb24gcyh1LGwpe2xldCBmPVtdO2ZvcihsZXQgZCBvZiB1KXtsZXQgbT1sKGQpO2lmKCFtLnN1Y2Nlc3NmdWwpcmV0dXJuIG0uY2FzdCgpO2YucHVzaChtLnZhbHVlKX1yZXR1cm4gYS5zdWNjZXNzKGYpfWEubWFwQWxsPXM7ZnVuY3Rpb24gaSh1KXt0cnl7cmV0dXJuIGEuc3VjY2Vzcyh1KCkpfWNhdGNoKGwpe3JldHVybiBhLmZhaWx1cmUobCl9fWEudHJ5aW5nPWk7YXN5bmMgZnVuY3Rpb24gbyh1KXt0cnl7cmV0dXJuIGEuc3VjY2Vzcyhhd2FpdCB1KX1jYXRjaChsKXtyZXR1cm4gYS5mYWlsdXJlKGwpfX1hLmFzeW5jPW99KShTZXx8KFNlPXt9KSk7dmFyIFl0OyhOPT57Ti5FVkVSWVRISU5HPXt0eXBlOlxcXCJldmVyeXRoaW5nXFxcIn0sTi5OT1RISU5HPXt0eXBlOlxcXCJub3RoaW5nXFxcIn0sTi5FTVBUWV9TRVQ9bmV3IFNldDtmdW5jdGlvbiByKHkpe3JldHVybiB5LnNpemU9PTA/Ti5OT1RISU5HOnt0eXBlOlxcXCJhdG9tXFxcIix2YWx1ZTp5fX1OLmF0b209cjtmdW5jdGlvbiBzKHkpe3JldHVybiB5P04uRVZFUllUSElORzpOLk5PVEhJTkd9Ti5jb25zdGFudD1zO2Z1bmN0aW9uIGkoeSl7cmV0dXJuIHkhPT12b2lkIDA/cih5KTpOLk5PVEhJTkd9Ti5udWxsYWJsZUF0b209aTtmdW5jdGlvbiBvKHkpe3JldHVybiB5LnNpemU9PTA/Ti5FVkVSWVRISU5HOnt0eXBlOlxcXCJuZWdhdGVkXFxcIix2YWx1ZTp5fX1OLm5lZ2F0ZWQ9bztmdW5jdGlvbiBhKHkpe3N3aXRjaCh5LnR5cGUpe2Nhc2VcXFwiZXZlcnl0aGluZ1xcXCI6cmV0dXJuIE4uTk9USElORztjYXNlXFxcIm5vdGhpbmdcXFwiOnJldHVybiBOLkVWRVJZVEhJTkc7Y2FzZVxcXCJhdG9tXFxcIjpyZXR1cm4gbyh5LnZhbHVlKTtjYXNlXFxcIm5lZ2F0ZWRcXFwiOnJldHVybiByKHkudmFsdWUpfX1OLm5lZ2F0ZT1hO2Z1bmN0aW9uIHUoeSl7c3dpdGNoKHkudHlwZSl7Y2FzZVxcXCJldmVyeXRoaW5nXFxcIjpyZXR1cm4hMTtjYXNlXFxcIm5lZ2F0ZWRcXFwiOnJldHVybiExO2Nhc2VcXFwiYXRvbVxcXCI6cmV0dXJuIHkudmFsdWUuc2l6ZT09MDtjYXNlXFxcIm5vdGhpbmdcXFwiOnJldHVybiEwfX1OLmVtcHR5PXU7ZnVuY3Rpb24gbCh5LHcpe3N3aXRjaCh5LnR5cGUpe2Nhc2VcXFwiZXZlcnl0aGluZ1xcXCI6cmV0dXJuIHc7Y2FzZVxcXCJub3RoaW5nXFxcIjpyZXR1cm4gTi5FTVBUWV9TRVQ7Y2FzZVxcXCJhdG9tXFxcIjpyZXR1cm4geS52YWx1ZTtjYXNlXFxcIm5lZ2F0ZWRcXFwiOnJldHVybiBJKHcseS52YWx1ZSl9fU4ucmVzb2x2ZT1sO2Z1bmN0aW9uIGYoeSl7cmV0dXJuIGQoeSx3PT53KX1OLmludGVyc2VjdD1mO2Z1bmN0aW9uIGQoeSx3KXtyZXR1cm4gbSh5LHY9PlNlLnN1Y2Nlc3Modyh2KSkpLm9yRWxzZVRocm93KCl9Ti5sYXp5SW50ZXJzZWN0PWQ7ZnVuY3Rpb24gbSh5LHcpe2xldCB2PVtdLHg9W107Zm9yKGxldCBDIG9mIHkpe2xldCBWPXcoQyk7aWYoIVYuc3VjY2Vzc2Z1bClyZXR1cm4gVi5jYXN0KCk7bGV0IGo9Vi52YWx1ZTtpZihqIT09dm9pZCAwKXtpZih1KGopKXJldHVybiBTZS5zdWNjZXNzKE4uTk9USElORyk7ai50eXBlIT09XFxcImV2ZXJ5dGhpbmdcXFwiJiYoai50eXBlPT1cXFwiYXRvbVxcXCI/di5wdXNoKGoudmFsdWUpOmoudHlwZT09XFxcIm5lZ2F0ZWRcXFwiJiZ4LnB1c2goai52YWx1ZSkpfX1yZXR1cm4gdi5sZW5ndGg9PTAmJngubGVuZ3RoPT0wP1NlLnN1Y2Nlc3MoTi5FVkVSWVRISU5HKTp2Lmxlbmd0aD4wJiZ4Lmxlbmd0aD09MD9TZS5zdWNjZXNzKHIoRCh2KSkpOnYubGVuZ3RoPT0wJiZ4Lmxlbmd0aD4wP1NlLnN1Y2Nlc3MobyhUKHgpKSk6U2Uuc3VjY2VzcyhOLmF0b20oSShEKHYpLFQoeCkpKSl9Ti5sYXp5RmFpbGFibGVJbnRlcnNlY3Rpb249bTtmdW5jdGlvbiBoKHkpe3JldHVybiBiKHksdz0+dyl9Ti51bmlvbj1oO2Z1bmN0aW9uIGIoeSx3KXtyZXR1cm4gZyh5LHY9PlNlLnN1Y2Nlc3Modyh2KSkpLm9yRWxzZVRocm93KCl9Ti5sYXp5VW5pb249YjtmdW5jdGlvbiBnKHksdyl7bGV0IHY9W10seD1bXTtmb3IobGV0IEMgb2YgeSl7bGV0IFY9dyhDKTtpZighVi5zdWNjZXNzZnVsKXJldHVybiBWLmNhc3QoKTtsZXQgaj1WLnZhbHVlO2lmKGohPT12b2lkIDApe2lmKGoudHlwZT09PVxcXCJldmVyeXRoaW5nXFxcIilyZXR1cm4gU2Uuc3VjY2VzcyhOLkVWRVJZVEhJTkcpO3Uoail8fChqLnR5cGU9PVxcXCJhdG9tXFxcIj92LnB1c2goai52YWx1ZSk6ai50eXBlPT1cXFwibmVnYXRlZFxcXCImJngucHVzaChqLnZhbHVlKSl9fXJldHVybiB2Lmxlbmd0aD09MCYmeC5sZW5ndGg9PTA/U2Uuc3VjY2VzcyhOLk5PVEhJTkcpOnYubGVuZ3RoPjAmJngubGVuZ3RoPT0wP1NlLnN1Y2Nlc3MoTi5hdG9tKFQodikpKTp2Lmxlbmd0aD09MCYmeC5sZW5ndGg+MD9TZS5zdWNjZXNzKE4ubmVnYXRlZChEKHgpKSk6U2Uuc3VjY2VzcyhvKEkoRCh4KSxUKHYpKSkpfU4ubGF6eUZhaWxhYmxlVW5pb249ZztmdW5jdGlvbiBEKHkpe2lmKHkubGVuZ3RoPT0wKXJldHVybiBuZXcgU2V0O2lmKHkubGVuZ3RoPT0xKXJldHVybiB5WzBdO2xldCB3PVtdLmNvbmNhdCh5KS5zb3J0KCh2LHgpPT52LnNpemUteC5zaXplKTtmb3IoO3cubGVuZ3RoPjE7KXtsZXQgdj1uZXcgU2V0LHg9dy5wb3AoKTtmb3IobGV0IEMgb2Ygd1swXSl4LmhhcyhDKSYmdi5hZGQoQyk7d1swXT12fXJldHVybiB3WzBdfU4uc2V0SW50ZXJzZWN0PUQ7ZnVuY3Rpb24gVCh5KXtpZih5Lmxlbmd0aD09MClyZXR1cm4gbmV3IFNldDtpZih5Lmxlbmd0aD09MSlyZXR1cm4geVswXTtsZXQgdz1uZXcgU2V0O2ZvcihsZXQgdiBvZiB5KWZvcihsZXQgeCBvZiB2KXcuYWRkKHgpO3JldHVybiB3fU4uc2V0VW5pb249VDtmdW5jdGlvbiBJKHksdyl7aWYoeS5zaXplPncuc2l6ZSl7bGV0IHY9bmV3IFNldCh5KTtmb3IobGV0IHggb2Ygdyl2LmRlbGV0ZSh4KTtyZXR1cm4gdn1lbHNle2xldCB2PW5ldyBTZXQ7Zm9yKGxldCB4IG9mIHkpdy5oYXMoeCl8fHYuYWRkKHgpO3JldHVybiB2fX1OLnNldEludGVyc2VjdE5lZ2F0aW9uPUl9KShZdHx8KFl0PXt9KSk7dmFyIHNlOyhnPT57Zy5ST1c9XFxcIiRyb3dcXFwiO2Z1bmN0aW9uIGUoRCl7cmV0dXJue3R5cGU6XFxcInZhcmlhYmxlXFxcIixuYW1lOkR9fWcudmFyaWFibGU9ZTtmdW5jdGlvbiB0KEQpe3JldHVybnt0eXBlOlxcXCJsaXRlcmFsXFxcIix2YWx1ZTpEfX1nLmxpdGVyYWw9dDtmdW5jdGlvbiByKEQsVCxJKXtyZXR1cm57dHlwZTpcXFwiYmluYXJ5b3BcXFwiLGxlZnQ6RCxvcDpULHJpZ2h0Okl9fWcuYmluYXJ5T3A9cjtmdW5jdGlvbiBzKEQsVCl7cmV0dXJue3R5cGU6XFxcImJpbmFyeW9wXFxcIixsZWZ0OkQscmlnaHQ6VCxvcDpcXFwiaW5kZXhcXFwifX1nLmluZGV4PXM7ZnVuY3Rpb24gaShEKXtsZXQgVD1ELnNwbGl0KFxcXCIuXFxcIiksST1nLnZhcmlhYmxlKFRbMF0pO2ZvcihsZXQgTj0xO048VC5sZW5ndGg7TisrKUk9Zy5pbmRleChJLGcubGl0ZXJhbChUW05dKSk7cmV0dXJuIEl9Zy5pbmRleFZhcmlhYmxlPWk7ZnVuY3Rpb24gbyhELFQpe3JldHVybnt0eXBlOlxcXCJsYW1iZGFcXFwiLGFyZ3VtZW50czpELHZhbHVlOlR9fWcubGFtYmRhPW87ZnVuY3Rpb24gYShELFQpe3JldHVybnt0eXBlOlxcXCJmdW5jdGlvblxcXCIsZnVuYzpELGFyZ3VtZW50czpUfX1nLmZ1bmM9YTtmdW5jdGlvbiB1KEQpe3JldHVybnt0eXBlOlxcXCJsaXN0XFxcIix2YWx1ZXM6RH19Zy5saXN0PXU7ZnVuY3Rpb24gbChEKXtyZXR1cm57dHlwZTpcXFwib2JqZWN0XFxcIix2YWx1ZXM6RH19Zy5vYmplY3Q9bDtmdW5jdGlvbiBmKEQpe3JldHVybnt0eXBlOlxcXCJuZWdhdGVkXFxcIixjaGlsZDpEfX1nLm5lZ2F0ZT1mO2Z1bmN0aW9uIGQoRCl7cmV0dXJuIEQ9PVxcXCI8PVxcXCJ8fEQ9PVxcXCI8XFxcInx8RD09XFxcIj5cXFwifHxEPT1cXFwiPj1cXFwifHxEPT1cXFwiIT1cXFwifHxEPT1cXFwiPVxcXCJ9Zy5pc0NvbXBhcmVPcD1kO2Z1bmN0aW9uIG0oRCxUPW5ldyBTZXQoW2cuUk9XXSkpe3N3aXRjaChELnR5cGUpe2Nhc2VcXFwiYmluYXJ5b3BcXFwiOnJldHVybiBELm9wPT09XFxcImluZGV4XFxcIiYmRC5sZWZ0LnR5cGU9PVxcXCJ2YXJpYWJsZVxcXCImJkQubGVmdC5uYW1lPT1nLlJPVyYmRC5yaWdodC50eXBlPT1cXFwibGl0ZXJhbFxcXCImJmV0LmlzU3RyaW5nKEQucmlnaHQudmFsdWUpP1QuaGFzKEQucmlnaHQudmFsdWUpP25ldyBTZXQ6bmV3IFNldChbRC5yaWdodC52YWx1ZV0pOll0LnNldFVuaW9uKFttKEQubGVmdCxUKSxtKEQucmlnaHQsVCldKTtjYXNlXFxcImZ1bmN0aW9uXFxcIjpyZXR1cm4gWXQuc2V0VW5pb24oRC5hcmd1bWVudHMubWFwKE49Pm0oTixUKSkpO2Nhc2VcXFwibGFtYmRhXFxcIjpsZXQgST1UIT1udWxsP1Q6bmV3IFNldDtmb3IobGV0IE4gb2YgRC5hcmd1bWVudHMpSS5hZGQoTik7cmV0dXJuIG0oRC52YWx1ZSxJKTtjYXNlXFxcImxpc3RcXFwiOnJldHVybiBZdC5zZXRVbmlvbihELnZhbHVlcy5tYXAoTj0+bShOLFQpKSk7Y2FzZVxcXCJuZWdhdGVkXFxcIjpyZXR1cm4gbShELmNoaWxkLFQpO2Nhc2VcXFwib2JqZWN0XFxcIjpyZXR1cm4gWXQuc2V0VW5pb24oT2JqZWN0LnZhbHVlcyhELnZhbHVlcykubWFwKE49Pm0oTixUKSkpO2Nhc2VcXFwidmFyaWFibGVcXFwiOnJldHVybiBUJiZULmhhcyhELm5hbWUpP25ldyBTZXQ6bmV3IFNldChbRC5uYW1lXSk7Y2FzZVxcXCJsaXRlcmFsXFxcIjpyZXR1cm4gbmV3IFNldH19Zy51bmJvdW5kVmFyaWFibGVzPW07ZnVuY3Rpb24gaChEKXtzd2l0Y2goRC50eXBlKXtjYXNlXFxcImJpbmFyeW9wXFxcIjpyZXR1cm4gRC5vcD09PVxcXCJpbmRleFxcXCI/YCR7aChELmxlZnQpfVske2goRC5yaWdodCl9XWA6YCR7aChELmxlZnQpfSAke0Qub3B9ICR7aChELnJpZ2h0KX1gO2Nhc2VcXFwiZnVuY3Rpb25cXFwiOnJldHVybmAke2goRC5mdW5jKX0oJHtELmFyZ3VtZW50cy5tYXAoaCkuam9pbihcXFwiLCBcXFwiKX0pYDtjYXNlXFxcImxhbWJkYVxcXCI6cmV0dXJuYCgke0QuYXJndW1lbnRzLmpvaW4oXFxcIiwgXFxcIil9KSA9PiAke2goRC52YWx1ZSl9YDtjYXNlXFxcImxpc3RcXFwiOnJldHVybmBbJHtELnZhbHVlcy5tYXAoaCkuam9pbihcXFwiLCBcXFwiKX1dYDtjYXNlXFxcIm5lZ2F0ZWRcXFwiOnJldHVybmAhJHtoKEQuY2hpbGQpfWA7Y2FzZVxcXCJvYmplY3RcXFwiOnJldHVybmB7JHtPYmplY3QuZW50cmllcyhELnZhbHVlcykubWFwKChbSSxOXSk9PmAke0l9OiAke2goTil9YCkuam9pbihcXFwiLCBcXFwiKX19YDtjYXNlXFxcInZhcmlhYmxlXFxcIjpyZXR1cm4gRC5uYW1lO2Nhc2VcXFwibGl0ZXJhbFxcXCI6bGV0IFQ9ZXQud3JhcFZhbHVlKEQudmFsdWUpO2lmKCFUKXJldHVyblxcXCJudWxsXFxcIjtzd2l0Y2goVC50eXBlKXtjYXNlXFxcInN0cmluZ1xcXCI6cmV0dXJuYFxcXCIke1QudmFsdWV9XFxcImA7ZGVmYXVsdDpyZXR1cm4gZXQudG9TdHJpbmcoVC52YWx1ZSl9fX1nLnRvU3RyaW5nPWgsZy5OVUxMPWcubGl0ZXJhbChudWxsKX0pKHNlfHwoc2U9e30pKTt2YXIgej1GLmNyZWF0ZUxhbmd1YWdlKHtudW1iZXI6bj0+Ri5yZWdleHAoLy0/WzAtOV0rKFxcXFwuWzAtOV0rKT8vKS5tYXAoZT0+TnVtYmVyLnBhcnNlRmxvYXQoZSkpLmRlc2MoXFxcIm51bWJlclxcXCIpLHN0cmluZzpuPT5GLnN0cmluZygnXFxcIicpLnRoZW4oRi5hbHQobi5lc2NhcGVDaGFyYWN0ZXIsRi5ub25lT2YoJ1xcXCJcXFxcXFxcXCcpKS5hdExlYXN0KDApLm1hcChlPT5lLmpvaW4oXFxcIlxcXCIpKSkuc2tpcChGLnN0cmluZygnXFxcIicpKS5kZXNjKFxcXCJzdHJpbmdcXFwiKSxlc2NhcGVDaGFyYWN0ZXI6bj0+Ri5zdHJpbmcoXFxcIlxcXFxcXFxcXFxcIikudGhlbihGLmFueSkubWFwKGU9PmU9PT0nXFxcIic/J1xcXCInOmU9PT1cXFwiXFxcXFxcXFxcXFwiP1xcXCJcXFxcXFxcXFxcXCI6XFxcIlxcXFxcXFxcXFxcIitlKSxib29sOm49PkYucmVnZXhwKC90cnVlfGZhbHNlfFRydWV8RmFsc2UvKS5tYXAoZT0+ZS50b0xvd2VyQ2FzZSgpPT1cXFwidHJ1ZVxcXCIpLmRlc2MoXFxcImJvb2xlYW5cXFwiKSx0YWc6bj0+Ri5zZXFNYXAoRi5zdHJpbmcoXFxcIiNcXFwiKSxGLmFsdChGLnJlZ2V4cCgvW15cXFxcdTIwMDAtXFxcXHUyMDZGXFxcXHUyRTAwLVxcXFx1MkU3RichXFxcIiMkJSYoKSorLC46Ozw9Pj9AXmB7fH1+XFxcXFtcXFxcXVxcXFxcXFxcXFxcXHNdLykuZGVzYyhcXFwidGV4dFxcXCIpKS5tYW55KCksKGUsdCk9PmUrdC5qb2luKFxcXCJcXFwiKSkuZGVzYyhcXFwidGFnXFxcIiksaWRlbnRpZmllcjpuPT5GLnNlcU1hcChGLmFsdChGLnJlZ2V4cCgvW1xcXFxwe0xldHRlcn0kXS91KSxGLnJlZ2V4cChxdSkuZGVzYyhcXFwidGV4dFxcXCIpKSxGLmFsdChGLnJlZ2V4cCgvWzAtOVxcXFxwe0xldHRlcn0kXy1dL3UpLEYucmVnZXhwKHF1KS5kZXNjKFxcXCJ0ZXh0XFxcIikpLm1hbnkoKSwoZSx0KT0+ZSt0LmpvaW4oXFxcIlxcXCIpKS5kZXNjKFxcXCJ2YXJpYWJsZVxcXCIpLGxpbms6bj0+Ri5yZWdleHAoL1xcXFxbXFxcXFsoW15cXFxcW1xcXFxdXSo/KVxcXFxdXFxcXF0vdSwxKS5tYXAoZT0+T2UucGFyc2VJbm5lcihlKSkuZGVzYyhcXFwiZmlsZSBsaW5rXFxcIiksZW1iZWRMaW5rOm49PkYuc2VxTWFwKEYuc3RyaW5nKFxcXCIhXFxcIikuYXRNb3N0KDEpLG4ubGluaywoZSx0KT0+KGUubGVuZ3RoPjAmJih0LmVtYmVkPSEwKSx0KSkuZGVzYyhcXFwiZmlsZSBsaW5rXFxcIiksYmluYXJ5UGx1c01pbnVzOm49PkYucmVnZXhwKC9cXFxcK3wtLykubWFwKGU9PmUpLmRlc2MoXFxcIicrJyBvciAnLSdcXFwiKSxiaW5hcnlNdWxEaXY6bj0+Ri5yZWdleHAoL1xcXFwqfFxcXFwvfCUvKS5tYXAoZT0+ZSkuZGVzYyhcXFwiJyonIG9yICcvJyBvciAnJSdcXFwiKSxiaW5hcnlDb21wYXJlT3A6bj0+Ri5yZWdleHAoLz49fDw9fCE9fD58PHw9LykubWFwKGU9PmUpLmRlc2MoXFxcIic+PScgb3IgJzw9JyBvciAnIT0nIG9yICc9JyBvciAnPicgb3IgJzwnXFxcIiksYmluYXJ5QW5kT3A6bj0+Ri5yZWdleHAoL2FuZHwmL2kpLm1hcChlPT5cXFwiJlxcXCIpLmRlc2MoXFxcIidhbmQnXFxcIiksYmluYXJ5T3JPcDpuPT5GLnJlZ2V4cCgvb3J8XFxcXHwvaSkubWFwKGU9PlxcXCJ8XFxcIikuZGVzYyhcXFwiJ29yJ1xcXCIpLHJvb3REYXRlOm49PkYuc2VxTWFwKEYucmVnZXhwKC9cXFxcZHs0fS8pLEYuc3RyaW5nKFxcXCItXFxcIiksRi5yZWdleHAoL1xcXFxkezJ9LyksKGUsdCxyKT0+cS5mcm9tT2JqZWN0KHt5ZWFyOk51bWJlci5wYXJzZUludChlKSxtb250aDpOdW1iZXIucGFyc2VJbnQocil9KSkuZGVzYyhcXFwiZGF0ZSBpbiBmb3JtYXQgWVlZWS1NTVstRERUSEgtTU0tU1MuTVNdXFxcIiksZGF0ZVNob3J0aGFuZDpuPT5GLmFsdCguLi5PYmplY3Qua2V5cyhVdSkuc29ydCgoZSx0KT0+dC5sZW5ndGgtZS5sZW5ndGgpLm1hcChGLnN0cmluZykpLGRhdGU6bj0+T2Yobi5yb290RGF0ZSxlPT5GLnNlcU1hcChGLnN0cmluZyhcXFwiLVxcXCIpLEYucmVnZXhwKC9cXFxcZHsyfS8pLCh0LHIpPT5lLnNldCh7ZGF5Ok51bWJlci5wYXJzZUludChyKX0pKSxlPT5GLnNlcU1hcChGLnN0cmluZyhcXFwiVFxcXCIpLEYucmVnZXhwKC9cXFxcZHsyfS8pLCh0LHIpPT5lLnNldCh7aG91cjpOdW1iZXIucGFyc2VJbnQocil9KSksZT0+Ri5zZXFNYXAoRi5zdHJpbmcoXFxcIjpcXFwiKSxGLnJlZ2V4cCgvXFxcXGR7Mn0vKSwodCxyKT0+ZS5zZXQoe21pbnV0ZTpOdW1iZXIucGFyc2VJbnQocil9KSksZT0+Ri5zZXFNYXAoRi5zdHJpbmcoXFxcIjpcXFwiKSxGLnJlZ2V4cCgvXFxcXGR7Mn0vKSwodCxyKT0+ZS5zZXQoe3NlY29uZDpOdW1iZXIucGFyc2VJbnQocil9KSksZT0+Ri5hbHQoRi5zZXFNYXAoRi5zdHJpbmcoXFxcIi5cXFwiKSxGLnJlZ2V4cCgvXFxcXGR7M30vKSwodCxyKT0+ZS5zZXQoe21pbGxpc2Vjb25kOk51bWJlci5wYXJzZUludChyKX0pKSxGLnN1Y2NlZWQoZSkpLGU9PkYuYWx0KEYuc2VxTWFwKEYuc3RyaW5nKFxcXCIrXFxcIikub3IoRi5zdHJpbmcoXFxcIi1cXFwiKSksRi5yZWdleHAoL1xcXFxkezEsMn0oOlxcXFxkezJ9KT8vKSwodCxyKT0+ZS5zZXRab25lKFxcXCJVVENcXFwiK3Qrcix7a2VlcExvY2FsVGltZTohMH0pKSxGLnNlcU1hcChGLnN0cmluZyhcXFwiWlxcXCIpLCgpPT5lLnNldFpvbmUoXFxcInV0Y1xcXCIse2tlZXBMb2NhbFRpbWU6ITB9KSksRi5zZXFNYXAoRi5zdHJpbmcoXFxcIltcXFwiKSxGLnJlZ2V4cCgvWzAtOUEtWmEteistXFxcXC9dKy91KSxGLnN0cmluZyhcXFwiXVxcXCIpLCh0LHIscyk9PmUuc2V0Wm9uZShyLHtrZWVwTG9jYWxUaW1lOiEwfSkpKSkuYXNzZXJ0KGU9PmUuaXNWYWxpZCxcXFwidmFsaWQgZGF0ZVxcXCIpLmRlc2MoXFxcImRhdGUgaW4gZm9ybWF0IFlZWVktTU1bLUREVEhILU1NLVNTLk1TXVxcXCIpLGRhdGVQbHVzOm49PkYuYWx0KG4uZGF0ZVNob3J0aGFuZC5tYXAoZT0+VXVbZV0oKSksbi5kYXRlKS5kZXNjKFxcXCJkYXRlIGluIGZvcm1hdCBZWVlZLU1NWy1ERFRISC1NTS1TUy5NU10gb3IgaW4gc2hvcnRoYW5kXFxcIiksZHVyYXRpb25UeXBlOm49PkYuYWx0KC4uLk9iamVjdC5rZXlzKFZ1KS5zb3J0KChlLHQpPT50Lmxlbmd0aC1lLmxlbmd0aCkubWFwKEYuc3RyaW5nKSksZHVyYXRpb246bj0+Ri5zZXFNYXAobi5udW1iZXIsRi5vcHRXaGl0ZXNwYWNlLG4uZHVyYXRpb25UeXBlLChlLHQscik9PlZ1W3JdLm1hcFVuaXRzKHM9PnMqZSkpLnNlcEJ5MShGLnN0cmluZyhcXFwiLFxcXCIpLnRyaW0oRi5vcHRXaGl0ZXNwYWNlKS5vcihGLm9wdFdoaXRlc3BhY2UpKS5tYXAoZT0+ZS5yZWR1Y2UoKHQscik9PnQucGx1cyhyKSkpLmRlc2MoXFxcImR1cmF0aW9uIGxpa2UgNGhyMm1pblxcXCIpLHJhd051bGw6bj0+Ri5zdHJpbmcoXFxcIm51bGxcXFwiKSxhdG9tSW5saW5lRmllbGQ6bj0+Ri5hbHQobi5kYXRlLG4uZHVyYXRpb24ubWFwKGU9Pk1pKGUpKSxuLnN0cmluZyxuLnRhZyxuLmVtYmVkTGluayxuLmJvb2wsbi5udW1iZXIsbi5yYXdOdWxsKSxpbmxpbmVGaWVsZExpc3Q6bj0+bi5hdG9tSW5saW5lRmllbGQuc2VwQnkoRi5zdHJpbmcoXFxcIixcXFwiKS50cmltKEYub3B0V2hpdGVzcGFjZSkubG9va2FoZWFkKG4uYXRvbUlubGluZUZpZWxkKSksaW5saW5lRmllbGQ6bj0+Ri5hbHQoRi5zZXFNYXAobi5hdG9tSW5saW5lRmllbGQsRi5zdHJpbmcoXFxcIixcXFwiKS50cmltKEYub3B0V2hpdGVzcGFjZSksbi5pbmxpbmVGaWVsZExpc3QsKGUsdCxyKT0+W2VdLmNvbmNhdChyKSksbi5hdG9tSW5saW5lRmllbGQpfSkscXU9bmV3IFJlZ0V4cChGbigpLFxcXCJcXFwiKSxWdT17eWVhcjpCLmZyb21PYmplY3Qoe3llYXJzOjF9KSx5ZWFyczpCLmZyb21PYmplY3Qoe3llYXJzOjF9KSx5cjpCLmZyb21PYmplY3Qoe3llYXJzOjF9KSx5cnM6Qi5mcm9tT2JqZWN0KHt5ZWFyczoxfSksbW9udGg6Qi5mcm9tT2JqZWN0KHttb250aHM6MX0pLG1vbnRoczpCLmZyb21PYmplY3Qoe21vbnRoczoxfSksbW86Qi5mcm9tT2JqZWN0KHttb250aHM6MX0pLG1vczpCLmZyb21PYmplY3Qoe21vbnRoczoxfSksd2VlazpCLmZyb21PYmplY3Qoe3dlZWtzOjF9KSx3ZWVrczpCLmZyb21PYmplY3Qoe3dlZWtzOjF9KSx3azpCLmZyb21PYmplY3Qoe3dlZWtzOjF9KSx3a3M6Qi5mcm9tT2JqZWN0KHt3ZWVrczoxfSksdzpCLmZyb21PYmplY3Qoe3dlZWtzOjF9KSxkYXk6Qi5mcm9tT2JqZWN0KHtkYXlzOjF9KSxkYXlzOkIuZnJvbU9iamVjdCh7ZGF5czoxfSksZDpCLmZyb21PYmplY3Qoe2RheXM6MX0pLGhvdXI6Qi5mcm9tT2JqZWN0KHtob3VyczoxfSksaG91cnM6Qi5mcm9tT2JqZWN0KHtob3VyczoxfSksaHI6Qi5mcm9tT2JqZWN0KHtob3VyczoxfSksaHJzOkIuZnJvbU9iamVjdCh7aG91cnM6MX0pLGg6Qi5mcm9tT2JqZWN0KHtob3VyczoxfSksbWludXRlOkIuZnJvbU9iamVjdCh7bWludXRlczoxfSksbWludXRlczpCLmZyb21PYmplY3Qoe21pbnV0ZXM6MX0pLG1pbjpCLmZyb21PYmplY3Qoe21pbnV0ZXM6MX0pLG1pbnM6Qi5mcm9tT2JqZWN0KHttaW51dGVzOjF9KSxtOkIuZnJvbU9iamVjdCh7bWludXRlczoxfSksc2Vjb25kOkIuZnJvbU9iamVjdCh7c2Vjb25kczoxfSksc2Vjb25kczpCLmZyb21PYmplY3Qoe3NlY29uZHM6MX0pLHNlYzpCLmZyb21PYmplY3Qoe3NlY29uZHM6MX0pLHNlY3M6Qi5mcm9tT2JqZWN0KHtzZWNvbmRzOjF9KSxzOkIuZnJvbU9iamVjdCh7c2Vjb25kczoxfSl9LFV1PXtub3c6KCk9PnEubG9jYWwoKSx0b2RheTooKT0+cS5sb2NhbCgpLnN0YXJ0T2YoXFxcImRheVxcXCIpLHllc3RlcmRheTooKT0+cS5sb2NhbCgpLnN0YXJ0T2YoXFxcImRheVxcXCIpLm1pbnVzKEIuZnJvbU9iamVjdCh7ZGF5czoxfSkpLHRvbW9ycm93OigpPT5xLmxvY2FsKCkuc3RhcnRPZihcXFwiZGF5XFxcIikucGx1cyhCLmZyb21PYmplY3Qoe2RheXM6MX0pKSxzb3c6KCk9PnEubG9jYWwoKS5zdGFydE9mKFxcXCJ3ZWVrXFxcIiksXFxcInN0YXJ0LW9mLXdlZWtcXFwiOigpPT5xLmxvY2FsKCkuc3RhcnRPZihcXFwid2Vla1xcXCIpLGVvdzooKT0+cS5sb2NhbCgpLmVuZE9mKFxcXCJ3ZWVrXFxcIiksXFxcImVuZC1vZi13ZWVrXFxcIjooKT0+cS5sb2NhbCgpLmVuZE9mKFxcXCJ3ZWVrXFxcIiksc295OigpPT5xLmxvY2FsKCkuc3RhcnRPZihcXFwieWVhclxcXCIpLFxcXCJzdGFydC1vZi15ZWFyXFxcIjooKT0+cS5sb2NhbCgpLnN0YXJ0T2YoXFxcInllYXJcXFwiKSxlb3k6KCk9PnEubG9jYWwoKS5lbmRPZihcXFwieWVhclxcXCIpLFxcXCJlbmQtb2YteWVhclxcXCI6KCk9PnEubG9jYWwoKS5lbmRPZihcXFwieWVhclxcXCIpLHNvbTooKT0+cS5sb2NhbCgpLnN0YXJ0T2YoXFxcIm1vbnRoXFxcIiksXFxcInN0YXJ0LW9mLW1vbnRoXFxcIjooKT0+cS5sb2NhbCgpLnN0YXJ0T2YoXFxcIm1vbnRoXFxcIiksZW9tOigpPT5xLmxvY2FsKCkuZW5kT2YoXFxcIm1vbnRoXFxcIiksXFxcImVuZC1vZi1tb250aFxcXCI6KCk9PnEubG9jYWwoKS5lbmRPZihcXFwibW9udGhcXFwiKX0sS3U9Ri5jcmVhdGVMYW5ndWFnZSh7dmFyaWFibGU6bj0+ei5pZGVudGlmaWVyLm1hcChzZS52YXJpYWJsZSkuZGVzYyhcXFwidmFyaWFibGVcXFwiKSxudW1iZXI6bj0+ei5udW1iZXIubWFwKHNlLmxpdGVyYWwpLmRlc2MoXFxcIm51bWJlclxcXCIpLHN0cmluZzpuPT56LnN0cmluZy5tYXAoc2UubGl0ZXJhbCkuZGVzYyhcXFwic3RyaW5nXFxcIiksYm9vbDpuPT56LmJvb2wubWFwKHNlLmxpdGVyYWwpLmRlc2MoXFxcImJvb2xlYW5cXFwiKSxkYXRlOm49PlN0KFxcXCJkYXRlXFxcIix6LmRhdGVQbHVzKS5tYXAoKFtlLHRdKT0+c2UubGl0ZXJhbCh0KSkuZGVzYyhcXFwiZGF0ZVxcXCIpLGR1cmF0aW9uOm49PlN0KFxcXCJkdXJcXFwiLHouZHVyYXRpb24pLm1hcCgoW2UsdF0pPT5zZS5saXRlcmFsKHQpKS5kZXNjKFxcXCJkdXJhdGlvblxcXCIpLG51bGw6bj0+ei5yYXdOdWxsLm1hcChlPT5zZS5OVUxMKSxsaW5rOm49PnoubGluay5tYXAoc2UubGl0ZXJhbCksbGlzdDpuPT5uLmV4cHJlc3Npb24uc2VwQnkoRi5zdHJpbmcoXFxcIixcXFwiKS50cmltKEYub3B0V2hpdGVzcGFjZSkpLndyYXAoRi5zdHJpbmcoXFxcIltcXFwiKS5za2lwKEYub3B0V2hpdGVzcGFjZSksRi5vcHRXaGl0ZXNwYWNlLnRoZW4oRi5zdHJpbmcoXFxcIl1cXFwiKSkpLm1hcChlPT5zZS5saXN0KGUpKS5kZXNjKFxcXCJsaXN0XFxcIiksb2JqZWN0Om49PkYuc2VxTWFwKHouaWRlbnRpZmllci5vcih6LnN0cmluZyksRi5zdHJpbmcoXFxcIjpcXFwiKS50cmltKEYub3B0V2hpdGVzcGFjZSksbi5leHByZXNzaW9uLChlLHQscik9Pih7bmFtZTplLHZhbHVlOnJ9KSkuc2VwQnkoRi5zdHJpbmcoXFxcIixcXFwiKS50cmltKEYub3B0V2hpdGVzcGFjZSkpLndyYXAoRi5zdHJpbmcoXFxcIntcXFwiKS5za2lwKEYub3B0V2hpdGVzcGFjZSksRi5vcHRXaGl0ZXNwYWNlLnRoZW4oRi5zdHJpbmcoXFxcIn1cXFwiKSkpLm1hcChlPT57bGV0IHQ9e307Zm9yKGxldCByIG9mIGUpdFtyLm5hbWVdPXIudmFsdWU7cmV0dXJuIHNlLm9iamVjdCh0KX0pLmRlc2MoXFxcIm9iamVjdCAoJ3sgYTogMSwgYjogMiB9JylcXFwiKSxhdG9tOm49PkYuYWx0KHouZW1iZWRMaW5rLm1hcChlPT5zZS5saXRlcmFsKGUpKSxuLm5lZ2F0ZWQsbi5saW5rLG4ubGlzdCxuLm9iamVjdCxuLmxhbWJkYSxuLnBhcmVucyxuLmJvb2wsbi5udW1iZXIsbi5zdHJpbmcsbi5kYXRlLG4uZHVyYXRpb24sbi5udWxsLG4udmFyaWFibGUpLGluZGV4Om49PkYuc2VxTWFwKG4uYXRvbSxGLmFsdChuLmRvdFBvc3RmaXgsbi5pbmRleFBvc3RmaXgsbi5mdW5jdGlvblBvc3RmaXgpLm1hbnkoKSwoZSx0KT0+e2xldCByPWU7Zm9yKGxldCBzIG9mIHQpc3dpdGNoKHMudHlwZSl7Y2FzZVxcXCJkb3RcXFwiOnI9c2UuaW5kZXgocixzZS5saXRlcmFsKHMuZXhwcikpO2JyZWFrO2Nhc2VcXFwiaW5kZXhcXFwiOnI9c2UuaW5kZXgocixzLmV4cHIpO2JyZWFrO2Nhc2VcXFwiZnVuY3Rpb25cXFwiOnI9c2UuZnVuYyhyLHMuZXhwcnMpO2JyZWFrfXJldHVybiByfSksbmVnYXRlZDpuPT5GLnNlcU1hcChGLnN0cmluZyhcXFwiIVxcXCIpLG4uaW5kZXgsKGUsdCk9PnNlLm5lZ2F0ZSh0KSkuZGVzYyhcXFwibmVnYXRlZCBmaWVsZFxcXCIpLHBhcmVuczpuPT5uLmV4cHJlc3Npb24udHJpbShGLm9wdFdoaXRlc3BhY2UpLndyYXAoRi5zdHJpbmcoXFxcIihcXFwiKSxGLnN0cmluZyhcXFwiKVxcXCIpKSxsYW1iZGE6bj0+Ri5zZXFNYXAoei5pZGVudGlmaWVyLnNlcEJ5KEYuc3RyaW5nKFxcXCIsXFxcIikudHJpbShGLm9wdFdoaXRlc3BhY2UpKS53cmFwKEYuc3RyaW5nKFxcXCIoXFxcIikudHJpbShGLm9wdFdoaXRlc3BhY2UpLEYuc3RyaW5nKFxcXCIpXFxcIikudHJpbShGLm9wdFdoaXRlc3BhY2UpKSxGLnN0cmluZyhcXFwiPT5cXFwiKS50cmltKEYub3B0V2hpdGVzcGFjZSksbi5leHByZXNzaW9uLChlLHQscik9Pih7dHlwZTpcXFwibGFtYmRhXFxcIixhcmd1bWVudHM6ZSx2YWx1ZTpyfSkpLGRvdFBvc3RmaXg6bj0+Ri5zZXFNYXAoRi5zdHJpbmcoXFxcIi5cXFwiKSx6LmlkZW50aWZpZXIsKGUsdCk9Pih7dHlwZTpcXFwiZG90XFxcIixleHByOnR9KSksaW5kZXhQb3N0Zml4Om49PkYuc2VxTWFwKEYuc3RyaW5nKFxcXCJbXFxcIiksRi5vcHRXaGl0ZXNwYWNlLG4uZXhwcmVzc2lvbixGLm9wdFdoaXRlc3BhY2UsRi5zdHJpbmcoXFxcIl1cXFwiKSwoZSx0LHIscyxpKT0+KHt0eXBlOlxcXCJpbmRleFxcXCIsZXhwcjpyfSkpLGZ1bmN0aW9uUG9zdGZpeDpuPT5GLnNlcU1hcChGLnN0cmluZyhcXFwiKFxcXCIpLEYub3B0V2hpdGVzcGFjZSxuLmV4cHJlc3Npb24uc2VwQnkoRi5zdHJpbmcoXFxcIixcXFwiKS50cmltKEYub3B0V2hpdGVzcGFjZSkpLEYub3B0V2hpdGVzcGFjZSxGLnN0cmluZyhcXFwiKVxcXCIpLChlLHQscixzLGkpPT4oe3R5cGU6XFxcImZ1bmN0aW9uXFxcIixleHByczpyfSkpLGJpbmFyeU11bERpdjpuPT5NbihuLmluZGV4LHouYmluYXJ5TXVsRGl2LHNlLmJpbmFyeU9wKSxiaW5hcnlQbHVzTWludXM6bj0+TW4obi5iaW5hcnlNdWxEaXYsei5iaW5hcnlQbHVzTWludXMsc2UuYmluYXJ5T3ApLGJpbmFyeUNvbXBhcmU6bj0+TW4obi5iaW5hcnlQbHVzTWludXMsei5iaW5hcnlDb21wYXJlT3Asc2UuYmluYXJ5T3ApLGJpbmFyeUJvb2xlYW46bj0+TW4obi5iaW5hcnlDb21wYXJlLHouYmluYXJ5QW5kT3Aub3Ioei5iaW5hcnlPck9wKSxzZS5iaW5hcnlPcCksYmluYXJ5T3A6bj0+bi5iaW5hcnlCb29sZWFuLGV4cHJlc3Npb246bj0+bi5iaW5hcnlPcH0pLGxiPUYuY3JlYXRlTGFuZ3VhZ2Uoe3F1ZXJ5VGFnOm49PnoudGFnLm1hcChlPT4oe3R5cGU6XFxcInRhZ2dlZFxcXCIsdmFsdWU6ZX0pKSxxdWVyeUlkOm49PlN0KFxcXCJpZFxcXCIsei5zdHJpbmcpLm1hcCgoW2UsdF0pPT4oe3R5cGU6XFxcImlkXFxcIix2YWx1ZTp0fSkpLHF1ZXJ5VHlwZTpuPT5GLnN0cmluZyhcXFwiQFxcXCIpLnRoZW4oei5pZGVudGlmaWVyKS5tYXAoZT0+KHt0eXBlOlxcXCJ0eXBlZFxcXCIsdmFsdWU6ZX0pKSxxdWVyeVBhdGg6bj0+U3QoRi5yZWdleHAoL2U/cGF0aC9pKS5kZXNjKFxcXCJbZV1wYXRoXFxcIiksei5zdHJpbmcpLm1hcCgoW2UsdF0pPT4oe3R5cGU6XFxcInBhdGhcXFwiLHZhbHVlOnQsZXhhY3Q6ZS50b0xvd2VyQ2FzZSgpPT09XFxcImVwYXRoXFxcIn0pKSxxdWVyeVBhcmVudE9mOm49PlN0KEYucmVnZXhwKC9wYXJlbnRvZnxzdXBlcnRyZWUvaSkuZGVzYyhcXFwicGFyZW50b2ZcXFwiKSxuLnF1ZXJ5KS5tYXAoKFtlLHRdKT0+KHt0eXBlOlxcXCJwYXJlbnQtb2ZcXFwiLGNoaWxkcmVuOnQsaW5jbHVzaXZlOmUudG9Mb3dlckNhc2UoKT09PVxcXCJzdXBlcnRyZWVcXFwifSkpLHF1ZXJ5Q2hpbGRPZjpuPT5TdChGLnJlZ2V4cCgvY2hpbGRvZnxzdWJ0cmVlL2kpLmRlc2MoXFxcImNoaWxkb2ZcXFwiKSxuLnF1ZXJ5KS5tYXAoKFtlLHRdKT0+KHt0eXBlOlxcXCJjaGlsZC1vZlxcXCIscGFyZW50czp0LGluY2x1c2l2ZTplLnRvTG93ZXJDYXNlKCk9PT1cXFwic3VidHJlZVxcXCJ9KSkscXVlcnlTaW1wbGVMaW5rZWQ6bj0+ei5saW5rLm1hcChlPT4oe3R5cGU6XFxcImxpbmtlZFxcXCIsc291cmNlOnt0eXBlOlxcXCJsaW5rXFxcIix2YWx1ZTplfSxkaXJlY3Rpb246XFxcImluY29taW5nXFxcIn0pKSxxdWVyeUxpbmtlZDpuPT5TdChGLnJlZ2V4cCgvbGlua3N0b3xsaW5rZWRmcm9tfGNvbm5lY3RlZC9pKS5kZXNjKFxcXCJjb25uZWN0ZWRcXFwiKSxuLnF1ZXJ5KS5tYXAoKFtlLHRdKT0+KHt0eXBlOlxcXCJsaW5rZWRcXFwiLHNvdXJjZTp0LGRpcmVjdGlvbjplLnRvTG93ZXJDYXNlKCk9PVxcXCJsaW5rc3RvXFxcIj9cXFwiaW5jb21pbmdcXFwiOmUudG9Mb3dlckNhc2UoKT09XFxcImxpbmtlZGZyb21cXFwiP1xcXCJvdXRnb2luZ1xcXCI6XFxcImJvdGhcXFwifSkpLHF1ZXJ5RXhpc3RzOm49PlN0KEYucmVnZXhwKC9leGlzdHMvaSkuZGVzYyhcXFwiZXhpc3RzXFxcIiksei5pZGVudGlmaWVyLm9yKHouc3RyaW5nKSkubWFwKChbZSx0XSk9Pih7dHlwZTpcXFwiZmllbGRcXFwiLHZhbHVlOnR9KSkscXVlcnlRdW90ZWRFeHByZXNzaW9uOm49PlN0KEYucmVnZXhwKC9leHByL2kpLmRlc2MoXFxcImV4cHJcXFwiKSxLdS5leHByZXNzaW9uKS5tYXAoKFtlLHRdKT0+KHt0eXBlOlxcXCJleHByZXNzaW9uXFxcIixleHByZXNzaW9uOnR9KSkscXVlcnlSYXdFeHByZXNzaW9uOm49Pkt1LmJpbmFyeUNvbXBhcmUubWFwKGU9Pih7dHlwZTpcXFwiZXhwcmVzc2lvblxcXCIsZXhwcmVzc2lvbjplfSkpLHF1ZXJ5UGFyZW5zOm49Pm4ucXVlcnkudHJpbShGLm9wdFdoaXRlc3BhY2UpLndyYXAoRi5zdHJpbmcoXFxcIihcXFwiKSxGLnN0cmluZyhcXFwiKVxcXCIpKSxxdWVyeU5lZ2F0ZTpuPT5GLnN0cmluZyhcXFwiIVxcXCIpLnNraXAoRi5vcHRXaGl0ZXNwYWNlKS50aGVuKG4ucXVlcnlBdG9tKS5tYXAoZT0+KHt0eXBlOlxcXCJub3RcXFwiLGVsZW1lbnQ6ZX0pKSxxdWVyeUF0b206bj0+Ri5hbHQobi5xdWVyeVBhcmVucyxuLnF1ZXJ5TmVnYXRlLG4ucXVlcnlTaW1wbGVMaW5rZWQsbi5xdWVyeVRhZyxuLnF1ZXJ5VHlwZSxuLnF1ZXJ5SWQsbi5xdWVyeUV4aXN0cyxuLnF1ZXJ5Q2hpbGRPZixuLnF1ZXJ5UGFyZW50T2Ysbi5xdWVyeUxpbmtlZCxuLnF1ZXJ5UGF0aCxuLnF1ZXJ5UXVvdGVkRXhwcmVzc2lvbixuLnF1ZXJ5UmF3RXhwcmVzc2lvbikscXVlcnlBbmRzOm49Pk1uKG4ucXVlcnlBdG9tLHouYmluYXJ5QW5kT3AsKGUsdCxyKT0+KHt0eXBlOlxcXCJhbmRcXFwiLGVsZW1lbnRzOltlLHJdfSkpLHF1ZXJ5T3JzOm49Pk1uKG4ucXVlcnlBbmRzLHouYmluYXJ5T3JPcCwoZSx0LHIpPT4oe3R5cGU6XFxcIm9yXFxcIixlbGVtZW50czpbZSxyXX0pKSxxdWVyeTpuPT5uLnF1ZXJ5T3JzLnRyaW0oRi5vcHRXaGl0ZXNwYWNlKX0pO2Z1bmN0aW9uIE1uKG4sZSx0KXtyZXR1cm4gRi5zZXFNYXAobixGLnNlcShGLm9wdFdoaXRlc3BhY2UsZSxGLm9wdFdoaXRlc3BhY2UsbikubWFueSgpLChyLHMpPT57aWYocy5sZW5ndGg9PTApcmV0dXJuIHI7bGV0IGk9dChyLHNbMF1bMV0sc1swXVszXSk7Zm9yKGxldCBvPTE7bzxzLmxlbmd0aDtvKyspaT10KGksc1tvXVsxXSxzW29dWzNdKTtyZXR1cm4gaX0pfWZ1bmN0aW9uIFN0KG4sZSl7bGV0IHQ9dHlwZW9mIG49PVxcXCJzdHJpbmdcXFwiP0Yuc3RyaW5nKG4pOm47cmV0dXJuIEYuc2VxTWFwKHQuc2tpcChGLm9wdFdoaXRlc3BhY2UpLGUudHJpbShGLm9wdFdoaXRlc3BhY2UpLndyYXAoRi5zdHJpbmcoXFxcIihcXFwiKSxGLnN0cmluZyhcXFwiKVxcXCIpKSwocixzKT0+W3Isc10pfWZ1bmN0aW9uIE9mKG4sLi4uZSl7cmV0dXJuIEYuY3VzdG9tKCh0LHIpPT4ocyxpKT0+e2xldCBvPW4uXyhzLGkpO2lmKCFvLnN0YXR1cylyZXR1cm4gbztmb3IobGV0IGEgb2YgZSl7bGV0IHU9YShvLnZhbHVlKS5fKHMsby5pbmRleCk7aWYoIXUuc3RhdHVzKXJldHVybiBvO289dX1yZXR1cm4gb30pfXZhciBadD1WcihucygpKTtmdW5jdGlvbiBHdChuLGUpe2xldCB0PXt9O2ZvcihsZXRbcixzXW9mIE9iamVjdC5lbnRyaWVzKG4pKXRbcl09ZShzKTtyZXR1cm4gdH12YXIgX247KHI9PntyLk5PT1BfTk9STUFMSVpFUj1zPT5zO2Z1bmN0aW9uIGUocyl7bGV0IGk9ZXQud3JhcFZhbHVlKHMpO2lmKCFpKXJldHVybiBudWxsO3N3aXRjaChpPT1udWxsP3ZvaWQgMDppLnR5cGUpe2Nhc2VcXFwiYXJyYXlcXFwiOnJldHVybiBpLnZhbHVlLm1hcChyLmpzb24pO2Nhc2VcXFwib2JqZWN0XFxcIjpyZXR1cm4gR3QoaS52YWx1ZSxyLmpzb24pO2Nhc2VcXFwiZGF0ZVxcXCI6cmV0dXJueyRfdHlwZTpcXFwiZGF0ZVxcXCIsdmFsdWU6aS52YWx1ZS50b0lTTyh7aW5jbHVkZU9mZnNldDohMH0pfTtjYXNlXFxcImxpbmtcXFwiOnJldHVybnskX3R5cGU6XFxcImxpbmtcXFwiLHZhbHVlOmkudmFsdWUudG9PYmplY3QoKX07Y2FzZVxcXCJkdXJhdGlvblxcXCI6cmV0dXJueyRfdHlwZTpcXFwiZHVyYXRpb25cXFwiLHZhbHVlOmkudmFsdWUudG9JU08oKX07Y2FzZVxcXCJib29sZWFuXFxcIjpjYXNlXFxcIm51bWJlclxcXCI6Y2FzZVxcXCJzdHJpbmdcXFwiOnJldHVybiBpLnZhbHVlO2Nhc2VcXFwiZnVuY3Rpb25cXFwiOmNhc2VcXFwibnVsbFxcXCI6cmV0dXJuIG51bGx9fXIuanNvbj1lO2Z1bmN0aW9uIHQocyxpPXIuTk9PUF9OT1JNQUxJWkVSKXtpZihzPT1udWxsKXJldHVybiBudWxsO2lmKEFycmF5LmlzQXJyYXkocykpcmV0dXJuIGkocy5tYXAobz0+ci52YWx1ZShvLGkpKSk7aWYodHlwZW9mIHM9PVxcXCJvYmplY3RcXFwiKXtpZighKFxcXCIkX3R5cGVcXFwiaW4gcykpcmV0dXJuIEd0KHMsYT0+ci52YWx1ZShhLGkpKTtsZXQgbz1zLiRfdHlwZTtzd2l0Y2gobyl7Y2FzZVxcXCJkYXRlXFxcIjpyZXR1cm4gaShxLmZyb21JU08ocy52YWx1ZSx7c2V0Wm9uZTohMH0pKTtjYXNlXFxcImR1cmF0aW9uXFxcIjpyZXR1cm4gaShCLmZyb21JU08ocy52YWx1ZSkpO2Nhc2VcXFwibGlua1xcXCI6cmV0dXJuIGkoT2UuZnJvbU9iamVjdChzLnZhbHVlKSk7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYFVucmVjb2duaXplZCBzZXJpYWxpemVkIHR5cGUgJyR7b30nIWApfX1yZXR1cm4gaShzKX1yLnZhbHVlPXR9KShfbnx8KF9uPXt9KSk7ZnVuY3Rpb24gV3Uobil7cmV0dXJuIE9iamVjdC5hc3NpZ24oe30sbix7dmFsdWU6X24uanNvbihuLnZhbHVlKX0pfWZ1bmN0aW9uICRzKG4sZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkobik/bi5tYXAodD0+JHModCxlKSk6e2tleTpuLmtleSxyYXc6bi52YWx1ZSx2YWx1ZTpOZihuLnZhbHVlKSxwb3NpdGlvbjp7bGluZTplLHN0YXJ0Om4uc3RhcnQsc3RhcnRWYWx1ZTpuLnN0YXJ0VmFsdWUsZW5kOm4uZW5kfSx3cmFwcGluZzpuLndyYXBwaW5nfX12YXIgUHM9T2JqZWN0LmZyZWV6ZSh7XFxcIltcXFwiOlxcXCJdXFxcIixcXFwiKFxcXCI6XFxcIilcXFwifSk7ZnVuY3Rpb24gSWYobixlLHQscil7bGV0IHM9MCxpPSExO2ZvcihsZXQgbz1lO288bi5sZW5ndGg7bysrKXtsZXQgYT1uLmNoYXJBdChvKTtpZihhPT1cXFwiXFxcXFxcXFxcXFwiKXtpPSFpO2NvbnRpbnVlfWlmKGkpe2k9ITE7Y29udGludWV9aWYoYT09dD9zKys6YT09ciYmcy0tLHM8MClyZXR1cm57dmFsdWU6bi5zdWJzdHJpbmcoZSxvKS50cmltKCksZW5kSW5kZXg6bysxfTtpPSExfX1mdW5jdGlvbiBIdShuLGUpe2xldCB0PW4uaW5kZXhPZihcXFwiOjpcXFwiLGUpO2lmKCEodDwwKSlyZXR1cm57a2V5Om4uc3Vic3RyaW5nKGUsdCkudHJpbSgpLHZhbHVlSW5kZXg6dCsyfX1mdW5jdGlvbiBMZihuLGUpe2xldCB0PW4uY2hhckF0KGUpLHI9SHUobixlKzEpO2lmKHI9PT12b2lkIDApcmV0dXJuO2ZvcihsZXQgaSBvZiBPYmplY3Qua2V5cyhQcykuY29uY2F0KE9iamVjdC52YWx1ZXMoUHMpKSlpZihyLmtleS5pbmNsdWRlcyhpKSlyZXR1cm47bGV0IHM9SWYobixyLnZhbHVlSW5kZXgsdCxQc1t0XSk7aWYocyE9PXZvaWQgMClyZXR1cm57a2V5OnIua2V5LHZhbHVlOnMudmFsdWUsc3RhcnQ6ZSxzdGFydFZhbHVlOnIudmFsdWVJbmRleCxlbmQ6cy5lbmRJbmRleCx3cmFwcGluZzp0fX1mdW5jdGlvbiBOZihuKXtpZihuLnRyaW0oKT09XFxcIlxcXCIpcmV0dXJuIG51bGw7bGV0IGU9ei5pbmxpbmVGaWVsZC5wYXJzZShuKTtyZXR1cm4gZS5zdGF0dXM/ZS52YWx1ZTpufWZ1bmN0aW9uIEp1KG4sZT0hMSl7bGV0IHQ9W107Zm9yKGxldCBzIG9mIE9iamVjdC5rZXlzKFBzKSl7bGV0IGk9bi5pbmRleE9mKHMpO2Zvcig7aT49MDspe2xldCBvPUxmKG4saSk7aWYoIW8pe2k9bi5pbmRleE9mKHMsaSsxKTtjb250aW51ZX10LnB1c2gobyksaT1uLmluZGV4T2YocyxvLmVuZCl9fWUmJih0PXQuY29uY2F0KHFmKG4pKSksdC5zb3J0KChzLGkpPT5zLnN0YXJ0LWkuc3RhcnQpO2xldCByPVtdO2ZvcihsZXQgcz0wO3M8dC5sZW5ndGg7cysrKShzPT0wfHxyW3IubGVuZ3RoLTFdLmVuZDx0W3NdLnN0YXJ0KSYmci5wdXNoKHRbc10pO3JldHVybiByfXZhciBBZj1adC5hbHQoWnQucmVnZXhwKG5ldyBSZWdFeHAoRm4oKSxcXFwidVxcXCIpKSxadC5yZWdleHAoL1swLTlcXFxccHtMZXR0ZXJ9XFxcXHdcXFxcc18vLV0rL3UpKS5tYW55KCkubWFwKG49Pm4uam9pbihcXFwiXFxcIikpLE1mPVp0LnJlZ2V4cCgvW14wLTlcXFxcd1xcXFxwe0xldHRlcn1dKi91KS50aGVuKEFmKS5za2lwKFp0LnJlZ2V4cCgvW19cXFxcKn5gXSovdSkpO2Z1bmN0aW9uIHp1KG4pe2xldCBlPUh1KG4sMCk7aWYoIWUpcmV0dXJuO2xldCB0PU1mLnBhcnNlKGUua2V5KTtpZih0LnN0YXR1cylyZXR1cm57a2V5OnQudmFsdWUsdmFsdWU6bi5zdWJzdHJpbmcoZS52YWx1ZUluZGV4KS50cmltKCksc3RhcnQ6MCxzdGFydFZhbHVlOmUudmFsdWVJbmRleCxlbmQ6bi5sZW5ndGh9fXZhciBfZj0vXFxcXHV7Mjc5NX1cXFxccyooXFxcXGR7NH0tXFxcXGR7Mn0tXFxcXGR7Mn0pL3UsQmY9Lyg/OlxcXFx1ezFGNEM1fXxcXFxcdXsxRjRDNn18XFxcXHV7MUY1RDN9XFxcXHV7RkUwRn0/KVxcXFxzKihcXFxcZHs0fS1cXFxcZHsyfS1cXFxcZHsyfSkvdSxQZj0vXFxcXHV7MjcwNX1cXFxccyooXFxcXGR7NH0tXFxcXGR7Mn0tXFxcXGR7Mn0pL3UsJGY9L1tcXFxcdXsyM0YzfVxcXFx1ezIzMUJ9XVxcXFxzKihcXFxcZHs0fS1cXFxcZHsyfS1cXFxcZHsyfSkvdSxSZj0vXFxcXHV7MUY2RUJ9XFxcXHMqKFxcXFxkezR9LVxcXFxkezJ9LVxcXFxkezJ9KS91LGpmPVt7cmVnZXg6X2Ysa2V5OlxcXCJjcmVhdGVkXFxcIn0se3JlZ2V4OlJmLGtleTpcXFwic3RhcnRcXFwifSx7cmVnZXg6JGYsa2V5OlxcXCJzY2hlZHVsZWRcXFwifSx7cmVnZXg6QmYsa2V5OlxcXCJkdWVcXFwifSx7cmVnZXg6UGYsa2V5OlxcXCJjb21wbGV0aW9uXFxcIn1dO2Z1bmN0aW9uIHFmKG4pe2xldCBlPVtdO2ZvcihsZXR7cmVnZXg6dCxrZXk6cn1vZiBqZil7bGV0IHM9dC5leGVjKG4pO3MmJmUucHVzaCh7a2V5OnIsdmFsdWU6c1sxXSxzdGFydDpzLmluZGV4LHN0YXJ0VmFsdWU6cy5pbmRleCsxLGVuZDpzLmluZGV4K3NbMF0ubGVuZ3RoLHdyYXBwaW5nOlxcXCJlbW9qaS1zaG9ydGhhbmRcXFwifSl9cmV0dXJuIGV9dmFyIFJzOyh0PT57ZnVuY3Rpb24gbihyKXtsZXQgcz1ldC53cmFwVmFsdWUoZSk7aWYoIXMpcmV0dXJuIG51bGw7c3dpdGNoKHMudHlwZSl7Y2FzZVxcXCJzdHJpbmdcXFwiOmNhc2VcXFwiYm9vbGVhblxcXCI6Y2FzZVxcXCJudWxsXFxcIjpjYXNlXFxcIm51bWJlclxcXCI6cmV0dXJuIHMudmFsdWU7Y2FzZVxcXCJhcnJheVxcXCI6cmV0dXJuIHMudmFsdWUubWFwKG4pO2Nhc2VcXFwiZGF0ZVxcXCI6cmV0dXJuIHMudmFsdWUudG9JU08oKTtjYXNlXFxcImR1cmF0aW9uXFxcIjpyZXR1cm4gcy52YWx1ZS50b0h1bWFuKCk7Y2FzZVxcXCJmdW5jdGlvblxcXCI6cmV0dXJuIG51bGw7Y2FzZVxcXCJsaW5rXFxcIjpyZXR1cm4gcy52YWx1ZS5tYXJrZG93bigpO2Nhc2VcXFwib2JqZWN0XFxcIjpyZXR1cm4gR3Qocy52YWx1ZSxuKX19dC55YW1sPW47ZnVuY3Rpb24gZShyKXtpZihyPT1udWxsKXJldHVybiBudWxsO2lmKHR5cGVvZiByPT1cXFwib2JqZWN0XFxcIilpZihBcnJheS5pc0FycmF5KHIpKXtsZXQgcz1bXTtmb3IobGV0IGkgb2YgcilzLnB1c2goZShpKSk7cmV0dXJuIHN9ZWxzZXtpZihyIGluc3RhbmNlb2YgRGF0ZSlyZXR1cm4gcS5mcm9tSlNEYXRlKHIpO3tsZXQgcz1yLGk9e307Zm9yKGxldCBvIGluIHMpaVtvXT1lKHNbb10pO3JldHVybiBpfX1lbHNle2lmKHR5cGVvZiByPT1cXFwibnVtYmVyXFxcIilyZXR1cm4gcjtpZih0eXBlb2Ygcj09XFxcImJvb2xlYW5cXFwiKXJldHVybiByO2lmKHR5cGVvZiByPT1cXFwic3RyaW5nXFxcIil7bGV0IHM9ei5kYXRlLnBhcnNlKHIpO2lmKHMuc3RhdHVzKXJldHVybiBzLnZhbHVlO2xldCBpPXouZHVyYXRpb24ucGFyc2Uocik7aWYoaS5zdGF0dXMpcmV0dXJuIGkudmFsdWU7bGV0IG89ei5saW5rLnBhcnNlKHIpO3JldHVybiBvLnN0YXR1cz9vLnZhbHVlOnJ9fXJldHVybiBudWxsfXQubGl0ZXJhbD1lfSkoUnN8fChScz17fSkpO3ZhciBWZj0vYGBgeWFtbDpkYXRhL2ksVWY9L14oPzpgYGB8fn5+KSguKikkL2ltLEtmPS9eW1xcXFxzPl0qKFxcXFxkK1xcXFwufFxcXFxkK1xcXFwpfFxcXFwqfC18XFxcXCspXFxcXHMqKFxcXFxbLnswLDF9XFxcXF0pP1xcXFxzKiguKikkL211O2Z1bmN0aW9uIFp1KG4sZSx0LHIpe2xldHtsaW5lczpzLG1ldGFkYXRhOmksZnJvbnRtYXR0ZXI6byxzZWN0aW9uczphfT1GbyhuLGUsdCk7cmV0dXJuIG5ldyBwbyhuLHIscy5sZW5ndGgsaSxhLG8pLmJ1aWxkKCl9ZnVuY3Rpb24gRm8obixlLHQpe3ZhciBiLGcsRCxULEksTix5LHcsdix4LEMsVixqLFksZWUsYWU7bGV0IHI9dC5mcm9udG1hdHRlcj9HdSh0LmZyb250bWF0dGVyKTp2b2lkIDAscz1lLnNwbGl0KC9cXFxcclxcXFxufFxcXFxyfFxcXFxuLyksaT1uZXcgJGUsbz1bXSxhPShiPXQuaGVhZGluZ3MpIT1udWxsP2I6W107YS5zb3J0KChPLCQpPT5PLnBvc2l0aW9uLnN0YXJ0LmxpbmUtJC5wb3NpdGlvbi5zdGFydC5saW5lKTtsZXQgdT1uZXcganMuZGVmYXVsdCh2b2lkIDAsKE8sJCk9Pk8tJCk7Zm9yKGxldCBPPTA7TzxhLmxlbmd0aDtPKyspe2xldCAkPWFbT10sUT0kLnBvc2l0aW9uLnN0YXJ0LmxpbmUsdWU9Tz09YS5sZW5ndGgtMT9zLmxlbmd0aDphW08rMV0ucG9zaXRpb24uc3RhcnQubGluZSxEZT1uZXcgX3IoUSx1ZSwkLmhlYWRpbmcsJC5sZXZlbCxPKzEpO3Uuc2V0KFEsRGUpfWlmKHUuc2l6ZT09MCl7aWYoIVl1KHMsMCxzLmxlbmd0aCkpe2xldCBPPW5ldyBfcigwLHMubGVuZ3RoLEVuKG4pLDEsMCk7dS5zZXQoMCxPKX19ZWxzZXtsZXQgTz0oZz11LmdldFBhaXJPck5leHRIaWdoZXIoMCkpPT1udWxsP3ZvaWQgMDpnWzFdO2lmKE8uc3RhcnQ+MCYmIVl1KHMsMCxPLnN0YXJ0KSl7bGV0ICQ9bmV3IF9yKDAsTy5zdGFydCxFbihuKSwxLDApO3Uuc2V0KDAsJCl9fWxldCBsPW5ldyBqcy5kZWZhdWx0KHZvaWQgMCwoTywkKT0+Ty0kKSxmPTE7Zm9yKGxldCBPIG9mIHQuc2VjdGlvbnN8fFtdKXtpZihPLnR5cGU9PT1cXFwiaGVhZGluZ1xcXCIpY29udGludWU7bGV0ICQ9Ty5wb3NpdGlvbi5zdGFydC5saW5lLFE9Ty5wb3NpdGlvbi5lbmQubGluZSsxLHVlPXNbJF07aWYoTy50eXBlPT09XFxcImxpc3RcXFwiKWwuc2V0KCQsbmV3IERvKCQsUSxmKyssTy5pZCkpO2Vsc2UgaWYoTy50eXBlPT1cXFwiY29kZVxcXCImJlZmLnRlc3QodWUpKXtsZXQgRGU9cy5zbGljZSgkKzEsUS0xKS5qb2luKGBcXG5gKS5yZXBsYWNlKC9cXFxcdC9nbSxcXFwiICBcXFwiKSxSZT1HdShjbyhEZSkpO2wuc2V0KCQsbmV3IHlvKCQsUSxmKyssUmUsTy5pZCkpfWVsc2UgaWYoTy50eXBlPT09XFxcImNvZGVcXFwiKXtsZXQgRGU9dWUubWF0Y2goVWYpO2lmKCFEZSlsLnNldCgkLG5ldyBxcygkLFEsZisrLFtdLFxcXCJpbmRlbnRcXFwiLCQsUSxPLmlkKSk7ZWxzZXtsZXQgUmU9RGUubGVuZ3RoPjEmJkRlWzFdP0RlWzFdLnNwbGl0KFxcXCIsXFxcIik6W107bC5zZXQoJCxuZXcgcXMoJCxRLGYrKyxSZSxcXFwiZmVuY2VkXFxcIiwkKzEsUS0xLE8uaWQpKX19ZWxzZSBsLnNldCgkLG5ldyBnbygkLFEsZisrLE8udHlwZSxPLmlkKSl9Zm9yKGxldCBPIG9mIGwudmFsdWVzKCkpKEQ9Y3QoTy5zdGFydCx1KSk9PW51bGx8fEQuYmxvY2soTyk7bGV0IGQ9L15bXFxcXHRcXFxcZlxcXFx2IF0qW1xcXFwtK1xcXFwqXVxcXFxzKFxcXFxbLlxcXFxdXFxcXHMpPy8sbT0vXig+P1xcXFxzPykqKFxcXFx0fFxcXFxzKSovZyxoPW5ldyBqcy5kZWZhdWx0KHZvaWQgMCwoTywkKT0+Ty0kKTtmb3IobGV0IE8gb2YgdC5saXN0SXRlbXN8fFtdKXtsZXQgUT1zW08ucG9zaXRpb24uc3RhcnQubGluZV0ubWF0Y2goS2YpLHVlLERlO1EmJih1ZT1RWzFdLERlPVFbM10pO2xldCBSZT1uZXcgYm8oTy5wb3NpdGlvbi5zdGFydC5saW5lLE8ucG9zaXRpb24uZW5kLmxpbmUrMSxPLnBhcmVudCx1ZSxPLmlkLE8udGFzayxEZSk7aC5zZXQoUmUuc3RhcnQsUmUpfWZvcihsZXQgTyBvZiBoLnZhbHVlcygpKWlmKE8ucGFyZW50TGluZTwwKXtsZXQgJD1sLmdldCgtTy5wYXJlbnRMaW5lKTtpZighJHx8JC50eXBlIT09XFxcImxpc3RcXFwiKWNvbnRpbnVlOyQuaXRlbXMucHVzaChPKX1lbHNlKFQ9aC5nZXQoTy5wYXJlbnRMaW5lKSk9PW51bGx8fFQuZWxlbWVudHMucHVzaChPKTtmb3IobGV0IE8gb2YoST10LnRhZ3MpIT1udWxsP0k6W10pe2xldCAkPU8udGFnLnN0YXJ0c1dpdGgoXFxcIiNcXFwiKT9PLnRhZzpcXFwiI1xcXCIrTy50YWcsUT1PLnBvc2l0aW9uLnN0YXJ0LmxpbmU7aS50YWcoJCksKE49Y3QoUSx1KSk9PW51bGx8fE4ubWV0YWRhdGEudGFnKCQpLCh5PWN0KFEsbCkpPT1udWxsfHx5Lm1ldGFkYXRhLnRhZygkKSwodz1jdChRLGgpKT09bnVsbHx8dy5tZXRhZGF0YS50YWcoJCl9aWYodC5mcm9udG1hdHRlcilmb3IobGV0IE8gb2YgV2YodC5mcm9udG1hdHRlcikpe2xldCAkPU8uc3RhcnRzV2l0aChcXFwiI1xcXCIpP086XFxcIiNcXFwiK087aS50YWcoJCl9Zm9yKGxldCBPIG9mKHY9dC5saW5rcykhPW51bGw/djpbXSl7bGV0ICQ9T2UuaW5mZXIoTy5saW5rKSxRPU8ucG9zaXRpb24uc3RhcnQubGluZTtpLmxpbmsoJCksKHg9Y3QoUSx1KSk9PW51bGx8fHgubWV0YWRhdGEubGluaygkKSwoQz1jdChRLGwpKT09bnVsbHx8Qy5tZXRhZGF0YS5saW5rKCQpLChWPWN0KFEsaCkpPT1udWxsfHxWLm1ldGFkYXRhLmxpbmsoJCl9Zm9yKGxldCBPIG9mKGo9dC5mcm9udG1hdHRlckxpbmtzKSE9bnVsbD9qOltdKWkubGluayhPZS5pbmZlcihPLmxpbmssITEsTy5kaXNwbGF5VGV4dCkpO2ZvcihsZXQgTyBvZiBFbyhzKSl7bGV0ICQ9Ty5wb3NpdGlvbi5saW5lO2kuaW5saW5lRmllbGQoTyksKFk9Y3QoJCx1KSk9PW51bGx8fFkubWV0YWRhdGEuaW5saW5lRmllbGQoTyksKGVlPWN0KCQsbCkpPT1udWxsfHxlZS5tZXRhZGF0YS5pbmxpbmVGaWVsZChPKSwoYWU9Y3QoJCxoKSk9PW51bGx8fGFlLm1ldGFkYXRhLmlubGluZUZpZWxkKE8pfXJldHVybiBvLnB1c2goLi4udS52YWx1ZXMoKSkse2xpbmVzOnMsZnJvbnRtYXR0ZXI6cixtZXRhZGF0YTppLHNlY3Rpb25zOm99fWZ1bmN0aW9uIFl1KG4sZSx0KXtmb3IobGV0IHI9ZTtyPHQ7cisrKWlmKG5bcl0udHJpbSgpIT09XFxcIlxcXCIpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24qRW8obil7Zm9yKGxldCBlPTA7ZTxuLmxlbmd0aDtlKyspe2xldCB0PW5bZV07aWYodC5sZW5ndGg+MzI3Njh8fCF0LmluY2x1ZGVzKFxcXCI6OlxcXCIpKWNvbnRpbnVlO2xldCByPUp1KHQpO2lmKHIubGVuZ3RoPjApZm9yKGxldCBzIG9mIHIpeWllbGQgJHMocyxlKTtlbHNle2xldCBzPXp1KHQpO3MmJih5aWVsZCAkcyhzLGUpKX19fWZ1bmN0aW9uIEd1KG4pe2xldCBlPXt9O2ZvcihsZXQgdCBvZiBPYmplY3Qua2V5cyhuKSl7bGV0IHI9blt0XTtlW3QudG9Mb3dlckNhc2UoKV09e2tleTp0LHZhbHVlOl9uLmpzb24oUnMubGl0ZXJhbChyKSkscmF3OnJ9fXJldHVybiBlfWZ1bmN0aW9uIGN0KG4sZSl7dmFyIHI7bGV0IHQ9KHI9ZS5nZXRQYWlyT3JOZXh0TG93ZXIobikpPT1udWxsP3ZvaWQgMDpyWzFdO2lmKHQmJnQuZW5kPj1uKXJldHVybiB0fWZ1bmN0aW9uIFdmKG4pe3JldHVybiBPYmplY3Qua2V5cyhuKS5maWx0ZXIodD0+dC50b0xvd2VyQ2FzZSgpPT1cXFwidGFnc1xcXCJ8fHQudG9Mb3dlckNhc2UoKT09XFxcInRhZ1xcXCIpLm1hcCh0PT5RdShuW3RdLC9bLFxcXFxzXSsvKSkucmVkdWNlKCh0LHIpPT50LmNvbmNhdChyKSxbXSkubWFwKHQ9PnQuc3RhcnRzV2l0aChcXFwiI1xcXCIpP3Q6XFxcIiNcXFwiK3QpfWZ1bmN0aW9uIFF1KG4sZSl7cmV0dXJuIG49PW51bGx8fG49PW51bGw/W106QXJyYXkuaXNBcnJheShuKT9uLmZpbHRlcih0PT4hIXQpLm1hcCh0PT5RdSh0LGUpKS5yZWR1Y2UoKHQscik9PnQuY29uY2F0KHIpLFtdKTooXFxcIlxcXCIrbikuc3BsaXQoZSkuZmlsdGVyKHQ9PiEhdCkubWFwKHQ9PnQudHJpbSgpKS5maWx0ZXIodD0+dC5sZW5ndGg+MCl9dmFyICRlPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy50YWdzPW5ldyBTZXQ7dGhpcy5saW5rcz1bXTt0aGlzLmlubGluZUZpZWxkcz17fX10YWcoZSl7dGhpcy50YWdzLmFkZChlKX1saW5rKGUpe3RoaXMubGlua3MuZmluZCh0PT50LmVxdWFscyhlKSl8fHRoaXMubGlua3MucHVzaChlKX1pbmxpbmVGaWVsZChlKXtsZXQgdD1lLmtleS50b0xvd2VyQ2FzZSgpO09iamVjdC5rZXlzKHRoaXMuaW5saW5lRmllbGRzKS5zb21lKHI9PnIudG9Mb3dlckNhc2UoKT09dCl8fCh0aGlzLmlubGluZUZpZWxkc1t0XT1lKX1maW5pc2hUYWdzKCl7cmV0dXJuIEFycmF5LmZyb20odGhpcy50YWdzKX1maW5pc2hMaW5rcygpe3JldHVybiB0aGlzLmxpbmtzLm1hcChlPT5lLnRvT2JqZWN0KCkpfWZpbmlzaElubGluZUZpZWxkcygpe3JldHVybiBHdCh0aGlzLmlubGluZUZpZWxkcyxXdSl9fSxwbz1jbGFzc3tjb25zdHJ1Y3RvcihlLHQscixzLGksbyl7dGhpcy5wYXRoPWU7dGhpcy5zdGF0cz10O3RoaXMubGVuZ3RoPXI7dGhpcy5tZXRhZGF0YT1zO3RoaXMuc2VjdGlvbnM9aTt0aGlzLmZyb250bWF0dGVyPW99YnVpbGQoKXtyZXR1cm57JHBhdGg6dGhpcy5wYXRoLCRjdGltZTp0aGlzLnN0YXRzLmN0aW1lLCRtdGltZTp0aGlzLnN0YXRzLm10aW1lLCRzaXplOnRoaXMuc3RhdHMuc2l6ZSwkZXh0ZW5zaW9uOlZhKHRoaXMucGF0aCksJHBvc2l0aW9uOntzdGFydDowLGVuZDp0aGlzLmxlbmd0aH0sJHRhZ3M6dGhpcy5tZXRhZGF0YS5maW5pc2hUYWdzKCksJGxpbmtzOnRoaXMubWV0YWRhdGEuZmluaXNoTGlua3MoKSwkaW5maWVsZHM6dGhpcy5tZXRhZGF0YS5maW5pc2hJbmxpbmVGaWVsZHMoKSwkc2VjdGlvbnM6dGhpcy5zZWN0aW9ucy5tYXAoZT0+ZS5idWlsZCgpKSwkZnJvbnRtYXR0ZXI6dGhpcy5mcm9udG1hdHRlcn19fSxfcj1jbGFzc3tjb25zdHJ1Y3RvcihlLHQscixzLGkpe3RoaXMuc3RhcnQ9ZTt0aGlzLmVuZD10O3RoaXMudGl0bGU9cjt0aGlzLmxldmVsPXM7dGhpcy5vcmRpbmFsPWk7dGhpcy5ibG9ja3M9W107dGhpcy5tZXRhZGF0YT1uZXcgJGV9YmxvY2soZSl7dGhpcy5ibG9ja3MucHVzaChlKX1idWlsZCgpe3JldHVybnskdGl0bGU6dGhpcy50aXRsZSwkb3JkaW5hbDp0aGlzLm9yZGluYWwsJGxldmVsOnRoaXMubGV2ZWwsJHRhZ3M6dGhpcy5tZXRhZGF0YS5maW5pc2hUYWdzKCksJGluZmllbGRzOnRoaXMubWV0YWRhdGEuZmluaXNoSW5saW5lRmllbGRzKCksJGxpbmtzOnRoaXMubWV0YWRhdGEuZmluaXNoTGlua3MoKSwkcG9zaXRpb246e3N0YXJ0OnRoaXMuc3RhcnQsZW5kOnRoaXMuZW5kfSwkYmxvY2tzOnRoaXMuYmxvY2tzLm1hcChlPT5lLmJ1aWxkKCkpfX19LERvPWNsYXNze2NvbnN0cnVjdG9yKGUsdCxyLHMpe3RoaXMuc3RhcnQ9ZTt0aGlzLmVuZD10O3RoaXMub3JkaW5hbD1yO3RoaXMuYmxvY2tJZD1zO3RoaXMudHlwZT1cXFwibGlzdFxcXCI7dGhpcy5tZXRhZGF0YT1uZXcgJGU7dGhpcy5pdGVtcz1bXX1idWlsZCgpe3JldHVybnskb3JkaW5hbDp0aGlzLm9yZGluYWwsJHBvc2l0aW9uOntzdGFydDp0aGlzLnN0YXJ0LGVuZDp0aGlzLmVuZH0sJGluZmllbGRzOnRoaXMubWV0YWRhdGEuZmluaXNoSW5saW5lRmllbGRzKCksJHRhZ3M6dGhpcy5tZXRhZGF0YS5maW5pc2hUYWdzKCksJGxpbmtzOnRoaXMubWV0YWRhdGEuZmluaXNoTGlua3MoKSwkdHlwZTpcXFwibGlzdFxcXCIsJGJsb2NrSWQ6dGhpcy5ibG9ja0lkLCRlbGVtZW50czp0aGlzLml0ZW1zLm1hcChlPT5lLmJ1aWxkKCkpfX19LHFzPWNsYXNze2NvbnN0cnVjdG9yKGUsdCxyLHMsaSxvLGEsdSl7dGhpcy5zdGFydD1lO3RoaXMuZW5kPXQ7dGhpcy5vcmRpbmFsPXI7dGhpcy5sYW5ndWFnZXM9czt0aGlzLnN0eWxlPWk7dGhpcy5jb250ZW50U3RhcnQ9bzt0aGlzLmNvbnRlbnRFbmQ9YTt0aGlzLmJsb2NrSWQ9dTt0aGlzLnR5cGU9XFxcImNvZGVibG9ja1xcXCI7dGhpcy5tZXRhZGF0YT1uZXcgJGV9YnVpbGQoKXtyZXR1cm57JHR5cGU6XFxcImNvZGVibG9ja1xcXCIsJG9yZGluYWw6dGhpcy5vcmRpbmFsLCRwb3NpdGlvbjp7c3RhcnQ6dGhpcy5zdGFydCxlbmQ6dGhpcy5lbmR9LCRpbmZpZWxkczp0aGlzLm1ldGFkYXRhLmZpbmlzaElubGluZUZpZWxkcygpLCR0YWdzOnRoaXMubWV0YWRhdGEuZmluaXNoVGFncygpLCRsaW5rczp0aGlzLm1ldGFkYXRhLmZpbmlzaExpbmtzKCksJGJsb2NrSWQ6dGhpcy5ibG9ja0lkLCRsYW5ndWFnZXM6dGhpcy5sYW5ndWFnZXMsJHN0eWxlOnRoaXMuc3R5bGUsJGNvbnRlbnRQb3NpdGlvbjp7c3RhcnQ6dGhpcy5jb250ZW50U3RhcnQsZW5kOnRoaXMuY29udGVudEVuZH19fX0seW89Y2xhc3N7Y29uc3RydWN0b3IoZSx0LHIscyxpKXt0aGlzLnN0YXJ0PWU7dGhpcy5lbmQ9dDt0aGlzLm9yZGluYWw9cjt0aGlzLmRhdGE9czt0aGlzLmJsb2NrSWQ9aTt0aGlzLnR5cGU9XFxcImRhdGFibG9ja1xcXCI7dGhpcy5tZXRhZGF0YT1uZXcgJGV9YnVpbGQoKXtyZXR1cm57JHR5cGU6XFxcImRhdGFibG9ja1xcXCIsJG9yZGluYWw6dGhpcy5vcmRpbmFsLCRwb3NpdGlvbjp7c3RhcnQ6dGhpcy5zdGFydCxlbmQ6dGhpcy5lbmR9LCRpbmZpZWxkczp0aGlzLm1ldGFkYXRhLmZpbmlzaElubGluZUZpZWxkcygpLCR0YWdzOnRoaXMubWV0YWRhdGEuZmluaXNoVGFncygpLCRsaW5rczp0aGlzLm1ldGFkYXRhLmZpbmlzaExpbmtzKCksJGJsb2NrSWQ6dGhpcy5ibG9ja0lkLCRkYXRhOnRoaXMuZGF0YX19fSxnbz1jbGFzc3tjb25zdHJ1Y3RvcihlLHQscixzLGkpe3RoaXMuc3RhcnQ9ZTt0aGlzLmVuZD10O3RoaXMub3JkaW5hbD1yO3RoaXMudHlwZT1zO3RoaXMuYmxvY2tJZD1pO3RoaXMubWV0YWRhdGE9bmV3ICRlfWJ1aWxkKCl7cmV0dXJueyR0eXBlOnRoaXMudHlwZSwkb3JkaW5hbDp0aGlzLm9yZGluYWwsJHBvc2l0aW9uOntzdGFydDp0aGlzLnN0YXJ0LGVuZDp0aGlzLmVuZH0sJGluZmllbGRzOnRoaXMubWV0YWRhdGEuZmluaXNoSW5saW5lRmllbGRzKCksJHRhZ3M6dGhpcy5tZXRhZGF0YS5maW5pc2hUYWdzKCksJGxpbmtzOnRoaXMubWV0YWRhdGEuZmluaXNoTGlua3MoKSwkYmxvY2tJZDp0aGlzLmJsb2NrSWR9fX0sYm89Y2xhc3N7Y29uc3RydWN0b3IoZSx0LHIscyxpLG8sYSl7dGhpcy5zdGFydD1lO3RoaXMuZW5kPXQ7dGhpcy5wYXJlbnRMaW5lPXI7dGhpcy5zeW1ib2w9czt0aGlzLmJsb2NrSWQ9aTt0aGlzLnN0YXR1cz1vO3RoaXMudGV4dD1hO3RoaXMubWV0YWRhdGE9bmV3ICRlO3RoaXMuZWxlbWVudHM9W119YnVpbGQoKXtyZXR1cm57JHBhcmVudExpbmU6dGhpcy5wYXJlbnRMaW5lLCRwb3NpdGlvbjp7c3RhcnQ6dGhpcy5zdGFydCxlbmQ6dGhpcy5lbmR9LCRibG9ja0lkOnRoaXMuYmxvY2tJZCwkZWxlbWVudHM6dGhpcy5lbGVtZW50cy5tYXAoZT0+ZS5idWlsZCgpKSwkdHlwZTp0aGlzLnN0YXR1cz9cXFwidGFza1xcXCI6XFxcImxpc3RcXFwiLCRpbmZpZWxkczp0aGlzLm1ldGFkYXRhLmZpbmlzaElubGluZUZpZWxkcygpLCR0YWdzOnRoaXMubWV0YWRhdGEuZmluaXNoVGFncygpLCRsaW5rczp0aGlzLm1ldGFkYXRhLmZpbmlzaExpbmtzKCksJHN0YXR1czp0aGlzLnN0YXR1cywkc3ltYm9sOnRoaXMuc3ltYm9sLCR0ZXh0OnRoaXMudGV4dH19fTtmdW5jdGlvbiBYdShuLGUsdCxyKXt2YXIgbztsZXQgcz1uZXcgVG8obixyKSxpPUpTT04ucGFyc2UoZSk7Zm9yKGxldCBhIG9mIGkubm9kZXMpaWYoYS50eXBlIT1cXFwiZ3JvdXBcXFwiKWlmKGEudHlwZT09XFxcInRleHRcXFwiKXtsZXR7ZnJvbnRtYXR0ZXI6dSxtZXRhZGF0YTpsLGxpbmVzOmYsc2VjdGlvbnM6ZH09Rm8obixhLnRleHQsdC5jYWNoZXNbYS5pZF0pLG09bmV3IFZzKG4sYS5pZCxhLHUpO2QuZm9yRWFjaChoPT5tLnNlY3Rpb24oaCkpLHMuY2FyZChtKTtmb3IobGV0IGggaW4gbC50YWdzKXMubWV0YWRhdGEudGFnKGgpO2ZvcihsZXQgaCBvZihvPWwubGlua3MpIT1udWxsP286W10pcy5tZXRhZGF0YS5saW5rKGgpO2ZvcihsZXQgaCBvZiBFbyhmKSlzLm1ldGFkYXRhLmlubGluZUZpZWxkKGgpfWVsc2V7bGV0IHU9bmV3IFZzKG4sYS5pZCxhKTtzLmNhcmQodSl9cmV0dXJuIHMuYnVpbGQoKX12YXIgd289Y2xhc3N7Y29uc3RydWN0b3IoZSx0LHIpe3RoaXMucGF0aD1lO3RoaXMuaWQ9dDt0aGlzLm5vZGVKc29uPXI7dGhpcy5tZXRhZGF0YT1uZXcgJGV9YnVpbGQoKXtyZXR1cm57JGZpbGU6dGhpcy5wYXRoLCRpZDp0aGlzLmlkLCRwb3NpdGlvbjp7eDp0aGlzLm5vZGVKc29uLngseTp0aGlzLm5vZGVKc29uLnl9LCRkaW1lbnNpb25zOnt3aWR0aDp0aGlzLm5vZGVKc29uLndpZHRoLGhlaWdodDp0aGlzLm5vZGVKc29uLmhlaWdodH0sJGNvbG9yOnRoaXMubm9kZUpzb24uY29sb3IsJGxpbms6T2UuZmlsZSh0aGlzLnBhdGgpLndpdGhCbG9jayh0aGlzLmlkKS50b09iamVjdCgpfX19LFZzPWNsYXNzIGV4dGVuZHMgd297Y29uc3RydWN0b3IodCxyLHMsaSl7c3VwZXIodCxyLHMpO3RoaXMucGF0aD10O3RoaXMuaWQ9cjt0aGlzLm5vZGVKc29uPXM7dGhpcy5mcm9udG1hdHRlcj1pO3RoaXMuc2VjdGlvbnM9W119c2VjdGlvbih0KXtyZXR1cm4gdGhpcy5zZWN0aW9ucy5wdXNoKHQpLHR9YnVpbGQoKXtzd2l0Y2godGhpcy5ub2RlSnNvbi50eXBlKXtjYXNlXFxcInRleHRcXFwiOnJldHVybiB5ZShSKHt9LHN1cGVyLmJ1aWxkKCkpLHskaW5maWVsZHM6dGhpcy5tZXRhZGF0YS5maW5pc2hJbmxpbmVGaWVsZHMoKSwkZnJvbnRtYXR0ZXI6dGhpcy5mcm9udG1hdHRlciwkc2VjdGlvbnM6dGhpcy5zZWN0aW9ucy5tYXAodD0+dC5idWlsZCgpKSwkdGFnczp0aGlzLm1ldGFkYXRhLmZpbmlzaFRhZ3MoKSwkbGlua3M6dGhpcy5tZXRhZGF0YS5maW5pc2hMaW5rcygpLCR0eXBlOlxcXCJ0ZXh0LWNhcmRcXFwiLCRjb2xvcjp0aGlzLm5vZGVKc29uLmNvbG9yfSk7Y2FzZVxcXCJmaWxlXFxcIjpyZXR1cm4geWUoUih7fSxzdXBlci5idWlsZCgpKSx7JGxpbmtlZEZpbGU6dGhpcy5ub2RlSnNvbi5maWxlfSk7Y2FzZVxcXCJsaW5rXFxcIjpyZXR1cm4geWUoUih7fSxzdXBlci5idWlsZCgpKSx7JHVybDp0aGlzLm5vZGVKc29uLnVybH0pfX19LFRvPWNsYXNze2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5wYXRoPWU7dGhpcy5zdGF0cz10O3RoaXMuY2FyZHM9W107dGhpcy5tZXRhZGF0YT1uZXcgJGV9Y2FyZChlKXtyZXR1cm4gdGhpcy5jYXJkcy5wdXNoKGUpLGV9YnVpbGQoKXtyZXR1cm57JGNhcmRzOnRoaXMuY2FyZHMubWFwKGU9PmUuYnVpbGQoKSksJGN0aW1lOnRoaXMuc3RhdHMuY3RpbWUsJG10aW1lOnRoaXMuc3RhdHMubXRpbWUsJGluZmllbGRzOnRoaXMubWV0YWRhdGEuZmluaXNoSW5saW5lRmllbGRzKCksJGxpbmtzOnRoaXMubWV0YWRhdGEuZmluaXNoTGlua3MoKSwkdGFnczp0aGlzLm1ldGFkYXRhLmZpbmlzaFRhZ3MoKSwkcGF0aDp0aGlzLnBhdGgsJHNpemU6dGhpcy5zdGF0cy5zaXplfX19O29ubWVzc2FnZT1hc3luYyBuPT57dHJ5e2xldCBlPW4uZGF0YTtpZihlLnR5cGU9PT1cXFwibWFya2Rvd25cXFwiKXtsZXQgdD1adShlLnBhdGgsZS5jb250ZW50cyxlLm1ldGFkYXRhLGUuc3RhdCk7cG9zdE1lc3NhZ2Uoe3R5cGU6XFxcIm1hcmtkb3duXFxcIixyZXN1bHQ6dH0pfWVsc2UgaWYoZS50eXBlPT09XFxcImNhbnZhc1xcXCIpe2xldCB0PVh1KGUucGF0aCxlLmNvbnRlbnRzLGUuaW5kZXgsZS5zdGF0KTtwb3N0TWVzc2FnZSh7dHlwZTpcXFwiY2FudmFzXFxcIixyZXN1bHQ6dH0pfWVsc2UgcG9zdE1lc3NhZ2UoeyRlcnJvcjpcXFwiVW5zdXBwb3J0ZWQgaW1wb3J0IG1ldGhvZC5cXFwifSl9Y2F0Y2goZSl7Y29uc29sZS5lcnJvcihgRGF0YWNvcmUgSW5kZXhlciBmYWlsZWQgdG8gaW5kZXggJHtuLmRhdGEucGF0aH06ICR7ZX1gKSxwb3N0TWVzc2FnZSh7JGVycm9yOmUubWVzc2FnZX0pfX07XFxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxld29nSUNKMlpYSnphVzl1SWpvZ015d0tJQ0FpYzI5MWNtTmxjeUk2SUZzaUxpNHZMaTR2Y0dGeWMybHRiVzl1TDJKMWFXeGtMM0JoY25OcGJXMXZiaTUxYldRdWJXbHVMbXB6SWl3Z0lpNHVMeTR1TDNOdmNuUmxaQzFpZEhKbFpTOWlLM1J5WldVdWFuTWlMQ0FpTGk0dkxpNHZiSFY0YjI0dmMzSmpMMlZ5Y205eWN5NXFjeUlzSUNJdUxpOHVMaTlzZFhodmJpOXpjbU12YVcxd2JDOW1iM0p0WVhSekxtcHpJaXdnSWk0dUx5NHVMMngxZUc5dUwzTnlZeTlwYlhCc0wzVjBhV3d1YW5NaUxDQWlMaTR2TGk0dmJIVjRiMjR2YzNKakwybHRjR3d2Wlc1bmJHbHphQzVxY3lJc0lDSXVMaTh1TGk5c2RYaHZiaTl6Y21NdmFXMXdiQzltYjNKdFlYUjBaWEl1YW5NaUxDQWlMaTR2TGk0dmJIVjRiMjR2YzNKakwybHRjR3d2YVc1MllXeHBaQzVxY3lJc0lDSXVMaTh1TGk5c2RYaHZiaTl6Y21NdmVtOXVaUzVxY3lJc0lDSXVMaTh1TGk5c2RYaHZiaTl6Y21NdmVtOXVaWE12YzNsemRHVnRXbTl1WlM1cWN5SXNJQ0l1TGk4dUxpOXNkWGh2Ymk5emNtTXZlbTl1WlhNdlNVRk9RVnB2Ym1VdWFuTWlMQ0FpTGk0dkxpNHZiSFY0YjI0dmMzSmpMM3B2Ym1WekwyWnBlR1ZrVDJabWMyVjBXbTl1WlM1cWN5SXNJQ0l1TGk4dUxpOXNkWGh2Ymk5emNtTXZlbTl1WlhNdmFXNTJZV3hwWkZwdmJtVXVhbk1pTENBaUxpNHZMaTR2YkhWNGIyNHZjM0pqTDJsdGNHd3ZlbTl1WlZWMGFXd3Vhbk1pTENBaUxpNHZMaTR2YkhWNGIyNHZjM0pqTDNObGRIUnBibWR6TG1weklpd2dJaTR1THk0dUwyeDFlRzl1TDNOeVl5OXBiWEJzTDJ4dlkyRnNaUzVxY3lJc0lDSXVMaTh1TGk5c2RYaHZiaTl6Y21NdmFXMXdiQzl5WldkbGVGQmhjbk5sY2k1cWN5SXNJQ0l1TGk4dUxpOXNkWGh2Ymk5emNtTXZaSFZ5WVhScGIyNHVhbk1pTENBaUxpNHZMaTR2YkhWNGIyNHZjM0pqTDJsdWRHVnlkbUZzTG1weklpd2dJaTR1THk0dUwyeDFlRzl1TDNOeVl5OXBibVp2TG1weklpd2dJaTR1THk0dUwyeDFlRzl1TDNOeVl5OXBiWEJzTDJScFptWXVhbk1pTENBaUxpNHZMaTR2YkhWNGIyNHZjM0pqTDJsdGNHd3ZaR2xuYVhSekxtcHpJaXdnSWk0dUx5NHVMMngxZUc5dUwzTnlZeTlwYlhCc0wzUnZhMlZ1VUdGeWMyVnlMbXB6SWl3Z0lpNHVMeTR1TDJ4MWVHOXVMM055WXk5cGJYQnNMMk52Ym5abGNuTnBiMjV6TG1weklpd2dJaTR1THk0dUwyeDFlRzl1TDNOeVl5OWtZWFJsZEdsdFpTNXFjeUlzSUNJdUxpOHVMaTh1TGk5emNtTXZkWFJwYkhNdmJtOXliV0ZzYVhwbGNuTXVkSE1pTENBaUxpNHZMaTR2WlcxdmFta3RjbVZuWlhndmFXNWtaWGd1Yldweklpd2dJaTR1THk0dUx5NHVMM055WXk5bGVIQnlaWE56YVc5dUwyeHBibXN1ZEhNaUxDQWlMaTR2TGk0dmVXRnRiQzlpY205M2MyVnlMMlJwYzNRdmJtOWtaWE12YVdSbGJuUnBkSGt1YW5NaUxDQWlMaTR2TGk0dmVXRnRiQzlpY205M2MyVnlMMlJwYzNRdmRtbHphWFF1YW5NaUxDQWlMaTR2TGk0dmVXRnRiQzlpY205M2MyVnlMMlJwYzNRdlpHOWpMMlJwY21WamRHbDJaWE11YW5NaUxDQWlMaTR2TGk0dmVXRnRiQzlpY205M2MyVnlMMlJwYzNRdlpHOWpMMkZ1WTJodmNuTXVhbk1pTENBaUxpNHZMaTR2ZVdGdGJDOWljbTkzYzJWeUwyUnBjM1F2Wkc5akwyRndjR3g1VW1WMmFYWmxjaTVxY3lJc0lDSXVMaTh1TGk5NVlXMXNMMkp5YjNkelpYSXZaR2x6ZEM5dWIyUmxjeTkwYjBwVExtcHpJaXdnSWk0dUx5NHVMM2xoYld3dlluSnZkM05sY2k5a2FYTjBMMjV2WkdWekwwNXZaR1V1YW5NaUxDQWlMaTR2TGk0dmVXRnRiQzlpY205M2MyVnlMMlJwYzNRdmJtOWtaWE12UVd4cFlYTXVhbk1pTENBaUxpNHZMaTR2ZVdGdGJDOWljbTkzYzJWeUwyUnBjM1F2Ym05a1pYTXZVMk5oYkdGeUxtcHpJaXdnSWk0dUx5NHVMM2xoYld3dlluSnZkM05sY2k5a2FYTjBMMlJ2WXk5amNtVmhkR1ZPYjJSbExtcHpJaXdnSWk0dUx5NHVMM2xoYld3dlluSnZkM05sY2k5a2FYTjBMMjV2WkdWekwwTnZiR3hsWTNScGIyNHVhbk1pTENBaUxpNHZMaTR2ZVdGdGJDOWljbTkzYzJWeUwyUnBjM1F2YzNSeWFXNW5hV1o1TDNOMGNtbHVaMmxtZVVOdmJXMWxiblF1YW5NaUxDQWlMaTR2TGk0dmVXRnRiQzlpY205M2MyVnlMMlJwYzNRdmMzUnlhVzVuYVdaNUwyWnZiR1JHYkc5M1RHbHVaWE11YW5NaUxDQWlMaTR2TGk0dmVXRnRiQzlpY205M2MyVnlMMlJwYzNRdmMzUnlhVzVuYVdaNUwzTjBjbWx1WjJsbWVWTjBjbWx1Wnk1cWN5SXNJQ0l1TGk4dUxpOTVZVzFzTDJKeWIzZHpaWEl2WkdsemRDOXpkSEpwYm1kcFpua3ZjM1J5YVc1bmFXWjVMbXB6SWl3Z0lpNHVMeTR1TDNsaGJXd3ZZbkp2ZDNObGNpOWthWE4wTDNOMGNtbHVaMmxtZVM5emRISnBibWRwWm5sUVlXbHlMbXB6SWl3Z0lpNHVMeTR1TDNsaGJXd3ZZbkp2ZDNObGNpOWthWE4wTDJ4dlp5NXFjeUlzSUNJdUxpOHVMaTk1WVcxc0wySnliM2R6WlhJdlpHbHpkQzl6WTJobGJXRXZlV0Z0YkMweExqRXZiV1Z5WjJVdWFuTWlMQ0FpTGk0dkxpNHZlV0Z0YkM5aWNtOTNjMlZ5TDJScGMzUXZibTlrWlhNdllXUmtVR0ZwY2xSdlNsTk5ZWEF1YW5NaUxDQWlMaTR2TGk0dmVXRnRiQzlpY205M2MyVnlMMlJwYzNRdmJtOWtaWE12VUdGcGNpNXFjeUlzSUNJdUxpOHVMaTk1WVcxc0wySnliM2R6WlhJdlpHbHpkQzl6ZEhKcGJtZHBabmt2YzNSeWFXNW5hV1o1UTI5c2JHVmpkR2x2Ymk1cWN5SXNJQ0l1TGk4dUxpOTVZVzFzTDJKeWIzZHpaWEl2WkdsemRDOXViMlJsY3k5WlFVMU1UV0Z3TG1weklpd2dJaTR1THk0dUwzbGhiV3d2WW5KdmQzTmxjaTlrYVhOMEwzTmphR1Z0WVM5amIyMXRiMjR2YldGd0xtcHpJaXdnSWk0dUx5NHVMM2xoYld3dlluSnZkM05sY2k5a2FYTjBMMjV2WkdWekwxbEJUVXhUWlhFdWFuTWlMQ0FpTGk0dkxpNHZlV0Z0YkM5aWNtOTNjMlZ5TDJScGMzUXZjMk5vWlcxaEwyTnZiVzF2Ymk5elpYRXVhbk1pTENBaUxpNHZMaTR2ZVdGdGJDOWljbTkzYzJWeUwyUnBjM1F2YzJOb1pXMWhMMk52YlcxdmJpOXpkSEpwYm1jdWFuTWlMQ0FpTGk0dkxpNHZlV0Z0YkM5aWNtOTNjMlZ5TDJScGMzUXZjMk5vWlcxaEwyTnZiVzF2Ymk5dWRXeHNMbXB6SWl3Z0lpNHVMeTR1TDNsaGJXd3ZZbkp2ZDNObGNpOWthWE4wTDNOamFHVnRZUzlqYjNKbEwySnZiMnd1YW5NaUxDQWlMaTR2TGk0dmVXRnRiQzlpY205M2MyVnlMMlJwYzNRdmMzUnlhVzVuYVdaNUwzTjBjbWx1WjJsbWVVNTFiV0psY2k1cWN5SXNJQ0l1TGk4dUxpOTVZVzFzTDJKeWIzZHpaWEl2WkdsemRDOXpZMmhsYldFdlkyOXlaUzltYkc5aGRDNXFjeUlzSUNJdUxpOHVMaTk1WVcxc0wySnliM2R6WlhJdlpHbHpkQzl6WTJobGJXRXZZMjl5WlM5cGJuUXVhbk1pTENBaUxpNHZMaTR2ZVdGdGJDOWljbTkzYzJWeUwyUnBjM1F2YzJOb1pXMWhMMk52Y21VdmMyTm9aVzFoTG1weklpd2dJaTR1THk0dUwzbGhiV3d2WW5KdmQzTmxjaTlrYVhOMEwzTmphR1Z0WVM5cWMyOXVMM05qYUdWdFlTNXFjeUlzSUNJdUxpOHVMaTk1WVcxc0wySnliM2R6WlhJdlpHbHpkQzl6WTJobGJXRXZlV0Z0YkMweExqRXZZbWx1WVhKNUxtcHpJaXdnSWk0dUx5NHVMM2xoYld3dlluSnZkM05sY2k5a2FYTjBMM05qYUdWdFlTOTVZVzFzTFRFdU1TOXdZV2x5Y3k1cWN5SXNJQ0l1TGk4dUxpOTVZVzFzTDJKeWIzZHpaWEl2WkdsemRDOXpZMmhsYldFdmVXRnRiQzB4TGpFdmIyMWhjQzVxY3lJc0lDSXVMaTh1TGk5NVlXMXNMMkp5YjNkelpYSXZaR2x6ZEM5elkyaGxiV0V2ZVdGdGJDMHhMakV2WW05dmJDNXFjeUlzSUNJdUxpOHVMaTk1WVcxc0wySnliM2R6WlhJdlpHbHpkQzl6WTJobGJXRXZlV0Z0YkMweExqRXZabXh2WVhRdWFuTWlMQ0FpTGk0dkxpNHZlV0Z0YkM5aWNtOTNjMlZ5TDJScGMzUXZjMk5vWlcxaEwzbGhiV3d0TVM0eEwybHVkQzVxY3lJc0lDSXVMaTh1TGk5NVlXMXNMMkp5YjNkelpYSXZaR2x6ZEM5elkyaGxiV0V2ZVdGdGJDMHhMakV2YzJWMExtcHpJaXdnSWk0dUx5NHVMM2xoYld3dlluSnZkM05sY2k5a2FYTjBMM05qYUdWdFlTOTVZVzFzTFRFdU1TOTBhVzFsYzNSaGJYQXVhbk1pTENBaUxpNHZMaTR2ZVdGdGJDOWljbTkzYzJWeUwyUnBjM1F2YzJOb1pXMWhMM2xoYld3dE1TNHhMM05qYUdWdFlTNXFjeUlzSUNJdUxpOHVMaTk1WVcxc0wySnliM2R6WlhJdlpHbHpkQzl6WTJobGJXRXZkR0ZuY3k1cWN5SXNJQ0l1TGk4dUxpOTVZVzFzTDJKeWIzZHpaWEl2WkdsemRDOXpZMmhsYldFdlUyTm9aVzFoTG1weklpd2dJaTR1THk0dUwzbGhiV3d2WW5KdmQzTmxjaTlrYVhOMEwzTjBjbWx1WjJsbWVTOXpkSEpwYm1kcFpubEViMk4xYldWdWRDNXFjeUlzSUNJdUxpOHVMaTk1WVcxc0wySnliM2R6WlhJdlpHbHpkQzlrYjJNdlJHOWpkVzFsYm5RdWFuTWlMQ0FpTGk0dkxpNHZlV0Z0YkM5aWNtOTNjMlZ5TDJScGMzUXZaWEp5YjNKekxtcHpJaXdnSWk0dUx5NHVMM2xoYld3dlluSnZkM05sY2k5a2FYTjBMMk52YlhCdmMyVXZjbVZ6YjJ4MlpTMXdjbTl3Y3k1cWN5SXNJQ0l1TGk4dUxpOTVZVzFzTDJKeWIzZHpaWEl2WkdsemRDOWpiMjF3YjNObEwzVjBhV3d0WTI5dWRHRnBibk10Ym1WM2JHbHVaUzVxY3lJc0lDSXVMaTh1TGk5NVlXMXNMMkp5YjNkelpYSXZaR2x6ZEM5amIyMXdiM05sTDNWMGFXd3RabXh2ZHkxcGJtUmxiblF0WTJobFkyc3Vhbk1pTENBaUxpNHZMaTR2ZVdGdGJDOWljbTkzYzJWeUwyUnBjM1F2WTI5dGNHOXpaUzkxZEdsc0xXMWhjQzFwYm1Oc2RXUmxjeTVxY3lJc0lDSXVMaTh1TGk5NVlXMXNMMkp5YjNkelpYSXZaR2x6ZEM5amIyMXdiM05sTDNKbGMyOXNkbVV0WW14dlkyc3RiV0Z3TG1weklpd2dJaTR1THk0dUwzbGhiV3d2WW5KdmQzTmxjaTlrYVhOMEwyTnZiWEJ2YzJVdmNtVnpiMngyWlMxaWJHOWpheTF6WlhFdWFuTWlMQ0FpTGk0dkxpNHZlV0Z0YkM5aWNtOTNjMlZ5TDJScGMzUXZZMjl0Y0c5elpTOXlaWE52YkhabExXVnVaQzVxY3lJc0lDSXVMaTh1TGk5NVlXMXNMMkp5YjNkelpYSXZaR2x6ZEM5amIyMXdiM05sTDNKbGMyOXNkbVV0Wm14dmR5MWpiMnhzWldOMGFXOXVMbXB6SWl3Z0lpNHVMeTR1TDNsaGJXd3ZZbkp2ZDNObGNpOWthWE4wTDJOdmJYQnZjMlV2WTI5dGNHOXpaUzFqYjJ4c1pXTjBhVzl1TG1weklpd2dJaTR1THk0dUwzbGhiV3d2WW5KdmQzTmxjaTlrYVhOMEwyTnZiWEJ2YzJVdmNtVnpiMngyWlMxaWJHOWpheTF6WTJGc1lYSXVhbk1pTENBaUxpNHZMaTR2ZVdGdGJDOWljbTkzYzJWeUwyUnBjM1F2WTI5dGNHOXpaUzl5WlhOdmJIWmxMV1pzYjNjdGMyTmhiR0Z5TG1weklpd2dJaTR1THk0dUwzbGhiV3d2WW5KdmQzTmxjaTlrYVhOMEwyTnZiWEJ2YzJVdlkyOXRjRzl6WlMxelkyRnNZWEl1YW5NaUxDQWlMaTR2TGk0dmVXRnRiQzlpY205M2MyVnlMMlJwYzNRdlkyOXRjRzl6WlM5MWRHbHNMV1Z0Y0hSNUxYTmpZV3hoY2kxd2IzTnBkR2x2Ymk1cWN5SXNJQ0l1TGk4dUxpOTVZVzFzTDJKeWIzZHpaWEl2WkdsemRDOWpiMjF3YjNObEwyTnZiWEJ2YzJVdGJtOWtaUzVxY3lJc0lDSXVMaTh1TGk5NVlXMXNMMkp5YjNkelpYSXZaR2x6ZEM5amIyMXdiM05sTDJOdmJYQnZjMlV0Wkc5akxtcHpJaXdnSWk0dUx5NHVMM2xoYld3dlluSnZkM05sY2k5a2FYTjBMMk52YlhCdmMyVXZZMjl0Y0c5elpYSXVhbk1pTENBaUxpNHZMaTR2ZVdGdGJDOWljbTkzYzJWeUwyUnBjM1F2Y0dGeWMyVXZZM04wTFhacGMybDBMbXB6SWl3Z0lpNHVMeTR1TDNsaGJXd3ZZbkp2ZDNObGNpOWthWE4wTDNCaGNuTmxMMk56ZEM1cWN5SXNJQ0l1TGk4dUxpOTVZVzFzTDJKeWIzZHpaWEl2WkdsemRDOXdZWEp6WlM5c1pYaGxjaTVxY3lJc0lDSXVMaTh1TGk5NVlXMXNMMkp5YjNkelpYSXZaR2x6ZEM5d1lYSnpaUzlzYVc1bExXTnZkVzUwWlhJdWFuTWlMQ0FpTGk0dkxpNHZlV0Z0YkM5aWNtOTNjMlZ5TDJScGMzUXZjR0Z5YzJVdmNHRnljMlZ5TG1weklpd2dJaTR1THk0dUwzbGhiV3d2WW5KdmQzTmxjaTlrYVhOMEwzQjFZbXhwWXkxaGNHa3Vhbk1pTENBaUxpNHZMaTR2TGk0dmMzSmpMMmx1WkdWNEwybHRjRzl5ZEM5dFlYSnJaRzkzYmk1MGN5SXNJQ0l1TGk4dUxpOHVMaTl6Y21NdlpYaHdjbVZ6YzJsdmJpOXdZWEp6WlhJdWRITWlMQ0FpTGk0dkxpNHZMaTR2YzNKakwyVjRjSEpsYzNOcGIyNHZiR2wwWlhKaGJDNTBjeUlzSUNJdUxpOHVMaTh1TGk5emNtTXZZWEJwTDNKbGMzVnNkQzUwY3lJc0lDSXVMaTh1TGk4dUxpOXpjbU12Wlhod2NtVnpjMmx2Ymk5bWFXeDBaWEp6TG5Seklpd2dJaTR1THk0dUx5NHVMM055WXk5bGVIQnlaWE56YVc5dUwyVjRjSEpsYzNOcGIyNHVkSE1pTENBaUxpNHZMaTR2TGk0dmMzSmpMMmx1WkdWNEwybHRjRzl5ZEM5cGJteHBibVV0Wm1sbGJHUXVkSE1pTENBaUxpNHZMaTR2TGk0dmMzSmpMM1YwYVd4ekwyUmhkR0V1ZEhNaUxDQWlMaTR2TGk0dkxpNHZjM0pqTDJsdVpHVjRMM1I1Y0dWekwycHpiMjR2WTI5dGJXOXVMblJ6SWl3Z0lpNHVMeTR1THk0dUwzTnlZeTlwYm1SbGVDOTBlWEJsY3k5NVlXMXNMblJ6SWl3Z0lpNHVMeTR1THk0dUwzTnlZeTlwYm1SbGVDOXBiWEJ2Y25RdlkyRnVkbUZ6TG5Seklpd2dJaTR1THk0dUx5NHVMM055WXk5cGJtUmxlQzkzWldJdGQyOXlhMlZ5TDJsdGNHOXlkR1Z5TG5kdmNtdGxjaTUwY3lKZExBb2dJQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZJRnNpSVdaMWJtTjBhVzl1S0c0c2RDbDdYQ0p2WW1wbFkzUmNJajA5ZEhsd1pXOW1JR1Y0Y0c5eWRITW1KbHdpYjJKcVpXTjBYQ0k5UFhSNWNHVnZaaUJ0YjJSMWJHVS9iVzlrZFd4bExtVjRjRzl5ZEhNOWRDZ3BPbHdpWm5WdVkzUnBiMjVjSWowOWRIbHdaVzltSUdSbFptbHVaU1ltWkdWbWFXNWxMbUZ0WkQ5a1pXWnBibVVvVzEwc2RDazZYQ0p2WW1wbFkzUmNJajA5ZEhsd1pXOW1JR1Y0Y0c5eWRITS9aWGh3YjNKMGN5NVFZWEp6YVcxdGIyNDlkQ2dwT200dVVHRnljMmx0Ylc5dVBYUW9LWDBvWENKMWJtUmxabWx1WldSY0lpRTlkSGx3Wlc5bUlITmxiR1kvYzJWc1pqcDBhR2x6TEdaMWJtTjBhVzl1S0NsN2NtVjBkWEp1SUdaMWJtTjBhVzl1S0c0cGUzWmhjaUIwUFh0OU8yWjFibU4wYVc5dUlISW9aU2w3YVdZb2RGdGxYU2x5WlhSMWNtNGdkRnRsWFM1bGVIQnZjblJ6TzNaaGNpQjFQWFJiWlYwOWUyazZaU3hzT2lFeExHVjRjRzl5ZEhNNmUzMTlPM0psZEhWeWJpQnVXMlZkTG1OaGJHd29kUzVsZUhCdmNuUnpMSFVzZFM1bGVIQnZjblJ6TEhJcExIVXViRDBoTUN4MUxtVjRjRzl5ZEhOOWNtVjBkWEp1SUhJdWJUMXVMSEl1WXoxMExISXVaRDFtZFc1amRHbHZiaWh1TEhRc1pTbDdjaTV2S0c0c2RDbDhmRTlpYW1WamRDNWtaV1pwYm1WUWNtOXdaWEowZVNodUxIUXNlMk52Ym1acFozVnlZV0pzWlRvaE1TeGxiblZ0WlhKaFlteGxPaUV3TEdkbGREcGxmU2w5TEhJdWNqMW1kVzVqZEdsdmJpaHVLWHRQWW1wbFkzUXVaR1ZtYVc1bFVISnZjR1Z5ZEhrb2JpeGNJbDlmWlhOTmIyUjFiR1ZjSWl4N2RtRnNkV1U2SVRCOUtYMHNjaTV1UFdaMWJtTjBhVzl1S0c0cGUzWmhjaUIwUFc0bUptNHVYMTlsYzAxdlpIVnNaVDltZFc1amRHbHZiaWdwZTNKbGRIVnliaUJ1TG1SbFptRjFiSFI5T21aMWJtTjBhVzl1S0NsN2NtVjBkWEp1SUc1OU8zSmxkSFZ5YmlCeUxtUW9kQ3hjSW1GY0lpeDBLU3gwZlN4eUxtODlablZ1WTNScGIyNG9iaXgwS1h0eVpYUjFjbTRnVDJKcVpXTjBMbkJ5YjNSdmRIbHdaUzVvWVhOUGQyNVFjbTl3WlhKMGVTNWpZV3hzS0c0c2RDbDlMSEl1Y0QxY0lsd2lMSElvY2k1elBUQXBmU2hiWm5WdVkzUnBiMjRvYml4MExISXBlMXdpZFhObElITjBjbWxqZEZ3aU8yWjFibU4wYVc5dUlHVW9iaWw3YVdZb0lTaDBhR2x6SUdsdWMzUmhibU5sYjJZZ1pTa3BjbVYwZFhKdUlHNWxkeUJsS0c0cE8zUm9hWE11WHoxdWZYWmhjaUIxUFdVdWNISnZkRzkwZVhCbE8yWjFibU4wYVc5dUlHOG9iaXgwS1h0bWIzSW9kbUZ5SUhJOU1EdHlQRzQ3Y2lzcktYUW9jaWw5Wm5WdVkzUnBiMjRnYVNodUxIUXNjaWw3Y21WMGRYSnVJR1oxYm1OMGFXOXVLRzRzZENsN2J5aDBMbXhsYm1kMGFDeG1kVzVqZEdsdmJpaHlLWHR1S0hSYmNsMHNjaXgwS1gwcGZTaG1kVzVqZEdsdmJpaHlMR1VzZFNsN2REMXVLSFFzY2l4bExIVXBmU3h5S1N4MGZXWjFibU4wYVc5dUlHRW9iaXgwS1h0eVpYUjFjbTRnYVNobWRXNWpkR2x2YmloMExISXNaU3gxS1h0eVpYUjFjbTRnZEM1amIyNWpZWFFvVzI0b2NpeGxMSFVwWFNsOUxGdGRMSFFwZldaMWJtTjBhVzl1SUdZb2JpeDBLWHQyWVhJZ2NqMTdkam93TEdKMVpqcDBmVHR5WlhSMWNtNGdieWh1TEdaMWJtTjBhVzl1S0NsN2RtRnlJRzQ3Y2oxN2RqcHlMblk4UERGOEtHNDljaTVpZFdZc2Jsc3dYVDQrTnlrc1luVm1PbVoxYm1OMGFXOXVLRzRwZTNaaGNpQjBQV2tvWm5WdVkzUnBiMjRvYml4MExISXNaU2w3Y21WMGRYSnVJRzR1WTI5dVkyRjBLSEk5UFQxbExteGxibWQwYUMweFAwSjFabVpsY2k1bWNtOXRLRnQwTERCZEtTNXlaV0ZrVlVsdWRERTJRa1VvTUNrNlpTNXlaV0ZrVlVsdWRERTJRa1VvY2lrcGZTeGJYU3h1S1R0eVpYUjFjbTRnUW5WbVptVnlMbVp5YjIwb1lTaG1kVzVqZEdsdmJpaHVLWHR5WlhSMWNtNG9ianc4TVNZMk5UVXpOU2srUGpoOUxIUXBLWDBvY2k1aWRXWXBmWDBwTEhKOVpuVnVZM1JwYjI0Z1l5Z3BlM0psZEhWeWJsd2lkVzVrWldacGJtVmtYQ0loUFhSNWNHVnZaaUJDZFdabVpYSjlablZ1WTNScGIyNGdjeWdwZTJsbUtDRmpLQ2twZEdoeWIzY2dibVYzSUVWeWNtOXlLRndpUW5WbVptVnlJR2RzYjJKaGJDQmtiMlZ6SUc1dmRDQmxlR2x6ZERzZ2NHeGxZWE5sSUhWelpTQjNaV0p3WVdOcklHbG1JSGx2ZFNCdVpXVmtJSFJ2SUhCaGNuTmxJRUoxWm1abGNuTWdhVzRnZEdobElHSnliM2R6WlhJdVhDSXBmV1oxYm1OMGFXOXVJR3dvYmlsN2N5Z3BPM1poY2lCMFBXa29ablZ1WTNScGIyNG9iaXgwS1h0eVpYUjFjbTRnYml0MGZTd3dMRzRwTzJsbUtIUWxPQ0U5TUNsMGFISnZkeUJ1WlhjZ1JYSnliM0lvWENKVWFHVWdZbWwwY3lCYlhDSXJiaTVxYjJsdUtGd2lMQ0JjSWlrclhDSmRJR0ZrWkNCMWNDQjBieUJjSWl0MEsxd2lJSGRvYVdOb0lHbHpJRzV2ZENCaGJpQmxkbVZ1SUc1MWJXSmxjaUJ2WmlCaWVYUmxjenNnZEdobElIUnZkR0ZzSUhOb2IzVnNaQ0JpWlNCa2FYWnBjMmxpYkdVZ1lua2dPRndpS1R0MllYSWdjaXgxUFhRdk9DeHZQU2h5UFdaMWJtTjBhVzl1S0c0cGUzSmxkSFZ5YmlCdVBqUTRmU3hwS0daMWJtTjBhVzl1S0c0c2RDbDdjbVYwZFhKdUlHNThmQ2h5S0hRcFAzUTZiaWw5TEc1MWJHd3NiaWtwTzJsbUtHOHBkR2h5YjNjZ2JtVjNJRVZ5Y205eUtHOHJYQ0lnWW1sMElISmhibWRsSUhKbGNYVmxjM1JsWkNCbGVHTmxaV1J6SURRNElHSnBkQ0FvTmlCaWVYUmxLU0JPZFcxaVpYSWdiV0Y0TGx3aUtUdHlaWFIxY200Z2JtVjNJR1VvWm5WdVkzUnBiMjRvZEN4eUtYdDJZWElnWlQxMUszSTdjbVYwZFhKdUlHVStkQzVzWlc1bmRHZy9lQ2h5TEhVdWRHOVRkSEpwYm1jb0tTdGNJaUJpZVhSbGMxd2lLVHBpS0dVc2FTaG1kVzVqZEdsdmJpaHVMSFFwZTNaaGNpQnlQV1lvZEN4dUxtSjFaaWs3Y21WMGRYSnVlMk52Ykd3NmJpNWpiMnhzTG1OdmJtTmhkQ2h5TG5ZcExHSjFaanB5TG1KMVpuMTlMSHRqYjJ4c09sdGRMR0oxWmpwMExuTnNhV05sS0hJc1pTbDlMRzRwTG1OdmJHd3BmU2w5Wm5WdVkzUnBiMjRnYUNodUxIUXBlM0psZEhWeWJpQnVaWGNnWlNobWRXNWpkR2x2YmloeUxHVXBlM0psZEhWeWJpQnpLQ2tzWlN0MFBuSXViR1Z1WjNSb1AzZ29aU3gwSzF3aUlHSjVkR1Z6SUdadmNpQmNJaXR1S1RwaUtHVXJkQ3h5TG5Oc2FXTmxLR1VzWlN0MEtTbDlLWDFtZFc1amRHbHZiaUJ3S0c0c2RDbDdhV1lvWENKdWRXMWlaWEpjSWlFOWRIbHdaVzltS0hJOWRDbDhmRTFoZEdndVpteHZiM0lvY2lraFBUMXlmSHgwUERCOGZIUStOaWwwYUhKdmR5QnVaWGNnUlhKeWIzSW9iaXRjSWlCeVpYRjFhWEpsY3lCcGJuUmxaMlZ5SUd4bGJtZDBhQ0JwYmlCeVlXNW5aU0JiTUN3Z05sMHVYQ0lwTzNaaGNpQnlmV1oxYm1OMGFXOXVJR1FvYmlsN2NtVjBkWEp1SUhBb1hDSjFhVzUwUWtWY0lpeHVLU3hvS0Z3aWRXbHVkRUpGS0Z3aUsyNHJYQ0lwWENJc2Jpa3ViV0Z3S0daMWJtTjBhVzl1S0hRcGUzSmxkSFZ5YmlCMExuSmxZV1JWU1c1MFFrVW9NQ3h1S1gwcGZXWjFibU4wYVc5dUlIWW9iaWw3Y21WMGRYSnVJSEFvWENKMWFXNTBURVZjSWl4dUtTeG9LRndpZFdsdWRFeEZLRndpSzI0clhDSXBYQ0lzYmlrdWJXRndLR1oxYm1OMGFXOXVLSFFwZTNKbGRIVnliaUIwTG5KbFlXUlZTVzUwVEVVb01DeHVLWDBwZldaMWJtTjBhVzl1SUdjb2JpbDdjbVYwZFhKdUlIQW9YQ0pwYm5SQ1JWd2lMRzRwTEdnb1hDSnBiblJDUlNoY0lpdHVLMXdpS1Z3aUxHNHBMbTFoY0NobWRXNWpkR2x2YmloMEtYdHlaWFIxY200Z2RDNXlaV0ZrU1c1MFFrVW9NQ3h1S1gwcGZXWjFibU4wYVc5dUlHMG9iaWw3Y21WMGRYSnVJSEFvWENKcGJuUk1SVndpTEc0cExHZ29YQ0pwYm5STVJTaGNJaXR1SzF3aUtWd2lMRzRwTG0xaGNDaG1kVzVqZEdsdmJpaDBLWHR5WlhSMWNtNGdkQzV5WldGa1NXNTBURVVvTUN4dUtYMHBmV1oxYm1OMGFXOXVJSGtvYmlsN2NtVjBkWEp1SUc0Z2FXNXpkR0Z1WTJWdlppQmxmV1oxYm1OMGFXOXVJRVVvYmlsN2NtVjBkWEp1WENKYmIySnFaV04wSUVGeWNtRjVYVndpUFQwOWUzMHVkRzlUZEhKcGJtY3VZMkZzYkNodUtYMW1kVzVqZEdsdmJpQjNLRzRwZTNKbGRIVnliaUJqS0NrbUprSjFabVpsY2k1cGMwSjFabVpsY2lodUtYMW1kVzVqZEdsdmJpQmlLRzRzZENsN2NtVjBkWEp1ZTNOMFlYUjFjem9oTUN4cGJtUmxlRHB1TEhaaGJIVmxPblFzWm5WeWRHaGxjM1E2TFRFc1pYaHdaV04wWldRNlcxMTlmV1oxYm1OMGFXOXVJSGdvYml4MEtYdHlaWFIxY200Z1JTaDBLWHg4S0hROVczUmRLU3g3YzNSaGRIVnpPaUV4TEdsdVpHVjRPaTB4TEhaaGJIVmxPbTUxYkd3c1puVnlkR2hsYzNRNmJpeGxlSEJsWTNSbFpEcDBmWDFtZFc1amRHbHZiaUJDS0c0c2RDbDdhV1lvSVhRcGNtVjBkWEp1SUc0N2FXWW9iaTVtZFhKMGFHVnpkRDUwTG1aMWNuUm9aWE4wS1hKbGRIVnliaUJ1TzNaaGNpQnlQVzR1Wm5WeWRHaGxjM1E5UFQxMExtWjFjblJvWlhOMFAyWjFibU4wYVc5dUtHNHNkQ2w3YVdZb1puVnVZM1JwYjI0b0tYdHBaaWgyYjJsa0lEQWhQVDFsTGw5emRYQndiM0owYzFObGRDbHlaWFIxY200Z1pTNWZjM1Z3Y0c5eWRITlRaWFE3ZG1GeUlHNDlYQ0oxYm1SbFptbHVaV1JjSWlFOWRIbHdaVzltSUZObGREdHlaWFIxY200Z1pTNWZjM1Z3Y0c5eWRITlRaWFE5Yml4dWZTZ3BKaVpCY25KaGVTNW1jbTl0S1h0bWIzSW9kbUZ5SUhJOWJtVjNJRk5sZENodUtTeDFQVEE3ZFR4MExteGxibWQwYUR0MUt5c3BjaTVoWkdRb2RGdDFYU2s3ZG1GeUlHODlRWEp5WVhrdVpuSnZiU2h5S1R0eVpYUjFjbTRnYnk1emIzSjBLQ2tzYjMxbWIzSW9kbUZ5SUdrOWUzMHNZVDB3TzJFOGJpNXNaVzVuZEdnN1lTc3JLV2xiYmx0aFhWMDlJVEE3Wm05eUtIWmhjaUJtUFRBN1pqeDBMbXhsYm1kMGFEdG1LeXNwYVZ0MFcyWmRYVDBoTUR0MllYSWdZejFiWFR0bWIzSW9kbUZ5SUhNZ2FXNGdhU2tvZTMwcExtaGhjMDkzYmxCeWIzQmxjblI1TG1OaGJHd29hU3h6S1NZbVl5NXdkWE5vS0hNcE8zSmxkSFZ5YmlCakxuTnZjblFvS1N4amZTaHVMbVY0Y0dWamRHVmtMSFF1Wlhod1pXTjBaV1FwT25RdVpYaHdaV04wWldRN2NtVjBkWEp1ZTNOMFlYUjFjenB1TG5OMFlYUjFjeXhwYm1SbGVEcHVMbWx1WkdWNExIWmhiSFZsT200dWRtRnNkV1VzWm5WeWRHaGxjM1E2ZEM1bWRYSjBhR1Z6ZEN4bGVIQmxZM1JsWkRweWZYMTJZWElnYWoxN2ZUdG1kVzVqZEdsdmJpQlRLRzRzZENsN2FXWW9keWh1S1NseVpYUjFjbTU3YjJabWMyVjBPblFzYkdsdVpUb3RNU3hqYjJ4MWJXNDZMVEY5TzI0Z2FXNGdhbng4S0dwYmJsMDllMzBwTzJadmNpaDJZWElnY2oxcVcyNWRMR1U5TUN4MVBUQXNiejB3TEdrOWREdHBQajB3T3lsN2FXWW9hU0JwYmlCeUtYdGxQWEpiYVYwdWJHbHVaU3d3UFQwOWJ5WW1LRzg5Y2x0cFhTNXNhVzVsVTNSaGNuUXBPMkp5WldGcmZTaGNJbHhjYmx3aVBUMDliaTVqYUdGeVFYUW9hU2w4ZkZ3aVhGeHlYQ0k5UFQxdUxtTm9ZWEpCZENocEtTWW1YQ0pjWEc1Y0lpRTlQVzR1WTJoaGNrRjBLR2tyTVNrcEppWW9kU3NyTERBOVBUMXZKaVlvYnoxcEt6RXBLU3hwTFMxOWRtRnlJR0U5WlN0MUxHWTlkQzF2TzNKbGRIVnliaUJ5VzNSZFBYdHNhVzVsT21Fc2JHbHVaVk4wWVhKME9tOTlMSHR2Wm1aelpYUTZkQ3hzYVc1bE9tRXJNU3hqYjJ4MWJXNDZaaXN4ZlgxbWRXNWpkR2x2YmlCZktHNHBlMmxtS0NGNUtHNHBLWFJvY205M0lHNWxkeUJGY25KdmNpaGNJbTV2ZENCaElIQmhjbk5sY2pvZ1hDSXJiaWw5Wm5WdVkzUnBiMjRnVENodUxIUXBlM0psZEhWeWJsd2ljM1J5YVc1blhDSTlQWFI1Y0dWdlppQnVQMjR1WTJoaGNrRjBLSFFwT201YmRGMTlablZ1WTNScGIyNGdUeWh1S1h0cFppaGNJbTUxYldKbGNsd2lJVDEwZVhCbGIyWWdiaWwwYUhKdmR5QnVaWGNnUlhKeWIzSW9YQ0p1YjNRZ1lTQnVkVzFpWlhJNklGd2lLMjRwZldaMWJtTjBhVzl1SUdzb2JpbDdhV1lvWENKbWRXNWpkR2x2Ymx3aUlUMTBlWEJsYjJZZ2JpbDBhSEp2ZHlCdVpYY2dSWEp5YjNJb1hDSnViM1FnWVNCbWRXNWpkR2x2YmpvZ1hDSXJiaWw5Wm5WdVkzUnBiMjRnVUNodUtYdHBaaWhjSW5OMGNtbHVaMXdpSVQxMGVYQmxiMllnYmlsMGFISnZkeUJ1WlhjZ1JYSnliM0lvWENKdWIzUWdZU0J6ZEhKcGJtYzZJRndpSzI0cGZYWmhjaUJ4UFRJc1FUMHpMRWs5T0N4R1BUVXFTU3hOUFRRcVNTeDZQVndpSUNCY0lqdG1kVzVqZEdsdmJpQlNLRzRzZENsN2NtVjBkWEp1SUc1bGR5QkJjbkpoZVNoMEt6RXBMbXB2YVc0b2JpbDlablZ1WTNScGIyNGdWU2h1TEhRc2NpbDdkbUZ5SUdVOWRDMXVMbXhsYm1kMGFEdHlaWFIxY200Z1pUdzlNRDl1T2xJb2NpeGxLU3R1ZldaMWJtTjBhVzl1SUZjb2JpeDBMSElzWlNsN2NtVjBkWEp1ZTJaeWIyMDZiaTEwUGpBL2JpMTBPakFzZEc4NmJpdHlQbVUvWlRwdUszSjlmV1oxYm1OMGFXOXVJRVFvYml4MEtYdDJZWElnY2l4bExIVXNieXhtTEdNOWRDNXBibVJsZUN4elBXTXViMlptYzJWMExHdzlNVHRwWmloelBUMDliaTVzWlc1bmRHZ3BjbVYwZFhKdVhDSkhiM1FnZEdobElHVnVaQ0J2WmlCMGFHVWdhVzV3ZFhSY0lqdHBaaWgzS0c0cEtYdDJZWElnYUQxekxYTWxTU3h3UFhNdGFDeGtQVmNvYUN4R0xFMHJTU3h1TG14bGJtZDBhQ2tzZGoxaEtHWjFibU4wYVc5dUtHNHBlM0psZEhWeWJpQmhLR1oxYm1OMGFXOXVLRzRwZTNKbGRIVnliaUJWS0c0dWRHOVRkSEpwYm1jb01UWXBMRElzWENJd1hDSXBmU3h1S1gwc1puVnVZM1JwYjI0b2JpeDBLWHQyWVhJZ2NqMXVMbXhsYm1kMGFDeGxQVnRkTEhVOU1EdHBaaWh5UEQxMEtYSmxkSFZ5Ymx0dUxuTnNhV05sS0NsZE8yWnZjaWgyWVhJZ2J6MHdPMjg4Y2p0dkt5c3BaVnQxWFh4OFpTNXdkWE5vS0Z0ZEtTeGxXM1ZkTG5CMWMyZ29ibHR2WFNrc0tHOHJNU2tsZEQwOU1DWW1kU3NyTzNKbGRIVnliaUJsZlNodUxuTnNhV05sS0dRdVpuSnZiU3hrTG5SdktTNTBiMHBUVDA0b0tTNWtZWFJoTEVrcEtUdHZQV1oxYm1OMGFXOXVLRzRwZTNKbGRIVnliaUF3UFQwOWJpNW1jbTl0SmlZeFBUMDliaTUwYno5N1puSnZiVHB1TG1aeWIyMHNkRzg2Ymk1MGIzMDZlMlp5YjIwNmJpNW1jbTl0TDBrc2RHODZUV0YwYUM1bWJHOXZjaWh1TG5Sdkwwa3BmWDBvWkNrc1pUMW9MMGtzY2owektuQXNjRDQ5TkNZbUtISXJQVEVwTEd3OU1peDFQV0VvWm5WdVkzUnBiMjRvYmlsN2NtVjBkWEp1SUc0dWJHVnVaM1JvUEQwMFAyNHVhbTlwYmloY0lpQmNJaWs2Ymk1emJHbGpaU2d3TERRcExtcHZhVzRvWENJZ1hDSXBLMXdpSUNCY0lpdHVMbk5zYVdObEtEUXBMbXB2YVc0b1hDSWdYQ0lwZlN4MktTd29aajBvT0Nvb2J5NTBiejR3UDI4dWRHOHRNVHB2TG5SdktTa3VkRzlUZEhKcGJtY29NVFlwTG14bGJtZDBhQ2s4TWlZbUtHWTlNaWw5Wld4elpYdDJZWElnWnoxdUxuTndiR2wwS0M5Y1hISmNYRzU4VzF4Y2JseGNjbHhjZFRJd01qaGNYSFV5TURJNVhTOHBPM0k5WXk1amIyeDFiVzR0TVN4bFBXTXViR2x1WlMweExHODlWeWhsTEhFc1FTeG5MbXhsYm1kMGFDa3NkVDFuTG5Oc2FXTmxLRzh1Wm5KdmJTeHZMblJ2S1N4bVBXOHVkRzh1ZEc5VGRISnBibWNvS1M1c1pXNW5kR2g5ZG1GeUlHMDlaUzF2TG1aeWIyMDdjbVYwZFhKdUlIY29iaWttSmlobVBTZzRLaWh2TG5SdlBqQS9ieTUwYnkweE9tOHVkRzhwS1M1MGIxTjBjbWx1WnlneE5pa3ViR1Z1WjNSb0tUd3lKaVlvWmoweUtTeHBLR1oxYm1OMGFXOXVLSFFzWlN4MUtYdDJZWElnYVN4aFBYVTlQVDF0TEdNOVlUOWNJajRnWENJNmVqdHlaWFIxY200Z2FUMTNLRzRwUDFVb0tEZ3FLRzh1Wm5KdmJTdDFLU2t1ZEc5VGRISnBibWNvTVRZcExHWXNYQ0l3WENJcE9sVW9LRzh1Wm5KdmJTdDFLekVwTG5SdlUzUnlhVzVuS0Nrc1ppeGNJaUJjSWlrc1cxMHVZMjl1WTJGMEtIUXNXMk1yYVN0Y0lpQjhJRndpSzJWZExHRS9XM29yVWloY0lpQmNJaXhtS1N0Y0lpQjhJRndpSzFVb1hDSmNJaXh5TEZ3aUlGd2lLU3RTS0Z3aVhsd2lMR3dwWFRwYlhTbDlMRnRkTEhVcExtcHZhVzRvWENKY1hHNWNJaWw5Wm5WdVkzUnBiMjRnVGlodUxIUXBlM0psZEhWeWJsdGNJbHhjYmx3aUxGd2lMUzBnVUVGU1UwbE9SeUJHUVVsTVJVUWdYQ0lyVWloY0lpMWNJaXcxTUNrc1hDSmNYRzVjWEc1Y0lpeEVLRzRzZENrc1hDSmNYRzVjWEc1Y0lpd29jajEwTG1WNGNHVmpkR1ZrTERFOVBUMXlMbXhsYm1kMGFEOWNJa1Y0Y0dWamRHVmtPbHhjYmx4Y2Jsd2lLM0piTUYwNlhDSkZlSEJsWTNSbFpDQnZibVVnYjJZZ2RHaGxJR1p2Ykd4dmQybHVaem9nWEZ4dVhGeHVYQ0lyY2k1cWIybHVLRndpTENCY0lpa3BMRndpWEZ4dVhDSmRMbXB2YVc0b1hDSmNJaWs3ZG1GeUlISjlablZ1WTNScGIyNGdSeWh1S1h0eVpYUjFjbTRnZG05cFpDQXdJVDA5Ymk1bWJHRm5jejl1TG1ac1lXZHpPbHR1TG1kc2IySmhiRDljSW1kY0lqcGNJbHdpTEc0dWFXZHViM0psUTJGelpUOWNJbWxjSWpwY0lsd2lMRzR1YlhWc2RHbHNhVzVsUDF3aWJWd2lPbHdpWENJc2JpNTFibWxqYjJSbFAxd2lkVndpT2x3aVhDSXNiaTV6ZEdsamEzay9YQ0o1WENJNlhDSmNJbDB1YW05cGJpaGNJbHdpS1gxbWRXNWpkR2x2YmlCREtDbDdabTl5S0haaGNpQnVQVnRkTG5Oc2FXTmxMbU5oYkd3b1lYSm5kVzFsYm5SektTeDBQVzR1YkdWdVozUm9MSEk5TUR0eVBIUTdjaXM5TVNsZktHNWJjbDBwTzNKbGRIVnliaUJsS0daMWJtTjBhVzl1S0hJc1pTbDdabTl5S0haaGNpQjFMRzg5Ym1WM0lFRnljbUY1S0hRcExHazlNRHRwUEhRN2FTczlNU2w3YVdZb0lTaDFQVUlvYmx0cFhTNWZLSElzWlNrc2RTa3BMbk4wWVhSMWN5bHlaWFIxY200Z2RUdHZXMmxkUFhVdWRtRnNkV1VzWlQxMUxtbHVaR1Y0ZlhKbGRIVnliaUJDS0dJb1pTeHZLU3gxS1gwcGZXWjFibU4wYVc5dUlFb29LWHQyWVhJZ2JqMWJYUzV6YkdsalpTNWpZV3hzS0dGeVozVnRaVzUwY3lrN2FXWW9NRDA5UFc0dWJHVnVaM1JvS1hSb2NtOTNJRzVsZHlCRmNuSnZjaWhjSW5ObGNVMWhjQ0J1WldWa2N5QmhkQ0JzWldGemRDQnZibVVnWVhKbmRXMWxiblJjSWlrN2RtRnlJSFE5Ymk1d2IzQW9LVHR5WlhSMWNtNGdheWgwS1N4RExtRndjR3g1S0c1MWJHd3NiaWt1YldGd0tHWjFibU4wYVc5dUtHNHBlM0psZEhWeWJpQjBMbUZ3Y0d4NUtHNTFiR3dzYmlsOUtYMW1kVzVqZEdsdmJpQlVLQ2w3ZG1GeUlHNDlXMTB1YzJ4cFkyVXVZMkZzYkNoaGNtZDFiV1Z1ZEhNcExIUTliaTVzWlc1bmRHZzdhV1lvTUQwOVBYUXBjbVYwZFhKdUlGa29YQ0o2WlhKdklHRnNkR1Z5Ym1GMFpYTmNJaWs3Wm05eUtIWmhjaUJ5UFRBN2NqeDBPM0lyUFRFcFh5aHVXM0pkS1R0eVpYUjFjbTRnWlNobWRXNWpkR2x2YmloMExISXBlMlp2Y2loMllYSWdaU3gxUFRBN2RUeHVMbXhsYm1kMGFEdDFLejB4S1dsbUtDaGxQVUlvYmx0MVhTNWZLSFFzY2lrc1pTa3BMbk4wWVhSMWN5bHlaWFIxY200Z1pUdHlaWFIxY200Z1pYMHBmV1oxYm1OMGFXOXVJRllvYml4MEtYdHlaWFIxY200Z1NDaHVMSFFwTG05eUtGZ29XMTBwS1gxbWRXNWpkR2x2YmlCSUtHNHNkQ2w3Y21WMGRYSnVJRjhvYmlrc1h5aDBLU3hLS0c0c2RDNTBhR1Z1S0c0cExtMWhibmtvS1N4bWRXNWpkR2x2YmlodUxIUXBlM0psZEhWeWJsdHVYUzVqYjI1allYUW9kQ2w5S1gxbWRXNWpkR2x2YmlCTEtHNHBlMUFvYmlrN2RtRnlJSFE5WENJblhDSXJiaXRjSWlkY0lqdHlaWFIxY200Z1pTaG1kVzVqZEdsdmJpaHlMR1VwZTNaaGNpQjFQV1VyYmk1c1pXNW5kR2dzYnoxeUxuTnNhV05sS0dVc2RTazdjbVYwZFhKdUlHODlQVDF1UDJJb2RTeHZLVHA0S0dVc2RDbDlLWDFtZFc1amRHbHZiaUJSS0c0c2RDbDdJV1oxYm1OMGFXOXVLRzRwZTJsbUtDRW9iaUJwYm5OMFlXNWpaVzltSUZKbFowVjRjQ2twZEdoeWIzY2dibVYzSUVWeWNtOXlLRndpYm05MElHRWdjbVZuWlhod09pQmNJaXR1S1R0bWIzSW9kbUZ5SUhROVJ5aHVLU3h5UFRBN2NqeDBMbXhsYm1kMGFEdHlLeXNwZTNaaGNpQmxQWFF1WTJoaGNrRjBLSElwTzJsbUtGd2lhVndpSVQwOVpTWW1YQ0p0WENJaFBUMWxKaVpjSW5WY0lpRTlQV1VtSmx3aWMxd2lJVDA5WlNsMGFISnZkeUJ1WlhjZ1JYSnliM0lvSjNWdWMzVndjRzl5ZEdWa0lISmxaMlY0Y0NCbWJHRm5JRndpSnl0bEt5ZGNJam9nSnl0dUtYMTlLRzRwTEdGeVozVnRaVzUwY3k1c1pXNW5kR2crUFRJL1R5aDBLVHAwUFRBN2RtRnlJSEk5Wm5WdVkzUnBiMjRvYmlsN2NtVjBkWEp1SUZKbFowVjRjQ2hjSWw0b1B6cGNJaXR1TG5OdmRYSmpaU3RjSWlsY0lpeEhLRzRwS1gwb2Jpa3NkVDFjSWx3aUsyNDdjbVYwZFhKdUlHVW9ablZ1WTNScGIyNG9iaXhsS1h0MllYSWdiejF5TG1WNFpXTW9iaTV6YkdsalpTaGxLU2s3YVdZb2J5bDdhV1lvTUR3OWRDWW1kRHc5Ynk1c1pXNW5kR2dwZTNaaGNpQnBQVzliTUYwc1lUMXZXM1JkTzNKbGRIVnliaUJpS0dVcmFTNXNaVzVuZEdnc1lTbDljbVYwZFhKdUlIZ29aU3hjSW5aaGJHbGtJRzFoZEdOb0lHZHliM1Z3SUNnd0lIUnZJRndpSzI4dWJHVnVaM1JvSzF3aUtTQnBiaUJjSWl0MUtYMXlaWFIxY200Z2VDaGxMSFVwZlNsOVpuVnVZM1JwYjI0Z1dDaHVLWHR5WlhSMWNtNGdaU2htZFc1amRHbHZiaWgwTEhJcGUzSmxkSFZ5YmlCaUtISXNiaWw5S1gxbWRXNWpkR2x2YmlCWktHNHBlM0psZEhWeWJpQmxLR1oxYm1OMGFXOXVLSFFzY2lsN2NtVjBkWEp1SUhnb2NpeHVLWDBwZldaMWJtTjBhVzl1SUZvb2JpbDdhV1lvZVNodUtTbHlaWFIxY200Z1pTaG1kVzVqZEdsdmJpaDBMSElwZTNaaGNpQmxQVzR1WHloMExISXBPM0psZEhWeWJpQmxMbWx1WkdWNFBYSXNaUzUyWVd4MVpUMWNJbHdpTEdWOUtUdHBaaWhjSW5OMGNtbHVaMXdpUFQxMGVYQmxiMllnYmlseVpYUjFjbTRnV2loTEtHNHBLVHRwWmlodUlHbHVjM1JoYm1ObGIyWWdVbVZuUlhod0tYSmxkSFZ5YmlCYUtGRW9iaWtwTzNSb2NtOTNJRzVsZHlCRmNuSnZjaWhjSW01dmRDQmhJSE4wY21sdVp5d2djbVZuWlhod0xDQnZjaUJ3WVhKelpYSTZJRndpSzI0cGZXWjFibU4wYVc5dUlDUW9iaWw3Y21WMGRYSnVJRjhvYmlrc1pTaG1kVzVqZEdsdmJpaDBMSElwZTNaaGNpQmxQVzR1WHloMExISXBMSFU5ZEM1emJHbGpaU2h5TEdVdWFXNWtaWGdwTzNKbGRIVnliaUJsTG5OMFlYUjFjejk0S0hJc0oyNXZkQ0JjSWljcmRTc25YQ0luS1RwaUtISXNiblZzYkNsOUtYMW1kVzVqZEdsdmJpQnViaWh1S1h0eVpYUjFjbTRnYXlodUtTeGxLR1oxYm1OMGFXOXVLSFFzY2lsN2RtRnlJR1U5VENoMExISXBPM0psZEhWeWJpQnlQSFF1YkdWdVozUm9KaVp1S0dVcFAySW9jaXN4TEdVcE9uZ29jaXhjSW1FZ1kyaGhjbUZqZEdWeUwySjVkR1VnYldGMFkyaHBibWNnWENJcmJpbDlLWDFtZFc1amRHbHZiaUIwYmlodUxIUXBlMkZ5WjNWdFpXNTBjeTVzWlc1bmRHZzhNaVltS0hROWJpeHVQWFp2YVdRZ01DazdkbUZ5SUhJOVpTaG1kVzVqZEdsdmJpaHVMR1VwZTNKbGRIVnliaUJ5TGw4OWRDZ3BMbDhzY2k1ZktHNHNaU2w5S1R0eVpYUjFjbTRnYmo5eUxtUmxjMk1vYmlrNmNuMW1kVzVqZEdsdmJpQnliaWdwZTNKbGRIVnliaUJaS0Z3aVptRnVkR0Z6ZVMxc1lXNWtMMlZ0Y0hSNVhDSXBmWFV1Y0dGeWMyVTlablZ1WTNScGIyNG9iaWw3YVdZb1hDSnpkSEpwYm1kY0lpRTlkSGx3Wlc5bUlHNG1KaUYzS0c0cEtYUm9jbTkzSUc1bGR5QkZjbkp2Y2loY0lpNXdZWEp6WlNCdGRYTjBJR0psSUdOaGJHeGxaQ0IzYVhSb0lHRWdjM1J5YVc1bklHOXlJRUoxWm1abGNpQmhjeUJwZEhNZ1lYSm5kVzFsYm5SY0lpazdkbUZ5SUhRc2NqMTBhR2x6TG5OcmFYQW9ZVzRwTGw4b2Jpd3dLVHR5WlhSMWNtNGdkRDF5TG5OMFlYUjFjejk3YzNSaGRIVnpPaUV3TEhaaGJIVmxPbkl1ZG1Gc2RXVjlPbnR6ZEdGMGRYTTZJVEVzYVc1a1pYZzZVeWh1TEhJdVpuVnlkR2hsYzNRcExHVjRjR1ZqZEdWa09uSXVaWGh3WldOMFpXUjlMR1JsYkdWMFpTQnFXMjVkTEhSOUxIVXVkSEo1VUdGeWMyVTlablZ1WTNScGIyNG9iaWw3ZG1GeUlIUTlkR2hwY3k1d1lYSnpaU2h1S1R0cFppaDBMbk4wWVhSMWN5bHlaWFIxY200Z2RDNTJZV3gxWlR0MllYSWdjajFPS0c0c2RDa3NaVDF1WlhjZ1JYSnliM0lvY2lrN2RHaHliM2NnWlM1MGVYQmxQVndpVUdGeWMybHRiVzl1UlhKeWIzSmNJaXhsTG5KbGMzVnNkRDEwTEdWOUxIVXVZWE56WlhKMFBXWjFibU4wYVc5dUtHNHNkQ2w3Y21WMGRYSnVJSFJvYVhNdVkyaGhhVzRvWm5WdVkzUnBiMjRvY2lsN2NtVjBkWEp1SUc0b2Npay9XQ2h5S1RwWktIUXBmU2w5TEhVdWIzSTlablZ1WTNScGIyNG9iaWw3Y21WMGRYSnVJRlFvZEdocGN5eHVLWDBzZFM1MGNtbHRQV1oxYm1OMGFXOXVLRzRwZTNKbGRIVnliaUIwYUdsekxuZHlZWEFvYml4dUtYMHNkUzUzY21Gd1BXWjFibU4wYVc5dUtHNHNkQ2w3Y21WMGRYSnVJRW9vYml4MGFHbHpMSFFzWm5WdVkzUnBiMjRvYml4MEtYdHlaWFIxY200Z2RIMHBmU3gxTG5Sb2NuVTlablZ1WTNScGIyNG9iaWw3Y21WMGRYSnVJRzRvZEdocGN5bDlMSFV1ZEdobGJqMW1kVzVqZEdsdmJpaHVLWHR5WlhSMWNtNGdYeWh1S1N4REtIUm9hWE1zYmlrdWJXRndLR1oxYm1OMGFXOXVLRzRwZTNKbGRIVnliaUJ1V3pGZGZTbDlMSFV1YldGdWVUMW1kVzVqZEdsdmJpZ3BlM1poY2lCdVBYUm9hWE03Y21WMGRYSnVJR1VvWm5WdVkzUnBiMjRvZEN4eUtYdG1iM0lvZG1GeUlHVTlXMTBzZFQxMmIybGtJREE3T3lsN2FXWW9JU2gxUFVJb2JpNWZLSFFzY2lrc2RTa3BMbk4wWVhSMWN5bHlaWFIxY200Z1FpaGlLSElzWlNrc2RTazdhV1lvY2owOVBYVXVhVzVrWlhncGRHaHliM2NnYm1WM0lFVnljbTl5S0Z3aWFXNW1hVzVwZEdVZ2JHOXZjQ0JrWlhSbFkzUmxaQ0JwYmlBdWJXRnVlU2dwSUhCaGNuTmxjaUF0TFMwZ1kyRnNiR2x1WnlBdWJXRnVlU2dwSUc5dUlHRWdjR0Z5YzJWeUlIZG9hV05vSUdOaGJpQmhZMk5sY0hRZ2VtVnlieUJqYUdGeVlXTjBaWEp6SUdseklIVnpkV0ZzYkhrZ2RHaGxJR05oZFhObFhDSXBPM0k5ZFM1cGJtUmxlQ3hsTG5CMWMyZ29kUzUyWVd4MVpTbDlmU2w5TEhVdWRHbGxWMmwwYUQxbWRXNWpkR2x2YmlodUtYdHlaWFIxY200Z1VDaHVLU3gwYUdsekxtMWhjQ2htZFc1amRHbHZiaWgwS1h0cFppaG1kVzVqZEdsdmJpaHVLWHRwWmlnaFJTaHVLU2wwYUhKdmR5QnVaWGNnUlhKeWIzSW9YQ0p1YjNRZ1lXNGdZWEp5WVhrNklGd2lLMjRwZlNoMEtTeDBMbXhsYm1kMGFDbDdVQ2gwV3pCZEtUdG1iM0lvZG1GeUlISTlkRnN3WFN4bFBURTdaVHgwTG14bGJtZDBhRHRsS3lzcFVDaDBXMlZkS1N4eUt6MXVLM1JiWlYwN2NtVjBkWEp1SUhKOWNtVjBkWEp1WENKY0luMHBmU3gxTG5ScFpUMW1kVzVqZEdsdmJpZ3BlM0psZEhWeWJpQjBhR2x6TG5ScFpWZHBkR2dvWENKY0lpbDlMSFV1ZEdsdFpYTTlablZ1WTNScGIyNG9iaXgwS1h0MllYSWdjajEwYUdsek8zSmxkSFZ5YmlCaGNtZDFiV1Z1ZEhNdWJHVnVaM1JvUERJbUppaDBQVzRwTEU4b2Jpa3NUeWgwS1N4bEtHWjFibU4wYVc5dUtHVXNkU2w3Wm05eUtIWmhjaUJ2UFZ0ZExHazlkbTlwWkNBd0xHRTlkbTlwWkNBd0xHWTlNRHRtUEc0N1ppczlNU2w3YVdZb1lUMUNLR2s5Y2k1ZktHVXNkU2tzWVNrc0lXa3VjM1JoZEhWektYSmxkSFZ5YmlCaE8zVTlhUzVwYm1SbGVDeHZMbkIxYzJnb2FTNTJZV3gxWlNsOVptOXlLRHRtUEhRbUppaGhQVUlvYVQxeUxsOG9aU3gxS1N4aEtTeHBMbk4wWVhSMWN5azdaaXM5TVNsMVBXa3VhVzVrWlhnc2J5NXdkWE5vS0drdWRtRnNkV1VwTzNKbGRIVnliaUJDS0dJb2RTeHZLU3hoS1gwcGZTeDFMbkpsYzNWc2REMW1kVzVqZEdsdmJpaHVLWHR5WlhSMWNtNGdkR2hwY3k1dFlYQW9ablZ1WTNScGIyNG9LWHR5WlhSMWNtNGdibjBwZlN4MUxtRjBUVzl6ZEQxbWRXNWpkR2x2YmlodUtYdHlaWFIxY200Z2RHaHBjeTUwYVcxbGN5Z3dMRzRwZlN4MUxtRjBUR1ZoYzNROVpuVnVZM1JwYjI0b2JpbDdjbVYwZFhKdUlFb29kR2hwY3k1MGFXMWxjeWh1S1N4MGFHbHpMbTFoYm5rb0tTeG1kVzVqZEdsdmJpaHVMSFFwZTNKbGRIVnliaUJ1TG1OdmJtTmhkQ2gwS1gwcGZTeDFMbTFoY0QxbWRXNWpkR2x2YmlodUtYdHJLRzRwTzNaaGNpQjBQWFJvYVhNN2NtVjBkWEp1SUdVb1puVnVZM1JwYjI0b2NpeGxLWHQyWVhJZ2RUMTBMbDhvY2l4bEtUdHlaWFIxY200Z2RTNXpkR0YwZFhNL1FpaGlLSFV1YVc1a1pYZ3NiaWgxTG5aaGJIVmxLU2tzZFNrNmRYMHBmU3gxTG1OdmJuUnlZVzFoY0QxbWRXNWpkR2x2YmlodUtYdHJLRzRwTzNaaGNpQjBQWFJvYVhNN2NtVjBkWEp1SUdVb1puVnVZM1JwYjI0b2NpeGxLWHQyWVhJZ2RUMTBMbkJoY25ObEtHNG9jaTV6YkdsalpTaGxLU2twTzNKbGRIVnliaUIxTG5OMFlYUjFjejlpS0dVcmNpNXNaVzVuZEdnc2RTNTJZV3gxWlNrNmRYMHBmU3gxTG5CeWIyMWhjRDFtZFc1amRHbHZiaWh1TEhRcGUzSmxkSFZ5YmlCcktHNHBMR3NvZENrc2RHaHBjeTVqYjI1MGNtRnRZWEFvYmlrdWJXRndLSFFwZlN4MUxuTnJhWEE5Wm5WdVkzUnBiMjRvYmlsN2NtVjBkWEp1SUVNb2RHaHBjeXh1S1M1dFlYQW9ablZ1WTNScGIyNG9iaWw3Y21WMGRYSnVJRzViTUYxOUtYMHNkUzV0WVhKclBXWjFibU4wYVc5dUtDbDdjbVYwZFhKdUlFb29aVzRzZEdocGN5eGxiaXhtZFc1amRHbHZiaWh1TEhRc2NpbDdjbVYwZFhKdWUzTjBZWEowT200c2RtRnNkV1U2ZEN4bGJtUTZjbjE5S1gwc2RTNXViMlJsUFdaMWJtTjBhVzl1S0c0cGUzSmxkSFZ5YmlCS0tHVnVMSFJvYVhNc1pXNHNablZ1WTNScGIyNG9kQ3h5TEdVcGUzSmxkSFZ5Ym50dVlXMWxPbTRzZG1Gc2RXVTZjaXh6ZEdGeWREcDBMR1Z1WkRwbGZYMHBmU3gxTG5ObGNFSjVQV1oxYm1OMGFXOXVLRzRwZTNKbGRIVnliaUJXS0hSb2FYTXNiaWw5TEhVdWMyVndRbmt4UFdaMWJtTjBhVzl1S0c0cGUzSmxkSFZ5YmlCSUtIUm9hWE1zYmlsOUxIVXViRzl2YTJGb1pXRmtQV1oxYm1OMGFXOXVLRzRwZTNKbGRIVnliaUIwYUdsekxuTnJhWEFvV2lodUtTbDlMSFV1Ym05MFJtOXNiRzkzWldSQ2VUMW1kVzVqZEdsdmJpaHVLWHR5WlhSMWNtNGdkR2hwY3k1emEybHdLQ1FvYmlrcGZTeDFMbVJsYzJNOVpuVnVZM1JwYjI0b2JpbDdSU2h1S1h4OEtHNDlXMjVkS1R0MllYSWdkRDEwYUdsek8zSmxkSFZ5YmlCbEtHWjFibU4wYVc5dUtISXNaU2w3ZG1GeUlIVTlkQzVmS0hJc1pTazdjbVYwZFhKdUlIVXVjM1JoZEhWemZId29kUzVsZUhCbFkzUmxaRDF1S1N4MWZTbDlMSFV1Wm1Gc2JHSmhZMnM5Wm5WdVkzUnBiMjRvYmlsN2NtVjBkWEp1SUhSb2FYTXViM0lvV0NodUtTbDlMSFV1WVhBOVpuVnVZM1JwYjI0b2JpbDdjbVYwZFhKdUlFb29iaXgwYUdsekxHWjFibU4wYVc5dUtHNHNkQ2w3Y21WMGRYSnVJRzRvZENsOUtYMHNkUzVqYUdGcGJqMW1kVzVqZEdsdmJpaHVLWHQyWVhJZ2REMTBhR2x6TzNKbGRIVnliaUJsS0daMWJtTjBhVzl1S0hJc1pTbDdkbUZ5SUhVOWRDNWZLSElzWlNrN2NtVjBkWEp1SUhVdWMzUmhkSFZ6UDBJb2JpaDFMblpoYkhWbEtTNWZLSElzZFM1cGJtUmxlQ2tzZFNrNmRYMHBmU3gxTG1OdmJtTmhkRDExTG05eUxIVXVaVzF3ZEhrOWNtNHNkUzV2WmoxWUxIVmJYQ0ptWVc1MFlYTjVMV3hoYm1RdllYQmNJbDA5ZFM1aGNDeDFXMXdpWm1GdWRHRnplUzFzWVc1a0wyTm9ZV2x1WENKZFBYVXVZMmhoYVc0c2RWdGNJbVpoYm5SaGMza3RiR0Z1WkM5amIyNWpZWFJjSWwwOWRTNWpiMjVqWVhRc2RWdGNJbVpoYm5SaGMza3RiR0Z1WkM5bGJYQjBlVndpWFQxMUxtVnRjSFI1TEhWYlhDSm1ZVzUwWVhONUxXeGhibVF2YjJaY0lsMDlkUzV2Wml4MVcxd2labUZ1ZEdGemVTMXNZVzVrTDIxaGNGd2lYVDExTG0xaGNEdDJZWElnWlc0OVpTaG1kVzVqZEdsdmJpaHVMSFFwZTNKbGRIVnliaUJpS0hRc1V5aHVMSFFwS1gwcExIVnVQV1VvWm5WdVkzUnBiMjRvYml4MEtYdHlaWFIxY200Z2RENDliaTVzWlc1bmRHZy9lQ2gwTEZ3aVlXNTVJR05vWVhKaFkzUmxjaTlpZVhSbFhDSXBPbUlvZENzeExFd29iaXgwS1NsOUtTeHZiajFsS0daMWJtTjBhVzl1S0c0c2RDbDdjbVYwZFhKdUlHSW9iaTVzWlc1bmRHZ3NiaTV6YkdsalpTaDBLU2w5S1N4aGJqMWxLR1oxYm1OMGFXOXVLRzRzZENsN2NtVjBkWEp1SUhROGJpNXNaVzVuZEdnL2VDaDBMRndpUlU5R1hDSXBPbUlvZEN4dWRXeHNLWDBwTEdadVBWRW9MMXN3TFRsZEx5a3VaR1Z6WXloY0ltRWdaR2xuYVhSY0lpa3NZMjQ5VVNndld6QXRPVjBxTHlrdVpHVnpZeWhjSW05d2RHbHZibUZzSUdScFoybDBjMXdpS1N4emJqMVJLQzliWVMxNlhTOXBLUzVrWlhOaktGd2lZU0JzWlhSMFpYSmNJaWtzYkc0OVVTZ3ZXMkV0ZWwwcUwya3BMbVJsYzJNb1hDSnZjSFJwYjI1aGJDQnNaWFIwWlhKelhDSXBMR2h1UFZFb0wxeGNjeW92S1M1a1pYTmpLRndpYjNCMGFXOXVZV3dnZDJocGRHVnpjR0ZqWlZ3aUtTeHdiajFSS0M5Y1hITXJMeWt1WkdWell5aGNJbmRvYVhSbGMzQmhZMlZjSWlrc1pHNDlTeWhjSWx4Y2Nsd2lLU3gyYmoxTEtGd2lYRnh1WENJcExHZHVQVXNvWENKY1hISmNYRzVjSWlrc2JXNDlWQ2huYml4MmJpeGtiaWt1WkdWell5aGNJbTVsZDJ4cGJtVmNJaWtzZVc0OVZDaHRiaXhoYmlrN1pTNWhiR3c5YjI0c1pTNWhiSFE5VkN4bExtRnVlVDExYml4bExtTnlQV1J1TEdVdVkzSmxZWFJsVEdGdVozVmhaMlU5Wm5WdVkzUnBiMjRvYmlsN2RtRnlJSFE5ZTMwN1ptOXlLSFpoY2lCeUlHbHVJRzRwS0h0OUtTNW9ZWE5QZDI1UWNtOXdaWEowZVM1allXeHNLRzRzY2lrbUptWjFibU4wYVc5dUtISXBlM1JiY2wwOWRHNG9ablZ1WTNScGIyNG9LWHR5WlhSMWNtNGdibHR5WFNoMEtYMHBmU2h5S1R0eVpYUjFjbTRnZEgwc1pTNWpjbXhtUFdkdUxHVXVZM1Z6ZEc5dFBXWjFibU4wYVc5dUtHNHBlM0psZEhWeWJpQmxLRzRvWWl4NEtTbDlMR1V1WkdsbmFYUTlabTRzWlM1a2FXZHBkSE05WTI0c1pTNWxiWEIwZVQxeWJpeGxMbVZ1WkQxNWJpeGxMbVZ2WmoxaGJpeGxMbVpoYVd3OVdTeGxMbVp2Y20xaGRFVnljbTl5UFU0c1pTNXBibVJsZUQxbGJpeGxMbWx6VUdGeWMyVnlQWGtzWlM1c1lYcDVQWFJ1TEdVdWJHVjBkR1Z5UFhOdUxHVXViR1YwZEdWeWN6MXNiaXhsTG14bVBYWnVMR1V1Ykc5dmEyRm9aV0ZrUFZvc1pTNXRZV3RsUm1GcGJIVnlaVDE0TEdVdWJXRnJaVk4xWTJObGMzTTlZaXhsTG01bGQyeHBibVU5Ylc0c1pTNXViMjVsVDJZOVpuVnVZM1JwYjI0b2JpbDdjbVYwZFhKdUlHNXVLR1oxYm1OMGFXOXVLSFFwZTNKbGRIVnliaUJ1TG1sdVpHVjRUMllvZENrOE1IMHBMbVJsYzJNb1hDSnViMjVsSUc5bUlDZGNJaXR1SzF3aUoxd2lLWDBzWlM1dWIzUkdiMnhzYjNkbFpFSjVQU1FzWlM1dlpqMVlMR1V1YjI1bFQyWTlablZ1WTNScGIyNG9iaWw3Wm05eUtIWmhjaUIwUFc0dWMzQnNhWFFvWENKY0lpa3NjajB3TzNJOGRDNXNaVzVuZEdnN2Npc3JLWFJiY2wwOVhDSW5YQ0lyZEZ0eVhTdGNJaWRjSWp0eVpYUjFjbTRnYm00b1puVnVZM1JwYjI0b2RDbDdjbVYwZFhKdUlHNHVhVzVrWlhoUFppaDBLVDQ5TUgwcExtUmxjMk1vZENsOUxHVXViM0IwVjJocGRHVnpjR0ZqWlQxb2JpeGxMbEJoY25ObGNqMWxMR1V1Y21GdVoyVTlablZ1WTNScGIyNG9iaXgwS1h0eVpYUjFjbTRnYm00b1puVnVZM1JwYjI0b2NpbDdjbVYwZFhKdUlHNDhQWEltSm5JOFBYUjlLUzVrWlhOaktHNHJYQ0l0WENJcmRDbDlMR1V1Y21WblpYZzlVU3hsTG5KbFoyVjRjRDFSTEdVdWMyVndRbms5Vml4bExuTmxjRUo1TVQxSUxHVXVjMlZ4UFVNc1pTNXpaWEZOWVhBOVNpeGxMbk5sY1U5aWFqMW1kVzVqZEdsdmJpZ3BlMlp2Y2loMllYSWdiaXgwUFh0OUxISTlNQ3gxUFNodVBXRnlaM1Z0Wlc1MGN5eEJjbkpoZVM1d2NtOTBiM1I1Y0dVdWMyeHBZMlV1WTJGc2JDaHVLU2tzYnoxMUxteGxibWQwYUN4cFBUQTdhVHh2TzJrclBURXBlM1poY2lCaFBYVmJhVjA3YVdZb0lYa29ZU2twZTJsbUtFVW9ZU2ttSmpJOVBUMWhMbXhsYm1kMGFDWW1YQ0p6ZEhKcGJtZGNJajA5ZEhsd1pXOW1JR0ZiTUYwbUpua29ZVnN4WFNrcGUzWmhjaUJtUFdGYk1GMDdhV1lvVDJKcVpXTjBMbkJ5YjNSdmRIbHdaUzVvWVhOUGQyNVFjbTl3WlhKMGVTNWpZV3hzS0hRc1ppa3BkR2h5YjNjZ2JtVjNJRVZ5Y205eUtGd2ljMlZ4VDJKcU9pQmtkWEJzYVdOaGRHVWdhMlY1SUZ3aUsyWXBPM1JiWmwwOUlUQXNjaXNyTzJOdmJuUnBiblZsZlhSb2NtOTNJRzVsZHlCRmNuSnZjaWhjSW5ObGNVOWlhaUJoY21kMWJXVnVkSE1nYlhWemRDQmlaU0J3WVhKelpYSnpJRzl5SUZ0emRISnBibWNzSUhCaGNuTmxjbDBnWVhKeVlYa2djR0ZwY25NdVhDSXBmWDFwWmlnd1BUMDljaWwwYUhKdmR5QnVaWGNnUlhKeWIzSW9YQ0p6WlhGUFltb2daWGh3WldOMGN5QmhkQ0JzWldGemRDQnZibVVnYm1GdFpXUWdjR0Z5YzJWeUxDQm1iM1Z1WkNCNlpYSnZYQ0lwTzNKbGRIVnliaUJsS0daMWJtTjBhVzl1S0c0c2RDbDdabTl5S0haaGNpQnlMR1U5ZTMwc2FUMHdPMms4Ynp0cEt6MHhLWHQyWVhJZ1lTeG1PMmxtS0VVb2RWdHBYU2svS0dFOWRWdHBYVnN3WFN4bVBYVmJhVjFiTVYwcE9paGhQVzUxYkd3c1pqMTFXMmxkS1N3aEtISTlRaWhtTGw4b2JpeDBLU3h5S1NrdWMzUmhkSFZ6S1hKbGRIVnliaUJ5TzJFbUppaGxXMkZkUFhJdWRtRnNkV1VwTEhROWNpNXBibVJsZUgxeVpYUjFjbTRnUWloaUtIUXNaU2tzY2lsOUtYMHNaUzV6ZEhKcGJtYzlTeXhsTG5OMVkyTmxaV1E5V0N4bExuUmhhMlZYYUdsc1pUMW1kVzVqZEdsdmJpaHVLWHR5WlhSMWNtNGdheWh1S1N4bEtHWjFibU4wYVc5dUtIUXNjaWw3Wm05eUtIWmhjaUJsUFhJN1pUeDBMbXhsYm1kMGFDWW1iaWhNS0hRc1pTa3BPeWxsS3lzN2NtVjBkWEp1SUdJb1pTeDBMbk5zYVdObEtISXNaU2twZlNsOUxHVXVkR1Z6ZEQxdWJpeGxMbmRvYVhSbGMzQmhZMlU5Y0c0c1pWdGNJbVpoYm5SaGMza3RiR0Z1WkM5bGJYQjBlVndpWFQxeWJpeGxXMXdpWm1GdWRHRnplUzFzWVc1a0wyOW1YQ0pkUFZnc1pTNUNhVzVoY25rOWUySnBkRk5sY1Rwc0xHSnBkRk5sY1U5aWFqcG1kVzVqZEdsdmJpaHVLWHR6S0NrN2RtRnlJSFE5ZTMwc2NqMHdMR1U5WVNobWRXNWpkR2x2YmlodUtYdHBaaWhGS0c0cEtYdDJZWElnWlQxdU8ybG1LREloUFQxbExteGxibWQwYUNsMGFISnZkeUJ1WlhjZ1JYSnliM0lvWENKYlhDSXJaUzVxYjJsdUtGd2lMQ0JjSWlrclhDSmRJSE5vYjNWc1pDQmlaU0JzWlc1bmRHZ2dNaXdnWjI5MElHeGxibWQwYUNCY0lpdGxMbXhsYm1kMGFDazdhV1lvVUNobFd6QmRLU3hQS0dWYk1WMHBMRTlpYW1WamRDNXdjbTkwYjNSNWNHVXVhR0Z6VDNkdVVISnZjR1Z5ZEhrdVkyRnNiQ2gwTEdWYk1GMHBLWFJvY205M0lHNWxkeUJGY25KdmNpaGNJbVIxY0d4cFkyRjBaU0JyWlhrZ2FXNGdZbWwwVTJWeFQySnFPaUJjSWl0bFd6QmRLVHR5WlhSMWNtNGdkRnRsV3pCZFhUMGhNQ3h5S3lzc1pYMXlaWFIxY200Z1R5aHVLU3hiYm5Wc2JDeHVYWDBzYmlrN2FXWW9jand4S1hSb2NtOTNJRzVsZHlCRmNuSnZjaWhjSW1KcGRGTmxjVTlpYWlCbGVIQmxZM1J6SUdGMElHeGxZWE4wSUc5dVpTQnVZVzFsWkNCd1lXbHlMQ0JuYjNRZ1cxd2lLMjR1YW05cGJpaGNJaXdnWENJcEsxd2lYVndpS1R0MllYSWdkVDFoS0daMWJtTjBhVzl1S0c0cGUzSmxkSFZ5YmlCdVd6QmRmU3hsS1R0eVpYUjFjbTRnYkNoaEtHWjFibU4wYVc5dUtHNHBlM0psZEhWeWJpQnVXekZkZlN4bEtTa3ViV0Z3S0daMWJtTjBhVzl1S0c0cGUzSmxkSFZ5YmlCcEtHWjFibU4wYVc5dUtHNHNkQ2w3Y21WMGRYSnVJRzUxYkd3aFBUMTBXekJkSmlZb2JsdDBXekJkWFQxMFd6RmRLU3h1ZlN4N2ZTeGhLR1oxYm1OMGFXOXVLSFFzY2lsN2NtVjBkWEp1VzNRc2JsdHlYVjE5TEhVcEtYMHBmU3hpZVhSbE9tWjFibU4wYVc5dUtHNHBlMmxtS0hNb0tTeFBLRzRwTEc0K01qVTFLWFJvY205M0lHNWxkeUJGY25KdmNpaGNJbFpoYkhWbElITndaV05wWm1sbFpDQjBieUJpZVhSbElHTnZibk4wY25WamRHOXlJQ2hjSWl0dUsxd2lQVEI0WENJcmJpNTBiMU4wY21sdVp5Z3hOaWtyWENJcElHbHpJR3hoY21kbGNpQnBiaUIyWVd4MVpTQjBhR0Z1SUdFZ2MybHVaMnhsSUdKNWRHVXVYQ0lwTzNaaGNpQjBQU2h1UGpFMVAxd2lNSGhjSWpwY0lqQjRNRndpS1N0dUxuUnZVM1J5YVc1bktERTJLVHR5WlhSMWNtNGdaU2htZFc1amRHbHZiaWh5TEdVcGUzWmhjaUIxUFV3b2NpeGxLVHR5WlhSMWNtNGdkVDA5UFc0L1lpaGxLekVzZFNrNmVDaGxMSFFwZlNsOUxHSjFabVpsY2pwbWRXNWpkR2x2YmlodUtYdHlaWFIxY200Z2FDaGNJbUoxWm1abGNsd2lMRzRwTG0xaGNDaG1kVzVqZEdsdmJpaHVLWHR5WlhSMWNtNGdRblZtWm1WeUxtWnliMjBvYmlsOUtYMHNaVzVqYjJSbFpGTjBjbWx1WnpwbWRXNWpkR2x2YmlodUxIUXBlM0psZEhWeWJpQm9LRndpYzNSeWFXNW5YQ0lzZENrdWJXRndLR1oxYm1OMGFXOXVLSFFwZTNKbGRIVnliaUIwTG5SdlUzUnlhVzVuS0c0cGZTbDlMSFZwYm5SQ1JUcGtMSFZwYm5RNFFrVTZaQ2d4S1N4MWFXNTBNVFpDUlRwa0tESXBMSFZwYm5Rek1rSkZPbVFvTkNrc2RXbHVkRXhGT25Zc2RXbHVkRGhNUlRwMktERXBMSFZwYm5ReE5reEZPbllvTWlrc2RXbHVkRE15VEVVNmRpZzBLU3hwYm5SQ1JUcG5MR2x1ZERoQ1JUcG5LREVwTEdsdWRERTJRa1U2WnlneUtTeHBiblF6TWtKRk9tY29OQ2tzYVc1MFRFVTZiU3hwYm5RNFRFVTZiU2d4S1N4cGJuUXhOa3hGT20wb01pa3NhVzUwTXpKTVJUcHRLRFFwTEdac2IyRjBRa1U2YUNoY0ltWnNiMkYwUWtWY0lpdzBLUzV0WVhBb1puVnVZM1JwYjI0b2JpbDdjbVYwZFhKdUlHNHVjbVZoWkVac2IyRjBRa1VvTUNsOUtTeG1iRzloZEV4Rk9tZ29YQ0ptYkc5aGRFeEZYQ0lzTkNrdWJXRndLR1oxYm1OMGFXOXVLRzRwZTNKbGRIVnliaUJ1TG5KbFlXUkdiRzloZEV4RktEQXBmU2tzWkc5MVlteGxRa1U2YUNoY0ltUnZkV0pzWlVKRlhDSXNPQ2t1YldGd0tHWjFibU4wYVc5dUtHNHBlM0psZEhWeWJpQnVMbkpsWVdSRWIzVmliR1ZDUlNnd0tYMHBMR1J2ZFdKc1pVeEZPbWdvWENKa2IzVmliR1ZNUlZ3aUxEZ3BMbTFoY0NobWRXNWpkR2x2YmlodUtYdHlaWFIxY200Z2JpNXlaV0ZrUkc5MVlteGxURVVvTUNsOUtYMHNiaTVsZUhCdmNuUnpQV1Y5WFNsOUtUc2lMQ0FpWENKMWMyVWdjM1J5YVdOMFhDSTdYSEpjYm5aaGNpQmZYMlY0ZEdWdVpITWdQU0FvZEdocGN5QW1KaUIwYUdsekxsOWZaWGgwWlc1a2N5a2dmSHdnS0daMWJtTjBhVzl1SUNncElIdGNjbHh1SUNBZ0lIWmhjaUJsZUhSbGJtUlRkR0YwYVdOeklEMGdablZ1WTNScGIyNGdLR1FzSUdJcElIdGNjbHh1SUNBZ0lDQWdJQ0JsZUhSbGJtUlRkR0YwYVdOeklEMGdUMkpxWldOMExuTmxkRkJ5YjNSdmRIbHdaVTltSUh4OFhISmNiaUFnSUNBZ0lDQWdJQ0FnSUNoN0lGOWZjSEp2ZEc5Zlh6b2dXMTBnZlNCcGJuTjBZVzVqWlc5bUlFRnljbUY1SUNZbUlHWjFibU4wYVc5dUlDaGtMQ0JpS1NCN0lHUXVYMTl3Y205MGIxOWZJRDBnWWpzZ2ZTa2dmSHhjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdablZ1WTNScGIyNGdLR1FzSUdJcElIc2dabTl5SUNoMllYSWdjQ0JwYmlCaUtTQnBaaUFvVDJKcVpXTjBMbkJ5YjNSdmRIbHdaUzVvWVhOUGQyNVFjbTl3WlhKMGVTNWpZV3hzS0dJc0lIQXBLU0JrVzNCZElEMGdZbHR3WFRzZ2ZUdGNjbHh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdaWGgwWlc1a1UzUmhkR2xqY3loa0xDQmlLVHRjY2x4dUlDQWdJSDA3WEhKY2JpQWdJQ0J5WlhSMWNtNGdablZ1WTNScGIyNGdLR1FzSUdJcElIdGNjbHh1SUNBZ0lDQWdJQ0JwWmlBb2RIbHdaVzltSUdJZ0lUMDlJRndpWm5WdVkzUnBiMjVjSWlBbUppQmlJQ0U5UFNCdWRXeHNLVnh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dWSGx3WlVWeWNtOXlLRndpUTJ4aGMzTWdaWGgwWlc1a2N5QjJZV3gxWlNCY0lpQXJJRk4wY21sdVp5aGlLU0FySUZ3aUlHbHpJRzV2ZENCaElHTnZibk4wY25WamRHOXlJRzl5SUc1MWJHeGNJaWs3WEhKY2JpQWdJQ0FnSUNBZ1pYaDBaVzVrVTNSaGRHbGpjeWhrTENCaUtUdGNjbHh1SUNBZ0lDQWdJQ0JtZFc1amRHbHZiaUJmWHlncElIc2dkR2hwY3k1amIyNXpkSEoxWTNSdmNpQTlJR1E3SUgxY2NseHVJQ0FnSUNBZ0lDQmtMbkJ5YjNSdmRIbHdaU0E5SUdJZ1BUMDlJRzUxYkd3Z1B5QlBZbXBsWTNRdVkzSmxZWFJsS0dJcElEb2dLRjlmTG5CeWIzUnZkSGx3WlNBOUlHSXVjSEp2ZEc5MGVYQmxMQ0J1WlhjZ1gxOG9LU2s3WEhKY2JpQWdJQ0I5TzF4eVhHNTlLU2dwTzF4eVhHNVBZbXBsWTNRdVpHVm1hVzVsVUhKdmNHVnlkSGtvWlhod2IzSjBjeXdnWENKZlgyVnpUVzlrZFd4bFhDSXNJSHNnZG1Gc2RXVTZJSFJ5ZFdVZ2ZTazdYSEpjYm1WNGNHOXlkSE11Ulcxd2RIbENWSEpsWlNBOUlHVjRjRzl5ZEhNdVlYTlRaWFFnUFNCbGVIQnZjblJ6TG5OcGJYQnNaVU52YlhCaGNtRjBiM0lnUFNCbGVIQnZjblJ6TG1SbFptRjFiSFJEYjIxd1lYSmhkRzl5SUQwZ2RtOXBaQ0F3TzF4eVhHNHZLaXBjY2x4dUlDb2dRMjl0Y0dGeVpYTWdSR1ZtWVhWc2RFTnZiWEJoY21GaWJHVnpJSFJ2SUdadmNtMGdZU0J6ZEhKcFkzUWdjR0Z5ZEdsaGJDQnZjbVJsY21sdVp5NWNjbHh1SUNwY2NseHVJQ29nU0dGdVpHeGxjeUFyTHkwd0lHRnVaQ0JPWVU0Z2JHbHJaU0JOWVhBNklFNWhUaUJwY3lCbGNYVmhiQ0IwYnlCT1lVNHNJR0Z1WkNBdE1DQnBjeUJsY1hWaGJDQjBieUFyTUM1Y2NseHVJQ3BjY2x4dUlDb2dRWEp5WVhseklHRnlaU0JqYjIxd1lYSmxaQ0IxYzJsdVp5QW5QQ2NnWVc1a0lDYytKeXdnZDJocFkyZ2diV0Y1SUdOaGRYTmxJSFZ1Wlhod1pXTjBaV1FnWlhGMVlXeHBkSGs2WEhKY2JpQXFJR1p2Y2lCbGVHRnRjR3hsSUZzeFhTQjNhV3hzSUdKbElHTnZibk5wWkdWeVpXUWdaWEYxWVd3Z2RHOGdXeWN4SjEwdVhISmNiaUFxWEhKY2JpQXFJRlIzYnlCdlltcGxZM1J6SUhkcGRHZ2daWEYxWVd3Z2RtRnNkV1ZQWmlCamIyMXdZWEpsSUhSb1pTQnpZVzFsTENCaWRYUWdZMjl0Y0dGeVpTQjFibVZ4ZFdGc0lIUnZYSEpjYmlBcUlIQnlhVzFwZEdsMlpYTWdkR2hoZENCb1lYWmxJSFJvWlNCellXMWxJSFpoYkhWbExseHlYRzRnS2k5Y2NseHVablZ1WTNScGIyNGdaR1ZtWVhWc2RFTnZiWEJoY21GMGIzSW9ZU3dnWWlrZ2UxeHlYRzRnSUNBZ0x5OGdVM0JsWTJsaGJDQmpZWE5sSUdacGJtbDBaU0J1ZFcxaVpYSnpJR1pwY25OMElHWnZjaUJ3WlhKbWIzSnRZVzVqWlM1Y2NseHVJQ0FnSUM4dklFNXZkR1VnZEdoaGRDQjBhR1VnZEhKcFkyc2diMllnZFhOcGJtY2dKMkVnTFNCaUp5QmhibVFnWTJobFkydHBibWNnWm05eUlFNWhUaUIwYnlCa1pYUmxZM1FnYm05dUxXNTFiV0psY25OY2NseHVJQ0FnSUM4dklHUnZaWE1nYm05MElIZHZjbXNnYVdZZ2RHaGxJSE4wY21sdVozTWdZWEpsSUc1MWJXVnlhV01nS0dWNE9pQmNJalZjSWlrdUlGUm9hWE1nZDI5MWJHUWdiR1ZoWkdsdVp5QnRiM04wSUZ4eVhHNGdJQ0FnTHk4Z1kyOXRjR0Z5YVhOdmJpQm1kVzVqZEdsdmJuTWdkWE5wYm1jZ2RHaGhkQ0JoY0hCeWIyRmphQ0IwYnlCbVlXbHNJSFJ2SUdoaGRtVWdkSEpoYm5OcGRHbDJhWFI1TGx4eVhHNGdJQ0FnYVdZZ0tFNTFiV0psY2k1cGMwWnBibWwwWlNoaEtTQW1KaUJPZFcxaVpYSXVhWE5HYVc1cGRHVW9ZaWtwSUh0Y2NseHVJQ0FnSUNBZ0lDQnlaWFIxY200Z1lTQXRJR0k3WEhKY2JpQWdJQ0I5WEhKY2JpQWdJQ0F2THlCVWFHVWdaR1ZtWVhWc2RDQThJR0Z1WkNBK0lHOXdaWEpoZEc5eWN5QmhjbVVnYm05MElIUnZkR0ZzYkhrZ2IzSmtaWEpsWkM0Z1ZHOGdZV3hzYjNjZ2RIbHdaWE1nZEc4Z1ltVWdiV2w0WldSY2NseHVJQ0FnSUM4dklHbHVJR0VnYzJsdVoyeGxJR052Ykd4bFkzUnBiMjRzSUdOdmJYQmhjbVVnZEhsd1pYTWdZVzVrSUc5eVpHVnlJSFpoYkhWbGN5QnZaaUJrYVdabVpYSmxiblFnZEhsd1pYTWdZbmtnZEhsd1pTNWNjbHh1SUNBZ0lIWmhjaUIwWVNBOUlIUjVjR1Z2WmlCaE8xeHlYRzRnSUNBZ2RtRnlJSFJpSUQwZ2RIbHdaVzltSUdJN1hISmNiaUFnSUNCcFppQW9kR0VnSVQwOUlIUmlLU0I3WEhKY2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUhSaElEd2dkR0lnUHlBdE1TQTZJREU3WEhKY2JpQWdJQ0I5WEhKY2JpQWdJQ0JwWmlBb2RHRWdQVDA5SUNkdlltcGxZM1FuS1NCN1hISmNiaUFnSUNBZ0lDQWdMeThnYzNSaGJtUmhjbVJwZW1Wa0lFcGhkbUZUWTNKcGNIUWdZblZuT2lCdWRXeHNJR2x6SUc1dmRDQmhiaUJ2WW1wbFkzUXNJR0oxZENCMGVYQmxiMllnYzJGNWN5QnBkQ0JwYzF4eVhHNGdJQ0FnSUNBZ0lHbG1JQ2hoSUQwOVBTQnVkV3hzS1Z4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdZaUE5UFQwZ2JuVnNiQ0EvSURBZ09pQXRNVHRjY2x4dUlDQWdJQ0FnSUNCbGJITmxJR2xtSUNoaUlEMDlQU0J1ZFd4c0tWeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnTVR0Y2NseHVJQ0FnSUNBZ0lDQmhJRDBnWVM1MllXeDFaVTltS0NrN1hISmNiaUFnSUNBZ0lDQWdZaUE5SUdJdWRtRnNkV1ZQWmlncE8xeHlYRzRnSUNBZ0lDQWdJSFJoSUQwZ2RIbHdaVzltSUdFN1hISmNiaUFnSUNBZ0lDQWdkR0lnUFNCMGVYQmxiMllnWWp0Y2NseHVJQ0FnSUNBZ0lDQXZMeUJFWldGc0lIZHBkR2dnZEdobElIUjNieUIyWVd4MVpVOW1LQ2x6SUhCeWIyUjFZMmx1WnlCa2FXWm1aWEpsYm5RZ2RIbHdaWE5jY2x4dUlDQWdJQ0FnSUNCcFppQW9kR0VnSVQwOUlIUmlLU0I3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQjBZU0E4SUhSaUlEOGdMVEVnT2lBeE8xeHlYRzRnSUNBZ0lDQWdJSDFjY2x4dUlDQWdJSDFjY2x4dUlDQWdJQzh2SUdFZ1lXNWtJR0lnWVhKbElHNXZkeUIwYUdVZ2MyRnRaU0IwZVhCbExDQmhibVFnZDJsc2JDQmlaU0JoSUc1MWJXSmxjaXdnYzNSeWFXNW5JRzl5SUdGeWNtRjVJRnh5WEc0Z0lDQWdMeThnS0hkb2FXTm9JSGRsSUdGemMzVnRaU0JvYjJ4a2N5QnVkVzFpWlhKeklHOXlJSE4wY21sdVozTXBMQ0J2Y2lCemIyMWxkR2hwYm1jZ2RXNXpkWEJ3YjNKMFpXUXVYSEpjYmlBZ0lDQnBaaUFvWVNBOElHSXBYSEpjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJQzB4TzF4eVhHNGdJQ0FnYVdZZ0tHRWdQaUJpS1Z4eVhHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlBeE8xeHlYRzRnSUNBZ2FXWWdLR0VnUFQwOUlHSXBYSEpjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJREE3WEhKY2JpQWdJQ0F2THlCUGNtUmxjaUJPWVU0Z2JHVnpjeUIwYUdGdUlHOTBhR1Z5SUc1MWJXSmxjbk5jY2x4dUlDQWdJR2xtSUNoT2RXMWlaWEl1YVhOT1lVNG9ZU2twWEhKY2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUU1MWJXSmxjaTVwYzA1aFRpaGlLU0EvSURBZ09pQXRNVHRjY2x4dUlDQWdJR1ZzYzJVZ2FXWWdLRTUxYldKbGNpNXBjMDVoVGloaUtTbGNjbHh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdNVHRjY2x4dUlDQWdJQzh2SUZSb2FYTWdZMjkxYkdRZ1ltVWdkSGR2SUc5aWFtVmpkSE1nS0dVdVp5NGdXemRkSUdGdVpDQmJKemNuWFNrZ2RHaGhkQ0JoY21WdUozUWdiM0prWlhKbFpGeHlYRzRnSUNBZ2NtVjBkWEp1SUVGeWNtRjVMbWx6UVhKeVlYa29ZU2tnUHlBd0lEb2dUblZ0WW1WeUxrNWhUanRjY2x4dWZWeHlYRzVsZUhCdmNuUnpMbVJsWm1GMWJIUkRiMjF3WVhKaGRHOXlJRDBnWkdWbVlYVnNkRU52YlhCaGNtRjBiM0k3WEhKY2JqdGNjbHh1Wm5WdVkzUnBiMjRnYzJsdGNHeGxRMjl0Y0dGeVlYUnZjaWhoTENCaUtTQjdYSEpjYmlBZ0lDQnlaWFIxY200Z1lTQStJR0lnUHlBeElEb2dZU0E4SUdJZ1B5QXRNU0E2SURBN1hISmNibjFjY2x4dVpYaHdiM0owY3k1emFXMXdiR1ZEYjIxd1lYSmhkRzl5SUQwZ2MybHRjR3hsUTI5dGNHRnlZWFJ2Y2p0Y2NseHVPMXh5WEc0dktpcGNjbHh1SUNvZ1FTQnlaV0Z6YjI1aFlteDVJR1poYzNRZ1kyOXNiR1ZqZEdsdmJpQnZaaUJyWlhrdGRtRnNkV1VnY0dGcGNuTWdkMmwwYUNCaElIQnZkMlZ5Wm5Wc0lFRlFTUzVjY2x4dUlDb2dUR0Z5WjJWc2VTQmpiMjF3WVhScFlteGxJSGRwZEdnZ2RHaGxJSE4wWVc1a1lYSmtJRTFoY0M0Z1FsUnlaV1VnYVhNZ1lTQkNLeUIwY21WbElHUmhkR0VnYzNSeWRXTjBkWEpsTEZ4eVhHNGdLaUJ6YnlCMGFHVWdZMjlzYkdWamRHbHZiaUJwY3lCemIzSjBaV1FnWW5rZ2EyVjVMbHh5WEc0Z0tseHlYRzRnS2lCQ0t5QjBjbVZsY3lCMFpXNWtJSFJ2SUhWelpTQnRaVzF2Y25rZ2JXOXlaU0JsWm1acFkybGxiblJzZVNCMGFHRnVJR2hoYzJoMFlXSnNaWE1nYzNWamFDQmhjeUIwYUdWY2NseHVJQ29nYzNSaGJtUmhjbVFnVFdGd0xDQmxjM0JsWTJsaGJHeDVJSGRvWlc0Z2RHaGxJR052Ykd4bFkzUnBiMjRnWTI5dWRHRnBibk1nWVNCc1lYSm5aU0J1ZFcxaVpYSWdiMlpjY2x4dUlDb2dhWFJsYlhNdUlFaHZkMlYyWlhJc0lHMWhhVzUwWVdsdWFXNW5JSFJvWlNCemIzSjBJRzl5WkdWeUlHMWhhMlZ6SUhSb1pXMGdiVzlrWlhOMGJIa2djMnh2ZDJWeU9seHlYRzRnS2lCUEtHeHZaeUJ6YVhwbEtTQnlZWFJvWlhJZ2RHaGhiaUJQS0RFcExpQlVhR2x6SUVJcklIUnlaV1VnYVcxd2JHVnRaVzUwWVhScGIyNGdjM1Z3Y0c5eWRITWdUeWd4S1Z4eVhHNGdLaUJtWVhOMElHTnNiMjVwYm1jdUlFbDBJR0ZzYzI4Z2MzVndjRzl5ZEhNZ1puSmxaWHBsS0Nrc0lIZG9hV05vSUdOaGJpQmlaU0IxYzJWa0lIUnZJR1Z1YzNWeVpTQjBhR0YwWEhKY2JpQXFJR0VnUWxSeVpXVWdhWE1nYm05MElHTm9ZVzVuWldRZ1lXTmphV1JsYm5SaGJHeDVMbHh5WEc0Z0tseHlYRzRnS2lCRGIyNW1kWE5wYm1kc2VTd2dkR2hsSUVWVE5pQk5ZWEF1Wm05eVJXRmphQ2hqS1NCdFpYUm9iMlFnWTJGc2JITWdZeWgyWVd4MVpTeHJaWGtwSUdsdWMzUmxZV1FnYjJaY2NseHVJQ29nWXloclpYa3NkbUZzZFdVcExDQnBiaUJqYjI1MGNtRnpkQ0IwYnlCdmRHaGxjaUJ0WlhSb2IyUnpJSE4xWTJnZ1lYTWdjMlYwS0NrZ1lXNWtJR1Z1ZEhKcFpYTW9LVnh5WEc0Z0tpQjNhR2xqYUNCd2RYUWdkR2hsSUd0bGVTQm1hWEp6ZEM0Z1NTQmpZVzRnYjI1c2VTQmhjM04xYldVZ2RHaGhkQ0IwYUdVZ2IzSmtaWElnZDJGeklISmxkbVZ5YzJWa0lHOXVYSEpjYmlBcUlIUm9aU0IwYUdWdmNua2dkR2hoZENCMWMyVnljeUIzYjNWc1pDQjFjM1ZoYkd4NUlIZGhiblFnZEc4Z1pYaGhiV2x1WlNCMllXeDFaWE1nWVc1a0lHbG5ibTl5WlNCclpYbHpMbHh5WEc0Z0tpQkNWSEpsWlNkeklHWnZja1ZoWTJnb0tTQjBhR1Z5WldadmNtVWdkMjl5YTNNZ2RHaGxJSE5oYldVZ2QyRjVMQ0JpZFhRZ1lTQnpaV052Ym1RZ2JXVjBhRzlrWEhKY2JpQXFJR0F1Wm05eVJXRmphRkJoYVhJb0tHdGxlU3gyWVd4MVpTazlQbnN1TGk1OUtXQWdhWE1nY0hKdmRtbGtaV1FnZDJocFkyZ2djMlZ1WkhNZ2VXOTFJSFJvWlNCclpYbGNjbHh1SUNvZ1ptbHljM1FnWVc1a0lIUm9aU0IyWVd4MVpTQnpaV052Ym1RN0lIUm9hWE1nYldWMGFHOWtJR2x6SUhOc2FXZG9kR3g1SUdaaGMzUmxjaUJpWldOaGRYTmxJR2wwSUdselhISmNiaUFxSUhSb1pTQmNJbTVoZEdsMlpWd2lJR1p2Y2kxbFlXTm9JRzFsZEdodlpDQm1iM0lnZEdocGN5QmpiR0Z6Y3k1Y2NseHVJQ3BjY2x4dUlDb2dUM1YwSUc5bUlIUm9aU0JpYjNnc0lFSlVjbVZsSUhOMWNIQnZjblJ6SUd0bGVYTWdkR2hoZENCaGNtVWdiblZ0WW1WeWN5d2djM1J5YVc1bmN5d2dZWEp5WVhseklHOW1YSEpjYmlBcUlHNTFiV0psY25NdmMzUnlhVzVuY3l3Z1JHRjBaU3dnWVc1a0lHOWlhbVZqZEhNZ2RHaGhkQ0JvWVhabElHRWdkbUZzZFdWUFppZ3BJRzFsZEdodlpDQnlaWFIxY201cGJtY2dZVnh5WEc0Z0tpQnVkVzFpWlhJZ2IzSWdjM1J5YVc1bkxpQlBkR2hsY2lCa1lYUmhJSFI1Y0dWekxDQnpkV05vSUdGeklHRnljbUY1Y3lCdlppQkVZWFJsSUc5eUlHTjFjM1J2YlZ4eVhHNGdLaUJ2WW1wbFkzUnpMQ0J5WlhGMWFYSmxJR0VnWTNWemRHOXRJR052YlhCaGNtRjBiM0lzSUhkb2FXTm9JSGx2ZFNCdGRYTjBJSEJoYzNNZ1lYTWdkR2hsSUhObFkyOXVaRnh5WEc0Z0tpQmhjbWQxYldWdWRDQjBieUIwYUdVZ1kyOXVjM1J5ZFdOMGIzSWdLSFJvWlNCbWFYSnpkQ0JoY21kMWJXVnVkQ0JwY3lCaGJpQnZjSFJwYjI1aGJDQnNhWE4wSUc5bVhISmNiaUFxSUdsdWFYUnBZV3dnYVhSbGJYTXBMaUJUZVcxaWIyeHpJR05oYm01dmRDQmlaU0IxYzJWa0lHRnpJR3RsZVhNZ1ltVmpZWFZ6WlNCMGFHVjVJR0Z5WlNCMWJtOXlaR1Z5WldSY2NseHVJQ29nS0c5dVpTQlRlVzFpYjJ3Z2FYTWdibVYyWlhJZ1hDSm5jbVZoZEdWeVhDSWdiM0lnWENKc1pYTnpYQ0lnZEdoaGJpQmhibTkwYUdWeUtTNWNjbHh1SUNwY2NseHVJQ29nUUdWNFlXMXdiR1ZjY2x4dUlDb2dSMmwyWlc0Z1lTQjdibUZ0WlRvZ2MzUnlhVzVuTENCaFoyVTZJRzUxYldKbGNuMGdiMkpxWldOMExDQjViM1VnWTJGdUlHTnlaV0YwWlNCaElIUnlaV1VnYzI5eWRHVmtJR0o1WEhKY2JpQXFJRzVoYldVZ1lXNWtJSFJvWlc0Z1lua2dZV2RsSUd4cGEyVWdkR2hwY3pwY2NseHVJQ3BjY2x4dUlDb2dJQ0FnSUhaaGNpQjBjbVZsSUQwZ2JtVjNJRUpVY21WbEtIVnVaR1ZtYVc1bFpDd2dLR0VzSUdJcElEMCtJSHRjY2x4dUlDb2dJQ0FnSUNBZ2FXWWdLR0V1Ym1GdFpTQStJR0l1Ym1GdFpTbGNjbHh1SUNvZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnTVRzZ0x5OGdVbVYwZFhKdUlHRWdiblZ0WW1WeUlENHdJSGRvWlc0Z1lTQStJR0pjY2x4dUlDb2dJQ0FnSUNBZ1pXeHpaU0JwWmlBb1lTNXVZVzFsSUR3Z1lpNXVZVzFsS1Z4eVhHNGdLaUFnSUNBZ0lDQWdJSEpsZEhWeWJpQXRNVHNnTHk4Z1VtVjBkWEp1SUdFZ2JuVnRZbVZ5SUR3d0lIZG9aVzRnWVNBOElHSmNjbHh1SUNvZ0lDQWdJQ0FnWld4elpTQXZMeUJ1WVcxbGN5QmhjbVVnWlhGMVlXd2dLRzl5SUdsdVkyOXRjR0Z5WVdKc1pTbGNjbHh1SUNvZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnWVM1aFoyVWdMU0JpTG1GblpUc2dMeThnVW1WMGRYSnVJRDR3SUhkb1pXNGdZUzVoWjJVZ1BpQmlMbUZuWlZ4eVhHNGdLaUFnSUNBZ2ZTazdYSEpjYmlBcVhISmNiaUFxSUNBZ0lDQjBjbVZsTG5ObGRDaDdibUZ0WlRwY0lrSnBiR3hjSWl3Z1lXZGxPakUzZlN3Z1hDSm9ZWEJ3ZVZ3aUtUdGNjbHh1SUNvZ0lDQWdJSFJ5WldVdWMyVjBLSHR1WVcxbE9sd2lSbkpoYmx3aUxDQmhaMlU2TkRCOUxDQmNJbUoxYzNrZ0ppQnpkSEpsYzNObFpGd2lLVHRjY2x4dUlDb2dJQ0FnSUhSeVpXVXVjMlYwS0h0dVlXMWxPbHdpUW1sc2JGd2lMQ0JoWjJVNk5UVjlMQ0JjSW5KbFkyVnVkR3g1SUd4aGFXUWdiMlptWENJcE8xeHlYRzRnS2lBZ0lDQWdkSEpsWlM1bWIzSkZZV05vVUdGcGNpZ29heXdnZGlrZ1BUNGdlMXh5WEc0Z0tpQWdJQ0FnSUNCamIyNXpiMnhsTG14dlp5aGdUbUZ0WlRvZ0pIdHJMbTVoYldWOUlFRm5aVG9nSkh0ckxtRm5aWDBnVTNSaGRIVnpPaUFrZTNaOVlDazdYSEpjYmlBcUlDQWdJQ0I5S1R0Y2NseHVJQ3BjY2x4dUlDb2dRR1JsYzJOeWFYQjBhVzl1WEhKY2JpQXFJRlJvWlNCY0luSmhibWRsWENJZ2JXVjBhRzlrY3lBb1lHWnZja1ZoWTJnc0lHWnZjbEpoYm1kbExDQmxaR2wwVW1GdVoyVmdLU0IzYVd4c0lISmxkSFZ5YmlCMGFHVWdiblZ0WW1WeVhISmNiaUFxSUc5bUlHVnNaVzFsYm5SeklIUm9ZWFFnZDJWeVpTQnpZMkZ1Ym1Wa0xpQkpiaUJoWkdScGRHbHZiaXdnZEdobElHTmhiR3hpWVdOcklHTmhiaUJ5WlhSMWNtNGdlMkp5WldGck9sSjlYSEpjYmlBcUlIUnZJSE4wYjNBZ1pXRnliSGtnWVc1a0lISmxkSFZ5YmlCU0lHWnliMjBnZEdobElHOTFkR1Z5SUdaMWJtTjBhVzl1TGx4eVhHNGdLbHh5WEc0Z0tpQXRJRlJQUkU4NklGUmxjM1FnY0dWeVptOXliV0Z1WTJVZ2IyWWdjSEpsWVd4c2IyTmhkR2x1WnlCMllXeDFaWE1nWVhKeVlYa2dZWFFnYldGNElITnBlbVZjY2x4dUlDb2dMU0JVVDBSUE9pQkJaR1FnWm1GemRDQnBibWwwYVdGc2FYcGhkR2x2YmlCM2FHVnVJR0VnYzI5eWRHVmtJR0Z5Y21GNUlHbHpJSEJ5YjNacFpHVmtJSFJ2SUdOdmJuTjBjblZqZEc5eVhISmNiaUFxWEhKY2JpQXFJRVp2Y2lCdGIzSmxJR1J2WTNWdFpXNTBZWFJwYjI0Z2MyVmxJR2gwZEhCek9pOHZaMmwwYUhWaUxtTnZiUzl4ZDJWeWRHbGxMMkowY21WbExYUjVjR1Z6WTNKcGNIUmNjbHh1SUNwY2NseHVJQ29nUVhKbElIbHZkU0JoSUVNaklHUmxkbVZzYjNCbGNqOGdXVzkxSUcxcFoyaDBJR3hwYTJVZ2RHaGxJSE5wYldsc1lYSWdaR0YwWVNCemRISjFZM1IxY21WeklFa2diV0ZrWlNCbWIzSWdReU02WEhKY2JpQXFJRUpFYVdOMGFXOXVZWEo1TENCQ1RHbHpkQ3dnWlhSakxpQlRaV1VnYUhSMGNEb3ZMMk52Y21VdWJHOTVZeTV1WlhRdlkyOXNiR1ZqZEdsdmJuTXZYSEpjYmlBcVhISmNiaUFxSUVCaGRYUm9iM0lnUkdGMmFXUWdVR2xsY0dkeVlYTnpYSEpjYmlBcUwxeHlYRzUyWVhJZ1FsUnlaV1VnUFNBdktpb2dRR05zWVhOeklDb3ZJQ2htZFc1amRHbHZiaUFvS1NCN1hISmNiaUFnSUNBdktpcGNjbHh1SUNBZ0lDQXFJRWx1YVhScFlXeHBlbVZ6SUdGdUlHVnRjSFI1SUVJcklIUnlaV1V1WEhKY2JpQWdJQ0FnS2lCQWNHRnlZVzBnWTI5dGNHRnlaU0JEZFhOMGIyMGdablZ1WTNScGIyNGdkRzhnWTI5dGNHRnlaU0J3WVdseWN5QnZaaUJsYkdWdFpXNTBjeUJwYmlCMGFHVWdkSEpsWlM1Y2NseHVJQ0FnSUNBcUlDQWdTV1lnYm05MElITndaV05wWm1sbFpDd2daR1ZtWVhWc2RFTnZiWEJoY21GMGIzSWdkMmxzYkNCaVpTQjFjMlZrSUhkb2FXTm9JR2x6SUhaaGJHbGtJR0Z6SUd4dmJtY2dZWE1nU3lCbGVIUmxibVJ6SUVSbFptRjFiSFJEYjIxd1lYSmhZbXhsTGx4eVhHNGdJQ0FnSUNvZ1FIQmhjbUZ0SUdWdWRISnBaWE1nUVNCelpYUWdiMllnYTJWNUxYWmhiSFZsSUhCaGFYSnpJSFJ2SUdsdWFYUnBZV3hwZW1VZ2RHaGxJSFJ5WldWY2NseHVJQ0FnSUNBcUlFQndZWEpoYlNCdFlYaE9iMlJsVTJsNlpTQkNjbUZ1WTJocGJtY2dabUZqZEc5eUlDaHRZWGhwYlhWdElHbDBaVzF6SUc5eUlHTm9hV3hrY21WdUlIQmxjaUJ1YjJSbEtWeHlYRzRnSUNBZ0lDb2dJQ0JOZFhOMElHSmxJR2x1SUhKaGJtZGxJRFF1TGpJMU5pNGdTV1lnZFc1a1pXWnBibVZrSUc5eUlEdzBJSFJvWlc0Z1pHVm1ZWFZzZENCcGN5QjFjMlZrT3lCcFppQStNalUySUhSb1pXNGdNalUyTGx4eVhHNGdJQ0FnSUNvdlhISmNiaUFnSUNCbWRXNWpkR2x2YmlCQ1ZISmxaU2hsYm5SeWFXVnpMQ0JqYjIxd1lYSmxMQ0J0WVhoT2IyUmxVMmw2WlNrZ2UxeHlYRzRnSUNBZ0lDQWdJSFJvYVhNdVgzSnZiM1FnUFNCRmJYQjBlVXhsWVdZN1hISmNiaUFnSUNBZ0lDQWdkR2hwY3k1ZmMybDZaU0E5SURBN1hISmNiaUFnSUNBZ0lDQWdkR2hwY3k1ZmJXRjRUbTlrWlZOcGVtVWdQU0J0WVhoT2IyUmxVMmw2WlNBK1BTQTBJRDhnVFdGMGFDNXRhVzRvYldGNFRtOWtaVk5wZW1Vc0lESTFOaWtnT2lBek1qdGNjbHh1SUNBZ0lDQWdJQ0IwYUdsekxsOWpiMjF3WVhKbElEMGdZMjl0Y0dGeVpTQjhmQ0JrWldaaGRXeDBRMjl0Y0dGeVlYUnZjanRjY2x4dUlDQWdJQ0FnSUNCcFppQW9aVzUwY21sbGN5bGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ2RHaHBjeTV6WlhSUVlXbHljeWhsYm5SeWFXVnpLVHRjY2x4dUlDQWdJSDFjY2x4dUlDQWdJRTlpYW1WamRDNWtaV1pwYm1WUWNtOXdaWEowZVNoQ1ZISmxaUzV3Y205MGIzUjVjR1VzSUZ3aWMybDZaVndpTENCN1hISmNiaUFnSUNBZ0lDQWdMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk5Y2NseHVJQ0FnSUNBZ0lDQXZMeUJGVXpZZ1RXRndQRXNzVmo0Z2JXVjBhRzlrY3lBdkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2TDF4eVhHNGdJQ0FnSUNBZ0lDOHFLaUJIWlhSeklIUm9aU0J1ZFcxaVpYSWdiMllnYTJWNUxYWmhiSFZsSUhCaGFYSnpJR2x1SUhSb1pTQjBjbVZsTGlBcUwxeHlYRzRnSUNBZ0lDQWdJR2RsZERvZ1puVnVZM1JwYjI0Z0tDa2dleUJ5WlhSMWNtNGdkR2hwY3k1ZmMybDZaVHNnZlN4Y2NseHVJQ0FnSUNBZ0lDQmxiblZ0WlhKaFlteGxPaUJtWVd4elpTeGNjbHh1SUNBZ0lDQWdJQ0JqYjI1bWFXZDFjbUZpYkdVNklIUnlkV1ZjY2x4dUlDQWdJSDBwTzF4eVhHNGdJQ0FnVDJKcVpXTjBMbVJsWm1sdVpWQnliM0JsY25SNUtFSlVjbVZsTG5CeWIzUnZkSGx3WlN3Z1hDSnNaVzVuZEdoY0lpd2dlMXh5WEc0Z0lDQWdJQ0FnSUM4cUtpQkhaWFJ6SUhSb1pTQnVkVzFpWlhJZ2IyWWdhMlY1TFhaaGJIVmxJSEJoYVhKeklHbHVJSFJvWlNCMGNtVmxMaUFxTDF4eVhHNGdJQ0FnSUNBZ0lHZGxkRG9nWm5WdVkzUnBiMjRnS0NrZ2V5QnlaWFIxY200Z2RHaHBjeTVmYzJsNlpUc2dmU3hjY2x4dUlDQWdJQ0FnSUNCbGJuVnRaWEpoWW14bE9pQm1ZV3h6WlN4Y2NseHVJQ0FnSUNBZ0lDQmpiMjVtYVdkMWNtRmliR1U2SUhSeWRXVmNjbHh1SUNBZ0lIMHBPMXh5WEc0Z0lDQWdUMkpxWldOMExtUmxabWx1WlZCeWIzQmxjblI1S0VKVWNtVmxMbkJ5YjNSdmRIbHdaU3dnWENKcGMwVnRjSFI1WENJc0lIdGNjbHh1SUNBZ0lDQWdJQ0F2S2lvZ1VtVjBkWEp1Y3lCMGNuVmxJR2xtWmlCMGFHVWdkSEpsWlNCamIyNTBZV2x1Y3lCdWJ5QnJaWGt0ZG1Gc2RXVWdjR0ZwY25NdUlDb3ZYSEpjYmlBZ0lDQWdJQ0FnWjJWME9pQm1kVzVqZEdsdmJpQW9LU0I3SUhKbGRIVnliaUIwYUdsekxsOXphWHBsSUQwOVBTQXdPeUI5TEZ4eVhHNGdJQ0FnSUNBZ0lHVnVkVzFsY21GaWJHVTZJR1poYkhObExGeHlYRzRnSUNBZ0lDQWdJR052Ym1acFozVnlZV0pzWlRvZ2RISjFaVnh5WEc0Z0lDQWdmU2s3WEhKY2JpQWdJQ0F2S2lvZ1VtVnNaV0Z6WlhNZ2RHaGxJSFJ5WldVZ2MyOGdkR2hoZENCcGRITWdjMmw2WlNCcGN5QXdMaUFxTDF4eVhHNGdJQ0FnUWxSeVpXVXVjSEp2ZEc5MGVYQmxMbU5zWldGeUlEMGdablZ1WTNScGIyNGdLQ2tnZTF4eVhHNGdJQ0FnSUNBZ0lIUm9hWE11WDNKdmIzUWdQU0JGYlhCMGVVeGxZV1k3WEhKY2JpQWdJQ0FnSUNBZ2RHaHBjeTVmYzJsNlpTQTlJREE3WEhKY2JpQWdJQ0I5TzF4eVhHNGdJQ0FnTHlvcUlGSjFibk1nWVNCbWRXNWpkR2x2YmlCbWIzSWdaV0ZqYUNCclpYa3RkbUZzZFdVZ2NHRnBjaXdnYVc0Z2IzSmtaWElnWm5KdmJTQnpiV0ZzYkdWemRDQjBiMXh5WEc0Z0lDQWdJQ29nSUd4aGNtZGxjM1FnYTJWNUxpQkdiM0lnWTI5dGNHRjBhV0pwYkdsMGVTQjNhWFJvSUVWVE5pQk5ZWEFzSUhSb1pTQmhjbWQxYldWdWRDQnZjbVJsY2lCMGIxeHlYRzRnSUNBZ0lDb2dJSFJvWlNCallXeHNZbUZqYXlCcGN5QmlZV05yZDJGeVpITTZJSFpoYkhWbElHWnBjbk4wTENCMGFHVnVJR3RsZVM0Z1EyRnNiQ0JtYjNKRllXTm9VR0ZwY2x4eVhHNGdJQ0FnSUNvZ0lHbHVjM1JsWVdRZ2RHOGdjbVZqWldsMlpTQjBhR1VnYTJWNUlHRnpJSFJvWlNCbWFYSnpkQ0JoY21kMWJXVnVkQzVjY2x4dUlDQWdJQ0FxSUVCd1lYSmhiU0IwYUdselFYSm5JRWxtSUhCeWIzWnBaR1ZrTENCMGFHbHpJSEJoY21GdFpYUmxjaUJwY3lCaGMzTnBaMjVsWkNCaGN5QjBhR1VnWUhSb2FYTmdYSEpjYmlBZ0lDQWdLaUFnSUNBZ0lDQWdkbUZzZFdVZ1ptOXlJR1ZoWTJnZ1kyRnNiR0poWTJzdVhISmNiaUFnSUNBZ0tpQkFjbVYwZFhKdWN5QjBhR1VnYm5WdFltVnlJRzltSUhaaGJIVmxjeUIwYUdGMElIZGxjbVVnYzJWdWRDQjBieUIwYUdVZ1kyRnNiR0poWTJzc1hISmNiaUFnSUNBZ0tpQWdJQ0FnSUNBZ2IzSWdkR2hsSUZJZ2RtRnNkV1VnYVdZZ2RHaGxJR05oYkd4aVlXTnJJSEpsZEhWeWJtVmtJSHRpY21WaGF6cFNmUzRnS2k5Y2NseHVJQ0FnSUVKVWNtVmxMbkJ5YjNSdmRIbHdaUzVtYjNKRllXTm9JRDBnWm5WdVkzUnBiMjRnS0dOaGJHeGlZV05yTENCMGFHbHpRWEpuS1NCN1hISmNiaUFnSUNBZ0lDQWdkbUZ5SUY5MGFHbHpJRDBnZEdocGN6dGNjbHh1SUNBZ0lDQWdJQ0JwWmlBb2RHaHBjMEZ5WnlBaFBUMGdkVzVrWldacGJtVmtLVnh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpZV3hzWW1GamF5QTlJR05oYkd4aVlXTnJMbUpwYm1Rb2RHaHBjMEZ5WnlrN1hISmNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlIUm9hWE11Wm05eVJXRmphRkJoYVhJb1puVnVZM1JwYjI0Z0tHc3NJSFlwSUhzZ2NtVjBkWEp1SUdOaGJHeGlZV05yS0hZc0lHc3NJRjkwYUdsektUc2dmU2s3WEhKY2JpQWdJQ0I5TzF4eVhHNGdJQ0FnTHlvcUlGSjFibk1nWVNCbWRXNWpkR2x2YmlCbWIzSWdaV0ZqYUNCclpYa3RkbUZzZFdVZ2NHRnBjaXdnYVc0Z2IzSmtaWElnWm5KdmJTQnpiV0ZzYkdWemRDQjBiMXh5WEc0Z0lDQWdJQ29nSUd4aGNtZGxjM1FnYTJWNUxpQlVhR1VnWTJGc2JHSmhZMnNnWTJGdUlISmxkSFZ5YmlCN1luSmxZV3M2VW4wZ0tIZG9aWEpsSUZJZ2FYTWdZVzU1SUhaaGJIVmxYSEpjYmlBZ0lDQWdLaUFnWlhoalpYQjBJSFZ1WkdWbWFXNWxaQ2tnZEc4Z2MzUnZjQ0JwYlcxbFpHbGhkR1ZzZVNCaGJtUWdjbVYwZFhKdUlGSWdabkp2YlNCbWIzSkZZV05vVUdGcGNpNWNjbHh1SUNBZ0lDQXFJRUJ3WVhKaGJTQnZia1p2ZFc1a0lFRWdablZ1WTNScGIyNGdkR2hoZENCcGN5QmpZV3hzWldRZ1ptOXlJR1ZoWTJnZ2EyVjVMWFpoYkhWbElIQmhhWEl1SUZSb2FYTmNjbHh1SUNBZ0lDQXFJQ0FnSUNBZ0lDQm1kVzVqZEdsdmJpQmpZVzRnY21WMGRYSnVJSHRpY21WaGF6cFNmU0IwYnlCemRHOXdJR1ZoY214NUlIZHBkR2dnY21WemRXeDBJRkl1WEhKY2JpQWdJQ0FnS2lBZ0lDQWdJQ0FnVkdobElISmxZWE52YmlCMGFHRjBJSGx2ZFNCdGRYTjBJSEpsZEhWeWJpQjdZbkpsWVdzNlVuMGdhVzV6ZEdWaFpDQnZaaUJ6YVcxd2JIa2dVbHh5WEc0Z0lDQWdJQ29nSUNBZ0lDQWdJR2wwYzJWc1ppQnBjeUJtYjNJZ1kyOXVjMmx6ZEdWdVkza2dkMmwwYUNCbFpHbDBVbUZ1WjJVb0tTd2dkMmhwWTJnZ1lXeHNiM2R6WEhKY2JpQWdJQ0FnS2lBZ0lDQWdJQ0FnYlhWc2RHbHdiR1VnWVdOMGFXOXVjeXdnYm05MElHcDFjM1FnWW5KbFlXdHBibWN1WEhKY2JpQWdJQ0FnS2lCQWNHRnlZVzBnYVc1cGRHbGhiRU52ZFc1MFpYSWdWR2hwY3lCcGN5QjBhR1VnZG1Gc2RXVWdiMllnZEdobElIUm9hWEprSUdGeVozVnRaVzUwSUc5bVhISmNiaUFnSUNBZ0tpQWdJQ0FnSUNBZ1lHOXVSbTkxYm1SZ0lIUm9aU0JtYVhKemRDQjBhVzFsSUdsMElHbHpJR05oYkd4bFpDNGdWR2hsSUdOdmRXNTBaWElnYVc1amNtVmhjMlZ6WEhKY2JpQWdJQ0FnS2lBZ0lDQWdJQ0FnWW5rZ2IyNWxJR1ZoWTJnZ2RHbHRaU0JnYjI1R2IzVnVaR0FnYVhNZ1kyRnNiR1ZrTGlCRVpXWmhkV3gwSUhaaGJIVmxPaUF3WEhKY2JpQWdJQ0FnS2lCQWNtVjBkWEp1Y3lCMGFHVWdiblZ0WW1WeUlHOW1JSEJoYVhKeklITmxiblFnZEc4Z2RHaGxJR05oYkd4aVlXTnJJQ2h3YkhWeklHbHVhWFJwWVd4RGIzVnVkR1Z5TEZ4eVhHNGdJQ0FnSUNvZ0lDQWdJQ0FnSUdsbUlIbHZkU0J3Y205MmFXUmxaQ0J2Ym1VcExpQkpaaUIwYUdVZ1kyRnNiR0poWTJzZ2NtVjBkWEp1WldRZ2UySnlaV0ZyT2xKOUlIUm9aVzVjY2x4dUlDQWdJQ0FxSUNBZ0lDQWdJQ0IwYUdVZ1VpQjJZV3gxWlNCcGN5QnlaWFIxY201bFpDQnBibk4wWldGa0xpQXFMMXh5WEc0Z0lDQWdRbFJ5WldVdWNISnZkRzkwZVhCbExtWnZja1ZoWTJoUVlXbHlJRDBnWm5WdVkzUnBiMjRnS0dOaGJHeGlZV05yTENCcGJtbDBhV0ZzUTI5MWJuUmxjaWtnZTF4eVhHNGdJQ0FnSUNBZ0lIWmhjaUJzYjNjZ1BTQjBhR2x6TG0xcGJrdGxlU2dwTENCb2FXZG9JRDBnZEdocGN5NXRZWGhMWlhrb0tUdGNjbHh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdkR2hwY3k1bWIzSlNZVzVuWlNoc2IzY3NJR2hwWjJnc0lIUnlkV1VzSUdOaGJHeGlZV05yTENCcGJtbDBhV0ZzUTI5MWJuUmxjaWs3WEhKY2JpQWdJQ0I5TzF4eVhHNGdJQ0FnTHlvcVhISmNiaUFnSUNBZ0tpQkdhVzVrY3lCaElIQmhhWElnYVc0Z2RHaGxJSFJ5WldVZ1lXNWtJSEpsZEhWeWJuTWdkR2hsSUdGemMyOWphV0YwWldRZ2RtRnNkV1V1WEhKY2JpQWdJQ0FnS2lCQWNHRnlZVzBnWkdWbVlYVnNkRlpoYkhWbElHRWdkbUZzZFdVZ2RHOGdjbVYwZFhKdUlHbG1JSFJvWlNCclpYa2dkMkZ6SUc1dmRDQm1iM1Z1WkM1Y2NseHVJQ0FnSUNBcUlFQnlaWFIxY201eklIUm9aU0IyWVd4MVpTd2diM0lnWkdWbVlYVnNkRlpoYkhWbElHbG1JSFJvWlNCclpYa2dkMkZ6SUc1dmRDQm1iM1Z1WkM1Y2NseHVJQ0FnSUNBcUlFQmtaWE5qY21sd2RHbHZiaUJEYjIxd2RYUmhkR2x2Ym1Gc0lHTnZiWEJzWlhocGRIazZJRThvYkc5bklITnBlbVVwWEhKY2JpQWdJQ0FnS2k5Y2NseHVJQ0FnSUVKVWNtVmxMbkJ5YjNSdmRIbHdaUzVuWlhRZ1BTQm1kVzVqZEdsdmJpQW9hMlY1TENCa1pXWmhkV3gwVm1Gc2RXVXBJSHRjY2x4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnZEdocGN5NWZjbTl2ZEM1blpYUW9hMlY1TENCa1pXWmhkV3gwVm1Gc2RXVXNJSFJvYVhNcE8xeHlYRzRnSUNBZ2ZUdGNjbHh1SUNBZ0lDOHFLbHh5WEc0Z0lDQWdJQ29nUVdSa2N5QnZjaUJ2ZG1WeWQzSnBkR1Z6SUdFZ2EyVjVMWFpoYkhWbElIQmhhWElnYVc0Z2RHaGxJRUlySUhSeVpXVXVYSEpjYmlBZ0lDQWdLaUJBY0dGeVlXMGdhMlY1SUhSb1pTQnJaWGtnYVhNZ2RYTmxaQ0IwYnlCa1pYUmxjbTFwYm1VZ2RHaGxJSE52Y25RZ2IzSmtaWElnYjJaY2NseHVJQ0FnSUNBcUlDQWdJQ0FnSUNCa1lYUmhJR2x1SUhSb1pTQjBjbVZsTGx4eVhHNGdJQ0FnSUNvZ1FIQmhjbUZ0SUhaaGJIVmxJR1JoZEdFZ2RHOGdZWE56YjJOcFlYUmxJSGRwZEdnZ2RHaGxJR3RsZVNBb2IzQjBhVzl1WVd3cFhISmNiaUFnSUNBZ0tpQkFjR0Z5WVcwZ2IzWmxjbmR5YVhSbElGZG9aWFJvWlhJZ2RHOGdiM1psY25keWFYUmxJR0Z1SUdWNGFYTjBhVzVuSUd0bGVTMTJZV3gxWlNCd1lXbHlYSEpjYmlBZ0lDQWdLaUFnSUNBZ0lDQWdLR1JsWm1GMWJIUTZJSFJ5ZFdVcExpQkpaaUIwYUdseklHbHpJR1poYkhObElHRnVaQ0IwYUdWeVpTQnBjeUJoYmlCbGVHbHpkR2x1WjF4eVhHNGdJQ0FnSUNvZ0lDQWdJQ0FnSUd0bGVTMTJZV3gxWlNCd1lXbHlJSFJvWlc0Z2RHaHBjeUJ0WlhSb2IyUWdhR0Z6SUc1dklHVm1abVZqZEM1Y2NseHVJQ0FnSUNBcUlFQnlaWFIxY201eklIUnlkV1VnYVdZZ1lTQnVaWGNnYTJWNUxYWmhiSFZsSUhCaGFYSWdkMkZ6SUdGa1pHVmtMbHh5WEc0Z0lDQWdJQ29nUUdSbGMyTnlhWEIwYVc5dUlFTnZiWEIxZEdGMGFXOXVZV3dnWTI5dGNHeGxlR2wwZVRvZ1R5aHNiMmNnYzJsNlpTbGNjbHh1SUNBZ0lDQXFJRTV2ZEdVNklIZG9aVzRnYjNabGNuZHlhWFJwYm1jZ1lTQndjbVYyYVc5MWN5QmxiblJ5ZVN3Z2RHaGxJR3RsZVNCcGN5QjFjR1JoZEdWa1hISmNiaUFnSUNBZ0tpQmhjeUIzWld4c0lHRnpJSFJvWlNCMllXeDFaUzRnVkdocGN5Qm9ZWE1nYm04Z1pXWm1aV04wSUhWdWJHVnpjeUIwYUdVZ2JtVjNJR3RsZVZ4eVhHNGdJQ0FnSUNvZ2FHRnpJR1JoZEdFZ2RHaGhkQ0JrYjJWeklHNXZkQ0JoWm1abFkzUWdhWFJ6SUhOdmNuUWdiM0prWlhJdVhISmNiaUFnSUNBZ0tpOWNjbHh1SUNBZ0lFSlVjbVZsTG5CeWIzUnZkSGx3WlM1elpYUWdQU0JtZFc1amRHbHZiaUFvYTJWNUxDQjJZV3gxWlN3Z2IzWmxjbmR5YVhSbEtTQjdYSEpjYmlBZ0lDQWdJQ0FnYVdZZ0tIUm9hWE11WDNKdmIzUXVhWE5UYUdGeVpXUXBYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lIUm9hWE11WDNKdmIzUWdQU0IwYUdsekxsOXliMjkwTG1Oc2IyNWxLQ2s3WEhKY2JpQWdJQ0FnSUNBZ2RtRnlJSEpsYzNWc2RDQTlJSFJvYVhNdVgzSnZiM1F1YzJWMEtHdGxlU3dnZG1Gc2RXVXNJRzkyWlhKM2NtbDBaU3dnZEdocGN5azdYSEpjYmlBZ0lDQWdJQ0FnYVdZZ0tISmxjM1ZzZENBOVBUMGdkSEoxWlNCOGZDQnlaWE4xYkhRZ1BUMDlJR1poYkhObEtWeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnY21WemRXeDBPMXh5WEc0Z0lDQWdJQ0FnSUM4dklGSnZiM1FnYm05a1pTQm9ZWE1nYzNCc2FYUXNJSE52SUdOeVpXRjBaU0JoSUc1bGR5QnliMjkwSUc1dlpHVXVYSEpjYmlBZ0lDQWdJQ0FnZEdocGN5NWZjbTl2ZENBOUlHNWxkeUJDVG05a1pVbHVkR1Z5Ym1Gc0tGdDBhR2x6TGw5eWIyOTBMQ0J5WlhOMWJIUmRLVHRjY2x4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnZEhKMVpUdGNjbHh1SUNBZ0lIMDdYSEpjYmlBZ0lDQXZLaXBjY2x4dUlDQWdJQ0FxSUZKbGRIVnlibk1nZEhKMVpTQnBaaUIwYUdVZ2EyVjVJR1Y0YVhOMGN5QnBiaUIwYUdVZ1Fpc2dkSEpsWlN3Z1ptRnNjMlVnYVdZZ2JtOTBMbHh5WEc0Z0lDQWdJQ29nVlhObElHZGxkQ2dwSUdadmNpQmlaWE4wSUhCbGNtWnZjbTFoYm1ObE95QjFjMlVnYUdGektDa2dhV1lnZVc5MUlHNWxaV1FnZEc5Y2NseHVJQ0FnSUNBcUlHUnBjM1JwYm1kMWFYTm9JR0psZEhkbFpXNGdYQ0oxYm1SbFptbHVaV1FnZG1Gc2RXVmNJaUJoYm1RZ1hDSnJaWGtnYm05MElIQnlaWE5sYm5SY0lpNWNjbHh1SUNBZ0lDQXFJRUJ3WVhKaGJTQnJaWGtnUzJWNUlIUnZJR1JsZEdWamRGeHlYRzRnSUNBZ0lDb2dRR1JsYzJOeWFYQjBhVzl1SUVOdmJYQjFkR0YwYVc5dVlXd2dZMjl0Y0d4bGVHbDBlVG9nVHloc2IyY2djMmw2WlNsY2NseHVJQ0FnSUNBcUwxeHlYRzRnSUNBZ1FsUnlaV1V1Y0hKdmRHOTBlWEJsTG1oaGN5QTlJR1oxYm1OMGFXOXVJQ2hyWlhrcElIdGNjbHh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdkR2hwY3k1bWIzSlNZVzVuWlNoclpYa3NJR3RsZVN3Z2RISjFaU3dnZFc1a1pXWnBibVZrS1NBaFBUMGdNRHRjY2x4dUlDQWdJSDA3WEhKY2JpQWdJQ0F2S2lwY2NseHVJQ0FnSUNBcUlGSmxiVzkyWlhNZ1lTQnphVzVuYkdVZ2EyVjVMWFpoYkhWbElIQmhhWElnWm5KdmJTQjBhR1VnUWlzZ2RISmxaUzVjY2x4dUlDQWdJQ0FxSUVCd1lYSmhiU0JyWlhrZ1MyVjVJSFJ2SUdacGJtUmNjbHh1SUNBZ0lDQXFJRUJ5WlhSMWNtNXpJSFJ5ZFdVZ2FXWWdZU0J3WVdseUlIZGhjeUJtYjNWdVpDQmhibVFnY21WdGIzWmxaQ3dnWm1Gc2MyVWdiM1JvWlhKM2FYTmxMbHh5WEc0Z0lDQWdJQ29nUUdSbGMyTnlhWEIwYVc5dUlFTnZiWEIxZEdGMGFXOXVZV3dnWTI5dGNHeGxlR2wwZVRvZ1R5aHNiMmNnYzJsNlpTbGNjbHh1SUNBZ0lDQXFMMXh5WEc0Z0lDQWdRbFJ5WldVdWNISnZkRzkwZVhCbExtUmxiR1YwWlNBOUlHWjFibU4wYVc5dUlDaHJaWGtwSUh0Y2NseHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2RHaHBjeTVsWkdsMFVtRnVaMlVvYTJWNUxDQnJaWGtzSUhSeWRXVXNJRVJsYkdWMFpWSmhibWRsS1NBaFBUMGdNRHRjY2x4dUlDQWdJSDA3WEhKY2JpQWdJQ0JDVkhKbFpTNXdjbTkwYjNSNWNHVXVkMmwwYUNBOUlHWjFibU4wYVc5dUlDaHJaWGtzSUhaaGJIVmxMQ0J2ZG1WeWQzSnBkR1VwSUh0Y2NseHVJQ0FnSUNBZ0lDQjJZWElnYm5VZ1BTQjBhR2x6TG1Oc2IyNWxLQ2s3WEhKY2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUc1MUxuTmxkQ2hyWlhrc0lIWmhiSFZsTENCdmRtVnlkM0pwZEdVcElIeDhJRzkyWlhKM2NtbDBaU0EvSUc1MUlEb2dkR2hwY3p0Y2NseHVJQ0FnSUgwN1hISmNiaUFnSUNBdktpb2dVbVYwZFhKdWN5QmhJR052Y0hrZ2IyWWdkR2hsSUhSeVpXVWdkMmwwYUNCMGFHVWdjM0JsWTJsbWFXVmtJR3RsZVMxMllXeDFaU0J3WVdseWN5QnpaWFF1SUNvdlhISmNiaUFnSUNCQ1ZISmxaUzV3Y205MGIzUjVjR1V1ZDJsMGFGQmhhWEp6SUQwZ1puVnVZM1JwYjI0Z0tIQmhhWEp6TENCdmRtVnlkM0pwZEdVcElIdGNjbHh1SUNBZ0lDQWdJQ0IyWVhJZ2JuVWdQU0IwYUdsekxtTnNiMjVsS0NrN1hISmNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlHNTFMbk5sZEZCaGFYSnpLSEJoYVhKekxDQnZkbVZ5ZDNKcGRHVXBJQ0U5UFNBd0lIeDhJRzkyWlhKM2NtbDBaU0EvSUc1MUlEb2dkR2hwY3p0Y2NseHVJQ0FnSUgwN1hISmNiaUFnSUNBdktpb2dVbVYwZFhKdWN5QmhJR052Y0hrZ2IyWWdkR2hsSUhSeVpXVWdkMmwwYUNCMGFHVWdjM0JsWTJsbWFXVmtJR3RsZVhNZ2NISmxjMlZ1ZEM1Y2NseHVJQ0FnSUNBcUlDQkFjR0Z5WVcwZ2EyVjVjeUJVYUdVZ2EyVjVjeUIwYnlCaFpHUXVJRWxtSUdFZ2EyVjVJR2x6SUdGc2NtVmhaSGtnY0hKbGMyVnVkQ0JwYmlCMGFHVWdkSEpsWlN4Y2NseHVJQ0FnSUNBcUlDQWdJQ0FnSUNBZ2JtVnBkR2hsY2lCMGFHVWdaWGhwYzNScGJtY2dhMlY1SUc1dmNpQjBhR1VnWlhocGMzUnBibWNnZG1Gc2RXVWdhWE1nYlc5a2FXWnBaV1F1WEhKY2JpQWdJQ0FnS2lBZ1FIQmhjbUZ0SUhKbGRIVnlibFJvYVhOSlpsVnVZMmhoYm1kbFpDQnBaaUIwY25WbExDQnlaWFIxY201eklIUm9hWE1nYVdZZ1lXeHNJR3RsZVhNZ1lXeHlaV0ZrZVZ4eVhHNGdJQ0FnSUNvZ0lHVjRhWE4wWldRdUlGQmxjbVp2Y20xaGJtTmxJRzV2ZEdVNklHUjFaU0IwYnlCMGFHVWdZWEpqYUdsMFpXTjBkWEpsSUc5bUlIUm9hWE1nWTJ4aGMzTXNJR0ZzYkZ4eVhHNGdJQ0FnSUNvZ0lHNXZaR1VvY3lrZ2JHVmhaR2x1WnlCMGJ5QmxlR2x6ZEdsdVp5QnJaWGx6SUdGeVpTQmpiRzl1WldRZ1pYWmxiaUJwWmlCMGFHVWdZMjlzYkdWamRHbHZiaUJwYzF4eVhHNGdJQ0FnSUNvZ0lIVnNkR2x0WVhSbGJIa2dkVzVqYUdGdVoyVmtMbHh5WEc0Z0lDQWdLaTljY2x4dUlDQWdJRUpVY21WbExuQnliM1J2ZEhsd1pTNTNhWFJvUzJWNWN5QTlJR1oxYm1OMGFXOXVJQ2hyWlhsekxDQnlaWFIxY201VWFHbHpTV1pWYm1Ob1lXNW5aV1FwSUh0Y2NseHVJQ0FnSUNBZ0lDQjJZWElnYm5VZ1BTQjBhR2x6TG1Oc2IyNWxLQ2tzSUdOb1lXNW5aV1FnUFNCbVlXeHpaVHRjY2x4dUlDQWdJQ0FnSUNCbWIzSWdLSFpoY2lCcElEMGdNRHNnYVNBOElHdGxlWE11YkdWdVozUm9PeUJwS3lzcFhISmNiaUFnSUNBZ0lDQWdJQ0FnSUdOb1lXNW5aV1FnUFNCdWRTNXpaWFFvYTJWNWMxdHBYU3dnZFc1a1pXWnBibVZrTENCbVlXeHpaU2tnZkh3Z1kyaGhibWRsWkR0Y2NseHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2NtVjBkWEp1VkdocGMwbG1WVzVqYUdGdVoyVmtJQ1ltSUNGamFHRnVaMlZrSUQ4Z2RHaHBjeUE2SUc1MU8xeHlYRzRnSUNBZ2ZUdGNjbHh1SUNBZ0lDOHFLaUJTWlhSMWNtNXpJR0VnWTI5d2VTQnZaaUIwYUdVZ2RISmxaU0IzYVhSb0lIUm9aU0J6Y0dWamFXWnBaV1FnYTJWNUlISmxiVzkyWldRdVhISmNiaUFnSUNBZ0tpQkFjR0Z5WVcwZ2NtVjBkWEp1VkdocGMwbG1WVzVqYUdGdVoyVmtJR2xtSUhSeWRXVXNJSEpsZEhWeWJuTWdkR2hwY3lCcFppQjBhR1VnYTJWNUlHUnBaRzRuZENCbGVHbHpkQzVjY2x4dUlDQWdJQ0FxSUNCUVpYSm1iM0p0WVc1alpTQnViM1JsT2lCa2RXVWdkRzhnZEdobElHRnlZMmhwZEdWamRIVnlaU0J2WmlCMGFHbHpJR05zWVhOekxDQnViMlJsS0hNcElHeGxZV1JwYm1kY2NseHVJQ0FnSUNBcUlDQjBieUIzYUdWeVpTQjBhR1VnYTJWNUlIZHZkV3hrSUdoaGRtVWdZbVZsYmlCemRHOXlaV1FnWVhKbElHTnNiMjVsWkNCbGRtVnVJSGRvWlc0Z2RHaGxJR3RsZVZ4eVhHNGdJQ0FnSUNvZ0lIUjFjbTV6SUc5MWRDQnViM1FnZEc4Z1pYaHBjM1FnWVc1a0lIUm9aU0JqYjJ4c1pXTjBhVzl1SUdseklIVnVZMmhoYm1kbFpDNWNjbHh1SUNBZ0lDQXFMMXh5WEc0Z0lDQWdRbFJ5WldVdWNISnZkRzkwZVhCbExuZHBkR2h2ZFhRZ1BTQm1kVzVqZEdsdmJpQW9hMlY1TENCeVpYUjFjbTVVYUdselNXWlZibU5vWVc1blpXUXBJSHRjY2x4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnZEdocGN5NTNhWFJvYjNWMFVtRnVaMlVvYTJWNUxDQnJaWGtzSUhSeWRXVXNJSEpsZEhWeWJsUm9hWE5KWmxWdVkyaGhibWRsWkNrN1hISmNiaUFnSUNCOU8xeHlYRzRnSUNBZ0x5b3FJRkpsZEhWeWJuTWdZU0JqYjNCNUlHOW1JSFJvWlNCMGNtVmxJSGRwZEdnZ2RHaGxJSE53WldOcFptbGxaQ0JyWlhseklISmxiVzkyWldRdVhISmNiaUFnSUNBZ0tpQkFjR0Z5WVcwZ2NtVjBkWEp1VkdocGMwbG1WVzVqYUdGdVoyVmtJR2xtSUhSeWRXVXNJSEpsZEhWeWJuTWdkR2hwY3lCcFppQnViMjVsSUc5bUlIUm9aU0JyWlhselhISmNiaUFnSUNBZ0tpQWdaWGhwYzNSbFpDNGdVR1Z5Wm05eWJXRnVZMlVnYm05MFpUb2daSFZsSUhSdklIUm9aU0JoY21Ob2FYUmxZM1IxY21VZ2IyWWdkR2hwY3lCamJHRnpjeXhjY2x4dUlDQWdJQ0FxSUNCdWIyUmxLSE1wSUd4bFlXUnBibWNnZEc4Z2QyaGxjbVVnZEdobElHdGxlU0IzYjNWc1pDQm9ZWFpsSUdKbFpXNGdjM1J2Y21Wa0lHRnlaU0JqYkc5dVpXUmNjbHh1SUNBZ0lDQXFJQ0JsZG1WdUlIZG9aVzRnZEdobElHdGxlU0IwZFhKdWN5QnZkWFFnYm05MElIUnZJR1Y0YVhOMExseHlYRzRnSUNBZ0lDb3ZYSEpjYmlBZ0lDQkNWSEpsWlM1d2NtOTBiM1I1Y0dVdWQybDBhRzkxZEV0bGVYTWdQU0JtZFc1amRHbHZiaUFvYTJWNWN5d2djbVYwZFhKdVZHaHBjMGxtVlc1amFHRnVaMlZrS1NCN1hISmNiaUFnSUNBZ0lDQWdkbUZ5SUc1MUlEMGdkR2hwY3k1amJHOXVaU2dwTzF4eVhHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCdWRTNWtaV3hsZEdWTFpYbHpLR3RsZVhNcElIeDhJQ0Z5WlhSMWNtNVVhR2x6U1daVmJtTm9ZVzVuWldRZ1B5QnVkU0E2SUhSb2FYTTdYSEpjYmlBZ0lDQjlPMXh5WEc0Z0lDQWdMeW9xSUZKbGRIVnlibk1nWVNCamIzQjVJRzltSUhSb1pTQjBjbVZsSUhkcGRHZ2dkR2hsSUhOd1pXTnBabWxsWkNCeVlXNW5aU0J2WmlCclpYbHpJSEpsYlc5MlpXUXVJQ292WEhKY2JpQWdJQ0JDVkhKbFpTNXdjbTkwYjNSNWNHVXVkMmwwYUc5MWRGSmhibWRsSUQwZ1puVnVZM1JwYjI0Z0tHeHZkeXdnYUdsbmFDd2dhVzVqYkhWa1pVaHBaMmdzSUhKbGRIVnlibFJvYVhOSlpsVnVZMmhoYm1kbFpDa2dlMXh5WEc0Z0lDQWdJQ0FnSUhaaGNpQnVkU0E5SUhSb2FYTXVZMnh2Ym1Vb0tUdGNjbHh1SUNBZ0lDQWdJQ0JwWmlBb2JuVXVaR1ZzWlhSbFVtRnVaMlVvYkc5M0xDQm9hV2RvTENCcGJtTnNkV1JsU0dsbmFDa2dQVDA5SURBZ0ppWWdjbVYwZFhKdVZHaHBjMGxtVlc1amFHRnVaMlZrS1Z4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdkR2hwY3p0Y2NseHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2JuVTdYSEpjYmlBZ0lDQjlPMXh5WEc0Z0lDQWdMeW9xSUZKbGRIVnlibk1nWVNCamIzQjVJRzltSUhSb1pTQjBjbVZsSUhkcGRHZ2djR0ZwY25NZ2NtVnRiM1psWkNCM2FHVnVaWFpsY2lCMGFHVWdZMkZzYkdKaFkydGNjbHh1SUNBZ0lDQXFJQ0JtZFc1amRHbHZiaUJ5WlhSMWNtNXpJR1poYkhObExpQmdkMmhsY21Vb0tXQWdhWE1nWVNCemVXNXZibmx0SUdadmNpQjBhR2x6SUcxbGRHaHZaQzRnS2k5Y2NseHVJQ0FnSUVKVWNtVmxMbkJ5YjNSdmRIbHdaUzVtYVd4MFpYSWdQU0JtZFc1amRHbHZiaUFvWTJGc2JHSmhZMnNzSUhKbGRIVnlibFJvYVhOSlpsVnVZMmhoYm1kbFpDa2dlMXh5WEc0Z0lDQWdJQ0FnSUhaaGNpQnVkU0E5SUhSb2FYTXVaM0psWldSNVEyeHZibVVvS1R0Y2NseHVJQ0FnSUNBZ0lDQjJZWElnWkdWc08xeHlYRzRnSUNBZ0lDQWdJRzUxTG1Wa2FYUkJiR3dvWm5WdVkzUnBiMjRnS0dzc0lIWXNJR2twSUh0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tDRmpZV3hzWW1GamF5aHJMQ0IyTENCcEtTbGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQmtaV3dnUFNCRVpXeGxkR1U3WEhKY2JpQWdJQ0FnSUNBZ2ZTazdYSEpjYmlBZ0lDQWdJQ0FnYVdZZ0tDRmtaV3dnSmlZZ2NtVjBkWEp1VkdocGMwbG1WVzVqYUdGdVoyVmtLVnh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2RHaHBjenRjY2x4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnYm5VN1hISmNiaUFnSUNCOU8xeHlYRzRnSUNBZ0x5b3FJRkpsZEhWeWJuTWdZU0JqYjNCNUlHOW1JSFJvWlNCMGNtVmxJSGRwZEdnZ1lXeHNJSFpoYkhWbGN5QmhiSFJsY21Wa0lHSjVJR0VnWTJGc2JHSmhZMnNnWm5WdVkzUnBiMjR1SUNvdlhISmNiaUFnSUNCQ1ZISmxaUzV3Y205MGIzUjVjR1V1YldGd1ZtRnNkV1Z6SUQwZ1puVnVZM1JwYjI0Z0tHTmhiR3hpWVdOcktTQjdYSEpjYmlBZ0lDQWdJQ0FnZG1GeUlIUnRjQ0E5SUh0OU8xeHlYRzRnSUNBZ0lDQWdJSFpoY2lCdWRTQTlJSFJvYVhNdVozSmxaV1I1UTJ4dmJtVW9LVHRjY2x4dUlDQWdJQ0FnSUNCdWRTNWxaR2wwUVd4c0tHWjFibU4wYVc5dUlDaHJMQ0IyTENCcEtTQjdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCMGJYQXVkbUZzZFdVZ1BTQmpZV3hzWW1GamF5aDJMQ0JyTENCcEtTd2dkRzF3TzF4eVhHNGdJQ0FnSUNBZ0lIMHBPMXh5WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJ1ZFR0Y2NseHVJQ0FnSUgwN1hISmNiaUFnSUNCQ1ZISmxaUzV3Y205MGIzUjVjR1V1Y21Wa2RXTmxJRDBnWm5WdVkzUnBiMjRnS0dOaGJHeGlZV05yTENCcGJtbDBhV0ZzVm1Gc2RXVXBJSHRjY2x4dUlDQWdJQ0FnSUNCMllYSWdhU0E5SURBc0lIQWdQU0JwYm1sMGFXRnNWbUZzZFdVN1hISmNiaUFnSUNBZ0lDQWdkbUZ5SUdsMElEMGdkR2hwY3k1bGJuUnlhV1Z6S0hSb2FYTXViV2x1UzJWNUtDa3NJRkpsZFhObFpFRnljbUY1S1N3Z2JtVjRkRHRjY2x4dUlDQWdJQ0FnSUNCM2FHbHNaU0FvSVNodVpYaDBJRDBnYVhRdWJtVjRkQ2dwS1M1a2IyNWxLVnh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQndJRDBnWTJGc2JHSmhZMnNvY0N3Z2JtVjRkQzUyWVd4MVpTd2dhU3NyTENCMGFHbHpLVHRjY2x4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnY0R0Y2NseHVJQ0FnSUgwN1hISmNiaUFnSUNBdkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMMXh5WEc0Z0lDQWdMeThnU1hSbGNtRjBiM0lnYldWMGFHOWtjeUF2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk5Y2NseHVJQ0FnSUM4cUtpQlNaWFIxY201eklHRnVJR2wwWlhKaGRHOXlJSFJvWVhRZ2NISnZkbWxrWlhNZ2FYUmxiWE1nYVc0Z2IzSmtaWElnS0dGelkyVnVaR2x1WnlCdmNtUmxjaUJwWmx4eVhHNGdJQ0FnSUNvZ0lIUm9aU0JqYjJ4c1pXTjBhVzl1SjNNZ1kyOXRjR0Z5WVhSdmNpQjFjMlZ6SUdGelkyVnVaR2x1WnlCdmNtUmxjaXdnWVhNZ2FYTWdkR2hsSUdSbFptRjFiSFF1S1Z4eVhHNGdJQ0FnSUNvZ0lFQndZWEpoYlNCc2IzZGxjM1JMWlhrZ1JtbHljM1FnYTJWNUlIUnZJR0psSUdsMFpYSmhkR1ZrTENCdmNpQjFibVJsWm1sdVpXUWdkRzhnYzNSaGNuUWdZWFJjY2x4dUlDQWdJQ0FxSUNBZ0lDQWdJQ0FnYldsdVMyVjVLQ2t1SUVsbUlIUm9aU0J6Y0dWamFXWnBaV1FnYTJWNUlHUnZaWE51SjNRZ1pYaHBjM1FnZEdobGJpQnBkR1Z5WVhScGIyNWNjbHh1SUNBZ0lDQXFJQ0FnSUNBZ0lDQWdjM1JoY25SeklHRjBJSFJvWlNCdVpYaDBJR2hwWjJobGNpQnJaWGtnS0dGalkyOXlaR2x1WnlCMGJ5QjBhR1VnWTI5dGNHRnlZWFJ2Y2lrdVhISmNiaUFnSUNBZ0tpQWdRSEJoY21GdElISmxkWE5sWkVGeWNtRjVJRTl3ZEdsdmJtRnNJR0Z5Y21GNUlIVnpaV1FnY21Wd1pXRjBaV1JzZVNCMGJ5QnpkRzl5WlNCclpYa3RkbUZzZFdWY2NseHVJQ0FnSUNBcUlDQWdJQ0FnSUNBZ2NHRnBjbk1zSUhSdklHRjJiMmxrSUdOeVpXRjBhVzVuSUdFZ2JtVjNJR0Z5Y21GNUlHOXVJR1YyWlhKNUlHbDBaWEpoZEdsdmJpNWNjbHh1SUNBZ0lDQXFMMXh5WEc0Z0lDQWdRbFJ5WldVdWNISnZkRzkwZVhCbExtVnVkSEpwWlhNZ1BTQm1kVzVqZEdsdmJpQW9iRzkzWlhOMFMyVjVMQ0J5WlhWelpXUkJjbkpoZVNrZ2UxeHlYRzRnSUNBZ0lDQWdJSFpoY2lCcGJtWnZJRDBnZEdocGN5NW1hVzVrVUdGMGFDaHNiM2RsYzNSTFpYa3BPMXh5WEc0Z0lDQWdJQ0FnSUdsbUlDaHBibVp2SUQwOVBTQjFibVJsWm1sdVpXUXBYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCcGRHVnlZWFJ2Y2lncE8xeHlYRzRnSUNBZ0lDQWdJSFpoY2lCdWIyUmxjWFZsZFdVZ1BTQnBibVp2TG01dlpHVnhkV1YxWlN3Z2JtOWtaV2x1WkdWNElEMGdhVzVtYnk1dWIyUmxhVzVrWlhnc0lHeGxZV1lnUFNCcGJtWnZMbXhsWVdZN1hISmNiaUFnSUNBZ0lDQWdkbUZ5SUhOMFlYUmxJRDBnY21WMWMyVmtRWEp5WVhrZ0lUMDlJSFZ1WkdWbWFXNWxaQ0EvSURFZ09pQXdPMXh5WEc0Z0lDQWdJQ0FnSUhaaGNpQnBJRDBnS0d4dmQyVnpkRXRsZVNBOVBUMGdkVzVrWldacGJtVmtJRDhnTFRFZ09pQnNaV0ZtTG1sdVpHVjRUMllvYkc5M1pYTjBTMlY1TENBd0xDQjBhR2x6TGw5amIyMXdZWEpsS1NBdElERXBPMXh5WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJwZEdWeVlYUnZjaWhtZFc1amRHbHZiaUFvS1NCN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUdwMWJYQTZJR1p2Y2lBb096c3BJSHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhOM2FYUmphQ0FvYzNSaGRHVXBJSHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmpZWE5sSURBNlhISmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2dySzJrZ1BDQnNaV0ZtTG10bGVYTXViR1Z1WjNSb0tWeHlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJSHNnWkc5dVpUb2dabUZzYzJVc0lIWmhiSFZsT2lCYmJHVmhaaTVyWlhselcybGRMQ0JzWldGbUxuWmhiSFZsYzF0cFhWMGdmVHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYzNSaGRHVWdQU0F5TzF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCamIyNTBhVzUxWlR0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JqWVhObElERTZYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNncksya2dQQ0JzWldGbUxtdGxlWE11YkdWdVozUm9LU0I3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWFZ6WldSQmNuSmhlVnN3WFNBOUlHeGxZV1l1YTJWNWMxdHBYU3dnY21WMWMyVmtRWEp5WVhsYk1WMGdQU0JzWldGbUxuWmhiSFZsYzF0cFhUdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUI3SUdSdmJtVTZJR1poYkhObExDQjJZV3gxWlRvZ2NtVjFjMlZrUVhKeVlYa2dmVHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZlZ4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCemRHRjBaU0E5SURJN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWTJGelpTQXlPbHh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0F2THlCQlpIWmhibU5sSUhSdklIUm9aU0J1WlhoMElHeGxZV1lnYm05a1pWeHlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQm1iM0lnS0haaGNpQnNaWFpsYkNBOUlDMHhPenNwSUh0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNncksyeGxkbVZzSUQ0OUlHNXZaR1Z4ZFdWMVpTNXNaVzVuZEdncElIdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnpkR0YwWlNBOUlETTdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZMjl1ZEdsdWRXVWdhblZ0Y0R0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDFjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2dySzI1dlpHVnBibVJsZUZ0c1pYWmxiRjBnUENCdWIyUmxjWFZsZFdWYmJHVjJaV3hkTG14bGJtZDBhQ2xjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JpY21WaGF6dGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JtYjNJZ0tEc2diR1YyWld3Z1BpQXdPeUJzWlhabGJDMHRLU0I3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnViMlJsY1hWbGRXVmJiR1YyWld3Z0xTQXhYU0E5SUc1dlpHVnhkV1YxWlZ0c1pYWmxiRjFiYm05a1pXbHVaR1Y0VzJ4bGRtVnNYVjB1WTJocGJHUnlaVzQ3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnViMlJsYVc1a1pYaGJiR1YyWld3Z0xTQXhYU0E5SURBN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIMWNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdiR1ZoWmlBOUlHNXZaR1Z4ZFdWMVpWc3dYVnR1YjJSbGFXNWtaWGhiTUYxZE8xeHlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBJRDBnTFRFN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lITjBZWFJsSUQwZ2NtVjFjMlZrUVhKeVlYa2dJVDA5SUhWdVpHVm1hVzVsWkNBL0lERWdPaUF3TzF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCamIyNTBhVzUxWlR0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JqWVhObElETTZYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQjdJR1J2Ym1VNklIUnlkV1VzSUhaaGJIVmxPaUIxYm1SbFptbHVaV1FnZlR0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIMWNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ2ZWeHlYRzRnSUNBZ0lDQWdJSDBwTzF4eVhHNGdJQ0FnZlR0Y2NseHVJQ0FnSUM4cUtpQlNaWFIxY201eklHRnVJR2wwWlhKaGRHOXlJSFJvWVhRZ2NISnZkbWxrWlhNZ2FYUmxiWE1nYVc0Z2NtVjJaWEp6WldRZ2IzSmtaWEl1WEhKY2JpQWdJQ0FnS2lBZ1FIQmhjbUZ0SUdocFoyaGxjM1JMWlhrZ1MyVjVJR0YwSUhkb2FXTm9JSFJ2SUhOMFlYSjBJR2wwWlhKaGRHbHVaeXdnYjNJZ2RXNWtaV1pwYm1Wa0lIUnZYSEpjYmlBZ0lDQWdLaUFnSUNBZ0lDQWdJSE4wWVhKMElHRjBJRzFoZUV0bGVTZ3BMaUJKWmlCMGFHVWdjM0JsWTJsbWFXVmtJR3RsZVNCa2IyVnpiaWQwSUdWNGFYTjBJSFJvWlc0Z2FYUmxjbUYwYVc5dVhISmNiaUFnSUNBZ0tpQWdJQ0FnSUNBZ0lITjBZWEowY3lCaGRDQjBhR1VnYm1WNGRDQnNiM2RsY2lCclpYa2dLR0ZqWTI5eVpHbHVaeUIwYnlCMGFHVWdZMjl0Y0dGeVlYUnZjaWt1WEhKY2JpQWdJQ0FnS2lBZ1FIQmhjbUZ0SUhKbGRYTmxaRUZ5Y21GNUlFOXdkR2x2Ym1Gc0lHRnljbUY1SUhWelpXUWdjbVZ3WldGMFpXUnNlU0IwYnlCemRHOXlaU0JyWlhrdGRtRnNkV1ZjY2x4dUlDQWdJQ0FxSUNBZ0lDQWdJQ0FnY0dGcGNuTXNJSFJ2SUdGMmIybGtJR055WldGMGFXNW5JR0VnYm1WM0lHRnljbUY1SUc5dUlHVjJaWEo1SUdsMFpYSmhkR2x2Ymk1Y2NseHVJQ0FnSUNBcUlDQkFjR0Z5WVcwZ2MydHBjRWhwWjJobGMzUWdTV1ptSUhSb2FYTWdabXhoWnlCcGN5QjBjblZsSUdGdVpDQjBhR1VnYUdsbmFHVnpkRXRsZVNCbGVHbHpkSE1nYVc0Z2RHaGxYSEpjYmlBZ0lDQWdLaUFnSUNBZ0lDQWdJR052Ykd4bFkzUnBiMjRzSUhSb1pTQndZV2x5SUcxaGRHTm9hVzVuSUdocFoyaGxjM1JMWlhrZ2FYTWdjMnRwY0hCbFpDd2dibTkwSUdsMFpYSmhkR1ZrTGx4eVhHNGdJQ0FnSUNvdlhISmNiaUFnSUNCQ1ZISmxaUzV3Y205MGIzUjVjR1V1Wlc1MGNtbGxjMUpsZG1WeWMyVmtJRDBnWm5WdVkzUnBiMjRnS0docFoyaGxjM1JMWlhrc0lISmxkWE5sWkVGeWNtRjVMQ0J6YTJsd1NHbG5hR1Z6ZENrZ2UxeHlYRzRnSUNBZ0lDQWdJR2xtSUNob2FXZG9aWE4wUzJWNUlEMDlQU0IxYm1SbFptbHVaV1FwSUh0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnYUdsbmFHVnpkRXRsZVNBOUlIUm9hWE11YldGNFMyVjVLQ2s3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJSE5yYVhCSWFXZG9aWE4wSUQwZ2RXNWtaV1pwYm1Wa08xeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCcFppQW9hR2xuYUdWemRFdGxlU0E5UFQwZ2RXNWtaV1pwYm1Wa0tWeHlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlHbDBaWEpoZEc5eUtDazdJQzh2SUdOdmJHeGxZM1JwYjI0Z2FYTWdaVzF3ZEhsY2NseHVJQ0FnSUNBZ0lDQjlYSEpjYmlBZ0lDQWdJQ0FnZG1GeUlGOWhJRDBnZEdocGN5NW1hVzVrVUdGMGFDaG9hV2RvWlhOMFMyVjVLU0I4ZkNCMGFHbHpMbVpwYm1SUVlYUm9LSFJvYVhNdWJXRjRTMlY1S0NrcExDQnViMlJsY1hWbGRXVWdQU0JmWVM1dWIyUmxjWFZsZFdVc0lHNXZaR1ZwYm1SbGVDQTlJRjloTG01dlpHVnBibVJsZUN3Z2JHVmhaaUE5SUY5aExteGxZV1k3WEhKY2JpQWdJQ0FnSUNBZ1kyaGxZMnNvSVc1dlpHVnhkV1YxWlZzd1hTQjhmQ0JzWldGbUlEMDlQU0J1YjJSbGNYVmxkV1ZiTUYxYmJtOWtaV2x1WkdWNFd6QmRYU3dnWENKM1lYUWhYQ0lwTzF4eVhHNGdJQ0FnSUNBZ0lIWmhjaUJwSUQwZ2JHVmhaaTVwYm1SbGVFOW1LR2hwWjJobGMzUkxaWGtzSURBc0lIUm9hWE11WDJOdmJYQmhjbVVwTzF4eVhHNGdJQ0FnSUNBZ0lHbG1JQ2doYzJ0cGNFaHBaMmhsYzNRZ0ppWWdhU0E4SUd4bFlXWXVhMlY1Y3k1c1pXNW5kR2dnSmlZZ2RHaHBjeTVmWTI5dGNHRnlaU2hzWldGbUxtdGxlWE5iYVYwc0lHaHBaMmhsYzNSTFpYa3BJRHc5SURBcFhISmNiaUFnSUNBZ0lDQWdJQ0FnSUdrckt6dGNjbHh1SUNBZ0lDQWdJQ0IyWVhJZ2MzUmhkR1VnUFNCeVpYVnpaV1JCY25KaGVTQWhQVDBnZFc1a1pXWnBibVZrSUQ4Z01TQTZJREE3WEhKY2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUdsMFpYSmhkRzl5S0daMWJtTjBhVzl1SUNncElIdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ2FuVnRjRG9nWm05eUlDZzdPeWtnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2MzZHBkR05vSUNoemRHRjBaU2tnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR05oYzJVZ01EcGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhV1lnS0MwdGFTQStQU0F3S1Z4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlIc2daRzl1WlRvZ1ptRnNjMlVzSUhaaGJIVmxPaUJiYkdWaFppNXJaWGx6VzJsZExDQnNaV0ZtTG5aaGJIVmxjMXRwWFYwZ2ZUdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjM1JoZEdVZ1BTQXlPMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JqYjI1MGFXNTFaVHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmpZWE5sSURFNlhISmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2d0TFdrZ1BqMGdNQ2tnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVYxYzJWa1FYSnlZWGxiTUYwZ1BTQnNaV0ZtTG10bGVYTmJhVjBzSUhKbGRYTmxaRUZ5Y21GNVd6RmRJRDBnYkdWaFppNTJZV3gxWlhOYmFWMDdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnZXlCa2IyNWxPaUJtWVd4elpTd2dkbUZzZFdVNklISmxkWE5sWkVGeWNtRjVJSDA3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUgxY2NseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2MzUmhkR1VnUFNBeU8xeHlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdOaGMyVWdNanBjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnTHk4Z1FXUjJZVzVqWlNCMGJ5QjBhR1VnYm1WNGRDQnNaV0ZtSUc1dlpHVmNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdabTl5SUNoMllYSWdiR1YyWld3Z1BTQXRNVHM3S1NCN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb0t5dHNaWFpsYkNBK1BTQnViMlJsY1hWbGRXVXViR1Z1WjNSb0tTQjdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjM1JoZEdVZ1BTQXpPMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR052Ym5ScGJuVmxJR3AxYlhBN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBaaUFvTFMxdWIyUmxhVzVrWlhoYmJHVjJaV3hkSUQ0OUlEQXBYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZbkpsWVdzN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIMWNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdabTl5SUNnN0lHeGxkbVZzSUQ0Z01Ec2diR1YyWld3dExTa2dlMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2JtOWtaWEYxWlhWbFcyeGxkbVZzSUMwZ01WMGdQU0J1YjJSbGNYVmxkV1ZiYkdWMlpXeGRXMjV2WkdWcGJtUmxlRnRzWlhabGJGMWRMbU5vYVd4a2NtVnVPMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2JtOWtaV2x1WkdWNFcyeGxkbVZzSUMwZ01WMGdQU0J1YjJSbGNYVmxkV1ZiYkdWMlpXd2dMU0F4WFM1c1pXNW5kR2dnTFNBeE8xeHlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR3hsWVdZZ1BTQnViMlJsY1hWbGRXVmJNRjFiYm05a1pXbHVaR1Y0V3pCZFhUdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhU0E5SUd4bFlXWXVhMlY1Y3k1c1pXNW5kR2c3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhOMFlYUmxJRDBnY21WMWMyVmtRWEp5WVhrZ0lUMDlJSFZ1WkdWbWFXNWxaQ0EvSURFZ09pQXdPMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JqYjI1MGFXNTFaVHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmpZWE5sSURNNlhISmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCN0lHUnZibVU2SUhSeWRXVXNJSFpoYkhWbE9pQjFibVJsWm1sdVpXUWdmVHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUgxY2NseHVJQ0FnSUNBZ0lDQWdJQ0FnZlZ4eVhHNGdJQ0FnSUNBZ0lIMHBPMXh5WEc0Z0lDQWdmVHRjY2x4dUlDQWdJQzhxSUZWelpXUWdZbmtnWlc1MGNtbGxjeWdwSUdGdVpDQmxiblJ5YVdWelVtVjJaWEp6WldRb0tTQjBieUJ3Y21Wd1lYSmxJSFJ2SUhOMFlYSjBJR2wwWlhKaGRHbHVaeTVjY2x4dUlDQWdJQ0FxSUVsMElHUmxkbVZzYjNCeklHRWdYQ0p1YjJSbElIRjFaWFZsWENJZ1ptOXlJR1ZoWTJnZ2JtOXVMV3hsWVdZZ2JHVjJaV3dnYjJZZ2RHaGxJSFJ5WldVdVhISmNiaUFnSUNBZ0tpQk1aWFpsYkhNZ1lYSmxJRzUxYldKbGNtVmtJRndpWW05MGRHOXRMWFZ3WENJZ2MyOGdkR2hoZENCc1pYWmxiQ0F3SUdseklHRWdiR2x6ZENCdlppQnNaV0ZtWEhKY2JpQWdJQ0FnS2lCdWIyUmxjeUJtY205dElHRWdiRzkzTFd4bGRtVnNJRzV2Ymkxc1pXRm1JRzV2WkdVdUlGUm9aU0J4ZFdWMVpTQmhkQ0JoSUdkcGRtVnVJR3hsZG1Wc0lFeGNjbHh1SUNBZ0lDQXFJR052Ym5OcGMzUnpJRzltSUc1dlpHVnhkV1YxWlZ0TVhTQjNhR2xqYUNCcGN5QjBhR1VnWTJocGJHUnlaVzRnYjJZZ1lTQkNUbTlrWlVsdWRHVnlibUZzTEZ4eVhHNGdJQ0FnSUNvZ1lXNWtJRzV2WkdWcGJtUmxlRnRNWFN3Z2RHaGxJR04xY25KbGJuUWdhVzVrWlhnZ2QybDBhR2x1SUhSb1lYUWdZMmhwYkdRZ2JHbHpkQ3dnYzNWamFGeHlYRzRnSUNBZ0lDb2djM1ZqYUNCMGFHRjBJRzV2WkdWeGRXVjFaVnRNTFRGZElEMDlQU0J1YjJSbGNYVmxkV1ZiVEYxYmJtOWtaV2x1WkdWNFcweGRYUzVqYUdsc1pISmxiaTVjY2x4dUlDQWdJQ0FxSUNoSWIzZGxkbVZ5SUdsdWMybGtaU0IwYUdseklHWjFibU4wYVc5dUlIUm9aU0J2Y21SbGNpQnBjeUJ5WlhabGNuTmxaQzRwWEhKY2JpQWdJQ0FnS2k5Y2NseHVJQ0FnSUVKVWNtVmxMbkJ5YjNSdmRIbHdaUzVtYVc1a1VHRjBhQ0E5SUdaMWJtTjBhVzl1SUNoclpYa3BJSHRjY2x4dUlDQWdJQ0FnSUNCMllYSWdibVY0ZEc1dlpHVWdQU0IwYUdsekxsOXliMjkwTzF4eVhHNGdJQ0FnSUNBZ0lIWmhjaUJ1YjJSbGNYVmxkV1VzSUc1dlpHVnBibVJsZUR0Y2NseHVJQ0FnSUNBZ0lDQnBaaUFvYm1WNGRHNXZaR1V1YVhOTVpXRm1LU0I3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJRzV2WkdWeGRXVjFaU0E5SUVWdGNIUjVRWEp5WVhrc0lHNXZaR1ZwYm1SbGVDQTlJRVZ0Y0hSNVFYSnlZWGs3SUM4dklHRjJiMmxrSUdGc2JHOWpZWFJwYjI1elhISmNiaUFnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdJQ0FnSUdWc2MyVWdlMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQnViMlJsY1hWbGRXVWdQU0JiWFN3Z2JtOWtaV2x1WkdWNElEMGdXMTA3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJR1p2Y2lBb2RtRnlJR1FnUFNBd095QWhibVY0ZEc1dlpHVXVhWE5NWldGbU95QmtLeXNwSUh0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHNXZaR1Z4ZFdWMVpWdGtYU0E5SUc1bGVIUnViMlJsTG1Ob2FXeGtjbVZ1TzF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2JtOWtaV2x1WkdWNFcyUmRJRDBnYTJWNUlEMDlQU0IxYm1SbFptbHVaV1FnUHlBd0lEb2dibVY0ZEc1dlpHVXVhVzVrWlhoUFppaHJaWGtzSURBc0lIUm9hWE11WDJOdmJYQmhjbVVwTzF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLRzV2WkdWcGJtUmxlRnRrWFNBK1BTQnViMlJsY1hWbGRXVmJaRjB1YkdWdVozUm9LVnh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmpzZ0x5OGdabWx5YzNRZ2EyVjVJRDRnYldGNFMyVjVLQ2xjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUc1bGVIUnViMlJsSUQwZ2JtOWtaWEYxWlhWbFcyUmRXMjV2WkdWcGJtUmxlRnRrWFYwN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUgxY2NseHVJQ0FnSUNBZ0lDQWdJQ0FnYm05a1pYRjFaWFZsTG5KbGRtVnljMlVvS1R0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnYm05a1pXbHVaR1Y0TG5KbGRtVnljMlVvS1R0Y2NseHVJQ0FnSUNBZ0lDQjlYSEpjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJSHNnYm05a1pYRjFaWFZsT2lCdWIyUmxjWFZsZFdVc0lHNXZaR1ZwYm1SbGVEb2dibTlrWldsdVpHVjRMQ0JzWldGbU9pQnVaWGgwYm05a1pTQjlPMXh5WEc0Z0lDQWdmVHRjY2x4dUlDQWdJQzhxS2x4eVhHNGdJQ0FnSUNvZ1EyOXRjSFYwWlhNZ2RHaGxJR1JwWm1abGNtVnVZMlZ6SUdKbGRIZGxaVzRnWUhSb2FYTmdJR0Z1WkNCZ2IzUm9aWEpnTGx4eVhHNGdJQ0FnSUNvZ1JtOXlJR1ZtWm1samFXVnVZM2tzSUhSb1pTQmthV1ptSUdseklISmxkSFZ5Ym1Wa0lIWnBZU0JwYm5adlkyRjBhVzl1Y3lCdlppQnpkWEJ3YkdsbFpDQm9ZVzVrYkdWeWN5NWNjbHh1SUNBZ0lDQXFJRlJvWlNCamIyMXdkWFJoZEdsdmJpQnBjeUJ2Y0hScGJXbDZaV1FnWm05eUlIUm9aU0JqWVhObElHbHVJSGRvYVdOb0lIUm9aU0IwZDI4Z2RISmxaWE1nYUdGMlpTQnNZWEpuWlNCaGJXOTFiblJ6WEhKY2JpQWdJQ0FnS2lCdlppQnphR0Z5WldRZ1pHRjBZU0FvYjJKMFlXbHVaV1FnWW5rZ1kyRnNiR2x1WnlCMGFHVWdZR05zYjI1bFlDQnZjaUJnZDJsMGFHQWdRVkJKY3lrZ1lXNWtJSGRwYkd3Z1lYWnZhV1JjY2x4dUlDQWdJQ0FxSUdGdWVTQnBkR1Z5WVhScGIyNGdiMllnYzJoaGNtVmtJSE4wWVhSbExseHlYRzRnSUNBZ0lDb2dWR2hsSUdoaGJtUnNaWEp6SUdOaGJpQmpZWFZ6WlNCamIyMXdkWFJoZEdsdmJpQjBieUJsWVhKc2VTQmxlR2wwSUdKNUlISmxkSFZ5Ym1sdVp5QjdZbkpsWVdzNklGSjlMbHh5WEc0Z0lDQWdJQ29nVG1WcGRHaGxjaUJ2WmlCMGFHVWdZMjlzYkdWamRHbHZibk1nYzJodmRXeGtJR0psSUdOb1lXNW5aV1FnWkhWeWFXNW5JSFJvWlNCamIyMXdZWEpwYzI5dUlIQnliMk5sYzNNZ0tHbHVJSGx2ZFhJZ1kyRnNiR0poWTJ0ektTd2dZWE1nZEdocGN5QnRaWFJvYjJRZ1lYTnpkVzFsY3lCMGFHVjVJSGRwYkd3Z2JtOTBJR0psSUcxMWRHRjBaV1F1WEhKY2JpQWdJQ0FnS2lCQWNHRnlZVzBnYjNSb1pYSWdWR2hsSUhSeVpXVWdkRzhnWTI5dGNIVjBaU0JoSUdScFptWWdZV2RoYVc1emRDNWNjbHh1SUNBZ0lDQXFJRUJ3WVhKaGJTQnZibXg1VkdocGN5QkRZV3hzWW1GamF5QnBiblp2YTJWa0lHWnZjaUJoYkd3Z2EyVjVjeUJ2Ym14NUlIQnlaWE5sYm5RZ2FXNGdZSFJvYVhOZ0xseHlYRzRnSUNBZ0lDb2dRSEJoY21GdElHOXViSGxQZEdobGNpQkRZV3hzWW1GamF5QnBiblp2YTJWa0lHWnZjaUJoYkd3Z2EyVjVjeUJ2Ym14NUlIQnlaWE5sYm5RZ2FXNGdZRzkwYUdWeVlDNWNjbHh1SUNBZ0lDQXFJRUJ3WVhKaGJTQmthV1ptWlhKbGJuUWdRMkZzYkdKaFkyc2dhVzUyYjJ0bFpDQm1iM0lnWVd4c0lHdGxlWE1nZDJsMGFDQmthV1ptWlhKcGJtY2dkbUZzZFdWekxseHlYRzRnSUNBZ0lDb3ZYSEpjYmlBZ0lDQkNWSEpsWlM1d2NtOTBiM1I1Y0dVdVpHbG1aa0ZuWVdsdWMzUWdQU0JtZFc1amRHbHZiaUFvYjNSb1pYSXNJRzl1YkhsVWFHbHpMQ0J2Ym14NVQzUm9aWElzSUdScFptWmxjbVZ1ZENrZ2UxeHlYRzRnSUNBZ0lDQWdJR2xtSUNodmRHaGxjaTVmWTI5dGNHRnlaU0FoUFQwZ2RHaHBjeTVmWTI5dGNHRnlaU2tnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0IwYUhKdmR5QnVaWGNnUlhKeWIzSW9YQ0pVY21WbElHTnZiWEJoY21GMGIzSnpJR0Z5WlNCdWIzUWdkR2hsSUhOaGJXVXVYQ0lwTzF4eVhHNGdJQ0FnSUNBZ0lIMWNjbHh1SUNBZ0lDQWdJQ0JwWmlBb2RHaHBjeTVwYzBWdGNIUjVJSHg4SUc5MGFHVnlMbWx6Ulcxd2RIa3BJSHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lnS0hSb2FYTXVhWE5GYlhCMGVTQW1KaUJ2ZEdobGNpNXBjMFZ0Y0hSNUtWeHlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlIVnVaR1ZtYVc1bFpEdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ0x5OGdTV1lnYjI1bElIUnlaV1VnYVhNZ1pXMXdkSGtzSUdWMlpYSjVkR2hwYm1jZ2QybHNiQ0JpWlNCaGJpQnZibXg1VkdocGN5OXZibXg1VDNSb1pYSXVYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2gwYUdsekxtbHpSVzF3ZEhrcFhISmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2IyNXNlVTkwYUdWeUlEMDlQU0IxYm1SbFptbHVaV1FnUHlCMWJtUmxabWx1WldRZ09pQkNWSEpsWlM1emRHVndWRzlGYm1Rb1FsUnlaV1V1YldGclpVUnBabVpEZFhKemIzSW9iM1JvWlhJcExDQnZibXg1VDNSb1pYSXBPMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2IyNXNlVlJvYVhNZ1BUMDlJSFZ1WkdWbWFXNWxaQ0EvSUhWdVpHVm1hVzVsWkNBNklFSlVjbVZsTG5OMFpYQlViMFZ1WkNoQ1ZISmxaUzV0WVd0bFJHbG1aa04xY25OdmNpaDBhR2x6S1N3Z2IyNXNlVlJvYVhNcE8xeHlYRzRnSUNBZ0lDQWdJSDFjY2x4dUlDQWdJQ0FnSUNBdkx5QkRkWEp6YjNJdFltRnpaV1FnWkdsbVppQmhiR2R2Y21sMGFHMGdhWE1nWVhNZ1ptOXNiRzkzY3pwY2NseHVJQ0FnSUNBZ0lDQXZMeUF0SUZWdWRHbHNJRzVsYVhSb1pYSWdZM1Z5YzI5eUlHaGhjeUJ1WVhacFoyRjBaV1FnZEc4Z2RHaGxJR1Z1WkNCdlppQjBhR1VnZEhKbFpTd2daRzhnZEdobElHWnZiR3h2ZDJsdVp6cGNjbHh1SUNBZ0lDQWdJQ0F2THlBZ0xTQkpaaUIwYUdVZ1lIUm9hWE5nSUdOMWNuTnZjaUJwY3lCY0ltSmxhR2x1WkZ3aUlIUm9aU0JnYjNSb1pYSmdJR04xY25OdmNpQW9jM1J5YVdOMGJIa2dQQ3dnZG1saElHTnZiWEJoY21VcExDQmhaSFpoYm1ObElHbDBMbHh5WEc0Z0lDQWdJQ0FnSUM4dklDQXRJRTkwYUdWeWQybHpaU3dnWVdSMllXNWpaU0IwYUdVZ1lHOTBhR1Z5WUNCamRYSnpiM0l1WEhKY2JpQWdJQ0FnSUNBZ0x5OGdJQzBnUVc1NUlIUnBiV1VnWVNCamRYSnpiM0lnYVhNZ2MzUmxjSEJsWkN3Z2NHVnlabTl5YlNCMGFHVWdabTlzYkc5M2FXNW5PbHh5WEc0Z0lDQWdJQ0FnSUM4dklDQWdJQzBnU1dZZ1pXbDBhR1Z5SUdOMWNuTnZjaUJ3YjJsdWRITWdkRzhnWVNCclpYa3ZkbUZzZFdVZ2NHRnBjanBjY2x4dUlDQWdJQ0FnSUNBdkx5QWdJQ0FnSUMwZ1NXWWdkR2hwYzBOMWNuTnZjaUE5UFQwZ2IzUm9aWEpEZFhKemIzSWdZVzVrSUhSb1pTQjJZV3gxWlhNZ1pHbG1abVZ5TENCcGRDQnBjeUJoSUVScFptWmxjbVZ1ZEM1Y2NseHVJQ0FnSUNBZ0lDQXZMeUFnSUNBZ0lDMGdTV1lnZEdocGMwTjFjbk52Y2lBK0lHOTBhR1Z5UTNWeWMyOXlJR0Z1WkNCdmRHaGxja04xY25OdmNpQnBjeUJoZENCaElHdGxlUzkyWVd4MVpTQndZV2x5TENCcGRDQnBjeUJoYmlCUGJteDVUM1JvWlhJdVhISmNiaUFnSUNBZ0lDQWdMeThnSUNBZ0lDQXRJRWxtSUhSb2FYTkRkWEp6YjNJZ1BDQnZkR2hsY2tOMWNuTnZjaUJoYm1RZ2RHaHBjME4xY25OdmNpQnBjeUJoZENCaElHdGxlUzkyWVd4MVpTQndZV2x5TENCcGRDQnBjeUJoYmlCUGJteDVWR2hwY3lCaGN5QnNiMjVuSUdGeklIUm9aU0J0YjNOMElISmxZMlZ1ZENCY2NseHVJQ0FnSUNBZ0lDQXZMeUFnSUNBZ0lDQWdZM1Z5YzI5eUlITjBaWEFnZDJGeklDcHViM1FxSUc5MGFHVnlRM1Z5YzI5eUlHRmtkbUZ1WTJsdVp5Qm1jbTl0SUdFZ2RHbGxMaUJVYUdVZ1pYaDBjbUVnWTI5dVpHbDBhVzl1SUdGMmIybGtjeUJsY25KdmJtVnZkWE1nVDI1c2VVOTBhR1Z5SUdOaGJHeHpJRnh5WEc0Z0lDQWdJQ0FnSUM4dklDQWdJQ0FnSUNCMGFHRjBJSGR2ZFd4a0lHOWpZM1Z5SUdSMVpTQjBieUJ2ZEdobGNrTjFjbk52Y2lCaVpXbHVaeUIwYUdVZ1hDSnNaV0ZrWlhKY0lpNWNjbHh1SUNBZ0lDQWdJQ0F2THlBZ0lDQXRJRTkwYUdWeWQybHpaU3dnYVdZZ1ltOTBhQ0JqZFhKemIzSnpJSEJ2YVc1MElIUnZJRzV2WkdWekxDQmpiMjF3WVhKbElIUm9aVzB1SUVsbUlIUm9aWGtnWVhKbElHVnhkV0ZzSUdKNUlISmxabVZ5Wlc1alpTQW9jMmhoY21Wa0tTd2djMnRwY0Z4eVhHNGdJQ0FnSUNBZ0lDOHZJQ0FnSUNBZ1ltOTBhQ0JqZFhKemIzSnpJSFJ2SUhSb1pTQnVaWGgwSUc1dlpHVWdhVzRnZEdobElIZGhiR3N1WEhKY2JpQWdJQ0FnSUNBZ0x5OGdMU0JQYm1ObElHOXVaU0JqZFhKemIzSWdhR0Z6SUdacGJtbHphR1ZrSUhOMFpYQndhVzVuTENCaGJua2djbVZ0WVdsdWFXNW5JSE4wWlhCeklDaHBaaUJoYm5rcElHRnlaU0IwWVd0bGJpQmhibVFnYTJWNUwzWmhiSFZsSUhCaGFYSnpJR0Z5WlNCc2IyZG5aV1JjY2x4dUlDQWdJQ0FnSUNBdkx5QWdJR0Z6SUU5dWJIbFBkR2hsY2lBb2FXWWdiM1JvWlhKRGRYSnpiM0lnYVhNZ2MzUmxjSEJwYm1jcElHOXlJRTl1YkhsVWFHbHpJQ2hwWmlCMGFHbHpRM1Z5YzI5eUlHbHpJSE4wWlhCd2FXNW5LUzVjY2x4dUlDQWdJQ0FnSUNBdkx5QlVhR2x6SUdGc1oyOXlhWFJvYlNCbmFYWmxjeUIwYUdVZ1kzSnBkR2xqWVd3Z1ozVmhjbUZ1ZEdWbElIUm9ZWFFnWVd4c0lHeHZZMkYwYVc5dWN5QW9ZbTkwYUNCdWIyUmxjeUJoYm1RZ2EyVjVMM1poYkhWbElIQmhhWEp6S1NCcGJpQmliM1JvSUhSeVpXVnpJSFJvWVhRZ1hISmNiaUFnSUNBZ0lDQWdMeThnWVhKbElHbGtaVzUwYVdOaGJDQmllU0IyWVd4MVpTQW9ZVzVrSUhCdmMzTnBZbXg1SUdKNUlISmxabVZ5Wlc1alpTa2dkMmxzYkNCaVpTQjJhWE5wZEdWa0lDcGhkQ0IwYUdVZ2MyRnRaU0IwYVcxbEtpQmllU0IwYUdVZ1kzVnljMjl5Y3k1Y2NseHVJQ0FnSUNBZ0lDQXZMeUJVYUdseklISmxiVzkyWlhNZ2RHaGxJSEJ2YzNOcFltbHNhWFI1SUc5bUlHVnRhWFIwYVc1bklHbHVZMjl5Y21WamRDQmthV1ptY3l3Z1lYTWdkMlZzYkNCaGN5QmhiR3h2ZDJsdVp5Qm1iM0lnYzJ0cGNIQnBibWNnYzJoaGNtVmtJRzV2WkdWekxseHlYRzRnSUNBZ0lDQWdJSFpoY2lCZlkyOXRjR0Z5WlNBOUlIUm9hWE11WDJOdmJYQmhjbVU3WEhKY2JpQWdJQ0FnSUNBZ2RtRnlJSFJvYVhORGRYSnpiM0lnUFNCQ1ZISmxaUzV0WVd0bFJHbG1aa04xY25OdmNpaDBhR2x6S1R0Y2NseHVJQ0FnSUNBZ0lDQjJZWElnYjNSb1pYSkRkWEp6YjNJZ1BTQkNWSEpsWlM1dFlXdGxSR2xtWmtOMWNuTnZjaWh2ZEdobGNpazdYSEpjYmlBZ0lDQWdJQ0FnTHk4Z1NYUWdaRzlsYzI0bmRDQnRZWFIwWlhJZ2FHOTNJSFJvYVhOVGRHVndjR1ZrVEdGemRDQnBjeUJwYm1sMGFXRnNhWHBsWkM1Y2NseHVJQ0FnSUNBZ0lDQXZMeUJUZEdWd0lHOXlaR1Z5SUdseklHOXViSGtnZFhObFpDQjNhR1Z1SUdWcGRHaGxjaUJqZFhKemIzSWdhWE1nWVhRZ1lTQnNaV0ZtTENCaGJtUWdZM1Z5YzI5eWN5QmhiSGRoZVhNZ2MzUmhjblFnWVhRZ1lTQnViMlJsTGx4eVhHNGdJQ0FnSUNBZ0lIWmhjaUIwYUdselUzVmpZMlZ6Y3lBOUlIUnlkV1VzSUc5MGFHVnlVM1ZqWTJWemN5QTlJSFJ5ZFdVc0lIQnlaWFpEZFhKemIzSlBjbVJsY2lBOUlFSlVjbVZsTG1OdmJYQmhjbVVvZEdocGMwTjFjbk52Y2l3Z2IzUm9aWEpEZFhKemIzSXNJRjlqYjIxd1lYSmxLVHRjY2x4dUlDQWdJQ0FnSUNCM2FHbHNaU0FvZEdocGMxTjFZMk5sYzNNZ0ppWWdiM1JvWlhKVGRXTmpaWE56S1NCN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUhaaGNpQmpkWEp6YjNKUGNtUmxjaUE5SUVKVWNtVmxMbU52YlhCaGNtVW9kR2hwYzBOMWNuTnZjaXdnYjNSb1pYSkRkWEp6YjNJc0lGOWpiMjF3WVhKbEtUdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ2RtRnlJSFJvYVhOTVpXRm1JRDBnZEdocGMwTjFjbk52Y2k1c1pXRm1MQ0IwYUdselNXNTBaWEp1WVd4VGNHbHVaU0E5SUhSb2FYTkRkWEp6YjNJdWFXNTBaWEp1WVd4VGNHbHVaU3dnZEdocGMweGxkbVZzU1c1a2FXTmxjeUE5SUhSb2FYTkRkWEp6YjNJdWJHVjJaV3hKYm1ScFkyVnpPMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQjJZWElnYjNSb1pYSk1aV0ZtSUQwZ2IzUm9aWEpEZFhKemIzSXViR1ZoWml3Z2IzUm9aWEpKYm5SbGNtNWhiRk53YVc1bElEMGdiM1JvWlhKRGRYSnpiM0l1YVc1MFpYSnVZV3hUY0dsdVpTd2diM1JvWlhKTVpYWmxiRWx1WkdsalpYTWdQU0J2ZEdobGNrTjFjbk52Y2k1c1pYWmxiRWx1WkdsalpYTTdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2gwYUdselRHVmhaaUI4ZkNCdmRHaGxja3hsWVdZcElIdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQzh2SUVsbUlIUm9aU0JqZFhKemIzSnpJSGRsY21VZ1lYUWdkR2hsSUhOaGJXVWdiRzlqWVhScGIyNGdiR0Z6ZENCemRHVndMQ0IwYUdWdUlIUm9aWEpsSUdseklHNXZJSGR2Y21zZ2RHOGdZbVVnWkc5dVpTNWNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNod2NtVjJRM1Z5YzI5eVQzSmtaWElnSVQwOUlEQXBJSHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBaaUFvWTNWeWMyOXlUM0prWlhJZ1BUMDlJREFwSUh0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLSFJvYVhOTVpXRm1JQ1ltSUc5MGFHVnlUR1ZoWmlBbUppQmthV1ptWlhKbGJuUXBJSHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDOHZJRVZ4ZFdGc0lHdGxlWE1zSUdOb1pXTnJJR1p2Y2lCdGIyUnBabWxqWVhScGIyNXpYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCMllYSWdkbUZzVkdocGN5QTlJSFJvYVhOTVpXRm1MblpoYkhWbGMxdDBhR2x6VEdWMlpXeEpibVJwWTJWelczUm9hWE5NWlhabGJFbHVaR2xqWlhNdWJHVnVaM1JvSUMwZ01WMWRPMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RtRnlJSFpoYkU5MGFHVnlJRDBnYjNSb1pYSk1aV0ZtTG5aaGJIVmxjMXR2ZEdobGNreGxkbVZzU1c1a2FXTmxjMXR2ZEdobGNreGxkbVZzU1c1a2FXTmxjeTVzWlc1bmRHZ2dMU0F4WFYwN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb0lVOWlhbVZqZEM1cGN5aDJZV3hVYUdsekxDQjJZV3hQZEdobGNpa3BJSHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IyWVhJZ2NtVnpkV3gwSUQwZ1pHbG1abVZ5Wlc1MEtIUm9hWE5EZFhKemIzSXVZM1Z5Y21WdWRFdGxlU3dnZG1Gc1ZHaHBjeXdnZG1Gc1QzUm9aWElwTzF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDaHlaWE4xYkhRZ0ppWWdjbVZ6ZFd4MExtSnlaV0ZyS1Z4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2NtVnpkV3gwTG1KeVpXRnJPMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZWeHlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZWeHlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdWc2MyVWdhV1lnS0dOMWNuTnZjazl5WkdWeUlENGdNQ2tnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBdkx5QkpaaUIwYUdseklHbHpJSFJvWlNCallYTmxMQ0IzWlNCcmJtOTNJSFJvWVhRZ1pXbDBhR1Z5T2x4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBdkx5QXhMaUJ2ZEdobGNrTjFjbk52Y2lCemRHVndjR1ZrSUd4aGMzUWdabkp2YlNCaElITjBZWEowYVc1bklIQnZjMmwwYVc5dUlIUm9ZWFFnZEhKaGFXeGxaQ0IwYUdselEzVnljMjl5TENCaGJtUWdhWE1nYzNScGJHd2dZbVZvYVc1a0xDQnZjbHh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0F2THlBeUxpQjBhR2x6UTNWeWMyOXlJSE4wWlhCd1pXUWdiR0Z6ZENCaGJtUWdiR1ZoY0daeWIyZG5aV1FnYjNSb1pYSkRkWEp6YjNKY2NseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0x5OGdSV2wwYUdWeUlHOW1JSFJvWlhObElHTmhjMlZ6SUdseklHRnVJRndpYjI1c2VTQnZkR2hsY2x3aVhISmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2h2ZEdobGNreGxZV1lnSmlZZ2IyNXNlVTkwYUdWeUtTQjdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCMllYSWdiM1JvWlhKV1lXd2dQU0J2ZEdobGNreGxZV1l1ZG1Gc2RXVnpXMjkwYUdWeVRHVjJaV3hKYm1ScFkyVnpXMjkwYUdWeVRHVjJaV3hKYm1ScFkyVnpMbXhsYm1kMGFDQXRJREZkWFR0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSFpoY2lCeVpYTjFiSFFnUFNCdmJteDVUM1JvWlhJb2IzUm9aWEpEZFhKemIzSXVZM1Z5Y21WdWRFdGxlU3dnYjNSb1pYSldZV3dwTzF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhV1lnS0hKbGMzVnNkQ0FtSmlCeVpYTjFiSFF1WW5KbFlXc3BYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlISmxjM1ZzZEM1aWNtVmhhenRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZlZ4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDFjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmxiSE5sSUdsbUlDaHZibXg1VkdocGN5a2dlMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2RHaHBjMHhsWVdZZ0ppWWdjSEpsZGtOMWNuTnZjazl5WkdWeUlDRTlQU0F3S1NCN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IyWVhJZ2RtRnNWR2hwY3lBOUlIUm9hWE5NWldGbUxuWmhiSFZsYzF0MGFHbHpUR1YyWld4SmJtUnBZMlZ6VzNSb2FYTk1aWFpsYkVsdVpHbGpaWE11YkdWdVozUm9JQzBnTVYxZE8xeHlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZG1GeUlISmxjM1ZzZENBOUlHOXViSGxVYUdsektIUm9hWE5EZFhKemIzSXVZM1Z5Y21WdWRFdGxlU3dnZG1Gc1ZHaHBjeWs3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBaaUFvY21WemRXeDBJQ1ltSUhKbGMzVnNkQzVpY21WaGF5bGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2NtVnpkV3gwTG1KeVpXRnJPMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZlZ4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0I5WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJR1ZzYzJVZ2FXWWdLQ0YwYUdselRHVmhaaUFtSmlBaGIzUm9aWEpNWldGbUlDWW1JR04xY25OdmNrOXlaR1Z5SUQwOVBTQXdLU0I3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCMllYSWdiR0Z6ZEZSb2FYTWdQU0IwYUdselNXNTBaWEp1WVd4VGNHbHVaUzVzWlc1bmRHZ2dMU0F4TzF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RtRnlJR3hoYzNSUGRHaGxjaUE5SUc5MGFHVnlTVzUwWlhKdVlXeFRjR2x1WlM1c1pXNW5kR2dnTFNBeE8xeHlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdkbUZ5SUc1dlpHVlVhR2x6SUQwZ2RHaHBjMGx1ZEdWeWJtRnNVM0JwYm1WYmJHRnpkRlJvYVhOZFczUm9hWE5NWlhabGJFbHVaR2xqWlhOYmJHRnpkRlJvYVhOZFhUdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSFpoY2lCdWIyUmxUM1JvWlhJZ1BTQnZkR2hsY2tsdWRHVnlibUZzVTNCcGJtVmJiR0Z6ZEU5MGFHVnlYVnR2ZEdobGNreGxkbVZzU1c1a2FXTmxjMXRzWVhOMFQzUm9aWEpkWFR0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2h1YjJSbFQzUm9aWElnUFQwOUlHNXZaR1ZVYUdsektTQjdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NISmxka04xY25OdmNrOXlaR1Z5SUQwZ01EdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCMGFHbHpVM1ZqWTJWemN5QTlJRUpVY21WbExuTjBaWEFvZEdocGMwTjFjbk52Y2l3Z2RISjFaU2s3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdiM1JvWlhKVGRXTmpaWE56SUQwZ1FsUnlaV1V1YzNSbGNDaHZkR2hsY2tOMWNuTnZjaXdnZEhKMVpTazdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1kyOXVkR2x1ZFdVN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lIMWNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ2NISmxka04xY25OdmNrOXlaR1Z5SUQwZ1kzVnljMjl5VDNKa1pYSTdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2hqZFhKemIzSlBjbVJsY2lBOElEQXBJSHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhSb2FYTlRkV05qWlhOeklEMGdRbFJ5WldVdWMzUmxjQ2gwYUdselEzVnljMjl5S1R0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnZlZ4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0JsYkhObElIdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRzkwYUdWeVUzVmpZMlZ6Y3lBOUlFSlVjbVZsTG5OMFpYQW9iM1JvWlhKRGRYSnpiM0lwTzF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0I5WEhKY2JpQWdJQ0FnSUNBZ2ZWeHlYRzRnSUNBZ0lDQWdJR2xtSUNoMGFHbHpVM1ZqWTJWemN5QW1KaUJ2Ym14NVZHaHBjeWxjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlFSlVjbVZsTG1acGJtbHphRU4xY25OdmNsZGhiR3NvZEdocGMwTjFjbk52Y2l3Z2IzUm9aWEpEZFhKemIzSXNJRjlqYjIxd1lYSmxMQ0J2Ym14NVZHaHBjeWs3WEhKY2JpQWdJQ0FnSUNBZ2FXWWdLRzkwYUdWeVUzVmpZMlZ6Y3lBbUppQnZibXg1VDNSb1pYSXBYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCQ1ZISmxaUzVtYVc1cGMyaERkWEp6YjNKWFlXeHJLRzkwYUdWeVEzVnljMjl5TENCMGFHbHpRM1Z5YzI5eUxDQmZZMjl0Y0dGeVpTd2diMjVzZVU5MGFHVnlLVHRjY2x4dUlDQWdJSDA3WEhKY2JpQWdJQ0F2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk5Y2NseHVJQ0FnSUM4dklFaGxiSEJsY2lCdFpYUm9iMlJ6SUdadmNpQmthV1ptUVdkaGFXNXpkQ0F2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkwxeHlYRzRnSUNBZ1FsUnlaV1V1Wm1sdWFYTm9RM1Z5YzI5eVYyRnNheUE5SUdaMWJtTjBhVzl1SUNoamRYSnpiM0lzSUdOMWNuTnZja1pwYm1semFHVmtMQ0JqYjIxd1lYSmxTMlY1Y3l3Z1kyRnNiR0poWTJzcElIdGNjbHh1SUNBZ0lDQWdJQ0IyWVhJZ1kyOXRjR0Z5WldRZ1BTQkNWSEpsWlM1amIyMXdZWEpsS0dOMWNuTnZjaXdnWTNWeWMyOXlSbWx1YVhOb1pXUXNJR052YlhCaGNtVkxaWGx6S1R0Y2NseHVJQ0FnSUNBZ0lDQnBaaUFvWTI5dGNHRnlaV1FnUFQwOUlEQXBJSHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lnS0NGQ1ZISmxaUzV6ZEdWd0tHTjFjbk52Y2lrcFhISmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2RXNWtaV1pwYm1Wa08xeHlYRzRnSUNBZ0lDQWdJSDFjY2x4dUlDQWdJQ0FnSUNCbGJITmxJR2xtSUNoamIyMXdZWEpsWkNBOElEQXBJSHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdZMmhsWTJzb1ptRnNjMlVzSUZ3aVkzVnljMjl5SUhkaGJHc2dkR1Z5YldsdVlYUmxaQ0JsWVhKc2VWd2lLVHRjY2x4dUlDQWdJQ0FnSUNCOVhISmNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlFSlVjbVZsTG5OMFpYQlViMFZ1WkNoamRYSnpiM0lzSUdOaGJHeGlZV05yS1R0Y2NseHVJQ0FnSUgwN1hISmNiaUFnSUNCQ1ZISmxaUzV6ZEdWd1ZHOUZibVFnUFNCbWRXNWpkR2x2YmlBb1kzVnljMjl5TENCallXeHNZbUZqYXlrZ2UxeHlYRzRnSUNBZ0lDQWdJSFpoY2lCallXNVRkR1Z3SUQwZ2RISjFaVHRjY2x4dUlDQWdJQ0FnSUNCM2FHbHNaU0FvWTJGdVUzUmxjQ2tnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0IyWVhJZ2JHVmhaaUE5SUdOMWNuTnZjaTVzWldGbUxDQnNaWFpsYkVsdVpHbGpaWE1nUFNCamRYSnpiM0l1YkdWMlpXeEpibVJwWTJWekxDQmpkWEp5Wlc1MFMyVjVJRDBnWTNWeWMyOXlMbU4xY25KbGJuUkxaWGs3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJR2xtSUNoc1pXRm1LU0I3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCMllYSWdkbUZzZFdVZ1BTQnNaV0ZtTG5aaGJIVmxjMXRzWlhabGJFbHVaR2xqWlhOYmJHVjJaV3hKYm1ScFkyVnpMbXhsYm1kMGFDQXRJREZkWFR0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIWmhjaUJ5WlhOMWJIUWdQU0JqWVd4c1ltRmpheWhqZFhKeVpXNTBTMlY1TENCMllXeDFaU2s3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcFppQW9jbVZ6ZFd4MElDWW1JSEpsYzNWc2RDNWljbVZoYXlsY2NseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdjbVZ6ZFd4MExtSnlaV0ZyTzF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0I5WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJR05oYmxOMFpYQWdQU0JDVkhKbFpTNXpkR1Z3S0dOMWNuTnZjaWs3WEhKY2JpQWdJQ0FnSUNBZ2ZWeHlYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQjFibVJsWm1sdVpXUTdYSEpjYmlBZ0lDQjlPMXh5WEc0Z0lDQWdRbFJ5WldVdWJXRnJaVVJwWm1aRGRYSnpiM0lnUFNCbWRXNWpkR2x2YmlBb2RISmxaU2tnZTF4eVhHNGdJQ0FnSUNBZ0lIWmhjaUJmY205dmRDQTlJSFJ5WldVdVgzSnZiM1FzSUdobGFXZG9kQ0E5SUhSeVpXVXVhR1ZwWjJoME8xeHlYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQjdJR2hsYVdkb2REb2dhR1ZwWjJoMExDQnBiblJsY201aGJGTndhVzVsT2lCYlcxOXliMjkwWFYwc0lHeGxkbVZzU1c1a2FXTmxjem9nV3pCZExDQnNaV0ZtT2lCMWJtUmxabWx1WldRc0lHTjFjbkpsYm5STFpYazZJRjl5YjI5MExtMWhlRXRsZVNncElIMDdYSEpjYmlBZ0lDQjlPMXh5WEc0Z0lDQWdMeW9xWEhKY2JpQWdJQ0FnS2lCQlpIWmhibU5sY3lCMGFHVWdZM1Z5YzI5eUlIUnZJSFJvWlNCdVpYaDBJSE4wWlhBZ2FXNGdkR2hsSUhkaGJHc2diMllnYVhSeklIUnlaV1V1WEhKY2JpQWdJQ0FnS2lCRGRYSnpiM0p6SUdGeVpTQjNZV3hyWldRZ1ltRmphM2RoY21SeklHbHVJSE52Y25RZ2IzSmtaWElzSUdGeklIUm9hWE1nWVd4c2IzZHpJSFJvWlcwZ2RHOGdiR1YyWlhKaFoyVWdiV0Y0UzJWNUtDa2dhVzRnYjNKa1pYSWdkRzhnWW1VZ1kyOXRjR0Z5WldRZ2FXNGdUeWd4S1M1Y2NseHVJQ0FnSUNBcUlFQndZWEpoYlNCamRYSnpiM0lnVkdobElHTjFjbk52Y2lCMGJ5QnpkR1Z3WEhKY2JpQWdJQ0FnS2lCQWNHRnlZVzBnYzNSbGNGUnZUbTlrWlNCSlppQjBjblZsTENCMGFHVWdZM1Z5YzI5eUlIZHBiR3dnWW1VZ1lXUjJZVzVqWldRZ2RHOGdkR2hsSUc1bGVIUWdibTlrWlNBb2MydHBjSEJwYm1jZ2RtRnNkV1Z6S1Z4eVhHNGdJQ0FnSUNvZ1FISmxkSFZ5Ym5NZ2RISjFaU0JwWmlCMGFHVWdjM1JsY0NCM1lYTWdZMjl0Y0d4bGRHVmtJR0Z1WkNCbVlXeHpaU0JwWmlCMGFHVWdjM1JsY0NCM2IzVnNaQ0JvWVhabElHTmhkWE5sWkNCMGFHVWdZM1Z5YzI5eUlIUnZJRzF2ZG1VZ1ltVjViMjVrSUhSb1pTQmxibVFnYjJZZ2RHaGxJSFJ5WldVdVhISmNiaUFnSUNBZ0tpOWNjbHh1SUNBZ0lFSlVjbVZsTG5OMFpYQWdQU0JtZFc1amRHbHZiaUFvWTNWeWMyOXlMQ0J6ZEdWd1ZHOU9iMlJsS1NCN1hISmNiaUFnSUNBZ0lDQWdkbUZ5SUdsdWRHVnlibUZzVTNCcGJtVWdQU0JqZFhKemIzSXVhVzUwWlhKdVlXeFRjR2x1WlN3Z2JHVjJaV3hKYm1ScFkyVnpJRDBnWTNWeWMyOXlMbXhsZG1Wc1NXNWthV05sY3l3Z2JHVmhaaUE5SUdOMWNuTnZjaTVzWldGbU8xeHlYRzRnSUNBZ0lDQWdJR2xtSUNoemRHVndWRzlPYjJSbElEMDlQU0IwY25WbElIeDhJR3hsWVdZcElIdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ2RtRnlJR3hsZG1Wc2MweGxibWQwYUNBOUlHeGxkbVZzU1c1a2FXTmxjeTVzWlc1bmRHZzdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lDOHZJRk4wWlhBZ2RHOGdkR2hsSUc1bGVIUWdibTlrWlNCdmJteDVJR2xtT2x4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0F2THlBdElGZGxJR0Z5WlNCbGVIQnNhV05wZEd4NUlHUnBjbVZqZEdWa0lIUnZJSFpwWVNCemRHVndWRzlPYjJSbExDQnZjbHh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQXZMeUF0SUZSb1pYSmxJR0Z5WlNCdWJ5QnJaWGt2ZG1Gc2RXVWdjR0ZwY25NZ2JHVm1kQ0IwYnlCemRHVndJSFJ2SUdsdUlIUm9hWE1nYkdWaFpseHlYRzRnSUNBZ0lDQWdJQ0FnSUNCcFppQW9jM1JsY0ZSdlRtOWtaU0E5UFQwZ2RISjFaU0I4ZkNCc1pYWmxiRWx1WkdsalpYTmJiR1YyWld4elRHVnVaM1JvSUMwZ01WMGdQVDA5SURBcElIdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSFpoY2lCemNHbHVaVXhsYm1kMGFDQTlJR2x1ZEdWeWJtRnNVM0JwYm1VdWJHVnVaM1JvTzF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0x5OGdVbTl2ZENCcGN5QnNaV0ZtWEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcFppQW9jM0JwYm1WTVpXNW5kR2dnUFQwOUlEQXBYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUdaaGJITmxPMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnTHk4Z1YyRnNheUJpWVdOcklIVndJSFJvWlNCMGNtVmxJSFZ1ZEdsc0lIZGxJR1pwYm1RZ1lTQnVaWGNnYzNWaWRISmxaU0IwYnlCa1pYTmpaVzVrSUdsdWRHOWNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSFpoY2lCdWIyUmxUR1YyWld4SmJtUmxlQ0E5SUhOd2FXNWxUR1Z1WjNSb0lDMGdNVHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhaaGNpQnNaWFpsYkVsdVpHVjRWMkZzYTBKaFkyc2dQU0J1YjJSbFRHVjJaV3hKYm1SbGVEdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSGRvYVd4bElDaHNaWFpsYkVsdVpHVjRWMkZzYTBKaFkyc2dQajBnTUNrZ2UxeHlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDaHNaWFpsYkVsdVpHbGpaWE5iYkdWMlpXeEpibVJsZUZkaGJHdENZV05yWFNBK0lEQXBJSHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tHeGxkbVZzU1c1a1pYaFhZV3hyUW1GamF5QThJR3hsZG1Wc2MweGxibWQwYUNBdElERXBJSHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDOHZJRkpsYlc5MlpTQnNaV0ZtSUhOMFlYUmxJR1p5YjIwZ1kzVnljMjl5WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmpkWEp6YjNJdWJHVmhaaUE5SUhWdVpHVm1hVzVsWkR0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR3hsZG1Wc1NXNWthV05sY3k1d2IzQW9LVHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZlZ4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBdkx5QkpaaUIzWlNCM1lXeHJaV1FnZFhCM1lYSmtjeUJ3WVhOMElHRnVlU0JwYm5SbGNtNWhiQ0J1YjJSbExDQnpiR2xqWlNCMGFHVnRJRzkxZEZ4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcFppQW9iR1YyWld4SmJtUmxlRmRoYkd0Q1lXTnJJRHdnYm05a1pVeGxkbVZzU1c1a1pYZ3BYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCamRYSnpiM0l1YVc1MFpYSnVZV3hUY0dsdVpTQTlJR2x1ZEdWeWJtRnNVM0JwYm1VdWMyeHBZMlVvTUN3Z2JHVjJaV3hKYm1SbGVGZGhiR3RDWVdOcklDc2dNU2s3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUM4dklFMXZkbVVnZEc4Z2JtVjNJR2x1ZEdWeWJtRnNJRzV2WkdWY2NseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1kzVnljMjl5TG1OMWNuSmxiblJMWlhrZ1BTQnBiblJsY201aGJGTndhVzVsVzJ4bGRtVnNTVzVrWlhoWFlXeHJRbUZqYTExYkxTMXNaWFpsYkVsdVpHbGpaWE5iYkdWMlpXeEpibVJsZUZkaGJHdENZV05yWFYwdWJXRjRTMlY1S0NrN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCMGNuVmxPMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIMWNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCc1pYWmxiRWx1WkdWNFYyRnNhMEpoWTJzdExUdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDFjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUM4dklFTjFjbk52Y2lCcGN5QnBiaUIwYUdVZ1ptRnlJR3hsWm5RZ2JHVmhaaUJ2WmlCMGFHVWdkSEpsWlN3Z2JtOGdiVzl5WlNCdWIyUmxjeUIwYnlCbGJuVnRaWEpoZEdWY2NseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCbVlXeHpaVHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQmxiSE5sSUh0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDOHZJRTF2ZG1VZ2RHOGdibVYzSUd4bFlXWWdkbUZzZFdWY2NseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIWmhjaUIyWVd4MVpVbHVaR1Y0SUQwZ0xTMXNaWFpsYkVsdVpHbGpaWE5iYkdWMlpXeHpUR1Z1WjNSb0lDMGdNVjA3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCamRYSnpiM0l1WTNWeWNtVnVkRXRsZVNBOUlHeGxZV1l1YTJWNWMxdDJZV3gxWlVsdVpHVjRYVHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUIwY25WbE8xeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCOVhISmNiaUFnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdJQ0FnSUdWc2MyVWdleUF2THlCRGRYSnpiM0lnWkc5bGN5QnViM1FnY0c5cGJuUWdkRzhnWVNCMllXeDFaU0JwYmlCaElHeGxZV1lzSUhOdklHMXZkbVVnWkc5M2JuZGhjbVJ6WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJSFpoY2lCdVpYaDBUR1YyWld3Z1BTQnBiblJsY201aGJGTndhVzVsTG14bGJtZDBhRHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdkbUZ5SUdOMWNuSmxiblJNWlhabGJDQTlJRzVsZUhSTVpYWmxiQ0F0SURFN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUhaaGNpQnViMlJsSUQwZ2FXNTBaWEp1WVd4VGNHbHVaVnRqZFhKeVpXNTBUR1YyWld4ZFcyeGxkbVZzU1c1a2FXTmxjMXRqZFhKeVpXNTBUR1YyWld4ZFhUdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLRzV2WkdVdWFYTk1aV0ZtS1NCN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQXZMeUJGYm5SbGNtbHVaeUJwYm5SdklHRWdiR1ZoWmk0Z1UyVjBJSFJvWlNCamRYSnpiM0lnZEc4Z2NHOXBiblFnWVhRZ2RHaGxJR3hoYzNRZ2EyVjVMM1poYkhWbElIQmhhWEl1WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCamRYSnpiM0l1YkdWaFppQTlJRzV2WkdVN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjJZWElnZG1Gc2RXVkpibVJsZUNBOUlHeGxkbVZzU1c1a2FXTmxjMXR1WlhoMFRHVjJaV3hkSUQwZ2JtOWtaUzUyWVd4MVpYTXViR1Z1WjNSb0lDMGdNVHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdOMWNuTnZjaTVqZFhKeVpXNTBTMlY1SUQwZ2JtOWtaUzVyWlhselczWmhiSFZsU1c1a1pYaGRPMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lHVnNjMlVnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RtRnlJR05vYVd4a2NtVnVJRDBnYm05a1pTNWphR2xzWkhKbGJqdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2x1ZEdWeWJtRnNVM0JwYm1WYmJtVjRkRXhsZG1Wc1hTQTlJR05vYVd4a2NtVnVPMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZG1GeUlHTm9hV3hrU1c1a1pYZ2dQU0JqYUdsc1pISmxiaTVzWlc1bmRHZ2dMU0F4TzF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2JHVjJaV3hKYm1ScFkyVnpXMjVsZUhSTVpYWmxiRjBnUFNCamFHbHNaRWx1WkdWNE8xeHlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZM1Z5YzI5eUxtTjFjbkpsYm5STFpYa2dQU0JqYUdsc1pISmxibHRqYUdsc1pFbHVaR1Y0WFM1dFlYaExaWGtvS1R0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnZlZ4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdkSEoxWlR0Y2NseHVJQ0FnSUNBZ0lDQjlYSEpjYmlBZ0lDQjlPMXh5WEc0Z0lDQWdMeW9xWEhKY2JpQWdJQ0FnS2lCRGIyMXdZWEpsY3lCMGFHVWdkSGR2SUdOMWNuTnZjbk11SUZKbGRIVnlibk1nWVNCMllXeDFaU0JwYm1ScFkyRjBhVzVuSUhkb2FXTm9JR04xY25OdmNpQnBjeUJoYUdWaFpDQnBiaUJoSUhkaGJHc3VYSEpjYmlBZ0lDQWdLaUJPYjNSbElIUm9ZWFFnWTNWeWMyOXljeUJoY21VZ1lXUjJZVzVqWldRZ2FXNGdjbVYyWlhKelpTQnpiM0owYVc1bklHOXlaR1Z5TGx4eVhHNGdJQ0FnSUNvdlhISmNiaUFnSUNCQ1ZISmxaUzVqYjIxd1lYSmxJRDBnWm5WdVkzUnBiMjRnS0dOMWNuTnZja0VzSUdOMWNuTnZja0lzSUdOdmJYQmhjbVZMWlhsektTQjdYSEpjYmlBZ0lDQWdJQ0FnZG1GeUlHaGxhV2RvZEVFZ1BTQmpkWEp6YjNKQkxtaGxhV2RvZEN3Z1kzVnljbVZ1ZEV0bGVVRWdQU0JqZFhKemIzSkJMbU4xY25KbGJuUkxaWGtzSUd4bGRtVnNTVzVrYVdObGMwRWdQU0JqZFhKemIzSkJMbXhsZG1Wc1NXNWthV05sY3p0Y2NseHVJQ0FnSUNBZ0lDQjJZWElnYUdWcFoyaDBRaUE5SUdOMWNuTnZja0l1YUdWcFoyaDBMQ0JqZFhKeVpXNTBTMlY1UWlBOUlHTjFjbk52Y2tJdVkzVnljbVZ1ZEV0bGVTd2diR1YyWld4SmJtUnBZMlZ6UWlBOUlHTjFjbk52Y2tJdWJHVjJaV3hKYm1ScFkyVnpPMXh5WEc0Z0lDQWdJQ0FnSUM4dklGSmxkbVZ5YzJVZ2RHaGxJR052YlhCaGNtbHpiMjRnYjNKa1pYSXNJR0Z6SUdOMWNuTnZjbk1nWVhKbElHRmtkbUZ1WTJWa0lHbHVJSEpsZG1WeWMyVWdjMjl5ZEdsdVp5QnZjbVJsY2x4eVhHNGdJQ0FnSUNBZ0lIWmhjaUJyWlhsRGIyMXdZWEpwYzI5dUlEMGdZMjl0Y0dGeVpVdGxlWE1vWTNWeWNtVnVkRXRsZVVJc0lHTjFjbkpsYm5STFpYbEJLVHRjY2x4dUlDQWdJQ0FnSUNCcFppQW9hMlY1UTI5dGNHRnlhWE52YmlBaFBUMGdNQ2tnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdhMlY1UTI5dGNHRnlhWE52Ymp0Y2NseHVJQ0FnSUNBZ0lDQjlYSEpjYmlBZ0lDQWdJQ0FnTHk4Z1RtOXliV0ZzYVhwbElHUmxjSFJvSUhaaGJIVmxjeUJ5Wld4aGRHbDJaU0IwYnlCMGFHVWdjMmh2Y25SbGMzUWdkSEpsWlM1Y2NseHVJQ0FnSUNBZ0lDQXZMeUJVYUdseklHVnVjM1Z5WlhNZ2RHaGhkQ0JqYjI1amRYSnlaVzUwSUdOMWNuTnZjaUIzWVd4cmN5QnZaaUIwY21WbGN5QnZaaUJrYVdabVpYSnBibWNnYUdWcFoyaDBjeUJqWVc0Z2NtVnNhV0ZpYkhrZ2JHRnVaQ0J2YmlCemFHRnlaV1FnYm05a1pYTWdZWFFnZEdobElITmhiV1VnZEdsdFpTNWNjbHh1SUNBZ0lDQWdJQ0F2THlCVWJ5QmhZMk52YlhCc2FYTm9JSFJvYVhNc0lHRWdZM1Z5YzI5eUlIUm9ZWFFnYVhNZ2IyNGdZVzRnYVc1MFpYSnVZV3dnYm05a1pTQmhkQ0JrWlhCMGFDQkVNU0IzYVhSb0lHMWhlRXRsZVNCWUlHbHpJR052Ym5OcFpHVnlaV1FnWENKaVpXaHBibVJjSWlCaElHTjFjbk52Y2lCdmJpQmhibHh5WEc0Z0lDQWdJQ0FnSUM4dklHbHVkR1Z5Ym1Gc0lHNXZaR1VnWVhRZ1pHVndkR2dnUkRJZ2QybDBhQ0J0WVhoTFpYa2dXU3dnZDJobGJpQkVNU0E4SUVReUxpQlVhSFZ6TENCaGJIZGhlWE1nZDJGc2EybHVaeUIwYUdVZ1kzVnljMjl5SUhSb1lYUWdhWE1nWENKaVpXaHBibVJjSWlCM2FXeHNJR0ZzYkc5M0lIUm9aU0JqZFhKemIzSmNjbHh1SUNBZ0lDQWdJQ0F2THlCaGRDQnphR0ZzYkc5M1pYSWdaR1Z3ZEdnZ0tHSjFkQ0JsY1hWaGJDQnRZWGhMWlhrcElIUnZJRndpWTJGMFkyZ2dkWEJjSWlCaGJtUWdiR0Z1WkNCdmJpQnphR0Z5WldRZ2JtOWtaWE11WEhKY2JpQWdJQ0FnSUNBZ2RtRnlJR2hsYVdkb2RFMXBiaUE5SUdobGFXZG9kRUVnUENCb1pXbG5hSFJDSUQ4Z2FHVnBaMmgwUVNBNklHaGxhV2RvZEVJN1hISmNiaUFnSUNBZ0lDQWdkbUZ5SUdSbGNIUm9RVTV2Y20xaGJHbDZaV1FnUFNCc1pYWmxiRWx1WkdsalpYTkJMbXhsYm1kMGFDQXRJQ2hvWldsbmFIUkJJQzBnYUdWcFoyaDBUV2x1S1R0Y2NseHVJQ0FnSUNBZ0lDQjJZWElnWkdWd2RHaENUbTl5YldGc2FYcGxaQ0E5SUd4bGRtVnNTVzVrYVdObGMwSXViR1Z1WjNSb0lDMGdLR2hsYVdkb2RFSWdMU0JvWldsbmFIUk5hVzRwTzF4eVhHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCa1pYQjBhRUZPYjNKdFlXeHBlbVZrSUMwZ1pHVndkR2hDVG05eWJXRnNhWHBsWkR0Y2NseHVJQ0FnSUgwN1hISmNiaUFnSUNBdkx5QkZibVFnYjJZZ2FHVnNjR1Z5SUcxbGRHaHZaSE1nWm05eUlHUnBabVpCWjJGcGJuTjBJQzh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OWNjbHh1SUNBZ0lDOHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMMXh5WEc0Z0lDQWdMeW9xSUZKbGRIVnlibk1nWVNCdVpYY2dhWFJsY21GMGIzSWdabTl5SUdsMFpYSmhkR2x1WnlCMGFHVWdhMlY1Y3lCdlppQmxZV05vSUhCaGFYSWdhVzRnWVhOalpXNWthVzVuSUc5eVpHVnlMbHh5WEc0Z0lDQWdJQ29nSUVCd1lYSmhiU0JtYVhKemRFdGxlVG9nVFdsdWFXMTFiU0JyWlhrZ2RHOGdhVzVqYkhWa1pTQnBiaUIwYUdVZ2IzVjBjSFYwTGlBcUwxeHlYRzRnSUNBZ1FsUnlaV1V1Y0hKdmRHOTBlWEJsTG10bGVYTWdQU0JtZFc1amRHbHZiaUFvWm1seWMzUkxaWGtwSUh0Y2NseHVJQ0FnSUNBZ0lDQjJZWElnYVhRZ1BTQjBhR2x6TG1WdWRISnBaWE1vWm1seWMzUkxaWGtzSUZKbGRYTmxaRUZ5Y21GNUtUdGNjbHh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdhWFJsY21GMGIzSW9ablZ1WTNScGIyNGdLQ2tnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0IyWVhJZ2JpQTlJR2wwTG01bGVIUW9LVHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lnS0c0dWRtRnNkV1VwWEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCdUxuWmhiSFZsSUQwZ2JpNTJZV3gxWlZzd1hUdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUc0N1hISmNiaUFnSUNBZ0lDQWdmU2s3WEhKY2JpQWdJQ0I5TzF4eVhHNGdJQ0FnTHlvcUlGSmxkSFZ5Ym5NZ1lTQnVaWGNnYVhSbGNtRjBiM0lnWm05eUlHbDBaWEpoZEdsdVp5QjBhR1VnZG1Gc2RXVnpJRzltSUdWaFkyZ2djR0ZwY2lCcGJpQnZjbVJsY2lCaWVTQnJaWGt1WEhKY2JpQWdJQ0FnS2lBZ1FIQmhjbUZ0SUdacGNuTjBTMlY1T2lCTmFXNXBiWFZ0SUd0bGVTQjNhRzl6WlNCaGMzTnZZMmxoZEdWa0lIWmhiSFZsSUdseklHbHVZMngxWkdWa0lHbHVJSFJvWlNCdmRYUndkWFF1SUNvdlhISmNiaUFnSUNCQ1ZISmxaUzV3Y205MGIzUjVjR1V1ZG1Gc2RXVnpJRDBnWm5WdVkzUnBiMjRnS0dacGNuTjBTMlY1S1NCN1hISmNiaUFnSUNBZ0lDQWdkbUZ5SUdsMElEMGdkR2hwY3k1bGJuUnlhV1Z6S0dacGNuTjBTMlY1TENCU1pYVnpaV1JCY25KaGVTazdYSEpjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJR2wwWlhKaGRHOXlLR1oxYm1OMGFXOXVJQ2dwSUh0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnZG1GeUlHNGdQU0JwZEM1dVpYaDBLQ2s3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJR2xtSUNodUxuWmhiSFZsS1Z4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2JpNTJZV3gxWlNBOUlHNHVkbUZzZFdWYk1WMDdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCdU8xeHlYRzRnSUNBZ0lDQWdJSDBwTzF4eVhHNGdJQ0FnZlR0Y2NseHVJQ0FnSUU5aWFtVmpkQzVrWldacGJtVlFjbTl3WlhKMGVTaENWSEpsWlM1d2NtOTBiM1I1Y0dVc0lGd2liV0Y0VG05a1pWTnBlbVZjSWl3Z2UxeHlYRzRnSUNBZ0lDQWdJQzh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dlhISmNiaUFnSUNBZ0lDQWdMeThnUVdSa2FYUnBiMjVoYkNCdFpYUm9iMlJ6SUM4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk5Y2NseHVJQ0FnSUNBZ0lDQXZLaW9nVW1WMGRYSnVjeUIwYUdVZ2JXRjRhVzExYlNCdWRXMWlaWElnYjJZZ1kyaHBiR1J5Wlc0dmRtRnNkV1Z6SUdKbFptOXlaU0J1YjJSbGN5QjNhV3hzSUhOd2JHbDBMaUFxTDF4eVhHNGdJQ0FnSUNBZ0lHZGxkRG9nWm5WdVkzUnBiMjRnS0NrZ2UxeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnZEdocGN5NWZiV0Y0VG05a1pWTnBlbVU3WEhKY2JpQWdJQ0FnSUNBZ2ZTeGNjbHh1SUNBZ0lDQWdJQ0JsYm5WdFpYSmhZbXhsT2lCbVlXeHpaU3hjY2x4dUlDQWdJQ0FnSUNCamIyNW1hV2QxY21GaWJHVTZJSFJ5ZFdWY2NseHVJQ0FnSUgwcE8xeHlYRzRnSUNBZ0x5b3FJRWRsZEhNZ2RHaGxJR3h2ZDJWemRDQnJaWGtnYVc0Z2RHaGxJSFJ5WldVdUlFTnZiWEJzWlhocGRIazZJRThvYkc5bklITnBlbVVwSUNvdlhISmNiaUFnSUNCQ1ZISmxaUzV3Y205MGIzUjVjR1V1YldsdVMyVjVJRDBnWm5WdVkzUnBiMjRnS0NrZ2V5QnlaWFIxY200Z2RHaHBjeTVmY205dmRDNXRhVzVMWlhrb0tUc2dmVHRjY2x4dUlDQWdJQzhxS2lCSFpYUnpJSFJvWlNCb2FXZG9aWE4wSUd0bGVTQnBiaUIwYUdVZ2RISmxaUzRnUTI5dGNHeGxlR2wwZVRvZ1R5Z3hLU0FxTDF4eVhHNGdJQ0FnUWxSeVpXVXVjSEp2ZEc5MGVYQmxMbTFoZUV0bGVTQTlJR1oxYm1OMGFXOXVJQ2dwSUhzZ2NtVjBkWEp1SUhSb2FYTXVYM0p2YjNRdWJXRjRTMlY1S0NrN0lIMDdYSEpjYmlBZ0lDQXZLaW9nVVhWcFkydHNlU0JqYkc5dVpYTWdkR2hsSUhSeVpXVWdZbmtnYldGeWEybHVaeUIwYUdVZ2NtOXZkQ0J1YjJSbElHRnpJSE5vWVhKbFpDNWNjbHh1SUNBZ0lDQXFJQ0JDYjNSb0lHTnZjR2xsY3lCeVpXMWhhVzRnWldScGRHRmliR1V1SUZkb1pXNGdlVzkxSUcxdlpHbG1lU0JsYVhSb1pYSWdZMjl3ZVN3Z1lXNTVYSEpjYmlBZ0lDQWdLaUFnYm05a1pYTWdkR2hoZENCaGNtVWdjMmhoY21Wa0lDaHZjaUJ3YjNSbGJuUnBZV3hzZVNCemFHRnlaV1FwSUdKbGRIZGxaVzRnZEdobElIUjNiMXh5WEc0Z0lDQWdJQ29nSUdOdmNHbGxjeUJoY21VZ1kyeHZibVZrSUhOdklIUm9ZWFFnZEdobElHTm9ZVzVuWlhNZ1pHOGdibTkwSUdGbVptVmpkQ0J2ZEdobGNpQmpiM0JwWlhNdVhISmNiaUFnSUNBZ0tpQWdWR2hwY3lCcGN5QnJibTkzYmlCaGN5QmpiM0I1TFc5dUxYZHlhWFJsSUdKbGFHRjJhVzl5TENCdmNpQmNJbXhoZW5rZ1kyOXdlV2x1WjF3aUxpQXFMMXh5WEc0Z0lDQWdRbFJ5WldVdWNISnZkRzkwZVhCbExtTnNiMjVsSUQwZ1puVnVZM1JwYjI0Z0tDa2dlMXh5WEc0Z0lDQWdJQ0FnSUhSb2FYTXVYM0p2YjNRdWFYTlRhR0Z5WldRZ1BTQjBjblZsTzF4eVhHNGdJQ0FnSUNBZ0lIWmhjaUJ5WlhOMWJIUWdQU0J1WlhjZ1FsUnlaV1VvZFc1a1pXWnBibVZrTENCMGFHbHpMbDlqYjIxd1lYSmxMQ0IwYUdsekxsOXRZWGhPYjJSbFUybDZaU2s3WEhKY2JpQWdJQ0FnSUNBZ2NtVnpkV3gwTGw5eWIyOTBJRDBnZEdocGN5NWZjbTl2ZER0Y2NseHVJQ0FnSUNBZ0lDQnlaWE4xYkhRdVgzTnBlbVVnUFNCMGFHbHpMbDl6YVhwbE8xeHlYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQnlaWE4xYkhRN1hISmNiaUFnSUNCOU8xeHlYRzRnSUNBZ0x5b3FJRkJsY21admNtMXpJR0VnWjNKbFpXUjVJR05zYjI1bExDQnBiVzFsWkdsaGRHVnNlU0JrZFhCc2FXTmhkR2x1WnlCaGJua2dibTlrWlhNZ2RHaGhkQ0JoY21WY2NseHVJQ0FnSUNBcUlDQnViM1FnWTNWeWNtVnVkR3g1SUcxaGNtdGxaQ0JoY3lCemFHRnlaV1FzSUdsdUlHOXlaR1Z5SUhSdklHRjJiMmxrSUcxaGNtdHBibWNnWVc1NVhISmNiaUFnSUNBZ0tpQWdZV1JrYVhScGIyNWhiQ0J1YjJSbGN5QmhjeUJ6YUdGeVpXUXVYSEpjYmlBZ0lDQWdLaUFnUUhCaGNtRnRJR1p2Y21ObElFTnNiMjVsSUdGc2JDQnViMlJsY3l3Z1pYWmxiaUJ6YUdGeVpXUWdiMjVsY3k1Y2NseHVJQ0FnSUNBcUwxeHlYRzRnSUNBZ1FsUnlaV1V1Y0hKdmRHOTBlWEJsTG1keVpXVmtlVU5zYjI1bElEMGdablZ1WTNScGIyNGdLR1p2Y21ObEtTQjdYSEpjYmlBZ0lDQWdJQ0FnZG1GeUlISmxjM1ZzZENBOUlHNWxkeUJDVkhKbFpTaDFibVJsWm1sdVpXUXNJSFJvYVhNdVgyTnZiWEJoY21Vc0lIUm9hWE11WDIxaGVFNXZaR1ZUYVhwbEtUdGNjbHh1SUNBZ0lDQWdJQ0J5WlhOMWJIUXVYM0p2YjNRZ1BTQjBhR2x6TGw5eWIyOTBMbWR5WldWa2VVTnNiMjVsS0dadmNtTmxLVHRjY2x4dUlDQWdJQ0FnSUNCeVpYTjFiSFF1WDNOcGVtVWdQU0IwYUdsekxsOXphWHBsTzF4eVhHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCeVpYTjFiSFE3WEhKY2JpQWdJQ0I5TzF4eVhHNGdJQ0FnTHlvcUlFZGxkSE1nWVc0Z1lYSnlZWGtnWm1sc2JHVmtJSGRwZEdnZ2RHaGxJR052Ym5SbGJuUnpJRzltSUhSb1pTQjBjbVZsTENCemIzSjBaV1FnWW5rZ2EyVjVJQ292WEhKY2JpQWdJQ0JDVkhKbFpTNXdjbTkwYjNSNWNHVXVkRzlCY25KaGVTQTlJR1oxYm1OMGFXOXVJQ2h0WVhoTVpXNW5kR2dwSUh0Y2NseHVJQ0FnSUNBZ0lDQnBaaUFvYldGNFRHVnVaM1JvSUQwOVBTQjJiMmxrSURBcElIc2diV0Y0VEdWdVozUm9JRDBnTUhnM1JrWkdSa1pHUmpzZ2ZWeHlYRzRnSUNBZ0lDQWdJSFpoY2lCdGFXNGdQU0IwYUdsekxtMXBia3RsZVNncExDQnRZWGdnUFNCMGFHbHpMbTFoZUV0bGVTZ3BPMXh5WEc0Z0lDQWdJQ0FnSUdsbUlDaHRhVzRnSVQwOUlIVnVaR1ZtYVc1bFpDbGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhSb2FYTXVaMlYwVW1GdVoyVW9iV2x1TENCdFlYZ3NJSFJ5ZFdVc0lHMWhlRXhsYm1kMGFDazdYSEpjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJRnRkTzF4eVhHNGdJQ0FnZlR0Y2NseHVJQ0FnSUM4cUtpQkhaWFJ6SUdGdUlHRnljbUY1SUc5bUlHRnNiQ0JyWlhsekxDQnpiM0owWldRZ0tpOWNjbHh1SUNBZ0lFSlVjbVZsTG5CeWIzUnZkSGx3WlM1clpYbHpRWEp5WVhrZ1BTQm1kVzVqZEdsdmJpQW9LU0I3WEhKY2JpQWdJQ0FnSUNBZ2RtRnlJSEpsYzNWc2RITWdQU0JiWFR0Y2NseHVJQ0FnSUNBZ0lDQjBhR2x6TGw5eWIyOTBMbVp2Y2xKaGJtZGxLSFJvYVhNdWJXbHVTMlY1S0Nrc0lIUm9hWE11YldGNFMyVjVLQ2tzSUhSeWRXVXNJR1poYkhObExDQjBhR2x6TENBd0xDQm1kVzVqZEdsdmJpQW9heXdnZGlrZ2V5QnlaWE4xYkhSekxuQjFjMmdvYXlrN0lIMHBPMXh5WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJ5WlhOMWJIUnpPMXh5WEc0Z0lDQWdmVHRjY2x4dUlDQWdJQzhxS2lCSFpYUnpJR0Z1SUdGeWNtRjVJRzltSUdGc2JDQjJZV3gxWlhNc0lITnZjblJsWkNCaWVTQnJaWGtnS2k5Y2NseHVJQ0FnSUVKVWNtVmxMbkJ5YjNSdmRIbHdaUzUyWVd4MVpYTkJjbkpoZVNBOUlHWjFibU4wYVc5dUlDZ3BJSHRjY2x4dUlDQWdJQ0FnSUNCMllYSWdjbVZ6ZFd4MGN5QTlJRnRkTzF4eVhHNGdJQ0FnSUNBZ0lIUm9hWE11WDNKdmIzUXVabTl5VW1GdVoyVW9kR2hwY3k1dGFXNUxaWGtvS1N3Z2RHaHBjeTV0WVhoTFpYa29LU3dnZEhKMVpTd2dabUZzYzJVc0lIUm9hWE1zSURBc0lHWjFibU4wYVc5dUlDaHJMQ0IyS1NCN0lISmxjM1ZzZEhNdWNIVnphQ2gyS1RzZ2ZTazdYSEpjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJSEpsYzNWc2RITTdYSEpjYmlBZ0lDQjlPMXh5WEc0Z0lDQWdMeW9xSUVkbGRITWdZU0J6ZEhKcGJtY2djbVZ3Y21WelpXNTBhVzVuSUhSb1pTQjBjbVZsSjNNZ1pHRjBZU0JpWVhObFpDQnZiaUIwYjBGeWNtRjVLQ2t1SUNvdlhISmNiaUFnSUNCQ1ZISmxaUzV3Y205MGIzUjVjR1V1ZEc5VGRISnBibWNnUFNCbWRXNWpkR2x2YmlBb0tTQjdYSEpjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJSFJvYVhNdWRHOUJjbkpoZVNncExuUnZVM1J5YVc1bktDazdYSEpjYmlBZ0lDQjlPMXh5WEc0Z0lDQWdMeW9xSUZOMGIzSmxjeUJoSUd0bGVTMTJZV3gxWlNCd1lXbHlJRzl1YkhrZ2FXWWdkR2hsSUd0bGVTQmtiMlZ6YmlkMElHRnNjbVZoWkhrZ1pYaHBjM1FnYVc0Z2RHaGxJSFJ5WldVdVhISmNiaUFnSUNBZ0tpQkFjbVYwZFhKdWN5QjBjblZsSUdsbUlHRWdibVYzSUd0bGVTQjNZWE1nWVdSa1pXUmNjbHh1SUNBZ0lDb3ZYSEpjYmlBZ0lDQkNWSEpsWlM1d2NtOTBiM1I1Y0dVdWMyVjBTV1pPYjNSUWNtVnpaVzUwSUQwZ1puVnVZM1JwYjI0Z0tHdGxlU3dnZG1Gc2RXVXBJSHRjY2x4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnZEdocGN5NXpaWFFvYTJWNUxDQjJZV3gxWlN3Z1ptRnNjMlVwTzF4eVhHNGdJQ0FnZlR0Y2NseHVJQ0FnSUM4cUtpQlNaWFIxY201eklIUm9aU0J1WlhoMElIQmhhWElnZDJodmMyVWdhMlY1SUdseklHeGhjbWRsY2lCMGFHRnVJSFJvWlNCemNHVmphV1pwWldRZ2EyVjVJQ2h2Y2lCMWJtUmxabWx1WldRZ2FXWWdkR2hsY21VZ2FYTWdibTl1WlNrdVhISmNiaUFnSUNBZ0tpQkpaaUJyWlhrZ1BUMDlJSFZ1WkdWbWFXNWxaQ3dnZEdocGN5Qm1kVzVqZEdsdmJpQnlaWFIxY201eklIUm9aU0JzYjNkbGMzUWdjR0ZwY2k1Y2NseHVJQ0FnSUNBcUlFQndZWEpoYlNCclpYa2dWR2hsSUd0bGVTQjBieUJ6WldGeVkyZ2dabTl5TGx4eVhHNGdJQ0FnSUNvZ1FIQmhjbUZ0SUhKbGRYTmxaRUZ5Y21GNUlFOXdkR2x2Ym1Gc0lHRnljbUY1SUhWelpXUWdjbVZ3WldGMFpXUnNlU0IwYnlCemRHOXlaU0JyWlhrdGRtRnNkV1VnY0dGcGNuTXNJSFJ2WEhKY2JpQWdJQ0FnS2lCaGRtOXBaQ0JqY21WaGRHbHVaeUJoSUc1bGR5QmhjbkpoZVNCdmJpQmxkbVZ5ZVNCcGRHVnlZWFJwYjI0dVhISmNiaUFnSUNBZ0tpOWNjbHh1SUNBZ0lFSlVjbVZsTG5CeWIzUnZkSGx3WlM1dVpYaDBTR2xuYUdWeVVHRnBjaUE5SUdaMWJtTjBhVzl1SUNoclpYa3NJSEpsZFhObFpFRnljbUY1S1NCN1hISmNiaUFnSUNBZ0lDQWdjbVYxYzJWa1FYSnlZWGtnUFNCeVpYVnpaV1JCY25KaGVTQjhmQ0JiWFR0Y2NseHVJQ0FnSUNBZ0lDQnBaaUFvYTJWNUlEMDlQU0IxYm1SbFptbHVaV1FwSUh0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJSFJvYVhNdVgzSnZiM1F1YldsdVVHRnBjaWh5WlhWelpXUkJjbkpoZVNrN1hISmNiaUFnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUIwYUdsekxsOXliMjkwTG1kbGRGQmhhWEpQY2s1bGVIUklhV2RvWlhJb2EyVjVMQ0IwYUdsekxsOWpiMjF3WVhKbExDQm1ZV3h6WlN3Z2NtVjFjMlZrUVhKeVlYa3BPMXh5WEc0Z0lDQWdmVHRjY2x4dUlDQWdJQzhxS2lCU1pYUjFjbTV6SUhSb1pTQnVaWGgwSUd0bGVTQnNZWEpuWlhJZ2RHaGhiaUIwYUdVZ2MzQmxZMmxtYVdWa0lHdGxlU3dnYjNJZ2RXNWtaV1pwYm1Wa0lHbG1JSFJvWlhKbElHbHpJRzV2Ym1VdVhISmNiaUFnSUNBZ0tpQWdRV3h6Ynl3Z2JtVjRkRWhwWjJobGNrdGxlU2gxYm1SbFptbHVaV1FwSUhKbGRIVnlibk1nZEdobElHeHZkMlZ6ZENCclpYa3VYSEpjYmlBZ0lDQWdLaTljY2x4dUlDQWdJRUpVY21WbExuQnliM1J2ZEhsd1pTNXVaWGgwU0dsbmFHVnlTMlY1SUQwZ1puVnVZM1JwYjI0Z0tHdGxlU2tnZTF4eVhHNGdJQ0FnSUNBZ0lIWmhjaUJ3SUQwZ2RHaHBjeTV1WlhoMFNHbG5hR1Z5VUdGcGNpaHJaWGtzSUZKbGRYTmxaRUZ5Y21GNUtUdGNjbHh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdjQ0FtSmlCd1d6QmRPMXh5WEc0Z0lDQWdmVHRjY2x4dUlDQWdJQzhxS2lCU1pYUjFjbTV6SUhSb1pTQnVaWGgwSUhCaGFYSWdkMmh2YzJVZ2EyVjVJR2x6SUhOdFlXeHNaWElnZEdoaGJpQjBhR1VnYzNCbFkybG1hV1ZrSUd0bGVTQW9iM0lnZFc1a1pXWnBibVZrSUdsbUlIUm9aWEpsSUdseklHNXZibVVwTGx4eVhHNGdJQ0FnSUNvZ0lFbG1JR3RsZVNBOVBUMGdkVzVrWldacGJtVmtMQ0IwYUdseklHWjFibU4wYVc5dUlISmxkSFZ5Ym5NZ2RHaGxJR2hwWjJobGMzUWdjR0ZwY2k1Y2NseHVJQ0FnSUNBcUlFQndZWEpoYlNCclpYa2dWR2hsSUd0bGVTQjBieUJ6WldGeVkyZ2dabTl5TGx4eVhHNGdJQ0FnSUNvZ1FIQmhjbUZ0SUhKbGRYTmxaRUZ5Y21GNUlFOXdkR2x2Ym1Gc0lHRnljbUY1SUhWelpXUWdjbVZ3WldGMFpXUnNlU0IwYnlCemRHOXlaU0JyWlhrdGRtRnNkV1VnY0dGcGNuTXNJSFJ2WEhKY2JpQWdJQ0FnS2lBZ0lDQWdJQ0FnWVhadmFXUWdZM0psWVhScGJtY2dZU0J1WlhjZ1lYSnlZWGtnWldGamFDQjBhVzFsSUhsdmRTQmpZV3hzSUhSb2FYTWdiV1YwYUc5a0xseHlYRzRnSUNBZ0lDb3ZYSEpjYmlBZ0lDQkNWSEpsWlM1d2NtOTBiM1I1Y0dVdWJtVjRkRXh2ZDJWeVVHRnBjaUE5SUdaMWJtTjBhVzl1SUNoclpYa3NJSEpsZFhObFpFRnljbUY1S1NCN1hISmNiaUFnSUNBZ0lDQWdjbVYxYzJWa1FYSnlZWGtnUFNCeVpYVnpaV1JCY25KaGVTQjhmQ0JiWFR0Y2NseHVJQ0FnSUNBZ0lDQnBaaUFvYTJWNUlEMDlQU0IxYm1SbFptbHVaV1FwSUh0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJSFJvYVhNdVgzSnZiM1F1YldGNFVHRnBjaWh5WlhWelpXUkJjbkpoZVNrN1hISmNiaUFnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUIwYUdsekxsOXliMjkwTG1kbGRGQmhhWEpQY2s1bGVIUk1iM2RsY2loclpYa3NJSFJvYVhNdVgyTnZiWEJoY21Vc0lHWmhiSE5sTENCeVpYVnpaV1JCY25KaGVTazdYSEpjYmlBZ0lDQjlPMXh5WEc0Z0lDQWdMeW9xSUZKbGRIVnlibk1nZEdobElHNWxlSFFnYTJWNUlITnRZV3hzWlhJZ2RHaGhiaUIwYUdVZ2MzQmxZMmxtYVdWa0lHdGxlU3dnYjNJZ2RXNWtaV1pwYm1Wa0lHbG1JSFJvWlhKbElHbHpJRzV2Ym1VdVhISmNiaUFnSUNBZ0tpQWdRV3h6Ynl3Z2JtVjRkRXh2ZDJWeVMyVjVLSFZ1WkdWbWFXNWxaQ2tnY21WMGRYSnVjeUIwYUdVZ2FHbG5hR1Z6ZENCclpYa3VYSEpjYmlBZ0lDQWdLaTljY2x4dUlDQWdJRUpVY21WbExuQnliM1J2ZEhsd1pTNXVaWGgwVEc5M1pYSkxaWGtnUFNCbWRXNWpkR2x2YmlBb2EyVjVLU0I3WEhKY2JpQWdJQ0FnSUNBZ2RtRnlJSEFnUFNCMGFHbHpMbTVsZUhSTWIzZGxjbEJoYVhJb2EyVjVMQ0JTWlhWelpXUkJjbkpoZVNrN1hISmNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlIQWdKaVlnY0Zzd1hUdGNjbHh1SUNBZ0lIMDdYSEpjYmlBZ0lDQXZLaW9nVW1WMGRYSnVjeUIwYUdVZ2EyVjVMWFpoYkhWbElIQmhhWElnWVhOemIyTnBZWFJsWkNCM2FYUm9JSFJvWlNCemRYQndiR2xsWkNCclpYa2dhV1lnYVhRZ1pYaHBjM1J6WEhKY2JpQWdJQ0FnS2lBZ2IzSWdkR2hsSUhCaGFYSWdZWE56YjJOcFlYUmxaQ0IzYVhSb0lIUm9aU0J1WlhoMElHeHZkMlZ5SUhCaGFYSWdiM1JvWlhKM2FYTmxMaUJKWmlCMGFHVnlaU0JwY3lCdWIxeHlYRzRnSUNBZ0lDb2dJRzVsZUhRZ2JHOTNaWElnY0dGcGNpd2dkVzVrWldacGJtVmtJR2x6SUhKbGRIVnlibVZrTGx4eVhHNGdJQ0FnSUNvZ1FIQmhjbUZ0SUd0bGVTQlVhR1VnYTJWNUlIUnZJSE5sWVhKamFDQm1iM0l1WEhKY2JpQWdJQ0FnS2lCQWNHRnlZVzBnY21WMWMyVmtRWEp5WVhrZ1QzQjBhVzl1WVd3Z1lYSnlZWGtnZFhObFpDQnlaWEJsWVhSbFpHeDVJSFJ2SUhOMGIzSmxJR3RsZVMxMllXeDFaU0J3WVdseWN5d2dkRzljY2x4dUlDQWdJQ0FxSUNBZ0lDQWdJQ0JoZG05cFpDQmpjbVZoZEdsdVp5QmhJRzVsZHlCaGNuSmhlU0JsWVdOb0lIUnBiV1VnZVc5MUlHTmhiR3dnZEdocGN5QnRaWFJvYjJRdVhISmNiaUFnSUNBZ0tpQXFMMXh5WEc0Z0lDQWdRbFJ5WldVdWNISnZkRzkwZVhCbExtZGxkRkJoYVhKUGNrNWxlSFJNYjNkbGNpQTlJR1oxYm1OMGFXOXVJQ2hyWlhrc0lISmxkWE5sWkVGeWNtRjVLU0I3WEhKY2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUhSb2FYTXVYM0p2YjNRdVoyVjBVR0ZwY2s5eVRtVjRkRXh2ZDJWeUtHdGxlU3dnZEdocGN5NWZZMjl0Y0dGeVpTd2dkSEoxWlN3Z2NtVjFjMlZrUVhKeVlYa2dmSHdnVzEwcE8xeHlYRzRnSUNBZ2ZUdGNjbHh1SUNBZ0lDOHFLaUJTWlhSMWNtNXpJSFJvWlNCclpYa3RkbUZzZFdVZ2NHRnBjaUJoYzNOdlkybGhkR1ZrSUhkcGRHZ2dkR2hsSUhOMWNIQnNhV1ZrSUd0bGVTQnBaaUJwZENCbGVHbHpkSE5jY2x4dUlDQWdJQ0FxSUNCdmNpQjBhR1VnY0dGcGNpQmhjM052WTJsaGRHVmtJSGRwZEdnZ2RHaGxJRzVsZUhRZ2JHOTNaWElnY0dGcGNpQnZkR2hsY25kcGMyVXVJRWxtSUhSb1pYSmxJR2x6SUc1dlhISmNiaUFnSUNBZ0tpQWdibVY0ZENCc2IzZGxjaUJ3WVdseUxDQjFibVJsWm1sdVpXUWdhWE1nY21WMGRYSnVaV1F1WEhKY2JpQWdJQ0FnS2lCQWNHRnlZVzBnYTJWNUlGUm9aU0JyWlhrZ2RHOGdjMlZoY21Ob0lHWnZjaTVjY2x4dUlDQWdJQ0FxSUVCd1lYSmhiU0J5WlhWelpXUkJjbkpoZVNCUGNIUnBiMjVoYkNCaGNuSmhlU0IxYzJWa0lISmxjR1ZoZEdWa2JIa2dkRzhnYzNSdmNtVWdhMlY1TFhaaGJIVmxJSEJoYVhKekxDQjBiMXh5WEc0Z0lDQWdJQ29nSUNBZ0lDQWdJR0YyYjJsa0lHTnlaV0YwYVc1bklHRWdibVYzSUdGeWNtRjVJR1ZoWTJnZ2RHbHRaU0I1YjNVZ1kyRnNiQ0IwYUdseklHMWxkR2h2WkM1Y2NseHVJQ0FnSUNBcUlDb3ZYSEpjYmlBZ0lDQkNWSEpsWlM1d2NtOTBiM1I1Y0dVdVoyVjBVR0ZwY2s5eVRtVjRkRWhwWjJobGNpQTlJR1oxYm1OMGFXOXVJQ2hyWlhrc0lISmxkWE5sWkVGeWNtRjVLU0I3WEhKY2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUhSb2FYTXVYM0p2YjNRdVoyVjBVR0ZwY2s5eVRtVjRkRWhwWjJobGNpaHJaWGtzSUhSb2FYTXVYMk52YlhCaGNtVXNJSFJ5ZFdVc0lISmxkWE5sWkVGeWNtRjVJSHg4SUZ0ZEtUdGNjbHh1SUNBZ0lIMDdYSEpjYmlBZ0lDQXZLaW9nUldScGRITWdkR2hsSUhaaGJIVmxJR0Z6YzI5amFXRjBaV1FnZDJsMGFDQmhJR3RsZVNCcGJpQjBhR1VnZEhKbFpTd2dhV1lnYVhRZ1lXeHlaV0ZrZVNCbGVHbHpkSE11WEhKY2JpQWdJQ0FnS2lCQWNtVjBkWEp1Y3lCMGNuVmxJR2xtSUhSb1pTQnJaWGtnWlhocGMzUmxaQ3dnWm1Gc2MyVWdhV1lnYm05MExseHlYRzRnSUNBZ0tpOWNjbHh1SUNBZ0lFSlVjbVZsTG5CeWIzUnZkSGx3WlM1amFHRnVaMlZKWmxCeVpYTmxiblFnUFNCbWRXNWpkR2x2YmlBb2EyVjVMQ0IyWVd4MVpTa2dlMXh5WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUIwYUdsekxtVmthWFJTWVc1blpTaHJaWGtzSUd0bGVTd2dkSEoxWlN3Z1puVnVZM1JwYjI0Z0tHc3NJSFlwSUhzZ2NtVjBkWEp1SUNoN0lIWmhiSFZsT2lCMllXeDFaU0I5S1RzZ2ZTa2dJVDA5SURBN1hISmNiaUFnSUNCOU8xeHlYRzRnSUNBZ0x5b3FYSEpjYmlBZ0lDQWdLaUJDZFdsc1pITWdZVzRnWVhKeVlYa2diMllnY0dGcGNuTWdabkp2YlNCMGFHVWdjM0JsWTJsbWFXVmtJSEpoYm1kbElHOW1JR3RsZVhNc0lITnZjblJsWkNCaWVTQnJaWGt1WEhKY2JpQWdJQ0FnS2lCRllXTm9JSEpsZEhWeWJtVmtJSEJoYVhJZ2FYTWdZV3h6YnlCaGJpQmhjbkpoZVRvZ2NHRnBjbHN3WFNCcGN5QjBhR1VnYTJWNUxDQndZV2x5V3pGZElHbHpJSFJvWlNCMllXeDFaUzVjY2x4dUlDQWdJQ0FxSUVCd1lYSmhiU0JzYjNjZ1ZHaGxJR1pwY25OMElHdGxlU0JwYmlCMGFHVWdZWEp5WVhrZ2QybHNiQ0JpWlNCbmNtVmhkR1Z5SUhSb1lXNGdiM0lnWlhGMVlXd2dkRzhnWUd4dmQyQXVYSEpjYmlBZ0lDQWdLaUJBY0dGeVlXMGdhR2xuYUNCVWFHbHpJRzFsZEdodlpDQnlaWFIxY201eklIZG9aVzRnWVNCclpYa2diR0Z5WjJWeUlIUm9ZVzRnZEdocGN5QnBjeUJ5WldGamFHVmtMbHh5WEc0Z0lDQWdJQ29nUUhCaGNtRnRJR2x1WTJ4MVpHVklhV2RvSUVsbUlIUm9aU0JnYUdsbmFHQWdhMlY1SUdseklIQnlaWE5sYm5Rc0lHbDBjeUJ3WVdseUlIZHBiR3dnWW1VZ2FXNWpiSFZrWldSY2NseHVJQ0FnSUNBcUlDQWdJQ0FnSUNCcGJpQjBhR1VnYjNWMGNIVjBJR2xtSUdGdVpDQnZibXg1SUdsbUlIUm9hWE1nY0dGeVlXMWxkR1Z5SUdseklIUnlkV1V1SUU1dmRHVTZJR2xtSUhSb1pWeHlYRzRnSUNBZ0lDb2dJQ0FnSUNBZ0lHQnNiM2RnSUd0bGVTQnBjeUJ3Y21WelpXNTBMQ0JwZENCcGN5QmhiSGRoZVhNZ2FXNWpiSFZrWldRZ2FXNGdkR2hsSUc5MWRIQjFkQzVjY2x4dUlDQWdJQ0FxSUVCd1lYSmhiU0J0WVhoTVpXNW5kR2dnVEdWdVozUm9JR3hwYldsMExpQm5aWFJTWVc1blpTQjNhV3hzSUhOMGIzQWdjMk5oYm01cGJtY2dkR2hsSUhSeVpXVWdkMmhsYmx4eVhHNGdJQ0FnSUNvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCMGFHVWdZWEp5WVhrZ2NtVmhZMmhsY3lCMGFHbHpJSE5wZW1VdVhISmNiaUFnSUNBZ0tpQkFaR1Z6WTNKcGNIUnBiMjRnUTI5dGNIVjBZWFJwYjI1aGJDQmpiMjF3YkdWNGFYUjVPaUJQS0hKbGMzVnNkQzVzWlc1bmRHZ2dLeUJzYjJjZ2MybDZaU2xjY2x4dUlDQWdJQ0FxTDF4eVhHNGdJQ0FnUWxSeVpXVXVjSEp2ZEc5MGVYQmxMbWRsZEZKaGJtZGxJRDBnWm5WdVkzUnBiMjRnS0d4dmR5d2dhR2xuYUN3Z2FXNWpiSFZrWlVocFoyZ3NJRzFoZUV4bGJtZDBhQ2tnZTF4eVhHNGdJQ0FnSUNBZ0lHbG1JQ2h0WVhoTVpXNW5kR2dnUFQwOUlIWnZhV1FnTUNrZ2V5QnRZWGhNWlc1bmRHZ2dQU0F3ZUROR1JrWkdSa1k3SUgxY2NseHVJQ0FnSUNBZ0lDQjJZWElnY21WemRXeDBjeUE5SUZ0ZE8xeHlYRzRnSUNBZ0lDQWdJSFJvYVhNdVgzSnZiM1F1Wm05eVVtRnVaMlVvYkc5M0xDQm9hV2RvTENCcGJtTnNkV1JsU0dsbmFDd2dabUZzYzJVc0lIUm9hWE1zSURBc0lHWjFibU4wYVc5dUlDaHJMQ0IyS1NCN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGMzVnNkSE11Y0hWemFDaGJheXdnZGwwcE8xeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnY21WemRXeDBjeTVzWlc1bmRHZ2dQaUJ0WVhoTVpXNW5kR2dnUHlCQ2NtVmhheUE2SUhWdVpHVm1hVzVsWkR0Y2NseHVJQ0FnSUNBZ0lDQjlLVHRjY2x4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnY21WemRXeDBjenRjY2x4dUlDQWdJSDA3WEhKY2JpQWdJQ0F2S2lvZ1FXUmtjeUJoYkd3Z2NHRnBjbk1nWm5KdmJTQmhJR3hwYzNRZ2IyWWdhMlY1TFhaaGJIVmxJSEJoYVhKekxseHlYRzRnSUNBZ0lDb2dRSEJoY21GdElIQmhhWEp6SUZCaGFYSnpJSFJ2SUdGa1pDQjBieUIwYUdseklIUnlaV1V1SUVsbUlIUm9aWEpsSUdGeVpTQmtkWEJzYVdOaGRHVWdhMlY1Y3l4Y2NseHVJQ0FnSUNBcUlDQWdJQ0FnSUNCc1lYUmxjaUJ3WVdseWN5QmpkWEp5Wlc1MGJIa2diM1psY25keWFYUmxJR1ZoY214cFpYSWdiMjVsY3lBb1pTNW5MaUJiV3pBc01WMHNXekFzTjExZFhISmNiaUFnSUNBZ0tpQWdJQ0FnSUNBZ1lYTnpiMk5wWVhSbGN5QXdJSGRwZEdnZ055NHBYSEpjYmlBZ0lDQWdLaUJBY0dGeVlXMGdiM1psY25keWFYUmxJRmRvWlhSb1pYSWdkRzhnYjNabGNuZHlhWFJsSUhCaGFYSnpJSFJvWVhRZ1lXeHlaV0ZrZVNCbGVHbHpkQ0FvYVdZZ1ptRnNjMlVzWEhKY2JpQWdJQ0FnS2lBZ0lDQWdJQ0FnY0dGcGNuTmJhVjBnYVhNZ2FXZHViM0psWkNCM2FHVnVJSFJvWlNCclpYa2djR0ZwY25OYmFWMWJNRjBnWVd4eVpXRmtlU0JsZUdsemRITXVLVnh5WEc0Z0lDQWdJQ29nUUhKbGRIVnlibk1nVkdobElHNTFiV0psY2lCdlppQndZV2x5Y3lCaFpHUmxaQ0IwYnlCMGFHVWdZMjlzYkdWamRHbHZiaTVjY2x4dUlDQWdJQ0FxSUVCa1pYTmpjbWx3ZEdsdmJpQkRiMjF3ZFhSaGRHbHZibUZzSUdOdmJYQnNaWGhwZEhrNklFOG9jR0ZwY25NdWJHVnVaM1JvSUNvZ2JHOW5LSE5wZW1VZ0t5QndZV2x5Y3k1c1pXNW5kR2dwS1Z4eVhHNGdJQ0FnSUNvdlhISmNiaUFnSUNCQ1ZISmxaUzV3Y205MGIzUjVjR1V1YzJWMFVHRnBjbk1nUFNCbWRXNWpkR2x2YmlBb2NHRnBjbk1zSUc5MlpYSjNjbWwwWlNrZ2UxeHlYRzRnSUNBZ0lDQWdJSFpoY2lCaFpHUmxaQ0E5SURBN1hISmNiaUFnSUNBZ0lDQWdabTl5SUNoMllYSWdhU0E5SURBN0lHa2dQQ0J3WVdseWN5NXNaVzVuZEdnN0lHa3JLeWxjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lnS0hSb2FYTXVjMlYwS0hCaGFYSnpXMmxkV3pCZExDQndZV2x5YzF0cFhWc3hYU3dnYjNabGNuZHlhWFJsS1NsY2NseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHRmtaR1ZrS3lzN1hISmNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlHRmtaR1ZrTzF4eVhHNGdJQ0FnZlR0Y2NseHVJQ0FnSUM4cUtseHlYRzRnSUNBZ0lDb2dVMk5oYm5NZ2RHaGxJSE53WldOcFptbGxaQ0J5WVc1blpTQnZaaUJyWlhsekxDQnBiaUJoYzJObGJtUnBibWNnYjNKa1pYSWdZbmtnYTJWNUxseHlYRzRnSUNBZ0lDb2dUbTkwWlRvZ2RHaGxJR05oYkd4aVlXTnJJR0J2YmtadmRXNWtZQ0J0ZFhOMElHNXZkQ0JwYm5ObGNuUWdiM0lnY21WdGIzWmxJR2wwWlcxeklHbHVJSFJvWlZ4eVhHNGdJQ0FnSUNvZ1kyOXNiR1ZqZEdsdmJpNGdSRzlwYm1jZ2MyOGdiV0Y1SUdOaGRYTmxJR2x1WTI5eWNtVmpkQ0JrWVhSaElIUnZJR0psSUhObGJuUWdkRzhnZEdobFhISmNiaUFnSUNBZ0tpQmpZV3hzWW1GamF5QmhablJsY25kaGNtUXVYSEpjYmlBZ0lDQWdLaUJBY0dGeVlXMGdiRzkzSUZSb1pTQm1hWEp6ZENCclpYa2djMk5oYm01bFpDQjNhV3hzSUdKbElHZHlaV0YwWlhJZ2RHaGhiaUJ2Y2lCbGNYVmhiQ0IwYnlCZ2JHOTNZQzVjY2x4dUlDQWdJQ0FxSUVCd1lYSmhiU0JvYVdkb0lGTmpZVzV1YVc1bklITjBiM0J6SUhkb1pXNGdZU0JyWlhrZ2JHRnlaMlZ5SUhSb1lXNGdkR2hwY3lCcGN5QnlaV0ZqYUdWa0xseHlYRzRnSUNBZ0lDb2dRSEJoY21GdElHbHVZMngxWkdWSWFXZG9JRWxtSUhSb1pTQmdhR2xuYUdBZ2EyVjVJR2x6SUhCeVpYTmxiblFzSUdCdmJrWnZkVzVrWUNCcGN5QmpZV3hzWldRZ1ptOXlYSEpjYmlBZ0lDQWdLaUFnSUNBZ0lDQWdkR2hoZENCbWFXNWhiQ0J3WVdseUlHbG1JR0Z1WkNCdmJteDVJR2xtSUhSb2FYTWdjR0Z5WVcxbGRHVnlJR2x6SUhSeWRXVXVYSEpjYmlBZ0lDQWdLaUJBY0dGeVlXMGdiMjVHYjNWdVpDQkJJR1oxYm1OMGFXOXVJSFJvWVhRZ2FYTWdZMkZzYkdWa0lHWnZjaUJsWVdOb0lHdGxlUzEyWVd4MVpTQndZV2x5TGlCVWFHbHpYSEpjYmlBZ0lDQWdLaUFnSUNBZ0lDQWdablZ1WTNScGIyNGdZMkZ1SUhKbGRIVnliaUI3WW5KbFlXczZVbjBnZEc4Z2MzUnZjQ0JsWVhKc2VTQjNhWFJvSUhKbGMzVnNkQ0JTTGx4eVhHNGdJQ0FnSUNvZ1FIQmhjbUZ0SUdsdWFYUnBZV3hEYjNWdWRHVnlJRWx1YVhScFlXd2dkR2hwY21RZ1lYSm5kVzFsYm5RZ2IyWWdiMjVHYjNWdVpDNGdWR2hwY3lCMllXeDFaVnh5WEc0Z0lDQWdJQ29nSUNBZ0lDQWdJR2x1WTNKbFlYTmxjeUJpZVNCdmJtVWdaV0ZqYUNCMGFXMWxJR0J2YmtadmRXNWtZQ0JwY3lCallXeHNaV1F1SUVSbFptRjFiSFE2SURCY2NseHVJQ0FnSUNBcUlFQnlaWFIxY201eklGUm9aU0J1ZFcxaVpYSWdiMllnZG1Gc2RXVnpJR1p2ZFc1a0xDQnZjaUJTSUdsbUlIUm9aU0JqWVd4c1ltRmpheUJ5WlhSMWNtNWxaRnh5WEc0Z0lDQWdJQ29nSUNBZ0lDQWdJR0I3WW5KbFlXczZVbjFnSUhSdklITjBiM0FnWldGeWJIa3VYSEpjYmlBZ0lDQWdLaUJBWkdWelkzSnBjSFJwYjI0Z1EyOXRjSFYwWVhScGIyNWhiQ0JqYjIxd2JHVjRhWFI1T2lCUEtHNTFiV0psY2lCdlppQnBkR1Z0Y3lCelkyRnVibVZrSUNzZ2JHOW5JSE5wZW1VcFhISmNiaUFnSUNBZ0tpOWNjbHh1SUNBZ0lFSlVjbVZsTG5CeWIzUnZkSGx3WlM1bWIzSlNZVzVuWlNBOUlHWjFibU4wYVc5dUlDaHNiM2NzSUdocFoyZ3NJR2x1WTJ4MVpHVklhV2RvTENCdmJrWnZkVzVrTENCcGJtbDBhV0ZzUTI5MWJuUmxjaWtnZTF4eVhHNGdJQ0FnSUNBZ0lIWmhjaUJ5SUQwZ2RHaHBjeTVmY205dmRDNW1iM0pTWVc1blpTaHNiM2NzSUdocFoyZ3NJR2x1WTJ4MVpHVklhV2RvTENCbVlXeHpaU3dnZEdocGN5d2dhVzVwZEdsaGJFTnZkVzUwWlhJZ2ZId2dNQ3dnYjI1R2IzVnVaQ2s3WEhKY2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUhSNWNHVnZaaUJ5SUQwOVBTQmNJbTUxYldKbGNsd2lJRDhnY2lBNklISXVZbkpsWVdzN1hISmNiaUFnSUNCOU8xeHlYRzRnSUNBZ0x5b3FYSEpjYmlBZ0lDQWdLaUJUWTJGdWN5QmhibVFnY0c5MFpXNTBhV0ZzYkhrZ2JXOWthV1pwWlhNZ2RtRnNkV1Z6SUdadmNpQmhJSE4xWW5ObGNYVmxibU5sSUc5bUlHdGxlWE11WEhKY2JpQWdJQ0FnS2lCT2IzUmxPaUIwYUdVZ1kyRnNiR0poWTJzZ1lHOXVSbTkxYm1SZ0lITm9iM1ZzWkNCcFpHVmhiR3g1SUdKbElHRWdjSFZ5WlNCbWRXNWpkR2x2Ymk1Y2NseHVJQ0FnSUNBcUlDQWdVM0JsWTJacFkyRnNiSGtzSUdsMElHMTFjM1FnYm05MElHbHVjMlZ5ZENCcGRHVnRjeXdnWTJGc2JDQmpiRzl1WlNncExDQnZjaUJqYUdGdVoyVmNjbHh1SUNBZ0lDQXFJQ0FnZEdobElHTnZiR3hsWTNScGIyNGdaWGhqWlhCMElIWnBZU0J5WlhSMWNtNGdkbUZzZFdVN0lHOTFkQzF2WmkxaVlXNWtJR1ZrYVhScGJtY2diV0Y1WEhKY2JpQWdJQ0FnS2lBZ0lHTmhkWE5sSUdGdUlHVjRZMlZ3ZEdsdmJpQnZjaUJ0WVhrZ1kyRjFjMlVnYVc1amIzSnlaV04wSUdSaGRHRWdkRzhnWW1VZ2MyVnVkQ0IwYjF4eVhHNGdJQ0FnSUNvZ0lDQjBhR1VnWTJGc2JHSmhZMnNnS0dSMWNHeHBZMkYwWlNCdmNpQnRhWE56WldRZ2FYUmxiWE1wTGlCSmRDQnRkWE4wSUc1dmRDQmpZWFZ6WlNCaFhISmNiaUFnSUNBZ0tpQWdJR05zYjI1bEtDa2diMllnZEdobElHTnZiR3hsWTNScGIyNHNJRzkwYUdWeWQybHpaU0IwYUdVZ1kyeHZibVVnWTI5MWJHUWdZbVVnYlc5a2FXWnBaV1JjY2x4dUlDQWdJQ0FxSUNBZ1lua2dZMmhoYm1kbGN5QnlaWEYxWlhOMFpXUWdZbmtnZEdobElHTmhiR3hpWVdOckxseHlYRzRnSUNBZ0lDb2dRSEJoY21GdElHeHZkeUJVYUdVZ1ptbHljM1FnYTJWNUlITmpZVzV1WldRZ2QybHNiQ0JpWlNCbmNtVmhkR1Z5SUhSb1lXNGdiM0lnWlhGMVlXd2dkRzhnWUd4dmQyQXVYSEpjYmlBZ0lDQWdLaUJBY0dGeVlXMGdhR2xuYUNCVFkyRnVibWx1WnlCemRHOXdjeUIzYUdWdUlHRWdhMlY1SUd4aGNtZGxjaUIwYUdGdUlIUm9hWE1nYVhNZ2NtVmhZMmhsWkM1Y2NseHVJQ0FnSUNBcUlFQndZWEpoYlNCcGJtTnNkV1JsU0dsbmFDQkpaaUIwYUdVZ1lHaHBaMmhnSUd0bGVTQnBjeUJ3Y21WelpXNTBMQ0JnYjI1R2IzVnVaR0FnYVhNZ1kyRnNiR1ZrSUdadmNseHlYRzRnSUNBZ0lDb2dJQ0FnSUNBZ0lIUm9ZWFFnWm1sdVlXd2djR0ZwY2lCcFppQmhibVFnYjI1c2VTQnBaaUIwYUdseklIQmhjbUZ0WlhSbGNpQnBjeUIwY25WbExseHlYRzRnSUNBZ0lDb2dRSEJoY21GdElHOXVSbTkxYm1RZ1FTQm1kVzVqZEdsdmJpQjBhR0YwSUdseklHTmhiR3hsWkNCbWIzSWdaV0ZqYUNCclpYa3RkbUZzZFdVZ2NHRnBjaTRnVkdocGMxeHlYRzRnSUNBZ0lDb2dJQ0FnSUNBZ0lHWjFibU4wYVc5dUlHTmhiaUJ5WlhSMWNtNGdZSHQyWVd4MVpUcDJmV0FnZEc4Z1kyaGhibWRsSUhSb1pTQjJZV3gxWlNCaGMzTnZZMmxoZEdWa1hISmNiaUFnSUNBZ0tpQWdJQ0FnSUNBZ2QybDBhQ0IwYUdVZ1kzVnljbVZ1ZENCclpYa3NJR0I3WkdWc1pYUmxPblJ5ZFdWOVlDQjBieUJrWld4bGRHVWdkR2hsSUdOMWNuSmxiblFnY0dGcGNpeGNjbHh1SUNBZ0lDQXFJQ0FnSUNBZ0lDQmdlMkp5WldGck9sSjlZQ0IwYnlCemRHOXdJR1ZoY214NUlIZHBkR2dnY21WemRXeDBJRklzSUc5eUlHbDBJR05oYmlCeVpYUjFjbTRnYm05MGFHbHVaMXh5WEc0Z0lDQWdJQ29nSUNBZ0lDQWdJQ2gxYm1SbFptbHVaV1FnYjNJZ2UzMHBJSFJ2SUdOaGRYTmxJRzV2SUdWbVptVmpkQ0JoYm1RZ1kyOXVkR2x1ZFdVZ2FYUmxjbUYwYVc1bkxseHlYRzRnSUNBZ0lDb2dJQ0FnSUNBZ0lHQjdZbkpsWVdzNlVuMWdJR05oYmlCaVpTQmpiMjFpYVc1bFpDQjNhWFJvSUc5dVpTQnZaaUIwYUdVZ2IzUm9aWElnZEhkdklHTnZiVzFoYm1SekxseHlYRzRnSUNBZ0lDb2dJQ0FnSUNBZ0lGUm9aU0IwYUdseVpDQmhjbWQxYldWdWRDQmdZMjkxYm5SbGNtQWdhWE1nZEdobElHNTFiV0psY2lCdlppQnBkR1Z0Y3lCcGRHVnlZWFJsWkZ4eVhHNGdJQ0FnSUNvZ0lDQWdJQ0FnSUhCeVpYWnBiM1Z6YkhrN0lHbDBJR1Z4ZFdGc2N5QXdJSGRvWlc0Z1lHOXVSbTkxYm1SZ0lHbHpJR05oYkd4bFpDQjBhR1VnWm1seWMzUWdkR2x0WlM1Y2NseHVJQ0FnSUNBcUlFQnlaWFIxY201eklGUm9aU0J1ZFcxaVpYSWdiMllnZG1Gc2RXVnpJSE5qWVc1dVpXUXNJRzl5SUZJZ2FXWWdkR2hsSUdOaGJHeGlZV05ySUhKbGRIVnlibVZrWEhKY2JpQWdJQ0FnS2lBZ0lDQWdJQ0FnWUh0aWNtVmhhenBTZldBZ2RHOGdjM1J2Y0NCbFlYSnNlUzVjY2x4dUlDQWdJQ0FxSUVCa1pYTmpjbWx3ZEdsdmJseHlYRzRnSUNBZ0lDb2dJQ0JEYjIxd2RYUmhkR2x2Ym1Gc0lHTnZiWEJzWlhocGRIazZJRThvYm5WdFltVnlJRzltSUdsMFpXMXpJSE5qWVc1dVpXUWdLeUJzYjJjZ2MybDZaU2xjY2x4dUlDQWdJQ0FxSUNBZ1RtOTBaVG9nYVdZZ2RHaGxJSFJ5WldVZ2FHRnpJR0psWlc0Z1kyeHZibVZrSUhkcGRHZ2dZMnh2Ym1Vb0tTd2dZVzU1SUhOb1lYSmxaRnh5WEc0Z0lDQWdJQ29nSUNCdWIyUmxjeUJoY21VZ1kyOXdhV1ZrSUdKbFptOXlaU0JnYjI1R2IzVnVaR0FnYVhNZ1kyRnNiR1ZrTGlCVWFHbHpJSFJoYTJWeklFOG9iaWtnZEdsdFpWeHlYRzRnSUNBZ0lDb2dJQ0IzYUdWeVpTQnVJR2x6SUhCeWIzQnZjblJwYjI1aGJDQjBieUIwYUdVZ1lXMXZkVzUwSUc5bUlITm9ZWEpsWkNCa1lYUmhJSE5qWVc1dVpXUXVYSEpjYmlBZ0lDQWdLaTljY2x4dUlDQWdJRUpVY21WbExuQnliM1J2ZEhsd1pTNWxaR2wwVW1GdVoyVWdQU0JtZFc1amRHbHZiaUFvYkc5M0xDQm9hV2RvTENCcGJtTnNkV1JsU0dsbmFDd2diMjVHYjNWdVpDd2dhVzVwZEdsaGJFTnZkVzUwWlhJcElIdGNjbHh1SUNBZ0lDQWdJQ0IyWVhJZ2NtOXZkQ0E5SUhSb2FYTXVYM0p2YjNRN1hISmNiaUFnSUNBZ0lDQWdhV1lnS0hKdmIzUXVhWE5UYUdGeVpXUXBYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lIUm9hWE11WDNKdmIzUWdQU0J5YjI5MElEMGdjbTl2ZEM1amJHOXVaU2dwTzF4eVhHNGdJQ0FnSUNBZ0lIUnllU0I3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJSFpoY2lCeUlEMGdjbTl2ZEM1bWIzSlNZVzVuWlNoc2IzY3NJR2hwWjJnc0lHbHVZMngxWkdWSWFXZG9MQ0IwY25WbExDQjBhR2x6TENCcGJtbDBhV0ZzUTI5MWJuUmxjaUI4ZkNBd0xDQnZia1p2ZFc1a0tUdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhSNWNHVnZaaUJ5SUQwOVBTQmNJbTUxYldKbGNsd2lJRDhnY2lBNklISXVZbkpsWVdzN1hISmNiaUFnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdJQ0FnSUdacGJtRnNiSGtnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0IyWVhJZ2FYTlRhR0Z5WldRZ1BTQjJiMmxrSURBN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUhkb2FXeGxJQ2h5YjI5MExtdGxlWE11YkdWdVozUm9JRHc5SURFZ0ppWWdJWEp2YjNRdWFYTk1aV0ZtS1NCN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBjMU5vWVhKbFpDQjhmQ0FvYVhOVGFHRnlaV1FnUFNCeWIyOTBMbWx6VTJoaGNtVmtLVHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhSb2FYTXVYM0p2YjNRZ1BTQnliMjkwSUQwZ2NtOXZkQzVyWlhsekxteGxibWQwYUNBOVBUMGdNQ0EvSUVWdGNIUjVUR1ZoWmlBNlhISmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY205dmRDNWphR2xzWkhKbGJsc3dYVHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQXZMeUJKWmlCaGJua2dZVzVqWlhOMGIzSWdiMllnZEdobElHNWxkeUJ5YjI5MElIZGhjeUJ6YUdGeVpXUXNJSFJvWlNCdVpYY2djbTl2ZENCdGRYTjBJR0ZzYzI4Z1ltVWdjMmhoY21Wa1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDaHBjMU5vWVhKbFpDa2dlMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY205dmRDNXBjMU5vWVhKbFpDQTlJSFJ5ZFdVN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUgxY2NseHVJQ0FnSUNBZ0lDQjlYSEpjYmlBZ0lDQjlPMXh5WEc0Z0lDQWdMeW9xSUZOaGJXVWdZWE1nWUdWa2FYUlNZVzVuWldBZ1pYaGpaWEIwSUhSb1lYUWdkR2hsSUdOaGJHeGlZV05ySUdseklHTmhiR3hsWkNCbWIzSWdZV3hzSUhCaGFYSnpMaUFxTDF4eVhHNGdJQ0FnUWxSeVpXVXVjSEp2ZEc5MGVYQmxMbVZrYVhSQmJHd2dQU0JtZFc1amRHbHZiaUFvYjI1R2IzVnVaQ3dnYVc1cGRHbGhiRU52ZFc1MFpYSXBJSHRjY2x4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnZEdocGN5NWxaR2wwVW1GdVoyVW9kR2hwY3k1dGFXNUxaWGtvS1N3Z2RHaHBjeTV0WVhoTFpYa29LU3dnZEhKMVpTd2diMjVHYjNWdVpDd2dhVzVwZEdsaGJFTnZkVzUwWlhJcE8xeHlYRzRnSUNBZ2ZUdGNjbHh1SUNBZ0lDOHFLbHh5WEc0Z0lDQWdJQ29nVW1WdGIzWmxjeUJoSUhKaGJtZGxJRzltSUd0bGVTMTJZV3gxWlNCd1lXbHljeUJtY205dElIUm9aU0JDS3lCMGNtVmxMbHh5WEc0Z0lDQWdJQ29nUUhCaGNtRnRJR3h2ZHlCVWFHVWdabWx5YzNRZ2EyVjVJSE5qWVc1dVpXUWdkMmxzYkNCaVpTQm5jbVZoZEdWeUlIUm9ZVzRnYjNJZ1pYRjFZV3dnZEc4Z1lHeHZkMkF1WEhKY2JpQWdJQ0FnS2lCQWNHRnlZVzBnYUdsbmFDQlRZMkZ1Ym1sdVp5QnpkRzl3Y3lCM2FHVnVJR0VnYTJWNUlHeGhjbWRsY2lCMGFHRnVJSFJvYVhNZ2FYTWdjbVZoWTJobFpDNWNjbHh1SUNBZ0lDQXFJRUJ3WVhKaGJTQnBibU5zZFdSbFNHbG5hQ0JUY0dWamFXWnBaWE1nZDJobGRHaGxjaUIwYUdVZ1lHaHBaMmhnSUd0bGVTd2dhV1lnY0hKbGMyVnVkQ3dnYVhNZ1pHVnNaWFJsWkM1Y2NseHVJQ0FnSUNBcUlFQnlaWFIxY201eklGUm9aU0J1ZFcxaVpYSWdiMllnYTJWNUxYWmhiSFZsSUhCaGFYSnpJSFJvWVhRZ2QyVnlaU0JrWld4bGRHVmtMbHh5WEc0Z0lDQWdJQ29nUUdSbGMyTnlhWEIwYVc5dUlFTnZiWEIxZEdGMGFXOXVZV3dnWTI5dGNHeGxlR2wwZVRvZ1R5aHNiMmNnYzJsNlpTQXJJRzUxYldKbGNpQnZaaUJwZEdWdGN5QmtaV3hsZEdWa0tWeHlYRzRnSUNBZ0lDb3ZYSEpjYmlBZ0lDQkNWSEpsWlM1d2NtOTBiM1I1Y0dVdVpHVnNaWFJsVW1GdVoyVWdQU0JtZFc1amRHbHZiaUFvYkc5M0xDQm9hV2RvTENCcGJtTnNkV1JsU0dsbmFDa2dlMXh5WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUIwYUdsekxtVmthWFJTWVc1blpTaHNiM2NzSUdocFoyZ3NJR2x1WTJ4MVpHVklhV2RvTENCRVpXeGxkR1ZTWVc1blpTazdYSEpjYmlBZ0lDQjlPMXh5WEc0Z0lDQWdMeW9xSUVSbGJHVjBaWE1nWVNCelpYSnBaWE1nYjJZZ2EyVjVjeUJtY205dElIUm9aU0JqYjJ4c1pXTjBhVzl1TGlBcUwxeHlYRzRnSUNBZ1FsUnlaV1V1Y0hKdmRHOTBlWEJsTG1SbGJHVjBaVXRsZVhNZ1BTQm1kVzVqZEdsdmJpQW9hMlY1Y3lrZ2UxeHlYRzRnSUNBZ0lDQWdJR1p2Y2lBb2RtRnlJR2tnUFNBd0xDQnlJRDBnTURzZ2FTQThJR3RsZVhNdWJHVnVaM1JvT3lCcEt5c3BYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2gwYUdsekxtUmxiR1YwWlNoclpYbHpXMmxkS1NsY2NseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISXJLenRjY2x4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnY2p0Y2NseHVJQ0FnSUgwN1hISmNiaUFnSUNCUFltcGxZM1F1WkdWbWFXNWxVSEp2Y0dWeWRIa29RbFJ5WldVdWNISnZkRzkwZVhCbExDQmNJbWhsYVdkb2RGd2lMQ0I3WEhKY2JpQWdJQ0FnSUNBZ0x5b3FJRWRsZEhNZ2RHaGxJR2hsYVdkb2RDQnZaaUIwYUdVZ2RISmxaVG9nZEdobElHNTFiV0psY2lCdlppQnBiblJsY201aGJDQnViMlJsY3lCaVpYUjNaV1Z1SUhSb1pWeHlYRzRnSUNBZ0lDQWdJQ0FxSUNCQ1ZISmxaU0J2WW1wbFkzUWdZVzVrSUdsMGN5QnNaV0ZtSUc1dlpHVnpJQ2g2WlhKdklHbG1JSFJvWlhKbElHRnlaU0J1YnlCcGJuUmxjbTVoYkNCdWIyUmxjeWt1SUNvdlhISmNiaUFnSUNBZ0lDQWdaMlYwT2lCbWRXNWpkR2x2YmlBb0tTQjdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lIWmhjaUJ1YjJSbElEMGdkR2hwY3k1ZmNtOXZkRHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdkbUZ5SUdobGFXZG9kQ0E5SUMweE8xeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCM2FHbHNaU0FvYm05a1pTa2dlMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYUdWcFoyaDBLeXM3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCdWIyUmxJRDBnYm05a1pTNXBjMHhsWVdZZ1B5QjFibVJsWm1sdVpXUWdPaUJ1YjJSbExtTm9hV3hrY21WdVd6QmRPMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCb1pXbG5hSFE3WEhKY2JpQWdJQ0FnSUNBZ2ZTeGNjbHh1SUNBZ0lDQWdJQ0JsYm5WdFpYSmhZbXhsT2lCbVlXeHpaU3hjY2x4dUlDQWdJQ0FnSUNCamIyNW1hV2QxY21GaWJHVTZJSFJ5ZFdWY2NseHVJQ0FnSUgwcE8xeHlYRzRnSUNBZ0x5b3FJRTFoYTJWeklIUm9aU0J2WW1wbFkzUWdjbVZoWkMxdmJteDVJSFJ2SUdWdWMzVnlaU0JwZENCcGN5QnViM1FnWVdOamFXUmxiblJoYkd4NUlHMXZaR2xtYVdWa0xseHlYRzRnSUNBZ0lDb2dJRVp5WldWNmFXNW5JR1J2WlhNZ2JtOTBJR2hoZG1VZ2RHOGdZbVVnY0dWeWJXRnVaVzUwT3lCMWJtWnlaV1Y2WlNncElISmxkbVZ5YzJWeklIUm9aU0JsWm1abFkzUXVYSEpjYmlBZ0lDQWdLaUFnVkdocGN5QnBjeUJoWTJOdmJYQnNhWE5vWldRZ1lua2djbVZ3YkdGamFXNW5JRzExZEdGMGIzSWdablZ1WTNScGIyNXpJSGRwZEdnZ1lTQm1kVzVqZEdsdmJseHlYRzRnSUNBZ0lDb2dJSFJvWVhRZ2RHaHliM2R6SUdGdUlFVnljbTl5TGlCRGIyMXdZWEpsWkNCMGJ5QjFjMmx1WnlCaElIQnliM0JsY25SNUlDaGxMbWN1SUhSb2FYTXVhWE5HY205NlpXNHBYSEpjYmlBZ0lDQWdLaUFnZEdocGN5QnBiWEJzWlcxbGJuUmhkR2x2YmlCbmFYWmxjeUJpWlhSMFpYSWdjR1Z5Wm05eWJXRnVZMlVnYVc0Z2JtOXVMV1p5YjNwbGJpQkNWSEpsWlhNdVhISmNiaUFnSUNBZ0tpOWNjbHh1SUNBZ0lFSlVjbVZsTG5CeWIzUnZkSGx3WlM1bWNtVmxlbVVnUFNCbWRXNWpkR2x2YmlBb0tTQjdYSEpjYmlBZ0lDQWdJQ0FnZG1GeUlIUWdQU0IwYUdsek8xeHlYRzRnSUNBZ0lDQWdJQzh2SUU1dmRHVTZJR0ZzYkNCdmRHaGxjaUJ0ZFhSaGRHOXljeUIxYkhScGJXRjBaV3g1SUdOaGJHd2djMlYwS0NrZ2IzSWdaV1JwZEZKaGJtZGxLQ2tnWEhKY2JpQWdJQ0FnSUNBZ0x5OGdJQ0FnSUNBZ2MyOGdkMlVnWkc5dUozUWdibVZsWkNCMGJ5QnZkbVZ5Y21sa1pTQjBhRzl6WlNCdmRHaGxjbk11WEhKY2JpQWdJQ0FnSUNBZ2RDNWpiR1ZoY2lBOUlIUXVjMlYwSUQwZ2RDNWxaR2wwVW1GdVoyVWdQU0JtZFc1amRHbHZiaUFvS1NCN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUhSb2NtOTNJRzVsZHlCRmNuSnZjaWhjSWtGMGRHVnRjSFJsWkNCMGJ5QnRiMlJwWm5rZ1lTQm1jbTk2Wlc0Z1FsUnlaV1ZjSWlrN1hISmNiaUFnSUNBZ0lDQWdmVHRjY2x4dUlDQWdJSDA3WEhKY2JpQWdJQ0F2S2lvZ1JXNXpkWEpsY3lCdGRYUmhkR2x2Ym5NZ1lYSmxJR0ZzYkc5M1pXUXNJSEpsZG1WeWMybHVaeUIwYUdVZ1pXWm1aV04wSUc5bUlHWnlaV1Y2WlNncExpQXFMMXh5WEc0Z0lDQWdRbFJ5WldVdWNISnZkRzkwZVhCbExuVnVabkpsWlhwbElEMGdablZ1WTNScGIyNGdLQ2tnZTF4eVhHNGdJQ0FnSUNBZ0lDOHZJRUIwY3kxcFoyNXZjbVVnWENKVWFHVWdiM0JsY21GdVpDQnZaaUJoSUNka1pXeGxkR1VuSUc5d1pYSmhkRzl5SUcxMWMzUWdZbVVnYjNCMGFXOXVZV3d1WENKY2NseHVJQ0FnSUNBZ0lDQXZMeUFnSUNBZ0lDQWdJQ0FnSUNoM2NtOXVaem9nWkdWc1pYUmxJR1J2WlhNZ2JtOTBJR0ZtWm1WamRDQjBhR1VnY0hKdmRHOTBlWEJsTGlsY2NseHVJQ0FnSUNBZ0lDQmtaV3hsZEdVZ2RHaHBjeTVqYkdWaGNqdGNjbHh1SUNBZ0lDQWdJQ0F2THlCQWRITXRhV2R1YjNKbFhISmNiaUFnSUNBZ0lDQWdaR1ZzWlhSbElIUm9hWE11YzJWME8xeHlYRzRnSUNBZ0lDQWdJQzh2SUVCMGN5MXBaMjV2Y21WY2NseHVJQ0FnSUNBZ0lDQmtaV3hsZEdVZ2RHaHBjeTVsWkdsMFVtRnVaMlU3WEhKY2JpQWdJQ0I5TzF4eVhHNGdJQ0FnVDJKcVpXTjBMbVJsWm1sdVpWQnliM0JsY25SNUtFSlVjbVZsTG5CeWIzUnZkSGx3WlN3Z1hDSnBjMFp5YjNwbGJsd2lMQ0I3WEhKY2JpQWdJQ0FnSUNBZ0x5b3FJRkpsZEhWeWJuTWdkSEoxWlNCcFppQjBhR1VnZEhKbFpTQmhjSEJsWVhKeklIUnZJR0psSUdaeWIzcGxiaTRnS2k5Y2NseHVJQ0FnSUNBZ0lDQm5aWFE2SUdaMWJtTjBhVzl1SUNncElIdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhSb2FYTXVhR0Z6VDNkdVVISnZjR1Z5ZEhrb0oyVmthWFJTWVc1blpTY3BPMXh5WEc0Z0lDQWdJQ0FnSUgwc1hISmNiaUFnSUNBZ0lDQWdaVzUxYldWeVlXSnNaVG9nWm1Gc2MyVXNYSEpjYmlBZ0lDQWdJQ0FnWTI5dVptbG5kWEpoWW14bE9pQjBjblZsWEhKY2JpQWdJQ0I5S1R0Y2NseHVJQ0FnSUM4cUtpQlRZMkZ1Y3lCMGFHVWdkSEpsWlNCbWIzSWdjMmxuYm5NZ2IyWWdjMlZ5YVc5MWN5QmlkV2R6SUNobExtY3VJSFJvYVhNdWMybDZaU0JrYjJWemJpZDBJRzFoZEdOb1hISmNiaUFnSUNBZ0tpQWdiblZ0WW1WeUlHOW1JR1ZzWlcxbGJuUnpMQ0JwYm5SbGNtNWhiQ0J1YjJSbGN5QnViM1FnWTJGamFHbHVaeUJ0WVhnZ1pXeGxiV1Z1ZENCd2NtOXdaWEpzZVM0dUxpbGNjbHh1SUNBZ0lDQXFJQ0JEYjIxd2RYUmhkR2x2Ym1Gc0lHTnZiWEJzWlhocGRIazZJRThvYm5WdFltVnlJRzltSUc1dlpHVnpLU3dnYVM1bExpQlBLSE5wZW1VcExpQlVhR2x6SUcxbGRHaHZaRnh5WEc0Z0lDQWdJQ29nSUhOcmFYQnpJSFJvWlNCdGIzTjBJR1Y0Y0dWdWMybDJaU0IwWlhOMElDMGdkMmhsZEdobGNpQmhiR3dnYTJWNWN5QmhjbVVnYzI5eWRHVmtJQzBnWW5WMElHbDBYSEpjYmlBZ0lDQWdLaUFnWkc5bGN5QmphR1ZqYXlCMGFHRjBJRzFoZUV0bGVTZ3BJRzltSUhSb1pTQmphR2xzWkhKbGJpQnZaaUJwYm5SbGNtNWhiQ0J1YjJSbGN5QmhjbVVnYzI5eWRHVmtMaUFxTDF4eVhHNGdJQ0FnUWxSeVpXVXVjSEp2ZEc5MGVYQmxMbU5vWldOclZtRnNhV1FnUFNCbWRXNWpkR2x2YmlBb0tTQjdYSEpjYmlBZ0lDQWdJQ0FnZG1GeUlITnBlbVVnUFNCMGFHbHpMbDl5YjI5MExtTm9aV05yVm1Gc2FXUW9NQ3dnZEdocGN5d2dNQ2s3WEhKY2JpQWdJQ0FnSUNBZ1kyaGxZMnNvYzJsNlpTQTlQVDBnZEdocGN5NXphWHBsTENCY0luTnBlbVVnYldsemJXRjBZMmc2SUdOdmRXNTBaV1FnWENJc0lITnBlbVVzSUZ3aVluVjBJSE4wYjNKbFpGd2lMQ0IwYUdsekxuTnBlbVVwTzF4eVhHNGdJQ0FnZlR0Y2NseHVJQ0FnSUhKbGRIVnliaUJDVkhKbFpUdGNjbHh1ZlNncEtUdGNjbHh1Wlhod2IzSjBjeTVrWldaaGRXeDBJRDBnUWxSeVpXVTdYSEpjYmk4cUtpQkJJRlI1Y0dWVFkzSnBjSFFnYUdWc2NHVnlJR1oxYm1OMGFXOXVJSFJvWVhRZ2MybHRjR3g1SUhKbGRIVnlibk1nYVhSeklHRnlaM1Z0Wlc1MExDQjBlWEJsWkNCaGMxeHlYRzRnS2lBZ1lFbFRiM0owWldSVFpYUThTejVnSUdsbUlIUm9aU0JDVkhKbFpTQnBiWEJzWlcxbGJuUnpJR2wwTENCaGN5QnBkQ0JrYjJWeklHbG1JR0JXSUdWNGRHVnVaSE1nZFc1a1pXWnBibVZrWUM1Y2NseHVJQ29nSUVsbUlHQldZQ0JqWVc1dWIzUWdZbVVnWUhWdVpHVm1hVzVsWkdBc0lHbDBJSEpsZEhWeWJuTWdZSFZ1YTI1dmQyNWdJR2x1YzNSbFlXUXVJRTl5SUdGMElHeGxZWE4wTENCMGFHRjBYSEpjYmlBcUlDQjNZWE1nZEdobElHbHVkR1Z1ZEdsdmJpd2dZblYwSUZSNWNHVlRZM0pwY0hRZ2FYTWdZV04wYVc1bklIZGxhWEprSUdGdVpDQnRZWGtnY21WMGRYSnVJR0JKVTI5eWRHVmtVMlYwUEVzK1lGeHlYRzRnS2lBZ1pYWmxiaUJwWmlCZ1ZtQWdZMkZ1SjNRZ1ltVWdZSFZ1WkdWbWFXNWxaR0FnS0dScGMyTjFjM05wYjI0NklHSjBjbVZsTFhSNWNHVnpZM0pwY0hRZ2FYTnpkV1VnSXpFMEtTQXFMMXh5WEc1bWRXNWpkR2x2YmlCaGMxTmxkQ2hpZEhKbFpTa2dlMXh5WEc0Z0lDQWdjbVYwZFhKdUlHSjBjbVZsTzF4eVhHNTlYSEpjYm1WNGNHOXlkSE11WVhOVFpYUWdQU0JoYzFObGREdGNjbHh1YVdZZ0tGTjViV0p2YkNBbUppQlRlVzFpYjJ3dWFYUmxjbUYwYjNJcElDOHZJR2wwWlhKaGRHOXlJR2x6SUdWeGRXbDJZV3hsYm5RZ2RHOGdaVzUwY21sbGN5Z3BYSEpjYmlBZ0lDQkNWSEpsWlM1d2NtOTBiM1I1Y0dWYlUzbHRZbTlzTG1sMFpYSmhkRzl5WFNBOUlFSlVjbVZsTG5CeWIzUnZkSGx3WlM1bGJuUnlhV1Z6TzF4eVhHNUNWSEpsWlM1d2NtOTBiM1I1Y0dVdWQyaGxjbVVnUFNCQ1ZISmxaUzV3Y205MGIzUjVjR1V1Wm1sc2RHVnlPMXh5WEc1Q1ZISmxaUzV3Y205MGIzUjVjR1V1YzJWMFVtRnVaMlVnUFNCQ1ZISmxaUzV3Y205MGIzUjVjR1V1YzJWMFVHRnBjbk03WEhKY2JrSlVjbVZsTG5CeWIzUnZkSGx3WlM1aFpHUWdQU0JDVkhKbFpTNXdjbTkwYjNSNWNHVXVjMlYwT3lBdkx5Qm1iM0lnWTI5dGNHRjBhV0pwYkdsMGVTQjNhWFJvSUVsVFpYUlRhVzVyUEVzK1hISmNibVoxYm1OMGFXOXVJR2wwWlhKaGRHOXlLRzVsZUhRcElIdGNjbHh1SUNBZ0lHbG1JQ2h1WlhoMElEMDlQU0IyYjJsa0lEQXBJSHNnYm1WNGRDQTlJQ2htZFc1amRHbHZiaUFvS1NCN0lISmxkSFZ5YmlBb2V5QmtiMjVsT2lCMGNuVmxMQ0IyWVd4MVpUb2dkVzVrWldacGJtVmtJSDBwT3lCOUtUc2dmVnh5WEc0Z0lDQWdkbUZ5SUhKbGMzVnNkQ0E5SUhzZ2JtVjRkRG9nYm1WNGRDQjlPMXh5WEc0Z0lDQWdhV1lnS0ZONWJXSnZiQ0FtSmlCVGVXMWliMnd1YVhSbGNtRjBiM0lwWEhKY2JpQWdJQ0FnSUNBZ2NtVnpkV3gwVzFONWJXSnZiQzVwZEdWeVlYUnZjbDBnUFNCbWRXNWpkR2x2YmlBb0tTQjdJSEpsZEhWeWJpQjBhR2x6T3lCOU8xeHlYRzRnSUNBZ2NtVjBkWEp1SUhKbGMzVnNkRHRjY2x4dWZWeHlYRzR2S2lvZ1RHVmhaaUJ1YjJSbElDOGdZbUZ6WlNCamJHRnpjeTRnS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3ZYSEpjYm5aaGNpQkNUbTlrWlNBOUlDOHFLaUJBWTJ4aGMzTWdLaThnS0daMWJtTjBhVzl1SUNncElIdGNjbHh1SUNBZ0lHWjFibU4wYVc5dUlFSk9iMlJsS0d0bGVYTXNJSFpoYkhWbGN5a2dlMXh5WEc0Z0lDQWdJQ0FnSUdsbUlDaHJaWGx6SUQwOVBTQjJiMmxrSURBcElIc2dhMlY1Y3lBOUlGdGRPeUI5WEhKY2JpQWdJQ0FnSUNBZ2RHaHBjeTVyWlhseklEMGdhMlY1Y3p0Y2NseHVJQ0FnSUNBZ0lDQjBhR2x6TG5aaGJIVmxjeUE5SUhaaGJIVmxjeUI4ZkNCMWJtUmxabFpoYkhNN1hISmNiaUFnSUNBZ0lDQWdkR2hwY3k1cGMxTm9ZWEpsWkNBOUlIVnVaR1ZtYVc1bFpEdGNjbHh1SUNBZ0lIMWNjbHh1SUNBZ0lFOWlhbVZqZEM1a1pXWnBibVZRY205d1pYSjBlU2hDVG05a1pTNXdjbTkwYjNSNWNHVXNJRndpYVhOTVpXRm1YQ0lzSUh0Y2NseHVJQ0FnSUNBZ0lDQm5aWFE2SUdaMWJtTjBhVzl1SUNncElIc2djbVYwZFhKdUlIUm9hWE11WTJocGJHUnlaVzRnUFQwOUlIVnVaR1ZtYVc1bFpEc2dmU3hjY2x4dUlDQWdJQ0FnSUNCbGJuVnRaWEpoWW14bE9pQm1ZV3h6WlN4Y2NseHVJQ0FnSUNBZ0lDQmpiMjVtYVdkMWNtRmliR1U2SUhSeWRXVmNjbHh1SUNBZ0lIMHBPMXh5WEc0Z0lDQWdMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2WEhKY2JpQWdJQ0F2THlCVGFHRnlaV1FnYldWMGFHOWtjeUF2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk5Y2NseHVJQ0FnSUVKT2IyUmxMbkJ5YjNSdmRIbHdaUzV0WVhoTFpYa2dQU0JtZFc1amRHbHZiaUFvS1NCN1hISmNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlIUm9hWE11YTJWNWMxdDBhR2x6TG10bGVYTXViR1Z1WjNSb0lDMGdNVjA3WEhKY2JpQWdJQ0I5TzF4eVhHNGdJQ0FnTHk4Z1NXWWdhMlY1SUc1dmRDQm1iM1Z1WkN3Z2NtVjBkWEp1Y3lCcFhtWmhhV3hZYjNJZ2QyaGxjbVVnYVNCcGN5QjBhR1VnYVc1elpYSjBhVzl1SUdsdVpHVjRMbHh5WEc0Z0lDQWdMeThnUTJGc2JHVnljeUIwYUdGMElHUnZiaWQwSUdOaGNtVWdkMmhsZEdobGNpQjBhR1Z5WlNCM1lYTWdZU0J0WVhSamFDQjNhV3hzSUhObGRDQm1ZV2xzV0c5eVBUQXVYSEpjYmlBZ0lDQkNUbTlrWlM1d2NtOTBiM1I1Y0dVdWFXNWtaWGhQWmlBOUlHWjFibU4wYVc5dUlDaHJaWGtzSUdaaGFXeFliM0lzSUdOdGNDa2dlMXh5WEc0Z0lDQWdJQ0FnSUhaaGNpQnJaWGx6SUQwZ2RHaHBjeTVyWlhsek8xeHlYRzRnSUNBZ0lDQWdJSFpoY2lCc2J5QTlJREFzSUdocElEMGdhMlY1Y3k1c1pXNW5kR2dzSUcxcFpDQTlJR2hwSUQ0K0lERTdYSEpjYmlBZ0lDQWdJQ0FnZDJocGJHVWdLR3h2SUR3Z2FHa3BJSHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdkbUZ5SUdNZ1BTQmpiWEFvYTJWNWMxdHRhV1JkTENCclpYa3BPMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFvWXlBOElEQXBYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JzYnlBOUlHMXBaQ0FySURFN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUdWc2MyVWdhV1lnS0dNZ1BpQXdLU0F2THlCclpYa2dQQ0JyWlhselcyMXBaRjFjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdocElEMGdiV2xrTzF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0JsYkhObElHbG1JQ2hqSUQwOVBTQXdLVnh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJRzFwWkR0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnWld4elpTQjdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0F2THlCaklHbHpJRTVoVGlCdmNpQnZkR2hsY25kcGMyVWdhVzUyWVd4cFpGeHlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhV1lnS0d0bGVTQTlQVDBnYTJWNUtTQXZMeUJoZENCc1pXRnpkQ0IwYUdVZ2MyVmhjbU5vSUd0bGVTQnBjeUJ1YjNRZ1RtRk9YSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUd0bGVYTXViR1Z1WjNSb08xeHlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdaV3h6WlZ4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSFJvY205M0lHNWxkeUJGY25KdmNpaGNJa0pVY21WbE9pQk9ZVTRnZDJGeklIVnpaV1FnWVhNZ1lTQnJaWGxjSWlrN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUgxY2NseHVJQ0FnSUNBZ0lDQWdJQ0FnYldsa0lEMGdLR3h2SUNzZ2FHa3BJRDQrSURFN1hISmNiaUFnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJ0YVdRZ1hpQm1ZV2xzV0c5eU8xeHlYRzRnSUNBZ0lDQWdJQzh2SUZWdWNtOXNiR1ZrSUhabGNuTnBiMjQ2SUdKbGJtTm9iV0Z5YTNNZ2MyaHZkeUJ6WVcxbElITndaV1ZrTENCdWIzUWdkMjl5ZEdnZ2RYTnBibWRjY2x4dUlDQWdJQ0FnSUNBdktuWmhjaUJwSUQwZ01Td2dZem9nYm5WdFltVnlJRDBnTUN3Z2MzVnRJRDBnTUR0Y2NseHVJQ0FnSUNBZ0lDQnBaaUFvYTJWNWN5NXNaVzVuZEdnZ1BqMGdOQ2tnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdhU0E5SURNN1hISmNiaUFnSUNBZ0lDQWdJQ0JwWmlBb2EyVjVjeTVzWlc1bmRHZ2dQajBnT0NrZ2UxeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCcElEMGdOenRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lnS0d0bGVYTXViR1Z1WjNSb0lENDlJREUyS1NCN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ2FTQTlJREUxTzF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDaHJaWGx6TG14bGJtZDBhQ0ErUFNBek1pa2dlMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVNBOUlETXhPMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tHdGxlWE11YkdWdVozUm9JRDQ5SURZMEtTQjdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdrZ1BTQXhNamM3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHa2dLejBnS0dNZ1BTQnBJRHdnYTJWNWN5NXNaVzVuZEdnZ1B5QmpiWEFvYTJWNWMxdHBYU3dnYTJWNUtTQTZJREVwSUR3Z01DQS9JRFkwSURvZ0xUWTBPMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCemRXMGdLejBnWXp0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhU0FyUFNBb1l5QTlJR2tnUENCclpYbHpMbXhsYm1kMGFDQS9JR050Y0NoclpYbHpXMmxkTENCclpYa3BJRG9nTVNrZ1BDQXdJRDhnTXpJZ09pQXRNekk3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lITjFiU0FyUFNCak8xeHlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVNBclBTQW9ZeUE5SUdrZ1BDQnJaWGx6TG14bGJtZDBhQ0EvSUdOdGNDaHJaWGx6VzJsZExDQnJaWGtwSURvZ01Ta2dQQ0F3SUQ4Z01UWWdPaUF0TVRZN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnpkVzBnS3owZ1l6dGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQjlYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdhU0FyUFNBb1l5QTlJR2tnUENCclpYbHpMbXhsYm1kMGFDQS9JR050Y0NoclpYbHpXMmxkTENCclpYa3BJRG9nTVNrZ1BDQXdJRDhnT0NBNklDMDRPMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJSE4xYlNBclBTQmpPMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lHa2dLejBnS0dNZ1BTQnBJRHdnYTJWNWN5NXNaVzVuZEdnZ1B5QmpiWEFvYTJWNWMxdHBYU3dnYTJWNUtTQTZJREVwSUR3Z01DQS9JRFFnT2lBdE5EdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ2MzVnRJQ3M5SUdNN1hISmNiaUFnSUNBZ0lDQWdJQ0I5WEhKY2JpQWdJQ0FnSUNBZ0lDQnBJQ3M5SUNoaklEMGdhU0E4SUd0bGVYTXViR1Z1WjNSb0lEOGdZMjF3S0d0bGVYTmJhVjBzSUd0bGVTa2dPaUF4S1NBOElEQWdQeUF5SURvZ0xUSTdYSEpjYmlBZ0lDQWdJQ0FnSUNCemRXMGdLejBnWXp0Y2NseHVJQ0FnSUNBZ0lDQjlYSEpjYmlBZ0lDQWdJQ0FnYVNBclBTQW9ZeUE5SUdrZ1BDQnJaWGx6TG14bGJtZDBhQ0EvSUdOdGNDaHJaWGx6VzJsZExDQnJaWGtwSURvZ01Ta2dQQ0F3SUQ4Z01TQTZJQzB4TzF4eVhHNGdJQ0FnSUNBZ0lHTWdQU0JwSUR3Z2EyVjVjeTVzWlc1bmRHZ2dQeUJqYlhBb2EyVjVjMXRwWFN3Z2EyVjVLU0E2SURFN1hISmNiaUFnSUNBZ0lDQWdjM1Z0SUNzOUlHTTdYSEpjYmlBZ0lDQWdJQ0FnYVdZZ0tHTWdQQ0F3S1NCN1hISmNiaUFnSUNBZ0lDQWdJQ0FySzJrN1hISmNiaUFnSUNBZ0lDQWdJQ0JqSUQwZ2FTQThJR3RsZVhNdWJHVnVaM1JvSUQ4Z1kyMXdLR3RsZVhOYmFWMHNJR3RsZVNrZ09pQXhPMXh5WEc0Z0lDQWdJQ0FnSUNBZ2MzVnRJQ3M5SUdNN1hISmNiaUFnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdJQ0FnSUdsbUlDaHpkVzBnSVQwOUlITjFiU2tnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdhV1lnS0d0bGVTQTlQVDBnYTJWNUtTQXZMeUJoZENCc1pXRnpkQ0IwYUdVZ2MyVmhjbU5vSUd0bGVTQnBjeUJ1YjNRZ1RtRk9YSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCclpYbHpMbXhsYm1kMGFDQmVJR1poYVd4WWIzSTdYSEpjYmlBZ0lDQWdJQ0FnSUNCbGJITmxYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lIUm9jbTkzSUc1bGR5QkZjbkp2Y2loY0lrSlVjbVZsT2lCT1lVNGdkMkZ6SUhWelpXUWdZWE1nWVNCclpYbGNJaWs3WEhKY2JpQWdJQ0FnSUNBZ2ZWeHlYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQmpJRDA5UFNBd0lEOGdhU0E2SUdrZ1hpQm1ZV2xzV0c5eU95b3ZYSEpjYmlBZ0lDQjlPMXh5WEc0Z0lDQWdMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk5Y2NseHVJQ0FnSUM4dklFeGxZV1lnVG05a1pUb2diV2x6WXlBdkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZYSEpjYmlBZ0lDQkNUbTlrWlM1d2NtOTBiM1I1Y0dVdWJXbHVTMlY1SUQwZ1puVnVZM1JwYjI0Z0tDa2dlMXh5WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUIwYUdsekxtdGxlWE5iTUYwN1hISmNiaUFnSUNCOU8xeHlYRzRnSUNBZ1FrNXZaR1V1Y0hKdmRHOTBlWEJsTG0xcGJsQmhhWElnUFNCbWRXNWpkR2x2YmlBb2NtVjFjMlZrUVhKeVlYa3BJSHRjY2x4dUlDQWdJQ0FnSUNCcFppQW9kR2hwY3k1clpYbHpMbXhsYm1kMGFDQTlQVDBnTUNsY2NseHVJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJSFZ1WkdWbWFXNWxaRHRjY2x4dUlDQWdJQ0FnSUNCeVpYVnpaV1JCY25KaGVWc3dYU0E5SUhSb2FYTXVhMlY1YzFzd1hUdGNjbHh1SUNBZ0lDQWdJQ0J5WlhWelpXUkJjbkpoZVZzeFhTQTlJSFJvYVhNdWRtRnNkV1Z6V3pCZE8xeHlYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQnlaWFZ6WldSQmNuSmhlVHRjY2x4dUlDQWdJSDA3WEhKY2JpQWdJQ0JDVG05a1pTNXdjbTkwYjNSNWNHVXViV0Y0VUdGcGNpQTlJR1oxYm1OMGFXOXVJQ2h5WlhWelpXUkJjbkpoZVNrZ2UxeHlYRzRnSUNBZ0lDQWdJR2xtSUNoMGFHbHpMbXRsZVhNdWJHVnVaM1JvSUQwOVBTQXdLVnh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2RXNWtaV1pwYm1Wa08xeHlYRzRnSUNBZ0lDQWdJSFpoY2lCc1lYTjBTVzVrWlhnZ1BTQjBhR2x6TG10bGVYTXViR1Z1WjNSb0lDMGdNVHRjY2x4dUlDQWdJQ0FnSUNCeVpYVnpaV1JCY25KaGVWc3dYU0E5SUhSb2FYTXVhMlY1YzF0c1lYTjBTVzVrWlhoZE8xeHlYRzRnSUNBZ0lDQWdJSEpsZFhObFpFRnljbUY1V3pGZElEMGdkR2hwY3k1MllXeDFaWE5iYkdGemRFbHVaR1Y0WFR0Y2NseHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2NtVjFjMlZrUVhKeVlYazdYSEpjYmlBZ0lDQjlPMXh5WEc0Z0lDQWdRazV2WkdVdWNISnZkRzkwZVhCbExtTnNiMjVsSUQwZ1puVnVZM1JwYjI0Z0tDa2dlMXh5WEc0Z0lDQWdJQ0FnSUhaaGNpQjJJRDBnZEdocGN5NTJZV3gxWlhNN1hISmNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlHNWxkeUJDVG05a1pTaDBhR2x6TG10bGVYTXVjMnhwWTJVb01Da3NJSFlnUFQwOUlIVnVaR1ZtVm1Gc2N5QS9JSFlnT2lCMkxuTnNhV05sS0RBcEtUdGNjbHh1SUNBZ0lIMDdYSEpjYmlBZ0lDQkNUbTlrWlM1d2NtOTBiM1I1Y0dVdVozSmxaV1I1UTJ4dmJtVWdQU0JtZFc1amRHbHZiaUFvWm05eVkyVXBJSHRjY2x4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnZEdocGN5NXBjMU5vWVhKbFpDQW1KaUFoWm05eVkyVWdQeUIwYUdseklEb2dkR2hwY3k1amJHOXVaU2dwTzF4eVhHNGdJQ0FnZlR0Y2NseHVJQ0FnSUVKT2IyUmxMbkJ5YjNSdmRIbHdaUzVuWlhRZ1BTQm1kVzVqZEdsdmJpQW9hMlY1TENCa1pXWmhkV3gwVm1Gc2RXVXNJSFJ5WldVcElIdGNjbHh1SUNBZ0lDQWdJQ0IyWVhJZ2FTQTlJSFJvYVhNdWFXNWtaWGhQWmloclpYa3NJQzB4TENCMGNtVmxMbDlqYjIxd1lYSmxLVHRjY2x4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnYVNBOElEQWdQeUJrWldaaGRXeDBWbUZzZFdVZ09pQjBhR2x6TG5aaGJIVmxjMXRwWFR0Y2NseHVJQ0FnSUgwN1hISmNiaUFnSUNCQ1RtOWtaUzV3Y205MGIzUjVjR1V1WjJWMFVHRnBjazl5VG1WNGRFeHZkMlZ5SUQwZ1puVnVZM1JwYjI0Z0tHdGxlU3dnWTI5dGNHRnlaU3dnYVc1amJIVnphWFpsTENCeVpYVnpaV1JCY25KaGVTa2dlMXh5WEc0Z0lDQWdJQ0FnSUhaaGNpQnBJRDBnZEdocGN5NXBibVJsZUU5bUtHdGxlU3dnTFRFc0lHTnZiWEJoY21VcE8xeHlYRzRnSUNBZ0lDQWdJSFpoY2lCcGJtUmxlRTl5VEc5M1pYSWdQU0JwSUR3Z01DQS9JSDVwSUMwZ01TQTZJQ2hwYm1Oc2RYTnBkbVVnUHlCcElEb2dhU0F0SURFcE8xeHlYRzRnSUNBZ0lDQWdJR2xtSUNocGJtUmxlRTl5VEc5M1pYSWdQajBnTUNrZ2UxeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYVnpaV1JCY25KaGVWc3dYU0E5SUhSb2FYTXVhMlY1YzF0cGJtUmxlRTl5VEc5M1pYSmRPMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWFZ6WldSQmNuSmhlVnN4WFNBOUlIUm9hWE11ZG1Gc2RXVnpXMmx1WkdWNFQzSk1iM2RsY2wwN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJ5WlhWelpXUkJjbkpoZVR0Y2NseHVJQ0FnSUNBZ0lDQjlYSEpjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJSFZ1WkdWbWFXNWxaRHRjY2x4dUlDQWdJSDA3WEhKY2JpQWdJQ0JDVG05a1pTNXdjbTkwYjNSNWNHVXVaMlYwVUdGcGNrOXlUbVY0ZEVocFoyaGxjaUE5SUdaMWJtTjBhVzl1SUNoclpYa3NJR052YlhCaGNtVXNJR2x1WTJ4MWMybDJaU3dnY21WMWMyVmtRWEp5WVhrcElIdGNjbHh1SUNBZ0lDQWdJQ0IyWVhJZ2FTQTlJSFJvYVhNdWFXNWtaWGhQWmloclpYa3NJQzB4TENCamIyMXdZWEpsS1R0Y2NseHVJQ0FnSUNBZ0lDQjJZWElnYVc1a1pYaFBja3h2ZDJWeUlEMGdhU0E4SURBZ1B5QithU0E2SUNocGJtTnNkWE5wZG1VZ1B5QnBJRG9nYVNBcklERXBPMXh5WEc0Z0lDQWdJQ0FnSUhaaGNpQnJaWGx6SUQwZ2RHaHBjeTVyWlhsek8xeHlYRzRnSUNBZ0lDQWdJR2xtSUNocGJtUmxlRTl5VEc5M1pYSWdQQ0JyWlhsekxteGxibWQwYUNrZ2UxeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYVnpaV1JCY25KaGVWc3dYU0E5SUd0bGVYTmJhVzVrWlhoUGNreHZkMlZ5WFR0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnY21WMWMyVmtRWEp5WVhsYk1WMGdQU0IwYUdsekxuWmhiSFZsYzF0cGJtUmxlRTl5VEc5M1pYSmRPMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2NtVjFjMlZrUVhKeVlYazdYSEpjYmlBZ0lDQWdJQ0FnZlZ4eVhHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCMWJtUmxabWx1WldRN1hISmNiaUFnSUNCOU8xeHlYRzRnSUNBZ1FrNXZaR1V1Y0hKdmRHOTBlWEJsTG1Ob1pXTnJWbUZzYVdRZ1BTQm1kVzVqZEdsdmJpQW9aR1Z3ZEdnc0lIUnlaV1VzSUdKaGMyVkpibVJsZUNrZ2UxeHlYRzRnSUNBZ0lDQWdJSFpoY2lCclRDQTlJSFJvYVhNdWEyVjVjeTVzWlc1bmRHZ3NJSFpNSUQwZ2RHaHBjeTUyWVd4MVpYTXViR1Z1WjNSb08xeHlYRzRnSUNBZ0lDQWdJR05vWldOcktIUm9hWE11ZG1Gc2RXVnpJRDA5UFNCMWJtUmxabFpoYkhNZ1B5QnJUQ0E4UFNCMlRDQTZJR3RNSUQwOVBTQjJUQ3dnWENKclpYbHpMM1poYkhWbGN5QnNaVzVuZEdnZ2JXbHpiV0YwWTJnNklHUmxjSFJvWENJc0lHUmxjSFJvTENCY0luZHBkR2dnYkdWdVozUm9jMXdpTENCclRDd2dka3dzSUZ3aVlXNWtJR0poYzJWSmJtUmxlRndpTENCaVlYTmxTVzVrWlhncE8xeHlYRzRnSUNBZ0lDQWdJQzh2SUU1dmRHVTZJSGRsSUdSdmJpZDBJR05vWldOcklHWnZjaUJjSW01dlpHVWdkRzl2SUhOdFlXeHNYQ0lnWW1WallYVnpaU0J6YjIxbGRHbHRaWE1nWVNCdWIyUmxYSEpjYmlBZ0lDQWdJQ0FnTHk4Z1kyRnVJR3hsWjJsMGFXMWhkR1ZzZVNCb1lYWmxJSE5wZW1VZ01TNGdWR2hwY3lCdlkyTjFjbk1nYVdZZ2RHaGxjbVVnYVhNZ1lTQmlZWFJqYUNCY2NseHVJQ0FnSUNBZ0lDQXZMeUJrWld4bGRHbHZiaXdnYkdWaGRtbHVaeUJoSUc1dlpHVWdiMllnYzJsNlpTQXhMQ0JoYm1RZ2RHaGxJSE5wWW14cGJtZHpJR0Z5WlNCbWRXeHNJSE52WEhKY2JpQWdJQ0FnSUNBZ0x5OGdhWFFnWTJGdUozUWdZbVVnYldWeVoyVmtJSGRwZEdnZ1lXUnFZV05sYm5RZ2JtOWtaWE11SUVodmQyVjJaWElzSUhSb1pTQndZWEpsYm5RZ2QybHNiRnh5WEc0Z0lDQWdJQ0FnSUM4dklIWmxjbWxtZVNCMGFHRjBJSFJvWlNCaGRtVnlZV2RsSUc1dlpHVWdjMmw2WlNCcGN5QmhkQ0JzWldGemRDQm9ZV3htSUc5bUlIUm9aU0J0WVhocGJYVnRMbHh5WEc0Z0lDQWdJQ0FnSUdOb1pXTnJLR1JsY0hSb0lEMDlJREFnZkh3Z2Ewd2dQaUF3TENCY0ltVnRjSFI1SUd4bFlXWWdZWFFnWkdWd2RHaGNJaXdnWkdWd2RHZ3NJRndpWVc1a0lHSmhjMlZKYm1SbGVGd2lMQ0JpWVhObFNXNWtaWGdwTzF4eVhHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCclREdGNjbHh1SUNBZ0lIMDdYSEpjYmlBZ0lDQXZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2TDF4eVhHNGdJQ0FnTHk4Z1RHVmhaaUJPYjJSbE9pQnpaWFFnSmlCdWIyUmxJSE53YkdsMGRHbHVaeUF2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OWNjbHh1SUNBZ0lFSk9iMlJsTG5CeWIzUnZkSGx3WlM1elpYUWdQU0JtZFc1amRHbHZiaUFvYTJWNUxDQjJZV3gxWlN3Z2IzWmxjbmR5YVhSbExDQjBjbVZsS1NCN1hISmNiaUFnSUNBZ0lDQWdkbUZ5SUdrZ1BTQjBhR2x6TG1sdVpHVjRUMllvYTJWNUxDQXRNU3dnZEhKbFpTNWZZMjl0Y0dGeVpTazdYSEpjYmlBZ0lDQWdJQ0FnYVdZZ0tHa2dQQ0F3S1NCN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUM4dklHdGxlU0JrYjJWeklHNXZkQ0JsZUdsemRDQjVaWFJjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdhU0E5SUg1cE8xeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCMGNtVmxMbDl6YVhwbEt5czdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2gwYUdsekxtdGxlWE11YkdWdVozUm9JRHdnZEhKbFpTNWZiV0Y0VG05a1pWTnBlbVVwSUh0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCMGFHbHpMbWx1YzJWeWRFbHVUR1ZoWmlocExDQnJaWGtzSUhaaGJIVmxMQ0IwY21WbEtUdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ2ZWeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCbGJITmxJSHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUM4dklGUm9hWE1nYkdWaFppQnViMlJsSUdseklHWjFiR3dnWVc1a0lHMTFjM1FnYzNCc2FYUmNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSFpoY2lCdVpYZFNhV2RvZEZOcFlteHBibWNnUFNCMGFHbHpMbk53YkdsMFQyWm1VbWxuYUhSVGFXUmxLQ2tzSUhSaGNtZGxkQ0E5SUhSb2FYTTdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2FTQStJSFJvYVhNdWEyVjVjeTVzWlc1bmRHZ3BJSHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBJQzA5SUhSb2FYTXVhMlY1Y3k1c1pXNW5kR2c3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdkR0Z5WjJWMElEMGdibVYzVW1sbmFIUlRhV0pzYVc1bk8xeHlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZEdGeVoyVjBMbWx1YzJWeWRFbHVUR1ZoWmlocExDQnJaWGtzSUhaaGJIVmxMQ0IwY21WbEtUdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQnVaWGRTYVdkb2RGTnBZbXhwYm1jN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUgxY2NseHVJQ0FnSUNBZ0lDQjlYSEpjYmlBZ0lDQWdJQ0FnWld4elpTQjdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lDOHZJRXRsZVNCaGJISmxZV1I1SUdWNGFYTjBjMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFvYjNabGNuZHlhWFJsSUNFOVBTQm1ZV3h6WlNrZ2UxeHlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhV1lnS0haaGJIVmxJQ0U5UFNCMWJtUmxabWx1WldRcFhISmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZEdocGN5NXlaV2xtZVZaaGJIVmxjeWdwTzF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0x5OGdkWE4xWVd4c2VTQjBhR2x6SUdseklHRWdibTh0YjNBc0lHSjFkQ0J6YjIxbElIVnpaWEp6SUcxaGVTQjNhWE5vSUhSdklHVmthWFFnZEdobElHdGxlVnh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZEdocGN5NXJaWGx6VzJsZElEMGdhMlY1TzF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RHaHBjeTUyWVd4MVpYTmJhVjBnUFNCMllXeDFaVHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z1ptRnNjMlU3WEhKY2JpQWdJQ0FnSUNBZ2ZWeHlYRzRnSUNBZ2ZUdGNjbHh1SUNBZ0lFSk9iMlJsTG5CeWIzUnZkSGx3WlM1eVpXbG1lVlpoYkhWbGN5QTlJR1oxYm1OMGFXOXVJQ2dwSUh0Y2NseHVJQ0FnSUNBZ0lDQnBaaUFvZEdocGN5NTJZV3gxWlhNZ1BUMDlJSFZ1WkdWbVZtRnNjeWxjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlIUm9hWE11ZG1Gc2RXVnpJRDBnZEdocGN5NTJZV3gxWlhNdWMyeHBZMlVvTUN3Z2RHaHBjeTVyWlhsekxteGxibWQwYUNrN1hISmNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlIUm9hWE11ZG1Gc2RXVnpPMXh5WEc0Z0lDQWdmVHRjY2x4dUlDQWdJRUpPYjJSbExuQnliM1J2ZEhsd1pTNXBibk5sY25SSmJreGxZV1lnUFNCbWRXNWpkR2x2YmlBb2FTd2dhMlY1TENCMllXeDFaU3dnZEhKbFpTa2dlMXh5WEc0Z0lDQWdJQ0FnSUhSb2FYTXVhMlY1Y3k1emNHeHBZMlVvYVN3Z01Dd2dhMlY1S1R0Y2NseHVJQ0FnSUNBZ0lDQnBaaUFvZEdocGN5NTJZV3gxWlhNZ1BUMDlJSFZ1WkdWbVZtRnNjeWtnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0IzYUdsc1pTQW9kVzVrWldaV1lXeHpMbXhsYm1kMGFDQThJSFJ5WldVdVgyMWhlRTV2WkdWVGFYcGxLVnh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZFc1a1pXWldZV3h6TG5CMWMyZ29kVzVrWldacGJtVmtLVHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lnS0haaGJIVmxJRDA5UFNCMWJtUmxabWx1WldRcElIdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQjBjblZsTzF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0I5WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJR1ZzYzJVZ2UxeHlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdkR2hwY3k1MllXeDFaWE1nUFNCMWJtUmxabFpoYkhNdWMyeHBZMlVvTUN3Z2RHaHBjeTVyWlhsekxteGxibWQwYUNBdElERXBPMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYSEpjYmlBZ0lDQWdJQ0FnZlZ4eVhHNGdJQ0FnSUNBZ0lIUm9hWE11ZG1Gc2RXVnpMbk53YkdsalpTaHBMQ0F3TENCMllXeDFaU2s3WEhKY2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUhSeWRXVTdYSEpjYmlBZ0lDQjlPMXh5WEc0Z0lDQWdRazV2WkdVdWNISnZkRzkwZVhCbExuUmhhMlZHY205dFVtbG5hSFFnUFNCbWRXNWpkR2x2YmlBb2NtaHpLU0I3WEhKY2JpQWdJQ0FnSUNBZ0x5OGdVbVZ0YVc1a1pYSTZJSEJoY21WdWRDQnViMlJsSUcxMWMzUWdkWEJrWVhSbElHbDBjeUJqYjNCNUlHOW1JR3RsZVNCbWIzSWdkR2hwY3lCdWIyUmxYSEpjYmlBZ0lDQWdJQ0FnTHk4Z1lYTnpaWEowT2lCdVpXbDBhR1Z5SUc1dlpHVWdhWE1nYzJoaGNtVmtYSEpjYmlBZ0lDQWdJQ0FnTHk4Z1lYTnpaWEowSUhKb2N5NXJaWGx6TG14bGJtZDBhQ0ErSUNodFlYaE9iMlJsVTJsNlpTOHlJQ1ltSUhSb2FYTXVhMlY1Y3k1c1pXNW5kR2c4YldGNFRtOWtaVk5wZW1VcFhISmNiaUFnSUNBZ0lDQWdkbUZ5SUhZZ1BTQjBhR2x6TG5aaGJIVmxjenRjY2x4dUlDQWdJQ0FnSUNCcFppQW9jbWh6TG5aaGJIVmxjeUE5UFQwZ2RXNWtaV1pXWVd4ektTQjdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2gySUNFOVBTQjFibVJsWmxaaGJITXBYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IyTG5CMWMyZ29kVzVrWldacGJtVmtLVHRjY2x4dUlDQWdJQ0FnSUNCOVhISmNiaUFnSUNBZ0lDQWdaV3h6WlNCN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUhZZ1BTQjBhR2x6TG5KbGFXWjVWbUZzZFdWektDazdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lIWXVjSFZ6YUNoeWFITXVkbUZzZFdWekxuTm9hV1owS0NrcE8xeHlYRzRnSUNBZ0lDQWdJSDFjY2x4dUlDQWdJQ0FnSUNCMGFHbHpMbXRsZVhNdWNIVnphQ2h5YUhNdWEyVjVjeTV6YUdsbWRDZ3BLVHRjY2x4dUlDQWdJSDA3WEhKY2JpQWdJQ0JDVG05a1pTNXdjbTkwYjNSNWNHVXVkR0ZyWlVaeWIyMU1aV1owSUQwZ1puVnVZM1JwYjI0Z0tHeG9jeWtnZTF4eVhHNGdJQ0FnSUNBZ0lDOHZJRkpsYldsdVpHVnlPaUJ3WVhKbGJuUWdibTlrWlNCdGRYTjBJSFZ3WkdGMFpTQnBkSE1nWTI5d2VTQnZaaUJyWlhrZ1ptOXlJSFJvYVhNZ2JtOWtaVnh5WEc0Z0lDQWdJQ0FnSUM4dklHRnpjMlZ5ZERvZ2JtVnBkR2hsY2lCdWIyUmxJR2x6SUhOb1lYSmxaRnh5WEc0Z0lDQWdJQ0FnSUM4dklHRnpjMlZ5ZENCeWFITXVhMlY1Y3k1c1pXNW5kR2dnUGlBb2JXRjRUbTlrWlZOcGVtVXZNaUFtSmlCMGFHbHpMbXRsZVhNdWJHVnVaM1JvUEcxaGVFNXZaR1ZUYVhwbEtWeHlYRzRnSUNBZ0lDQWdJSFpoY2lCMklEMGdkR2hwY3k1MllXeDFaWE03WEhKY2JpQWdJQ0FnSUNBZ2FXWWdLR3hvY3k1MllXeDFaWE1nUFQwOUlIVnVaR1ZtVm1Gc2N5a2dlMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFvZGlBaFBUMGdkVzVrWldaV1lXeHpLVnh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZGk1MWJuTm9hV1owS0hWdVpHVm1hVzVsWkNrN1hISmNiaUFnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdJQ0FnSUdWc2MyVWdlMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQjJJRDBnZEdocGN5NXlaV2xtZVZaaGJIVmxjeWdwTzF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0IyTG5WdWMyaHBablFvYkdoekxuWmhiSFZsY3k1d2IzQW9LU2s3WEhKY2JpQWdJQ0FnSUNBZ2ZWeHlYRzRnSUNBZ0lDQWdJSFJvYVhNdWEyVjVjeTUxYm5Ob2FXWjBLR3hvY3k1clpYbHpMbkJ2Y0NncEtUdGNjbHh1SUNBZ0lIMDdYSEpjYmlBZ0lDQkNUbTlrWlM1d2NtOTBiM1I1Y0dVdWMzQnNhWFJQWm1aU2FXZG9kRk5wWkdVZ1BTQm1kVzVqZEdsdmJpQW9LU0I3WEhKY2JpQWdJQ0FnSUNBZ0x5OGdVbVZ0YVc1a1pYSTZJSEJoY21WdWRDQnViMlJsSUcxMWMzUWdkWEJrWVhSbElHbDBjeUJqYjNCNUlHOW1JR3RsZVNCbWIzSWdkR2hwY3lCdWIyUmxYSEpjYmlBZ0lDQWdJQ0FnZG1GeUlHaGhiR1lnUFNCMGFHbHpMbXRsZVhNdWJHVnVaM1JvSUQ0K0lERXNJR3RsZVhNZ1BTQjBhR2x6TG10bGVYTXVjM0JzYVdObEtHaGhiR1lwTzF4eVhHNGdJQ0FnSUNBZ0lIWmhjaUIyWVd4MVpYTWdQU0IwYUdsekxuWmhiSFZsY3lBOVBUMGdkVzVrWldaV1lXeHpJRDhnZFc1a1pXWldZV3h6SURvZ2RHaHBjeTUyWVd4MVpYTXVjM0JzYVdObEtHaGhiR1lwTzF4eVhHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCdVpYY2dRazV2WkdVb2EyVjVjeXdnZG1Gc2RXVnpLVHRjY2x4dUlDQWdJSDA3WEhKY2JpQWdJQ0F2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkwxeHlYRzRnSUNBZ0x5OGdUR1ZoWmlCT2IyUmxPaUJ6WTJGdWJtbHVaeUFtSUdSbGJHVjBhVzl1Y3lBdkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTljY2x4dUlDQWdJRUpPYjJSbExuQnliM1J2ZEhsd1pTNW1iM0pTWVc1blpTQTlJR1oxYm1OMGFXOXVJQ2hzYjNjc0lHaHBaMmdzSUdsdVkyeDFaR1ZJYVdkb0xDQmxaR2wwVFc5a1pTd2dkSEpsWlN3Z1kyOTFiblFzSUc5dVJtOTFibVFwSUh0Y2NseHVJQ0FnSUNBZ0lDQjJZWElnWTIxd0lEMGdkSEpsWlM1ZlkyOXRjR0Z5WlR0Y2NseHVJQ0FnSUNBZ0lDQjJZWElnYVV4dmR5d2dhVWhwWjJnN1hISmNiaUFnSUNBZ0lDQWdhV1lnS0docFoyZ2dQVDA5SUd4dmR5a2dlMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFvSVdsdVkyeDFaR1ZJYVdkb0tWeHlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlHTnZkVzUwTzF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0JwU0dsbmFDQTlJQ2hwVEc5M0lEMGdkR2hwY3k1cGJtUmxlRTltS0d4dmR5d2dMVEVzSUdOdGNDa3BJQ3NnTVR0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tHbE1iM2NnUENBd0tWeHlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlHTnZkVzUwTzF4eVhHNGdJQ0FnSUNBZ0lIMWNjbHh1SUNBZ0lDQWdJQ0JsYkhObElIdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ2FVeHZkeUE5SUhSb2FYTXVhVzVrWlhoUFppaHNiM2NzSURBc0lHTnRjQ2s3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJR2xJYVdkb0lEMGdkR2hwY3k1cGJtUmxlRTltS0docFoyZ3NJQzB4TENCamJYQXBPMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFvYVVocFoyZ2dQQ0F3S1Z4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FVaHBaMmdnUFNCK2FVaHBaMmc3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJR1ZzYzJVZ2FXWWdLR2x1WTJ4MVpHVklhV2RvSUQwOVBTQjBjblZsS1Z4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FVaHBaMmdyS3p0Y2NseHVJQ0FnSUNBZ0lDQjlYSEpjYmlBZ0lDQWdJQ0FnZG1GeUlHdGxlWE1nUFNCMGFHbHpMbXRsZVhNc0lIWmhiSFZsY3lBOUlIUm9hWE11ZG1Gc2RXVnpPMXh5WEc0Z0lDQWdJQ0FnSUdsbUlDaHZia1p2ZFc1a0lDRTlQU0IxYm1SbFptbHVaV1FwSUh0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnWm05eUlDaDJZWElnYVNBOUlHbE1iM2M3SUdrZ1BDQnBTR2xuYURzZ2FTc3JLU0I3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCMllYSWdhMlY1SUQwZ2EyVjVjMXRwWFR0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIWmhjaUJ5WlhOMWJIUWdQU0J2YmtadmRXNWtLR3RsZVN3Z2RtRnNkV1Z6VzJsZExDQmpiM1Z1ZENzcktUdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNoeVpYTjFiSFFnSVQwOUlIVnVaR1ZtYVc1bFpDa2dlMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2hsWkdsMFRXOWtaU0E5UFQwZ2RISjFaU2tnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcFppQW9hMlY1SUNFOVBTQnJaWGx6VzJsZElIeDhJSFJvYVhNdWFYTlRhR0Z5WldRZ1BUMDlJSFJ5ZFdVcFhISmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IwYUhKdmR5QnVaWGNnUlhKeWIzSW9YQ0pDVkhKbFpTQnBiR3hsWjJGc2JIa2dZMmhoYm1kbFpDQnZjaUJqYkc5dVpXUWdhVzRnWldScGRGSmhibWRsWENJcE8xeHlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBaaUFvY21WemRXeDBMbVJsYkdWMFpTa2dlMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RHaHBjeTVyWlhsekxuTndiR2xqWlNocExDQXhLVHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2gwYUdsekxuWmhiSFZsY3lBaFBUMGdkVzVrWldaV1lXeHpLVnh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSFJvYVhNdWRtRnNkV1Z6TG5Od2JHbGpaU2hwTENBeEtUdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhSeVpXVXVYM05wZW1VdExUdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdrdExUdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsSWFXZG9MUzA3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUgxY2NseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1pXeHpaU0JwWmlBb2NtVnpkV3gwTG1oaGMwOTNibEJ5YjNCbGNuUjVLQ2QyWVd4MVpTY3BLU0I3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjJZV3gxWlhOYmFWMGdQU0J5WlhOMWJIUXVkbUZzZFdVN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIMWNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOVhISmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tISmxjM1ZzZEM1aWNtVmhheUFoUFQwZ2RXNWtaV1pwYm1Wa0tWeHlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2NtVnpkV3gwTzF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZWeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCOVhISmNiaUFnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdJQ0FnSUdWc2MyVmNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ1kyOTFiblFnS3owZ2FVaHBaMmdnTFNCcFRHOTNPMXh5WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJqYjNWdWREdGNjbHh1SUNBZ0lIMDdYSEpjYmlBZ0lDQXZLaW9nUVdSa2N5QmxiblJwY21VZ1kyOXVkR1Z1ZEhNZ2IyWWdjbWxuYUhRdGFHRnVaQ0J6YVdKc2FXNW5JQ2h5YUhNZ2FYTWdiR1ZtZENCMWJtTm9ZVzVuWldRcElDb3ZYSEpjYmlBZ0lDQkNUbTlrWlM1d2NtOTBiM1I1Y0dVdWJXVnlaMlZUYVdKc2FXNW5JRDBnWm5WdVkzUnBiMjRnS0hKb2N5d2dYeWtnZTF4eVhHNGdJQ0FnSUNBZ0lIUm9hWE11YTJWNWN5NXdkWE5vTG1Gd2NHeDVLSFJvYVhNdWEyVjVjeXdnY21oekxtdGxlWE1wTzF4eVhHNGdJQ0FnSUNBZ0lHbG1JQ2gwYUdsekxuWmhiSFZsY3lBOVBUMGdkVzVrWldaV1lXeHpLU0I3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJR2xtSUNoeWFITXVkbUZzZFdWeklEMDlQU0IxYm1SbFpsWmhiSE1wWEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTQ3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJSFJvYVhNdWRtRnNkV1Z6SUQwZ2RHaHBjeTUyWVd4MVpYTXVjMnhwWTJVb01Dd2dkR2hwY3k1clpYbHpMbXhsYm1kMGFDazdYSEpjYmlBZ0lDQWdJQ0FnZlZ4eVhHNGdJQ0FnSUNBZ0lIUm9hWE11ZG1Gc2RXVnpMbkIxYzJndVlYQndiSGtvZEdocGN5NTJZV3gxWlhNc0lISm9jeTV5WldsbWVWWmhiSFZsY3lncEtUdGNjbHh1SUNBZ0lIMDdYSEpjYmlBZ0lDQnlaWFIxY200Z1FrNXZaR1U3WEhKY2JuMG9LU2s3WEhKY2JpOHFLaUJKYm5SbGNtNWhiQ0J1YjJSbElDaHViMjR0YkdWaFppQnViMlJsS1NBcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2lvcUtpb3FLaW9xS2k5Y2NseHVkbUZ5SUVKT2IyUmxTVzUwWlhKdVlXd2dQU0F2S2lvZ1FHTnNZWE56SUNvdklDaG1kVzVqZEdsdmJpQW9YM04xY0dWeUtTQjdYSEpjYmlBZ0lDQmZYMlY0ZEdWdVpITW9RazV2WkdWSmJuUmxjbTVoYkN3Z1gzTjFjR1Z5S1R0Y2NseHVJQ0FnSUM4cUtseHlYRzRnSUNBZ0lDb2dWR2hwY3lCa2IyVnpJRzV2ZENCdFlYSnJJR0JqYUdsc1pISmxibUFnWVhNZ2MyaGhjbVZrTENCemJ5QnBkQ0JwY3lCMGFHVWdjbVZ6Y0c5dWMybGlhV3hwZEhrZ2IyWWdkR2hsSUdOaGJHeGxjbHh5WEc0Z0lDQWdJQ29nZEc4Z1pXNXpkWEpsSUdOb2FXeGtjbVZ1SUdGeVpTQmxhWFJvWlhJZ2JXRnlhMlZrSUhOb1lYSmxaQ3dnYjNJZ1lYSmxiaWQwSUdsdVkyeDFaR1ZrSUdsdUlHRnViM1JvWlhJZ2RISmxaUzVjY2x4dUlDQWdJQ0FxTDF4eVhHNGdJQ0FnWm5WdVkzUnBiMjRnUWs1dlpHVkpiblJsY201aGJDaGphR2xzWkhKbGJpd2dhMlY1Y3lrZ2UxeHlYRzRnSUNBZ0lDQWdJSFpoY2lCZmRHaHBjeUE5SUhSb2FYTTdYSEpjYmlBZ0lDQWdJQ0FnYVdZZ0tDRnJaWGx6S1NCN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUd0bGVYTWdQU0JiWFR0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnWm05eUlDaDJZWElnYVNBOUlEQTdJR2tnUENCamFHbHNaSEpsYmk1c1pXNW5kR2c3SUdrckt5bGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR3RsZVhOYmFWMGdQU0JqYUdsc1pISmxibHRwWFM1dFlYaExaWGtvS1R0Y2NseHVJQ0FnSUNBZ0lDQjlYSEpjYmlBZ0lDQWdJQ0FnWDNSb2FYTWdQU0JmYzNWd1pYSXVZMkZzYkNoMGFHbHpMQ0JyWlhsektTQjhmQ0IwYUdsek8xeHlYRzRnSUNBZ0lDQWdJRjkwYUdsekxtTm9hV3hrY21WdUlEMGdZMmhwYkdSeVpXNDdYSEpjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJRjkwYUdsek8xeHlYRzRnSUNBZ2ZWeHlYRzRnSUNBZ1FrNXZaR1ZKYm5SbGNtNWhiQzV3Y205MGIzUjVjR1V1WTJ4dmJtVWdQU0JtZFc1amRHbHZiaUFvS1NCN1hISmNiaUFnSUNBZ0lDQWdkbUZ5SUdOb2FXeGtjbVZ1SUQwZ2RHaHBjeTVqYUdsc1pISmxiaTV6YkdsalpTZ3dLVHRjY2x4dUlDQWdJQ0FnSUNCbWIzSWdLSFpoY2lCcElEMGdNRHNnYVNBOElHTm9hV3hrY21WdUxteGxibWQwYURzZ2FTc3JLVnh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQmphR2xzWkhKbGJsdHBYUzVwYzFOb1lYSmxaQ0E5SUhSeWRXVTdYSEpjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJRzVsZHlCQ1RtOWtaVWx1ZEdWeWJtRnNLR05vYVd4a2NtVnVMQ0IwYUdsekxtdGxlWE11YzJ4cFkyVW9NQ2twTzF4eVhHNGdJQ0FnZlR0Y2NseHVJQ0FnSUVKT2IyUmxTVzUwWlhKdVlXd3VjSEp2ZEc5MGVYQmxMbWR5WldWa2VVTnNiMjVsSUQwZ1puVnVZM1JwYjI0Z0tHWnZjbU5sS1NCN1hISmNiaUFnSUNBZ0lDQWdhV1lnS0hSb2FYTXVhWE5UYUdGeVpXUWdKaVlnSVdadmNtTmxLVnh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2RHaHBjenRjY2x4dUlDQWdJQ0FnSUNCMllYSWdiblVnUFNCdVpYY2dRazV2WkdWSmJuUmxjbTVoYkNoMGFHbHpMbU5vYVd4a2NtVnVMbk5zYVdObEtEQXBMQ0IwYUdsekxtdGxlWE11YzJ4cFkyVW9NQ2twTzF4eVhHNGdJQ0FnSUNBZ0lHWnZjaUFvZG1GeUlHa2dQU0F3T3lCcElEd2diblV1WTJocGJHUnlaVzR1YkdWdVozUm9PeUJwS3lzcFhISmNiaUFnSUNBZ0lDQWdJQ0FnSUc1MUxtTm9hV3hrY21WdVcybGRJRDBnYm5VdVkyaHBiR1J5Wlc1YmFWMHVaM0psWldSNVEyeHZibVVvWm05eVkyVXBPMXh5WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJ1ZFR0Y2NseHVJQ0FnSUgwN1hISmNiaUFnSUNCQ1RtOWtaVWx1ZEdWeWJtRnNMbkJ5YjNSdmRIbHdaUzV0YVc1TFpYa2dQU0JtZFc1amRHbHZiaUFvS1NCN1hISmNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlIUm9hWE11WTJocGJHUnlaVzViTUYwdWJXbHVTMlY1S0NrN1hISmNiaUFnSUNCOU8xeHlYRzRnSUNBZ1FrNXZaR1ZKYm5SbGNtNWhiQzV3Y205MGIzUjVjR1V1YldsdVVHRnBjaUE5SUdaMWJtTjBhVzl1SUNoeVpYVnpaV1JCY25KaGVTa2dlMXh5WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUIwYUdsekxtTm9hV3hrY21WdVd6QmRMbTFwYmxCaGFYSW9jbVYxYzJWa1FYSnlZWGtwTzF4eVhHNGdJQ0FnZlR0Y2NseHVJQ0FnSUVKT2IyUmxTVzUwWlhKdVlXd3VjSEp2ZEc5MGVYQmxMbTFoZUZCaGFYSWdQU0JtZFc1amRHbHZiaUFvY21WMWMyVmtRWEp5WVhrcElIdGNjbHh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdkR2hwY3k1amFHbHNaSEpsYmx0MGFHbHpMbU5vYVd4a2NtVnVMbXhsYm1kMGFDQXRJREZkTG0xaGVGQmhhWElvY21WMWMyVmtRWEp5WVhrcE8xeHlYRzRnSUNBZ2ZUdGNjbHh1SUNBZ0lFSk9iMlJsU1c1MFpYSnVZV3d1Y0hKdmRHOTBlWEJsTG1kbGRDQTlJR1oxYm1OMGFXOXVJQ2hyWlhrc0lHUmxabUYxYkhSV1lXeDFaU3dnZEhKbFpTa2dlMXh5WEc0Z0lDQWdJQ0FnSUhaaGNpQnBJRDBnZEdocGN5NXBibVJsZUU5bUtHdGxlU3dnTUN3Z2RISmxaUzVmWTI5dGNHRnlaU2tzSUdOb2FXeGtjbVZ1SUQwZ2RHaHBjeTVqYUdsc1pISmxianRjY2x4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnYVNBOElHTm9hV3hrY21WdUxteGxibWQwYUNBL0lHTm9hV3hrY21WdVcybGRMbWRsZENoclpYa3NJR1JsWm1GMWJIUldZV3gxWlN3Z2RISmxaU2tnT2lCMWJtUmxabWx1WldRN1hISmNiaUFnSUNCOU8xeHlYRzRnSUNBZ1FrNXZaR1ZKYm5SbGNtNWhiQzV3Y205MGIzUjVjR1V1WjJWMFVHRnBjazl5VG1WNGRFeHZkMlZ5SUQwZ1puVnVZM1JwYjI0Z0tHdGxlU3dnWTI5dGNHRnlaU3dnYVc1amJIVnphWFpsTENCeVpYVnpaV1JCY25KaGVTa2dlMXh5WEc0Z0lDQWdJQ0FnSUhaaGNpQnBJRDBnZEdocGN5NXBibVJsZUU5bUtHdGxlU3dnTUN3Z1kyOXRjR0Z5WlNrc0lHTm9hV3hrY21WdUlEMGdkR2hwY3k1amFHbHNaSEpsYmp0Y2NseHVJQ0FnSUNBZ0lDQnBaaUFvYVNBK1BTQmphR2xzWkhKbGJpNXNaVzVuZEdncFhISmNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUIwYUdsekxtMWhlRkJoYVhJb2NtVjFjMlZrUVhKeVlYa3BPMXh5WEc0Z0lDQWdJQ0FnSUhaaGNpQnlaWE4xYkhRZ1BTQmphR2xzWkhKbGJsdHBYUzVuWlhSUVlXbHlUM0pPWlhoMFRHOTNaWElvYTJWNUxDQmpiMjF3WVhKbExDQnBibU5zZFhOcGRtVXNJSEpsZFhObFpFRnljbUY1S1R0Y2NseHVJQ0FnSUNBZ0lDQnBaaUFvY21WemRXeDBJRDA5UFNCMWJtUmxabWx1WldRZ0ppWWdhU0ErSURBcElIdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUdOb2FXeGtjbVZ1VzJrZ0xTQXhYUzV0WVhoUVlXbHlLSEpsZFhObFpFRnljbUY1S1R0Y2NseHVJQ0FnSUNBZ0lDQjlYSEpjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJSEpsYzNWc2REdGNjbHh1SUNBZ0lIMDdYSEpjYmlBZ0lDQkNUbTlrWlVsdWRHVnlibUZzTG5CeWIzUnZkSGx3WlM1blpYUlFZV2x5VDNKT1pYaDBTR2xuYUdWeUlEMGdablZ1WTNScGIyNGdLR3RsZVN3Z1kyOXRjR0Z5WlN3Z2FXNWpiSFZ6YVhabExDQnlaWFZ6WldSQmNuSmhlU2tnZTF4eVhHNGdJQ0FnSUNBZ0lIWmhjaUJwSUQwZ2RHaHBjeTVwYm1SbGVFOW1LR3RsZVN3Z01Dd2dZMjl0Y0dGeVpTa3NJR05vYVd4a2NtVnVJRDBnZEdocGN5NWphR2xzWkhKbGJpd2diR1Z1WjNSb0lEMGdZMmhwYkdSeVpXNHViR1Z1WjNSb08xeHlYRzRnSUNBZ0lDQWdJR2xtSUNocElENDlJR3hsYm1kMGFDbGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhWdVpHVm1hVzVsWkR0Y2NseHVJQ0FnSUNBZ0lDQjJZWElnY21WemRXeDBJRDBnWTJocGJHUnlaVzViYVYwdVoyVjBVR0ZwY2s5eVRtVjRkRWhwWjJobGNpaHJaWGtzSUdOdmJYQmhjbVVzSUdsdVkyeDFjMmwyWlN3Z2NtVjFjMlZrUVhKeVlYa3BPMXh5WEc0Z0lDQWdJQ0FnSUdsbUlDaHlaWE4xYkhRZ1BUMDlJSFZ1WkdWbWFXNWxaQ0FtSmlCcElEd2diR1Z1WjNSb0lDMGdNU2tnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdZMmhwYkdSeVpXNWJhU0FySURGZExtMXBibEJoYVhJb2NtVjFjMlZrUVhKeVlYa3BPMXh5WEc0Z0lDQWdJQ0FnSUgxY2NseHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2NtVnpkV3gwTzF4eVhHNGdJQ0FnZlR0Y2NseHVJQ0FnSUVKT2IyUmxTVzUwWlhKdVlXd3VjSEp2ZEc5MGVYQmxMbU5vWldOclZtRnNhV1FnUFNCbWRXNWpkR2x2YmlBb1pHVndkR2dzSUhSeVpXVXNJR0poYzJWSmJtUmxlQ2tnZTF4eVhHNGdJQ0FnSUNBZ0lIWmhjaUJyVENBOUlIUm9hWE11YTJWNWN5NXNaVzVuZEdnc0lHTk1JRDBnZEdocGN5NWphR2xzWkhKbGJpNXNaVzVuZEdnN1hISmNiaUFnSUNBZ0lDQWdZMmhsWTJzb2Ewd2dQVDA5SUdOTUxDQmNJbXRsZVhNdlkyaHBiR1J5Wlc0Z2JHVnVaM1JvSUcxcGMyMWhkR05vT2lCa1pYQjBhRndpTENCa1pYQjBhQ3dnWENKc1pXNW5kR2h6WENJc0lHdE1MQ0JqVEN3Z1hDSmlZWE5sU1c1a1pYaGNJaXdnWW1GelpVbHVaR1Y0S1R0Y2NseHVJQ0FnSUNBZ0lDQmphR1ZqYXloclRDQStJREVnZkh3Z1pHVndkR2dnUGlBd0xDQmNJbWx1ZEdWeWJtRnNJRzV2WkdVZ2FHRnpJR3hsYm1kMGFGd2lMQ0JyVEN3Z1hDSmhkQ0JrWlhCMGFGd2lMQ0JrWlhCMGFDd2dYQ0ppWVhObFNXNWtaWGhjSWl3Z1ltRnpaVWx1WkdWNEtUdGNjbHh1SUNBZ0lDQWdJQ0IyWVhJZ2MybDZaU0E5SURBc0lHTWdQU0IwYUdsekxtTm9hV3hrY21WdUxDQnJJRDBnZEdocGN5NXJaWGx6TENCamFHbHNaRk5wZW1VZ1BTQXdPMXh5WEc0Z0lDQWdJQ0FnSUdadmNpQW9kbUZ5SUdrZ1BTQXdPeUJwSUR3Z1kwdzdJR2tyS3lrZ2UxeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCemFYcGxJQ3M5SUdOYmFWMHVZMmhsWTJ0V1lXeHBaQ2hrWlhCMGFDQXJJREVzSUhSeVpXVXNJR0poYzJWSmJtUmxlQ0FySUhOcGVtVXBPMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQmphR2xzWkZOcGVtVWdLejBnWTF0cFhTNXJaWGx6TG14bGJtZDBhRHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdZMmhsWTJzb2MybDZaU0ErUFNCamFHbHNaRk5wZW1Vc0lGd2lkM1JtWENJc0lHSmhjMlZKYm1SbGVDazdJQzh2SUc1dklIZGhlU0IwYUdseklIZHBiR3dnWlhabGNpQm1ZV2xzWEhKY2JpQWdJQ0FnSUNBZ0lDQWdJR05vWldOcktHa2dQVDA5SURBZ2ZId2dZMXRwSUMwZ01WMHVZMjl1YzNSeWRXTjBiM0lnUFQwOUlHTmJhVjB1WTI5dWMzUnlkV04wYjNJc0lGd2lkSGx3WlNCdGFYTnRZWFJqYUN3Z1ltRnpaVWx1WkdWNE9sd2lMQ0JpWVhObFNXNWtaWGdwTzF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb1kxdHBYUzV0WVhoTFpYa29LU0FoUFNCclcybGRLVnh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWTJobFkyc29abUZzYzJVc0lGd2lhMlY1YzF0Y0lpd2dhU3dnWENKZElEMWNJaXdnYTF0cFhTd2dYQ0pwY3lCM2NtOXVaeXdnYzJodmRXeGtJR0psSUZ3aUxDQmpXMmxkTG0xaGVFdGxlU2dwTENCY0ltRjBJR1JsY0hSb1hDSXNJR1JsY0hSb0xDQmNJbUpoYzJWSmJtUmxlRndpTENCaVlYTmxTVzVrWlhncE8xeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCcFppQW9JU2hwSUQwOVBTQXdJSHg4SUhSeVpXVXVYMk52YlhCaGNtVW9hMXRwSUMwZ01WMHNJR3RiYVYwcElEd2dNQ2twWEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCamFHVmpheWhtWVd4elpTd2dYQ0p6YjNKMElIWnBiMnhoZEdsdmJpQmhkQ0JrWlhCMGFGd2lMQ0JrWlhCMGFDd2dYQ0pwYm1SbGVGd2lMQ0JwTENCY0ltdGxlWE5jSWl3Z2ExdHBJQzBnTVYwc0lHdGJhVjBwTzF4eVhHNGdJQ0FnSUNBZ0lIMWNjbHh1SUNBZ0lDQWdJQ0F2THlBeU1ESXdMekE0T2lCQ1ZISmxaU0JrYjJWemJpZDBJR0ZzZDJGNWN5QmhkbTlwWkNCbmNtOXpjMng1SUhWdVpHVnljMmw2WldRZ2JtOWtaWE1zWEhKY2JpQWdJQ0FnSUNBZ0x5OGdZblYwSUVGR1FVbExJSE4xWTJnZ2JtOWtaWE1nWVhKbElIQnlaWFIwZVNCb1lYSnRiR1Z6Y3l3Z2MyOGdZV05qWlhCMElIUm9aVzB1WEhKY2JpQWdJQ0FnSUNBZ2RtRnlJSFJ2YjJabGR5QTlJR05vYVd4a1UybDZaU0E5UFQwZ01Ec2dMeThnWTJocGJHUlRhWHBsSUR3Z0tIUnlaV1V1YldGNFRtOWtaVk5wZW1VZ1BqNGdNU2txWTB3N1hISmNiaUFnSUNBZ0lDQWdhV1lnS0hSdmIyWmxkeUI4ZkNCamFHbHNaRk5wZW1VZ1BpQjBjbVZsTG0xaGVFNXZaR1ZUYVhwbElDb2dZMHdwWEhKY2JpQWdJQ0FnSUNBZ0lDQWdJR05vWldOcktHWmhiSE5sTENCMGIyOW1aWGNnUHlCY0luUnZieUJtWlhkY0lpQTZJRndpZEc5dklHMWhibmxjSWl3Z1hDSmphR2xzWkhKbGJpQW9YQ0lzSUdOb2FXeGtVMmw2WlN3Z2MybDZaU3dnWENJcElHRjBJR1JsY0hSb1hDSXNJR1JsY0hSb0xDQmNJbTFoZUU1dlpHVlRhWHBsT2x3aUxDQjBjbVZsTG0xaGVFNXZaR1ZUYVhwbExDQmNJbU5vYVd4a2NtVnVMbXhsYm1kMGFEcGNJaXdnWTB3c0lGd2lZbUZ6WlVsdVpHVjRPbHdpTENCaVlYTmxTVzVrWlhncE8xeHlYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQnphWHBsTzF4eVhHNGdJQ0FnZlR0Y2NseHVJQ0FnSUM4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZYSEpjYmlBZ0lDQXZMeUJKYm5SbGNtNWhiQ0JPYjJSbE9pQnpaWFFnSmlCdWIyUmxJSE53YkdsMGRHbHVaeUF2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2TDF4eVhHNGdJQ0FnUWs1dlpHVkpiblJsY201aGJDNXdjbTkwYjNSNWNHVXVjMlYwSUQwZ1puVnVZM1JwYjI0Z0tHdGxlU3dnZG1Gc2RXVXNJRzkyWlhKM2NtbDBaU3dnZEhKbFpTa2dlMXh5WEc0Z0lDQWdJQ0FnSUhaaGNpQmpJRDBnZEdocGN5NWphR2xzWkhKbGJpd2diV0Y0SUQwZ2RISmxaUzVmYldGNFRtOWtaVk5wZW1Vc0lHTnRjQ0E5SUhSeVpXVXVYMk52YlhCaGNtVTdYSEpjYmlBZ0lDQWdJQ0FnZG1GeUlHa2dQU0JOWVhSb0xtMXBiaWgwYUdsekxtbHVaR1Y0VDJZb2EyVjVMQ0F3TENCamJYQXBMQ0JqTG14bGJtZDBhQ0F0SURFcExDQmphR2xzWkNBOUlHTmJhVjA3WEhKY2JpQWdJQ0FnSUNBZ2FXWWdLR05vYVd4a0xtbHpVMmhoY21Wa0tWeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCalcybGRJRDBnWTJocGJHUWdQU0JqYUdsc1pDNWpiRzl1WlNncE8xeHlYRzRnSUNBZ0lDQWdJR2xtSUNoamFHbHNaQzVyWlhsekxteGxibWQwYUNBK1BTQnRZWGdwSUh0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnTHk4Z1kyaHBiR1FnYVhNZ1puVnNiRHNnYVc1elpYSjBhVzVuSUdGdWVYUm9hVzVuSUdWc2MyVWdkMmxzYkNCallYVnpaU0JoSUhOd2JHbDBMbHh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQXZMeUJUYUdsbWRHbHVaeUJoYmlCcGRHVnRJSFJ2SUhSb1pTQnNaV1owSUc5eUlISnBaMmgwSUhOcFlteHBibWNnYldGNUlHRjJiMmxrSUdFZ2MzQnNhWFF1WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQzh2SUZkbElHTmhiaUJrYnlCaElITm9hV1owSUdsbUlIUm9aU0JoWkdwaFkyVnVkQ0J1YjJSbElHbHpJRzV2ZENCbWRXeHNJR0Z1WkNCcFppQjBhR1ZjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdMeThnWTNWeWNtVnVkQ0JyWlhrZ1kyRnVJSE4wYVd4c0lHSmxJSEJzWVdObFpDQnBiaUIwYUdVZ2MyRnRaU0J1YjJSbElHRm1kR1Z5SUhSb1pTQnphR2xtZEM1Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnZG1GeUlHOTBhR1Z5TzF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2FTQStJREFnSmlZZ0tHOTBhR1Z5SUQwZ1kxdHBJQzBnTVYwcExtdGxlWE11YkdWdVozUm9JRHdnYldGNElDWW1JR050Y0NoamFHbHNaQzVyWlhseld6QmRMQ0JyWlhrcElEd2dNQ2tnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLRzkwYUdWeUxtbHpVMmhoY21Wa0tWeHlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdOYmFTQXRJREZkSUQwZ2IzUm9aWElnUFNCdmRHaGxjaTVqYkc5dVpTZ3BPMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYjNSb1pYSXVkR0ZyWlVaeWIyMVNhV2RvZENoamFHbHNaQ2s3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCMGFHbHpMbXRsZVhOYmFTQXRJREZkSUQwZ2IzUm9aWEl1YldGNFMyVjVLQ2s3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJSDFjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdaV3h6WlNCcFppQW9LRzkwYUdWeUlEMGdZMXRwSUNzZ01WMHBJQ0U5UFNCMWJtUmxabWx1WldRZ0ppWWdiM1JvWlhJdWEyVjVjeTVzWlc1bmRHZ2dQQ0J0WVhnZ0ppWWdZMjF3S0dOb2FXeGtMbTFoZUV0bGVTZ3BMQ0JyWlhrcElEd2dNQ2tnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLRzkwYUdWeUxtbHpVMmhoY21Wa0tWeHlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdOYmFTQXJJREZkSUQwZ2IzUm9aWElnUFNCdmRHaGxjaTVqYkc5dVpTZ3BPMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYjNSb1pYSXVkR0ZyWlVaeWIyMU1aV1owS0dOb2FXeGtLVHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhSb2FYTXVhMlY1YzF0cFhTQTlJR05iYVYwdWJXRjRTMlY1S0NrN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUgxY2NseHVJQ0FnSUNBZ0lDQjlYSEpjYmlBZ0lDQWdJQ0FnZG1GeUlISmxjM1ZzZENBOUlHTm9hV3hrTG5ObGRDaHJaWGtzSUhaaGJIVmxMQ0J2ZG1WeWQzSnBkR1VzSUhSeVpXVXBPMXh5WEc0Z0lDQWdJQ0FnSUdsbUlDaHlaWE4xYkhRZ1BUMDlJR1poYkhObEtWeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnWm1Gc2MyVTdYSEpjYmlBZ0lDQWdJQ0FnZEdocGN5NXJaWGx6VzJsZElEMGdZMmhwYkdRdWJXRjRTMlY1S0NrN1hISmNiaUFnSUNBZ0lDQWdhV1lnS0hKbGMzVnNkQ0E5UFQwZ2RISjFaU2xjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlIUnlkV1U3WEhKY2JpQWdJQ0FnSUNBZ0x5OGdWR2hsSUdOb2FXeGtJR2hoY3lCemNHeHBkQ0JoYm1RZ1lISmxjM1ZzZEdBZ2FYTWdZU0J1WlhjZ2NtbG5hSFFnWTJocGJHUXVMaTRnWkc5bGN5QnBkQ0JtYVhRL1hISmNiaUFnSUNBZ0lDQWdhV1lnS0hSb2FYTXVhMlY1Y3k1c1pXNW5kR2dnUENCdFlYZ3BJSHNnTHk4Z2VXVnpYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lIUm9hWE11YVc1elpYSjBLR2tnS3lBeExDQnlaWE4xYkhRcE8xeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnZEhKMVpUdGNjbHh1SUNBZ0lDQWdJQ0I5WEhKY2JpQWdJQ0FnSUNBZ1pXeHpaU0I3SUM4dklHNXZMQ0IzWlNCdGRYTjBJSE53YkdsMElHRnNjMjljY2x4dUlDQWdJQ0FnSUNBZ0lDQWdkbUZ5SUc1bGQxSnBaMmgwVTJsaWJHbHVaeUE5SUhSb2FYTXVjM0JzYVhSUFptWlNhV2RvZEZOcFpHVW9LU3dnZEdGeVoyVjBJRDBnZEdocGN6dGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLR050Y0NoeVpYTjFiSFF1YldGNFMyVjVLQ2tzSUhSb2FYTXViV0Y0UzJWNUtDa3BJRDRnTUNrZ2UxeHlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdkR0Z5WjJWMElEMGdibVYzVW1sbmFIUlRhV0pzYVc1bk8xeHlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhU0F0UFNCMGFHbHpMbXRsZVhNdWJHVnVaM1JvTzF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0I5WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJSFJoY21kbGRDNXBibk5sY25Rb2FTQXJJREVzSUhKbGMzVnNkQ2s3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQnVaWGRTYVdkb2RGTnBZbXhwYm1jN1hISmNiaUFnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdmVHRjY2x4dUlDQWdJQzhxS2x4eVhHNGdJQ0FnSUNvZ1NXNXpaWEowY3lCZ1kyaHBiR1JnSUdGMElHbHVaR1Y0SUdCcFlDNWNjbHh1SUNBZ0lDQXFJRlJvYVhNZ1pHOWxjeUJ1YjNRZ2JXRnlheUJnWTJocGJHUmdJR0Z6SUhOb1lYSmxaQ3dnYzI4Z2FYUWdhWE1nZEdobElISmxjM0J2Ym5OcFltbHNhWFI1SUc5bUlIUm9aU0JqWVd4c1pYSmNjbHh1SUNBZ0lDQXFJSFJ2SUdWdWMzVnlaU0IwYUdGMElHVnBkR2hsY2lCamFHbHNaQ0JwY3lCdFlYSnJaV1FnYzJoaGNtVmtMQ0J2Y2lCcGRDQnBjeUJ1YjNRZ2FXNWpiSFZrWldRZ2FXNGdZVzV2ZEdobGNpQjBjbVZsTGx4eVhHNGdJQ0FnSUNvdlhISmNiaUFnSUNCQ1RtOWtaVWx1ZEdWeWJtRnNMbkJ5YjNSdmRIbHdaUzVwYm5ObGNuUWdQU0JtZFc1amRHbHZiaUFvYVN3Z1kyaHBiR1FwSUh0Y2NseHVJQ0FnSUNBZ0lDQjBhR2x6TG1Ob2FXeGtjbVZ1TG5Od2JHbGpaU2hwTENBd0xDQmphR2xzWkNrN1hISmNiaUFnSUNBZ0lDQWdkR2hwY3k1clpYbHpMbk53YkdsalpTaHBMQ0F3TENCamFHbHNaQzV0WVhoTFpYa29LU2s3WEhKY2JpQWdJQ0I5TzF4eVhHNGdJQ0FnTHlvcVhISmNiaUFnSUNBZ0tpQlRjR3hwZENCMGFHbHpJRzV2WkdVdVhISmNiaUFnSUNBZ0tpQk5iMlJwWm1sbGN5QjBhR2x6SUhSdklISmxiVzkyWlNCMGFHVWdjMlZqYjI1a0lHaGhiR1lnYjJZZ2RHaGxJR2wwWlcxekxDQnlaWFIxY201cGJtY2dZU0J6WlhCaGNtRjBaU0J1YjJSbElHTnZiblJoYVc1cGJtY2dkR2hsYlM1Y2NseHVJQ0FnSUNBcUwxeHlYRzRnSUNBZ1FrNXZaR1ZKYm5SbGNtNWhiQzV3Y205MGIzUjVjR1V1YzNCc2FYUlBabVpTYVdkb2RGTnBaR1VnUFNCbWRXNWpkR2x2YmlBb0tTQjdYSEpjYmlBZ0lDQWdJQ0FnTHk4Z1lYTnpaWEowSUNGMGFHbHpMbWx6VTJoaGNtVmtPMXh5WEc0Z0lDQWdJQ0FnSUhaaGNpQm9ZV3htSUQwZ2RHaHBjeTVqYUdsc1pISmxiaTVzWlc1bmRHZ2dQajRnTVR0Y2NseHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2JtVjNJRUpPYjJSbFNXNTBaWEp1WVd3b2RHaHBjeTVqYUdsc1pISmxiaTV6Y0d4cFkyVW9hR0ZzWmlrc0lIUm9hWE11YTJWNWN5NXpjR3hwWTJVb2FHRnNaaWtwTzF4eVhHNGdJQ0FnZlR0Y2NseHVJQ0FnSUVKT2IyUmxTVzUwWlhKdVlXd3VjSEp2ZEc5MGVYQmxMblJoYTJWR2NtOXRVbWxuYUhRZ1BTQm1kVzVqZEdsdmJpQW9jbWh6S1NCN1hISmNiaUFnSUNBZ0lDQWdMeThnVW1WdGFXNWtaWEk2SUhCaGNtVnVkQ0J1YjJSbElHMTFjM1FnZFhCa1lYUmxJR2wwY3lCamIzQjVJRzltSUd0bGVTQm1iM0lnZEdocGN5QnViMlJsWEhKY2JpQWdJQ0FnSUNBZ0x5OGdZWE56WlhKME9pQnVaV2wwYUdWeUlHNXZaR1VnYVhNZ2MyaGhjbVZrWEhKY2JpQWdJQ0FnSUNBZ0x5OGdZWE56WlhKMElISm9jeTVyWlhsekxteGxibWQwYUNBK0lDaHRZWGhPYjJSbFUybDZaUzh5SUNZbUlIUm9hWE11YTJWNWN5NXNaVzVuZEdnOGJXRjRUbTlrWlZOcGVtVXBYSEpjYmlBZ0lDQWdJQ0FnZEdocGN5NXJaWGx6TG5CMWMyZ29jbWh6TG10bGVYTXVjMmhwWm5Rb0tTazdYSEpjYmlBZ0lDQWdJQ0FnZEdocGN5NWphR2xzWkhKbGJpNXdkWE5vS0hKb2N5NWphR2xzWkhKbGJpNXphR2xtZENncEtUdGNjbHh1SUNBZ0lIMDdYSEpjYmlBZ0lDQkNUbTlrWlVsdWRHVnlibUZzTG5CeWIzUnZkSGx3WlM1MFlXdGxSbkp2YlV4bFpuUWdQU0JtZFc1amRHbHZiaUFvYkdoektTQjdYSEpjYmlBZ0lDQWdJQ0FnTHk4Z1VtVnRhVzVrWlhJNklIQmhjbVZ1ZENCdWIyUmxJRzExYzNRZ2RYQmtZWFJsSUdsMGN5QmpiM0I1SUc5bUlHdGxlU0JtYjNJZ2RHaHBjeUJ1YjJSbFhISmNiaUFnSUNBZ0lDQWdMeThnWVhOelpYSjBPaUJ1WldsMGFHVnlJRzV2WkdVZ2FYTWdjMmhoY21Wa1hISmNiaUFnSUNBZ0lDQWdMeThnWVhOelpYSjBJSEpvY3k1clpYbHpMbXhsYm1kMGFDQStJQ2h0WVhoT2IyUmxVMmw2WlM4eUlDWW1JSFJvYVhNdWEyVjVjeTVzWlc1bmRHZzhiV0Y0VG05a1pWTnBlbVVwWEhKY2JpQWdJQ0FnSUNBZ2RHaHBjeTVyWlhsekxuVnVjMmhwWm5Rb2JHaHpMbXRsZVhNdWNHOXdLQ2twTzF4eVhHNGdJQ0FnSUNBZ0lIUm9hWE11WTJocGJHUnlaVzR1ZFc1emFHbG1kQ2hzYUhNdVkyaHBiR1J5Wlc0dWNHOXdLQ2twTzF4eVhHNGdJQ0FnZlR0Y2NseHVJQ0FnSUM4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZYSEpjYmlBZ0lDQXZMeUJKYm5SbGNtNWhiQ0JPYjJSbE9pQnpZMkZ1Ym1sdVp5QW1JR1JsYkdWMGFXOXVjeUF2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2TDF4eVhHNGdJQ0FnTHk4Z1RtOTBaVG9nWUdOdmRXNTBZQ0JwY3lCMGFHVWdibVY0ZENCMllXeDFaU0J2WmlCMGFHVWdkR2hwY21RZ1lYSm5kVzFsYm5RZ2RHOGdZRzl1Um05MWJtUmdMaUJjY2x4dUlDQWdJQzh2SUNBZ0lDQWdJRUVnYkdWaFppQnViMlJsSjNNZ1lHWnZjbEpoYm1kbFlDQm1kVzVqZEdsdmJpQnlaWFIxY201eklHRWdibVYzSUhaaGJIVmxJR1p2Y2lCMGFHbHpJR052ZFc1MFpYSXNYSEpjYmlBZ0lDQXZMeUFnSUNBZ0lDQjFibXhsYzNNZ2RHaGxJRzl3WlhKaGRHbHZiaUJwY3lCMGJ5QnpkRzl3SUdWaGNteDVMbHh5WEc0Z0lDQWdRazV2WkdWSmJuUmxjbTVoYkM1d2NtOTBiM1I1Y0dVdVptOXlVbUZ1WjJVZ1BTQm1kVzVqZEdsdmJpQW9iRzkzTENCb2FXZG9MQ0JwYm1Oc2RXUmxTR2xuYUN3Z1pXUnBkRTF2WkdVc0lIUnlaV1VzSUdOdmRXNTBMQ0J2YmtadmRXNWtLU0I3WEhKY2JpQWdJQ0FnSUNBZ2RtRnlJR050Y0NBOUlIUnlaV1V1WDJOdmJYQmhjbVU3WEhKY2JpQWdJQ0FnSUNBZ2RtRnlJR3RsZVhNZ1BTQjBhR2x6TG10bGVYTXNJR05vYVd4a2NtVnVJRDBnZEdocGN5NWphR2xzWkhKbGJqdGNjbHh1SUNBZ0lDQWdJQ0IyWVhJZ2FVeHZkeUE5SUhSb2FYTXVhVzVrWlhoUFppaHNiM2NzSURBc0lHTnRjQ2tzSUdrZ1BTQnBURzkzTzF4eVhHNGdJQ0FnSUNBZ0lIWmhjaUJwU0dsbmFDQTlJRTFoZEdndWJXbHVLR2hwWjJnZ1BUMDlJR3h2ZHlBL0lHbE1iM2NnT2lCMGFHbHpMbWx1WkdWNFQyWW9hR2xuYUN3Z01Dd2dZMjF3S1N3Z2EyVjVjeTVzWlc1bmRHZ2dMU0F4S1R0Y2NseHVJQ0FnSUNBZ0lDQnBaaUFvSVdWa2FYUk5iMlJsS1NCN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUM4dklGTnBiWEJzWlNCallYTmxYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lHWnZjaUFvT3lCcElEdzlJR2xJYVdkb095QnBLeXNwSUh0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIWmhjaUJ5WlhOMWJIUWdQU0JqYUdsc1pISmxibHRwWFM1bWIzSlNZVzVuWlNoc2IzY3NJR2hwWjJnc0lHbHVZMngxWkdWSWFXZG9MQ0JsWkdsMFRXOWtaU3dnZEhKbFpTd2dZMjkxYm5Rc0lHOXVSbTkxYm1RcE8xeHlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhV1lnS0hSNWNHVnZaaUJ5WlhOMWJIUWdJVDA5SUNkdWRXMWlaWEluS1Z4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQnlaWE4xYkhRN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmpiM1Z1ZENBOUlISmxjM1ZzZER0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnZlZ4eVhHNGdJQ0FnSUNBZ0lIMWNjbHh1SUNBZ0lDQWdJQ0JsYkhObElHbG1JQ2hwSUR3OUlHbElhV2RvS1NCN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUhSeWVTQjdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JtYjNJZ0tEc2dhU0E4UFNCcFNHbG5hRHNnYVNzcktTQjdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLR05vYVd4a2NtVnVXMmxkTG1selUyaGhjbVZrS1Z4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCamFHbHNaSEpsYmx0cFhTQTlJR05vYVd4a2NtVnVXMmxkTG1Oc2IyNWxLQ2s3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdkbUZ5SUhKbGMzVnNkQ0E5SUdOb2FXeGtjbVZ1VzJsZExtWnZjbEpoYm1kbEtHeHZkeXdnYUdsbmFDd2dhVzVqYkhWa1pVaHBaMmdzSUdWa2FYUk5iMlJsTENCMGNtVmxMQ0JqYjNWdWRDd2diMjVHYjNWdVpDazdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0x5OGdUbTkwWlRvZ2FXWWdZMmhwYkdSeVpXNWJhVjBnYVhNZ1pXMXdkSGtnZEdobGJpQnJaWGx6VzJsZFBYVnVaR1ZtYVc1bFpDNWNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBdkx5QWdJQ0FnSUNCVWFHbHpJR2x6SUdGdUlHbHVkbUZzYVdRZ2MzUmhkR1VzSUdKMWRDQnBkQ0JwY3lCbWFYaGxaQ0JpWld4dmR5NWNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCclpYbHpXMmxkSUQwZ1kyaHBiR1J5Wlc1YmFWMHViV0Y0UzJWNUtDazdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLSFI1Y0dWdlppQnlaWE4xYkhRZ0lUMDlJQ2R1ZFcxaVpYSW5LVnh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdjbVZ6ZFd4ME8xeHlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdOdmRXNTBJRDBnY21WemRXeDBPMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZlZ4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0I5WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJR1pwYm1Gc2JIa2dlMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnTHk4Z1JHVnNaWFJwYjI1eklHMWhlU0JvWVhabElHOWpZM1Z5Y21Wa0xDQnpieUJzYjI5cklHWnZjaUJ2Y0hCdmNuUjFibWwwYVdWeklIUnZJRzFsY21kbElHNXZaR1Z6TGx4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RtRnlJR2hoYkdZZ1BTQjBjbVZsTGw5dFlYaE9iMlJsVTJsNlpTQStQaUF4TzF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLR2xNYjNjZ1BpQXdLVnh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHbE1iM2N0TFR0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHWnZjaUFvYVNBOUlHbElhV2RvT3lCcElENDlJR2xNYjNjN0lHa3RMU2tnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNoamFHbHNaSEpsYmx0cFhTNXJaWGx6TG14bGJtZDBhQ0E4UFNCb1lXeG1LU0I3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDaGphR2xzWkhKbGJsdHBYUzVyWlhsekxteGxibWQwYUNBaFBUMGdNQ2tnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdkR2hwY3k1MGNubE5aWEpuWlNocExDQjBjbVZsTGw5dFlYaE9iMlJsVTJsNlpTazdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDFjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWld4elpTQjdJQzh2SUdOb2FXeGtJR2x6SUdWdGNIUjVJU0JrWld4bGRHVWdhWFFoWEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnJaWGx6TG5Od2JHbGpaU2hwTENBeEtUdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdOb2FXeGtjbVZ1TG5Od2JHbGpaU2hwTENBeEtUdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIMWNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDFjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDaGphR2xzWkhKbGJpNXNaVzVuZEdnZ0lUMDlJREFnSmlZZ1kyaHBiR1J5Wlc1Yk1GMHVhMlY1Y3k1c1pXNW5kR2dnUFQwOUlEQXBYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1kyaGxZMnNvWm1Gc2MyVXNJRndpWlcxd2RHbHVaWE56SUdKMVoxd2lLVHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdJQ0FnSUgxY2NseHVJQ0FnSUNBZ0lDQnlaWFIxY200Z1kyOTFiblE3WEhKY2JpQWdJQ0I5TzF4eVhHNGdJQ0FnTHlvcUlFMWxjbWRsY3lCamFHbHNaQ0JwSUhkcGRHZ2dZMmhwYkdRZ2FTc3hJR2xtSUhSb1pXbHlJR052YldKcGJtVmtJSE5wZW1VZ2FYTWdibTkwSUhSdmJ5QnNZWEpuWlNBcUwxeHlYRzRnSUNBZ1FrNXZaR1ZKYm5SbGNtNWhiQzV3Y205MGIzUjVjR1V1ZEhKNVRXVnlaMlVnUFNCbWRXNWpkR2x2YmlBb2FTd2diV0Y0VTJsNlpTa2dlMXh5WEc0Z0lDQWdJQ0FnSUhaaGNpQmphR2xzWkhKbGJpQTlJSFJvYVhNdVkyaHBiR1J5Wlc0N1hISmNiaUFnSUNBZ0lDQWdhV1lnS0drZ1BqMGdNQ0FtSmlCcElDc2dNU0E4SUdOb2FXeGtjbVZ1TG14bGJtZDBhQ2tnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb1kyaHBiR1J5Wlc1YmFWMHVhMlY1Y3k1c1pXNW5kR2dnS3lCamFHbHNaSEpsYmx0cElDc2dNVjB1YTJWNWN5NXNaVzVuZEdnZ1BEMGdiV0Y0VTJsNlpTa2dlMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tHTm9hV3hrY21WdVcybGRMbWx6VTJoaGNtVmtLU0F2THlCamJHOXVaV1FnWVd4eVpXRmtlU0JWVGt4RlUxTWdhU0JwY3lCdmRYUnphV1JsSUhOallXNGdjbUZ1WjJWY2NseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JqYUdsc1pISmxibHRwWFNBOUlHTm9hV3hrY21WdVcybGRMbU5zYjI1bEtDazdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JqYUdsc1pISmxibHRwWFM1dFpYSm5aVk5wWW14cGJtY29ZMmhwYkdSeVpXNWJhU0FySURGZExDQnRZWGhUYVhwbEtUdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR05vYVd4a2NtVnVMbk53YkdsalpTaHBJQ3NnTVN3Z01TazdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IwYUdsekxtdGxlWE11YzNCc2FXTmxLR2tnS3lBeExDQXhLVHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhSb2FYTXVhMlY1YzF0cFhTQTlJR05vYVd4a2NtVnVXMmxkTG0xaGVFdGxlU2dwTzF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhSeWRXVTdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lIMWNjbHh1SUNBZ0lDQWdJQ0I5WEhKY2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUdaaGJITmxPMXh5WEc0Z0lDQWdmVHRjY2x4dUlDQWdJQzhxS2x4eVhHNGdJQ0FnSUNvZ1RXOTJaU0JqYUdsc1pISmxiaUJtY205dElHQnlhSE5nSUdsdWRHOGdkR2hwY3k1Y2NseHVJQ0FnSUNBcUlHQnlhSE5nSUcxMWMzUWdZbVVnY0dGeWRDQnZaaUIwYUdseklIUnlaV1VzSUdGdVpDQmlaU0J5WlcxdmRtVmtJR1p5YjIwZ2FYUWdZV1owWlhJZ2RHaHBjeUJqWVd4c1hISmNiaUFnSUNBZ0tpQW9iM1JvWlhKM2FYTmxJR2x6VTJoaGNtVmtJR1p2Y2lCcGRITWdZMmhwYkdSeVpXNGdZMjkxYkdRZ1ltVWdhVzVqYjNKeVpXTjBLUzVjY2x4dUlDQWdJQ0FxTDF4eVhHNGdJQ0FnUWs1dlpHVkpiblJsY201aGJDNXdjbTkwYjNSNWNHVXViV1Z5WjJWVGFXSnNhVzVuSUQwZ1puVnVZM1JwYjI0Z0tISm9jeXdnYldGNFRtOWtaVk5wZW1VcElIdGNjbHh1SUNBZ0lDQWdJQ0F2THlCaGMzTmxjblFnSVhSb2FYTXVhWE5UYUdGeVpXUTdYSEpjYmlBZ0lDQWdJQ0FnZG1GeUlHOXNaRXhsYm1kMGFDQTlJSFJvYVhNdWEyVjVjeTVzWlc1bmRHZzdYSEpjYmlBZ0lDQWdJQ0FnZEdocGN5NXJaWGx6TG5CMWMyZ3VZWEJ3Ykhrb2RHaHBjeTVyWlhsekxDQnlhSE11YTJWNWN5azdYSEpjYmlBZ0lDQWdJQ0FnZG1GeUlISm9jME5vYVd4a2NtVnVJRDBnY21oekxtTm9hV3hrY21WdU8xeHlYRzRnSUNBZ0lDQWdJSFJvYVhNdVkyaHBiR1J5Wlc0dWNIVnphQzVoY0hCc2VTaDBhR2x6TG1Ob2FXeGtjbVZ1TENCeWFITkRhR2xzWkhKbGJpazdYSEpjYmlBZ0lDQWdJQ0FnYVdZZ0tISm9jeTVwYzFOb1lYSmxaQ0FtSmlBaGRHaHBjeTVwYzFOb1lYSmxaQ2tnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0F2THlCQmJHd2dZMmhwYkdSeVpXNGdiMllnWVNCemFHRnlaV1FnYm05a1pTQmhjbVVnYVcxd2JHbGphWFJzZVNCemFHRnlaV1FzSUdGdVpDQnphVzVqWlNCMGFHVnBjaUJ1WlhkY2NseHVJQ0FnSUNBZ0lDQWdJQ0FnTHk4Z2NHRnlaVzUwSUdseklHNXZkQ0J6YUdGeVpXUXNJSFJvWlhrZ2JYVnpkQ0J1YjNjZ1ltVWdaWGh3YkdsamFYUnNlU0J0WVhKclpXUWdZWE1nYzJoaGNtVmtMbHh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQm1iM0lnS0haaGNpQnBJRDBnTURzZ2FTQThJSEpvYzBOb2FXeGtjbVZ1TG14bGJtZDBhRHNnYVNzcktWeHlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbWh6UTJocGJHUnlaVzViYVYwdWFYTlRhR0Z5WldRZ1BTQjBjblZsTzF4eVhHNGdJQ0FnSUNBZ0lIMWNjbHh1SUNBZ0lDQWdJQ0F2THlCSlppQnZkWElnWTJocGJHUnlaVzRnWVhKbElIUm9aVzF6Wld4MlpYTWdZV3h0YjNOMElHVnRjSFI1SUdSMVpTQjBieUJoSUcxaGMzTXRaR1ZzWlhSbExGeHlYRzRnSUNBZ0lDQWdJQzh2SUhSb1pYa2diV0Y1SUc1bFpXUWdkRzhnWW1VZ2JXVnlaMlZrSUhSdmJ5QW9ZblYwSUc5dWJIa2dkR2hsSUc5c1pFeGxibWQwYUMweElHRnVaQ0JwZEhOY2NseHVJQ0FnSUNBZ0lDQXZMeUJ5YVdkb2RDQnphV0pzYVc1bklITm9iM1ZzWkNCdVpXVmtJSFJvYVhNcExseHlYRzRnSUNBZ0lDQWdJSFJvYVhNdWRISjVUV1Z5WjJVb2IyeGtUR1Z1WjNSb0lDMGdNU3dnYldGNFRtOWtaVk5wZW1VcE8xeHlYRzRnSUNBZ2ZUdGNjbHh1SUNBZ0lISmxkSFZ5YmlCQ1RtOWtaVWx1ZEdWeWJtRnNPMXh5WEc1OUtFSk9iMlJsS1NrN1hISmNiaTh2SUU5d2RHbHRhWHBoZEdsdmJqb2dkR2hwY3lCaGNuSmhlU0J2WmlCZ2RXNWtaV1pwYm1Wa1lITWdhWE1nZFhObFpDQnBibk4wWldGa0lHOW1JR0VnYm05eWJXRnNYSEpjYmk4dklHRnljbUY1SUc5bUlIWmhiSFZsY3lCcGJpQnViMlJsY3lCM2FHVnlaU0JnZFc1a1pXWnBibVZrWUNCcGN5QjBhR1VnYjI1c2VTQjJZV3gxWlM1Y2NseHVMeThnU1hSeklHeGxibWQwYUNCcGN5QmxlSFJsYm1SbFpDQjBieUJ0WVhnZ2JtOWtaU0J6YVhwbElHOXVJR1pwY25OMElIVnpaVHNnYzJsdVkyVWdhWFFnWTJGdVhISmNiaTh2SUdKbElITm9ZWEpsWkNCaVpYUjNaV1Z1SUhSeVpXVnpJSGRwZEdnZ1pHbG1abVZ5Wlc1MElHMWhlR2x0ZFcxekxDQnBkSE1nYkdWdVozUm9JR05oYmlCdmJteDVYSEpjYmk4dklHbHVZM0psWVhObExDQnVaWFpsY2lCa1pXTnlaV0Z6WlM0Z1NYUnpJSFI1Y0dVZ2MyaHZkV3hrSUdKbElIVnVaR1ZtYVc1bFpGdGRJR0oxZENCemRISmhibWRsYkhsY2NseHVMeThnVkhsd1pWTmpjbWx3ZENCM2IyNG5kQ0JoYkd4dmR5QjBhR1VnWTI5dGNHRnlhWE52YmlCV1cxMGdQVDA5SUhWdVpHVm1hVzVsWkZ0ZExpQlVieUJ3Y21WMlpXNTBYSEpjYmk4dklIVnpaWEp6SUdaeWIyMGdiV0ZyYVc1bklIUm9hWE1nWVhKeVlYa2dkRzl2SUd4aGNtZGxMQ0JDVkhKbFpTQm9ZWE1nWVNCdFlYaHBiWFZ0SUc1dlpHVWdjMmw2WlM1Y2NseHVMeTljY2x4dUx5OGdSa0ZST2lCMWJtUmxabFpoYkhOYmFWMGdhWE1nWVd4eVpXRmtlU0IxYm1SbFptbHVaV1FzSUhOdklIZG9lU0JwYm1OeVpXRnpaU0IwYUdVZ1lYSnlZWGtnYzJsNlpUOWNjbHh1THk4Z1VtVmhaR2x1WnlCdmRYUnphV1JsSUhSb1pTQmliM1Z1WkhNZ2IyWWdZVzRnWVhKeVlYa2dhWE1nY21Wc1lYUnBkbVZzZVNCemJHOTNJR0psWTJGMWMyVWdhWFJjY2x4dUx5OGdhR0Z6SUhSb1pTQnphV1JsSUdWbVptVmpkQ0J2WmlCelkyRnVibWx1WnlCMGFHVWdjSEp2ZEc5MGVYQmxJR05vWVdsdUxseHlYRzUyWVhJZ2RXNWtaV1pXWVd4eklEMGdXMTA3WEhKY2JuWmhjaUJFWld4bGRHVWdQU0I3SUdSbGJHVjBaVG9nZEhKMVpTQjlMQ0JFWld4bGRHVlNZVzVuWlNBOUlHWjFibU4wYVc5dUlDZ3BJSHNnY21WMGRYSnVJRVJsYkdWMFpUc2dmVHRjY2x4dWRtRnlJRUp5WldGcklEMGdleUJpY21WaGF6b2dkSEoxWlNCOU8xeHlYRzUyWVhJZ1JXMXdkSGxNWldGbUlEMGdLR1oxYm1OMGFXOXVJQ2dwSUh0Y2NseHVJQ0FnSUhaaGNpQnVJRDBnYm1WM0lFSk9iMlJsS0NrN1hISmNiaUFnSUNCdUxtbHpVMmhoY21Wa0lEMGdkSEoxWlR0Y2NseHVJQ0FnSUhKbGRIVnliaUJ1TzF4eVhHNTlLU2dwTzF4eVhHNTJZWElnUlcxd2RIbEJjbkpoZVNBOUlGdGRPMXh5WEc1MllYSWdVbVYxYzJWa1FYSnlZWGtnUFNCYlhUc2dMeThnWVhOemRXMWxaQ0IwYUhKbFlXUXRiRzlqWVd4Y2NseHVablZ1WTNScGIyNGdZMmhsWTJzb1ptRmpkQ2tnZTF4eVhHNGdJQ0FnZG1GeUlHRnlaM01nUFNCYlhUdGNjbHh1SUNBZ0lHWnZjaUFvZG1GeUlGOXBJRDBnTVRzZ1gya2dQQ0JoY21kMWJXVnVkSE11YkdWdVozUm9PeUJmYVNzcktTQjdYSEpjYmlBZ0lDQWdJQ0FnWVhKbmMxdGZhU0F0SURGZElEMGdZWEpuZFcxbGJuUnpXMTlwWFR0Y2NseHVJQ0FnSUgxY2NseHVJQ0FnSUdsbUlDZ2habUZqZENrZ2UxeHlYRzRnSUNBZ0lDQWdJR0Z5WjNNdWRXNXphR2xtZENnblFpc2dkSEpsWlNjcE95QXZMeUJoZENCaVpXZHBibTVwYm1jZ2IyWWdiV1Z6YzJGblpWeHlYRzRnSUNBZ0lDQWdJSFJvY205M0lHNWxkeUJGY25KdmNpaGhjbWR6TG1wdmFXNG9KeUFuS1NrN1hISmNiaUFnSUNCOVhISmNibjFjY2x4dUx5b3FJRUVnUWxSeVpXVWdabkp2ZW1WdUlHbHVJSFJvWlNCbGJYQjBlU0J6ZEdGMFpTNGdLaTljY2x4dVpYaHdiM0owY3k1RmJYQjBlVUpVY21WbElEMGdLR1oxYm1OMGFXOXVJQ2dwSUhzZ2RtRnlJSFFnUFNCdVpYY2dRbFJ5WldVb0tUc2dkQzVtY21WbGVtVW9LVHNnY21WMGRYSnVJSFE3SUgwcEtDazdYSEpjYmlJc0lDSXZMeUIwYUdWelpTQmhjbVZ1SjNRZ2NtVmhiR3g1SUhCeWFYWmhkR1VzSUdKMWRDQnViM0lnWVhKbElIUm9aWGtnY21WaGJHeDVJSFZ6WldaMWJDQjBieUJrYjJOMWJXVnVkRnh1WEc0dktpcGNiaUFxSUVCd2NtbDJZWFJsWEc0Z0tpOWNibU5zWVhOeklFeDFlRzl1UlhKeWIzSWdaWGgwWlc1a2N5QkZjbkp2Y2lCN2ZWeHVYRzR2S2lwY2JpQXFJRUJ3Y21sMllYUmxYRzRnS2k5Y2JtVjRjRzl5ZENCamJHRnpjeUJKYm5aaGJHbGtSR0YwWlZScGJXVkZjbkp2Y2lCbGVIUmxibVJ6SUV4MWVHOXVSWEp5YjNJZ2UxeHVJQ0JqYjI1emRISjFZM1J2Y2loeVpXRnpiMjRwSUh0Y2JpQWdJQ0J6ZFhCbGNpaGdTVzUyWVd4cFpDQkVZWFJsVkdsdFpUb2dKSHR5WldGemIyNHVkRzlOWlhOellXZGxLQ2w5WUNrN1hHNGdJSDFjYm4xY2JseHVMeW9xWEc0Z0tpQkFjSEpwZG1GMFpWeHVJQ292WEc1bGVIQnZjblFnWTJ4aGMzTWdTVzUyWVd4cFpFbHVkR1Z5ZG1Gc1JYSnliM0lnWlhoMFpXNWtjeUJNZFhodmJrVnljbTl5SUh0Y2JpQWdZMjl1YzNSeWRXTjBiM0lvY21WaGMyOXVLU0I3WEc0Z0lDQWdjM1Z3WlhJb1lFbHVkbUZzYVdRZ1NXNTBaWEoyWVd3NklDUjdjbVZoYzI5dUxuUnZUV1Z6YzJGblpTZ3BmV0FwTzF4dUlDQjlYRzU5WEc1Y2JpOHFLbHh1SUNvZ1FIQnlhWFpoZEdWY2JpQXFMMXh1Wlhod2IzSjBJR05zWVhOeklFbHVkbUZzYVdSRWRYSmhkR2x2YmtWeWNtOXlJR1Y0ZEdWdVpITWdUSFY0YjI1RmNuSnZjaUI3WEc0Z0lHTnZibk4wY25WamRHOXlLSEpsWVhOdmJpa2dlMXh1SUNBZ0lITjFjR1Z5S0dCSmJuWmhiR2xrSUVSMWNtRjBhVzl1T2lBa2UzSmxZWE52Ymk1MGIwMWxjM05oWjJVb0tYMWdLVHRjYmlBZ2ZWeHVmVnh1WEc0dktpcGNiaUFxSUVCd2NtbDJZWFJsWEc0Z0tpOWNibVY0Y0c5eWRDQmpiR0Z6Y3lCRGIyNW1iR2xqZEdsdVoxTndaV05wWm1sallYUnBiMjVGY25KdmNpQmxlSFJsYm1SeklFeDFlRzl1UlhKeWIzSWdlMzFjYmx4dUx5b3FYRzRnS2lCQWNISnBkbUYwWlZ4dUlDb3ZYRzVsZUhCdmNuUWdZMnhoYzNNZ1NXNTJZV3hwWkZWdWFYUkZjbkp2Y2lCbGVIUmxibVJ6SUV4MWVHOXVSWEp5YjNJZ2UxeHVJQ0JqYjI1emRISjFZM1J2Y2loMWJtbDBLU0I3WEc0Z0lDQWdjM1Z3WlhJb1lFbHVkbUZzYVdRZ2RXNXBkQ0FrZTNWdWFYUjlZQ2s3WEc0Z0lIMWNibjFjYmx4dUx5b3FYRzRnS2lCQWNISnBkbUYwWlZ4dUlDb3ZYRzVsZUhCdmNuUWdZMnhoYzNNZ1NXNTJZV3hwWkVGeVozVnRaVzUwUlhKeWIzSWdaWGgwWlc1a2N5Qk1kWGh2YmtWeWNtOXlJSHQ5WEc1Y2JpOHFLbHh1SUNvZ1FIQnlhWFpoZEdWY2JpQXFMMXh1Wlhod2IzSjBJR05zWVhOeklGcHZibVZKYzBGaWMzUnlZV04wUlhKeWIzSWdaWGgwWlc1a2N5Qk1kWGh2YmtWeWNtOXlJSHRjYmlBZ1kyOXVjM1J5ZFdOMGIzSW9LU0I3WEc0Z0lDQWdjM1Z3WlhJb1hDSmFiMjVsSUdseklHRnVJR0ZpYzNSeVlXTjBJR05zWVhOelhDSXBPMXh1SUNCOVhHNTlYRzRpTENBaUx5b3FYRzRnS2lCQWNISnBkbUYwWlZ4dUlDb3ZYRzVjYm1OdmJuTjBJRzRnUFNCY0ltNTFiV1Z5YVdOY0lpeGNiaUFnY3lBOUlGd2ljMmh2Y25SY0lpeGNiaUFnYkNBOUlGd2liRzl1WjF3aU8xeHVYRzVsZUhCdmNuUWdZMjl1YzNRZ1JFRlVSVjlUU0U5U1ZDQTlJSHRjYmlBZ2VXVmhjam9nYml4Y2JpQWdiVzl1ZEdnNklHNHNYRzRnSUdSaGVUb2diaXhjYm4wN1hHNWNibVY0Y0c5eWRDQmpiMjV6ZENCRVFWUkZYMDFGUkNBOUlIdGNiaUFnZVdWaGNqb2diaXhjYmlBZ2JXOXVkR2c2SUhNc1hHNGdJR1JoZVRvZ2JpeGNibjA3WEc1Y2JtVjRjRzl5ZENCamIyNXpkQ0JFUVZSRlgwMUZSRjlYU1ZSSVgxZEZSVXRFUVZrZ1BTQjdYRzRnSUhsbFlYSTZJRzRzWEc0Z0lHMXZiblJvT2lCekxGeHVJQ0JrWVhrNklHNHNYRzRnSUhkbFpXdGtZWGs2SUhNc1hHNTlPMXh1WEc1bGVIQnZjblFnWTI5dWMzUWdSRUZVUlY5R1ZVeE1JRDBnZTF4dUlDQjVaV0Z5T2lCdUxGeHVJQ0J0YjI1MGFEb2diQ3hjYmlBZ1pHRjVPaUJ1TEZ4dWZUdGNibHh1Wlhod2IzSjBJR052Ym5OMElFUkJWRVZmU0ZWSFJTQTlJSHRjYmlBZ2VXVmhjam9nYml4Y2JpQWdiVzl1ZEdnNklHd3NYRzRnSUdSaGVUb2diaXhjYmlBZ2QyVmxhMlJoZVRvZ2JDeGNibjA3WEc1Y2JtVjRjRzl5ZENCamIyNXpkQ0JVU1UxRlgxTkpUVkJNUlNBOUlIdGNiaUFnYUc5MWNqb2diaXhjYmlBZ2JXbHVkWFJsT2lCdUxGeHVmVHRjYmx4dVpYaHdiM0owSUdOdmJuTjBJRlJKVFVWZlYwbFVTRjlUUlVOUFRrUlRJRDBnZTF4dUlDQm9iM1Z5T2lCdUxGeHVJQ0J0YVc1MWRHVTZJRzRzWEc0Z0lITmxZMjl1WkRvZ2JpeGNibjA3WEc1Y2JtVjRjRzl5ZENCamIyNXpkQ0JVU1UxRlgxZEpWRWhmVTBoUFVsUmZUMFpHVTBWVUlEMGdlMXh1SUNCb2IzVnlPaUJ1TEZ4dUlDQnRhVzUxZEdVNklHNHNYRzRnSUhObFkyOXVaRG9nYml4Y2JpQWdkR2x0WlZwdmJtVk9ZVzFsT2lCekxGeHVmVHRjYmx4dVpYaHdiM0owSUdOdmJuTjBJRlJKVFVWZlYwbFVTRjlNVDA1SFgwOUdSbE5GVkNBOUlIdGNiaUFnYUc5MWNqb2diaXhjYmlBZ2JXbHVkWFJsT2lCdUxGeHVJQ0J6WldOdmJtUTZJRzRzWEc0Z0lIUnBiV1ZhYjI1bFRtRnRaVG9nYkN4Y2JuMDdYRzVjYm1WNGNHOXlkQ0JqYjI1emRDQlVTVTFGWHpJMFgxTkpUVkJNUlNBOUlIdGNiaUFnYUc5MWNqb2diaXhjYmlBZ2JXbHVkWFJsT2lCdUxGeHVJQ0JvYjNWeVEzbGpiR1U2SUZ3aWFESXpYQ0lzWEc1OU8xeHVYRzVsZUhCdmNuUWdZMjl1YzNRZ1ZFbE5SVjh5TkY5WFNWUklYMU5GUTA5T1JGTWdQU0I3WEc0Z0lHaHZkWEk2SUc0c1hHNGdJRzFwYm5WMFpUb2diaXhjYmlBZ2MyVmpiMjVrT2lCdUxGeHVJQ0JvYjNWeVEzbGpiR1U2SUZ3aWFESXpYQ0lzWEc1OU8xeHVYRzVsZUhCdmNuUWdZMjl1YzNRZ1ZFbE5SVjh5TkY5WFNWUklYMU5JVDFKVVgwOUdSbE5GVkNBOUlIdGNiaUFnYUc5MWNqb2diaXhjYmlBZ2JXbHVkWFJsT2lCdUxGeHVJQ0J6WldOdmJtUTZJRzRzWEc0Z0lHaHZkWEpEZVdOc1pUb2dYQ0pvTWpOY0lpeGNiaUFnZEdsdFpWcHZibVZPWVcxbE9pQnpMRnh1ZlR0Y2JseHVaWGh3YjNKMElHTnZibk4wSUZSSlRVVmZNalJmVjBsVVNGOU1UMDVIWDA5R1JsTkZWQ0E5SUh0Y2JpQWdhRzkxY2pvZ2JpeGNiaUFnYldsdWRYUmxPaUJ1TEZ4dUlDQnpaV052Ym1RNklHNHNYRzRnSUdodmRYSkRlV05zWlRvZ1hDSm9Nak5jSWl4Y2JpQWdkR2x0WlZwdmJtVk9ZVzFsT2lCc0xGeHVmVHRjYmx4dVpYaHdiM0owSUdOdmJuTjBJRVJCVkVWVVNVMUZYMU5JVDFKVUlEMGdlMXh1SUNCNVpXRnlPaUJ1TEZ4dUlDQnRiMjUwYURvZ2JpeGNiaUFnWkdGNU9pQnVMRnh1SUNCb2IzVnlPaUJ1TEZ4dUlDQnRhVzUxZEdVNklHNHNYRzU5TzF4dVhHNWxlSEJ2Y25RZ1kyOXVjM1FnUkVGVVJWUkpUVVZmVTBoUFVsUmZWMGxVU0Y5VFJVTlBUa1JUSUQwZ2UxeHVJQ0I1WldGeU9pQnVMRnh1SUNCdGIyNTBhRG9nYml4Y2JpQWdaR0Y1T2lCdUxGeHVJQ0JvYjNWeU9pQnVMRnh1SUNCdGFXNTFkR1U2SUc0c1hHNGdJSE5sWTI5dVpEb2diaXhjYm4wN1hHNWNibVY0Y0c5eWRDQmpiMjV6ZENCRVFWUkZWRWxOUlY5TlJVUWdQU0I3WEc0Z0lIbGxZWEk2SUc0c1hHNGdJRzF2Ym5Sb09pQnpMRnh1SUNCa1lYazZJRzRzWEc0Z0lHaHZkWEk2SUc0c1hHNGdJRzFwYm5WMFpUb2diaXhjYm4wN1hHNWNibVY0Y0c5eWRDQmpiMjV6ZENCRVFWUkZWRWxOUlY5TlJVUmZWMGxVU0Y5VFJVTlBUa1JUSUQwZ2UxeHVJQ0I1WldGeU9pQnVMRnh1SUNCdGIyNTBhRG9nY3l4Y2JpQWdaR0Y1T2lCdUxGeHVJQ0JvYjNWeU9pQnVMRnh1SUNCdGFXNTFkR1U2SUc0c1hHNGdJSE5sWTI5dVpEb2diaXhjYm4wN1hHNWNibVY0Y0c5eWRDQmpiMjV6ZENCRVFWUkZWRWxOUlY5TlJVUmZWMGxVU0Y5WFJVVkxSRUZaSUQwZ2UxeHVJQ0I1WldGeU9pQnVMRnh1SUNCdGIyNTBhRG9nY3l4Y2JpQWdaR0Y1T2lCdUxGeHVJQ0IzWldWclpHRjVPaUJ6TEZ4dUlDQm9iM1Z5T2lCdUxGeHVJQ0J0YVc1MWRHVTZJRzRzWEc1OU8xeHVYRzVsZUhCdmNuUWdZMjl1YzNRZ1JFRlVSVlJKVFVWZlJsVk1UQ0E5SUh0Y2JpQWdlV1ZoY2pvZ2JpeGNiaUFnYlc5dWRHZzZJR3dzWEc0Z0lHUmhlVG9nYml4Y2JpQWdhRzkxY2pvZ2JpeGNiaUFnYldsdWRYUmxPaUJ1TEZ4dUlDQjBhVzFsV205dVpVNWhiV1U2SUhNc1hHNTlPMXh1WEc1bGVIQnZjblFnWTI5dWMzUWdSRUZVUlZSSlRVVmZSbFZNVEY5WFNWUklYMU5GUTA5T1JGTWdQU0I3WEc0Z0lIbGxZWEk2SUc0c1hHNGdJRzF2Ym5Sb09pQnNMRnh1SUNCa1lYazZJRzRzWEc0Z0lHaHZkWEk2SUc0c1hHNGdJRzFwYm5WMFpUb2diaXhjYmlBZ2MyVmpiMjVrT2lCdUxGeHVJQ0IwYVcxbFdtOXVaVTVoYldVNklITXNYRzU5TzF4dVhHNWxlSEJ2Y25RZ1kyOXVjM1FnUkVGVVJWUkpUVVZmU0ZWSFJTQTlJSHRjYmlBZ2VXVmhjam9nYml4Y2JpQWdiVzl1ZEdnNklHd3NYRzRnSUdSaGVUb2diaXhjYmlBZ2QyVmxhMlJoZVRvZ2JDeGNiaUFnYUc5MWNqb2diaXhjYmlBZ2JXbHVkWFJsT2lCdUxGeHVJQ0IwYVcxbFdtOXVaVTVoYldVNklHd3NYRzU5TzF4dVhHNWxlSEJ2Y25RZ1kyOXVjM1FnUkVGVVJWUkpUVVZmU0ZWSFJWOVhTVlJJWDFORlEwOU9SRk1nUFNCN1hHNGdJSGxsWVhJNklHNHNYRzRnSUcxdmJuUm9PaUJzTEZ4dUlDQmtZWGs2SUc0c1hHNGdJSGRsWld0a1lYazZJR3dzWEc0Z0lHaHZkWEk2SUc0c1hHNGdJRzFwYm5WMFpUb2diaXhjYmlBZ2MyVmpiMjVrT2lCdUxGeHVJQ0IwYVcxbFdtOXVaVTVoYldVNklHd3NYRzU5TzF4dUlpd2dJaThxWEc0Z0lGUm9hWE1nYVhNZ2FuVnpkQ0JoSUdwMWJtc2daSEpoZDJWeUxDQmpiMjUwWVdsdWFXNW5JR0Z1ZVhSb2FXNW5JSFZ6WldRZ1lXTnliM056SUcxMWJIUnBjR3hsSUdOc1lYTnpaWE11WEc0Z0lFSmxZMkYxYzJVZ1RIVjRiMjRnYVhNZ2MyMWhiR3dvYVhOb0tTd2dkR2hwY3lCemFHOTFiR1FnYzNSaGVTQnpiV0ZzYkNCaGJtUWdkMlVnZDI5dUozUWdkMjl5Y25rZ1lXSnZkWFFnYzNCc2FYUjBhVzVuWEc0Z0lHbDBJSFZ3SUdsdWRHOHNJSE5oZVN3Z2NHRnljMmx1WjFWMGFXd3Vhbk1nWVc1a0lHSmhjMmxqVlhScGJDNXFjeUJoYm1RZ2MyOGdiMjR1SUVKMWRDQjBhR1Y1SUdGeVpTQmthWFpwWkdWa0lIVndJR0o1SUdabFlYUjFjbVVnWVhKbFlTNWNiaW92WEc1Y2JtbHRjRzl5ZENCN0lFbHVkbUZzYVdSQmNtZDFiV1Z1ZEVWeWNtOXlJSDBnWm5KdmJTQmNJaTR1TDJWeWNtOXljeTVxYzF3aU8xeHVYRzR2S2lwY2JpQXFJRUJ3Y21sMllYUmxYRzRnS2k5Y2JseHVMeThnVkZsUVJWTmNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR2x6Vlc1a1pXWnBibVZrS0c4cElIdGNiaUFnY21WMGRYSnVJSFI1Y0dWdlppQnZJRDA5UFNCY0luVnVaR1ZtYVc1bFpGd2lPMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2FYTk9kVzFpWlhJb2J5a2dlMXh1SUNCeVpYUjFjbTRnZEhsd1pXOW1JRzhnUFQwOUlGd2liblZ0WW1WeVhDSTdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCcGMwbHVkR1ZuWlhJb2J5a2dlMXh1SUNCeVpYUjFjbTRnZEhsd1pXOW1JRzhnUFQwOUlGd2liblZ0WW1WeVhDSWdKaVlnYnlBbElERWdQVDA5SURBN1hHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJwYzFOMGNtbHVaeWh2S1NCN1hHNGdJSEpsZEhWeWJpQjBlWEJsYjJZZ2J5QTlQVDBnWENKemRISnBibWRjSWp0Y2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR2x6UkdGMFpTaHZLU0I3WEc0Z0lISmxkSFZ5YmlCUFltcGxZM1F1Y0hKdmRHOTBlWEJsTG5SdlUzUnlhVzVuTG1OaGJHd29ieWtnUFQwOUlGd2lXMjlpYW1WamRDQkVZWFJsWFZ3aU8xeHVmVnh1WEc0dkx5QkRRVkJCUWtsTVNWUkpSVk5jYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdoaGMxSmxiR0YwYVhabEtDa2dlMXh1SUNCMGNua2dlMXh1SUNBZ0lISmxkSFZ5YmlCMGVYQmxiMllnU1c1MGJDQWhQVDBnWENKMWJtUmxabWx1WldSY0lpQW1KaUFoSVVsdWRHd3VVbVZzWVhScGRtVlVhVzFsUm05eWJXRjBPMXh1SUNCOUlHTmhkR05vSUNobEtTQjdYRzRnSUNBZ2NtVjBkWEp1SUdaaGJITmxPMXh1SUNCOVhHNTlYRzVjYmk4dklFOUNTa1ZEVkZNZ1FVNUVJRUZTVWtGWlUxeHVYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdiV0Y1WW1WQmNuSmhlU2gwYUdsdVp5a2dlMXh1SUNCeVpYUjFjbTRnUVhKeVlYa3VhWE5CY25KaGVTaDBhR2x1WnlrZ1B5QjBhR2x1WnlBNklGdDBhR2x1WjEwN1hHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJpWlhOMFFua29ZWEp5TENCaWVTd2dZMjl0Y0dGeVpTa2dlMXh1SUNCcFppQW9ZWEp5TG14bGJtZDBhQ0E5UFQwZ01Da2dlMXh1SUNBZ0lISmxkSFZ5YmlCMWJtUmxabWx1WldRN1hHNGdJSDFjYmlBZ2NtVjBkWEp1SUdGeWNpNXlaV1IxWTJVb0tHSmxjM1FzSUc1bGVIUXBJRDArSUh0Y2JpQWdJQ0JqYjI1emRDQndZV2x5SUQwZ1cySjVLRzVsZUhRcExDQnVaWGgwWFR0Y2JpQWdJQ0JwWmlBb0lXSmxjM1FwSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUJ3WVdseU8xeHVJQ0FnSUgwZ1pXeHpaU0JwWmlBb1kyOXRjR0Z5WlNoaVpYTjBXekJkTENCd1lXbHlXekJkS1NBOVBUMGdZbVZ6ZEZzd1hTa2dlMXh1SUNBZ0lDQWdjbVYwZFhKdUlHSmxjM1E3WEc0Z0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lISmxkSFZ5YmlCd1lXbHlPMXh1SUNBZ0lIMWNiaUFnZlN3Z2JuVnNiQ2xiTVYwN1hHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJ3YVdOcktHOWlhaXdnYTJWNWN5a2dlMXh1SUNCeVpYUjFjbTRnYTJWNWN5NXlaV1IxWTJVb0tHRXNJR3NwSUQwK0lIdGNiaUFnSUNCaFcydGRJRDBnYjJKcVcydGRPMXh1SUNBZ0lISmxkSFZ5YmlCaE8xeHVJQ0I5TENCN2ZTazdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCb1lYTlBkMjVRY205d1pYSjBlU2h2WW1vc0lIQnliM0FwSUh0Y2JpQWdjbVYwZFhKdUlFOWlhbVZqZEM1d2NtOTBiM1I1Y0dVdWFHRnpUM2R1VUhKdmNHVnlkSGt1WTJGc2JDaHZZbW9zSUhCeWIzQXBPMXh1ZlZ4dVhHNHZMeUJPVlUxQ1JWSlRJRUZPUkNCVFZGSkpUa2RUWEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCcGJuUmxaMlZ5UW1WMGQyVmxiaWgwYUdsdVp5d2dZbTkwZEc5dExDQjBiM0FwSUh0Y2JpQWdjbVYwZFhKdUlHbHpTVzUwWldkbGNpaDBhR2x1WnlrZ0ppWWdkR2hwYm1jZ1BqMGdZbTkwZEc5dElDWW1JSFJvYVc1bklEdzlJSFJ2Y0R0Y2JuMWNibHh1THk4Z2VDQWxJRzRnWW5WMElIUmhhMlZ6SUhSb1pTQnphV2R1SUc5bUlHNGdhVzV6ZEdWaFpDQnZaaUI0WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWm14dmIzSk5iMlFvZUN3Z2Jpa2dlMXh1SUNCeVpYUjFjbTRnZUNBdElHNGdLaUJOWVhSb0xtWnNiMjl5S0hnZ0x5QnVLVHRjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlIQmhaRk4wWVhKMEtHbHVjSFYwTENCdUlEMGdNaWtnZTF4dUlDQmpiMjV6ZENCcGMwNWxaeUE5SUdsdWNIVjBJRHdnTUR0Y2JpQWdiR1YwSUhCaFpHUmxaRHRjYmlBZ2FXWWdLR2x6VG1WbktTQjdYRzRnSUNBZ2NHRmtaR1ZrSUQwZ1hDSXRYQ0lnS3lBb1hDSmNJaUFySUMxcGJuQjFkQ2t1Y0dGa1UzUmhjblFvYml3Z1hDSXdYQ0lwTzF4dUlDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUhCaFpHUmxaQ0E5SUNoY0lsd2lJQ3NnYVc1d2RYUXBMbkJoWkZOMFlYSjBLRzRzSUZ3aU1Gd2lLVHRjYmlBZ2ZWeHVJQ0J5WlhSMWNtNGdjR0ZrWkdWa08xeHVmVnh1WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnY0dGeWMyVkpiblJsWjJWeUtITjBjbWx1WnlrZ2UxeHVJQ0JwWmlBb2FYTlZibVJsWm1sdVpXUW9jM1J5YVc1bktTQjhmQ0J6ZEhKcGJtY2dQVDA5SUc1MWJHd2dmSHdnYzNSeWFXNW5JRDA5UFNCY0lsd2lLU0I3WEc0Z0lDQWdjbVYwZFhKdUlIVnVaR1ZtYVc1bFpEdGNiaUFnZlNCbGJITmxJSHRjYmlBZ0lDQnlaWFIxY200Z2NHRnljMlZKYm5Rb2MzUnlhVzVuTENBeE1DazdYRzRnSUgxY2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJSEJoY25ObFJteHZZWFJwYm1jb2MzUnlhVzVuS1NCN1hHNGdJR2xtSUNocGMxVnVaR1ZtYVc1bFpDaHpkSEpwYm1jcElIeDhJSE4wY21sdVp5QTlQVDBnYm5Wc2JDQjhmQ0J6ZEhKcGJtY2dQVDA5SUZ3aVhDSXBJSHRjYmlBZ0lDQnlaWFIxY200Z2RXNWtaV1pwYm1Wa08xeHVJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lISmxkSFZ5YmlCd1lYSnpaVVpzYjJGMEtITjBjbWx1WnlrN1hHNGdJSDFjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlIQmhjbk5sVFdsc2JHbHpLR1p5WVdOMGFXOXVLU0I3WEc0Z0lDOHZJRkpsZEhWeWJpQjFibVJsWm1sdVpXUWdLR2x1YzNSbFlXUWdiMllnTUNrZ2FXNGdkR2hsYzJVZ1kyRnpaWE1zSUhkb1pYSmxJR1p5WVdOMGFXOXVJR2x6SUc1dmRDQnpaWFJjYmlBZ2FXWWdLR2x6Vlc1a1pXWnBibVZrS0daeVlXTjBhVzl1S1NCOGZDQm1jbUZqZEdsdmJpQTlQVDBnYm5Wc2JDQjhmQ0JtY21GamRHbHZiaUE5UFQwZ1hDSmNJaWtnZTF4dUlDQWdJSEpsZEhWeWJpQjFibVJsWm1sdVpXUTdYRzRnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdZMjl1YzNRZ1ppQTlJSEJoY25ObFJteHZZWFFvWENJd0xsd2lJQ3NnWm5KaFkzUnBiMjRwSUNvZ01UQXdNRHRjYmlBZ0lDQnlaWFIxY200Z1RXRjBhQzVtYkc5dmNpaG1LVHRjYmlBZ2ZWeHVmVnh1WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnY205MWJtUlVieWh1ZFcxaVpYSXNJR1JwWjJsMGN5d2dkRzkzWVhKa1dtVnlieUE5SUdaaGJITmxLU0I3WEc0Z0lHTnZibk4wSUdaaFkzUnZjaUE5SURFd0lDb3FJR1JwWjJsMGN5eGNiaUFnSUNCeWIzVnVaR1Z5SUQwZ2RHOTNZWEprV21WeWJ5QS9JRTFoZEdndWRISjFibU1nT2lCTllYUm9Mbkp2ZFc1a08xeHVJQ0J5WlhSMWNtNGdjbTkxYm1SbGNpaHVkVzFpWlhJZ0tpQm1ZV04wYjNJcElDOGdabUZqZEc5eU8xeHVmVnh1WEc0dkx5QkVRVlJGSUVKQlUwbERVMXh1WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnYVhOTVpXRndXV1ZoY2loNVpXRnlLU0I3WEc0Z0lISmxkSFZ5YmlCNVpXRnlJQ1VnTkNBOVBUMGdNQ0FtSmlBb2VXVmhjaUFsSURFd01DQWhQVDBnTUNCOGZDQjVaV0Z5SUNVZ05EQXdJRDA5UFNBd0tUdGNibjFjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdSaGVYTkpibGxsWVhJb2VXVmhjaWtnZTF4dUlDQnlaWFIxY200Z2FYTk1aV0Z3V1dWaGNpaDVaV0Z5S1NBL0lETTJOaUE2SURNMk5UdGNibjFjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdSaGVYTkpiazF2Ym5Sb0tIbGxZWElzSUcxdmJuUm9LU0I3WEc0Z0lHTnZibk4wSUcxdlpFMXZiblJvSUQwZ1pteHZiM0pOYjJRb2JXOXVkR2dnTFNBeExDQXhNaWtnS3lBeExGeHVJQ0FnSUcxdlpGbGxZWElnUFNCNVpXRnlJQ3NnS0cxdmJuUm9JQzBnYlc5a1RXOXVkR2dwSUM4Z01USTdYRzVjYmlBZ2FXWWdLRzF2WkUxdmJuUm9JRDA5UFNBeUtTQjdYRzRnSUNBZ2NtVjBkWEp1SUdselRHVmhjRmxsWVhJb2JXOWtXV1ZoY2lrZ1B5QXlPU0E2SURJNE8xeHVJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lISmxkSFZ5YmlCYk16RXNJRzUxYkd3c0lETXhMQ0F6TUN3Z016RXNJRE13TENBek1Td2dNekVzSURNd0xDQXpNU3dnTXpBc0lETXhYVnR0YjJSTmIyNTBhQ0F0SURGZE8xeHVJQ0I5WEc1OVhHNWNiaTh2SUdOdmRtVnlkQ0JoSUdOaGJHVnVaR0Z5SUc5aWFtVmpkQ0IwYnlCaElHeHZZMkZzSUhScGJXVnpkR0Z0Y0NBb1pYQnZZMmdzSUdKMWRDQjNhWFJvSUhSb1pTQnZabVp6WlhRZ1ltRnJaV1FnYVc0cFhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2IySnFWRzlNYjJOaGJGUlRLRzlpYWlrZ2UxeHVJQ0JzWlhRZ1pDQTlJRVJoZEdVdVZWUkRLRnh1SUNBZ0lHOWlhaTU1WldGeUxGeHVJQ0FnSUc5aWFpNXRiMjUwYUNBdElERXNYRzRnSUNBZ2IySnFMbVJoZVN4Y2JpQWdJQ0J2WW1vdWFHOTFjaXhjYmlBZ0lDQnZZbW91YldsdWRYUmxMRnh1SUNBZ0lHOWlhaTV6WldOdmJtUXNYRzRnSUNBZ2IySnFMbTFwYkd4cGMyVmpiMjVrWEc0Z0lDazdYRzVjYmlBZ0x5OGdabTl5SUd4bFoyRmplU0J5WldGemIyNXpMQ0I1WldGeWN5QmlaWFIzWldWdUlEQWdZVzVrSURrNUlHRnlaU0JwYm5SbGNuQnlaWFJsWkNCaGN5QXhPVmhZT3lCeVpYWmxjblFnZEdoaGRGeHVJQ0JwWmlBb2IySnFMbmxsWVhJZ1BDQXhNREFnSmlZZ2IySnFMbmxsWVhJZ1BqMGdNQ2tnZTF4dUlDQWdJR1FnUFNCdVpYY2dSR0YwWlNoa0tUdGNiaUFnSUNCa0xuTmxkRlZVUTBaMWJHeFpaV0Z5S0dRdVoyVjBWVlJEUm5Wc2JGbGxZWElvS1NBdElERTVNREFwTzF4dUlDQjlYRzRnSUhKbGRIVnliaUFyWkR0Y2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJSGRsWld0elNXNVhaV1ZyV1dWaGNpaDNaV1ZyV1dWaGNpa2dlMXh1SUNCamIyNXpkQ0J3TVNBOVhHNGdJQ0FnSUNBb2QyVmxhMWxsWVhJZ0sxeHVJQ0FnSUNBZ0lDQk5ZWFJvTG1ac2IyOXlLSGRsWld0WlpXRnlJQzhnTkNrZ0xWeHVJQ0FnSUNBZ0lDQk5ZWFJvTG1ac2IyOXlLSGRsWld0WlpXRnlJQzhnTVRBd0tTQXJYRzRnSUNBZ0lDQWdJRTFoZEdndVpteHZiM0lvZDJWbGExbGxZWElnTHlBME1EQXBLU0FsWEc0Z0lDQWdJQ0EzTEZ4dUlDQWdJR3hoYzNRZ1BTQjNaV1ZyV1dWaGNpQXRJREVzWEc0Z0lDQWdjRElnUFNBb2JHRnpkQ0FySUUxaGRHZ3VabXh2YjNJb2JHRnpkQ0F2SURRcElDMGdUV0YwYUM1bWJHOXZjaWhzWVhOMElDOGdNVEF3S1NBcklFMWhkR2d1Wm14dmIzSW9iR0Z6ZENBdklEUXdNQ2twSUNVZ056dGNiaUFnY21WMGRYSnVJSEF4SUQwOVBTQTBJSHg4SUhBeUlEMDlQU0F6SUQ4Z05UTWdPaUExTWp0Y2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJSFZ1ZEhKMWJtTmhkR1ZaWldGeUtIbGxZWElwSUh0Y2JpQWdhV1lnS0hsbFlYSWdQaUE1T1NrZ2UxeHVJQ0FnSUhKbGRIVnliaUI1WldGeU8xeHVJQ0I5SUdWc2MyVWdjbVYwZFhKdUlIbGxZWElnUGlBMk1DQS9JREU1TURBZ0t5QjVaV0Z5SURvZ01qQXdNQ0FySUhsbFlYSTdYRzU5WEc1Y2JpOHZJRkJCVWxOSlRrZGNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJSEJoY25ObFdtOXVaVWx1Wm04b2RITXNJRzltWm5ObGRFWnZjbTFoZEN3Z2JHOWpZV3hsTENCMGFXMWxXbTl1WlNBOUlHNTFiR3dwSUh0Y2JpQWdZMjl1YzNRZ1pHRjBaU0E5SUc1bGR5QkVZWFJsS0hSektTeGNiaUFnSUNCcGJuUnNUM0IwY3lBOUlIdGNiaUFnSUNBZ0lHaHZkWEpEZVdOc1pUb2dYQ0pvTWpOY0lpeGNiaUFnSUNBZ0lIbGxZWEk2SUZ3aWJuVnRaWEpwWTF3aUxGeHVJQ0FnSUNBZ2JXOXVkR2c2SUZ3aU1pMWthV2RwZEZ3aUxGeHVJQ0FnSUNBZ1pHRjVPaUJjSWpJdFpHbG5hWFJjSWl4Y2JpQWdJQ0FnSUdodmRYSTZJRndpTWkxa2FXZHBkRndpTEZ4dUlDQWdJQ0FnYldsdWRYUmxPaUJjSWpJdFpHbG5hWFJjSWl4Y2JpQWdJQ0I5TzF4dVhHNGdJR2xtSUNoMGFXMWxXbTl1WlNrZ2UxeHVJQ0FnSUdsdWRHeFBjSFJ6TG5ScGJXVmFiMjVsSUQwZ2RHbHRaVnB2Ym1VN1hHNGdJSDFjYmx4dUlDQmpiMjV6ZENCdGIyUnBabWxsWkNBOUlIc2dkR2x0WlZwdmJtVk9ZVzFsT2lCdlptWnpaWFJHYjNKdFlYUXNJQzR1TG1sdWRHeFBjSFJ6SUgwN1hHNWNiaUFnWTI5dWMzUWdjR0Z5YzJWa0lEMGdibVYzSUVsdWRHd3VSR0YwWlZScGJXVkdiM0p0WVhRb2JHOWpZV3hsTENCdGIyUnBabWxsWkNsY2JpQWdJQ0F1Wm05eWJXRjBWRzlRWVhKMGN5aGtZWFJsS1Z4dUlDQWdJQzVtYVc1a0tDaHRLU0E5UGlCdExuUjVjR1V1ZEc5TWIzZGxja05oYzJVb0tTQTlQVDBnWENKMGFXMWxlbTl1Wlc1aGJXVmNJaWs3WEc0Z0lISmxkSFZ5YmlCd1lYSnpaV1FnUHlCd1lYSnpaV1F1ZG1Gc2RXVWdPaUJ1ZFd4c08xeHVmVnh1WEc0dkx5QnphV2R1WldSUFptWnpaWFFvSnkwMUp5d2dKek13SnlrZ0xUNGdMVE16TUZ4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUhOcFoyNWxaRTltWm5ObGRDaHZabVpJYjNWeVUzUnlMQ0J2Wm1aTmFXNTFkR1ZUZEhJcElIdGNiaUFnYkdWMElHOW1aa2h2ZFhJZ1BTQndZWEp6WlVsdWRDaHZabVpJYjNWeVUzUnlMQ0F4TUNrN1hHNWNiaUFnTHk4Z1pHOXVKM1FnZkh3Z2RHaHBjeUJpWldOaGRYTmxJSGRsSUhkaGJuUWdkRzhnY0hKbGMyVnlkbVVnTFRCY2JpQWdhV1lnS0U1MWJXSmxjaTVwYzA1aFRpaHZabVpJYjNWeUtTa2dlMXh1SUNBZ0lHOW1aa2h2ZFhJZ1BTQXdPMXh1SUNCOVhHNWNiaUFnWTI5dWMzUWdiMlptVFdsdUlEMGdjR0Z5YzJWSmJuUW9iMlptVFdsdWRYUmxVM1J5TENBeE1Da2dmSHdnTUN4Y2JpQWdJQ0J2Wm1aTmFXNVRhV2R1WldRZ1BTQnZabVpJYjNWeUlEd2dNQ0I4ZkNCUFltcGxZM1F1YVhNb2IyWm1TRzkxY2l3Z0xUQXBJRDhnTFc5bVprMXBiaUE2SUc5bVprMXBianRjYmlBZ2NtVjBkWEp1SUc5bVpraHZkWElnS2lBMk1DQXJJRzltWmsxcGJsTnBaMjVsWkR0Y2JuMWNibHh1THk4Z1EwOUZVa05KVDA1Y2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlHRnpUblZ0WW1WeUtIWmhiSFZsS1NCN1hHNGdJR052Ym5OMElHNTFiV1Z5YVdOV1lXeDFaU0E5SUU1MWJXSmxjaWgyWVd4MVpTazdYRzRnSUdsbUlDaDBlWEJsYjJZZ2RtRnNkV1VnUFQwOUlGd2lZbTl2YkdWaGJsd2lJSHg4SUhaaGJIVmxJRDA5UFNCY0lsd2lJSHg4SUU1MWJXSmxjaTVwYzA1aFRpaHVkVzFsY21salZtRnNkV1VwS1Z4dUlDQWdJSFJvY205M0lHNWxkeUJKYm5aaGJHbGtRWEpuZFcxbGJuUkZjbkp2Y2loZ1NXNTJZV3hwWkNCMWJtbDBJSFpoYkhWbElDUjdkbUZzZFdWOVlDazdYRzRnSUhKbGRIVnliaUJ1ZFcxbGNtbGpWbUZzZFdVN1hHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJ1YjNKdFlXeHBlbVZQWW1wbFkzUW9iMkpxTENCdWIzSnRZV3hwZW1WeUtTQjdYRzRnSUdOdmJuTjBJRzV2Y20xaGJHbDZaV1FnUFNCN2ZUdGNiaUFnWm05eUlDaGpiMjV6ZENCMUlHbHVJRzlpYWlrZ2UxeHVJQ0FnSUdsbUlDaG9ZWE5QZDI1UWNtOXdaWEowZVNodlltb3NJSFVwS1NCN1hHNGdJQ0FnSUNCamIyNXpkQ0IySUQwZ2IySnFXM1ZkTzF4dUlDQWdJQ0FnYVdZZ0tIWWdQVDA5SUhWdVpHVm1hVzVsWkNCOGZDQjJJRDA5UFNCdWRXeHNLU0JqYjI1MGFXNTFaVHRjYmlBZ0lDQWdJRzV2Y20xaGJHbDZaV1JiYm05eWJXRnNhWHBsY2loMUtWMGdQU0JoYzA1MWJXSmxjaWgyS1R0Y2JpQWdJQ0I5WEc0Z0lIMWNiaUFnY21WMGRYSnVJRzV2Y20xaGJHbDZaV1E3WEc1OVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQm1iM0p0WVhSUFptWnpaWFFvYjJabWMyVjBMQ0JtYjNKdFlYUXBJSHRjYmlBZ1kyOXVjM1FnYUc5MWNuTWdQU0JOWVhSb0xuUnlkVzVqS0UxaGRHZ3VZV0p6S0c5bVpuTmxkQ0F2SURZd0tTa3NYRzRnSUNBZ2JXbHVkWFJsY3lBOUlFMWhkR2d1ZEhKMWJtTW9UV0YwYUM1aFluTW9iMlptYzJWMElDVWdOakFwS1N4Y2JpQWdJQ0J6YVdkdUlEMGdiMlptYzJWMElENDlJREFnUHlCY0lpdGNJaUE2SUZ3aUxWd2lPMXh1WEc0Z0lITjNhWFJqYUNBb1ptOXliV0YwS1NCN1hHNGdJQ0FnWTJGelpTQmNJbk5vYjNKMFhDSTZYRzRnSUNBZ0lDQnlaWFIxY200Z1lDUjdjMmxuYm4wa2UzQmhaRk4wWVhKMEtHaHZkWEp6TENBeUtYMDZKSHR3WVdSVGRHRnlkQ2h0YVc1MWRHVnpMQ0F5S1gxZ08xeHVJQ0FnSUdOaGMyVWdYQ0p1WVhKeWIzZGNJanBjYmlBZ0lDQWdJSEpsZEhWeWJpQmdKSHR6YVdkdWZTUjdhRzkxY25OOUpIdHRhVzUxZEdWeklENGdNQ0EvSUdBNkpIdHRhVzUxZEdWemZXQWdPaUJjSWx3aWZXQTdYRzRnSUNBZ1kyRnpaU0JjSW5SbFkyaHBaVndpT2x4dUlDQWdJQ0FnY21WMGRYSnVJR0FrZTNOcFoyNTlKSHR3WVdSVGRHRnlkQ2hvYjNWeWN5d2dNaWw5Skh0d1lXUlRkR0Z5ZENodGFXNTFkR1Z6TENBeUtYMWdPMXh1SUNBZ0lHUmxabUYxYkhRNlhHNGdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1VtRnVaMlZGY25KdmNpaGdWbUZzZFdVZ1ptOXliV0YwSUNSN1ptOXliV0YwZlNCcGN5QnZkWFFnYjJZZ2NtRnVaMlVnWm05eUlIQnliM0JsY25SNUlHWnZjbTFoZEdBcE8xeHVJQ0I5WEc1OVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQjBhVzFsVDJKcVpXTjBLRzlpYWlrZ2UxeHVJQ0J5WlhSMWNtNGdjR2xqYXlodlltb3NJRnRjSW1odmRYSmNJaXdnWENKdGFXNTFkR1ZjSWl3Z1hDSnpaV052Ym1SY0lpd2dYQ0p0YVd4c2FYTmxZMjl1WkZ3aVhTazdYRzU5WEc1Y2JtVjRjRzl5ZENCamIyNXpkQ0JwWVc1aFVtVm5aWGdnUFZ4dUlDQXZXMEV0V21FdGVsOHJMVjE3TVN3eU5UWjlLRDg2T2o5Y1hDOWJRUzFhWVMxNk1DMDVYeXN0WFhzeExESTFObjBvUHpwY1hDOWJRUzFhWVMxNk1DMDVYeXN0WFhzeExESTFObjBwUHlrL0x6dGNiaUlzSUNKcGJYQnZjblFnS2lCaGN5QkdiM0p0WVhSeklHWnliMjBnWENJdUwyWnZjbTFoZEhNdWFuTmNJanRjYm1sdGNHOXlkQ0I3SUhCcFkyc2dmU0JtY205dElGd2lMaTkxZEdsc0xtcHpYQ0k3WEc1Y2JtWjFibU4wYVc5dUlITjBjbWx1WjJsbWVTaHZZbW9wSUh0Y2JpQWdjbVYwZFhKdUlFcFRUMDR1YzNSeWFXNW5hV1o1S0c5aWFpd2dUMkpxWldOMExtdGxlWE1vYjJKcUtTNXpiM0owS0NrcE8xeHVmVnh1WEc0dktpcGNiaUFxSUVCd2NtbDJZWFJsWEc0Z0tpOWNibHh1Wlhod2IzSjBJR052Ym5OMElHMXZiblJvYzB4dmJtY2dQU0JiWEc0Z0lGd2lTbUZ1ZFdGeWVWd2lMRnh1SUNCY0lrWmxZbkoxWVhKNVhDSXNYRzRnSUZ3aVRXRnlZMmhjSWl4Y2JpQWdYQ0pCY0hKcGJGd2lMRnh1SUNCY0lrMWhlVndpTEZ4dUlDQmNJa3AxYm1WY0lpeGNiaUFnWENKS2RXeDVYQ0lzWEc0Z0lGd2lRWFZuZFhOMFhDSXNYRzRnSUZ3aVUyVndkR1Z0WW1WeVhDSXNYRzRnSUZ3aVQyTjBiMkpsY2x3aUxGeHVJQ0JjSWs1dmRtVnRZbVZ5WENJc1hHNGdJRndpUkdWalpXMWlaWEpjSWl4Y2JsMDdYRzVjYm1WNGNHOXlkQ0JqYjI1emRDQnRiMjUwYUhOVGFHOXlkQ0E5SUZ0Y2JpQWdYQ0pLWVc1Y0lpeGNiaUFnWENKR1pXSmNJaXhjYmlBZ1hDSk5ZWEpjSWl4Y2JpQWdYQ0pCY0hKY0lpeGNiaUFnWENKTllYbGNJaXhjYmlBZ1hDSktkVzVjSWl4Y2JpQWdYQ0pLZFd4Y0lpeGNiaUFnWENKQmRXZGNJaXhjYmlBZ1hDSlRaWEJjSWl4Y2JpQWdYQ0pQWTNSY0lpeGNiaUFnWENKT2IzWmNJaXhjYmlBZ1hDSkVaV05jSWl4Y2JsMDdYRzVjYm1WNGNHOXlkQ0JqYjI1emRDQnRiMjUwYUhOT1lYSnliM2NnUFNCYlhDSktYQ0lzSUZ3aVJsd2lMQ0JjSWsxY0lpd2dYQ0pCWENJc0lGd2lUVndpTENCY0lrcGNJaXdnWENKS1hDSXNJRndpUVZ3aUxDQmNJbE5jSWl3Z1hDSlBYQ0lzSUZ3aVRsd2lMQ0JjSWtSY0lsMDdYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJ0YjI1MGFITW9iR1Z1WjNSb0tTQjdYRzRnSUhOM2FYUmphQ0FvYkdWdVozUm9LU0I3WEc0Z0lDQWdZMkZ6WlNCY0ltNWhjbkp2ZDF3aU9seHVJQ0FnSUNBZ2NtVjBkWEp1SUZzdUxpNXRiMjUwYUhOT1lYSnliM2RkTzF4dUlDQWdJR05oYzJVZ1hDSnphRzl5ZEZ3aU9seHVJQ0FnSUNBZ2NtVjBkWEp1SUZzdUxpNXRiMjUwYUhOVGFHOXlkRjA3WEc0Z0lDQWdZMkZ6WlNCY0lteHZibWRjSWpwY2JpQWdJQ0FnSUhKbGRIVnliaUJiTGk0dWJXOXVkR2h6VEc5dVoxMDdYRzRnSUNBZ1kyRnpaU0JjSW01MWJXVnlhV05jSWpwY2JpQWdJQ0FnSUhKbGRIVnliaUJiWENJeFhDSXNJRndpTWx3aUxDQmNJak5jSWl3Z1hDSTBYQ0lzSUZ3aU5Wd2lMQ0JjSWpaY0lpd2dYQ0kzWENJc0lGd2lPRndpTENCY0lqbGNJaXdnWENJeE1Gd2lMQ0JjSWpFeFhDSXNJRndpTVRKY0lsMDdYRzRnSUNBZ1kyRnpaU0JjSWpJdFpHbG5hWFJjSWpwY2JpQWdJQ0FnSUhKbGRIVnliaUJiWENJd01Wd2lMQ0JjSWpBeVhDSXNJRndpTUROY0lpd2dYQ0l3TkZ3aUxDQmNJakExWENJc0lGd2lNRFpjSWl3Z1hDSXdOMXdpTENCY0lqQTRYQ0lzSUZ3aU1EbGNJaXdnWENJeE1Gd2lMQ0JjSWpFeFhDSXNJRndpTVRKY0lsMDdYRzRnSUNBZ1pHVm1ZWFZzZERwY2JpQWdJQ0FnSUhKbGRIVnliaUJ1ZFd4c08xeHVJQ0I5WEc1OVhHNWNibVY0Y0c5eWRDQmpiMjV6ZENCM1pXVnJaR0Y1YzB4dmJtY2dQU0JiWEc0Z0lGd2lUVzl1WkdGNVhDSXNYRzRnSUZ3aVZIVmxjMlJoZVZ3aUxGeHVJQ0JjSWxkbFpHNWxjMlJoZVZ3aUxGeHVJQ0JjSWxSb2RYSnpaR0Y1WENJc1hHNGdJRndpUm5KcFpHRjVYQ0lzWEc0Z0lGd2lVMkYwZFhKa1lYbGNJaXhjYmlBZ1hDSlRkVzVrWVhsY0lpeGNibDA3WEc1Y2JtVjRjRzl5ZENCamIyNXpkQ0IzWldWclpHRjVjMU5vYjNKMElEMGdXMXdpVFc5dVhDSXNJRndpVkhWbFhDSXNJRndpVjJWa1hDSXNJRndpVkdoMVhDSXNJRndpUm5KcFhDSXNJRndpVTJGMFhDSXNJRndpVTNWdVhDSmRPMXh1WEc1bGVIQnZjblFnWTI5dWMzUWdkMlZsYTJSaGVYTk9ZWEp5YjNjZ1BTQmJYQ0pOWENJc0lGd2lWRndpTENCY0lsZGNJaXdnWENKVVhDSXNJRndpUmx3aUxDQmNJbE5jSWl3Z1hDSlRYQ0pkTzF4dVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2QyVmxhMlJoZVhNb2JHVnVaM1JvS1NCN1hHNGdJSE4zYVhSamFDQW9iR1Z1WjNSb0tTQjdYRzRnSUNBZ1kyRnpaU0JjSW01aGNuSnZkMXdpT2x4dUlDQWdJQ0FnY21WMGRYSnVJRnN1TGk1M1pXVnJaR0Y1YzA1aGNuSnZkMTA3WEc0Z0lDQWdZMkZ6WlNCY0luTm9iM0owWENJNlhHNGdJQ0FnSUNCeVpYUjFjbTRnV3k0dUxuZGxaV3RrWVhselUyaHZjblJkTzF4dUlDQWdJR05oYzJVZ1hDSnNiMjVuWENJNlhHNGdJQ0FnSUNCeVpYUjFjbTRnV3k0dUxuZGxaV3RrWVhselRHOXVaMTA3WEc0Z0lDQWdZMkZ6WlNCY0ltNTFiV1Z5YVdOY0lqcGNiaUFnSUNBZ0lISmxkSFZ5YmlCYlhDSXhYQ0lzSUZ3aU1sd2lMQ0JjSWpOY0lpd2dYQ0kwWENJc0lGd2lOVndpTENCY0lqWmNJaXdnWENJM1hDSmRPMXh1SUNBZ0lHUmxabUYxYkhRNlhHNGdJQ0FnSUNCeVpYUjFjbTRnYm5Wc2JEdGNiaUFnZlZ4dWZWeHVYRzVsZUhCdmNuUWdZMjl1YzNRZ2JXVnlhV1JwWlcxeklEMGdXMXdpUVUxY0lpd2dYQ0pRVFZ3aVhUdGNibHh1Wlhod2IzSjBJR052Ym5OMElHVnlZWE5NYjI1bklEMGdXMXdpUW1WbWIzSmxJRU5vY21semRGd2lMQ0JjSWtGdWJtOGdSRzl0YVc1cFhDSmRPMXh1WEc1bGVIQnZjblFnWTI5dWMzUWdaWEpoYzFOb2IzSjBJRDBnVzF3aVFrTmNJaXdnWENKQlJGd2lYVHRjYmx4dVpYaHdiM0owSUdOdmJuTjBJR1Z5WVhOT1lYSnliM2NnUFNCYlhDSkNYQ0lzSUZ3aVFWd2lYVHRjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdWeVlYTW9iR1Z1WjNSb0tTQjdYRzRnSUhOM2FYUmphQ0FvYkdWdVozUm9LU0I3WEc0Z0lDQWdZMkZ6WlNCY0ltNWhjbkp2ZDF3aU9seHVJQ0FnSUNBZ2NtVjBkWEp1SUZzdUxpNWxjbUZ6VG1GeWNtOTNYVHRjYmlBZ0lDQmpZWE5sSUZ3aWMyaHZjblJjSWpwY2JpQWdJQ0FnSUhKbGRIVnliaUJiTGk0dVpYSmhjMU5vYjNKMFhUdGNiaUFnSUNCallYTmxJRndpYkc5dVoxd2lPbHh1SUNBZ0lDQWdjbVYwZFhKdUlGc3VMaTVsY21GelRHOXVaMTA3WEc0Z0lDQWdaR1ZtWVhWc2REcGNiaUFnSUNBZ0lISmxkSFZ5YmlCdWRXeHNPMXh1SUNCOVhHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJ0WlhKcFpHbGxiVVp2Y2tSaGRHVlVhVzFsS0dSMEtTQjdYRzRnSUhKbGRIVnliaUJ0WlhKcFpHbGxiWE5iWkhRdWFHOTFjaUE4SURFeUlEOGdNQ0E2SURGZE8xeHVmVnh1WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnZDJWbGEyUmhlVVp2Y2tSaGRHVlVhVzFsS0dSMExDQnNaVzVuZEdncElIdGNiaUFnY21WMGRYSnVJSGRsWld0a1lYbHpLR3hsYm1kMGFDbGJaSFF1ZDJWbGEyUmhlU0F0SURGZE8xeHVmVnh1WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnYlc5dWRHaEdiM0pFWVhSbFZHbHRaU2hrZEN3Z2JHVnVaM1JvS1NCN1hHNGdJSEpsZEhWeWJpQnRiMjUwYUhNb2JHVnVaM1JvS1Z0a2RDNXRiMjUwYUNBdElERmRPMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1pYSmhSbTl5UkdGMFpWUnBiV1VvWkhRc0lHeGxibWQwYUNrZ2UxeHVJQ0J5WlhSMWNtNGdaWEpoY3loc1pXNW5kR2dwVzJSMExubGxZWElnUENBd0lEOGdNQ0E2SURGZE8xeHVmVnh1WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWm05eWJXRjBVbVZzWVhScGRtVlVhVzFsS0hWdWFYUXNJR052ZFc1MExDQnVkVzFsY21saklEMGdYQ0poYkhkaGVYTmNJaXdnYm1GeWNtOTNJRDBnWm1Gc2MyVXBJSHRjYmlBZ1kyOXVjM1FnZFc1cGRITWdQU0I3WEc0Z0lDQWdlV1ZoY25NNklGdGNJbmxsWVhKY0lpd2dYQ0o1Y2k1Y0lsMHNYRzRnSUNBZ2NYVmhjblJsY25NNklGdGNJbkYxWVhKMFpYSmNJaXdnWENKeGRISXVYQ0pkTEZ4dUlDQWdJRzF2Ym5Sb2N6b2dXMXdpYlc5dWRHaGNJaXdnWENKdGJ5NWNJbDBzWEc0Z0lDQWdkMlZsYTNNNklGdGNJbmRsWld0Y0lpd2dYQ0ozYXk1Y0lsMHNYRzRnSUNBZ1pHRjVjem9nVzF3aVpHRjVYQ0lzSUZ3aVpHRjVYQ0lzSUZ3aVpHRjVjMXdpWFN4Y2JpQWdJQ0JvYjNWeWN6b2dXMXdpYUc5MWNsd2lMQ0JjSW1oeUxsd2lYU3hjYmlBZ0lDQnRhVzUxZEdWek9pQmJYQ0p0YVc1MWRHVmNJaXdnWENKdGFXNHVYQ0pkTEZ4dUlDQWdJSE5sWTI5dVpITTZJRnRjSW5ObFkyOXVaRndpTENCY0luTmxZeTVjSWwwc1hHNGdJSDA3WEc1Y2JpQWdZMjl1YzNRZ2JHRnpkR0ZpYkdVZ1BTQmJYQ0pvYjNWeWMxd2lMQ0JjSW0xcGJuVjBaWE5jSWl3Z1hDSnpaV052Ym1SelhDSmRMbWx1WkdWNFQyWW9kVzVwZENrZ1BUMDlJQzB4TzF4dVhHNGdJR2xtSUNodWRXMWxjbWxqSUQwOVBTQmNJbUYxZEc5Y0lpQW1KaUJzWVhOMFlXSnNaU2tnZTF4dUlDQWdJR052Ym5OMElHbHpSR0Y1SUQwZ2RXNXBkQ0E5UFQwZ1hDSmtZWGx6WENJN1hHNGdJQ0FnYzNkcGRHTm9JQ2hqYjNWdWRDa2dlMXh1SUNBZ0lDQWdZMkZ6WlNBeE9seHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2FYTkVZWGtnUHlCY0luUnZiVzl5Y205M1hDSWdPaUJnYm1WNGRDQWtlM1Z1YVhSelczVnVhWFJkV3pCZGZXQTdYRzRnSUNBZ0lDQmpZWE5sSUMweE9seHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2FYTkVZWGtnUHlCY0lubGxjM1JsY21SaGVWd2lJRG9nWUd4aGMzUWdKSHQxYm1sMGMxdDFibWwwWFZzd1hYMWdPMXh1SUNBZ0lDQWdZMkZ6WlNBd09seHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2FYTkVZWGtnUHlCY0luUnZaR0Y1WENJZ09pQmdkR2hwY3lBa2UzVnVhWFJ6VzNWdWFYUmRXekJkZldBN1hHNGdJQ0FnSUNCa1pXWmhkV3gwT2lBdkx5Qm1ZV3hzSUhSb2NtOTFaMmhjYmlBZ0lDQjlYRzRnSUgxY2JseHVJQ0JqYjI1emRDQnBjMGx1VUdGemRDQTlJRTlpYW1WamRDNXBjeWhqYjNWdWRDd2dMVEFwSUh4OElHTnZkVzUwSUR3Z01DeGNiaUFnSUNCbWJYUldZV3gxWlNBOUlFMWhkR2d1WVdKektHTnZkVzUwS1N4Y2JpQWdJQ0J6YVc1bmRXeGhjaUE5SUdadGRGWmhiSFZsSUQwOVBTQXhMRnh1SUNBZ0lHeHBiRlZ1YVhSeklEMGdkVzVwZEhOYmRXNXBkRjBzWEc0Z0lDQWdabTEwVlc1cGRDQTlJRzVoY25KdmQxeHVJQ0FnSUNBZ1B5QnphVzVuZFd4aGNseHVJQ0FnSUNBZ0lDQS9JR3hwYkZWdWFYUnpXekZkWEc0Z0lDQWdJQ0FnSURvZ2JHbHNWVzVwZEhOYk1sMGdmSHdnYkdsc1ZXNXBkSE5iTVYxY2JpQWdJQ0FnSURvZ2MybHVaM1ZzWVhKY2JpQWdJQ0FnSUQ4Z2RXNXBkSE5iZFc1cGRGMWJNRjFjYmlBZ0lDQWdJRG9nZFc1cGREdGNiaUFnY21WMGRYSnVJR2x6U1c1UVlYTjBJRDhnWUNSN1ptMTBWbUZzZFdWOUlDUjdabTEwVlc1cGRIMGdZV2R2WUNBNklHQnBiaUFrZTJadGRGWmhiSFZsZlNBa2UyWnRkRlZ1YVhSOVlEdGNibjFjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdadmNtMWhkRk4wY21sdVp5aHJibTkzYmtadmNtMWhkQ2tnZTF4dUlDQXZMeUIwYUdWelpTQmhiR3dnYUdGMlpTQjBhR1VnYjJabWMyVjBjeUJ5WlcxdmRtVmtJR0psWTJGMWMyVWdkMlVnWkc5dUozUWdhR0YyWlNCaFkyTmxjM01nZEc4Z2RHaGxiVnh1SUNBdkx5QjNhWFJvYjNWMElHRnNiQ0IwYUdVZ2FXNTBiQ0J6ZEhWbVppQjBhR2x6SUdseklHSmhZMnRtYVd4c2FXNW5YRzRnSUdOdmJuTjBJR1pwYkhSbGNtVmtJRDBnY0dsamF5aHJibTkzYmtadmNtMWhkQ3dnVzF4dUlDQWdJQ0FnWENKM1pXVnJaR0Y1WENJc1hHNGdJQ0FnSUNCY0ltVnlZVndpTEZ4dUlDQWdJQ0FnWENKNVpXRnlYQ0lzWEc0Z0lDQWdJQ0JjSW0xdmJuUm9YQ0lzWEc0Z0lDQWdJQ0JjSW1SaGVWd2lMRnh1SUNBZ0lDQWdYQ0pvYjNWeVhDSXNYRzRnSUNBZ0lDQmNJbTFwYm5WMFpWd2lMRnh1SUNBZ0lDQWdYQ0p6WldOdmJtUmNJaXhjYmlBZ0lDQWdJRndpZEdsdFpWcHZibVZPWVcxbFhDSXNYRzRnSUNBZ0lDQmNJbWh2ZFhKRGVXTnNaVndpTEZ4dUlDQWdJRjBwTEZ4dUlDQWdJR3RsZVNBOUlITjBjbWx1WjJsbWVTaG1hV3gwWlhKbFpDa3NYRzRnSUNBZ1pHRjBaVlJwYldWSWRXZGxJRDBnWENKRlJVVkZMQ0JNVEV4TUlHUXNJSGw1ZVhrc0lHZzZiVzBnWVZ3aU8xeHVJQ0J6ZDJsMFkyZ2dLR3RsZVNrZ2UxeHVJQ0FnSUdOaGMyVWdjM1J5YVc1bmFXWjVLRVp2Y20xaGRITXVSRUZVUlY5VFNFOVNWQ2s2WEc0Z0lDQWdJQ0J5WlhSMWNtNGdYQ0pOTDJRdmVYbDVlVndpTzF4dUlDQWdJR05oYzJVZ2MzUnlhVzVuYVdaNUtFWnZjbTFoZEhNdVJFRlVSVjlOUlVRcE9seHVJQ0FnSUNBZ2NtVjBkWEp1SUZ3aVRFeE1JR1FzSUhsNWVYbGNJanRjYmlBZ0lDQmpZWE5sSUhOMGNtbHVaMmxtZVNoR2IzSnRZWFJ6TGtSQlZFVmZUVVZFWDFkSlZFaGZWMFZGUzBSQldTazZYRzRnSUNBZ0lDQnlaWFIxY200Z1hDSkZSVVVzSUV4TVRDQmtMQ0I1ZVhsNVhDSTdYRzRnSUNBZ1kyRnpaU0J6ZEhKcGJtZHBabmtvUm05eWJXRjBjeTVFUVZSRlgwWlZURXdwT2x4dUlDQWdJQ0FnY21WMGRYSnVJRndpVEV4TVRDQmtMQ0I1ZVhsNVhDSTdYRzRnSUNBZ1kyRnpaU0J6ZEhKcGJtZHBabmtvUm05eWJXRjBjeTVFUVZSRlgwaFZSMFVwT2x4dUlDQWdJQ0FnY21WMGRYSnVJRndpUlVWRlJTd2dURXhNVENCa0xDQjVlWGw1WENJN1hHNGdJQ0FnWTJGelpTQnpkSEpwYm1kcFpua29SbTl5YldGMGN5NVVTVTFGWDFOSlRWQk1SU2s2WEc0Z0lDQWdJQ0J5WlhSMWNtNGdYQ0pvT20xdElHRmNJanRjYmlBZ0lDQmpZWE5sSUhOMGNtbHVaMmxtZVNoR2IzSnRZWFJ6TGxSSlRVVmZWMGxVU0Y5VFJVTlBUa1JUS1RwY2JpQWdJQ0FnSUhKbGRIVnliaUJjSW1nNmJXMDZjM01nWVZ3aU8xeHVJQ0FnSUdOaGMyVWdjM1J5YVc1bmFXWjVLRVp2Y20xaGRITXVWRWxOUlY5WFNWUklYMU5JVDFKVVgwOUdSbE5GVkNrNlhHNGdJQ0FnSUNCeVpYUjFjbTRnWENKb09tMXRJR0ZjSWp0Y2JpQWdJQ0JqWVhObElITjBjbWx1WjJsbWVTaEdiM0p0WVhSekxsUkpUVVZmVjBsVVNGOU1UMDVIWDA5R1JsTkZWQ2s2WEc0Z0lDQWdJQ0J5WlhSMWNtNGdYQ0pvT20xdElHRmNJanRjYmlBZ0lDQmpZWE5sSUhOMGNtbHVaMmxtZVNoR2IzSnRZWFJ6TGxSSlRVVmZNalJmVTBsTlVFeEZLVHBjYmlBZ0lDQWdJSEpsZEhWeWJpQmNJa2hJT20xdFhDSTdYRzRnSUNBZ1kyRnpaU0J6ZEhKcGJtZHBabmtvUm05eWJXRjBjeTVVU1UxRlh6STBYMWRKVkVoZlUwVkRUMDVFVXlrNlhHNGdJQ0FnSUNCeVpYUjFjbTRnWENKSVNEcHRiVHB6YzF3aU8xeHVJQ0FnSUdOaGMyVWdjM1J5YVc1bmFXWjVLRVp2Y20xaGRITXVWRWxOUlY4eU5GOVhTVlJJWDFOSVQxSlVYMDlHUmxORlZDazZYRzRnSUNBZ0lDQnlaWFIxY200Z1hDSklTRHB0YlZ3aU8xeHVJQ0FnSUdOaGMyVWdjM1J5YVc1bmFXWjVLRVp2Y20xaGRITXVWRWxOUlY4eU5GOVhTVlJJWDB4UFRrZGZUMFpHVTBWVUtUcGNiaUFnSUNBZ0lISmxkSFZ5YmlCY0lraElPbTF0WENJN1hHNGdJQ0FnWTJGelpTQnpkSEpwYm1kcFpua29SbTl5YldGMGN5NUVRVlJGVkVsTlJWOVRTRTlTVkNrNlhHNGdJQ0FnSUNCeVpYUjFjbTRnWENKTkwyUXZlWGw1ZVN3Z2FEcHRiU0JoWENJN1hHNGdJQ0FnWTJGelpTQnpkSEpwYm1kcFpua29SbTl5YldGMGN5NUVRVlJGVkVsTlJWOU5SVVFwT2x4dUlDQWdJQ0FnY21WMGRYSnVJRndpVEV4TUlHUXNJSGw1ZVhrc0lHZzZiVzBnWVZ3aU8xeHVJQ0FnSUdOaGMyVWdjM1J5YVc1bmFXWjVLRVp2Y20xaGRITXVSRUZVUlZSSlRVVmZSbFZNVENrNlhHNGdJQ0FnSUNCeVpYUjFjbTRnWENKTVRFeE1JR1FzSUhsNWVYa3NJR2c2YlcwZ1lWd2lPMXh1SUNBZ0lHTmhjMlVnYzNSeWFXNW5hV1o1S0VadmNtMWhkSE11UkVGVVJWUkpUVVZmU0ZWSFJTazZYRzRnSUNBZ0lDQnlaWFIxY200Z1pHRjBaVlJwYldWSWRXZGxPMXh1SUNBZ0lHTmhjMlVnYzNSeWFXNW5hV1o1S0VadmNtMWhkSE11UkVGVVJWUkpUVVZmVTBoUFVsUmZWMGxVU0Y5VFJVTlBUa1JUS1RwY2JpQWdJQ0FnSUhKbGRIVnliaUJjSWswdlpDOTVlWGw1TENCb09tMXRPbk56SUdGY0lqdGNiaUFnSUNCallYTmxJSE4wY21sdVoybG1lU2hHYjNKdFlYUnpMa1JCVkVWVVNVMUZYMDFGUkY5WFNWUklYMU5GUTA5T1JGTXBPbHh1SUNBZ0lDQWdjbVYwZFhKdUlGd2lURXhNSUdRc0lIbDVlWGtzSUdnNmJXMDZjM01nWVZ3aU8xeHVJQ0FnSUdOaGMyVWdjM1J5YVc1bmFXWjVLRVp2Y20xaGRITXVSRUZVUlZSSlRVVmZUVVZFWDFkSlZFaGZWMFZGUzBSQldTazZYRzRnSUNBZ0lDQnlaWFIxY200Z1hDSkZSVVVzSUdRZ1RFeE1JSGw1ZVhrc0lHZzZiVzBnWVZ3aU8xeHVJQ0FnSUdOaGMyVWdjM1J5YVc1bmFXWjVLRVp2Y20xaGRITXVSRUZVUlZSSlRVVmZSbFZNVEY5WFNWUklYMU5GUTA5T1JGTXBPbHh1SUNBZ0lDQWdjbVYwZFhKdUlGd2lURXhNVENCa0xDQjVlWGw1TENCb09tMXRPbk56SUdGY0lqdGNiaUFnSUNCallYTmxJSE4wY21sdVoybG1lU2hHYjNKdFlYUnpMa1JCVkVWVVNVMUZYMGhWUjBWZlYwbFVTRjlUUlVOUFRrUlRLVHBjYmlBZ0lDQWdJSEpsZEhWeWJpQmNJa1ZGUlVVc0lFeE1URXdnWkN3Z2VYbDVlU3dnYURwdGJUcHpjeUJoWENJN1hHNGdJQ0FnWkdWbVlYVnNkRHBjYmlBZ0lDQWdJSEpsZEhWeWJpQmtZWFJsVkdsdFpVaDFaMlU3WEc0Z0lIMWNibjFjYmlJc0lDSnBiWEJ2Y25RZ0tpQmhjeUJGYm1kc2FYTm9JR1p5YjIwZ1hDSXVMMlZ1WjJ4cGMyZ3Vhbk5jSWp0Y2JtbHRjRzl5ZENBcUlHRnpJRVp2Y20xaGRITWdabkp2YlNCY0lpNHZabTl5YldGMGN5NXFjMXdpTzF4dWFXMXdiM0owSUhzZ2NHRmtVM1JoY25RZ2ZTQm1jbTl0SUZ3aUxpOTFkR2xzTG1welhDSTdYRzVjYm1aMWJtTjBhVzl1SUhOMGNtbHVaMmxtZVZSdmEyVnVjeWh6Y0d4cGRITXNJSFJ2YTJWdVZHOVRkSEpwYm1jcElIdGNiaUFnYkdWMElITWdQU0JjSWx3aU8xeHVJQ0JtYjNJZ0tHTnZibk4wSUhSdmEyVnVJRzltSUhOd2JHbDBjeWtnZTF4dUlDQWdJR2xtSUNoMGIydGxiaTVzYVhSbGNtRnNLU0I3WEc0Z0lDQWdJQ0J6SUNzOUlIUnZhMlZ1TG5aaGJEdGNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnY3lBclBTQjBiMnRsYmxSdlUzUnlhVzVuS0hSdmEyVnVMblpoYkNrN1hHNGdJQ0FnZlZ4dUlDQjlYRzRnSUhKbGRIVnliaUJ6TzF4dWZWeHVYRzVqYjI1emRDQnRZV055YjFSdmEyVnVWRzlHYjNKdFlYUlBjSFJ6SUQwZ2UxeHVJQ0JFT2lCR2IzSnRZWFJ6TGtSQlZFVmZVMGhQVWxRc1hHNGdJRVJFT2lCR2IzSnRZWFJ6TGtSQlZFVmZUVVZFTEZ4dUlDQkVSRVE2SUVadmNtMWhkSE11UkVGVVJWOUdWVXhNTEZ4dUlDQkVSRVJFT2lCR2IzSnRZWFJ6TGtSQlZFVmZTRlZIUlN4Y2JpQWdkRG9nUm05eWJXRjBjeTVVU1UxRlgxTkpUVkJNUlN4Y2JpQWdkSFE2SUVadmNtMWhkSE11VkVsTlJWOVhTVlJJWDFORlEwOU9SRk1zWEc0Z0lIUjBkRG9nUm05eWJXRjBjeTVVU1UxRlgxZEpWRWhmVTBoUFVsUmZUMFpHVTBWVUxGeHVJQ0IwZEhSME9pQkdiM0p0WVhSekxsUkpUVVZmVjBsVVNGOU1UMDVIWDA5R1JsTkZWQ3hjYmlBZ1ZEb2dSbTl5YldGMGN5NVVTVTFGWHpJMFgxTkpUVkJNUlN4Y2JpQWdWRlE2SUVadmNtMWhkSE11VkVsTlJWOHlORjlYU1ZSSVgxTkZRMDlPUkZNc1hHNGdJRlJVVkRvZ1JtOXliV0YwY3k1VVNVMUZYekkwWDFkSlZFaGZVMGhQVWxSZlQwWkdVMFZVTEZ4dUlDQlVWRlJVT2lCR2IzSnRZWFJ6TGxSSlRVVmZNalJmVjBsVVNGOU1UMDVIWDA5R1JsTkZWQ3hjYmlBZ1pqb2dSbTl5YldGMGN5NUVRVlJGVkVsTlJWOVRTRTlTVkN4Y2JpQWdabVk2SUVadmNtMWhkSE11UkVGVVJWUkpUVVZmVFVWRUxGeHVJQ0JtWm1ZNklFWnZjbTFoZEhNdVJFRlVSVlJKVFVWZlJsVk1UQ3hjYmlBZ1ptWm1aam9nUm05eWJXRjBjeTVFUVZSRlZFbE5SVjlJVlVkRkxGeHVJQ0JHT2lCR2IzSnRZWFJ6TGtSQlZFVlVTVTFGWDFOSVQxSlVYMWRKVkVoZlUwVkRUMDVFVXl4Y2JpQWdSa1k2SUVadmNtMWhkSE11UkVGVVJWUkpUVVZmVFVWRVgxZEpWRWhmVTBWRFQwNUVVeXhjYmlBZ1JrWkdPaUJHYjNKdFlYUnpMa1JCVkVWVVNVMUZYMFpWVEV4ZlYwbFVTRjlUUlVOUFRrUlRMRnh1SUNCR1JrWkdPaUJHYjNKdFlYUnpMa1JCVkVWVVNVMUZYMGhWUjBWZlYwbFVTRjlUUlVOUFRrUlRMRnh1ZlR0Y2JseHVMeW9xWEc0Z0tpQkFjSEpwZG1GMFpWeHVJQ292WEc1Y2JtVjRjRzl5ZENCa1pXWmhkV3gwSUdOc1lYTnpJRVp2Y20xaGRIUmxjaUI3WEc0Z0lITjBZWFJwWXlCamNtVmhkR1VvYkc5allXeGxMQ0J2Y0hSeklEMGdlMzBwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdibVYzSUVadmNtMWhkSFJsY2loc2IyTmhiR1VzSUc5d2RITXBPMXh1SUNCOVhHNWNiaUFnYzNSaGRHbGpJSEJoY25ObFJtOXliV0YwS0dadGRDa2dlMXh1SUNBZ0lHeGxkQ0JqZFhKeVpXNTBJRDBnYm5Wc2JDeGNiaUFnSUNBZ0lHTjFjbkpsYm5SR2RXeHNJRDBnWENKY0lpeGNiaUFnSUNBZ0lHSnlZV05yWlhSbFpDQTlJR1poYkhObE8xeHVJQ0FnSUdOdmJuTjBJSE53YkdsMGN5QTlJRnRkTzF4dUlDQWdJR1p2Y2lBb2JHVjBJR2tnUFNBd095QnBJRHdnWm0xMExteGxibWQwYURzZ2FTc3JLU0I3WEc0Z0lDQWdJQ0JqYjI1emRDQmpJRDBnWm0xMExtTm9ZWEpCZENocEtUdGNiaUFnSUNBZ0lHbG1JQ2hqSUQwOVBTQmNJaWRjSWlrZ2UxeHVJQ0FnSUNBZ0lDQnBaaUFvWTNWeWNtVnVkRVoxYkd3dWJHVnVaM1JvSUQ0Z01Da2dlMXh1SUNBZ0lDQWdJQ0FnSUhOd2JHbDBjeTV3ZFhOb0tIc2diR2wwWlhKaGJEb2dZbkpoWTJ0bGRHVmtMQ0IyWVd3NklHTjFjbkpsYm5SR2RXeHNJSDBwTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lHTjFjbkpsYm5RZ1BTQnVkV3hzTzF4dUlDQWdJQ0FnSUNCamRYSnlaVzUwUm5Wc2JDQTlJRndpWENJN1hHNGdJQ0FnSUNBZ0lHSnlZV05yWlhSbFpDQTlJQ0ZpY21GamEyVjBaV1E3WEc0Z0lDQWdJQ0I5SUdWc2MyVWdhV1lnS0dKeVlXTnJaWFJsWkNrZ2UxeHVJQ0FnSUNBZ0lDQmpkWEp5Wlc1MFJuVnNiQ0FyUFNCak8xeHVJQ0FnSUNBZ2ZTQmxiSE5sSUdsbUlDaGpJRDA5UFNCamRYSnlaVzUwS1NCN1hHNGdJQ0FnSUNBZ0lHTjFjbkpsYm5SR2RXeHNJQ3M5SUdNN1hHNGdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNCcFppQW9ZM1Z5Y21WdWRFWjFiR3d1YkdWdVozUm9JRDRnTUNrZ2UxeHVJQ0FnSUNBZ0lDQWdJSE53YkdsMGN5NXdkWE5vS0hzZ2JHbDBaWEpoYkRvZ1ptRnNjMlVzSUhaaGJEb2dZM1Z5Y21WdWRFWjFiR3dnZlNrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdZM1Z5Y21WdWRFWjFiR3dnUFNCak8xeHVJQ0FnSUNBZ0lDQmpkWEp5Wlc1MElEMGdZenRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzVjYmlBZ0lDQnBaaUFvWTNWeWNtVnVkRVoxYkd3dWJHVnVaM1JvSUQ0Z01Da2dlMXh1SUNBZ0lDQWdjM0JzYVhSekxuQjFjMmdvZXlCc2FYUmxjbUZzT2lCaWNtRmphMlYwWldRc0lIWmhiRG9nWTNWeWNtVnVkRVoxYkd3Z2ZTazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2NtVjBkWEp1SUhOd2JHbDBjenRjYmlBZ2ZWeHVYRzRnSUhOMFlYUnBZeUJ0WVdOeWIxUnZhMlZ1Vkc5R2IzSnRZWFJQY0hSektIUnZhMlZ1S1NCN1hHNGdJQ0FnY21WMGRYSnVJRzFoWTNKdlZHOXJaVzVVYjBadmNtMWhkRTl3ZEhOYmRHOXJaVzVkTzF4dUlDQjlYRzVjYmlBZ1kyOXVjM1J5ZFdOMGIzSW9iRzlqWVd4bExDQm1iM0p0WVhSUGNIUnpLU0I3WEc0Z0lDQWdkR2hwY3k1dmNIUnpJRDBnWm05eWJXRjBUM0IwY3p0Y2JpQWdJQ0IwYUdsekxteHZZeUE5SUd4dlkyRnNaVHRjYmlBZ0lDQjBhR2x6TG5ONWMzUmxiVXh2WXlBOUlHNTFiR3c3WEc0Z0lIMWNibHh1SUNCbWIzSnRZWFJYYVhSb1UzbHpkR1Z0UkdWbVlYVnNkQ2hrZEN3Z2IzQjBjeWtnZTF4dUlDQWdJR2xtSUNoMGFHbHpMbk41YzNSbGJVeHZZeUE5UFQwZ2JuVnNiQ2tnZTF4dUlDQWdJQ0FnZEdocGN5NXplWE4wWlcxTWIyTWdQU0IwYUdsekxteHZZeTV5WldSbFptRjFiSFJVYjFONWMzUmxiU2dwTzF4dUlDQWdJSDFjYmlBZ0lDQmpiMjV6ZENCa1ppQTlJSFJvYVhNdWMzbHpkR1Z0VEc5akxtUjBSbTl5YldGMGRHVnlLR1IwTENCN0lDNHVMblJvYVhNdWIzQjBjeXdnTGk0dWIzQjBjeUI5S1R0Y2JpQWdJQ0J5WlhSMWNtNGdaR1l1Wm05eWJXRjBLQ2s3WEc0Z0lIMWNibHh1SUNCbWIzSnRZWFJFWVhSbFZHbHRaU2hrZEN3Z2IzQjBjeUE5SUh0OUtTQjdYRzRnSUNBZ1kyOXVjM1FnWkdZZ1BTQjBhR2x6TG14dll5NWtkRVp2Y20xaGRIUmxjaWhrZEN3Z2V5QXVMaTUwYUdsekxtOXdkSE1zSUM0dUxtOXdkSE1nZlNrN1hHNGdJQ0FnY21WMGRYSnVJR1JtTG1admNtMWhkQ2dwTzF4dUlDQjlYRzVjYmlBZ1ptOXliV0YwUkdGMFpWUnBiV1ZRWVhKMGN5aGtkQ3dnYjNCMGN5QTlJSHQ5S1NCN1hHNGdJQ0FnWTI5dWMzUWdaR1lnUFNCMGFHbHpMbXh2WXk1a2RFWnZjbTFoZEhSbGNpaGtkQ3dnZXlBdUxpNTBhR2x6TG05d2RITXNJQzR1TG05d2RITWdmU2s3WEc0Z0lDQWdjbVYwZFhKdUlHUm1MbVp2Y20xaGRGUnZVR0Z5ZEhNb0tUdGNiaUFnZlZ4dVhHNGdJSEpsYzI5c2RtVmtUM0IwYVc5dWN5aGtkQ3dnYjNCMGN5QTlJSHQ5S1NCN1hHNGdJQ0FnWTI5dWMzUWdaR1lnUFNCMGFHbHpMbXh2WXk1a2RFWnZjbTFoZEhSbGNpaGtkQ3dnZXlBdUxpNTBhR2x6TG05d2RITXNJQzR1TG05d2RITWdmU2s3WEc0Z0lDQWdjbVYwZFhKdUlHUm1MbkpsYzI5c2RtVmtUM0IwYVc5dWN5Z3BPMXh1SUNCOVhHNWNiaUFnYm5WdEtHNHNJSEFnUFNBd0tTQjdYRzRnSUNBZ0x5OGdkMlVnWjJWMElITnZiV1VnY0dWeVppQnZkWFFnYjJZZ1pHOXBibWNnZEdocGN5Qm9aWEpsTENCaGJtNXZlV2x1WjJ4NVhHNGdJQ0FnYVdZZ0tIUm9hWE11YjNCMGN5NW1iM0pqWlZOcGJYQnNaU2tnZTF4dUlDQWdJQ0FnY21WMGRYSnVJSEJoWkZOMFlYSjBLRzRzSUhBcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUdOdmJuTjBJRzl3ZEhNZ1BTQjdJQzR1TG5Sb2FYTXViM0IwY3lCOU8xeHVYRzRnSUNBZ2FXWWdLSEFnUGlBd0tTQjdYRzRnSUNBZ0lDQnZjSFJ6TG5CaFpGUnZJRDBnY0R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1c2IyTXViblZ0WW1WeVJtOXliV0YwZEdWeUtHOXdkSE1wTG1admNtMWhkQ2h1S1R0Y2JpQWdmVnh1WEc0Z0lHWnZjbTFoZEVSaGRHVlVhVzFsUm5KdmJWTjBjbWx1Wnloa2RDd2dabTEwS1NCN1hHNGdJQ0FnWTI5dWMzUWdhMjV2ZDI1RmJtZHNhWE5vSUQwZ2RHaHBjeTVzYjJNdWJHbHpkR2x1WjAxdlpHVW9LU0E5UFQwZ1hDSmxibHdpTEZ4dUlDQWdJQ0FnZFhObFJHRjBaVlJwYldWR2IzSnRZWFIwWlhJZ1BTQjBhR2x6TG14dll5NXZkWFJ3ZFhSRFlXeGxibVJoY2lBbUppQjBhR2x6TG14dll5NXZkWFJ3ZFhSRFlXeGxibVJoY2lBaFBUMGdYQ0puY21WbmIzSjVYQ0lzWEc0Z0lDQWdJQ0J6ZEhKcGJtY2dQU0FvYjNCMGN5d2daWGgwY21GamRDa2dQVDRnZEdocGN5NXNiMk11WlhoMGNtRmpkQ2hrZEN3Z2IzQjBjeXdnWlhoMGNtRmpkQ2tzWEc0Z0lDQWdJQ0JtYjNKdFlYUlBabVp6WlhRZ1BTQW9iM0IwY3lrZ1BUNGdlMXh1SUNBZ0lDQWdJQ0JwWmlBb1pIUXVhWE5QWm1aelpYUkdhWGhsWkNBbUppQmtkQzV2Wm1aelpYUWdQVDA5SURBZ0ppWWdiM0IwY3k1aGJHeHZkMW9wSUh0Y2JpQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z1hDSmFYQ0k3WEc0Z0lDQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ0lDQnlaWFIxY200Z1pIUXVhWE5XWVd4cFpDQS9JR1IwTG5wdmJtVXVabTl5YldGMFQyWm1jMlYwS0dSMExuUnpMQ0J2Y0hSekxtWnZjbTFoZENrZ09pQmNJbHdpTzF4dUlDQWdJQ0FnZlN4Y2JpQWdJQ0FnSUcxbGNtbGthV1Z0SUQwZ0tDa2dQVDVjYmlBZ0lDQWdJQ0FnYTI1dmQyNUZibWRzYVhOb1hHNGdJQ0FnSUNBZ0lDQWdQeUJGYm1kc2FYTm9MbTFsY21sa2FXVnRSbTl5UkdGMFpWUnBiV1VvWkhRcFhHNGdJQ0FnSUNBZ0lDQWdPaUJ6ZEhKcGJtY29leUJvYjNWeU9pQmNJbTUxYldWeWFXTmNJaXdnYUc5MWNrTjVZMnhsT2lCY0ltZ3hNbHdpSUgwc0lGd2laR0Y1Y0dWeWFXOWtYQ0lwTEZ4dUlDQWdJQ0FnYlc5dWRHZ2dQU0FvYkdWdVozUm9MQ0J6ZEdGdVpHRnNiMjVsS1NBOVBseHVJQ0FnSUNBZ0lDQnJibTkzYmtWdVoyeHBjMmhjYmlBZ0lDQWdJQ0FnSUNBL0lFVnVaMnhwYzJndWJXOXVkR2hHYjNKRVlYUmxWR2x0WlNoa2RDd2diR1Z1WjNSb0tWeHVJQ0FnSUNBZ0lDQWdJRG9nYzNSeWFXNW5LSE4wWVc1a1lXeHZibVVnUHlCN0lHMXZiblJvT2lCc1pXNW5kR2dnZlNBNklIc2diVzl1ZEdnNklHeGxibWQwYUN3Z1pHRjVPaUJjSW01MWJXVnlhV05jSWlCOUxDQmNJbTF2Ym5Sb1hDSXBMRnh1SUNBZ0lDQWdkMlZsYTJSaGVTQTlJQ2hzWlc1bmRHZ3NJSE4wWVc1a1lXeHZibVVwSUQwK1hHNGdJQ0FnSUNBZ0lHdHViM2R1Ulc1bmJHbHphRnh1SUNBZ0lDQWdJQ0FnSUQ4Z1JXNW5iR2x6YUM1M1pXVnJaR0Y1Um05eVJHRjBaVlJwYldVb1pIUXNJR3hsYm1kMGFDbGNiaUFnSUNBZ0lDQWdJQ0E2SUhOMGNtbHVaeWhjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdjM1JoYm1SaGJHOXVaU0EvSUhzZ2QyVmxhMlJoZVRvZ2JHVnVaM1JvSUgwZ09pQjdJSGRsWld0a1lYazZJR3hsYm1kMGFDd2diVzl1ZEdnNklGd2liRzl1WjF3aUxDQmtZWGs2SUZ3aWJuVnRaWEpwWTF3aUlIMHNYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lGd2lkMlZsYTJSaGVWd2lYRzRnSUNBZ0lDQWdJQ0FnSUNBcExGeHVJQ0FnSUNBZ2JXRjVZbVZOWVdOeWJ5QTlJQ2gwYjJ0bGJpa2dQVDRnZTF4dUlDQWdJQ0FnSUNCamIyNXpkQ0JtYjNKdFlYUlBjSFJ6SUQwZ1JtOXliV0YwZEdWeUxtMWhZM0p2Vkc5clpXNVViMFp2Y20xaGRFOXdkSE1vZEc5clpXNHBPMXh1SUNBZ0lDQWdJQ0JwWmlBb1ptOXliV0YwVDNCMGN5a2dlMXh1SUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUIwYUdsekxtWnZjbTFoZEZkcGRHaFRlWE4wWlcxRVpXWmhkV3gwS0dSMExDQm1iM0p0WVhSUGNIUnpLVHRjYmlBZ0lDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnZEc5clpXNDdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJSDBzWEc0Z0lDQWdJQ0JsY21FZ1BTQW9iR1Z1WjNSb0tTQTlQbHh1SUNBZ0lDQWdJQ0JyYm05M2JrVnVaMnhwYzJnZ1B5QkZibWRzYVhOb0xtVnlZVVp2Y2tSaGRHVlVhVzFsS0dSMExDQnNaVzVuZEdncElEb2djM1J5YVc1bktIc2daWEpoT2lCc1pXNW5kR2dnZlN3Z1hDSmxjbUZjSWlrc1hHNGdJQ0FnSUNCMGIydGxibFJ2VTNSeWFXNW5JRDBnS0hSdmEyVnVLU0E5UGlCN1hHNGdJQ0FnSUNBZ0lDOHZJRmRvWlhKbElIQnZjM05wWW14bE9pQm9kSFJ3T2k4dlkyeGtjaTUxYm1samIyUmxMbTl5Wnk5MGNtRnVjMnhoZEdsdmJpOWtZWFJsTFhScGJXVXRNUzlrWVhSbExYUnBiV1VqVkU5RExWTjBZVzVrWVd4dmJtVXRkbk11TFVadmNtMWhkQzFUZEhsc1pYTmNiaUFnSUNBZ0lDQWdjM2RwZEdOb0lDaDBiMnRsYmlrZ2UxeHVJQ0FnSUNBZ0lDQWdJQzh2SUcxelhHNGdJQ0FnSUNBZ0lDQWdZMkZ6WlNCY0lsTmNJanBjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCMGFHbHpMbTUxYlNoa2RDNXRhV3hzYVhObFkyOXVaQ2s3WEc0Z0lDQWdJQ0FnSUNBZ1kyRnpaU0JjSW5WY0lqcGNiaUFnSUNBZ0lDQWdJQ0F2THlCbVlXeHNjeUIwYUhKdmRXZG9YRzRnSUNBZ0lDQWdJQ0FnWTJGelpTQmNJbE5UVTF3aU9seHVJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJSFJvYVhNdWJuVnRLR1IwTG0xcGJHeHBjMlZqYjI1a0xDQXpLVHRjYmlBZ0lDQWdJQ0FnSUNBdkx5QnpaV052Ym1SelhHNGdJQ0FnSUNBZ0lDQWdZMkZ6WlNCY0luTmNJanBjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCMGFHbHpMbTUxYlNoa2RDNXpaV052Ym1RcE8xeHVJQ0FnSUNBZ0lDQWdJR05oYzJVZ1hDSnpjMXdpT2x4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlIUm9hWE11Ym5WdEtHUjBMbk5sWTI5dVpDd2dNaWs3WEc0Z0lDQWdJQ0FnSUNBZ0x5OGdabkpoWTNScGIyNWhiQ0J6WldOdmJtUnpYRzRnSUNBZ0lDQWdJQ0FnWTJGelpTQmNJblYxWENJNlhHNGdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdkR2hwY3k1dWRXMG9UV0YwYUM1bWJHOXZjaWhrZEM1dGFXeHNhWE5sWTI5dVpDQXZJREV3S1N3Z01pazdYRzRnSUNBZ0lDQWdJQ0FnWTJGelpTQmNJblYxZFZ3aU9seHVJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJSFJvYVhNdWJuVnRLRTFoZEdndVpteHZiM0lvWkhRdWJXbHNiR2x6WldOdmJtUWdMeUF4TURBcEtUdGNiaUFnSUNBZ0lDQWdJQ0F2THlCdGFXNTFkR1Z6WEc0Z0lDQWdJQ0FnSUNBZ1kyRnpaU0JjSW0xY0lqcGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUIwYUdsekxtNTFiU2hrZEM1dGFXNTFkR1VwTzF4dUlDQWdJQ0FnSUNBZ0lHTmhjMlVnWENKdGJWd2lPbHh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhSb2FYTXViblZ0S0dSMExtMXBiblYwWlN3Z01pazdYRzRnSUNBZ0lDQWdJQ0FnTHk4Z2FHOTFjbk5jYmlBZ0lDQWdJQ0FnSUNCallYTmxJRndpYUZ3aU9seHVJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJSFJvYVhNdWJuVnRLR1IwTG1odmRYSWdKU0F4TWlBOVBUMGdNQ0EvSURFeUlEb2daSFF1YUc5MWNpQWxJREV5S1R0Y2JpQWdJQ0FnSUNBZ0lDQmpZWE5sSUZ3aWFHaGNJanBjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCMGFHbHpMbTUxYlNoa2RDNW9iM1Z5SUNVZ01USWdQVDA5SURBZ1B5QXhNaUE2SUdSMExtaHZkWElnSlNBeE1pd2dNaWs3WEc0Z0lDQWdJQ0FnSUNBZ1kyRnpaU0JjSWtoY0lqcGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUIwYUdsekxtNTFiU2hrZEM1b2IzVnlLVHRjYmlBZ0lDQWdJQ0FnSUNCallYTmxJRndpU0VoY0lqcGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUIwYUdsekxtNTFiU2hrZEM1b2IzVnlMQ0F5S1R0Y2JpQWdJQ0FnSUNBZ0lDQXZMeUJ2Wm1aelpYUmNiaUFnSUNBZ0lDQWdJQ0JqWVhObElGd2lXbHdpT2x4dUlDQWdJQ0FnSUNBZ0lDQWdMeThnYkdsclpTQXJObHh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUdadmNtMWhkRTltWm5ObGRDaDdJR1p2Y20xaGREb2dYQ0p1WVhKeWIzZGNJaXdnWVd4c2IzZGFPaUIwYUdsekxtOXdkSE11WVd4c2IzZGFJSDBwTzF4dUlDQWdJQ0FnSUNBZ0lHTmhjMlVnWENKYVdsd2lPbHh1SUNBZ0lDQWdJQ0FnSUNBZ0x5OGdiR2xyWlNBck1EWTZNREJjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCbWIzSnRZWFJQWm1aelpYUW9leUJtYjNKdFlYUTZJRndpYzJodmNuUmNJaXdnWVd4c2IzZGFPaUIwYUdsekxtOXdkSE11WVd4c2IzZGFJSDBwTzF4dUlDQWdJQ0FnSUNBZ0lHTmhjMlVnWENKYVdscGNJanBjYmlBZ0lDQWdJQ0FnSUNBZ0lDOHZJR3hwYTJVZ0t6QTJNREJjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCbWIzSnRZWFJQWm1aelpYUW9leUJtYjNKdFlYUTZJRndpZEdWamFHbGxYQ0lzSUdGc2JHOTNXam9nZEdocGN5NXZjSFJ6TG1Gc2JHOTNXaUI5S1R0Y2JpQWdJQ0FnSUNBZ0lDQmpZWE5sSUZ3aVdscGFXbHdpT2x4dUlDQWdJQ0FnSUNBZ0lDQWdMeThnYkdsclpTQkZVMVJjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCa2RDNTZiMjVsTG05bVpuTmxkRTVoYldVb1pIUXVkSE1zSUhzZ1ptOXliV0YwT2lCY0luTm9iM0owWENJc0lHeHZZMkZzWlRvZ2RHaHBjeTVzYjJNdWJHOWpZV3hsSUgwcE8xeHVJQ0FnSUNBZ0lDQWdJR05oYzJVZ1hDSmFXbHBhV2x3aU9seHVJQ0FnSUNBZ0lDQWdJQ0FnTHk4Z2JHbHJaU0JGWVhOMFpYSnVJRk4wWVc1a1lYSmtJRlJwYldWY2JpQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQmtkQzU2YjI1bExtOW1abk5sZEU1aGJXVW9aSFF1ZEhNc0lIc2dabTl5YldGME9pQmNJbXh2Ym1kY0lpd2diRzlqWVd4bE9pQjBhR2x6TG14dll5NXNiMk5oYkdVZ2ZTazdYRzRnSUNBZ0lDQWdJQ0FnTHk4Z2VtOXVaVnh1SUNBZ0lDQWdJQ0FnSUdOaGMyVWdYQ0o2WENJNlhHNGdJQ0FnSUNBZ0lDQWdJQ0F2THlCc2FXdGxJRUZ0WlhKcFkyRXZUbVYzWDFsdmNtdGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJrZEM1NmIyNWxUbUZ0WlR0Y2JpQWdJQ0FnSUNBZ0lDQXZMeUJ0WlhKcFpHbGxiWE5jYmlBZ0lDQWdJQ0FnSUNCallYTmxJRndpWVZ3aU9seHVJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJRzFsY21sa2FXVnRLQ2s3WEc0Z0lDQWdJQ0FnSUNBZ0x5OGdaR0YwWlhOY2JpQWdJQ0FnSUNBZ0lDQmpZWE5sSUZ3aVpGd2lPbHh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhWelpVUmhkR1ZVYVcxbFJtOXliV0YwZEdWeUlEOGdjM1J5YVc1bktIc2daR0Y1T2lCY0ltNTFiV1Z5YVdOY0lpQjlMQ0JjSW1SaGVWd2lLU0E2SUhSb2FYTXViblZ0S0dSMExtUmhlU2s3WEc0Z0lDQWdJQ0FnSUNBZ1kyRnpaU0JjSW1Sa1hDSTZYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnZFhObFJHRjBaVlJwYldWR2IzSnRZWFIwWlhJZ1B5QnpkSEpwYm1jb2V5QmtZWGs2SUZ3aU1pMWthV2RwZEZ3aUlIMHNJRndpWkdGNVhDSXBJRG9nZEdocGN5NXVkVzBvWkhRdVpHRjVMQ0F5S1R0Y2JpQWdJQ0FnSUNBZ0lDQXZMeUIzWldWclpHRjVjeUF0SUhOMFlXNWtZV3h2Ym1WY2JpQWdJQ0FnSUNBZ0lDQmpZWE5sSUZ3aVkxd2lPbHh1SUNBZ0lDQWdJQ0FnSUNBZ0x5OGdiR2xyWlNBeFhHNGdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdkR2hwY3k1dWRXMG9aSFF1ZDJWbGEyUmhlU2s3WEc0Z0lDQWdJQ0FnSUNBZ1kyRnpaU0JjSW1Oalkxd2lPbHh1SUNBZ0lDQWdJQ0FnSUNBZ0x5OGdiR2xyWlNBblZIVmxjeWRjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCM1pXVnJaR0Y1S0Z3aWMyaHZjblJjSWl3Z2RISjFaU2s3WEc0Z0lDQWdJQ0FnSUNBZ1kyRnpaU0JjSW1OalkyTmNJanBjYmlBZ0lDQWdJQ0FnSUNBZ0lDOHZJR3hwYTJVZ0oxUjFaWE5rWVhrblhHNGdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdkMlZsYTJSaGVTaGNJbXh2Ym1kY0lpd2dkSEoxWlNrN1hHNGdJQ0FnSUNBZ0lDQWdZMkZ6WlNCY0ltTmpZMk5qWENJNlhHNGdJQ0FnSUNBZ0lDQWdJQ0F2THlCc2FXdGxJQ2RVSjF4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlIZGxaV3RrWVhrb1hDSnVZWEp5YjNkY0lpd2dkSEoxWlNrN1hHNGdJQ0FnSUNBZ0lDQWdMeThnZDJWbGEyUmhlWE1nTFNCbWIzSnRZWFJjYmlBZ0lDQWdJQ0FnSUNCallYTmxJRndpUlZ3aU9seHVJQ0FnSUNBZ0lDQWdJQ0FnTHk4Z2JHbHJaU0F4WEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2RHaHBjeTV1ZFcwb1pIUXVkMlZsYTJSaGVTazdYRzRnSUNBZ0lDQWdJQ0FnWTJGelpTQmNJa1ZGUlZ3aU9seHVJQ0FnSUNBZ0lDQWdJQ0FnTHk4Z2JHbHJaU0FuVkhWbGN5ZGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUIzWldWclpHRjVLRndpYzJodmNuUmNJaXdnWm1Gc2MyVXBPMXh1SUNBZ0lDQWdJQ0FnSUdOaGMyVWdYQ0pGUlVWRlhDSTZYRzRnSUNBZ0lDQWdJQ0FnSUNBdkx5QnNhV3RsSUNkVWRXVnpaR0Y1SjF4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlIZGxaV3RrWVhrb1hDSnNiMjVuWENJc0lHWmhiSE5sS1R0Y2JpQWdJQ0FnSUNBZ0lDQmpZWE5sSUZ3aVJVVkZSVVZjSWpwY2JpQWdJQ0FnSUNBZ0lDQWdJQzh2SUd4cGEyVWdKMVFuWEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2QyVmxhMlJoZVNoY0ltNWhjbkp2ZDF3aUxDQm1ZV3h6WlNrN1hHNGdJQ0FnSUNBZ0lDQWdMeThnYlc5dWRHaHpJQzBnYzNSaGJtUmhiRzl1WlZ4dUlDQWdJQ0FnSUNBZ0lHTmhjMlVnWENKTVhDSTZYRzRnSUNBZ0lDQWdJQ0FnSUNBdkx5QnNhV3RsSURGY2JpQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQjFjMlZFWVhSbFZHbHRaVVp2Y20xaGRIUmxjbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQS9JSE4wY21sdVp5aDdJRzF2Ym5Sb09pQmNJbTUxYldWeWFXTmNJaXdnWkdGNU9pQmNJbTUxYldWeWFXTmNJaUI5TENCY0ltMXZiblJvWENJcFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSURvZ2RHaHBjeTV1ZFcwb1pIUXViVzl1ZEdncE8xeHVJQ0FnSUNBZ0lDQWdJR05oYzJVZ1hDSk1URndpT2x4dUlDQWdJQ0FnSUNBZ0lDQWdMeThnYkdsclpTQXdNU3dnWkc5bGMyNG5kQ0J6WldWdElIUnZJSGR2Y210Y2JpQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQjFjMlZFWVhSbFZHbHRaVVp2Y20xaGRIUmxjbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQS9JSE4wY21sdVp5aDdJRzF2Ym5Sb09pQmNJakl0WkdsbmFYUmNJaXdnWkdGNU9pQmNJbTUxYldWeWFXTmNJaUI5TENCY0ltMXZiblJvWENJcFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSURvZ2RHaHBjeTV1ZFcwb1pIUXViVzl1ZEdnc0lESXBPMXh1SUNBZ0lDQWdJQ0FnSUdOaGMyVWdYQ0pNVEV4Y0lqcGNiaUFnSUNBZ0lDQWdJQ0FnSUM4dklHeHBhMlVnU21GdVhHNGdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdiVzl1ZEdnb1hDSnphRzl5ZEZ3aUxDQjBjblZsS1R0Y2JpQWdJQ0FnSUNBZ0lDQmpZWE5sSUZ3aVRFeE1URndpT2x4dUlDQWdJQ0FnSUNBZ0lDQWdMeThnYkdsclpTQktZVzUxWVhKNVhHNGdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdiVzl1ZEdnb1hDSnNiMjVuWENJc0lIUnlkV1VwTzF4dUlDQWdJQ0FnSUNBZ0lHTmhjMlVnWENKTVRFeE1URndpT2x4dUlDQWdJQ0FnSUNBZ0lDQWdMeThnYkdsclpTQktYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnYlc5dWRHZ29YQ0p1WVhKeWIzZGNJaXdnZEhKMVpTazdYRzRnSUNBZ0lDQWdJQ0FnTHk4Z2JXOXVkR2h6SUMwZ1ptOXliV0YwWEc0Z0lDQWdJQ0FnSUNBZ1kyRnpaU0JjSWsxY0lqcGNiaUFnSUNBZ0lDQWdJQ0FnSUM4dklHeHBhMlVnTVZ4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlIVnpaVVJoZEdWVWFXMWxSbTl5YldGMGRHVnlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lEOGdjM1J5YVc1bktIc2diVzl1ZEdnNklGd2liblZ0WlhKcFkxd2lJSDBzSUZ3aWJXOXVkR2hjSWlsY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnT2lCMGFHbHpMbTUxYlNoa2RDNXRiMjUwYUNrN1hHNGdJQ0FnSUNBZ0lDQWdZMkZ6WlNCY0lrMU5YQ0k2WEc0Z0lDQWdJQ0FnSUNBZ0lDQXZMeUJzYVd0bElEQXhYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnZFhObFJHRjBaVlJwYldWR2IzSnRZWFIwWlhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnUHlCemRISnBibWNvZXlCdGIyNTBhRG9nWENJeUxXUnBaMmwwWENJZ2ZTd2dYQ0p0YjI1MGFGd2lLVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQTZJSFJvYVhNdWJuVnRLR1IwTG0xdmJuUm9MQ0F5S1R0Y2JpQWdJQ0FnSUNBZ0lDQmpZWE5sSUZ3aVRVMU5YQ0k2WEc0Z0lDQWdJQ0FnSUNBZ0lDQXZMeUJzYVd0bElFcGhibHh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUcxdmJuUm9LRndpYzJodmNuUmNJaXdnWm1Gc2MyVXBPMXh1SUNBZ0lDQWdJQ0FnSUdOaGMyVWdYQ0pOVFUxTlhDSTZYRzRnSUNBZ0lDQWdJQ0FnSUNBdkx5QnNhV3RsSUVwaGJuVmhjbmxjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCdGIyNTBhQ2hjSW14dmJtZGNJaXdnWm1Gc2MyVXBPMXh1SUNBZ0lDQWdJQ0FnSUdOaGMyVWdYQ0pOVFUxTlRWd2lPbHh1SUNBZ0lDQWdJQ0FnSUNBZ0x5OGdiR2xyWlNCS1hHNGdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdiVzl1ZEdnb1hDSnVZWEp5YjNkY0lpd2dabUZzYzJVcE8xeHVJQ0FnSUNBZ0lDQWdJQzh2SUhsbFlYSnpYRzRnSUNBZ0lDQWdJQ0FnWTJGelpTQmNJbmxjSWpwY2JpQWdJQ0FnSUNBZ0lDQWdJQzh2SUd4cGEyVWdNakF4TkZ4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlIVnpaVVJoZEdWVWFXMWxSbTl5YldGMGRHVnlJRDhnYzNSeWFXNW5LSHNnZVdWaGNqb2dYQ0p1ZFcxbGNtbGpYQ0lnZlN3Z1hDSjVaV0Z5WENJcElEb2dkR2hwY3k1dWRXMG9aSFF1ZVdWaGNpazdYRzRnSUNBZ0lDQWdJQ0FnWTJGelpTQmNJbmw1WENJNlhHNGdJQ0FnSUNBZ0lDQWdJQ0F2THlCc2FXdGxJREUwWEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2RYTmxSR0YwWlZScGJXVkdiM0p0WVhSMFpYSmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ1B5QnpkSEpwYm1jb2V5QjVaV0Z5T2lCY0lqSXRaR2xuYVhSY0lpQjlMQ0JjSW5sbFlYSmNJaWxjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdPaUIwYUdsekxtNTFiU2hrZEM1NVpXRnlMblJ2VTNSeWFXNW5LQ2t1YzJ4cFkyVW9MVElwTENBeUtUdGNiaUFnSUNBZ0lDQWdJQ0JqWVhObElGd2llWGw1ZVZ3aU9seHVJQ0FnSUNBZ0lDQWdJQ0FnTHk4Z2JHbHJaU0F3TURFeVhHNGdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdkWE5sUkdGMFpWUnBiV1ZHYjNKdFlYUjBaWEpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdQeUJ6ZEhKcGJtY29leUI1WldGeU9pQmNJbTUxYldWeWFXTmNJaUI5TENCY0lubGxZWEpjSWlsY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnT2lCMGFHbHpMbTUxYlNoa2RDNTVaV0Z5TENBMEtUdGNiaUFnSUNBZ0lDQWdJQ0JqWVhObElGd2llWGw1ZVhsNVhDSTZYRzRnSUNBZ0lDQWdJQ0FnSUNBdkx5QnNhV3RsSURBd01EQXhNbHh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhWelpVUmhkR1ZVYVcxbFJtOXliV0YwZEdWeVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUQ4Z2MzUnlhVzVuS0hzZ2VXVmhjam9nWENKdWRXMWxjbWxqWENJZ2ZTd2dYQ0o1WldGeVhDSXBYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lEb2dkR2hwY3k1dWRXMG9aSFF1ZVdWaGNpd2dOaWs3WEc0Z0lDQWdJQ0FnSUNBZ0x5OGdaWEpoYzF4dUlDQWdJQ0FnSUNBZ0lHTmhjMlVnWENKSFhDSTZYRzRnSUNBZ0lDQWdJQ0FnSUNBdkx5QnNhV3RsSUVGRVhHNGdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdaWEpoS0Z3aWMyaHZjblJjSWlrN1hHNGdJQ0FnSUNBZ0lDQWdZMkZ6WlNCY0lrZEhYQ0k2WEc0Z0lDQWdJQ0FnSUNBZ0lDQXZMeUJzYVd0bElFRnVibThnUkc5dGFXNXBYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnWlhKaEtGd2liRzl1WjF3aUtUdGNiaUFnSUNBZ0lDQWdJQ0JqWVhObElGd2lSMGRIUjBkY0lqcGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJsY21Fb1hDSnVZWEp5YjNkY0lpazdYRzRnSUNBZ0lDQWdJQ0FnWTJGelpTQmNJbXRyWENJNlhHNGdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdkR2hwY3k1dWRXMG9aSFF1ZDJWbGExbGxZWEl1ZEc5VGRISnBibWNvS1M1emJHbGpaU2d0TWlrc0lESXBPMXh1SUNBZ0lDQWdJQ0FnSUdOaGMyVWdYQ0pyYTJ0clhDSTZYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnZEdocGN5NXVkVzBvWkhRdWQyVmxhMWxsWVhJc0lEUXBPMXh1SUNBZ0lDQWdJQ0FnSUdOaGMyVWdYQ0pYWENJNlhHNGdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdkR2hwY3k1dWRXMG9aSFF1ZDJWbGEwNTFiV0psY2lrN1hHNGdJQ0FnSUNBZ0lDQWdZMkZ6WlNCY0lsZFhYQ0k2WEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2RHaHBjeTV1ZFcwb1pIUXVkMlZsYTA1MWJXSmxjaXdnTWlrN1hHNGdJQ0FnSUNBZ0lDQWdZMkZ6WlNCY0ltOWNJanBjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCMGFHbHpMbTUxYlNoa2RDNXZjbVJwYm1Gc0tUdGNiaUFnSUNBZ0lDQWdJQ0JqWVhObElGd2liMjl2WENJNlhHNGdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdkR2hwY3k1dWRXMG9aSFF1YjNKa2FXNWhiQ3dnTXlrN1hHNGdJQ0FnSUNBZ0lDQWdZMkZ6WlNCY0luRmNJanBjYmlBZ0lDQWdJQ0FnSUNBZ0lDOHZJR3hwYTJVZ01WeHVJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJSFJvYVhNdWJuVnRLR1IwTG5GMVlYSjBaWElwTzF4dUlDQWdJQ0FnSUNBZ0lHTmhjMlVnWENKeGNWd2lPbHh1SUNBZ0lDQWdJQ0FnSUNBZ0x5OGdiR2xyWlNBd01WeHVJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJSFJvYVhNdWJuVnRLR1IwTG5GMVlYSjBaWElzSURJcE8xeHVJQ0FnSUNBZ0lDQWdJR05oYzJVZ1hDSllYQ0k2WEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2RHaHBjeTV1ZFcwb1RXRjBhQzVtYkc5dmNpaGtkQzUwY3lBdklERXdNREFwS1R0Y2JpQWdJQ0FnSUNBZ0lDQmpZWE5sSUZ3aWVGd2lPbHh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhSb2FYTXViblZ0S0dSMExuUnpLVHRjYmlBZ0lDQWdJQ0FnSUNCa1pXWmhkV3gwT2x4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlHMWhlV0psVFdGamNtOG9kRzlyWlc0cE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQjlPMXh1WEc0Z0lDQWdjbVYwZFhKdUlITjBjbWx1WjJsbWVWUnZhMlZ1Y3loR2IzSnRZWFIwWlhJdWNHRnljMlZHYjNKdFlYUW9abTEwS1N3Z2RHOXJaVzVVYjFOMGNtbHVaeWs3WEc0Z0lIMWNibHh1SUNCbWIzSnRZWFJFZFhKaGRHbHZia1p5YjIxVGRISnBibWNvWkhWeUxDQm1iWFFwSUh0Y2JpQWdJQ0JqYjI1emRDQjBiMnRsYmxSdlJtbGxiR1FnUFNBb2RHOXJaVzRwSUQwK0lIdGNiaUFnSUNBZ0lDQWdjM2RwZEdOb0lDaDBiMnRsYmxzd1hTa2dlMXh1SUNBZ0lDQWdJQ0FnSUdOaGMyVWdYQ0pUWENJNlhHNGdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdYQ0p0YVd4c2FYTmxZMjl1WkZ3aU8xeHVJQ0FnSUNBZ0lDQWdJR05oYzJVZ1hDSnpYQ0k2WEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z1hDSnpaV052Ym1SY0lqdGNiaUFnSUNBZ0lDQWdJQ0JqWVhObElGd2liVndpT2x4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlGd2liV2x1ZFhSbFhDSTdYRzRnSUNBZ0lDQWdJQ0FnWTJGelpTQmNJbWhjSWpwY2JpQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQmNJbWh2ZFhKY0lqdGNiaUFnSUNBZ0lDQWdJQ0JqWVhObElGd2laRndpT2x4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlGd2laR0Y1WENJN1hHNGdJQ0FnSUNBZ0lDQWdZMkZ6WlNCY0luZGNJanBjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCY0luZGxaV3RjSWp0Y2JpQWdJQ0FnSUNBZ0lDQmpZWE5sSUZ3aVRWd2lPbHh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUZ3aWJXOXVkR2hjSWp0Y2JpQWdJQ0FnSUNBZ0lDQmpZWE5sSUZ3aWVWd2lPbHh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUZ3aWVXVmhjbHdpTzF4dUlDQWdJQ0FnSUNBZ0lHUmxabUYxYkhRNlhHNGdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdiblZzYkR0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZTeGNiaUFnSUNBZ0lIUnZhMlZ1Vkc5VGRISnBibWNnUFNBb2JHbHNaSFZ5S1NBOVBpQW9kRzlyWlc0cElEMCtJSHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdiV0Z3Y0dWa0lEMGdkRzlyWlc1VWIwWnBaV3hrS0hSdmEyVnVLVHRjYmlBZ0lDQWdJQ0FnYVdZZ0tHMWhjSEJsWkNrZ2UxeHVJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQjBhR2x6TG01MWJTaHNhV3hrZFhJdVoyVjBLRzFoY0hCbFpDa3NJSFJ2YTJWdUxteGxibWQwYUNrN1hHNGdJQ0FnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlIUnZhMlZ1TzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNCOUxGeHVJQ0FnSUNBZ2RHOXJaVzV6SUQwZ1JtOXliV0YwZEdWeUxuQmhjbk5sUm05eWJXRjBLR1p0ZENrc1hHNGdJQ0FnSUNCeVpXRnNWRzlyWlc1eklEMGdkRzlyWlc1ekxuSmxaSFZqWlNoY2JpQWdJQ0FnSUNBZ0tHWnZkVzVrTENCN0lHeHBkR1Z5WVd3c0lIWmhiQ0I5S1NBOVBpQW9iR2wwWlhKaGJDQS9JR1p2ZFc1a0lEb2dabTkxYm1RdVkyOXVZMkYwS0haaGJDa3BMRnh1SUNBZ0lDQWdJQ0JiWFZ4dUlDQWdJQ0FnS1N4Y2JpQWdJQ0FnSUdOdmJHeGhjSE5sWkNBOUlHUjFjaTV6YUdsbWRGUnZLQzR1TG5KbFlXeFViMnRsYm5NdWJXRndLSFJ2YTJWdVZHOUdhV1ZzWkNrdVptbHNkR1Z5S0NoMEtTQTlQaUIwS1NrN1hHNGdJQ0FnY21WMGRYSnVJSE4wY21sdVoybG1lVlJ2YTJWdWN5aDBiMnRsYm5Nc0lIUnZhMlZ1Vkc5VGRISnBibWNvWTI5c2JHRndjMlZrS1NrN1hHNGdJSDFjYm4xY2JpSXNJQ0psZUhCdmNuUWdaR1ZtWVhWc2RDQmpiR0Z6Y3lCSmJuWmhiR2xrSUh0Y2JpQWdZMjl1YzNSeWRXTjBiM0lvY21WaGMyOXVMQ0JsZUhCc1lXNWhkR2x2YmlrZ2UxeHVJQ0FnSUhSb2FYTXVjbVZoYzI5dUlEMGdjbVZoYzI5dU8xeHVJQ0FnSUhSb2FYTXVaWGh3YkdGdVlYUnBiMjRnUFNCbGVIQnNZVzVoZEdsdmJqdGNiaUFnZlZ4dVhHNGdJSFJ2VFdWemMyRm5aU2dwSUh0Y2JpQWdJQ0JwWmlBb2RHaHBjeTVsZUhCc1lXNWhkR2x2YmlrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUdBa2UzUm9hWE11Y21WaGMyOXVmVG9nSkh0MGFHbHpMbVY0Y0d4aGJtRjBhVzl1ZldBN1hHNGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJSEpsZEhWeWJpQjBhR2x6TG5KbFlYTnZianRjYmlBZ0lDQjlYRzRnSUgxY2JuMWNiaUlzSUNKcGJYQnZjblFnZXlCYWIyNWxTWE5CWW5OMGNtRmpkRVZ5Y205eUlIMGdabkp2YlNCY0lpNHZaWEp5YjNKekxtcHpYQ0k3WEc1Y2JpOHFLbHh1SUNvZ1FHbHVkR1Z5Wm1GalpWeHVJQ292WEc1bGVIQnZjblFnWkdWbVlYVnNkQ0JqYkdGemN5QmFiMjVsSUh0Y2JpQWdMeW9xWEc0Z0lDQXFJRlJvWlNCMGVYQmxJRzltSUhwdmJtVmNiaUFnSUNvZ1FHRmljM1J5WVdOMFhHNGdJQ0FxSUVCMGVYQmxJSHR6ZEhKcGJtZDlYRzRnSUNBcUwxeHVJQ0JuWlhRZ2RIbHdaU2dwSUh0Y2JpQWdJQ0IwYUhKdmR5QnVaWGNnV205dVpVbHpRV0p6ZEhKaFkzUkZjbkp2Y2lncE8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRlJvWlNCdVlXMWxJRzltSUhSb2FYTWdlbTl1WlM1Y2JpQWdJQ29nUUdGaWMzUnlZV04wWEc0Z0lDQXFJRUIwZVhCbElIdHpkSEpwYm1kOVhHNGdJQ0FxTDF4dUlDQm5aWFFnYm1GdFpTZ3BJSHRjYmlBZ0lDQjBhSEp2ZHlCdVpYY2dXbTl1WlVselFXSnpkSEpoWTNSRmNuSnZjaWdwTzF4dUlDQjlYRzVjYmlBZ1oyVjBJR2xoYm1GT1lXMWxLQ2tnZTF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TG01aGJXVTdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nVW1WMGRYSnVjeUIzYUdWMGFHVnlJSFJvWlNCdlptWnpaWFFnYVhNZ2EyNXZkMjRnZEc4Z1ltVWdabWw0WldRZ1ptOXlJSFJvWlNCM2FHOXNaU0I1WldGeUxseHVJQ0FnS2lCQVlXSnpkSEpoWTNSY2JpQWdJQ29nUUhSNWNHVWdlMkp2YjJ4bFlXNTlYRzRnSUNBcUwxeHVJQ0JuWlhRZ2FYTlZibWwyWlhKellXd29LU0I3WEc0Z0lDQWdkR2h5YjNjZ2JtVjNJRnB2Ym1WSmMwRmljM1J5WVdOMFJYSnliM0lvS1R0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlNaWFIxY201eklIUm9aU0J2Wm1aelpYUW5jeUJqYjIxdGIyNGdibUZ0WlNBb2MzVmphQ0JoY3lCRlUxUXBJR0YwSUhSb1pTQnpjR1ZqYVdacFpXUWdkR2x0WlhOMFlXMXdYRzRnSUNBcUlFQmhZbk4wY21GamRGeHVJQ0FnS2lCQWNHRnlZVzBnZTI1MWJXSmxjbjBnZEhNZ0xTQkZjRzlqYUNCdGFXeHNhWE5sWTI5dVpITWdabTl5SUhkb2FXTm9JSFJ2SUdkbGRDQjBhR1VnYm1GdFpWeHVJQ0FnS2lCQWNHRnlZVzBnZTA5aWFtVmpkSDBnYjNCMGN5QXRJRTl3ZEdsdmJuTWdkRzhnWVdabVpXTjBJSFJvWlNCbWIzSnRZWFJjYmlBZ0lDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlHOXdkSE11Wm05eWJXRjBJQzBnVjJoaGRDQnpkSGxzWlNCdlppQnZabVp6WlhRZ2RHOGdjbVYwZFhKdUxpQkJZMk5sY0hSeklDZHNiMjVuSnlCdmNpQW5jMmh2Y25RbkxseHVJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnYjNCMGN5NXNiMk5oYkdVZ0xTQlhhR0YwSUd4dlkyRnNaU0IwYnlCeVpYUjFjbTRnZEdobElHOW1abk5sZENCdVlXMWxJR2x1TGx4dUlDQWdLaUJBY21WMGRYSnVJSHR6ZEhKcGJtZDlYRzRnSUNBcUwxeHVJQ0J2Wm1aelpYUk9ZVzFsS0hSekxDQnZjSFJ6S1NCN1hHNGdJQ0FnZEdoeWIzY2dibVYzSUZwdmJtVkpjMEZpYzNSeVlXTjBSWEp5YjNJb0tUdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJTWlhSMWNtNXpJSFJvWlNCdlptWnpaWFFuY3lCMllXeDFaU0JoY3lCaElITjBjbWx1WjF4dUlDQWdLaUJBWVdKemRISmhZM1JjYmlBZ0lDb2dRSEJoY21GdElIdHVkVzFpWlhKOUlIUnpJQzBnUlhCdlkyZ2diV2xzYkdselpXTnZibVJ6SUdadmNpQjNhR2xqYUNCMGJ5Qm5aWFFnZEdobElHOW1abk5sZEZ4dUlDQWdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdabTl5YldGMElDMGdWMmhoZENCemRIbHNaU0J2WmlCdlptWnpaWFFnZEc4Z2NtVjBkWEp1TGx4dUlDQWdLaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdRV05qWlhCMGN5QW5ibUZ5Y205M0p5d2dKM05vYjNKMEp5d2diM0lnSjNSbFkyaHBaU2N1SUZKbGRIVnlibWx1WnlBbkt6WW5MQ0FuS3pBMk9qQXdKeXdnYjNJZ0p5c3dOakF3SnlCeVpYTndaV04wYVhabGJIbGNiaUFnSUNvZ1FISmxkSFZ5YmlCN2MzUnlhVzVuZlZ4dUlDQWdLaTljYmlBZ1ptOXliV0YwVDJabWMyVjBLSFJ6TENCbWIzSnRZWFFwSUh0Y2JpQWdJQ0IwYUhKdmR5QnVaWGNnV205dVpVbHpRV0p6ZEhKaFkzUkZjbkp2Y2lncE8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRkpsZEhWeWJpQjBhR1VnYjJabWMyVjBJR2x1SUcxcGJuVjBaWE1nWm05eUlIUm9hWE1nZW05dVpTQmhkQ0IwYUdVZ2MzQmxZMmxtYVdWa0lIUnBiV1Z6ZEdGdGNDNWNiaUFnSUNvZ1FHRmljM1J5WVdOMFhHNGdJQ0FxSUVCd1lYSmhiU0I3Ym5WdFltVnlmU0IwY3lBdElFVndiMk5vSUcxcGJHeHBjMlZqYjI1a2N5Qm1iM0lnZDJocFkyZ2dkRzhnWTI5dGNIVjBaU0IwYUdVZ2IyWm1jMlYwWEc0Z0lDQXFJRUJ5WlhSMWNtNGdlMjUxYldKbGNuMWNiaUFnSUNvdlhHNGdJRzltWm5ObGRDaDBjeWtnZTF4dUlDQWdJSFJvY205M0lHNWxkeUJhYjI1bFNYTkJZbk4wY21GamRFVnljbTl5S0NrN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dVbVYwZFhKdUlIZG9aWFJvWlhJZ2RHaHBjeUJhYjI1bElHbHpJR1Z4ZFdGc0lIUnZJR0Z1YjNSb1pYSWdlbTl1WlZ4dUlDQWdLaUJBWVdKemRISmhZM1JjYmlBZ0lDb2dRSEJoY21GdElIdGFiMjVsZlNCdmRHaGxjbHB2Ym1VZ0xTQjBhR1VnZW05dVpTQjBieUJqYjIxd1lYSmxYRzRnSUNBcUlFQnlaWFIxY200Z2UySnZiMnhsWVc1OVhHNGdJQ0FxTDF4dUlDQmxjWFZoYkhNb2IzUm9aWEphYjI1bEtTQjdYRzRnSUNBZ2RHaHliM2NnYm1WM0lGcHZibVZKYzBGaWMzUnlZV04wUlhKeWIzSW9LVHRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCU1pYUjFjbTRnZDJobGRHaGxjaUIwYUdseklGcHZibVVnYVhNZ2RtRnNhV1F1WEc0Z0lDQXFJRUJoWW5OMGNtRmpkRnh1SUNBZ0tpQkFkSGx3WlNCN1ltOXZiR1ZoYm4xY2JpQWdJQ292WEc0Z0lHZGxkQ0JwYzFaaGJHbGtLQ2tnZTF4dUlDQWdJSFJvY205M0lHNWxkeUJhYjI1bFNYTkJZbk4wY21GamRFVnljbTl5S0NrN1hHNGdJSDFjYm4xY2JpSXNJQ0pwYlhCdmNuUWdleUJtYjNKdFlYUlBabVp6WlhRc0lIQmhjbk5sV205dVpVbHVabThnZlNCbWNtOXRJRndpTGk0dmFXMXdiQzkxZEdsc0xtcHpYQ0k3WEc1cGJYQnZjblFnV205dVpTQm1jbTl0SUZ3aUxpNHZlbTl1WlM1cWMxd2lPMXh1WEc1c1pYUWdjMmx1WjJ4bGRHOXVJRDBnYm5Wc2JEdGNibHh1THlvcVhHNGdLaUJTWlhCeVpYTmxiblJ6SUhSb1pTQnNiMk5oYkNCNmIyNWxJR1p2Y2lCMGFHbHpJRXBoZG1GVFkzSnBjSFFnWlc1MmFYSnZibTFsYm5RdVhHNGdLaUJBYVcxd2JHVnRaVzUwY3lCN1dtOXVaWDFjYmlBcUwxeHVaWGh3YjNKMElHUmxabUYxYkhRZ1kyeGhjM01nVTNsemRHVnRXbTl1WlNCbGVIUmxibVJ6SUZwdmJtVWdlMXh1SUNBdktpcGNiaUFnSUNvZ1IyVjBJR0VnYzJsdVoyeGxkRzl1SUdsdWMzUmhibU5sSUc5bUlIUm9aU0JzYjJOaGJDQjZiMjVsWEc0Z0lDQXFJRUJ5WlhSMWNtNGdlMU41YzNSbGJWcHZibVY5WEc0Z0lDQXFMMXh1SUNCemRHRjBhV01nWjJWMElHbHVjM1JoYm1ObEtDa2dlMXh1SUNBZ0lHbG1JQ2h6YVc1bmJHVjBiMjRnUFQwOUlHNTFiR3dwSUh0Y2JpQWdJQ0FnSUhOcGJtZHNaWFJ2YmlBOUlHNWxkeUJUZVhOMFpXMWFiMjVsS0NrN1hHNGdJQ0FnZlZ4dUlDQWdJSEpsZEhWeWJpQnphVzVuYkdWMGIyNDdYRzRnSUgxY2JseHVJQ0F2S2lvZ1FHOTJaWEp5YVdSbElDb3FMMXh1SUNCblpYUWdkSGx3WlNncElIdGNiaUFnSUNCeVpYUjFjbTRnWENKemVYTjBaVzFjSWp0Y2JpQWdmVnh1WEc0Z0lDOHFLaUJBYjNabGNuSnBaR1VnS2lvdlhHNGdJR2RsZENCdVlXMWxLQ2tnZTF4dUlDQWdJSEpsZEhWeWJpQnVaWGNnU1c1MGJDNUVZWFJsVkdsdFpVWnZjbTFoZENncExuSmxjMjlzZG1Wa1QzQjBhVzl1Y3lncExuUnBiV1ZhYjI1bE8xeHVJQ0I5WEc1Y2JpQWdMeW9xSUVCdmRtVnljbWxrWlNBcUtpOWNiaUFnWjJWMElHbHpWVzVwZG1WeWMyRnNLQ2tnZTF4dUlDQWdJSEpsZEhWeWJpQm1ZV3h6WlR0Y2JpQWdmVnh1WEc0Z0lDOHFLaUJBYjNabGNuSnBaR1VnS2lvdlhHNGdJRzltWm5ObGRFNWhiV1VvZEhNc0lIc2dabTl5YldGMExDQnNiMk5oYkdVZ2ZTa2dlMXh1SUNBZ0lISmxkSFZ5YmlCd1lYSnpaVnB2Ym1WSmJtWnZLSFJ6TENCbWIzSnRZWFFzSUd4dlkyRnNaU2s3WEc0Z0lIMWNibHh1SUNBdktpb2dRRzkyWlhKeWFXUmxJQ29xTDF4dUlDQm1iM0p0WVhSUFptWnpaWFFvZEhNc0lHWnZjbTFoZENrZ2UxeHVJQ0FnSUhKbGRIVnliaUJtYjNKdFlYUlBabVp6WlhRb2RHaHBjeTV2Wm1aelpYUW9kSE1wTENCbWIzSnRZWFFwTzF4dUlDQjlYRzVjYmlBZ0x5b3FJRUJ2ZG1WeWNtbGtaU0FxS2k5Y2JpQWdiMlptYzJWMEtIUnpLU0I3WEc0Z0lDQWdjbVYwZFhKdUlDMXVaWGNnUkdGMFpTaDBjeWt1WjJWMFZHbHRaWHB2Ym1WUFptWnpaWFFvS1R0Y2JpQWdmVnh1WEc0Z0lDOHFLaUJBYjNabGNuSnBaR1VnS2lvdlhHNGdJR1Z4ZFdGc2N5aHZkR2hsY2xwdmJtVXBJSHRjYmlBZ0lDQnlaWFIxY200Z2IzUm9aWEphYjI1bExuUjVjR1VnUFQwOUlGd2ljM2x6ZEdWdFhDSTdYRzRnSUgxY2JseHVJQ0F2S2lvZ1FHOTJaWEp5YVdSbElDb3FMMXh1SUNCblpYUWdhWE5XWVd4cFpDZ3BJSHRjYmlBZ0lDQnlaWFIxY200Z2RISjFaVHRjYmlBZ2ZWeHVmVnh1SWl3Z0ltbHRjRzl5ZENCN0lHWnZjbTFoZEU5bVpuTmxkQ3dnY0dGeWMyVmFiMjVsU1c1bWJ5d2dhWE5WYm1SbFptbHVaV1FzSUc5aWFsUnZURzlqWVd4VVV5QjlJR1p5YjIwZ1hDSXVMaTlwYlhCc0wzVjBhV3d1YW5OY0lqdGNibWx0Y0c5eWRDQmFiMjVsSUdaeWIyMGdYQ0l1TGk5NmIyNWxMbXB6WENJN1hHNWNibXhsZENCa2RHWkRZV05vWlNBOUlIdDlPMXh1Wm5WdVkzUnBiMjRnYldGclpVUlVSaWg2YjI1bEtTQjdYRzRnSUdsbUlDZ2haSFJtUTJGamFHVmJlbTl1WlYwcElIdGNiaUFnSUNCa2RHWkRZV05vWlZ0NmIyNWxYU0E5SUc1bGR5QkpiblJzTGtSaGRHVlVhVzFsUm05eWJXRjBLRndpWlc0dFZWTmNJaXdnZTF4dUlDQWdJQ0FnYUc5MWNqRXlPaUJtWVd4elpTeGNiaUFnSUNBZ0lIUnBiV1ZhYjI1bE9pQjZiMjVsTEZ4dUlDQWdJQ0FnZVdWaGNqb2dYQ0p1ZFcxbGNtbGpYQ0lzWEc0Z0lDQWdJQ0J0YjI1MGFEb2dYQ0l5TFdScFoybDBYQ0lzWEc0Z0lDQWdJQ0JrWVhrNklGd2lNaTFrYVdkcGRGd2lMRnh1SUNBZ0lDQWdhRzkxY2pvZ1hDSXlMV1JwWjJsMFhDSXNYRzRnSUNBZ0lDQnRhVzUxZEdVNklGd2lNaTFrYVdkcGRGd2lMRnh1SUNBZ0lDQWdjMlZqYjI1a09pQmNJakl0WkdsbmFYUmNJaXhjYmlBZ0lDQWdJR1Z5WVRvZ1hDSnphRzl5ZEZ3aUxGeHVJQ0FnSUgwcE8xeHVJQ0I5WEc0Z0lISmxkSFZ5YmlCa2RHWkRZV05vWlZ0NmIyNWxYVHRjYm4xY2JseHVZMjl1YzNRZ2RIbHdaVlJ2VUc5eklEMGdlMXh1SUNCNVpXRnlPaUF3TEZ4dUlDQnRiMjUwYURvZ01TeGNiaUFnWkdGNU9pQXlMRnh1SUNCbGNtRTZJRE1zWEc0Z0lHaHZkWEk2SURRc1hHNGdJRzFwYm5WMFpUb2dOU3hjYmlBZ2MyVmpiMjVrT2lBMkxGeHVmVHRjYmx4dVpuVnVZM1JwYjI0Z2FHRmphM2xQWm1aelpYUW9aSFJtTENCa1lYUmxLU0I3WEc0Z0lHTnZibk4wSUdadmNtMWhkSFJsWkNBOUlHUjBaaTVtYjNKdFlYUW9aR0YwWlNrdWNtVndiR0ZqWlNndlhGeDFNakF3UlM5bkxDQmNJbHdpS1N4Y2JpQWdJQ0J3WVhKelpXUWdQU0F2S0Z4Y1pDc3BYRnd2S0Z4Y1pDc3BYRnd2S0Z4Y1pDc3BJQ2hCUkh4Q1F5a3NQeUFvWEZ4a0t5azZLRnhjWkNzcE9paGNYR1FyS1M4dVpYaGxZeWhtYjNKdFlYUjBaV1FwTEZ4dUlDQWdJRnNzSUdaTmIyNTBhQ3dnWmtSaGVTd2dabGxsWVhJc0lHWmhaRTl5UW1Nc0lHWkliM1Z5TENCbVRXbHVkWFJsTENCbVUyVmpiMjVrWFNBOUlIQmhjbk5sWkR0Y2JpQWdjbVYwZFhKdUlGdG1XV1ZoY2l3Z1prMXZiblJvTENCbVJHRjVMQ0JtWVdSUGNrSmpMQ0JtU0c5MWNpd2daazFwYm5WMFpTd2dabE5sWTI5dVpGMDdYRzU5WEc1Y2JtWjFibU4wYVc5dUlIQmhjblJ6VDJabWMyVjBLR1IwWml3Z1pHRjBaU2tnZTF4dUlDQmpiMjV6ZENCbWIzSnRZWFIwWldRZ1BTQmtkR1l1Wm05eWJXRjBWRzlRWVhKMGN5aGtZWFJsS1R0Y2JpQWdZMjl1YzNRZ1ptbHNiR1ZrSUQwZ1cxMDdYRzRnSUdadmNpQW9iR1YwSUdrZ1BTQXdPeUJwSUR3Z1ptOXliV0YwZEdWa0xteGxibWQwYURzZ2FTc3JLU0I3WEc0Z0lDQWdZMjl1YzNRZ2V5QjBlWEJsTENCMllXeDFaU0I5SUQwZ1ptOXliV0YwZEdWa1cybGRPMXh1SUNBZ0lHTnZibk4wSUhCdmN5QTlJSFI1Y0dWVWIxQnZjMXQwZVhCbFhUdGNibHh1SUNBZ0lHbG1JQ2gwZVhCbElEMDlQU0JjSW1WeVlWd2lLU0I3WEc0Z0lDQWdJQ0JtYVd4c1pXUmJjRzl6WFNBOUlIWmhiSFZsTzF4dUlDQWdJSDBnWld4elpTQnBaaUFvSVdselZXNWtaV1pwYm1Wa0tIQnZjeWtwSUh0Y2JpQWdJQ0FnSUdacGJHeGxaRnR3YjNOZElEMGdjR0Z5YzJWSmJuUW9kbUZzZFdVc0lERXdLVHRjYmlBZ0lDQjlYRzRnSUgxY2JpQWdjbVYwZFhKdUlHWnBiR3hsWkR0Y2JuMWNibHh1YkdWMElHbGhibUZhYjI1bFEyRmphR1VnUFNCN2ZUdGNiaThxS2x4dUlDb2dRU0I2YjI1bElHbGtaVzUwYVdacFpXUWdZbmtnWVc0Z1NVRk9RU0JwWkdWdWRHbG1hV1Z5TENCc2FXdGxJRUZ0WlhKcFkyRXZUbVYzWDFsdmNtdGNiaUFxSUVCcGJYQnNaVzFsYm5SeklIdGFiMjVsZlZ4dUlDb3ZYRzVsZUhCdmNuUWdaR1ZtWVhWc2RDQmpiR0Z6Y3lCSlFVNUJXbTl1WlNCbGVIUmxibVJ6SUZwdmJtVWdlMXh1SUNBdktpcGNiaUFnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUc1aGJXVWdMU0JhYjI1bElHNWhiV1ZjYmlBZ0lDb2dRSEpsZEhWeWJpQjdTVUZPUVZwdmJtVjlYRzRnSUNBcUwxeHVJQ0J6ZEdGMGFXTWdZM0psWVhSbEtHNWhiV1VwSUh0Y2JpQWdJQ0JwWmlBb0lXbGhibUZhYjI1bFEyRmphR1ZiYm1GdFpWMHBJSHRjYmlBZ0lDQWdJR2xoYm1GYWIyNWxRMkZqYUdWYmJtRnRaVjBnUFNCdVpYY2dTVUZPUVZwdmJtVW9ibUZ0WlNrN1hHNGdJQ0FnZlZ4dUlDQWdJSEpsZEhWeWJpQnBZVzVoV205dVpVTmhZMmhsVzI1aGJXVmRPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUZKbGMyVjBJR3h2WTJGc0lHTmhZMmhsY3k0Z1UyaHZkV3hrSUc5dWJIa2dZbVVnYm1WalpYTnpZWEo1SUdsdUlIUmxjM1JwYm1jZ2MyTmxibUZ5YVc5ekxseHVJQ0FnS2lCQWNtVjBkWEp1SUh0MmIybGtmVnh1SUNBZ0tpOWNiaUFnYzNSaGRHbGpJSEpsYzJWMFEyRmphR1VvS1NCN1hHNGdJQ0FnYVdGdVlWcHZibVZEWVdOb1pTQTlJSHQ5TzF4dUlDQWdJR1IwWmtOaFkyaGxJRDBnZTMwN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dVbVYwZFhKdWN5QjNhR1YwYUdWeUlIUm9aU0J3Y205MmFXUmxaQ0J6ZEhKcGJtY2dhWE1nWVNCMllXeHBaQ0J6Y0dWamFXWnBaWEl1SUZSb2FYTWdiMjVzZVNCamFHVmphM01nZEdobElITjBjbWx1WnlkeklHWnZjbTFoZEN3Z2JtOTBJSFJvWVhRZ2RHaGxJSE53WldOcFptbGxjaUJwWkdWdWRHbG1hV1Z6SUdFZ2EyNXZkMjRnZW05dVpUc2djMlZsSUdselZtRnNhV1JhYjI1bElHWnZjaUIwYUdGMExseHVJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnY3lBdElGUm9aU0J6ZEhKcGJtY2dkRzhnWTJobFkyc2dkbUZzYVdScGRIa2diMjVjYmlBZ0lDb2dRR1Y0WVcxd2JHVWdTVUZPUVZwdmJtVXVhWE5XWVd4cFpGTndaV05wWm1sbGNpaGNJa0Z0WlhKcFkyRXZUbVYzWDFsdmNtdGNJaWtnTHk4OVBpQjBjblZsWEc0Z0lDQXFJRUJsZUdGdGNHeGxJRWxCVGtGYWIyNWxMbWx6Vm1Gc2FXUlRjR1ZqYVdacFpYSW9YQ0pUY0c5eWRINStZbXh2Y25CY0lpa2dMeTg5UGlCbVlXeHpaVnh1SUNBZ0tpQkFaR1Z3Y21WallYUmxaQ0JVYUdseklHMWxkR2h2WkNCeVpYUjFjbTV6SUdaaGJITmxJR1p2Y2lCemIyMWxJSFpoYkdsa0lFbEJUa0VnYm1GdFpYTXVJRlZ6WlNCcGMxWmhiR2xrV205dVpTQnBibk4wWldGa0xseHVJQ0FnS2lCQWNtVjBkWEp1SUh0aWIyOXNaV0Z1ZlZ4dUlDQWdLaTljYmlBZ2MzUmhkR2xqSUdselZtRnNhV1JUY0dWamFXWnBaWElvY3lrZ2UxeHVJQ0FnSUhKbGRIVnliaUIwYUdsekxtbHpWbUZzYVdSYWIyNWxLSE1wTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGSmxkSFZ5Ym5NZ2QyaGxkR2hsY2lCMGFHVWdjSEp2ZG1sa1pXUWdjM1J5YVc1bklHbGtaVzUwYVdacFpYTWdZU0J5WldGc0lIcHZibVZjYmlBZ0lDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlIcHZibVVnTFNCVWFHVWdjM1J5YVc1bklIUnZJR05vWldOclhHNGdJQ0FxSUVCbGVHRnRjR3hsSUVsQlRrRmFiMjVsTG1selZtRnNhV1JhYjI1bEtGd2lRVzFsY21sallTOU9aWGRmV1c5eWExd2lLU0F2THowK0lIUnlkV1ZjYmlBZ0lDb2dRR1Y0WVcxd2JHVWdTVUZPUVZwdmJtVXVhWE5XWVd4cFpGcHZibVVvWENKR1lXNTBZWE5wWVM5RFlYTjBiR1ZjSWlrZ0x5ODlQaUJtWVd4elpWeHVJQ0FnS2lCQVpYaGhiWEJzWlNCSlFVNUJXbTl1WlM1cGMxWmhiR2xrV205dVpTaGNJbE53YjNKMGZuNWliRzl5Y0Z3aUtTQXZMejArSUdaaGJITmxYRzRnSUNBcUlFQnlaWFIxY200Z2UySnZiMnhsWVc1OVhHNGdJQ0FxTDF4dUlDQnpkR0YwYVdNZ2FYTldZV3hwWkZwdmJtVW9lbTl1WlNrZ2UxeHVJQ0FnSUdsbUlDZ2hlbTl1WlNrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUdaaGJITmxPMXh1SUNBZ0lIMWNiaUFnSUNCMGNua2dlMXh1SUNBZ0lDQWdibVYzSUVsdWRHd3VSR0YwWlZScGJXVkdiM0p0WVhRb1hDSmxiaTFWVTF3aUxDQjdJSFJwYldWYWIyNWxPaUI2YjI1bElIMHBMbVp2Y20xaGRDZ3BPMXh1SUNBZ0lDQWdjbVYwZFhKdUlIUnlkV1U3WEc0Z0lDQWdmU0JqWVhSamFDQW9aU2tnZTF4dUlDQWdJQ0FnY21WMGRYSnVJR1poYkhObE8xeHVJQ0FnSUgxY2JpQWdmVnh1WEc0Z0lHTnZibk4wY25WamRHOXlLRzVoYldVcElIdGNiaUFnSUNCemRYQmxjaWdwTzF4dUlDQWdJQzhxS2lCQWNISnBkbUYwWlNBcUtpOWNiaUFnSUNCMGFHbHpMbnB2Ym1WT1lXMWxJRDBnYm1GdFpUdGNiaUFnSUNBdktpb2dRSEJ5YVhaaGRHVWdLaW92WEc0Z0lDQWdkR2hwY3k1MllXeHBaQ0E5SUVsQlRrRmFiMjVsTG1selZtRnNhV1JhYjI1bEtHNWhiV1VwTzF4dUlDQjlYRzVjYmlBZ0x5b3FJRUJ2ZG1WeWNtbGtaU0FxS2k5Y2JpQWdaMlYwSUhSNWNHVW9LU0I3WEc0Z0lDQWdjbVYwZFhKdUlGd2lhV0Z1WVZ3aU8xeHVJQ0I5WEc1Y2JpQWdMeW9xSUVCdmRtVnljbWxrWlNBcUtpOWNiaUFnWjJWMElHNWhiV1VvS1NCN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdWVtOXVaVTVoYldVN1hHNGdJSDFjYmx4dUlDQXZLaW9nUUc5MlpYSnlhV1JsSUNvcUwxeHVJQ0JuWlhRZ2FYTlZibWwyWlhKellXd29LU0I3WEc0Z0lDQWdjbVYwZFhKdUlHWmhiSE5sTzF4dUlDQjlYRzVjYmlBZ0x5b3FJRUJ2ZG1WeWNtbGtaU0FxS2k5Y2JpQWdiMlptYzJWMFRtRnRaU2gwY3l3Z2V5Qm1iM0p0WVhRc0lHeHZZMkZzWlNCOUtTQjdYRzRnSUNBZ2NtVjBkWEp1SUhCaGNuTmxXbTl1WlVsdVptOG9kSE1zSUdadmNtMWhkQ3dnYkc5allXeGxMQ0IwYUdsekxtNWhiV1VwTzF4dUlDQjlYRzVjYmlBZ0x5b3FJRUJ2ZG1WeWNtbGtaU0FxS2k5Y2JpQWdabTl5YldGMFQyWm1jMlYwS0hSekxDQm1iM0p0WVhRcElIdGNiaUFnSUNCeVpYUjFjbTRnWm05eWJXRjBUMlptYzJWMEtIUm9hWE11YjJabWMyVjBLSFJ6S1N3Z1ptOXliV0YwS1R0Y2JpQWdmVnh1WEc0Z0lDOHFLaUJBYjNabGNuSnBaR1VnS2lvdlhHNGdJRzltWm5ObGRDaDBjeWtnZTF4dUlDQWdJR052Ym5OMElHUmhkR1VnUFNCdVpYY2dSR0YwWlNoMGN5azdYRzVjYmlBZ0lDQnBaaUFvYVhOT1lVNG9aR0YwWlNrcElISmxkSFZ5YmlCT1lVNDdYRzVjYmlBZ0lDQmpiMjV6ZENCa2RHWWdQU0J0WVd0bFJGUkdLSFJvYVhNdWJtRnRaU2s3WEc0Z0lDQWdiR1YwSUZ0NVpXRnlMQ0J0YjI1MGFDd2daR0Y1TENCaFpFOXlRbU1zSUdodmRYSXNJRzFwYm5WMFpTd2djMlZqYjI1a1hTQTlJR1IwWmk1bWIzSnRZWFJVYjFCaGNuUnpYRzRnSUNBZ0lDQS9JSEJoY25SelQyWm1jMlYwS0dSMFppd2daR0YwWlNsY2JpQWdJQ0FnSURvZ2FHRmphM2xQWm1aelpYUW9aSFJtTENCa1lYUmxLVHRjYmx4dUlDQWdJR2xtSUNoaFpFOXlRbU1nUFQwOUlGd2lRa05jSWlrZ2UxeHVJQ0FnSUNBZ2VXVmhjaUE5SUMxTllYUm9MbUZpY3loNVpXRnlLU0FySURFN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnTHk4Z1ltVmpZWFZ6WlNCM1pTZHlaU0IxYzJsdVp5Qm9iM1Z5TVRJZ1lXNWtJR2gwZEhCek9pOHZZblZuY3k1amFISnZiV2wxYlM1dmNtY3ZjQzlqYUhKdmJXbDFiUzlwYzNOMVpYTXZaR1YwWVdsc1AybGtQVEV3TWpVMU5qUW1ZMkZ1UFRJbWNUMGxNakl5TkNVelFUQXdKVEl5SlRJd1pHRjBaWFJwYldWbWIzSnRZWFJjYmlBZ0lDQmpiMjV6ZENCaFpHcDFjM1JsWkVodmRYSWdQU0JvYjNWeUlEMDlQU0F5TkNBL0lEQWdPaUJvYjNWeU8xeHVYRzRnSUNBZ1kyOXVjM1FnWVhOVlZFTWdQU0J2WW1wVWIweHZZMkZzVkZNb2UxeHVJQ0FnSUNBZ2VXVmhjaXhjYmlBZ0lDQWdJRzF2Ym5Sb0xGeHVJQ0FnSUNBZ1pHRjVMRnh1SUNBZ0lDQWdhRzkxY2pvZ1lXUnFkWE4wWldSSWIzVnlMRnh1SUNBZ0lDQWdiV2x1ZFhSbExGeHVJQ0FnSUNBZ2MyVmpiMjVrTEZ4dUlDQWdJQ0FnYldsc2JHbHpaV052Ym1RNklEQXNYRzRnSUNBZ2ZTazdYRzVjYmlBZ0lDQnNaWFFnWVhOVVV5QTlJQ3RrWVhSbE8xeHVJQ0FnSUdOdmJuTjBJRzkyWlhJZ1BTQmhjMVJUSUNVZ01UQXdNRHRjYmlBZ0lDQmhjMVJUSUMwOUlHOTJaWElnUGowZ01DQS9JRzkyWlhJZ09pQXhNREF3SUNzZ2IzWmxjanRjYmlBZ0lDQnlaWFIxY200Z0tHRnpWVlJESUMwZ1lYTlVVeWtnTHlBb05qQWdLaUF4TURBd0tUdGNiaUFnZlZ4dVhHNGdJQzhxS2lCQWIzWmxjbkpwWkdVZ0tpb3ZYRzRnSUdWeGRXRnNjeWh2ZEdobGNscHZibVVwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdiM1JvWlhKYWIyNWxMblI1Y0dVZ1BUMDlJRndpYVdGdVlWd2lJQ1ltSUc5MGFHVnlXbTl1WlM1dVlXMWxJRDA5UFNCMGFHbHpMbTVoYldVN1hHNGdJSDFjYmx4dUlDQXZLaW9nUUc5MlpYSnlhV1JsSUNvcUwxeHVJQ0JuWlhRZ2FYTldZV3hwWkNncElIdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NTJZV3hwWkR0Y2JpQWdmVnh1ZlZ4dUlpd2dJbWx0Y0c5eWRDQjdJR1p2Y20xaGRFOW1abk5sZEN3Z2MybG5ibVZrVDJabWMyVjBJSDBnWm5KdmJTQmNJaTR1TDJsdGNHd3ZkWFJwYkM1cWMxd2lPMXh1YVcxd2IzSjBJRnB2Ym1VZ1puSnZiU0JjSWk0dUwzcHZibVV1YW5OY0lqdGNibHh1YkdWMElITnBibWRzWlhSdmJpQTlJRzUxYkd3N1hHNWNiaThxS2x4dUlDb2dRU0I2YjI1bElIZHBkR2dnWVNCbWFYaGxaQ0J2Wm1aelpYUWdLRzFsWVc1cGJtY2dibThnUkZOVUtWeHVJQ29nUUdsdGNHeGxiV1Z1ZEhNZ2UxcHZibVY5WEc0Z0tpOWNibVY0Y0c5eWRDQmtaV1poZFd4MElHTnNZWE56SUVacGVHVmtUMlptYzJWMFdtOXVaU0JsZUhSbGJtUnpJRnB2Ym1VZ2UxeHVJQ0F2S2lwY2JpQWdJQ29nUjJWMElHRWdjMmx1WjJ4bGRHOXVJR2x1YzNSaGJtTmxJRzltSUZWVVExeHVJQ0FnS2lCQWNtVjBkWEp1SUh0R2FYaGxaRTltWm5ObGRGcHZibVY5WEc0Z0lDQXFMMXh1SUNCemRHRjBhV01nWjJWMElIVjBZMGx1YzNSaGJtTmxLQ2tnZTF4dUlDQWdJR2xtSUNoemFXNW5iR1YwYjI0Z1BUMDlJRzUxYkd3cElIdGNiaUFnSUNBZ0lITnBibWRzWlhSdmJpQTlJRzVsZHlCR2FYaGxaRTltWm5ObGRGcHZibVVvTUNrN1hHNGdJQ0FnZlZ4dUlDQWdJSEpsZEhWeWJpQnphVzVuYkdWMGIyNDdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nUjJWMElHRnVJR2x1YzNSaGJtTmxJSGRwZEdnZ1lTQnpjR1ZqYVdacFpXUWdiMlptYzJWMFhHNGdJQ0FxSUVCd1lYSmhiU0I3Ym5WdFltVnlmU0J2Wm1aelpYUWdMU0JVYUdVZ2IyWm1jMlYwSUdsdUlHMXBiblYwWlhOY2JpQWdJQ29nUUhKbGRIVnliaUI3Um1sNFpXUlBabVp6WlhSYWIyNWxmVnh1SUNBZ0tpOWNiaUFnYzNSaGRHbGpJR2x1YzNSaGJtTmxLRzltWm5ObGRDa2dlMXh1SUNBZ0lISmxkSFZ5YmlCdlptWnpaWFFnUFQwOUlEQWdQeUJHYVhobFpFOW1abk5sZEZwdmJtVXVkWFJqU1c1emRHRnVZMlVnT2lCdVpYY2dSbWw0WldSUFptWnpaWFJhYjI1bEtHOW1abk5sZENrN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dSMlYwSUdGdUlHbHVjM1JoYm1ObElHOW1JRVpwZUdWa1QyWm1jMlYwV205dVpTQm1jbTl0SUdFZ1ZWUkRJRzltWm5ObGRDQnpkSEpwYm1jc0lHeHBhMlVnWENKVlZFTXJObHdpWEc0Z0lDQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQnpJQzBnVkdobElHOW1abk5sZENCemRISnBibWNnZEc4Z2NHRnljMlZjYmlBZ0lDb2dRR1Y0WVcxd2JHVWdSbWw0WldSUFptWnpaWFJhYjI1bExuQmhjbk5sVTNCbFkybG1hV1Z5S0Z3aVZWUkRLelpjSWlsY2JpQWdJQ29nUUdWNFlXMXdiR1VnUm1sNFpXUlBabVp6WlhSYWIyNWxMbkJoY25ObFUzQmxZMmxtYVdWeUtGd2lWVlJES3pBMlhDSXBYRzRnSUNBcUlFQmxlR0Z0Y0d4bElFWnBlR1ZrVDJabWMyVjBXbTl1WlM1d1lYSnpaVk53WldOcFptbGxjaWhjSWxWVVF5MDJPakF3WENJcFhHNGdJQ0FxSUVCeVpYUjFjbTRnZTBacGVHVmtUMlptYzJWMFdtOXVaWDFjYmlBZ0lDb3ZYRzRnSUhOMFlYUnBZeUJ3WVhKelpWTndaV05wWm1sbGNpaHpLU0I3WEc0Z0lDQWdhV1lnS0hNcElIdGNiaUFnSUNBZ0lHTnZibk4wSUhJZ1BTQnpMbTFoZEdOb0tDOWVkWFJqS0Q4NktGc3JMVjFjWEdSN01Td3lmU2tvUHpvNktGeGNaSHN5ZlNrcFB5ay9KQzlwS1R0Y2JpQWdJQ0FnSUdsbUlDaHlLU0I3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJ1WlhjZ1JtbDRaV1JQWm1aelpYUmFiMjVsS0hOcFoyNWxaRTltWm5ObGRDaHlXekZkTENCeVd6SmRLU2s3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1SUNBZ0lISmxkSFZ5YmlCdWRXeHNPMXh1SUNCOVhHNWNiaUFnWTI5dWMzUnlkV04wYjNJb2IyWm1jMlYwS1NCN1hHNGdJQ0FnYzNWd1pYSW9LVHRjYmlBZ0lDQXZLaW9nUUhCeWFYWmhkR1VnS2lvdlhHNGdJQ0FnZEdocGN5NW1hWGhsWkNBOUlHOW1abk5sZER0Y2JpQWdmVnh1WEc0Z0lDOHFLaUJBYjNabGNuSnBaR1VnS2lvdlhHNGdJR2RsZENCMGVYQmxLQ2tnZTF4dUlDQWdJSEpsZEhWeWJpQmNJbVpwZUdWa1hDSTdYRzRnSUgxY2JseHVJQ0F2S2lvZ1FHOTJaWEp5YVdSbElDb3FMMXh1SUNCblpYUWdibUZ0WlNncElIdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NW1hWGhsWkNBOVBUMGdNQ0EvSUZ3aVZWUkRYQ0lnT2lCZ1ZWUkRKSHRtYjNKdFlYUlBabVp6WlhRb2RHaHBjeTVtYVhobFpDd2dYQ0p1WVhKeWIzZGNJaWw5WUR0Y2JpQWdmVnh1WEc0Z0lHZGxkQ0JwWVc1aFRtRnRaU2dwSUh0Y2JpQWdJQ0JwWmlBb2RHaHBjeTVtYVhobFpDQTlQVDBnTUNrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUZ3aVJYUmpMMVZVUTF3aU8xeHVJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdZRVYwWXk5SFRWUWtlMlp2Y20xaGRFOW1abk5sZENndGRHaHBjeTVtYVhobFpDd2dYQ0p1WVhKeWIzZGNJaWw5WUR0Y2JpQWdJQ0I5WEc0Z0lIMWNibHh1SUNBdktpb2dRRzkyWlhKeWFXUmxJQ29xTDF4dUlDQnZabVp6WlhST1lXMWxLQ2tnZTF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TG01aGJXVTdYRzRnSUgxY2JseHVJQ0F2S2lvZ1FHOTJaWEp5YVdSbElDb3FMMXh1SUNCbWIzSnRZWFJQWm1aelpYUW9kSE1zSUdadmNtMWhkQ2tnZTF4dUlDQWdJSEpsZEhWeWJpQm1iM0p0WVhSUFptWnpaWFFvZEdocGN5NW1hWGhsWkN3Z1ptOXliV0YwS1R0Y2JpQWdmVnh1WEc0Z0lDOHFLaUJBYjNabGNuSnBaR1VnS2lvdlhHNGdJR2RsZENCcGMxVnVhWFpsY25OaGJDZ3BJSHRjYmlBZ0lDQnlaWFIxY200Z2RISjFaVHRjYmlBZ2ZWeHVYRzRnSUM4cUtpQkFiM1psY25KcFpHVWdLaW92WEc0Z0lHOW1abk5sZENncElIdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NW1hWGhsWkR0Y2JpQWdmVnh1WEc0Z0lDOHFLaUJBYjNabGNuSnBaR1VnS2lvdlhHNGdJR1Z4ZFdGc2N5aHZkR2hsY2xwdmJtVXBJSHRjYmlBZ0lDQnlaWFIxY200Z2IzUm9aWEphYjI1bExuUjVjR1VnUFQwOUlGd2labWw0WldSY0lpQW1KaUJ2ZEdobGNscHZibVV1Wm1sNFpXUWdQVDA5SUhSb2FYTXVabWw0WldRN1hHNGdJSDFjYmx4dUlDQXZLaW9nUUc5MlpYSnlhV1JsSUNvcUwxeHVJQ0JuWlhRZ2FYTldZV3hwWkNncElIdGNiaUFnSUNCeVpYUjFjbTRnZEhKMVpUdGNiaUFnZlZ4dWZWeHVJaXdnSW1sdGNHOXlkQ0JhYjI1bElHWnliMjBnWENJdUxpOTZiMjVsTG1welhDSTdYRzVjYmk4cUtseHVJQ29nUVNCNmIyNWxJSFJvWVhRZ1ptRnBiR1ZrSUhSdklIQmhjbk5sTGlCWmIzVWdjMmh2ZFd4a0lHNWxkbVZ5SUc1bFpXUWdkRzhnYVc1emRHRnVkR2xoZEdVZ2RHaHBjeTVjYmlBcUlFQnBiWEJzWlcxbGJuUnpJSHRhYjI1bGZWeHVJQ292WEc1bGVIQnZjblFnWkdWbVlYVnNkQ0JqYkdGemN5QkpiblpoYkdsa1dtOXVaU0JsZUhSbGJtUnpJRnB2Ym1VZ2UxeHVJQ0JqYjI1emRISjFZM1J2Y2loNmIyNWxUbUZ0WlNrZ2UxeHVJQ0FnSUhOMWNHVnlLQ2s3WEc0Z0lDQWdMeW9xSUNCQWNISnBkbUYwWlNBcUwxeHVJQ0FnSUhSb2FYTXVlbTl1WlU1aGJXVWdQU0I2YjI1bFRtRnRaVHRjYmlBZ2ZWeHVYRzRnSUM4cUtpQkFiM1psY25KcFpHVWdLaW92WEc0Z0lHZGxkQ0IwZVhCbEtDa2dlMXh1SUNBZ0lISmxkSFZ5YmlCY0ltbHVkbUZzYVdSY0lqdGNiaUFnZlZ4dVhHNGdJQzhxS2lCQWIzWmxjbkpwWkdVZ0tpb3ZYRzRnSUdkbGRDQnVZVzFsS0NrZ2UxeHVJQ0FnSUhKbGRIVnliaUIwYUdsekxucHZibVZPWVcxbE8xeHVJQ0I5WEc1Y2JpQWdMeW9xSUVCdmRtVnljbWxrWlNBcUtpOWNiaUFnWjJWMElHbHpWVzVwZG1WeWMyRnNLQ2tnZTF4dUlDQWdJSEpsZEhWeWJpQm1ZV3h6WlR0Y2JpQWdmVnh1WEc0Z0lDOHFLaUJBYjNabGNuSnBaR1VnS2lvdlhHNGdJRzltWm5ObGRFNWhiV1VvS1NCN1hHNGdJQ0FnY21WMGRYSnVJRzUxYkd3N1hHNGdJSDFjYmx4dUlDQXZLaW9nUUc5MlpYSnlhV1JsSUNvcUwxeHVJQ0JtYjNKdFlYUlBabVp6WlhRb0tTQjdYRzRnSUNBZ2NtVjBkWEp1SUZ3aVhDSTdYRzRnSUgxY2JseHVJQ0F2S2lvZ1FHOTJaWEp5YVdSbElDb3FMMXh1SUNCdlptWnpaWFFvS1NCN1hHNGdJQ0FnY21WMGRYSnVJRTVoVGp0Y2JpQWdmVnh1WEc0Z0lDOHFLaUJBYjNabGNuSnBaR1VnS2lvdlhHNGdJR1Z4ZFdGc2N5Z3BJSHRjYmlBZ0lDQnlaWFIxY200Z1ptRnNjMlU3WEc0Z0lIMWNibHh1SUNBdktpb2dRRzkyWlhKeWFXUmxJQ29xTDF4dUlDQm5aWFFnYVhOV1lXeHBaQ2dwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdabUZzYzJVN1hHNGdJSDFjYm4xY2JpSXNJQ0l2S2lwY2JpQXFJRUJ3Y21sMllYUmxYRzRnS2k5Y2JseHVhVzF3YjNKMElGcHZibVVnWm5KdmJTQmNJaTR1TDNwdmJtVXVhbk5jSWp0Y2JtbHRjRzl5ZENCSlFVNUJXbTl1WlNCbWNtOXRJRndpTGk0dmVtOXVaWE12U1VGT1FWcHZibVV1YW5OY0lqdGNibWx0Y0c5eWRDQkdhWGhsWkU5bVpuTmxkRnB2Ym1VZ1puSnZiU0JjSWk0dUwzcHZibVZ6TDJacGVHVmtUMlptYzJWMFdtOXVaUzVxYzF3aU8xeHVhVzF3YjNKMElFbHVkbUZzYVdSYWIyNWxJR1p5YjIwZ1hDSXVMaTk2YjI1bGN5OXBiblpoYkdsa1dtOXVaUzVxYzF3aU8xeHVYRzVwYlhCdmNuUWdleUJwYzFWdVpHVm1hVzVsWkN3Z2FYTlRkSEpwYm1jc0lHbHpUblZ0WW1WeUlIMGdabkp2YlNCY0lpNHZkWFJwYkM1cWMxd2lPMXh1WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnYm05eWJXRnNhWHBsV205dVpTaHBibkIxZEN3Z1pHVm1ZWFZzZEZwdmJtVXBJSHRjYmlBZ2JHVjBJRzltWm5ObGREdGNiaUFnYVdZZ0tHbHpWVzVrWldacGJtVmtLR2x1Y0hWMEtTQjhmQ0JwYm5CMWRDQTlQVDBnYm5Wc2JDa2dlMXh1SUNBZ0lISmxkSFZ5YmlCa1pXWmhkV3gwV205dVpUdGNiaUFnZlNCbGJITmxJR2xtSUNocGJuQjFkQ0JwYm5OMFlXNWpaVzltSUZwdmJtVXBJSHRjYmlBZ0lDQnlaWFIxY200Z2FXNXdkWFE3WEc0Z0lIMGdaV3h6WlNCcFppQW9hWE5UZEhKcGJtY29hVzV3ZFhRcEtTQjdYRzRnSUNBZ1kyOXVjM1FnYkc5M1pYSmxaQ0E5SUdsdWNIVjBMblJ2VEc5M1pYSkRZWE5sS0NrN1hHNGdJQ0FnYVdZZ0tHeHZkMlZ5WldRZ1BUMDlJRndpYkc5allXeGNJaUI4ZkNCc2IzZGxjbVZrSUQwOVBTQmNJbk41YzNSbGJWd2lLU0J5WlhSMWNtNGdaR1ZtWVhWc2RGcHZibVU3WEc0Z0lDQWdaV3h6WlNCcFppQW9iRzkzWlhKbFpDQTlQVDBnWENKMWRHTmNJaUI4ZkNCc2IzZGxjbVZrSUQwOVBTQmNJbWR0ZEZ3aUtTQnlaWFIxY200Z1JtbDRaV1JQWm1aelpYUmFiMjVsTG5WMFkwbHVjM1JoYm1ObE8xeHVJQ0FnSUdWc2MyVWdjbVYwZFhKdUlFWnBlR1ZrVDJabWMyVjBXbTl1WlM1d1lYSnpaVk53WldOcFptbGxjaWhzYjNkbGNtVmtLU0I4ZkNCSlFVNUJXbTl1WlM1amNtVmhkR1VvYVc1d2RYUXBPMXh1SUNCOUlHVnNjMlVnYVdZZ0tHbHpUblZ0WW1WeUtHbHVjSFYwS1NrZ2UxeHVJQ0FnSUhKbGRIVnliaUJHYVhobFpFOW1abk5sZEZwdmJtVXVhVzV6ZEdGdVkyVW9hVzV3ZFhRcE8xeHVJQ0I5SUdWc2MyVWdhV1lnS0hSNWNHVnZaaUJwYm5CMWRDQTlQVDBnWENKdlltcGxZM1JjSWlBbUppQnBibkIxZEM1dlptWnpaWFFnSmlZZ2RIbHdaVzltSUdsdWNIVjBMbTltWm5ObGRDQTlQVDBnWENKdWRXMWlaWEpjSWlrZ2UxeHVJQ0FnSUM4dklGUm9hWE1nYVhNZ1pIVnRZaXdnWW5WMElIUm9aU0JwYm5OMFlXNWpaVzltSUdOb1pXTnJJR0ZpYjNabElHUnZaWE51SjNRZ2MyVmxiU0IwYnlCeVpXRnNiSGtnZDI5eWExeHVJQ0FnSUM4dklITnZJSGRsSjNKbElHUjFZMnNnWTJobFkydHBibWNnYVhSY2JpQWdJQ0J5WlhSMWNtNGdhVzV3ZFhRN1hHNGdJSDBnWld4elpTQjdYRzRnSUNBZ2NtVjBkWEp1SUc1bGR5QkpiblpoYkdsa1dtOXVaU2hwYm5CMWRDazdYRzRnSUgxY2JuMWNiaUlzSUNKcGJYQnZjblFnVTNsemRHVnRXbTl1WlNCbWNtOXRJRndpTGk5NmIyNWxjeTl6ZVhOMFpXMWFiMjVsTG1welhDSTdYRzVwYlhCdmNuUWdTVUZPUVZwdmJtVWdabkp2YlNCY0lpNHZlbTl1WlhNdlNVRk9RVnB2Ym1VdWFuTmNJanRjYm1sdGNHOXlkQ0JNYjJOaGJHVWdabkp2YlNCY0lpNHZhVzF3YkM5c2IyTmhiR1V1YW5OY0lqdGNibHh1YVcxd2IzSjBJSHNnYm05eWJXRnNhWHBsV205dVpTQjlJR1p5YjIwZ1hDSXVMMmx0Y0d3dmVtOXVaVlYwYVd3dWFuTmNJanRjYmx4dWJHVjBJRzV2ZHlBOUlDZ3BJRDArSUVSaGRHVXVibTkzS0Nrc1hHNGdJR1JsWm1GMWJIUmFiMjVsSUQwZ1hDSnplWE4wWlcxY0lpeGNiaUFnWkdWbVlYVnNkRXh2WTJGc1pTQTlJRzUxYkd3c1hHNGdJR1JsWm1GMWJIUk9kVzFpWlhKcGJtZFRlWE4wWlcwZ1BTQnVkV3hzTEZ4dUlDQmtaV1poZFd4MFQzVjBjSFYwUTJGc1pXNWtZWElnUFNCdWRXeHNMRnh1SUNCMGFISnZkMDl1U1c1MllXeHBaRHRjYmx4dUx5b3FYRzRnS2lCVFpYUjBhVzVuY3lCamIyNTBZV2x1Y3lCemRHRjBhV01nWjJWMGRHVnljeUJoYm1RZ2MyVjBkR1Z5Y3lCMGFHRjBJR052Ym5SeWIyd2dUSFY0YjI0bmN5QnZkbVZ5WVd4c0lHSmxhR0YyYVc5eUxpQk1kWGh2YmlCcGN5QmhJSE5wYlhCc1pTQnNhV0p5WVhKNUlIZHBkR2dnWm1WM0lHOXdkR2x2Ym5Nc0lHSjFkQ0IwYUdVZ2IyNWxjeUJwZENCa2IyVnpJR2hoZG1VZ2JHbDJaU0JvWlhKbExseHVJQ292WEc1bGVIQnZjblFnWkdWbVlYVnNkQ0JqYkdGemN5QlRaWFIwYVc1bmN5QjdYRzRnSUM4cUtseHVJQ0FnS2lCSFpYUWdkR2hsSUdOaGJHeGlZV05ySUdadmNpQnlaWFIxY201cGJtY2dkR2hsSUdOMWNuSmxiblFnZEdsdFpYTjBZVzF3TGx4dUlDQWdLaUJBZEhsd1pTQjdablZ1WTNScGIyNTlYRzRnSUNBcUwxeHVJQ0J6ZEdGMGFXTWdaMlYwSUc1dmR5Z3BJSHRjYmlBZ0lDQnlaWFIxY200Z2JtOTNPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUZObGRDQjBhR1VnWTJGc2JHSmhZMnNnWm05eUlISmxkSFZ5Ym1sdVp5QjBhR1VnWTNWeWNtVnVkQ0IwYVcxbGMzUmhiWEF1WEc0Z0lDQXFJRlJvWlNCbWRXNWpkR2x2YmlCemFHOTFiR1FnY21WMGRYSnVJR0VnYm5WdFltVnlMQ0IzYUdsamFDQjNhV3hzSUdKbElHbHVkR1Z5Y0hKbGRHVmtJR0Z6SUdGdUlFVndiMk5vSUcxcGJHeHBjMlZqYjI1a0lHTnZkVzUwWEc0Z0lDQXFJRUIwZVhCbElIdG1kVzVqZEdsdmJuMWNiaUFnSUNvZ1FHVjRZVzF3YkdVZ1UyVjBkR2x1WjNNdWJtOTNJRDBnS0NrZ1BUNGdSR0YwWlM1dWIzY29LU0FySURNd01EQWdMeThnY0hKbGRHVnVaQ0JwZENCcGN5QXpJSE5sWTI5dVpITWdhVzRnZEdobElHWjFkSFZ5WlZ4dUlDQWdLaUJBWlhoaGJYQnNaU0JUWlhSMGFXNW5jeTV1YjNjZ1BTQW9LU0E5UGlBd0lDOHZJR0ZzZDJGNWN5QndjbVYwWlc1a0lHbDBKM01nU21GdUlERXNJREU1TnpBZ1lYUWdiV2xrYm1sbmFIUWdhVzRnVlZSRElIUnBiV1ZjYmlBZ0lDb3ZYRzRnSUhOMFlYUnBZeUJ6WlhRZ2JtOTNLRzRwSUh0Y2JpQWdJQ0J1YjNjZ1BTQnVPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUZObGRDQjBhR1VnWkdWbVlYVnNkQ0IwYVcxbElIcHZibVVnZEc4Z1kzSmxZWFJsSUVSaGRHVlVhVzFsY3lCcGJpNGdSRzlsY3lCdWIzUWdZV1ptWldOMElHVjRhWE4wYVc1bklHbHVjM1JoYm1ObGN5NWNiaUFnSUNvZ1ZYTmxJSFJvWlNCMllXeDFaU0JjSW5ONWMzUmxiVndpSUhSdklISmxjMlYwSUhSb2FYTWdkbUZzZFdVZ2RHOGdkR2hsSUhONWMzUmxiU2R6SUhScGJXVWdlbTl1WlM1Y2JpQWdJQ29nUUhSNWNHVWdlM04wY21sdVozMWNiaUFnSUNvdlhHNGdJSE4wWVhScFl5QnpaWFFnWkdWbVlYVnNkRnB2Ym1Vb2VtOXVaU2tnZTF4dUlDQWdJR1JsWm1GMWJIUmFiMjVsSUQwZ2VtOXVaVHRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCSFpYUWdkR2hsSUdSbFptRjFiSFFnZEdsdFpTQjZiMjVsSUc5aWFtVmpkQ0JqZFhKeVpXNTBiSGtnZFhObFpDQjBieUJqY21WaGRHVWdSR0YwWlZScGJXVnpMaUJFYjJWeklHNXZkQ0JoWm1abFkzUWdaWGhwYzNScGJtY2dhVzV6ZEdGdVkyVnpMbHh1SUNBZ0tpQlVhR1VnWkdWbVlYVnNkQ0IyWVd4MVpTQnBjeUIwYUdVZ2MzbHpkR1Z0SjNNZ2RHbHRaU0I2YjI1bElDaDBhR1VnYjI1bElITmxkQ0J2YmlCMGFHVWdiV0ZqYUdsdVpTQjBhR0YwSUhKMWJuTWdkR2hwY3lCamIyUmxLUzVjYmlBZ0lDb2dRSFI1Y0dVZ2UxcHZibVY5WEc0Z0lDQXFMMXh1SUNCemRHRjBhV01nWjJWMElHUmxabUYxYkhSYWIyNWxLQ2tnZTF4dUlDQWdJSEpsZEhWeWJpQnViM0p0WVd4cGVtVmFiMjVsS0dSbFptRjFiSFJhYjI1bExDQlRlWE4wWlcxYWIyNWxMbWx1YzNSaGJtTmxLVHRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCSFpYUWdkR2hsSUdSbFptRjFiSFFnYkc5allXeGxJSFJ2SUdOeVpXRjBaU0JFWVhSbFZHbHRaWE1nZDJsMGFDNGdSRzlsY3lCdWIzUWdZV1ptWldOMElHVjRhWE4wYVc1bklHbHVjM1JoYm1ObGN5NWNiaUFnSUNvZ1FIUjVjR1VnZTNOMGNtbHVaMzFjYmlBZ0lDb3ZYRzRnSUhOMFlYUnBZeUJuWlhRZ1pHVm1ZWFZzZEV4dlkyRnNaU2dwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdaR1ZtWVhWc2RFeHZZMkZzWlR0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlRaWFFnZEdobElHUmxabUYxYkhRZ2JHOWpZV3hsSUhSdklHTnlaV0YwWlNCRVlYUmxWR2x0WlhNZ2QybDBhQzRnUkc5bGN5QnViM1FnWVdabVpXTjBJR1Y0YVhOMGFXNW5JR2x1YzNSaGJtTmxjeTVjYmlBZ0lDb2dRSFI1Y0dVZ2UzTjBjbWx1WjMxY2JpQWdJQ292WEc0Z0lITjBZWFJwWXlCelpYUWdaR1ZtWVhWc2RFeHZZMkZzWlNoc2IyTmhiR1VwSUh0Y2JpQWdJQ0JrWldaaGRXeDBURzlqWVd4bElEMGdiRzlqWVd4bE8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRWRsZENCMGFHVWdaR1ZtWVhWc2RDQnVkVzFpWlhKcGJtY2djM2x6ZEdWdElIUnZJR055WldGMFpTQkVZWFJsVkdsdFpYTWdkMmwwYUM0Z1JHOWxjeUJ1YjNRZ1lXWm1aV04wSUdWNGFYTjBhVzVuSUdsdWMzUmhibU5sY3k1Y2JpQWdJQ29nUUhSNWNHVWdlM04wY21sdVozMWNiaUFnSUNvdlhHNGdJSE4wWVhScFl5Qm5aWFFnWkdWbVlYVnNkRTUxYldKbGNtbHVaMU41YzNSbGJTZ3BJSHRjYmlBZ0lDQnlaWFIxY200Z1pHVm1ZWFZzZEU1MWJXSmxjbWx1WjFONWMzUmxiVHRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCVFpYUWdkR2hsSUdSbFptRjFiSFFnYm5WdFltVnlhVzVuSUhONWMzUmxiU0IwYnlCamNtVmhkR1VnUkdGMFpWUnBiV1Z6SUhkcGRHZ3VJRVJ2WlhNZ2JtOTBJR0ZtWm1WamRDQmxlR2x6ZEdsdVp5QnBibk4wWVc1alpYTXVYRzRnSUNBcUlFQjBlWEJsSUh0emRISnBibWQ5WEc0Z0lDQXFMMXh1SUNCemRHRjBhV01nYzJWMElHUmxabUYxYkhST2RXMWlaWEpwYm1kVGVYTjBaVzBvYm5WdFltVnlhVzVuVTNsemRHVnRLU0I3WEc0Z0lDQWdaR1ZtWVhWc2RFNTFiV0psY21sdVoxTjVjM1JsYlNBOUlHNTFiV0psY21sdVoxTjVjM1JsYlR0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkhaWFFnZEdobElHUmxabUYxYkhRZ2IzVjBjSFYwSUdOaGJHVnVaR0Z5SUhSdklHTnlaV0YwWlNCRVlYUmxWR2x0WlhNZ2QybDBhQzRnUkc5bGN5QnViM1FnWVdabVpXTjBJR1Y0YVhOMGFXNW5JR2x1YzNSaGJtTmxjeTVjYmlBZ0lDb2dRSFI1Y0dVZ2UzTjBjbWx1WjMxY2JpQWdJQ292WEc0Z0lITjBZWFJwWXlCblpYUWdaR1ZtWVhWc2RFOTFkSEIxZEVOaGJHVnVaR0Z5S0NrZ2UxeHVJQ0FnSUhKbGRIVnliaUJrWldaaGRXeDBUM1YwY0hWMFEyRnNaVzVrWVhJN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dVMlYwSUhSb1pTQmtaV1poZFd4MElHOTFkSEIxZENCallXeGxibVJoY2lCMGJ5QmpjbVZoZEdVZ1JHRjBaVlJwYldWeklIZHBkR2d1SUVSdlpYTWdibTkwSUdGbVptVmpkQ0JsZUdsemRHbHVaeUJwYm5OMFlXNWpaWE11WEc0Z0lDQXFJRUIwZVhCbElIdHpkSEpwYm1kOVhHNGdJQ0FxTDF4dUlDQnpkR0YwYVdNZ2MyVjBJR1JsWm1GMWJIUlBkWFJ3ZFhSRFlXeGxibVJoY2lodmRYUndkWFJEWVd4bGJtUmhjaWtnZTF4dUlDQWdJR1JsWm1GMWJIUlBkWFJ3ZFhSRFlXeGxibVJoY2lBOUlHOTFkSEIxZEVOaGJHVnVaR0Z5TzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFZGxkQ0IzYUdWMGFHVnlJRXgxZUc5dUlIZHBiR3dnZEdoeWIzY2dkMmhsYmlCcGRDQmxibU52ZFc1MFpYSnpJR2x1ZG1Gc2FXUWdSR0YwWlZScGJXVnpMQ0JFZFhKaGRHbHZibk1zSUc5eUlFbHVkR1Z5ZG1Gc2MxeHVJQ0FnS2lCQWRIbHdaU0I3WW05dmJHVmhibjFjYmlBZ0lDb3ZYRzRnSUhOMFlYUnBZeUJuWlhRZ2RHaHliM2RQYmtsdWRtRnNhV1FvS1NCN1hHNGdJQ0FnY21WMGRYSnVJSFJvY205M1QyNUpiblpoYkdsa08xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRk5sZENCM2FHVjBhR1Z5SUV4MWVHOXVJSGRwYkd3Z2RHaHliM2NnZDJobGJpQnBkQ0JsYm1OdmRXNTBaWEp6SUdsdWRtRnNhV1FnUkdGMFpWUnBiV1Z6TENCRWRYSmhkR2x2Ym5Nc0lHOXlJRWx1ZEdWeWRtRnNjMXh1SUNBZ0tpQkFkSGx3WlNCN1ltOXZiR1ZoYm4xY2JpQWdJQ292WEc0Z0lITjBZWFJwWXlCelpYUWdkR2h5YjNkUGJrbHVkbUZzYVdRb2RDa2dlMXh1SUNBZ0lIUm9jbTkzVDI1SmJuWmhiR2xrSUQwZ2REdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJTWlhObGRDQk1kWGh2YmlkeklHZHNiMkpoYkNCallXTm9aWE11SUZOb2IzVnNaQ0J2Ym14NUlHSmxJRzVsWTJWemMyRnllU0JwYmlCMFpYTjBhVzVuSUhOalpXNWhjbWx2Y3k1Y2JpQWdJQ29nUUhKbGRIVnliaUI3ZG05cFpIMWNiaUFnSUNvdlhHNGdJSE4wWVhScFl5QnlaWE5sZEVOaFkyaGxjeWdwSUh0Y2JpQWdJQ0JNYjJOaGJHVXVjbVZ6WlhSRFlXTm9aU2dwTzF4dUlDQWdJRWxCVGtGYWIyNWxMbkpsYzJWMFEyRmphR1VvS1R0Y2JpQWdmVnh1ZlZ4dUlpd2dJbWx0Y0c5eWRDQjdJSEJoWkZOMFlYSjBMQ0J5YjNWdVpGUnZMQ0JvWVhOU1pXeGhkR2wyWlNCOUlHWnliMjBnWENJdUwzVjBhV3d1YW5OY0lqdGNibWx0Y0c5eWRDQXFJR0Z6SUVWdVoyeHBjMmdnWm5KdmJTQmNJaTR2Wlc1bmJHbHphQzVxYzF3aU8xeHVhVzF3YjNKMElGTmxkSFJwYm1keklHWnliMjBnWENJdUxpOXpaWFIwYVc1bmN5NXFjMXdpTzF4dWFXMXdiM0owSUVSaGRHVlVhVzFsSUdaeWIyMGdYQ0l1TGk5a1lYUmxkR2x0WlM1cWMxd2lPMXh1YVcxd2IzSjBJRWxCVGtGYWIyNWxJR1p5YjIwZ1hDSXVMaTk2YjI1bGN5OUpRVTVCV205dVpTNXFjMXdpTzF4dVhHNHZMeUIwYjJSdklDMGdjbVZ0WVhBZ1kyRmphR2x1WjF4dVhHNXNaWFFnYVc1MGJFeEdRMkZqYUdVZ1BTQjdmVHRjYm1aMWJtTjBhVzl1SUdkbGRFTmhZMmhsWkV4R0tHeHZZMU4wY21sdVp5d2diM0IwY3lBOUlIdDlLU0I3WEc0Z0lHTnZibk4wSUd0bGVTQTlJRXBUVDA0dWMzUnlhVzVuYVdaNUtGdHNiMk5UZEhKcGJtY3NJRzl3ZEhOZEtUdGNiaUFnYkdWMElHUjBaaUE5SUdsdWRHeE1Sa05oWTJobFcydGxlVjA3WEc0Z0lHbG1JQ2doWkhSbUtTQjdYRzRnSUNBZ1pIUm1JRDBnYm1WM0lFbHVkR3d1VEdsemRFWnZjbTFoZENoc2IyTlRkSEpwYm1jc0lHOXdkSE1wTzF4dUlDQWdJR2x1ZEd4TVJrTmhZMmhsVzJ0bGVWMGdQU0JrZEdZN1hHNGdJSDFjYmlBZ2NtVjBkWEp1SUdSMFpqdGNibjFjYmx4dWJHVjBJR2x1ZEd4RVZFTmhZMmhsSUQwZ2UzMDdYRzVtZFc1amRHbHZiaUJuWlhSRFlXTm9aV1JFVkVZb2JHOWpVM1J5YVc1bkxDQnZjSFJ6SUQwZ2UzMHBJSHRjYmlBZ1kyOXVjM1FnYTJWNUlEMGdTbE5QVGk1emRISnBibWRwWm5rb1cyeHZZMU4wY21sdVp5d2diM0IwYzEwcE8xeHVJQ0JzWlhRZ1pIUm1JRDBnYVc1MGJFUlVRMkZqYUdWYmEyVjVYVHRjYmlBZ2FXWWdLQ0ZrZEdZcElIdGNiaUFnSUNCa2RHWWdQU0J1WlhjZ1NXNTBiQzVFWVhSbFZHbHRaVVp2Y20xaGRDaHNiMk5UZEhKcGJtY3NJRzl3ZEhNcE8xeHVJQ0FnSUdsdWRHeEVWRU5oWTJobFcydGxlVjBnUFNCa2RHWTdYRzRnSUgxY2JpQWdjbVYwZFhKdUlHUjBaanRjYm4xY2JseHViR1YwSUdsdWRHeE9kVzFEWVdOb1pTQTlJSHQ5TzF4dVpuVnVZM1JwYjI0Z1oyVjBRMkZqYUdWa1NVNUdLR3h2WTFOMGNtbHVaeXdnYjNCMGN5QTlJSHQ5S1NCN1hHNGdJR052Ym5OMElHdGxlU0E5SUVwVFQwNHVjM1J5YVc1bmFXWjVLRnRzYjJOVGRISnBibWNzSUc5d2RITmRLVHRjYmlBZ2JHVjBJR2x1WmlBOUlHbHVkR3hPZFcxRFlXTm9aVnRyWlhsZE8xeHVJQ0JwWmlBb0lXbHVaaWtnZTF4dUlDQWdJR2x1WmlBOUlHNWxkeUJKYm5Sc0xrNTFiV0psY2tadmNtMWhkQ2hzYjJOVGRISnBibWNzSUc5d2RITXBPMXh1SUNBZ0lHbHVkR3hPZFcxRFlXTm9aVnRyWlhsZElEMGdhVzVtTzF4dUlDQjlYRzRnSUhKbGRIVnliaUJwYm1ZN1hHNTlYRzVjYm14bGRDQnBiblJzVW1Wc1EyRmphR1VnUFNCN2ZUdGNibVoxYm1OMGFXOXVJR2RsZEVOaFkyaGxaRkpVUmloc2IyTlRkSEpwYm1jc0lHOXdkSE1nUFNCN2ZTa2dlMXh1SUNCamIyNXpkQ0I3SUdKaGMyVXNJQzR1TG1OaFkyaGxTMlY1VDNCMGN5QjlJRDBnYjNCMGN6c2dMeThnWlhoamJIVmtaU0JnWW1GelpXQWdabkp2YlNCMGFHVWdiM0IwYVc5dWMxeHVJQ0JqYjI1emRDQnJaWGtnUFNCS1UwOU9Mbk4wY21sdVoybG1lU2hiYkc5alUzUnlhVzVuTENCallXTm9aVXRsZVU5d2RITmRLVHRjYmlBZ2JHVjBJR2x1WmlBOUlHbHVkR3hTWld4RFlXTm9aVnRyWlhsZE8xeHVJQ0JwWmlBb0lXbHVaaWtnZTF4dUlDQWdJR2x1WmlBOUlHNWxkeUJKYm5Sc0xsSmxiR0YwYVhabFZHbHRaVVp2Y20xaGRDaHNiMk5UZEhKcGJtY3NJRzl3ZEhNcE8xeHVJQ0FnSUdsdWRHeFNaV3hEWVdOb1pWdHJaWGxkSUQwZ2FXNW1PMXh1SUNCOVhHNGdJSEpsZEhWeWJpQnBibVk3WEc1OVhHNWNibXhsZENCemVYTk1iMk5oYkdWRFlXTm9aU0E5SUc1MWJHdzdYRzVtZFc1amRHbHZiaUJ6ZVhOMFpXMU1iMk5oYkdVb0tTQjdYRzRnSUdsbUlDaHplWE5NYjJOaGJHVkRZV05vWlNrZ2UxeHVJQ0FnSUhKbGRIVnliaUJ6ZVhOTWIyTmhiR1ZEWVdOb1pUdGNiaUFnZlNCbGJITmxJSHRjYmlBZ0lDQnplWE5NYjJOaGJHVkRZV05vWlNBOUlHNWxkeUJKYm5Sc0xrUmhkR1ZVYVcxbFJtOXliV0YwS0NrdWNtVnpiMngyWldSUGNIUnBiMjV6S0NrdWJHOWpZV3hsTzF4dUlDQWdJSEpsZEhWeWJpQnplWE5NYjJOaGJHVkRZV05vWlR0Y2JpQWdmVnh1ZlZ4dVhHNW1kVzVqZEdsdmJpQndZWEp6WlV4dlkyRnNaVk4wY21sdVp5aHNiMk5oYkdWVGRISXBJSHRjYmlBZ0x5OGdTU0J5WldGc2JIa2dkMkZ1ZENCMGJ5QmhkbTlwWkNCM2NtbDBhVzVuSUdFZ1FrTlFJRFEzSUhCaGNuTmxjbHh1SUNBdkx5QnpaV1VzSUdVdVp5NGdhSFIwY0hNNkx5OW5hWFJvZFdJdVkyOXRMM2R2YjI5eWJTOWlZM0F0TkRkY2JpQWdMeThnU1c1emRHVmhaQ3dnZDJVbmJHd2daRzhnZEdocGN6cGNibHh1SUNBdkx5QmhLU0JwWmlCMGFHVWdjM1J5YVc1bklHaGhjeUJ1YnlBdGRTQmxlSFJsYm5OcGIyNXpMQ0JxZFhOMElHeGxZWFpsSUdsMElHRnNiMjVsWEc0Z0lDOHZJR0lwSUdsbUlHbDBJR1J2WlhNc0lIVnpaU0JKYm5Sc0lIUnZJSEpsYzI5c2RtVWdaWFpsY25sMGFHbHVaMXh1SUNBdkx5QmpLU0JwWmlCSmJuUnNJR1poYVd4ekxDQjBjbmtnWVdkaGFXNGdkMmwwYUc5MWRDQjBhR1VnTFhWY2JseHVJQ0JqYjI1emRDQjFTVzVrWlhnZ1BTQnNiMk5oYkdWVGRISXVhVzVrWlhoUFppaGNJaTExTFZ3aUtUdGNiaUFnYVdZZ0tIVkpibVJsZUNBOVBUMGdMVEVwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdXMnh2WTJGc1pWTjBjbDA3WEc0Z0lIMGdaV3h6WlNCN1hHNGdJQ0FnYkdWMElHOXdkR2x2Ym5NN1hHNGdJQ0FnWTI5dWMzUWdjMjFoYkd4bGNpQTlJR3h2WTJGc1pWTjBjaTV6ZFdKemRISnBibWNvTUN3Z2RVbHVaR1Y0S1R0Y2JpQWdJQ0IwY25rZ2UxeHVJQ0FnSUNBZ2IzQjBhVzl1Y3lBOUlHZGxkRU5oWTJobFpFUlVSaWhzYjJOaGJHVlRkSElwTG5KbGMyOXNkbVZrVDNCMGFXOXVjeWdwTzF4dUlDQWdJSDBnWTJGMFkyZ2dLR1VwSUh0Y2JpQWdJQ0FnSUc5d2RHbHZibk1nUFNCblpYUkRZV05vWldSRVZFWW9jMjFoYkd4bGNpa3VjbVZ6YjJ4MlpXUlBjSFJwYjI1ektDazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ1kyOXVjM1FnZXlCdWRXMWlaWEpwYm1kVGVYTjBaVzBzSUdOaGJHVnVaR0Z5SUgwZ1BTQnZjSFJwYjI1ek8xeHVJQ0FnSUM4dklISmxkSFZ5YmlCMGFHVWdjMjFoYkd4bGNpQnZibVVnYzI4Z2RHaGhkQ0IzWlNCallXNGdZWEJ3Wlc1a0lIUm9aU0JqWVd4bGJtUmhjaUJoYm1RZ2JuVnRZbVZ5YVc1bklHOTJaWEp5YVdSbGN5QjBieUJwZEZ4dUlDQWdJSEpsZEhWeWJpQmJjMjFoYkd4bGNpd2diblZ0WW1WeWFXNW5VM2x6ZEdWdExDQmpZV3hsYm1SaGNsMDdYRzRnSUgxY2JuMWNibHh1Wm5WdVkzUnBiMjRnYVc1MGJFTnZibVpwWjFOMGNtbHVaeWhzYjJOaGJHVlRkSElzSUc1MWJXSmxjbWx1WjFONWMzUmxiU3dnYjNWMGNIVjBRMkZzWlc1a1lYSXBJSHRjYmlBZ2FXWWdLRzkxZEhCMWRFTmhiR1Z1WkdGeUlIeDhJRzUxYldKbGNtbHVaMU41YzNSbGJTa2dlMXh1SUNBZ0lHeHZZMkZzWlZOMGNpQXJQU0JjSWkxMVhDSTdYRzVjYmlBZ0lDQnBaaUFvYjNWMGNIVjBRMkZzWlc1a1lYSXBJSHRjYmlBZ0lDQWdJR3h2WTJGc1pWTjBjaUFyUFNCZ0xXTmhMU1I3YjNWMGNIVjBRMkZzWlc1a1lYSjlZRHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnBaaUFvYm5WdFltVnlhVzVuVTNsemRHVnRLU0I3WEc0Z0lDQWdJQ0JzYjJOaGJHVlRkSElnS3owZ1lDMXVkUzBrZTI1MWJXSmxjbWx1WjFONWMzUmxiWDFnTzF4dUlDQWdJSDFjYmlBZ0lDQnlaWFIxY200Z2JHOWpZV3hsVTNSeU8xeHVJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lISmxkSFZ5YmlCc2IyTmhiR1ZUZEhJN1hHNGdJSDFjYm4xY2JseHVablZ1WTNScGIyNGdiV0Z3VFc5dWRHaHpLR1lwSUh0Y2JpQWdZMjl1YzNRZ2JYTWdQU0JiWFR0Y2JpQWdabTl5SUNoc1pYUWdhU0E5SURFN0lHa2dQRDBnTVRJN0lHa3JLeWtnZTF4dUlDQWdJR052Ym5OMElHUjBJRDBnUkdGMFpWUnBiV1V1ZFhSaktESXdNVFlzSUdrc0lERXBPMXh1SUNBZ0lHMXpMbkIxYzJnb1ppaGtkQ2twTzF4dUlDQjlYRzRnSUhKbGRIVnliaUJ0Y3p0Y2JuMWNibHh1Wm5WdVkzUnBiMjRnYldGd1YyVmxhMlJoZVhNb1ppa2dlMXh1SUNCamIyNXpkQ0J0Y3lBOUlGdGRPMXh1SUNCbWIzSWdLR3hsZENCcElEMGdNVHNnYVNBOFBTQTNPeUJwS3lzcElIdGNiaUFnSUNCamIyNXpkQ0JrZENBOUlFUmhkR1ZVYVcxbExuVjBZeWd5TURFMkxDQXhNU3dnTVRNZ0t5QnBLVHRjYmlBZ0lDQnRjeTV3ZFhOb0tHWW9aSFFwS1R0Y2JpQWdmVnh1SUNCeVpYUjFjbTRnYlhNN1hHNTlYRzVjYm1aMWJtTjBhVzl1SUd4cGMzUlRkSFZtWmloc2IyTXNJR3hsYm1kMGFDd2daR1ZtWVhWc2RFOUxMQ0JsYm1kc2FYTm9SbTRzSUdsdWRHeEdiaWtnZTF4dUlDQmpiMjV6ZENCdGIyUmxJRDBnYkc5akxteHBjM1JwYm1kTmIyUmxLR1JsWm1GMWJIUlBTeWs3WEc1Y2JpQWdhV1lnS0cxdlpHVWdQVDA5SUZ3aVpYSnliM0pjSWlrZ2UxeHVJQ0FnSUhKbGRIVnliaUJ1ZFd4c08xeHVJQ0I5SUdWc2MyVWdhV1lnS0cxdlpHVWdQVDA5SUZ3aVpXNWNJaWtnZTF4dUlDQWdJSEpsZEhWeWJpQmxibWRzYVhOb1JtNG9iR1Z1WjNSb0tUdGNiaUFnZlNCbGJITmxJSHRjYmlBZ0lDQnlaWFIxY200Z2FXNTBiRVp1S0d4bGJtZDBhQ2s3WEc0Z0lIMWNibjFjYmx4dVpuVnVZM1JwYjI0Z2MzVndjRzl5ZEhOR1lYTjBUblZ0WW1WeWN5aHNiMk1wSUh0Y2JpQWdhV1lnS0d4dll5NXVkVzFpWlhKcGJtZFRlWE4wWlcwZ0ppWWdiRzlqTG01MWJXSmxjbWx1WjFONWMzUmxiU0FoUFQwZ1hDSnNZWFJ1WENJcElIdGNiaUFnSUNCeVpYUjFjbTRnWm1Gc2MyVTdYRzRnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdjbVYwZFhKdUlDaGNiaUFnSUNBZ0lHeHZZeTV1ZFcxaVpYSnBibWRUZVhOMFpXMGdQVDA5SUZ3aWJHRjBibHdpSUh4OFhHNGdJQ0FnSUNBaGJHOWpMbXh2WTJGc1pTQjhmRnh1SUNBZ0lDQWdiRzlqTG14dlkyRnNaUzV6ZEdGeWRITlhhWFJvS0Z3aVpXNWNJaWtnZkh4Y2JpQWdJQ0FnSUc1bGR5QkpiblJzTGtSaGRHVlVhVzFsUm05eWJXRjBLR3h2WXk1cGJuUnNLUzV5WlhOdmJIWmxaRTl3ZEdsdmJuTW9LUzV1ZFcxaVpYSnBibWRUZVhOMFpXMGdQVDA5SUZ3aWJHRjBibHdpWEc0Z0lDQWdLVHRjYmlBZ2ZWeHVmVnh1WEc0dktpcGNiaUFxSUVCd2NtbDJZWFJsWEc0Z0tpOWNibHh1WTJ4aGMzTWdVRzlzZVU1MWJXSmxja1p2Y20xaGRIUmxjaUI3WEc0Z0lHTnZibk4wY25WamRHOXlLR2x1ZEd3c0lHWnZjbU5sVTJsdGNHeGxMQ0J2Y0hSektTQjdYRzRnSUNBZ2RHaHBjeTV3WVdSVWJ5QTlJRzl3ZEhNdWNHRmtWRzhnZkh3Z01EdGNiaUFnSUNCMGFHbHpMbVpzYjI5eUlEMGdiM0IwY3k1bWJHOXZjaUI4ZkNCbVlXeHpaVHRjYmx4dUlDQWdJR052Ym5OMElIc2djR0ZrVkc4c0lHWnNiMjl5TENBdUxpNXZkR2hsY2s5d2RITWdmU0E5SUc5d2RITTdYRzVjYmlBZ0lDQnBaaUFvSVdadmNtTmxVMmx0Y0d4bElIeDhJRTlpYW1WamRDNXJaWGx6S0c5MGFHVnlUM0IwY3lrdWJHVnVaM1JvSUQ0Z01Da2dlMXh1SUNBZ0lDQWdZMjl1YzNRZ2FXNTBiRTl3ZEhNZ1BTQjdJSFZ6WlVkeWIzVndhVzVuT2lCbVlXeHpaU3dnTGk0dWIzQjBjeUI5TzF4dUlDQWdJQ0FnYVdZZ0tHOXdkSE11Y0dGa1ZHOGdQaUF3S1NCcGJuUnNUM0IwY3k1dGFXNXBiWFZ0U1c1MFpXZGxja1JwWjJsMGN5QTlJRzl3ZEhNdWNHRmtWRzg3WEc0Z0lDQWdJQ0IwYUdsekxtbHVaaUE5SUdkbGRFTmhZMmhsWkVsT1JpaHBiblJzTENCcGJuUnNUM0IwY3lrN1hHNGdJQ0FnZlZ4dUlDQjlYRzVjYmlBZ1ptOXliV0YwS0drcElIdGNiaUFnSUNCcFppQW9kR2hwY3k1cGJtWXBJSHRjYmlBZ0lDQWdJR052Ym5OMElHWnBlR1ZrSUQwZ2RHaHBjeTVtYkc5dmNpQS9JRTFoZEdndVpteHZiM0lvYVNrZ09pQnBPMXh1SUNBZ0lDQWdjbVYwZFhKdUlIUm9hWE11YVc1bUxtWnZjbTFoZENobWFYaGxaQ2s3WEc0Z0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDOHZJSFJ2SUcxaGRHTm9JSFJvWlNCaWNtOTNjMlZ5SjNNZ2JuVnRZbVZ5Wm05eWJXRjBkR1Z5SUdSbFptRjFiSFJ6WEc0Z0lDQWdJQ0JqYjI1emRDQm1hWGhsWkNBOUlIUm9hWE11Wm14dmIzSWdQeUJOWVhSb0xtWnNiMjl5S0drcElEb2djbTkxYm1SVWJ5aHBMQ0F6S1R0Y2JpQWdJQ0FnSUhKbGRIVnliaUJ3WVdSVGRHRnlkQ2htYVhobFpDd2dkR2hwY3k1d1lXUlVieWs3WEc0Z0lDQWdmVnh1SUNCOVhHNTlYRzVjYmk4cUtseHVJQ29nUUhCeWFYWmhkR1ZjYmlBcUwxeHVYRzVqYkdGemN5QlFiMng1UkdGMFpVWnZjbTFoZEhSbGNpQjdYRzRnSUdOdmJuTjBjblZqZEc5eUtHUjBMQ0JwYm5Sc0xDQnZjSFJ6S1NCN1hHNGdJQ0FnZEdocGN5NXZjSFJ6SUQwZ2IzQjBjenRjYmx4dUlDQWdJR3hsZENCNk8xeHVJQ0FnSUdsbUlDaGtkQzU2YjI1bExtbHpWVzVwZG1WeWMyRnNLU0I3WEc0Z0lDQWdJQ0F2THlCVlZFTXRPQ0J2Y2lCRmRHTXZWVlJETFRnZ1lYSmxJRzV2ZENCd1lYSjBJRzltSUhSNlpHRjBZU3dnYjI1c2VTQkZkR012UjAxVUt6Z2dZVzVrSUhSb1pTQnNhV3RsTGx4dUlDQWdJQ0FnTHk4Z1ZHaGhkQ0JwY3lCM2FIa2dabWw0WldRdGIyWm1jMlYwSUZSYUlHbHpJSE5sZENCMGJ5QjBhR0YwSUhWdWJHVnpjeUJwZENCcGN6cGNiaUFnSUNBZ0lDOHZJREV1SUZKbGNISmxjMlZ1ZEdsdVp5QnZabVp6WlhRZ01DQjNhR1Z1SUZWVVF5QnBjeUIxYzJWa0lIUnZJRzFoYVc1MFlXbHVJSEJ5WlhacGIzVnpJR0psYUdGMmFXOXlJR0Z1WkNCa2IyVnpJRzV2ZENCaVpXTnZiV1VnUjAxVUxseHVJQ0FnSUNBZ0x5OGdNaTRnVlc1emRYQndiM0owWldRZ1lua2dkR2hsSUdKeWIzZHpaWEk2WEc0Z0lDQWdJQ0F2THlBZ0lDQXRJSE52YldVZ1pHOGdibTkwSUhOMWNIQnZjblFnUlhSakwxeHVJQ0FnSUNBZ0x5OGdJQ0FnTFNBOElFVjBZeTlIVFZRdE1UUXNJRDRnUlhSakwwZE5WQ3N4TWl3Z1lXNWtJRE13TFcxcGJuVjBaU0J2Y2lBME5TMXRhVzUxZEdVZ2IyWm1jMlYwY3lCaGNtVWdibTkwSUhCaGNuUWdiMllnZEhwa1lYUmhYRzRnSUNBZ0lDQmpiMjV6ZENCbmJYUlBabVp6WlhRZ1BTQXRNU0FxSUNoa2RDNXZabVp6WlhRZ0x5QTJNQ2s3WEc0Z0lDQWdJQ0JqYjI1emRDQnZabVp6WlhSYUlEMGdaMjEwVDJabWMyVjBJRDQ5SURBZ1B5QmdSWFJqTDBkTlZDc2tlMmR0ZEU5bVpuTmxkSDFnSURvZ1lFVjBZeTlIVFZRa2UyZHRkRTltWm5ObGRIMWdPMXh1SUNBZ0lDQWdhV1lnS0dSMExtOW1abk5sZENBaFBUMGdNQ0FtSmlCSlFVNUJXbTl1WlM1amNtVmhkR1VvYjJabWMyVjBXaWt1ZG1Gc2FXUXBJSHRjYmlBZ0lDQWdJQ0FnZWlBOUlHOW1abk5sZEZvN1hHNGdJQ0FnSUNBZ0lIUm9hWE11WkhRZ1BTQmtkRHRjYmlBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJQzh2SUU1dmRDQmhiR3dnWm1sNFpXUXRiMlptYzJWMElIcHZibVZ6SUd4cGEyVWdSWFJqTHlzME9qTXdJR0Z5WlNCd2NtVnpaVzUwSUdsdUlIUjZaR0YwWVM1Y2JpQWdJQ0FnSUNBZ0x5OGdVMjhnZDJVZ2FHRjJaU0IwYnlCdFlXdGxJR1J2TGlCVWQyOGdZMkZ6WlhNNlhHNGdJQ0FnSUNBZ0lDOHZJREV1SUZSb1pTQm1iM0p0WVhRZ2IzQjBhVzl1Y3lCMFpXeHNJSFZ6SUhSdklITm9iM2NnZEdobElIcHZibVV1SUZkbElHTmhiaWQwSUdSdklIUm9ZWFFzSUhOdklIUm9aU0JpWlhOMFhHNGdJQ0FnSUNBZ0lDOHZJSGRsSUdOaGJpQmtieUJwY3lCbWIzSnRZWFFnZEdobElHUmhkR1VnYVc0Z1ZWUkRMbHh1SUNBZ0lDQWdJQ0F2THlBeUxpQlVhR1VnWm05eWJXRjBJRzl3ZEdsdmJuTWdaRzl1SjNRZ2RHVnNiQ0IxY3lCMGJ5QnphRzkzSUhSb1pTQjZiMjVsTGlCVWFHVnVJSGRsSUdOaGJpQmhaR3AxYzNRZ2RHaGxiVnh1SUNBZ0lDQWdJQ0F2THlCMGFHVWdkR2x0WlNCaGJtUWdkR1ZzYkNCMGFHVWdabTl5YldGMGRHVnlJSFJ2SUhOb2IzY2dhWFFnZEc4Z2RYTWdhVzRnVlZSRExDQnpieUIwYUdGMElIUm9aU0IwYVcxbElHbHpJSEpwWjJoMFhHNGdJQ0FnSUNBZ0lDOHZJR0Z1WkNCMGFHVWdZbUZrSUhwdmJtVWdaRzlsYzI0bmRDQnphRzkzSUhWd0xseHVJQ0FnSUNBZ0lDQjZJRDBnWENKVlZFTmNJanRjYmlBZ0lDQWdJQ0FnYVdZZ0tHOXdkSE11ZEdsdFpWcHZibVZPWVcxbEtTQjdYRzRnSUNBZ0lDQWdJQ0FnZEdocGN5NWtkQ0E5SUdSME8xeHVJQ0FnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQWdJSFJvYVhNdVpIUWdQU0JrZEM1dlptWnpaWFFnUFQwOUlEQWdQeUJrZENBNklFUmhkR1ZVYVcxbExtWnliMjFOYVd4c2FYTW9aSFF1ZEhNZ0t5QmtkQzV2Wm1aelpYUWdLaUEyTUNBcUlERXdNREFwTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNCOVhHNGdJQ0FnZlNCbGJITmxJR2xtSUNoa2RDNTZiMjVsTG5SNWNHVWdQVDA5SUZ3aWMzbHpkR1Z0WENJcElIdGNiaUFnSUNBZ0lIUm9hWE11WkhRZ1BTQmtkRHRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ2RHaHBjeTVrZENBOUlHUjBPMXh1SUNBZ0lDQWdlaUE5SUdSMExucHZibVV1Ym1GdFpUdGNiaUFnSUNCOVhHNWNiaUFnSUNCamIyNXpkQ0JwYm5Sc1QzQjBjeUE5SUhzZ0xpNHVkR2hwY3k1dmNIUnpJSDA3WEc0Z0lDQWdhV1lnS0hvcElIdGNiaUFnSUNBZ0lHbHVkR3hQY0hSekxuUnBiV1ZhYjI1bElEMGdlanRjYmlBZ0lDQjlYRzRnSUNBZ2RHaHBjeTVrZEdZZ1BTQm5aWFJEWVdOb1pXUkVWRVlvYVc1MGJDd2dhVzUwYkU5d2RITXBPMXh1SUNCOVhHNWNiaUFnWm05eWJXRjBLQ2tnZTF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TG1SMFppNW1iM0p0WVhRb2RHaHBjeTVrZEM1MGIwcFRSR0YwWlNncEtUdGNiaUFnZlZ4dVhHNGdJR1p2Y20xaGRGUnZVR0Z5ZEhNb0tTQjdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVaSFJtTG1admNtMWhkRlJ2VUdGeWRITW9kR2hwY3k1a2RDNTBiMHBUUkdGMFpTZ3BLVHRjYmlBZ2ZWeHVYRzRnSUhKbGMyOXNkbVZrVDNCMGFXOXVjeWdwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1a2RHWXVjbVZ6YjJ4MlpXUlBjSFJwYjI1ektDazdYRzRnSUgxY2JuMWNibHh1THlvcVhHNGdLaUJBY0hKcGRtRjBaVnh1SUNvdlhHNWpiR0Z6Y3lCUWIyeDVVbVZzUm05eWJXRjBkR1Z5SUh0Y2JpQWdZMjl1YzNSeWRXTjBiM0lvYVc1MGJDd2dhWE5GYm1kc2FYTm9MQ0J2Y0hSektTQjdYRzRnSUNBZ2RHaHBjeTV2Y0hSeklEMGdleUJ6ZEhsc1pUb2dYQ0pzYjI1blhDSXNJQzR1TG05d2RITWdmVHRjYmlBZ0lDQnBaaUFvSVdselJXNW5iR2x6YUNBbUppQm9ZWE5TWld4aGRHbDJaU2dwS1NCN1hHNGdJQ0FnSUNCMGFHbHpMbkowWmlBOUlHZGxkRU5oWTJobFpGSlVSaWhwYm5Sc0xDQnZjSFJ6S1R0Y2JpQWdJQ0I5WEc0Z0lIMWNibHh1SUNCbWIzSnRZWFFvWTI5MWJuUXNJSFZ1YVhRcElIdGNiaUFnSUNCcFppQW9kR2hwY3k1eWRHWXBJSHRjYmlBZ0lDQWdJSEpsZEhWeWJpQjBhR2x6TG5KMFppNW1iM0p0WVhRb1kyOTFiblFzSUhWdWFYUXBPMXh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnUlc1bmJHbHphQzVtYjNKdFlYUlNaV3hoZEdsMlpWUnBiV1VvZFc1cGRDd2dZMjkxYm5Rc0lIUm9hWE11YjNCMGN5NXVkVzFsY21sakxDQjBhR2x6TG05d2RITXVjM1I1YkdVZ0lUMDlJRndpYkc5dVoxd2lLVHRjYmlBZ0lDQjlYRzRnSUgxY2JseHVJQ0JtYjNKdFlYUlViMUJoY25SektHTnZkVzUwTENCMWJtbDBLU0I3WEc0Z0lDQWdhV1lnS0hSb2FYTXVjblJtS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnZEdocGN5NXlkR1l1Wm05eWJXRjBWRzlRWVhKMGN5aGpiM1Z1ZEN3Z2RXNXBkQ2s3WEc0Z0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lISmxkSFZ5YmlCYlhUdGNiaUFnSUNCOVhHNGdJSDFjYm4xY2JseHVMeW9xWEc0Z0tpQkFjSEpwZG1GMFpWeHVJQ292WEc1Y2JtVjRjRzl5ZENCa1pXWmhkV3gwSUdOc1lYTnpJRXh2WTJGc1pTQjdYRzRnSUhOMFlYUnBZeUJtY205dFQzQjBjeWh2Y0hSektTQjdYRzRnSUNBZ2NtVjBkWEp1SUV4dlkyRnNaUzVqY21WaGRHVW9iM0IwY3k1c2IyTmhiR1VzSUc5d2RITXViblZ0WW1WeWFXNW5VM2x6ZEdWdExDQnZjSFJ6TG05MWRIQjFkRU5oYkdWdVpHRnlMQ0J2Y0hSekxtUmxabUYxYkhSVWIwVk9LVHRjYmlBZ2ZWeHVYRzRnSUhOMFlYUnBZeUJqY21WaGRHVW9iRzlqWVd4bExDQnVkVzFpWlhKcGJtZFRlWE4wWlcwc0lHOTFkSEIxZEVOaGJHVnVaR0Z5TENCa1pXWmhkV3gwVkc5RlRpQTlJR1poYkhObEtTQjdYRzRnSUNBZ1kyOXVjM1FnYzNCbFkybG1hV1ZrVEc5allXeGxJRDBnYkc5allXeGxJSHg4SUZObGRIUnBibWR6TG1SbFptRjFiSFJNYjJOaGJHVTdYRzRnSUNBZ0x5OGdkR2hsSUhONWMzUmxiU0JzYjJOaGJHVWdhWE1nZFhObFpuVnNJR1p2Y2lCb2RXMWhiaUJ5WldGa1lXSnNaU0J6ZEhKcGJtZHpJR0oxZENCaGJtNXZlV2x1WnlCbWIzSWdjR0Z5YzJsdVp5OW1iM0p0WVhSMGFXNW5JR3R1YjNkdUlHWnZjbTFoZEhOY2JpQWdJQ0JqYjI1emRDQnNiMk5oYkdWU0lEMGdjM0JsWTJsbWFXVmtURzlqWVd4bElIeDhJQ2hrWldaaGRXeDBWRzlGVGlBL0lGd2laVzR0VlZOY0lpQTZJSE41YzNSbGJVeHZZMkZzWlNncEtUdGNiaUFnSUNCamIyNXpkQ0J1ZFcxaVpYSnBibWRUZVhOMFpXMVNJRDBnYm5WdFltVnlhVzVuVTNsemRHVnRJSHg4SUZObGRIUnBibWR6TG1SbFptRjFiSFJPZFcxaVpYSnBibWRUZVhOMFpXMDdYRzRnSUNBZ1kyOXVjM1FnYjNWMGNIVjBRMkZzWlc1a1lYSlNJRDBnYjNWMGNIVjBRMkZzWlc1a1lYSWdmSHdnVTJWMGRHbHVaM011WkdWbVlYVnNkRTkxZEhCMWRFTmhiR1Z1WkdGeU8xeHVJQ0FnSUhKbGRIVnliaUJ1WlhjZ1RHOWpZV3hsS0d4dlkyRnNaVklzSUc1MWJXSmxjbWx1WjFONWMzUmxiVklzSUc5MWRIQjFkRU5oYkdWdVpHRnlVaXdnYzNCbFkybG1hV1ZrVEc5allXeGxLVHRjYmlBZ2ZWeHVYRzRnSUhOMFlYUnBZeUJ5WlhObGRFTmhZMmhsS0NrZ2UxeHVJQ0FnSUhONWMweHZZMkZzWlVOaFkyaGxJRDBnYm5Wc2JEdGNiaUFnSUNCcGJuUnNSRlJEWVdOb1pTQTlJSHQ5TzF4dUlDQWdJR2x1ZEd4T2RXMURZV05vWlNBOUlIdDlPMXh1SUNBZ0lHbHVkR3hTWld4RFlXTm9aU0E5SUh0OU8xeHVJQ0I5WEc1Y2JpQWdjM1JoZEdsaklHWnliMjFQWW1wbFkzUW9leUJzYjJOaGJHVXNJRzUxYldKbGNtbHVaMU41YzNSbGJTd2diM1YwY0hWMFEyRnNaVzVrWVhJZ2ZTQTlJSHQ5S1NCN1hHNGdJQ0FnY21WMGRYSnVJRXh2WTJGc1pTNWpjbVZoZEdVb2JHOWpZV3hsTENCdWRXMWlaWEpwYm1kVGVYTjBaVzBzSUc5MWRIQjFkRU5oYkdWdVpHRnlLVHRjYmlBZ2ZWeHVYRzRnSUdOdmJuTjBjblZqZEc5eUtHeHZZMkZzWlN3Z2JuVnRZbVZ5YVc1bkxDQnZkWFJ3ZFhSRFlXeGxibVJoY2l3Z2MzQmxZMmxtYVdWa1RHOWpZV3hsS1NCN1hHNGdJQ0FnWTI5dWMzUWdXM0JoY25ObFpFeHZZMkZzWlN3Z2NHRnljMlZrVG5WdFltVnlhVzVuVTNsemRHVnRMQ0J3WVhKelpXUlBkWFJ3ZFhSRFlXeGxibVJoY2wwZ1BTQndZWEp6WlV4dlkyRnNaVk4wY21sdVp5aHNiMk5oYkdVcE8xeHVYRzRnSUNBZ2RHaHBjeTVzYjJOaGJHVWdQU0J3WVhKelpXUk1iMk5oYkdVN1hHNGdJQ0FnZEdocGN5NXVkVzFpWlhKcGJtZFRlWE4wWlcwZ1BTQnVkVzFpWlhKcGJtY2dmSHdnY0dGeWMyVmtUblZ0WW1WeWFXNW5VM2x6ZEdWdElIeDhJRzUxYkd3N1hHNGdJQ0FnZEdocGN5NXZkWFJ3ZFhSRFlXeGxibVJoY2lBOUlHOTFkSEIxZEVOaGJHVnVaR0Z5SUh4OElIQmhjbk5sWkU5MWRIQjFkRU5oYkdWdVpHRnlJSHg4SUc1MWJHdzdYRzRnSUNBZ2RHaHBjeTVwYm5Sc0lEMGdhVzUwYkVOdmJtWnBaMU4wY21sdVp5aDBhR2x6TG14dlkyRnNaU3dnZEdocGN5NXVkVzFpWlhKcGJtZFRlWE4wWlcwc0lIUm9hWE11YjNWMGNIVjBRMkZzWlc1a1lYSXBPMXh1WEc0Z0lDQWdkR2hwY3k1M1pXVnJaR0Y1YzBOaFkyaGxJRDBnZXlCbWIzSnRZWFE2SUh0OUxDQnpkR0Z1WkdGc2IyNWxPaUI3ZlNCOU8xeHVJQ0FnSUhSb2FYTXViVzl1ZEdoelEyRmphR1VnUFNCN0lHWnZjbTFoZERvZ2UzMHNJSE4wWVc1a1lXeHZibVU2SUh0OUlIMDdYRzRnSUNBZ2RHaHBjeTV0WlhKcFpHbGxiVU5oWTJobElEMGdiblZzYkR0Y2JpQWdJQ0IwYUdsekxtVnlZVU5oWTJobElEMGdlMzA3WEc1Y2JpQWdJQ0IwYUdsekxuTndaV05wWm1sbFpFeHZZMkZzWlNBOUlITndaV05wWm1sbFpFeHZZMkZzWlR0Y2JpQWdJQ0IwYUdsekxtWmhjM1JPZFcxaVpYSnpRMkZqYUdWa0lEMGdiblZzYkR0Y2JpQWdmVnh1WEc0Z0lHZGxkQ0JtWVhOMFRuVnRZbVZ5Y3lncElIdGNiaUFnSUNCcFppQW9kR2hwY3k1bVlYTjBUblZ0WW1WeWMwTmhZMmhsWkNBOVBTQnVkV3hzS1NCN1hHNGdJQ0FnSUNCMGFHbHpMbVpoYzNST2RXMWlaWEp6UTJGamFHVmtJRDBnYzNWd2NHOXlkSE5HWVhOMFRuVnRZbVZ5Y3loMGFHbHpLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTVtWVhOMFRuVnRZbVZ5YzBOaFkyaGxaRHRjYmlBZ2ZWeHVYRzRnSUd4cGMzUnBibWROYjJSbEtDa2dlMXh1SUNBZ0lHTnZibk4wSUdselFXTjBkV0ZzYkhsRmJpQTlJSFJvYVhNdWFYTkZibWRzYVhOb0tDazdYRzRnSUNBZ1kyOXVjM1FnYUdGelRtOVhaV2x5Wkc1bGMzTWdQVnh1SUNBZ0lDQWdLSFJvYVhNdWJuVnRZbVZ5YVc1blUzbHpkR1Z0SUQwOVBTQnVkV3hzSUh4OElIUm9hWE11Ym5WdFltVnlhVzVuVTNsemRHVnRJRDA5UFNCY0lteGhkRzVjSWlrZ0ppWmNiaUFnSUNBZ0lDaDBhR2x6TG05MWRIQjFkRU5oYkdWdVpHRnlJRDA5UFNCdWRXeHNJSHg4SUhSb2FYTXViM1YwY0hWMFEyRnNaVzVrWVhJZ1BUMDlJRndpWjNKbFoyOXllVndpS1R0Y2JpQWdJQ0J5WlhSMWNtNGdhWE5CWTNSMVlXeHNlVVZ1SUNZbUlHaGhjMDV2VjJWcGNtUnVaWE56SUQ4Z1hDSmxibHdpSURvZ1hDSnBiblJzWENJN1hHNGdJSDFjYmx4dUlDQmpiRzl1WlNoaGJIUnpLU0I3WEc0Z0lDQWdhV1lnS0NGaGJIUnpJSHg4SUU5aWFtVmpkQzVuWlhSUGQyNVFjbTl3WlhKMGVVNWhiV1Z6S0dGc2RITXBMbXhsYm1kMGFDQTlQVDBnTUNrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUhSb2FYTTdYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUJNYjJOaGJHVXVZM0psWVhSbEtGeHVJQ0FnSUNBZ0lDQmhiSFJ6TG14dlkyRnNaU0I4ZkNCMGFHbHpMbk53WldOcFptbGxaRXh2WTJGc1pTeGNiaUFnSUNBZ0lDQWdZV3gwY3k1dWRXMWlaWEpwYm1kVGVYTjBaVzBnZkh3Z2RHaHBjeTV1ZFcxaVpYSnBibWRUZVhOMFpXMHNYRzRnSUNBZ0lDQWdJR0ZzZEhNdWIzVjBjSFYwUTJGc1pXNWtZWElnZkh3Z2RHaHBjeTV2ZFhSd2RYUkRZV3hsYm1SaGNpeGNiaUFnSUNBZ0lDQWdZV3gwY3k1a1pXWmhkV3gwVkc5RlRpQjhmQ0JtWVd4elpWeHVJQ0FnSUNBZ0tUdGNiaUFnSUNCOVhHNGdJSDFjYmx4dUlDQnlaV1JsWm1GMWJIUlViMFZPS0dGc2RITWdQU0I3ZlNrZ2UxeHVJQ0FnSUhKbGRIVnliaUIwYUdsekxtTnNiMjVsS0hzZ0xpNHVZV3gwY3l3Z1pHVm1ZWFZzZEZSdlJVNDZJSFJ5ZFdVZ2ZTazdYRzRnSUgxY2JseHVJQ0J5WldSbFptRjFiSFJVYjFONWMzUmxiU2hoYkhSeklEMGdlMzBwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1amJHOXVaU2g3SUM0dUxtRnNkSE1zSUdSbFptRjFiSFJVYjBWT09pQm1ZV3h6WlNCOUtUdGNiaUFnZlZ4dVhHNGdJRzF2Ym5Sb2N5aHNaVzVuZEdnc0lHWnZjbTFoZENBOUlHWmhiSE5sTENCa1pXWmhkV3gwVDBzZ1BTQjBjblZsS1NCN1hHNGdJQ0FnY21WMGRYSnVJR3hwYzNSVGRIVm1aaWgwYUdsekxDQnNaVzVuZEdnc0lHUmxabUYxYkhSUFN5d2dSVzVuYkdsemFDNXRiMjUwYUhNc0lDZ3BJRDArSUh0Y2JpQWdJQ0FnSUdOdmJuTjBJR2x1ZEd3Z1BTQm1iM0p0WVhRZ1B5QjdJRzF2Ym5Sb09pQnNaVzVuZEdnc0lHUmhlVG9nWENKdWRXMWxjbWxqWENJZ2ZTQTZJSHNnYlc5dWRHZzZJR3hsYm1kMGFDQjlMRnh1SUNBZ0lDQWdJQ0JtYjNKdFlYUlRkSElnUFNCbWIzSnRZWFFnUHlCY0ltWnZjbTFoZEZ3aUlEb2dYQ0p6ZEdGdVpHRnNiMjVsWENJN1hHNGdJQ0FnSUNCcFppQW9JWFJvYVhNdWJXOXVkR2h6UTJGamFHVmJabTl5YldGMFUzUnlYVnRzWlc1bmRHaGRLU0I3WEc0Z0lDQWdJQ0FnSUhSb2FYTXViVzl1ZEdoelEyRmphR1ZiWm05eWJXRjBVM1J5WFZ0c1pXNW5kR2hkSUQwZ2JXRndUVzl1ZEdoektDaGtkQ2tnUFQ0Z2RHaHBjeTVsZUhSeVlXTjBLR1IwTENCcGJuUnNMQ0JjSW0xdmJuUm9YQ0lwS1R0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0FnSUhKbGRIVnliaUIwYUdsekxtMXZiblJvYzBOaFkyaGxXMlp2Y20xaGRGTjBjbDFiYkdWdVozUm9YVHRjYmlBZ0lDQjlLVHRjYmlBZ2ZWeHVYRzRnSUhkbFpXdGtZWGx6S0d4bGJtZDBhQ3dnWm05eWJXRjBJRDBnWm1Gc2MyVXNJR1JsWm1GMWJIUlBTeUE5SUhSeWRXVXBJSHRjYmlBZ0lDQnlaWFIxY200Z2JHbHpkRk4wZFdabUtIUm9hWE1zSUd4bGJtZDBhQ3dnWkdWbVlYVnNkRTlMTENCRmJtZHNhWE5vTG5kbFpXdGtZWGx6TENBb0tTQTlQaUI3WEc0Z0lDQWdJQ0JqYjI1emRDQnBiblJzSUQwZ1ptOXliV0YwWEc0Z0lDQWdJQ0FnSUNBZ1B5QjdJSGRsWld0a1lYazZJR3hsYm1kMGFDd2dlV1ZoY2pvZ1hDSnVkVzFsY21salhDSXNJRzF2Ym5Sb09pQmNJbXh2Ym1kY0lpd2daR0Y1T2lCY0ltNTFiV1Z5YVdOY0lpQjlYRzRnSUNBZ0lDQWdJQ0FnT2lCN0lIZGxaV3RrWVhrNklHeGxibWQwYUNCOUxGeHVJQ0FnSUNBZ0lDQm1iM0p0WVhSVGRISWdQU0JtYjNKdFlYUWdQeUJjSW1admNtMWhkRndpSURvZ1hDSnpkR0Z1WkdGc2IyNWxYQ0k3WEc0Z0lDQWdJQ0JwWmlBb0lYUm9hWE11ZDJWbGEyUmhlWE5EWVdOb1pWdG1iM0p0WVhSVGRISmRXMnhsYm1kMGFGMHBJSHRjYmlBZ0lDQWdJQ0FnZEdocGN5NTNaV1ZyWkdGNWMwTmhZMmhsVzJadmNtMWhkRk4wY2wxYmJHVnVaM1JvWFNBOUlHMWhjRmRsWld0a1lYbHpLQ2hrZENrZ1BUNWNiaUFnSUNBZ0lDQWdJQ0IwYUdsekxtVjRkSEpoWTNRb1pIUXNJR2x1ZEd3c0lGd2lkMlZsYTJSaGVWd2lLVnh1SUNBZ0lDQWdJQ0FwTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJQ0FnY21WMGRYSnVJSFJvYVhNdWQyVmxhMlJoZVhORFlXTm9aVnRtYjNKdFlYUlRkSEpkVzJ4bGJtZDBhRjA3WEc0Z0lDQWdmU2s3WEc0Z0lIMWNibHh1SUNCdFpYSnBaR2xsYlhNb1pHVm1ZWFZzZEU5TElEMGdkSEoxWlNrZ2UxeHVJQ0FnSUhKbGRIVnliaUJzYVhOMFUzUjFabVlvWEc0Z0lDQWdJQ0IwYUdsekxGeHVJQ0FnSUNBZ2RXNWtaV1pwYm1Wa0xGeHVJQ0FnSUNBZ1pHVm1ZWFZzZEU5TExGeHVJQ0FnSUNBZ0tDa2dQVDRnUlc1bmJHbHphQzV0WlhKcFpHbGxiWE1zWEc0Z0lDQWdJQ0FvS1NBOVBpQjdYRzRnSUNBZ0lDQWdJQzh2SUVsdUlIUm9aVzl5ZVNCMGFHVnlaU0JqYjNWc1pDQmlaU0JoY21saWFYUnlZWEo1SUdSaGVTQndaWEpwYjJSekxpQlhaU2R5WlNCbmIyNXVZU0JoYzNOMWJXVWdkR2hsY21VZ1lYSmxJR1Y0WVdOMGJIa2dkSGR2WEc0Z0lDQWdJQ0FnSUM4dklHWnZjaUJCVFNCaGJtUWdVRTB1SUZSb2FYTWdhWE1nY0hKdlltRmliSGtnZDNKdmJtY3NJR0oxZENCcGRDZHpJRzFoYTJWeklIQmhjbk5wYm1jZ2QyRjVJR1ZoYzJsbGNpNWNiaUFnSUNBZ0lDQWdhV1lnS0NGMGFHbHpMbTFsY21sa2FXVnRRMkZqYUdVcElIdGNiaUFnSUNBZ0lDQWdJQ0JqYjI1emRDQnBiblJzSUQwZ2V5Qm9iM1Z5T2lCY0ltNTFiV1Z5YVdOY0lpd2dhRzkxY2tONVkyeGxPaUJjSW1neE1sd2lJSDA3WEc0Z0lDQWdJQ0FnSUNBZ2RHaHBjeTV0WlhKcFpHbGxiVU5oWTJobElEMGdXMFJoZEdWVWFXMWxMblYwWXlneU1ERTJMQ0F4TVN3Z01UTXNJRGtwTENCRVlYUmxWR2x0WlM1MWRHTW9NakF4Tml3Z01URXNJREV6TENBeE9TbGRMbTFoY0NoY2JpQWdJQ0FnSUNBZ0lDQWdJQ2hrZENrZ1BUNGdkR2hwY3k1bGVIUnlZV04wS0dSMExDQnBiblJzTENCY0ltUmhlWEJsY21sdlpGd2lLVnh1SUNBZ0lDQWdJQ0FnSUNrN1hHNGdJQ0FnSUNBZ0lIMWNibHh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdkR2hwY3k1dFpYSnBaR2xsYlVOaFkyaGxPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lDazdYRzRnSUgxY2JseHVJQ0JsY21GektHeGxibWQwYUN3Z1pHVm1ZWFZzZEU5TElEMGdkSEoxWlNrZ2UxeHVJQ0FnSUhKbGRIVnliaUJzYVhOMFUzUjFabVlvZEdocGN5d2diR1Z1WjNSb0xDQmtaV1poZFd4MFQwc3NJRVZ1WjJ4cGMyZ3VaWEpoY3l3Z0tDa2dQVDRnZTF4dUlDQWdJQ0FnWTI5dWMzUWdhVzUwYkNBOUlIc2daWEpoT2lCc1pXNW5kR2dnZlR0Y2JseHVJQ0FnSUNBZ0x5OGdWR2hwY3lCcGN5QndjbTlpYkdWdFlYUnBZeTRnUkdsbVptVnlaVzUwSUdOaGJHVnVaR0Z5Y3lCaGNtVWdaMjlwYm1jZ2RHOGdaR1ZtYVc1bElHVnlZWE1nZEc5MFlXeHNlU0JrYVdabVpYSmxiblJzZVM0Z1YyaGhkQ0JKSUc1bFpXUWdhWE1nZEdobElHMXBibWx0ZFcwZ2MyVjBJRzltSUdSaGRHVnpYRzRnSUNBZ0lDQXZMeUIwYnlCa1pXWnBibWwwWld4NUlHVnVkVzFsY21GMFpTQjBhR1Z0TGx4dUlDQWdJQ0FnYVdZZ0tDRjBhR2x6TG1WeVlVTmhZMmhsVzJ4bGJtZDBhRjBwSUh0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTVsY21GRFlXTm9aVnRzWlc1bmRHaGRJRDBnVzBSaGRHVlVhVzFsTG5WMFl5Z3ROREFzSURFc0lERXBMQ0JFWVhSbFZHbHRaUzUxZEdNb01qQXhOeXdnTVN3Z01TbGRMbTFoY0Nnb1pIUXBJRDArWEc0Z0lDQWdJQ0FnSUNBZ2RHaHBjeTVsZUhSeVlXTjBLR1IwTENCcGJuUnNMQ0JjSW1WeVlWd2lLVnh1SUNBZ0lDQWdJQ0FwTzF4dUlDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNCeVpYUjFjbTRnZEdocGN5NWxjbUZEWVdOb1pWdHNaVzVuZEdoZE8xeHVJQ0FnSUgwcE8xeHVJQ0I5WEc1Y2JpQWdaWGgwY21GamRDaGtkQ3dnYVc1MGJFOXdkSE1zSUdacFpXeGtLU0I3WEc0Z0lDQWdZMjl1YzNRZ1pHWWdQU0IwYUdsekxtUjBSbTl5YldGMGRHVnlLR1IwTENCcGJuUnNUM0IwY3lrc1hHNGdJQ0FnSUNCeVpYTjFiSFJ6SUQwZ1pHWXVabTl5YldGMFZHOVFZWEowY3lncExGeHVJQ0FnSUNBZ2JXRjBZMmhwYm1jZ1BTQnlaWE4xYkhSekxtWnBibVFvS0cwcElEMCtJRzB1ZEhsd1pTNTBiMHh2ZDJWeVEyRnpaU2dwSUQwOVBTQm1hV1ZzWkNrN1hHNGdJQ0FnY21WMGRYSnVJRzFoZEdOb2FXNW5JRDhnYldGMFkyaHBibWN1ZG1Gc2RXVWdPaUJ1ZFd4c08xeHVJQ0I5WEc1Y2JpQWdiblZ0WW1WeVJtOXliV0YwZEdWeUtHOXdkSE1nUFNCN2ZTa2dlMXh1SUNBZ0lDOHZJSFJvYVhNZ1ptOXlZMlZ6YVcxd2JHVWdiM0IwYVc5dUlHbHpJRzVsZG1WeUlIVnpaV1FnS0hSb1pTQnZibXg1SUdOaGJHeGxjaUJ6YUc5eWRDMWphWEpqZFdsMGN5QnZiaUJwZEN3Z1luVjBJR2wwSUhObFpXMXpJSE5oWm1WeUlIUnZJR3hsWVhabEtWeHVJQ0FnSUM4dklDaHBiaUJqYjI1MGNtRnpkQ3dnZEdobElISmxjM1FnYjJZZ2RHaGxJR052Ym1ScGRHbHZiaUJwY3lCMWMyVmtJR2hsWVhacGJIa3BYRzRnSUNBZ2NtVjBkWEp1SUc1bGR5QlFiMng1VG5WdFltVnlSbTl5YldGMGRHVnlLSFJvYVhNdWFXNTBiQ3dnYjNCMGN5NW1iM0pqWlZOcGJYQnNaU0I4ZkNCMGFHbHpMbVpoYzNST2RXMWlaWEp6TENCdmNIUnpLVHRjYmlBZ2ZWeHVYRzRnSUdSMFJtOXliV0YwZEdWeUtHUjBMQ0JwYm5Sc1QzQjBjeUE5SUh0OUtTQjdYRzRnSUNBZ2NtVjBkWEp1SUc1bGR5QlFiMng1UkdGMFpVWnZjbTFoZEhSbGNpaGtkQ3dnZEdocGN5NXBiblJzTENCcGJuUnNUM0IwY3lrN1hHNGdJSDFjYmx4dUlDQnlaV3hHYjNKdFlYUjBaWElvYjNCMGN5QTlJSHQ5S1NCN1hHNGdJQ0FnY21WMGRYSnVJRzVsZHlCUWIyeDVVbVZzUm05eWJXRjBkR1Z5S0hSb2FYTXVhVzUwYkN3Z2RHaHBjeTVwYzBWdVoyeHBjMmdvS1N3Z2IzQjBjeWs3WEc0Z0lIMWNibHh1SUNCc2FYTjBSbTl5YldGMGRHVnlLRzl3ZEhNZ1BTQjdmU2tnZTF4dUlDQWdJSEpsZEhWeWJpQm5aWFJEWVdOb1pXUk1SaWgwYUdsekxtbHVkR3dzSUc5d2RITXBPMXh1SUNCOVhHNWNiaUFnYVhORmJtZHNhWE5vS0NrZ2UxeHVJQ0FnSUhKbGRIVnliaUFvWEc0Z0lDQWdJQ0IwYUdsekxteHZZMkZzWlNBOVBUMGdYQ0psYmx3aUlIeDhYRzRnSUNBZ0lDQjBhR2x6TG14dlkyRnNaUzUwYjB4dmQyVnlRMkZ6WlNncElEMDlQU0JjSW1WdUxYVnpYQ0lnZkh4Y2JpQWdJQ0FnSUc1bGR5QkpiblJzTGtSaGRHVlVhVzFsUm05eWJXRjBLSFJvYVhNdWFXNTBiQ2t1Y21WemIyeDJaV1JQY0hScGIyNXpLQ2t1Ykc5allXeGxMbk4wWVhKMGMxZHBkR2dvWENKbGJpMTFjMXdpS1Z4dUlDQWdJQ2s3WEc0Z0lIMWNibHh1SUNCbGNYVmhiSE1vYjNSb1pYSXBJSHRjYmlBZ0lDQnlaWFIxY200Z0tGeHVJQ0FnSUNBZ2RHaHBjeTVzYjJOaGJHVWdQVDA5SUc5MGFHVnlMbXh2WTJGc1pTQW1KbHh1SUNBZ0lDQWdkR2hwY3k1dWRXMWlaWEpwYm1kVGVYTjBaVzBnUFQwOUlHOTBhR1Z5TG01MWJXSmxjbWx1WjFONWMzUmxiU0FtSmx4dUlDQWdJQ0FnZEdocGN5NXZkWFJ3ZFhSRFlXeGxibVJoY2lBOVBUMGdiM1JvWlhJdWIzVjBjSFYwUTJGc1pXNWtZWEpjYmlBZ0lDQXBPMXh1SUNCOVhHNTlYRzRpTENBaWFXMXdiM0owSUh0Y2JpQWdkVzUwY25WdVkyRjBaVmxsWVhJc1hHNGdJSE5wWjI1bFpFOW1abk5sZEN4Y2JpQWdjR0Z5YzJWSmJuUmxaMlZ5TEZ4dUlDQndZWEp6WlUxcGJHeHBjeXhjYmlBZ2FXRnVZVkpsWjJWNExGeHVJQ0JwYzFWdVpHVm1hVzVsWkN4Y2JpQWdjR0Z5YzJWR2JHOWhkR2x1WjF4dWZTQm1jbTl0SUZ3aUxpOTFkR2xzTG1welhDSTdYRzVwYlhCdmNuUWdLaUJoY3lCRmJtZHNhWE5vSUdaeWIyMGdYQ0l1TDJWdVoyeHBjMmd1YW5OY0lqdGNibWx0Y0c5eWRDQkdhWGhsWkU5bVpuTmxkRnB2Ym1VZ1puSnZiU0JjSWk0dUwzcHZibVZ6TDJacGVHVmtUMlptYzJWMFdtOXVaUzVxYzF3aU8xeHVhVzF3YjNKMElFbEJUa0ZhYjI1bElHWnliMjBnWENJdUxpOTZiMjVsY3k5SlFVNUJXbTl1WlM1cWMxd2lPMXh1WEc0dktseHVJQ29nVkdocGN5Qm1hV3hsSUdoaGJtUnNaWE1nY0dGeWMybHVaeUJtYjNJZ2QyVnNiQzF6Y0dWamFXWnBaV1FnWm05eWJXRjBjeTRnU0dWeVpTZHpJR2h2ZHlCcGRDQjNiM0pyY3pwY2JpQXFJRlIzYnlCMGFHbHVaM01nWjI4Z2FXNTBieUJ3WVhKemFXNW5PaUJoSUhKbFoyVjRJSFJ2SUcxaGRHTm9JSGRwZEdnZ1lXNWtJR0Z1SUdWNGRISmhZM1J2Y2lCMGJ5QjBZV3RsSUdGd1lYSjBJSFJvWlNCbmNtOTFjSE1nYVc0Z2RHaGxJRzFoZEdOb0xseHVJQ29nUVc0Z1pYaDBjbUZqZEc5eUlHbHpJR3AxYzNRZ1lTQm1kVzVqZEdsdmJpQjBhR0YwSUhSaGEyVnpJR0VnY21WblpYZ2diV0YwWTJnZ1lYSnlZWGtnWVc1a0lISmxkSFZ5Ym5NZ1lTQjdJSGxsWVhJNklDNHVMaXdnYlc5dWRHZzZJQzR1TGlCOUlHOWlhbVZqZEZ4dUlDb2djR0Z5YzJVb0tTQmtiMlZ6SUhSb1pTQjNiM0pySUc5bUlHVjRaV04xZEdsdVp5QjBhR1VnY21WblpYZ2dZVzVrSUdGd2NHeDVhVzVuSUhSb1pTQmxlSFJ5WVdOMGIzSXVJRWwwSUhSaGEyVnpJRzExYkhScGNHeGxJSEpsWjJWNEwyVjRkSEpoWTNSdmNpQndZV2x5Y3lCMGJ5QjBjbmtnYVc0Z2MyVnhkV1Z1WTJVdVhHNGdLaUJGZUhSeVlXTjBiM0p6SUdOaGJpQjBZV3RsSUdFZ1hDSmpkWEp6YjNKY0lpQnlaWEJ5WlhObGJuUnBibWNnZEdobElHOW1abk5sZENCcGJpQjBhR1VnYldGMFkyZ2dkRzhnYkc5dmF5QmhkQzRnVkdocGN5QnRZV3RsY3lCcGRDQmxZWE41SUhSdklHTnZiV0pwYm1VZ1pYaDBjbUZqZEc5eWN5NWNiaUFxSUdOdmJXSnBibVZGZUhSeVlXTjBiM0p6S0NrZ1pHOWxjeUIwYUdVZ2QyOXlheUJ2WmlCamIyMWlhVzVwYm1jZ2RHaGxiU3dnYTJWbGNHbHVaeUIwY21GamF5QnZaaUIwYUdVZ1kzVnljMjl5SUhSb2NtOTFaMmdnYlhWc2RHbHdiR1VnWlhoMGNtRmpkR2x2Ym5NdVhHNGdLaUJUYjIxbElHVjRkSEpoWTNScGIyNXpJR0Z5WlNCemRYQmxjaUJrZFcxaUlHRnVaQ0J6YVcxd2JHVlFZWEp6WlNCaGJtUWdabkp2YlZOMGNtbHVaM01nYUdWc2NDQkVVbGtnZEdobGJTNWNiaUFxTDF4dVhHNW1kVzVqZEdsdmJpQmpiMjFpYVc1bFVtVm5aWGhsY3lndUxpNXlaV2RsZUdWektTQjdYRzRnSUdOdmJuTjBJR1oxYkd3Z1BTQnlaV2RsZUdWekxuSmxaSFZqWlNnb1ppd2djaWtnUFQ0Z1ppQXJJSEl1YzI5MWNtTmxMQ0JjSWx3aUtUdGNiaUFnY21WMGRYSnVJRkpsWjBWNGNDaGdYaVI3Wm5Wc2JIMGtZQ2s3WEc1OVhHNWNibVoxYm1OMGFXOXVJR052YldKcGJtVkZlSFJ5WVdOMGIzSnpLQzR1TG1WNGRISmhZM1J2Y25NcElIdGNiaUFnY21WMGRYSnVJRzBnUFQ1Y2JpQWdJQ0JsZUhSeVlXTjBiM0p6WEc0Z0lDQWdJQ0F1Y21Wa2RXTmxLRnh1SUNBZ0lDQWdJQ0FvVzIxbGNtZGxaRlpoYkhNc0lHMWxjbWRsWkZwdmJtVXNJR04xY25OdmNsMHNJR1Y0S1NBOVBpQjdYRzRnSUNBZ0lDQWdJQ0FnWTI5dWMzUWdXM1poYkN3Z2VtOXVaU3dnYm1WNGRGMGdQU0JsZUNodExDQmpkWEp6YjNJcE8xeHVJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQmJleUF1TGk1dFpYSm5aV1JXWVd4ekxDQXVMaTUyWVd3Z2ZTd2dlbTl1WlNCOGZDQnRaWEpuWldSYWIyNWxMQ0J1WlhoMFhUdGNiaUFnSUNBZ0lDQWdmU3hjYmlBZ0lDQWdJQ0FnVzN0OUxDQnVkV3hzTENBeFhWeHVJQ0FnSUNBZ0tWeHVJQ0FnSUNBZ0xuTnNhV05sS0RBc0lESXBPMXh1ZlZ4dVhHNW1kVzVqZEdsdmJpQndZWEp6WlNoekxDQXVMaTV3WVhSMFpYSnVjeWtnZTF4dUlDQnBaaUFvY3lBOVBTQnVkV3hzS1NCN1hHNGdJQ0FnY21WMGRYSnVJRnR1ZFd4c0xDQnVkV3hzWFR0Y2JpQWdmVnh1WEc0Z0lHWnZjaUFvWTI5dWMzUWdXM0psWjJWNExDQmxlSFJ5WVdOMGIzSmRJRzltSUhCaGRIUmxjbTV6S1NCN1hHNGdJQ0FnWTI5dWMzUWdiU0E5SUhKbFoyVjRMbVY0WldNb2N5azdYRzRnSUNBZ2FXWWdLRzBwSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUJsZUhSeVlXTjBiM0lvYlNrN1hHNGdJQ0FnZlZ4dUlDQjlYRzRnSUhKbGRIVnliaUJiYm5Wc2JDd2diblZzYkYwN1hHNTlYRzVjYm1aMWJtTjBhVzl1SUhOcGJYQnNaVkJoY25ObEtDNHVMbXRsZVhNcElIdGNiaUFnY21WMGRYSnVJQ2h0WVhSamFDd2dZM1Z5YzI5eUtTQTlQaUI3WEc0Z0lDQWdZMjl1YzNRZ2NtVjBJRDBnZTMwN1hHNGdJQ0FnYkdWMElHazdYRzVjYmlBZ0lDQm1iM0lnS0drZ1BTQXdPeUJwSUR3Z2EyVjVjeTVzWlc1bmRHZzdJR2tyS3lrZ2UxeHVJQ0FnSUNBZ2NtVjBXMnRsZVhOYmFWMWRJRDBnY0dGeWMyVkpiblJsWjJWeUtHMWhkR05vVzJOMWNuTnZjaUFySUdsZEtUdGNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJRnR5WlhRc0lHNTFiR3dzSUdOMWNuTnZjaUFySUdsZE8xeHVJQ0I5TzF4dWZWeHVYRzR2THlCSlUwOGdZVzVrSUZOUlRDQndZWEp6YVc1blhHNWpiMjV6ZENCdlptWnpaWFJTWldkbGVDQTlJQzhvUHpvb1dpbDhLRnNyTFYxY1hHUmNYR1FwS0Q4Nk9qOG9YRnhrWEZ4a0tTay9LUzg3WEc1amIyNXpkQ0JwYzI5RmVIUmxibVJsWkZwdmJtVWdQU0JnS0Q4NkpIdHZabVp6WlhSU1pXZGxlQzV6YjNWeVkyVjlQeWcvT2x4Y1hGeGJLQ1I3YVdGdVlWSmxaMlY0TG5OdmRYSmpaWDBwWEZ4Y1hGMHBQeWsvWUR0Y2JtTnZibk4wSUdsemIxUnBiV1ZDWVhObFVtVm5aWGdnUFNBdktGeGNaRnhjWkNrb1B6bzZQeWhjWEdSY1hHUXBLRDg2T2o4b1hGeGtYRnhrS1NnL09sc3VMRjBvWEZ4a2V6RXNNekI5S1NrL0tUOHBQeTg3WEc1amIyNXpkQ0JwYzI5VWFXMWxVbVZuWlhnZ1BTQlNaV2RGZUhBb1lDUjdhWE52VkdsdFpVSmhjMlZTWldkbGVDNXpiM1Z5WTJWOUpIdHBjMjlGZUhSbGJtUmxaRnB2Ym1WOVlDazdYRzVqYjI1emRDQnBjMjlVYVcxbFJYaDBaVzV6YVc5dVVtVm5aWGdnUFNCU1pXZEZlSEFvWUNnL09sUWtlMmx6YjFScGJXVlNaV2RsZUM1emIzVnlZMlY5S1Q5Z0tUdGNibU52Ym5OMElHbHpiMWx0WkZKbFoyVjRJRDBnTHloYkt5MWRYRnhrZXpaOWZGeGNaSHMwZlNrb1B6b3RQeWhjWEdSY1hHUXBLRDg2TFQ4b1hGeGtYRnhrS1NrL0tUOHZPMXh1WTI5dWMzUWdhWE52VjJWbGExSmxaMlY0SUQwZ0x5aGNYR1I3TkgwcExUOVhLRnhjWkZ4Y1pDa29Qem90UHloY1hHUXBLVDh2TzF4dVkyOXVjM1FnYVhOdlQzSmthVzVoYkZKbFoyVjRJRDBnTHloY1hHUjdOSDBwTFQ4b1hGeGtlek45S1M4N1hHNWpiMjV6ZENCbGVIUnlZV04wU1ZOUFYyVmxhMFJoZEdFZ1BTQnphVzF3YkdWUVlYSnpaU2hjSW5kbFpXdFpaV0Z5WENJc0lGd2lkMlZsYTA1MWJXSmxjbHdpTENCY0luZGxaV3RFWVhsY0lpazdYRzVqYjI1emRDQmxlSFJ5WVdOMFNWTlBUM0prYVc1aGJFUmhkR0VnUFNCemFXMXdiR1ZRWVhKelpTaGNJbmxsWVhKY0lpd2dYQ0p2Y21ScGJtRnNYQ0lwTzF4dVkyOXVjM1FnYzNGc1dXMWtVbVZuWlhnZ1BTQXZLRnhjWkhzMGZTa3RLRnhjWkZ4Y1pDa3RLRnhjWkZ4Y1pDa3ZPeUF2THlCa2RXMWlaV1F0Wkc5M2JpQjJaWEp6YVc5dUlHOW1JSFJvWlNCSlUwOGdiMjVsWEc1amIyNXpkQ0J6Y1d4VWFXMWxVbVZuWlhnZ1BTQlNaV2RGZUhBb1hHNGdJR0FrZTJsemIxUnBiV1ZDWVhObFVtVm5aWGd1YzI5MWNtTmxmU0EvS0Q4NkpIdHZabVp6WlhSU1pXZGxlQzV6YjNWeVkyVjlmQ2drZTJsaGJtRlNaV2RsZUM1emIzVnlZMlY5S1NrL1lGeHVLVHRjYm1OdmJuTjBJSE54YkZScGJXVkZlSFJsYm5OcGIyNVNaV2RsZUNBOUlGSmxaMFY0Y0NoZ0tEODZJQ1I3YzNGc1ZHbHRaVkpsWjJWNExuTnZkWEpqWlgwcFAyQXBPMXh1WEc1bWRXNWpkR2x2YmlCcGJuUW9iV0YwWTJnc0lIQnZjeXdnWm1Gc2JHSmhZMnNwSUh0Y2JpQWdZMjl1YzNRZ2JTQTlJRzFoZEdOb1czQnZjMTA3WEc0Z0lISmxkSFZ5YmlCcGMxVnVaR1ZtYVc1bFpDaHRLU0EvSUdaaGJHeGlZV05ySURvZ2NHRnljMlZKYm5SbFoyVnlLRzBwTzF4dWZWeHVYRzVtZFc1amRHbHZiaUJsZUhSeVlXTjBTVk5QV1cxa0tHMWhkR05vTENCamRYSnpiM0lwSUh0Y2JpQWdZMjl1YzNRZ2FYUmxiU0E5SUh0Y2JpQWdJQ0I1WldGeU9pQnBiblFvYldGMFkyZ3NJR04xY25OdmNpa3NYRzRnSUNBZ2JXOXVkR2c2SUdsdWRDaHRZWFJqYUN3Z1kzVnljMjl5SUNzZ01Td2dNU2tzWEc0Z0lDQWdaR0Y1T2lCcGJuUW9iV0YwWTJnc0lHTjFjbk52Y2lBcklESXNJREVwWEc0Z0lIMDdYRzVjYmlBZ2NtVjBkWEp1SUZ0cGRHVnRMQ0J1ZFd4c0xDQmpkWEp6YjNJZ0t5QXpYVHRjYm4xY2JseHVablZ1WTNScGIyNGdaWGgwY21GamRFbFRUMVJwYldVb2JXRjBZMmdzSUdOMWNuTnZjaWtnZTF4dUlDQmpiMjV6ZENCcGRHVnRJRDBnZTF4dUlDQWdJR2h2ZFhKek9pQnBiblFvYldGMFkyZ3NJR04xY25OdmNpd2dNQ2tzWEc0Z0lDQWdiV2x1ZFhSbGN6b2dhVzUwS0cxaGRHTm9MQ0JqZFhKemIzSWdLeUF4TENBd0tTeGNiaUFnSUNCelpXTnZibVJ6T2lCcGJuUW9iV0YwWTJnc0lHTjFjbk52Y2lBcklESXNJREFwTEZ4dUlDQWdJRzFwYkd4cGMyVmpiMjVrY3pvZ2NHRnljMlZOYVd4c2FYTW9iV0YwWTJoYlkzVnljMjl5SUNzZ00xMHBYRzRnSUgwN1hHNWNiaUFnY21WMGRYSnVJRnRwZEdWdExDQnVkV3hzTENCamRYSnpiM0lnS3lBMFhUdGNibjFjYmx4dVpuVnVZM1JwYjI0Z1pYaDBjbUZqZEVsVFQwOW1abk5sZENodFlYUmphQ3dnWTNWeWMyOXlLU0I3WEc0Z0lHTnZibk4wSUd4dlkyRnNJRDBnSVcxaGRHTm9XMk4xY25OdmNsMGdKaVlnSVcxaGRHTm9XMk4xY25OdmNpQXJJREZkTEZ4dUlDQWdJR1oxYkd4UFptWnpaWFFnUFNCemFXZHVaV1JQWm1aelpYUW9iV0YwWTJoYlkzVnljMjl5SUNzZ01WMHNJRzFoZEdOb1cyTjFjbk52Y2lBcklESmRLU3hjYmlBZ0lDQjZiMjVsSUQwZ2JHOWpZV3dnUHlCdWRXeHNJRG9nUm1sNFpXUlBabVp6WlhSYWIyNWxMbWx1YzNSaGJtTmxLR1oxYkd4UFptWnpaWFFwTzF4dUlDQnlaWFIxY200Z1czdDlMQ0I2YjI1bExDQmpkWEp6YjNJZ0t5QXpYVHRjYm4xY2JseHVablZ1WTNScGIyNGdaWGgwY21GamRFbEJUa0ZhYjI1bEtHMWhkR05vTENCamRYSnpiM0lwSUh0Y2JpQWdZMjl1YzNRZ2VtOXVaU0E5SUcxaGRHTm9XMk4xY25OdmNsMGdQeUJKUVU1QldtOXVaUzVqY21WaGRHVW9iV0YwWTJoYlkzVnljMjl5WFNrZ09pQnVkV3hzTzF4dUlDQnlaWFIxY200Z1czdDlMQ0I2YjI1bExDQmpkWEp6YjNJZ0t5QXhYVHRjYm4xY2JseHVMeThnU1ZOUElIUnBiV1VnY0dGeWMybHVaMXh1WEc1amIyNXpkQ0JwYzI5VWFXMWxUMjVzZVNBOUlGSmxaMFY0Y0NoZ1hsUS9KSHRwYzI5VWFXMWxRbUZ6WlZKbFoyVjRMbk52ZFhKalpYMGtZQ2s3WEc1Y2JpOHZJRWxUVHlCa2RYSmhkR2x2YmlCd1lYSnphVzVuWEc1Y2JtTnZibk4wSUdsemIwUjFjbUYwYVc5dUlEMGdMMTR0UDFBb1B6b29Qem9vTFQ5Y1hHUjdNU3d5TUgwb1B6cGNYQzVjWEdSN01Td3lNSDBwUHlsWktUOG9Qem9vTFQ5Y1hHUjdNU3d5TUgwb1B6cGNYQzVjWEdSN01Td3lNSDBwUHlsTktUOG9Qem9vTFQ5Y1hHUjdNU3d5TUgwb1B6cGNYQzVjWEdSN01Td3lNSDBwUHlsWEtUOG9Qem9vTFQ5Y1hHUjdNU3d5TUgwb1B6cGNYQzVjWEdSN01Td3lNSDBwUHlsRUtUOG9QenBVS0Q4NktDMC9YRnhrZXpFc01qQjlLRDg2WEZ3dVhGeGtlekVzTWpCOUtUOHBTQ2svS0Q4NktDMC9YRnhrZXpFc01qQjlLRDg2WEZ3dVhGeGtlekVzTWpCOUtUOHBUU2svS0Q4NktDMC9YRnhrZXpFc01qQjlLU2cvT2xzdUxGMG9MVDljWEdSN01Td3lNSDBwS1Q5VEtUOHBQeWtrTHp0Y2JseHVablZ1WTNScGIyNGdaWGgwY21GamRFbFRUMFIxY21GMGFXOXVLRzFoZEdOb0tTQjdYRzRnSUdOdmJuTjBJRnRjYmlBZ0lDQnpMRnh1SUNBZ0lIbGxZWEpUZEhJc1hHNGdJQ0FnYlc5dWRHaFRkSElzWEc0Z0lDQWdkMlZsYTFOMGNpeGNiaUFnSUNCa1lYbFRkSElzWEc0Z0lDQWdhRzkxY2xOMGNpeGNiaUFnSUNCdGFXNTFkR1ZUZEhJc1hHNGdJQ0FnYzJWamIyNWtVM1J5TEZ4dUlDQWdJRzFwYkd4cGMyVmpiMjVrYzFOMGNseHVJQ0JkSUQwZ2JXRjBZMmc3WEc1Y2JpQWdZMjl1YzNRZ2FHRnpUbVZuWVhScGRtVlFjbVZtYVhnZ1BTQnpXekJkSUQwOVBTQmNJaTFjSWp0Y2JpQWdZMjl1YzNRZ2JtVm5ZWFJwZG1WVFpXTnZibVJ6SUQwZ2MyVmpiMjVrVTNSeUlDWW1JSE5sWTI5dVpGTjBjbHN3WFNBOVBUMGdYQ0l0WENJN1hHNWNiaUFnWTI5dWMzUWdiV0Y1WW1WT1pXZGhkR1VnUFNBb2JuVnRMQ0JtYjNKalpTQTlJR1poYkhObEtTQTlQbHh1SUNBZ0lHNTFiU0FoUFQwZ2RXNWtaV1pwYm1Wa0lDWW1JQ2htYjNKalpTQjhmQ0FvYm5WdElDWW1JR2hoYzA1bFoyRjBhWFpsVUhKbFptbDRLU2tnUHlBdGJuVnRJRG9nYm5WdE8xeHVYRzRnSUhKbGRIVnliaUJiWEc0Z0lDQWdlMXh1SUNBZ0lDQWdlV1ZoY25NNklHMWhlV0psVG1WbllYUmxLSEJoY25ObFJteHZZWFJwYm1jb2VXVmhjbE4wY2lrcExGeHVJQ0FnSUNBZ2JXOXVkR2h6T2lCdFlYbGlaVTVsWjJGMFpTaHdZWEp6WlVac2IyRjBhVzVuS0cxdmJuUm9VM1J5S1Nrc1hHNGdJQ0FnSUNCM1pXVnJjem9nYldGNVltVk9aV2RoZEdVb2NHRnljMlZHYkc5aGRHbHVaeWgzWldWclUzUnlLU2tzWEc0Z0lDQWdJQ0JrWVhsek9pQnRZWGxpWlU1bFoyRjBaU2h3WVhKelpVWnNiMkYwYVc1bktHUmhlVk4wY2lrcExGeHVJQ0FnSUNBZ2FHOTFjbk02SUcxaGVXSmxUbVZuWVhSbEtIQmhjbk5sUm14dllYUnBibWNvYUc5MWNsTjBjaWtwTEZ4dUlDQWdJQ0FnYldsdWRYUmxjem9nYldGNVltVk9aV2RoZEdVb2NHRnljMlZHYkc5aGRHbHVaeWh0YVc1MWRHVlRkSElwS1N4Y2JpQWdJQ0FnSUhObFkyOXVaSE02SUcxaGVXSmxUbVZuWVhSbEtIQmhjbk5sUm14dllYUnBibWNvYzJWamIyNWtVM1J5S1N3Z2MyVmpiMjVrVTNSeUlEMDlQU0JjSWkwd1hDSXBMRnh1SUNBZ0lDQWdiV2xzYkdselpXTnZibVJ6T2lCdFlYbGlaVTVsWjJGMFpTaHdZWEp6WlUxcGJHeHBjeWh0YVd4c2FYTmxZMjl1WkhOVGRISXBMQ0J1WldkaGRHbDJaVk5sWTI5dVpITXBYRzRnSUNBZ2ZWeHVJQ0JkTzF4dWZWeHVYRzR2THlCVWFHVnpaU0JoY21VZ1lTQnNhWFIwYkdVZ1luSmhhVzVrWldGa0xpQkZSRlFnS25Ob2IzVnNaQ29nZEdWc2JDQjFjeUIwYUdGMElIZGxKM0psSUdsdUxDQnpZWGtzSUVGdFpYSnBZMkV2VG1WM1gxbHZjbXRjYmk4dklHRnVaQ0J1YjNRZ2FuVnpkQ0IwYUdGMElIZGxKM0psSUdsdUlDMHlOREFnS25KcFoyaDBJRzV2ZHlvdUlFSjFkQ0J6YVc1alpTQkpJR1J2YmlkMElIUm9hVzVySUhSb1pYTmxJR0Z5WlNCMWMyVmtJSFJvWVhRZ2IyWjBaVzVjYmk4dklFa25iU0JxZFhOMElHZHZhVzVuSUhSdklHbG5ibTl5WlNCMGFHRjBYRzVqYjI1emRDQnZZbk5QWm1aelpYUnpJRDBnZTF4dUlDQkhUVlE2SURBc1hHNGdJRVZFVkRvZ0xUUWdLaUEyTUN4Y2JpQWdSVk5VT2lBdE5TQXFJRFl3TEZ4dUlDQkRSRlE2SUMwMUlDb2dOakFzWEc0Z0lFTlRWRG9nTFRZZ0tpQTJNQ3hjYmlBZ1RVUlVPaUF0TmlBcUlEWXdMRnh1SUNCTlUxUTZJQzAzSUNvZ05qQXNYRzRnSUZCRVZEb2dMVGNnS2lBMk1DeGNiaUFnVUZOVU9pQXRPQ0FxSURZd1hHNTlPMXh1WEc1bWRXNWpkR2x2YmlCbWNtOXRVM1J5YVc1bmN5aDNaV1ZyWkdGNVUzUnlMQ0I1WldGeVUzUnlMQ0J0YjI1MGFGTjBjaXdnWkdGNVUzUnlMQ0JvYjNWeVUzUnlMQ0J0YVc1MWRHVlRkSElzSUhObFkyOXVaRk4wY2lrZ2UxeHVJQ0JqYjI1emRDQnlaWE4xYkhRZ1BTQjdYRzRnSUNBZ2VXVmhjam9nZVdWaGNsTjBjaTVzWlc1bmRHZ2dQVDA5SURJZ1B5QjFiblJ5ZFc1allYUmxXV1ZoY2lod1lYSnpaVWx1ZEdWblpYSW9lV1ZoY2xOMGNpa3BJRG9nY0dGeWMyVkpiblJsWjJWeUtIbGxZWEpUZEhJcExGeHVJQ0FnSUcxdmJuUm9PaUJGYm1kc2FYTm9MbTF2Ym5Sb2MxTm9iM0owTG1sdVpHVjRUMllvYlc5dWRHaFRkSElwSUNzZ01TeGNiaUFnSUNCa1lYazZJSEJoY25ObFNXNTBaV2RsY2loa1lYbFRkSElwTEZ4dUlDQWdJR2h2ZFhJNklIQmhjbk5sU1c1MFpXZGxjaWhvYjNWeVUzUnlLU3hjYmlBZ0lDQnRhVzUxZEdVNklIQmhjbk5sU1c1MFpXZGxjaWh0YVc1MWRHVlRkSElwWEc0Z0lIMDdYRzVjYmlBZ2FXWWdLSE5sWTI5dVpGTjBjaWtnY21WemRXeDBMbk5sWTI5dVpDQTlJSEJoY25ObFNXNTBaV2RsY2loelpXTnZibVJUZEhJcE8xeHVJQ0JwWmlBb2QyVmxhMlJoZVZOMGNpa2dlMXh1SUNBZ0lISmxjM1ZzZEM1M1pXVnJaR0Y1SUQxY2JpQWdJQ0FnSUhkbFpXdGtZWGxUZEhJdWJHVnVaM1JvSUQ0Z00xeHVJQ0FnSUNBZ0lDQS9JRVZ1WjJ4cGMyZ3VkMlZsYTJSaGVYTk1iMjVuTG1sdVpHVjRUMllvZDJWbGEyUmhlVk4wY2lrZ0t5QXhYRzRnSUNBZ0lDQWdJRG9nUlc1bmJHbHphQzUzWldWclpHRjVjMU5vYjNKMExtbHVaR1Y0VDJZb2QyVmxhMlJoZVZOMGNpa2dLeUF4TzF4dUlDQjlYRzVjYmlBZ2NtVjBkWEp1SUhKbGMzVnNkRHRjYm4xY2JseHVMeThnVWtaRElESTRNakl2TlRNeU1seHVZMjl1YzNRZ2NtWmpNamd5TWlBOUlDOWVLRDg2S0UxdmJueFVkV1Y4VjJWa2ZGUm9kWHhHY21sOFUyRjBmRk4xYmlrc1hGeHpLVDhvWEZ4a2V6RXNNbjBwWEZ4ektFcGhibnhHWldKOFRXRnlmRUZ3Y254TllYbDhTblZ1ZkVwMWJIeEJkV2Q4VTJWd2ZFOWpkSHhPYjNaOFJHVmpLVnhjY3loY1hHUjdNaXcwZlNsY1hITW9YRnhrWEZ4a0tUb29YRnhrWEZ4a0tTZy9Pam9vWEZ4a1hGeGtLU2svWEZ4ektEODZLRlZVZkVkTlZIeGJSVU5OVUYxYlUwUmRWQ2w4S0Z0YWVsMHBmQ2cvT2loYkt5MWRYRnhrWEZ4a0tTaGNYR1JjWEdRcEtTa2tMenRjYmx4dVpuVnVZM1JwYjI0Z1pYaDBjbUZqZEZKR1F6STRNaklvYldGMFkyZ3BJSHRjYmlBZ1kyOXVjM1FnVzF4dUlDQWdJQ0FnTEZ4dUlDQWdJQ0FnZDJWbGEyUmhlVk4wY2l4Y2JpQWdJQ0FnSUdSaGVWTjBjaXhjYmlBZ0lDQWdJRzF2Ym5Sb1UzUnlMRnh1SUNBZ0lDQWdlV1ZoY2xOMGNpeGNiaUFnSUNBZ0lHaHZkWEpUZEhJc1hHNGdJQ0FnSUNCdGFXNTFkR1ZUZEhJc1hHNGdJQ0FnSUNCelpXTnZibVJUZEhJc1hHNGdJQ0FnSUNCdlluTlBabVp6WlhRc1hHNGdJQ0FnSUNCdGFXeFBabVp6WlhRc1hHNGdJQ0FnSUNCdlptWkliM1Z5VTNSeUxGeHVJQ0FnSUNBZ2IyWm1UV2x1ZFhSbFUzUnlYRzRnSUNBZ1hTQTlJRzFoZEdOb0xGeHVJQ0FnSUhKbGMzVnNkQ0E5SUdaeWIyMVRkSEpwYm1kektIZGxaV3RrWVhsVGRISXNJSGxsWVhKVGRISXNJRzF2Ym5Sb1UzUnlMQ0JrWVhsVGRISXNJR2h2ZFhKVGRISXNJRzFwYm5WMFpWTjBjaXdnYzJWamIyNWtVM1J5S1R0Y2JseHVJQ0JzWlhRZ2IyWm1jMlYwTzF4dUlDQnBaaUFvYjJKelQyWm1jMlYwS1NCN1hHNGdJQ0FnYjJabWMyVjBJRDBnYjJKelQyWm1jMlYwYzF0dlluTlBabVp6WlhSZE8xeHVJQ0I5SUdWc2MyVWdhV1lnS0cxcGJFOW1abk5sZENrZ2UxeHVJQ0FnSUc5bVpuTmxkQ0E5SURBN1hHNGdJSDBnWld4elpTQjdYRzRnSUNBZ2IyWm1jMlYwSUQwZ2MybG5ibVZrVDJabWMyVjBLRzltWmtodmRYSlRkSElzSUc5bVprMXBiblYwWlZOMGNpazdYRzRnSUgxY2JseHVJQ0J5WlhSMWNtNGdXM0psYzNWc2RDd2dibVYzSUVacGVHVmtUMlptYzJWMFdtOXVaU2h2Wm1aelpYUXBYVHRjYm4xY2JseHVablZ1WTNScGIyNGdjSEpsY0hKdlkyVnpjMUpHUXpJNE1qSW9jeWtnZTF4dUlDQXZMeUJTWlcxdmRtVWdZMjl0YldWdWRITWdZVzVrSUdadmJHUnBibWNnZDJocGRHVnpjR0ZqWlNCaGJtUWdjbVZ3YkdGalpTQnRkV3gwYVhCc1pTMXpjR0ZqWlhNZ2QybDBhQ0JoSUhOcGJtZHNaU0J6Y0dGalpWeHVJQ0J5WlhSMWNtNGdjMXh1SUNBZ0lDNXlaWEJzWVdObEtDOWNYQ2hiWGlncFhTcGNYQ2w4VzF4Y2JseGNkRjB2Wnl3Z1hDSWdYQ0lwWEc0Z0lDQWdMbkpsY0d4aFkyVW9MeWhjWEhOY1hITXJLUzluTENCY0lpQmNJaWxjYmlBZ0lDQXVkSEpwYlNncE8xeHVmVnh1WEc0dkx5Qm9kSFJ3SUdSaGRHVmNibHh1WTI5dWMzUWdjbVpqTVRFeU15QTlJQzllS0UxdmJueFVkV1Y4VjJWa2ZGUm9kWHhHY21sOFUyRjBmRk4xYmlrc0lDaGNYR1JjWEdRcElDaEtZVzU4Um1WaWZFMWhjbnhCY0hKOFRXRjVmRXAxYm54S2RXeDhRWFZuZkZObGNIeFBZM1I4VG05MmZFUmxZeWtnS0Z4Y1pIczBmU2tnS0Z4Y1pGeGNaQ2s2S0Z4Y1pGeGNaQ2s2S0Z4Y1pGeGNaQ2tnUjAxVUpDOHNYRzRnSUhKbVl6ZzFNQ0E5SUM5ZUtFMXZibVJoZVh4VWRXVnpaR0Y1ZkZkbFpHNWxjMlJoZVh4VWFIVnljMlJoZVh4R2NtbGtZWGw4VTJGMGRYSmtZWGw4VTNWdVpHRjVLU3dnS0Z4Y1pGeGNaQ2t0S0VwaGJueEdaV0o4VFdGeWZFRndjbnhOWVhsOFNuVnVmRXAxYkh4QmRXZDhVMlZ3ZkU5amRIeE9iM1o4UkdWaktTMG9YRnhrWEZ4a0tTQW9YRnhrWEZ4a0tUb29YRnhrWEZ4a0tUb29YRnhrWEZ4a0tTQkhUVlFrTHl4Y2JpQWdZWE5qYVdrZ1BTQXZYaWhOYjI1OFZIVmxmRmRsWkh4VWFIVjhSbkpwZkZOaGRIeFRkVzRwSUNoS1lXNThSbVZpZkUxaGNueEJjSEo4VFdGNWZFcDFibnhLZFd4OFFYVm5mRk5sY0h4UFkzUjhUbTkyZkVSbFl5a2dLQ0JjWEdSOFhGeGtYRnhrS1NBb1hGeGtYRnhrS1Rvb1hGeGtYRnhrS1Rvb1hGeGtYRnhrS1NBb1hGeGtlelI5S1NRdk8xeHVYRzVtZFc1amRHbHZiaUJsZUhSeVlXTjBVa1pETVRFeU0wOXlPRFV3S0cxaGRHTm9LU0I3WEc0Z0lHTnZibk4wSUZzc0lIZGxaV3RrWVhsVGRISXNJR1JoZVZOMGNpd2diVzl1ZEdoVGRISXNJSGxsWVhKVGRISXNJR2h2ZFhKVGRISXNJRzFwYm5WMFpWTjBjaXdnYzJWamIyNWtVM1J5WFNBOUlHMWhkR05vTEZ4dUlDQWdJSEpsYzNWc2RDQTlJR1p5YjIxVGRISnBibWR6S0hkbFpXdGtZWGxUZEhJc0lIbGxZWEpUZEhJc0lHMXZiblJvVTNSeUxDQmtZWGxUZEhJc0lHaHZkWEpUZEhJc0lHMXBiblYwWlZOMGNpd2djMlZqYjI1a1UzUnlLVHRjYmlBZ2NtVjBkWEp1SUZ0eVpYTjFiSFFzSUVacGVHVmtUMlptYzJWMFdtOXVaUzUxZEdOSmJuTjBZVzVqWlYwN1hHNTlYRzVjYm1aMWJtTjBhVzl1SUdWNGRISmhZM1JCVTBOSlNTaHRZWFJqYUNrZ2UxeHVJQ0JqYjI1emRDQmJMQ0IzWldWclpHRjVVM1J5TENCdGIyNTBhRk4wY2l3Z1pHRjVVM1J5TENCb2IzVnlVM1J5TENCdGFXNTFkR1ZUZEhJc0lITmxZMjl1WkZOMGNpd2dlV1ZoY2xOMGNsMGdQU0J0WVhSamFDeGNiaUFnSUNCeVpYTjFiSFFnUFNCbWNtOXRVM1J5YVc1bmN5aDNaV1ZyWkdGNVUzUnlMQ0I1WldGeVUzUnlMQ0J0YjI1MGFGTjBjaXdnWkdGNVUzUnlMQ0JvYjNWeVUzUnlMQ0J0YVc1MWRHVlRkSElzSUhObFkyOXVaRk4wY2lrN1hHNGdJSEpsZEhWeWJpQmJjbVZ6ZFd4MExDQkdhWGhsWkU5bVpuTmxkRnB2Ym1VdWRYUmpTVzV6ZEdGdVkyVmRPMXh1ZlZ4dVhHNWpiMjV6ZENCcGMyOVpiV1JYYVhSb1ZHbHRaVVY0ZEdWdWMybHZibEpsWjJWNElEMGdZMjl0WW1sdVpWSmxaMlY0WlhNb2FYTnZXVzFrVW1WblpYZ3NJR2x6YjFScGJXVkZlSFJsYm5OcGIyNVNaV2RsZUNrN1hHNWpiMjV6ZENCcGMyOVhaV1ZyVjJsMGFGUnBiV1ZGZUhSbGJuTnBiMjVTWldkbGVDQTlJR052YldKcGJtVlNaV2RsZUdWektHbHpiMWRsWld0U1pXZGxlQ3dnYVhOdlZHbHRaVVY0ZEdWdWMybHZibEpsWjJWNEtUdGNibU52Ym5OMElHbHpiMDl5WkdsdVlXeFhhWFJvVkdsdFpVVjRkR1Z1YzJsdmJsSmxaMlY0SUQwZ1kyOXRZbWx1WlZKbFoyVjRaWE1vYVhOdlQzSmthVzVoYkZKbFoyVjRMQ0JwYzI5VWFXMWxSWGgwWlc1emFXOXVVbVZuWlhncE8xeHVZMjl1YzNRZ2FYTnZWR2x0WlVOdmJXSnBibVZrVW1WblpYZ2dQU0JqYjIxaWFXNWxVbVZuWlhobGN5aHBjMjlVYVcxbFVtVm5aWGdwTzF4dVhHNWpiMjV6ZENCbGVIUnlZV04wU1ZOUFdXMWtWR2x0WlVGdVpFOW1abk5sZENBOUlHTnZiV0pwYm1WRmVIUnlZV04wYjNKektGeHVJQ0JsZUhSeVlXTjBTVk5QV1cxa0xGeHVJQ0JsZUhSeVlXTjBTVk5QVkdsdFpTeGNiaUFnWlhoMGNtRmpkRWxUVDA5bVpuTmxkQ3hjYmlBZ1pYaDBjbUZqZEVsQlRrRmFiMjVsWEc0cE8xeHVZMjl1YzNRZ1pYaDBjbUZqZEVsVFQxZGxaV3RVYVcxbFFXNWtUMlptYzJWMElEMGdZMjl0WW1sdVpVVjRkSEpoWTNSdmNuTW9YRzRnSUdWNGRISmhZM1JKVTA5WFpXVnJSR0YwWVN4Y2JpQWdaWGgwY21GamRFbFRUMVJwYldVc1hHNGdJR1Y0ZEhKaFkzUkpVMDlQWm1aelpYUXNYRzRnSUdWNGRISmhZM1JKUVU1QldtOXVaVnh1S1R0Y2JtTnZibk4wSUdWNGRISmhZM1JKVTA5UGNtUnBibUZzUkdGMFpVRnVaRlJwYldVZ1BTQmpiMjFpYVc1bFJYaDBjbUZqZEc5eWN5aGNiaUFnWlhoMGNtRmpkRWxUVDA5eVpHbHVZV3hFWVhSaExGeHVJQ0JsZUhSeVlXTjBTVk5QVkdsdFpTeGNiaUFnWlhoMGNtRmpkRWxUVDA5bVpuTmxkQ3hjYmlBZ1pYaDBjbUZqZEVsQlRrRmFiMjVsWEc0cE8xeHVZMjl1YzNRZ1pYaDBjbUZqZEVsVFQxUnBiV1ZCYm1SUFptWnpaWFFnUFNCamIyMWlhVzVsUlhoMGNtRmpkRzl5Y3loY2JpQWdaWGgwY21GamRFbFRUMVJwYldVc1hHNGdJR1Y0ZEhKaFkzUkpVMDlQWm1aelpYUXNYRzRnSUdWNGRISmhZM1JKUVU1QldtOXVaVnh1S1R0Y2JseHVMeXBjYmlBcUlFQndjbWwyWVhSbFhHNGdLaTljYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUhCaGNuTmxTVk5QUkdGMFpTaHpLU0I3WEc0Z0lISmxkSFZ5YmlCd1lYSnpaU2hjYmlBZ0lDQnpMRnh1SUNBZ0lGdHBjMjlaYldSWGFYUm9WR2x0WlVWNGRHVnVjMmx2YmxKbFoyVjRMQ0JsZUhSeVlXTjBTVk5QV1cxa1ZHbHRaVUZ1WkU5bVpuTmxkRjBzWEc0Z0lDQWdXMmx6YjFkbFpXdFhhWFJvVkdsdFpVVjRkR1Z1YzJsdmJsSmxaMlY0TENCbGVIUnlZV04wU1ZOUFYyVmxhMVJwYldWQmJtUlBabVp6WlhSZExGeHVJQ0FnSUZ0cGMyOVBjbVJwYm1Gc1YybDBhRlJwYldWRmVIUmxibk5wYjI1U1pXZGxlQ3dnWlhoMGNtRmpkRWxUVDA5eVpHbHVZV3hFWVhSbFFXNWtWR2x0WlYwc1hHNGdJQ0FnVzJsemIxUnBiV1ZEYjIxaWFXNWxaRkpsWjJWNExDQmxlSFJ5WVdOMFNWTlBWR2x0WlVGdVpFOW1abk5sZEYxY2JpQWdLVHRjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlIQmhjbk5sVWtaRE1qZ3lNa1JoZEdVb2N5a2dlMXh1SUNCeVpYUjFjbTRnY0dGeWMyVW9jSEpsY0hKdlkyVnpjMUpHUXpJNE1qSW9jeWtzSUZ0eVptTXlPREl5TENCbGVIUnlZV04wVWtaRE1qZ3lNbDBwTzF4dWZWeHVYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdjR0Z5YzJWSVZGUlFSR0YwWlNoektTQjdYRzRnSUhKbGRIVnliaUJ3WVhKelpTaGNiaUFnSUNCekxGeHVJQ0FnSUZ0eVptTXhNVEl6TENCbGVIUnlZV04wVWtaRE1URXlNMDl5T0RVd1hTeGNiaUFnSUNCYmNtWmpPRFV3TENCbGVIUnlZV04wVWtaRE1URXlNMDl5T0RVd1hTeGNiaUFnSUNCYllYTmphV2tzSUdWNGRISmhZM1JCVTBOSlNWMWNiaUFnS1R0Y2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJSEJoY25ObFNWTlBSSFZ5WVhScGIyNG9jeWtnZTF4dUlDQnlaWFIxY200Z2NHRnljMlVvY3l3Z1cybHpiMFIxY21GMGFXOXVMQ0JsZUhSeVlXTjBTVk5QUkhWeVlYUnBiMjVkS1R0Y2JuMWNibHh1WTI5dWMzUWdaWGgwY21GamRFbFRUMVJwYldWUGJteDVJRDBnWTI5dFltbHVaVVY0ZEhKaFkzUnZjbk1vWlhoMGNtRmpkRWxUVDFScGJXVXBPMXh1WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnY0dGeWMyVkpVMDlVYVcxbFQyNXNlU2h6S1NCN1hHNGdJSEpsZEhWeWJpQndZWEp6WlNoekxDQmJhWE52VkdsdFpVOXViSGtzSUdWNGRISmhZM1JKVTA5VWFXMWxUMjVzZVYwcE8xeHVmVnh1WEc1amIyNXpkQ0J6Y1d4WmJXUlhhWFJvVkdsdFpVVjRkR1Z1YzJsdmJsSmxaMlY0SUQwZ1kyOXRZbWx1WlZKbFoyVjRaWE1vYzNGc1dXMWtVbVZuWlhnc0lITnhiRlJwYldWRmVIUmxibk5wYjI1U1pXZGxlQ2s3WEc1amIyNXpkQ0J6Y1d4VWFXMWxRMjl0WW1sdVpXUlNaV2RsZUNBOUlHTnZiV0pwYm1WU1pXZGxlR1Z6S0hOeGJGUnBiV1ZTWldkbGVDazdYRzVjYm1OdmJuTjBJR1Y0ZEhKaFkzUkpVMDlVYVcxbFQyWm1jMlYwUVc1a1NVRk9RVnB2Ym1VZ1BTQmpiMjFpYVc1bFJYaDBjbUZqZEc5eWN5aGNiaUFnWlhoMGNtRmpkRWxUVDFScGJXVXNYRzRnSUdWNGRISmhZM1JKVTA5UFptWnpaWFFzWEc0Z0lHVjRkSEpoWTNSSlFVNUJXbTl1WlZ4dUtUdGNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJSEJoY25ObFUxRk1LSE1wSUh0Y2JpQWdjbVYwZFhKdUlIQmhjbk5sS0Z4dUlDQWdJSE1zWEc0Z0lDQWdXM054YkZsdFpGZHBkR2hVYVcxbFJYaDBaVzV6YVc5dVVtVm5aWGdzSUdWNGRISmhZM1JKVTA5WmJXUlVhVzFsUVc1a1QyWm1jMlYwWFN4Y2JpQWdJQ0JiYzNGc1ZHbHRaVU52YldKcGJtVmtVbVZuWlhnc0lHVjRkSEpoWTNSSlUwOVVhVzFsVDJabWMyVjBRVzVrU1VGT1FWcHZibVZkWEc0Z0lDazdYRzU5WEc0aUxDQWlhVzF3YjNKMElIc2dTVzUyWVd4cFpFRnlaM1Z0Wlc1MFJYSnliM0lzSUVsdWRtRnNhV1JFZFhKaGRHbHZia1Z5Y205eUxDQkpiblpoYkdsa1ZXNXBkRVZ5Y205eUlIMGdabkp2YlNCY0lpNHZaWEp5YjNKekxtcHpYQ0k3WEc1cGJYQnZjblFnUm05eWJXRjBkR1Z5SUdaeWIyMGdYQ0l1TDJsdGNHd3ZabTl5YldGMGRHVnlMbXB6WENJN1hHNXBiWEJ2Y25RZ1NXNTJZV3hwWkNCbWNtOXRJRndpTGk5cGJYQnNMMmx1ZG1Gc2FXUXVhbk5jSWp0Y2JtbHRjRzl5ZENCTWIyTmhiR1VnWm5KdmJTQmNJaTR2YVcxd2JDOXNiMk5oYkdVdWFuTmNJanRjYm1sdGNHOXlkQ0I3SUhCaGNuTmxTVk5QUkhWeVlYUnBiMjRzSUhCaGNuTmxTVk5QVkdsdFpVOXViSGtnZlNCbWNtOXRJRndpTGk5cGJYQnNMM0psWjJWNFVHRnljMlZ5TG1welhDSTdYRzVwYlhCdmNuUWdlMXh1SUNCaGMwNTFiV0psY2l4Y2JpQWdhR0Z6VDNkdVVISnZjR1Z5ZEhrc1hHNGdJR2x6VG5WdFltVnlMRnh1SUNCcGMxVnVaR1ZtYVc1bFpDeGNiaUFnYm05eWJXRnNhWHBsVDJKcVpXTjBMRnh1SUNCeWIzVnVaRlJ2TEZ4dWZTQm1jbTl0SUZ3aUxpOXBiWEJzTDNWMGFXd3Vhbk5jSWp0Y2JtbHRjRzl5ZENCVFpYUjBhVzVuY3lCbWNtOXRJRndpTGk5elpYUjBhVzVuY3k1cWMxd2lPMXh1WEc1amIyNXpkQ0JKVGxaQlRFbEVJRDBnWENKSmJuWmhiR2xrSUVSMWNtRjBhVzl1WENJN1hHNWNiaTh2SUhWdWFYUWdZMjl1ZG1WeWMybHZiaUJqYjI1emRHRnVkSE5jYm1WNGNHOXlkQ0JqYjI1emRDQnNiM2RQY21SbGNrMWhkSEpwZUNBOUlIdGNiaUFnSUNCM1pXVnJjem9nZTF4dUlDQWdJQ0FnWkdGNWN6b2dOeXhjYmlBZ0lDQWdJR2h2ZFhKek9pQTNJQ29nTWpRc1hHNGdJQ0FnSUNCdGFXNTFkR1Z6T2lBM0lDb2dNalFnS2lBMk1DeGNiaUFnSUNBZ0lITmxZMjl1WkhNNklEY2dLaUF5TkNBcUlEWXdJQ29nTmpBc1hHNGdJQ0FnSUNCdGFXeHNhWE5sWTI5dVpITTZJRGNnS2lBeU5DQXFJRFl3SUNvZ05qQWdLaUF4TURBd0xGeHVJQ0FnSUgwc1hHNGdJQ0FnWkdGNWN6b2dlMXh1SUNBZ0lDQWdhRzkxY25NNklESTBMRnh1SUNBZ0lDQWdiV2x1ZFhSbGN6b2dNalFnS2lBMk1DeGNiaUFnSUNBZ0lITmxZMjl1WkhNNklESTBJQ29nTmpBZ0tpQTJNQ3hjYmlBZ0lDQWdJRzFwYkd4cGMyVmpiMjVrY3pvZ01qUWdLaUEyTUNBcUlEWXdJQ29nTVRBd01DeGNiaUFnSUNCOUxGeHVJQ0FnSUdodmRYSnpPaUI3SUcxcGJuVjBaWE02SURZd0xDQnpaV052Ym1Sek9pQTJNQ0FxSURZd0xDQnRhV3hzYVhObFkyOXVaSE02SURZd0lDb2dOakFnS2lBeE1EQXdJSDBzWEc0Z0lDQWdiV2x1ZFhSbGN6b2dleUJ6WldOdmJtUnpPaUEyTUN3Z2JXbHNiR2x6WldOdmJtUnpPaUEyTUNBcUlERXdNREFnZlN4Y2JpQWdJQ0J6WldOdmJtUnpPaUI3SUcxcGJHeHBjMlZqYjI1a2N6b2dNVEF3TUNCOUxGeHVJQ0I5TEZ4dUlDQmpZWE4xWVd4TllYUnlhWGdnUFNCN1hHNGdJQ0FnZVdWaGNuTTZJSHRjYmlBZ0lDQWdJSEYxWVhKMFpYSnpPaUEwTEZ4dUlDQWdJQ0FnYlc5dWRHaHpPaUF4TWl4Y2JpQWdJQ0FnSUhkbFpXdHpPaUExTWl4Y2JpQWdJQ0FnSUdSaGVYTTZJRE0yTlN4Y2JpQWdJQ0FnSUdodmRYSnpPaUF6TmpVZ0tpQXlOQ3hjYmlBZ0lDQWdJRzFwYm5WMFpYTTZJRE0yTlNBcUlESTBJQ29nTmpBc1hHNGdJQ0FnSUNCelpXTnZibVJ6T2lBek5qVWdLaUF5TkNBcUlEWXdJQ29nTmpBc1hHNGdJQ0FnSUNCdGFXeHNhWE5sWTI5dVpITTZJRE0yTlNBcUlESTBJQ29nTmpBZ0tpQTJNQ0FxSURFd01EQXNYRzRnSUNBZ2ZTeGNiaUFnSUNCeGRXRnlkR1Z5Y3pvZ2UxeHVJQ0FnSUNBZ2JXOXVkR2h6T2lBekxGeHVJQ0FnSUNBZ2QyVmxhM002SURFekxGeHVJQ0FnSUNBZ1pHRjVjem9nT1RFc1hHNGdJQ0FnSUNCb2IzVnljem9nT1RFZ0tpQXlOQ3hjYmlBZ0lDQWdJRzFwYm5WMFpYTTZJRGt4SUNvZ01qUWdLaUEyTUN4Y2JpQWdJQ0FnSUhObFkyOXVaSE02SURreElDb2dNalFnS2lBMk1DQXFJRFl3TEZ4dUlDQWdJQ0FnYldsc2JHbHpaV052Ym1Sek9pQTVNU0FxSURJMElDb2dOakFnS2lBMk1DQXFJREV3TURBc1hHNGdJQ0FnZlN4Y2JpQWdJQ0J0YjI1MGFITTZJSHRjYmlBZ0lDQWdJSGRsWld0ek9pQTBMRnh1SUNBZ0lDQWdaR0Y1Y3pvZ016QXNYRzRnSUNBZ0lDQm9iM1Z5Y3pvZ016QWdLaUF5TkN4Y2JpQWdJQ0FnSUcxcGJuVjBaWE02SURNd0lDb2dNalFnS2lBMk1DeGNiaUFnSUNBZ0lITmxZMjl1WkhNNklETXdJQ29nTWpRZ0tpQTJNQ0FxSURZd0xGeHVJQ0FnSUNBZ2JXbHNiR2x6WldOdmJtUnpPaUF6TUNBcUlESTBJQ29nTmpBZ0tpQTJNQ0FxSURFd01EQXNYRzRnSUNBZ2ZTeGNibHh1SUNBZ0lDNHVMbXh2ZDA5eVpHVnlUV0YwY21sNExGeHVJQ0I5TEZ4dUlDQmtZWGx6U1c1WlpXRnlRV05qZFhKaGRHVWdQU0F4TkRZd09UY3VNQ0F2SURRd01DeGNiaUFnWkdGNWMwbHVUVzl1ZEdoQlkyTjFjbUYwWlNBOUlERTBOakE1Tnk0d0lDOGdORGd3TUN4Y2JpQWdZV05qZFhKaGRHVk5ZWFJ5YVhnZ1BTQjdYRzRnSUNBZ2VXVmhjbk02SUh0Y2JpQWdJQ0FnSUhGMVlYSjBaWEp6T2lBMExGeHVJQ0FnSUNBZ2JXOXVkR2h6T2lBeE1peGNiaUFnSUNBZ0lIZGxaV3R6T2lCa1lYbHpTVzVaWldGeVFXTmpkWEpoZEdVZ0x5QTNMRnh1SUNBZ0lDQWdaR0Y1Y3pvZ1pHRjVjMGx1V1dWaGNrRmpZM1Z5WVhSbExGeHVJQ0FnSUNBZ2FHOTFjbk02SUdSaGVYTkpibGxsWVhKQlkyTjFjbUYwWlNBcUlESTBMRnh1SUNBZ0lDQWdiV2x1ZFhSbGN6b2daR0Y1YzBsdVdXVmhja0ZqWTNWeVlYUmxJQ29nTWpRZ0tpQTJNQ3hjYmlBZ0lDQWdJSE5sWTI5dVpITTZJR1JoZVhOSmJsbGxZWEpCWTJOMWNtRjBaU0FxSURJMElDb2dOakFnS2lBMk1DeGNiaUFnSUNBZ0lHMXBiR3hwYzJWamIyNWtjem9nWkdGNWMwbHVXV1ZoY2tGalkzVnlZWFJsSUNvZ01qUWdLaUEyTUNBcUlEWXdJQ29nTVRBd01DeGNiaUFnSUNCOUxGeHVJQ0FnSUhGMVlYSjBaWEp6T2lCN1hHNGdJQ0FnSUNCdGIyNTBhSE02SURNc1hHNGdJQ0FnSUNCM1pXVnJjem9nWkdGNWMwbHVXV1ZoY2tGalkzVnlZWFJsSUM4Z01qZ3NYRzRnSUNBZ0lDQmtZWGx6T2lCa1lYbHpTVzVaWldGeVFXTmpkWEpoZEdVZ0x5QTBMRnh1SUNBZ0lDQWdhRzkxY25NNklDaGtZWGx6U1c1WlpXRnlRV05qZFhKaGRHVWdLaUF5TkNrZ0x5QTBMRnh1SUNBZ0lDQWdiV2x1ZFhSbGN6b2dLR1JoZVhOSmJsbGxZWEpCWTJOMWNtRjBaU0FxSURJMElDb2dOakFwSUM4Z05DeGNiaUFnSUNBZ0lITmxZMjl1WkhNNklDaGtZWGx6U1c1WlpXRnlRV05qZFhKaGRHVWdLaUF5TkNBcUlEWXdJQ29nTmpBcElDOGdOQ3hjYmlBZ0lDQWdJRzFwYkd4cGMyVmpiMjVrY3pvZ0tHUmhlWE5KYmxsbFlYSkJZMk4xY21GMFpTQXFJREkwSUNvZ05qQWdLaUEyTUNBcUlERXdNREFwSUM4Z05DeGNiaUFnSUNCOUxGeHVJQ0FnSUcxdmJuUm9jem9nZTF4dUlDQWdJQ0FnZDJWbGEzTTZJR1JoZVhOSmJrMXZiblJvUVdOamRYSmhkR1VnTHlBM0xGeHVJQ0FnSUNBZ1pHRjVjem9nWkdGNWMwbHVUVzl1ZEdoQlkyTjFjbUYwWlN4Y2JpQWdJQ0FnSUdodmRYSnpPaUJrWVhselNXNU5iMjUwYUVGalkzVnlZWFJsSUNvZ01qUXNYRzRnSUNBZ0lDQnRhVzUxZEdWek9pQmtZWGx6U1c1TmIyNTBhRUZqWTNWeVlYUmxJQ29nTWpRZ0tpQTJNQ3hjYmlBZ0lDQWdJSE5sWTI5dVpITTZJR1JoZVhOSmJrMXZiblJvUVdOamRYSmhkR1VnS2lBeU5DQXFJRFl3SUNvZ05qQXNYRzRnSUNBZ0lDQnRhV3hzYVhObFkyOXVaSE02SUdSaGVYTkpiazF2Ym5Sb1FXTmpkWEpoZEdVZ0tpQXlOQ0FxSURZd0lDb2dOakFnS2lBeE1EQXdMRnh1SUNBZ0lIMHNYRzRnSUNBZ0xpNHViRzkzVDNKa1pYSk5ZWFJ5YVhnc1hHNGdJSDA3WEc1Y2JpOHZJSFZ1YVhSeklHOXlaR1Z5WldRZ1lua2djMmw2WlZ4dVkyOXVjM1FnYjNKa1pYSmxaRlZ1YVhSeklEMGdXMXh1SUNCY0lubGxZWEp6WENJc1hHNGdJRndpY1hWaGNuUmxjbk5jSWl4Y2JpQWdYQ0p0YjI1MGFITmNJaXhjYmlBZ1hDSjNaV1ZyYzF3aUxGeHVJQ0JjSW1SaGVYTmNJaXhjYmlBZ1hDSm9iM1Z5YzF3aUxGeHVJQ0JjSW0xcGJuVjBaWE5jSWl4Y2JpQWdYQ0p6WldOdmJtUnpYQ0lzWEc0Z0lGd2liV2xzYkdselpXTnZibVJ6WENJc1hHNWRPMXh1WEc1amIyNXpkQ0J5WlhabGNuTmxWVzVwZEhNZ1BTQnZjbVJsY21Wa1ZXNXBkSE11YzJ4cFkyVW9NQ2t1Y21WMlpYSnpaU2dwTzF4dVhHNHZMeUJqYkc5dVpTQnlaV0ZzYkhrZ2JXVmhibk1nWENKamNtVmhkR1VnWVc1dmRHaGxjaUJwYm5OMFlXNWpaU0JxZFhOMElHeHBhMlVnZEdocGN5QnZibVVzSUdKMWRDQjNhWFJvSUhSb1pYTmxJR05vWVc1blpYTmNJbHh1Wm5WdVkzUnBiMjRnWTJ4dmJtVW9aSFZ5TENCaGJIUnpMQ0JqYkdWaGNpQTlJR1poYkhObEtTQjdYRzRnSUM4dklHUmxaWEFnYldWeVoyVWdabTl5SUhaaGJITmNiaUFnWTI5dWMzUWdZMjl1WmlBOUlIdGNiaUFnSUNCMllXeDFaWE02SUdOc1pXRnlJRDhnWVd4MGN5NTJZV3gxWlhNZ09pQjdJQzR1TG1SMWNpNTJZV3gxWlhNc0lDNHVMaWhoYkhSekxuWmhiSFZsY3lCOGZDQjdmU2tnZlN4Y2JpQWdJQ0JzYjJNNklHUjFjaTVzYjJNdVkyeHZibVVvWVd4MGN5NXNiMk1wTEZ4dUlDQWdJR052Ym5abGNuTnBiMjVCWTJOMWNtRmplVG9nWVd4MGN5NWpiMjUyWlhKemFXOXVRV05qZFhKaFkza2dmSHdnWkhWeUxtTnZiblpsY25OcGIyNUJZMk4xY21GamVTeGNiaUFnZlR0Y2JpQWdjbVYwZFhKdUlHNWxkeUJFZFhKaGRHbHZiaWhqYjI1bUtUdGNibjFjYmx4dVpuVnVZM1JwYjI0Z1lXNTBhVlJ5ZFc1aktHNHBJSHRjYmlBZ2NtVjBkWEp1SUc0Z1BDQXdJRDhnVFdGMGFDNW1iRzl2Y2lodUtTQTZJRTFoZEdndVkyVnBiQ2h1S1R0Y2JuMWNibHh1THk4Z1RrSTZJRzExZEdGMFpYTWdjR0Z5WVcxbGRHVnljMXh1Wm5WdVkzUnBiMjRnWTI5dWRtVnlkQ2h0WVhSeWFYZ3NJR1p5YjIxTllYQXNJR1p5YjIxVmJtbDBMQ0IwYjAxaGNDd2dkRzlWYm1sMEtTQjdYRzRnSUdOdmJuTjBJR052Ym5ZZ1BTQnRZWFJ5YVhoYmRHOVZibWwwWFZ0bWNtOXRWVzVwZEYwc1hHNGdJQ0FnY21GM0lEMGdabkp2YlUxaGNGdG1jbTl0Vlc1cGRGMGdMeUJqYjI1MkxGeHVJQ0FnSUhOaGJXVlRhV2R1SUQwZ1RXRjBhQzV6YVdkdUtISmhkeWtnUFQwOUlFMWhkR2d1YzJsbmJpaDBiMDFoY0Z0MGIxVnVhWFJkS1N4Y2JpQWdJQ0F2THlCdmF5d2djMjhnZEdocGN5QnBjeUIzYVd4a0xDQmlkWFFnYzJWbElIUm9aU0J0WVhSeWFYZ2dhVzRnZEdobElIUmxjM1J6WEc0Z0lDQWdZV1JrWldRZ1BWeHVJQ0FnSUNBZ0lYTmhiV1ZUYVdkdUlDWW1JSFJ2VFdGd1czUnZWVzVwZEYwZ0lUMDlJREFnSmlZZ1RXRjBhQzVoWW5Nb2NtRjNLU0E4UFNBeElEOGdZVzUwYVZSeWRXNWpLSEpoZHlrZ09pQk5ZWFJvTG5SeWRXNWpLSEpoZHlrN1hHNGdJSFJ2VFdGd1czUnZWVzVwZEYwZ0t6MGdZV1JrWldRN1hHNGdJR1p5YjIxTllYQmJabkp2YlZWdWFYUmRJQzA5SUdGa1pHVmtJQ29nWTI5dWRqdGNibjFjYmx4dUx5OGdUa0k2SUcxMWRHRjBaWE1nY0dGeVlXMWxkR1Z5YzF4dVpuVnVZM1JwYjI0Z2JtOXliV0ZzYVhwbFZtRnNkV1Z6S0cxaGRISnBlQ3dnZG1Gc2N5a2dlMXh1SUNCeVpYWmxjbk5sVlc1cGRITXVjbVZrZFdObEtDaHdjbVYyYVc5MWN5d2dZM1Z5Y21WdWRDa2dQVDRnZTF4dUlDQWdJR2xtSUNnaGFYTlZibVJsWm1sdVpXUW9kbUZzYzF0amRYSnlaVzUwWFNrcElIdGNiaUFnSUNBZ0lHbG1JQ2h3Y21WMmFXOTFjeWtnZTF4dUlDQWdJQ0FnSUNCamIyNTJaWEowS0cxaGRISnBlQ3dnZG1Gc2N5d2djSEpsZG1sdmRYTXNJSFpoYkhNc0lHTjFjbkpsYm5RcE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2NtVjBkWEp1SUdOMWNuSmxiblE3WEc0Z0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lISmxkSFZ5YmlCd2NtVjJhVzkxY3p0Y2JpQWdJQ0I5WEc0Z0lIMHNJRzUxYkd3cE8xeHVmVnh1WEc0dktpcGNiaUFxSUVFZ1JIVnlZWFJwYjI0Z2IySnFaV04wSUhKbGNISmxjMlZ1ZEhNZ1lTQndaWEpwYjJRZ2IyWWdkR2x0WlN3Z2JHbHJaU0JjSWpJZ2JXOXVkR2h6WENJZ2IzSWdYQ0l4SUdSaGVTd2dNU0JvYjNWeVhDSXVJRU52Ym1ObGNIUjFZV3hzZVN3Z2FYUW5jeUJxZFhOMElHRWdiV0Z3SUc5bUlIVnVhWFJ6SUhSdklIUm9aV2x5SUhGMVlXNTBhWFJwWlhNc0lHRmpZMjl0Y0dGdWFXVmtJR0o1SUhOdmJXVWdZV1JrYVhScGIyNWhiQ0JqYjI1bWFXZDFjbUYwYVc5dUlHRnVaQ0J0WlhSb2IyUnpJR1p2Y2lCamNtVmhkR2x1Wnl3Z2NHRnljMmx1Wnl3Z2FXNTBaWEp5YjJkaGRHbHVaeXdnZEhKaGJuTm1iM0p0YVc1bkxDQmhibVFnWm05eWJXRjBkR2x1WnlCMGFHVnRMaUJVYUdWNUlHTmhiaUJpWlNCMWMyVmtJRzl1SUhSb1pXbHlJRzkzYmlCdmNpQnBiaUJqYjI1cWRXNWpkR2x2YmlCM2FYUm9JRzkwYUdWeUlFeDFlRzl1SUhSNWNHVnpPeUJtYjNJZ1pYaGhiWEJzWlN3Z2VXOTFJR05oYmlCMWMyVWdlMEJzYVc1cklFUmhkR1ZVYVcxbEkzQnNkWE45SUhSdklHRmtaQ0JoSUVSMWNtRjBhVzl1SUc5aWFtVmpkQ0IwYnlCaElFUmhkR1ZVYVcxbExDQndjbTlrZFdOcGJtY2dZVzV2ZEdobGNpQkVZWFJsVkdsdFpTNWNiaUFxWEc0Z0tpQklaWEpsSUdseklHRWdZbkpwWldZZ2IzWmxjblpwWlhjZ2IyWWdZMjl0Ylc5dWJIa2dkWE5sWkNCdFpYUm9iMlJ6SUdGdVpDQm5aWFIwWlhKeklHbHVJRVIxY21GMGFXOXVPbHh1SUNwY2JpQXFJQ29nS2lwRGNtVmhkR2x2YmlvcUlGUnZJR055WldGMFpTQmhJRVIxY21GMGFXOXVMQ0IxYzJVZ2UwQnNhVzVySUVSMWNtRjBhVzl1STJaeWIyMU5hV3hzYVhOOUxDQjdRR3hwYm1zZ1JIVnlZWFJwYjI0alpuSnZiVTlpYW1WamRIMHNJRzl5SUh0QWJHbHVheUJFZFhKaGRHbHZiaU5tY205dFNWTlBmUzVjYmlBcUlDb2dLaXBWYm1sMElIWmhiSFZsY3lvcUlGTmxaU0IwYUdVZ2UwQnNhVzVySUVSMWNtRjBhVzl1STNsbFlYSnpmU3dnZTBCc2FXNXJJRVIxY21GMGFXOXVJMjF2Ym5Sb2MzMHNJSHRBYkdsdWF5QkVkWEpoZEdsdmJpTjNaV1ZyYzMwc0lIdEFiR2x1YXlCRWRYSmhkR2x2YmlOa1lYbHpmU3dnZTBCc2FXNXJJRVIxY21GMGFXOXVJMmh2ZFhKemZTd2dlMEJzYVc1cklFUjFjbUYwYVc5dUkyMXBiblYwWlhOOUxDQjdRR3hwYm1zZ1JIVnlZWFJwYjI0amMyVmpiMjVrYzMwc0lIdEFiR2x1YXlCRWRYSmhkR2x2YmlOdGFXeHNhWE5sWTI5dVpITjlJR0ZqWTJWemMyOXljeTVjYmlBcUlDb2dLaXBEYjI1bWFXZDFjbUYwYVc5dUtpb2dVMlZsSUNCN1FHeHBibXNnUkhWeVlYUnBiMjRqYkc5allXeGxmU0JoYm1RZ2UwQnNhVzVySUVSMWNtRjBhVzl1STI1MWJXSmxjbWx1WjFONWMzUmxiWDBnWVdOalpYTnpiM0p6TGx4dUlDb2dLaUFxS2xSeVlXNXpabTl5YldGMGFXOXVLaW9nVkc4Z1kzSmxZWFJsSUc1bGR5QkVkWEpoZEdsdmJuTWdiM1YwSUc5bUlHOXNaQ0J2Ym1WeklIVnpaU0I3UUd4cGJtc2dSSFZ5WVhScGIyNGpjR3gxYzMwc0lIdEFiR2x1YXlCRWRYSmhkR2x2YmlOdGFXNTFjMzBzSUh0QWJHbHVheUJFZFhKaGRHbHZiaU51YjNKdFlXeHBlbVY5TENCN1FHeHBibXNnUkhWeVlYUnBiMjRqYzJWMGZTd2dlMEJzYVc1cklFUjFjbUYwYVc5dUkzSmxZMjl1Wm1sbmRYSmxmU3dnZTBCc2FXNXJJRVIxY21GMGFXOXVJM05vYVdaMFZHOTlMQ0JoYm1RZ2UwQnNhVzVySUVSMWNtRjBhVzl1STI1bFoyRjBaWDB1WEc0Z0tpQXFJQ29xVDNWMGNIVjBLaW9nVkc4Z1kyOXVkbVZ5ZENCMGFHVWdSSFZ5WVhScGIyNGdhVzUwYnlCdmRHaGxjaUJ5WlhCeVpYTmxiblJoZEdsdmJuTXNJSE5sWlNCN1FHeHBibXNnUkhWeVlYUnBiMjRqWVhOOUxDQjdRR3hwYm1zZ1JIVnlZWFJwYjI0amRHOUpVMDk5TENCN1FHeHBibXNnUkhWeVlYUnBiMjRqZEc5R2IzSnRZWFI5TENCaGJtUWdlMEJzYVc1cklFUjFjbUYwYVc5dUkzUnZTbE5QVG4xY2JpQXFYRzRnS2lCVWFHVnlaU2R6SUdGeVpTQnRiM0psSUcxbGRHaHZaSE1nWkc5amRXMWxiblJsWkNCaVpXeHZkeTRnU1c0Z1lXUmthWFJwYjI0c0lHWnZjaUJ0YjNKbElHbHVabTl5YldGMGFXOXVJRzl1SUhOMVluUnNaWElnZEc5d2FXTnpJR3hwYTJVZ2FXNTBaWEp1WVhScGIyNWhiR2w2WVhScGIyNGdZVzVrSUhaaGJHbGthWFI1TENCelpXVWdkR2hsSUdWNGRHVnlibUZzSUdSdlkzVnRaVzUwWVhScGIyNHVYRzRnS2k5Y2JtVjRjRzl5ZENCa1pXWmhkV3gwSUdOc1lYTnpJRVIxY21GMGFXOXVJSHRjYmlBZ0x5b3FYRzRnSUNBcUlFQndjbWwyWVhSbFhHNGdJQ0FxTDF4dUlDQmpiMjV6ZEhKMVkzUnZjaWhqYjI1bWFXY3BJSHRjYmlBZ0lDQmpiMjV6ZENCaFkyTjFjbUYwWlNBOUlHTnZibVpwWnk1amIyNTJaWEp6YVc5dVFXTmpkWEpoWTNrZ1BUMDlJRndpYkc5dVozUmxjbTFjSWlCOGZDQm1ZV3h6WlR0Y2JpQWdJQ0F2S2lwY2JpQWdJQ0FnS2lCQVlXTmpaWE56SUhCeWFYWmhkR1ZjYmlBZ0lDQWdLaTljYmlBZ0lDQjBhR2x6TG5aaGJIVmxjeUE5SUdOdmJtWnBaeTUyWVd4MVpYTTdYRzRnSUNBZ0x5b3FYRzRnSUNBZ0lDb2dRR0ZqWTJWemN5QndjbWwyWVhSbFhHNGdJQ0FnSUNvdlhHNGdJQ0FnZEdocGN5NXNiMk1nUFNCamIyNW1hV2N1Ykc5aklIeDhJRXh2WTJGc1pTNWpjbVZoZEdVb0tUdGNiaUFnSUNBdktpcGNiaUFnSUNBZ0tpQkFZV05qWlhOeklIQnlhWFpoZEdWY2JpQWdJQ0FnS2k5Y2JpQWdJQ0IwYUdsekxtTnZiblpsY25OcGIyNUJZMk4xY21GamVTQTlJR0ZqWTNWeVlYUmxJRDhnWENKc2IyNW5kR1Z5YlZ3aUlEb2dYQ0pqWVhOMVlXeGNJanRjYmlBZ0lDQXZLaXBjYmlBZ0lDQWdLaUJBWVdOalpYTnpJSEJ5YVhaaGRHVmNiaUFnSUNBZ0tpOWNiaUFnSUNCMGFHbHpMbWx1ZG1Gc2FXUWdQU0JqYjI1bWFXY3VhVzUyWVd4cFpDQjhmQ0J1ZFd4c08xeHVJQ0FnSUM4cUtseHVJQ0FnSUNBcUlFQmhZMk5sYzNNZ2NISnBkbUYwWlZ4dUlDQWdJQ0FxTDF4dUlDQWdJSFJvYVhNdWJXRjBjbWw0SUQwZ1lXTmpkWEpoZEdVZ1B5QmhZMk4xY21GMFpVMWhkSEpwZUNBNklHTmhjM1ZoYkUxaGRISnBlRHRjYmlBZ0lDQXZLaXBjYmlBZ0lDQWdLaUJBWVdOalpYTnpJSEJ5YVhaaGRHVmNiaUFnSUNBZ0tpOWNiaUFnSUNCMGFHbHpMbWx6VEhWNGIyNUVkWEpoZEdsdmJpQTlJSFJ5ZFdVN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRM0psWVhSbElFUjFjbUYwYVc5dUlHWnliMjBnWVNCdWRXMWlaWElnYjJZZ2JXbHNiR2x6WldOdmJtUnpMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UyNTFiV0psY24wZ1kyOTFiblFnYjJZZ2JXbHNiR2x6WldOdmJtUnpYRzRnSUNBcUlFQndZWEpoYlNCN1QySnFaV04wZlNCdmNIUnpJQzBnYjNCMGFXOXVjeUJtYjNJZ2NHRnljMmx1WjF4dUlDQWdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdXMjl3ZEhNdWJHOWpZV3hsUFNkbGJpMVZVeWRkSUMwZ2RHaGxJR3h2WTJGc1pTQjBieUIxYzJWY2JpQWdJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJRzl3ZEhNdWJuVnRZbVZ5YVc1blUzbHpkR1Z0SUMwZ2RHaGxJRzUxYldKbGNtbHVaeUJ6ZVhOMFpXMGdkRzhnZFhObFhHNGdJQ0FxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0JiYjNCMGN5NWpiMjUyWlhKemFXOXVRV05qZFhKaFkzazlKMk5oYzNWaGJDZGRJQzBnZEdobElHTnZiblpsY25OcGIyNGdjM2x6ZEdWdElIUnZJSFZ6WlZ4dUlDQWdLaUJBY21WMGRYSnVJSHRFZFhKaGRHbHZibjFjYmlBZ0lDb3ZYRzRnSUhOMFlYUnBZeUJtY205dFRXbHNiR2x6S0dOdmRXNTBMQ0J2Y0hSektTQjdYRzRnSUNBZ2NtVjBkWEp1SUVSMWNtRjBhVzl1TG1aeWIyMVBZbXBsWTNRb2V5QnRhV3hzYVhObFkyOXVaSE02SUdOdmRXNTBJSDBzSUc5d2RITXBPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUVOeVpXRjBaU0JoSUVSMWNtRjBhVzl1SUdaeWIyMGdZU0JLWVhaaFUyTnlhWEIwSUc5aWFtVmpkQ0IzYVhSb0lHdGxlWE1nYkdsclpTQW5lV1ZoY25NbklHRnVaQ0FuYUc5MWNuTW5MbHh1SUNBZ0tpQkpaaUIwYUdseklHOWlhbVZqZENCcGN5QmxiWEIwZVNCMGFHVnVJR0VnZW1WeWJ5QnRhV3hzYVhObFkyOXVaSE1nWkhWeVlYUnBiMjRnYVhNZ2NtVjBkWEp1WldRdVhHNGdJQ0FxSUVCd1lYSmhiU0I3VDJKcVpXTjBmU0J2WW1vZ0xTQjBhR1VnYjJKcVpXTjBJSFJ2SUdOeVpXRjBaU0IwYUdVZ1JHRjBaVlJwYldVZ1puSnZiVnh1SUNBZ0tpQkFjR0Z5WVcwZ2UyNTFiV0psY24wZ2IySnFMbmxsWVhKelhHNGdJQ0FxSUVCd1lYSmhiU0I3Ym5WdFltVnlmU0J2WW1vdWNYVmhjblJsY25OY2JpQWdJQ29nUUhCaGNtRnRJSHR1ZFcxaVpYSjlJRzlpYWk1dGIyNTBhSE5jYmlBZ0lDb2dRSEJoY21GdElIdHVkVzFpWlhKOUlHOWlhaTUzWldWcmMxeHVJQ0FnS2lCQWNHRnlZVzBnZTI1MWJXSmxjbjBnYjJKcUxtUmhlWE5jYmlBZ0lDb2dRSEJoY21GdElIdHVkVzFpWlhKOUlHOWlhaTVvYjNWeWMxeHVJQ0FnS2lCQWNHRnlZVzBnZTI1MWJXSmxjbjBnYjJKcUxtMXBiblYwWlhOY2JpQWdJQ29nUUhCaGNtRnRJSHR1ZFcxaVpYSjlJRzlpYWk1elpXTnZibVJ6WEc0Z0lDQXFJRUJ3WVhKaGJTQjdiblZ0WW1WeWZTQnZZbW91Yldsc2JHbHpaV052Ym1SelhHNGdJQ0FxSUVCd1lYSmhiU0I3VDJKcVpXTjBmU0JiYjNCMGN6MWJYVjBnTFNCdmNIUnBiMjV6SUdadmNpQmpjbVZoZEdsdVp5QjBhR2x6SUVSMWNtRjBhVzl1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQmJiM0IwY3k1c2IyTmhiR1U5SjJWdUxWVlRKMTBnTFNCMGFHVWdiRzlqWVd4bElIUnZJSFZ6WlZ4dUlDQWdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdiM0IwY3k1dWRXMWlaWEpwYm1kVGVYTjBaVzBnTFNCMGFHVWdiblZ0WW1WeWFXNW5JSE41YzNSbGJTQjBieUIxYzJWY2JpQWdJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJRnR2Y0hSekxtTnZiblpsY25OcGIyNUJZMk4xY21GamVUMG5ZMkZ6ZFdGc0oxMGdMU0IwYUdVZ1kyOXVkbVZ5YzJsdmJpQnplWE4wWlcwZ2RHOGdkWE5sWEc0Z0lDQXFJRUJ5WlhSMWNtNGdlMFIxY21GMGFXOXVmVnh1SUNBZ0tpOWNiaUFnYzNSaGRHbGpJR1p5YjIxUFltcGxZM1FvYjJKcUxDQnZjSFJ6SUQwZ2UzMHBJSHRjYmlBZ0lDQnBaaUFvYjJKcUlEMDlJRzUxYkd3Z2ZId2dkSGx3Wlc5bUlHOWlhaUFoUFQwZ1hDSnZZbXBsWTNSY0lpa2dlMXh1SUNBZ0lDQWdkR2h5YjNjZ2JtVjNJRWx1ZG1Gc2FXUkJjbWQxYldWdWRFVnljbTl5S0Z4dUlDQWdJQ0FnSUNCZ1JIVnlZWFJwYjI0dVpuSnZiVTlpYW1WamREb2dZWEpuZFcxbGJuUWdaWGh3WldOMFpXUWdkRzhnWW1VZ1lXNGdiMkpxWldOMExDQm5iM1FnSkh0Y2JpQWdJQ0FnSUNBZ0lDQnZZbW9nUFQwOUlHNTFiR3dnUHlCY0ltNTFiR3hjSWlBNklIUjVjR1Z2WmlCdlltcGNiaUFnSUNBZ0lDQWdmV0JjYmlBZ0lDQWdJQ2s3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdjbVYwZFhKdUlHNWxkeUJFZFhKaGRHbHZiaWg3WEc0Z0lDQWdJQ0IyWVd4MVpYTTZJRzV2Y20xaGJHbDZaVTlpYW1WamRDaHZZbW9zSUVSMWNtRjBhVzl1TG01dmNtMWhiR2w2WlZWdWFYUXBMRnh1SUNBZ0lDQWdiRzlqT2lCTWIyTmhiR1V1Wm5KdmJVOWlhbVZqZENodmNIUnpLU3hjYmlBZ0lDQWdJR052Ym5abGNuTnBiMjVCWTJOMWNtRmplVG9nYjNCMGN5NWpiMjUyWlhKemFXOXVRV05qZFhKaFkza3NYRzRnSUNBZ2ZTazdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nUTNKbFlYUmxJR0VnUkhWeVlYUnBiMjRnWm5KdmJTQkVkWEpoZEdsdmJreHBhMlV1WEc0Z0lDQXFYRzRnSUNBcUlFQndZWEpoYlNCN1QySnFaV04wSUh3Z2JuVnRZbVZ5SUh3Z1JIVnlZWFJwYjI1OUlHUjFjbUYwYVc5dVRHbHJaVnh1SUNBZ0tpQlBibVVnYjJZNlhHNGdJQ0FxSUMwZ2IySnFaV04wSUhkcGRHZ2dhMlY1Y3lCc2FXdGxJQ2Q1WldGeWN5Y2dZVzVrSUNkb2IzVnljeWN1WEc0Z0lDQXFJQzBnYm5WdFltVnlJSEpsY0hKbGMyVnVkR2x1WnlCdGFXeHNhWE5sWTI5dVpITmNiaUFnSUNvZ0xTQkVkWEpoZEdsdmJpQnBibk4wWVc1alpWeHVJQ0FnS2lCQWNtVjBkWEp1SUh0RWRYSmhkR2x2Ym4xY2JpQWdJQ292WEc0Z0lITjBZWFJwWXlCbWNtOXRSSFZ5WVhScGIyNU1hV3RsS0dSMWNtRjBhVzl1VEdsclpTa2dlMXh1SUNBZ0lHbG1JQ2hwYzA1MWJXSmxjaWhrZFhKaGRHbHZia3hwYTJVcEtTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z1JIVnlZWFJwYjI0dVpuSnZiVTFwYkd4cGN5aGtkWEpoZEdsdmJreHBhMlVwTzF4dUlDQWdJSDBnWld4elpTQnBaaUFvUkhWeVlYUnBiMjR1YVhORWRYSmhkR2x2Ymloa2RYSmhkR2x2Ymt4cGEyVXBLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdaSFZ5WVhScGIyNU1hV3RsTzF4dUlDQWdJSDBnWld4elpTQnBaaUFvZEhsd1pXOW1JR1IxY21GMGFXOXVUR2xyWlNBOVBUMGdYQ0p2WW1wbFkzUmNJaWtnZTF4dUlDQWdJQ0FnY21WMGRYSnVJRVIxY21GMGFXOXVMbVp5YjIxUFltcGxZM1FvWkhWeVlYUnBiMjVNYVd0bEtUdGNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnZEdoeWIzY2dibVYzSUVsdWRtRnNhV1JCY21kMWJXVnVkRVZ5Y205eUtGeHVJQ0FnSUNBZ0lDQmdWVzVyYm05M2JpQmtkWEpoZEdsdmJpQmhjbWQxYldWdWRDQWtlMlIxY21GMGFXOXVUR2xyWlgwZ2IyWWdkSGx3WlNBa2UzUjVjR1Z2WmlCa2RYSmhkR2x2Ymt4cGEyVjlZRnh1SUNBZ0lDQWdLVHRjYmlBZ0lDQjlYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nUTNKbFlYUmxJR0VnUkhWeVlYUnBiMjRnWm5KdmJTQmhiaUJKVTA4Z09EWXdNU0JrZFhKaGRHbHZiaUJ6ZEhKcGJtY3VYRzRnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCMFpYaDBJQzBnZEdWNGRDQjBieUJ3WVhKelpWeHVJQ0FnS2lCQWNHRnlZVzBnZTA5aWFtVmpkSDBnYjNCMGN5QXRJRzl3ZEdsdmJuTWdabTl5SUhCaGNuTnBibWRjYmlBZ0lDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlGdHZjSFJ6TG14dlkyRnNaVDBuWlc0dFZWTW5YU0F0SUhSb1pTQnNiMk5oYkdVZ2RHOGdkWE5sWEc0Z0lDQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQnZjSFJ6TG01MWJXSmxjbWx1WjFONWMzUmxiU0F0SUhSb1pTQnVkVzFpWlhKcGJtY2djM2x6ZEdWdElIUnZJSFZ6WlZ4dUlDQWdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdXMjl3ZEhNdVkyOXVkbVZ5YzJsdmJrRmpZM1Z5WVdONVBTZGpZWE4xWVd3blhTQXRJSFJvWlNCamIyNTJaWEp6YVc5dUlITjVjM1JsYlNCMGJ5QjFjMlZjYmlBZ0lDb2dRSE5sWlNCb2RIUndjem92TDJWdUxuZHBhMmx3WldScFlTNXZjbWN2ZDJscmFTOUpVMDlmT0RZd01TTkVkWEpoZEdsdmJuTmNiaUFnSUNvZ1FHVjRZVzF3YkdVZ1JIVnlZWFJwYjI0dVpuSnZiVWxUVHlnblVETlpOazB4VnpSRVZERXlTRE13VFRWVEp5a3VkRzlQWW1wbFkzUW9LU0F2THowK0lIc2dlV1ZoY25NNklETXNJRzF2Ym5Sb2N6b2dOaXdnZDJWbGEzTTZJREVzSUdSaGVYTTZJRFFzSUdodmRYSnpPaUF4TWl3Z2JXbHVkWFJsY3pvZ016QXNJSE5sWTI5dVpITTZJRFVnZlZ4dUlDQWdLaUJBWlhoaGJYQnNaU0JFZFhKaGRHbHZiaTVtY205dFNWTlBLQ2RRVkRJelNDY3BMblJ2VDJKcVpXTjBLQ2tnTHk4OVBpQjdJR2h2ZFhKek9pQXlNeUI5WEc0Z0lDQXFJRUJsZUdGdGNHeGxJRVIxY21GMGFXOXVMbVp5YjIxSlUwOG9KMUExV1ROTkp5a3VkRzlQWW1wbFkzUW9LU0F2THowK0lIc2dlV1ZoY25NNklEVXNJRzF2Ym5Sb2N6b2dNeUI5WEc0Z0lDQXFJRUJ5WlhSMWNtNGdlMFIxY21GMGFXOXVmVnh1SUNBZ0tpOWNiaUFnYzNSaGRHbGpJR1p5YjIxSlUwOG9kR1Y0ZEN3Z2IzQjBjeWtnZTF4dUlDQWdJR052Ym5OMElGdHdZWEp6WldSZElEMGdjR0Z5YzJWSlUwOUVkWEpoZEdsdmJpaDBaWGgwS1R0Y2JpQWdJQ0JwWmlBb2NHRnljMlZrS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnUkhWeVlYUnBiMjR1Wm5KdmJVOWlhbVZqZENod1lYSnpaV1FzSUc5d2RITXBPMXh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnUkhWeVlYUnBiMjR1YVc1MllXeHBaQ2hjSW5WdWNHRnljMkZpYkdWY0lpd2dZSFJvWlNCcGJuQjFkQ0JjSWlSN2RHVjRkSDFjSWlCallXNG5kQ0JpWlNCd1lYSnpaV1FnWVhNZ1NWTlBJRGcyTURGZ0tUdGNiaUFnSUNCOVhHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRM0psWVhSbElHRWdSSFZ5WVhScGIyNGdabkp2YlNCaGJpQkpVMDhnT0RZd01TQjBhVzFsSUhOMGNtbHVaeTVjYmlBZ0lDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlIUmxlSFFnTFNCMFpYaDBJSFJ2SUhCaGNuTmxYRzRnSUNBcUlFQndZWEpoYlNCN1QySnFaV04wZlNCdmNIUnpJQzBnYjNCMGFXOXVjeUJtYjNJZ2NHRnljMmx1WjF4dUlDQWdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdXMjl3ZEhNdWJHOWpZV3hsUFNkbGJpMVZVeWRkSUMwZ2RHaGxJR3h2WTJGc1pTQjBieUIxYzJWY2JpQWdJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJRzl3ZEhNdWJuVnRZbVZ5YVc1blUzbHpkR1Z0SUMwZ2RHaGxJRzUxYldKbGNtbHVaeUJ6ZVhOMFpXMGdkRzhnZFhObFhHNGdJQ0FxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0JiYjNCMGN5NWpiMjUyWlhKemFXOXVRV05qZFhKaFkzazlKMk5oYzNWaGJDZGRJQzBnZEdobElHTnZiblpsY25OcGIyNGdjM2x6ZEdWdElIUnZJSFZ6WlZ4dUlDQWdLaUJBYzJWbElHaDBkSEJ6T2k4dlpXNHVkMmxyYVhCbFpHbGhMbTl5Wnk5M2FXdHBMMGxUVDE4NE5qQXhJMVJwYldWelhHNGdJQ0FxSUVCbGVHRnRjR3hsSUVSMWNtRjBhVzl1TG1aeWIyMUpVMDlVYVcxbEtDY3hNVG95TWpvek15NDBORFFuS1M1MGIwOWlhbVZqZENncElDOHZQVDRnZXlCb2IzVnljem9nTVRFc0lHMXBiblYwWlhNNklESXlMQ0J6WldOdmJtUnpPaUF6TXl3Z2JXbHNiR2x6WldOdmJtUnpPaUEwTkRRZ2ZWeHVJQ0FnS2lCQVpYaGhiWEJzWlNCRWRYSmhkR2x2Ymk1bWNtOXRTVk5QVkdsdFpTZ25NVEU2TURBbktTNTBiMDlpYW1WamRDZ3BJQzh2UFQ0Z2V5Qm9iM1Z5Y3pvZ01URXNJRzFwYm5WMFpYTTZJREFzSUhObFkyOXVaSE02SURBZ2ZWeHVJQ0FnS2lCQVpYaGhiWEJzWlNCRWRYSmhkR2x2Ymk1bWNtOXRTVk5QVkdsdFpTZ25WREV4T2pBd0p5a3VkRzlQWW1wbFkzUW9LU0F2THowK0lIc2dhRzkxY25NNklERXhMQ0J0YVc1MWRHVnpPaUF3TENCelpXTnZibVJ6T2lBd0lIMWNiaUFnSUNvZ1FHVjRZVzF3YkdVZ1JIVnlZWFJwYjI0dVpuSnZiVWxUVDFScGJXVW9KekV4TURBbktTNTBiMDlpYW1WamRDZ3BJQzh2UFQ0Z2V5Qm9iM1Z5Y3pvZ01URXNJRzFwYm5WMFpYTTZJREFzSUhObFkyOXVaSE02SURBZ2ZWeHVJQ0FnS2lCQVpYaGhiWEJzWlNCRWRYSmhkR2x2Ymk1bWNtOXRTVk5QVkdsdFpTZ25WREV4TURBbktTNTBiMDlpYW1WamRDZ3BJQzh2UFQ0Z2V5Qm9iM1Z5Y3pvZ01URXNJRzFwYm5WMFpYTTZJREFzSUhObFkyOXVaSE02SURBZ2ZWeHVJQ0FnS2lCQWNtVjBkWEp1SUh0RWRYSmhkR2x2Ym4xY2JpQWdJQ292WEc0Z0lITjBZWFJwWXlCbWNtOXRTVk5QVkdsdFpTaDBaWGgwTENCdmNIUnpLU0I3WEc0Z0lDQWdZMjl1YzNRZ1czQmhjbk5sWkYwZ1BTQndZWEp6WlVsVFQxUnBiV1ZQYm14NUtIUmxlSFFwTzF4dUlDQWdJR2xtSUNod1lYSnpaV1FwSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUJFZFhKaGRHbHZiaTVtY205dFQySnFaV04wS0hCaGNuTmxaQ3dnYjNCMGN5azdYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUJFZFhKaGRHbHZiaTVwYm5aaGJHbGtLRndpZFc1d1lYSnpZV0pzWlZ3aUxDQmdkR2hsSUdsdWNIVjBJRndpSkh0MFpYaDBmVndpSUdOaGJpZDBJR0psSUhCaGNuTmxaQ0JoY3lCSlUwOGdPRFl3TVdBcE8xeHVJQ0FnSUgxY2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkRjbVZoZEdVZ1lXNGdhVzUyWVd4cFpDQkVkWEpoZEdsdmJpNWNiaUFnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUhKbFlYTnZiaUF0SUhOcGJYQnNaU0J6ZEhKcGJtY2diMllnZDJoNUlIUm9hWE1nWkdGMFpYUnBiV1VnYVhNZ2FXNTJZV3hwWkM0Z1UyaHZkV3hrSUc1dmRDQmpiMjUwWVdsdUlIQmhjbUZ0WlhSbGNuTWdiM0lnWVc1NWRHaHBibWNnWld4elpTQmtZWFJoTFdSbGNHVnVaR1Z1ZEZ4dUlDQWdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdXMlY0Y0d4aGJtRjBhVzl1UFc1MWJHeGRJQzBnYkc5dVoyVnlJR1Y0Y0d4aGJtRjBhVzl1TENCdFlYa2dhVzVqYkhWa1pTQndZWEpoYldWMFpYSnpJR0Z1WkNCdmRHaGxjaUIxYzJWbWRXd2daR1ZpZFdkbmFXNW5JR2x1Wm05eWJXRjBhVzl1WEc0Z0lDQXFJRUJ5WlhSMWNtNGdlMFIxY21GMGFXOXVmVnh1SUNBZ0tpOWNiaUFnYzNSaGRHbGpJR2x1ZG1Gc2FXUW9jbVZoYzI5dUxDQmxlSEJzWVc1aGRHbHZiaUE5SUc1MWJHd3BJSHRjYmlBZ0lDQnBaaUFvSVhKbFlYTnZiaWtnZTF4dUlDQWdJQ0FnZEdoeWIzY2dibVYzSUVsdWRtRnNhV1JCY21kMWJXVnVkRVZ5Y205eUtGd2libVZsWkNCMGJ5QnpjR1ZqYVdaNUlHRWdjbVZoYzI5dUlIUm9aU0JFZFhKaGRHbHZiaUJwY3lCcGJuWmhiR2xrWENJcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUdOdmJuTjBJR2x1ZG1Gc2FXUWdQU0J5WldGemIyNGdhVzV6ZEdGdVkyVnZaaUJKYm5aaGJHbGtJRDhnY21WaGMyOXVJRG9nYm1WM0lFbHVkbUZzYVdRb2NtVmhjMjl1TENCbGVIQnNZVzVoZEdsdmJpazdYRzVjYmlBZ0lDQnBaaUFvVTJWMGRHbHVaM011ZEdoeWIzZFBia2x1ZG1Gc2FXUXBJSHRjYmlBZ0lDQWdJSFJvY205M0lHNWxkeUJKYm5aaGJHbGtSSFZ5WVhScGIyNUZjbkp2Y2locGJuWmhiR2xrS1R0Y2JpQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdjbVYwZFhKdUlHNWxkeUJFZFhKaGRHbHZiaWg3SUdsdWRtRnNhV1FnZlNrN1hHNGdJQ0FnZlZ4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFQndjbWwyWVhSbFhHNGdJQ0FxTDF4dUlDQnpkR0YwYVdNZ2JtOXliV0ZzYVhwbFZXNXBkQ2gxYm1sMEtTQjdYRzRnSUNBZ1kyOXVjM1FnYm05eWJXRnNhWHBsWkNBOUlIdGNiaUFnSUNBZ0lIbGxZWEk2SUZ3aWVXVmhjbk5jSWl4Y2JpQWdJQ0FnSUhsbFlYSnpPaUJjSW5sbFlYSnpYQ0lzWEc0Z0lDQWdJQ0J4ZFdGeWRHVnlPaUJjSW5GMVlYSjBaWEp6WENJc1hHNGdJQ0FnSUNCeGRXRnlkR1Z5Y3pvZ1hDSnhkV0Z5ZEdWeWMxd2lMRnh1SUNBZ0lDQWdiVzl1ZEdnNklGd2liVzl1ZEdoelhDSXNYRzRnSUNBZ0lDQnRiMjUwYUhNNklGd2liVzl1ZEdoelhDSXNYRzRnSUNBZ0lDQjNaV1ZyT2lCY0luZGxaV3R6WENJc1hHNGdJQ0FnSUNCM1pXVnJjem9nWENKM1pXVnJjMXdpTEZ4dUlDQWdJQ0FnWkdGNU9pQmNJbVJoZVhOY0lpeGNiaUFnSUNBZ0lHUmhlWE02SUZ3aVpHRjVjMXdpTEZ4dUlDQWdJQ0FnYUc5MWNqb2dYQ0pvYjNWeWMxd2lMRnh1SUNBZ0lDQWdhRzkxY25NNklGd2lhRzkxY25OY0lpeGNiaUFnSUNBZ0lHMXBiblYwWlRvZ1hDSnRhVzUxZEdWelhDSXNYRzRnSUNBZ0lDQnRhVzUxZEdWek9pQmNJbTFwYm5WMFpYTmNJaXhjYmlBZ0lDQWdJSE5sWTI5dVpEb2dYQ0p6WldOdmJtUnpYQ0lzWEc0Z0lDQWdJQ0J6WldOdmJtUnpPaUJjSW5ObFkyOXVaSE5jSWl4Y2JpQWdJQ0FnSUcxcGJHeHBjMlZqYjI1a09pQmNJbTFwYkd4cGMyVmpiMjVrYzF3aUxGeHVJQ0FnSUNBZ2JXbHNiR2x6WldOdmJtUnpPaUJjSW0xcGJHeHBjMlZqYjI1a2Mxd2lMRnh1SUNBZ0lIMWJkVzVwZENBL0lIVnVhWFF1ZEc5TWIzZGxja05oYzJVb0tTQTZJSFZ1YVhSZE8xeHVYRzRnSUNBZ2FXWWdLQ0Z1YjNKdFlXeHBlbVZrS1NCMGFISnZkeUJ1WlhjZ1NXNTJZV3hwWkZWdWFYUkZjbkp2Y2loMWJtbDBLVHRjYmx4dUlDQWdJSEpsZEhWeWJpQnViM0p0WVd4cGVtVmtPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUVOb1pXTnJJR2xtSUdGdUlHOWlhbVZqZENCcGN5QmhJRVIxY21GMGFXOXVMaUJYYjNKcmN5QmhZM0p2YzNNZ1kyOXVkR1Y0ZENCaWIzVnVaR0Z5YVdWelhHNGdJQ0FxSUVCd1lYSmhiU0I3YjJKcVpXTjBmU0J2WEc0Z0lDQXFJRUJ5WlhSMWNtNGdlMkp2YjJ4bFlXNTlYRzRnSUNBcUwxeHVJQ0J6ZEdGMGFXTWdhWE5FZFhKaGRHbHZiaWh2S1NCN1hHNGdJQ0FnY21WMGRYSnVJQ2h2SUNZbUlHOHVhWE5NZFhodmJrUjFjbUYwYVc5dUtTQjhmQ0JtWVd4elpUdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJIWlhRZ0lIUm9aU0JzYjJOaGJHVWdiMllnWVNCRWRYSmhkR2x2Yml3Z2MzVmphQ0FuWlc0dFIwSW5YRzRnSUNBcUlFQjBlWEJsSUh0emRISnBibWQ5WEc0Z0lDQXFMMXh1SUNCblpYUWdiRzlqWVd4bEtDa2dlMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpMbWx6Vm1Gc2FXUWdQeUIwYUdsekxteHZZeTVzYjJOaGJHVWdPaUJ1ZFd4c08xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRWRsZENCMGFHVWdiblZ0WW1WeWFXNW5JSE41YzNSbGJTQnZaaUJoSUVSMWNtRjBhVzl1TENCemRXTm9JQ2RpWlc1bkp5NGdWR2hsSUc1MWJXSmxjbWx1WnlCemVYTjBaVzBnYVhNZ2RYTmxaQ0IzYUdWdUlHWnZjbTFoZEhScGJtY2dkR2hsSUVSMWNtRjBhVzl1WEc0Z0lDQXFYRzRnSUNBcUlFQjBlWEJsSUh0emRISnBibWQ5WEc0Z0lDQXFMMXh1SUNCblpYUWdiblZ0WW1WeWFXNW5VM2x6ZEdWdEtDa2dlMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpMbWx6Vm1Gc2FXUWdQeUIwYUdsekxteHZZeTV1ZFcxaVpYSnBibWRUZVhOMFpXMGdPaUJ1ZFd4c08xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRkpsZEhWeWJuTWdZU0J6ZEhKcGJtY2djbVZ3Y21WelpXNTBZWFJwYjI0Z2IyWWdkR2hwY3lCRWRYSmhkR2x2YmlCbWIzSnRZWFIwWldRZ1lXTmpiM0prYVc1bklIUnZJSFJvWlNCemNHVmphV1pwWldRZ1ptOXliV0YwSUhOMGNtbHVaeTRnV1c5MUlHMWhlU0IxYzJVZ2RHaGxjMlVnZEc5clpXNXpPbHh1SUNBZ0tpQXFJR0JUWUNCbWIzSWdiV2xzYkdselpXTnZibVJ6WEc0Z0lDQXFJQ29nWUhOZ0lHWnZjaUJ6WldOdmJtUnpYRzRnSUNBcUlDb2dZRzFnSUdadmNpQnRhVzUxZEdWelhHNGdJQ0FxSUNvZ1lHaGdJR1p2Y2lCb2IzVnljMXh1SUNBZ0tpQXFJR0JrWUNCbWIzSWdaR0Y1YzF4dUlDQWdLaUFxSUdCM1lDQm1iM0lnZDJWbGEzTmNiaUFnSUNvZ0tpQmdUV0FnWm05eUlHMXZiblJvYzF4dUlDQWdLaUFxSUdCNVlDQm1iM0lnZVdWaGNuTmNiaUFnSUNvZ1RtOTBaWE02WEc0Z0lDQXFJQ29nUVdSa0lIQmhaR1JwYm1jZ1lua2djbVZ3WldGMGFXNW5JSFJvWlNCMGIydGxiaXdnWlM1bkxpQmNJbmw1WENJZ2NHRmtjeUIwYUdVZ2VXVmhjbk1nZEc4Z2RIZHZJR1JwWjJsMGN5d2dYQ0pvYUdob1hDSWdjR0ZrY3lCMGFHVWdhRzkxY25NZ2IzVjBJSFJ2SUdadmRYSWdaR2xuYVhSelhHNGdJQ0FxSUNvZ1ZHOXJaVzV6SUdOaGJpQmlaU0JsYzJOaGNHVmtJR0o1SUhkeVlYQndhVzVuSUhkcGRHZ2djMmx1WjJ4bElIRjFiM1JsY3k1Y2JpQWdJQ29nS2lCVWFHVWdaSFZ5WVhScGIyNGdkMmxzYkNCaVpTQmpiMjUyWlhKMFpXUWdkRzhnZEdobElITmxkQ0J2WmlCMWJtbDBjeUJwYmlCMGFHVWdabTl5YldGMElITjBjbWx1WnlCMWMybHVaeUI3UUd4cGJtc2dSSFZ5WVhScGIyNGpjMmhwWm5SVWIzMGdZVzVrSUhSb1pTQkVkWEpoZEdsdmJuTW5jeUJqYjI1MlpYSnphVzl1SUdGalkzVnlZV041SUhObGRIUnBibWN1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQm1iWFFnTFNCMGFHVWdabTl5YldGMElITjBjbWx1WjF4dUlDQWdLaUJBY0dGeVlXMGdlMDlpYW1WamRIMGdiM0IwY3lBdElHOXdkR2x2Ym5OY2JpQWdJQ29nUUhCaGNtRnRJSHRpYjI5c1pXRnVmU0JiYjNCMGN5NW1iRzl2Y2oxMGNuVmxYU0F0SUdac2IyOXlJRzUxYldWeWFXTmhiQ0IyWVd4MVpYTmNiaUFnSUNvZ1FHVjRZVzF3YkdVZ1JIVnlZWFJwYjI0dVpuSnZiVTlpYW1WamRDaDdJSGxsWVhKek9pQXhMQ0JrWVhsek9pQTJMQ0J6WldOdmJtUnpPaUF5SUgwcExuUnZSbTl5YldGMEtGd2llU0JrSUhOY0lpa2dMeTg5UGlCY0lqRWdOaUF5WENKY2JpQWdJQ29nUUdWNFlXMXdiR1VnUkhWeVlYUnBiMjR1Wm5KdmJVOWlhbVZqZENoN0lIbGxZWEp6T2lBeExDQmtZWGx6T2lBMkxDQnpaV052Ym1Sek9pQXlJSDBwTG5SdlJtOXliV0YwS0Z3aWVYa2daR1FnYzNOelhDSXBJQzh2UFQ0Z1hDSXdNU0F3TmlBd01ESmNJbHh1SUNBZ0tpQkFaWGhoYlhCc1pTQkVkWEpoZEdsdmJpNW1jbTl0VDJKcVpXTjBLSHNnZVdWaGNuTTZJREVzSUdSaGVYTTZJRFlzSUhObFkyOXVaSE02SURJZ2ZTa3VkRzlHYjNKdFlYUW9YQ0pOSUZOY0lpa2dMeTg5UGlCY0lqRXlJRFV4T0RRd01qQXdNRndpWEc0Z0lDQXFJRUJ5WlhSMWNtNGdlM04wY21sdVozMWNiaUFnSUNvdlhHNGdJSFJ2Um05eWJXRjBLR1p0ZEN3Z2IzQjBjeUE5SUh0OUtTQjdYRzRnSUNBZ0x5OGdjbVYyWlhKelpTMWpiMjF3WVhRZ2MybHVZMlVnTVM0eU95QjNaU0JoYkhkaGVYTWdjbTkxYm1RZ1pHOTNiaUJ1YjNjc0lHNWxkbVZ5SUhWd0xDQmhibVFnZDJVZ1pHOGdhWFFnWW5rZ1pHVm1ZWFZzZEZ4dUlDQWdJR052Ym5OMElHWnRkRTl3ZEhNZ1BTQjdYRzRnSUNBZ0lDQXVMaTV2Y0hSekxGeHVJQ0FnSUNBZ1pteHZiM0k2SUc5d2RITXVjbTkxYm1RZ0lUMDlJR1poYkhObElDWW1JRzl3ZEhNdVpteHZiM0lnSVQwOUlHWmhiSE5sTEZ4dUlDQWdJSDA3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11YVhOV1lXeHBaRnh1SUNBZ0lDQWdQeUJHYjNKdFlYUjBaWEl1WTNKbFlYUmxLSFJvYVhNdWJHOWpMQ0JtYlhSUGNIUnpLUzVtYjNKdFlYUkVkWEpoZEdsdmJrWnliMjFUZEhKcGJtY29kR2hwY3l3Z1ptMTBLVnh1SUNBZ0lDQWdPaUJKVGxaQlRFbEVPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUZKbGRIVnlibk1nWVNCemRISnBibWNnY21Wd2NtVnpaVzUwWVhScGIyNGdiMllnWVNCRWRYSmhkR2x2YmlCM2FYUm9JR0ZzYkNCMWJtbDBjeUJwYm1Oc2RXUmxaQzVjYmlBZ0lDb2dWRzhnYlc5a2FXWjVJR2wwY3lCaVpXaGhkbWx2Y2lCMWMyVWdkR2hsSUdCc2FYTjBVM1I1YkdWZ0lHRnVaQ0JoYm5rZ1NXNTBiQzVPZFcxaVpYSkdiM0p0WVhRZ2IzQjBhVzl1TENCMGFHOTFaMmdnWUhWdWFYUkVhWE53YkdGNVlDQnBjeUJsYzNCbFkybGhiR3g1SUhKbGJHVjJZVzUwTGx4dUlDQWdLaUJBYzJWbElHaDBkSEJ6T2k4dlpHVjJaV3h2Y0dWeUxtMXZlbWxzYkdFdWIzSm5MMlZ1TFZWVEwyUnZZM012VjJWaUwwcGhkbUZUWTNKcGNIUXZVbVZtWlhKbGJtTmxMMGRzYjJKaGJGOVBZbXBsWTNSekwwbHVkR3d2VG5WdFltVnlSbTl5YldGMFhHNGdJQ0FxSUVCd1lYSmhiU0J2Y0hSeklDMGdUMjRnYjNCMGFXOXVJRzlpYW1WamRDQjBieUJ2ZG1WeWNtbGtaU0IwYUdVZ1ptOXliV0YwZEdsdVp5NGdRV05qWlhCMGN5QjBhR1VnYzJGdFpTQnJaWGx6SUdGeklIUm9aU0J2Y0hScGIyNXpJSEJoY21GdFpYUmxjaUJ2WmlCMGFHVWdibUYwYVhabElHQkpiblF1VG5WdFltVnlSbTl5YldGMFlDQmpiMjV6ZEhKMVkzUnZjaXdnWVhNZ2QyVnNiQ0JoY3lCZ2JHbHpkRk4wZVd4bFlDNWNiaUFnSUNvZ1FHVjRZVzF3YkdWY2JpQWdJQ29nWUdCZ2FuTmNiaUFnSUNvZ2RtRnlJR1IxY2lBOUlFUjFjbUYwYVc5dUxtWnliMjFQWW1wbFkzUW9leUJrWVhsek9pQXhMQ0JvYjNWeWN6b2dOU3dnYldsdWRYUmxjem9nTmlCOUtWeHVJQ0FnS2lCa2RYSXVkRzlJZFcxaGJpZ3BJQzh2UFQ0Z0p6RWdaR0Y1TENBMUlHaHZkWEp6TENBMklHMXBiblYwWlhNblhHNGdJQ0FxSUdSMWNpNTBiMGgxYldGdUtIc2diR2x6ZEZOMGVXeGxPaUJjSW14dmJtZGNJaUI5S1NBdkx6MCtJQ2N4SUdSaGVTd2dOU0JvYjNWeWN5d2dZVzVrSURZZ2JXbHVkWFJsY3lkY2JpQWdJQ29nWkhWeUxuUnZTSFZ0WVc0b2V5QjFibWwwUkdsemNHeGhlVG9nWENKemFHOXlkRndpSUgwcElDOHZQVDRnSnpFZ1pHRjVMQ0ExSUdoeUxDQTJJRzFwYmlkY2JpQWdJQ29nWUdCZ1hHNGdJQ0FxTDF4dUlDQjBiMGgxYldGdUtHOXdkSE1nUFNCN2ZTa2dlMXh1SUNBZ0lHTnZibk4wSUd3Z1BTQnZjbVJsY21Wa1ZXNXBkSE5jYmlBZ0lDQWdJQzV0WVhBb0tIVnVhWFFwSUQwK0lIdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2RtRnNJRDBnZEdocGN5NTJZV3gxWlhOYmRXNXBkRjA3WEc0Z0lDQWdJQ0FnSUdsbUlDaHBjMVZ1WkdWbWFXNWxaQ2gyWVd3cEtTQjdYRzRnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJRzUxYkd3N1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlIUm9hWE11Ykc5alhHNGdJQ0FnSUNBZ0lDQWdMbTUxYldKbGNrWnZjbTFoZEhSbGNpaDdJSE4wZVd4bE9pQmNJblZ1YVhSY0lpd2dkVzVwZEVScGMzQnNZWGs2SUZ3aWJHOXVaMXdpTENBdUxpNXZjSFJ6TENCMWJtbDBPaUIxYm1sMExuTnNhV05sS0RBc0lDMHhLU0I5S1Z4dUlDQWdJQ0FnSUNBZ0lDNW1iM0p0WVhRb2RtRnNLVHRjYmlBZ0lDQWdJSDBwWEc0Z0lDQWdJQ0F1Wm1sc2RHVnlLQ2h1S1NBOVBpQnVLVHRjYmx4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TG14dlkxeHVJQ0FnSUNBZ0xteHBjM1JHYjNKdFlYUjBaWElvZXlCMGVYQmxPaUJjSW1OdmJtcDFibU4wYVc5dVhDSXNJSE4wZVd4bE9pQnZjSFJ6TG14cGMzUlRkSGxzWlNCOGZDQmNJbTVoY25KdmQxd2lMQ0F1TGk1dmNIUnpJSDBwWEc0Z0lDQWdJQ0F1Wm05eWJXRjBLR3dwTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGSmxkSFZ5Ym5NZ1lTQktZWFpoVTJOeWFYQjBJRzlpYW1WamRDQjNhWFJvSUhSb2FYTWdSSFZ5WVhScGIyNG5jeUIyWVd4MVpYTXVYRzRnSUNBcUlFQmxlR0Z0Y0d4bElFUjFjbUYwYVc5dUxtWnliMjFQWW1wbFkzUW9leUI1WldGeWN6b2dNU3dnWkdGNWN6b2dOaXdnYzJWamIyNWtjem9nTWlCOUtTNTBiMDlpYW1WamRDZ3BJQzh2UFQ0Z2V5QjVaV0Z5Y3pvZ01Td2daR0Y1Y3pvZ05pd2djMlZqYjI1a2N6b2dNaUI5WEc0Z0lDQXFJRUJ5WlhSMWNtNGdlMDlpYW1WamRIMWNiaUFnSUNvdlhHNGdJSFJ2VDJKcVpXTjBLQ2tnZTF4dUlDQWdJR2xtSUNnaGRHaHBjeTVwYzFaaGJHbGtLU0J5WlhSMWNtNGdlMzA3WEc0Z0lDQWdjbVYwZFhKdUlIc2dMaTR1ZEdocGN5NTJZV3gxWlhNZ2ZUdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJTWlhSMWNtNXpJR0Z1SUVsVFR5QTROakF4TFdOdmJYQnNhV0Z1ZENCemRISnBibWNnY21Wd2NtVnpaVzUwWVhScGIyNGdiMllnZEdocGN5QkVkWEpoZEdsdmJpNWNiaUFnSUNvZ1FITmxaU0JvZEhSd2N6b3ZMMlZ1TG5kcGEybHdaV1JwWVM1dmNtY3ZkMmxyYVM5SlUwOWZPRFl3TVNORWRYSmhkR2x2Ym5OY2JpQWdJQ29nUUdWNFlXMXdiR1VnUkhWeVlYUnBiMjR1Wm5KdmJVOWlhbVZqZENoN0lIbGxZWEp6T2lBekxDQnpaV052Ym1Sek9pQTBOU0I5S1M1MGIwbFRUeWdwSUM4dlBUNGdKMUF6V1ZRME5WTW5YRzRnSUNBcUlFQmxlR0Z0Y0d4bElFUjFjbUYwYVc5dUxtWnliMjFQWW1wbFkzUW9leUJ0YjI1MGFITTZJRFFzSUhObFkyOXVaSE02SURRMUlIMHBMblJ2U1ZOUEtDa2dMeTg5UGlBblVEUk5WRFExVXlkY2JpQWdJQ29nUUdWNFlXMXdiR1VnUkhWeVlYUnBiMjR1Wm5KdmJVOWlhbVZqZENoN0lHMXZiblJvY3pvZ05TQjlLUzUwYjBsVFR5Z3BJQzh2UFQ0Z0oxQTFUU2RjYmlBZ0lDb2dRR1Y0WVcxd2JHVWdSSFZ5WVhScGIyNHVabkp2YlU5aWFtVmpkQ2g3SUcxcGJuVjBaWE02SURVZ2ZTa3VkRzlKVTA4b0tTQXZMejArSUNkUVZEVk5KMXh1SUNBZ0tpQkFaWGhoYlhCc1pTQkVkWEpoZEdsdmJpNW1jbTl0VDJKcVpXTjBLSHNnYldsc2JHbHpaV052Ym1Sek9pQTJJSDBwTG5SdlNWTlBLQ2tnTHk4OVBpQW5VRlF3TGpBd05sTW5YRzRnSUNBcUlFQnlaWFIxY200Z2UzTjBjbWx1WjMxY2JpQWdJQ292WEc0Z0lIUnZTVk5QS0NrZ2UxeHVJQ0FnSUM4dklIZGxJR052ZFd4a0lIVnpaU0IwYUdVZ1ptOXliV0YwZEdWeUxDQmlkWFFnZEdocGN5QnBjeUJoYmlCbFlYTnBaWElnZDJGNUlIUnZJR2RsZENCMGFHVWdiV2x1YVcxMWJTQnpkSEpwYm1kY2JpQWdJQ0JwWmlBb0lYUm9hWE11YVhOV1lXeHBaQ2tnY21WMGRYSnVJRzUxYkd3N1hHNWNiaUFnSUNCc1pYUWdjeUE5SUZ3aVVGd2lPMXh1SUNBZ0lHbG1JQ2gwYUdsekxubGxZWEp6SUNFOVBTQXdLU0J6SUNzOUlIUm9hWE11ZVdWaGNuTWdLeUJjSWxsY0lqdGNiaUFnSUNCcFppQW9kR2hwY3k1dGIyNTBhSE1nSVQwOUlEQWdmSHdnZEdocGN5NXhkV0Z5ZEdWeWN5QWhQVDBnTUNrZ2N5QXJQU0IwYUdsekxtMXZiblJvY3lBcklIUm9hWE11Y1hWaGNuUmxjbk1nS2lBeklDc2dYQ0pOWENJN1hHNGdJQ0FnYVdZZ0tIUm9hWE11ZDJWbGEzTWdJVDA5SURBcElITWdLejBnZEdocGN5NTNaV1ZyY3lBcklGd2lWMXdpTzF4dUlDQWdJR2xtSUNoMGFHbHpMbVJoZVhNZ0lUMDlJREFwSUhNZ0t6MGdkR2hwY3k1a1lYbHpJQ3NnWENKRVhDSTdYRzRnSUNBZ2FXWWdLSFJvYVhNdWFHOTFjbk1nSVQwOUlEQWdmSHdnZEdocGN5NXRhVzUxZEdWeklDRTlQU0F3SUh4OElIUm9hWE11YzJWamIyNWtjeUFoUFQwZ01DQjhmQ0IwYUdsekxtMXBiR3hwYzJWamIyNWtjeUFoUFQwZ01DbGNiaUFnSUNBZ0lITWdLejBnWENKVVhDSTdYRzRnSUNBZ2FXWWdLSFJvYVhNdWFHOTFjbk1nSVQwOUlEQXBJSE1nS3owZ2RHaHBjeTVvYjNWeWN5QXJJRndpU0Z3aU8xeHVJQ0FnSUdsbUlDaDBhR2x6TG0xcGJuVjBaWE1nSVQwOUlEQXBJSE1nS3owZ2RHaHBjeTV0YVc1MWRHVnpJQ3NnWENKTlhDSTdYRzRnSUNBZ2FXWWdLSFJvYVhNdWMyVmpiMjVrY3lBaFBUMGdNQ0I4ZkNCMGFHbHpMbTFwYkd4cGMyVmpiMjVrY3lBaFBUMGdNQ2xjYmlBZ0lDQWdJQzh2SUhSb2FYTWdkMmxzYkNCb1lXNWtiR1VnWENKbWJHOWhkR2x1WnlCd2IybHVkQ0J0WVdSdVpYTnpYQ0lnWW5rZ2NtVnRiM1pwYm1jZ1pYaDBjbUVnWkdWamFXMWhiQ0J3YkdGalpYTmNiaUFnSUNBZ0lDOHZJR2gwZEhCek9pOHZjM1JoWTJ0dmRtVnlabXh2ZHk1amIyMHZjWFZsYzNScGIyNXpMelU0T0RBd05DOXBjeTFtYkc5aGRHbHVaeTF3YjJsdWRDMXRZWFJvTFdKeWIydGxibHh1SUNBZ0lDQWdjeUFyUFNCeWIzVnVaRlJ2S0hSb2FYTXVjMlZqYjI1a2N5QXJJSFJvYVhNdWJXbHNiR2x6WldOdmJtUnpJQzhnTVRBd01Dd2dNeWtnS3lCY0lsTmNJanRjYmlBZ0lDQnBaaUFvY3lBOVBUMGdYQ0pRWENJcElITWdLejBnWENKVU1GTmNJanRjYmlBZ0lDQnlaWFIxY200Z2N6dGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJTWlhSMWNtNXpJR0Z1SUVsVFR5QTROakF4TFdOdmJYQnNhV0Z1ZENCemRISnBibWNnY21Wd2NtVnpaVzUwWVhScGIyNGdiMllnZEdocGN5QkVkWEpoZEdsdmJpd2dabTl5YldGMGRHVmtJR0Z6SUdFZ2RHbHRaU0J2WmlCa1lYa3VYRzRnSUNBcUlFNXZkR1VnZEdoaGRDQjBhR2x6SUhkcGJHd2djbVYwZFhKdUlHNTFiR3dnYVdZZ2RHaGxJR1IxY21GMGFXOXVJR2x6SUdsdWRtRnNhV1FzSUc1bFoyRjBhWFpsTENCdmNpQmxjWFZoYkNCMGJ5QnZjaUJuY21WaGRHVnlJSFJvWVc0Z01qUWdhRzkxY25NdVhHNGdJQ0FxSUVCelpXVWdhSFIwY0hNNkx5OWxiaTUzYVd0cGNHVmthV0V1YjNKbkwzZHBhMmt2U1ZOUFh6ZzJNREVqVkdsdFpYTmNiaUFnSUNvZ1FIQmhjbUZ0SUh0UFltcGxZM1I5SUc5d2RITWdMU0J2Y0hScGIyNXpYRzRnSUNBcUlFQndZWEpoYlNCN1ltOXZiR1ZoYm4wZ1cyOXdkSE11YzNWd2NISmxjM05OYVd4c2FYTmxZMjl1WkhNOVptRnNjMlZkSUMwZ1pYaGpiSFZrWlNCdGFXeHNhWE5sWTI5dVpITWdabkp2YlNCMGFHVWdabTl5YldGMElHbG1JSFJvWlhrbmNtVWdNRnh1SUNBZ0tpQkFjR0Z5WVcwZ2UySnZiMnhsWVc1OUlGdHZjSFJ6TG5OMWNIQnlaWE56VTJWamIyNWtjejFtWVd4elpWMGdMU0JsZUdOc2RXUmxJSE5sWTI5dVpITWdabkp2YlNCMGFHVWdabTl5YldGMElHbG1JSFJvWlhrbmNtVWdNRnh1SUNBZ0tpQkFjR0Z5WVcwZ2UySnZiMnhsWVc1OUlGdHZjSFJ6TG1sdVkyeDFaR1ZRY21WbWFYZzlabUZzYzJWZElDMGdhVzVqYkhWa1pTQjBhR1VnWUZSZ0lIQnlaV1pwZUZ4dUlDQWdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdXMjl3ZEhNdVptOXliV0YwUFNkbGVIUmxibVJsWkNkZElDMGdZMmh2YjNObElHSmxkSGRsWlc0Z2RHaGxJR0poYzJsaklHRnVaQ0JsZUhSbGJtUmxaQ0JtYjNKdFlYUmNiaUFnSUNvZ1FHVjRZVzF3YkdVZ1JIVnlZWFJwYjI0dVpuSnZiVTlpYW1WamRDaDdJR2h2ZFhKek9pQXhNU0I5S1M1MGIwbFRUMVJwYldVb0tTQXZMejArSUNjeE1Ub3dNRG93TUM0d01EQW5YRzRnSUNBcUlFQmxlR0Z0Y0d4bElFUjFjbUYwYVc5dUxtWnliMjFQWW1wbFkzUW9leUJvYjNWeWN6b2dNVEVnZlNrdWRHOUpVMDlVYVcxbEtIc2djM1Z3Y0hKbGMzTk5hV3hzYVhObFkyOXVaSE02SUhSeWRXVWdmU2tnTHk4OVBpQW5NVEU2TURBNk1EQW5YRzRnSUNBcUlFQmxlR0Z0Y0d4bElFUjFjbUYwYVc5dUxtWnliMjFQWW1wbFkzUW9leUJvYjNWeWN6b2dNVEVnZlNrdWRHOUpVMDlVYVcxbEtIc2djM1Z3Y0hKbGMzTlRaV052Ym1Sek9pQjBjblZsSUgwcElDOHZQVDRnSnpFeE9qQXdKMXh1SUNBZ0tpQkFaWGhoYlhCc1pTQkVkWEpoZEdsdmJpNW1jbTl0VDJKcVpXTjBLSHNnYUc5MWNuTTZJREV4SUgwcExuUnZTVk5QVkdsdFpTaDdJR2x1WTJ4MVpHVlFjbVZtYVhnNklIUnlkV1VnZlNrZ0x5ODlQaUFuVkRFeE9qQXdPakF3TGpBd01DZGNiaUFnSUNvZ1FHVjRZVzF3YkdVZ1JIVnlZWFJwYjI0dVpuSnZiVTlpYW1WamRDaDdJR2h2ZFhKek9pQXhNU0I5S1M1MGIwbFRUMVJwYldVb2V5Qm1iM0p0WVhRNklDZGlZWE5wWXljZ2ZTa2dMeTg5UGlBbk1URXdNREF3TGpBd01DZGNiaUFnSUNvZ1FISmxkSFZ5YmlCN2MzUnlhVzVuZlZ4dUlDQWdLaTljYmlBZ2RHOUpVMDlVYVcxbEtHOXdkSE1nUFNCN2ZTa2dlMXh1SUNBZ0lHbG1JQ2doZEdocGN5NXBjMVpoYkdsa0tTQnlaWFIxY200Z2JuVnNiRHRjYmx4dUlDQWdJR052Ym5OMElHMXBiR3hwY3lBOUlIUm9hWE11ZEc5TmFXeHNhWE1vS1R0Y2JpQWdJQ0JwWmlBb2JXbHNiR2x6SUR3Z01DQjhmQ0J0YVd4c2FYTWdQajBnT0RZME1EQXdNREFwSUhKbGRIVnliaUJ1ZFd4c08xeHVYRzRnSUNBZ2IzQjBjeUE5SUh0Y2JpQWdJQ0FnSUhOMWNIQnlaWE56VFdsc2JHbHpaV052Ym1Sek9pQm1ZV3h6WlN4Y2JpQWdJQ0FnSUhOMWNIQnlaWE56VTJWamIyNWtjem9nWm1Gc2MyVXNYRzRnSUNBZ0lDQnBibU5zZFdSbFVISmxabWw0T2lCbVlXeHpaU3hjYmlBZ0lDQWdJR1p2Y20xaGREb2dYQ0psZUhSbGJtUmxaRndpTEZ4dUlDQWdJQ0FnTGk0dWIzQjBjeXhjYmlBZ0lDQjlPMXh1WEc0Z0lDQWdZMjl1YzNRZ2RtRnNkV1VnUFNCMGFHbHpMbk5vYVdaMFZHOG9YQ0pvYjNWeWMxd2lMQ0JjSW0xcGJuVjBaWE5jSWl3Z1hDSnpaV052Ym1SelhDSXNJRndpYldsc2JHbHpaV052Ym1SelhDSXBPMXh1WEc0Z0lDQWdiR1YwSUdadGRDQTlJRzl3ZEhNdVptOXliV0YwSUQwOVBTQmNJbUpoYzJsalhDSWdQeUJjSW1ob2JXMWNJaUE2SUZ3aWFHZzZiVzFjSWp0Y2JseHVJQ0FnSUdsbUlDZ2hiM0IwY3k1emRYQndjbVZ6YzFObFkyOXVaSE1nZkh3Z2RtRnNkV1V1YzJWamIyNWtjeUFoUFQwZ01DQjhmQ0IyWVd4MVpTNXRhV3hzYVhObFkyOXVaSE1nSVQwOUlEQXBJSHRjYmlBZ0lDQWdJR1p0ZENBclBTQnZjSFJ6TG1admNtMWhkQ0E5UFQwZ1hDSmlZWE5wWTF3aUlEOGdYQ0p6YzF3aUlEb2dYQ0k2YzNOY0lqdGNiaUFnSUNBZ0lHbG1JQ2doYjNCMGN5NXpkWEJ3Y21WemMwMXBiR3hwYzJWamIyNWtjeUI4ZkNCMllXeDFaUzV0YVd4c2FYTmxZMjl1WkhNZ0lUMDlJREFwSUh0Y2JpQWdJQ0FnSUNBZ1ptMTBJQ3M5SUZ3aUxsTlRVMXdpTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmx4dUlDQWdJR3hsZENCemRISWdQU0IyWVd4MVpTNTBiMFp2Y20xaGRDaG1iWFFwTzF4dVhHNGdJQ0FnYVdZZ0tHOXdkSE11YVc1amJIVmtaVkJ5WldacGVDa2dlMXh1SUNBZ0lDQWdjM1J5SUQwZ1hDSlVYQ0lnS3lCemRISTdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2NtVjBkWEp1SUhOMGNqdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJTWlhSMWNtNXpJR0Z1SUVsVFR5QTROakF4SUhKbGNISmxjMlZ1ZEdGMGFXOXVJRzltSUhSb2FYTWdSSFZ5WVhScGIyNGdZWEJ3Y205d2NtbGhkR1VnWm05eUlIVnpaU0JwYmlCS1UwOU9MbHh1SUNBZ0tpQkFjbVYwZFhKdUlIdHpkSEpwYm1kOVhHNGdJQ0FxTDF4dUlDQjBiMHBUVDA0b0tTQjdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVkRzlKVTA4b0tUdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJTWlhSMWNtNXpJR0Z1SUVsVFR5QTROakF4SUhKbGNISmxjMlZ1ZEdGMGFXOXVJRzltSUhSb2FYTWdSSFZ5WVhScGIyNGdZWEJ3Y205d2NtbGhkR1VnWm05eUlIVnpaU0JwYmlCa1pXSjFaMmRwYm1jdVhHNGdJQ0FxSUVCeVpYUjFjbTRnZTNOMGNtbHVaMzFjYmlBZ0lDb3ZYRzRnSUhSdlUzUnlhVzVuS0NrZ2UxeHVJQ0FnSUhKbGRIVnliaUIwYUdsekxuUnZTVk5QS0NrN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dVbVYwZFhKdWN5QmhiaUJ0YVd4c2FYTmxZMjl1WkhNZ2RtRnNkV1VnYjJZZ2RHaHBjeUJFZFhKaGRHbHZiaTVjYmlBZ0lDb2dRSEpsZEhWeWJpQjdiblZ0WW1WeWZWeHVJQ0FnS2k5Y2JpQWdkRzlOYVd4c2FYTW9LU0I3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11WVhNb1hDSnRhV3hzYVhObFkyOXVaSE5jSWlrN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dVbVYwZFhKdWN5QmhiaUJ0YVd4c2FYTmxZMjl1WkhNZ2RtRnNkV1VnYjJZZ2RHaHBjeUJFZFhKaGRHbHZiaTRnUVd4cFlYTWdiMllnZTBCc2FXNXJJSFJ2VFdsc2JHbHpmVnh1SUNBZ0tpQkFjbVYwZFhKdUlIdHVkVzFpWlhKOVhHNGdJQ0FxTDF4dUlDQjJZV3gxWlU5bUtDa2dlMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpMblJ2VFdsc2JHbHpLQ2s3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1RXRnJaU0IwYUdseklFUjFjbUYwYVc5dUlHeHZibWRsY2lCaWVTQjBhR1VnYzNCbFkybG1hV1ZrSUdGdGIzVnVkQzRnVW1WMGRYSnVJR0VnYm1WM2JIa3RZMjl1YzNSeWRXTjBaV1FnUkhWeVlYUnBiMjR1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdSSFZ5WVhScGIyNThUMkpxWldOMGZHNTFiV0psY24wZ1pIVnlZWFJwYjI0Z0xTQlVhR1VnWVcxdmRXNTBJSFJ2SUdGa1pDNGdSV2wwYUdWeUlHRWdUSFY0YjI0Z1JIVnlZWFJwYjI0c0lHRWdiblZ0WW1WeUlHOW1JRzFwYkd4cGMyVmpiMjVrY3l3Z2RHaGxJRzlpYW1WamRDQmhjbWQxYldWdWRDQjBieUJFZFhKaGRHbHZiaTVtY205dFQySnFaV04wS0NsY2JpQWdJQ29nUUhKbGRIVnliaUI3UkhWeVlYUnBiMjU5WEc0Z0lDQXFMMXh1SUNCd2JIVnpLR1IxY21GMGFXOXVLU0I3WEc0Z0lDQWdhV1lnS0NGMGFHbHpMbWx6Vm1Gc2FXUXBJSEpsZEhWeWJpQjBhR2x6TzF4dVhHNGdJQ0FnWTI5dWMzUWdaSFZ5SUQwZ1JIVnlZWFJwYjI0dVpuSnZiVVIxY21GMGFXOXVUR2xyWlNoa2RYSmhkR2x2Ymlrc1hHNGdJQ0FnSUNCeVpYTjFiSFFnUFNCN2ZUdGNibHh1SUNBZ0lHWnZjaUFvWTI5dWMzUWdheUJ2WmlCdmNtUmxjbVZrVlc1cGRITXBJSHRjYmlBZ0lDQWdJR2xtSUNob1lYTlBkMjVRY205d1pYSjBlU2hrZFhJdWRtRnNkV1Z6TENCcktTQjhmQ0JvWVhOUGQyNVFjbTl3WlhKMGVTaDBhR2x6TG5aaGJIVmxjeXdnYXlrcElIdGNiaUFnSUNBZ0lDQWdjbVZ6ZFd4MFcydGRJRDBnWkhWeUxtZGxkQ2hyS1NBcklIUm9hWE11WjJWMEtHc3BPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNibHh1SUNBZ0lISmxkSFZ5YmlCamJHOXVaU2gwYUdsekxDQjdJSFpoYkhWbGN6b2djbVZ6ZFd4MElIMHNJSFJ5ZFdVcE8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRTFoYTJVZ2RHaHBjeUJFZFhKaGRHbHZiaUJ6YUc5eWRHVnlJR0o1SUhSb1pTQnpjR1ZqYVdacFpXUWdZVzF2ZFc1MExpQlNaWFIxY200Z1lTQnVaWGRzZVMxamIyNXpkSEoxWTNSbFpDQkVkWEpoZEdsdmJpNWNiaUFnSUNvZ1FIQmhjbUZ0SUh0RWRYSmhkR2x2Ym54UFltcGxZM1I4Ym5WdFltVnlmU0JrZFhKaGRHbHZiaUF0SUZSb1pTQmhiVzkxYm5RZ2RHOGdjM1ZpZEhKaFkzUXVJRVZwZEdobGNpQmhJRXgxZUc5dUlFUjFjbUYwYVc5dUxDQmhJRzUxYldKbGNpQnZaaUJ0YVd4c2FYTmxZMjl1WkhNc0lIUm9aU0J2WW1wbFkzUWdZWEpuZFcxbGJuUWdkRzhnUkhWeVlYUnBiMjR1Wm5KdmJVOWlhbVZqZENncFhHNGdJQ0FxSUVCeVpYUjFjbTRnZTBSMWNtRjBhVzl1ZlZ4dUlDQWdLaTljYmlBZ2JXbHVkWE1vWkhWeVlYUnBiMjRwSUh0Y2JpQWdJQ0JwWmlBb0lYUm9hWE11YVhOV1lXeHBaQ2tnY21WMGRYSnVJSFJvYVhNN1hHNWNiaUFnSUNCamIyNXpkQ0JrZFhJZ1BTQkVkWEpoZEdsdmJpNW1jbTl0UkhWeVlYUnBiMjVNYVd0bEtHUjFjbUYwYVc5dUtUdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NXdiSFZ6S0dSMWNpNXVaV2RoZEdVb0tTazdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nVTJOaGJHVWdkR2hwY3lCRWRYSmhkR2x2YmlCaWVTQjBhR1VnYzNCbFkybG1hV1ZrSUdGdGIzVnVkQzRnVW1WMGRYSnVJR0VnYm1WM2JIa3RZMjl1YzNSeWRXTjBaV1FnUkhWeVlYUnBiMjR1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdablZ1WTNScGIyNTlJR1p1SUMwZ1ZHaGxJR1oxYm1OMGFXOXVJSFJ2SUdGd2NHeDVJSFJ2SUdWaFkyZ2dkVzVwZEM0Z1FYSnBkSGtnYVhNZ01TQnZjaUF5T2lCMGFHVWdkbUZzZFdVZ2IyWWdkR2hsSUhWdWFYUWdZVzVrTENCdmNIUnBiMjVoYkd4NUxDQjBhR1VnZFc1cGRDQnVZVzFsTGlCTmRYTjBJSEpsZEhWeWJpQmhJRzUxYldKbGNpNWNiaUFnSUNvZ1FHVjRZVzF3YkdVZ1JIVnlZWFJwYjI0dVpuSnZiVTlpYW1WamRDaDdJR2h2ZFhKek9pQXhMQ0J0YVc1MWRHVnpPaUF6TUNCOUtTNXRZWEJWYm1sMGN5aDRJRDArSUhnZ0tpQXlLU0F2THowK0lIc2dhRzkxY25NNklESXNJRzFwYm5WMFpYTTZJRFl3SUgxY2JpQWdJQ29nUUdWNFlXMXdiR1VnUkhWeVlYUnBiMjR1Wm5KdmJVOWlhbVZqZENoN0lHaHZkWEp6T2lBeExDQnRhVzUxZEdWek9pQXpNQ0I5S1M1dFlYQlZibWwwY3lnb2VDd2dkU2tnUFQ0Z2RTQTlQVDBnWENKb2IzVnlYQ0lnUHlCNElDb2dNaUE2SUhncElDOHZQVDRnZXlCb2IzVnljem9nTWl3Z2JXbHVkWFJsY3pvZ016QWdmVnh1SUNBZ0tpQkFjbVYwZFhKdUlIdEVkWEpoZEdsdmJuMWNiaUFnSUNvdlhHNGdJRzFoY0ZWdWFYUnpLR1p1S1NCN1hHNGdJQ0FnYVdZZ0tDRjBhR2x6TG1selZtRnNhV1FwSUhKbGRIVnliaUIwYUdsek8xeHVJQ0FnSUdOdmJuTjBJSEpsYzNWc2RDQTlJSHQ5TzF4dUlDQWdJR1p2Y2lBb1kyOXVjM1FnYXlCdlppQlBZbXBsWTNRdWEyVjVjeWgwYUdsekxuWmhiSFZsY3lrcElIdGNiaUFnSUNBZ0lISmxjM1ZzZEZ0clhTQTlJR0Z6VG5WdFltVnlLR1p1S0hSb2FYTXVkbUZzZFdWelcydGRMQ0JyS1NrN1hHNGdJQ0FnZlZ4dUlDQWdJSEpsZEhWeWJpQmpiRzl1WlNoMGFHbHpMQ0I3SUhaaGJIVmxjem9nY21WemRXeDBJSDBzSUhSeWRXVXBPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUVkbGRDQjBhR1VnZG1Gc2RXVWdiMllnZFc1cGRDNWNiaUFnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUhWdWFYUWdMU0JoSUhWdWFYUWdjM1ZqYUNCaGN5QW5iV2x1ZFhSbEp5QnZjaUFuWkdGNUoxeHVJQ0FnS2lCQVpYaGhiWEJzWlNCRWRYSmhkR2x2Ymk1bWNtOXRUMkpxWldOMEtIdDVaV0Z5Y3pvZ01pd2daR0Y1Y3pvZ00zMHBMbWRsZENnbmVXVmhjbk1uS1NBdkx6MCtJREpjYmlBZ0lDb2dRR1Y0WVcxd2JHVWdSSFZ5WVhScGIyNHVabkp2YlU5aWFtVmpkQ2g3ZVdWaGNuTTZJRElzSUdSaGVYTTZJRE45S1M1blpYUW9KMjF2Ym5Sb2N5Y3BJQzh2UFQ0Z01GeHVJQ0FnS2lCQVpYaGhiWEJzWlNCRWRYSmhkR2x2Ymk1bWNtOXRUMkpxWldOMEtIdDVaV0Z5Y3pvZ01pd2daR0Y1Y3pvZ00zMHBMbWRsZENnblpHRjVjeWNwSUM4dlBUNGdNMXh1SUNBZ0tpQkFjbVYwZFhKdUlIdHVkVzFpWlhKOVhHNGdJQ0FxTDF4dUlDQm5aWFFvZFc1cGRDa2dlMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpXMFIxY21GMGFXOXVMbTV2Y20xaGJHbDZaVlZ1YVhRb2RXNXBkQ2xkTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGd2lVMlYwWENJZ2RHaGxJSFpoYkhWbGN5QnZaaUJ6Y0dWamFXWnBaV1FnZFc1cGRITXVJRkpsZEhWeWJpQmhJRzVsZDJ4NUxXTnZibk4wY25WamRHVmtJRVIxY21GMGFXOXVMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UwOWlhbVZqZEgwZ2RtRnNkV1Z6SUMwZ1lTQnRZWEJ3YVc1bklHOW1JSFZ1YVhSeklIUnZJRzUxYldKbGNuTmNiaUFnSUNvZ1FHVjRZVzF3YkdVZ1pIVnlMbk5sZENoN0lIbGxZWEp6T2lBeU1ERTNJSDBwWEc0Z0lDQXFJRUJsZUdGdGNHeGxJR1IxY2k1elpYUW9leUJvYjNWeWN6b2dPQ3dnYldsdWRYUmxjem9nTXpBZ2ZTbGNiaUFnSUNvZ1FISmxkSFZ5YmlCN1JIVnlZWFJwYjI1OVhHNGdJQ0FxTDF4dUlDQnpaWFFvZG1Gc2RXVnpLU0I3WEc0Z0lDQWdhV1lnS0NGMGFHbHpMbWx6Vm1Gc2FXUXBJSEpsZEhWeWJpQjBhR2x6TzF4dVhHNGdJQ0FnWTI5dWMzUWdiV2w0WldRZ1BTQjdJQzR1TG5Sb2FYTXVkbUZzZFdWekxDQXVMaTV1YjNKdFlXeHBlbVZQWW1wbFkzUW9kbUZzZFdWekxDQkVkWEpoZEdsdmJpNXViM0p0WVd4cGVtVlZibWwwS1NCOU8xeHVJQ0FnSUhKbGRIVnliaUJqYkc5dVpTaDBhR2x6TENCN0lIWmhiSFZsY3pvZ2JXbDRaV1FnZlNrN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dYQ0pUWlhSY0lpQjBhR1VnYkc5allXeGxJR0Z1WkM5dmNpQnVkVzFpWlhKcGJtZFRlWE4wWlcwdUlDQlNaWFIxY201eklHRWdibVYzYkhrdFkyOXVjM1J5ZFdOMFpXUWdSSFZ5WVhScGIyNHVYRzRnSUNBcUlFQmxlR0Z0Y0d4bElHUjFjaTV5WldOdmJtWnBaM1Z5WlNoN0lHeHZZMkZzWlRvZ0oyVnVMVWRDSnlCOUtWeHVJQ0FnS2lCQWNtVjBkWEp1SUh0RWRYSmhkR2x2Ym4xY2JpQWdJQ292WEc0Z0lISmxZMjl1Wm1sbmRYSmxLSHNnYkc5allXeGxMQ0J1ZFcxaVpYSnBibWRUZVhOMFpXMHNJR052Ym5abGNuTnBiMjVCWTJOMWNtRmplU0I5SUQwZ2UzMHBJSHRjYmlBZ0lDQmpiMjV6ZENCc2IyTWdQU0IwYUdsekxteHZZeTVqYkc5dVpTaDdJR3h2WTJGc1pTd2diblZ0WW1WeWFXNW5VM2x6ZEdWdElIMHBMRnh1SUNBZ0lDQWdiM0IwY3lBOUlIc2diRzlqSUgwN1hHNWNiaUFnSUNCcFppQW9ZMjl1ZG1WeWMybHZia0ZqWTNWeVlXTjVLU0I3WEc0Z0lDQWdJQ0J2Y0hSekxtTnZiblpsY25OcGIyNUJZMk4xY21GamVTQTlJR052Ym5abGNuTnBiMjVCWTJOMWNtRmplVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnlaWFIxY200Z1kyeHZibVVvZEdocGN5d2diM0IwY3lrN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dVbVYwZFhKdUlIUm9aU0JzWlc1bmRHZ2diMllnZEdobElHUjFjbUYwYVc5dUlHbHVJSFJvWlNCemNHVmphV1pwWldRZ2RXNXBkQzVjYmlBZ0lDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlIVnVhWFFnTFNCaElIVnVhWFFnYzNWamFDQmhjeUFuYldsdWRYUmxjeWNnYjNJZ0oyUmhlWE1uWEc0Z0lDQXFJRUJsZUdGdGNHeGxJRVIxY21GMGFXOXVMbVp5YjIxUFltcGxZM1FvZTNsbFlYSnpPaUF4ZlNrdVlYTW9KMlJoZVhNbktTQXZMejArSURNMk5WeHVJQ0FnS2lCQVpYaGhiWEJzWlNCRWRYSmhkR2x2Ymk1bWNtOXRUMkpxWldOMEtIdDVaV0Z5Y3pvZ01YMHBMbUZ6S0NkdGIyNTBhSE1uS1NBdkx6MCtJREV5WEc0Z0lDQXFJRUJsZUdGdGNHeGxJRVIxY21GMGFXOXVMbVp5YjIxUFltcGxZM1FvZTJodmRYSnpPaUEyTUgwcExtRnpLQ2RrWVhsekp5a2dMeTg5UGlBeUxqVmNiaUFnSUNvZ1FISmxkSFZ5YmlCN2JuVnRZbVZ5ZlZ4dUlDQWdLaTljYmlBZ1lYTW9kVzVwZENrZ2UxeHVJQ0FnSUhKbGRIVnliaUIwYUdsekxtbHpWbUZzYVdRZ1B5QjBhR2x6TG5Ob2FXWjBWRzhvZFc1cGRDa3VaMlYwS0hWdWFYUXBJRG9nVG1GT08xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRkpsWkhWalpTQjBhR2x6SUVSMWNtRjBhVzl1SUhSdklHbDBjeUJqWVc1dmJtbGpZV3dnY21Wd2NtVnpaVzUwWVhScGIyNGdhVzRnYVhSeklHTjFjbkpsYm5RZ2RXNXBkSE11WEc0Z0lDQXFJRUJsZUdGdGNHeGxJRVIxY21GMGFXOXVMbVp5YjIxUFltcGxZM1FvZXlCNVpXRnljem9nTWl3Z1pHRjVjem9nTlRBd01DQjlLUzV1YjNKdFlXeHBlbVVvS1M1MGIwOWlhbVZqZENncElDOHZQVDRnZXlCNVpXRnljem9nTVRVc0lHUmhlWE02SURJMU5TQjlYRzRnSUNBcUlFQmxlR0Z0Y0d4bElFUjFjbUYwYVc5dUxtWnliMjFQWW1wbFkzUW9leUJvYjNWeWN6b2dNVElzSUcxcGJuVjBaWE02SUMwME5TQjlLUzV1YjNKdFlXeHBlbVVvS1M1MGIwOWlhbVZqZENncElDOHZQVDRnZXlCb2IzVnljem9nTVRFc0lHMXBiblYwWlhNNklERTFJSDFjYmlBZ0lDb2dRSEpsZEhWeWJpQjdSSFZ5WVhScGIyNTlYRzRnSUNBcUwxeHVJQ0J1YjNKdFlXeHBlbVVvS1NCN1hHNGdJQ0FnYVdZZ0tDRjBhR2x6TG1selZtRnNhV1FwSUhKbGRIVnliaUIwYUdsek8xeHVJQ0FnSUdOdmJuTjBJSFpoYkhNZ1BTQjBhR2x6TG5SdlQySnFaV04wS0NrN1hHNGdJQ0FnYm05eWJXRnNhWHBsVm1Gc2RXVnpLSFJvYVhNdWJXRjBjbWw0TENCMllXeHpLVHRjYmlBZ0lDQnlaWFIxY200Z1kyeHZibVVvZEdocGN5d2dleUIyWVd4MVpYTTZJSFpoYkhNZ2ZTd2dkSEoxWlNrN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRMjl1ZG1WeWRDQjBhR2x6SUVSMWNtRjBhVzl1SUdsdWRHOGdhWFJ6SUhKbGNISmxjMlZ1ZEdGMGFXOXVJR2x1SUdFZ1pHbG1abVZ5Wlc1MElITmxkQ0J2WmlCMWJtbDBjeTVjYmlBZ0lDb2dRR1Y0WVcxd2JHVWdSSFZ5WVhScGIyNHVabkp2YlU5aWFtVmpkQ2g3SUdodmRYSnpPaUF4TENCelpXTnZibVJ6T2lBek1DQjlLUzV6YUdsbWRGUnZLQ2R0YVc1MWRHVnpKeXdnSjIxcGJHeHBjMlZqYjI1a2N5Y3BMblJ2VDJKcVpXTjBLQ2tnTHk4OVBpQjdJRzFwYm5WMFpYTTZJRFl3TENCdGFXeHNhWE5sWTI5dVpITTZJRE13TURBd0lIMWNiaUFnSUNvZ1FISmxkSFZ5YmlCN1JIVnlZWFJwYjI1OVhHNGdJQ0FxTDF4dUlDQnphR2xtZEZSdktDNHVMblZ1YVhSektTQjdYRzRnSUNBZ2FXWWdLQ0YwYUdsekxtbHpWbUZzYVdRcElISmxkSFZ5YmlCMGFHbHpPMXh1WEc0Z0lDQWdhV1lnS0hWdWFYUnpMbXhsYm1kMGFDQTlQVDBnTUNrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUhSb2FYTTdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2RXNXBkSE1nUFNCMWJtbDBjeTV0WVhBb0tIVXBJRDArSUVSMWNtRjBhVzl1TG01dmNtMWhiR2w2WlZWdWFYUW9kU2twTzF4dVhHNGdJQ0FnWTI5dWMzUWdZblZwYkhRZ1BTQjdmU3hjYmlBZ0lDQWdJR0ZqWTNWdGRXeGhkR1ZrSUQwZ2UzMHNYRzRnSUNBZ0lDQjJZV3h6SUQwZ2RHaHBjeTUwYjA5aWFtVmpkQ2dwTzF4dUlDQWdJR3hsZENCc1lYTjBWVzVwZER0Y2JseHVJQ0FnSUdadmNpQW9ZMjl1YzNRZ2F5QnZaaUJ2Y21SbGNtVmtWVzVwZEhNcElIdGNiaUFnSUNBZ0lHbG1JQ2gxYm1sMGN5NXBibVJsZUU5bUtHc3BJRDQ5SURBcElIdGNiaUFnSUNBZ0lDQWdiR0Z6ZEZWdWFYUWdQU0JyTzF4dVhHNGdJQ0FnSUNBZ0lHeGxkQ0J2ZDI0Z1BTQXdPMXh1WEc0Z0lDQWdJQ0FnSUM4dklHRnVlWFJvYVc1bklIZGxJR2hoZG1WdUozUWdZbTlwYkdWa0lHUnZkMjRnZVdWMElITm9iM1ZzWkNCblpYUWdZbTlwYkdWa0lIUnZJSFJvYVhNZ2RXNXBkRnh1SUNBZ0lDQWdJQ0JtYjNJZ0tHTnZibk4wSUdGcklHbHVJR0ZqWTNWdGRXeGhkR1ZrS1NCN1hHNGdJQ0FnSUNBZ0lDQWdiM2R1SUNzOUlIUm9hWE11YldGMGNtbDRXMkZyWFZ0clhTQXFJR0ZqWTNWdGRXeGhkR1ZrVzJGclhUdGNiaUFnSUNBZ0lDQWdJQ0JoWTJOMWJYVnNZWFJsWkZ0aGExMGdQU0F3TzF4dUlDQWdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lDQWdMeThnY0d4MWN5QmhibmwwYUdsdVp5QjBhR0YwSjNNZ1lXeHlaV0ZrZVNCcGJpQjBhR2x6SUhWdWFYUmNiaUFnSUNBZ0lDQWdhV1lnS0dselRuVnRZbVZ5S0haaGJITmJhMTBwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdiM2R1SUNzOUlIWmhiSE5iYTEwN1hHNGdJQ0FnSUNBZ0lIMWNibHh1SUNBZ0lDQWdJQ0JqYjI1emRDQnBJRDBnVFdGMGFDNTBjblZ1WXlodmQyNHBPMXh1SUNBZ0lDQWdJQ0JpZFdsc2RGdHJYU0E5SUdrN1hHNGdJQ0FnSUNBZ0lHRmpZM1Z0ZFd4aGRHVmtXMnRkSUQwZ0tHOTNiaUFxSURFd01EQWdMU0JwSUNvZ01UQXdNQ2tnTHlBeE1EQXdPMXh1WEc0Z0lDQWdJQ0FnSUM4dklIQnNkWE1nWVc1NWRHaHBibWNnWm5WeWRHaGxjaUJrYjNkdUlIUm9aU0JqYUdGcGJpQjBhR0YwSUhOb2IzVnNaQ0JpWlNCeWIyeHNaV1FnZFhBZ2FXNGdkRzhnZEdocGMxeHVJQ0FnSUNBZ0lDQm1iM0lnS0dOdmJuTjBJR1J2ZDI0Z2FXNGdkbUZzY3lrZ2UxeHVJQ0FnSUNBZ0lDQWdJR2xtSUNodmNtUmxjbVZrVlc1cGRITXVhVzVrWlhoUFppaGtiM2R1S1NBK0lHOXlaR1Z5WldSVmJtbDBjeTVwYm1SbGVFOW1LR3NwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JqYjI1MlpYSjBLSFJvYVhNdWJXRjBjbWw0TENCMllXeHpMQ0JrYjNkdUxDQmlkV2xzZEN3Z2F5azdYRzRnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDOHZJRzkwYUdWeWQybHpaU3dnYTJWbGNDQnBkQ0JwYmlCMGFHVWdkMmx1WjNNZ2RHOGdZbTlwYkNCcGRDQnNZWFJsY2x4dUlDQWdJQ0FnZlNCbGJITmxJR2xtSUNocGMwNTFiV0psY2loMllXeHpXMnRkS1NrZ2UxeHVJQ0FnSUNBZ0lDQmhZMk4xYlhWc1lYUmxaRnRyWFNBOUlIWmhiSE5iYTEwN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dVhHNGdJQ0FnTHk4Z1lXNTVkR2hwYm1jZ2JHVm1kRzkyWlhJZ1ltVmpiMjFsY3lCMGFHVWdaR1ZqYVcxaGJDQm1iM0lnZEdobElHeGhjM1FnZFc1cGRGeHVJQ0FnSUM4dklHeGhjM1JWYm1sMElHMTFjM1FnWW1VZ1pHVm1hVzVsWkNCemFXNWpaU0IxYm1sMGN5QnBjeUJ1YjNRZ1pXMXdkSGxjYmlBZ0lDQm1iM0lnS0dOdmJuTjBJR3RsZVNCcGJpQmhZMk4xYlhWc1lYUmxaQ2tnZTF4dUlDQWdJQ0FnYVdZZ0tHRmpZM1Z0ZFd4aGRHVmtXMnRsZVYwZ0lUMDlJREFwSUh0Y2JpQWdJQ0FnSUNBZ1luVnBiSFJiYkdGemRGVnVhWFJkSUNzOVhHNGdJQ0FnSUNBZ0lDQWdhMlY1SUQwOVBTQnNZWE4wVlc1cGRDQS9JR0ZqWTNWdGRXeGhkR1ZrVzJ0bGVWMGdPaUJoWTJOMWJYVnNZWFJsWkZ0clpYbGRJQzhnZEdocGN5NXRZWFJ5YVhoYmJHRnpkRlZ1YVhSZFcydGxlVjA3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1WEc0Z0lDQWdjbVYwZFhKdUlHTnNiMjVsS0hSb2FYTXNJSHNnZG1Gc2RXVnpPaUJpZFdsc2RDQjlMQ0IwY25WbEtTNXViM0p0WVd4cGVtVW9LVHRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCU1pYUjFjbTRnZEdobElHNWxaMkYwYVhabElHOW1JSFJvYVhNZ1JIVnlZWFJwYjI0dVhHNGdJQ0FxSUVCbGVHRnRjR3hsSUVSMWNtRjBhVzl1TG1aeWIyMVBZbXBsWTNRb2V5Qm9iM1Z5Y3pvZ01Td2djMlZqYjI1a2N6b2dNekFnZlNrdWJtVm5ZWFJsS0NrdWRHOVBZbXBsWTNRb0tTQXZMejArSUhzZ2FHOTFjbk02SUMweExDQnpaV052Ym1Sek9pQXRNekFnZlZ4dUlDQWdLaUJBY21WMGRYSnVJSHRFZFhKaGRHbHZibjFjYmlBZ0lDb3ZYRzRnSUc1bFoyRjBaU2dwSUh0Y2JpQWdJQ0JwWmlBb0lYUm9hWE11YVhOV1lXeHBaQ2tnY21WMGRYSnVJSFJvYVhNN1hHNGdJQ0FnWTI5dWMzUWdibVZuWVhSbFpDQTlJSHQ5TzF4dUlDQWdJR1p2Y2lBb1kyOXVjM1FnYXlCdlppQlBZbXBsWTNRdWEyVjVjeWgwYUdsekxuWmhiSFZsY3lrcElIdGNiaUFnSUNBZ0lHNWxaMkYwWldSYmExMGdQU0IwYUdsekxuWmhiSFZsYzF0clhTQTlQVDBnTUNBL0lEQWdPaUF0ZEdocGN5NTJZV3gxWlhOYmExMDdYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUJqYkc5dVpTaDBhR2x6TENCN0lIWmhiSFZsY3pvZ2JtVm5ZWFJsWkNCOUxDQjBjblZsS1R0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkhaWFFnZEdobElIbGxZWEp6TGx4dUlDQWdLaUJBZEhsd1pTQjdiblZ0WW1WeWZWeHVJQ0FnS2k5Y2JpQWdaMlYwSUhsbFlYSnpLQ2tnZTF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TG1selZtRnNhV1FnUHlCMGFHbHpMblpoYkhWbGN5NTVaV0Z5Y3lCOGZDQXdJRG9nVG1GT08xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRWRsZENCMGFHVWdjWFZoY25SbGNuTXVYRzRnSUNBcUlFQjBlWEJsSUh0dWRXMWlaWEo5WEc0Z0lDQXFMMXh1SUNCblpYUWdjWFZoY25SbGNuTW9LU0I3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11YVhOV1lXeHBaQ0EvSUhSb2FYTXVkbUZzZFdWekxuRjFZWEowWlhKeklIeDhJREFnT2lCT1lVNDdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nUjJWMElIUm9aU0J0YjI1MGFITXVYRzRnSUNBcUlFQjBlWEJsSUh0dWRXMWlaWEo5WEc0Z0lDQXFMMXh1SUNCblpYUWdiVzl1ZEdoektDa2dlMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpMbWx6Vm1Gc2FXUWdQeUIwYUdsekxuWmhiSFZsY3k1dGIyNTBhSE1nZkh3Z01DQTZJRTVoVGp0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkhaWFFnZEdobElIZGxaV3R6WEc0Z0lDQXFJRUIwZVhCbElIdHVkVzFpWlhKOVhHNGdJQ0FxTDF4dUlDQm5aWFFnZDJWbGEzTW9LU0I3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11YVhOV1lXeHBaQ0EvSUhSb2FYTXVkbUZzZFdWekxuZGxaV3R6SUh4OElEQWdPaUJPWVU0N1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dSMlYwSUhSb1pTQmtZWGx6TGx4dUlDQWdLaUJBZEhsd1pTQjdiblZ0WW1WeWZWeHVJQ0FnS2k5Y2JpQWdaMlYwSUdSaGVYTW9LU0I3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11YVhOV1lXeHBaQ0EvSUhSb2FYTXVkbUZzZFdWekxtUmhlWE1nZkh3Z01DQTZJRTVoVGp0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkhaWFFnZEdobElHaHZkWEp6TGx4dUlDQWdLaUJBZEhsd1pTQjdiblZ0WW1WeWZWeHVJQ0FnS2k5Y2JpQWdaMlYwSUdodmRYSnpLQ2tnZTF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TG1selZtRnNhV1FnUHlCMGFHbHpMblpoYkhWbGN5NW9iM1Z5Y3lCOGZDQXdJRG9nVG1GT08xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRWRsZENCMGFHVWdiV2x1ZFhSbGN5NWNiaUFnSUNvZ1FIUjVjR1VnZTI1MWJXSmxjbjFjYmlBZ0lDb3ZYRzRnSUdkbGRDQnRhVzUxZEdWektDa2dlMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpMbWx6Vm1Gc2FXUWdQeUIwYUdsekxuWmhiSFZsY3k1dGFXNTFkR1Z6SUh4OElEQWdPaUJPWVU0N1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dSMlYwSUhSb1pTQnpaV052Ym1SekxseHVJQ0FnS2lCQWNtVjBkWEp1SUh0dWRXMWlaWEo5WEc0Z0lDQXFMMXh1SUNCblpYUWdjMlZqYjI1a2N5Z3BJSHRjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTVwYzFaaGJHbGtJRDhnZEdocGN5NTJZV3gxWlhNdWMyVmpiMjVrY3lCOGZDQXdJRG9nVG1GT08xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRWRsZENCMGFHVWdiV2xzYkdselpXTnZibVJ6TGx4dUlDQWdLaUJBY21WMGRYSnVJSHR1ZFcxaVpYSjlYRzRnSUNBcUwxeHVJQ0JuWlhRZ2JXbHNiR2x6WldOdmJtUnpLQ2tnZTF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TG1selZtRnNhV1FnUHlCMGFHbHpMblpoYkhWbGN5NXRhV3hzYVhObFkyOXVaSE1nZkh3Z01DQTZJRTVoVGp0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlNaWFIxY201eklIZG9aWFJvWlhJZ2RHaGxJRVIxY21GMGFXOXVJR2x6SUdsdWRtRnNhV1F1SUVsdWRtRnNhV1FnWkhWeVlYUnBiMjV6SUdGeVpTQnlaWFIxY201bFpDQmllU0JrYVdabUlHOXdaWEpoZEdsdmJuTmNiaUFnSUNvZ2IyNGdhVzUyWVd4cFpDQkVZWFJsVkdsdFpYTWdiM0lnU1c1MFpYSjJZV3h6TGx4dUlDQWdLaUJBY21WMGRYSnVJSHRpYjI5c1pXRnVmVnh1SUNBZ0tpOWNiaUFnWjJWMElHbHpWbUZzYVdRb0tTQjdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVhVzUyWVd4cFpDQTlQVDBnYm5Wc2JEdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJTWlhSMWNtNXpJR0Z1SUdWeWNtOXlJR052WkdVZ2FXWWdkR2hwY3lCRWRYSmhkR2x2YmlCaVpXTmhiV1VnYVc1MllXeHBaQ3dnYjNJZ2JuVnNiQ0JwWmlCMGFHVWdSSFZ5WVhScGIyNGdhWE1nZG1Gc2FXUmNiaUFnSUNvZ1FISmxkSFZ5YmlCN2MzUnlhVzVuZlZ4dUlDQWdLaTljYmlBZ1oyVjBJR2x1ZG1Gc2FXUlNaV0Z6YjI0b0tTQjdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVhVzUyWVd4cFpDQS9JSFJvYVhNdWFXNTJZV3hwWkM1eVpXRnpiMjRnT2lCdWRXeHNPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUZKbGRIVnlibk1nWVc0Z1pYaHdiR0Z1WVhScGIyNGdiMllnZDJoNUlIUm9hWE1nUkhWeVlYUnBiMjRnWW1WallXMWxJR2x1ZG1Gc2FXUXNJRzl5SUc1MWJHd2dhV1lnZEdobElFUjFjbUYwYVc5dUlHbHpJSFpoYkdsa1hHNGdJQ0FxSUVCMGVYQmxJSHR6ZEhKcGJtZDlYRzRnSUNBcUwxeHVJQ0JuWlhRZ2FXNTJZV3hwWkVWNGNHeGhibUYwYVc5dUtDa2dlMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpMbWx1ZG1Gc2FXUWdQeUIwYUdsekxtbHVkbUZzYVdRdVpYaHdiR0Z1WVhScGIyNGdPaUJ1ZFd4c08xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRVZ4ZFdGc2FYUjVJR05vWldOclhHNGdJQ0FxSUZSM2J5QkVkWEpoZEdsdmJuTWdZWEpsSUdWeGRXRnNJR2xtWmlCMGFHVjVJR2hoZG1VZ2RHaGxJSE5oYldVZ2RXNXBkSE1nWVc1a0lIUm9aU0J6WVcxbElIWmhiSFZsY3lCbWIzSWdaV0ZqYUNCMWJtbDBMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UwUjFjbUYwYVc5dWZTQnZkR2hsY2x4dUlDQWdLaUJBY21WMGRYSnVJSHRpYjI5c1pXRnVmVnh1SUNBZ0tpOWNiaUFnWlhGMVlXeHpLRzkwYUdWeUtTQjdYRzRnSUNBZ2FXWWdLQ0YwYUdsekxtbHpWbUZzYVdRZ2ZId2dJVzkwYUdWeUxtbHpWbUZzYVdRcElIdGNiaUFnSUNBZ0lISmxkSFZ5YmlCbVlXeHpaVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnBaaUFvSVhSb2FYTXViRzlqTG1WeGRXRnNjeWh2ZEdobGNpNXNiMk1wS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnWm1Gc2MyVTdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ1puVnVZM1JwYjI0Z1pYRW9kakVzSUhZeUtTQjdYRzRnSUNBZ0lDQXZMeUJEYjI1emFXUmxjaUF3SUdGdVpDQjFibVJsWm1sdVpXUWdZWE1nWlhGMVlXeGNiaUFnSUNBZ0lHbG1JQ2gyTVNBOVBUMGdkVzVrWldacGJtVmtJSHg4SUhZeElEMDlQU0F3S1NCeVpYUjFjbTRnZGpJZ1BUMDlJSFZ1WkdWbWFXNWxaQ0I4ZkNCMk1pQTlQVDBnTUR0Y2JpQWdJQ0FnSUhKbGRIVnliaUIyTVNBOVBUMGdkakk3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdabTl5SUNoamIyNXpkQ0IxSUc5bUlHOXlaR1Z5WldSVmJtbDBjeWtnZTF4dUlDQWdJQ0FnYVdZZ0tDRmxjU2gwYUdsekxuWmhiSFZsYzF0MVhTd2diM1JvWlhJdWRtRnNkV1Z6VzNWZEtTa2dlMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdabUZzYzJVN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dUlDQWdJSEpsZEhWeWJpQjBjblZsTzF4dUlDQjlYRzU5WEc0aUxDQWlhVzF3YjNKMElFUmhkR1ZVYVcxbExDQjdJR1p5YVdWdVpHeDVSR0YwWlZScGJXVWdmU0JtY205dElGd2lMaTlrWVhSbGRHbHRaUzVxYzF3aU8xeHVhVzF3YjNKMElFUjFjbUYwYVc5dUlHWnliMjBnWENJdUwyUjFjbUYwYVc5dUxtcHpYQ0k3WEc1cGJYQnZjblFnVTJWMGRHbHVaM01nWm5KdmJTQmNJaTR2YzJWMGRHbHVaM011YW5OY0lqdGNibWx0Y0c5eWRDQjdJRWx1ZG1Gc2FXUkJjbWQxYldWdWRFVnljbTl5TENCSmJuWmhiR2xrU1c1MFpYSjJZV3hGY25KdmNpQjlJR1p5YjIwZ1hDSXVMMlZ5Y205eWN5NXFjMXdpTzF4dWFXMXdiM0owSUVsdWRtRnNhV1FnWm5KdmJTQmNJaTR2YVcxd2JDOXBiblpoYkdsa0xtcHpYQ0k3WEc1Y2JtTnZibk4wSUVsT1ZrRk1TVVFnUFNCY0lrbHVkbUZzYVdRZ1NXNTBaWEoyWVd4Y0lqdGNibHh1THk4Z1kyaGxZMnR6SUdsbUlIUm9aU0J6ZEdGeWRDQnBjeUJsY1hWaGJDQjBieUJ2Y2lCaVpXWnZjbVVnZEdobElHVnVaRnh1Wm5WdVkzUnBiMjRnZG1Gc2FXUmhkR1ZUZEdGeWRFVnVaQ2h6ZEdGeWRDd2daVzVrS1NCN1hHNGdJR2xtSUNnaGMzUmhjblFnZkh3Z0lYTjBZWEowTG1selZtRnNhV1FwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdTVzUwWlhKMllXd3VhVzUyWVd4cFpDaGNJbTFwYzNOcGJtY2diM0lnYVc1MllXeHBaQ0J6ZEdGeWRGd2lLVHRjYmlBZ2ZTQmxiSE5sSUdsbUlDZ2haVzVrSUh4OElDRmxibVF1YVhOV1lXeHBaQ2tnZTF4dUlDQWdJSEpsZEhWeWJpQkpiblJsY25aaGJDNXBiblpoYkdsa0tGd2liV2x6YzJsdVp5QnZjaUJwYm5aaGJHbGtJR1Z1WkZ3aUtUdGNiaUFnZlNCbGJITmxJR2xtSUNobGJtUWdQQ0J6ZEdGeWRDa2dlMXh1SUNBZ0lISmxkSFZ5YmlCSmJuUmxjblpoYkM1cGJuWmhiR2xrS0Z4dUlDQWdJQ0FnWENKbGJtUWdZbVZtYjNKbElITjBZWEowWENJc1hHNGdJQ0FnSUNCZ1ZHaGxJR1Z1WkNCdlppQmhiaUJwYm5SbGNuWmhiQ0J0ZFhOMElHSmxJR0ZtZEdWeUlHbDBjeUJ6ZEdGeWRDd2dZblYwSUhsdmRTQm9ZV1FnYzNSaGNuUTlKSHR6ZEdGeWRDNTBiMGxUVHlncGZTQmhibVFnWlc1a1BTUjdaVzVrTG5SdlNWTlBLQ2w5WUZ4dUlDQWdJQ2s3WEc0Z0lIMGdaV3h6WlNCN1hHNGdJQ0FnY21WMGRYSnVJRzUxYkd3N1hHNGdJSDFjYm4xY2JseHVMeW9xWEc0Z0tpQkJiaUJKYm5SbGNuWmhiQ0J2WW1wbFkzUWdjbVZ3Y21WelpXNTBjeUJoSUdoaGJHWXRiM0JsYmlCcGJuUmxjblpoYkNCdlppQjBhVzFsTENCM2FHVnlaU0JsWVdOb0lHVnVaSEJ2YVc1MElHbHpJR0VnZTBCc2FXNXJJRVJoZEdWVWFXMWxmUzRnUTI5dVkyVndkSFZoYkd4NUxDQnBkQ2R6SUdFZ1kyOXVkR0ZwYm1WeUlHWnZjaUIwYUc5elpTQjBkMjhnWlc1a2NHOXBiblJ6TENCaFkyTnZiWEJoYm1sbFpDQmllU0J0WlhSb2IyUnpJR1p2Y2lCamNtVmhkR2x1Wnl3Z2NHRnljMmx1Wnl3Z2FXNTBaWEp5YjJkaGRHbHVaeXdnWTI5dGNHRnlhVzVuTENCMGNtRnVjMlp2Y20xcGJtY3NJR0Z1WkNCbWIzSnRZWFIwYVc1bklIUm9aVzB1WEc0Z0tseHVJQ29nU0dWeVpTQnBjeUJoSUdKeWFXVm1JRzkyWlhKMmFXVjNJRzltSUhSb1pTQnRiM04wSUdOdmJXMXZibXg1SUhWelpXUWdiV1YwYUc5a2N5QmhibVFnWjJWMGRHVnljeUJwYmlCSmJuUmxjblpoYkRwY2JpQXFYRzRnS2lBcUlDb3FRM0psWVhScGIyNHFLaUJVYnlCamNtVmhkR1VnWVc0Z1NXNTBaWEoyWVd3c0lIVnpaU0I3UUd4cGJtc2dTVzUwWlhKMllXd2pabkp2YlVSaGRHVlVhVzFsYzMwc0lIdEFiR2x1YXlCSmJuUmxjblpoYkNOaFpuUmxjbjBzSUh0QWJHbHVheUJKYm5SbGNuWmhiQ05pWldadmNtVjlMQ0J2Y2lCN1FHeHBibXNnU1c1MFpYSjJZV3dqWm5KdmJVbFRUMzB1WEc0Z0tpQXFJQ29xUVdOalpYTnpiM0p6S2lvZ1ZYTmxJSHRBYkdsdWF5QkpiblJsY25aaGJDTnpkR0Z5ZEgwZ1lXNWtJSHRBYkdsdWF5QkpiblJsY25aaGJDTmxibVI5SUhSdklHZGxkQ0IwYUdVZ2MzUmhjblFnWVc1a0lHVnVaQzVjYmlBcUlDb2dLaXBKYm5SbGNuSnZaMkYwYVc5dUtpb2dWRzhnWVc1aGJIbDZaU0IwYUdVZ1NXNTBaWEoyWVd3c0lIVnpaU0I3UUd4cGJtc2dTVzUwWlhKMllXd2pZMjkxYm5SOUxDQjdRR3hwYm1zZ1NXNTBaWEoyWVd3amJHVnVaM1JvZlN3Z2UwQnNhVzVySUVsdWRHVnlkbUZzSTJoaGMxTmhiV1Y5TENCN1FHeHBibXNnU1c1MFpYSjJZV3dqWTI5dWRHRnBibk45TENCN1FHeHBibXNnU1c1MFpYSjJZV3dqYVhOQlpuUmxjbjBzSUc5eUlIdEFiR2x1YXlCSmJuUmxjblpoYkNOcGMwSmxabTl5WlgwdVhHNGdLaUFxSUNvcVZISmhibk5tYjNKdFlYUnBiMjRxS2lCVWJ5QmpjbVZoZEdVZ2IzUm9aWElnU1c1MFpYSjJZV3h6SUc5MWRDQnZaaUIwYUdseklHOXVaU3dnZFhObElIdEFiR2x1YXlCSmJuUmxjblpoYkNOelpYUjlMQ0I3UUd4cGJtc2dTVzUwWlhKMllXd2pjM0JzYVhSQmRIMHNJSHRBYkdsdWF5QkpiblJsY25aaGJDTnpjR3hwZEVKNWZTd2dlMEJzYVc1cklFbHVkR1Z5ZG1Gc0kyUnBkbWxrWlVWeGRXRnNiSGw5TENCN1FHeHBibXNnU1c1MFpYSjJZV3dqYldWeVoyVjlMQ0I3UUd4cGJtc2dTVzUwWlhKMllXd2plRzl5ZlN3Z2UwQnNhVzVySUVsdWRHVnlkbUZzSTNWdWFXOXVmU3dnZTBCc2FXNXJJRWx1ZEdWeWRtRnNJMmx1ZEdWeWMyVmpkR2x2Ym4wc0lHOXlJSHRBYkdsdWF5QkpiblJsY25aaGJDTmthV1ptWlhKbGJtTmxmUzVjYmlBcUlDb2dLaXBEYjIxd1lYSnBjMjl1S2lvZ1ZHOGdZMjl0Y0dGeVpTQjBhR2x6SUVsdWRHVnlkbUZzSUhSdklHRnViM1JvWlhJZ2IyNWxMQ0IxYzJVZ2UwQnNhVzVySUVsdWRHVnlkbUZzSTJWeGRXRnNjMzBzSUh0QWJHbHVheUJKYm5SbGNuWmhiQ052ZG1WeWJHRndjMzBzSUh0QWJHbHVheUJKYm5SbGNuWmhiQ05oWW5WMGMxTjBZWEowZlN3Z2UwQnNhVzVySUVsdWRHVnlkbUZzSTJGaWRYUnpSVzVrZlN3Z2UwQnNhVzVySUVsdWRHVnlkbUZzSTJWdVozVnNabk45WEc0Z0tpQXFJQ29xVDNWMGNIVjBLaW9nVkc4Z1kyOXVkbVZ5ZENCMGFHVWdTVzUwWlhKMllXd2dhVzUwYnlCdmRHaGxjaUJ5WlhCeVpYTmxiblJoZEdsdmJuTXNJSE5sWlNCN1FHeHBibXNnU1c1MFpYSjJZV3dqZEc5VGRISnBibWQ5TENCN1FHeHBibXNnU1c1MFpYSjJZV3dqZEc5SlUwOTlMQ0I3UUd4cGJtc2dTVzUwWlhKMllXd2pkRzlKVTA5RVlYUmxmU3dnZTBCc2FXNXJJRWx1ZEdWeWRtRnNJM1J2U1ZOUFZHbHRaWDBzSUh0QWJHbHVheUJKYm5SbGNuWmhiQ04wYjBadmNtMWhkSDBzSUdGdVpDQjdRR3hwYm1zZ1NXNTBaWEoyWVd3amRHOUVkWEpoZEdsdmJuMHVYRzRnS2k5Y2JtVjRjRzl5ZENCa1pXWmhkV3gwSUdOc1lYTnpJRWx1ZEdWeWRtRnNJSHRjYmlBZ0x5b3FYRzRnSUNBcUlFQndjbWwyWVhSbFhHNGdJQ0FxTDF4dUlDQmpiMjV6ZEhKMVkzUnZjaWhqYjI1bWFXY3BJSHRjYmlBZ0lDQXZLaXBjYmlBZ0lDQWdLaUJBWVdOalpYTnpJSEJ5YVhaaGRHVmNiaUFnSUNBZ0tpOWNiaUFnSUNCMGFHbHpMbk1nUFNCamIyNW1hV2N1YzNSaGNuUTdYRzRnSUNBZ0x5b3FYRzRnSUNBZ0lDb2dRR0ZqWTJWemN5QndjbWwyWVhSbFhHNGdJQ0FnSUNvdlhHNGdJQ0FnZEdocGN5NWxJRDBnWTI5dVptbG5MbVZ1WkR0Y2JpQWdJQ0F2S2lwY2JpQWdJQ0FnS2lCQVlXTmpaWE56SUhCeWFYWmhkR1ZjYmlBZ0lDQWdLaTljYmlBZ0lDQjBhR2x6TG1sdWRtRnNhV1FnUFNCamIyNW1hV2N1YVc1MllXeHBaQ0I4ZkNCdWRXeHNPMXh1SUNBZ0lDOHFLbHh1SUNBZ0lDQXFJRUJoWTJObGMzTWdjSEpwZG1GMFpWeHVJQ0FnSUNBcUwxeHVJQ0FnSUhSb2FYTXVhWE5NZFhodmJrbHVkR1Z5ZG1Gc0lEMGdkSEoxWlR0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkRjbVZoZEdVZ1lXNGdhVzUyWVd4cFpDQkpiblJsY25aaGJDNWNiaUFnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUhKbFlYTnZiaUF0SUhOcGJYQnNaU0J6ZEhKcGJtY2diMllnZDJoNUlIUm9hWE1nU1c1MFpYSjJZV3dnYVhNZ2FXNTJZV3hwWkM0Z1UyaHZkV3hrSUc1dmRDQmpiMjUwWVdsdUlIQmhjbUZ0WlhSbGNuTWdiM0lnWVc1NWRHaHBibWNnWld4elpTQmtZWFJoTFdSbGNHVnVaR1Z1ZEZ4dUlDQWdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdXMlY0Y0d4aGJtRjBhVzl1UFc1MWJHeGRJQzBnYkc5dVoyVnlJR1Y0Y0d4aGJtRjBhVzl1TENCdFlYa2dhVzVqYkhWa1pTQndZWEpoYldWMFpYSnpJR0Z1WkNCdmRHaGxjaUIxYzJWbWRXd2daR1ZpZFdkbmFXNW5JR2x1Wm05eWJXRjBhVzl1WEc0Z0lDQXFJRUJ5WlhSMWNtNGdlMGx1ZEdWeWRtRnNmVnh1SUNBZ0tpOWNiaUFnYzNSaGRHbGpJR2x1ZG1Gc2FXUW9jbVZoYzI5dUxDQmxlSEJzWVc1aGRHbHZiaUE5SUc1MWJHd3BJSHRjYmlBZ0lDQnBaaUFvSVhKbFlYTnZiaWtnZTF4dUlDQWdJQ0FnZEdoeWIzY2dibVYzSUVsdWRtRnNhV1JCY21kMWJXVnVkRVZ5Y205eUtGd2libVZsWkNCMGJ5QnpjR1ZqYVdaNUlHRWdjbVZoYzI5dUlIUm9aU0JKYm5SbGNuWmhiQ0JwY3lCcGJuWmhiR2xrWENJcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUdOdmJuTjBJR2x1ZG1Gc2FXUWdQU0J5WldGemIyNGdhVzV6ZEdGdVkyVnZaaUJKYm5aaGJHbGtJRDhnY21WaGMyOXVJRG9nYm1WM0lFbHVkbUZzYVdRb2NtVmhjMjl1TENCbGVIQnNZVzVoZEdsdmJpazdYRzVjYmlBZ0lDQnBaaUFvVTJWMGRHbHVaM011ZEdoeWIzZFBia2x1ZG1Gc2FXUXBJSHRjYmlBZ0lDQWdJSFJvY205M0lHNWxkeUJKYm5aaGJHbGtTVzUwWlhKMllXeEZjbkp2Y2locGJuWmhiR2xrS1R0Y2JpQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdjbVYwZFhKdUlHNWxkeUJKYm5SbGNuWmhiQ2g3SUdsdWRtRnNhV1FnZlNrN1hHNGdJQ0FnZlZ4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFTnlaV0YwWlNCaGJpQkpiblJsY25aaGJDQm1jbTl0SUdFZ2MzUmhjblFnUkdGMFpWUnBiV1VnWVc1a0lHRnVJR1Z1WkNCRVlYUmxWR2x0WlM0Z1NXNWpiSFZ6YVhabElHOW1JSFJvWlNCemRHRnlkQ0JpZFhRZ2JtOTBJSFJvWlNCbGJtUXVYRzRnSUNBcUlFQndZWEpoYlNCN1JHRjBaVlJwYldWOFJHRjBaWHhQWW1wbFkzUjlJSE4wWVhKMFhHNGdJQ0FxSUVCd1lYSmhiU0I3UkdGMFpWUnBiV1Y4UkdGMFpYeFBZbXBsWTNSOUlHVnVaRnh1SUNBZ0tpQkFjbVYwZFhKdUlIdEpiblJsY25aaGJIMWNiaUFnSUNvdlhHNGdJSE4wWVhScFl5Qm1jbTl0UkdGMFpWUnBiV1Z6S0hOMFlYSjBMQ0JsYm1RcElIdGNiaUFnSUNCamIyNXpkQ0JpZFdsc2RGTjBZWEowSUQwZ1puSnBaVzVrYkhsRVlYUmxWR2x0WlNoemRHRnlkQ2tzWEc0Z0lDQWdJQ0JpZFdsc2RFVnVaQ0E5SUdaeWFXVnVaR3g1UkdGMFpWUnBiV1VvWlc1a0tUdGNibHh1SUNBZ0lHTnZibk4wSUhaaGJHbGtZWFJsUlhKeWIzSWdQU0IyWVd4cFpHRjBaVk4wWVhKMFJXNWtLR0oxYVd4MFUzUmhjblFzSUdKMWFXeDBSVzVrS1R0Y2JseHVJQ0FnSUdsbUlDaDJZV3hwWkdGMFpVVnljbTl5SUQwOUlHNTFiR3dwSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUJ1WlhjZ1NXNTBaWEoyWVd3b2UxeHVJQ0FnSUNBZ0lDQnpkR0Z5ZERvZ1luVnBiSFJUZEdGeWRDeGNiaUFnSUNBZ0lDQWdaVzVrT2lCaWRXbHNkRVZ1WkN4Y2JpQWdJQ0FnSUgwcE8xeHVJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdkbUZzYVdSaGRHVkZjbkp2Y2p0Y2JpQWdJQ0I5WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1EzSmxZWFJsSUdGdUlFbHVkR1Z5ZG1Gc0lHWnliMjBnWVNCemRHRnlkQ0JFWVhSbFZHbHRaU0JoYm1RZ1lTQkVkWEpoZEdsdmJpQjBieUJsZUhSbGJtUWdkRzh1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdSR0YwWlZScGJXVjhSR0YwWlh4UFltcGxZM1I5SUhOMFlYSjBYRzRnSUNBcUlFQndZWEpoYlNCN1JIVnlZWFJwYjI1OFQySnFaV04wZkc1MWJXSmxjbjBnWkhWeVlYUnBiMjRnTFNCMGFHVWdiR1Z1WjNSb0lHOW1JSFJvWlNCSmJuUmxjblpoYkM1Y2JpQWdJQ29nUUhKbGRIVnliaUI3U1c1MFpYSjJZV3g5WEc0Z0lDQXFMMXh1SUNCemRHRjBhV01nWVdaMFpYSW9jM1JoY25Rc0lHUjFjbUYwYVc5dUtTQjdYRzRnSUNBZ1kyOXVjM1FnWkhWeUlEMGdSSFZ5WVhScGIyNHVabkp2YlVSMWNtRjBhVzl1VEdsclpTaGtkWEpoZEdsdmJpa3NYRzRnSUNBZ0lDQmtkQ0E5SUdaeWFXVnVaR3g1UkdGMFpWUnBiV1VvYzNSaGNuUXBPMXh1SUNBZ0lISmxkSFZ5YmlCSmJuUmxjblpoYkM1bWNtOXRSR0YwWlZScGJXVnpLR1IwTENCa2RDNXdiSFZ6S0dSMWNpa3BPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUVOeVpXRjBaU0JoYmlCSmJuUmxjblpoYkNCbWNtOXRJR0Z1SUdWdVpDQkVZWFJsVkdsdFpTQmhibVFnWVNCRWRYSmhkR2x2YmlCMGJ5QmxlSFJsYm1RZ1ltRmphM2RoY21SeklIUnZMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UwUmhkR1ZVYVcxbGZFUmhkR1Y4VDJKcVpXTjBmU0JsYm1SY2JpQWdJQ29nUUhCaGNtRnRJSHRFZFhKaGRHbHZibnhQWW1wbFkzUjhiblZ0WW1WeWZTQmtkWEpoZEdsdmJpQXRJSFJvWlNCc1pXNW5kR2dnYjJZZ2RHaGxJRWx1ZEdWeWRtRnNMbHh1SUNBZ0tpQkFjbVYwZFhKdUlIdEpiblJsY25aaGJIMWNiaUFnSUNvdlhHNGdJSE4wWVhScFl5QmlaV1p2Y21Vb1pXNWtMQ0JrZFhKaGRHbHZiaWtnZTF4dUlDQWdJR052Ym5OMElHUjFjaUE5SUVSMWNtRjBhVzl1TG1aeWIyMUVkWEpoZEdsdmJreHBhMlVvWkhWeVlYUnBiMjRwTEZ4dUlDQWdJQ0FnWkhRZ1BTQm1jbWxsYm1Sc2VVUmhkR1ZVYVcxbEtHVnVaQ2s3WEc0Z0lDQWdjbVYwZFhKdUlFbHVkR1Z5ZG1Gc0xtWnliMjFFWVhSbFZHbHRaWE1vWkhRdWJXbHVkWE1vWkhWeUtTd2daSFFwTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFTnlaV0YwWlNCaGJpQkpiblJsY25aaGJDQm1jbTl0SUdGdUlFbFRUeUE0TmpBeElITjBjbWx1Wnk1Y2JpQWdJQ29nUVdOalpYQjBjeUJnUEhOMFlYSjBQaTg4Wlc1a1BtQXNJR0E4YzNSaGNuUStMenhrZFhKaGRHbHZiajVnTENCaGJtUWdZRHhrZFhKaGRHbHZiajR2UEdWdVpENWdJR1p2Y20xaGRITXVYRzRnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCMFpYaDBJQzBnZEdobElFbFRUeUJ6ZEhKcGJtY2dkRzhnY0dGeWMyVmNiaUFnSUNvZ1FIQmhjbUZ0SUh0UFltcGxZM1I5SUZ0dmNIUnpYU0F0SUc5d2RHbHZibk1nZEc4Z2NHRnpjeUI3UUd4cGJtc2dSR0YwWlZScGJXVWpabkp2YlVsVFQzMGdZVzVrSUc5d2RHbHZibUZzYkhrZ2UwQnNhVzVySUVSMWNtRjBhVzl1STJaeWIyMUpVMDk5WEc0Z0lDQXFJRUJ6WldVZ2FIUjBjSE02THk5bGJpNTNhV3RwY0dWa2FXRXViM0puTDNkcGEya3ZTVk5QWHpnMk1ERWpWR2x0WlY5cGJuUmxjblpoYkhOY2JpQWdJQ29nUUhKbGRIVnliaUI3U1c1MFpYSjJZV3g5WEc0Z0lDQXFMMXh1SUNCemRHRjBhV01nWm5KdmJVbFRUeWgwWlhoMExDQnZjSFJ6S1NCN1hHNGdJQ0FnWTI5dWMzUWdXM01zSUdWZElEMGdLSFJsZUhRZ2ZId2dYQ0pjSWlrdWMzQnNhWFFvWENJdlhDSXNJRElwTzF4dUlDQWdJR2xtSUNoeklDWW1JR1VwSUh0Y2JpQWdJQ0FnSUd4bGRDQnpkR0Z5ZEN3Z2MzUmhjblJKYzFaaGJHbGtPMXh1SUNBZ0lDQWdkSEo1SUh0Y2JpQWdJQ0FnSUNBZ2MzUmhjblFnUFNCRVlYUmxWR2x0WlM1bWNtOXRTVk5QS0hNc0lHOXdkSE1wTzF4dUlDQWdJQ0FnSUNCemRHRnlkRWx6Vm1Gc2FXUWdQU0J6ZEdGeWRDNXBjMVpoYkdsa08xeHVJQ0FnSUNBZ2ZTQmpZWFJqYUNBb1pTa2dlMXh1SUNBZ0lDQWdJQ0J6ZEdGeWRFbHpWbUZzYVdRZ1BTQm1ZV3h6WlR0Y2JpQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ2JHVjBJR1Z1WkN3Z1pXNWtTWE5XWVd4cFpEdGNiaUFnSUNBZ0lIUnllU0I3WEc0Z0lDQWdJQ0FnSUdWdVpDQTlJRVJoZEdWVWFXMWxMbVp5YjIxSlUwOG9aU3dnYjNCMGN5azdYRzRnSUNBZ0lDQWdJR1Z1WkVselZtRnNhV1FnUFNCbGJtUXVhWE5XWVd4cFpEdGNiaUFnSUNBZ0lIMGdZMkYwWTJnZ0tHVXBJSHRjYmlBZ0lDQWdJQ0FnWlc1a1NYTldZV3hwWkNBOUlHWmhiSE5sTzF4dUlDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNCcFppQW9jM1JoY25SSmMxWmhiR2xrSUNZbUlHVnVaRWx6Vm1Gc2FXUXBJSHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJRWx1ZEdWeWRtRnNMbVp5YjIxRVlYUmxWR2x0WlhNb2MzUmhjblFzSUdWdVpDazdYRzRnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJR2xtSUNoemRHRnlkRWx6Vm1Gc2FXUXBJSHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdaSFZ5SUQwZ1JIVnlZWFJwYjI0dVpuSnZiVWxUVHlobExDQnZjSFJ6S1R0Y2JpQWdJQ0FnSUNBZ2FXWWdLR1IxY2k1cGMxWmhiR2xrS1NCN1hHNGdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlFbHVkR1Z5ZG1Gc0xtRm1kR1Z5S0hOMFlYSjBMQ0JrZFhJcE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQjlJR1ZzYzJVZ2FXWWdLR1Z1WkVselZtRnNhV1FwSUh0Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnWkhWeUlEMGdSSFZ5WVhScGIyNHVabkp2YlVsVFR5aHpMQ0J2Y0hSektUdGNiaUFnSUNBZ0lDQWdhV1lnS0dSMWNpNXBjMVpoYkdsa0tTQjdYRzRnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJRWx1ZEdWeWRtRnNMbUpsWm05eVpTaGxibVFzSUdSMWNpazdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUVsdWRHVnlkbUZzTG1sdWRtRnNhV1FvWENKMWJuQmhjbk5oWW14bFhDSXNJR0IwYUdVZ2FXNXdkWFFnWENJa2UzUmxlSFI5WENJZ1kyRnVKM1FnWW1VZ2NHRnljMlZrSUdGeklFbFRUeUE0TmpBeFlDazdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nUTJobFkyc2dhV1lnWVc0Z2IySnFaV04wSUdseklHRnVJRWx1ZEdWeWRtRnNMaUJYYjNKcmN5QmhZM0p2YzNNZ1kyOXVkR1Y0ZENCaWIzVnVaR0Z5YVdWelhHNGdJQ0FxSUVCd1lYSmhiU0I3YjJKcVpXTjBmU0J2WEc0Z0lDQXFJRUJ5WlhSMWNtNGdlMkp2YjJ4bFlXNTlYRzRnSUNBcUwxeHVJQ0J6ZEdGMGFXTWdhWE5KYm5SbGNuWmhiQ2h2S1NCN1hHNGdJQ0FnY21WMGRYSnVJQ2h2SUNZbUlHOHVhWE5NZFhodmJrbHVkR1Z5ZG1Gc0tTQjhmQ0JtWVd4elpUdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJTWlhSMWNtNXpJSFJvWlNCemRHRnlkQ0J2WmlCMGFHVWdTVzUwWlhKMllXeGNiaUFnSUNvZ1FIUjVjR1VnZTBSaGRHVlVhVzFsZlZ4dUlDQWdLaTljYmlBZ1oyVjBJSE4wWVhKMEtDa2dlMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpMbWx6Vm1Gc2FXUWdQeUIwYUdsekxuTWdPaUJ1ZFd4c08xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRkpsZEhWeWJuTWdkR2hsSUdWdVpDQnZaaUIwYUdVZ1NXNTBaWEoyWVd4Y2JpQWdJQ29nUUhSNWNHVWdlMFJoZEdWVWFXMWxmVnh1SUNBZ0tpOWNiaUFnWjJWMElHVnVaQ2dwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1cGMxWmhiR2xrSUQ4Z2RHaHBjeTVsSURvZ2JuVnNiRHRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCU1pYUjFjbTV6SUhkb1pYUm9aWElnZEdocGN5QkpiblJsY25aaGJDZHpJR1Z1WkNCcGN5QmhkQ0JzWldGemRDQnBkSE1nYzNSaGNuUXNJRzFsWVc1cGJtY2dkR2hoZENCMGFHVWdTVzUwWlhKMllXd2dhWE51SjNRZ0oySmhZMnQzWVhKa2N5Y3VYRzRnSUNBcUlFQjBlWEJsSUh0aWIyOXNaV0Z1ZlZ4dUlDQWdLaTljYmlBZ1oyVjBJR2x6Vm1Gc2FXUW9LU0I3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11YVc1MllXeHBaRkpsWVhOdmJpQTlQVDBnYm5Wc2JEdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJTWlhSMWNtNXpJR0Z1SUdWeWNtOXlJR052WkdVZ2FXWWdkR2hwY3lCSmJuUmxjblpoYkNCcGN5QnBiblpoYkdsa0xDQnZjaUJ1ZFd4c0lHbG1JSFJvWlNCSmJuUmxjblpoYkNCcGN5QjJZV3hwWkZ4dUlDQWdLaUJBZEhsd1pTQjdjM1J5YVc1bmZWeHVJQ0FnS2k5Y2JpQWdaMlYwSUdsdWRtRnNhV1JTWldGemIyNG9LU0I3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11YVc1MllXeHBaQ0EvSUhSb2FYTXVhVzUyWVd4cFpDNXlaV0Z6YjI0Z09pQnVkV3hzTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGSmxkSFZ5Ym5NZ1lXNGdaWGh3YkdGdVlYUnBiMjRnYjJZZ2QyaDVJSFJvYVhNZ1NXNTBaWEoyWVd3Z1ltVmpZVzFsSUdsdWRtRnNhV1FzSUc5eUlHNTFiR3dnYVdZZ2RHaGxJRWx1ZEdWeWRtRnNJR2x6SUhaaGJHbGtYRzRnSUNBcUlFQjBlWEJsSUh0emRISnBibWQ5WEc0Z0lDQXFMMXh1SUNCblpYUWdhVzUyWVd4cFpFVjRjR3hoYm1GMGFXOXVLQ2tnZTF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TG1sdWRtRnNhV1FnUHlCMGFHbHpMbWx1ZG1Gc2FXUXVaWGh3YkdGdVlYUnBiMjRnT2lCdWRXeHNPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUZKbGRIVnlibk1nZEdobElHeGxibWQwYUNCdlppQjBhR1VnU1c1MFpYSjJZV3dnYVc0Z2RHaGxJSE53WldOcFptbGxaQ0IxYm1sMExseHVJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnZFc1cGRDQXRJSFJvWlNCMWJtbDBJQ2h6ZFdOb0lHRnpJQ2RvYjNWeWN5Y2diM0lnSjJSaGVYTW5LU0IwYnlCeVpYUjFjbTRnZEdobElHeGxibWQwYUNCcGJpNWNiaUFnSUNvZ1FISmxkSFZ5YmlCN2JuVnRZbVZ5ZlZ4dUlDQWdLaTljYmlBZ2JHVnVaM1JvS0hWdWFYUWdQU0JjSW0xcGJHeHBjMlZqYjI1a2Mxd2lLU0I3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11YVhOV1lXeHBaQ0EvSUhSb2FYTXVkRzlFZFhKaGRHbHZiaWd1TGk1YmRXNXBkRjBwTG1kbGRDaDFibWwwS1NBNklFNWhUanRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCU1pYUjFjbTV6SUhSb1pTQmpiM1Z1ZENCdlppQnRhVzUxZEdWekxDQm9iM1Z5Y3l3Z1pHRjVjeXdnYlc5dWRHaHpMQ0J2Y2lCNVpXRnljeUJwYm1Oc2RXUmxaQ0JwYmlCMGFHVWdTVzUwWlhKMllXd3NJR1YyWlc0Z2FXNGdjR0Z5ZEM1Y2JpQWdJQ29nVlc1c2FXdGxJSHRBYkdsdWF5QkpiblJsY25aaGJDTnNaVzVuZEdoOUlIUm9hWE1nWTI5MWJuUnpJSE5sWTNScGIyNXpJRzltSUhSb1pTQmpZV3hsYm1SaGNpd2dibTkwSUhCbGNtbHZaSE1nYjJZZ2RHbHRaU3dnWlM1bkxpQnpjR1ZqYVdaNWFXNW5JQ2RrWVhrblhHNGdJQ0FxSUdGemEzTWdKM2RvWVhRZ1pHRjBaWE1nWVhKbElHbHVZMngxWkdWa0lHbHVJSFJvYVhNZ2FXNTBaWEoyWVd3L0p5d2dibTkwSUNkb2IzY2diV0Z1ZVNCa1lYbHpJR3h2Ym1jZ2FYTWdkR2hwY3lCcGJuUmxjblpoYkQ4blhHNGdJQ0FxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0JiZFc1cGREMG5iV2xzYkdselpXTnZibVJ6SjEwZ0xTQjBhR1VnZFc1cGRDQnZaaUIwYVcxbElIUnZJR052ZFc1MExseHVJQ0FnS2lCQWNtVjBkWEp1SUh0dWRXMWlaWEo5WEc0Z0lDQXFMMXh1SUNCamIzVnVkQ2gxYm1sMElEMGdYQ0p0YVd4c2FYTmxZMjl1WkhOY0lpa2dlMXh1SUNBZ0lHbG1JQ2doZEdocGN5NXBjMVpoYkdsa0tTQnlaWFIxY200Z1RtRk9PMXh1SUNBZ0lHTnZibk4wSUhOMFlYSjBJRDBnZEdocGN5NXpkR0Z5ZEM1emRHRnlkRTltS0hWdWFYUXBMRnh1SUNBZ0lDQWdaVzVrSUQwZ2RHaHBjeTVsYm1RdWMzUmhjblJQWmloMWJtbDBLVHRjYmlBZ0lDQnlaWFIxY200Z1RXRjBhQzVtYkc5dmNpaGxibVF1WkdsbVppaHpkR0Z5ZEN3Z2RXNXBkQ2t1WjJWMEtIVnVhWFFwS1NBcklERTdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nVW1WMGRYSnVjeUIzYUdWMGFHVnlJSFJvYVhNZ1NXNTBaWEoyWVd3bmN5QnpkR0Z5ZENCaGJtUWdaVzVrSUdGeVpTQmliM1JvSUdsdUlIUm9aU0J6WVcxbElIVnVhWFFnYjJZZ2RHbHRaVnh1SUNBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2RXNXBkQ0F0SUhSb1pTQjFibWwwSUc5bUlIUnBiV1VnZEc4Z1kyaGxZMnNnYzJGdFpXNWxjM01nYjI1Y2JpQWdJQ29nUUhKbGRIVnliaUI3WW05dmJHVmhibjFjYmlBZ0lDb3ZYRzRnSUdoaGMxTmhiV1VvZFc1cGRDa2dlMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpMbWx6Vm1Gc2FXUWdQeUIwYUdsekxtbHpSVzF3ZEhrb0tTQjhmQ0IwYUdsekxtVXViV2x1ZFhNb01Ta3VhR0Z6VTJGdFpTaDBhR2x6TG5Nc0lIVnVhWFFwSURvZ1ptRnNjMlU3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1VtVjBkWEp1SUhkb1pYUm9aWElnZEdocGN5QkpiblJsY25aaGJDQm9ZWE1nZEdobElITmhiV1VnYzNSaGNuUWdZVzVrSUdWdVpDQkVZWFJsVkdsdFpYTXVYRzRnSUNBcUlFQnlaWFIxY200Z2UySnZiMnhsWVc1OVhHNGdJQ0FxTDF4dUlDQnBjMFZ0Y0hSNUtDa2dlMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpMbk11ZG1Gc2RXVlBaaWdwSUQwOVBTQjBhR2x6TG1VdWRtRnNkV1ZQWmlncE8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRkpsZEhWeWJpQjNhR1YwYUdWeUlIUm9hWE1nU1c1MFpYSjJZV3duY3lCemRHRnlkQ0JwY3lCaFpuUmxjaUIwYUdVZ2MzQmxZMmxtYVdWa0lFUmhkR1ZVYVcxbExseHVJQ0FnS2lCQWNHRnlZVzBnZTBSaGRHVlVhVzFsZlNCa1lYUmxWR2x0WlZ4dUlDQWdLaUJBY21WMGRYSnVJSHRpYjI5c1pXRnVmVnh1SUNBZ0tpOWNiaUFnYVhOQlpuUmxjaWhrWVhSbFZHbHRaU2tnZTF4dUlDQWdJR2xtSUNnaGRHaHBjeTVwYzFaaGJHbGtLU0J5WlhSMWNtNGdabUZzYzJVN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdWN5QStJR1JoZEdWVWFXMWxPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUZKbGRIVnliaUIzYUdWMGFHVnlJSFJvYVhNZ1NXNTBaWEoyWVd3bmN5QmxibVFnYVhNZ1ltVm1iM0psSUhSb1pTQnpjR1ZqYVdacFpXUWdSR0YwWlZScGJXVXVYRzRnSUNBcUlFQndZWEpoYlNCN1JHRjBaVlJwYldWOUlHUmhkR1ZVYVcxbFhHNGdJQ0FxSUVCeVpYUjFjbTRnZTJKdmIyeGxZVzU5WEc0Z0lDQXFMMXh1SUNCcGMwSmxabTl5WlNoa1lYUmxWR2x0WlNrZ2UxeHVJQ0FnSUdsbUlDZ2hkR2hwY3k1cGMxWmhiR2xrS1NCeVpYUjFjbTRnWm1Gc2MyVTdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVaU0E4UFNCa1lYUmxWR2x0WlR0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlNaWFIxY200Z2QyaGxkR2hsY2lCMGFHbHpJRWx1ZEdWeWRtRnNJR052Ym5SaGFXNXpJSFJvWlNCemNHVmphV1pwWldRZ1JHRjBaVlJwYldVdVhHNGdJQ0FxSUVCd1lYSmhiU0I3UkdGMFpWUnBiV1Y5SUdSaGRHVlVhVzFsWEc0Z0lDQXFJRUJ5WlhSMWNtNGdlMkp2YjJ4bFlXNTlYRzRnSUNBcUwxeHVJQ0JqYjI1MFlXbHVjeWhrWVhSbFZHbHRaU2tnZTF4dUlDQWdJR2xtSUNnaGRHaHBjeTVwYzFaaGJHbGtLU0J5WlhSMWNtNGdabUZzYzJVN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdWN5QThQU0JrWVhSbFZHbHRaU0FtSmlCMGFHbHpMbVVnUGlCa1lYUmxWR2x0WlR0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQmNJbE5sZEhOY0lpQjBhR1VnYzNSaGNuUWdZVzVrTDI5eUlHVnVaQ0JrWVhSbGN5NGdVbVYwZFhKdWN5QmhJRzVsZDJ4NUxXTnZibk4wY25WamRHVmtJRWx1ZEdWeWRtRnNMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UwOWlhbVZqZEgwZ2RtRnNkV1Z6SUMwZ2RHaGxJSFpoYkhWbGN5QjBieUJ6WlhSY2JpQWdJQ29nUUhCaGNtRnRJSHRFWVhSbFZHbHRaWDBnZG1Gc2RXVnpMbk4wWVhKMElDMGdkR2hsSUhOMFlYSjBhVzVuSUVSaGRHVlVhVzFsWEc0Z0lDQXFJRUJ3WVhKaGJTQjdSR0YwWlZScGJXVjlJSFpoYkhWbGN5NWxibVFnTFNCMGFHVWdaVzVrYVc1bklFUmhkR1ZVYVcxbFhHNGdJQ0FxSUVCeVpYUjFjbTRnZTBsdWRHVnlkbUZzZlZ4dUlDQWdLaTljYmlBZ2MyVjBLSHNnYzNSaGNuUXNJR1Z1WkNCOUlEMGdlMzBwSUh0Y2JpQWdJQ0JwWmlBb0lYUm9hWE11YVhOV1lXeHBaQ2tnY21WMGRYSnVJSFJvYVhNN1hHNGdJQ0FnY21WMGRYSnVJRWx1ZEdWeWRtRnNMbVp5YjIxRVlYUmxWR2x0WlhNb2MzUmhjblFnZkh3Z2RHaHBjeTV6TENCbGJtUWdmSHdnZEdocGN5NWxLVHRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCVGNHeHBkQ0IwYUdseklFbHVkR1Z5ZG1Gc0lHRjBJR1ZoWTJnZ2IyWWdkR2hsSUhOd1pXTnBabWxsWkNCRVlYUmxWR2x0WlhOY2JpQWdJQ29nUUhCaGNtRnRJSHN1TGk1RVlYUmxWR2x0WlgwZ1pHRjBaVlJwYldWeklDMGdkR2hsSUhWdWFYUWdiMllnZEdsdFpTQjBieUJqYjNWdWRDNWNiaUFnSUNvZ1FISmxkSFZ5YmlCN1FYSnlZWGw5WEc0Z0lDQXFMMXh1SUNCemNHeHBkRUYwS0M0dUxtUmhkR1ZVYVcxbGN5a2dlMXh1SUNBZ0lHbG1JQ2doZEdocGN5NXBjMVpoYkdsa0tTQnlaWFIxY200Z1cxMDdYRzRnSUNBZ1kyOXVjM1FnYzI5eWRHVmtJRDBnWkdGMFpWUnBiV1Z6WEc0Z0lDQWdJQ0FnSUM1dFlYQW9abkpwWlc1a2JIbEVZWFJsVkdsdFpTbGNiaUFnSUNBZ0lDQWdMbVpwYkhSbGNpZ29aQ2tnUFQ0Z2RHaHBjeTVqYjI1MFlXbHVjeWhrS1NsY2JpQWdJQ0FnSUNBZ0xuTnZjblFvS1N4Y2JpQWdJQ0FnSUhKbGMzVnNkSE1nUFNCYlhUdGNiaUFnSUNCc1pYUWdleUJ6SUgwZ1BTQjBhR2x6TEZ4dUlDQWdJQ0FnYVNBOUlEQTdYRzVjYmlBZ0lDQjNhR2xzWlNBb2N5QThJSFJvYVhNdVpTa2dlMXh1SUNBZ0lDQWdZMjl1YzNRZ1lXUmtaV1FnUFNCemIzSjBaV1JiYVYwZ2ZId2dkR2hwY3k1bExGeHVJQ0FnSUNBZ0lDQnVaWGgwSUQwZ0syRmtaR1ZrSUQ0Z0szUm9hWE11WlNBL0lIUm9hWE11WlNBNklHRmtaR1ZrTzF4dUlDQWdJQ0FnY21WemRXeDBjeTV3ZFhOb0tFbHVkR1Z5ZG1Gc0xtWnliMjFFWVhSbFZHbHRaWE1vY3l3Z2JtVjRkQ2twTzF4dUlDQWdJQ0FnY3lBOUlHNWxlSFE3WEc0Z0lDQWdJQ0JwSUNzOUlERTdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2NtVjBkWEp1SUhKbGMzVnNkSE03WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1UzQnNhWFFnZEdocGN5QkpiblJsY25aaGJDQnBiblJ2SUhOdFlXeHNaWElnU1c1MFpYSjJZV3h6TENCbFlXTm9JRzltSUhSb1pTQnpjR1ZqYVdacFpXUWdiR1Z1WjNSb0xseHVJQ0FnS2lCTVpXWjBJRzkyWlhJZ2RHbHRaU0JwY3lCbmNtOTFjR1ZrSUdsdWRHOGdZU0J6YldGc2JHVnlJR2x1ZEdWeWRtRnNYRzRnSUNBcUlFQndZWEpoYlNCN1JIVnlZWFJwYjI1OFQySnFaV04wZkc1MWJXSmxjbjBnWkhWeVlYUnBiMjRnTFNCVWFHVWdiR1Z1WjNSb0lHOW1JR1ZoWTJnZ2NtVnpkV3gwYVc1bklHbHVkR1Z5ZG1Gc0xseHVJQ0FnS2lCQWNtVjBkWEp1SUh0QmNuSmhlWDFjYmlBZ0lDb3ZYRzRnSUhOd2JHbDBRbmtvWkhWeVlYUnBiMjRwSUh0Y2JpQWdJQ0JqYjI1emRDQmtkWElnUFNCRWRYSmhkR2x2Ymk1bWNtOXRSSFZ5WVhScGIyNU1hV3RsS0dSMWNtRjBhVzl1S1R0Y2JseHVJQ0FnSUdsbUlDZ2hkR2hwY3k1cGMxWmhiR2xrSUh4OElDRmtkWEl1YVhOV1lXeHBaQ0I4ZkNCa2RYSXVZWE1vWENKdGFXeHNhWE5sWTI5dVpITmNJaWtnUFQwOUlEQXBJSHRjYmlBZ0lDQWdJSEpsZEhWeWJpQmJYVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnNaWFFnZXlCeklIMGdQU0IwYUdsekxGeHVJQ0FnSUNBZ2FXUjRJRDBnTVN4Y2JpQWdJQ0FnSUc1bGVIUTdYRzVjYmlBZ0lDQmpiMjV6ZENCeVpYTjFiSFJ6SUQwZ1cxMDdYRzRnSUNBZ2QyaHBiR1VnS0hNZ1BDQjBhR2x6TG1VcElIdGNiaUFnSUNBZ0lHTnZibk4wSUdGa1pHVmtJRDBnZEdocGN5NXpkR0Z5ZEM1d2JIVnpLR1IxY2k1dFlYQlZibWwwY3lnb2VDa2dQVDRnZUNBcUlHbGtlQ2twTzF4dUlDQWdJQ0FnYm1WNGRDQTlJQ3RoWkdSbFpDQStJQ3QwYUdsekxtVWdQeUIwYUdsekxtVWdPaUJoWkdSbFpEdGNiaUFnSUNBZ0lISmxjM1ZzZEhNdWNIVnphQ2hKYm5SbGNuWmhiQzVtY205dFJHRjBaVlJwYldWektITXNJRzVsZUhRcEtUdGNiaUFnSUNBZ0lITWdQU0J1WlhoME8xeHVJQ0FnSUNBZ2FXUjRJQ3M5SURFN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnY21WMGRYSnVJSEpsYzNWc2RITTdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nVTNCc2FYUWdkR2hwY3lCSmJuUmxjblpoYkNCcGJuUnZJSFJvWlNCemNHVmphV1pwWldRZ2JuVnRZbVZ5SUc5bUlITnRZV3hzWlhJZ2FXNTBaWEoyWVd4ekxseHVJQ0FnS2lCQWNHRnlZVzBnZTI1MWJXSmxjbjBnYm5WdFltVnlUMlpRWVhKMGN5QXRJRlJvWlNCdWRXMWlaWElnYjJZZ1NXNTBaWEoyWVd4eklIUnZJR1JwZG1sa1pTQjBhR1VnU1c1MFpYSjJZV3dnYVc1MGJ5NWNiaUFnSUNvZ1FISmxkSFZ5YmlCN1FYSnlZWGw5WEc0Z0lDQXFMMXh1SUNCa2FYWnBaR1ZGY1hWaGJHeDVLRzUxYldKbGNrOW1VR0Z5ZEhNcElIdGNiaUFnSUNCcFppQW9JWFJvYVhNdWFYTldZV3hwWkNrZ2NtVjBkWEp1SUZ0ZE8xeHVJQ0FnSUhKbGRIVnliaUIwYUdsekxuTndiR2wwUW5rb2RHaHBjeTVzWlc1bmRHZ29LU0F2SUc1MWJXSmxjazltVUdGeWRITXBMbk5zYVdObEtEQXNJRzUxYldKbGNrOW1VR0Z5ZEhNcE8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRkpsZEhWeWJpQjNhR1YwYUdWeUlIUm9hWE1nU1c1MFpYSjJZV3dnYjNabGNteGhjSE1nZDJsMGFDQjBhR1VnYzNCbFkybG1hV1ZrSUVsdWRHVnlkbUZzWEc0Z0lDQXFJRUJ3WVhKaGJTQjdTVzUwWlhKMllXeDlJRzkwYUdWeVhHNGdJQ0FxSUVCeVpYUjFjbTRnZTJKdmIyeGxZVzU5WEc0Z0lDQXFMMXh1SUNCdmRtVnliR0Z3Y3lodmRHaGxjaWtnZTF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TG1VZ1BpQnZkR2hsY2k1eklDWW1JSFJvYVhNdWN5QThJRzkwYUdWeUxtVTdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nVW1WMGRYSnVJSGRvWlhSb1pYSWdkR2hwY3lCSmJuUmxjblpoYkNkeklHVnVaQ0JwY3lCaFpHcGhZMlZ1ZENCMGJ5QjBhR1VnYzNCbFkybG1hV1ZrSUVsdWRHVnlkbUZzSjNNZ2MzUmhjblF1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdTVzUwWlhKMllXeDlJRzkwYUdWeVhHNGdJQ0FxSUVCeVpYUjFjbTRnZTJKdmIyeGxZVzU5WEc0Z0lDQXFMMXh1SUNCaFluVjBjMU4wWVhKMEtHOTBhR1Z5S1NCN1hHNGdJQ0FnYVdZZ0tDRjBhR2x6TG1selZtRnNhV1FwSUhKbGRIVnliaUJtWVd4elpUdGNiaUFnSUNCeVpYUjFjbTRnSzNSb2FYTXVaU0E5UFQwZ0syOTBhR1Z5TG5NN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dVbVYwZFhKdUlIZG9aWFJvWlhJZ2RHaHBjeUJKYm5SbGNuWmhiQ2R6SUhOMFlYSjBJR2x6SUdGa2FtRmpaVzUwSUhSdklIUm9aU0J6Y0dWamFXWnBaV1FnU1c1MFpYSjJZV3duY3lCbGJtUXVYRzRnSUNBcUlFQndZWEpoYlNCN1NXNTBaWEoyWVd4OUlHOTBhR1Z5WEc0Z0lDQXFJRUJ5WlhSMWNtNGdlMkp2YjJ4bFlXNTlYRzRnSUNBcUwxeHVJQ0JoWW5WMGMwVnVaQ2h2ZEdobGNpa2dlMXh1SUNBZ0lHbG1JQ2doZEdocGN5NXBjMVpoYkdsa0tTQnlaWFIxY200Z1ptRnNjMlU3WEc0Z0lDQWdjbVYwZFhKdUlDdHZkR2hsY2k1bElEMDlQU0FyZEdocGN5NXpPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUZKbGRIVnliaUIzYUdWMGFHVnlJSFJvYVhNZ1NXNTBaWEoyWVd3Z1pXNW5kV3htY3lCMGFHVWdjM1JoY25RZ1lXNWtJR1Z1WkNCdlppQjBhR1VnYzNCbFkybG1hV1ZrSUVsdWRHVnlkbUZzTGx4dUlDQWdLaUJBY0dGeVlXMGdlMGx1ZEdWeWRtRnNmU0J2ZEdobGNseHVJQ0FnS2lCQWNtVjBkWEp1SUh0aWIyOXNaV0Z1ZlZ4dUlDQWdLaTljYmlBZ1pXNW5kV3htY3lodmRHaGxjaWtnZTF4dUlDQWdJR2xtSUNnaGRHaHBjeTVwYzFaaGJHbGtLU0J5WlhSMWNtNGdabUZzYzJVN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdWN5QThQU0J2ZEdobGNpNXpJQ1ltSUhSb2FYTXVaU0ErUFNCdmRHaGxjaTVsTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGSmxkSFZ5YmlCM2FHVjBhR1Z5SUhSb2FYTWdTVzUwWlhKMllXd2dhR0Z6SUhSb1pTQnpZVzFsSUhOMFlYSjBJR0Z1WkNCbGJtUWdZWE1nZEdobElITndaV05wWm1sbFpDQkpiblJsY25aaGJDNWNiaUFnSUNvZ1FIQmhjbUZ0SUh0SmJuUmxjblpoYkgwZ2IzUm9aWEpjYmlBZ0lDb2dRSEpsZEhWeWJpQjdZbTl2YkdWaGJuMWNiaUFnSUNvdlhHNGdJR1Z4ZFdGc2N5aHZkR2hsY2lrZ2UxeHVJQ0FnSUdsbUlDZ2hkR2hwY3k1cGMxWmhiR2xrSUh4OElDRnZkR2hsY2k1cGMxWmhiR2xrS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnWm1Gc2MyVTdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVjeTVsY1hWaGJITW9iM1JvWlhJdWN5a2dKaVlnZEdocGN5NWxMbVZ4ZFdGc2N5aHZkR2hsY2k1bEtUdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJTWlhSMWNtNGdZVzRnU1c1MFpYSjJZV3dnY21Wd2NtVnpaVzUwYVc1bklIUm9aU0JwYm5SbGNuTmxZM1JwYjI0Z2IyWWdkR2hwY3lCSmJuUmxjblpoYkNCaGJtUWdkR2hsSUhOd1pXTnBabWxsWkNCSmJuUmxjblpoYkM1Y2JpQWdJQ29nVTNCbFkybG1hV05oYkd4NUxDQjBhR1VnY21WemRXeDBhVzVuSUVsdWRHVnlkbUZzSUdoaGN5QjBhR1VnYldGNGFXMTFiU0J6ZEdGeWRDQjBhVzFsSUdGdVpDQjBhR1VnYldsdWFXMTFiU0JsYm1RZ2RHbHRaU0J2WmlCMGFHVWdkSGR2SUVsdWRHVnlkbUZzY3k1Y2JpQWdJQ29nVW1WMGRYSnVjeUJ1ZFd4c0lHbG1JSFJvWlNCcGJuUmxjbk5sWTNScGIyNGdhWE1nWlcxd2RIa3NJRzFsWVc1cGJtY3NJSFJvWlNCcGJuUmxjblpoYkhNZ1pHOXVKM1FnYVc1MFpYSnpaV04wTGx4dUlDQWdLaUJBY0dGeVlXMGdlMGx1ZEdWeWRtRnNmU0J2ZEdobGNseHVJQ0FnS2lCQWNtVjBkWEp1SUh0SmJuUmxjblpoYkgxY2JpQWdJQ292WEc0Z0lHbHVkR1Z5YzJWamRHbHZiaWh2ZEdobGNpa2dlMXh1SUNBZ0lHbG1JQ2doZEdocGN5NXBjMVpoYkdsa0tTQnlaWFIxY200Z2RHaHBjenRjYmlBZ0lDQmpiMjV6ZENCeklEMGdkR2hwY3k1eklENGdiM1JvWlhJdWN5QS9JSFJvYVhNdWN5QTZJRzkwYUdWeUxuTXNYRzRnSUNBZ0lDQmxJRDBnZEdocGN5NWxJRHdnYjNSb1pYSXVaU0EvSUhSb2FYTXVaU0E2SUc5MGFHVnlMbVU3WEc1Y2JpQWdJQ0JwWmlBb2N5QStQU0JsS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnYm5Wc2JEdGNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnY21WMGRYSnVJRWx1ZEdWeWRtRnNMbVp5YjIxRVlYUmxWR2x0WlhNb2N5d2daU2s3WEc0Z0lDQWdmVnh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUZKbGRIVnliaUJoYmlCSmJuUmxjblpoYkNCeVpYQnlaWE5sYm5ScGJtY2dkR2hsSUhWdWFXOXVJRzltSUhSb2FYTWdTVzUwWlhKMllXd2dZVzVrSUhSb1pTQnpjR1ZqYVdacFpXUWdTVzUwWlhKMllXd3VYRzRnSUNBcUlGTndaV05wWm1sallXeHNlU3dnZEdobElISmxjM1ZzZEdsdVp5QkpiblJsY25aaGJDQm9ZWE1nZEdobElHMXBibWx0ZFcwZ2MzUmhjblFnZEdsdFpTQmhibVFnZEdobElHMWhlR2x0ZFcwZ1pXNWtJSFJwYldVZ2IyWWdkR2hsSUhSM2J5QkpiblJsY25aaGJITXVYRzRnSUNBcUlFQndZWEpoYlNCN1NXNTBaWEoyWVd4OUlHOTBhR1Z5WEc0Z0lDQXFJRUJ5WlhSMWNtNGdlMGx1ZEdWeWRtRnNmVnh1SUNBZ0tpOWNiaUFnZFc1cGIyNG9iM1JvWlhJcElIdGNiaUFnSUNCcFppQW9JWFJvYVhNdWFYTldZV3hwWkNrZ2NtVjBkWEp1SUhSb2FYTTdYRzRnSUNBZ1kyOXVjM1FnY3lBOUlIUm9hWE11Y3lBOElHOTBhR1Z5TG5NZ1B5QjBhR2x6TG5NZ09pQnZkR2hsY2k1ekxGeHVJQ0FnSUNBZ1pTQTlJSFJvYVhNdVpTQStJRzkwYUdWeUxtVWdQeUIwYUdsekxtVWdPaUJ2ZEdobGNpNWxPMXh1SUNBZ0lISmxkSFZ5YmlCSmJuUmxjblpoYkM1bWNtOXRSR0YwWlZScGJXVnpLSE1zSUdVcE8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRTFsY21kbElHRnVJR0Z5Y21GNUlHOW1JRWx1ZEdWeWRtRnNjeUJwYm5SdklHRWdaWEYxYVhaaGJHVnVkQ0J0YVc1cGJXRnNJSE5sZENCdlppQkpiblJsY25aaGJITXVYRzRnSUNBcUlFTnZiV0pwYm1WeklHOTJaWEpzWVhCd2FXNW5JR0Z1WkNCaFpHcGhZMlZ1ZENCSmJuUmxjblpoYkhNdVhHNGdJQ0FxSUVCd1lYSmhiU0I3UVhKeVlYbDlJR2x1ZEdWeWRtRnNjMXh1SUNBZ0tpQkFjbVYwZFhKdUlIdEJjbkpoZVgxY2JpQWdJQ292WEc0Z0lITjBZWFJwWXlCdFpYSm5aU2hwYm5SbGNuWmhiSE1wSUh0Y2JpQWdJQ0JqYjI1emRDQmJabTkxYm1Rc0lHWnBibUZzWFNBOUlHbHVkR1Z5ZG1Gc2MxeHVJQ0FnSUNBZ0xuTnZjblFvS0dFc0lHSXBJRDArSUdFdWN5QXRJR0l1Y3lsY2JpQWdJQ0FnSUM1eVpXUjFZMlVvWEc0Z0lDQWdJQ0FnSUNoYmMyOW1ZWElzSUdOMWNuSmxiblJkTENCcGRHVnRLU0E5UGlCN1hHNGdJQ0FnSUNBZ0lDQWdhV1lnS0NGamRYSnlaVzUwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdXM052Wm1GeUxDQnBkR1Z0WFR0Y2JpQWdJQ0FnSUNBZ0lDQjlJR1ZzYzJVZ2FXWWdLR04xY25KbGJuUXViM1psY214aGNITW9hWFJsYlNrZ2ZId2dZM1Z5Y21WdWRDNWhZblYwYzFOMFlYSjBLR2wwWlcwcEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnVzNOdlptRnlMQ0JqZFhKeVpXNTBMblZ1YVc5dUtHbDBaVzBwWFR0Y2JpQWdJQ0FnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJRnR6YjJaaGNpNWpiMjVqWVhRb1cyTjFjbkpsYm5SZEtTd2dhWFJsYlYwN1hHNGdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0I5TEZ4dUlDQWdJQ0FnSUNCYlcxMHNJRzUxYkd4ZFhHNGdJQ0FnSUNBcE8xeHVJQ0FnSUdsbUlDaG1hVzVoYkNrZ2UxeHVJQ0FnSUNBZ1ptOTFibVF1Y0hWemFDaG1hVzVoYkNrN1hHNGdJQ0FnZlZ4dUlDQWdJSEpsZEhWeWJpQm1iM1Z1WkR0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlNaWFIxY200Z1lXNGdZWEp5WVhrZ2IyWWdTVzUwWlhKMllXeHpJSEpsY0hKbGMyVnVkR2x1WnlCMGFHVWdjM0JoYm5NZ2IyWWdkR2x0WlNCMGFHRjBJRzl1YkhrZ1lYQndaV0Z5SUdsdUlHOXVaU0J2WmlCMGFHVWdjM0JsWTJsbWFXVmtJRWx1ZEdWeWRtRnNjeTVjYmlBZ0lDb2dRSEJoY21GdElIdEJjbkpoZVgwZ2FXNTBaWEoyWVd4elhHNGdJQ0FxSUVCeVpYUjFjbTRnZTBGeWNtRjVmVnh1SUNBZ0tpOWNiaUFnYzNSaGRHbGpJSGh2Y2locGJuUmxjblpoYkhNcElIdGNiaUFnSUNCc1pYUWdjM1JoY25RZ1BTQnVkV3hzTEZ4dUlDQWdJQ0FnWTNWeWNtVnVkRU52ZFc1MElEMGdNRHRjYmlBZ0lDQmpiMjV6ZENCeVpYTjFiSFJ6SUQwZ1cxMHNYRzRnSUNBZ0lDQmxibVJ6SUQwZ2FXNTBaWEoyWVd4ekxtMWhjQ2dvYVNrZ1BUNGdXMXh1SUNBZ0lDQWdJQ0I3SUhScGJXVTZJR2t1Y3l3Z2RIbHdaVG9nWENKelhDSWdmU3hjYmlBZ0lDQWdJQ0FnZXlCMGFXMWxPaUJwTG1Vc0lIUjVjR1U2SUZ3aVpWd2lJSDBzWEc0Z0lDQWdJQ0JkS1N4Y2JpQWdJQ0FnSUdac1lYUjBaVzVsWkNBOUlFRnljbUY1TG5CeWIzUnZkSGx3WlM1amIyNWpZWFFvTGk0dVpXNWtjeWtzWEc0Z0lDQWdJQ0JoY25JZ1BTQm1iR0YwZEdWdVpXUXVjMjl5ZENnb1lTd2dZaWtnUFQ0Z1lTNTBhVzFsSUMwZ1lpNTBhVzFsS1R0Y2JseHVJQ0FnSUdadmNpQW9ZMjl1YzNRZ2FTQnZaaUJoY25JcElIdGNiaUFnSUNBZ0lHTjFjbkpsYm5SRGIzVnVkQ0FyUFNCcExuUjVjR1VnUFQwOUlGd2ljMXdpSUQ4Z01TQTZJQzB4TzF4dVhHNGdJQ0FnSUNCcFppQW9ZM1Z5Y21WdWRFTnZkVzUwSUQwOVBTQXhLU0I3WEc0Z0lDQWdJQ0FnSUhOMFlYSjBJRDBnYVM1MGFXMWxPMXh1SUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdhV1lnS0hOMFlYSjBJQ1ltSUN0emRHRnlkQ0FoUFQwZ0sya3VkR2x0WlNrZ2UxeHVJQ0FnSUNBZ0lDQWdJSEpsYzNWc2RITXVjSFZ6YUNoSmJuUmxjblpoYkM1bWNtOXRSR0YwWlZScGJXVnpLSE4wWVhKMExDQnBMblJwYldVcEtUdGNiaUFnSUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0FnSUhOMFlYSjBJRDBnYm5Wc2JEdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNWNiaUFnSUNCeVpYUjFjbTRnU1c1MFpYSjJZV3d1YldWeVoyVW9jbVZ6ZFd4MGN5azdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nVW1WMGRYSnVJR0Z1SUVsdWRHVnlkbUZzSUhKbGNISmxjMlZ1ZEdsdVp5QjBhR1VnYzNCaGJpQnZaaUIwYVcxbElHbHVJSFJvYVhNZ1NXNTBaWEoyWVd3Z2RHaGhkQ0JrYjJWemJpZDBJRzkyWlhKc1lYQWdkMmwwYUNCaGJua2diMllnZEdobElITndaV05wWm1sbFpDQkpiblJsY25aaGJITXVYRzRnSUNBcUlFQndZWEpoYlNCN0xpNHVTVzUwWlhKMllXeDlJR2x1ZEdWeWRtRnNjMXh1SUNBZ0tpQkFjbVYwZFhKdUlIdEJjbkpoZVgxY2JpQWdJQ292WEc0Z0lHUnBabVpsY21WdVkyVW9MaTR1YVc1MFpYSjJZV3h6S1NCN1hHNGdJQ0FnY21WMGRYSnVJRWx1ZEdWeWRtRnNMbmh2Y2loYmRHaHBjMTB1WTI5dVkyRjBLR2x1ZEdWeWRtRnNjeWtwWEc0Z0lDQWdJQ0F1YldGd0tDaHBLU0E5UGlCMGFHbHpMbWx1ZEdWeWMyVmpkR2x2YmlocEtTbGNiaUFnSUNBZ0lDNW1hV3gwWlhJb0tHa3BJRDArSUdrZ0ppWWdJV2t1YVhORmJYQjBlU2dwS1R0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlNaWFIxY201eklHRWdjM1J5YVc1bklISmxjSEpsYzJWdWRHRjBhVzl1SUc5bUlIUm9hWE1nU1c1MFpYSjJZV3dnWVhCd2NtOXdjbWxoZEdVZ1ptOXlJR1JsWW5WbloybHVaeTVjYmlBZ0lDb2dRSEpsZEhWeWJpQjdjM1J5YVc1bmZWeHVJQ0FnS2k5Y2JpQWdkRzlUZEhKcGJtY29LU0I3WEc0Z0lDQWdhV1lnS0NGMGFHbHpMbWx6Vm1Gc2FXUXBJSEpsZEhWeWJpQkpUbFpCVEVsRU8xeHVJQ0FnSUhKbGRIVnliaUJnV3lSN2RHaHBjeTV6TG5SdlNWTlBLQ2w5SUZ4MU1qQXhNeUFrZTNSb2FYTXVaUzUwYjBsVFR5Z3BmU2xnTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGSmxkSFZ5Ym5NZ1lXNGdTVk5QSURnMk1ERXRZMjl0Y0d4cFlXNTBJSE4wY21sdVp5QnlaWEJ5WlhObGJuUmhkR2x2YmlCdlppQjBhR2x6SUVsdWRHVnlkbUZzTGx4dUlDQWdLaUJBYzJWbElHaDBkSEJ6T2k4dlpXNHVkMmxyYVhCbFpHbGhMbTl5Wnk5M2FXdHBMMGxUVDE4NE5qQXhJMVJwYldWZmFXNTBaWEoyWVd4elhHNGdJQ0FxSUVCd1lYSmhiU0I3VDJKcVpXTjBmU0J2Y0hSeklDMGdWR2hsSUhOaGJXVWdiM0IwYVc5dWN5QmhjeUI3UUd4cGJtc2dSR0YwWlZScGJXVWpkRzlKVTA5OVhHNGdJQ0FxSUVCeVpYUjFjbTRnZTNOMGNtbHVaMzFjYmlBZ0lDb3ZYRzRnSUhSdlNWTlBLRzl3ZEhNcElIdGNiaUFnSUNCcFppQW9JWFJvYVhNdWFYTldZV3hwWkNrZ2NtVjBkWEp1SUVsT1ZrRk1TVVE3WEc0Z0lDQWdjbVYwZFhKdUlHQWtlM1JvYVhNdWN5NTBiMGxUVHlodmNIUnpLWDB2Skh0MGFHbHpMbVV1ZEc5SlUwOG9iM0IwY3lsOVlEdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJTWlhSMWNtNXpJR0Z1SUVsVFR5QTROakF4TFdOdmJYQnNhV0Z1ZENCemRISnBibWNnY21Wd2NtVnpaVzUwWVhScGIyNGdiMllnWkdGMFpTQnZaaUIwYUdseklFbHVkR1Z5ZG1Gc0xseHVJQ0FnS2lCVWFHVWdkR2x0WlNCamIyMXdiMjVsYm5SeklHRnlaU0JwWjI1dmNtVmtMbHh1SUNBZ0tpQkFjMlZsSUdoMGRIQnpPaTh2Wlc0dWQybHJhWEJsWkdsaExtOXlaeTkzYVd0cEwwbFRUMTg0TmpBeEkxUnBiV1ZmYVc1MFpYSjJZV3h6WEc0Z0lDQXFJRUJ5WlhSMWNtNGdlM04wY21sdVozMWNiaUFnSUNvdlhHNGdJSFJ2U1ZOUFJHRjBaU2dwSUh0Y2JpQWdJQ0JwWmlBb0lYUm9hWE11YVhOV1lXeHBaQ2tnY21WMGRYSnVJRWxPVmtGTVNVUTdYRzRnSUNBZ2NtVjBkWEp1SUdBa2UzUm9hWE11Y3k1MGIwbFRUMFJoZEdVb0tYMHZKSHQwYUdsekxtVXVkRzlKVTA5RVlYUmxLQ2w5WUR0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlNaWFIxY201eklHRnVJRWxUVHlBNE5qQXhMV052YlhCc2FXRnVkQ0J6ZEhKcGJtY2djbVZ3Y21WelpXNTBZWFJwYjI0Z2IyWWdkR2x0WlNCdlppQjBhR2x6SUVsdWRHVnlkbUZzTGx4dUlDQWdLaUJVYUdVZ1pHRjBaU0JqYjIxd2IyNWxiblJ6SUdGeVpTQnBaMjV2Y21Wa0xseHVJQ0FnS2lCQWMyVmxJR2gwZEhCek9pOHZaVzR1ZDJscmFYQmxaR2xoTG05eVp5OTNhV3RwTDBsVFQxODROakF4STFScGJXVmZhVzUwWlhKMllXeHpYRzRnSUNBcUlFQndZWEpoYlNCN1QySnFaV04wZlNCdmNIUnpJQzBnVkdobElITmhiV1VnYjNCMGFXOXVjeUJoY3lCN1FHeHBibXNnUkdGMFpWUnBiV1VqZEc5SlUwOTlYRzRnSUNBcUlFQnlaWFIxY200Z2UzTjBjbWx1WjMxY2JpQWdJQ292WEc0Z0lIUnZTVk5QVkdsdFpTaHZjSFJ6S1NCN1hHNGdJQ0FnYVdZZ0tDRjBhR2x6TG1selZtRnNhV1FwSUhKbGRIVnliaUJKVGxaQlRFbEVPMXh1SUNBZ0lISmxkSFZ5YmlCZ0pIdDBhR2x6TG5NdWRHOUpVMDlVYVcxbEtHOXdkSE1wZlM4a2UzUm9hWE11WlM1MGIwbFRUMVJwYldVb2IzQjBjeWw5WUR0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlNaWFIxY201eklHRWdjM1J5YVc1bklISmxjSEpsYzJWdWRHRjBhVzl1SUc5bUlIUm9hWE1nU1c1MFpYSjJZV3dnWm05eWJXRjBkR1ZrSUdGalkyOXlaR2x1WnlCMGJ5QjBhR1VnYzNCbFkybG1hV1ZrSUdadmNtMWhkQ0J6ZEhKcGJtY3VYRzRnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCa1lYUmxSbTl5YldGMElDMGdkR2hsSUdadmNtMWhkQ0J6ZEhKcGJtY3VJRlJvYVhNZ2MzUnlhVzVuSUdadmNtMWhkSE1nZEdobElITjBZWEowSUdGdVpDQmxibVFnZEdsdFpTNGdVMlZsSUh0QWJHbHVheUJFWVhSbFZHbHRaU04wYjBadmNtMWhkSDBnWm05eUlHUmxkR0ZwYkhNdVhHNGdJQ0FxSUVCd1lYSmhiU0I3VDJKcVpXTjBmU0J2Y0hSeklDMGdiM0IwYVc5dWMxeHVJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnVzI5d2RITXVjMlZ3WVhKaGRHOXlJRDBnSUNjZ1hIVXlNREV6SUNkZElDMGdZU0J6WlhCaGNtRjBiM0lnZEc4Z2NHeGhZMlVnWW1WMGQyVmxiaUIwYUdVZ2MzUmhjblFnWVc1a0lHVnVaQ0J5WlhCeVpYTmxiblJoZEdsdmJuTmNiaUFnSUNvZ1FISmxkSFZ5YmlCN2MzUnlhVzVuZlZ4dUlDQWdLaTljYmlBZ2RHOUdiM0p0WVhRb1pHRjBaVVp2Y20xaGRDd2dleUJ6WlhCaGNtRjBiM0lnUFNCY0lpQmNkVEl3TVRNZ1hDSWdmU0E5SUh0OUtTQjdYRzRnSUNBZ2FXWWdLQ0YwYUdsekxtbHpWbUZzYVdRcElISmxkSFZ5YmlCSlRsWkJURWxFTzF4dUlDQWdJSEpsZEhWeWJpQmdKSHQwYUdsekxuTXVkRzlHYjNKdFlYUW9aR0YwWlVadmNtMWhkQ2w5Skh0elpYQmhjbUYwYjNKOUpIdDBhR2x6TG1VdWRHOUdiM0p0WVhRb1pHRjBaVVp2Y20xaGRDbDlZRHRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCU1pYUjFjbTRnWVNCRWRYSmhkR2x2YmlCeVpYQnlaWE5sYm5ScGJtY2dkR2hsSUhScGJXVWdjM0JoYm01bFpDQmllU0IwYUdseklHbHVkR1Z5ZG1Gc0xseHVJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaM3h6ZEhKcGJtZGJYWDBnVzNWdWFYUTlXeWR0YVd4c2FYTmxZMjl1WkhNblhWMGdMU0IwYUdVZ2RXNXBkQ0J2Y2lCMWJtbDBjeUFvYzNWamFDQmhjeUFuYUc5MWNuTW5JRzl5SUNka1lYbHpKeWtnZEc4Z2FXNWpiSFZrWlNCcGJpQjBhR1VnWkhWeVlYUnBiMjR1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdUMkpxWldOMGZTQnZjSFJ6SUMwZ2IzQjBhVzl1Y3lCMGFHRjBJR0ZtWm1WamRDQjBhR1VnWTNKbFlYUnBiMjRnYjJZZ2RHaGxJRVIxY21GMGFXOXVYRzRnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCYmIzQjBjeTVqYjI1MlpYSnphVzl1UVdOamRYSmhZM2s5SjJOaGMzVmhiQ2RkSUMwZ2RHaGxJR052Ym5abGNuTnBiMjRnYzNsemRHVnRJSFJ2SUhWelpWeHVJQ0FnS2lCQVpYaGhiWEJzWlNCSmJuUmxjblpoYkM1bWNtOXRSR0YwWlZScGJXVnpLR1IwTVN3Z1pIUXlLUzUwYjBSMWNtRjBhVzl1S0NrdWRHOVBZbXBsWTNRb0tTQXZMejArSUhzZ2JXbHNiR2x6WldOdmJtUnpPaUE0T0RRNE9USTFOeUI5WEc0Z0lDQXFJRUJsZUdGdGNHeGxJRWx1ZEdWeWRtRnNMbVp5YjIxRVlYUmxWR2x0WlhNb1pIUXhMQ0JrZERJcExuUnZSSFZ5WVhScGIyNG9KMlJoZVhNbktTNTBiMDlpYW1WamRDZ3BJQzh2UFQ0Z2V5QmtZWGx6T2lBeExqQXlOREU0TVRJeE5USTNOemMzTnpnZ2ZWeHVJQ0FnS2lCQVpYaGhiWEJzWlNCSmJuUmxjblpoYkM1bWNtOXRSR0YwWlZScGJXVnpLR1IwTVN3Z1pIUXlLUzUwYjBSMWNtRjBhVzl1S0ZzbmFHOTFjbk1uTENBbmJXbHVkWFJsY3lkZEtTNTBiMDlpYW1WamRDZ3BJQzh2UFQ0Z2V5Qm9iM1Z5Y3pvZ01qUXNJRzFwYm5WMFpYTTZJRE0wTGpneU1EazFJSDFjYmlBZ0lDb2dRR1Y0WVcxd2JHVWdTVzUwWlhKMllXd3Vabkp2YlVSaGRHVlVhVzFsY3loa2RERXNJR1IwTWlrdWRHOUVkWEpoZEdsdmJpaGJKMmh2ZFhKekp5d2dKMjFwYm5WMFpYTW5MQ0FuYzJWamIyNWtjeWRkS1M1MGIwOWlhbVZqZENncElDOHZQVDRnZXlCb2IzVnljem9nTWpRc0lHMXBiblYwWlhNNklETTBMQ0J6WldOdmJtUnpPaUEwT1M0eU5UY2dmVnh1SUNBZ0tpQkFaWGhoYlhCc1pTQkpiblJsY25aaGJDNW1jbTl0UkdGMFpWUnBiV1Z6S0dSME1Td2daSFF5S1M1MGIwUjFjbUYwYVc5dUtDZHpaV052Ym1Sekp5a3VkRzlQWW1wbFkzUW9LU0F2THowK0lIc2djMlZqYjI1a2N6b2dPRGcwT0RrdU1qVTNJSDFjYmlBZ0lDb2dRSEpsZEhWeWJpQjdSSFZ5WVhScGIyNTlYRzRnSUNBcUwxeHVJQ0IwYjBSMWNtRjBhVzl1S0hWdWFYUXNJRzl3ZEhNcElIdGNiaUFnSUNCcFppQW9JWFJvYVhNdWFYTldZV3hwWkNrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUVSMWNtRjBhVzl1TG1sdWRtRnNhV1FvZEdocGN5NXBiblpoYkdsa1VtVmhjMjl1S1R0Y2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11WlM1a2FXWm1LSFJvYVhNdWN5d2dkVzVwZEN3Z2IzQjBjeWs3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1VuVnVJRzFoY0VadUlHOXVJSFJvWlNCcGJuUmxjblpoYkNCemRHRnlkQ0JoYm1RZ1pXNWtMQ0J5WlhSMWNtNXBibWNnWVNCdVpYY2dTVzUwWlhKMllXd2dabkp2YlNCMGFHVWdjbVZ6ZFd4MGFXNW5JRVJoZEdWVWFXMWxjMXh1SUNBZ0tpQkFjR0Z5WVcwZ2UyWjFibU4wYVc5dWZTQnRZWEJHYmx4dUlDQWdLaUJBY21WMGRYSnVJSHRKYm5SbGNuWmhiSDFjYmlBZ0lDb2dRR1Y0WVcxd2JHVWdTVzUwWlhKMllXd3Vabkp2YlVSaGRHVlVhVzFsY3loa2RERXNJR1IwTWlrdWJXRndSVzVrY0c5cGJuUnpLR1Z1WkhCdmFXNTBJRDArSUdWdVpIQnZhVzUwTG5SdlZWUkRLQ2twWEc0Z0lDQXFJRUJsZUdGdGNHeGxJRWx1ZEdWeWRtRnNMbVp5YjIxRVlYUmxWR2x0WlhNb1pIUXhMQ0JrZERJcExtMWhjRVZ1WkhCdmFXNTBjeWhsYm1Sd2IybHVkQ0E5UGlCbGJtUndiMmx1ZEM1d2JIVnpLSHNnYUc5MWNuTTZJRElnZlNrcFhHNGdJQ0FxTDF4dUlDQnRZWEJGYm1Sd2IybHVkSE1vYldGd1JtNHBJSHRjYmlBZ0lDQnlaWFIxY200Z1NXNTBaWEoyWVd3dVpuSnZiVVJoZEdWVWFXMWxjeWh0WVhCR2JpaDBhR2x6TG5NcExDQnRZWEJHYmloMGFHbHpMbVVwS1R0Y2JpQWdmVnh1ZlZ4dUlpd2dJbWx0Y0c5eWRDQkVZWFJsVkdsdFpTQm1jbTl0SUZ3aUxpOWtZWFJsZEdsdFpTNXFjMXdpTzF4dWFXMXdiM0owSUZObGRIUnBibWR6SUdaeWIyMGdYQ0l1TDNObGRIUnBibWR6TG1welhDSTdYRzVwYlhCdmNuUWdURzlqWVd4bElHWnliMjBnWENJdUwybHRjR3d2Ykc5allXeGxMbXB6WENJN1hHNXBiWEJ2Y25RZ1NVRk9RVnB2Ym1VZ1puSnZiU0JjSWk0dmVtOXVaWE12U1VGT1FWcHZibVV1YW5OY0lqdGNibWx0Y0c5eWRDQjdJRzV2Y20xaGJHbDZaVnB2Ym1VZ2ZTQm1jbTl0SUZ3aUxpOXBiWEJzTDNwdmJtVlZkR2xzTG1welhDSTdYRzVjYm1sdGNHOXlkQ0I3SUdoaGMxSmxiR0YwYVhabElIMGdabkp2YlNCY0lpNHZhVzF3YkM5MWRHbHNMbXB6WENJN1hHNWNiaThxS2x4dUlDb2dWR2hsSUVsdVptOGdZMnhoYzNNZ1kyOXVkR0ZwYm5NZ2MzUmhkR2xqSUcxbGRHaHZaSE1nWm05eUlISmxkSEpwWlhacGJtY2daMlZ1WlhKaGJDQjBhVzFsSUdGdVpDQmtZWFJsSUhKbGJHRjBaV1FnWkdGMFlTNGdSbTl5SUdWNFlXMXdiR1VzSUdsMElHaGhjeUJ0WlhSb2IyUnpJR1p2Y2lCbWFXNWthVzVuSUc5MWRDQnBaaUJoSUhScGJXVWdlbTl1WlNCb1lYTWdZU0JFVTFRc0lHWnZjaUJzYVhOMGFXNW5JSFJvWlNCdGIyNTBhSE1nYVc0Z1lXNTVJSE4xY0hCdmNuUmxaQ0JzYjJOaGJHVXNJR0Z1WkNCbWIzSWdaR2x6WTI5MlpYSnBibWNnZDJocFkyZ2diMllnVEhWNGIyNGdabVZoZEhWeVpYTWdZWEpsSUdGMllXbHNZV0pzWlNCcGJpQjBhR1VnWTNWeWNtVnVkQ0JsYm5acGNtOXViV1Z1ZEM1Y2JpQXFMMXh1Wlhod2IzSjBJR1JsWm1GMWJIUWdZMnhoYzNNZ1NXNW1ieUI3WEc0Z0lDOHFLbHh1SUNBZ0tpQlNaWFIxY200Z2QyaGxkR2hsY2lCMGFHVWdjM0JsWTJsbWFXVmtJSHB2Ym1VZ1kyOXVkR0ZwYm5NZ1lTQkVVMVF1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZGcHZibVY5SUZ0NmIyNWxQU2RzYjJOaGJDZGRJQzBnV205dVpTQjBieUJqYUdWamF5NGdSR1ZtWVhWc2RITWdkRzhnZEdobElHVnVkbWx5YjI1dFpXNTBKM01nYkc5allXd2dlbTl1WlM1Y2JpQWdJQ29nUUhKbGRIVnliaUI3WW05dmJHVmhibjFjYmlBZ0lDb3ZYRzRnSUhOMFlYUnBZeUJvWVhORVUxUW9lbTl1WlNBOUlGTmxkSFJwYm1kekxtUmxabUYxYkhSYWIyNWxLU0I3WEc0Z0lDQWdZMjl1YzNRZ2NISnZkRzhnUFNCRVlYUmxWR2x0WlM1dWIzY29LUzV6WlhSYWIyNWxLSHB2Ym1VcExuTmxkQ2g3SUcxdmJuUm9PaUF4TWlCOUtUdGNibHh1SUNBZ0lISmxkSFZ5YmlBaGVtOXVaUzVwYzFWdWFYWmxjbk5oYkNBbUppQndjbTkwYnk1dlptWnpaWFFnSVQwOUlIQnliM1J2TG5ObGRDaDdJRzF2Ym5Sb09pQTJJSDBwTG05bVpuTmxkRHRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCU1pYUjFjbTRnZDJobGRHaGxjaUIwYUdVZ2MzQmxZMmxtYVdWa0lIcHZibVVnYVhNZ1lTQjJZV3hwWkNCSlFVNUJJSE53WldOcFptbGxjaTVjYmlBZ0lDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlIcHZibVVnTFNCYWIyNWxJSFJ2SUdOb1pXTnJYRzRnSUNBcUlFQnlaWFIxY200Z2UySnZiMnhsWVc1OVhHNGdJQ0FxTDF4dUlDQnpkR0YwYVdNZ2FYTldZV3hwWkVsQlRrRmFiMjVsS0hwdmJtVXBJSHRjYmlBZ0lDQnlaWFIxY200Z1NVRk9RVnB2Ym1VdWFYTldZV3hwWkZwdmJtVW9lbTl1WlNrN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRMjl1ZG1WeWRITWdkR2hsSUdsdWNIVjBJR2x1ZEc4Z1lTQjdRR3hwYm1zZ1dtOXVaWDBnYVc1emRHRnVZMlV1WEc0Z0lDQXFYRzRnSUNBcUlDb2dTV1lnWUdsdWNIVjBZQ0JwY3lCaGJISmxZV1I1SUdFZ1dtOXVaU0JwYm5OMFlXNWpaU3dnYVhRZ2FYTWdjbVYwZFhKdVpXUWdkVzVqYUdGdVoyVmtMbHh1SUNBZ0tpQXFJRWxtSUdCcGJuQjFkR0FnYVhNZ1lTQnpkSEpwYm1jZ1kyOXVkR0ZwYm1sdVp5QmhJSFpoYkdsa0lIUnBiV1VnZW05dVpTQnVZVzFsTENCaElGcHZibVVnYVc1emRHRnVZMlZjYmlBZ0lDb2dJQ0IzYVhSb0lIUm9ZWFFnYm1GdFpTQnBjeUJ5WlhSMWNtNWxaQzVjYmlBZ0lDb2dLaUJKWmlCZ2FXNXdkWFJnSUdseklHRWdjM1J5YVc1bklIUm9ZWFFnWkc5bGMyNG5kQ0J5WldabGNpQjBieUJoSUd0dWIzZHVJSFJwYldVZ2VtOXVaU3dnWVNCYWIyNWxYRzRnSUNBcUlDQWdhVzV6ZEdGdVkyVWdkMmwwYUNCN1FHeHBibXNnV205dVpTTnBjMVpoYkdsa2ZTQTlQU0JtWVd4elpTQnBjeUJ5WlhSMWNtNWxaQzVjYmlBZ0lDb2dLaUJKWmlCZ2FXNXdkWFFnYVhNZ1lTQnVkVzFpWlhJc0lHRWdXbTl1WlNCcGJuTjBZVzVqWlNCM2FYUm9JSFJvWlNCemNHVmphV1pwWldRZ1ptbDRaV1FnYjJabWMyVjBYRzRnSUNBcUlDQWdhVzRnYldsdWRYUmxjeUJwY3lCeVpYUjFjbTVsWkM1Y2JpQWdJQ29nS2lCSlppQmdhVzV3ZFhSZ0lHbHpJR0J1ZFd4c1lDQnZjaUJnZFc1a1pXWnBibVZrWUN3Z2RHaGxJR1JsWm1GMWJIUWdlbTl1WlNCcGN5QnlaWFIxY201bFpDNWNiaUFnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ4V205dVpYeHVkVzFpWlhKOUlGdHBibkIxZEYwZ0xTQjBhR1VnZG1Gc2RXVWdkRzhnWW1VZ1kyOXVkbVZ5ZEdWa1hHNGdJQ0FxSUVCeVpYUjFjbTRnZTFwdmJtVjlYRzRnSUNBcUwxeHVJQ0J6ZEdGMGFXTWdibTl5YldGc2FYcGxXbTl1WlNocGJuQjFkQ2tnZTF4dUlDQWdJSEpsZEhWeWJpQnViM0p0WVd4cGVtVmFiMjVsS0dsdWNIVjBMQ0JUWlhSMGFXNW5jeTVrWldaaGRXeDBXbTl1WlNrN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dVbVYwZFhKdUlHRnVJR0Z5Y21GNUlHOW1JSE4wWVc1a1lXeHZibVVnYlc5dWRHZ2dibUZ0WlhNdVhHNGdJQ0FxSUVCelpXVWdhSFIwY0hNNkx5OWtaWFpsYkc5d1pYSXViVzk2YVd4c1lTNXZjbWN2Wlc0dFZWTXZaRzlqY3k5WFpXSXZTbUYyWVZOamNtbHdkQzlTWldabGNtVnVZMlV2UjJ4dlltRnNYMDlpYW1WamRITXZSR0YwWlZScGJXVkdiM0p0WVhSY2JpQWdJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJRnRzWlc1bmRHZzlKMnh2Ym1jblhTQXRJSFJvWlNCc1pXNW5kR2dnYjJZZ2RHaGxJRzF2Ym5Sb0lISmxjSEpsYzJWdWRHRjBhVzl1TENCemRXTm9JR0Z6SUZ3aWJuVnRaWEpwWTF3aUxDQmNJakl0WkdsbmFYUmNJaXdnWENKdVlYSnliM2RjSWl3Z1hDSnphRzl5ZEZ3aUxDQmNJbXh2Ym1kY0lseHVJQ0FnS2lCQWNHRnlZVzBnZTA5aWFtVmpkSDBnYjNCMGN5QXRJRzl3ZEdsdmJuTmNiaUFnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUZ0dmNIUnpMbXh2WTJGc1pWMGdMU0IwYUdVZ2JHOWpZV3hsSUdOdlpHVmNiaUFnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUZ0dmNIUnpMbTUxYldKbGNtbHVaMU41YzNSbGJUMXVkV3hzWFNBdElIUm9aU0J1ZFcxaVpYSnBibWNnYzNsemRHVnRYRzRnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCYmIzQjBjeTVzYjJOUFltbzliblZzYkYwZ0xTQmhiaUJsZUdsemRHbHVaeUJzYjJOaGJHVWdiMkpxWldOMElIUnZJSFZ6WlZ4dUlDQWdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdXMjl3ZEhNdWIzVjBjSFYwUTJGc1pXNWtZWEk5SjJkeVpXZHZjbmtuWFNBdElIUm9aU0JqWVd4bGJtUmhjbHh1SUNBZ0tpQkFaWGhoYlhCc1pTQkpibVp2TG0xdmJuUm9jeWdwV3pCZElDOHZQVDRnSjBwaGJuVmhjbmtuWEc0Z0lDQXFJRUJsZUdGdGNHeGxJRWx1Wm04dWJXOXVkR2h6S0NkemFHOXlkQ2NwV3pCZElDOHZQVDRnSjBwaGJpZGNiaUFnSUNvZ1FHVjRZVzF3YkdVZ1NXNW1ieTV0YjI1MGFITW9KMjUxYldWeWFXTW5LVnN3WFNBdkx6MCtJQ2N4SjF4dUlDQWdLaUJBWlhoaGJYQnNaU0JKYm1adkxtMXZiblJvY3lnbmMyaHZjblFuTENCN0lHeHZZMkZzWlRvZ0oyWnlMVU5CSnlCOUlDbGJNRjBnTHk4OVBpQW5hbUZ1ZGk0blhHNGdJQ0FxSUVCbGVHRnRjR3hsSUVsdVptOHViVzl1ZEdoektDZHVkVzFsY21sakp5d2dleUJzYjJOaGJHVTZJQ2RoY2ljZ2ZTbGJNRjBnTHk4OVBpQW5YSFV3TmpZeEoxeHVJQ0FnS2lCQVpYaGhiWEJzWlNCSmJtWnZMbTF2Ym5Sb2N5Z25iRzl1Wnljc0lIc2diM1YwY0hWMFEyRnNaVzVrWVhJNklDZHBjMnhoYldsakp5QjlLVnN3WFNBdkx6MCtJQ2RTWVdKcFhIVXdNa0pDSUVrblhHNGdJQ0FxSUVCeVpYUjFjbTRnZTBGeWNtRjVmVnh1SUNBZ0tpOWNiaUFnYzNSaGRHbGpJRzF2Ym5Sb2N5aGNiaUFnSUNCc1pXNW5kR2dnUFNCY0lteHZibWRjSWl4Y2JpQWdJQ0I3SUd4dlkyRnNaU0E5SUc1MWJHd3NJRzUxYldKbGNtbHVaMU41YzNSbGJTQTlJRzUxYkd3c0lHeHZZMDlpYWlBOUlHNTFiR3dzSUc5MWRIQjFkRU5oYkdWdVpHRnlJRDBnWENKbmNtVm5iM0o1WENJZ2ZTQTlJSHQ5WEc0Z0lDa2dlMXh1SUNBZ0lISmxkSFZ5YmlBb2JHOWpUMkpxSUh4OElFeHZZMkZzWlM1amNtVmhkR1VvYkc5allXeGxMQ0J1ZFcxaVpYSnBibWRUZVhOMFpXMHNJRzkxZEhCMWRFTmhiR1Z1WkdGeUtTa3ViVzl1ZEdoektHeGxibWQwYUNrN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dVbVYwZFhKdUlHRnVJR0Z5Y21GNUlHOW1JR1p2Y20xaGRDQnRiMjUwYUNCdVlXMWxjeTVjYmlBZ0lDb2dSbTl5YldGMElHMXZiblJvY3lCa2FXWm1aWElnWm5KdmJTQnpkR0Z1WkdGc2IyNWxJRzF2Ym5Sb2N5QnBiaUIwYUdGMElIUm9aWGtuY21VZ2JXVmhiblFnZEc4Z1lYQndaV0Z5SUc1bGVIUWdkRzhnZEdobElHUmhlU0J2WmlCMGFHVWdiVzl1ZEdndUlFbHVJSE52YldVZ2JHRnVaM1ZoWjJWekxDQjBhR0YwWEc0Z0lDQXFJR05vWVc1blpYTWdkR2hsSUhOMGNtbHVaeTVjYmlBZ0lDb2dVMlZsSUh0QWJHbHVheUJKYm1adkkyMXZiblJvYzMxY2JpQWdJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJRnRzWlc1bmRHZzlKMnh2Ym1jblhTQXRJSFJvWlNCc1pXNW5kR2dnYjJZZ2RHaGxJRzF2Ym5Sb0lISmxjSEpsYzJWdWRHRjBhVzl1TENCemRXTm9JR0Z6SUZ3aWJuVnRaWEpwWTF3aUxDQmNJakl0WkdsbmFYUmNJaXdnWENKdVlYSnliM2RjSWl3Z1hDSnphRzl5ZEZ3aUxDQmNJbXh2Ym1kY0lseHVJQ0FnS2lCQWNHRnlZVzBnZTA5aWFtVmpkSDBnYjNCMGN5QXRJRzl3ZEdsdmJuTmNiaUFnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUZ0dmNIUnpMbXh2WTJGc1pWMGdMU0IwYUdVZ2JHOWpZV3hsSUdOdlpHVmNiaUFnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUZ0dmNIUnpMbTUxYldKbGNtbHVaMU41YzNSbGJUMXVkV3hzWFNBdElIUm9aU0J1ZFcxaVpYSnBibWNnYzNsemRHVnRYRzRnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCYmIzQjBjeTVzYjJOUFltbzliblZzYkYwZ0xTQmhiaUJsZUdsemRHbHVaeUJzYjJOaGJHVWdiMkpxWldOMElIUnZJSFZ6WlZ4dUlDQWdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdXMjl3ZEhNdWIzVjBjSFYwUTJGc1pXNWtZWEk5SjJkeVpXZHZjbmtuWFNBdElIUm9aU0JqWVd4bGJtUmhjbHh1SUNBZ0tpQkFjbVYwZFhKdUlIdEJjbkpoZVgxY2JpQWdJQ292WEc0Z0lITjBZWFJwWXlCdGIyNTBhSE5HYjNKdFlYUW9YRzRnSUNBZ2JHVnVaM1JvSUQwZ1hDSnNiMjVuWENJc1hHNGdJQ0FnZXlCc2IyTmhiR1VnUFNCdWRXeHNMQ0J1ZFcxaVpYSnBibWRUZVhOMFpXMGdQU0J1ZFd4c0xDQnNiMk5QWW1vZ1BTQnVkV3hzTENCdmRYUndkWFJEWVd4bGJtUmhjaUE5SUZ3aVozSmxaMjl5ZVZ3aUlIMGdQU0I3ZlZ4dUlDQXBJSHRjYmlBZ0lDQnlaWFIxY200Z0tHeHZZMDlpYWlCOGZDQk1iMk5oYkdVdVkzSmxZWFJsS0d4dlkyRnNaU3dnYm5WdFltVnlhVzVuVTNsemRHVnRMQ0J2ZFhSd2RYUkRZV3hsYm1SaGNpa3BMbTF2Ym5Sb2N5aHNaVzVuZEdnc0lIUnlkV1VwTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGSmxkSFZ5YmlCaGJpQmhjbkpoZVNCdlppQnpkR0Z1WkdGc2IyNWxJSGRsWldzZ2JtRnRaWE11WEc0Z0lDQXFJRUJ6WldVZ2FIUjBjSE02THk5a1pYWmxiRzl3WlhJdWJXOTZhV3hzWVM1dmNtY3ZaVzR0VlZNdlpHOWpjeTlYWldJdlNtRjJZVk5qY21sd2RDOVNaV1psY21WdVkyVXZSMnh2WW1Gc1gwOWlhbVZqZEhNdlJHRjBaVlJwYldWR2IzSnRZWFJjYmlBZ0lDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlGdHNaVzVuZEdnOUoyeHZibWNuWFNBdElIUm9aU0JzWlc1bmRHZ2diMllnZEdobElIZGxaV3RrWVhrZ2NtVndjbVZ6Wlc1MFlYUnBiMjRzSUhOMVkyZ2dZWE1nWENKdVlYSnliM2RjSWl3Z1hDSnphRzl5ZEZ3aUxDQmNJbXh2Ym1kY0lpNWNiaUFnSUNvZ1FIQmhjbUZ0SUh0UFltcGxZM1I5SUc5d2RITWdMU0J2Y0hScGIyNXpYRzRnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCYmIzQjBjeTVzYjJOaGJHVmRJQzBnZEdobElHeHZZMkZzWlNCamIyUmxYRzRnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCYmIzQjBjeTV1ZFcxaVpYSnBibWRUZVhOMFpXMDliblZzYkYwZ0xTQjBhR1VnYm5WdFltVnlhVzVuSUhONWMzUmxiVnh1SUNBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ1cyOXdkSE11Ykc5alQySnFQVzUxYkd4ZElDMGdZVzRnWlhocGMzUnBibWNnYkc5allXeGxJRzlpYW1WamRDQjBieUIxYzJWY2JpQWdJQ29nUUdWNFlXMXdiR1VnU1c1bWJ5NTNaV1ZyWkdGNWN5Z3BXekJkSUM4dlBUNGdKMDF2Ym1SaGVTZGNiaUFnSUNvZ1FHVjRZVzF3YkdVZ1NXNW1ieTUzWldWclpHRjVjeWduYzJodmNuUW5LVnN3WFNBdkx6MCtJQ2ROYjI0blhHNGdJQ0FxSUVCbGVHRnRjR3hsSUVsdVptOHVkMlZsYTJSaGVYTW9KM05vYjNKMEp5d2dleUJzYjJOaGJHVTZJQ2RtY2kxRFFTY2dmU2xiTUYwZ0x5ODlQaUFuYkhWdUxpZGNiaUFnSUNvZ1FHVjRZVzF3YkdVZ1NXNW1ieTUzWldWclpHRjVjeWduYzJodmNuUW5MQ0I3SUd4dlkyRnNaVG9nSjJGeUp5QjlLVnN3WFNBdkx6MCtJQ2RjZFRBMk1qZGNkVEEyTkRSY2RUQTJNamRjZFRBMk1rSmNkVEEyTkRaY2RUQTJORUZjZFRBMk5EWW5YRzRnSUNBcUlFQnlaWFIxY200Z2UwRnljbUY1ZlZ4dUlDQWdLaTljYmlBZ2MzUmhkR2xqSUhkbFpXdGtZWGx6S0d4bGJtZDBhQ0E5SUZ3aWJHOXVaMXdpTENCN0lHeHZZMkZzWlNBOUlHNTFiR3dzSUc1MWJXSmxjbWx1WjFONWMzUmxiU0E5SUc1MWJHd3NJR3h2WTA5aWFpQTlJRzUxYkd3Z2ZTQTlJSHQ5S1NCN1hHNGdJQ0FnY21WMGRYSnVJQ2hzYjJOUFltb2dmSHdnVEc5allXeGxMbU55WldGMFpTaHNiMk5oYkdVc0lHNTFiV0psY21sdVoxTjVjM1JsYlN3Z2JuVnNiQ2twTG5kbFpXdGtZWGx6S0d4bGJtZDBhQ2s3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1VtVjBkWEp1SUdGdUlHRnljbUY1SUc5bUlHWnZjbTFoZENCM1pXVnJJRzVoYldWekxseHVJQ0FnS2lCR2IzSnRZWFFnZDJWbGEyUmhlWE1nWkdsbVptVnlJR1p5YjIwZ2MzUmhibVJoYkc5dVpTQjNaV1ZyWkdGNWN5QnBiaUIwYUdGMElIUm9aWGtuY21VZ2JXVmhiblFnZEc4Z1lYQndaV0Z5SUc1bGVIUWdkRzhnYlc5eVpTQmtZWFJsSUdsdVptOXliV0YwYVc5dUxpQkpiaUJ6YjIxbElHeGhibWQxWVdkbGN5d2dkR2hoZEZ4dUlDQWdLaUJqYUdGdVoyVnpJSFJvWlNCemRISnBibWN1WEc0Z0lDQXFJRk5sWlNCN1FHeHBibXNnU1c1bWJ5TjNaV1ZyWkdGNWMzMWNiaUFnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUZ0c1pXNW5kR2c5SjJ4dmJtY25YU0F0SUhSb1pTQnNaVzVuZEdnZ2IyWWdkR2hsSUcxdmJuUm9JSEpsY0hKbGMyVnVkR0YwYVc5dUxDQnpkV05vSUdGeklGd2libUZ5Y205M1hDSXNJRndpYzJodmNuUmNJaXdnWENKc2IyNW5YQ0l1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdUMkpxWldOMGZTQnZjSFJ6SUMwZ2IzQjBhVzl1YzF4dUlDQWdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdXMjl3ZEhNdWJHOWpZV3hsUFc1MWJHeGRJQzBnZEdobElHeHZZMkZzWlNCamIyUmxYRzRnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCYmIzQjBjeTV1ZFcxaVpYSnBibWRUZVhOMFpXMDliblZzYkYwZ0xTQjBhR1VnYm5WdFltVnlhVzVuSUhONWMzUmxiVnh1SUNBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ1cyOXdkSE11Ykc5alQySnFQVzUxYkd4ZElDMGdZVzRnWlhocGMzUnBibWNnYkc5allXeGxJRzlpYW1WamRDQjBieUIxYzJWY2JpQWdJQ29nUUhKbGRIVnliaUI3UVhKeVlYbDlYRzRnSUNBcUwxeHVJQ0J6ZEdGMGFXTWdkMlZsYTJSaGVYTkdiM0p0WVhRb1hHNGdJQ0FnYkdWdVozUm9JRDBnWENKc2IyNW5YQ0lzWEc0Z0lDQWdleUJzYjJOaGJHVWdQU0J1ZFd4c0xDQnVkVzFpWlhKcGJtZFRlWE4wWlcwZ1BTQnVkV3hzTENCc2IyTlBZbW9nUFNCdWRXeHNJSDBnUFNCN2ZWeHVJQ0FwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdLR3h2WTA5aWFpQjhmQ0JNYjJOaGJHVXVZM0psWVhSbEtHeHZZMkZzWlN3Z2JuVnRZbVZ5YVc1blUzbHpkR1Z0TENCdWRXeHNLU2t1ZDJWbGEyUmhlWE1vYkdWdVozUm9MQ0IwY25WbEtUdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJTWlhSMWNtNGdZVzRnWVhKeVlYa2diMllnYldWeWFXUnBaVzF6TGx4dUlDQWdLaUJBY0dGeVlXMGdlMDlpYW1WamRIMGdiM0IwY3lBdElHOXdkR2x2Ym5OY2JpQWdJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJRnR2Y0hSekxteHZZMkZzWlYwZ0xTQjBhR1VnYkc5allXeGxJR052WkdWY2JpQWdJQ29nUUdWNFlXMXdiR1VnU1c1bWJ5NXRaWEpwWkdsbGJYTW9LU0F2THowK0lGc2dKMEZOSnl3Z0oxQk5KeUJkWEc0Z0lDQXFJRUJsZUdGdGNHeGxJRWx1Wm04dWJXVnlhV1JwWlcxektIc2diRzlqWVd4bE9pQW5iWGtuSUgwcElDOHZQVDRnV3lBblhIVXhNREUwWEhVeE1ETTJYSFV4TURFMFhIVXhNREF3WEhVeE1ETkJKeXdnSjF4MU1UQXdRVngxTVRBeE5GeDFNVEF6TVNjZ1hWeHVJQ0FnS2lCQWNtVjBkWEp1SUh0QmNuSmhlWDFjYmlBZ0lDb3ZYRzRnSUhOMFlYUnBZeUJ0WlhKcFpHbGxiWE1vZXlCc2IyTmhiR1VnUFNCdWRXeHNJSDBnUFNCN2ZTa2dlMXh1SUNBZ0lISmxkSFZ5YmlCTWIyTmhiR1V1WTNKbFlYUmxLR3h2WTJGc1pTa3ViV1Z5YVdScFpXMXpLQ2s3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1VtVjBkWEp1SUdGdUlHRnljbUY1SUc5bUlHVnlZWE1zSUhOMVkyZ2dZWE1nV3lkQ1F5Y3NJQ2RCUkNkZExpQlVhR1VnYkc5allXeGxJR05oYmlCaVpTQnpjR1ZqYVdacFpXUXNJR0oxZENCMGFHVWdZMkZzWlc1a1lYSWdjM2x6ZEdWdElHbHpJR0ZzZDJGNWN5QkhjbVZuYjNKcFlXNHVYRzRnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCYmJHVnVaM1JvUFNkemFHOXlkQ2RkSUMwZ2RHaGxJR3hsYm1kMGFDQnZaaUIwYUdVZ1pYSmhJSEpsY0hKbGMyVnVkR0YwYVc5dUxDQnpkV05vSUdGeklGd2ljMmh2Y25SY0lpQnZjaUJjSW14dmJtZGNJaTVjYmlBZ0lDb2dRSEJoY21GdElIdFBZbXBsWTNSOUlHOXdkSE1nTFNCdmNIUnBiMjV6WEc0Z0lDQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQmJiM0IwY3k1c2IyTmhiR1ZkSUMwZ2RHaGxJR3h2WTJGc1pTQmpiMlJsWEc0Z0lDQXFJRUJsZUdGdGNHeGxJRWx1Wm04dVpYSmhjeWdwSUM4dlBUNGdXeUFuUWtNbkxDQW5RVVFuSUYxY2JpQWdJQ29nUUdWNFlXMXdiR1VnU1c1bWJ5NWxjbUZ6S0Nkc2IyNW5KeWtnTHk4OVBpQmJJQ2RDWldadmNtVWdRMmh5YVhOMEp5d2dKMEZ1Ym04Z1JHOXRhVzVwSnlCZFhHNGdJQ0FxSUVCbGVHRnRjR3hsSUVsdVptOHVaWEpoY3lnbmJHOXVaeWNzSUhzZ2JHOWpZV3hsT2lBblpuSW5JSDBwSUM4dlBUNGdXeUFuWVhaaGJuUWdTbHgxTURCRk9YTjFjeTFEYUhKcGMzUW5MQ0FuWVhCeVhIVXdNRVU0Y3lCS1hIVXdNRVU1YzNWekxVTm9jbWx6ZENjZ1hWeHVJQ0FnS2lCQWNtVjBkWEp1SUh0QmNuSmhlWDFjYmlBZ0lDb3ZYRzRnSUhOMFlYUnBZeUJsY21GektHeGxibWQwYUNBOUlGd2ljMmh2Y25SY0lpd2dleUJzYjJOaGJHVWdQU0J1ZFd4c0lIMGdQU0I3ZlNrZ2UxeHVJQ0FnSUhKbGRIVnliaUJNYjJOaGJHVXVZM0psWVhSbEtHeHZZMkZzWlN3Z2JuVnNiQ3dnWENKbmNtVm5iM0o1WENJcExtVnlZWE1vYkdWdVozUm9LVHRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCU1pYUjFjbTRnZEdobElITmxkQ0J2WmlCaGRtRnBiR0ZpYkdVZ1ptVmhkSFZ5WlhNZ2FXNGdkR2hwY3lCbGJuWnBjbTl1YldWdWRDNWNiaUFnSUNvZ1UyOXRaU0JtWldGMGRYSmxjeUJ2WmlCTWRYaHZiaUJoY21VZ2JtOTBJR0YyWVdsc1lXSnNaU0JwYmlCaGJHd2daVzUyYVhKdmJtMWxiblJ6TGlCR2IzSWdaWGhoYlhCc1pTd2diMjRnYjJ4a1pYSWdZbkp2ZDNObGNuTXNJSEpsYkdGMGFYWmxJSFJwYldVZ1ptOXliV0YwZEdsdVp5QnpkWEJ3YjNKMElHbHpJRzV2ZENCaGRtRnBiR0ZpYkdVdUlGVnpaU0IwYUdseklHWjFibU4wYVc5dUlIUnZJR1pwWjNWeVpTQnZkWFFnYVdZZ2RHaGhkQ2R6SUhSb1pTQmpZWE5sTGx4dUlDQWdLaUJMWlhsek9seHVJQ0FnS2lBcUlHQnlaV3hoZEdsMlpXQTZJSGRvWlhSb1pYSWdkR2hwY3lCbGJuWnBjbTl1YldWdWRDQnpkWEJ3YjNKMGN5QnlaV3hoZEdsMlpTQjBhVzFsSUdadmNtMWhkSFJwYm1kY2JpQWdJQ29nUUdWNFlXMXdiR1VnU1c1bWJ5NW1aV0YwZFhKbGN5Z3BJQzh2UFQ0Z2V5QnlaV3hoZEdsMlpUb2dabUZzYzJVZ2ZWeHVJQ0FnS2lCQWNtVjBkWEp1SUh0UFltcGxZM1I5WEc0Z0lDQXFMMXh1SUNCemRHRjBhV01nWm1WaGRIVnlaWE1vS1NCN1hHNGdJQ0FnY21WMGRYSnVJSHNnY21Wc1lYUnBkbVU2SUdoaGMxSmxiR0YwYVhabEtDa2dmVHRjYmlBZ2ZWeHVmVnh1SWl3Z0ltbHRjRzl5ZENCRWRYSmhkR2x2YmlCbWNtOXRJRndpTGk0dlpIVnlZWFJwYjI0dWFuTmNJanRjYmx4dVpuVnVZM1JwYjI0Z1pHRjVSR2xtWmlobFlYSnNhV1Z5TENCc1lYUmxjaWtnZTF4dUlDQmpiMjV6ZENCMWRHTkVZWGxUZEdGeWRDQTlJQ2hrZENrZ1BUNGdaSFF1ZEc5VlZFTW9NQ3dnZXlCclpXVndURzlqWVd4VWFXMWxPaUIwY25WbElIMHBMbk4wWVhKMFQyWW9YQ0prWVhsY0lpa3VkbUZzZFdWUFppZ3BMRnh1SUNBZ0lHMXpJRDBnZFhSalJHRjVVM1JoY25Rb2JHRjBaWElwSUMwZ2RYUmpSR0Y1VTNSaGNuUW9aV0Z5YkdsbGNpazdYRzRnSUhKbGRIVnliaUJOWVhSb0xtWnNiMjl5S0VSMWNtRjBhVzl1TG1aeWIyMU5hV3hzYVhNb2JYTXBMbUZ6S0Z3aVpHRjVjMXdpS1NrN1hHNTlYRzVjYm1aMWJtTjBhVzl1SUdocFoyaFBjbVJsY2tScFptWnpLR04xY25OdmNpd2diR0YwWlhJc0lIVnVhWFJ6S1NCN1hHNGdJR052Ym5OMElHUnBabVpsY25NZ1BTQmJYRzRnSUNBZ1cxd2llV1ZoY25OY0lpd2dLR0VzSUdJcElEMCtJR0l1ZVdWaGNpQXRJR0V1ZVdWaGNsMHNYRzRnSUNBZ1cxd2ljWFZoY25SbGNuTmNJaXdnS0dFc0lHSXBJRDArSUdJdWNYVmhjblJsY2lBdElHRXVjWFZoY25SbGNsMHNYRzRnSUNBZ1cxd2liVzl1ZEdoelhDSXNJQ2hoTENCaUtTQTlQaUJpTG0xdmJuUm9JQzBnWVM1dGIyNTBhQ0FySUNoaUxubGxZWElnTFNCaExubGxZWElwSUNvZ01USmRMRnh1SUNBZ0lGdGNiaUFnSUNBZ0lGd2lkMlZsYTNOY0lpeGNiaUFnSUNBZ0lDaGhMQ0JpS1NBOVBpQjdYRzRnSUNBZ0lDQWdJR052Ym5OMElHUmhlWE1nUFNCa1lYbEVhV1ptS0dFc0lHSXBPMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdLR1JoZVhNZ0xTQW9aR0Y1Y3lBbElEY3BLU0F2SURjN1hHNGdJQ0FnSUNCOUxGeHVJQ0FnSUYwc1hHNGdJQ0FnVzF3aVpHRjVjMXdpTENCa1lYbEVhV1ptWFN4Y2JpQWdYVHRjYmx4dUlDQmpiMjV6ZENCeVpYTjFiSFJ6SUQwZ2UzMDdYRzRnSUd4bGRDQnNiM2RsYzNSUGNtUmxjaXdnYUdsbmFGZGhkR1Z5TzF4dVhHNGdJR1p2Y2lBb1kyOXVjM1FnVzNWdWFYUXNJR1JwWm1abGNsMGdiMllnWkdsbVptVnljeWtnZTF4dUlDQWdJR2xtSUNoMWJtbDBjeTVwYm1SbGVFOW1LSFZ1YVhRcElENDlJREFwSUh0Y2JpQWdJQ0FnSUd4dmQyVnpkRTl5WkdWeUlEMGdkVzVwZER0Y2JseHVJQ0FnSUNBZ2JHVjBJR1JsYkhSaElEMGdaR2xtWm1WeUtHTjFjbk52Y2l3Z2JHRjBaWElwTzF4dUlDQWdJQ0FnYUdsbmFGZGhkR1Z5SUQwZ1kzVnljMjl5TG5Cc2RYTW9leUJiZFc1cGRGMDZJR1JsYkhSaElIMHBPMXh1WEc0Z0lDQWdJQ0JwWmlBb2FHbG5hRmRoZEdWeUlENGdiR0YwWlhJcElIdGNiaUFnSUNBZ0lDQWdZM1Z5YzI5eUlEMGdZM1Z5YzI5eUxuQnNkWE1vZXlCYmRXNXBkRjA2SUdSbGJIUmhJQzBnTVNCOUtUdGNiaUFnSUNBZ0lDQWdaR1ZzZEdFZ0xUMGdNVHRjYmlBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJR04xY25OdmNpQTlJR2hwWjJoWFlYUmxjanRjYmlBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnY21WemRXeDBjMXQxYm1sMFhTQTlJR1JsYkhSaE8xeHVJQ0FnSUgxY2JpQWdmVnh1WEc0Z0lISmxkSFZ5YmlCYlkzVnljMjl5TENCeVpYTjFiSFJ6TENCb2FXZG9WMkYwWlhJc0lHeHZkMlZ6ZEU5eVpHVnlYVHRjYm4xY2JseHVaWGh3YjNKMElHUmxabUYxYkhRZ1puVnVZM1JwYjI0Z0tHVmhjbXhwWlhJc0lHeGhkR1Z5TENCMWJtbDBjeXdnYjNCMGN5a2dlMXh1SUNCc1pYUWdXMk4xY25OdmNpd2djbVZ6ZFd4MGN5d2dhR2xuYUZkaGRHVnlMQ0JzYjNkbGMzUlBjbVJsY2wwZ1BTQm9hV2RvVDNKa1pYSkVhV1ptY3lobFlYSnNhV1Z5TENCc1lYUmxjaXdnZFc1cGRITXBPMXh1WEc0Z0lHTnZibk4wSUhKbGJXRnBibWx1WjAxcGJHeHBjeUE5SUd4aGRHVnlJQzBnWTNWeWMyOXlPMXh1WEc0Z0lHTnZibk4wSUd4dmQyVnlUM0prWlhKVmJtbDBjeUE5SUhWdWFYUnpMbVpwYkhSbGNpaGNiaUFnSUNBb2RTa2dQVDRnVzF3aWFHOTFjbk5jSWl3Z1hDSnRhVzUxZEdWelhDSXNJRndpYzJWamIyNWtjMXdpTENCY0ltMXBiR3hwYzJWamIyNWtjMXdpWFM1cGJtUmxlRTltS0hVcElENDlJREJjYmlBZ0tUdGNibHh1SUNCcFppQW9iRzkzWlhKUGNtUmxjbFZ1YVhSekxteGxibWQwYUNBOVBUMGdNQ2tnZTF4dUlDQWdJR2xtSUNob2FXZG9WMkYwWlhJZ1BDQnNZWFJsY2lrZ2UxeHVJQ0FnSUNBZ2FHbG5hRmRoZEdWeUlEMGdZM1Z5YzI5eUxuQnNkWE1vZXlCYmJHOTNaWE4wVDNKa1pYSmRPaUF4SUgwcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUdsbUlDaG9hV2RvVjJGMFpYSWdJVDA5SUdOMWNuTnZjaWtnZTF4dUlDQWdJQ0FnY21WemRXeDBjMXRzYjNkbGMzUlBjbVJsY2wwZ1BTQW9jbVZ6ZFd4MGMxdHNiM2RsYzNSUGNtUmxjbDBnZkh3Z01Da2dLeUJ5WlcxaGFXNXBibWROYVd4c2FYTWdMeUFvYUdsbmFGZGhkR1Z5SUMwZ1kzVnljMjl5S1R0Y2JpQWdJQ0I5WEc0Z0lIMWNibHh1SUNCamIyNXpkQ0JrZFhKaGRHbHZiaUE5SUVSMWNtRjBhVzl1TG1aeWIyMVBZbXBsWTNRb2NtVnpkV3gwY3l3Z2IzQjBjeWs3WEc1Y2JpQWdhV1lnS0d4dmQyVnlUM0prWlhKVmJtbDBjeTVzWlc1bmRHZ2dQaUF3S1NCN1hHNGdJQ0FnY21WMGRYSnVJRVIxY21GMGFXOXVMbVp5YjIxTmFXeHNhWE1vY21WdFlXbHVhVzVuVFdsc2JHbHpMQ0J2Y0hSektWeHVJQ0FnSUNBZ0xuTm9hV1owVkc4b0xpNHViRzkzWlhKUGNtUmxjbFZ1YVhSektWeHVJQ0FnSUNBZ0xuQnNkWE1vWkhWeVlYUnBiMjRwTzF4dUlDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUhKbGRIVnliaUJrZFhKaGRHbHZianRjYmlBZ2ZWeHVmVnh1SWl3Z0ltTnZibk4wSUc1MWJXSmxjbWx1WjFONWMzUmxiWE1nUFNCN1hHNGdJR0Z5WVdJNklGd2lXMXhjZFRBMk5qQXRYRngxTURZMk9WMWNJaXhjYmlBZ1lYSmhZbVY0ZERvZ1hDSmJYRngxTURaR01DMWNYSFV3TmtZNVhWd2lMRnh1SUNCaVlXeHBPaUJjSWx0Y1hIVXhRalV3TFZ4Y2RURkNOVGxkWENJc1hHNGdJR0psYm1jNklGd2lXMXhjZFRBNVJUWXRYRngxTURsRlJsMWNJaXhjYmlBZ1pHVjJZVG9nWENKYlhGeDFNRGsyTmkxY1hIVXdPVFpHWFZ3aUxGeHVJQ0JtZFd4c2QybGtaVG9nWENKYlhGeDFSa1l4TUMxY1hIVkdSakU1WFZ3aUxGeHVJQ0JuZFdweU9pQmNJbHRjWEhVd1FVVTJMVnhjZFRCQlJVWmRYQ0lzWEc0Z0lHaGhibWxrWldNNklGd2lXMXgxTXpBd04zeGNkVFJGTURCOFhIVTBSVGhEZkZ4MU5FVXdPWHhjZFRVMlJFSjhYSFUwUlRrMGZGeDFOVEUyUkh4Y2RUUkZNRE44WEhVMU1UWkNmRngxTkVVMVJGMWNJaXhjYmlBZ2EyaHRjam9nWENKYlhGeDFNVGRGTUMxY1hIVXhOMFU1WFZ3aUxGeHVJQ0JyYm1SaE9pQmNJbHRjWEhVd1EwVTJMVnhjZFRCRFJVWmRYQ0lzWEc0Z0lHeGhiMjg2SUZ3aVcxeGNkVEJGUkRBdFhGeDFNRVZFT1YxY0lpeGNiaUFnYkdsdFlqb2dYQ0piWEZ4MU1UazBOaTFjWEhVeE9UUkdYVndpTEZ4dUlDQnRiSGx0T2lCY0lsdGNYSFV3UkRZMkxWeGNkVEJFTmtaZFhDSXNYRzRnSUcxdmJtYzZJRndpVzF4Y2RURTRNVEF0WEZ4MU1UZ3hPVjFjSWl4Y2JpQWdiWGx0Y2pvZ1hDSmJYRngxTVRBME1DMWNYSFV4TURRNVhWd2lMRnh1SUNCdmNubGhPaUJjSWx0Y1hIVXdRalkyTFZ4Y2RUQkNOa1pkWENJc1hHNGdJSFJoYld4a1pXTTZJRndpVzF4Y2RUQkNSVFl0WEZ4MU1FSkZSbDFjSWl4Y2JpQWdkR1ZzZFRvZ1hDSmJYRngxTUVNMk5pMWNYSFV3UXpaR1hWd2lMRnh1SUNCMGFHRnBPaUJjSWx0Y1hIVXdSVFV3TFZ4Y2RUQkZOVGxkWENJc1hHNGdJSFJwWW5RNklGd2lXMXhjZFRCR01qQXRYRngxTUVZeU9WMWNJaXhjYmlBZ2JHRjBiam9nWENKY1hGeGNaRndpTEZ4dWZUdGNibHh1WTI5dWMzUWdiblZ0WW1WeWFXNW5VM2x6ZEdWdGMxVlVSakUySUQwZ2UxeHVJQ0JoY21GaU9pQmJNVFl6TWl3Z01UWTBNVjBzWEc0Z0lHRnlZV0psZUhRNklGc3hOemMyTENBeE56ZzFYU3hjYmlBZ1ltRnNhVG9nV3pZNU9USXNJRGN3TURGZExGeHVJQ0JpWlc1bk9pQmJNalV6TkN3Z01qVTBNMTBzWEc0Z0lHUmxkbUU2SUZzeU5EQTJMQ0F5TkRFMVhTeGNiaUFnWm5Wc2JIZHBaR1U2SUZzMk5USTVOaXdnTmpVek1ETmRMRnh1SUNCbmRXcHlPaUJiTWpjNU1Dd2dNamM1T1Ywc1hHNGdJR3RvYlhJNklGczJNVEV5TENBMk1USXhYU3hjYmlBZ2EyNWtZVG9nV3pNek1ESXNJRE16TVRGZExGeHVJQ0JzWVc5dk9pQmJNemM1TWl3Z016Z3dNVjBzWEc0Z0lHeHBiV0k2SUZzMk5EY3dMQ0EyTkRjNVhTeGNiaUFnYld4NWJUb2dXek0wTXpBc0lETTBNemxkTEZ4dUlDQnRiMjVuT2lCYk5qRTJNQ3dnTmpFMk9WMHNYRzRnSUcxNWJYSTZJRnMwTVRZd0xDQTBNVFk1WFN4Y2JpQWdiM0o1WVRvZ1d6STVNVGdzSURJNU1qZGRMRnh1SUNCMFlXMXNaR1ZqT2lCYk16QTBOaXdnTXpBMU5WMHNYRzRnSUhSbGJIVTZJRnN6TVRjMExDQXpNVGd6WFN4Y2JpQWdkR2hoYVRvZ1d6TTJOalFzSURNMk56TmRMRnh1SUNCMGFXSjBPaUJiTXpnM01pd2dNemc0TVYwc1hHNTlPMXh1WEc1amIyNXpkQ0JvWVc1cFpHVmpRMmhoY25NZ1BTQnVkVzFpWlhKcGJtZFRlWE4wWlcxekxtaGhibWxrWldNdWNtVndiR0ZqWlNndlcxeGNXM3hjWEYxZEwyY3NJRndpWENJcExuTndiR2wwS0Z3aVhDSXBPMXh1WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnY0dGeWMyVkVhV2RwZEhNb2MzUnlLU0I3WEc0Z0lHeGxkQ0IyWVd4MVpTQTlJSEJoY25ObFNXNTBLSE4wY2l3Z01UQXBPMXh1SUNCcFppQW9hWE5PWVU0b2RtRnNkV1VwS1NCN1hHNGdJQ0FnZG1Gc2RXVWdQU0JjSWx3aU8xeHVJQ0FnSUdadmNpQW9iR1YwSUdrZ1BTQXdPeUJwSUR3Z2MzUnlMbXhsYm1kMGFEc2dhU3NyS1NCN1hHNGdJQ0FnSUNCamIyNXpkQ0JqYjJSbElEMGdjM1J5TG1Ob1lYSkRiMlJsUVhRb2FTazdYRzVjYmlBZ0lDQWdJR2xtSUNoemRISmJhVjB1YzJWaGNtTm9LRzUxYldKbGNtbHVaMU41YzNSbGJYTXVhR0Z1YVdSbFl5a2dJVDA5SUMweEtTQjdYRzRnSUNBZ0lDQWdJSFpoYkhWbElDczlJR2hoYm1sa1pXTkRhR0Z5Y3k1cGJtUmxlRTltS0hOMGNsdHBYU2s3WEc0Z0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0JtYjNJZ0tHTnZibk4wSUd0bGVTQnBiaUJ1ZFcxaVpYSnBibWRUZVhOMFpXMXpWVlJHTVRZcElIdGNiaUFnSUNBZ0lDQWdJQ0JqYjI1emRDQmJiV2x1TENCdFlYaGRJRDBnYm5WdFltVnlhVzVuVTNsemRHVnRjMVZVUmpFMlcydGxlVjA3WEc0Z0lDQWdJQ0FnSUNBZ2FXWWdLR052WkdVZ1BqMGdiV2x1SUNZbUlHTnZaR1VnUEQwZ2JXRjRLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjJZV3gxWlNBclBTQmpiMlJsSUMwZ2JXbHVPMXh1SUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNtNGdjR0Z5YzJWSmJuUW9kbUZzZFdVc0lERXdLVHRjYmlBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkbUZzZFdVN1hHNGdJSDFjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlHUnBaMmwwVW1WblpYZ29leUJ1ZFcxaVpYSnBibWRUZVhOMFpXMGdmU3dnWVhCd1pXNWtJRDBnWENKY0lpa2dlMXh1SUNCeVpYUjFjbTRnYm1WM0lGSmxaMFY0Y0NoZ0pIdHVkVzFpWlhKcGJtZFRlWE4wWlcxelcyNTFiV0psY21sdVoxTjVjM1JsYlNCOGZDQmNJbXhoZEc1Y0lsMTlKSHRoY0hCbGJtUjlZQ2s3WEc1OVhHNGlMQ0FpYVcxd2IzSjBJSHNnY0dGeWMyVk5hV3hzYVhNc0lHbHpWVzVrWldacGJtVmtMQ0IxYm5SeWRXNWpZWFJsV1dWaGNpd2djMmxuYm1Wa1QyWm1jMlYwTENCb1lYTlBkMjVRY205d1pYSjBlU0I5SUdaeWIyMGdYQ0l1TDNWMGFXd3Vhbk5jSWp0Y2JtbHRjRzl5ZENCR2IzSnRZWFIwWlhJZ1puSnZiU0JjSWk0dlptOXliV0YwZEdWeUxtcHpYQ0k3WEc1cGJYQnZjblFnUm1sNFpXUlBabVp6WlhSYWIyNWxJR1p5YjIwZ1hDSXVMaTk2YjI1bGN5OW1hWGhsWkU5bVpuTmxkRnB2Ym1VdWFuTmNJanRjYm1sdGNHOXlkQ0JKUVU1QldtOXVaU0JtY205dElGd2lMaTR2ZW05dVpYTXZTVUZPUVZwdmJtVXVhbk5jSWp0Y2JtbHRjRzl5ZENCRVlYUmxWR2x0WlNCbWNtOXRJRndpTGk0dlpHRjBaWFJwYldVdWFuTmNJanRjYm1sdGNHOXlkQ0I3SUdScFoybDBVbVZuWlhnc0lIQmhjbk5sUkdsbmFYUnpJSDBnWm5KdmJTQmNJaTR2WkdsbmFYUnpMbXB6WENJN1hHNXBiWEJ2Y25RZ2V5QkRiMjVtYkdsamRHbHVaMU53WldOcFptbGpZWFJwYjI1RmNuSnZjaUI5SUdaeWIyMGdYQ0l1TGk5bGNuSnZjbk11YW5OY0lqdGNibHh1WTI5dWMzUWdUVWxUVTBsT1IxOUdWRkFnUFNCY0ltMXBjM05wYm1jZ1NXNTBiQzVFWVhSbFZHbHRaVVp2Y20xaGRDNW1iM0p0WVhSVWIxQmhjblJ6SUhOMWNIQnZjblJjSWp0Y2JseHVablZ1WTNScGIyNGdhVzUwVlc1cGRDaHlaV2RsZUN3Z2NHOXpkQ0E5SUNocEtTQTlQaUJwS1NCN1hHNGdJSEpsZEhWeWJpQjdJSEpsWjJWNExDQmtaWE5sY2pvZ0tGdHpYU2tnUFQ0Z2NHOXpkQ2h3WVhKelpVUnBaMmwwY3loektTa2dmVHRjYm4xY2JseHVZMjl1YzNRZ1RrSlRVQ0E5SUZOMGNtbHVaeTVtY205dFEyaGhja052WkdVb01UWXdLVHRjYm1OdmJuTjBJSE53WVdObFQzSk9RbE5RSUQwZ1lGc2dKSHRPUWxOUWZWMWdPMXh1WTI5dWMzUWdjM0JoWTJWUGNrNUNVMUJTWldkRmVIQWdQU0J1WlhjZ1VtVm5SWGh3S0hOd1lXTmxUM0pPUWxOUUxDQmNJbWRjSWlrN1hHNWNibVoxYm1OMGFXOXVJR1pwZUV4cGMzUlNaV2RsZUNoektTQjdYRzRnSUM4dklHMWhhMlVnWkc5MGN5QnZjSFJwYjI1aGJDQmhibVFnWVd4emJ5QnRZV3RsSUhSb1pXMGdiR2wwWlhKaGJGeHVJQ0F2THlCdFlXdGxJSE53WVdObElHRnVaQ0J1YjI0Z1luSmxZV3RoWW14bElITndZV05sSUdOb1lYSmhZM1JsY25NZ2FXNTBaWEpqYUdGdVoyVmhZbXhsWEc0Z0lISmxkSFZ5YmlCekxuSmxjR3hoWTJVb0wxeGNMaTluTENCY0lseGNYRnd1UDF3aUtTNXlaWEJzWVdObEtITndZV05sVDNKT1FsTlFVbVZuUlhod0xDQnpjR0ZqWlU5eVRrSlRVQ2s3WEc1OVhHNWNibVoxYm1OMGFXOXVJSE4wY21sd1NXNXpaVzV6YVhScGRtbDBhV1Z6S0hNcElIdGNiaUFnY21WMGRYSnVJSE5jYmlBZ0lDQXVjbVZ3YkdGalpTZ3ZYRnd1TDJjc0lGd2lYQ0lwSUM4dklHbG5ibTl5WlNCa2IzUnpJSFJvWVhRZ2QyVnlaU0J0WVdSbElHOXdkR2x2Ym1Gc1hHNGdJQ0FnTG5KbGNHeGhZMlVvYzNCaFkyVlBjazVDVTFCU1pXZEZlSEFzSUZ3aUlGd2lLU0F2THlCcGJuUmxjbU5vWVc1blpTQnpjR0ZqWlNCaGJtUWdibUp6Y0Z4dUlDQWdJQzUwYjB4dmQyVnlRMkZ6WlNncE8xeHVmVnh1WEc1bWRXNWpkR2x2YmlCdmJtVlBaaWh6ZEhKcGJtZHpMQ0J6ZEdGeWRFbHVaR1Y0S1NCN1hHNGdJR2xtSUNoemRISnBibWR6SUQwOVBTQnVkV3hzS1NCN1hHNGdJQ0FnY21WMGRYSnVJRzUxYkd3N1hHNGdJSDBnWld4elpTQjdYRzRnSUNBZ2NtVjBkWEp1SUh0Y2JpQWdJQ0FnSUhKbFoyVjRPaUJTWldkRmVIQW9jM1J5YVc1bmN5NXRZWEFvWm1sNFRHbHpkRkpsWjJWNEtTNXFiMmx1S0Z3aWZGd2lLU2tzWEc0Z0lDQWdJQ0JrWlhObGNqb2dLRnR6WFNrZ1BUNWNiaUFnSUNBZ0lDQWdjM1J5YVc1bmN5NW1hVzVrU1c1a1pYZ29LR2twSUQwK0lITjBjbWx3U1c1elpXNXphWFJwZG1sMGFXVnpLSE1wSUQwOVBTQnpkSEpwY0VsdWMyVnVjMmwwYVhacGRHbGxjeWhwS1NrZ0t5QnpkR0Z5ZEVsdVpHVjRMRnh1SUNBZ0lIMDdYRzRnSUgxY2JuMWNibHh1Wm5WdVkzUnBiMjRnYjJabWMyVjBLSEpsWjJWNExDQm5jbTkxY0hNcElIdGNiaUFnY21WMGRYSnVJSHNnY21WblpYZ3NJR1JsYzJWeU9pQW9XeXdnYUN3Z2JWMHBJRDArSUhOcFoyNWxaRTltWm5ObGRDaG9MQ0J0S1N3Z1ozSnZkWEJ6SUgwN1hHNTlYRzVjYm1aMWJtTjBhVzl1SUhOcGJYQnNaU2h5WldkbGVDa2dlMXh1SUNCeVpYUjFjbTRnZXlCeVpXZGxlQ3dnWkdWelpYSTZJQ2hiYzEwcElEMCtJSE1nZlR0Y2JuMWNibHh1Wm5WdVkzUnBiMjRnWlhOallYQmxWRzlyWlc0b2RtRnNkV1VwSUh0Y2JpQWdjbVYwZFhKdUlIWmhiSFZsTG5KbGNHeGhZMlVvTDF0Y1hDMWNYRnRjWEYxN2ZTZ3BLaXMvTGl4Y1hGeGNYRnhlSkh3alhGeHpYUzluTENCY0lseGNYRndrSmx3aUtUdGNibjFjYmx4dVpuVnVZM1JwYjI0Z2RXNXBkRVp2Y2xSdmEyVnVLSFJ2YTJWdUxDQnNiMk1wSUh0Y2JpQWdZMjl1YzNRZ2IyNWxJRDBnWkdsbmFYUlNaV2RsZUNoc2IyTXBMRnh1SUNBZ0lIUjNieUE5SUdScFoybDBVbVZuWlhnb2JHOWpMQ0JjSW5zeWZWd2lLU3hjYmlBZ0lDQjBhSEpsWlNBOUlHUnBaMmwwVW1WblpYZ29iRzlqTENCY0luc3pmVndpS1N4Y2JpQWdJQ0JtYjNWeUlEMGdaR2xuYVhSU1pXZGxlQ2hzYjJNc0lGd2llelI5WENJcExGeHVJQ0FnSUhOcGVDQTlJR1JwWjJsMFVtVm5aWGdvYkc5akxDQmNJbnMyZlZ3aUtTeGNiaUFnSUNCdmJtVlBjbFIzYnlBOUlHUnBaMmwwVW1WblpYZ29iRzlqTENCY0luc3hMREo5WENJcExGeHVJQ0FnSUc5dVpWUnZWR2h5WldVZ1BTQmthV2RwZEZKbFoyVjRLR3h2WXl3Z1hDSjdNU3d6ZlZ3aUtTeGNiaUFnSUNCdmJtVlViMU5wZUNBOUlHUnBaMmwwVW1WblpYZ29iRzlqTENCY0luc3hMRFo5WENJcExGeHVJQ0FnSUc5dVpWUnZUbWx1WlNBOUlHUnBaMmwwVW1WblpYZ29iRzlqTENCY0luc3hMRGw5WENJcExGeHVJQ0FnSUhSM2IxUnZSbTkxY2lBOUlHUnBaMmwwVW1WblpYZ29iRzlqTENCY0luc3lMRFI5WENJcExGeHVJQ0FnSUdadmRYSlViMU5wZUNBOUlHUnBaMmwwVW1WblpYZ29iRzlqTENCY0luczBMRFo5WENJcExGeHVJQ0FnSUd4cGRHVnlZV3dnUFNBb2RDa2dQVDRnS0hzZ2NtVm5aWGc2SUZKbFowVjRjQ2hsYzJOaGNHVlViMnRsYmloMExuWmhiQ2twTENCa1pYTmxjam9nS0Z0elhTa2dQVDRnY3l3Z2JHbDBaWEpoYkRvZ2RISjFaU0I5S1N4Y2JpQWdJQ0IxYm1sMFlYUmxJRDBnS0hRcElEMCtJSHRjYmlBZ0lDQWdJR2xtSUNoMGIydGxiaTVzYVhSbGNtRnNLU0I3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJzYVhSbGNtRnNLSFFwTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJQ0FnYzNkcGRHTm9JQ2gwTG5aaGJDa2dlMXh1SUNBZ0lDQWdJQ0F2THlCbGNtRmNiaUFnSUNBZ0lDQWdZMkZ6WlNCY0lrZGNJanBjYmlBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnYjI1bFQyWW9iRzlqTG1WeVlYTW9YQ0p6YUc5eWRGd2lMQ0JtWVd4elpTa3NJREFwTzF4dUlDQWdJQ0FnSUNCallYTmxJRndpUjBkY0lqcGNiaUFnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdiMjVsVDJZb2JHOWpMbVZ5WVhNb1hDSnNiMjVuWENJc0lHWmhiSE5sS1N3Z01DazdYRzRnSUNBZ0lDQWdJQzh2SUhsbFlYSnpYRzRnSUNBZ0lDQWdJR05oYzJVZ1hDSjVYQ0k2WEc0Z0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUdsdWRGVnVhWFFvYjI1bFZHOVRhWGdwTzF4dUlDQWdJQ0FnSUNCallYTmxJRndpZVhsY0lqcGNiaUFnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdhVzUwVlc1cGRDaDBkMjlVYjBadmRYSXNJSFZ1ZEhKMWJtTmhkR1ZaWldGeUtUdGNiaUFnSUNBZ0lDQWdZMkZ6WlNCY0lubDVlWGxjSWpwY2JpQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2FXNTBWVzVwZENobWIzVnlLVHRjYmlBZ0lDQWdJQ0FnWTJGelpTQmNJbmw1ZVhsNVhDSTZYRzRnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJR2x1ZEZWdWFYUW9abTkxY2xSdlUybDRLVHRjYmlBZ0lDQWdJQ0FnWTJGelpTQmNJbmw1ZVhsNWVWd2lPbHh1SUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJwYm5SVmJtbDBLSE5wZUNrN1hHNGdJQ0FnSUNBZ0lDOHZJRzF2Ym5Sb2MxeHVJQ0FnSUNBZ0lDQmpZWE5sSUZ3aVRWd2lPbHh1SUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJwYm5SVmJtbDBLRzl1WlU5eVZIZHZLVHRjYmlBZ0lDQWdJQ0FnWTJGelpTQmNJazFOWENJNlhHNGdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlHbHVkRlZ1YVhRb2RIZHZLVHRjYmlBZ0lDQWdJQ0FnWTJGelpTQmNJazFOVFZ3aU9seHVJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQnZibVZQWmloc2IyTXViVzl1ZEdoektGd2ljMmh2Y25SY0lpd2dkSEoxWlN3Z1ptRnNjMlVwTENBeEtUdGNiaUFnSUNBZ0lDQWdZMkZ6WlNCY0lrMU5UVTFjSWpwY2JpQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2IyNWxUMllvYkc5akxtMXZiblJvY3loY0lteHZibWRjSWl3Z2RISjFaU3dnWm1Gc2MyVXBMQ0F4S1R0Y2JpQWdJQ0FnSUNBZ1kyRnpaU0JjSWt4Y0lqcGNiaUFnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdhVzUwVlc1cGRDaHZibVZQY2xSM2J5azdYRzRnSUNBZ0lDQWdJR05oYzJVZ1hDSk1URndpT2x4dUlDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCcGJuUlZibWwwS0hSM2J5azdYRzRnSUNBZ0lDQWdJR05oYzJVZ1hDSk1URXhjSWpwY2JpQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2IyNWxUMllvYkc5akxtMXZiblJvY3loY0luTm9iM0owWENJc0lHWmhiSE5sTENCbVlXeHpaU2tzSURFcE8xeHVJQ0FnSUNBZ0lDQmpZWE5sSUZ3aVRFeE1URndpT2x4dUlDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCdmJtVlBaaWhzYjJNdWJXOXVkR2h6S0Z3aWJHOXVaMXdpTENCbVlXeHpaU3dnWm1Gc2MyVXBMQ0F4S1R0Y2JpQWdJQ0FnSUNBZ0x5OGdaR0YwWlhOY2JpQWdJQ0FnSUNBZ1kyRnpaU0JjSW1SY0lqcGNiaUFnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdhVzUwVlc1cGRDaHZibVZQY2xSM2J5azdYRzRnSUNBZ0lDQWdJR05oYzJVZ1hDSmtaRndpT2x4dUlDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCcGJuUlZibWwwS0hSM2J5azdYRzRnSUNBZ0lDQWdJQzh2SUc5eVpHbHVZV3h6WEc0Z0lDQWdJQ0FnSUdOaGMyVWdYQ0p2WENJNlhHNGdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlHbHVkRlZ1YVhRb2IyNWxWRzlVYUhKbFpTazdYRzRnSUNBZ0lDQWdJR05oYzJVZ1hDSnZiMjljSWpwY2JpQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2FXNTBWVzVwZENoMGFISmxaU2s3WEc0Z0lDQWdJQ0FnSUM4dklIUnBiV1ZjYmlBZ0lDQWdJQ0FnWTJGelpTQmNJa2hJWENJNlhHNGdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlHbHVkRlZ1YVhRb2RIZHZLVHRjYmlBZ0lDQWdJQ0FnWTJGelpTQmNJa2hjSWpwY2JpQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2FXNTBWVzVwZENodmJtVlBjbFIzYnlrN1hHNGdJQ0FnSUNBZ0lHTmhjMlVnWENKb2FGd2lPbHh1SUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJwYm5SVmJtbDBLSFIzYnlrN1hHNGdJQ0FnSUNBZ0lHTmhjMlVnWENKb1hDSTZYRzRnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJR2x1ZEZWdWFYUW9iMjVsVDNKVWQyOHBPMXh1SUNBZ0lDQWdJQ0JqWVhObElGd2liVzFjSWpwY2JpQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2FXNTBWVzVwZENoMGQyOHBPMXh1SUNBZ0lDQWdJQ0JqWVhObElGd2liVndpT2x4dUlDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCcGJuUlZibWwwS0c5dVpVOXlWSGR2S1R0Y2JpQWdJQ0FnSUNBZ1kyRnpaU0JjSW5GY0lqcGNiaUFnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdhVzUwVlc1cGRDaHZibVZQY2xSM2J5azdYRzRnSUNBZ0lDQWdJR05oYzJVZ1hDSnhjVndpT2x4dUlDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCcGJuUlZibWwwS0hSM2J5azdYRzRnSUNBZ0lDQWdJR05oYzJVZ1hDSnpYQ0k2WEc0Z0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUdsdWRGVnVhWFFvYjI1bFQzSlVkMjhwTzF4dUlDQWdJQ0FnSUNCallYTmxJRndpYzNOY0lqcGNiaUFnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdhVzUwVlc1cGRDaDBkMjhwTzF4dUlDQWdJQ0FnSUNCallYTmxJRndpVTF3aU9seHVJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQnBiblJWYm1sMEtHOXVaVlJ2VkdoeVpXVXBPMXh1SUNBZ0lDQWdJQ0JqWVhObElGd2lVMU5UWENJNlhHNGdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlHbHVkRlZ1YVhRb2RHaHlaV1VwTzF4dUlDQWdJQ0FnSUNCallYTmxJRndpZFZ3aU9seHVJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQnphVzF3YkdVb2IyNWxWRzlPYVc1bEtUdGNiaUFnSUNBZ0lDQWdZMkZ6WlNCY0luVjFYQ0k2WEc0Z0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhOcGJYQnNaU2h2Ym1WUGNsUjNieWs3WEc0Z0lDQWdJQ0FnSUdOaGMyVWdYQ0oxZFhWY0lqcGNiaUFnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdhVzUwVlc1cGRDaHZibVVwTzF4dUlDQWdJQ0FnSUNBdkx5QnRaWEpwWkdsbGJWeHVJQ0FnSUNBZ0lDQmpZWE5sSUZ3aVlWd2lPbHh1SUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJ2Ym1WUFppaHNiMk11YldWeWFXUnBaVzF6S0Nrc0lEQXBPMXh1SUNBZ0lDQWdJQ0F2THlCM1pXVnJXV1ZoY2lBb2F5bGNiaUFnSUNBZ0lDQWdZMkZ6WlNCY0ltdHJhMnRjSWpwY2JpQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2FXNTBWVzVwZENobWIzVnlLVHRjYmlBZ0lDQWdJQ0FnWTJGelpTQmNJbXRyWENJNlhHNGdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlHbHVkRlZ1YVhRb2RIZHZWRzlHYjNWeUxDQjFiblJ5ZFc1allYUmxXV1ZoY2lrN1hHNGdJQ0FnSUNBZ0lDOHZJSGRsWld0T2RXMWlaWElnS0ZjcFhHNGdJQ0FnSUNBZ0lHTmhjMlVnWENKWFhDSTZYRzRnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJR2x1ZEZWdWFYUW9iMjVsVDNKVWQyOHBPMXh1SUNBZ0lDQWdJQ0JqWVhObElGd2lWMWRjSWpwY2JpQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2FXNTBWVzVwZENoMGQyOHBPMXh1SUNBZ0lDQWdJQ0F2THlCM1pXVnJaR0Y1YzF4dUlDQWdJQ0FnSUNCallYTmxJRndpUlZ3aU9seHVJQ0FnSUNBZ0lDQmpZWE5sSUZ3aVkxd2lPbHh1SUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJwYm5SVmJtbDBLRzl1WlNrN1hHNGdJQ0FnSUNBZ0lHTmhjMlVnWENKRlJVVmNJanBjYmlBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnYjI1bFQyWW9iRzlqTG5kbFpXdGtZWGx6S0Z3aWMyaHZjblJjSWl3Z1ptRnNjMlVzSUdaaGJITmxLU3dnTVNrN1hHNGdJQ0FnSUNBZ0lHTmhjMlVnWENKRlJVVkZYQ0k2WEc0Z0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUc5dVpVOW1LR3h2WXk1M1pXVnJaR0Y1Y3loY0lteHZibWRjSWl3Z1ptRnNjMlVzSUdaaGJITmxLU3dnTVNrN1hHNGdJQ0FnSUNBZ0lHTmhjMlVnWENKalkyTmNJanBjYmlBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnYjI1bFQyWW9iRzlqTG5kbFpXdGtZWGx6S0Z3aWMyaHZjblJjSWl3Z2RISjFaU3dnWm1Gc2MyVXBMQ0F4S1R0Y2JpQWdJQ0FnSUNBZ1kyRnpaU0JjSW1OalkyTmNJanBjYmlBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnYjI1bFQyWW9iRzlqTG5kbFpXdGtZWGx6S0Z3aWJHOXVaMXdpTENCMGNuVmxMQ0JtWVd4elpTa3NJREVwTzF4dUlDQWdJQ0FnSUNBdkx5QnZabVp6WlhRdmVtOXVaVnh1SUNBZ0lDQWdJQ0JqWVhObElGd2lXbHdpT2x4dUlDQWdJQ0FnSUNCallYTmxJRndpV2xwY0lqcGNiaUFnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdiMlptYzJWMEtHNWxkeUJTWldkRmVIQW9ZQ2hiS3kxZEpIdHZibVZQY2xSM2J5NXpiM1Z5WTJWOUtTZy9Pam9vSkh0MGQyOHVjMjkxY21ObGZTa3BQMkFwTENBeUtUdGNiaUFnSUNBZ0lDQWdZMkZ6WlNCY0lscGFXbHdpT2x4dUlDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCdlptWnpaWFFvYm1WM0lGSmxaMFY0Y0NoZ0tGc3JMVjBrZTI5dVpVOXlWSGR2TG5OdmRYSmpaWDBwS0NSN2RIZHZMbk52ZFhKalpYMHBQMkFwTENBeUtUdGNiaUFnSUNBZ0lDQWdMeThnZDJVZ1pHOXVKM1FnYzNWd2NHOXlkQ0JhV2xwYUlDaFFVMVFwSUc5eUlGcGFXbHBhSUNoUVlXTnBabWxqSUZOMFlXNWtZWEprSUZScGJXVXBJR2x1SUhCaGNuTnBibWRjYmlBZ0lDQWdJQ0FnTHk4Z1ltVmpZWFZ6WlNCM1pTQmtiMjRuZENCb1lYWmxJR0Z1ZVNCM1lYa2dkRzhnWm1sbmRYSmxJRzkxZENCM2FHRjBJSFJvWlhrZ1lYSmxYRzRnSUNBZ0lDQWdJR05oYzJVZ1hDSjZYQ0k2WEc0Z0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhOcGJYQnNaU2d2VzJFdGVsOHJMUzlkZXpFc01qVTJmVDh2YVNrN1hHNGdJQ0FnSUNBZ0lHUmxabUYxYkhRNlhHNGdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlHeHBkR1Z5WVd3b2RDazdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZUdGNibHh1SUNCamIyNXpkQ0IxYm1sMElEMGdkVzVwZEdGMFpTaDBiMnRsYmlrZ2ZId2dlMXh1SUNBZ0lHbHVkbUZzYVdSU1pXRnpiMjQ2SUUxSlUxTkpUa2RmUmxSUUxGeHVJQ0I5TzF4dVhHNGdJSFZ1YVhRdWRHOXJaVzRnUFNCMGIydGxianRjYmx4dUlDQnlaWFIxY200Z2RXNXBkRHRjYm4xY2JseHVZMjl1YzNRZ2NHRnlkRlI1Y0dWVGRIbHNaVlJ2Vkc5clpXNVdZV3dnUFNCN1hHNGdJSGxsWVhJNklIdGNiaUFnSUNCY0lqSXRaR2xuYVhSY0lqb2dYQ0o1ZVZ3aUxGeHVJQ0FnSUc1MWJXVnlhV002SUZ3aWVYbDVlWGxjSWl4Y2JpQWdmU3hjYmlBZ2JXOXVkR2c2SUh0Y2JpQWdJQ0J1ZFcxbGNtbGpPaUJjSWsxY0lpeGNiaUFnSUNCY0lqSXRaR2xuYVhSY0lqb2dYQ0pOVFZ3aUxGeHVJQ0FnSUhOb2IzSjBPaUJjSWsxTlRWd2lMRnh1SUNBZ0lHeHZibWM2SUZ3aVRVMU5UVndpTEZ4dUlDQjlMRnh1SUNCa1lYazZJSHRjYmlBZ0lDQnVkVzFsY21sak9pQmNJbVJjSWl4Y2JpQWdJQ0JjSWpJdFpHbG5hWFJjSWpvZ1hDSmtaRndpTEZ4dUlDQjlMRnh1SUNCM1pXVnJaR0Y1T2lCN1hHNGdJQ0FnYzJodmNuUTZJRndpUlVWRlhDSXNYRzRnSUNBZ2JHOXVaem9nWENKRlJVVkZYQ0lzWEc0Z0lIMHNYRzRnSUdSaGVYQmxjbWx2WkRvZ1hDSmhYQ0lzWEc0Z0lHUmhlVkJsY21sdlpEb2dYQ0poWENJc1hHNGdJR2h2ZFhJNklIdGNiaUFnSUNCdWRXMWxjbWxqT2lCY0ltaGNJaXhjYmlBZ0lDQmNJakl0WkdsbmFYUmNJam9nWENKb2FGd2lMRnh1SUNCOUxGeHVJQ0J0YVc1MWRHVTZJSHRjYmlBZ0lDQnVkVzFsY21sak9pQmNJbTFjSWl4Y2JpQWdJQ0JjSWpJdFpHbG5hWFJjSWpvZ1hDSnRiVndpTEZ4dUlDQjlMRnh1SUNCelpXTnZibVE2SUh0Y2JpQWdJQ0J1ZFcxbGNtbGpPaUJjSW5OY0lpeGNiaUFnSUNCY0lqSXRaR2xuYVhSY0lqb2dYQ0p6YzF3aUxGeHVJQ0I5TEZ4dWZUdGNibHh1Wm5WdVkzUnBiMjRnZEc5clpXNUdiM0pRWVhKMEtIQmhjblFzSUd4dlkyRnNaU3dnWm05eWJXRjBUM0IwY3lrZ2UxeHVJQ0JqYjI1emRDQjdJSFI1Y0dVc0lIWmhiSFZsSUgwZ1BTQndZWEowTzF4dVhHNGdJR2xtSUNoMGVYQmxJRDA5UFNCY0lteHBkR1Z5WVd4Y0lpa2dlMXh1SUNBZ0lISmxkSFZ5YmlCN1hHNGdJQ0FnSUNCc2FYUmxjbUZzT2lCMGNuVmxMRnh1SUNBZ0lDQWdkbUZzT2lCMllXeDFaU3hjYmlBZ0lDQjlPMXh1SUNCOVhHNWNiaUFnWTI5dWMzUWdjM1I1YkdVZ1BTQm1iM0p0WVhSUGNIUnpXM1I1Y0dWZE8xeHVYRzRnSUd4bGRDQjJZV3dnUFNCd1lYSjBWSGx3WlZOMGVXeGxWRzlVYjJ0bGJsWmhiRnQwZVhCbFhUdGNiaUFnYVdZZ0tIUjVjR1Z2WmlCMllXd2dQVDA5SUZ3aWIySnFaV04wWENJcElIdGNiaUFnSUNCMllXd2dQU0IyWVd4YmMzUjViR1ZkTzF4dUlDQjlYRzVjYmlBZ2FXWWdLSFpoYkNrZ2UxeHVJQ0FnSUhKbGRIVnliaUI3WEc0Z0lDQWdJQ0JzYVhSbGNtRnNPaUJtWVd4elpTeGNiaUFnSUNBZ0lIWmhiQ3hjYmlBZ0lDQjlPMXh1SUNCOVhHNWNiaUFnY21WMGRYSnVJSFZ1WkdWbWFXNWxaRHRjYm4xY2JseHVablZ1WTNScGIyNGdZblZwYkdSU1pXZGxlQ2gxYm1sMGN5a2dlMXh1SUNCamIyNXpkQ0J5WlNBOUlIVnVhWFJ6TG0xaGNDZ29kU2tnUFQ0Z2RTNXlaV2RsZUNrdWNtVmtkV05sS0NobUxDQnlLU0E5UGlCZ0pIdG1mU2drZTNJdWMyOTFjbU5sZlNsZ0xDQmNJbHdpS1R0Y2JpQWdjbVYwZFhKdUlGdGdYaVI3Y21WOUpHQXNJSFZ1YVhSelhUdGNibjFjYmx4dVpuVnVZM1JwYjI0Z2JXRjBZMmdvYVc1d2RYUXNJSEpsWjJWNExDQm9ZVzVrYkdWeWN5a2dlMXh1SUNCamIyNXpkQ0J0WVhSamFHVnpJRDBnYVc1d2RYUXViV0YwWTJnb2NtVm5aWGdwTzF4dVhHNGdJR2xtSUNodFlYUmphR1Z6S1NCN1hHNGdJQ0FnWTI5dWMzUWdZV3hzSUQwZ2UzMDdYRzRnSUNBZ2JHVjBJRzFoZEdOb1NXNWtaWGdnUFNBeE8xeHVJQ0FnSUdadmNpQW9ZMjl1YzNRZ2FTQnBiaUJvWVc1a2JHVnljeWtnZTF4dUlDQWdJQ0FnYVdZZ0tHaGhjMDkzYmxCeWIzQmxjblI1S0doaGJtUnNaWEp6TENCcEtTa2dlMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQm9JRDBnYUdGdVpHeGxjbk5iYVYwc1hHNGdJQ0FnSUNBZ0lDQWdaM0p2ZFhCeklEMGdhQzVuY205MWNITWdQeUJvTG1keWIzVndjeUFySURFZ09pQXhPMXh1SUNBZ0lDQWdJQ0JwWmlBb0lXZ3ViR2wwWlhKaGJDQW1KaUJvTG5SdmEyVnVLU0I3WEc0Z0lDQWdJQ0FnSUNBZ1lXeHNXMmd1ZEc5clpXNHVkbUZzV3pCZFhTQTlJR2d1WkdWelpYSW9iV0YwWTJobGN5NXpiR2xqWlNodFlYUmphRWx1WkdWNExDQnRZWFJqYUVsdVpHVjRJQ3NnWjNKdmRYQnpLU2s3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2JXRjBZMmhKYm1SbGVDQXJQU0JuY205MWNITTdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUJiYldGMFkyaGxjeXdnWVd4c1hUdGNiaUFnZlNCbGJITmxJSHRjYmlBZ0lDQnlaWFIxY200Z1cyMWhkR05vWlhNc0lIdDlYVHRjYmlBZ2ZWeHVmVnh1WEc1bWRXNWpkR2x2YmlCa1lYUmxWR2x0WlVaeWIyMU5ZWFJqYUdWektHMWhkR05vWlhNcElIdGNiaUFnWTI5dWMzUWdkRzlHYVdWc1pDQTlJQ2gwYjJ0bGJpa2dQVDRnZTF4dUlDQWdJSE4zYVhSamFDQW9kRzlyWlc0cElIdGNiaUFnSUNBZ0lHTmhjMlVnWENKVFhDSTZYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQmNJbTFwYkd4cGMyVmpiMjVrWENJN1hHNGdJQ0FnSUNCallYTmxJRndpYzF3aU9seHVJQ0FnSUNBZ0lDQnlaWFIxY200Z1hDSnpaV052Ym1SY0lqdGNiaUFnSUNBZ0lHTmhjMlVnWENKdFhDSTZYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQmNJbTFwYm5WMFpWd2lPMXh1SUNBZ0lDQWdZMkZ6WlNCY0ltaGNJanBjYmlBZ0lDQWdJR05oYzJVZ1hDSklYQ0k2WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJjSW1odmRYSmNJanRjYmlBZ0lDQWdJR05oYzJVZ1hDSmtYQ0k2WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJjSW1SaGVWd2lPMXh1SUNBZ0lDQWdZMkZ6WlNCY0ltOWNJanBjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJRndpYjNKa2FXNWhiRndpTzF4dUlDQWdJQ0FnWTJGelpTQmNJa3hjSWpwY2JpQWdJQ0FnSUdOaGMyVWdYQ0pOWENJNlhHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCY0ltMXZiblJvWENJN1hHNGdJQ0FnSUNCallYTmxJRndpZVZ3aU9seHVJQ0FnSUNBZ0lDQnlaWFIxY200Z1hDSjVaV0Z5WENJN1hHNGdJQ0FnSUNCallYTmxJRndpUlZ3aU9seHVJQ0FnSUNBZ1kyRnpaU0JjSW1OY0lqcGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlGd2lkMlZsYTJSaGVWd2lPMXh1SUNBZ0lDQWdZMkZ6WlNCY0lsZGNJanBjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJRndpZDJWbGEwNTFiV0psY2x3aU8xeHVJQ0FnSUNBZ1kyRnpaU0JjSW10Y0lqcGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlGd2lkMlZsYTFsbFlYSmNJanRjYmlBZ0lDQWdJR05oYzJVZ1hDSnhYQ0k2WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJjSW5GMVlYSjBaWEpjSWp0Y2JpQWdJQ0FnSUdSbFptRjFiSFE2WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJ1ZFd4c08xeHVJQ0FnSUgxY2JpQWdmVHRjYmx4dUlDQnNaWFFnZW05dVpTQTlJRzUxYkd3N1hHNGdJR3hsZENCemNHVmphV1pwWTA5bVpuTmxkRHRjYmlBZ2FXWWdLQ0ZwYzFWdVpHVm1hVzVsWkNodFlYUmphR1Z6TG5vcEtTQjdYRzRnSUNBZ2VtOXVaU0E5SUVsQlRrRmFiMjVsTG1OeVpXRjBaU2h0WVhSamFHVnpMbm9wTzF4dUlDQjlYRzVjYmlBZ2FXWWdLQ0ZwYzFWdVpHVm1hVzVsWkNodFlYUmphR1Z6TGxvcEtTQjdYRzRnSUNBZ2FXWWdLQ0Y2YjI1bEtTQjdYRzRnSUNBZ0lDQjZiMjVsSUQwZ2JtVjNJRVpwZUdWa1QyWm1jMlYwV205dVpTaHRZWFJqYUdWekxsb3BPMXh1SUNBZ0lIMWNiaUFnSUNCemNHVmphV1pwWTA5bVpuTmxkQ0E5SUcxaGRHTm9aWE11V2p0Y2JpQWdmVnh1WEc0Z0lHbG1JQ2doYVhOVmJtUmxabWx1WldRb2JXRjBZMmhsY3k1eEtTa2dlMXh1SUNBZ0lHMWhkR05vWlhNdVRTQTlJQ2h0WVhSamFHVnpMbkVnTFNBeEtTQXFJRE1nS3lBeE8xeHVJQ0I5WEc1Y2JpQWdhV1lnS0NGcGMxVnVaR1ZtYVc1bFpDaHRZWFJqYUdWekxtZ3BLU0I3WEc0Z0lDQWdhV1lnS0cxaGRHTm9aWE11YUNBOElERXlJQ1ltSUcxaGRHTm9aWE11WVNBOVBUMGdNU2tnZTF4dUlDQWdJQ0FnYldGMFkyaGxjeTVvSUNzOUlERXlPMXh1SUNBZ0lIMGdaV3h6WlNCcFppQW9iV0YwWTJobGN5NW9JRDA5UFNBeE1pQW1KaUJ0WVhSamFHVnpMbUVnUFQwOUlEQXBJSHRjYmlBZ0lDQWdJRzFoZEdOb1pYTXVhQ0E5SURBN1hHNGdJQ0FnZlZ4dUlDQjlYRzVjYmlBZ2FXWWdLRzFoZEdOb1pYTXVSeUE5UFQwZ01DQW1KaUJ0WVhSamFHVnpMbmtwSUh0Y2JpQWdJQ0J0WVhSamFHVnpMbmtnUFNBdGJXRjBZMmhsY3k1NU8xeHVJQ0I5WEc1Y2JpQWdhV1lnS0NGcGMxVnVaR1ZtYVc1bFpDaHRZWFJqYUdWekxuVXBLU0I3WEc0Z0lDQWdiV0YwWTJobGN5NVRJRDBnY0dGeWMyVk5hV3hzYVhNb2JXRjBZMmhsY3k1MUtUdGNiaUFnZlZ4dVhHNGdJR052Ym5OMElIWmhiSE1nUFNCUFltcGxZM1F1YTJWNWN5aHRZWFJqYUdWektTNXlaV1IxWTJVb0tISXNJR3NwSUQwK0lIdGNiaUFnSUNCamIyNXpkQ0JtSUQwZ2RHOUdhV1ZzWkNocktUdGNiaUFnSUNCcFppQW9aaWtnZTF4dUlDQWdJQ0FnY2x0bVhTQTlJRzFoZEdOb1pYTmJhMTA3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdjbVYwZFhKdUlISTdYRzRnSUgwc0lIdDlLVHRjYmx4dUlDQnlaWFIxY200Z1czWmhiSE1zSUhwdmJtVXNJSE53WldOcFptbGpUMlptYzJWMFhUdGNibjFjYmx4dWJHVjBJR1IxYlcxNVJHRjBaVlJwYldWRFlXTm9aU0E5SUc1MWJHdzdYRzVjYm1aMWJtTjBhVzl1SUdkbGRFUjFiVzE1UkdGMFpWUnBiV1VvS1NCN1hHNGdJR2xtSUNnaFpIVnRiWGxFWVhSbFZHbHRaVU5oWTJobEtTQjdYRzRnSUNBZ1pIVnRiWGxFWVhSbFZHbHRaVU5oWTJobElEMGdSR0YwWlZScGJXVXVabkp2YlUxcGJHeHBjeWd4TlRVMU5UVTFOVFUxTlRVMUtUdGNiaUFnZlZ4dVhHNGdJSEpsZEhWeWJpQmtkVzF0ZVVSaGRHVlVhVzFsUTJGamFHVTdYRzU5WEc1Y2JtWjFibU4wYVc5dUlHMWhlV0psUlhod1lXNWtUV0ZqY205VWIydGxiaWgwYjJ0bGJpd2diRzlqWVd4bEtTQjdYRzRnSUdsbUlDaDBiMnRsYmk1c2FYUmxjbUZzS1NCN1hHNGdJQ0FnY21WMGRYSnVJSFJ2YTJWdU8xeHVJQ0I5WEc1Y2JpQWdZMjl1YzNRZ1ptOXliV0YwVDNCMGN5QTlJRVp2Y20xaGRIUmxjaTV0WVdOeWIxUnZhMlZ1Vkc5R2IzSnRZWFJQY0hSektIUnZhMlZ1TG5aaGJDazdYRzVjYmlBZ2FXWWdLQ0ZtYjNKdFlYUlBjSFJ6S1NCN1hHNGdJQ0FnY21WMGRYSnVJSFJ2YTJWdU8xeHVJQ0I5WEc1Y2JpQWdZMjl1YzNRZ1ptOXliV0YwZEdWeUlEMGdSbTl5YldGMGRHVnlMbU55WldGMFpTaHNiMk5oYkdVc0lHWnZjbTFoZEU5d2RITXBPMXh1SUNCamIyNXpkQ0J3WVhKMGN5QTlJR1p2Y20xaGRIUmxjaTVtYjNKdFlYUkVZWFJsVkdsdFpWQmhjblJ6S0dkbGRFUjFiVzE1UkdGMFpWUnBiV1VvS1NrN1hHNWNiaUFnWTI5dWMzUWdkRzlyWlc1eklEMGdjR0Z5ZEhNdWJXRndLQ2h3S1NBOVBpQjBiMnRsYmtadmNsQmhjblFvY0N3Z2JHOWpZV3hsTENCbWIzSnRZWFJQY0hSektTazdYRzVjYmlBZ2FXWWdLSFJ2YTJWdWN5NXBibU5zZFdSbGN5aDFibVJsWm1sdVpXUXBLU0I3WEc0Z0lDQWdjbVYwZFhKdUlIUnZhMlZ1TzF4dUlDQjlYRzVjYmlBZ2NtVjBkWEp1SUhSdmEyVnVjenRjYm4xY2JseHVablZ1WTNScGIyNGdaWGh3WVc1a1RXRmpjbTlVYjJ0bGJuTW9kRzlyWlc1ekxDQnNiMk5oYkdVcElIdGNiaUFnY21WMGRYSnVJRUZ5Y21GNUxuQnliM1J2ZEhsd1pTNWpiMjVqWVhRb0xpNHVkRzlyWlc1ekxtMWhjQ2dvZENrZ1BUNGdiV0Y1WW1WRmVIQmhibVJOWVdOeWIxUnZhMlZ1S0hRc0lHeHZZMkZzWlNrcEtUdGNibjFjYmx4dUx5b3FYRzRnS2lCQWNISnBkbUYwWlZ4dUlDb3ZYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJsZUhCc1lXbHVSbkp2YlZSdmEyVnVjeWhzYjJOaGJHVXNJR2x1Y0hWMExDQm1iM0p0WVhRcElIdGNiaUFnWTI5dWMzUWdkRzlyWlc1eklEMGdaWGh3WVc1a1RXRmpjbTlVYjJ0bGJuTW9SbTl5YldGMGRHVnlMbkJoY25ObFJtOXliV0YwS0dadmNtMWhkQ2tzSUd4dlkyRnNaU2tzWEc0Z0lDQWdkVzVwZEhNZ1BTQjBiMnRsYm5NdWJXRndLQ2gwS1NBOVBpQjFibWwwUm05eVZHOXJaVzRvZEN3Z2JHOWpZV3hsS1Nrc1hHNGdJQ0FnWkdsemNYVmhiR2xtZVdsdVoxVnVhWFFnUFNCMWJtbDBjeTVtYVc1a0tDaDBLU0E5UGlCMExtbHVkbUZzYVdSU1pXRnpiMjRwTzF4dVhHNGdJR2xtSUNoa2FYTnhkV0ZzYVdaNWFXNW5WVzVwZENrZ2UxeHVJQ0FnSUhKbGRIVnliaUI3SUdsdWNIVjBMQ0IwYjJ0bGJuTXNJR2x1ZG1Gc2FXUlNaV0Z6YjI0NklHUnBjM0YxWVd4cFpubHBibWRWYm1sMExtbHVkbUZzYVdSU1pXRnpiMjRnZlR0Y2JpQWdmU0JsYkhObElIdGNiaUFnSUNCamIyNXpkQ0JiY21WblpYaFRkSEpwYm1jc0lHaGhibVJzWlhKelhTQTlJR0oxYVd4a1VtVm5aWGdvZFc1cGRITXBMRnh1SUNBZ0lDQWdjbVZuWlhnZ1BTQlNaV2RGZUhBb2NtVm5aWGhUZEhKcGJtY3NJRndpYVZ3aUtTeGNiaUFnSUNBZ0lGdHlZWGROWVhSamFHVnpMQ0J0WVhSamFHVnpYU0E5SUcxaGRHTm9LR2x1Y0hWMExDQnlaV2RsZUN3Z2FHRnVaR3hsY25NcExGeHVJQ0FnSUNBZ1czSmxjM1ZzZEN3Z2VtOXVaU3dnYzNCbFkybG1hV05QWm1aelpYUmRJRDBnYldGMFkyaGxjMXh1SUNBZ0lDQWdJQ0EvSUdSaGRHVlVhVzFsUm5KdmJVMWhkR05vWlhNb2JXRjBZMmhsY3lsY2JpQWdJQ0FnSUNBZ09pQmJiblZzYkN3Z2JuVnNiQ3dnZFc1a1pXWnBibVZrWFR0Y2JpQWdJQ0JwWmlBb2FHRnpUM2R1VUhKdmNHVnlkSGtvYldGMFkyaGxjeXdnWENKaFhDSXBJQ1ltSUdoaGMwOTNibEJ5YjNCbGNuUjVLRzFoZEdOb1pYTXNJRndpU0Z3aUtTa2dlMXh1SUNBZ0lDQWdkR2h5YjNjZ2JtVjNJRU52Ym1ac2FXTjBhVzVuVTNCbFkybG1hV05oZEdsdmJrVnljbTl5S0Z4dUlDQWdJQ0FnSUNCY0lrTmhiaWQwSUdsdVkyeDFaR1VnYldWeWFXUnBaVzBnZDJobGJpQnpjR1ZqYVdaNWFXNW5JREkwTFdodmRYSWdabTl5YldGMFhDSmNiaUFnSUNBZ0lDazdYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUI3SUdsdWNIVjBMQ0IwYjJ0bGJuTXNJSEpsWjJWNExDQnlZWGROWVhSamFHVnpMQ0J0WVhSamFHVnpMQ0J5WlhOMWJIUXNJSHB2Ym1Vc0lITndaV05wWm1salQyWm1jMlYwSUgwN1hHNGdJSDFjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlIQmhjbk5sUm5KdmJWUnZhMlZ1Y3loc2IyTmhiR1VzSUdsdWNIVjBMQ0JtYjNKdFlYUXBJSHRjYmlBZ1kyOXVjM1FnZXlCeVpYTjFiSFFzSUhwdmJtVXNJSE53WldOcFptbGpUMlptYzJWMExDQnBiblpoYkdsa1VtVmhjMjl1SUgwZ1BTQmxlSEJzWVdsdVJuSnZiVlJ2YTJWdWN5aHNiMk5oYkdVc0lHbHVjSFYwTENCbWIzSnRZWFFwTzF4dUlDQnlaWFIxY200Z1czSmxjM1ZzZEN3Z2VtOXVaU3dnYzNCbFkybG1hV05QWm1aelpYUXNJR2x1ZG1Gc2FXUlNaV0Z6YjI1ZE8xeHVmVnh1SWl3Z0ltbHRjRzl5ZENCN1hHNGdJR2x1ZEdWblpYSkNaWFIzWldWdUxGeHVJQ0JwYzB4bFlYQlpaV0Z5TEZ4dUlDQjBhVzFsVDJKcVpXTjBMRnh1SUNCa1lYbHpTVzVaWldGeUxGeHVJQ0JrWVhselNXNU5iMjUwYUN4Y2JpQWdkMlZsYTNOSmJsZGxaV3RaWldGeUxGeHVJQ0JwYzBsdWRHVm5aWElzWEc1OUlHWnliMjBnWENJdUwzVjBhV3d1YW5OY0lqdGNibWx0Y0c5eWRDQkpiblpoYkdsa0lHWnliMjBnWENJdUwybHVkbUZzYVdRdWFuTmNJanRjYmx4dVkyOXVjM1FnYm05dVRHVmhjRXhoWkdSbGNpQTlJRnN3TENBek1Td2dOVGtzSURrd0xDQXhNakFzSURFMU1Td2dNVGd4TENBeU1USXNJREkwTXl3Z01qY3pMQ0F6TURRc0lETXpORjBzWEc0Z0lHeGxZWEJNWVdSa1pYSWdQU0JiTUN3Z016RXNJRFl3TENBNU1Td2dNVEl4TENBeE5USXNJREU0TWl3Z01qRXpMQ0F5TkRRc0lESTNOQ3dnTXpBMUxDQXpNelZkTzF4dVhHNW1kVzVqZEdsdmJpQjFibWwwVDNWMFQyWlNZVzVuWlNoMWJtbDBMQ0IyWVd4MVpTa2dlMXh1SUNCeVpYUjFjbTRnYm1WM0lFbHVkbUZzYVdRb1hHNGdJQ0FnWENKMWJtbDBJRzkxZENCdlppQnlZVzVuWlZ3aUxGeHVJQ0FnSUdCNWIzVWdjM0JsWTJsbWFXVmtJQ1I3ZG1Gc2RXVjlJQ2h2WmlCMGVYQmxJQ1I3ZEhsd1pXOW1JSFpoYkhWbGZTa2dZWE1nWVNBa2UzVnVhWFI5TENCM2FHbGphQ0JwY3lCcGJuWmhiR2xrWUZ4dUlDQXBPMXh1ZlZ4dVhHNW1kVzVqZEdsdmJpQmtZWGxQWmxkbFpXc29lV1ZoY2l3Z2JXOXVkR2dzSUdSaGVTa2dlMXh1SUNCamIyNXpkQ0JrSUQwZ2JtVjNJRVJoZEdVb1JHRjBaUzVWVkVNb2VXVmhjaXdnYlc5dWRHZ2dMU0F4TENCa1lYa3BLVHRjYmx4dUlDQnBaaUFvZVdWaGNpQThJREV3TUNBbUppQjVaV0Z5SUQ0OUlEQXBJSHRjYmlBZ0lDQmtMbk5sZEZWVVEwWjFiR3haWldGeUtHUXVaMlYwVlZSRFJuVnNiRmxsWVhJb0tTQXRJREU1TURBcE8xeHVJQ0I5WEc1Y2JpQWdZMjl1YzNRZ2FuTWdQU0JrTG1kbGRGVlVRMFJoZVNncE8xeHVYRzRnSUhKbGRIVnliaUJxY3lBOVBUMGdNQ0EvSURjZ09pQnFjenRjYm4xY2JseHVablZ1WTNScGIyNGdZMjl0Y0hWMFpVOXlaR2x1WVd3b2VXVmhjaXdnYlc5dWRHZ3NJR1JoZVNrZ2UxeHVJQ0J5WlhSMWNtNGdaR0Y1SUNzZ0tHbHpUR1ZoY0ZsbFlYSW9lV1ZoY2lrZ1B5QnNaV0Z3VEdGa1pHVnlJRG9nYm05dVRHVmhjRXhoWkdSbGNpbGJiVzl1ZEdnZ0xTQXhYVHRjYm4xY2JseHVablZ1WTNScGIyNGdkVzVqYjIxd2RYUmxUM0prYVc1aGJDaDVaV0Z5TENCdmNtUnBibUZzS1NCN1hHNGdJR052Ym5OMElIUmhZbXhsSUQwZ2FYTk1aV0Z3V1dWaGNpaDVaV0Z5S1NBL0lHeGxZWEJNWVdSa1pYSWdPaUJ1YjI1TVpXRndUR0ZrWkdWeUxGeHVJQ0FnSUcxdmJuUm9NQ0E5SUhSaFlteGxMbVpwYm1SSmJtUmxlQ2dvYVNrZ1BUNGdhU0E4SUc5eVpHbHVZV3dwTEZ4dUlDQWdJR1JoZVNBOUlHOXlaR2x1WVd3Z0xTQjBZV0pzWlZ0dGIyNTBhREJkTzF4dUlDQnlaWFIxY200Z2V5QnRiMjUwYURvZ2JXOXVkR2d3SUNzZ01Td2daR0Y1SUgwN1hHNTlYRzVjYmk4cUtseHVJQ29nUUhCeWFYWmhkR1ZjYmlBcUwxeHVYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdaM0psWjI5eWFXRnVWRzlYWldWcktHZHlaV2RQWW1vcElIdGNiaUFnWTI5dWMzUWdleUI1WldGeUxDQnRiMjUwYUN3Z1pHRjVJSDBnUFNCbmNtVm5UMkpxTEZ4dUlDQWdJRzl5WkdsdVlXd2dQU0JqYjIxd2RYUmxUM0prYVc1aGJDaDVaV0Z5TENCdGIyNTBhQ3dnWkdGNUtTeGNiaUFnSUNCM1pXVnJaR0Y1SUQwZ1pHRjVUMlpYWldWcktIbGxZWElzSUcxdmJuUm9MQ0JrWVhrcE8xeHVYRzRnSUd4bGRDQjNaV1ZyVG5WdFltVnlJRDBnVFdGMGFDNW1iRzl2Y2lnb2IzSmthVzVoYkNBdElIZGxaV3RrWVhrZ0t5QXhNQ2tnTHlBM0tTeGNiaUFnSUNCM1pXVnJXV1ZoY2p0Y2JseHVJQ0JwWmlBb2QyVmxhMDUxYldKbGNpQThJREVwSUh0Y2JpQWdJQ0IzWldWcldXVmhjaUE5SUhsbFlYSWdMU0F4TzF4dUlDQWdJSGRsWld0T2RXMWlaWElnUFNCM1pXVnJjMGx1VjJWbGExbGxZWElvZDJWbGExbGxZWElwTzF4dUlDQjlJR1ZzYzJVZ2FXWWdLSGRsWld0T2RXMWlaWElnUGlCM1pXVnJjMGx1VjJWbGExbGxZWElvZVdWaGNpa3BJSHRjYmlBZ0lDQjNaV1ZyV1dWaGNpQTlJSGxsWVhJZ0t5QXhPMXh1SUNBZ0lIZGxaV3RPZFcxaVpYSWdQU0F4TzF4dUlDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUhkbFpXdFpaV0Z5SUQwZ2VXVmhjanRjYmlBZ2ZWeHVYRzRnSUhKbGRIVnliaUI3SUhkbFpXdFpaV0Z5TENCM1pXVnJUblZ0WW1WeUxDQjNaV1ZyWkdGNUxDQXVMaTUwYVcxbFQySnFaV04wS0dkeVpXZFBZbW9wSUgwN1hHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUIzWldWclZHOUhjbVZuYjNKcFlXNG9kMlZsYTBSaGRHRXBJSHRjYmlBZ1kyOXVjM1FnZXlCM1pXVnJXV1ZoY2l3Z2QyVmxhMDUxYldKbGNpd2dkMlZsYTJSaGVTQjlJRDBnZDJWbGEwUmhkR0VzWEc0Z0lDQWdkMlZsYTJSaGVVOW1TbUZ1TkNBOUlHUmhlVTltVjJWbGF5aDNaV1ZyV1dWaGNpd2dNU3dnTkNrc1hHNGdJQ0FnZVdWaGNrbHVSR0Y1Y3lBOUlHUmhlWE5KYmxsbFlYSW9kMlZsYTFsbFlYSXBPMXh1WEc0Z0lHeGxkQ0J2Y21ScGJtRnNJRDBnZDJWbGEwNTFiV0psY2lBcUlEY2dLeUIzWldWclpHRjVJQzBnZDJWbGEyUmhlVTltU21GdU5DQXRJRE1zWEc0Z0lDQWdlV1ZoY2p0Y2JseHVJQ0JwWmlBb2IzSmthVzVoYkNBOElERXBJSHRjYmlBZ0lDQjVaV0Z5SUQwZ2QyVmxhMWxsWVhJZ0xTQXhPMXh1SUNBZ0lHOXlaR2x1WVd3Z0t6MGdaR0Y1YzBsdVdXVmhjaWg1WldGeUtUdGNiaUFnZlNCbGJITmxJR2xtSUNodmNtUnBibUZzSUQ0Z2VXVmhja2x1UkdGNWN5a2dlMXh1SUNBZ0lIbGxZWElnUFNCM1pXVnJXV1ZoY2lBcklERTdYRzRnSUNBZ2IzSmthVzVoYkNBdFBTQmtZWGx6U1c1WlpXRnlLSGRsWld0WlpXRnlLVHRjYmlBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0I1WldGeUlEMGdkMlZsYTFsbFlYSTdYRzRnSUgxY2JseHVJQ0JqYjI1emRDQjdJRzF2Ym5Sb0xDQmtZWGtnZlNBOUlIVnVZMjl0Y0hWMFpVOXlaR2x1WVd3b2VXVmhjaXdnYjNKa2FXNWhiQ2s3WEc0Z0lISmxkSFZ5YmlCN0lIbGxZWElzSUcxdmJuUm9MQ0JrWVhrc0lDNHVMblJwYldWUFltcGxZM1FvZDJWbGEwUmhkR0VwSUgwN1hHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJuY21WbmIzSnBZVzVVYjA5eVpHbHVZV3dvWjNKbFowUmhkR0VwSUh0Y2JpQWdZMjl1YzNRZ2V5QjVaV0Z5TENCdGIyNTBhQ3dnWkdGNUlIMGdQU0JuY21WblJHRjBZVHRjYmlBZ1kyOXVjM1FnYjNKa2FXNWhiQ0E5SUdOdmJYQjFkR1ZQY21ScGJtRnNLSGxsWVhJc0lHMXZiblJvTENCa1lYa3BPMXh1SUNCeVpYUjFjbTRnZXlCNVpXRnlMQ0J2Y21ScGJtRnNMQ0F1TGk1MGFXMWxUMkpxWldOMEtHZHlaV2RFWVhSaEtTQjlPMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2IzSmthVzVoYkZSdlIzSmxaMjl5YVdGdUtHOXlaR2x1WVd4RVlYUmhLU0I3WEc0Z0lHTnZibk4wSUhzZ2VXVmhjaXdnYjNKa2FXNWhiQ0I5SUQwZ2IzSmthVzVoYkVSaGRHRTdYRzRnSUdOdmJuTjBJSHNnYlc5dWRHZ3NJR1JoZVNCOUlEMGdkVzVqYjIxd2RYUmxUM0prYVc1aGJDaDVaV0Z5TENCdmNtUnBibUZzS1R0Y2JpQWdjbVYwZFhKdUlIc2dlV1ZoY2l3Z2JXOXVkR2dzSUdSaGVTd2dMaTR1ZEdsdFpVOWlhbVZqZENodmNtUnBibUZzUkdGMFlTa2dmVHRjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlHaGhjMGx1ZG1Gc2FXUlhaV1ZyUkdGMFlTaHZZbW9wSUh0Y2JpQWdZMjl1YzNRZ2RtRnNhV1JaWldGeUlEMGdhWE5KYm5SbFoyVnlLRzlpYWk1M1pXVnJXV1ZoY2lrc1hHNGdJQ0FnZG1Gc2FXUlhaV1ZySUQwZ2FXNTBaV2RsY2tKbGRIZGxaVzRvYjJKcUxuZGxaV3RPZFcxaVpYSXNJREVzSUhkbFpXdHpTVzVYWldWcldXVmhjaWh2WW1vdWQyVmxhMWxsWVhJcEtTeGNiaUFnSUNCMllXeHBaRmRsWld0a1lYa2dQU0JwYm5SbFoyVnlRbVYwZDJWbGJpaHZZbW91ZDJWbGEyUmhlU3dnTVN3Z055azdYRzVjYmlBZ2FXWWdLQ0YyWVd4cFpGbGxZWElwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkVzVwZEU5MWRFOW1VbUZ1WjJVb1hDSjNaV1ZyV1dWaGNsd2lMQ0J2WW1vdWQyVmxhMWxsWVhJcE8xeHVJQ0I5SUdWc2MyVWdhV1lnS0NGMllXeHBaRmRsWldzcElIdGNiaUFnSUNCeVpYUjFjbTRnZFc1cGRFOTFkRTltVW1GdVoyVW9YQ0ozWldWclhDSXNJRzlpYWk1M1pXVnJLVHRjYmlBZ2ZTQmxiSE5sSUdsbUlDZ2hkbUZzYVdSWFpXVnJaR0Y1S1NCN1hHNGdJQ0FnY21WMGRYSnVJSFZ1YVhSUGRYUlBabEpoYm1kbEtGd2lkMlZsYTJSaGVWd2lMQ0J2WW1vdWQyVmxhMlJoZVNrN1hHNGdJSDBnWld4elpTQnlaWFIxY200Z1ptRnNjMlU3WEc1OVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQm9ZWE5KYm5aaGJHbGtUM0prYVc1aGJFUmhkR0VvYjJKcUtTQjdYRzRnSUdOdmJuTjBJSFpoYkdsa1dXVmhjaUE5SUdselNXNTBaV2RsY2lodlltb3VlV1ZoY2lrc1hHNGdJQ0FnZG1Gc2FXUlBjbVJwYm1Gc0lEMGdhVzUwWldkbGNrSmxkSGRsWlc0b2IySnFMbTl5WkdsdVlXd3NJREVzSUdSaGVYTkpibGxsWVhJb2IySnFMbmxsWVhJcEtUdGNibHh1SUNCcFppQW9JWFpoYkdsa1dXVmhjaWtnZTF4dUlDQWdJSEpsZEhWeWJpQjFibWwwVDNWMFQyWlNZVzVuWlNoY0lubGxZWEpjSWl3Z2IySnFMbmxsWVhJcE8xeHVJQ0I5SUdWc2MyVWdhV1lnS0NGMllXeHBaRTl5WkdsdVlXd3BJSHRjYmlBZ0lDQnlaWFIxY200Z2RXNXBkRTkxZEU5bVVtRnVaMlVvWENKdmNtUnBibUZzWENJc0lHOWlhaTV2Y21ScGJtRnNLVHRjYmlBZ2ZTQmxiSE5sSUhKbGRIVnliaUJtWVd4elpUdGNibjFjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdoaGMwbHVkbUZzYVdSSGNtVm5iM0pwWVc1RVlYUmhLRzlpYWlrZ2UxeHVJQ0JqYjI1emRDQjJZV3hwWkZsbFlYSWdQU0JwYzBsdWRHVm5aWElvYjJKcUxubGxZWElwTEZ4dUlDQWdJSFpoYkdsa1RXOXVkR2dnUFNCcGJuUmxaMlZ5UW1WMGQyVmxiaWh2WW1vdWJXOXVkR2dzSURFc0lERXlLU3hjYmlBZ0lDQjJZV3hwWkVSaGVTQTlJR2x1ZEdWblpYSkNaWFIzWldWdUtHOWlhaTVrWVhrc0lERXNJR1JoZVhOSmJrMXZiblJvS0c5aWFpNTVaV0Z5TENCdlltb3ViVzl1ZEdncEtUdGNibHh1SUNCcFppQW9JWFpoYkdsa1dXVmhjaWtnZTF4dUlDQWdJSEpsZEhWeWJpQjFibWwwVDNWMFQyWlNZVzVuWlNoY0lubGxZWEpjSWl3Z2IySnFMbmxsWVhJcE8xeHVJQ0I5SUdWc2MyVWdhV1lnS0NGMllXeHBaRTF2Ym5Sb0tTQjdYRzRnSUNBZ2NtVjBkWEp1SUhWdWFYUlBkWFJQWmxKaGJtZGxLRndpYlc5dWRHaGNJaXdnYjJKcUxtMXZiblJvS1R0Y2JpQWdmU0JsYkhObElHbG1JQ2doZG1Gc2FXUkVZWGtwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkVzVwZEU5MWRFOW1VbUZ1WjJVb1hDSmtZWGxjSWl3Z2IySnFMbVJoZVNrN1hHNGdJSDBnWld4elpTQnlaWFIxY200Z1ptRnNjMlU3WEc1OVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQm9ZWE5KYm5aaGJHbGtWR2x0WlVSaGRHRW9iMkpxS1NCN1hHNGdJR052Ym5OMElIc2dhRzkxY2l3Z2JXbHVkWFJsTENCelpXTnZibVFzSUcxcGJHeHBjMlZqYjI1a0lIMGdQU0J2WW1vN1hHNGdJR052Ym5OMElIWmhiR2xrU0c5MWNpQTlYRzRnSUNBZ0lDQnBiblJsWjJWeVFtVjBkMlZsYmlob2IzVnlMQ0F3TENBeU15a2dmSHhjYmlBZ0lDQWdJQ2hvYjNWeUlEMDlQU0F5TkNBbUppQnRhVzUxZEdVZ1BUMDlJREFnSmlZZ2MyVmpiMjVrSUQwOVBTQXdJQ1ltSUcxcGJHeHBjMlZqYjI1a0lEMDlQU0F3S1N4Y2JpQWdJQ0IyWVd4cFpFMXBiblYwWlNBOUlHbHVkR1ZuWlhKQ1pYUjNaV1Z1S0cxcGJuVjBaU3dnTUN3Z05Ua3BMRnh1SUNBZ0lIWmhiR2xrVTJWamIyNWtJRDBnYVc1MFpXZGxja0psZEhkbFpXNG9jMlZqYjI1a0xDQXdMQ0ExT1Nrc1hHNGdJQ0FnZG1Gc2FXUk5hV3hzYVhObFkyOXVaQ0E5SUdsdWRHVm5aWEpDWlhSM1pXVnVLRzFwYkd4cGMyVmpiMjVrTENBd0xDQTVPVGtwTzF4dVhHNGdJR2xtSUNnaGRtRnNhV1JJYjNWeUtTQjdYRzRnSUNBZ2NtVjBkWEp1SUhWdWFYUlBkWFJQWmxKaGJtZGxLRndpYUc5MWNsd2lMQ0JvYjNWeUtUdGNiaUFnZlNCbGJITmxJR2xtSUNnaGRtRnNhV1JOYVc1MWRHVXBJSHRjYmlBZ0lDQnlaWFIxY200Z2RXNXBkRTkxZEU5bVVtRnVaMlVvWENKdGFXNTFkR1ZjSWl3Z2JXbHVkWFJsS1R0Y2JpQWdmU0JsYkhObElHbG1JQ2doZG1Gc2FXUlRaV052Ym1RcElIdGNiaUFnSUNCeVpYUjFjbTRnZFc1cGRFOTFkRTltVW1GdVoyVW9YQ0p6WldOdmJtUmNJaXdnYzJWamIyNWtLVHRjYmlBZ2ZTQmxiSE5sSUdsbUlDZ2hkbUZzYVdSTmFXeHNhWE5sWTI5dVpDa2dlMXh1SUNBZ0lISmxkSFZ5YmlCMWJtbDBUM1YwVDJaU1lXNW5aU2hjSW0xcGJHeHBjMlZqYjI1a1hDSXNJRzFwYkd4cGMyVmpiMjVrS1R0Y2JpQWdmU0JsYkhObElISmxkSFZ5YmlCbVlXeHpaVHRjYm4xY2JpSXNJQ0pwYlhCdmNuUWdSSFZ5WVhScGIyNGdabkp2YlNCY0lpNHZaSFZ5WVhScGIyNHVhbk5jSWp0Y2JtbHRjRzl5ZENCSmJuUmxjblpoYkNCbWNtOXRJRndpTGk5cGJuUmxjblpoYkM1cWMxd2lPMXh1YVcxd2IzSjBJRk5sZEhScGJtZHpJR1p5YjIwZ1hDSXVMM05sZEhScGJtZHpMbXB6WENJN1hHNXBiWEJ2Y25RZ1NXNW1ieUJtY205dElGd2lMaTlwYm1adkxtcHpYQ0k3WEc1cGJYQnZjblFnUm05eWJXRjBkR1Z5SUdaeWIyMGdYQ0l1TDJsdGNHd3ZabTl5YldGMGRHVnlMbXB6WENJN1hHNXBiWEJ2Y25RZ1JtbDRaV1JQWm1aelpYUmFiMjVsSUdaeWIyMGdYQ0l1TDNwdmJtVnpMMlpwZUdWa1QyWm1jMlYwV205dVpTNXFjMXdpTzF4dWFXMXdiM0owSUV4dlkyRnNaU0JtY205dElGd2lMaTlwYlhCc0wyeHZZMkZzWlM1cWMxd2lPMXh1YVcxd2IzSjBJSHRjYmlBZ2FYTlZibVJsWm1sdVpXUXNYRzRnSUcxaGVXSmxRWEp5WVhrc1hHNGdJR2x6UkdGMFpTeGNiaUFnYVhOT2RXMWlaWElzWEc0Z0lHSmxjM1JDZVN4Y2JpQWdaR0Y1YzBsdVRXOXVkR2dzWEc0Z0lHUmhlWE5KYmxsbFlYSXNYRzRnSUdselRHVmhjRmxsWVhJc1hHNGdJSGRsWld0elNXNVhaV1ZyV1dWaGNpeGNiaUFnYm05eWJXRnNhWHBsVDJKcVpXTjBMRnh1SUNCeWIzVnVaRlJ2TEZ4dUlDQnZZbXBVYjB4dlkyRnNWRk1zWEc0Z0lIQmhaRk4wWVhKMExGeHVmU0JtY205dElGd2lMaTlwYlhCc0wzVjBhV3d1YW5OY0lqdGNibWx0Y0c5eWRDQjdJRzV2Y20xaGJHbDZaVnB2Ym1VZ2ZTQm1jbTl0SUZ3aUxpOXBiWEJzTDNwdmJtVlZkR2xzTG1welhDSTdYRzVwYlhCdmNuUWdaR2xtWmlCbWNtOXRJRndpTGk5cGJYQnNMMlJwWm1ZdWFuTmNJanRjYm1sdGNHOXlkQ0I3SUhCaGNuTmxVa1pETWpneU1rUmhkR1VzSUhCaGNuTmxTVk5QUkdGMFpTd2djR0Z5YzJWSVZGUlFSR0YwWlN3Z2NHRnljMlZUVVV3Z2ZTQm1jbTl0SUZ3aUxpOXBiWEJzTDNKbFoyVjRVR0Z5YzJWeUxtcHpYQ0k3WEc1cGJYQnZjblFnZXlCd1lYSnpaVVp5YjIxVWIydGxibk1zSUdWNGNHeGhhVzVHY205dFZHOXJaVzV6SUgwZ1puSnZiU0JjSWk0dmFXMXdiQzkwYjJ0bGJsQmhjbk5sY2k1cWMxd2lPMXh1YVcxd2IzSjBJSHRjYmlBZ1ozSmxaMjl5YVdGdVZHOVhaV1ZyTEZ4dUlDQjNaV1ZyVkc5SGNtVm5iM0pwWVc0c1hHNGdJR2R5WldkdmNtbGhibFJ2VDNKa2FXNWhiQ3hjYmlBZ2IzSmthVzVoYkZSdlIzSmxaMjl5YVdGdUxGeHVJQ0JvWVhOSmJuWmhiR2xrUjNKbFoyOXlhV0Z1UkdGMFlTeGNiaUFnYUdGelNXNTJZV3hwWkZkbFpXdEVZWFJoTEZ4dUlDQm9ZWE5KYm5aaGJHbGtUM0prYVc1aGJFUmhkR0VzWEc0Z0lHaGhjMGx1ZG1Gc2FXUlVhVzFsUkdGMFlTeGNibjBnWm5KdmJTQmNJaTR2YVcxd2JDOWpiMjUyWlhKemFXOXVjeTVxYzF3aU8xeHVhVzF3YjNKMElDb2dZWE1nUm05eWJXRjBjeUJtY205dElGd2lMaTlwYlhCc0wyWnZjbTFoZEhNdWFuTmNJanRjYm1sdGNHOXlkQ0I3WEc0Z0lFbHVkbUZzYVdSQmNtZDFiV1Z1ZEVWeWNtOXlMRnh1SUNCRGIyNW1iR2xqZEdsdVoxTndaV05wWm1sallYUnBiMjVGY25KdmNpeGNiaUFnU1c1MllXeHBaRlZ1YVhSRmNuSnZjaXhjYmlBZ1NXNTJZV3hwWkVSaGRHVlVhVzFsUlhKeWIzSXNYRzU5SUdaeWIyMGdYQ0l1TDJWeWNtOXljeTVxYzF3aU8xeHVhVzF3YjNKMElFbHVkbUZzYVdRZ1puSnZiU0JjSWk0dmFXMXdiQzlwYm5aaGJHbGtMbXB6WENJN1hHNWNibU52Ym5OMElFbE9Wa0ZNU1VRZ1BTQmNJa2x1ZG1Gc2FXUWdSR0YwWlZScGJXVmNJanRjYm1OdmJuTjBJRTFCV0Y5RVFWUkZJRDBnT0M0Mk5HVXhOVHRjYmx4dVpuVnVZM1JwYjI0Z2RXNXpkWEJ3YjNKMFpXUmFiMjVsS0hwdmJtVXBJSHRjYmlBZ2NtVjBkWEp1SUc1bGR5QkpiblpoYkdsa0tGd2lkVzV6ZFhCd2IzSjBaV1FnZW05dVpWd2lMQ0JnZEdobElIcHZibVVnWENJa2UzcHZibVV1Ym1GdFpYMWNJaUJwY3lCdWIzUWdjM1Z3Y0c5eWRHVmtZQ2s3WEc1OVhHNWNiaTh2SUhkbElHTmhZMmhsSUhkbFpXc2daR0YwWVNCdmJpQjBhR1VnUkZRZ2IySnFaV04wSUdGdVpDQjBhR2x6SUdsdWRHVnliV1ZrYVdGMFpYTWdkR2hsSUdOaFkyaGxYRzVtZFc1amRHbHZiaUJ3YjNOemFXSnNlVU5oWTJobFpGZGxaV3RFWVhSaEtHUjBLU0I3WEc0Z0lHbG1JQ2hrZEM1M1pXVnJSR0YwWVNBOVBUMGdiblZzYkNrZ2UxeHVJQ0FnSUdSMExuZGxaV3RFWVhSaElEMGdaM0psWjI5eWFXRnVWRzlYWldWcktHUjBMbU1wTzF4dUlDQjlYRzRnSUhKbGRIVnliaUJrZEM1M1pXVnJSR0YwWVR0Y2JuMWNibHh1THk4Z1kyeHZibVVnY21WaGJHeDVJRzFsWVc1ekxDQmNJbTFoYTJVZ1lTQnVaWGNnYjJKcVpXTjBJSGRwZEdnZ2RHaGxjMlVnYlc5a2FXWnBZMkYwYVc5dWMxd2lMaUJoYkd3Z1hDSnpaWFIwWlhKelhDSWdjbVZoYkd4NUlIVnpaU0IwYUdselhHNHZMeUIwYnlCamNtVmhkR1VnWVNCdVpYY2diMkpxWldOMElIZG9hV3hsSUc5dWJIa2dZMmhoYm1kcGJtY2djMjl0WlNCdlppQjBhR1VnY0hKdmNHVnlkR2xsYzF4dVpuVnVZM1JwYjI0Z1kyeHZibVVvYVc1emRDd2dZV3gwY3lrZ2UxeHVJQ0JqYjI1emRDQmpkWEp5Wlc1MElEMGdlMXh1SUNBZ0lIUnpPaUJwYm5OMExuUnpMRnh1SUNBZ0lIcHZibVU2SUdsdWMzUXVlbTl1WlN4Y2JpQWdJQ0JqT2lCcGJuTjBMbU1zWEc0Z0lDQWdiem9nYVc1emRDNXZMRnh1SUNBZ0lHeHZZem9nYVc1emRDNXNiMk1zWEc0Z0lDQWdhVzUyWVd4cFpEb2dhVzV6ZEM1cGJuWmhiR2xrTEZ4dUlDQjlPMXh1SUNCeVpYUjFjbTRnYm1WM0lFUmhkR1ZVYVcxbEtIc2dMaTR1WTNWeWNtVnVkQ3dnTGk0dVlXeDBjeXdnYjJ4a09pQmpkWEp5Wlc1MElIMHBPMXh1ZlZ4dVhHNHZMeUJtYVc1a0lIUm9aU0J5YVdkb2RDQnZabVp6WlhRZ1lTQm5hWFpsYmlCc2IyTmhiQ0IwYVcxbExpQlVhR1VnYnlCcGJuQjFkQ0JwY3lCdmRYSWdaM1ZsYzNNc0lIZG9hV05vSUdSbGRHVnliV2x1WlhNZ2QyaHBZMmhjYmk4dklHOW1abk5sZENCM1pTZHNiQ0J3YVdOcklHbHVJR0Z0WW1sbmRXOTFjeUJqWVhObGN5QW9aUzVuTGlCMGFHVnlaU0JoY21VZ2RIZHZJRE1nUVUxeklHSXZZeUJHWVd4c1ltRmpheUJFVTFRcFhHNW1kVzVqZEdsdmJpQm1hWGhQWm1aelpYUW9iRzlqWVd4VVV5d2dieXdnZEhvcElIdGNiaUFnTHk4Z1QzVnlJRlZVUXlCMGFXMWxJR2x6SUdwMWMzUWdZU0JuZFdWemN5QmlaV05oZFhObElHOTFjaUJ2Wm1aelpYUWdhWE1nYW5WemRDQmhJR2QxWlhOelhHNGdJR3hsZENCMWRHTkhkV1Z6Y3lBOUlHeHZZMkZzVkZNZ0xTQnZJQ29nTmpBZ0tpQXhNREF3TzF4dVhHNGdJQzh2SUZSbGMzUWdkMmhsZEdobGNpQjBhR1VnZW05dVpTQnRZWFJqYUdWeklIUm9aU0J2Wm1aelpYUWdabTl5SUhSb2FYTWdkSE5jYmlBZ1kyOXVjM1FnYnpJZ1BTQjBlaTV2Wm1aelpYUW9kWFJqUjNWbGMzTXBPMXh1WEc0Z0lDOHZJRWxtSUhOdkxDQnZabVp6WlhRZ1pHbGtiaWQwSUdOb1lXNW5aU0JoYm1RZ2QyVW5jbVVnWkc5dVpWeHVJQ0JwWmlBb2J5QTlQVDBnYnpJcElIdGNiaUFnSUNCeVpYUjFjbTRnVzNWMFkwZDFaWE56TENCdlhUdGNiaUFnZlZ4dVhHNGdJQzh2SUVsbUlHNXZkQ3dnWTJoaGJtZGxJSFJvWlNCMGN5QmllU0IwYUdVZ1pHbG1abVZ5Wlc1alpTQnBiaUIwYUdVZ2IyWm1jMlYwWEc0Z0lIVjBZMGQxWlhOeklDMDlJQ2h2TWlBdElHOHBJQ29nTmpBZ0tpQXhNREF3TzF4dVhHNGdJQzh2SUVsbUlIUm9ZWFFnWjJsMlpYTWdkWE1nZEdobElHeHZZMkZzSUhScGJXVWdkMlVnZDJGdWRDd2dkMlVuY21VZ1pHOXVaVnh1SUNCamIyNXpkQ0J2TXlBOUlIUjZMbTltWm5ObGRDaDFkR05IZFdWemN5azdYRzRnSUdsbUlDaHZNaUE5UFQwZ2J6TXBJSHRjYmlBZ0lDQnlaWFIxY200Z1czVjBZMGQxWlhOekxDQnZNbDA3WEc0Z0lIMWNibHh1SUNBdkx5QkpaaUJwZENkeklHUnBabVpsY21WdWRDd2dkMlVuY21VZ2FXNGdZU0JvYjJ4bElIUnBiV1V1SUZSb1pTQnZabVp6WlhRZ2FHRnpJR05vWVc1blpXUXNJR0oxZENCMGFHVWdkMlVnWkc5dUozUWdZV1JxZFhOMElIUm9aU0IwYVcxbFhHNGdJSEpsZEhWeWJpQmJiRzlqWVd4VVV5QXRJRTFoZEdndWJXbHVLRzh5TENCdk15a2dLaUEyTUNBcUlERXdNREFzSUUxaGRHZ3ViV0Y0S0c4eUxDQnZNeWxkTzF4dWZWeHVYRzR2THlCamIyNTJaWEowSUdGdUlHVndiMk5vSUhScGJXVnpkR0Z0Y0NCcGJuUnZJR0VnWTJGc1pXNWtZWElnYjJKcVpXTjBJSGRwZEdnZ2RHaGxJR2RwZG1WdUlHOW1abk5sZEZ4dVpuVnVZM1JwYjI0Z2RITlViMDlpYWloMGN5d2diMlptYzJWMEtTQjdYRzRnSUhSeklDczlJRzltWm5ObGRDQXFJRFl3SUNvZ01UQXdNRHRjYmx4dUlDQmpiMjV6ZENCa0lEMGdibVYzSUVSaGRHVW9kSE1wTzF4dVhHNGdJSEpsZEhWeWJpQjdYRzRnSUNBZ2VXVmhjam9nWkM1blpYUlZWRU5HZFd4c1dXVmhjaWdwTEZ4dUlDQWdJRzF2Ym5Sb09pQmtMbWRsZEZWVVEwMXZiblJvS0NrZ0t5QXhMRnh1SUNBZ0lHUmhlVG9nWkM1blpYUlZWRU5FWVhSbEtDa3NYRzRnSUNBZ2FHOTFjam9nWkM1blpYUlZWRU5JYjNWeWN5Z3BMRnh1SUNBZ0lHMXBiblYwWlRvZ1pDNW5aWFJWVkVOTmFXNTFkR1Z6S0Nrc1hHNGdJQ0FnYzJWamIyNWtPaUJrTG1kbGRGVlVRMU5sWTI5dVpITW9LU3hjYmlBZ0lDQnRhV3hzYVhObFkyOXVaRG9nWkM1blpYUlZWRU5OYVd4c2FYTmxZMjl1WkhNb0tTeGNiaUFnZlR0Y2JuMWNibHh1THk4Z1kyOXVkbVZ5ZENCaElHTmhiR1Z1WkdGeUlHOWlhbVZqZENCMGJ5QmhJR1Z3YjJOb0lIUnBiV1Z6ZEdGdGNGeHVablZ1WTNScGIyNGdiMkpxVkc5VVV5aHZZbW9zSUc5bVpuTmxkQ3dnZW05dVpTa2dlMXh1SUNCeVpYUjFjbTRnWm1sNFQyWm1jMlYwS0c5aWFsUnZURzlqWVd4VVV5aHZZbW9wTENCdlptWnpaWFFzSUhwdmJtVXBPMXh1ZlZ4dVhHNHZMeUJqY21WaGRHVWdZU0J1WlhjZ1JGUWdhVzV6ZEdGdVkyVWdZbmtnWVdSa2FXNW5JR0VnWkhWeVlYUnBiMjRzSUdGa2FuVnpkR2x1WnlCbWIzSWdSRk5VYzF4dVpuVnVZM1JwYjI0Z1lXUnFkWE4wVkdsdFpTaHBibk4wTENCa2RYSXBJSHRjYmlBZ1kyOXVjM1FnYjFCeVpTQTlJR2x1YzNRdWJ5eGNiaUFnSUNCNVpXRnlJRDBnYVc1emRDNWpMbmxsWVhJZ0t5Qk5ZWFJvTG5SeWRXNWpLR1IxY2k1NVpXRnljeWtzWEc0Z0lDQWdiVzl1ZEdnZ1BTQnBibk4wTG1NdWJXOXVkR2dnS3lCTllYUm9MblJ5ZFc1aktHUjFjaTV0YjI1MGFITXBJQ3NnVFdGMGFDNTBjblZ1WXloa2RYSXVjWFZoY25SbGNuTXBJQ29nTXl4Y2JpQWdJQ0JqSUQwZ2UxeHVJQ0FnSUNBZ0xpNHVhVzV6ZEM1akxGeHVJQ0FnSUNBZ2VXVmhjaXhjYmlBZ0lDQWdJRzF2Ym5Sb0xGeHVJQ0FnSUNBZ1pHRjVPbHh1SUNBZ0lDQWdJQ0JOWVhSb0xtMXBiaWhwYm5OMExtTXVaR0Y1TENCa1lYbHpTVzVOYjI1MGFDaDVaV0Z5TENCdGIyNTBhQ2twSUN0Y2JpQWdJQ0FnSUNBZ1RXRjBhQzUwY25WdVl5aGtkWEl1WkdGNWN5a2dLMXh1SUNBZ0lDQWdJQ0JOWVhSb0xuUnlkVzVqS0dSMWNpNTNaV1ZyY3lrZ0tpQTNMRnh1SUNBZ0lIMHNYRzRnSUNBZ2JXbHNiR2x6Vkc5QlpHUWdQU0JFZFhKaGRHbHZiaTVtY205dFQySnFaV04wS0h0Y2JpQWdJQ0FnSUhsbFlYSnpPaUJrZFhJdWVXVmhjbk1nTFNCTllYUm9MblJ5ZFc1aktHUjFjaTU1WldGeWN5a3NYRzRnSUNBZ0lDQnhkV0Z5ZEdWeWN6b2daSFZ5TG5GMVlYSjBaWEp6SUMwZ1RXRjBhQzUwY25WdVl5aGtkWEl1Y1hWaGNuUmxjbk1wTEZ4dUlDQWdJQ0FnYlc5dWRHaHpPaUJrZFhJdWJXOXVkR2h6SUMwZ1RXRjBhQzUwY25WdVl5aGtkWEl1Ylc5dWRHaHpLU3hjYmlBZ0lDQWdJSGRsWld0ek9pQmtkWEl1ZDJWbGEzTWdMU0JOWVhSb0xuUnlkVzVqS0dSMWNpNTNaV1ZyY3lrc1hHNGdJQ0FnSUNCa1lYbHpPaUJrZFhJdVpHRjVjeUF0SUUxaGRHZ3VkSEoxYm1Nb1pIVnlMbVJoZVhNcExGeHVJQ0FnSUNBZ2FHOTFjbk02SUdSMWNpNW9iM1Z5Y3l4Y2JpQWdJQ0FnSUcxcGJuVjBaWE02SUdSMWNpNXRhVzUxZEdWekxGeHVJQ0FnSUNBZ2MyVmpiMjVrY3pvZ1pIVnlMbk5sWTI5dVpITXNYRzRnSUNBZ0lDQnRhV3hzYVhObFkyOXVaSE02SUdSMWNpNXRhV3hzYVhObFkyOXVaSE1zWEc0Z0lDQWdmU2t1WVhNb1hDSnRhV3hzYVhObFkyOXVaSE5jSWlrc1hHNGdJQ0FnYkc5allXeFVVeUE5SUc5aWFsUnZURzlqWVd4VVV5aGpLVHRjYmx4dUlDQnNaWFFnVzNSekxDQnZYU0E5SUdacGVFOW1abk5sZENoc2IyTmhiRlJUTENCdlVISmxMQ0JwYm5OMExucHZibVVwTzF4dVhHNGdJR2xtSUNodGFXeHNhWE5VYjBGa1pDQWhQVDBnTUNrZ2UxeHVJQ0FnSUhSeklDczlJRzFwYkd4cGMxUnZRV1JrTzF4dUlDQWdJQzh2SUhSb1lYUWdZMjkxYkdRZ2FHRjJaU0JqYUdGdVoyVmtJSFJvWlNCdlptWnpaWFFnWW5rZ1oyOXBibWNnYjNabGNpQmhJRVJUVkN3Z1luVjBJSGRsSUhkaGJuUWdkRzhnYTJWbGNDQjBhR1VnZEhNZ2RHaGxJSE5oYldWY2JpQWdJQ0J2SUQwZ2FXNXpkQzU2YjI1bExtOW1abk5sZENoMGN5azdYRzRnSUgxY2JseHVJQ0J5WlhSMWNtNGdleUIwY3l3Z2J5QjlPMXh1ZlZ4dVhHNHZMeUJvWld4d1pYSWdkWE5sWm5Wc0lHbHVJSFIxY201cGJtY2dkR2hsSUhKbGMzVnNkSE1nYjJZZ2NHRnljMmx1WnlCcGJuUnZJSEpsWVd3Z1pHRjBaWE5jYmk4dklHSjVJR2hoYm1Sc2FXNW5JSFJvWlNCNmIyNWxJRzl3ZEdsdmJuTmNibVoxYm1OMGFXOXVJSEJoY25ObFJHRjBZVlJ2UkdGMFpWUnBiV1VvY0dGeWMyVmtMQ0J3WVhKelpXUmFiMjVsTENCdmNIUnpMQ0JtYjNKdFlYUXNJSFJsZUhRc0lITndaV05wWm1salQyWm1jMlYwS1NCN1hHNGdJR052Ym5OMElIc2djMlYwV205dVpTd2dlbTl1WlNCOUlEMGdiM0IwY3p0Y2JpQWdhV1lnS0hCaGNuTmxaQ0FtSmlCUFltcGxZM1F1YTJWNWN5aHdZWEp6WldRcExteGxibWQwYUNBaFBUMGdNQ2tnZTF4dUlDQWdJR052Ym5OMElHbHVkR1Z5Y0hKbGRHRjBhVzl1V205dVpTQTlJSEJoY25ObFpGcHZibVVnZkh3Z2VtOXVaU3hjYmlBZ0lDQWdJR2x1YzNRZ1BTQkVZWFJsVkdsdFpTNW1jbTl0VDJKcVpXTjBLSEJoY25ObFpDd2dlMXh1SUNBZ0lDQWdJQ0F1TGk1dmNIUnpMRnh1SUNBZ0lDQWdJQ0I2YjI1bE9pQnBiblJsY25CeVpYUmhkR2x2YmxwdmJtVXNYRzRnSUNBZ0lDQWdJSE53WldOcFptbGpUMlptYzJWMExGeHVJQ0FnSUNBZ2ZTazdYRzRnSUNBZ2NtVjBkWEp1SUhObGRGcHZibVVnUHlCcGJuTjBJRG9nYVc1emRDNXpaWFJhYjI1bEtIcHZibVVwTzF4dUlDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUhKbGRIVnliaUJFWVhSbFZHbHRaUzVwYm5aaGJHbGtLRnh1SUNBZ0lDQWdibVYzSUVsdWRtRnNhV1FvWENKMWJuQmhjbk5oWW14bFhDSXNJR0IwYUdVZ2FXNXdkWFFnWENJa2UzUmxlSFI5WENJZ1kyRnVKM1FnWW1VZ2NHRnljMlZrSUdGeklDUjdabTl5YldGMGZXQXBYRzRnSUNBZ0tUdGNiaUFnZlZ4dWZWeHVYRzR2THlCcFppQjViM1VnZDJGdWRDQjBieUJ2ZFhSd2RYUWdZU0IwWldOb2JtbGpZV3dnWm05eWJXRjBJQ2hsTG1jdUlGSkdReUF5T0RJeUtTd2dkR2hwY3lCb1pXeHdaWEpjYmk4dklHaGxiSEJ6SUdoaGJtUnNaU0IwYUdVZ1pHVjBZV2xzYzF4dVpuVnVZM1JwYjI0Z2RHOVVaV05vUm05eWJXRjBLR1IwTENCbWIzSnRZWFFzSUdGc2JHOTNXaUE5SUhSeWRXVXBJSHRjYmlBZ2NtVjBkWEp1SUdSMExtbHpWbUZzYVdSY2JpQWdJQ0EvSUVadmNtMWhkSFJsY2k1amNtVmhkR1VvVEc5allXeGxMbU55WldGMFpTaGNJbVZ1TFZWVFhDSXBMQ0I3WEc0Z0lDQWdJQ0FnSUdGc2JHOTNXaXhjYmlBZ0lDQWdJQ0FnWm05eVkyVlRhVzF3YkdVNklIUnlkV1VzWEc0Z0lDQWdJQ0I5S1M1bWIzSnRZWFJFWVhSbFZHbHRaVVp5YjIxVGRISnBibWNvWkhRc0lHWnZjbTFoZENsY2JpQWdJQ0E2SUc1MWJHdzdYRzU5WEc1Y2JtWjFibU4wYVc5dUlIUnZTVk5QUkdGMFpTaHZMQ0JsZUhSbGJtUmxaQ2tnZTF4dUlDQmpiMjV6ZENCc2IyNW5SbTl5YldGMElEMGdieTVqTG5sbFlYSWdQaUE1T1RrNUlIeDhJRzh1WXk1NVpXRnlJRHdnTUR0Y2JpQWdiR1YwSUdNZ1BTQmNJbHdpTzF4dUlDQnBaaUFvYkc5dVowWnZjbTFoZENBbUppQnZMbU11ZVdWaGNpQStQU0F3S1NCaklDczlJRndpSzF3aU8xeHVJQ0JqSUNzOUlIQmhaRk4wWVhKMEtHOHVZeTU1WldGeUxDQnNiMjVuUm05eWJXRjBJRDhnTmlBNklEUXBPMXh1WEc0Z0lHbG1JQ2hsZUhSbGJtUmxaQ2tnZTF4dUlDQWdJR01nS3owZ1hDSXRYQ0k3WEc0Z0lDQWdZeUFyUFNCd1lXUlRkR0Z5ZENodkxtTXViVzl1ZEdncE8xeHVJQ0FnSUdNZ0t6MGdYQ0l0WENJN1hHNGdJQ0FnWXlBclBTQndZV1JUZEdGeWRDaHZMbU11WkdGNUtUdGNiaUFnZlNCbGJITmxJSHRjYmlBZ0lDQmpJQ3M5SUhCaFpGTjBZWEowS0c4dVl5NXRiMjUwYUNrN1hHNGdJQ0FnWXlBclBTQndZV1JUZEdGeWRDaHZMbU11WkdGNUtUdGNiaUFnZlZ4dUlDQnlaWFIxY200Z1l6dGNibjFjYmx4dVpuVnVZM1JwYjI0Z2RHOUpVMDlVYVcxbEtGeHVJQ0J2TEZ4dUlDQmxlSFJsYm1SbFpDeGNiaUFnYzNWd2NISmxjM05UWldOdmJtUnpMRnh1SUNCemRYQndjbVZ6YzAxcGJHeHBjMlZqYjI1a2N5eGNiaUFnYVc1amJIVmtaVTltWm5ObGRDeGNiaUFnWlhoMFpXNWtaV1JhYjI1bFhHNHBJSHRjYmlBZ2JHVjBJR01nUFNCd1lXUlRkR0Z5ZENodkxtTXVhRzkxY2lrN1hHNGdJR2xtSUNobGVIUmxibVJsWkNrZ2UxeHVJQ0FnSUdNZ0t6MGdYQ0k2WENJN1hHNGdJQ0FnWXlBclBTQndZV1JUZEdGeWRDaHZMbU11YldsdWRYUmxLVHRjYmlBZ0lDQnBaaUFvYnk1akxuTmxZMjl1WkNBaFBUMGdNQ0I4ZkNBaGMzVndjSEpsYzNOVFpXTnZibVJ6S1NCN1hHNGdJQ0FnSUNCaklDczlJRndpT2x3aU8xeHVJQ0FnSUgxY2JpQWdmU0JsYkhObElIdGNiaUFnSUNCaklDczlJSEJoWkZOMFlYSjBLRzh1WXk1dGFXNTFkR1VwTzF4dUlDQjlYRzVjYmlBZ2FXWWdLRzh1WXk1elpXTnZibVFnSVQwOUlEQWdmSHdnSVhOMWNIQnlaWE56VTJWamIyNWtjeWtnZTF4dUlDQWdJR01nS3owZ2NHRmtVM1JoY25Rb2J5NWpMbk5sWTI5dVpDazdYRzVjYmlBZ0lDQnBaaUFvYnk1akxtMXBiR3hwYzJWamIyNWtJQ0U5UFNBd0lIeDhJQ0Z6ZFhCd2NtVnpjMDFwYkd4cGMyVmpiMjVrY3lrZ2UxeHVJQ0FnSUNBZ1l5QXJQU0JjSWk1Y0lqdGNiaUFnSUNBZ0lHTWdLejBnY0dGa1UzUmhjblFvYnk1akxtMXBiR3hwYzJWamIyNWtMQ0F6S1R0Y2JpQWdJQ0I5WEc0Z0lIMWNibHh1SUNCcFppQW9hVzVqYkhWa1pVOW1abk5sZENrZ2UxeHVJQ0FnSUdsbUlDaHZMbWx6VDJabWMyVjBSbWw0WldRZ0ppWWdieTV2Wm1aelpYUWdQVDA5SURBZ0ppWWdJV1Y0ZEdWdVpHVmtXbTl1WlNrZ2UxeHVJQ0FnSUNBZ1l5QXJQU0JjSWxwY0lqdGNiaUFnSUNCOUlHVnNjMlVnYVdZZ0tHOHVieUE4SURBcElIdGNiaUFnSUNBZ0lHTWdLejBnWENJdFhDSTdYRzRnSUNBZ0lDQmpJQ3M5SUhCaFpGTjBZWEowS0UxaGRHZ3VkSEoxYm1Nb0xXOHVieUF2SURZd0tTazdYRzRnSUNBZ0lDQmpJQ3M5SUZ3aU9sd2lPMXh1SUNBZ0lDQWdZeUFyUFNCd1lXUlRkR0Z5ZENoTllYUm9MblJ5ZFc1aktDMXZMbThnSlNBMk1Da3BPMXh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNCaklDczlJRndpSzF3aU8xeHVJQ0FnSUNBZ1l5QXJQU0J3WVdSVGRHRnlkQ2hOWVhSb0xuUnlkVzVqS0c4dWJ5QXZJRFl3S1NrN1hHNGdJQ0FnSUNCaklDczlJRndpT2x3aU8xeHVJQ0FnSUNBZ1l5QXJQU0J3WVdSVGRHRnlkQ2hOWVhSb0xuUnlkVzVqS0c4dWJ5QWxJRFl3S1NrN1hHNGdJQ0FnZlZ4dUlDQjlYRzVjYmlBZ2FXWWdLR1Y0ZEdWdVpHVmtXbTl1WlNrZ2UxeHVJQ0FnSUdNZ0t6MGdYQ0piWENJZ0t5QnZMbnB2Ym1VdWFXRnVZVTVoYldVZ0t5QmNJbDFjSWp0Y2JpQWdmVnh1SUNCeVpYUjFjbTRnWXp0Y2JuMWNibHh1THk4Z1pHVm1ZWFZzZEhNZ1ptOXlJSFZ1YzNCbFkybG1hV1ZrSUhWdWFYUnpJR2x1SUhSb1pTQnpkWEJ3YjNKMFpXUWdZMkZzWlc1a1lYSnpYRzVqYjI1emRDQmtaV1poZFd4MFZXNXBkRlpoYkhWbGN5QTlJSHRjYmlBZ0lDQnRiMjUwYURvZ01TeGNiaUFnSUNCa1lYazZJREVzWEc0Z0lDQWdhRzkxY2pvZ01DeGNiaUFnSUNCdGFXNTFkR1U2SURBc1hHNGdJQ0FnYzJWamIyNWtPaUF3TEZ4dUlDQWdJRzFwYkd4cGMyVmpiMjVrT2lBd0xGeHVJQ0I5TEZ4dUlDQmtaV1poZFd4MFYyVmxhMVZ1YVhSV1lXeDFaWE1nUFNCN1hHNGdJQ0FnZDJWbGEwNTFiV0psY2pvZ01TeGNiaUFnSUNCM1pXVnJaR0Y1T2lBeExGeHVJQ0FnSUdodmRYSTZJREFzWEc0Z0lDQWdiV2x1ZFhSbE9pQXdMRnh1SUNBZ0lITmxZMjl1WkRvZ01DeGNiaUFnSUNCdGFXeHNhWE5sWTI5dVpEb2dNQ3hjYmlBZ2ZTeGNiaUFnWkdWbVlYVnNkRTl5WkdsdVlXeFZibWwwVm1Gc2RXVnpJRDBnZTF4dUlDQWdJRzl5WkdsdVlXdzZJREVzWEc0Z0lDQWdhRzkxY2pvZ01DeGNiaUFnSUNCdGFXNTFkR1U2SURBc1hHNGdJQ0FnYzJWamIyNWtPaUF3TEZ4dUlDQWdJRzFwYkd4cGMyVmpiMjVrT2lBd0xGeHVJQ0I5TzF4dVhHNHZMeUJWYm1sMGN5QnBiaUIwYUdVZ2MzVndjRzl5ZEdWa0lHTmhiR1Z1WkdGeWN5d2djMjl5ZEdWa0lHSjVJR0pwWjI1bGMzTmNibU52Ym5OMElHOXlaR1Z5WldSVmJtbDBjeUE5SUZ0Y0lubGxZWEpjSWl3Z1hDSnRiMjUwYUZ3aUxDQmNJbVJoZVZ3aUxDQmNJbWh2ZFhKY0lpd2dYQ0p0YVc1MWRHVmNJaXdnWENKelpXTnZibVJjSWl3Z1hDSnRhV3hzYVhObFkyOXVaRndpWFN4Y2JpQWdiM0prWlhKbFpGZGxaV3RWYm1sMGN5QTlJRnRjYmlBZ0lDQmNJbmRsWld0WlpXRnlYQ0lzWEc0Z0lDQWdYQ0ozWldWclRuVnRZbVZ5WENJc1hHNGdJQ0FnWENKM1pXVnJaR0Y1WENJc1hHNGdJQ0FnWENKb2IzVnlYQ0lzWEc0Z0lDQWdYQ0p0YVc1MWRHVmNJaXhjYmlBZ0lDQmNJbk5sWTI5dVpGd2lMRnh1SUNBZ0lGd2liV2xzYkdselpXTnZibVJjSWl4Y2JpQWdYU3hjYmlBZ2IzSmtaWEpsWkU5eVpHbHVZV3hWYm1sMGN5QTlJRnRjSW5sbFlYSmNJaXdnWENKdmNtUnBibUZzWENJc0lGd2lhRzkxY2x3aUxDQmNJbTFwYm5WMFpWd2lMQ0JjSW5ObFkyOXVaRndpTENCY0ltMXBiR3hwYzJWamIyNWtYQ0pkTzF4dVhHNHZMeUJ6ZEdGdVpHRnlaR2w2WlNCallYTmxJR0Z1WkNCd2JIVnlZV3hwZEhrZ2FXNGdkVzVwZEhOY2JtWjFibU4wYVc5dUlHNXZjbTFoYkdsNlpWVnVhWFFvZFc1cGRDa2dlMXh1SUNCamIyNXpkQ0J1YjNKdFlXeHBlbVZrSUQwZ2UxeHVJQ0FnSUhsbFlYSTZJRndpZVdWaGNsd2lMRnh1SUNBZ0lIbGxZWEp6T2lCY0lubGxZWEpjSWl4Y2JpQWdJQ0J0YjI1MGFEb2dYQ0p0YjI1MGFGd2lMRnh1SUNBZ0lHMXZiblJvY3pvZ1hDSnRiMjUwYUZ3aUxGeHVJQ0FnSUdSaGVUb2dYQ0prWVhsY0lpeGNiaUFnSUNCa1lYbHpPaUJjSW1SaGVWd2lMRnh1SUNBZ0lHaHZkWEk2SUZ3aWFHOTFjbHdpTEZ4dUlDQWdJR2h2ZFhKek9pQmNJbWh2ZFhKY0lpeGNiaUFnSUNCdGFXNTFkR1U2SUZ3aWJXbHVkWFJsWENJc1hHNGdJQ0FnYldsdWRYUmxjem9nWENKdGFXNTFkR1ZjSWl4Y2JpQWdJQ0J4ZFdGeWRHVnlPaUJjSW5GMVlYSjBaWEpjSWl4Y2JpQWdJQ0J4ZFdGeWRHVnljem9nWENKeGRXRnlkR1Z5WENJc1hHNGdJQ0FnYzJWamIyNWtPaUJjSW5ObFkyOXVaRndpTEZ4dUlDQWdJSE5sWTI5dVpITTZJRndpYzJWamIyNWtYQ0lzWEc0Z0lDQWdiV2xzYkdselpXTnZibVE2SUZ3aWJXbHNiR2x6WldOdmJtUmNJaXhjYmlBZ0lDQnRhV3hzYVhObFkyOXVaSE02SUZ3aWJXbHNiR2x6WldOdmJtUmNJaXhjYmlBZ0lDQjNaV1ZyWkdGNU9pQmNJbmRsWld0a1lYbGNJaXhjYmlBZ0lDQjNaV1ZyWkdGNWN6b2dYQ0ozWldWclpHRjVYQ0lzWEc0Z0lDQWdkMlZsYTI1MWJXSmxjam9nWENKM1pXVnJUblZ0WW1WeVhDSXNYRzRnSUNBZ2QyVmxhM051ZFcxaVpYSTZJRndpZDJWbGEwNTFiV0psY2x3aUxGeHVJQ0FnSUhkbFpXdHVkVzFpWlhKek9pQmNJbmRsWld0T2RXMWlaWEpjSWl4Y2JpQWdJQ0IzWldWcmVXVmhjam9nWENKM1pXVnJXV1ZoY2x3aUxGeHVJQ0FnSUhkbFpXdDVaV0Z5Y3pvZ1hDSjNaV1ZyV1dWaGNsd2lMRnh1SUNBZ0lHOXlaR2x1WVd3NklGd2liM0prYVc1aGJGd2lMRnh1SUNCOVczVnVhWFF1ZEc5TWIzZGxja05oYzJVb0tWMDdYRzVjYmlBZ2FXWWdLQ0Z1YjNKdFlXeHBlbVZrS1NCMGFISnZkeUJ1WlhjZ1NXNTJZV3hwWkZWdWFYUkZjbkp2Y2loMWJtbDBLVHRjYmx4dUlDQnlaWFIxY200Z2JtOXliV0ZzYVhwbFpEdGNibjFjYmx4dUx5OGdkR2hwY3lCcGN5QmhJR1IxYldKbFpDQmtiM2R1SUhabGNuTnBiMjRnYjJZZ1puSnZiVTlpYW1WamRDZ3BJSFJvWVhRZ2NuVnVjeUJoWW05MWRDQTJNQ1VnWm1GemRHVnlYRzR2THlCaWRYUWdaRzlsYzI0bmRDQmtieUJoYm5rZ2RtRnNhV1JoZEdsdmJpd2diV0ZyWlhNZ1lTQmlkVzVqYUNCdlppQmhjM04xYlhCMGFXOXVjeUJoWW05MWRDQjNhR0YwSUhWdWFYUnpYRzR2THlCaGNtVWdjSEpsYzJWdWRDd2dZVzVrSUhOdklHOXVMbHh1Wm5WdVkzUnBiMjRnY1hWcFkydEVWQ2h2WW1vc0lHOXdkSE1wSUh0Y2JpQWdZMjl1YzNRZ2VtOXVaU0E5SUc1dmNtMWhiR2w2WlZwdmJtVW9iM0IwY3k1NmIyNWxMQ0JUWlhSMGFXNW5jeTVrWldaaGRXeDBXbTl1WlNrc1hHNGdJQ0FnYkc5aklEMGdURzlqWVd4bExtWnliMjFQWW1wbFkzUW9iM0IwY3lrc1hHNGdJQ0FnZEhOT2IzY2dQU0JUWlhSMGFXNW5jeTV1YjNjb0tUdGNibHh1SUNCc1pYUWdkSE1zSUc4N1hHNWNiaUFnTHk4Z1lYTnpkVzFsSUhkbElHaGhkbVVnZEdobElHaHBaMmhsY2kxdmNtUmxjaUIxYm1sMGMxeHVJQ0JwWmlBb0lXbHpWVzVrWldacGJtVmtLRzlpYWk1NVpXRnlLU2tnZTF4dUlDQWdJR1p2Y2lBb1kyOXVjM1FnZFNCdlppQnZjbVJsY21Wa1ZXNXBkSE1wSUh0Y2JpQWdJQ0FnSUdsbUlDaHBjMVZ1WkdWbWFXNWxaQ2h2WW1wYmRWMHBLU0I3WEc0Z0lDQWdJQ0FnSUc5aWFsdDFYU0E5SUdSbFptRjFiSFJWYm1sMFZtRnNkV1Z6VzNWZE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JseHVJQ0FnSUdOdmJuTjBJR2x1ZG1Gc2FXUWdQU0JvWVhOSmJuWmhiR2xrUjNKbFoyOXlhV0Z1UkdGMFlTaHZZbW9wSUh4OElHaGhjMGx1ZG1Gc2FXUlVhVzFsUkdGMFlTaHZZbW9wTzF4dUlDQWdJR2xtSUNocGJuWmhiR2xrS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnUkdGMFpWUnBiV1V1YVc1MllXeHBaQ2hwYm5aaGJHbGtLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQmpiMjV6ZENCdlptWnpaWFJRY205MmFYTWdQU0I2YjI1bExtOW1abk5sZENoMGMwNXZkeWs3WEc0Z0lDQWdXM1J6TENCdlhTQTlJRzlpYWxSdlZGTW9iMkpxTENCdlptWnpaWFJRY205MmFYTXNJSHB2Ym1VcE8xeHVJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lIUnpJRDBnZEhOT2IzYzdYRzRnSUgxY2JseHVJQ0J5WlhSMWNtNGdibVYzSUVSaGRHVlVhVzFsS0hzZ2RITXNJSHB2Ym1Vc0lHeHZZeXdnYnlCOUtUdGNibjFjYmx4dVpuVnVZM1JwYjI0Z1pHbG1abEpsYkdGMGFYWmxLSE4wWVhKMExDQmxibVFzSUc5d2RITXBJSHRjYmlBZ1kyOXVjM1FnY205MWJtUWdQU0JwYzFWdVpHVm1hVzVsWkNodmNIUnpMbkp2ZFc1a0tTQS9JSFJ5ZFdVZ09pQnZjSFJ6TG5KdmRXNWtMRnh1SUNBZ0lHWnZjbTFoZENBOUlDaGpMQ0IxYm1sMEtTQTlQaUI3WEc0Z0lDQWdJQ0JqSUQwZ2NtOTFibVJVYnloakxDQnliM1Z1WkNCOGZDQnZjSFJ6TG1OaGJHVnVaR0Z5ZVNBL0lEQWdPaUF5TENCMGNuVmxLVHRjYmlBZ0lDQWdJR052Ym5OMElHWnZjbTFoZEhSbGNpQTlJR1Z1WkM1c2IyTXVZMnh2Ym1Vb2IzQjBjeWt1Y21Wc1JtOXliV0YwZEdWeUtHOXdkSE1wTzF4dUlDQWdJQ0FnY21WMGRYSnVJR1p2Y20xaGRIUmxjaTVtYjNKdFlYUW9ZeXdnZFc1cGRDazdYRzRnSUNBZ2ZTeGNiaUFnSUNCa2FXWm1aWElnUFNBb2RXNXBkQ2tnUFQ0Z2UxeHVJQ0FnSUNBZ2FXWWdLRzl3ZEhNdVkyRnNaVzVrWVhKNUtTQjdYRzRnSUNBZ0lDQWdJR2xtSUNnaFpXNWtMbWhoYzFOaGJXVW9jM1JoY25Rc0lIVnVhWFFwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlHVnVaQzV6ZEdGeWRFOW1LSFZ1YVhRcExtUnBabVlvYzNSaGNuUXVjM1JoY25SUFppaDFibWwwS1N3Z2RXNXBkQ2t1WjJWMEtIVnVhWFFwTzF4dUlDQWdJQ0FnSUNCOUlHVnNjMlVnY21WMGRYSnVJREE3WEc0Z0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdaVzVrTG1ScFptWW9jM1JoY25Rc0lIVnVhWFFwTG1kbGRDaDFibWwwS1R0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5TzF4dVhHNGdJR2xtSUNodmNIUnpMblZ1YVhRcElIdGNiaUFnSUNCeVpYUjFjbTRnWm05eWJXRjBLR1JwWm1abGNpaHZjSFJ6TG5WdWFYUXBMQ0J2Y0hSekxuVnVhWFFwTzF4dUlDQjlYRzVjYmlBZ1ptOXlJQ2hqYjI1emRDQjFibWwwSUc5bUlHOXdkSE11ZFc1cGRITXBJSHRjYmlBZ0lDQmpiMjV6ZENCamIzVnVkQ0E5SUdScFptWmxjaWgxYm1sMEtUdGNiaUFnSUNCcFppQW9UV0YwYUM1aFluTW9ZMjkxYm5RcElENDlJREVwSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUJtYjNKdFlYUW9ZMjkxYm5Rc0lIVnVhWFFwTzF4dUlDQWdJSDFjYmlBZ2ZWeHVJQ0J5WlhSMWNtNGdabTl5YldGMEtITjBZWEowSUQ0Z1pXNWtJRDhnTFRBZ09pQXdMQ0J2Y0hSekxuVnVhWFJ6VzI5d2RITXVkVzVwZEhNdWJHVnVaM1JvSUMwZ01WMHBPMXh1ZlZ4dVhHNW1kVzVqZEdsdmJpQnNZWE4wVDNCMGN5aGhjbWRNYVhOMEtTQjdYRzRnSUd4bGRDQnZjSFJ6SUQwZ2UzMHNYRzRnSUNBZ1lYSm5jenRjYmlBZ2FXWWdLR0Z5WjB4cGMzUXViR1Z1WjNSb0lENGdNQ0FtSmlCMGVYQmxiMllnWVhKblRHbHpkRnRoY21kTWFYTjBMbXhsYm1kMGFDQXRJREZkSUQwOVBTQmNJbTlpYW1WamRGd2lLU0I3WEc0Z0lDQWdiM0IwY3lBOUlHRnlaMHhwYzNSYllYSm5UR2x6ZEM1c1pXNW5kR2dnTFNBeFhUdGNiaUFnSUNCaGNtZHpJRDBnUVhKeVlYa3Vabkp2YlNoaGNtZE1hWE4wS1M1emJHbGpaU2d3TENCaGNtZE1hWE4wTG14bGJtZDBhQ0F0SURFcE8xeHVJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lHRnlaM01nUFNCQmNuSmhlUzVtY205dEtHRnlaMHhwYzNRcE8xeHVJQ0I5WEc0Z0lISmxkSFZ5YmlCYmIzQjBjeXdnWVhKbmMxMDdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1FTQkVZWFJsVkdsdFpTQnBjeUJoYmlCcGJXMTFkR0ZpYkdVZ1pHRjBZU0J6ZEhKMVkzUjFjbVVnY21Wd2NtVnpaVzUwYVc1bklHRWdjM0JsWTJsbWFXTWdaR0YwWlNCaGJtUWdkR2x0WlNCaGJtUWdZV05qYjIxd1lXNTVhVzVuSUcxbGRHaHZaSE11SUVsMElHTnZiblJoYVc1eklHTnNZWE56SUdGdVpDQnBibk4wWVc1alpTQnRaWFJvYjJSeklHWnZjaUJqY21WaGRHbHVaeXdnY0dGeWMybHVaeXdnYVc1MFpYSnliMmRoZEdsdVp5d2dkSEpoYm5ObWIzSnRhVzVuTENCaGJtUWdabTl5YldGMGRHbHVaeUIwYUdWdExseHVJQ3BjYmlBcUlFRWdSR0YwWlZScGJXVWdZMjl0Y0hKcGMyVnpJRzltT2x4dUlDb2dLaUJCSUhScGJXVnpkR0Z0Y0M0Z1JXRmphQ0JFWVhSbFZHbHRaU0JwYm5OMFlXNWpaU0J5WldabGNuTWdkRzhnWVNCemNHVmphV1pwWXlCdGFXeHNhWE5sWTI5dVpDQnZaaUIwYUdVZ1ZXNXBlQ0JsY0c5amFDNWNiaUFxSUNvZ1FTQjBhVzFsSUhwdmJtVXVJRVZoWTJnZ2FXNXpkR0Z1WTJVZ2FYTWdZMjl1YzJsa1pYSmxaQ0JwYmlCMGFHVWdZMjl1ZEdWNGRDQnZaaUJoSUhOd1pXTnBabWxqSUhwdmJtVWdLR0o1SUdSbFptRjFiSFFnZEdobElHeHZZMkZzSUhONWMzUmxiU2R6SUhwdmJtVXBMbHh1SUNvZ0tpQkRiMjVtYVdkMWNtRjBhVzl1SUhCeWIzQmxjblJwWlhNZ2RHaGhkQ0JsWm1abFkzUWdhRzkzSUc5MWRIQjFkQ0J6ZEhKcGJtZHpJR0Z5WlNCbWIzSnRZWFIwWldRc0lITjFZMmdnWVhNZ1lHeHZZMkZzWldBc0lHQnVkVzFpWlhKcGJtZFRlWE4wWlcxZ0xDQmhibVFnWUc5MWRIQjFkRU5oYkdWdVpHRnlZQzVjYmlBcVhHNGdLaUJJWlhKbElHbHpJR0VnWW5KcFpXWWdiM1psY25acFpYY2diMllnZEdobElHMXZjM1FnWTI5dGJXOXViSGtnZFhObFpDQm1kVzVqZEdsdmJtRnNhWFI1SUdsMElIQnliM1pwWkdWek9seHVJQ3BjYmlBcUlDb2dLaXBEY21WaGRHbHZiaW9xT2lCVWJ5QmpjbVZoZEdVZ1lTQkVZWFJsVkdsdFpTQm1jbTl0SUdsMGN5QmpiMjF3YjI1bGJuUnpMQ0IxYzJVZ2IyNWxJRzltSUdsMGN5Qm1ZV04wYjNKNUlHTnNZWE56SUcxbGRHaHZaSE02SUh0QWJHbHVheUJFWVhSbFZHbHRaU05zYjJOaGJIMHNJSHRBYkdsdWF5QkVZWFJsVkdsdFpTTjFkR045TENCaGJtUWdLRzF2YzNRZ1pteGxlR2xpYkhrcElIdEFiR2x1YXlCRVlYUmxWR2x0WlNObWNtOXRUMkpxWldOMGZTNGdWRzhnWTNKbFlYUmxJRzl1WlNCbWNtOXRJR0VnYzNSaGJtUmhjbVFnYzNSeWFXNW5JR1p2Y20xaGRDd2dkWE5sSUh0QWJHbHVheUJFWVhSbFZHbHRaU05tY205dFNWTlBmU3dnZTBCc2FXNXJJRVJoZEdWVWFXMWxJMlp5YjIxSVZGUlFmU3dnWVc1a0lIdEFiR2x1YXlCRVlYUmxWR2x0WlNObWNtOXRVa1pETWpneU1uMHVJRlJ2SUdOeVpXRjBaU0J2Ym1VZ1puSnZiU0JoSUdOMWMzUnZiU0J6ZEhKcGJtY2dabTl5YldGMExDQjFjMlVnZTBCc2FXNXJJRVJoZEdWVWFXMWxJMlp5YjIxR2IzSnRZWFI5TGlCVWJ5QmpjbVZoZEdVZ2IyNWxJR1p5YjIwZ1lTQnVZWFJwZG1VZ1NsTWdaR0YwWlN3Z2RYTmxJSHRBYkdsdWF5QkVZWFJsVkdsdFpTTm1jbTl0U2xORVlYUmxmUzVjYmlBcUlDb2dLaXBIY21WbmIzSnBZVzRnWTJGc1pXNWtZWElnWVc1a0lIUnBiV1VxS2pvZ1ZHOGdaWGhoYldsdVpTQjBhR1VnUjNKbFoyOXlhV0Z1SUhCeWIzQmxjblJwWlhNZ2IyWWdZU0JFWVhSbFZHbHRaU0JwYm1ScGRtbGtkV0ZzYkhrZ0tHa3VaU0JoY3lCdmNIQnZjMlZrSUhSdklHTnZiR3hsWTNScGRtVnNlU0IwYUhKdmRXZG9JSHRBYkdsdWF5QkVZWFJsVkdsdFpTTjBiMDlpYW1WamRIMHBMQ0IxYzJVZ2RHaGxJSHRBYkdsdWF5QkVZWFJsVkdsdFpTTjVaV0Z5ZlN3Z2UwQnNhVzVySUVSaGRHVlVhVzFsSTIxdmJuUm9mU3hjYmlBcUlIdEFiR2x1YXlCRVlYUmxWR2x0WlNOa1lYbDlMQ0I3UUd4cGJtc2dSR0YwWlZScGJXVWphRzkxY24wc0lIdEFiR2x1YXlCRVlYUmxWR2x0WlNOdGFXNTFkR1Y5TENCN1FHeHBibXNnUkdGMFpWUnBiV1VqYzJWamIyNWtmU3dnZTBCc2FXNXJJRVJoZEdWVWFXMWxJMjFwYkd4cGMyVmpiMjVrZlNCaFkyTmxjM052Y25NdVhHNGdLaUFxSUNvcVYyVmxheUJqWVd4bGJtUmhjaW9xT2lCR2IzSWdTVk5QSUhkbFpXc2dZMkZzWlc1a1lYSWdZWFIwY21saWRYUmxjeXdnYzJWbElIUm9aU0I3UUd4cGJtc2dSR0YwWlZScGJXVWpkMlZsYTFsbFlYSjlMQ0I3UUd4cGJtc2dSR0YwWlZScGJXVWpkMlZsYTA1MWJXSmxjbjBzSUdGdVpDQjdRR3hwYm1zZ1JHRjBaVlJwYldVamQyVmxhMlJoZVgwZ1lXTmpaWE56YjNKekxseHVJQ29nS2lBcUtrTnZibVpwWjNWeVlYUnBiMjRxS2lCVFpXVWdkR2hsSUh0QWJHbHVheUJFWVhSbFZHbHRaU05zYjJOaGJHVjlJR0Z1WkNCN1FHeHBibXNnUkdGMFpWUnBiV1VqYm5WdFltVnlhVzVuVTNsemRHVnRmU0JoWTJObGMzTnZjbk11WEc0Z0tpQXFJQ29xVkhKaGJuTm1iM0p0WVhScGIyNHFLam9nVkc4Z2RISmhibk5tYjNKdElIUm9aU0JFWVhSbFZHbHRaU0JwYm5SdklHOTBhR1Z5SUVSaGRHVlVhVzFsY3l3Z2RYTmxJSHRBYkdsdWF5QkVZWFJsVkdsdFpTTnpaWFI5TENCN1FHeHBibXNnUkdGMFpWUnBiV1VqY21WamIyNW1hV2QxY21WOUxDQjdRR3hwYm1zZ1JHRjBaVlJwYldVamMyVjBXbTl1Wlgwc0lIdEFiR2x1YXlCRVlYUmxWR2x0WlNOelpYUk1iMk5oYkdWOUxDQjdRR3hwYm1zZ1JHRjBaVlJwYldVdWNHeDFjMzBzSUh0QWJHbHVheUJFWVhSbFZHbHRaU050YVc1MWMzMHNJSHRBYkdsdWF5QkVZWFJsVkdsdFpTTmxibVJQWm4wc0lIdEFiR2x1YXlCRVlYUmxWR2x0WlNOemRHRnlkRTltZlN3Z2UwQnNhVzVySUVSaGRHVlVhVzFsSTNSdlZWUkRmU3dnWVc1a0lIdEFiR2x1YXlCRVlYUmxWR2x0WlNOMGIweHZZMkZzZlM1Y2JpQXFJQ29nS2lwUGRYUndkWFFxS2pvZ1ZHOGdZMjl1ZG1WeWRDQjBhR1VnUkdGMFpWUnBiV1VnZEc4Z2IzUm9aWElnY21Wd2NtVnpaVzUwWVhScGIyNXpMQ0IxYzJVZ2RHaGxJSHRBYkdsdWF5QkVZWFJsVkdsdFpTTjBiMUpsYkdGMGFYWmxmU3dnZTBCc2FXNXJJRVJoZEdWVWFXMWxJM1J2VW1Wc1lYUnBkbVZEWVd4bGJtUmhjbjBzSUh0QWJHbHVheUJFWVhSbFZHbHRaU04wYjBwVFQwNTlMQ0I3UUd4cGJtc2dSR0YwWlZScGJXVWpkRzlKVTA5OUxDQjdRR3hwYm1zZ1JHRjBaVlJwYldVamRHOUlWRlJRZlN3Z2UwQnNhVzVySUVSaGRHVlVhVzFsSTNSdlQySnFaV04wZlN3Z2UwQnNhVzVySUVSaGRHVlVhVzFsSTNSdlVrWkRNamd5TW4wc0lIdEFiR2x1YXlCRVlYUmxWR2x0WlNOMGIxTjBjbWx1WjMwc0lIdEFiR2x1YXlCRVlYUmxWR2x0WlNOMGIweHZZMkZzWlZOMGNtbHVaMzBzSUh0QWJHbHVheUJFWVhSbFZHbHRaU04wYjBadmNtMWhkSDBzSUh0QWJHbHVheUJFWVhSbFZHbHRaU04wYjAxcGJHeHBjMzBnWVc1a0lIdEFiR2x1YXlCRVlYUmxWR2x0WlNOMGIwcFRSR0YwWlgwdVhHNGdLbHh1SUNvZ1ZHaGxjbVVuY3lCd2JHVnVkSGtnYjNSb1pYSnpJR1J2WTNWdFpXNTBaV1FnWW1Wc2IzY3VJRWx1SUdGa1pHbDBhVzl1TENCbWIzSWdiVzl5WlNCcGJtWnZjbTFoZEdsdmJpQnZiaUJ6ZFdKMGJHVnlJSFJ2Y0dsamN5QnNhV3RsSUdsdWRHVnlibUYwYVc5dVlXeHBlbUYwYVc5dUxDQjBhVzFsSUhwdmJtVnpMQ0JoYkhSbGNtNWhkR2wyWlNCallXeGxibVJoY25Nc0lIWmhiR2xrYVhSNUxDQmhibVFnYzI4Z2IyNHNJSE5sWlNCMGFHVWdaWGgwWlhKdVlXd2daRzlqZFcxbGJuUmhkR2x2Ymk1Y2JpQXFMMXh1Wlhod2IzSjBJR1JsWm1GMWJIUWdZMnhoYzNNZ1JHRjBaVlJwYldVZ2UxeHVJQ0F2S2lwY2JpQWdJQ29nUUdGalkyVnpjeUJ3Y21sMllYUmxYRzRnSUNBcUwxeHVJQ0JqYjI1emRISjFZM1J2Y2loamIyNW1hV2NwSUh0Y2JpQWdJQ0JqYjI1emRDQjZiMjVsSUQwZ1kyOXVabWxuTG5wdmJtVWdmSHdnVTJWMGRHbHVaM011WkdWbVlYVnNkRnB2Ym1VN1hHNWNiaUFnSUNCc1pYUWdhVzUyWVd4cFpDQTlYRzRnSUNBZ0lDQmpiMjVtYVdjdWFXNTJZV3hwWkNCOGZGeHVJQ0FnSUNBZ0tFNTFiV0psY2k1cGMwNWhUaWhqYjI1bWFXY3VkSE1wSUQ4Z2JtVjNJRWx1ZG1Gc2FXUW9YQ0pwYm5aaGJHbGtJR2x1Y0hWMFhDSXBJRG9nYm5Wc2JDa2dmSHhjYmlBZ0lDQWdJQ2doZW05dVpTNXBjMVpoYkdsa0lEOGdkVzV6ZFhCd2IzSjBaV1JhYjI1bEtIcHZibVVwSURvZ2JuVnNiQ2s3WEc0Z0lDQWdMeW9xWEc0Z0lDQWdJQ29nUUdGalkyVnpjeUJ3Y21sMllYUmxYRzRnSUNBZ0lDb3ZYRzRnSUNBZ2RHaHBjeTUwY3lBOUlHbHpWVzVrWldacGJtVmtLR052Ym1acFp5NTBjeWtnUHlCVFpYUjBhVzVuY3k1dWIzY29LU0E2SUdOdmJtWnBaeTUwY3p0Y2JseHVJQ0FnSUd4bGRDQmpJRDBnYm5Wc2JDeGNiaUFnSUNBZ0lHOGdQU0J1ZFd4c08xeHVJQ0FnSUdsbUlDZ2hhVzUyWVd4cFpDa2dlMXh1SUNBZ0lDQWdZMjl1YzNRZ2RXNWphR0Z1WjJWa0lEMGdZMjl1Wm1sbkxtOXNaQ0FtSmlCamIyNW1hV2N1YjJ4a0xuUnpJRDA5UFNCMGFHbHpMblJ6SUNZbUlHTnZibVpwWnk1dmJHUXVlbTl1WlM1bGNYVmhiSE1vZW05dVpTazdYRzVjYmlBZ0lDQWdJR2xtSUNoMWJtTm9ZVzVuWldRcElIdGNiaUFnSUNBZ0lDQWdXMk1zSUc5ZElEMGdXMk52Ym1acFp5NXZiR1F1WXl3Z1kyOXVabWxuTG05c1pDNXZYVHRjYmlBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJR052Ym5OMElHOTBJRDBnZW05dVpTNXZabVp6WlhRb2RHaHBjeTUwY3lrN1hHNGdJQ0FnSUNBZ0lHTWdQU0IwYzFSdlQySnFLSFJvYVhNdWRITXNJRzkwS1R0Y2JpQWdJQ0FnSUNBZ2FXNTJZV3hwWkNBOUlFNTFiV0psY2k1cGMwNWhUaWhqTG5sbFlYSXBJRDhnYm1WM0lFbHVkbUZzYVdRb1hDSnBiblpoYkdsa0lHbHVjSFYwWENJcElEb2diblZzYkR0Y2JpQWdJQ0FnSUNBZ1l5QTlJR2x1ZG1Gc2FXUWdQeUJ1ZFd4c0lEb2dZenRjYmlBZ0lDQWdJQ0FnYnlBOUlHbHVkbUZzYVdRZ1B5QnVkV3hzSURvZ2IzUTdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVYRzRnSUNBZ0x5b3FYRzRnSUNBZ0lDb2dRR0ZqWTJWemN5QndjbWwyWVhSbFhHNGdJQ0FnSUNvdlhHNGdJQ0FnZEdocGN5NWZlbTl1WlNBOUlIcHZibVU3WEc0Z0lDQWdMeW9xWEc0Z0lDQWdJQ29nUUdGalkyVnpjeUJ3Y21sMllYUmxYRzRnSUNBZ0lDb3ZYRzRnSUNBZ2RHaHBjeTVzYjJNZ1BTQmpiMjVtYVdjdWJHOWpJSHg4SUV4dlkyRnNaUzVqY21WaGRHVW9LVHRjYmlBZ0lDQXZLaXBjYmlBZ0lDQWdLaUJBWVdOalpYTnpJSEJ5YVhaaGRHVmNiaUFnSUNBZ0tpOWNiaUFnSUNCMGFHbHpMbWx1ZG1Gc2FXUWdQU0JwYm5aaGJHbGtPMXh1SUNBZ0lDOHFLbHh1SUNBZ0lDQXFJRUJoWTJObGMzTWdjSEpwZG1GMFpWeHVJQ0FnSUNBcUwxeHVJQ0FnSUhSb2FYTXVkMlZsYTBSaGRHRWdQU0J1ZFd4c08xeHVJQ0FnSUM4cUtseHVJQ0FnSUNBcUlFQmhZMk5sYzNNZ2NISnBkbUYwWlZ4dUlDQWdJQ0FxTDF4dUlDQWdJSFJvYVhNdVl5QTlJR003WEc0Z0lDQWdMeW9xWEc0Z0lDQWdJQ29nUUdGalkyVnpjeUJ3Y21sMllYUmxYRzRnSUNBZ0lDb3ZYRzRnSUNBZ2RHaHBjeTV2SUQwZ2J6dGNiaUFnSUNBdktpcGNiaUFnSUNBZ0tpQkFZV05qWlhOeklIQnlhWFpoZEdWY2JpQWdJQ0FnS2k5Y2JpQWdJQ0IwYUdsekxtbHpUSFY0YjI1RVlYUmxWR2x0WlNBOUlIUnlkV1U3WEc0Z0lIMWNibHh1SUNBdkx5QkRUMDVUVkZKVlExUmNibHh1SUNBdktpcGNiaUFnSUNvZ1EzSmxZWFJsSUdFZ1JHRjBaVlJwYldVZ1ptOXlJSFJvWlNCamRYSnlaVzUwSUdsdWMzUmhiblFzSUdsdUlIUm9aU0J6ZVhOMFpXMG5jeUIwYVcxbElIcHZibVV1WEc0Z0lDQXFYRzRnSUNBcUlGVnpaU0JUWlhSMGFXNW5jeUIwYnlCdmRtVnljbWxrWlNCMGFHVnpaU0JrWldaaGRXeDBJSFpoYkhWbGN5QnBaaUJ1WldWa1pXUXVYRzRnSUNBcUlFQmxlR0Z0Y0d4bElFUmhkR1ZVYVcxbExtNXZkeWdwTG5SdlNWTlBLQ2tnTHk5K1BpQnViM2NnYVc0Z2RHaGxJRWxUVHlCbWIzSnRZWFJjYmlBZ0lDb2dRSEpsZEhWeWJpQjdSR0YwWlZScGJXVjlYRzRnSUNBcUwxeHVJQ0J6ZEdGMGFXTWdibTkzS0NrZ2UxeHVJQ0FnSUhKbGRIVnliaUJ1WlhjZ1JHRjBaVlJwYldVb2UzMHBPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUVOeVpXRjBaU0JoSUd4dlkyRnNJRVJoZEdWVWFXMWxYRzRnSUNBcUlFQndZWEpoYlNCN2JuVnRZbVZ5ZlNCYmVXVmhjbDBnTFNCVWFHVWdZMkZzWlc1a1lYSWdlV1ZoY2k0Z1NXWWdiMjFwZEhSbFpDQW9ZWE1nYVc0c0lHTmhiR3dnWUd4dlkyRnNLQ2xnSUhkcGRHZ2dibThnWVhKbmRXMWxiblJ6S1N3Z2RHaGxJR04xY25KbGJuUWdkR2x0WlNCM2FXeHNJR0psSUhWelpXUmNiaUFnSUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEo5SUZ0dGIyNTBhRDB4WFNBdElGUm9aU0J0YjI1MGFDd2dNUzFwYm1SbGVHVmtYRzRnSUNBcUlFQndZWEpoYlNCN2JuVnRZbVZ5ZlNCYlpHRjVQVEZkSUMwZ1ZHaGxJR1JoZVNCdlppQjBhR1VnYlc5dWRHZ3NJREV0YVc1a1pYaGxaRnh1SUNBZ0tpQkFjR0Z5WVcwZ2UyNTFiV0psY24wZ1cyaHZkWEk5TUYwZ0xTQlVhR1VnYUc5MWNpQnZaaUIwYUdVZ1pHRjVMQ0JwYmlBeU5DMW9iM1Z5SUhScGJXVmNiaUFnSUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEo5SUZ0dGFXNTFkR1U5TUYwZ0xTQlVhR1VnYldsdWRYUmxJRzltSUhSb1pTQm9iM1Z5TENCdFpXRnVhVzVuSUdFZ2JuVnRZbVZ5SUdKbGRIZGxaVzRnTUNCaGJtUWdOVGxjYmlBZ0lDb2dRSEJoY21GdElIdHVkVzFpWlhKOUlGdHpaV052Ym1ROU1GMGdMU0JVYUdVZ2MyVmpiMjVrSUc5bUlIUm9aU0J0YVc1MWRHVXNJRzFsWVc1cGJtY2dZU0J1ZFcxaVpYSWdZbVYwZDJWbGJpQXdJR0Z1WkNBMU9WeHVJQ0FnS2lCQWNHRnlZVzBnZTI1MWJXSmxjbjBnVzIxcGJHeHBjMlZqYjI1a1BUQmRJQzBnVkdobElHMXBiR3hwYzJWamIyNWtJRzltSUhSb1pTQnpaV052Ym1Rc0lHMWxZVzVwYm1jZ1lTQnVkVzFpWlhJZ1ltVjBkMlZsYmlBd0lHRnVaQ0E1T1RsY2JpQWdJQ29nUUdWNFlXMXdiR1VnUkdGMFpWUnBiV1V1Ykc5allXd29LU0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQXZMMzQrSUc1dmQxeHVJQ0FnS2lCQVpYaGhiWEJzWlNCRVlYUmxWR2x0WlM1c2IyTmhiQ2g3SUhwdmJtVTZJRndpUVcxbGNtbGpZUzlPWlhkZldXOXlhMXdpSUgwcElDQWdJQ0FnTHk5K1BpQnViM2NzSUdsdUlGVlRJR1ZoYzNRZ1kyOWhjM1FnZEdsdFpWeHVJQ0FnS2lCQVpYaGhiWEJzWlNCRVlYUmxWR2x0WlM1c2IyTmhiQ2d5TURFM0tTQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQzh2Zmo0Z01qQXhOeTB3TVMwd01WUXdNRG93TURvd01GeHVJQ0FnS2lCQVpYaGhiWEJzWlNCRVlYUmxWR2x0WlM1c2IyTmhiQ2d5TURFM0xDQXpLU0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQzh2Zmo0Z01qQXhOeTB3TXkwd01WUXdNRG93TURvd01GeHVJQ0FnS2lCQVpYaGhiWEJzWlNCRVlYUmxWR2x0WlM1c2IyTmhiQ2d5TURFM0xDQXpMQ0F4TWl3Z2V5QnNiMk5oYkdVNklGd2labkpjSWlCOUtTQWdJQ0FnTHk5K1BpQXlNREUzTFRBekxURXlWREF3T2pBd09qQXdMQ0IzYVhSb0lHRWdSbkpsYm1Ob0lHeHZZMkZzWlZ4dUlDQWdLaUJBWlhoaGJYQnNaU0JFWVhSbFZHbHRaUzVzYjJOaGJDZ3lNREUzTENBekxDQXhNaXdnTlNrZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDOHZmajRnTWpBeE55MHdNeTB4TWxRd05Ub3dNRG93TUZ4dUlDQWdLaUJBWlhoaGJYQnNaU0JFWVhSbFZHbHRaUzVzYjJOaGJDZ3lNREUzTENBekxDQXhNaXdnTlN3Z2V5QjZiMjVsT2lCY0luVjBZMXdpSUgwcElDQWdMeTkrUGlBeU1ERTNMVEF6TFRFeVZEQTFPakF3T2pBd0xDQnBiaUJWVkVOY2JpQWdJQ29nUUdWNFlXMXdiR1VnUkdGMFpWUnBiV1V1Ykc5allXd29NakF4Tnl3Z015d2dNVElzSURVc0lEUTFLU0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQXZMMzQrSURJd01UY3RNRE10TVRKVU1EVTZORFU2TURCY2JpQWdJQ29nUUdWNFlXMXdiR1VnUkdGMFpWUnBiV1V1Ykc5allXd29NakF4Tnl3Z015d2dNVElzSURVc0lEUTFMQ0F4TUNrZ0lDQWdJQ0FnSUNBZ0lDQXZMMzQrSURJd01UY3RNRE10TVRKVU1EVTZORFU2TVRCY2JpQWdJQ29nUUdWNFlXMXdiR1VnUkdGMFpWUnBiV1V1Ykc5allXd29NakF4Tnl3Z015d2dNVElzSURVc0lEUTFMQ0F4TUN3Z056WTFLU0FnSUNBZ0lDQXZMMzQrSURJd01UY3RNRE10TVRKVU1EVTZORFU2TVRBdU56WTFYRzRnSUNBcUlFQnlaWFIxY200Z2UwUmhkR1ZVYVcxbGZWeHVJQ0FnS2k5Y2JpQWdjM1JoZEdsaklHeHZZMkZzS0NrZ2UxeHVJQ0FnSUdOdmJuTjBJRnR2Y0hSekxDQmhjbWR6WFNBOUlHeGhjM1JQY0hSektHRnlaM1Z0Wlc1MGN5a3NYRzRnSUNBZ0lDQmJlV1ZoY2l3Z2JXOXVkR2dzSUdSaGVTd2dhRzkxY2l3Z2JXbHVkWFJsTENCelpXTnZibVFzSUcxcGJHeHBjMlZqYjI1a1hTQTlJR0Z5WjNNN1hHNGdJQ0FnY21WMGRYSnVJSEYxYVdOclJGUW9leUI1WldGeUxDQnRiMjUwYUN3Z1pHRjVMQ0JvYjNWeUxDQnRhVzUxZEdVc0lITmxZMjl1WkN3Z2JXbHNiR2x6WldOdmJtUWdmU3dnYjNCMGN5azdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nUTNKbFlYUmxJR0VnUkdGMFpWUnBiV1VnYVc0Z1ZWUkRYRzRnSUNBcUlFQndZWEpoYlNCN2JuVnRZbVZ5ZlNCYmVXVmhjbDBnTFNCVWFHVWdZMkZzWlc1a1lYSWdlV1ZoY2k0Z1NXWWdiMjFwZEhSbFpDQW9ZWE1nYVc0c0lHTmhiR3dnWUhWMFl5Z3BZQ0IzYVhSb0lHNXZJR0Z5WjNWdFpXNTBjeWtzSUhSb1pTQmpkWEp5Wlc1MElIUnBiV1VnZDJsc2JDQmlaU0IxYzJWa1hHNGdJQ0FxSUVCd1lYSmhiU0I3Ym5WdFltVnlmU0JiYlc5dWRHZzlNVjBnTFNCVWFHVWdiVzl1ZEdnc0lERXRhVzVrWlhobFpGeHVJQ0FnS2lCQWNHRnlZVzBnZTI1MWJXSmxjbjBnVzJSaGVUMHhYU0F0SUZSb1pTQmtZWGtnYjJZZ2RHaGxJRzF2Ym5Sb1hHNGdJQ0FxSUVCd1lYSmhiU0I3Ym5WdFltVnlmU0JiYUc5MWNqMHdYU0F0SUZSb1pTQm9iM1Z5SUc5bUlIUm9aU0JrWVhrc0lHbHVJREkwTFdodmRYSWdkR2x0WlZ4dUlDQWdLaUJBY0dGeVlXMGdlMjUxYldKbGNuMGdXMjFwYm5WMFpUMHdYU0F0SUZSb1pTQnRhVzUxZEdVZ2IyWWdkR2hsSUdodmRYSXNJRzFsWVc1cGJtY2dZU0J1ZFcxaVpYSWdZbVYwZDJWbGJpQXdJR0Z1WkNBMU9WeHVJQ0FnS2lCQWNHRnlZVzBnZTI1MWJXSmxjbjBnVzNObFkyOXVaRDB3WFNBdElGUm9aU0J6WldOdmJtUWdiMllnZEdobElHMXBiblYwWlN3Z2JXVmhibWx1WnlCaElHNTFiV0psY2lCaVpYUjNaV1Z1SURBZ1lXNWtJRFU1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdiblZ0WW1WeWZTQmJiV2xzYkdselpXTnZibVE5TUYwZ0xTQlVhR1VnYldsc2JHbHpaV052Ym1RZ2IyWWdkR2hsSUhObFkyOXVaQ3dnYldWaGJtbHVaeUJoSUc1MWJXSmxjaUJpWlhSM1pXVnVJREFnWVc1a0lEazVPVnh1SUNBZ0tpQkFjR0Z5WVcwZ2UwOWlhbVZqZEgwZ2IzQjBhVzl1Y3lBdElHTnZibVpwWjNWeVlYUnBiMjRnYjNCMGFXOXVjeUJtYjNJZ2RHaGxJRVJoZEdWVWFXMWxYRzRnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCYmIzQjBhVzl1Y3k1c2IyTmhiR1ZkSUMwZ1lTQnNiMk5oYkdVZ2RHOGdjMlYwSUc5dUlIUm9aU0J5WlhOMWJIUnBibWNnUkdGMFpWUnBiV1VnYVc1emRHRnVZMlZjYmlBZ0lDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlGdHZjSFJwYjI1ekxtOTFkSEIxZEVOaGJHVnVaR0Z5WFNBdElIUm9aU0J2ZFhSd2RYUWdZMkZzWlc1a1lYSWdkRzhnYzJWMElHOXVJSFJvWlNCeVpYTjFiSFJwYm1jZ1JHRjBaVlJwYldVZ2FXNXpkR0Z1WTJWY2JpQWdJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJRnR2Y0hScGIyNXpMbTUxYldKbGNtbHVaMU41YzNSbGJWMGdMU0IwYUdVZ2JuVnRZbVZ5YVc1bklITjVjM1JsYlNCMGJ5QnpaWFFnYjI0Z2RHaGxJSEpsYzNWc2RHbHVaeUJFWVhSbFZHbHRaU0JwYm5OMFlXNWpaVnh1SUNBZ0tpQkFaWGhoYlhCc1pTQkVZWFJsVkdsdFpTNTFkR01vS1NBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBdkwzNCtJRzV2ZDF4dUlDQWdLaUJBWlhoaGJYQnNaU0JFWVhSbFZHbHRaUzUxZEdNb01qQXhOeWtnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQXZMMzQrSURJd01UY3RNREV0TURGVU1EQTZNREE2TURCYVhHNGdJQ0FxSUVCbGVHRnRjR3hsSUVSaGRHVlVhVzFsTG5WMFl5Z3lNREUzTENBektTQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQzh2Zmo0Z01qQXhOeTB3TXkwd01WUXdNRG93TURvd01GcGNiaUFnSUNvZ1FHVjRZVzF3YkdVZ1JHRjBaVlJwYldVdWRYUmpLREl3TVRjc0lETXNJREV5S1NBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnTHk5K1BpQXlNREUzTFRBekxURXlWREF3T2pBd09qQXdXbHh1SUNBZ0tpQkFaWGhoYlhCc1pTQkVZWFJsVkdsdFpTNTFkR01vTWpBeE55d2dNeXdnTVRJc0lEVXBJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBdkwzNCtJREl3TVRjdE1ETXRNVEpVTURVNk1EQTZNREJhWEc0Z0lDQXFJRUJsZUdGdGNHeGxJRVJoZEdWVWFXMWxMblYwWXlneU1ERTNMQ0F6TENBeE1pd2dOU3dnTkRVcElDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDOHZmajRnTWpBeE55MHdNeTB4TWxRd05UbzBOVG93TUZwY2JpQWdJQ29nUUdWNFlXMXdiR1VnUkdGMFpWUnBiV1V1ZFhSaktESXdNVGNzSURNc0lERXlMQ0ExTENBME5Td2dleUJzYjJOaGJHVTZJRndpWm5KY0lpQjlLU0FnSUNBZ0lDQWdJQ0F2TDM0K0lESXdNVGN0TURNdE1USlVNRFU2TkRVNk1EQmFJSGRwZEdnZ1lTQkdjbVZ1WTJnZ2JHOWpZV3hsWEc0Z0lDQXFJRUJsZUdGdGNHeGxJRVJoZEdWVWFXMWxMblYwWXlneU1ERTNMQ0F6TENBeE1pd2dOU3dnTkRVc0lERXdLU0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDOHZmajRnTWpBeE55MHdNeTB4TWxRd05UbzBOVG94TUZwY2JpQWdJQ29nUUdWNFlXMXdiR1VnUkdGMFpWUnBiV1V1ZFhSaktESXdNVGNzSURNc0lERXlMQ0ExTENBME5Td2dNVEFzSURjMk5Td2dleUJzYjJOaGJHVTZJRndpWm5KY0lpQjlLU0F2TDM0K0lESXdNVGN0TURNdE1USlVNRFU2TkRVNk1UQXVOelkxV2lCM2FYUm9JR0VnUm5KbGJtTm9JR3h2WTJGc1pWeHVJQ0FnS2lCQWNtVjBkWEp1SUh0RVlYUmxWR2x0WlgxY2JpQWdJQ292WEc0Z0lITjBZWFJwWXlCMWRHTW9LU0I3WEc0Z0lDQWdZMjl1YzNRZ1cyOXdkSE1zSUdGeVozTmRJRDBnYkdGemRFOXdkSE1vWVhKbmRXMWxiblJ6S1N4Y2JpQWdJQ0FnSUZ0NVpXRnlMQ0J0YjI1MGFDd2daR0Y1TENCb2IzVnlMQ0J0YVc1MWRHVXNJSE5sWTI5dVpDd2diV2xzYkdselpXTnZibVJkSUQwZ1lYSm5jenRjYmx4dUlDQWdJRzl3ZEhNdWVtOXVaU0E5SUVacGVHVmtUMlptYzJWMFdtOXVaUzUxZEdOSmJuTjBZVzVqWlR0Y2JpQWdJQ0J5WlhSMWNtNGdjWFZwWTJ0RVZDaDdJSGxsWVhJc0lHMXZiblJvTENCa1lYa3NJR2h2ZFhJc0lHMXBiblYwWlN3Z2MyVmpiMjVrTENCdGFXeHNhWE5sWTI5dVpDQjlMQ0J2Y0hSektUdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJEY21WaGRHVWdZU0JFWVhSbFZHbHRaU0JtY205dElHRWdTbUYyWVZOamNtbHdkQ0JFWVhSbElHOWlhbVZqZEM0Z1ZYTmxjeUIwYUdVZ1pHVm1ZWFZzZENCNmIyNWxMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UwUmhkR1Y5SUdSaGRHVWdMU0JoSUVwaGRtRlRZM0pwY0hRZ1JHRjBaU0J2WW1wbFkzUmNiaUFnSUNvZ1FIQmhjbUZ0SUh0UFltcGxZM1I5SUc5d2RHbHZibk1nTFNCamIyNW1hV2QxY21GMGFXOXVJRzl3ZEdsdmJuTWdabTl5SUhSb1pTQkVZWFJsVkdsdFpWeHVJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaM3hhYjI1bGZTQmJiM0IwYVc5dWN5NTZiMjVsUFNkc2IyTmhiQ2RkSUMwZ2RHaGxJSHB2Ym1VZ2RHOGdjR3hoWTJVZ2RHaGxJRVJoZEdWVWFXMWxJR2x1ZEc5Y2JpQWdJQ29nUUhKbGRIVnliaUI3UkdGMFpWUnBiV1Y5WEc0Z0lDQXFMMXh1SUNCemRHRjBhV01nWm5KdmJVcFRSR0YwWlNoa1lYUmxMQ0J2Y0hScGIyNXpJRDBnZTMwcElIdGNiaUFnSUNCamIyNXpkQ0IwY3lBOUlHbHpSR0YwWlNoa1lYUmxLU0EvSUdSaGRHVXVkbUZzZFdWUFppZ3BJRG9nVG1GT08xeHVJQ0FnSUdsbUlDaE9kVzFpWlhJdWFYTk9ZVTRvZEhNcEtTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z1JHRjBaVlJwYldVdWFXNTJZV3hwWkNoY0ltbHVkbUZzYVdRZ2FXNXdkWFJjSWlrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnWTI5dWMzUWdlbTl1WlZSdlZYTmxJRDBnYm05eWJXRnNhWHBsV205dVpTaHZjSFJwYjI1ekxucHZibVVzSUZObGRIUnBibWR6TG1SbFptRjFiSFJhYjI1bEtUdGNiaUFnSUNCcFppQW9JWHB2Ym1WVWIxVnpaUzVwYzFaaGJHbGtLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdSR0YwWlZScGJXVXVhVzUyWVd4cFpDaDFibk4xY0hCdmNuUmxaRnB2Ym1Vb2VtOXVaVlJ2VlhObEtTazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2NtVjBkWEp1SUc1bGR5QkVZWFJsVkdsdFpTaDdYRzRnSUNBZ0lDQjBjem9nZEhNc1hHNGdJQ0FnSUNCNmIyNWxPaUI2YjI1bFZHOVZjMlVzWEc0Z0lDQWdJQ0JzYjJNNklFeHZZMkZzWlM1bWNtOXRUMkpxWldOMEtHOXdkR2x2Ym5NcExGeHVJQ0FnSUgwcE8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRU55WldGMFpTQmhJRVJoZEdWVWFXMWxJR1p5YjIwZ1lTQnVkVzFpWlhJZ2IyWWdiV2xzYkdselpXTnZibVJ6SUhOcGJtTmxJSFJvWlNCbGNHOWphQ0FvYldWaGJtbHVaeUJ6YVc1alpTQXhJRXBoYm5WaGNua2dNVGszTUNBd01Eb3dNRG93TUNCVlZFTXBMaUJWYzJWeklIUm9aU0JrWldaaGRXeDBJSHB2Ym1VdVhHNGdJQ0FxSUVCd1lYSmhiU0I3Ym5WdFltVnlmU0J0YVd4c2FYTmxZMjl1WkhNZ0xTQmhJRzUxYldKbGNpQnZaaUJ0YVd4c2FYTmxZMjl1WkhNZ2MybHVZMlVnTVRrM01DQlZWRU5jYmlBZ0lDb2dRSEJoY21GdElIdFBZbXBsWTNSOUlHOXdkR2x2Ym5NZ0xTQmpiMjVtYVdkMWNtRjBhVzl1SUc5d2RHbHZibk1nWm05eUlIUm9aU0JFWVhSbFZHbHRaVnh1SUNBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjN4YWIyNWxmU0JiYjNCMGFXOXVjeTU2YjI1bFBTZHNiMk5oYkNkZElDMGdkR2hsSUhwdmJtVWdkRzhnY0d4aFkyVWdkR2hsSUVSaGRHVlVhVzFsSUdsdWRHOWNiaUFnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUZ0dmNIUnBiMjV6TG14dlkyRnNaVjBnTFNCaElHeHZZMkZzWlNCMGJ5QnpaWFFnYjI0Z2RHaGxJSEpsYzNWc2RHbHVaeUJFWVhSbFZHbHRaU0JwYm5OMFlXNWpaVnh1SUNBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2IzQjBhVzl1Y3k1dmRYUndkWFJEWVd4bGJtUmhjaUF0SUhSb1pTQnZkWFJ3ZFhRZ1kyRnNaVzVrWVhJZ2RHOGdjMlYwSUc5dUlIUm9aU0J5WlhOMWJIUnBibWNnUkdGMFpWUnBiV1VnYVc1emRHRnVZMlZjYmlBZ0lDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlHOXdkR2x2Ym5NdWJuVnRZbVZ5YVc1blUzbHpkR1Z0SUMwZ2RHaGxJRzUxYldKbGNtbHVaeUJ6ZVhOMFpXMGdkRzhnYzJWMElHOXVJSFJvWlNCeVpYTjFiSFJwYm1jZ1JHRjBaVlJwYldVZ2FXNXpkR0Z1WTJWY2JpQWdJQ29nUUhKbGRIVnliaUI3UkdGMFpWUnBiV1Y5WEc0Z0lDQXFMMXh1SUNCemRHRjBhV01nWm5KdmJVMXBiR3hwY3lodGFXeHNhWE5sWTI5dVpITXNJRzl3ZEdsdmJuTWdQU0I3ZlNrZ2UxeHVJQ0FnSUdsbUlDZ2hhWE5PZFcxaVpYSW9iV2xzYkdselpXTnZibVJ6S1NrZ2UxeHVJQ0FnSUNBZ2RHaHliM2NnYm1WM0lFbHVkbUZzYVdSQmNtZDFiV1Z1ZEVWeWNtOXlLRnh1SUNBZ0lDQWdJQ0JnWm5KdmJVMXBiR3hwY3lCeVpYRjFhWEpsY3lCaElHNTFiV1Z5YVdOaGJDQnBibkIxZEN3Z1luVjBJSEpsWTJWcGRtVmtJR0VnSkh0MGVYQmxiMllnYldsc2JHbHpaV052Ym1SemZTQjNhWFJvSUhaaGJIVmxJQ1I3Yldsc2JHbHpaV052Ym1SemZXQmNiaUFnSUNBZ0lDazdYRzRnSUNBZ2ZTQmxiSE5sSUdsbUlDaHRhV3hzYVhObFkyOXVaSE1nUENBdFRVRllYMFJCVkVVZ2ZId2diV2xzYkdselpXTnZibVJ6SUQ0Z1RVRllYMFJCVkVVcElIdGNiaUFnSUNBZ0lDOHZJSFJvYVhNZ2FYTnVKM1FnY0dWeVptVmpkQ0JpWldOaGRYTmxJR0psWTJGMWMyVWdkMlVnWTJGdUlITjBhV3hzSUdWdVpDQjFjQ0J2ZFhRZ2IyWWdjbUZ1WjJVZ1ltVmpZWFZ6WlNCdlppQmhaR1JwZEdsdmJtRnNJSE5vYVdaMGFXNW5MQ0JpZFhRZ2FYUW5jeUJoSUhOMFlYSjBYRzRnSUNBZ0lDQnlaWFIxY200Z1JHRjBaVlJwYldVdWFXNTJZV3hwWkNoY0lsUnBiV1Z6ZEdGdGNDQnZkWFFnYjJZZ2NtRnVaMlZjSWlrN1hHNGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJSEpsZEhWeWJpQnVaWGNnUkdGMFpWUnBiV1VvZTF4dUlDQWdJQ0FnSUNCMGN6b2diV2xzYkdselpXTnZibVJ6TEZ4dUlDQWdJQ0FnSUNCNmIyNWxPaUJ1YjNKdFlXeHBlbVZhYjI1bEtHOXdkR2x2Ym5NdWVtOXVaU3dnVTJWMGRHbHVaM011WkdWbVlYVnNkRnB2Ym1VcExGeHVJQ0FnSUNBZ0lDQnNiMk02SUV4dlkyRnNaUzVtY205dFQySnFaV04wS0c5d2RHbHZibk1wTEZ4dUlDQWdJQ0FnZlNrN1hHNGdJQ0FnZlZ4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFTnlaV0YwWlNCaElFUmhkR1ZVYVcxbElHWnliMjBnWVNCdWRXMWlaWElnYjJZZ2MyVmpiMjVrY3lCemFXNWpaU0IwYUdVZ1pYQnZZMmdnS0cxbFlXNXBibWNnYzJsdVkyVWdNU0JLWVc1MVlYSjVJREU1TnpBZ01EQTZNREE2TURBZ1ZWUkRLUzRnVlhObGN5QjBhR1VnWkdWbVlYVnNkQ0I2YjI1bExseHVJQ0FnS2lCQWNHRnlZVzBnZTI1MWJXSmxjbjBnYzJWamIyNWtjeUF0SUdFZ2JuVnRZbVZ5SUc5bUlITmxZMjl1WkhNZ2MybHVZMlVnTVRrM01DQlZWRU5jYmlBZ0lDb2dRSEJoY21GdElIdFBZbXBsWTNSOUlHOXdkR2x2Ym5NZ0xTQmpiMjVtYVdkMWNtRjBhVzl1SUc5d2RHbHZibk1nWm05eUlIUm9aU0JFWVhSbFZHbHRaVnh1SUNBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjN4YWIyNWxmU0JiYjNCMGFXOXVjeTU2YjI1bFBTZHNiMk5oYkNkZElDMGdkR2hsSUhwdmJtVWdkRzhnY0d4aFkyVWdkR2hsSUVSaGRHVlVhVzFsSUdsdWRHOWNiaUFnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUZ0dmNIUnBiMjV6TG14dlkyRnNaVjBnTFNCaElHeHZZMkZzWlNCMGJ5QnpaWFFnYjI0Z2RHaGxJSEpsYzNWc2RHbHVaeUJFWVhSbFZHbHRaU0JwYm5OMFlXNWpaVnh1SUNBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2IzQjBhVzl1Y3k1dmRYUndkWFJEWVd4bGJtUmhjaUF0SUhSb1pTQnZkWFJ3ZFhRZ1kyRnNaVzVrWVhJZ2RHOGdjMlYwSUc5dUlIUm9aU0J5WlhOMWJIUnBibWNnUkdGMFpWUnBiV1VnYVc1emRHRnVZMlZjYmlBZ0lDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlHOXdkR2x2Ym5NdWJuVnRZbVZ5YVc1blUzbHpkR1Z0SUMwZ2RHaGxJRzUxYldKbGNtbHVaeUJ6ZVhOMFpXMGdkRzhnYzJWMElHOXVJSFJvWlNCeVpYTjFiSFJwYm1jZ1JHRjBaVlJwYldVZ2FXNXpkR0Z1WTJWY2JpQWdJQ29nUUhKbGRIVnliaUI3UkdGMFpWUnBiV1Y5WEc0Z0lDQXFMMXh1SUNCemRHRjBhV01nWm5KdmJWTmxZMjl1WkhNb2MyVmpiMjVrY3l3Z2IzQjBhVzl1Y3lBOUlIdDlLU0I3WEc0Z0lDQWdhV1lnS0NGcGMwNTFiV0psY2loelpXTnZibVJ6S1NrZ2UxeHVJQ0FnSUNBZ2RHaHliM2NnYm1WM0lFbHVkbUZzYVdSQmNtZDFiV1Z1ZEVWeWNtOXlLRndpWm5KdmJWTmxZMjl1WkhNZ2NtVnhkV2x5WlhNZ1lTQnVkVzFsY21sallXd2dhVzV3ZFhSY0lpazdYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUJ1WlhjZ1JHRjBaVlJwYldVb2UxeHVJQ0FnSUNBZ0lDQjBjem9nYzJWamIyNWtjeUFxSURFd01EQXNYRzRnSUNBZ0lDQWdJSHB2Ym1VNklHNXZjbTFoYkdsNlpWcHZibVVvYjNCMGFXOXVjeTU2YjI1bExDQlRaWFIwYVc1bmN5NWtaV1poZFd4MFdtOXVaU2tzWEc0Z0lDQWdJQ0FnSUd4dll6b2dURzlqWVd4bExtWnliMjFQWW1wbFkzUW9iM0IwYVc5dWN5a3NYRzRnSUNBZ0lDQjlLVHRjYmlBZ0lDQjlYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nUTNKbFlYUmxJR0VnUkdGMFpWUnBiV1VnWm5KdmJTQmhJRXBoZG1GVFkzSnBjSFFnYjJKcVpXTjBJSGRwZEdnZ2EyVjVjeUJzYVd0bElDZDVaV0Z5SnlCaGJtUWdKMmh2ZFhJbklIZHBkR2dnY21WaGMyOXVZV0pzWlNCa1pXWmhkV3gwY3k1Y2JpQWdJQ29nUUhCaGNtRnRJSHRQWW1wbFkzUjlJRzlpYWlBdElIUm9aU0J2WW1wbFkzUWdkRzhnWTNKbFlYUmxJSFJvWlNCRVlYUmxWR2x0WlNCbWNtOXRYRzRnSUNBcUlFQndZWEpoYlNCN2JuVnRZbVZ5ZlNCdlltb3VlV1ZoY2lBdElHRWdlV1ZoY2l3Z2MzVmphQ0JoY3lBeE9UZzNYRzRnSUNBcUlFQndZWEpoYlNCN2JuVnRZbVZ5ZlNCdlltb3ViVzl1ZEdnZ0xTQmhJRzF2Ym5Sb0xDQXhMVEV5WEc0Z0lDQXFJRUJ3WVhKaGJTQjdiblZ0WW1WeWZTQnZZbW91WkdGNUlDMGdZU0JrWVhrZ2IyWWdkR2hsSUcxdmJuUm9MQ0F4TFRNeExDQmtaWEJsYm1ScGJtY2diMjRnZEdobElHMXZiblJvWEc0Z0lDQXFJRUJ3WVhKaGJTQjdiblZ0WW1WeWZTQnZZbW91YjNKa2FXNWhiQ0F0SUdSaGVTQnZaaUIwYUdVZ2VXVmhjaXdnTVMwek5qVWdiM0lnTXpZMlhHNGdJQ0FxSUVCd1lYSmhiU0I3Ym5WdFltVnlmU0J2WW1vdWQyVmxhMWxsWVhJZ0xTQmhiaUJKVTA4Z2QyVmxheUI1WldGeVhHNGdJQ0FxSUVCd1lYSmhiU0I3Ym5WdFltVnlmU0J2WW1vdWQyVmxhMDUxYldKbGNpQXRJR0Z1SUVsVFR5QjNaV1ZySUc1MWJXSmxjaXdnWW1WMGQyVmxiaUF4SUdGdVpDQTFNaUJ2Y2lBMU15d2daR1Z3Wlc1a2FXNW5JRzl1SUhSb1pTQjVaV0Z5WEc0Z0lDQXFJRUJ3WVhKaGJTQjdiblZ0WW1WeWZTQnZZbW91ZDJWbGEyUmhlU0F0SUdGdUlFbFRUeUIzWldWclpHRjVMQ0F4TFRjc0lIZG9aWEpsSURFZ2FYTWdUVzl1WkdGNUlHRnVaQ0EzSUdseklGTjFibVJoZVZ4dUlDQWdLaUJBY0dGeVlXMGdlMjUxYldKbGNuMGdiMkpxTG1odmRYSWdMU0JvYjNWeUlHOW1JSFJvWlNCa1lYa3NJREF0TWpOY2JpQWdJQ29nUUhCaGNtRnRJSHR1ZFcxaVpYSjlJRzlpYWk1dGFXNTFkR1VnTFNCdGFXNTFkR1VnYjJZZ2RHaGxJR2h2ZFhJc0lEQXROVGxjYmlBZ0lDb2dRSEJoY21GdElIdHVkVzFpWlhKOUlHOWlhaTV6WldOdmJtUWdMU0J6WldOdmJtUWdiMllnZEdobElHMXBiblYwWlN3Z01DMDFPVnh1SUNBZ0tpQkFjR0Z5WVcwZ2UyNTFiV0psY24wZ2IySnFMbTFwYkd4cGMyVmpiMjVrSUMwZ2JXbHNiR2x6WldOdmJtUWdiMllnZEdobElITmxZMjl1WkN3Z01DMDVPVGxjYmlBZ0lDb2dRSEJoY21GdElIdFBZbXBsWTNSOUlHOXdkSE1nTFNCdmNIUnBiMjV6SUdadmNpQmpjbVZoZEdsdVp5QjBhR2x6SUVSaGRHVlVhVzFsWEc0Z0lDQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZGcHZibVY5SUZ0dmNIUnpMbnB2Ym1VOUoyeHZZMkZzSjEwZ0xTQnBiblJsY25CeVpYUWdkR2hsSUc1MWJXSmxjbk1nYVc0Z2RHaGxJR052Ym5SbGVIUWdiMllnWVNCd1lYSjBhV04xYkdGeUlIcHZibVV1SUVOaGJpQjBZV3RsSUdGdWVTQjJZV3gxWlNCMFlXdGxiaUJoY3lCMGFHVWdabWx5YzNRZ1lYSm5kVzFsYm5RZ2RHOGdjMlYwV205dVpTZ3BYRzRnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCYmIzQjBjeTVzYjJOaGJHVTlKM041YzNSbGJTZHpJR3h2WTJGc1pTZGRJQzBnWVNCc2IyTmhiR1VnZEc4Z2MyVjBJRzl1SUhSb1pTQnlaWE4xYkhScGJtY2dSR0YwWlZScGJXVWdhVzV6ZEdGdVkyVmNiaUFnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUc5d2RITXViM1YwY0hWMFEyRnNaVzVrWVhJZ0xTQjBhR1VnYjNWMGNIVjBJR05oYkdWdVpHRnlJSFJ2SUhObGRDQnZiaUIwYUdVZ2NtVnpkV3gwYVc1bklFUmhkR1ZVYVcxbElHbHVjM1JoYm1ObFhHNGdJQ0FxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0J2Y0hSekxtNTFiV0psY21sdVoxTjVjM1JsYlNBdElIUm9aU0J1ZFcxaVpYSnBibWNnYzNsemRHVnRJSFJ2SUhObGRDQnZiaUIwYUdVZ2NtVnpkV3gwYVc1bklFUmhkR1ZVYVcxbElHbHVjM1JoYm1ObFhHNGdJQ0FxSUVCbGVHRnRjR3hsSUVSaGRHVlVhVzFsTG1aeWIyMVBZbXBsWTNRb2V5QjVaV0Z5T2lBeE9UZ3lMQ0J0YjI1MGFEb2dOU3dnWkdGNU9pQXlOWDBwTG5SdlNWTlBSR0YwWlNncElDOHZQVDRnSnpFNU9ESXRNRFV0TWpVblhHNGdJQ0FxSUVCbGVHRnRjR3hsSUVSaGRHVlVhVzFsTG1aeWIyMVBZbXBsWTNRb2V5QjVaV0Z5T2lBeE9UZ3lJSDBwTG5SdlNWTlBSR0YwWlNncElDOHZQVDRnSnpFNU9ESXRNREV0TURFblhHNGdJQ0FxSUVCbGVHRnRjR3hsSUVSaGRHVlVhVzFsTG1aeWIyMVBZbXBsWTNRb2V5Qm9iM1Z5T2lBeE1Dd2diV2x1ZFhSbE9pQXlOaXdnYzJWamIyNWtPaUEySUgwcElDOHZmajRnZEc5a1lYa2dZWFFnTVRBNk1qWTZNRFpjYmlBZ0lDb2dRR1Y0WVcxd2JHVWdSR0YwWlZScGJXVXVabkp2YlU5aWFtVmpkQ2g3SUdodmRYSTZJREV3TENCdGFXNTFkR1U2SURJMkxDQnpaV052Ym1RNklEWWdmU3dnZXlCNmIyNWxPaUFuZFhSakp5QjlLU3hjYmlBZ0lDb2dRR1Y0WVcxd2JHVWdSR0YwWlZScGJXVXVabkp2YlU5aWFtVmpkQ2g3SUdodmRYSTZJREV3TENCdGFXNTFkR1U2SURJMkxDQnpaV052Ym1RNklEWWdmU3dnZXlCNmIyNWxPaUFuYkc5allXd25JSDBwWEc0Z0lDQXFJRUJsZUdGdGNHeGxJRVJoZEdWVWFXMWxMbVp5YjIxUFltcGxZM1FvZXlCb2IzVnlPaUF4TUN3Z2JXbHVkWFJsT2lBeU5pd2djMlZqYjI1a09pQTJJSDBzSUhzZ2VtOXVaVG9nSjBGdFpYSnBZMkV2VG1WM1gxbHZjbXNuSUgwcFhHNGdJQ0FxSUVCbGVHRnRjR3hsSUVSaGRHVlVhVzFsTG1aeWIyMVBZbXBsWTNRb2V5QjNaV1ZyV1dWaGNqb2dNakF4Tml3Z2QyVmxhMDUxYldKbGNqb2dNaXdnZDJWbGEyUmhlVG9nTXlCOUtTNTBiMGxUVDBSaGRHVW9LU0F2THowK0lDY3lNREUyTFRBeExURXpKMXh1SUNBZ0tpQkFjbVYwZFhKdUlIdEVZWFJsVkdsdFpYMWNiaUFnSUNvdlhHNGdJSE4wWVhScFl5Qm1jbTl0VDJKcVpXTjBLRzlpYWl3Z2IzQjBjeUE5SUh0OUtTQjdYRzRnSUNBZ2IySnFJRDBnYjJKcUlIeDhJSHQ5TzF4dUlDQWdJR052Ym5OMElIcHZibVZVYjFWelpTQTlJRzV2Y20xaGJHbDZaVnB2Ym1Vb2IzQjBjeTU2YjI1bExDQlRaWFIwYVc1bmN5NWtaV1poZFd4MFdtOXVaU2s3WEc0Z0lDQWdhV1lnS0NGNmIyNWxWRzlWYzJVdWFYTldZV3hwWkNrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUVSaGRHVlVhVzFsTG1sdWRtRnNhV1FvZFc1emRYQndiM0owWldSYWIyNWxLSHB2Ym1WVWIxVnpaU2twTzF4dUlDQWdJSDFjYmx4dUlDQWdJR052Ym5OMElIUnpUbTkzSUQwZ1UyVjBkR2x1WjNNdWJtOTNLQ2tzWEc0Z0lDQWdJQ0J2Wm1aelpYUlFjbTkyYVhNZ1BTQWhhWE5WYm1SbFptbHVaV1FvYjNCMGN5NXpjR1ZqYVdacFkwOW1abk5sZENsY2JpQWdJQ0FnSUNBZ1B5QnZjSFJ6TG5Od1pXTnBabWxqVDJabWMyVjBYRzRnSUNBZ0lDQWdJRG9nZW05dVpWUnZWWE5sTG05bVpuTmxkQ2gwYzA1dmR5a3NYRzRnSUNBZ0lDQnViM0p0WVd4cGVtVmtJRDBnYm05eWJXRnNhWHBsVDJKcVpXTjBLRzlpYWl3Z2JtOXliV0ZzYVhwbFZXNXBkQ2tzWEc0Z0lDQWdJQ0JqYjI1MFlXbHVjMDl5WkdsdVlXd2dQU0FoYVhOVmJtUmxabWx1WldRb2JtOXliV0ZzYVhwbFpDNXZjbVJwYm1Gc0tTeGNiaUFnSUNBZ0lHTnZiblJoYVc1elIzSmxaMjl5V1dWaGNpQTlJQ0ZwYzFWdVpHVm1hVzVsWkNodWIzSnRZV3hwZW1Wa0xubGxZWElwTEZ4dUlDQWdJQ0FnWTI5dWRHRnBibk5IY21WbmIzSk5SQ0E5SUNGcGMxVnVaR1ZtYVc1bFpDaHViM0p0WVd4cGVtVmtMbTF2Ym5Sb0tTQjhmQ0FoYVhOVmJtUmxabWx1WldRb2JtOXliV0ZzYVhwbFpDNWtZWGtwTEZ4dUlDQWdJQ0FnWTI5dWRHRnBibk5IY21WbmIzSWdQU0JqYjI1MFlXbHVjMGR5WldkdmNsbGxZWElnZkh3Z1kyOXVkR0ZwYm5OSGNtVm5iM0pOUkN4Y2JpQWdJQ0FnSUdSbFptbHVhWFJsVjJWbGEwUmxaaUE5SUc1dmNtMWhiR2w2WldRdWQyVmxhMWxsWVhJZ2ZId2dibTl5YldGc2FYcGxaQzUzWldWclRuVnRZbVZ5TEZ4dUlDQWdJQ0FnYkc5aklEMGdURzlqWVd4bExtWnliMjFQWW1wbFkzUW9iM0IwY3lrN1hHNWNiaUFnSUNBdkx5QmpZWE5sY3pwY2JpQWdJQ0F2THlCcWRYTjBJR0VnZDJWbGEyUmhlU0F0UGlCMGFHbHpJSGRsWldzbmN5QnBibk4wWVc1alpTQnZaaUIwYUdGMElIZGxaV3RrWVhrc0lHNXZJSGR2Y25KcFpYTmNiaUFnSUNBdkx5QW9aM0psWjI5eWFXRnVJR1JoZEdFZ2IzSWdiM0prYVc1aGJDa2dLeUFvZDJWbGExbGxZWElnYjNJZ2QyVmxhMDUxYldKbGNpa2dMVDRnWlhKeWIzSmNiaUFnSUNBdkx5QW9aM0psWjI5eWFXRnVJRzF2Ym5Sb0lHOXlJR1JoZVNrZ0t5QnZjbVJwYm1Gc0lDMCtJR1Z5Y205eVhHNGdJQ0FnTHk4Z2IzUm9aWEozYVhObElHcDFjM1FnZFhObElIZGxaV3R6SUc5eUlHOXlaR2x1WVd4eklHOXlJR2R5WldkdmNtbGhiaXdnWkdWd1pXNWthVzVuSUc5dUlIZG9ZWFFuY3lCemNHVmphV1pwWldSY2JseHVJQ0FnSUdsbUlDZ29ZMjl1ZEdGcGJuTkhjbVZuYjNJZ2ZId2dZMjl1ZEdGcGJuTlBjbVJwYm1Gc0tTQW1KaUJrWldacGJtbDBaVmRsWld0RVpXWXBJSHRjYmlBZ0lDQWdJSFJvY205M0lHNWxkeUJEYjI1bWJHbGpkR2x1WjFOd1pXTnBabWxqWVhScGIyNUZjbkp2Y2loY2JpQWdJQ0FnSUNBZ1hDSkRZVzRuZENCdGFYZ2dkMlZsYTFsbFlYSXZkMlZsYTA1MWJXSmxjaUIxYm1sMGN5QjNhWFJvSUhsbFlYSXZiVzl1ZEdndlpHRjVJRzl5SUc5eVpHbHVZV3h6WENKY2JpQWdJQ0FnSUNrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnYVdZZ0tHTnZiblJoYVc1elIzSmxaMjl5VFVRZ0ppWWdZMjl1ZEdGcGJuTlBjbVJwYm1Gc0tTQjdYRzRnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dRMjl1Wm14cFkzUnBibWRUY0dWamFXWnBZMkYwYVc5dVJYSnliM0lvWENKRFlXNG5kQ0J0YVhnZ2IzSmthVzVoYkNCa1lYUmxjeUIzYVhSb0lHMXZiblJvTDJSaGVWd2lLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQmpiMjV6ZENCMWMyVlhaV1ZyUkdGMFlTQTlJR1JsWm1sdWFYUmxWMlZsYTBSbFppQjhmQ0FvYm05eWJXRnNhWHBsWkM1M1pXVnJaR0Y1SUNZbUlDRmpiMjUwWVdsdWMwZHlaV2R2Y2lrN1hHNWNiaUFnSUNBdkx5QmpiMjVtYVdkMWNtVWdiM1Z5YzJWc2RtVnpJSFJ2SUdSbFlXd2dkMmwwYUNCbmNtVm5iM0pwWVc0Z1pHRjBaWE1nYjNJZ2QyVmxheUJ6ZEhWbVpseHVJQ0FnSUd4bGRDQjFibWwwY3l4Y2JpQWdJQ0FnSUdSbFptRjFiSFJXWVd4MVpYTXNYRzRnSUNBZ0lDQnZZbXBPYjNjZ1BTQjBjMVJ2VDJKcUtIUnpUbTkzTENCdlptWnpaWFJRY205MmFYTXBPMXh1SUNBZ0lHbG1JQ2gxYzJWWFpXVnJSR0YwWVNrZ2UxeHVJQ0FnSUNBZ2RXNXBkSE1nUFNCdmNtUmxjbVZrVjJWbGExVnVhWFJ6TzF4dUlDQWdJQ0FnWkdWbVlYVnNkRlpoYkhWbGN5QTlJR1JsWm1GMWJIUlhaV1ZyVlc1cGRGWmhiSFZsY3p0Y2JpQWdJQ0FnSUc5aWFrNXZkeUE5SUdkeVpXZHZjbWxoYmxSdlYyVmxheWh2WW1wT2IzY3BPMXh1SUNBZ0lIMGdaV3h6WlNCcFppQW9ZMjl1ZEdGcGJuTlBjbVJwYm1Gc0tTQjdYRzRnSUNBZ0lDQjFibWwwY3lBOUlHOXlaR1Z5WldSUGNtUnBibUZzVlc1cGRITTdYRzRnSUNBZ0lDQmtaV1poZFd4MFZtRnNkV1Z6SUQwZ1pHVm1ZWFZzZEU5eVpHbHVZV3hWYm1sMFZtRnNkV1Z6TzF4dUlDQWdJQ0FnYjJKcVRtOTNJRDBnWjNKbFoyOXlhV0Z1Vkc5UGNtUnBibUZzS0c5aWFrNXZkeWs3WEc0Z0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lIVnVhWFJ6SUQwZ2IzSmtaWEpsWkZWdWFYUnpPMXh1SUNBZ0lDQWdaR1ZtWVhWc2RGWmhiSFZsY3lBOUlHUmxabUYxYkhSVmJtbDBWbUZzZFdWek8xeHVJQ0FnSUgxY2JseHVJQ0FnSUM4dklITmxkQ0JrWldaaGRXeDBJSFpoYkhWbGN5Qm1iM0lnYldsemMybHVaeUJ6ZEhWbVpseHVJQ0FnSUd4bGRDQm1iM1Z1WkVacGNuTjBJRDBnWm1Gc2MyVTdYRzRnSUNBZ1ptOXlJQ2hqYjI1emRDQjFJRzltSUhWdWFYUnpLU0I3WEc0Z0lDQWdJQ0JqYjI1emRDQjJJRDBnYm05eWJXRnNhWHBsWkZ0MVhUdGNiaUFnSUNBZ0lHbG1JQ2doYVhOVmJtUmxabWx1WldRb2Rpa3BJSHRjYmlBZ0lDQWdJQ0FnWm05MWJtUkdhWEp6ZENBOUlIUnlkV1U3WEc0Z0lDQWdJQ0I5SUdWc2MyVWdhV1lnS0dadmRXNWtSbWx5YzNRcElIdGNiaUFnSUNBZ0lDQWdibTl5YldGc2FYcGxaRnQxWFNBOUlHUmxabUYxYkhSV1lXeDFaWE5iZFYwN1hHNGdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNCdWIzSnRZV3hwZW1Wa1czVmRJRDBnYjJKcVRtOTNXM1ZkTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmx4dUlDQWdJQzh2SUcxaGEyVWdjM1Z5WlNCMGFHVWdkbUZzZFdWeklIZGxJR2hoZG1VZ1lYSmxJR2x1SUhKaGJtZGxYRzRnSUNBZ1kyOXVjM1FnYUdsbmFHVnlUM0prWlhKSmJuWmhiR2xrSUQwZ2RYTmxWMlZsYTBSaGRHRmNiaUFnSUNBZ0lDQWdQeUJvWVhOSmJuWmhiR2xrVjJWbGEwUmhkR0VvYm05eWJXRnNhWHBsWkNsY2JpQWdJQ0FnSUNBZ09pQmpiMjUwWVdsdWMwOXlaR2x1WVd4Y2JpQWdJQ0FnSUNBZ1B5Qm9ZWE5KYm5aaGJHbGtUM0prYVc1aGJFUmhkR0VvYm05eWJXRnNhWHBsWkNsY2JpQWdJQ0FnSUNBZ09pQm9ZWE5KYm5aaGJHbGtSM0psWjI5eWFXRnVSR0YwWVNodWIzSnRZV3hwZW1Wa0tTeGNiaUFnSUNBZ0lHbHVkbUZzYVdRZ1BTQm9hV2RvWlhKUGNtUmxja2x1ZG1Gc2FXUWdmSHdnYUdGelNXNTJZV3hwWkZScGJXVkVZWFJoS0c1dmNtMWhiR2w2WldRcE8xeHVYRzRnSUNBZ2FXWWdLR2x1ZG1Gc2FXUXBJSHRjYmlBZ0lDQWdJSEpsZEhWeWJpQkVZWFJsVkdsdFpTNXBiblpoYkdsa0tHbHVkbUZzYVdRcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUM4dklHTnZiWEIxZEdVZ2RHaGxJR0ZqZEhWaGJDQjBhVzFsWEc0Z0lDQWdZMjl1YzNRZ1ozSmxaMjl5YVdGdUlEMGdkWE5sVjJWbGEwUmhkR0ZjYmlBZ0lDQWdJQ0FnUHlCM1pXVnJWRzlIY21WbmIzSnBZVzRvYm05eWJXRnNhWHBsWkNsY2JpQWdJQ0FnSUNBZ09pQmpiMjUwWVdsdWMwOXlaR2x1WVd4Y2JpQWdJQ0FnSUNBZ1B5QnZjbVJwYm1Gc1ZHOUhjbVZuYjNKcFlXNG9ibTl5YldGc2FYcGxaQ2xjYmlBZ0lDQWdJQ0FnT2lCdWIzSnRZV3hwZW1Wa0xGeHVJQ0FnSUNBZ1czUnpSbWx1WVd3c0lHOW1abk5sZEVacGJtRnNYU0E5SUc5aWFsUnZWRk1vWjNKbFoyOXlhV0Z1TENCdlptWnpaWFJRY205MmFYTXNJSHB2Ym1WVWIxVnpaU2tzWEc0Z0lDQWdJQ0JwYm5OMElEMGdibVYzSUVSaGRHVlVhVzFsS0h0Y2JpQWdJQ0FnSUNBZ2RITTZJSFJ6Um1sdVlXd3NYRzRnSUNBZ0lDQWdJSHB2Ym1VNklIcHZibVZVYjFWelpTeGNiaUFnSUNBZ0lDQWdiem9nYjJabWMyVjBSbWx1WVd3c1hHNGdJQ0FnSUNBZ0lHeHZZeXhjYmlBZ0lDQWdJSDBwTzF4dVhHNGdJQ0FnTHk4Z1ozSmxaMjl5YVdGdUlHUmhkR0VnS3lCM1pXVnJaR0Y1SUhObGNuWmxjeUJ2Ym14NUlIUnZJSFpoYkdsa1lYUmxYRzRnSUNBZ2FXWWdLRzV2Y20xaGJHbDZaV1F1ZDJWbGEyUmhlU0FtSmlCamIyNTBZV2x1YzBkeVpXZHZjaUFtSmlCdlltb3VkMlZsYTJSaGVTQWhQVDBnYVc1emRDNTNaV1ZyWkdGNUtTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z1JHRjBaVlJwYldVdWFXNTJZV3hwWkNoY2JpQWdJQ0FnSUNBZ1hDSnRhWE50WVhSamFHVmtJSGRsWld0a1lYbGNJaXhjYmlBZ0lDQWdJQ0FnWUhsdmRTQmpZVzRuZENCemNHVmphV1o1SUdKdmRHZ2dZU0IzWldWclpHRjVJRzltSUNSN2JtOXliV0ZzYVhwbFpDNTNaV1ZyWkdGNWZTQmhibVFnWVNCa1lYUmxJRzltSUNSN2FXNXpkQzUwYjBsVFR5Z3BmV0JjYmlBZ0lDQWdJQ2s3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdjbVYwZFhKdUlHbHVjM1E3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1EzSmxZWFJsSUdFZ1JHRjBaVlJwYldVZ1puSnZiU0JoYmlCSlUwOGdPRFl3TVNCemRISnBibWRjYmlBZ0lDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlIUmxlSFFnTFNCMGFHVWdTVk5QSUhOMGNtbHVaMXh1SUNBZ0tpQkFjR0Z5WVcwZ2UwOWlhbVZqZEgwZ2IzQjBjeUF0SUc5d2RHbHZibk1nZEc4Z1lXWm1aV04wSUhSb1pTQmpjbVZoZEdsdmJseHVJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaM3hhYjI1bGZTQmJiM0IwY3k1NmIyNWxQU2RzYjJOaGJDZGRJQzBnZFhObElIUm9hWE1nZW05dVpTQnBaaUJ1YnlCdlptWnpaWFFnYVhNZ2MzQmxZMmxtYVdWa0lHbHVJSFJvWlNCcGJuQjFkQ0J6ZEhKcGJtY2dhWFJ6Wld4bUxpQlhhV3hzSUdGc2MyOGdZMjl1ZG1WeWRDQjBhR1VnZEdsdFpTQjBieUIwYUdseklIcHZibVZjYmlBZ0lDb2dRSEJoY21GdElIdGliMjlzWldGdWZTQmJiM0IwY3k1elpYUmFiMjVsUFdaaGJITmxYU0F0SUc5MlpYSnlhV1JsSUhSb1pTQjZiMjVsSUhkcGRHZ2dZU0JtYVhobFpDMXZabVp6WlhRZ2VtOXVaU0J6Y0dWamFXWnBaV1FnYVc0Z2RHaGxJSE4wY21sdVp5QnBkSE5sYkdZc0lHbG1JR2wwSUhOd1pXTnBabWxsY3lCdmJtVmNiaUFnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUZ0dmNIUnpMbXh2WTJGc1pUMG5jM2x6ZEdWdEozTWdiRzlqWVd4bEoxMGdMU0JoSUd4dlkyRnNaU0IwYnlCelpYUWdiMjRnZEdobElISmxjM1ZzZEdsdVp5QkVZWFJsVkdsdFpTQnBibk4wWVc1alpWeHVJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnVzI5d2RITXViM1YwY0hWMFEyRnNaVzVrWVhKZElDMGdkR2hsSUc5MWRIQjFkQ0JqWVd4bGJtUmhjaUIwYnlCelpYUWdiMjRnZEdobElISmxjM1ZzZEdsdVp5QkVZWFJsVkdsdFpTQnBibk4wWVc1alpWeHVJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnVzI5d2RITXViblZ0WW1WeWFXNW5VM2x6ZEdWdFhTQXRJSFJvWlNCdWRXMWlaWEpwYm1jZ2MzbHpkR1Z0SUhSdklITmxkQ0J2YmlCMGFHVWdjbVZ6ZFd4MGFXNW5JRVJoZEdWVWFXMWxJR2x1YzNSaGJtTmxYRzRnSUNBcUlFQmxlR0Z0Y0d4bElFUmhkR1ZVYVcxbExtWnliMjFKVTA4b0p6SXdNVFl0TURVdE1qVlVNRGs2TURnNk16UXVNVEl6SnlsY2JpQWdJQ29nUUdWNFlXMXdiR1VnUkdGMFpWUnBiV1V1Wm5KdmJVbFRUeWduTWpBeE5pMHdOUzB5TlZRd09Ub3dPRG96TkM0eE1qTXJNRFk2TURBbktWeHVJQ0FnS2lCQVpYaGhiWEJzWlNCRVlYUmxWR2x0WlM1bWNtOXRTVk5QS0NjeU1ERTJMVEExTFRJMVZEQTVPakE0T2pNMExqRXlNeXN3Tmpvd01DY3NJSHR6WlhSYWIyNWxPaUIwY25WbGZTbGNiaUFnSUNvZ1FHVjRZVzF3YkdVZ1JHRjBaVlJwYldVdVpuSnZiVWxUVHlnbk1qQXhOaTB3TlMweU5WUXdPVG93T0Rvek5DNHhNak1uTENCN2VtOXVaVG9nSjNWMFl5ZDlLVnh1SUNBZ0tpQkFaWGhoYlhCc1pTQkVZWFJsVkdsdFpTNW1jbTl0U1ZOUEtDY3lNREUyTFZjd05TMDBKeWxjYmlBZ0lDb2dRSEpsZEhWeWJpQjdSR0YwWlZScGJXVjlYRzRnSUNBcUwxeHVJQ0J6ZEdGMGFXTWdabkp2YlVsVFR5aDBaWGgwTENCdmNIUnpJRDBnZTMwcElIdGNiaUFnSUNCamIyNXpkQ0JiZG1Gc2N5d2djR0Z5YzJWa1dtOXVaVjBnUFNCd1lYSnpaVWxUVDBSaGRHVW9kR1Y0ZENrN1hHNGdJQ0FnY21WMGRYSnVJSEJoY25ObFJHRjBZVlJ2UkdGMFpWUnBiV1VvZG1Gc2N5d2djR0Z5YzJWa1dtOXVaU3dnYjNCMGN5d2dYQ0pKVTA4Z09EWXdNVndpTENCMFpYaDBLVHRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCRGNtVmhkR1VnWVNCRVlYUmxWR2x0WlNCbWNtOXRJR0Z1SUZKR1F5QXlPREl5SUhOMGNtbHVaMXh1SUNBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2RHVjRkQ0F0SUhSb1pTQlNSa01nTWpneU1pQnpkSEpwYm1kY2JpQWdJQ29nUUhCaGNtRnRJSHRQWW1wbFkzUjlJRzl3ZEhNZ0xTQnZjSFJwYjI1eklIUnZJR0ZtWm1WamRDQjBhR1VnWTNKbFlYUnBiMjVjYmlBZ0lDb2dRSEJoY21GdElIdHpkSEpwYm1kOFdtOXVaWDBnVzI5d2RITXVlbTl1WlQwbmJHOWpZV3duWFNBdElHTnZiblpsY25RZ2RHaGxJSFJwYldVZ2RHOGdkR2hwY3lCNmIyNWxMaUJUYVc1alpTQjBhR1VnYjJabWMyVjBJR2x6SUdGc2QyRjVjeUJ6Y0dWamFXWnBaV1FnYVc0Z2RHaGxJSE4wY21sdVp5QnBkSE5sYkdZc0lIUm9hWE1nYUdGeklHNXZJR1ZtWm1WamRDQnZiaUIwYUdVZ2FXNTBaWEp3Y21WMFlYUnBiMjRnYjJZZ2MzUnlhVzVuTENCdFpYSmxiSGtnZEdobElIcHZibVVnZEdobElISmxjM1ZzZEdsdVp5QkVZWFJsVkdsdFpTQnBjeUJsZUhCeVpYTnpaV1FnYVc0dVhHNGdJQ0FxSUVCd1lYSmhiU0I3WW05dmJHVmhibjBnVzI5d2RITXVjMlYwV205dVpUMW1ZV3h6WlYwZ0xTQnZkbVZ5Y21sa1pTQjBhR1VnZW05dVpTQjNhWFJvSUdFZ1ptbDRaV1F0YjJabWMyVjBJSHB2Ym1VZ2MzQmxZMmxtYVdWa0lHbHVJSFJvWlNCemRISnBibWNnYVhSelpXeG1MQ0JwWmlCcGRDQnpjR1ZqYVdacFpYTWdiMjVsWEc0Z0lDQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQmJiM0IwY3k1c2IyTmhiR1U5SjNONWMzUmxiU2R6SUd4dlkyRnNaU2RkSUMwZ1lTQnNiMk5oYkdVZ2RHOGdjMlYwSUc5dUlIUm9aU0J5WlhOMWJIUnBibWNnUkdGMFpWUnBiV1VnYVc1emRHRnVZMlZjYmlBZ0lDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlHOXdkSE11YjNWMGNIVjBRMkZzWlc1a1lYSWdMU0IwYUdVZ2IzVjBjSFYwSUdOaGJHVnVaR0Z5SUhSdklITmxkQ0J2YmlCMGFHVWdjbVZ6ZFd4MGFXNW5JRVJoZEdWVWFXMWxJR2x1YzNSaGJtTmxYRzRnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCdmNIUnpMbTUxYldKbGNtbHVaMU41YzNSbGJTQXRJSFJvWlNCdWRXMWlaWEpwYm1jZ2MzbHpkR1Z0SUhSdklITmxkQ0J2YmlCMGFHVWdjbVZ6ZFd4MGFXNW5JRVJoZEdWVWFXMWxJR2x1YzNSaGJtTmxYRzRnSUNBcUlFQmxlR0Z0Y0d4bElFUmhkR1ZVYVcxbExtWnliMjFTUmtNeU9ESXlLQ2N5TlNCT2IzWWdNakF4TmlBeE16b3lNem94TWlCSFRWUW5LVnh1SUNBZ0tpQkFaWGhoYlhCc1pTQkVZWFJsVkdsdFpTNW1jbTl0VWtaRE1qZ3lNaWduUm5KcExDQXlOU0JPYjNZZ01qQXhOaUF4TXpveU16b3hNaUFyTURZd01DY3BYRzRnSUNBcUlFQmxlR0Z0Y0d4bElFUmhkR1ZVYVcxbExtWnliMjFTUmtNeU9ESXlLQ2N5TlNCT2IzWWdNakF4TmlBeE16b3lNeUJhSnlsY2JpQWdJQ29nUUhKbGRIVnliaUI3UkdGMFpWUnBiV1Y5WEc0Z0lDQXFMMXh1SUNCemRHRjBhV01nWm5KdmJWSkdRekk0TWpJb2RHVjRkQ3dnYjNCMGN5QTlJSHQ5S1NCN1hHNGdJQ0FnWTI5dWMzUWdXM1poYkhNc0lIQmhjbk5sWkZwdmJtVmRJRDBnY0dGeWMyVlNSa015T0RJeVJHRjBaU2gwWlhoMEtUdGNiaUFnSUNCeVpYUjFjbTRnY0dGeWMyVkVZWFJoVkc5RVlYUmxWR2x0WlNoMllXeHpMQ0J3WVhKelpXUmFiMjVsTENCdmNIUnpMQ0JjSWxKR1F5QXlPREl5WENJc0lIUmxlSFFwTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFTnlaV0YwWlNCaElFUmhkR1ZVYVcxbElHWnliMjBnWVc0Z1NGUlVVQ0JvWldGa1pYSWdaR0YwWlZ4dUlDQWdLaUJBYzJWbElHaDBkSEJ6T2k4dmQzZDNMbmN6TG05eVp5OVFjbTkwYjJOdmJITXZjbVpqTWpZeE5pOXlabU15TmpFMkxYTmxZek11YUhSdGJDTnpaV016TGpNdU1WeHVJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnZEdWNGRDQXRJSFJvWlNCSVZGUlFJR2hsWVdSbGNpQmtZWFJsWEc0Z0lDQXFJRUJ3WVhKaGJTQjdUMkpxWldOMGZTQnZjSFJ6SUMwZ2IzQjBhVzl1Y3lCMGJ5QmhabVpsWTNRZ2RHaGxJR055WldGMGFXOXVYRzRnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuZkZwdmJtVjlJRnR2Y0hSekxucHZibVU5SjJ4dlkyRnNKMTBnTFNCamIyNTJaWEowSUhSb1pTQjBhVzFsSUhSdklIUm9hWE1nZW05dVpTNGdVMmx1WTJVZ1NGUlVVQ0JrWVhSbGN5QmhjbVVnWVd4M1lYbHpJR2x1SUZWVVF5d2dkR2hwY3lCb1lYTWdibThnWldabVpXTjBJRzl1SUhSb1pTQnBiblJsY25CeVpYUmhkR2x2YmlCdlppQnpkSEpwYm1jc0lHMWxjbVZzZVNCMGFHVWdlbTl1WlNCMGFHVWdjbVZ6ZFd4MGFXNW5JRVJoZEdWVWFXMWxJR2x6SUdWNGNISmxjM05sWkNCcGJpNWNiaUFnSUNvZ1FIQmhjbUZ0SUh0aWIyOXNaV0Z1ZlNCYmIzQjBjeTV6WlhSYWIyNWxQV1poYkhObFhTQXRJRzkyWlhKeWFXUmxJSFJvWlNCNmIyNWxJSGRwZEdnZ2RHaGxJR1pwZUdWa0xXOW1abk5sZENCNmIyNWxJSE53WldOcFptbGxaQ0JwYmlCMGFHVWdjM1J5YVc1bkxpQkdiM0lnU0ZSVVVDQmtZWFJsY3l3Z2RHaHBjeUJwY3lCaGJIZGhlWE1nVlZSRExDQnpieUIwYUdseklHOXdkR2x2YmlCcGN5QmxjWFZwZG1Gc1pXNTBJSFJ2SUhObGRIUnBibWNnZEdobElHQjZiMjVsWUNCdmNIUnBiMjRnZEc4Z0ozVjBZeWNzSUdKMWRDQjBhR2x6SUc5d2RHbHZiaUJwY3lCcGJtTnNkV1JsWkNCbWIzSWdZMjl1YzJsemRHVnVZM2tnZDJsMGFDQnphVzFwYkdGeUlHMWxkR2h2WkhNdVhHNGdJQ0FxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0JiYjNCMGN5NXNiMk5oYkdVOUozTjVjM1JsYlNkeklHeHZZMkZzWlNkZElDMGdZU0JzYjJOaGJHVWdkRzhnYzJWMElHOXVJSFJvWlNCeVpYTjFiSFJwYm1jZ1JHRjBaVlJwYldVZ2FXNXpkR0Z1WTJWY2JpQWdJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJRzl3ZEhNdWIzVjBjSFYwUTJGc1pXNWtZWElnTFNCMGFHVWdiM1YwY0hWMElHTmhiR1Z1WkdGeUlIUnZJSE5sZENCdmJpQjBhR1VnY21WemRXeDBhVzVuSUVSaGRHVlVhVzFsSUdsdWMzUmhibU5sWEc0Z0lDQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQnZjSFJ6TG01MWJXSmxjbWx1WjFONWMzUmxiU0F0SUhSb1pTQnVkVzFpWlhKcGJtY2djM2x6ZEdWdElIUnZJSE5sZENCdmJpQjBhR1VnY21WemRXeDBhVzVuSUVSaGRHVlVhVzFsSUdsdWMzUmhibU5sWEc0Z0lDQXFJRUJsZUdGdGNHeGxJRVJoZEdWVWFXMWxMbVp5YjIxSVZGUlFLQ2RUZFc0c0lEQTJJRTV2ZGlBeE9UazBJREE0T2pRNU9qTTNJRWROVkNjcFhHNGdJQ0FxSUVCbGVHRnRjR3hsSUVSaGRHVlVhVzFsTG1aeWIyMUlWRlJRS0NkVGRXNWtZWGtzSURBMkxVNXZkaTA1TkNBd09EbzBPVG96TnlCSFRWUW5LVnh1SUNBZ0tpQkFaWGhoYlhCc1pTQkVZWFJsVkdsdFpTNW1jbTl0U0ZSVVVDZ25VM1Z1SUU1dmRpQWdOaUF3T0RvME9Ub3pOeUF4T1RrMEp5bGNiaUFnSUNvZ1FISmxkSFZ5YmlCN1JHRjBaVlJwYldWOVhHNGdJQ0FxTDF4dUlDQnpkR0YwYVdNZ1puSnZiVWhVVkZBb2RHVjRkQ3dnYjNCMGN5QTlJSHQ5S1NCN1hHNGdJQ0FnWTI5dWMzUWdXM1poYkhNc0lIQmhjbk5sWkZwdmJtVmRJRDBnY0dGeWMyVklWRlJRUkdGMFpTaDBaWGgwS1R0Y2JpQWdJQ0J5WlhSMWNtNGdjR0Z5YzJWRVlYUmhWRzlFWVhSbFZHbHRaU2gyWVd4ekxDQndZWEp6WldSYWIyNWxMQ0J2Y0hSekxDQmNJa2hVVkZCY0lpd2diM0IwY3lrN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRM0psWVhSbElHRWdSR0YwWlZScGJXVWdabkp2YlNCaGJpQnBibkIxZENCemRISnBibWNnWVc1a0lHWnZjbTFoZENCemRISnBibWN1WEc0Z0lDQXFJRVJsWm1GMWJIUnpJSFJ2SUdWdUxWVlRJR2xtSUc1dklHeHZZMkZzWlNCb1lYTWdZbVZsYmlCemNHVmphV1pwWldRc0lISmxaMkZ5Wkd4bGMzTWdiMllnZEdobElITjVjM1JsYlNkeklHeHZZMkZzWlM0Z1JtOXlJR0VnZEdGaWJHVWdiMllnZEc5clpXNXpJR0Z1WkNCMGFHVnBjaUJwYm5SbGNuQnlaWFJoZEdsdmJuTXNJSE5sWlNCYmFHVnlaVjBvYUhSMGNITTZMeTl0YjIxbGJuUXVaMmwwYUhWaUxtbHZMMngxZUc5dUx5TXZjR0Z5YzJsdVp6OXBaRDEwWVdKc1pTMXZaaTEwYjJ0bGJuTXBMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2RHVjRkQ0F0SUhSb1pTQnpkSEpwYm1jZ2RHOGdjR0Z5YzJWY2JpQWdJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJR1p0ZENBdElIUm9aU0JtYjNKdFlYUWdkR2hsSUhOMGNtbHVaeUJwY3lCbGVIQmxZM1JsWkNCMGJ5QmlaU0JwYmlBb2MyVmxJSFJvWlNCc2FXNXJJR0psYkc5M0lHWnZjaUIwYUdVZ1ptOXliV0YwY3lsY2JpQWdJQ29nUUhCaGNtRnRJSHRQWW1wbFkzUjlJRzl3ZEhNZ0xTQnZjSFJwYjI1eklIUnZJR0ZtWm1WamRDQjBhR1VnWTNKbFlYUnBiMjVjYmlBZ0lDb2dRSEJoY21GdElIdHpkSEpwYm1kOFdtOXVaWDBnVzI5d2RITXVlbTl1WlQwbmJHOWpZV3duWFNBdElIVnpaU0IwYUdseklIcHZibVVnYVdZZ2JtOGdiMlptYzJWMElHbHpJSE53WldOcFptbGxaQ0JwYmlCMGFHVWdhVzV3ZFhRZ2MzUnlhVzVuSUdsMGMyVnNaaTRnVjJsc2JDQmhiSE52SUdOdmJuWmxjblFnZEdobElFUmhkR1ZVYVcxbElIUnZJSFJvYVhNZ2VtOXVaVnh1SUNBZ0tpQkFjR0Z5WVcwZ2UySnZiMnhsWVc1OUlGdHZjSFJ6TG5ObGRGcHZibVU5Wm1Gc2MyVmRJQzBnYjNabGNuSnBaR1VnZEdobElIcHZibVVnZDJsMGFDQmhJSHB2Ym1VZ2MzQmxZMmxtYVdWa0lHbHVJSFJvWlNCemRISnBibWNnYVhSelpXeG1MQ0JwWmlCcGRDQnpjR1ZqYVdacFpYTWdiMjVsWEc0Z0lDQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQmJiM0IwY3k1c2IyTmhiR1U5SjJWdUxWVlRKMTBnTFNCaElHeHZZMkZzWlNCemRISnBibWNnZEc4Z2RYTmxJSGRvWlc0Z2NHRnljMmx1Wnk0Z1YybHNiQ0JoYkhOdklITmxkQ0IwYUdVZ1JHRjBaVlJwYldVZ2RHOGdkR2hwY3lCc2IyTmhiR1ZjYmlBZ0lDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlHOXdkSE11Ym5WdFltVnlhVzVuVTNsemRHVnRJQzBnZEdobElHNTFiV0psY21sdVp5QnplWE4wWlcwZ2RHOGdkWE5sSUhkb1pXNGdjR0Z5YzJsdVp5NGdWMmxzYkNCaGJITnZJSE5sZENCMGFHVWdjbVZ6ZFd4MGFXNW5JRVJoZEdWVWFXMWxJSFJ2SUhSb2FYTWdiblZ0WW1WeWFXNW5JSE41YzNSbGJWeHVJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnYjNCMGN5NXZkWFJ3ZFhSRFlXeGxibVJoY2lBdElIUm9aU0J2ZFhSd2RYUWdZMkZzWlc1a1lYSWdkRzhnYzJWMElHOXVJSFJvWlNCeVpYTjFiSFJwYm1jZ1JHRjBaVlJwYldVZ2FXNXpkR0Z1WTJWY2JpQWdJQ29nUUhKbGRIVnliaUI3UkdGMFpWUnBiV1Y5WEc0Z0lDQXFMMXh1SUNCemRHRjBhV01nWm5KdmJVWnZjbTFoZENoMFpYaDBMQ0JtYlhRc0lHOXdkSE1nUFNCN2ZTa2dlMXh1SUNBZ0lHbG1JQ2hwYzFWdVpHVm1hVzVsWkNoMFpYaDBLU0I4ZkNCcGMxVnVaR1ZtYVc1bFpDaG1iWFFwS1NCN1hHNGdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1NXNTJZV3hwWkVGeVozVnRaVzUwUlhKeWIzSW9YQ0ptY205dFJtOXliV0YwSUhKbGNYVnBjbVZ6SUdGdUlHbHVjSFYwSUhOMGNtbHVaeUJoYm1RZ1lTQm1iM0p0WVhSY0lpazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ1kyOXVjM1FnZXlCc2IyTmhiR1VnUFNCdWRXeHNMQ0J1ZFcxaVpYSnBibWRUZVhOMFpXMGdQU0J1ZFd4c0lIMGdQU0J2Y0hSekxGeHVJQ0FnSUNBZ2JHOWpZV3hsVkc5VmMyVWdQU0JNYjJOaGJHVXVabkp2YlU5d2RITW9lMXh1SUNBZ0lDQWdJQ0JzYjJOaGJHVXNYRzRnSUNBZ0lDQWdJRzUxYldKbGNtbHVaMU41YzNSbGJTeGNiaUFnSUNBZ0lDQWdaR1ZtWVhWc2RGUnZSVTQ2SUhSeWRXVXNYRzRnSUNBZ0lDQjlLU3hjYmlBZ0lDQWdJRnQyWVd4ekxDQndZWEp6WldSYWIyNWxMQ0J6Y0dWamFXWnBZMDltWm5ObGRDd2dhVzUyWVd4cFpGMGdQU0J3WVhKelpVWnliMjFVYjJ0bGJuTW9iRzlqWVd4bFZHOVZjMlVzSUhSbGVIUXNJR1p0ZENrN1hHNGdJQ0FnYVdZZ0tHbHVkbUZzYVdRcElIdGNiaUFnSUNBZ0lISmxkSFZ5YmlCRVlYUmxWR2x0WlM1cGJuWmhiR2xrS0dsdWRtRnNhV1FwTzF4dUlDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z2NHRnljMlZFWVhSaFZHOUVZWFJsVkdsdFpTaDJZV3h6TENCd1lYSnpaV1JhYjI1bExDQnZjSFJ6TENCZ1ptOXliV0YwSUNSN1ptMTBmV0FzSUhSbGVIUXNJSE53WldOcFptbGpUMlptYzJWMEtUdGNiaUFnSUNCOVhHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRR1JsY0hKbFkyRjBaV1FnZFhObElHWnliMjFHYjNKdFlYUWdhVzV6ZEdWaFpGeHVJQ0FnS2k5Y2JpQWdjM1JoZEdsaklHWnliMjFUZEhKcGJtY29kR1Y0ZEN3Z1ptMTBMQ0J2Y0hSeklEMGdlMzBwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdSR0YwWlZScGJXVXVabkp2YlVadmNtMWhkQ2gwWlhoMExDQm1iWFFzSUc5d2RITXBPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUVOeVpXRjBaU0JoSUVSaGRHVlVhVzFsSUdaeWIyMGdZU0JUVVV3Z1pHRjBaU3dnZEdsdFpTd2diM0lnWkdGMFpYUnBiV1ZjYmlBZ0lDb2dSR1ZtWVhWc2RITWdkRzhnWlc0dFZWTWdhV1lnYm04Z2JHOWpZV3hsSUdoaGN5QmlaV1Z1SUhOd1pXTnBabWxsWkN3Z2NtVm5ZWEprYkdWemN5QnZaaUIwYUdVZ2MzbHpkR1Z0SjNNZ2JHOWpZV3hsWEc0Z0lDQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQjBaWGgwSUMwZ2RHaGxJSE4wY21sdVp5QjBieUJ3WVhKelpWeHVJQ0FnS2lCQWNHRnlZVzBnZTA5aWFtVmpkSDBnYjNCMGN5QXRJRzl3ZEdsdmJuTWdkRzhnWVdabVpXTjBJSFJvWlNCamNtVmhkR2x2Ymx4dUlDQWdLaUJBY0dGeVlXMGdlM04wY21sdVozeGFiMjVsZlNCYmIzQjBjeTU2YjI1bFBTZHNiMk5oYkNkZElDMGdkWE5sSUhSb2FYTWdlbTl1WlNCcFppQnVieUJ2Wm1aelpYUWdhWE1nYzNCbFkybG1hV1ZrSUdsdUlIUm9aU0JwYm5CMWRDQnpkSEpwYm1jZ2FYUnpaV3htTGlCWGFXeHNJR0ZzYzI4Z1kyOXVkbVZ5ZENCMGFHVWdSR0YwWlZScGJXVWdkRzhnZEdocGN5QjZiMjVsWEc0Z0lDQXFJRUJ3WVhKaGJTQjdZbTl2YkdWaGJuMGdXMjl3ZEhNdWMyVjBXbTl1WlQxbVlXeHpaVjBnTFNCdmRtVnljbWxrWlNCMGFHVWdlbTl1WlNCM2FYUm9JR0VnZW05dVpTQnpjR1ZqYVdacFpXUWdhVzRnZEdobElITjBjbWx1WnlCcGRITmxiR1lzSUdsbUlHbDBJSE53WldOcFptbGxjeUJ2Ym1WY2JpQWdJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJRnR2Y0hSekxteHZZMkZzWlQwblpXNHRWVk1uWFNBdElHRWdiRzlqWVd4bElITjBjbWx1WnlCMGJ5QjFjMlVnZDJobGJpQndZWEp6YVc1bkxpQlhhV3hzSUdGc2MyOGdjMlYwSUhSb1pTQkVZWFJsVkdsdFpTQjBieUIwYUdseklHeHZZMkZzWlZ4dUlDQWdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdiM0IwY3k1dWRXMWlaWEpwYm1kVGVYTjBaVzBnTFNCMGFHVWdiblZ0WW1WeWFXNW5JSE41YzNSbGJTQjBieUIxYzJVZ2QyaGxiaUJ3WVhKemFXNW5MaUJYYVd4c0lHRnNjMjhnYzJWMElIUm9aU0J5WlhOMWJIUnBibWNnUkdGMFpWUnBiV1VnZEc4Z2RHaHBjeUJ1ZFcxaVpYSnBibWNnYzNsemRHVnRYRzRnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCdmNIUnpMbTkxZEhCMWRFTmhiR1Z1WkdGeUlDMGdkR2hsSUc5MWRIQjFkQ0JqWVd4bGJtUmhjaUIwYnlCelpYUWdiMjRnZEdobElISmxjM1ZzZEdsdVp5QkVZWFJsVkdsdFpTQnBibk4wWVc1alpWeHVJQ0FnS2lCQVpYaGhiWEJzWlNCRVlYUmxWR2x0WlM1bWNtOXRVMUZNS0NjeU1ERTNMVEExTFRFMUp5bGNiaUFnSUNvZ1FHVjRZVzF3YkdVZ1JHRjBaVlJwYldVdVpuSnZiVk5SVENnbk1qQXhOeTB3TlMweE5TQXdPVG94TWpvek5DY3BYRzRnSUNBcUlFQmxlR0Z0Y0d4bElFUmhkR1ZVYVcxbExtWnliMjFUVVV3b0p6SXdNVGN0TURVdE1UVWdNRGs2TVRJNk16UXVNelF5SnlsY2JpQWdJQ29nUUdWNFlXMXdiR1VnUkdGMFpWUnBiV1V1Wm5KdmJWTlJUQ2duTWpBeE55MHdOUzB4TlNBd09Ub3hNam96TkM0ek5ESXJNRFk2TURBbktWeHVJQ0FnS2lCQVpYaGhiWEJzWlNCRVlYUmxWR2x0WlM1bWNtOXRVMUZNS0NjeU1ERTNMVEExTFRFMUlEQTVPakV5T2pNMExqTTBNaUJCYldWeWFXTmhMMHh2YzE5QmJtZGxiR1Z6SnlsY2JpQWdJQ29nUUdWNFlXMXdiR1VnUkdGMFpWUnBiV1V1Wm5KdmJWTlJUQ2duTWpBeE55MHdOUzB4TlNBd09Ub3hNam96TkM0ek5ESWdRVzFsY21sallTOU1iM05mUVc1blpXeGxjeWNzSUhzZ2MyVjBXbTl1WlRvZ2RISjFaU0I5S1Z4dUlDQWdLaUJBWlhoaGJYQnNaU0JFWVhSbFZHbHRaUzVtY205dFUxRk1LQ2N5TURFM0xUQTFMVEUxSURBNU9qRXlPak0wTGpNME1pY3NJSHNnZW05dVpUb2dKMEZ0WlhKcFkyRXZURzl6WDBGdVoyVnNaWE1uSUgwcFhHNGdJQ0FxSUVCbGVHRnRjR3hsSUVSaGRHVlVhVzFsTG1aeWIyMVRVVXdvSnpBNU9qRXlPak0wTGpNME1pY3BYRzRnSUNBcUlFQnlaWFIxY200Z2UwUmhkR1ZVYVcxbGZWeHVJQ0FnS2k5Y2JpQWdjM1JoZEdsaklHWnliMjFUVVV3b2RHVjRkQ3dnYjNCMGN5QTlJSHQ5S1NCN1hHNGdJQ0FnWTI5dWMzUWdXM1poYkhNc0lIQmhjbk5sWkZwdmJtVmRJRDBnY0dGeWMyVlRVVXdvZEdWNGRDazdYRzRnSUNBZ2NtVjBkWEp1SUhCaGNuTmxSR0YwWVZSdlJHRjBaVlJwYldVb2RtRnNjeXdnY0dGeWMyVmtXbTl1WlN3Z2IzQjBjeXdnWENKVFVVeGNJaXdnZEdWNGRDazdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nUTNKbFlYUmxJR0Z1SUdsdWRtRnNhV1FnUkdGMFpWUnBiV1V1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQnlaV0Z6YjI0Z0xTQnphVzF3YkdVZ2MzUnlhVzVuSUc5bUlIZG9lU0IwYUdseklFUmhkR1ZVYVcxbElHbHpJR2x1ZG1Gc2FXUXVJRk5vYjNWc1pDQnViM1FnWTI5dWRHRnBiaUJ3WVhKaGJXVjBaWEp6SUc5eUlHRnVlWFJvYVc1bklHVnNjMlVnWkdGMFlTMWtaWEJsYm1SbGJuUmNiaUFnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUZ0bGVIQnNZVzVoZEdsdmJqMXVkV3hzWFNBdElHeHZibWRsY2lCbGVIQnNZVzVoZEdsdmJpd2diV0Y1SUdsdVkyeDFaR1VnY0dGeVlXMWxkR1Z5Y3lCaGJtUWdiM1JvWlhJZ2RYTmxablZzSUdSbFluVm5aMmx1WnlCcGJtWnZjbTFoZEdsdmJseHVJQ0FnS2lCQWNtVjBkWEp1SUh0RVlYUmxWR2x0WlgxY2JpQWdJQ292WEc0Z0lITjBZWFJwWXlCcGJuWmhiR2xrS0hKbFlYTnZiaXdnWlhod2JHRnVZWFJwYjI0Z1BTQnVkV3hzS1NCN1hHNGdJQ0FnYVdZZ0tDRnlaV0Z6YjI0cElIdGNiaUFnSUNBZ0lIUm9jbTkzSUc1bGR5QkpiblpoYkdsa1FYSm5kVzFsYm5SRmNuSnZjaWhjSW01bFpXUWdkRzhnYzNCbFkybG1lU0JoSUhKbFlYTnZiaUIwYUdVZ1JHRjBaVlJwYldVZ2FYTWdhVzUyWVd4cFpGd2lLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQmpiMjV6ZENCcGJuWmhiR2xrSUQwZ2NtVmhjMjl1SUdsdWMzUmhibU5sYjJZZ1NXNTJZV3hwWkNBL0lISmxZWE52YmlBNklHNWxkeUJKYm5aaGJHbGtLSEpsWVhOdmJpd2daWGh3YkdGdVlYUnBiMjRwTzF4dVhHNGdJQ0FnYVdZZ0tGTmxkSFJwYm1kekxuUm9jbTkzVDI1SmJuWmhiR2xrS1NCN1hHNGdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1NXNTJZV3hwWkVSaGRHVlVhVzFsUlhKeWIzSW9hVzUyWVd4cFpDazdYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUJ1WlhjZ1JHRjBaVlJwYldVb2V5QnBiblpoYkdsa0lIMHBPMXh1SUNBZ0lIMWNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJEYUdWamF5QnBaaUJoYmlCdlltcGxZM1FnYVhNZ1lXNGdhVzV6ZEdGdVkyVWdiMllnUkdGMFpWUnBiV1V1SUZkdmNtdHpJR0ZqY205emN5QmpiMjUwWlhoMElHSnZkVzVrWVhKcFpYTmNiaUFnSUNvZ1FIQmhjbUZ0SUh0dlltcGxZM1I5SUc5Y2JpQWdJQ29nUUhKbGRIVnliaUI3WW05dmJHVmhibjFjYmlBZ0lDb3ZYRzRnSUhOMFlYUnBZeUJwYzBSaGRHVlVhVzFsS0c4cElIdGNiaUFnSUNCeVpYUjFjbTRnS0c4Z0ppWWdieTVwYzB4MWVHOXVSR0YwWlZScGJXVXBJSHg4SUdaaGJITmxPMXh1SUNCOVhHNWNiaUFnTHk4Z1NVNUdUMXh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkhaWFFnZEdobElIWmhiSFZsSUc5bUlIVnVhWFF1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQjFibWwwSUMwZ1lTQjFibWwwSUhOMVkyZ2dZWE1nSjIxcGJuVjBaU2NnYjNJZ0oyUmhlU2RjYmlBZ0lDb2dRR1Y0WVcxd2JHVWdSR0YwWlZScGJXVXViRzlqWVd3b01qQXhOeXdnTnl3Z05Da3VaMlYwS0NkdGIyNTBhQ2NwT3lBdkx6MCtJRGRjYmlBZ0lDb2dRR1Y0WVcxd2JHVWdSR0YwWlZScGJXVXViRzlqWVd3b01qQXhOeXdnTnl3Z05Da3VaMlYwS0Nka1lYa25LVHNnTHk4OVBpQTBYRzRnSUNBcUlFQnlaWFIxY200Z2UyNTFiV0psY24xY2JpQWdJQ292WEc0Z0lHZGxkQ2gxYm1sMEtTQjdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTmJkVzVwZEYwN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dVbVYwZFhKdWN5QjNhR1YwYUdWeUlIUm9aU0JFWVhSbFZHbHRaU0JwY3lCMllXeHBaQzRnU1c1MllXeHBaQ0JFWVhSbFZHbHRaWE1nYjJOamRYSWdkMmhsYmpwY2JpQWdJQ29nS2lCVWFHVWdSR0YwWlZScGJXVWdkMkZ6SUdOeVpXRjBaV1FnWm5KdmJTQnBiblpoYkdsa0lHTmhiR1Z1WkdGeUlHbHVabTl5YldGMGFXOXVMQ0J6ZFdOb0lHRnpJSFJvWlNBeE0zUm9JRzF2Ym5Sb0lHOXlJRVpsWW5KMVlYSjVJRE13WEc0Z0lDQXFJQ29nVkdobElFUmhkR1ZVYVcxbElIZGhjeUJqY21WaGRHVmtJR0o1SUdGdUlHOXdaWEpoZEdsdmJpQnZiaUJoYm05MGFHVnlJR2x1ZG1Gc2FXUWdaR0YwWlZ4dUlDQWdLaUJBZEhsd1pTQjdZbTl2YkdWaGJuMWNiaUFnSUNvdlhHNGdJR2RsZENCcGMxWmhiR2xrS0NrZ2UxeHVJQ0FnSUhKbGRIVnliaUIwYUdsekxtbHVkbUZzYVdRZ1BUMDlJRzUxYkd3N1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dVbVYwZFhKdWN5QmhiaUJsY25KdmNpQmpiMlJsSUdsbUlIUm9hWE1nUkdGMFpWUnBiV1VnYVhNZ2FXNTJZV3hwWkN3Z2IzSWdiblZzYkNCcFppQjBhR1VnUkdGMFpWUnBiV1VnYVhNZ2RtRnNhV1JjYmlBZ0lDb2dRSFI1Y0dVZ2UzTjBjbWx1WjMxY2JpQWdJQ292WEc0Z0lHZGxkQ0JwYm5aaGJHbGtVbVZoYzI5dUtDa2dlMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpMbWx1ZG1Gc2FXUWdQeUIwYUdsekxtbHVkbUZzYVdRdWNtVmhjMjl1SURvZ2JuVnNiRHRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCU1pYUjFjbTV6SUdGdUlHVjRjR3hoYm1GMGFXOXVJRzltSUhkb2VTQjBhR2x6SUVSaGRHVlVhVzFsSUdKbFkyRnRaU0JwYm5aaGJHbGtMQ0J2Y2lCdWRXeHNJR2xtSUhSb1pTQkVZWFJsVkdsdFpTQnBjeUIyWVd4cFpGeHVJQ0FnS2lCQWRIbHdaU0I3YzNSeWFXNW5mVnh1SUNBZ0tpOWNiaUFnWjJWMElHbHVkbUZzYVdSRmVIQnNZVzVoZEdsdmJpZ3BJSHRjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTVwYm5aaGJHbGtJRDhnZEdocGN5NXBiblpoYkdsa0xtVjRjR3hoYm1GMGFXOXVJRG9nYm5Wc2JEdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJIWlhRZ2RHaGxJR3h2WTJGc1pTQnZaaUJoSUVSaGRHVlVhVzFsTENCemRXTm9JQ2RsYmkxSFFpY3VJRlJvWlNCc2IyTmhiR1VnYVhNZ2RYTmxaQ0IzYUdWdUlHWnZjbTFoZEhScGJtY2dkR2hsSUVSaGRHVlVhVzFsWEc0Z0lDQXFYRzRnSUNBcUlFQjBlWEJsSUh0emRISnBibWQ5WEc0Z0lDQXFMMXh1SUNCblpYUWdiRzlqWVd4bEtDa2dlMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpMbWx6Vm1Gc2FXUWdQeUIwYUdsekxteHZZeTVzYjJOaGJHVWdPaUJ1ZFd4c08xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRWRsZENCMGFHVWdiblZ0WW1WeWFXNW5JSE41YzNSbGJTQnZaaUJoSUVSaGRHVlVhVzFsTENCemRXTm9JQ2RpWlc1bkp5NGdWR2hsSUc1MWJXSmxjbWx1WnlCemVYTjBaVzBnYVhNZ2RYTmxaQ0IzYUdWdUlHWnZjbTFoZEhScGJtY2dkR2hsSUVSaGRHVlVhVzFsWEc0Z0lDQXFYRzRnSUNBcUlFQjBlWEJsSUh0emRISnBibWQ5WEc0Z0lDQXFMMXh1SUNCblpYUWdiblZ0WW1WeWFXNW5VM2x6ZEdWdEtDa2dlMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpMbWx6Vm1Gc2FXUWdQeUIwYUdsekxteHZZeTV1ZFcxaVpYSnBibWRUZVhOMFpXMGdPaUJ1ZFd4c08xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRWRsZENCMGFHVWdiM1YwY0hWMElHTmhiR1Z1WkdGeUlHOW1JR0VnUkdGMFpWUnBiV1VzSUhOMVkyZ2dKMmx6YkdGdGFXTW5MaUJVYUdVZ2IzVjBjSFYwSUdOaGJHVnVaR0Z5SUdseklIVnpaV1FnZDJobGJpQm1iM0p0WVhSMGFXNW5JSFJvWlNCRVlYUmxWR2x0WlZ4dUlDQWdLbHh1SUNBZ0tpQkFkSGx3WlNCN2MzUnlhVzVuZlZ4dUlDQWdLaTljYmlBZ1oyVjBJRzkxZEhCMWRFTmhiR1Z1WkdGeUtDa2dlMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpMbWx6Vm1Gc2FXUWdQeUIwYUdsekxteHZZeTV2ZFhSd2RYUkRZV3hsYm1SaGNpQTZJRzUxYkd3N1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dSMlYwSUhSb1pTQjBhVzFsSUhwdmJtVWdZWE56YjJOcFlYUmxaQ0IzYVhSb0lIUm9hWE1nUkdGMFpWUnBiV1V1WEc0Z0lDQXFJRUIwZVhCbElIdGFiMjVsZlZ4dUlDQWdLaTljYmlBZ1oyVjBJSHB2Ym1Vb0tTQjdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVYM3B2Ym1VN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dSMlYwSUhSb1pTQnVZVzFsSUc5bUlIUm9aU0IwYVcxbElIcHZibVV1WEc0Z0lDQXFJRUIwZVhCbElIdHpkSEpwYm1kOVhHNGdJQ0FxTDF4dUlDQm5aWFFnZW05dVpVNWhiV1VvS1NCN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdWFYTldZV3hwWkNBL0lIUm9hWE11ZW05dVpTNXVZVzFsSURvZ2JuVnNiRHRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCSFpYUWdkR2hsSUhsbFlYSmNiaUFnSUNvZ1FHVjRZVzF3YkdVZ1JHRjBaVlJwYldVdWJHOWpZV3dvTWpBeE55d2dOU3dnTWpVcExubGxZWElnTHk4OVBpQXlNREUzWEc0Z0lDQXFJRUIwZVhCbElIdHVkVzFpWlhKOVhHNGdJQ0FxTDF4dUlDQm5aWFFnZVdWaGNpZ3BJSHRjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTVwYzFaaGJHbGtJRDhnZEdocGN5NWpMbmxsWVhJZ09pQk9ZVTQ3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1IyVjBJSFJvWlNCeGRXRnlkR1Z5WEc0Z0lDQXFJRUJsZUdGdGNHeGxJRVJoZEdWVWFXMWxMbXh2WTJGc0tESXdNVGNzSURVc0lESTFLUzV4ZFdGeWRHVnlJQzh2UFQ0Z01seHVJQ0FnS2lCQWRIbHdaU0I3Ym5WdFltVnlmVnh1SUNBZ0tpOWNiaUFnWjJWMElIRjFZWEowWlhJb0tTQjdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVhWE5XWVd4cFpDQS9JRTFoZEdndVkyVnBiQ2gwYUdsekxtTXViVzl1ZEdnZ0x5QXpLU0E2SUU1aFRqdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJIWlhRZ2RHaGxJRzF2Ym5Sb0lDZ3hMVEV5S1M1Y2JpQWdJQ29nUUdWNFlXMXdiR1VnUkdGMFpWUnBiV1V1Ykc5allXd29NakF4Tnl3Z05Td2dNalVwTG0xdmJuUm9JQzh2UFQ0Z05WeHVJQ0FnS2lCQWRIbHdaU0I3Ym5WdFltVnlmVnh1SUNBZ0tpOWNiaUFnWjJWMElHMXZiblJvS0NrZ2UxeHVJQ0FnSUhKbGRIVnliaUIwYUdsekxtbHpWbUZzYVdRZ1B5QjBhR2x6TG1NdWJXOXVkR2dnT2lCT1lVNDdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nUjJWMElIUm9aU0JrWVhrZ2IyWWdkR2hsSUcxdmJuUm9JQ2d4TFRNd2FYTm9LUzVjYmlBZ0lDb2dRR1Y0WVcxd2JHVWdSR0YwWlZScGJXVXViRzlqWVd3b01qQXhOeXdnTlN3Z01qVXBMbVJoZVNBdkx6MCtJREkxWEc0Z0lDQXFJRUIwZVhCbElIdHVkVzFpWlhKOVhHNGdJQ0FxTDF4dUlDQm5aWFFnWkdGNUtDa2dlMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpMbWx6Vm1Gc2FXUWdQeUIwYUdsekxtTXVaR0Y1SURvZ1RtRk9PMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUVkbGRDQjBhR1VnYUc5MWNpQnZaaUIwYUdVZ1pHRjVJQ2d3TFRJektTNWNiaUFnSUNvZ1FHVjRZVzF3YkdVZ1JHRjBaVlJwYldVdWJHOWpZV3dvTWpBeE55d2dOU3dnTWpVc0lEa3BMbWh2ZFhJZ0x5ODlQaUE1WEc0Z0lDQXFJRUIwZVhCbElIdHVkVzFpWlhKOVhHNGdJQ0FxTDF4dUlDQm5aWFFnYUc5MWNpZ3BJSHRjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTVwYzFaaGJHbGtJRDhnZEdocGN5NWpMbWh2ZFhJZ09pQk9ZVTQ3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1IyVjBJSFJvWlNCdGFXNTFkR1VnYjJZZ2RHaGxJR2h2ZFhJZ0tEQXROVGtwTGx4dUlDQWdLaUJBWlhoaGJYQnNaU0JFWVhSbFZHbHRaUzVzYjJOaGJDZ3lNREUzTENBMUxDQXlOU3dnT1N3Z016QXBMbTFwYm5WMFpTQXZMejArSURNd1hHNGdJQ0FxSUVCMGVYQmxJSHR1ZFcxaVpYSjlYRzRnSUNBcUwxeHVJQ0JuWlhRZ2JXbHVkWFJsS0NrZ2UxeHVJQ0FnSUhKbGRIVnliaUIwYUdsekxtbHpWbUZzYVdRZ1B5QjBhR2x6TG1NdWJXbHVkWFJsSURvZ1RtRk9PMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUVkbGRDQjBhR1VnYzJWamIyNWtJRzltSUhSb1pTQnRhVzUxZEdVZ0tEQXROVGtwTGx4dUlDQWdLaUJBWlhoaGJYQnNaU0JFWVhSbFZHbHRaUzVzYjJOaGJDZ3lNREUzTENBMUxDQXlOU3dnT1N3Z016QXNJRFV5S1M1elpXTnZibVFnTHk4OVBpQTFNbHh1SUNBZ0tpQkFkSGx3WlNCN2JuVnRZbVZ5ZlZ4dUlDQWdLaTljYmlBZ1oyVjBJSE5sWTI5dVpDZ3BJSHRjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTVwYzFaaGJHbGtJRDhnZEdocGN5NWpMbk5sWTI5dVpDQTZJRTVoVGp0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkhaWFFnZEdobElHMXBiR3hwYzJWamIyNWtJRzltSUhSb1pTQnpaV052Ym1RZ0tEQXRPVGs1S1M1Y2JpQWdJQ29nUUdWNFlXMXdiR1VnUkdGMFpWUnBiV1V1Ykc5allXd29NakF4Tnl3Z05Td2dNalVzSURrc0lETXdMQ0ExTWl3Z05qVTBLUzV0YVd4c2FYTmxZMjl1WkNBdkx6MCtJRFkxTkZ4dUlDQWdLaUJBZEhsd1pTQjdiblZ0WW1WeWZWeHVJQ0FnS2k5Y2JpQWdaMlYwSUcxcGJHeHBjMlZqYjI1a0tDa2dlMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpMbWx6Vm1Gc2FXUWdQeUIwYUdsekxtTXViV2xzYkdselpXTnZibVFnT2lCT1lVNDdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nUjJWMElIUm9aU0IzWldWcklIbGxZWEpjYmlBZ0lDb2dRSE5sWlNCb2RIUndjem92TDJWdUxuZHBhMmx3WldScFlTNXZjbWN2ZDJscmFTOUpVMDlmZDJWbGExOWtZWFJsWEc0Z0lDQXFJRUJsZUdGdGNHeGxJRVJoZEdWVWFXMWxMbXh2WTJGc0tESXdNVFFzSURFeUxDQXpNU2t1ZDJWbGExbGxZWElnTHk4OVBpQXlNREUxWEc0Z0lDQXFJRUIwZVhCbElIdHVkVzFpWlhKOVhHNGdJQ0FxTDF4dUlDQm5aWFFnZDJWbGExbGxZWElvS1NCN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdWFYTldZV3hwWkNBL0lIQnZjM05wWW14NVEyRmphR1ZrVjJWbGEwUmhkR0VvZEdocGN5a3VkMlZsYTFsbFlYSWdPaUJPWVU0N1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dSMlYwSUhSb1pTQjNaV1ZySUc1MWJXSmxjaUJ2WmlCMGFHVWdkMlZsYXlCNVpXRnlJQ2d4TFRVeWFYTm9LUzVjYmlBZ0lDb2dRSE5sWlNCb2RIUndjem92TDJWdUxuZHBhMmx3WldScFlTNXZjbWN2ZDJscmFTOUpVMDlmZDJWbGExOWtZWFJsWEc0Z0lDQXFJRUJsZUdGdGNHeGxJRVJoZEdWVWFXMWxMbXh2WTJGc0tESXdNVGNzSURVc0lESTFLUzUzWldWclRuVnRZbVZ5SUM4dlBUNGdNakZjYmlBZ0lDb2dRSFI1Y0dVZ2UyNTFiV0psY24xY2JpQWdJQ292WEc0Z0lHZGxkQ0IzWldWclRuVnRZbVZ5S0NrZ2UxeHVJQ0FnSUhKbGRIVnliaUIwYUdsekxtbHpWbUZzYVdRZ1B5QndiM056YVdKc2VVTmhZMmhsWkZkbFpXdEVZWFJoS0hSb2FYTXBMbmRsWld0T2RXMWlaWElnT2lCT1lVNDdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nUjJWMElIUm9aU0JrWVhrZ2IyWWdkR2hsSUhkbFpXc3VYRzRnSUNBcUlERWdhWE1nVFc5dVpHRjVJR0Z1WkNBM0lHbHpJRk4xYm1SaGVWeHVJQ0FnS2lCQWMyVmxJR2gwZEhCek9pOHZaVzR1ZDJscmFYQmxaR2xoTG05eVp5OTNhV3RwTDBsVFQxOTNaV1ZyWDJSaGRHVmNiaUFnSUNvZ1FHVjRZVzF3YkdVZ1JHRjBaVlJwYldVdWJHOWpZV3dvTWpBeE5Dd2dNVEVzSURNeEtTNTNaV1ZyWkdGNUlDOHZQVDRnTkZ4dUlDQWdLaUJBZEhsd1pTQjdiblZ0WW1WeWZWeHVJQ0FnS2k5Y2JpQWdaMlYwSUhkbFpXdGtZWGtvS1NCN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdWFYTldZV3hwWkNBL0lIQnZjM05wWW14NVEyRmphR1ZrVjJWbGEwUmhkR0VvZEdocGN5a3VkMlZsYTJSaGVTQTZJRTVoVGp0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkhaWFFnZEdobElHOXlaR2x1WVd3Z0tHMWxZVzVwYm1jZ2RHaGxJR1JoZVNCdlppQjBhR1VnZVdWaGNpbGNiaUFnSUNvZ1FHVjRZVzF3YkdVZ1JHRjBaVlJwYldVdWJHOWpZV3dvTWpBeE55d2dOU3dnTWpVcExtOXlaR2x1WVd3Z0x5ODlQaUF4TkRWY2JpQWdJQ29nUUhSNWNHVWdlMjUxYldKbGNueEVZWFJsVkdsdFpYMWNiaUFnSUNvdlhHNGdJR2RsZENCdmNtUnBibUZzS0NrZ2UxeHVJQ0FnSUhKbGRIVnliaUIwYUdsekxtbHpWbUZzYVdRZ1B5Qm5jbVZuYjNKcFlXNVViMDl5WkdsdVlXd29kR2hwY3k1aktTNXZjbVJwYm1Gc0lEb2dUbUZPTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFZGxkQ0IwYUdVZ2FIVnRZVzRnY21WaFpHRmliR1VnYzJodmNuUWdiVzl1ZEdnZ2JtRnRaU3dnYzNWamFDQmhjeUFuVDJOMEp5NWNiaUFnSUNvZ1JHVm1ZWFZzZEhNZ2RHOGdkR2hsSUhONWMzUmxiU2R6SUd4dlkyRnNaU0JwWmlCdWJ5QnNiMk5oYkdVZ2FHRnpJR0psWlc0Z2MzQmxZMmxtYVdWa1hHNGdJQ0FxSUVCbGVHRnRjR3hsSUVSaGRHVlVhVzFsTG14dlkyRnNLREl3TVRjc0lERXdMQ0F6TUNrdWJXOXVkR2hUYUc5eWRDQXZMejArSUU5amRGeHVJQ0FnS2lCQWRIbHdaU0I3YzNSeWFXNW5mVnh1SUNBZ0tpOWNiaUFnWjJWMElHMXZiblJvVTJodmNuUW9LU0I3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11YVhOV1lXeHBaQ0EvSUVsdVptOHViVzl1ZEdoektGd2ljMmh2Y25SY0lpd2dleUJzYjJOUFltbzZJSFJvYVhNdWJHOWpJSDBwVzNSb2FYTXViVzl1ZEdnZ0xTQXhYU0E2SUc1MWJHdzdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nUjJWMElIUm9aU0JvZFcxaGJpQnlaV0ZrWVdKc1pTQnNiMjVuSUcxdmJuUm9JRzVoYldVc0lITjFZMmdnWVhNZ0owOWpkRzlpWlhJbkxseHVJQ0FnS2lCRVpXWmhkV3gwY3lCMGJ5QjBhR1VnYzNsemRHVnRKM01nYkc5allXeGxJR2xtSUc1dklHeHZZMkZzWlNCb1lYTWdZbVZsYmlCemNHVmphV1pwWldSY2JpQWdJQ29nUUdWNFlXMXdiR1VnUkdGMFpWUnBiV1V1Ykc5allXd29NakF4Tnl3Z01UQXNJRE13S1M1dGIyNTBhRXh2Ym1jZ0x5ODlQaUJQWTNSdlltVnlYRzRnSUNBcUlFQjBlWEJsSUh0emRISnBibWQ5WEc0Z0lDQXFMMXh1SUNCblpYUWdiVzl1ZEdoTWIyNW5LQ2tnZTF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TG1selZtRnNhV1FnUHlCSmJtWnZMbTF2Ym5Sb2N5aGNJbXh2Ym1kY0lpd2dleUJzYjJOUFltbzZJSFJvYVhNdWJHOWpJSDBwVzNSb2FYTXViVzl1ZEdnZ0xTQXhYU0E2SUc1MWJHdzdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nUjJWMElIUm9aU0JvZFcxaGJpQnlaV0ZrWVdKc1pTQnphRzl5ZENCM1pXVnJaR0Y1TENCemRXTm9JR0Z6SUNkTmIyNG5MbHh1SUNBZ0tpQkVaV1poZFd4MGN5QjBieUIwYUdVZ2MzbHpkR1Z0SjNNZ2JHOWpZV3hsSUdsbUlHNXZJR3h2WTJGc1pTQm9ZWE1nWW1WbGJpQnpjR1ZqYVdacFpXUmNiaUFnSUNvZ1FHVjRZVzF3YkdVZ1JHRjBaVlJwYldVdWJHOWpZV3dvTWpBeE55d2dNVEFzSURNd0tTNTNaV1ZyWkdGNVUyaHZjblFnTHk4OVBpQk5iMjVjYmlBZ0lDb2dRSFI1Y0dVZ2UzTjBjbWx1WjMxY2JpQWdJQ292WEc0Z0lHZGxkQ0IzWldWclpHRjVVMmh2Y25Rb0tTQjdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVhWE5XWVd4cFpDQS9JRWx1Wm04dWQyVmxhMlJoZVhNb1hDSnphRzl5ZEZ3aUxDQjdJR3h2WTA5aWFqb2dkR2hwY3k1c2IyTWdmU2xiZEdocGN5NTNaV1ZyWkdGNUlDMGdNVjBnT2lCdWRXeHNPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUVkbGRDQjBhR1VnYUhWdFlXNGdjbVZoWkdGaWJHVWdiRzl1WnlCM1pXVnJaR0Y1TENCemRXTm9JR0Z6SUNkTmIyNWtZWGtuTGx4dUlDQWdLaUJFWldaaGRXeDBjeUIwYnlCMGFHVWdjM2x6ZEdWdEozTWdiRzlqWVd4bElHbG1JRzV2SUd4dlkyRnNaU0JvWVhNZ1ltVmxiaUJ6Y0dWamFXWnBaV1JjYmlBZ0lDb2dRR1Y0WVcxd2JHVWdSR0YwWlZScGJXVXViRzlqWVd3b01qQXhOeXdnTVRBc0lETXdLUzUzWldWclpHRjVURzl1WnlBdkx6MCtJRTF2Ym1SaGVWeHVJQ0FnS2lCQWRIbHdaU0I3YzNSeWFXNW5mVnh1SUNBZ0tpOWNiaUFnWjJWMElIZGxaV3RrWVhsTWIyNW5LQ2tnZTF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TG1selZtRnNhV1FnUHlCSmJtWnZMbmRsWld0a1lYbHpLRndpYkc5dVoxd2lMQ0I3SUd4dlkwOWlham9nZEdocGN5NXNiMk1nZlNsYmRHaHBjeTUzWldWclpHRjVJQzBnTVYwZ09pQnVkV3hzTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFZGxkQ0IwYUdVZ1ZWUkRJRzltWm5ObGRDQnZaaUIwYUdseklFUmhkR1ZVYVcxbElHbHVJRzFwYm5WMFpYTmNiaUFnSUNvZ1FHVjRZVzF3YkdVZ1JHRjBaVlJwYldVdWJtOTNLQ2t1YjJabWMyVjBJQzh2UFQ0Z0xUSTBNRnh1SUNBZ0tpQkFaWGhoYlhCc1pTQkVZWFJsVkdsdFpTNTFkR01vS1M1dlptWnpaWFFnTHk4OVBpQXdYRzRnSUNBcUlFQjBlWEJsSUh0dWRXMWlaWEo5WEc0Z0lDQXFMMXh1SUNCblpYUWdiMlptYzJWMEtDa2dlMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpMbWx6Vm1Gc2FXUWdQeUFyZEdocGN5NXZJRG9nVG1GT08xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRWRsZENCMGFHVWdjMmh2Y25RZ2FIVnRZVzRnYm1GdFpTQm1iM0lnZEdobElIcHZibVVuY3lCamRYSnlaVzUwSUc5bVpuTmxkQ3dnWm05eUlHVjRZVzF3YkdVZ1hDSkZVMVJjSWlCdmNpQmNJa1ZFVkZ3aUxseHVJQ0FnS2lCRVpXWmhkV3gwY3lCMGJ5QjBhR1VnYzNsemRHVnRKM01nYkc5allXeGxJR2xtSUc1dklHeHZZMkZzWlNCb1lYTWdZbVZsYmlCemNHVmphV1pwWldSY2JpQWdJQ29nUUhSNWNHVWdlM04wY21sdVozMWNiaUFnSUNvdlhHNGdJR2RsZENCdlptWnpaWFJPWVcxbFUyaHZjblFvS1NCN1hHNGdJQ0FnYVdZZ0tIUm9hWE11YVhOV1lXeHBaQ2tnZTF4dUlDQWdJQ0FnY21WMGRYSnVJSFJvYVhNdWVtOXVaUzV2Wm1aelpYUk9ZVzFsS0hSb2FYTXVkSE1zSUh0Y2JpQWdJQ0FnSUNBZ1ptOXliV0YwT2lCY0luTm9iM0owWENJc1hHNGdJQ0FnSUNBZ0lHeHZZMkZzWlRvZ2RHaHBjeTVzYjJOaGJHVXNYRzRnSUNBZ0lDQjlLVHRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUc1MWJHdzdYRzRnSUNBZ2ZWeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRWRsZENCMGFHVWdiRzl1WnlCb2RXMWhiaUJ1WVcxbElHWnZjaUIwYUdVZ2VtOXVaU2R6SUdOMWNuSmxiblFnYjJabWMyVjBMQ0JtYjNJZ1pYaGhiWEJzWlNCY0lrVmhjM1JsY200Z1UzUmhibVJoY21RZ1ZHbHRaVndpSUc5eUlGd2lSV0Z6ZEdWeWJpQkVZWGxzYVdkb2RDQlVhVzFsWENJdVhHNGdJQ0FxSUVSbFptRjFiSFJ6SUhSdklIUm9aU0J6ZVhOMFpXMG5jeUJzYjJOaGJHVWdhV1lnYm04Z2JHOWpZV3hsSUdoaGN5QmlaV1Z1SUhOd1pXTnBabWxsWkZ4dUlDQWdLaUJBZEhsd1pTQjdjM1J5YVc1bmZWeHVJQ0FnS2k5Y2JpQWdaMlYwSUc5bVpuTmxkRTVoYldWTWIyNW5LQ2tnZTF4dUlDQWdJR2xtSUNoMGFHbHpMbWx6Vm1Gc2FXUXBJSHRjYmlBZ0lDQWdJSEpsZEhWeWJpQjBhR2x6TG5wdmJtVXViMlptYzJWMFRtRnRaU2gwYUdsekxuUnpMQ0I3WEc0Z0lDQWdJQ0FnSUdadmNtMWhkRG9nWENKc2IyNW5YQ0lzWEc0Z0lDQWdJQ0FnSUd4dlkyRnNaVG9nZEdocGN5NXNiMk5oYkdVc1hHNGdJQ0FnSUNCOUtUdGNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnY21WMGRYSnVJRzUxYkd3N1hHNGdJQ0FnZlZ4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFZGxkQ0IzYUdWMGFHVnlJSFJvYVhNZ2VtOXVaU2R6SUc5bVpuTmxkQ0JsZG1WeUlHTm9ZVzVuWlhNc0lHRnpJR2x1SUdFZ1JGTlVMbHh1SUNBZ0tpQkFkSGx3WlNCN1ltOXZiR1ZoYm4xY2JpQWdJQ292WEc0Z0lHZGxkQ0JwYzA5bVpuTmxkRVpwZUdWa0tDa2dlMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpMbWx6Vm1Gc2FXUWdQeUIwYUdsekxucHZibVV1YVhOVmJtbDJaWEp6WVd3Z09pQnVkV3hzTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFZGxkQ0IzYUdWMGFHVnlJSFJvWlNCRVlYUmxWR2x0WlNCcGN5QnBiaUJoSUVSVFZDNWNiaUFnSUNvZ1FIUjVjR1VnZTJKdmIyeGxZVzU5WEc0Z0lDQXFMMXh1SUNCblpYUWdhWE5KYmtSVFZDZ3BJSHRjYmlBZ0lDQnBaaUFvZEdocGN5NXBjMDltWm5ObGRFWnBlR1ZrS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnWm1Gc2MyVTdYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUFvWEc0Z0lDQWdJQ0FnSUhSb2FYTXViMlptYzJWMElENGdkR2hwY3k1elpYUW9leUJ0YjI1MGFEb2dNU3dnWkdGNU9pQXhJSDBwTG05bVpuTmxkQ0I4ZkZ4dUlDQWdJQ0FnSUNCMGFHbHpMbTltWm5ObGRDQStJSFJvYVhNdWMyVjBLSHNnYlc5dWRHZzZJRFVnZlNrdWIyWm1jMlYwWEc0Z0lDQWdJQ0FwTzF4dUlDQWdJSDFjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCU1pYUjFjbTV6SUhSeWRXVWdhV1lnZEdocGN5QkVZWFJsVkdsdFpTQnBjeUJwYmlCaElHeGxZWEFnZVdWaGNpd2dabUZzYzJVZ2IzUm9aWEozYVhObFhHNGdJQ0FxSUVCbGVHRnRjR3hsSUVSaGRHVlVhVzFsTG14dlkyRnNLREl3TVRZcExtbHpTVzVNWldGd1dXVmhjaUF2THowK0lIUnlkV1ZjYmlBZ0lDb2dRR1Y0WVcxd2JHVWdSR0YwWlZScGJXVXViRzlqWVd3b01qQXhNeWt1YVhOSmJreGxZWEJaWldGeUlDOHZQVDRnWm1Gc2MyVmNiaUFnSUNvZ1FIUjVjR1VnZTJKdmIyeGxZVzU5WEc0Z0lDQXFMMXh1SUNCblpYUWdhWE5KYmt4bFlYQlpaV0Z5S0NrZ2UxeHVJQ0FnSUhKbGRIVnliaUJwYzB4bFlYQlpaV0Z5S0hSb2FYTXVlV1ZoY2lrN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dVbVYwZFhKdWN5QjBhR1VnYm5WdFltVnlJRzltSUdSaGVYTWdhVzRnZEdocGN5QkVZWFJsVkdsdFpTZHpJRzF2Ym5Sb1hHNGdJQ0FxSUVCbGVHRnRjR3hsSUVSaGRHVlVhVzFsTG14dlkyRnNLREl3TVRZc0lESXBMbVJoZVhOSmJrMXZiblJvSUM4dlBUNGdNamxjYmlBZ0lDb2dRR1Y0WVcxd2JHVWdSR0YwWlZScGJXVXViRzlqWVd3b01qQXhOaXdnTXlrdVpHRjVjMGx1VFc5dWRHZ2dMeTg5UGlBek1WeHVJQ0FnS2lCQWRIbHdaU0I3Ym5WdFltVnlmVnh1SUNBZ0tpOWNiaUFnWjJWMElHUmhlWE5KYmsxdmJuUm9LQ2tnZTF4dUlDQWdJSEpsZEhWeWJpQmtZWGx6U1c1TmIyNTBhQ2gwYUdsekxubGxZWElzSUhSb2FYTXViVzl1ZEdncE8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRkpsZEhWeWJuTWdkR2hsSUc1MWJXSmxjaUJ2WmlCa1lYbHpJR2x1SUhSb2FYTWdSR0YwWlZScGJXVW5jeUI1WldGeVhHNGdJQ0FxSUVCbGVHRnRjR3hsSUVSaGRHVlVhVzFsTG14dlkyRnNLREl3TVRZcExtUmhlWE5KYmxsbFlYSWdMeTg5UGlBek5qWmNiaUFnSUNvZ1FHVjRZVzF3YkdVZ1JHRjBaVlJwYldVdWJHOWpZV3dvTWpBeE15a3VaR0Y1YzBsdVdXVmhjaUF2THowK0lETTJOVnh1SUNBZ0tpQkFkSGx3WlNCN2JuVnRZbVZ5ZlZ4dUlDQWdLaTljYmlBZ1oyVjBJR1JoZVhOSmJsbGxZWElvS1NCN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdWFYTldZV3hwWkNBL0lHUmhlWE5KYmxsbFlYSW9kR2hwY3k1NVpXRnlLU0E2SUU1aFRqdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJTWlhSMWNtNXpJSFJvWlNCdWRXMWlaWElnYjJZZ2QyVmxhM01nYVc0Z2RHaHBjeUJFWVhSbFZHbHRaU2R6SUhsbFlYSmNiaUFnSUNvZ1FITmxaU0JvZEhSd2N6b3ZMMlZ1TG5kcGEybHdaV1JwWVM1dmNtY3ZkMmxyYVM5SlUwOWZkMlZsYTE5a1lYUmxYRzRnSUNBcUlFQmxlR0Z0Y0d4bElFUmhkR1ZVYVcxbExteHZZMkZzS0RJd01EUXBMbmRsWld0elNXNVhaV1ZyV1dWaGNpQXZMejArSURVelhHNGdJQ0FxSUVCbGVHRnRjR3hsSUVSaGRHVlVhVzFsTG14dlkyRnNLREl3TVRNcExuZGxaV3R6U1c1WFpXVnJXV1ZoY2lBdkx6MCtJRFV5WEc0Z0lDQXFJRUIwZVhCbElIdHVkVzFpWlhKOVhHNGdJQ0FxTDF4dUlDQm5aWFFnZDJWbGEzTkpibGRsWld0WlpXRnlLQ2tnZTF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TG1selZtRnNhV1FnUHlCM1pXVnJjMGx1VjJWbGExbGxZWElvZEdocGN5NTNaV1ZyV1dWaGNpa2dPaUJPWVU0N1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dVbVYwZFhKdWN5QjBhR1VnY21WemIyeDJaV1FnU1c1MGJDQnZjSFJwYjI1eklHWnZjaUIwYUdseklFUmhkR1ZVYVcxbExseHVJQ0FnS2lCVWFHbHpJR2x6SUhWelpXWjFiQ0JwYmlCMWJtUmxjbk4wWVc1a2FXNW5JSFJvWlNCaVpXaGhkbWx2Y2lCdlppQm1iM0p0WVhSMGFXNW5JRzFsZEdodlpITmNiaUFnSUNvZ1FIQmhjbUZ0SUh0UFltcGxZM1I5SUc5d2RITWdMU0IwYUdVZ2MyRnRaU0J2Y0hScGIyNXpJR0Z6SUhSdlRHOWpZV3hsVTNSeWFXNW5YRzRnSUNBcUlFQnlaWFIxY200Z2UwOWlhbVZqZEgxY2JpQWdJQ292WEc0Z0lISmxjMjlzZG1Wa1RHOWpZV3hsVDNCMGFXOXVjeWh2Y0hSeklEMGdlMzBwSUh0Y2JpQWdJQ0JqYjI1emRDQjdJR3h2WTJGc1pTd2diblZ0WW1WeWFXNW5VM2x6ZEdWdExDQmpZV3hsYm1SaGNpQjlJRDBnUm05eWJXRjBkR1Z5TG1OeVpXRjBaU2hjYmlBZ0lDQWdJSFJvYVhNdWJHOWpMbU5zYjI1bEtHOXdkSE1wTEZ4dUlDQWdJQ0FnYjNCMGMxeHVJQ0FnSUNrdWNtVnpiMngyWldSUGNIUnBiMjV6S0hSb2FYTXBPMXh1SUNBZ0lISmxkSFZ5YmlCN0lHeHZZMkZzWlN3Z2JuVnRZbVZ5YVc1blUzbHpkR1Z0TENCdmRYUndkWFJEWVd4bGJtUmhjam9nWTJGc1pXNWtZWElnZlR0Y2JpQWdmVnh1WEc0Z0lDOHZJRlJTUVU1VFJrOVNUVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQmNJbE5sZEZ3aUlIUm9aU0JFWVhSbFZHbHRaU2R6SUhwdmJtVWdkRzhnVlZSRExpQlNaWFIxY201eklHRWdibVYzYkhrdFkyOXVjM1J5ZFdOMFpXUWdSR0YwWlZScGJXVXVYRzRnSUNBcVhHNGdJQ0FxSUVWeGRXbDJZV3hsYm5RZ2RHOGdlMEJzYVc1cklFUmhkR1ZVYVcxbEkzTmxkRnB2Ym1WOUtDZDFkR01uS1Z4dUlDQWdLaUJBY0dGeVlXMGdlMjUxYldKbGNuMGdXMjltWm5ObGREMHdYU0F0SUc5d2RHbHZibUZzYkhrc0lHRnVJRzltWm5ObGRDQm1jbTl0SUZWVVF5QnBiaUJ0YVc1MWRHVnpYRzRnSUNBcUlFQndZWEpoYlNCN1QySnFaV04wZlNCYmIzQjBjejE3ZlYwZ0xTQnZjSFJwYjI1eklIUnZJSEJoYzNNZ2RHOGdZSE5sZEZwdmJtVW9LV0JjYmlBZ0lDb2dRSEpsZEhWeWJpQjdSR0YwWlZScGJXVjlYRzRnSUNBcUwxeHVJQ0IwYjFWVVF5aHZabVp6WlhRZ1BTQXdMQ0J2Y0hSeklEMGdlMzBwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1elpYUmFiMjVsS0VacGVHVmtUMlptYzJWMFdtOXVaUzVwYm5OMFlXNWpaU2h2Wm1aelpYUXBMQ0J2Y0hSektUdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJjSWxObGRGd2lJSFJvWlNCRVlYUmxWR2x0WlNkeklIcHZibVVnZEc4Z2RHaGxJR2h2YzNRbmN5QnNiMk5oYkNCNmIyNWxMaUJTWlhSMWNtNXpJR0VnYm1WM2JIa3RZMjl1YzNSeWRXTjBaV1FnUkdGMFpWUnBiV1V1WEc0Z0lDQXFYRzRnSUNBcUlFVnhkV2wyWVd4bGJuUWdkRzhnWUhObGRGcHZibVVvSjJ4dlkyRnNKeWxnWEc0Z0lDQXFJRUJ5WlhSMWNtNGdlMFJoZEdWVWFXMWxmVnh1SUNBZ0tpOWNiaUFnZEc5TWIyTmhiQ2dwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1elpYUmFiMjVsS0ZObGRIUnBibWR6TG1SbFptRjFiSFJhYjI1bEtUdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJjSWxObGRGd2lJSFJvWlNCRVlYUmxWR2x0WlNkeklIcHZibVVnZEc4Z2MzQmxZMmxtYVdWa0lIcHZibVV1SUZKbGRIVnlibk1nWVNCdVpYZHNlUzFqYjI1emRISjFZM1JsWkNCRVlYUmxWR2x0WlM1Y2JpQWdJQ3BjYmlBZ0lDb2dRbmtnWkdWbVlYVnNkQ3dnZEdobElITmxkSFJsY2lCclpXVndjeUIwYUdVZ2RXNWtaWEpzZVdsdVp5QjBhVzFsSUhSb1pTQnpZVzFsSUNoaGN5QnBiaXdnZEdobElITmhiV1VnZEdsdFpYTjBZVzF3S1N3Z1luVjBJSFJvWlNCdVpYY2dhVzV6ZEdGdVkyVWdkMmxzYkNCeVpYQnZjblFnWkdsbVptVnlaVzUwSUd4dlkyRnNJSFJwYldWeklHRnVaQ0JqYjI1emFXUmxjaUJFVTFSeklIZG9aVzRnYldGcmFXNW5JR052YlhCMWRHRjBhVzl1Y3l3Z1lYTWdkMmwwYUNCN1FHeHBibXNnUkdGMFpWUnBiV1VqY0d4MWMzMHVJRmx2ZFNCdFlYa2dkMmx6YUNCMGJ5QjFjMlVnZTBCc2FXNXJJRVJoZEdWVWFXMWxJM1J2VEc5allXeDlJR0Z1WkNCN1FHeHBibXNnUkdGMFpWUnBiV1VqZEc5VlZFTjlJSGRvYVdOb0lIQnliM1pwWkdVZ2MybHRjR3hsSUdOdmJuWmxibWxsYm1ObElIZHlZWEJ3WlhKeklHWnZjaUJqYjIxdGIyNXNlU0IxYzJWa0lIcHZibVZ6TGx4dUlDQWdLaUJBY0dGeVlXMGdlM04wY21sdVozeGFiMjVsZlNCYmVtOXVaVDBuYkc5allXd25YU0F0SUdFZ2VtOXVaU0JwWkdWdWRHbG1hV1Z5TGlCQmN5QmhJSE4wY21sdVp5d2dkR2hoZENCallXNGdZbVVnWVc1NUlFbEJUa0VnZW05dVpTQnpkWEJ3YjNKMFpXUWdZbmtnZEdobElHaHZjM1FnWlc1MmFYSnZibTFsYm5Rc0lHOXlJR0VnWm1sNFpXUXRiMlptYzJWMElHNWhiV1VnYjJZZ2RHaGxJR1p2Y20wZ0oxVlVReXN6Snl3Z2IzSWdkR2hsSUhOMGNtbHVaM01nSjJ4dlkyRnNKeUJ2Y2lBbmRYUmpKeTRnV1c5MUlHMWhlU0JoYkhOdklITjFjSEJzZVNCaGJpQnBibk4wWVc1alpTQnZaaUJoSUh0QWJHbHVheUJFWVhSbFZHbHRaU05hYjI1bGZTQmpiR0Z6Y3k1Y2JpQWdJQ29nUUhCaGNtRnRJSHRQWW1wbFkzUjlJRzl3ZEhNZ0xTQnZjSFJwYjI1elhHNGdJQ0FxSUVCd1lYSmhiU0I3WW05dmJHVmhibjBnVzI5d2RITXVhMlZsY0V4dlkyRnNWR2x0WlQxbVlXeHpaVjBnTFNCSlppQjBjblZsTENCaFpHcDFjM1FnZEdobElIVnVaR1Z5YkhscGJtY2dkR2x0WlNCemJ5QjBhR0YwSUhSb1pTQnNiMk5oYkNCMGFXMWxJSE4wWVhseklIUm9aU0J6WVcxbExDQmlkWFFnYVc0Z2RHaGxJSFJoY21kbGRDQjZiMjVsTGlCWmIzVWdjMmh2ZFd4a0lISmhjbVZzZVNCdVpXVmtJSFJvYVhNdVhHNGdJQ0FxSUVCeVpYUjFjbTRnZTBSaGRHVlVhVzFsZlZ4dUlDQWdLaTljYmlBZ2MyVjBXbTl1WlNoNmIyNWxMQ0I3SUd0bFpYQk1iMk5oYkZScGJXVWdQU0JtWVd4elpTd2dhMlZsY0VOaGJHVnVaR0Z5VkdsdFpTQTlJR1poYkhObElIMGdQU0I3ZlNrZ2UxeHVJQ0FnSUhwdmJtVWdQU0J1YjNKdFlXeHBlbVZhYjI1bEtIcHZibVVzSUZObGRIUnBibWR6TG1SbFptRjFiSFJhYjI1bEtUdGNiaUFnSUNCcFppQW9lbTl1WlM1bGNYVmhiSE1vZEdocGN5NTZiMjVsS1NrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUhSb2FYTTdYRzRnSUNBZ2ZTQmxiSE5sSUdsbUlDZ2hlbTl1WlM1cGMxWmhiR2xrS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnUkdGMFpWUnBiV1V1YVc1MllXeHBaQ2gxYm5OMWNIQnZjblJsWkZwdmJtVW9lbTl1WlNrcE8xeHVJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0JzWlhRZ2JtVjNWRk1nUFNCMGFHbHpMblJ6TzF4dUlDQWdJQ0FnYVdZZ0tHdGxaWEJNYjJOaGJGUnBiV1VnZkh3Z2EyVmxjRU5oYkdWdVpHRnlWR2x0WlNrZ2UxeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCdlptWnpaWFJIZFdWemN5QTlJSHB2Ym1VdWIyWm1jMlYwS0hSb2FYTXVkSE1wTzF4dUlDQWdJQ0FnSUNCamIyNXpkQ0JoYzA5aWFpQTlJSFJvYVhNdWRHOVBZbXBsWTNRb0tUdGNiaUFnSUNBZ0lDQWdXMjVsZDFSVFhTQTlJRzlpYWxSdlZGTW9ZWE5QWW1vc0lHOW1abk5sZEVkMVpYTnpMQ0I2YjI1bEtUdGNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lISmxkSFZ5YmlCamJHOXVaU2gwYUdsekxDQjdJSFJ6T2lCdVpYZFVVeXdnZW05dVpTQjlLVHRjYmlBZ0lDQjlYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nWENKVFpYUmNJaUIwYUdVZ2JHOWpZV3hsTENCdWRXMWlaWEpwYm1kVGVYTjBaVzBzSUc5eUlHOTFkSEIxZEVOaGJHVnVaR0Z5TGlCU1pYUjFjbTV6SUdFZ2JtVjNiSGt0WTI5dWMzUnlkV04wWldRZ1JHRjBaVlJwYldVdVhHNGdJQ0FxSUVCd1lYSmhiU0I3VDJKcVpXTjBmU0J3Y205d1pYSjBhV1Z6SUMwZ2RHaGxJSEJ5YjNCbGNuUnBaWE1nZEc4Z2MyVjBYRzRnSUNBcUlFQmxlR0Z0Y0d4bElFUmhkR1ZVYVcxbExteHZZMkZzS0RJd01UY3NJRFVzSURJMUtTNXlaV052Ym1acFozVnlaU2g3SUd4dlkyRnNaVG9nSjJWdUxVZENKeUI5S1Z4dUlDQWdLaUJBY21WMGRYSnVJSHRFWVhSbFZHbHRaWDFjYmlBZ0lDb3ZYRzRnSUhKbFkyOXVabWxuZFhKbEtIc2diRzlqWVd4bExDQnVkVzFpWlhKcGJtZFRlWE4wWlcwc0lHOTFkSEIxZEVOaGJHVnVaR0Z5SUgwZ1BTQjdmU2tnZTF4dUlDQWdJR052Ym5OMElHeHZZeUE5SUhSb2FYTXViRzlqTG1Oc2IyNWxLSHNnYkc5allXeGxMQ0J1ZFcxaVpYSnBibWRUZVhOMFpXMHNJRzkxZEhCMWRFTmhiR1Z1WkdGeUlIMHBPMXh1SUNBZ0lISmxkSFZ5YmlCamJHOXVaU2gwYUdsekxDQjdJR3h2WXlCOUtUdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJjSWxObGRGd2lJSFJvWlNCc2IyTmhiR1V1SUZKbGRIVnlibk1nWVNCdVpYZHNlUzFqYjI1emRISjFZM1JsWkNCRVlYUmxWR2x0WlM1Y2JpQWdJQ29nU25WemRDQmhJR052Ym5abGJtbGxiblFnWVd4cFlYTWdabTl5SUhKbFkyOXVabWxuZFhKbEtIc2diRzlqWVd4bElIMHBYRzRnSUNBcUlFQmxlR0Z0Y0d4bElFUmhkR1ZVYVcxbExteHZZMkZzS0RJd01UY3NJRFVzSURJMUtTNXpaWFJNYjJOaGJHVW9KMlZ1TFVkQ0p5bGNiaUFnSUNvZ1FISmxkSFZ5YmlCN1JHRjBaVlJwYldWOVhHNGdJQ0FxTDF4dUlDQnpaWFJNYjJOaGJHVW9iRzlqWVd4bEtTQjdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVjbVZqYjI1bWFXZDFjbVVvZXlCc2IyTmhiR1VnZlNrN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dYQ0pUWlhSY0lpQjBhR1VnZG1Gc2RXVnpJRzltSUhOd1pXTnBabWxsWkNCMWJtbDBjeTRnVW1WMGRYSnVjeUJoSUc1bGQyeDVMV052Ym5OMGNuVmpkR1ZrSUVSaGRHVlVhVzFsTGx4dUlDQWdLaUJaYjNVZ1kyRnVJRzl1YkhrZ2MyVjBJSFZ1YVhSeklIZHBkR2dnZEdocGN5QnRaWFJvYjJRN0lHWnZjaUJjSW5ObGRIUnBibWRjSWlCdFpYUmhaR0YwWVN3Z2MyVmxJSHRBYkdsdWF5QkVZWFJsVkdsdFpTTnlaV052Ym1acFozVnlaWDBnWVc1a0lIdEFiR2x1YXlCRVlYUmxWR2x0WlNOelpYUmFiMjVsZlM1Y2JpQWdJQ29nUUhCaGNtRnRJSHRQWW1wbFkzUjlJSFpoYkhWbGN5QXRJR0VnYldGd2NHbHVaeUJ2WmlCMWJtbDBjeUIwYnlCdWRXMWlaWEp6WEc0Z0lDQXFJRUJsZUdGdGNHeGxJR1IwTG5ObGRDaDdJSGxsWVhJNklESXdNVGNnZlNsY2JpQWdJQ29nUUdWNFlXMXdiR1VnWkhRdWMyVjBLSHNnYUc5MWNqb2dPQ3dnYldsdWRYUmxPaUF6TUNCOUtWeHVJQ0FnS2lCQVpYaGhiWEJzWlNCa2RDNXpaWFFvZXlCM1pXVnJaR0Y1T2lBMUlIMHBYRzRnSUNBcUlFQmxlR0Z0Y0d4bElHUjBMbk5sZENoN0lIbGxZWEk2SURJd01EVXNJRzl5WkdsdVlXdzZJREl6TkNCOUtWeHVJQ0FnS2lCQWNtVjBkWEp1SUh0RVlYUmxWR2x0WlgxY2JpQWdJQ292WEc0Z0lITmxkQ2gyWVd4MVpYTXBJSHRjYmlBZ0lDQnBaaUFvSVhSb2FYTXVhWE5XWVd4cFpDa2djbVYwZFhKdUlIUm9hWE03WEc1Y2JpQWdJQ0JqYjI1emRDQnViM0p0WVd4cGVtVmtJRDBnYm05eWJXRnNhWHBsVDJKcVpXTjBLSFpoYkhWbGN5d2dibTl5YldGc2FYcGxWVzVwZENrc1hHNGdJQ0FnSUNCelpYUjBhVzVuVjJWbGExTjBkV1ptSUQxY2JpQWdJQ0FnSUNBZ0lXbHpWVzVrWldacGJtVmtLRzV2Y20xaGJHbDZaV1F1ZDJWbGExbGxZWElwSUh4OFhHNGdJQ0FnSUNBZ0lDRnBjMVZ1WkdWbWFXNWxaQ2h1YjNKdFlXeHBlbVZrTG5kbFpXdE9kVzFpWlhJcElIeDhYRzRnSUNBZ0lDQWdJQ0ZwYzFWdVpHVm1hVzVsWkNodWIzSnRZV3hwZW1Wa0xuZGxaV3RrWVhrcExGeHVJQ0FnSUNBZ1kyOXVkR0ZwYm5OUGNtUnBibUZzSUQwZ0lXbHpWVzVrWldacGJtVmtLRzV2Y20xaGJHbDZaV1F1YjNKa2FXNWhiQ2tzWEc0Z0lDQWdJQ0JqYjI1MFlXbHVjMGR5WldkdmNsbGxZWElnUFNBaGFYTlZibVJsWm1sdVpXUW9ibTl5YldGc2FYcGxaQzU1WldGeUtTeGNiaUFnSUNBZ0lHTnZiblJoYVc1elIzSmxaMjl5VFVRZ1BTQWhhWE5WYm1SbFptbHVaV1FvYm05eWJXRnNhWHBsWkM1dGIyNTBhQ2tnZkh3Z0lXbHpWVzVrWldacGJtVmtLRzV2Y20xaGJHbDZaV1F1WkdGNUtTeGNiaUFnSUNBZ0lHTnZiblJoYVc1elIzSmxaMjl5SUQwZ1kyOXVkR0ZwYm5OSGNtVm5iM0paWldGeUlIeDhJR052Ym5SaGFXNXpSM0psWjI5eVRVUXNYRzRnSUNBZ0lDQmtaV1pwYm1sMFpWZGxaV3RFWldZZ1BTQnViM0p0WVd4cGVtVmtMbmRsWld0WlpXRnlJSHg4SUc1dmNtMWhiR2w2WldRdWQyVmxhMDUxYldKbGNqdGNibHh1SUNBZ0lHbG1JQ2dvWTI5dWRHRnBibk5IY21WbmIzSWdmSHdnWTI5dWRHRnBibk5QY21ScGJtRnNLU0FtSmlCa1pXWnBibWwwWlZkbFpXdEVaV1lwSUh0Y2JpQWdJQ0FnSUhSb2NtOTNJRzVsZHlCRGIyNW1iR2xqZEdsdVoxTndaV05wWm1sallYUnBiMjVGY25KdmNpaGNiaUFnSUNBZ0lDQWdYQ0pEWVc0bmRDQnRhWGdnZDJWbGExbGxZWEl2ZDJWbGEwNTFiV0psY2lCMWJtbDBjeUIzYVhSb0lIbGxZWEl2Ylc5dWRHZ3ZaR0Y1SUc5eUlHOXlaR2x1WVd4elhDSmNiaUFnSUNBZ0lDazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2FXWWdLR052Ym5SaGFXNXpSM0psWjI5eVRVUWdKaVlnWTI5dWRHRnBibk5QY21ScGJtRnNLU0I3WEc0Z0lDQWdJQ0IwYUhKdmR5QnVaWGNnUTI5dVpteHBZM1JwYm1kVGNHVmphV1pwWTJGMGFXOXVSWEp5YjNJb1hDSkRZVzRuZENCdGFYZ2diM0prYVc1aGJDQmtZWFJsY3lCM2FYUm9JRzF2Ym5Sb0wyUmhlVndpS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JzWlhRZ2JXbDRaV1E3WEc0Z0lDQWdhV1lnS0hObGRIUnBibWRYWldWclUzUjFabVlwSUh0Y2JpQWdJQ0FnSUcxcGVHVmtJRDBnZDJWbGExUnZSM0psWjI5eWFXRnVLSHNnTGk0dVozSmxaMjl5YVdGdVZHOVhaV1ZyS0hSb2FYTXVZeWtzSUM0dUxtNXZjbTFoYkdsNlpXUWdmU2s3WEc0Z0lDQWdmU0JsYkhObElHbG1JQ2doYVhOVmJtUmxabWx1WldRb2JtOXliV0ZzYVhwbFpDNXZjbVJwYm1Gc0tTa2dlMXh1SUNBZ0lDQWdiV2w0WldRZ1BTQnZjbVJwYm1Gc1ZHOUhjbVZuYjNKcFlXNG9leUF1TGk1bmNtVm5iM0pwWVc1VWIwOXlaR2x1WVd3b2RHaHBjeTVqS1N3Z0xpNHVibTl5YldGc2FYcGxaQ0I5S1R0Y2JpQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdiV2w0WldRZ1BTQjdJQzR1TG5Sb2FYTXVkRzlQWW1wbFkzUW9LU3dnTGk0dWJtOXliV0ZzYVhwbFpDQjlPMXh1WEc0Z0lDQWdJQ0F2THlCcFppQjNaU0JrYVdSdUozUWdjMlYwSUhSb1pTQmtZWGtnWW5WMElIZGxJR1Z1WkdWa0lIVndJRzl1SUdGdUlHOTJaWEptYkc5M0lHUmhkR1VzWEc0Z0lDQWdJQ0F2THlCMWMyVWdkR2hsSUd4aGMzUWdaR0Y1SUc5bUlIUm9aU0J5YVdkb2RDQnRiMjUwYUZ4dUlDQWdJQ0FnYVdZZ0tHbHpWVzVrWldacGJtVmtLRzV2Y20xaGJHbDZaV1F1WkdGNUtTa2dlMXh1SUNBZ0lDQWdJQ0J0YVhobFpDNWtZWGtnUFNCTllYUm9MbTFwYmloa1lYbHpTVzVOYjI1MGFDaHRhWGhsWkM1NVpXRnlMQ0J0YVhobFpDNXRiMjUwYUNrc0lHMXBlR1ZrTG1SaGVTazdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVYRzRnSUNBZ1kyOXVjM1FnVzNSekxDQnZYU0E5SUc5aWFsUnZWRk1vYldsNFpXUXNJSFJvYVhNdWJ5d2dkR2hwY3k1NmIyNWxLVHRjYmlBZ0lDQnlaWFIxY200Z1kyeHZibVVvZEdocGN5d2dleUIwY3l3Z2J5QjlLVHRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCQlpHUWdZU0J3WlhKcGIyUWdiMllnZEdsdFpTQjBieUIwYUdseklFUmhkR1ZVYVcxbElHRnVaQ0J5WlhSMWNtNGdkR2hsSUhKbGMzVnNkR2x1WnlCRVlYUmxWR2x0WlZ4dUlDQWdLbHh1SUNBZ0tpQkJaR1JwYm1jZ2FHOTFjbk1zSUcxcGJuVjBaWE1zSUhObFkyOXVaSE1zSUc5eUlHMXBiR3hwYzJWamIyNWtjeUJwYm1OeVpXRnpaWE1nZEdobElIUnBiV1Z6ZEdGdGNDQmllU0IwYUdVZ2NtbG5hSFFnYm5WdFltVnlJRzltSUcxcGJHeHBjMlZqYjI1a2N5NGdRV1JrYVc1bklHUmhlWE1zSUcxdmJuUm9jeXdnYjNJZ2VXVmhjbk1nYzJocFpuUnpJSFJvWlNCallXeGxibVJoY2l3Z1lXTmpiM1Z1ZEdsdVp5Qm1iM0lnUkZOVWN5QmhibVFnYkdWaGNDQjVaV0Z5Y3lCaGJHOXVaeUIwYUdVZ2QyRjVMaUJVYUhWekxDQmdaSFF1Y0d4MWN5aDdJR2h2ZFhKek9pQXlOQ0I5S1dBZ2JXRjVJSEpsYzNWc2RDQnBiaUJoSUdScFptWmxjbVZ1ZENCMGFXMWxJSFJvWVc0Z1lHUjBMbkJzZFhNb2V5QmtZWGx6T2lBeElIMHBZQ0JwWmlCMGFHVnlaU2R6SUdFZ1JGTlVJSE5vYVdaMElHbHVJR0psZEhkbFpXNHVYRzRnSUNBcUlFQndZWEpoYlNCN1JIVnlZWFJwYjI1OFQySnFaV04wZkc1MWJXSmxjbjBnWkhWeVlYUnBiMjRnTFNCVWFHVWdZVzF2ZFc1MElIUnZJR0ZrWkM0Z1JXbDBhR1Z5SUdFZ1RIVjRiMjRnUkhWeVlYUnBiMjRzSUdFZ2JuVnRZbVZ5SUc5bUlHMXBiR3hwYzJWamIyNWtjeXdnZEdobElHOWlhbVZqZENCaGNtZDFiV1Z1ZENCMGJ5QkVkWEpoZEdsdmJpNW1jbTl0VDJKcVpXTjBLQ2xjYmlBZ0lDb2dRR1Y0WVcxd2JHVWdSR0YwWlZScGJXVXVibTkzS0NrdWNHeDFjeWd4TWpNcElDOHZmajRnYVc0Z01USXpJRzFwYkd4cGMyVmpiMjVrYzF4dUlDQWdLaUJBWlhoaGJYQnNaU0JFWVhSbFZHbHRaUzV1YjNjb0tTNXdiSFZ6S0hzZ2JXbHVkWFJsY3pvZ01UVWdmU2tnTHk5K1BpQnBiaUF4TlNCdGFXNTFkR1Z6WEc0Z0lDQXFJRUJsZUdGdGNHeGxJRVJoZEdWVWFXMWxMbTV2ZHlncExuQnNkWE1vZXlCa1lYbHpPaUF4SUgwcElDOHZmajRnZEdocGN5QjBhVzFsSUhSdmJXOXljbTkzWEc0Z0lDQXFJRUJsZUdGdGNHeGxJRVJoZEdWVWFXMWxMbTV2ZHlncExuQnNkWE1vZXlCa1lYbHpPaUF0TVNCOUtTQXZMMzQrSUhSb2FYTWdkR2x0WlNCNVpYTjBaWEprWVhsY2JpQWdJQ29nUUdWNFlXMXdiR1VnUkdGMFpWUnBiV1V1Ym05M0tDa3VjR3gxY3loN0lHaHZkWEp6T2lBekxDQnRhVzUxZEdWek9pQXhNeUI5S1NBdkwzNCtJR2x1SURNZ2FISXNJREV6SUcxcGJseHVJQ0FnS2lCQVpYaGhiWEJzWlNCRVlYUmxWR2x0WlM1dWIzY29LUzV3YkhWektFUjFjbUYwYVc5dUxtWnliMjFQWW1wbFkzUW9leUJvYjNWeWN6b2dNeXdnYldsdWRYUmxjem9nTVRNZ2ZTa3BJQzh2Zmo0Z2FXNGdNeUJvY2l3Z01UTWdiV2x1WEc0Z0lDQXFJRUJ5WlhSMWNtNGdlMFJoZEdWVWFXMWxmVnh1SUNBZ0tpOWNiaUFnY0d4MWN5aGtkWEpoZEdsdmJpa2dlMXh1SUNBZ0lHbG1JQ2doZEdocGN5NXBjMVpoYkdsa0tTQnlaWFIxY200Z2RHaHBjenRjYmlBZ0lDQmpiMjV6ZENCa2RYSWdQU0JFZFhKaGRHbHZiaTVtY205dFJIVnlZWFJwYjI1TWFXdGxLR1IxY21GMGFXOXVLVHRjYmlBZ0lDQnlaWFIxY200Z1kyeHZibVVvZEdocGN5d2dZV1JxZFhOMFZHbHRaU2gwYUdsekxDQmtkWElwS1R0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlRkV0owY21GamRDQmhJSEJsY21sdlpDQnZaaUIwYVcxbElIUnZJSFJvYVhNZ1JHRjBaVlJwYldVZ1lXNWtJSEpsZEhWeWJpQjBhR1VnY21WemRXeDBhVzVuSUVSaGRHVlVhVzFsWEc0Z0lDQXFJRk5sWlNCN1FHeHBibXNnUkdGMFpWUnBiV1VqY0d4MWMzMWNiaUFnSUNvZ1FIQmhjbUZ0SUh0RWRYSmhkR2x2Ym54UFltcGxZM1I4Ym5WdFltVnlmU0JrZFhKaGRHbHZiaUF0SUZSb1pTQmhiVzkxYm5RZ2RHOGdjM1ZpZEhKaFkzUXVJRVZwZEdobGNpQmhJRXgxZUc5dUlFUjFjbUYwYVc5dUxDQmhJRzUxYldKbGNpQnZaaUJ0YVd4c2FYTmxZMjl1WkhNc0lIUm9aU0J2WW1wbFkzUWdZWEpuZFcxbGJuUWdkRzhnUkhWeVlYUnBiMjR1Wm5KdmJVOWlhbVZqZENncFhHNGdJQ0JBY21WMGRYSnVJSHRFWVhSbFZHbHRaWDFjYmlBZ0lDb3ZYRzRnSUcxcGJuVnpLR1IxY21GMGFXOXVLU0I3WEc0Z0lDQWdhV1lnS0NGMGFHbHpMbWx6Vm1Gc2FXUXBJSEpsZEhWeWJpQjBhR2x6TzF4dUlDQWdJR052Ym5OMElHUjFjaUE5SUVSMWNtRjBhVzl1TG1aeWIyMUVkWEpoZEdsdmJreHBhMlVvWkhWeVlYUnBiMjRwTG01bFoyRjBaU2dwTzF4dUlDQWdJSEpsZEhWeWJpQmpiRzl1WlNoMGFHbHpMQ0JoWkdwMWMzUlVhVzFsS0hSb2FYTXNJR1IxY2lrcE8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRndpVTJWMFhDSWdkR2hwY3lCRVlYUmxWR2x0WlNCMGJ5QjBhR1VnWW1WbmFXNXVhVzVuSUc5bUlHRWdkVzVwZENCdlppQjBhVzFsTGx4dUlDQWdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdkVzVwZENBdElGUm9aU0IxYm1sMElIUnZJR2R2SUhSdklIUm9aU0JpWldkcGJtNXBibWNnYjJZdUlFTmhiaUJpWlNBbmVXVmhjaWNzSUNkeGRXRnlkR1Z5Snl3Z0oyMXZiblJvSnl3Z0ozZGxaV3NuTENBblpHRjVKeXdnSjJodmRYSW5MQ0FuYldsdWRYUmxKeXdnSjNObFkyOXVaQ2NzSUc5eUlDZHRhV3hzYVhObFkyOXVaQ2N1WEc0Z0lDQXFJRUJsZUdGdGNHeGxJRVJoZEdWVWFXMWxMbXh2WTJGc0tESXdNVFFzSURNc0lETXBMbk4wWVhKMFQyWW9KMjF2Ym5Sb0p5a3VkRzlKVTA5RVlYUmxLQ2s3SUM4dlBUNGdKekl3TVRRdE1ETXRNREVuWEc0Z0lDQXFJRUJsZUdGdGNHeGxJRVJoZEdWVWFXMWxMbXh2WTJGc0tESXdNVFFzSURNc0lETXBMbk4wWVhKMFQyWW9KM2xsWVhJbktTNTBiMGxUVDBSaGRHVW9LVHNnTHk4OVBpQW5NakF4TkMwd01TMHdNU2RjYmlBZ0lDb2dRR1Y0WVcxd2JHVWdSR0YwWlZScGJXVXViRzlqWVd3b01qQXhOQ3dnTXl3Z015a3VjM1JoY25SUFppZ25kMlZsYXljcExuUnZTVk5QUkdGMFpTZ3BPeUF2THowK0lDY3lNREUwTFRBekxUQXpKeXdnZDJWbGEzTWdZV3gzWVhseklITjBZWEowSUc5dUlFMXZibVJoZVhOY2JpQWdJQ29nUUdWNFlXMXdiR1VnUkdGMFpWUnBiV1V1Ykc5allXd29NakF4TkN3Z015d2dNeXdnTlN3Z016QXBMbk4wWVhKMFQyWW9KMlJoZVNjcExuUnZTVk5QVkdsdFpTZ3BPeUF2THowK0lDY3dNRG93TUM0d01EQXRNRFU2TURBblhHNGdJQ0FxSUVCbGVHRnRjR3hsSUVSaGRHVlVhVzFsTG14dlkyRnNLREl3TVRRc0lETXNJRE1zSURVc0lETXdLUzV6ZEdGeWRFOW1LQ2RvYjNWeUp5a3VkRzlKVTA5VWFXMWxLQ2s3SUM4dlBUNGdKekExT2pBd09qQXdMakF3TUMwd05Ub3dNQ2RjYmlBZ0lDb2dRSEpsZEhWeWJpQjdSR0YwWlZScGJXVjlYRzRnSUNBcUwxeHVJQ0J6ZEdGeWRFOW1LSFZ1YVhRcElIdGNiaUFnSUNCcFppQW9JWFJvYVhNdWFYTldZV3hwWkNrZ2NtVjBkWEp1SUhSb2FYTTdYRzRnSUNBZ1kyOXVjM1FnYnlBOUlIdDlMRnh1SUNBZ0lDQWdibTl5YldGc2FYcGxaRlZ1YVhRZ1BTQkVkWEpoZEdsdmJpNXViM0p0WVd4cGVtVlZibWwwS0hWdWFYUXBPMXh1SUNBZ0lITjNhWFJqYUNBb2JtOXliV0ZzYVhwbFpGVnVhWFFwSUh0Y2JpQWdJQ0FnSUdOaGMyVWdYQ0o1WldGeWMxd2lPbHh1SUNBZ0lDQWdJQ0J2TG0xdmJuUm9JRDBnTVR0Y2JpQWdJQ0FnSUM4dklHWmhiR3h6SUhSb2NtOTFaMmhjYmlBZ0lDQWdJR05oYzJVZ1hDSnhkV0Z5ZEdWeWMxd2lPbHh1SUNBZ0lDQWdZMkZ6WlNCY0ltMXZiblJvYzF3aU9seHVJQ0FnSUNBZ0lDQnZMbVJoZVNBOUlERTdYRzRnSUNBZ0lDQXZMeUJtWVd4c2N5QjBhSEp2ZFdkb1hHNGdJQ0FnSUNCallYTmxJRndpZDJWbGEzTmNJanBjYmlBZ0lDQWdJR05oYzJVZ1hDSmtZWGx6WENJNlhHNGdJQ0FnSUNBZ0lHOHVhRzkxY2lBOUlEQTdYRzRnSUNBZ0lDQXZMeUJtWVd4c2N5QjBhSEp2ZFdkb1hHNGdJQ0FnSUNCallYTmxJRndpYUc5MWNuTmNJanBjYmlBZ0lDQWdJQ0FnYnk1dGFXNTFkR1VnUFNBd08xeHVJQ0FnSUNBZ0x5OGdabUZzYkhNZ2RHaHliM1ZuYUZ4dUlDQWdJQ0FnWTJGelpTQmNJbTFwYm5WMFpYTmNJanBjYmlBZ0lDQWdJQ0FnYnk1elpXTnZibVFnUFNBd08xeHVJQ0FnSUNBZ0x5OGdabUZzYkhNZ2RHaHliM1ZuYUZ4dUlDQWdJQ0FnWTJGelpTQmNJbk5sWTI5dVpITmNJanBjYmlBZ0lDQWdJQ0FnYnk1dGFXeHNhWE5sWTI5dVpDQTlJREE3WEc0Z0lDQWdJQ0FnSUdKeVpXRnJPMXh1SUNBZ0lDQWdZMkZ6WlNCY0ltMXBiR3hwYzJWamIyNWtjMXdpT2x4dUlDQWdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQWdJQzh2SUc1dklHUmxabUYxYkhRc0lHbHVkbUZzYVdRZ2RXNXBkSE1nZEdoeWIzY2dhVzRnYm05eWJXRnNhWHBsVlc1cGRDZ3BYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2FXWWdLRzV2Y20xaGJHbDZaV1JWYm1sMElEMDlQU0JjSW5kbFpXdHpYQ0lwSUh0Y2JpQWdJQ0FnSUc4dWQyVmxhMlJoZVNBOUlERTdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2FXWWdLRzV2Y20xaGJHbDZaV1JWYm1sMElEMDlQU0JjSW5GMVlYSjBaWEp6WENJcElIdGNiaUFnSUNBZ0lHTnZibk4wSUhFZ1BTQk5ZWFJvTG1ObGFXd29kR2hwY3k1dGIyNTBhQ0F2SURNcE8xeHVJQ0FnSUNBZ2J5NXRiMjUwYUNBOUlDaHhJQzBnTVNrZ0tpQXpJQ3NnTVR0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1elpYUW9ieWs3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1hDSlRaWFJjSWlCMGFHbHpJRVJoZEdWVWFXMWxJSFJ2SUhSb1pTQmxibVFnS0cxbFlXNXBibWNnZEdobElHeGhjM1FnYldsc2JHbHpaV052Ym1RcElHOW1JR0VnZFc1cGRDQnZaaUIwYVcxbFhHNGdJQ0FxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0IxYm1sMElDMGdWR2hsSUhWdWFYUWdkRzhnWjI4Z2RHOGdkR2hsSUdWdVpDQnZaaTRnUTJGdUlHSmxJQ2Q1WldGeUp5d2dKM0YxWVhKMFpYSW5MQ0FuYlc5dWRHZ25MQ0FuZDJWbGF5Y3NJQ2RrWVhrbkxDQW5hRzkxY2ljc0lDZHRhVzUxZEdVbkxDQW5jMlZqYjI1a0p5d2diM0lnSjIxcGJHeHBjMlZqYjI1a0p5NWNiaUFnSUNvZ1FHVjRZVzF3YkdVZ1JHRjBaVlJwYldVdWJHOWpZV3dvTWpBeE5Dd2dNeXdnTXlrdVpXNWtUMllvSjIxdmJuUm9KeWt1ZEc5SlUwOG9LVHNnTHk4OVBpQW5NakF4TkMwd015MHpNVlF5TXpvMU9UbzFPUzQ1T1RrdE1EVTZNREFuWEc0Z0lDQXFJRUJsZUdGdGNHeGxJRVJoZEdWVWFXMWxMbXh2WTJGc0tESXdNVFFzSURNc0lETXBMbVZ1WkU5bUtDZDVaV0Z5SnlrdWRHOUpVMDhvS1RzZ0x5ODlQaUFuTWpBeE5DMHhNaTB6TVZReU16bzFPVG8xT1M0NU9Ua3RNRFU2TURBblhHNGdJQ0FxSUVCbGVHRnRjR3hsSUVSaGRHVlVhVzFsTG14dlkyRnNLREl3TVRRc0lETXNJRE1wTG1WdVpFOW1LQ2QzWldWckp5a3VkRzlKVTA4b0tUc2dMeThnUFQ0Z0p6SXdNVFF0TURNdE1EbFVNak02TlRrNk5Ua3VPVGs1TFRBMU9qQXdKeXdnZDJWbGEzTWdjM1JoY25RZ2IyNGdUVzl1WkdGNWMxeHVJQ0FnS2lCQVpYaGhiWEJzWlNCRVlYUmxWR2x0WlM1c2IyTmhiQ2d5TURFMExDQXpMQ0F6TENBMUxDQXpNQ2t1Wlc1a1QyWW9KMlJoZVNjcExuUnZTVk5QS0NrN0lDOHZQVDRnSnpJd01UUXRNRE10TUROVU1qTTZOVGs2TlRrdU9UazVMVEExT2pBd0oxeHVJQ0FnS2lCQVpYaGhiWEJzWlNCRVlYUmxWR2x0WlM1c2IyTmhiQ2d5TURFMExDQXpMQ0F6TENBMUxDQXpNQ2t1Wlc1a1QyWW9KMmh2ZFhJbktTNTBiMGxUVHlncE95QXZMejArSUNjeU1ERTBMVEF6TFRBelZEQTFPalU1T2pVNUxqazVPUzB3TlRvd01DZGNiaUFnSUNvZ1FISmxkSFZ5YmlCN1JHRjBaVlJwYldWOVhHNGdJQ0FxTDF4dUlDQmxibVJQWmloMWJtbDBLU0I3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11YVhOV1lXeHBaRnh1SUNBZ0lDQWdQeUIwYUdsekxuQnNkWE1vZXlCYmRXNXBkRjA2SURFZ2ZTbGNiaUFnSUNBZ0lDQWdJQ0F1YzNSaGNuUlBaaWgxYm1sMEtWeHVJQ0FnSUNBZ0lDQWdJQzV0YVc1MWN5Z3hLVnh1SUNBZ0lDQWdPaUIwYUdsek8xeHVJQ0I5WEc1Y2JpQWdMeThnVDFWVVVGVlVYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGSmxkSFZ5Ym5NZ1lTQnpkSEpwYm1jZ2NtVndjbVZ6Wlc1MFlYUnBiMjRnYjJZZ2RHaHBjeUJFWVhSbFZHbHRaU0JtYjNKdFlYUjBaV1FnWVdOamIzSmthVzVuSUhSdklIUm9aU0J6Y0dWamFXWnBaV1FnWm05eWJXRjBJSE4wY21sdVp5NWNiaUFnSUNvZ0tpcFpiM1VnYldGNUlHNXZkQ0IzWVc1MElIUm9hWE11S2lvZ1UyVmxJSHRBYkdsdWF5QkVZWFJsVkdsdFpTTjBiMHh2WTJGc1pWTjBjbWx1WjMwZ1ptOXlJR0VnYlc5eVpTQm1iR1Y0YVdKc1pTQm1iM0p0WVhSMGFXNW5JSFJ2YjJ3dUlFWnZjaUJoSUhSaFlteGxJRzltSUhSdmEyVnVjeUJoYm1RZ2RHaGxhWElnYVc1MFpYSndjbVYwWVhScGIyNXpMQ0J6WldVZ1cyaGxjbVZkS0doMGRIQnpPaTh2Ylc5dFpXNTBMbWRwZEdoMVlpNXBieTlzZFhodmJpOGpMMlp2Y20xaGRIUnBibWMvYVdROWRHRmliR1V0YjJZdGRHOXJaVzV6S1M1Y2JpQWdJQ29nUkdWbVlYVnNkSE1nZEc4Z1pXNHRWVk1nYVdZZ2JtOGdiRzlqWVd4bElHaGhjeUJpWldWdUlITndaV05wWm1sbFpDd2djbVZuWVhKa2JHVnpjeUJ2WmlCMGFHVWdjM2x6ZEdWdEozTWdiRzlqWVd4bExseHVJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnWm0xMElDMGdkR2hsSUdadmNtMWhkQ0J6ZEhKcGJtZGNiaUFnSUNvZ1FIQmhjbUZ0SUh0UFltcGxZM1I5SUc5d2RITWdMU0J2Y0hSeklIUnZJRzkyWlhKeWFXUmxJSFJvWlNCamIyNW1hV2QxY21GMGFXOXVJRzl3ZEdsdmJuTWdiMjRnZEdocGN5QkVZWFJsVkdsdFpWeHVJQ0FnS2lCQVpYaGhiWEJzWlNCRVlYUmxWR2x0WlM1dWIzY29LUzUwYjBadmNtMWhkQ2duZVhsNWVTQk1URXdnWkdRbktTQXZMejArSUNjeU1ERTNJRUZ3Y2lBeU1pZGNiaUFnSUNvZ1FHVjRZVzF3YkdVZ1JHRjBaVlJwYldVdWJtOTNLQ2t1YzJWMFRHOWpZV3hsS0NkbWNpY3BMblJ2Um05eWJXRjBLQ2Q1ZVhsNUlFeE1UQ0JrWkNjcElDOHZQVDRnSnpJd01UY2dZWFp5TGlBeU1pZGNiaUFnSUNvZ1FHVjRZVzF3YkdVZ1JHRjBaVlJwYldVdWJtOTNLQ2t1ZEc5R2IzSnRZWFFvSjNsNWVYa2dURXhNSUdSa0p5d2dleUJzYjJOaGJHVTZJRndpWm5KY0lpQjlLU0F2THowK0lDY3lNREUzSUdGMmNpNGdNakluWEc0Z0lDQXFJRUJsZUdGdGNHeGxJRVJoZEdWVWFXMWxMbTV2ZHlncExuUnZSbTl5YldGMEtGd2lTRWdnSjJodmRYSnpJR0Z1WkNjZ2JXMGdKMjFwYm5WMFpYTW5YQ0lwSUM4dlBUNGdKekl3SUdodmRYSnpJR0Z1WkNBMU5TQnRhVzUxZEdWekoxeHVJQ0FnS2lCQWNtVjBkWEp1SUh0emRISnBibWQ5WEc0Z0lDQXFMMXh1SUNCMGIwWnZjbTFoZENobWJYUXNJRzl3ZEhNZ1BTQjdmU2tnZTF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TG1selZtRnNhV1JjYmlBZ0lDQWdJRDhnUm05eWJXRjBkR1Z5TG1OeVpXRjBaU2gwYUdsekxteHZZeTV5WldSbFptRjFiSFJVYjBWT0tHOXdkSE1wS1M1bWIzSnRZWFJFWVhSbFZHbHRaVVp5YjIxVGRISnBibWNvZEdocGN5d2dabTEwS1Z4dUlDQWdJQ0FnT2lCSlRsWkJURWxFTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGSmxkSFZ5Ym5NZ1lTQnNiMk5oYkdsNlpXUWdjM1J5YVc1bklISmxjSEpsYzJWdWRHbHVaeUIwYUdseklHUmhkR1V1SUVGalkyVndkSE1nZEdobElITmhiV1VnYjNCMGFXOXVjeUJoY3lCMGFHVWdTVzUwYkM1RVlYUmxWR2x0WlVadmNtMWhkQ0JqYjI1emRISjFZM1J2Y2lCaGJtUWdZVzU1SUhCeVpYTmxkSE1nWkdWbWFXNWxaQ0JpZVNCTWRYaHZiaXdnYzNWamFDQmhjeUJnUkdGMFpWUnBiV1V1UkVGVVJWOUdWVXhNWUNCdmNpQmdSR0YwWlZScGJXVXVWRWxOUlY5VFNVMVFURVZnTGx4dUlDQWdLaUJVYUdVZ1pYaGhZM1FnWW1Wb1lYWnBiM0lnYjJZZ2RHaHBjeUJ0WlhSb2IyUWdhWE1nWW5KdmQzTmxjaTF6Y0dWamFXWnBZeXdnWW5WMElHbHVJR2RsYm1WeVlXd2dhWFFnZDJsc2JDQnlaWFIxY200Z1lXNGdZWEJ3Y205d2NtbGhkR1VnY21Wd2NtVnpaVzUwWVhScGIyNWNiaUFnSUNvZ2IyWWdkR2hsSUVSaGRHVlVhVzFsSUdsdUlIUm9aU0JoYzNOcFoyNWxaQ0JzYjJOaGJHVXVYRzRnSUNBcUlFUmxabUYxYkhSeklIUnZJSFJvWlNCemVYTjBaVzBuY3lCc2IyTmhiR1VnYVdZZ2JtOGdiRzlqWVd4bElHaGhjeUJpWldWdUlITndaV05wWm1sbFpGeHVJQ0FnS2lCQWMyVmxJR2gwZEhCek9pOHZaR1YyWld4dmNHVnlMbTF2ZW1sc2JHRXViM0puTDJWdUxWVlRMMlJ2WTNNdlYyVmlMMHBoZG1GVFkzSnBjSFF2VW1WbVpYSmxibU5sTDBkc2IySmhiRjlQWW1wbFkzUnpMMFJoZEdWVWFXMWxSbTl5YldGMFhHNGdJQ0FxSUVCd1lYSmhiU0JtYjNKdFlYUlBjSFJ6SUh0UFltcGxZM1I5SUMwZ1NXNTBiQzVFWVhSbFZHbHRaVVp2Y20xaGRDQmpiMjV6ZEhKMVkzUnZjaUJ2Y0hScGIyNXpJR0Z1WkNCamIyNW1hV2QxY21GMGFXOXVJRzl3ZEdsdmJuTmNiaUFnSUNvZ1FIQmhjbUZ0SUh0UFltcGxZM1I5SUc5d2RITWdMU0J2Y0hSeklIUnZJRzkyWlhKeWFXUmxJSFJvWlNCamIyNW1hV2QxY21GMGFXOXVJRzl3ZEdsdmJuTWdiMjRnZEdocGN5QkVZWFJsVkdsdFpWeHVJQ0FnS2lCQVpYaGhiWEJzWlNCRVlYUmxWR2x0WlM1dWIzY29LUzUwYjB4dlkyRnNaVk4wY21sdVp5Z3BPeUF2THowK0lEUXZNakF2TWpBeE4xeHVJQ0FnS2lCQVpYaGhiWEJzWlNCRVlYUmxWR2x0WlM1dWIzY29LUzV6WlhSTWIyTmhiR1VvSjJWdUxXZGlKeWt1ZEc5TWIyTmhiR1ZUZEhKcGJtY29LVHNnTHk4OVBpQW5NakF2TURRdk1qQXhOeWRjYmlBZ0lDb2dRR1Y0WVcxd2JHVWdSR0YwWlZScGJXVXVibTkzS0NrdWRHOU1iMk5oYkdWVGRISnBibWNvZXlCc2IyTmhiR1U2SUNkbGJpMW5ZaWNnZlNrN0lDOHZQVDRnSnpJd0x6QTBMekl3TVRjblhHNGdJQ0FxSUVCbGVHRnRjR3hsSUVSaGRHVlVhVzFsTG01dmR5Z3BMblJ2VEc5allXeGxVM1J5YVc1bktFUmhkR1ZVYVcxbExrUkJWRVZmUmxWTVRDazdJQzh2UFQ0Z0owRndjbWxzSURJd0xDQXlNREUzSjF4dUlDQWdLaUJBWlhoaGJYQnNaU0JFWVhSbFZHbHRaUzV1YjNjb0tTNTBiMHh2WTJGc1pWTjBjbWx1WnloRVlYUmxWR2x0WlM1VVNVMUZYMU5KVFZCTVJTazdJQzh2UFQ0Z0p6RXhPak15SUVGTkoxeHVJQ0FnS2lCQVpYaGhiWEJzWlNCRVlYUmxWR2x0WlM1dWIzY29LUzUwYjB4dlkyRnNaVk4wY21sdVp5aEVZWFJsVkdsdFpTNUVRVlJGVkVsTlJWOVRTRTlTVkNrN0lDOHZQVDRnSnpRdk1qQXZNakF4Tnl3Z01URTZNeklnUVUwblhHNGdJQ0FxSUVCbGVHRnRjR3hsSUVSaGRHVlVhVzFsTG01dmR5Z3BMblJ2VEc5allXeGxVM1J5YVc1bktIc2dkMlZsYTJSaGVUb2dKMnh2Ym1jbkxDQnRiMjUwYURvZ0oyeHZibWNuTENCa1lYazZJQ2N5TFdScFoybDBKeUI5S1RzZ0x5ODlQaUFuVkdoMWNuTmtZWGtzSUVGd2NtbHNJREl3SjF4dUlDQWdLaUJBWlhoaGJYQnNaU0JFWVhSbFZHbHRaUzV1YjNjb0tTNTBiMHh2WTJGc1pWTjBjbWx1WnloN0lIZGxaV3RrWVhrNklDZHphRzl5ZENjc0lHMXZiblJvT2lBbmMyaHZjblFuTENCa1lYazZJQ2N5TFdScFoybDBKeXdnYUc5MWNqb2dKekl0WkdsbmFYUW5MQ0J0YVc1MWRHVTZJQ2N5TFdScFoybDBKeUI5S1RzZ0x5ODlQaUFuVkdoMUxDQkJjSElnTWpBc0lERXhPakkzSUVGTkoxeHVJQ0FnS2lCQVpYaGhiWEJzWlNCRVlYUmxWR2x0WlM1dWIzY29LUzUwYjB4dlkyRnNaVk4wY21sdVp5aDdJR2h2ZFhJNklDY3lMV1JwWjJsMEp5d2diV2x1ZFhSbE9pQW5NaTFrYVdkcGRDY3NJR2h2ZFhKRGVXTnNaVG9nSjJneU15Y2dmU2s3SUM4dlBUNGdKekV4T2pNeUoxeHVJQ0FnS2lCQWNtVjBkWEp1SUh0emRISnBibWQ5WEc0Z0lDQXFMMXh1SUNCMGIweHZZMkZzWlZOMGNtbHVaeWhtYjNKdFlYUlBjSFJ6SUQwZ1JtOXliV0YwY3k1RVFWUkZYMU5JVDFKVUxDQnZjSFJ6SUQwZ2UzMHBJSHRjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTVwYzFaaGJHbGtYRzRnSUNBZ0lDQS9JRVp2Y20xaGRIUmxjaTVqY21WaGRHVW9kR2hwY3k1c2IyTXVZMnh2Ym1Vb2IzQjBjeWtzSUdadmNtMWhkRTl3ZEhNcExtWnZjbTFoZEVSaGRHVlVhVzFsS0hSb2FYTXBYRzRnSUNBZ0lDQTZJRWxPVmtGTVNVUTdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nVW1WMGRYSnVjeUJoYmlCaGNuSmhlU0J2WmlCbWIzSnRZWFFnWENKd1lYSjBjMXdpTENCdFpXRnVhVzVuSUdsdVpHbDJhV1IxWVd3Z2RHOXJaVzV6SUdGc2IyNW5JSGRwZEdnZ2JXVjBZV1JoZEdFdUlGUm9hWE1nYVhNZ1lXeHNiM2R6SUdOaGJHeGxjbk1nZEc4Z2NHOXpkQzF3Y205alpYTnpJR2x1WkdsMmFXUjFZV3dnYzJWamRHbHZibk1nYjJZZ2RHaGxJR1p2Y20xaGRIUmxaQ0J2ZFhSd2RYUXVYRzRnSUNBcUlFUmxabUYxYkhSeklIUnZJSFJvWlNCemVYTjBaVzBuY3lCc2IyTmhiR1VnYVdZZ2JtOGdiRzlqWVd4bElHaGhjeUJpWldWdUlITndaV05wWm1sbFpGeHVJQ0FnS2lCQWMyVmxJR2gwZEhCek9pOHZaR1YyWld4dmNHVnlMbTF2ZW1sc2JHRXViM0puTDJWdUxWVlRMMlJ2WTNNdlYyVmlMMHBoZG1GVFkzSnBjSFF2VW1WbVpYSmxibU5sTDBkc2IySmhiRjlQWW1wbFkzUnpMMFJoZEdWVWFXMWxSbTl5YldGMEwyWnZjbTFoZEZSdlVHRnlkSE5jYmlBZ0lDb2dRSEJoY21GdElHOXdkSE1nZTA5aWFtVmpkSDBnTFNCSmJuUnNMa1JoZEdWVWFXMWxSbTl5YldGMElHTnZibk4wY25WamRHOXlJRzl3ZEdsdmJuTXNJSE5oYldVZ1lYTWdZSFJ2VEc5allXeGxVM1J5YVc1bllDNWNiaUFnSUNvZ1FHVjRZVzF3YkdVZ1JHRjBaVlJwYldVdWJtOTNLQ2t1ZEc5TWIyTmhiR1ZRWVhKMGN5Z3BPeUF2THowK0lGdGNiaUFnSUNvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUM4dlBUNGdJQ0I3SUhSNWNHVTZJQ2RrWVhrbkxDQjJZV3gxWlRvZ0p6STFKeUI5TEZ4dUlDQWdLaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdMeTg5UGlBZ0lIc2dkSGx3WlRvZ0oyeHBkR1Z5WVd3bkxDQjJZV3gxWlRvZ0p5OG5JSDBzWEc0Z0lDQXFJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQXZMejArSUNBZ2V5QjBlWEJsT2lBbmJXOXVkR2duTENCMllXeDFaVG9nSnpBMUp5QjlMRnh1SUNBZ0tpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0x5ODlQaUFnSUhzZ2RIbHdaVG9nSjJ4cGRHVnlZV3duTENCMllXeDFaVG9nSnk4bklIMHNYRzRnSUNBcUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBdkx6MCtJQ0FnZXlCMGVYQmxPaUFuZVdWaGNpY3NJSFpoYkhWbE9pQW5NVGs0TWljZ2ZWeHVJQ0FnS2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnTHk4OVBpQmRYRzRnSUNBcUwxeHVJQ0IwYjB4dlkyRnNaVkJoY25SektHOXdkSE1nUFNCN2ZTa2dlMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpMbWx6Vm1Gc2FXUmNiaUFnSUNBZ0lEOGdSbTl5YldGMGRHVnlMbU55WldGMFpTaDBhR2x6TG14dll5NWpiRzl1WlNodmNIUnpLU3dnYjNCMGN5a3VabTl5YldGMFJHRjBaVlJwYldWUVlYSjBjeWgwYUdsektWeHVJQ0FnSUNBZ09pQmJYVHRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCU1pYUjFjbTV6SUdGdUlFbFRUeUE0TmpBeExXTnZiWEJzYVdGdWRDQnpkSEpwYm1jZ2NtVndjbVZ6Wlc1MFlYUnBiMjRnYjJZZ2RHaHBjeUJFWVhSbFZHbHRaVnh1SUNBZ0tpQkFjR0Z5WVcwZ2UwOWlhbVZqZEgwZ2IzQjBjeUF0SUc5d2RHbHZibk5jYmlBZ0lDb2dRSEJoY21GdElIdGliMjlzWldGdWZTQmJiM0IwY3k1emRYQndjbVZ6YzAxcGJHeHBjMlZqYjI1a2N6MW1ZV3h6WlYwZ0xTQmxlR05zZFdSbElHMXBiR3hwYzJWamIyNWtjeUJtY205dElIUm9aU0JtYjNKdFlYUWdhV1lnZEdobGVTZHlaU0F3WEc0Z0lDQXFJRUJ3WVhKaGJTQjdZbTl2YkdWaGJuMGdXMjl3ZEhNdWMzVndjSEpsYzNOVFpXTnZibVJ6UFdaaGJITmxYU0F0SUdWNFkyeDFaR1VnYzJWamIyNWtjeUJtY205dElIUm9aU0JtYjNKdFlYUWdhV1lnZEdobGVTZHlaU0F3WEc0Z0lDQXFJRUJ3WVhKaGJTQjdZbTl2YkdWaGJuMGdXMjl3ZEhNdWFXNWpiSFZrWlU5bVpuTmxkRDEwY25WbFhTQXRJR2x1WTJ4MVpHVWdkR2hsSUc5bVpuTmxkQ3dnYzNWamFDQmhjeUFuV2ljZ2IzSWdKeTB3TkRvd01DZGNiaUFnSUNvZ1FIQmhjbUZ0SUh0aWIyOXNaV0Z1ZlNCYmIzQjBjeTVsZUhSbGJtUmxaRnB2Ym1VOWRISjFaVjBnTFNCaFpHUWdkR2hsSUhScGJXVWdlbTl1WlNCbWIzSnRZWFFnWlhoMFpXNXphVzl1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQmJiM0IwY3k1bWIzSnRZWFE5SjJWNGRHVnVaR1ZrSjEwZ0xTQmphRzl2YzJVZ1ltVjBkMlZsYmlCMGFHVWdZbUZ6YVdNZ1lXNWtJR1Y0ZEdWdVpHVmtJR1p2Y20xaGRGeHVJQ0FnS2lCQVpYaGhiWEJzWlNCRVlYUmxWR2x0WlM1MWRHTW9NVGs0TXl3Z05Td2dNalVwTG5SdlNWTlBLQ2tnTHk4OVBpQW5NVGs0TWkwd05TMHlOVlF3TURvd01Eb3dNQzR3TURCYUoxeHVJQ0FnS2lCQVpYaGhiWEJzWlNCRVlYUmxWR2x0WlM1dWIzY29LUzUwYjBsVFR5Z3BJQzh2UFQ0Z0p6SXdNVGN0TURRdE1qSlVNakE2TkRjNk1EVXVNek0xTFRBME9qQXdKMXh1SUNBZ0tpQkFaWGhoYlhCc1pTQkVZWFJsVkdsdFpTNXViM2NvS1M1MGIwbFRUeWg3SUdsdVkyeDFaR1ZQWm1aelpYUTZJR1poYkhObElIMHBJQzh2UFQ0Z0p6SXdNVGN0TURRdE1qSlVNakE2TkRjNk1EVXVNek0xSjF4dUlDQWdLaUJBWlhoaGJYQnNaU0JFWVhSbFZHbHRaUzV1YjNjb0tTNTBiMGxUVHloN0lHWnZjbTFoZERvZ0oySmhjMmxqSnlCOUtTQXZMejArSUNjeU1ERTNNRFF5TWxReU1EUTNNRFV1TXpNMUxUQTBNREFuWEc0Z0lDQXFJRUJ5WlhSMWNtNGdlM04wY21sdVozMWNiaUFnSUNvdlhHNGdJSFJ2U1ZOUEtIdGNiaUFnSUNCbWIzSnRZWFFnUFNCY0ltVjRkR1Z1WkdWa1hDSXNYRzRnSUNBZ2MzVndjSEpsYzNOVFpXTnZibVJ6SUQwZ1ptRnNjMlVzWEc0Z0lDQWdjM1Z3Y0hKbGMzTk5hV3hzYVhObFkyOXVaSE1nUFNCbVlXeHpaU3hjYmlBZ0lDQnBibU5zZFdSbFQyWm1jMlYwSUQwZ2RISjFaU3hjYmlBZ0lDQmxlSFJsYm1SbFpGcHZibVVnUFNCbVlXeHpaU3hjYmlBZ2ZTQTlJSHQ5S1NCN1hHNGdJQ0FnYVdZZ0tDRjBhR2x6TG1selZtRnNhV1FwSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUJ1ZFd4c08xeHVJQ0FnSUgxY2JseHVJQ0FnSUdOdmJuTjBJR1Y0ZENBOUlHWnZjbTFoZENBOVBUMGdYQ0psZUhSbGJtUmxaRndpTzF4dVhHNGdJQ0FnYkdWMElHTWdQU0IwYjBsVFQwUmhkR1VvZEdocGN5d2daWGgwS1R0Y2JpQWdJQ0JqSUNzOUlGd2lWRndpTzF4dUlDQWdJR01nS3owZ2RHOUpVMDlVYVcxbEtIUm9hWE1zSUdWNGRDd2djM1Z3Y0hKbGMzTlRaV052Ym1SekxDQnpkWEJ3Y21WemMwMXBiR3hwYzJWamIyNWtjeXdnYVc1amJIVmtaVTltWm5ObGRDd2daWGgwWlc1a1pXUmFiMjVsS1R0Y2JpQWdJQ0J5WlhSMWNtNGdZenRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCU1pYUjFjbTV6SUdGdUlFbFRUeUE0TmpBeExXTnZiWEJzYVdGdWRDQnpkSEpwYm1jZ2NtVndjbVZ6Wlc1MFlYUnBiMjRnYjJZZ2RHaHBjeUJFWVhSbFZHbHRaU2R6SUdSaGRHVWdZMjl0Y0c5dVpXNTBYRzRnSUNBcUlFQndZWEpoYlNCN1QySnFaV04wZlNCdmNIUnpJQzBnYjNCMGFXOXVjMXh1SUNBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ1cyOXdkSE11Wm05eWJXRjBQU2RsZUhSbGJtUmxaQ2RkSUMwZ1kyaHZiM05sSUdKbGRIZGxaVzRnZEdobElHSmhjMmxqSUdGdVpDQmxlSFJsYm1SbFpDQm1iM0p0WVhSY2JpQWdJQ29nUUdWNFlXMXdiR1VnUkdGMFpWUnBiV1V1ZFhSaktERTVPRElzSURVc0lESTFLUzUwYjBsVFQwUmhkR1VvS1NBdkx6MCtJQ2N4T1RneUxUQTFMVEkxSjF4dUlDQWdLaUJBWlhoaGJYQnNaU0JFWVhSbFZHbHRaUzUxZEdNb01UazRNaXdnTlN3Z01qVXBMblJ2U1ZOUFJHRjBaU2g3SUdadmNtMWhkRG9nSjJKaGMybGpKeUI5S1NBdkx6MCtJQ2N4T1RneU1EVXlOU2RjYmlBZ0lDb2dRSEpsZEhWeWJpQjdjM1J5YVc1bmZWeHVJQ0FnS2k5Y2JpQWdkRzlKVTA5RVlYUmxLSHNnWm05eWJXRjBJRDBnWENKbGVIUmxibVJsWkZ3aUlIMGdQU0I3ZlNrZ2UxeHVJQ0FnSUdsbUlDZ2hkR2hwY3k1cGMxWmhiR2xrS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnYm5Wc2JEdGNiaUFnSUNCOVhHNWNiaUFnSUNCeVpYUjFjbTRnZEc5SlUwOUVZWFJsS0hSb2FYTXNJR1p2Y20xaGRDQTlQVDBnWENKbGVIUmxibVJsWkZ3aUtUdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJTWlhSMWNtNXpJR0Z1SUVsVFR5QTROakF4TFdOdmJYQnNhV0Z1ZENCemRISnBibWNnY21Wd2NtVnpaVzUwWVhScGIyNGdiMllnZEdocGN5QkVZWFJsVkdsdFpTZHpJSGRsWldzZ1pHRjBaVnh1SUNBZ0tpQkFaWGhoYlhCc1pTQkVZWFJsVkdsdFpTNTFkR01vTVRrNE1pd2dOU3dnTWpVcExuUnZTVk5QVjJWbGEwUmhkR1VvS1NBdkx6MCtJQ2N4T1RneUxWY3lNUzB5SjF4dUlDQWdLaUJBY21WMGRYSnVJSHR6ZEhKcGJtZDlYRzRnSUNBcUwxeHVJQ0IwYjBsVFQxZGxaV3RFWVhSbEtDa2dlMXh1SUNBZ0lISmxkSFZ5YmlCMGIxUmxZMmhHYjNKdFlYUW9kR2hwY3l3Z1hDSnJhMnRyTFNkWEoxZFhMV05jSWlrN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dVbVYwZFhKdWN5QmhiaUJKVTA4Z09EWXdNUzFqYjIxd2JHbGhiblFnYzNSeWFXNW5JSEpsY0hKbGMyVnVkR0YwYVc5dUlHOW1JSFJvYVhNZ1JHRjBaVlJwYldVbmN5QjBhVzFsSUdOdmJYQnZibVZ1ZEZ4dUlDQWdLaUJBY0dGeVlXMGdlMDlpYW1WamRIMGdiM0IwY3lBdElHOXdkR2x2Ym5OY2JpQWdJQ29nUUhCaGNtRnRJSHRpYjI5c1pXRnVmU0JiYjNCMGN5NXpkWEJ3Y21WemMwMXBiR3hwYzJWamIyNWtjejFtWVd4elpWMGdMU0JsZUdOc2RXUmxJRzFwYkd4cGMyVmpiMjVrY3lCbWNtOXRJSFJvWlNCbWIzSnRZWFFnYVdZZ2RHaGxlU2R5WlNBd1hHNGdJQ0FxSUVCd1lYSmhiU0I3WW05dmJHVmhibjBnVzI5d2RITXVjM1Z3Y0hKbGMzTlRaV052Ym1SelBXWmhiSE5sWFNBdElHVjRZMngxWkdVZ2MyVmpiMjVrY3lCbWNtOXRJSFJvWlNCbWIzSnRZWFFnYVdZZ2RHaGxlU2R5WlNBd1hHNGdJQ0FxSUVCd1lYSmhiU0I3WW05dmJHVmhibjBnVzI5d2RITXVhVzVqYkhWa1pVOW1abk5sZEQxMGNuVmxYU0F0SUdsdVkyeDFaR1VnZEdobElHOW1abk5sZEN3Z2MzVmphQ0JoY3lBbldpY2diM0lnSnkwd05Eb3dNQ2RjYmlBZ0lDb2dRSEJoY21GdElIdGliMjlzWldGdWZTQmJiM0IwY3k1bGVIUmxibVJsWkZwdmJtVTlkSEoxWlYwZ0xTQmhaR1FnZEdobElIUnBiV1VnZW05dVpTQm1iM0p0WVhRZ1pYaDBaVzV6YVc5dVhHNGdJQ0FxSUVCd1lYSmhiU0I3WW05dmJHVmhibjBnVzI5d2RITXVhVzVqYkhWa1pWQnlaV1pwZUQxbVlXeHpaVjBnTFNCcGJtTnNkV1JsSUhSb1pTQmdWR0FnY0hKbFptbDRYRzRnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCYmIzQjBjeTVtYjNKdFlYUTlKMlY0ZEdWdVpHVmtKMTBnTFNCamFHOXZjMlVnWW1WMGQyVmxiaUIwYUdVZ1ltRnphV01nWVc1a0lHVjRkR1Z1WkdWa0lHWnZjbTFoZEZ4dUlDQWdLaUJBWlhoaGJYQnNaU0JFWVhSbFZHbHRaUzUxZEdNb0tTNXpaWFFvZXlCb2IzVnlPaUEzTENCdGFXNTFkR1U2SURNMElIMHBMblJ2U1ZOUFZHbHRaU2dwSUM4dlBUNGdKekEzT2pNME9qRTVMak0yTVZvblhHNGdJQ0FxSUVCbGVHRnRjR3hsSUVSaGRHVlVhVzFsTG5WMFl5Z3BMbk5sZENoN0lHaHZkWEk2SURjc0lHMXBiblYwWlRvZ016UXNJSE5sWTI5dVpITTZJREFzSUcxcGJHeHBjMlZqYjI1a2N6b2dNQ0I5S1M1MGIwbFRUMVJwYldVb2V5QnpkWEJ3Y21WemMxTmxZMjl1WkhNNklIUnlkV1VnZlNrZ0x5ODlQaUFuTURjNk16UmFKMXh1SUNBZ0tpQkFaWGhoYlhCc1pTQkVZWFJsVkdsdFpTNTFkR01vS1M1elpYUW9leUJvYjNWeU9pQTNMQ0J0YVc1MWRHVTZJRE0wSUgwcExuUnZTVk5QVkdsdFpTaDdJR1p2Y20xaGREb2dKMkpoYzJsakp5QjlLU0F2THowK0lDY3dOek0wTVRrdU16WXhXaWRjYmlBZ0lDb2dRR1Y0WVcxd2JHVWdSR0YwWlZScGJXVXVkWFJqS0NrdWMyVjBLSHNnYUc5MWNqb2dOeXdnYldsdWRYUmxPaUF6TkNCOUtTNTBiMGxUVDFScGJXVW9leUJwYm1Oc2RXUmxVSEpsWm1sNE9pQjBjblZsSUgwcElDOHZQVDRnSjFRd056b3pORG94T1M0ek5qRmFKMXh1SUNBZ0tpQkFjbVYwZFhKdUlIdHpkSEpwYm1kOVhHNGdJQ0FxTDF4dUlDQjBiMGxUVDFScGJXVW9lMXh1SUNBZ0lITjFjSEJ5WlhOelRXbHNiR2x6WldOdmJtUnpJRDBnWm1Gc2MyVXNYRzRnSUNBZ2MzVndjSEpsYzNOVFpXTnZibVJ6SUQwZ1ptRnNjMlVzWEc0Z0lDQWdhVzVqYkhWa1pVOW1abk5sZENBOUlIUnlkV1VzWEc0Z0lDQWdhVzVqYkhWa1pWQnlaV1pwZUNBOUlHWmhiSE5sTEZ4dUlDQWdJR1Y0ZEdWdVpHVmtXbTl1WlNBOUlHWmhiSE5sTEZ4dUlDQWdJR1p2Y20xaGRDQTlJRndpWlhoMFpXNWtaV1JjSWl4Y2JpQWdmU0E5SUh0OUtTQjdYRzRnSUNBZ2FXWWdLQ0YwYUdsekxtbHpWbUZzYVdRcElIdGNiaUFnSUNBZ0lISmxkSFZ5YmlCdWRXeHNPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHeGxkQ0JqSUQwZ2FXNWpiSFZrWlZCeVpXWnBlQ0EvSUZ3aVZGd2lJRG9nWENKY0lqdGNiaUFnSUNCeVpYUjFjbTRnS0Z4dUlDQWdJQ0FnWXlBclhHNGdJQ0FnSUNCMGIwbFRUMVJwYldVb1hHNGdJQ0FnSUNBZ0lIUm9hWE1zWEc0Z0lDQWdJQ0FnSUdadmNtMWhkQ0E5UFQwZ1hDSmxlSFJsYm1SbFpGd2lMRnh1SUNBZ0lDQWdJQ0J6ZFhCd2NtVnpjMU5sWTI5dVpITXNYRzRnSUNBZ0lDQWdJSE4xY0hCeVpYTnpUV2xzYkdselpXTnZibVJ6TEZ4dUlDQWdJQ0FnSUNCcGJtTnNkV1JsVDJabWMyVjBMRnh1SUNBZ0lDQWdJQ0JsZUhSbGJtUmxaRnB2Ym1WY2JpQWdJQ0FnSUNsY2JpQWdJQ0FwTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGSmxkSFZ5Ym5NZ1lXNGdVa1pESURJNE1qSXRZMjl0Y0dGMGFXSnNaU0J6ZEhKcGJtY2djbVZ3Y21WelpXNTBZWFJwYjI0Z2IyWWdkR2hwY3lCRVlYUmxWR2x0WlZ4dUlDQWdLaUJBWlhoaGJYQnNaU0JFWVhSbFZHbHRaUzUxZEdNb01qQXhOQ3dnTnl3Z01UTXBMblJ2VWtaRE1qZ3lNaWdwSUM4dlBUNGdKMU4xYml3Z01UTWdTblZzSURJd01UUWdNREE2TURBNk1EQWdLekF3TURBblhHNGdJQ0FxSUVCbGVHRnRjR3hsSUVSaGRHVlVhVzFsTG14dlkyRnNLREl3TVRRc0lEY3NJREV6S1M1MGIxSkdRekk0TWpJb0tTQXZMejArSUNkVGRXNHNJREV6SUVwMWJDQXlNREUwSURBd09qQXdPakF3SUMwd05EQXdKMXh1SUNBZ0tpQkFjbVYwZFhKdUlIdHpkSEpwYm1kOVhHNGdJQ0FxTDF4dUlDQjBiMUpHUXpJNE1qSW9LU0I3WEc0Z0lDQWdjbVYwZFhKdUlIUnZWR1ZqYUVadmNtMWhkQ2gwYUdsekxDQmNJa1ZGUlN3Z1pHUWdURXhNSUhsNWVYa2dTRWc2YlcwNmMzTWdXbHBhWENJc0lHWmhiSE5sS1R0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlNaWFIxY201eklHRWdjM1J5YVc1bklISmxjSEpsYzJWdWRHRjBhVzl1SUc5bUlIUm9hWE1nUkdGMFpWUnBiV1VnWVhCd2NtOXdjbWxoZEdVZ1ptOXlJSFZ6WlNCcGJpQklWRlJRSUdobFlXUmxjbk11SUZSb1pTQnZkWFJ3ZFhRZ2FYTWdZV3gzWVhseklHVjRjSEpsYzNObFpDQnBiaUJIVFZRdVhHNGdJQ0FxSUZOd1pXTnBabWxqWVd4c2VTd2dkR2hsSUhOMGNtbHVaeUJqYjI1bWIzSnRjeUIwYnlCU1JrTWdNVEV5TXk1Y2JpQWdJQ29nUUhObFpTQm9kSFJ3Y3pvdkwzZDNkeTUzTXk1dmNtY3ZVSEp2ZEc5amIyeHpMM0ptWXpJMk1UWXZjbVpqTWpZeE5pMXpaV016TG1oMGJXd2pjMlZqTXk0ekxqRmNiaUFnSUNvZ1FHVjRZVzF3YkdVZ1JHRjBaVlJwYldVdWRYUmpLREl3TVRRc0lEY3NJREV6S1M1MGIwaFVWRkFvS1NBdkx6MCtJQ2RUZFc0c0lERXpJRXAxYkNBeU1ERTBJREF3T2pBd09qQXdJRWROVkNkY2JpQWdJQ29nUUdWNFlXMXdiR1VnUkdGMFpWUnBiV1V1ZFhSaktESXdNVFFzSURjc0lERXpMQ0F4T1NrdWRHOUlWRlJRS0NrZ0x5ODlQaUFuVTNWdUxDQXhNeUJLZFd3Z01qQXhOQ0F4T1Rvd01Eb3dNQ0JIVFZRblhHNGdJQ0FxSUVCeVpYUjFjbTRnZTNOMGNtbHVaMzFjYmlBZ0lDb3ZYRzRnSUhSdlNGUlVVQ2dwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkRzlVWldOb1JtOXliV0YwS0hSb2FYTXVkRzlWVkVNb0tTd2dYQ0pGUlVVc0lHUmtJRXhNVENCNWVYbDVJRWhJT20xdE9uTnpJQ2RIVFZRblhDSXBPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUZKbGRIVnlibk1nWVNCemRISnBibWNnY21Wd2NtVnpaVzUwWVhScGIyNGdiMllnZEdocGN5QkVZWFJsVkdsdFpTQmhjSEJ5YjNCeWFXRjBaU0JtYjNJZ2RYTmxJR2x1SUZOUlRDQkVZWFJsWEc0Z0lDQXFJRUJsZUdGdGNHeGxJRVJoZEdWVWFXMWxMblYwWXlneU1ERTBMQ0EzTENBeE15a3VkRzlUVVV4RVlYUmxLQ2tnTHk4OVBpQW5NakF4TkMwd055MHhNeWRjYmlBZ0lDb2dRSEpsZEhWeWJpQjdjM1J5YVc1bmZWeHVJQ0FnS2k5Y2JpQWdkRzlUVVV4RVlYUmxLQ2tnZTF4dUlDQWdJR2xtSUNnaGRHaHBjeTVwYzFaaGJHbGtLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdiblZzYkR0Y2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlIUnZTVk5QUkdGMFpTaDBhR2x6TENCMGNuVmxLVHRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCU1pYUjFjbTV6SUdFZ2MzUnlhVzVuSUhKbGNISmxjMlZ1ZEdGMGFXOXVJRzltSUhSb2FYTWdSR0YwWlZScGJXVWdZWEJ3Y205d2NtbGhkR1VnWm05eUlIVnpaU0JwYmlCVFVVd2dWR2x0WlZ4dUlDQWdLaUJBY0dGeVlXMGdlMDlpYW1WamRIMGdiM0IwY3lBdElHOXdkR2x2Ym5OY2JpQWdJQ29nUUhCaGNtRnRJSHRpYjI5c1pXRnVmU0JiYjNCMGN5NXBibU5zZFdSbFdtOXVaVDFtWVd4elpWMGdMU0JwYm1Oc2RXUmxJSFJvWlNCNmIyNWxMQ0J6ZFdOb0lHRnpJQ2RCYldWeWFXTmhMMDVsZDE5WmIzSnJKeTRnVDNabGNuSnBaR1Z6SUdsdVkyeDFaR1ZQWm1aelpYUXVYRzRnSUNBcUlFQndZWEpoYlNCN1ltOXZiR1ZoYm4wZ1cyOXdkSE11YVc1amJIVmtaVTltWm5ObGREMTBjblZsWFNBdElHbHVZMngxWkdVZ2RHaGxJRzltWm5ObGRDd2djM1ZqYUNCaGN5QW5XaWNnYjNJZ0p5MHdORG93TUNkY2JpQWdJQ29nUUhCaGNtRnRJSHRpYjI5c1pXRnVmU0JiYjNCMGN5NXBibU5zZFdSbFQyWm1jMlYwVTNCaFkyVTlkSEoxWlYwZ0xTQnBibU5zZFdSbElIUm9aU0J6Y0dGalpTQmlaWFIzWldWdUlIUm9aU0IwYVcxbElHRnVaQ0IwYUdVZ2IyWm1jMlYwTENCemRXTm9JR0Z6SUNjd05Ub3hOVG94Tmk0ek5EVWdMVEEwT2pBd0oxeHVJQ0FnS2lCQVpYaGhiWEJzWlNCRVlYUmxWR2x0WlM1MWRHTW9LUzUwYjFOUlRDZ3BJQzh2UFQ0Z0p6QTFPakUxT2pFMkxqTTBOU2RjYmlBZ0lDb2dRR1Y0WVcxd2JHVWdSR0YwWlZScGJXVXVibTkzS0NrdWRHOVRVVXdvS1NBdkx6MCtJQ2N3TlRveE5Ub3hOaTR6TkRVZ0xUQTBPakF3SjF4dUlDQWdLaUJBWlhoaGJYQnNaU0JFWVhSbFZHbHRaUzV1YjNjb0tTNTBiMU5SVENoN0lHbHVZMngxWkdWUFptWnpaWFE2SUdaaGJITmxJSDBwSUM4dlBUNGdKekExT2pFMU9qRTJMak0wTlNkY2JpQWdJQ29nUUdWNFlXMXdiR1VnUkdGMFpWUnBiV1V1Ym05M0tDa3VkRzlUVVV3b2V5QnBibU5zZFdSbFdtOXVaVG9nWm1Gc2MyVWdmU2tnTHk4OVBpQW5NRFU2TVRVNk1UWXVNelExSUVGdFpYSnBZMkV2VG1WM1gxbHZjbXNuWEc0Z0lDQXFJRUJ5WlhSMWNtNGdlM04wY21sdVozMWNiaUFnSUNvdlhHNGdJSFJ2VTFGTVZHbHRaU2g3SUdsdVkyeDFaR1ZQWm1aelpYUWdQU0IwY25WbExDQnBibU5zZFdSbFdtOXVaU0E5SUdaaGJITmxMQ0JwYm1Oc2RXUmxUMlptYzJWMFUzQmhZMlVnUFNCMGNuVmxJSDBnUFNCN2ZTa2dlMXh1SUNBZ0lHeGxkQ0JtYlhRZ1BTQmNJa2hJT20xdE9uTnpMbE5UVTF3aU8xeHVYRzRnSUNBZ2FXWWdLR2x1WTJ4MVpHVmFiMjVsSUh4OElHbHVZMngxWkdWUFptWnpaWFFwSUh0Y2JpQWdJQ0FnSUdsbUlDaHBibU5zZFdSbFQyWm1jMlYwVTNCaFkyVXBJSHRjYmlBZ0lDQWdJQ0FnWm0xMElDczlJRndpSUZ3aU8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2FXWWdLR2x1WTJ4MVpHVmFiMjVsS1NCN1hHNGdJQ0FnSUNBZ0lHWnRkQ0FyUFNCY0lucGNJanRjYmlBZ0lDQWdJSDBnWld4elpTQnBaaUFvYVc1amJIVmtaVTltWm5ObGRDa2dlMXh1SUNBZ0lDQWdJQ0JtYlhRZ0t6MGdYQ0phV2x3aU8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JseHVJQ0FnSUhKbGRIVnliaUIwYjFSbFkyaEdiM0p0WVhRb2RHaHBjeXdnWm0xMExDQjBjblZsS1R0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlNaWFIxY201eklHRWdjM1J5YVc1bklISmxjSEpsYzJWdWRHRjBhVzl1SUc5bUlIUm9hWE1nUkdGMFpWUnBiV1VnWVhCd2NtOXdjbWxoZEdVZ1ptOXlJSFZ6WlNCcGJpQlRVVXdnUkdGMFpWUnBiV1ZjYmlBZ0lDb2dRSEJoY21GdElIdFBZbXBsWTNSOUlHOXdkSE1nTFNCdmNIUnBiMjV6WEc0Z0lDQXFJRUJ3WVhKaGJTQjdZbTl2YkdWaGJuMGdXMjl3ZEhNdWFXNWpiSFZrWlZwdmJtVTlabUZzYzJWZElDMGdhVzVqYkhWa1pTQjBhR1VnZW05dVpTd2djM1ZqYUNCaGN5QW5RVzFsY21sallTOU9aWGRmV1c5eWF5Y3VJRTkyWlhKeWFXUmxjeUJwYm1Oc2RXUmxUMlptYzJWMExseHVJQ0FnS2lCQWNHRnlZVzBnZTJKdmIyeGxZVzU5SUZ0dmNIUnpMbWx1WTJ4MVpHVlBabVp6WlhROWRISjFaVjBnTFNCcGJtTnNkV1JsSUhSb1pTQnZabVp6WlhRc0lITjFZMmdnWVhNZ0oxb25JRzl5SUNjdE1EUTZNREFuWEc0Z0lDQXFJRUJ3WVhKaGJTQjdZbTl2YkdWaGJuMGdXMjl3ZEhNdWFXNWpiSFZrWlU5bVpuTmxkRk53WVdObFBYUnlkV1ZkSUMwZ2FXNWpiSFZrWlNCMGFHVWdjM0JoWTJVZ1ltVjBkMlZsYmlCMGFHVWdkR2x0WlNCaGJtUWdkR2hsSUc5bVpuTmxkQ3dnYzNWamFDQmhjeUFuTURVNk1UVTZNVFl1TXpRMUlDMHdORG93TUNkY2JpQWdJQ29nUUdWNFlXMXdiR1VnUkdGMFpWUnBiV1V1ZFhSaktESXdNVFFzSURjc0lERXpLUzUwYjFOUlRDZ3BJQzh2UFQ0Z0p6SXdNVFF0TURjdE1UTWdNREE2TURBNk1EQXVNREF3SUZvblhHNGdJQ0FxSUVCbGVHRnRjR3hsSUVSaGRHVlVhVzFsTG14dlkyRnNLREl3TVRRc0lEY3NJREV6S1M1MGIxTlJUQ2dwSUM4dlBUNGdKekl3TVRRdE1EY3RNVE1nTURBNk1EQTZNREF1TURBd0lDMHdORG93TUNkY2JpQWdJQ29nUUdWNFlXMXdiR1VnUkdGMFpWUnBiV1V1Ykc5allXd29NakF4TkN3Z055d2dNVE1wTG5SdlUxRk1LSHNnYVc1amJIVmtaVTltWm5ObGREb2dabUZzYzJVZ2ZTa2dMeTg5UGlBbk1qQXhOQzB3TnkweE15QXdNRG93TURvd01DNHdNREFuWEc0Z0lDQXFJRUJsZUdGdGNHeGxJRVJoZEdWVWFXMWxMbXh2WTJGc0tESXdNVFFzSURjc0lERXpLUzUwYjFOUlRDaDdJR2x1WTJ4MVpHVmFiMjVsT2lCMGNuVmxJSDBwSUM4dlBUNGdKekl3TVRRdE1EY3RNVE1nTURBNk1EQTZNREF1TURBd0lFRnRaWEpwWTJFdlRtVjNYMWx2Y21zblhHNGdJQ0FxSUVCeVpYUjFjbTRnZTNOMGNtbHVaMzFjYmlBZ0lDb3ZYRzRnSUhSdlUxRk1LRzl3ZEhNZ1BTQjdmU2tnZTF4dUlDQWdJR2xtSUNnaGRHaHBjeTVwYzFaaGJHbGtLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdiblZzYkR0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0J5WlhSMWNtNGdZQ1I3ZEdocGN5NTBiMU5SVEVSaGRHVW9LWDBnSkh0MGFHbHpMblJ2VTFGTVZHbHRaU2h2Y0hSektYMWdPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUZKbGRIVnlibk1nWVNCemRISnBibWNnY21Wd2NtVnpaVzUwWVhScGIyNGdiMllnZEdocGN5QkVZWFJsVkdsdFpTQmhjSEJ5YjNCeWFXRjBaU0JtYjNJZ1pHVmlkV2RuYVc1blhHNGdJQ0FxSUVCeVpYUjFjbTRnZTNOMGNtbHVaMzFjYmlBZ0lDb3ZYRzRnSUhSdlUzUnlhVzVuS0NrZ2UxeHVJQ0FnSUhKbGRIVnliaUIwYUdsekxtbHpWbUZzYVdRZ1B5QjBhR2x6TG5SdlNWTlBLQ2tnT2lCSlRsWkJURWxFTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGSmxkSFZ5Ym5NZ2RHaGxJR1Z3YjJOb0lHMXBiR3hwYzJWamIyNWtjeUJ2WmlCMGFHbHpJRVJoZEdWVWFXMWxMaUJCYkdsaGN5QnZaaUI3UUd4cGJtc2dSR0YwWlZScGJXVWpkRzlOYVd4c2FYTjlYRzRnSUNBcUlFQnlaWFIxY200Z2UyNTFiV0psY24xY2JpQWdJQ292WEc0Z0lIWmhiSFZsVDJZb0tTQjdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVkRzlOYVd4c2FYTW9LVHRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCU1pYUjFjbTV6SUhSb1pTQmxjRzlqYUNCdGFXeHNhWE5sWTI5dVpITWdiMllnZEdocGN5QkVZWFJsVkdsdFpTNWNiaUFnSUNvZ1FISmxkSFZ5YmlCN2JuVnRZbVZ5ZlZ4dUlDQWdLaTljYmlBZ2RHOU5hV3hzYVhNb0tTQjdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVhWE5XWVd4cFpDQS9JSFJvYVhNdWRITWdPaUJPWVU0N1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dVbVYwZFhKdWN5QjBhR1VnWlhCdlkyZ2djMlZqYjI1a2N5QnZaaUIwYUdseklFUmhkR1ZVYVcxbExseHVJQ0FnS2lCQWNtVjBkWEp1SUh0dWRXMWlaWEo5WEc0Z0lDQXFMMXh1SUNCMGIxTmxZMjl1WkhNb0tTQjdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVhWE5XWVd4cFpDQS9JSFJvYVhNdWRITWdMeUF4TURBd0lEb2dUbUZPTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGSmxkSFZ5Ym5NZ2RHaGxJR1Z3YjJOb0lITmxZMjl1WkhNZ0tHRnpJR0VnZDJodmJHVWdiblZ0WW1WeUtTQnZaaUIwYUdseklFUmhkR1ZVYVcxbExseHVJQ0FnS2lCQWNtVjBkWEp1SUh0dWRXMWlaWEo5WEc0Z0lDQXFMMXh1SUNCMGIxVnVhWGhKYm5SbFoyVnlLQ2tnZTF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TG1selZtRnNhV1FnUHlCTllYUm9MbVpzYjI5eUtIUm9hWE11ZEhNZ0x5QXhNREF3S1NBNklFNWhUanRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCU1pYUjFjbTV6SUdGdUlFbFRUeUE0TmpBeElISmxjSEpsYzJWdWRHRjBhVzl1SUc5bUlIUm9hWE1nUkdGMFpWUnBiV1VnWVhCd2NtOXdjbWxoZEdVZ1ptOXlJSFZ6WlNCcGJpQktVMDlPTGx4dUlDQWdLaUJBY21WMGRYSnVJSHR6ZEhKcGJtZDlYRzRnSUNBcUwxeHVJQ0IwYjBwVFQwNG9LU0I3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11ZEc5SlUwOG9LVHRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCU1pYUjFjbTV6SUdFZ1FsTlBUaUJ6WlhKcFlXeHBlbUZpYkdVZ1pYRjFhWFpoYkdWdWRDQjBieUIwYUdseklFUmhkR1ZVYVcxbExseHVJQ0FnS2lCQWNtVjBkWEp1SUh0RVlYUmxmVnh1SUNBZ0tpOWNiaUFnZEc5Q1UwOU9LQ2tnZTF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TG5SdlNsTkVZWFJsS0NrN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dVbVYwZFhKdWN5QmhJRXBoZG1GVFkzSnBjSFFnYjJKcVpXTjBJSGRwZEdnZ2RHaHBjeUJFWVhSbFZHbHRaU2R6SUhsbFlYSXNJRzF2Ym5Sb0xDQmtZWGtzSUdGdVpDQnpieUJ2Ymk1Y2JpQWdJQ29nUUhCaGNtRnRJRzl3ZEhNZ0xTQnZjSFJwYjI1eklHWnZjaUJuWlc1bGNtRjBhVzVuSUhSb1pTQnZZbXBsWTNSY2JpQWdJQ29nUUhCaGNtRnRJSHRpYjI5c1pXRnVmU0JiYjNCMGN5NXBibU5zZFdSbFEyOXVabWxuUFdaaGJITmxYU0F0SUdsdVkyeDFaR1VnWTI5dVptbG5kWEpoZEdsdmJpQmhkSFJ5YVdKMWRHVnpJR2x1SUhSb1pTQnZkWFJ3ZFhSY2JpQWdJQ29nUUdWNFlXMXdiR1VnUkdGMFpWUnBiV1V1Ym05M0tDa3VkRzlQWW1wbFkzUW9LU0F2THowK0lIc2dlV1ZoY2pvZ01qQXhOeXdnYlc5dWRHZzZJRFFzSUdSaGVUb2dNaklzSUdodmRYSTZJREl3TENCdGFXNTFkR1U2SURRNUxDQnpaV052Ym1RNklEUXlMQ0J0YVd4c2FYTmxZMjl1WkRvZ01qWTRJSDFjYmlBZ0lDb2dRSEpsZEhWeWJpQjdUMkpxWldOMGZWeHVJQ0FnS2k5Y2JpQWdkRzlQWW1wbFkzUW9iM0IwY3lBOUlIdDlLU0I3WEc0Z0lDQWdhV1lnS0NGMGFHbHpMbWx6Vm1Gc2FXUXBJSEpsZEhWeWJpQjdmVHRjYmx4dUlDQWdJR052Ym5OMElHSmhjMlVnUFNCN0lDNHVMblJvYVhNdVl5QjlPMXh1WEc0Z0lDQWdhV1lnS0c5d2RITXVhVzVqYkhWa1pVTnZibVpwWnlrZ2UxeHVJQ0FnSUNBZ1ltRnpaUzV2ZFhSd2RYUkRZV3hsYm1SaGNpQTlJSFJvYVhNdWIzVjBjSFYwUTJGc1pXNWtZWEk3WEc0Z0lDQWdJQ0JpWVhObExtNTFiV0psY21sdVoxTjVjM1JsYlNBOUlIUm9hWE11Ykc5akxtNTFiV0psY21sdVoxTjVjM1JsYlR0Y2JpQWdJQ0FnSUdKaGMyVXViRzlqWVd4bElEMGdkR2hwY3k1c2IyTXViRzlqWVd4bE8xeHVJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNtNGdZbUZ6WlR0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlNaWFIxY201eklHRWdTbUYyWVZOamNtbHdkQ0JFWVhSbElHVnhkV2wyWVd4bGJuUWdkRzhnZEdocGN5QkVZWFJsVkdsdFpTNWNiaUFnSUNvZ1FISmxkSFZ5YmlCN1JHRjBaWDFjYmlBZ0lDb3ZYRzRnSUhSdlNsTkVZWFJsS0NrZ2UxeHVJQ0FnSUhKbGRIVnliaUJ1WlhjZ1JHRjBaU2gwYUdsekxtbHpWbUZzYVdRZ1B5QjBhR2x6TG5SeklEb2dUbUZPS1R0Y2JpQWdmVnh1WEc0Z0lDOHZJRU5QVFZCQlVrVmNibHh1SUNBdktpcGNiaUFnSUNvZ1VtVjBkWEp1SUhSb1pTQmthV1ptWlhKbGJtTmxJR0psZEhkbFpXNGdkSGR2SUVSaGRHVlVhVzFsY3lCaGN5QmhJRVIxY21GMGFXOXVMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UwUmhkR1ZVYVcxbGZTQnZkR2hsY2tSaGRHVlVhVzFsSUMwZ2RHaGxJRVJoZEdWVWFXMWxJSFJ2SUdOdmJYQmhjbVVnZEdocGN5QnZibVVnZEc5Y2JpQWdJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDhjM1J5YVc1blcxMTlJRnQxYm1sMFBWc25iV2xzYkdselpXTnZibVJ6SjExZElDMGdkR2hsSUhWdWFYUWdiM0lnWVhKeVlYa2diMllnZFc1cGRITWdLSE4xWTJnZ1lYTWdKMmh2ZFhKekp5QnZjaUFuWkdGNWN5Y3BJSFJ2SUdsdVkyeDFaR1VnYVc0Z2RHaGxJR1IxY21GMGFXOXVMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UwOWlhbVZqZEgwZ2IzQjBjeUF0SUc5d2RHbHZibk1nZEdoaGRDQmhabVpsWTNRZ2RHaGxJR055WldGMGFXOXVJRzltSUhSb1pTQkVkWEpoZEdsdmJseHVJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnVzI5d2RITXVZMjl1ZG1WeWMybHZia0ZqWTNWeVlXTjVQU2RqWVhOMVlXd25YU0F0SUhSb1pTQmpiMjUyWlhKemFXOXVJSE41YzNSbGJTQjBieUIxYzJWY2JpQWdJQ29nUUdWNFlXMXdiR1ZjYmlBZ0lDb2dkbUZ5SUdreElEMGdSR0YwWlZScGJXVXVabkp2YlVsVFR5Z25NVGs0TWkwd05TMHlOVlF3T1RvME5TY3BMRnh1SUNBZ0tpQWdJQ0FnYVRJZ1BTQkVZWFJsVkdsdFpTNW1jbTl0U1ZOUEtDY3hPVGd6TFRFd0xURTBWREV3T2pNd0p5azdYRzRnSUNBcUlHa3lMbVJwWm1Zb2FURXBMblJ2VDJKcVpXTjBLQ2tnTHk4OVBpQjdJRzFwYkd4cGMyVmpiMjVrY3pvZ05ETTRNRGMxTURBd01EQWdmVnh1SUNBZ0tpQnBNaTVrYVdabUtHa3hMQ0FuYUc5MWNuTW5LUzUwYjA5aWFtVmpkQ2dwSUM4dlBUNGdleUJvYjNWeWN6b2dNVEl4TmpndU56VWdmVnh1SUNBZ0tpQnBNaTVrYVdabUtHa3hMQ0JiSjIxdmJuUm9jeWNzSUNka1lYbHpKMTBwTG5SdlQySnFaV04wS0NrZ0x5ODlQaUI3SUcxdmJuUm9jem9nTVRZc0lHUmhlWE02SURFNUxqQXpNVEkxSUgxY2JpQWdJQ29nYVRJdVpHbG1aaWhwTVN3Z1d5ZHRiMjUwYUhNbkxDQW5aR0Y1Y3ljc0lDZG9iM1Z5Y3lkZEtTNTBiMDlpYW1WamRDZ3BJQzh2UFQ0Z2V5QnRiMjUwYUhNNklERTJMQ0JrWVhsek9pQXhPU3dnYUc5MWNuTTZJREF1TnpVZ2ZWeHVJQ0FnS2lCQWNtVjBkWEp1SUh0RWRYSmhkR2x2Ym4xY2JpQWdJQ292WEc0Z0lHUnBabVlvYjNSb1pYSkVZWFJsVkdsdFpTd2dkVzVwZENBOUlGd2liV2xzYkdselpXTnZibVJ6WENJc0lHOXdkSE1nUFNCN2ZTa2dlMXh1SUNBZ0lHbG1JQ2doZEdocGN5NXBjMVpoYkdsa0lIeDhJQ0Z2ZEdobGNrUmhkR1ZVYVcxbExtbHpWbUZzYVdRcElIdGNiaUFnSUNBZ0lISmxkSFZ5YmlCRWRYSmhkR2x2Ymk1cGJuWmhiR2xrS0Z3aVkzSmxZWFJsWkNCaWVTQmthV1ptYVc1bklHRnVJR2x1ZG1Gc2FXUWdSR0YwWlZScGJXVmNJaWs3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdZMjl1YzNRZ1pIVnlUM0IwY3lBOUlIc2diRzlqWVd4bE9pQjBhR2x6TG14dlkyRnNaU3dnYm5WdFltVnlhVzVuVTNsemRHVnRPaUIwYUdsekxtNTFiV0psY21sdVoxTjVjM1JsYlN3Z0xpNHViM0IwY3lCOU8xeHVYRzRnSUNBZ1kyOXVjM1FnZFc1cGRITWdQU0J0WVhsaVpVRnljbUY1S0hWdWFYUXBMbTFoY0NoRWRYSmhkR2x2Ymk1dWIzSnRZV3hwZW1WVmJtbDBLU3hjYmlBZ0lDQWdJRzkwYUdWeVNYTk1ZWFJsY2lBOUlHOTBhR1Z5UkdGMFpWUnBiV1V1ZG1Gc2RXVlBaaWdwSUQ0Z2RHaHBjeTUyWVd4MVpVOW1LQ2tzWEc0Z0lDQWdJQ0JsWVhKc2FXVnlJRDBnYjNSb1pYSkpjMHhoZEdWeUlEOGdkR2hwY3lBNklHOTBhR1Z5UkdGMFpWUnBiV1VzWEc0Z0lDQWdJQ0JzWVhSbGNpQTlJRzkwYUdWeVNYTk1ZWFJsY2lBL0lHOTBhR1Z5UkdGMFpWUnBiV1VnT2lCMGFHbHpMRnh1SUNBZ0lDQWdaR2xtWm1Wa0lEMGdaR2xtWmlobFlYSnNhV1Z5TENCc1lYUmxjaXdnZFc1cGRITXNJR1IxY2s5d2RITXBPMXh1WEc0Z0lDQWdjbVYwZFhKdUlHOTBhR1Z5U1hOTVlYUmxjaUEvSUdScFptWmxaQzV1WldkaGRHVW9LU0E2SUdScFptWmxaRHRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCU1pYUjFjbTRnZEdobElHUnBabVpsY21WdVkyVWdZbVYwZDJWbGJpQjBhR2x6SUVSaGRHVlVhVzFsSUdGdVpDQnlhV2RvZENCdWIzY3VYRzRnSUNBcUlGTmxaU0I3UUd4cGJtc2dSR0YwWlZScGJXVWpaR2xtWm4xY2JpQWdJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDhjM1J5YVc1blcxMTlJRnQxYm1sMFBWc25iV2xzYkdselpXTnZibVJ6SjExZElDMGdkR2hsSUhWdWFYUWdiM0lnZFc1cGRITWdkVzVwZEhNZ0tITjFZMmdnWVhNZ0oyaHZkWEp6SnlCdmNpQW5aR0Y1Y3ljcElIUnZJR2x1WTJ4MVpHVWdhVzRnZEdobElHUjFjbUYwYVc5dVhHNGdJQ0FxSUVCd1lYSmhiU0I3VDJKcVpXTjBmU0J2Y0hSeklDMGdiM0IwYVc5dWN5QjBhR0YwSUdGbVptVmpkQ0IwYUdVZ1kzSmxZWFJwYjI0Z2IyWWdkR2hsSUVSMWNtRjBhVzl1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQmJiM0IwY3k1amIyNTJaWEp6YVc5dVFXTmpkWEpoWTNrOUoyTmhjM1ZoYkNkZElDMGdkR2hsSUdOdmJuWmxjbk5wYjI0Z2MzbHpkR1Z0SUhSdklIVnpaVnh1SUNBZ0tpQkFjbVYwZFhKdUlIdEVkWEpoZEdsdmJuMWNiaUFnSUNvdlhHNGdJR1JwWm1aT2IzY29kVzVwZENBOUlGd2liV2xzYkdselpXTnZibVJ6WENJc0lHOXdkSE1nUFNCN2ZTa2dlMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpMbVJwWm1Zb1JHRjBaVlJwYldVdWJtOTNLQ2tzSUhWdWFYUXNJRzl3ZEhNcE8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRkpsZEhWeWJpQmhiaUJKYm5SbGNuWmhiQ0J6Y0dGdWJtbHVaeUJpWlhSM1pXVnVJSFJvYVhNZ1JHRjBaVlJwYldVZ1lXNWtJR0Z1YjNSb1pYSWdSR0YwWlZScGJXVmNiaUFnSUNvZ1FIQmhjbUZ0SUh0RVlYUmxWR2x0WlgwZ2IzUm9aWEpFWVhSbFZHbHRaU0F0SUhSb1pTQnZkR2hsY2lCbGJtUWdjRzlwYm5RZ2IyWWdkR2hsSUVsdWRHVnlkbUZzWEc0Z0lDQXFJRUJ5WlhSMWNtNGdlMGx1ZEdWeWRtRnNmVnh1SUNBZ0tpOWNiaUFnZFc1MGFXd29iM1JvWlhKRVlYUmxWR2x0WlNrZ2UxeHVJQ0FnSUhKbGRIVnliaUIwYUdsekxtbHpWbUZzYVdRZ1B5QkpiblJsY25aaGJDNW1jbTl0UkdGMFpWUnBiV1Z6S0hSb2FYTXNJRzkwYUdWeVJHRjBaVlJwYldVcElEb2dkR2hwY3p0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlNaWFIxY200Z2QyaGxkR2hsY2lCMGFHbHpJRVJoZEdWVWFXMWxJR2x6SUdsdUlIUm9aU0J6WVcxbElIVnVhWFFnYjJZZ2RHbHRaU0JoY3lCaGJtOTBhR1Z5SUVSaGRHVlVhVzFsTGx4dUlDQWdLaUJJYVdkb1pYSXRiM0prWlhJZ2RXNXBkSE1nYlhWemRDQmhiSE52SUdKbElHbGtaVzUwYVdOaGJDQm1iM0lnZEdocGN5Qm1kVzVqZEdsdmJpQjBieUJ5WlhSMWNtNGdZSFJ5ZFdWZ0xseHVJQ0FnS2lCT2IzUmxJSFJvWVhRZ2RHbHRaU0I2YjI1bGN5QmhjbVVnS2lwcFoyNXZjbVZrS2lvZ2FXNGdkR2hwY3lCamIyMXdZWEpwYzI5dUxDQjNhR2xqYUNCamIyMXdZWEpsY3lCMGFHVWdLaXBzYjJOaGJDb3FJR05oYkdWdVpHRnlJSFJwYldVdUlGVnpaU0I3UUd4cGJtc2dSR0YwWlZScGJXVWpjMlYwV205dVpYMGdkRzhnWTI5dWRtVnlkQ0J2Ym1VZ2IyWWdkR2hsSUdSaGRHVnpJR2xtSUc1bFpXUmxaQzVjYmlBZ0lDb2dRSEJoY21GdElIdEVZWFJsVkdsdFpYMGdiM1JvWlhKRVlYUmxWR2x0WlNBdElIUm9aU0J2ZEdobGNpQkVZWFJsVkdsdFpWeHVJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnZFc1cGRDQXRJSFJvWlNCMWJtbDBJRzltSUhScGJXVWdkRzhnWTJobFkyc2djMkZ0Wlc1bGMzTWdiMjVjYmlBZ0lDb2dRR1Y0WVcxd2JHVWdSR0YwWlZScGJXVXVibTkzS0NrdWFHRnpVMkZ0WlNodmRHaGxja1JVTENBblpHRjVKeWs3SUM4dmZqNGdkSEoxWlNCcFppQnZkR2hsY2tSVUlHbHpJR2x1SUhSb1pTQnpZVzFsSUdOMWNuSmxiblFnWTJGc1pXNWtZWElnWkdGNVhHNGdJQ0FxSUVCeVpYUjFjbTRnZTJKdmIyeGxZVzU5WEc0Z0lDQXFMMXh1SUNCb1lYTlRZVzFsS0c5MGFHVnlSR0YwWlZScGJXVXNJSFZ1YVhRcElIdGNiaUFnSUNCcFppQW9JWFJvYVhNdWFYTldZV3hwWkNrZ2NtVjBkWEp1SUdaaGJITmxPMXh1WEc0Z0lDQWdZMjl1YzNRZ2FXNXdkWFJOY3lBOUlHOTBhR1Z5UkdGMFpWUnBiV1V1ZG1Gc2RXVlBaaWdwTzF4dUlDQWdJR052Ym5OMElHRmthblZ6ZEdWa1ZHOWFiMjVsSUQwZ2RHaHBjeTV6WlhSYWIyNWxLRzkwYUdWeVJHRjBaVlJwYldVdWVtOXVaU3dnZXlCclpXVndURzlqWVd4VWFXMWxPaUIwY25WbElIMHBPMXh1SUNBZ0lISmxkSFZ5YmlCaFpHcDFjM1JsWkZSdldtOXVaUzV6ZEdGeWRFOW1LSFZ1YVhRcElEdzlJR2x1Y0hWMFRYTWdKaVlnYVc1d2RYUk5jeUE4UFNCaFpHcDFjM1JsWkZSdldtOXVaUzVsYm1SUFppaDFibWwwS1R0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkZjWFZoYkdsMGVTQmphR1ZqYTF4dUlDQWdLaUJVZDI4Z1JHRjBaVlJwYldWeklHRnlaU0JsY1hWaGJDQnBabVlnZEdobGVTQnlaWEJ5WlhObGJuUWdkR2hsSUhOaGJXVWdiV2xzYkdselpXTnZibVFzSUdoaGRtVWdkR2hsSUhOaGJXVWdlbTl1WlNCaGJtUWdiRzlqWVhScGIyNHNJR0Z1WkNCaGNtVWdZbTkwYUNCMllXeHBaQzVjYmlBZ0lDb2dWRzhnWTI5dGNHRnlaU0JxZFhOMElIUm9aU0J0YVd4c2FYTmxZMjl1WkNCMllXeDFaWE1zSUhWelpTQmdLMlIwTVNBOVBUMGdLMlIwTW1BdVhHNGdJQ0FxSUVCd1lYSmhiU0I3UkdGMFpWUnBiV1Y5SUc5MGFHVnlJQzBnZEdobElHOTBhR1Z5SUVSaGRHVlVhVzFsWEc0Z0lDQXFJRUJ5WlhSMWNtNGdlMkp2YjJ4bFlXNTlYRzRnSUNBcUwxeHVJQ0JsY1hWaGJITW9iM1JvWlhJcElIdGNiaUFnSUNCeVpYUjFjbTRnS0Z4dUlDQWdJQ0FnZEdocGN5NXBjMVpoYkdsa0lDWW1YRzRnSUNBZ0lDQnZkR2hsY2k1cGMxWmhiR2xrSUNZbVhHNGdJQ0FnSUNCMGFHbHpMblpoYkhWbFQyWW9LU0E5UFQwZ2IzUm9aWEl1ZG1Gc2RXVlBaaWdwSUNZbVhHNGdJQ0FnSUNCMGFHbHpMbnB2Ym1VdVpYRjFZV3h6S0c5MGFHVnlMbnB2Ym1VcElDWW1YRzRnSUNBZ0lDQjBhR2x6TG14dll5NWxjWFZoYkhNb2IzUm9aWEl1Ykc5aktWeHVJQ0FnSUNrN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dVbVYwZFhKdWN5QmhJSE4wY21sdVp5QnlaWEJ5WlhObGJuUmhkR2x2YmlCdlppQmhJSFJvYVhNZ2RHbHRaU0J5Wld4aGRHbDJaU0IwYnlCdWIzY3NJSE4xWTJnZ1lYTWdYQ0pwYmlCMGQyOGdaR0Y1YzF3aUxpQkRZVzRnYjI1c2VTQnBiblJsY201aGRHbHZibUZzYVhwbElHbG1JSGx2ZFhKY2JpQWdJQ29nY0d4aGRHWnZjbTBnYzNWd2NHOXlkSE1nU1c1MGJDNVNaV3hoZEdsMlpWUnBiV1ZHYjNKdFlYUXVJRkp2ZFc1a2N5QmtiM2R1SUdKNUlHUmxabUYxYkhRdVhHNGdJQ0FxSUVCd1lYSmhiU0I3VDJKcVpXTjBmU0J2Y0hScGIyNXpJQzBnYjNCMGFXOXVjeUIwYUdGMElHRm1abVZqZENCMGFHVWdiM1YwY0hWMFhHNGdJQ0FxSUVCd1lYSmhiU0I3UkdGMFpWUnBiV1Y5SUZ0dmNIUnBiMjV6TG1KaGMyVTlSR0YwWlZScGJXVXVibTkzS0NsZElDMGdkR2hsSUVSaGRHVlVhVzFsSUhSdklIVnpaU0JoY3lCMGFHVWdZbUZ6YVhNZ2RHOGdkMmhwWTJnZ2RHaHBjeUIwYVcxbElHbHpJR052YlhCaGNtVmtMaUJFWldaaGRXeDBjeUIwYnlCdWIzY3VYRzRnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCYmIzQjBhVzl1Y3k1emRIbHNaVDFjSW14dmJtZGNJbDBnTFNCMGFHVWdjM1I1YkdVZ2IyWWdkVzVwZEhNc0lHMTFjM1FnWW1VZ1hDSnNiMjVuWENJc0lGd2ljMmh2Y25SY0lpd2diM0lnWENKdVlYSnliM2RjSWx4dUlDQWdLaUJBY0dGeVlXMGdlM04wY21sdVozeHpkSEpwYm1kYlhYMGdiM0IwYVc5dWN5NTFibWwwSUMwZ2RYTmxJR0VnYzNCbFkybG1hV01nZFc1cGRDQnZjaUJoY25KaGVTQnZaaUIxYm1sMGN6c2dhV1lnYjIxcGRIUmxaQ3dnYjNJZ1lXNGdZWEp5WVhrc0lIUm9aU0J0WlhSb2IyUWdkMmxzYkNCd2FXTnJJSFJvWlNCaVpYTjBJSFZ1YVhRdUlGVnpaU0JoYmlCaGNuSmhlU0J2Y2lCdmJtVWdiMllnWENKNVpXRnljMXdpTENCY0luRjFZWEowWlhKelhDSXNJRndpYlc5dWRHaHpYQ0lzSUZ3aWQyVmxhM05jSWl3Z1hDSmtZWGx6WENJc0lGd2lhRzkxY25OY0lpd2dYQ0p0YVc1MWRHVnpYQ0lzSUc5eUlGd2ljMlZqYjI1a2Mxd2lYRzRnSUNBcUlFQndZWEpoYlNCN1ltOXZiR1ZoYm4wZ1cyOXdkR2x2Ym5NdWNtOTFibVE5ZEhKMVpWMGdMU0IzYUdWMGFHVnlJSFJ2SUhKdmRXNWtJSFJvWlNCdWRXMWlaWEp6SUdsdUlIUm9aU0J2ZFhSd2RYUXVYRzRnSUNBcUlFQndZWEpoYlNCN2JuVnRZbVZ5ZlNCYmIzQjBhVzl1Y3k1d1lXUmthVzVuUFRCZElDMGdjR0ZrWkdsdVp5QnBiaUJ0YVd4c2FYTmxZMjl1WkhNdUlGUm9hWE1nWVd4c2IzZHpJSGx2ZFNCMGJ5QnliM1Z1WkNCMWNDQjBhR1VnY21WemRXeDBJR2xtSUdsMElHWnBkSE1nYVc1emFXUmxJSFJvWlNCMGFISmxjMmh2YkdRdUlFUnZiaWQwSUhWelpTQnBiaUJqYjIxaWFXNWhkR2x2YmlCM2FYUm9JSHR5YjNWdVpEb2dabUZzYzJWOUlHSmxZMkYxYzJVZ2RHaGxJR1JsWTJsdFlXd2diM1YwY0hWMElIZHBiR3dnYVc1amJIVmtaU0IwYUdVZ2NHRmtaR2x1Wnk1Y2JpQWdJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJRzl3ZEdsdmJuTXViRzlqWVd4bElDMGdiM1psY25KcFpHVWdkR2hsSUd4dlkyRnNaU0J2WmlCMGFHbHpJRVJoZEdWVWFXMWxYRzRnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCdmNIUnBiMjV6TG01MWJXSmxjbWx1WjFONWMzUmxiU0F0SUc5MlpYSnlhV1JsSUhSb1pTQnVkVzFpWlhKcGJtZFRlWE4wWlcwZ2IyWWdkR2hwY3lCRVlYUmxWR2x0WlM0Z1ZHaGxJRWx1ZEd3Z2MzbHpkR1Z0SUcxaGVTQmphRzl2YzJVZ2JtOTBJSFJ2SUdodmJtOXlJSFJvYVhOY2JpQWdJQ29nUUdWNFlXMXdiR1VnUkdGMFpWUnBiV1V1Ym05M0tDa3VjR3gxY3loN0lHUmhlWE02SURFZ2ZTa3VkRzlTWld4aGRHbDJaU2dwSUM4dlBUNGdYQ0pwYmlBeElHUmhlVndpWEc0Z0lDQXFJRUJsZUdGdGNHeGxJRVJoZEdWVWFXMWxMbTV2ZHlncExuTmxkRXh2WTJGc1pTaGNJbVZ6WENJcExuUnZVbVZzWVhScGRtVW9leUJrWVhsek9pQXhJSDBwSUM4dlBUNGdYQ0prWlc1MGNtOGdaR1VnTVNCa1hIVXdNRVZFWVZ3aVhHNGdJQ0FxSUVCbGVHRnRjR3hsSUVSaGRHVlVhVzFsTG01dmR5Z3BMbkJzZFhNb2V5QmtZWGx6T2lBeElIMHBMblJ2VW1Wc1lYUnBkbVVvZXlCc2IyTmhiR1U2SUZ3aVpuSmNJaUI5S1NBdkx6MCtJRndpWkdGdWN5QXlNeUJvWlhWeVpYTmNJbHh1SUNBZ0tpQkFaWGhoYlhCc1pTQkVZWFJsVkdsdFpTNXViM2NvS1M1dGFXNTFjeWg3SUdSaGVYTTZJRElnZlNrdWRHOVNaV3hoZEdsMlpTZ3BJQzh2UFQ0Z1hDSXlJR1JoZVhNZ1lXZHZYQ0pjYmlBZ0lDb2dRR1Y0WVcxd2JHVWdSR0YwWlZScGJXVXVibTkzS0NrdWJXbHVkWE1vZXlCa1lYbHpPaUF5SUgwcExuUnZVbVZzWVhScGRtVW9leUIxYm1sME9pQmNJbWh2ZFhKelhDSWdmU2tnTHk4OVBpQmNJalE0SUdodmRYSnpJR0ZuYjF3aVhHNGdJQ0FxSUVCbGVHRnRjR3hsSUVSaGRHVlVhVzFsTG01dmR5Z3BMbTFwYm5WektIc2dhRzkxY25NNklETTJJSDBwTG5SdlVtVnNZWFJwZG1Vb2V5QnliM1Z1WkRvZ1ptRnNjMlVnZlNrZ0x5ODlQaUJjSWpFdU5TQmtZWGx6SUdGbmIxd2lYRzRnSUNBcUwxeHVJQ0IwYjFKbGJHRjBhWFpsS0c5d2RHbHZibk1nUFNCN2ZTa2dlMXh1SUNBZ0lHbG1JQ2doZEdocGN5NXBjMVpoYkdsa0tTQnlaWFIxY200Z2JuVnNiRHRjYmlBZ0lDQmpiMjV6ZENCaVlYTmxJRDBnYjNCMGFXOXVjeTVpWVhObElIeDhJRVJoZEdWVWFXMWxMbVp5YjIxUFltcGxZM1FvZTMwc0lIc2dlbTl1WlRvZ2RHaHBjeTU2YjI1bElIMHBMRnh1SUNBZ0lDQWdjR0ZrWkdsdVp5QTlJRzl3ZEdsdmJuTXVjR0ZrWkdsdVp5QS9JQ2gwYUdseklEd2dZbUZ6WlNBL0lDMXZjSFJwYjI1ekxuQmhaR1JwYm1jZ09pQnZjSFJwYjI1ekxuQmhaR1JwYm1jcElEb2dNRHRjYmlBZ0lDQnNaWFFnZFc1cGRITWdQU0JiWENKNVpXRnljMXdpTENCY0ltMXZiblJvYzF3aUxDQmNJbVJoZVhOY0lpd2dYQ0pvYjNWeWMxd2lMQ0JjSW0xcGJuVjBaWE5jSWl3Z1hDSnpaV052Ym1SelhDSmRPMXh1SUNBZ0lHeGxkQ0IxYm1sMElEMGdiM0IwYVc5dWN5NTFibWwwTzF4dUlDQWdJR2xtSUNoQmNuSmhlUzVwYzBGeWNtRjVLRzl3ZEdsdmJuTXVkVzVwZENrcElIdGNiaUFnSUNBZ0lIVnVhWFJ6SUQwZ2IzQjBhVzl1Y3k1MWJtbDBPMXh1SUNBZ0lDQWdkVzVwZENBOUlIVnVaR1ZtYVc1bFpEdGNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJR1JwWm1aU1pXeGhkR2wyWlNoaVlYTmxMQ0IwYUdsekxuQnNkWE1vY0dGa1pHbHVaeWtzSUh0Y2JpQWdJQ0FnSUM0dUxtOXdkR2x2Ym5Nc1hHNGdJQ0FnSUNCdWRXMWxjbWxqT2lCY0ltRnNkMkY1YzF3aUxGeHVJQ0FnSUNBZ2RXNXBkSE1zWEc0Z0lDQWdJQ0IxYm1sMExGeHVJQ0FnSUgwcE8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRkpsZEhWeWJuTWdZU0J6ZEhKcGJtY2djbVZ3Y21WelpXNTBZWFJwYjI0Z2IyWWdkR2hwY3lCa1lYUmxJSEpsYkdGMGFYWmxJSFJ2SUhSdlpHRjVMQ0J6ZFdOb0lHRnpJRndpZVdWemRHVnlaR0Y1WENJZ2IzSWdYQ0p1WlhoMElHMXZiblJvWENJdVhHNGdJQ0FxSUU5dWJIa2dhVzUwWlhKdVlYUnBiMjVoYkdsNlpYTWdiMjRnY0d4aGRHWnZjbTF6SUhSb1lYUWdjM1Z3Y0c5eWRITWdTVzUwYkM1U1pXeGhkR2wyWlZScGJXVkdiM0p0WVhRdVhHNGdJQ0FxSUVCd1lYSmhiU0I3VDJKcVpXTjBmU0J2Y0hScGIyNXpJQzBnYjNCMGFXOXVjeUIwYUdGMElHRm1abVZqZENCMGFHVWdiM1YwY0hWMFhHNGdJQ0FxSUVCd1lYSmhiU0I3UkdGMFpWUnBiV1Y5SUZ0dmNIUnBiMjV6TG1KaGMyVTlSR0YwWlZScGJXVXVibTkzS0NsZElDMGdkR2hsSUVSaGRHVlVhVzFsSUhSdklIVnpaU0JoY3lCMGFHVWdZbUZ6YVhNZ2RHOGdkMmhwWTJnZ2RHaHBjeUIwYVcxbElHbHpJR052YlhCaGNtVmtMaUJFWldaaGRXeDBjeUIwYnlCdWIzY3VYRzRnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCdmNIUnBiMjV6TG14dlkyRnNaU0F0SUc5MlpYSnlhV1JsSUhSb1pTQnNiMk5oYkdVZ2IyWWdkR2hwY3lCRVlYUmxWR2x0WlZ4dUlDQWdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdiM0IwYVc5dWN5NTFibWwwSUMwZ2RYTmxJR0VnYzNCbFkybG1hV01nZFc1cGREc2dhV1lnYjIxcGRIUmxaQ3dnZEdobElHMWxkR2h2WkNCM2FXeHNJSEJwWTJzZ2RHaGxJSFZ1YVhRdUlGVnpaU0J2Ym1VZ2IyWWdYQ0o1WldGeWMxd2lMQ0JjSW5GMVlYSjBaWEp6WENJc0lGd2liVzl1ZEdoelhDSXNJRndpZDJWbGEzTmNJaXdnYjNJZ1hDSmtZWGx6WENKY2JpQWdJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJRzl3ZEdsdmJuTXViblZ0WW1WeWFXNW5VM2x6ZEdWdElDMGdiM1psY25KcFpHVWdkR2hsSUc1MWJXSmxjbWx1WjFONWMzUmxiU0J2WmlCMGFHbHpJRVJoZEdWVWFXMWxMaUJVYUdVZ1NXNTBiQ0J6ZVhOMFpXMGdiV0Y1SUdOb2IyOXpaU0J1YjNRZ2RHOGdhRzl1YjNJZ2RHaHBjMXh1SUNBZ0tpQkFaWGhoYlhCc1pTQkVZWFJsVkdsdFpTNXViM2NvS1M1d2JIVnpLSHNnWkdGNWN6b2dNU0I5S1M1MGIxSmxiR0YwYVhabFEyRnNaVzVrWVhJb0tTQXZMejArSUZ3aWRHOXRiM0p5YjNkY0lseHVJQ0FnS2lCQVpYaGhiWEJzWlNCRVlYUmxWR2x0WlM1dWIzY29LUzV6WlhSTWIyTmhiR1VvWENKbGMxd2lLUzV3YkhWektIc2daR0Y1Y3pvZ01TQjlLUzUwYjFKbGJHRjBhWFpsS0NrZ0x5ODlQaUJjSWx3aWJXRmNkVEF3UmpGaGJtRmNJbHh1SUNBZ0tpQkFaWGhoYlhCc1pTQkVZWFJsVkdsdFpTNXViM2NvS1M1d2JIVnpLSHNnWkdGNWN6b2dNU0I5S1M1MGIxSmxiR0YwYVhabFEyRnNaVzVrWVhJb2V5QnNiMk5oYkdVNklGd2labkpjSWlCOUtTQXZMejArSUZ3aVpHVnRZV2x1WENKY2JpQWdJQ29nUUdWNFlXMXdiR1VnUkdGMFpWUnBiV1V1Ym05M0tDa3ViV2x1ZFhNb2V5QmtZWGx6T2lBeUlIMHBMblJ2VW1Wc1lYUnBkbVZEWVd4bGJtUmhjaWdwSUM4dlBUNGdYQ0l5SUdSaGVYTWdZV2R2WENKY2JpQWdJQ292WEc0Z0lIUnZVbVZzWVhScGRtVkRZV3hsYm1SaGNpaHZjSFJwYjI1eklEMGdlMzBwSUh0Y2JpQWdJQ0JwWmlBb0lYUm9hWE11YVhOV1lXeHBaQ2tnY21WMGRYSnVJRzUxYkd3N1hHNWNiaUFnSUNCeVpYUjFjbTRnWkdsbVpsSmxiR0YwYVhabEtHOXdkR2x2Ym5NdVltRnpaU0I4ZkNCRVlYUmxWR2x0WlM1bWNtOXRUMkpxWldOMEtIdDlMQ0I3SUhwdmJtVTZJSFJvYVhNdWVtOXVaU0I5S1N3Z2RHaHBjeXdnZTF4dUlDQWdJQ0FnTGk0dWIzQjBhVzl1Y3l4Y2JpQWdJQ0FnSUc1MWJXVnlhV002SUZ3aVlYVjBiMXdpTEZ4dUlDQWdJQ0FnZFc1cGRITTZJRnRjSW5sbFlYSnpYQ0lzSUZ3aWJXOXVkR2h6WENJc0lGd2laR0Y1YzF3aVhTeGNiaUFnSUNBZ0lHTmhiR1Z1WkdGeWVUb2dkSEoxWlN4Y2JpQWdJQ0I5S1R0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlNaWFIxY200Z2RHaGxJRzFwYmlCdlppQnpaWFpsY21Gc0lHUmhkR1VnZEdsdFpYTmNiaUFnSUNvZ1FIQmhjbUZ0SUhzdUxpNUVZWFJsVkdsdFpYMGdaR0YwWlZScGJXVnpJQzBnZEdobElFUmhkR1ZVYVcxbGN5Qm1jbTl0SUhkb2FXTm9JSFJ2SUdOb2IyOXpaU0IwYUdVZ2JXbHVhVzExYlZ4dUlDQWdLaUJBY21WMGRYSnVJSHRFWVhSbFZHbHRaWDBnZEdobElHMXBiaUJFWVhSbFZHbHRaU3dnYjNJZ2RXNWtaV1pwYm1Wa0lHbG1JR05oYkd4bFpDQjNhWFJvSUc1dklHRnlaM1Z0Wlc1MFhHNGdJQ0FxTDF4dUlDQnpkR0YwYVdNZ2JXbHVLQzR1TG1SaGRHVlVhVzFsY3lrZ2UxeHVJQ0FnSUdsbUlDZ2haR0YwWlZScGJXVnpMbVYyWlhKNUtFUmhkR1ZVYVcxbExtbHpSR0YwWlZScGJXVXBLU0I3WEc0Z0lDQWdJQ0IwYUhKdmR5QnVaWGNnU1c1MllXeHBaRUZ5WjNWdFpXNTBSWEp5YjNJb1hDSnRhVzRnY21WeGRXbHlaWE1nWVd4c0lHRnlaM1Z0Wlc1MGN5QmlaU0JFWVhSbFZHbHRaWE5jSWlrN1hHNGdJQ0FnZlZ4dUlDQWdJSEpsZEhWeWJpQmlaWE4wUW5rb1pHRjBaVlJwYldWekxDQW9hU2tnUFQ0Z2FTNTJZV3gxWlU5bUtDa3NJRTFoZEdndWJXbHVLVHRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCU1pYUjFjbTRnZEdobElHMWhlQ0J2WmlCelpYWmxjbUZzSUdSaGRHVWdkR2x0WlhOY2JpQWdJQ29nUUhCaGNtRnRJSHN1TGk1RVlYUmxWR2x0WlgwZ1pHRjBaVlJwYldWeklDMGdkR2hsSUVSaGRHVlVhVzFsY3lCbWNtOXRJSGRvYVdOb0lIUnZJR05vYjI5elpTQjBhR1VnYldGNGFXMTFiVnh1SUNBZ0tpQkFjbVYwZFhKdUlIdEVZWFJsVkdsdFpYMGdkR2hsSUcxaGVDQkVZWFJsVkdsdFpTd2diM0lnZFc1a1pXWnBibVZrSUdsbUlHTmhiR3hsWkNCM2FYUm9JRzV2SUdGeVozVnRaVzUwWEc0Z0lDQXFMMXh1SUNCemRHRjBhV01nYldGNEtDNHVMbVJoZEdWVWFXMWxjeWtnZTF4dUlDQWdJR2xtSUNnaFpHRjBaVlJwYldWekxtVjJaWEo1S0VSaGRHVlVhVzFsTG1selJHRjBaVlJwYldVcEtTQjdYRzRnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dTVzUyWVd4cFpFRnlaM1Z0Wlc1MFJYSnliM0lvWENKdFlYZ2djbVZ4ZFdseVpYTWdZV3hzSUdGeVozVnRaVzUwY3lCaVpTQkVZWFJsVkdsdFpYTmNJaWs3WEc0Z0lDQWdmVnh1SUNBZ0lISmxkSFZ5YmlCaVpYTjBRbmtvWkdGMFpWUnBiV1Z6TENBb2FTa2dQVDRnYVM1MllXeDFaVTltS0Nrc0lFMWhkR2d1YldGNEtUdGNiaUFnZlZ4dVhHNGdJQzh2SUUxSlUwTmNibHh1SUNBdktpcGNiaUFnSUNvZ1JYaHdiR0ZwYmlCb2IzY2dZU0J6ZEhKcGJtY2dkMjkxYkdRZ1ltVWdjR0Z5YzJWa0lHSjVJR1p5YjIxR2IzSnRZWFFvS1Z4dUlDQWdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdkR1Y0ZENBdElIUm9aU0J6ZEhKcGJtY2dkRzhnY0dGeWMyVmNiaUFnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUdadGRDQXRJSFJvWlNCbWIzSnRZWFFnZEdobElITjBjbWx1WnlCcGN5QmxlSEJsWTNSbFpDQjBieUJpWlNCcGJpQW9jMlZsSUdSbGMyTnlhWEIwYVc5dUtWeHVJQ0FnS2lCQWNHRnlZVzBnZTA5aWFtVmpkSDBnYjNCMGFXOXVjeUF0SUc5d2RHbHZibk1nZEdGclpXNGdZbmtnWm5KdmJVWnZjbTFoZENncFhHNGdJQ0FxSUVCeVpYUjFjbTRnZTA5aWFtVmpkSDFjYmlBZ0lDb3ZYRzRnSUhOMFlYUnBZeUJtY205dFJtOXliV0YwUlhod2JHRnBiaWgwWlhoMExDQm1iWFFzSUc5d2RHbHZibk1nUFNCN2ZTa2dlMXh1SUNBZ0lHTnZibk4wSUhzZ2JHOWpZV3hsSUQwZ2JuVnNiQ3dnYm5WdFltVnlhVzVuVTNsemRHVnRJRDBnYm5Wc2JDQjlJRDBnYjNCMGFXOXVjeXhjYmlBZ0lDQWdJR3h2WTJGc1pWUnZWWE5sSUQwZ1RHOWpZV3hsTG1aeWIyMVBjSFJ6S0h0Y2JpQWdJQ0FnSUNBZ2JHOWpZV3hsTEZ4dUlDQWdJQ0FnSUNCdWRXMWlaWEpwYm1kVGVYTjBaVzBzWEc0Z0lDQWdJQ0FnSUdSbFptRjFiSFJVYjBWT09pQjBjblZsTEZ4dUlDQWdJQ0FnZlNrN1hHNGdJQ0FnY21WMGRYSnVJR1Y0Y0d4aGFXNUdjbTl0Vkc5clpXNXpLR3h2WTJGc1pWUnZWWE5sTENCMFpYaDBMQ0JtYlhRcE8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRUJrWlhCeVpXTmhkR1ZrSUhWelpTQm1jbTl0Um05eWJXRjBSWGh3YkdGcGJpQnBibk4wWldGa1hHNGdJQ0FxTDF4dUlDQnpkR0YwYVdNZ1puSnZiVk4wY21sdVowVjRjR3hoYVc0b2RHVjRkQ3dnWm0xMExDQnZjSFJwYjI1eklEMGdlMzBwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdSR0YwWlZScGJXVXVabkp2YlVadmNtMWhkRVY0Y0d4aGFXNG9kR1Y0ZEN3Z1ptMTBMQ0J2Y0hScGIyNXpLVHRjYmlBZ2ZWeHVYRzRnSUM4dklFWlBVazFCVkNCUVVrVlRSVlJUWEc1Y2JpQWdMeW9xWEc0Z0lDQXFJSHRBYkdsdWF5QkVZWFJsVkdsdFpTTjBiMHh2WTJGc1pWTjBjbWx1WjMwZ1ptOXliV0YwSUd4cGEyVWdNVEF2TVRRdk1UazRNMXh1SUNBZ0tpQkFkSGx3WlNCN1QySnFaV04wZlZ4dUlDQWdLaTljYmlBZ2MzUmhkR2xqSUdkbGRDQkVRVlJGWDFOSVQxSlVLQ2tnZTF4dUlDQWdJSEpsZEhWeWJpQkdiM0p0WVhSekxrUkJWRVZmVTBoUFVsUTdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nZTBCc2FXNXJJRVJoZEdWVWFXMWxJM1J2VEc5allXeGxVM1J5YVc1bmZTQm1iM0p0WVhRZ2JHbHJaU0FuVDJOMElERTBMQ0F4T1RnekoxeHVJQ0FnS2lCQWRIbHdaU0I3VDJKcVpXTjBmVnh1SUNBZ0tpOWNiaUFnYzNSaGRHbGpJR2RsZENCRVFWUkZYMDFGUkNncElIdGNiaUFnSUNCeVpYUjFjbTRnUm05eWJXRjBjeTVFUVZSRlgwMUZSRHRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCN1FHeHBibXNnUkdGMFpWUnBiV1VqZEc5TWIyTmhiR1ZUZEhKcGJtZDlJR1p2Y20xaGRDQnNhV3RsSUNkR2Nta3NJRTlqZENBeE5Dd2dNVGs0TXlkY2JpQWdJQ29nUUhSNWNHVWdlMDlpYW1WamRIMWNiaUFnSUNvdlhHNGdJSE4wWVhScFl5Qm5aWFFnUkVGVVJWOU5SVVJmVjBsVVNGOVhSVVZMUkVGWktDa2dlMXh1SUNBZ0lISmxkSFZ5YmlCR2IzSnRZWFJ6TGtSQlZFVmZUVVZFWDFkSlZFaGZWMFZGUzBSQldUdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUI3UUd4cGJtc2dSR0YwWlZScGJXVWpkRzlNYjJOaGJHVlRkSEpwYm1kOUlHWnZjbTFoZENCc2FXdGxJQ2RQWTNSdlltVnlJREUwTENBeE9UZ3pKMXh1SUNBZ0tpQkFkSGx3WlNCN1QySnFaV04wZlZ4dUlDQWdLaTljYmlBZ2MzUmhkR2xqSUdkbGRDQkVRVlJGWDBaVlRFd29LU0I3WEc0Z0lDQWdjbVYwZFhKdUlFWnZjbTFoZEhNdVJFRlVSVjlHVlV4TU8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJSHRBYkdsdWF5QkVZWFJsVkdsdFpTTjBiMHh2WTJGc1pWTjBjbWx1WjMwZ1ptOXliV0YwSUd4cGEyVWdKMVIxWlhOa1lYa3NJRTlqZEc5aVpYSWdNVFFzSURFNU9ETW5YRzRnSUNBcUlFQjBlWEJsSUh0UFltcGxZM1I5WEc0Z0lDQXFMMXh1SUNCemRHRjBhV01nWjJWMElFUkJWRVZmU0ZWSFJTZ3BJSHRjYmlBZ0lDQnlaWFIxY200Z1JtOXliV0YwY3k1RVFWUkZYMGhWUjBVN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dlMEJzYVc1cklFUmhkR1ZVYVcxbEkzUnZURzlqWVd4bFUzUnlhVzVuZlNCbWIzSnRZWFFnYkdsclpTQW5NRGs2TXpBZ1FVMG5MaUJQYm14NUlERXlMV2h2ZFhJZ2FXWWdkR2hsSUd4dlkyRnNaU0JwY3k1Y2JpQWdJQ29nUUhSNWNHVWdlMDlpYW1WamRIMWNiaUFnSUNvdlhHNGdJSE4wWVhScFl5Qm5aWFFnVkVsTlJWOVRTVTFRVEVVb0tTQjdYRzRnSUNBZ2NtVjBkWEp1SUVadmNtMWhkSE11VkVsTlJWOVRTVTFRVEVVN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dlMEJzYVc1cklFUmhkR1ZVYVcxbEkzUnZURzlqWVd4bFUzUnlhVzVuZlNCbWIzSnRZWFFnYkdsclpTQW5NRGs2TXpBNk1qTWdRVTBuTGlCUGJteDVJREV5TFdodmRYSWdhV1lnZEdobElHeHZZMkZzWlNCcGN5NWNiaUFnSUNvZ1FIUjVjR1VnZTA5aWFtVmpkSDFjYmlBZ0lDb3ZYRzRnSUhOMFlYUnBZeUJuWlhRZ1ZFbE5SVjlYU1ZSSVgxTkZRMDlPUkZNb0tTQjdYRzRnSUNBZ2NtVjBkWEp1SUVadmNtMWhkSE11VkVsTlJWOVhTVlJJWDFORlEwOU9SRk03WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ2UwQnNhVzVySUVSaGRHVlVhVzFsSTNSdlRHOWpZV3hsVTNSeWFXNW5mU0JtYjNKdFlYUWdiR2xyWlNBbk1EazZNekE2TWpNZ1FVMGdSVVJVSnk0Z1QyNXNlU0F4TWkxb2IzVnlJR2xtSUhSb1pTQnNiMk5oYkdVZ2FYTXVYRzRnSUNBcUlFQjBlWEJsSUh0UFltcGxZM1I5WEc0Z0lDQXFMMXh1SUNCemRHRjBhV01nWjJWMElGUkpUVVZmVjBsVVNGOVRTRTlTVkY5UFJrWlRSVlFvS1NCN1hHNGdJQ0FnY21WMGRYSnVJRVp2Y20xaGRITXVWRWxOUlY5WFNWUklYMU5JVDFKVVgwOUdSbE5GVkR0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQjdRR3hwYm1zZ1JHRjBaVlJwYldVamRHOU1iMk5oYkdWVGRISnBibWQ5SUdadmNtMWhkQ0JzYVd0bElDY3dPVG96TURveU15QkJUU0JGWVhOMFpYSnVJRVJoZVd4cFoyaDBJRlJwYldVbkxpQlBibXg1SURFeUxXaHZkWElnYVdZZ2RHaGxJR3h2WTJGc1pTQnBjeTVjYmlBZ0lDb2dRSFI1Y0dVZ2UwOWlhbVZqZEgxY2JpQWdJQ292WEc0Z0lITjBZWFJwWXlCblpYUWdWRWxOUlY5WFNWUklYMHhQVGtkZlQwWkdVMFZVS0NrZ2UxeHVJQ0FnSUhKbGRIVnliaUJHYjNKdFlYUnpMbFJKVFVWZlYwbFVTRjlNVDA1SFgwOUdSbE5GVkR0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQjdRR3hwYm1zZ1JHRjBaVlJwYldVamRHOU1iMk5oYkdWVGRISnBibWQ5SUdadmNtMWhkQ0JzYVd0bElDY3dPVG96TUNjc0lHRnNkMkY1Y3lBeU5DMW9iM1Z5TGx4dUlDQWdLaUJBZEhsd1pTQjdUMkpxWldOMGZWeHVJQ0FnS2k5Y2JpQWdjM1JoZEdsaklHZGxkQ0JVU1UxRlh6STBYMU5KVFZCTVJTZ3BJSHRjYmlBZ0lDQnlaWFIxY200Z1JtOXliV0YwY3k1VVNVMUZYekkwWDFOSlRWQk1SVHRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCN1FHeHBibXNnUkdGMFpWUnBiV1VqZEc5TWIyTmhiR1ZUZEhKcGJtZDlJR1p2Y20xaGRDQnNhV3RsSUNjd09Ub3pNRG95TXljc0lHRnNkMkY1Y3lBeU5DMW9iM1Z5TGx4dUlDQWdLaUJBZEhsd1pTQjdUMkpxWldOMGZWeHVJQ0FnS2k5Y2JpQWdjM1JoZEdsaklHZGxkQ0JVU1UxRlh6STBYMWRKVkVoZlUwVkRUMDVFVXlncElIdGNiaUFnSUNCeVpYUjFjbTRnUm05eWJXRjBjeTVVU1UxRlh6STBYMWRKVkVoZlUwVkRUMDVFVXp0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQjdRR3hwYm1zZ1JHRjBaVlJwYldVamRHOU1iMk5oYkdWVGRISnBibWQ5SUdadmNtMWhkQ0JzYVd0bElDY3dPVG96TURveU15QkZSRlFuTENCaGJIZGhlWE1nTWpRdGFHOTFjaTVjYmlBZ0lDb2dRSFI1Y0dVZ2UwOWlhbVZqZEgxY2JpQWdJQ292WEc0Z0lITjBZWFJwWXlCblpYUWdWRWxOUlY4eU5GOVhTVlJJWDFOSVQxSlVYMDlHUmxORlZDZ3BJSHRjYmlBZ0lDQnlaWFIxY200Z1JtOXliV0YwY3k1VVNVMUZYekkwWDFkSlZFaGZVMGhQVWxSZlQwWkdVMFZVTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlIdEFiR2x1YXlCRVlYUmxWR2x0WlNOMGIweHZZMkZzWlZOMGNtbHVaMzBnWm05eWJXRjBJR3hwYTJVZ0p6QTVPak13T2pJeklFVmhjM1JsY200Z1JHRjViR2xuYUhRZ1ZHbHRaU2NzSUdGc2QyRjVjeUF5TkMxb2IzVnlMbHh1SUNBZ0tpQkFkSGx3WlNCN1QySnFaV04wZlZ4dUlDQWdLaTljYmlBZ2MzUmhkR2xqSUdkbGRDQlVTVTFGWHpJMFgxZEpWRWhmVEU5T1IxOVBSa1pUUlZRb0tTQjdYRzRnSUNBZ2NtVjBkWEp1SUVadmNtMWhkSE11VkVsTlJWOHlORjlYU1ZSSVgweFBUa2RmVDBaR1UwVlVPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUh0QWJHbHVheUJFWVhSbFZHbHRaU04wYjB4dlkyRnNaVk4wY21sdVozMGdabTl5YldGMElHeHBhMlVnSnpFd0x6RTBMekU1T0RNc0lEazZNekFnUVUwbkxpQlBibXg1SURFeUxXaHZkWElnYVdZZ2RHaGxJR3h2WTJGc1pTQnBjeTVjYmlBZ0lDb2dRSFI1Y0dVZ2UwOWlhbVZqZEgxY2JpQWdJQ292WEc0Z0lITjBZWFJwWXlCblpYUWdSRUZVUlZSSlRVVmZVMGhQVWxRb0tTQjdYRzRnSUNBZ2NtVjBkWEp1SUVadmNtMWhkSE11UkVGVVJWUkpUVVZmVTBoUFVsUTdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nZTBCc2FXNXJJRVJoZEdWVWFXMWxJM1J2VEc5allXeGxVM1J5YVc1bmZTQm1iM0p0WVhRZ2JHbHJaU0FuTVRBdk1UUXZNVGs0TXl3Z09Ub3pNRG96TXlCQlRTY3VJRTl1YkhrZ01USXRhRzkxY2lCcFppQjBhR1VnYkc5allXeGxJR2x6TGx4dUlDQWdLaUJBZEhsd1pTQjdUMkpxWldOMGZWeHVJQ0FnS2k5Y2JpQWdjM1JoZEdsaklHZGxkQ0JFUVZSRlZFbE5SVjlUU0U5U1ZGOVhTVlJJWDFORlEwOU9SRk1vS1NCN1hHNGdJQ0FnY21WMGRYSnVJRVp2Y20xaGRITXVSRUZVUlZSSlRVVmZVMGhQVWxSZlYwbFVTRjlUUlVOUFRrUlRPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUh0QWJHbHVheUJFWVhSbFZHbHRaU04wYjB4dlkyRnNaVk4wY21sdVozMGdabTl5YldGMElHeHBhMlVnSjA5amRDQXhOQ3dnTVRrNE15d2dPVG96TUNCQlRTY3VJRTl1YkhrZ01USXRhRzkxY2lCcFppQjBhR1VnYkc5allXeGxJR2x6TGx4dUlDQWdLaUJBZEhsd1pTQjdUMkpxWldOMGZWeHVJQ0FnS2k5Y2JpQWdjM1JoZEdsaklHZGxkQ0JFUVZSRlZFbE5SVjlOUlVRb0tTQjdYRzRnSUNBZ2NtVjBkWEp1SUVadmNtMWhkSE11UkVGVVJWUkpUVVZmVFVWRU8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJSHRBYkdsdWF5QkVZWFJsVkdsdFpTTjBiMHh2WTJGc1pWTjBjbWx1WjMwZ1ptOXliV0YwSUd4cGEyVWdKMDlqZENBeE5Dd2dNVGs0TXl3Z09Ub3pNRG96TXlCQlRTY3VJRTl1YkhrZ01USXRhRzkxY2lCcFppQjBhR1VnYkc5allXeGxJR2x6TGx4dUlDQWdLaUJBZEhsd1pTQjdUMkpxWldOMGZWeHVJQ0FnS2k5Y2JpQWdjM1JoZEdsaklHZGxkQ0JFUVZSRlZFbE5SVjlOUlVSZlYwbFVTRjlUUlVOUFRrUlRLQ2tnZTF4dUlDQWdJSEpsZEhWeWJpQkdiM0p0WVhSekxrUkJWRVZVU1UxRlgwMUZSRjlYU1ZSSVgxTkZRMDlPUkZNN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dlMEJzYVc1cklFUmhkR1ZVYVcxbEkzUnZURzlqWVd4bFUzUnlhVzVuZlNCbWIzSnRZWFFnYkdsclpTQW5SbkpwTENBeE5DQlBZM1FnTVRrNE15d2dPVG96TUNCQlRTY3VJRTl1YkhrZ01USXRhRzkxY2lCcFppQjBhR1VnYkc5allXeGxJR2x6TGx4dUlDQWdLaUJBZEhsd1pTQjdUMkpxWldOMGZWeHVJQ0FnS2k5Y2JpQWdjM1JoZEdsaklHZGxkQ0JFUVZSRlZFbE5SVjlOUlVSZlYwbFVTRjlYUlVWTFJFRlpLQ2tnZTF4dUlDQWdJSEpsZEhWeWJpQkdiM0p0WVhSekxrUkJWRVZVU1UxRlgwMUZSRjlYU1ZSSVgxZEZSVXRFUVZrN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dlMEJzYVc1cklFUmhkR1ZVYVcxbEkzUnZURzlqWVd4bFUzUnlhVzVuZlNCbWIzSnRZWFFnYkdsclpTQW5UMk4wYjJKbGNpQXhOQ3dnTVRrNE15d2dPVG96TUNCQlRTQkZSRlFuTGlCUGJteDVJREV5TFdodmRYSWdhV1lnZEdobElHeHZZMkZzWlNCcGN5NWNiaUFnSUNvZ1FIUjVjR1VnZTA5aWFtVmpkSDFjYmlBZ0lDb3ZYRzRnSUhOMFlYUnBZeUJuWlhRZ1JFRlVSVlJKVFVWZlJsVk1UQ2dwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdSbTl5YldGMGN5NUVRVlJGVkVsTlJWOUdWVXhNTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlIdEFiR2x1YXlCRVlYUmxWR2x0WlNOMGIweHZZMkZzWlZOMGNtbHVaMzBnWm05eWJXRjBJR3hwYTJVZ0owOWpkRzlpWlhJZ01UUXNJREU1T0RNc0lEazZNekE2TXpNZ1FVMGdSVVJVSnk0Z1QyNXNlU0F4TWkxb2IzVnlJR2xtSUhSb1pTQnNiMk5oYkdVZ2FYTXVYRzRnSUNBcUlFQjBlWEJsSUh0UFltcGxZM1I5WEc0Z0lDQXFMMXh1SUNCemRHRjBhV01nWjJWMElFUkJWRVZVU1UxRlgwWlZURXhmVjBsVVNGOVRSVU5QVGtSVEtDa2dlMXh1SUNBZ0lISmxkSFZ5YmlCR2IzSnRZWFJ6TGtSQlZFVlVTVTFGWDBaVlRFeGZWMGxVU0Y5VFJVTlBUa1JUTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlIdEFiR2x1YXlCRVlYUmxWR2x0WlNOMGIweHZZMkZzWlZOMGNtbHVaMzBnWm05eWJXRjBJR3hwYTJVZ0owWnlhV1JoZVN3Z1QyTjBiMkpsY2lBeE5Dd2dNVGs0TXl3Z09Ub3pNQ0JCVFNCRllYTjBaWEp1SUVSaGVXeHBaMmgwSUZScGJXVW5MaUJQYm14NUlERXlMV2h2ZFhJZ2FXWWdkR2hsSUd4dlkyRnNaU0JwY3k1Y2JpQWdJQ29nUUhSNWNHVWdlMDlpYW1WamRIMWNiaUFnSUNvdlhHNGdJSE4wWVhScFl5Qm5aWFFnUkVGVVJWUkpUVVZmU0ZWSFJTZ3BJSHRjYmlBZ0lDQnlaWFIxY200Z1JtOXliV0YwY3k1RVFWUkZWRWxOUlY5SVZVZEZPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUh0QWJHbHVheUJFWVhSbFZHbHRaU04wYjB4dlkyRnNaVk4wY21sdVozMGdabTl5YldGMElHeHBhMlVnSjBaeWFXUmhlU3dnVDJOMGIySmxjaUF4TkN3Z01UazRNeXdnT1Rvek1Eb3pNeUJCVFNCRllYTjBaWEp1SUVSaGVXeHBaMmgwSUZScGJXVW5MaUJQYm14NUlERXlMV2h2ZFhJZ2FXWWdkR2hsSUd4dlkyRnNaU0JwY3k1Y2JpQWdJQ29nUUhSNWNHVWdlMDlpYW1WamRIMWNiaUFnSUNvdlhHNGdJSE4wWVhScFl5Qm5aWFFnUkVGVVJWUkpUVVZmU0ZWSFJWOVhTVlJJWDFORlEwOU9SRk1vS1NCN1hHNGdJQ0FnY21WMGRYSnVJRVp2Y20xaGRITXVSRUZVUlZSSlRVVmZTRlZIUlY5WFNWUklYMU5GUTA5T1JGTTdYRzRnSUgxY2JuMWNibHh1THlvcVhHNGdLaUJBY0hKcGRtRjBaVnh1SUNvdlhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1puSnBaVzVrYkhsRVlYUmxWR2x0WlNoa1lYUmxWR2x0WldsemFDa2dlMXh1SUNCcFppQW9SR0YwWlZScGJXVXVhWE5FWVhSbFZHbHRaU2hrWVhSbFZHbHRaV2x6YUNrcElIdGNiaUFnSUNCeVpYUjFjbTRnWkdGMFpWUnBiV1ZwYzJnN1hHNGdJSDBnWld4elpTQnBaaUFvWkdGMFpWUnBiV1ZwYzJnZ0ppWWdaR0YwWlZScGJXVnBjMmd1ZG1Gc2RXVlBaaUFtSmlCcGMwNTFiV0psY2loa1lYUmxWR2x0WldsemFDNTJZV3gxWlU5bUtDa3BLU0I3WEc0Z0lDQWdjbVYwZFhKdUlFUmhkR1ZVYVcxbExtWnliMjFLVTBSaGRHVW9aR0YwWlZScGJXVnBjMmdwTzF4dUlDQjlJR1ZzYzJVZ2FXWWdLR1JoZEdWVWFXMWxhWE5vSUNZbUlIUjVjR1Z2WmlCa1lYUmxWR2x0WldsemFDQTlQVDBnWENKdlltcGxZM1JjSWlrZ2UxeHVJQ0FnSUhKbGRIVnliaUJFWVhSbFZHbHRaUzVtY205dFQySnFaV04wS0dSaGRHVlVhVzFsYVhOb0tUdGNiaUFnZlNCbGJITmxJSHRjYmlBZ0lDQjBhSEp2ZHlCdVpYY2dTVzUyWVd4cFpFRnlaM1Z0Wlc1MFJYSnliM0lvWEc0Z0lDQWdJQ0JnVlc1cmJtOTNiaUJrWVhSbGRHbHRaU0JoY21kMWJXVnVkRG9nSkh0a1lYUmxWR2x0WldsemFIMHNJRzltSUhSNWNHVWdKSHQwZVhCbGIyWWdaR0YwWlZScGJXVnBjMmg5WUZ4dUlDQWdJQ2s3WEc0Z0lIMWNibjFjYmlJc0lDSnBiWEJ2Y25RZ2V5QkVZWFJsVkdsdFpTd2dSSFZ5WVhScGIyNGdmU0JtY205dElGd2liSFY0YjI1Y0lqdGNibWx0Y0c5eWRDQXFJR0Z6SUZBZ1puSnZiU0JjSW5CaGNuTnBiVzF2Ymx3aU8xeHVhVzF3YjNKMElHVnRiMnBwVW1WblpYZ2dabkp2YlNCY0ltVnRiMnBwTFhKbFoyVjRYQ0k3WEc1cGJYQnZjblFnZXlCTWFXNXJJSDBnWm5KdmJTQmNJbVY0Y0hKbGMzTnBiMjR2YkdsdWExd2lPMXh1WEc0dktpb2dWR1Z6ZEMxbGJuWnBjbTl1YldWdWRDMW1jbWxsYm1Sc2VTQm1kVzVqZEdsdmJpQjNhR2xqYUNCbVpYUmphR1Z6SUhSb1pTQmpkWEp5Wlc1MElITjVjM1JsYlNCc2IyTmhiR1V1SUNvdlhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1kzVnljbVZ1ZEV4dlkyRnNaU2dwT2lCemRISnBibWNnZTF4dUlDQWdJR2xtSUNoMGVYQmxiMllnZDJsdVpHOTNJRDA5UFNCY0luVnVaR1ZtYVc1bFpGd2lLU0J5WlhSMWNtNGdYQ0psYmkxVlUxd2lPMXh1SUNBZ0lISmxkSFZ5YmlCM2FXNWtiM2N1Ym1GMmFXZGhkRzl5TG14aGJtZDFZV2RsTzF4dWZWeHVYRzR2THlCRVlYUmxMMVJwYldVZ1VtVnVaR1Z5YVc1blhHNWNiaThxS2lCT2IzSnRZV3hwZW1VZ1lTQmtkWEpoZEdsdmJpQjBieUJoYkd3Z2IyWWdkR2hsSUhCeWIzQmxjaUIxYm1sMGN5NGdLaTljYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJ1YjNKdFlXeHBlbVZFZFhKaGRHbHZiaWhrZFhJNklFUjFjbUYwYVc5dUtTQjdYRzRnSUNBZ2FXWWdLR1IxY2lBOVBUMGdkVzVrWldacGJtVmtJSHg4SUdSMWNpQTlQVDBnYm5Wc2JDa2djbVYwZFhKdUlHUjFjanRjYmx4dUlDQWdJSEpsZEhWeWJpQmtkWEl1YzJocFpuUlVieWhjSW5sbFlYSnpYQ0lzSUZ3aWJXOXVkR2h6WENJc0lGd2lkMlZsYTNOY0lpd2dYQ0prWVhselhDSXNJRndpYUc5MWNuTmNJaXdnWENKdGFXNTFkR1Z6WENJc0lGd2ljMlZqYjI1a2Mxd2lMQ0JjSW0xcGJHeHBjMlZqYjI1a2Mxd2lLUzV1YjNKdFlXeHBlbVVvS1R0Y2JuMWNibHh1THlvcUlGTjBjbWx3SUhSb1pTQjBhVzFsSUdOdmJYQnZibVZ1ZEhNZ2IyWWdZU0JrWVhSbElIUnBiV1VnYjJKcVpXTjBMaUFxTDF4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUhOMGNtbHdWR2x0WlNoa2REb2dSR0YwWlZScGJXVXBPaUJFWVhSbFZHbHRaU0I3WEc0Z0lDQWdhV1lnS0dSMElEMDlQU0J1ZFd4c0lIeDhJR1IwSUQwOVBTQjFibVJsWm1sdVpXUXBJSEpsZEhWeWJpQmtkRHRjYmx4dUlDQWdJSEpsZEhWeWJpQkVZWFJsVkdsdFpTNW1jbTl0VDJKcVpXTjBLSHRjYmlBZ0lDQWdJQ0FnZVdWaGNqb2daSFF1ZVdWaGNpeGNiaUFnSUNBZ0lDQWdiVzl1ZEdnNklHUjBMbTF2Ym5Sb0xGeHVJQ0FnSUNBZ0lDQmtZWGs2SUdSMExtUmhlU3hjYmlBZ0lDQjlLVHRjYm4xY2JseHVMeW9xSUZSeWVTQjBieUJsZUhSeVlXTjBJR0VnV1ZsWldVMU5SRVFnWkdGMFpTQm1jbTl0SUdFZ2MzUnlhVzVuTGlBcUwxeHVaWGh3YjNKMElHWjFibU4wYVc5dUlHVjRkSEpoWTNSRVlYUmxLSE4wY2pvZ2MzUnlhVzVuS1RvZ1JHRjBaVlJwYldVZ2ZDQjFibVJsWm1sdVpXUWdlMXh1SUNBZ0lHeGxkQ0JrWVhSbFRXRjBZMmdnUFNBdktGeGNaSHMwZlNrdEtGeGNaSHN5ZlNrdEtGeGNaSHN5ZlNrdkxtVjRaV01vYzNSeUtUdGNiaUFnSUNCcFppQW9JV1JoZEdWTllYUmphQ2tnWkdGMFpVMWhkR05vSUQwZ0x5aGNYR1I3TkgwcEtGeGNaSHN5ZlNrb1hGeGtleko5S1M4dVpYaGxZeWh6ZEhJcE8xeHVJQ0FnSUdsbUlDaGtZWFJsVFdGMFkyZ3BJSHRjYmlBZ0lDQWdJQ0FnYkdWMElIbGxZWElnUFNCT2RXMWlaWEl1Y0dGeWMyVkpiblFvWkdGMFpVMWhkR05vV3pGZEtUdGNiaUFnSUNBZ0lDQWdiR1YwSUcxdmJuUm9JRDBnVG5WdFltVnlMbkJoY25ObFNXNTBLR1JoZEdWTllYUmphRnN5WFNrN1hHNGdJQ0FnSUNBZ0lHeGxkQ0JrWVhrZ1BTQk9kVzFpWlhJdWNHRnljMlZKYm5Rb1pHRjBaVTFoZEdOb1d6TmRLVHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJRVJoZEdWVWFXMWxMbVp5YjIxUFltcGxZM1FvZXlCNVpXRnlMQ0J0YjI1MGFDd2daR0Y1SUgwcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUhKbGRIVnliaUIxYm1SbFptbHVaV1E3WEc1OVhHNWNiaThxS2lCU1pXNWtaWElnWVNCRVlYUmxWR2x0WlNCcGJpQmhJRzFwYm1sdFlXd2dabTl5YldGMElIUnZJSE5oZG1VZ2MzQmhZMlV1SUNvdlhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2NtVnVaR1Z5VFdsdWFXMWhiRVJoZEdVb2RHbHRaVG9nUkdGMFpWUnBiV1VzSUdSaGRHVkdiM0p0WVhRNklITjBjbWx1Wnl3Z1pHRjBaVlJwYldWR2IzSnRZWFE2SUhOMGNtbHVaeXdnYkc5allXeGxQem9nYzNSeWFXNW5LVG9nYzNSeWFXNW5JSHRjYmlBZ0lDQXZMeUJKWmlCMGFHVnlaU0JwY3lCdWJ5QnlaV3hsZG1GdWRDQjBhVzFsSUhOd1pXTnBabWxsWkN3Z1ptRnNiQ0JpWVdOcklIUnZJR3AxYzNRZ2NtVnVaR1Z5YVc1bklIUm9aU0JrWVhSbExseHVJQ0FnSUdsbUlDaDBhVzFsTG5ObFkyOXVaQ0E5UFNBd0lDWW1JSFJwYldVdWJXbHVkWFJsSUQwOUlEQWdKaVlnZEdsdFpTNW9iM1Z5SUQwOUlEQXBJSHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJSFJwYldVdWRHOU1iMk5oYkNncExuUnZSbTl5YldGMEtHUmhkR1ZHYjNKdFlYUXNJSHNnYkc5allXeGxJSDBwTzF4dUlDQWdJSDFjYmx4dUlDQWdJSEpsZEhWeWJpQjBhVzFsTG5SdlRHOWpZV3dvS1M1MGIwWnZjbTFoZENoa1lYUmxWR2x0WlVadmNtMWhkQ3dnZXlCc2IyTmhiR1VnZlNrN1hHNTlYRzVjYmk4cUtpQlNaVzVrWlhJZ1lTQmtkWEpoZEdsdmJpQnBiaUJoSUcxcGJtbHRZV3dnWm05eWJXRjBJSFJ2SUhOaGRtVWdjM0JoWTJVdUlDb3ZYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdjbVZ1WkdWeVRXbHVhVzFoYkVSMWNtRjBhVzl1S0dSMWNqb2dSSFZ5WVhScGIyNHBPaUJ6ZEhKcGJtY2dlMXh1SUNBZ0lHUjFjaUE5SUc1dmNtMWhiR2w2WlVSMWNtRjBhVzl1S0dSMWNpazdYRzVjYmlBZ0lDQXZMeUJVVDBSUE9pQk1kWGh2YmlCa2IyVnpJRzV2ZENCb1lYWmxJRzExYkhScExXeHBibWQxWVd3dmJHOWpZV3hsTFdGM1lYSmxJR1IxY21GMGFXOXVJSEpsYm1SbGNtbHVaeTVjYmlBZ0lDQnNaWFFnY21WemRXeDBJRDBnWENKY0lqdGNiaUFnSUNCcFppQW9aSFZ5TG5sbFlYSnpLU0J5WlhOMWJIUWdLejBnWUNSN1pIVnlMbmxsWVhKemZTQjVaV0Z5Y3l3Z1lEdGNiaUFnSUNCcFppQW9aSFZ5TG0xdmJuUm9jeWtnY21WemRXeDBJQ3M5SUdBa2UyUjFjaTV0YjI1MGFITjlJRzF2Ym5Sb2N5d2dZRHRjYmlBZ0lDQnBaaUFvWkhWeUxuZGxaV3R6S1NCeVpYTjFiSFFnS3owZ1lDUjdaSFZ5TG5kbFpXdHpmU0IzWldWcmN5d2dZRHRjYmlBZ0lDQnBaaUFvWkhWeUxtUmhlWE1wSUhKbGMzVnNkQ0FyUFNCZ0pIdGtkWEl1WkdGNWMzMGdaR0Y1Y3l3Z1lEdGNiaUFnSUNCcFppQW9aSFZ5TG1odmRYSnpLU0J5WlhOMWJIUWdLejBnWUNSN1pIVnlMbWh2ZFhKemZTQm9iM1Z5Y3l3Z1lEdGNiaUFnSUNCcFppQW9aSFZ5TG0xcGJuVjBaWE1wSUhKbGMzVnNkQ0FyUFNCZ0pIdGtkWEl1YldsdWRYUmxjMzBnYldsdWRYUmxjeXdnWUR0Y2JpQWdJQ0JwWmlBb1pIVnlMbk5sWTI5dVpITXBJSEpsYzNWc2RDQXJQU0JnSkh0TllYUm9Mbkp2ZFc1a0tHUjFjaTV6WldOdmJtUnpLWDBnYzJWamIyNWtjeXdnWUR0Y2JpQWdJQ0JwWmlBb1pIVnlMbTFwYkd4cGMyVmpiMjVrY3lrZ2NtVnpkV3gwSUNzOUlHQWtlMDFoZEdndWNtOTFibVFvWkhWeUxtMXBiR3hwYzJWamIyNWtjeWw5SUcxekxDQmdPMXh1WEc0Z0lDQWdhV1lnS0hKbGMzVnNkQzVsYm1SelYybDBhQ2hjSWl3Z1hDSXBLU0J5WlhOMWJIUWdQU0J5WlhOMWJIUXVjM1ZpYzNSeWFXNW5LREFzSUhKbGMzVnNkQzVzWlc1bmRHZ2dMU0F5S1R0Y2JpQWdJQ0J5WlhSMWNtNGdjbVZ6ZFd4ME8xeHVmVnh1WEc0dkx5QlFZWFJvSUhWMGFXeHBkR2xsY3k1Y2JseHVMeW9xSUVkbGRDQjBhR1VnWm05c1pHVnlJR052Ym5SaGFXNXBibWNnZEdobElHZHBkbVZ1SUhCaGRHZ2dLR2t1WlM0c0lHeHBhMlVnWTI5dGNIVjBhVzVuSUNkd1lYUm9MeTR1SnlrdUlDb3ZYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdaMlYwVUdGeVpXNTBSbTlzWkdWeUtIQmhkR2c2SUhOMGNtbHVaeWs2SUhOMGNtbHVaeUI3WEc0Z0lDQWdjbVYwZFhKdUlIQmhkR2d1YzNCc2FYUW9YQ0l2WENJcExuTnNhV05sS0RBc0lDMHhLUzVxYjJsdUtGd2lMMXdpS1R0Y2JuMWNibHh1THlvcUlFZGxkQ0IwYUdVZ1ptbHNaU0J1WVcxbElHWnZjaUIwYUdVZ1ptbHNaU0J5WldabGNtVnVZMlZrSUdsdUlIUm9aU0JuYVhabGJpQndZWFJvTENCaWVTQnpkSEpwY0hCcGJtY2dkR2hsSUhCaGNtVnVkQ0JtYjJ4a1pYSnpMaUFxTDF4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdkbGRFWnBiR1ZPWVcxbEtIQmhkR2c2SUhOMGNtbHVaeWs2SUhOMGNtbHVaeUI3WEc0Z0lDQWdjbVYwZFhKdUlIQmhkR2d1YVc1amJIVmtaWE1vWENJdlhDSXBJRDhnY0dGMGFDNXpkV0p6ZEhKcGJtY29jR0YwYUM1c1lYTjBTVzVrWlhoUFppaGNJaTljSWlrZ0t5QXhLU0E2SUhCaGRHZzdYRzU5WEc1Y2JpOHFLaUJIWlhRZ2RHaGxJRndpZEdsMGJHVmNJaUJtYjNJZ1lTQm1hV3hsTENCaWVTQnpkSEpwY0hCcGJtY2diM1JvWlhJZ2NHRnlkSE1nYjJZZ2RHaGxJSEJoZEdnZ1lYTWdkMlZzYkNCaGN5QjBhR1VnWlhoMFpXNXphVzl1TGlBcUwxeHVaWGh3YjNKMElHWjFibU4wYVc5dUlHZGxkRVpwYkdWVWFYUnNaU2h3WVhSb09pQnpkSEpwYm1jcE9pQnpkSEpwYm1jZ2UxeHVJQ0FnSUdsbUlDaHdZWFJvTG1sdVkyeDFaR1Z6S0Z3aUwxd2lLU2tnY0dGMGFDQTlJSEJoZEdndWMzVmljM1J5YVc1bktIQmhkR2d1YkdGemRFbHVaR1Y0VDJZb1hDSXZYQ0lwSUNzZ01TazdYRzRnSUNBZ2FXWWdLSEJoZEdndVpXNWtjMWRwZEdnb1hDSXViV1JjSWlrcElIQmhkR2dnUFNCd1lYUm9Mbk4xWW5OMGNtbHVaeWd3TENCd1lYUm9MbXhsYm1kMGFDQXRJRE1wTzF4dUlDQWdJSEpsZEhWeWJpQndZWFJvTzF4dWZWeHVYRzR2S2lvZ1IyVjBJSFJvWlNCbGVIUmxibk5wYjI0Z2IyWWdZU0JtYVd4bElHWnliMjBnZEdobElHWnBiR1VnY0dGMGFDNGdLaTljYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJuWlhSRmVIUmxibk5wYjI0b2NHRjBhRG9nYzNSeWFXNW5LVG9nYzNSeWFXNW5JSHRjYmlBZ0lDQnBaaUFvSVhCaGRHZ3VhVzVqYkhWa1pYTW9YQ0l1WENJcEtTQnlaWFIxY200Z1hDSmNJanRjYmlBZ0lDQnlaWFIxY200Z2NHRjBhQzV6ZFdKemRISnBibWNvY0dGMGFDNXNZWE4wU1c1a1pYaFBaaWhjSWk1Y0lpa2dLeUF4S1R0Y2JuMWNibHh1THk4Z1ZHRm5JR1Y0ZEhKaFkzUnBiMjR1WEc1Y2JpOHFLaUJRWVhKelpTQmhiR3dnYzNWaWRHRm5jeUJ2ZFhRZ2IyWWdkR2hsSUdkcGRtVnVJSFJoWnk0Z1NTNWxMaXdnSTJobGJHeHZMMmt2WVcwZ2QyOTFiR1FnZVdsbGJHUWdXeU5vWld4c2J5OXBMMkZ0TENBamFHVnNiRzh2YVN3Z0kyaGxiR3h2WFM0Z0tpOWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQmxlSFJ5WVdOMFUzVmlkR0ZuY3loMFlXZHpPaUJ6ZEhKcGJtY2dmQ0JKZEdWeVlXSnNaVHh6ZEhKcGJtYytLVG9nYzNSeWFXNW5XMTBnZTF4dUlDQWdJR3hsZENCeVpYTjFiSFFnUFNCYlhUdGNiaUFnSUNCbWIzSWdLR3hsZENCMFlXY2diMllnZEhsd1pXOW1JSFJoWjNNZ1BUMDlJRndpYzNSeWFXNW5YQ0lnUHlCYmRHRm5jMTBnT2lCMFlXZHpLU0I3WEc0Z0lDQWdJQ0FnSUhKbGMzVnNkQzV3ZFhOb0tIUmhaeWs3WEc0Z0lDQWdJQ0FnSUhkb2FXeGxJQ2gwWVdjdWFXNWpiSFZrWlhNb1hDSXZYQ0lwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0IwWVdjZ1BTQjBZV2N1YzNWaWMzUnlhVzVuS0RBc0lIUmhaeTVzWVhOMFNXNWtaWGhQWmloY0lpOWNJaWtwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdjbVZ6ZFd4MExuQjFjMmdvZEdGbktUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lIMWNibHh1SUNBZ0lISmxkSFZ5YmlCeVpYTjFiSFE3WEc1OVhHNWNiaThxS2lCVGNHeHBkQ0JsWVdOb0lHSnNiMk5ySUdGdVpDQnpaV04wYVc5dUlHeHBibXNnYVc1MGJ5QjBhR1VnYjNKcFoybHVZV3dnYkdsdWF5QmhibVFnWVNCamIzSnlaWE53YjI1a2FXNW5JR1pwYkdVZ2JHbHVheTRnS2k5Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCbGVIUnlZV04wUm1sc1pVeHBibXR6S0dWc2FXNXJjem9nVEdsdWExdGRLVG9nVEdsdWExdGRJSHRjYmlBZ0lDQmpiMjV6ZENCeVpYTjFiSFE2SUV4cGJtdGJYU0E5SUZ0ZE8xeHVJQ0FnSUdadmNpQW9ZMjl1YzNRZ2JHbHVheUJ2WmlCbGJHbHVhM01wSUh0Y2JpQWdJQ0FnSUNBZ2NtVnpkV3gwTG5CMWMyZ29iR2x1YXlrN1hHNWNiaUFnSUNBZ0lDQWdZMjl1YzNRZ1ptbHNaVXhwYm1zZ1BTQnNhVzVyTG5SdlJtbHNaU2dwTzF4dUlDQWdJQ0FnSUNCcFppQW9iR2x1YXk1MGVYQmxJQ0U5SUZ3aVptbHNaVndpSUNZbUlDRnlaWE4xYkhRdVptbHVaQ2dvWlhocGMzUnBibWNwSUQwK0lHVjRhWE4wYVc1bkxtVnhkV0ZzY3lobWFXeGxUR2x1YXlrcEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYTjFiSFF1Y0hWemFDaG1hV3hsVEdsdWF5azdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQjlYRzVjYmlBZ0lDQnlaWFIxY200Z2NtVnpkV3gwTzF4dWZWeHVYRzR2THlCVGRISnBibWNnWlhOallYQnBibWNnWVc1a0lHTmhibTl1YVdOaGJHbDZZWFJwYjI0dVhHNWNiaThxS2x4dUlDb2dSWE5qWVhCbElISmxaMlY0SUdOb1lYSmhZM1JsY25NZ2FXNGdZU0J6ZEhKcGJtY3VYRzRnS2lCVFpXVWdhSFIwY0hNNkx5OWtaWFpsYkc5d1pYSXViVzk2YVd4c1lTNXZjbWN2Wlc0dFZWTXZaRzlqY3k5WFpXSXZTbUYyWVZOamNtbHdkQzlIZFdsa1pTOVNaV2QxYkdGeVgwVjRjSEpsYzNOcGIyNXpMbHh1SUNvdlhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1pYTmpZWEJsVW1WblpYZ29jM1J5T2lCemRISnBibWNwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdjM1J5TG5KbGNHeGhZMlVvTDFzdUtpcy9YaVI3ZlNncGZGdGNYRjFjWEZ4Y1hTOW5MQ0JjSWx4Y1hGd2tKbHdpS1R0Y2JuMWNibHh1WTI5dWMzUWdTRVZCUkVWU1gwTkJUazlPU1VOQlRFbGFSVkk2SUZBdVVHRnljMlZ5UEhOMGNtbHVaejRnUFNCUUxtRnNkQ2hjYmlBZ0lDQlFMbkpsWjJWNEtHNWxkeUJTWldkRmVIQW9aVzF2YW1sU1pXZGxlQ2dwTENCY0lsd2lLU2tzWEc0Z0lDQWdVQzV5WldkbGVDZ3ZXekF0T1Z4Y2NIdE1aWFIwWlhKOVh5MWRLeTkxS1N4Y2JpQWdJQ0JRTG5kb2FYUmxjM0JoWTJVdWJXRndLQ2hmS1NBOVBpQmNJaUJjSWlrc1hHNGdJQ0FnVUM1aGJua3ViV0Z3S0NoZktTQTlQaUJjSWlCY0lpbGNiaWxjYmlBZ0lDQXViV0Z1ZVNncFhHNGdJQ0FnTG0xaGNDZ29jbVZ6ZFd4MEtTQTlQaUI3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJ5WlhOMWJIUXVhbTlwYmloY0lsd2lLUzV6Y0d4cGRDZ3ZYRnh6S3k4cExtcHZhVzRvWENJZ1hDSXBMblJ5YVcwb0tUdGNiaUFnSUNCOUtUdGNibHh1THlvcVhHNGdLaUJPYjNKdFlXeHBlbVZ6SUhSb1pTQjBaWGgwSUdsdUlHRWdhR1ZoWkdWeUlIUnZJR0psSUhOdmJXVjBhR2x1WnlCMGFHRjBJR2x6SUdGamRIVmhiR3g1SUd4cGJtdGhZbXhsSUhSdkxpQlVhR2x6SUcxcGJXbGpjMXh1SUNvZ2FHOTNJRTlpYzJsa2FXRnVJR1J2WlhNZ2FYUW5jeUJ1YjNKdFlXeHBlbUYwYVc5dUxDQmpiMnhzWVhCemFXNW5JSEpsY0dWaGRHVmtJSE53WVdObGN5QmhibVFnYzNSeWFYQndhVzVuSUc5MWRDQmpiMjUwY205c0lHTm9ZWEpoWTNSbGNuTXVYRzRnS2k5Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCdWIzSnRZV3hwZW1WSVpXRmtaWEpHYjNKTWFXNXJLR2hsWVdSbGNqb2djM1J5YVc1bktUb2djM1J5YVc1bklIdGNiaUFnSUNCeVpYUjFjbTRnU0VWQlJFVlNYME5CVGs5T1NVTkJURWxhUlZJdWRISjVVR0Z5YzJVb2FHVmhaR1Z5S1R0Y2JuMWNibHh1THk4Z1JtRnpkQ0JsZUhSeVlXTjBhVzl1SUc5bUlHeHBibVVnY21GdVoyVnpJR1p5YjIwZ2JHRnlaMlVnY0dsbFkyVnpJRzltSUhSbGVIUXVYRzVjYmk4cUtpQlZjR1JoZEdVZ2RHaGxJR3hwYm1VZ2NtRnVaMlVnWm5KdmJTQmJjM1JoY25Rc0lHVnVaQ2tnZDJsMGFDQjBhR1VnWjJsMlpXNGdablZ1WTNScGIyNHVJQ292WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnYkdsdVpWSmxjR3hoWTJVb2RHVjRkRG9nYzNSeWFXNW5MQ0J6ZEdGeWREb2diblZ0WW1WeUxDQmxibVE2SUc1MWJXSmxjaXdnWm5WdVl6b2dLR3hwYm1VNklITjBjbWx1WnlrZ1BUNGdjM1J5YVc1bktUb2djM1J5YVc1bklIdGNiaUFnSUNCamIyNXpkQ0JiWkdGMFlTd2diMlptYzJWMFhTQTlJR3hwYm1WVGNHRnVLSFJsZUhRc0lITjBZWEowTENCbGJtUXBPMXh1SUNBZ0lHbG1JQ2doYjJabWMyVjBLU0J5WlhSMWNtNGdkR1Y0ZER0Y2JseHVJQ0FnSUhKbGRIVnliaUFvWEc0Z0lDQWdJQ0FnSUdSaGRHRXVjM1ZpYzNSeWFXNW5LREFzSUc5bVpuTmxkQzV6ZEdGeWRDa2dLeUJtZFc1aktHUmhkR0V1YzNWaWMzUnlhVzVuS0c5bVpuTmxkQzV6ZEdGeWRDd2diMlptYzJWMExtVnVaQ2twSUNzZ1pHRjBZUzV6ZFdKemRISnBibWNvYjJabWMyVjBMbVZ1WkNsY2JpQWdJQ0FwTzF4dWZWeHVYRzR2S2lvZ1JYaDBjbUZqZENCMGFHVWdiR2x1WlhNZ2FXNGdkR2hsSUhKaGJtZGxJRnR6ZEdGeWRDd2daVzVrS1N3Z1lYTWdkMlZzYkNCaGN5QjBhR1VnWVdOMGRXRnNJRzltWm5ObGRITWdiMllnZEdobElITjBZWEowSUdGdVpDQmxibVF1SUNvdlhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2JHbHVaVk53WVc0b1hHNGdJQ0FnZEdWNGREb2djM1J5YVc1bkxGeHVJQ0FnSUhOMFlYSjBPaUJ1ZFcxaVpYSXNYRzRnSUNBZ1pXNWtPaUJ1ZFcxaVpYSmNiaWs2SUZ0emRISnBibWNzSUhzZ2MzUmhjblE2SUc1MWJXSmxjanNnWlc1a09pQnVkVzFpWlhJZ2ZTQjhJSFZ1WkdWbWFXNWxaRjBnZTF4dUlDQWdJSE4wWVhKMElEMGdUV0YwYUM1dFlYZ29jM1JoY25Rc0lEQXBPMXh1SUNBZ0lHVnVaQ0E5SUUxaGRHZ3ViV0Y0S0dWdVpDd2dNQ2s3WEc1Y2JpQWdJQ0JwWmlBb2MzUmhjblFnUGowZ1pXNWtLU0J5WlhSMWNtNGdXMXdpWENJc0lIVnVaR1ZtYVc1bFpGMDdYRzVjYmlBZ0lDQXZMeUJUZEdGeWRDQmllU0JtYVc1a2FXNW5JSFJvWlNCemRHRnlkR2x1WnlCc2FXNWxJRzltWm5ObGRDNWNiaUFnSUNCamIyNXpkQ0J6ZEdGeWRFOW1abk5sZENBOUlITnJhWEJPWlhkc2FXNWxjeWgwWlhoMExDQXdMQ0J6ZEdGeWRDazdYRzRnSUNBZ2FXWWdLSE4wWVhKMFQyWm1jMlYwSUQwOUlDMHhLU0J5WlhSMWNtNGdXMXdpWENJc0lIVnVaR1ZtYVc1bFpGMDdYRzVjYmlBZ0lDQmpiMjV6ZENCbGJtUlBabVp6WlhRZ1BTQnphMmx3VG1WM2JHbHVaWE1vZEdWNGRDd2djM1JoY25SUFptWnpaWFFzSUdWdVpDQXRJSE4wWVhKMEtUdGNiaUFnSUNCcFppQW9aVzVrVDJabWMyVjBJRDA5SUMweEtTQnlaWFIxY200Z1czUmxlSFF1YzNWaWMzUnlhVzVuS0hOMFlYSjBUMlptYzJWMEtTd2dleUJ6ZEdGeWREb2djM1JoY25SUFptWnpaWFFzSUdWdVpEb2dkR1Y0ZEM1c1pXNW5kR2dnZlYwN1hHNGdJQ0FnWld4elpTQnlaWFIxY200Z1czUmxlSFF1YzNWaWMzUnlhVzVuS0hOMFlYSjBUMlptYzJWMExDQmxibVJQWm1aelpYUWdMU0F4S1N3Z2V5QnpkR0Z5ZERvZ2MzUmhjblJQWm1aelpYUXNJR1Z1WkRvZ1pXNWtUMlptYzJWMElDMGdNU0I5WFR0Y2JuMWNibHh1THlvcUlFVjRkSEpoWTNRZ2RHaGxJR3hwYm1WeklHbHVJSFJvWlNCeVlXNW5aU0JiYzNSaGNuUXNJR1Z1WkNrdUlGTjBZWEowSUdseklHbHVZMngxYzJsMlpTd2daVzVrSUdseklHVjRZMngxYzJsMlpTNGdLaTljYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJzYVc1bFVtRnVaMlVvZEdWNGREb2djM1J5YVc1bkxDQnpkR0Z5ZERvZ2JuVnRZbVZ5TENCbGJtUTZJRzUxYldKbGNpazZJSE4wY21sdVp5QjdYRzRnSUNBZ2NtVjBkWEp1SUd4cGJtVlRjR0Z1S0hSbGVIUXNJSE4wWVhKMExDQmxibVFwV3pCZE8xeHVmVnh1WEc0dktpb2dVMnRwY0NCN1kyOTFiblI5SUhSdmRHRnNJRzVsZDJ4cGJtVnpMQ0J5WlhSMWNtNXBibWNnZEdobElITjBZWEowSUc5bUlIUm9aU0JzYVc1bElIdGpiM1Z1ZEgwZ2JHbHVaWE1nWVdaMFpYSWdkR2hsSUdOMWNuSmxiblFnYkdsdVpTNGdTV1lnWTI5MWJuUWdhWE1nTUN3Z2RHaGxJR2x1YVhScFlXd2diMlptYzJWMElHbHpJSEpsZEhWeWJtVmtMaUFxTDF4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUhOcmFYQk9aWGRzYVc1bGN5aDBaWGgwT2lCemRISnBibWNzSUhOMFlYSjBPaUJ1ZFcxaVpYSXNJR052ZFc1ME9pQnVkVzFpWlhJcE9pQnVkVzFpWlhJZ2UxeHVJQ0FnSUdsbUlDaGpiM1Z1ZENBOVBTQXdLU0J5WlhSMWNtNGdjM1JoY25RN1hHNWNiaUFnSUNCc1pYUWdjRzl6YVhScGIyNGdQU0J6ZEdGeWREdGNiaUFnSUNCM2FHbHNaU0FvWTI5MWJuUWdQaUF3S1NCN1hHNGdJQ0FnSUNBZ0lIQnZjMmwwYVc5dUlEMGdkR1Y0ZEM1cGJtUmxlRTltS0Z3aVhGeHVYQ0lzSUhCdmMybDBhVzl1S1R0Y2JpQWdJQ0FnSUNBZ2FXWWdLSEJ2YzJsMGFXOXVJRDA5SUMweEtTQnlaWFIxY200Z0xURTdYRzVjYmlBZ0lDQWdJQ0FnWTI5MWJuUXRMVHRjYmlBZ0lDQWdJQ0FnY0c5emFYUnBiMjRnS3owZ01UdGNiaUFnSUNCOVhHNWNiaUFnSUNCeVpYUjFjbTRnY0c5emFYUnBiMjQ3WEc1OVhHNGlMQ0FpWlhod2IzSjBJR1JsWm1GMWJIUWdLQ2tnUFQ0Z2UxeHVYSFF2THlCb2RIUndjem92TDIxMGFITXVZbVV2WlcxdmFtbGNibHgwY21WMGRYSnVJQzliSXlvd0xUbGRYRngxUmtVd1JqOWNYSFV5TUVVemZGdGNYSGhCT1Z4Y2VFRkZYRngxTWpBelExeGNkVEl3TkRsY1hIVXlNVEl5WEZ4MU1qRXpPVnhjZFRJeE9UUXRYRngxTWpFNU9WeGNkVEl4UVRsY1hIVXlNVUZCWEZ4MU1qTXhRVnhjZFRJek1VSmNYSFV5TXpJNFhGeDFNak5EUmx4Y2RUSXpSVVF0WEZ4MU1qTkZSbHhjZFRJelJqRmNYSFV5TTBZeVhGeDFNak5HT0MxY1hIVXlNMFpCWEZ4MU1qUkRNbHhjZFRJMVFVRmNYSFV5TlVGQ1hGeDFNalZDTmx4Y2RUSTFRekJjWEhVeU5VWkNYRngxTWpWR1ExeGNkVEkxUmtWY1hIVXlOakF3TFZ4Y2RUSTJNRFJjWEhVeU5qQkZYRngxTWpZeE1WeGNkVEkyTVRSY1hIVXlOakUxWEZ4MU1qWXhPRnhjZFRJMk1qQmNYSFV5TmpJeVhGeDFNall5TTF4Y2RUSTJNalpjWEhVeU5qSkJYRngxTWpZeVJWeGNkVEkyTWtaY1hIVXlOak00TFZ4Y2RUSTJNMEZjWEhVeU5qUXdYRngxTWpZME1seGNkVEkyTkRndFhGeDFNalkxTTF4Y2RUSTJOVVpjWEhVeU5qWXdYRngxTWpZMk0xeGNkVEkyTmpWY1hIVXlOalkyWEZ4MU1qWTJPRnhjZFRJMk4wSmNYSFV5TmpkRlhGeDFNalkzUmx4Y2RUSTJPVEpjWEhVeU5qazBMVnhjZFRJMk9UZGNYSFV5TmprNVhGeDFNalk1UWx4Y2RUSTJPVU5jWEhVeU5rRXdYRngxTWpaQk4xeGNkVEkyUVVGY1hIVXlOa0l3WEZ4MU1qWkNNVnhjZFRJMlFrUmNYSFV5TmtKRlhGeDFNalpETkZ4Y2RUSTJRemhjWEhVeU5rTkdYRngxTWpaRU1WeGNkVEkyUlRsY1hIVXlOa1l3TFZ4Y2RUSTJSalZjWEhVeU5rWTNYRngxTWpaR09GeGNkVEkyUmtGY1hIVXlOekF5WEZ4MU1qY3dPRnhjZFRJM01EbGNYSFV5TnpCR1hGeDFNamN4TWx4Y2RUSTNNVFJjWEhVeU56RTJYRngxTWpjeFJGeGNkVEkzTWpGY1hIVXlOek16WEZ4MU1qY3pORnhjZFRJM05EUmNYSFV5TnpRM1hGeDFNamMxTjF4Y2RUSTNOak5jWEhVeU4wRXhYRngxTWprek5GeGNkVEk1TXpWY1hIVXlRakExTFZ4Y2RUSkNNRGRjWEhVeVFqRkNYRngxTWtJeFExeGNkVEpDTlRWY1hIVXpNRE13WEZ4MU16QXpSRnhjZFRNeU9UZGNYSFV6TWprNVhWeGNkVVpGTUVZL2ZGdGNYSFV5TmpGRVhGeDFNamN3UTF4Y2RUSTNNRVJkS0Q4NlhGeDFSRGd6UTF0Y1hIVkVSa1pDTFZ4Y2RVUkdSa1pkZkZ4Y2RVWkZNRVlwUDN4YlhGeDFNamN3UVZ4Y2RUSTNNRUpkS0Q4NlhGeDFSRGd6UTF0Y1hIVkVSa1pDTFZ4Y2RVUkdSa1pkS1Q5OFcxeGNkVEl6UlRrdFhGeDFNak5GUTF4Y2RUSXpSakJjWEhVeU0wWXpYRngxTWpWR1JGeGNkVEkyT1ROY1hIVXlOa0V4WEZ4MU1qWkJRbHhjZFRJMlF6VmNYSFV5TmtORlhGeDFNalpFTkZ4Y2RUSTJSVUZjWEhVeU5rWkVYRngxTWpjd05WeGNkVEkzTWpoY1hIVXlOelJEWEZ4MU1qYzBSVnhjZFRJM05UTXRYRngxTWpjMU5WeGNkVEkzT1RVdFhGeDFNamM1TjF4Y2RUSTNRakJjWEhVeU4wSkdYRngxTWtJMU1GMThYRngxTWpaRU0xeGNkVVpGTUVZL0tEODZYRngxTWpBd1JGeGNkVVE0TTBSY1hIVkVRMEUxS1Q5OFhGeDFNalpHT1NnL09seGNkVVE0TTBOYlhGeDFSRVpHUWkxY1hIVkVSa1pHWFh4Y1hIVkdSVEJHS1Q4b1B6cGNYSFV5TURCRVcxeGNkVEkyTkRCY1hIVXlOalF5WFZ4Y2RVWkZNRVkvS1Q5OFhGeDFNamMyTkZ4Y2RVWkZNRVkvS0Q4NlhGeDFNakF3UkNnL09seGNkVVE0TTBSY1hIVkVSREkxZkZ4Y2RVUTRNMFZjWEhWRVJUYzVLU2svZkZ4Y2RVUTRNME1vUHpwYlhGeDFSRU13TkZ4Y2RVUkVOekJjWEhWRVJEY3hYRngxUkVRM1JWeGNkVVJFTjBaY1hIVkVSVEF5WEZ4MVJFVXpOMXhjZFVSR01qRmNYSFZFUmpJMExWeGNkVVJHTWtOY1hIVkVSak0yWEZ4MVJFWTNSRnhjZFVSR09UWmNYSFZFUmprM1hGeDFSRVk1T1MxY1hIVkVSamxDWEZ4MVJFWTVSVnhjZFVSR09VWmNYSFZFUmtORVhGeDFSRVpEUlZ4Y2RVUkdSRFF0WEZ4MVJFWkVSbHhjZFVSR1JqVmNYSFZFUmtZM1hWeGNkVVpGTUVZL2ZGdGNYSFZFUmpnMVhGeDFSRVpETWx4Y2RVUkdRemRkS0Q4NlhGeDFSRGd6UTF0Y1hIVkVSa1pDTFZ4Y2RVUkdSa1pkS1Q5OFcxeGNkVVJHUXpSY1hIVkVSa05CWFNnL09seGNkVVE0TTBOYlhGeDFSRVpHUWkxY1hIVkVSa1pHWFNrL0tEODZYRngxTWpBd1JGdGNYSFV5TmpRd1hGeDFNalkwTWwxY1hIVkdSVEJHUHlrL2ZGdGNYSFZFUmtOQ1hGeDFSRVpEUTEwb1B6cGNYSFZFT0RORFcxeGNkVVJHUmtJdFhGeDFSRVpHUmwxOFhGeDFSa1V3UmlrL0tEODZYRngxTWpBd1JGdGNYSFV5TmpRd1hGeDFNalkwTWwxY1hIVkdSVEJHUHlrL2ZGdGNYSFZFUTBOR1hGeDFSRVE0UlZ4Y2RVUkVPVEV0WEZ4MVJFUTVRVnhjZFVSRk1ERmNYSFZFUlRGQlhGeDFSRVV5Umx4Y2RVUkZNekl0WEZ4MVJFVXpObHhjZFVSRk16Z3RYRngxUkVVelFWeGNkVVJGTlRCY1hIVkVSVFV4WEZ4MVJFWXdNQzFjWEhWRVJqSXdYRngxUkVZeVJDMWNYSFZFUmpNMVhGeDFSRVl6TnkxY1hIVkVSalF6WEZ4MVJFWTBOUzFjWEhWRVJqUkJYRngxUkVZMFF5MWNYSFZFUmpkRFhGeDFSRVkzUlMxY1hIVkVSamcwWEZ4MVJFWTROaTFjWEhWRVJqa3pYRngxUkVaQk1DMWNYSFZFUmtNeFhGeDFSRVpETlZ4Y2RVUkdRelpjWEhWRVJrTTRYRngxUkVaRE9WeGNkVVJHUTBZdFhGeDFSRVpFTTF4Y2RVUkdSVEF0WEZ4MVJFWkdNRnhjZFVSR1JqZ3RYRngxUkVaR1JsMThYRngxUkVSRk5seGNkVVE0TTBOYlhGeDFSRVJGT0MxY1hIVkVSRVZEWEZ4MVJFUkZSVnhjZFVSRVJqRmNYSFZFUkVZeVhGeDFSRVJHTkZ4Y2RVUkVSall0WEZ4MVJFUkdRVnhjZFVSRVJrTmNYSFZFUkVaRVhGeDFSRVJHUmwxOFhGeDFSRVJGTjF4Y2RVUTRNME5iWEZ4MVJFUkZObHhjZFVSRVJUZGNYSFZFUkVVNUxWeGNkVVJFUlVaY1hIVkVSRVl4TFZ4Y2RVUkVSalJjWEhWRVJFWTJMVnhjZFVSRVJqbGNYSFZFUkVaQ1hGeDFSRVJHUTF4Y2RVUkVSa1ZjWEhWRVJFWkdYWHhjWEhWRVJFVTRYRngxUkRnelExdGNYSFZFUkVVMlhGeDFSRVJGT0Z4Y2RVUkVSVGxjWEhWRVJFVkNMVnhjZFVSRVJVVmNYSFZFUkVZd0xWeGNkVVJFUmpkY1hIVkVSRVpCTFZ4Y2RVUkVSa1pkZkZ4Y2RVUkVSVGxjWEhWRU9ETkRXMXhjZFVSRVJVRmNYSFZFUkVWRFhGeDFSRVJGUmx4Y2RVUkVSakJjWEhWRVJFWXlYRngxUkVSR05GeGNkVVJFUmtaZGZGeGNkVVJFUlVGY1hIVkVPRE5EVzF4Y2RVUkVSVFpjWEhWRVJFVTRYRngxUkVSRlFWeGNkVVJFUlVOY1hIVkVSRVZFWEZ4MVJFUkdOeTFjWEhWRVJFWkJYWHhjWEhWRVJFVkNYRngxUkRnelExdGNYSFZFUkVWRkxWeGNkVVJFUmpCY1hIVkVSRVl5WEZ4MVJFUkdORnhjZFVSRVJqZGRmRnhjZFVSRVJVTmNYSFZFT0RORFcxeGNkVVJFUlRaY1hIVkVSRVUzWEZ4MVJFUkZPUzFjWEhWRVJFVkZYRngxUkVSR01TMWNYSFZFUkVZelhGeDFSRVJHTlMxY1hIVkVSRVpCWEZ4MVJFUkdRMXhjZFVSRVJrVmRmRnhjZFVSRVJVUmNYSFZFT0RORFcxeGNkVVJFUmpCY1hIVkVSRVl5WEZ4MVJFUkdNMXhjZFVSRVJqZGNYSFZFUkVZNVhGeDFSRVJHUVYxOFhGeDFSRVJGUlZ4Y2RVUTRNME5iWEZ4MVJFUkZPQzFjWEhWRVJFVkJYRngxUkVSR01TMWNYSFZFUkVZMFhGeDFSRVJHTmkxY1hIVkVSRVk1WFh4Y1hIVkVSRVZHWEZ4MVJEZ3pRMXRjWEhWRVJFVkJYRngxUkVSR01seGNkVVJFUmpSY1hIVkVSRVkxWFh4Y1hIVkVSRVl3WEZ4MVJEZ3pRMXRjWEhWRVJFVkJYRngxUkVSRlF5MWNYSFZFUkVWRlhGeDFSRVJHTWx4Y2RVUkVSak5jWEhWRVJFWTFYRngxUkVSR04xeGNkVVJFUmtOY1hIVkVSRVpGWEZ4MVJFUkdSbDE4WEZ4MVJFUkdNVnhjZFVRNE0wTmJYRngxUkVSRk5pMWNYSFZFUkVVNFhGeDFSRVJGUlZ4Y2RVUkVSakJjWEhWRVJFWTNMVnhjZFVSRVJrSmNYSFZFUkVaRlhYeGNYSFZFUkVZeVhGeDFSRGd6UTF0Y1hIVkVSRVUyWEZ4MVJFUkZPQzFjWEhWRVJFVkVYRngxUkVSR01DMWNYSFZFUkVaR1hYeGNYSFZFUkVZelhGeDFSRGd6UTF0Y1hIVkVSRVUyWEZ4MVJFUkZPRnhjZFVSRVJVRXRYRngxUkVSRlExeGNkVVJFUlVWY1hIVkVSRVl4WEZ4MVJFUkdORnhjZFVSRVJqVmNYSFZFUkVZM1hGeDFSRVJHUVZ4Y2RVUkVSa1pkZkZ4Y2RVUkVSalJjWEhWRU9ETkRYRngxUkVSR01ueGNYSFZFUkVZMVhGeDFSRGd6UTF0Y1hIVkVSRVUyWEZ4MVJFUkZRUzFjWEhWRVJFVkVYRngxUkVSR01DMWNYSFZFUkVZelhGeDFSRVJHTnkxY1hIVkVSRVk1WEZ4MVJFUkdRMXhjZFVSRVJrVmRmRnhjZFVSRVJqWmNYSFZFT0RORFhGeDFSRVJGTm54Y1hIVkVSRVkzWEZ4MVJEZ3pRMXRjWEhWRVJFVkJYRngxUkVSR05GeGNkVVJFUmpoY1hIVkVSRVpCWEZ4MVJFUkdRMTE4WEZ4MVJFUkdPRnhjZFVRNE0wTmJYRngxUkVSRk5pMWNYSFZFUkVWQlhGeDFSRVJGUXkxY1hIVkVSRVkwWEZ4MVJFUkdOeTFjWEhWRVJFWTVYRngxUkVSR1FseGNkVVJFUmtRdFhGeDFSRVJHUmwxOFhGeDFSRVJHT1Z4Y2RVUTRNME5iWEZ4MVJFUkZObHhjZFVSRVJUaGNYSFZFUkVVNVhGeDFSRVJGUWkxY1hIVkVSRVZFWEZ4MVJFUkZSaTFjWEhWRVJFWTBYRngxUkVSR04xeGNkVVJFUmpsY1hIVkVSRVpDWEZ4MVJFUkdRMXhjZFVSRVJrWmRmRnhjZFVSRVJrRmNYSFZFT0RORFcxeGNkVVJFUlRaY1hIVkVSRVZEWEZ4MVJFUkdNbHhjZFVSRVJqTmNYSFZFUkVZNFhGeDFSRVJHUlZ4Y2RVUkVSa1pkZkZ4Y2RVUkVSa0pjWEhWRU9ETkRXMXhjZFVSRVJUWmNYSFZFUkVVNFhGeDFSRVJGUVZ4Y2RVUkVSVU5jWEhWRVJFVkZYRngxUkVSR00xeGNkVVJFUmtGZGZGeGNkVVJFUmtOY1hIVkVPRE5EVzF4Y2RVUkVSVUpjWEhWRVJFWTRYWHhjWEhWRVJFWkVYRngxUkRnelExeGNkVVJFUmpCOFhGeDFSRVJHUlZ4Y2RVUTRNME5iWEZ4MVJFUkZRVnhjZFVSRVJqbGRmRnhjZFVSRVJrWmNYSFZFT0RORFcxeGNkVVJFUlRaY1hIVkVSRVl5WEZ4MVJFUkdRMTE4WEZ4MVJFWTBOQ2cvT2x4Y2RUSXdNRVJjWEhWRU9ETkVYRngxUkVaRlFpay9mRnhjZFVSR05FSW9QenBjWEhVeU1EQkVYRngxUkRnelJGeGNkVVJHUlRrcFAzeGNYSFZFUmtNektEODZYRngxUkRnelExdGNYSFZFUmtaQ0xWeGNkVVJHUmtaZEtUOG9QenBjWEhVeU1EQkVLRDg2VzF4Y2RUSTJOREJjWEhVeU5qUXlYVnhjZFVaRk1FWS9LRDg2WEZ4MU1qQXdSRnhjZFRJM1FURmNYSFZHUlRCR1B5ay9mRnhjZFRJM1FURmNYSFZHUlRCR1B5a3BQM3hjWEhWRVJrWXpYRngxUmtVd1JqOG9QenBjWEhVeU1EQkVLRDg2WEZ4MU1qWkJOMXhjZFVaRk1FWS9mRnhjZFVRNE0wTmNYSFZFUmpBNEtTay9mRnhjZFVSR1JqUW9QenBjWEhVeU1EQkVYRngxTWpZeU1GeGNkVVpGTUVZL2ZGeGNkVVJDTkRCY1hIVkVRelkzWEZ4MVJFSTBNRnhjZFVSRE5qSmNYSFZFUWpRd0tEODZYRngxUkVNMk5WeGNkVVJDTkRCY1hIVkVRelpGWEZ4MVJFSTBNRnhjZFVSRE5qZDhYRngxUkVNM00xeGNkVVJDTkRCY1hIVkVRell6WEZ4MVJFSTBNRnhjZFVSRE56UjhYRngxUkVNM04xeGNkVVJDTkRCY1hIVkVRelpEWEZ4MVJFSTBNRnhjZFVSRE56TXBYRngxUkVJME1GeGNkVVJETjBZcFB5bDhYRngxUkRnelJDZy9PbHRjWEhWRVF6TkdYRngxUkVOR1JGeGNkVVJFTkRsY1hIVkVSRFJCWEZ4MVJFUTJSbHhjZFVSRU56QmNYSFZFUkRjelhGeDFSRVEzTmkxY1hIVkVSRGM1WEZ4MVJFUTROMXhjZFVSRU9FRXRYRngxUkVRNFJGeGNkVVJFUVRWY1hIVkVSRUU0WEZ4MVJFUkNNVnhjZFVSRVFqSmNYSFZFUkVKRFhGeDFSRVJETWkxY1hIVkVSRU0wWEZ4MVJFUkVNUzFjWEhWRVJFUXpYRngxUkVSRVF5MWNYSFZFUkVSRlhGeDFSRVJGTVZ4Y2RVUkVSVE5jWEhWRVJFVTRYRngxUkVSRlJseGNkVVJFUmpOY1hIVkVSRVpCWEZ4MVJFVkRRbHhjZFVSRlEwUXRYRngxUkVWRFJseGNkVVJGUlRBdFhGeDFSRVZGTlZ4Y2RVUkZSVGxjWEhWRVJVWXdYRngxUkVWR00xMWNYSFZHUlRCR1AzeGJYRngxUkVNME1seGNkVVJETkROY1hIVkVRelEyTFZ4Y2RVUkROVEJjWEhWRVF6WTJYRngxUkVNMk4xeGNkVVJETmtJdFhGeDFSRU0yUkZ4Y2RVUkROekpjWEhWRVF6YzBMVnhjZFVSRE56WmNYSFZFUXpjNFhGeDFSRU0zUTF4Y2RVUkRPRE5jWEhWRVF6ZzFYRngxUkVNNFJseGNkVVJET1RGY1hIVkVRMEZCWEZ4MVJFUTNRVnhjZFVSRU9UVmNYSFZFUkRrMlhGeDFSRVUwUTF4Y2RVUkZORVpjWEhWRVJVTXdYRngxUkVWRFExMG9QenBjWEhWRU9ETkRXMXhjZFVSR1JrSXRYRngxUkVaR1JsMHBQM3hiWEZ4MVJFTTJSVnhjZFVSRE56QmNYSFZFUXpjeFhGeDFSRU0zTTF4Y2RVUkROemRjWEhWRVF6Z3hYRngxUkVNNE1seGNkVVJET0RaY1hIVkVRemczWEZ4MVJFVTBOUzFjWEhWRVJUUTNYRngxUkVVMFFseGNkVVJGTkVSY1hIVkVSVFJGWEZ4MVJFVkJNMXhjZFVSRlFqUmNYSFZFUlVJMVhTZy9PbHhjZFVRNE0wTmJYRngxUkVaR1FpMWNYSFZFUmtaR1hTay9LRDg2WEZ4MU1qQXdSRnRjWEhVeU5qUXdYRngxTWpZME1sMWNYSFZHUlRCR1B5ay9mRnRjWEhWRVJEYzBYRngxUkVRNU1GMG9QenBjWEhWRU9ETkRXMXhjZFVSR1JrSXRYRngxUkVaR1JsMThYRngxUmtVd1Jpay9mRnRjWEhWRVF6QXdMVnhjZFVSRE1EZGNYSFZFUXpBNUxWeGNkVVJETVRSY1hIVkVRekUyTFZ4Y2RVUkRNalZjWEhWRVF6STNMVnhjZFVSRE0wRmNYSFZFUXpORExWeGNkVVJETTBWY1hIVkVRelF3WEZ4MVJFTTBORnhjZFVSRE5EVmNYSFZFUXpVeExWeGNkVVJETmpWY1hIVkVRelpCWEZ4MVJFTTNPUzFjWEhWRVF6ZENYRngxUkVNM1JDMWNYSFZFUXpnd1hGeDFSRU00TkZ4Y2RVUkRPRGd0WEZ4MVJFTTRSVnhjZFVSRE9UQmNYSFZFUXpreUxWeGNkVVJEUVRsY1hIVkVRMEZDTFZ4Y2RVUkRSa05jWEhWRVEwWkdMVnhjZFVSRU0wUmNYSFZFUkRSQ0xWeGNkVVJFTkVWY1hIVkVSRFV3TFZ4Y2RVUkVOamRjWEhWRVJFRTBYRngxUkVSR1FpMWNYSFZFUlRKRVhGeDFSRVV5UmkxY1hIVkVSVE0wWEZ4MVJFVXpOeTFjWEhWRVJUUXhYRngxUkVVME0xeGNkVVJGTkRSY1hIVkVSVFE0TFZ4Y2RVUkZORUZjWEhWRVJUZ3dMVnhjZFVSRlFUSmNYSFZFUlVFMExWeGNkVVJGUWpOY1hIVkVSVUkzTFZ4Y2RVUkZRa1pjWEhWRVJVTXhMVnhjZFVSRlF6VmNYSFZFUlVRd0xWeGNkVVJGUkRKY1hIVkVSVVExTFZ4Y2RVUkZSRGRjWEhWRVJVUkRMVnhjZFVSRlJFWmNYSFZFUlVWQ1hGeDFSRVZGUTF4Y2RVUkZSalF0WEZ4MVJFVkdRMXhjZFVSR1JUQXRYRngxUkVaRlFseGNkVVJHUmpCZGZGeGNkVVJETURnb1B6cGNYSFV5TURCRVhGeDFNa0l4UWlrL2ZGeGNkVVJETVRVb1B6cGNYSFV5TURCRVhGeDFSRGd6UlZ4Y2RVUkVRa0VwUDN4Y1hIVkVRekkyS0Q4NlhGeDFNakF3UkNnL09seGNkVEpDTVVKOFhGeDFSRGd6UkZ4Y2RVUkVNalVwS1Q5OFhGeDFSRU16UWlnL09seGNkVEl3TUVSY1hIVXlOelEwWEZ4MVJrVXdSajhwUDN4Y1hIVkVRelF4WEZ4MVJrVXdSajhvUHpwY1hIVXlNREJFWEZ4MVJEZ3pSRnhjZFVSRVJUaGNYSFZHUlRCR1B5ay9mRnhjZFVSRE5qZ29QenBjWEhVeU1EQkVLRDg2VzF4Y2RUSTJPVFZjWEhVeU5qazJYRngxTWpjd09GMWNYSFZHUlRCR1AzeGNYSFV5TnpZMFhGeDFSa1V3Umo5Y1hIVXlNREJFWEZ4MVJEZ3pSQ2cvT2x4Y2RVUkRPRUpjWEhVeU1EQkVYRngxUkRnelJDay9YRngxUkVNMk9IeGNYSFZFT0RORFcxeGNkVVJHTTBWY1hIVkVSamN6WEZ4MVJFWTNRMXhjZFVSR09UTmNYSFZFUmtFMFhGeDFSRVpCT0Z4Y2RVUkdSVUpjWEhWRVJrVkVYWHhjWEhWRU9ETkVLRDg2VzF4Y2RVUkROamhjWEhWRVF6WTVYVnhjZFRJd01FUmNYSFZFT0RORUtEODZYRngxUkVNMk5pZy9PbHhjZFRJd01FUmNYSFZFT0RORVhGeDFSRU0yTmlrL2ZGeGNkVVJETmpjb1B6cGNYSFV5TURCRVhGeDFSRGd6UkZ0Y1hIVkVRelkyWEZ4MVJFTTJOMTBwUHlsOFcxeGNkVVJEUWtKY1hIVkVRMEpEWEZ4MVJFUXlOMXhjZFVSRU1rTmNYSFZFUlRnd1hGeDFSRVU1TWwxOFhGeDFSRU0yTmlnL09seGNkVEl3TUVSY1hIVkVPRE5FWEZ4MVJFTTJOaWsvZkZ4Y2RVUkROamNvUHpwY1hIVXlNREJFWEZ4MVJEZ3pSRnRjWEhWRVF6WTJYRngxUkVNMk4xMHBQeWw4WEZ4MVJEZ3pSU2cvT2x0Y1hIVkVSRUZHWEZ4MVJFUkNRMXhjZFVSRVFrUmRLRDg2WEZ4MU1qQXdSRnhjZFRJM1FURmNYSFZHUlRCR1B5ay9mRnRjWEhWRVJFSXdMVnhjZFVSRVFqTmRLU2w4WEZ4MVJEZ3pReWcvT2x4Y2RVUkdSa0lvUHpwY1hIVXlNREJFS0Q4NlcxeGNkVEkyT1RWY1hIVXlOamsyWEZ4MU1qY3dPRjFjWEhWR1JUQkdQM3hjWEhVeU56WTBYRngxUmtVd1JqOWNYSFV5TURCRVhGeDFSRGd6UkNnL09seGNkVVJET0VKY1hIVXlNREJFWEZ4MVJEZ3pSQ2svWEZ4MVJFTTJPRnhjZFVRNE0wTmJYRngxUkVaR1FpMWNYSFZFUmtaR1hYeGNYSFZFT0RORFcxeGNkVVJHTTBWY1hIVkVSamN6WEZ4MVJFWTNRMXhjZFVSR09UTmNYSFZFUmtFMFhGeDFSRVpCT0Z4Y2RVUkdSVUpjWEhWRVJrVkVYWHhjWEhWRU9ETkVXMXhjZFVSRFFrSmNYSFZFUTBKRFhGeDFSRVF5TjF4Y2RVUkVNa05jWEhWRVJUZ3dYRngxUkVVNU1sMThYRngxUkRnelJTZy9PbHRjWEhWRVJFRkdYRngxUkVSQ1ExeGNkVVJFUWtSZEtEODZYRngxTWpBd1JGeGNkVEkzUVRGY1hIVkdSVEJHUHlrL2ZGdGNYSFZFUkVJd0xWeGNkVVJFUWpOZGZGeGNkVVJFTVVSY1hIVXlNREJFWEZ4MVJEZ3pSRnhjZFVSRE5qaGNYSFZFT0RORFcxeGNkVVJHUmtNdFhGeDFSRVpHUmwwcEtTay9mRnhjZFVSR1JrTW9QenBjWEhVeU1EQkVLRDg2VzF4Y2RUSTJPVFZjWEhVeU5qazJYRngxTWpjd09GMWNYSFZHUlRCR1AzeGNYSFV5TnpZMFhGeDFSa1V3Umo5Y1hIVXlNREJFWEZ4MVJEZ3pSQ2cvT2x4Y2RVUkRPRUpjWEhVeU1EQkVYRngxUkRnelJDay9YRngxUkVNMk9GeGNkVVE0TTBOYlhGeDFSRVpHUWkxY1hIVkVSa1pHWFh4Y1hIVkVPRE5EVzF4Y2RVUkdNMFZjWEhWRVJqY3pYRngxUkVZM1ExeGNkVVJHT1ROY1hIVkVSa0UwWEZ4MVJFWkJPRnhjZFVSR1JVSmNYSFZFUmtWRVhYeGNYSFZFT0RORVcxeGNkVVJEUWtKY1hIVkVRMEpEWEZ4MVJFUXlOMXhjZFVSRU1rTmNYSFZFUlRnd1hGeDFSRVU1TWwxOFhGeDFSRGd6UlNnL09sdGNYSFZFUkVGR1hGeDFSRVJDUTF4Y2RVUkVRa1JkS0Q4NlhGeDFNakF3UkZ4Y2RUSTNRVEZjWEhWR1JUQkdQeWsvZkZ0Y1hIVkVSRUl3TFZ4Y2RVUkVRak5kZkZ4Y2RVUkVNVVJjWEhVeU1EQkVYRngxUkRnelJGeGNkVVJETmpoY1hIVkVPRE5EVzF4Y2RVUkdSa0pjWEhWRVJrWkVMVnhjZFVSR1JrWmRLU2twUDN4Y1hIVkVSa1pFS0Q4NlhGeDFNakF3UkNnL09sdGNYSFV5TmprMVhGeDFNalk1Tmx4Y2RUSTNNRGhkWEZ4MVJrVXdSajk4WEZ4MU1qYzJORnhjZFVaRk1FWS9YRngxTWpBd1JGeGNkVVE0TTBRb1B6cGNYSFZFUXpoQ1hGeDFNakF3UkZ4Y2RVUTRNMFFwUDF4Y2RVUkROamhjWEhWRU9ETkRXMXhjZFVSR1JrSXRYRngxUkVaR1JsMThYRngxUkRnelExdGNYSFZFUmpORlhGeDFSRVkzTTF4Y2RVUkdOME5jWEhWRVJqa3pYRngxUkVaQk5GeGNkVVJHUVRoY1hIVkVSa1ZDWEZ4MVJFWkZSRjE4WEZ4MVJEZ3pSRnRjWEhWRVEwSkNYRngxUkVOQ1ExeGNkVVJFTWpkY1hIVkVSREpEWEZ4MVJFVTRNRnhjZFVSRk9USmRmRnhjZFVRNE0wVW9QenBiWEZ4MVJFUkJSbHhjZFVSRVFrTmNYSFZFUkVKRVhTZy9PbHhjZFRJd01FUmNYSFV5TjBFeFhGeDFSa1V3Umo4cFAzeGJYRngxUkVSQ01DMWNYSFZFUkVJelhYeGNYSFZFUkRGRVhGeDFNakF3UkZ4Y2RVUTRNMFJjWEhWRVF6WTRYRngxUkRnelExdGNYSFZFUmtaQ1hGeDFSRVpHUTF4Y2RVUkdSa1ZjWEhWRVJrWkdYU2twS1Q5OFhGeDFSRVpHUlNnL09seGNkVEl3TUVRb1B6cGJYRngxTWpZNU5WeGNkVEkyT1RaY1hIVXlOekE0WFZ4Y2RVWkZNRVkvZkZ4Y2RUSTNOalJjWEhWR1JUQkdQMXhjZFRJd01FUmNYSFZFT0RORUtEODZYRngxUkVNNFFseGNkVEl3TUVSY1hIVkVPRE5FS1Q5Y1hIVkVRelk0WEZ4MVJEZ3pRMXRjWEhWRVJrWkNMVnhjZFVSR1JrWmRmRnhjZFVRNE0wTmJYRngxUkVZelJWeGNkVVJHTnpOY1hIVkVSamREWEZ4MVJFWTVNMXhjZFVSR1FUUmNYSFZFUmtFNFhGeDFSRVpGUWx4Y2RVUkdSVVJkZkZ4Y2RVUTRNMFJiWEZ4MVJFTkNRbHhjZFVSRFFrTmNYSFZFUkRJM1hGeDFSRVF5UTF4Y2RVUkZPREJjWEhWRVJUa3lYWHhjWEhWRU9ETkZLRDg2VzF4Y2RVUkVRVVpjWEhWRVJFSkRYRngxUkVSQ1JGMG9QenBjWEhVeU1EQkVYRngxTWpkQk1WeGNkVVpGTUVZL0tUOThXMXhjZFVSRVFqQXRYRngxUkVSQ00xMThYRngxUkVReFJGeGNkVEl3TUVSY1hIVkVPRE5FWEZ4MVJFTTJPRnhjZFVRNE0wTmJYRngxUkVaR1FpMWNYSFZFUmtaRVhGeDFSRVpHUmwwcEtTay9mRnhjZFVSR1JrWW9QenBjWEhVeU1EQkVLRDg2VzF4Y2RUSTJPVFZjWEhVeU5qazJYRngxTWpjd09GMWNYSFZHUlRCR1AzeGNYSFV5TnpZMFhGeDFSa1V3Umo5Y1hIVXlNREJFWEZ4MVJEZ3pSQ2cvT2x4Y2RVUkRPRUpjWEhVeU1EQkVYRngxUkRnelJDay9YRngxUkVNMk9GeGNkVVE0TTBOYlhGeDFSRVpHUWkxY1hIVkVSa1pHWFh4Y1hIVkVPRE5EVzF4Y2RVUkdNMFZjWEhWRVJqY3pYRngxUkVZM1ExeGNkVVJHT1ROY1hIVkVSa0UwWEZ4MVJFWkJPRnhjZFVSR1JVSmNYSFZFUmtWRVhYeGNYSFZFT0RORVcxeGNkVVJEUWtKY1hIVkVRMEpEWEZ4MVJFUXlOMXhjZFVSRU1rTmNYSFZFUlRnd1hGeDFSRVU1TWwxOFhGeDFSRGd6UlNnL09sdGNYSFZFUkVGR1hGeDFSRVJDUTF4Y2RVUkVRa1JkS0Q4NlhGeDFNakF3UkZ4Y2RUSTNRVEZjWEhWR1JUQkdQeWsvZkZ0Y1hIVkVSRUl3TFZ4Y2RVUkVRak5kZkZ4Y2RVUkVNVVJjWEhVeU1EQkVYRngxUkRnelJGeGNkVVJETmpoY1hIVkVPRE5EVzF4Y2RVUkdSa0l0WEZ4MVJFWkdSVjBwS1NrL0tTay9mRnhjZFVSRE5qa29QenBjWEhVeU1EQkVLRDg2VzF4Y2RUSTJPVFZjWEhVeU5qazJYRngxTWpjd09GMWNYSFZHUlRCR1AzeGNYSFV5TnpZMFhGeDFSa1V3Umo5Y1hIVXlNREJFWEZ4MVJEZ3pSQ2cvT2x4Y2RVUkRPRUpjWEhVeU1EQkVYRngxUkRnelJDay9XMXhjZFVSRE5qaGNYSFZFUXpZNVhYeGNYSFZFT0RORFcxeGNkVVJHTTBWY1hIVkVSamN6WEZ4MVJFWTNRMXhjZFVSR09UTmNYSFZFUmtFMFhGeDFSRVpCT0Z4Y2RVUkdSVUpjWEhWRVJrVkVYWHhjWEhWRU9ETkVLRDg2VzF4Y2RVUkRRa0pjWEhWRVEwSkRYRngxUkVReU4xeGNkVVJFTWtOY1hIVkVSVGd3WEZ4MVJFVTVNbDE4WEZ4MVJFTTJOaWcvT2x4Y2RUSXdNRVJjWEhWRU9ETkVYRngxUkVNMk5pay9mRnhjZFVSRE5qY29QenBjWEhVeU1EQkVYRngxUkRnelJGdGNYSFZFUXpZMlhGeDFSRU0yTjEwcFAzeGNYSFZFUXpZNVhGeDFNakF3UkZ4Y2RVUTRNMFFvUHpwY1hIVkVRelkyS0Q4NlhGeDFNakF3UkZ4Y2RVUTRNMFJjWEhWRVF6WTJLVDk4WEZ4MVJFTTJOeWcvT2x4Y2RUSXdNRVJjWEhWRU9ETkVXMXhjZFVSRE5qWmNYSFZFUXpZM1hTay9LU2w4WEZ4MVJEZ3pSU2cvT2x0Y1hIVkVSRUZHWEZ4MVJFUkNRMXhjZFVSRVFrUmRLRDg2WEZ4MU1qQXdSRnhjZFRJM1FURmNYSFZHUlRCR1B5ay9mRnRjWEhWRVJFSXdMVnhjZFVSRVFqTmRLU2w4WEZ4MVJEZ3pReWcvT2x4Y2RVUkdSa0lvUHpwY1hIVXlNREJFS0Q4NlcxeGNkVEkyT1RWY1hIVXlOamsyWEZ4MU1qY3dPRjFjWEhWR1JUQkdQM3hjWEhVeU56WTBYRngxUmtVd1JqOWNYSFV5TURCRVhGeDFSRGd6UkNnL09sdGNYSFZFUXpZNFhGeDFSRU0yT1YxOFhGeDFSRU00UWx4Y2RUSXdNRVJjWEhWRU9ETkVXMXhjZFVSRE5qaGNYSFZFUXpZNVhTbGNYSFZFT0RORFcxeGNkVVJHUmtJdFhGeDFSRVpHUmwxOFhGeDFSRGd6UTF0Y1hIVkVSak5GWEZ4MVJFWTNNMXhjZFVSR04wTmNYSFZFUmprelhGeDFSRVpCTkZ4Y2RVUkdRVGhjWEhWRVJrVkNYRngxUkVaRlJGMThYRngxUkRnelJGdGNYSFZFUTBKQ1hGeDFSRU5DUTF4Y2RVUkVNamRjWEhWRVJESkRYRngxUkVVNE1GeGNkVVJGT1RKZGZGeGNkVVE0TTBVb1B6cGJYRngxUkVSQlJseGNkVVJFUWtOY1hIVkVSRUpFWFNnL09seGNkVEl3TUVSY1hIVXlOMEV4WEZ4MVJrVXdSajhwUDN4YlhGeDFSRVJDTUMxY1hIVkVSRUl6WFh4Y1hIVkVSREZFWEZ4MU1qQXdSRnhjZFVRNE0wUmJYRngxUkVNMk9GeGNkVVJETmpsZFhGeDFSRGd6UTF0Y1hIVkVSa1pETFZ4Y2RVUkdSa1pkS1NrcFAzeGNYSFZFUmtaREtEODZYRngxTWpBd1JDZy9PbHRjWEhVeU5qazFYRngxTWpZNU5seGNkVEkzTURoZFhGeDFSa1V3Umo5OFhGeDFNamMyTkZ4Y2RVWkZNRVkvWEZ4MU1qQXdSRnhjZFVRNE0wUW9QenBiWEZ4MVJFTTJPRnhjZFVSRE5qbGRmRnhjZFVSRE9FSmNYSFV5TURCRVhGeDFSRGd6UkZ0Y1hIVkVRelk0WEZ4MVJFTTJPVjBwWEZ4MVJEZ3pRMXRjWEhWRVJrWkNMVnhjZFVSR1JrWmRmRnhjZFVRNE0wTmJYRngxUkVZelJWeGNkVVJHTnpOY1hIVkVSamREWEZ4MVJFWTVNMXhjZFVSR1FUUmNYSFZFUmtFNFhGeDFSRVpGUWx4Y2RVUkdSVVJkZkZ4Y2RVUTRNMFJiWEZ4MVJFTkNRbHhjZFVSRFFrTmNYSFZFUkRJM1hGeDFSRVF5UTF4Y2RVUkZPREJjWEhWRVJUa3lYWHhjWEhWRU9ETkZLRDg2VzF4Y2RVUkVRVVpjWEhWRVJFSkRYRngxUkVSQ1JGMG9QenBjWEhVeU1EQkVYRngxTWpkQk1WeGNkVVpGTUVZL0tUOThXMXhjZFVSRVFqQXRYRngxUkVSQ00xMThYRngxUkVReFJGeGNkVEl3TUVSY1hIVkVPRE5FVzF4Y2RVUkROamhjWEhWRVF6WTVYVnhjZFVRNE0wTmJYRngxUkVaR1FseGNkVVJHUmtRdFhGeDFSRVpHUmwwcEtTay9mRnhjZFVSR1JrUW9QenBjWEhVeU1EQkVLRDg2VzF4Y2RUSTJPVFZjWEhVeU5qazJYRngxTWpjd09GMWNYSFZHUlRCR1AzeGNYSFV5TnpZMFhGeDFSa1V3Umo5Y1hIVXlNREJFWEZ4MVJEZ3pSQ2cvT2x0Y1hIVkVRelk0WEZ4MVJFTTJPVjE4WEZ4MVJFTTRRbHhjZFRJd01FUmNYSFZFT0RORVcxeGNkVVJETmpoY1hIVkVRelk1WFNsY1hIVkVPRE5EVzF4Y2RVUkdSa0l0WEZ4MVJFWkdSbDE4WEZ4MVJEZ3pRMXRjWEhWRVJqTkZYRngxUkVZM00xeGNkVVJHTjBOY1hIVkVSamt6WEZ4MVJFWkJORnhjZFVSR1FUaGNYSFZFUmtWQ1hGeDFSRVpGUkYxOFhGeDFSRGd6UkZ0Y1hIVkVRMEpDWEZ4MVJFTkNRMXhjZFVSRU1qZGNYSFZFUkRKRFhGeDFSRVU0TUZ4Y2RVUkZPVEpkZkZ4Y2RVUTRNMFVvUHpwYlhGeDFSRVJCUmx4Y2RVUkVRa05jWEhWRVJFSkVYU2cvT2x4Y2RUSXdNRVJjWEhVeU4wRXhYRngxUmtVd1JqOHBQM3hiWEZ4MVJFUkNNQzFjWEhWRVJFSXpYWHhjWEhWRVJERkVYRngxTWpBd1JGeGNkVVE0TTBSYlhGeDFSRU0yT0Z4Y2RVUkROamxkWEZ4MVJEZ3pRMXRjWEhWRVJrWkNYRngxUkVaR1ExeGNkVVJHUmtWY1hIVkVSa1pHWFNrcEtUOThYRngxUkVaR1JTZy9PbHhjZFRJd01FUW9QenBiWEZ4MU1qWTVOVnhjZFRJMk9UWmNYSFV5TnpBNFhWeGNkVVpGTUVZL2ZGeGNkVEkzTmpSY1hIVkdSVEJHUDF4Y2RUSXdNRVJjWEhWRU9ETkVLRDg2VzF4Y2RVUkROamhjWEhWRVF6WTVYWHhjWEhWRVF6aENYRngxTWpBd1JGeGNkVVE0TTBSYlhGeDFSRU0yT0Z4Y2RVUkROamxkS1Z4Y2RVUTRNME5iWEZ4MVJFWkdRaTFjWEhWRVJrWkdYWHhjWEhWRU9ETkRXMXhjZFVSR00wVmNYSFZFUmpjelhGeDFSRVkzUTF4Y2RVUkdPVE5jWEhWRVJrRTBYRngxUkVaQk9GeGNkVVJHUlVKY1hIVkVSa1ZFWFh4Y1hIVkVPRE5FVzF4Y2RVUkRRa0pjWEhWRVEwSkRYRngxUkVReU4xeGNkVVJFTWtOY1hIVkVSVGd3WEZ4MVJFVTVNbDE4WEZ4MVJEZ3pSU2cvT2x0Y1hIVkVSRUZHWEZ4MVJFUkNRMXhjZFVSRVFrUmRLRDg2WEZ4MU1qQXdSRnhjZFRJM1FURmNYSFZHUlRCR1B5ay9mRnRjWEhWRVJFSXdMVnhjZFVSRVFqTmRmRnhjZFVSRU1VUmNYSFV5TURCRVhGeDFSRGd6UkZ0Y1hIVkVRelk0WEZ4MVJFTTJPVjFjWEhWRU9ETkRXMXhjZFVSR1JrSXRYRngxUkVaR1JGeGNkVVJHUmtaZEtTa3BQM3hjWEhWRVJrWkdLRDg2WEZ4MU1qQXdSQ2cvT2x0Y1hIVXlOamsxWEZ4MU1qWTVObHhjZFRJM01EaGRYRngxUmtVd1JqOThYRngxTWpjMk5GeGNkVVpGTUVZL1hGeDFNakF3UkZ4Y2RVUTRNMFFvUHpwYlhGeDFSRU0yT0Z4Y2RVUkROamxkZkZ4Y2RVUkRPRUpjWEhVeU1EQkVYRngxUkRnelJGdGNYSFZFUXpZNFhGeDFSRU0yT1YwcFhGeDFSRGd6UTF0Y1hIVkVSa1pDTFZ4Y2RVUkdSa1pkZkZ4Y2RVUTRNME5iWEZ4MVJFWXpSVnhjZFVSR056TmNYSFZFUmpkRFhGeDFSRVk1TTF4Y2RVUkdRVFJjWEhWRVJrRTRYRngxUkVaRlFseGNkVVJHUlVSZGZGeGNkVVE0TTBSYlhGeDFSRU5DUWx4Y2RVUkRRa05jWEhWRVJESTNYRngxUkVReVExeGNkVVJGT0RCY1hIVkVSVGt5WFh4Y1hIVkVPRE5GS0Q4NlcxeGNkVVJFUVVaY1hIVkVSRUpEWEZ4MVJFUkNSRjBvUHpwY1hIVXlNREJFWEZ4MU1qZEJNVnhjZFVaRk1FWS9LVDk4VzF4Y2RVUkVRakF0WEZ4MVJFUkNNMTE4WEZ4MVJFUXhSRnhjZFRJd01FUmNYSFZFT0RORVcxeGNkVVJETmpoY1hIVkVRelk1WFZ4Y2RVUTRNME5iWEZ4MVJFWkdRaTFjWEhWRVJrWkZYU2twS1Q4cEtUOThYRngxUkVNMlJpZy9PbHhjZFRJd01FUmJYRngxTWpZME1GeGNkVEkyTkRKZFhGeDFSa1V3Umo4cFAzeGNYSFZFUkRjMUtEODZYRngxUkRnelExdGNYSFZFUmtaQ0xWeGNkVVJHUmtaZGZGeGNkVVpGTUVZcFB5Zy9PbHhjZFRJd01FUmJYRngxTWpZME1GeGNkVEkyTkRKZFhGeDFSa1V3Umo4cFAzeGNYSFZFUlRKRktEODZYRngxTWpBd1JGeGNkVVE0TTBSY1hIVkVRMEU0S1Q5OFhGeDFSRVV6TlNnL09seGNkVEl3TUVSY1hIVkVPRE5FWEZ4MVJFTkJRaWsvZkZ4Y2RVUkZNellvUHpwY1hIVXlNREJFWEZ4MVJEZ3pRMXhjZFVSR01rSmNYSFZHUlRCR1B5ay9mRnhjZFVSRk5ESW9QenBjWEhVeU1EQkVXMXhjZFRJeE9UUmNYSFV5TVRrMVhWeGNkVVpGTUVZL0tUOThYRngxUkVWQ05pZy9PbHhjZFVRNE0wTmJYRngxUkVaR1FpMWNYSFZFUmtaR1hTay9LRDg2WEZ4MU1qQXdSQ2cvT2x0Y1hIVXlOalF3WEZ4MU1qWTBNbDFjWEhWR1JUQkdQeWcvT2x4Y2RUSXdNRVJjWEhVeU4wRXhYRngxUmtVd1JqOHBQM3hjWEhVeU4wRXhYRngxUmtVd1JqOHBLVDhwZkZ4Y2RVUTRNMFVvUHpwYlhGeDFSRVF3UTF4Y2RVUkVNRVpjWEhWRVJERTRMVnhjZFVSRU1VWmNYSFZFUkRNd0xWeGNkVVJFTXpSY1hIVkVSRE0yWEZ4MVJFUTNOMXhjZFVSRVFqVmNYSFZFUkVJMlhGeDFSRVJDUWx4Y2RVUkVSREpjWEhWRVJFUXpYRngxUkVSRU5WeGNkVVJGUXpNdFhGeDFSRVZETlZ4Y2RVUkZSakJjWEhWRVJVWXlMVnhjZFVSRlJqaGRLRDg2WEZ4MVJEZ3pRMXRjWEhWRVJrWkNMVnhjZFVSR1JrWmRLVDk4VzF4Y2RVUkVNalpjWEhWRVJETTFYRngxUkVRek55MWNYSFZFUkRNNVhGeDFSRVF6UkZ4Y2RVUkVNMFZjWEhWRVJFSTRYRngxUkVSQ09WeGNkVVJFUTBSY1hIVkVSRU5HWEZ4MVJFUkVORnhjZFVSRVJEWXRYRngxUkVSRVJGMG9QenBjWEhWRU9ETkRXMXhjZFVSR1JrSXRYRngxUkVaR1JsMHBQeWcvT2x4Y2RUSXdNRVJiWEZ4MU1qWTBNRnhjZFRJMk5ESmRYRngxUmtVd1JqOHBQM3hiWEZ4MVJFUkVSVnhjZFVSRVJFWmRLRDg2WEZ4MU1qQXdSRnRjWEhVeU5qUXdYRngxTWpZME1sMWNYSFZHUlRCR1B5ay9mRnRjWEhWRVJEQkVYRngxUkVRd1JWeGNkVVJFTVRBdFhGeDFSRVF4TjF4Y2RVUkVNakF0WEZ4MVJFUXlOVnhjZFVSRU1qY3RYRngxUkVReVJseGNkVVJFTTBGY1hIVkVSRE5HTFZ4Y2RVUkVORFZjWEhWRVJEUTNMVnhjZFVSRU56WmNYSFZFUkRjNExWeGNkVVJFUWpSY1hIVkVSRUkzWEZ4MVJFUkNRVnhjZFVSRVFrTXRYRngxUkVSRFExeGNkVVJFUkRCY1hIVkVSRVV3TFZ4Y2RVUkVSa1pjWEhWRVJUY3dMVnhjZFVSRk4wTmNYSFZFUlRnd0xWeGNkVVJGT0RsY1hIVkVSVGhHTFZ4Y2RVUkZRekpjWEhWRVJVTTJYRngxUkVWRFJTMWNYSFZFUlVSRFhGeDFSRVZFUmkxY1hIVkVSVVU1WFh4Y1hIVkVSRE5ES0Q4NlhGeDFNakF3UkZ0Y1hIVXlOalF3WEZ4MU1qWTBNbDFjWEhWR1JUQkdQM3hjWEhWRU9ETkRXMXhjZFVSR1JrSXRYRngxUkVaR1JsMHBQM3hjWEhWRVJFTkZLRDg2WEZ4MVJEZ3pRMXRjWEhWRVJrWkNMVnhjZFVSR1JrWmRLVDhvUHpwY1hIVXlNREJFS0Q4NlcxeGNkVEkyTkRCY1hIVXlOalF5WFZ4Y2RVWkZNRVkvS0Q4NlhGeDFNakF3UkZ4Y2RUSTNRVEZjWEhWR1JUQkdQeWsvZkZ4Y2RUSTNRVEZjWEhWR1JUQkdQeWtwUDN4Y1hIVkVSRVF4S0Q4NlhGeDFNakF3UkNnL09sdGNYSFV5TmprMVhGeDFNalk1Tmx4Y2RUSTNNRGhkWEZ4MVJrVXdSajk4WEZ4MVJEZ3pRMXRjWEhWRVJqTkZYRngxUkVZM00xeGNkVVJHTjBOY1hIVkVSamcwWEZ4MVJFWTVNMXhjZFVSR1FUUmNYSFZFUmtFNFhGeDFSRVpGUWx4Y2RVUkdSVVJkZkZ4Y2RVUTRNMFJiWEZ4MVJFTkNRbHhjZFVSRFFrTmNYSFZFUkRJM1hGeDFSRVF5UTF4Y2RVUkZPREJjWEhWRVJUa3lYWHhjWEhWRU9ETkZLRDg2VzF4Y2RVUkVRVVpjWEhWRVJFSkRYRngxUkVSQ1JGMG9QenBjWEhVeU1EQkVYRngxTWpkQk1WeGNkVVpGTUVZL0tUOThXMXhjZFVSRVFqQXRYRngxUkVSQ00xMThYRngxUkVReFJGeGNkVEl3TUVSY1hIVkVPRE5GWEZ4MVJFUkVNWHhjWEhWRVJFUXhYRngxTWpBd1JGeGNkVVE0TTBWY1hIVkVSRVF5S0Q4NlhGeDFNakF3UkZ4Y2RVUTRNMFZjWEhWRVJFUXlLVDk4WEZ4MVJFUkVNaWcvT2x4Y2RUSXdNRVJjWEhWRU9ETkZYRngxUkVSRU1pay9LU2w4WEZ4MVJEZ3pReWcvT2x4Y2RVUkdSa0lvUHpwY1hIVXlNREJFS0Q4NlcxeGNkVEkyT1RWY1hIVXlOamsyWEZ4MU1qY3dPRjFjWEhWR1JUQkdQM3hjWEhVeU56WTBYRngxUmtVd1JqOWNYSFV5TURCRUtEODZYRngxUkRnelJGeGNkVVJET0VKY1hIVXlNREJFS1Q5Y1hIVkVPRE5GWEZ4MVJFUkVNVnhjZFVRNE0wTmJYRngxUkVaR1F5MWNYSFZFUmtaR1hYeGNYSFZFT0RORFcxeGNkVVJHTTBWY1hIVkVSamN6WEZ4MVJFWTNRMXhjZFVSR09EUmNYSFZFUmprelhGeDFSRVpCTkZ4Y2RVUkdRVGhjWEhWRVJrVkNYRngxUkVaRlJGMThYRngxUkRnelJGdGNYSFZFUTBKQ1hGeDFSRU5DUTF4Y2RVUkVNamRjWEhWRVJESkRYRngxUkVVNE1GeGNkVVJGT1RKZGZGeGNkVVE0TTBVb1B6cGJYRngxUkVSQlJseGNkVVJFUWtOY1hIVkVSRUpFWFNnL09seGNkVEl3TUVSY1hIVXlOMEV4WEZ4MVJrVXdSajhwUDN4YlhGeDFSRVJDTUMxY1hIVkVSRUl6WFh4Y1hIVkVSREZFWEZ4MU1qQXdSRnhjZFVRNE0wVmNYSFZFUkVReFhGeDFSRGd6UTF0Y1hIVkVSa1pDTFZ4Y2RVUkdSa1pkS1NrcFAzeGNYSFZFUmtaREtEODZYRngxTWpBd1JDZy9PbHRjWEhVeU5qazFYRngxTWpZNU5seGNkVEkzTURoZFhGeDFSa1V3Umo5OFhGeDFNamMyTkZ4Y2RVWkZNRVkvWEZ4MU1qQXdSQ2cvT2x4Y2RVUTRNMFJjWEhWRVF6aENYRngxTWpBd1JDay9YRngxUkRnelJWeGNkVVJFUkRGY1hIVkVPRE5EVzF4Y2RVUkdSa0pjWEhWRVJrWkVMVnhjZFVSR1JrWmRmRnhjZFVRNE0wTmJYRngxUkVZelJWeGNkVVJHTnpOY1hIVkVSamREWEZ4MVJFWTRORnhjZFVSR09UTmNYSFZFUmtFMFhGeDFSRVpCT0Z4Y2RVUkdSVUpjWEhWRVJrVkVYWHhjWEhWRU9ETkVXMXhjZFVSRFFrSmNYSFZFUTBKRFhGeDFSRVF5TjF4Y2RVUkVNa05jWEhWRVJUZ3dYRngxUkVVNU1sMThYRngxUkRnelJTZy9PbHRjWEhWRVJFRkdYRngxUkVSQ1ExeGNkVVJFUWtSZEtEODZYRngxTWpBd1JGeGNkVEkzUVRGY1hIVkdSVEJHUHlrL2ZGdGNYSFZFUkVJd0xWeGNkVVJFUWpOZGZGeGNkVVJFTVVSY1hIVXlNREJFWEZ4MVJEZ3pSVnhjZFVSRVJERmNYSFZFT0RORFcxeGNkVVJHUmtJdFhGeDFSRVpHUmwwcEtTay9mRnhjZFVSR1JrUW9QenBjWEhVeU1EQkVLRDg2VzF4Y2RUSTJPVFZjWEhVeU5qazJYRngxTWpjd09GMWNYSFZHUlRCR1AzeGNYSFV5TnpZMFhGeDFSa1V3Umo5Y1hIVXlNREJFS0Q4NlhGeDFSRGd6UkZ4Y2RVUkRPRUpjWEhVeU1EQkVLVDljWEhWRU9ETkZYRngxUkVSRU1WeGNkVVE0TTBOYlhGeDFSRVpHUWx4Y2RVUkdSa05jWEhWRVJrWkZYRngxUkVaR1JsMThYRngxUkRnelExdGNYSFZFUmpORlhGeDFSRVkzTTF4Y2RVUkdOME5jWEhWRVJqZzBYRngxUkVZNU0xeGNkVVJHUVRSY1hIVkVSa0U0WEZ4MVJFWkZRbHhjZFVSR1JVUmRmRnhjZFVRNE0wUmJYRngxUkVOQ1FseGNkVVJEUWtOY1hIVkVSREkzWEZ4MVJFUXlRMXhjZFVSRk9EQmNYSFZFUlRreVhYeGNYSFZFT0RORktEODZXMXhjZFVSRVFVWmNYSFZFUkVKRFhGeDFSRVJDUkYwb1B6cGNYSFV5TURCRVhGeDFNamRCTVZ4Y2RVWkZNRVkvS1Q5OFcxeGNkVVJFUWpBdFhGeDFSRVJDTTExOFhGeDFSRVF4UkZ4Y2RUSXdNRVJjWEhWRU9ETkZYRngxUkVSRU1WeGNkVVE0TTBOYlhGeDFSRVpHUWkxY1hIVkVSa1pHWFNrcEtUOThYRngxUkVaR1JTZy9PbHhjZFRJd01FUW9QenBiWEZ4MU1qWTVOVnhjZFRJMk9UWmNYSFV5TnpBNFhWeGNkVVpGTUVZL2ZGeGNkVEkzTmpSY1hIVkdSVEJHUDF4Y2RUSXdNRVFvUHpwY1hIVkVPRE5FWEZ4MVJFTTRRbHhjZFRJd01FUXBQMXhjZFVRNE0wVmNYSFZFUkVReFhGeDFSRGd6UTF0Y1hIVkVSa1pDTFZ4Y2RVUkdSa1JjWEhWRVJrWkdYWHhjWEhWRU9ETkRXMXhjZFVSR00wVmNYSFZFUmpjelhGeDFSRVkzUTF4Y2RVUkdPRFJjWEhWRVJqa3pYRngxUkVaQk5GeGNkVVJHUVRoY1hIVkVSa1ZDWEZ4MVJFWkZSRjE4WEZ4MVJEZ3pSRnRjWEhWRVEwSkNYRngxUkVOQ1ExeGNkVVJFTWpkY1hIVkVSREpEWEZ4MVJFVTRNRnhjZFVSRk9USmRmRnhjZFVRNE0wVW9QenBiWEZ4MVJFUkJSbHhjZFVSRVFrTmNYSFZFUkVKRVhTZy9PbHhjZFRJd01FUmNYSFV5TjBFeFhGeDFSa1V3Umo4cFAzeGJYRngxUkVSQ01DMWNYSFZFUkVJelhYeGNYSFZFUkRGRVhGeDFNakF3UkZ4Y2RVUTRNMFZjWEhWRVJFUXhYRngxUkRnelExdGNYSFZFUmtaQ0xWeGNkVVJHUmtaZEtTa3BQM3hjWEhWRVJrWkdLRDg2WEZ4MU1qQXdSQ2cvT2x0Y1hIVXlOamsxWEZ4MU1qWTVObHhjZFRJM01EaGRYRngxUmtVd1JqOThYRngxTWpjMk5GeGNkVVpGTUVZL1hGeDFNakF3UkNnL09seGNkVVE0TTBSY1hIVkVRemhDWEZ4MU1qQXdSQ2svWEZ4MVJEZ3pSVnhjZFVSRVJERmNYSFZFT0RORFcxeGNkVVJHUmtJdFhGeDFSRVpHUlYxOFhGeDFSRGd6UTF0Y1hIVkVSak5GWEZ4MVJFWTNNMXhjZFVSR04wTmNYSFZFUmpnMFhGeDFSRVk1TTF4Y2RVUkdRVFJjWEhWRVJrRTRYRngxUkVaRlFseGNkVVJHUlVSZGZGeGNkVVE0TTBSYlhGeDFSRU5DUWx4Y2RVUkRRa05jWEhWRVJESTNYRngxUkVReVExeGNkVVJGT0RCY1hIVkVSVGt5WFh4Y1hIVkVPRE5GS0Q4NlcxeGNkVVJFUVVaY1hIVkVSRUpEWEZ4MVJFUkNSRjBvUHpwY1hIVXlNREJFWEZ4MU1qZEJNVnhjZFVaRk1FWS9LVDk4VzF4Y2RVUkVRakF0WEZ4MVJFUkNNMTE4WEZ4MVJFUXhSRnhjZFRJd01FUmNYSFZFT0RORlhGeDFSRVJFTVZ4Y2RVUTRNME5iWEZ4MVJFWkdRaTFjWEhWRVJrWkdYU2twS1Q4cEtUOThYRngxUkVWR01TZy9PbHhjZFVRNE0wTW9QenBjWEhWRVJrWkNLRDg2WEZ4MU1qQXdSRnhjZFVRNE0wVmNYSFZFUlVZeVhGeDFSRGd6UTF0Y1hIVkVSa1pETFZ4Y2RVUkdSa1pkS1Q5OFhGeDFSRVpHUXlnL09seGNkVEl3TUVSY1hIVkVPRE5GWEZ4MVJFVkdNbHhjZFVRNE0wTmJYRngxUkVaR1FseGNkVVJHUmtRdFhGeDFSRVpHUmwwcFAzeGNYSFZFUmtaRUtEODZYRngxTWpBd1JGeGNkVVE0TTBWY1hIVkVSVVl5WEZ4MVJEZ3pRMXRjWEhWRVJrWkNYRngxUkVaR1ExeGNkVVJHUmtWY1hIVkVSa1pHWFNrL2ZGeGNkVVJHUmtVb1B6cGNYSFV5TURCRVhGeDFSRGd6UlZ4Y2RVUkZSakpjWEhWRU9ETkRXMXhjZFVSR1JrSXRYRngxUkVaR1JGeGNkVVJHUmtaZEtUOThYRngxUkVaR1JpZy9PbHhjZFRJd01FUmNYSFZFT0RORlhGeDFSRVZHTWx4Y2RVUTRNME5iWEZ4MVJFWkdRaTFjWEhWRVJrWkZYU2svS1NrL0tTOW5PMXh1ZlR0Y2JpSXNJQ0pwYlhCdmNuUWdleUJuWlhSR2FXeGxWR2wwYkdVc0lHNXZjbTFoYkdsNlpVaGxZV1JsY2tadmNreHBibXNnZlNCbWNtOXRJRndpZFhScGJITXZibTl5YldGc2FYcGxjbk5jSWp0Y2JseHVMeW9xSUZSb1pTQlBZbk5wWkdsaGJpQW5iR2x1YXljc0lIVnpaV1FnWm05eUlIVnVhWEYxWld4NUlHUmxjMk55YVdKcGJtY2dZU0JtYVd4bExDQm9aV0ZrWlhJc0lHOXlJR0pzYjJOckxseHVJQ29nUUdkeWIzVndJRU52YlcxdmJpQlVlWEJsYzF4dUlDb3ZYRzVsZUhCdmNuUWdZMnhoYzNNZ1RHbHVheUI3WEc0Z0lDQWdMeW9xSUZSb1pTQm1hV3hsSUhCaGRHZ2dkR2hwY3lCc2FXNXJJSEJ2YVc1MGN5QjBieTRnS2k5Y2JpQWdJQ0J3ZFdKc2FXTWdjR0YwYURvZ2MzUnlhVzVuTzF4dUlDQWdJQzhxS2lCVWFHVWdaR2x6Y0d4aGVTQnVZVzFsSUdGemMyOWphV0YwWldRZ2QybDBhQ0IwYUdVZ2JHbHVheTRnS2k5Y2JpQWdJQ0J3ZFdKc2FXTWdaR2x6Y0d4aGVUODZJSE4wY21sdVp6dGNiaUFnSUNBdktpb2dWR2hsSUdKc2IyTnJJRWxFSUc5eUlHaGxZV1JsY2lCMGFHbHpJR3hwYm1zZ2NHOXBiblJ6SUhSdklIZHBkR2hwYmlCaElHWnBiR1VzSUdsbUlISmxiR1YyWVc1MExpQXFMMXh1SUNBZ0lIQjFZbXhwWXlCemRXSndZWFJvUHpvZ2MzUnlhVzVuTzF4dUlDQWdJQzhxS2lCSmN5QjBhR2x6SUd4cGJtc2dZVzRnWlcxaVpXUmtaV1FnYkdsdWF5QW9iMllnWm05eWJTQW5JVnRiYUdWc2JHOWRYU2NwUHlBcUwxeHVJQ0FnSUhCMVlteHBZeUJsYldKbFpEb2dZbTl2YkdWaGJqdGNiaUFnSUNBdktpb2dWR2hsSUhSNWNHVWdiMllnZEdocGN5QnNhVzVyTENCM2FHbGphQ0JrWlhSbGNtMXBibVZ6SUhkb1lYUWdKM04xWW5CaGRHZ25JSEpsWm1WeWN5QjBieXdnYVdZZ1lXNTVkR2hwYm1jdUlDb3ZYRzRnSUNBZ2NIVmliR2xqSUhSNWNHVTZJRndpWm1sc1pWd2lJSHdnWENKb1pXRmtaWEpjSWlCOElGd2lZbXh2WTJ0Y0lqdGNibHh1SUNBZ0lDOHFLaUJEY21WaGRHVWdZU0JzYVc1cklIUnZJR0VnYzNCbFkybG1hV01nWm1sc1pTNGdLaTljYmlBZ0lDQndkV0pzYVdNZ2MzUmhkR2xqSUdacGJHVW9jR0YwYURvZ2MzUnlhVzVuTENCbGJXSmxaRG9nWW05dmJHVmhiaUE5SUdaaGJITmxMQ0JrYVhOd2JHRjVQem9nYzNSeWFXNW5LVG9nVEdsdWF5QjdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQnVaWGNnVEdsdWF5aDdYRzRnSUNBZ0lDQWdJQ0FnSUNCd1lYUm9MRnh1SUNBZ0lDQWdJQ0FnSUNBZ1pXMWlaV1FzWEc0Z0lDQWdJQ0FnSUNBZ0lDQmthWE53YkdGNUxGeHVJQ0FnSUNBZ0lDQWdJQ0FnYzNWaWNHRjBhRG9nZFc1a1pXWnBibVZrTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdkSGx3WlRvZ1hDSm1hV3hsWENJc1hHNGdJQ0FnSUNBZ0lIMHBPMXh1SUNBZ0lIMWNibHh1SUNBZ0lDOHFLaUJKYm1abGNpQjBhR1VnZEhsd1pTQnZaaUIwYUdVZ2JHbHVheUJtY205dElIUm9aU0JtZFd4c0lHbHVkR1Z5Ym1Gc0lHeHBibXNnY0dGMGFDNGdLaTljYmlBZ0lDQndkV0pzYVdNZ2MzUmhkR2xqSUdsdVptVnlLR3hwYm10d1lYUm9PaUJ6ZEhKcGJtY3NJR1Z0WW1Wa09pQmliMjlzWldGdUlEMGdabUZzYzJVc0lHUnBjM0JzWVhrL09pQnpkSEpwYm1jcE9pQk1hVzVySUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLR3hwYm10d1lYUm9MbWx1WTJ4MVpHVnpLRndpSTE1Y0lpa3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHeGxkQ0J6Y0d4cGRDQTlJR3hwYm10d1lYUm9Mbk53YkdsMEtGd2lJMTVjSWlrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdUR2x1YXk1aWJHOWpheWh6Y0d4cGRGc3dYU3dnYzNCc2FYUmJNVjBzSUdWdFltVmtMQ0JrYVhOd2JHRjVLVHRjYmlBZ0lDQWdJQ0FnZlNCbGJITmxJR2xtSUNoc2FXNXJjR0YwYUM1cGJtTnNkV1JsY3loY0lpTmNJaWtwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJR3hsZENCemNHeHBkQ0E5SUd4cGJtdHdZWFJvTG5Od2JHbDBLRndpSTF3aUtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJNYVc1ckxtaGxZV1JsY2loemNHeHBkRnN3WFN3Z2MzQnNhWFJiTVYwc0lHVnRZbVZrTENCa2FYTndiR0Y1S1R0Y2JpQWdJQ0FnSUNBZ2ZTQmxiSE5sSUhKbGRIVnliaUJNYVc1ckxtWnBiR1VvYkdsdWEzQmhkR2dzSUdWdFltVmtMQ0JrYVhOd2JHRjVLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQXZLaW9nUTNKbFlYUmxJR0VnYkdsdWF5QjBieUJoSUhOd1pXTnBabWxqSUdacGJHVWdZVzVrSUdobFlXUmxjaUJwYmlCMGFHRjBJR1pwYkdVdUlDb3ZYRzRnSUNBZ2NIVmliR2xqSUhOMFlYUnBZeUJvWldGa1pYSW9jR0YwYURvZ2MzUnlhVzVuTENCb1pXRmtaWEk2SUhOMGNtbHVaeXdnWlcxaVpXUS9PaUJpYjI5c1pXRnVMQ0JrYVhOd2JHRjVQem9nYzNSeWFXNW5LVG9nVEdsdWF5QjdYRzRnSUNBZ0lDQWdJQzh2SUVobFlXUmxjbk1nYm1WbFpDQjBieUJpWlNCdWIzSnRZV3hwZW1Wa0lIUnZJR0ZzY0doaExXNTFiV1Z5YVdNZ0ppQjNhWFJvSUdWNGRISmhJSE53WVdOcGJtY2djbVZ0YjNabFpDNWNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlHNWxkeUJNYVc1cktIdGNiaUFnSUNBZ0lDQWdJQ0FnSUhCaGRHZ3NYRzRnSUNBZ0lDQWdJQ0FnSUNCbGJXSmxaQ3hjYmlBZ0lDQWdJQ0FnSUNBZ0lHUnBjM0JzWVhrc1hHNGdJQ0FnSUNBZ0lDQWdJQ0J6ZFdKd1lYUm9PaUJ1YjNKdFlXeHBlbVZJWldGa1pYSkdiM0pNYVc1cktHaGxZV1JsY2lrc1hHNGdJQ0FnSUNBZ0lDQWdJQ0IwZVhCbE9pQmNJbWhsWVdSbGNsd2lMRnh1SUNBZ0lDQWdJQ0I5S1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0F2S2lvZ1EzSmxZWFJsSUdFZ2JHbHVheUIwYnlCaElITndaV05wWm1saklHWnBiR1VnWVc1a0lHSnNiMk5ySUdsdUlIUm9ZWFFnWm1sc1pTNGdLaTljYmlBZ0lDQndkV0pzYVdNZ2MzUmhkR2xqSUdKc2IyTnJLSEJoZEdnNklITjBjbWx1Wnl3Z1lteHZZMnRKWkRvZ2MzUnlhVzVuTENCbGJXSmxaRDg2SUdKdmIyeGxZVzRzSUdScGMzQnNZWGsvT2lCemRISnBibWNwT2lCTWFXNXJJSHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJRzVsZHlCTWFXNXJLSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIQmhkR2dzWEc0Z0lDQWdJQ0FnSUNBZ0lDQmxiV0psWkN4Y2JpQWdJQ0FnSUNBZ0lDQWdJR1JwYzNCc1lYa3NYRzRnSUNBZ0lDQWdJQ0FnSUNCemRXSndZWFJvT2lCaWJHOWphMGxrTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdkSGx3WlRvZ1hDSmliRzlqYTF3aUxGeHVJQ0FnSUNBZ0lDQjlLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQXZLaW9nVEc5aFpDQmhJR3hwYm1zZ1puSnZiU0JwZENkeklISmhkeUJLVTA5T0lISmxjSEpsYzJWdWRHRjBhVzl1TGlBcUwxeHVJQ0FnSUhCMVlteHBZeUJ6ZEdGMGFXTWdabkp2YlU5aWFtVmpkQ2h2WW1wbFkzUTZJRXB6YjI1TWFXNXJLVG9nVEdsdWF5QjdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQnVaWGNnVEdsdWF5aHZZbXBsWTNRcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUM4cUtpQkRjbVZoZEdVZ1lTQnNhVzVySUdKNUlIQmhjbk5wYm1jZ2FYUW5jeUJwYm5SbGNtbHZjaUJ3WVhKMElDaHBibk5wWkdVZ2IyWWdkR2hsSUNkYlcxMWRKeWt1SUNvdlhHNGdJQ0FnY0hWaWJHbGpJSE4wWVhScFl5QndZWEp6WlVsdWJtVnlLSEpoZDJ4cGJtczZJSE4wY21sdVp5azZJRXhwYm1zZ2UxeHVJQ0FnSUNBZ0lDQnNaWFFnVzJ4cGJtc3NJR1JwYzNCc1lYbGRJRDBnYzNCc2FYUlBibFZ1WlhOallYQmxaRkJwY0dVb2NtRjNiR2x1YXlrN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCTWFXNXJMbWx1Wm1WeUtHeHBibXNzSUdaaGJITmxMQ0JrYVhOd2JHRjVLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQndjbWwyWVhSbElHTnZibk4wY25WamRHOXlLR1pwWld4a2N6b2dVR0Z5ZEdsaGJEeE1hVzVyUGlrZ2UxeHVJQ0FnSUNBZ0lDQlBZbXBsWTNRdVlYTnphV2R1S0hSb2FYTXNJR1pwWld4a2N5azdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ0x5b3FJRlZ3WkdGMFpTQjBhR2x6SUd4cGJtc2dkMmwwYUNCaElHNWxkeUJ3WVhSb0xpQXFMMXh1SUNBZ0lIQjFZbXhwWXlCM2FYUm9VR0YwYUNod1lYUm9PaUJ6ZEhKcGJtY3BPaUJNYVc1cklIdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlHNWxkeUJNYVc1cktFOWlhbVZqZEM1aGMzTnBaMjRvZTMwc0lIUm9hWE1zSUhzZ2NHRjBhQ0I5S1NrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnTHlvcUlGSmxkSFZ5YmlCaElHNWxkeUJzYVc1cklIZG9hV05vSUhCdmFXNTBjeUIwYnlCMGFHVWdjMkZ0WlNCc2IyTmhkR2x2YmlCaWRYUWdkMmwwYUNCaElHNWxkeUJrYVhOd2JHRjVJSFpoYkhWbExpQXFMMXh1SUNBZ0lIQjFZbXhwWXlCM2FYUm9SR2x6Y0d4aGVTaGthWE53YkdGNVB6b2djM1J5YVc1bktUb2dUR2x1YXlCN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCdVpYY2dUR2x1YXloUFltcGxZM1F1WVhOemFXZHVLSHQ5TENCMGFHbHpMQ0I3SUdScGMzQnNZWGtnZlNrcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUM4cUtpQlNaWFIxY200Z1lTQnVaWGNnYkdsdWF5QjNhR2xqYUNCb1lYTWdkR2hsSUdkcGRtVnVJR1Z0WW1Wa1pHVmtJSE4wWVhSMWN5NGdLaTljYmlBZ0lDQndkV0pzYVdNZ2QybDBhRVZ0WW1Wa0tHVnRZbVZrT2lCaWIyOXNaV0Z1S1RvZ1RHbHVheUI3WEc0Z0lDQWdJQ0FnSUdsbUlDaDBhR2x6TG1WdFltVmtJRDA5SUdWdFltVmtLU0J5WlhSMWNtNGdkR2hwY3p0Y2JseHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2JtVjNJRXhwYm1zb1QySnFaV04wTG1GemMybG5iaWg3ZlN3Z2RHaHBjeXdnZXlCbGJXSmxaQ0I5S1NrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnTHlvcUlFTnZiblpsY25RZ1lTQm1hV3hsSUd4cGJtc2dhVzUwYnlCaElHeHBibXNnZEc4Z1lTQnpjR1ZqYVdacFl5Qm9aV0ZrWlhJdUlDb3ZYRzRnSUNBZ2NIVmliR2xqSUhkcGRHaElaV0ZrWlhJb2FHVmhaR1Z5T2lCemRISnBibWNwT2lCTWFXNXJJSHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJRXhwYm1zdWFHVmhaR1Z5S0hSb2FYTXVjR0YwYUN3Z2FHVmhaR1Z5TENCMGFHbHpMbVZ0WW1Wa0xDQjBhR2x6TG1ScGMzQnNZWGtwTzF4dUlDQWdJSDFjYmx4dUlDQWdJQzhxS2lCRGIyNTJaWEowSUdFZ1ptbHNaU0JzYVc1cklHbHVkRzhnWVNCc2FXNXJJSFJ2SUdFZ2MzQmxZMmxtYVdOaUlHeHZZMnN1SUNvdlhHNGdJQ0FnY0hWaWJHbGpJSGRwZEdoQ2JHOWpheWhpYkc5amF6b2djM1J5YVc1bktUb2dUR2x1YXlCN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCTWFXNXJMbUpzYjJOcktIUm9hWE11Y0dGMGFDd2dZbXh2WTJzc0lIUm9hWE11WlcxaVpXUXNJSFJvYVhNdVpHbHpjR3hoZVNrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnTHlvcUlFTm9aV05yY3lCbWIzSWdiR2x1YXlCbGNYVmhiR2wwZVNBb2FTNWxMaXdnZEdoaGRDQjBhR1VnYkdsdWEzTWdZWEpsSUhCdmFXNTBhVzVuSUhSdklIUm9aU0J6WVcxbElHVjRZV04wSUd4dlkyRjBhVzl1S1M0Z0tpOWNiaUFnSUNCd2RXSnNhV01nWlhGMVlXeHpLRzkwYUdWeU9pQk1hVzVyS1RvZ1ltOXZiR1ZoYmlCN1hHNGdJQ0FnSUNBZ0lHbG1JQ2h2ZEdobGNpQTlQU0IxYm1SbFptbHVaV1FnZkh3Z2IzUm9aWElnUFQwZ2JuVnNiQ2tnY21WMGRYSnVJR1poYkhObE8xeHVYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQjBhR2x6TG5CaGRHZ2dQVDBnYjNSb1pYSXVjR0YwYUNBbUppQjBhR2x6TG5SNWNHVWdQVDBnYjNSb1pYSXVkSGx3WlNBbUppQjBhR2x6TG5OMVluQmhkR2dnUFQwZ2IzUm9aWEl1YzNWaWNHRjBhRHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQXZLaW9nUTI5dWRtVnlkQ0IwYUdseklHeHBibXNnZEc4Z2FYUW5jeUJ0WVhKclpHOTNiaUJ5WlhCeVpYTmxiblJoZEdsdmJpNGdLaTljYmlBZ0lDQndkV0pzYVdNZ2RHOVRkSEpwYm1jb0tUb2djM1J5YVc1bklIdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlIUm9hWE11YldGeWEyUnZkMjRvS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0F2S2lvZ1EyOXVkbVZ5ZENCMGFHbHpJR3hwYm1zZ2RHOGdZU0J5WVhjZ2IySnFaV04wSUhkb2FXTm9JR2x6SUhObGNtbGhiR2w2WVhScGIyNHRabkpwWlc1a2JIa3VJQ292WEc0Z0lDQWdjSFZpYkdsaklIUnZUMkpxWldOMEtDazZJRXB6YjI1TWFXNXJJSHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIQmhkR2c2SUhSb2FYTXVjR0YwYUN4Y2JpQWdJQ0FnSUNBZ0lDQWdJSFI1Y0dVNklIUm9hWE11ZEhsd1pTeGNiaUFnSUNBZ0lDQWdJQ0FnSUhOMVluQmhkR2c2SUhSb2FYTXVjM1ZpY0dGMGFDeGNiaUFnSUNBZ0lDQWdJQ0FnSUdScGMzQnNZWGs2SUhSb2FYTXVaR2x6Y0d4aGVTeGNiaUFnSUNBZ0lDQWdJQ0FnSUdWdFltVmtPaUIwYUdsekxtVnRZbVZrTEZ4dUlDQWdJQ0FnSUNCOU8xeHVJQ0FnSUgxY2JseHVJQ0FnSUM4cUtpQkRiMjUyWlhKMElHRnVlU0JzYVc1cklHbHVkRzhnWVNCc2FXNXJJSFJ2SUdsMGN5Qm1hV3hsTGlBcUwxeHVJQ0FnSUhCMVlteHBZeUIwYjBacGJHVW9LVG9nVEdsdWF5QjdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQk1hVzVyTG1acGJHVW9kR2hwY3k1d1lYUm9MQ0IwYUdsekxtVnRZbVZrTENCMGFHbHpMbVJwYzNCc1lYa3BPMXh1SUNBZ0lIMWNibHh1SUNBZ0lDOHFLaUJEYjI1MlpYSjBJSFJvYVhNZ2JHbHVheUJwYm5SdklHRnVJR1Z0WW1Wa1pHVmtJR3hwYm1zdUlDb3ZYRzRnSUNBZ2NIVmliR2xqSUhSdlJXMWlaV1FvS1RvZ1RHbHVheUI3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUIwYUdsekxuZHBkR2hGYldKbFpDaDBjblZsS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0F2S2lvZ1EyOXVkbVZ5ZENCMGFHbHpJR3hwYm1zZ2FXNTBieUJoSUc1dmJpMWxiV0psWkdSbFpDQnNhVzVyTGlBcUwxeHVJQ0FnSUhCMVlteHBZeUJtY205dFJXMWlaV1FvS1RvZ1RHbHVheUI3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUIwYUdsekxuZHBkR2hGYldKbFpDaG1ZV3h6WlNrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnTHlvcUlFTnZiblpsY25RZ2RHaHBjeUJzYVc1cklIUnZJRzFoY210a2IzZHVJSE52SUdsMElHTmhiaUJpWlNCeVpXNWtaWEpsWkM0Z0tpOWNiaUFnSUNCd2RXSnNhV01nYldGeWEyUnZkMjRvS1RvZ2MzUnlhVzVuSUh0Y2JpQWdJQ0FnSUNBZ2JHVjBJSEpsYzNWc2RDQTlJQ2gwYUdsekxtVnRZbVZrSUQ4Z1hDSWhYQ0lnT2lCY0lsd2lLU0FySUZ3aVcxdGNJaUFySUhSb2FYTXViMkp6YVdScFlXNU1hVzVyS0NrN1hHNGdJQ0FnSUNBZ0lISmxjM1ZzZENBclBTQmNJbnhjSWp0Y2JpQWdJQ0FnSUNBZ2NtVnpkV3gwSUNzOUlIUm9hWE11WkdsemNHeGhlVTl5UkdWbVlYVnNkQ2dwTzF4dUlDQWdJQ0FnSUNCeVpYTjFiSFFnS3owZ1hDSmRYVndpTzF4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnY21WemRXeDBPMXh1SUNBZ0lIMWNibHh1SUNBZ0lDOHFLaUJQWW5SaGFXNGdkR2hsSUdScGMzQnNZWGtnWm05eUlIUm9hWE1nYkdsdWF5QnBaaUJ3Y21WelpXNTBMQ0J2Y2lCeVpYUjFjbTRnWVNCemFXMXdiR1VnWkdWbVlYVnNkQ0JrYVhOd2JHRjVMaUFxTDF4dUlDQWdJSEIxWW14cFl5QmthWE53YkdGNVQzSkVaV1poZFd4MEtDa2dlMXh1SUNBZ0lDQWdJQ0JwWmlBb2RHaHBjeTVrYVhOd2JHRjVLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2RHaHBjeTVrYVhOd2JHRjVPMXh1SUNBZ0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2JHVjBJSEpsYzNWc2RDQTlJR2RsZEVacGJHVlVhWFJzWlNoMGFHbHpMbkJoZEdncE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tIUm9hWE11ZEhsd1pTQTlQU0JjSW1obFlXUmxjbHdpSUh4OElIUm9hWE11ZEhsd1pTQTlQU0JjSW1Kc2IyTnJYQ0lwSUhKbGMzVnNkQ0FyUFNCY0lpQStJRndpSUNzZ2RHaHBjeTV6ZFdKd1lYUm9PMXh1WEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2NtVnpkV3gwTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dVhHNGdJQ0FnTHlvcUlFTnZiblpsY25RZ2RHaGxJR2x1Ym1WeUlIQmhjblFnYjJZZ2RHaGxJR3hwYm1zZ2RHOGdjMjl0WlhSb2FXNW5JSFJvWVhRZ1QySnphV1JwWVc0Z1kyRnVJRzl3Wlc0Z0x5QjFibVJsY25OMFlXNWtMaUFxTDF4dUlDQWdJSEIxWW14cFl5QnZZbk5wWkdsaGJreHBibXNvS1RvZ2MzUnlhVzVuSUh0Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnWlhOallYQmxaQ0E5SUhSb2FYTXVjR0YwYUM1eVpYQnNZV05sS0Z3aWZGd2lMQ0JjSWx4Y1hGeDhYQ0lwTzF4dUlDQWdJQ0FnSUNCcFppQW9kR2hwY3k1MGVYQmxJRDA5SUZ3aWFHVmhaR1Z5WENJcElISmxkSFZ5YmlCbGMyTmhjR1ZrSUNzZ1hDSWpYQ0lnS3lCMGFHbHpMbk4xWW5CaGRHZy9MbkpsY0d4aFkyVW9YQ0o4WENJc0lGd2lYRnhjWEh4Y0lpazdYRzRnSUNBZ0lDQWdJR2xtSUNoMGFHbHpMblI1Y0dVZ1BUMGdYQ0ppYkc5amExd2lLU0J5WlhSMWNtNGdaWE5qWVhCbFpDQXJJRndpSTE1Y0lpQXJJSFJvYVhNdWMzVmljR0YwYUQ4dWNtVndiR0ZqWlNoY0lueGNJaXdnWENKY1hGeGNmRndpS1R0Y2JpQWdJQ0FnSUNBZ1pXeHpaU0J5WlhSMWNtNGdaWE5qWVhCbFpEdGNiaUFnSUNCOVhHNWNiaUFnSUNBdktpb2dWR2hsSUhOMGNtbHdjR1ZrSUc1aGJXVWdiMllnZEdobElHWnBiR1VnZEdocGN5QnNhVzVySUhCdmFXNTBjeUIwYnk0Z0tpOWNiaUFnSUNCd2RXSnNhV01nWm1sc1pVNWhiV1VvS1RvZ2MzUnlhVzVuSUh0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUdkbGRFWnBiR1ZVYVhSc1pTaDBhR2x6TG5CaGRHZ3BPMXh1SUNBZ0lIMWNibjFjYmx4dUx5b3FJRk5sY21saGJHbDZaV1FnWm05eWJTQnZaaUJoSUd4cGJtc3VYRzRnS2lCQWFHbGtaR1Z1WEc0Z0tpOWNibVY0Y0c5eWRDQnBiblJsY21aaFkyVWdTbk52Ymt4cGJtc2dlMXh1SUNBZ0lDOHFLaUJVYUdVZ1ptbHNaU0J3WVhSb0lIUm9hWE1nYkdsdWF5QndiMmx1ZEhNZ2RHOHVJQ292WEc0Z0lDQWdjR0YwYURvZ2MzUnlhVzVuTzF4dUlDQWdJQzhxS2lCVWFHVWdaR2x6Y0d4aGVTQnVZVzFsSUdGemMyOWphV0YwWldRZ2QybDBhQ0IwYUdVZ2JHbHVheTRnS2k5Y2JpQWdJQ0JrYVhOd2JHRjVQem9nYzNSeWFXNW5PMXh1SUNBZ0lDOHFLaUJVYUdVZ1lteHZZMnNnU1VRZ2IzSWdhR1ZoWkdWeUlIUm9hWE1nYkdsdWF5QndiMmx1ZEhNZ2RHOGdkMmwwYUdsdUlHRWdabWxzWlN3Z2FXWWdjbVZzWlhaaGJuUXVJQ292WEc0Z0lDQWdjM1ZpY0dGMGFEODZJSE4wY21sdVp6dGNiaUFnSUNBdktpb2dTWE1nZEdocGN5QnNhVzVySUdGdUlHVnRZbVZrWkdWa0lHeHBibXNnS0c5bUlHWnZjbTBnSnlGYlcyaGxiR3h2WFYwbktUOGdLaTljYmlBZ0lDQmxiV0psWkRvZ1ltOXZiR1ZoYmp0Y2JpQWdJQ0F2S2lvZ1ZHaGxJSFI1Y0dVZ2IyWWdkR2hwY3lCc2FXNXJMQ0IzYUdsamFDQmtaWFJsY20xcGJtVnpJSGRvWVhRZ0ozTjFZbkJoZEdnbklISmxabVZ5Y3lCMGJ5d2dhV1lnWVc1NWRHaHBibWN1SUNvdlhHNGdJQ0FnZEhsd1pUb2dYQ0ptYVd4bFhDSWdmQ0JjSW1obFlXUmxjbHdpSUh3Z1hDSmliRzlqYTF3aU8xeHVmVnh1WEc0dktpb2dVM0JzYVhRZ2IyNGdkVzVsYzJOaGNHVmtJSEJwY0dWeklHbHVJR0Z1SUdsdWJtVnlJR3hwYm1zdVhHNGdLaUJBYUdsa1pHVnVYRzRnS2k5Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCemNHeHBkRTl1Vlc1bGMyTmhjR1ZrVUdsd1pTaHNhVzVyT2lCemRISnBibWNwT2lCYmMzUnlhVzVuTENCemRISnBibWNnZkNCMWJtUmxabWx1WldSZElIdGNiaUFnSUNCc1pYUWdjR2x3WlNBOUlDMHhPMXh1SUNBZ0lIZG9hV3hsSUNnb2NHbHdaU0E5SUd4cGJtc3VhVzVrWlhoUFppaGNJbnhjSWl3Z2NHbHdaU0FySURFcEtTQStQU0F3S1NCN1hHNGdJQ0FnSUNBZ0lHbG1JQ2h3YVhCbElENGdNQ0FtSmlCc2FXNXJXM0JwY0dVZ0xTQXhYU0E5UFNCY0lseGNYRnhjSWlrZ1kyOXVkR2x1ZFdVN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCYmJHbHVheTV6ZFdKemRISnBibWNvTUN3Z2NHbHdaU2t1Y21Wd2JHRmpaU2d2WEZ4Y1hGeGNmQzluTENCY0lueGNJaWtzSUd4cGJtc3VjM1ZpYzNSeWFXNW5LSEJwY0dVZ0t5QXhLVjA3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdjbVYwZFhKdUlGdHNhVzVyTG5KbGNHeGhZMlVvTDF4Y1hGeGNYSHd2Wnl3Z1hDSjhYQ0lwTENCMWJtUmxabWx1WldSZE8xeHVmVnh1SWl3Z0ltTnZibk4wSUVGTVNVRlRJRDBnVTNsdFltOXNMbVp2Y2lnbmVXRnRiQzVoYkdsaGN5Y3BPMXh1WTI5dWMzUWdSRTlESUQwZ1UzbHRZbTlzTG1admNpZ25lV0Z0YkM1a2IyTjFiV1Z1ZENjcE8xeHVZMjl1YzNRZ1RVRlFJRDBnVTNsdFltOXNMbVp2Y2lnbmVXRnRiQzV0WVhBbktUdGNibU52Ym5OMElGQkJTVklnUFNCVGVXMWliMnd1Wm05eUtDZDVZVzFzTG5CaGFYSW5LVHRjYm1OdmJuTjBJRk5EUVV4QlVpQTlJRk41YldKdmJDNW1iM0lvSjNsaGJXd3VjMk5oYkdGeUp5azdYRzVqYjI1emRDQlRSVkVnUFNCVGVXMWliMnd1Wm05eUtDZDVZVzFzTG5ObGNTY3BPMXh1WTI5dWMzUWdUazlFUlY5VVdWQkZJRDBnVTNsdFltOXNMbVp2Y2lnbmVXRnRiQzV1YjJSbExuUjVjR1VuS1R0Y2JtTnZibk4wSUdselFXeHBZWE1nUFNBb2JtOWtaU2tnUFQ0Z0lTRnViMlJsSUNZbUlIUjVjR1Z2WmlCdWIyUmxJRDA5UFNBbmIySnFaV04wSnlBbUppQnViMlJsVzA1UFJFVmZWRmxRUlYwZ1BUMDlJRUZNU1VGVE8xeHVZMjl1YzNRZ2FYTkViMk4xYldWdWRDQTlJQ2h1YjJSbEtTQTlQaUFoSVc1dlpHVWdKaVlnZEhsd1pXOW1JRzV2WkdVZ1BUMDlJQ2R2WW1wbFkzUW5JQ1ltSUc1dlpHVmJUazlFUlY5VVdWQkZYU0E5UFQwZ1JFOURPMXh1WTI5dWMzUWdhWE5OWVhBZ1BTQW9ibTlrWlNrZ1BUNGdJU0Z1YjJSbElDWW1JSFI1Y0dWdlppQnViMlJsSUQwOVBTQW5iMkpxWldOMEp5QW1KaUJ1YjJSbFcwNVBSRVZmVkZsUVJWMGdQVDA5SUUxQlVEdGNibU52Ym5OMElHbHpVR0ZwY2lBOUlDaHViMlJsS1NBOVBpQWhJVzV2WkdVZ0ppWWdkSGx3Wlc5bUlHNXZaR1VnUFQwOUlDZHZZbXBsWTNRbklDWW1JRzV2WkdWYlRrOUVSVjlVV1ZCRlhTQTlQVDBnVUVGSlVqdGNibU52Ym5OMElHbHpVMk5oYkdGeUlEMGdLRzV2WkdVcElEMCtJQ0VoYm05a1pTQW1KaUIwZVhCbGIyWWdibTlrWlNBOVBUMGdKMjlpYW1WamRDY2dKaVlnYm05a1pWdE9UMFJGWDFSWlVFVmRJRDA5UFNCVFEwRk1RVkk3WEc1amIyNXpkQ0JwYzFObGNTQTlJQ2h1YjJSbEtTQTlQaUFoSVc1dlpHVWdKaVlnZEhsd1pXOW1JRzV2WkdVZ1BUMDlJQ2R2WW1wbFkzUW5JQ1ltSUc1dlpHVmJUazlFUlY5VVdWQkZYU0E5UFQwZ1UwVlJPMXh1Wm5WdVkzUnBiMjRnYVhORGIyeHNaV04wYVc5dUtHNXZaR1VwSUh0Y2JpQWdJQ0JwWmlBb2JtOWtaU0FtSmlCMGVYQmxiMllnYm05a1pTQTlQVDBnSjI5aWFtVmpkQ2NwWEc0Z0lDQWdJQ0FnSUhOM2FYUmphQ0FvYm05a1pWdE9UMFJGWDFSWlVFVmRLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpZWE5sSUUxQlVEcGNiaUFnSUNBZ0lDQWdJQ0FnSUdOaGMyVWdVMFZST2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUIwY25WbE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUdaaGJITmxPMXh1ZlZ4dVpuVnVZM1JwYjI0Z2FYTk9iMlJsS0c1dlpHVXBJSHRjYmlBZ0lDQnBaaUFvYm05a1pTQW1KaUIwZVhCbGIyWWdibTlrWlNBOVBUMGdKMjlpYW1WamRDY3BYRzRnSUNBZ0lDQWdJSE4zYVhSamFDQW9ibTlrWlZ0T1QwUkZYMVJaVUVWZEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCallYTmxJRUZNU1VGVE9seHVJQ0FnSUNBZ0lDQWdJQ0FnWTJGelpTQk5RVkE2WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpZWE5sSUZORFFVeEJVanBjYmlBZ0lDQWdJQ0FnSUNBZ0lHTmhjMlVnVTBWUk9seHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCMGNuVmxPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlHWmhiSE5sTzF4dWZWeHVZMjl1YzNRZ2FHRnpRVzVqYUc5eUlEMGdLRzV2WkdVcElEMCtJQ2hwYzFOallXeGhjaWh1YjJSbEtTQjhmQ0JwYzBOdmJHeGxZM1JwYjI0b2JtOWtaU2twSUNZbUlDRWhibTlrWlM1aGJtTm9iM0k3WEc1Y2JtVjRjRzl5ZENCN0lFRk1TVUZUTENCRVQwTXNJRTFCVUN3Z1RrOUVSVjlVV1ZCRkxDQlFRVWxTTENCVFEwRk1RVklzSUZORlVTd2dhR0Z6UVc1amFHOXlMQ0JwYzBGc2FXRnpMQ0JwYzBOdmJHeGxZM1JwYjI0c0lHbHpSRzlqZFcxbGJuUXNJR2x6VFdGd0xDQnBjMDV2WkdVc0lHbHpVR0ZwY2l3Z2FYTlRZMkZzWVhJc0lHbHpVMlZ4SUgwN1hHNGlMQ0FpYVcxd2IzSjBJSHNnYVhORWIyTjFiV1Z1ZEN3Z2FYTk9iMlJsTENCcGMxQmhhWElzSUdselEyOXNiR1ZqZEdsdmJpd2dhWE5OWVhBc0lHbHpVMlZ4TENCcGMxTmpZV3hoY2l3Z2FYTkJiR2xoY3lCOUlHWnliMjBnSnk0dmJtOWtaWE12YVdSbGJuUnBkSGt1YW5Nbk8xeHVYRzVqYjI1emRDQkNVa1ZCU3lBOUlGTjViV0p2YkNnblluSmxZV3NnZG1semFYUW5LVHRjYm1OdmJuTjBJRk5MU1ZBZ1BTQlRlVzFpYjJ3b0ozTnJhWEFnWTJocGJHUnlaVzRuS1R0Y2JtTnZibk4wSUZKRlRVOVdSU0E5SUZONWJXSnZiQ2duY21WdGIzWmxJRzV2WkdVbktUdGNiaThxS2x4dUlDb2dRWEJ3YkhrZ1lTQjJhWE5wZEc5eUlIUnZJR0Z1SUVGVFZDQnViMlJsSUc5eUlHUnZZM1Z0Wlc1MExseHVJQ3BjYmlBcUlGZGhiR3R6SUhSb2NtOTFaMmdnZEdobElIUnlaV1VnS0dSbGNIUm9MV1pwY25OMEtTQnpkR0Z5ZEdsdVp5Qm1jbTl0SUdCdWIyUmxZQ3dnWTJGc2JHbHVaeUJoWEc0Z0tpQmdkbWx6YVhSdmNtQWdablZ1WTNScGIyNGdkMmwwYUNCMGFISmxaU0JoY21kMWJXVnVkSE02WEc0Z0tpQWdJQzBnWUd0bGVXQTZJRVp2Y2lCelpYRjFaVzVqWlNCMllXeDFaWE1nWVc1a0lHMWhjQ0JnVUdGcGNtQXNJSFJvWlNCdWIyUmxKM01nYVc1a1pYZ2dhVzRnZEdobFhHNGdLaUFnSUNBZ1kyOXNiR1ZqZEdsdmJpNGdWMmwwYUdsdUlHRWdZRkJoYVhKZ0xDQmdKMnRsZVNkZ0lHOXlJR0FuZG1Gc2RXVW5ZQ3dnWTI5eWNtVnpjRzl1WkdsdVoyeDVMbHh1SUNvZ0lDQWdJR0J1ZFd4c1lDQm1iM0lnZEdobElISnZiM1FnYm05a1pTNWNiaUFxSUNBZ0xTQmdibTlrWldBNklGUm9aU0JqZFhKeVpXNTBJRzV2WkdVdVhHNGdLaUFnSUMwZ1lIQmhkR2hnT2lCVWFHVWdZVzVqWlhOMGNua2diMllnZEdobElHTjFjbkpsYm5RZ2JtOWtaUzVjYmlBcVhHNGdLaUJVYUdVZ2NtVjBkWEp1SUhaaGJIVmxJRzltSUhSb1pTQjJhWE5wZEc5eUlHMWhlU0JpWlNCMWMyVmtJSFJ2SUdOdmJuUnliMndnZEdobElIUnlZWFpsY25OaGJEcGNiaUFxSUNBZ0xTQmdkVzVrWldacGJtVmtZQ0FvWkdWbVlYVnNkQ2s2SUVSdklHNXZkR2hwYm1jZ1lXNWtJR052Ym5ScGJuVmxYRzRnS2lBZ0lDMGdZSFpwYzJsMExsTkxTVkJnT2lCRWJ5QnViM1FnZG1semFYUWdkR2hsSUdOb2FXeGtjbVZ1SUc5bUlIUm9hWE1nYm05a1pTd2dZMjl1ZEdsdWRXVWdkMmwwYUNCdVpYaDBYRzRnS2lBZ0lDQWdjMmxpYkdsdVoxeHVJQ29nSUNBdElHQjJhWE5wZEM1Q1VrVkJTMkE2SUZSbGNtMXBibUYwWlNCMGNtRjJaWEp6WVd3Z1kyOXRjR3hsZEdWc2VWeHVJQ29nSUNBdElHQjJhWE5wZEM1U1JVMVBWa1ZnT2lCU1pXMXZkbVVnZEdobElHTjFjbkpsYm5RZ2JtOWtaU3dnZEdobGJpQmpiMjUwYVc1MVpTQjNhWFJvSUhSb1pTQnVaWGgwSUc5dVpWeHVJQ29nSUNBdElHQk9iMlJsWURvZ1VtVndiR0ZqWlNCMGFHVWdZM1Z5Y21WdWRDQnViMlJsTENCMGFHVnVJR052Ym5ScGJuVmxJR0o1SUhacGMybDBhVzVuSUdsMFhHNGdLaUFnSUMwZ1lHNTFiV0psY21BNklGZG9hV3hsSUdsMFpYSmhkR2x1WnlCMGFHVWdhWFJsYlhNZ2IyWWdZU0J6WlhGMVpXNWpaU0J2Y2lCdFlYQXNJSE5sZENCMGFHVWdhVzVrWlhoY2JpQXFJQ0FnSUNCdlppQjBhR1VnYm1WNGRDQnpkR1Z3TGlCVWFHbHpJR2x6SUhWelpXWjFiQ0JsYzNCbFkybGhiR3g1SUdsbUlIUm9aU0JwYm1SbGVDQnZaaUIwYUdVZ1kzVnljbVZ1ZEZ4dUlDb2dJQ0FnSUc1dlpHVWdhR0Z6SUdOb1lXNW5aV1F1WEc0Z0tseHVJQ29nU1dZZ1lIWnBjMmwwYjNKZ0lHbHpJR0VnYzJsdVoyeGxJR1oxYm1OMGFXOXVMQ0JwZENCM2FXeHNJR0psSUdOaGJHeGxaQ0IzYVhSb0lHRnNiQ0IyWVd4MVpYTmNiaUFxSUdWdVkyOTFiblJsY21Wa0lHbHVJSFJvWlNCMGNtVmxMQ0JwYm1Oc2RXUnBibWNnWlM1bkxpQmdiblZzYkdBZ2RtRnNkV1Z6TGlCQmJIUmxjbTVoZEdsMlpXeDVMRnh1SUNvZ2MyVndZWEpoZEdVZ2RtbHphWFJ2Y2lCbWRXNWpkR2x2Ym5NZ2JXRjVJR0psSUdSbFptbHVaV1FnWm05eUlHVmhZMmdnWUUxaGNHQXNJR0JRWVdseVlDd2dZRk5sY1dBc1hHNGdLaUJnUVd4cFlYTmdJR0Z1WkNCZ1UyTmhiR0Z5WUNCdWIyUmxMaUJVYnlCa1pXWnBibVVnZEdobElITmhiV1VnZG1semFYUnZjaUJtZFc1amRHbHZiaUJtYjNJZ2JXOXlaU0IwYUdGdVhHNGdLaUJ2Ym1VZ2JtOWtaU0IwZVhCbExDQjFjMlVnZEdobElHQkRiMnhzWldOMGFXOXVZQ0FvYldGd0lHRnVaQ0J6WlhFcExDQmdWbUZzZFdWZ0lDaHRZWEFzSUhObGNTQW1JSE5qWVd4aGNpbGNiaUFxSUdGdVpDQmdUbTlrWldBZ0tHRnNhV0Z6TENCdFlYQXNJSE5sY1NBbUlITmpZV3hoY2lrZ2RHRnlaMlYwY3k0Z1QyWWdZV3hzSUhSb1pYTmxMQ0J2Ym14NUlIUm9aU0J0YjNOMFhHNGdLaUJ6Y0dWamFXWnBZeUJrWldacGJtVmtJRzl1WlNCM2FXeHNJR0psSUhWelpXUWdabTl5SUdWaFkyZ2dibTlrWlM1Y2JpQXFMMXh1Wm5WdVkzUnBiMjRnZG1semFYUW9ibTlrWlN3Z2RtbHphWFJ2Y2lrZ2UxeHVJQ0FnSUdOdmJuTjBJSFpwYzJsMGIzSmZJRDBnYVc1cGRGWnBjMmwwYjNJb2RtbHphWFJ2Y2lrN1hHNGdJQ0FnYVdZZ0tHbHpSRzlqZFcxbGJuUW9ibTlrWlNrcElIdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ1kyUWdQU0IyYVhOcGRGOG9iblZzYkN3Z2JtOWtaUzVqYjI1MFpXNTBjeXdnZG1semFYUnZjbDhzSUU5aWFtVmpkQzVtY21WbGVtVW9XMjV2WkdWZEtTazdYRzRnSUNBZ0lDQWdJR2xtSUNoalpDQTlQVDBnVWtWTlQxWkZLVnh1SUNBZ0lDQWdJQ0FnSUNBZ2JtOWtaUzVqYjI1MFpXNTBjeUE5SUc1MWJHdzdYRzRnSUNBZ2ZWeHVJQ0FnSUdWc2MyVmNiaUFnSUNBZ0lDQWdkbWx6YVhSZktHNTFiR3dzSUc1dlpHVXNJSFpwYzJsMGIzSmZMQ0JQWW1wbFkzUXVabkpsWlhwbEtGdGRLU2s3WEc1OVhHNHZMeUJYYVhSb2IzVjBJSFJvWlNCZ1lYTWdjM2x0WW05c1lDQmpZWE4wY3l3Z1ZGTWdaR1ZqYkdGeVpYTWdkR2hsYzJVZ2FXNGdkR2hsSUdCMmFYTnBkR0JjYmk4dklHNWhiV1Z6Y0dGalpTQjFjMmx1WnlCZ2RtRnlZQ3dnWW5WMElIUm9aVzRnWTI5dGNHeGhhVzV6SUdGaWIzVjBJSFJvWVhRZ1ltVmpZWFZ6WlZ4dUx5OGdZSFZ1YVhGMVpTQnplVzFpYjJ4Z0lHMTFjM1FnWW1VZ1lHTnZibk4wWUM1Y2JpOHFLaUJVWlhKdGFXNWhkR1VnZG1semFYUWdkSEpoZG1WeWMyRnNJR052YlhCc1pYUmxiSGtnS2k5Y2JuWnBjMmwwTGtKU1JVRkxJRDBnUWxKRlFVczdYRzR2S2lvZ1JHOGdibTkwSUhacGMybDBJSFJvWlNCamFHbHNaSEpsYmlCdlppQjBhR1VnWTNWeWNtVnVkQ0J1YjJSbElDb3ZYRzUyYVhOcGRDNVRTMGxRSUQwZ1UwdEpVRHRjYmk4cUtpQlNaVzF2ZG1VZ2RHaGxJR04xY25KbGJuUWdibTlrWlNBcUwxeHVkbWx6YVhRdVVrVk5UMVpGSUQwZ1VrVk5UMVpGTzF4dVpuVnVZM1JwYjI0Z2RtbHphWFJmS0d0bGVTd2dibTlrWlN3Z2RtbHphWFJ2Y2l3Z2NHRjBhQ2tnZTF4dUlDQWdJR052Ym5OMElHTjBjbXdnUFNCallXeHNWbWx6YVhSdmNpaHJaWGtzSUc1dlpHVXNJSFpwYzJsMGIzSXNJSEJoZEdncE8xeHVJQ0FnSUdsbUlDaHBjMDV2WkdVb1kzUnliQ2tnZkh3Z2FYTlFZV2x5S0dOMGNtd3BLU0I3WEc0Z0lDQWdJQ0FnSUhKbGNHeGhZMlZPYjJSbEtHdGxlU3dnY0dGMGFDd2dZM1J5YkNrN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCMmFYTnBkRjhvYTJWNUxDQmpkSEpzTENCMmFYTnBkRzl5TENCd1lYUm9LVHRjYmlBZ0lDQjlYRzRnSUNBZ2FXWWdLSFI1Y0dWdlppQmpkSEpzSUNFOVBTQW5jM2x0WW05c0p5a2dlMXh1SUNBZ0lDQWdJQ0JwWmlBb2FYTkRiMnhzWldOMGFXOXVLRzV2WkdVcEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCd1lYUm9JRDBnVDJKcVpXTjBMbVp5WldWNlpTaHdZWFJvTG1OdmJtTmhkQ2h1YjJSbEtTazdYRzRnSUNBZ0lDQWdJQ0FnSUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElHNXZaR1V1YVhSbGJYTXViR1Z1WjNSb095QXJLMmtwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCamIyNXpkQ0JqYVNBOUlIWnBjMmwwWHlocExDQnViMlJsTG1sMFpXMXpXMmxkTENCMmFYTnBkRzl5TENCd1lYUm9LVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2RIbHdaVzltSUdOcElEMDlQU0FuYm5WdFltVnlKeWxjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FTQTlJR05wSUMwZ01UdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmxiSE5sSUdsbUlDaGphU0E5UFQwZ1FsSkZRVXNwWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCQ1VrVkJTenRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JsYkhObElHbG1JQ2hqYVNBOVBUMGdVa1ZOVDFaRktTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUc1dlpHVXVhWFJsYlhNdWMzQnNhV05sS0drc0lERXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcElDMDlJREU3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUdWc2MyVWdhV1lnS0dselVHRnBjaWh1YjJSbEtTa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2NHRjBhQ0E5SUU5aWFtVmpkQzVtY21WbGVtVW9jR0YwYUM1amIyNWpZWFFvYm05a1pTa3BPMXh1SUNBZ0lDQWdJQ0FnSUNBZ1kyOXVjM1FnWTJzZ1BTQjJhWE5wZEY4b0oydGxlU2NzSUc1dlpHVXVhMlY1TENCMmFYTnBkRzl5TENCd1lYUm9LVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2hqYXlBOVBUMGdRbEpGUVVzcFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUVKU1JVRkxPMXh1SUNBZ0lDQWdJQ0FnSUNBZ1pXeHpaU0JwWmlBb1kyc2dQVDA5SUZKRlRVOVdSU2xjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J1YjJSbExtdGxlU0E5SUc1MWJHdzdYRzRnSUNBZ0lDQWdJQ0FnSUNCamIyNXpkQ0JqZGlBOUlIWnBjMmwwWHlnbmRtRnNkV1VuTENCdWIyUmxMblpoYkhWbExDQjJhWE5wZEc5eUxDQndZWFJvS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJR2xtSUNoamRpQTlQVDBnUWxKRlFVc3BYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlFSlNSVUZMTzF4dUlDQWdJQ0FnSUNBZ0lDQWdaV3h6WlNCcFppQW9ZM1lnUFQwOUlGSkZUVTlXUlNsY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCdWIyUmxMblpoYkhWbElEMGdiblZzYkR0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNtNGdZM1J5YkR0Y2JuMWNiaThxS2x4dUlDb2dRWEJ3YkhrZ1lXNGdZWE41Ym1NZ2RtbHphWFJ2Y2lCMGJ5QmhiaUJCVTFRZ2JtOWtaU0J2Y2lCa2IyTjFiV1Z1ZEM1Y2JpQXFYRzRnS2lCWFlXeHJjeUIwYUhKdmRXZG9JSFJvWlNCMGNtVmxJQ2hrWlhCMGFDMW1hWEp6ZENrZ2MzUmhjblJwYm1jZ1puSnZiU0JnYm05a1pXQXNJR05oYkd4cGJtY2dZVnh1SUNvZ1lIWnBjMmwwYjNKZ0lHWjFibU4wYVc5dUlIZHBkR2dnZEdoeVpXVWdZWEpuZFcxbGJuUnpPbHh1SUNvZ0lDQXRJR0JyWlhsZ09pQkdiM0lnYzJWeGRXVnVZMlVnZG1Gc2RXVnpJR0Z1WkNCdFlYQWdZRkJoYVhKZ0xDQjBhR1VnYm05a1pTZHpJR2x1WkdWNElHbHVJSFJvWlZ4dUlDb2dJQ0FnSUdOdmJHeGxZM1JwYjI0dUlGZHBkR2hwYmlCaElHQlFZV2x5WUN3Z1lDZHJaWGtuWUNCdmNpQmdKM1poYkhWbEoyQXNJR052Y25KbGMzQnZibVJwYm1kc2VTNWNiaUFxSUNBZ0lDQmdiblZzYkdBZ1ptOXlJSFJvWlNCeWIyOTBJRzV2WkdVdVhHNGdLaUFnSUMwZ1lHNXZaR1ZnT2lCVWFHVWdZM1Z5Y21WdWRDQnViMlJsTGx4dUlDb2dJQ0F0SUdCd1lYUm9ZRG9nVkdobElHRnVZMlZ6ZEhKNUlHOW1JSFJvWlNCamRYSnlaVzUwSUc1dlpHVXVYRzRnS2x4dUlDb2dWR2hsSUhKbGRIVnliaUIyWVd4MVpTQnZaaUIwYUdVZ2RtbHphWFJ2Y2lCdFlYa2dZbVVnZFhObFpDQjBieUJqYjI1MGNtOXNJSFJvWlNCMGNtRjJaWEp6WVd3NlhHNGdLaUFnSUMwZ1lGQnliMjFwYzJWZ09pQk5kWE4wSUhKbGMyOXNkbVVnZEc4Z2IyNWxJRzltSUhSb1pTQm1iMnhzYjNkcGJtY2dkbUZzZFdWelhHNGdLaUFnSUMwZ1lIVnVaR1ZtYVc1bFpHQWdLR1JsWm1GMWJIUXBPaUJFYnlCdWIzUm9hVzVuSUdGdVpDQmpiMjUwYVc1MVpWeHVJQ29nSUNBdElHQjJhWE5wZEM1VFMwbFFZRG9nUkc4Z2JtOTBJSFpwYzJsMElIUm9aU0JqYUdsc1pISmxiaUJ2WmlCMGFHbHpJRzV2WkdVc0lHTnZiblJwYm5WbElIZHBkR2dnYm1WNGRGeHVJQ29nSUNBZ0lITnBZbXhwYm1kY2JpQXFJQ0FnTFNCZ2RtbHphWFF1UWxKRlFVdGdPaUJVWlhKdGFXNWhkR1VnZEhKaGRtVnljMkZzSUdOdmJYQnNaWFJsYkhsY2JpQXFJQ0FnTFNCZ2RtbHphWFF1VWtWTlQxWkZZRG9nVW1WdGIzWmxJSFJvWlNCamRYSnlaVzUwSUc1dlpHVXNJSFJvWlc0Z1kyOXVkR2x1ZFdVZ2QybDBhQ0IwYUdVZ2JtVjRkQ0J2Ym1WY2JpQXFJQ0FnTFNCZ1RtOWtaV0E2SUZKbGNHeGhZMlVnZEdobElHTjFjbkpsYm5RZ2JtOWtaU3dnZEdobGJpQmpiMjUwYVc1MVpTQmllU0IyYVhOcGRHbHVaeUJwZEZ4dUlDb2dJQ0F0SUdCdWRXMWlaWEpnT2lCWGFHbHNaU0JwZEdWeVlYUnBibWNnZEdobElHbDBaVzF6SUc5bUlHRWdjMlZ4ZFdWdVkyVWdiM0lnYldGd0xDQnpaWFFnZEdobElHbHVaR1Y0WEc0Z0tpQWdJQ0FnYjJZZ2RHaGxJRzVsZUhRZ2MzUmxjQzRnVkdocGN5QnBjeUIxYzJWbWRXd2daWE53WldOcFlXeHNlU0JwWmlCMGFHVWdhVzVrWlhnZ2IyWWdkR2hsSUdOMWNuSmxiblJjYmlBcUlDQWdJQ0J1YjJSbElHaGhjeUJqYUdGdVoyVmtMbHh1SUNwY2JpQXFJRWxtSUdCMmFYTnBkRzl5WUNCcGN5QmhJSE5wYm1kc1pTQm1kVzVqZEdsdmJpd2dhWFFnZDJsc2JDQmlaU0JqWVd4c1pXUWdkMmwwYUNCaGJHd2dkbUZzZFdWelhHNGdLaUJsYm1OdmRXNTBaWEpsWkNCcGJpQjBhR1VnZEhKbFpTd2dhVzVqYkhWa2FXNW5JR1V1Wnk0Z1lHNTFiR3hnSUhaaGJIVmxjeTRnUVd4MFpYSnVZWFJwZG1Wc2VTeGNiaUFxSUhObGNHRnlZWFJsSUhacGMybDBiM0lnWm5WdVkzUnBiMjV6SUcxaGVTQmlaU0JrWldacGJtVmtJR1p2Y2lCbFlXTm9JR0JOWVhCZ0xDQmdVR0ZwY21Bc0lHQlRaWEZnTEZ4dUlDb2dZRUZzYVdGellDQmhibVFnWUZOallXeGhjbUFnYm05a1pTNGdWRzhnWkdWbWFXNWxJSFJvWlNCellXMWxJSFpwYzJsMGIzSWdablZ1WTNScGIyNGdabTl5SUcxdmNtVWdkR2hoYmx4dUlDb2diMjVsSUc1dlpHVWdkSGx3WlN3Z2RYTmxJSFJvWlNCZ1EyOXNiR1ZqZEdsdmJtQWdLRzFoY0NCaGJtUWdjMlZ4S1N3Z1lGWmhiSFZsWUNBb2JXRndMQ0J6WlhFZ0ppQnpZMkZzWVhJcFhHNGdLaUJoYm1RZ1lFNXZaR1ZnSUNoaGJHbGhjeXdnYldGd0xDQnpaWEVnSmlCelkyRnNZWElwSUhSaGNtZGxkSE11SUU5bUlHRnNiQ0IwYUdWelpTd2diMjVzZVNCMGFHVWdiVzl6ZEZ4dUlDb2djM0JsWTJsbWFXTWdaR1ZtYVc1bFpDQnZibVVnZDJsc2JDQmlaU0IxYzJWa0lHWnZjaUJsWVdOb0lHNXZaR1V1WEc0Z0tpOWNibUZ6ZVc1aklHWjFibU4wYVc5dUlIWnBjMmwwUVhONWJtTW9ibTlrWlN3Z2RtbHphWFJ2Y2lrZ2UxeHVJQ0FnSUdOdmJuTjBJSFpwYzJsMGIzSmZJRDBnYVc1cGRGWnBjMmwwYjNJb2RtbHphWFJ2Y2lrN1hHNGdJQ0FnYVdZZ0tHbHpSRzlqZFcxbGJuUW9ibTlrWlNrcElIdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ1kyUWdQU0JoZDJGcGRDQjJhWE5wZEVGemVXNWpYeWh1ZFd4c0xDQnViMlJsTG1OdmJuUmxiblJ6TENCMmFYTnBkRzl5WHl3Z1QySnFaV04wTG1aeVpXVjZaU2hiYm05a1pWMHBLVHRjYmlBZ0lDQWdJQ0FnYVdZZ0tHTmtJRDA5UFNCU1JVMVBWa1VwWEc0Z0lDQWdJQ0FnSUNBZ0lDQnViMlJsTG1OdmJuUmxiblJ6SUQwZ2JuVnNiRHRjYmlBZ0lDQjlYRzRnSUNBZ1pXeHpaVnh1SUNBZ0lDQWdJQ0JoZDJGcGRDQjJhWE5wZEVGemVXNWpYeWh1ZFd4c0xDQnViMlJsTENCMmFYTnBkRzl5WHl3Z1QySnFaV04wTG1aeVpXVjZaU2hiWFNrcE8xeHVmVnh1THk4Z1YybDBhRzkxZENCMGFHVWdZR0Z6SUhONWJXSnZiR0FnWTJGemRITXNJRlJUSUdSbFkyeGhjbVZ6SUhSb1pYTmxJR2x1SUhSb1pTQmdkbWx6YVhSZ1hHNHZMeUJ1WVcxbGMzQmhZMlVnZFhOcGJtY2dZSFpoY21Bc0lHSjFkQ0IwYUdWdUlHTnZiWEJzWVdsdWN5QmhZbTkxZENCMGFHRjBJR0psWTJGMWMyVmNiaTh2SUdCMWJtbHhkV1VnYzNsdFltOXNZQ0J0ZFhOMElHSmxJR0JqYjI1emRHQXVYRzR2S2lvZ1ZHVnliV2x1WVhSbElIWnBjMmwwSUhSeVlYWmxjbk5oYkNCamIyMXdiR1YwWld4NUlDb3ZYRzUyYVhOcGRFRnplVzVqTGtKU1JVRkxJRDBnUWxKRlFVczdYRzR2S2lvZ1JHOGdibTkwSUhacGMybDBJSFJvWlNCamFHbHNaSEpsYmlCdlppQjBhR1VnWTNWeWNtVnVkQ0J1YjJSbElDb3ZYRzUyYVhOcGRFRnplVzVqTGxOTFNWQWdQU0JUUzBsUU8xeHVMeW9xSUZKbGJXOTJaU0IwYUdVZ1kzVnljbVZ1ZENCdWIyUmxJQ292WEc1MmFYTnBkRUZ6ZVc1akxsSkZUVTlXUlNBOUlGSkZUVTlXUlR0Y2JtRnplVzVqSUdaMWJtTjBhVzl1SUhacGMybDBRWE41Ym1OZktHdGxlU3dnYm05a1pTd2dkbWx6YVhSdmNpd2djR0YwYUNrZ2UxeHVJQ0FnSUdOdmJuTjBJR04wY213Z1BTQmhkMkZwZENCallXeHNWbWx6YVhSdmNpaHJaWGtzSUc1dlpHVXNJSFpwYzJsMGIzSXNJSEJoZEdncE8xeHVJQ0FnSUdsbUlDaHBjMDV2WkdVb1kzUnliQ2tnZkh3Z2FYTlFZV2x5S0dOMGNtd3BLU0I3WEc0Z0lDQWdJQ0FnSUhKbGNHeGhZMlZPYjJSbEtHdGxlU3dnY0dGMGFDd2dZM1J5YkNrN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCMmFYTnBkRUZ6ZVc1alh5aHJaWGtzSUdOMGNtd3NJSFpwYzJsMGIzSXNJSEJoZEdncE8xeHVJQ0FnSUgxY2JpQWdJQ0JwWmlBb2RIbHdaVzltSUdOMGNtd2dJVDA5SUNkemVXMWliMnduS1NCN1hHNGdJQ0FnSUNBZ0lHbG1JQ2hwYzBOdmJHeGxZM1JwYjI0b2JtOWtaU2twSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJSEJoZEdnZ1BTQlBZbXBsWTNRdVpuSmxaWHBsS0hCaGRHZ3VZMjl1WTJGMEtHNXZaR1VwS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJR1p2Y2lBb2JHVjBJR2tnUFNBd095QnBJRHdnYm05a1pTNXBkR1Z0Y3k1c1pXNW5kR2c3SUNzcmFTa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR052Ym5OMElHTnBJRDBnWVhkaGFYUWdkbWx6YVhSQmMzbHVZMThvYVN3Z2JtOWtaUzVwZEdWdGMxdHBYU3dnZG1semFYUnZjaXdnY0dGMGFDazdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhV1lnS0hSNWNHVnZaaUJqYVNBOVBUMGdKMjUxYldKbGNpY3BYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdrZ1BTQmphU0F0SURFN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1pXeHpaU0JwWmlBb1kya2dQVDA5SUVKU1JVRkxLVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnUWxKRlFVczdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdaV3h6WlNCcFppQW9ZMmtnUFQwOUlGSkZUVTlXUlNrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J1YjJSbExtbDBaVzF6TG5Od2JHbGpaU2hwTENBeEtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVNBdFBTQXhPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0JsYkhObElHbG1JQ2hwYzFCaGFYSW9ibTlrWlNrcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUhCaGRHZ2dQU0JQWW1wbFkzUXVabkpsWlhwbEtIQmhkR2d1WTI5dVkyRjBLRzV2WkdVcEtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUdOdmJuTjBJR05ySUQwZ1lYZGhhWFFnZG1semFYUkJjM2x1WTE4b0oydGxlU2NzSUc1dlpHVXVhMlY1TENCMmFYTnBkRzl5TENCd1lYUm9LVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2hqYXlBOVBUMGdRbEpGUVVzcFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUVKU1JVRkxPMXh1SUNBZ0lDQWdJQ0FnSUNBZ1pXeHpaU0JwWmlBb1kyc2dQVDA5SUZKRlRVOVdSU2xjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J1YjJSbExtdGxlU0E5SUc1MWJHdzdYRzRnSUNBZ0lDQWdJQ0FnSUNCamIyNXpkQ0JqZGlBOUlHRjNZV2wwSUhacGMybDBRWE41Ym1OZktDZDJZV3gxWlNjc0lHNXZaR1V1ZG1Gc2RXVXNJSFpwYzJsMGIzSXNJSEJoZEdncE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tHTjJJRDA5UFNCQ1VrVkJTeWxjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdRbEpGUVVzN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JsYkhObElHbG1JQ2hqZGlBOVBUMGdVa1ZOVDFaRktWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHNXZaR1V1ZG1Gc2RXVWdQU0J1ZFd4c08xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUJqZEhKc08xeHVmVnh1Wm5WdVkzUnBiMjRnYVc1cGRGWnBjMmwwYjNJb2RtbHphWFJ2Y2lrZ2UxeHVJQ0FnSUdsbUlDaDBlWEJsYjJZZ2RtbHphWFJ2Y2lBOVBUMGdKMjlpYW1WamRDY2dKaVpjYmlBZ0lDQWdJQ0FnS0hacGMybDBiM0l1UTI5c2JHVmpkR2x2YmlCOGZDQjJhWE5wZEc5eUxrNXZaR1VnZkh3Z2RtbHphWFJ2Y2k1V1lXeDFaU2twSUh0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUU5aWFtVmpkQzVoYzNOcFoyNG9lMXh1SUNBZ0lDQWdJQ0FnSUNBZ1FXeHBZWE02SUhacGMybDBiM0l1VG05a1pTeGNiaUFnSUNBZ0lDQWdJQ0FnSUUxaGNEb2dkbWx6YVhSdmNpNU9iMlJsTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdVMk5oYkdGeU9pQjJhWE5wZEc5eUxrNXZaR1VzWEc0Z0lDQWdJQ0FnSUNBZ0lDQlRaWEU2SUhacGMybDBiM0l1VG05a1pWeHVJQ0FnSUNBZ0lDQjlMQ0IyYVhOcGRHOXlMbFpoYkhWbElDWW1JSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lFMWhjRG9nZG1semFYUnZjaTVXWVd4MVpTeGNiaUFnSUNBZ0lDQWdJQ0FnSUZOallXeGhjam9nZG1semFYUnZjaTVXWVd4MVpTeGNiaUFnSUNBZ0lDQWdJQ0FnSUZObGNUb2dkbWx6YVhSdmNpNVdZV3gxWlZ4dUlDQWdJQ0FnSUNCOUxDQjJhWE5wZEc5eUxrTnZiR3hsWTNScGIyNGdKaVlnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdUV0Z3T2lCMmFYTnBkRzl5TGtOdmJHeGxZM1JwYjI0c1hHNGdJQ0FnSUNBZ0lDQWdJQ0JUWlhFNklIWnBjMmwwYjNJdVEyOXNiR1ZqZEdsdmJseHVJQ0FnSUNBZ0lDQjlMQ0IyYVhOcGRHOXlLVHRjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUhacGMybDBiM0k3WEc1OVhHNW1kVzVqZEdsdmJpQmpZV3hzVm1semFYUnZjaWhyWlhrc0lHNXZaR1VzSUhacGMybDBiM0lzSUhCaGRHZ3BJSHRjYmlBZ0lDQnBaaUFvZEhsd1pXOW1JSFpwYzJsMGIzSWdQVDA5SUNkbWRXNWpkR2x2YmljcFhHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCMmFYTnBkRzl5S0d0bGVTd2dibTlrWlN3Z2NHRjBhQ2s3WEc0Z0lDQWdhV1lnS0dselRXRndLRzV2WkdVcEtWeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2RtbHphWFJ2Y2k1TllYQS9MaWhyWlhrc0lHNXZaR1VzSUhCaGRHZ3BPMXh1SUNBZ0lHbG1JQ2hwYzFObGNTaHViMlJsS1NsY2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUhacGMybDBiM0l1VTJWeFB5NG9hMlY1TENCdWIyUmxMQ0J3WVhSb0tUdGNiaUFnSUNCcFppQW9hWE5RWVdseUtHNXZaR1VwS1Z4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnZG1semFYUnZjaTVRWVdseVB5NG9hMlY1TENCdWIyUmxMQ0J3WVhSb0tUdGNiaUFnSUNCcFppQW9hWE5UWTJGc1lYSW9ibTlrWlNrcFhHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCMmFYTnBkRzl5TGxOallXeGhjajh1S0d0bGVTd2dibTlrWlN3Z2NHRjBhQ2s3WEc0Z0lDQWdhV1lnS0dselFXeHBZWE1vYm05a1pTa3BYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQjJhWE5wZEc5eUxrRnNhV0Z6UHk0b2EyVjVMQ0J1YjJSbExDQndZWFJvS1R0Y2JpQWdJQ0J5WlhSMWNtNGdkVzVrWldacGJtVmtPMXh1ZlZ4dVpuVnVZM1JwYjI0Z2NtVndiR0ZqWlU1dlpHVW9hMlY1TENCd1lYUm9MQ0J1YjJSbEtTQjdYRzRnSUNBZ1kyOXVjM1FnY0dGeVpXNTBJRDBnY0dGMGFGdHdZWFJvTG14bGJtZDBhQ0F0SURGZE8xeHVJQ0FnSUdsbUlDaHBjME52Ykd4bFkzUnBiMjRvY0dGeVpXNTBLU2tnZTF4dUlDQWdJQ0FnSUNCd1lYSmxiblF1YVhSbGJYTmJhMlY1WFNBOUlHNXZaR1U3WEc0Z0lDQWdmVnh1SUNBZ0lHVnNjMlVnYVdZZ0tHbHpVR0ZwY2lod1lYSmxiblFwS1NCN1hHNGdJQ0FnSUNBZ0lHbG1JQ2hyWlhrZ1BUMDlJQ2RyWlhrbktWeHVJQ0FnSUNBZ0lDQWdJQ0FnY0dGeVpXNTBMbXRsZVNBOUlHNXZaR1U3WEc0Z0lDQWdJQ0FnSUdWc2MyVmNiaUFnSUNBZ0lDQWdJQ0FnSUhCaGNtVnVkQzUyWVd4MVpTQTlJRzV2WkdVN1hHNGdJQ0FnZlZ4dUlDQWdJR1ZzYzJVZ2FXWWdLR2x6Ukc5amRXMWxiblFvY0dGeVpXNTBLU2tnZTF4dUlDQWdJQ0FnSUNCd1lYSmxiblF1WTI5dWRHVnVkSE1nUFNCdWIyUmxPMXh1SUNBZ0lIMWNiaUFnSUNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdjSFFnUFNCcGMwRnNhV0Z6S0hCaGNtVnVkQ2tnUHlBbllXeHBZWE1uSURvZ0ozTmpZV3hoY2ljN1hHNGdJQ0FnSUNBZ0lIUm9jbTkzSUc1bGR5QkZjbkp2Y2loZ1EyRnVibTkwSUhKbGNHeGhZMlVnYm05a1pTQjNhWFJvSUNSN2NIUjlJSEJoY21WdWRHQXBPMXh1SUNBZ0lIMWNibjFjYmx4dVpYaHdiM0owSUhzZ2RtbHphWFFzSUhacGMybDBRWE41Ym1NZ2ZUdGNiaUlzSUNKcGJYQnZjblFnZXlCcGMwNXZaR1VnZlNCbWNtOXRJQ2N1TGk5dWIyUmxjeTlwWkdWdWRHbDBlUzVxY3ljN1hHNXBiWEJ2Y25RZ2V5QjJhWE5wZENCOUlHWnliMjBnSnk0dUwzWnBjMmwwTG1wekp6dGNibHh1WTI5dWMzUWdaWE5qWVhCbFEyaGhjbk1nUFNCN1hHNGdJQ0FnSnlFbk9pQW5KVEl4Snl4Y2JpQWdJQ0FuTENjNklDY2xNa01uTEZ4dUlDQWdJQ2RiSnpvZ0p5VTFRaWNzWEc0Z0lDQWdKMTBuT2lBbkpUVkVKeXhjYmlBZ0lDQW5leWM2SUNjbE4wSW5MRnh1SUNBZ0lDZDlKem9nSnlVM1JDZGNibjA3WEc1amIyNXpkQ0JsYzJOaGNHVlVZV2RPWVcxbElEMGdLSFJ1S1NBOVBpQjBiaTV5WlhCc1lXTmxLQzliSVN4YlhGeGRlMzFkTDJjc0lHTm9JRDArSUdWelkyRndaVU5vWVhKelcyTm9YU2s3WEc1amJHRnpjeUJFYVhKbFkzUnBkbVZ6SUh0Y2JpQWdJQ0JqYjI1emRISjFZM1J2Y2loNVlXMXNMQ0IwWVdkektTQjdYRzRnSUNBZ0lDQWdJQzhxS2x4dUlDQWdJQ0FnSUNBZ0tpQlVhR1VnWkdseVpXTjBhWFpsY3kxbGJtUXZaRzlqTFhOMFlYSjBJRzFoY210bGNpQmdMUzB0WUM0Z1NXWWdZRzUxYkd4Z0xDQmhJRzFoY210bGNpQnRZWGtnYzNScGJHd2dZbVZjYmlBZ0lDQWdJQ0FnSUNvZ2FXNWpiSFZrWldRZ2FXNGdkR2hsSUdSdlkzVnRaVzUwSjNNZ2MzUnlhVzVuYVdacFpXUWdjbVZ3Y21WelpXNTBZWFJwYjI0dVhHNGdJQ0FnSUNBZ0lDQXFMMXh1SUNBZ0lDQWdJQ0IwYUdsekxtUnZZMU4wWVhKMElEMGdiblZzYkR0Y2JpQWdJQ0FnSUNBZ0x5b3FJRlJvWlNCa2IyTXRaVzVrSUcxaGNtdGxjaUJnTGk0dVlDNGdJQ292WEc0Z0lDQWdJQ0FnSUhSb2FYTXVaRzlqUlc1a0lEMGdabUZzYzJVN1hHNGdJQ0FnSUNBZ0lIUm9hWE11ZVdGdGJDQTlJRTlpYW1WamRDNWhjM05wWjI0b2UzMHNJRVJwY21WamRHbDJaWE11WkdWbVlYVnNkRmxoYld3c0lIbGhiV3dwTzF4dUlDQWdJQ0FnSUNCMGFHbHpMblJoWjNNZ1BTQlBZbXBsWTNRdVlYTnphV2R1S0h0OUxDQkVhWEpsWTNScGRtVnpMbVJsWm1GMWJIUlVZV2R6TENCMFlXZHpLVHRjYmlBZ0lDQjlYRzRnSUNBZ1kyeHZibVVvS1NCN1hHNGdJQ0FnSUNBZ0lHTnZibk4wSUdOdmNIa2dQU0J1WlhjZ1JHbHlaV04wYVhabGN5aDBhR2x6TG5saGJXd3NJSFJvYVhNdWRHRm5jeWs3WEc0Z0lDQWdJQ0FnSUdOdmNIa3VaRzlqVTNSaGNuUWdQU0IwYUdsekxtUnZZMU4wWVhKME8xeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z1kyOXdlVHRjYmlBZ0lDQjlYRzRnSUNBZ0x5b3FYRzRnSUNBZ0lDb2dSSFZ5YVc1bklIQmhjbk5wYm1jc0lHZGxkQ0JoSUVScGNtVmpkR2wyWlhNZ2FXNXpkR0Z1WTJVZ1ptOXlJSFJvWlNCamRYSnlaVzUwSUdSdlkzVnRaVzUwSUdGdVpGeHVJQ0FnSUNBcUlIVndaR0YwWlNCMGFHVWdjM1J5WldGdElITjBZWFJsSUdGalkyOXlaR2x1WnlCMGJ5QjBhR1VnWTNWeWNtVnVkQ0IyWlhKemFXOXVKM01nYzNCbFl5NWNiaUFnSUNBZ0tpOWNiaUFnSUNCaGRFUnZZM1Z0Wlc1MEtDa2dlMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQnlaWE1nUFNCdVpYY2dSR2x5WldOMGFYWmxjeWgwYUdsekxubGhiV3dzSUhSb2FYTXVkR0ZuY3lrN1hHNGdJQ0FnSUNBZ0lITjNhWFJqYUNBb2RHaHBjeTU1WVcxc0xuWmxjbk5wYjI0cElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUdOaGMyVWdKekV1TVNjNlhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RHaHBjeTVoZEU1bGVIUkViMk4xYldWdWRDQTlJSFJ5ZFdVN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1luSmxZV3M3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpZWE5sSUNjeExqSW5PbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSFJvYVhNdVlYUk9aWGgwUkc5amRXMWxiblFnUFNCbVlXeHpaVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IwYUdsekxubGhiV3dnUFNCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR1Y0Y0d4cFkybDBPaUJFYVhKbFkzUnBkbVZ6TG1SbFptRjFiSFJaWVcxc0xtVjRjR3hwWTJsMExGeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IyWlhKemFXOXVPaUFuTVM0eUoxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIMDdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdkR2hwY3k1MFlXZHpJRDBnVDJKcVpXTjBMbUZ6YzJsbmJpaDdmU3dnUkdseVpXTjBhWFpsY3k1a1pXWmhkV3gwVkdGbmN5azdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZbkpsWVdzN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlISmxjenRjYmlBZ0lDQjlYRzRnSUNBZ0x5b3FYRzRnSUNBZ0lDb2dRSEJoY21GdElHOXVSWEp5YjNJZ0xTQk5ZWGtnWW1VZ1kyRnNiR1ZrSUdWMlpXNGdhV1lnZEdobElHRmpkR2x2YmlCM1lYTWdjM1ZqWTJWemMyWjFiRnh1SUNBZ0lDQXFJRUJ5WlhSMWNtNXpJR0IwY25WbFlDQnZiaUJ6ZFdOalpYTnpYRzRnSUNBZ0lDb3ZYRzRnSUNBZ1lXUmtLR3hwYm1Vc0lHOXVSWEp5YjNJcElIdGNiaUFnSUNBZ0lDQWdhV1lnS0hSb2FYTXVZWFJPWlhoMFJHOWpkVzFsYm5RcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUhSb2FYTXVlV0Z0YkNBOUlIc2daWGh3YkdsamFYUTZJRVJwY21WamRHbDJaWE11WkdWbVlYVnNkRmxoYld3dVpYaHdiR2xqYVhRc0lIWmxjbk5wYjI0NklDY3hMakVuSUgwN1hHNGdJQ0FnSUNBZ0lDQWdJQ0IwYUdsekxuUmhaM01nUFNCUFltcGxZM1F1WVhOemFXZHVLSHQ5TENCRWFYSmxZM1JwZG1WekxtUmxabUYxYkhSVVlXZHpLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIUm9hWE11WVhST1pYaDBSRzlqZFcxbGJuUWdQU0JtWVd4elpUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0JqYjI1emRDQndZWEowY3lBOUlHeHBibVV1ZEhKcGJTZ3BMbk53YkdsMEtDOWJJRnhjZEYwckx5azdYRzRnSUNBZ0lDQWdJR052Ym5OMElHNWhiV1VnUFNCd1lYSjBjeTV6YUdsbWRDZ3BPMXh1SUNBZ0lDQWdJQ0J6ZDJsMFkyZ2dLRzVoYldVcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUdOaGMyVWdKeVZVUVVjbk9pQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhV1lnS0hCaGNuUnpMbXhsYm1kMGFDQWhQVDBnTWlrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J2YmtWeWNtOXlLREFzSUNjbFZFRkhJR1JwY21WamRHbDJaU0J6YUc5MWJHUWdZMjl1ZEdGcGJpQmxlR0ZqZEd4NUlIUjNieUJ3WVhKMGN5Y3BPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcFppQW9jR0Z5ZEhNdWJHVnVaM1JvSUR3Z01pbGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCbVlXeHpaVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWTI5dWMzUWdXMmhoYm1Sc1pTd2djSEpsWm1sNFhTQTlJSEJoY25Sek8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIUm9hWE11ZEdGbmMxdG9ZVzVrYkdWZElEMGdjSEpsWm1sNE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCMGNuVmxPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnWTJGelpTQW5KVmxCVFV3bk9pQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdkR2hwY3k1NVlXMXNMbVY0Y0d4cFkybDBJRDBnZEhKMVpUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBaaUFvY0dGeWRITXViR1Z1WjNSb0lDRTlQU0F4S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRzl1UlhKeWIzSW9NQ3dnSnlWWlFVMU1JR1JwY21WamRHbDJaU0J6YUc5MWJHUWdZMjl1ZEdGcGJpQmxlR0ZqZEd4NUlHOXVaU0J3WVhKMEp5azdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJtWVd4elpUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ1czWmxjbk5wYjI1ZElEMGdjR0Z5ZEhNN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLSFpsY25OcGIyNGdQVDA5SUNjeExqRW5JSHg4SUhabGNuTnBiMjRnUFQwOUlDY3hMakluS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSFJvYVhNdWVXRnRiQzUyWlhKemFXOXVJRDBnZG1WeWMybHZianRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhSeWRXVTdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JqYjI1emRDQnBjMVpoYkdsa0lEMGdMMTVjWEdRclhGd3VYRnhrS3lRdkxuUmxjM1FvZG1WeWMybHZiaWs3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHOXVSWEp5YjNJb05pd2dZRlZ1YzNWd2NHOXlkR1ZrSUZsQlRVd2dkbVZ5YzJsdmJpQWtlM1psY25OcGIyNTlZQ3dnYVhOV1lXeHBaQ2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCbVlXeHpaVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNCa1pXWmhkV3gwT2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUc5dVJYSnliM0lvTUN3Z1lGVnVhMjV2ZDI0Z1pHbHlaV04wYVhabElDUjdibUZ0WlgxZ0xDQjBjblZsS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnWm1Gc2MyVTdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQjlYRzRnSUNBZ0x5b3FYRzRnSUNBZ0lDb2dVbVZ6YjJ4MlpYTWdZU0IwWVdjc0lHMWhkR05vYVc1bklHaGhibVJzWlhNZ2RHOGdkR2h2YzJVZ1pHVm1hVzVsWkNCcGJpQWxWRUZISUdScGNtVmpkR2wyWlhNdVhHNGdJQ0FnSUNwY2JpQWdJQ0FnS2lCQWNtVjBkWEp1Y3lCU1pYTnZiSFpsWkNCMFlXY3NJSGRvYVdOb0lHMWhlU0JoYkhOdklHSmxJSFJvWlNCdWIyNHRjM0JsWTJsbWFXTWdkR0ZuSUdBbklTZGdJRzl5SUdGY2JpQWdJQ0FnS2lBZ0lHQW5JV3h2WTJGc0oyQWdkR0ZuTENCdmNpQmdiblZzYkdBZ2FXWWdkVzV5WlhOdmJIWmhZbXhsTGx4dUlDQWdJQ0FxTDF4dUlDQWdJSFJoWjA1aGJXVW9jMjkxY21ObExDQnZia1Z5Y205eUtTQjdYRzRnSUNBZ0lDQWdJR2xtSUNoemIzVnlZMlVnUFQwOUlDY2hKeWxjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlBbklTYzdJQzh2SUc1dmJpMXpjR1ZqYVdacFl5QjBZV2RjYmlBZ0lDQWdJQ0FnYVdZZ0tITnZkWEpqWlZzd1hTQWhQVDBnSnlFbktTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCdmJrVnljbTl5S0dCT2IzUWdZU0IyWVd4cFpDQjBZV2M2SUNSN2MyOTFjbU5sZldBcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJRzUxYkd3N1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdhV1lnS0hOdmRYSmpaVnN4WFNBOVBUMGdKenduS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JqYjI1emRDQjJaWEppWVhScGJTQTlJSE52ZFhKalpTNXpiR2xqWlNneUxDQXRNU2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFvZG1WeVltRjBhVzBnUFQwOUlDY2hKeUI4ZkNCMlpYSmlZWFJwYlNBOVBUMGdKeUVoSnlrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHOXVSWEp5YjNJb1lGWmxjbUpoZEdsdElIUmhaM01nWVhKbGJpZDBJSEpsYzI5c2RtVmtMQ0J6YnlBa2UzTnZkWEpqWlgwZ2FYTWdhVzUyWVd4cFpDNWdLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdiblZzYkR0Y2JpQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2h6YjNWeVkyVmJjMjkxY21ObExteGxibWQwYUNBdElERmRJQ0U5UFNBblBpY3BYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdiMjVGY25KdmNpZ25WbVZ5WW1GMGFXMGdkR0ZuY3lCdGRYTjBJR1Z1WkNCM2FYUm9JR0VnUGljcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJSFpsY21KaGRHbHRPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJRnNzSUdoaGJtUnNaU3dnYzNWbVptbDRYU0E5SUhOdmRYSmpaUzV0WVhSamFDZ3ZYaWd1S2lFcEtGdGVJVjBxS1NRdmN5azdYRzRnSUNBZ0lDQWdJR2xtSUNnaGMzVm1abWw0S1Z4dUlDQWdJQ0FnSUNBZ0lDQWdiMjVGY25KdmNpaGdWR2hsSUNSN2MyOTFjbU5sZlNCMFlXY2dhR0Z6SUc1dklITjFabVpwZUdBcE8xeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCd2NtVm1hWGdnUFNCMGFHbHpMblJoWjNOYmFHRnVaR3hsWFR0Y2JpQWdJQ0FnSUNBZ2FXWWdLSEJ5WldacGVDa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2RISjVJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdjSEpsWm1sNElDc2daR1ZqYjJSbFZWSkpRMjl0Y0c5dVpXNTBLSE4xWm1acGVDazdYRzRnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdJQ0JqWVhSamFDQW9aWEp5YjNJcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnZia1Z5Y205eUtGTjBjbWx1WnlobGNuSnZjaWtwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJ1ZFd4c08xeHVJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lHbG1JQ2hvWVc1a2JHVWdQVDA5SUNjaEp5bGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJ6YjNWeVkyVTdJQzh2SUd4dlkyRnNJSFJoWjF4dUlDQWdJQ0FnSUNCdmJrVnljbTl5S0dCRGIzVnNaQ0J1YjNRZ2NtVnpiMngyWlNCMFlXYzZJQ1I3YzI5MWNtTmxmV0FwTzF4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnYm5Wc2JEdGNiaUFnSUNCOVhHNGdJQ0FnTHlvcVhHNGdJQ0FnSUNvZ1IybDJaVzRnWVNCbWRXeHNlU0J5WlhOdmJIWmxaQ0IwWVdjc0lISmxkSFZ5Ym5NZ2FYUnpJSEJ5YVc1MFlXSnNaU0J6ZEhKcGJtY2dabTl5YlN4Y2JpQWdJQ0FnS2lCMFlXdHBibWNnYVc1MGJ5QmhZMk52ZFc1MElHTjFjbkpsYm5RZ2RHRm5JSEJ5WldacGVHVnpJR0Z1WkNCa1pXWmhkV3gwY3k1Y2JpQWdJQ0FnS2k5Y2JpQWdJQ0IwWVdkVGRISnBibWNvZEdGbktTQjdYRzRnSUNBZ0lDQWdJR1p2Y2lBb1kyOXVjM1FnVzJoaGJtUnNaU3dnY0hKbFptbDRYU0J2WmlCUFltcGxZM1F1Wlc1MGNtbGxjeWgwYUdsekxuUmhaM01wS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2RHRm5Mbk4wWVhKMGMxZHBkR2dvY0hKbFptbDRLU2xjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdhR0Z1Wkd4bElDc2daWE5qWVhCbFZHRm5UbUZ0WlNoMFlXY3VjM1ZpYzNSeWFXNW5LSEJ5WldacGVDNXNaVzVuZEdncEtUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdkR0ZuV3pCZElEMDlQU0FuSVNjZ1B5QjBZV2NnT2lCZ0lUd2tlM1JoWjMwK1lEdGNiaUFnSUNCOVhHNGdJQ0FnZEc5VGRISnBibWNvWkc5aktTQjdYRzRnSUNBZ0lDQWdJR052Ym5OMElHeHBibVZ6SUQwZ2RHaHBjeTU1WVcxc0xtVjRjR3hwWTJsMFhHNGdJQ0FnSUNBZ0lDQWdJQ0EvSUZ0Z0pWbEJUVXdnSkh0MGFHbHpMbmxoYld3dWRtVnljMmx2YmlCOGZDQW5NUzR5SjMxZ1hWeHVJQ0FnSUNBZ0lDQWdJQ0FnT2lCYlhUdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2RHRm5SVzUwY21sbGN5QTlJRTlpYW1WamRDNWxiblJ5YVdWektIUm9hWE11ZEdGbmN5azdYRzRnSUNBZ0lDQWdJR3hsZENCMFlXZE9ZVzFsY3p0Y2JpQWdJQ0FnSUNBZ2FXWWdLR1J2WXlBbUppQjBZV2RGYm5SeWFXVnpMbXhsYm1kMGFDQStJREFnSmlZZ2FYTk9iMlJsS0dSdll5NWpiMjUwWlc1MGN5a3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHTnZibk4wSUhSaFozTWdQU0I3ZlR0Y2JpQWdJQ0FnSUNBZ0lDQWdJSFpwYzJsMEtHUnZZeTVqYjI1MFpXNTBjeXdnS0Y5clpYa3NJRzV2WkdVcElEMCtJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2FYTk9iMlJsS0c1dlpHVXBJQ1ltSUc1dlpHVXVkR0ZuS1Z4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjBZV2R6VzI1dlpHVXVkR0ZuWFNBOUlIUnlkV1U3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIUmhaMDVoYldWeklEMGdUMkpxWldOMExtdGxlWE1vZEdGbmN5azdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnWld4elpWeHVJQ0FnSUNBZ0lDQWdJQ0FnZEdGblRtRnRaWE1nUFNCYlhUdGNiaUFnSUNBZ0lDQWdabTl5SUNoamIyNXpkQ0JiYUdGdVpHeGxMQ0J3Y21WbWFYaGRJRzltSUhSaFowVnVkSEpwWlhNcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDaG9ZVzVrYkdVZ1BUMDlJQ2NoSVNjZ0ppWWdjSEpsWm1sNElEMDlQU0FuZEdGbk9ubGhiV3d1YjNKbkxESXdNREk2SnlsY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCamIyNTBhVzUxWlR0Y2JpQWdJQ0FnSUNBZ0lDQWdJR2xtSUNnaFpHOWpJSHg4SUhSaFowNWhiV1Z6TG5OdmJXVW9kRzRnUFQ0Z2RHNHVjM1JoY25SelYybDBhQ2h3Y21WbWFYZ3BLU2xjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JzYVc1bGN5NXdkWE5vS0dBbFZFRkhJQ1I3YUdGdVpHeGxmU0FrZTNCeVpXWnBlSDFnS1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2JHbHVaWE11YW05cGJpZ25YRnh1SnlrN1hHNGdJQ0FnZlZ4dWZWeHVSR2x5WldOMGFYWmxjeTVrWldaaGRXeDBXV0Z0YkNBOUlIc2daWGh3YkdsamFYUTZJR1poYkhObExDQjJaWEp6YVc5dU9pQW5NUzR5SnlCOU8xeHVSR2x5WldOMGFYWmxjeTVrWldaaGRXeDBWR0ZuY3lBOUlIc2dKeUVoSnpvZ0ozUmhaenA1WVcxc0xtOXlaeXd5TURBeU9pY2dmVHRjYmx4dVpYaHdiM0owSUhzZ1JHbHlaV04wYVhabGN5QjlPMXh1SWl3Z0ltbHRjRzl5ZENCN0lHbHpVMk5oYkdGeUxDQnBjME52Ykd4bFkzUnBiMjRnZlNCbWNtOXRJQ2N1TGk5dWIyUmxjeTlwWkdWdWRHbDBlUzVxY3ljN1hHNXBiWEJ2Y25RZ2V5QjJhWE5wZENCOUlHWnliMjBnSnk0dUwzWnBjMmwwTG1wekp6dGNibHh1THlvcVhHNGdLaUJXWlhKcFpua2dkR2hoZENCMGFHVWdhVzV3ZFhRZ2MzUnlhVzVuSUdseklHRWdkbUZzYVdRZ1lXNWphRzl5TGx4dUlDcGNiaUFxSUZkcGJHd2dkR2h5YjNjZ2IyNGdaWEp5YjNKekxseHVJQ292WEc1bWRXNWpkR2x2YmlCaGJtTm9iM0pKYzFaaGJHbGtLR0Z1WTJodmNpa2dlMXh1SUNBZ0lHbG1JQ2d2VzF4Y2VEQXdMVnhjZURFNVhGeHpMRnRjWEYxN2ZWMHZMblJsYzNRb1lXNWphRzl5S1NrZ2UxeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCellTQTlJRXBUVDA0dWMzUnlhVzVuYVdaNUtHRnVZMmh2Y2lrN1hHNGdJQ0FnSUNBZ0lHTnZibk4wSUcxelp5QTlJR0JCYm1Ob2IzSWdiWFZ6ZENCdWIzUWdZMjl1ZEdGcGJpQjNhR2wwWlhOd1lXTmxJRzl5SUdOdmJuUnliMndnWTJoaGNtRmpkR1Z5Y3pvZ0pIdHpZWDFnTzF4dUlDQWdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1JYSnliM0lvYlhObktUdGNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJSFJ5ZFdVN1hHNTlYRzVtZFc1amRHbHZiaUJoYm1Ob2IzSk9ZVzFsY3loeWIyOTBLU0I3WEc0Z0lDQWdZMjl1YzNRZ1lXNWphRzl5Y3lBOUlHNWxkeUJUWlhRb0tUdGNiaUFnSUNCMmFYTnBkQ2h5YjI5MExDQjdYRzRnSUNBZ0lDQWdJRlpoYkhWbEtGOXJaWGtzSUc1dlpHVXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2h1YjJSbExtRnVZMmh2Y2lsY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCaGJtTm9iM0p6TG1Ga1pDaHViMlJsTG1GdVkyaHZjaWs3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0I5S1R0Y2JpQWdJQ0J5WlhSMWNtNGdZVzVqYUc5eWN6dGNibjFjYmk4cUtpQkdhVzVrSUdFZ2JtVjNJR0Z1WTJodmNpQnVZVzFsSUhkcGRHZ2dkR2hsSUdkcGRtVnVJR0J3Y21WbWFYaGdJR0Z1WkNCaElHOXVaUzFwYm1SbGVHVmtJSE4xWm1acGVDNGdLaTljYm1aMWJtTjBhVzl1SUdacGJtUk9aWGRCYm1Ob2IzSW9jSEpsWm1sNExDQmxlR05zZFdSbEtTQjdYRzRnSUNBZ1ptOXlJQ2hzWlhRZ2FTQTlJREU3SUhSeWRXVTdJQ3NyYVNrZ2UxeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCdVlXMWxJRDBnWUNSN2NISmxabWw0ZlNSN2FYMWdPMXh1SUNBZ0lDQWdJQ0JwWmlBb0lXVjRZMngxWkdVdWFHRnpLRzVoYldVcEtWeHVJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJRzVoYldVN1hHNGdJQ0FnZlZ4dWZWeHVablZ1WTNScGIyNGdZM0psWVhSbFRtOWtaVUZ1WTJodmNuTW9aRzlqTENCd2NtVm1hWGdwSUh0Y2JpQWdJQ0JqYjI1emRDQmhiR2xoYzA5aWFtVmpkSE1nUFNCYlhUdGNiaUFnSUNCamIyNXpkQ0J6YjNWeVkyVlBZbXBsWTNSeklEMGdibVYzSUUxaGNDZ3BPMXh1SUNBZ0lHeGxkQ0J3Y21WMlFXNWphRzl5Y3lBOUlHNTFiR3c3WEc0Z0lDQWdjbVYwZFhKdUlIdGNiaUFnSUNBZ0lDQWdiMjVCYm1Ob2IzSTZJQ2h6YjNWeVkyVXBJRDArSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJR0ZzYVdGelQySnFaV04wY3k1d2RYTm9LSE52ZFhKalpTazdYRzRnSUNBZ0lDQWdJQ0FnSUNCcFppQW9JWEJ5WlhaQmJtTm9iM0p6S1Z4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhCeVpYWkJibU5vYjNKeklEMGdZVzVqYUc5eVRtRnRaWE1vWkc5aktUdGNiaUFnSUNBZ0lDQWdJQ0FnSUdOdmJuTjBJR0Z1WTJodmNpQTlJR1pwYm1ST1pYZEJibU5vYjNJb2NISmxabWw0TENCd2NtVjJRVzVqYUc5eWN5azdYRzRnSUNBZ0lDQWdJQ0FnSUNCd2NtVjJRVzVqYUc5eWN5NWhaR1FvWVc1amFHOXlLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCaGJtTm9iM0k3WEc0Z0lDQWdJQ0FnSUgwc1hHNGdJQ0FnSUNBZ0lDOHFLbHh1SUNBZ0lDQWdJQ0FnS2lCWGFYUm9JR05wY21OMWJHRnlJSEpsWm1WeVpXNWpaWE1zSUhSb1pTQnpiM1Z5WTJVZ2JtOWtaU0JwY3lCdmJteDVJSEpsYzI5c2RtVmtJR0ZtZEdWeUlHRnNiRnh1SUNBZ0lDQWdJQ0FnS2lCdlppQnBkSE1nWTJocGJHUWdibTlrWlhNZ1lYSmxMaUJVYUdseklHbHpJSGRvZVNCaGJtTm9iM0p6SUdGeVpTQnpaWFFnYjI1c2VTQmhablJsY2lCaGJHd2diMlpjYmlBZ0lDQWdJQ0FnSUNvZ2RHaGxJRzV2WkdWeklHaGhkbVVnWW1WbGJpQmpjbVZoZEdWa0xseHVJQ0FnSUNBZ0lDQWdLaTljYmlBZ0lDQWdJQ0FnYzJWMFFXNWphRzl5Y3pvZ0tDa2dQVDRnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdabTl5SUNoamIyNXpkQ0J6YjNWeVkyVWdiMllnWVd4cFlYTlBZbXBsWTNSektTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ2NtVm1JRDBnYzI5MWNtTmxUMkpxWldOMGN5NW5aWFFvYzI5MWNtTmxLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2RIbHdaVzltSUhKbFppQTlQVDBnSjI5aWFtVmpkQ2NnSmlaY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVZtTG1GdVkyaHZjaUFtSmx4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQW9hWE5UWTJGc1lYSW9jbVZtTG01dlpHVXBJSHg4SUdselEyOXNiR1ZqZEdsdmJpaHlaV1l1Ym05a1pTa3BLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxaaTV1YjJSbExtRnVZMmh2Y2lBOUlISmxaaTVoYm1Ob2IzSTdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JqYjI1emRDQmxjbkp2Y2lBOUlHNWxkeUJGY25KdmNpZ25SbUZwYkdWa0lIUnZJSEpsYzI5c2RtVWdjbVZ3WldGMFpXUWdiMkpxWldOMElDaDBhR2x6SUhOb2IzVnNaQ0J1YjNRZ2FHRndjR1Z1S1NjcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JsY25KdmNpNXpiM1Z5WTJVZ1BTQnpiM1Z5WTJVN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSFJvY205M0lHVnljbTl5TzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnZlN4Y2JpQWdJQ0FnSUNBZ2MyOTFjbU5sVDJKcVpXTjBjMXh1SUNBZ0lIMDdYRzU5WEc1Y2JtVjRjRzl5ZENCN0lHRnVZMmh2Y2tselZtRnNhV1FzSUdGdVkyaHZjazVoYldWekxDQmpjbVZoZEdWT2IyUmxRVzVqYUc5eWN5d2dabWx1WkU1bGQwRnVZMmh2Y2lCOU8xeHVJaXdnSWk4cUtseHVJQ29nUVhCd2JHbGxjeUIwYUdVZ1NsTlBUaTV3WVhKelpTQnlaWFpwZG1WeUlHRnNaMjl5YVhSb2JTQmhjeUJrWldacGJtVmtJR2x1SUhSb1pTQkZRMDFCTFRJMk1pQnpjR1ZqTEZ4dUlDb2dhVzRnYzJWamRHbHZiaUF5TkM0MUxqRXVNU0JjSWxKMWJuUnBiV1VnVTJWdFlXNTBhV056T2lCSmJuUmxjbTVoYkdsNlpVcFRUMDVRY205d1pYSjBlVndpSUc5bUlIUm9aVnh1SUNvZ01qQXlNU0JsWkdsMGFXOXVPaUJvZEhSd2N6b3ZMM1JqTXprdVpYTXZaV050WVRJMk1pOGpjMlZqTFdwemIyNHVjR0Z5YzJWY2JpQXFYRzRnS2lCSmJtTnNkV1JsY3lCbGVIUmxibk5wYjI1eklHWnZjaUJvWVc1a2JHbHVaeUJOWVhBZ1lXNWtJRk5sZENCdlltcGxZM1J6TGx4dUlDb3ZYRzVtZFc1amRHbHZiaUJoY0hCc2VWSmxkbWwyWlhJb2NtVjJhWFpsY2l3Z2IySnFMQ0JyWlhrc0lIWmhiQ2tnZTF4dUlDQWdJR2xtSUNoMllXd2dKaVlnZEhsd1pXOW1JSFpoYkNBOVBUMGdKMjlpYW1WamRDY3BJSHRjYmlBZ0lDQWdJQ0FnYVdZZ0tFRnljbUY1TG1selFYSnlZWGtvZG1Gc0tTa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ1ptOXlJQ2hzWlhRZ2FTQTlJREFzSUd4bGJpQTlJSFpoYkM1c1pXNW5kR2c3SUdrZ1BDQnNaVzQ3SUNzcmFTa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR052Ym5OMElIWXdJRDBnZG1Gc1cybGRPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR052Ym5OMElIWXhJRDBnWVhCd2JIbFNaWFpwZG1WeUtISmxkbWwyWlhJc0lIWmhiQ3dnVTNSeWFXNW5LR2twTENCMk1DazdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdMeThnWlhOc2FXNTBMV1JwYzJGaWJHVXRibVY0ZEMxc2FXNWxJRUIwZVhCbGMyTnlhWEIwTFdWemJHbHVkQzl1YnkxaGNuSmhlUzFrWld4bGRHVmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBaaUFvZGpFZ1BUMDlJSFZ1WkdWbWFXNWxaQ2xjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1pHVnNaWFJsSUhaaGJGdHBYVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JsYkhObElHbG1JQ2gyTVNBaFBUMGdkakFwWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIWmhiRnRwWFNBOUlIWXhPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJR1ZzYzJVZ2FXWWdLSFpoYkNCcGJuTjBZVzVqWlc5bUlFMWhjQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdabTl5SUNoamIyNXpkQ0JySUc5bUlFRnljbUY1TG1aeWIyMG9kbUZzTG10bGVYTW9LU2twSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCamIyNXpkQ0IyTUNBOUlIWmhiQzVuWlhRb2F5azdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ2RqRWdQU0JoY0hCc2VWSmxkbWwyWlhJb2NtVjJhWFpsY2l3Z2RtRnNMQ0JyTENCMk1DazdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhV1lnS0hZeElEMDlQU0IxYm1SbFptbHVaV1FwWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIWmhiQzVrWld4bGRHVW9heWs3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWld4elpTQnBaaUFvZGpFZ0lUMDlJSFl3S1Z4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjJZV3d1YzJWMEtHc3NJSFl4S1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCbGJITmxJR2xtSUNoMllXd2dhVzV6ZEdGdVkyVnZaaUJUWlhRcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUdadmNpQW9ZMjl1YzNRZ2RqQWdiMllnUVhKeVlYa3Vabkp2YlNoMllXd3BLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWTI5dWMzUWdkakVnUFNCaGNIQnNlVkpsZG1sMlpYSW9jbVYyYVhabGNpd2dkbUZzTENCMk1Dd2dkakFwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDaDJNU0E5UFQwZ2RXNWtaV1pwYm1Wa0tWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IyWVd3dVpHVnNaWFJsS0hZd0tUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmxiSE5sSUdsbUlDaDJNU0FoUFQwZ2RqQXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RtRnNMbVJsYkdWMFpTaDJNQ2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIWmhiQzVoWkdRb2RqRXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0JsYkhObElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUdadmNpQW9ZMjl1YzNRZ1cyc3NJSFl3WFNCdlppQlBZbXBsWTNRdVpXNTBjbWxsY3loMllXd3BLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWTI5dWMzUWdkakVnUFNCaGNIQnNlVkpsZG1sMlpYSW9jbVYyYVhabGNpd2dkbUZzTENCckxDQjJNQ2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tIWXhJRDA5UFNCMWJtUmxabWx1WldRcFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR1JsYkdWMFpTQjJZV3hiYTEwN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1pXeHpaU0JwWmlBb2RqRWdJVDA5SUhZd0tWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IyWVd4YmExMGdQU0IyTVR0Y2JpQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ0lDQnlaWFIxY200Z2NtVjJhWFpsY2k1allXeHNLRzlpYWl3Z2EyVjVMQ0IyWVd3cE8xeHVmVnh1WEc1bGVIQnZjblFnZXlCaGNIQnNlVkpsZG1sMlpYSWdmVHRjYmlJc0lDSnBiWEJ2Y25RZ2V5Qm9ZWE5CYm1Ob2IzSWdmU0JtY205dElDY3VMMmxrWlc1MGFYUjVMbXB6Snp0Y2JseHVMeW9xWEc0Z0tpQlNaV04xY25OcGRtVnNlU0JqYjI1MlpYSjBJR0Z1ZVNCdWIyUmxJRzl5SUdsMGN5QmpiMjUwWlc1MGN5QjBieUJ1WVhScGRtVWdTbUYyWVZOamNtbHdkRnh1SUNwY2JpQXFJRUJ3WVhKaGJTQjJZV3gxWlNBdElGUm9aU0JwYm5CMWRDQjJZV3gxWlZ4dUlDb2dRSEJoY21GdElHRnlaeUF0SUVsbUlHQjJZV3gxWldBZ1pHVm1hVzVsY3lCaElHQjBiMHBUVDA0b0tXQWdiV1YwYUc5a0xDQjFjMlVnZEdocGMxeHVJQ29nSUNCaGN5QnBkSE1nWm1seWMzUWdZWEpuZFcxbGJuUmNiaUFxSUVCd1lYSmhiU0JqZEhnZ0xTQkRiMjUyWlhKemFXOXVJR052Ym5SbGVIUXNJRzl5YVdkcGJtRnNiSGtnYzJWMElHbHVJRVJ2WTNWdFpXNTBJM1J2U2xNb0tTNGdTV1pjYmlBcUlDQWdZSHNnYTJWbGNEb2dkSEoxWlNCOVlDQnBjeUJ1YjNRZ2MyVjBMQ0J2ZFhSd2RYUWdjMmh2ZFd4a0lHSmxJSE4xYVhSaFlteGxJR1p2Y2lCS1UwOU9YRzRnS2lBZ0lITjBjbWx1WjJsbWFXTmhkR2x2Ymk1Y2JpQXFMMXh1Wm5WdVkzUnBiMjRnZEc5S1V5aDJZV3gxWlN3Z1lYSm5MQ0JqZEhncElIdGNiaUFnSUNBdkx5QmxjMnhwYm5RdFpHbHpZV0pzWlMxdVpYaDBMV3hwYm1VZ1FIUjVjR1Z6WTNKcGNIUXRaWE5zYVc1MEwyNXZMWFZ1YzJGbVpTMXlaWFIxY201Y2JpQWdJQ0JwWmlBb1FYSnlZWGt1YVhOQmNuSmhlU2gyWVd4MVpTa3BYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQjJZV3gxWlM1dFlYQW9LSFlzSUdrcElEMCtJSFJ2U2xNb2Rpd2dVM1J5YVc1bktHa3BMQ0JqZEhncEtUdGNiaUFnSUNCcFppQW9kbUZzZFdVZ0ppWWdkSGx3Wlc5bUlIWmhiSFZsTG5SdlNsTlBUaUE5UFQwZ0oyWjFibU4wYVc5dUp5a2dlMXh1SUNBZ0lDQWdJQ0F2THlCbGMyeHBiblF0WkdsellXSnNaUzF1WlhoMExXeHBibVVnUUhSNWNHVnpZM0pwY0hRdFpYTnNhVzUwTDI1dkxYVnVjMkZtWlMxallXeHNYRzRnSUNBZ0lDQWdJR2xtSUNnaFkzUjRJSHg4SUNGb1lYTkJibU5vYjNJb2RtRnNkV1VwS1Z4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlIWmhiSFZsTG5SdlNsTlBUaWhoY21jc0lHTjBlQ2s3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJR1JoZEdFZ1BTQjdJR0ZzYVdGelEyOTFiblE2SURBc0lHTnZkVzUwT2lBeExDQnlaWE02SUhWdVpHVm1hVzVsWkNCOU8xeHVJQ0FnSUNBZ0lDQmpkSGd1WVc1amFHOXljeTV6WlhRb2RtRnNkV1VzSUdSaGRHRXBPMXh1SUNBZ0lDQWdJQ0JqZEhndWIyNURjbVZoZEdVZ1BTQnlaWE1nUFQ0Z2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnWkdGMFlTNXlaWE1nUFNCeVpYTTdYRzRnSUNBZ0lDQWdJQ0FnSUNCa1pXeGxkR1VnWTNSNExtOXVRM0psWVhSbE8xeHVJQ0FnSUNBZ0lDQjlPMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQnlaWE1nUFNCMllXeDFaUzUwYjBwVFQwNG9ZWEpuTENCamRIZ3BPMXh1SUNBZ0lDQWdJQ0JwWmlBb1kzUjRMbTl1UTNKbFlYUmxLVnh1SUNBZ0lDQWdJQ0FnSUNBZ1kzUjRMbTl1UTNKbFlYUmxLSEpsY3lrN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCeVpYTTdYRzRnSUNBZ2ZWeHVJQ0FnSUdsbUlDaDBlWEJsYjJZZ2RtRnNkV1VnUFQwOUlDZGlhV2RwYm5RbklDWW1JQ0ZqZEhnL0xtdGxaWEFwWEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJPZFcxaVpYSW9kbUZzZFdVcE8xeHVJQ0FnSUhKbGRIVnliaUIyWVd4MVpUdGNibjFjYmx4dVpYaHdiM0owSUhzZ2RHOUtVeUI5TzF4dUlpd2dJbWx0Y0c5eWRDQjdJR0Z3Y0d4NVVtVjJhWFpsY2lCOUlHWnliMjBnSnk0dUwyUnZZeTloY0hCc2VWSmxkbWwyWlhJdWFuTW5PMXh1YVcxd2IzSjBJSHNnVGs5RVJWOVVXVkJGTENCcGMwUnZZM1Z0Wlc1MElIMGdabkp2YlNBbkxpOXBaR1Z1ZEdsMGVTNXFjeWM3WEc1cGJYQnZjblFnZXlCMGIwcFRJSDBnWm5KdmJTQW5MaTkwYjBwVExtcHpKenRjYmx4dVkyeGhjM01nVG05a1pVSmhjMlVnZTF4dUlDQWdJR052Ym5OMGNuVmpkRzl5S0hSNWNHVXBJSHRjYmlBZ0lDQWdJQ0FnVDJKcVpXTjBMbVJsWm1sdVpWQnliM0JsY25SNUtIUm9hWE1zSUU1UFJFVmZWRmxRUlN3Z2V5QjJZV3gxWlRvZ2RIbHdaU0I5S1R0Y2JpQWdJQ0I5WEc0Z0lDQWdMeW9xSUVOeVpXRjBaU0JoSUdOdmNIa2diMllnZEdocGN5QnViMlJsTGlBZ0tpOWNiaUFnSUNCamJHOXVaU2dwSUh0Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnWTI5d2VTQTlJRTlpYW1WamRDNWpjbVZoZEdVb1QySnFaV04wTG1kbGRGQnliM1J2ZEhsd1pVOW1LSFJvYVhNcExDQlBZbXBsWTNRdVoyVjBUM2R1VUhKdmNHVnlkSGxFWlhOamNtbHdkRzl5Y3loMGFHbHpLU2s3WEc0Z0lDQWdJQ0FnSUdsbUlDaDBhR2x6TG5KaGJtZGxLVnh1SUNBZ0lDQWdJQ0FnSUNBZ1kyOXdlUzV5WVc1blpTQTlJSFJvYVhNdWNtRnVaMlV1YzJ4cFkyVW9LVHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJR052Y0hrN1hHNGdJQ0FnZlZ4dUlDQWdJQzhxS2lCQklIQnNZV2x1SUVwaGRtRlRZM0pwY0hRZ2NtVndjbVZ6Wlc1MFlYUnBiMjRnYjJZZ2RHaHBjeUJ1YjJSbExpQXFMMXh1SUNBZ0lIUnZTbE1vWkc5akxDQjdJRzFoY0VGelRXRndMQ0J0WVhoQmJHbGhjME52ZFc1MExDQnZia0Z1WTJodmNpd2djbVYyYVhabGNpQjlJRDBnZTMwcElIdGNiaUFnSUNBZ0lDQWdhV1lnS0NGcGMwUnZZM1Z0Wlc1MEtHUnZZeWtwWEc0Z0lDQWdJQ0FnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dWSGx3WlVWeWNtOXlLQ2RCSUdSdlkzVnRaVzUwSUdGeVozVnRaVzUwSUdseklISmxjWFZwY21Wa0p5azdYRzRnSUNBZ0lDQWdJR052Ym5OMElHTjBlQ0E5SUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJR0Z1WTJodmNuTTZJRzVsZHlCTllYQW9LU3hjYmlBZ0lDQWdJQ0FnSUNBZ0lHUnZZeXhjYmlBZ0lDQWdJQ0FnSUNBZ0lHdGxaWEE2SUhSeWRXVXNYRzRnSUNBZ0lDQWdJQ0FnSUNCdFlYQkJjMDFoY0RvZ2JXRndRWE5OWVhBZ1BUMDlJSFJ5ZFdVc1hHNGdJQ0FnSUNBZ0lDQWdJQ0J0WVhCTFpYbFhZWEp1WldRNklHWmhiSE5sTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdiV0Y0UVd4cFlYTkRiM1Z1ZERvZ2RIbHdaVzltSUcxaGVFRnNhV0Z6UTI5MWJuUWdQVDA5SUNkdWRXMWlaWEluSUQ4Z2JXRjRRV3hwWVhORGIzVnVkQ0E2SURFd01GeHVJQ0FnSUNBZ0lDQjlPMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQnlaWE1nUFNCMGIwcFRLSFJvYVhNc0lDY25MQ0JqZEhncE8xeHVJQ0FnSUNBZ0lDQnBaaUFvZEhsd1pXOW1JRzl1UVc1amFHOXlJRDA5UFNBblpuVnVZM1JwYjI0bktWeHVJQ0FnSUNBZ0lDQWdJQ0FnWm05eUlDaGpiMjV6ZENCN0lHTnZkVzUwTENCeVpYTWdmU0J2WmlCamRIZ3VZVzVqYUc5eWN5NTJZV3gxWlhNb0tTbGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnZia0Z1WTJodmNpaHlaWE1zSUdOdmRXNTBLVHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJSFI1Y0dWdlppQnlaWFpwZG1WeUlEMDlQU0FuWm5WdVkzUnBiMjRuWEc0Z0lDQWdJQ0FnSUNBZ0lDQS9JR0Z3Y0d4NVVtVjJhWFpsY2loeVpYWnBkbVZ5TENCN0lDY25PaUJ5WlhNZ2ZTd2dKeWNzSUhKbGN5bGNiaUFnSUNBZ0lDQWdJQ0FnSURvZ2NtVnpPMXh1SUNBZ0lIMWNibjFjYmx4dVpYaHdiM0owSUhzZ1RtOWtaVUpoYzJVZ2ZUdGNiaUlzSUNKcGJYQnZjblFnZXlCaGJtTm9iM0pKYzFaaGJHbGtJSDBnWm5KdmJTQW5MaTR2Wkc5akwyRnVZMmh2Y25NdWFuTW5PMXh1YVcxd2IzSjBJSHNnZG1semFYUWdmU0JtY205dElDY3VMaTkyYVhOcGRDNXFjeWM3WEc1cGJYQnZjblFnZXlCQlRFbEJVeXdnYVhOQmJHbGhjeXdnYVhORGIyeHNaV04wYVc5dUxDQnBjMUJoYVhJZ2ZTQm1jbTl0SUNjdUwybGtaVzUwYVhSNUxtcHpKenRjYm1sdGNHOXlkQ0I3SUU1dlpHVkNZWE5sSUgwZ1puSnZiU0FuTGk5T2IyUmxMbXB6Snp0Y2JtbHRjRzl5ZENCN0lIUnZTbE1nZlNCbWNtOXRJQ2N1TDNSdlNsTXVhbk1uTzF4dVhHNWpiR0Z6Y3lCQmJHbGhjeUJsZUhSbGJtUnpJRTV2WkdWQ1lYTmxJSHRjYmlBZ0lDQmpiMjV6ZEhKMVkzUnZjaWh6YjNWeVkyVXBJSHRjYmlBZ0lDQWdJQ0FnYzNWd1pYSW9RVXhKUVZNcE8xeHVJQ0FnSUNBZ0lDQjBhR2x6TG5OdmRYSmpaU0E5SUhOdmRYSmpaVHRjYmlBZ0lDQWdJQ0FnVDJKcVpXTjBMbVJsWm1sdVpWQnliM0JsY25SNUtIUm9hWE1zSUNkMFlXY25MQ0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnpaWFFvS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RHaHliM2NnYm1WM0lFVnljbTl5S0NkQmJHbGhjeUJ1YjJSbGN5QmpZVzV1YjNRZ2FHRjJaU0IwWVdkekp5azdYRzRnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lIMHBPMXh1SUNBZ0lIMWNiaUFnSUNBdktpcGNiaUFnSUNBZ0tpQlNaWE52YkhabElIUm9aU0IyWVd4MVpTQnZaaUIwYUdseklHRnNhV0Z6SUhkcGRHaHBiaUJnWkc5allDd2dabWx1WkdsdVp5QjBhR1VnYkdGemRGeHVJQ0FnSUNBcUlHbHVjM1JoYm1ObElHOW1JSFJvWlNCZ2MyOTFjbU5sWUNCaGJtTm9iM0lnWW1WbWIzSmxJSFJvYVhNZ2JtOWtaUzVjYmlBZ0lDQWdLaTljYmlBZ0lDQnlaWE52YkhabEtHUnZZeWtnZTF4dUlDQWdJQ0FnSUNCc1pYUWdabTkxYm1RZ1BTQjFibVJsWm1sdVpXUTdYRzRnSUNBZ0lDQWdJSFpwYzJsMEtHUnZZeXdnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdUbTlrWlRvZ0tGOXJaWGtzSUc1dlpHVXBJRDArSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcFppQW9ibTlrWlNBOVBUMGdkR2hwY3lsY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlIWnBjMmwwTGtKU1JVRkxPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNodWIyUmxMbUZ1WTJodmNpQTlQVDBnZEdocGN5NXpiM1Z5WTJVcFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR1p2ZFc1a0lEMGdibTlrWlR0Y2JpQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnZlNrN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCbWIzVnVaRHRjYmlBZ0lDQjlYRzRnSUNBZ2RHOUtVMDlPS0Y5aGNtY3NJR04wZUNrZ2UxeHVJQ0FnSUNBZ0lDQnBaaUFvSVdOMGVDbGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUI3SUhOdmRYSmpaVG9nZEdocGN5NXpiM1Z5WTJVZ2ZUdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2V5QmhibU5vYjNKekxDQmtiMk1zSUcxaGVFRnNhV0Z6UTI5MWJuUWdmU0E5SUdOMGVEdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2MyOTFjbU5sSUQwZ2RHaHBjeTV5WlhOdmJIWmxLR1J2WXlrN1hHNGdJQ0FnSUNBZ0lHbG1JQ2doYzI5MWNtTmxLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCdGMyY2dQU0JnVlc1eVpYTnZiSFpsWkNCaGJHbGhjeUFvZEdobElHRnVZMmh2Y2lCdGRYTjBJR0psSUhObGRDQmlaV1p2Y21VZ2RHaGxJR0ZzYVdGektUb2dKSHQwYUdsekxuTnZkWEpqWlgxZ08xeHVJQ0FnSUNBZ0lDQWdJQ0FnZEdoeWIzY2dibVYzSUZKbFptVnlaVzVqWlVWeWNtOXlLRzF6WnlrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdiR1YwSUdSaGRHRWdQU0JoYm1Ob2IzSnpMbWRsZENoemIzVnlZMlVwTzF4dUlDQWdJQ0FnSUNCcFppQW9JV1JoZEdFcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUM4dklGSmxjMjlzZG1VZ1lXNWphRzl5Y3lCbWIzSWdUbTlrWlM1d2NtOTBiM1I1Y0dVdWRHOUtVeWdwWEc0Z0lDQWdJQ0FnSUNBZ0lDQjBiMHBUS0hOdmRYSmpaU3dnYm5Wc2JDd2dZM1I0S1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJR1JoZEdFZ1BTQmhibU5vYjNKekxtZGxkQ2h6YjNWeVkyVXBPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUM4cUlHbHpkR0Z1WW5Wc0lHbG5ibTl5WlNCcFppQXFMMXh1SUNBZ0lDQWdJQ0JwWmlBb0lXUmhkR0VnZkh3Z1pHRjBZUzV5WlhNZ1BUMDlJSFZ1WkdWbWFXNWxaQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ2JYTm5JRDBnSjFSb2FYTWdjMmh2ZFd4a0lHNXZkQ0JvWVhCd1pXNDZJRUZzYVdGeklHRnVZMmh2Y2lCM1lYTWdibTkwSUhKbGMyOXNkbVZrUHljN1hHNGdJQ0FnSUNBZ0lDQWdJQ0IwYUhKdmR5QnVaWGNnVW1WbVpYSmxibU5sUlhKeWIzSW9iWE5uS1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQnBaaUFvYldGNFFXeHBZWE5EYjNWdWRDQStQU0F3S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JrWVhSaExtTnZkVzUwSUNzOUlERTdYRzRnSUNBZ0lDQWdJQ0FnSUNCcFppQW9aR0YwWVM1aGJHbGhjME52ZFc1MElEMDlQU0F3S1Z4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdSaGRHRXVZV3hwWVhORGIzVnVkQ0E5SUdkbGRFRnNhV0Z6UTI5MWJuUW9aRzlqTENCemIzVnlZMlVzSUdGdVkyaHZjbk1wTzF4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lnS0dSaGRHRXVZMjkxYm5RZ0tpQmtZWFJoTG1Gc2FXRnpRMjkxYm5RZ1BpQnRZWGhCYkdsaGMwTnZkVzUwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1kyOXVjM1FnYlhObklEMGdKMFY0WTJWemMybDJaU0JoYkdsaGN5QmpiM1Z1ZENCcGJtUnBZMkYwWlhNZ1lTQnlaWE52ZFhKalpTQmxlR2hoZFhOMGFXOXVJR0YwZEdGamF5YzdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdkR2h5YjNjZ2JtVjNJRkpsWm1WeVpXNWpaVVZ5Y205eUtHMXpaeWs3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJR1JoZEdFdWNtVnpPMXh1SUNBZ0lIMWNiaUFnSUNCMGIxTjBjbWx1WnloamRIZ3NJRjl2YmtOdmJXMWxiblFzSUY5dmJrTm9iMjF3UzJWbGNDa2dlMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQnpjbU1nUFNCZ0tpUjdkR2hwY3k1emIzVnlZMlY5WUR0Y2JpQWdJQ0FnSUNBZ2FXWWdLR04wZUNrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnWVc1amFHOXlTWE5XWVd4cFpDaDBhR2x6TG5OdmRYSmpaU2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFvWTNSNExtOXdkR2x2Ym5NdWRtVnlhV1o1UVd4cFlYTlBjbVJsY2lBbUppQWhZM1I0TG1GdVkyaHZjbk11YUdGektIUm9hWE11YzI5MWNtTmxLU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdOdmJuTjBJRzF6WnlBOUlHQlZibkpsYzI5c2RtVmtJR0ZzYVdGeklDaDBhR1VnWVc1amFHOXlJRzExYzNRZ1ltVWdjMlYwSUdKbFptOXlaU0IwYUdVZ1lXeHBZWE1wT2lBa2UzUm9hWE11YzI5MWNtTmxmV0E3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZEdoeWIzY2dibVYzSUVWeWNtOXlLRzF6WnlrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFvWTNSNExtbHRjR3hwWTJsMFMyVjVLVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQmdKSHR6Y21OOUlHQTdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJSE55WXp0Y2JpQWdJQ0I5WEc1OVhHNW1kVzVqZEdsdmJpQm5aWFJCYkdsaGMwTnZkVzUwS0dSdll5d2dibTlrWlN3Z1lXNWphRzl5Y3lrZ2UxeHVJQ0FnSUdsbUlDaHBjMEZzYVdGektHNXZaR1VwS1NCN1hHNGdJQ0FnSUNBZ0lHTnZibk4wSUhOdmRYSmpaU0E5SUc1dlpHVXVjbVZ6YjJ4MlpTaGtiMk1wTzF4dUlDQWdJQ0FnSUNCamIyNXpkQ0JoYm1Ob2IzSWdQU0JoYm1Ob2IzSnpJQ1ltSUhOdmRYSmpaU0FtSmlCaGJtTm9iM0p6TG1kbGRDaHpiM1Z5WTJVcE8xeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z1lXNWphRzl5SUQ4Z1lXNWphRzl5TG1OdmRXNTBJQ29nWVc1amFHOXlMbUZzYVdGelEyOTFiblFnT2lBd08xeHVJQ0FnSUgxY2JpQWdJQ0JsYkhObElHbG1JQ2hwYzBOdmJHeGxZM1JwYjI0b2JtOWtaU2twSUh0Y2JpQWdJQ0FnSUNBZ2JHVjBJR052ZFc1MElEMGdNRHRjYmlBZ0lDQWdJQ0FnWm05eUlDaGpiMjV6ZENCcGRHVnRJRzltSUc1dlpHVXVhWFJsYlhNcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUdOdmJuTjBJR01nUFNCblpYUkJiR2xoYzBOdmRXNTBLR1J2WXl3Z2FYUmxiU3dnWVc1amFHOXljeWs3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFvWXlBK0lHTnZkVzUwS1Z4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdOdmRXNTBJRDBnWXp0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z1kyOTFiblE3WEc0Z0lDQWdmVnh1SUNBZ0lHVnNjMlVnYVdZZ0tHbHpVR0ZwY2lodWIyUmxLU2tnZTF4dUlDQWdJQ0FnSUNCamIyNXpkQ0JyWXlBOUlHZGxkRUZzYVdGelEyOTFiblFvWkc5akxDQnViMlJsTG10bGVTd2dZVzVqYUc5eWN5azdYRzRnSUNBZ0lDQWdJR052Ym5OMElIWmpJRDBnWjJWMFFXeHBZWE5EYjNWdWRDaGtiMk1zSUc1dlpHVXVkbUZzZFdVc0lHRnVZMmh2Y25NcE8xeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z1RXRjBhQzV0WVhnb2EyTXNJSFpqS1R0Y2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlERTdYRzU5WEc1Y2JtVjRjRzl5ZENCN0lFRnNhV0Z6SUgwN1hHNGlMQ0FpYVcxd2IzSjBJSHNnVTBOQlRFRlNJSDBnWm5KdmJTQW5MaTlwWkdWdWRHbDBlUzVxY3ljN1hHNXBiWEJ2Y25RZ2V5Qk9iMlJsUW1GelpTQjlJR1p5YjIwZ0p5NHZUbTlrWlM1cWN5YzdYRzVwYlhCdmNuUWdleUIwYjBwVElIMGdabkp2YlNBbkxpOTBiMHBUTG1wekp6dGNibHh1WTI5dWMzUWdhWE5UWTJGc1lYSldZV3gxWlNBOUlDaDJZV3gxWlNrZ1BUNGdJWFpoYkhWbElIeDhJQ2gwZVhCbGIyWWdkbUZzZFdVZ0lUMDlJQ2RtZFc1amRHbHZiaWNnSmlZZ2RIbHdaVzltSUhaaGJIVmxJQ0U5UFNBbmIySnFaV04wSnlrN1hHNWpiR0Z6Y3lCVFkyRnNZWElnWlhoMFpXNWtjeUJPYjJSbFFtRnpaU0I3WEc0Z0lDQWdZMjl1YzNSeWRXTjBiM0lvZG1Gc2RXVXBJSHRjYmlBZ0lDQWdJQ0FnYzNWd1pYSW9VME5CVEVGU0tUdGNiaUFnSUNBZ0lDQWdkR2hwY3k1MllXeDFaU0E5SUhaaGJIVmxPMXh1SUNBZ0lIMWNiaUFnSUNCMGIwcFRUMDRvWVhKbkxDQmpkSGdwSUh0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUdOMGVEOHVhMlZsY0NBL0lIUm9hWE11ZG1Gc2RXVWdPaUIwYjBwVEtIUm9hWE11ZG1Gc2RXVXNJR0Z5Wnl3Z1kzUjRLVHRjYmlBZ0lDQjlYRzRnSUNBZ2RHOVRkSEpwYm1jb0tTQjdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQlRkSEpwYm1jb2RHaHBjeTUyWVd4MVpTazdYRzRnSUNBZ2ZWeHVmVnh1VTJOaGJHRnlMa0pNVDBOTFgwWlBURVJGUkNBOUlDZENURTlEUzE5R1QweEVSVVFuTzF4dVUyTmhiR0Z5TGtKTVQwTkxYMHhKVkVWU1FVd2dQU0FuUWt4UFEwdGZURWxVUlZKQlRDYzdYRzVUWTJGc1lYSXVVRXhCU1U0Z1BTQW5VRXhCU1U0bk8xeHVVMk5oYkdGeUxsRlZUMVJGWDBSUFZVSk1SU0E5SUNkUlZVOVVSVjlFVDFWQ1RFVW5PMXh1VTJOaGJHRnlMbEZWVDFSRlgxTkpUa2RNUlNBOUlDZFJWVTlVUlY5VFNVNUhURVVuTzF4dVhHNWxlSEJ2Y25RZ2V5QlRZMkZzWVhJc0lHbHpVMk5oYkdGeVZtRnNkV1VnZlR0Y2JpSXNJQ0pwYlhCdmNuUWdleUJCYkdsaGN5QjlJR1p5YjIwZ0p5NHVMMjV2WkdWekwwRnNhV0Z6TG1wekp6dGNibWx0Y0c5eWRDQjdJR2x6VG05a1pTd2dhWE5RWVdseUxDQk5RVkFzSUZORlVTd2dhWE5FYjJOMWJXVnVkQ0I5SUdaeWIyMGdKeTR1TDI1dlpHVnpMMmxrWlc1MGFYUjVMbXB6Snp0Y2JtbHRjRzl5ZENCN0lGTmpZV3hoY2lCOUlHWnliMjBnSnk0dUwyNXZaR1Z6TDFOallXeGhjaTVxY3ljN1hHNWNibU52Ym5OMElHUmxabUYxYkhSVVlXZFFjbVZtYVhnZ1BTQW5kR0ZuT25saGJXd3ViM0puTERJd01ESTZKenRjYm1aMWJtTjBhVzl1SUdacGJtUlVZV2RQWW1wbFkzUW9kbUZzZFdVc0lIUmhaMDVoYldVc0lIUmhaM01wSUh0Y2JpQWdJQ0JwWmlBb2RHRm5UbUZ0WlNrZ2UxeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCdFlYUmphQ0E5SUhSaFozTXVabWxzZEdWeUtIUWdQVDRnZEM1MFlXY2dQVDA5SUhSaFowNWhiV1VwTzF4dUlDQWdJQ0FnSUNCamIyNXpkQ0IwWVdkUFltb2dQU0J0WVhSamFDNW1hVzVrS0hRZ1BUNGdJWFF1Wm05eWJXRjBLU0EvUHlCdFlYUmphRnN3WFR0Y2JpQWdJQ0FnSUNBZ2FXWWdLQ0YwWVdkUFltb3BYRzRnSUNBZ0lDQWdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1JYSnliM0lvWUZSaFp5QWtlM1JoWjA1aGJXVjlJRzV2ZENCbWIzVnVaR0FwTzF4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnZEdGblQySnFPMXh1SUNBZ0lIMWNiaUFnSUNCeVpYUjFjbTRnZEdGbmN5NW1hVzVrS0hRZ1BUNGdkQzVwWkdWdWRHbG1lVDh1S0haaGJIVmxLU0FtSmlBaGRDNW1iM0p0WVhRcE8xeHVmVnh1Wm5WdVkzUnBiMjRnWTNKbFlYUmxUbTlrWlNoMllXeDFaU3dnZEdGblRtRnRaU3dnWTNSNEtTQjdYRzRnSUNBZ2FXWWdLR2x6Ukc5amRXMWxiblFvZG1Gc2RXVXBLVnh1SUNBZ0lDQWdJQ0IyWVd4MVpTQTlJSFpoYkhWbExtTnZiblJsYm5Sek8xeHVJQ0FnSUdsbUlDaHBjMDV2WkdVb2RtRnNkV1VwS1Z4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnZG1Gc2RXVTdYRzRnSUNBZ2FXWWdLR2x6VUdGcGNpaDJZV3gxWlNrcElIdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2JXRndJRDBnWTNSNExuTmphR1Z0WVZ0TlFWQmRMbU55WldGMFpVNXZaR1UvTGloamRIZ3VjMk5vWlcxaExDQnVkV3hzTENCamRIZ3BPMXh1SUNBZ0lDQWdJQ0J0WVhBdWFYUmxiWE11Y0hWemFDaDJZV3gxWlNrN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCdFlYQTdYRzRnSUNBZ2ZWeHVJQ0FnSUdsbUlDaDJZV3gxWlNCcGJuTjBZVzVqWlc5bUlGTjBjbWx1WnlCOGZGeHVJQ0FnSUNBZ0lDQjJZV3gxWlNCcGJuTjBZVzVqWlc5bUlFNTFiV0psY2lCOGZGeHVJQ0FnSUNBZ0lDQjJZV3gxWlNCcGJuTjBZVzVqWlc5bUlFSnZiMnhsWVc0Z2ZIeGNiaUFnSUNBZ0lDQWdLSFI1Y0dWdlppQkNhV2RKYm5RZ0lUMDlJQ2QxYm1SbFptbHVaV1FuSUNZbUlIWmhiSFZsSUdsdWMzUmhibU5sYjJZZ1FtbG5TVzUwS1NBdkx5QnViM1FnYzNWd2NHOXlkR1ZrSUdWMlpYSjVkMmhsY21WY2JpQWdJQ0FwSUh0Y2JpQWdJQ0FnSUNBZ0x5OGdhSFIwY0hNNkx5OTBZek01TG1WekwyVmpiV0V5TmpJdkkzTmxZeTF6WlhKcFlXeHBlbVZxYzI5dWNISnZjR1Z5ZEhsY2JpQWdJQ0FnSUNBZ2RtRnNkV1VnUFNCMllXeDFaUzUyWVd4MVpVOW1LQ2s3WEc0Z0lDQWdmVnh1SUNBZ0lHTnZibk4wSUhzZ1lXeHBZWE5FZFhCc2FXTmhkR1ZQWW1wbFkzUnpMQ0J2YmtGdVkyaHZjaXdnYjI1VVlXZFBZbW9zSUhOamFHVnRZU3dnYzI5MWNtTmxUMkpxWldOMGN5QjlJRDBnWTNSNE8xeHVJQ0FnSUM4dklFUmxkR1ZqZENCa2RYQnNhV05oZEdVZ2NtVm1aWEpsYm1ObGN5QjBieUIwYUdVZ2MyRnRaU0J2WW1wbFkzUWdKaUIxYzJVZ1FXeHBZWE1nYm05a1pYTWdabTl5SUdGc2JGeHVJQ0FnSUM4dklHRm1kR1Z5SUdacGNuTjBMaUJVYUdVZ1lISmxabUFnZDNKaGNIQmxjaUJoYkd4dmQzTWdabTl5SUdOcGNtTjFiR0Z5SUhKbFptVnlaVzVqWlhNZ2RHOGdjbVZ6YjJ4MlpTNWNiaUFnSUNCc1pYUWdjbVZtSUQwZ2RXNWtaV1pwYm1Wa08xeHVJQ0FnSUdsbUlDaGhiR2xoYzBSMWNHeHBZMkYwWlU5aWFtVmpkSE1nSmlZZ2RtRnNkV1VnSmlZZ2RIbHdaVzltSUhaaGJIVmxJRDA5UFNBbmIySnFaV04wSnlrZ2UxeHVJQ0FnSUNBZ0lDQnlaV1lnUFNCemIzVnlZMlZQWW1wbFkzUnpMbWRsZENoMllXeDFaU2s3WEc0Z0lDQWdJQ0FnSUdsbUlDaHlaV1lwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJR2xtSUNnaGNtVm1MbUZ1WTJodmNpbGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaV1l1WVc1amFHOXlJRDBnYjI1QmJtTm9iM0lvZG1Gc2RXVXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUc1bGR5QkJiR2xoY3loeVpXWXVZVzVqYUc5eUtUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0JsYkhObElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbFppQTlJSHNnWVc1amFHOXlPaUJ1ZFd4c0xDQnViMlJsT2lCdWRXeHNJSDA3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnpiM1Z5WTJWUFltcGxZM1J6TG5ObGRDaDJZV3gxWlN3Z2NtVm1LVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ0lDQnBaaUFvZEdGblRtRnRaVDh1YzNSaGNuUnpWMmwwYUNnbklTRW5LU2xjYmlBZ0lDQWdJQ0FnZEdGblRtRnRaU0E5SUdSbFptRjFiSFJVWVdkUWNtVm1hWGdnS3lCMFlXZE9ZVzFsTG5Oc2FXTmxLRElwTzF4dUlDQWdJR3hsZENCMFlXZFBZbW9nUFNCbWFXNWtWR0ZuVDJKcVpXTjBLSFpoYkhWbExDQjBZV2RPWVcxbExDQnpZMmhsYldFdWRHRm5jeWs3WEc0Z0lDQWdhV1lnS0NGMFlXZFBZbW9wSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLSFpoYkhWbElDWW1JSFI1Y0dWdlppQjJZV3gxWlM1MGIwcFRUMDRnUFQwOUlDZG1kVzVqZEdsdmJpY3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDOHZJR1Z6YkdsdWRDMWthWE5oWW14bExXNWxlSFF0YkdsdVpTQkFkSGx3WlhOamNtbHdkQzFsYzJ4cGJuUXZibTh0ZFc1ellXWmxMV05oYkd4Y2JpQWdJQ0FnSUNBZ0lDQWdJSFpoYkhWbElEMGdkbUZzZFdVdWRHOUtVMDlPS0NrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdhV1lnS0NGMllXeDFaU0I4ZkNCMGVYQmxiMllnZG1Gc2RXVWdJVDA5SUNkdlltcGxZM1FuS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JqYjI1emRDQnViMlJsSUQwZ2JtVjNJRk5qWVd4aGNpaDJZV3gxWlNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2NtVm1LVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsWmk1dWIyUmxJRDBnYm05a1pUdGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJ1YjJSbE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJSFJoWjA5aWFpQTlYRzRnSUNBZ0lDQWdJQ0FnSUNCMllXeDFaU0JwYm5OMFlXNWpaVzltSUUxaGNGeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lEOGdjMk5vWlcxaFcwMUJVRjFjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E2SUZONWJXSnZiQzVwZEdWeVlYUnZjaUJwYmlCUFltcGxZM1FvZG1Gc2RXVXBYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUQ4Z2MyTm9aVzFoVzFORlVWMWNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnT2lCelkyaGxiV0ZiVFVGUVhUdGNiaUFnSUNCOVhHNGdJQ0FnYVdZZ0tHOXVWR0ZuVDJKcUtTQjdYRzRnSUNBZ0lDQWdJRzl1VkdGblQySnFLSFJoWjA5aWFpazdYRzRnSUNBZ0lDQWdJR1JsYkdWMFpTQmpkSGd1YjI1VVlXZFBZbW83WEc0Z0lDQWdmVnh1SUNBZ0lHTnZibk4wSUc1dlpHVWdQU0IwWVdkUFltby9MbU55WldGMFpVNXZaR1ZjYmlBZ0lDQWdJQ0FnUHlCMFlXZFBZbW91WTNKbFlYUmxUbTlrWlNoamRIZ3VjMk5vWlcxaExDQjJZV3gxWlN3Z1kzUjRLVnh1SUNBZ0lDQWdJQ0E2SUhSNWNHVnZaaUIwWVdkUFltby9MbTV2WkdWRGJHRnpjejh1Wm5KdmJTQTlQVDBnSjJaMWJtTjBhVzl1SjF4dUlDQWdJQ0FnSUNBZ0lDQWdQeUIwWVdkUFltb3VibTlrWlVOc1lYTnpMbVp5YjIwb1kzUjRMbk5qYUdWdFlTd2dkbUZzZFdVc0lHTjBlQ2xjYmlBZ0lDQWdJQ0FnSUNBZ0lEb2dibVYzSUZOallXeGhjaWgyWVd4MVpTazdYRzRnSUNBZ2FXWWdLSFJoWjA1aGJXVXBYRzRnSUNBZ0lDQWdJRzV2WkdVdWRHRm5JRDBnZEdGblRtRnRaVHRjYmlBZ0lDQmxiSE5sSUdsbUlDZ2hkR0ZuVDJKcUxtUmxabUYxYkhRcFhHNGdJQ0FnSUNBZ0lHNXZaR1V1ZEdGbklEMGdkR0ZuVDJKcUxuUmhaenRjYmlBZ0lDQnBaaUFvY21WbUtWeHVJQ0FnSUNBZ0lDQnlaV1l1Ym05a1pTQTlJRzV2WkdVN1hHNGdJQ0FnY21WMGRYSnVJRzV2WkdVN1hHNTlYRzVjYm1WNGNHOXlkQ0I3SUdOeVpXRjBaVTV2WkdVZ2ZUdGNiaUlzSUNKcGJYQnZjblFnZXlCamNtVmhkR1ZPYjJSbElIMGdabkp2YlNBbkxpNHZaRzlqTDJOeVpXRjBaVTV2WkdVdWFuTW5PMXh1YVcxd2IzSjBJSHNnYVhOT2IyUmxMQ0JwYzFCaGFYSXNJR2x6UTI5c2JHVmpkR2x2Yml3Z2FYTlRZMkZzWVhJZ2ZTQm1jbTl0SUNjdUwybGtaVzUwYVhSNUxtcHpKenRjYm1sdGNHOXlkQ0I3SUU1dlpHVkNZWE5sSUgwZ1puSnZiU0FuTGk5T2IyUmxMbXB6Snp0Y2JseHVablZ1WTNScGIyNGdZMjlzYkdWamRHbHZia1p5YjIxUVlYUm9LSE5qYUdWdFlTd2djR0YwYUN3Z2RtRnNkV1VwSUh0Y2JpQWdJQ0JzWlhRZ2RpQTlJSFpoYkhWbE8xeHVJQ0FnSUdadmNpQW9iR1YwSUdrZ1BTQndZWFJvTG14bGJtZDBhQ0F0SURFN0lHa2dQajBnTURzZ0xTMXBLU0I3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJR3NnUFNCd1lYUm9XMmxkTzF4dUlDQWdJQ0FnSUNCcFppQW9kSGx3Wlc5bUlHc2dQVDA5SUNkdWRXMWlaWEluSUNZbUlFNTFiV0psY2k1cGMwbHVkR1ZuWlhJb2F5a2dKaVlnYXlBK1BTQXdLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCaElEMGdXMTA3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmhXMnRkSUQwZ2RqdGNiaUFnSUNBZ0lDQWdJQ0FnSUhZZ1BTQmhPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2RpQTlJRzVsZHlCTllYQW9XMXRyTENCMlhWMHBPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdmVnh1SUNBZ0lISmxkSFZ5YmlCamNtVmhkR1ZPYjJSbEtIWXNJSFZ1WkdWbWFXNWxaQ3dnZTF4dUlDQWdJQ0FnSUNCaGJHbGhjMFIxY0d4cFkyRjBaVTlpYW1WamRITTZJR1poYkhObExGeHVJQ0FnSUNBZ0lDQnJaV1Z3Vlc1a1pXWnBibVZrT2lCbVlXeHpaU3hjYmlBZ0lDQWdJQ0FnYjI1QmJtTm9iM0k2SUNncElEMCtJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIUm9jbTkzSUc1bGR5QkZjbkp2Y2lnblZHaHBjeUJ6YUc5MWJHUWdibTkwSUdoaGNIQmxiaXdnY0d4bFlYTmxJSEpsY0c5eWRDQmhJR0oxWnk0bktUdGNiaUFnSUNBZ0lDQWdmU3hjYmlBZ0lDQWdJQ0FnYzJOb1pXMWhMRnh1SUNBZ0lDQWdJQ0J6YjNWeVkyVlBZbXBsWTNSek9pQnVaWGNnVFdGd0tDbGNiaUFnSUNCOUtUdGNibjFjYmk4dklGUjVjR1VnWjNWaGNtUWdhWE1nYVc1MFpXNTBhVzl1WVd4c2VTQmhJR3hwZEhSc1pTQjNjbTl1WnlCemJ5QmhjeUIwYnlCaVpTQnRiM0psSUhWelpXWjFiQ3hjYmk4dklHRnpJR2wwSUdSdlpYTWdibTkwSUdOdmRtVnlJSFZ1ZEhsd1lXSnNaU0JsYlhCMGVTQnViMjR0YzNSeWFXNW5JR2wwWlhKaFlteGxjeUFvWlM1bkxpQmJYU2t1WEc1amIyNXpkQ0JwYzBWdGNIUjVVR0YwYUNBOUlDaHdZWFJvS1NBOVBpQndZWFJvSUQwOUlHNTFiR3dnZkh4Y2JpQWdJQ0FvZEhsd1pXOW1JSEJoZEdnZ1BUMDlJQ2R2WW1wbFkzUW5JQ1ltSUNFaGNHRjBhRnRUZVcxaWIyd3VhWFJsY21GMGIzSmRLQ2t1Ym1WNGRDZ3BMbVJ2Ym1VcE8xeHVZMnhoYzNNZ1EyOXNiR1ZqZEdsdmJpQmxlSFJsYm1SeklFNXZaR1ZDWVhObElIdGNiaUFnSUNCamIyNXpkSEoxWTNSdmNpaDBlWEJsTENCelkyaGxiV0VwSUh0Y2JpQWdJQ0FnSUNBZ2MzVndaWElvZEhsd1pTazdYRzRnSUNBZ0lDQWdJRTlpYW1WamRDNWtaV1pwYm1WUWNtOXdaWEowZVNoMGFHbHpMQ0FuYzJOb1pXMWhKeXdnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdkbUZzZFdVNklITmphR1Z0WVN4Y2JpQWdJQ0FnSUNBZ0lDQWdJR052Ym1acFozVnlZV0pzWlRvZ2RISjFaU3hjYmlBZ0lDQWdJQ0FnSUNBZ0lHVnVkVzFsY21GaWJHVTZJR1poYkhObExGeHVJQ0FnSUNBZ0lDQWdJQ0FnZDNKcGRHRmliR1U2SUhSeWRXVmNiaUFnSUNBZ0lDQWdmU2s3WEc0Z0lDQWdmVnh1SUNBZ0lDOHFLbHh1SUNBZ0lDQXFJRU55WldGMFpTQmhJR052Y0hrZ2IyWWdkR2hwY3lCamIyeHNaV04wYVc5dUxseHVJQ0FnSUNBcVhHNGdJQ0FnSUNvZ1FIQmhjbUZ0SUhOamFHVnRZU0F0SUVsbUlHUmxabWx1WldRc0lHOTJaWEozY21sMFpYTWdkR2hsSUc5eWFXZHBibUZzSjNNZ2MyTm9aVzFoWEc0Z0lDQWdJQ292WEc0Z0lDQWdZMnh2Ym1Vb2MyTm9aVzFoS1NCN1hHNGdJQ0FnSUNBZ0lHTnZibk4wSUdOdmNIa2dQU0JQWW1wbFkzUXVZM0psWVhSbEtFOWlhbVZqZEM1blpYUlFjbTkwYjNSNWNHVlBaaWgwYUdsektTd2dUMkpxWldOMExtZGxkRTkzYmxCeWIzQmxjblI1UkdWelkzSnBjSFJ2Y25Nb2RHaHBjeWtwTzF4dUlDQWdJQ0FnSUNCcFppQW9jMk5vWlcxaEtWeHVJQ0FnSUNBZ0lDQWdJQ0FnWTI5d2VTNXpZMmhsYldFZ1BTQnpZMmhsYldFN1hHNGdJQ0FnSUNBZ0lHTnZjSGt1YVhSbGJYTWdQU0JqYjNCNUxtbDBaVzF6TG0xaGNDaHBkQ0E5UGlCcGMwNXZaR1VvYVhRcElIeDhJR2x6VUdGcGNpaHBkQ2tnUHlCcGRDNWpiRzl1WlNoelkyaGxiV0VwSURvZ2FYUXBPMXh1SUNBZ0lDQWdJQ0JwWmlBb2RHaHBjeTV5WVc1blpTbGNiaUFnSUNBZ0lDQWdJQ0FnSUdOdmNIa3VjbUZ1WjJVZ1BTQjBhR2x6TG5KaGJtZGxMbk5zYVdObEtDazdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQmpiM0I1TzF4dUlDQWdJSDFjYmlBZ0lDQXZLaXBjYmlBZ0lDQWdLaUJCWkdSeklHRWdkbUZzZFdVZ2RHOGdkR2hsSUdOdmJHeGxZM1JwYjI0dUlFWnZjaUJnSVNGdFlYQmdJR0Z1WkNCZ0lTRnZiV0Z3WUNCMGFHVWdkbUZzZFdVZ2JYVnpkRnh1SUNBZ0lDQXFJR0psSUdFZ1VHRnBjaUJwYm5OMFlXNWpaU0J2Y2lCaElHQjdJR3RsZVN3Z2RtRnNkV1VnZldBZ2IySnFaV04wTENCM2FHbGphQ0J0WVhrZ2JtOTBJR2hoZG1VZ1lTQnJaWGxjYmlBZ0lDQWdLaUIwYUdGMElHRnNjbVZoWkhrZ1pYaHBjM1J6SUdsdUlIUm9aU0J0WVhBdVhHNGdJQ0FnSUNvdlhHNGdJQ0FnWVdSa1NXNG9jR0YwYUN3Z2RtRnNkV1VwSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLR2x6Ulcxd2RIbFFZWFJvS0hCaGRHZ3BLVnh1SUNBZ0lDQWdJQ0FnSUNBZ2RHaHBjeTVoWkdRb2RtRnNkV1VwTzF4dUlDQWdJQ0FnSUNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHTnZibk4wSUZ0clpYa3NJQzR1TG5KbGMzUmRJRDBnY0dGMGFEdGNiaUFnSUNBZ0lDQWdJQ0FnSUdOdmJuTjBJRzV2WkdVZ1BTQjBhR2x6TG1kbGRDaHJaWGtzSUhSeWRXVXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLR2x6UTI5c2JHVmpkR2x2YmlodWIyUmxLU2xjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J1YjJSbExtRmtaRWx1S0hKbGMzUXNJSFpoYkhWbEtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUdWc2MyVWdhV1lnS0c1dlpHVWdQVDA5SUhWdVpHVm1hVzVsWkNBbUppQjBhR2x6TG5OamFHVnRZU2xjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IwYUdsekxuTmxkQ2hyWlhrc0lHTnZiR3hsWTNScGIyNUdjbTl0VUdGMGFDaDBhR2x6TG5OamFHVnRZU3dnY21WemRDd2dkbUZzZFdVcEtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUdWc2MyVmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dSWEp5YjNJb1lFVjRjR1ZqZEdWa0lGbEJUVXdnWTI5c2JHVmpkR2x2YmlCaGRDQWtlMnRsZVgwdUlGSmxiV0ZwYm1sdVp5QndZWFJvT2lBa2UzSmxjM1I5WUNrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJQ0FnTHlvcVhHNGdJQ0FnSUNvZ1VtVnRiM1psY3lCaElIWmhiSFZsSUdaeWIyMGdkR2hsSUdOdmJHeGxZM1JwYjI0dVhHNGdJQ0FnSUNvZ1FISmxkSFZ5Ym5NZ1lIUnlkV1ZnSUdsbUlIUm9aU0JwZEdWdElIZGhjeUJtYjNWdVpDQmhibVFnY21WdGIzWmxaQzVjYmlBZ0lDQWdLaTljYmlBZ0lDQmtaV3hsZEdWSmJpaHdZWFJvS1NCN1hHNGdJQ0FnSUNBZ0lHTnZibk4wSUZ0clpYa3NJQzR1TG5KbGMzUmRJRDBnY0dGMGFEdGNiaUFnSUNBZ0lDQWdhV1lnS0hKbGMzUXViR1Z1WjNSb0lEMDlQU0F3S1Z4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlIUm9hWE11WkdWc1pYUmxLR3RsZVNrN1hHNGdJQ0FnSUNBZ0lHTnZibk4wSUc1dlpHVWdQU0IwYUdsekxtZGxkQ2hyWlhrc0lIUnlkV1VwTzF4dUlDQWdJQ0FnSUNCcFppQW9hWE5EYjJ4c1pXTjBhVzl1S0c1dlpHVXBLVnh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUc1dlpHVXVaR1ZzWlhSbFNXNG9jbVZ6ZENrN1hHNGdJQ0FnSUNBZ0lHVnNjMlZjYmlBZ0lDQWdJQ0FnSUNBZ0lIUm9jbTkzSUc1bGR5QkZjbkp2Y2loZ1JYaHdaV04wWldRZ1dVRk5UQ0JqYjJ4c1pXTjBhVzl1SUdGMElDUjdhMlY1ZlM0Z1VtVnRZV2x1YVc1bklIQmhkR2c2SUNSN2NtVnpkSDFnS1R0Y2JpQWdJQ0I5WEc0Z0lDQWdMeW9xWEc0Z0lDQWdJQ29nVW1WMGRYSnVjeUJwZEdWdElHRjBJR0JyWlhsZ0xDQnZjaUJnZFc1a1pXWnBibVZrWUNCcFppQnViM1FnWm05MWJtUXVJRUo1SUdSbFptRjFiSFFnZFc1M2NtRndjMXh1SUNBZ0lDQXFJSE5qWVd4aGNpQjJZV3gxWlhNZ1puSnZiU0IwYUdWcGNpQnpkWEp5YjNWdVpHbHVaeUJ1YjJSbE95QjBieUJrYVhOaFlteGxJSE5sZENCZ2EyVmxjRk5qWVd4aGNtQWdkRzljYmlBZ0lDQWdLaUJnZEhKMVpXQWdLR052Ykd4bFkzUnBiMjV6SUdGeVpTQmhiSGRoZVhNZ2NtVjBkWEp1WldRZ2FXNTBZV04wS1M1Y2JpQWdJQ0FnS2k5Y2JpQWdJQ0JuWlhSSmJpaHdZWFJvTENCclpXVndVMk5oYkdGeUtTQjdYRzRnSUNBZ0lDQWdJR052Ym5OMElGdHJaWGtzSUM0dUxuSmxjM1JkSUQwZ2NHRjBhRHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdibTlrWlNBOUlIUm9hWE11WjJWMEtHdGxlU3dnZEhKMVpTazdYRzRnSUNBZ0lDQWdJR2xtSUNoeVpYTjBMbXhsYm1kMGFDQTlQVDBnTUNsY2JpQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQWhhMlZsY0ZOallXeGhjaUFtSmlCcGMxTmpZV3hoY2lodWIyUmxLU0EvSUc1dlpHVXVkbUZzZFdVZ09pQnViMlJsTzF4dUlDQWdJQ0FnSUNCbGJITmxYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnYVhORGIyeHNaV04wYVc5dUtHNXZaR1VwSUQ4Z2JtOWtaUzVuWlhSSmJpaHlaWE4wTENCclpXVndVMk5oYkdGeUtTQTZJSFZ1WkdWbWFXNWxaRHRjYmlBZ0lDQjlYRzRnSUNBZ2FHRnpRV3hzVG5Wc2JGWmhiSFZsY3loaGJHeHZkMU5qWVd4aGNpa2dlMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdkR2hwY3k1cGRHVnRjeTVsZG1WeWVTaHViMlJsSUQwK0lIdGNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDZ2hhWE5RWVdseUtHNXZaR1VwS1Z4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJtWVd4elpUdGNiaUFnSUNBZ0lDQWdJQ0FnSUdOdmJuTjBJRzRnUFNCdWIyUmxMblpoYkhWbE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJQ2h1SUQwOUlHNTFiR3dnZkh4Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBb1lXeHNiM2RUWTJGc1lYSWdKaVpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FYTlRZMkZzWVhJb2Jpa2dKaVpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2JpNTJZV3gxWlNBOVBTQnVkV3hzSUNZbVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0Z1TG1OdmJXMWxiblJDWldadmNtVWdKaVpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lXNHVZMjl0YldWdWRDQW1KbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBaGJpNTBZV2NwS1R0Y2JpQWdJQ0FnSUNBZ2ZTazdYRzRnSUNBZ2ZWeHVJQ0FnSUM4cUtseHVJQ0FnSUNBcUlFTm9aV05yY3lCcFppQjBhR1VnWTI5c2JHVmpkR2x2YmlCcGJtTnNkV1JsY3lCaElIWmhiSFZsSUhkcGRHZ2dkR2hsSUd0bGVTQmdhMlY1WUM1Y2JpQWdJQ0FnS2k5Y2JpQWdJQ0JvWVhOSmJpaHdZWFJvS1NCN1hHNGdJQ0FnSUNBZ0lHTnZibk4wSUZ0clpYa3NJQzR1TG5KbGMzUmRJRDBnY0dGMGFEdGNiaUFnSUNBZ0lDQWdhV1lnS0hKbGMzUXViR1Z1WjNSb0lEMDlQU0F3S1Z4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlIUm9hWE11YUdGektHdGxlU2s3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJRzV2WkdVZ1BTQjBhR2x6TG1kbGRDaHJaWGtzSUhSeWRXVXBPMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdhWE5EYjJ4c1pXTjBhVzl1S0c1dlpHVXBJRDhnYm05a1pTNW9ZWE5KYmloeVpYTjBLU0E2SUdaaGJITmxPMXh1SUNBZ0lIMWNiaUFnSUNBdktpcGNiaUFnSUNBZ0tpQlRaWFJ6SUdFZ2RtRnNkV1VnYVc0Z2RHaHBjeUJqYjJ4c1pXTjBhVzl1TGlCR2IzSWdZQ0VoYzJWMFlDd2dZSFpoYkhWbFlDQnVaV1ZrY3lCMGJ5QmlaU0JoWEc0Z0lDQWdJQ29nWW05dmJHVmhiaUIwYnlCaFpHUXZjbVZ0YjNabElIUm9aU0JwZEdWdElHWnliMjBnZEdobElITmxkQzVjYmlBZ0lDQWdLaTljYmlBZ0lDQnpaWFJKYmlod1lYUm9MQ0IyWVd4MVpTa2dlMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQmJhMlY1TENBdUxpNXlaWE4wWFNBOUlIQmhkR2c3WEc0Z0lDQWdJQ0FnSUdsbUlDaHlaWE4wTG14bGJtZDBhQ0E5UFQwZ01Da2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2RHaHBjeTV6WlhRb2EyVjVMQ0IyWVd4MVpTazdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnWld4elpTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCamIyNXpkQ0J1YjJSbElEMGdkR2hwY3k1blpYUW9hMlY1TENCMGNuVmxLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2hwYzBOdmJHeGxZM1JwYjI0b2JtOWtaU2twWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYm05a1pTNXpaWFJKYmloeVpYTjBMQ0IyWVd4MVpTazdYRzRnSUNBZ0lDQWdJQ0FnSUNCbGJITmxJR2xtSUNodWIyUmxJRDA5UFNCMWJtUmxabWx1WldRZ0ppWWdkR2hwY3k1elkyaGxiV0VwWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZEdocGN5NXpaWFFvYTJWNUxDQmpiMnhzWldOMGFXOXVSbkp2YlZCaGRHZ29kR2hwY3k1elkyaGxiV0VzSUhKbGMzUXNJSFpoYkhWbEtTazdYRzRnSUNBZ0lDQWdJQ0FnSUNCbGJITmxYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdkR2h5YjNjZ2JtVjNJRVZ5Y205eUtHQkZlSEJsWTNSbFpDQlpRVTFNSUdOdmJHeGxZM1JwYjI0Z1lYUWdKSHRyWlhsOUxpQlNaVzFoYVc1cGJtY2djR0YwYURvZ0pIdHlaWE4wZldBcE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVmVnh1WEc1bGVIQnZjblFnZXlCRGIyeHNaV04wYVc5dUxDQmpiMnhzWldOMGFXOXVSbkp2YlZCaGRHZ3NJR2x6Ulcxd2RIbFFZWFJvSUgwN1hHNGlMQ0FpTHlvcVhHNGdLaUJUZEhKcGJtZHBabWxsY3lCaElHTnZiVzFsYm5RdVhHNGdLbHh1SUNvZ1JXMXdkSGtnWTI5dGJXVnVkQ0JzYVc1bGN5QmhjbVVnYkdWbWRDQmxiWEIwZVN4Y2JpQXFJR3hwYm1WeklHTnZibk5wYzNScGJtY2diMllnWVNCemFXNW5iR1VnYzNCaFkyVWdZWEpsSUhKbGNHeGhZMlZrSUdKNUlHQWpZQ3hjYmlBcUlHRnVaQ0JoYkd3Z2IzUm9aWElnYkdsdVpYTWdZWEpsSUhCeVpXWnBlR1ZrSUhkcGRHZ2dZU0JnSTJBdVhHNGdLaTljYm1OdmJuTjBJSE4wY21sdVoybG1lVU52YlcxbGJuUWdQU0FvYzNSeUtTQTlQaUJ6ZEhJdWNtVndiR0ZqWlNndlhpZy9JU1FwS0Q4NklDUXBQeTluYlN3Z0p5TW5LVHRjYm1aMWJtTjBhVzl1SUdsdVpHVnVkRU52YlcxbGJuUW9ZMjl0YldWdWRDd2dhVzVrWlc1MEtTQjdYRzRnSUNBZ2FXWWdLQzllWEZ4dUt5UXZMblJsYzNRb1kyOXRiV1Z1ZENrcFhHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCamIyMXRaVzUwTG5OMVluTjBjbWx1WnlneEtUdGNiaUFnSUNCeVpYUjFjbTRnYVc1a1pXNTBJRDhnWTI5dGJXVnVkQzV5WlhCc1lXTmxLQzllS0Q4aElDb2tLUzluYlN3Z2FXNWtaVzUwS1NBNklHTnZiVzFsYm5RN1hHNTlYRzVqYjI1emRDQnNhVzVsUTI5dGJXVnVkQ0E5SUNoemRISXNJR2x1WkdWdWRDd2dZMjl0YldWdWRDa2dQVDRnYzNSeUxtVnVaSE5YYVhSb0tDZGNYRzRuS1Z4dUlDQWdJRDhnYVc1a1pXNTBRMjl0YldWdWRDaGpiMjF0Wlc1MExDQnBibVJsYm5RcFhHNGdJQ0FnT2lCamIyMXRaVzUwTG1sdVkyeDFaR1Z6S0NkY1hHNG5LVnh1SUNBZ0lDQWdJQ0EvSUNkY1hHNG5JQ3NnYVc1a1pXNTBRMjl0YldWdWRDaGpiMjF0Wlc1MExDQnBibVJsYm5RcFhHNGdJQ0FnSUNBZ0lEb2dLSE4wY2k1bGJtUnpWMmwwYUNnbklDY3BJRDhnSnljZ09pQW5JQ2NwSUNzZ1kyOXRiV1Z1ZER0Y2JseHVaWGh3YjNKMElIc2dhVzVrWlc1MFEyOXRiV1Z1ZEN3Z2JHbHVaVU52YlcxbGJuUXNJSE4wY21sdVoybG1lVU52YlcxbGJuUWdmVHRjYmlJc0lDSmpiMjV6ZENCR1QweEVYMFpNVDFjZ1BTQW5abXh2ZHljN1hHNWpiMjV6ZENCR1QweEVYMEpNVDBOTElEMGdKMkpzYjJOckp6dGNibU52Ym5OMElFWlBURVJmVVZWUFZFVkVJRDBnSjNGMWIzUmxaQ2M3WEc0dktpcGNiaUFxSUZSeWFXVnpJSFJ2SUd0bFpYQWdhVzV3ZFhRZ1lYUWdkWEFnZEc4Z1lHeHBibVZYYVdSMGFHQWdZMmhoY21GamRHVnljeXdnYzNCc2FYUjBhVzVuSUc5dWJIa2diMjRnYzNCaFkyVnpYRzRnS2lCdWIzUWdabTlzYkc5M1pXUWdZbmtnYm1WM2JHbHVaWE1nYjNJZ2MzQmhZMlZ6SUhWdWJHVnpjeUJnYlc5a1pXQWdhWE1nWUNkeGRXOTBaV1FuWUM0Z1RHbHVaWE1nWVhKbFhHNGdLaUIwWlhKdGFXNWhkR1ZrSUhkcGRHZ2dZRnhjYm1BZ1lXNWtJSE4wWVhKMFpXUWdkMmwwYUNCZ2FXNWtaVzUwWUM1Y2JpQXFMMXh1Wm5WdVkzUnBiMjRnWm05c1pFWnNiM2RNYVc1bGN5aDBaWGgwTENCcGJtUmxiblFzSUcxdlpHVWdQU0FuWm14dmR5Y3NJSHNnYVc1a1pXNTBRWFJUZEdGeWRDd2diR2x1WlZkcFpIUm9JRDBnT0RBc0lHMXBia052Ym5SbGJuUlhhV1IwYUNBOUlESXdMQ0J2YmtadmJHUXNJRzl1VDNabGNtWnNiM2NnZlNBOUlIdDlLU0I3WEc0Z0lDQWdhV1lnS0NGc2FXNWxWMmxrZEdnZ2ZId2diR2x1WlZkcFpIUm9JRHdnTUNsY2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUhSbGVIUTdYRzRnSUNBZ2FXWWdLR3hwYm1WWGFXUjBhQ0E4SUcxcGJrTnZiblJsYm5SWGFXUjBhQ2xjYmlBZ0lDQWdJQ0FnYldsdVEyOXVkR1Z1ZEZkcFpIUm9JRDBnTUR0Y2JpQWdJQ0JqYjI1emRDQmxibVJUZEdWd0lEMGdUV0YwYUM1dFlYZ29NU0FySUcxcGJrTnZiblJsYm5SWGFXUjBhQ3dnTVNBcklHeHBibVZYYVdSMGFDQXRJR2x1WkdWdWRDNXNaVzVuZEdncE8xeHVJQ0FnSUdsbUlDaDBaWGgwTG14bGJtZDBhQ0E4UFNCbGJtUlRkR1Z3S1Z4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnZEdWNGREdGNiaUFnSUNCamIyNXpkQ0JtYjJ4a2N5QTlJRnRkTzF4dUlDQWdJR052Ym5OMElHVnpZMkZ3WldSR2IyeGtjeUE5SUh0OU8xeHVJQ0FnSUd4bGRDQmxibVFnUFNCc2FXNWxWMmxrZEdnZ0xTQnBibVJsYm5RdWJHVnVaM1JvTzF4dUlDQWdJR2xtSUNoMGVYQmxiMllnYVc1a1pXNTBRWFJUZEdGeWRDQTlQVDBnSjI1MWJXSmxjaWNwSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLR2x1WkdWdWRFRjBVM1JoY25RZ1BpQnNhVzVsVjJsa2RHZ2dMU0JOWVhSb0xtMWhlQ2d5TENCdGFXNURiMjUwWlc1MFYybGtkR2dwS1Z4dUlDQWdJQ0FnSUNBZ0lDQWdabTlzWkhNdWNIVnphQ2d3S1R0Y2JpQWdJQ0FnSUNBZ1pXeHpaVnh1SUNBZ0lDQWdJQ0FnSUNBZ1pXNWtJRDBnYkdsdVpWZHBaSFJvSUMwZ2FXNWtaVzUwUVhSVGRHRnlkRHRjYmlBZ0lDQjlYRzRnSUNBZ2JHVjBJSE53YkdsMElEMGdkVzVrWldacGJtVmtPMXh1SUNBZ0lHeGxkQ0J3Y21WMklEMGdkVzVrWldacGJtVmtPMXh1SUNBZ0lHeGxkQ0J2ZG1WeVpteHZkeUE5SUdaaGJITmxPMXh1SUNBZ0lHeGxkQ0JwSUQwZ0xURTdYRzRnSUNBZ2JHVjBJR1Z6WTFOMFlYSjBJRDBnTFRFN1hHNGdJQ0FnYkdWMElHVnpZMFZ1WkNBOUlDMHhPMXh1SUNBZ0lHbG1JQ2h0YjJSbElEMDlQU0JHVDB4RVgwSk1UME5MS1NCN1hHNGdJQ0FnSUNBZ0lHa2dQU0JqYjI1emRXMWxUVzl5WlVsdVpHVnVkR1ZrVEdsdVpYTW9kR1Y0ZEN3Z2FTd2dhVzVrWlc1MExteGxibWQwYUNrN1hHNGdJQ0FnSUNBZ0lHbG1JQ2hwSUNFOVBTQXRNU2xjYmlBZ0lDQWdJQ0FnSUNBZ0lHVnVaQ0E5SUdrZ0t5QmxibVJUZEdWd08xeHVJQ0FnSUgxY2JpQWdJQ0JtYjNJZ0tHeGxkQ0JqYURzZ0tHTm9JRDBnZEdWNGRGc29hU0FyUFNBeEtWMHBPeWtnZTF4dUlDQWdJQ0FnSUNCcFppQW9iVzlrWlNBOVBUMGdSazlNUkY5UlZVOVVSVVFnSmlZZ1kyZ2dQVDA5SUNkY1hGeGNKeWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdaWE5qVTNSaGNuUWdQU0JwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdjM2RwZEdOb0lDaDBaWGgwVzJrZ0t5QXhYU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdOaGMyVWdKM2duT2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBJQ3M5SURNN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR0p5WldGck8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHTmhjMlVnSjNVbk9seHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwSUNzOUlEVTdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdKeVpXRnJPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR05oYzJVZ0oxVW5PbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcElDczlJRGs3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHSnlaV0ZyTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdSbFptRjFiSFE2WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHa2dLejBnTVR0Y2JpQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNBZ0lHVnpZMFZ1WkNBOUlHazdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnYVdZZ0tHTm9JRDA5UFNBblhGeHVKeWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lnS0cxdlpHVWdQVDA5SUVaUFRFUmZRa3hQUTBzcFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FTQTlJR052Ym5OMWJXVk5iM0psU1c1a1pXNTBaV1JNYVc1bGN5aDBaWGgwTENCcExDQnBibVJsYm5RdWJHVnVaM1JvS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJR1Z1WkNBOUlHa2dLeUJwYm1SbGJuUXViR1Z1WjNSb0lDc2daVzVrVTNSbGNEdGNiaUFnSUNBZ0lDQWdJQ0FnSUhOd2JHbDBJRDBnZFc1a1pXWnBibVZrTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lHVnNjMlVnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lnS0dOb0lEMDlQU0FuSUNjZ0ppWmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQndjbVYySUNZbVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NISmxkaUFoUFQwZ0p5QW5JQ1ltWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY0hKbGRpQWhQVDBnSjF4Y2JpY2dKaVpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J3Y21WMklDRTlQU0FuWEZ4MEp5a2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQzh2SUhOd1lXTmxJSE4xY25KdmRXNWtaV1FnWW5rZ2JtOXVMWE53WVdObElHTmhiaUJpWlNCeVpYQnNZV05sWkNCM2FYUm9JRzVsZDJ4cGJtVWdLeUJwYm1SbGJuUmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCdVpYaDBJRDBnZEdWNGRGdHBJQ3NnTVYwN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLRzVsZUhRZ0ppWWdibVY0ZENBaFBUMGdKeUFuSUNZbUlHNWxlSFFnSVQwOUlDZGNYRzRuSUNZbUlHNWxlSFFnSVQwOUlDZGNYSFFuS1Z4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnpjR3hwZENBOUlHazdYRzRnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2FTQStQU0JsYm1RcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBaaUFvYzNCc2FYUXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1ptOXNaSE11Y0hWemFDaHpjR3hwZENrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR1Z1WkNBOUlITndiR2wwSUNzZ1pXNWtVM1JsY0R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjM0JzYVhRZ1BTQjFibVJsWm1sdVpXUTdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR1ZzYzJVZ2FXWWdLRzF2WkdVZ1BUMDlJRVpQVEVSZlVWVlBWRVZFS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQzh2SUhkb2FYUmxMWE53WVdObElHTnZiR3hsWTNSbFpDQmhkQ0JsYm1RZ2JXRjVJSE4wY21WMFkyZ2djR0Z6ZENCc2FXNWxWMmxrZEdoY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdkMmhwYkdVZ0tIQnlaWFlnUFQwOUlDY2dKeUI4ZkNCd2NtVjJJRDA5UFNBblhGeDBKeWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY0hKbGRpQTlJR05vTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWTJnZ1BTQjBaWGgwV3locElDczlJREVwWFR0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUc5MlpYSm1iRzkzSUQwZ2RISjFaVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0F2THlCQlkyTnZkVzUwSUdadmNpQnVaWGRzYVc1bElHVnpZMkZ3WlN3Z1luVjBJR1J2YmlkMElHSnlaV0ZySUhCeVpXTmxaR2x1WnlCbGMyTmhjR1ZjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1kyOXVjM1FnYWlBOUlHa2dQaUJsYzJORmJtUWdLeUF4SUQ4Z2FTQXRJRElnT2lCbGMyTlRkR0Z5ZENBdElERTdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUM4dklFSmhhV3dnYjNWMElHbG1JR3hwYm1WWGFXUjBhQ0FtSUcxcGJrTnZiblJsYm5SWGFXUjBhQ0JoY21VZ2MyaHZjblJsY2lCMGFHRnVJR0Z1SUdWelkyRndaU0J6ZEhKcGJtZGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tHVnpZMkZ3WldSR2IyeGtjMXRxWFNsY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUIwWlhoME8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JtYjJ4a2N5NXdkWE5vS0dvcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JsYzJOaGNHVmtSbTlzWkhOYmFsMGdQU0IwY25WbE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JsYm1RZ1BTQnFJQ3NnWlc1a1UzUmxjRHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2MzQnNhWFFnUFNCMWJtUmxabWx1WldRN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHVnNjMlVnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnZkbVZ5Wm14dmR5QTlJSFJ5ZFdVN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lIQnlaWFlnUFNCamFEdGNiaUFnSUNCOVhHNGdJQ0FnYVdZZ0tHOTJaWEptYkc5M0lDWW1JRzl1VDNabGNtWnNiM2NwWEc0Z0lDQWdJQ0FnSUc5dVQzWmxjbVpzYjNjb0tUdGNiaUFnSUNCcFppQW9abTlzWkhNdWJHVnVaM1JvSUQwOVBTQXdLVnh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdkR1Y0ZER0Y2JpQWdJQ0JwWmlBb2IyNUdiMnhrS1Z4dUlDQWdJQ0FnSUNCdmJrWnZiR1FvS1R0Y2JpQWdJQ0JzWlhRZ2NtVnpJRDBnZEdWNGRDNXpiR2xqWlNnd0xDQm1iMnhrYzFzd1hTazdYRzRnSUNBZ1ptOXlJQ2hzWlhRZ2FTQTlJREE3SUdrZ1BDQm1iMnhrY3k1c1pXNW5kR2c3SUNzcmFTa2dlMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQm1iMnhrSUQwZ1ptOXNaSE5iYVYwN1hHNGdJQ0FnSUNBZ0lHTnZibk4wSUdWdVpDQTlJR1p2YkdSelcya2dLeUF4WFNCOGZDQjBaWGgwTG14bGJtZDBhRHRjYmlBZ0lDQWdJQ0FnYVdZZ0tHWnZiR1FnUFQwOUlEQXBYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYTWdQU0JnWEZ4dUpIdHBibVJsYm5SOUpIdDBaWGgwTG5Oc2FXTmxLREFzSUdWdVpDbDlZRHRjYmlBZ0lDQWdJQ0FnWld4elpTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCcFppQW9iVzlrWlNBOVBUMGdSazlNUkY5UlZVOVVSVVFnSmlZZ1pYTmpZWEJsWkVadmJHUnpXMlp2YkdSZEtWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxjeUFyUFNCZ0pIdDBaWGgwVzJadmJHUmRmVnhjWEZ4Z08xeHVJQ0FnSUNBZ0lDQWdJQ0FnY21WeklDczlJR0JjWEc0a2UybHVaR1Z1ZEgwa2UzUmxlSFF1YzJ4cFkyVW9abTlzWkNBcklERXNJR1Z1WkNsOVlEdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lIMWNiaUFnSUNCeVpYUjFjbTRnY21Wek8xeHVmVnh1THlvcVhHNGdLaUJRY21WemRXMWxjeUJnYVNBcklERmdJR2x6SUdGMElIUm9aU0J6ZEdGeWRDQnZaaUJoSUd4cGJtVmNiaUFxSUVCeVpYUjFjbTV6SUdsdVpHVjRJRzltSUd4aGMzUWdibVYzYkdsdVpTQnBiaUJ0YjNKbExXbHVaR1Z1ZEdWa0lHSnNiMk5yWEc0Z0tpOWNibVoxYm1OMGFXOXVJR052Ym5OMWJXVk5iM0psU1c1a1pXNTBaV1JNYVc1bGN5aDBaWGgwTENCcExDQnBibVJsYm5RcElIdGNiaUFnSUNCc1pYUWdaVzVrSUQwZ2FUdGNiaUFnSUNCc1pYUWdjM1JoY25RZ1BTQnBJQ3NnTVR0Y2JpQWdJQ0JzWlhRZ1kyZ2dQU0IwWlhoMFczTjBZWEowWFR0Y2JpQWdJQ0IzYUdsc1pTQW9ZMmdnUFQwOUlDY2dKeUI4ZkNCamFDQTlQVDBnSjF4Y2RDY3BJSHRjYmlBZ0lDQWdJQ0FnYVdZZ0tHa2dQQ0J6ZEdGeWRDQXJJR2x1WkdWdWRDa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ1kyZ2dQU0IwWlhoMFd5c3JhVjA3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmtieUI3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWTJnZ1BTQjBaWGgwV3lzcmFWMDdYRzRnSUNBZ0lDQWdJQ0FnSUNCOUlIZG9hV3hsSUNoamFDQW1KaUJqYUNBaFBUMGdKMXhjYmljcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnWlc1a0lEMGdhVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lITjBZWEowSUQwZ2FTQXJJREU3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmphQ0E5SUhSbGVIUmJjM1JoY25SZE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUJsYm1RN1hHNTlYRzVjYm1WNGNHOXlkQ0I3SUVaUFRFUmZRa3hQUTBzc0lFWlBURVJmUmt4UFZ5d2dSazlNUkY5UlZVOVVSVVFzSUdadmJHUkdiRzkzVEdsdVpYTWdmVHRjYmlJc0lDSnBiWEJ2Y25RZ2V5QlRZMkZzWVhJZ2ZTQm1jbTl0SUNjdUxpOXViMlJsY3k5VFkyRnNZWEl1YW5Nbk8xeHVhVzF3YjNKMElIc2dabTlzWkVac2IzZE1hVzVsY3l3Z1JrOU1SRjlSVlU5VVJVUXNJRVpQVEVSZlJreFBWeXdnUms5TVJGOUNURTlEU3lCOUlHWnliMjBnSnk0dlptOXNaRVpzYjNkTWFXNWxjeTVxY3ljN1hHNWNibU52Ym5OMElHZGxkRVp2YkdSUGNIUnBiMjV6SUQwZ0tHTjBlQ3dnYVhOQ2JHOWpheWtnUFQ0Z0tIdGNiaUFnSUNCcGJtUmxiblJCZEZOMFlYSjBPaUJwYzBKc2IyTnJJRDhnWTNSNExtbHVaR1Z1ZEM1c1pXNW5kR2dnT2lCamRIZ3VhVzVrWlc1MFFYUlRkR0Z5ZEN4Y2JpQWdJQ0JzYVc1bFYybGtkR2c2SUdOMGVDNXZjSFJwYjI1ekxteHBibVZYYVdSMGFDeGNiaUFnSUNCdGFXNURiMjUwWlc1MFYybGtkR2c2SUdOMGVDNXZjSFJwYjI1ekxtMXBia052Ym5SbGJuUlhhV1IwYUZ4dWZTazdYRzR2THlCQmJITnZJR05vWldOcmN5Qm1iM0lnYkdsdVpYTWdjM1JoY25ScGJtY2dkMmwwYUNBbExDQmhjeUJ3WVhKemFXNW5JSFJvWlNCdmRYUndkWFFnWVhNZ1dVRk5UQ0F4TGpFZ2QybHNiRnh1THk4Z2NISmxjM1Z0WlNCMGFHRjBKM01nYzNSaGNuUnBibWNnWVNCdVpYY2daRzlqZFcxbGJuUXVYRzVqYjI1emRDQmpiMjUwWVdsdWMwUnZZM1Z0Wlc1MFRXRnlhMlZ5SUQwZ0tITjBjaWtnUFQ0Z0wxNG9KWHd0TFMxOFhGd3VYRnd1WEZ3dUtTOXRMblJsYzNRb2MzUnlLVHRjYm1aMWJtTjBhVzl1SUd4cGJtVk1aVzVuZEdoUGRtVnlUR2x0YVhRb2MzUnlMQ0JzYVc1bFYybGtkR2dzSUdsdVpHVnVkRXhsYm1kMGFDa2dlMXh1SUNBZ0lHbG1JQ2doYkdsdVpWZHBaSFJvSUh4OElHeHBibVZYYVdSMGFDQThJREFwWEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJtWVd4elpUdGNiaUFnSUNCamIyNXpkQ0JzYVcxcGRDQTlJR3hwYm1WWGFXUjBhQ0F0SUdsdVpHVnVkRXhsYm1kMGFEdGNiaUFnSUNCamIyNXpkQ0J6ZEhKTVpXNGdQU0J6ZEhJdWJHVnVaM1JvTzF4dUlDQWdJR2xtSUNoemRISk1aVzRnUEQwZ2JHbHRhWFFwWEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJtWVd4elpUdGNiaUFnSUNCbWIzSWdLR3hsZENCcElEMGdNQ3dnYzNSaGNuUWdQU0F3T3lCcElEd2djM1J5VEdWdU95QXJLMmtwSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLSE4wY2x0cFhTQTlQVDBnSjF4Y2JpY3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2hwSUMwZ2MzUmhjblFnUGlCc2FXMXBkQ2xjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdkSEoxWlR0Y2JpQWdJQ0FnSUNBZ0lDQWdJSE4wWVhKMElEMGdhU0FySURFN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2MzUnlUR1Z1SUMwZ2MzUmhjblFnUEQwZ2JHbHRhWFFwWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJR1poYkhObE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUIwY25WbE8xeHVmVnh1Wm5WdVkzUnBiMjRnWkc5MVlteGxVWFZ2ZEdWa1UzUnlhVzVuS0haaGJIVmxMQ0JqZEhncElIdGNiaUFnSUNCamIyNXpkQ0JxYzI5dUlEMGdTbE5QVGk1emRISnBibWRwWm5rb2RtRnNkV1VwTzF4dUlDQWdJR2xtSUNoamRIZ3ViM0IwYVc5dWN5NWtiM1ZpYkdWUmRXOTBaV1JCYzBwVFQwNHBYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQnFjMjl1TzF4dUlDQWdJR052Ym5OMElIc2dhVzF3YkdsamFYUkxaWGtnZlNBOUlHTjBlRHRjYmlBZ0lDQmpiMjV6ZENCdGFXNU5kV3gwYVV4cGJtVk1aVzVuZEdnZ1BTQmpkSGd1YjNCMGFXOXVjeTVrYjNWaWJHVlJkVzkwWldSTmFXNU5kV3gwYVV4cGJtVk1aVzVuZEdnN1hHNGdJQ0FnWTI5dWMzUWdhVzVrWlc1MElEMGdZM1I0TG1sdVpHVnVkQ0I4ZkNBb1kyOXVkR0ZwYm5ORWIyTjFiV1Z1ZEUxaGNtdGxjaWgyWVd4MVpTa2dQeUFuSUNBbklEb2dKeWNwTzF4dUlDQWdJR3hsZENCemRISWdQU0FuSnp0Y2JpQWdJQ0JzWlhRZ2MzUmhjblFnUFNBd08xeHVJQ0FnSUdadmNpQW9iR1YwSUdrZ1BTQXdMQ0JqYUNBOUlHcHpiMjViYVYwN0lHTm9PeUJqYUNBOUlHcHpiMjViS3l0cFhTa2dlMXh1SUNBZ0lDQWdJQ0JwWmlBb1kyZ2dQVDA5SUNjZ0p5QW1KaUJxYzI5dVcya2dLeUF4WFNBOVBUMGdKMXhjWEZ3bklDWW1JR3B6YjI1YmFTQXJJREpkSUQwOVBTQW5iaWNwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQzh2SUhOd1lXTmxJR0psWm05eVpTQnVaWGRzYVc1bElHNWxaV1J6SUhSdklHSmxJR1Z6WTJGd1pXUWdkRzhnYm05MElHSmxJR1p2YkdSbFpGeHVJQ0FnSUNBZ0lDQWdJQ0FnYzNSeUlDczlJR3B6YjI0dWMyeHBZMlVvYzNSaGNuUXNJR2twSUNzZ0oxeGNYRndnSnp0Y2JpQWdJQ0FnSUNBZ0lDQWdJR2tnS3owZ01UdGNiaUFnSUNBZ0lDQWdJQ0FnSUhOMFlYSjBJRDBnYVR0Y2JpQWdJQ0FnSUNBZ0lDQWdJR05vSUQwZ0oxeGNYRnduTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lHbG1JQ2hqYUNBOVBUMGdKMXhjWEZ3bktWeHVJQ0FnSUNBZ0lDQWdJQ0FnYzNkcGRHTm9JQ2hxYzI5dVcya2dLeUF4WFNrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHTmhjMlVnSjNVbk9seHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J6ZEhJZ0t6MGdhbk52Ymk1emJHbGpaU2h6ZEdGeWRDd2dhU2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JqYjI1emRDQmpiMlJsSUQwZ2FuTnZiaTV6ZFdKemRISW9hU0FySURJc0lEUXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjM2RwZEdOb0lDaGpiMlJsS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZMkZ6WlNBbk1EQXdNQ2M2WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSE4wY2lBclBTQW5YRnhjWERBbk8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCallYTmxJQ2N3TURBM0p6cGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2MzUnlJQ3M5SUNkY1hGeGNZU2M3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR0p5WldGck8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR05oYzJVZ0p6QXdNR0luT2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J6ZEhJZ0t6MGdKMXhjWEZ4Mkp6dGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1luSmxZV3M3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1kyRnpaU0FuTURBeFlpYzZYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lITjBjaUFyUFNBblhGeGNYR1VuTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JpY21WaGF6dGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JqWVhObElDY3dNRGcxSnpwY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYzNSeUlDczlJQ2RjWEZ4Y1RpYzdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHSnlaV0ZyTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHTmhjMlVnSnpBd1lUQW5PbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnpkSElnS3owZ0oxeGNYRnhmSnp0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWW5KbFlXczdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWTJGelpTQW5NakF5T0NjNlhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhOMGNpQXJQU0FuWEZ4Y1hFd25PMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmljbVZoYXp0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmpZWE5sSUNjeU1ESTVKenBjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjM1J5SUNzOUlDZGNYRnhjVUNjN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdKeVpXRnJPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdSbFptRjFiSFE2WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNoamIyUmxMbk4xWW5OMGNpZ3dMQ0F5S1NBOVBUMGdKekF3SnlsY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lITjBjaUFyUFNBblhGeGNYSGduSUNzZ1kyOWtaUzV6ZFdKemRISW9NaWs3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR1ZzYzJWY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lITjBjaUFyUFNCcWMyOXVMbk4xWW5OMGNpaHBMQ0EyS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdrZ0t6MGdOVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSE4wWVhKMElEMGdhU0FySURFN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1luSmxZV3M3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWTJGelpTQW5iaWM2WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2hwYlhCc2FXTnBkRXRsZVNCOGZGeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FuTnZibHRwSUNzZ01sMGdQVDA5SUNkY0lpY2dmSHhjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR3B6YjI0dWJHVnVaM1JvSUR3Z2JXbHVUWFZzZEdsTWFXNWxUR1Z1WjNSb0tTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBJQ3M5SURFN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0F2THlCbWIyeGthVzVuSUhkcGJHd2daV0YwSUdacGNuTjBJRzVsZDJ4cGJtVmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lITjBjaUFyUFNCcWMyOXVMbk5zYVdObEtITjBZWEowTENCcEtTQXJJQ2RjWEc1Y1hHNG5PMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdkMmhwYkdVZ0tHcHpiMjViYVNBcklESmRJRDA5UFNBblhGeGNYQ2NnSmlaY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnFjMjl1VzJrZ0t5QXpYU0E5UFQwZ0oyNG5JQ1ltWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FuTnZibHRwSUNzZ05GMGdJVDA5SUNkY0lpY3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCemRISWdLejBnSjF4Y2JpYzdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVNBclBTQXlPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjM1J5SUNzOUlHbHVaR1Z1ZER0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUM4dklITndZV05sSUdGbWRHVnlJRzVsZDJ4cGJtVWdibVZsWkhNZ2RHOGdZbVVnWlhOallYQmxaQ0IwYnlCdWIzUWdZbVVnWm05c1pHVmtYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBaaUFvYW5OdmJsdHBJQ3NnTWwwZ1BUMDlJQ2NnSnlsY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnpkSElnS3owZ0oxeGNYRnduTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVNBclBTQXhPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjM1JoY25RZ1BTQnBJQ3NnTVR0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JrWldaaGRXeDBPbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcElDczlJREU3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVJQ0FnSUhOMGNpQTlJSE4wWVhKMElEOGdjM1J5SUNzZ2FuTnZiaTV6YkdsalpTaHpkR0Z5ZENrZ09pQnFjMjl1TzF4dUlDQWdJSEpsZEhWeWJpQnBiWEJzYVdOcGRFdGxlVnh1SUNBZ0lDQWdJQ0EvSUhOMGNseHVJQ0FnSUNBZ0lDQTZJR1p2YkdSR2JHOTNUR2x1WlhNb2MzUnlMQ0JwYm1SbGJuUXNJRVpQVEVSZlVWVlBWRVZFTENCblpYUkdiMnhrVDNCMGFXOXVjeWhqZEhnc0lHWmhiSE5sS1NrN1hHNTlYRzVtZFc1amRHbHZiaUJ6YVc1bmJHVlJkVzkwWldSVGRISnBibWNvZG1Gc2RXVXNJR04wZUNrZ2UxeHVJQ0FnSUdsbUlDaGpkSGd1YjNCMGFXOXVjeTV6YVc1bmJHVlJkVzkwWlNBOVBUMGdabUZzYzJVZ2ZIeGNiaUFnSUNBZ0lDQWdLR04wZUM1cGJYQnNhV05wZEV0bGVTQW1KaUIyWVd4MVpTNXBibU5zZFdSbGN5Z25YRnh1SnlrcElIeDhYRzRnSUNBZ0lDQWdJQzliSUZ4Y2RGMWNYRzU4WEZ4dVd5QmNYSFJkTHk1MFpYTjBLSFpoYkhWbEtTQXZMeUJ6YVc1bmJHVWdjWFZ2ZEdWa0lITjBjbWx1WnlCallXNG5kQ0JvWVhabElHeGxZV1JwYm1jZ2IzSWdkSEpoYVd4cGJtY2dkMmhwZEdWemNHRmpaU0JoY205MWJtUWdibVYzYkdsdVpWeHVJQ0FnSUNsY2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUdSdmRXSnNaVkYxYjNSbFpGTjBjbWx1WnloMllXeDFaU3dnWTNSNEtUdGNiaUFnSUNCamIyNXpkQ0JwYm1SbGJuUWdQU0JqZEhndWFXNWtaVzUwSUh4OElDaGpiMjUwWVdsdWMwUnZZM1Z0Wlc1MFRXRnlhMlZ5S0haaGJIVmxLU0EvSUNjZ0lDY2dPaUFuSnlrN1hHNGdJQ0FnWTI5dWMzUWdjbVZ6SUQwZ1hDSW5YQ0lnS3lCMllXeDFaUzV5WlhCc1lXTmxLQzhuTDJjc0lGd2lKeWRjSWlrdWNtVndiR0ZqWlNndlhGeHVLeTluTENCZ0pDWmNYRzRrZTJsdVpHVnVkSDFnS1NBcklGd2lKMXdpTzF4dUlDQWdJSEpsZEhWeWJpQmpkSGd1YVcxd2JHbGphWFJMWlhsY2JpQWdJQ0FnSUNBZ1B5QnlaWE5jYmlBZ0lDQWdJQ0FnT2lCbWIyeGtSbXh2ZDB4cGJtVnpLSEpsY3l3Z2FXNWtaVzUwTENCR1QweEVYMFpNVDFjc0lHZGxkRVp2YkdSUGNIUnBiMjV6S0dOMGVDd2dabUZzYzJVcEtUdGNibjFjYm1aMWJtTjBhVzl1SUhGMWIzUmxaRk4wY21sdVp5aDJZV3gxWlN3Z1kzUjRLU0I3WEc0Z0lDQWdZMjl1YzNRZ2V5QnphVzVuYkdWUmRXOTBaU0I5SUQwZ1kzUjRMbTl3ZEdsdmJuTTdYRzRnSUNBZ2JHVjBJSEZ6TzF4dUlDQWdJR2xtSUNoemFXNW5iR1ZSZFc5MFpTQTlQVDBnWm1Gc2MyVXBYRzRnSUNBZ0lDQWdJSEZ6SUQwZ1pHOTFZbXhsVVhWdmRHVmtVM1J5YVc1bk8xeHVJQ0FnSUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQm9ZWE5FYjNWaWJHVWdQU0IyWVd4MVpTNXBibU5zZFdSbGN5Z25YQ0luS1R0Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnYUdGelUybHVaMnhsSUQwZ2RtRnNkV1V1YVc1amJIVmtaWE1vWENJblhDSXBPMXh1SUNBZ0lDQWdJQ0JwWmlBb2FHRnpSRzkxWW14bElDWW1JQ0ZvWVhOVGFXNW5iR1VwWEc0Z0lDQWdJQ0FnSUNBZ0lDQnhjeUE5SUhOcGJtZHNaVkYxYjNSbFpGTjBjbWx1Wnp0Y2JpQWdJQ0FnSUNBZ1pXeHpaU0JwWmlBb2FHRnpVMmx1WjJ4bElDWW1JQ0ZvWVhORWIzVmliR1VwWEc0Z0lDQWdJQ0FnSUNBZ0lDQnhjeUE5SUdSdmRXSnNaVkYxYjNSbFpGTjBjbWx1Wnp0Y2JpQWdJQ0FnSUNBZ1pXeHpaVnh1SUNBZ0lDQWdJQ0FnSUNBZ2NYTWdQU0J6YVc1bmJHVlJkVzkwWlNBL0lITnBibWRzWlZGMWIzUmxaRk4wY21sdVp5QTZJR1J2ZFdKc1pWRjFiM1JsWkZOMGNtbHVaenRjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUhGektIWmhiSFZsTENCamRIZ3BPMXh1ZlZ4dUx5OGdWR2hsSUc1bFoyRjBhWFpsSUd4dmIydGlaV2hwYm1RZ1lYWnZhV1J6SUdFZ2NHOXNlVzV2YldsaGJDQnpaV0Z5WTJnc1hHNHZMeUJpZFhRZ2FYTnVKM1FnYzNWd2NHOXlkR1ZrSUhsbGRDQnZiaUJUWVdaaGNtazZJR2gwZEhCek9pOHZZMkZ1YVhWelpTNWpiMjB2YW5NdGNtVm5aWGh3TFd4dmIydGlaV2hwYm1SY2JteGxkQ0JpYkc5amEwVnVaRTVsZDJ4cGJtVnpPMXh1ZEhKNUlIdGNiaUFnSUNCaWJHOWphMFZ1WkU1bGQyeHBibVZ6SUQwZ2JtVjNJRkpsWjBWNGNDZ25LRjU4S0Q4OElWeGNiaWtwWEZ4dUt5Zy9JVnhjYm53a0tTY3NJQ2RuSnlrN1hHNTlYRzVqWVhSamFDQjdYRzRnSUNBZ1lteHZZMnRGYm1ST1pYZHNhVzVsY3lBOUlDOWNYRzRyS0Q4aFhGeHVmQ1FwTDJjN1hHNTlYRzVtZFc1amRHbHZiaUJpYkc5amExTjBjbWx1WnloN0lHTnZiVzFsYm5Rc0lIUjVjR1VzSUhaaGJIVmxJSDBzSUdOMGVDd2diMjVEYjIxdFpXNTBMQ0J2YmtOb2IyMXdTMlZsY0NrZ2UxeHVJQ0FnSUdOdmJuTjBJSHNnWW14dlkydFJkVzkwWlN3Z1kyOXRiV1Z1ZEZOMGNtbHVaeXdnYkdsdVpWZHBaSFJvSUgwZ1BTQmpkSGd1YjNCMGFXOXVjenRjYmlBZ0lDQXZMeUF4TGlCQ2JHOWpheUJqWVc0bmRDQmxibVFnYVc0Z2QyaHBkR1Z6Y0dGalpTQjFibXhsYzNNZ2RHaGxJR3hoYzNRZ2JHbHVaU0JwY3lCdWIyNHRaVzF3ZEhrdVhHNGdJQ0FnTHk4Z01pNGdVM1J5YVc1bmN5QmpiMjV6YVhOMGFXNW5JRzltSUc5dWJIa2dkMmhwZEdWemNHRmpaU0JoY21VZ1ltVnpkQ0J5Wlc1a1pYSmxaQ0JsZUhCc2FXTnBkR3g1TGx4dUlDQWdJR2xtSUNnaFlteHZZMnRSZFc5MFpTQjhmQ0F2WEZ4dVcxeGNkQ0JkS3lRdkxuUmxjM1FvZG1Gc2RXVXBJSHg4SUM5ZVhGeHpLaVF2TG5SbGMzUW9kbUZzZFdVcEtTQjdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQnhkVzkwWldSVGRISnBibWNvZG1Gc2RXVXNJR04wZUNrN1hHNGdJQ0FnZlZ4dUlDQWdJR052Ym5OMElHbHVaR1Z1ZENBOUlHTjBlQzVwYm1SbGJuUWdmSHhjYmlBZ0lDQWdJQ0FnS0dOMGVDNW1iM0pqWlVKc2IyTnJTVzVrWlc1MElIeDhJR052Ym5SaGFXNXpSRzlqZFcxbGJuUk5ZWEpyWlhJb2RtRnNkV1VwSUQ4Z0p5QWdKeUE2SUNjbktUdGNiaUFnSUNCamIyNXpkQ0JzYVhSbGNtRnNJRDBnWW14dlkydFJkVzkwWlNBOVBUMGdKMnhwZEdWeVlXd25YRzRnSUNBZ0lDQWdJRDhnZEhKMVpWeHVJQ0FnSUNBZ0lDQTZJR0pzYjJOclVYVnZkR1VnUFQwOUlDZG1iMnhrWldRbklIeDhJSFI1Y0dVZ1BUMDlJRk5qWVd4aGNpNUNURTlEUzE5R1QweEVSVVJjYmlBZ0lDQWdJQ0FnSUNBZ0lEOGdabUZzYzJWY2JpQWdJQ0FnSUNBZ0lDQWdJRG9nZEhsd1pTQTlQVDBnVTJOaGJHRnlMa0pNVDBOTFgweEpWRVZTUVV4Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBL0lIUnlkV1ZjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E2SUNGc2FXNWxUR1Z1WjNSb1QzWmxja3hwYldsMEtIWmhiSFZsTENCc2FXNWxWMmxrZEdnc0lHbHVaR1Z1ZEM1c1pXNW5kR2dwTzF4dUlDQWdJR2xtSUNnaGRtRnNkV1VwWEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJzYVhSbGNtRnNJRDhnSjN4Y1hHNG5JRG9nSno1Y1hHNG5PMXh1SUNBZ0lDOHZJR1JsZEdWeWJXbHVaU0JqYUc5dGNHbHVaeUJtY205dElIZG9hWFJsYzNCaFkyVWdZWFFnZG1Gc2RXVWdaVzVrWEc0Z0lDQWdiR1YwSUdOb2IyMXdPMXh1SUNBZ0lHeGxkQ0JsYm1SVGRHRnlkRHRjYmlBZ0lDQm1iM0lnS0dWdVpGTjBZWEowSUQwZ2RtRnNkV1V1YkdWdVozUm9PeUJsYm1SVGRHRnlkQ0ErSURBN0lDMHRaVzVrVTNSaGNuUXBJSHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdZMmdnUFNCMllXeDFaVnRsYm1SVGRHRnlkQ0F0SURGZE8xeHVJQ0FnSUNBZ0lDQnBaaUFvWTJnZ0lUMDlJQ2RjWEc0bklDWW1JR05vSUNFOVBTQW5YRngwSnlBbUppQmphQ0FoUFQwZ0p5QW5LVnh1SUNBZ0lDQWdJQ0FnSUNBZ1luSmxZV3M3WEc0Z0lDQWdmVnh1SUNBZ0lHeGxkQ0JsYm1RZ1BTQjJZV3gxWlM1emRXSnpkSEpwYm1jb1pXNWtVM1JoY25RcE8xeHVJQ0FnSUdOdmJuTjBJR1Z1WkU1c1VHOXpJRDBnWlc1a0xtbHVaR1Y0VDJZb0oxeGNiaWNwTzF4dUlDQWdJR2xtSUNobGJtUk9iRkJ2Y3lBOVBUMGdMVEVwSUh0Y2JpQWdJQ0FnSUNBZ1kyaHZiWEFnUFNBbkxTYzdJQzh2SUhOMGNtbHdYRzRnSUNBZ2ZWeHVJQ0FnSUdWc2MyVWdhV1lnS0haaGJIVmxJRDA5UFNCbGJtUWdmSHdnWlc1a1RteFFiM01nSVQwOUlHVnVaQzVzWlc1bmRHZ2dMU0F4S1NCN1hHNGdJQ0FnSUNBZ0lHTm9iMjF3SUQwZ0p5c25PeUF2THlCclpXVndYRzRnSUNBZ0lDQWdJR2xtSUNodmJrTm9iMjF3UzJWbGNDbGNiaUFnSUNBZ0lDQWdJQ0FnSUc5dVEyaHZiWEJMWldWd0tDazdYRzRnSUNBZ2ZWeHVJQ0FnSUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0JqYUc5dGNDQTlJQ2NuT3lBdkx5QmpiR2x3WEc0Z0lDQWdmVnh1SUNBZ0lHbG1JQ2hsYm1RcElIdGNiaUFnSUNBZ0lDQWdkbUZzZFdVZ1BTQjJZV3gxWlM1emJHbGpaU2d3TENBdFpXNWtMbXhsYm1kMGFDazdYRzRnSUNBZ0lDQWdJR2xtSUNobGJtUmJaVzVrTG14bGJtZDBhQ0F0SURGZElEMDlQU0FuWEZ4dUp5bGNiaUFnSUNBZ0lDQWdJQ0FnSUdWdVpDQTlJR1Z1WkM1emJHbGpaU2d3TENBdE1TazdYRzRnSUNBZ0lDQWdJR1Z1WkNBOUlHVnVaQzV5WlhCc1lXTmxLR0pzYjJOclJXNWtUbVYzYkdsdVpYTXNJR0FrSmlSN2FXNWtaVzUwZldBcE8xeHVJQ0FnSUgxY2JpQWdJQ0F2THlCa1pYUmxjbTFwYm1VZ2FXNWtaVzUwSUdsdVpHbGpZWFJ2Y2lCbWNtOXRJSGRvYVhSbGMzQmhZMlVnWVhRZ2RtRnNkV1VnYzNSaGNuUmNiaUFnSUNCc1pYUWdjM1JoY25SWGFYUm9VM0JoWTJVZ1BTQm1ZV3h6WlR0Y2JpQWdJQ0JzWlhRZ2MzUmhjblJGYm1RN1hHNGdJQ0FnYkdWMElITjBZWEowVG14UWIzTWdQU0F0TVR0Y2JpQWdJQ0JtYjNJZ0tITjBZWEowUlc1a0lEMGdNRHNnYzNSaGNuUkZibVFnUENCMllXeDFaUzVzWlc1bmRHZzdJQ3NyYzNSaGNuUkZibVFwSUh0Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnWTJnZ1BTQjJZV3gxWlZ0emRHRnlkRVZ1WkYwN1hHNGdJQ0FnSUNBZ0lHbG1JQ2hqYUNBOVBUMGdKeUFuS1Z4dUlDQWdJQ0FnSUNBZ0lDQWdjM1JoY25SWGFYUm9VM0JoWTJVZ1BTQjBjblZsTzF4dUlDQWdJQ0FnSUNCbGJITmxJR2xtSUNoamFDQTlQVDBnSjF4Y2JpY3BYRzRnSUNBZ0lDQWdJQ0FnSUNCemRHRnlkRTVzVUc5eklEMGdjM1JoY25SRmJtUTdYRzRnSUNBZ0lDQWdJR1ZzYzJWY2JpQWdJQ0FnSUNBZ0lDQWdJR0p5WldGck8xeHVJQ0FnSUgxY2JpQWdJQ0JzWlhRZ2MzUmhjblFnUFNCMllXeDFaUzV6ZFdKemRISnBibWNvTUN3Z2MzUmhjblJPYkZCdmN5QThJSE4wWVhKMFJXNWtJRDhnYzNSaGNuUk9iRkJ2Y3lBcklERWdPaUJ6ZEdGeWRFVnVaQ2s3WEc0Z0lDQWdhV1lnS0hOMFlYSjBLU0I3WEc0Z0lDQWdJQ0FnSUhaaGJIVmxJRDBnZG1Gc2RXVXVjM1ZpYzNSeWFXNW5LSE4wWVhKMExteGxibWQwYUNrN1hHNGdJQ0FnSUNBZ0lITjBZWEowSUQwZ2MzUmhjblF1Y21Wd2JHRmpaU2d2WEZ4dUt5OW5MQ0JnSkNZa2UybHVaR1Z1ZEgxZ0tUdGNiaUFnSUNCOVhHNGdJQ0FnWTI5dWMzUWdhVzVrWlc1MFUybDZaU0E5SUdsdVpHVnVkQ0EvSUNjeUp5QTZJQ2N4SnpzZ0x5OGdjbTl2ZENCcGN5QmhkQ0F0TVZ4dUlDQWdJR3hsZENCb1pXRmtaWElnUFNBb2JHbDBaWEpoYkNBL0lDZDhKeUE2SUNjK0p5a2dLeUFvYzNSaGNuUlhhWFJvVTNCaFkyVWdQeUJwYm1SbGJuUlRhWHBsSURvZ0p5Y3BJQ3NnWTJodmJYQTdYRzRnSUNBZ2FXWWdLR052YlcxbGJuUXBJSHRjYmlBZ0lDQWdJQ0FnYUdWaFpHVnlJQ3M5SUNjZ0p5QXJJR052YlcxbGJuUlRkSEpwYm1jb1kyOXRiV1Z1ZEM1eVpYQnNZV05sS0M4Z1AxdGNYSEpjWEc1ZEt5OW5MQ0FuSUNjcEtUdGNiaUFnSUNBZ0lDQWdhV1lnS0c5dVEyOXRiV1Z1ZENsY2JpQWdJQ0FnSUNBZ0lDQWdJRzl1UTI5dGJXVnVkQ2dwTzF4dUlDQWdJSDFjYmlBZ0lDQnBaaUFvYkdsMFpYSmhiQ2tnZTF4dUlDQWdJQ0FnSUNCMllXeDFaU0E5SUhaaGJIVmxMbkpsY0d4aFkyVW9MMXhjYmlzdlp5d2dZQ1FtSkh0cGJtUmxiblI5WUNrN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCZ0pIdG9aV0ZrWlhKOVhGeHVKSHRwYm1SbGJuUjlKSHR6ZEdGeWRIMGtlM1poYkhWbGZTUjdaVzVrZldBN1hHNGdJQ0FnZlZ4dUlDQWdJSFpoYkhWbElEMGdkbUZzZFdWY2JpQWdJQ0FnSUNBZ0xuSmxjR3hoWTJVb0wxeGNiaXN2Wnl3Z0oxeGNiaVFtSnlsY2JpQWdJQ0FnSUNBZ0xuSmxjR3hoWTJVb0x5Zy9PbDU4WEZ4dUtTaGJYRngwSUYwdUtpa29Qem9vVzF4Y2JseGNkQ0JkS2lsY1hHNG9QeUZiWEZ4dVhGeDBJRjBwS1Q4dlp5d2dKeVF4SkRJbktTQXZMeUJ0YjNKbExXbHVaR1Z1ZEdWa0lHeHBibVZ6SUdGeVpXNG5kQ0JtYjJ4a1pXUmNiaUFnSUNBZ0lDQWdMeThnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdYaUJ0YjNKbExXbHVaQzRnWGlCbGJYQjBlU0FnSUNBZ1hpQmpZWEIwZFhKbElHNWxlSFFnWlcxd2RIa2diR2x1WlhNZ2IyNXNlU0JoZENCbGJtUWdiMllnYVc1a1pXNTBYRzRnSUNBZ0lDQWdJQzV5WlhCc1lXTmxLQzljWEc0ckwyY3NJR0FrSmlSN2FXNWtaVzUwZldBcE8xeHVJQ0FnSUdOdmJuTjBJR0p2WkhrZ1BTQm1iMnhrUm14dmQweHBibVZ6S0dBa2UzTjBZWEowZlNSN2RtRnNkV1Y5Skh0bGJtUjlZQ3dnYVc1a1pXNTBMQ0JHVDB4RVgwSk1UME5MTENCblpYUkdiMnhrVDNCMGFXOXVjeWhqZEhnc0lIUnlkV1VwS1R0Y2JpQWdJQ0J5WlhSMWNtNGdZQ1I3YUdWaFpHVnlmVnhjYmlSN2FXNWtaVzUwZlNSN1ltOWtlWDFnTzF4dWZWeHVablZ1WTNScGIyNGdjR3hoYVc1VGRISnBibWNvYVhSbGJTd2dZM1I0TENCdmJrTnZiVzFsYm5Rc0lHOXVRMmh2YlhCTFpXVndLU0I3WEc0Z0lDQWdZMjl1YzNRZ2V5QjBlWEJsTENCMllXeDFaU0I5SUQwZ2FYUmxiVHRjYmlBZ0lDQmpiMjV6ZENCN0lHRmpkSFZoYkZOMGNtbHVaeXdnYVcxd2JHbGphWFJMWlhrc0lHbHVaR1Z1ZEN3Z2FXNWtaVzUwVTNSbGNDd2dhVzVHYkc5M0lIMGdQU0JqZEhnN1hHNGdJQ0FnYVdZZ0tDaHBiWEJzYVdOcGRFdGxlU0FtSmlCMllXeDFaUzVwYm1Oc2RXUmxjeWduWEZ4dUp5a3BJSHg4WEc0Z0lDQWdJQ0FnSUNocGJrWnNiM2NnSmlZZ0wxdGJYRnhkZTMwc1hTOHVkR1Z6ZENoMllXeDFaU2twS1NCN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCeGRXOTBaV1JUZEhKcGJtY29kbUZzZFdVc0lHTjBlQ2s3WEc0Z0lDQWdmVnh1SUNBZ0lHbG1JQ2doZG1Gc2RXVWdmSHhjYmlBZ0lDQWdJQ0FnTDE1YlhGeHVYRngwSUN4YlhGeGRlMzBqSmlvaGZENG5YQ0lsUUdCZGZGNWJQeTFkSkh4ZVd6OHRYVnNnWEZ4MFhYeGJYRnh1T2wxYklGeGNkRjE4V3lCY1hIUmRYRnh1ZkZ0Y1hHNWNYSFFnWFNOOFcxeGNibHhjZENBNlhTUXZMblJsYzNRb2RtRnNkV1VwS1NCN1hHNGdJQ0FnSUNBZ0lDOHZJRzV2ZENCaGJHeHZkMlZrT2x4dUlDQWdJQ0FnSUNBdkx5QXRJR1Z0Y0hSNUlITjBjbWx1Wnl3Z0p5MG5JRzl5SUNjL0oxeHVJQ0FnSUNBZ0lDQXZMeUF0SUhOMFlYSjBJSGRwZEdnZ1lXNGdhVzVrYVdOaGRHOXlJR05vWVhKaFkzUmxjaUFvWlhoalpYQjBJRnMvT2kxZEtTQnZjaUF2V3o4dFhTQXZYRzRnSUNBZ0lDQWdJQzh2SUMwZ0oxeGNiaUFuTENBbk9pQW5JRzl5SUNjZ1hGeHVKeUJoYm5sM2FHVnlaVnh1SUNBZ0lDQWdJQ0F2THlBdElDY2pKeUJ1YjNRZ2NISmxZMlZrWldRZ1lua2dZU0J1YjI0dGMzQmhZMlVnWTJoaGNseHVJQ0FnSUNBZ0lDQXZMeUF0SUdWdVpDQjNhWFJvSUNjZ0p5QnZjaUFuT2lkY2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUdsdGNHeHBZMmwwUzJWNUlIeDhJR2x1Um14dmR5QjhmQ0FoZG1Gc2RXVXVhVzVqYkhWa1pYTW9KMXhjYmljcFhHNGdJQ0FnSUNBZ0lDQWdJQ0EvSUhGMWIzUmxaRk4wY21sdVp5aDJZV3gxWlN3Z1kzUjRLVnh1SUNBZ0lDQWdJQ0FnSUNBZ09pQmliRzlqYTFOMGNtbHVaeWhwZEdWdExDQmpkSGdzSUc5dVEyOXRiV1Z1ZEN3Z2IyNURhRzl0Y0V0bFpYQXBPMXh1SUNBZ0lIMWNiaUFnSUNCcFppQW9JV2x0Y0d4cFkybDBTMlY1SUNZbVhHNGdJQ0FnSUNBZ0lDRnBia1pzYjNjZ0ppWmNiaUFnSUNBZ0lDQWdkSGx3WlNBaFBUMGdVMk5oYkdGeUxsQk1RVWxPSUNZbVhHNGdJQ0FnSUNBZ0lIWmhiSFZsTG1sdVkyeDFaR1Z6S0NkY1hHNG5LU2tnZTF4dUlDQWdJQ0FnSUNBdkx5QlhhR1Z5WlNCaGJHeHZkMlZrSUNZZ2RIbHdaU0J1YjNRZ2MyVjBJR1Y0Y0d4cFkybDBiSGtzSUhCeVpXWmxjaUJpYkc5amF5QnpkSGxzWlNCbWIzSWdiWFZzZEdsc2FXNWxJSE4wY21sdVozTmNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlHSnNiMk5yVTNSeWFXNW5LR2wwWlcwc0lHTjBlQ3dnYjI1RGIyMXRaVzUwTENCdmJrTm9iMjF3UzJWbGNDazdYRzRnSUNBZ2ZWeHVJQ0FnSUdsbUlDaGpiMjUwWVdsdWMwUnZZM1Z0Wlc1MFRXRnlhMlZ5S0haaGJIVmxLU2tnZTF4dUlDQWdJQ0FnSUNCcFppQW9hVzVrWlc1MElEMDlQU0FuSnlrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnWTNSNExtWnZjbU5sUW14dlkydEpibVJsYm5RZ1BTQjBjblZsTzF4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlHSnNiMk5yVTNSeWFXNW5LR2wwWlcwc0lHTjBlQ3dnYjI1RGIyMXRaVzUwTENCdmJrTm9iMjF3UzJWbGNDazdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnWld4elpTQnBaaUFvYVcxd2JHbGphWFJMWlhrZ0ppWWdhVzVrWlc1MElEMDlQU0JwYm1SbGJuUlRkR1Z3S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdjWFZ2ZEdWa1UzUnlhVzVuS0haaGJIVmxMQ0JqZEhncE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVJQ0FnSUdOdmJuTjBJSE4wY2lBOUlIWmhiSFZsTG5KbGNHeGhZMlVvTDF4Y2Jpc3ZaeXdnWUNRbVhGeHVKSHRwYm1SbGJuUjlZQ2s3WEc0Z0lDQWdMeThnVm1WeWFXWjVJSFJvWVhRZ2IzVjBjSFYwSUhkcGJHd2dZbVVnY0dGeWMyVmtJR0Z6SUdFZ2MzUnlhVzVuTENCaGN5QmxMbWN1SUhCc1lXbHVJRzUxYldKbGNuTWdZVzVrWEc0Z0lDQWdMeThnWW05dmJHVmhibk1nWjJWMElIQmhjbk5sWkNCM2FYUm9JSFJvYjNObElIUjVjR1Z6SUdsdUlIWXhMaklnS0dVdVp5NGdKelF5Snl3Z0ozUnlkV1VuSUNZZ0p6QXVPV1V0TXljcExGeHVJQ0FnSUM4dklHRnVaQ0J2ZEdobGNuTWdhVzRnZGpFdU1TNWNiaUFnSUNCcFppQW9ZV04wZFdGc1UzUnlhVzVuS1NCN1hHNGdJQ0FnSUNBZ0lHTnZibk4wSUhSbGMzUWdQU0FvZEdGbktTQTlQaUIwWVdjdVpHVm1ZWFZzZENBbUppQjBZV2N1ZEdGbklDRTlQU0FuZEdGbk9ubGhiV3d1YjNKbkxESXdNREk2YzNSeUp5QW1KaUIwWVdjdWRHVnpkRDh1ZEdWemRDaHpkSElwTzF4dUlDQWdJQ0FnSUNCamIyNXpkQ0I3SUdOdmJYQmhkQ3dnZEdGbmN5QjlJRDBnWTNSNExtUnZZeTV6WTJobGJXRTdYRzRnSUNBZ0lDQWdJR2xtSUNoMFlXZHpMbk52YldVb2RHVnpkQ2tnZkh3Z1kyOXRjR0YwUHk1emIyMWxLSFJsYzNRcEtWeHVJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJSEYxYjNSbFpGTjBjbWx1WnloMllXeDFaU3dnWTNSNEtUdGNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJR2x0Y0d4cFkybDBTMlY1WEc0Z0lDQWdJQ0FnSUQ4Z2MzUnlYRzRnSUNBZ0lDQWdJRG9nWm05c1pFWnNiM2RNYVc1bGN5aHpkSElzSUdsdVpHVnVkQ3dnUms5TVJGOUdURTlYTENCblpYUkdiMnhrVDNCMGFXOXVjeWhqZEhnc0lHWmhiSE5sS1NrN1hHNTlYRzVtZFc1amRHbHZiaUJ6ZEhKcGJtZHBabmxUZEhKcGJtY29hWFJsYlN3Z1kzUjRMQ0J2YmtOdmJXMWxiblFzSUc5dVEyaHZiWEJMWldWd0tTQjdYRzRnSUNBZ1kyOXVjM1FnZXlCcGJYQnNhV05wZEV0bGVTd2dhVzVHYkc5M0lIMGdQU0JqZEhnN1hHNGdJQ0FnWTI5dWMzUWdjM01nUFNCMGVYQmxiMllnYVhSbGJTNTJZV3gxWlNBOVBUMGdKM04wY21sdVp5ZGNiaUFnSUNBZ0lDQWdQeUJwZEdWdFhHNGdJQ0FnSUNBZ0lEb2dUMkpxWldOMExtRnpjMmxuYmloN2ZTd2dhWFJsYlN3Z2V5QjJZV3gxWlRvZ1UzUnlhVzVuS0dsMFpXMHVkbUZzZFdVcElIMHBPMXh1SUNBZ0lHeGxkQ0I3SUhSNWNHVWdmU0E5SUdsMFpXMDdYRzRnSUNBZ2FXWWdLSFI1Y0dVZ0lUMDlJRk5qWVd4aGNpNVJWVTlVUlY5RVQxVkNURVVwSUh0Y2JpQWdJQ0FnSUNBZ0x5OGdabTl5WTJVZ1pHOTFZbXhsSUhGMWIzUmxjeUJ2YmlCamIyNTBjbTlzSUdOb1lYSmhZM1JsY25NZ0ppQjFibkJoYVhKbFpDQnpkWEp5YjJkaGRHVnpYRzRnSUNBZ0lDQWdJR2xtSUNndlcxeGNlREF3TFZ4Y2VEQTRYRng0TUdJdFhGeDRNV1pjWEhnM1ppMWNYSGc1Wmx4Y2RYdEVPREF3ZlMxY1hIVjdSRVpHUm4xZEwzVXVkR1Z6ZENoemN5NTJZV3gxWlNrcFhHNGdJQ0FnSUNBZ0lDQWdJQ0IwZVhCbElEMGdVMk5oYkdGeUxsRlZUMVJGWDBSUFZVSk1SVHRjYmlBZ0lDQjlYRzRnSUNBZ1kyOXVjM1FnWDNOMGNtbHVaMmxtZVNBOUlDaGZkSGx3WlNrZ1BUNGdlMXh1SUNBZ0lDQWdJQ0J6ZDJsMFkyZ2dLRjkwZVhCbEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCallYTmxJRk5qWVd4aGNpNUNURTlEUzE5R1QweEVSVVE2WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpZWE5sSUZOallXeGhjaTVDVEU5RFMxOU1TVlJGVWtGTU9seHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCcGJYQnNhV05wZEV0bGVTQjhmQ0JwYmtac2IzZGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUHlCeGRXOTBaV1JUZEhKcGJtY29jM011ZG1Gc2RXVXNJR04wZUNrZ0x5OGdZbXh2WTJ0eklHRnlaU0J1YjNRZ2RtRnNhV1FnYVc1emFXUmxJR1pzYjNjZ1kyOXVkR0ZwYm1WeWMxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E2SUdKc2IyTnJVM1J5YVc1bktITnpMQ0JqZEhnc0lHOXVRMjl0YldWdWRDd2diMjVEYUc5dGNFdGxaWEFwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdZMkZ6WlNCVFkyRnNZWEl1VVZWUFZFVmZSRTlWUWt4Rk9seHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCa2IzVmliR1ZSZFc5MFpXUlRkSEpwYm1jb2MzTXVkbUZzZFdVc0lHTjBlQ2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpZWE5sSUZOallXeGhjaTVSVlU5VVJWOVRTVTVIVEVVNlhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhOcGJtZHNaVkYxYjNSbFpGTjBjbWx1WnloemN5NTJZV3gxWlN3Z1kzUjRLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHTmhjMlVnVTJOaGJHRnlMbEJNUVVsT09seHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCd2JHRnBibE4wY21sdVp5aHpjeXdnWTNSNExDQnZia052YlcxbGJuUXNJRzl1UTJodmJYQkxaV1Z3S1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJR1JsWm1GMWJIUTZYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlHNTFiR3c3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0I5TzF4dUlDQWdJR3hsZENCeVpYTWdQU0JmYzNSeWFXNW5hV1o1S0hSNWNHVXBPMXh1SUNBZ0lHbG1JQ2h5WlhNZ1BUMDlJRzUxYkd3cElIdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2V5QmtaV1poZFd4MFMyVjVWSGx3WlN3Z1pHVm1ZWFZzZEZOMGNtbHVaMVI1Y0dVZ2ZTQTlJR04wZUM1dmNIUnBiMjV6TzF4dUlDQWdJQ0FnSUNCamIyNXpkQ0IwSUQwZ0tHbHRjR3hwWTJsMFMyVjVJQ1ltSUdSbFptRjFiSFJMWlhsVWVYQmxLU0I4ZkNCa1pXWmhkV3gwVTNSeWFXNW5WSGx3WlR0Y2JpQWdJQ0FnSUNBZ2NtVnpJRDBnWDNOMGNtbHVaMmxtZVNoMEtUdGNiaUFnSUNBZ0lDQWdhV1lnS0hKbGN5QTlQVDBnYm5Wc2JDbGNiaUFnSUNBZ0lDQWdJQ0FnSUhSb2NtOTNJRzVsZHlCRmNuSnZjaWhnVlc1emRYQndiM0owWldRZ1pHVm1ZWFZzZENCemRISnBibWNnZEhsd1pTQWtlM1I5WUNrN1hHNGdJQ0FnZlZ4dUlDQWdJSEpsZEhWeWJpQnlaWE03WEc1OVhHNWNibVY0Y0c5eWRDQjdJSE4wY21sdVoybG1lVk4wY21sdVp5QjlPMXh1SWl3Z0ltbHRjRzl5ZENCN0lHRnVZMmh2Y2tselZtRnNhV1FnZlNCbWNtOXRJQ2N1TGk5a2IyTXZZVzVqYUc5eWN5NXFjeWM3WEc1cGJYQnZjblFnZXlCcGMxQmhhWElzSUdselFXeHBZWE1zSUdselRtOWtaU3dnYVhOVFkyRnNZWElzSUdselEyOXNiR1ZqZEdsdmJpQjlJR1p5YjIwZ0p5NHVMMjV2WkdWekwybGtaVzUwYVhSNUxtcHpKenRjYm1sdGNHOXlkQ0I3SUhOMGNtbHVaMmxtZVVOdmJXMWxiblFnZlNCbWNtOXRJQ2N1TDNOMGNtbHVaMmxtZVVOdmJXMWxiblF1YW5Nbk8xeHVhVzF3YjNKMElIc2djM1J5YVc1bmFXWjVVM1J5YVc1bklIMGdabkp2YlNBbkxpOXpkSEpwYm1kcFpubFRkSEpwYm1jdWFuTW5PMXh1WEc1bWRXNWpkR2x2YmlCamNtVmhkR1ZUZEhKcGJtZHBabmxEYjI1MFpYaDBLR1J2WXl3Z2IzQjBhVzl1Y3lrZ2UxeHVJQ0FnSUdOdmJuTjBJRzl3ZENBOUlFOWlhbVZqZEM1aGMzTnBaMjRvZTF4dUlDQWdJQ0FnSUNCaWJHOWphMUYxYjNSbE9pQjBjblZsTEZ4dUlDQWdJQ0FnSUNCamIyMXRaVzUwVTNSeWFXNW5PaUJ6ZEhKcGJtZHBabmxEYjIxdFpXNTBMRnh1SUNBZ0lDQWdJQ0JrWldaaGRXeDBTMlY1Vkhsd1pUb2diblZzYkN4Y2JpQWdJQ0FnSUNBZ1pHVm1ZWFZzZEZOMGNtbHVaMVI1Y0dVNklDZFFURUZKVGljc1hHNGdJQ0FnSUNBZ0lHUnBjbVZqZEdsMlpYTTZJRzUxYkd3c1hHNGdJQ0FnSUNBZ0lHUnZkV0pzWlZGMWIzUmxaRUZ6U2xOUFRqb2dabUZzYzJVc1hHNGdJQ0FnSUNBZ0lHUnZkV0pzWlZGMWIzUmxaRTFwYmsxMWJIUnBUR2x1WlV4bGJtZDBhRG9nTkRBc1hHNGdJQ0FnSUNBZ0lHWmhiSE5sVTNSeU9pQW5abUZzYzJVbkxGeHVJQ0FnSUNBZ0lDQm1iRzkzUTI5c2JHVmpkR2x2YmxCaFpHUnBibWM2SUhSeWRXVXNYRzRnSUNBZ0lDQWdJR2x1WkdWdWRGTmxjVG9nZEhKMVpTeGNiaUFnSUNBZ0lDQWdiR2x1WlZkcFpIUm9PaUE0TUN4Y2JpQWdJQ0FnSUNBZ2JXbHVRMjl1ZEdWdWRGZHBaSFJvT2lBeU1DeGNiaUFnSUNBZ0lDQWdiblZzYkZOMGNqb2dKMjUxYkd3bkxGeHVJQ0FnSUNBZ0lDQnphVzF3YkdWTFpYbHpPaUJtWVd4elpTeGNiaUFnSUNBZ0lDQWdjMmx1WjJ4bFVYVnZkR1U2SUc1MWJHd3NYRzRnSUNBZ0lDQWdJSFJ5ZFdWVGRISTZJQ2QwY25WbEp5eGNiaUFnSUNBZ0lDQWdkbVZ5YVdaNVFXeHBZWE5QY21SbGNqb2dkSEoxWlZ4dUlDQWdJSDBzSUdSdll5NXpZMmhsYldFdWRHOVRkSEpwYm1kUGNIUnBiMjV6TENCdmNIUnBiMjV6S1R0Y2JpQWdJQ0JzWlhRZ2FXNUdiRzkzTzF4dUlDQWdJSE4zYVhSamFDQW9iM0IwTG1OdmJHeGxZM1JwYjI1VGRIbHNaU2tnZTF4dUlDQWdJQ0FnSUNCallYTmxJQ2RpYkc5amF5YzZYRzRnSUNBZ0lDQWdJQ0FnSUNCcGJrWnNiM2NnUFNCbVlXeHpaVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHSnlaV0ZyTzF4dUlDQWdJQ0FnSUNCallYTmxJQ2RtYkc5M0p6cGNiaUFnSUNBZ0lDQWdJQ0FnSUdsdVJteHZkeUE5SUhSeWRXVTdYRzRnSUNBZ0lDQWdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQWdJQ0FnWkdWbVlYVnNkRHBjYmlBZ0lDQWdJQ0FnSUNBZ0lHbHVSbXh2ZHlBOUlHNTFiR3c3WEc0Z0lDQWdmVnh1SUNBZ0lISmxkSFZ5YmlCN1hHNGdJQ0FnSUNBZ0lHRnVZMmh2Y25NNklHNWxkeUJUWlhRb0tTeGNiaUFnSUNBZ0lDQWdaRzlqTEZ4dUlDQWdJQ0FnSUNCbWJHOTNRMjlzYkdWamRHbHZibEJoWkdScGJtYzZJRzl3ZEM1bWJHOTNRMjlzYkdWamRHbHZibEJoWkdScGJtY2dQeUFuSUNjZ09pQW5KeXhjYmlBZ0lDQWdJQ0FnYVc1a1pXNTBPaUFuSnl4Y2JpQWdJQ0FnSUNBZ2FXNWtaVzUwVTNSbGNEb2dkSGx3Wlc5bUlHOXdkQzVwYm1SbGJuUWdQVDA5SUNkdWRXMWlaWEluSUQ4Z0p5QW5MbkpsY0dWaGRDaHZjSFF1YVc1a1pXNTBLU0E2SUNjZ0lDY3NYRzRnSUNBZ0lDQWdJR2x1Um14dmR5eGNiaUFnSUNBZ0lDQWdiM0IwYVc5dWN6b2diM0IwWEc0Z0lDQWdmVHRjYm4xY2JtWjFibU4wYVc5dUlHZGxkRlJoWjA5aWFtVmpkQ2gwWVdkekxDQnBkR1Z0S1NCN1hHNGdJQ0FnYVdZZ0tHbDBaVzB1ZEdGbktTQjdYRzRnSUNBZ0lDQWdJR052Ym5OMElHMWhkR05vSUQwZ2RHRm5jeTVtYVd4MFpYSW9kQ0E5UGlCMExuUmhaeUE5UFQwZ2FYUmxiUzUwWVdjcE8xeHVJQ0FnSUNBZ0lDQnBaaUFvYldGMFkyZ3ViR1Z1WjNSb0lENGdNQ2xjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCdFlYUmphQzVtYVc1a0tIUWdQVDRnZEM1bWIzSnRZWFFnUFQwOUlHbDBaVzB1Wm05eWJXRjBLU0EvUHlCdFlYUmphRnN3WFR0Y2JpQWdJQ0I5WEc0Z0lDQWdiR1YwSUhSaFowOWlhaUE5SUhWdVpHVm1hVzVsWkR0Y2JpQWdJQ0JzWlhRZ2IySnFPMXh1SUNBZ0lHbG1JQ2hwYzFOallXeGhjaWhwZEdWdEtTa2dlMXh1SUNBZ0lDQWdJQ0J2WW1vZ1BTQnBkR1Z0TG5aaGJIVmxPMXh1SUNBZ0lDQWdJQ0JzWlhRZ2JXRjBZMmdnUFNCMFlXZHpMbVpwYkhSbGNpaDBJRDArSUhRdWFXUmxiblJwWm5rL0xpaHZZbW9wS1R0Y2JpQWdJQ0FnSUNBZ2FXWWdLRzFoZEdOb0xteGxibWQwYUNBK0lERXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHTnZibk4wSUhSbGMzUk5ZWFJqYUNBOUlHMWhkR05vTG1acGJIUmxjaWgwSUQwK0lIUXVkR1Z6ZENrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2RHVnpkRTFoZEdOb0xteGxibWQwYUNBK0lEQXBYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdiV0YwWTJnZ1BTQjBaWE4wVFdGMFkyZzdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnZEdGblQySnFJRDFjYmlBZ0lDQWdJQ0FnSUNBZ0lHMWhkR05vTG1acGJtUW9kQ0E5UGlCMExtWnZjbTFoZENBOVBUMGdhWFJsYlM1bWIzSnRZWFFwSUQ4L0lHMWhkR05vTG1acGJtUW9kQ0E5UGlBaGRDNW1iM0p0WVhRcE8xeHVJQ0FnSUgxY2JpQWdJQ0JsYkhObElIdGNiaUFnSUNBZ0lDQWdiMkpxSUQwZ2FYUmxiVHRjYmlBZ0lDQWdJQ0FnZEdGblQySnFJRDBnZEdGbmN5NW1hVzVrS0hRZ1BUNGdkQzV1YjJSbFEyeGhjM01nSmlZZ2IySnFJR2x1YzNSaGJtTmxiMllnZEM1dWIyUmxRMnhoYzNNcE8xeHVJQ0FnSUgxY2JpQWdJQ0JwWmlBb0lYUmhaMDlpYWlrZ2UxeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCdVlXMWxJRDBnYjJKcVB5NWpiMjV6ZEhKMVkzUnZjajh1Ym1GdFpTQS9QeUIwZVhCbGIyWWdiMkpxTzF4dUlDQWdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1JYSnliM0lvWUZSaFp5QnViM1FnY21WemIyeDJaV1FnWm05eUlDUjdibUZ0WlgwZ2RtRnNkV1ZnS1R0Y2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlIUmhaMDlpYWp0Y2JuMWNiaTh2SUc1bFpXUnpJSFJ2SUdKbElHTmhiR3hsWkNCaVpXWnZjbVVnZG1Gc2RXVWdjM1J5YVc1bmFXWnBaWElnZEc4Z1lXeHNiM2NnWm05eUlHTnBjbU4xYkdGeUlHRnVZMmh2Y2lCeVpXWnpYRzVtZFc1amRHbHZiaUJ6ZEhKcGJtZHBabmxRY205d2N5aHViMlJsTENCMFlXZFBZbW9zSUhzZ1lXNWphRzl5Y3l3Z1pHOWpJSDBwSUh0Y2JpQWdJQ0JwWmlBb0lXUnZZeTVrYVhKbFkzUnBkbVZ6S1Z4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnSnljN1hHNGdJQ0FnWTI5dWMzUWdjSEp2Y0hNZ1BTQmJYVHRjYmlBZ0lDQmpiMjV6ZENCaGJtTm9iM0lnUFNBb2FYTlRZMkZzWVhJb2JtOWtaU2tnZkh3Z2FYTkRiMnhzWldOMGFXOXVLRzV2WkdVcEtTQW1KaUJ1YjJSbExtRnVZMmh2Y2p0Y2JpQWdJQ0JwWmlBb1lXNWphRzl5SUNZbUlHRnVZMmh2Y2tselZtRnNhV1FvWVc1amFHOXlLU2tnZTF4dUlDQWdJQ0FnSUNCaGJtTm9iM0p6TG1Ga1pDaGhibU5vYjNJcE8xeHVJQ0FnSUNBZ0lDQndjbTl3Y3k1d2RYTm9LR0FtSkh0aGJtTm9iM0o5WUNrN1hHNGdJQ0FnZlZ4dUlDQWdJR052Ym5OMElIUmhaeUE5SUc1dlpHVXVkR0ZuSUQ4Z2JtOWtaUzUwWVdjZ09pQjBZV2RQWW1vdVpHVm1ZWFZzZENBL0lHNTFiR3dnT2lCMFlXZFBZbW91ZEdGbk8xeHVJQ0FnSUdsbUlDaDBZV2NwWEc0Z0lDQWdJQ0FnSUhCeWIzQnpMbkIxYzJnb1pHOWpMbVJwY21WamRHbDJaWE11ZEdGblUzUnlhVzVuS0hSaFp5a3BPMXh1SUNBZ0lISmxkSFZ5YmlCd2NtOXdjeTVxYjJsdUtDY2dKeWs3WEc1OVhHNW1kVzVqZEdsdmJpQnpkSEpwYm1kcFpua29hWFJsYlN3Z1kzUjRMQ0J2YmtOdmJXMWxiblFzSUc5dVEyaHZiWEJMWldWd0tTQjdYRzRnSUNBZ2FXWWdLR2x6VUdGcGNpaHBkR1Z0S1NsY2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUdsMFpXMHVkRzlUZEhKcGJtY29ZM1I0TENCdmJrTnZiVzFsYm5Rc0lHOXVRMmh2YlhCTFpXVndLVHRjYmlBZ0lDQnBaaUFvYVhOQmJHbGhjeWhwZEdWdEtTa2dlMXh1SUNBZ0lDQWdJQ0JwWmlBb1kzUjRMbVJ2WXk1a2FYSmxZM1JwZG1WektWeHVJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJR2wwWlcwdWRHOVRkSEpwYm1jb1kzUjRLVHRjYmlBZ0lDQWdJQ0FnYVdZZ0tHTjBlQzV5WlhOdmJIWmxaRUZzYVdGelpYTS9MbWhoY3locGRHVnRLU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdkR2h5YjNjZ2JtVjNJRlI1Y0dWRmNuSnZjaWhnUTJGdWJtOTBJSE4wY21sdVoybG1lU0JqYVhKamRXeGhjaUJ6ZEhKMVkzUjFjbVVnZDJsMGFHOTFkQ0JoYkdsaGN5QnViMlJsYzJBcE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tHTjBlQzV5WlhOdmJIWmxaRUZzYVdGelpYTXBYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZM1I0TG5KbGMyOXNkbVZrUVd4cFlYTmxjeTVoWkdRb2FYUmxiU2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmxiSE5sWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWTNSNExuSmxjMjlzZG1Wa1FXeHBZWE5sY3lBOUlHNWxkeUJUWlhRb1cybDBaVzFkS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJR2wwWlcwZ1BTQnBkR1Z0TG5KbGMyOXNkbVVvWTNSNExtUnZZeWs3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0I5WEc0Z0lDQWdiR1YwSUhSaFowOWlhaUE5SUhWdVpHVm1hVzVsWkR0Y2JpQWdJQ0JqYjI1emRDQnViMlJsSUQwZ2FYTk9iMlJsS0dsMFpXMHBYRzRnSUNBZ0lDQWdJRDhnYVhSbGJWeHVJQ0FnSUNBZ0lDQTZJR04wZUM1a2IyTXVZM0psWVhSbFRtOWtaU2hwZEdWdExDQjdJRzl1VkdGblQySnFPaUJ2SUQwK0lDaDBZV2RQWW1vZ1BTQnZLU0I5S1R0Y2JpQWdJQ0JwWmlBb0lYUmhaMDlpYWlsY2JpQWdJQ0FnSUNBZ2RHRm5UMkpxSUQwZ1oyVjBWR0ZuVDJKcVpXTjBLR04wZUM1a2IyTXVjMk5vWlcxaExuUmhaM01zSUc1dlpHVXBPMXh1SUNBZ0lHTnZibk4wSUhCeWIzQnpJRDBnYzNSeWFXNW5hV1o1VUhKdmNITW9ibTlrWlN3Z2RHRm5UMkpxTENCamRIZ3BPMXh1SUNBZ0lHbG1JQ2h3Y205d2N5NXNaVzVuZEdnZ1BpQXdLVnh1SUNBZ0lDQWdJQ0JqZEhndWFXNWtaVzUwUVhSVGRHRnlkQ0E5SUNoamRIZ3VhVzVrWlc1MFFYUlRkR0Z5ZENBL1B5QXdLU0FySUhCeWIzQnpMbXhsYm1kMGFDQXJJREU3WEc0Z0lDQWdZMjl1YzNRZ2MzUnlJRDBnZEhsd1pXOW1JSFJoWjA5aWFpNXpkSEpwYm1kcFpua2dQVDA5SUNkbWRXNWpkR2x2YmlkY2JpQWdJQ0FnSUNBZ1B5QjBZV2RQWW1vdWMzUnlhVzVuYVdaNUtHNXZaR1VzSUdOMGVDd2diMjVEYjIxdFpXNTBMQ0J2YmtOb2IyMXdTMlZsY0NsY2JpQWdJQ0FnSUNBZ09pQnBjMU5qWVd4aGNpaHViMlJsS1Z4dUlDQWdJQ0FnSUNBZ0lDQWdQeUJ6ZEhKcGJtZHBabmxUZEhKcGJtY29ibTlrWlN3Z1kzUjRMQ0J2YmtOdmJXMWxiblFzSUc5dVEyaHZiWEJMWldWd0tWeHVJQ0FnSUNBZ0lDQWdJQ0FnT2lCdWIyUmxMblJ2VTNSeWFXNW5LR04wZUN3Z2IyNURiMjF0Wlc1MExDQnZia05vYjIxd1MyVmxjQ2s3WEc0Z0lDQWdhV1lnS0NGd2NtOXdjeWxjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJSE4wY2p0Y2JpQWdJQ0J5WlhSMWNtNGdhWE5UWTJGc1lYSW9ibTlrWlNrZ2ZId2djM1J5V3pCZElEMDlQU0FuZXljZ2ZId2djM1J5V3pCZElEMDlQU0FuV3lkY2JpQWdJQ0FnSUNBZ1B5QmdKSHR3Y205d2MzMGdKSHR6ZEhKOVlGeHVJQ0FnSUNBZ0lDQTZJR0FrZTNCeWIzQnpmVnhjYmlSN1kzUjRMbWx1WkdWdWRIMGtlM04wY24xZ08xeHVmVnh1WEc1bGVIQnZjblFnZXlCamNtVmhkR1ZUZEhKcGJtZHBabmxEYjI1MFpYaDBMQ0J6ZEhKcGJtZHBabmtnZlR0Y2JpSXNJQ0pwYlhCdmNuUWdleUJwYzBOdmJHeGxZM1JwYjI0c0lHbHpUbTlrWlN3Z2FYTlRZMkZzWVhJc0lHbHpVMlZ4SUgwZ1puSnZiU0FuTGk0dmJtOWtaWE12YVdSbGJuUnBkSGt1YW5Nbk8xeHVhVzF3YjNKMElIc2dVMk5oYkdGeUlIMGdabkp2YlNBbkxpNHZibTlrWlhNdlUyTmhiR0Z5TG1wekp6dGNibWx0Y0c5eWRDQjdJSE4wY21sdVoybG1lU0I5SUdaeWIyMGdKeTR2YzNSeWFXNW5hV1o1TG1wekp6dGNibWx0Y0c5eWRDQjdJR3hwYm1WRGIyMXRaVzUwTENCcGJtUmxiblJEYjIxdFpXNTBJSDBnWm5KdmJTQW5MaTl6ZEhKcGJtZHBabmxEYjIxdFpXNTBMbXB6Snp0Y2JseHVablZ1WTNScGIyNGdjM1J5YVc1bmFXWjVVR0ZwY2loN0lHdGxlU3dnZG1Gc2RXVWdmU3dnWTNSNExDQnZia052YlcxbGJuUXNJRzl1UTJodmJYQkxaV1Z3S1NCN1hHNGdJQ0FnWTI5dWMzUWdleUJoYkd4T2RXeHNWbUZzZFdWekxDQmtiMk1zSUdsdVpHVnVkQ3dnYVc1a1pXNTBVM1JsY0N3Z2IzQjBhVzl1Y3pvZ2V5QmpiMjF0Wlc1MFUzUnlhVzVuTENCcGJtUmxiblJUWlhFc0lITnBiWEJzWlV0bGVYTWdmU0I5SUQwZ1kzUjRPMXh1SUNBZ0lHeGxkQ0JyWlhsRGIyMXRaVzUwSUQwZ0tHbHpUbTlrWlNoclpYa3BJQ1ltSUd0bGVTNWpiMjF0Wlc1MEtTQjhmQ0J1ZFd4c08xeHVJQ0FnSUdsbUlDaHphVzF3YkdWTFpYbHpLU0I3WEc0Z0lDQWdJQ0FnSUdsbUlDaHJaWGxEYjIxdFpXNTBLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dSWEp5YjNJb0oxZHBkR2dnYzJsdGNHeGxJR3RsZVhNc0lHdGxlU0J1YjJSbGN5QmpZVzV1YjNRZ2FHRjJaU0JqYjIxdFpXNTBjeWNwTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lHbG1JQ2hwYzBOdmJHeGxZM1JwYjI0b2EyVjVLU0I4ZkNBb0lXbHpUbTlrWlNoclpYa3BJQ1ltSUhSNWNHVnZaaUJyWlhrZ1BUMDlJQ2R2WW1wbFkzUW5LU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ2JYTm5JRDBnSjFkcGRHZ2djMmx0Y0d4bElHdGxlWE1zSUdOdmJHeGxZM1JwYjI0Z1kyRnVibTkwSUdKbElIVnpaV1FnWVhNZ1lTQnJaWGtnZG1Gc2RXVW5PMXh1SUNBZ0lDQWdJQ0FnSUNBZ2RHaHliM2NnYm1WM0lFVnljbTl5S0cxelp5azdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQjlYRzRnSUNBZ2JHVjBJR1Y0Y0d4cFkybDBTMlY1SUQwZ0lYTnBiWEJzWlV0bGVYTWdKaVpjYmlBZ0lDQWdJQ0FnS0NGclpYa2dmSHhjYmlBZ0lDQWdJQ0FnSUNBZ0lDaHJaWGxEYjIxdFpXNTBJQ1ltSUhaaGJIVmxJRDA5SUc1MWJHd2dKaVlnSVdOMGVDNXBia1pzYjNjcElIeDhYRzRnSUNBZ0lDQWdJQ0FnSUNCcGMwTnZiR3hsWTNScGIyNG9hMlY1S1NCOGZGeHVJQ0FnSUNBZ0lDQWdJQ0FnS0dselUyTmhiR0Z5S0d0bGVTbGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQS9JR3RsZVM1MGVYQmxJRDA5UFNCVFkyRnNZWEl1UWt4UFEwdGZSazlNUkVWRUlIeDhJR3RsZVM1MGVYQmxJRDA5UFNCVFkyRnNZWEl1UWt4UFEwdGZURWxVUlZKQlRGeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lEb2dkSGx3Wlc5bUlHdGxlU0E5UFQwZ0oyOWlhbVZqZENjcEtUdGNiaUFnSUNCamRIZ2dQU0JQWW1wbFkzUXVZWE56YVdkdUtIdDlMQ0JqZEhnc0lIdGNiaUFnSUNBZ0lDQWdZV3hzVG5Wc2JGWmhiSFZsY3pvZ1ptRnNjMlVzWEc0Z0lDQWdJQ0FnSUdsdGNHeHBZMmwwUzJWNU9pQWhaWGh3YkdsamFYUkxaWGtnSmlZZ0tITnBiWEJzWlV0bGVYTWdmSHdnSVdGc2JFNTFiR3hXWVd4MVpYTXBMRnh1SUNBZ0lDQWdJQ0JwYm1SbGJuUTZJR2x1WkdWdWRDQXJJR2x1WkdWdWRGTjBaWEJjYmlBZ0lDQjlLVHRjYmlBZ0lDQnNaWFFnYTJWNVEyOXRiV1Z1ZEVSdmJtVWdQU0JtWVd4elpUdGNiaUFnSUNCc1pYUWdZMmh2YlhCTFpXVndJRDBnWm1Gc2MyVTdYRzRnSUNBZ2JHVjBJSE4wY2lBOUlITjBjbWx1WjJsbWVTaHJaWGtzSUdOMGVDd2dLQ2tnUFQ0Z0tHdGxlVU52YlcxbGJuUkViMjVsSUQwZ2RISjFaU2tzSUNncElEMCtJQ2hqYUc5dGNFdGxaWEFnUFNCMGNuVmxLU2s3WEc0Z0lDQWdhV1lnS0NGbGVIQnNhV05wZEV0bGVTQW1KaUFoWTNSNExtbHVSbXh2ZHlBbUppQnpkSEl1YkdWdVozUm9JRDRnTVRBeU5Da2dlMXh1SUNBZ0lDQWdJQ0JwWmlBb2MybHRjR3hsUzJWNWN5bGNiaUFnSUNBZ0lDQWdJQ0FnSUhSb2NtOTNJRzVsZHlCRmNuSnZjaWduVjJsMGFDQnphVzF3YkdVZ2EyVjVjeXdnYzJsdVoyeGxJR3hwYm1VZ2MyTmhiR0Z5SUcxMWMzUWdibTkwSUhOd1lXNGdiVzl5WlNCMGFHRnVJREV3TWpRZ1kyaGhjbUZqZEdWeWN5Y3BPMXh1SUNBZ0lDQWdJQ0JsZUhCc2FXTnBkRXRsZVNBOUlIUnlkV1U3WEc0Z0lDQWdmVnh1SUNBZ0lHbG1JQ2hqZEhndWFXNUdiRzkzS1NCN1hHNGdJQ0FnSUNBZ0lHbG1JQ2hoYkd4T2RXeHNWbUZzZFdWeklIeDhJSFpoYkhWbElEMDlJRzUxYkd3cElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDaHJaWGxEYjIxdFpXNTBSRzl1WlNBbUppQnZia052YlcxbGJuUXBYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdiMjVEYjIxdFpXNTBLQ2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2MzUnlJRDA5UFNBbkp5QS9JQ2MvSnlBNklHVjRjR3hwWTJsMFMyVjVJRDhnWUQ4Z0pIdHpkSEo5WUNBNklITjBjanRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ0lDQmxiSE5sSUdsbUlDZ29ZV3hzVG5Wc2JGWmhiSFZsY3lBbUppQWhjMmx0Y0d4bFMyVjVjeWtnZkh3Z0tIWmhiSFZsSUQwOUlHNTFiR3dnSmlZZ1pYaHdiR2xqYVhSTFpYa3BLU0I3WEc0Z0lDQWdJQ0FnSUhOMGNpQTlJR0EvSUNSN2MzUnlmV0E3WEc0Z0lDQWdJQ0FnSUdsbUlDaHJaWGxEYjIxdFpXNTBJQ1ltSUNGclpYbERiMjF0Wlc1MFJHOXVaU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdjM1J5SUNzOUlHeHBibVZEYjIxdFpXNTBLSE4wY2l3Z1kzUjRMbWx1WkdWdWRDd2dZMjl0YldWdWRGTjBjbWx1WnloclpYbERiMjF0Wlc1MEtTazdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnWld4elpTQnBaaUFvWTJodmJYQkxaV1Z3SUNZbUlHOXVRMmh2YlhCTFpXVndLVnh1SUNBZ0lDQWdJQ0FnSUNBZ2IyNURhRzl0Y0V0bFpYQW9LVHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJSE4wY2p0Y2JpQWdJQ0I5WEc0Z0lDQWdhV1lnS0d0bGVVTnZiVzFsYm5SRWIyNWxLVnh1SUNBZ0lDQWdJQ0JyWlhsRGIyMXRaVzUwSUQwZ2JuVnNiRHRjYmlBZ0lDQnBaaUFvWlhod2JHbGphWFJMWlhrcElIdGNiaUFnSUNBZ0lDQWdhV1lnS0d0bGVVTnZiVzFsYm5RcFhHNGdJQ0FnSUNBZ0lDQWdJQ0J6ZEhJZ0t6MGdiR2x1WlVOdmJXMWxiblFvYzNSeUxDQmpkSGd1YVc1a1pXNTBMQ0JqYjIxdFpXNTBVM1J5YVc1bktHdGxlVU52YlcxbGJuUXBLVHRjYmlBZ0lDQWdJQ0FnYzNSeUlEMGdZRDhnSkh0emRISjlYRnh1Skh0cGJtUmxiblI5T21BN1hHNGdJQ0FnZlZ4dUlDQWdJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQnpkSElnUFNCZ0pIdHpkSEo5T21BN1hHNGdJQ0FnSUNBZ0lHbG1JQ2hyWlhsRGIyMXRaVzUwS1Z4dUlDQWdJQ0FnSUNBZ0lDQWdjM1J5SUNzOUlHeHBibVZEYjIxdFpXNTBLSE4wY2l3Z1kzUjRMbWx1WkdWdWRDd2dZMjl0YldWdWRGTjBjbWx1WnloclpYbERiMjF0Wlc1MEtTazdYRzRnSUNBZ2ZWeHVJQ0FnSUd4bGRDQjJjMklzSUhaallpd2dkbUZzZFdWRGIyMXRaVzUwTzF4dUlDQWdJR2xtSUNocGMwNXZaR1VvZG1Gc2RXVXBLU0I3WEc0Z0lDQWdJQ0FnSUhaellpQTlJQ0VoZG1Gc2RXVXVjM0JoWTJWQ1pXWnZjbVU3WEc0Z0lDQWdJQ0FnSUhaallpQTlJSFpoYkhWbExtTnZiVzFsYm5SQ1pXWnZjbVU3WEc0Z0lDQWdJQ0FnSUhaaGJIVmxRMjl0YldWdWRDQTlJSFpoYkhWbExtTnZiVzFsYm5RN1hHNGdJQ0FnZlZ4dUlDQWdJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQjJjMklnUFNCbVlXeHpaVHRjYmlBZ0lDQWdJQ0FnZG1OaUlEMGdiblZzYkR0Y2JpQWdJQ0FnSUNBZ2RtRnNkV1ZEYjIxdFpXNTBJRDBnYm5Wc2JEdGNiaUFnSUNBZ0lDQWdhV1lnS0haaGJIVmxJQ1ltSUhSNWNHVnZaaUIyWVd4MVpTQTlQVDBnSjI5aWFtVmpkQ2NwWEc0Z0lDQWdJQ0FnSUNBZ0lDQjJZV3gxWlNBOUlHUnZZeTVqY21WaGRHVk9iMlJsS0haaGJIVmxLVHRjYmlBZ0lDQjlYRzRnSUNBZ1kzUjRMbWx0Y0d4cFkybDBTMlY1SUQwZ1ptRnNjMlU3WEc0Z0lDQWdhV1lnS0NGbGVIQnNhV05wZEV0bGVTQW1KaUFoYTJWNVEyOXRiV1Z1ZENBbUppQnBjMU5qWVd4aGNpaDJZV3gxWlNrcFhHNGdJQ0FnSUNBZ0lHTjBlQzVwYm1SbGJuUkJkRk4wWVhKMElEMGdjM1J5TG14bGJtZDBhQ0FySURFN1hHNGdJQ0FnWTJodmJYQkxaV1Z3SUQwZ1ptRnNjMlU3WEc0Z0lDQWdhV1lnS0NGcGJtUmxiblJUWlhFZ0ppWmNiaUFnSUNBZ0lDQWdhVzVrWlc1MFUzUmxjQzVzWlc1bmRHZ2dQajBnTWlBbUpseHVJQ0FnSUNBZ0lDQWhZM1I0TG1sdVJteHZkeUFtSmx4dUlDQWdJQ0FnSUNBaFpYaHdiR2xqYVhSTFpYa2dKaVpjYmlBZ0lDQWdJQ0FnYVhOVFpYRW9kbUZzZFdVcElDWW1YRzRnSUNBZ0lDQWdJQ0YyWVd4MVpTNW1iRzkzSUNZbVhHNGdJQ0FnSUNBZ0lDRjJZV3gxWlM1MFlXY2dKaVpjYmlBZ0lDQWdJQ0FnSVhaaGJIVmxMbUZ1WTJodmNpa2dlMXh1SUNBZ0lDQWdJQ0F2THlCSlppQnBibVJsYm5SVFpYRWdQVDA5SUdaaGJITmxMQ0JqYjI1emFXUmxjaUFuTFNBbklHRnpJSEJoY25RZ2IyWWdhVzVrWlc1MFlYUnBiMjRnZDJobGNtVWdjRzl6YzJsaWJHVmNiaUFnSUNBZ0lDQWdZM1I0TG1sdVpHVnVkQ0E5SUdOMGVDNXBibVJsYm5RdWMzVmljM1J5YVc1bktESXBPMXh1SUNBZ0lIMWNiaUFnSUNCc1pYUWdkbUZzZFdWRGIyMXRaVzUwUkc5dVpTQTlJR1poYkhObE8xeHVJQ0FnSUdOdmJuTjBJSFpoYkhWbFUzUnlJRDBnYzNSeWFXNW5hV1o1S0haaGJIVmxMQ0JqZEhnc0lDZ3BJRDArSUNoMllXeDFaVU52YlcxbGJuUkViMjVsSUQwZ2RISjFaU2tzSUNncElEMCtJQ2hqYUc5dGNFdGxaWEFnUFNCMGNuVmxLU2s3WEc0Z0lDQWdiR1YwSUhkeklEMGdKeUFuTzF4dUlDQWdJR2xtSUNoclpYbERiMjF0Wlc1MElIeDhJSFp6WWlCOGZDQjJZMklwSUh0Y2JpQWdJQ0FnSUNBZ2QzTWdQU0IyYzJJZ1B5QW5YRnh1SnlBNklDY25PMXh1SUNBZ0lDQWdJQ0JwWmlBb2RtTmlLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCamN5QTlJR052YlcxbGJuUlRkSEpwYm1jb2RtTmlLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIZHpJQ3M5SUdCY1hHNGtlMmx1WkdWdWRFTnZiVzFsYm5Rb1kzTXNJR04wZUM1cGJtUmxiblFwZldBN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdhV1lnS0haaGJIVmxVM1J5SUQwOVBTQW5KeUFtSmlBaFkzUjRMbWx1Um14dmR5a2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLSGR6SUQwOVBTQW5YRnh1SnlsY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCM2N5QTlJQ2RjWEc1Y1hHNG5PMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2QzTWdLejBnWUZ4Y2JpUjdZM1I0TG1sdVpHVnVkSDFnTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dUlDQWdJR1ZzYzJVZ2FXWWdLQ0ZsZUhCc2FXTnBkRXRsZVNBbUppQnBjME52Ykd4bFkzUnBiMjRvZG1Gc2RXVXBLU0I3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJSFp6TUNBOUlIWmhiSFZsVTNSeVd6QmRPMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQnViREFnUFNCMllXeDFaVk4wY2k1cGJtUmxlRTltS0NkY1hHNG5LVHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdhR0Z6VG1WM2JHbHVaU0E5SUc1c01DQWhQVDBnTFRFN1hHNGdJQ0FnSUNBZ0lHTnZibk4wSUdac2IzY2dQU0JqZEhndWFXNUdiRzkzSUQ4L0lIWmhiSFZsTG1ac2IzY2dQejhnZG1Gc2RXVXVhWFJsYlhNdWJHVnVaM1JvSUQwOVBTQXdPMXh1SUNBZ0lDQWdJQ0JwWmlBb2FHRnpUbVYzYkdsdVpTQjhmQ0FoWm14dmR5a2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2JHVjBJR2hoYzFCeWIzQnpUR2x1WlNBOUlHWmhiSE5sTzF4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lnS0doaGMwNWxkMnhwYm1VZ0ppWWdLSFp6TUNBOVBUMGdKeVluSUh4OElIWnpNQ0E5UFQwZ0p5RW5LU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUd4bGRDQnpjREFnUFNCMllXeDFaVk4wY2k1cGJtUmxlRTltS0NjZ0p5azdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhV1lnS0haek1DQTlQVDBnSnlZbklDWW1YRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhOd01DQWhQVDBnTFRFZ0ppWmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYzNBd0lEd2dibXd3SUNZbVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSFpoYkhWbFUzUnlXM053TUNBcklERmRJRDA5UFNBbklTY3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2MzQXdJRDBnZG1Gc2RXVlRkSEl1YVc1a1pYaFBaaWduSUNjc0lITndNQ0FySURFcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBaaUFvYzNBd0lEMDlQU0F0TVNCOGZDQnViREFnUENCemNEQXBYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdoaGMxQnliM0J6VEdsdVpTQTlJSFJ5ZFdVN1hHNGdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFvSVdoaGMxQnliM0J6VEdsdVpTbGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjNjeUE5SUdCY1hHNGtlMk4wZUM1cGJtUmxiblI5WUR0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JpQWdJQ0JsYkhObElHbG1JQ2gyWVd4MVpWTjBjaUE5UFQwZ0p5Y2dmSHdnZG1Gc2RXVlRkSEpiTUYwZ1BUMDlJQ2RjWEc0bktTQjdYRzRnSUNBZ0lDQWdJSGR6SUQwZ0p5YzdYRzRnSUNBZ2ZWeHVJQ0FnSUhOMGNpQXJQU0IzY3lBcklIWmhiSFZsVTNSeU8xeHVJQ0FnSUdsbUlDaGpkSGd1YVc1R2JHOTNLU0I3WEc0Z0lDQWdJQ0FnSUdsbUlDaDJZV3gxWlVOdmJXMWxiblJFYjI1bElDWW1JRzl1UTI5dGJXVnVkQ2xjYmlBZ0lDQWdJQ0FnSUNBZ0lHOXVRMjl0YldWdWRDZ3BPMXh1SUNBZ0lIMWNiaUFnSUNCbGJITmxJR2xtSUNoMllXeDFaVU52YlcxbGJuUWdKaVlnSVhaaGJIVmxRMjl0YldWdWRFUnZibVVwSUh0Y2JpQWdJQ0FnSUNBZ2MzUnlJQ3M5SUd4cGJtVkRiMjF0Wlc1MEtITjBjaXdnWTNSNExtbHVaR1Z1ZEN3Z1kyOXRiV1Z1ZEZOMGNtbHVaeWgyWVd4MVpVTnZiVzFsYm5RcEtUdGNiaUFnSUNCOVhHNGdJQ0FnWld4elpTQnBaaUFvWTJodmJYQkxaV1Z3SUNZbUlHOXVRMmh2YlhCTFpXVndLU0I3WEc0Z0lDQWdJQ0FnSUc5dVEyaHZiWEJMWldWd0tDazdYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUJ6ZEhJN1hHNTlYRzVjYm1WNGNHOXlkQ0I3SUhOMGNtbHVaMmxtZVZCaGFYSWdmVHRjYmlJc0lDSm1kVzVqZEdsdmJpQmtaV0oxWnloc2IyZE1aWFpsYkN3Z0xpNHViV1Z6YzJGblpYTXBJSHRjYmlBZ0lDQnBaaUFvYkc5blRHVjJaV3dnUFQwOUlDZGtaV0oxWnljcFhHNGdJQ0FnSUNBZ0lHTnZibk52YkdVdWJHOW5LQzR1TG0xbGMzTmhaMlZ6S1R0Y2JuMWNibVoxYm1OMGFXOXVJSGRoY200b2JHOW5UR1YyWld3c0lIZGhjbTVwYm1jcElIdGNiaUFnSUNCcFppQW9iRzluVEdWMlpXd2dQVDA5SUNka1pXSjFaeWNnZkh3Z2JHOW5UR1YyWld3Z1BUMDlJQ2QzWVhKdUp5a2dlMXh1SUNBZ0lDQWdJQ0JwWmlBb2RIbHdaVzltSUhCeWIyTmxjM01nSVQwOUlDZDFibVJsWm1sdVpXUW5JQ1ltSUhCeWIyTmxjM011WlcxcGRGZGhjbTVwYm1jcFhHNGdJQ0FnSUNBZ0lDQWdJQ0J3Y205alpYTnpMbVZ0YVhSWFlYSnVhVzVuS0hkaGNtNXBibWNwTzF4dUlDQWdJQ0FnSUNCbGJITmxYRzRnSUNBZ0lDQWdJQ0FnSUNCamIyNXpiMnhsTG5kaGNtNG9kMkZ5Ym1sdVp5azdYRzRnSUNBZ2ZWeHVmVnh1WEc1bGVIQnZjblFnZXlCa1pXSjFaeXdnZDJGeWJpQjlPMXh1SWl3Z0ltbHRjRzl5ZENCN0lHbHpVMk5oYkdGeUxDQnBjMEZzYVdGekxDQnBjMU5sY1N3Z2FYTk5ZWEFnZlNCbWNtOXRJQ2N1TGk4dUxpOXViMlJsY3k5cFpHVnVkR2wwZVM1cWN5YzdYRzVwYlhCdmNuUWdleUJUWTJGc1lYSWdmU0JtY205dElDY3VMaTh1TGk5dWIyUmxjeTlUWTJGc1lYSXVhbk1uTzF4dVhHNHZMeUJKWmlCMGFHVWdkbUZzZFdVZ1lYTnpiMk5wWVhSbFpDQjNhWFJvSUdFZ2JXVnlaMlVnYTJWNUlHbHpJR0VnYzJsdVoyeGxJRzFoY0hCcGJtY2dibTlrWlN3Z1pXRmphQ0J2Wmx4dUx5OGdhWFJ6SUd0bGVTOTJZV3gxWlNCd1lXbHljeUJwY3lCcGJuTmxjblJsWkNCcGJuUnZJSFJvWlNCamRYSnlaVzUwSUcxaGNIQnBibWNzSUhWdWJHVnpjeUIwYUdVZ2EyVjVYRzR2THlCaGJISmxZV1I1SUdWNGFYTjBjeUJwYmlCcGRDNGdTV1lnZEdobElIWmhiSFZsSUdGemMyOWphV0YwWldRZ2QybDBhQ0IwYUdVZ2JXVnlaMlVnYTJWNUlHbHpJR0ZjYmk4dklITmxjWFZsYm1ObExDQjBhR1Z1SUhSb2FYTWdjMlZ4ZFdWdVkyVWdhWE1nWlhod1pXTjBaV1FnZEc4Z1kyOXVkR0ZwYmlCdFlYQndhVzVuSUc1dlpHVnpJR0Z1WkNCbFlXTm9YRzR2THlCdlppQjBhR1Z6WlNCdWIyUmxjeUJwY3lCdFpYSm5aV1FnYVc0Z2RIVnliaUJoWTJOdmNtUnBibWNnZEc4Z2FYUnpJRzl5WkdWeUlHbHVJSFJvWlNCelpYRjFaVzVqWlM1Y2JpOHZJRXRsZVhNZ2FXNGdiV0Z3Y0dsdVp5QnViMlJsY3lCbFlYSnNhV1Z5SUdsdUlIUm9aU0J6WlhGMVpXNWpaU0J2ZG1WeWNtbGtaU0JyWlhseklITndaV05wWm1sbFpDQnBibHh1THk4Z2JHRjBaWElnYldGd2NHbHVaeUJ1YjJSbGN5NGdMUzBnYUhSMGNEb3ZMM2xoYld3dWIzSm5MM1I1Y0dVdmJXVnlaMlV1YUhSdGJGeHVZMjl1YzNRZ1RVVlNSMFZmUzBWWklEMGdKenc4Snp0Y2JtTnZibk4wSUcxbGNtZGxJRDBnZTF4dUlDQWdJR2xrWlc1MGFXWjVPaUIyWVd4MVpTQTlQaUIyWVd4MVpTQTlQVDBnVFVWU1IwVmZTMFZaSUh4OFhHNGdJQ0FnSUNBZ0lDaDBlWEJsYjJZZ2RtRnNkV1VnUFQwOUlDZHplVzFpYjJ3bklDWW1JSFpoYkhWbExtUmxjMk55YVhCMGFXOXVJRDA5UFNCTlJWSkhSVjlMUlZrcExGeHVJQ0FnSUdSbFptRjFiSFE2SUNkclpYa25MRnh1SUNBZ0lIUmhaem9nSjNSaFp6cDVZVzFzTG05eVp5d3lNREF5T20xbGNtZGxKeXhjYmlBZ0lDQjBaWE4wT2lBdlhqdzhKQzhzWEc0Z0lDQWdjbVZ6YjJ4MlpUb2dLQ2tnUFQ0Z1QySnFaV04wTG1GemMybG5iaWh1WlhjZ1UyTmhiR0Z5S0ZONWJXSnZiQ2hOUlZKSFJWOUxSVmtwS1N3Z2UxeHVJQ0FnSUNBZ0lDQmhaR1JVYjBwVFRXRndPaUJoWkdSTlpYSm5aVlJ2U2xOTllYQmNiaUFnSUNCOUtTeGNiaUFnSUNCemRISnBibWRwWm5rNklDZ3BJRDArSUUxRlVrZEZYMHRGV1Z4dWZUdGNibU52Ym5OMElHbHpUV1Z5WjJWTFpYa2dQU0FvWTNSNExDQnJaWGtwSUQwK0lDaHRaWEpuWlM1cFpHVnVkR2xtZVNoclpYa3BJSHg4WEc0Z0lDQWdLR2x6VTJOaGJHRnlLR3RsZVNrZ0ppWmNiaUFnSUNBZ0lDQWdLQ0ZyWlhrdWRIbHdaU0I4ZkNCclpYa3VkSGx3WlNBOVBUMGdVMk5oYkdGeUxsQk1RVWxPS1NBbUpseHVJQ0FnSUNBZ0lDQnRaWEpuWlM1cFpHVnVkR2xtZVNoclpYa3VkbUZzZFdVcEtTa2dKaVpjYmlBZ0lDQmpkSGcvTG1Sdll5NXpZMmhsYldFdWRHRm5jeTV6YjIxbEtIUmhaeUE5UGlCMFlXY3VkR0ZuSUQwOVBTQnRaWEpuWlM1MFlXY2dKaVlnZEdGbkxtUmxabUYxYkhRcE8xeHVablZ1WTNScGIyNGdZV1JrVFdWeVoyVlViMHBUVFdGd0tHTjBlQ3dnYldGd0xDQjJZV3gxWlNrZ2UxeHVJQ0FnSUhaaGJIVmxJRDBnWTNSNElDWW1JR2x6UVd4cFlYTW9kbUZzZFdVcElEOGdkbUZzZFdVdWNtVnpiMngyWlNoamRIZ3VaRzlqS1NBNklIWmhiSFZsTzF4dUlDQWdJR2xtSUNocGMxTmxjU2gyWVd4MVpTa3BYRzRnSUNBZ0lDQWdJR1p2Y2lBb1kyOXVjM1FnYVhRZ2IyWWdkbUZzZFdVdWFYUmxiWE1wWEc0Z0lDQWdJQ0FnSUNBZ0lDQnRaWEpuWlZaaGJIVmxLR04wZUN3Z2JXRndMQ0JwZENrN1hHNGdJQ0FnWld4elpTQnBaaUFvUVhKeVlYa3VhWE5CY25KaGVTaDJZV3gxWlNrcFhHNGdJQ0FnSUNBZ0lHWnZjaUFvWTI5dWMzUWdhWFFnYjJZZ2RtRnNkV1VwWEc0Z0lDQWdJQ0FnSUNBZ0lDQnRaWEpuWlZaaGJIVmxLR04wZUN3Z2JXRndMQ0JwZENrN1hHNGdJQ0FnWld4elpWeHVJQ0FnSUNBZ0lDQnRaWEpuWlZaaGJIVmxLR04wZUN3Z2JXRndMQ0IyWVd4MVpTazdYRzU5WEc1bWRXNWpkR2x2YmlCdFpYSm5aVlpoYkhWbEtHTjBlQ3dnYldGd0xDQjJZV3gxWlNrZ2UxeHVJQ0FnSUdOdmJuTjBJSE52ZFhKalpTQTlJR04wZUNBbUppQnBjMEZzYVdGektIWmhiSFZsS1NBL0lIWmhiSFZsTG5KbGMyOXNkbVVvWTNSNExtUnZZeWtnT2lCMllXeDFaVHRjYmlBZ0lDQnBaaUFvSVdselRXRndLSE52ZFhKalpTa3BYRzRnSUNBZ0lDQWdJSFJvY205M0lHNWxkeUJGY25KdmNpZ25UV1Z5WjJVZ2MyOTFjbU5sY3lCdGRYTjBJR0psSUcxaGNITWdiM0lnYldGd0lHRnNhV0Z6WlhNbktUdGNiaUFnSUNCamIyNXpkQ0J6Y21OTllYQWdQU0J6YjNWeVkyVXVkRzlLVTA5T0tHNTFiR3dzSUdOMGVDd2dUV0Z3S1R0Y2JpQWdJQ0JtYjNJZ0tHTnZibk4wSUZ0clpYa3NJSFpoYkhWbFhTQnZaaUJ6Y21OTllYQXBJSHRjYmlBZ0lDQWdJQ0FnYVdZZ0tHMWhjQ0JwYm5OMFlXNWpaVzltSUUxaGNDa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLQ0Z0WVhBdWFHRnpLR3RsZVNrcFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2JXRndMbk5sZENoclpYa3NJSFpoYkhWbEtUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0JsYkhObElHbG1JQ2h0WVhBZ2FXNXpkR0Z1WTJWdlppQlRaWFFwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJRzFoY0M1aFpHUW9hMlY1S1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQmxiSE5sSUdsbUlDZ2hUMkpxWldOMExuQnliM1J2ZEhsd1pTNW9ZWE5QZDI1UWNtOXdaWEowZVM1allXeHNLRzFoY0N3Z2EyVjVLU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdUMkpxWldOMExtUmxabWx1WlZCeWIzQmxjblI1S0cxaGNDd2dhMlY1TENCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RtRnNkV1VzWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZDNKcGRHRmliR1U2SUhSeWRXVXNYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdaVzUxYldWeVlXSnNaVG9nZEhKMVpTeGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmpiMjVtYVdkMWNtRmliR1U2SUhSeWRXVmNiaUFnSUNBZ0lDQWdJQ0FnSUgwcE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUJ0WVhBN1hHNTlYRzVjYm1WNGNHOXlkQ0I3SUdGa1pFMWxjbWRsVkc5S1UwMWhjQ3dnYVhOTlpYSm5aVXRsZVN3Z2JXVnlaMlVnZlR0Y2JpSXNJQ0pwYlhCdmNuUWdleUIzWVhKdUlIMGdabkp2YlNBbkxpNHZiRzluTG1wekp6dGNibWx0Y0c5eWRDQjdJR2x6VFdWeVoyVkxaWGtzSUdGa1pFMWxjbWRsVkc5S1UwMWhjQ0I5SUdaeWIyMGdKeTR1TDNOamFHVnRZUzk1WVcxc0xURXVNUzl0WlhKblpTNXFjeWM3WEc1cGJYQnZjblFnZXlCamNtVmhkR1ZUZEhKcGJtZHBabmxEYjI1MFpYaDBJSDBnWm5KdmJTQW5MaTR2YzNSeWFXNW5hV1o1TDNOMGNtbHVaMmxtZVM1cWN5YzdYRzVwYlhCdmNuUWdleUJwYzA1dlpHVWdmU0JtY205dElDY3VMMmxrWlc1MGFYUjVMbXB6Snp0Y2JtbHRjRzl5ZENCN0lIUnZTbE1nZlNCbWNtOXRJQ2N1TDNSdlNsTXVhbk1uTzF4dVhHNW1kVzVqZEdsdmJpQmhaR1JRWVdseVZHOUtVMDFoY0NoamRIZ3NJRzFoY0N3Z2V5QnJaWGtzSUhaaGJIVmxJSDBwSUh0Y2JpQWdJQ0JwWmlBb2FYTk9iMlJsS0d0bGVTa2dKaVlnYTJWNUxtRmtaRlJ2U2xOTllYQXBYRzRnSUNBZ0lDQWdJR3RsZVM1aFpHUlViMHBUVFdGd0tHTjBlQ3dnYldGd0xDQjJZV3gxWlNrN1hHNGdJQ0FnTHk4Z1ZFOUVUem9nVTJodmRXeGtJR1J5YjNBZ2RHaHBjeUJ6Y0dWamFXRnNJR05oYzJVZ1ptOXlJR0poY21VZ1BEd2dhR0Z1Wkd4cGJtZGNiaUFnSUNCbGJITmxJR2xtSUNocGMwMWxjbWRsUzJWNUtHTjBlQ3dnYTJWNUtTbGNiaUFnSUNBZ0lDQWdZV1JrVFdWeVoyVlViMHBUVFdGd0tHTjBlQ3dnYldGd0xDQjJZV3gxWlNrN1hHNGdJQ0FnWld4elpTQjdYRzRnSUNBZ0lDQWdJR052Ym5OMElHcHpTMlY1SUQwZ2RHOUtVeWhyWlhrc0lDY25MQ0JqZEhncE8xeHVJQ0FnSUNBZ0lDQnBaaUFvYldGd0lHbHVjM1JoYm1ObGIyWWdUV0Z3S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J0WVhBdWMyVjBLR3B6UzJWNUxDQjBiMHBUS0haaGJIVmxMQ0JxYzB0bGVTd2dZM1I0S1NrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdaV3h6WlNCcFppQW9iV0Z3SUdsdWMzUmhibU5sYjJZZ1UyVjBLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnRZWEF1WVdSa0tHcHpTMlY1S1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJR052Ym5OMElITjBjbWx1WjB0bGVTQTlJSE4wY21sdVoybG1lVXRsZVNoclpYa3NJR3B6UzJWNUxDQmpkSGdwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ2FuTldZV3gxWlNBOUlIUnZTbE1vZG1Gc2RXVXNJSE4wY21sdVowdGxlU3dnWTNSNEtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDaHpkSEpwYm1kTFpYa2dhVzRnYldGd0tWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lFOWlhbVZqZEM1a1pXWnBibVZRY205d1pYSjBlU2h0WVhBc0lITjBjbWx1WjB0bGVTd2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCMllXeDFaVG9nYW5OV1lXeDFaU3hjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2QzSnBkR0ZpYkdVNklIUnlkV1VzWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHVnVkVzFsY21GaWJHVTZJSFJ5ZFdVc1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR052Ym1acFozVnlZV0pzWlRvZ2RISjFaVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDBwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdaV3h6WlZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUcxaGNGdHpkSEpwYm1kTFpYbGRJRDBnYW5OV1lXeDFaVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ0lDQnlaWFIxY200Z2JXRndPMXh1ZlZ4dVpuVnVZM1JwYjI0Z2MzUnlhVzVuYVdaNVMyVjVLR3RsZVN3Z2FuTkxaWGtzSUdOMGVDa2dlMXh1SUNBZ0lHbG1JQ2hxYzB0bGVTQTlQVDBnYm5Wc2JDbGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlDY25PMXh1SUNBZ0lHbG1JQ2gwZVhCbGIyWWdhbk5MWlhrZ0lUMDlJQ2R2WW1wbFkzUW5LVnh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdVM1J5YVc1bktHcHpTMlY1S1R0Y2JpQWdJQ0JwWmlBb2FYTk9iMlJsS0d0bGVTa2dKaVlnWTNSNFB5NWtiMk1wSUh0Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnYzNSeVEzUjRJRDBnWTNKbFlYUmxVM1J5YVc1bmFXWjVRMjl1ZEdWNGRDaGpkSGd1Wkc5akxDQjdmU2s3WEc0Z0lDQWdJQ0FnSUhOMGNrTjBlQzVoYm1Ob2IzSnpJRDBnYm1WM0lGTmxkQ2dwTzF4dUlDQWdJQ0FnSUNCbWIzSWdLR052Ym5OMElHNXZaR1VnYjJZZ1kzUjRMbUZ1WTJodmNuTXVhMlY1Y3lncEtWeHVJQ0FnSUNBZ0lDQWdJQ0FnYzNSeVEzUjRMbUZ1WTJodmNuTXVZV1JrS0c1dlpHVXVZVzVqYUc5eUtUdGNiaUFnSUNBZ0lDQWdjM1J5UTNSNExtbHVSbXh2ZHlBOUlIUnlkV1U3WEc0Z0lDQWdJQ0FnSUhOMGNrTjBlQzVwYmxOMGNtbHVaMmxtZVV0bGVTQTlJSFJ5ZFdVN1hHNGdJQ0FnSUNBZ0lHTnZibk4wSUhOMGNrdGxlU0E5SUd0bGVTNTBiMU4wY21sdVp5aHpkSEpEZEhncE8xeHVJQ0FnSUNBZ0lDQnBaaUFvSVdOMGVDNXRZWEJMWlhsWFlYSnVaV1FwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJR3hsZENCcWMyOXVVM1J5SUQwZ1NsTlBUaTV6ZEhKcGJtZHBabmtvYzNSeVMyVjVLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2hxYzI5dVUzUnlMbXhsYm1kMGFDQStJRFF3S1Z4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdwemIyNVRkSElnUFNCcWMyOXVVM1J5TG5OMVluTjBjbWx1Wnlnd0xDQXpOaWtnS3lBbkxpNHVYQ0luTzF4dUlDQWdJQ0FnSUNBZ0lDQWdkMkZ5YmloamRIZ3VaRzlqTG05d2RHbHZibk11Ykc5blRHVjJaV3dzSUdCTFpYbHpJSGRwZEdnZ1kyOXNiR1ZqZEdsdmJpQjJZV3gxWlhNZ2QybHNiQ0JpWlNCemRISnBibWRwWm1sbFpDQmtkV1VnZEc4Z1NsTWdUMkpxWldOMElISmxjM1J5YVdOMGFXOXVjem9nSkh0cWMyOXVVM1J5ZlM0Z1UyVjBJRzFoY0VGelRXRndPaUIwY25WbElIUnZJSFZ6WlNCdlltcGxZM1FnYTJWNWN5NWdLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHTjBlQzV0WVhCTFpYbFhZWEp1WldRZ1BTQjBjblZsTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCemRISkxaWGs3WEc0Z0lDQWdmVnh1SUNBZ0lISmxkSFZ5YmlCS1UwOU9Mbk4wY21sdVoybG1lU2hxYzB0bGVTazdYRzU5WEc1Y2JtVjRjRzl5ZENCN0lHRmtaRkJoYVhKVWIwcFRUV0Z3SUgwN1hHNGlMQ0FpYVcxd2IzSjBJSHNnWTNKbFlYUmxUbTlrWlNCOUlHWnliMjBnSnk0dUwyUnZZeTlqY21WaGRHVk9iMlJsTG1wekp6dGNibWx0Y0c5eWRDQjdJSE4wY21sdVoybG1lVkJoYVhJZ2ZTQm1jbTl0SUNjdUxpOXpkSEpwYm1kcFpua3ZjM1J5YVc1bmFXWjVVR0ZwY2k1cWN5YzdYRzVwYlhCdmNuUWdleUJoWkdSUVlXbHlWRzlLVTAxaGNDQjlJR1p5YjIwZ0p5NHZZV1JrVUdGcGNsUnZTbE5OWVhBdWFuTW5PMXh1YVcxd2IzSjBJSHNnVGs5RVJWOVVXVkJGTENCUVFVbFNMQ0JwYzA1dlpHVWdmU0JtY205dElDY3VMMmxrWlc1MGFYUjVMbXB6Snp0Y2JseHVablZ1WTNScGIyNGdZM0psWVhSbFVHRnBjaWhyWlhrc0lIWmhiSFZsTENCamRIZ3BJSHRjYmlBZ0lDQmpiMjV6ZENCcklEMGdZM0psWVhSbFRtOWtaU2hyWlhrc0lIVnVaR1ZtYVc1bFpDd2dZM1I0S1R0Y2JpQWdJQ0JqYjI1emRDQjJJRDBnWTNKbFlYUmxUbTlrWlNoMllXeDFaU3dnZFc1a1pXWnBibVZrTENCamRIZ3BPMXh1SUNBZ0lISmxkSFZ5YmlCdVpYY2dVR0ZwY2lockxDQjJLVHRjYm4xY2JtTnNZWE56SUZCaGFYSWdlMXh1SUNBZ0lHTnZibk4wY25WamRHOXlLR3RsZVN3Z2RtRnNkV1VnUFNCdWRXeHNLU0I3WEc0Z0lDQWdJQ0FnSUU5aWFtVmpkQzVrWldacGJtVlFjbTl3WlhKMGVTaDBhR2x6TENCT1QwUkZYMVJaVUVVc0lIc2dkbUZzZFdVNklGQkJTVklnZlNrN1hHNGdJQ0FnSUNBZ0lIUm9hWE11YTJWNUlEMGdhMlY1TzF4dUlDQWdJQ0FnSUNCMGFHbHpMblpoYkhWbElEMGdkbUZzZFdVN1hHNGdJQ0FnZlZ4dUlDQWdJR05zYjI1bEtITmphR1Z0WVNrZ2UxeHVJQ0FnSUNBZ0lDQnNaWFFnZXlCclpYa3NJSFpoYkhWbElIMGdQU0IwYUdsek8xeHVJQ0FnSUNBZ0lDQnBaaUFvYVhOT2IyUmxLR3RsZVNrcFhHNGdJQ0FnSUNBZ0lDQWdJQ0JyWlhrZ1BTQnJaWGt1WTJ4dmJtVW9jMk5vWlcxaEtUdGNiaUFnSUNBZ0lDQWdhV1lnS0dselRtOWtaU2gyWVd4MVpTa3BYRzRnSUNBZ0lDQWdJQ0FnSUNCMllXeDFaU0E5SUhaaGJIVmxMbU5zYjI1bEtITmphR1Z0WVNrN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCdVpYY2dVR0ZwY2loclpYa3NJSFpoYkhWbEtUdGNiaUFnSUNCOVhHNGdJQ0FnZEc5S1UwOU9LRjhzSUdOMGVDa2dlMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQndZV2x5SUQwZ1kzUjRQeTV0WVhCQmMwMWhjQ0EvSUc1bGR5Qk5ZWEFvS1NBNklIdDlPMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdZV1JrVUdGcGNsUnZTbE5OWVhBb1kzUjRMQ0J3WVdseUxDQjBhR2x6S1R0Y2JpQWdJQ0I5WEc0Z0lDQWdkRzlUZEhKcGJtY29ZM1I0TENCdmJrTnZiVzFsYm5Rc0lHOXVRMmh2YlhCTFpXVndLU0I3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJqZEhnL0xtUnZZMXh1SUNBZ0lDQWdJQ0FnSUNBZ1B5QnpkSEpwYm1kcFpubFFZV2x5S0hSb2FYTXNJR04wZUN3Z2IyNURiMjF0Wlc1MExDQnZia05vYjIxd1MyVmxjQ2xjYmlBZ0lDQWdJQ0FnSUNBZ0lEb2dTbE5QVGk1emRISnBibWRwWm5rb2RHaHBjeWs3WEc0Z0lDQWdmVnh1ZlZ4dVhHNWxlSEJ2Y25RZ2V5QlFZV2x5TENCamNtVmhkR1ZRWVdseUlIMDdYRzRpTENBaWFXMXdiM0owSUhzZ2FYTk9iMlJsTENCcGMxQmhhWElnZlNCbWNtOXRJQ2N1TGk5dWIyUmxjeTlwWkdWdWRHbDBlUzVxY3ljN1hHNXBiWEJ2Y25RZ2V5QnpkSEpwYm1kcFpua2dmU0JtY205dElDY3VMM04wY21sdVoybG1lUzVxY3ljN1hHNXBiWEJ2Y25RZ2V5QnNhVzVsUTI5dGJXVnVkQ3dnYVc1a1pXNTBRMjl0YldWdWRDQjlJR1p5YjIwZ0p5NHZjM1J5YVc1bmFXWjVRMjl0YldWdWRDNXFjeWM3WEc1Y2JtWjFibU4wYVc5dUlITjBjbWx1WjJsbWVVTnZiR3hsWTNScGIyNG9ZMjlzYkdWamRHbHZiaXdnWTNSNExDQnZjSFJwYjI1ektTQjdYRzRnSUNBZ1kyOXVjM1FnWm14dmR5QTlJR04wZUM1cGJrWnNiM2NnUHo4Z1kyOXNiR1ZqZEdsdmJpNW1iRzkzTzF4dUlDQWdJR052Ym5OMElITjBjbWx1WjJsbWVTQTlJR1pzYjNjZ1B5QnpkSEpwYm1kcFpubEdiRzkzUTI5c2JHVmpkR2x2YmlBNklITjBjbWx1WjJsbWVVSnNiMk5yUTI5c2JHVmpkR2x2Ymp0Y2JpQWdJQ0J5WlhSMWNtNGdjM1J5YVc1bmFXWjVLR052Ykd4bFkzUnBiMjRzSUdOMGVDd2diM0IwYVc5dWN5azdYRzU5WEc1bWRXNWpkR2x2YmlCemRISnBibWRwWm5sQ2JHOWphME52Ykd4bFkzUnBiMjRvZXlCamIyMXRaVzUwTENCcGRHVnRjeUI5TENCamRIZ3NJSHNnWW14dlkydEpkR1Z0VUhKbFptbDRMQ0JtYkc5M1EyaGhjbk1zSUdsMFpXMUpibVJsYm5Rc0lHOXVRMmh2YlhCTFpXVndMQ0J2YmtOdmJXMWxiblFnZlNrZ2UxeHVJQ0FnSUdOdmJuTjBJSHNnYVc1a1pXNTBMQ0J2Y0hScGIyNXpPaUI3SUdOdmJXMWxiblJUZEhKcGJtY2dmU0I5SUQwZ1kzUjRPMXh1SUNBZ0lHTnZibk4wSUdsMFpXMURkSGdnUFNCUFltcGxZM1F1WVhOemFXZHVLSHQ5TENCamRIZ3NJSHNnYVc1a1pXNTBPaUJwZEdWdFNXNWtaVzUwTENCMGVYQmxPaUJ1ZFd4c0lIMHBPMXh1SUNBZ0lHeGxkQ0JqYUc5dGNFdGxaWEFnUFNCbVlXeHpaVHNnTHk4Z1pteGhaeUJtYjNJZ2RHaGxJSEJ5WldObFpHbHVaeUJ1YjJSbEozTWdjM1JoZEhWelhHNGdJQ0FnWTI5dWMzUWdiR2x1WlhNZ1BTQmJYVHRjYmlBZ0lDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJR2wwWlcxekxteGxibWQwYURzZ0t5dHBLU0I3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJR2wwWlcwZ1BTQnBkR1Z0YzF0cFhUdGNiaUFnSUNBZ0lDQWdiR1YwSUdOdmJXMWxiblFnUFNCdWRXeHNPMXh1SUNBZ0lDQWdJQ0JwWmlBb2FYTk9iMlJsS0dsMFpXMHBLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFvSVdOb2IyMXdTMlZsY0NBbUppQnBkR1Z0TG5Od1lXTmxRbVZtYjNKbEtWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHeHBibVZ6TG5CMWMyZ29KeWNwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdZV1JrUTI5dGJXVnVkRUpsWm05eVpTaGpkSGdzSUd4cGJtVnpMQ0JwZEdWdExtTnZiVzFsYm5SQ1pXWnZjbVVzSUdOb2IyMXdTMlZsY0NrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2FYUmxiUzVqYjIxdFpXNTBLVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR052YlcxbGJuUWdQU0JwZEdWdExtTnZiVzFsYm5RN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdaV3h6WlNCcFppQW9hWE5RWVdseUtHbDBaVzBwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JqYjI1emRDQnBheUE5SUdselRtOWtaU2hwZEdWdExtdGxlU2tnUHlCcGRHVnRMbXRsZVNBNklHNTFiR3c3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFvYVdzcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBaaUFvSVdOb2IyMXdTMlZsY0NBbUppQnBheTV6Y0dGalpVSmxabTl5WlNsY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdiR2x1WlhNdWNIVnphQ2duSnlrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1lXUmtRMjl0YldWdWRFSmxabTl5WlNoamRIZ3NJR3hwYm1WekxDQnBheTVqYjIxdFpXNTBRbVZtYjNKbExDQmphRzl0Y0V0bFpYQXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJR05vYjIxd1MyVmxjQ0E5SUdaaGJITmxPMXh1SUNBZ0lDQWdJQ0JzWlhRZ2MzUnlJRDBnYzNSeWFXNW5hV1o1S0dsMFpXMHNJR2wwWlcxRGRIZ3NJQ2dwSUQwK0lDaGpiMjF0Wlc1MElEMGdiblZzYkNrc0lDZ3BJRDArSUNoamFHOXRjRXRsWlhBZ1BTQjBjblZsS1NrN1hHNGdJQ0FnSUNBZ0lHbG1JQ2hqYjIxdFpXNTBLVnh1SUNBZ0lDQWdJQ0FnSUNBZ2MzUnlJQ3M5SUd4cGJtVkRiMjF0Wlc1MEtITjBjaXdnYVhSbGJVbHVaR1Z1ZEN3Z1kyOXRiV1Z1ZEZOMGNtbHVaeWhqYjIxdFpXNTBLU2s3WEc0Z0lDQWdJQ0FnSUdsbUlDaGphRzl0Y0V0bFpYQWdKaVlnWTI5dGJXVnVkQ2xjYmlBZ0lDQWdJQ0FnSUNBZ0lHTm9iMjF3UzJWbGNDQTlJR1poYkhObE8xeHVJQ0FnSUNBZ0lDQnNhVzVsY3k1d2RYTm9LR0pzYjJOclNYUmxiVkJ5WldacGVDQXJJSE4wY2lrN1hHNGdJQ0FnZlZ4dUlDQWdJR3hsZENCemRISTdYRzRnSUNBZ2FXWWdLR3hwYm1WekxteGxibWQwYUNBOVBUMGdNQ2tnZTF4dUlDQWdJQ0FnSUNCemRISWdQU0JtYkc5M1EyaGhjbk11YzNSaGNuUWdLeUJtYkc5M1EyaGhjbk11Wlc1a08xeHVJQ0FnSUgxY2JpQWdJQ0JsYkhObElIdGNiaUFnSUNBZ0lDQWdjM1J5SUQwZ2JHbHVaWE5iTUYwN1hHNGdJQ0FnSUNBZ0lHWnZjaUFvYkdWMElHa2dQU0F4T3lCcElEd2diR2x1WlhNdWJHVnVaM1JvT3lBcksya3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHTnZibk4wSUd4cGJtVWdQU0JzYVc1bGMxdHBYVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lITjBjaUFyUFNCc2FXNWxJRDhnWUZ4Y2JpUjdhVzVrWlc1MGZTUjdiR2x1WlgxZ0lEb2dKMXhjYmljN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJQ0FnYVdZZ0tHTnZiVzFsYm5RcElIdGNiaUFnSUNBZ0lDQWdjM1J5SUNzOUlDZGNYRzRuSUNzZ2FXNWtaVzUwUTI5dGJXVnVkQ2hqYjIxdFpXNTBVM1J5YVc1bktHTnZiVzFsYm5RcExDQnBibVJsYm5RcE8xeHVJQ0FnSUNBZ0lDQnBaaUFvYjI1RGIyMXRaVzUwS1Z4dUlDQWdJQ0FnSUNBZ0lDQWdiMjVEYjIxdFpXNTBLQ2s3WEc0Z0lDQWdmVnh1SUNBZ0lHVnNjMlVnYVdZZ0tHTm9iMjF3UzJWbGNDQW1KaUJ2YmtOb2IyMXdTMlZsY0NsY2JpQWdJQ0FnSUNBZ2IyNURhRzl0Y0V0bFpYQW9LVHRjYmlBZ0lDQnlaWFIxY200Z2MzUnlPMXh1ZlZ4dVpuVnVZM1JwYjI0Z2MzUnlhVzVuYVdaNVJteHZkME52Ykd4bFkzUnBiMjRvZXlCcGRHVnRjeUI5TENCamRIZ3NJSHNnWm14dmQwTm9ZWEp6TENCcGRHVnRTVzVrWlc1MElIMHBJSHRjYmlBZ0lDQmpiMjV6ZENCN0lHbHVaR1Z1ZEN3Z2FXNWtaVzUwVTNSbGNDd2dabXh2ZDBOdmJHeGxZM1JwYjI1UVlXUmthVzVuT2lCbVkxQmhaR1JwYm1jc0lHOXdkR2x2Ym5NNklIc2dZMjl0YldWdWRGTjBjbWx1WnlCOUlIMGdQU0JqZEhnN1hHNGdJQ0FnYVhSbGJVbHVaR1Z1ZENBclBTQnBibVJsYm5SVGRHVndPMXh1SUNBZ0lHTnZibk4wSUdsMFpXMURkSGdnUFNCUFltcGxZM1F1WVhOemFXZHVLSHQ5TENCamRIZ3NJSHRjYmlBZ0lDQWdJQ0FnYVc1a1pXNTBPaUJwZEdWdFNXNWtaVzUwTEZ4dUlDQWdJQ0FnSUNCcGJrWnNiM2M2SUhSeWRXVXNYRzRnSUNBZ0lDQWdJSFI1Y0dVNklHNTFiR3hjYmlBZ0lDQjlLVHRjYmlBZ0lDQnNaWFFnY21WeFRtVjNiR2x1WlNBOUlHWmhiSE5sTzF4dUlDQWdJR3hsZENCc2FXNWxjMEYwVm1Gc2RXVWdQU0F3TzF4dUlDQWdJR052Ym5OMElHeHBibVZ6SUQwZ1cxMDdYRzRnSUNBZ1ptOXlJQ2hzWlhRZ2FTQTlJREE3SUdrZ1BDQnBkR1Z0Y3k1c1pXNW5kR2c3SUNzcmFTa2dlMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQnBkR1Z0SUQwZ2FYUmxiWE5iYVYwN1hHNGdJQ0FnSUNBZ0lHeGxkQ0JqYjIxdFpXNTBJRDBnYm5Wc2JEdGNiaUFnSUNBZ0lDQWdhV1lnS0dselRtOWtaU2hwZEdWdEtTa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLR2wwWlcwdWMzQmhZMlZDWldadmNtVXBYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdiR2x1WlhNdWNIVnphQ2duSnlrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JoWkdSRGIyMXRaVzUwUW1WbWIzSmxLR04wZUN3Z2JHbHVaWE1zSUdsMFpXMHVZMjl0YldWdWRFSmxabTl5WlN3Z1ptRnNjMlVwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lnS0dsMFpXMHVZMjl0YldWdWRDbGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmpiMjF0Wlc1MElEMGdhWFJsYlM1amIyMXRaVzUwTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lHVnNjMlVnYVdZZ0tHbHpVR0ZwY2locGRHVnRLU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ2FXc2dQU0JwYzA1dlpHVW9hWFJsYlM1clpYa3BJRDhnYVhSbGJTNXJaWGtnT2lCdWRXeHNPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLR2xyS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLR2xyTG5Od1lXTmxRbVZtYjNKbEtWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JzYVc1bGN5NXdkWE5vS0NjbktUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmhaR1JEYjIxdFpXNTBRbVZtYjNKbEtHTjBlQ3dnYkdsdVpYTXNJR2xyTG1OdmJXMWxiblJDWldadmNtVXNJR1poYkhObEtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBaaUFvYVdzdVkyOXRiV1Z1ZENsY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVZ4VG1WM2JHbHVaU0E5SUhSeWRXVTdYRzRnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdJQ0JqYjI1emRDQnBkaUE5SUdselRtOWtaU2hwZEdWdExuWmhiSFZsS1NBL0lHbDBaVzB1ZG1Gc2RXVWdPaUJ1ZFd4c08xeHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tHbDJLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tHbDJMbU52YlcxbGJuUXBYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdOdmJXMWxiblFnUFNCcGRpNWpiMjF0Wlc1ME8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2hwZGk1amIyMXRaVzUwUW1WbWIzSmxLVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYRk9aWGRzYVc1bElEMGdkSEoxWlR0Y2JpQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNBZ0lHVnNjMlVnYVdZZ0tHbDBaVzB1ZG1Gc2RXVWdQVDBnYm5Wc2JDQW1KaUJwYXo4dVkyOXRiV1Z1ZENrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHTnZiVzFsYm5RZ1BTQnBheTVqYjIxdFpXNTBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJR2xtSUNoamIyMXRaVzUwS1Z4dUlDQWdJQ0FnSUNBZ0lDQWdjbVZ4VG1WM2JHbHVaU0E5SUhSeWRXVTdYRzRnSUNBZ0lDQWdJR3hsZENCemRISWdQU0J6ZEhKcGJtZHBabmtvYVhSbGJTd2dhWFJsYlVOMGVDd2dLQ2tnUFQ0Z0tHTnZiVzFsYm5RZ1BTQnVkV3hzS1NrN1hHNGdJQ0FnSUNBZ0lHbG1JQ2hwSUR3Z2FYUmxiWE11YkdWdVozUm9JQzBnTVNsY2JpQWdJQ0FnSUNBZ0lDQWdJSE4wY2lBclBTQW5MQ2M3WEc0Z0lDQWdJQ0FnSUdsbUlDaGpiMjF0Wlc1MEtWeHVJQ0FnSUNBZ0lDQWdJQ0FnYzNSeUlDczlJR3hwYm1WRGIyMXRaVzUwS0hOMGNpd2dhWFJsYlVsdVpHVnVkQ3dnWTI5dGJXVnVkRk4wY21sdVp5aGpiMjF0Wlc1MEtTazdYRzRnSUNBZ0lDQWdJR2xtSUNnaGNtVnhUbVYzYkdsdVpTQW1KaUFvYkdsdVpYTXViR1Z1WjNSb0lENGdiR2x1WlhOQmRGWmhiSFZsSUh4OElITjBjaTVwYm1Oc2RXUmxjeWduWEZ4dUp5a3BLVnh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVnhUbVYzYkdsdVpTQTlJSFJ5ZFdVN1hHNGdJQ0FnSUNBZ0lHeHBibVZ6TG5CMWMyZ29jM1J5S1R0Y2JpQWdJQ0FnSUNBZ2JHbHVaWE5CZEZaaGJIVmxJRDBnYkdsdVpYTXViR1Z1WjNSb08xeHVJQ0FnSUgxY2JpQWdJQ0JqYjI1emRDQjdJSE4wWVhKMExDQmxibVFnZlNBOUlHWnNiM2REYUdGeWN6dGNiaUFnSUNCcFppQW9iR2x1WlhNdWJHVnVaM1JvSUQwOVBTQXdLU0I3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJ6ZEdGeWRDQXJJR1Z1WkR0Y2JpQWdJQ0I5WEc0Z0lDQWdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lHbG1JQ2doY21WeFRtVjNiR2x1WlNrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnWTI5dWMzUWdiR1Z1SUQwZ2JHbHVaWE11Y21Wa2RXTmxLQ2h6ZFcwc0lHeHBibVVwSUQwK0lITjFiU0FySUd4cGJtVXViR1Z1WjNSb0lDc2dNaXdnTWlrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J5WlhGT1pYZHNhVzVsSUQwZ1kzUjRMbTl3ZEdsdmJuTXViR2x1WlZkcFpIUm9JRDRnTUNBbUppQnNaVzRnUGlCamRIZ3ViM0IwYVc5dWN5NXNhVzVsVjJsa2RHZzdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnYVdZZ0tISmxjVTVsZDJ4cGJtVXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHeGxkQ0J6ZEhJZ1BTQnpkR0Z5ZER0Y2JpQWdJQ0FnSUNBZ0lDQWdJR1p2Y2lBb1kyOXVjM1FnYkdsdVpTQnZaaUJzYVc1bGN5bGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnpkSElnS3owZ2JHbHVaU0EvSUdCY1hHNGtlMmx1WkdWdWRGTjBaWEI5Skh0cGJtUmxiblI5Skh0c2FXNWxmV0FnT2lBblhGeHVKenRjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCZ0pIdHpkSEo5WEZ4dUpIdHBibVJsYm5SOUpIdGxibVI5WUR0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQmdKSHR6ZEdGeWRIMGtlMlpqVUdGa1pHbHVaMzBrZTJ4cGJtVnpMbXB2YVc0b0p5QW5LWDBrZTJaalVHRmtaR2x1WjMwa2UyVnVaSDFnTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dWZWeHVablZ1WTNScGIyNGdZV1JrUTI5dGJXVnVkRUpsWm05eVpTaDdJR2x1WkdWdWRDd2diM0IwYVc5dWN6b2dleUJqYjIxdFpXNTBVM1J5YVc1bklIMGdmU3dnYkdsdVpYTXNJR052YlcxbGJuUXNJR05vYjIxd1MyVmxjQ2tnZTF4dUlDQWdJR2xtSUNoamIyMXRaVzUwSUNZbUlHTm9iMjF3UzJWbGNDbGNiaUFnSUNBZ0lDQWdZMjl0YldWdWRDQTlJR052YlcxbGJuUXVjbVZ3YkdGalpTZ3ZYbHhjYmlzdkxDQW5KeWs3WEc0Z0lDQWdhV1lnS0dOdmJXMWxiblFwSUh0Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnYVdNZ1BTQnBibVJsYm5SRGIyMXRaVzUwS0dOdmJXMWxiblJUZEhKcGJtY29ZMjl0YldWdWRDa3NJR2x1WkdWdWRDazdYRzRnSUNBZ0lDQWdJR3hwYm1WekxuQjFjMmdvYVdNdWRISnBiVk4wWVhKMEtDa3BPeUF2THlCQmRtOXBaQ0JrYjNWaWJHVWdhVzVrWlc1MElHOXVJR1pwY25OMElHeHBibVZjYmlBZ0lDQjlYRzU5WEc1Y2JtVjRjRzl5ZENCN0lITjBjbWx1WjJsbWVVTnZiR3hsWTNScGIyNGdmVHRjYmlJc0lDSnBiWEJ2Y25RZ2V5QnpkSEpwYm1kcFpubERiMnhzWldOMGFXOXVJSDBnWm5KdmJTQW5MaTR2YzNSeWFXNW5hV1o1TDNOMGNtbHVaMmxtZVVOdmJHeGxZM1JwYjI0dWFuTW5PMXh1YVcxd2IzSjBJSHNnWVdSa1VHRnBjbFJ2U2xOTllYQWdmU0JtY205dElDY3VMMkZrWkZCaGFYSlViMHBUVFdGd0xtcHpKenRjYm1sdGNHOXlkQ0I3SUVOdmJHeGxZM1JwYjI0Z2ZTQm1jbTl0SUNjdUwwTnZiR3hsWTNScGIyNHVhbk1uTzF4dWFXMXdiM0owSUhzZ2FYTlFZV2x5TENCcGMxTmpZV3hoY2l3Z1RVRlFJSDBnWm5KdmJTQW5MaTlwWkdWdWRHbDBlUzVxY3ljN1hHNXBiWEJ2Y25RZ2V5QlFZV2x5TENCamNtVmhkR1ZRWVdseUlIMGdabkp2YlNBbkxpOVFZV2x5TG1wekp6dGNibWx0Y0c5eWRDQjdJR2x6VTJOaGJHRnlWbUZzZFdVZ2ZTQm1jbTl0SUNjdUwxTmpZV3hoY2k1cWN5YzdYRzVjYm1aMWJtTjBhVzl1SUdacGJtUlFZV2x5S0dsMFpXMXpMQ0JyWlhrcElIdGNiaUFnSUNCamIyNXpkQ0JySUQwZ2FYTlRZMkZzWVhJb2EyVjVLU0EvSUd0bGVTNTJZV3gxWlNBNklHdGxlVHRjYmlBZ0lDQm1iM0lnS0dOdmJuTjBJR2wwSUc5bUlHbDBaVzF6S1NCN1hHNGdJQ0FnSUNBZ0lHbG1JQ2hwYzFCaGFYSW9hWFFwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2FYUXVhMlY1SUQwOVBTQnJaWGtnZkh3Z2FYUXVhMlY1SUQwOVBTQnJLVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQnBkRHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2hwYzFOallXeGhjaWhwZEM1clpYa3BJQ1ltSUdsMExtdGxlUzUyWVd4MVpTQTlQVDBnYXlsY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnYVhRN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJSFZ1WkdWbWFXNWxaRHRjYm4xY2JtTnNZWE56SUZsQlRVeE5ZWEFnWlhoMFpXNWtjeUJEYjJ4c1pXTjBhVzl1SUh0Y2JpQWdJQ0J6ZEdGMGFXTWdaMlYwSUhSaFowNWhiV1VvS1NCN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlBbmRHRm5PbmxoYld3dWIzSm5MREl3TURJNmJXRndKenRjYmlBZ0lDQjlYRzRnSUNBZ1kyOXVjM1J5ZFdOMGIzSW9jMk5vWlcxaEtTQjdYRzRnSUNBZ0lDQWdJSE4xY0dWeUtFMUJVQ3dnYzJOb1pXMWhLVHRjYmlBZ0lDQWdJQ0FnZEdocGN5NXBkR1Z0Y3lBOUlGdGRPMXh1SUNBZ0lIMWNiaUFnSUNBdktpcGNiaUFnSUNBZ0tpQkJJR2RsYm1WeWFXTWdZMjlzYkdWamRHbHZiaUJ3WVhKemFXNW5JRzFsZEdodlpDQjBhR0YwSUdOaGJpQmlaU0JsZUhSbGJtUmxaRnh1SUNBZ0lDQXFJSFJ2SUc5MGFHVnlJRzV2WkdVZ1kyeGhjM05sY3lCMGFHRjBJR2x1YUdWeWFYUWdabkp2YlNCWlFVMU1UV0Z3WEc0Z0lDQWdJQ292WEc0Z0lDQWdjM1JoZEdsaklHWnliMjBvYzJOb1pXMWhMQ0J2WW1vc0lHTjBlQ2tnZTF4dUlDQWdJQ0FnSUNCamIyNXpkQ0I3SUd0bFpYQlZibVJsWm1sdVpXUXNJSEpsY0d4aFkyVnlJSDBnUFNCamRIZzdYRzRnSUNBZ0lDQWdJR052Ym5OMElHMWhjQ0E5SUc1bGR5QjBhR2x6S0hOamFHVnRZU2s3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJR0ZrWkNBOUlDaHJaWGtzSUhaaGJIVmxLU0E5UGlCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2RIbHdaVzltSUhKbGNHeGhZMlZ5SUQwOVBTQW5ablZ1WTNScGIyNG5LVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSFpoYkhWbElEMGdjbVZ3YkdGalpYSXVZMkZzYkNodlltb3NJR3RsZVN3Z2RtRnNkV1VwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdaV3h6WlNCcFppQW9RWEp5WVhrdWFYTkJjbkpoZVNoeVpYQnNZV05sY2lrZ0ppWWdJWEpsY0d4aFkyVnlMbWx1WTJ4MVpHVnpLR3RsZVNrcFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1TzF4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lnS0haaGJIVmxJQ0U5UFNCMWJtUmxabWx1WldRZ2ZId2dhMlZsY0ZWdVpHVm1hVzVsWkNsY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCdFlYQXVhWFJsYlhNdWNIVnphQ2hqY21WaGRHVlFZV2x5S0d0bGVTd2dkbUZzZFdVc0lHTjBlQ2twTzF4dUlDQWdJQ0FnSUNCOU8xeHVJQ0FnSUNBZ0lDQnBaaUFvYjJKcUlHbHVjM1JoYm1ObGIyWWdUV0Z3S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JtYjNJZ0tHTnZibk4wSUZ0clpYa3NJSFpoYkhWbFhTQnZaaUJ2WW1vcFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1lXUmtLR3RsZVN3Z2RtRnNkV1VwTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lHVnNjMlVnYVdZZ0tHOWlhaUFtSmlCMGVYQmxiMllnYjJKcUlEMDlQU0FuYjJKcVpXTjBKeWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdabTl5SUNoamIyNXpkQ0JyWlhrZ2IyWWdUMkpxWldOMExtdGxlWE1vYjJKcUtTbGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmhaR1FvYTJWNUxDQnZZbXBiYTJWNVhTazdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnYVdZZ0tIUjVjR1Z2WmlCelkyaGxiV0V1YzI5eWRFMWhjRVZ1ZEhKcFpYTWdQVDA5SUNkbWRXNWpkR2x2YmljcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUcxaGNDNXBkR1Z0Y3k1emIzSjBLSE5qYUdWdFlTNXpiM0owVFdGd1JXNTBjbWxsY3lrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlHMWhjRHRjYmlBZ0lDQjlYRzRnSUNBZ0x5b3FYRzRnSUNBZ0lDb2dRV1JrY3lCaElIWmhiSFZsSUhSdklIUm9aU0JqYjJ4c1pXTjBhVzl1TGx4dUlDQWdJQ0FxWEc0Z0lDQWdJQ29nUUhCaGNtRnRJRzkyWlhKM2NtbDBaU0F0SUVsbUlHNXZkQ0J6WlhRZ1lIUnlkV1ZnTENCMWMybHVaeUJoSUd0bGVTQjBhR0YwSUdseklHRnNjbVZoWkhrZ2FXNGdkR2hsWEc0Z0lDQWdJQ29nSUNCamIyeHNaV04wYVc5dUlIZHBiR3dnZEdoeWIzY3VJRTkwYUdWeWQybHpaU3dnYjNabGNuZHlhWFJsY3lCMGFHVWdjSEpsZG1sdmRYTWdkbUZzZFdVdVhHNGdJQ0FnSUNvdlhHNGdJQ0FnWVdSa0tIQmhhWElzSUc5MlpYSjNjbWwwWlNrZ2UxeHVJQ0FnSUNBZ0lDQnNaWFFnWDNCaGFYSTdYRzRnSUNBZ0lDQWdJR2xtSUNocGMxQmhhWElvY0dGcGNpa3BYRzRnSUNBZ0lDQWdJQ0FnSUNCZmNHRnBjaUE5SUhCaGFYSTdYRzRnSUNBZ0lDQWdJR1ZzYzJVZ2FXWWdLQ0Z3WVdseUlIeDhJSFI1Y0dWdlppQndZV2x5SUNFOVBTQW5iMkpxWldOMEp5QjhmQ0FoS0NkclpYa25JR2x1SUhCaGFYSXBLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQXZMeUJKYmlCVWVYQmxVMk55YVhCMExDQjBhR2x6SUc1bGRtVnlJR2hoY0hCbGJuTXVYRzRnSUNBZ0lDQWdJQ0FnSUNCZmNHRnBjaUE5SUc1bGR5QlFZV2x5S0hCaGFYSXNJSEJoYVhJL0xuWmhiSFZsS1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQmxiSE5sWEc0Z0lDQWdJQ0FnSUNBZ0lDQmZjR0ZwY2lBOUlHNWxkeUJRWVdseUtIQmhhWEl1YTJWNUxDQndZV2x5TG5aaGJIVmxLVHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdjSEpsZGlBOUlHWnBibVJRWVdseUtIUm9hWE11YVhSbGJYTXNJRjl3WVdseUxtdGxlU2s3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJSE52Y25SRmJuUnlhV1Z6SUQwZ2RHaHBjeTV6WTJobGJXRS9Mbk52Y25STllYQkZiblJ5YVdWek8xeHVJQ0FnSUNBZ0lDQnBaaUFvY0hKbGRpa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLQ0Z2ZG1WeWQzSnBkR1VwWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZEdoeWIzY2dibVYzSUVWeWNtOXlLR0JMWlhrZ0pIdGZjR0ZwY2k1clpYbDlJR0ZzY21WaFpIa2djMlYwWUNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0F2THlCR2IzSWdjMk5oYkdGeWN5d2dhMlZsY0NCMGFHVWdiMnhrSUc1dlpHVWdKaUJwZEhNZ1kyOXRiV1Z1ZEhNZ1lXNWtJR0Z1WTJodmNuTmNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDaHBjMU5qWVd4aGNpaHdjbVYyTG5aaGJIVmxLU0FtSmlCcGMxTmpZV3hoY2xaaGJIVmxLRjl3WVdseUxuWmhiSFZsS1NsY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCd2NtVjJMblpoYkhWbExuWmhiSFZsSUQwZ1gzQmhhWEl1ZG1Gc2RXVTdYRzRnSUNBZ0lDQWdJQ0FnSUNCbGJITmxYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjSEpsZGk1MllXeDFaU0E5SUY5d1lXbHlMblpoYkhWbE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJR1ZzYzJVZ2FXWWdLSE52Y25SRmJuUnlhV1Z6S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JqYjI1emRDQnBJRDBnZEdocGN5NXBkR1Z0Y3k1bWFXNWtTVzVrWlhnb2FYUmxiU0E5UGlCemIzSjBSVzUwY21sbGN5aGZjR0ZwY2l3Z2FYUmxiU2tnUENBd0tUdGNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDaHBJRDA5UFNBdE1TbGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjBhR2x6TG1sMFpXMXpMbkIxYzJnb1gzQmhhWElwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdaV3h6WlZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhSb2FYTXVhWFJsYlhNdWMzQnNhV05sS0drc0lEQXNJRjl3WVdseUtUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0JsYkhObElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUhSb2FYTXVhWFJsYlhNdWNIVnphQ2hmY0dGcGNpazdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQjlYRzRnSUNBZ1pHVnNaWFJsS0d0bGVTa2dlMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQnBkQ0E5SUdacGJtUlFZV2x5S0hSb2FYTXVhWFJsYlhNc0lHdGxlU2s3WEc0Z0lDQWdJQ0FnSUdsbUlDZ2hhWFFwWEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z1ptRnNjMlU3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJR1JsYkNBOUlIUm9hWE11YVhSbGJYTXVjM0JzYVdObEtIUm9hWE11YVhSbGJYTXVhVzVrWlhoUFppaHBkQ2tzSURFcE8xeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z1pHVnNMbXhsYm1kMGFDQStJREE3WEc0Z0lDQWdmVnh1SUNBZ0lHZGxkQ2hyWlhrc0lHdGxaWEJUWTJGc1lYSXBJSHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdhWFFnUFNCbWFXNWtVR0ZwY2loMGFHbHpMbWwwWlcxekxDQnJaWGtwTzF4dUlDQWdJQ0FnSUNCamIyNXpkQ0J1YjJSbElEMGdhWFEvTG5aaGJIVmxPMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdLQ0ZyWldWd1UyTmhiR0Z5SUNZbUlHbHpVMk5oYkdGeUtHNXZaR1VwSUQ4Z2JtOWtaUzUyWVd4MVpTQTZJRzV2WkdVcElEOC9JSFZ1WkdWbWFXNWxaRHRjYmlBZ0lDQjlYRzRnSUNBZ2FHRnpLR3RsZVNrZ2UxeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z0lTRm1hVzVrVUdGcGNpaDBhR2x6TG1sMFpXMXpMQ0JyWlhrcE8xeHVJQ0FnSUgxY2JpQWdJQ0J6WlhRb2EyVjVMQ0IyWVd4MVpTa2dlMXh1SUNBZ0lDQWdJQ0IwYUdsekxtRmtaQ2h1WlhjZ1VHRnBjaWhyWlhrc0lIWmhiSFZsS1N3Z2RISjFaU2s3WEc0Z0lDQWdmVnh1SUNBZ0lDOHFLbHh1SUNBZ0lDQXFJRUJ3WVhKaGJTQmpkSGdnTFNCRGIyNTJaWEp6YVc5dUlHTnZiblJsZUhRc0lHOXlhV2RwYm1Gc2JIa2djMlYwSUdsdUlFUnZZM1Z0Wlc1MEkzUnZTbE1vS1Z4dUlDQWdJQ0FxSUVCd1lYSmhiU0I3UTJ4aGMzTjlJRlI1Y0dVZ0xTQkpaaUJ6WlhRc0lHWnZjbU5sY3lCMGFHVWdjbVYwZFhKdVpXUWdZMjlzYkdWamRHbHZiaUIwZVhCbFhHNGdJQ0FnSUNvZ1FISmxkSFZ5Ym5NZ1NXNXpkR0Z1WTJVZ2IyWWdWSGx3WlN3Z1RXRndMQ0J2Y2lCUFltcGxZM1JjYmlBZ0lDQWdLaTljYmlBZ0lDQjBiMHBUVDA0b1h5d2dZM1I0TENCVWVYQmxLU0I3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJRzFoY0NBOUlGUjVjR1VnUHlCdVpYY2dWSGx3WlNncElEb2dZM1I0UHk1dFlYQkJjMDFoY0NBL0lHNWxkeUJOWVhBb0tTQTZJSHQ5TzF4dUlDQWdJQ0FnSUNCcFppQW9ZM1I0UHk1dmJrTnlaV0YwWlNsY2JpQWdJQ0FnSUNBZ0lDQWdJR04wZUM1dmJrTnlaV0YwWlNodFlYQXBPMXh1SUNBZ0lDQWdJQ0JtYjNJZ0tHTnZibk4wSUdsMFpXMGdiMllnZEdocGN5NXBkR1Z0Y3lsY2JpQWdJQ0FnSUNBZ0lDQWdJR0ZrWkZCaGFYSlViMHBUVFdGd0tHTjBlQ3dnYldGd0xDQnBkR1Z0S1R0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUcxaGNEdGNiaUFnSUNCOVhHNGdJQ0FnZEc5VGRISnBibWNvWTNSNExDQnZia052YlcxbGJuUXNJRzl1UTJodmJYQkxaV1Z3S1NCN1hHNGdJQ0FnSUNBZ0lHbG1JQ2doWTNSNEtWeHVJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJRXBUVDA0dWMzUnlhVzVuYVdaNUtIUm9hWE1wTzF4dUlDQWdJQ0FnSUNCbWIzSWdLR052Ym5OMElHbDBaVzBnYjJZZ2RHaHBjeTVwZEdWdGN5a2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLQ0ZwYzFCaGFYSW9hWFJsYlNrcFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RHaHliM2NnYm1WM0lFVnljbTl5S0dCTllYQWdhWFJsYlhNZ2JYVnpkQ0JoYkd3Z1ltVWdjR0ZwY25NN0lHWnZkVzVrSUNSN1NsTlBUaTV6ZEhKcGJtZHBabmtvYVhSbGJTbDlJR2x1YzNSbFlXUmdLVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCcFppQW9JV04wZUM1aGJHeE9kV3hzVm1Gc2RXVnpJQ1ltSUhSb2FYTXVhR0Z6UVd4c1RuVnNiRlpoYkhWbGN5aG1ZV3h6WlNrcFhHNGdJQ0FnSUNBZ0lDQWdJQ0JqZEhnZ1BTQlBZbXBsWTNRdVlYTnphV2R1S0h0OUxDQmpkSGdzSUhzZ1lXeHNUblZzYkZaaGJIVmxjem9nZEhKMVpTQjlLVHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJSE4wY21sdVoybG1lVU52Ykd4bFkzUnBiMjRvZEdocGN5d2dZM1I0TENCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JpYkc5amEwbDBaVzFRY21WbWFYZzZJQ2NuTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdabXh2ZDBOb1lYSnpPaUI3SUhOMFlYSjBPaUFuZXljc0lHVnVaRG9nSjMwbklIMHNYRzRnSUNBZ0lDQWdJQ0FnSUNCcGRHVnRTVzVrWlc1ME9pQmpkSGd1YVc1a1pXNTBJSHg4SUNjbkxGeHVJQ0FnSUNBZ0lDQWdJQ0FnYjI1RGFHOXRjRXRsWlhBc1hHNGdJQ0FnSUNBZ0lDQWdJQ0J2YmtOdmJXMWxiblJjYmlBZ0lDQWdJQ0FnZlNrN1hHNGdJQ0FnZlZ4dWZWeHVYRzVsZUhCdmNuUWdleUJaUVUxTVRXRndMQ0JtYVc1a1VHRnBjaUI5TzF4dUlpd2dJbWx0Y0c5eWRDQjdJR2x6VFdGd0lIMGdabkp2YlNBbkxpNHZMaTR2Ym05a1pYTXZhV1JsYm5ScGRIa3Vhbk1uTzF4dWFXMXdiM0owSUhzZ1dVRk5URTFoY0NCOUlHWnliMjBnSnk0dUx5NHVMMjV2WkdWekwxbEJUVXhOWVhBdWFuTW5PMXh1WEc1amIyNXpkQ0J0WVhBZ1BTQjdYRzRnSUNBZ1kyOXNiR1ZqZEdsdmJqb2dKMjFoY0Njc1hHNGdJQ0FnWkdWbVlYVnNkRG9nZEhKMVpTeGNiaUFnSUNCdWIyUmxRMnhoYzNNNklGbEJUVXhOWVhBc1hHNGdJQ0FnZEdGbk9pQW5kR0ZuT25saGJXd3ViM0puTERJd01ESTZiV0Z3Snl4Y2JpQWdJQ0J5WlhOdmJIWmxLRzFoY0N3Z2IyNUZjbkp2Y2lrZ2UxeHVJQ0FnSUNBZ0lDQnBaaUFvSVdselRXRndLRzFoY0NrcFhHNGdJQ0FnSUNBZ0lDQWdJQ0J2YmtWeWNtOXlLQ2RGZUhCbFkzUmxaQ0JoSUcxaGNIQnBibWNnWm05eUlIUm9hWE1nZEdGbkp5azdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQnRZWEE3WEc0Z0lDQWdmU3hjYmlBZ0lDQmpjbVZoZEdWT2IyUmxPaUFvYzJOb1pXMWhMQ0J2WW1vc0lHTjBlQ2tnUFQ0Z1dVRk5URTFoY0M1bWNtOXRLSE5qYUdWdFlTd2diMkpxTENCamRIZ3BYRzU5TzF4dVhHNWxlSEJ2Y25RZ2V5QnRZWEFnZlR0Y2JpSXNJQ0pwYlhCdmNuUWdleUJqY21WaGRHVk9iMlJsSUgwZ1puSnZiU0FuTGk0dlpHOWpMMk55WldGMFpVNXZaR1V1YW5Nbk8xeHVhVzF3YjNKMElIc2djM1J5YVc1bmFXWjVRMjlzYkdWamRHbHZiaUI5SUdaeWIyMGdKeTR1TDNOMGNtbHVaMmxtZVM5emRISnBibWRwWm5sRGIyeHNaV04wYVc5dUxtcHpKenRjYm1sdGNHOXlkQ0I3SUVOdmJHeGxZM1JwYjI0Z2ZTQm1jbTl0SUNjdUwwTnZiR3hsWTNScGIyNHVhbk1uTzF4dWFXMXdiM0owSUhzZ1UwVlJMQ0JwYzFOallXeGhjaUI5SUdaeWIyMGdKeTR2YVdSbGJuUnBkSGt1YW5Nbk8xeHVhVzF3YjNKMElIc2dhWE5UWTJGc1lYSldZV3gxWlNCOUlHWnliMjBnSnk0dlUyTmhiR0Z5TG1wekp6dGNibWx0Y0c5eWRDQjdJSFJ2U2xNZ2ZTQm1jbTl0SUNjdUwzUnZTbE11YW5Nbk8xeHVYRzVqYkdGemN5QlpRVTFNVTJWeElHVjRkR1Z1WkhNZ1EyOXNiR1ZqZEdsdmJpQjdYRzRnSUNBZ2MzUmhkR2xqSUdkbGRDQjBZV2RPWVcxbEtDa2dlMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdKM1JoWnpwNVlXMXNMbTl5Wnl3eU1EQXlPbk5sY1NjN1hHNGdJQ0FnZlZ4dUlDQWdJR052Ym5OMGNuVmpkRzl5S0hOamFHVnRZU2tnZTF4dUlDQWdJQ0FnSUNCemRYQmxjaWhUUlZFc0lITmphR1Z0WVNrN1hHNGdJQ0FnSUNBZ0lIUm9hWE11YVhSbGJYTWdQU0JiWFR0Y2JpQWdJQ0I5WEc0Z0lDQWdZV1JrS0haaGJIVmxLU0I3WEc0Z0lDQWdJQ0FnSUhSb2FYTXVhWFJsYlhNdWNIVnphQ2gyWVd4MVpTazdYRzRnSUNBZ2ZWeHVJQ0FnSUM4cUtseHVJQ0FnSUNBcUlGSmxiVzkyWlhNZ1lTQjJZV3gxWlNCbWNtOXRJSFJvWlNCamIyeHNaV04wYVc5dUxseHVJQ0FnSUNBcVhHNGdJQ0FnSUNvZ1lHdGxlV0FnYlhWemRDQmpiMjUwWVdsdUlHRWdjbVZ3Y21WelpXNTBZWFJwYjI0Z2IyWWdZVzRnYVc1MFpXZGxjaUJtYjNJZ2RHaHBjeUIwYnlCemRXTmpaV1ZrTGx4dUlDQWdJQ0FxSUVsMElHMWhlU0JpWlNCM2NtRndjR1ZrSUdsdUlHRWdZRk5qWVd4aGNtQXVYRzRnSUNBZ0lDcGNiaUFnSUNBZ0tpQkFjbVYwZFhKdWN5QmdkSEoxWldBZ2FXWWdkR2hsSUdsMFpXMGdkMkZ6SUdadmRXNWtJR0Z1WkNCeVpXMXZkbVZrTGx4dUlDQWdJQ0FxTDF4dUlDQWdJR1JsYkdWMFpTaHJaWGtwSUh0Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnYVdSNElEMGdZWE5KZEdWdFNXNWtaWGdvYTJWNUtUdGNiaUFnSUNBZ0lDQWdhV1lnS0hSNWNHVnZaaUJwWkhnZ0lUMDlJQ2R1ZFcxaVpYSW5LVnh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUdaaGJITmxPMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQmtaV3dnUFNCMGFHbHpMbWwwWlcxekxuTndiR2xqWlNocFpIZ3NJREVwTzF4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnWkdWc0xteGxibWQwYUNBK0lEQTdYRzRnSUNBZ2ZWeHVJQ0FnSUdkbGRDaHJaWGtzSUd0bFpYQlRZMkZzWVhJcElIdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2FXUjRJRDBnWVhOSmRHVnRTVzVrWlhnb2EyVjVLVHRjYmlBZ0lDQWdJQ0FnYVdZZ0tIUjVjR1Z2WmlCcFpIZ2dJVDA5SUNkdWRXMWlaWEluS1Z4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlIVnVaR1ZtYVc1bFpEdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2FYUWdQU0IwYUdsekxtbDBaVzF6VzJsa2VGMDdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQWhhMlZsY0ZOallXeGhjaUFtSmlCcGMxTmpZV3hoY2locGRDa2dQeUJwZEM1MllXeDFaU0E2SUdsME8xeHVJQ0FnSUgxY2JpQWdJQ0F2S2lwY2JpQWdJQ0FnS2lCRGFHVmphM01nYVdZZ2RHaGxJR052Ykd4bFkzUnBiMjRnYVc1amJIVmtaWE1nWVNCMllXeDFaU0IzYVhSb0lIUm9aU0JyWlhrZ1lHdGxlV0F1WEc0Z0lDQWdJQ3BjYmlBZ0lDQWdLaUJnYTJWNVlDQnRkWE4wSUdOdmJuUmhhVzRnWVNCeVpYQnlaWE5sYm5SaGRHbHZiaUJ2WmlCaGJpQnBiblJsWjJWeUlHWnZjaUIwYUdseklIUnZJSE4xWTJObFpXUXVYRzRnSUNBZ0lDb2dTWFFnYldGNUlHSmxJSGR5WVhCd1pXUWdhVzRnWVNCZ1UyTmhiR0Z5WUM1Y2JpQWdJQ0FnS2k5Y2JpQWdJQ0JvWVhNb2EyVjVLU0I3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJR2xrZUNBOUlHRnpTWFJsYlVsdVpHVjRLR3RsZVNrN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCMGVYQmxiMllnYVdSNElEMDlQU0FuYm5WdFltVnlKeUFtSmlCcFpIZ2dQQ0IwYUdsekxtbDBaVzF6TG14bGJtZDBhRHRjYmlBZ0lDQjlYRzRnSUNBZ0x5b3FYRzRnSUNBZ0lDb2dVMlYwY3lCaElIWmhiSFZsSUdsdUlIUm9hWE1nWTI5c2JHVmpkR2x2Ymk0Z1JtOXlJR0FoSVhObGRHQXNJR0IyWVd4MVpXQWdibVZsWkhNZ2RHOGdZbVVnWVZ4dUlDQWdJQ0FxSUdKdmIyeGxZVzRnZEc4Z1lXUmtMM0psYlc5MlpTQjBhR1VnYVhSbGJTQm1jbTl0SUhSb1pTQnpaWFF1WEc0Z0lDQWdJQ3BjYmlBZ0lDQWdLaUJKWmlCZ2EyVjVZQ0JrYjJWeklHNXZkQ0JqYjI1MFlXbHVJR0VnY21Wd2NtVnpaVzUwWVhScGIyNGdiMllnWVc0Z2FXNTBaV2RsY2l3Z2RHaHBjeUIzYVd4c0lIUm9jbTkzTGx4dUlDQWdJQ0FxSUVsMElHMWhlU0JpWlNCM2NtRndjR1ZrSUdsdUlHRWdZRk5qWVd4aGNtQXVYRzRnSUNBZ0lDb3ZYRzRnSUNBZ2MyVjBLR3RsZVN3Z2RtRnNkV1VwSUh0Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnYVdSNElEMGdZWE5KZEdWdFNXNWtaWGdvYTJWNUtUdGNiaUFnSUNBZ0lDQWdhV1lnS0hSNWNHVnZaaUJwWkhnZ0lUMDlJQ2R1ZFcxaVpYSW5LVnh1SUNBZ0lDQWdJQ0FnSUNBZ2RHaHliM2NnYm1WM0lFVnljbTl5S0dCRmVIQmxZM1JsWkNCaElIWmhiR2xrSUdsdVpHVjRMQ0J1YjNRZ0pIdHJaWGw5TG1BcE8xeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCd2NtVjJJRDBnZEdocGN5NXBkR1Z0YzF0cFpIaGRPMXh1SUNBZ0lDQWdJQ0JwWmlBb2FYTlRZMkZzWVhJb2NISmxkaWtnSmlZZ2FYTlRZMkZzWVhKV1lXeDFaU2gyWVd4MVpTa3BYRzRnSUNBZ0lDQWdJQ0FnSUNCd2NtVjJMblpoYkhWbElEMGdkbUZzZFdVN1hHNGdJQ0FnSUNBZ0lHVnNjMlZjYmlBZ0lDQWdJQ0FnSUNBZ0lIUm9hWE11YVhSbGJYTmJhV1I0WFNBOUlIWmhiSFZsTzF4dUlDQWdJSDFjYmlBZ0lDQjBiMHBUVDA0b1h5d2dZM1I0S1NCN1hHNGdJQ0FnSUNBZ0lHTnZibk4wSUhObGNTQTlJRnRkTzF4dUlDQWdJQ0FnSUNCcFppQW9ZM1I0UHk1dmJrTnlaV0YwWlNsY2JpQWdJQ0FnSUNBZ0lDQWdJR04wZUM1dmJrTnlaV0YwWlNoelpYRXBPMXh1SUNBZ0lDQWdJQ0JzWlhRZ2FTQTlJREE3WEc0Z0lDQWdJQ0FnSUdadmNpQW9ZMjl1YzNRZ2FYUmxiU0J2WmlCMGFHbHpMbWwwWlcxektWeHVJQ0FnSUNBZ0lDQWdJQ0FnYzJWeExuQjFjMmdvZEc5S1V5aHBkR1Z0TENCVGRISnBibWNvYVNzcktTd2dZM1I0S1NrN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCelpYRTdYRzRnSUNBZ2ZWeHVJQ0FnSUhSdlUzUnlhVzVuS0dOMGVDd2diMjVEYjIxdFpXNTBMQ0J2YmtOb2IyMXdTMlZsY0NrZ2UxeHVJQ0FnSUNBZ0lDQnBaaUFvSVdOMGVDbGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJLVTA5T0xuTjBjbWx1WjJsbWVTaDBhR2x6S1R0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUhOMGNtbHVaMmxtZVVOdmJHeGxZM1JwYjI0b2RHaHBjeXdnWTNSNExDQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCaWJHOWphMGwwWlcxUWNtVm1hWGc2SUNjdElDY3NYRzRnSUNBZ0lDQWdJQ0FnSUNCbWJHOTNRMmhoY25NNklIc2djM1JoY25RNklDZGJKeXdnWlc1a09pQW5YU2NnZlN4Y2JpQWdJQ0FnSUNBZ0lDQWdJR2wwWlcxSmJtUmxiblE2SUNoamRIZ3VhVzVrWlc1MElIeDhJQ2NuS1NBcklDY2dJQ2NzWEc0Z0lDQWdJQ0FnSUNBZ0lDQnZia05vYjIxd1MyVmxjQ3hjYmlBZ0lDQWdJQ0FnSUNBZ0lHOXVRMjl0YldWdWRGeHVJQ0FnSUNBZ0lDQjlLVHRjYmlBZ0lDQjlYRzRnSUNBZ2MzUmhkR2xqSUdaeWIyMG9jMk5vWlcxaExDQnZZbW9zSUdOMGVDa2dlMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQjdJSEpsY0d4aFkyVnlJSDBnUFNCamRIZzdYRzRnSUNBZ0lDQWdJR052Ym5OMElITmxjU0E5SUc1bGR5QjBhR2x6S0hOamFHVnRZU2s3WEc0Z0lDQWdJQ0FnSUdsbUlDaHZZbW9nSmlZZ1UzbHRZbTlzTG1sMFpYSmhkRzl5SUdsdUlFOWlhbVZqZENodlltb3BLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnNaWFFnYVNBOUlEQTdYRzRnSUNBZ0lDQWdJQ0FnSUNCbWIzSWdLR3hsZENCcGRDQnZaaUJ2WW1vcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBaaUFvZEhsd1pXOW1JSEpsY0d4aFkyVnlJRDA5UFNBblpuVnVZM1JwYjI0bktTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdOdmJuTjBJR3RsZVNBOUlHOWlhaUJwYm5OMFlXNWpaVzltSUZObGRDQS9JR2wwSURvZ1UzUnlhVzVuS0drckt5azdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsMElEMGdjbVZ3YkdGalpYSXVZMkZzYkNodlltb3NJR3RsZVN3Z2FYUXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J6WlhFdWFYUmxiWE11Y0hWemFDaGpjbVZoZEdWT2IyUmxLR2wwTENCMWJtUmxabWx1WldRc0lHTjBlQ2twTzF4dUlDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJ6WlhFN1hHNGdJQ0FnZlZ4dWZWeHVablZ1WTNScGIyNGdZWE5KZEdWdFNXNWtaWGdvYTJWNUtTQjdYRzRnSUNBZ2JHVjBJR2xrZUNBOUlHbHpVMk5oYkdGeUtHdGxlU2tnUHlCclpYa3VkbUZzZFdVZ09pQnJaWGs3WEc0Z0lDQWdhV1lnS0dsa2VDQW1KaUIwZVhCbGIyWWdhV1I0SUQwOVBTQW5jM1J5YVc1bkp5bGNiaUFnSUNBZ0lDQWdhV1I0SUQwZ1RuVnRZbVZ5S0dsa2VDazdYRzRnSUNBZ2NtVjBkWEp1SUhSNWNHVnZaaUJwWkhnZ1BUMDlJQ2R1ZFcxaVpYSW5JQ1ltSUU1MWJXSmxjaTVwYzBsdWRHVm5aWElvYVdSNEtTQW1KaUJwWkhnZ1BqMGdNRnh1SUNBZ0lDQWdJQ0EvSUdsa2VGeHVJQ0FnSUNBZ0lDQTZJRzUxYkd3N1hHNTlYRzVjYm1WNGNHOXlkQ0I3SUZsQlRVeFRaWEVnZlR0Y2JpSXNJQ0pwYlhCdmNuUWdleUJwYzFObGNTQjlJR1p5YjIwZ0p5NHVMeTR1TDI1dlpHVnpMMmxrWlc1MGFYUjVMbXB6Snp0Y2JtbHRjRzl5ZENCN0lGbEJUVXhUWlhFZ2ZTQm1jbTl0SUNjdUxpOHVMaTl1YjJSbGN5OVpRVTFNVTJWeExtcHpKenRjYmx4dVkyOXVjM1FnYzJWeElEMGdlMXh1SUNBZ0lHTnZiR3hsWTNScGIyNDZJQ2R6WlhFbkxGeHVJQ0FnSUdSbFptRjFiSFE2SUhSeWRXVXNYRzRnSUNBZ2JtOWtaVU5zWVhOek9pQlpRVTFNVTJWeExGeHVJQ0FnSUhSaFp6b2dKM1JoWnpwNVlXMXNMbTl5Wnl3eU1EQXlPbk5sY1Njc1hHNGdJQ0FnY21WemIyeDJaU2h6WlhFc0lHOXVSWEp5YjNJcElIdGNiaUFnSUNBZ0lDQWdhV1lnS0NGcGMxTmxjU2h6WlhFcEtWeHVJQ0FnSUNBZ0lDQWdJQ0FnYjI1RmNuSnZjaWduUlhod1pXTjBaV1FnWVNCelpYRjFaVzVqWlNCbWIzSWdkR2hwY3lCMFlXY25LVHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJSE5sY1R0Y2JpQWdJQ0I5TEZ4dUlDQWdJR055WldGMFpVNXZaR1U2SUNoelkyaGxiV0VzSUc5aWFpd2dZM1I0S1NBOVBpQlpRVTFNVTJWeExtWnliMjBvYzJOb1pXMWhMQ0J2WW1vc0lHTjBlQ2xjYm4wN1hHNWNibVY0Y0c5eWRDQjdJSE5sY1NCOU8xeHVJaXdnSW1sdGNHOXlkQ0I3SUhOMGNtbHVaMmxtZVZOMGNtbHVaeUI5SUdaeWIyMGdKeTR1THk0dUwzTjBjbWx1WjJsbWVTOXpkSEpwYm1kcFpubFRkSEpwYm1jdWFuTW5PMXh1WEc1amIyNXpkQ0J6ZEhKcGJtY2dQU0I3WEc0Z0lDQWdhV1JsYm5ScFpuazZJSFpoYkhWbElEMCtJSFI1Y0dWdlppQjJZV3gxWlNBOVBUMGdKM04wY21sdVp5Y3NYRzRnSUNBZ1pHVm1ZWFZzZERvZ2RISjFaU3hjYmlBZ0lDQjBZV2M2SUNkMFlXYzZlV0Z0YkM1dmNtY3NNakF3TWpwemRISW5MRnh1SUNBZ0lISmxjMjlzZG1VNklITjBjaUE5UGlCemRISXNYRzRnSUNBZ2MzUnlhVzVuYVdaNUtHbDBaVzBzSUdOMGVDd2diMjVEYjIxdFpXNTBMQ0J2YmtOb2IyMXdTMlZsY0NrZ2UxeHVJQ0FnSUNBZ0lDQmpkSGdnUFNCUFltcGxZM1F1WVhOemFXZHVLSHNnWVdOMGRXRnNVM1J5YVc1bk9pQjBjblZsSUgwc0lHTjBlQ2s3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJ6ZEhKcGJtZHBabmxUZEhKcGJtY29hWFJsYlN3Z1kzUjRMQ0J2YmtOdmJXMWxiblFzSUc5dVEyaHZiWEJMWldWd0tUdGNiaUFnSUNCOVhHNTlPMXh1WEc1bGVIQnZjblFnZXlCemRISnBibWNnZlR0Y2JpSXNJQ0pwYlhCdmNuUWdleUJUWTJGc1lYSWdmU0JtY205dElDY3VMaTh1TGk5dWIyUmxjeTlUWTJGc1lYSXVhbk1uTzF4dVhHNWpiMjV6ZENCdWRXeHNWR0ZuSUQwZ2UxeHVJQ0FnSUdsa1pXNTBhV1o1T2lCMllXeDFaU0E5UGlCMllXeDFaU0E5UFNCdWRXeHNMRnh1SUNBZ0lHTnlaV0YwWlU1dlpHVTZJQ2dwSUQwK0lHNWxkeUJUWTJGc1lYSW9iblZzYkNrc1hHNGdJQ0FnWkdWbVlYVnNkRG9nZEhKMVpTeGNiaUFnSUNCMFlXYzZJQ2QwWVdjNmVXRnRiQzV2Y21jc01qQXdNanB1ZFd4c0p5eGNiaUFnSUNCMFpYTjBPaUF2WGlnL09uNThXMDV1WFhWc2JIeE9WVXhNS1Q4a0x5eGNiaUFnSUNCeVpYTnZiSFpsT2lBb0tTQTlQaUJ1WlhjZ1UyTmhiR0Z5S0c1MWJHd3BMRnh1SUNBZ0lITjBjbWx1WjJsbWVUb2dLSHNnYzI5MWNtTmxJSDBzSUdOMGVDa2dQVDRnZEhsd1pXOW1JSE52ZFhKalpTQTlQVDBnSjNOMGNtbHVaeWNnSmlZZ2JuVnNiRlJoWnk1MFpYTjBMblJsYzNRb2MyOTFjbU5sS1Z4dUlDQWdJQ0FnSUNBL0lITnZkWEpqWlZ4dUlDQWdJQ0FnSUNBNklHTjBlQzV2Y0hScGIyNXpMbTUxYkd4VGRISmNibjA3WEc1Y2JtVjRjRzl5ZENCN0lHNTFiR3hVWVdjZ2ZUdGNiaUlzSUNKcGJYQnZjblFnZXlCVFkyRnNZWElnZlNCbWNtOXRJQ2N1TGk4dUxpOXViMlJsY3k5VFkyRnNZWEl1YW5Nbk8xeHVYRzVqYjI1emRDQmliMjlzVkdGbklEMGdlMXh1SUNBZ0lHbGtaVzUwYVdaNU9pQjJZV3gxWlNBOVBpQjBlWEJsYjJZZ2RtRnNkV1VnUFQwOUlDZGliMjlzWldGdUp5eGNiaUFnSUNCa1pXWmhkV3gwT2lCMGNuVmxMRnh1SUNBZ0lIUmhaem9nSjNSaFp6cDVZVzFzTG05eVp5d3lNREF5T21KdmIyd25MRnh1SUNBZ0lIUmxjM1E2SUM5ZUtEODZXMVIwWFhKMVpYeFVVbFZGZkZ0R1psMWhiSE5sZkVaQlRGTkZLU1F2TEZ4dUlDQWdJSEpsYzI5c2RtVTZJSE4wY2lBOVBpQnVaWGNnVTJOaGJHRnlLSE4wY2xzd1hTQTlQVDBnSjNRbklIeDhJSE4wY2xzd1hTQTlQVDBnSjFRbktTeGNiaUFnSUNCemRISnBibWRwWm5rb2V5QnpiM1Z5WTJVc0lIWmhiSFZsSUgwc0lHTjBlQ2tnZTF4dUlDQWdJQ0FnSUNCcFppQW9jMjkxY21ObElDWW1JR0p2YjJ4VVlXY3VkR1Z6ZEM1MFpYTjBLSE52ZFhKalpTa3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHTnZibk4wSUhOMklEMGdjMjkxY21ObFd6QmRJRDA5UFNBbmRDY2dmSHdnYzI5MWNtTmxXekJkSUQwOVBTQW5WQ2M3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFvZG1Gc2RXVWdQVDA5SUhOMktWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCemIzVnlZMlU3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUhaaGJIVmxJRDhnWTNSNExtOXdkR2x2Ym5NdWRISjFaVk4wY2lBNklHTjBlQzV2Y0hScGIyNXpMbVpoYkhObFUzUnlPMXh1SUNBZ0lIMWNibjA3WEc1Y2JtVjRjRzl5ZENCN0lHSnZiMnhVWVdjZ2ZUdGNiaUlzSUNKbWRXNWpkR2x2YmlCemRISnBibWRwWm5sT2RXMWlaWElvZXlCbWIzSnRZWFFzSUcxcGJrWnlZV04wYVc5dVJHbG5hWFJ6TENCMFlXY3NJSFpoYkhWbElIMHBJSHRjYmlBZ0lDQnBaaUFvZEhsd1pXOW1JSFpoYkhWbElEMDlQU0FuWW1sbmFXNTBKeWxjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJRk4wY21sdVp5aDJZV3gxWlNrN1hHNGdJQ0FnWTI5dWMzUWdiblZ0SUQwZ2RIbHdaVzltSUhaaGJIVmxJRDA5UFNBbmJuVnRZbVZ5SnlBL0lIWmhiSFZsSURvZ1RuVnRZbVZ5S0haaGJIVmxLVHRjYmlBZ0lDQnBaaUFvSVdselJtbHVhWFJsS0c1MWJTa3BYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQnBjMDVoVGlodWRXMHBJRDhnSnk1dVlXNG5JRG9nYm5WdElEd2dNQ0EvSUNjdExtbHVaaWNnT2lBbkxtbHVaaWM3WEc0Z0lDQWdiR1YwSUc0Z1BTQktVMDlPTG5OMGNtbHVaMmxtZVNoMllXeDFaU2s3WEc0Z0lDQWdhV1lnS0NGbWIzSnRZWFFnSmlaY2JpQWdJQ0FnSUNBZ2JXbHVSbkpoWTNScGIyNUVhV2RwZEhNZ0ppWmNiaUFnSUNBZ0lDQWdLQ0YwWVdjZ2ZId2dkR0ZuSUQwOVBTQW5kR0ZuT25saGJXd3ViM0puTERJd01ESTZabXh2WVhRbktTQW1KbHh1SUNBZ0lDQWdJQ0F2WGx4Y1pDOHVkR1Z6ZENodUtTa2dlMXh1SUNBZ0lDQWdJQ0JzWlhRZ2FTQTlJRzR1YVc1a1pYaFBaaWduTGljcE8xeHVJQ0FnSUNBZ0lDQnBaaUFvYVNBOElEQXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHa2dQU0J1TG14bGJtZDBhRHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHNGdLejBnSnk0bk8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJR3hsZENCa0lEMGdiV2x1Um5KaFkzUnBiMjVFYVdkcGRITWdMU0FvYmk1c1pXNW5kR2dnTFNCcElDMGdNU2s3WEc0Z0lDQWdJQ0FnSUhkb2FXeGxJQ2hrTFMwZ1BpQXdLVnh1SUNBZ0lDQWdJQ0FnSUNBZ2JpQXJQU0FuTUNjN1hHNGdJQ0FnZlZ4dUlDQWdJSEpsZEhWeWJpQnVPMXh1ZlZ4dVhHNWxlSEJ2Y25RZ2V5QnpkSEpwYm1kcFpubE9kVzFpWlhJZ2ZUdGNiaUlzSUNKcGJYQnZjblFnZXlCVFkyRnNZWElnZlNCbWNtOXRJQ2N1TGk4dUxpOXViMlJsY3k5VFkyRnNZWEl1YW5Nbk8xeHVhVzF3YjNKMElIc2djM1J5YVc1bmFXWjVUblZ0WW1WeUlIMGdabkp2YlNBbkxpNHZMaTR2YzNSeWFXNW5hV1o1TDNOMGNtbHVaMmxtZVU1MWJXSmxjaTVxY3ljN1hHNWNibU52Ym5OMElHWnNiMkYwVG1GT0lEMGdlMXh1SUNBZ0lHbGtaVzUwYVdaNU9pQjJZV3gxWlNBOVBpQjBlWEJsYjJZZ2RtRnNkV1VnUFQwOUlDZHVkVzFpWlhJbkxGeHVJQ0FnSUdSbFptRjFiSFE2SUhSeWRXVXNYRzRnSUNBZ2RHRm5PaUFuZEdGbk9ubGhiV3d1YjNKbkxESXdNREk2Wm14dllYUW5MRnh1SUNBZ0lIUmxjM1E2SUM5ZUtEODZXeTByWFQ5Y1hDNG9QenBwYm1aOFNXNW1mRWxPUmlsOFhGd3VibUZ1ZkZ4Y0xrNWhUbnhjWEM1T1FVNHBKQzhzWEc0Z0lDQWdjbVZ6YjJ4MlpUb2djM1J5SUQwK0lITjBjaTV6YkdsalpTZ3RNeWt1ZEc5TWIzZGxja05oYzJVb0tTQTlQVDBnSjI1aGJpZGNiaUFnSUNBZ0lDQWdQeUJPWVU1Y2JpQWdJQ0FnSUNBZ09pQnpkSEpiTUYwZ1BUMDlJQ2N0SjF4dUlDQWdJQ0FnSUNBZ0lDQWdQeUJPZFcxaVpYSXVUa1ZIUVZSSlZrVmZTVTVHU1U1SlZGbGNiaUFnSUNBZ0lDQWdJQ0FnSURvZ1RuVnRZbVZ5TGxCUFUwbFVTVlpGWDBsT1JrbE9TVlJaTEZ4dUlDQWdJSE4wY21sdVoybG1lVG9nYzNSeWFXNW5hV1o1VG5WdFltVnlYRzU5TzF4dVkyOXVjM1FnWm14dllYUkZlSEFnUFNCN1hHNGdJQ0FnYVdSbGJuUnBabms2SUhaaGJIVmxJRDArSUhSNWNHVnZaaUIyWVd4MVpTQTlQVDBnSjI1MWJXSmxjaWNzWEc0Z0lDQWdaR1ZtWVhWc2REb2dkSEoxWlN4Y2JpQWdJQ0IwWVdjNklDZDBZV2M2ZVdGdGJDNXZjbWNzTWpBd01qcG1iRzloZENjc1hHNGdJQ0FnWm05eWJXRjBPaUFuUlZoUUp5eGNiaUFnSUNCMFpYTjBPaUF2WGxzdEsxMC9LRDg2WEZ3dVd6QXRPVjByZkZzd0xUbGRLeWcvT2x4Y0xsc3dMVGxkS2lrL0tWdGxSVjFiTFN0ZFAxc3dMVGxkS3lRdkxGeHVJQ0FnSUhKbGMyOXNkbVU2SUhOMGNpQTlQaUJ3WVhKelpVWnNiMkYwS0hOMGNpa3NYRzRnSUNBZ2MzUnlhVzVuYVdaNUtHNXZaR1VwSUh0Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnYm5WdElEMGdUblZ0WW1WeUtHNXZaR1V1ZG1Gc2RXVXBPMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdhWE5HYVc1cGRHVW9iblZ0S1NBL0lHNTFiUzUwYjBWNGNHOXVaVzUwYVdGc0tDa2dPaUJ6ZEhKcGJtZHBabmxPZFcxaVpYSW9ibTlrWlNrN1hHNGdJQ0FnZlZ4dWZUdGNibU52Ym5OMElHWnNiMkYwSUQwZ2UxeHVJQ0FnSUdsa1pXNTBhV1o1T2lCMllXeDFaU0E5UGlCMGVYQmxiMllnZG1Gc2RXVWdQVDA5SUNkdWRXMWlaWEluTEZ4dUlDQWdJR1JsWm1GMWJIUTZJSFJ5ZFdVc1hHNGdJQ0FnZEdGbk9pQW5kR0ZuT25saGJXd3ViM0puTERJd01ESTZabXh2WVhRbkxGeHVJQ0FnSUhSbGMzUTZJQzllV3kwclhUOG9QenBjWEM1Yk1DMDVYU3Q4V3pBdE9WMHJYRnd1V3pBdE9WMHFLU1F2TEZ4dUlDQWdJSEpsYzI5c2RtVW9jM1J5S1NCN1hHNGdJQ0FnSUNBZ0lHTnZibk4wSUc1dlpHVWdQU0J1WlhjZ1UyTmhiR0Z5S0hCaGNuTmxSbXh2WVhRb2MzUnlLU2s3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJR1J2ZENBOUlITjBjaTVwYm1SbGVFOW1LQ2N1SnlrN1hHNGdJQ0FnSUNBZ0lHbG1JQ2hrYjNRZ0lUMDlJQzB4SUNZbUlITjBjbHR6ZEhJdWJHVnVaM1JvSUMwZ01WMGdQVDA5SUNjd0p5bGNiaUFnSUNBZ0lDQWdJQ0FnSUc1dlpHVXViV2x1Um5KaFkzUnBiMjVFYVdkcGRITWdQU0J6ZEhJdWJHVnVaM1JvSUMwZ1pHOTBJQzBnTVR0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUc1dlpHVTdYRzRnSUNBZ2ZTeGNiaUFnSUNCemRISnBibWRwWm5rNklITjBjbWx1WjJsbWVVNTFiV0psY2x4dWZUdGNibHh1Wlhod2IzSjBJSHNnWm14dllYUXNJR1pzYjJGMFJYaHdMQ0JtYkc5aGRFNWhUaUI5TzF4dUlpd2dJbWx0Y0c5eWRDQjdJSE4wY21sdVoybG1lVTUxYldKbGNpQjlJR1p5YjIwZ0p5NHVMeTR1TDNOMGNtbHVaMmxtZVM5emRISnBibWRwWm5sT2RXMWlaWEl1YW5Nbk8xeHVYRzVqYjI1emRDQnBiblJKWkdWdWRHbG1lU0E5SUNoMllXeDFaU2tnUFQ0Z2RIbHdaVzltSUhaaGJIVmxJRDA5UFNBblltbG5hVzUwSnlCOGZDQk9kVzFpWlhJdWFYTkpiblJsWjJWeUtIWmhiSFZsS1R0Y2JtTnZibk4wSUdsdWRGSmxjMjlzZG1VZ1BTQW9jM1J5TENCdlptWnpaWFFzSUhKaFpHbDRMQ0I3SUdsdWRFRnpRbWxuU1c1MElIMHBJRDArSUNocGJuUkJjMEpwWjBsdWRDQS9JRUpwWjBsdWRDaHpkSElwSURvZ2NHRnljMlZKYm5Rb2MzUnlMbk4xWW5OMGNtbHVaeWh2Wm1aelpYUXBMQ0J5WVdScGVDa3BPMXh1Wm5WdVkzUnBiMjRnYVc1MFUzUnlhVzVuYVdaNUtHNXZaR1VzSUhKaFpHbDRMQ0J3Y21WbWFYZ3BJSHRjYmlBZ0lDQmpiMjV6ZENCN0lIWmhiSFZsSUgwZ1BTQnViMlJsTzF4dUlDQWdJR2xtSUNocGJuUkpaR1Z1ZEdsbWVTaDJZV3gxWlNrZ0ppWWdkbUZzZFdVZ1BqMGdNQ2xjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJSEJ5WldacGVDQXJJSFpoYkhWbExuUnZVM1J5YVc1bktISmhaR2w0S1R0Y2JpQWdJQ0J5WlhSMWNtNGdjM1J5YVc1bmFXWjVUblZ0WW1WeUtHNXZaR1VwTzF4dWZWeHVZMjl1YzNRZ2FXNTBUMk4wSUQwZ2UxeHVJQ0FnSUdsa1pXNTBhV1o1T2lCMllXeDFaU0E5UGlCcGJuUkpaR1Z1ZEdsbWVTaDJZV3gxWlNrZ0ppWWdkbUZzZFdVZ1BqMGdNQ3hjYmlBZ0lDQmtaV1poZFd4ME9pQjBjblZsTEZ4dUlDQWdJSFJoWnpvZ0ozUmhaenA1WVcxc0xtOXlaeXd5TURBeU9tbHVkQ2NzWEc0Z0lDQWdabTl5YldGME9pQW5UME5VSnl4Y2JpQWdJQ0IwWlhOME9pQXZYakJ2V3pBdE4xMHJKQzhzWEc0Z0lDQWdjbVZ6YjJ4MlpUb2dLSE4wY2l3Z1gyOXVSWEp5YjNJc0lHOXdkQ2tnUFQ0Z2FXNTBVbVZ6YjJ4MlpTaHpkSElzSURJc0lEZ3NJRzl3ZENrc1hHNGdJQ0FnYzNSeWFXNW5hV1o1T2lCdWIyUmxJRDArSUdsdWRGTjBjbWx1WjJsbWVTaHViMlJsTENBNExDQW5NRzhuS1Z4dWZUdGNibU52Ym5OMElHbHVkQ0E5SUh0Y2JpQWdJQ0JwWkdWdWRHbG1lVG9nYVc1MFNXUmxiblJwWm5rc1hHNGdJQ0FnWkdWbVlYVnNkRG9nZEhKMVpTeGNiaUFnSUNCMFlXYzZJQ2QwWVdjNmVXRnRiQzV2Y21jc01qQXdNanBwYm5RbkxGeHVJQ0FnSUhSbGMzUTZJQzllV3kwclhUOWJNQzA1WFNza0x5eGNiaUFnSUNCeVpYTnZiSFpsT2lBb2MzUnlMQ0JmYjI1RmNuSnZjaXdnYjNCMEtTQTlQaUJwYm5SU1pYTnZiSFpsS0hOMGNpd2dNQ3dnTVRBc0lHOXdkQ2tzWEc0Z0lDQWdjM1J5YVc1bmFXWjVPaUJ6ZEhKcGJtZHBabmxPZFcxaVpYSmNibjA3WEc1amIyNXpkQ0JwYm5SSVpYZ2dQU0I3WEc0Z0lDQWdhV1JsYm5ScFpuazZJSFpoYkhWbElEMCtJR2x1ZEVsa1pXNTBhV1o1S0haaGJIVmxLU0FtSmlCMllXeDFaU0ErUFNBd0xGeHVJQ0FnSUdSbFptRjFiSFE2SUhSeWRXVXNYRzRnSUNBZ2RHRm5PaUFuZEdGbk9ubGhiV3d1YjNKbkxESXdNREk2YVc1MEp5eGNiaUFnSUNCbWIzSnRZWFE2SUNkSVJWZ25MRnh1SUNBZ0lIUmxjM1E2SUM5ZU1IaGJNQzA1WVMxbVFTMUdYU3NrTHl4Y2JpQWdJQ0J5WlhOdmJIWmxPaUFvYzNSeUxDQmZiMjVGY25KdmNpd2diM0IwS1NBOVBpQnBiblJTWlhOdmJIWmxLSE4wY2l3Z01pd2dNVFlzSUc5d2RDa3NYRzRnSUNBZ2MzUnlhVzVuYVdaNU9pQnViMlJsSUQwK0lHbHVkRk4wY21sdVoybG1lU2h1YjJSbExDQXhOaXdnSnpCNEp5bGNibjA3WEc1Y2JtVjRjRzl5ZENCN0lHbHVkQ3dnYVc1MFNHVjRMQ0JwYm5SUFkzUWdmVHRjYmlJc0lDSnBiWEJ2Y25RZ2V5QnRZWEFnZlNCbWNtOXRJQ2N1TGk5amIyMXRiMjR2YldGd0xtcHpKenRjYm1sdGNHOXlkQ0I3SUc1MWJHeFVZV2NnZlNCbWNtOXRJQ2N1TGk5amIyMXRiMjR2Ym5Wc2JDNXFjeWM3WEc1cGJYQnZjblFnZXlCelpYRWdmU0JtY205dElDY3VMaTlqYjIxdGIyNHZjMlZ4TG1wekp6dGNibWx0Y0c5eWRDQjdJSE4wY21sdVp5QjlJR1p5YjIwZ0p5NHVMMk52YlcxdmJpOXpkSEpwYm1jdWFuTW5PMXh1YVcxd2IzSjBJSHNnWW05dmJGUmhaeUI5SUdaeWIyMGdKeTR2WW05dmJDNXFjeWM3WEc1cGJYQnZjblFnZXlCbWJHOWhkRTVoVGl3Z1pteHZZWFJGZUhBc0lHWnNiMkYwSUgwZ1puSnZiU0FuTGk5bWJHOWhkQzVxY3ljN1hHNXBiWEJ2Y25RZ2V5QnBiblJQWTNRc0lHbHVkQ3dnYVc1MFNHVjRJSDBnWm5KdmJTQW5MaTlwYm5RdWFuTW5PMXh1WEc1amIyNXpkQ0J6WTJobGJXRWdQU0JiWEc0Z0lDQWdiV0Z3TEZ4dUlDQWdJSE5sY1N4Y2JpQWdJQ0J6ZEhKcGJtY3NYRzRnSUNBZ2JuVnNiRlJoWnl4Y2JpQWdJQ0JpYjI5c1ZHRm5MRnh1SUNBZ0lHbHVkRTlqZEN4Y2JpQWdJQ0JwYm5Rc1hHNGdJQ0FnYVc1MFNHVjRMRnh1SUNBZ0lHWnNiMkYwVG1GT0xGeHVJQ0FnSUdac2IyRjBSWGh3TEZ4dUlDQWdJR1pzYjJGMFhHNWRPMXh1WEc1bGVIQnZjblFnZXlCelkyaGxiV0VnZlR0Y2JpSXNJQ0pwYlhCdmNuUWdleUJUWTJGc1lYSWdmU0JtY205dElDY3VMaTh1TGk5dWIyUmxjeTlUWTJGc1lYSXVhbk1uTzF4dWFXMXdiM0owSUhzZ2JXRndJSDBnWm5KdmJTQW5MaTR2WTI5dGJXOXVMMjFoY0M1cWN5YzdYRzVwYlhCdmNuUWdleUJ6WlhFZ2ZTQm1jbTl0SUNjdUxpOWpiMjF0YjI0dmMyVnhMbXB6Snp0Y2JseHVablZ1WTNScGIyNGdhVzUwU1dSbGJuUnBabmtvZG1Gc2RXVXBJSHRjYmlBZ0lDQnlaWFIxY200Z2RIbHdaVzltSUhaaGJIVmxJRDA5UFNBblltbG5hVzUwSnlCOGZDQk9kVzFpWlhJdWFYTkpiblJsWjJWeUtIWmhiSFZsS1R0Y2JuMWNibU52Ym5OMElITjBjbWx1WjJsbWVVcFRUMDRnUFNBb2V5QjJZV3gxWlNCOUtTQTlQaUJLVTA5T0xuTjBjbWx1WjJsbWVTaDJZV3gxWlNrN1hHNWpiMjV6ZENCcWMyOXVVMk5oYkdGeWN5QTlJRnRjYmlBZ0lDQjdYRzRnSUNBZ0lDQWdJR2xrWlc1MGFXWjVPaUIyWVd4MVpTQTlQaUIwZVhCbGIyWWdkbUZzZFdVZ1BUMDlJQ2R6ZEhKcGJtY25MRnh1SUNBZ0lDQWdJQ0JrWldaaGRXeDBPaUIwY25WbExGeHVJQ0FnSUNBZ0lDQjBZV2M2SUNkMFlXYzZlV0Z0YkM1dmNtY3NNakF3TWpwemRISW5MRnh1SUNBZ0lDQWdJQ0J5WlhOdmJIWmxPaUJ6ZEhJZ1BUNGdjM1J5TEZ4dUlDQWdJQ0FnSUNCemRISnBibWRwWm5rNklITjBjbWx1WjJsbWVVcFRUMDVjYmlBZ0lDQjlMRnh1SUNBZ0lIdGNiaUFnSUNBZ0lDQWdhV1JsYm5ScFpuazZJSFpoYkhWbElEMCtJSFpoYkhWbElEMDlJRzUxYkd3c1hHNGdJQ0FnSUNBZ0lHTnlaV0YwWlU1dlpHVTZJQ2dwSUQwK0lHNWxkeUJUWTJGc1lYSW9iblZzYkNrc1hHNGdJQ0FnSUNBZ0lHUmxabUYxYkhRNklIUnlkV1VzWEc0Z0lDQWdJQ0FnSUhSaFp6b2dKM1JoWnpwNVlXMXNMbTl5Wnl3eU1EQXlPbTUxYkd3bkxGeHVJQ0FnSUNBZ0lDQjBaWE4wT2lBdlhtNTFiR3drTHl4Y2JpQWdJQ0FnSUNBZ2NtVnpiMngyWlRvZ0tDa2dQVDRnYm5Wc2JDeGNiaUFnSUNBZ0lDQWdjM1J5YVc1bmFXWjVPaUJ6ZEhKcGJtZHBabmxLVTA5T1hHNGdJQ0FnZlN4Y2JpQWdJQ0I3WEc0Z0lDQWdJQ0FnSUdsa1pXNTBhV1o1T2lCMllXeDFaU0E5UGlCMGVYQmxiMllnZG1Gc2RXVWdQVDA5SUNkaWIyOXNaV0Z1Snl4Y2JpQWdJQ0FnSUNBZ1pHVm1ZWFZzZERvZ2RISjFaU3hjYmlBZ0lDQWdJQ0FnZEdGbk9pQW5kR0ZuT25saGJXd3ViM0puTERJd01ESTZZbTl2YkNjc1hHNGdJQ0FnSUNBZ0lIUmxjM1E2SUM5ZWRISjFaWHhtWVd4elpTUXZMRnh1SUNBZ0lDQWdJQ0J5WlhOdmJIWmxPaUJ6ZEhJZ1BUNGdjM1J5SUQwOVBTQW5kSEoxWlNjc1hHNGdJQ0FnSUNBZ0lITjBjbWx1WjJsbWVUb2djM1J5YVc1bmFXWjVTbE5QVGx4dUlDQWdJSDBzWEc0Z0lDQWdlMXh1SUNBZ0lDQWdJQ0JwWkdWdWRHbG1lVG9nYVc1MFNXUmxiblJwWm5rc1hHNGdJQ0FnSUNBZ0lHUmxabUYxYkhRNklIUnlkV1VzWEc0Z0lDQWdJQ0FnSUhSaFp6b2dKM1JoWnpwNVlXMXNMbTl5Wnl3eU1EQXlPbWx1ZENjc1hHNGdJQ0FnSUNBZ0lIUmxjM1E2SUM5ZUxUOG9Qem93ZkZzeExUbGRXekF0T1YwcUtTUXZMRnh1SUNBZ0lDQWdJQ0J5WlhOdmJIWmxPaUFvYzNSeUxDQmZiMjVGY25KdmNpd2dleUJwYm5SQmMwSnBaMGx1ZENCOUtTQTlQaUJwYm5SQmMwSnBaMGx1ZENBL0lFSnBaMGx1ZENoemRISXBJRG9nY0dGeWMyVkpiblFvYzNSeUxDQXhNQ2tzWEc0Z0lDQWdJQ0FnSUhOMGNtbHVaMmxtZVRvZ0tIc2dkbUZzZFdVZ2ZTa2dQVDRnYVc1MFNXUmxiblJwWm5rb2RtRnNkV1VwSUQ4Z2RtRnNkV1V1ZEc5VGRISnBibWNvS1NBNklFcFRUMDR1YzNSeWFXNW5hV1o1S0haaGJIVmxLVnh1SUNBZ0lIMHNYRzRnSUNBZ2UxeHVJQ0FnSUNBZ0lDQnBaR1Z1ZEdsbWVUb2dkbUZzZFdVZ1BUNGdkSGx3Wlc5bUlIWmhiSFZsSUQwOVBTQW5iblZ0WW1WeUp5eGNiaUFnSUNBZ0lDQWdaR1ZtWVhWc2REb2dkSEoxWlN4Y2JpQWdJQ0FnSUNBZ2RHRm5PaUFuZEdGbk9ubGhiV3d1YjNKbkxESXdNREk2Wm14dllYUW5MRnh1SUNBZ0lDQWdJQ0IwWlhOME9pQXZYaTAvS0Q4Nk1IeGJNUzA1WFZzd0xUbGRLaWtvUHpwY1hDNWJNQzA1WFNvcFB5Zy9PbHRsUlYxYkxTdGRQMXN3TFRsZEt5ay9KQzhzWEc0Z0lDQWdJQ0FnSUhKbGMyOXNkbVU2SUhOMGNpQTlQaUJ3WVhKelpVWnNiMkYwS0hOMGNpa3NYRzRnSUNBZ0lDQWdJSE4wY21sdVoybG1lVG9nYzNSeWFXNW5hV1o1U2xOUFRseHVJQ0FnSUgxY2JsMDdYRzVqYjI1emRDQnFjMjl1UlhKeWIzSWdQU0I3WEc0Z0lDQWdaR1ZtWVhWc2REb2dkSEoxWlN4Y2JpQWdJQ0IwWVdjNklDY25MRnh1SUNBZ0lIUmxjM1E2SUM5ZUx5eGNiaUFnSUNCeVpYTnZiSFpsS0hOMGNpd2diMjVGY25KdmNpa2dlMXh1SUNBZ0lDQWdJQ0J2YmtWeWNtOXlLR0JWYm5KbGMyOXNkbVZrSUhCc1lXbHVJSE5qWVd4aGNpQWtlMHBUVDA0dWMzUnlhVzVuYVdaNUtITjBjaWw5WUNrN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCemRISTdYRzRnSUNBZ2ZWeHVmVHRjYm1OdmJuTjBJSE5qYUdWdFlTQTlJRnR0WVhBc0lITmxjVjB1WTI5dVkyRjBLR3B6YjI1VFkyRnNZWEp6TENCcWMyOXVSWEp5YjNJcE8xeHVYRzVsZUhCdmNuUWdleUJ6WTJobGJXRWdmVHRjYmlJc0lDSnBiWEJ2Y25RZ2V5QlRZMkZzWVhJZ2ZTQm1jbTl0SUNjdUxpOHVMaTl1YjJSbGN5OVRZMkZzWVhJdWFuTW5PMXh1YVcxd2IzSjBJSHNnYzNSeWFXNW5hV1o1VTNSeWFXNW5JSDBnWm5KdmJTQW5MaTR2TGk0dmMzUnlhVzVuYVdaNUwzTjBjbWx1WjJsbWVWTjBjbWx1Wnk1cWN5YzdYRzVjYm1OdmJuTjBJR0pwYm1GeWVTQTlJSHRjYmlBZ0lDQnBaR1Z1ZEdsbWVUb2dkbUZzZFdVZ1BUNGdkbUZzZFdVZ2FXNXpkR0Z1WTJWdlppQlZhVzUwT0VGeWNtRjVMQ0F2THlCQ2RXWm1aWElnYVc1b1pYSnBkSE1nWm5KdmJTQlZhVzUwT0VGeWNtRjVYRzRnSUNBZ1pHVm1ZWFZzZERvZ1ptRnNjMlVzWEc0Z0lDQWdkR0ZuT2lBbmRHRm5PbmxoYld3dWIzSm5MREl3TURJNlltbHVZWEo1Snl4Y2JpQWdJQ0F2S2lwY2JpQWdJQ0FnS2lCU1pYUjFjbTV6SUdFZ1FuVm1abVZ5SUdsdUlHNXZaR1VnWVc1a0lHRnVJRlZwYm5RNFFYSnlZWGtnYVc0Z1luSnZkM05sY25OY2JpQWdJQ0FnS2x4dUlDQWdJQ0FxSUZSdklIVnpaU0IwYUdVZ2NtVnpkV3gwYVc1bklHSjFabVpsY2lCaGN5QmhiaUJwYldGblpTd2dlVzkxSjJ4c0lIZGhiblFnZEc4Z1pHOGdjMjl0WlhSb2FXNW5JR3hwYTJVNlhHNGdJQ0FnSUNwY2JpQWdJQ0FnS2lBZ0lHTnZibk4wSUdKc2IySWdQU0J1WlhjZ1FteHZZaWhiWW5WbVptVnlYU3dnZXlCMGVYQmxPaUFuYVcxaFoyVXZhbkJsWnljZ2ZTbGNiaUFnSUNBZ0tpQWdJR1J2WTNWdFpXNTBMbkYxWlhKNVUyVnNaV04wYjNJb0p5TndhRzkwYnljcExuTnlZeUE5SUZWU1RDNWpjbVZoZEdWUFltcGxZM1JWVWt3b1lteHZZaWxjYmlBZ0lDQWdLaTljYmlBZ0lDQnlaWE52YkhabEtITnlZeXdnYjI1RmNuSnZjaWtnZTF4dUlDQWdJQ0FnSUNCcFppQW9kSGx3Wlc5bUlFSjFabVpsY2lBOVBUMGdKMloxYm1OMGFXOXVKeWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlFSjFabVpsY2k1bWNtOXRLSE55WXl3Z0oySmhjMlUyTkNjcE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJR1ZzYzJVZ2FXWWdLSFI1Y0dWdlppQmhkRzlpSUQwOVBTQW5ablZ1WTNScGIyNG5LU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQXZMeUJQYmlCSlJTQXhNU3dnWVhSdllpZ3BJR05oYmlkMElHaGhibVJzWlNCdVpYZHNhVzVsYzF4dUlDQWdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ2MzUnlJRDBnWVhSdllpaHpjbU11Y21Wd2JHRmpaU2d2VzF4Y2JseGNjbDB2Wnl3Z0p5Y3BLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHTnZibk4wSUdKMVptWmxjaUE5SUc1bGR5QlZhVzUwT0VGeWNtRjVLSE4wY2k1c1pXNW5kR2dwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0J6ZEhJdWJHVnVaM1JvT3lBcksya3BYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZblZtWm1WeVcybGRJRDBnYzNSeUxtTm9ZWEpEYjJSbFFYUW9hU2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z1luVm1abVZ5TzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lHVnNjMlVnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdiMjVGY25KdmNpZ25WR2hwY3lCbGJuWnBjbTl1YldWdWRDQmtiMlZ6SUc1dmRDQnpkWEJ3YjNKMElISmxZV1JwYm1jZ1ltbHVZWEo1SUhSaFozTTdJR1ZwZEdobGNpQkNkV1ptWlhJZ2IzSWdZWFJ2WWlCcGN5QnlaWEYxYVhKbFpDY3BPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhOeVl6dGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lIMHNYRzRnSUNBZ2MzUnlhVzVuYVdaNUtIc2dZMjl0YldWdWRDd2dkSGx3WlN3Z2RtRnNkV1VnZlN3Z1kzUjRMQ0J2YmtOdmJXMWxiblFzSUc5dVEyaHZiWEJMWldWd0tTQjdYRzRnSUNBZ0lDQWdJR052Ym5OMElHSjFaaUE5SUhaaGJIVmxPeUF2THlCamFHVmphMlZrSUdWaGNteHBaWElnWW5rZ1ltbHVZWEo1TG1sa1pXNTBhV1o1S0NsY2JpQWdJQ0FnSUNBZ2JHVjBJSE4wY2p0Y2JpQWdJQ0FnSUNBZ2FXWWdLSFI1Y0dWdlppQkNkV1ptWlhJZ1BUMDlJQ2RtZFc1amRHbHZiaWNwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJSE4wY2lBOVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1luVm1JR2x1YzNSaGJtTmxiMllnUW5WbVptVnlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUQ4Z1luVm1MblJ2VTNSeWFXNW5LQ2RpWVhObE5qUW5LVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBNklFSjFabVpsY2k1bWNtOXRLR0oxWmk1aWRXWm1aWElwTG5SdlUzUnlhVzVuS0NkaVlYTmxOalFuS1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQmxiSE5sSUdsbUlDaDBlWEJsYjJZZ1luUnZZU0E5UFQwZ0oyWjFibU4wYVc5dUp5a2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2JHVjBJSE1nUFNBbkp6dGNiaUFnSUNBZ0lDQWdJQ0FnSUdadmNpQW9iR1YwSUdrZ1BTQXdPeUJwSUR3Z1luVm1MbXhsYm1kMGFEc2dLeXRwS1Z4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhNZ0t6MGdVM1J5YVc1bkxtWnliMjFEYUdGeVEyOWtaU2hpZFdaYmFWMHBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2MzUnlJRDBnWW5SdllTaHpLVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIUm9jbTkzSUc1bGR5QkZjbkp2Y2lnblZHaHBjeUJsYm5acGNtOXViV1Z1ZENCa2IyVnpJRzV2ZENCemRYQndiM0owSUhkeWFYUnBibWNnWW1sdVlYSjVJSFJoWjNNN0lHVnBkR2hsY2lCQ2RXWm1aWElnYjNJZ1luUnZZU0JwY3lCeVpYRjFhWEpsWkNjcE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJR2xtSUNnaGRIbHdaU2xjYmlBZ0lDQWdJQ0FnSUNBZ0lIUjVjR1VnUFNCVFkyRnNZWEl1UWt4UFEwdGZURWxVUlZKQlREdGNiaUFnSUNBZ0lDQWdhV1lnS0hSNWNHVWdJVDA5SUZOallXeGhjaTVSVlU5VVJWOUVUMVZDVEVVcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUdOdmJuTjBJR3hwYm1WWGFXUjBhQ0E5SUUxaGRHZ3ViV0Y0S0dOMGVDNXZjSFJwYjI1ekxteHBibVZYYVdSMGFDQXRJR04wZUM1cGJtUmxiblF1YkdWdVozUm9MQ0JqZEhndWIzQjBhVzl1Y3k1dGFXNURiMjUwWlc1MFYybGtkR2dwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ2JpQTlJRTFoZEdndVkyVnBiQ2h6ZEhJdWJHVnVaM1JvSUM4Z2JHbHVaVmRwWkhSb0tUdGNiaUFnSUNBZ0lDQWdJQ0FnSUdOdmJuTjBJR3hwYm1WeklEMGdibVYzSUVGeWNtRjVLRzRwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdabTl5SUNoc1pYUWdhU0E5SURBc0lHOGdQU0F3T3lCcElEd2dianNnS3l0cExDQnZJQ3M5SUd4cGJtVlhhV1IwYUNrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHeHBibVZ6VzJsZElEMGdjM1J5TG5OMVluTjBjaWh2TENCc2FXNWxWMmxrZEdncE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBZ0lDQWdjM1J5SUQwZ2JHbHVaWE11YW05cGJpaDBlWEJsSUQwOVBTQlRZMkZzWVhJdVFreFBRMHRmVEVsVVJWSkJUQ0EvSUNkY1hHNG5JRG9nSnlBbktUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdjM1J5YVc1bmFXWjVVM1J5YVc1bktIc2dZMjl0YldWdWRDd2dkSGx3WlN3Z2RtRnNkV1U2SUhOMGNpQjlMQ0JqZEhnc0lHOXVRMjl0YldWdWRDd2diMjVEYUc5dGNFdGxaWEFwTzF4dUlDQWdJSDFjYm4wN1hHNWNibVY0Y0c5eWRDQjdJR0pwYm1GeWVTQjlPMXh1SWl3Z0ltbHRjRzl5ZENCN0lHbHpVMlZ4TENCcGMxQmhhWElzSUdselRXRndJSDBnWm5KdmJTQW5MaTR2TGk0dmJtOWtaWE12YVdSbGJuUnBkSGt1YW5Nbk8xeHVhVzF3YjNKMElIc2dVR0ZwY2l3Z1kzSmxZWFJsVUdGcGNpQjlJR1p5YjIwZ0p5NHVMeTR1TDI1dlpHVnpMMUJoYVhJdWFuTW5PMXh1YVcxd2IzSjBJSHNnVTJOaGJHRnlJSDBnWm5KdmJTQW5MaTR2TGk0dmJtOWtaWE12VTJOaGJHRnlMbXB6Snp0Y2JtbHRjRzl5ZENCN0lGbEJUVXhUWlhFZ2ZTQm1jbTl0SUNjdUxpOHVMaTl1YjJSbGN5OVpRVTFNVTJWeExtcHpKenRjYmx4dVpuVnVZM1JwYjI0Z2NtVnpiMngyWlZCaGFYSnpLSE5sY1N3Z2IyNUZjbkp2Y2lrZ2UxeHVJQ0FnSUdsbUlDaHBjMU5sY1NoelpYRXBLU0I3WEc0Z0lDQWdJQ0FnSUdadmNpQW9iR1YwSUdrZ1BTQXdPeUJwSUR3Z2MyVnhMbWwwWlcxekxteGxibWQwYURzZ0t5dHBLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnNaWFFnYVhSbGJTQTlJSE5sY1M1cGRHVnRjMXRwWFR0Y2JpQWdJQ0FnSUNBZ0lDQWdJR2xtSUNocGMxQmhhWElvYVhSbGJTa3BYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZMjl1ZEdsdWRXVTdYRzRnSUNBZ0lDQWdJQ0FnSUNCbGJITmxJR2xtSUNocGMwMWhjQ2hwZEdWdEtTa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNocGRHVnRMbWwwWlcxekxteGxibWQwYUNBK0lERXBYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUc5dVJYSnliM0lvSjBWaFkyZ2djR0ZwY2lCdGRYTjBJR2hoZG1VZ2FYUnpJRzkzYmlCelpYRjFaVzVqWlNCcGJtUnBZMkYwYjNJbktUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCd1lXbHlJRDBnYVhSbGJTNXBkR1Z0YzFzd1hTQjhmQ0J1WlhjZ1VHRnBjaWh1WlhjZ1UyTmhiR0Z5S0c1MWJHd3BLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2FYUmxiUzVqYjIxdFpXNTBRbVZtYjNKbEtWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J3WVdseUxtdGxlUzVqYjIxdFpXNTBRbVZtYjNKbElEMGdjR0ZwY2k1clpYa3VZMjl0YldWdWRFSmxabTl5WlZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUHlCZ0pIdHBkR1Z0TG1OdmJXMWxiblJDWldadmNtVjlYRnh1Skh0d1lXbHlMbXRsZVM1amIyMXRaVzUwUW1WbWIzSmxmV0JjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRG9nYVhSbGJTNWpiMjF0Wlc1MFFtVm1iM0psTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDaHBkR1Z0TG1OdmJXMWxiblFwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ1kyNGdQU0J3WVdseUxuWmhiSFZsSUQ4L0lIQmhhWEl1YTJWNU8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JqYmk1amIyMXRaVzUwSUQwZ1kyNHVZMjl0YldWdWRGeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1B5QmdKSHRwZEdWdExtTnZiVzFsYm5SOVhGeHVKSHRqYmk1amIyMXRaVzUwZldCY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSURvZ2FYUmxiUzVqYjIxdFpXNTBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwZEdWdElEMGdjR0ZwY2p0Y2JpQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNBZ0lITmxjUzVwZEdWdGMxdHBYU0E5SUdselVHRnBjaWhwZEdWdEtTQS9JR2wwWlcwZ09pQnVaWGNnVUdGcGNpaHBkR1Z0S1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JpQWdJQ0JsYkhObFhHNGdJQ0FnSUNBZ0lHOXVSWEp5YjNJb0owVjRjR1ZqZEdWa0lHRWdjMlZ4ZFdWdVkyVWdabTl5SUhSb2FYTWdkR0ZuSnlrN1hHNGdJQ0FnY21WMGRYSnVJSE5sY1R0Y2JuMWNibVoxYm1OMGFXOXVJR055WldGMFpWQmhhWEp6S0hOamFHVnRZU3dnYVhSbGNtRmliR1VzSUdOMGVDa2dlMXh1SUNBZ0lHTnZibk4wSUhzZ2NtVndiR0ZqWlhJZ2ZTQTlJR04wZUR0Y2JpQWdJQ0JqYjI1emRDQndZV2x5Y3lBOUlHNWxkeUJaUVUxTVUyVnhLSE5qYUdWdFlTazdYRzRnSUNBZ2NHRnBjbk11ZEdGbklEMGdKM1JoWnpwNVlXMXNMbTl5Wnl3eU1EQXlPbkJoYVhKekp6dGNiaUFnSUNCc1pYUWdhU0E5SURBN1hHNGdJQ0FnYVdZZ0tHbDBaWEpoWW14bElDWW1JRk41YldKdmJDNXBkR1Z5WVhSdmNpQnBiaUJQWW1wbFkzUW9hWFJsY21GaWJHVXBLVnh1SUNBZ0lDQWdJQ0JtYjNJZ0tHeGxkQ0JwZENCdlppQnBkR1Z5WVdKc1pTa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLSFI1Y0dWdlppQnlaWEJzWVdObGNpQTlQVDBnSjJaMWJtTjBhVzl1SnlsY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcGRDQTlJSEpsY0d4aFkyVnlMbU5oYkd3b2FYUmxjbUZpYkdVc0lGTjBjbWx1WnlocEt5c3BMQ0JwZENrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JzWlhRZ2EyVjVMQ0IyWVd4MVpUdGNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDaEJjbkpoZVM1cGMwRnljbUY1S0dsMEtTa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNocGRDNXNaVzVuZEdnZ1BUMDlJRElwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhMlY1SUQwZ2FYUmJNRjA3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIWmhiSFZsSUQwZ2FYUmJNVjA3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdWc2MyVmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZEdoeWIzY2dibVYzSUZSNWNHVkZjbkp2Y2loZ1JYaHdaV04wWldRZ1cydGxlU3dnZG1Gc2RXVmRJSFIxY0d4bE9pQWtlMmwwZldBcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBZ0lDQWdaV3h6WlNCcFppQW9hWFFnSmlZZ2FYUWdhVzV6ZEdGdVkyVnZaaUJQWW1wbFkzUXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JqYjI1emRDQnJaWGx6SUQwZ1QySnFaV04wTG10bGVYTW9hWFFwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDaHJaWGx6TG14bGJtZDBhQ0E5UFQwZ01Ta2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCclpYa2dQU0JyWlhseld6QmRPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCMllXeDFaU0E5SUdsMFcydGxlVjA3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1ZIbHdaVVZ5Y205eUtHQkZlSEJsWTNSbFpDQjBkWEJzWlNCM2FYUm9JRzl1WlNCclpYa3NJRzV2ZENBa2UydGxlWE11YkdWdVozUm9mU0JyWlhsellDazdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnWld4elpTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhMlY1SUQwZ2FYUTdYRzRnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdJQ0J3WVdseWN5NXBkR1Z0Y3k1d2RYTm9LR055WldGMFpWQmhhWElvYTJWNUxDQjJZV3gxWlN3Z1kzUjRLU2s3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNtNGdjR0ZwY25NN1hHNTlYRzVqYjI1emRDQndZV2x5Y3lBOUlIdGNiaUFnSUNCamIyeHNaV04wYVc5dU9pQW5jMlZ4Snl4Y2JpQWdJQ0JrWldaaGRXeDBPaUJtWVd4elpTeGNiaUFnSUNCMFlXYzZJQ2QwWVdjNmVXRnRiQzV2Y21jc01qQXdNanB3WVdseWN5Y3NYRzRnSUNBZ2NtVnpiMngyWlRvZ2NtVnpiMngyWlZCaGFYSnpMRnh1SUNBZ0lHTnlaV0YwWlU1dlpHVTZJR055WldGMFpWQmhhWEp6WEc1OU8xeHVYRzVsZUhCdmNuUWdleUJqY21WaGRHVlFZV2x5Y3l3Z2NHRnBjbk1zSUhKbGMyOXNkbVZRWVdseWN5QjlPMXh1SWl3Z0ltbHRjRzl5ZENCN0lHbHpVMk5oYkdGeUxDQnBjMUJoYVhJZ2ZTQm1jbTl0SUNjdUxpOHVMaTl1YjJSbGN5OXBaR1Z1ZEdsMGVTNXFjeWM3WEc1cGJYQnZjblFnZXlCMGIwcFRJSDBnWm5KdmJTQW5MaTR2TGk0dmJtOWtaWE12ZEc5S1V5NXFjeWM3WEc1cGJYQnZjblFnZXlCWlFVMU1UV0Z3SUgwZ1puSnZiU0FuTGk0dkxpNHZibTlrWlhNdldVRk5URTFoY0M1cWN5YzdYRzVwYlhCdmNuUWdleUJaUVUxTVUyVnhJSDBnWm5KdmJTQW5MaTR2TGk0dmJtOWtaWE12V1VGTlRGTmxjUzVxY3ljN1hHNXBiWEJ2Y25RZ2V5QnlaWE52YkhabFVHRnBjbk1zSUdOeVpXRjBaVkJoYVhKeklIMGdabkp2YlNBbkxpOXdZV2x5Y3k1cWN5YzdYRzVjYm1Oc1lYTnpJRmxCVFV4UFRXRndJR1Y0ZEdWdVpITWdXVUZOVEZObGNTQjdYRzRnSUNBZ1kyOXVjM1J5ZFdOMGIzSW9LU0I3WEc0Z0lDQWdJQ0FnSUhOMWNHVnlLQ2s3WEc0Z0lDQWdJQ0FnSUhSb2FYTXVZV1JrSUQwZ1dVRk5URTFoY0M1d2NtOTBiM1I1Y0dVdVlXUmtMbUpwYm1Rb2RHaHBjeWs3WEc0Z0lDQWdJQ0FnSUhSb2FYTXVaR1ZzWlhSbElEMGdXVUZOVEUxaGNDNXdjbTkwYjNSNWNHVXVaR1ZzWlhSbExtSnBibVFvZEdocGN5azdYRzRnSUNBZ0lDQWdJSFJvYVhNdVoyVjBJRDBnV1VGTlRFMWhjQzV3Y205MGIzUjVjR1V1WjJWMExtSnBibVFvZEdocGN5azdYRzRnSUNBZ0lDQWdJSFJvYVhNdWFHRnpJRDBnV1VGTlRFMWhjQzV3Y205MGIzUjVjR1V1YUdGekxtSnBibVFvZEdocGN5azdYRzRnSUNBZ0lDQWdJSFJvYVhNdWMyVjBJRDBnV1VGTlRFMWhjQzV3Y205MGIzUjVjR1V1YzJWMExtSnBibVFvZEdocGN5azdYRzRnSUNBZ0lDQWdJSFJvYVhNdWRHRm5JRDBnV1VGTlRFOU5ZWEF1ZEdGbk8xeHVJQ0FnSUgxY2JpQWdJQ0F2S2lwY2JpQWdJQ0FnS2lCSlppQmdZM1I0WUNCcGN5Qm5hWFpsYml3Z2RHaGxJSEpsZEhWeWJpQjBlWEJsSUdseklHRmpkSFZoYkd4NUlHQk5ZWEE4ZFc1cmJtOTNiaXdnZFc1cmJtOTNiajVnTEZ4dUlDQWdJQ0FxSUdKMWRDQlVlWEJsVTJOeWFYQjBJSGR2YmlkMElHRnNiRzkzSUhkcFpHVnVhVzVuSUhSb1pTQnphV2R1WVhSMWNtVWdiMllnWVNCamFHbHNaQ0J0WlhSb2IyUXVYRzRnSUNBZ0lDb3ZYRzRnSUNBZ2RHOUtVMDlPS0Y4c0lHTjBlQ2tnZTF4dUlDQWdJQ0FnSUNCcFppQW9JV04wZUNsY2JpQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQnpkWEJsY2k1MGIwcFRUMDRvWHlrN1hHNGdJQ0FnSUNBZ0lHTnZibk4wSUcxaGNDQTlJRzVsZHlCTllYQW9LVHRjYmlBZ0lDQWdJQ0FnYVdZZ0tHTjBlRDh1YjI1RGNtVmhkR1VwWEc0Z0lDQWdJQ0FnSUNBZ0lDQmpkSGd1YjI1RGNtVmhkR1VvYldGd0tUdGNiaUFnSUNBZ0lDQWdabTl5SUNoamIyNXpkQ0J3WVdseUlHOW1JSFJvYVhNdWFYUmxiWE1wSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJR3hsZENCclpYa3NJSFpoYkhWbE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tHbHpVR0ZwY2lod1lXbHlLU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUd0bGVTQTlJSFJ2U2xNb2NHRnBjaTVyWlhrc0lDY25MQ0JqZEhncE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIWmhiSFZsSUQwZ2RHOUtVeWh3WVdseUxuWmhiSFZsTENCclpYa3NJR04wZUNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ0lDQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCclpYa2dQU0IwYjBwVEtIQmhhWElzSUNjbkxDQmpkSGdwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLRzFoY0M1b1lYTW9hMlY1S1NsY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1JYSnliM0lvSjA5eVpHVnlaV1FnYldGd2N5QnRkWE4wSUc1dmRDQnBibU5zZFdSbElHUjFjR3hwWTJGMFpTQnJaWGx6SnlrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J0WVhBdWMyVjBLR3RsZVN3Z2RtRnNkV1VwTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCdFlYQTdYRzRnSUNBZ2ZWeHVJQ0FnSUhOMFlYUnBZeUJtY205dEtITmphR1Z0WVN3Z2FYUmxjbUZpYkdVc0lHTjBlQ2tnZTF4dUlDQWdJQ0FnSUNCamIyNXpkQ0J3WVdseWN5QTlJR055WldGMFpWQmhhWEp6S0hOamFHVnRZU3dnYVhSbGNtRmliR1VzSUdOMGVDazdYRzRnSUNBZ0lDQWdJR052Ym5OMElHOXRZWEFnUFNCdVpYY2dkR2hwY3lncE8xeHVJQ0FnSUNBZ0lDQnZiV0Z3TG1sMFpXMXpJRDBnY0dGcGNuTXVhWFJsYlhNN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCdmJXRndPMXh1SUNBZ0lIMWNibjFjYmxsQlRVeFBUV0Z3TG5SaFp5QTlJQ2QwWVdjNmVXRnRiQzV2Y21jc01qQXdNanB2YldGd0p6dGNibU52Ym5OMElHOXRZWEFnUFNCN1hHNGdJQ0FnWTI5c2JHVmpkR2x2YmpvZ0ozTmxjU2NzWEc0Z0lDQWdhV1JsYm5ScFpuazZJSFpoYkhWbElEMCtJSFpoYkhWbElHbHVjM1JoYm1ObGIyWWdUV0Z3TEZ4dUlDQWdJRzV2WkdWRGJHRnpjem9nV1VGTlRFOU5ZWEFzWEc0Z0lDQWdaR1ZtWVhWc2REb2dabUZzYzJVc1hHNGdJQ0FnZEdGbk9pQW5kR0ZuT25saGJXd3ViM0puTERJd01ESTZiMjFoY0Njc1hHNGdJQ0FnY21WemIyeDJaU2h6WlhFc0lHOXVSWEp5YjNJcElIdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2NHRnBjbk1nUFNCeVpYTnZiSFpsVUdGcGNuTW9jMlZ4TENCdmJrVnljbTl5S1R0Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnYzJWbGJrdGxlWE1nUFNCYlhUdGNiaUFnSUNBZ0lDQWdabTl5SUNoamIyNXpkQ0I3SUd0bGVTQjlJRzltSUhCaGFYSnpMbWwwWlcxektTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCcFppQW9hWE5UWTJGc1lYSW9hMlY1S1NrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2h6WldWdVMyVjVjeTVwYm1Oc2RXUmxjeWhyWlhrdWRtRnNkV1VwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRzl1UlhKeWIzSW9ZRTl5WkdWeVpXUWdiV0Z3Y3lCdGRYTjBJRzV2ZENCcGJtTnNkV1JsSUdSMWNHeHBZMkYwWlNCclpYbHpPaUFrZTJ0bGVTNTJZV3gxWlgxZ0tUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSE5sWlc1TFpYbHpMbkIxYzJnb2EyVjVMblpoYkhWbEtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlFOWlhbVZqZEM1aGMzTnBaMjRvYm1WM0lGbEJUVXhQVFdGd0tDa3NJSEJoYVhKektUdGNiaUFnSUNCOUxGeHVJQ0FnSUdOeVpXRjBaVTV2WkdVNklDaHpZMmhsYldFc0lHbDBaWEpoWW14bExDQmpkSGdwSUQwK0lGbEJUVXhQVFdGd0xtWnliMjBvYzJOb1pXMWhMQ0JwZEdWeVlXSnNaU3dnWTNSNEtWeHVmVHRjYmx4dVpYaHdiM0owSUhzZ1dVRk5URTlOWVhBc0lHOXRZWEFnZlR0Y2JpSXNJQ0pwYlhCdmNuUWdleUJUWTJGc1lYSWdmU0JtY205dElDY3VMaTh1TGk5dWIyUmxjeTlUWTJGc1lYSXVhbk1uTzF4dVhHNW1kVzVqZEdsdmJpQmliMjlzVTNSeWFXNW5hV1o1S0hzZ2RtRnNkV1VzSUhOdmRYSmpaU0I5TENCamRIZ3BJSHRjYmlBZ0lDQmpiMjV6ZENCaWIyOXNUMkpxSUQwZ2RtRnNkV1VnUHlCMGNuVmxWR0ZuSURvZ1ptRnNjMlZVWVdjN1hHNGdJQ0FnYVdZZ0tITnZkWEpqWlNBbUppQmliMjlzVDJKcUxuUmxjM1F1ZEdWemRDaHpiM1Z5WTJVcEtWeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2MyOTFjbU5sTzF4dUlDQWdJSEpsZEhWeWJpQjJZV3gxWlNBL0lHTjBlQzV2Y0hScGIyNXpMblJ5ZFdWVGRISWdPaUJqZEhndWIzQjBhVzl1Y3k1bVlXeHpaVk4wY2p0Y2JuMWNibU52Ym5OMElIUnlkV1ZVWVdjZ1BTQjdYRzRnSUNBZ2FXUmxiblJwWm5rNklIWmhiSFZsSUQwK0lIWmhiSFZsSUQwOVBTQjBjblZsTEZ4dUlDQWdJR1JsWm1GMWJIUTZJSFJ5ZFdVc1hHNGdJQ0FnZEdGbk9pQW5kR0ZuT25saGJXd3ViM0puTERJd01ESTZZbTl2YkNjc1hHNGdJQ0FnZEdWemREb2dMMTRvUHpwWmZIbDhXMWw1WFdWemZGbEZVM3hiVkhSZGNuVmxmRlJTVlVWOFcwOXZYVzU4VDA0cEpDOHNYRzRnSUNBZ2NtVnpiMngyWlRvZ0tDa2dQVDRnYm1WM0lGTmpZV3hoY2loMGNuVmxLU3hjYmlBZ0lDQnpkSEpwYm1kcFpuazZJR0p2YjJ4VGRISnBibWRwWm5sY2JuMDdYRzVqYjI1emRDQm1ZV3h6WlZSaFp5QTlJSHRjYmlBZ0lDQnBaR1Z1ZEdsbWVUb2dkbUZzZFdVZ1BUNGdkbUZzZFdVZ1BUMDlJR1poYkhObExGeHVJQ0FnSUdSbFptRjFiSFE2SUhSeWRXVXNYRzRnSUNBZ2RHRm5PaUFuZEdGbk9ubGhiV3d1YjNKbkxESXdNREk2WW05dmJDY3NYRzRnSUNBZ2RHVnpkRG9nTDE0b1B6cE9mRzU4VzA1dVhXOThUazk4VzBabVhXRnNjMlY4UmtGTVUwVjhXMDl2WFdabWZFOUdSaWtrTHl4Y2JpQWdJQ0J5WlhOdmJIWmxPaUFvS1NBOVBpQnVaWGNnVTJOaGJHRnlLR1poYkhObEtTeGNiaUFnSUNCemRISnBibWRwWm5rNklHSnZiMnhUZEhKcGJtZHBabmxjYm4wN1hHNWNibVY0Y0c5eWRDQjdJR1poYkhObFZHRm5MQ0IwY25WbFZHRm5JSDA3WEc0aUxDQWlhVzF3YjNKMElIc2dVMk5oYkdGeUlIMGdabkp2YlNBbkxpNHZMaTR2Ym05a1pYTXZVMk5oYkdGeUxtcHpKenRjYm1sdGNHOXlkQ0I3SUhOMGNtbHVaMmxtZVU1MWJXSmxjaUI5SUdaeWIyMGdKeTR1THk0dUwzTjBjbWx1WjJsbWVTOXpkSEpwYm1kcFpubE9kVzFpWlhJdWFuTW5PMXh1WEc1amIyNXpkQ0JtYkc5aGRFNWhUaUE5SUh0Y2JpQWdJQ0JwWkdWdWRHbG1lVG9nZG1Gc2RXVWdQVDRnZEhsd1pXOW1JSFpoYkhWbElEMDlQU0FuYm5WdFltVnlKeXhjYmlBZ0lDQmtaV1poZFd4ME9pQjBjblZsTEZ4dUlDQWdJSFJoWnpvZ0ozUmhaenA1WVcxc0xtOXlaeXd5TURBeU9tWnNiMkYwSnl4Y2JpQWdJQ0IwWlhOME9pQXZYaWcvT2xzdEsxMC9YRnd1S0Q4NmFXNW1mRWx1Wm54SlRrWXBmRnhjTG01aGJueGNYQzVPWVU1OFhGd3VUa0ZPS1NRdkxGeHVJQ0FnSUhKbGMyOXNkbVU2SUNoemRISXBJRDArSUhOMGNpNXpiR2xqWlNndE15a3VkRzlNYjNkbGNrTmhjMlVvS1NBOVBUMGdKMjVoYmlkY2JpQWdJQ0FnSUNBZ1B5Qk9ZVTVjYmlBZ0lDQWdJQ0FnT2lCemRISmJNRjBnUFQwOUlDY3RKMXh1SUNBZ0lDQWdJQ0FnSUNBZ1B5Qk9kVzFpWlhJdVRrVkhRVlJKVmtWZlNVNUdTVTVKVkZsY2JpQWdJQ0FnSUNBZ0lDQWdJRG9nVG5WdFltVnlMbEJQVTBsVVNWWkZYMGxPUmtsT1NWUlpMRnh1SUNBZ0lITjBjbWx1WjJsbWVUb2djM1J5YVc1bmFXWjVUblZ0WW1WeVhHNTlPMXh1WTI5dWMzUWdabXh2WVhSRmVIQWdQU0I3WEc0Z0lDQWdhV1JsYm5ScFpuazZJSFpoYkhWbElEMCtJSFI1Y0dWdlppQjJZV3gxWlNBOVBUMGdKMjUxYldKbGNpY3NYRzRnSUNBZ1pHVm1ZWFZzZERvZ2RISjFaU3hjYmlBZ0lDQjBZV2M2SUNkMFlXYzZlV0Z0YkM1dmNtY3NNakF3TWpwbWJHOWhkQ2NzWEc0Z0lDQWdabTl5YldGME9pQW5SVmhRSnl4Y2JpQWdJQ0IwWlhOME9pQXZYbHN0SzEwL0tEODZXekF0T1YxYk1DMDVYMTBxS1Q4b1B6cGNYQzViTUMwNVgxMHFLVDliWlVWZFd5MHJYVDliTUMwNVhTc2tMeXhjYmlBZ0lDQnlaWE52YkhabE9pQW9jM1J5S1NBOVBpQndZWEp6WlVac2IyRjBLSE4wY2k1eVpYQnNZV05sS0M5ZkwyY3NJQ2NuS1Nrc1hHNGdJQ0FnYzNSeWFXNW5hV1o1S0c1dlpHVXBJSHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdiblZ0SUQwZ1RuVnRZbVZ5S0c1dlpHVXVkbUZzZFdVcE8xeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2FYTkdhVzVwZEdVb2JuVnRLU0EvSUc1MWJTNTBiMFY0Y0c5dVpXNTBhV0ZzS0NrZ09pQnpkSEpwYm1kcFpubE9kVzFpWlhJb2JtOWtaU2s3WEc0Z0lDQWdmVnh1ZlR0Y2JtTnZibk4wSUdac2IyRjBJRDBnZTF4dUlDQWdJR2xrWlc1MGFXWjVPaUIyWVd4MVpTQTlQaUIwZVhCbGIyWWdkbUZzZFdVZ1BUMDlJQ2R1ZFcxaVpYSW5MRnh1SUNBZ0lHUmxabUYxYkhRNklIUnlkV1VzWEc0Z0lDQWdkR0ZuT2lBbmRHRm5PbmxoYld3dWIzSm5MREl3TURJNlpteHZZWFFuTEZ4dUlDQWdJSFJsYzNRNklDOWVXeTByWFQ4b1B6cGJNQzA1WFZzd0xUbGZYU29wUDF4Y0xsc3dMVGxmWFNva0x5eGNiaUFnSUNCeVpYTnZiSFpsS0hOMGNpa2dlMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQnViMlJsSUQwZ2JtVjNJRk5qWVd4aGNpaHdZWEp6WlVac2IyRjBLSE4wY2k1eVpYQnNZV05sS0M5ZkwyY3NJQ2NuS1NrcE8xeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCa2IzUWdQU0J6ZEhJdWFXNWtaWGhQWmlnbkxpY3BPMXh1SUNBZ0lDQWdJQ0JwWmlBb1pHOTBJQ0U5UFNBdE1Ta2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ1kyOXVjM1FnWmlBOUlITjBjaTV6ZFdKemRISnBibWNvWkc5MElDc2dNU2t1Y21Wd2JHRmpaU2d2WHk5bkxDQW5KeWs3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFvWmx0bUxteGxibWQwYUNBdElERmRJRDA5UFNBbk1DY3BYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdibTlrWlM1dGFXNUdjbUZqZEdsdmJrUnBaMmwwY3lBOUlHWXViR1Z1WjNSb08xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQnViMlJsTzF4dUlDQWdJSDBzWEc0Z0lDQWdjM1J5YVc1bmFXWjVPaUJ6ZEhKcGJtZHBabmxPZFcxaVpYSmNibjA3WEc1Y2JtVjRjRzl5ZENCN0lHWnNiMkYwTENCbWJHOWhkRVY0Y0N3Z1pteHZZWFJPWVU0Z2ZUdGNiaUlzSUNKcGJYQnZjblFnZXlCemRISnBibWRwWm5sT2RXMWlaWElnZlNCbWNtOXRJQ2N1TGk4dUxpOXpkSEpwYm1kcFpua3ZjM1J5YVc1bmFXWjVUblZ0WW1WeUxtcHpKenRjYmx4dVkyOXVjM1FnYVc1MFNXUmxiblJwWm5rZ1BTQW9kbUZzZFdVcElEMCtJSFI1Y0dWdlppQjJZV3gxWlNBOVBUMGdKMkpwWjJsdWRDY2dmSHdnVG5WdFltVnlMbWx6U1c1MFpXZGxjaWgyWVd4MVpTazdYRzVtZFc1amRHbHZiaUJwYm5SU1pYTnZiSFpsS0hOMGNpd2diMlptYzJWMExDQnlZV1JwZUN3Z2V5QnBiblJCYzBKcFowbHVkQ0I5S1NCN1hHNGdJQ0FnWTI5dWMzUWdjMmxuYmlBOUlITjBjbHN3WFR0Y2JpQWdJQ0JwWmlBb2MybG5iaUE5UFQwZ0p5MG5JSHg4SUhOcFoyNGdQVDA5SUNjckp5bGNiaUFnSUNBZ0lDQWdiMlptYzJWMElDczlJREU3WEc0Z0lDQWdjM1J5SUQwZ2MzUnlMbk4xWW5OMGNtbHVaeWh2Wm1aelpYUXBMbkpsY0d4aFkyVW9MMTh2Wnl3Z0p5Y3BPMXh1SUNBZ0lHbG1JQ2hwYm5SQmMwSnBaMGx1ZENrZ2UxeHVJQ0FnSUNBZ0lDQnpkMmwwWTJnZ0tISmhaR2w0S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JqWVhObElESTZYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjM1J5SUQwZ1lEQmlKSHR6ZEhKOVlEdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmljbVZoYXp0Y2JpQWdJQ0FnSUNBZ0lDQWdJR05oYzJVZ09EcGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnpkSElnUFNCZ01HOGtlM04wY24xZ08xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHSnlaV0ZyTzF4dUlDQWdJQ0FnSUNBZ0lDQWdZMkZ6WlNBeE5qcGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnpkSElnUFNCZ01IZ2tlM04wY24xZ08xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHSnlaV0ZyTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lHTnZibk4wSUc0Z1BTQkNhV2RKYm5Rb2MzUnlLVHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJSE5wWjI0Z1BUMDlJQ2N0SnlBL0lFSnBaMGx1ZENndE1Ta2dLaUJ1SURvZ2JqdGNiaUFnSUNCOVhHNGdJQ0FnWTI5dWMzUWdiaUE5SUhCaGNuTmxTVzUwS0hOMGNpd2djbUZrYVhncE8xeHVJQ0FnSUhKbGRIVnliaUJ6YVdkdUlEMDlQU0FuTFNjZ1B5QXRNU0FxSUc0Z09pQnVPMXh1ZlZ4dVpuVnVZM1JwYjI0Z2FXNTBVM1J5YVc1bmFXWjVLRzV2WkdVc0lISmhaR2w0TENCd2NtVm1hWGdwSUh0Y2JpQWdJQ0JqYjI1emRDQjdJSFpoYkhWbElIMGdQU0J1YjJSbE8xeHVJQ0FnSUdsbUlDaHBiblJKWkdWdWRHbG1lU2gyWVd4MVpTa3BJSHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdjM1J5SUQwZ2RtRnNkV1V1ZEc5VGRISnBibWNvY21Ga2FYZ3BPMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdkbUZzZFdVZ1BDQXdJRDhnSnkwbklDc2djSEpsWm1sNElDc2djM1J5TG5OMVluTjBjaWd4S1NBNklIQnlaV1pwZUNBcklITjBjanRjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUhOMGNtbHVaMmxtZVU1MWJXSmxjaWh1YjJSbEtUdGNibjFjYm1OdmJuTjBJR2x1ZEVKcGJpQTlJSHRjYmlBZ0lDQnBaR1Z1ZEdsbWVUb2dhVzUwU1dSbGJuUnBabmtzWEc0Z0lDQWdaR1ZtWVhWc2REb2dkSEoxWlN4Y2JpQWdJQ0IwWVdjNklDZDBZV2M2ZVdGdGJDNXZjbWNzTWpBd01qcHBiblFuTEZ4dUlDQWdJR1p2Y20xaGREb2dKMEpKVGljc1hHNGdJQ0FnZEdWemREb2dMMTViTFN0ZFB6QmlXekF0TVY5ZEt5UXZMRnh1SUNBZ0lISmxjMjlzZG1VNklDaHpkSElzSUY5dmJrVnljbTl5TENCdmNIUXBJRDArSUdsdWRGSmxjMjlzZG1Vb2MzUnlMQ0F5TENBeUxDQnZjSFFwTEZ4dUlDQWdJSE4wY21sdVoybG1lVG9nYm05a1pTQTlQaUJwYm5SVGRISnBibWRwWm5rb2JtOWtaU3dnTWl3Z0p6QmlKeWxjYm4wN1hHNWpiMjV6ZENCcGJuUlBZM1FnUFNCN1hHNGdJQ0FnYVdSbGJuUnBabms2SUdsdWRFbGtaVzUwYVdaNUxGeHVJQ0FnSUdSbFptRjFiSFE2SUhSeWRXVXNYRzRnSUNBZ2RHRm5PaUFuZEdGbk9ubGhiV3d1YjNKbkxESXdNREk2YVc1MEp5eGNiaUFnSUNCbWIzSnRZWFE2SUNkUFExUW5MRnh1SUNBZ0lIUmxjM1E2SUM5ZVd5MHJYVDh3V3pBdE4xOWRLeVF2TEZ4dUlDQWdJSEpsYzI5c2RtVTZJQ2h6ZEhJc0lGOXZia1Z5Y205eUxDQnZjSFFwSUQwK0lHbHVkRkpsYzI5c2RtVW9jM1J5TENBeExDQTRMQ0J2Y0hRcExGeHVJQ0FnSUhOMGNtbHVaMmxtZVRvZ2JtOWtaU0E5UGlCcGJuUlRkSEpwYm1kcFpua29ibTlrWlN3Z09Dd2dKekFuS1Z4dWZUdGNibU52Ym5OMElHbHVkQ0E5SUh0Y2JpQWdJQ0JwWkdWdWRHbG1lVG9nYVc1MFNXUmxiblJwWm5rc1hHNGdJQ0FnWkdWbVlYVnNkRG9nZEhKMVpTeGNiaUFnSUNCMFlXYzZJQ2QwWVdjNmVXRnRiQzV2Y21jc01qQXdNanBwYm5RbkxGeHVJQ0FnSUhSbGMzUTZJQzllV3kwclhUOWJNQzA1WFZzd0xUbGZYU29rTHl4Y2JpQWdJQ0J5WlhOdmJIWmxPaUFvYzNSeUxDQmZiMjVGY25KdmNpd2diM0IwS1NBOVBpQnBiblJTWlhOdmJIWmxLSE4wY2l3Z01Dd2dNVEFzSUc5d2RDa3NYRzRnSUNBZ2MzUnlhVzVuYVdaNU9pQnpkSEpwYm1kcFpubE9kVzFpWlhKY2JuMDdYRzVqYjI1emRDQnBiblJJWlhnZ1BTQjdYRzRnSUNBZ2FXUmxiblJwWm5rNklHbHVkRWxrWlc1MGFXWjVMRnh1SUNBZ0lHUmxabUYxYkhRNklIUnlkV1VzWEc0Z0lDQWdkR0ZuT2lBbmRHRm5PbmxoYld3dWIzSm5MREl3TURJNmFXNTBKeXhjYmlBZ0lDQm1iM0p0WVhRNklDZElSVmduTEZ4dUlDQWdJSFJsYzNRNklDOWVXeTByWFQ4d2VGc3dMVGxoTFdaQkxVWmZYU3NrTHl4Y2JpQWdJQ0J5WlhOdmJIWmxPaUFvYzNSeUxDQmZiMjVGY25KdmNpd2diM0IwS1NBOVBpQnBiblJTWlhOdmJIWmxLSE4wY2l3Z01pd2dNVFlzSUc5d2RDa3NYRzRnSUNBZ2MzUnlhVzVuYVdaNU9pQnViMlJsSUQwK0lHbHVkRk4wY21sdVoybG1lU2h1YjJSbExDQXhOaXdnSnpCNEp5bGNibjA3WEc1Y2JtVjRjRzl5ZENCN0lHbHVkQ3dnYVc1MFFtbHVMQ0JwYm5SSVpYZ3NJR2x1ZEU5amRDQjlPMXh1SWl3Z0ltbHRjRzl5ZENCN0lHbHpUV0Z3TENCcGMxQmhhWElzSUdselUyTmhiR0Z5SUgwZ1puSnZiU0FuTGk0dkxpNHZibTlrWlhNdmFXUmxiblJwZEhrdWFuTW5PMXh1YVcxd2IzSjBJSHNnVUdGcGNpd2dZM0psWVhSbFVHRnBjaUI5SUdaeWIyMGdKeTR1THk0dUwyNXZaR1Z6TDFCaGFYSXVhbk1uTzF4dWFXMXdiM0owSUhzZ1dVRk5URTFoY0N3Z1ptbHVaRkJoYVhJZ2ZTQm1jbTl0SUNjdUxpOHVMaTl1YjJSbGN5OVpRVTFNVFdGd0xtcHpKenRjYmx4dVkyeGhjM01nV1VGTlRGTmxkQ0JsZUhSbGJtUnpJRmxCVFV4TllYQWdlMXh1SUNBZ0lHTnZibk4wY25WamRHOXlLSE5qYUdWdFlTa2dlMXh1SUNBZ0lDQWdJQ0J6ZFhCbGNpaHpZMmhsYldFcE8xeHVJQ0FnSUNBZ0lDQjBhR2x6TG5SaFp5QTlJRmxCVFV4VFpYUXVkR0ZuTzF4dUlDQWdJSDFjYmlBZ0lDQmhaR1FvYTJWNUtTQjdYRzRnSUNBZ0lDQWdJR3hsZENCd1lXbHlPMXh1SUNBZ0lDQWdJQ0JwWmlBb2FYTlFZV2x5S0d0bGVTa3BYRzRnSUNBZ0lDQWdJQ0FnSUNCd1lXbHlJRDBnYTJWNU8xeHVJQ0FnSUNBZ0lDQmxiSE5sSUdsbUlDaHJaWGtnSmlaY2JpQWdJQ0FnSUNBZ0lDQWdJSFI1Y0dWdlppQnJaWGtnUFQwOUlDZHZZbXBsWTNRbklDWW1YRzRnSUNBZ0lDQWdJQ0FnSUNBbmEyVjVKeUJwYmlCclpYa2dKaVpjYmlBZ0lDQWdJQ0FnSUNBZ0lDZDJZV3gxWlNjZ2FXNGdhMlY1SUNZbVhHNGdJQ0FnSUNBZ0lDQWdJQ0JyWlhrdWRtRnNkV1VnUFQwOUlHNTFiR3dwWEc0Z0lDQWdJQ0FnSUNBZ0lDQndZV2x5SUQwZ2JtVjNJRkJoYVhJb2EyVjVMbXRsZVN3Z2JuVnNiQ2s3WEc0Z0lDQWdJQ0FnSUdWc2MyVmNiaUFnSUNBZ0lDQWdJQ0FnSUhCaGFYSWdQU0J1WlhjZ1VHRnBjaWhyWlhrc0lHNTFiR3dwTzF4dUlDQWdJQ0FnSUNCamIyNXpkQ0J3Y21WMklEMGdabWx1WkZCaGFYSW9kR2hwY3k1cGRHVnRjeXdnY0dGcGNpNXJaWGtwTzF4dUlDQWdJQ0FnSUNCcFppQW9JWEJ5WlhZcFhHNGdJQ0FnSUNBZ0lDQWdJQ0IwYUdsekxtbDBaVzF6TG5CMWMyZ29jR0ZwY2lrN1hHNGdJQ0FnZlZ4dUlDQWdJQzhxS2x4dUlDQWdJQ0FxSUVsbUlHQnJaV1Z3VUdGcGNtQWdhWE1nWUhSeWRXVmdMQ0J5WlhSMWNtNXpJSFJvWlNCUVlXbHlJRzFoZEdOb2FXNW5JR0JyWlhsZ0xseHVJQ0FnSUNBcUlFOTBhR1Z5ZDJselpTd2djbVYwZFhKdWN5QjBhR1VnZG1Gc2RXVWdiMllnZEdoaGRDQlFZV2x5SjNNZ2EyVjVMbHh1SUNBZ0lDQXFMMXh1SUNBZ0lHZGxkQ2hyWlhrc0lHdGxaWEJRWVdseUtTQjdYRzRnSUNBZ0lDQWdJR052Ym5OMElIQmhhWElnUFNCbWFXNWtVR0ZwY2loMGFHbHpMbWwwWlcxekxDQnJaWGtwTzF4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnSVd0bFpYQlFZV2x5SUNZbUlHbHpVR0ZwY2lod1lXbHlLVnh1SUNBZ0lDQWdJQ0FnSUNBZ1B5QnBjMU5qWVd4aGNpaHdZV2x5TG10bGVTbGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQS9JSEJoYVhJdWEyVjVMblpoYkhWbFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ09pQndZV2x5TG10bGVWeHVJQ0FnSUNBZ0lDQWdJQ0FnT2lCd1lXbHlPMXh1SUNBZ0lIMWNiaUFnSUNCelpYUW9hMlY1TENCMllXeDFaU2tnZTF4dUlDQWdJQ0FnSUNCcFppQW9kSGx3Wlc5bUlIWmhiSFZsSUNFOVBTQW5ZbTl2YkdWaGJpY3BYRzRnSUNBZ0lDQWdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1JYSnliM0lvWUVWNGNHVmpkR1ZrSUdKdmIyeGxZVzRnZG1Gc2RXVWdabTl5SUhObGRDaHJaWGtzSUhaaGJIVmxLU0JwYmlCaElGbEJUVXdnYzJWMExDQnViM1FnSkh0MGVYQmxiMllnZG1Gc2RXVjlZQ2s3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJSEJ5WlhZZ1BTQm1hVzVrVUdGcGNpaDBhR2x6TG1sMFpXMXpMQ0JyWlhrcE8xeHVJQ0FnSUNBZ0lDQnBaaUFvY0hKbGRpQW1KaUFoZG1Gc2RXVXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIUm9hWE11YVhSbGJYTXVjM0JzYVdObEtIUm9hWE11YVhSbGJYTXVhVzVrWlhoUFppaHdjbVYyS1N3Z01TazdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnWld4elpTQnBaaUFvSVhCeVpYWWdKaVlnZG1Gc2RXVXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIUm9hWE11YVhSbGJYTXVjSFZ6YUNodVpYY2dVR0ZwY2loclpYa3BLVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ0lDQjBiMHBUVDA0b1h5d2dZM1I0S1NCN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCemRYQmxjaTUwYjBwVFQwNG9YeXdnWTNSNExDQlRaWFFwTzF4dUlDQWdJSDFjYmlBZ0lDQjBiMU4wY21sdVp5aGpkSGdzSUc5dVEyOXRiV1Z1ZEN3Z2IyNURhRzl0Y0V0bFpYQXBJSHRjYmlBZ0lDQWdJQ0FnYVdZZ0tDRmpkSGdwWEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z1NsTlBUaTV6ZEhKcGJtZHBabmtvZEdocGN5azdYRzRnSUNBZ0lDQWdJR2xtSUNoMGFHbHpMbWhoYzBGc2JFNTFiR3hXWVd4MVpYTW9kSEoxWlNrcFhHNGdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdjM1Z3WlhJdWRHOVRkSEpwYm1jb1QySnFaV04wTG1GemMybG5iaWg3ZlN3Z1kzUjRMQ0I3SUdGc2JFNTFiR3hXWVd4MVpYTTZJSFJ5ZFdVZ2ZTa3NJRzl1UTI5dGJXVnVkQ3dnYjI1RGFHOXRjRXRsWlhBcE8xeHVJQ0FnSUNBZ0lDQmxiSE5sWEc0Z0lDQWdJQ0FnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dSWEp5YjNJb0oxTmxkQ0JwZEdWdGN5QnRkWE4wSUdGc2JDQm9ZWFpsSUc1MWJHd2dkbUZzZFdWekp5azdYRzRnSUNBZ2ZWeHVJQ0FnSUhOMFlYUnBZeUJtY205dEtITmphR1Z0WVN3Z2FYUmxjbUZpYkdVc0lHTjBlQ2tnZTF4dUlDQWdJQ0FnSUNCamIyNXpkQ0I3SUhKbGNHeGhZMlZ5SUgwZ1BTQmpkSGc3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJSE5sZENBOUlHNWxkeUIwYUdsektITmphR1Z0WVNrN1hHNGdJQ0FnSUNBZ0lHbG1JQ2hwZEdWeVlXSnNaU0FtSmlCVGVXMWliMnd1YVhSbGNtRjBiM0lnYVc0Z1QySnFaV04wS0dsMFpYSmhZbXhsS1NsY2JpQWdJQ0FnSUNBZ0lDQWdJR1p2Y2lBb2JHVjBJSFpoYkhWbElHOW1JR2wwWlhKaFlteGxLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tIUjVjR1Z2WmlCeVpYQnNZV05sY2lBOVBUMGdKMloxYm1OMGFXOXVKeWxjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RtRnNkV1VnUFNCeVpYQnNZV05sY2k1allXeHNLR2wwWlhKaFlteGxMQ0IyWVd4MVpTd2dkbUZzZFdVcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lITmxkQzVwZEdWdGN5NXdkWE5vS0dOeVpXRjBaVkJoYVhJb2RtRnNkV1VzSUc1MWJHd3NJR04wZUNrcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnYzJWME8xeHVJQ0FnSUgxY2JuMWNibGxCVFV4VFpYUXVkR0ZuSUQwZ0ozUmhaenA1WVcxc0xtOXlaeXd5TURBeU9uTmxkQ2M3WEc1amIyNXpkQ0J6WlhRZ1BTQjdYRzRnSUNBZ1kyOXNiR1ZqZEdsdmJqb2dKMjFoY0Njc1hHNGdJQ0FnYVdSbGJuUnBabms2SUhaaGJIVmxJRDArSUhaaGJIVmxJR2x1YzNSaGJtTmxiMllnVTJWMExGeHVJQ0FnSUc1dlpHVkRiR0Z6Y3pvZ1dVRk5URk5sZEN4Y2JpQWdJQ0JrWldaaGRXeDBPaUJtWVd4elpTeGNiaUFnSUNCMFlXYzZJQ2QwWVdjNmVXRnRiQzV2Y21jc01qQXdNanB6WlhRbkxGeHVJQ0FnSUdOeVpXRjBaVTV2WkdVNklDaHpZMmhsYldFc0lHbDBaWEpoWW14bExDQmpkSGdwSUQwK0lGbEJUVXhUWlhRdVpuSnZiU2h6WTJobGJXRXNJR2wwWlhKaFlteGxMQ0JqZEhncExGeHVJQ0FnSUhKbGMyOXNkbVVvYldGd0xDQnZia1Z5Y205eUtTQjdYRzRnSUNBZ0lDQWdJR2xtSUNocGMwMWhjQ2h0WVhBcEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCcFppQW9iV0Z3TG1oaGMwRnNiRTUxYkd4V1lXeDFaWE1vZEhKMVpTa3BYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlFOWlhbVZqZEM1aGMzTnBaMjRvYm1WM0lGbEJUVXhUWlhRb0tTd2diV0Z3S1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJR1ZzYzJWY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCdmJrVnljbTl5S0NkVFpYUWdhWFJsYlhNZ2JYVnpkQ0JoYkd3Z2FHRjJaU0J1ZFd4c0lIWmhiSFZsY3ljcE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJR1ZzYzJWY2JpQWdJQ0FnSUNBZ0lDQWdJRzl1UlhKeWIzSW9KMFY0Y0dWamRHVmtJR0VnYldGd2NHbHVaeUJtYjNJZ2RHaHBjeUIwWVdjbktUdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlHMWhjRHRjYmlBZ0lDQjlYRzU5TzF4dVhHNWxlSEJ2Y25RZ2V5QlpRVTFNVTJWMExDQnpaWFFnZlR0Y2JpSXNJQ0pwYlhCdmNuUWdleUJ6ZEhKcGJtZHBabmxPZFcxaVpYSWdmU0JtY205dElDY3VMaTh1TGk5emRISnBibWRwWm5rdmMzUnlhVzVuYVdaNVRuVnRZbVZ5TG1wekp6dGNibHh1THlvcUlFbHVkR1Z5Ym1Gc0lIUjVjR1Z6SUdoaGJtUnNaU0JpYVdkcGJuUWdZWE1nYm5WdFltVnlMQ0JpWldOaGRYTmxJRlJUSUdOaGJpZDBJR1pwWjNWeVpTQnBkQ0J2ZFhRdUlDb3ZYRzVtZFc1amRHbHZiaUJ3WVhKelpWTmxlR0ZuWlhOcGJXRnNLSE4wY2l3Z1lYTkNhV2RKYm5RcElIdGNiaUFnSUNCamIyNXpkQ0J6YVdkdUlEMGdjM1J5V3pCZE8xeHVJQ0FnSUdOdmJuTjBJSEJoY25SeklEMGdjMmxuYmlBOVBUMGdKeTBuSUh4OElITnBaMjRnUFQwOUlDY3JKeUEvSUhOMGNpNXpkV0p6ZEhKcGJtY29NU2tnT2lCemRISTdYRzRnSUNBZ1kyOXVjM1FnYm5WdElEMGdLRzRwSUQwK0lHRnpRbWxuU1c1MElEOGdRbWxuU1c1MEtHNHBJRG9nVG5WdFltVnlLRzRwTzF4dUlDQWdJR052Ym5OMElISmxjeUE5SUhCaGNuUnpYRzRnSUNBZ0lDQWdJQzV5WlhCc1lXTmxLQzlmTDJjc0lDY25LVnh1SUNBZ0lDQWdJQ0F1YzNCc2FYUW9Kem9uS1Z4dUlDQWdJQ0FnSUNBdWNtVmtkV05sS0NoeVpYTXNJSEFwSUQwK0lISmxjeUFxSUc1MWJTZzJNQ2tnS3lCdWRXMG9jQ2tzSUc1MWJTZ3dLU2s3WEc0Z0lDQWdjbVYwZFhKdUlDaHphV2R1SUQwOVBTQW5MU2NnUHlCdWRXMG9MVEVwSUNvZ2NtVnpJRG9nY21WektUdGNibjFjYmk4cUtseHVJQ29nYUdob2FEcHRiVHB6Y3k1emMzTmNiaUFxWEc0Z0tpQkpiblJsY201aGJDQjBlWEJsY3lCb1lXNWtiR1VnWW1sbmFXNTBJR0Z6SUc1MWJXSmxjaXdnWW1WallYVnpaU0JVVXlCallXNG5kQ0JtYVdkMWNtVWdhWFFnYjNWMExseHVJQ292WEc1bWRXNWpkR2x2YmlCemRISnBibWRwWm5sVFpYaGhaMlZ6YVcxaGJDaHViMlJsS1NCN1hHNGdJQ0FnYkdWMElIc2dkbUZzZFdVZ2ZTQTlJRzV2WkdVN1hHNGdJQ0FnYkdWMElHNTFiU0E5SUNodUtTQTlQaUJ1TzF4dUlDQWdJR2xtSUNoMGVYQmxiMllnZG1Gc2RXVWdQVDA5SUNkaWFXZHBiblFuS1Z4dUlDQWdJQ0FnSUNCdWRXMGdQU0J1SUQwK0lFSnBaMGx1ZENodUtUdGNiaUFnSUNCbGJITmxJR2xtSUNocGMwNWhUaWgyWVd4MVpTa2dmSHdnSVdselJtbHVhWFJsS0haaGJIVmxLU2xjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJSE4wY21sdVoybG1lVTUxYldKbGNpaHViMlJsS1R0Y2JpQWdJQ0JzWlhRZ2MybG5iaUE5SUNjbk8xeHVJQ0FnSUdsbUlDaDJZV3gxWlNBOElEQXBJSHRjYmlBZ0lDQWdJQ0FnYzJsbmJpQTlJQ2N0Snp0Y2JpQWdJQ0FnSUNBZ2RtRnNkV1VnS2owZ2JuVnRLQzB4S1R0Y2JpQWdJQ0I5WEc0Z0lDQWdZMjl1YzNRZ1h6WXdJRDBnYm5WdEtEWXdLVHRjYmlBZ0lDQmpiMjV6ZENCd1lYSjBjeUE5SUZ0MllXeDFaU0FsSUY4Mk1GMDdJQzh2SUhObFkyOXVaSE1zSUdsdVkyeDFaR2x1WnlCdGMxeHVJQ0FnSUdsbUlDaDJZV3gxWlNBOElEWXdLU0I3WEc0Z0lDQWdJQ0FnSUhCaGNuUnpMblZ1YzJocFpuUW9NQ2s3SUM4dklHRjBJR3hsWVhOMElHOXVaU0E2SUdseklISmxjWFZwY21Wa1hHNGdJQ0FnZlZ4dUlDQWdJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQjJZV3gxWlNBOUlDaDJZV3gxWlNBdElIQmhjblJ6V3pCZEtTQXZJRjgyTUR0Y2JpQWdJQ0FnSUNBZ2NHRnlkSE11ZFc1emFHbG1kQ2gyWVd4MVpTQWxJRjgyTUNrN0lDOHZJRzFwYm5WMFpYTmNiaUFnSUNBZ0lDQWdhV1lnS0haaGJIVmxJRDQ5SURZd0tTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCMllXeDFaU0E5SUNoMllXeDFaU0F0SUhCaGNuUnpXekJkS1NBdklGODJNRHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIQmhjblJ6TG5WdWMyaHBablFvZG1Gc2RXVXBPeUF2THlCb2IzVnljMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdmVnh1SUNBZ0lISmxkSFZ5YmlBb2MybG5iaUFyWEc0Z0lDQWdJQ0FnSUhCaGNuUnpYRzRnSUNBZ0lDQWdJQ0FnSUNBdWJXRndLRzRnUFQ0Z1UzUnlhVzVuS0c0cExuQmhaRk4wWVhKMEtESXNJQ2N3SnlrcFhHNGdJQ0FnSUNBZ0lDQWdJQ0F1YW05cGJpZ25PaWNwWEc0Z0lDQWdJQ0FnSUNBZ0lDQXVjbVZ3YkdGalpTZ3ZNREF3TURBd1hGeGtLaVF2TENBbkp5a2dMeThnSlNBMk1DQnRZWGtnYVc1MGNtOWtkV05sSUdWeWNtOXlYRzRnSUNBZ0tUdGNibjFjYm1OdmJuTjBJR2x1ZEZScGJXVWdQU0I3WEc0Z0lDQWdhV1JsYm5ScFpuazZJSFpoYkhWbElEMCtJSFI1Y0dWdlppQjJZV3gxWlNBOVBUMGdKMkpwWjJsdWRDY2dmSHdnVG5WdFltVnlMbWx6U1c1MFpXZGxjaWgyWVd4MVpTa3NYRzRnSUNBZ1pHVm1ZWFZzZERvZ2RISjFaU3hjYmlBZ0lDQjBZV2M2SUNkMFlXYzZlV0Z0YkM1dmNtY3NNakF3TWpwcGJuUW5MRnh1SUNBZ0lHWnZjbTFoZERvZ0oxUkpUVVVuTEZ4dUlDQWdJSFJsYzNRNklDOWVXeTByWFQ5Yk1DMDVYVnN3TFRsZlhTb29Qem82V3pBdE5WMC9XekF0T1YwcEt5UXZMRnh1SUNBZ0lISmxjMjlzZG1VNklDaHpkSElzSUY5dmJrVnljbTl5TENCN0lHbHVkRUZ6UW1sblNXNTBJSDBwSUQwK0lIQmhjbk5sVTJWNFlXZGxjMmx0WVd3b2MzUnlMQ0JwYm5SQmMwSnBaMGx1ZENrc1hHNGdJQ0FnYzNSeWFXNW5hV1o1T2lCemRISnBibWRwWm5sVFpYaGhaMlZ6YVcxaGJGeHVmVHRjYm1OdmJuTjBJR1pzYjJGMFZHbHRaU0E5SUh0Y2JpQWdJQ0JwWkdWdWRHbG1lVG9nZG1Gc2RXVWdQVDRnZEhsd1pXOW1JSFpoYkhWbElEMDlQU0FuYm5WdFltVnlKeXhjYmlBZ0lDQmtaV1poZFd4ME9pQjBjblZsTEZ4dUlDQWdJSFJoWnpvZ0ozUmhaenA1WVcxc0xtOXlaeXd5TURBeU9tWnNiMkYwSnl4Y2JpQWdJQ0JtYjNKdFlYUTZJQ2RVU1UxRkp5eGNiaUFnSUNCMFpYTjBPaUF2WGxzdEsxMC9XekF0T1YxYk1DMDVYMTBxS0Q4Nk9sc3dMVFZkUDFzd0xUbGRLU3RjWEM1Yk1DMDVYMTBxSkM4c1hHNGdJQ0FnY21WemIyeDJaVG9nYzNSeUlEMCtJSEJoY25ObFUyVjRZV2RsYzJsdFlXd29jM1J5TENCbVlXeHpaU2tzWEc0Z0lDQWdjM1J5YVc1bmFXWjVPaUJ6ZEhKcGJtZHBabmxUWlhoaFoyVnphVzFoYkZ4dWZUdGNibU52Ym5OMElIUnBiV1Z6ZEdGdGNDQTlJSHRjYmlBZ0lDQnBaR1Z1ZEdsbWVUb2dkbUZzZFdVZ1BUNGdkbUZzZFdVZ2FXNXpkR0Z1WTJWdlppQkVZWFJsTEZ4dUlDQWdJR1JsWm1GMWJIUTZJSFJ5ZFdVc1hHNGdJQ0FnZEdGbk9pQW5kR0ZuT25saGJXd3ViM0puTERJd01ESTZkR2x0WlhOMFlXMXdKeXhjYmlBZ0lDQXZMeUJKWmlCMGFHVWdkR2x0WlNCNmIyNWxJR2x6SUc5dGFYUjBaV1FzSUhSb1pTQjBhVzFsYzNSaGJYQWdhWE1nWVhOemRXMWxaQ0IwYnlCaVpTQnpjR1ZqYVdacFpXUWdhVzRnVlZSRExpQlVhR1VnZEdsdFpTQndZWEowWEc0Z0lDQWdMeThnYldGNUlHSmxJRzl0YVhSMFpXUWdZV3gwYjJkbGRHaGxjaXdnY21WemRXeDBhVzVuSUdsdUlHRWdaR0YwWlNCbWIzSnRZWFF1SUVsdUlITjFZMmdnWVNCallYTmxMQ0IwYUdVZ2RHbHRaU0J3WVhKMElHbHpYRzRnSUNBZ0x5OGdZWE56ZFcxbFpDQjBieUJpWlNBd01Eb3dNRG93TUZvZ0tITjBZWEowSUc5bUlHUmhlU3dnVlZSREtTNWNiaUFnSUNCMFpYTjBPaUJTWldkRmVIQW9KMTRvV3pBdE9WMTdOSDBwTFNoYk1DMDVYWHN4TERKOUtTMG9XekF0T1YxN01Td3lmU2tuSUNzZ0x5OGdXVmxaV1MxTmJTMUVaRnh1SUNBZ0lDQWdJQ0FuS0Q4Nkp5QXJJQzh2SUhScGJXVWdhWE1nYjNCMGFXOXVZV3hjYmlBZ0lDQWdJQ0FnSnlnL09uUjhWSHhiSUZ4Y1hGeDBYU3NwSnlBcklDOHZJSFFnZkNCVUlId2dkMmhwZEdWemNHRmpaVnh1SUNBZ0lDQWdJQ0FuS0Zzd0xUbGRlekVzTW4wcE9paGJNQzA1WFhzeExESjlLVG9vV3pBdE9WMTdNU3d5ZlNoY1hGeGNMbHN3TFRsZEt5ay9LU2NnS3lBdkx5QklhRHBOYlRwVGN5Z3VjM01wUDF4dUlDQWdJQ0FnSUNBbktEODZXeUJjWEZ4Y2RGMHFLRnA4V3kwclhWc3dNVEpkUDFzd0xUbGRLRDg2T2xzd0xUbGRleko5S1Q4cEtUOG5JQ3NnTHk4Z1dpQjhJQ3MxSUh3Z0xUQXpPak13WEc0Z0lDQWdJQ0FnSUNjcFB5UW5LU3hjYmlBZ0lDQnlaWE52YkhabEtITjBjaWtnZTF4dUlDQWdJQ0FnSUNCamIyNXpkQ0J0WVhSamFDQTlJSE4wY2k1dFlYUmphQ2gwYVcxbGMzUmhiWEF1ZEdWemRDazdYRzRnSUNBZ0lDQWdJR2xtSUNnaGJXRjBZMmdwWEc0Z0lDQWdJQ0FnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dSWEp5YjNJb0p5RWhkR2x0WlhOMFlXMXdJR1Y0Y0dWamRITWdZU0JrWVhSbExDQnpkR0Z5ZEdsdVp5QjNhWFJvSUhsNWVYa3RiVzB0WkdRbktUdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ1d5d2dlV1ZoY2l3Z2JXOXVkR2dzSUdSaGVTd2dhRzkxY2l3Z2JXbHVkWFJsTENCelpXTnZibVJkSUQwZ2JXRjBZMmd1YldGd0tFNTFiV0psY2lrN1hHNGdJQ0FnSUNBZ0lHTnZibk4wSUcxcGJHeHBjMlZqSUQwZ2JXRjBZMmhiTjEwZ1B5Qk9kVzFpWlhJb0tHMWhkR05vV3pkZElDc2dKekF3SnlrdWMzVmljM1J5S0RFc0lETXBLU0E2SURBN1hHNGdJQ0FnSUNBZ0lHeGxkQ0JrWVhSbElEMGdSR0YwWlM1VlZFTW9lV1ZoY2l3Z2JXOXVkR2dnTFNBeExDQmtZWGtzSUdodmRYSWdmSHdnTUN3Z2JXbHVkWFJsSUh4OElEQXNJSE5sWTI5dVpDQjhmQ0F3TENCdGFXeHNhWE5sWXlrN1hHNGdJQ0FnSUNBZ0lHTnZibk4wSUhSNklEMGdiV0YwWTJoYk9GMDdYRzRnSUNBZ0lDQWdJR2xtSUNoMGVpQW1KaUIwZWlBaFBUMGdKMW9uS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JzWlhRZ1pDQTlJSEJoY25ObFUyVjRZV2RsYzJsdFlXd29kSG9zSUdaaGJITmxLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2hOWVhSb0xtRmljeWhrS1NBOElETXdLVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR1FnS2owZ05qQTdYRzRnSUNBZ0lDQWdJQ0FnSUNCa1lYUmxJQzA5SURZd01EQXdJQ29nWkR0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2JtVjNJRVJoZEdVb1pHRjBaU2s3WEc0Z0lDQWdmU3hjYmlBZ0lDQnpkSEpwYm1kcFpuazZJQ2g3SUhaaGJIVmxJSDBwSUQwK0lIWmhiSFZsTG5SdlNWTlBVM1J5YVc1bktDa3VjbVZ3YkdGalpTZ3ZLQ2hVTURBNk1EQXBQem93TUNrL1hGd3VNREF3V2lRdkxDQW5KeWxjYm4wN1hHNWNibVY0Y0c5eWRDQjdJR1pzYjJGMFZHbHRaU3dnYVc1MFZHbHRaU3dnZEdsdFpYTjBZVzF3SUgwN1hHNGlMQ0FpYVcxd2IzSjBJSHNnYldGd0lIMGdabkp2YlNBbkxpNHZZMjl0Ylc5dUwyMWhjQzVxY3ljN1hHNXBiWEJ2Y25RZ2V5QnVkV3hzVkdGbklIMGdabkp2YlNBbkxpNHZZMjl0Ylc5dUwyNTFiR3d1YW5Nbk8xeHVhVzF3YjNKMElIc2djMlZ4SUgwZ1puSnZiU0FuTGk0dlkyOXRiVzl1TDNObGNTNXFjeWM3WEc1cGJYQnZjblFnZXlCemRISnBibWNnZlNCbWNtOXRJQ2N1TGk5amIyMXRiMjR2YzNSeWFXNW5MbXB6Snp0Y2JtbHRjRzl5ZENCN0lHSnBibUZ5ZVNCOUlHWnliMjBnSnk0dlltbHVZWEo1TG1wekp6dGNibWx0Y0c5eWRDQjdJSFJ5ZFdWVVlXY3NJR1poYkhObFZHRm5JSDBnWm5KdmJTQW5MaTlpYjI5c0xtcHpKenRjYm1sdGNHOXlkQ0I3SUdac2IyRjBUbUZPTENCbWJHOWhkRVY0Y0N3Z1pteHZZWFFnZlNCbWNtOXRJQ2N1TDJac2IyRjBMbXB6Snp0Y2JtbHRjRzl5ZENCN0lHbHVkRUpwYml3Z2FXNTBUMk4wTENCcGJuUXNJR2x1ZEVobGVDQjlJR1p5YjIwZ0p5NHZhVzUwTG1wekp6dGNibWx0Y0c5eWRDQjdJRzFsY21kbElIMGdabkp2YlNBbkxpOXRaWEpuWlM1cWN5YzdYRzVwYlhCdmNuUWdleUJ2YldGd0lIMGdabkp2YlNBbkxpOXZiV0Z3TG1wekp6dGNibWx0Y0c5eWRDQjdJSEJoYVhKeklIMGdabkp2YlNBbkxpOXdZV2x5Y3k1cWN5YzdYRzVwYlhCdmNuUWdleUJ6WlhRZ2ZTQm1jbTl0SUNjdUwzTmxkQzVxY3ljN1hHNXBiWEJ2Y25RZ2V5QnBiblJVYVcxbExDQm1iRzloZEZScGJXVXNJSFJwYldWemRHRnRjQ0I5SUdaeWIyMGdKeTR2ZEdsdFpYTjBZVzF3TG1wekp6dGNibHh1WTI5dWMzUWdjMk5vWlcxaElEMGdXMXh1SUNBZ0lHMWhjQ3hjYmlBZ0lDQnpaWEVzWEc0Z0lDQWdjM1J5YVc1bkxGeHVJQ0FnSUc1MWJHeFVZV2NzWEc0Z0lDQWdkSEoxWlZSaFp5eGNiaUFnSUNCbVlXeHpaVlJoWnl4Y2JpQWdJQ0JwYm5SQ2FXNHNYRzRnSUNBZ2FXNTBUMk4wTEZ4dUlDQWdJR2x1ZEN4Y2JpQWdJQ0JwYm5SSVpYZ3NYRzRnSUNBZ1pteHZZWFJPWVU0c1hHNGdJQ0FnWm14dllYUkZlSEFzWEc0Z0lDQWdabXh2WVhRc1hHNGdJQ0FnWW1sdVlYSjVMRnh1SUNBZ0lHMWxjbWRsTEZ4dUlDQWdJRzl0WVhBc1hHNGdJQ0FnY0dGcGNuTXNYRzRnSUNBZ2MyVjBMRnh1SUNBZ0lHbHVkRlJwYldVc1hHNGdJQ0FnWm14dllYUlVhVzFsTEZ4dUlDQWdJSFJwYldWemRHRnRjRnh1WFR0Y2JseHVaWGh3YjNKMElIc2djMk5vWlcxaElIMDdYRzRpTENBaWFXMXdiM0owSUhzZ2JXRndJSDBnWm5KdmJTQW5MaTlqYjIxdGIyNHZiV0Z3TG1wekp6dGNibWx0Y0c5eWRDQjdJRzUxYkd4VVlXY2dmU0JtY205dElDY3VMMk52YlcxdmJpOXVkV3hzTG1wekp6dGNibWx0Y0c5eWRDQjdJSE5sY1NCOUlHWnliMjBnSnk0dlkyOXRiVzl1TDNObGNTNXFjeWM3WEc1cGJYQnZjblFnZXlCemRISnBibWNnZlNCbWNtOXRJQ2N1TDJOdmJXMXZiaTl6ZEhKcGJtY3Vhbk1uTzF4dWFXMXdiM0owSUhzZ1ltOXZiRlJoWnlCOUlHWnliMjBnSnk0dlkyOXlaUzlpYjI5c0xtcHpKenRjYm1sdGNHOXlkQ0I3SUdac2IyRjBMQ0JtYkc5aGRFVjRjQ3dnWm14dllYUk9ZVTRnZlNCbWNtOXRJQ2N1TDJOdmNtVXZabXh2WVhRdWFuTW5PMXh1YVcxd2IzSjBJSHNnYVc1MExDQnBiblJJWlhnc0lHbHVkRTlqZENCOUlHWnliMjBnSnk0dlkyOXlaUzlwYm5RdWFuTW5PMXh1YVcxd2IzSjBJSHNnYzJOb1pXMWhJSDBnWm5KdmJTQW5MaTlqYjNKbEwzTmphR1Z0WVM1cWN5YzdYRzVwYlhCdmNuUWdleUJ6WTJobGJXRWdZWE1nYzJOb1pXMWhKREVnZlNCbWNtOXRJQ2N1TDJwemIyNHZjMk5vWlcxaExtcHpKenRjYm1sdGNHOXlkQ0I3SUdKcGJtRnllU0I5SUdaeWIyMGdKeTR2ZVdGdGJDMHhMakV2WW1sdVlYSjVMbXB6Snp0Y2JtbHRjRzl5ZENCN0lHMWxjbWRsSUgwZ1puSnZiU0FuTGk5NVlXMXNMVEV1TVM5dFpYSm5aUzVxY3ljN1hHNXBiWEJ2Y25RZ2V5QnZiV0Z3SUgwZ1puSnZiU0FuTGk5NVlXMXNMVEV1TVM5dmJXRndMbXB6Snp0Y2JtbHRjRzl5ZENCN0lIQmhhWEp6SUgwZ1puSnZiU0FuTGk5NVlXMXNMVEV1TVM5d1lXbHljeTVxY3ljN1hHNXBiWEJ2Y25RZ2V5QnpZMmhsYldFZ1lYTWdjMk5vWlcxaEpESWdmU0JtY205dElDY3VMM2xoYld3dE1TNHhMM05qYUdWdFlTNXFjeWM3WEc1cGJYQnZjblFnZXlCelpYUWdmU0JtY205dElDY3VMM2xoYld3dE1TNHhMM05sZEM1cWN5YzdYRzVwYlhCdmNuUWdleUIwYVcxbGMzUmhiWEFzSUdac2IyRjBWR2x0WlN3Z2FXNTBWR2x0WlNCOUlHWnliMjBnSnk0dmVXRnRiQzB4TGpFdmRHbHRaWE4wWVcxd0xtcHpKenRjYmx4dVkyOXVjM1FnYzJOb1pXMWhjeUE5SUc1bGR5Qk5ZWEFvVzF4dUlDQWdJRnNuWTI5eVpTY3NJSE5qYUdWdFlWMHNYRzRnSUNBZ1d5ZG1ZV2xzYzJGbVpTY3NJRnR0WVhBc0lITmxjU3dnYzNSeWFXNW5YVjBzWEc0Z0lDQWdXeWRxYzI5dUp5d2djMk5vWlcxaEpERmRMRnh1SUNBZ0lGc25lV0Z0YkRFeEp5d2djMk5vWlcxaEpESmRMRnh1SUNBZ0lGc25lV0Z0YkMweExqRW5MQ0J6WTJobGJXRWtNbDFjYmwwcE8xeHVZMjl1YzNRZ2RHRm5jMEo1VG1GdFpTQTlJSHRjYmlBZ0lDQmlhVzVoY25rc1hHNGdJQ0FnWW05dmJEb2dZbTl2YkZSaFp5eGNiaUFnSUNCbWJHOWhkQ3hjYmlBZ0lDQm1iRzloZEVWNGNDeGNiaUFnSUNCbWJHOWhkRTVoVGl4Y2JpQWdJQ0JtYkc5aGRGUnBiV1VzWEc0Z0lDQWdhVzUwTEZ4dUlDQWdJR2x1ZEVobGVDeGNiaUFnSUNCcGJuUlBZM1FzWEc0Z0lDQWdhVzUwVkdsdFpTeGNiaUFnSUNCdFlYQXNYRzRnSUNBZ2JXVnlaMlVzWEc0Z0lDQWdiblZzYkRvZ2JuVnNiRlJoWnl4Y2JpQWdJQ0J2YldGd0xGeHVJQ0FnSUhCaGFYSnpMRnh1SUNBZ0lITmxjU3hjYmlBZ0lDQnpaWFFzWEc0Z0lDQWdkR2x0WlhOMFlXMXdYRzU5TzF4dVkyOXVjM1FnWTI5eVpVdHViM2R1VkdGbmN5QTlJSHRjYmlBZ0lDQW5kR0ZuT25saGJXd3ViM0puTERJd01ESTZZbWx1WVhKNUp6b2dZbWx1WVhKNUxGeHVJQ0FnSUNkMFlXYzZlV0Z0YkM1dmNtY3NNakF3TWpwdFpYSm5aU2M2SUcxbGNtZGxMRnh1SUNBZ0lDZDBZV2M2ZVdGdGJDNXZjbWNzTWpBd01qcHZiV0Z3SnpvZ2IyMWhjQ3hjYmlBZ0lDQW5kR0ZuT25saGJXd3ViM0puTERJd01ESTZjR0ZwY25Nbk9pQndZV2x5Y3l4Y2JpQWdJQ0FuZEdGbk9ubGhiV3d1YjNKbkxESXdNREk2YzJWMEp6b2djMlYwTEZ4dUlDQWdJQ2QwWVdjNmVXRnRiQzV2Y21jc01qQXdNanAwYVcxbGMzUmhiWEFuT2lCMGFXMWxjM1JoYlhCY2JuMDdYRzVtZFc1amRHbHZiaUJuWlhSVVlXZHpLR04xYzNSdmJWUmhaM01zSUhOamFHVnRZVTVoYldVc0lHRmtaRTFsY21kbFZHRm5LU0I3WEc0Z0lDQWdZMjl1YzNRZ2MyTm9aVzFoVkdGbmN5QTlJSE5qYUdWdFlYTXVaMlYwS0hOamFHVnRZVTVoYldVcE8xeHVJQ0FnSUdsbUlDaHpZMmhsYldGVVlXZHpJQ1ltSUNGamRYTjBiMjFVWVdkektTQjdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQmhaR1JOWlhKblpWUmhaeUFtSmlBaGMyTm9aVzFoVkdGbmN5NXBibU5zZFdSbGN5aHRaWEpuWlNsY2JpQWdJQ0FnSUNBZ0lDQWdJRDhnYzJOb1pXMWhWR0ZuY3k1amIyNWpZWFFvYldWeVoyVXBYRzRnSUNBZ0lDQWdJQ0FnSUNBNklITmphR1Z0WVZSaFozTXVjMnhwWTJVb0tUdGNiaUFnSUNCOVhHNGdJQ0FnYkdWMElIUmhaM01nUFNCelkyaGxiV0ZVWVdkek8xeHVJQ0FnSUdsbUlDZ2hkR0ZuY3lrZ2UxeHVJQ0FnSUNBZ0lDQnBaaUFvUVhKeVlYa3VhWE5CY25KaGVTaGpkWE4wYjIxVVlXZHpLU2xjYmlBZ0lDQWdJQ0FnSUNBZ0lIUmhaM01nUFNCYlhUdGNiaUFnSUNBZ0lDQWdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JqYjI1emRDQnJaWGx6SUQwZ1FYSnlZWGt1Wm5KdmJTaHpZMmhsYldGekxtdGxlWE1vS1NsY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBdVptbHNkR1Z5S0d0bGVTQTlQaUJyWlhrZ0lUMDlJQ2Q1WVcxc01URW5LVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQzV0WVhBb2EyVjVJRDArSUVwVFQwNHVjM1J5YVc1bmFXWjVLR3RsZVNrcFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0xtcHZhVzRvSnl3Z0p5azdYRzRnSUNBZ0lDQWdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1JYSnliM0lvWUZWdWEyNXZkMjRnYzJOb1pXMWhJRndpSkh0elkyaGxiV0ZPWVcxbGZWd2lPeUIxYzJVZ2IyNWxJRzltSUNSN2EyVjVjMzBnYjNJZ1pHVm1hVzVsSUdOMWMzUnZiVlJoWjNNZ1lYSnlZWGxnS1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JpQWdJQ0JwWmlBb1FYSnlZWGt1YVhOQmNuSmhlU2hqZFhOMGIyMVVZV2R6S1NrZ2UxeHVJQ0FnSUNBZ0lDQm1iM0lnS0dOdmJuTjBJSFJoWnlCdlppQmpkWE4wYjIxVVlXZHpLVnh1SUNBZ0lDQWdJQ0FnSUNBZ2RHRm5jeUE5SUhSaFozTXVZMjl1WTJGMEtIUmhaeWs3WEc0Z0lDQWdmVnh1SUNBZ0lHVnNjMlVnYVdZZ0tIUjVjR1Z2WmlCamRYTjBiMjFVWVdkeklEMDlQU0FuWm5WdVkzUnBiMjRuS1NCN1hHNGdJQ0FnSUNBZ0lIUmhaM01nUFNCamRYTjBiMjFVWVdkektIUmhaM011YzJ4cFkyVW9LU2s3WEc0Z0lDQWdmVnh1SUNBZ0lHbG1JQ2hoWkdSTlpYSm5aVlJoWnlsY2JpQWdJQ0FnSUNBZ2RHRm5jeUE5SUhSaFozTXVZMjl1WTJGMEtHMWxjbWRsS1R0Y2JpQWdJQ0J5WlhSMWNtNGdkR0ZuY3k1eVpXUjFZMlVvS0hSaFozTXNJSFJoWnlrZ1BUNGdlMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQjBZV2RQWW1vZ1BTQjBlWEJsYjJZZ2RHRm5JRDA5UFNBbmMzUnlhVzVuSnlBL0lIUmhaM05DZVU1aGJXVmJkR0ZuWFNBNklIUmhaenRjYmlBZ0lDQWdJQ0FnYVdZZ0tDRjBZV2RQWW1vcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUdOdmJuTjBJSFJoWjA1aGJXVWdQU0JLVTA5T0xuTjBjbWx1WjJsbWVTaDBZV2NwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ2EyVjVjeUE5SUU5aWFtVmpkQzVyWlhsektIUmhaM05DZVU1aGJXVXBYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdMbTFoY0NoclpYa2dQVDRnU2xOUFRpNXpkSEpwYm1kcFpua29hMlY1S1NsY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBdWFtOXBiaWduTENBbktUdGNiaUFnSUNBZ0lDQWdJQ0FnSUhSb2NtOTNJRzVsZHlCRmNuSnZjaWhnVlc1cmJtOTNiaUJqZFhOMGIyMGdkR0ZuSUNSN2RHRm5UbUZ0WlgwN0lIVnpaU0J2Ym1VZ2IyWWdKSHRyWlhsemZXQXBPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUdsbUlDZ2hkR0ZuY3k1cGJtTnNkV1JsY3loMFlXZFBZbW9wS1Z4dUlDQWdJQ0FnSUNBZ0lDQWdkR0ZuY3k1d2RYTm9LSFJoWjA5aWFpazdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQjBZV2R6TzF4dUlDQWdJSDBzSUZ0ZEtUdGNibjFjYmx4dVpYaHdiM0owSUhzZ1kyOXlaVXR1YjNkdVZHRm5jeXdnWjJWMFZHRm5jeUI5TzF4dUlpd2dJbWx0Y0c5eWRDQjdJRTFCVUN3Z1UwTkJURUZTTENCVFJWRWdmU0JtY205dElDY3VMaTl1YjJSbGN5OXBaR1Z1ZEdsMGVTNXFjeWM3WEc1cGJYQnZjblFnZXlCdFlYQWdmU0JtY205dElDY3VMMk52YlcxdmJpOXRZWEF1YW5Nbk8xeHVhVzF3YjNKMElIc2djMlZ4SUgwZ1puSnZiU0FuTGk5amIyMXRiMjR2YzJWeExtcHpKenRjYm1sdGNHOXlkQ0I3SUhOMGNtbHVaeUI5SUdaeWIyMGdKeTR2WTI5dGJXOXVMM04wY21sdVp5NXFjeWM3WEc1cGJYQnZjblFnZXlCblpYUlVZV2R6TENCamIzSmxTMjV2ZDI1VVlXZHpJSDBnWm5KdmJTQW5MaTkwWVdkekxtcHpKenRjYmx4dVkyOXVjM1FnYzI5eWRFMWhjRVZ1ZEhKcFpYTkNlVXRsZVNBOUlDaGhMQ0JpS1NBOVBpQmhMbXRsZVNBOElHSXVhMlY1SUQ4Z0xURWdPaUJoTG10bGVTQStJR0l1YTJWNUlEOGdNU0E2SURBN1hHNWpiR0Z6Y3lCVFkyaGxiV0VnZTF4dUlDQWdJR052Ym5OMGNuVmpkRzl5S0hzZ1kyOXRjR0YwTENCamRYTjBiMjFVWVdkekxDQnRaWEpuWlN3Z2NtVnpiMngyWlV0dWIzZHVWR0ZuY3l3Z2MyTm9aVzFoTENCemIzSjBUV0Z3Ulc1MGNtbGxjeXdnZEc5VGRISnBibWRFWldaaGRXeDBjeUI5S1NCN1hHNGdJQ0FnSUNBZ0lIUm9hWE11WTI5dGNHRjBJRDBnUVhKeVlYa3VhWE5CY25KaGVTaGpiMjF3WVhRcFhHNGdJQ0FnSUNBZ0lDQWdJQ0EvSUdkbGRGUmhaM01vWTI5dGNHRjBMQ0FuWTI5dGNHRjBKeWxjYmlBZ0lDQWdJQ0FnSUNBZ0lEb2dZMjl0Y0dGMFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1B5Qm5aWFJVWVdkektHNTFiR3dzSUdOdmJYQmhkQ2xjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E2SUc1MWJHdzdYRzRnSUNBZ0lDQWdJSFJvYVhNdWJtRnRaU0E5SUNoMGVYQmxiMllnYzJOb1pXMWhJRDA5UFNBbmMzUnlhVzVuSnlBbUppQnpZMmhsYldFcElIeDhJQ2RqYjNKbEp6dGNiaUFnSUNBZ0lDQWdkR2hwY3k1cmJtOTNibFJoWjNNZ1BTQnlaWE52YkhabFMyNXZkMjVVWVdkeklEOGdZMjl5WlV0dWIzZHVWR0ZuY3lBNklIdDlPMXh1SUNBZ0lDQWdJQ0IwYUdsekxuUmhaM01nUFNCblpYUlVZV2R6S0dOMWMzUnZiVlJoWjNNc0lIUm9hWE11Ym1GdFpTd2diV1Z5WjJVcE8xeHVJQ0FnSUNBZ0lDQjBhR2x6TG5SdlUzUnlhVzVuVDNCMGFXOXVjeUE5SUhSdlUzUnlhVzVuUkdWbVlYVnNkSE1nUHo4Z2JuVnNiRHRjYmlBZ0lDQWdJQ0FnVDJKcVpXTjBMbVJsWm1sdVpWQnliM0JsY25SNUtIUm9hWE1zSUUxQlVDd2dleUIyWVd4MVpUb2diV0Z3SUgwcE8xeHVJQ0FnSUNBZ0lDQlBZbXBsWTNRdVpHVm1hVzVsVUhKdmNHVnlkSGtvZEdocGN5d2dVME5CVEVGU0xDQjdJSFpoYkhWbE9pQnpkSEpwYm1jZ2ZTazdYRzRnSUNBZ0lDQWdJRTlpYW1WamRDNWtaV1pwYm1WUWNtOXdaWEowZVNoMGFHbHpMQ0JUUlZFc0lIc2dkbUZzZFdVNklITmxjU0I5S1R0Y2JpQWdJQ0FnSUNBZ0x5OGdWWE5sWkNCaWVTQmpjbVZoZEdWTllYQW9LVnh1SUNBZ0lDQWdJQ0IwYUdsekxuTnZjblJOWVhCRmJuUnlhV1Z6SUQxY2JpQWdJQ0FnSUNBZ0lDQWdJSFI1Y0dWdlppQnpiM0owVFdGd1JXNTBjbWxsY3lBOVBUMGdKMloxYm1OMGFXOXVKMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRDhnYzI5eWRFMWhjRVZ1ZEhKcFpYTmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQTZJSE52Y25STllYQkZiblJ5YVdWeklEMDlQU0IwY25WbFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRDhnYzI5eWRFMWhjRVZ1ZEhKcFpYTkNlVXRsZVZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQTZJRzUxYkd3N1hHNGdJQ0FnZlZ4dUlDQWdJR05zYjI1bEtDa2dlMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQmpiM0I1SUQwZ1QySnFaV04wTG1OeVpXRjBaU2hUWTJobGJXRXVjSEp2ZEc5MGVYQmxMQ0JQWW1wbFkzUXVaMlYwVDNkdVVISnZjR1Z5ZEhsRVpYTmpjbWx3ZEc5eWN5aDBhR2x6S1NrN1hHNGdJQ0FnSUNBZ0lHTnZjSGt1ZEdGbmN5QTlJSFJvYVhNdWRHRm5jeTV6YkdsalpTZ3BPMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdZMjl3ZVR0Y2JpQWdJQ0I5WEc1OVhHNWNibVY0Y0c5eWRDQjdJRk5qYUdWdFlTQjlPMXh1SWl3Z0ltbHRjRzl5ZENCN0lHbHpUbTlrWlNCOUlHWnliMjBnSnk0dUwyNXZaR1Z6TDJsa1pXNTBhWFI1TG1wekp6dGNibWx0Y0c5eWRDQjdJR055WldGMFpWTjBjbWx1WjJsbWVVTnZiblJsZUhRc0lITjBjbWx1WjJsbWVTQjlJR1p5YjIwZ0p5NHZjM1J5YVc1bmFXWjVMbXB6Snp0Y2JtbHRjRzl5ZENCN0lHbHVaR1Z1ZEVOdmJXMWxiblFzSUd4cGJtVkRiMjF0Wlc1MElIMGdabkp2YlNBbkxpOXpkSEpwYm1kcFpubERiMjF0Wlc1MExtcHpKenRjYmx4dVpuVnVZM1JwYjI0Z2MzUnlhVzVuYVdaNVJHOWpkVzFsYm5Rb1pHOWpMQ0J2Y0hScGIyNXpLU0I3WEc0Z0lDQWdZMjl1YzNRZ2JHbHVaWE1nUFNCYlhUdGNiaUFnSUNCc1pYUWdhR0Z6UkdseVpXTjBhWFpsY3lBOUlHOXdkR2x2Ym5NdVpHbHlaV04wYVhabGN5QTlQVDBnZEhKMVpUdGNiaUFnSUNCcFppQW9iM0IwYVc5dWN5NWthWEpsWTNScGRtVnpJQ0U5UFNCbVlXeHpaU0FtSmlCa2IyTXVaR2x5WldOMGFYWmxjeWtnZTF4dUlDQWdJQ0FnSUNCamIyNXpkQ0JrYVhJZ1BTQmtiMk11WkdseVpXTjBhWFpsY3k1MGIxTjBjbWx1Wnloa2IyTXBPMXh1SUNBZ0lDQWdJQ0JwWmlBb1pHbHlLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnNhVzVsY3k1d2RYTm9LR1JwY2lrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JvWVhORWFYSmxZM1JwZG1WeklEMGdkSEoxWlR0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQmxiSE5sSUdsbUlDaGtiMk11WkdseVpXTjBhWFpsY3k1a2IyTlRkR0Z5ZENsY2JpQWdJQ0FnSUNBZ0lDQWdJR2hoYzBScGNtVmpkR2wyWlhNZ1BTQjBjblZsTzF4dUlDQWdJSDFjYmlBZ0lDQnBaaUFvYUdGelJHbHlaV04wYVhabGN5bGNiaUFnSUNBZ0lDQWdiR2x1WlhNdWNIVnphQ2duTFMwdEp5azdYRzRnSUNBZ1kyOXVjM1FnWTNSNElEMGdZM0psWVhSbFUzUnlhVzVuYVdaNVEyOXVkR1Y0ZENoa2IyTXNJRzl3ZEdsdmJuTXBPMXh1SUNBZ0lHTnZibk4wSUhzZ1kyOXRiV1Z1ZEZOMGNtbHVaeUI5SUQwZ1kzUjRMbTl3ZEdsdmJuTTdYRzRnSUNBZ2FXWWdLR1J2WXk1amIyMXRaVzUwUW1WbWIzSmxLU0I3WEc0Z0lDQWdJQ0FnSUdsbUlDaHNhVzVsY3k1c1pXNW5kR2dnSVQwOUlERXBYRzRnSUNBZ0lDQWdJQ0FnSUNCc2FXNWxjeTUxYm5Ob2FXWjBLQ2NuS1R0Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnWTNNZ1BTQmpiMjF0Wlc1MFUzUnlhVzVuS0dSdll5NWpiMjF0Wlc1MFFtVm1iM0psS1R0Y2JpQWdJQ0FnSUNBZ2JHbHVaWE11ZFc1emFHbG1kQ2hwYm1SbGJuUkRiMjF0Wlc1MEtHTnpMQ0FuSnlrcE8xeHVJQ0FnSUgxY2JpQWdJQ0JzWlhRZ1kyaHZiWEJMWldWd0lEMGdabUZzYzJVN1hHNGdJQ0FnYkdWMElHTnZiblJsYm5SRGIyMXRaVzUwSUQwZ2JuVnNiRHRjYmlBZ0lDQnBaaUFvWkc5akxtTnZiblJsYm5SektTQjdYRzRnSUNBZ0lDQWdJR2xtSUNocGMwNXZaR1VvWkc5akxtTnZiblJsYm5SektTa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLR1J2WXk1amIyNTBaVzUwY3k1emNHRmpaVUpsWm05eVpTQW1KaUJvWVhORWFYSmxZM1JwZG1WektWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHeHBibVZ6TG5CMWMyZ29KeWNwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lnS0dSdll5NWpiMjUwWlc1MGN5NWpiMjF0Wlc1MFFtVm1iM0psS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1kyOXVjM1FnWTNNZ1BTQmpiMjF0Wlc1MFUzUnlhVzVuS0dSdll5NWpiMjUwWlc1MGN5NWpiMjF0Wlc1MFFtVm1iM0psS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCc2FXNWxjeTV3ZFhOb0tHbHVaR1Z1ZEVOdmJXMWxiblFvWTNNc0lDY25LU2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNBdkx5QjBiM0F0YkdWMlpXd2dZbXh2WTJzZ2MyTmhiR0Z5Y3lCdVpXVmtJSFJ2SUdKbElHbHVaR1Z1ZEdWa0lHbG1JR1p2Ykd4dmQyVmtJR0o1SUdFZ1kyOXRiV1Z1ZEZ4dUlDQWdJQ0FnSUNBZ0lDQWdZM1I0TG1admNtTmxRbXh2WTJ0SmJtUmxiblFnUFNBaElXUnZZeTVqYjIxdFpXNTBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ1kyOXVkR1Z1ZEVOdmJXMWxiblFnUFNCa2IyTXVZMjl1ZEdWdWRITXVZMjl0YldWdWREdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0JqYjI1emRDQnZia05vYjIxd1MyVmxjQ0E5SUdOdmJuUmxiblJEYjIxdFpXNTBJRDhnZFc1a1pXWnBibVZrSURvZ0tDa2dQVDRnS0dOb2IyMXdTMlZsY0NBOUlIUnlkV1VwTzF4dUlDQWdJQ0FnSUNCc1pYUWdZbTlrZVNBOUlITjBjbWx1WjJsbWVTaGtiMk11WTI5dWRHVnVkSE1zSUdOMGVDd2dLQ2tnUFQ0Z0tHTnZiblJsYm5SRGIyMXRaVzUwSUQwZ2JuVnNiQ2tzSUc5dVEyaHZiWEJMWldWd0tUdGNiaUFnSUNBZ0lDQWdhV1lnS0dOdmJuUmxiblJEYjIxdFpXNTBLVnh1SUNBZ0lDQWdJQ0FnSUNBZ1ltOWtlU0FyUFNCc2FXNWxRMjl0YldWdWRDaGliMlI1TENBbkp5d2dZMjl0YldWdWRGTjBjbWx1WnloamIyNTBaVzUwUTI5dGJXVnVkQ2twTzF4dUlDQWdJQ0FnSUNCcFppQW9LR0p2WkhsYk1GMGdQVDA5SUNkOEp5QjhmQ0JpYjJSNVd6QmRJRDA5UFNBblBpY3BJQ1ltWEc0Z0lDQWdJQ0FnSUNBZ0lDQnNhVzVsYzF0c2FXNWxjeTVzWlc1bmRHZ2dMU0F4WFNBOVBUMGdKeTB0TFNjcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUM4dklGUnZjQzFzWlhabGJDQmliRzlqYXlCelkyRnNZWEp6SUhkcGRHZ2dZU0J3Y21WalpXUnBibWNnWkc5aklHMWhjbXRsY2lCdmRXZG9kQ0IwYnlCMWMyVWdkR2hsWEc0Z0lDQWdJQ0FnSUNBZ0lDQXZMeUJ6WVcxbElHeHBibVVnWm05eUlIUm9aV2x5SUdobFlXUmxjaTVjYmlBZ0lDQWdJQ0FnSUNBZ0lHeHBibVZ6VzJ4cGJtVnpMbXhsYm1kMGFDQXRJREZkSUQwZ1lDMHRMU0FrZTJKdlpIbDlZRHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCbGJITmxYRzRnSUNBZ0lDQWdJQ0FnSUNCc2FXNWxjeTV3ZFhOb0tHSnZaSGtwTzF4dUlDQWdJSDFjYmlBZ0lDQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ2JHbHVaWE11Y0hWemFDaHpkSEpwYm1kcFpua29aRzlqTG1OdmJuUmxiblJ6TENCamRIZ3BLVHRjYmlBZ0lDQjlYRzRnSUNBZ2FXWWdLR1J2WXk1a2FYSmxZM1JwZG1WelB5NWtiMk5GYm1RcElIdGNiaUFnSUNBZ0lDQWdhV1lnS0dSdll5NWpiMjF0Wlc1MEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCamIyNXpkQ0JqY3lBOUlHTnZiVzFsYm5SVGRISnBibWNvWkc5akxtTnZiVzFsYm5RcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tHTnpMbWx1WTJ4MVpHVnpLQ2RjWEc0bktTa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR3hwYm1WekxuQjFjMmdvSnk0dUxpY3BPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR3hwYm1WekxuQjFjMmdvYVc1a1pXNTBRMjl0YldWdWRDaGpjeXdnSnljcEtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQWdJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHeHBibVZ6TG5CMWMyZ29ZQzR1TGlBa2UyTnpmV0FwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2JHbHVaWE11Y0hWemFDZ25MaTR1SnlrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJQ0FnWld4elpTQjdYRzRnSUNBZ0lDQWdJR3hsZENCa1l5QTlJR1J2WXk1amIyMXRaVzUwTzF4dUlDQWdJQ0FnSUNCcFppQW9aR01nSmlZZ1kyaHZiWEJMWldWd0tWeHVJQ0FnSUNBZ0lDQWdJQ0FnWkdNZ1BTQmtZeTV5WlhCc1lXTmxLQzllWEZ4dUt5OHNJQ2NuS1R0Y2JpQWdJQ0FnSUNBZ2FXWWdLR1JqS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb0tDRmphRzl0Y0V0bFpYQWdmSHdnWTI5dWRHVnVkRU52YlcxbGJuUXBJQ1ltSUd4cGJtVnpXMnhwYm1WekxteGxibWQwYUNBdElERmRJQ0U5UFNBbkp5bGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnNhVzVsY3k1d2RYTm9LQ2NuS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJR3hwYm1WekxuQjFjMmdvYVc1a1pXNTBRMjl0YldWdWRDaGpiMjF0Wlc1MFUzUnlhVzVuS0dSaktTd2dKeWNwS1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNtNGdiR2x1WlhNdWFtOXBiaWduWEZ4dUp5a2dLeUFuWEZ4dUp6dGNibjFjYmx4dVpYaHdiM0owSUhzZ2MzUnlhVzVuYVdaNVJHOWpkVzFsYm5RZ2ZUdGNiaUlzSUNKcGJYQnZjblFnZXlCQmJHbGhjeUI5SUdaeWIyMGdKeTR1TDI1dlpHVnpMMEZzYVdGekxtcHpKenRjYm1sdGNHOXlkQ0I3SUdselJXMXdkSGxRWVhSb0xDQmpiMnhzWldOMGFXOXVSbkp2YlZCaGRHZ2dmU0JtY205dElDY3VMaTl1YjJSbGN5OURiMnhzWldOMGFXOXVMbXB6Snp0Y2JtbHRjRzl5ZENCN0lFNVBSRVZmVkZsUVJTd2dSRTlETENCcGMwNXZaR1VzSUdselEyOXNiR1ZqZEdsdmJpd2dhWE5UWTJGc1lYSWdmU0JtY205dElDY3VMaTl1YjJSbGN5OXBaR1Z1ZEdsMGVTNXFjeWM3WEc1cGJYQnZjblFnZXlCUVlXbHlJSDBnWm5KdmJTQW5MaTR2Ym05a1pYTXZVR0ZwY2k1cWN5YzdYRzVwYlhCdmNuUWdleUIwYjBwVElIMGdabkp2YlNBbkxpNHZibTlrWlhNdmRHOUtVeTVxY3ljN1hHNXBiWEJ2Y25RZ2V5QlRZMmhsYldFZ2ZTQm1jbTl0SUNjdUxpOXpZMmhsYldFdlUyTm9aVzFoTG1wekp6dGNibWx0Y0c5eWRDQjdJSE4wY21sdVoybG1lVVJ2WTNWdFpXNTBJSDBnWm5KdmJTQW5MaTR2YzNSeWFXNW5hV1o1TDNOMGNtbHVaMmxtZVVSdlkzVnRaVzUwTG1wekp6dGNibWx0Y0c5eWRDQjdJR0Z1WTJodmNrNWhiV1Z6TENCbWFXNWtUbVYzUVc1amFHOXlMQ0JqY21WaGRHVk9iMlJsUVc1amFHOXljeUI5SUdaeWIyMGdKeTR2WVc1amFHOXljeTVxY3ljN1hHNXBiWEJ2Y25RZ2V5QmhjSEJzZVZKbGRtbDJaWElnZlNCbWNtOXRJQ2N1TDJGd2NHeDVVbVYyYVhabGNpNXFjeWM3WEc1cGJYQnZjblFnZXlCamNtVmhkR1ZPYjJSbElIMGdabkp2YlNBbkxpOWpjbVZoZEdWT2IyUmxMbXB6Snp0Y2JtbHRjRzl5ZENCN0lFUnBjbVZqZEdsMlpYTWdmU0JtY205dElDY3VMMlJwY21WamRHbDJaWE11YW5Nbk8xeHVYRzVqYkdGemN5QkViMk4xYldWdWRDQjdYRzRnSUNBZ1kyOXVjM1J5ZFdOMGIzSW9kbUZzZFdVc0lISmxjR3hoWTJWeUxDQnZjSFJwYjI1ektTQjdYRzRnSUNBZ0lDQWdJQzhxS2lCQklHTnZiVzFsYm5RZ1ltVm1iM0psSUhSb2FYTWdSRzlqZFcxbGJuUWdLaTljYmlBZ0lDQWdJQ0FnZEdocGN5NWpiMjF0Wlc1MFFtVm1iM0psSUQwZ2JuVnNiRHRjYmlBZ0lDQWdJQ0FnTHlvcUlFRWdZMjl0YldWdWRDQnBiVzFsWkdsaGRHVnNlU0JoWm5SbGNpQjBhR2x6SUVSdlkzVnRaVzUwSUNvdlhHNGdJQ0FnSUNBZ0lIUm9hWE11WTI5dGJXVnVkQ0E5SUc1MWJHdzdYRzRnSUNBZ0lDQWdJQzhxS2lCRmNuSnZjbk1nWlc1amIzVnVkR1Z5WldRZ1pIVnlhVzVuSUhCaGNuTnBibWN1SUNvdlhHNGdJQ0FnSUNBZ0lIUm9hWE11WlhKeWIzSnpJRDBnVzEwN1hHNGdJQ0FnSUNBZ0lDOHFLaUJYWVhKdWFXNW5jeUJsYm1OdmRXNTBaWEpsWkNCa2RYSnBibWNnY0dGeWMybHVaeTRnS2k5Y2JpQWdJQ0FnSUNBZ2RHaHBjeTUzWVhKdWFXNW5jeUE5SUZ0ZE8xeHVJQ0FnSUNBZ0lDQlBZbXBsWTNRdVpHVm1hVzVsVUhKdmNHVnlkSGtvZEdocGN5d2dUazlFUlY5VVdWQkZMQ0I3SUhaaGJIVmxPaUJFVDBNZ2ZTazdYRzRnSUNBZ0lDQWdJR3hsZENCZmNtVndiR0ZqWlhJZ1BTQnVkV3hzTzF4dUlDQWdJQ0FnSUNCcFppQW9kSGx3Wlc5bUlISmxjR3hoWTJWeUlEMDlQU0FuWm5WdVkzUnBiMjRuSUh4OElFRnljbUY1TG1selFYSnlZWGtvY21Wd2JHRmpaWElwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JmY21Wd2JHRmpaWElnUFNCeVpYQnNZV05sY2p0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQmxiSE5sSUdsbUlDaHZjSFJwYjI1eklEMDlQU0IxYm1SbFptbHVaV1FnSmlZZ2NtVndiR0ZqWlhJcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUc5d2RHbHZibk1nUFNCeVpYQnNZV05sY2p0Y2JpQWdJQ0FnSUNBZ0lDQWdJSEpsY0d4aFkyVnlJRDBnZFc1a1pXWnBibVZrTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lHTnZibk4wSUc5d2RDQTlJRTlpYW1WamRDNWhjM05wWjI0b2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnYVc1MFFYTkNhV2RKYm5RNklHWmhiSE5sTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdhMlZsY0ZOdmRYSmpaVlJ2YTJWdWN6b2dabUZzYzJVc1hHNGdJQ0FnSUNBZ0lDQWdJQ0JzYjJkTVpYWmxiRG9nSjNkaGNtNG5MRnh1SUNBZ0lDQWdJQ0FnSUNBZ2NISmxkSFI1UlhKeWIzSnpPaUIwY25WbExGeHVJQ0FnSUNBZ0lDQWdJQ0FnYzNSeWFXTjBPaUIwY25WbExGeHVJQ0FnSUNBZ0lDQWdJQ0FnYzNSeWFXNW5TMlY1Y3pvZ1ptRnNjMlVzWEc0Z0lDQWdJQ0FnSUNBZ0lDQjFibWx4ZFdWTFpYbHpPaUIwY25WbExGeHVJQ0FnSUNBZ0lDQWdJQ0FnZG1WeWMybHZiam9nSnpFdU1pZGNiaUFnSUNBZ0lDQWdmU3dnYjNCMGFXOXVjeWs3WEc0Z0lDQWdJQ0FnSUhSb2FYTXViM0IwYVc5dWN5QTlJRzl3ZER0Y2JpQWdJQ0FnSUNBZ2JHVjBJSHNnZG1WeWMybHZiaUI5SUQwZ2IzQjBPMXh1SUNBZ0lDQWdJQ0JwWmlBb2IzQjBhVzl1Y3o4dVgyUnBjbVZqZEdsMlpYTXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIUm9hWE11WkdseVpXTjBhWFpsY3lBOUlHOXdkR2x2Ym5NdVgyUnBjbVZqZEdsMlpYTXVZWFJFYjJOMWJXVnVkQ2dwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lnS0hSb2FYTXVaR2x5WldOMGFYWmxjeTU1WVcxc0xtVjRjR3hwWTJsMEtWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIWmxjbk5wYjI0Z1BTQjBhR2x6TG1ScGNtVmpkR2wyWlhNdWVXRnRiQzUyWlhKemFXOXVPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUdWc2MyVmNiaUFnSUNBZ0lDQWdJQ0FnSUhSb2FYTXVaR2x5WldOMGFYWmxjeUE5SUc1bGR5QkVhWEpsWTNScGRtVnpLSHNnZG1WeWMybHZiaUI5S1R0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTV6WlhSVFkyaGxiV0VvZG1WeWMybHZiaXdnYjNCMGFXOXVjeWs3WEc0Z0lDQWdJQ0FnSUM4dklFQjBjeTFsZUhCbFkzUXRaWEp5YjNJZ1YyVWdZMkZ1SjNRZ2NtVmhiR3g1SUd0dWIzY2dkR2hoZENCMGFHbHpJRzFoZEdOb1pYTWdRMjl1ZEdWdWRITXVYRzRnSUNBZ0lDQWdJSFJvYVhNdVkyOXVkR1Z1ZEhNZ1BWeHVJQ0FnSUNBZ0lDQWdJQ0FnZG1Gc2RXVWdQVDA5SUhWdVpHVm1hVzVsWkNBL0lHNTFiR3dnT2lCMGFHbHpMbU55WldGMFpVNXZaR1VvZG1Gc2RXVXNJRjl5WlhCc1lXTmxjaXdnYjNCMGFXOXVjeWs3WEc0Z0lDQWdmVnh1SUNBZ0lDOHFLbHh1SUNBZ0lDQXFJRU55WldGMFpTQmhJR1JsWlhBZ1kyOXdlU0J2WmlCMGFHbHpJRVJ2WTNWdFpXNTBJR0Z1WkNCcGRITWdZMjl1ZEdWdWRITXVYRzRnSUNBZ0lDcGNiaUFnSUNBZ0tpQkRkWE4wYjIwZ1RtOWtaU0IyWVd4MVpYTWdkR2hoZENCcGJtaGxjbWwwSUdaeWIyMGdZRTlpYW1WamRHQWdjM1JwYkd3Z2NtVm1aWElnZEc4Z2RHaGxhWElnYjNKcFoybHVZV3dnYVc1emRHRnVZMlZ6TGx4dUlDQWdJQ0FxTDF4dUlDQWdJR05zYjI1bEtDa2dlMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQmpiM0I1SUQwZ1QySnFaV04wTG1OeVpXRjBaU2hFYjJOMWJXVnVkQzV3Y205MGIzUjVjR1VzSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJRnRPVDBSRlgxUlpVRVZkT2lCN0lIWmhiSFZsT2lCRVQwTWdmVnh1SUNBZ0lDQWdJQ0I5S1R0Y2JpQWdJQ0FnSUNBZ1kyOXdlUzVqYjIxdFpXNTBRbVZtYjNKbElEMGdkR2hwY3k1amIyMXRaVzUwUW1WbWIzSmxPMXh1SUNBZ0lDQWdJQ0JqYjNCNUxtTnZiVzFsYm5RZ1BTQjBhR2x6TG1OdmJXMWxiblE3WEc0Z0lDQWdJQ0FnSUdOdmNIa3VaWEp5YjNKeklEMGdkR2hwY3k1bGNuSnZjbk11YzJ4cFkyVW9LVHRjYmlBZ0lDQWdJQ0FnWTI5d2VTNTNZWEp1YVc1bmN5QTlJSFJvYVhNdWQyRnlibWx1WjNNdWMyeHBZMlVvS1R0Y2JpQWdJQ0FnSUNBZ1kyOXdlUzV2Y0hScGIyNXpJRDBnVDJKcVpXTjBMbUZ6YzJsbmJpaDdmU3dnZEdocGN5NXZjSFJwYjI1ektUdGNiaUFnSUNBZ0lDQWdhV1lnS0hSb2FYTXVaR2x5WldOMGFYWmxjeWxjYmlBZ0lDQWdJQ0FnSUNBZ0lHTnZjSGt1WkdseVpXTjBhWFpsY3lBOUlIUm9hWE11WkdseVpXTjBhWFpsY3k1amJHOXVaU2dwTzF4dUlDQWdJQ0FnSUNCamIzQjVMbk5qYUdWdFlTQTlJSFJvYVhNdWMyTm9aVzFoTG1Oc2IyNWxLQ2s3WEc0Z0lDQWdJQ0FnSUM4dklFQjBjeTFsZUhCbFkzUXRaWEp5YjNJZ1YyVWdZMkZ1SjNRZ2NtVmhiR3g1SUd0dWIzY2dkR2hoZENCMGFHbHpJRzFoZEdOb1pYTWdRMjl1ZEdWdWRITXVYRzRnSUNBZ0lDQWdJR052Y0hrdVkyOXVkR1Z1ZEhNZ1BTQnBjMDV2WkdVb2RHaHBjeTVqYjI1MFpXNTBjeWxjYmlBZ0lDQWdJQ0FnSUNBZ0lEOGdkR2hwY3k1amIyNTBaVzUwY3k1amJHOXVaU2hqYjNCNUxuTmphR1Z0WVNsY2JpQWdJQ0FnSUNBZ0lDQWdJRG9nZEdocGN5NWpiMjUwWlc1MGN6dGNiaUFnSUNBZ0lDQWdhV1lnS0hSb2FYTXVjbUZ1WjJVcFhHNGdJQ0FnSUNBZ0lDQWdJQ0JqYjNCNUxuSmhibWRsSUQwZ2RHaHBjeTV5WVc1blpTNXpiR2xqWlNncE8xeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z1kyOXdlVHRjYmlBZ0lDQjlYRzRnSUNBZ0x5b3FJRUZrWkhNZ1lTQjJZV3gxWlNCMGJ5QjBhR1VnWkc5amRXMWxiblF1SUNvdlhHNGdJQ0FnWVdSa0tIWmhiSFZsS1NCN1hHNGdJQ0FnSUNBZ0lHbG1JQ2hoYzNObGNuUkRiMnhzWldOMGFXOXVLSFJvYVhNdVkyOXVkR1Z1ZEhNcEtWeHVJQ0FnSUNBZ0lDQWdJQ0FnZEdocGN5NWpiMjUwWlc1MGN5NWhaR1FvZG1Gc2RXVXBPMXh1SUNBZ0lIMWNiaUFnSUNBdktpb2dRV1JrY3lCaElIWmhiSFZsSUhSdklIUm9aU0JrYjJOMWJXVnVkQzRnS2k5Y2JpQWdJQ0JoWkdSSmJpaHdZWFJvTENCMllXeDFaU2tnZTF4dUlDQWdJQ0FnSUNCcFppQW9ZWE56WlhKMFEyOXNiR1ZqZEdsdmJpaDBhR2x6TG1OdmJuUmxiblJ6S1NsY2JpQWdJQ0FnSUNBZ0lDQWdJSFJvYVhNdVkyOXVkR1Z1ZEhNdVlXUmtTVzRvY0dGMGFDd2dkbUZzZFdVcE8xeHVJQ0FnSUgxY2JpQWdJQ0F2S2lwY2JpQWdJQ0FnS2lCRGNtVmhkR1VnWVNCdVpYY2dZRUZzYVdGellDQnViMlJsTENCbGJuTjFjbWx1WnlCMGFHRjBJSFJvWlNCMFlYSm5aWFFnWUc1dlpHVmdJR2hoY3lCMGFHVWdjbVZ4ZFdseVpXUWdZVzVqYUc5eUxseHVJQ0FnSUNBcVhHNGdJQ0FnSUNvZ1NXWWdZRzV2WkdWZ0lHRnNjbVZoWkhrZ2FHRnpJR0Z1SUdGdVkyaHZjaXdnWUc1aGJXVmdJR2x6SUdsbmJtOXlaV1F1WEc0Z0lDQWdJQ29nVDNSb1pYSjNhWE5sTENCMGFHVWdZRzV2WkdVdVlXNWphRzl5WUNCMllXeDFaU0IzYVd4c0lHSmxJSE5sZENCMGJ5QmdibUZ0WldBc1hHNGdJQ0FnSUNvZ2IzSWdhV1lnWVc0Z1lXNWphRzl5SUhkcGRHZ2dkR2hoZENCdVlXMWxJR2x6SUdGc2NtVmhaSGtnY0hKbGMyVnVkQ0JwYmlCMGFHVWdaRzlqZFcxbGJuUXNYRzRnSUNBZ0lDb2dZRzVoYldWZ0lIZHBiR3dnWW1VZ2RYTmxaQ0JoY3lCaElIQnlaV1pwZUNCbWIzSWdZU0J1WlhjZ2RXNXBjWFZsSUdGdVkyaHZjaTVjYmlBZ0lDQWdLaUJKWmlCZ2JtRnRaV0FnYVhNZ2RXNWtaV1pwYm1Wa0xDQjBhR1VnWjJWdVpYSmhkR1ZrSUdGdVkyaHZjaUIzYVd4c0lIVnpaU0FuWVNjZ1lYTWdZU0J3Y21WbWFYZ3VYRzRnSUNBZ0lDb3ZYRzRnSUNBZ1kzSmxZWFJsUVd4cFlYTW9ibTlrWlN3Z2JtRnRaU2tnZTF4dUlDQWdJQ0FnSUNCcFppQW9JVzV2WkdVdVlXNWphRzl5S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JqYjI1emRDQndjbVYySUQwZ1lXNWphRzl5VG1GdFpYTW9kR2hwY3lrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J1YjJSbExtRnVZMmh2Y2lBOVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0x5OGdaWE5zYVc1MExXUnBjMkZpYkdVdGJtVjRkQzFzYVc1bElFQjBlWEJsYzJOeWFYQjBMV1Z6YkdsdWRDOXdjbVZtWlhJdGJuVnNiR2x6YUMxamIyRnNaWE5qYVc1blhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lXNWhiV1VnZkh3Z2NISmxkaTVvWVhNb2JtRnRaU2tnUHlCbWFXNWtUbVYzUVc1amFHOXlLRzVoYldVZ2ZId2dKMkVuTENCd2NtVjJLU0E2SUc1aGJXVTdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJRzVsZHlCQmJHbGhjeWh1YjJSbExtRnVZMmh2Y2lrN1hHNGdJQ0FnZlZ4dUlDQWdJR055WldGMFpVNXZaR1VvZG1Gc2RXVXNJSEpsY0d4aFkyVnlMQ0J2Y0hScGIyNXpLU0I3WEc0Z0lDQWdJQ0FnSUd4bGRDQmZjbVZ3YkdGalpYSWdQU0IxYm1SbFptbHVaV1E3WEc0Z0lDQWdJQ0FnSUdsbUlDaDBlWEJsYjJZZ2NtVndiR0ZqWlhJZ1BUMDlJQ2RtZFc1amRHbHZiaWNwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJSFpoYkhWbElEMGdjbVZ3YkdGalpYSXVZMkZzYkNoN0lDY25PaUIyWVd4MVpTQjlMQ0FuSnl3Z2RtRnNkV1VwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdYM0psY0d4aFkyVnlJRDBnY21Wd2JHRmpaWEk3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ1pXeHpaU0JwWmlBb1FYSnlZWGt1YVhOQmNuSmhlU2h5WlhCc1lXTmxjaWtwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJR052Ym5OMElHdGxlVlJ2VTNSeUlEMGdLSFlwSUQwK0lIUjVjR1Z2WmlCMklEMDlQU0FuYm5WdFltVnlKeUI4ZkNCMklHbHVjM1JoYm1ObGIyWWdVM1J5YVc1bklIeDhJSFlnYVc1emRHRnVZMlZ2WmlCT2RXMWlaWEk3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCaGMxTjBjaUE5SUhKbGNHeGhZMlZ5TG1acGJIUmxjaWhyWlhsVWIxTjBjaWt1YldGd0tGTjBjbWx1WnlrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb1lYTlRkSEl1YkdWdVozUm9JRDRnTUNsY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYQnNZV05sY2lBOUlISmxjR3hoWTJWeUxtTnZibU5oZENoaGMxTjBjaWs3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmZjbVZ3YkdGalpYSWdQU0J5WlhCc1lXTmxjanRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCbGJITmxJR2xtSUNodmNIUnBiMjV6SUQwOVBTQjFibVJsWm1sdVpXUWdKaVlnY21Wd2JHRmpaWElwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJRzl3ZEdsdmJuTWdQU0J5WlhCc1lXTmxjanRjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxjR3hoWTJWeUlEMGdkVzVrWldacGJtVmtPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJSHNnWVd4cFlYTkVkWEJzYVdOaGRHVlBZbXBsWTNSekxDQmhibU5vYjNKUWNtVm1hWGdzSUdac2IzY3NJR3RsWlhCVmJtUmxabWx1WldRc0lHOXVWR0ZuVDJKcUxDQjBZV2NnZlNBOUlHOXdkR2x2Ym5NZ1B6OGdlMzA3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJSHNnYjI1QmJtTm9iM0lzSUhObGRFRnVZMmh2Y25Nc0lITnZkWEpqWlU5aWFtVmpkSE1nZlNBOUlHTnlaV0YwWlU1dlpHVkJibU5vYjNKektIUm9hWE1zSUZ4dUlDQWdJQ0FnSUNBdkx5QmxjMnhwYm5RdFpHbHpZV0pzWlMxdVpYaDBMV3hwYm1VZ1FIUjVjR1Z6WTNKcGNIUXRaWE5zYVc1MEwzQnlaV1psY2kxdWRXeHNhWE5vTFdOdllXeGxjMk5wYm1kY2JpQWdJQ0FnSUNBZ1lXNWphRzl5VUhKbFptbDRJSHg4SUNkaEp5azdYRzRnSUNBZ0lDQWdJR052Ym5OMElHTjBlQ0E5SUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJR0ZzYVdGelJIVndiR2xqWVhSbFQySnFaV04wY3pvZ1lXeHBZWE5FZFhCc2FXTmhkR1ZQWW1wbFkzUnpJRDgvSUhSeWRXVXNYRzRnSUNBZ0lDQWdJQ0FnSUNCclpXVndWVzVrWldacGJtVmtPaUJyWldWd1ZXNWtaV1pwYm1Wa0lEOC9JR1poYkhObExGeHVJQ0FnSUNBZ0lDQWdJQ0FnYjI1QmJtTm9iM0lzWEc0Z0lDQWdJQ0FnSUNBZ0lDQnZibFJoWjA5aWFpeGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGNHeGhZMlZ5T2lCZmNtVndiR0ZqWlhJc1hHNGdJQ0FnSUNBZ0lDQWdJQ0J6WTJobGJXRTZJSFJvYVhNdWMyTm9aVzFoTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdjMjkxY21ObFQySnFaV04wYzF4dUlDQWdJQ0FnSUNCOU8xeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCdWIyUmxJRDBnWTNKbFlYUmxUbTlrWlNoMllXeDFaU3dnZEdGbkxDQmpkSGdwTzF4dUlDQWdJQ0FnSUNCcFppQW9abXh2ZHlBbUppQnBjME52Ykd4bFkzUnBiMjRvYm05a1pTa3BYRzRnSUNBZ0lDQWdJQ0FnSUNCdWIyUmxMbVpzYjNjZ1BTQjBjblZsTzF4dUlDQWdJQ0FnSUNCelpYUkJibU5vYjNKektDazdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQnViMlJsTzF4dUlDQWdJSDFjYmlBZ0lDQXZLaXBjYmlBZ0lDQWdLaUJEYjI1MlpYSjBJR0VnYTJWNUlHRnVaQ0JoSUhaaGJIVmxJR2x1ZEc4Z1lTQmdVR0ZwY21BZ2RYTnBibWNnZEdobElHTjFjbkpsYm5RZ2MyTm9aVzFoTEZ4dUlDQWdJQ0FxSUhKbFkzVnljMmwyWld4NUlIZHlZWEJ3YVc1bklHRnNiQ0IyWVd4MVpYTWdZWE1nWUZOallXeGhjbUFnYjNJZ1lFTnZiR3hsWTNScGIyNWdJRzV2WkdWekxseHVJQ0FnSUNBcUwxeHVJQ0FnSUdOeVpXRjBaVkJoYVhJb2EyVjVMQ0IyWVd4MVpTd2diM0IwYVc5dWN5QTlJSHQ5S1NCN1hHNGdJQ0FnSUNBZ0lHTnZibk4wSUdzZ1BTQjBhR2x6TG1OeVpXRjBaVTV2WkdVb2EyVjVMQ0J1ZFd4c0xDQnZjSFJwYjI1ektUdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2RpQTlJSFJvYVhNdVkzSmxZWFJsVG05a1pTaDJZV3gxWlN3Z2JuVnNiQ3dnYjNCMGFXOXVjeWs3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJ1WlhjZ1VHRnBjaWhyTENCMktUdGNiaUFnSUNCOVhHNGdJQ0FnTHlvcVhHNGdJQ0FnSUNvZ1VtVnRiM1psY3lCaElIWmhiSFZsSUdaeWIyMGdkR2hsSUdSdlkzVnRaVzUwTGx4dUlDQWdJQ0FxSUVCeVpYUjFjbTV6SUdCMGNuVmxZQ0JwWmlCMGFHVWdhWFJsYlNCM1lYTWdabTkxYm1RZ1lXNWtJSEpsYlc5MlpXUXVYRzRnSUNBZ0lDb3ZYRzRnSUNBZ1pHVnNaWFJsS0d0bGVTa2dlMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdZWE56WlhKMFEyOXNiR1ZqZEdsdmJpaDBhR2x6TG1OdmJuUmxiblJ6S1NBL0lIUm9hWE11WTI5dWRHVnVkSE11WkdWc1pYUmxLR3RsZVNrZ09pQm1ZV3h6WlR0Y2JpQWdJQ0I5WEc0Z0lDQWdMeW9xWEc0Z0lDQWdJQ29nVW1WdGIzWmxjeUJoSUhaaGJIVmxJR1p5YjIwZ2RHaGxJR1J2WTNWdFpXNTBMbHh1SUNBZ0lDQXFJRUJ5WlhSMWNtNXpJR0IwY25WbFlDQnBaaUIwYUdVZ2FYUmxiU0IzWVhNZ1ptOTFibVFnWVc1a0lISmxiVzkyWldRdVhHNGdJQ0FnSUNvdlhHNGdJQ0FnWkdWc1pYUmxTVzRvY0dGMGFDa2dlMXh1SUNBZ0lDQWdJQ0JwWmlBb2FYTkZiWEIwZVZCaGRHZ29jR0YwYUNrcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDaDBhR2x6TG1OdmJuUmxiblJ6SUQwOUlHNTFiR3dwWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJR1poYkhObE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnTHk4Z1FIUnpMV1Y0Y0dWamRDMWxjbkp2Y2lCUWNtVnpkVzFsWkNCcGJYQnZjM05wWW14bElHbG1JRk4wY21samRDQmxlSFJsYm1SeklHWmhiSE5sWEc0Z0lDQWdJQ0FnSUNBZ0lDQjBhR2x6TG1OdmJuUmxiblJ6SUQwZ2JuVnNiRHRjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCMGNuVmxPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJoYzNObGNuUkRiMnhzWldOMGFXOXVLSFJvYVhNdVkyOXVkR1Z1ZEhNcFhHNGdJQ0FnSUNBZ0lDQWdJQ0EvSUhSb2FYTXVZMjl1ZEdWdWRITXVaR1ZzWlhSbFNXNG9jR0YwYUNsY2JpQWdJQ0FnSUNBZ0lDQWdJRG9nWm1Gc2MyVTdYRzRnSUNBZ2ZWeHVJQ0FnSUM4cUtseHVJQ0FnSUNBcUlGSmxkSFZ5Ym5NZ2FYUmxiU0JoZENCZ2EyVjVZQ3dnYjNJZ1lIVnVaR1ZtYVc1bFpHQWdhV1lnYm05MElHWnZkVzVrTGlCQ2VTQmtaV1poZFd4MElIVnVkM0poY0hOY2JpQWdJQ0FnS2lCelkyRnNZWElnZG1Gc2RXVnpJR1p5YjIwZ2RHaGxhWElnYzNWeWNtOTFibVJwYm1jZ2JtOWtaVHNnZEc4Z1pHbHpZV0pzWlNCelpYUWdZR3RsWlhCVFkyRnNZWEpnSUhSdlhHNGdJQ0FnSUNvZ1lIUnlkV1ZnSUNoamIyeHNaV04wYVc5dWN5QmhjbVVnWVd4M1lYbHpJSEpsZEhWeWJtVmtJR2x1ZEdGamRDa3VYRzRnSUNBZ0lDb3ZYRzRnSUNBZ1oyVjBLR3RsZVN3Z2EyVmxjRk5qWVd4aGNpa2dlMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdhWE5EYjJ4c1pXTjBhVzl1S0hSb2FYTXVZMjl1ZEdWdWRITXBYRzRnSUNBZ0lDQWdJQ0FnSUNBL0lIUm9hWE11WTI5dWRHVnVkSE11WjJWMEtHdGxlU3dnYTJWbGNGTmpZV3hoY2lsY2JpQWdJQ0FnSUNBZ0lDQWdJRG9nZFc1a1pXWnBibVZrTzF4dUlDQWdJSDFjYmlBZ0lDQXZLaXBjYmlBZ0lDQWdLaUJTWlhSMWNtNXpJR2wwWlcwZ1lYUWdZSEJoZEdoZ0xDQnZjaUJnZFc1a1pXWnBibVZrWUNCcFppQnViM1FnWm05MWJtUXVJRUo1SUdSbFptRjFiSFFnZFc1M2NtRndjMXh1SUNBZ0lDQXFJSE5qWVd4aGNpQjJZV3gxWlhNZ1puSnZiU0IwYUdWcGNpQnpkWEp5YjNWdVpHbHVaeUJ1YjJSbE95QjBieUJrYVhOaFlteGxJSE5sZENCZ2EyVmxjRk5qWVd4aGNtQWdkRzljYmlBZ0lDQWdLaUJnZEhKMVpXQWdLR052Ykd4bFkzUnBiMjV6SUdGeVpTQmhiSGRoZVhNZ2NtVjBkWEp1WldRZ2FXNTBZV04wS1M1Y2JpQWdJQ0FnS2k5Y2JpQWdJQ0JuWlhSSmJpaHdZWFJvTENCclpXVndVMk5oYkdGeUtTQjdYRzRnSUNBZ0lDQWdJR2xtSUNocGMwVnRjSFI1VUdGMGFDaHdZWFJvS1NsY2JpQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQWhhMlZsY0ZOallXeGhjaUFtSmlCcGMxTmpZV3hoY2loMGFHbHpMbU52Ym5SbGJuUnpLVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRDhnZEdocGN5NWpiMjUwWlc1MGN5NTJZV3gxWlZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSURvZ2RHaHBjeTVqYjI1MFpXNTBjenRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJR2x6UTI5c2JHVmpkR2x2YmloMGFHbHpMbU52Ym5SbGJuUnpLVnh1SUNBZ0lDQWdJQ0FnSUNBZ1B5QjBhR2x6TG1OdmJuUmxiblJ6TG1kbGRFbHVLSEJoZEdnc0lHdGxaWEJUWTJGc1lYSXBYRzRnSUNBZ0lDQWdJQ0FnSUNBNklIVnVaR1ZtYVc1bFpEdGNiaUFnSUNCOVhHNGdJQ0FnTHlvcVhHNGdJQ0FnSUNvZ1EyaGxZMnR6SUdsbUlIUm9aU0JrYjJOMWJXVnVkQ0JwYm1Oc2RXUmxjeUJoSUhaaGJIVmxJSGRwZEdnZ2RHaGxJR3RsZVNCZ2EyVjVZQzVjYmlBZ0lDQWdLaTljYmlBZ0lDQm9ZWE1vYTJWNUtTQjdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQnBjME52Ykd4bFkzUnBiMjRvZEdocGN5NWpiMjUwWlc1MGN5a2dQeUIwYUdsekxtTnZiblJsYm5SekxtaGhjeWhyWlhrcElEb2dabUZzYzJVN1hHNGdJQ0FnZlZ4dUlDQWdJQzhxS2x4dUlDQWdJQ0FxSUVOb1pXTnJjeUJwWmlCMGFHVWdaRzlqZFcxbGJuUWdhVzVqYkhWa1pYTWdZU0IyWVd4MVpTQmhkQ0JnY0dGMGFHQXVYRzRnSUNBZ0lDb3ZYRzRnSUNBZ2FHRnpTVzRvY0dGMGFDa2dlMXh1SUNBZ0lDQWdJQ0JwWmlBb2FYTkZiWEIwZVZCaGRHZ29jR0YwYUNrcFhHNGdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdkR2hwY3k1amIyNTBaVzUwY3lBaFBUMGdkVzVrWldacGJtVmtPMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdhWE5EYjJ4c1pXTjBhVzl1S0hSb2FYTXVZMjl1ZEdWdWRITXBJRDhnZEdocGN5NWpiMjUwWlc1MGN5NW9ZWE5KYmlod1lYUm9LU0E2SUdaaGJITmxPMXh1SUNBZ0lIMWNiaUFnSUNBdktpcGNiaUFnSUNBZ0tpQlRaWFJ6SUdFZ2RtRnNkV1VnYVc0Z2RHaHBjeUJrYjJOMWJXVnVkQzRnUm05eUlHQWhJWE5sZEdBc0lHQjJZV3gxWldBZ2JtVmxaSE1nZEc4Z1ltVWdZVnh1SUNBZ0lDQXFJR0p2YjJ4bFlXNGdkRzhnWVdSa0wzSmxiVzkyWlNCMGFHVWdhWFJsYlNCbWNtOXRJSFJvWlNCelpYUXVYRzRnSUNBZ0lDb3ZYRzRnSUNBZ2MyVjBLR3RsZVN3Z2RtRnNkV1VwSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLSFJvYVhNdVkyOXVkR1Z1ZEhNZ1BUMGdiblZzYkNrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnTHk4Z1FIUnpMV1Y0Y0dWamRDMWxjbkp2Y2lCWFpTQmpZVzRuZENCeVpXRnNiSGtnYTI1dmR5QjBhR0YwSUhSb2FYTWdiV0YwWTJobGN5QkRiMjUwWlc1MGN5NWNiaUFnSUNBZ0lDQWdJQ0FnSUhSb2FYTXVZMjl1ZEdWdWRITWdQU0JqYjJ4c1pXTjBhVzl1Um5KdmJWQmhkR2dvZEdocGN5NXpZMmhsYldFc0lGdHJaWGxkTENCMllXeDFaU2s3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ1pXeHpaU0JwWmlBb1lYTnpaWEowUTI5c2JHVmpkR2x2YmloMGFHbHpMbU52Ym5SbGJuUnpLU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdkR2hwY3k1amIyNTBaVzUwY3k1elpYUW9hMlY1TENCMllXeDFaU2s3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0I5WEc0Z0lDQWdMeW9xWEc0Z0lDQWdJQ29nVTJWMGN5QmhJSFpoYkhWbElHbHVJSFJvYVhNZ1pHOWpkVzFsYm5RdUlFWnZjaUJnSVNGelpYUmdMQ0JnZG1Gc2RXVmdJRzVsWldSeklIUnZJR0psSUdGY2JpQWdJQ0FnS2lCaWIyOXNaV0Z1SUhSdklHRmtaQzl5WlcxdmRtVWdkR2hsSUdsMFpXMGdabkp2YlNCMGFHVWdjMlYwTGx4dUlDQWdJQ0FxTDF4dUlDQWdJSE5sZEVsdUtIQmhkR2dzSUhaaGJIVmxLU0I3WEc0Z0lDQWdJQ0FnSUdsbUlDaHBjMFZ0Y0hSNVVHRjBhQ2h3WVhSb0tTa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0x5OGdRSFJ6TFdWNGNHVmpkQzFsY25KdmNpQlhaU0JqWVc0bmRDQnlaV0ZzYkhrZ2EyNXZkeUIwYUdGMElIUm9hWE1nYldGMFkyaGxjeUJEYjI1MFpXNTBjeTVjYmlBZ0lDQWdJQ0FnSUNBZ0lIUm9hWE11WTI5dWRHVnVkSE1nUFNCMllXeDFaVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCbGJITmxJR2xtSUNoMGFHbHpMbU52Ym5SbGJuUnpJRDA5SUc1MWJHd3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDOHZJRUIwY3kxbGVIQmxZM1F0WlhKeWIzSWdWMlVnWTJGdUozUWdjbVZoYkd4NUlHdHViM2NnZEdoaGRDQjBhR2x6SUcxaGRHTm9aWE1nUTI5dWRHVnVkSE11WEc0Z0lDQWdJQ0FnSUNBZ0lDQjBhR2x6TG1OdmJuUmxiblJ6SUQwZ1kyOXNiR1ZqZEdsdmJrWnliMjFRWVhSb0tIUm9hWE11YzJOb1pXMWhMQ0JCY25KaGVTNW1jbTl0S0hCaGRHZ3BMQ0IyWVd4MVpTazdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnWld4elpTQnBaaUFvWVhOelpYSjBRMjlzYkdWamRHbHZiaWgwYUdsekxtTnZiblJsYm5SektTa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2RHaHBjeTVqYjI1MFpXNTBjeTV6WlhSSmJpaHdZWFJvTENCMllXeDFaU2s3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0I5WEc0Z0lDQWdMeW9xWEc0Z0lDQWdJQ29nUTJoaGJtZGxJSFJvWlNCWlFVMU1JSFpsY25OcGIyNGdZVzVrSUhOamFHVnRZU0IxYzJWa0lHSjVJSFJvWlNCa2IyTjFiV1Z1ZEM1Y2JpQWdJQ0FnS2lCQklHQnVkV3hzWUNCMlpYSnphVzl1SUdScGMyRmliR1Z6SUhOMWNIQnZjblFnWm05eUlHUnBjbVZqZEdsMlpYTXNJR1Y0Y0d4cFkybDBJSFJoWjNNc0lHRnVZMmh2Y25Nc0lHRnVaQ0JoYkdsaGMyVnpMbHh1SUNBZ0lDQXFJRWwwSUdGc2MyOGdjbVZ4ZFdseVpYTWdkR2hsSUdCelkyaGxiV0ZnSUc5d2RHbHZiaUIwYnlCaVpTQm5hWFpsYmlCaGN5QmhJR0JUWTJobGJXRmdJR2x1YzNSaGJtTmxJSFpoYkhWbExseHVJQ0FnSUNBcVhHNGdJQ0FnSUNvZ1QzWmxjbkpwWkdWeklHRnNiQ0J3Y21WMmFXOTFjMng1SUhObGRDQnpZMmhsYldFZ2IzQjBhVzl1Y3k1Y2JpQWdJQ0FnS2k5Y2JpQWdJQ0J6WlhSVFkyaGxiV0VvZG1WeWMybHZiaXdnYjNCMGFXOXVjeUE5SUh0OUtTQjdYRzRnSUNBZ0lDQWdJR2xtSUNoMGVYQmxiMllnZG1WeWMybHZiaUE5UFQwZ0oyNTFiV0psY2ljcFhHNGdJQ0FnSUNBZ0lDQWdJQ0IyWlhKemFXOXVJRDBnVTNSeWFXNW5LSFpsY25OcGIyNHBPMXh1SUNBZ0lDQWdJQ0JzWlhRZ2IzQjBPMXh1SUNBZ0lDQWdJQ0J6ZDJsMFkyZ2dLSFpsY25OcGIyNHBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHTmhjMlVnSnpFdU1TYzZYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhV1lnS0hSb2FYTXVaR2x5WldOMGFYWmxjeWxjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RHaHBjeTVrYVhKbFkzUnBkbVZ6TG5saGJXd3VkbVZ5YzJsdmJpQTlJQ2N4TGpFbk8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHVnNjMlZjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RHaHBjeTVrYVhKbFkzUnBkbVZ6SUQwZ2JtVjNJRVJwY21WamRHbDJaWE1vZXlCMlpYSnphVzl1T2lBbk1TNHhKeUI5S1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCdmNIUWdQU0I3SUhKbGMyOXNkbVZMYm05M2JsUmhaM002SUdaaGJITmxMQ0J6WTJobGJXRTZJQ2Q1WVcxc0xURXVNU2NnZlR0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQWdJQ0FnSUNBZ0lHTmhjMlVnSnpFdU1pYzZYRzRnSUNBZ0lDQWdJQ0FnSUNCallYTmxJQ2R1WlhoMEp6cGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBaaUFvZEdocGN5NWthWEpsWTNScGRtVnpLVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCMGFHbHpMbVJwY21WamRHbDJaWE11ZVdGdGJDNTJaWEp6YVc5dUlEMGdkbVZ5YzJsdmJqdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmxiSE5sWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIUm9hWE11WkdseVpXTjBhWFpsY3lBOUlHNWxkeUJFYVhKbFkzUnBkbVZ6S0hzZ2RtVnljMmx2YmlCOUtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnZjSFFnUFNCN0lISmxjMjlzZG1WTGJtOTNibFJoWjNNNklIUnlkV1VzSUhOamFHVnRZVG9nSjJOdmNtVW5JSDA3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWW5KbFlXczdYRzRnSUNBZ0lDQWdJQ0FnSUNCallYTmxJRzUxYkd3NlhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLSFJvYVhNdVpHbHlaV04wYVhabGN5bGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWkdWc1pYUmxJSFJvYVhNdVpHbHlaV04wYVhabGN6dGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnZjSFFnUFNCdWRXeHNPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR0p5WldGck8xeHVJQ0FnSUNBZ0lDQWdJQ0FnWkdWbVlYVnNkRG9nZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdOdmJuTjBJSE4ySUQwZ1NsTlBUaTV6ZEhKcGJtZHBabmtvZG1WeWMybHZiaWs3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZEdoeWIzY2dibVYzSUVWeWNtOXlLR0JGZUhCbFkzUmxaQ0FuTVM0eEp5d2dKekV1TWljZ2IzSWdiblZzYkNCaGN5Qm1hWEp6ZENCaGNtZDFiV1Z1ZEN3Z1luVjBJR1p2ZFc1a09pQWtlM04yZldBcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDOHZJRTV2ZENCMWMybHVaeUJnYVc1emRHRnVZMlZ2WmlCVFkyaGxiV0ZnSUhSdklHRnNiRzkzSUdadmNpQmtkV05ySUhSNWNHbHVaMXh1SUNBZ0lDQWdJQ0JwWmlBb2IzQjBhVzl1Y3k1elkyaGxiV0VnYVc1emRHRnVZMlZ2WmlCUFltcGxZM1FwWEc0Z0lDQWdJQ0FnSUNBZ0lDQjBhR2x6TG5OamFHVnRZU0E5SUc5d2RHbHZibk11YzJOb1pXMWhPMXh1SUNBZ0lDQWdJQ0JsYkhObElHbG1JQ2h2Y0hRcFhHNGdJQ0FnSUNBZ0lDQWdJQ0IwYUdsekxuTmphR1Z0WVNBOUlHNWxkeUJUWTJobGJXRW9UMkpxWldOMExtRnpjMmxuYmlodmNIUXNJRzl3ZEdsdmJuTXBLVHRjYmlBZ0lDQWdJQ0FnWld4elpWeHVJQ0FnSUNBZ0lDQWdJQ0FnZEdoeWIzY2dibVYzSUVWeWNtOXlLR0JYYVhSb0lHRWdiblZzYkNCWlFVMU1JSFpsY25OcGIyNHNJSFJvWlNCN0lITmphR1Z0WVRvZ1UyTm9aVzFoSUgwZ2IzQjBhVzl1SUdseklISmxjWFZwY21Wa1lDazdYRzRnSUNBZ2ZWeHVJQ0FnSUM4dklHcHpiMjRnSmlCcWMyOXVRWEpuSUdGeVpTQnZibXg1SUhWelpXUWdabkp2YlNCMGIwcFRUMDRvS1Z4dUlDQWdJSFJ2U2xNb2V5QnFjMjl1TENCcWMyOXVRWEpuTENCdFlYQkJjMDFoY0N3Z2JXRjRRV3hwWVhORGIzVnVkQ3dnYjI1QmJtTm9iM0lzSUhKbGRtbDJaWElnZlNBOUlIdDlLU0I3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJR04wZUNBOUlIdGNiaUFnSUNBZ0lDQWdJQ0FnSUdGdVkyaHZjbk02SUc1bGR5Qk5ZWEFvS1N4Y2JpQWdJQ0FnSUNBZ0lDQWdJR1J2WXpvZ2RHaHBjeXhjYmlBZ0lDQWdJQ0FnSUNBZ0lHdGxaWEE2SUNGcWMyOXVMRnh1SUNBZ0lDQWdJQ0FnSUNBZ2JXRndRWE5OWVhBNklHMWhjRUZ6VFdGd0lEMDlQU0IwY25WbExGeHVJQ0FnSUNBZ0lDQWdJQ0FnYldGd1MyVjVWMkZ5Ym1Wa09pQm1ZV3h6WlN4Y2JpQWdJQ0FnSUNBZ0lDQWdJRzFoZUVGc2FXRnpRMjkxYm5RNklIUjVjR1Z2WmlCdFlYaEJiR2xoYzBOdmRXNTBJRDA5UFNBbmJuVnRZbVZ5SnlBL0lHMWhlRUZzYVdGelEyOTFiblFnT2lBeE1EQmNiaUFnSUNBZ0lDQWdmVHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdjbVZ6SUQwZ2RHOUtVeWgwYUdsekxtTnZiblJsYm5SekxDQnFjMjl1UVhKbklEOC9JQ2NuTENCamRIZ3BPMXh1SUNBZ0lDQWdJQ0JwWmlBb2RIbHdaVzltSUc5dVFXNWphRzl5SUQwOVBTQW5ablZ1WTNScGIyNG5LVnh1SUNBZ0lDQWdJQ0FnSUNBZ1ptOXlJQ2hqYjI1emRDQjdJR052ZFc1MExDQnlaWE1nZlNCdlppQmpkSGd1WVc1amFHOXljeTUyWVd4MVpYTW9LU2xjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J2YmtGdVkyaHZjaWh5WlhNc0lHTnZkVzUwS1R0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUhSNWNHVnZaaUJ5WlhacGRtVnlJRDA5UFNBblpuVnVZM1JwYjI0blhHNGdJQ0FnSUNBZ0lDQWdJQ0EvSUdGd2NHeDVVbVYyYVhabGNpaHlaWFpwZG1WeUxDQjdJQ2NuT2lCeVpYTWdmU3dnSnljc0lISmxjeWxjYmlBZ0lDQWdJQ0FnSUNBZ0lEb2djbVZ6TzF4dUlDQWdJSDFjYmlBZ0lDQXZLaXBjYmlBZ0lDQWdLaUJCSUVwVFQwNGdjbVZ3Y21WelpXNTBZWFJwYjI0Z2IyWWdkR2hsSUdSdlkzVnRaVzUwSUdCamIyNTBaVzUwYzJBdVhHNGdJQ0FnSUNwY2JpQWdJQ0FnS2lCQWNHRnlZVzBnYW5OdmJrRnlaeUJWYzJWa0lHSjVJR0JLVTA5T0xuTjBjbWx1WjJsbWVXQWdkRzhnYVc1a2FXTmhkR1VnZEdobElHRnljbUY1SUdsdVpHVjRJRzl5WEc0Z0lDQWdJQ29nSUNCd2NtOXdaWEowZVNCdVlXMWxMbHh1SUNBZ0lDQXFMMXh1SUNBZ0lIUnZTbE5QVGlocWMyOXVRWEpuTENCdmJrRnVZMmh2Y2lrZ2UxeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2RHaHBjeTUwYjBwVEtIc2dhbk52YmpvZ2RISjFaU3dnYW5OdmJrRnlaeXdnYldGd1FYTk5ZWEE2SUdaaGJITmxMQ0J2YmtGdVkyaHZjaUI5S1R0Y2JpQWdJQ0I5WEc0Z0lDQWdMeW9xSUVFZ1dVRk5UQ0J5WlhCeVpYTmxiblJoZEdsdmJpQnZaaUIwYUdVZ1pHOWpkVzFsYm5RdUlDb3ZYRzRnSUNBZ2RHOVRkSEpwYm1jb2IzQjBhVzl1Y3lBOUlIdDlLU0I3WEc0Z0lDQWdJQ0FnSUdsbUlDaDBhR2x6TG1WeWNtOXljeTVzWlc1bmRHZ2dQaUF3S1Z4dUlDQWdJQ0FnSUNBZ0lDQWdkR2h5YjNjZ2JtVjNJRVZ5Y205eUtDZEViMk4xYldWdWRDQjNhWFJvSUdWeWNtOXljeUJqWVc1dWIzUWdZbVVnYzNSeWFXNW5hV1pwWldRbktUdGNiaUFnSUNBZ0lDQWdhV1lnS0NkcGJtUmxiblFuSUdsdUlHOXdkR2x2Ym5NZ0ppWmNiaUFnSUNBZ0lDQWdJQ0FnSUNnaFRuVnRZbVZ5TG1selNXNTBaV2RsY2lodmNIUnBiMjV6TG1sdVpHVnVkQ2tnZkh3Z1RuVnRZbVZ5S0c5d2RHbHZibk11YVc1a1pXNTBLU0E4UFNBd0tTa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ1kyOXVjM1FnY3lBOUlFcFRUMDR1YzNSeWFXNW5hV1o1S0c5d2RHbHZibk11YVc1a1pXNTBLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIUm9jbTkzSUc1bGR5QkZjbkp2Y2loZ1hDSnBibVJsYm5SY0lpQnZjSFJwYjI0Z2JYVnpkQ0JpWlNCaElIQnZjMmwwYVhabElHbHVkR1ZuWlhJc0lHNXZkQ0FrZTNOOVlDazdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJSE4wY21sdVoybG1lVVJ2WTNWdFpXNTBLSFJvYVhNc0lHOXdkR2x2Ym5NcE8xeHVJQ0FnSUgxY2JuMWNibVoxYm1OMGFXOXVJR0Z6YzJWeWRFTnZiR3hsWTNScGIyNG9ZMjl1ZEdWdWRITXBJSHRjYmlBZ0lDQnBaaUFvYVhORGIyeHNaV04wYVc5dUtHTnZiblJsYm5SektTbGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlIUnlkV1U3WEc0Z0lDQWdkR2h5YjNjZ2JtVjNJRVZ5Y205eUtDZEZlSEJsWTNSbFpDQmhJRmxCVFV3Z1kyOXNiR1ZqZEdsdmJpQmhjeUJrYjJOMWJXVnVkQ0JqYjI1MFpXNTBjeWNwTzF4dWZWeHVYRzVsZUhCdmNuUWdleUJFYjJOMWJXVnVkQ0I5TzF4dUlpd2dJbU5zWVhOeklGbEJUVXhGY25KdmNpQmxlSFJsYm1SeklFVnljbTl5SUh0Y2JpQWdJQ0JqYjI1emRISjFZM1J2Y2lodVlXMWxMQ0J3YjNNc0lHTnZaR1VzSUcxbGMzTmhaMlVwSUh0Y2JpQWdJQ0FnSUNBZ2MzVndaWElvS1R0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTV1WVcxbElEMGdibUZ0WlR0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTVqYjJSbElEMGdZMjlrWlR0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTV0WlhOellXZGxJRDBnYldWemMyRm5aVHRjYmlBZ0lDQWdJQ0FnZEdocGN5NXdiM01nUFNCd2IzTTdYRzRnSUNBZ2ZWeHVmVnh1WTJ4aGMzTWdXVUZOVEZCaGNuTmxSWEp5YjNJZ1pYaDBaVzVrY3lCWlFVMU1SWEp5YjNJZ2UxeHVJQ0FnSUdOdmJuTjBjblZqZEc5eUtIQnZjeXdnWTI5a1pTd2diV1Z6YzJGblpTa2dlMXh1SUNBZ0lDQWdJQ0J6ZFhCbGNpZ25XVUZOVEZCaGNuTmxSWEp5YjNJbkxDQndiM01zSUdOdlpHVXNJRzFsYzNOaFoyVXBPMXh1SUNBZ0lIMWNibjFjYm1Oc1lYTnpJRmxCVFV4WFlYSnVhVzVuSUdWNGRHVnVaSE1nV1VGTlRFVnljbTl5SUh0Y2JpQWdJQ0JqYjI1emRISjFZM1J2Y2lod2IzTXNJR052WkdVc0lHMWxjM05oWjJVcElIdGNiaUFnSUNBZ0lDQWdjM1Z3WlhJb0oxbEJUVXhYWVhKdWFXNW5KeXdnY0c5ekxDQmpiMlJsTENCdFpYTnpZV2RsS1R0Y2JpQWdJQ0I5WEc1OVhHNWpiMjV6ZENCd2NtVjBkR2xtZVVWeWNtOXlJRDBnS0hOeVl5d2diR01wSUQwK0lDaGxjbkp2Y2lrZ1BUNGdlMXh1SUNBZ0lHbG1JQ2hsY25KdmNpNXdiM05iTUYwZ1BUMDlJQzB4S1Z4dUlDQWdJQ0FnSUNCeVpYUjFjbTQ3WEc0Z0lDQWdaWEp5YjNJdWJHbHVaVkJ2Y3lBOUlHVnljbTl5TG5CdmN5NXRZWEFvY0c5eklEMCtJR3hqTG14cGJtVlFiM01vY0c5ektTazdYRzRnSUNBZ1kyOXVjM1FnZXlCc2FXNWxMQ0JqYjJ3Z2ZTQTlJR1Z5Y205eUxteHBibVZRYjNOYk1GMDdYRzRnSUNBZ1pYSnliM0l1YldWemMyRm5aU0FyUFNCZ0lHRjBJR3hwYm1VZ0pIdHNhVzVsZlN3Z1kyOXNkVzF1SUNSN1kyOXNmV0E3WEc0Z0lDQWdiR1YwSUdOcElEMGdZMjlzSUMwZ01UdGNiaUFnSUNCc1pYUWdiR2x1WlZOMGNpQTlJSE55WTF4dUlDQWdJQ0FnSUNBdWMzVmljM1J5YVc1bktHeGpMbXhwYm1WVGRHRnlkSE5iYkdsdVpTQXRJREZkTENCc1l5NXNhVzVsVTNSaGNuUnpXMnhwYm1WZEtWeHVJQ0FnSUNBZ0lDQXVjbVZ3YkdGalpTZ3ZXMXhjYmx4Y2NsMHJKQzhzSUNjbktUdGNiaUFnSUNBdkx5QlVjbWx0SUhSdklHMWhlQ0E0TUNCamFHRnljeXdnYTJWbGNHbHVaeUJqYjJ3Z2NHOXphWFJwYjI0Z2JtVmhjaUIwYUdVZ2JXbGtaR3hsWEc0Z0lDQWdhV1lnS0dOcElENDlJRFl3SUNZbUlHeHBibVZUZEhJdWJHVnVaM1JvSUQ0Z09EQXBJSHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdkSEpwYlZOMFlYSjBJRDBnVFdGMGFDNXRhVzRvWTJrZ0xTQXpPU3dnYkdsdVpWTjBjaTVzWlc1bmRHZ2dMU0EzT1NrN1hHNGdJQ0FnSUNBZ0lHeHBibVZUZEhJZ1BTQW5YSFV5TURJMkp5QXJJR3hwYm1WVGRISXVjM1ZpYzNSeWFXNW5LSFJ5YVcxVGRHRnlkQ2s3WEc0Z0lDQWdJQ0FnSUdOcElDMDlJSFJ5YVcxVGRHRnlkQ0F0SURFN1hHNGdJQ0FnZlZ4dUlDQWdJR2xtSUNoc2FXNWxVM1J5TG14bGJtZDBhQ0ErSURnd0tWeHVJQ0FnSUNBZ0lDQnNhVzVsVTNSeUlEMGdiR2x1WlZOMGNpNXpkV0p6ZEhKcGJtY29NQ3dnTnprcElDc2dKMXgxTWpBeU5pYzdYRzRnSUNBZ0x5OGdTVzVqYkhWa1pTQndjbVYyYVc5MWN5QnNhVzVsSUdsdUlHTnZiblJsZUhRZ2FXWWdjRzlwYm5ScGJtY2dZWFFnYkdsdVpTQnpkR0Z5ZEZ4dUlDQWdJR2xtSUNoc2FXNWxJRDRnTVNBbUppQXZYaUFxSkM4dWRHVnpkQ2hzYVc1bFUzUnlMbk4xWW5OMGNtbHVaeWd3TENCamFTa3BLU0I3WEc0Z0lDQWdJQ0FnSUM4dklGSmxaMlY0Y0NCM2IyNG5kQ0J0WVhSamFDQnBaaUJ6ZEdGeWRDQnBjeUIwY21sdGJXVmtYRzRnSUNBZ0lDQWdJR3hsZENCd2NtVjJJRDBnYzNKakxuTjFZbk4wY21sdVp5aHNZeTVzYVc1bFUzUmhjblJ6VzJ4cGJtVWdMU0F5WFN3Z2JHTXViR2x1WlZOMFlYSjBjMXRzYVc1bElDMGdNVjBwTzF4dUlDQWdJQ0FnSUNCcFppQW9jSEpsZGk1c1pXNW5kR2dnUGlBNE1DbGNiaUFnSUNBZ0lDQWdJQ0FnSUhCeVpYWWdQU0J3Y21WMkxuTjFZbk4wY21sdVp5Z3dMQ0EzT1NrZ0t5QW5YSFV5TURJMlhGeHVKenRjYmlBZ0lDQWdJQ0FnYkdsdVpWTjBjaUE5SUhCeVpYWWdLeUJzYVc1bFUzUnlPMXh1SUNBZ0lIMWNiaUFnSUNCcFppQW9MMXRlSUYwdkxuUmxjM1FvYkdsdVpWTjBjaWtwSUh0Y2JpQWdJQ0FnSUNBZ2JHVjBJR052ZFc1MElEMGdNVHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdaVzVrSUQwZ1pYSnliM0l1YkdsdVpWQnZjMXN4WFR0Y2JpQWdJQ0FnSUNBZ2FXWWdLR1Z1WkNBbUppQmxibVF1YkdsdVpTQTlQVDBnYkdsdVpTQW1KaUJsYm1RdVkyOXNJRDRnWTI5c0tTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCamIzVnVkQ0E5SUUxaGRHZ3ViV0Y0S0RFc0lFMWhkR2d1YldsdUtHVnVaQzVqYjJ3Z0xTQmpiMndzSURnd0lDMGdZMmtwS1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCd2IybHVkR1Z5SUQwZ0p5QW5MbkpsY0dWaGRDaGphU2tnS3lBblhpY3VjbVZ3WldGMEtHTnZkVzUwS1R0Y2JpQWdJQ0FnSUNBZ1pYSnliM0l1YldWemMyRm5aU0FyUFNCZ09seGNibHhjYmlSN2JHbHVaVk4wY24xY1hHNGtlM0J2YVc1MFpYSjlYRnh1WUR0Y2JpQWdJQ0I5WEc1OU8xeHVYRzVsZUhCdmNuUWdleUJaUVUxTVJYSnliM0lzSUZsQlRVeFFZWEp6WlVWeWNtOXlMQ0JaUVUxTVYyRnlibWx1Wnl3Z2NISmxkSFJwWm5sRmNuSnZjaUI5TzF4dUlpd2dJbVoxYm1OMGFXOXVJSEpsYzI5c2RtVlFjbTl3Y3loMGIydGxibk1zSUhzZ1pteHZkeXdnYVc1a2FXTmhkRzl5TENCdVpYaDBMQ0J2Wm1aelpYUXNJRzl1UlhKeWIzSXNJSEJoY21WdWRFbHVaR1Z1ZEN3Z2MzUmhjblJQYms1bGQyeHBibVVnZlNrZ2UxeHVJQ0FnSUd4bGRDQnpjR0ZqWlVKbFptOXlaU0E5SUdaaGJITmxPMXh1SUNBZ0lHeGxkQ0JoZEU1bGQyeHBibVVnUFNCemRHRnlkRTl1VG1WM2JHbHVaVHRjYmlBZ0lDQnNaWFFnYUdGelUzQmhZMlVnUFNCemRHRnlkRTl1VG1WM2JHbHVaVHRjYmlBZ0lDQnNaWFFnWTI5dGJXVnVkQ0E5SUNjbk8xeHVJQ0FnSUd4bGRDQmpiMjF0Wlc1MFUyVndJRDBnSnljN1hHNGdJQ0FnYkdWMElHaGhjMDVsZDJ4cGJtVWdQU0JtWVd4elpUdGNiaUFnSUNCc1pYUWdjbVZ4VTNCaFkyVWdQU0JtWVd4elpUdGNiaUFnSUNCc1pYUWdkR0ZpSUQwZ2JuVnNiRHRjYmlBZ0lDQnNaWFFnWVc1amFHOXlJRDBnYm5Wc2JEdGNiaUFnSUNCc1pYUWdkR0ZuSUQwZ2JuVnNiRHRjYmlBZ0lDQnNaWFFnYm1WM2JHbHVaVUZtZEdWeVVISnZjQ0E5SUc1MWJHdzdYRzRnSUNBZ2JHVjBJR052YlcxaElEMGdiblZzYkR0Y2JpQWdJQ0JzWlhRZ1ptOTFibVFnUFNCdWRXeHNPMXh1SUNBZ0lHeGxkQ0J6ZEdGeWRDQTlJRzUxYkd3N1hHNGdJQ0FnWm05eUlDaGpiMjV6ZENCMGIydGxiaUJ2WmlCMGIydGxibk1wSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLSEpsY1ZOd1lXTmxLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFvZEc5clpXNHVkSGx3WlNBaFBUMGdKM053WVdObEp5QW1KbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSFJ2YTJWdUxuUjVjR1VnSVQwOUlDZHVaWGRzYVc1bEp5QW1KbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSFJ2YTJWdUxuUjVjR1VnSVQwOUlDZGpiMjF0WVNjcFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2IyNUZjbkp2Y2loMGIydGxiaTV2Wm1aelpYUXNJQ2ROU1ZOVFNVNUhYME5JUVZJbkxDQW5WR0ZuY3lCaGJtUWdZVzVqYUc5eWN5QnRkWE4wSUdKbElITmxjR0Z5WVhSbFpDQm1jbTl0SUhSb1pTQnVaWGgwSUhSdmEyVnVJR0o1SUhkb2FYUmxJSE53WVdObEp5azdYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYRlRjR0ZqWlNBOUlHWmhiSE5sTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lHbG1JQ2gwWVdJcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDaGhkRTVsZDJ4cGJtVWdKaVlnZEc5clpXNHVkSGx3WlNBaFBUMGdKMk52YlcxbGJuUW5JQ1ltSUhSdmEyVnVMblI1Y0dVZ0lUMDlJQ2R1Wlhkc2FXNWxKeWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUc5dVJYSnliM0lvZEdGaUxDQW5WRUZDWDBGVFgwbE9SRVZPVkNjc0lDZFVZV0p6SUdGeVpTQnViM1FnWVd4c2IzZGxaQ0JoY3lCcGJtUmxiblJoZEdsdmJpY3BPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnZEdGaUlEMGdiblZzYkR0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQnpkMmwwWTJnZ0tIUnZhMlZ1TG5SNWNHVXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHTmhjMlVnSjNOd1lXTmxKenBjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0F2THlCQmRDQjBhR1VnWkc5aklHeGxkbVZzTENCMFlXSnpJR0YwSUd4cGJtVWdjM1JoY25RZ2JXRjVJR0psSUhCaGNuTmxaRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQzh2SUdGeklHeGxZV1JwYm1jZ2QyaHBkR1VnYzNCaFkyVWdjbUYwYUdWeUlIUm9ZVzRnYVc1a1pXNTBZWFJwYjI0dVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0x5OGdTVzRnWVNCbWJHOTNJR052Ykd4bFkzUnBiMjRzSUc5dWJIa2dkR2hsSUhCaGNuTmxjaUJvWVc1a2JHVnpJR2x1WkdWdWRDNWNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBaaUFvSVdac2IzY2dKaVpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0tHbHVaR2xqWVhSdmNpQWhQVDBnSjJSdll5MXpkR0Z5ZENjZ2ZId2dibVY0ZEQ4dWRIbHdaU0FoUFQwZ0oyWnNiM2N0WTI5c2JHVmpkR2x2YmljcElDWW1YRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhSdmEyVnVMbk52ZFhKalpTNXBibU5zZFdSbGN5Z25YRngwSnlrcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZEdGaUlEMGdkRzlyWlc0N1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHaGhjMU53WVdObElEMGdkSEoxWlR0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQWdJQ0FnSUNBZ0lHTmhjMlVnSjJOdmJXMWxiblFuT2lCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLQ0ZvWVhOVGNHRmpaU2xjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2IyNUZjbkp2Y2loMGIydGxiaXdnSjAxSlUxTkpUa2RmUTBoQlVpY3NJQ2REYjIxdFpXNTBjeUJ0ZFhOMElHSmxJSE5sY0dGeVlYUmxaQ0JtY205dElHOTBhR1Z5SUhSdmEyVnVjeUJpZVNCM2FHbDBaU0J6Y0dGalpTQmphR0Z5WVdOMFpYSnpKeWs3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWTI5dWMzUWdZMklnUFNCMGIydGxiaTV6YjNWeVkyVXVjM1ZpYzNSeWFXNW5LREVwSUh4OElDY2dKenRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb0lXTnZiVzFsYm5RcFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR052YlcxbGJuUWdQU0JqWWp0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCbGJITmxYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdOdmJXMWxiblFnS3owZ1kyOXRiV1Z1ZEZObGNDQXJJR05pTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdOdmJXMWxiblJUWlhBZ1BTQW5KenRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JoZEU1bGQyeHBibVVnUFNCbVlXeHpaVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JpY21WaGF6dGNiaUFnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQWdJR05oYzJVZ0oyNWxkMnhwYm1Vbk9seHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2hoZEU1bGQyeHBibVVwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhV1lnS0dOdmJXMWxiblFwWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JqYjIxdFpXNTBJQ3M5SUhSdmEyVnVMbk52ZFhKalpUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWld4elpWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2MzQmhZMlZDWldadmNtVWdQU0IwY25WbE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmxiSE5sWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHTnZiVzFsYm5SVFpYQWdLejBnZEc5clpXNHVjMjkxY21ObE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHRjBUbVYzYkdsdVpTQTlJSFJ5ZFdVN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FHRnpUbVYzYkdsdVpTQTlJSFJ5ZFdVN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLR0Z1WTJodmNpQjhmQ0IwWVdjcFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRzVsZDJ4cGJtVkJablJsY2xCeWIzQWdQU0IwYjJ0bGJqdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQm9ZWE5UY0dGalpTQTlJSFJ5ZFdVN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1luSmxZV3M3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpZWE5sSUNkaGJtTm9iM0luT2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDaGhibU5vYjNJcFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRzl1UlhKeWIzSW9kRzlyWlc0c0lDZE5WVXhVU1ZCTVJWOUJUa05JVDFKVEp5d2dKMEVnYm05a1pTQmpZVzRnYUdGMlpTQmhkQ0J0YjNOMElHOXVaU0JoYm1Ob2IzSW5LVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2RHOXJaVzR1YzI5MWNtTmxMbVZ1WkhOWGFYUm9LQ2M2SnlrcFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRzl1UlhKeWIzSW9kRzlyWlc0dWIyWm1jMlYwSUNzZ2RHOXJaVzR1YzI5MWNtTmxMbXhsYm1kMGFDQXRJREVzSUNkQ1FVUmZRVXhKUVZNbkxDQW5RVzVqYUc5eUlHVnVaR2x1WnlCcGJpQTZJR2x6SUdGdFltbG5kVzkxY3ljc0lIUnlkV1VwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdGdVkyaHZjaUE5SUhSdmEyVnVPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNoemRHRnlkQ0E5UFQwZ2JuVnNiQ2xjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2MzUmhjblFnUFNCMGIydGxiaTV2Wm1aelpYUTdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZWFJPWlhkc2FXNWxJRDBnWm1Gc2MyVTdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhR0Z6VTNCaFkyVWdQU0JtWVd4elpUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWEZUY0dGalpTQTlJSFJ5ZFdVN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1luSmxZV3M3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpZWE5sSUNkMFlXY25PaUI3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tIUmhaeWxjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2IyNUZjbkp2Y2loMGIydGxiaXdnSjAxVlRGUkpVRXhGWDFSQlIxTW5MQ0FuUVNCdWIyUmxJR05oYmlCb1lYWmxJR0YwSUcxdmMzUWdiMjVsSUhSaFp5Y3BPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSFJoWnlBOUlIUnZhMlZ1TzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDaHpkR0Z5ZENBOVBUMGdiblZzYkNsY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjM1JoY25RZ1BTQjBiMnRsYmk1dlptWnpaWFE3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWVhST1pYZHNhVzVsSUQwZ1ptRnNjMlU3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYUdGelUzQmhZMlVnUFNCbVlXeHpaVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhGVGNHRmpaU0E5SUhSeWRXVTdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZbkpsWVdzN1hHNGdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpZWE5sSUdsdVpHbGpZWFJ2Y2pwY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBdkx5QkRiM1ZzWkNCb1pYSmxJR2hoYm1Sc1pTQndjbVZqWldScGJtY2dZMjl0YldWdWRITWdaR2xtWm1WeVpXNTBiSGxjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb1lXNWphRzl5SUh4OElIUmhaeWxjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2IyNUZjbkp2Y2loMGIydGxiaXdnSjBKQlJGOVFVazlRWDA5U1JFVlNKeXdnWUVGdVkyaHZjbk1nWVc1a0lIUmhaM01nYlhWemRDQmlaU0JoWm5SbGNpQjBhR1VnSkh0MGIydGxiaTV6YjNWeVkyVjlJR2x1WkdsallYUnZjbUFwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDaG1iM1Z1WkNsY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdiMjVGY25KdmNpaDBiMnRsYml3Z0oxVk9SVmhRUlVOVVJVUmZWRTlMUlU0bkxDQmdWVzVsZUhCbFkzUmxaQ0FrZTNSdmEyVnVMbk52ZFhKalpYMGdhVzRnSkh0bWJHOTNJRDgvSUNkamIyeHNaV04wYVc5dUozMWdLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JtYjNWdVpDQTlJSFJ2YTJWdU8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHRjBUbVYzYkdsdVpTQTlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsdVpHbGpZWFJ2Y2lBOVBUMGdKM05sY1MxcGRHVnRMV2x1WkNjZ2ZId2dhVzVrYVdOaGRHOXlJRDA5UFNBblpYaHdiR2xqYVhRdGEyVjVMV2x1WkNjN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FHRnpVM0JoWTJVZ1BTQm1ZV3h6WlR0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQWdJQ0FnSUNBZ0lHTmhjMlVnSjJOdmJXMWhKenBjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb1pteHZkeWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBaaUFvWTI5dGJXRXBYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnZia1Z5Y205eUtIUnZhMlZ1TENBblZVNUZXRkJGUTFSRlJGOVVUMHRGVGljc0lHQlZibVY0Y0dWamRHVmtJQ3dnYVc0Z0pIdG1iRzkzZldBcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JqYjIxdFlTQTlJSFJ2YTJWdU8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JoZEU1bGQyeHBibVVnUFNCbVlXeHpaVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FHRnpVM0JoWTJVZ1BTQm1ZV3h6WlR0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZbkpsWVdzN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnTHk4Z1pXeHpaU0JtWVd4c2RHaHliM1ZuYUZ4dUlDQWdJQ0FnSUNBZ0lDQWdaR1ZtWVhWc2REcGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnZia1Z5Y205eUtIUnZhMlZ1TENBblZVNUZXRkJGUTFSRlJGOVVUMHRGVGljc0lHQlZibVY0Y0dWamRHVmtJQ1I3ZEc5clpXNHVkSGx3WlgwZ2RHOXJaVzVnS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCaGRFNWxkMnhwYm1VZ1BTQm1ZV3h6WlR0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCb1lYTlRjR0ZqWlNBOUlHWmhiSE5sTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dUlDQWdJR052Ym5OMElHeGhjM1FnUFNCMGIydGxibk5iZEc5clpXNXpMbXhsYm1kMGFDQXRJREZkTzF4dUlDQWdJR052Ym5OMElHVnVaQ0E5SUd4aGMzUWdQeUJzWVhOMExtOW1abk5sZENBcklHeGhjM1F1YzI5MWNtTmxMbXhsYm1kMGFDQTZJRzltWm5ObGREdGNiaUFnSUNCcFppQW9jbVZ4VTNCaFkyVWdKaVpjYmlBZ0lDQWdJQ0FnYm1WNGRDQW1KbHh1SUNBZ0lDQWdJQ0J1WlhoMExuUjVjR1VnSVQwOUlDZHpjR0ZqWlNjZ0ppWmNiaUFnSUNBZ0lDQWdibVY0ZEM1MGVYQmxJQ0U5UFNBbmJtVjNiR2x1WlNjZ0ppWmNiaUFnSUNBZ0lDQWdibVY0ZEM1MGVYQmxJQ0U5UFNBblkyOXRiV0VuSUNZbVhHNGdJQ0FnSUNBZ0lDaHVaWGgwTG5SNWNHVWdJVDA5SUNkelkyRnNZWEluSUh4OElHNWxlSFF1YzI5MWNtTmxJQ0U5UFNBbkp5a3BJSHRjYmlBZ0lDQWdJQ0FnYjI1RmNuSnZjaWh1WlhoMExtOW1abk5sZEN3Z0owMUpVMU5KVGtkZlEwaEJVaWNzSUNkVVlXZHpJR0Z1WkNCaGJtTm9iM0p6SUcxMWMzUWdZbVVnYzJWd1lYSmhkR1ZrSUdaeWIyMGdkR2hsSUc1bGVIUWdkRzlyWlc0Z1lua2dkMmhwZEdVZ2MzQmhZMlVuS1R0Y2JpQWdJQ0I5WEc0Z0lDQWdhV1lnS0hSaFlpQW1KbHh1SUNBZ0lDQWdJQ0FvS0dGMFRtVjNiR2x1WlNBbUppQjBZV0l1YVc1a1pXNTBJRHc5SUhCaGNtVnVkRWx1WkdWdWRDa2dmSHhjYmlBZ0lDQWdJQ0FnSUNBZ0lHNWxlSFEvTG5SNWNHVWdQVDA5SUNkaWJHOWpheTF0WVhBbklIeDhYRzRnSUNBZ0lDQWdJQ0FnSUNCdVpYaDBQeTUwZVhCbElEMDlQU0FuWW14dlkyc3RjMlZ4SnlrcFhHNGdJQ0FnSUNBZ0lHOXVSWEp5YjNJb2RHRmlMQ0FuVkVGQ1gwRlRYMGxPUkVWT1ZDY3NJQ2RVWVdKeklHRnlaU0J1YjNRZ1lXeHNiM2RsWkNCaGN5QnBibVJsYm5SaGRHbHZiaWNwTzF4dUlDQWdJSEpsZEhWeWJpQjdYRzRnSUNBZ0lDQWdJR052YlcxaExGeHVJQ0FnSUNBZ0lDQm1iM1Z1WkN4Y2JpQWdJQ0FnSUNBZ2MzQmhZMlZDWldadmNtVXNYRzRnSUNBZ0lDQWdJR052YlcxbGJuUXNYRzRnSUNBZ0lDQWdJR2hoYzA1bGQyeHBibVVzWEc0Z0lDQWdJQ0FnSUdGdVkyaHZjaXhjYmlBZ0lDQWdJQ0FnZEdGbkxGeHVJQ0FnSUNBZ0lDQnVaWGRzYVc1bFFXWjBaWEpRY205d0xGeHVJQ0FnSUNBZ0lDQmxibVFzWEc0Z0lDQWdJQ0FnSUhOMFlYSjBPaUJ6ZEdGeWRDQS9QeUJsYm1SY2JpQWdJQ0I5TzF4dWZWeHVYRzVsZUhCdmNuUWdleUJ5WlhOdmJIWmxVSEp2Y0hNZ2ZUdGNiaUlzSUNKbWRXNWpkR2x2YmlCamIyNTBZV2x1YzA1bGQyeHBibVVvYTJWNUtTQjdYRzRnSUNBZ2FXWWdLQ0ZyWlhrcFhHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCdWRXeHNPMXh1SUNBZ0lITjNhWFJqYUNBb2EyVjVMblI1Y0dVcElIdGNiaUFnSUNBZ0lDQWdZMkZ6WlNBbllXeHBZWE1uT2x4dUlDQWdJQ0FnSUNCallYTmxJQ2R6WTJGc1lYSW5PbHh1SUNBZ0lDQWdJQ0JqWVhObElDZGtiM1ZpYkdVdGNYVnZkR1ZrTFhOallXeGhjaWM2WEc0Z0lDQWdJQ0FnSUdOaGMyVWdKM05wYm1kc1pTMXhkVzkwWldRdGMyTmhiR0Z5SnpwY2JpQWdJQ0FnSUNBZ0lDQWdJR2xtSUNoclpYa3VjMjkxY21ObExtbHVZMngxWkdWektDZGNYRzRuS1NsY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnZEhKMVpUdGNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDaHJaWGt1Wlc1a0tWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHWnZjaUFvWTI5dWMzUWdjM1FnYjJZZ2EyVjVMbVZ1WkNsY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhV1lnS0hOMExuUjVjR1VnUFQwOUlDZHVaWGRzYVc1bEp5bGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCMGNuVmxPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUdaaGJITmxPMXh1SUNBZ0lDQWdJQ0JqWVhObElDZG1iRzkzTFdOdmJHeGxZM1JwYjI0bk9seHVJQ0FnSUNBZ0lDQWdJQ0FnWm05eUlDaGpiMjV6ZENCcGRDQnZaaUJyWlhrdWFYUmxiWE1wSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCbWIzSWdLR052Ym5OMElITjBJRzltSUdsMExuTjBZWEowS1Z4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBaaUFvYzNRdWRIbHdaU0E5UFQwZ0oyNWxkMnhwYm1VbktWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhSeWRXVTdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhV1lnS0dsMExuTmxjQ2xjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1ptOXlJQ2hqYjI1emRDQnpkQ0J2WmlCcGRDNXpaWEFwWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2MzUXVkSGx3WlNBOVBUMGdKMjVsZDJ4cGJtVW5LVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUIwY25WbE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2hqYjI1MFlXbHVjMDVsZDJ4cGJtVW9hWFF1YTJWNUtTQjhmQ0JqYjI1MFlXbHVjMDVsZDJ4cGJtVW9hWFF1ZG1Gc2RXVXBLVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnZEhKMVpUdGNiaUFnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQm1ZV3h6WlR0Y2JpQWdJQ0FnSUNBZ1pHVm1ZWFZzZERwY2JpQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQjBjblZsTzF4dUlDQWdJSDFjYm4xY2JseHVaWGh3YjNKMElIc2dZMjl1ZEdGcGJuTk9aWGRzYVc1bElIMDdYRzRpTENBaWFXMXdiM0owSUhzZ1kyOXVkR0ZwYm5OT1pYZHNhVzVsSUgwZ1puSnZiU0FuTGk5MWRHbHNMV052Ym5SaGFXNXpMVzVsZDJ4cGJtVXVhbk1uTzF4dVhHNW1kVzVqZEdsdmJpQm1iRzkzU1c1a1pXNTBRMmhsWTJzb2FXNWtaVzUwTENCbVl5d2diMjVGY25KdmNpa2dlMXh1SUNBZ0lHbG1JQ2htWXo4dWRIbHdaU0E5UFQwZ0oyWnNiM2N0WTI5c2JHVmpkR2x2YmljcElIdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ1pXNWtJRDBnWm1NdVpXNWtXekJkTzF4dUlDQWdJQ0FnSUNCcFppQW9aVzVrTG1sdVpHVnVkQ0E5UFQwZ2FXNWtaVzUwSUNZbVhHNGdJQ0FnSUNBZ0lDQWdJQ0FvWlc1a0xuTnZkWEpqWlNBOVBUMGdKMTBuSUh4OElHVnVaQzV6YjNWeVkyVWdQVDA5SUNkOUp5a2dKaVpjYmlBZ0lDQWdJQ0FnSUNBZ0lHTnZiblJoYVc1elRtVjNiR2x1WlNobVl5a3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHTnZibk4wSUcxelp5QTlJQ2RHYkc5M0lHVnVaQ0JwYm1ScFkyRjBiM0lnYzJodmRXeGtJR0psSUcxdmNtVWdhVzVrWlc1MFpXUWdkR2hoYmlCd1lYSmxiblFuTzF4dUlDQWdJQ0FnSUNBZ0lDQWdiMjVGY25KdmNpaGxibVFzSUNkQ1FVUmZTVTVFUlU1VUp5d2diWE5uTENCMGNuVmxLVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJSDFjYm4xY2JseHVaWGh3YjNKMElIc2dabXh2ZDBsdVpHVnVkRU5vWldOcklIMDdYRzRpTENBaWFXMXdiM0owSUhzZ2FYTlRZMkZzWVhJZ2ZTQm1jbTl0SUNjdUxpOXViMlJsY3k5cFpHVnVkR2wwZVM1cWN5YzdYRzVjYm1aMWJtTjBhVzl1SUcxaGNFbHVZMngxWkdWektHTjBlQ3dnYVhSbGJYTXNJSE5sWVhKamFDa2dlMXh1SUNBZ0lHTnZibk4wSUhzZ2RXNXBjWFZsUzJWNWN5QjlJRDBnWTNSNExtOXdkR2x2Ym5NN1hHNGdJQ0FnYVdZZ0tIVnVhWEYxWlV0bGVYTWdQVDA5SUdaaGJITmxLVnh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdabUZzYzJVN1hHNGdJQ0FnWTI5dWMzUWdhWE5GY1hWaGJDQTlJSFI1Y0dWdlppQjFibWx4ZFdWTFpYbHpJRDA5UFNBblpuVnVZM1JwYjI0blhHNGdJQ0FnSUNBZ0lEOGdkVzVwY1hWbFMyVjVjMXh1SUNBZ0lDQWdJQ0E2SUNoaExDQmlLU0E5UGlCaElEMDlQU0JpSUh4OElDaHBjMU5qWVd4aGNpaGhLU0FtSmlCcGMxTmpZV3hoY2loaUtTQW1KaUJoTG5aaGJIVmxJRDA5UFNCaUxuWmhiSFZsS1R0Y2JpQWdJQ0J5WlhSMWNtNGdhWFJsYlhNdWMyOXRaU2h3WVdseUlEMCtJR2x6UlhGMVlXd29jR0ZwY2k1clpYa3NJSE5sWVhKamFDa3BPMXh1ZlZ4dVhHNWxlSEJ2Y25RZ2V5QnRZWEJKYm1Oc2RXUmxjeUI5TzF4dUlpd2dJbWx0Y0c5eWRDQjdJRkJoYVhJZ2ZTQm1jbTl0SUNjdUxpOXViMlJsY3k5UVlXbHlMbXB6Snp0Y2JtbHRjRzl5ZENCN0lGbEJUVXhOWVhBZ2ZTQm1jbTl0SUNjdUxpOXViMlJsY3k5WlFVMU1UV0Z3TG1wekp6dGNibWx0Y0c5eWRDQjdJSEpsYzI5c2RtVlFjbTl3Y3lCOUlHWnliMjBnSnk0dmNtVnpiMngyWlMxd2NtOXdjeTVxY3ljN1hHNXBiWEJ2Y25RZ2V5QmpiMjUwWVdsdWMwNWxkMnhwYm1VZ2ZTQm1jbTl0SUNjdUwzVjBhV3d0WTI5dWRHRnBibk10Ym1WM2JHbHVaUzVxY3ljN1hHNXBiWEJ2Y25RZ2V5Qm1iRzkzU1c1a1pXNTBRMmhsWTJzZ2ZTQm1jbTl0SUNjdUwzVjBhV3d0Wm14dmR5MXBibVJsYm5RdFkyaGxZMnN1YW5Nbk8xeHVhVzF3YjNKMElIc2diV0Z3U1c1amJIVmtaWE1nZlNCbWNtOXRJQ2N1TDNWMGFXd3RiV0Z3TFdsdVkyeDFaR1Z6TG1wekp6dGNibHh1WTI5dWMzUWdjM1JoY25SRGIyeE5jMmNnUFNBblFXeHNJRzFoY0hCcGJtY2dhWFJsYlhNZ2JYVnpkQ0J6ZEdGeWRDQmhkQ0IwYUdVZ2MyRnRaU0JqYjJ4MWJXNG5PMXh1Wm5WdVkzUnBiMjRnY21WemIyeDJaVUpzYjJOclRXRndLSHNnWTI5dGNHOXpaVTV2WkdVc0lHTnZiWEJ2YzJWRmJYQjBlVTV2WkdVZ2ZTd2dZM1I0TENCaWJTd2diMjVGY25KdmNpd2dkR0ZuS1NCN1hHNGdJQ0FnWTI5dWMzUWdUbTlrWlVOc1lYTnpJRDBnZEdGblB5NXViMlJsUTJ4aGMzTWdQejhnV1VGTlRFMWhjRHRjYmlBZ0lDQmpiMjV6ZENCdFlYQWdQU0J1WlhjZ1RtOWtaVU5zWVhOektHTjBlQzV6WTJobGJXRXBPMXh1SUNBZ0lHbG1JQ2hqZEhndVlYUlNiMjkwS1Z4dUlDQWdJQ0FnSUNCamRIZ3VZWFJTYjI5MElEMGdabUZzYzJVN1hHNGdJQ0FnYkdWMElHOW1abk5sZENBOUlHSnRMbTltWm5ObGREdGNiaUFnSUNCc1pYUWdZMjl0YldWdWRFVnVaQ0E5SUc1MWJHdzdYRzRnSUNBZ1ptOXlJQ2hqYjI1emRDQmpiMnhzU1hSbGJTQnZaaUJpYlM1cGRHVnRjeWtnZTF4dUlDQWdJQ0FnSUNCamIyNXpkQ0I3SUhOMFlYSjBMQ0JyWlhrc0lITmxjQ3dnZG1Gc2RXVWdmU0E5SUdOdmJHeEpkR1Z0TzF4dUlDQWdJQ0FnSUNBdkx5QnJaWGtnY0hKdmNHVnlkR2xsYzF4dUlDQWdJQ0FnSUNCamIyNXpkQ0JyWlhsUWNtOXdjeUE5SUhKbGMyOXNkbVZRY205d2N5aHpkR0Z5ZEN3Z2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnYVc1a2FXTmhkRzl5T2lBblpYaHdiR2xqYVhRdGEyVjVMV2x1WkNjc1hHNGdJQ0FnSUNBZ0lDQWdJQ0J1WlhoME9pQnJaWGtnUHo4Z2MyVndQeTViTUYwc1hHNGdJQ0FnSUNBZ0lDQWdJQ0J2Wm1aelpYUXNYRzRnSUNBZ0lDQWdJQ0FnSUNCdmJrVnljbTl5TEZ4dUlDQWdJQ0FnSUNBZ0lDQWdjR0Z5Wlc1MFNXNWtaVzUwT2lCaWJTNXBibVJsYm5Rc1hHNGdJQ0FnSUNBZ0lDQWdJQ0J6ZEdGeWRFOXVUbVYzYkdsdVpUb2dkSEoxWlZ4dUlDQWdJQ0FnSUNCOUtUdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2FXMXdiR2xqYVhSTFpYa2dQU0FoYTJWNVVISnZjSE11Wm05MWJtUTdYRzRnSUNBZ0lDQWdJR2xtSUNocGJYQnNhV05wZEV0bGVTa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLR3RsZVNrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2hyWlhrdWRIbHdaU0E5UFQwZ0oySnNiMk5yTFhObGNTY3BYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUc5dVJYSnliM0lvYjJabWMyVjBMQ0FuUWt4UFEwdGZRVk5mU1UxUVRFbERTVlJmUzBWWkp5d2dKMEVnWW14dlkyc2djMlZ4ZFdWdVkyVWdiV0Y1SUc1dmRDQmlaU0IxYzJWa0lHRnpJR0Z1SUdsdGNHeHBZMmwwSUcxaGNDQnJaWGtuS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCbGJITmxJR2xtSUNnbmFXNWtaVzUwSnlCcGJpQnJaWGtnSmlZZ2EyVjVMbWx1WkdWdWRDQWhQVDBnWW0wdWFXNWtaVzUwS1Z4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnZia1Z5Y205eUtHOW1abk5sZEN3Z0owSkJSRjlKVGtSRlRsUW5MQ0J6ZEdGeWRFTnZiRTF6WnlrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFvSVd0bGVWQnliM0J6TG1GdVkyaHZjaUFtSmlBaGEyVjVVSEp2Y0hNdWRHRm5JQ1ltSUNGelpYQXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JqYjIxdFpXNTBSVzVrSUQwZ2EyVjVVSEp2Y0hNdVpXNWtPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNoclpYbFFjbTl3Y3k1amIyMXRaVzUwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNodFlYQXVZMjl0YldWdWRDbGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHMWhjQzVqYjIxdFpXNTBJQ3M5SUNkY1hHNG5JQ3NnYTJWNVVISnZjSE11WTI5dGJXVnVkRHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1pXeHpaVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdiV0Z3TG1OdmJXMWxiblFnUFNCclpYbFFjbTl3Y3k1amIyMXRaVzUwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCamIyNTBhVzUxWlR0Y2JpQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2hyWlhsUWNtOXdjeTV1Wlhkc2FXNWxRV1owWlhKUWNtOXdJSHg4SUdOdmJuUmhhVzV6VG1WM2JHbHVaU2hyWlhrcEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdiMjVGY25KdmNpaHJaWGtnUHo4Z2MzUmhjblJiYzNSaGNuUXViR1Z1WjNSb0lDMGdNVjBzSUNkTlZVeFVTVXhKVGtWZlNVMVFURWxEU1ZSZlMwVlpKeXdnSjBsdGNHeHBZMmwwSUd0bGVYTWdibVZsWkNCMGJ5QmlaU0J2YmlCaElITnBibWRzWlNCc2FXNWxKeWs3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnWld4elpTQnBaaUFvYTJWNVVISnZjSE11Wm05MWJtUS9MbWx1WkdWdWRDQWhQVDBnWW0wdWFXNWtaVzUwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J2YmtWeWNtOXlLRzltWm5ObGRDd2dKMEpCUkY5SlRrUkZUbFFuTENCemRHRnlkRU52YkUxelp5azdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnTHk4Z2EyVjVJSFpoYkhWbFhHNGdJQ0FnSUNBZ0lHTjBlQzVoZEV0bGVTQTlJSFJ5ZFdVN1hHNGdJQ0FnSUNBZ0lHTnZibk4wSUd0bGVWTjBZWEowSUQwZ2EyVjVVSEp2Y0hNdVpXNWtPMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQnJaWGxPYjJSbElEMGdhMlY1WEc0Z0lDQWdJQ0FnSUNBZ0lDQS9JR052YlhCdmMyVk9iMlJsS0dOMGVDd2dhMlY1TENCclpYbFFjbTl3Y3l3Z2IyNUZjbkp2Y2lsY2JpQWdJQ0FnSUNBZ0lDQWdJRG9nWTI5dGNHOXpaVVZ0Y0hSNVRtOWtaU2hqZEhnc0lHdGxlVk4wWVhKMExDQnpkR0Z5ZEN3Z2JuVnNiQ3dnYTJWNVVISnZjSE1zSUc5dVJYSnliM0lwTzF4dUlDQWdJQ0FnSUNCcFppQW9ZM1I0TG5OamFHVnRZUzVqYjIxd1lYUXBYRzRnSUNBZ0lDQWdJQ0FnSUNCbWJHOTNTVzVrWlc1MFEyaGxZMnNvWW0wdWFXNWtaVzUwTENCclpYa3NJRzl1UlhKeWIzSXBPMXh1SUNBZ0lDQWdJQ0JqZEhndVlYUkxaWGtnUFNCbVlXeHpaVHRjYmlBZ0lDQWdJQ0FnYVdZZ0tHMWhjRWx1WTJ4MVpHVnpLR04wZUN3Z2JXRndMbWwwWlcxekxDQnJaWGxPYjJSbEtTbGNiaUFnSUNBZ0lDQWdJQ0FnSUc5dVJYSnliM0lvYTJWNVUzUmhjblFzSUNkRVZWQk1TVU5CVkVWZlMwVlpKeXdnSjAxaGNDQnJaWGx6SUcxMWMzUWdZbVVnZFc1cGNYVmxKeWs3WEc0Z0lDQWdJQ0FnSUM4dklIWmhiSFZsSUhCeWIzQmxjblJwWlhOY2JpQWdJQ0FnSUNBZ1kyOXVjM1FnZG1Gc2RXVlFjbTl3Y3lBOUlISmxjMjlzZG1WUWNtOXdjeWh6WlhBZ1B6OGdXMTBzSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJR2x1WkdsallYUnZjam9nSjIxaGNDMTJZV3gxWlMxcGJtUW5MRnh1SUNBZ0lDQWdJQ0FnSUNBZ2JtVjRkRG9nZG1Gc2RXVXNYRzRnSUNBZ0lDQWdJQ0FnSUNCdlptWnpaWFE2SUd0bGVVNXZaR1V1Y21GdVoyVmJNbDBzWEc0Z0lDQWdJQ0FnSUNBZ0lDQnZia1Z5Y205eUxGeHVJQ0FnSUNBZ0lDQWdJQ0FnY0dGeVpXNTBTVzVrWlc1ME9pQmliUzVwYm1SbGJuUXNYRzRnSUNBZ0lDQWdJQ0FnSUNCemRHRnlkRTl1VG1WM2JHbHVaVG9nSVd0bGVTQjhmQ0JyWlhrdWRIbHdaU0E5UFQwZ0oySnNiMk5yTFhOallXeGhjaWRjYmlBZ0lDQWdJQ0FnZlNrN1hHNGdJQ0FnSUNBZ0lHOW1abk5sZENBOUlIWmhiSFZsVUhKdmNITXVaVzVrTzF4dUlDQWdJQ0FnSUNCcFppQW9kbUZzZFdWUWNtOXdjeTVtYjNWdVpDa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLR2x0Y0d4cFkybDBTMlY1S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLSFpoYkhWbFB5NTBlWEJsSUQwOVBTQW5ZbXh2WTJzdGJXRndKeUFtSmlBaGRtRnNkV1ZRY205d2N5NW9ZWE5PWlhkc2FXNWxLVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCdmJrVnljbTl5S0c5bVpuTmxkQ3dnSjBKTVQwTkxYMEZUWDBsTlVFeEpRMGxVWDB0RldTY3NJQ2RPWlhOMFpXUWdiV0Z3Y0dsdVozTWdZWEpsSUc1dmRDQmhiR3h2ZDJWa0lHbHVJR052YlhCaFkzUWdiV0Z3Y0dsdVozTW5LVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb1kzUjRMbTl3ZEdsdmJuTXVjM1J5YVdOMElDWW1YRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUd0bGVWQnliM0J6TG5OMFlYSjBJRHdnZG1Gc2RXVlFjbTl3Y3k1bWIzVnVaQzV2Wm1aelpYUWdMU0F4TURJMEtWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J2YmtWeWNtOXlLR3RsZVU1dlpHVXVjbUZ1WjJVc0lDZExSVmxmVDFaRlVsOHhNREkwWDBOSVFWSlRKeXdnSjFSb1pTQTZJR2x1WkdsallYUnZjaUJ0ZFhOMElHSmxJR0YwSUcxdmMzUWdNVEF5TkNCamFHRnljeUJoWm5SbGNpQjBhR1VnYzNSaGNuUWdiMllnWVc0Z2FXMXdiR2xqYVhRZ1lteHZZMnNnYldGd2NHbHVaeUJyWlhrbktUdGNiaUFnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQWdJQzh2SUhaaGJIVmxJSFpoYkhWbFhHNGdJQ0FnSUNBZ0lDQWdJQ0JqYjI1emRDQjJZV3gxWlU1dlpHVWdQU0IyWVd4MVpWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lEOGdZMjl0Y0c5elpVNXZaR1VvWTNSNExDQjJZV3gxWlN3Z2RtRnNkV1ZRY205d2N5d2diMjVGY25KdmNpbGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQTZJR052YlhCdmMyVkZiWEIwZVU1dlpHVW9ZM1I0TENCdlptWnpaWFFzSUhObGNDd2diblZzYkN3Z2RtRnNkV1ZRY205d2N5d2diMjVGY25KdmNpazdYRzRnSUNBZ0lDQWdJQ0FnSUNCcFppQW9ZM1I0TG5OamFHVnRZUzVqYjIxd1lYUXBYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdabXh2ZDBsdVpHVnVkRU5vWldOcktHSnRMbWx1WkdWdWRDd2dkbUZzZFdVc0lHOXVSWEp5YjNJcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnYjJabWMyVjBJRDBnZG1Gc2RXVk9iMlJsTG5KaGJtZGxXekpkTzF4dUlDQWdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ2NHRnBjaUE5SUc1bGR5QlFZV2x5S0d0bGVVNXZaR1VzSUhaaGJIVmxUbTlrWlNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb1kzUjRMbTl3ZEdsdmJuTXVhMlZsY0ZOdmRYSmpaVlJ2YTJWdWN5bGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQndZV2x5TG5OeVkxUnZhMlZ1SUQwZ1kyOXNiRWwwWlcwN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J0WVhBdWFYUmxiWE11Y0hWemFDaHdZV2x5S1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQzh2SUd0bGVTQjNhWFJvSUc1dklIWmhiSFZsWEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFvYVcxd2JHbGphWFJMWlhrcFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2IyNUZjbkp2Y2loclpYbE9iMlJsTG5KaGJtZGxMQ0FuVFVsVFUwbE9SMTlEU0VGU0p5d2dKMGx0Y0d4cFkybDBJRzFoY0NCclpYbHpJRzVsWldRZ2RHOGdZbVVnWm05c2JHOTNaV1FnWW5rZ2JXRndJSFpoYkhWbGN5Y3BPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLSFpoYkhWbFVISnZjSE11WTI5dGJXVnVkQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDaHJaWGxPYjJSbExtTnZiVzFsYm5RcFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR3RsZVU1dlpHVXVZMjl0YldWdWRDQXJQU0FuWEZ4dUp5QXJJSFpoYkhWbFVISnZjSE11WTI5dGJXVnVkRHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JsYkhObFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR3RsZVU1dlpHVXVZMjl0YldWdWRDQTlJSFpoYkhWbFVISnZjSE11WTI5dGJXVnVkRHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0FnSUdOdmJuTjBJSEJoYVhJZ1BTQnVaWGNnVUdGcGNpaHJaWGxPYjJSbEtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDaGpkSGd1YjNCMGFXOXVjeTVyWldWd1UyOTFjbU5sVkc5clpXNXpLVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEJoYVhJdWMzSmpWRzlyWlc0Z1BTQmpiMnhzU1hSbGJUdGNiaUFnSUNBZ0lDQWdJQ0FnSUcxaGNDNXBkR1Z0Y3k1d2RYTm9LSEJoYVhJcE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVJQ0FnSUdsbUlDaGpiMjF0Wlc1MFJXNWtJQ1ltSUdOdmJXMWxiblJGYm1RZ1BDQnZabVp6WlhRcFhHNGdJQ0FnSUNBZ0lHOXVSWEp5YjNJb1kyOXRiV1Z1ZEVWdVpDd2dKMGxOVUU5VFUwbENURVVuTENBblRXRndJR052YlcxbGJuUWdkMmwwYUNCMGNtRnBiR2x1WnlCamIyNTBaVzUwSnlrN1hHNGdJQ0FnYldGd0xuSmhibWRsSUQwZ1cySnRMbTltWm5ObGRDd2diMlptYzJWMExDQmpiMjF0Wlc1MFJXNWtJRDgvSUc5bVpuTmxkRjA3WEc0Z0lDQWdjbVYwZFhKdUlHMWhjRHRjYm4xY2JseHVaWGh3YjNKMElIc2djbVZ6YjJ4MlpVSnNiMk5yVFdGd0lIMDdYRzRpTENBaWFXMXdiM0owSUhzZ1dVRk5URk5sY1NCOUlHWnliMjBnSnk0dUwyNXZaR1Z6TDFsQlRVeFRaWEV1YW5Nbk8xeHVhVzF3YjNKMElIc2djbVZ6YjJ4MlpWQnliM0J6SUgwZ1puSnZiU0FuTGk5eVpYTnZiSFpsTFhCeWIzQnpMbXB6Snp0Y2JtbHRjRzl5ZENCN0lHWnNiM2RKYm1SbGJuUkRhR1ZqYXlCOUlHWnliMjBnSnk0dmRYUnBiQzFtYkc5M0xXbHVaR1Z1ZEMxamFHVmpheTVxY3ljN1hHNWNibVoxYm1OMGFXOXVJSEpsYzI5c2RtVkNiRzlqYTFObGNTaDdJR052YlhCdmMyVk9iMlJsTENCamIyMXdiM05sUlcxd2RIbE9iMlJsSUgwc0lHTjBlQ3dnWW5Nc0lHOXVSWEp5YjNJc0lIUmhaeWtnZTF4dUlDQWdJR052Ym5OMElFNXZaR1ZEYkdGemN5QTlJSFJoWno4dWJtOWtaVU5zWVhOeklEOC9JRmxCVFV4VFpYRTdYRzRnSUNBZ1kyOXVjM1FnYzJWeElEMGdibVYzSUU1dlpHVkRiR0Z6Y3loamRIZ3VjMk5vWlcxaEtUdGNiaUFnSUNCcFppQW9ZM1I0TG1GMFVtOXZkQ2xjYmlBZ0lDQWdJQ0FnWTNSNExtRjBVbTl2ZENBOUlHWmhiSE5sTzF4dUlDQWdJR2xtSUNoamRIZ3VZWFJMWlhrcFhHNGdJQ0FnSUNBZ0lHTjBlQzVoZEV0bGVTQTlJR1poYkhObE8xeHVJQ0FnSUd4bGRDQnZabVp6WlhRZ1BTQmljeTV2Wm1aelpYUTdYRzRnSUNBZ2JHVjBJR052YlcxbGJuUkZibVFnUFNCdWRXeHNPMXh1SUNBZ0lHWnZjaUFvWTI5dWMzUWdleUJ6ZEdGeWRDd2dkbUZzZFdVZ2ZTQnZaaUJpY3k1cGRHVnRjeWtnZTF4dUlDQWdJQ0FnSUNCamIyNXpkQ0J3Y205d2N5QTlJSEpsYzI5c2RtVlFjbTl3Y3loemRHRnlkQ3dnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdhVzVrYVdOaGRHOXlPaUFuYzJWeExXbDBaVzB0YVc1a0p5eGNiaUFnSUNBZ0lDQWdJQ0FnSUc1bGVIUTZJSFpoYkhWbExGeHVJQ0FnSUNBZ0lDQWdJQ0FnYjJabWMyVjBMRnh1SUNBZ0lDQWdJQ0FnSUNBZ2IyNUZjbkp2Y2l4Y2JpQWdJQ0FnSUNBZ0lDQWdJSEJoY21WdWRFbHVaR1Z1ZERvZ1luTXVhVzVrWlc1MExGeHVJQ0FnSUNBZ0lDQWdJQ0FnYzNSaGNuUlBiazVsZDJ4cGJtVTZJSFJ5ZFdWY2JpQWdJQ0FnSUNBZ2ZTazdYRzRnSUNBZ0lDQWdJR2xtSUNnaGNISnZjSE11Wm05MWJtUXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2h3Y205d2N5NWhibU5vYjNJZ2ZId2djSEp2Y0hNdWRHRm5JSHg4SUhaaGJIVmxLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tIWmhiSFZsSUNZbUlIWmhiSFZsTG5SNWNHVWdQVDA5SUNkaWJHOWpheTF6WlhFbktWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J2YmtWeWNtOXlLSEJ5YjNCekxtVnVaQ3dnSjBKQlJGOUpUa1JGVGxRbkxDQW5RV3hzSUhObGNYVmxibU5sSUdsMFpXMXpJRzExYzNRZ2MzUmhjblFnWVhRZ2RHaGxJSE5oYldVZ1kyOXNkVzF1SnlrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1pXeHpaVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCdmJrVnljbTl5S0c5bVpuTmxkQ3dnSjAxSlUxTkpUa2RmUTBoQlVpY3NJQ2RUWlhGMVpXNWpaU0JwZEdWdElIZHBkR2h2ZFhRZ0xTQnBibVJwWTJGMGIzSW5LVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0FnSUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR052YlcxbGJuUkZibVFnUFNCd2NtOXdjeTVsYm1RN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLSEJ5YjNCekxtTnZiVzFsYm5RcFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSE5sY1M1amIyMXRaVzUwSUQwZ2NISnZjSE11WTI5dGJXVnVkRHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JqYjI1MGFXNTFaVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0JqYjI1emRDQnViMlJsSUQwZ2RtRnNkV1ZjYmlBZ0lDQWdJQ0FnSUNBZ0lEOGdZMjl0Y0c5elpVNXZaR1VvWTNSNExDQjJZV3gxWlN3Z2NISnZjSE1zSUc5dVJYSnliM0lwWEc0Z0lDQWdJQ0FnSUNBZ0lDQTZJR052YlhCdmMyVkZiWEIwZVU1dlpHVW9ZM1I0TENCd2NtOXdjeTVsYm1Rc0lITjBZWEowTENCdWRXeHNMQ0J3Y205d2N5d2diMjVGY25KdmNpazdYRzRnSUNBZ0lDQWdJR2xtSUNoamRIZ3VjMk5vWlcxaExtTnZiWEJoZENsY2JpQWdJQ0FnSUNBZ0lDQWdJR1pzYjNkSmJtUmxiblJEYUdWamF5aGljeTVwYm1SbGJuUXNJSFpoYkhWbExDQnZia1Z5Y205eUtUdGNiaUFnSUNBZ0lDQWdiMlptYzJWMElEMGdibTlrWlM1eVlXNW5aVnN5WFR0Y2JpQWdJQ0FnSUNBZ2MyVnhMbWwwWlcxekxuQjFjMmdvYm05a1pTazdYRzRnSUNBZ2ZWeHVJQ0FnSUhObGNTNXlZVzVuWlNBOUlGdGljeTV2Wm1aelpYUXNJRzltWm5ObGRDd2dZMjl0YldWdWRFVnVaQ0EvUHlCdlptWnpaWFJkTzF4dUlDQWdJSEpsZEhWeWJpQnpaWEU3WEc1OVhHNWNibVY0Y0c5eWRDQjdJSEpsYzI5c2RtVkNiRzlqYTFObGNTQjlPMXh1SWl3Z0ltWjFibU4wYVc5dUlISmxjMjlzZG1WRmJtUW9aVzVrTENCdlptWnpaWFFzSUhKbGNWTndZV05sTENCdmJrVnljbTl5S1NCN1hHNGdJQ0FnYkdWMElHTnZiVzFsYm5RZ1BTQW5KenRjYmlBZ0lDQnBaaUFvWlc1a0tTQjdYRzRnSUNBZ0lDQWdJR3hsZENCb1lYTlRjR0ZqWlNBOUlHWmhiSE5sTzF4dUlDQWdJQ0FnSUNCc1pYUWdjMlZ3SUQwZ0p5YzdYRzRnSUNBZ0lDQWdJR1p2Y2lBb1kyOXVjM1FnZEc5clpXNGdiMllnWlc1a0tTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCamIyNXpkQ0I3SUhOdmRYSmpaU3dnZEhsd1pTQjlJRDBnZEc5clpXNDdYRzRnSUNBZ0lDQWdJQ0FnSUNCemQybDBZMmdnS0hSNWNHVXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JqWVhObElDZHpjR0ZqWlNjNlhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2hoYzFOd1lXTmxJRDBnZEhKMVpUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWW5KbFlXczdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZMkZ6WlNBblkyOXRiV1Z1ZENjNklIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tISmxjVk53WVdObElDWW1JQ0ZvWVhOVGNHRmpaU2xjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRzl1UlhKeWIzSW9kRzlyWlc0c0lDZE5TVk5UU1U1SFgwTklRVkluTENBblEyOXRiV1Z1ZEhNZ2JYVnpkQ0JpWlNCelpYQmhjbUYwWldRZ1puSnZiU0J2ZEdobGNpQjBiMnRsYm5NZ1lua2dkMmhwZEdVZ2MzQmhZMlVnWTJoaGNtRmpkR1Z5Y3ljcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JqYjI1emRDQmpZaUE5SUhOdmRYSmpaUzV6ZFdKemRISnBibWNvTVNrZ2ZId2dKeUFuTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBaaUFvSVdOdmJXMWxiblFwWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JqYjIxdFpXNTBJRDBnWTJJN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR1ZzYzJWY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdOdmJXMWxiblFnS3owZ2MyVndJQ3NnWTJJN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSE5sY0NBOUlDY25PMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWTJGelpTQW5ibVYzYkdsdVpTYzZYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDaGpiMjF0Wlc1MEtWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2MyVndJQ3M5SUhOdmRYSmpaVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FHRnpVM0JoWTJVZ1BTQjBjblZsTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmljbVZoYXp0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCa1pXWmhkV3gwT2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnZia1Z5Y205eUtIUnZhMlZ1TENBblZVNUZXRkJGUTFSRlJGOVVUMHRGVGljc0lHQlZibVY0Y0dWamRHVmtJQ1I3ZEhsd1pYMGdZWFFnYm05a1pTQmxibVJnS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNBZ0lHOW1abk5sZENBclBTQnpiM1Z5WTJVdWJHVnVaM1JvTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dUlDQWdJSEpsZEhWeWJpQjdJR052YlcxbGJuUXNJRzltWm5ObGRDQjlPMXh1ZlZ4dVhHNWxlSEJ2Y25RZ2V5QnlaWE52YkhabFJXNWtJSDA3WEc0aUxDQWlhVzF3YjNKMElIc2dhWE5RWVdseUlIMGdabkp2YlNBbkxpNHZibTlrWlhNdmFXUmxiblJwZEhrdWFuTW5PMXh1YVcxd2IzSjBJSHNnVUdGcGNpQjlJR1p5YjIwZ0p5NHVMMjV2WkdWekwxQmhhWEl1YW5Nbk8xeHVhVzF3YjNKMElIc2dXVUZOVEUxaGNDQjlJR1p5YjIwZ0p5NHVMMjV2WkdWekwxbEJUVXhOWVhBdWFuTW5PMXh1YVcxd2IzSjBJSHNnV1VGTlRGTmxjU0I5SUdaeWIyMGdKeTR1TDI1dlpHVnpMMWxCVFV4VFpYRXVhbk1uTzF4dWFXMXdiM0owSUhzZ2NtVnpiMngyWlVWdVpDQjlJR1p5YjIwZ0p5NHZjbVZ6YjJ4MlpTMWxibVF1YW5Nbk8xeHVhVzF3YjNKMElIc2djbVZ6YjJ4MlpWQnliM0J6SUgwZ1puSnZiU0FuTGk5eVpYTnZiSFpsTFhCeWIzQnpMbXB6Snp0Y2JtbHRjRzl5ZENCN0lHTnZiblJoYVc1elRtVjNiR2x1WlNCOUlHWnliMjBnSnk0dmRYUnBiQzFqYjI1MFlXbHVjeTF1Wlhkc2FXNWxMbXB6Snp0Y2JtbHRjRzl5ZENCN0lHMWhjRWx1WTJ4MVpHVnpJSDBnWm5KdmJTQW5MaTkxZEdsc0xXMWhjQzFwYm1Oc2RXUmxjeTVxY3ljN1hHNWNibU52Ym5OMElHSnNiMk5yVFhObklEMGdKMEpzYjJOcklHTnZiR3hsWTNScGIyNXpJR0Z5WlNCdWIzUWdZV3hzYjNkbFpDQjNhWFJvYVc0Z1pteHZkeUJqYjJ4c1pXTjBhVzl1Y3ljN1hHNWpiMjV6ZENCcGMwSnNiMk5ySUQwZ0tIUnZhMlZ1S1NBOVBpQjBiMnRsYmlBbUppQW9kRzlyWlc0dWRIbHdaU0E5UFQwZ0oySnNiMk5yTFcxaGNDY2dmSHdnZEc5clpXNHVkSGx3WlNBOVBUMGdKMkpzYjJOckxYTmxjU2NwTzF4dVpuVnVZM1JwYjI0Z2NtVnpiMngyWlVac2IzZERiMnhzWldOMGFXOXVLSHNnWTI5dGNHOXpaVTV2WkdVc0lHTnZiWEJ2YzJWRmJYQjBlVTV2WkdVZ2ZTd2dZM1I0TENCbVl5d2diMjVGY25KdmNpd2dkR0ZuS1NCN1hHNGdJQ0FnWTI5dWMzUWdhWE5OWVhBZ1BTQm1ZeTV6ZEdGeWRDNXpiM1Z5WTJVZ1BUMDlJQ2Q3Snp0Y2JpQWdJQ0JqYjI1emRDQm1ZMDVoYldVZ1BTQnBjMDFoY0NBL0lDZG1iRzkzSUcxaGNDY2dPaUFuWm14dmR5QnpaWEYxWlc1alpTYzdYRzRnSUNBZ1kyOXVjM1FnVG05a1pVTnNZWE56SUQwZ0tIUmhaejh1Ym05a1pVTnNZWE56SUQ4L0lDaHBjMDFoY0NBL0lGbEJUVXhOWVhBZ09pQlpRVTFNVTJWeEtTazdYRzRnSUNBZ1kyOXVjM1FnWTI5c2JDQTlJRzVsZHlCT2IyUmxRMnhoYzNNb1kzUjRMbk5qYUdWdFlTazdYRzRnSUNBZ1kyOXNiQzVtYkc5M0lEMGdkSEoxWlR0Y2JpQWdJQ0JqYjI1emRDQmhkRkp2YjNRZ1BTQmpkSGd1WVhSU2IyOTBPMXh1SUNBZ0lHbG1JQ2hoZEZKdmIzUXBYRzRnSUNBZ0lDQWdJR04wZUM1aGRGSnZiM1FnUFNCbVlXeHpaVHRjYmlBZ0lDQnBaaUFvWTNSNExtRjBTMlY1S1Z4dUlDQWdJQ0FnSUNCamRIZ3VZWFJMWlhrZ1BTQm1ZV3h6WlR0Y2JpQWdJQ0JzWlhRZ2IyWm1jMlYwSUQwZ1ptTXViMlptYzJWMElDc2dabU11YzNSaGNuUXVjMjkxY21ObExteGxibWQwYUR0Y2JpQWdJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0E4SUdaakxtbDBaVzF6TG14bGJtZDBhRHNnS3l0cEtTQjdYRzRnSUNBZ0lDQWdJR052Ym5OMElHTnZiR3hKZEdWdElEMGdabU11YVhSbGJYTmJhVjA3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJSHNnYzNSaGNuUXNJR3RsZVN3Z2MyVndMQ0IyWVd4MVpTQjlJRDBnWTI5c2JFbDBaVzA3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJSEJ5YjNCeklEMGdjbVZ6YjJ4MlpWQnliM0J6S0hOMFlYSjBMQ0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQm1iRzkzT2lCbVkwNWhiV1VzWEc0Z0lDQWdJQ0FnSUNBZ0lDQnBibVJwWTJGMGIzSTZJQ2RsZUhCc2FXTnBkQzFyWlhrdGFXNWtKeXhjYmlBZ0lDQWdJQ0FnSUNBZ0lHNWxlSFE2SUd0bGVTQS9QeUJ6WlhBL0xsc3dYU3hjYmlBZ0lDQWdJQ0FnSUNBZ0lHOW1abk5sZEN4Y2JpQWdJQ0FnSUNBZ0lDQWdJRzl1UlhKeWIzSXNYRzRnSUNBZ0lDQWdJQ0FnSUNCd1lYSmxiblJKYm1SbGJuUTZJR1pqTG1sdVpHVnVkQ3hjYmlBZ0lDQWdJQ0FnSUNBZ0lITjBZWEowVDI1T1pYZHNhVzVsT2lCbVlXeHpaVnh1SUNBZ0lDQWdJQ0I5S1R0Y2JpQWdJQ0FnSUNBZ2FXWWdLQ0Z3Y205d2N5NW1iM1Z1WkNrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tDRndjbTl3Y3k1aGJtTm9iM0lnSmlZZ0lYQnliM0J6TG5SaFp5QW1KaUFoYzJWd0lDWW1JQ0YyWVd4MVpTa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNocElEMDlQU0F3SUNZbUlIQnliM0J6TG1OdmJXMWhLVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCdmJrVnljbTl5S0hCeWIzQnpMbU52YlcxaExDQW5WVTVGV0ZCRlExUkZSRjlVVDB0RlRpY3NJR0JWYm1WNGNHVmpkR1ZrSUN3Z2FXNGdKSHRtWTA1aGJXVjlZQ2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWld4elpTQnBaaUFvYVNBOElHWmpMbWwwWlcxekxteGxibWQwYUNBdElERXBYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUc5dVJYSnliM0lvY0hKdmNITXVjM1JoY25Rc0lDZFZUa1ZZVUVWRFZFVkVYMVJQUzBWT0p5d2dZRlZ1Wlhod1pXTjBaV1FnWlcxd2RIa2dhWFJsYlNCcGJpQWtlMlpqVG1GdFpYMWdLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2NISnZjSE11WTI5dGJXVnVkQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBaaUFvWTI5c2JDNWpiMjF0Wlc1MEtWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1kyOXNiQzVqYjIxdFpXNTBJQ3M5SUNkY1hHNG5JQ3NnY0hKdmNITXVZMjl0YldWdWREdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWld4elpWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1kyOXNiQzVqYjIxdFpXNTBJRDBnY0hKdmNITXVZMjl0YldWdWREdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdiMlptYzJWMElEMGdjSEp2Y0hNdVpXNWtPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR052Ym5ScGJuVmxPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tDRnBjMDFoY0NBbUppQmpkSGd1YjNCMGFXOXVjeTV6ZEhKcFkzUWdKaVlnWTI5dWRHRnBibk5PWlhkc2FXNWxLR3RsZVNrcFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2IyNUZjbkp2Y2loclpYa3NJQzh2SUdOb1pXTnJaV1FnWW5rZ1kyOXVkR0ZwYm5OT1pYZHNhVzVsS0NsY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBblRWVk1WRWxNU1U1RlgwbE5VRXhKUTBsVVgwdEZXU2NzSUNkSmJYQnNhV05wZENCclpYbHpJRzltSUdac2IzY2djMlZ4ZFdWdVkyVWdjR0ZwY25NZ2JtVmxaQ0IwYnlCaVpTQnZiaUJoSUhOcGJtZHNaU0JzYVc1bEp5azdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnYVdZZ0tHa2dQVDA5SURBcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDaHdjbTl3Y3k1amIyMXRZU2xjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J2YmtWeWNtOXlLSEJ5YjNCekxtTnZiVzFoTENBblZVNUZXRkJGUTFSRlJGOVVUMHRGVGljc0lHQlZibVY0Y0dWamRHVmtJQ3dnYVc0Z0pIdG1ZMDVoYldWOVlDazdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnWld4elpTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCcFppQW9JWEJ5YjNCekxtTnZiVzFoS1Z4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUc5dVJYSnliM0lvY0hKdmNITXVjM1JoY25Rc0lDZE5TVk5UU1U1SFgwTklRVkluTENCZ1RXbHpjMmx1WnlBc0lHSmxkSGRsWlc0Z0pIdG1ZMDVoYldWOUlHbDBaVzF6WUNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2NISnZjSE11WTI5dGJXVnVkQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUd4bGRDQndjbVYyU1hSbGJVTnZiVzFsYm5RZ1BTQW5KenRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JzYjI5d09pQm1iM0lnS0dOdmJuTjBJSE4wSUc5bUlITjBZWEowS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSE4zYVhSamFDQW9jM1F1ZEhsd1pTa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZMkZ6WlNBblkyOXRiV0VuT2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWTJGelpTQW5jM0JoWTJVbk9seHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR0p5WldGck8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1kyRnpaU0FuWTI5dGJXVnVkQ2M2WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NISmxka2wwWlcxRGIyMXRaVzUwSUQwZ2MzUXVjMjkxY21ObExuTjFZbk4wY21sdVp5Z3hLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCaWNtVmhheUJzYjI5d08xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1pHVm1ZWFZzZERwY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmljbVZoYXlCc2IyOXdPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2h3Y21WMlNYUmxiVU52YlcxbGJuUXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2JHVjBJSEJ5WlhZZ1BTQmpiMnhzTG1sMFpXMXpXMk52Ykd3dWFYUmxiWE11YkdWdVozUm9JQzBnTVYwN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNocGMxQmhhWElvY0hKbGRpa3BYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQndjbVYySUQwZ2NISmxkaTUyWVd4MVpTQS9QeUJ3Y21WMkxtdGxlVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLSEJ5WlhZdVkyOXRiV1Z1ZENsY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhCeVpYWXVZMjl0YldWdWRDQXJQU0FuWEZ4dUp5QXJJSEJ5WlhaSmRHVnRRMjl0YldWdWREdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWld4elpWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NISmxkaTVqYjIxdFpXNTBJRDBnY0hKbGRrbDBaVzFEYjIxdFpXNTBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCd2NtOXdjeTVqYjIxdFpXNTBJRDBnY0hKdmNITXVZMjl0YldWdWRDNXpkV0p6ZEhKcGJtY29jSEpsZGtsMFpXMURiMjF0Wlc1MExteGxibWQwYUNBcklERXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0JwWmlBb0lXbHpUV0Z3SUNZbUlDRnpaWEFnSmlZZ0lYQnliM0J6TG1admRXNWtLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQXZMeUJwZEdWdElHbHpJR0VnZG1Gc2RXVWdhVzRnWVNCelpYRmNiaUFnSUNBZ0lDQWdJQ0FnSUM4dklGeDFNakU1TWlCclpYa2dKaUJ6WlhBZ1lYSmxJR1Z0Y0hSNUxDQnpkR0Z5ZENCa2IyVnpJRzV2ZENCcGJtTnNkV1JsSUQ4Z2IzSWdPbHh1SUNBZ0lDQWdJQ0FnSUNBZ1kyOXVjM1FnZG1Gc2RXVk9iMlJsSUQwZ2RtRnNkV1ZjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0EvSUdOdmJYQnZjMlZPYjJSbEtHTjBlQ3dnZG1Gc2RXVXNJSEJ5YjNCekxDQnZia1Z5Y205eUtWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lEb2dZMjl0Y0c5elpVVnRjSFI1VG05a1pTaGpkSGdzSUhCeWIzQnpMbVZ1WkN3Z2MyVndMQ0J1ZFd4c0xDQndjbTl3Y3l3Z2IyNUZjbkp2Y2lrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JqYjJ4c0xtbDBaVzF6TG5CMWMyZ29kbUZzZFdWT2IyUmxLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHOW1abk5sZENBOUlIWmhiSFZsVG05a1pTNXlZVzVuWlZzeVhUdGNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDaHBjMEpzYjJOcktIWmhiSFZsS1NsY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCdmJrVnljbTl5S0haaGJIVmxUbTlrWlM1eVlXNW5aU3dnSjBKTVQwTkxYMGxPWDBaTVQxY25MQ0JpYkc5amEwMXpaeWs3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQXZMeUJwZEdWdElHbHpJR0VnYTJWNUszWmhiSFZsSUhCaGFYSmNiaUFnSUNBZ0lDQWdJQ0FnSUM4dklHdGxlU0IyWVd4MVpWeHVJQ0FnSUNBZ0lDQWdJQ0FnWTNSNExtRjBTMlY1SUQwZ2RISjFaVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHTnZibk4wSUd0bGVWTjBZWEowSUQwZ2NISnZjSE11Wlc1a08xeHVJQ0FnSUNBZ0lDQWdJQ0FnWTI5dWMzUWdhMlY1VG05a1pTQTlJR3RsZVZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUQ4Z1kyOXRjRzl6WlU1dlpHVW9ZM1I0TENCclpYa3NJSEJ5YjNCekxDQnZia1Z5Y205eUtWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lEb2dZMjl0Y0c5elpVVnRjSFI1VG05a1pTaGpkSGdzSUd0bGVWTjBZWEowTENCemRHRnlkQ3dnYm5Wc2JDd2djSEp2Y0hNc0lHOXVSWEp5YjNJcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tHbHpRbXh2WTJzb2EyVjVLU2xjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J2YmtWeWNtOXlLR3RsZVU1dlpHVXVjbUZ1WjJVc0lDZENURTlEUzE5SlRsOUdURTlYSnl3Z1lteHZZMnROYzJjcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnWTNSNExtRjBTMlY1SUQwZ1ptRnNjMlU3WEc0Z0lDQWdJQ0FnSUNBZ0lDQXZMeUIyWVd4MVpTQndjbTl3WlhKMGFXVnpYRzRnSUNBZ0lDQWdJQ0FnSUNCamIyNXpkQ0IyWVd4MVpWQnliM0J6SUQwZ2NtVnpiMngyWlZCeWIzQnpLSE5sY0NBL1B5QmJYU3dnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdac2IzYzZJR1pqVG1GdFpTeGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBibVJwWTJGMGIzSTZJQ2R0WVhBdGRtRnNkV1V0YVc1a0p5eGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnVaWGgwT2lCMllXeDFaU3hjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J2Wm1aelpYUTZJR3RsZVU1dlpHVXVjbUZ1WjJWYk1sMHNYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdiMjVGY25KdmNpeGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQndZWEpsYm5SSmJtUmxiblE2SUdaakxtbHVaR1Z1ZEN4Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCemRHRnlkRTl1VG1WM2JHbHVaVG9nWm1Gc2MyVmNiaUFnSUNBZ0lDQWdJQ0FnSUgwcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tIWmhiSFZsVUhKdmNITXVabTkxYm1RcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBaaUFvSVdselRXRndJQ1ltSUNGd2NtOXdjeTVtYjNWdVpDQW1KaUJqZEhndWIzQjBhVzl1Y3k1emRISnBZM1FwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhV1lnS0hObGNDbGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHWnZjaUFvWTI5dWMzUWdjM1FnYjJZZ2MyVndLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLSE4wSUQwOVBTQjJZV3gxWlZCeWIzQnpMbVp2ZFc1a0tWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcFppQW9jM1F1ZEhsd1pTQTlQVDBnSjI1bGQyeHBibVVuS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUc5dVJYSnliM0lvYzNRc0lDZE5WVXhVU1V4SlRrVmZTVTFRVEVsRFNWUmZTMFZaSnl3Z0owbHRjR3hwWTJsMElHdGxlWE1nYjJZZ1pteHZkeUJ6WlhGMVpXNWpaU0J3WVdseWN5QnVaV1ZrSUhSdklHSmxJRzl1SUdFZ2MybHVaMnhsSUd4cGJtVW5LVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZbkpsWVdzN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcFppQW9jSEp2Y0hNdWMzUmhjblFnUENCMllXeDFaVkJ5YjNCekxtWnZkVzVrTG05bVpuTmxkQ0F0SURFd01qUXBYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnZia1Z5Y205eUtIWmhiSFZsVUhKdmNITXVabTkxYm1Rc0lDZExSVmxmVDFaRlVsOHhNREkwWDBOSVFWSlRKeXdnSjFSb1pTQTZJR2x1WkdsallYUnZjaUJ0ZFhOMElHSmxJR0YwSUcxdmMzUWdNVEF5TkNCamFHRnljeUJoWm5SbGNpQjBhR1VnYzNSaGNuUWdiMllnWVc0Z2FXMXdiR2xqYVhRZ1pteHZkeUJ6WlhGMVpXNWpaU0JyWlhrbktUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdJQ0JsYkhObElHbG1JQ2gyWVd4MVpTa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNnbmMyOTFjbU5sSnlCcGJpQjJZV3gxWlNBbUppQjJZV3gxWlM1emIzVnlZMlVnSmlZZ2RtRnNkV1V1YzI5MWNtTmxXekJkSUQwOVBTQW5PaWNwWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHOXVSWEp5YjNJb2RtRnNkV1VzSUNkTlNWTlRTVTVIWDBOSVFWSW5MQ0JnVFdsemMybHVaeUJ6Y0dGalpTQmhablJsY2lBNklHbHVJQ1I3Wm1OT1lXMWxmV0FwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdWc2MyVmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYjI1RmNuSnZjaWgyWVd4MVpWQnliM0J6TG5OMFlYSjBMQ0FuVFVsVFUwbE9SMTlEU0VGU0p5d2dZRTFwYzNOcGJtY2dMQ0J2Y2lBNklHSmxkSGRsWlc0Z0pIdG1ZMDVoYldWOUlHbDBaVzF6WUNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ0lDQXZMeUIyWVd4MVpTQjJZV3gxWlZ4dUlDQWdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ2RtRnNkV1ZPYjJSbElEMGdkbUZzZFdWY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBL0lHTnZiWEJ2YzJWT2IyUmxLR04wZUN3Z2RtRnNkV1VzSUhaaGJIVmxVSEp2Y0hNc0lHOXVSWEp5YjNJcFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ09pQjJZV3gxWlZCeWIzQnpMbVp2ZFc1a1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRDhnWTI5dGNHOXpaVVZ0Y0hSNVRtOWtaU2hqZEhnc0lIWmhiSFZsVUhKdmNITXVaVzVrTENCelpYQXNJRzUxYkd3c0lIWmhiSFZsVUhKdmNITXNJRzl1UlhKeWIzSXBYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSURvZ2JuVnNiRHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2gyWVd4MVpVNXZaR1VwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcFppQW9hWE5DYkc5amF5aDJZV3gxWlNrcFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRzl1UlhKeWIzSW9kbUZzZFdWT2IyUmxMbkpoYm1kbExDQW5Ra3hQUTB0ZlNVNWZSa3hQVnljc0lHSnNiMk5yVFhObktUdGNiaUFnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQWdJR1ZzYzJVZ2FXWWdLSFpoYkhWbFVISnZjSE11WTI5dGJXVnVkQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDaHJaWGxPYjJSbExtTnZiVzFsYm5RcFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR3RsZVU1dlpHVXVZMjl0YldWdWRDQXJQU0FuWEZ4dUp5QXJJSFpoYkhWbFVISnZjSE11WTI5dGJXVnVkRHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JsYkhObFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR3RsZVU1dlpHVXVZMjl0YldWdWRDQTlJSFpoYkhWbFVISnZjSE11WTI5dGJXVnVkRHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0FnSUdOdmJuTjBJSEJoYVhJZ1BTQnVaWGNnVUdGcGNpaHJaWGxPYjJSbExDQjJZV3gxWlU1dlpHVXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLR04wZUM1dmNIUnBiMjV6TG10bFpYQlRiM1Z5WTJWVWIydGxibk1wWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY0dGcGNpNXpjbU5VYjJ0bGJpQTlJR052Ykd4SmRHVnRPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLR2x6VFdGd0tTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ2JXRndJRDBnWTI5c2JEdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBaaUFvYldGd1NXNWpiSFZrWlhNb1kzUjRMQ0J0WVhBdWFYUmxiWE1zSUd0bGVVNXZaR1VwS1Z4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnZia1Z5Y205eUtHdGxlVk4wWVhKMExDQW5SRlZRVEVsRFFWUkZYMHRGV1Njc0lDZE5ZWEFnYTJWNWN5QnRkWE4wSUdKbElIVnVhWEYxWlNjcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHMWhjQzVwZEdWdGN5NXdkWE5vS0hCaGFYSXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnWld4elpTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ2JXRndJRDBnYm1WM0lGbEJUVXhOWVhBb1kzUjRMbk5qYUdWdFlTazdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdiV0Z3TG1ac2IzY2dQU0IwY25WbE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHMWhjQzVwZEdWdGN5NXdkWE5vS0hCaGFYSXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR052Ym5OMElHVnVaRkpoYm1kbElEMGdLSFpoYkhWbFRtOWtaU0EvUHlCclpYbE9iMlJsS1M1eVlXNW5aVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J0WVhBdWNtRnVaMlVnUFNCYmEyVjVUbTlrWlM1eVlXNW5aVnN3WFN3Z1pXNWtVbUZ1WjJWYk1WMHNJR1Z1WkZKaGJtZGxXekpkWFR0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCamIyeHNMbWwwWlcxekxuQjFjMmdvYldGd0tUdGNiaUFnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQWdJRzltWm5ObGRDQTlJSFpoYkhWbFRtOWtaU0EvSUhaaGJIVmxUbTlrWlM1eVlXNW5aVnN5WFNBNklIWmhiSFZsVUhKdmNITXVaVzVrTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dUlDQWdJR052Ym5OMElHVjRjR1ZqZEdWa1JXNWtJRDBnYVhOTllYQWdQeUFuZlNjZ09pQW5YU2M3WEc0Z0lDQWdZMjl1YzNRZ1cyTmxMQ0F1TGk1bFpWMGdQU0JtWXk1bGJtUTdYRzRnSUNBZ2JHVjBJR05sVUc5eklEMGdiMlptYzJWME8xeHVJQ0FnSUdsbUlDaGpaU0FtSmlCalpTNXpiM1Z5WTJVZ1BUMDlJR1Y0Y0dWamRHVmtSVzVrS1Z4dUlDQWdJQ0FnSUNCalpWQnZjeUE5SUdObExtOW1abk5sZENBcklHTmxMbk52ZFhKalpTNXNaVzVuZEdnN1hHNGdJQ0FnWld4elpTQjdYRzRnSUNBZ0lDQWdJR052Ym5OMElHNWhiV1VnUFNCbVkwNWhiV1ZiTUYwdWRHOVZjSEJsY2tOaGMyVW9LU0FySUdaalRtRnRaUzV6ZFdKemRISnBibWNvTVNrN1hHNGdJQ0FnSUNBZ0lHTnZibk4wSUcxelp5QTlJR0YwVW05dmRGeHVJQ0FnSUNBZ0lDQWdJQ0FnUHlCZ0pIdHVZVzFsZlNCdGRYTjBJR1Z1WkNCM2FYUm9JR0VnSkh0bGVIQmxZM1JsWkVWdVpIMWdYRzRnSUNBZ0lDQWdJQ0FnSUNBNklHQWtlMjVoYldWOUlHbHVJR0pzYjJOcklHTnZiR3hsWTNScGIyNGdiWFZ6ZENCaVpTQnpkV1ptYVdOcFpXNTBiSGtnYVc1a1pXNTBaV1FnWVc1a0lHVnVaQ0IzYVhSb0lHRWdKSHRsZUhCbFkzUmxaRVZ1WkgxZ08xeHVJQ0FnSUNBZ0lDQnZia1Z5Y205eUtHOW1abk5sZEN3Z1lYUlNiMjkwSUQ4Z0owMUpVMU5KVGtkZlEwaEJVaWNnT2lBblFrRkVYMGxPUkVWT1ZDY3NJRzF6WnlrN1hHNGdJQ0FnSUNBZ0lHbG1JQ2hqWlNBbUppQmpaUzV6YjNWeVkyVXViR1Z1WjNSb0lDRTlQU0F4S1Z4dUlDQWdJQ0FnSUNBZ0lDQWdaV1V1ZFc1emFHbG1kQ2hqWlNrN1hHNGdJQ0FnZlZ4dUlDQWdJR2xtSUNobFpTNXNaVzVuZEdnZ1BpQXdLU0I3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJR1Z1WkNBOUlISmxjMjlzZG1WRmJtUW9aV1VzSUdObFVHOXpMQ0JqZEhndWIzQjBhVzl1Y3k1emRISnBZM1FzSUc5dVJYSnliM0lwTzF4dUlDQWdJQ0FnSUNCcFppQW9aVzVrTG1OdmJXMWxiblFwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJR2xtSUNoamIyeHNMbU52YlcxbGJuUXBYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZMjlzYkM1amIyMXRaVzUwSUNzOUlDZGNYRzRuSUNzZ1pXNWtMbU52YlcxbGJuUTdYRzRnSUNBZ0lDQWdJQ0FnSUNCbGJITmxYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZMjlzYkM1amIyMXRaVzUwSUQwZ1pXNWtMbU52YlcxbGJuUTdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnWTI5c2JDNXlZVzVuWlNBOUlGdG1ZeTV2Wm1aelpYUXNJR05sVUc5ekxDQmxibVF1YjJabWMyVjBYVHRjYmlBZ0lDQjlYRzRnSUNBZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUdOdmJHd3VjbUZ1WjJVZ1BTQmJabU11YjJabWMyVjBMQ0JqWlZCdmN5d2dZMlZRYjNOZE8xeHVJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNtNGdZMjlzYkR0Y2JuMWNibHh1Wlhod2IzSjBJSHNnY21WemIyeDJaVVpzYjNkRGIyeHNaV04wYVc5dUlIMDdYRzRpTENBaWFXMXdiM0owSUhzZ2FYTk9iMlJsSUgwZ1puSnZiU0FuTGk0dmJtOWtaWE12YVdSbGJuUnBkSGt1YW5Nbk8xeHVhVzF3YjNKMElIc2dVMk5oYkdGeUlIMGdabkp2YlNBbkxpNHZibTlrWlhNdlUyTmhiR0Z5TG1wekp6dGNibWx0Y0c5eWRDQjdJRmxCVFV4TllYQWdmU0JtY205dElDY3VMaTl1YjJSbGN5OVpRVTFNVFdGd0xtcHpKenRjYm1sdGNHOXlkQ0I3SUZsQlRVeFRaWEVnZlNCbWNtOXRJQ2N1TGk5dWIyUmxjeTlaUVUxTVUyVnhMbXB6Snp0Y2JtbHRjRzl5ZENCN0lISmxjMjlzZG1WQ2JHOWphMDFoY0NCOUlHWnliMjBnSnk0dmNtVnpiMngyWlMxaWJHOWpheTF0WVhBdWFuTW5PMXh1YVcxd2IzSjBJSHNnY21WemIyeDJaVUpzYjJOclUyVnhJSDBnWm5KdmJTQW5MaTl5WlhOdmJIWmxMV0pzYjJOckxYTmxjUzVxY3ljN1hHNXBiWEJ2Y25RZ2V5QnlaWE52YkhabFJteHZkME52Ykd4bFkzUnBiMjRnZlNCbWNtOXRJQ2N1TDNKbGMyOXNkbVV0Wm14dmR5MWpiMnhzWldOMGFXOXVMbXB6Snp0Y2JseHVablZ1WTNScGIyNGdjbVZ6YjJ4MlpVTnZiR3hsWTNScGIyNG9RMDRzSUdOMGVDd2dkRzlyWlc0c0lHOXVSWEp5YjNJc0lIUmhaMDVoYldVc0lIUmhaeWtnZTF4dUlDQWdJR052Ym5OMElHTnZiR3dnUFNCMGIydGxiaTUwZVhCbElEMDlQU0FuWW14dlkyc3RiV0Z3SjF4dUlDQWdJQ0FnSUNBL0lISmxjMjlzZG1WQ2JHOWphMDFoY0NoRFRpd2dZM1I0TENCMGIydGxiaXdnYjI1RmNuSnZjaXdnZEdGbktWeHVJQ0FnSUNBZ0lDQTZJSFJ2YTJWdUxuUjVjR1VnUFQwOUlDZGliRzlqYXkxelpYRW5YRzRnSUNBZ0lDQWdJQ0FnSUNBL0lISmxjMjlzZG1WQ2JHOWphMU5sY1NoRFRpd2dZM1I0TENCMGIydGxiaXdnYjI1RmNuSnZjaXdnZEdGbktWeHVJQ0FnSUNBZ0lDQWdJQ0FnT2lCeVpYTnZiSFpsUm14dmQwTnZiR3hsWTNScGIyNG9RMDRzSUdOMGVDd2dkRzlyWlc0c0lHOXVSWEp5YjNJc0lIUmhaeWs3WEc0Z0lDQWdZMjl1YzNRZ1EyOXNiQ0E5SUdOdmJHd3VZMjl1YzNSeWRXTjBiM0k3WEc0Z0lDQWdMeThnU1dZZ2QyVWdaMjkwSUdFZ2RHRm5UbUZ0WlNCdFlYUmphR2x1WnlCMGFHVWdZMnhoYzNNc0lHOXlJSFJvWlNCMFlXY2dibUZ0WlNCcGN5QW5JU2NzWEc0Z0lDQWdMeThnZEdobGJpQjFjMlVnZEdobElIUmhaMDVoYldVZ1puSnZiU0IwYUdVZ2JtOWtaU0JqYkdGemN5QjFjMlZrSUhSdklHTnlaV0YwWlNCcGRDNWNiaUFnSUNCcFppQW9kR0ZuVG1GdFpTQTlQVDBnSnlFbklIeDhJSFJoWjA1aGJXVWdQVDA5SUVOdmJHd3VkR0ZuVG1GdFpTa2dlMXh1SUNBZ0lDQWdJQ0JqYjJ4c0xuUmhaeUE5SUVOdmJHd3VkR0ZuVG1GdFpUdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlHTnZiR3c3WEc0Z0lDQWdmVnh1SUNBZ0lHbG1JQ2gwWVdkT1lXMWxLVnh1SUNBZ0lDQWdJQ0JqYjJ4c0xuUmhaeUE5SUhSaFowNWhiV1U3WEc0Z0lDQWdjbVYwZFhKdUlHTnZiR3c3WEc1OVhHNW1kVzVqZEdsdmJpQmpiMjF3YjNObFEyOXNiR1ZqZEdsdmJpaERUaXdnWTNSNExDQjBiMnRsYml3Z2NISnZjSE1zSUc5dVJYSnliM0lwSUh0Y2JpQWdJQ0JqYjI1emRDQjBZV2RVYjJ0bGJpQTlJSEJ5YjNCekxuUmhaenRjYmlBZ0lDQmpiMjV6ZENCMFlXZE9ZVzFsSUQwZ0lYUmhaMVJ2YTJWdVhHNGdJQ0FnSUNBZ0lEOGdiblZzYkZ4dUlDQWdJQ0FnSUNBNklHTjBlQzVrYVhKbFkzUnBkbVZ6TG5SaFowNWhiV1VvZEdGblZHOXJaVzR1YzI5MWNtTmxMQ0J0YzJjZ1BUNGdiMjVGY25KdmNpaDBZV2RVYjJ0bGJpd2dKMVJCUjE5U1JWTlBURlpGWDBaQlNVeEZSQ2NzSUcxelp5a3BPMXh1SUNBZ0lHbG1JQ2gwYjJ0bGJpNTBlWEJsSUQwOVBTQW5ZbXh2WTJzdGMyVnhKeWtnZTF4dUlDQWdJQ0FnSUNCamIyNXpkQ0I3SUdGdVkyaHZjaXdnYm1WM2JHbHVaVUZtZEdWeVVISnZjRG9nYm13Z2ZTQTlJSEJ5YjNCek8xeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCc1lYTjBVSEp2Y0NBOUlHRnVZMmh2Y2lBbUppQjBZV2RVYjJ0bGJseHVJQ0FnSUNBZ0lDQWdJQ0FnUHlCaGJtTm9iM0l1YjJabWMyVjBJRDRnZEdGblZHOXJaVzR1YjJabWMyVjBYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQeUJoYm1Ob2IzSmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQTZJSFJoWjFSdmEyVnVYRzRnSUNBZ0lDQWdJQ0FnSUNBNklDaGhibU5vYjNJZ1B6OGdkR0ZuVkc5clpXNHBPMXh1SUNBZ0lDQWdJQ0JwWmlBb2JHRnpkRkJ5YjNBZ0ppWWdLQ0Z1YkNCOGZDQnViQzV2Wm1aelpYUWdQQ0JzWVhOMFVISnZjQzV2Wm1aelpYUXBLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCdFpYTnpZV2RsSUQwZ0owMXBjM05wYm1jZ2JtVjNiR2x1WlNCaFpuUmxjaUJpYkc5amF5QnpaWEYxWlc1alpTQndjbTl3Y3ljN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J2YmtWeWNtOXlLR3hoYzNSUWNtOXdMQ0FuVFVsVFUwbE9SMTlEU0VGU0p5d2diV1Z6YzJGblpTazdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQjlYRzRnSUNBZ1kyOXVjM1FnWlhod1ZIbHdaU0E5SUhSdmEyVnVMblI1Y0dVZ1BUMDlJQ2RpYkc5amF5MXRZWEFuWEc0Z0lDQWdJQ0FnSUQ4Z0oyMWhjQ2RjYmlBZ0lDQWdJQ0FnT2lCMGIydGxiaTUwZVhCbElEMDlQU0FuWW14dlkyc3RjMlZ4SjF4dUlDQWdJQ0FnSUNBZ0lDQWdQeUFuYzJWeEoxeHVJQ0FnSUNBZ0lDQWdJQ0FnT2lCMGIydGxiaTV6ZEdGeWRDNXpiM1Z5WTJVZ1BUMDlJQ2Q3SjF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUQ4Z0oyMWhjQ2RjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E2SUNkelpYRW5PMXh1SUNBZ0lDOHZJSE5vYjNKMFkzVjBPaUJqYUdWamF5QnBaaUJwZENkeklHRWdaMlZ1WlhKcFl5QlpRVTFNVFdGd0lHOXlJRmxCVFV4VFpYRmNiaUFnSUNBdkx5QmlaV1p2Y21VZ2FuVnRjR2x1WnlCcGJuUnZJSFJvWlNCamRYTjBiMjBnZEdGbklHeHZaMmxqTGx4dUlDQWdJR2xtSUNnaGRHRm5WRzlyWlc0Z2ZIeGNiaUFnSUNBZ0lDQWdJWFJoWjA1aGJXVWdmSHhjYmlBZ0lDQWdJQ0FnZEdGblRtRnRaU0E5UFQwZ0p5RW5JSHg4WEc0Z0lDQWdJQ0FnSUNoMFlXZE9ZVzFsSUQwOVBTQlpRVTFNVFdGd0xuUmhaMDVoYldVZ0ppWWdaWGh3Vkhsd1pTQTlQVDBnSjIxaGNDY3BJSHg4WEc0Z0lDQWdJQ0FnSUNoMFlXZE9ZVzFsSUQwOVBTQlpRVTFNVTJWeExuUmhaMDVoYldVZ0ppWWdaWGh3Vkhsd1pTQTlQVDBnSjNObGNTY3BLU0I3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJ5WlhOdmJIWmxRMjlzYkdWamRHbHZiaWhEVGl3Z1kzUjRMQ0IwYjJ0bGJpd2diMjVGY25KdmNpd2dkR0ZuVG1GdFpTazdYRzRnSUNBZ2ZWeHVJQ0FnSUd4bGRDQjBZV2NnUFNCamRIZ3VjMk5vWlcxaExuUmhaM011Wm1sdVpDaDBJRDArSUhRdWRHRm5JRDA5UFNCMFlXZE9ZVzFsSUNZbUlIUXVZMjlzYkdWamRHbHZiaUE5UFQwZ1pYaHdWSGx3WlNrN1hHNGdJQ0FnYVdZZ0tDRjBZV2NwSUh0Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnYTNRZ1BTQmpkSGd1YzJOb1pXMWhMbXR1YjNkdVZHRm5jMXQwWVdkT1lXMWxYVHRjYmlBZ0lDQWdJQ0FnYVdZZ0tHdDBJQ1ltSUd0MExtTnZiR3hsWTNScGIyNGdQVDA5SUdWNGNGUjVjR1VwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJR04wZUM1elkyaGxiV0V1ZEdGbmN5NXdkWE5vS0U5aWFtVmpkQzVoYzNOcFoyNG9lMzBzSUd0MExDQjdJR1JsWm1GMWJIUTZJR1poYkhObElIMHBLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIUmhaeUE5SUd0ME8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tHdDBQeTVqYjJ4c1pXTjBhVzl1S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2IyNUZjbkp2Y2loMFlXZFViMnRsYml3Z0owSkJSRjlEVDB4TVJVTlVTVTlPWDFSWlVFVW5MQ0JnSkh0cmRDNTBZV2Q5SUhWelpXUWdabTl5SUNSN1pYaHdWSGx3WlgwZ1kyOXNiR1ZqZEdsdmJpd2dZblYwSUdWNGNHVmpkSE1nSkh0cmRDNWpiMnhzWldOMGFXOXVmV0FzSUhSeWRXVXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnWld4elpTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdiMjVGY25KdmNpaDBZV2RVYjJ0bGJpd2dKMVJCUjE5U1JWTlBURlpGWDBaQlNVeEZSQ2NzSUdCVmJuSmxjMjlzZG1Wa0lIUmhaem9nSkh0MFlXZE9ZVzFsZldBc0lIUnlkV1VwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhKbGMyOXNkbVZEYjJ4c1pXTjBhVzl1S0VOT0xDQmpkSGdzSUhSdmEyVnVMQ0J2YmtWeWNtOXlMQ0IwWVdkT1lXMWxLVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ0lDQmpiMjV6ZENCamIyeHNJRDBnY21WemIyeDJaVU52Ykd4bFkzUnBiMjRvUTA0c0lHTjBlQ3dnZEc5clpXNHNJRzl1UlhKeWIzSXNJSFJoWjA1aGJXVXNJSFJoWnlrN1hHNGdJQ0FnWTI5dWMzUWdjbVZ6SUQwZ2RHRm5MbkpsYzI5c2RtVS9MaWhqYjJ4c0xDQnRjMmNnUFQ0Z2IyNUZjbkp2Y2loMFlXZFViMnRsYml3Z0oxUkJSMTlTUlZOUFRGWkZYMFpCU1V4RlJDY3NJRzF6Wnlrc0lHTjBlQzV2Y0hScGIyNXpLU0EvUHlCamIyeHNPMXh1SUNBZ0lHTnZibk4wSUc1dlpHVWdQU0JwYzA1dlpHVW9jbVZ6S1Z4dUlDQWdJQ0FnSUNBL0lISmxjMXh1SUNBZ0lDQWdJQ0E2SUc1bGR5QlRZMkZzWVhJb2NtVnpLVHRjYmlBZ0lDQnViMlJsTG5KaGJtZGxJRDBnWTI5c2JDNXlZVzVuWlR0Y2JpQWdJQ0J1YjJSbExuUmhaeUE5SUhSaFowNWhiV1U3WEc0Z0lDQWdhV1lnS0hSaFp6OHVabTl5YldGMEtWeHVJQ0FnSUNBZ0lDQnViMlJsTG1admNtMWhkQ0E5SUhSaFp5NW1iM0p0WVhRN1hHNGdJQ0FnY21WMGRYSnVJRzV2WkdVN1hHNTlYRzVjYm1WNGNHOXlkQ0I3SUdOdmJYQnZjMlZEYjJ4c1pXTjBhVzl1SUgwN1hHNGlMQ0FpYVcxd2IzSjBJSHNnVTJOaGJHRnlJSDBnWm5KdmJTQW5MaTR2Ym05a1pYTXZVMk5oYkdGeUxtcHpKenRjYmx4dVpuVnVZM1JwYjI0Z2NtVnpiMngyWlVKc2IyTnJVMk5oYkdGeUtHTjBlQ3dnYzJOaGJHRnlMQ0J2YmtWeWNtOXlLU0I3WEc0Z0lDQWdZMjl1YzNRZ2MzUmhjblFnUFNCelkyRnNZWEl1YjJabWMyVjBPMXh1SUNBZ0lHTnZibk4wSUdobFlXUmxjaUE5SUhCaGNuTmxRbXh2WTJ0VFkyRnNZWEpJWldGa1pYSW9jMk5oYkdGeUxDQmpkSGd1YjNCMGFXOXVjeTV6ZEhKcFkzUXNJRzl1UlhKeWIzSXBPMXh1SUNBZ0lHbG1JQ2doYUdWaFpHVnlLVnh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdleUIyWVd4MVpUb2dKeWNzSUhSNWNHVTZJRzUxYkd3c0lHTnZiVzFsYm5RNklDY25MQ0J5WVc1blpUb2dXM04wWVhKMExDQnpkR0Z5ZEN3Z2MzUmhjblJkSUgwN1hHNGdJQ0FnWTI5dWMzUWdkSGx3WlNBOUlHaGxZV1JsY2k1dGIyUmxJRDA5UFNBblBpY2dQeUJUWTJGc1lYSXVRa3hQUTB0ZlJrOU1SRVZFSURvZ1UyTmhiR0Z5TGtKTVQwTkxYMHhKVkVWU1FVdzdYRzRnSUNBZ1kyOXVjM1FnYkdsdVpYTWdQU0J6WTJGc1lYSXVjMjkxY21ObElEOGdjM0JzYVhSTWFXNWxjeWh6WTJGc1lYSXVjMjkxY21ObEtTQTZJRnRkTzF4dUlDQWdJQzh2SUdSbGRHVnliV2x1WlNCMGFHVWdaVzVrSUc5bUlHTnZiblJsYm5RZ0ppQnpkR0Z5ZENCdlppQmphRzl0Y0dsdVoxeHVJQ0FnSUd4bGRDQmphRzl0Y0ZOMFlYSjBJRDBnYkdsdVpYTXViR1Z1WjNSb08xeHVJQ0FnSUdadmNpQW9iR1YwSUdrZ1BTQnNhVzVsY3k1c1pXNW5kR2dnTFNBeE95QnBJRDQ5SURBN0lDMHRhU2tnZTF4dUlDQWdJQ0FnSUNCamIyNXpkQ0JqYjI1MFpXNTBJRDBnYkdsdVpYTmJhVjFiTVYwN1hHNGdJQ0FnSUNBZ0lHbG1JQ2hqYjI1MFpXNTBJRDA5UFNBbkp5QjhmQ0JqYjI1MFpXNTBJRDA5UFNBblhGeHlKeWxjYmlBZ0lDQWdJQ0FnSUNBZ0lHTm9iMjF3VTNSaGNuUWdQU0JwTzF4dUlDQWdJQ0FnSUNCbGJITmxYRzRnSUNBZ0lDQWdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQjlYRzRnSUNBZ0x5OGdjMmh2Y25SamRYUWdabTl5SUdWdGNIUjVJR052Ym5SbGJuUnpYRzRnSUNBZ2FXWWdLR05vYjIxd1UzUmhjblFnUFQwOUlEQXBJSHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdkbUZzZFdVZ1BTQm9aV0ZrWlhJdVkyaHZiWEFnUFQwOUlDY3JKeUFtSmlCc2FXNWxjeTVzWlc1bmRHZ2dQaUF3WEc0Z0lDQWdJQ0FnSUNBZ0lDQS9JQ2RjWEc0bkxuSmxjR1ZoZENoTllYUm9MbTFoZUNneExDQnNhVzVsY3k1c1pXNW5kR2dnTFNBeEtTbGNiaUFnSUNBZ0lDQWdJQ0FnSURvZ0p5YzdYRzRnSUNBZ0lDQWdJR3hsZENCbGJtUWdQU0J6ZEdGeWRDQXJJR2hsWVdSbGNpNXNaVzVuZEdnN1hHNGdJQ0FnSUNBZ0lHbG1JQ2h6WTJGc1lYSXVjMjkxY21ObEtWeHVJQ0FnSUNBZ0lDQWdJQ0FnWlc1a0lDczlJSE5qWVd4aGNpNXpiM1Z5WTJVdWJHVnVaM1JvTzF4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnZXlCMllXeDFaU3dnZEhsd1pTd2dZMjl0YldWdWREb2dhR1ZoWkdWeUxtTnZiVzFsYm5Rc0lISmhibWRsT2lCYmMzUmhjblFzSUdWdVpDd2daVzVrWFNCOU8xeHVJQ0FnSUgxY2JpQWdJQ0F2THlCbWFXNWtJSFJvWlNCcGJtUmxiblJoZEdsdmJpQnNaWFpsYkNCMGJ5QjBjbWx0SUdaeWIyMGdjM1JoY25SY2JpQWdJQ0JzWlhRZ2RISnBiVWx1WkdWdWRDQTlJSE5qWVd4aGNpNXBibVJsYm5RZ0t5Qm9aV0ZrWlhJdWFXNWtaVzUwTzF4dUlDQWdJR3hsZENCdlptWnpaWFFnUFNCelkyRnNZWEl1YjJabWMyVjBJQ3NnYUdWaFpHVnlMbXhsYm1kMGFEdGNiaUFnSUNCc1pYUWdZMjl1ZEdWdWRGTjBZWEowSUQwZ01EdGNiaUFnSUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElHTm9iMjF3VTNSaGNuUTdJQ3NyYVNrZ2UxeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCYmFXNWtaVzUwTENCamIyNTBaVzUwWFNBOUlHeHBibVZ6VzJsZE8xeHVJQ0FnSUNBZ0lDQnBaaUFvWTI5dWRHVnVkQ0E5UFQwZ0p5Y2dmSHdnWTI5dWRHVnVkQ0E5UFQwZ0oxeGNjaWNwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJR2xtSUNob1pXRmtaWEl1YVc1a1pXNTBJRDA5UFNBd0lDWW1JR2x1WkdWdWRDNXNaVzVuZEdnZ1BpQjBjbWx0U1c1a1pXNTBLVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSFJ5YVcxSmJtUmxiblFnUFNCcGJtUmxiblF1YkdWdVozUm9PMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLR2x1WkdWdWRDNXNaVzVuZEdnZ1BDQjBjbWx0U1c1a1pXNTBLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWTI5dWMzUWdiV1Z6YzJGblpTQTlJQ2RDYkc5amF5QnpZMkZzWVhKeklIZHBkR2dnYlc5eVpTMXBibVJsYm5SbFpDQnNaV0ZrYVc1bklHVnRjSFI1SUd4cGJtVnpJRzExYzNRZ2RYTmxJR0Z1SUdWNGNHeHBZMmwwSUdsdVpHVnVkR0YwYVc5dUlHbHVaR2xqWVhSdmNpYzdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdiMjVGY25KdmNpaHZabVp6WlhRZ0t5QnBibVJsYm5RdWJHVnVaM1JvTENBblRVbFRVMGxPUjE5RFNFRlNKeXdnYldWemMyRm5aU2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNCcFppQW9hR1ZoWkdWeUxtbHVaR1Z1ZENBOVBUMGdNQ2xjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IwY21sdFNXNWtaVzUwSUQwZ2FXNWtaVzUwTG14bGJtZDBhRHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHTnZiblJsYm5SVGRHRnlkQ0E5SUdrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2RISnBiVWx1WkdWdWRDQTlQVDBnTUNBbUppQWhZM1I0TG1GMFVtOXZkQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdOdmJuTjBJRzFsYzNOaFoyVWdQU0FuUW14dlkyc2djMk5oYkdGeUlIWmhiSFZsY3lCcGJpQmpiMnhzWldOMGFXOXVjeUJ0ZFhOMElHSmxJR2x1WkdWdWRHVmtKenRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J2YmtWeWNtOXlLRzltWm5ObGRDd2dKMEpCUkY5SlRrUkZUbFFuTENCdFpYTnpZV2RsS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNBZ0lHSnlaV0ZyTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lHOW1abk5sZENBclBTQnBibVJsYm5RdWJHVnVaM1JvSUNzZ1kyOXVkR1Z1ZEM1c1pXNW5kR2dnS3lBeE8xeHVJQ0FnSUgxY2JpQWdJQ0F2THlCcGJtTnNkV1JsSUhSeVlXbHNhVzVuSUcxdmNtVXRhVzVrWlc1MFpXUWdaVzF3ZEhrZ2JHbHVaWE1nYVc0Z1kyOXVkR1Z1ZEZ4dUlDQWdJR1p2Y2lBb2JHVjBJR2tnUFNCc2FXNWxjeTVzWlc1bmRHZ2dMU0F4T3lCcElENDlJR05vYjIxd1UzUmhjblE3SUMwdGFTa2dlMXh1SUNBZ0lDQWdJQ0JwWmlBb2JHbHVaWE5iYVYxYk1GMHViR1Z1WjNSb0lENGdkSEpwYlVsdVpHVnVkQ2xjYmlBZ0lDQWdJQ0FnSUNBZ0lHTm9iMjF3VTNSaGNuUWdQU0JwSUNzZ01UdGNiaUFnSUNCOVhHNGdJQ0FnYkdWMElIWmhiSFZsSUQwZ0p5YzdYRzRnSUNBZ2JHVjBJSE5sY0NBOUlDY25PMXh1SUNBZ0lHeGxkQ0J3Y21WMlRXOXlaVWx1WkdWdWRHVmtJRDBnWm1Gc2MyVTdYRzRnSUNBZ0x5OGdiR1ZoWkdsdVp5QjNhR2wwWlhOd1lXTmxJR2x6SUd0bGNIUWdhVzUwWVdOMFhHNGdJQ0FnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnUENCamIyNTBaVzUwVTNSaGNuUTdJQ3NyYVNsY2JpQWdJQ0FnSUNBZ2RtRnNkV1VnS3owZ2JHbHVaWE5iYVYxYk1GMHVjMnhwWTJVb2RISnBiVWx1WkdWdWRDa2dLeUFuWEZ4dUp6dGNiaUFnSUNCbWIzSWdLR3hsZENCcElEMGdZMjl1ZEdWdWRGTjBZWEowT3lCcElEd2dZMmh2YlhCVGRHRnlkRHNnS3l0cEtTQjdYRzRnSUNBZ0lDQWdJR3hsZENCYmFXNWtaVzUwTENCamIyNTBaVzUwWFNBOUlHeHBibVZ6VzJsZE8xeHVJQ0FnSUNBZ0lDQnZabVp6WlhRZ0t6MGdhVzVrWlc1MExteGxibWQwYUNBcklHTnZiblJsYm5RdWJHVnVaM1JvSUNzZ01UdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ1kzSnNaaUE5SUdOdmJuUmxiblJiWTI5dWRHVnVkQzVzWlc1bmRHZ2dMU0F4WFNBOVBUMGdKMXhjY2ljN1hHNGdJQ0FnSUNBZ0lHbG1JQ2hqY214bUtWeHVJQ0FnSUNBZ0lDQWdJQ0FnWTI5dWRHVnVkQ0E5SUdOdmJuUmxiblF1YzJ4cFkyVW9NQ3dnTFRFcE8xeHVJQ0FnSUNBZ0lDQXZLaUJwYzNSaGJtSjFiQ0JwWjI1dmNtVWdhV1lnWVd4eVpXRmtlU0JqWVhWbmFIUWdhVzRnYkdWNFpYSWdLaTljYmlBZ0lDQWdJQ0FnYVdZZ0tHTnZiblJsYm5RZ0ppWWdhVzVrWlc1MExteGxibWQwYUNBOElIUnlhVzFKYm1SbGJuUXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHTnZibk4wSUhOeVl5QTlJR2hsWVdSbGNpNXBibVJsYm5SY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBL0lDZGxlSEJzYVdOcGRDQnBibVJsYm5SaGRHbHZiaUJwYm1ScFkyRjBiM0luWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnT2lBblptbHljM1FnYkdsdVpTYzdYRzRnSUNBZ0lDQWdJQ0FnSUNCamIyNXpkQ0J0WlhOellXZGxJRDBnWUVKc2IyTnJJSE5qWVd4aGNpQnNhVzVsY3lCdGRYTjBJRzV2ZENCaVpTQnNaWE56SUdsdVpHVnVkR1ZrSUhSb1lXNGdkR2hsYVhJZ0pIdHpjbU45WUR0Y2JpQWdJQ0FnSUNBZ0lDQWdJRzl1UlhKeWIzSW9iMlptYzJWMElDMGdZMjl1ZEdWdWRDNXNaVzVuZEdnZ0xTQW9ZM0pzWmlBL0lESWdPaUF4S1N3Z0owSkJSRjlKVGtSRlRsUW5MQ0J0WlhOellXZGxLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHbHVaR1Z1ZENBOUlDY25PMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUdsbUlDaDBlWEJsSUQwOVBTQlRZMkZzWVhJdVFreFBRMHRmVEVsVVJWSkJUQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdkbUZzZFdVZ0t6MGdjMlZ3SUNzZ2FXNWtaVzUwTG5Oc2FXTmxLSFJ5YVcxSmJtUmxiblFwSUNzZ1kyOXVkR1Z1ZER0Y2JpQWdJQ0FnSUNBZ0lDQWdJSE5sY0NBOUlDZGNYRzRuTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lHVnNjMlVnYVdZZ0tHbHVaR1Z1ZEM1c1pXNW5kR2dnUGlCMGNtbHRTVzVrWlc1MElIeDhJR052Ym5SbGJuUmJNRjBnUFQwOUlDZGNYSFFuS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0F2THlCdGIzSmxMV2x1WkdWdWRHVmtJR052Ym5SbGJuUWdkMmwwYUdsdUlHRWdabTlzWkdWa0lHSnNiMk5yWEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFvYzJWd0lEMDlQU0FuSUNjcFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2MyVndJRDBnSjF4Y2JpYzdYRzRnSUNBZ0lDQWdJQ0FnSUNCbGJITmxJR2xtSUNnaGNISmxkazF2Y21WSmJtUmxiblJsWkNBbUppQnpaWEFnUFQwOUlDZGNYRzRuS1Z4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhObGNDQTlJQ2RjWEc1Y1hHNG5PMXh1SUNBZ0lDQWdJQ0FnSUNBZ2RtRnNkV1VnS3owZ2MyVndJQ3NnYVc1a1pXNTBMbk5zYVdObEtIUnlhVzFKYm1SbGJuUXBJQ3NnWTI5dWRHVnVkRHRjYmlBZ0lDQWdJQ0FnSUNBZ0lITmxjQ0E5SUNkY1hHNG5PMXh1SUNBZ0lDQWdJQ0FnSUNBZ2NISmxkazF2Y21WSmJtUmxiblJsWkNBOUlIUnlkV1U3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ1pXeHpaU0JwWmlBb1kyOXVkR1Z1ZENBOVBUMGdKeWNwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQzh2SUdWdGNIUjVJR3hwYm1WY2JpQWdJQ0FnSUNBZ0lDQWdJR2xtSUNoelpYQWdQVDA5SUNkY1hHNG5LVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSFpoYkhWbElDczlJQ2RjWEc0bk8xeHVJQ0FnSUNBZ0lDQWdJQ0FnWld4elpWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lITmxjQ0E5SUNkY1hHNG5PMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2RtRnNkV1VnS3owZ2MyVndJQ3NnWTI5dWRHVnVkRHRjYmlBZ0lDQWdJQ0FnSUNBZ0lITmxjQ0E5SUNjZ0p6dGNiaUFnSUNBZ0lDQWdJQ0FnSUhCeVpYWk5iM0psU1c1a1pXNTBaV1FnUFNCbVlXeHpaVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ0lDQnpkMmwwWTJnZ0tHaGxZV1JsY2k1amFHOXRjQ2tnZTF4dUlDQWdJQ0FnSUNCallYTmxJQ2N0SnpwY2JpQWdJQ0FnSUNBZ0lDQWdJR0p5WldGck8xeHVJQ0FnSUNBZ0lDQmpZWE5sSUNjckp6cGNiaUFnSUNBZ0lDQWdJQ0FnSUdadmNpQW9iR1YwSUdrZ1BTQmphRzl0Y0ZOMFlYSjBPeUJwSUR3Z2JHbHVaWE11YkdWdVozUm9PeUFySzJrcFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RtRnNkV1VnS3owZ0oxeGNiaWNnS3lCc2FXNWxjMXRwWFZzd1hTNXpiR2xqWlNoMGNtbHRTVzVrWlc1MEtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDaDJZV3gxWlZ0MllXeDFaUzVzWlc1bmRHZ2dMU0F4WFNBaFBUMGdKMXhjYmljcFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RtRnNkV1VnS3owZ0oxeGNiaWM3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmljbVZoYXp0Y2JpQWdJQ0FnSUNBZ1pHVm1ZWFZzZERwY2JpQWdJQ0FnSUNBZ0lDQWdJSFpoYkhWbElDczlJQ2RjWEc0bk8xeHVJQ0FnSUgxY2JpQWdJQ0JqYjI1emRDQmxibVFnUFNCemRHRnlkQ0FySUdobFlXUmxjaTVzWlc1bmRHZ2dLeUJ6WTJGc1lYSXVjMjkxY21ObExteGxibWQwYUR0Y2JpQWdJQ0J5WlhSMWNtNGdleUIyWVd4MVpTd2dkSGx3WlN3Z1kyOXRiV1Z1ZERvZ2FHVmhaR1Z5TG1OdmJXMWxiblFzSUhKaGJtZGxPaUJiYzNSaGNuUXNJR1Z1WkN3Z1pXNWtYU0I5TzF4dWZWeHVablZ1WTNScGIyNGdjR0Z5YzJWQ2JHOWphMU5qWVd4aGNraGxZV1JsY2loN0lHOW1abk5sZEN3Z2NISnZjSE1nZlN3Z2MzUnlhV04wTENCdmJrVnljbTl5S1NCN1hHNGdJQ0FnTHlvZ2FYTjBZVzVpZFd3Z2FXZHViM0psSUdsbUlITm9iM1ZzWkNCdWIzUWdhR0Z3Y0dWdUlDb3ZYRzRnSUNBZ2FXWWdLSEJ5YjNCeld6QmRMblI1Y0dVZ0lUMDlJQ2RpYkc5amF5MXpZMkZzWVhJdGFHVmhaR1Z5SnlrZ2UxeHVJQ0FnSUNBZ0lDQnZia1Z5Y205eUtIQnliM0J6V3pCZExDQW5TVTFRVDFOVFNVSk1SU2NzSUNkQ2JHOWpheUJ6WTJGc1lYSWdhR1ZoWkdWeUlHNXZkQ0JtYjNWdVpDY3BPMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdiblZzYkR0Y2JpQWdJQ0I5WEc0Z0lDQWdZMjl1YzNRZ2V5QnpiM1Z5WTJVZ2ZTQTlJSEJ5YjNCeld6QmRPMXh1SUNBZ0lHTnZibk4wSUcxdlpHVWdQU0J6YjNWeVkyVmJNRjA3WEc0Z0lDQWdiR1YwSUdsdVpHVnVkQ0E5SURBN1hHNGdJQ0FnYkdWMElHTm9iMjF3SUQwZ0p5YzdYRzRnSUNBZ2JHVjBJR1Z5Y205eUlEMGdMVEU3WEc0Z0lDQWdabTl5SUNoc1pYUWdhU0E5SURFN0lHa2dQQ0J6YjNWeVkyVXViR1Z1WjNSb095QXJLMmtwSUh0Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnWTJnZ1BTQnpiM1Z5WTJWYmFWMDdYRzRnSUNBZ0lDQWdJR2xtSUNnaFkyaHZiWEFnSmlZZ0tHTm9JRDA5UFNBbkxTY2dmSHdnWTJnZ1BUMDlJQ2NySnlrcFhHNGdJQ0FnSUNBZ0lDQWdJQ0JqYUc5dGNDQTlJR05vTzF4dUlDQWdJQ0FnSUNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHTnZibk4wSUc0Z1BTQk9kVzFpWlhJb1kyZ3BPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLQ0ZwYm1SbGJuUWdKaVlnYmlsY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcGJtUmxiblFnUFNCdU8xeHVJQ0FnSUNBZ0lDQWdJQ0FnWld4elpTQnBaaUFvWlhKeWIzSWdQVDA5SUMweEtWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHVnljbTl5SUQwZ2IyWm1jMlYwSUNzZ2FUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lIMWNiaUFnSUNCcFppQW9aWEp5YjNJZ0lUMDlJQzB4S1Z4dUlDQWdJQ0FnSUNCdmJrVnljbTl5S0dWeWNtOXlMQ0FuVlU1RldGQkZRMVJGUkY5VVQwdEZUaWNzSUdCQ2JHOWpheUJ6WTJGc1lYSWdhR1ZoWkdWeUlHbHVZMngxWkdWeklHVjRkSEpoSUdOb1lYSmhZM1JsY25NNklDUjdjMjkxY21ObGZXQXBPMXh1SUNBZ0lHeGxkQ0JvWVhOVGNHRmpaU0E5SUdaaGJITmxPMXh1SUNBZ0lHeGxkQ0JqYjIxdFpXNTBJRDBnSnljN1hHNGdJQ0FnYkdWMElHeGxibWQwYUNBOUlITnZkWEpqWlM1c1pXNW5kR2c3WEc0Z0lDQWdabTl5SUNoc1pYUWdhU0E5SURFN0lHa2dQQ0J3Y205d2N5NXNaVzVuZEdnN0lDc3JhU2tnZTF4dUlDQWdJQ0FnSUNCamIyNXpkQ0IwYjJ0bGJpQTlJSEJ5YjNCelcybGRPMXh1SUNBZ0lDQWdJQ0J6ZDJsMFkyZ2dLSFJ2YTJWdUxuUjVjR1VwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJR05oYzJVZ0ozTndZV05sSnpwY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCb1lYTlRjR0ZqWlNBOUlIUnlkV1U3WEc0Z0lDQWdJQ0FnSUNBZ0lDQXZMeUJtWVd4c2RHaHliM1ZuYUZ4dUlDQWdJQ0FnSUNBZ0lDQWdZMkZ6WlNBbmJtVjNiR2x1WlNjNlhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2JHVnVaM1JvSUNzOUlIUnZhMlZ1TG5OdmRYSmpaUzVzWlc1bmRHZzdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZbkpsWVdzN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JqWVhObElDZGpiMjF0Wlc1MEp6cGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBaaUFvYzNSeWFXTjBJQ1ltSUNGb1lYTlRjR0ZqWlNrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JqYjI1emRDQnRaWE56WVdkbElEMGdKME52YlcxbGJuUnpJRzExYzNRZ1ltVWdjMlZ3WVhKaGRHVmtJR1p5YjIwZ2IzUm9aWElnZEc5clpXNXpJR0o1SUhkb2FYUmxJSE53WVdObElHTm9ZWEpoWTNSbGNuTW5PMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCdmJrVnljbTl5S0hSdmEyVnVMQ0FuVFVsVFUwbE9SMTlEU0VGU0p5d2diV1Z6YzJGblpTazdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR3hsYm1kMGFDQXJQU0IwYjJ0bGJpNXpiM1Z5WTJVdWJHVnVaM1JvTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdOdmJXMWxiblFnUFNCMGIydGxiaTV6YjNWeVkyVXVjM1ZpYzNSeWFXNW5LREVwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdKeVpXRnJPMXh1SUNBZ0lDQWdJQ0FnSUNBZ1kyRnpaU0FuWlhKeWIzSW5PbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRzl1UlhKeWIzSW9kRzlyWlc0c0lDZFZUa1ZZVUVWRFZFVkVYMVJQUzBWT0p5d2dkRzlyWlc0dWJXVnpjMkZuWlNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2JHVnVaM1JvSUNzOUlIUnZhMlZ1TG5OdmRYSmpaUzVzWlc1bmRHZzdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZbkpsWVdzN1hHNGdJQ0FnSUNBZ0lDQWdJQ0F2S2lCcGMzUmhibUoxYkNCcFoyNXZjbVVnYm1WNGRDQnphRzkxYkdRZ2JtOTBJR2hoY0hCbGJpQXFMMXh1SUNBZ0lDQWdJQ0FnSUNBZ1pHVm1ZWFZzZERvZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHTnZibk4wSUcxbGMzTmhaMlVnUFNCZ1ZXNWxlSEJsWTNSbFpDQjBiMnRsYmlCcGJpQmliRzlqYXlCelkyRnNZWElnYUdWaFpHVnlPaUFrZTNSdmEyVnVMblI1Y0dWOVlEdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnZia1Z5Y205eUtIUnZhMlZ1TENBblZVNUZXRkJGUTFSRlJGOVVUMHRGVGljc0lHMWxjM05oWjJVcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHTnZibk4wSUhSeklEMGdkRzlyWlc0dWMyOTFjbU5sTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDaDBjeUFtSmlCMGVYQmxiMllnZEhNZ1BUMDlJQ2R6ZEhKcGJtY25LVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCc1pXNW5kR2dnS3owZ2RITXViR1Z1WjNSb08xeHVJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dUlDQWdJSEpsZEhWeWJpQjdJRzF2WkdVc0lHbHVaR1Z1ZEN3Z1kyaHZiWEFzSUdOdmJXMWxiblFzSUd4bGJtZDBhQ0I5TzF4dWZWeHVMeW9xSUVCeVpYUjFjbTV6SUVGeWNtRjVJRzltSUd4cGJtVnpJSE53YkdsMElIVndJR0Z6SUdCYmFXNWtaVzUwTENCamIyNTBaVzUwWFdBZ0tpOWNibVoxYm1OMGFXOXVJSE53YkdsMFRHbHVaWE1vYzI5MWNtTmxLU0I3WEc0Z0lDQWdZMjl1YzNRZ2MzQnNhWFFnUFNCemIzVnlZMlV1YzNCc2FYUW9MMXhjYmlnZ0tpa3ZLVHRjYmlBZ0lDQmpiMjV6ZENCbWFYSnpkQ0E5SUhOd2JHbDBXekJkTzF4dUlDQWdJR052Ym5OMElHMGdQU0JtYVhKemRDNXRZWFJqYUNndlhpZ2dLaWt2S1R0Y2JpQWdJQ0JqYjI1emRDQnNhVzVsTUNBOUlHMC9MbHN4WFZ4dUlDQWdJQ0FnSUNBL0lGdHRXekZkTENCbWFYSnpkQzV6YkdsalpTaHRXekZkTG14bGJtZDBhQ2xkWEc0Z0lDQWdJQ0FnSURvZ1d5Y25MQ0JtYVhKemRGMDdYRzRnSUNBZ1kyOXVjM1FnYkdsdVpYTWdQU0JiYkdsdVpUQmRPMXh1SUNBZ0lHWnZjaUFvYkdWMElHa2dQU0F4T3lCcElEd2djM0JzYVhRdWJHVnVaM1JvT3lCcElDczlJRElwWEc0Z0lDQWdJQ0FnSUd4cGJtVnpMbkIxYzJnb1czTndiR2wwVzJsZExDQnpjR3hwZEZ0cElDc2dNVjFkS1R0Y2JpQWdJQ0J5WlhSMWNtNGdiR2x1WlhNN1hHNTlYRzVjYm1WNGNHOXlkQ0I3SUhKbGMyOXNkbVZDYkc5amExTmpZV3hoY2lCOU8xeHVJaXdnSW1sdGNHOXlkQ0I3SUZOallXeGhjaUI5SUdaeWIyMGdKeTR1TDI1dlpHVnpMMU5qWVd4aGNpNXFjeWM3WEc1cGJYQnZjblFnZXlCeVpYTnZiSFpsUlc1a0lIMGdabkp2YlNBbkxpOXlaWE52YkhabExXVnVaQzVxY3ljN1hHNWNibVoxYm1OMGFXOXVJSEpsYzI5c2RtVkdiRzkzVTJOaGJHRnlLSE5qWVd4aGNpd2djM1J5YVdOMExDQnZia1Z5Y205eUtTQjdYRzRnSUNBZ1kyOXVjM1FnZXlCdlptWnpaWFFzSUhSNWNHVXNJSE52ZFhKalpTd2daVzVrSUgwZ1BTQnpZMkZzWVhJN1hHNGdJQ0FnYkdWMElGOTBlWEJsTzF4dUlDQWdJR3hsZENCMllXeDFaVHRjYmlBZ0lDQmpiMjV6ZENCZmIyNUZjbkp2Y2lBOUlDaHlaV3dzSUdOdlpHVXNJRzF6WnlrZ1BUNGdiMjVGY25KdmNpaHZabVp6WlhRZ0t5QnlaV3dzSUdOdlpHVXNJRzF6WnlrN1hHNGdJQ0FnYzNkcGRHTm9JQ2gwZVhCbEtTQjdYRzRnSUNBZ0lDQWdJR05oYzJVZ0ozTmpZV3hoY2ljNlhHNGdJQ0FnSUNBZ0lDQWdJQ0JmZEhsd1pTQTlJRk5qWVd4aGNpNVFURUZKVGp0Y2JpQWdJQ0FnSUNBZ0lDQWdJSFpoYkhWbElEMGdjR3hoYVc1V1lXeDFaU2h6YjNWeVkyVXNJRjl2YmtWeWNtOXlLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHSnlaV0ZyTzF4dUlDQWdJQ0FnSUNCallYTmxJQ2R6YVc1bmJHVXRjWFZ2ZEdWa0xYTmpZV3hoY2ljNlhHNGdJQ0FnSUNBZ0lDQWdJQ0JmZEhsd1pTQTlJRk5qWVd4aGNpNVJWVTlVUlY5VFNVNUhURVU3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjJZV3gxWlNBOUlITnBibWRzWlZGMWIzUmxaRlpoYkhWbEtITnZkWEpqWlN3Z1gyOXVSWEp5YjNJcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnWW5KbFlXczdYRzRnSUNBZ0lDQWdJR05oYzJVZ0oyUnZkV0pzWlMxeGRXOTBaV1F0YzJOaGJHRnlKenBjYmlBZ0lDQWdJQ0FnSUNBZ0lGOTBlWEJsSUQwZ1UyTmhiR0Z5TGxGVlQxUkZYMFJQVlVKTVJUdGNiaUFnSUNBZ0lDQWdJQ0FnSUhaaGJIVmxJRDBnWkc5MVlteGxVWFZ2ZEdWa1ZtRnNkV1VvYzI5MWNtTmxMQ0JmYjI1RmNuSnZjaWs3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmljbVZoYXp0Y2JpQWdJQ0FnSUNBZ0x5b2dhWE4wWVc1aWRXd2dhV2R1YjNKbElHNWxlSFFnYzJodmRXeGtJRzV2ZENCb1lYQndaVzRnS2k5Y2JpQWdJQ0FnSUNBZ1pHVm1ZWFZzZERwY2JpQWdJQ0FnSUNBZ0lDQWdJRzl1UlhKeWIzSW9jMk5oYkdGeUxDQW5WVTVGV0ZCRlExUkZSRjlVVDB0RlRpY3NJR0JGZUhCbFkzUmxaQ0JoSUdac2IzY2djMk5oYkdGeUlIWmhiSFZsTENCaWRYUWdabTkxYm1RNklDUjdkSGx3WlgxZ0tUdGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUI3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZG1Gc2RXVTZJQ2NuTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhSNWNHVTZJRzUxYkd3c1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1kyOXRiV1Z1ZERvZ0p5Y3NYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbUZ1WjJVNklGdHZabVp6WlhRc0lHOW1abk5sZENBcklITnZkWEpqWlM1c1pXNW5kR2dzSUc5bVpuTmxkQ0FySUhOdmRYSmpaUzVzWlc1bmRHaGRYRzRnSUNBZ0lDQWdJQ0FnSUNCOU8xeHVJQ0FnSUgxY2JpQWdJQ0JqYjI1emRDQjJZV3gxWlVWdVpDQTlJRzltWm5ObGRDQXJJSE52ZFhKalpTNXNaVzVuZEdnN1hHNGdJQ0FnWTI5dWMzUWdjbVVnUFNCeVpYTnZiSFpsUlc1a0tHVnVaQ3dnZG1Gc2RXVkZibVFzSUhOMGNtbGpkQ3dnYjI1RmNuSnZjaWs3WEc0Z0lDQWdjbVYwZFhKdUlIdGNiaUFnSUNBZ0lDQWdkbUZzZFdVc1hHNGdJQ0FnSUNBZ0lIUjVjR1U2SUY5MGVYQmxMRnh1SUNBZ0lDQWdJQ0JqYjIxdFpXNTBPaUJ5WlM1amIyMXRaVzUwTEZ4dUlDQWdJQ0FnSUNCeVlXNW5aVG9nVzI5bVpuTmxkQ3dnZG1Gc2RXVkZibVFzSUhKbExtOW1abk5sZEYxY2JpQWdJQ0I5TzF4dWZWeHVablZ1WTNScGIyNGdjR3hoYVc1V1lXeDFaU2h6YjNWeVkyVXNJRzl1UlhKeWIzSXBJSHRjYmlBZ0lDQnNaWFFnWW1Ga1EyaGhjaUE5SUNjbk8xeHVJQ0FnSUhOM2FYUmphQ0FvYzI5MWNtTmxXekJkS1NCN1hHNGdJQ0FnSUNBZ0lDOHFJR2x6ZEdGdVluVnNJR2xuYm05eVpTQnVaWGgwSUhOb2IzVnNaQ0J1YjNRZ2FHRndjR1Z1SUNvdlhHNGdJQ0FnSUNBZ0lHTmhjMlVnSjF4Y2RDYzZYRzRnSUNBZ0lDQWdJQ0FnSUNCaVlXUkRhR0Z5SUQwZ0oyRWdkR0ZpSUdOb1lYSmhZM1JsY2ljN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JpY21WaGF6dGNiaUFnSUNBZ0lDQWdZMkZ6WlNBbkxDYzZYRzRnSUNBZ0lDQWdJQ0FnSUNCaVlXUkRhR0Z5SUQwZ0oyWnNiM2NnYVc1a2FXTmhkRzl5SUdOb1lYSmhZM1JsY2lBc0p6dGNiaUFnSUNBZ0lDQWdJQ0FnSUdKeVpXRnJPMXh1SUNBZ0lDQWdJQ0JqWVhObElDY2xKenBjYmlBZ0lDQWdJQ0FnSUNBZ0lHSmhaRU5vWVhJZ1BTQW5aR2x5WldOMGFYWmxJR2x1WkdsallYUnZjaUJqYUdGeVlXTjBaWElnSlNjN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JpY21WaGF6dGNiaUFnSUNBZ0lDQWdZMkZ6WlNBbmZDYzZYRzRnSUNBZ0lDQWdJR05oYzJVZ0p6NG5PaUI3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmlZV1JEYUdGeUlEMGdZR0pzYjJOcklITmpZV3hoY2lCcGJtUnBZMkYwYjNJZ0pIdHpiM1Z5WTJWYk1GMTlZRHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHSnlaV0ZyTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lHTmhjMlVnSjBBbk9seHVJQ0FnSUNBZ0lDQmpZWE5sSUNkZ0p6b2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ1ltRmtRMmhoY2lBOUlHQnlaWE5sY25abFpDQmphR0Z5WVdOMFpYSWdKSHR6YjNWeVkyVmJNRjE5WUR0Y2JpQWdJQ0FnSUNBZ0lDQWdJR0p5WldGck8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVJQ0FnSUdsbUlDaGlZV1JEYUdGeUtWeHVJQ0FnSUNBZ0lDQnZia1Z5Y205eUtEQXNJQ2RDUVVSZlUwTkJURUZTWDFOVVFWSlVKeXdnWUZCc1lXbHVJSFpoYkhWbElHTmhibTV2ZENCemRHRnlkQ0IzYVhSb0lDUjdZbUZrUTJoaGNuMWdLVHRjYmlBZ0lDQnlaWFIxY200Z1ptOXNaRXhwYm1WektITnZkWEpqWlNrN1hHNTlYRzVtZFc1amRHbHZiaUJ6YVc1bmJHVlJkVzkwWldSV1lXeDFaU2h6YjNWeVkyVXNJRzl1UlhKeWIzSXBJSHRjYmlBZ0lDQnBaaUFvYzI5MWNtTmxXM052ZFhKalpTNXNaVzVuZEdnZ0xTQXhYU0FoUFQwZ1hDSW5YQ0lnZkh3Z2MyOTFjbU5sTG14bGJtZDBhQ0E5UFQwZ01TbGNiaUFnSUNBZ0lDQWdiMjVGY25KdmNpaHpiM1Z5WTJVdWJHVnVaM1JvTENBblRVbFRVMGxPUjE5RFNFRlNKeXdnWENKTmFYTnphVzVuSUdOc2IzTnBibWNnSjNGMWIzUmxYQ0lwTzF4dUlDQWdJSEpsZEhWeWJpQm1iMnhrVEdsdVpYTW9jMjkxY21ObExuTnNhV05sS0RFc0lDMHhLU2t1Y21Wd2JHRmpaU2d2Snljdlp5d2dYQ0luWENJcE8xeHVmVnh1Wm5WdVkzUnBiMjRnWm05c1pFeHBibVZ6S0hOdmRYSmpaU2tnZTF4dUlDQWdJQzhxS2x4dUlDQWdJQ0FxSUZSb1pTQnVaV2RoZEdsMlpTQnNiMjlyWW1Wb2FXNWtJR2hsY21VZ1lXNWtJR2x1SUhSb1pTQmdjbVZnSUZKbFowVjRjQ0JwY3lCMGIxeHVJQ0FnSUNBcUlIQnlaWFpsYm5RZ1kyRjFjMmx1WnlCaElIQnZiSGx1YjIxcFlXd2djMlZoY21Ob0lIUnBiV1VnYVc0Z1kyVnlkR0ZwYmlCallYTmxjeTVjYmlBZ0lDQWdLbHh1SUNBZ0lDQXFJRlJvWlNCMGNua3RZMkYwWTJnZ2FYTWdabTl5SUZOaFptRnlhU3dnZDJocFkyZ2daRzlsYzI0bmRDQnpkWEJ3YjNKMElIUm9hWE1nZVdWME9seHVJQ0FnSUNBcUlHaDBkSEJ6T2k4dlkyRnVhWFZ6WlM1amIyMHZhbk10Y21WblpYaHdMV3h2YjJ0aVpXaHBibVJjYmlBZ0lDQWdLaTljYmlBZ0lDQnNaWFFnWm1seWMzUXNJR3hwYm1VN1hHNGdJQ0FnZEhKNUlIdGNiaUFnSUNBZ0lDQWdabWx5YzNRZ1BTQnVaWGNnVW1WblJYaHdLQ2NvTGlvL0tTZy9QQ0ZiSUZ4Y2RGMHBXeUJjWEhSZEtseGNjajljWEc0bkxDQW5jM2tuS1R0Y2JpQWdJQ0FnSUNBZ2JHbHVaU0E5SUc1bGR5QlNaV2RGZUhBb0oxc2dYRngwWFNvb0xpby9LU2cvT2lnL1BDRmJJRnhjZEYwcFd5QmNYSFJkS2lrL1hGeHlQMXhjYmljc0lDZHplU2NwTzF4dUlDQWdJSDFjYmlBZ0lDQmpZWFJqYUNCN1hHNGdJQ0FnSUNBZ0lHWnBjbk4wSUQwZ0x5Z3VLajhwV3lCY1hIUmRLbHhjY2o5Y1hHNHZjM2s3WEc0Z0lDQWdJQ0FnSUd4cGJtVWdQU0F2V3lCY1hIUmRLaWd1S2o4cFd5QmNYSFJkS2x4Y2NqOWNYRzR2YzNrN1hHNGdJQ0FnZlZ4dUlDQWdJR3hsZENCdFlYUmphQ0E5SUdacGNuTjBMbVY0WldNb2MyOTFjbU5sS1R0Y2JpQWdJQ0JwWmlBb0lXMWhkR05vS1Z4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnYzI5MWNtTmxPMXh1SUNBZ0lHeGxkQ0J5WlhNZ1BTQnRZWFJqYUZzeFhUdGNiaUFnSUNCc1pYUWdjMlZ3SUQwZ0p5QW5PMXh1SUNBZ0lHeGxkQ0J3YjNNZ1BTQm1hWEp6ZEM1c1lYTjBTVzVrWlhnN1hHNGdJQ0FnYkdsdVpTNXNZWE4wU1c1a1pYZ2dQU0J3YjNNN1hHNGdJQ0FnZDJocGJHVWdLQ2h0WVhSamFDQTlJR3hwYm1VdVpYaGxZeWh6YjNWeVkyVXBLU2tnZTF4dUlDQWdJQ0FnSUNCcFppQW9iV0YwWTJoYk1WMGdQVDA5SUNjbktTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCcFppQW9jMlZ3SUQwOVBTQW5YRnh1SnlsY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYTWdLejBnYzJWd08xeHVJQ0FnSUNBZ0lDQWdJQ0FnWld4elpWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lITmxjQ0E5SUNkY1hHNG5PMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVnpJQ3M5SUhObGNDQXJJRzFoZEdOb1d6RmRPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2MyVndJRDBnSnlBbk8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJSEJ2Y3lBOUlHeHBibVV1YkdGemRFbHVaR1Y0TzF4dUlDQWdJSDFjYmlBZ0lDQmpiMjV6ZENCc1lYTjBJRDBnTDFzZ1hGeDBYU29vTGlvcEwzTjVPMXh1SUNBZ0lHeGhjM1F1YkdGemRFbHVaR1Y0SUQwZ2NHOXpPMXh1SUNBZ0lHMWhkR05vSUQwZ2JHRnpkQzVsZUdWaktITnZkWEpqWlNrN1hHNGdJQ0FnY21WMGRYSnVJSEpsY3lBcklITmxjQ0FySUNodFlYUmphRDh1V3pGZElEOC9JQ2NuS1R0Y2JuMWNibVoxYm1OMGFXOXVJR1J2ZFdKc1pWRjFiM1JsWkZaaGJIVmxLSE52ZFhKalpTd2diMjVGY25KdmNpa2dlMXh1SUNBZ0lHeGxkQ0J5WlhNZ1BTQW5KenRjYmlBZ0lDQm1iM0lnS0d4bGRDQnBJRDBnTVRzZ2FTQThJSE52ZFhKalpTNXNaVzVuZEdnZ0xTQXhPeUFySzJrcElIdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ1kyZ2dQU0J6YjNWeVkyVmJhVjA3WEc0Z0lDQWdJQ0FnSUdsbUlDaGphQ0E5UFQwZ0oxeGNjaWNnSmlZZ2MyOTFjbU5sVzJrZ0t5QXhYU0E5UFQwZ0oxeGNiaWNwWEc0Z0lDQWdJQ0FnSUNBZ0lDQmpiMjUwYVc1MVpUdGNiaUFnSUNBZ0lDQWdhV1lnS0dOb0lEMDlQU0FuWEZ4dUp5a2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ1kyOXVjM1FnZXlCbWIyeGtMQ0J2Wm1aelpYUWdmU0E5SUdadmJHUk9aWGRzYVc1bEtITnZkWEpqWlN3Z2FTazdYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYTWdLejBnWm05c1pEdGNiaUFnSUNBZ0lDQWdJQ0FnSUdrZ1BTQnZabVp6WlhRN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdaV3h6WlNCcFppQW9ZMmdnUFQwOUlDZGNYRnhjSnlrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnYkdWMElHNWxlSFFnUFNCemIzVnlZMlZiS3l0cFhUdGNiaUFnSUNBZ0lDQWdJQ0FnSUdOdmJuTjBJR05qSUQwZ1pYTmpZWEJsUTI5a1pYTmJibVY0ZEYwN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb1kyTXBYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVZ6SUNzOUlHTmpPMXh1SUNBZ0lDQWdJQ0FnSUNBZ1pXeHpaU0JwWmlBb2JtVjRkQ0E5UFQwZ0oxeGNiaWNwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBdkx5QnphMmx3SUdWelkyRndaV1FnYm1WM2JHbHVaWE1zSUdKMWRDQnpkR2xzYkNCMGNtbHRJSFJvWlNCbWIyeHNiM2RwYm1jZ2JHbHVaVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRzVsZUhRZ1BTQnpiM1Z5WTJWYmFTQXJJREZkTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhkb2FXeGxJQ2h1WlhoMElEMDlQU0FuSUNjZ2ZId2dibVY0ZENBOVBUMGdKMXhjZENjcFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRzVsZUhRZ1BTQnpiM1Z5WTJWYkt5dHBJQ3NnTVYwN1hHNGdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ0lDQmxiSE5sSUdsbUlDaHVaWGgwSUQwOVBTQW5YRnh5SnlBbUppQnpiM1Z5WTJWYmFTQXJJREZkSUQwOVBTQW5YRnh1SnlrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDOHZJSE5yYVhBZ1pYTmpZWEJsWkNCRFVreEdJRzVsZDJ4cGJtVnpMQ0JpZFhRZ2MzUnBiR3dnZEhKcGJTQjBhR1VnWm05c2JHOTNhVzVuSUd4cGJtVmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnVaWGgwSUQwZ2MyOTFjbU5sV3lzcmFTQXJJREZkTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhkb2FXeGxJQ2h1WlhoMElEMDlQU0FuSUNjZ2ZId2dibVY0ZENBOVBUMGdKMXhjZENjcFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRzVsZUhRZ1BTQnpiM1Z5WTJWYkt5dHBJQ3NnTVYwN1hHNGdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ0lDQmxiSE5sSUdsbUlDaHVaWGgwSUQwOVBTQW5lQ2NnZkh3Z2JtVjRkQ0E5UFQwZ0ozVW5JSHg4SUc1bGVIUWdQVDA5SUNkVkp5a2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR052Ym5OMElHeGxibWQwYUNBOUlIc2dlRG9nTWl3Z2RUb2dOQ3dnVlRvZ09DQjlXMjVsZUhSZE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxjeUFyUFNCd1lYSnpaVU5vWVhKRGIyUmxLSE52ZFhKalpTd2dhU0FySURFc0lHeGxibWQwYUN3Z2IyNUZjbkp2Y2lrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FTQXJQU0JzWlc1bmRHZzdYRzRnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdJQ0JsYkhObElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCeVlYY2dQU0J6YjNWeVkyVXVjM1ZpYzNSeUtHa2dMU0F4TENBeUtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnZia1Z5Y205eUtHa2dMU0F4TENBblFrRkVYMFJSWDBWVFEwRlFSU2NzSUdCSmJuWmhiR2xrSUdWelkyRndaU0J6WlhGMVpXNWpaU0FrZTNKaGQzMWdLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhNZ0t6MGdjbUYzTzF4dUlDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUdWc2MyVWdhV1lnS0dOb0lEMDlQU0FuSUNjZ2ZId2dZMmdnUFQwOUlDZGNYSFFuS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0F2THlCMGNtbHRJSFJ5WVdsc2FXNW5JSGRvYVhSbGMzQmhZMlZjYmlBZ0lDQWdJQ0FnSUNBZ0lHTnZibk4wSUhkelUzUmhjblFnUFNCcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnYkdWMElHNWxlSFFnUFNCemIzVnlZMlZiYVNBcklERmRPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2QyaHBiR1VnS0c1bGVIUWdQVDA5SUNjZ0p5QjhmQ0J1WlhoMElEMDlQU0FuWEZ4MEp5bGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnVaWGgwSUQwZ2MyOTFjbU5sV3lzcmFTQXJJREZkTzF4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lnS0c1bGVIUWdJVDA5SUNkY1hHNG5JQ1ltSUNFb2JtVjRkQ0E5UFQwZ0oxeGNjaWNnSmlZZ2MyOTFjbU5sVzJrZ0t5QXlYU0E5UFQwZ0oxeGNiaWNwS1Z4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGN5QXJQU0JwSUQ0Z2QzTlRkR0Z5ZENBL0lITnZkWEpqWlM1emJHbGpaU2gzYzFOMFlYSjBMQ0JwSUNzZ01Ta2dPaUJqYUR0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJSEpsY3lBclBTQmphRHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ0lDQnBaaUFvYzI5MWNtTmxXM052ZFhKalpTNXNaVzVuZEdnZ0xTQXhYU0FoUFQwZ0oxd2lKeUI4ZkNCemIzVnlZMlV1YkdWdVozUm9JRDA5UFNBeEtWeHVJQ0FnSUNBZ0lDQnZia1Z5Y205eUtITnZkWEpqWlM1c1pXNW5kR2dzSUNkTlNWTlRTVTVIWDBOSVFWSW5MQ0FuVFdsemMybHVaeUJqYkc5emFXNW5JRndpY1hWdmRHVW5LVHRjYmlBZ0lDQnlaWFIxY200Z2NtVnpPMXh1ZlZ4dUx5b3FYRzRnS2lCR2IyeGtJR0VnYzJsdVoyeGxJRzVsZDJ4cGJtVWdhVzUwYnlCaElITndZV05sTENCdGRXeDBhWEJzWlNCdVpYZHNhVzVsY3lCMGJ5Qk9JQzBnTVNCdVpYZHNhVzVsY3k1Y2JpQXFJRkJ5WlhOMWJXVnpJR0J6YjNWeVkyVmJiMlptYzJWMFhTQTlQVDBnSjF4Y2JpZGdYRzRnS2k5Y2JtWjFibU4wYVc5dUlHWnZiR1JPWlhkc2FXNWxLSE52ZFhKalpTd2diMlptYzJWMEtTQjdYRzRnSUNBZ2JHVjBJR1p2YkdRZ1BTQW5KenRjYmlBZ0lDQnNaWFFnWTJnZ1BTQnpiM1Z5WTJWYmIyWm1jMlYwSUNzZ01WMDdYRzRnSUNBZ2QyaHBiR1VnS0dOb0lEMDlQU0FuSUNjZ2ZId2dZMmdnUFQwOUlDZGNYSFFuSUh4OElHTm9JRDA5UFNBblhGeHVKeUI4ZkNCamFDQTlQVDBnSjF4Y2NpY3BJSHRjYmlBZ0lDQWdJQ0FnYVdZZ0tHTm9JRDA5UFNBblhGeHlKeUFtSmlCemIzVnlZMlZiYjJabWMyVjBJQ3NnTWwwZ0lUMDlJQ2RjWEc0bktWeHVJQ0FnSUNBZ0lDQWdJQ0FnWW5KbFlXczdYRzRnSUNBZ0lDQWdJR2xtSUNoamFDQTlQVDBnSjF4Y2JpY3BYRzRnSUNBZ0lDQWdJQ0FnSUNCbWIyeGtJQ3M5SUNkY1hHNG5PMXh1SUNBZ0lDQWdJQ0J2Wm1aelpYUWdLejBnTVR0Y2JpQWdJQ0FnSUNBZ1kyZ2dQU0J6YjNWeVkyVmJiMlptYzJWMElDc2dNVjA3WEc0Z0lDQWdmVnh1SUNBZ0lHbG1JQ2doWm05c1pDbGNiaUFnSUNBZ0lDQWdabTlzWkNBOUlDY2dKenRjYmlBZ0lDQnlaWFIxY200Z2V5Qm1iMnhrTENCdlptWnpaWFFnZlR0Y2JuMWNibU52Ym5OMElHVnpZMkZ3WlVOdlpHVnpJRDBnZTF4dUlDQWdJQ2N3SnpvZ0oxeGNNQ2NzSUM4dklHNTFiR3dnWTJoaGNtRmpkR1Z5WEc0Z0lDQWdZVG9nSjF4Y2VEQTNKeXdnTHk4Z1ltVnNiQ0JqYUdGeVlXTjBaWEpjYmlBZ0lDQmlPaUFuWEZ4aUp5d2dMeThnWW1GamEzTndZV05sWEc0Z0lDQWdaVG9nSjF4Y2VERmlKeXdnTHk4Z1pYTmpZWEJsSUdOb1lYSmhZM1JsY2x4dUlDQWdJR1k2SUNkY1hHWW5MQ0F2THlCbWIzSnRJR1psWldSY2JpQWdJQ0J1T2lBblhGeHVKeXdnTHk4Z2JHbHVaU0JtWldWa1hHNGdJQ0FnY2pvZ0oxeGNjaWNzSUM4dklHTmhjbkpwWVdkbElISmxkSFZ5Ymx4dUlDQWdJSFE2SUNkY1hIUW5MQ0F2THlCb2IzSnBlbTl1ZEdGc0lIUmhZbHh1SUNBZ0lIWTZJQ2RjWEhZbkxDQXZMeUIyWlhKMGFXTmhiQ0IwWVdKY2JpQWdJQ0JPT2lBblhGeDFNREE0TlNjc0lDOHZJRlZ1YVdOdlpHVWdibVY0ZENCc2FXNWxYRzRnSUNBZ1h6b2dKMXhjZFRBd1lUQW5MQ0F2THlCVmJtbGpiMlJsSUc1dmJpMWljbVZoYTJsdVp5QnpjR0ZqWlZ4dUlDQWdJRXc2SUNkY1hIVXlNREk0Snl3Z0x5OGdWVzVwWTI5a1pTQnNhVzVsSUhObGNHRnlZWFJ2Y2x4dUlDQWdJRkE2SUNkY1hIVXlNREk1Snl3Z0x5OGdWVzVwWTI5a1pTQndZWEpoWjNKaGNHZ2djMlZ3WVhKaGRHOXlYRzRnSUNBZ0p5QW5PaUFuSUNjc1hHNGdJQ0FnSjF3aUp6b2dKMXdpSnl4Y2JpQWdJQ0FuTHljNklDY3ZKeXhjYmlBZ0lDQW5YRnhjWENjNklDZGNYRnhjSnl4Y2JpQWdJQ0FuWEZ4MEp6b2dKMXhjZENkY2JuMDdYRzVtZFc1amRHbHZiaUJ3WVhKelpVTm9ZWEpEYjJSbEtITnZkWEpqWlN3Z2IyWm1jMlYwTENCc1pXNW5kR2dzSUc5dVJYSnliM0lwSUh0Y2JpQWdJQ0JqYjI1emRDQmpZeUE5SUhOdmRYSmpaUzV6ZFdKemRISW9iMlptYzJWMExDQnNaVzVuZEdncE8xeHVJQ0FnSUdOdmJuTjBJRzlySUQwZ1kyTXViR1Z1WjNSb0lEMDlQU0JzWlc1bmRHZ2dKaVlnTDE1Yk1DMDVZUzFtUVMxR1hTc2tMeTUwWlhOMEtHTmpLVHRjYmlBZ0lDQmpiMjV6ZENCamIyUmxJRDBnYjJzZ1B5QndZWEp6WlVsdWRDaGpZeXdnTVRZcElEb2dUbUZPTzF4dUlDQWdJR2xtSUNocGMwNWhUaWhqYjJSbEtTa2dlMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQnlZWGNnUFNCemIzVnlZMlV1YzNWaWMzUnlLRzltWm5ObGRDQXRJRElzSUd4bGJtZDBhQ0FySURJcE8xeHVJQ0FnSUNBZ0lDQnZia1Z5Y205eUtHOW1abk5sZENBdElESXNJQ2RDUVVSZlJGRmZSVk5EUVZCRkp5d2dZRWx1ZG1Gc2FXUWdaWE5qWVhCbElITmxjWFZsYm1ObElDUjdjbUYzZldBcE8xeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2NtRjNPMXh1SUNBZ0lIMWNiaUFnSUNCeVpYUjFjbTRnVTNSeWFXNW5MbVp5YjIxRGIyUmxVRzlwYm5Rb1kyOWtaU2s3WEc1OVhHNWNibVY0Y0c5eWRDQjdJSEpsYzI5c2RtVkdiRzkzVTJOaGJHRnlJSDA3WEc0aUxDQWlhVzF3YjNKMElIc2dhWE5UWTJGc1lYSXNJRk5EUVV4QlVpQjlJR1p5YjIwZ0p5NHVMMjV2WkdWekwybGtaVzUwYVhSNUxtcHpKenRjYm1sdGNHOXlkQ0I3SUZOallXeGhjaUI5SUdaeWIyMGdKeTR1TDI1dlpHVnpMMU5qWVd4aGNpNXFjeWM3WEc1cGJYQnZjblFnZXlCeVpYTnZiSFpsUW14dlkydFRZMkZzWVhJZ2ZTQm1jbTl0SUNjdUwzSmxjMjlzZG1VdFlteHZZMnN0YzJOaGJHRnlMbXB6Snp0Y2JtbHRjRzl5ZENCN0lISmxjMjlzZG1WR2JHOTNVMk5oYkdGeUlIMGdabkp2YlNBbkxpOXlaWE52YkhabExXWnNiM2N0YzJOaGJHRnlMbXB6Snp0Y2JseHVablZ1WTNScGIyNGdZMjl0Y0c5elpWTmpZV3hoY2loamRIZ3NJSFJ2YTJWdUxDQjBZV2RVYjJ0bGJpd2diMjVGY25KdmNpa2dlMXh1SUNBZ0lHTnZibk4wSUhzZ2RtRnNkV1VzSUhSNWNHVXNJR052YlcxbGJuUXNJSEpoYm1kbElIMGdQU0IwYjJ0bGJpNTBlWEJsSUQwOVBTQW5ZbXh2WTJzdGMyTmhiR0Z5SjF4dUlDQWdJQ0FnSUNBL0lISmxjMjlzZG1WQ2JHOWphMU5qWVd4aGNpaGpkSGdzSUhSdmEyVnVMQ0J2YmtWeWNtOXlLVnh1SUNBZ0lDQWdJQ0E2SUhKbGMyOXNkbVZHYkc5M1UyTmhiR0Z5S0hSdmEyVnVMQ0JqZEhndWIzQjBhVzl1Y3k1emRISnBZM1FzSUc5dVJYSnliM0lwTzF4dUlDQWdJR052Ym5OMElIUmhaMDVoYldVZ1BTQjBZV2RVYjJ0bGJseHVJQ0FnSUNBZ0lDQS9JR04wZUM1a2FYSmxZM1JwZG1WekxuUmhaMDVoYldVb2RHRm5WRzlyWlc0dWMyOTFjbU5sTENCdGMyY2dQVDRnYjI1RmNuSnZjaWgwWVdkVWIydGxiaXdnSjFSQlIxOVNSVk5QVEZaRlgwWkJTVXhGUkNjc0lHMXpaeWtwWEc0Z0lDQWdJQ0FnSURvZ2JuVnNiRHRjYmlBZ0lDQnNaWFFnZEdGbk8xeHVJQ0FnSUdsbUlDaGpkSGd1YjNCMGFXOXVjeTV6ZEhKcGJtZExaWGx6SUNZbUlHTjBlQzVoZEV0bGVTa2dlMXh1SUNBZ0lDQWdJQ0IwWVdjZ1BTQmpkSGd1YzJOb1pXMWhXMU5EUVV4QlVsMDdYRzRnSUNBZ2ZWeHVJQ0FnSUdWc2MyVWdhV1lnS0hSaFowNWhiV1VwWEc0Z0lDQWdJQ0FnSUhSaFp5QTlJR1pwYm1SVFkyRnNZWEpVWVdkQ2VVNWhiV1VvWTNSNExuTmphR1Z0WVN3Z2RtRnNkV1VzSUhSaFowNWhiV1VzSUhSaFoxUnZhMlZ1TENCdmJrVnljbTl5S1R0Y2JpQWdJQ0JsYkhObElHbG1JQ2gwYjJ0bGJpNTBlWEJsSUQwOVBTQW5jMk5oYkdGeUp5bGNiaUFnSUNBZ0lDQWdkR0ZuSUQwZ1ptbHVaRk5qWVd4aGNsUmhaMEo1VkdWemRDaGpkSGdzSUhaaGJIVmxMQ0IwYjJ0bGJpd2diMjVGY25KdmNpazdYRzRnSUNBZ1pXeHpaVnh1SUNBZ0lDQWdJQ0IwWVdjZ1BTQmpkSGd1YzJOb1pXMWhXMU5EUVV4QlVsMDdYRzRnSUNBZ2JHVjBJSE5qWVd4aGNqdGNiaUFnSUNCMGNua2dlMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQnlaWE1nUFNCMFlXY3VjbVZ6YjJ4MlpTaDJZV3gxWlN3Z2JYTm5JRDArSUc5dVJYSnliM0lvZEdGblZHOXJaVzRnUHo4Z2RHOXJaVzRzSUNkVVFVZGZVa1ZUVDB4V1JWOUdRVWxNUlVRbkxDQnRjMmNwTENCamRIZ3ViM0IwYVc5dWN5azdYRzRnSUNBZ0lDQWdJSE5qWVd4aGNpQTlJR2x6VTJOaGJHRnlLSEpsY3lrZ1B5QnlaWE1nT2lCdVpYY2dVMk5oYkdGeUtISmxjeWs3WEc0Z0lDQWdmVnh1SUNBZ0lHTmhkR05vSUNobGNuSnZjaWtnZTF4dUlDQWdJQ0FnSUNCamIyNXpkQ0J0YzJjZ1BTQmxjbkp2Y2lCcGJuTjBZVzVqWlc5bUlFVnljbTl5SUQ4Z1pYSnliM0l1YldWemMyRm5aU0E2SUZOMGNtbHVaeWhsY25KdmNpazdYRzRnSUNBZ0lDQWdJRzl1UlhKeWIzSW9kR0ZuVkc5clpXNGdQejhnZEc5clpXNHNJQ2RVUVVkZlVrVlRUMHhXUlY5R1FVbE1SVVFuTENCdGMyY3BPMXh1SUNBZ0lDQWdJQ0J6WTJGc1lYSWdQU0J1WlhjZ1UyTmhiR0Z5S0haaGJIVmxLVHRjYmlBZ0lDQjlYRzRnSUNBZ2MyTmhiR0Z5TG5KaGJtZGxJRDBnY21GdVoyVTdYRzRnSUNBZ2MyTmhiR0Z5TG5OdmRYSmpaU0E5SUhaaGJIVmxPMXh1SUNBZ0lHbG1JQ2gwZVhCbEtWeHVJQ0FnSUNBZ0lDQnpZMkZzWVhJdWRIbHdaU0E5SUhSNWNHVTdYRzRnSUNBZ2FXWWdLSFJoWjA1aGJXVXBYRzRnSUNBZ0lDQWdJSE5qWVd4aGNpNTBZV2NnUFNCMFlXZE9ZVzFsTzF4dUlDQWdJR2xtSUNoMFlXY3VabTl5YldGMEtWeHVJQ0FnSUNBZ0lDQnpZMkZzWVhJdVptOXliV0YwSUQwZ2RHRm5MbVp2Y20xaGREdGNiaUFnSUNCcFppQW9ZMjl0YldWdWRDbGNiaUFnSUNBZ0lDQWdjMk5oYkdGeUxtTnZiVzFsYm5RZ1BTQmpiMjF0Wlc1ME8xeHVJQ0FnSUhKbGRIVnliaUJ6WTJGc1lYSTdYRzU5WEc1bWRXNWpkR2x2YmlCbWFXNWtVMk5oYkdGeVZHRm5RbmxPWVcxbEtITmphR1Z0WVN3Z2RtRnNkV1VzSUhSaFowNWhiV1VzSUhSaFoxUnZhMlZ1TENCdmJrVnljbTl5S1NCN1hHNGdJQ0FnYVdZZ0tIUmhaMDVoYldVZ1BUMDlJQ2NoSnlsY2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUhOamFHVnRZVnRUUTBGTVFWSmRPeUF2THlCdWIyNHRjM0JsWTJsbWFXTWdkR0ZuWEc0Z0lDQWdZMjl1YzNRZ2JXRjBZMmhYYVhSb1ZHVnpkQ0E5SUZ0ZE8xeHVJQ0FnSUdadmNpQW9ZMjl1YzNRZ2RHRm5JRzltSUhOamFHVnRZUzUwWVdkektTQjdYRzRnSUNBZ0lDQWdJR2xtSUNnaGRHRm5MbU52Ykd4bFkzUnBiMjRnSmlZZ2RHRm5MblJoWnlBOVBUMGdkR0ZuVG1GdFpTa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLSFJoWnk1a1pXWmhkV3gwSUNZbUlIUmhaeTUwWlhOMEtWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHMWhkR05vVjJsMGFGUmxjM1F1Y0hWemFDaDBZV2NwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdaV3h6WlZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUIwWVdjN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJQ0FnWm05eUlDaGpiMjV6ZENCMFlXY2diMllnYldGMFkyaFhhWFJvVkdWemRDbGNiaUFnSUNBZ0lDQWdhV1lnS0hSaFp5NTBaWE4wUHk1MFpYTjBLSFpoYkhWbEtTbGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUIwWVdjN1hHNGdJQ0FnWTI5dWMzUWdhM1FnUFNCelkyaGxiV0V1YTI1dmQyNVVZV2R6VzNSaFowNWhiV1ZkTzF4dUlDQWdJR2xtSUNocmRDQW1KaUFoYTNRdVkyOXNiR1ZqZEdsdmJpa2dlMXh1SUNBZ0lDQWdJQ0F2THlCRmJuTjFjbVVnZEdoaGRDQjBhR1VnYTI1dmQyNGdkR0ZuSUdseklHRjJZV2xzWVdKc1pTQm1iM0lnYzNSeWFXNW5hV1o1YVc1bkxGeHVJQ0FnSUNBZ0lDQXZMeUJpZFhRZ1pHOWxjeUJ1YjNRZ1oyVjBJSFZ6WldRZ1lua2daR1ZtWVhWc2RDNWNiaUFnSUNBZ0lDQWdjMk5vWlcxaExuUmhaM011Y0hWemFDaFBZbXBsWTNRdVlYTnphV2R1S0h0OUxDQnJkQ3dnZXlCa1pXWmhkV3gwT2lCbVlXeHpaU3dnZEdWemREb2dkVzVrWldacGJtVmtJSDBwS1R0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUd0ME8xeHVJQ0FnSUgxY2JpQWdJQ0J2YmtWeWNtOXlLSFJoWjFSdmEyVnVMQ0FuVkVGSFgxSkZVMDlNVmtWZlJrRkpURVZFSnl3Z1lGVnVjbVZ6YjJ4MlpXUWdkR0ZuT2lBa2UzUmhaMDVoYldWOVlDd2dkR0ZuVG1GdFpTQWhQVDBnSjNSaFp6cDVZVzFzTG05eVp5d3lNREF5T25OMGNpY3BPMXh1SUNBZ0lISmxkSFZ5YmlCelkyaGxiV0ZiVTBOQlRFRlNYVHRjYm4xY2JtWjFibU4wYVc5dUlHWnBibVJUWTJGc1lYSlVZV2RDZVZSbGMzUW9leUJoZEV0bGVTd2daR2x5WldOMGFYWmxjeXdnYzJOb1pXMWhJSDBzSUhaaGJIVmxMQ0IwYjJ0bGJpd2diMjVGY25KdmNpa2dlMXh1SUNBZ0lHTnZibk4wSUhSaFp5QTlJSE5qYUdWdFlTNTBZV2R6TG1acGJtUW9kR0ZuSUQwK0lDaDBZV2N1WkdWbVlYVnNkQ0E5UFQwZ2RISjFaU0I4ZkNBb1lYUkxaWGtnSmlZZ2RHRm5MbVJsWm1GMWJIUWdQVDA5SUNkclpYa25LU2tnSmlaY2JpQWdJQ0FnSUNBZ2RHRm5MblJsYzNRL0xuUmxjM1FvZG1Gc2RXVXBLU0I4ZkNCelkyaGxiV0ZiVTBOQlRFRlNYVHRjYmlBZ0lDQnBaaUFvYzJOb1pXMWhMbU52YlhCaGRDa2dlMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQmpiMjF3WVhRZ1BTQnpZMmhsYldFdVkyOXRjR0YwTG1acGJtUW9kR0ZuSUQwK0lIUmhaeTVrWldaaGRXeDBJQ1ltSUhSaFp5NTBaWE4wUHk1MFpYTjBLSFpoYkhWbEtTa2dQejljYmlBZ0lDQWdJQ0FnSUNBZ0lITmphR1Z0WVZ0VFEwRk1RVkpkTzF4dUlDQWdJQ0FnSUNCcFppQW9kR0ZuTG5SaFp5QWhQVDBnWTI5dGNHRjBMblJoWnlrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnWTI5dWMzUWdkSE1nUFNCa2FYSmxZM1JwZG1WekxuUmhaMU4wY21sdVp5aDBZV2N1ZEdGbktUdGNiaUFnSUNBZ0lDQWdJQ0FnSUdOdmJuTjBJR056SUQwZ1pHbHlaV04wYVhabGN5NTBZV2RUZEhKcGJtY29ZMjl0Y0dGMExuUmhaeWs3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCdGMyY2dQU0JnVm1Gc2RXVWdiV0Y1SUdKbElIQmhjbk5sWkNCaGN5QmxhWFJvWlhJZ0pIdDBjMzBnYjNJZ0pIdGpjMzFnTzF4dUlDQWdJQ0FnSUNBZ0lDQWdiMjVGY25KdmNpaDBiMnRsYml3Z0oxUkJSMTlTUlZOUFRGWkZYMFpCU1V4RlJDY3NJRzF6Wnl3Z2RISjFaU2s3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlIUmhaenRjYm4xY2JseHVaWGh3YjNKMElIc2dZMjl0Y0c5elpWTmpZV3hoY2lCOU8xeHVJaXdnSW1aMWJtTjBhVzl1SUdWdGNIUjVVMk5oYkdGeVVHOXphWFJwYjI0b2IyWm1jMlYwTENCaVpXWnZjbVVzSUhCdmN5a2dlMXh1SUNBZ0lHbG1JQ2hpWldadmNtVXBJSHRjYmlBZ0lDQWdJQ0FnYVdZZ0tIQnZjeUE5UFQwZ2JuVnNiQ2xjYmlBZ0lDQWdJQ0FnSUNBZ0lIQnZjeUE5SUdKbFptOXlaUzVzWlc1bmRHZzdYRzRnSUNBZ0lDQWdJR1p2Y2lBb2JHVjBJR2tnUFNCd2IzTWdMU0F4T3lCcElENDlJREE3SUMwdGFTa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2JHVjBJSE4wSUQwZ1ltVm1iM0psVzJsZE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnYzNkcGRHTm9JQ2h6ZEM1MGVYQmxLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWTJGelpTQW5jM0JoWTJVbk9seHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHTmhjMlVnSjJOdmJXMWxiblFuT2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdOaGMyVWdKMjVsZDJ4cGJtVW5PbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCdlptWnpaWFFnTFQwZ2MzUXVjMjkxY21ObExteGxibWQwYUR0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZMjl1ZEdsdWRXVTdYRzRnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdJQ0F2THlCVVpXTm9ibWxqWVd4c2VTd2dZVzRnWlcxd2RIa2djMk5oYkdGeUlHbHpJR2x0YldWa2FXRjBaV3g1SUdGbWRHVnlJSFJvWlNCc1lYTjBJRzV2YmkxbGJYQjBlVnh1SUNBZ0lDQWdJQ0FnSUNBZ0x5OGdibTlrWlN3Z1luVjBJR2wwSjNNZ2JXOXlaU0IxYzJWbWRXd2dkRzhnY0d4aFkyVWdhWFFnWVdaMFpYSWdZVzU1SUhkb2FYUmxjM0JoWTJVdVhHNGdJQ0FnSUNBZ0lDQWdJQ0J6ZENBOUlHSmxabTl5WlZzcksybGRPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2QyaHBiR1VnS0hOMFB5NTBlWEJsSUQwOVBTQW5jM0JoWTJVbktTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdiMlptYzJWMElDczlJSE4wTG5OdmRYSmpaUzVzWlc1bmRHZzdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjM1FnUFNCaVpXWnZjbVZiS3l0cFhUdGNiaUFnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQWdJR0p5WldGck8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUJ2Wm1aelpYUTdYRzU5WEc1Y2JtVjRjRzl5ZENCN0lHVnRjSFI1VTJOaGJHRnlVRzl6YVhScGIyNGdmVHRjYmlJc0lDSnBiWEJ2Y25RZ2V5QkJiR2xoY3lCOUlHWnliMjBnSnk0dUwyNXZaR1Z6TDBGc2FXRnpMbXB6Snp0Y2JtbHRjRzl5ZENCN0lHbHpVMk5oYkdGeUlIMGdabkp2YlNBbkxpNHZibTlrWlhNdmFXUmxiblJwZEhrdWFuTW5PMXh1YVcxd2IzSjBJSHNnWTI5dGNHOXpaVU52Ykd4bFkzUnBiMjRnZlNCbWNtOXRJQ2N1TDJOdmJYQnZjMlV0WTI5c2JHVmpkR2x2Ymk1cWN5YzdYRzVwYlhCdmNuUWdleUJqYjIxd2IzTmxVMk5oYkdGeUlIMGdabkp2YlNBbkxpOWpiMjF3YjNObExYTmpZV3hoY2k1cWN5YzdYRzVwYlhCdmNuUWdleUJ5WlhOdmJIWmxSVzVrSUgwZ1puSnZiU0FuTGk5eVpYTnZiSFpsTFdWdVpDNXFjeWM3WEc1cGJYQnZjblFnZXlCbGJYQjBlVk5qWVd4aGNsQnZjMmwwYVc5dUlIMGdabkp2YlNBbkxpOTFkR2xzTFdWdGNIUjVMWE5qWVd4aGNpMXdiM05wZEdsdmJpNXFjeWM3WEc1Y2JtTnZibk4wSUVOT0lEMGdleUJqYjIxd2IzTmxUbTlrWlN3Z1kyOXRjRzl6WlVWdGNIUjVUbTlrWlNCOU8xeHVablZ1WTNScGIyNGdZMjl0Y0c5elpVNXZaR1VvWTNSNExDQjBiMnRsYml3Z2NISnZjSE1zSUc5dVJYSnliM0lwSUh0Y2JpQWdJQ0JqYjI1emRDQmhkRXRsZVNBOUlHTjBlQzVoZEV0bGVUdGNiaUFnSUNCamIyNXpkQ0I3SUhOd1lXTmxRbVZtYjNKbExDQmpiMjF0Wlc1MExDQmhibU5vYjNJc0lIUmhaeUI5SUQwZ2NISnZjSE03WEc0Z0lDQWdiR1YwSUc1dlpHVTdYRzRnSUNBZ2JHVjBJR2x6VTNKalZHOXJaVzRnUFNCMGNuVmxPMXh1SUNBZ0lITjNhWFJqYUNBb2RHOXJaVzR1ZEhsd1pTa2dlMXh1SUNBZ0lDQWdJQ0JqWVhObElDZGhiR2xoY3ljNlhHNGdJQ0FnSUNBZ0lDQWdJQ0J1YjJSbElEMGdZMjl0Y0c5elpVRnNhV0Z6S0dOMGVDd2dkRzlyWlc0c0lHOXVSWEp5YjNJcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tHRnVZMmh2Y2lCOGZDQjBZV2NwWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYjI1RmNuSnZjaWgwYjJ0bGJpd2dKMEZNU1VGVFgxQlNUMUJUSnl3Z0owRnVJR0ZzYVdGeklHNXZaR1VnYlhWemRDQnViM1FnYzNCbFkybG1lU0JoYm5rZ2NISnZjR1Z5ZEdsbGN5Y3BPMXh1SUNBZ0lDQWdJQ0FnSUNBZ1luSmxZV3M3WEc0Z0lDQWdJQ0FnSUdOaGMyVWdKM05qWVd4aGNpYzZYRzRnSUNBZ0lDQWdJR05oYzJVZ0ozTnBibWRzWlMxeGRXOTBaV1F0YzJOaGJHRnlKenBjYmlBZ0lDQWdJQ0FnWTJGelpTQW5aRzkxWW14bExYRjFiM1JsWkMxelkyRnNZWEluT2x4dUlDQWdJQ0FnSUNCallYTmxJQ2RpYkc5amF5MXpZMkZzWVhJbk9seHVJQ0FnSUNBZ0lDQWdJQ0FnYm05a1pTQTlJR052YlhCdmMyVlRZMkZzWVhJb1kzUjRMQ0IwYjJ0bGJpd2dkR0ZuTENCdmJrVnljbTl5S1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJR2xtSUNoaGJtTm9iM0lwWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYm05a1pTNWhibU5vYjNJZ1BTQmhibU5vYjNJdWMyOTFjbU5sTG5OMVluTjBjbWx1WnlneEtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUdKeVpXRnJPMXh1SUNBZ0lDQWdJQ0JqWVhObElDZGliRzlqYXkxdFlYQW5PbHh1SUNBZ0lDQWdJQ0JqWVhObElDZGliRzlqYXkxelpYRW5PbHh1SUNBZ0lDQWdJQ0JqWVhObElDZG1iRzkzTFdOdmJHeGxZM1JwYjI0bk9seHVJQ0FnSUNBZ0lDQWdJQ0FnYm05a1pTQTlJR052YlhCdmMyVkRiMnhzWldOMGFXOXVLRU5PTENCamRIZ3NJSFJ2YTJWdUxDQndjbTl3Y3l3Z2IyNUZjbkp2Y2lrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb1lXNWphRzl5S1Z4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUc1dlpHVXVZVzVqYUc5eUlEMGdZVzVqYUc5eUxuTnZkWEpqWlM1emRXSnpkSEpwYm1jb01TazdYRzRnSUNBZ0lDQWdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQWdJQ0FnWkdWbVlYVnNkRG9nZTF4dUlDQWdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ2JXVnpjMkZuWlNBOUlIUnZhMlZ1TG5SNWNHVWdQVDA5SUNkbGNuSnZjaWRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0EvSUhSdmEyVnVMbTFsYzNOaFoyVmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQTZJR0JWYm5OMWNIQnZjblJsWkNCMGIydGxiaUFvZEhsd1pUb2dKSHQwYjJ0bGJpNTBlWEJsZlNsZ08xeHVJQ0FnSUNBZ0lDQWdJQ0FnYjI1RmNuSnZjaWgwYjJ0bGJpd2dKMVZPUlZoUVJVTlVSVVJmVkU5TFJVNG5MQ0J0WlhOellXZGxLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHNXZaR1VnUFNCamIyMXdiM05sUlcxd2RIbE9iMlJsS0dOMGVDd2dkRzlyWlc0dWIyWm1jMlYwTENCMWJtUmxabWx1WldRc0lHNTFiR3dzSUhCeWIzQnpMQ0J2YmtWeWNtOXlLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHbHpVM0pqVkc5clpXNGdQU0JtWVd4elpUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lIMWNiaUFnSUNCcFppQW9ZVzVqYUc5eUlDWW1JRzV2WkdVdVlXNWphRzl5SUQwOVBTQW5KeWxjYmlBZ0lDQWdJQ0FnYjI1RmNuSnZjaWhoYm1Ob2IzSXNJQ2RDUVVSZlFVeEpRVk1uTENBblFXNWphRzl5SUdOaGJtNXZkQ0JpWlNCaGJpQmxiWEIwZVNCemRISnBibWNuS1R0Y2JpQWdJQ0JwWmlBb1lYUkxaWGtnSmlaY2JpQWdJQ0FnSUNBZ1kzUjRMbTl3ZEdsdmJuTXVjM1J5YVc1blMyVjVjeUFtSmx4dUlDQWdJQ0FnSUNBb0lXbHpVMk5oYkdGeUtHNXZaR1VwSUh4OFhHNGdJQ0FnSUNBZ0lDQWdJQ0IwZVhCbGIyWWdibTlrWlM1MllXeDFaU0FoUFQwZ0ozTjBjbWx1WnljZ2ZIeGNiaUFnSUNBZ0lDQWdJQ0FnSUNodWIyUmxMblJoWnlBbUppQnViMlJsTG5SaFp5QWhQVDBnSjNSaFp6cDVZVzFzTG05eVp5d3lNREF5T25OMGNpY3BLU2tnZTF4dUlDQWdJQ0FnSUNCamIyNXpkQ0J0YzJjZ1BTQW5WMmwwYUNCemRISnBibWRMWlhsekxDQmhiR3dnYTJWNWN5QnRkWE4wSUdKbElITjBjbWx1WjNNbk8xeHVJQ0FnSUNBZ0lDQnZia1Z5Y205eUtIUmhaeUEvUHlCMGIydGxiaXdnSjA1UFRsOVRWRkpKVGtkZlMwVlpKeXdnYlhObktUdGNiaUFnSUNCOVhHNGdJQ0FnYVdZZ0tITndZV05sUW1WbWIzSmxLVnh1SUNBZ0lDQWdJQ0J1YjJSbExuTndZV05sUW1WbWIzSmxJRDBnZEhKMVpUdGNiaUFnSUNCcFppQW9ZMjl0YldWdWRDa2dlMXh1SUNBZ0lDQWdJQ0JwWmlBb2RHOXJaVzR1ZEhsd1pTQTlQVDBnSjNOallXeGhjaWNnSmlZZ2RHOXJaVzR1YzI5MWNtTmxJRDA5UFNBbkp5bGNiaUFnSUNBZ0lDQWdJQ0FnSUc1dlpHVXVZMjl0YldWdWRDQTlJR052YlcxbGJuUTdYRzRnSUNBZ0lDQWdJR1ZzYzJWY2JpQWdJQ0FnSUNBZ0lDQWdJRzV2WkdVdVkyOXRiV1Z1ZEVKbFptOXlaU0E5SUdOdmJXMWxiblE3WEc0Z0lDQWdmVnh1SUNBZ0lDOHZJRUIwY3kxbGVIQmxZM1F0WlhKeWIzSWdWSGx3WlNCamFHVmphMmx1WnlCdGFYTnpaWE1nYldWaGJtbHVaeUJ2WmlCcGMxTnlZMVJ2YTJWdVhHNGdJQ0FnYVdZZ0tHTjBlQzV2Y0hScGIyNXpMbXRsWlhCVGIzVnlZMlZVYjJ0bGJuTWdKaVlnYVhOVGNtTlViMnRsYmlsY2JpQWdJQ0FnSUNBZ2JtOWtaUzV6Y21OVWIydGxiaUE5SUhSdmEyVnVPMXh1SUNBZ0lISmxkSFZ5YmlCdWIyUmxPMXh1ZlZ4dVpuVnVZM1JwYjI0Z1kyOXRjRzl6WlVWdGNIUjVUbTlrWlNoamRIZ3NJRzltWm5ObGRDd2dZbVZtYjNKbExDQndiM01zSUhzZ2MzQmhZMlZDWldadmNtVXNJR052YlcxbGJuUXNJR0Z1WTJodmNpd2dkR0ZuTENCbGJtUWdmU3dnYjI1RmNuSnZjaWtnZTF4dUlDQWdJR052Ym5OMElIUnZhMlZ1SUQwZ2UxeHVJQ0FnSUNBZ0lDQjBlWEJsT2lBbmMyTmhiR0Z5Snl4Y2JpQWdJQ0FnSUNBZ2IyWm1jMlYwT2lCbGJYQjBlVk5qWVd4aGNsQnZjMmwwYVc5dUtHOW1abk5sZEN3Z1ltVm1iM0psTENCd2IzTXBMRnh1SUNBZ0lDQWdJQ0JwYm1SbGJuUTZJQzB4TEZ4dUlDQWdJQ0FnSUNCemIzVnlZMlU2SUNjblhHNGdJQ0FnZlR0Y2JpQWdJQ0JqYjI1emRDQnViMlJsSUQwZ1kyOXRjRzl6WlZOallXeGhjaWhqZEhnc0lIUnZhMlZ1TENCMFlXY3NJRzl1UlhKeWIzSXBPMXh1SUNBZ0lHbG1JQ2hoYm1Ob2IzSXBJSHRjYmlBZ0lDQWdJQ0FnYm05a1pTNWhibU5vYjNJZ1BTQmhibU5vYjNJdWMyOTFjbU5sTG5OMVluTjBjbWx1WnlneEtUdGNiaUFnSUNBZ0lDQWdhV1lnS0c1dlpHVXVZVzVqYUc5eUlEMDlQU0FuSnlsY2JpQWdJQ0FnSUNBZ0lDQWdJRzl1UlhKeWIzSW9ZVzVqYUc5eUxDQW5Ra0ZFWDBGTVNVRlRKeXdnSjBGdVkyaHZjaUJqWVc1dWIzUWdZbVVnWVc0Z1pXMXdkSGtnYzNSeWFXNW5KeWs3WEc0Z0lDQWdmVnh1SUNBZ0lHbG1JQ2h6Y0dGalpVSmxabTl5WlNsY2JpQWdJQ0FnSUNBZ2JtOWtaUzV6Y0dGalpVSmxabTl5WlNBOUlIUnlkV1U3WEc0Z0lDQWdhV1lnS0dOdmJXMWxiblFwSUh0Y2JpQWdJQ0FnSUNBZ2JtOWtaUzVqYjIxdFpXNTBJRDBnWTI5dGJXVnVkRHRjYmlBZ0lDQWdJQ0FnYm05a1pTNXlZVzVuWlZzeVhTQTlJR1Z1WkR0Y2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlHNXZaR1U3WEc1OVhHNW1kVzVqZEdsdmJpQmpiMjF3YjNObFFXeHBZWE1vZXlCdmNIUnBiMjV6SUgwc0lIc2diMlptYzJWMExDQnpiM1Z5WTJVc0lHVnVaQ0I5TENCdmJrVnljbTl5S1NCN1hHNGdJQ0FnWTI5dWMzUWdZV3hwWVhNZ1BTQnVaWGNnUVd4cFlYTW9jMjkxY21ObExuTjFZbk4wY21sdVp5Z3hLU2s3WEc0Z0lDQWdhV1lnS0dGc2FXRnpMbk52ZFhKalpTQTlQVDBnSnljcFhHNGdJQ0FnSUNBZ0lHOXVSWEp5YjNJb2IyWm1jMlYwTENBblFrRkVYMEZNU1VGVEp5d2dKMEZzYVdGeklHTmhibTV2ZENCaVpTQmhiaUJsYlhCMGVTQnpkSEpwYm1jbktUdGNiaUFnSUNCcFppQW9ZV3hwWVhNdWMyOTFjbU5sTG1WdVpITlhhWFJvS0NjNkp5a3BYRzRnSUNBZ0lDQWdJRzl1UlhKeWIzSW9iMlptYzJWMElDc2djMjkxY21ObExteGxibWQwYUNBdElERXNJQ2RDUVVSZlFVeEpRVk1uTENBblFXeHBZWE1nWlc1a2FXNW5JR2x1SURvZ2FYTWdZVzFpYVdkMWIzVnpKeXdnZEhKMVpTazdYRzRnSUNBZ1kyOXVjM1FnZG1Gc2RXVkZibVFnUFNCdlptWnpaWFFnS3lCemIzVnlZMlV1YkdWdVozUm9PMXh1SUNBZ0lHTnZibk4wSUhKbElEMGdjbVZ6YjJ4MlpVVnVaQ2hsYm1Rc0lIWmhiSFZsUlc1a0xDQnZjSFJwYjI1ekxuTjBjbWxqZEN3Z2IyNUZjbkp2Y2lrN1hHNGdJQ0FnWVd4cFlYTXVjbUZ1WjJVZ1BTQmJiMlptYzJWMExDQjJZV3gxWlVWdVpDd2djbVV1YjJabWMyVjBYVHRjYmlBZ0lDQnBaaUFvY21VdVkyOXRiV1Z1ZENsY2JpQWdJQ0FnSUNBZ1lXeHBZWE11WTI5dGJXVnVkQ0E5SUhKbExtTnZiVzFsYm5RN1hHNGdJQ0FnY21WMGRYSnVJR0ZzYVdGek8xeHVmVnh1WEc1bGVIQnZjblFnZXlCamIyMXdiM05sUlcxd2RIbE9iMlJsTENCamIyMXdiM05sVG05a1pTQjlPMXh1SWl3Z0ltbHRjRzl5ZENCN0lFUnZZM1Z0Wlc1MElIMGdabkp2YlNBbkxpNHZaRzlqTDBSdlkzVnRaVzUwTG1wekp6dGNibWx0Y0c5eWRDQjdJR052YlhCdmMyVk9iMlJsTENCamIyMXdiM05sUlcxd2RIbE9iMlJsSUgwZ1puSnZiU0FuTGk5amIyMXdiM05sTFc1dlpHVXVhbk1uTzF4dWFXMXdiM0owSUhzZ2NtVnpiMngyWlVWdVpDQjlJR1p5YjIwZ0p5NHZjbVZ6YjJ4MlpTMWxibVF1YW5Nbk8xeHVhVzF3YjNKMElIc2djbVZ6YjJ4MlpWQnliM0J6SUgwZ1puSnZiU0FuTGk5eVpYTnZiSFpsTFhCeWIzQnpMbXB6Snp0Y2JseHVablZ1WTNScGIyNGdZMjl0Y0c5elpVUnZZeWh2Y0hScGIyNXpMQ0JrYVhKbFkzUnBkbVZ6TENCN0lHOW1abk5sZEN3Z2MzUmhjblFzSUhaaGJIVmxMQ0JsYm1RZ2ZTd2diMjVGY25KdmNpa2dlMXh1SUNBZ0lHTnZibk4wSUc5d2RITWdQU0JQWW1wbFkzUXVZWE56YVdkdUtIc2dYMlJwY21WamRHbDJaWE02SUdScGNtVmpkR2wyWlhNZ2ZTd2diM0IwYVc5dWN5azdYRzRnSUNBZ1kyOXVjM1FnWkc5aklEMGdibVYzSUVSdlkzVnRaVzUwS0hWdVpHVm1hVzVsWkN3Z2IzQjBjeWs3WEc0Z0lDQWdZMjl1YzNRZ1kzUjRJRDBnZTF4dUlDQWdJQ0FnSUNCaGRFdGxlVG9nWm1Gc2MyVXNYRzRnSUNBZ0lDQWdJR0YwVW05dmREb2dkSEoxWlN4Y2JpQWdJQ0FnSUNBZ1pHbHlaV04wYVhabGN6b2daRzlqTG1ScGNtVmpkR2wyWlhNc1hHNGdJQ0FnSUNBZ0lHOXdkR2x2Ym5NNklHUnZZeTV2Y0hScGIyNXpMRnh1SUNBZ0lDQWdJQ0J6WTJobGJXRTZJR1J2WXk1elkyaGxiV0ZjYmlBZ0lDQjlPMXh1SUNBZ0lHTnZibk4wSUhCeWIzQnpJRDBnY21WemIyeDJaVkJ5YjNCektITjBZWEowTENCN1hHNGdJQ0FnSUNBZ0lHbHVaR2xqWVhSdmNqb2dKMlJ2WXkxemRHRnlkQ2NzWEc0Z0lDQWdJQ0FnSUc1bGVIUTZJSFpoYkhWbElEOC9JR1Z1WkQ4dVd6QmRMRnh1SUNBZ0lDQWdJQ0J2Wm1aelpYUXNYRzRnSUNBZ0lDQWdJRzl1UlhKeWIzSXNYRzRnSUNBZ0lDQWdJSEJoY21WdWRFbHVaR1Z1ZERvZ01DeGNiaUFnSUNBZ0lDQWdjM1JoY25SUGJrNWxkMnhwYm1VNklIUnlkV1ZjYmlBZ0lDQjlLVHRjYmlBZ0lDQnBaaUFvY0hKdmNITXVabTkxYm1RcElIdGNiaUFnSUNBZ0lDQWdaRzlqTG1ScGNtVmpkR2wyWlhNdVpHOWpVM1JoY25RZ1BTQjBjblZsTzF4dUlDQWdJQ0FnSUNCcFppQW9kbUZzZFdVZ0ppWmNiaUFnSUNBZ0lDQWdJQ0FnSUNoMllXeDFaUzUwZVhCbElEMDlQU0FuWW14dlkyc3RiV0Z3SnlCOGZDQjJZV3gxWlM1MGVYQmxJRDA5UFNBbllteHZZMnN0YzJWeEp5a2dKaVpjYmlBZ0lDQWdJQ0FnSUNBZ0lDRndjbTl3Y3k1b1lYTk9aWGRzYVc1bEtWeHVJQ0FnSUNBZ0lDQWdJQ0FnYjI1RmNuSnZjaWh3Y205d2N5NWxibVFzSUNkTlNWTlRTVTVIWDBOSVFWSW5MQ0FuUW14dlkyc2dZMjlzYkdWamRHbHZiaUJqWVc1dWIzUWdjM1JoY25RZ2IyNGdjMkZ0WlNCc2FXNWxJSGRwZEdnZ1pHbHlaV04wYVhabGN5MWxibVFnYldGeWEyVnlKeWs3WEc0Z0lDQWdmVnh1SUNBZ0lDOHZJRUIwY3kxbGVIQmxZM1F0WlhKeWIzSWdTV1lnUTI5dWRHVnVkSE1nYVhNZ2MyVjBMQ0JzWlhRbmN5QjBjblZ6ZENCMGFHVWdkWE5sY2x4dUlDQWdJR1J2WXk1amIyNTBaVzUwY3lBOUlIWmhiSFZsWEc0Z0lDQWdJQ0FnSUQ4Z1kyOXRjRzl6WlU1dlpHVW9ZM1I0TENCMllXeDFaU3dnY0hKdmNITXNJRzl1UlhKeWIzSXBYRzRnSUNBZ0lDQWdJRG9nWTI5dGNHOXpaVVZ0Y0hSNVRtOWtaU2hqZEhnc0lIQnliM0J6TG1WdVpDd2djM1JoY25Rc0lHNTFiR3dzSUhCeWIzQnpMQ0J2YmtWeWNtOXlLVHRjYmlBZ0lDQmpiMjV6ZENCamIyNTBaVzUwUlc1a0lEMGdaRzlqTG1OdmJuUmxiblJ6TG5KaGJtZGxXekpkTzF4dUlDQWdJR052Ym5OMElISmxJRDBnY21WemIyeDJaVVZ1WkNobGJtUXNJR052Ym5SbGJuUkZibVFzSUdaaGJITmxMQ0J2YmtWeWNtOXlLVHRjYmlBZ0lDQnBaaUFvY21VdVkyOXRiV1Z1ZENsY2JpQWdJQ0FnSUNBZ1pHOWpMbU52YlcxbGJuUWdQU0J5WlM1amIyMXRaVzUwTzF4dUlDQWdJR1J2WXk1eVlXNW5aU0E5SUZ0dlptWnpaWFFzSUdOdmJuUmxiblJGYm1Rc0lISmxMbTltWm5ObGRGMDdYRzRnSUNBZ2NtVjBkWEp1SUdSdll6dGNibjFjYmx4dVpYaHdiM0owSUhzZ1kyOXRjRzl6WlVSdll5QjlPMXh1SWl3Z0ltbHRjRzl5ZENCN0lFUnBjbVZqZEdsMlpYTWdmU0JtY205dElDY3VMaTlrYjJNdlpHbHlaV04wYVhabGN5NXFjeWM3WEc1cGJYQnZjblFnZXlCRWIyTjFiV1Z1ZENCOUlHWnliMjBnSnk0dUwyUnZZeTlFYjJOMWJXVnVkQzVxY3ljN1hHNXBiWEJ2Y25RZ2V5QlpRVTFNVjJGeWJtbHVaeXdnV1VGTlRGQmhjbk5sUlhKeWIzSWdmU0JtY205dElDY3VMaTlsY25KdmNuTXVhbk1uTzF4dWFXMXdiM0owSUhzZ2FYTkRiMnhzWldOMGFXOXVMQ0JwYzFCaGFYSWdmU0JtY205dElDY3VMaTl1YjJSbGN5OXBaR1Z1ZEdsMGVTNXFjeWM3WEc1cGJYQnZjblFnZXlCamIyMXdiM05sUkc5aklIMGdabkp2YlNBbkxpOWpiMjF3YjNObExXUnZZeTVxY3ljN1hHNXBiWEJ2Y25RZ2V5QnlaWE52YkhabFJXNWtJSDBnWm5KdmJTQW5MaTl5WlhOdmJIWmxMV1Z1WkM1cWN5YzdYRzVjYm1aMWJtTjBhVzl1SUdkbGRFVnljbTl5VUc5ektITnlZeWtnZTF4dUlDQWdJR2xtSUNoMGVYQmxiMllnYzNKaklEMDlQU0FuYm5WdFltVnlKeWxjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJRnR6Y21Nc0lITnlZeUFySURGZE8xeHVJQ0FnSUdsbUlDaEJjbkpoZVM1cGMwRnljbUY1S0hOeVl5a3BYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQnpjbU11YkdWdVozUm9JRDA5UFNBeUlEOGdjM0pqSURvZ1czTnlZMXN3WFN3Z2MzSmpXekZkWFR0Y2JpQWdJQ0JqYjI1emRDQjdJRzltWm5ObGRDd2djMjkxY21ObElIMGdQU0J6Y21NN1hHNGdJQ0FnY21WMGRYSnVJRnR2Wm1aelpYUXNJRzltWm5ObGRDQXJJQ2gwZVhCbGIyWWdjMjkxY21ObElEMDlQU0FuYzNSeWFXNW5KeUEvSUhOdmRYSmpaUzVzWlc1bmRHZ2dPaUF4S1YwN1hHNTlYRzVtZFc1amRHbHZiaUJ3WVhKelpWQnlaV3gxWkdVb2NISmxiSFZrWlNrZ2UxeHVJQ0FnSUd4bGRDQmpiMjF0Wlc1MElEMGdKeWM3WEc0Z0lDQWdiR1YwSUdGMFEyOXRiV1Z1ZENBOUlHWmhiSE5sTzF4dUlDQWdJR3hsZENCaFpuUmxja1Z0Y0hSNVRHbHVaU0E5SUdaaGJITmxPMXh1SUNBZ0lHWnZjaUFvYkdWMElHa2dQU0F3T3lCcElEd2djSEpsYkhWa1pTNXNaVzVuZEdnN0lDc3JhU2tnZTF4dUlDQWdJQ0FnSUNCamIyNXpkQ0J6YjNWeVkyVWdQU0J3Y21Wc2RXUmxXMmxkTzF4dUlDQWdJQ0FnSUNCemQybDBZMmdnS0hOdmRYSmpaVnN3WFNrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnWTJGelpTQW5JeWM2WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWTI5dGJXVnVkQ0FyUFZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQW9ZMjl0YldWdWRDQTlQVDBnSnljZ1B5QW5KeUE2SUdGbWRHVnlSVzF3ZEhsTWFXNWxJRDhnSjF4Y2JseGNiaWNnT2lBblhGeHVKeWtnSzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnS0hOdmRYSmpaUzV6ZFdKemRISnBibWNvTVNrZ2ZId2dKeUFuS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCaGRFTnZiVzFsYm5RZ1BTQjBjblZsTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdGbWRHVnlSVzF3ZEhsTWFXNWxJRDBnWm1Gc2MyVTdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZbkpsWVdzN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JqWVhObElDY2xKenBjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2NISmxiSFZrWlZ0cElDc2dNVjAvTGxzd1hTQWhQVDBnSnlNbktWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwSUNzOUlERTdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZWFJEYjIxdFpXNTBJRDBnWm1Gc2MyVTdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZbkpsWVdzN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JrWldaaGRXeDBPbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQzh2SUZSb2FYTWdiV0Y1SUdKbElIZHliMjVuSUdGbWRHVnlJR1J2WXkxbGJtUXNJR0oxZENCcGJpQjBhR0YwSUdOaGMyVWdhWFFnWkc5bGMyNG5kQ0J0WVhSMFpYSmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBaaUFvSVdGMFEyOXRiV1Z1ZENsY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZV1owWlhKRmJYQjBlVXhwYm1VZ1BTQjBjblZsTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdGMFEyOXRiV1Z1ZENBOUlHWmhiSE5sTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dUlDQWdJSEpsZEhWeWJpQjdJR052YlcxbGJuUXNJR0ZtZEdWeVJXMXdkSGxNYVc1bElIMDdYRzU5WEc0dktpcGNiaUFxSUVOdmJYQnZjMlVnWVNCemRISmxZVzBnYjJZZ1ExTlVJRzV2WkdWeklHbHVkRzhnWVNCemRISmxZVzBnYjJZZ1dVRk5UQ0JFYjJOMWJXVnVkSE11WEc0Z0tseHVJQ29nWUdCZ2RITmNiaUFxSUdsdGNHOXlkQ0I3SUVOdmJYQnZjMlZ5TENCUVlYSnpaWElnZlNCbWNtOXRJQ2Q1WVcxc0oxeHVJQ3BjYmlBcUlHTnZibk4wSUhOeVl6b2djM1J5YVc1bklEMGdMaTR1WEc0Z0tpQmpiMjV6ZENCMGIydGxibk1nUFNCdVpYY2dVR0Z5YzJWeUtDa3VjR0Z5YzJVb2MzSmpLVnh1SUNvZ1kyOXVjM1FnWkc5amN5QTlJRzVsZHlCRGIyMXdiM05sY2lncExtTnZiWEJ2YzJVb2RHOXJaVzV6S1Z4dUlDb2dZR0JnWEc0Z0tpOWNibU5zWVhOeklFTnZiWEJ2YzJWeUlIdGNiaUFnSUNCamIyNXpkSEoxWTNSdmNpaHZjSFJwYjI1eklEMGdlMzBwSUh0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTVrYjJNZ1BTQnVkV3hzTzF4dUlDQWdJQ0FnSUNCMGFHbHpMbUYwUkdseVpXTjBhWFpsY3lBOUlHWmhiSE5sTzF4dUlDQWdJQ0FnSUNCMGFHbHpMbkJ5Wld4MVpHVWdQU0JiWFR0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTVsY25KdmNuTWdQU0JiWFR0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTUzWVhKdWFXNW5jeUE5SUZ0ZE8xeHVJQ0FnSUNBZ0lDQjBhR2x6TG05dVJYSnliM0lnUFNBb2MyOTFjbU5sTENCamIyUmxMQ0J0WlhOellXZGxMQ0IzWVhKdWFXNW5LU0E5UGlCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JqYjI1emRDQndiM01nUFNCblpYUkZjbkp2Y2xCdmN5aHpiM1Z5WTJVcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tIZGhjbTVwYm1jcFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RHaHBjeTUzWVhKdWFXNW5jeTV3ZFhOb0tHNWxkeUJaUVUxTVYyRnlibWx1Wnlod2IzTXNJR052WkdVc0lHMWxjM05oWjJVcEtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUdWc2MyVmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjBhR2x6TG1WeWNtOXljeTV3ZFhOb0tHNWxkeUJaUVUxTVVHRnljMlZGY25KdmNpaHdiM01zSUdOdlpHVXNJRzFsYzNOaFoyVXBLVHRjYmlBZ0lDQWdJQ0FnZlR0Y2JpQWdJQ0FnSUNBZ0x5OGdaWE5zYVc1MExXUnBjMkZpYkdVdGJtVjRkQzFzYVc1bElFQjBlWEJsYzJOeWFYQjBMV1Z6YkdsdWRDOXdjbVZtWlhJdGJuVnNiR2x6YUMxamIyRnNaWE5qYVc1blhHNGdJQ0FnSUNBZ0lIUm9hWE11WkdseVpXTjBhWFpsY3lBOUlHNWxkeUJFYVhKbFkzUnBkbVZ6S0hzZ2RtVnljMmx2YmpvZ2IzQjBhVzl1Y3k1MlpYSnphVzl1SUh4OElDY3hMakluSUgwcE8xeHVJQ0FnSUNBZ0lDQjBhR2x6TG05d2RHbHZibk1nUFNCdmNIUnBiMjV6TzF4dUlDQWdJSDFjYmlBZ0lDQmtaV052Y21GMFpTaGtiMk1zSUdGbWRHVnlSRzlqS1NCN1hHNGdJQ0FnSUNBZ0lHTnZibk4wSUhzZ1kyOXRiV1Z1ZEN3Z1lXWjBaWEpGYlhCMGVVeHBibVVnZlNBOUlIQmhjbk5sVUhKbGJIVmtaU2gwYUdsekxuQnlaV3gxWkdVcE8xeHVJQ0FnSUNBZ0lDQXZMMk52Ym5OdmJHVXViRzluS0hzZ1pHTTZJR1J2WXk1amIyMXRaVzUwTENCd2NtVnNkV1JsTENCamIyMXRaVzUwSUgwcFhHNGdJQ0FnSUNBZ0lHbG1JQ2hqYjIxdFpXNTBLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCa1l5QTlJR1J2WXk1amIyNTBaVzUwY3p0Y2JpQWdJQ0FnSUNBZ0lDQWdJR2xtSUNoaFpuUmxja1J2WXlrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHUnZZeTVqYjIxdFpXNTBJRDBnWkc5akxtTnZiVzFsYm5RZ1B5QmdKSHRrYjJNdVkyOXRiV1Z1ZEgxY1hHNGtlMk52YlcxbGJuUjlZQ0E2SUdOdmJXMWxiblE3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNCbGJITmxJR2xtSUNoaFpuUmxja1Z0Y0hSNVRHbHVaU0I4ZkNCa2IyTXVaR2x5WldOMGFYWmxjeTVrYjJOVGRHRnlkQ0I4ZkNBaFpHTXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JrYjJNdVkyOXRiV1Z1ZEVKbFptOXlaU0E5SUdOdmJXMWxiblE3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNCbGJITmxJR2xtSUNocGMwTnZiR3hsWTNScGIyNG9aR01wSUNZbUlDRmtZeTVtYkc5M0lDWW1JR1JqTG1sMFpXMXpMbXhsYm1kMGFDQStJREFwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCc1pYUWdhWFFnUFNCa1l5NXBkR1Z0YzFzd1hUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBaaUFvYVhOUVlXbHlLR2wwS1NsY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhWFFnUFNCcGRDNXJaWGs3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWTI5dWMzUWdZMklnUFNCcGRDNWpiMjF0Wlc1MFFtVm1iM0psTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsMExtTnZiVzFsYm5SQ1pXWnZjbVVnUFNCallpQS9JR0FrZTJOdmJXMWxiblI5WEZ4dUpIdGpZbjFnSURvZ1kyOXRiV1Z1ZER0Y2JpQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNBZ0lHVnNjMlVnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdOdmJuTjBJR05pSUQwZ1pHTXVZMjl0YldWdWRFSmxabTl5WlR0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCa1l5NWpiMjF0Wlc1MFFtVm1iM0psSUQwZ1kySWdQeUJnSkh0amIyMXRaVzUwZlZ4Y2JpUjdZMko5WUNBNklHTnZiVzFsYm5RN1hHNGdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2FXWWdLR0ZtZEdWeVJHOWpLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQkJjbkpoZVM1d2NtOTBiM1I1Y0dVdWNIVnphQzVoY0hCc2VTaGtiMk11WlhKeWIzSnpMQ0IwYUdsekxtVnljbTl5Y3lrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JCY25KaGVTNXdjbTkwYjNSNWNHVXVjSFZ6YUM1aGNIQnNlU2hrYjJNdWQyRnlibWx1WjNNc0lIUm9hWE11ZDJGeWJtbHVaM01wTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lHVnNjMlVnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdaRzlqTG1WeWNtOXljeUE5SUhSb2FYTXVaWEp5YjNKek8xeHVJQ0FnSUNBZ0lDQWdJQ0FnWkc5akxuZGhjbTVwYm1keklEMGdkR2hwY3k1M1lYSnVhVzVuY3p0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQjBhR2x6TG5CeVpXeDFaR1VnUFNCYlhUdGNiaUFnSUNBZ0lDQWdkR2hwY3k1bGNuSnZjbk1nUFNCYlhUdGNiaUFnSUNBZ0lDQWdkR2hwY3k1M1lYSnVhVzVuY3lBOUlGdGRPMXh1SUNBZ0lIMWNiaUFnSUNBdktpcGNiaUFnSUNBZ0tpQkRkWEp5Wlc1MElITjBjbVZoYlNCemRHRjBkWE1nYVc1bWIzSnRZWFJwYjI0dVhHNGdJQ0FnSUNwY2JpQWdJQ0FnS2lCTmIzTjBiSGtnZFhObFpuVnNJR0YwSUhSb1pTQmxibVFnYjJZZ2FXNXdkWFFnWm05eUlHRnVJR1Z0Y0hSNUlITjBjbVZoYlM1Y2JpQWdJQ0FnS2k5Y2JpQWdJQ0J6ZEhKbFlXMUpibVp2S0NrZ2UxeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnWTI5dGJXVnVkRG9nY0dGeWMyVlFjbVZzZFdSbEtIUm9hWE11Y0hKbGJIVmtaU2t1WTI5dGJXVnVkQ3hjYmlBZ0lDQWdJQ0FnSUNBZ0lHUnBjbVZqZEdsMlpYTTZJSFJvYVhNdVpHbHlaV04wYVhabGN5eGNiaUFnSUNBZ0lDQWdJQ0FnSUdWeWNtOXljem9nZEdocGN5NWxjbkp2Y25Nc1hHNGdJQ0FnSUNBZ0lDQWdJQ0IzWVhKdWFXNW5jem9nZEdocGN5NTNZWEp1YVc1bmMxeHVJQ0FnSUNBZ0lDQjlPMXh1SUNBZ0lIMWNiaUFnSUNBdktpcGNiaUFnSUNBZ0tpQkRiMjF3YjNObElIUnZhMlZ1Y3lCcGJuUnZJR1J2WTNWdFpXNTBjeTVjYmlBZ0lDQWdLbHh1SUNBZ0lDQXFJRUJ3WVhKaGJTQm1iM0pqWlVSdll5QXRJRWxtSUhSb1pTQnpkSEpsWVcwZ1kyOXVkR0ZwYm5NZ2JtOGdaRzlqZFcxbGJuUXNJSE4wYVd4c0lHVnRhWFFnWVNCbWFXNWhiQ0JrYjJOMWJXVnVkQ0JwYm1Oc2RXUnBibWNnWVc1NUlHTnZiVzFsYm5SeklHRnVaQ0JrYVhKbFkzUnBkbVZ6SUhSb1lYUWdkMjkxYkdRZ1ltVWdZWEJ3YkdsbFpDQjBieUJoSUhOMVluTmxjWFZsYm5RZ1pHOWpkVzFsYm5RdVhHNGdJQ0FnSUNvZ1FIQmhjbUZ0SUdWdVpFOW1abk5sZENBdElGTm9iM1ZzWkNCaVpTQnpaWFFnYVdZZ1lHWnZjbU5sUkc5allDQnBjeUJoYkhOdklITmxkQ3dnZEc4Z2MyVjBJSFJvWlNCa2IyTjFiV1Z1ZENCeVlXNW5aU0JsYm1RZ1lXNWtJSFJ2SUdsdVpHbGpZWFJsSUdWeWNtOXljeUJqYjNKeVpXTjBiSGt1WEc0Z0lDQWdJQ292WEc0Z0lDQWdLbU52YlhCdmMyVW9kRzlyWlc1ekxDQm1iM0pqWlVSdll5QTlJR1poYkhObExDQmxibVJQWm1aelpYUWdQU0F0TVNrZ2UxeHVJQ0FnSUNBZ0lDQm1iM0lnS0dOdmJuTjBJSFJ2YTJWdUlHOW1JSFJ2YTJWdWN5bGNiaUFnSUNBZ0lDQWdJQ0FnSUhscFpXeGtLaUIwYUdsekxtNWxlSFFvZEc5clpXNHBPMXh1SUNBZ0lDQWdJQ0I1YVdWc1pDb2dkR2hwY3k1bGJtUW9abTl5WTJWRWIyTXNJR1Z1WkU5bVpuTmxkQ2s3WEc0Z0lDQWdmVnh1SUNBZ0lDOHFLaUJCWkhaaGJtTmxJSFJvWlNCamIyMXdiM05sY2lCaWVTQnZibVVnUTFOVUlIUnZhMlZ1TGlBcUwxeHVJQ0FnSUNwdVpYaDBLSFJ2YTJWdUtTQjdYRzRnSUNBZ0lDQWdJSE4zYVhSamFDQW9kRzlyWlc0dWRIbHdaU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdZMkZ6WlNBblpHbHlaV04wYVhabEp6cGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjBhR2x6TG1ScGNtVmpkR2wyWlhNdVlXUmtLSFJ2YTJWdUxuTnZkWEpqWlN3Z0tHOW1abk5sZEN3Z2JXVnpjMkZuWlN3Z2QyRnlibWx1WnlrZ1BUNGdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCamIyNXpkQ0J3YjNNZ1BTQm5aWFJGY25KdmNsQnZjeWgwYjJ0bGJpazdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhCdmMxc3dYU0FyUFNCdlptWnpaWFE3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIUm9hWE11YjI1RmNuSnZjaWh3YjNNc0lDZENRVVJmUkVsU1JVTlVTVlpGSnl3Z2JXVnpjMkZuWlN3Z2QyRnlibWx1WnlrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZTazdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdkR2hwY3k1d2NtVnNkV1JsTG5CMWMyZ29kRzlyWlc0dWMyOTFjbU5sS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCMGFHbHpMbUYwUkdseVpXTjBhWFpsY3lBOUlIUnlkV1U3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWW5KbFlXczdYRzRnSUNBZ0lDQWdJQ0FnSUNCallYTmxJQ2RrYjJOMWJXVnVkQ2M2SUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCamIyNXpkQ0JrYjJNZ1BTQmpiMjF3YjNObFJHOWpLSFJvYVhNdWIzQjBhVzl1Y3l3Z2RHaHBjeTVrYVhKbFkzUnBkbVZ6TENCMGIydGxiaXdnZEdocGN5NXZia1Z5Y205eUtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBaaUFvZEdocGN5NWhkRVJwY21WamRHbDJaWE1nSmlZZ0lXUnZZeTVrYVhKbFkzUnBkbVZ6TG1SdlkxTjBZWEowS1Z4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjBhR2x6TG05dVJYSnliM0lvZEc5clpXNHNJQ2ROU1ZOVFNVNUhYME5JUVZJbkxDQW5UV2x6YzJsdVp5QmthWEpsWTNScGRtVnpMV1Z1WkM5a2IyTXRjM1JoY25RZ2FXNWthV05oZEc5eUlHeHBibVVuS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCMGFHbHpMbVJsWTI5eVlYUmxLR1J2WXl3Z1ptRnNjMlVwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDaDBhR2x6TG1Sdll5bGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZVdsbGJHUWdkR2hwY3k1a2IyTTdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdkR2hwY3k1a2IyTWdQU0JrYjJNN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RHaHBjeTVoZEVScGNtVmpkR2wyWlhNZ1BTQm1ZV3h6WlR0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0FnSUdOaGMyVWdKMko1ZEdVdGIzSmtaWEl0YldGeWF5YzZYRzRnSUNBZ0lDQWdJQ0FnSUNCallYTmxJQ2R6Y0dGalpTYzZYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZbkpsWVdzN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JqWVhObElDZGpiMjF0Wlc1MEp6cGNiaUFnSUNBZ0lDQWdJQ0FnSUdOaGMyVWdKMjVsZDJ4cGJtVW5PbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSFJvYVhNdWNISmxiSFZrWlM1d2RYTm9LSFJ2YTJWdUxuTnZkWEpqWlNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1luSmxZV3M3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpZWE5sSUNkbGNuSnZjaWM2SUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCamIyNXpkQ0J0YzJjZ1BTQjBiMnRsYmk1emIzVnlZMlZjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1B5QmdKSHQwYjJ0bGJpNXRaWE56WVdkbGZUb2dKSHRLVTA5T0xuTjBjbWx1WjJsbWVTaDBiMnRsYmk1emIzVnlZMlVwZldCY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdPaUIwYjJ0bGJpNXRaWE56WVdkbE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHTnZibk4wSUdWeWNtOXlJRDBnYm1WM0lGbEJUVXhRWVhKelpVVnljbTl5S0dkbGRFVnljbTl5VUc5ektIUnZhMlZ1S1N3Z0oxVk9SVmhRUlVOVVJVUmZWRTlMUlU0bkxDQnRjMmNwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDaDBhR2x6TG1GMFJHbHlaV04wYVhabGN5QjhmQ0FoZEdocGN5NWtiMk1wWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIUm9hWE11WlhKeWIzSnpMbkIxYzJnb1pYSnliM0lwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdWc2MyVmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZEdocGN5NWtiMk11WlhKeWIzSnpMbkIxYzJnb1pYSnliM0lwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdKeVpXRnJPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnWTJGelpTQW5aRzlqTFdWdVpDYzZJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb0lYUm9hWE11Wkc5aktTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdOdmJuTjBJRzF6WnlBOUlDZFZibVY0Y0dWamRHVmtJR1J2WXkxbGJtUWdkMmwwYUc5MWRDQndjbVZqWldScGJtY2daRzlqZFcxbGJuUW5PMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCMGFHbHpMbVZ5Y205eWN5NXdkWE5vS0c1bGR5QlpRVTFNVUdGeWMyVkZjbkp2Y2loblpYUkZjbkp2Y2xCdmN5aDBiMnRsYmlrc0lDZFZUa1ZZVUVWRFZFVkVYMVJQUzBWT0p5d2diWE5uS1NrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR0p5WldGck8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjBhR2x6TG1Sdll5NWthWEpsWTNScGRtVnpMbVJ2WTBWdVpDQTlJSFJ5ZFdVN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1kyOXVjM1FnWlc1a0lEMGdjbVZ6YjJ4MlpVVnVaQ2gwYjJ0bGJpNWxibVFzSUhSdmEyVnVMbTltWm5ObGRDQXJJSFJ2YTJWdUxuTnZkWEpqWlM1c1pXNW5kR2dzSUhSb2FYTXVaRzlqTG05d2RHbHZibk11YzNSeWFXTjBMQ0IwYUdsekxtOXVSWEp5YjNJcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIUm9hWE11WkdWamIzSmhkR1VvZEdocGN5NWtiMk1zSUhSeWRXVXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNobGJtUXVZMjl0YldWdWRDa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCamIyNXpkQ0JrWXlBOUlIUm9hWE11Wkc5akxtTnZiVzFsYm5RN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSFJvYVhNdVpHOWpMbU52YlcxbGJuUWdQU0JrWXlBL0lHQWtlMlJqZlZ4Y2JpUjdaVzVrTG1OdmJXMWxiblI5WUNBNklHVnVaQzVqYjIxdFpXNTBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IwYUdsekxtUnZZeTV5WVc1blpWc3lYU0E5SUdWdVpDNXZabVp6WlhRN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1luSmxZV3M3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNCa1pXWmhkV3gwT2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhSb2FYTXVaWEp5YjNKekxuQjFjMmdvYm1WM0lGbEJUVXhRWVhKelpVVnljbTl5S0dkbGRFVnljbTl5VUc5ektIUnZhMlZ1S1N3Z0oxVk9SVmhRUlVOVVJVUmZWRTlMUlU0bkxDQmdWVzV6ZFhCd2IzSjBaV1FnZEc5clpXNGdKSHQwYjJ0bGJpNTBlWEJsZldBcEtUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lIMWNiaUFnSUNBdktpcGNiaUFnSUNBZ0tpQkRZV3hzSUdGMElHVnVaQ0J2WmlCcGJuQjFkQ0IwYnlCNWFXVnNaQ0JoYm5rZ2NtVnRZV2x1YVc1bklHUnZZM1Z0Wlc1MExseHVJQ0FnSUNBcVhHNGdJQ0FnSUNvZ1FIQmhjbUZ0SUdadmNtTmxSRzlqSUMwZ1NXWWdkR2hsSUhOMGNtVmhiU0JqYjI1MFlXbHVjeUJ1YnlCa2IyTjFiV1Z1ZEN3Z2MzUnBiR3dnWlcxcGRDQmhJR1pwYm1Gc0lHUnZZM1Z0Wlc1MElHbHVZMngxWkdsdVp5QmhibmtnWTI5dGJXVnVkSE1nWVc1a0lHUnBjbVZqZEdsMlpYTWdkR2hoZENCM2IzVnNaQ0JpWlNCaGNIQnNhV1ZrSUhSdklHRWdjM1ZpYzJWeGRXVnVkQ0JrYjJOMWJXVnVkQzVjYmlBZ0lDQWdLaUJBY0dGeVlXMGdaVzVrVDJabWMyVjBJQzBnVTJodmRXeGtJR0psSUhObGRDQnBaaUJnWm05eVkyVkViMk5nSUdseklHRnNjMjhnYzJWMExDQjBieUJ6WlhRZ2RHaGxJR1J2WTNWdFpXNTBJSEpoYm1kbElHVnVaQ0JoYm1RZ2RHOGdhVzVrYVdOaGRHVWdaWEp5YjNKeklHTnZjbkpsWTNSc2VTNWNiaUFnSUNBZ0tpOWNiaUFnSUNBcVpXNWtLR1p2Y21ObFJHOWpJRDBnWm1Gc2MyVXNJR1Z1WkU5bVpuTmxkQ0E5SUMweEtTQjdYRzRnSUNBZ0lDQWdJR2xtSUNoMGFHbHpMbVJ2WXlrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnZEdocGN5NWtaV052Y21GMFpTaDBhR2x6TG1Sdll5d2dkSEoxWlNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0I1YVdWc1pDQjBhR2x6TG1Sdll6dGNiaUFnSUNBZ0lDQWdJQ0FnSUhSb2FYTXVaRzlqSUQwZ2JuVnNiRHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCbGJITmxJR2xtSUNobWIzSmpaVVJ2WXlrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnWTI5dWMzUWdiM0IwY3lBOUlFOWlhbVZqZEM1aGMzTnBaMjRvZXlCZlpHbHlaV04wYVhabGN6b2dkR2hwY3k1a2FYSmxZM1JwZG1WeklIMHNJSFJvYVhNdWIzQjBhVzl1Y3lrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JqYjI1emRDQmtiMk1nUFNCdVpYY2dSRzlqZFcxbGJuUW9kVzVrWldacGJtVmtMQ0J2Y0hSektUdGNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDaDBhR2x6TG1GMFJHbHlaV04wYVhabGN5bGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjBhR2x6TG05dVJYSnliM0lvWlc1a1QyWm1jMlYwTENBblRVbFRVMGxPUjE5RFNFRlNKeXdnSjAxcGMzTnBibWNnWkdseVpXTjBhWFpsY3kxbGJtUWdhVzVrYVdOaGRHOXlJR3hwYm1VbktUdGNiaUFnSUNBZ0lDQWdJQ0FnSUdSdll5NXlZVzVuWlNBOUlGc3dMQ0JsYm1SUFptWnpaWFFzSUdWdVpFOW1abk5sZEYwN1hHNGdJQ0FnSUNBZ0lDQWdJQ0IwYUdsekxtUmxZMjl5WVhSbEtHUnZZeXdnWm1Gc2MyVXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2VXbGxiR1FnWkc5ak8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVmVnh1WEc1bGVIQnZjblFnZXlCRGIyMXdiM05sY2lCOU8xeHVJaXdnSW1OdmJuTjBJRUpTUlVGTElEMGdVM2x0WW05c0tDZGljbVZoYXlCMmFYTnBkQ2NwTzF4dVkyOXVjM1FnVTB0SlVDQTlJRk41YldKdmJDZ25jMnRwY0NCamFHbHNaSEpsYmljcE8xeHVZMjl1YzNRZ1VrVk5UMVpGSUQwZ1UzbHRZbTlzS0NkeVpXMXZkbVVnYVhSbGJTY3BPMXh1THlvcVhHNGdLaUJCY0hCc2VTQmhJSFpwYzJsMGIzSWdkRzhnWVNCRFUxUWdaRzlqZFcxbGJuUWdiM0lnYVhSbGJTNWNiaUFxWEc0Z0tpQlhZV3hyY3lCMGFISnZkV2RvSUhSb1pTQjBjbVZsSUNoa1pYQjBhQzFtYVhKemRDa2djM1JoY25ScGJtY2dabkp2YlNCMGFHVWdjbTl2ZEN3Z1kyRnNiR2x1WnlCaFhHNGdLaUJnZG1semFYUnZjbUFnWm5WdVkzUnBiMjRnZDJsMGFDQjBkMjhnWVhKbmRXMWxiblJ6SUhkb1pXNGdaVzUwWlhKcGJtY2daV0ZqYUNCcGRHVnRPbHh1SUNvZ0lDQXRJR0JwZEdWdFlEb2dWR2hsSUdOMWNuSmxiblFnYVhSbGJTd2dkMmhwWTJnZ2FXNWpiSFZrWldRZ2RHaGxJR1p2Ykd4dmQybHVaeUJ0WlcxaVpYSnpPbHh1SUNvZ0lDQWdJQzBnWUhOMFlYSjBPaUJUYjNWeVkyVlViMnRsYmx0ZFlDQmNkVEl3TVRNZ1UyOTFjbU5sSUhSdmEyVnVjeUJpWldadmNtVWdkR2hsSUd0bGVTQnZjaUIyWVd4MVpTeGNiaUFxSUNBZ0lDQWdJSEJ2YzNOcFlteDVJR2x1WTJ4MVpHbHVaeUJwZEhNZ1lXNWphRzl5SUc5eUlIUmhaeTVjYmlBcUlDQWdJQ0F0SUdCclpYay9PaUJVYjJ0bGJpQjhJRzUxYkd4Z0lGeDFNakF4TXlCVFpYUWdabTl5SUhCaGFYSWdkbUZzZFdWekxpQk5ZWGtnZEdobGJpQmlaU0JnYm5Wc2JHQXNJR2xtWEc0Z0tpQWdJQ0FnSUNCMGFHVWdhMlY1SUdKbFptOXlaU0IwYUdVZ1lEcGdJSE5sY0dGeVlYUnZjaUJwY3lCbGJYQjBlUzVjYmlBcUlDQWdJQ0F0SUdCelpYQS9PaUJUYjNWeVkyVlViMnRsYmx0ZFlDQmNkVEl3TVRNZ1UyOTFjbU5sSUhSdmEyVnVjeUJpWlhSM1pXVnVJSFJvWlNCclpYa2dZVzVrSUhSb1pTQjJZV3gxWlN4Y2JpQXFJQ0FnSUNBZ0lIZG9hV05vSUhOb2IzVnNaQ0JwYm1Oc2RXUmxJSFJvWlNCZ09tQWdiV0Z3SUhaaGJIVmxJR2x1WkdsallYUnZjaUJwWmlCZ2RtRnNkV1ZnSUdseklITmxkQzVjYmlBcUlDQWdJQ0F0SUdCMllXeDFaVDg2SUZSdmEyVnVZQ0JjZFRJd01UTWdWR2hsSUhaaGJIVmxJRzltSUdFZ2MyVnhkV1Z1WTJVZ2FYUmxiU3dnYjNJZ2IyWWdZU0J0WVhBZ2NHRnBjaTVjYmlBcUlDQWdMU0JnY0dGMGFHQTZJRlJvWlNCemRHVndjeUJtY205dElIUm9aU0J5YjI5MElIUnZJSFJvWlNCamRYSnlaVzUwSUc1dlpHVXNJR0Z6SUdGdUlHRnljbUY1SUc5bVhHNGdLaUFnSUNBZ1lGc25hMlY1SnlCOElDZDJZV3gxWlNjc0lHNTFiV0psY2wxZ0lIUjFjR3hsY3k1Y2JpQXFYRzRnS2lCVWFHVWdjbVYwZFhKdUlIWmhiSFZsSUc5bUlIUm9aU0IyYVhOcGRHOXlJRzFoZVNCaVpTQjFjMlZrSUhSdklHTnZiblJ5YjJ3Z2RHaGxJSFJ5WVhabGNuTmhiRHBjYmlBcUlDQWdMU0JnZFc1a1pXWnBibVZrWUNBb1pHVm1ZWFZzZENrNklFUnZJRzV2ZEdocGJtY2dZVzVrSUdOdmJuUnBiblZsWEc0Z0tpQWdJQzBnWUhacGMybDBMbE5MU1ZCZ09pQkVieUJ1YjNRZ2RtbHphWFFnZEdobElHTm9hV3hrY21WdUlHOW1JSFJvYVhNZ2RHOXJaVzRzSUdOdmJuUnBiblZsSUhkcGRHaGNiaUFxSUNBZ0lDQWdibVY0ZENCemFXSnNhVzVuWEc0Z0tpQWdJQzBnWUhacGMybDBMa0pTUlVGTFlEb2dWR1Z5YldsdVlYUmxJSFJ5WVhabGNuTmhiQ0JqYjIxd2JHVjBaV3g1WEc0Z0tpQWdJQzBnWUhacGMybDBMbEpGVFU5V1JXQTZJRkpsYlc5MlpTQjBhR1VnWTNWeWNtVnVkQ0JwZEdWdExDQjBhR1Z1SUdOdmJuUnBiblZsSUhkcGRHZ2dkR2hsSUc1bGVIUWdiMjVsWEc0Z0tpQWdJQzBnWUc1MWJXSmxjbUE2SUZObGRDQjBhR1VnYVc1a1pYZ2diMllnZEdobElHNWxlSFFnYzNSbGNDNGdWR2hwY3lCcGN5QjFjMlZtZFd3Z1pYTndaV05wWVd4c2VTQnBabHh1SUNvZ0lDQWdJSFJvWlNCcGJtUmxlQ0J2WmlCMGFHVWdZM1Z5Y21WdWRDQjBiMnRsYmlCb1lYTWdZMmhoYm1kbFpDNWNiaUFxSUNBZ0xTQmdablZ1WTNScGIyNWdPaUJFWldacGJtVWdkR2hsSUc1bGVIUWdkbWx6YVhSdmNpQm1iM0lnZEdocGN5QnBkR1Z0TGlCQlpuUmxjaUIwYUdVZ2IzSnBaMmx1WVd4Y2JpQXFJQ0FnSUNCMmFYTnBkRzl5SUdseklHTmhiR3hsWkNCdmJpQnBkR1Z0SUdWdWRISjVMQ0J1WlhoMElIWnBjMmwwYjNKeklHRnlaU0JqWVd4c1pXUWdZV1owWlhJZ2FHRnVaR3hwYm1kY2JpQXFJQ0FnSUNCaElHNXZiaTFsYlhCMGVTQmdhMlY1WUNCaGJtUWdkMmhsYmlCbGVHbDBhVzVuSUhSb1pTQnBkR1Z0TGx4dUlDb3ZYRzVtZFc1amRHbHZiaUIyYVhOcGRDaGpjM1FzSUhacGMybDBiM0lwSUh0Y2JpQWdJQ0JwWmlBb0ozUjVjR1VuSUdsdUlHTnpkQ0FtSmlCamMzUXVkSGx3WlNBOVBUMGdKMlJ2WTNWdFpXNTBKeWxjYmlBZ0lDQWdJQ0FnWTNOMElEMGdleUJ6ZEdGeWREb2dZM04wTG5OMFlYSjBMQ0IyWVd4MVpUb2dZM04wTG5aaGJIVmxJSDA3WEc0Z0lDQWdYM1pwYzJsMEtFOWlhbVZqZEM1bWNtVmxlbVVvVzEwcExDQmpjM1FzSUhacGMybDBiM0lwTzF4dWZWeHVMeThnVjJsMGFHOTFkQ0IwYUdVZ1lHRnpJSE41YldKdmJHQWdZMkZ6ZEhNc0lGUlRJR1JsWTJ4aGNtVnpJSFJvWlhObElHbHVJSFJvWlNCZ2RtbHphWFJnWEc0dkx5QnVZVzFsYzNCaFkyVWdkWE5wYm1jZ1lIWmhjbUFzSUdKMWRDQjBhR1Z1SUdOdmJYQnNZV2x1Y3lCaFltOTFkQ0IwYUdGMElHSmxZMkYxYzJWY2JpOHZJR0IxYm1seGRXVWdjM2x0WW05c1lDQnRkWE4wSUdKbElHQmpiMjV6ZEdBdVhHNHZLaW9nVkdWeWJXbHVZWFJsSUhacGMybDBJSFJ5WVhabGNuTmhiQ0JqYjIxd2JHVjBaV3g1SUNvdlhHNTJhWE5wZEM1Q1VrVkJTeUE5SUVKU1JVRkxPMXh1THlvcUlFUnZJRzV2ZENCMmFYTnBkQ0IwYUdVZ1kyaHBiR1J5Wlc0Z2IyWWdkR2hsSUdOMWNuSmxiblFnYVhSbGJTQXFMMXh1ZG1semFYUXVVMHRKVUNBOUlGTkxTVkE3WEc0dktpb2dVbVZ0YjNabElIUm9aU0JqZFhKeVpXNTBJR2wwWlcwZ0tpOWNiblpwYzJsMExsSkZUVTlXUlNBOUlGSkZUVTlXUlR0Y2JpOHFLaUJHYVc1a0lIUm9aU0JwZEdWdElHRjBJR0J3WVhSb1lDQm1jbTl0SUdCamMzUmdJR0Z6SUhSb1pTQnliMjkwSUNvdlhHNTJhWE5wZEM1cGRHVnRRWFJRWVhSb0lEMGdLR056ZEN3Z2NHRjBhQ2tnUFQ0Z2UxeHVJQ0FnSUd4bGRDQnBkR1Z0SUQwZ1kzTjBPMXh1SUNBZ0lHWnZjaUFvWTI5dWMzUWdXMlpwWld4a0xDQnBibVJsZUYwZ2IyWWdjR0YwYUNrZ2UxeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCMGIyc2dQU0JwZEdWdFB5NWJabWxsYkdSZE8xeHVJQ0FnSUNBZ0lDQnBaaUFvZEc5cklDWW1JQ2RwZEdWdGN5Y2dhVzRnZEc5cktTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCcGRHVnRJRDBnZEc5ckxtbDBaVzF6VzJsdVpHVjRYVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCbGJITmxYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnZFc1a1pXWnBibVZrTzF4dUlDQWdJSDFjYmlBZ0lDQnlaWFIxY200Z2FYUmxiVHRjYm4wN1hHNHZLaXBjYmlBcUlFZGxkQ0IwYUdVZ2FXMXRaV1JwWVhSbElIQmhjbVZ1ZENCamIyeHNaV04wYVc5dUlHOW1JSFJvWlNCcGRHVnRJR0YwSUdCd1lYUm9ZQ0JtY205dElHQmpjM1JnSUdGeklIUm9aU0J5YjI5MExseHVJQ3BjYmlBcUlGUm9jbTkzY3lCaGJpQmxjbkp2Y2lCcFppQjBhR1VnWTI5c2JHVmpkR2x2YmlCcGN5QnViM1FnWm05MWJtUXNJSGRvYVdOb0lITm9iM1ZzWkNCdVpYWmxjaUJvWVhCd1pXNGdhV1lnZEdobElHbDBaVzBnYVhSelpXeG1JR1Y0YVhOMGN5NWNiaUFxTDF4dWRtbHphWFF1Y0dGeVpXNTBRMjlzYkdWamRHbHZiaUE5SUNoamMzUXNJSEJoZEdncElEMCtJSHRjYmlBZ0lDQmpiMjV6ZENCd1lYSmxiblFnUFNCMmFYTnBkQzVwZEdWdFFYUlFZWFJvS0dOemRDd2djR0YwYUM1emJHbGpaU2d3TENBdE1Ta3BPMXh1SUNBZ0lHTnZibk4wSUdacFpXeGtJRDBnY0dGMGFGdHdZWFJvTG14bGJtZDBhQ0F0SURGZFd6QmRPMXh1SUNBZ0lHTnZibk4wSUdOdmJHd2dQU0J3WVhKbGJuUS9MbHRtYVdWc1pGMDdYRzRnSUNBZ2FXWWdLR052Ykd3Z0ppWWdKMmwwWlcxekp5QnBiaUJqYjJ4c0tWeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z1kyOXNiRHRjYmlBZ0lDQjBhSEp2ZHlCdVpYY2dSWEp5YjNJb0oxQmhjbVZ1ZENCamIyeHNaV04wYVc5dUlHNXZkQ0JtYjNWdVpDY3BPMXh1ZlR0Y2JtWjFibU4wYVc5dUlGOTJhWE5wZENod1lYUm9MQ0JwZEdWdExDQjJhWE5wZEc5eUtTQjdYRzRnSUNBZ2JHVjBJR04wY213Z1BTQjJhWE5wZEc5eUtHbDBaVzBzSUhCaGRHZ3BPMXh1SUNBZ0lHbG1JQ2gwZVhCbGIyWWdZM1J5YkNBOVBUMGdKM041YldKdmJDY3BYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQmpkSEpzTzF4dUlDQWdJR1p2Y2lBb1kyOXVjM1FnWm1sbGJHUWdiMllnV3lkclpYa25MQ0FuZG1Gc2RXVW5YU2tnZTF4dUlDQWdJQ0FnSUNCamIyNXpkQ0IwYjJ0bGJpQTlJR2wwWlcxYlptbGxiR1JkTzF4dUlDQWdJQ0FnSUNCcFppQW9kRzlyWlc0Z0ppWWdKMmwwWlcxekp5QnBiaUIwYjJ0bGJpa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ1ptOXlJQ2hzWlhRZ2FTQTlJREE3SUdrZ1BDQjBiMnRsYmk1cGRHVnRjeTVzWlc1bmRHZzdJQ3NyYVNrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHTnZibk4wSUdOcElEMGdYM1pwYzJsMEtFOWlhbVZqZEM1bWNtVmxlbVVvY0dGMGFDNWpiMjVqWVhRb1cxdG1hV1ZzWkN3Z2FWMWRLU2tzSUhSdmEyVnVMbWwwWlcxelcybGRMQ0IyYVhOcGRHOXlLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2RIbHdaVzltSUdOcElEMDlQU0FuYm5WdFltVnlKeWxjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FTQTlJR05wSUMwZ01UdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmxiSE5sSUdsbUlDaGphU0E5UFQwZ1FsSkZRVXNwWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCQ1VrVkJTenRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JsYkhObElHbG1JQ2hqYVNBOVBUMGdVa1ZOVDFaRktTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhSdmEyVnVMbWwwWlcxekxuTndiR2xqWlNocExDQXhLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FTQXRQU0F4TzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2gwZVhCbGIyWWdZM1J5YkNBOVBUMGdKMloxYm1OMGFXOXVKeUFtSmlCbWFXVnNaQ0E5UFQwZ0oydGxlU2NwWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWTNSeWJDQTlJR04wY213b2FYUmxiU3dnY0dGMGFDazdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUhSNWNHVnZaaUJqZEhKc0lEMDlQU0FuWm5WdVkzUnBiMjRuSUQ4Z1kzUnliQ2hwZEdWdExDQndZWFJvS1NBNklHTjBjbXc3WEc1OVhHNWNibVY0Y0c5eWRDQjdJSFpwYzJsMElIMDdYRzRpTENBaVpYaHdiM0owSUhzZ1kzSmxZWFJsVTJOaGJHRnlWRzlyWlc0c0lISmxjMjlzZG1WQmMxTmpZV3hoY2l3Z2MyVjBVMk5oYkdGeVZtRnNkV1VnZlNCbWNtOXRJQ2N1TDJOemRDMXpZMkZzWVhJdWFuTW5PMXh1Wlhod2IzSjBJSHNnYzNSeWFXNW5hV1o1SUgwZ1puSnZiU0FuTGk5amMzUXRjM1J5YVc1bmFXWjVMbXB6Snp0Y2JtVjRjRzl5ZENCN0lIWnBjMmwwSUgwZ1puSnZiU0FuTGk5amMzUXRkbWx6YVhRdWFuTW5PMXh1WEc0dktpb2dWR2hsSUdKNWRHVWdiM0prWlhJZ2JXRnlheUFxTDF4dVkyOXVjM1FnUWs5TklEMGdKMXhjZFh0R1JVWkdmU2M3WEc0dktpb2dVM1JoY25RZ2IyWWdaRzlqTFcxdlpHVWdLaTljYm1OdmJuTjBJRVJQUTFWTlJVNVVJRDBnSjF4Y2VEQXlKenNnTHk4Z1F6QTZJRk4wWVhKMElHOW1JRlJsZUhSY2JpOHFLaUJWYm1WNGNHVmpkR1ZrSUdWdVpDQnZaaUJtYkc5M0xXMXZaR1VnS2k5Y2JtTnZibk4wSUVaTVQxZGZSVTVFSUQwZ0oxeGNlREU0SnpzZ0x5OGdRekE2SUVOaGJtTmxiRnh1THlvcUlFNWxlSFFnZEc5clpXNGdhWE1nWVNCelkyRnNZWElnZG1Gc2RXVWdLaTljYm1OdmJuTjBJRk5EUVV4QlVpQTlJQ2RjWEhneFppYzdJQzh2SUVNd09pQlZibWwwSUZObGNHRnlZWFJ2Y2x4dUx5b3FJRUJ5WlhSMWNtNXpJR0IwY25WbFlDQnBaaUJnZEc5clpXNWdJR2x6SUdFZ1pteHZkeUJ2Y2lCaWJHOWpheUJqYjJ4c1pXTjBhVzl1SUNvdlhHNWpiMjV6ZENCcGMwTnZiR3hsWTNScGIyNGdQU0FvZEc5clpXNHBJRDArSUNFaGRHOXJaVzRnSmlZZ0oybDBaVzF6SnlCcGJpQjBiMnRsYmp0Y2JpOHFLaUJBY21WMGRYSnVjeUJnZEhKMVpXQWdhV1lnWUhSdmEyVnVZQ0JwY3lCaElHWnNiM2NnYjNJZ1lteHZZMnNnYzJOaGJHRnlPeUJ1YjNRZ1lXNGdZV3hwWVhNZ0tpOWNibU52Ym5OMElHbHpVMk5oYkdGeUlEMGdLSFJ2YTJWdUtTQTlQaUFoSVhSdmEyVnVJQ1ltWEc0Z0lDQWdLSFJ2YTJWdUxuUjVjR1VnUFQwOUlDZHpZMkZzWVhJbklIeDhYRzRnSUNBZ0lDQWdJSFJ2YTJWdUxuUjVjR1VnUFQwOUlDZHphVzVuYkdVdGNYVnZkR1ZrTFhOallXeGhjaWNnZkh4Y2JpQWdJQ0FnSUNBZ2RHOXJaVzR1ZEhsd1pTQTlQVDBnSjJSdmRXSnNaUzF4ZFc5MFpXUXRjMk5oYkdGeUp5QjhmRnh1SUNBZ0lDQWdJQ0IwYjJ0bGJpNTBlWEJsSUQwOVBTQW5ZbXh2WTJzdGMyTmhiR0Z5SnlrN1hHNHZLaUJwYzNSaGJtSjFiQ0JwWjI1dmNtVWdibVY0ZENBcUwxeHVMeW9xSUVkbGRDQmhJSEJ5YVc1MFlXSnNaU0J5WlhCeVpYTmxiblJoZEdsdmJpQnZaaUJoSUd4bGVHVnlJSFJ2YTJWdUlDb3ZYRzVtZFc1amRHbHZiaUJ3Y21WMGRIbFViMnRsYmloMGIydGxiaWtnZTF4dUlDQWdJSE4zYVhSamFDQW9kRzlyWlc0cElIdGNiaUFnSUNBZ0lDQWdZMkZ6WlNCQ1QwMDZYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnSnp4Q1QwMCtKenRjYmlBZ0lDQWdJQ0FnWTJGelpTQkVUME5WVFVWT1ZEcGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUFuUEVSUFF6NG5PMXh1SUNBZ0lDQWdJQ0JqWVhObElFWk1UMWRmUlU1RU9seHVJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJQ2M4Umt4UFYxOUZUa1ErSnp0Y2JpQWdJQ0FnSUNBZ1kyRnpaU0JUUTBGTVFWSTZYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnSnp4VFEwRk1RVkkrSnp0Y2JpQWdJQ0FnSUNBZ1pHVm1ZWFZzZERwY2JpQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQktVMDlPTG5OMGNtbHVaMmxtZVNoMGIydGxiaWs3WEc0Z0lDQWdmVnh1ZlZ4dUx5b3FJRWxrWlc1MGFXWjVJSFJvWlNCMGVYQmxJRzltSUdFZ2JHVjRaWElnZEc5clpXNHVJRTFoZVNCeVpYUjFjbTRnWUc1MWJHeGdJR1p2Y2lCMWJtdHViM2R1SUhSdmEyVnVjeTRnS2k5Y2JtWjFibU4wYVc5dUlIUnZhMlZ1Vkhsd1pTaHpiM1Z5WTJVcElIdGNiaUFnSUNCemQybDBZMmdnS0hOdmRYSmpaU2tnZTF4dUlDQWdJQ0FnSUNCallYTmxJRUpQVFRwY2JpQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQW5ZbmwwWlMxdmNtUmxjaTF0WVhKckp6dGNiaUFnSUNBZ0lDQWdZMkZ6WlNCRVQwTlZUVVZPVkRwY2JpQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQW5aRzlqTFcxdlpHVW5PMXh1SUNBZ0lDQWdJQ0JqWVhObElFWk1UMWRmUlU1RU9seHVJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJQ2RtYkc5M0xXVnljbTl5TFdWdVpDYzdYRzRnSUNBZ0lDQWdJR05oYzJVZ1UwTkJURUZTT2x4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlDZHpZMkZzWVhJbk8xeHVJQ0FnSUNBZ0lDQmpZWE5sSUNjdExTMG5PbHh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUNka2IyTXRjM1JoY25Rbk8xeHVJQ0FnSUNBZ0lDQmpZWE5sSUNjdUxpNG5PbHh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUNka2IyTXRaVzVrSnp0Y2JpQWdJQ0FnSUNBZ1kyRnpaU0FuSnpwY2JpQWdJQ0FnSUNBZ1kyRnpaU0FuWEZ4dUp6cGNiaUFnSUNBZ0lDQWdZMkZ6WlNBblhGeHlYRnh1SnpwY2JpQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQW5ibVYzYkdsdVpTYzdYRzRnSUNBZ0lDQWdJR05oYzJVZ0p5MG5PbHh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUNkelpYRXRhWFJsYlMxcGJtUW5PMXh1SUNBZ0lDQWdJQ0JqWVhObElDYy9KenBjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlBblpYaHdiR2xqYVhRdGEyVjVMV2x1WkNjN1hHNGdJQ0FnSUNBZ0lHTmhjMlVnSnpvbk9seHVJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJQ2R0WVhBdGRtRnNkV1V0YVc1a0p6dGNiaUFnSUNBZ0lDQWdZMkZ6WlNBbmV5YzZYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnSjJac2IzY3RiV0Z3TFhOMFlYSjBKenRjYmlBZ0lDQWdJQ0FnWTJGelpTQW5mU2M2WEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z0oyWnNiM2N0YldGd0xXVnVaQ2M3WEc0Z0lDQWdJQ0FnSUdOaGMyVWdKMXNuT2x4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlDZG1iRzkzTFhObGNTMXpkR0Z5ZENjN1hHNGdJQ0FnSUNBZ0lHTmhjMlVnSjEwbk9seHVJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJQ2RtYkc5M0xYTmxjUzFsYm1Rbk8xeHVJQ0FnSUNBZ0lDQmpZWE5sSUNjc0p6cGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUFuWTI5dGJXRW5PMXh1SUNBZ0lIMWNiaUFnSUNCemQybDBZMmdnS0hOdmRYSmpaVnN3WFNrZ2UxeHVJQ0FnSUNBZ0lDQmpZWE5sSUNjZ0p6cGNiaUFnSUNBZ0lDQWdZMkZ6WlNBblhGeDBKenBjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlBbmMzQmhZMlVuTzF4dUlDQWdJQ0FnSUNCallYTmxJQ2NqSnpwY2JpQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQW5ZMjl0YldWdWRDYzdYRzRnSUNBZ0lDQWdJR05oYzJVZ0p5VW5PbHh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUNka2FYSmxZM1JwZG1VdGJHbHVaU2M3WEc0Z0lDQWdJQ0FnSUdOaGMyVWdKeW9uT2x4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlDZGhiR2xoY3ljN1hHNGdJQ0FnSUNBZ0lHTmhjMlVnSnlZbk9seHVJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJQ2RoYm1Ob2IzSW5PMXh1SUNBZ0lDQWdJQ0JqWVhObElDY2hKenBjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlBbmRHRm5KenRjYmlBZ0lDQWdJQ0FnWTJGelpTQmNJaWRjSWpwY2JpQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQW5jMmx1WjJ4bExYRjFiM1JsWkMxelkyRnNZWEluTzF4dUlDQWdJQ0FnSUNCallYTmxJQ2RjSWljNlhHNGdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdKMlJ2ZFdKc1pTMXhkVzkwWldRdGMyTmhiR0Z5Snp0Y2JpQWdJQ0FnSUNBZ1kyRnpaU0FuZkNjNlhHNGdJQ0FnSUNBZ0lHTmhjMlVnSno0bk9seHVJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJQ2RpYkc5amF5MXpZMkZzWVhJdGFHVmhaR1Z5Snp0Y2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlHNTFiR3c3WEc1OVhHNWNibVY0Y0c5eWRDQjdJRUpQVFN3Z1JFOURWVTFGVGxRc0lFWk1UMWRmUlU1RUxDQlRRMEZNUVZJc0lHbHpRMjlzYkdWamRHbHZiaXdnYVhOVFkyRnNZWElzSUhCeVpYUjBlVlJ2YTJWdUxDQjBiMnRsYmxSNWNHVWdmVHRjYmlJc0lDSnBiWEJ2Y25RZ2V5QkNUMDBzSUVSUFExVk5SVTVVTENCR1RFOVhYMFZPUkN3Z1UwTkJURUZTSUgwZ1puSnZiU0FuTGk5amMzUXVhbk1uTzF4dVhHNHZLbHh1VTFSQlVsUWdMVDRnYzNSeVpXRnRYRzVjYm5OMGNtVmhiVnh1SUNCa2FYSmxZM1JwZG1VZ0xUNGdiR2x1WlMxbGJtUWdMVDRnYzNSeVpXRnRYRzRnSUdsdVpHVnVkQ0FySUd4cGJtVXRaVzVrSUMwK0lITjBjbVZoYlZ4dUlDQmJaV3h6WlYwZ0xUNGdiR2x1WlMxemRHRnlkRnh1WEc1c2FXNWxMV1Z1WkZ4dUlDQmpiMjF0Wlc1MElDMCtJR3hwYm1VdFpXNWtYRzRnSUc1bGQyeHBibVVnTFQ0Z0xseHVJQ0JwYm5CMWRDMWxibVFnTFQ0Z1JVNUVYRzVjYm14cGJtVXRjM1JoY25SY2JpQWdaRzlqTFhOMFlYSjBJQzArSUdSdlkxeHVJQ0JrYjJNdFpXNWtJQzArSUhOMGNtVmhiVnh1SUNCYlpXeHpaVjBnTFQ0Z2FXNWtaVzUwSUMwK0lHSnNiMk5yTFhOMFlYSjBYRzVjYm1Kc2IyTnJMWE4wWVhKMFhHNGdJSE5sY1MxcGRHVnRMWE4wWVhKMElDMCtJR0pzYjJOckxYTjBZWEowWEc0Z0lHVjRjR3hwWTJsMExXdGxlUzF6ZEdGeWRDQXRQaUJpYkc5amF5MXpkR0Z5ZEZ4dUlDQnRZWEF0ZG1Gc2RXVXRjM1JoY25RZ0xUNGdZbXh2WTJzdGMzUmhjblJjYmlBZ1cyVnNjMlZkSUMwK0lHUnZZMXh1WEc1a2IyTmNiaUFnYkdsdVpTMWxibVFnTFQ0Z2JHbHVaUzF6ZEdGeWRGeHVJQ0J6Y0dGalpYTWdMVDRnWkc5alhHNGdJR0Z1WTJodmNpQXRQaUJrYjJOY2JpQWdkR0ZuSUMwK0lHUnZZMXh1SUNCbWJHOTNMWE4wWVhKMElDMCtJR1pzYjNjZ0xUNGdaRzlqWEc0Z0lHWnNiM2N0Wlc1a0lDMCtJR1Z5Y205eUlDMCtJR1J2WTF4dUlDQnpaWEV0YVhSbGJTMXpkR0Z5ZENBdFBpQmxjbkp2Y2lBdFBpQmtiMk5jYmlBZ1pYaHdiR2xqYVhRdGEyVjVMWE4wWVhKMElDMCtJR1Z5Y205eUlDMCtJR1J2WTF4dUlDQnRZWEF0ZG1Gc2RXVXRjM1JoY25RZ0xUNGdaRzlqWEc0Z0lHRnNhV0Z6SUMwK0lHUnZZMXh1SUNCeGRXOTBaUzF6ZEdGeWRDQXRQaUJ4ZFc5MFpXUXRjMk5oYkdGeUlDMCtJR1J2WTF4dUlDQmliRzlqYXkxelkyRnNZWEl0YUdWaFpHVnlJQzArSUd4cGJtVXRaVzVrSUMwK0lHSnNiMk5yTFhOallXeGhjaWh0YVc0cElDMCtJR3hwYm1VdGMzUmhjblJjYmlBZ1cyVnNjMlZkSUMwK0lIQnNZV2x1TFhOallXeGhjaWhtWVd4elpTd2diV2x1S1NBdFBpQmtiMk5jYmx4dVpteHZkMXh1SUNCc2FXNWxMV1Z1WkNBdFBpQm1iRzkzWEc0Z0lITndZV05sY3lBdFBpQm1iRzkzWEc0Z0lHRnVZMmh2Y2lBdFBpQm1iRzkzWEc0Z0lIUmhaeUF0UGlCbWJHOTNYRzRnSUdac2IzY3RjM1JoY25RZ0xUNGdabXh2ZHlBdFBpQm1iRzkzWEc0Z0lHWnNiM2N0Wlc1a0lDMCtJQzVjYmlBZ2MyVnhMV2wwWlcwdGMzUmhjblFnTFQ0Z1pYSnliM0lnTFQ0Z1pteHZkMXh1SUNCbGVIQnNhV05wZEMxclpYa3RjM1JoY25RZ0xUNGdabXh2ZDF4dUlDQnRZWEF0ZG1Gc2RXVXRjM1JoY25RZ0xUNGdabXh2ZDF4dUlDQmhiR2xoY3lBdFBpQm1iRzkzWEc0Z0lIRjFiM1JsTFhOMFlYSjBJQzArSUhGMWIzUmxaQzF6WTJGc1lYSWdMVDRnWm14dmQxeHVJQ0JqYjIxdFlTQXRQaUJtYkc5M1hHNGdJRnRsYkhObFhTQXRQaUJ3YkdGcGJpMXpZMkZzWVhJb2RISjFaU3dnTUNrZ0xUNGdabXh2ZDF4dVhHNXhkVzkwWldRdGMyTmhiR0Z5WEc0Z0lIRjFiM1JsTFdWdVpDQXRQaUF1WEc0Z0lGdGxiSE5sWFNBdFBpQnhkVzkwWldRdGMyTmhiR0Z5WEc1Y2JtSnNiMk5yTFhOallXeGhjaWh0YVc0cFhHNGdJRzVsZDJ4cGJtVWdLeUJ3WldWcktHbHVaR1Z1ZENBOElHMXBiaWtnTFQ0Z0xseHVJQ0JiWld4elpWMGdMVDRnWW14dlkyc3RjMk5oYkdGeUtHMXBiaWxjYmx4dWNHeGhhVzR0YzJOaGJHRnlLR2x6TFdac2IzY3NJRzFwYmlsY2JpQWdjMk5oYkdGeUxXVnVaQ2hwY3kxbWJHOTNLU0F0UGlBdVhHNGdJSEJsWldzb2JtVjNiR2x1WlNBcklDaHBibVJsYm5RZ1BDQnRhVzRwS1NBdFBpQXVYRzRnSUZ0bGJITmxYU0F0UGlCd2JHRnBiaTF6WTJGc1lYSW9iV2x1S1Z4dUtpOWNibVoxYm1OMGFXOXVJR2x6Ulcxd2RIa29ZMmdwSUh0Y2JpQWdJQ0J6ZDJsMFkyZ2dLR05vS1NCN1hHNGdJQ0FnSUNBZ0lHTmhjMlVnZFc1a1pXWnBibVZrT2x4dUlDQWdJQ0FnSUNCallYTmxJQ2NnSnpwY2JpQWdJQ0FnSUNBZ1kyRnpaU0FuWEZ4dUp6cGNiaUFnSUNBZ0lDQWdZMkZ6WlNBblhGeHlKenBjYmlBZ0lDQWdJQ0FnWTJGelpTQW5YRngwSnpwY2JpQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQjBjblZsTzF4dUlDQWdJQ0FnSUNCa1pXWmhkV3gwT2x4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlHWmhiSE5sTzF4dUlDQWdJSDFjYm4xY2JtTnZibk4wSUdobGVFUnBaMmwwY3lBOUlHNWxkeUJUWlhRb0p6QXhNak0wTlRZM09EbEJRa05FUlVaaFltTmtaV1luS1R0Y2JtTnZibk4wSUhSaFowTm9ZWEp6SUQwZ2JtVjNJRk5sZENoY0lqQXhNak0wTlRZM09EbEJRa05FUlVaSFNFbEtTMHhOVGs5UVVWSlRWRlZXVjFoWldtRmlZMlJsWm1kb2FXcHJiRzF1YjNCeGNuTjBkWFozZUhsNkxTTTdMejg2UUNZOUt5UmZMaUYrS2ljb0tWd2lLVHRjYm1OdmJuTjBJR1pzYjNkSmJtUnBZMkYwYjNKRGFHRnljeUE5SUc1bGR5QlRaWFFvSnl4YlhYdDlKeWs3WEc1amIyNXpkQ0JwYm5aaGJHbGtRVzVqYUc5eVEyaGhjbk1nUFNCdVpYY2dVMlYwS0NjZ0xGdGRlMzFjWEc1Y1hISmNYSFFuS1R0Y2JtTnZibk4wSUdselRtOTBRVzVqYUc5eVEyaGhjaUE5SUNoamFDa2dQVDRnSVdOb0lIeDhJR2x1ZG1Gc2FXUkJibU5vYjNKRGFHRnljeTVvWVhNb1kyZ3BPMXh1THlvcVhHNGdLaUJUY0d4cGRITWdZVzRnYVc1d2RYUWdjM1J5YVc1bklHbHVkRzhnYkdWNGFXTmhiQ0IwYjJ0bGJuTXNJR2t1WlM0Z2MyMWhiR3hsY2lCemRISnBibWR6SUhSb1lYUWdZWEpsWEc0Z0tpQmxZWE5wYkhrZ2FXUmxiblJwWm1saFlteGxJR0o1SUdCMGIydGxibk11ZEc5clpXNVVlWEJsS0NsZ0xseHVJQ3BjYmlBcUlFeGxlR2x1WnlCemRHRnlkSE1nWVd4M1lYbHpJR2x1SUdFZ1hDSnpkSEpsWVcxY0lpQmpiMjUwWlhoMExpQkpibU52YlhCc1pYUmxJR2x1Y0hWMElHMWhlU0JpWlNCaWRXWm1aWEpsWkZ4dUlDb2dkVzUwYVd3Z1lTQmpiMjF3YkdWMFpTQjBiMnRsYmlCallXNGdZbVVnWlcxcGRIUmxaQzVjYmlBcVhHNGdLaUJKYmlCaFpHUnBkR2x2YmlCMGJ5QnpiR2xqWlhNZ2IyWWdkR2hsSUc5eWFXZHBibUZzSUdsdWNIVjBMQ0IwYUdVZ1ptOXNiRzkzYVc1bklHTnZiblJ5YjJ3Z1kyaGhjbUZqZEdWeWMxeHVJQ29nYldGNUlHRnNjMjhnWW1VZ1pXMXBkSFJsWkRwY2JpQXFYRzRnS2lBdElHQmNYSGd3TW1BZ0tGTjBZWEowSUc5bUlGUmxlSFFwT2lCQklHUnZZM1Z0Wlc1MElITjBZWEowY3lCM2FYUm9JSFJvWlNCdVpYaDBJSFJ2YTJWdVhHNGdLaUF0SUdCY1hIZ3hPR0FnS0VOaGJtTmxiQ2s2SUZWdVpYaHdaV04wWldRZ1pXNWtJRzltSUdac2IzY3RiVzlrWlNBb2FXNWthV05oZEdWeklHRnVJR1Z5Y205eUtWeHVJQ29nTFNCZ1hGeDRNV1pnSUNoVmJtbDBJRk5sY0dGeVlYUnZjaWs2SUU1bGVIUWdkRzlyWlc0Z2FYTWdZU0J6WTJGc1lYSWdkbUZzZFdWY2JpQXFJQzBnWUZ4Y2RYdEdSVVpHZldBZ0tFSjVkR1VnYjNKa1pYSWdiV0Z5YXlrNklFVnRhWFIwWldRZ2MyVndZWEpoZEdWc2VTQnZkWFJ6YVdSbElHUnZZM1Z0Wlc1MGMxeHVJQ292WEc1amJHRnpjeUJNWlhobGNpQjdYRzRnSUNBZ1kyOXVjM1J5ZFdOMGIzSW9LU0I3WEc0Z0lDQWdJQ0FnSUM4cUtseHVJQ0FnSUNBZ0lDQWdLaUJHYkdGbklHbHVaR2xqWVhScGJtY2dkMmhsZEdobGNpQjBhR1VnWlc1a0lHOW1JSFJvWlNCamRYSnlaVzUwSUdKMVptWmxjaUJ0WVhKcmN5QjBhR1VnWlc1a0lHOW1YRzRnSUNBZ0lDQWdJQ0FxSUdGc2JDQnBibkIxZEZ4dUlDQWdJQ0FnSUNBZ0tpOWNiaUFnSUNBZ0lDQWdkR2hwY3k1aGRFVnVaQ0E5SUdaaGJITmxPMXh1SUNBZ0lDQWdJQ0F2S2lwY2JpQWdJQ0FnSUNBZ0lDb2dSWGh3YkdsamFYUWdhVzVrWlc1MElITmxkQ0JwYmlCaWJHOWpheUJ6WTJGc1lYSWdhR1ZoWkdWeUxDQmhjeUJoYmlCdlptWnpaWFFnWm5KdmJTQjBhR1VnWTNWeWNtVnVkRnh1SUNBZ0lDQWdJQ0FnS2lCdGFXNXBiWFZ0SUdsdVpHVnVkQ3dnYzI4Z1pTNW5MaUJ6WlhRZ2RHOGdNU0JtY205dElHRWdhR1ZoWkdWeUlHQjhNaXRnTGlCVFpYUWdkRzhnTFRFZ2FXWWdibTkwWEc0Z0lDQWdJQ0FnSUNBcUlHVjRjR3hwWTJsMGJIa2djMlYwTGx4dUlDQWdJQ0FnSUNBZ0tpOWNiaUFnSUNBZ0lDQWdkR2hwY3k1aWJHOWphMU5qWVd4aGNrbHVaR1Z1ZENBOUlDMHhPMXh1SUNBZ0lDQWdJQ0F2S2lwY2JpQWdJQ0FnSUNBZ0lDb2dRbXh2WTJzZ2MyTmhiR0Z5Y3lCMGFHRjBJR2x1WTJ4MVpHVWdZU0FySUNoclpXVndLU0JqYUc5dGNHbHVaeUJwYm1ScFkyRjBiM0lnYVc0Z2RHaGxhWElnYUdWaFpHVnlYRzRnSUNBZ0lDQWdJQ0FxSUdsdVkyeDFaR1VnZEhKaGFXeHBibWNnWlcxd2RIa2diR2x1WlhNc0lIZG9hV05vSUdGeVpTQnZkR2hsY25kcGMyVWdaWGhqYkhWa1pXUWdabkp2YlNCMGFHVmNiaUFnSUNBZ0lDQWdJQ29nYzJOaGJHRnlKM01nWTI5dWRHVnVkSE11WEc0Z0lDQWdJQ0FnSUNBcUwxeHVJQ0FnSUNBZ0lDQjBhR2x6TG1Kc2IyTnJVMk5oYkdGeVMyVmxjQ0E5SUdaaGJITmxPMXh1SUNBZ0lDQWdJQ0F2S2lvZ1EzVnljbVZ1ZENCcGJuQjFkQ0FxTDF4dUlDQWdJQ0FnSUNCMGFHbHpMbUoxWm1abGNpQTlJQ2NuTzF4dUlDQWdJQ0FnSUNBdktpcGNiaUFnSUNBZ0lDQWdJQ29nUm14aFp5QnViM1JwYm1jZ2QyaGxkR2hsY2lCMGFHVWdiV0Z3SUhaaGJIVmxJR2x1WkdsallYUnZjaUE2SUdOaGJpQnBiVzFsWkdsaGRHVnNlU0JtYjJ4c2IzY2dkR2hwYzF4dUlDQWdJQ0FnSUNBZ0tpQnViMlJsSUhkcGRHaHBiaUJoSUdac2IzY2dZMjl1ZEdWNGRDNWNiaUFnSUNBZ0lDQWdJQ292WEc0Z0lDQWdJQ0FnSUhSb2FYTXVabXh2ZDB0bGVTQTlJR1poYkhObE8xeHVJQ0FnSUNBZ0lDQXZLaW9nUTI5MWJuUWdiMllnYzNWeWNtOTFibVJwYm1jZ1pteHZkeUJqYjJ4c1pXTjBhVzl1SUd4bGRtVnNjeTRnS2k5Y2JpQWdJQ0FnSUNBZ2RHaHBjeTVtYkc5M1RHVjJaV3dnUFNBd08xeHVJQ0FnSUNBZ0lDQXZLaXBjYmlBZ0lDQWdJQ0FnSUNvZ1RXbHVhVzExYlNCc1pYWmxiQ0J2WmlCcGJtUmxiblJoZEdsdmJpQnlaWEYxYVhKbFpDQm1iM0lnYm1WNGRDQnNhVzVsY3lCMGJ5QmlaU0J3WVhKelpXUWdZWE1nWVZ4dUlDQWdJQ0FnSUNBZ0tpQndZWEowSUc5bUlIUm9aU0JqZFhKeVpXNTBJSE5qWVd4aGNpQjJZV3gxWlM1Y2JpQWdJQ0FnSUNBZ0lDb3ZYRzRnSUNBZ0lDQWdJSFJvYVhNdWFXNWtaVzUwVG1WNGRDQTlJREE3WEc0Z0lDQWdJQ0FnSUM4cUtpQkpibVJsYm5SaGRHbHZiaUJzWlhabGJDQnZaaUIwYUdVZ1kzVnljbVZ1ZENCc2FXNWxMaUFxTDF4dUlDQWdJQ0FnSUNCMGFHbHpMbWx1WkdWdWRGWmhiSFZsSUQwZ01EdGNiaUFnSUNBZ0lDQWdMeW9xSUZCdmMybDBhVzl1SUc5bUlIUm9aU0J1WlhoMElGeGNiaUJqYUdGeVlXTjBaWEl1SUNvdlhHNGdJQ0FnSUNBZ0lIUm9hWE11YkdsdVpVVnVaRkJ2Y3lBOUlHNTFiR3c3WEc0Z0lDQWdJQ0FnSUM4cUtpQlRkRzl5WlhNZ2RHaGxJSE4wWVhSbElHOW1JSFJvWlNCc1pYaGxjaUJwWmlCeVpXRmphR2x1WnlCMGFHVWdaVzVrSUc5bUlHbHVZM0J2YlhCc1pYUmxJR2x1Y0hWMElDb3ZYRzRnSUNBZ0lDQWdJSFJvYVhNdWJtVjRkQ0E5SUc1MWJHdzdYRzRnSUNBZ0lDQWdJQzhxS2lCQklIQnZhVzUwWlhJZ2RHOGdZR0oxWm1abGNtQTdJSFJvWlNCamRYSnlaVzUwSUhCdmMybDBhVzl1SUc5bUlIUm9aU0JzWlhobGNpNGdLaTljYmlBZ0lDQWdJQ0FnZEdocGN5NXdiM01nUFNBd08xeHVJQ0FnSUgxY2JpQWdJQ0F2S2lwY2JpQWdJQ0FnS2lCSFpXNWxjbUYwWlNCWlFVMU1JSFJ2YTJWdWN5Qm1jbTl0SUhSb1pTQmdjMjkxY21ObFlDQnpkSEpwYm1jdUlFbG1JR0JwYm1OdmJYQnNaWFJsWUN4Y2JpQWdJQ0FnS2lCaElIQmhjblFnYjJZZ2RHaGxJR3hoYzNRZ2JHbHVaU0J0WVhrZ1ltVWdiR1ZtZENCaGN5QmhJR0oxWm1abGNpQm1iM0lnZEdobElHNWxlSFFnWTJGc2JDNWNiaUFnSUNBZ0tseHVJQ0FnSUNBcUlFQnlaWFIxY201eklFRWdaMlZ1WlhKaGRHOXlJRzltSUd4bGVHbGpZV3dnZEc5clpXNXpYRzRnSUNBZ0lDb3ZYRzRnSUNBZ0tteGxlQ2h6YjNWeVkyVXNJR2x1WTI5dGNHeGxkR1VnUFNCbVlXeHpaU2tnZTF4dUlDQWdJQ0FnSUNCcFppQW9jMjkxY21ObEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCcFppQW9kSGx3Wlc5bUlITnZkWEpqWlNBaFBUMGdKM04wY21sdVp5Y3BYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdkR2h5YjNjZ1ZIbHdaVVZ5Y205eUtDZHpiM1Z5WTJVZ2FYTWdibTkwSUdFZ2MzUnlhVzVuSnlrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0IwYUdsekxtSjFabVpsY2lBOUlIUm9hWE11WW5WbVptVnlJRDhnZEdocGN5NWlkV1ptWlhJZ0t5QnpiM1Z5WTJVZ09pQnpiM1Z5WTJVN1hHNGdJQ0FnSUNBZ0lDQWdJQ0IwYUdsekxteHBibVZGYm1SUWIzTWdQU0J1ZFd4c08xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJSFJvYVhNdVlYUkZibVFnUFNBaGFXNWpiMjF3YkdWMFpUdGNiaUFnSUNBZ0lDQWdiR1YwSUc1bGVIUWdQU0IwYUdsekxtNWxlSFFnUHo4Z0ozTjBjbVZoYlNjN1hHNGdJQ0FnSUNBZ0lIZG9hV3hsSUNodVpYaDBJQ1ltSUNocGJtTnZiWEJzWlhSbElIeDhJSFJvYVhNdWFHRnpRMmhoY25Nb01Ta3BLVnh1SUNBZ0lDQWdJQ0FnSUNBZ2JtVjRkQ0E5SUhscFpXeGtLaUIwYUdsekxuQmhjbk5sVG1WNGRDaHVaWGgwS1R0Y2JpQWdJQ0I5WEc0Z0lDQWdZWFJNYVc1bFJXNWtLQ2tnZTF4dUlDQWdJQ0FnSUNCc1pYUWdhU0E5SUhSb2FYTXVjRzl6TzF4dUlDQWdJQ0FnSUNCc1pYUWdZMmdnUFNCMGFHbHpMbUoxWm1abGNsdHBYVHRjYmlBZ0lDQWdJQ0FnZDJocGJHVWdLR05vSUQwOVBTQW5JQ2NnZkh3Z1kyZ2dQVDA5SUNkY1hIUW5LVnh1SUNBZ0lDQWdJQ0FnSUNBZ1kyZ2dQU0IwYUdsekxtSjFabVpsY2xzcksybGRPMXh1SUNBZ0lDQWdJQ0JwWmlBb0lXTm9JSHg4SUdOb0lEMDlQU0FuSXljZ2ZId2dZMmdnUFQwOUlDZGNYRzRuS1Z4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlIUnlkV1U3WEc0Z0lDQWdJQ0FnSUdsbUlDaGphQ0E5UFQwZ0oxeGNjaWNwWEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2RHaHBjeTVpZFdabVpYSmJhU0FySURGZElEMDlQU0FuWEZ4dUp6dGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlHWmhiSE5sTzF4dUlDQWdJSDFjYmlBZ0lDQmphR0Z5UVhRb2Jpa2dlMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdkR2hwY3k1aWRXWm1aWEpiZEdocGN5NXdiM01nS3lCdVhUdGNiaUFnSUNCOVhHNGdJQ0FnWTI5dWRHbHVkV1ZUWTJGc1lYSW9iMlptYzJWMEtTQjdYRzRnSUNBZ0lDQWdJR3hsZENCamFDQTlJSFJvYVhNdVluVm1abVZ5VzI5bVpuTmxkRjA3WEc0Z0lDQWdJQ0FnSUdsbUlDaDBhR2x6TG1sdVpHVnVkRTVsZUhRZ1BpQXdLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnNaWFFnYVc1a1pXNTBJRDBnTUR0Y2JpQWdJQ0FnSUNBZ0lDQWdJSGRvYVd4bElDaGphQ0E5UFQwZ0p5QW5LVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR05vSUQwZ2RHaHBjeTVpZFdabVpYSmJLeXRwYm1SbGJuUWdLeUJ2Wm1aelpYUmRPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLR05vSUQwOVBTQW5YRnh5SnlrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHTnZibk4wSUc1bGVIUWdQU0IwYUdsekxtSjFabVpsY2x0cGJtUmxiblFnS3lCdlptWnpaWFFnS3lBeFhUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBaaUFvYm1WNGRDQTlQVDBnSjF4Y2JpY2dmSHdnS0NGdVpYaDBJQ1ltSUNGMGFHbHpMbUYwUlc1a0tTbGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJRzltWm5ObGRDQXJJR2x1WkdWdWRDQXJJREU3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnWTJnZ1BUMDlJQ2RjWEc0bklIeDhJR2x1WkdWdWRDQStQU0IwYUdsekxtbHVaR1Z1ZEU1bGVIUWdmSHdnS0NGamFDQW1KaUFoZEdocGN5NWhkRVZ1WkNsY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBL0lHOW1abk5sZENBcklHbHVaR1Z1ZEZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSURvZ0xURTdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnYVdZZ0tHTm9JRDA5UFNBbkxTY2dmSHdnWTJnZ1BUMDlJQ2N1SnlrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnWTI5dWMzUWdaSFFnUFNCMGFHbHpMbUoxWm1abGNpNXpkV0p6ZEhJb2IyWm1jMlYwTENBektUdGNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDZ29aSFFnUFQwOUlDY3RMUzBuSUh4OElHUjBJRDA5UFNBbkxpNHVKeWtnSmlZZ2FYTkZiWEIwZVNoMGFHbHpMbUoxWm1abGNsdHZabVp6WlhRZ0t5QXpYU2twWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJQzB4TzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCdlptWnpaWFE3WEc0Z0lDQWdmVnh1SUNBZ0lHZGxkRXhwYm1Vb0tTQjdYRzRnSUNBZ0lDQWdJR3hsZENCbGJtUWdQU0IwYUdsekxteHBibVZGYm1SUWIzTTdYRzRnSUNBZ0lDQWdJR2xtSUNoMGVYQmxiMllnWlc1a0lDRTlQU0FuYm5WdFltVnlKeUI4ZkNBb1pXNWtJQ0U5UFNBdE1TQW1KaUJsYm1RZ1BDQjBhR2x6TG5CdmN5a3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHVnVaQ0E5SUhSb2FYTXVZblZtWm1WeUxtbHVaR1Y0VDJZb0oxeGNiaWNzSUhSb2FYTXVjRzl6S1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSFJvYVhNdWJHbHVaVVZ1WkZCdmN5QTlJR1Z1WkR0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQnBaaUFvWlc1a0lEMDlQU0F0TVNsY2JpQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQjBhR2x6TG1GMFJXNWtJRDhnZEdocGN5NWlkV1ptWlhJdWMzVmljM1J5YVc1bktIUm9hWE11Y0c5ektTQTZJRzUxYkd3N1hHNGdJQ0FnSUNBZ0lHbG1JQ2gwYUdsekxtSjFabVpsY2x0bGJtUWdMU0F4WFNBOVBUMGdKMXhjY2ljcFhHNGdJQ0FnSUNBZ0lDQWdJQ0JsYm1RZ0xUMGdNVHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJSFJvYVhNdVluVm1abVZ5TG5OMVluTjBjbWx1WnloMGFHbHpMbkJ2Y3l3Z1pXNWtLVHRjYmlBZ0lDQjlYRzRnSUNBZ2FHRnpRMmhoY25Nb2Jpa2dlMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdkR2hwY3k1d2IzTWdLeUJ1SUR3OUlIUm9hWE11WW5WbVptVnlMbXhsYm1kMGFEdGNiaUFnSUNCOVhHNGdJQ0FnYzJWMFRtVjRkQ2h6ZEdGMFpTa2dlMXh1SUNBZ0lDQWdJQ0IwYUdsekxtSjFabVpsY2lBOUlIUm9hWE11WW5WbVptVnlMbk4xWW5OMGNtbHVaeWgwYUdsekxuQnZjeWs3WEc0Z0lDQWdJQ0FnSUhSb2FYTXVjRzl6SUQwZ01EdGNiaUFnSUNBZ0lDQWdkR2hwY3k1c2FXNWxSVzVrVUc5eklEMGdiblZzYkR0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTV1WlhoMElEMGdjM1JoZEdVN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCdWRXeHNPMXh1SUNBZ0lIMWNiaUFnSUNCd1pXVnJLRzRwSUh0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUhSb2FYTXVZblZtWm1WeUxuTjFZbk4wY2loMGFHbHpMbkJ2Y3l3Z2JpazdYRzRnSUNBZ2ZWeHVJQ0FnSUNwd1lYSnpaVTVsZUhRb2JtVjRkQ2tnZTF4dUlDQWdJQ0FnSUNCemQybDBZMmdnS0c1bGVIUXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHTmhjMlVnSjNOMGNtVmhiU2M2WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJSGxwWld4a0tpQjBhR2x6TG5CaGNuTmxVM1J5WldGdEtDazdYRzRnSUNBZ0lDQWdJQ0FnSUNCallYTmxJQ2RzYVc1bExYTjBZWEowSnpwY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnZVdsbGJHUXFJSFJvYVhNdWNHRnljMlZNYVc1bFUzUmhjblFvS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJR05oYzJVZ0oySnNiMk5yTFhOMFlYSjBKenBjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdlV2xsYkdRcUlIUm9hWE11Y0dGeWMyVkNiRzlqYTFOMFlYSjBLQ2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpZWE5sSUNka2IyTW5PbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQjVhV1ZzWkNvZ2RHaHBjeTV3WVhKelpVUnZZM1Z0Wlc1MEtDazdYRzRnSUNBZ0lDQWdJQ0FnSUNCallYTmxJQ2RtYkc5M0p6cGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2VXbGxiR1FxSUhSb2FYTXVjR0Z5YzJWR2JHOTNRMjlzYkdWamRHbHZiaWdwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdZMkZ6WlNBbmNYVnZkR1ZrTFhOallXeGhjaWM2WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJSGxwWld4a0tpQjBhR2x6TG5CaGNuTmxVWFZ2ZEdWa1UyTmhiR0Z5S0NrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JqWVhObElDZGliRzlqYXkxelkyRnNZWEluT2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUI1YVdWc1pDb2dkR2hwY3k1d1lYSnpaVUpzYjJOclUyTmhiR0Z5S0NrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JqWVhObElDZHdiR0ZwYmkxelkyRnNZWEluT2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUI1YVdWc1pDb2dkR2hwY3k1d1lYSnpaVkJzWVdsdVUyTmhiR0Z5S0NrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJQ0FnS25CaGNuTmxVM1J5WldGdEtDa2dlMXh1SUNBZ0lDQWdJQ0JzWlhRZ2JHbHVaU0E5SUhSb2FYTXVaMlYwVEdsdVpTZ3BPMXh1SUNBZ0lDQWdJQ0JwWmlBb2JHbHVaU0E5UFQwZ2JuVnNiQ2xjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCMGFHbHpMbk5sZEU1bGVIUW9KM04wY21WaGJTY3BPMXh1SUNBZ0lDQWdJQ0JwWmlBb2JHbHVaVnN3WFNBOVBUMGdRazlOS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0I1YVdWc1pDb2dkR2hwY3k1d2RYTm9RMjkxYm5Rb01TazdYRzRnSUNBZ0lDQWdJQ0FnSUNCc2FXNWxJRDBnYkdsdVpTNXpkV0p6ZEhKcGJtY29NU2s3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2FXWWdLR3hwYm1WYk1GMGdQVDA5SUNjbEp5a2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2JHVjBJR1JwY2tWdVpDQTlJR3hwYm1VdWJHVnVaM1JvTzF4dUlDQWdJQ0FnSUNBZ0lDQWdiR1YwSUdOeklEMGdiR2x1WlM1cGJtUmxlRTltS0Njakp5azdYRzRnSUNBZ0lDQWdJQ0FnSUNCM2FHbHNaU0FvWTNNZ0lUMDlJQzB4S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1kyOXVjM1FnWTJnZ1BTQnNhVzVsVzJOeklDMGdNVjA3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tHTm9JRDA5UFNBbklDY2dmSHdnWTJnZ1BUMDlJQ2RjWEhRbktTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdScGNrVnVaQ0E5SUdOeklDMGdNVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1luSmxZV3M3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCamN5QTlJR3hwYm1VdWFXNWtaWGhQWmlnbkl5Y3NJR056SUNzZ01TazdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnZDJocGJHVWdLSFJ5ZFdVcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCamFDQTlJR3hwYm1WYlpHbHlSVzVrSUMwZ01WMDdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhV1lnS0dOb0lEMDlQU0FuSUNjZ2ZId2dZMmdnUFQwOUlDZGNYSFFuS1Z4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmthWEpGYm1RZ0xUMGdNVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JsYkhObFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR0p5WldGck8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ2JpQTlJQ2g1YVdWc1pDb2dkR2hwY3k1d2RYTm9RMjkxYm5Rb1pHbHlSVzVrS1NrZ0t5QW9lV2xsYkdRcUlIUm9hWE11Y0hWemFGTndZV05sY3loMGNuVmxLU2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjVhV1ZzWkNvZ2RHaHBjeTV3ZFhOb1EyOTFiblFvYkdsdVpTNXNaVzVuZEdnZ0xTQnVLVHNnTHk4Z2NHOXpjMmxpYkdVZ1kyOXRiV1Z1ZEZ4dUlDQWdJQ0FnSUNBZ0lDQWdkR2hwY3k1d2RYTm9UbVYzYkdsdVpTZ3BPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUNkemRISmxZVzBuTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lHbG1JQ2gwYUdsekxtRjBUR2x1WlVWdVpDZ3BLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCemNDQTlJSGxwWld4a0tpQjBhR2x6TG5CMWMyaFRjR0ZqWlhNb2RISjFaU2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjVhV1ZzWkNvZ2RHaHBjeTV3ZFhOb1EyOTFiblFvYkdsdVpTNXNaVzVuZEdnZ0xTQnpjQ2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjVhV1ZzWkNvZ2RHaHBjeTV3ZFhOb1RtVjNiR2x1WlNncE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJQ2R6ZEhKbFlXMG5PMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUhscFpXeGtJRVJQUTFWTlJVNVVPMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdlV2xsYkdRcUlIUm9hWE11Y0dGeWMyVk1hVzVsVTNSaGNuUW9LVHRjYmlBZ0lDQjlYRzRnSUNBZ0tuQmhjbk5sVEdsdVpWTjBZWEowS0NrZ2UxeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCamFDQTlJSFJvYVhNdVkyaGhja0YwS0RBcE8xeHVJQ0FnSUNBZ0lDQnBaaUFvSVdOb0lDWW1JQ0YwYUdsekxtRjBSVzVrS1Z4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlIUm9hWE11YzJWMFRtVjRkQ2duYkdsdVpTMXpkR0Z5ZENjcE8xeHVJQ0FnSUNBZ0lDQnBaaUFvWTJnZ1BUMDlJQ2N0SnlCOGZDQmphQ0E5UFQwZ0p5NG5LU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFvSVhSb2FYTXVZWFJGYm1RZ0ppWWdJWFJvYVhNdWFHRnpRMmhoY25Nb05Da3BYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlIUm9hWE11YzJWMFRtVjRkQ2duYkdsdVpTMXpkR0Z5ZENjcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnWTI5dWMzUWdjeUE5SUhSb2FYTXVjR1ZsYXlnektUdGNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDZ29jeUE5UFQwZ0p5MHRMU2NnZkh3Z2N5QTlQVDBnSnk0dUxpY3BJQ1ltSUdselJXMXdkSGtvZEdocGN5NWphR0Z5UVhRb015a3BLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZVdsbGJHUXFJSFJvYVhNdWNIVnphRU52ZFc1MEtETXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSFJvYVhNdWFXNWtaVzUwVm1Gc2RXVWdQU0F3TzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhSb2FYTXVhVzVrWlc1MFRtVjRkQ0E5SURBN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhNZ1BUMDlJQ2N0TFMwbklEOGdKMlJ2WXljZ09pQW5jM1J5WldGdEp6dGNiaUFnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQjBhR2x6TG1sdVpHVnVkRlpoYkhWbElEMGdlV2xsYkdRcUlIUm9hWE11Y0hWemFGTndZV05sY3lobVlXeHpaU2s3WEc0Z0lDQWdJQ0FnSUdsbUlDaDBhR2x6TG1sdVpHVnVkRTVsZUhRZ1BpQjBhR2x6TG1sdVpHVnVkRlpoYkhWbElDWW1JQ0ZwYzBWdGNIUjVLSFJvYVhNdVkyaGhja0YwS0RFcEtTbGNiaUFnSUNBZ0lDQWdJQ0FnSUhSb2FYTXVhVzVrWlc1MFRtVjRkQ0E5SUhSb2FYTXVhVzVrWlc1MFZtRnNkV1U3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUI1YVdWc1pDb2dkR2hwY3k1d1lYSnpaVUpzYjJOclUzUmhjblFvS1R0Y2JpQWdJQ0I5WEc0Z0lDQWdLbkJoY25ObFFteHZZMnRUZEdGeWRDZ3BJSHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdXMk5vTUN3Z1kyZ3hYU0E5SUhSb2FYTXVjR1ZsYXlneUtUdGNiaUFnSUNBZ0lDQWdhV1lnS0NGamFERWdKaVlnSVhSb2FYTXVZWFJGYm1RcFhHNGdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdkR2hwY3k1elpYUk9aWGgwS0NkaWJHOWpheTF6ZEdGeWRDY3BPMXh1SUNBZ0lDQWdJQ0JwWmlBb0tHTm9NQ0E5UFQwZ0p5MG5JSHg4SUdOb01DQTlQVDBnSno4bklIeDhJR05vTUNBOVBUMGdKem9uS1NBbUppQnBjMFZ0Y0hSNUtHTm9NU2twSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJR052Ym5OMElHNGdQU0FvZVdsbGJHUXFJSFJvYVhNdWNIVnphRU52ZFc1MEtERXBLU0FySUNoNWFXVnNaQ29nZEdocGN5NXdkWE5vVTNCaFkyVnpLSFJ5ZFdVcEtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUhSb2FYTXVhVzVrWlc1MFRtVjRkQ0E5SUhSb2FYTXVhVzVrWlc1MFZtRnNkV1VnS3lBeE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZEdocGN5NXBibVJsYm5SV1lXeDFaU0FyUFNCdU8xeHVJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJSGxwWld4a0tpQjBhR2x6TG5CaGNuTmxRbXh2WTJ0VGRHRnlkQ2dwTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlBblpHOWpKenRjYmlBZ0lDQjlYRzRnSUNBZ0tuQmhjbk5sUkc5amRXMWxiblFvS1NCN1hHNGdJQ0FnSUNBZ0lIbHBaV3hrS2lCMGFHbHpMbkIxYzJoVGNHRmpaWE1vZEhKMVpTazdYRzRnSUNBZ0lDQWdJR052Ym5OMElHeHBibVVnUFNCMGFHbHpMbWRsZEV4cGJtVW9LVHRjYmlBZ0lDQWdJQ0FnYVdZZ0tHeHBibVVnUFQwOUlHNTFiR3dwWEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2RHaHBjeTV6WlhST1pYaDBLQ2RrYjJNbktUdGNiaUFnSUNBZ0lDQWdiR1YwSUc0Z1BTQjVhV1ZzWkNvZ2RHaHBjeTV3ZFhOb1NXNWthV05oZEc5eWN5Z3BPMXh1SUNBZ0lDQWdJQ0J6ZDJsMFkyZ2dLR3hwYm1WYmJsMHBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHTmhjMlVnSnlNbk9seHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIbHBaV3hrS2lCMGFHbHpMbkIxYzJoRGIzVnVkQ2hzYVc1bExteGxibWQwYUNBdElHNHBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0x5OGdabUZzYkhSb2NtOTFaMmhjYmlBZ0lDQWdJQ0FnSUNBZ0lHTmhjMlVnZFc1a1pXWnBibVZrT2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhscFpXeGtLaUIwYUdsekxuQjFjMmhPWlhkc2FXNWxLQ2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJSGxwWld4a0tpQjBhR2x6TG5CaGNuTmxUR2x1WlZOMFlYSjBLQ2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpZWE5sSUNkN0p6cGNiaUFnSUNBZ0lDQWdJQ0FnSUdOaGMyVWdKMXNuT2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhscFpXeGtLaUIwYUdsekxuQjFjMmhEYjNWdWRDZ3hLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IwYUdsekxtWnNiM2RMWlhrZ1BTQm1ZV3h6WlR0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCMGFHbHpMbVpzYjNkTVpYWmxiQ0E5SURFN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUNkbWJHOTNKenRjYmlBZ0lDQWdJQ0FnSUNBZ0lHTmhjMlVnSjMwbk9seHVJQ0FnSUNBZ0lDQWdJQ0FnWTJGelpTQW5YU2M2WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnTHk4Z2RHaHBjeUJwY3lCaGJpQmxjbkp2Y2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhscFpXeGtLaUIwYUdsekxuQjFjMmhEYjNWdWRDZ3hLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdKMlJ2WXljN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JqWVhObElDY3FKenBjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I1YVdWc1pDb2dkR2hwY3k1d2RYTm9WVzUwYVd3b2FYTk9iM1JCYm1Ob2IzSkRhR0Z5S1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnSjJSdll5YzdYRzRnSUNBZ0lDQWdJQ0FnSUNCallYTmxJQ2RjSWljNlhHNGdJQ0FnSUNBZ0lDQWdJQ0JqWVhObElGd2lKMXdpT2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUI1YVdWc1pDb2dkR2hwY3k1d1lYSnpaVkYxYjNSbFpGTmpZV3hoY2lncE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnWTJGelpTQW5mQ2M2WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpZWE5sSUNjK0p6cGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnVJQ3M5SUhscFpXeGtLaUIwYUdsekxuQmhjbk5sUW14dlkydFRZMkZzWVhKSVpXRmtaWElvS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCdUlDczlJSGxwWld4a0tpQjBhR2x6TG5CMWMyaFRjR0ZqWlhNb2RISjFaU2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZVdsbGJHUXFJSFJvYVhNdWNIVnphRU52ZFc1MEtHeHBibVV1YkdWdVozUm9JQzBnYmlrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2VXbGxiR1FxSUhSb2FYTXVjSFZ6YUU1bGQyeHBibVVvS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnZVdsbGJHUXFJSFJvYVhNdWNHRnljMlZDYkc5amExTmpZV3hoY2lncE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnWkdWbVlYVnNkRHBjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdlV2xsYkdRcUlIUm9hWE11Y0dGeWMyVlFiR0ZwYmxOallXeGhjaWdwTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dUlDQWdJQ3B3WVhKelpVWnNiM2REYjJ4c1pXTjBhVzl1S0NrZ2UxeHVJQ0FnSUNBZ0lDQnNaWFFnYm13c0lITndPMXh1SUNBZ0lDQWdJQ0JzWlhRZ2FXNWtaVzUwSUQwZ0xURTdYRzRnSUNBZ0lDQWdJR1J2SUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJRzVzSUQwZ2VXbGxiR1FxSUhSb2FYTXVjSFZ6YUU1bGQyeHBibVVvS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJR2xtSUNodWJDQStJREFwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCemNDQTlJSGxwWld4a0tpQjBhR2x6TG5CMWMyaFRjR0ZqWlhNb1ptRnNjMlVwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhSb2FYTXVhVzVrWlc1MFZtRnNkV1VnUFNCcGJtUmxiblFnUFNCemNEdGNiaUFnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQWdJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lITndJRDBnTUR0Y2JpQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNBZ0lITndJQ3M5SUhscFpXeGtLaUIwYUdsekxuQjFjMmhUY0dGalpYTW9kSEoxWlNrN1hHNGdJQ0FnSUNBZ0lIMGdkMmhwYkdVZ0tHNXNJQ3NnYzNBZ1BpQXdLVHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdiR2x1WlNBOUlIUm9hWE11WjJWMFRHbHVaU2dwTzF4dUlDQWdJQ0FnSUNCcFppQW9iR2x1WlNBOVBUMGdiblZzYkNsY2JpQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQjBhR2x6TG5ObGRFNWxlSFFvSjJac2IzY25LVHRjYmlBZ0lDQWdJQ0FnYVdZZ0tDaHBibVJsYm5RZ0lUMDlJQzB4SUNZbUlHbHVaR1Z1ZENBOElIUm9hWE11YVc1a1pXNTBUbVY0ZENBbUppQnNhVzVsV3pCZElDRTlQU0FuSXljcElIeDhYRzRnSUNBZ0lDQWdJQ0FnSUNBb2FXNWtaVzUwSUQwOVBTQXdJQ1ltWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnS0d4cGJtVXVjM1JoY25SelYybDBhQ2duTFMwdEp5a2dmSHdnYkdsdVpTNXpkR0Z5ZEhOWGFYUm9LQ2N1TGk0bktTa2dKaVpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwYzBWdGNIUjVLR3hwYm1WYk0xMHBLU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdMeThnUVd4c2IzZHBibWNnWm05eUlIUm9aU0IwWlhKdGFXNWhiQ0JkSUc5eUlIMGdZWFFnZEdobElITmhiV1VnS0hKaGRHaGxjaUIwYUdGdUlHZHlaV0YwWlhJcFhHNGdJQ0FnSUNBZ0lDQWdJQ0F2THlCcGJtUmxiblFnYkdWMlpXd2dZWE1nZEdobElHbHVhWFJwWVd3Z1d5QnZjaUI3SUdseklIUmxZMmh1YVdOaGJHeDVJR2x1ZG1Gc2FXUXNJR0oxZEZ4dUlDQWdJQ0FnSUNBZ0lDQWdMeThnWm1GcGJHbHVaeUJvWlhKbElIZHZkV3hrSUdKbElITjFjbkJ5YVhOcGJtY2dkRzhnZFhObGNuTXVYRzRnSUNBZ0lDQWdJQ0FnSUNCamIyNXpkQ0JoZEVac2IzZEZibVJOWVhKclpYSWdQU0JwYm1SbGJuUWdQVDA5SUhSb2FYTXVhVzVrWlc1MFRtVjRkQ0F0SURFZ0ppWmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjBhR2x6TG1ac2IzZE1aWFpsYkNBOVBUMGdNU0FtSmx4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNoc2FXNWxXekJkSUQwOVBTQW5YU2NnZkh3Z2JHbHVaVnN3WFNBOVBUMGdKMzBuS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJR2xtSUNnaFlYUkdiRzkzUlc1a1RXRnlhMlZ5S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0x5OGdkR2hwY3lCcGN5QmhiaUJsY25KdmNseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIUm9hWE11Wm14dmQweGxkbVZzSUQwZ01EdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjVhV1ZzWkNCR1RFOVhYMFZPUkR0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnZVdsbGJHUXFJSFJvYVhNdWNHRnljMlZNYVc1bFUzUmhjblFvS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCc1pYUWdiaUE5SURBN1hHNGdJQ0FnSUNBZ0lIZG9hV3hsSUNoc2FXNWxXMjVkSUQwOVBTQW5MQ2NwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJRzRnS3owZ2VXbGxiR1FxSUhSb2FYTXVjSFZ6YUVOdmRXNTBLREVwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdiaUFyUFNCNWFXVnNaQ29nZEdocGN5NXdkWE5vVTNCaFkyVnpLSFJ5ZFdVcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZEdocGN5NW1iRzkzUzJWNUlEMGdabUZzYzJVN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdiaUFyUFNCNWFXVnNaQ29nZEdocGN5NXdkWE5vU1c1a2FXTmhkRzl5Y3lncE8xeHVJQ0FnSUNBZ0lDQnpkMmwwWTJnZ0tHeHBibVZiYmwwcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUdOaGMyVWdkVzVrWldacGJtVmtPbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQW5abXh2ZHljN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JqWVhObElDY2pKenBjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I1YVdWc1pDb2dkR2hwY3k1d2RYTm9RMjkxYm5Rb2JHbHVaUzVzWlc1bmRHZ2dMU0J1S1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnSjJac2IzY25PMXh1SUNBZ0lDQWdJQ0FnSUNBZ1kyRnpaU0FuZXljNlhHNGdJQ0FnSUNBZ0lDQWdJQ0JqWVhObElDZGJKenBjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I1YVdWc1pDb2dkR2hwY3k1d2RYTm9RMjkxYm5Rb01TazdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdkR2hwY3k1bWJHOTNTMlY1SUQwZ1ptRnNjMlU3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZEdocGN5NW1iRzkzVEdWMlpXd2dLejBnTVR0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnSjJac2IzY25PMXh1SUNBZ0lDQWdJQ0FnSUNBZ1kyRnpaU0FuZlNjNlhHNGdJQ0FnSUNBZ0lDQWdJQ0JqWVhObElDZGRKenBjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I1YVdWc1pDb2dkR2hwY3k1d2RYTm9RMjkxYm5Rb01TazdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdkR2hwY3k1bWJHOTNTMlY1SUQwZ2RISjFaVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IwYUdsekxtWnNiM2RNWlhabGJDQXRQU0F4TzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUIwYUdsekxtWnNiM2RNWlhabGJDQS9JQ2RtYkc5M0p5QTZJQ2RrYjJNbk8xeHVJQ0FnSUNBZ0lDQWdJQ0FnWTJGelpTQW5LaWM2WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZVdsbGJHUXFJSFJvYVhNdWNIVnphRlZ1ZEdsc0tHbHpUbTkwUVc1amFHOXlRMmhoY2lrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUNkbWJHOTNKenRjYmlBZ0lDQWdJQ0FnSUNBZ0lHTmhjMlVnSjF3aUp6cGNiaUFnSUNBZ0lDQWdJQ0FnSUdOaGMyVWdYQ0luWENJNlhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RHaHBjeTVtYkc5M1MyVjVJRDBnZEhKMVpUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2VXbGxiR1FxSUhSb2FYTXVjR0Z5YzJWUmRXOTBaV1JUWTJGc1lYSW9LVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHTmhjMlVnSnpvbk9pQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ2JtVjRkQ0E5SUhSb2FYTXVZMmhoY2tGMEtERXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNoMGFHbHpMbVpzYjNkTFpYa2dmSHdnYVhORmJYQjBlU2h1WlhoMEtTQjhmQ0J1WlhoMElEMDlQU0FuTENjcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZEdocGN5NW1iRzkzUzJWNUlEMGdabUZzYzJVN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSGxwWld4a0tpQjBhR2x6TG5CMWMyaERiM1Z1ZENneEtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZVdsbGJHUXFJSFJvYVhNdWNIVnphRk53WVdObGN5aDBjblZsS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlDZG1iRzkzSnp0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ0lDQXZMeUJtWVd4c2RHaHliM1ZuYUZ4dUlDQWdJQ0FnSUNBZ0lDQWdaR1ZtWVhWc2REcGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjBhR2x6TG1ac2IzZExaWGtnUFNCbVlXeHpaVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdlV2xsYkdRcUlIUm9hWE11Y0dGeWMyVlFiR0ZwYmxOallXeGhjaWdwTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dUlDQWdJQ3B3WVhKelpWRjFiM1JsWkZOallXeGhjaWdwSUh0Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnY1hWdmRHVWdQU0IwYUdsekxtTm9ZWEpCZENnd0tUdGNiaUFnSUNBZ0lDQWdiR1YwSUdWdVpDQTlJSFJvYVhNdVluVm1abVZ5TG1sdVpHVjRUMllvY1hWdmRHVXNJSFJvYVhNdWNHOXpJQ3NnTVNrN1hHNGdJQ0FnSUNBZ0lHbG1JQ2h4ZFc5MFpTQTlQVDBnWENJblhDSXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIZG9hV3hsSUNobGJtUWdJVDA5SUMweElDWW1JSFJvYVhNdVluVm1abVZ5VzJWdVpDQXJJREZkSUQwOVBTQmNJaWRjSWlsY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCbGJtUWdQU0IwYUdsekxtSjFabVpsY2k1cGJtUmxlRTltS0Z3aUoxd2lMQ0JsYm1RZ0t5QXlLVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDOHZJR1J2ZFdKc1pTMXhkVzkwWlZ4dUlDQWdJQ0FnSUNBZ0lDQWdkMmhwYkdVZ0tHVnVaQ0FoUFQwZ0xURXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JzWlhRZ2JpQTlJREE3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZDJocGJHVWdLSFJvYVhNdVluVm1abVZ5VzJWdVpDQXRJREVnTFNCdVhTQTlQVDBnSjF4Y1hGd25LVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCdUlDczlJREU3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tHNGdKU0F5SUQwOVBTQXdLVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JsYm1RZ1BTQjBhR2x6TG1KMVptWmxjaTVwYm1SbGVFOW1LQ2RjSWljc0lHVnVaQ0FySURFcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDOHZJRTl1YkhrZ2JHOXZhMmx1WnlCbWIzSWdibVYzYkdsdVpYTWdkMmwwYUdsdUlIUm9aU0J4ZFc5MFpYTmNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2NXSWdQU0IwYUdsekxtSjFabVpsY2k1emRXSnpkSEpwYm1jb01Dd2daVzVrS1R0Y2JpQWdJQ0FnSUNBZ2JHVjBJRzVzSUQwZ2NXSXVhVzVrWlhoUFppZ25YRnh1Snl3Z2RHaHBjeTV3YjNNcE8xeHVJQ0FnSUNBZ0lDQnBaaUFvYm13Z0lUMDlJQzB4S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0IzYUdsc1pTQW9ibXdnSVQwOUlDMHhLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWTI5dWMzUWdZM01nUFNCMGFHbHpMbU52Ym5ScGJuVmxVMk5oYkdGeUtHNXNJQ3NnTVNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLR056SUQwOVBTQXRNU2xjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1luSmxZV3M3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYm13Z1BTQnhZaTVwYm1SbGVFOW1LQ2RjWEc0bkxDQmpjeWs3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNCcFppQW9ibXdnSVQwOUlDMHhLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnTHk4Z2RHaHBjeUJwY3lCaGJpQmxjbkp2Y2lCallYVnpaV1FnWW5rZ1lXNGdkVzVsZUhCbFkzUmxaQ0IxYm1sdVpHVnVkRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR1Z1WkNBOUlHNXNJQzBnS0hGaVcyNXNJQzBnTVYwZ1BUMDlJQ2RjWEhJbklEOGdNaUE2SURFcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lHbG1JQ2hsYm1RZ1BUMDlJQzB4S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb0lYUm9hWE11WVhSRmJtUXBYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlIUm9hWE11YzJWMFRtVjRkQ2duY1hWdmRHVmtMWE5qWVd4aGNpY3BPMXh1SUNBZ0lDQWdJQ0FnSUNBZ1pXNWtJRDBnZEdocGN5NWlkV1ptWlhJdWJHVnVaM1JvTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lIbHBaV3hrS2lCMGFHbHpMbkIxYzJoVWIwbHVaR1Y0S0dWdVpDQXJJREVzSUdaaGJITmxLVHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJSFJvYVhNdVpteHZkMHhsZG1Wc0lEOGdKMlpzYjNjbklEb2dKMlJ2WXljN1hHNGdJQ0FnZlZ4dUlDQWdJQ3B3WVhKelpVSnNiMk5yVTJOaGJHRnlTR1ZoWkdWeUtDa2dlMXh1SUNBZ0lDQWdJQ0IwYUdsekxtSnNiMk5yVTJOaGJHRnlTVzVrWlc1MElEMGdMVEU3WEc0Z0lDQWdJQ0FnSUhSb2FYTXVZbXh2WTJ0VFkyRnNZWEpMWldWd0lEMGdabUZzYzJVN1hHNGdJQ0FnSUNBZ0lHeGxkQ0JwSUQwZ2RHaHBjeTV3YjNNN1hHNGdJQ0FnSUNBZ0lIZG9hV3hsSUNoMGNuVmxLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCamFDQTlJSFJvYVhNdVluVm1abVZ5V3lzcmFWMDdYRzRnSUNBZ0lDQWdJQ0FnSUNCcFppQW9ZMmdnUFQwOUlDY3JKeWxjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IwYUdsekxtSnNiMk5yVTJOaGJHRnlTMlZsY0NBOUlIUnlkV1U3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmxiSE5sSUdsbUlDaGphQ0ErSUNjd0p5QW1KaUJqYUNBOFBTQW5PU2NwWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZEdocGN5NWliRzlqYTFOallXeGhja2x1WkdWdWRDQTlJRTUxYldKbGNpaGphQ2tnTFNBeE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnWld4elpTQnBaaUFvWTJnZ0lUMDlJQ2N0SnlsY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnZVdsbGJHUXFJSFJvYVhNdWNIVnphRlZ1ZEdsc0tHTm9JRDArSUdselJXMXdkSGtvWTJncElIeDhJR05vSUQwOVBTQW5JeWNwTzF4dUlDQWdJSDFjYmlBZ0lDQXFjR0Z5YzJWQ2JHOWphMU5qWVd4aGNpZ3BJSHRjYmlBZ0lDQWdJQ0FnYkdWMElHNXNJRDBnZEdocGN5NXdiM01nTFNBeE95QXZMeUJ0WVhrZ1ltVWdMVEVnYVdZZ2RHaHBjeTV3YjNNZ1BUMDlJREJjYmlBZ0lDQWdJQ0FnYkdWMElHbHVaR1Z1ZENBOUlEQTdYRzRnSUNBZ0lDQWdJR3hsZENCamFEdGNiaUFnSUNBZ0lDQWdiRzl2Y0RvZ1ptOXlJQ2hzWlhRZ2FTQTlJSFJvYVhNdWNHOXpPeUFvWTJnZ1BTQjBhR2x6TG1KMVptWmxjbHRwWFNrN0lDc3JhU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdjM2RwZEdOb0lDaGphQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdOaGMyVWdKeUFuT2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBibVJsYm5RZ0t6MGdNVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1luSmxZV3M3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWTJGelpTQW5YRnh1SnpwY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdibXdnUFNCcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwYm1SbGJuUWdQU0F3TzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmljbVZoYXp0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCallYTmxJQ2RjWEhJbk9pQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdOdmJuTjBJRzVsZUhRZ1BTQjBhR2x6TG1KMVptWmxjbHRwSUNzZ01WMDdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDZ2hibVY0ZENBbUppQWhkR2hwY3k1aGRFVnVaQ2xjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQjBhR2x6TG5ObGRFNWxlSFFvSjJKc2IyTnJMWE5qWVd4aGNpY3BPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcFppQW9ibVY0ZENBOVBUMGdKMXhjYmljcFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5SUM4dklHWmhiR3gwYUhKdmRXZG9YRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdaR1ZtWVhWc2REcGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWW5KbFlXc2diRzl2Y0R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCcFppQW9JV05vSUNZbUlDRjBhR2x6TG1GMFJXNWtLVnh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhSb2FYTXVjMlYwVG1WNGRDZ25ZbXh2WTJzdGMyTmhiR0Z5SnlrN1hHNGdJQ0FnSUNBZ0lHbG1JQ2hwYm1SbGJuUWdQajBnZEdocGN5NXBibVJsYm5ST1pYaDBLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFvZEdocGN5NWliRzlqYTFOallXeGhja2x1WkdWdWRDQTlQVDBnTFRFcFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RHaHBjeTVwYm1SbGJuUk9aWGgwSUQwZ2FXNWtaVzUwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RHaHBjeTVwYm1SbGJuUk9aWGgwSUQxY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdkR2hwY3k1aWJHOWphMU5qWVd4aGNrbHVaR1Z1ZENBcklDaDBhR2x6TG1sdVpHVnVkRTVsZUhRZ1BUMDlJREFnUHlBeElEb2dkR2hwY3k1cGJtUmxiblJPWlhoMEtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQWdJR1J2SUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCamIyNXpkQ0JqY3lBOUlIUm9hWE11WTI5dWRHbHVkV1ZUWTJGc1lYSW9ibXdnS3lBeEtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBaaUFvWTNNZ1BUMDlJQzB4S1Z4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmljbVZoYXp0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCdWJDQTlJSFJvYVhNdVluVm1abVZ5TG1sdVpHVjRUMllvSjF4Y2JpY3NJR056S1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSDBnZDJocGJHVWdLRzVzSUNFOVBTQXRNU2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFvYm13Z1BUMDlJQzB4S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLQ0YwYUdsekxtRjBSVzVrS1Z4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2RHaHBjeTV6WlhST1pYaDBLQ2RpYkc5amF5MXpZMkZzWVhJbktUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnViQ0E5SUhSb2FYTXVZblZtWm1WeUxteGxibWQwYUR0Y2JpQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBdkx5QlVjbUZwYkdsdVp5QnBibk4xWm1acFkybGxiblJzZVNCcGJtUmxiblJsWkNCMFlXSnpJR0Z5WlNCcGJuWmhiR2xrTGx4dUlDQWdJQ0FnSUNBdkx5QlVieUJqWVhSamFDQjBhR0YwSUdSMWNtbHVaeUJ3WVhKemFXNW5MQ0IzWlNCcGJtTnNkV1JsSUhSb1pXMGdhVzRnZEdobElHSnNiMk5ySUhOallXeGhjaUIyWVd4MVpTNWNiaUFnSUNBZ0lDQWdiR1YwSUdrZ1BTQnViQ0FySURFN1hHNGdJQ0FnSUNBZ0lHTm9JRDBnZEdocGN5NWlkV1ptWlhKYmFWMDdYRzRnSUNBZ0lDQWdJSGRvYVd4bElDaGphQ0E5UFQwZ0p5QW5LVnh1SUNBZ0lDQWdJQ0FnSUNBZ1kyZ2dQU0IwYUdsekxtSjFabVpsY2xzcksybGRPMXh1SUNBZ0lDQWdJQ0JwWmlBb1kyZ2dQVDA5SUNkY1hIUW5LU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjNhR2xzWlNBb1kyZ2dQVDA5SUNkY1hIUW5JSHg4SUdOb0lEMDlQU0FuSUNjZ2ZId2dZMmdnUFQwOUlDZGNYSEluSUh4OElHTm9JRDA5UFNBblhGeHVKeWxjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JqYUNBOUlIUm9hWE11WW5WbVptVnlXeXNyYVYwN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J1YkNBOUlHa2dMU0F4TzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lHVnNjMlVnYVdZZ0tDRjBhR2x6TG1Kc2IyTnJVMk5oYkdGeVMyVmxjQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdaRzhnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUd4bGRDQnBJRDBnYm13Z0xTQXhPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR3hsZENCamFDQTlJSFJvYVhNdVluVm1abVZ5VzJsZE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2hqYUNBOVBUMGdKMXhjY2ljcFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR05vSUQwZ2RHaHBjeTVpZFdabVpYSmJMUzFwWFR0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCamIyNXpkQ0JzWVhOMFEyaGhjaUE5SUdrN0lDOHZJRVJ5YjNBZ2RHaGxJR3hwYm1VZ2FXWWdiR0Z6ZENCamFHRnlJRzV2ZENCdGIzSmxJR2x1WkdWdWRHVmtYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdkMmhwYkdVZ0tHTm9JRDA5UFNBbklDY3BYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdOb0lEMGdkR2hwY3k1aWRXWm1aWEpiTFMxcFhUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBaaUFvWTJnZ1BUMDlJQ2RjWEc0bklDWW1JR2tnUGowZ2RHaHBjeTV3YjNNZ0ppWWdhU0FySURFZ0t5QnBibVJsYm5RZ1BpQnNZWE4wUTJoaGNpbGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYm13Z1BTQnBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR1ZzYzJWY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZbkpsWVdzN1hHNGdJQ0FnSUNBZ0lDQWdJQ0I5SUhkb2FXeGxJQ2gwY25WbEtUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0I1YVdWc1pDQlRRMEZNUVZJN1hHNGdJQ0FnSUNBZ0lIbHBaV3hrS2lCMGFHbHpMbkIxYzJoVWIwbHVaR1Y0S0c1c0lDc2dNU3dnZEhKMVpTazdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQjVhV1ZzWkNvZ2RHaHBjeTV3WVhKelpVeHBibVZUZEdGeWRDZ3BPMXh1SUNBZ0lIMWNiaUFnSUNBcWNHRnljMlZRYkdGcGJsTmpZV3hoY2lncElIdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2FXNUdiRzkzSUQwZ2RHaHBjeTVtYkc5M1RHVjJaV3dnUGlBd08xeHVJQ0FnSUNBZ0lDQnNaWFFnWlc1a0lEMGdkR2hwY3k1d2IzTWdMU0F4TzF4dUlDQWdJQ0FnSUNCc1pYUWdhU0E5SUhSb2FYTXVjRzl6SUMwZ01UdGNiaUFnSUNBZ0lDQWdiR1YwSUdOb08xeHVJQ0FnSUNBZ0lDQjNhR2xzWlNBb0tHTm9JRDBnZEdocGN5NWlkV1ptWlhKYkt5dHBYU2twSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJR2xtSUNoamFDQTlQVDBnSnpvbktTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ2JtVjRkQ0E5SUhSb2FYTXVZblZtWm1WeVcya2dLeUF4WFR0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcFppQW9hWE5GYlhCMGVTaHVaWGgwS1NCOGZDQW9hVzVHYkc5M0lDWW1JR1pzYjNkSmJtUnBZMkYwYjNKRGFHRnljeTVvWVhNb2JtVjRkQ2twS1Z4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmljbVZoYXp0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCbGJtUWdQU0JwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ1pXeHpaU0JwWmlBb2FYTkZiWEIwZVNoamFDa3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JzWlhRZ2JtVjRkQ0E5SUhSb2FYTXVZblZtWm1WeVcya2dLeUF4WFR0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcFppQW9ZMmdnUFQwOUlDZGNYSEluS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNodVpYaDBJRDA5UFNBblhGeHVKeWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVNBclBTQXhPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZMmdnUFNBblhGeHVKenRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRzVsZUhRZ1BTQjBhR2x6TG1KMVptWmxjbHRwSUNzZ01WMDdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdaV3h6WlZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWlc1a0lEMGdhVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tHNWxlSFFnUFQwOUlDY2pKeUI4ZkNBb2FXNUdiRzkzSUNZbUlHWnNiM2RKYm1ScFkyRjBiM0pEYUdGeWN5NW9ZWE1vYm1WNGRDa3BLVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb1kyZ2dQVDA5SUNkY1hHNG5LU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHTnZibk4wSUdOeklEMGdkR2hwY3k1amIyNTBhVzUxWlZOallXeGhjaWhwSUNzZ01TazdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDaGpjeUE5UFQwZ0xURXBYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmljbVZoYXp0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhU0E5SUUxaGRHZ3ViV0Y0S0drc0lHTnpJQzBnTWlrN0lDOHZJSFJ2SUdGa2RtRnVZMlVzSUdKMWRDQnpkR2xzYkNCaFkyTnZkVzUwSUdadmNpQW5JQ01uWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tHbHVSbXh2ZHlBbUppQm1iRzkzU1c1a2FXTmhkRzl5UTJoaGNuTXVhR0Z6S0dOb0tTbGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWW5KbFlXczdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdaVzVrSUQwZ2FUdGNiaUFnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQnBaaUFvSVdOb0lDWW1JQ0YwYUdsekxtRjBSVzVrS1Z4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlIUm9hWE11YzJWMFRtVjRkQ2duY0d4aGFXNHRjMk5oYkdGeUp5azdYRzRnSUNBZ0lDQWdJSGxwWld4a0lGTkRRVXhCVWp0Y2JpQWdJQ0FnSUNBZ2VXbGxiR1FxSUhSb2FYTXVjSFZ6YUZSdlNXNWtaWGdvWlc1a0lDc2dNU3dnZEhKMVpTazdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQnBia1pzYjNjZ1B5QW5abXh2ZHljZ09pQW5aRzlqSnp0Y2JpQWdJQ0I5WEc0Z0lDQWdLbkIxYzJoRGIzVnVkQ2h1S1NCN1hHNGdJQ0FnSUNBZ0lHbG1JQ2h1SUQ0Z01Da2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2VXbGxiR1FnZEdocGN5NWlkV1ptWlhJdWMzVmljM1J5S0hSb2FYTXVjRzl6TENCdUtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUhSb2FYTXVjRzl6SUNzOUlHNDdYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnYmp0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z01EdGNiaUFnSUNCOVhHNGdJQ0FnS25CMWMyaFViMGx1WkdWNEtHa3NJR0ZzYkc5M1JXMXdkSGtwSUh0Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnY3lBOUlIUm9hWE11WW5WbVptVnlMbk5zYVdObEtIUm9hWE11Y0c5ekxDQnBLVHRjYmlBZ0lDQWdJQ0FnYVdZZ0tITXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIbHBaV3hrSUhNN1hHNGdJQ0FnSUNBZ0lDQWdJQ0IwYUdsekxuQnZjeUFyUFNCekxteGxibWQwYUR0Y2JpQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQnpMbXhsYm1kMGFEdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0JsYkhObElHbG1JQ2hoYkd4dmQwVnRjSFI1S1Z4dUlDQWdJQ0FnSUNBZ0lDQWdlV2xsYkdRZ0p5YzdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQXdPMXh1SUNBZ0lIMWNiaUFnSUNBcWNIVnphRWx1WkdsallYUnZjbk1vS1NCN1hHNGdJQ0FnSUNBZ0lITjNhWFJqYUNBb2RHaHBjeTVqYUdGeVFYUW9NQ2twSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJR05oYzJVZ0p5RW5PbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQW9LSGxwWld4a0tpQjBhR2x6TG5CMWMyaFVZV2NvS1NrZ0sxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FvZVdsbGJHUXFJSFJvYVhNdWNIVnphRk53WVdObGN5aDBjblZsS1NrZ0sxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FvZVdsbGJHUXFJSFJvYVhNdWNIVnphRWx1WkdsallYUnZjbk1vS1NrcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnWTJGelpTQW5KaWM2WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJQ2dvZVdsbGJHUXFJSFJvYVhNdWNIVnphRlZ1ZEdsc0tHbHpUbTkwUVc1amFHOXlRMmhoY2lrcElDdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnS0hscFpXeGtLaUIwYUdsekxuQjFjMmhUY0dGalpYTW9kSEoxWlNrcElDdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnS0hscFpXeGtLaUIwYUdsekxuQjFjMmhKYm1ScFkyRjBiM0p6S0NrcEtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUdOaGMyVWdKeTBuT2lBdkx5QjBhR2x6SUdseklHRnVJR1Z5Y205eVhHNGdJQ0FnSUNBZ0lDQWdJQ0JqWVhObElDYy9Kem9nTHk4Z2RHaHBjeUJwY3lCaGJpQmxjbkp2Y2lCdmRYUnphV1JsSUdac2IzY2dZMjlzYkdWamRHbHZibk5jYmlBZ0lDQWdJQ0FnSUNBZ0lHTmhjMlVnSnpvbk9pQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ2FXNUdiRzkzSUQwZ2RHaHBjeTVtYkc5M1RHVjJaV3dnUGlBd08xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHTnZibk4wSUdOb01TQTlJSFJvYVhNdVkyaGhja0YwS0RFcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2hwYzBWdGNIUjVLR05vTVNrZ2ZId2dLR2x1Um14dmR5QW1KaUJtYkc5M1NXNWthV05oZEc5eVEyaGhjbk11YUdGektHTm9NU2twS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNnaGFXNUdiRzkzS1Z4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZEdocGN5NXBibVJsYm5ST1pYaDBJRDBnZEdocGN5NXBibVJsYm5SV1lXeDFaU0FySURFN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR1ZzYzJVZ2FXWWdLSFJvYVhNdVpteHZkMHRsZVNsY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhSb2FYTXVabXh2ZDB0bGVTQTlJR1poYkhObE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdLQ2g1YVdWc1pDb2dkR2hwY3k1d2RYTm9RMjkxYm5Rb01Ta3BJQ3RjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ2g1YVdWc1pDb2dkR2hwY3k1d2RYTm9VM0JoWTJWektIUnlkV1VwS1NBclhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBb2VXbGxiR1FxSUhSb2FYTXVjSFZ6YUVsdVpHbGpZWFJ2Y25Nb0tTa3BPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdNRHRjYmlBZ0lDQjlYRzRnSUNBZ0tuQjFjMmhVWVdjb0tTQjdYRzRnSUNBZ0lDQWdJR2xtSUNoMGFHbHpMbU5vWVhKQmRDZ3hLU0E5UFQwZ0p6d25LU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnNaWFFnYVNBOUlIUm9hWE11Y0c5eklDc2dNanRjYmlBZ0lDQWdJQ0FnSUNBZ0lHeGxkQ0JqYUNBOUlIUm9hWE11WW5WbVptVnlXMmxkTzF4dUlDQWdJQ0FnSUNBZ0lDQWdkMmhwYkdVZ0tDRnBjMFZ0Y0hSNUtHTm9LU0FtSmlCamFDQWhQVDBnSno0bktWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHTm9JRDBnZEdocGN5NWlkV1ptWlhKYkt5dHBYVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCNWFXVnNaQ29nZEdocGN5NXdkWE5vVkc5SmJtUmxlQ2hqYUNBOVBUMGdKejRuSUQ4Z2FTQXJJREVnT2lCcExDQm1ZV3h6WlNrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JzWlhRZ2FTQTlJSFJvYVhNdWNHOXpJQ3NnTVR0Y2JpQWdJQ0FnSUNBZ0lDQWdJR3hsZENCamFDQTlJSFJvYVhNdVluVm1abVZ5VzJsZE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZDJocGJHVWdLR05vS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLSFJoWjBOb1lYSnpMbWhoY3loamFDa3BYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdOb0lEMGdkR2hwY3k1aWRXWm1aWEpiS3l0cFhUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmxiSE5sSUdsbUlDaGphQ0E5UFQwZ0p5VW5JQ1ltWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHaGxlRVJwWjJsMGN5NW9ZWE1vZEdocGN5NWlkV1ptWlhKYmFTQXJJREZkS1NBbUpseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JvWlhoRWFXZHBkSE11YUdGektIUm9hWE11WW5WbVptVnlXMmtnS3lBeVhTa3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1kyZ2dQU0IwYUdsekxtSjFabVpsY2xzb2FTQXJQU0F6S1YwN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHVnNjMlZjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1luSmxZV3M3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnZVdsbGJHUXFJSFJvYVhNdWNIVnphRlJ2U1c1a1pYZ29hU3dnWm1Gc2MyVXBPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdmVnh1SUNBZ0lDcHdkWE5vVG1WM2JHbHVaU2dwSUh0Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnWTJnZ1BTQjBhR2x6TG1KMVptWmxjbHQwYUdsekxuQnZjMTA3WEc0Z0lDQWdJQ0FnSUdsbUlDaGphQ0E5UFQwZ0oxeGNiaWNwWEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2VXbGxiR1FxSUhSb2FYTXVjSFZ6YUVOdmRXNTBLREVwTzF4dUlDQWdJQ0FnSUNCbGJITmxJR2xtSUNoamFDQTlQVDBnSjF4Y2NpY2dKaVlnZEdocGN5NWphR0Z5UVhRb01Ta2dQVDA5SUNkY1hHNG5LVnh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhscFpXeGtLaUIwYUdsekxuQjFjMmhEYjNWdWRDZ3lLVHRjYmlBZ0lDQWdJQ0FnWld4elpWeHVJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJREE3WEc0Z0lDQWdmVnh1SUNBZ0lDcHdkWE5vVTNCaFkyVnpLR0ZzYkc5M1ZHRmljeWtnZTF4dUlDQWdJQ0FnSUNCc1pYUWdhU0E5SUhSb2FYTXVjRzl6SUMwZ01UdGNiaUFnSUNBZ0lDQWdiR1YwSUdOb08xeHVJQ0FnSUNBZ0lDQmtieUI3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmphQ0E5SUhSb2FYTXVZblZtWm1WeVd5c3JhVjA3WEc0Z0lDQWdJQ0FnSUgwZ2QyaHBiR1VnS0dOb0lEMDlQU0FuSUNjZ2ZId2dLR0ZzYkc5M1ZHRmljeUFtSmlCamFDQTlQVDBnSjF4Y2RDY3BLVHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdiaUE5SUdrZ0xTQjBhR2x6TG5CdmN6dGNiaUFnSUNBZ0lDQWdhV1lnS0c0Z1BpQXdLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjVhV1ZzWkNCMGFHbHpMbUoxWm1abGNpNXpkV0p6ZEhJb2RHaHBjeTV3YjNNc0lHNHBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2RHaHBjeTV3YjNNZ1BTQnBPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJ1TzF4dUlDQWdJSDFjYmlBZ0lDQXFjSFZ6YUZWdWRHbHNLSFJsYzNRcElIdGNiaUFnSUNBZ0lDQWdiR1YwSUdrZ1BTQjBhR2x6TG5CdmN6dGNiaUFnSUNBZ0lDQWdiR1YwSUdOb0lEMGdkR2hwY3k1aWRXWm1aWEpiYVYwN1hHNGdJQ0FnSUNBZ0lIZG9hV3hsSUNnaGRHVnpkQ2hqYUNrcFhHNGdJQ0FnSUNBZ0lDQWdJQ0JqYUNBOUlIUm9hWE11WW5WbVptVnlXeXNyYVYwN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCNWFXVnNaQ29nZEdocGN5NXdkWE5vVkc5SmJtUmxlQ2hwTENCbVlXeHpaU2s3WEc0Z0lDQWdmVnh1ZlZ4dVhHNWxlSEJ2Y25RZ2V5Qk1aWGhsY2lCOU8xeHVJaXdnSWk4cUtseHVJQ29nVkhKaFkydHpJRzVsZDJ4cGJtVnpJR1IxY21sdVp5QndZWEp6YVc1bklHbHVJRzl5WkdWeUlIUnZJSEJ5YjNacFpHVWdZVzRnWldabWFXTnBaVzUwSUVGUVNTQm1iM0pjYmlBcUlHUmxkR1Z5YldsdWFXNW5JSFJvWlNCdmJtVXRhVzVrWlhobFpDQmdleUJzYVc1bExDQmpiMndnZldBZ2NHOXphWFJwYjI0Z1ptOXlJR0Z1ZVNCdlptWnpaWFJjYmlBcUlIZHBkR2hwYmlCMGFHVWdhVzV3ZFhRdVhHNGdLaTljYm1Oc1lYTnpJRXhwYm1WRGIzVnVkR1Z5SUh0Y2JpQWdJQ0JqYjI1emRISjFZM1J2Y2lncElIdGNiaUFnSUNBZ0lDQWdkR2hwY3k1c2FXNWxVM1JoY25SeklEMGdXMTA3WEc0Z0lDQWdJQ0FnSUM4cUtseHVJQ0FnSUNBZ0lDQWdLaUJUYUc5MWJHUWdZbVVnWTJGc2JHVmtJR2x1SUdGelkyVnVaR2x1WnlCdmNtUmxjaTRnVDNSb1pYSjNhWE5sTENCallXeHNYRzRnSUNBZ0lDQWdJQ0FxSUdCc2FXNWxRMjkxYm5SbGNpNXNhVzVsVTNSaGNuUnpMbk52Y25Rb0tXQWdZbVZtYjNKbElHTmhiR3hwYm1jZ1lHeHBibVZRYjNNb0tXQXVYRzRnSUNBZ0lDQWdJQ0FxTDF4dUlDQWdJQ0FnSUNCMGFHbHpMbUZrWkU1bGQweHBibVVnUFNBb2IyWm1jMlYwS1NBOVBpQjBhR2x6TG14cGJtVlRkR0Z5ZEhNdWNIVnphQ2h2Wm1aelpYUXBPMXh1SUNBZ0lDQWdJQ0F2S2lwY2JpQWdJQ0FnSUNBZ0lDb2dVR1Z5Wm05eWJYTWdZU0JpYVc1aGNua2djMlZoY21Ob0lHRnVaQ0J5WlhSMWNtNXpJSFJvWlNBeExXbHVaR1Y0WldRZ2V5QnNhVzVsTENCamIyd2dmVnh1SUNBZ0lDQWdJQ0FnS2lCd2IzTnBkR2x2YmlCdlppQmdiMlptYzJWMFlDNGdTV1lnWUd4cGJtVWdQVDA5SURCZ0xDQmdZV1JrVG1WM1RHbHVaV0FnYUdGeklHNWxkbVZ5SUdKbFpXNWNiaUFnSUNBZ0lDQWdJQ29nWTJGc2JHVmtJRzl5SUdCdlptWnpaWFJnSUdseklHSmxabTl5WlNCMGFHVWdabWx5YzNRZ2EyNXZkMjRnYm1WM2JHbHVaUzVjYmlBZ0lDQWdJQ0FnSUNvdlhHNGdJQ0FnSUNBZ0lIUm9hWE11YkdsdVpWQnZjeUE5SUNodlptWnpaWFFwSUQwK0lIdGNiaUFnSUNBZ0lDQWdJQ0FnSUd4bGRDQnNiM2NnUFNBd08xeHVJQ0FnSUNBZ0lDQWdJQ0FnYkdWMElHaHBaMmdnUFNCMGFHbHpMbXhwYm1WVGRHRnlkSE11YkdWdVozUm9PMXh1SUNBZ0lDQWdJQ0FnSUNBZ2QyaHBiR1VnS0d4dmR5QThJR2hwWjJncElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCdGFXUWdQU0FvYkc5M0lDc2dhR2xuYUNrZ1BqNGdNVHNnTHk4Z1RXRjBhQzVtYkc5dmNpZ29iRzkzSUNzZ2FHbG5hQ2tnTHlBeUtWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2gwYUdsekxteHBibVZUZEdGeWRITmJiV2xrWFNBOElHOW1abk5sZENsY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdiRzkzSUQwZ2JXbGtJQ3NnTVR0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCbGJITmxYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdocFoyZ2dQU0J0YVdRN1hHNGdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFvZEdocGN5NXNhVzVsVTNSaGNuUnpXMnh2ZDEwZ1BUMDlJRzltWm5ObGRDbGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2V5QnNhVzVsT2lCc2IzY2dLeUF4TENCamIydzZJREVnZlR0Y2JpQWdJQ0FnSUNBZ0lDQWdJR2xtSUNoc2IzY2dQVDA5SURBcFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhzZ2JHbHVaVG9nTUN3Z1kyOXNPaUJ2Wm1aelpYUWdmVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHTnZibk4wSUhOMFlYSjBJRDBnZEdocGN5NXNhVzVsVTNSaGNuUnpXMnh2ZHlBdElERmRPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhzZ2JHbHVaVG9nYkc5M0xDQmpiMnc2SUc5bVpuTmxkQ0F0SUhOMFlYSjBJQ3NnTVNCOU8xeHVJQ0FnSUNBZ0lDQjlPMXh1SUNBZ0lIMWNibjFjYmx4dVpYaHdiM0owSUhzZ1RHbHVaVU52ZFc1MFpYSWdmVHRjYmlJc0lDSnBiWEJ2Y25RZ2V5QjBiMnRsYmxSNWNHVWdmU0JtY205dElDY3VMMk56ZEM1cWN5YzdYRzVwYlhCdmNuUWdleUJNWlhobGNpQjlJR1p5YjIwZ0p5NHZiR1Y0WlhJdWFuTW5PMXh1WEc1bWRXNWpkR2x2YmlCcGJtTnNkV1JsYzFSdmEyVnVLR3hwYzNRc0lIUjVjR1VwSUh0Y2JpQWdJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0E4SUd4cGMzUXViR1Z1WjNSb095QXJLMmtwWEc0Z0lDQWdJQ0FnSUdsbUlDaHNhWE4wVzJsZExuUjVjR1VnUFQwOUlIUjVjR1VwWEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2RISjFaVHRjYmlBZ0lDQnlaWFIxY200Z1ptRnNjMlU3WEc1OVhHNW1kVzVqZEdsdmJpQm1hVzVrVG05dVJXMXdkSGxKYm1SbGVDaHNhWE4wS1NCN1hHNGdJQ0FnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnUENCc2FYTjBMbXhsYm1kMGFEc2dLeXRwS1NCN1hHNGdJQ0FnSUNBZ0lITjNhWFJqYUNBb2JHbHpkRnRwWFM1MGVYQmxLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpZWE5sSUNkemNHRmpaU2M2WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpZWE5sSUNkamIyMXRaVzUwSnpwY2JpQWdJQ0FnSUNBZ0lDQWdJR05oYzJVZ0oyNWxkMnhwYm1Vbk9seHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHSnlaV0ZyTzF4dUlDQWdJQ0FnSUNBZ0lDQWdaR1ZtWVhWc2REcGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2FUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lIMWNiaUFnSUNCeVpYUjFjbTRnTFRFN1hHNTlYRzVtZFc1amRHbHZiaUJwYzBac2IzZFViMnRsYmloMGIydGxiaWtnZTF4dUlDQWdJSE4zYVhSamFDQW9kRzlyWlc0L0xuUjVjR1VwSUh0Y2JpQWdJQ0FnSUNBZ1kyRnpaU0FuWVd4cFlYTW5PbHh1SUNBZ0lDQWdJQ0JqWVhObElDZHpZMkZzWVhJbk9seHVJQ0FnSUNBZ0lDQmpZWE5sSUNkemFXNW5iR1V0Y1hWdmRHVmtMWE5qWVd4aGNpYzZYRzRnSUNBZ0lDQWdJR05oYzJVZ0oyUnZkV0pzWlMxeGRXOTBaV1F0YzJOaGJHRnlKenBjYmlBZ0lDQWdJQ0FnWTJGelpTQW5abXh2ZHkxamIyeHNaV04wYVc5dUp6cGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUIwY25WbE8xeHVJQ0FnSUNBZ0lDQmtaV1poZFd4ME9seHVJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJR1poYkhObE8xeHVJQ0FnSUgxY2JuMWNibVoxYm1OMGFXOXVJR2RsZEZCeVpYWlFjbTl3Y3lod1lYSmxiblFwSUh0Y2JpQWdJQ0J6ZDJsMFkyZ2dLSEJoY21WdWRDNTBlWEJsS1NCN1hHNGdJQ0FnSUNBZ0lHTmhjMlVnSjJSdlkzVnRaVzUwSnpwY2JpQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQndZWEpsYm5RdWMzUmhjblE3WEc0Z0lDQWdJQ0FnSUdOaGMyVWdKMkpzYjJOckxXMWhjQ2M2SUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJR052Ym5OMElHbDBJRDBnY0dGeVpXNTBMbWwwWlcxelczQmhjbVZ1ZEM1cGRHVnRjeTVzWlc1bmRHZ2dMU0F4WFR0Y2JpQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQnBkQzV6WlhBZ1B6OGdhWFF1YzNSaGNuUTdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnWTJGelpTQW5ZbXh2WTJzdGMyVnhKenBjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCd1lYSmxiblF1YVhSbGJYTmJjR0Z5Wlc1MExtbDBaVzF6TG14bGJtZDBhQ0F0SURGZExuTjBZWEowTzF4dUlDQWdJQ0FnSUNBdktpQnBjM1JoYm1KMWJDQnBaMjV2Y21VZ2JtVjRkQ0J6YUc5MWJHUWdibTkwSUdoaGNIQmxiaUFxTDF4dUlDQWdJQ0FnSUNCa1pXWmhkV3gwT2x4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlGdGRPMXh1SUNBZ0lIMWNibjFjYmk4cUtpQk9iM1JsT2lCTllYa2diVzlrYVdaNUlHbHVjSFYwSUdGeWNtRjVJQ292WEc1bWRXNWpkR2x2YmlCblpYUkdhWEp6ZEV0bGVWTjBZWEowVUhKdmNITW9jSEpsZGlrZ2UxeHVJQ0FnSUdsbUlDaHdjbVYyTG14bGJtZDBhQ0E5UFQwZ01DbGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlGdGRPMXh1SUNBZ0lHeGxkQ0JwSUQwZ2NISmxkaTVzWlc1bmRHZzdYRzRnSUNBZ2JHOXZjRG9nZDJocGJHVWdLQzB0YVNBK1BTQXdLU0I3WEc0Z0lDQWdJQ0FnSUhOM2FYUmphQ0FvY0hKbGRsdHBYUzUwZVhCbEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCallYTmxJQ2RrYjJNdGMzUmhjblFuT2x4dUlDQWdJQ0FnSUNBZ0lDQWdZMkZ6WlNBblpYaHdiR2xqYVhRdGEyVjVMV2x1WkNjNlhHNGdJQ0FnSUNBZ0lDQWdJQ0JqWVhObElDZHRZWEF0ZG1Gc2RXVXRhVzVrSnpwY2JpQWdJQ0FnSUNBZ0lDQWdJR05oYzJVZ0ozTmxjUzFwZEdWdExXbHVaQ2M2WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpZWE5sSUNkdVpYZHNhVzVsSnpwY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCaWNtVmhheUJzYjI5d08xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVJQ0FnSUhkb2FXeGxJQ2h3Y21WMld5c3JhVjAvTG5SNWNHVWdQVDA5SUNkemNHRmpaU2NwSUh0Y2JpQWdJQ0FnSUNBZ0x5b2diRzl2Y0NBcUwxeHVJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNtNGdjSEpsZGk1emNHeHBZMlVvYVN3Z2NISmxkaTVzWlc1bmRHZ3BPMXh1ZlZ4dVpuVnVZM1JwYjI0Z1ptbDRSbXh2ZDFObGNVbDBaVzF6S0daaktTQjdYRzRnSUNBZ2FXWWdLR1pqTG5OMFlYSjBMblI1Y0dVZ1BUMDlJQ2RtYkc5M0xYTmxjUzF6ZEdGeWRDY3BJSHRjYmlBZ0lDQWdJQ0FnWm05eUlDaGpiMjV6ZENCcGRDQnZaaUJtWXk1cGRHVnRjeWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lnS0dsMExuTmxjQ0FtSmx4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNGcGRDNTJZV3gxWlNBbUpseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDRnBibU5zZFdSbGMxUnZhMlZ1S0dsMExuTjBZWEowTENBblpYaHdiR2xqYVhRdGEyVjVMV2x1WkNjcElDWW1YRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJV2x1WTJ4MVpHVnpWRzlyWlc0b2FYUXVjMlZ3TENBbmJXRndMWFpoYkhWbExXbHVaQ2NwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLR2wwTG10bGVTbGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVhRdWRtRnNkV1VnUFNCcGRDNXJaWGs3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWkdWc1pYUmxJR2wwTG10bGVUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBaaUFvYVhOR2JHOTNWRzlyWlc0b2FYUXVkbUZzZFdVcEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDaHBkQzUyWVd4MVpTNWxibVFwWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JCY25KaGVTNXdjbTkwYjNSNWNHVXVjSFZ6YUM1aGNIQnNlU2hwZEM1MllXeDFaUzVsYm1Rc0lHbDBMbk5sY0NrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR1ZzYzJWY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsMExuWmhiSFZsTG1WdVpDQTlJR2wwTG5ObGNEdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdaV3h6WlZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQkJjbkpoZVM1d2NtOTBiM1I1Y0dVdWNIVnphQzVoY0hCc2VTaHBkQzV6ZEdGeWRDd2dhWFF1YzJWd0tUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmtaV3hsZEdVZ2FYUXVjMlZ3TzF4dUlDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdmVnh1ZlZ4dUx5b3FYRzRnS2lCQklGbEJUVXdnWTI5dVkzSmxkR1VnYzNsdWRHRjRJSFJ5WldVZ0tFTlRWQ2tnY0dGeWMyVnlYRzRnS2x4dUlDb2dZR0JnZEhOY2JpQXFJR052Ym5OMElITnlZem9nYzNSeWFXNW5JRDBnTGk0dVhHNGdLaUJtYjNJZ0tHTnZibk4wSUhSdmEyVnVJRzltSUc1bGR5QlFZWEp6WlhJb0tTNXdZWEp6WlNoemNtTXBLU0I3WEc0Z0tpQWdJQzh2SUhSdmEyVnVPaUJVYjJ0bGJseHVJQ29nZlZ4dUlDb2dZR0JnWEc0Z0tseHVJQ29nVkc4Z2RYTmxJSFJvWlNCd1lYSnpaWElnZDJsMGFDQmhJSFZ6WlhJdGNISnZkbWxrWldRZ2JHVjRaWEk2WEc0Z0tseHVJQ29nWUdCZ2RITmNiaUFxSUdaMWJtTjBhVzl1S2lCd1lYSnpaU2h6YjNWeVkyVTZJSE4wY21sdVp5d2diR1Y0WlhJNklFeGxlR1Z5S1NCN1hHNGdLaUFnSUdOdmJuTjBJSEJoY25ObGNpQTlJRzVsZHlCUVlYSnpaWElvS1Z4dUlDb2dJQ0JtYjNJZ0tHTnZibk4wSUd4bGVHVnRaU0J2WmlCc1pYaGxjaTVzWlhnb2MyOTFjbU5sS1NsY2JpQXFJQ0FnSUNCNWFXVnNaQ29nY0dGeWMyVnlMbTVsZUhRb2JHVjRaVzFsS1Z4dUlDb2dJQ0I1YVdWc1pDb2djR0Z5YzJWeUxtVnVaQ2dwWEc0Z0tpQjlYRzRnS2x4dUlDb2dZMjl1YzNRZ2MzSmpPaUJ6ZEhKcGJtY2dQU0F1TGk1Y2JpQXFJR052Ym5OMElHeGxlR1Z5SUQwZ2JtVjNJRXhsZUdWeUtDbGNiaUFxSUdadmNpQW9ZMjl1YzNRZ2RHOXJaVzRnYjJZZ2NHRnljMlVvYzNKakxDQnNaWGhsY2lrcElIdGNiaUFxSUNBZ0x5OGdkRzlyWlc0NklGUnZhMlZ1WEc0Z0tpQjlYRzRnS2lCZ1lHQmNiaUFxTDF4dVkyeGhjM01nVUdGeWMyVnlJSHRjYmlBZ0lDQXZLaXBjYmlBZ0lDQWdLaUJBY0dGeVlXMGdiMjVPWlhkTWFXNWxJQzBnU1dZZ1pHVm1hVzVsWkN3Z1kyRnNiR1ZrSUhObGNHRnlZWFJsYkhrZ2QybDBhQ0IwYUdVZ2MzUmhjblFnY0c5emFYUnBiMjRnYjJaY2JpQWdJQ0FnS2lBZ0lHVmhZMmdnYm1WM0lHeHBibVVnS0dsdUlHQndZWEp6WlNncFlDd2dhVzVqYkhWa2FXNW5JSFJvWlNCemRHRnlkQ0J2WmlCcGJuQjFkQ2t1WEc0Z0lDQWdJQ292WEc0Z0lDQWdZMjl1YzNSeWRXTjBiM0lvYjI1T1pYZE1hVzVsS1NCN1hHNGdJQ0FnSUNBZ0lDOHFLaUJKWmlCMGNuVmxMQ0J6Y0dGalpTQmhibVFnYzJWeGRXVnVZMlVnYVc1a2FXTmhkRzl5Y3lCamIzVnVkQ0JoY3lCcGJtUmxiblJoZEdsdmJpQXFMMXh1SUNBZ0lDQWdJQ0IwYUdsekxtRjBUbVYzVEdsdVpTQTlJSFJ5ZFdVN1hHNGdJQ0FnSUNBZ0lDOHFLaUJKWmlCMGNuVmxMQ0J1WlhoMElIUnZhMlZ1SUdseklHRWdjMk5oYkdGeUlIWmhiSFZsSUNvdlhHNGdJQ0FnSUNBZ0lIUm9hWE11WVhSVFkyRnNZWElnUFNCbVlXeHpaVHRjYmlBZ0lDQWdJQ0FnTHlvcUlFTjFjbkpsYm5RZ2FXNWtaVzUwWVhScGIyNGdiR1YyWld3Z0tpOWNiaUFnSUNBZ0lDQWdkR2hwY3k1cGJtUmxiblFnUFNBd08xeHVJQ0FnSUNBZ0lDQXZLaW9nUTNWeWNtVnVkQ0J2Wm1aelpYUWdjMmx1WTJVZ2RHaGxJSE4wWVhKMElHOW1JSEJoY25OcGJtY2dLaTljYmlBZ0lDQWdJQ0FnZEdocGN5NXZabVp6WlhRZ1BTQXdPMXh1SUNBZ0lDQWdJQ0F2S2lvZ1QyNGdkR2hsSUhOaGJXVWdiR2x1WlNCM2FYUm9JR0VnWW14dlkyc2diV0Z3SUd0bGVTQXFMMXh1SUNBZ0lDQWdJQ0IwYUdsekxtOXVTMlY1VEdsdVpTQTlJR1poYkhObE8xeHVJQ0FnSUNBZ0lDQXZLaW9nVkc5d0lHbHVaR2xqWVhSbGN5QjBhR1VnYm05a1pTQjBhR0YwSjNNZ1kzVnljbVZ1ZEd4NUlHSmxhVzVuSUdKMWFXeDBJQ292WEc0Z0lDQWdJQ0FnSUhSb2FYTXVjM1JoWTJzZ1BTQmJYVHRjYmlBZ0lDQWdJQ0FnTHlvcUlGUm9aU0J6YjNWeVkyVWdiMllnZEdobElHTjFjbkpsYm5RZ2RHOXJaVzRzSUhObGRDQnBiaUJ3WVhKelpTZ3BJQ292WEc0Z0lDQWdJQ0FnSUhSb2FYTXVjMjkxY21ObElEMGdKeWM3WEc0Z0lDQWdJQ0FnSUM4cUtpQlVhR1VnZEhsd1pTQnZaaUIwYUdVZ1kzVnljbVZ1ZENCMGIydGxiaXdnYzJWMElHbHVJSEJoY25ObEtDa2dLaTljYmlBZ0lDQWdJQ0FnZEdocGN5NTBlWEJsSUQwZ0p5YzdYRzRnSUNBZ0lDQWdJQzh2SUUxMWMzUWdZbVVnWkdWbWFXNWxaQ0JoWm5SbGNpQmdibVY0ZENncFlGeHVJQ0FnSUNBZ0lDQjBhR2x6TG14bGVHVnlJRDBnYm1WM0lFeGxlR1Z5S0NrN1hHNGdJQ0FnSUNBZ0lIUm9hWE11YjI1T1pYZE1hVzVsSUQwZ2IyNU9aWGRNYVc1bE8xeHVJQ0FnSUgxY2JpQWdJQ0F2S2lwY2JpQWdJQ0FnS2lCUVlYSnpaU0JnYzI5MWNtTmxZQ0JoY3lCaElGbEJUVXdnYzNSeVpXRnRMbHh1SUNBZ0lDQXFJRWxtSUdCcGJtTnZiWEJzWlhSbFlDd2dZU0J3WVhKMElHOW1JSFJvWlNCc1lYTjBJR3hwYm1VZ2JXRjVJR0psSUd4bFpuUWdZWE1nWVNCaWRXWm1aWElnWm05eUlIUm9aU0J1WlhoMElHTmhiR3d1WEc0Z0lDQWdJQ3BjYmlBZ0lDQWdLaUJGY25KdmNuTWdZWEpsSUc1dmRDQjBhSEp2ZDI0c0lHSjFkQ0I1YVdWc1pHVmtJR0Z6SUdCN0lIUjVjR1U2SUNkbGNuSnZjaWNzSUcxbGMzTmhaMlVnZldBZ2RHOXJaVzV6TGx4dUlDQWdJQ0FxWEc0Z0lDQWdJQ29nUUhKbGRIVnlibk1nUVNCblpXNWxjbUYwYjNJZ2IyWWdkRzlyWlc1eklISmxjSEpsYzJWdWRHbHVaeUJsWVdOb0lHUnBjbVZqZEdsMlpTd2daRzlqZFcxbGJuUXNJR0Z1WkNCdmRHaGxjaUJ6ZEhKMVkzUjFjbVV1WEc0Z0lDQWdJQ292WEc0Z0lDQWdLbkJoY25ObEtITnZkWEpqWlN3Z2FXNWpiMjF3YkdWMFpTQTlJR1poYkhObEtTQjdYRzRnSUNBZ0lDQWdJR2xtSUNoMGFHbHpMbTl1VG1WM1RHbHVaU0FtSmlCMGFHbHpMbTltWm5ObGRDQTlQVDBnTUNsY2JpQWdJQ0FnSUNBZ0lDQWdJSFJvYVhNdWIyNU9aWGRNYVc1bEtEQXBPMXh1SUNBZ0lDQWdJQ0JtYjNJZ0tHTnZibk4wSUd4bGVHVnRaU0J2WmlCMGFHbHpMbXhsZUdWeUxteGxlQ2h6YjNWeVkyVXNJR2x1WTI5dGNHeGxkR1VwS1Z4dUlDQWdJQ0FnSUNBZ0lDQWdlV2xsYkdRcUlIUm9hWE11Ym1WNGRDaHNaWGhsYldVcE8xeHVJQ0FnSUNBZ0lDQnBaaUFvSVdsdVkyOXRjR3hsZEdVcFhHNGdJQ0FnSUNBZ0lDQWdJQ0I1YVdWc1pDb2dkR2hwY3k1bGJtUW9LVHRjYmlBZ0lDQjlYRzRnSUNBZ0x5b3FYRzRnSUNBZ0lDb2dRV1IyWVc1alpTQjBhR1VnY0dGeWMyVnlJR0o1SUhSb1pTQmdjMjkxY21ObFlDQnZaaUJ2Ym1VZ2JHVjRhV05oYkNCMGIydGxiaTVjYmlBZ0lDQWdLaTljYmlBZ0lDQXFibVY0ZENoemIzVnlZMlVwSUh0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTV6YjNWeVkyVWdQU0J6YjNWeVkyVTdYRzRnSUNBZ0lDQWdJR2xtSUNoMGFHbHpMbUYwVTJOaGJHRnlLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjBhR2x6TG1GMFUyTmhiR0Z5SUQwZ1ptRnNjMlU3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjVhV1ZzWkNvZ2RHaHBjeTV6ZEdWd0tDazdYRzRnSUNBZ0lDQWdJQ0FnSUNCMGFHbHpMbTltWm5ObGRDQXJQU0J6YjNWeVkyVXViR1Z1WjNSb08xeHVJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJSFI1Y0dVZ1BTQjBiMnRsYmxSNWNHVW9jMjkxY21ObEtUdGNiaUFnSUNBZ0lDQWdhV1lnS0NGMGVYQmxLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCdFpYTnpZV2RsSUQwZ1lFNXZkQ0JoSUZsQlRVd2dkRzlyWlc0NklDUjdjMjkxY21ObGZXQTdYRzRnSUNBZ0lDQWdJQ0FnSUNCNWFXVnNaQ29nZEdocGN5NXdiM0FvZXlCMGVYQmxPaUFuWlhKeWIzSW5MQ0J2Wm1aelpYUTZJSFJvYVhNdWIyWm1jMlYwTENCdFpYTnpZV2RsTENCemIzVnlZMlVnZlNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0IwYUdsekxtOW1abk5sZENBclBTQnpiM1Z5WTJVdWJHVnVaM1JvTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lHVnNjMlVnYVdZZ0tIUjVjR1VnUFQwOUlDZHpZMkZzWVhJbktTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCMGFHbHpMbUYwVG1WM1RHbHVaU0E5SUdaaGJITmxPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2RHaHBjeTVoZEZOallXeGhjaUE5SUhSeWRXVTdYRzRnSUNBZ0lDQWdJQ0FnSUNCMGFHbHpMblI1Y0dVZ1BTQW5jMk5oYkdGeUp6dGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0JsYkhObElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUhSb2FYTXVkSGx3WlNBOUlIUjVjR1U3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjVhV1ZzWkNvZ2RHaHBjeTV6ZEdWd0tDazdYRzRnSUNBZ0lDQWdJQ0FnSUNCemQybDBZMmdnS0hSNWNHVXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JqWVhObElDZHVaWGRzYVc1bEp6cGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZEdocGN5NWhkRTVsZDB4cGJtVWdQU0IwY25WbE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IwYUdsekxtbHVaR1Z1ZENBOUlEQTdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDaDBhR2x6TG05dVRtVjNUR2x1WlNsY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhSb2FYTXViMjVPWlhkTWFXNWxLSFJvYVhNdWIyWm1jMlYwSUNzZ2MyOTFjbU5sTG14bGJtZDBhQ2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHSnlaV0ZyTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdOaGMyVWdKM053WVdObEp6cGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tIUm9hWE11WVhST1pYZE1hVzVsSUNZbUlITnZkWEpqWlZzd1hTQTlQVDBnSnlBbktWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RHaHBjeTVwYm1SbGJuUWdLejBnYzI5MWNtTmxMbXhsYm1kMGFEdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWW5KbFlXczdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZMkZ6WlNBblpYaHdiR2xqYVhRdGEyVjVMV2x1WkNjNlhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1kyRnpaU0FuYldGd0xYWmhiSFZsTFdsdVpDYzZYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZMkZ6WlNBbmMyVnhMV2wwWlcwdGFXNWtKenBjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLSFJvYVhNdVlYUk9aWGRNYVc1bEtWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RHaHBjeTVwYm1SbGJuUWdLejBnYzI5MWNtTmxMbXhsYm1kMGFEdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWW5KbFlXczdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZMkZ6WlNBblpHOWpMVzF2WkdVbk9seHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHTmhjMlVnSjJac2IzY3RaWEp5YjNJdFpXNWtKenBjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1TzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdSbFptRjFiSFE2WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIUm9hWE11WVhST1pYZE1hVzVsSUQwZ1ptRnNjMlU3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNCMGFHbHpMbTltWm5ObGRDQXJQU0J6YjNWeVkyVXViR1Z1WjNSb08xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVJQ0FnSUM4cUtpQkRZV3hzSUdGMElHVnVaQ0J2WmlCcGJuQjFkQ0IwYnlCd2RYTm9JRzkxZENCaGJua2djbVZ0WVdsdWFXNW5JR052Ym5OMGNuVmpkR2x2Ym5NZ0tpOWNiaUFnSUNBcVpXNWtLQ2tnZTF4dUlDQWdJQ0FnSUNCM2FHbHNaU0FvZEdocGN5NXpkR0ZqYXk1c1pXNW5kR2dnUGlBd0tWeHVJQ0FnSUNBZ0lDQWdJQ0FnZVdsbGJHUXFJSFJvYVhNdWNHOXdLQ2s3WEc0Z0lDQWdmVnh1SUNBZ0lHZGxkQ0J6YjNWeVkyVlViMnRsYmlncElIdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2MzUWdQU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjBlWEJsT2lCMGFHbHpMblI1Y0dVc1hHNGdJQ0FnSUNBZ0lDQWdJQ0J2Wm1aelpYUTZJSFJvYVhNdWIyWm1jMlYwTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdhVzVrWlc1ME9pQjBhR2x6TG1sdVpHVnVkQ3hjYmlBZ0lDQWdJQ0FnSUNBZ0lITnZkWEpqWlRvZ2RHaHBjeTV6YjNWeVkyVmNiaUFnSUNBZ0lDQWdmVHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJSE4wTzF4dUlDQWdJSDFjYmlBZ0lDQXFjM1JsY0NncElIdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2RHOXdJRDBnZEdocGN5NXdaV1ZyS0RFcE8xeHVJQ0FnSUNBZ0lDQnBaaUFvZEdocGN5NTBlWEJsSUQwOVBTQW5aRzlqTFdWdVpDY2dKaVlnS0NGMGIzQWdmSHdnZEc5d0xuUjVjR1VnSVQwOUlDZGtiMk10Wlc1a0p5a3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIZG9hV3hsSUNoMGFHbHpMbk4wWVdOckxteGxibWQwYUNBK0lEQXBYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdlV2xsYkdRcUlIUm9hWE11Y0c5d0tDazdYRzRnSUNBZ0lDQWdJQ0FnSUNCMGFHbHpMbk4wWVdOckxuQjFjMmdvZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhSNWNHVTZJQ2RrYjJNdFpXNWtKeXhjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J2Wm1aelpYUTZJSFJvYVhNdWIyWm1jMlYwTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhOdmRYSmpaVG9nZEdocGN5NXpiM1Z5WTJWY2JpQWdJQ0FnSUNBZ0lDQWdJSDBwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdU8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJR2xtSUNnaGRHOXdLVnh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhscFpXeGtLaUIwYUdsekxuTjBjbVZoYlNncE8xeHVJQ0FnSUNBZ0lDQnpkMmwwWTJnZ0tIUnZjQzUwZVhCbEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCallYTmxJQ2RrYjJOMWJXVnVkQ2M2WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJSGxwWld4a0tpQjBhR2x6TG1SdlkzVnRaVzUwS0hSdmNDazdYRzRnSUNBZ0lDQWdJQ0FnSUNCallYTmxJQ2RoYkdsaGN5YzZYRzRnSUNBZ0lDQWdJQ0FnSUNCallYTmxJQ2R6WTJGc1lYSW5PbHh1SUNBZ0lDQWdJQ0FnSUNBZ1kyRnpaU0FuYzJsdVoyeGxMWEYxYjNSbFpDMXpZMkZzWVhJbk9seHVJQ0FnSUNBZ0lDQWdJQ0FnWTJGelpTQW5aRzkxWW14bExYRjFiM1JsWkMxelkyRnNZWEluT2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUI1YVdWc1pDb2dkR2hwY3k1elkyRnNZWElvZEc5d0tUdGNiaUFnSUNBZ0lDQWdJQ0FnSUdOaGMyVWdKMkpzYjJOckxYTmpZV3hoY2ljNlhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhscFpXeGtLaUIwYUdsekxtSnNiMk5yVTJOaGJHRnlLSFJ2Y0NrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JqWVhObElDZGliRzlqYXkxdFlYQW5PbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQjVhV1ZzWkNvZ2RHaHBjeTVpYkc5amEwMWhjQ2gwYjNBcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnWTJGelpTQW5ZbXh2WTJzdGMyVnhKenBjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdlV2xsYkdRcUlIUm9hWE11WW14dlkydFRaWEYxWlc1alpTaDBiM0FwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdZMkZ6WlNBblpteHZkeTFqYjJ4c1pXTjBhVzl1SnpwY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnZVdsbGJHUXFJSFJvYVhNdVpteHZkME52Ykd4bFkzUnBiMjRvZEc5d0tUdGNiaUFnSUNBZ0lDQWdJQ0FnSUdOaGMyVWdKMlJ2WXkxbGJtUW5PbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQjVhV1ZzWkNvZ2RHaHBjeTVrYjJOMWJXVnVkRVZ1WkNoMGIzQXBPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUM4cUlHbHpkR0Z1WW5Wc0lHbG5ibTl5WlNCdVpYaDBJSE5vYjNWc1pDQnViM1FnYUdGd2NHVnVJQ292WEc0Z0lDQWdJQ0FnSUhscFpXeGtLaUIwYUdsekxuQnZjQ2dwTzF4dUlDQWdJSDFjYmlBZ0lDQndaV1ZyS0c0cElIdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlIUm9hWE11YzNSaFkydGJkR2hwY3k1emRHRmpheTVzWlc1bmRHZ2dMU0J1WFR0Y2JpQWdJQ0I5WEc0Z0lDQWdLbkJ2Y0NobGNuSnZjaWtnZTF4dUlDQWdJQ0FnSUNCamIyNXpkQ0IwYjJ0bGJpQTlJR1Z5Y205eUlEOC9JSFJvYVhNdWMzUmhZMnN1Y0c5d0tDazdYRzRnSUNBZ0lDQWdJQzhxSUdsemRHRnVZblZzSUdsbmJtOXlaU0JwWmlCemFHOTFiR1FnYm05MElHaGhjSEJsYmlBcUwxeHVJQ0FnSUNBZ0lDQnBaaUFvSVhSdmEyVnVLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCdFpYTnpZV2RsSUQwZ0oxUnlhV1ZrSUhSdklIQnZjQ0JoYmlCbGJYQjBlU0J6ZEdGamF5YzdYRzRnSUNBZ0lDQWdJQ0FnSUNCNWFXVnNaQ0I3SUhSNWNHVTZJQ2RsY25KdmNpY3NJRzltWm5ObGREb2dkR2hwY3k1dlptWnpaWFFzSUhOdmRYSmpaVG9nSnljc0lHMWxjM05oWjJVZ2ZUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0JsYkhObElHbG1JQ2gwYUdsekxuTjBZV05yTG14bGJtZDBhQ0E5UFQwZ01Da2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2VXbGxiR1FnZEc5clpXNDdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnWld4elpTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCamIyNXpkQ0IwYjNBZ1BTQjBhR2x6TG5CbFpXc29NU2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFvZEc5clpXNHVkSGx3WlNBOVBUMGdKMkpzYjJOckxYTmpZV3hoY2ljcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQXZMeUJDYkc5amF5QnpZMkZzWVhKeklIVnpaU0IwYUdWcGNpQndZWEpsYm5RZ2NtRjBhR1Z5SUhSb1lXNGdhR1ZoWkdWeUlHbHVaR1Z1ZEZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhSdmEyVnVMbWx1WkdWdWRDQTlJQ2RwYm1SbGJuUW5JR2x1SUhSdmNDQS9JSFJ2Y0M1cGJtUmxiblFnT2lBd08xeHVJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBZ0lDQWdaV3h6WlNCcFppQW9kRzlyWlc0dWRIbHdaU0E5UFQwZ0oyWnNiM2N0WTI5c2JHVmpkR2x2YmljZ0ppWWdkRzl3TG5SNWNHVWdQVDA5SUNka2IyTjFiV1Z1ZENjcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQXZMeUJKWjI1dmNtVWdZV3hzSUdsdVpHVnVkQ0JtYjNJZ2RHOXdMV3hsZG1Wc0lHWnNiM2NnWTI5c2JHVmpkR2x2Ym5OY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCMGIydGxiaTVwYm1SbGJuUWdQU0F3TzF4dUlDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLSFJ2YTJWdUxuUjVjR1VnUFQwOUlDZG1iRzkzTFdOdmJHeGxZM1JwYjI0bktWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHWnBlRVpzYjNkVFpYRkpkR1Z0Y3loMGIydGxiaWs3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnpkMmwwWTJnZ0tIUnZjQzUwZVhCbEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZMkZ6WlNBblpHOWpkVzFsYm5Rbk9seHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IwYjNBdWRtRnNkV1VnUFNCMGIydGxianRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1luSmxZV3M3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWTJGelpTQW5ZbXh2WTJzdGMyTmhiR0Z5SnpwY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdkRzl3TG5CeWIzQnpMbkIxYzJnb2RHOXJaVzRwT3lBdkx5Qmxjbkp2Y2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmljbVZoYXp0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCallYTmxJQ2RpYkc5amF5MXRZWEFuT2lCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR052Ym5OMElHbDBJRDBnZEc5d0xtbDBaVzF6VzNSdmNDNXBkR1Z0Y3k1c1pXNW5kR2dnTFNBeFhUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tHbDBMblpoYkhWbEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjBiM0F1YVhSbGJYTXVjSFZ6YUNoN0lITjBZWEowT2lCYlhTd2dhMlY1T2lCMGIydGxiaXdnYzJWd09pQmJYU0I5S1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhSb2FYTXViMjVMWlhsTWFXNWxJRDBnZEhKMVpUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5Ymp0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCbGJITmxJR2xtSUNocGRDNXpaWEFwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsMExuWmhiSFZsSUQwZ2RHOXJaVzQ3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWld4elpTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQlBZbXBsWTNRdVlYTnphV2R1S0dsMExDQjdJR3RsZVRvZ2RHOXJaVzRzSUhObGNEb2dXMTBnZlNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCMGFHbHpMbTl1UzJWNVRHbHVaU0E5SUNGcGRDNWxlSEJzYVdOcGRFdGxlVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJqdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmljbVZoYXp0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1kyRnpaU0FuWW14dlkyc3RjMlZ4SnpvZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JqYjI1emRDQnBkQ0E5SUhSdmNDNXBkR1Z0YzF0MGIzQXVhWFJsYlhNdWJHVnVaM1JvSUMwZ01WMDdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDaHBkQzUyWVd4MVpTbGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIUnZjQzVwZEdWdGN5NXdkWE5vS0hzZ2MzUmhjblE2SUZ0ZExDQjJZV3gxWlRvZ2RHOXJaVzRnZlNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR1ZzYzJWY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsMExuWmhiSFZsSUQwZ2RHOXJaVzQ3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHSnlaV0ZyTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCallYTmxJQ2RtYkc5M0xXTnZiR3hsWTNScGIyNG5PaUI3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHTnZibk4wSUdsMElEMGdkRzl3TG1sMFpXMXpXM1J2Y0M1cGRHVnRjeTVzWlc1bmRHZ2dMU0F4WFR0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhV1lnS0NGcGRDQjhmQ0JwZEM1MllXeDFaU2xjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSFJ2Y0M1cGRHVnRjeTV3ZFhOb0tIc2djM1JoY25RNklGdGRMQ0JyWlhrNklIUnZhMlZ1TENCelpYQTZJRnRkSUgwcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JsYkhObElHbG1JQ2hwZEM1elpYQXBYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBkQzUyWVd4MVpTQTlJSFJ2YTJWdU8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JsYkhObFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCUFltcGxZM1F1WVhOemFXZHVLR2wwTENCN0lHdGxlVG9nZEc5clpXNHNJSE5sY0RvZ1cxMGdmU2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5Ymp0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0x5b2dhWE4wWVc1aWRXd2dhV2R1YjNKbElHNWxlSFFnYzJodmRXeGtJRzV2ZENCb1lYQndaVzRnS2k5Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCa1pXWmhkV3gwT2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjVhV1ZzWkNvZ2RHaHBjeTV3YjNBb0tUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZVdsbGJHUXFJSFJvYVhNdWNHOXdLSFJ2YTJWdUtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQWdJR2xtSUNnb2RHOXdMblI1Y0dVZ1BUMDlJQ2RrYjJOMWJXVnVkQ2NnZkh4Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCMGIzQXVkSGx3WlNBOVBUMGdKMkpzYjJOckxXMWhjQ2NnZkh4Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCMGIzQXVkSGx3WlNBOVBUMGdKMkpzYjJOckxYTmxjU2NwSUNZbVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0tIUnZhMlZ1TG5SNWNHVWdQVDA5SUNkaWJHOWpheTF0WVhBbklIeDhJSFJ2YTJWdUxuUjVjR1VnUFQwOUlDZGliRzlqYXkxelpYRW5LU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdOdmJuTjBJR3hoYzNRZ1BTQjBiMnRsYmk1cGRHVnRjMXQwYjJ0bGJpNXBkR1Z0Y3k1c1pXNW5kR2dnTFNBeFhUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBaaUFvYkdGemRDQW1KbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBaGJHRnpkQzV6WlhBZ0ppWmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSVd4aGMzUXVkbUZzZFdVZ0ppWmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYkdGemRDNXpkR0Z5ZEM1c1pXNW5kR2dnUGlBd0lDWW1YRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdacGJtUk9iMjVGYlhCMGVVbHVaR1Y0S0d4aGMzUXVjM1JoY25RcElEMDlQU0F0TVNBbUpseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FvZEc5clpXNHVhVzVrWlc1MElEMDlQU0F3SUh4OFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCc1lYTjBMbk4wWVhKMExtVjJaWEo1S0hOMElEMCtJSE4wTG5SNWNHVWdJVDA5SUNkamIyMXRaVzUwSnlCOGZDQnpkQzVwYm1SbGJuUWdQQ0IwYjJ0bGJpNXBibVJsYm5RcEtTa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcFppQW9kRzl3TG5SNWNHVWdQVDA5SUNka2IyTjFiV1Z1ZENjcFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCMGIzQXVaVzVrSUQwZ2JHRnpkQzV6ZEdGeWREdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWld4elpWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RHOXdMbWwwWlcxekxuQjFjMmdvZXlCemRHRnlkRG9nYkdGemRDNXpkR0Z5ZENCOUtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZEc5clpXNHVhWFJsYlhNdWMzQnNhV05sS0MweExDQXhLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQjlYRzRnSUNBZ0tuTjBjbVZoYlNncElIdGNiaUFnSUNBZ0lDQWdjM2RwZEdOb0lDaDBhR2x6TG5SNWNHVXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHTmhjMlVnSjJScGNtVmpkR2wyWlMxc2FXNWxKenBjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I1YVdWc1pDQjdJSFI1Y0dVNklDZGthWEpsWTNScGRtVW5MQ0J2Wm1aelpYUTZJSFJvYVhNdWIyWm1jMlYwTENCemIzVnlZMlU2SUhSb2FYTXVjMjkxY21ObElIMDdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdU8xeHVJQ0FnSUNBZ0lDQWdJQ0FnWTJGelpTQW5ZbmwwWlMxdmNtUmxjaTF0WVhKckp6cGNiaUFnSUNBZ0lDQWdJQ0FnSUdOaGMyVWdKM053WVdObEp6cGNiaUFnSUNBZ0lDQWdJQ0FnSUdOaGMyVWdKMk52YlcxbGJuUW5PbHh1SUNBZ0lDQWdJQ0FnSUNBZ1kyRnpaU0FuYm1WM2JHbHVaU2M2WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZVdsbGJHUWdkR2hwY3k1emIzVnlZMlZVYjJ0bGJqdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200N1hHNGdJQ0FnSUNBZ0lDQWdJQ0JqWVhObElDZGtiMk10Ylc5a1pTYzZYRzRnSUNBZ0lDQWdJQ0FnSUNCallYTmxJQ2RrYjJNdGMzUmhjblFuT2lCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1kyOXVjM1FnWkc5aklEMGdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCMGVYQmxPaUFuWkc5amRXMWxiblFuTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnZabVp6WlhRNklIUm9hWE11YjJabWMyVjBMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCemRHRnlkRG9nVzExY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOU8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2gwYUdsekxuUjVjR1VnUFQwOUlDZGtiMk10YzNSaGNuUW5LVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCa2IyTXVjM1JoY25RdWNIVnphQ2gwYUdsekxuTnZkWEpqWlZSdmEyVnVLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IwYUdsekxuTjBZV05yTG5CMWMyZ29aRzlqS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTQ3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnZVdsbGJHUWdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2RIbHdaVG9nSjJWeWNtOXlKeXhjYmlBZ0lDQWdJQ0FnSUNBZ0lHOW1abk5sZERvZ2RHaHBjeTV2Wm1aelpYUXNYRzRnSUNBZ0lDQWdJQ0FnSUNCdFpYTnpZV2RsT2lCZ1ZXNWxlSEJsWTNSbFpDQWtlM1JvYVhNdWRIbHdaWDBnZEc5clpXNGdhVzRnV1VGTlRDQnpkSEpsWVcxZ0xGeHVJQ0FnSUNBZ0lDQWdJQ0FnYzI5MWNtTmxPaUIwYUdsekxuTnZkWEpqWlZ4dUlDQWdJQ0FnSUNCOU8xeHVJQ0FnSUgxY2JpQWdJQ0FxWkc5amRXMWxiblFvWkc5aktTQjdYRzRnSUNBZ0lDQWdJR2xtSUNoa2IyTXVkbUZzZFdVcFhHNGdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdlV2xsYkdRcUlIUm9hWE11YkdsdVpVVnVaQ2hrYjJNcE8xeHVJQ0FnSUNBZ0lDQnpkMmwwWTJnZ0tIUm9hWE11ZEhsd1pTa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ1kyRnpaU0FuWkc5akxYTjBZWEowSnpvZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2htYVc1a1RtOXVSVzF3ZEhsSmJtUmxlQ2hrYjJNdWMzUmhjblFwSUNFOVBTQXRNU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjVhV1ZzWkNvZ2RHaHBjeTV3YjNBb0tUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZVdsbGJHUXFJSFJvYVhNdWMzUmxjQ2dwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCbGJITmxYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdSdll5NXpkR0Z5ZEM1d2RYTm9LSFJvYVhNdWMyOTFjbU5sVkc5clpXNHBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJqdGNiaUFnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQWdJR05oYzJVZ0oyRnVZMmh2Y2ljNlhHNGdJQ0FnSUNBZ0lDQWdJQ0JqWVhObElDZDBZV2NuT2x4dUlDQWdJQ0FnSUNBZ0lDQWdZMkZ6WlNBbmMzQmhZMlVuT2x4dUlDQWdJQ0FnSUNBZ0lDQWdZMkZ6WlNBblkyOXRiV1Z1ZENjNlhHNGdJQ0FnSUNBZ0lDQWdJQ0JqWVhObElDZHVaWGRzYVc1bEp6cGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmtiMk11YzNSaGNuUXVjSFZ6YUNoMGFHbHpMbk52ZFhKalpWUnZhMlZ1S1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTQ3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ1kyOXVjM1FnWW5ZZ1BTQjBhR2x6TG5OMFlYSjBRbXh2WTJ0V1lXeDFaU2hrYjJNcE8xeHVJQ0FnSUNBZ0lDQnBaaUFvWW5ZcFhHNGdJQ0FnSUNBZ0lDQWdJQ0IwYUdsekxuTjBZV05yTG5CMWMyZ29ZbllwTzF4dUlDQWdJQ0FnSUNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIbHBaV3hrSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCMGVYQmxPaUFuWlhKeWIzSW5MRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRzltWm5ObGREb2dkR2hwY3k1dlptWnpaWFFzWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYldWemMyRm5aVG9nWUZWdVpYaHdaV04wWldRZ0pIdDBhR2x6TG5SNWNHVjlJSFJ2YTJWdUlHbHVJRmxCVFV3Z1pHOWpkVzFsYm5SZ0xGeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lITnZkWEpqWlRvZ2RHaHBjeTV6YjNWeVkyVmNiaUFnSUNBZ0lDQWdJQ0FnSUgwN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJQ0FnS25OallXeGhjaWh6WTJGc1lYSXBJSHRjYmlBZ0lDQWdJQ0FnYVdZZ0tIUm9hWE11ZEhsd1pTQTlQVDBnSjIxaGNDMTJZV3gxWlMxcGJtUW5LU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCd2NtVjJJRDBnWjJWMFVISmxkbEJ5YjNCektIUm9hWE11Y0dWbGF5Z3lLU2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCemRHRnlkQ0E5SUdkbGRFWnBjbk4wUzJWNVUzUmhjblJRY205d2N5aHdjbVYyS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJR3hsZENCelpYQTdYRzRnSUNBZ0lDQWdJQ0FnSUNCcFppQW9jMk5oYkdGeUxtVnVaQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhObGNDQTlJSE5qWVd4aGNpNWxibVE3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYzJWd0xuQjFjMmdvZEdocGN5NXpiM1Z5WTJWVWIydGxiaWs3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWkdWc1pYUmxJSE5qWVd4aGNpNWxibVE3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNCbGJITmxYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjMlZ3SUQwZ1czUm9hWE11YzI5MWNtTmxWRzlyWlc1ZE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnWTI5dWMzUWdiV0Z3SUQwZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIUjVjR1U2SUNkaWJHOWpheTF0WVhBbkxGeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHOW1abk5sZERvZ2MyTmhiR0Z5TG05bVpuTmxkQ3hjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwYm1SbGJuUTZJSE5qWVd4aGNpNXBibVJsYm5Rc1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FYUmxiWE02SUZ0N0lITjBZWEowTENCclpYazZJSE5qWVd4aGNpd2djMlZ3SUgxZFhHNGdJQ0FnSUNBZ0lDQWdJQ0I5TzF4dUlDQWdJQ0FnSUNBZ0lDQWdkR2hwY3k1dmJrdGxlVXhwYm1VZ1BTQjBjblZsTzF4dUlDQWdJQ0FnSUNBZ0lDQWdkR2hwY3k1emRHRmphMXQwYUdsekxuTjBZV05yTG14bGJtZDBhQ0F0SURGZElEMGdiV0Z3TzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lHVnNjMlZjYmlBZ0lDQWdJQ0FnSUNBZ0lIbHBaV3hrS2lCMGFHbHpMbXhwYm1WRmJtUW9jMk5oYkdGeUtUdGNiaUFnSUNCOVhHNGdJQ0FnS21Kc2IyTnJVMk5oYkdGeUtITmpZV3hoY2lrZ2UxeHVJQ0FnSUNBZ0lDQnpkMmwwWTJnZ0tIUm9hWE11ZEhsd1pTa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ1kyRnpaU0FuYzNCaFkyVW5PbHh1SUNBZ0lDQWdJQ0FnSUNBZ1kyRnpaU0FuWTI5dGJXVnVkQ2M2WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpZWE5sSUNkdVpYZHNhVzVsSnpwY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCelkyRnNZWEl1Y0hKdmNITXVjSFZ6YUNoMGFHbHpMbk52ZFhKalpWUnZhMlZ1S1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTQ3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpZWE5sSUNkelkyRnNZWEluT2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhOallXeGhjaTV6YjNWeVkyVWdQU0IwYUdsekxuTnZkWEpqWlR0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBdkx5QmliRzlqYXkxelkyRnNZWElnYzI5MWNtTmxJR2x1WTJ4MVpHVnpJSFJ5WVdsc2FXNW5JRzVsZDJ4cGJtVmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjBhR2x6TG1GMFRtVjNUR2x1WlNBOUlIUnlkV1U3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZEdocGN5NXBibVJsYm5RZ1BTQXdPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNoMGFHbHpMbTl1VG1WM1RHbHVaU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnNaWFFnYm13Z1BTQjBhR2x6TG5OdmRYSmpaUzVwYm1SbGVFOW1LQ2RjWEc0bktTQXJJREU3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIZG9hV3hsSUNodWJDQWhQVDBnTUNrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RHaHBjeTV2Yms1bGQweHBibVVvZEdocGN5NXZabVp6WlhRZ0t5QnViQ2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J1YkNBOUlIUm9hWE11YzI5MWNtTmxMbWx1WkdWNFQyWW9KMXhjYmljc0lHNXNLU0FySURFN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZVdsbGJHUXFJSFJvYVhNdWNHOXdLQ2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWW5KbFlXczdYRzRnSUNBZ0lDQWdJQ0FnSUNBdktpQnBjM1JoYm1KMWJDQnBaMjV2Y21VZ2JtVjRkQ0J6YUc5MWJHUWdibTkwSUdoaGNIQmxiaUFxTDF4dUlDQWdJQ0FnSUNBZ0lDQWdaR1ZtWVhWc2REcGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjVhV1ZzWkNvZ2RHaHBjeTV3YjNBb0tUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjVhV1ZzWkNvZ2RHaHBjeTV6ZEdWd0tDazdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQjlYRzRnSUNBZ0ttSnNiMk5yVFdGd0tHMWhjQ2tnZTF4dUlDQWdJQ0FnSUNCamIyNXpkQ0JwZENBOUlHMWhjQzVwZEdWdGMxdHRZWEF1YVhSbGJYTXViR1Z1WjNSb0lDMGdNVjA3WEc0Z0lDQWdJQ0FnSUM4dklHbDBMbk5sY0NCcGN5QjBjblZsTFdsemFDQnBaaUJ3WVdseUlHRnNjbVZoWkhrZ2FHRnpJR3RsZVNCdmNpQTZJSE5sY0dGeVlYUnZjbHh1SUNBZ0lDQWdJQ0J6ZDJsMFkyZ2dLSFJvYVhNdWRIbHdaU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdZMkZ6WlNBbmJtVjNiR2x1WlNjNlhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RHaHBjeTV2Ymt0bGVVeHBibVVnUFNCbVlXeHpaVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2FYUXVkbUZzZFdVcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWTI5dWMzUWdaVzVrSUQwZ0oyVnVaQ2NnYVc0Z2FYUXVkbUZzZFdVZ1B5QnBkQzUyWVd4MVpTNWxibVFnT2lCMWJtUmxabWx1WldRN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR052Ym5OMElHeGhjM1FnUFNCQmNuSmhlUzVwYzBGeWNtRjVLR1Z1WkNrZ1B5QmxibVJiWlc1a0xteGxibWQwYUNBdElERmRJRG9nZFc1a1pXWnBibVZrTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBaaUFvYkdGemREOHVkSGx3WlNBOVBUMGdKMk52YlcxbGJuUW5LVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdaVzVrUHk1d2RYTm9LSFJvYVhNdWMyOTFjbU5sVkc5clpXNHBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCbGJITmxYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnRZWEF1YVhSbGJYTXVjSFZ6YUNoN0lITjBZWEowT2lCYmRHaHBjeTV6YjNWeVkyVlViMnRsYmwwZ2ZTazdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR1ZzYzJVZ2FXWWdLR2wwTG5ObGNDa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcGRDNXpaWEF1Y0hWemFDaDBhR2x6TG5OdmRYSmpaVlJ2YTJWdUtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2wwTG5OMFlYSjBMbkIxYzJnb2RHaHBjeTV6YjNWeVkyVlViMnRsYmlrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5Ymp0Y2JpQWdJQ0FnSUNBZ0lDQWdJR05oYzJVZ0ozTndZV05sSnpwY2JpQWdJQ0FnSUNBZ0lDQWdJR05oYzJVZ0oyTnZiVzFsYm5Rbk9seHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2hwZEM1MllXeDFaU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnRZWEF1YVhSbGJYTXVjSFZ6YUNoN0lITjBZWEowT2lCYmRHaHBjeTV6YjNWeVkyVlViMnRsYmwwZ2ZTazdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR1ZzYzJVZ2FXWWdLR2wwTG5ObGNDa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcGRDNXpaWEF1Y0hWemFDaDBhR2x6TG5OdmRYSmpaVlJ2YTJWdUtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNoMGFHbHpMbUYwU1c1a1pXNTBaV1JEYjIxdFpXNTBLR2wwTG5OMFlYSjBMQ0J0WVhBdWFXNWtaVzUwS1NrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1kyOXVjM1FnY0hKbGRpQTlJRzFoY0M1cGRHVnRjMXR0WVhBdWFYUmxiWE11YkdWdVozUm9JQzBnTWwwN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCamIyNXpkQ0JsYm1RZ1BTQndjbVYyUHk1MllXeDFaVDh1Wlc1a08xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLRUZ5Y21GNUxtbHpRWEp5WVhrb1pXNWtLU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lFRnljbUY1TG5CeWIzUnZkSGx3WlM1d2RYTm9MbUZ3Y0d4NUtHVnVaQ3dnYVhRdWMzUmhjblFwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHVnVaQzV3ZFhOb0tIUm9hWE11YzI5MWNtTmxWRzlyWlc0cE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRzFoY0M1cGRHVnRjeTV3YjNBb0tUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNDdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhWFF1YzNSaGNuUXVjSFZ6YUNoMGFHbHpMbk52ZFhKalpWUnZhMlZ1S1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1TzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lHbG1JQ2gwYUdsekxtbHVaR1Z1ZENBK1BTQnRZWEF1YVc1a1pXNTBLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCaGRFMWhjRWx1WkdWdWRDQTlJQ0YwYUdsekxtOXVTMlY1VEdsdVpTQW1KaUIwYUdsekxtbHVaR1Z1ZENBOVBUMGdiV0Z3TG1sdVpHVnVkRHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHTnZibk4wSUdGMFRtVjRkRWwwWlcwZ1BTQmhkRTFoY0VsdVpHVnVkQ0FtSmx4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNocGRDNXpaWEFnZkh3Z2FYUXVaWGh3YkdsamFYUkxaWGtwSUNZbVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RHaHBjeTUwZVhCbElDRTlQU0FuYzJWeExXbDBaVzB0YVc1a0p6dGNiaUFnSUNBZ0lDQWdJQ0FnSUM4dklFWnZjaUJsYlhCMGVTQnViMlJsY3l3Z1lYTnphV2R1SUc1bGQyeHBibVV0YzJWd1lYSmhkR1ZrSUc1dmRDQnBibVJsYm5SbFpDQmxiWEIwZVNCMGIydGxibk1nZEc4Z1ptOXNiRzkzYVc1bklHNXZaR1ZjYmlBZ0lDQWdJQ0FnSUNBZ0lHeGxkQ0J6ZEdGeWRDQTlJRnRkTzF4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lnS0dGMFRtVjRkRWwwWlcwZ0ppWWdhWFF1YzJWd0lDWW1JQ0ZwZEM1MllXeDFaU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdOdmJuTjBJRzVzSUQwZ1cxMDdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0JwZEM1elpYQXViR1Z1WjNSb095QXJLMmtwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ2MzUWdQU0JwZEM1elpYQmJhVjA3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lITjNhWFJqYUNBb2MzUXVkSGx3WlNrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1kyRnpaU0FuYm1WM2JHbHVaU2M2WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2Jtd3VjSFZ6YUNocEtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JpY21WaGF6dGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHTmhjMlVnSjNOd1lXTmxKenBjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR05oYzJVZ0oyTnZiVzFsYm5Rbk9seHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNoemRDNXBibVJsYm5RZ1BpQnRZWEF1YVc1a1pXNTBLVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnViQzVzWlc1bmRHZ2dQU0F3TzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHSnlaV0ZyTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWkdWbVlYVnNkRHBjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCdWJDNXNaVzVuZEdnZ1BTQXdPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2h1YkM1c1pXNW5kR2dnUGowZ01pbGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYzNSaGNuUWdQU0JwZEM1elpYQXVjM0JzYVdObEtHNXNXekZkS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNBZ0lITjNhWFJqYUNBb2RHaHBjeTUwZVhCbEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZMkZ6WlNBbllXNWphRzl5SnpwY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCallYTmxJQ2QwWVdjbk9seHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb1lYUk9aWGgwU1hSbGJTQjhmQ0JwZEM1MllXeDFaU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYzNSaGNuUXVjSFZ6YUNoMGFHbHpMbk52ZFhKalpWUnZhMlZ1S1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUcxaGNDNXBkR1Z0Y3k1d2RYTm9LSHNnYzNSaGNuUWdmU2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IwYUdsekxtOXVTMlY1VEdsdVpTQTlJSFJ5ZFdVN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1pXeHpaU0JwWmlBb2FYUXVjMlZ3S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcGRDNXpaWEF1Y0hWemFDaDBhR2x6TG5OdmRYSmpaVlJ2YTJWdUtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsMExuTjBZWEowTG5CMWMyZ29kR2hwY3k1emIzVnlZMlZVYjJ0bGJpazdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdU8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHTmhjMlVnSjJWNGNHeHBZMmwwTFd0bGVTMXBibVFuT2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBaaUFvSVdsMExuTmxjQ0FtSmlBaGFYUXVaWGh3YkdsamFYUkxaWGtwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsMExuTjBZWEowTG5CMWMyZ29kR2hwY3k1emIzVnlZMlZVYjJ0bGJpazdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBkQzVsZUhCc2FXTnBkRXRsZVNBOUlIUnlkV1U3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWld4elpTQnBaaUFvWVhST1pYaDBTWFJsYlNCOGZDQnBkQzUyWVd4MVpTa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjM1JoY25RdWNIVnphQ2gwYUdsekxuTnZkWEpqWlZSdmEyVnVLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRzFoY0M1cGRHVnRjeTV3ZFhOb0tIc2djM1JoY25Rc0lHVjRjR3hwWTJsMFMyVjVPaUIwY25WbElIMHBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RHaHBjeTV6ZEdGamF5NXdkWE5vS0h0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjBlWEJsT2lBbllteHZZMnN0YldGd0p5eGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J2Wm1aelpYUTZJSFJvYVhNdWIyWm1jMlYwTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHbHVaR1Z1ZERvZ2RHaHBjeTVwYm1SbGJuUXNYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVhSbGJYTTZJRnQ3SUhOMFlYSjBPaUJiZEdocGN5NXpiM1Z5WTJWVWIydGxibDBzSUdWNGNHeHBZMmwwUzJWNU9pQjBjblZsSUgxZFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOUtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjBhR2x6TG05dVMyVjVUR2x1WlNBOUlIUnlkV1U3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5Ymp0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCallYTmxJQ2R0WVhBdGRtRnNkV1V0YVc1a0p6cGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tHbDBMbVY0Y0d4cFkybDBTMlY1S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcFppQW9JV2wwTG5ObGNDa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDaHBibU5zZFdSbGMxUnZhMlZ1S0dsMExuTjBZWEowTENBbmJtVjNiR2x1WlNjcEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lFOWlhbVZqZEM1aGMzTnBaMjRvYVhRc0lIc2dhMlY1T2lCdWRXeHNMQ0J6WlhBNklGdDBhR2x6TG5OdmRYSmpaVlJ2YTJWdVhTQjlLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdOdmJuTjBJSE4wWVhKMElEMGdaMlYwUm1seWMzUkxaWGxUZEdGeWRGQnliM0J6S0dsMExuTjBZWEowS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZEdocGN5NXpkR0ZqYXk1d2RYTm9LSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhSNWNHVTZJQ2RpYkc5amF5MXRZWEFuTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2IyWm1jMlYwT2lCMGFHbHpMbTltWm5ObGRDeGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2x1WkdWdWREb2dkR2hwY3k1cGJtUmxiblFzWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcGRHVnRjem9nVzNzZ2MzUmhjblFzSUd0bGVUb2diblZzYkN3Z2MyVndPaUJiZEdocGN5NXpiM1Z5WTJWVWIydGxibDBnZlYxY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZlNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdaV3h6WlNCcFppQW9hWFF1ZG1Gc2RXVXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCdFlYQXVhWFJsYlhNdWNIVnphQ2g3SUhOMFlYSjBPaUJiWFN3Z2EyVjVPaUJ1ZFd4c0xDQnpaWEE2SUZ0MGFHbHpMbk52ZFhKalpWUnZhMlZ1WFNCOUtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHVnNjMlVnYVdZZ0tHbHVZMngxWkdWelZHOXJaVzRvYVhRdWMyVndMQ0FuYldGd0xYWmhiSFZsTFdsdVpDY3BLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RHaHBjeTV6ZEdGamF5NXdkWE5vS0h0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZEhsd1pUb2dKMkpzYjJOckxXMWhjQ2NzWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRzltWm5ObGREb2dkR2hwY3k1dlptWnpaWFFzWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2x1WkdWdWREb2dkR2hwY3k1cGJtUmxiblFzWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2wwWlcxek9pQmJleUJ6ZEdGeWRDd2dhMlY1T2lCdWRXeHNMQ0J6WlhBNklGdDBhR2x6TG5OdmRYSmpaVlJ2YTJWdVhTQjlYVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUgwcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1pXeHpaU0JwWmlBb2FYTkdiRzkzVkc5clpXNG9hWFF1YTJWNUtTQW1KbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNGcGJtTnNkV1JsYzFSdmEyVnVLR2wwTG5ObGNDd2dKMjVsZDJ4cGJtVW5LU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHTnZibk4wSUhOMFlYSjBJRDBnWjJWMFJtbHljM1JMWlhsVGRHRnlkRkJ5YjNCektHbDBMbk4wWVhKMEtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JqYjI1emRDQnJaWGtnUFNCcGRDNXJaWGs3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1kyOXVjM1FnYzJWd0lEMGdhWFF1YzJWd08xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSE5sY0M1d2RYTm9LSFJvYVhNdWMyOTFjbU5sVkc5clpXNHBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUM4dklFQjBjeTFsZUhCbFkzUXRaWEp5YjNJZ2RIbHdaU0JuZFdGeVpDQnBjeUIzY205dVp5Qm9aWEpsWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1pHVnNaWFJsSUdsMExtdGxlVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBdkx5QkFkSE10Wlhod1pXTjBMV1Z5Y205eUlIUjVjR1VnWjNWaGNtUWdhWE1nZDNKdmJtY2dhR1Z5WlZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHUmxiR1YwWlNCcGRDNXpaWEE3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RHaHBjeTV6ZEdGamF5NXdkWE5vS0h0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZEhsd1pUb2dKMkpzYjJOckxXMWhjQ2NzWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRzltWm5ObGREb2dkR2hwY3k1dlptWnpaWFFzWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2x1WkdWdWREb2dkR2hwY3k1cGJtUmxiblFzWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2wwWlcxek9pQmJleUJ6ZEdGeWRDd2dhMlY1TENCelpYQWdmVjFjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOUtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHVnNjMlVnYVdZZ0tITjBZWEowTG14bGJtZDBhQ0ErSURBcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0F2THlCT2IzUWdZV04wZFdGc2JIa2dZWFFnYm1WNGRDQnBkR1Z0WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FYUXVjMlZ3SUQwZ2FYUXVjMlZ3TG1OdmJtTmhkQ2h6ZEdGeWRDd2dkR2hwY3k1emIzVnlZMlZVYjJ0bGJpazdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBkQzV6WlhBdWNIVnphQ2gwYUdsekxuTnZkWEpqWlZSdmEyVnVLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JsYkhObElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2doYVhRdWMyVndLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1QySnFaV04wTG1GemMybG5iaWhwZEN3Z2V5QnJaWGs2SUc1MWJHd3NJSE5sY0RvZ1czUm9hWE11YzI5MWNtTmxWRzlyWlc1ZElIMHBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdaV3h6WlNCcFppQW9hWFF1ZG1Gc2RXVWdmSHdnWVhST1pYaDBTWFJsYlNrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRzFoY0M1cGRHVnRjeTV3ZFhOb0tIc2djM1JoY25Rc0lHdGxlVG9nYm5Wc2JDd2djMlZ3T2lCYmRHaHBjeTV6YjNWeVkyVlViMnRsYmwwZ2ZTazdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmxiSE5sSUdsbUlDaHBibU5zZFdSbGMxUnZhMlZ1S0dsMExuTmxjQ3dnSjIxaGNDMTJZV3gxWlMxcGJtUW5LU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIUm9hWE11YzNSaFkyc3VjSFZ6YUNoN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhSNWNHVTZJQ2RpYkc5amF5MXRZWEFuTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J2Wm1aelpYUTZJSFJvYVhNdWIyWm1jMlYwTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwYm1SbGJuUTZJSFJvYVhNdWFXNWtaVzUwTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwZEdWdGN6b2dXM3NnYzNSaGNuUTZJRnRkTENCclpYazZJRzUxYkd3c0lITmxjRG9nVzNSb2FYTXVjMjkxY21ObFZHOXJaVzVkSUgxZFhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmU2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JsYkhObElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwZEM1elpYQXVjSFZ6YUNoMGFHbHpMbk52ZFhKalpWUnZhMlZ1S1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCMGFHbHpMbTl1UzJWNVRHbHVaU0E5SUhSeWRXVTdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGRIVnlianRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JqWVhObElDZGhiR2xoY3ljNlhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1kyRnpaU0FuYzJOaGJHRnlKenBjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JqWVhObElDZHphVzVuYkdVdGNYVnZkR1ZrTFhOallXeGhjaWM2WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWTJGelpTQW5aRzkxWW14bExYRjFiM1JsWkMxelkyRnNZWEluT2lCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR052Ym5OMElHWnpJRDBnZEdocGN5NW1iRzkzVTJOaGJHRnlLSFJvYVhNdWRIbHdaU2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2hoZEU1bGVIUkpkR1Z0SUh4OElHbDBMblpoYkhWbEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnRZWEF1YVhSbGJYTXVjSFZ6YUNoN0lITjBZWEowTENCclpYazZJR1p6TENCelpYQTZJRnRkSUgwcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RHaHBjeTV2Ymt0bGVVeHBibVVnUFNCMGNuVmxPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR1ZzYzJVZ2FXWWdLR2wwTG5ObGNDa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdkR2hwY3k1emRHRmpheTV3ZFhOb0tHWnpLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JsYkhObElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lFOWlhbVZqZEM1aGMzTnBaMjRvYVhRc0lIc2dhMlY1T2lCbWN5d2djMlZ3T2lCYlhTQjlLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSFJvYVhNdWIyNUxaWGxNYVc1bElEMGdkSEoxWlR0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTQ3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdSbFptRjFiSFE2SUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ1luWWdQU0IwYUdsekxuTjBZWEowUW14dlkydFdZV3gxWlNodFlYQXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcFppQW9ZbllwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDaGhkRTFoY0VsdVpHVnVkQ0FtSmlCaWRpNTBlWEJsSUNFOVBTQW5ZbXh2WTJzdGMyVnhKeWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHMWhjQzVwZEdWdGN5NXdkWE5vS0hzZ2MzUmhjblFnZlNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCMGFHbHpMbk4wWVdOckxuQjFjMmdvWW5ZcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1TzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJSGxwWld4a0tpQjBhR2x6TG5CdmNDZ3BPMXh1SUNBZ0lDQWdJQ0I1YVdWc1pDb2dkR2hwY3k1emRHVndLQ2s3WEc0Z0lDQWdmVnh1SUNBZ0lDcGliRzlqYTFObGNYVmxibU5sS0hObGNTa2dlMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQnBkQ0E5SUhObGNTNXBkR1Z0YzF0elpYRXVhWFJsYlhNdWJHVnVaM1JvSUMwZ01WMDdYRzRnSUNBZ0lDQWdJSE4zYVhSamFDQW9kR2hwY3k1MGVYQmxLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpZWE5sSUNkdVpYZHNhVzVsSnpwY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcFppQW9hWFF1ZG1Gc2RXVXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1kyOXVjM1FnWlc1a0lEMGdKMlZ1WkNjZ2FXNGdhWFF1ZG1Gc2RXVWdQeUJwZEM1MllXeDFaUzVsYm1RZ09pQjFibVJsWm1sdVpXUTdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdOdmJuTjBJR3hoYzNRZ1BTQkJjbkpoZVM1cGMwRnljbUY1S0dWdVpDa2dQeUJsYm1SYlpXNWtMbXhsYm1kMGFDQXRJREZkSURvZ2RXNWtaV1pwYm1Wa08xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2JHRnpkRDh1ZEhsd1pTQTlQVDBnSjJOdmJXMWxiblFuS1Z4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWlc1a1B5NXdkWE5vS0hSb2FYTXVjMjkxY21ObFZHOXJaVzRwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmxiSE5sWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J6WlhFdWFYUmxiWE11Y0hWemFDaDdJSE4wWVhKME9pQmJkR2hwY3k1emIzVnlZMlZVYjJ0bGJsMGdmU2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdWc2MyVmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVhRdWMzUmhjblF1Y0hWemFDaDBhR2x6TG5OdmRYSmpaVlJ2YTJWdUtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200N1hHNGdJQ0FnSUNBZ0lDQWdJQ0JqWVhObElDZHpjR0ZqWlNjNlhHNGdJQ0FnSUNBZ0lDQWdJQ0JqWVhObElDZGpiMjF0Wlc1MEp6cGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBaaUFvYVhRdWRtRnNkV1VwWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lITmxjUzVwZEdWdGN5NXdkWE5vS0hzZ2MzUmhjblE2SUZ0MGFHbHpMbk52ZFhKalpWUnZhMlZ1WFNCOUtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhV1lnS0hSb2FYTXVZWFJKYm1SbGJuUmxaRU52YlcxbGJuUW9hWFF1YzNSaGNuUXNJSE5sY1M1cGJtUmxiblFwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCamIyNXpkQ0J3Y21WMklEMGdjMlZ4TG1sMFpXMXpXM05sY1M1cGRHVnRjeTVzWlc1bmRHZ2dMU0F5WFR0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdOdmJuTjBJR1Z1WkNBOUlIQnlaWFkvTG5aaGJIVmxQeTVsYm1RN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcFppQW9RWEp5WVhrdWFYTkJjbkpoZVNobGJtUXBLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1FYSnlZWGt1Y0hKdmRHOTBlWEJsTG5CMWMyZ3VZWEJ3Ykhrb1pXNWtMQ0JwZEM1emRHRnlkQ2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1pXNWtMbkIxYzJnb2RHaHBjeTV6YjNWeVkyVlViMnRsYmlrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjMlZ4TG1sMFpXMXpMbkJ2Y0NncE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJqdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBkQzV6ZEdGeWRDNXdkWE5vS0hSb2FYTXVjMjkxY21ObFZHOXJaVzRwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTQ3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpZWE5sSUNkaGJtTm9iM0luT2x4dUlDQWdJQ0FnSUNBZ0lDQWdZMkZ6WlNBbmRHRm5KenBjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2FYUXVkbUZzZFdVZ2ZId2dkR2hwY3k1cGJtUmxiblFnUEQwZ2MyVnhMbWx1WkdWdWRDbGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWW5KbFlXczdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhWFF1YzNSaGNuUXVjSFZ6YUNoMGFHbHpMbk52ZFhKalpWUnZhMlZ1S1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTQ3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpZWE5sSUNkelpYRXRhWFJsYlMxcGJtUW5PbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNoMGFHbHpMbWx1WkdWdWRDQWhQVDBnYzJWeExtbHVaR1Z1ZENsY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZbkpsWVdzN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLR2wwTG5aaGJIVmxJSHg4SUdsdVkyeDFaR1Z6Vkc5clpXNG9hWFF1YzNSaGNuUXNJQ2R6WlhFdGFYUmxiUzFwYm1RbktTbGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYzJWeExtbDBaVzF6TG5CMWMyZ29leUJ6ZEdGeWREb2dXM1JvYVhNdWMyOTFjbU5sVkc5clpXNWRJSDBwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdWc2MyVmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVhRdWMzUmhjblF1Y0hWemFDaDBhR2x6TG5OdmRYSmpaVlJ2YTJWdUtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200N1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdhV1lnS0hSb2FYTXVhVzVrWlc1MElENGdjMlZ4TG1sdVpHVnVkQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ1luWWdQU0IwYUdsekxuTjBZWEowUW14dlkydFdZV3gxWlNoelpYRXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLR0oyS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RHaHBjeTV6ZEdGamF5NXdkWE5vS0dKMktUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200N1hHNGdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2VXbGxiR1FxSUhSb2FYTXVjRzl3S0NrN1hHNGdJQ0FnSUNBZ0lIbHBaV3hrS2lCMGFHbHpMbk4wWlhBb0tUdGNiaUFnSUNCOVhHNGdJQ0FnS21ac2IzZERiMnhzWldOMGFXOXVLR1pqS1NCN1hHNGdJQ0FnSUNBZ0lHTnZibk4wSUdsMElEMGdabU11YVhSbGJYTmJabU11YVhSbGJYTXViR1Z1WjNSb0lDMGdNVjA3WEc0Z0lDQWdJQ0FnSUdsbUlDaDBhR2x6TG5SNWNHVWdQVDA5SUNkbWJHOTNMV1Z5Y205eUxXVnVaQ2NwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJR3hsZENCMGIzQTdYRzRnSUNBZ0lDQWdJQ0FnSUNCa2J5QjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdlV2xsYkdRcUlIUm9hWE11Y0c5d0tDazdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdkRzl3SUQwZ2RHaHBjeTV3WldWcktERXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2ZTQjNhR2xzWlNBb2RHOXdJQ1ltSUhSdmNDNTBlWEJsSUQwOVBTQW5abXh2ZHkxamIyeHNaV04wYVc5dUp5azdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnWld4elpTQnBaaUFvWm1NdVpXNWtMbXhsYm1kMGFDQTlQVDBnTUNrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnYzNkcGRHTm9JQ2gwYUdsekxuUjVjR1VwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCallYTmxJQ2RqYjIxdFlTYzZYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZMkZ6WlNBblpYaHdiR2xqYVhRdGEyVjVMV2x1WkNjNlhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNnaGFYUWdmSHdnYVhRdWMyVndLVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdabU11YVhSbGJYTXVjSFZ6YUNoN0lITjBZWEowT2lCYmRHaHBjeTV6YjNWeVkyVlViMnRsYmwwZ2ZTazdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdWc2MyVmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHbDBMbk4wWVhKMExuQjFjMmdvZEdocGN5NXpiM1Z5WTJWVWIydGxiaWs3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5Ymp0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCallYTmxJQ2R0WVhBdGRtRnNkV1V0YVc1a0p6cGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tDRnBkQ0I4ZkNCcGRDNTJZV3gxWlNsY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdaakxtbDBaVzF6TG5CMWMyZ29leUJ6ZEdGeWREb2dXMTBzSUd0bGVUb2diblZzYkN3Z2MyVndPaUJiZEdocGN5NXpiM1Z5WTJWVWIydGxibDBnZlNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR1ZzYzJVZ2FXWWdLR2wwTG5ObGNDbGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHbDBMbk5sY0M1d2RYTm9LSFJvYVhNdWMyOTFjbU5sVkc5clpXNHBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCbGJITmxYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQlBZbXBsWTNRdVlYTnphV2R1S0dsMExDQjdJR3RsZVRvZ2JuVnNiQ3dnYzJWd09pQmJkR2hwY3k1emIzVnlZMlZVYjJ0bGJsMGdmU2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5Ymp0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCallYTmxJQ2R6Y0dGalpTYzZYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZMkZ6WlNBblkyOXRiV1Z1ZENjNlhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1kyRnpaU0FuYm1WM2JHbHVaU2M2WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWTJGelpTQW5ZVzVqYUc5eUp6cGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmpZWE5sSUNkMFlXY25PbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcFppQW9JV2wwSUh4OElHbDBMblpoYkhWbEtWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1ptTXVhWFJsYlhNdWNIVnphQ2g3SUhOMFlYSjBPaUJiZEdocGN5NXpiM1Z5WTJWVWIydGxibDBnZlNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR1ZzYzJVZ2FXWWdLR2wwTG5ObGNDbGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHbDBMbk5sY0M1d2RYTm9LSFJvYVhNdWMyOTFjbU5sVkc5clpXNHBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCbGJITmxYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBkQzV6ZEdGeWRDNXdkWE5vS0hSb2FYTXVjMjkxY21ObFZHOXJaVzRwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200N1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1kyRnpaU0FuWVd4cFlYTW5PbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR05oYzJVZ0ozTmpZV3hoY2ljNlhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1kyRnpaU0FuYzJsdVoyeGxMWEYxYjNSbFpDMXpZMkZzWVhJbk9seHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHTmhjMlVnSjJSdmRXSnNaUzF4ZFc5MFpXUXRjMk5oYkdGeUp6b2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCamIyNXpkQ0JtY3lBOUlIUm9hWE11Wm14dmQxTmpZV3hoY2loMGFHbHpMblI1Y0dVcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb0lXbDBJSHg4SUdsMExuWmhiSFZsS1Z4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWm1NdWFYUmxiWE11Y0hWemFDaDdJSE4wWVhKME9pQmJYU3dnYTJWNU9pQm1jeXdnYzJWd09pQmJYU0I5S1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdaV3h6WlNCcFppQW9hWFF1YzJWd0tWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RHaHBjeTV6ZEdGamF5NXdkWE5vS0daektUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWld4elpWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1QySnFaV04wTG1GemMybG5iaWhwZEN3Z2V5QnJaWGs2SUdaekxDQnpaWEE2SUZ0ZElIMHBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTQ3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdOaGMyVWdKMlpzYjNjdGJXRndMV1Z1WkNjNlhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1kyRnpaU0FuWm14dmR5MXpaWEV0Wlc1a0p6cGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWm1NdVpXNWtMbkIxYzJnb2RHaHBjeTV6YjNWeVkyVlViMnRsYmlrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJqdGNiaUFnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQWdJR052Ym5OMElHSjJJRDBnZEdocGN5NXpkR0Z5ZEVKc2IyTnJWbUZzZFdVb1ptTXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0x5b2dhWE4wWVc1aWRXd2dhV2R1YjNKbElHVnNjMlVnYzJodmRXeGtJRzV2ZENCb1lYQndaVzRnS2k5Y2JpQWdJQ0FnSUNBZ0lDQWdJR2xtSUNoaWRpbGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjBhR2x6TG5OMFlXTnJMbkIxYzJnb1luWXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZVdsbGJHUXFJSFJvYVhNdWNHOXdLQ2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZVdsbGJHUXFJSFJvYVhNdWMzUmxjQ2dwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ1kyOXVjM1FnY0dGeVpXNTBJRDBnZEdocGN5NXdaV1ZyS0RJcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tIQmhjbVZ1ZEM1MGVYQmxJRDA5UFNBbllteHZZMnN0YldGd0p5QW1KbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ2dvZEdocGN5NTBlWEJsSUQwOVBTQW5iV0Z3TFhaaGJIVmxMV2x1WkNjZ0ppWWdjR0Z5Wlc1MExtbHVaR1Z1ZENBOVBUMGdabU11YVc1a1pXNTBLU0I4ZkZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQW9kR2hwY3k1MGVYQmxJRDA5UFNBbmJtVjNiR2x1WlNjZ0ppWmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDRndZWEpsYm5RdWFYUmxiWE5iY0dGeVpXNTBMbWwwWlcxekxteGxibWQwYUNBdElERmRMbk5sY0NrcEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdlV2xsYkdRcUlIUm9hWE11Y0c5d0tDazdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdlV2xsYkdRcUlIUm9hWE11YzNSbGNDZ3BPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnWld4elpTQnBaaUFvZEdocGN5NTBlWEJsSUQwOVBTQW5iV0Z3TFhaaGJIVmxMV2x1WkNjZ0ppWmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQndZWEpsYm5RdWRIbHdaU0FoUFQwZ0oyWnNiM2N0WTI5c2JHVmpkR2x2YmljcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCd2NtVjJJRDBnWjJWMFVISmxkbEJ5YjNCektIQmhjbVZ1ZENrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1kyOXVjM1FnYzNSaGNuUWdQU0JuWlhSR2FYSnpkRXRsZVZOMFlYSjBVSEp2Y0hNb2NISmxkaWs3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWm1sNFJteHZkMU5sY1VsMFpXMXpLR1pqS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCamIyNXpkQ0J6WlhBZ1BTQm1ZeTVsYm1RdWMzQnNhV05sS0RFc0lHWmpMbVZ1WkM1c1pXNW5kR2dwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhObGNDNXdkWE5vS0hSb2FYTXVjMjkxY21ObFZHOXJaVzRwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdOdmJuTjBJRzFoY0NBOUlIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZEhsd1pUb2dKMkpzYjJOckxXMWhjQ2NzWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHOW1abk5sZERvZ1ptTXViMlptYzJWMExGeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwYm1SbGJuUTZJR1pqTG1sdVpHVnVkQ3hjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FYUmxiWE02SUZ0N0lITjBZWEowTENCclpYazZJR1pqTENCelpYQWdmVjFjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5TzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhSb2FYTXViMjVMWlhsTWFXNWxJRDBnZEhKMVpUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjBhR2x6TG5OMFlXTnJXM1JvYVhNdWMzUmhZMnN1YkdWdVozUm9JQzBnTVYwZ1BTQnRZWEE3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnSUNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I1YVdWc1pDb2dkR2hwY3k1c2FXNWxSVzVrS0daaktUdGNiaUFnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JpQWdJQ0JtYkc5M1UyTmhiR0Z5S0hSNWNHVXBJSHRjYmlBZ0lDQWdJQ0FnYVdZZ0tIUm9hWE11YjI1T1pYZE1hVzVsS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JzWlhRZ2Jtd2dQU0IwYUdsekxuTnZkWEpqWlM1cGJtUmxlRTltS0NkY1hHNG5LU0FySURFN1hHNGdJQ0FnSUNBZ0lDQWdJQ0IzYUdsc1pTQW9ibXdnSVQwOUlEQXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IwYUdsekxtOXVUbVYzVEdsdVpTaDBhR2x6TG05bVpuTmxkQ0FySUc1c0tUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnViQ0E5SUhSb2FYTXVjMjkxY21ObExtbHVaR1Y0VDJZb0oxeGNiaWNzSUc1c0tTQXJJREU3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIUjVjR1VzWEc0Z0lDQWdJQ0FnSUNBZ0lDQnZabVp6WlhRNklIUm9hWE11YjJabWMyVjBMRnh1SUNBZ0lDQWdJQ0FnSUNBZ2FXNWtaVzUwT2lCMGFHbHpMbWx1WkdWdWRDeGNiaUFnSUNBZ0lDQWdJQ0FnSUhOdmRYSmpaVG9nZEdocGN5NXpiM1Z5WTJWY2JpQWdJQ0FnSUNBZ2ZUdGNiaUFnSUNCOVhHNGdJQ0FnYzNSaGNuUkNiRzlqYTFaaGJIVmxLSEJoY21WdWRDa2dlMXh1SUNBZ0lDQWdJQ0J6ZDJsMFkyZ2dLSFJvYVhNdWRIbHdaU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdZMkZ6WlNBbllXeHBZWE1uT2x4dUlDQWdJQ0FnSUNBZ0lDQWdZMkZ6WlNBbmMyTmhiR0Z5SnpwY2JpQWdJQ0FnSUNBZ0lDQWdJR05oYzJVZ0ozTnBibWRzWlMxeGRXOTBaV1F0YzJOaGJHRnlKenBjYmlBZ0lDQWdJQ0FnSUNBZ0lHTmhjMlVnSjJSdmRXSnNaUzF4ZFc5MFpXUXRjMk5oYkdGeUp6cGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2RHaHBjeTVtYkc5M1UyTmhiR0Z5S0hSb2FYTXVkSGx3WlNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JqWVhObElDZGliRzlqYXkxelkyRnNZWEl0YUdWaFpHVnlKenBjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCMGVYQmxPaUFuWW14dlkyc3RjMk5oYkdGeUp5eGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYjJabWMyVjBPaUIwYUdsekxtOW1abk5sZEN4Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhVzVrWlc1ME9pQjBhR2x6TG1sdVpHVnVkQ3hjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NISnZjSE02SUZ0MGFHbHpMbk52ZFhKalpWUnZhMlZ1WFN4Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjMjkxY21ObE9pQW5KMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDA3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpZWE5sSUNkbWJHOTNMVzFoY0MxemRHRnlkQ2M2WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpZWE5sSUNkbWJHOTNMWE5sY1MxemRHRnlkQ2M2WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RIbHdaVG9nSjJac2IzY3RZMjlzYkdWamRHbHZiaWNzWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHOW1abk5sZERvZ2RHaHBjeTV2Wm1aelpYUXNYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsdVpHVnVkRG9nZEdocGN5NXBibVJsYm5Rc1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSE4wWVhKME9pQjBhR2x6TG5OdmRYSmpaVlJ2YTJWdUxGeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwZEdWdGN6b2dXMTBzWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHVnVaRG9nVzExY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOU8xeHVJQ0FnSUNBZ0lDQWdJQ0FnWTJGelpTQW5jMlZ4TFdsMFpXMHRhVzVrSnpwY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjBlWEJsT2lBbllteHZZMnN0YzJWeEp5eGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYjJabWMyVjBPaUIwYUdsekxtOW1abk5sZEN4Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhVzVrWlc1ME9pQjBhR2x6TG1sdVpHVnVkQ3hjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FYUmxiWE02SUZ0N0lITjBZWEowT2lCYmRHaHBjeTV6YjNWeVkyVlViMnRsYmwwZ2ZWMWNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlPMXh1SUNBZ0lDQWdJQ0FnSUNBZ1kyRnpaU0FuWlhod2JHbGphWFF0YTJWNUxXbHVaQ2M2SUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCMGFHbHpMbTl1UzJWNVRHbHVaU0E5SUhSeWRXVTdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ2NISmxkaUE5SUdkbGRGQnlaWFpRY205d2N5aHdZWEpsYm5RcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHTnZibk4wSUhOMFlYSjBJRDBnWjJWMFJtbHljM1JMWlhsVGRHRnlkRkJ5YjNCektIQnlaWFlwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhOMFlYSjBMbkIxYzJnb2RHaHBjeTV6YjNWeVkyVlViMnRsYmlrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdkSGx3WlRvZ0oySnNiMk5yTFcxaGNDY3NYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUc5bVpuTmxkRG9nZEdocGN5NXZabVp6WlhRc1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2x1WkdWdWREb2dkR2hwY3k1cGJtUmxiblFzWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHbDBaVzF6T2lCYmV5QnpkR0Z5ZEN3Z1pYaHdiR2xqYVhSTFpYazZJSFJ5ZFdVZ2ZWMWNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnWTJGelpTQW5iV0Z3TFhaaGJIVmxMV2x1WkNjNklIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjBhR2x6TG05dVMyVjVUR2x1WlNBOUlIUnlkV1U3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWTI5dWMzUWdjSEpsZGlBOUlHZGxkRkJ5WlhaUWNtOXdjeWh3WVhKbGJuUXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR052Ym5OMElITjBZWEowSUQwZ1oyVjBSbWx5YzNSTFpYbFRkR0Z5ZEZCeWIzQnpLSEJ5WlhZcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSFI1Y0dVNklDZGliRzlqYXkxdFlYQW5MRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCdlptWnpaWFE2SUhSb2FYTXViMlptYzJWMExGeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwYm1SbGJuUTZJSFJvYVhNdWFXNWtaVzUwTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBkR1Z0Y3pvZ1czc2djM1JoY25Rc0lHdGxlVG9nYm5Wc2JDd2djMlZ3T2lCYmRHaHBjeTV6YjNWeVkyVlViMnRsYmwwZ2ZWMWNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQnVkV3hzTzF4dUlDQWdJSDFjYmlBZ0lDQmhkRWx1WkdWdWRHVmtRMjl0YldWdWRDaHpkR0Z5ZEN3Z2FXNWtaVzUwS1NCN1hHNGdJQ0FnSUNBZ0lHbG1JQ2gwYUdsekxuUjVjR1VnSVQwOUlDZGpiMjF0Wlc1MEp5bGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJtWVd4elpUdGNiaUFnSUNBZ0lDQWdhV1lnS0hSb2FYTXVhVzVrWlc1MElEdzlJR2x1WkdWdWRDbGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJtWVd4elpUdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlITjBZWEowTG1WMlpYSjVLSE4wSUQwK0lITjBMblI1Y0dVZ1BUMDlJQ2R1Wlhkc2FXNWxKeUI4ZkNCemRDNTBlWEJsSUQwOVBTQW5jM0JoWTJVbktUdGNiaUFnSUNCOVhHNGdJQ0FnS21SdlkzVnRaVzUwUlc1a0tHUnZZMFZ1WkNrZ2UxeHVJQ0FnSUNBZ0lDQnBaaUFvZEdocGN5NTBlWEJsSUNFOVBTQW5aRzlqTFcxdlpHVW5LU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFvWkc5alJXNWtMbVZ1WkNsY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCa2IyTkZibVF1Wlc1a0xuQjFjMmdvZEdocGN5NXpiM1Z5WTJWVWIydGxiaWs3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmxiSE5sWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWkc5alJXNWtMbVZ1WkNBOUlGdDBhR2x6TG5OdmRYSmpaVlJ2YTJWdVhUdGNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDaDBhR2x6TG5SNWNHVWdQVDA5SUNkdVpYZHNhVzVsSnlsY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCNWFXVnNaQ29nZEdocGN5NXdiM0FvS1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JpQWdJQ0FxYkdsdVpVVnVaQ2gwYjJ0bGJpa2dlMXh1SUNBZ0lDQWdJQ0J6ZDJsMFkyZ2dLSFJvYVhNdWRIbHdaU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdZMkZ6WlNBblkyOXRiV0VuT2x4dUlDQWdJQ0FnSUNBZ0lDQWdZMkZ6WlNBblpHOWpMWE4wWVhKMEp6cGNiaUFnSUNBZ0lDQWdJQ0FnSUdOaGMyVWdKMlJ2WXkxbGJtUW5PbHh1SUNBZ0lDQWdJQ0FnSUNBZ1kyRnpaU0FuWm14dmR5MXpaWEV0Wlc1a0p6cGNiaUFnSUNBZ0lDQWdJQ0FnSUdOaGMyVWdKMlpzYjNjdGJXRndMV1Z1WkNjNlhHNGdJQ0FnSUNBZ0lDQWdJQ0JqWVhObElDZHRZWEF0ZG1Gc2RXVXRhVzVrSnpwY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCNWFXVnNaQ29nZEdocGN5NXdiM0FvS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCNWFXVnNaQ29nZEdocGN5NXpkR1Z3S0NrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1luSmxZV3M3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpZWE5sSUNkdVpYZHNhVzVsSnpwY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCMGFHbHpMbTl1UzJWNVRHbHVaU0E5SUdaaGJITmxPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0x5OGdabUZzYkhSb2NtOTFaMmhjYmlBZ0lDQWdJQ0FnSUNBZ0lHTmhjMlVnSjNOd1lXTmxKenBjYmlBZ0lDQWdJQ0FnSUNBZ0lHTmhjMlVnSjJOdmJXMWxiblFuT2x4dUlDQWdJQ0FnSUNBZ0lDQWdaR1ZtWVhWc2REcGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQXZMeUJoYkd3Z2IzUm9aWElnZG1Gc2RXVnpJR0Z5WlNCbGNuSnZjbk5jYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2RHOXJaVzR1Wlc1a0tWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IwYjJ0bGJpNWxibVF1Y0hWemFDaDBhR2x6TG5OdmRYSmpaVlJ2YTJWdUtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmxiSE5sWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIUnZhMlZ1TG1WdVpDQTlJRnQwYUdsekxuTnZkWEpqWlZSdmEyVnVYVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2RHaHBjeTUwZVhCbElEMDlQU0FuYm1WM2JHbHVaU2NwWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIbHBaV3hrS2lCMGFHbHpMbkJ2Y0NncE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVmVnh1WEc1bGVIQnZjblFnZXlCUVlYSnpaWElnZlR0Y2JpSXNJQ0pwYlhCdmNuUWdleUJEYjIxd2IzTmxjaUI5SUdaeWIyMGdKeTR2WTI5dGNHOXpaUzlqYjIxd2IzTmxjaTVxY3ljN1hHNXBiWEJ2Y25RZ2V5QkViMk4xYldWdWRDQjlJR1p5YjIwZ0p5NHZaRzlqTDBSdlkzVnRaVzUwTG1wekp6dGNibWx0Y0c5eWRDQjdJSEJ5WlhSMGFXWjVSWEp5YjNJc0lGbEJUVXhRWVhKelpVVnljbTl5SUgwZ1puSnZiU0FuTGk5bGNuSnZjbk11YW5Nbk8xeHVhVzF3YjNKMElIc2dkMkZ5YmlCOUlHWnliMjBnSnk0dmJHOW5MbXB6Snp0Y2JtbHRjRzl5ZENCN0lHbHpSRzlqZFcxbGJuUWdmU0JtY205dElDY3VMMjV2WkdWekwybGtaVzUwYVhSNUxtcHpKenRjYm1sdGNHOXlkQ0I3SUV4cGJtVkRiM1Z1ZEdWeUlIMGdabkp2YlNBbkxpOXdZWEp6WlM5c2FXNWxMV052ZFc1MFpYSXVhbk1uTzF4dWFXMXdiM0owSUhzZ1VHRnljMlZ5SUgwZ1puSnZiU0FuTGk5d1lYSnpaUzl3WVhKelpYSXVhbk1uTzF4dVhHNW1kVzVqZEdsdmJpQndZWEp6WlU5d2RHbHZibk1vYjNCMGFXOXVjeWtnZTF4dUlDQWdJR052Ym5OMElIQnlaWFIwZVVWeWNtOXljeUE5SUc5d2RHbHZibk11Y0hKbGRIUjVSWEp5YjNKeklDRTlQU0JtWVd4elpUdGNiaUFnSUNCamIyNXpkQ0JzYVc1bFEyOTFiblJsY2lBOUlHOXdkR2x2Ym5NdWJHbHVaVU52ZFc1MFpYSWdmSHdnS0hCeVpYUjBlVVZ5Y205eWN5QW1KaUJ1WlhjZ1RHbHVaVU52ZFc1MFpYSW9LU2tnZkh3Z2JuVnNiRHRjYmlBZ0lDQnlaWFIxY200Z2V5QnNhVzVsUTI5MWJuUmxjaXdnY0hKbGRIUjVSWEp5YjNKeklIMDdYRzU5WEc0dktpcGNiaUFxSUZCaGNuTmxJSFJvWlNCcGJuQjFkQ0JoY3lCaElITjBjbVZoYlNCdlppQlpRVTFNSUdSdlkzVnRaVzUwY3k1Y2JpQXFYRzRnS2lCRWIyTjFiV1Z1ZEhNZ2MyaHZkV3hrSUdKbElITmxjR0Z5WVhSbFpDQm1jbTl0SUdWaFkyZ2diM1JvWlhJZ1lua2dZQzR1TG1BZ2IzSWdZQzB0TFdBZ2JXRnlhMlZ5SUd4cGJtVnpMbHh1SUNwY2JpQXFJRUJ5WlhSMWNtNXpJRWxtSUdGdUlHVnRjSFI1SUdCa2IyTnpZQ0JoY25KaGVTQnBjeUJ5WlhSMWNtNWxaQ3dnYVhRZ2QybHNiQ0JpWlNCdlppQjBlWEJsWEc0Z0tpQWdJRVZ0Y0hSNVUzUnlaV0Z0SUdGdVpDQmpiMjUwWVdsdUlHRmtaR2wwYVc5dVlXd2djM1J5WldGdElHbHVabTl5YldGMGFXOXVMaUJKYmx4dUlDb2dJQ0JVZVhCbFUyTnlhWEIwTENCNWIzVWdjMmh2ZFd4a0lIVnpaU0JnSjJWdGNIUjVKeUJwYmlCa2IyTnpZQ0JoY3lCaElIUjVjR1VnWjNWaGNtUWdabTl5SUdsMExseHVJQ292WEc1bWRXNWpkR2x2YmlCd1lYSnpaVUZzYkVSdlkzVnRaVzUwY3loemIzVnlZMlVzSUc5d2RHbHZibk1nUFNCN2ZTa2dlMXh1SUNBZ0lHTnZibk4wSUhzZ2JHbHVaVU52ZFc1MFpYSXNJSEJ5WlhSMGVVVnljbTl5Y3lCOUlEMGdjR0Z5YzJWUGNIUnBiMjV6S0c5d2RHbHZibk1wTzF4dUlDQWdJR052Ym5OMElIQmhjbk5sY2lBOUlHNWxkeUJRWVhKelpYSW9iR2x1WlVOdmRXNTBaWEkvTG1Ga1pFNWxkMHhwYm1VcE8xeHVJQ0FnSUdOdmJuTjBJR052YlhCdmMyVnlJRDBnYm1WM0lFTnZiWEJ2YzJWeUtHOXdkR2x2Ym5NcE8xeHVJQ0FnSUdOdmJuTjBJR1J2WTNNZ1BTQkJjbkpoZVM1bWNtOXRLR052YlhCdmMyVnlMbU52YlhCdmMyVW9jR0Z5YzJWeUxuQmhjbk5sS0hOdmRYSmpaU2twS1R0Y2JpQWdJQ0JwWmlBb2NISmxkSFI1UlhKeWIzSnpJQ1ltSUd4cGJtVkRiM1Z1ZEdWeUtWeHVJQ0FnSUNBZ0lDQm1iM0lnS0dOdmJuTjBJR1J2WXlCdlppQmtiMk56S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JrYjJNdVpYSnliM0p6TG1admNrVmhZMmdvY0hKbGRIUnBabmxGY25KdmNpaHpiM1Z5WTJVc0lHeHBibVZEYjNWdWRHVnlLU2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmtiMk11ZDJGeWJtbHVaM011Wm05eVJXRmphQ2h3Y21WMGRHbG1lVVZ5Y205eUtITnZkWEpqWlN3Z2JHbHVaVU52ZFc1MFpYSXBLVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJR2xtSUNoa2IyTnpMbXhsYm1kMGFDQStJREFwWEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJrYjJOek8xeHVJQ0FnSUhKbGRIVnliaUJQWW1wbFkzUXVZWE56YVdkdUtGdGRMQ0I3SUdWdGNIUjVPaUIwY25WbElIMHNJR052YlhCdmMyVnlMbk4wY21WaGJVbHVabThvS1NrN1hHNTlYRzR2S2lvZ1VHRnljMlVnWVc0Z2FXNXdkWFFnYzNSeWFXNW5JR2x1ZEc4Z1lTQnphVzVuYkdVZ1dVRk5UQzVFYjJOMWJXVnVkQ0FxTDF4dVpuVnVZM1JwYjI0Z2NHRnljMlZFYjJOMWJXVnVkQ2h6YjNWeVkyVXNJRzl3ZEdsdmJuTWdQU0I3ZlNrZ2UxeHVJQ0FnSUdOdmJuTjBJSHNnYkdsdVpVTnZkVzUwWlhJc0lIQnlaWFIwZVVWeWNtOXljeUI5SUQwZ2NHRnljMlZQY0hScGIyNXpLRzl3ZEdsdmJuTXBPMXh1SUNBZ0lHTnZibk4wSUhCaGNuTmxjaUE5SUc1bGR5QlFZWEp6WlhJb2JHbHVaVU52ZFc1MFpYSS9MbUZrWkU1bGQweHBibVVwTzF4dUlDQWdJR052Ym5OMElHTnZiWEJ2YzJWeUlEMGdibVYzSUVOdmJYQnZjMlZ5S0c5d2RHbHZibk1wTzF4dUlDQWdJQzh2SUdCa2IyTmdJR2x6SUdGc2QyRjVjeUJ6WlhRZ1lua2dZMjl0Y0c5elpTNWxibVFvZEhKMVpTa2dZWFFnZEdobElIWmxjbmtnYkdGMFpYTjBYRzRnSUNBZ2JHVjBJR1J2WXlBOUlHNTFiR3c3WEc0Z0lDQWdabTl5SUNoamIyNXpkQ0JmWkc5aklHOW1JR052YlhCdmMyVnlMbU52YlhCdmMyVW9jR0Z5YzJWeUxuQmhjbk5sS0hOdmRYSmpaU2tzSUhSeWRXVXNJSE52ZFhKalpTNXNaVzVuZEdncEtTQjdYRzRnSUNBZ0lDQWdJR2xtSUNnaFpHOWpLVnh1SUNBZ0lDQWdJQ0FnSUNBZ1pHOWpJRDBnWDJSdll6dGNiaUFnSUNBZ0lDQWdaV3h6WlNCcFppQW9aRzlqTG05d2RHbHZibk11Ykc5blRHVjJaV3dnSVQwOUlDZHphV3hsYm5RbktTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCa2IyTXVaWEp5YjNKekxuQjFjMmdvYm1WM0lGbEJUVXhRWVhKelpVVnljbTl5S0Y5a2IyTXVjbUZ1WjJVdWMyeHBZMlVvTUN3Z01pa3NJQ2ROVlV4VVNWQk1SVjlFVDBOVEp5d2dKMU52ZFhKalpTQmpiMjUwWVdsdWN5QnRkV3gwYVhCc1pTQmtiMk4xYldWdWRITTdJSEJzWldGelpTQjFjMlVnV1VGTlRDNXdZWEp6WlVGc2JFUnZZM1Z0Wlc1MGN5Z3BKeWtwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdZbkpsWVdzN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJQ0FnYVdZZ0tIQnlaWFIwZVVWeWNtOXljeUFtSmlCc2FXNWxRMjkxYm5SbGNpa2dlMXh1SUNBZ0lDQWdJQ0JrYjJNdVpYSnliM0p6TG1admNrVmhZMmdvY0hKbGRIUnBabmxGY25KdmNpaHpiM1Z5WTJVc0lHeHBibVZEYjNWdWRHVnlLU2s3WEc0Z0lDQWdJQ0FnSUdSdll5NTNZWEp1YVc1bmN5NW1iM0pGWVdOb0tIQnlaWFIwYVdaNVJYSnliM0lvYzI5MWNtTmxMQ0JzYVc1bFEyOTFiblJsY2lrcE8xeHVJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNtNGdaRzlqTzF4dWZWeHVablZ1WTNScGIyNGdjR0Z5YzJVb2MzSmpMQ0J5WlhacGRtVnlMQ0J2Y0hScGIyNXpLU0I3WEc0Z0lDQWdiR1YwSUY5eVpYWnBkbVZ5SUQwZ2RXNWtaV1pwYm1Wa08xeHVJQ0FnSUdsbUlDaDBlWEJsYjJZZ2NtVjJhWFpsY2lBOVBUMGdKMloxYm1OMGFXOXVKeWtnZTF4dUlDQWdJQ0FnSUNCZmNtVjJhWFpsY2lBOUlISmxkbWwyWlhJN1hHNGdJQ0FnZlZ4dUlDQWdJR1ZzYzJVZ2FXWWdLRzl3ZEdsdmJuTWdQVDA5SUhWdVpHVm1hVzVsWkNBbUppQnlaWFpwZG1WeUlDWW1JSFI1Y0dWdlppQnlaWFpwZG1WeUlEMDlQU0FuYjJKcVpXTjBKeWtnZTF4dUlDQWdJQ0FnSUNCdmNIUnBiMjV6SUQwZ2NtVjJhWFpsY2p0Y2JpQWdJQ0I5WEc0Z0lDQWdZMjl1YzNRZ1pHOWpJRDBnY0dGeWMyVkViMk4xYldWdWRDaHpjbU1zSUc5d2RHbHZibk1wTzF4dUlDQWdJR2xtSUNnaFpHOWpLVnh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdiblZzYkR0Y2JpQWdJQ0JrYjJNdWQyRnlibWx1WjNNdVptOXlSV0ZqYUNoM1lYSnVhVzVuSUQwK0lIZGhjbTRvWkc5akxtOXdkR2x2Ym5NdWJHOW5UR1YyWld3c0lIZGhjbTVwYm1jcEtUdGNiaUFnSUNCcFppQW9aRzlqTG1WeWNtOXljeTVzWlc1bmRHZ2dQaUF3S1NCN1hHNGdJQ0FnSUNBZ0lHbG1JQ2hrYjJNdWIzQjBhVzl1Y3k1c2IyZE1aWFpsYkNBaFBUMGdKM05wYkdWdWRDY3BYRzRnSUNBZ0lDQWdJQ0FnSUNCMGFISnZkeUJrYjJNdVpYSnliM0p6V3pCZE8xeHVJQ0FnSUNBZ0lDQmxiSE5sWEc0Z0lDQWdJQ0FnSUNBZ0lDQmtiMk11WlhKeWIzSnpJRDBnVzEwN1hHNGdJQ0FnZlZ4dUlDQWdJSEpsZEhWeWJpQmtiMk11ZEc5S1V5aFBZbXBsWTNRdVlYTnphV2R1S0hzZ2NtVjJhWFpsY2pvZ1gzSmxkbWwyWlhJZ2ZTd2diM0IwYVc5dWN5a3BPMXh1ZlZ4dVpuVnVZM1JwYjI0Z2MzUnlhVzVuYVdaNUtIWmhiSFZsTENCeVpYQnNZV05sY2l3Z2IzQjBhVzl1Y3lrZ2UxeHVJQ0FnSUd4bGRDQmZjbVZ3YkdGalpYSWdQU0J1ZFd4c08xeHVJQ0FnSUdsbUlDaDBlWEJsYjJZZ2NtVndiR0ZqWlhJZ1BUMDlJQ2RtZFc1amRHbHZiaWNnZkh3Z1FYSnlZWGt1YVhOQmNuSmhlU2h5WlhCc1lXTmxjaWtwSUh0Y2JpQWdJQ0FnSUNBZ1gzSmxjR3hoWTJWeUlEMGdjbVZ3YkdGalpYSTdYRzRnSUNBZ2ZWeHVJQ0FnSUdWc2MyVWdhV1lnS0c5d2RHbHZibk1nUFQwOUlIVnVaR1ZtYVc1bFpDQW1KaUJ5WlhCc1lXTmxjaWtnZTF4dUlDQWdJQ0FnSUNCdmNIUnBiMjV6SUQwZ2NtVndiR0ZqWlhJN1hHNGdJQ0FnZlZ4dUlDQWdJR2xtSUNoMGVYQmxiMllnYjNCMGFXOXVjeUE5UFQwZ0ozTjBjbWx1WnljcFhHNGdJQ0FnSUNBZ0lHOXdkR2x2Ym5NZ1BTQnZjSFJwYjI1ekxteGxibWQwYUR0Y2JpQWdJQ0JwWmlBb2RIbHdaVzltSUc5d2RHbHZibk1nUFQwOUlDZHVkVzFpWlhJbktTQjdYRzRnSUNBZ0lDQWdJR052Ym5OMElHbHVaR1Z1ZENBOUlFMWhkR2d1Y205MWJtUW9iM0IwYVc5dWN5azdYRzRnSUNBZ0lDQWdJRzl3ZEdsdmJuTWdQU0JwYm1SbGJuUWdQQ0F4SUQ4Z2RXNWtaV1pwYm1Wa0lEb2dhVzVrWlc1MElENGdPQ0EvSUhzZ2FXNWtaVzUwT2lBNElIMGdPaUI3SUdsdVpHVnVkQ0I5TzF4dUlDQWdJSDFjYmlBZ0lDQnBaaUFvZG1Gc2RXVWdQVDA5SUhWdVpHVm1hVzVsWkNrZ2UxeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCN0lHdGxaWEJWYm1SbFptbHVaV1FnZlNBOUlHOXdkR2x2Ym5NZ1B6OGdjbVZ3YkdGalpYSWdQejhnZTMwN1hHNGdJQ0FnSUNBZ0lHbG1JQ2doYTJWbGNGVnVaR1ZtYVc1bFpDbGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUIxYm1SbFptbHVaV1E3WEc0Z0lDQWdmVnh1SUNBZ0lHbG1JQ2hwYzBSdlkzVnRaVzUwS0haaGJIVmxLU0FtSmlBaFgzSmxjR3hoWTJWeUtWeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2RtRnNkV1V1ZEc5VGRISnBibWNvYjNCMGFXOXVjeWs3WEc0Z0lDQWdjbVYwZFhKdUlHNWxkeUJFYjJOMWJXVnVkQ2gyWVd4MVpTd2dYM0psY0d4aFkyVnlMQ0J2Y0hScGIyNXpLUzUwYjFOMGNtbHVaeWh2Y0hScGIyNXpLVHRjYm4xY2JseHVaWGh3YjNKMElIc2djR0Z5YzJVc0lIQmhjbk5sUVd4c1JHOWpkVzFsYm5SekxDQndZWEp6WlVSdlkzVnRaVzUwTENCemRISnBibWRwWm5rZ2ZUdGNiaUlzSUNKcGJYQnZjblFnZXlCS2MyOXVUR2x1YXl3Z1RHbHVheUI5SUdaeWIyMGdYQ0psZUhCeVpYTnphVzl1TDJ4cGJtdGNJanRjYm1sdGNHOXlkQ0I3SUdkbGRFVjRkR1Z1YzJsdmJpd2daMlYwUm1sc1pWUnBkR3hsSUgwZ1puSnZiU0JjSW5WMGFXeHpMMjV2Y20xaGJHbDZaWEp6WENJN1hHNXBiWEJ2Y25RZ2V5QkRZV05vWldSTlpYUmhaR0YwWVN3Z1JtbHNaVk4wWVhSekxDQkdjbTl1ZEUxaGRIUmxja05oWTJobElIMGdabkp2YlNCY0ltOWljMmxrYVdGdVhDSTdYRzVwYlhCdmNuUWdleUJ3WVhKelpTQmhjeUJ3WVhKelpWbGhiV3dnZlNCbWNtOXRJRndpZVdGdGJGd2lPMXh1YVcxd2IzSjBJSHRrWldaaGRXeDBJR0Z6SUVKVWNtVmxmU0JtY205dElGd2ljMjl5ZEdWa0xXSjBjbVZsWENJN1hHNXBiWEJ2Y25RZ2UxeHVJQ0FnSUVsdWJHbHVaVVpwWld4a0xGeHVJQ0FnSUVwemIyNUpibXhwYm1WR2FXVnNaQ3hjYmlBZ0lDQmhjMGx1YkdsdVpVWnBaV3hrTEZ4dUlDQWdJR1Y0ZEhKaFkzUkdkV3hzVEdsdVpVWnBaV3hrTEZ4dUlDQWdJR1Y0ZEhKaFkzUkpibXhwYm1WR2FXVnNaSE1zWEc0Z0lDQWdhbk52YmtsdWJHbHVaVVpwWld4a0xGeHVmU0JtY205dElGd2lMaTlwYm14cGJtVXRabWxsYkdSY0lqdGNibWx0Y0c5eWRDQjdYRzRnSUNBZ1NuTnZiazFoY210a2IzZHVRbXh2WTJzc1hHNGdJQ0FnU25OdmJrMWhjbXRrYjNkdVRHbHpkRUpzYjJOckxGeHVJQ0FnSUVwemIyNU5ZWEpyWkc5M2JreHBjM1JKZEdWdExGeHVJQ0FnSUVwemIyNU5ZWEpyWkc5M2JsQmhaMlVzWEc0Z0lDQWdTbk52YmsxaGNtdGtiM2R1VTJWamRHbHZiaXhjYmlBZ0lDQktjMjl1VFdGeWEyUnZkMjVVWVhOclNYUmxiU3hjYmlBZ0lDQktjMjl1VFdGeWEyUnZkMjVFWVhSaFlteHZZMnNzWEc0Z0lDQWdTbk52YmsxaGNtdGtiM2R1UTI5a1pXSnNiMk5yTEZ4dUlDQWdJRXB6YjI1R2NtOXVkRzFoZEhSbGNrVnVkSEo1TEZ4dWZTQm1jbTl0SUZ3aWFXNWtaWGd2ZEhsd1pYTXZhbk52Ymk5dFlYSnJaRzkzYmx3aU8xeHVhVzF3YjNKMElIc2dTbk52YmtOdmJuWmxjbk5wYjI0Z2ZTQm1jbTl0SUZ3aWFXNWtaWGd2ZEhsd1pYTXZhbk52Ymk5amIyMXRiMjVjSWp0Y2JtbHRjRzl5ZENCN0lGbGhiV3hEYjI1MlpYSnphVzl1SUgwZ1puSnZiU0JjSW1sdVpHVjRMM1I1Y0dWekwzbGhiV3hjSWp0Y2JtbHRjRzl5ZENCN0lHMWhjRTlpYW1WamRGWmhiSFZsY3lCOUlHWnliMjBnWENKMWRHbHNjeTlrWVhSaFhDSTdYRzVjYmk4cUtpQk5ZWFJqYUdWeklIbGhiV3dnWkdGMFlXSnNiMk5yY3l3Z2QyaHBZMmdnYzJodmR5QjFjQ0JoY3lCcGJtUmxjR1Z1WkdWdWRDQnZZbXBsWTNSeklHbHVJSFJvWlNCa1lYUmhZMjl5WlNCcGJtUmxlQzRnS2k5Y2JtTnZibk4wSUZsQlRVeGZSRUZVUVY5U1JVZEZXQ0E5SUM5Z1lHQjVZVzFzT21SaGRHRXZhVHRjYmk4cUtpQk5ZWFJqYUdWeklIUm9aU0J6ZEdGeWRDQnZaaUJoYm5rZ1kyOWtaV0pzYjJOcklHWmxibU5sTGlBcUwxeHVZMjl1YzNRZ1EwOUVSVUpNVDBOTFgwWkZUa05GWDFKRlIwVllJRDBnTDE0b1B6cGdZR0I4Zm41K0tTZ3VLaWtrTDJsdE8xeHVMeW9xSUUxaGRHTm9aWE1nYkdsemRDQnBkR1Z0Y3lBb2FXNWpiSFZrYVc1bklHbHVjMmxrWlNCMFpYaDBJR0pzYjJOcmN5a3VJQ292WEc1amIyNXpkQ0JNU1ZOVVgwbFVSVTFmVWtWSFJWZ2dQU0F2WGx0Y1hITStYU29vWEZ4a0sxeGNMbnhjWEdRclhGd3BmRnhjS253dGZGeGNLeWxjWEhNcUtGeGNXeTU3TUN3eGZWeGNYU2svWEZ4ektpZ3VLaWtrTDIxMU8xeHVYRzR2S2lwY2JpQXFJRWRwZG1WdUlIUm9aU0J5WVhjZ2MyOTFjbU5sSUdGdVpDQlBZbk5wWkdsaGJpQnRaWFJoWkdGMFlTQm1iM0lnWVNCbmFYWmxiaUJ0WVhKclpHOTNiaUJtYVd4bExGeHVJQ29nY21WMGRYSnVJR1oxYkd3Z2JXRnlhMlJ2ZDI0Z1ptbHNaU0J0WlhSaFpHRjBZUzVjYmlBcUwxeHVaWGh3YjNKMElHWjFibU4wYVc5dUlHMWhjbXRrYjNkdVNXMXdiM0owS0Z4dUlDQWdJSEJoZEdnNklITjBjbWx1Wnl4Y2JpQWdJQ0J0WVhKclpHOTNiam9nYzNSeWFXNW5MRnh1SUNBZ0lHMWxkR0ZrWVhSaE9pQkRZV05vWldSTlpYUmhaR0YwWVN4Y2JpQWdJQ0J6ZEdGMGN6b2dSbWxzWlZOMFlYUnpYRzRwT2lCS2MyOXVUV0Z5YTJSdmQyNVFZV2RsSUh0Y2JpQWdJQ0JqYjI1emRDQjdJR3hwYm1WekxDQnRaWFJoWkdGMFlUb2djR0ZuWlUxbGRHRmtZWFJoTENCbWNtOXVkRzFoZEhSbGNpd2djMlZqZEdsdmJuTWdmU0E5SUcxaGNtdGtiM2R1VTI5MWNtTmxTVzF3YjNKMEtIQmhkR2dzSUcxaGNtdGtiM2R1TENCdFpYUmhaR0YwWVNrN1hHNGdJQ0FnWTI5dWMzUWdjR0ZuWlNBOUlHNWxkeUJRWVdkbFJHRjBZU2h3WVhSb0xDQnpkR0YwY3l3Z2JHbHVaWE11YkdWdVozUm9MQ0J3WVdkbFRXVjBZV1JoZEdFc0lITmxZM1JwYjI1ekxDQm1jbTl1ZEcxaGRIUmxjaWs3WEc1Y2JpQWdJQ0J5WlhSMWNtNGdjR0ZuWlM1aWRXbHNaQ2dwTzF4dWZWeHVYRzR2S2lvZ1NXMXdiM0owSUcxaGNtdGtiM2R1SUdacGJHVWdiV1YwWVdSaGRHRXNJSEJ5YjJSMVkybHVaeUJoYkd3Z2NtVnNaWFpoYm5RZ2JXRnlhMlJ2ZDI0Z1pHRjBZUzRnS2k5Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCdFlYSnJaRzkzYmxOdmRYSmpaVWx0Y0c5eWRDaGNiaUFnSUNCd1lYUm9PaUJ6ZEhKcGJtY3NYRzRnSUNBZ2JXRnlhMlJ2ZDI0NklITjBjbWx1Wnl4Y2JpQWdJQ0J0WlhSaFpHRjBZVG9nUTJGamFHVmtUV1YwWVdSaGRHRmNiaWs2SUh0Y2JpQWdJQ0JzYVc1bGN6b2djM1J5YVc1blcxMDdYRzRnSUNBZ2JXVjBZV1JoZEdFNklFMWxkR0ZrWVhSaE8xeHVJQ0FnSUdaeWIyNTBiV0YwZEdWeVB6b2dVbVZqYjNKa1BITjBjbWx1Wnl3Z1NuTnZia1p5YjI1MGJXRjBkR1Z5Ulc1MGNuaytPMXh1SUNBZ0lITmxZM1JwYjI1ek9pQlRaV04wYVc5dVJHRjBZVnRkTzF4dWZTQjdYRzRnSUNBZ1kyOXVjM1FnWm5KdmJuUnRZWFIwWlhJNklGSmxZMjl5WkR4emRISnBibWNzSUVwemIyNUdjbTl1ZEcxaGRIUmxja1Z1ZEhKNVBpQjhJSFZ1WkdWbWFXNWxaQ0E5SUcxbGRHRmtZWFJoTG1aeWIyNTBiV0YwZEdWeVhHNGdJQ0FnSUNBZ0lEOGdjR0Z5YzJWR2NtOXVkRzFoZEhSbGNrSnNiMk5yS0cxbGRHRmtZWFJoTG1aeWIyNTBiV0YwZEdWeUtWeHVJQ0FnSUNBZ0lDQTZJSFZ1WkdWbWFXNWxaRHRjYmlBZ0lDQmpiMjV6ZENCc2FXNWxjeUE5SUcxaGNtdGtiM2R1TG5Od2JHbDBLQzljWEhKY1hHNThYRnh5ZkZ4Y2JpOHBPMXh1SUNBZ0lHTnZibk4wSUcxaGNtdGtiM2R1VFdWMFlXUmhkR0VnUFNCdVpYY2dUV1YwWVdSaGRHRW9LVHRjYmlBZ0lDQmpiMjV6ZENCelpXTjBhVzl1UVhKeVlYazZJRk5sWTNScGIyNUVZWFJoVzEwZ1BTQmJYVHRjYmlBZ0lDQXZMeTh2THk4dkx5OHZMeTh2TDF4dUlDQWdJQzh2SUZObFkzUnBiMjV6SUM4dlhHNGdJQ0FnTHk4dkx5OHZMeTh2THk4dkx5OWNibHh1SUNBZ0lHTnZibk4wSUcxbGRHRm9aV0ZrYVc1bmN5QTlJRzFsZEdGa1lYUmhMbWhsWVdScGJtZHpJRDgvSUZ0ZE8xeHVJQ0FnSUcxbGRHRm9aV0ZrYVc1bmN5NXpiM0owS0NoaExDQmlLU0E5UGlCaExuQnZjMmwwYVc5dUxuTjBZWEowTG14cGJtVWdMU0JpTG5CdmMybDBhVzl1TG5OMFlYSjBMbXhwYm1VcE8xeHVYRzRnSUNBZ1kyOXVjM1FnYzJWamRHbHZibk1nUFNCdVpYY2dRbFJ5WldVOGJuVnRZbVZ5TENCVFpXTjBhVzl1UkdGMFlUNG9kVzVrWldacGJtVmtMQ0FvWVN3Z1lpa2dQVDRnWVNBdElHSXBPMXh1SUNBZ0lHWnZjaUFvYkdWMElHbHVaR1Y0SUQwZ01Ec2dhVzVrWlhnZ1BDQnRaWFJoYUdWaFpHbHVaM011YkdWdVozUm9PeUJwYm1SbGVDc3JLU0I3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJR1Z1ZEhKNUlEMGdiV1YwWVdobFlXUnBibWR6VzJsdVpHVjRYVHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdjM1JoY25RZ1BTQmxiblJ5ZVM1d2IzTnBkR2x2Ymk1emRHRnlkQzVzYVc1bE8xeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCbGJtUWdQU0JwYm1SbGVDQTlQU0J0WlhSaGFHVmhaR2x1WjNNdWJHVnVaM1JvSUMwZ01TQS9JR3hwYm1WekxteGxibWQwYUNBNklHMWxkR0ZvWldGa2FXNW5jMXRwYm1SbGVDQXJJREZkTG5CdmMybDBhVzl1TG5OMFlYSjBMbXhwYm1VN1hHNWNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2MyVmpkR2x2YmlBOUlHNWxkeUJUWldOMGFXOXVSR0YwWVNoemRHRnlkQ3dnWlc1a0xDQmxiblJ5ZVM1b1pXRmthVzVuTENCbGJuUnllUzVzWlhabGJDd2dhVzVrWlhnZ0t5QXhLVHRjYmlBZ0lDQWdJQ0FnYzJWamRHbHZibk11YzJWMEtITjBZWEowTENCelpXTjBhVzl1S1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0F2THlCQlpHUWdZVzRnYVcxd2JHbGphWFFnYzJWamRHbHZiaUJtYjNJZ2RHaGxJRndpYUdWaFpHbHVaMXdpSUhObFkzUnBiMjRnYjJZZ2RHaGxJSEJoWjJVZ2FXWWdkR2hsY21VZ2FYTWdibTkwSUdGdUlHbHRiV1ZrYVdGMFpTQm9aV0ZrWlhJZ1luVjBJSFJvWlhKbElHbHpYRzRnSUNBZ0x5OGdjMjl0WlNCamIyNTBaVzUwSUdsdUlIUm9aU0JtYVd4bExpQkpaaUIwYUdWeVpTQmhjbVVnYjNSb1pYSWdjMlZqZEdsdmJuTXNJSFJvWlc0Z1oyOGdkWEFnZEc4Z2RHaGhkQ3dnYjNSb1pYSjNhWE5sTENCbmJ5Qm1iM0lnZEdobElHVnVkR2x5WlNCbWFXeGxMbHh1SUNBZ0lHbG1JQ2h6WldOMGFXOXVjeTV6YVhwbElEMDlJREFwSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLQ0ZsYlhCMGVXeHBibVZ6S0d4cGJtVnpMQ0F3TENCc2FXNWxjeTVzWlc1bmRHZ3BLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCelpXTjBhVzl1SUQwZ2JtVjNJRk5sWTNScGIyNUVZWFJoS0RBc0lHeHBibVZ6TG14bGJtZDBhQ3dnWjJWMFJtbHNaVlJwZEd4bEtIQmhkR2dwTENBeExDQXdLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lITmxZM1JwYjI1ekxuTmxkQ2d3TENCelpXTjBhVzl1S1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUM4dklFWnBibVFnZEdobElITjBZWEowSUc5bUlIUm9aU0JtYVhKemRDQnpaV04wYVc5dUxseHVJQ0FnSUNBZ0lDQmpiMjV6ZENCbWFYSnpkQ0E5SUhObFkzUnBiMjV6TG1kbGRGQmhhWEpQY2s1bGVIUklhV2RvWlhJb01Day9MbHN4WFNFaE8xeHVYRzRnSUNBZ0lDQWdJR2xtSUNobWFYSnpkQzV6ZEdGeWRDQStJREFnSmlZZ0lXVnRjSFI1YkdsdVpYTW9iR2x1WlhNc0lEQXNJR1pwY25OMExuTjBZWEowS1NrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnWTI5dWMzUWdjMlZqZEdsdmJpQTlJRzVsZHlCVFpXTjBhVzl1UkdGMFlTZ3dMQ0JtYVhKemRDNXpkR0Z5ZEN3Z1oyVjBSbWxzWlZScGRHeGxLSEJoZEdncExDQXhMQ0F3S1R0Y2JseHVJQ0FnSUNBZ0lDQWdJQ0FnYzJWamRHbHZibk11YzJWMEtEQXNJSE5sWTNScGIyNHBPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdmVnh1WEc0Z0lDQWdMeTh2THk4dkx5OHZMeTh2WEc0Z0lDQWdMeThnUW14dlkydHpJQzh2WEc0Z0lDQWdMeTh2THk4dkx5OHZMeTh2WEc1Y2JpQWdJQ0F2THlCQmJHd2dZbXh2WTJ0ek95QjNaU0IzYVd4c0lHRnpjMmxuYmlCMFlXZHpJR0Z1WkNCdmRHaGxjaUJ0WlhSaFpHRjBZU0IwYnlCaWJHOWphM01nWVhNZ2QyVWdaVzVqYjNWdWRHVnlJSFJvWlcwdUlFRjBJSFJvWlNCbGJtUXNJRzl1YkhrZ1lteHZZMnR6SUhSb1lYUmNiaUFnSUNBdkx5Qm9ZWFpsSUdGamRIVmhiQ0J0WlhSaFpHRjBZU0IzYVd4c0lHSmxJSE4wYjNKbFpDQjBieUJ6WVhabElHOXVJRzFsYlc5eWVTQndjbVZ6YzNWeVpTNWNiaUFnSUNCamIyNXpkQ0JpYkc5amEzTWdQU0J1WlhjZ1FsUnlaV1U4Ym5WdFltVnlMQ0JDYkc5amEwUmhkR0UrS0hWdVpHVm1hVzVsWkN3Z0tHRXNJR0lwSUQwK0lHRWdMU0JpS1R0Y2JpQWdJQ0JzWlhRZ1lteHZZMnRQY21ScGJtRnNJRDBnTVR0Y2JpQWdJQ0JtYjNJZ0tHTnZibk4wSUdKc2IyTnJJRzltSUcxbGRHRmtZWFJoTG5ObFkzUnBiMjV6SUh4OElGdGRLU0I3WEc0Z0lDQWdJQ0FnSUM4dklGTnJhWEFnYUdWaFpHbHVaM01nWW14dlkydHpMQ0IzWlNCb1lXNWtiR1VnZEdobGJTQnpjR1ZqYVdGc2JIa2dZWE1nYzJWamRHbHZibk11WEc0Z0lDQWdJQ0FnSUdsbUlDaGliRzlqYXk1MGVYQmxJRDA5UFNCY0ltaGxZV1JwYm1kY0lpa2dZMjl1ZEdsdWRXVTdYRzVjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdjM1JoY25RZ1BTQmliRzlqYXk1d2IzTnBkR2x2Ymk1emRHRnlkQzVzYVc1bE8xeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCbGJtUWdQU0JpYkc5amF5NXdiM05wZEdsdmJpNWxibVF1YkdsdVpTQXJJREU3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJSE4wWVhKMFRHbHVaU0E5SUd4cGJtVnpXM04wWVhKMFhUc2dMeThnZEc4Z2RYTmxJSFJ2SUdOb1pXTnJJSFJvWlNCamIyUmxZbXh2WTJzZ2RIbHdaVnh1WEc0Z0lDQWdJQ0FnSUdsbUlDaGliRzlqYXk1MGVYQmxJRDA5UFNCY0lteHBjM1JjSWlrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnWW14dlkydHpMbk5sZENoemRHRnlkQ3dnYm1WM0lFeHBjM1JDYkc5amEwUmhkR0VvYzNSaGNuUXNJR1Z1WkN3Z1lteHZZMnRQY21ScGJtRnNLeXNzSUdKc2IyTnJMbWxrS1NrN1hHNGdJQ0FnSUNBZ0lIMGdaV3h6WlNCcFppQW9ZbXh2WTJzdWRIbHdaU0E5UFNCY0ltTnZaR1ZjSWlBbUppQlpRVTFNWDBSQlZFRmZVa1ZIUlZndWRHVnpkQ2h6ZEdGeWRFeHBibVVwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JqYjI1emRDQjVZVzFzT2lCemRISnBibWNnUFNCc2FXNWxjMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQzV6YkdsalpTaHpkR0Z5ZENBcklERXNJR1Z1WkNBdElERXBYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdMbXB2YVc0b1hDSmNYRzVjSWlsY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBdWNtVndiR0ZqWlNndlhGeDBMMmR0TENCY0lpQWdYQ0lwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ2MzQnNhWFE2SUZKbFkyOXlaRHh6ZEhKcGJtY3NJRXB6YjI1R2NtOXVkRzFoZEhSbGNrVnVkSEo1UGlBOUlIQmhjbk5sUm5KdmJuUnRZWFIwWlhKQ2JHOWpheWh3WVhKelpWbGhiV3dvZVdGdGJDa3BPMXh1WEc0Z0lDQWdJQ0FnSUNBZ0lDQmliRzlqYTNNdWMyVjBLSE4wWVhKMExDQnVaWGNnUkdGMFlXSnNiMk5yUkdGMFlTaHpkR0Z5ZEN3Z1pXNWtMQ0JpYkc5amEwOXlaR2x1WVd3ckt5d2djM0JzYVhRc0lHSnNiMk5yTG1sa0tTazdYRzRnSUNBZ0lDQWdJSDBnWld4elpTQnBaaUFvWW14dlkyc3VkSGx3WlNBOVBUMGdYQ0pqYjJSbFhDSXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDOHZJRU5vWldOcklHbG1JSFJvWlNCaWJHOWpheUJwY3lCbVpXNWpaV1F1WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCdFlYUmphQ0E5SUhOMFlYSjBUR2x1WlM1dFlYUmphQ2hEVDBSRlFreFBRMHRmUmtWT1EwVmZVa1ZIUlZncE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tDRnRZWFJqYUNrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDOHZJRlJvYVhNZ2FYTWdZVzRnYVc1a1pXNTBaV1F0YzNSNWJHVWdZMjlrWldKc2IyTnJMbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR0pzYjJOcmN5NXpaWFFvYzNSaGNuUXNJRzVsZHlCRGIyUmxZbXh2WTJ0RVlYUmhLSE4wWVhKMExDQmxibVFzSUdKc2IyTnJUM0prYVc1aGJDc3JMQ0JiWFN3Z1hDSnBibVJsYm5SY0lpd2djM1JoY25Rc0lHVnVaQ3dnWW14dlkyc3VhV1FwS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ2JHRnVaM1ZoWjJWeklEMGdiV0YwWTJndWJHVnVaM1JvSUQ0Z01TQW1KaUJ0WVhSamFGc3hYU0EvSUcxaGRHTm9XekZkTG5Od2JHbDBLRndpTEZ3aUtTQTZJRnRkTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdKc2IyTnJjeTV6WlhRb1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSE4wWVhKMExGeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J1WlhjZ1EyOWtaV0pzYjJOclJHRjBZU2h6ZEdGeWRDd2daVzVrTENCaWJHOWphMDl5WkdsdVlXd3JLeXdnYkdGdVozVmhaMlZ6TENCY0ltWmxibU5sWkZ3aUxDQnpkR0Z5ZENBcklERXNJR1Z1WkNBdElERXNJR0pzYjJOckxtbGtLVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCaWJHOWphM011YzJWMEtITjBZWEowTENCdVpYY2dRbUZ6WlVKc2IyTnJSR0YwWVNoemRHRnlkQ3dnWlc1a0xDQmliRzlqYTA5eVpHbHVZV3dyS3l3Z1lteHZZMnN1ZEhsd1pTd2dZbXh2WTJzdWFXUXBLVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJSDFjYmx4dUlDQWdJQzh2SUVGa1pDQmliRzlqYTNNZ2RHOGdjMlZqZEdsdmJuTXVYRzRnSUNBZ1ptOXlJQ2hqYjI1emRDQmliRzlqYXlCdlppQmliRzlqYTNNdWRtRnNkV1Z6S0NrcElIdGNiaUFnSUNBZ0lDQWdiRzl2YTNWd0tHSnNiMk5yTG5OMFlYSjBMQ0J6WldOMGFXOXVjeWsvTG1Kc2IyTnJLR0pzYjJOcktUdGNiaUFnSUNCOVhHNWNiaUFnSUNBdkx5OHZMeTh2THk4dkwxeHVJQ0FnSUM4dklFeHBjM1J6SUM4dlhHNGdJQ0FnTHk4dkx5OHZMeTh2THk5Y2JseHVJQ0FnSUM4dklFRnNiQ0JzYVhOMElHbDBaVzF6SUdsdUlHeHBjM1J6TGlCVGRHRnlkQ0IzYVhSb0lHRWdjMmx0Y0d4bElIUnlhWFpwWVd3Z2NHRnpjeTVjYmlBZ0lDQmpiMjV6ZENCamIyNTBaVzUwVW1WblpYZ2dQU0F2WGx0Y1hIUmNYR1pjWEhZZ1hTcGJYRnd0SzF4Y0tsMWNYSE1vWEZ4YkxseGNYVnhjY3lrL0x6dGNiaUFnSUNCamIyNXpkQ0J0WVhKclpYSlNaV2RsZUNBOUlDOWVLRDQvWEZ4elB5a3FLRnhjZEh4Y1hITXBLaTluTzF4dUlDQWdJR052Ym5OMElHeHBjM1JKZEdWdGN5QTlJRzVsZHlCQ1ZISmxaVHh1ZFcxaVpYSXNJRXhwYzNSSmRHVnRSR0YwWVQ0b2RXNWtaV1pwYm1Wa0xDQW9ZU3dnWWlrZ1BUNGdZU0F0SUdJcE8xeHVYRzRnSUNBZ1ptOXlJQ2hqYjI1emRDQnNhWE4wSUc5bUlHMWxkR0ZrWVhSaExteHBjM1JKZEdWdGN5QjhmQ0JiWFNrZ2UxeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCc2FXNWxJRDBnYkdsdVpYTmJiR2x6ZEM1d2IzTnBkR2x2Ymk1emRHRnlkQzVzYVc1bFhUdGNibHh1SUNBZ0lDQWdJQ0F2THlCVVQwUlBPaUJKYlhCc1pXMWxiblFnWm14aFp5QjNhR2xqYUNCemEybHdjeUJwYm1SbGVHbHVaeUJzYVhOMElHbDBaVzF6TGx4dUlDQWdJQ0FnSUNCamIyNXpkQ0J0WVhSamFDQTlJR3hwYm1VdWJXRjBZMmdvVEVsVFZGOUpWRVZOWDFKRlIwVllLVHRjYmlBZ0lDQWdJQ0FnYkdWMElITjViV0p2YkNBOUlIVnVaR1ZtYVc1bFpDeGNiaUFnSUNBZ0lDQWdJQ0FnSUhSbGVIUWdQU0IxYm1SbFptbHVaV1E3WEc0Z0lDQWdJQ0FnSUdsbUlDaHRZWFJqYUNrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnYzNsdFltOXNJRDBnYldGMFkyaGJNVjA3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjBaWGgwSUQwZ2JXRjBZMmhiTTEwN1hHNGdJQ0FnSUNBZ0lIMWNibHh1SUNBZ0lDQWdJQ0JqYjI1emRDQnBkR1Z0SUQwZ2JtVjNJRXhwYzNSSmRHVnRSR0YwWVNoY2JpQWdJQ0FnSUNBZ0lDQWdJR3hwYzNRdWNHOXphWFJwYjI0dWMzUmhjblF1YkdsdVpTeGNiaUFnSUNBZ0lDQWdJQ0FnSUd4cGMzUXVjRzl6YVhScGIyNHVaVzVrTG14cGJtVWdLeUF4TEZ4dUlDQWdJQ0FnSUNBZ0lDQWdiR2x6ZEM1d1lYSmxiblFzWEc0Z0lDQWdJQ0FnSUNBZ0lDQnplVzFpYjJ3c1hHNGdJQ0FnSUNBZ0lDQWdJQ0JzYVhOMExtbGtMRnh1SUNBZ0lDQWdJQ0FnSUNBZ2JHbHpkQzUwWVhOckxGeHVJQ0FnSUNBZ0lDQWdJQ0FnZEdWNGRGeHVJQ0FnSUNBZ0lDQXBPMXh1SUNBZ0lDQWdJQ0JzYVhOMFNYUmxiWE11YzJWMEtHbDBaVzB1YzNSaGNuUXNJR2wwWlcwcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUM4dklFbHVJSFJvWlNCelpXTnZibVFnYkdsemRDQndZWE56TENCaFkzUjFZV3hzZVNCamIyNXpkSEoxWTNRZ2RHaGxJR3hwYzNRZ2FHVnBjbUZ5WTJoNUxseHVJQ0FnSUdadmNpQW9ZMjl1YzNRZ2FYUmxiU0J2WmlCc2FYTjBTWFJsYlhNdWRtRnNkV1Z6S0NrcElIdGNiaUFnSUNBZ0lDQWdhV1lnS0dsMFpXMHVjR0Z5Wlc1MFRHbHVaU0E4SURBcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUdOdmJuTjBJR3hwYzNSQ2JHOWpheUE5SUdKc2IyTnJjeTVuWlhRb0xXbDBaVzB1Y0dGeVpXNTBUR2x1WlNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb0lXeHBjM1JDYkc5amF5QjhmQ0FoS0d4cGMzUkNiRzlqYXk1MGVYQmxJRDA5UFNCY0lteHBjM1JjSWlrcElHTnZiblJwYm5WbE8xeHVYRzRnSUNBZ0lDQWdJQ0FnSUNBb2JHbHpkRUpzYjJOcklHRnpJRXhwYzNSQ2JHOWphMFJoZEdFcExtbDBaVzF6TG5CMWMyZ29hWFJsYlNrN1hHNGdJQ0FnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JzYVhOMFNYUmxiWE11WjJWMEtHbDBaVzB1Y0dGeVpXNTBUR2x1WlNrL0xtVnNaVzFsYm5SekxuQjFjMmdvYVhSbGJTazdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQjlYRzVjYmlBZ0lDQXZMeTh2THk4dkx5OHZYRzRnSUNBZ0x5OGdWR0ZuY3lBdkwxeHVJQ0FnSUM4dkx5OHZMeTh2THk5Y2JseHVJQ0FnSUM4dklFWnZjaUJsWVdOb0lIUmhaeXdnWVhOemFXZHVJR2wwSUhSdklIUm9aU0JoY0hCeWIzQnlhV0YwWlNCelpXTjBhVzl1SUdGdVpDQmliRzlqYXlCMGFHRjBJR2wwSUdseklHRWdjR0Z5ZENCdlppNWNiaUFnSUNCbWIzSWdLR052Ym5OMElIUmhaMlJsWmlCdlppQnRaWFJoWkdGMFlTNTBZV2R6SUQ4L0lGdGRLU0I3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJSFJoWnlBOUlIUmhaMlJsWmk1MFlXY3VjM1JoY25SelYybDBhQ2hjSWlOY0lpa2dQeUIwWVdka1pXWXVkR0ZuSURvZ1hDSWpYQ0lnS3lCMFlXZGtaV1l1ZEdGbk8xeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCc2FXNWxJRDBnZEdGblpHVm1MbkJ2YzJsMGFXOXVMbk4wWVhKMExteHBibVU3WEc0Z0lDQWdJQ0FnSUcxaGNtdGtiM2R1VFdWMFlXUmhkR0V1ZEdGbktIUmhaeWs3WEc1Y2JpQWdJQ0FnSUNBZ2JHOXZhM1Z3S0d4cGJtVXNJSE5sWTNScGIyNXpLVDh1YldWMFlXUmhkR0V1ZEdGbktIUmhaeWs3WEc0Z0lDQWdJQ0FnSUd4dmIydDFjQ2hzYVc1bExDQmliRzlqYTNNcFB5NXRaWFJoWkdGMFlTNTBZV2NvZEdGbktUdGNiaUFnSUNBZ0lDQWdiRzl2YTNWd0tHeHBibVVzSUd4cGMzUkpkR1Z0Y3lrL0xtMWxkR0ZrWVhSaExuUmhaeWgwWVdjcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUM4dklFRmtaQ0JtY205dWRHMWhkSFJsY2lCMFlXZHpMbHh1SUNBZ0lHbG1JQ2h0WlhSaFpHRjBZUzVtY205dWRHMWhkSFJsY2lrZ2UxeHVJQ0FnSUNBZ0lDQm1iM0lnS0dOdmJuTjBJSEpoZDNSaFp5QnZaaUJsZUhSeVlXTjBWR0ZuY3lodFpYUmhaR0YwWVM1bWNtOXVkRzFoZEhSbGNpa3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHTnZibk4wSUhSaFp5QTlJSEpoZDNSaFp5NXpkR0Z5ZEhOWGFYUm9LRndpSTF3aUtTQS9JSEpoZDNSaFp5QTZJRndpSTF3aUlDc2djbUYzZEdGbk8xeHVJQ0FnSUNBZ0lDQWdJQ0FnYldGeWEyUnZkMjVOWlhSaFpHRjBZUzUwWVdjb2RHRm5LVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJSDFjYmx4dUlDQWdJQzh2THk4dkx5OHZMeTh2WEc0Z0lDQWdMeThnVEdsdWEzTWdMeTljYmlBZ0lDQXZMeTh2THk4dkx5OHZMMXh1WEc0Z0lDQWdabTl5SUNoc1pYUWdiR2x1YTJSbFppQnZaaUJ0WlhSaFpHRjBZUzVzYVc1cmN5QS9QeUJiWFNrZ2UxeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCc2FXNXJJRDBnVEdsdWF5NXBibVpsY2loc2FXNXJaR1ZtTG14cGJtc3BPMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQnNhVzVsSUQwZ2JHbHVhMlJsWmk1d2IzTnBkR2x2Ymk1emRHRnlkQzVzYVc1bE8xeHVJQ0FnSUNBZ0lDQnRZWEpyWkc5M2JrMWxkR0ZrWVhSaExteHBibXNvYkdsdWF5azdYRzVjYmlBZ0lDQWdJQ0FnYkc5dmEzVndLR3hwYm1Vc0lITmxZM1JwYjI1ektUOHViV1YwWVdSaGRHRXViR2x1YXloc2FXNXJLVHRjYmlBZ0lDQWdJQ0FnYkc5dmEzVndLR3hwYm1Vc0lHSnNiMk5yY3lrL0xtMWxkR0ZrWVhSaExteHBibXNvYkdsdWF5azdYRzRnSUNBZ0lDQWdJR3h2YjJ0MWNDaHNhVzVsTENCc2FYTjBTWFJsYlhNcFB5NXRaWFJoWkdGMFlTNXNhVzVyS0d4cGJtc3BPMXh1SUNBZ0lIMWNibHh1SUNBZ0lDOHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2WEc0Z0lDQWdMeThnUm5KdmJuUnRZWFIwWlhJZ1RHbHVhM01nTHk5Y2JpQWdJQ0F2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkwxeHVYRzRnSUNBZ0x5OGdSbkp2Ym5SdFlYUjBaWElnYkdsdWEzTWdZWEpsSUc5dWJIa2dZWE56YVdkdVpXUWdkRzhnZEdobElIQmhaMlV1WEc0Z0lDQWdabTl5SUNoamIyNXpkQ0JzYVc1clpHVm1JRzltSUcxbGRHRmtZWFJoTG1aeWIyNTBiV0YwZEdWeVRHbHVhM01nUHo4Z1cxMHBJSHRjYmlBZ0lDQWdJQ0FnYldGeWEyUnZkMjVOWlhSaFpHRjBZUzVzYVc1cktFeHBibXN1YVc1bVpYSW9iR2x1YTJSbFppNXNhVzVyTENCbVlXeHpaU3dnYkdsdWEyUmxaaTVrYVhOd2JHRjVWR1Y0ZENrcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUM4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk5Y2JpQWdJQ0F2THlCSmJteHBibVVnUm1sbGJHUnpJQzh2WEc0Z0lDQWdMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMMXh1WEc0Z0lDQWdabTl5SUNoamIyNXpkQ0JtYVdWc1pDQnZaaUJwZEdWeVlYUmxTVzVzYVc1bFJtbGxiR1J6S0d4cGJtVnpLU2tnZTF4dUlDQWdJQ0FnSUNCamIyNXpkQ0JzYVc1bElEMGdabWxsYkdRdWNHOXphWFJwYjI0dWJHbHVaVHRjYmlBZ0lDQWdJQ0FnYldGeWEyUnZkMjVOWlhSaFpHRjBZUzVwYm14cGJtVkdhV1ZzWkNobWFXVnNaQ2s3WEc1Y2JpQWdJQ0FnSUNBZ2JHOXZhM1Z3S0d4cGJtVXNJSE5sWTNScGIyNXpLVDh1YldWMFlXUmhkR0V1YVc1c2FXNWxSbWxsYkdRb1ptbGxiR1FwTzF4dUlDQWdJQ0FnSUNCc2IyOXJkWEFvYkdsdVpTd2dZbXh2WTJ0ektUOHViV1YwWVdSaGRHRXVhVzVzYVc1bFJtbGxiR1FvWm1sbGJHUXBPMXh1SUNBZ0lDQWdJQ0JzYjI5cmRYQW9iR2x1WlN3Z2JHbHpkRWwwWlcxektUOHViV1YwWVdSaGRHRXVhVzVzYVc1bFJtbGxiR1FvWm1sbGJHUXBPMXh1SUNBZ0lIMWNiaUFnSUNCelpXTjBhVzl1UVhKeVlYa3VjSFZ6YUNndUxpNXpaV04wYVc5dWN5NTJZV3gxWlhNb0tTazdYRzRnSUNBZ2NtVjBkWEp1SUh0Y2JpQWdJQ0FnSUNBZ2JHbHVaWE1zWEc0Z0lDQWdJQ0FnSUdaeWIyNTBiV0YwZEdWeUxGeHVJQ0FnSUNBZ0lDQnRaWFJoWkdGMFlUb2diV0Z5YTJSdmQyNU5aWFJoWkdGMFlTeGNiaUFnSUNBZ0lDQWdjMlZqZEdsdmJuTTZJSE5sWTNScGIyNUJjbkpoZVN4Y2JpQWdJQ0I5TzF4dWZWeHVMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZYRzR2THlCUVlYSnphVzVuSUVGcFpITWdMeTljYmk4dkx5OHZMeTh2THk4dkx5OHZMeTh2TDF4dVhHNHZLaW9nUTJobFkyc2dhV1lnZEdobElHZHBkbVZ1SUd4cGJtVWdjbUZ1WjJVZ2FYTWdZV3hzSUdWdGNIUjVMaUJUZEdGeWRDQnBjeUJwYm1Oc2RYTnBkbVVzSUdWdVpDQmxlR05zZFhOcGRtVXVJQ292WEc1bWRXNWpkR2x2YmlCbGJYQjBlV3hwYm1WektHeHBibVZ6T2lCemRISnBibWRiWFN3Z2MzUmhjblE2SUc1MWJXSmxjaXdnWlc1a09pQnVkVzFpWlhJcE9pQmliMjlzWldGdUlIdGNiaUFnSUNCbWIzSWdLR3hsZENCcGJtUmxlQ0E5SUhOMFlYSjBPeUJwYm1SbGVDQThJR1Z1WkRzZ2FXNWtaWGdyS3lrZ2UxeHVJQ0FnSUNBZ0lDQnBaaUFvYkdsdVpYTmJhVzVrWlhoZExuUnlhVzBvS1NBaFBUMGdYQ0pjSWlrZ2NtVjBkWEp1SUdaaGJITmxPMXh1SUNBZ0lIMWNibHh1SUNBZ0lISmxkSFZ5YmlCMGNuVmxPMXh1ZlZ4dVhHNHZLaXBjYmlBcUlGbHBaV3hrY3lCaGJHd2dhVzVzYVc1bElHWnBaV3hrY3lCbWIzVnVaQ0JwYmlCMGFHVWdaRzlqZFcxbGJuUWdZbmtnZEhKaGRtVnljMmx1WnlCc2FXNWxJR0o1SUd4cGJtVWdkR2h5YjNWbmFDQjBhR1VnWkc5amRXMWxiblF1SUZCbGNtWnZjbTF6SUhOdmJXVWdiM0IwYVcxcGVtRjBhVzl1YzF4dUlDb2dkRzhnYzJ0cGNDQmxlSFJ5WVMxc1lYSm5aU0JzYVc1bGN5d2dZVzVrSUdOaGJpQmlaU0JrYVhOaFlteGxaQzVjYmlBcUwxeHVaWGh3YjNKMElHWjFibU4wYVc5dUtpQnBkR1Z5WVhSbFNXNXNhVzVsUm1sbGJHUnpLR052Ym5SbGJuUTZJSE4wY21sdVoxdGRLVG9nUjJWdVpYSmhkRzl5UEVsdWJHbHVaVVpwWld4a1BpQjdYRzRnSUNBZ1ptOXlJQ2hzWlhRZ2JHbHVaVzV2SUQwZ01Ec2diR2x1Wlc1dklEd2dZMjl1ZEdWdWRDNXNaVzVuZEdnN0lHeHBibVZ1YnlzcktTQjdYRzRnSUNBZ0lDQWdJR052Ym5OMElHeHBibVVnUFNCamIyNTBaVzUwVzJ4cGJtVnViMTA3WEc1Y2JpQWdJQ0FnSUNBZ0x5OGdSbUZ6ZEMxaVlXbHNiM1YwSUdadmNpQnNhVzVsY3lCMGFHRjBJR0Z5WlNCMGIyOGdiRzl1WnlCdmNpQmtieUJ1YjNRZ1kyOXVkR0ZwYmlBbk9qb25MbHh1SUNBZ0lDQWdJQ0JwWmlBb2JHbHVaUzVzWlc1bmRHZ2dQaUF6TWpjMk9DQjhmQ0FoYkdsdVpTNXBibU5zZFdSbGN5aGNJam82WENJcEtTQmpiMjUwYVc1MVpUdGNibHh1SUNBZ0lDQWdJQ0F2THlCVVQwUlBPaUJTWlMxaFpHUWdjM1Z3Y0c5eWRDQm1iM0lnZEdodmMyVWdZM1Z6ZEc5dElHVnRiMnBwSUdacFpXeGtjeUJ2YmlCMFlYTnJjeUJoYm1RZ2MybHRhV3hoY2k1Y2JpQWdJQ0FnSUNBZ2JHVjBJR2x1YkdsdVpVWnBaV3hrY3lBOUlHVjRkSEpoWTNSSmJteHBibVZHYVdWc1pITW9iR2x1WlNrN1hHNGdJQ0FnSUNBZ0lHbG1JQ2hwYm14cGJtVkdhV1ZzWkhNdWJHVnVaM1JvSUQ0Z01Da2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ1ptOXlJQ2hzWlhRZ2FXWnBaV3hrSUc5bUlHbHViR2x1WlVacFpXeGtjeWtnZVdsbGJHUWdZWE5KYm14cGJtVkdhV1ZzWkNocFptbGxiR1FzSUd4cGJtVnVieWs3WEc0Z0lDQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnNaWFFnWm5Wc2JFeHBibVVnUFNCbGVIUnlZV04wUm5Wc2JFeHBibVZHYVdWc1pDaHNhVzVsS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJR2xtSUNobWRXeHNUR2x1WlNrZ2VXbGxiR1FnWVhOSmJteHBibVZHYVdWc1pDaG1kV3hzVEdsdVpTd2diR2x1Wlc1dktUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lIMWNibjFjYmx4dUx5b3FJRlJ2Y0Mxc1pYWmxiQ0JtZFc1amRHbHZiaUIzYUdsamFDQnRZWEJ6SUdFZ1dVRk5UQ0JpYkc5amF5QXRJR2x1WTJ4MVpHbHVaeUJtY205dWRHMWhkSFJsY2lBdElHbHVkRzhnWm5KdmJuUnRZWFIwWlhJZ1pXNTBjbWxsY3k0Z0tpOWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQndZWEp6WlVaeWIyNTBiV0YwZEdWeVFteHZZMnNvWW14dlkyczZJRkpsWTI5eVpEeHpkSEpwYm1jc0lHRnVlVDRwT2lCU1pXTnZjbVE4YzNSeWFXNW5MQ0JLYzI5dVJuSnZiblJ0WVhSMFpYSkZiblJ5ZVQ0Z2UxeHVJQ0FnSUdOdmJuTjBJSEpsYzNWc2REb2dVbVZqYjNKa1BITjBjbWx1Wnl3Z1NuTnZia1p5YjI1MGJXRjBkR1Z5Ulc1MGNuaytJRDBnZTMwN1hHNGdJQ0FnWm05eUlDaGpiMjV6ZENCclpYa2diMllnVDJKcVpXTjBMbXRsZVhNb1lteHZZMnNwS1NCN1hHNGdJQ0FnSUNBZ0lHTnZibk4wSUhaaGJIVmxJRDBnWW14dlkydGJhMlY1WFR0Y2JseHVJQ0FnSUNBZ0lDQnlaWE4xYkhSYmEyVjVMblJ2VEc5M1pYSkRZWE5sS0NsZElEMGdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2EyVjVPaUJyWlhrc1hHNGdJQ0FnSUNBZ0lDQWdJQ0IyWVd4MVpUb2dTbk52YmtOdmJuWmxjbk5wYjI0dWFuTnZiaWhaWVcxc1EyOXVkbVZ5YzJsdmJpNXNhWFJsY21Gc0tIWmhiSFZsS1Nrc1hHNGdJQ0FnSUNBZ0lDQWdJQ0J5WVhjNklIWmhiSFZsTEZ4dUlDQWdJQ0FnSUNCOU8xeHVJQ0FnSUgxY2JseHVJQ0FnSUhKbGRIVnliaUJ5WlhOMWJIUTdYRzU5WEc1Y2JpOHFLaUJHYVc1a2N5QmhiaUJsYkdWdFpXNTBJSGRvYVdOb0lHTnZiblJoYVc1eklIUm9aU0JuYVhabGJpQnNhVzVsTGlBcUwxeHVaWGh3YjNKMElHWjFibU4wYVc5dUlHeHZiMnQxY0R4VUlHVjRkR1Z1WkhNZ2V5QnpkR0Z5ZERvZ2JuVnRZbVZ5T3lCbGJtUTZJRzUxYldKbGNpQjlQaWhzYVc1bE9pQnVkVzFpWlhJc0lIUnlaV1U2SUVKVWNtVmxQRzUxYldKbGNpd2dWRDRwT2lCVUlId2dkVzVrWldacGJtVmtJSHRjYmlBZ0lDQmpiMjV6ZENCMFlYSm5aWFFnUFNCMGNtVmxMbWRsZEZCaGFYSlBjazVsZUhSTWIzZGxjaWhzYVc1bEtUOHVXekZkTzF4dUlDQWdJR2xtSUNoMFlYSm5aWFFnSmlZZ2RHRnlaMlYwTG1WdVpDQStQU0JzYVc1bEtTQnlaWFIxY200Z2RHRnlaMlYwTzF4dVhHNGdJQ0FnY21WMGRYSnVJSFZ1WkdWbWFXNWxaRHRjYm4xY2JseHVMeW9xSUVWNGRISmhZM1FnZEdGbmN5QnBiblJsYkd4cFoyVnVkR3g1SUdaeWIyMGdabkp2Ym5SdFlYUjBaWEl1SUVoaGJtUnNaWE1nWVhKeVlYbHpMQ0J1ZFcxaVpYSnpMQ0JoYm1RZ2MzUnlhVzVuY3k0Z0tpOWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQmxlSFJ5WVdOMFZHRm5jeWh0WlhSaFpHRjBZVG9nUm5KdmJuUk5ZWFIwWlhKRFlXTm9aU2s2SUhOMGNtbHVaMXRkSUh0Y2JpQWdJQ0JzWlhRZ2RHRm5TMlY1Y3lBOUlFOWlhbVZqZEM1clpYbHpLRzFsZEdGa1lYUmhLUzVtYVd4MFpYSW9LSFFwSUQwK0lIUXVkRzlNYjNkbGNrTmhjMlVvS1NBOVBTQmNJblJoWjNOY0lpQjhmQ0IwTG5SdlRHOTNaWEpEWVhObEtDa2dQVDBnWENKMFlXZGNJaWs3WEc1Y2JpQWdJQ0J5WlhSMWNtNGdkR0ZuUzJWNWMxeHVJQ0FnSUNBZ0lDQXViV0Z3S0NocktTQTlQaUJ6Y0d4cGRFWnliMjUwYldGMGRHVnlWR0ZuVDNKQmJHbGhjeWh0WlhSaFpHRjBZVnRyWFN3Z0wxc3NYRnh6WFNzdktTbGNiaUFnSUNBZ0lDQWdMbkpsWkhWalpTZ29jQ3dnWXlrZ1BUNGdjQzVqYjI1allYUW9ZeWtzSUZ0ZEtWeHVJQ0FnSUNBZ0lDQXViV0Z3S0NoemRISXBJRDArSUNoemRISXVjM1JoY25SelYybDBhQ2hjSWlOY0lpa2dQeUJ6ZEhJZ09pQmNJaU5jSWlBcklITjBjaWtwTzF4dWZWeHVYRzR2S2lvZ1UzQnNhWFFnWVNCbWNtOXVkRzFoZEhSbGNpQnNhWE4wSUdsdWRHOGdjMlZ3WVhKaGRHVWdaV3hsYldWdWRITTdJR2hoYm1Sc1pYTWdZV04wZFdGc0lHeHBjM1J6TENCamIyMXRZU0J6WlhCaGNtRjBaV1FnYkdsemRITXNJR0Z1WkNCemFXNW5iR1VnWld4bGJXVnVkSE11SUNvdlhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2MzQnNhWFJHY205dWRHMWhkSFJsY2xSaFowOXlRV3hwWVhNb1pHRjBZVG9nWVc1NUxDQnZiam9nVW1WblJYaHdLVG9nYzNSeWFXNW5XMTBnZTF4dUlDQWdJR2xtSUNoa1lYUmhJRDA5SUc1MWJHd2dmSHdnWkdGMFlTQTlQU0IxYm1SbFptbHVaV1FwSUhKbGRIVnliaUJiWFR0Y2JpQWdJQ0JwWmlBb1FYSnlZWGt1YVhOQmNuSmhlU2hrWVhSaEtTa2dlMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdaR0YwWVZ4dUlDQWdJQ0FnSUNBZ0lDQWdMbVpwYkhSbGNpZ29jeWtnUFQ0Z0lTRnpLVnh1SUNBZ0lDQWdJQ0FnSUNBZ0xtMWhjQ2dvY3lrZ1BUNGdjM0JzYVhSR2NtOXVkRzFoZEhSbGNsUmhaMDl5UVd4cFlYTW9jeXdnYjI0cEtWeHVJQ0FnSUNBZ0lDQWdJQ0FnTG5KbFpIVmpaU2dvY0N3Z1l5a2dQVDRnY0M1amIyNWpZWFFvWXlrc0lGdGRLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQXZMeUJHYjNKalpTQjBieUJoSUhOMGNtbHVaeUIwYnlCb1lXNWtiR1VnYm5WdFltVnljeUJoYm1RZ2MyOGdiMjR1WEc0Z0lDQWdjbVYwZFhKdUlDaGNJbHdpSUNzZ1pHRjBZU2xjYmlBZ0lDQWdJQ0FnTG5Od2JHbDBLRzl1S1Z4dUlDQWdJQ0FnSUNBdVptbHNkR1Z5S0NoMEtTQTlQaUFoSVhRcFhHNGdJQ0FnSUNBZ0lDNXRZWEFvS0hRcElEMCtJSFF1ZEhKcGJTZ3BLVnh1SUNBZ0lDQWdJQ0F1Wm1sc2RHVnlLQ2gwS1NBOVBpQjBMbXhsYm1kMGFDQStJREFwTzF4dWZWeHVYRzR2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkwxeHVMeThnUW5WcGJHUmxjaUJWZEdsc2FYUnBaWE1nTHk5Y2JpOHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2WEc1Y2JpOHFLaUJEYjI1MmFXVnVaVzUwSUhOb1lYSmxaQ0IxZEdsc2FYUjVJR1p2Y2lCMGNtRmphMmx1WnlCdFpYUmhaR0YwWVNBdElHeHBibXR6TENCMFlXZHpMQ0JoYm1RZ2MyOGdiMjR1SUNvdlhHNWxlSEJ2Y25RZ1kyeGhjM01nVFdWMFlXUmhkR0VnZTF4dUlDQWdJSEIxWW14cFl5QjBZV2R6T2lCVFpYUThjM1J5YVc1blBpQTlJRzVsZHlCVFpYUW9LVHRjYmlBZ0lDQndkV0pzYVdNZ2JHbHVhM002SUV4cGJtdGJYU0E5SUZ0ZE8xeHVJQ0FnSUhCMVlteHBZeUJwYm14cGJtVkdhV1ZzWkhNNklGSmxZMjl5WkR4emRISnBibWNzSUVsdWJHbHVaVVpwWld4a1BpQTlJSHQ5TzF4dVhHNGdJQ0FnTHlvcUlFRmtaQ0JoSUhSaFp5QjBieUIwYUdVZ2JXVjBZV1JoZEdFdUlDb3ZYRzRnSUNBZ2NIVmliR2xqSUhSaFp5aDBZV2M2SUhOMGNtbHVaeWtnZTF4dUlDQWdJQ0FnSUNCMGFHbHpMblJoWjNNdVlXUmtLSFJoWnlrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnTHlvcUlFRmtaQ0JoSUd4cGJtc2dkRzhnZEdobElHMWxkR0ZrWVhSaExpQXFMMXh1SUNBZ0lIQjFZbXhwWXlCc2FXNXJLR3hwYm1zNklFeHBibXNwSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLSFJvYVhNdWJHbHVhM011Wm1sdVpDZ29kaWtnUFQ0Z2RpNWxjWFZoYkhNb2JHbHVheWtwS1NCeVpYUjFjbTQ3WEc0Z0lDQWdJQ0FnSUhSb2FYTXViR2x1YTNNdWNIVnphQ2hzYVc1cktUdGNiaUFnSUNCOVhHNWNiaUFnSUNBdktpb2dRV1JrSUdGdUlHbHViR2x1WlNCbWFXVnNaQ0IwYnlCMGFHVWdiV1YwWVdSaGRHRXVJQ292WEc0Z0lDQWdjSFZpYkdsaklHbHViR2x1WlVacFpXeGtLR1pwWld4a09pQkpibXhwYm1WR2FXVnNaQ2tnZTF4dUlDQWdJQ0FnSUNCamIyNXpkQ0JzYjNkbGNpQTlJR1pwWld4a0xtdGxlUzUwYjB4dmQyVnlRMkZ6WlNncE8xeHVJQ0FnSUNBZ0lDQnBaaUFvVDJKcVpXTjBMbXRsZVhNb2RHaHBjeTVwYm14cGJtVkdhV1ZzWkhNcExuTnZiV1VvS0d0bGVTa2dQVDRnYTJWNUxuUnZURzkzWlhKRFlYTmxLQ2tnUFQwZ2JHOTNaWElwS1NCeVpYUjFjbTQ3WEc1Y2JpQWdJQ0FnSUNBZ2RHaHBjeTVwYm14cGJtVkdhV1ZzWkhOYmJHOTNaWEpkSUQwZ1ptbGxiR1E3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdMeW9xSUZKbGRIVnliaUJoSUd4cGMzUWdiMllnZFc1cGNYVmxJR0ZrWkdWa0lIUmhaM011SUNvdlhHNGdJQ0FnY0hWaWJHbGpJR1pwYm1semFGUmhaM01vS1RvZ2MzUnlhVzVuVzEwZ2UxeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z1FYSnlZWGt1Wm5KdmJTaDBhR2x6TG5SaFozTXBPMXh1SUNBZ0lIMWNibHh1SUNBZ0lDOHFLaUJTWlhSMWNtNGdZU0JzYVhOMElHOW1JRXBUVDA0dGMyVnlhV0ZzYVhwbFpDQnNhVzVyY3k0Z0tpOWNiaUFnSUNCd2RXSnNhV01nWm1sdWFYTm9UR2x1YTNNb0tUb2dTbk52Ymt4cGJtdGJYU0I3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUIwYUdsekxteHBibXR6TG0xaGNDZ29iR2x1YXlrZ1BUNGdiR2x1YXk1MGIwOWlhbVZqZENncEtUdGNiaUFnSUNCOVhHNWNiaUFnSUNBdktpb2dVbVYwZFhKdUlHRWdiR2x6ZENCdlppQktVMDlPTFhObGNtbGhiR2w2WldRZ2FXNXNhVzVsSUdacFpXeGtjeTRnS2k5Y2JpQWdJQ0J3ZFdKc2FXTWdabWx1YVhOb1NXNXNhVzVsUm1sbGJHUnpLQ2s2SUZKbFkyOXlaRHh6ZEhKcGJtY3NJRXB6YjI1SmJteHBibVZHYVdWc1pENGdlMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdiV0Z3VDJKcVpXTjBWbUZzZFdWektIUm9hWE11YVc1c2FXNWxSbWxsYkdSekxDQnFjMjl1U1c1c2FXNWxSbWxsYkdRcE8xeHVJQ0FnSUgxY2JuMWNibHh1THlvcUlFTnZiblpwWlc1bGJuUWdkWFJwYkdsMGVTQm1iM0lnWTI5dWMzUnlkV04wYVc1bklIQmhaMlVnYjJKcVpXTjBjeTRnS2k5Y2JtVjRjRzl5ZENCamJHRnpjeUJRWVdkbFJHRjBZU0I3WEc0Z0lDQWdjSFZpYkdsaklHTnZibk4wY25WamRHOXlLRnh1SUNBZ0lDQWdJQ0J3ZFdKc2FXTWdjR0YwYURvZ2MzUnlhVzVuTEZ4dUlDQWdJQ0FnSUNCd2RXSnNhV01nYzNSaGRITTZJRVpwYkdWVGRHRjBjeXhjYmlBZ0lDQWdJQ0FnY0hWaWJHbGpJR3hsYm1kMGFEb2diblZ0WW1WeUxGeHVJQ0FnSUNBZ0lDQndkV0pzYVdNZ2JXVjBZV1JoZEdFNklFMWxkR0ZrWVhSaExGeHVJQ0FnSUNBZ0lDQndkV0pzYVdNZ2MyVmpkR2x2Ym5NNklGTmxZM1JwYjI1RVlYUmhXMTBzWEc0Z0lDQWdJQ0FnSUhCMVlteHBZeUJtY205dWRHMWhkSFJsY2o4NklGSmxZMjl5WkR4emRISnBibWNzSUVwemIyNUdjbTl1ZEcxaGRIUmxja1Z1ZEhKNVBseHVJQ0FnSUNrZ2UzMWNibHh1SUNBZ0lIQjFZbXhwWXlCaWRXbHNaQ2dwT2lCS2MyOXVUV0Z5YTJSdmQyNVFZV2RsSUh0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ1J3WVhSb09pQjBhR2x6TG5CaGRHZ3NYRzRnSUNBZ0lDQWdJQ0FnSUNBa1kzUnBiV1U2SUhSb2FYTXVjM1JoZEhNdVkzUnBiV1VzWEc0Z0lDQWdJQ0FnSUNBZ0lDQWtiWFJwYldVNklIUm9hWE11YzNSaGRITXViWFJwYldVc1hHNGdJQ0FnSUNBZ0lDQWdJQ0FrYzJsNlpUb2dkR2hwY3k1emRHRjBjeTV6YVhwbExGeHVJQ0FnSUNBZ0lDQWdJQ0FnSkdWNGRHVnVjMmx2YmpvZ1oyVjBSWGgwWlc1emFXOXVLSFJvYVhNdWNHRjBhQ2tzWEc0Z0lDQWdJQ0FnSUNBZ0lDQWtjRzl6YVhScGIyNDZJSHNnYzNSaGNuUTZJREFzSUdWdVpEb2dkR2hwY3k1c1pXNW5kR2dnZlN4Y2JpQWdJQ0FnSUNBZ0lDQWdJQ1IwWVdkek9pQjBhR2x6TG0xbGRHRmtZWFJoTG1acGJtbHphRlJoWjNNb0tTeGNiaUFnSUNBZ0lDQWdJQ0FnSUNSc2FXNXJjem9nZEdocGN5NXRaWFJoWkdGMFlTNW1hVzVwYzJoTWFXNXJjeWdwTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdKR2x1Wm1sbGJHUnpPaUIwYUdsekxtMWxkR0ZrWVhSaExtWnBibWx6YUVsdWJHbHVaVVpwWld4a2N5Z3BMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0pITmxZM1JwYjI1ek9pQjBhR2x6TG5ObFkzUnBiMjV6TG0xaGNDZ29lQ2tnUFQ0Z2VDNWlkV2xzWkNncEtTeGNiaUFnSUNBZ0lDQWdJQ0FnSUNSbWNtOXVkRzFoZEhSbGNqb2dkR2hwY3k1bWNtOXVkRzFoZEhSbGNpeGNiaUFnSUNBZ0lDQWdmVHRjYmlBZ0lDQjlYRzU5WEc1Y2JpOHFLaUJEYjI1MmFXVnVaVzUwSUhWMGFXeHBkSGtnWm05eUlHTnZibk4wY25WamRHbHVaeUJ0WVhKclpHOTNiaUJ6WldOMGFXOXVjeTRnS2k5Y2JtVjRjRzl5ZENCamJHRnpjeUJUWldOMGFXOXVSR0YwWVNCN1hHNGdJQ0FnY0hWaWJHbGpJR0pzYjJOcmN6b2dRbXh2WTJ0RVlYUmhXMTBnUFNCYlhUdGNiaUFnSUNCd2RXSnNhV01nYldWMFlXUmhkR0U2SUUxbGRHRmtZWFJoSUQwZ2JtVjNJRTFsZEdGa1lYUmhLQ2s3WEc1Y2JpQWdJQ0J3ZFdKc2FXTWdZMjl1YzNSeWRXTjBiM0lvWEc0Z0lDQWdJQ0FnSUhCMVlteHBZeUJ6ZEdGeWREb2diblZ0WW1WeUxGeHVJQ0FnSUNBZ0lDQndkV0pzYVdNZ1pXNWtPaUJ1ZFcxaVpYSXNYRzRnSUNBZ0lDQWdJSEIxWW14cFl5QjBhWFJzWlRvZ2MzUnlhVzVuTEZ4dUlDQWdJQ0FnSUNCd2RXSnNhV01nYkdWMlpXdzZJRzUxYldKbGNpeGNiaUFnSUNBZ0lDQWdjSFZpYkdsaklHOXlaR2x1WVd3NklHNTFiV0psY2x4dUlDQWdJQ2tnZTMxY2JseHVJQ0FnSUhCMVlteHBZeUJpYkc5amF5aGliRzlqYXpvZ1FteHZZMnRFWVhSaEtTQjdYRzRnSUNBZ0lDQWdJSFJvYVhNdVlteHZZMnR6TG5CMWMyZ29ZbXh2WTJzcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUhCMVlteHBZeUJpZFdsc1pDZ3BPaUJLYzI5dVRXRnlhMlJ2ZDI1VFpXTjBhVzl1SUh0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ1IwYVhSc1pUb2dkR2hwY3k1MGFYUnNaU3hjYmlBZ0lDQWdJQ0FnSUNBZ0lDUnZjbVJwYm1Gc09pQjBhR2x6TG05eVpHbHVZV3dzWEc0Z0lDQWdJQ0FnSUNBZ0lDQWtiR1YyWld3NklIUm9hWE11YkdWMlpXd3NYRzRnSUNBZ0lDQWdJQ0FnSUNBa2RHRm5jem9nZEdocGN5NXRaWFJoWkdGMFlTNW1hVzVwYzJoVVlXZHpLQ2tzWEc0Z0lDQWdJQ0FnSUNBZ0lDQWthVzVtYVdWc1pITTZJSFJvYVhNdWJXVjBZV1JoZEdFdVptbHVhWE5vU1c1c2FXNWxSbWxsYkdSektDa3NYRzRnSUNBZ0lDQWdJQ0FnSUNBa2JHbHVhM002SUhSb2FYTXViV1YwWVdSaGRHRXVabWx1YVhOb1RHbHVhM01vS1N4Y2JpQWdJQ0FnSUNBZ0lDQWdJQ1J3YjNOcGRHbHZiam9nZXlCemRHRnlkRG9nZEdocGN5NXpkR0Z5ZEN3Z1pXNWtPaUIwYUdsekxtVnVaQ0I5TEZ4dUlDQWdJQ0FnSUNBZ0lDQWdKR0pzYjJOcmN6b2dkR2hwY3k1aWJHOWphM011YldGd0tDaGliRzlqYXlrZ1BUNGdZbXh2WTJzdVluVnBiR1FvS1Nrc1hHNGdJQ0FnSUNBZ0lIMDdYRzRnSUNBZ2ZWeHVmVnh1WEc0dktpb2dRMjl1YzNSeWRXTjBjeUJ0WVhKclpHOTNiaUJzYVhOMElHSnNiMk5yY3lCemNHVmphV1pwWTJGc2JIa3VJQ292WEc1bGVIQnZjblFnWTJ4aGMzTWdUR2x6ZEVKc2IyTnJSR0YwWVNCN1hHNGdJQ0FnY0hWaWJHbGpJSFI1Y0dVNklITjBjbWx1WnlBOUlGd2liR2x6ZEZ3aU8xeHVJQ0FnSUhCMVlteHBZeUJ0WlhSaFpHRjBZVG9nVFdWMFlXUmhkR0VnUFNCdVpYY2dUV1YwWVdSaGRHRW9LVHRjYmlBZ0lDQndkV0pzYVdNZ2FYUmxiWE02SUV4cGMzUkpkR1Z0UkdGMFlWdGRJRDBnVzEwN1hHNWNiaUFnSUNCd2RXSnNhV01nWTI5dWMzUnlkV04wYjNJb2NIVmliR2xqSUhOMFlYSjBPaUJ1ZFcxaVpYSXNJSEIxWW14cFl5QmxibVE2SUc1MWJXSmxjaXdnY0hWaWJHbGpJRzl5WkdsdVlXdzZJRzUxYldKbGNpd2djSFZpYkdsaklHSnNiMk5yU1dRL09pQnpkSEpwYm1jcElIdDlYRzVjYmlBZ0lDQndkV0pzYVdNZ1luVnBiR1FvS1RvZ1NuTnZiazFoY210a2IzZHVUR2x6ZEVKc2IyTnJJSHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDUnZjbVJwYm1Gc09pQjBhR2x6TG05eVpHbHVZV3dzWEc0Z0lDQWdJQ0FnSUNBZ0lDQWtjRzl6YVhScGIyNDZJSHNnYzNSaGNuUTZJSFJvYVhNdWMzUmhjblFzSUdWdVpEb2dkR2hwY3k1bGJtUWdmU3hjYmlBZ0lDQWdJQ0FnSUNBZ0lDUnBibVpwWld4a2N6b2dkR2hwY3k1dFpYUmhaR0YwWVM1bWFXNXBjMmhKYm14cGJtVkdhV1ZzWkhNb0tTeGNiaUFnSUNBZ0lDQWdJQ0FnSUNSMFlXZHpPaUIwYUdsekxtMWxkR0ZrWVhSaExtWnBibWx6YUZSaFozTW9LU3hjYmlBZ0lDQWdJQ0FnSUNBZ0lDUnNhVzVyY3pvZ2RHaHBjeTV0WlhSaFpHRjBZUzVtYVc1cGMyaE1hVzVyY3lncExGeHVJQ0FnSUNBZ0lDQWdJQ0FnSkhSNWNHVTZJRndpYkdsemRGd2lMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0pHSnNiMk5yU1dRNklIUm9hWE11WW14dlkydEpaQ3hjYmlBZ0lDQWdJQ0FnSUNBZ0lDUmxiR1Z0Wlc1MGN6b2dkR2hwY3k1cGRHVnRjeTV0WVhBb0tHbDBaVzBwSUQwK0lHbDBaVzB1WW5WcGJHUW9LU2tzWEc0Z0lDQWdJQ0FnSUgwN1hHNGdJQ0FnZlZ4dWZWeHVYRzR2S2lvZ1EyOXVjM1J5ZFdOMGN5QnRZWEpyWkc5M2JpQmpiMlJsWW14dlkydHpJSE53WldOcFptbGpZV3hzZVM0Z0tpOWNibVY0Y0c5eWRDQmpiR0Z6Y3lCRGIyUmxZbXh2WTJ0RVlYUmhJSHRjYmlBZ0lDQndkV0pzYVdNZ2RIbHdaVG9nYzNSeWFXNW5JRDBnWENKamIyUmxZbXh2WTJ0Y0lqdGNiaUFnSUNCd2RXSnNhV01nYldWMFlXUmhkR0U2SUUxbGRHRmtZWFJoSUQwZ2JtVjNJRTFsZEdGa1lYUmhLQ2s3WEc1Y2JpQWdJQ0J3ZFdKc2FXTWdZMjl1YzNSeWRXTjBiM0lvWEc0Z0lDQWdJQ0FnSUhCMVlteHBZeUJ6ZEdGeWREb2diblZ0WW1WeUxGeHVJQ0FnSUNBZ0lDQndkV0pzYVdNZ1pXNWtPaUJ1ZFcxaVpYSXNYRzRnSUNBZ0lDQWdJSEIxWW14cFl5QnZjbVJwYm1Gc09pQnVkVzFpWlhJc1hHNGdJQ0FnSUNBZ0lIQjFZbXhwWXlCc1lXNW5kV0ZuWlhNNklITjBjbWx1WjF0ZExGeHVJQ0FnSUNBZ0lDQndkV0pzYVdNZ2MzUjViR1U2SUZ3aWFXNWtaVzUwWENJZ2ZDQmNJbVpsYm1ObFpGd2lMRnh1SUNBZ0lDQWdJQ0J3ZFdKc2FXTWdZMjl1ZEdWdWRGTjBZWEowT2lCdWRXMWlaWElzWEc0Z0lDQWdJQ0FnSUhCMVlteHBZeUJqYjI1MFpXNTBSVzVrT2lCdWRXMWlaWElzWEc0Z0lDQWdJQ0FnSUhCMVlteHBZeUJpYkc5amEwbGtQem9nYzNSeWFXNW5YRzRnSUNBZ0tTQjdmVnh1WEc0Z0lDQWdjSFZpYkdsaklHSjFhV3hrS0NrNklFcHpiMjVOWVhKclpHOTNia052WkdWaWJHOWpheUI3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUI3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWtkSGx3WlRvZ1hDSmpiMlJsWW14dlkydGNJaXhjYmlBZ0lDQWdJQ0FnSUNBZ0lDUnZjbVJwYm1Gc09pQjBhR2x6TG05eVpHbHVZV3dzWEc0Z0lDQWdJQ0FnSUNBZ0lDQWtjRzl6YVhScGIyNDZJSHNnYzNSaGNuUTZJSFJvYVhNdWMzUmhjblFzSUdWdVpEb2dkR2hwY3k1bGJtUWdmU3hjYmlBZ0lDQWdJQ0FnSUNBZ0lDUnBibVpwWld4a2N6b2dkR2hwY3k1dFpYUmhaR0YwWVM1bWFXNXBjMmhKYm14cGJtVkdhV1ZzWkhNb0tTeGNiaUFnSUNBZ0lDQWdJQ0FnSUNSMFlXZHpPaUIwYUdsekxtMWxkR0ZrWVhSaExtWnBibWx6YUZSaFozTW9LU3hjYmlBZ0lDQWdJQ0FnSUNBZ0lDUnNhVzVyY3pvZ2RHaHBjeTV0WlhSaFpHRjBZUzVtYVc1cGMyaE1hVzVyY3lncExGeHVJQ0FnSUNBZ0lDQWdJQ0FnSkdKc2IyTnJTV1E2SUhSb2FYTXVZbXh2WTJ0SlpDeGNiaUFnSUNBZ0lDQWdJQ0FnSUNSc1lXNW5kV0ZuWlhNNklIUm9hWE11YkdGdVozVmhaMlZ6TEZ4dUlDQWdJQ0FnSUNBZ0lDQWdKSE4wZVd4bE9pQjBhR2x6TG5OMGVXeGxMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0pHTnZiblJsYm5SUWIzTnBkR2x2YmpvZ2V5QnpkR0Z5ZERvZ2RHaHBjeTVqYjI1MFpXNTBVM1JoY25Rc0lHVnVaRG9nZEdocGN5NWpiMjUwWlc1MFJXNWtJSDBzWEc0Z0lDQWdJQ0FnSUgwN1hHNGdJQ0FnZlZ4dWZWeHVYRzR2S2lvZ1EyOXVjM1J5ZFdOMGN5QnRZWEpyWkc5M2JpQmtZWFJoWW14dlkydHpJSE53WldOcFptbGpZV3hzZVM0Z0tpOWNibVY0Y0c5eWRDQmpiR0Z6Y3lCRVlYUmhZbXh2WTJ0RVlYUmhJSHRjYmlBZ0lDQndkV0pzYVdNZ2RIbHdaVG9nYzNSeWFXNW5JRDBnWENKa1lYUmhZbXh2WTJ0Y0lqdGNiaUFnSUNCd2RXSnNhV01nYldWMFlXUmhkR0U2SUUxbGRHRmtZWFJoSUQwZ2JtVjNJRTFsZEdGa1lYUmhLQ2s3WEc1Y2JpQWdJQ0J3ZFdKc2FXTWdZMjl1YzNSeWRXTjBiM0lvWEc0Z0lDQWdJQ0FnSUhCMVlteHBZeUJ6ZEdGeWREb2diblZ0WW1WeUxGeHVJQ0FnSUNBZ0lDQndkV0pzYVdNZ1pXNWtPaUJ1ZFcxaVpYSXNYRzRnSUNBZ0lDQWdJSEIxWW14cFl5QnZjbVJwYm1Gc09pQnVkVzFpWlhJc1hHNGdJQ0FnSUNBZ0lIQjFZbXhwWXlCa1lYUmhPaUJTWldOdmNtUThjM1J5YVc1bkxDQktjMjl1Um5KdmJuUnRZWFIwWlhKRmJuUnllVDRzWEc0Z0lDQWdJQ0FnSUhCMVlteHBZeUJpYkc5amEwbGtQem9nYzNSeWFXNW5YRzRnSUNBZ0tTQjdmVnh1WEc0Z0lDQWdjSFZpYkdsaklHSjFhV3hrS0NrNklFcHpiMjVOWVhKclpHOTNia1JoZEdGaWJHOWpheUI3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUI3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWtkSGx3WlRvZ1hDSmtZWFJoWW14dlkydGNJaXhjYmlBZ0lDQWdJQ0FnSUNBZ0lDUnZjbVJwYm1Gc09pQjBhR2x6TG05eVpHbHVZV3dzWEc0Z0lDQWdJQ0FnSUNBZ0lDQWtjRzl6YVhScGIyNDZJSHNnYzNSaGNuUTZJSFJvYVhNdWMzUmhjblFzSUdWdVpEb2dkR2hwY3k1bGJtUWdmU3hjYmlBZ0lDQWdJQ0FnSUNBZ0lDUnBibVpwWld4a2N6b2dkR2hwY3k1dFpYUmhaR0YwWVM1bWFXNXBjMmhKYm14cGJtVkdhV1ZzWkhNb0tTeGNiaUFnSUNBZ0lDQWdJQ0FnSUNSMFlXZHpPaUIwYUdsekxtMWxkR0ZrWVhSaExtWnBibWx6YUZSaFozTW9LU3hjYmlBZ0lDQWdJQ0FnSUNBZ0lDUnNhVzVyY3pvZ2RHaHBjeTV0WlhSaFpHRjBZUzVtYVc1cGMyaE1hVzVyY3lncExGeHVJQ0FnSUNBZ0lDQWdJQ0FnSkdKc2IyTnJTV1E2SUhSb2FYTXVZbXh2WTJ0SlpDeGNiaUFnSUNBZ0lDQWdJQ0FnSUNSa1lYUmhPaUIwYUdsekxtUmhkR0VzWEc0Z0lDQWdJQ0FnSUgwN1hHNGdJQ0FnZlZ4dWZWeHVYRzR2S2lvZ1FtRnpaU0JpYkc5amF5QnRaWFJoWkdGMFlTQjFjMlZrSUdadmNpQnViMjR0YzNCbFkybG1hV01nWW14dlkydHpMaUFxTDF4dVpYaHdiM0owSUdOc1lYTnpJRUpoYzJWQ2JHOWphMFJoZEdFZ2UxeHVJQ0FnSUhCMVlteHBZeUJ0WlhSaFpHRjBZVG9nVFdWMFlXUmhkR0VnUFNCdVpYY2dUV1YwWVdSaGRHRW9LVHRjYmx4dUlDQWdJSEIxWW14cFl5QmpiMjV6ZEhKMVkzUnZjaWhjYmlBZ0lDQWdJQ0FnY0hWaWJHbGpJSE4wWVhKME9pQnVkVzFpWlhJc1hHNGdJQ0FnSUNBZ0lIQjFZbXhwWXlCbGJtUTZJRzUxYldKbGNpeGNiaUFnSUNBZ0lDQWdjSFZpYkdsaklHOXlaR2x1WVd3NklHNTFiV0psY2l4Y2JpQWdJQ0FnSUNBZ2NIVmliR2xqSUhSNWNHVTZJSE4wY21sdVp5eGNiaUFnSUNBZ0lDQWdjSFZpYkdsaklHSnNiMk5yU1dRL09pQnpkSEpwYm1kY2JpQWdJQ0FwSUh0OVhHNWNiaUFnSUNCd2RXSnNhV01nWW5WcGJHUW9LVG9nU25OdmJrMWhjbXRrYjNkdVFteHZZMnNnZTF4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdKSFI1Y0dVNklIUm9hWE11ZEhsd1pTeGNiaUFnSUNBZ0lDQWdJQ0FnSUNSdmNtUnBibUZzT2lCMGFHbHpMbTl5WkdsdVlXd3NYRzRnSUNBZ0lDQWdJQ0FnSUNBa2NHOXphWFJwYjI0NklIc2djM1JoY25RNklIUm9hWE11YzNSaGNuUXNJR1Z1WkRvZ2RHaHBjeTVsYm1RZ2ZTeGNiaUFnSUNBZ0lDQWdJQ0FnSUNScGJtWnBaV3hrY3pvZ2RHaHBjeTV0WlhSaFpHRjBZUzVtYVc1cGMyaEpibXhwYm1WR2FXVnNaSE1vS1N4Y2JpQWdJQ0FnSUNBZ0lDQWdJQ1IwWVdkek9pQjBhR2x6TG0xbGRHRmtZWFJoTG1acGJtbHphRlJoWjNNb0tTeGNiaUFnSUNBZ0lDQWdJQ0FnSUNSc2FXNXJjem9nZEdocGN5NXRaWFJoWkdGMFlTNW1hVzVwYzJoTWFXNXJjeWdwTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdKR0pzYjJOclNXUTZJSFJvYVhNdVlteHZZMnRKWkN4Y2JpQWdJQ0FnSUNBZ2ZUdGNiaUFnSUNCOVhHNTlYRzVjYm1WNGNHOXlkQ0IwZVhCbElFSnNiMk5yUkdGMFlTQTlJRXhwYzNSQ2JHOWphMFJoZEdFZ2ZDQkRiMlJsWW14dlkydEVZWFJoSUh3Z1JHRjBZV0pzYjJOclJHRjBZU0I4SUVKaGMyVkNiRzlqYTBSaGRHRTdYRzVjYmk4cUtpQlZkR2xzYVhSNUlHWnZjaUJqYjI1emRISjFZM1JwYm1jZ2JXRnlhMlJ2ZDI0Z2JHbHpkQ0JwZEdWdGN5NGdLaTljYm1WNGNHOXlkQ0JqYkdGemN5Qk1hWE4wU1hSbGJVUmhkR0VnZTF4dUlDQWdJSEIxWW14cFl5QnRaWFJoWkdGMFlUb2dUV1YwWVdSaGRHRWdQU0J1WlhjZ1RXVjBZV1JoZEdFb0tUdGNiaUFnSUNCd2RXSnNhV01nWld4bGJXVnVkSE02SUV4cGMzUkpkR1Z0UkdGMFlWdGRJRDBnVzEwN1hHNGdJQ0FnY0hWaWJHbGpJR052Ym5OMGNuVmpkRzl5S0Z4dUlDQWdJQ0FnSUNCd2RXSnNhV01nYzNSaGNuUTZJRzUxYldKbGNpeGNiaUFnSUNBZ0lDQWdjSFZpYkdsaklHVnVaRG9nYm5WdFltVnlMRnh1SUNBZ0lDQWdJQ0J3ZFdKc2FXTWdjR0Z5Wlc1MFRHbHVaVG9nYm5WdFltVnlMRnh1SUNBZ0lDQWdJQ0J3ZFdKc2FXTWdjM2x0WW05c1B6b2djM1J5YVc1bkxGeHVJQ0FnSUNBZ0lDQndkV0pzYVdNZ1lteHZZMnRKWkQ4NklITjBjbWx1Wnl4Y2JpQWdJQ0FnSUNBZ2NIVmliR2xqSUhOMFlYUjFjejg2SUhOMGNtbHVaeXhjYmlBZ0lDQWdJQ0FnY0hWaWJHbGpJSFJsZUhRL09pQnpkSEpwYm1kY2JpQWdJQ0FwSUh0OVhHNWNiaUFnSUNCd2RXSnNhV01nWW5WcGJHUW9LVG9nU25OdmJrMWhjbXRrYjNkdVRHbHpkRWwwWlcwZ2UxeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSkhCaGNtVnVkRXhwYm1VNklIUm9hWE11Y0dGeVpXNTBUR2x1WlN4Y2JpQWdJQ0FnSUNBZ0lDQWdJQ1J3YjNOcGRHbHZiam9nZXlCemRHRnlkRG9nZEdocGN5NXpkR0Z5ZEN3Z1pXNWtPaUIwYUdsekxtVnVaQ0I5TEZ4dUlDQWdJQ0FnSUNBZ0lDQWdKR0pzYjJOclNXUTZJSFJvYVhNdVlteHZZMnRKWkN4Y2JpQWdJQ0FnSUNBZ0lDQWdJQ1JsYkdWdFpXNTBjem9nZEdocGN5NWxiR1Z0Wlc1MGN5NXRZWEFvS0dWc1pXMWxiblFwSUQwK0lHVnNaVzFsYm5RdVluVnBiR1FvS1Nrc1hHNGdJQ0FnSUNBZ0lDQWdJQ0FrZEhsd1pUb2dkR2hwY3k1emRHRjBkWE1nUHlCY0luUmhjMnRjSWlBNklGd2liR2x6ZEZ3aUxGeHVJQ0FnSUNBZ0lDQWdJQ0FnSkdsdVptbGxiR1J6T2lCMGFHbHpMbTFsZEdGa1lYUmhMbVpwYm1semFFbHViR2x1WlVacFpXeGtjeWdwTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdKSFJoWjNNNklIUm9hWE11YldWMFlXUmhkR0V1Wm1sdWFYTm9WR0ZuY3lncExGeHVJQ0FnSUNBZ0lDQWdJQ0FnSkd4cGJtdHpPaUIwYUdsekxtMWxkR0ZrWVhSaExtWnBibWx6YUV4cGJtdHpLQ2tzWEc0Z0lDQWdJQ0FnSUNBZ0lDQWtjM1JoZEhWek9pQjBhR2x6TG5OMFlYUjFjeXhjYmlBZ0lDQWdJQ0FnSUNBZ0lDUnplVzFpYjJ3NklIUm9hWE11YzNsdFltOXNMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0pIUmxlSFE2SUhSb2FYTXVkR1Y0ZEN4Y2JpQWdJQ0FnSUNBZ2ZTQmhjeUJLYzI5dVRXRnlhMlJ2ZDI1VVlYTnJTWFJsYlR0Y2JpQWdJQ0I5WEc1OVhHNGlMQ0FpYVcxd2IzSjBJSHNnVEdsdWF5QjlJR1p5YjIwZ1hDSmxlSEJ5WlhOemFXOXVMMnhwYm10Y0lqdGNibWx0Y0c5eWRDQjdJRVJoZEdWVWFXMWxMQ0JFZFhKaGRHbHZiaUI5SUdaeWIyMGdYQ0pzZFhodmJsd2lPMXh1YVcxd2IzSjBJQ29nWVhNZ1VDQm1jbTl0SUZ3aWNHRnljMmx0Ylc5dVhDSTdYRzVwYlhCdmNuUWdlMXh1SUNBZ0lFSnBibUZ5ZVU5d0xGeHVJQ0FnSUVWNGNISmxjM05wYjI0c1hHNGdJQ0FnUlhod2NtVnpjMmx2Ym5Nc1hHNGdJQ0FnVEdGdFltUmhSWGh3Y21WemMybHZiaXhjYmlBZ0lDQk1hWE4wUlhod2NtVnpjMmx2Yml4Y2JpQWdJQ0JNYVhSbGNtRnNSWGh3Y21WemMybHZiaXhjYmlBZ0lDQlBZbXBsWTNSRmVIQnlaWE56YVc5dUxGeHVJQ0FnSUZaaGNtbGhZbXhsUlhod2NtVnpjMmx2Yml4Y2JuMGdabkp2YlNCY0lpNHZaWGh3Y21WemMybHZibHdpTzF4dWFXMXdiM0owSUdWdGIycHBVbVZuWlhnZ1puSnZiU0JjSW1WdGIycHBMWEpsWjJWNFhDSTdYRzVwYlhCdmNuUWdlMXh1SUNBZ0lFbHVaR1Y0UTJocGJHUlBaaXhjYmlBZ0lDQkpibVJsZUZCaGRHZ3NYRzRnSUNBZ1NXNWtaWGhKWkN4Y2JpQWdJQ0JKYm1SbGVFNXZkQ3hjYmlBZ0lDQkpibVJsZUZCaGNtVnVkRTltTEZ4dUlDQWdJRWx1WkdWNFVYVmxjbmtzWEc0Z0lDQWdTVzVrWlhoVVlXZG5aV1FzWEc0Z0lDQWdTVzVrWlhoVWVYQmxaQ3hjYmlBZ0lDQkpibVJsZUV4cGJtdGxaQ3hjYmlBZ0lDQkpibVJsZUVacFpXeGtMRnh1SUNBZ0lFbHVaR1Y0Ulhod2NtVnpjMmx2Yml4Y2JuMGdabkp2YlNCY0ltbHVaR1Y0TDNSNWNHVnpMMmx1WkdWNExYRjFaWEo1WENJN1hHNXBiWEJ2Y25RZ2V5QnViM0p0WVd4cGVtVkVkWEpoZEdsdmJpQjlJR1p5YjIwZ1hDSjFkR2xzY3k5dWIzSnRZV3hwZW1WeWMxd2lPMXh1YVcxd2IzSjBJSHNnVEdsMFpYSmhiQ0I5SUdaeWIyMGdYQ0psZUhCeVpYTnphVzl1TDJ4cGRHVnlZV3hjSWp0Y2JseHVMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dlhHNHZMeUJRWVhKemFXNW5JRkJ5YVcxcGRHbDJaWE1nTHk5Y2JpOHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2TDF4dVhHNHZLaW9nVUhKcGJXbDBhWFpsSUhCaGNuTnBibWNnWm05eUlHTnZiVzF2Ym14NUlITmxaVzRnZEhsd1pYTXVJQ292WEc1bGVIQnZjblFnYVc1MFpYSm1ZV05sSUZCeWFXMXBkR2wyWlhOTVlXNW5kV0ZuWlNCN1hHNGdJQ0FnYm5WdFltVnlPaUJ1ZFcxaVpYSTdYRzRnSUNBZ2MzUnlhVzVuT2lCemRISnBibWM3WEc0Z0lDQWdaWE5qWVhCbFEyaGhjbUZqZEdWeU9pQnpkSEpwYm1jN1hHNGdJQ0FnWW05dmJEb2dZbTl2YkdWaGJqdGNiaUFnSUNCMFlXYzZJSE4wY21sdVp6dGNiaUFnSUNCcFpHVnVkR2xtYVdWeU9pQnpkSEpwYm1jN1hHNGdJQ0FnYkdsdWF6b2dUR2x1YXp0Y2JpQWdJQ0JsYldKbFpFeHBibXM2SUV4cGJtczdYRzRnSUNBZ2NtOXZkRVJoZEdVNklFUmhkR1ZVYVcxbE8xeHVJQ0FnSUdSaGRHVlRhRzl5ZEdoaGJtUTZJR3RsZVc5bUlIUjVjR1Z2WmlCRVFWUkZYMU5JVDFKVVNFRk9SRk03WEc0Z0lDQWdaR0YwWlRvZ1JHRjBaVlJwYldVN1hHNGdJQ0FnWkdGMFpWQnNkWE02SUVSaGRHVlVhVzFsTzF4dUlDQWdJR1IxY21GMGFXOXVWSGx3WlRvZ2EyVjViMllnZEhsd1pXOW1JRVJWVWtGVVNVOU9YMVJaVUVWVE8xeHVJQ0FnSUdSMWNtRjBhVzl1T2lCRWRYSmhkR2x2Ymp0Y2JpQWdJQ0J5WVhkT2RXeHNPaUJ6ZEhKcGJtYzdYRzVjYmlBZ0lDQmlhVzVoY25sUWJIVnpUV2x1ZFhNNklFSnBibUZ5ZVU5d08xeHVJQ0FnSUdKcGJtRnllVTExYkVScGRqb2dRbWx1WVhKNVQzQTdYRzRnSUNBZ1ltbHVZWEo1UTI5dGNHRnlaVTl3T2lCQ2FXNWhjbmxQY0R0Y2JpQWdJQ0JpYVc1aGNubEJibVJQY0RvZ1FtbHVZWEo1VDNBN1hHNGdJQ0FnWW1sdVlYSjVUM0pQY0RvZ1FtbHVZWEo1VDNBN1hHNWNiaUFnSUNBdkx5Qk1hWFJsY21Gc0lHWnBaV3hrSUhCaGNuTnBibWNnWm05eUlHbHVaMlZ6ZEdsdVp5QnBibXhwYm1VZ1ptbGxiR1J6SUdGdVpDQm1jbTl1ZEcxaGRIUmxjaTVjYmlBZ0lDQmhkRzl0U1c1c2FXNWxSbWxsYkdRNklFeHBkR1Z5WVd3N1hHNGdJQ0FnYVc1c2FXNWxSbWxsYkdSTWFYTjBPaUJNYVhSbGNtRnNXMTA3WEc0Z0lDQWdhVzVzYVc1bFJtbGxiR1E2SUV4cGRHVnlZV3c3WEc1OVhHNWNiaThxS2lCSmJYQnNaVzFsYm5SaGRHbHZibk1nWm05eUlHMWhibmtnY0hKcGJXbDBhWFpsY3k0Z0tpOWNibVY0Y0c5eWRDQmpiMjV6ZENCUVVrbE5TVlJKVmtWVElEMGdVQzVqY21WaGRHVk1ZVzVuZFdGblpUeFFjbWx0YVhScGRtVnpUR0Z1WjNWaFoyVStLSHRjYmlBZ0lDQnVkVzFpWlhJNklDaGZLU0E5UGx4dUlDQWdJQ0FnSUNCUUxuSmxaMlY0Y0NndkxUOWJNQzA1WFNzb1hGd3VXekF0T1YwcktUOHZLVnh1SUNBZ0lDQWdJQ0FnSUNBZ0xtMWhjQ2dvYzNSeUtTQTlQaUJPZFcxaVpYSXVjR0Z5YzJWR2JHOWhkQ2h6ZEhJcEtWeHVJQ0FnSUNBZ0lDQWdJQ0FnTG1SbGMyTW9YQ0p1ZFcxaVpYSmNJaWtzWEc1Y2JpQWdJQ0F2THlCQklIRjFiM1JsTFhOMWNuSnZkVzVrWldRZ2MzUnlhVzVuSUhkb2FXTm9JSE4xY0hCdmNuUnpJR1Z6WTJGd1pTQmphR0Z5WVdOMFpYSnpJQ2duWEZ3bktTNWNiaUFnSUNCemRISnBibWM2SUNoeEtTQTlQbHh1SUNBZ0lDQWdJQ0JRTG5OMGNtbHVaeWduWENJbktWeHVJQ0FnSUNBZ0lDQWdJQ0FnTG5Sb1pXNG9YRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdVQzVoYkhRb2NTNWxjMk5oY0dWRGFHRnlZV04wWlhJc0lGQXVibTl1WlU5bUtDZGNJbHhjWEZ3bktTbGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnTG1GMFRHVmhjM1FvTUNsY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdMbTFoY0Nnb1kyaGhjbk1wSUQwK0lHTm9ZWEp6TG1wdmFXNG9YQ0pjSWlrcFhHNGdJQ0FnSUNBZ0lDQWdJQ0FwWEc0Z0lDQWdJQ0FnSUNBZ0lDQXVjMnRwY0NoUUxuTjBjbWx1WnlnblhDSW5LU2xjYmlBZ0lDQWdJQ0FnSUNBZ0lDNWtaWE5qS0Z3aWMzUnlhVzVuWENJcExGeHVYRzRnSUNBZ1pYTmpZWEJsUTJoaGNtRmpkR1Z5T2lBb1h5a2dQVDVjYmlBZ0lDQWdJQ0FnVUM1emRISnBibWNvWENKY1hGeGNYQ0lwWEc0Z0lDQWdJQ0FnSUNBZ0lDQXVkR2hsYmloUUxtRnVlU2xjYmlBZ0lDQWdJQ0FnSUNBZ0lDNXRZWEFvS0dWelkyRndaV1FwSUQwK0lIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQXZMeUJKWmlCM1pTQmhjbVVnWlhOallYQnBibWNnWVNCaVlXTnJjMnhoYzJnZ2IzSWdZU0J4ZFc5MFpTd2djR0Z6Y3lCcGJpQnZiaUJwYmlCbGMyTmhjR1ZrSUdadmNtMWNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBaaUFvWlhOallYQmxaQ0E5UFQwZ0oxd2lKeWtnY21WMGRYSnVJQ2RjSWljN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLR1Z6WTJGd1pXUWdQVDA5SUZ3aVhGeGNYRndpS1NCeVpYUjFjbTRnWENKY1hGeGNYQ0k3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWld4elpTQnlaWFIxY200Z1hDSmNYRnhjWENJZ0t5QmxjMk5oY0dWa08xeHVJQ0FnSUNBZ0lDQWdJQ0FnZlNrc1hHNWNiaUFnSUNBdkx5QkJJR0p2YjJ4bFlXNGdkSEoxWlM5bVlXeHpaU0IyWVd4MVpTNWNiaUFnSUNCaWIyOXNPaUFvWHlrZ1BUNWNiaUFnSUNBZ0lDQWdVQzV5WldkbGVIQW9MM1J5ZFdWOFptRnNjMlY4VkhKMVpYeEdZV3h6WlM4cFhHNGdJQ0FnSUNBZ0lDQWdJQ0F1YldGd0tDaHpkSElwSUQwK0lITjBjaTUwYjB4dmQyVnlRMkZ6WlNncElEMDlJRndpZEhKMVpWd2lLVnh1SUNBZ0lDQWdJQ0FnSUNBZ0xtUmxjMk1vWENKaWIyOXNaV0Z1WENJcExGeHVYRzRnSUNBZ0x5OGdRU0IwWVdjZ2IyWWdkR2hsSUdadmNtMGdKeU56ZEhWbVppOW9aV3hzYnkxMGFHVnlaU2N1WEc0Z0lDQWdkR0ZuT2lBb1h5a2dQVDVjYmlBZ0lDQWdJQ0FnVUM1elpYRk5ZWEFvWEc0Z0lDQWdJQ0FnSUNBZ0lDQlFMbk4wY21sdVp5aGNJaU5jSWlrc1hHNGdJQ0FnSUNBZ0lDQWdJQ0JRTG1Gc2RDaFFMbkpsWjJWNGNDZ3ZXMTVjWEhVeU1EQXdMVnhjZFRJd05rWmNYSFV5UlRBd0xWeGNkVEpGTjBZbklWd2lJeVFsSmlncEtpc3NMam83UEQwK1AwQmVZSHQ4Zlg1Y1hGdGNYRjFjWEZ4Y1hGeHpYUzhwTG1SbGMyTW9YQ0owWlhoMFhDSXBLUzV0WVc1NUtDa3NYRzRnSUNBZ0lDQWdJQ0FnSUNBb2MzUmhjblFzSUhKbGMzUXBJRDArSUhOMFlYSjBJQ3NnY21WemRDNXFiMmx1S0Z3aVhDSXBYRzRnSUNBZ0lDQWdJQ2t1WkdWell5aGNJblJoWjF3aUtTeGNibHh1SUNBZ0lDOHZJRUVnZG1GeWFXRmliR1VnYVdSbGJuUnBabWxsY2l3Z2QyaHBZMmdnYVhNZ1lXeHdhR0Z1ZFcxbGNtbGpJR0Z1WkNCdGRYTjBJSE4wWVhKMElIZHBkR2dnWVNCc1pYUjBaWElnYjNJdUxpNGdaVzF2YW1rdVhHNGdJQ0FnYVdSbGJuUnBabWxsY2pvZ0tGOHBJRDArWEc0Z0lDQWdJQ0FnSUZBdWMyVnhUV0Z3S0Z4dUlDQWdJQ0FnSUNBZ0lDQWdVQzVoYkhRb1VDNXlaV2RsZUhBb0wxdGNYSEI3VEdWMGRHVnlmU1JkTDNVcExDQlFMbkpsWjJWNGNDaEZUVTlLU1Y5U1JVZEZXQ2t1WkdWell5aGNJblJsZUhSY0lpa3BMRnh1SUNBZ0lDQWdJQ0FnSUNBZ1VDNWhiSFFvVUM1eVpXZGxlSEFvTDFzd0xUbGNYSEI3VEdWMGRHVnlmU1JmTFYwdmRTa3NJRkF1Y21WblpYaHdLRVZOVDBwSlgxSkZSMFZZS1M1a1pYTmpLRndpZEdWNGRGd2lLU2t1YldGdWVTZ3BMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0tHWnBjbk4wTENCeVpYTjBLU0E5UGlCbWFYSnpkQ0FySUhKbGMzUXVhbTlwYmloY0lsd2lLVnh1SUNBZ0lDQWdJQ0FwTG1SbGMyTW9YQ0oyWVhKcFlXSnNaVndpS1N4Y2JseHVJQ0FnSUM4dklFRnVJRTlpYzJsa2FXRnVJR3hwYm1zZ2IyWWdkR2hsSUdadmNtMGdXMXM4YkdsdWF6NWRYUzVjYmlBZ0lDQnNhVzVyT2lBb1h5a2dQVDVjYmlBZ0lDQWdJQ0FnVUM1eVpXZGxlSEFvTDF4Y1cxeGNXeWhiWGx4Y1cxeGNYVjBxUHlsY1hGMWNYRjB2ZFN3Z01TbGNiaUFnSUNBZ0lDQWdJQ0FnSUM1dFlYQW9LR3hwYm10SmJtNWxjaWtnUFQ0Z1RHbHVheTV3WVhKelpVbHVibVZ5S0d4cGJtdEpibTVsY2lrcFhHNGdJQ0FnSUNBZ0lDQWdJQ0F1WkdWell5aGNJbVpwYkdVZ2JHbHVhMXdpS1N4Y2JseHVJQ0FnSUM4dklFRnVJR1Z0WW1Wa1pHRmliR1VnYkdsdWF5QjNhR2xqYUNCallXNGdjM1JoY25RZ2QybDBhQ0FuSVNjdUlGUm9hWE1nYjNabGNteGhjSE1nZDJsMGFDQjBhR1VnYm05eWJXRnNJRzVsWjJGMGFXOXVJRzl3WlhKaGRHOXlMQ0J6YnlCcGRDQnBjeUJ2Ym14NVhHNGdJQ0FnTHk4Z2NISnZkbWxrWldRZ1ptOXlJRzFsZEdGa1lYUmhJSEJoY25OcGJtY3VYRzRnSUNBZ1pXMWlaV1JNYVc1ck9pQW9jU2tnUFQ1Y2JpQWdJQ0FnSUNBZ1VDNXpaWEZOWVhBb1VDNXpkSEpwYm1jb1hDSWhYQ0lwTG1GMFRXOXpkQ2d4S1N3Z2NTNXNhVzVyTENBb2NDd2diQ2tnUFQ0Z2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tIQXViR1Z1WjNSb0lENGdNQ2tnYkM1bGJXSmxaQ0E5SUhSeWRXVTdYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnYkR0Y2JpQWdJQ0FnSUNBZ2ZTa3VaR1Z6WXloY0ltWnBiR1VnYkdsdWExd2lLU3hjYmx4dUlDQWdJQzh2SUVKcGJtRnllU0J3YkhWeklHOXlJRzFwYm5WeklHOXdaWEpoZEc5eUxseHVJQ0FnSUdKcGJtRnllVkJzZFhOTmFXNTFjem9nS0Y4cElEMCtYRzRnSUNBZ0lDQWdJRkF1Y21WblpYaHdLQzljWEN0OExTOHBYRzRnSUNBZ0lDQWdJQ0FnSUNBdWJXRndLQ2h6ZEhJcElEMCtJSE4wY2lCaGN5QkNhVzVoY25sUGNDbGNiaUFnSUNBZ0lDQWdJQ0FnSUM1a1pYTmpLRndpSnlzbklHOXlJQ2N0SjF3aUtTeGNibHh1SUNBZ0lDOHZJRUpwYm1GeWVTQjBhVzFsY3lCdmNpQmthWFpwWkdVZ2IzQmxjbUYwYjNJdVhHNGdJQ0FnWW1sdVlYSjVUWFZzUkdsMk9pQW9YeWtnUFQ1Y2JpQWdJQ0FnSUNBZ1VDNXlaV2RsZUhBb0wxeGNLbnhjWEM5OEpTOHBYRzRnSUNBZ0lDQWdJQ0FnSUNBdWJXRndLQ2h6ZEhJcElEMCtJSE4wY2lCaGN5QkNhVzVoY25sUGNDbGNiaUFnSUNBZ0lDQWdJQ0FnSUM1a1pYTmpLRndpSnlvbklHOXlJQ2N2SnlCdmNpQW5KU2RjSWlrc1hHNWNiaUFnSUNBdkx5QkNhVzVoY25rZ1kyOXRjR0Z5YVhOdmJpQnZjR1Z5WVhSdmNpNWNiaUFnSUNCaWFXNWhjbmxEYjIxd1lYSmxUM0E2SUNoZktTQTlQbHh1SUNBZ0lDQWdJQ0JRTG5KbFoyVjRjQ2d2UGoxOFBEMThJVDE4UG53OGZEMHZLVnh1SUNBZ0lDQWdJQ0FnSUNBZ0xtMWhjQ2dvYzNSeUtTQTlQaUJ6ZEhJZ1lYTWdRbWx1WVhKNVQzQXBYRzRnSUNBZ0lDQWdJQ0FnSUNBdVpHVnpZeWhjSWljK1BTY2diM0lnSnp3OUp5QnZjaUFuSVQwbklHOXlJQ2M5SnlCdmNpQW5QaWNnYjNJZ0p6d25YQ0lwTEZ4dVhHNGdJQ0FnTHk4Z1FtbHVZWEo1SUdKdmIyeGxZVzRnWTI5dFltbHVZWFJwYjI0Z2IzQmxjbUYwYjNJdVhHNGdJQ0FnWW1sdVlYSjVRVzVrVDNBNklDaGZLU0E5UGx4dUlDQWdJQ0FnSUNCUUxuSmxaMlY0Y0NndllXNWtmQ1l2YVNsY2JpQWdJQ0FnSUNBZ0lDQWdJQzV0WVhBb0tGOXpkSElwSUQwK0lGd2lKbHdpSUdGeklFSnBibUZ5ZVU5d0tWeHVJQ0FnSUNBZ0lDQWdJQ0FnTG1SbGMyTW9YQ0luWVc1a0oxd2lLU3hjYmlBZ0lDQmlhVzVoY25sUGNrOXdPaUFvWHlrZ1BUNWNiaUFnSUNBZ0lDQWdVQzV5WldkbGVIQW9MMjl5ZkZ4Y2ZDOXBLVnh1SUNBZ0lDQWdJQ0FnSUNBZ0xtMWhjQ2dvWDNOMGNpa2dQVDRnWENKOFhDSWdZWE1nUW1sdVlYSjVUM0FwWEc0Z0lDQWdJQ0FnSUNBZ0lDQXVaR1Z6WXloY0lpZHZjaWRjSWlrc1hHNWNiaUFnSUNBdkx5QkJJR1JoZEdVZ2QyaHBZMmdnWTJGdUlHSmxJRmxaV1ZrdFRVMWJMVVJFVkVoSU9tMXRPbk56WFM1Y2JpQWdJQ0J5YjI5MFJHRjBaVG9nS0Y4cElEMCtYRzRnSUNBZ0lDQWdJRkF1YzJWeFRXRndLRkF1Y21WblpYaHdLQzljWEdSN05IMHZLU3dnVUM1emRISnBibWNvWENJdFhDSXBMQ0JRTG5KbFoyVjRjQ2d2WEZ4a2V6SjlMeWtzSUNoNVpXRnlMQ0JmTENCdGIyNTBhQ2tnUFQ0Z2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJRVJoZEdWVWFXMWxMbVp5YjIxUFltcGxZM1FvZXlCNVpXRnlPaUJPZFcxaVpYSXVjR0Z5YzJWSmJuUW9lV1ZoY2lrc0lHMXZiblJvT2lCT2RXMWlaWEl1Y0dGeWMyVkpiblFvYlc5dWRHZ3BJSDBwTzF4dUlDQWdJQ0FnSUNCOUtTNWtaWE5qS0Z3aVpHRjBaU0JwYmlCbWIzSnRZWFFnV1ZsWldTMU5UVnN0UkVSVVNFZ3RUVTB0VTFNdVRWTmRYQ0lwTEZ4dUlDQWdJR1JoZEdWVGFHOXlkR2hoYm1RNklDaGZLU0E5UGx4dUlDQWdJQ0FnSUNCUUxtRnNkQ2hjYmlBZ0lDQWdJQ0FnSUNBZ0lDNHVMazlpYW1WamRDNXJaWGx6S0VSQlZFVmZVMGhQVWxSSVFVNUVVeWxjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0F1YzI5eWRDZ29ZU3dnWWlrZ1BUNGdZaTVzWlc1bmRHZ2dMU0JoTG14bGJtZDBhQ2xjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0F1YldGd0tGQXVjM1J5YVc1bktWeHVJQ0FnSUNBZ0lDQXBJR0Z6SUZBdVVHRnljMlZ5UEd0bGVXOW1JSFI1Y0dWdlppQkVRVlJGWDFOSVQxSlVTRUZPUkZNK0xGeHVJQ0FnSUdSaGRHVTZJQ2h4S1NBOVBseHVJQ0FnSUNBZ0lDQmphR0ZwYms5d2REeEVZWFJsVkdsdFpUNG9YRzRnSUNBZ0lDQWdJQ0FnSUNCeExuSnZiM1JFWVhSbExGeHVJQ0FnSUNBZ0lDQWdJQ0FnS0hsdE9pQkVZWFJsVkdsdFpTa2dQVDVjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JRTG5ObGNVMWhjQ2hRTG5OMGNtbHVaeWhjSWkxY0lpa3NJRkF1Y21WblpYaHdLQzljWEdSN01uMHZLU3dnS0Y4c0lHUmhlU2tnUFQ0Z2VXMHVjMlYwS0hzZ1pHRjVPaUJPZFcxaVpYSXVjR0Z5YzJWSmJuUW9aR0Y1S1NCOUtTa3NYRzRnSUNBZ0lDQWdJQ0FnSUNBb2VXMWtPaUJFWVhSbFZHbHRaU2tnUFQ1Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCUUxuTmxjVTFoY0NoUUxuTjBjbWx1WnloY0lsUmNJaWtzSUZBdWNtVm5aWGh3S0M5Y1hHUjdNbjB2S1N3Z0tGOHNJR2h2ZFhJcElEMCtJSGx0WkM1elpYUW9leUJvYjNWeU9pQk9kVzFpWlhJdWNHRnljMlZKYm5Rb2FHOTFjaWtnZlNrcExGeHVJQ0FnSUNBZ0lDQWdJQ0FnS0hsdFpHZzZJRVJoZEdWVWFXMWxLU0E5UGx4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUZBdWMyVnhUV0Z3S0ZBdWMzUnlhVzVuS0Z3aU9sd2lLU3dnVUM1eVpXZGxlSEFvTDF4Y1pIc3lmUzhwTENBb1h5d2diV2x1ZFhSbEtTQTlQbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCNWJXUm9Mbk5sZENoN0lHMXBiblYwWlRvZ1RuVnRZbVZ5TG5CaGNuTmxTVzUwS0cxcGJuVjBaU2tnZlNsY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBcExGeHVJQ0FnSUNBZ0lDQWdJQ0FnS0hsdFpHaHRPaUJFWVhSbFZHbHRaU2tnUFQ1Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCUUxuTmxjVTFoY0NoUUxuTjBjbWx1WnloY0lqcGNJaWtzSUZBdWNtVm5aWGh3S0M5Y1hHUjdNbjB2S1N3Z0tGOHNJSE5sWTI5dVpDa2dQVDVjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2VXMWthRzB1YzJWMEtIc2djMlZqYjI1a09pQk9kVzFpWlhJdWNHRnljMlZKYm5Rb2MyVmpiMjVrS1NCOUtWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDa3NYRzRnSUNBZ0lDQWdJQ0FnSUNBb2VXMWthRzF6T2lCRVlYUmxWR2x0WlNrZ1BUNWNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQlFMbUZzZENoY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdVQzV6WlhGTllYQW9VQzV6ZEhKcGJtY29YQ0l1WENJcExDQlFMbkpsWjJWNGNDZ3ZYRnhrZXpOOUx5a3NJQ2hmTENCdGFXeHNhWE5sWTI5dVpDa2dQVDVjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSGx0WkdodGN5NXpaWFFvZXlCdGFXeHNhWE5sWTI5dVpEb2dUblZ0WW1WeUxuQmhjbk5sU1c1MEtHMXBiR3hwYzJWamIyNWtLU0I5S1Z4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQXBMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCUUxuTjFZMk5sWldRb2VXMWthRzF6S1NBdkx5QndZWE56WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnS1N4Y2JpQWdJQ0FnSUNBZ0lDQWdJQ2hrZERvZ1JHRjBaVlJwYldVcElEMCtYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdVQzVoYkhRb1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRkF1YzJWeFRXRndLRkF1YzNSeWFXNW5LRndpSzF3aUtTNXZjaWhRTG5OMGNtbHVaeWhjSWkxY0lpa3BMQ0JRTG5KbFoyVjRjQ2d2WEZ4a2V6RXNNbjBvT2x4Y1pIc3lmU2svTHlrc0lDaHdiU3dnYUhJcElEMCtYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmtkQzV6WlhSYWIyNWxLRndpVlZSRFhDSWdLeUJ3YlNBcklHaHlMQ0I3SUd0bFpYQk1iMk5oYkZScGJXVTZJSFJ5ZFdVZ2ZTbGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnS1N4Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdVQzV6WlhGTllYQW9VQzV6ZEhKcGJtY29YQ0phWENJcExDQW9LU0E5UGlCa2RDNXpaWFJhYjI1bEtGd2lkWFJqWENJc0lIc2dhMlZsY0V4dlkyRnNWR2x0WlRvZ2RISjFaU0I5S1Nrc1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRkF1YzJWeFRXRndLRkF1YzNSeWFXNW5LRndpVzF3aUtTd2dVQzV5WldkbGVIQW9MMXN3TFRsQkxWcGhMWG9yTFZ4Y0wxMHJMM1VwTENCUUxuTjBjbWx1WnloY0lsMWNJaWtzSUNoZllTd2dlbTl1WlN3Z1gySXBJRDArWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JrZEM1elpYUmFiMjVsS0hwdmJtVXNJSHNnYTJWbGNFeHZZMkZzVkdsdFpUb2dkSEoxWlNCOUtWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FwWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnS1Z4dUlDQWdJQ0FnSUNBcFhHNGdJQ0FnSUNBZ0lDQWdJQ0F1WVhOelpYSjBLQ2hrZERvZ1JHRjBaVlJwYldVcElEMCtJR1IwTG1selZtRnNhV1FzSUZ3aWRtRnNhV1FnWkdGMFpWd2lLVnh1SUNBZ0lDQWdJQ0FnSUNBZ0xtUmxjMk1vWENKa1lYUmxJR2x1SUdadmNtMWhkQ0JaV1ZsWkxVMU5XeTFFUkZSSVNDMU5UUzFUVXk1TlUxMWNJaWtzWEc1Y2JpQWdJQ0F2THlCQklHUmhkR1VzSUhCc2RYTWdkbUZ5YVc5MWN5QnphRzl5ZEdoaGJtUWdkR2x0WlhNZ2IyWWdaR0Y1SUdsMElHTnZkV3hrSUdKbExseHVJQ0FnSUdSaGRHVlFiSFZ6T2lBb2NTa2dQVDVjYmlBZ0lDQWdJQ0FnVUM1aGJIUThSR0YwWlZScGJXVStLRnh1SUNBZ0lDQWdJQ0FnSUNBZ2NTNWtZWFJsVTJodmNuUm9ZVzVrTG0xaGNDZ29aQ2tnUFQ0Z1JFRlVSVjlUU0U5U1ZFaEJUa1JUVzJSZEtDa3BMRnh1SUNBZ0lDQWdJQ0FnSUNBZ2NTNWtZWFJsWEc0Z0lDQWdJQ0FnSUNrdVpHVnpZeWhjSW1SaGRHVWdhVzRnWm05eWJXRjBJRmxaV1ZrdFRVMWJMVVJFVkVoSUxVMU5MVk5UTGsxVFhTQnZjaUJwYmlCemFHOXlkR2hoYm1SY0lpa3NYRzVjYmlBZ0lDQXZMeUJCSUdSMWNtRjBhVzl1SUc5bUlIUnBiV1V1WEc0Z0lDQWdaSFZ5WVhScGIyNVVlWEJsT2lBb1h5a2dQVDVjYmlBZ0lDQWdJQ0FnVUM1aGJIUW9YRzRnSUNBZ0lDQWdJQ0FnSUNBdUxpNVBZbXBsWTNRdWEyVjVjeWhFVlZKQlZFbFBUbDlVV1ZCRlV5bGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQXVjMjl5ZENnb1lTd2dZaWtnUFQ0Z1lpNXNaVzVuZEdnZ0xTQmhMbXhsYm1kMGFDbGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQXViV0Z3S0ZBdWMzUnlhVzVuS1Z4dUlDQWdJQ0FnSUNBcElHRnpJRkF1VUdGeWMyVnlQR3RsZVc5bUlIUjVjR1Z2WmlCRVZWSkJWRWxQVGw5VVdWQkZVejRzWEc0Z0lDQWdaSFZ5WVhScGIyNDZJQ2h4S1NBOVBseHVJQ0FnSUNBZ0lDQlFMbk5sY1UxaGNDaHhMbTUxYldKbGNpd2dVQzV2Y0hSWGFHbDBaWE53WVdObExDQnhMbVIxY21GMGFXOXVWSGx3WlN3Z0tHTnZkVzUwTENCZkxDQjBLU0E5UGx4dUlDQWdJQ0FnSUNBZ0lDQWdSRlZTUVZSSlQwNWZWRmxRUlZOYmRGMHViV0Z3Vlc1cGRITW9LSGdwSUQwK0lIZ2dLaUJqYjNWdWRDbGNiaUFnSUNBZ0lDQWdLVnh1SUNBZ0lDQWdJQ0FnSUNBZ0xuTmxjRUo1TVNoUUxuTjBjbWx1WnloY0lpeGNJaWt1ZEhKcGJTaFFMbTl3ZEZkb2FYUmxjM0JoWTJVcExtOXlLRkF1YjNCMFYyaHBkR1Z6Y0dGalpTa3BYRzRnSUNBZ0lDQWdJQ0FnSUNBdWJXRndLQ2hrZFhKaGRHbHZibk1wSUQwK0lHUjFjbUYwYVc5dWN5NXlaV1IxWTJVb0tIQXNJR01wSUQwK0lIQXVjR3gxY3loaktTa3BYRzRnSUNBZ0lDQWdJQ0FnSUNBdVpHVnpZeWhjSW1SMWNtRjBhVzl1SUd4cGEyVWdOR2h5TW0xcGJsd2lLU3hjYmx4dUlDQWdJQzh2SUVFZ2NtRjNJRzUxYkd3Z2RtRnNkV1V1WEc0Z0lDQWdjbUYzVG5Wc2JEb2dLRjhwSUQwK0lGQXVjM1J5YVc1bktGd2liblZzYkZ3aUtTeGNibHh1SUNBZ0lDOHZJRWx1YkdsdVpTQm1hV1ZzWkNCMllXeDFaU0J3WVhKemFXNW5MbHh1SUNBZ0lHRjBiMjFKYm14cGJtVkdhV1ZzWkRvZ0tIRXBJRDArWEc0Z0lDQWdJQ0FnSUZBdVlXeDBLRnh1SUNBZ0lDQWdJQ0FnSUNBZ2NTNWtZWFJsTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdjUzVrZFhKaGRHbHZiaTV0WVhBb0tHUXBJRDArSUc1dmNtMWhiR2w2WlVSMWNtRjBhVzl1S0dRcEtTeGNiaUFnSUNBZ0lDQWdJQ0FnSUhFdWMzUnlhVzVuTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdjUzUwWVdjc1hHNGdJQ0FnSUNBZ0lDQWdJQ0J4TG1WdFltVmtUR2x1YXl4Y2JpQWdJQ0FnSUNBZ0lDQWdJSEV1WW05dmJDeGNiaUFnSUNBZ0lDQWdJQ0FnSUhFdWJuVnRZbVZ5TEZ4dUlDQWdJQ0FnSUNBZ0lDQWdjUzV5WVhkT2RXeHNYRzRnSUNBZ0lDQWdJQ2tzWEc0Z0lDQWdhVzVzYVc1bFJtbGxiR1JNYVhOME9pQW9jU2tnUFQ0Z2NTNWhkRzl0U1c1c2FXNWxSbWxsYkdRdWMyVndRbmtvVUM1emRISnBibWNvWENJc1hDSXBMblJ5YVcwb1VDNXZjSFJYYUdsMFpYTndZV05sS1M1c2IyOXJZV2hsWVdRb2NTNWhkRzl0U1c1c2FXNWxSbWxsYkdRcEtTeGNiaUFnSUNCcGJteHBibVZHYVdWc1pEb2dLSEVwSUQwK1hHNGdJQ0FnSUNBZ0lGQXVZV3gwS0Z4dUlDQWdJQ0FnSUNBZ0lDQWdVQzV6WlhGTllYQW9jUzVoZEc5dFNXNXNhVzVsUm1sbGJHUXNJRkF1YzNSeWFXNW5LRndpTEZ3aUtTNTBjbWx0S0ZBdWIzQjBWMmhwZEdWemNHRmpaU2tzSUhFdWFXNXNhVzVsUm1sbGJHUk1hWE4wTENBb1ppd2dYM01zSUd3cElEMCtYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdXMlpkTG1OdmJtTmhkQ2hzS1Z4dUlDQWdJQ0FnSUNBZ0lDQWdLU3hjYmlBZ0lDQWdJQ0FnSUNBZ0lIRXVZWFJ2YlVsdWJHbHVaVVpwWld4a1hHNGdJQ0FnSUNBZ0lDa3NYRzU5S1R0Y2JseHVMeW9xSUVWdGIycHBJSEpsWjJWNExDQnpkSEp3Y0dsdVp5QmhibmtnY21WblpYZ2dabXhoWjNNZ2FYUWdhR0Z6TGlBcUwxeHVZMjl1YzNRZ1JVMVBTa2xmVWtWSFJWZ2dQU0J1WlhjZ1VtVm5SWGh3S0dWdGIycHBVbVZuWlhnb0tTd2dYQ0pjSWlrN1hHNWNiaThxS2lCUWNtOTJhV1JsY3lCaElHeHZiMnQxY0NCMFlXSnNaU0JtYjNJZ2RXNXBkQ0JrZFhKaGRHbHZibk1nYjJZZ2RHaGxJR2RwZG1WdUlIUjVjR1V1SUNvdlhHNWxlSEJ2Y25RZ1kyOXVjM1FnUkZWU1FWUkpUMDVmVkZsUVJWTWdQU0I3WEc0Z0lDQWdlV1ZoY2pvZ1JIVnlZWFJwYjI0dVpuSnZiVTlpYW1WamRDaDdJSGxsWVhKek9pQXhJSDBwTEZ4dUlDQWdJSGxsWVhKek9pQkVkWEpoZEdsdmJpNW1jbTl0VDJKcVpXTjBLSHNnZVdWaGNuTTZJREVnZlNrc1hHNGdJQ0FnZVhJNklFUjFjbUYwYVc5dUxtWnliMjFQWW1wbFkzUW9leUI1WldGeWN6b2dNU0I5S1N4Y2JpQWdJQ0I1Y25NNklFUjFjbUYwYVc5dUxtWnliMjFQWW1wbFkzUW9leUI1WldGeWN6b2dNU0I5S1N4Y2JseHVJQ0FnSUcxdmJuUm9PaUJFZFhKaGRHbHZiaTVtY205dFQySnFaV04wS0hzZ2JXOXVkR2h6T2lBeElIMHBMRnh1SUNBZ0lHMXZiblJvY3pvZ1JIVnlZWFJwYjI0dVpuSnZiVTlpYW1WamRDaDdJRzF2Ym5Sb2N6b2dNU0I5S1N4Y2JpQWdJQ0J0YnpvZ1JIVnlZWFJwYjI0dVpuSnZiVTlpYW1WamRDaDdJRzF2Ym5Sb2N6b2dNU0I5S1N4Y2JpQWdJQ0J0YjNNNklFUjFjbUYwYVc5dUxtWnliMjFQWW1wbFkzUW9leUJ0YjI1MGFITTZJREVnZlNrc1hHNWNiaUFnSUNCM1pXVnJPaUJFZFhKaGRHbHZiaTVtY205dFQySnFaV04wS0hzZ2QyVmxhM002SURFZ2ZTa3NYRzRnSUNBZ2QyVmxhM002SUVSMWNtRjBhVzl1TG1aeWIyMVBZbXBsWTNRb2V5QjNaV1ZyY3pvZ01TQjlLU3hjYmlBZ0lDQjNhem9nUkhWeVlYUnBiMjR1Wm5KdmJVOWlhbVZqZENoN0lIZGxaV3R6T2lBeElIMHBMRnh1SUNBZ0lIZHJjem9nUkhWeVlYUnBiMjR1Wm5KdmJVOWlhbVZqZENoN0lIZGxaV3R6T2lBeElIMHBMRnh1SUNBZ0lIYzZJRVIxY21GMGFXOXVMbVp5YjIxUFltcGxZM1FvZXlCM1pXVnJjem9nTVNCOUtTeGNibHh1SUNBZ0lHUmhlVG9nUkhWeVlYUnBiMjR1Wm5KdmJVOWlhbVZqZENoN0lHUmhlWE02SURFZ2ZTa3NYRzRnSUNBZ1pHRjVjem9nUkhWeVlYUnBiMjR1Wm5KdmJVOWlhbVZqZENoN0lHUmhlWE02SURFZ2ZTa3NYRzRnSUNBZ1pEb2dSSFZ5WVhScGIyNHVabkp2YlU5aWFtVmpkQ2g3SUdSaGVYTTZJREVnZlNrc1hHNWNiaUFnSUNCb2IzVnlPaUJFZFhKaGRHbHZiaTVtY205dFQySnFaV04wS0hzZ2FHOTFjbk02SURFZ2ZTa3NYRzRnSUNBZ2FHOTFjbk02SUVSMWNtRjBhVzl1TG1aeWIyMVBZbXBsWTNRb2V5Qm9iM1Z5Y3pvZ01TQjlLU3hjYmlBZ0lDQm9jam9nUkhWeVlYUnBiMjR1Wm5KdmJVOWlhbVZqZENoN0lHaHZkWEp6T2lBeElIMHBMRnh1SUNBZ0lHaHljem9nUkhWeVlYUnBiMjR1Wm5KdmJVOWlhbVZqZENoN0lHaHZkWEp6T2lBeElIMHBMRnh1SUNBZ0lHZzZJRVIxY21GMGFXOXVMbVp5YjIxUFltcGxZM1FvZXlCb2IzVnljem9nTVNCOUtTeGNibHh1SUNBZ0lHMXBiblYwWlRvZ1JIVnlZWFJwYjI0dVpuSnZiVTlpYW1WamRDaDdJRzFwYm5WMFpYTTZJREVnZlNrc1hHNGdJQ0FnYldsdWRYUmxjem9nUkhWeVlYUnBiMjR1Wm5KdmJVOWlhbVZqZENoN0lHMXBiblYwWlhNNklERWdmU2tzWEc0Z0lDQWdiV2x1T2lCRWRYSmhkR2x2Ymk1bWNtOXRUMkpxWldOMEtIc2diV2x1ZFhSbGN6b2dNU0I5S1N4Y2JpQWdJQ0J0YVc1ek9pQkVkWEpoZEdsdmJpNW1jbTl0VDJKcVpXTjBLSHNnYldsdWRYUmxjem9nTVNCOUtTeGNiaUFnSUNCdE9pQkVkWEpoZEdsdmJpNW1jbTl0VDJKcVpXTjBLSHNnYldsdWRYUmxjem9nTVNCOUtTeGNibHh1SUNBZ0lITmxZMjl1WkRvZ1JIVnlZWFJwYjI0dVpuSnZiVTlpYW1WamRDaDdJSE5sWTI5dVpITTZJREVnZlNrc1hHNGdJQ0FnYzJWamIyNWtjem9nUkhWeVlYUnBiMjR1Wm5KdmJVOWlhbVZqZENoN0lITmxZMjl1WkhNNklERWdmU2tzWEc0Z0lDQWdjMlZqT2lCRWRYSmhkR2x2Ymk1bWNtOXRUMkpxWldOMEtIc2djMlZqYjI1a2N6b2dNU0I5S1N4Y2JpQWdJQ0J6WldOek9pQkVkWEpoZEdsdmJpNW1jbTl0VDJKcVpXTjBLSHNnYzJWamIyNWtjem9nTVNCOUtTeGNiaUFnSUNCek9pQkVkWEpoZEdsdmJpNW1jbTl0VDJKcVpXTjBLSHNnYzJWamIyNWtjem9nTVNCOUtTeGNibjA3WEc1Y2JpOHFLaUJUYUc5eWRHaGhibVFnWm05eUlHTnZiVzF2YmlCa1lYUmxjeUFvY21Wc1lYUnBkbVVnZEc4Z2NtbG5hSFFnYm05M0tTNGdLaTljYm1WNGNHOXlkQ0JqYjI1emRDQkVRVlJGWDFOSVQxSlVTRUZPUkZNZ1BTQjdYRzRnSUNBZ2JtOTNPaUFvS1NBOVBpQkVZWFJsVkdsdFpTNXNiMk5oYkNncExGeHVJQ0FnSUhSdlpHRjVPaUFvS1NBOVBpQkVZWFJsVkdsdFpTNXNiMk5oYkNncExuTjBZWEowVDJZb1hDSmtZWGxjSWlrc1hHNGdJQ0FnZVdWemRHVnlaR0Y1T2lBb0tTQTlQbHh1SUNBZ0lDQWdJQ0JFWVhSbFZHbHRaUzVzYjJOaGJDZ3BYRzRnSUNBZ0lDQWdJQ0FnSUNBdWMzUmhjblJQWmloY0ltUmhlVndpS1Z4dUlDQWdJQ0FnSUNBZ0lDQWdMbTFwYm5WektFUjFjbUYwYVc5dUxtWnliMjFQWW1wbFkzUW9leUJrWVhsek9pQXhJSDBwS1N4Y2JpQWdJQ0IwYjIxdmNuSnZkem9nS0NrZ1BUNWNiaUFnSUNBZ0lDQWdSR0YwWlZScGJXVXViRzlqWVd3b0tWeHVJQ0FnSUNBZ0lDQWdJQ0FnTG5OMFlYSjBUMllvWENKa1lYbGNJaWxjYmlBZ0lDQWdJQ0FnSUNBZ0lDNXdiSFZ6S0VSMWNtRjBhVzl1TG1aeWIyMVBZbXBsWTNRb2V5QmtZWGx6T2lBeElIMHBLU3hjYmlBZ0lDQnpiM2M2SUNncElEMCtJRVJoZEdWVWFXMWxMbXh2WTJGc0tDa3VjM1JoY25SUFppaGNJbmRsWld0Y0lpa3NYRzRnSUNBZ1hDSnpkR0Z5ZEMxdlppMTNaV1ZyWENJNklDZ3BJRDArSUVSaGRHVlVhVzFsTG14dlkyRnNLQ2t1YzNSaGNuUlBaaWhjSW5kbFpXdGNJaWtzWEc0Z0lDQWdaVzkzT2lBb0tTQTlQaUJFWVhSbFZHbHRaUzVzYjJOaGJDZ3BMbVZ1WkU5bUtGd2lkMlZsYTF3aUtTeGNiaUFnSUNCY0ltVnVaQzF2WmkxM1pXVnJYQ0k2SUNncElEMCtJRVJoZEdWVWFXMWxMbXh2WTJGc0tDa3VaVzVrVDJZb1hDSjNaV1ZyWENJcExGeHVJQ0FnSUhOdmVUb2dLQ2tnUFQ0Z1JHRjBaVlJwYldVdWJHOWpZV3dvS1M1emRHRnlkRTltS0Z3aWVXVmhjbHdpS1N4Y2JpQWdJQ0JjSW5OMFlYSjBMVzltTFhsbFlYSmNJam9nS0NrZ1BUNGdSR0YwWlZScGJXVXViRzlqWVd3b0tTNXpkR0Z5ZEU5bUtGd2llV1ZoY2x3aUtTeGNiaUFnSUNCbGIzazZJQ2dwSUQwK0lFUmhkR1ZVYVcxbExteHZZMkZzS0NrdVpXNWtUMllvWENKNVpXRnlYQ0lwTEZ4dUlDQWdJRndpWlc1a0xXOW1MWGxsWVhKY0lqb2dLQ2tnUFQ0Z1JHRjBaVlJwYldVdWJHOWpZV3dvS1M1bGJtUlBaaWhjSW5sbFlYSmNJaWtzWEc0Z0lDQWdjMjl0T2lBb0tTQTlQaUJFWVhSbFZHbHRaUzVzYjJOaGJDZ3BMbk4wWVhKMFQyWW9YQ0p0YjI1MGFGd2lLU3hjYmlBZ0lDQmNJbk4wWVhKMExXOW1MVzF2Ym5Sb1hDSTZJQ2dwSUQwK0lFUmhkR1ZVYVcxbExteHZZMkZzS0NrdWMzUmhjblJQWmloY0ltMXZiblJvWENJcExGeHVJQ0FnSUdWdmJUb2dLQ2tnUFQ0Z1JHRjBaVlJwYldVdWJHOWpZV3dvS1M1bGJtUlBaaWhjSW0xdmJuUm9YQ0lwTEZ4dUlDQWdJRndpWlc1a0xXOW1MVzF2Ym5Sb1hDSTZJQ2dwSUQwK0lFUmhkR1ZVYVcxbExteHZZMkZzS0NrdVpXNWtUMllvWENKdGIyNTBhRndpS1N4Y2JuMDdYRzVjYmk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTljYmk4dklFVjRjSEpsYzNOcGIyNGdUR0Z1WjNWaFoyVWdMeTljYmk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTljYmx4dVpYaHdiM0owSUhSNWNHVWdVRzl6ZEdacGVFWnlZV2R0Wlc1MElEMWNiaUFnSUNCOElIc2dkSGx3WlRvZ1hDSmtiM1JjSWpzZ1pYaHdjam9nYzNSeWFXNW5JSDFjYmlBZ0lDQjhJSHNnZEhsd1pUb2dYQ0pwYm1SbGVGd2lPeUJsZUhCeU9pQkZlSEJ5WlhOemFXOXVJSDFjYmlBZ0lDQjhJSHNnZEhsd1pUb2dYQ0ptZFc1amRHbHZibHdpT3lCbGVIQnljem9nUlhod2NtVnpjMmx2Ymx0ZElIMDdYRzVjYm1WNGNHOXlkQ0JwYm5SbGNtWmhZMlVnUlhod2NtVnpjMmx2Ymt4aGJtZDFZV2RsSUh0Y2JpQWdJQ0IyWVhKcFlXSnNaVG9nVm1GeWFXRmliR1ZGZUhCeVpYTnphVzl1TzF4dUlDQWdJRzUxYldKbGNqb2dUR2wwWlhKaGJFVjRjSEpsYzNOcGIyNDdYRzRnSUNBZ1ltOXZiRG9nVEdsMFpYSmhiRVY0Y0hKbGMzTnBiMjQ3WEc0Z0lDQWdjM1J5YVc1bk9pQk1hWFJsY21Gc1JYaHdjbVZ6YzJsdmJqdGNiaUFnSUNCa1lYUmxPaUJNYVhSbGNtRnNSWGh3Y21WemMybHZianRjYmlBZ0lDQmtkWEpoZEdsdmJqb2dUR2wwWlhKaGJFVjRjSEpsYzNOcGIyNDdYRzRnSUNBZ2JHbHVhem9nVEdsMFpYSmhiRVY0Y0hKbGMzTnBiMjQ3WEc0Z0lDQWdiblZzYkRvZ1RHbDBaWEpoYkVWNGNISmxjM05wYjI0N1hHNWNiaUFnSUNCc2FYTjBPaUJNYVhOMFJYaHdjbVZ6YzJsdmJqdGNiaUFnSUNCdlltcGxZM1E2SUU5aWFtVmpkRVY0Y0hKbGMzTnBiMjQ3WEc1Y2JpQWdJQ0J1WldkaGRHVmtPaUJGZUhCeVpYTnphVzl1TzF4dUlDQWdJR0YwYjIwNklFVjRjSEpsYzNOcGIyNDdYRzRnSUNBZ2FXNWtaWGc2SUVWNGNISmxjM05wYjI0N1hHNGdJQ0FnYkdGdFltUmhPaUJNWVcxaVpHRkZlSEJ5WlhOemFXOXVPMXh1WEc0Z0lDQWdMeThnVUc5emRHWnBlQ0J3WVhKelpYSnpJR1p2Y2lCbWRXNWpkR2x2YmlCallXeHNjeUFtSUhSb1pTQnNhV3RsTGx4dUlDQWdJR1J2ZEZCdmMzUm1hWGc2SUZCdmMzUm1hWGhHY21GbmJXVnVkRHRjYmlBZ0lDQnBibVJsZUZCdmMzUm1hWGc2SUZCdmMzUm1hWGhHY21GbmJXVnVkRHRjYmlBZ0lDQm1kVzVqZEdsdmJsQnZjM1JtYVhnNklGQnZjM1JtYVhoR2NtRm5iV1Z1ZER0Y2JseHVJQ0FnSUM4dklFSnBibUZ5ZVNCdmNDQndZWEp6WlhKekxseHVJQ0FnSUdKcGJtRnllVTExYkVScGRqb2dSWGh3Y21WemMybHZianRjYmlBZ0lDQmlhVzVoY25sUWJIVnpUV2x1ZFhNNklFVjRjSEpsYzNOcGIyNDdYRzRnSUNBZ1ltbHVZWEo1UTI5dGNHRnlaVG9nUlhod2NtVnpjMmx2Ymp0Y2JpQWdJQ0JpYVc1aGNubENiMjlzWldGdU9pQkZlSEJ5WlhOemFXOXVPMXh1SUNBZ0lHSnBibUZ5ZVU5d09pQkZlSEJ5WlhOemFXOXVPMXh1SUNBZ0lIQmhjbVZ1Y3pvZ1JYaHdjbVZ6YzJsdmJqdGNiaUFnSUNCbGVIQnlaWE56YVc5dU9pQkZlSEJ5WlhOemFXOXVPMXh1ZlZ4dVhHNHZLaXBjYmlBcUlGQmhjbk5sSUdadmNpQjBhR1VnWkdGMFlXTnZjbVVnWlhod2NtVnpjMmx2YmlCc1lXNW5kV0ZuWlN3Z2QyaHBZMmdnY0hKdmRtbGtaWE1nYzJsdGNHeGxJR0Z1WkNCMllXZDFaV3g1SUVwVExXeHZiMnRwYm1jZ1kyOXRjSFYwWVhScGIyNHVYRzRnS2k5Y2JtVjRjRzl5ZENCamIyNXpkQ0JGV0ZCU1JWTlRTVTlPSUQwZ1VDNWpjbVZoZEdWTVlXNW5kV0ZuWlR4RmVIQnlaWE56YVc5dVRHRnVaM1ZoWjJVK0tIdGNiaUFnSUNBdkx5QkdhV1ZzWkNCd1lYSnphVzVuTGx4dUlDQWdJSFpoY21saFlteGxPaUFvWHlrZ1BUNGdVRkpKVFVsVVNWWkZVeTVwWkdWdWRHbG1hV1Z5TG0xaGNDaEZlSEJ5WlhOemFXOXVjeTUyWVhKcFlXSnNaU2t1WkdWell5aGNJblpoY21saFlteGxYQ0lwTEZ4dUlDQWdJRzUxYldKbGNqb2dLRjhwSUQwK0lGQlNTVTFKVkVsV1JWTXViblZ0WW1WeUxtMWhjQ2hGZUhCeVpYTnphVzl1Y3k1c2FYUmxjbUZzS1M1a1pYTmpLRndpYm5WdFltVnlYQ0lwTEZ4dUlDQWdJSE4wY21sdVp6b2dLRjhwSUQwK0lGQlNTVTFKVkVsV1JWTXVjM1J5YVc1bkxtMWhjQ2hGZUhCeVpYTnphVzl1Y3k1c2FYUmxjbUZzS1M1a1pYTmpLRndpYzNSeWFXNW5YQ0lwTEZ4dUlDQWdJR0p2YjJ3NklDaGZLU0E5UGlCUVVrbE5TVlJKVmtWVExtSnZiMnd1YldGd0tFVjRjSEpsYzNOcGIyNXpMbXhwZEdWeVlXd3BMbVJsYzJNb1hDSmliMjlzWldGdVhDSXBMRnh1SUNBZ0lHUmhkR1U2SUNoZktTQTlQbHh1SUNBZ0lDQWdJQ0JqY21WaGRHVkdkVzVqZEdsdmJpaGNJbVJoZEdWY0lpd2dVRkpKVFVsVVNWWkZVeTVrWVhSbFVHeDFjeWxjYmlBZ0lDQWdJQ0FnSUNBZ0lDNXRZWEFvS0Z0ZlpuVnVZeXdnWkdGMFpWMHBJRDArSUVWNGNISmxjM05wYjI1ekxteHBkR1Z5WVd3b1pHRjBaU2twWEc0Z0lDQWdJQ0FnSUNBZ0lDQXVaR1Z6WXloY0ltUmhkR1ZjSWlrc1hHNGdJQ0FnWkhWeVlYUnBiMjQ2SUNoZktTQTlQbHh1SUNBZ0lDQWdJQ0JqY21WaGRHVkdkVzVqZEdsdmJpaGNJbVIxY2x3aUxDQlFVa2xOU1ZSSlZrVlRMbVIxY21GMGFXOXVLVnh1SUNBZ0lDQWdJQ0FnSUNBZ0xtMWhjQ2dvVzE5bWRXNWpMQ0JrZFhKZEtTQTlQaUJGZUhCeVpYTnphVzl1Y3k1c2FYUmxjbUZzS0dSMWNpa3BYRzRnSUNBZ0lDQWdJQ0FnSUNBdVpHVnpZeWhjSW1SMWNtRjBhVzl1WENJcExGeHVJQ0FnSUc1MWJHdzZJQ2hmS1NBOVBpQlFVa2xOU1ZSSlZrVlRMbkpoZDA1MWJHd3ViV0Z3S0NoZktTQTlQaUJGZUhCeVpYTnphVzl1Y3k1T1ZVeE1LU3hjYmlBZ0lDQnNhVzVyT2lBb1h5a2dQVDRnVUZKSlRVbFVTVlpGVXk1c2FXNXJMbTFoY0NoRmVIQnlaWE56YVc5dWN5NXNhWFJsY21Gc0tTeGNiaUFnSUNCc2FYTjBPaUFvY1NrZ1BUNWNiaUFnSUNBZ0lDQWdjUzVsZUhCeVpYTnphVzl1WEc0Z0lDQWdJQ0FnSUNBZ0lDQXVjMlZ3UW5rb1VDNXpkSEpwYm1jb1hDSXNYQ0lwTG5SeWFXMG9VQzV2Y0hSWGFHbDBaWE53WVdObEtTbGNiaUFnSUNBZ0lDQWdJQ0FnSUM1M2NtRndLRkF1YzNSeWFXNW5LRndpVzF3aUtTNXphMmx3S0ZBdWIzQjBWMmhwZEdWemNHRmpaU2tzSUZBdWIzQjBWMmhwZEdWemNHRmpaUzUwYUdWdUtGQXVjM1J5YVc1bktGd2lYVndpS1NrcFhHNGdJQ0FnSUNBZ0lDQWdJQ0F1YldGd0tDaHNLU0E5UGlCRmVIQnlaWE56YVc5dWN5NXNhWE4wS0d3cEtWeHVJQ0FnSUNBZ0lDQWdJQ0FnTG1SbGMyTW9YQ0pzYVhOMFhDSXBMRnh1SUNBZ0lHOWlhbVZqZERvZ0tIRXBJRDArWEc0Z0lDQWdJQ0FnSUZBdWMyVnhUV0Z3S0Z4dUlDQWdJQ0FnSUNBZ0lDQWdVRkpKVFVsVVNWWkZVeTVwWkdWdWRHbG1hV1Z5TG05eUtGQlNTVTFKVkVsV1JWTXVjM1J5YVc1bktTeGNiaUFnSUNBZ0lDQWdJQ0FnSUZBdWMzUnlhVzVuS0Z3aU9sd2lLUzUwY21sdEtGQXViM0IwVjJocGRHVnpjR0ZqWlNrc1hHNGdJQ0FnSUNBZ0lDQWdJQ0J4TG1WNGNISmxjM05wYjI0c1hHNGdJQ0FnSUNBZ0lDQWdJQ0FvYm1GdFpTd2dYM05sY0N3Z2RtRnNkV1VwSUQwK0lIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2V5QnVZVzFsTENCMllXeDFaU0I5TzF4dUlDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FwWEc0Z0lDQWdJQ0FnSUNBZ0lDQXVjMlZ3UW5rb1VDNXpkSEpwYm1jb1hDSXNYQ0lwTG5SeWFXMG9VQzV2Y0hSWGFHbDBaWE53WVdObEtTbGNiaUFnSUNBZ0lDQWdJQ0FnSUM1M2NtRndLRkF1YzNSeWFXNW5LRndpZTF3aUtTNXphMmx3S0ZBdWIzQjBWMmhwZEdWemNHRmpaU2tzSUZBdWIzQjBWMmhwZEdWemNHRmpaUzUwYUdWdUtGQXVjM1J5YVc1bktGd2lmVndpS1NrcFhHNGdJQ0FnSUNBZ0lDQWdJQ0F1YldGd0tDaDJZV3h6S1NBOVBpQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdiR1YwSUhKbGN6b2dVbVZqYjNKa1BITjBjbWx1Wnl3Z1JYaHdjbVZ6YzJsdmJqNGdQU0I3ZlR0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCbWIzSWdLR3hsZENCbGJuUnllU0J2WmlCMllXeHpLU0J5WlhOYlpXNTBjbmt1Ym1GdFpWMGdQU0JsYm5SeWVTNTJZV3gxWlR0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnUlhod2NtVnpjMmx2Ym5NdWIySnFaV04wS0hKbGN5azdYRzRnSUNBZ0lDQWdJQ0FnSUNCOUtWeHVJQ0FnSUNBZ0lDQWdJQ0FnTG1SbGMyTW9YQ0p2WW1wbFkzUWdLQ2Q3SUdFNklERXNJR0k2SURJZ2ZTY3BYQ0lwTEZ4dVhHNGdJQ0FnWVhSdmJUb2dLSEVwSUQwK1hHNGdJQ0FnSUNBZ0lGQXVZV3gwS0Z4dUlDQWdJQ0FnSUNBZ0lDQWdMeThnVUd4aFkyVWdaVzFpWldRZ2JHbHVhM01nWVdKdmRtVWdibVZuWVhSbFpDQm1hV1ZzWkhNZ1lYTWdkR2hsZVNCaGNtVWdkR2hsSUhOd1pXTnBZV3dnY0dGeWMyVnlJR05oYzJVZ0p5RmJXM1JvYVc1blhWMG5JR0Z1WkNCaGNtVWdaMlZ1WlhKaGJHeDVJSFZ1WVcxaWFXZHBiM1Z6TGx4dUlDQWdJQ0FnSUNBZ0lDQWdVRkpKVFVsVVNWWkZVeTVsYldKbFpFeHBibXN1YldGd0tDaHNLU0E5UGlCRmVIQnlaWE56YVc5dWN5NXNhWFJsY21Gc0tHd3BLU3hjYmlBZ0lDQWdJQ0FnSUNBZ0lIRXVibVZuWVhSbFpDeGNiaUFnSUNBZ0lDQWdJQ0FnSUhFdWJHbHVheXhjYmlBZ0lDQWdJQ0FnSUNBZ0lIRXViR2x6ZEN4Y2JpQWdJQ0FnSUNBZ0lDQWdJSEV1YjJKcVpXTjBMRnh1SUNBZ0lDQWdJQ0FnSUNBZ2NTNXNZVzFpWkdFc1hHNGdJQ0FnSUNBZ0lDQWdJQ0J4TG5CaGNtVnVjeXhjYmlBZ0lDQWdJQ0FnSUNBZ0lIRXVZbTl2YkN4Y2JpQWdJQ0FnSUNBZ0lDQWdJSEV1Ym5WdFltVnlMRnh1SUNBZ0lDQWdJQ0FnSUNBZ2NTNXpkSEpwYm1jc1hHNGdJQ0FnSUNBZ0lDQWdJQ0J4TG1SaGRHVXNYRzRnSUNBZ0lDQWdJQ0FnSUNCeExtUjFjbUYwYVc5dUxGeHVJQ0FnSUNBZ0lDQWdJQ0FnY1M1dWRXeHNMRnh1SUNBZ0lDQWdJQ0FnSUNBZ2NTNTJZWEpwWVdKc1pWeHVJQ0FnSUNBZ0lDQXBMRnh1SUNBZ0lHbHVaR1Y0T2lBb2NTa2dQVDVjYmlBZ0lDQWdJQ0FnVUM1elpYRk5ZWEFvY1M1aGRHOXRMQ0JRTG1Gc2RDaHhMbVJ2ZEZCdmMzUm1hWGdzSUhFdWFXNWtaWGhRYjNOMFptbDRMQ0J4TG1aMWJtTjBhVzl1VUc5emRHWnBlQ2t1YldGdWVTZ3BMQ0FvYjJKcUxDQndiM04wWm1sNFpYTXBJRDArSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJR3hsZENCeVpYTjFiSFFnUFNCdlltbzdYRzRnSUNBZ0lDQWdJQ0FnSUNCbWIzSWdLR3hsZENCd2IzTjBJRzltSUhCdmMzUm1hWGhsY3lrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lITjNhWFJqYUNBb2NHOXpkQzUwZVhCbEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdOaGMyVWdYQ0prYjNSY0lqcGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxjM1ZzZENBOUlFVjRjSEpsYzNOcGIyNXpMbWx1WkdWNEtISmxjM1ZzZEN3Z1JYaHdjbVZ6YzJsdmJuTXViR2wwWlhKaGJDaHdiM04wTG1WNGNISXBLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR0p5WldGck8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JqWVhObElGd2lhVzVrWlhoY0lqcGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxjM1ZzZENBOUlFVjRjSEpsYzNOcGIyNXpMbWx1WkdWNEtISmxjM1ZzZEN3Z2NHOXpkQzVsZUhCeUtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHSnlaV0ZyTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmpZWE5sSUZ3aVpuVnVZM1JwYjI1Y0lqcGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxjM1ZzZENBOUlFVjRjSEpsYzNOcGIyNXpMbVoxYm1Nb2NtVnpkV3gwTENCd2IzTjBMbVY0Y0hKektUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHSnlaV0ZyTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlISmxjM1ZzZER0Y2JpQWdJQ0FnSUNBZ2ZTa3NYRzRnSUNBZ2JtVm5ZWFJsWkRvZ0tIRXBJRDArSUZBdWMyVnhUV0Z3S0ZBdWMzUnlhVzVuS0Z3aUlWd2lLU3dnY1M1cGJtUmxlQ3dnS0Y4c0lHWnBaV3hrS1NBOVBpQkZlSEJ5WlhOemFXOXVjeTV1WldkaGRHVW9abWxsYkdRcEtTNWtaWE5qS0Z3aWJtVm5ZWFJsWkNCbWFXVnNaRndpS1N4Y2JpQWdJQ0J3WVhKbGJuTTZJQ2h4S1NBOVBpQnhMbVY0Y0hKbGMzTnBiMjR1ZEhKcGJTaFFMbTl3ZEZkb2FYUmxjM0JoWTJVcExuZHlZWEFvVUM1emRISnBibWNvWENJb1hDSXBMQ0JRTG5OMGNtbHVaeWhjSWlsY0lpa3BMRnh1SUNBZ0lHeGhiV0prWVRvZ0tIRXBJRDArWEc0Z0lDQWdJQ0FnSUZBdWMyVnhUV0Z3S0Z4dUlDQWdJQ0FnSUNBZ0lDQWdVRkpKVFVsVVNWWkZVeTVwWkdWdWRHbG1hV1Z5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnTG5ObGNFSjVLRkF1YzNSeWFXNW5LRndpTEZ3aUtTNTBjbWx0S0ZBdWIzQjBWMmhwZEdWemNHRmpaU2twWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnTG5keVlYQW9VQzV6ZEhKcGJtY29YQ0lvWENJcExuUnlhVzBvVUM1dmNIUlhhR2wwWlhOd1lXTmxLU3dnVUM1emRISnBibWNvWENJcFhDSXBMblJ5YVcwb1VDNXZjSFJYYUdsMFpYTndZV05sS1Nrc1hHNGdJQ0FnSUNBZ0lDQWdJQ0JRTG5OMGNtbHVaeWhjSWowK1hDSXBMblJ5YVcwb1VDNXZjSFJYYUdsMFpYTndZV05sS1N4Y2JpQWdJQ0FnSUNBZ0lDQWdJSEV1Wlhod2NtVnpjMmx2Yml4Y2JpQWdJQ0FnSUNBZ0lDQWdJQ2hwWkdWdWRDd2dYMmxuYm05eVpTd2dkbUZzZFdVcElEMCtJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdleUIwZVhCbE9pQmNJbXhoYldKa1lWd2lMQ0JoY21kMWJXVnVkSE02SUdsa1pXNTBMQ0IyWVd4MVpTQjlPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQXBMRnh1WEc0Z0lDQWdaRzkwVUc5emRHWnBlRG9nS0hFcElEMCtJRkF1YzJWeFRXRndLRkF1YzNSeWFXNW5LRndpTGx3aUtTd2dVRkpKVFVsVVNWWkZVeTVwWkdWdWRHbG1hV1Z5TENBb1h5d2daWGh3Y2lrZ1BUNGdLSHNnZEhsd1pUb2dYQ0prYjNSY0lpd2daWGh3Y2lCOUtTa3NYRzRnSUNBZ2FXNWtaWGhRYjNOMFptbDRPaUFvY1NrZ1BUNWNiaUFnSUNBZ0lDQWdVQzV6WlhGTllYQW9YRzRnSUNBZ0lDQWdJQ0FnSUNCUUxuTjBjbWx1WnloY0lsdGNJaWtzWEc0Z0lDQWdJQ0FnSUNBZ0lDQlFMbTl3ZEZkb2FYUmxjM0JoWTJVc1hHNGdJQ0FnSUNBZ0lDQWdJQ0J4TG1WNGNISmxjM05wYjI0c1hHNGdJQ0FnSUNBZ0lDQWdJQ0JRTG05d2RGZG9hWFJsYzNCaFkyVXNYRzRnSUNBZ0lDQWdJQ0FnSUNCUUxuTjBjbWx1WnloY0lsMWNJaWtzWEc0Z0lDQWdJQ0FnSUNBZ0lDQW9YeXdnWHpJc0lHVjRjSElzSUY4ekxDQmZOQ2tnUFQ0Z2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCN0lIUjVjR1U2SUZ3aWFXNWtaWGhjSWl3Z1pYaHdjaUI5TzF4dUlDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FwTEZ4dUlDQWdJR1oxYm1OMGFXOXVVRzl6ZEdacGVEb2dLSEVwSUQwK1hHNGdJQ0FnSUNBZ0lGQXVjMlZ4VFdGd0tGeHVJQ0FnSUNBZ0lDQWdJQ0FnVUM1emRISnBibWNvWENJb1hDSXBMRnh1SUNBZ0lDQWdJQ0FnSUNBZ1VDNXZjSFJYYUdsMFpYTndZV05sTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdjUzVsZUhCeVpYTnphVzl1TG5ObGNFSjVLRkF1YzNSeWFXNW5LRndpTEZ3aUtTNTBjbWx0S0ZBdWIzQjBWMmhwZEdWemNHRmpaU2twTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdVQzV2Y0hSWGFHbDBaWE53WVdObExGeHVJQ0FnSUNBZ0lDQWdJQ0FnVUM1emRISnBibWNvWENJcFhDSXBMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0tGOHNJRjh4TENCbGVIQnljeXdnWHpJc0lGOHpLU0E5UGlCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhzZ2RIbHdaVG9nWENKbWRXNWpkR2x2Ymx3aUxDQmxlSEJ5Y3lCOU8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBcExGeHVYRzRnSUNBZ0x5OGdWR2hsSUhCeVpXTmxaR1Z1WTJVZ2FHbGxjbUZ5WTJoNUlHOW1JRzl3WlhKaGRHOXljeUF0SUcxMWJIUnBjR3g1TDJScGRtbGtaU3dnWVdSa0wzTjFZblJ5WVdOMExDQmpiMjF3WVhKbExDQmhibVFnZEdobGJpQmliMjlzWldGdUlHOXdaWEpoZEdsdmJuTXVYRzRnSUNBZ1ltbHVZWEo1VFhWc1JHbDJPaUFvY1NrZ1BUNGdZM0psWVhSbFFtbHVZWEo1VUdGeWMyVnlLSEV1YVc1a1pYZ3NJRkJTU1UxSlZFbFdSVk11WW1sdVlYSjVUWFZzUkdsMkxDQkZlSEJ5WlhOemFXOXVjeTVpYVc1aGNubFBjQ2tzWEc0Z0lDQWdZbWx1WVhKNVVHeDFjMDFwYm5Wek9pQW9jU2tnUFQ0Z1kzSmxZWFJsUW1sdVlYSjVVR0Z5YzJWeUtIRXVZbWx1WVhKNVRYVnNSR2wyTENCUVVrbE5TVlJKVmtWVExtSnBibUZ5ZVZCc2RYTk5hVzUxY3l3Z1JYaHdjbVZ6YzJsdmJuTXVZbWx1WVhKNVQzQXBMRnh1SUNBZ0lHSnBibUZ5ZVVOdmJYQmhjbVU2SUNoeEtTQTlQaUJqY21WaGRHVkNhVzVoY25sUVlYSnpaWElvY1M1aWFXNWhjbmxRYkhWelRXbHVkWE1zSUZCU1NVMUpWRWxXUlZNdVltbHVZWEo1UTI5dGNHRnlaVTl3TENCRmVIQnlaWE56YVc5dWN5NWlhVzVoY25sUGNDa3NYRzRnSUNBZ1ltbHVZWEo1UW05dmJHVmhiam9nS0hFcElEMCtYRzRnSUNBZ0lDQWdJR055WldGMFpVSnBibUZ5ZVZCaGNuTmxjaWh4TG1KcGJtRnllVU52YlhCaGNtVXNJRkJTU1UxSlZFbFdSVk11WW1sdVlYSjVRVzVrVDNBdWIzSW9VRkpKVFVsVVNWWkZVeTVpYVc1aGNubFBjazl3S1N3Z1JYaHdjbVZ6YzJsdmJuTXVZbWx1WVhKNVQzQXBMRnh1SUNBZ0lHSnBibUZ5ZVU5d09pQW9jU2tnUFQ0Z2NTNWlhVzVoY25sQ2IyOXNaV0Z1TEZ4dVhHNGdJQ0FnWlhod2NtVnpjMmx2YmpvZ0tIRXBJRDArSUhFdVltbHVZWEo1VDNBc1hHNTlLVHRjYmx4dUx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OWNiaTh2SUZGMVpYSjVJRXhoYm1kMVlXZGxJQzh2WEc0dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkwxeHVYRzR2S2lvZ1UzVndjRzl5ZEdWa0lIUjVjR1Z6SUdsdUlIUm9aU0JuY21GdGJXRnlJR1p2Y2lCcGJtUmxlQ0J4ZFdWeWFXVnpMaUFxTDF4dVpYaHdiM0owSUdsdWRHVnlabUZqWlNCUmRXVnllVXhoYm1kMVlXZGxJSHRjYmlBZ0lDQnhkV1Z5ZVZSaFp6b2dTVzVrWlhoVVlXZG5aV1E3WEc0Z0lDQWdjWFZsY25sSlpEb2dTVzVrWlhoSlpEdGNiaUFnSUNCeGRXVnllVlI1Y0dVNklFbHVaR1Y0Vkhsd1pXUTdYRzRnSUNBZ2NYVmxjbmxRWVhSb09pQkpibVJsZUZCaGRHZzdYRzRnSUNBZ2NYVmxjbmxRWVhKbGJuUlBaam9nU1c1a1pYaFFZWEpsYm5SUFpqdGNiaUFnSUNCeGRXVnllVU5vYVd4a1QyWTZJRWx1WkdWNFEyaHBiR1JQWmp0Y2JpQWdJQ0J4ZFdWeWVWTnBiWEJzWlV4cGJtdGxaRG9nU1c1a1pYaE1hVzVyWldRN1hHNGdJQ0FnY1hWbGNubE1hVzVyWldRNklFbHVaR1Y0VEdsdWEyVmtPMXh1SUNBZ0lIRjFaWEo1UlhocGMzUnpPaUJKYm1SbGVFWnBaV3hrTzF4dUlDQWdJSEYxWlhKNVVYVnZkR1ZrUlhod2NtVnpjMmx2YmpvZ1NXNWtaWGhGZUhCeVpYTnphVzl1TzF4dUlDQWdJSEYxWlhKNVVtRjNSWGh3Y21WemMybHZiam9nU1c1a1pYaEZlSEJ5WlhOemFXOXVPMXh1SUNBZ0lIRjFaWEo1VG1WbllYUmxPaUJKYm1SbGVFNXZkRHRjYmlBZ0lDQnhkV1Z5ZVZCaGNtVnVjem9nU1c1a1pYaFJkV1Z5ZVR0Y2JpQWdJQ0J4ZFdWeWVVRjBiMjA2SUVsdVpHVjRVWFZsY25rN1hHNGdJQ0FnY1hWbGNubEJibVJ6T2lCSmJtUmxlRkYxWlhKNU8xeHVJQ0FnSUhGMVpYSjVUM0p6T2lCSmJtUmxlRkYxWlhKNU8xeHVJQ0FnSUhGMVpYSjVPaUJKYm1SbGVGRjFaWEo1TzF4dWZWeHVYRzR2S2lwY2JpQXFJRkJoY25ObGNpQm1iM0lnZEdobElIRjFaWEo1SUd4aGJtZDFZV2RsTGlCRWFXUWdTU0J5WldGc2JIa2dibVZsWkNCaElIRjFaWEo1SUd4aGJtZDFZV2RsSUdsdWMzUmxZV1FnYjJZZ2FuVnpkQ0JoSUdKbGRIUmxjaUJWU1Q4Z1VISnZZbUZpYkhrZ2JtOTBMbHh1SUNvZ1FuVjBJSEYxWlhKNUlHeGhibWQxWVdkbGN5QmhjbVVnWm5WdUlHWnZjaUIwYUdVZ2QyaHZiR1VnWm1GdGFXeDVJR0Z1WkNCaGRDQnpiMjFsSUhCdmFXNTBJSGx2ZFNCblpYUWdjMjhnZFhObFpDQjBieUIzY21sMGFXNW5JSFJvWlcwZ2RHaGhkRnh1SUNvZ2VXOTFJR1J2YmlkMElITjBiM0FnZEc4Z2RHaHBibXNnYVdZZ2VXOTFJQ3B1WldWa0tpQjBieUIzY21sMFpTQjBhR1Z0SUdGdWVXMXZjbVV1SUVsMEozTWdaMjl2WkNCMGVYQnBibWNnY0hKaFkzUnBZMlVnWm05eUlHVjJaWEo1YjI1bExseHVJQ292WEc1bGVIQnZjblFnWTI5dWMzUWdVVlZGVWxrZ1BTQlFMbU55WldGMFpVeGhibWQxWVdkbFBGRjFaWEo1VEdGdVozVmhaMlUrS0h0Y2JpQWdJQ0J4ZFdWeWVWUmhaem9nS0Y4cElEMCtJRkJTU1UxSlZFbFdSVk11ZEdGbkxtMWhjQ2dvZG1Gc2RXVXBJRDArSUNoN0lIUjVjR1U2SUZ3aWRHRm5aMlZrWENJc0lIWmhiSFZsSUgwcEtTeGNiaUFnSUNCeGRXVnllVWxrT2lBb1h5a2dQVDRnWTNKbFlYUmxSblZ1WTNScGIyNG9YQ0pwWkZ3aUxDQlFVa2xOU1ZSSlZrVlRMbk4wY21sdVp5a3ViV0Z3S0NoYlh5d2dhV1JkS1NBOVBpQW9leUIwZVhCbE9pQmNJbWxrWENJc0lIWmhiSFZsT2lCcFpDQjlLU2tzWEc0Z0lDQWdjWFZsY25sVWVYQmxPaUFvWHlrZ1BUNWNiaUFnSUNBZ0lDQWdVQzV6ZEhKcGJtY29YQ0pBWENJcFhHNGdJQ0FnSUNBZ0lDQWdJQ0F1ZEdobGJpaFFVa2xOU1ZSSlZrVlRMbWxrWlc1MGFXWnBaWElwWEc0Z0lDQWdJQ0FnSUNBZ0lDQXViV0Z3S0NoMllXeDFaU2tnUFQ0Z0tIc2dkSGx3WlRvZ1hDSjBlWEJsWkZ3aUxDQjJZV3gxWlRvZ2RtRnNkV1VnZlNrcExGeHVYRzRnSUNBZ2NYVmxjbmxRWVhSb09pQW9YeWtnUFQ1Y2JpQWdJQ0FnSUNBZ1kzSmxZWFJsUm5WdVkzUnBiMjRvVUM1eVpXZGxlSEFvTDJVL2NHRjBhQzlwS1M1a1pYTmpLRndpVzJWZGNHRjBhRndpS1N3Z1VGSkpUVWxVU1ZaRlV5NXpkSEpwYm1jcExtMWhjQ2dvVzJaMWJtTXNJSEJoZEdoZEtTQTlQaUFvZTF4dUlDQWdJQ0FnSUNBZ0lDQWdkSGx3WlRvZ1hDSndZWFJvWENJc1hHNGdJQ0FnSUNBZ0lDQWdJQ0IyWVd4MVpUb2djR0YwYUN4Y2JpQWdJQ0FnSUNBZ0lDQWdJR1Y0WVdOME9pQm1kVzVqTG5SdlRHOTNaWEpEWVhObEtDa2dQVDA5SUZ3aVpYQmhkR2hjSWl4Y2JpQWdJQ0FnSUNBZ2ZTa3BMRnh1WEc0Z0lDQWdjWFZsY25sUVlYSmxiblJQWmpvZ0tIRXBJRDArWEc0Z0lDQWdJQ0FnSUdOeVpXRjBaVVoxYm1OMGFXOXVLRkF1Y21WblpYaHdLQzl3WVhKbGJuUnZabnh6ZFhCbGNuUnlaV1V2YVNrdVpHVnpZeWhjSW5CaGNtVnVkRzltWENJcExDQnhMbkYxWlhKNUtTNXRZWEFvS0Z0bWRXNWpMQ0JqYUdsc1pISmxibDBwSUQwK0lDaDdYRzRnSUNBZ0lDQWdJQ0FnSUNCMGVYQmxPaUJjSW5CaGNtVnVkQzF2Wmx3aUxGeHVJQ0FnSUNBZ0lDQWdJQ0FnWTJocGJHUnlaVzRzWEc0Z0lDQWdJQ0FnSUNBZ0lDQnBibU5zZFhOcGRtVTZJR1oxYm1NdWRHOU1iM2RsY2tOaGMyVW9LU0E5UFQwZ1hDSnpkWEJsY25SeVpXVmNJaXhjYmlBZ0lDQWdJQ0FnZlNrcExGeHVJQ0FnSUhGMVpYSjVRMmhwYkdSUFpqb2dLSEVwSUQwK1hHNGdJQ0FnSUNBZ0lHTnlaV0YwWlVaMWJtTjBhVzl1S0ZBdWNtVm5aWGh3S0M5amFHbHNaRzltZkhOMVluUnlaV1V2YVNrdVpHVnpZeWhjSW1Ob2FXeGtiMlpjSWlrc0lIRXVjWFZsY25rcExtMWhjQ2dvVzJaMWJtTXNJSEJoY21WdWRITmRLU0E5UGlBb2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnZEhsd1pUb2dYQ0pqYUdsc1pDMXZabHdpTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdjR0Z5Wlc1MGN5eGNiaUFnSUNBZ0lDQWdJQ0FnSUdsdVkyeDFjMmwyWlRvZ1puVnVZeTUwYjB4dmQyVnlRMkZ6WlNncElEMDlQU0JjSW5OMVluUnlaV1ZjSWl4Y2JpQWdJQ0FnSUNBZ2ZTa3BMRnh1SUNBZ0lIRjFaWEo1VTJsdGNHeGxUR2x1YTJWa09pQW9YeWtnUFQ1Y2JpQWdJQ0FnSUNBZ1VGSkpUVWxVU1ZaRlV5NXNhVzVyTG0xaGNDZ29iR2x1YXlrZ1BUNGdLSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIUjVjR1U2SUZ3aWJHbHVhMlZrWENJc1hHNGdJQ0FnSUNBZ0lDQWdJQ0J6YjNWeVkyVTZJSHNnZEhsd1pUb2dYQ0pzYVc1clhDSXNJSFpoYkhWbE9pQnNhVzVySUgwc1hHNGdJQ0FnSUNBZ0lDQWdJQ0JrYVhKbFkzUnBiMjQ2SUZ3aWFXNWpiMjFwYm1kY0lpeGNiaUFnSUNBZ0lDQWdmU2twTEZ4dUlDQWdJSEYxWlhKNVRHbHVhMlZrT2lBb2NTa2dQVDVjYmlBZ0lDQWdJQ0FnWTNKbFlYUmxSblZ1WTNScGIyNG9VQzV5WldkbGVIQW9MMnhwYm10emRHOThiR2x1YTJWa1puSnZiWHhqYjI1dVpXTjBaV1F2YVNrdVpHVnpZeWhjSW1OdmJtNWxZM1JsWkZ3aUtTd2djUzV4ZFdWeWVTa3ViV0Z3S0NoYlpuVnVZeXdnYzI5MWNtTmxYU2tnUFQ0Z0tIdGNiaUFnSUNBZ0lDQWdJQ0FnSUhSNWNHVTZJRndpYkdsdWEyVmtYQ0lzWEc0Z0lDQWdJQ0FnSUNBZ0lDQnpiM1Z5WTJVc1hHNGdJQ0FnSUNBZ0lDQWdJQ0JrYVhKbFkzUnBiMjQ2WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWm5WdVl5NTBiMHh2ZDJWeVEyRnpaU2dwSUQwOUlGd2liR2x1YTNOMGIxd2lJRDhnWENKcGJtTnZiV2x1WjF3aUlEb2dablZ1WXk1MGIweHZkMlZ5UTJGelpTZ3BJRDA5SUZ3aWJHbHVhMlZrWm5KdmJWd2lJRDhnWENKdmRYUm5iMmx1WjF3aUlEb2dYQ0ppYjNSb1hDSXNYRzRnSUNBZ0lDQWdJSDBwS1N4Y2JpQWdJQ0J4ZFdWeWVVVjRhWE4wY3pvZ0tGOHBJRDArWEc0Z0lDQWdJQ0FnSUdOeVpXRjBaVVoxYm1OMGFXOXVLRkF1Y21WblpYaHdLQzlsZUdsemRITXZhU2t1WkdWell5aGNJbVY0YVhOMGMxd2lLU3dnVUZKSlRVbFVTVlpGVXk1cFpHVnVkR2xtYVdWeUxtOXlLRkJTU1UxSlZFbFdSVk11YzNSeWFXNW5LU2t1YldGd0tGeHVJQ0FnSUNBZ0lDQWdJQ0FnS0Z0ZlpuVnVZeXdnYVdSbGJuUmRLU0E5UGlBb2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIUjVjR1U2SUZ3aVptbGxiR1JjSWl4Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCMllXeDFaVG9nYVdSbGJuUXNYRzRnSUNBZ0lDQWdJQ0FnSUNCOUtWeHVJQ0FnSUNBZ0lDQXBMRnh1SUNBZ0lIRjFaWEo1VVhWdmRHVmtSWGh3Y21WemMybHZiam9nS0hFcElEMCtYRzRnSUNBZ0lDQWdJR055WldGMFpVWjFibU4wYVc5dUtGQXVjbVZuWlhod0tDOWxlSEJ5TDJrcExtUmxjMk1vWENKbGVIQnlYQ0lwTENCRldGQlNSVk5UU1U5T0xtVjRjSEpsYzNOcGIyNHBMbTFoY0Nnb1cxOHNJR1Y0Y0hKZEtTQTlQaUFvZTF4dUlDQWdJQ0FnSUNBZ0lDQWdkSGx3WlRvZ1hDSmxlSEJ5WlhOemFXOXVYQ0lzWEc0Z0lDQWdJQ0FnSUNBZ0lDQmxlSEJ5WlhOemFXOXVPaUJsZUhCeUxGeHVJQ0FnSUNBZ0lDQjlLU2tzWEc0Z0lDQWdjWFZsY25sU1lYZEZlSEJ5WlhOemFXOXVPaUFvY1NrZ1BUNGdSVmhRVWtWVFUwbFBUaTVpYVc1aGNubERiMjF3WVhKbExtMWhjQ2dvWlhod2Npa2dQVDRnS0hzZ2RIbHdaVG9nWENKbGVIQnlaWE56YVc5dVhDSXNJR1Y0Y0hKbGMzTnBiMjQ2SUdWNGNISWdmU2twTEZ4dVhHNGdJQ0FnY1hWbGNubFFZWEpsYm5NNklDaHhLU0E5UGlCeExuRjFaWEo1TG5SeWFXMG9VQzV2Y0hSWGFHbDBaWE53WVdObEtTNTNjbUZ3S0ZBdWMzUnlhVzVuS0Z3aUtGd2lLU3dnVUM1emRISnBibWNvWENJcFhDSXBLU3hjYmlBZ0lDQnhkV1Z5ZVU1bFoyRjBaVG9nS0hFcElEMCtYRzRnSUNBZ0lDQWdJRkF1YzNSeWFXNW5LRndpSVZ3aUtWeHVJQ0FnSUNBZ0lDQWdJQ0FnTG5OcmFYQW9VQzV2Y0hSWGFHbDBaWE53WVdObEtWeHVJQ0FnSUNBZ0lDQWdJQ0FnTG5Sb1pXNG9jUzV4ZFdWeWVVRjBiMjBwWEc0Z0lDQWdJQ0FnSUNBZ0lDQXViV0Z3S0NoMllXeDFaU2tnUFQ0Z0tIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjBlWEJsT2lCY0ltNXZkRndpTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdWc1pXMWxiblE2SUhaaGJIVmxMRnh1SUNBZ0lDQWdJQ0FnSUNBZ2ZTa3BMRnh1SUNBZ0lIRjFaWEo1UVhSdmJUb2dLSEVwSUQwK1hHNGdJQ0FnSUNBZ0lGQXVZV3gwUEVsdVpHVjRVWFZsY25rK0tGeHVJQ0FnSUNBZ0lDQWdJQ0FnY1M1eGRXVnllVkJoY21WdWN5eGNiaUFnSUNBZ0lDQWdJQ0FnSUhFdWNYVmxjbmxPWldkaGRHVXNYRzRnSUNBZ0lDQWdJQ0FnSUNCeExuRjFaWEo1VTJsdGNHeGxUR2x1YTJWa0xGeHVJQ0FnSUNBZ0lDQWdJQ0FnY1M1eGRXVnllVlJoWnl4Y2JpQWdJQ0FnSUNBZ0lDQWdJSEV1Y1hWbGNubFVlWEJsTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdjUzV4ZFdWeWVVbGtMRnh1SUNBZ0lDQWdJQ0FnSUNBZ2NTNXhkV1Z5ZVVWNGFYTjBjeXhjYmlBZ0lDQWdJQ0FnSUNBZ0lIRXVjWFZsY25sRGFHbHNaRTltTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdjUzV4ZFdWeWVWQmhjbVZ1ZEU5bUxGeHVJQ0FnSUNBZ0lDQWdJQ0FnY1M1eGRXVnllVXhwYm10bFpDeGNiaUFnSUNBZ0lDQWdJQ0FnSUhFdWNYVmxjbmxRWVhSb0xGeHVJQ0FnSUNBZ0lDQWdJQ0FnY1M1eGRXVnllVkYxYjNSbFpFVjRjSEpsYzNOcGIyNHNYRzRnSUNBZ0lDQWdJQ0FnSUNBdkx5QkZlSEJ5WlhOemFXOXVjeUJoY21VZ1pYTnpaVzUwYVdGc2JIa2dkR2hsSUZ3aVkyRjBZMmd0WVd4c1hDSWdiMllnYjNSb1pYSjNhWE5sSUhWdWNHRnljMlZoWW14bElIUmxjbTF6TENCemJ5QjBhR1Y1SUhOb2IzVnNaQ0JuYnlCaFluTnZiSFYwWlNCc1lYTjBMbHh1SUNBZ0lDQWdJQ0FnSUNBZ2NTNXhkV1Z5ZVZKaGQwVjRjSEpsYzNOcGIyNWNiaUFnSUNBZ0lDQWdLU3hjYmlBZ0lDQnhkV1Z5ZVVGdVpITTZJQ2h4S1NBOVBseHVJQ0FnSUNBZ0lDQmpjbVZoZEdWQ2FXNWhjbmxRWVhKelpYSW9jUzV4ZFdWeWVVRjBiMjBzSUZCU1NVMUpWRWxXUlZNdVltbHVZWEo1UVc1a1QzQXNJQ2hzWldaMExDQmZiM0FzSUhKcFoyaDBLU0E5UGlBb2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnZEhsd1pUb2dYQ0poYm1SY0lpeGNiaUFnSUNBZ0lDQWdJQ0FnSUdWc1pXMWxiblJ6T2lCYmJHVm1kQ3dnY21sbmFIUmRMRnh1SUNBZ0lDQWdJQ0I5S1Nrc1hHNGdJQ0FnY1hWbGNubFBjbk02SUNoeEtTQTlQbHh1SUNBZ0lDQWdJQ0JqY21WaGRHVkNhVzVoY25sUVlYSnpaWElvY1M1eGRXVnllVUZ1WkhNc0lGQlNTVTFKVkVsV1JWTXVZbWx1WVhKNVQzSlBjQ3dnS0d4bFpuUXNJRjl2Y0N3Z2NtbG5hSFFwSUQwK0lDaDdYRzRnSUNBZ0lDQWdJQ0FnSUNCMGVYQmxPaUJjSW05eVhDSXNYRzRnSUNBZ0lDQWdJQ0FnSUNCbGJHVnRaVzUwY3pvZ1cyeGxablFzSUhKcFoyaDBYU3hjYmlBZ0lDQWdJQ0FnZlNrcExGeHVJQ0FnSUhGMVpYSjVPaUFvY1NrZ1BUNGdjUzV4ZFdWeWVVOXljeTUwY21sdEtGQXViM0IwVjJocGRHVnpjR0ZqWlNrc1hHNTlLVHRjYmx4dUx5b3FJRkpsZEhWeWJpQmhJRzVsZHlCd1lYSnpaWElnZDJocFkyZ2daWGhsWTNWMFpYTWdkR2hsSUhWdVpHVnliSGxwYm1jZ2NHRnljMlZ5SUdGdVpDQnlaWFIxY201eklHbDBKM01nY21GM0lITjBjbWx1WnlCeVpYQnlaWE5sYm5SaGRHbHZiaTRnS2k5Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCallYQjBkWEpsVW1GM1BGUStLR0poYzJVNklGQXVVR0Z5YzJWeVBGUStLVG9nVUM1UVlYSnpaWEk4VzFRc0lITjBjbWx1WjEwK0lIdGNiaUFnSUNCeVpYUjFjbTRnVUM1amRYTjBiMjBvS0Y5emRXTmpaWE56TENCZlptRnBiSFZ5WlNrZ1BUNGdlMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdLR2x1Y0hWMExDQnBLU0E5UGlCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JzWlhRZ2NtVnpkV3gwSUQwZ0tHSmhjMlVnWVhNZ1lXNTVLUzVmS0dsdWNIVjBMQ0JwS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJR2xtSUNnaGNtVnpkV3gwTG5OMFlYUjFjeWtnY21WMGRYSnVJSEpsYzNWc2REdGNibHh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUU5aWFtVmpkQzVoYzNOcFoyNG9lMzBzSUhKbGMzVnNkQ3dnZXlCMllXeDFaVG9nVzNKbGMzVnNkQzUyWVd4MVpTd2dhVzV3ZFhRdWMzVmljM1J5YVc1bktHa3NJSEpsYzNWc2RDNXBibVJsZUNsZElIMHBPMXh1SUNBZ0lDQWdJQ0I5TzF4dUlDQWdJSDBwTzF4dWZWeHVYRzR2S2lvZ1EzSmxZWFJsSUdFZ2JHVm1kQzFoYzNOdlkybGhkR2wyWlNCaWFXNWhjbmtnY0dGeWMyVnlJSGRvYVdOb0lIQmhjbk5sY3lCMGFHVWdaMmwyWlc0Z2MzVmlMV1ZzWlcxbGJuUWdZVzVrSUhObGNHRnlZWFJ2Y2k0Z1NHRnVaR3hsY3lCM2FHbDBaWE53WVdObExpQXFMMXh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR055WldGMFpVSnBibUZ5ZVZCaGNuTmxjanhVTENCVlBpaGNiaUFnSUNCamFHbHNaRG9nVUM1UVlYSnpaWEk4VkQ0c1hHNGdJQ0FnYzJWd09pQlFMbEJoY25ObGNqeFZQaXhjYmlBZ0lDQmpiMjFpYVc1bE9pQW9ZVG9nVkN3Z1lqb2dWU3dnWXpvZ1ZDa2dQVDRnVkZ4dUtUb2dVQzVRWVhKelpYSThWRDRnZTF4dUlDQWdJSEpsZEhWeWJpQlFMbk5sY1UxaGNDaGphR2xzWkN3Z1VDNXpaWEVvVUM1dmNIUlhhR2wwWlhOd1lXTmxMQ0J6WlhBc0lGQXViM0IwVjJocGRHVnpjR0ZqWlN3Z1kyaHBiR1FwTG0xaGJua29LU3dnS0dacGNuTjBMQ0J5WlhOMEtTQTlQaUI3WEc0Z0lDQWdJQ0FnSUdsbUlDaHlaWE4wTG14bGJtZDBhQ0E5UFNBd0tTQnlaWFIxY200Z1ptbHljM1E3WEc1Y2JpQWdJQ0FnSUNBZ2JHVjBJRzV2WkdVZ1BTQmpiMjFpYVc1bEtHWnBjbk4wTENCeVpYTjBXekJkV3pGZExDQnlaWE4wV3pCZFd6TmRLVHRjYmlBZ0lDQWdJQ0FnWm05eUlDaHNaWFFnYVc1a1pYZ2dQU0F4T3lCcGJtUmxlQ0E4SUhKbGMzUXViR1Z1WjNSb095QnBibVJsZUNzcktTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCdWIyUmxJRDBnWTI5dFltbHVaU2h1YjJSbExDQnlaWE4wVzJsdVpHVjRYVnN4WFN3Z2NtVnpkRnRwYm1SbGVGMWJNMTBwTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCdWIyUmxPMXh1SUNBZ0lIMHBPMXh1ZlZ4dVhHNHZLaXBjYmlBcUlFTnlaV0YwWlNCaElIQmhjbk5sY2lCM2FHbGphQ0J3WVhKelpYTWdYRnc4Wm5WdVkzUnBiMjVjWEQ0b1hGdzhZWEpuYzF4Y1Bpa3VYRzRnS2lBcUwxeHVaWGh3YjNKMElHWjFibU4wYVc5dUlHTnlaV0YwWlVaMWJtTjBhVzl1UEZRK0tHWjFibU02SUhOMGNtbHVaeUI4SUZBdVVHRnljMlZ5UEhOMGNtbHVaejRzSUdGeVozTTZJRkF1VUdGeWMyVnlQRlErS1RvZ1VDNVFZWEp6WlhJOFczTjBjbWx1Wnl3Z1ZGMCtJSHRjYmlBZ0lDQmpiMjV6ZENCeVpXRnNSblZ1WXlBOUlIUjVjR1Z2WmlCbWRXNWpJRDA5UFNCY0luTjBjbWx1WjF3aUlEOGdVQzV6ZEhKcGJtY29ablZ1WXlrZ09pQm1kVzVqTzF4dUlDQWdJSEpsZEhWeWJpQlFMbk5sY1UxaGNDaGNiaUFnSUNBZ0lDQWdjbVZoYkVaMWJtTXVjMnRwY0NoUUxtOXdkRmRvYVhSbGMzQmhZMlVwTEZ4dUlDQWdJQ0FnSUNCaGNtZHpMblJ5YVcwb1VDNXZjSFJYYUdsMFpYTndZV05sS1M1M2NtRndLRkF1YzNSeWFXNW5LRndpS0Z3aUtTd2dVQzV6ZEhKcGJtY29YQ0lwWENJcEtTeGNiaUFnSUNBZ0lDQWdLR1lzSUdFcElEMCtJRnRtTENCaFhWeHVJQ0FnSUNrN1hHNTlYRzVjYmk4cUtpQkRhR0ZwYm5NZ1lTQnNhWE4wSUc5bUlIQmhjbk5sY25NN0lIUm9aU0JtYVhKemRDQnZibVVnYlhWemRDQnpkV05qWldWa0xDQmlkWFFnWm05c2JHOTNhVzVuSUc5dVpYTWdiV0Y1SUdaaGFXd2dkMmwwYUc5MWRDQm1ZV2xzYVc1bklIUm9aU0J2ZG1WeVlXeHNJSEJoY25ObExpQXFMMXh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR05vWVdsdVQzQjBQRlErS0dKaGMyVTZJRkF1VUdGeWMyVnlQRlErTENBdUxpNW1kVzVqY3pvZ0tDaHlPaUJVS1NBOVBpQlFMbEJoY25ObGNqeFVQaWxiWFNrNklGQXVVR0Z5YzJWeVBGUStJSHRjYmlBZ0lDQnlaWFIxY200Z1VDNWpkWE4wYjIwb0tGOXpkV05qWlhOekxDQmZabUZwYkhWeVpTa2dQVDRnZTF4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnS0dsdWNIVjBMQ0JwS1NBOVBpQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCc1pYUWdjbVZ6ZFd4MElEMGdLR0poYzJVZ1lYTWdZVzU1S1M1ZktHbHVjSFYwTENCcEtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDZ2hjbVZ6ZFd4MExuTjBZWFIxY3lrZ2NtVjBkWEp1SUhKbGMzVnNkRHRjYmx4dUlDQWdJQ0FnSUNBZ0lDQWdabTl5SUNoc1pYUWdablZ1WXlCdlppQm1kVzVqY3lrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHeGxkQ0J1WlhoMElEMGdLR1oxYm1Nb2NtVnpkV3gwTG5aaGJIVmxJR0Z6SUZRcElHRnpJR0Z1ZVNrdVh5aHBibkIxZEN3Z2NtVnpkV3gwTG1sdVpHVjRLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb0lXNWxlSFF1YzNSaGRIVnpLU0J5WlhSMWNtNGdjbVZ6ZFd4ME8xeHVYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVZ6ZFd4MElEMGdibVY0ZER0Y2JpQWdJQ0FnSUNBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlISmxjM1ZzZER0Y2JpQWdJQ0FnSUNBZ2ZUdGNiaUFnSUNCOUtUdGNibjFjYmlJc0lDSXZLaXBjYmlBcUlFQnRiMlIxYkdVZ1pYaHdjbVZ6YzJsdmJuTmNiaUFxTDF4dWFXMXdiM0owSUhzZ1JHRjBaVlJwYldVc0lFUjFjbUYwYVc5dUlIMGdabkp2YlNCY0lteDFlRzl1WENJN1hHNXBiWEJ2Y25RZ2V5Qk1hVzVySUgwZ1puSnZiU0JjSW1WNGNISmxjM05wYjI0dmJHbHVhMXdpTzF4dWFXMXdiM0owSUhzZ2NtVnVaR1Z5VFdsdWFXMWhiRVJoZEdVc0lISmxibVJsY2sxcGJtbHRZV3hFZFhKaGRHbHZiaUI5SUdaeWIyMGdYQ0oxZEdsc2N5OXViM0p0WVd4cGVtVnljMXdpTzF4dVhHNHZMeUJTWlMxbGVIQnZjblJ6SUc5bUlIVnpaV1oxYkNCblpXNWxjbWxqSUhSNWNHVnpMbHh1Wlhod2IzSjBJSHNnVEdsdWF5QjlPMXh1WEc0dktpb2dVMmh2Y25Sb1lXNWtJR1p2Y2lCaElHMWhjSEJwYm1jZ1puSnZiU0JyWlhseklIUnZJSFpoYkhWbGN5NGdLaTljYm1WNGNHOXlkQ0IwZVhCbElFUmhkR0ZQWW1wbFkzUWdQU0JTWldOdmNtUThjM1J5YVc1bkxDQmhibmsrTzF4dUx5b3FJRlJvWlNCc2FYUmxjbUZzSUhSNWNHVnpJSE4xY0hCdmNuUmxaQ0JpZVNCMGFHVWdjWFZsY25rZ1pXNW5hVzVsTGlBcUwxeHVaWGh3YjNKMElIUjVjR1VnVEdsMFpYSmhiRlI1Y0dVZ1BWeHVJQ0FnSUh3Z1hDSmliMjlzWldGdVhDSmNiaUFnSUNCOElGd2liblZ0WW1WeVhDSmNiaUFnSUNCOElGd2ljM1J5YVc1blhDSmNiaUFnSUNCOElGd2laR0YwWlZ3aVhHNGdJQ0FnZkNCY0ltUjFjbUYwYVc5dVhDSmNiaUFnSUNCOElGd2liR2x1YTF3aVhHNGdJQ0FnZkNCY0ltRnljbUY1WENKY2JpQWdJQ0I4SUZ3aWIySnFaV04wWENKY2JpQWdJQ0I4SUZ3aVpuVnVZM1JwYjI1Y0lseHVJQ0FnSUh3Z1hDSnVkV3hzWENJN1hHNHZLaW9nVkdobElISmhkeUIyWVd4MVpYTWdkR2hoZENCaElHeHBkR1Z5WVd3Z1kyRnVJSFJoYTJVZ2IyNHVJQ292WEc1bGVIQnZjblFnZEhsd1pTQk1hWFJsY21Gc0lEMWNiaUFnSUNCOElHSnZiMnhsWVc1Y2JpQWdJQ0I4SUc1MWJXSmxjbHh1SUNBZ0lId2djM1J5YVc1blhHNGdJQ0FnZkNCRVlYUmxWR2x0WlZ4dUlDQWdJSHdnUkhWeVlYUnBiMjVjYmlBZ0lDQjhJRXhwYm10Y2JpQWdJQ0I4SUVGeWNtRjVQRXhwZEdWeVlXdytYRzRnSUNBZ2ZDQkVZWFJoVDJKcVpXTjBYRzRnSUNBZ2ZDQkdkVzVqZEdsdmJseHVJQ0FnSUh3Z2JuVnNiRHRjYmx4dUx5b3FJRTFoY0hNZ2RHaGxJSE4wY21sdVp5QjBlWEJsSUhSdklHbDBKM01nWlhoMFpYSnVZV3dzSUVGUVNTMW1ZV05wYm1jZ2NtVndjbVZ6Wlc1MFlYUnBiMjR1SUNvdlhHNWxlSEJ2Y25RZ2RIbHdaU0JNYVhSbGNtRnNVbVZ3Y2p4VUlHVjRkR1Z1WkhNZ1RHbDBaWEpoYkZSNWNHVStJRDBnVkNCbGVIUmxibVJ6SUZ3aVltOXZiR1ZoYmx3aVhHNGdJQ0FnUHlCaWIyOXNaV0Z1WEc0Z0lDQWdPaUJVSUdWNGRHVnVaSE1nWENKdWRXMWlaWEpjSWx4dUlDQWdJRDhnYm5WdFltVnlYRzRnSUNBZ09pQlVJR1Y0ZEdWdVpITWdYQ0p6ZEhKcGJtZGNJbHh1SUNBZ0lEOGdjM1J5YVc1blhHNGdJQ0FnT2lCVUlHVjRkR1Z1WkhNZ1hDSmtkWEpoZEdsdmJsd2lYRzRnSUNBZ1B5QkVkWEpoZEdsdmJseHVJQ0FnSURvZ1ZDQmxlSFJsYm1SeklGd2laR0YwWlZ3aVhHNGdJQ0FnUHlCRVlYUmxWR2x0WlZ4dUlDQWdJRG9nVkNCbGVIUmxibVJ6SUZ3aWJuVnNiRndpWEc0Z0lDQWdQeUJ1ZFd4c1hHNGdJQ0FnT2lCVUlHVjRkR1Z1WkhNZ1hDSnNhVzVyWENKY2JpQWdJQ0EvSUV4cGJtdGNiaUFnSUNBNklGUWdaWGgwWlc1a2N5QmNJbUZ5Y21GNVhDSmNiaUFnSUNBL0lFRnljbUY1UEV4cGRHVnlZV3crWEc0Z0lDQWdPaUJVSUdWNGRHVnVaSE1nWENKdlltcGxZM1JjSWx4dUlDQWdJRDhnUkdGMFlVOWlhbVZqZEZ4dUlDQWdJRG9nVkNCbGVIUmxibVJ6SUZ3aVpuVnVZM1JwYjI1Y0lseHVJQ0FnSUQ4Z1JuVnVZM1JwYjI1Y2JpQWdJQ0E2SUdGdWVUdGNibHh1THlvcUlFRWdkM0poY0hCbFpDQnNhWFJsY21Gc0lIWmhiSFZsSUhkb2FXTm9JR05oYmlCaVpTQnpkMmwwWTJobFpDQnZiaTRnS2k5Y2JtVjRjRzl5ZENCMGVYQmxJRmR5WVhCd1pXUk1hWFJsY21Gc0lEMWNiaUFnSUNCOElFeHBkR1Z5WVd4WGNtRndjR1Z5UEZ3aWMzUnlhVzVuWENJK1hHNGdJQ0FnZkNCTWFYUmxjbUZzVjNKaGNIQmxjanhjSW01MWJXSmxjbHdpUGx4dUlDQWdJSHdnVEdsMFpYSmhiRmR5WVhCd1pYSThYQ0ppYjI5c1pXRnVYQ0krWEc0Z0lDQWdmQ0JNYVhSbGNtRnNWM0poY0hCbGNqeGNJbVJoZEdWY0lqNWNiaUFnSUNCOElFeHBkR1Z5WVd4WGNtRndjR1Z5UEZ3aVpIVnlZWFJwYjI1Y0lqNWNiaUFnSUNCOElFeHBkR1Z5WVd4WGNtRndjR1Z5UEZ3aWJHbHVhMXdpUGx4dUlDQWdJSHdnVEdsMFpYSmhiRmR5WVhCd1pYSThYQ0poY25KaGVWd2lQbHh1SUNBZ0lId2dUR2wwWlhKaGJGZHlZWEJ3WlhJOFhDSnZZbXBsWTNSY0lqNWNiaUFnSUNCOElFeHBkR1Z5WVd4WGNtRndjR1Z5UEZ3aVpuVnVZM1JwYjI1Y0lqNWNiaUFnSUNCOElFeHBkR1Z5WVd4WGNtRndjR1Z5UEZ3aWJuVnNiRndpUGp0Y2JseHVMeW9xSUVOdmJXSnBibVZ6SUdFZ2RHVjRkSFZoYkNCMGVYQmxJR0Z1WkNCMllXeDFaVHNnY0hKcGJXRnlhV3g1SUhWelpXWjFiQ0JtYjNJZ2MzZHBkR05vYVc1bklHOXVMbHh1SUNvZ1FHaHBaR1JsYmx4dUlDb3ZYRzVsZUhCdmNuUWdhVzUwWlhKbVlXTmxJRXhwZEdWeVlXeFhjbUZ3Y0dWeVBGUWdaWGgwWlc1a2N5Qk1hWFJsY21Gc1ZIbHdaVDRnZTF4dUlDQWdJSFI1Y0dVNklGUTdYRzRnSUNBZ2RtRnNkV1U2SUV4cGRHVnlZV3hTWlhCeVBGUStPMXh1ZlZ4dVhHNHZLaXBjYmlBcUlFQm9hV1JrWlc1Y2JpQXFJQ0JWZEdsc2FYUjVJR3hwWW5KaGNua2dabTl5SUdoaGJtUnNhVzVuSUd4cGRHVnlZV3dnZG1Gc2RXVnpMaUFxTDF4dVpYaHdiM0owSUc1aGJXVnpjR0ZqWlNCTWFYUmxjbUZzY3lCN1hHNGdJQ0FnTHlvcUlGTmxkSFJwYm1keklIVnpaV1FnZDJobGJpQm1iM0p0WVhSMGFXNW5JR3hwZEdWeVlXd2dkbUZzZFdWeklIUnZJSFJsZUhRdUlDb3ZYRzRnSUNBZ1pYaHdiM0owSUdsdWRHVnlabUZqWlNCVWIxTjBjbWx1WjFObGRIUnBibWR6SUh0Y2JpQWdJQ0FnSUNBZ0x5b3FJRmRvWVhRZ1lTQnVkV3hzSUhkcGJHd2djbVZ1WkdWeUlHRnpMaUFxTDF4dUlDQWdJQ0FnSUNCdWRXeHNVbVZ3Y21WelpXNTBZWFJwYjI0NklITjBjbWx1Wnp0Y2JseHVJQ0FnSUNBZ0lDQXZLaW9nUkdGMFpTQm1iM0p0WVhRdUlDb3ZYRzRnSUNBZ0lDQWdJR1JoZEdWR2IzSnRZWFE2SUhOMGNtbHVaenRjYmx4dUlDQWdJQ0FnSUNBdktpb2dSR0YwWlMxMGFXMWxJR1p2Y20xaGRDNGdLaTljYmlBZ0lDQWdJQ0FnWkdGMFpWUnBiV1ZHYjNKdFlYUTZJSE4wY21sdVp6dGNiaUFnSUNCOVhHNWNiaUFnSUNBdktpb2dVMkZ1WlN3Z1JXNW5iR2x6YUMxaVlYTmxaQ0JrWldaaGRXeDBjeUJtYjNJZ1pHRjBaU0JtYjNKdFlYUnpMaUFxTDF4dUlDQWdJR1Y0Y0c5eWRDQmpiMjV6ZENCRVJVWkJWVXhVWDFSUFgxTlVVa2xPUnpvZ1ZHOVRkSEpwYm1kVFpYUjBhVzVuY3lBOUlIdGNiaUFnSUNBZ0lDQWdiblZzYkZKbGNISmxjMlZ1ZEdGMGFXOXVPaUJjSWkxY0lpeGNibHh1SUNBZ0lDQWdJQ0JrWVhSbFJtOXliV0YwT2lCY0lrMU5UVTBnWkdRc0lIbDVlWGxjSWl4Y2JpQWdJQ0FnSUNBZ1pHRjBaVlJwYldWR2IzSnRZWFE2SUZ3aWFEcHRiU0JoSUMwZ1RVMU5UU0JrWkN3Z2VYbDVlVndpTEZ4dUlDQWdJSDA3WEc1Y2JpQWdJQ0F2S2lvZ1EyOXVkbVZ5ZENCaGJpQmhjbUpwZEhKaGNua2dkbUZzZFdVZ2FXNTBieUJoSUhKbFlYTnZibUZpYkdVc0lFMWhjbXRrYjNkdUxXWnlhV1Z1Wkd4NUlITjBjbWx1WnlCcFppQndiM056YVdKc1pTNGdLaTljYmlBZ0lDQmxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2RHOVRkSEpwYm1jb1hHNGdJQ0FnSUNBZ0lHWnBaV3hrT2lCaGJua3NYRzRnSUNBZ0lDQWdJSE5sZEhScGJtYzZJRlJ2VTNSeWFXNW5VMlYwZEdsdVozTWdQU0JFUlVaQlZVeFVYMVJQWDFOVVVrbE9SeXhjYmlBZ0lDQWdJQ0FnY21WamRYSnphWFpsT2lCaWIyOXNaV0Z1SUQwZ1ptRnNjMlZjYmlBZ0lDQXBPaUJ6ZEhKcGJtY2dlMXh1SUNBZ0lDQWdJQ0JzWlhRZ2QzSmhjSEJsWkNBOUlIZHlZWEJXWVd4MVpTaG1hV1ZzWkNrN1hHNGdJQ0FnSUNBZ0lHbG1JQ2doZDNKaGNIQmxaQ2tnY21WMGRYSnVJSE5sZEhScGJtY3ViblZzYkZKbGNISmxjMlZ1ZEdGMGFXOXVPMXh1WEc0Z0lDQWdJQ0FnSUhOM2FYUmphQ0FvZDNKaGNIQmxaQzUwZVhCbEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCallYTmxJRndpYm5Wc2JGd2lPbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQnpaWFIwYVc1bkxtNTFiR3hTWlhCeVpYTmxiblJoZEdsdmJqdGNiaUFnSUNBZ0lDQWdJQ0FnSUdOaGMyVWdYQ0p6ZEhKcGJtZGNJanBjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdkM0poY0hCbFpDNTJZV3gxWlR0Y2JpQWdJQ0FnSUNBZ0lDQWdJR05oYzJVZ1hDSnVkVzFpWlhKY0lqcGNiaUFnSUNBZ0lDQWdJQ0FnSUdOaGMyVWdYQ0ppYjI5c1pXRnVYQ0k2WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJRndpWENJZ0t5QjNjbUZ3Y0dWa0xuWmhiSFZsTzF4dUlDQWdJQ0FnSUNBZ0lDQWdZMkZ6WlNCY0lteHBibXRjSWpwY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnZDNKaGNIQmxaQzUyWVd4MVpTNXRZWEpyWkc5M2JpZ3BPMXh1SUNBZ0lDQWdJQ0FnSUNBZ1kyRnpaU0JjSW1aMWJtTjBhVzl1WENJNlhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUZ3aVBHWjFibU4wYVc5dVBsd2lPMXh1SUNBZ0lDQWdJQ0FnSUNBZ1kyRnpaU0JjSW1GeWNtRjVYQ0k2WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYkdWMElISmxjM1ZzZENBOUlGd2lYQ0k3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tISmxZM1Z5YzJsMlpTa2djbVZ6ZFd4MElDczlJRndpVzF3aU8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxjM1ZzZENBclBTQjNjbUZ3Y0dWa0xuWmhiSFZsTG0xaGNDZ29aaWtnUFQ0Z2RHOVRkSEpwYm1jb1ppd2djMlYwZEdsdVp5d2dkSEoxWlNrcExtcHZhVzRvWENJc0lGd2lLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2NtVmpkWEp6YVhabEtTQnlaWE4xYkhRZ0t6MGdYQ0pkWENJN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhKbGMzVnNkRHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHTmhjMlVnWENKdlltcGxZM1JjSWpwY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnS0Z4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmNJbnNnWENJZ0sxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JQWW1wbFkzUXVaVzUwY21sbGN5aDNjbUZ3Y0dWa0xuWmhiSFZsS1Z4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnTG0xaGNDZ29aU2tnUFQ0Z1pWc3dYU0FySUZ3aU9pQmNJaUFySUhSdlUzUnlhVzVuS0dWYk1WMHNJSE5sZEhScGJtY3NJSFJ5ZFdVcEtWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0xtcHZhVzRvWENJc0lGd2lLU0FyWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lGd2lJSDFjSWx4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JqWVhObElGd2laR0YwWlZ3aU9seHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCeVpXNWtaWEpOYVc1cGJXRnNSR0YwWlNoM2NtRndjR1ZrTG5aaGJIVmxMQ0J6WlhSMGFXNW5MbVJoZEdWR2IzSnRZWFFzSUhObGRIUnBibWN1WkdGMFpWUnBiV1ZHYjNKdFlYUXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ1kyRnpaU0JjSW1SMWNtRjBhVzl1WENJNlhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhKbGJtUmxjazFwYm1sdFlXeEVkWEpoZEdsdmJpaDNjbUZ3Y0dWa0xuWmhiSFZsS1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JseHVJQ0FnSUM4cUtpQlhjbUZ3SUdFZ2JHbDBaWEpoYkNCMllXeDFaU0J6YnlCNWIzVWdZMkZ1SUhOM2FYUmphQ0J2YmlCcGRDQmxZWE5wYkhrdUlDb3ZYRzRnSUNBZ1pYaHdiM0owSUdaMWJtTjBhVzl1SUhkeVlYQldZV3gxWlNoMllXdzZJRXhwZEdWeVlXd3BPaUJYY21Gd2NHVmtUR2wwWlhKaGJDQjhJSFZ1WkdWbWFXNWxaQ0I3WEc0Z0lDQWdJQ0FnSUdsbUlDaHBjMDUxYkd3b2RtRnNLU2tnY21WMGRYSnVJSHNnZEhsd1pUb2dYQ0p1ZFd4c1hDSXNJSFpoYkhWbE9pQjJZV3dnZlR0Y2JpQWdJQ0FnSUNBZ1pXeHpaU0JwWmlBb2FYTk9kVzFpWlhJb2RtRnNLU2tnY21WMGRYSnVJSHNnZEhsd1pUb2dYQ0p1ZFcxaVpYSmNJaXdnZG1Gc2RXVTZJSFpoYkNCOU8xeHVJQ0FnSUNBZ0lDQmxiSE5sSUdsbUlDaHBjMU4wY21sdVp5aDJZV3dwS1NCeVpYUjFjbTRnZXlCMGVYQmxPaUJjSW5OMGNtbHVaMXdpTENCMllXeDFaVG9nZG1Gc0lIMDdYRzRnSUNBZ0lDQWdJR1ZzYzJVZ2FXWWdLR2x6UW05dmJHVmhiaWgyWVd3cEtTQnlaWFIxY200Z2V5QjBlWEJsT2lCY0ltSnZiMnhsWVc1Y0lpd2dkbUZzZFdVNklIWmhiQ0I5TzF4dUlDQWdJQ0FnSUNCbGJITmxJR2xtSUNocGMwUjFjbUYwYVc5dUtIWmhiQ2twSUhKbGRIVnliaUI3SUhSNWNHVTZJRndpWkhWeVlYUnBiMjVjSWl3Z2RtRnNkV1U2SUhaaGJDQjlPMXh1SUNBZ0lDQWdJQ0JsYkhObElHbG1JQ2hwYzBSaGRHVW9kbUZzS1NrZ2NtVjBkWEp1SUhzZ2RIbHdaVG9nWENKa1lYUmxYQ0lzSUhaaGJIVmxPaUIyWVd3Z2ZUdGNiaUFnSUNBZ0lDQWdaV3h6WlNCcFppQW9hWE5CY25KaGVTaDJZV3dwS1NCeVpYUjFjbTRnZXlCMGVYQmxPaUJjSW1GeWNtRjVYQ0lzSUhaaGJIVmxPaUIyWVd3Z2ZUdGNiaUFnSUNBZ0lDQWdaV3h6WlNCcFppQW9hWE5NYVc1cktIWmhiQ2twSUhKbGRIVnliaUI3SUhSNWNHVTZJRndpYkdsdWExd2lMQ0IyWVd4MVpUb2dkbUZzSUgwN1hHNGdJQ0FnSUNBZ0lHVnNjMlVnYVdZZ0tHbHpSblZ1WTNScGIyNG9kbUZzS1NrZ2NtVjBkWEp1SUhzZ2RIbHdaVG9nWENKbWRXNWpkR2x2Ymx3aUxDQjJZV3gxWlRvZ2RtRnNJSDA3WEc0Z0lDQWdJQ0FnSUdWc2MyVWdhV1lnS0dselQySnFaV04wS0haaGJDa3BJSEpsZEhWeWJpQjdJSFI1Y0dVNklGd2liMkpxWldOMFhDSXNJSFpoYkhWbE9pQjJZV3dnZlR0Y2JpQWdJQ0FnSUNBZ1pXeHpaU0J5WlhSMWNtNGdkVzVrWldacGJtVmtPMXh1SUNBZ0lIMWNibHh1SUNBZ0lDOHFLaUJTWldOMWNuTnBkbVZzZVNCdFlYQWdZMjl0Y0d4bGVDQnZZbXBsWTNSeklHRjBJSFJvWlNCc1pXRjJaWE11SUNvdlhHNGdJQ0FnWlhod2IzSjBJR1oxYm1OMGFXOXVJRzFoY0V4bFlYWmxjeWgyWVd3NklFeHBkR1Z5WVd3c0lHWjFibU02SUNoME9pQk1hWFJsY21Gc0tTQTlQaUJNYVhSbGNtRnNLVG9nVEdsMFpYSmhiQ0I3WEc0Z0lDQWdJQ0FnSUdsbUlDaHBjMDlpYW1WamRDaDJZV3dwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JzWlhRZ2NtVnpkV3gwT2lCRVlYUmhUMkpxWldOMElEMGdlMzA3WEc0Z0lDQWdJQ0FnSUNBZ0lDQm1iM0lnS0d4bGRDQmJhMlY1TENCMllXeDFaVjBnYjJZZ1QySnFaV04wTG1WdWRISnBaWE1vZG1Gc0tTa2djbVZ6ZFd4MFcydGxlVjBnUFNCdFlYQk1aV0YyWlhNb2RtRnNkV1VzSUdaMWJtTXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhKbGMzVnNkRHRjYmlBZ0lDQWdJQ0FnZlNCbGJITmxJR2xtSUNocGMwRnljbUY1S0haaGJDa3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHeGxkQ0J5WlhOMWJIUTZJRXhwZEdWeVlXeGJYU0E5SUZ0ZE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnWm05eUlDaHNaWFFnZG1Gc2RXVWdiMllnZG1Gc0tTQnlaWE4xYkhRdWNIVnphQ2h0WVhCTVpXRjJaWE1vZG1Gc2RXVXNJR1oxYm1NcEtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJ5WlhOMWJIUTdYRzRnSUNBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnWm5WdVl5aDJZV3dwTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dVhHNGdJQ0FnTHlvcUlFTm9aV05ySUdsbUlIUjNieUJoY21KcGRISmhjbmtnYkdsMFpYSmhiSE1nWVhKbElHVnhkV0ZzTGlBcUwxeHVJQ0FnSUdWNGNHOXlkQ0JtZFc1amRHbHZiaUJsY1hWaGJITW9abWx5YzNRNklFeHBkR1Z5WVd3Z2ZDQjFibVJsWm1sdVpXUXNJSE5sWTI5dVpEb2dUR2wwWlhKaGJDQjhJSFZ1WkdWbWFXNWxaQ2tnZTF4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnWTI5dGNHRnlaU2htYVhKemRDd2djMlZqYjI1a0tTQTlQU0F3TzF4dUlDQWdJSDFjYmx4dUlDQWdJQzhxS2lCRGIyMXdZWEpsSUhSM2J5QmhjbUpwZEhKaGNua2dTbUYyWVZOamNtbHdkQ0IyWVd4MVpYTXVJRkJ5YjJSMVkyVnpJR0VnZEc5MFlXd2diM0prWlhKcGJtY2diM1psY2lCQlRsa2djRzl6YzJsaWJHVWdaR0YwWVdOdmNtVWdkbUZzZFdVdUlDb3ZYRzRnSUNBZ1pYaHdiM0owSUdaMWJtTjBhVzl1SUdOdmJYQmhjbVVvWEc0Z0lDQWdJQ0FnSUhaaGJERTZJRXhwZEdWeVlXd2dmQ0IxYm1SbFptbHVaV1FzWEc0Z0lDQWdJQ0FnSUhaaGJESTZJRXhwZEdWeVlXd2dmQ0IxYm1SbFptbHVaV1FzWEc0Z0lDQWdJQ0FnSUd4cGJtdE9iM0p0WVd4cGVtVnlQem9nS0d4cGJtczZJSE4wY21sdVp5a2dQVDRnYzNSeWFXNW5YRzRnSUNBZ0tUb2diblZ0WW1WeUlIdGNiaUFnSUNBZ0lDQWdMeThnVW1WbVpYSmxibU5sSUdWeGRXRnNhWFI1SUMwZ2MyaHZjblFnWTJseVkzVnBkQzVjYmlBZ0lDQWdJQ0FnYVdZZ0tIWmhiREVnUFQwOUlIWmhiRElwSUhKbGRIVnliaUF3TzF4dVhHNGdJQ0FnSUNBZ0lDOHZJRWhoYm1Sc1pTQjFibVJsWm1sdVpXUXZiblZzYkhNZ1ptbHljM1F1WEc0Z0lDQWdJQ0FnSUdsbUlDaDJZV3d4SUQwOVBTQjFibVJsWm1sdVpXUXBJSFpoYkRFZ1BTQnVkV3hzTzF4dUlDQWdJQ0FnSUNCcFppQW9kbUZzTWlBOVBUMGdkVzVrWldacGJtVmtLU0IyWVd3eUlEMGdiblZzYkR0Y2JpQWdJQ0FnSUNBZ2FXWWdLSFpoYkRFZ1BUMDlJRzUxYkd3Z0ppWWdkbUZzTWlBOVBUMGdiblZzYkNrZ2NtVjBkWEp1SURBN1hHNGdJQ0FnSUNBZ0lHVnNjMlVnYVdZZ0tIWmhiREVnUFQwOUlHNTFiR3dwSUhKbGRIVnliaUF0TVR0Y2JpQWdJQ0FnSUNBZ1pXeHpaU0JwWmlBb2RtRnNNaUE5UFQwZ2JuVnNiQ2tnY21WMGRYSnVJREU3WEc1Y2JpQWdJQ0FnSUNBZ0x5OGdRU0J1YjI0dGJuVnNiQ0IyWVd4MVpTQnViM2NnZDJocFkyZ2dkMlVnWTJGdUlIZHlZWEFnSmlCamIyMXdZWEpsSUc5dUxseHVJQ0FnSUNBZ0lDQnNaWFFnZDNKaGNERWdQU0IzY21Gd1ZtRnNkV1VvZG1Gc01TazdYRzRnSUNBZ0lDQWdJR3hsZENCM2NtRndNaUE5SUhkeVlYQldZV3gxWlNoMllXd3lLVHRjYmx4dUlDQWdJQ0FnSUNCcFppQW9kM0poY0RFZ1BUMDlJSFZ1WkdWbWFXNWxaQ0FtSmlCM2NtRndNaUE5UFQwZ2RXNWtaV1pwYm1Wa0tTQnlaWFIxY200Z01EdGNiaUFnSUNBZ0lDQWdaV3h6WlNCcFppQW9kM0poY0RFZ1BUMDlJSFZ1WkdWbWFXNWxaQ2tnY21WMGRYSnVJQzB4TzF4dUlDQWdJQ0FnSUNCbGJITmxJR2xtSUNoM2NtRndNaUE5UFQwZ2RXNWtaV1pwYm1Wa0tTQnlaWFIxY200Z01UdGNibHh1SUNBZ0lDQWdJQ0F2THlCVGFHOXlkQzFqYVhKamRXbDBJRzl1SUdScFptWmxjbVZ1ZENCMGVYQmxjeUJ2Y2lCdmJpQnlaV1psY21WdVkyVWdaWEYxWVd4cGRIa3VYRzRnSUNBZ0lDQWdJR2xtSUNoM2NtRndNUzUwZVhCbElDRTlJSGR5WVhBeUxuUjVjR1VwSUhKbGRIVnliaUIzY21Gd01TNTBlWEJsTG14dlkyRnNaVU52YlhCaGNtVW9kM0poY0RJdWRIbHdaU2s3WEc0Z0lDQWdJQ0FnSUdsbUlDaDNjbUZ3TVM1MllXeDFaU0E5UFQwZ2QzSmhjREl1ZG1Gc2RXVXBJSEpsZEhWeWJpQXdPMXh1WEc0Z0lDQWdJQ0FnSUhOM2FYUmphQ0FvZDNKaGNERXVkSGx3WlNrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnWTJGelpTQmNJbk4wY21sdVoxd2lPbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQjNjbUZ3TVM1MllXeDFaUzVzYjJOaGJHVkRiMjF3WVhKbEtIZHlZWEF5TG5aaGJIVmxJR0Z6SUhOMGNtbHVaeWs3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpZWE5sSUZ3aWJuVnRZbVZ5WENJNlhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLSGR5WVhBeExuWmhiSFZsSUR3Z0tIZHlZWEF5TG5aaGJIVmxJR0Z6SUc1MWJXSmxjaWtwSUhKbGRIVnliaUF0TVR0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCbGJITmxJR2xtSUNoM2NtRndNUzUyWVd4MVpTQTlQU0FvZDNKaGNESXVkbUZzZFdVZ1lYTWdiblZ0WW1WeUtTa2djbVYwZFhKdUlEQTdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlERTdYRzRnSUNBZ0lDQWdJQ0FnSUNCallYTmxJRndpYm5Wc2JGd2lPbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQXdPMXh1SUNBZ0lDQWdJQ0FnSUNBZ1kyRnpaU0JjSW1KdmIyeGxZVzVjSWpwY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcFppQW9kM0poY0RFdWRtRnNkV1VnUFQwZ2QzSmhjREl1ZG1Gc2RXVXBJSEpsZEhWeWJpQXdPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR1ZzYzJVZ2NtVjBkWEp1SUhkeVlYQXhMblpoYkhWbElEOGdNU0E2SUMweE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnWTJGelpTQmNJbXhwYm10Y0lqcGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnNaWFFnYkdsdWF6RWdQU0IzY21Gd01TNTJZV3gxWlR0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCc1pYUWdiR2x1YXpJZ1BTQjNjbUZ3TWk1MllXeDFaU0JoY3lCTWFXNXJPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR3hsZENCdWIzSnRZV3hwZW1VZ1BTQnNhVzVyVG05eWJXRnNhWHBsY2lBL1B5QW9LSGc2SUhOMGNtbHVaeWtnUFQ0Z2VDazdYRzVjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0F2THlCWFpTQmpZVzRuZENCamIyMXdZWEpsSUdKNUlHWnBiR1VnYm1GdFpTQnZjaUJrYVhOd2JHRjVMQ0J6YVc1alpTQjBhR0YwSUhkdmRXeGtJR0p5WldGcklHeHBibXNnWlhGMVlXeHBkSGt1SUVOdmJYQmhjbVVnWW5rZ2NHRjBhQzVjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JzWlhRZ2NHRjBhRU52YlhCaGNtVWdQU0J1YjNKdFlXeHBlbVVvYkdsdWF6RXVjR0YwYUNrdWJHOWpZV3hsUTI5dGNHRnlaU2h1YjNKdFlXeHBlbVVvYkdsdWF6SXVjR0YwYUNrcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2h3WVhSb1EyOXRjR0Z5WlNBaFBTQXdLU0J5WlhSMWNtNGdjR0YwYUVOdmJYQmhjbVU3WEc1Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBdkx5QlVhR1Z1SUdOdmJYQmhjbVVnWW5rZ2RIbHdaUzVjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JzWlhRZ2RIbHdaVU52YlhCaGNtVWdQU0JzYVc1ck1TNTBlWEJsTG14dlkyRnNaVU52YlhCaGNtVW9iR2x1YXpJdWRIbHdaU2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tIUjVjR1ZEYjIxd1lYSmxJQ0U5SURBcElISmxkSFZ5YmlCMGVYQmxRMjl0Y0dGeVpUdGNibHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQzh2SUZSb1pXNGdZMjl0Y0dGeVpTQmllU0J6ZFdKd1lYUm9JR1Y0YVhOMFpXNWpaUzVjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2JHbHVhekV1YzNWaWNHRjBhQ0FtSmlBaGJHbHVhekl1YzNWaWNHRjBhQ2tnY21WMGRYSnVJREU3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tDRnNhVzVyTVM1emRXSndZWFJvSUNZbUlHeHBibXN5TG5OMVluQmhkR2dwSUhKbGRIVnliaUF0TVR0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcFppQW9JV3hwYm1zeExuTjFZbkJoZEdnZ0ppWWdJV3hwYm1zeUxuTjFZbkJoZEdncElISmxkSFZ5YmlBd08xeHVYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdMeThnVTJsdVkyVWdZbTkwYUNCb1lYWmxJR0VnYzNWaWNHRjBhQ3dnWTI5dGNHRnlaU0JpZVNCemRXSndZWFJvTGx4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUFvYkdsdWF6RXVjM1ZpY0dGMGFDQS9QeUJjSWx3aUtTNXNiMk5oYkdWRGIyMXdZWEpsS0d4cGJtc3lMbk4xWW5CaGRHZ2dQejhnWENKY0lpazdYRzRnSUNBZ0lDQWdJQ0FnSUNCallYTmxJRndpWkdGMFpWd2lPbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQjNjbUZ3TVM1MllXeDFaU0E4SUNoM2NtRndNaTUyWVd4MVpTQmhjeUJFWVhSbFZHbHRaU2xjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1B5QXRNVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBNklIZHlZWEF4TG5aaGJIVmxMbVZ4ZFdGc2N5aDNjbUZ3TWk1MllXeDFaU0JoY3lCRVlYUmxWR2x0WlNsY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQeUF3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lEb2dNVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHTmhjMlVnWENKa2RYSmhkR2x2Ymx3aU9seHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCM2NtRndNUzUyWVd4MVpTQThJQ2gzY21Gd01pNTJZV3gxWlNCaGN5QkVkWEpoZEdsdmJpbGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUHlBdE1WeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E2SUhkeVlYQXhMblpoYkhWbExtVnhkV0ZzY3loM2NtRndNaTUyWVd4MVpTQmhjeUJFZFhKaGRHbHZiaWxjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1B5QXdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSURvZ01UdGNiaUFnSUNBZ0lDQWdJQ0FnSUdOaGMyVWdYQ0poY25KaGVWd2lPbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR3hsZENCbU1TQTlJSGR5WVhBeExuWmhiSFZsTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUd4bGRDQm1NaUE5SUhkeVlYQXlMblpoYkhWbElHRnpJR0Z1ZVZ0ZE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHWnZjaUFvYkdWMElHbHVaR1Y0SUQwZ01Ec2dhVzVrWlhnZ1BDQk5ZWFJvTG0xcGJpaG1NUzVzWlc1bmRHZ3NJR1l5TG14bGJtZDBhQ2s3SUdsdVpHVjRLeXNwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdiR1YwSUdOdmJYQWdQU0JqYjIxd1lYSmxLR1l4VzJsdVpHVjRYU3dnWmpKYmFXNWtaWGhkS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhV1lnS0dOdmJYQWdJVDBnTUNrZ2NtVjBkWEp1SUdOdmJYQTdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQm1NUzVzWlc1bmRHZ2dMU0JtTWk1c1pXNW5kR2c3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpZWE5sSUZ3aWIySnFaV04wWENJNlhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2JHVjBJRzh4SUQwZ2QzSmhjREV1ZG1Gc2RXVTdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdiR1YwSUc4eUlEMGdkM0poY0RJdWRtRnNkV1VnWVhNZ1VtVmpiM0prUEhOMGNtbHVaeXdnWVc1NVBqdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnNaWFFnYXpFZ1BTQkJjbkpoZVM1bWNtOXRLRTlpYW1WamRDNXJaWGx6S0c4eEtTazdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdiR1YwSUdzeUlEMGdRWEp5WVhrdVpuSnZiU2hQWW1wbFkzUXVhMlY1Y3lodk1pa3BPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR3N4TG5OdmNuUW9LVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JyTWk1emIzSjBLQ2s3WEc1Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCc1pYUWdhMlY1UTI5dGNHRnlaU0E5SUdOdmJYQmhjbVVvYXpFc0lHc3lLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2EyVjVRMjl0Y0dGeVpTQWhQU0F3S1NCeVpYUjFjbTRnYTJWNVEyOXRjR0Z5WlR0Y2JseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHWnZjaUFvYkdWMElHdGxlU0J2WmlCck1Ta2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCc1pYUWdZMjl0Y0NBOUlHTnZiWEJoY21Vb2J6RmJhMlY1WFN3Z2J6SmJhMlY1WFNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2xtSUNoamIyMXdJQ0U5SURBcElISmxkSFZ5YmlCamIyMXdPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUF3TzF4dUlDQWdJQ0FnSUNBZ0lDQWdZMkZ6WlNCY0ltWjFibU4wYVc5dVhDSTZYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlEQTdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQjlYRzVjYmlBZ0lDQXZLaW9nUm1sdVpDQjBhR1VnWTI5eWNtVnpjRzl1WkdsdVp5QmtZWFJoWTI5eVpTQjBlWEJsSUdadmNpQmhiaUJoY21KcGRISmhjbmtnZG1Gc2RXVXVJQ292WEc0Z0lDQWdaWGh3YjNKMElHWjFibU4wYVc5dUlIUjVjR1ZQWmloMllXdzZJR0Z1ZVNrNklFeHBkR1Z5WVd4VWVYQmxJSHdnZFc1a1pXWnBibVZrSUh0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUhkeVlYQldZV3gxWlNoMllXd3BQeTUwZVhCbE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUM4cUtpQkVaWFJsY20xcGJtVWdhV1lnZEdobElHZHBkbVZ1SUhaaGJIVmxJR2x6SUZ3aWRISjFkR2g1WENJZ0tHa3VaUzRzSUdseklHNXZiaTF1ZFd4c0lHRnVaQ0JvWVhNZ1pHRjBZU0JwYmlCcGRDa3VJQ292WEc0Z0lDQWdaWGh3YjNKMElHWjFibU4wYVc5dUlHbHpWSEoxZEdoNUtHWnBaV3hrT2lCTWFYUmxjbUZzS1RvZ1ltOXZiR1ZoYmlCN1hHNGdJQ0FnSUNBZ0lHeGxkQ0IzY21Gd2NHVmtJRDBnZDNKaGNGWmhiSFZsS0dacFpXeGtLVHRjYmlBZ0lDQWdJQ0FnYVdZZ0tDRjNjbUZ3Y0dWa0tTQnlaWFIxY200Z1ptRnNjMlU3WEc1Y2JpQWdJQ0FnSUNBZ2MzZHBkR05vSUNoM2NtRndjR1ZrTG5SNWNHVXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHTmhjMlVnWENKdWRXMWlaWEpjSWpwY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnZDNKaGNIQmxaQzUyWVd4MVpTQWhQU0F3TzF4dUlDQWdJQ0FnSUNBZ0lDQWdZMkZ6WlNCY0luTjBjbWx1WjF3aU9seHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCM2NtRndjR1ZrTG5aaGJIVmxMbXhsYm1kMGFDQStJREE3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpZWE5sSUZ3aVltOXZiR1ZoYmx3aU9seHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCM2NtRndjR1ZrTG5aaGJIVmxPMXh1SUNBZ0lDQWdJQ0FnSUNBZ1kyRnpaU0JjSW14cGJtdGNJanBjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdJU0YzY21Gd2NHVmtMblpoYkhWbExuQmhkR2c3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpZWE5sSUZ3aVpHRjBaVndpT2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUIzY21Gd2NHVmtMblpoYkhWbExuUnZUV2xzYkdsektDa2dJVDBnTUR0Y2JpQWdJQ0FnSUNBZ0lDQWdJR05oYzJVZ1hDSmtkWEpoZEdsdmJsd2lPbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQjNjbUZ3Y0dWa0xuWmhiSFZsTG1GektGd2ljMlZqYjI1a2Mxd2lLU0FoUFNBd08xeHVJQ0FnSUNBZ0lDQWdJQ0FnWTJGelpTQmNJbTlpYW1WamRGd2lPbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQlBZbXBsWTNRdWEyVjVjeWgzY21Gd2NHVmtMblpoYkhWbEtTNXNaVzVuZEdnZ1BpQXdPMXh1SUNBZ0lDQWdJQ0FnSUNBZ1kyRnpaU0JjSW1GeWNtRjVYQ0k2WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJSGR5WVhCd1pXUXVkbUZzZFdVdWJHVnVaM1JvSUQ0Z01EdGNiaUFnSUNBZ0lDQWdJQ0FnSUdOaGMyVWdYQ0p1ZFd4c1hDSTZYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlHWmhiSE5sTzF4dUlDQWdJQ0FnSUNBZ0lDQWdZMkZ6WlNCY0ltWjFibU4wYVc5dVhDSTZYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlIUnlkV1U3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0I5WEc1Y2JpQWdJQ0F2S2lvZ1JHVmxjQ0JqYjNCNUlHRWdabWxsYkdRdUlDb3ZYRzRnSUNBZ1pYaHdiM0owSUdaMWJtTjBhVzl1SUdSbFpYQkRiM0I1UEZRZ1pYaDBaVzVrY3lCTWFYUmxjbUZzUGlobWFXVnNaRG9nVkNrNklGUWdlMXh1SUNBZ0lDQWdJQ0JwWmlBb1ptbGxiR1FnUFQwOUlHNTFiR3dnZkh3Z1ptbGxiR1FnUFQwOUlIVnVaR1ZtYVc1bFpDa2djbVYwZFhKdUlHWnBaV3hrTzF4dVhHNGdJQ0FnSUNBZ0lHbG1JQ2hNYVhSbGNtRnNjeTVwYzBGeWNtRjVLR1pwWld4a0tTa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUNoYlhTQmhjeUJNYVhSbGNtRnNXMTBwTG1OdmJtTmhkQ2htYVdWc1pDNXRZWEFvS0hZcElEMCtJR1JsWlhCRGIzQjVLSFlwS1NrZ1lYTWdWRHRjYmlBZ0lDQWdJQ0FnZlNCbGJITmxJR2xtSUNoTWFYUmxjbUZzY3k1cGMwOWlhbVZqZENobWFXVnNaQ2twSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJR3hsZENCeVpYTjFiSFE2SUZKbFkyOXlaRHh6ZEhKcGJtY3NJRXhwZEdWeVlXdytJRDBnZTMwN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JtYjNJZ0tHeGxkQ0JiYTJWNUxDQjJZV3gxWlYwZ2IyWWdUMkpxWldOMExtVnVkSEpwWlhNb1ptbGxiR1FwS1NCeVpYTjFiSFJiYTJWNVhTQTlJR1JsWlhCRGIzQjVLSFpoYkhWbEtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJ5WlhOMWJIUWdZWE1nVkR0Y2JpQWdJQ0FnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQm1hV1ZzWkR0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JseHVJQ0FnSUM4cUtpQkVaWFJsY20xcGJtVWdhV1lnZEdobElIWmhiSFZsSUdseklHRWdjM1J5YVc1bkxpQXFMMXh1SUNBZ0lHVjRjRzl5ZENCbWRXNWpkR2x2YmlCcGMxTjBjbWx1WnloMllXdzZJR0Z1ZVNrNklIWmhiQ0JwY3lCemRISnBibWNnZTF4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnZEhsd1pXOW1JSFpoYkNBOVBTQmNJbk4wY21sdVoxd2lPMXh1SUNBZ0lIMWNibHh1SUNBZ0lDOHFLaUJFWlhSbGNtMXBibVVnYVdZZ2RHaGxJSFpoYkhWbElHbHpJR0VnYm5WdFltVnlMaUFxTDF4dUlDQWdJR1Y0Y0c5eWRDQm1kVzVqZEdsdmJpQnBjMDUxYldKbGNpaDJZV3c2SUdGdWVTazZJSFpoYkNCcGN5QnVkVzFpWlhJZ2UxeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2RIbHdaVzltSUhaaGJDQTlQU0JjSW01MWJXSmxjbHdpTzF4dUlDQWdJSDFjYmx4dUlDQWdJQzhxS2lCRVpYUmxjbTFwYm1VZ2FXWWdkR2hsSUhaaGJIVmxJR2x6SUdFZ1pHRjBaUzRnS2k5Y2JpQWdJQ0JsZUhCdmNuUWdablZ1WTNScGIyNGdhWE5FWVhSbEtIWmhiRG9nWVc1NUtUb2dkbUZzSUdseklFUmhkR1ZVYVcxbElIdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlIWmhiQ0JwYm5OMFlXNWpaVzltSUVSaGRHVlVhVzFsTzF4dUlDQWdJSDFjYmx4dUlDQWdJQzhxS2lCRVpYUmxjbTFwYm1VZ2FXWWdkR2hsSUhaaGJIVmxJR2x6SUdFZ1pIVnlZWFJwYjI0dUlDb3ZYRzRnSUNBZ1pYaHdiM0owSUdaMWJtTjBhVzl1SUdselJIVnlZWFJwYjI0b2RtRnNPaUJoYm5rcE9pQjJZV3dnYVhNZ1JIVnlZWFJwYjI0Z2UxeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2RtRnNJR2x1YzNSaGJtTmxiMllnUkhWeVlYUnBiMjQ3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdMeW9xSUVSbGRHVnliV2x1WlNCcFppQjBhR1VnZG1Gc2RXVWdhWE1nYm5Wc2JDQnZjaUIxYm1SbFptbHVaV1F1SUNvdlhHNGdJQ0FnWlhod2IzSjBJR1oxYm1OMGFXOXVJR2x6VG5Wc2JDaDJZV3c2SUdGdWVTazZJSFpoYkNCcGN5QnVkV3hzSUh3Z2RXNWtaV1pwYm1Wa0lIdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlIWmhiQ0E5UFQwZ2JuVnNiQ0I4ZkNCMllXd2dQVDA5SUhWdVpHVm1hVzVsWkR0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0F2S2lvZ1JHVjBaWEp0YVc1bElHbG1JSFJvWlNCMllXeDFaU0JwY3lCaGJpQmhjbkpoZVM0Z0tpOWNiaUFnSUNCbGVIQnZjblFnWm5WdVkzUnBiMjRnYVhOQmNuSmhlU2gyWVd3NklHRnVlU2s2SUhaaGJDQnBjeUJoYm5sYlhTQjdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQkJjbkpoZVM1cGMwRnljbUY1S0haaGJDazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ0x5b3FJRVJsZEdWeWJXbHVaU0JwWmlCMGFHVWdkbUZzZFdVZ2FYTWdZU0JpYjI5c1pXRnVMaUFxTDF4dUlDQWdJR1Y0Y0c5eWRDQm1kVzVqZEdsdmJpQnBjMEp2YjJ4bFlXNG9kbUZzT2lCaGJua3BPaUIyWVd3Z2FYTWdZbTl2YkdWaGJpQjdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQjBlWEJsYjJZZ2RtRnNJRDA5UFNCY0ltSnZiMnhsWVc1Y0lqdGNiaUFnSUNCOVhHNWNiaUFnSUNBdktpb2dSR1YwWlhKdGFXNWxJR2xtSUhSb1pTQjJZV3gxWlNCcGN5QmhJR3hwYm1zdUlDb3ZYRzRnSUNBZ1pYaHdiM0owSUdaMWJtTjBhVzl1SUdselRHbHVheWgyWVd3NklHRnVlU2s2SUhaaGJDQnBjeUJNYVc1cklIdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlIWmhiQ0JwYm5OMFlXNWpaVzltSUV4cGJtczdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ0x5b3FJRU5vWldOcmN5QnBaaUIwYUdVZ1oybDJaVzRnZG1Gc2RXVWdhWE1nWVc0Z2IySnFaV04wSUNoaGJtUWdibTkwSUdGdWVTQnZkR2hsY2lCa1lYUmhZMjl5WlMxeVpXTnZaMjVwZW1Wa0lHOWlhbVZqZEMxc2FXdGxJSFI1Y0dVcExpQXFMMXh1SUNBZ0lHVjRjRzl5ZENCbWRXNWpkR2x2YmlCcGMwOWlhbVZqZENoMllXdzZJR0Z1ZVNrNklIWmhiQ0JwY3lCU1pXTnZjbVE4YzNSeWFXNW5MQ0JoYm5rK0lIdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlDaGNiaUFnSUNBZ0lDQWdJQ0FnSUhaaGJDQWhQVDBnZFc1a1pXWnBibVZrSUNZbVhHNGdJQ0FnSUNBZ0lDQWdJQ0IwZVhCbGIyWWdkbUZzSUQwOUlGd2liMkpxWldOMFhDSWdKaVpjYmlBZ0lDQWdJQ0FnSUNBZ0lDRnBjMEZ5Y21GNUtIWmhiQ2tnSmlaY2JpQWdJQ0FnSUNBZ0lDQWdJQ0ZwYzBSMWNtRjBhVzl1S0haaGJDa2dKaVpjYmlBZ0lDQWdJQ0FnSUNBZ0lDRnBjMFJoZEdVb2RtRnNLU0FtSmx4dUlDQWdJQ0FnSUNBZ0lDQWdJV2x6VEdsdWF5aDJZV3dwSUNZbVhHNGdJQ0FnSUNBZ0lDQWdJQ0FoYVhOT2RXeHNLSFpoYkNsY2JpQWdJQ0FnSUNBZ0tUdGNiaUFnSUNCOVhHNWNiaUFnSUNBdktpb2dSR1YwWlhKdGFXNWxjeUJwWmlCMGFHVWdaMmwyWlc0Z2RtRnNkV1VnYVhNZ1lTQnFZWFpoYzJOeWFYQjBJR1oxYm1OMGFXOXVMaUFxTDF4dUlDQWdJR1Y0Y0c5eWRDQm1kVzVqZEdsdmJpQnBjMFoxYm1OMGFXOXVLSFpoYkRvZ1lXNTVLVG9nZG1Gc0lHbHpJRVoxYm1OMGFXOXVJSHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJSFI1Y0dWdlppQjJZV3dnUFQwZ1hDSm1kVzVqZEdsdmJsd2lPMXh1SUNBZ0lIMWNibjFjYmx4dUx5b3FJRUVnWjNKdmRYQnBibWNnYjI0Z1lTQjBlWEJsSUhkb2FXTm9JSE4xY0hCdmNuUnpJSEpsWTNWeWMybDJaV3g1TFc1bGMzUmxaQ0JuY205MWNITXVYRzRnS2lCQVozSnZkWEFnUTI5dGJXOXVJRlI1Y0dWelhHNGdLaTljYm1WNGNHOXlkQ0IwZVhCbElFZHliM1Z3Uld4bGJXVnVkRHhVUGlBOUlIc2dhMlY1T2lCTWFYUmxjbUZzT3lCeWIzZHpPaUJIY205MWNHbHVaenhVUGlCOU8xeHVMeW9xWEc0Z0tpQkJJR2R5YjNWd2FXNW5MQ0IzYUdsamFDQmpZVzRnWW1VZ1pXbDBhR1Z5T2x4dUlDb2dMU0JoYmlCaGNuSmhlU0J2WmlCbGJHVnRaVzUwY3lCdlppQjBlWEJsSUdCVVlDd2diM0pjYmlBcUlDMGdZVzRnWVhKeVlYa2diMllnZTBCc2FXNXJJRWR5YjNWd1pXeGxiV1Z1ZEgxelhHNGdLbHh1SUNvZ1FHZHliM1Z3SUVOdmJXMXZiaUJVZVhCbGMxeHVJQ292WEc1bGVIQnZjblFnZEhsd1pTQkhjbTkxY0dsdVp6eFVQaUE5SUZSYlhTQjhJRWR5YjNWd1JXeGxiV1Z1ZER4VVBsdGRPMXh1THlvcVhHNGdLaUJBYUdsa1pHVnVYRzRnS2k5Y2JtVjRjRzl5ZENCdVlXMWxjM0JoWTJVZ1IzSnZkWEJwYm1keklIdGNiaUFnSUNBdktpb2dSR1YwWlhKdGFXNWxjeUJwWmlCMGFHVWdaMmwyWlc0Z1ozSnZkWEFnWlc1MGNua2dhWE1nWVNCemRHRnVaR0ZzYjI1bElIWmhiSFZsTENCdmNpQmhJR2R5YjNWd2FXNW5JRzltSUhOMVlpMWxiblJ5YVdWekxpQXFMMXh1SUNBZ0lHVjRjRzl5ZENCbWRXNWpkR2x2YmlCcGMwVnNaVzFsYm5SSGNtOTFjRHhVUGlobGJuUnllVG9nWVc1NUtUb2daVzUwY25rZ2FYTWdSM0p2ZFhCRmJHVnRaVzUwUEZRK0lIdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlFeHBkR1Z5WVd4ekxtbHpUMkpxWldOMEtHVnVkSEo1S1NBbUppQlBZbXBsWTNRdWEyVjVjeWhsYm5SeWVTa3ViR1Z1WjNSb0lEMDlJRElnSmlZZ1hDSnJaWGxjSWlCcGJpQmxiblJ5ZVNBbUppQmNJbkp2ZDNOY0lpQnBiaUJsYm5SeWVUdGNiaUFnSUNCOVhHNWNiaUFnSUNBdktpb2dSR1YwWlhKdGFXNWxjeUJwWmlCMGFHVWdaMmwyWlc0Z1lYSnlZWGtnYVhNZ1lTQm5jbTkxY0dsdVp5QmhjbkpoZVM0Z0tpOWNiaUFnSUNCbGVIQnZjblFnWm5WdVkzUnBiMjRnYVhOSGNtOTFjR2x1Wnp4VVBpaGxiblJ5ZVRvZ1IzSnZkWEJwYm1jOFZENHBPaUJsYm5SeWVTQnBjeUJIY205MWNFVnNaVzFsYm5ROFZENWJYU0I3WEc0Z0lDQWdJQ0FnSUdadmNpQW9iR1YwSUdWc1pXMWxiblFnYjJZZ1pXNTBjbmtwSUdsbUlDZ2hhWE5GYkdWdFpXNTBSM0p2ZFhBb1pXeGxiV1Z1ZENrcElISmxkSFZ5YmlCbVlXeHpaVHRjYmx4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnZEhKMVpUdGNiaUFnSUNCOVhHNWNiaUFnSUNBdktpb2dSR1YwWlhKdGFXNWxjeUJwWmlCMGFHVWdaMmwyWlc0Z1lYSnlZWGtnYVhNZ1lTQnNaV0ZtSUdGdVpDQm9ZWE1nYm04Z2MzVmlaM0p2ZFhCcGJtZHpMaUFxTDF4dUlDQWdJR1Y0Y0c5eWRDQm1kVzVqZEdsdmJpQnBjMHhsWVdZOFZENG9aVzUwY25rNklFZHliM1Z3YVc1blBGUStLVG9nWlc1MGNua2dhWE1nVkZ0ZElIdGNiaUFnSUNBZ0lDQWdabTl5SUNoc1pYUWdaV3hsYldWdWRDQnZaaUJsYm5SeWVTa2dhV1lnS0dselJXeGxiV1Z1ZEVkeWIzVndLR1ZzWlcxbGJuUXBLU0J5WlhSMWNtNGdabUZzYzJVN1hHNWNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlIUnlkV1U3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdMeW9xSUVOdmRXNTBJSFJvWlNCMGIzUmhiQ0J1ZFcxaVpYSWdiMllnWld4bGJXVnVkSE1nYVc0Z1lTQnlaV04xY25OcGRtVWdaM0p2ZFhCcGJtY3VJQ292WEc0Z0lDQWdaWGh3YjNKMElHWjFibU4wYVc5dUlHTnZkVzUwUEZRK0tHVnNaVzFsYm5Sek9pQkhjbTkxY0dsdVp6eFVQaUI4SUVkeWIzVndSV3hsYldWdWREeFVQaWs2SUc1MWJXSmxjaUI3WEc0Z0lDQWdJQ0FnSUdsbUlDaHBjMFZzWlcxbGJuUkhjbTkxY0NobGJHVnRaVzUwY3lrcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJqYjNWdWRDaGxiR1Z0Wlc1MGN5NXliM2R6S1R0Y2JpQWdJQ0FnSUNBZ2ZTQmxiSE5sSUdsbUlDaHBjMGR5YjNWd2FXNW5LR1ZzWlcxbGJuUnpLU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdiR1YwSUhKbGMzVnNkQ0E5SURBN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JtYjNJZ0tHeGxkQ0J6ZFdKbmNtOTFjQ0J2WmlCbGJHVnRaVzUwY3lrZ2NtVnpkV3gwSUNzOUlHTnZkVzUwS0hOMVltZHliM1Z3TG5KdmQzTXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhKbGMzVnNkRHRjYmlBZ0lDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCbGJHVnRaVzUwY3k1c1pXNW5kR2c3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0I5WEc1Y2JpQWdJQ0F2S2lvZ1VtVmpkWEp6YVhabGJIa2djMnhwWTJVZ1lTQm5jbTkxY0dsdVp5d2djSEpsYzJWeWRtbHVaeUIwYUdVZ1ozSnZkWEFnYzNSeWRXTjBkWEpsSUhSb1lYUWdZMjl1ZEdGcGJuTWdaV3hsYldWdWRITWdXM04wWVhKMExpNHVaVzVrS1M0Z0tpOWNiaUFnSUNCbGVIQnZjblFnWm5WdVkzUnBiMjRnYzJ4cFkyVThWRDRvWld4bGJXVnVkSE02SUVkeWIzVndhVzVuUEZRK0xDQnpkR0Z5ZERvZ2JuVnRZbVZ5TENCbGJtUTZJRzUxYldKbGNpazZJRWR5YjNWd2FXNW5QRlErSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLR1Z1WkNBOFBTQnpkR0Z5ZENrZ2NtVjBkWEp1SUZ0ZE8xeHVJQ0FnSUNBZ0lDQnBaaUFvYVhOTVpXRm1LR1ZzWlcxbGJuUnpLU2tnY21WMGRYSnVJR1ZzWlcxbGJuUnpMbk5zYVdObEtITjBZWEowTENCbGJtUXBPMXh1WEc0Z0lDQWdJQ0FnSUM4dklFWnBibVFnZEdobElHWnBjbk4wSUdkeWIzVndJSFJvWVhRZ1kyOXVkR0ZwYm5NZ2FXNWtaWGdnWUhOMFlYSjBZQzVjYmlBZ0lDQWdJQ0FnYkdWMElHbHVaR1Y0SUQwZ01DeGNiaUFnSUNBZ0lDQWdJQ0FnSUhObFpXNGdQU0F3TzF4dUlDQWdJQ0FnSUNCM2FHbHNaU0FvYVc1a1pYZ2dQQ0JsYkdWdFpXNTBjeTVzWlc1bmRHZ2dKaVlnYzJWbGJpQXJJR052ZFc1MEtHVnNaVzFsYm5SelcybHVaR1Y0WFNrZ1BEMGdjM1JoY25RcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUhObFpXNGdLejBnWTI5MWJuUW9aV3hsYldWdWRITmJhVzVrWlhoZEtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUdsdVpHVjRLeXM3WEc0Z0lDQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ0lDQXZMeUJ6ZEdGeWRDQjNZWE1nWjNKbFlYUmxjaUIwYUdGdUlIUm9aU0JsYm5ScGNtVWdiR1Z1WjNSb0lHOW1JSFJvWlNCbmNtOTFjR2x1WjNNdVhHNGdJQ0FnSUNBZ0lHbG1JQ2hwYm1SbGVDQStQU0JsYkdWdFpXNTBjeTVzWlc1bmRHZ3BJSEpsZEhWeWJpQmJYVHRjYmx4dUlDQWdJQ0FnSUNCamIyNXpkQ0J5WlhOMWJIUTZJSHNnYTJWNU9pQk1hWFJsY21Gc095QnliM2R6T2lCSGNtOTFjR2x1Wnp4VVBpQjlXMTBnUFNCYlhUdGNiaUFnSUNBZ0lDQWdkMmhwYkdVZ0tHbHVaR1Y0SUR3Z1pXeGxiV1Z1ZEhNdWJHVnVaM1JvSUNZbUlITmxaVzRnUENCbGJtUXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHTnZibk4wSUdkeWIzVndJRDBnWld4bGJXVnVkSE5iYVc1a1pYaGRPMXh1SUNBZ0lDQWdJQ0FnSUNBZ1kyOXVjM1FnWjNKdmRYQlRhWHBsSUQwZ1kyOTFiblFvWjNKdmRYQXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ1kyOXVjM1FnWjNKdmRYQlRkR0Z5ZENBOUlFMWhkR2d1YldGNEtITmxaVzRzSUhOMFlYSjBLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHTnZibk4wSUdkeWIzVndSVzVrSUQwZ1RXRjBhQzV0YVc0b1ozSnZkWEJUYVhwbElDc2djMlZsYml3Z1pXNWtLVHRjYmx4dUlDQWdJQ0FnSUNBZ0lDQWdjbVZ6ZFd4MExuQjFjMmdvZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUd0bGVUb2daM0p2ZFhBdWEyVjVMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEp2ZDNNNklITnNhV05sS0dkeWIzVndMbkp2ZDNNc0lHZHliM1Z3VTNSaGNuUWdMU0J6WldWdUxDQm5jbTkxY0VWdVpDQXRJSE5sWlc0cExGeHVJQ0FnSUNBZ0lDQWdJQ0FnZlNrN1hHNWNiaUFnSUNBZ0lDQWdJQ0FnSUhObFpXNGdLejBnWjNKdmRYQlRhWHBsTzF4dUlDQWdJQ0FnSUNBZ0lDQWdhVzVrWlhnckt6dGNiaUFnSUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJ5WlhOMWJIUTdYRzRnSUNBZ2ZWeHVmVnh1SWl3Z0lpOHFLbHh1SUNvZ1FHMXZaSFZzWlNCaGNHbGNiaUFxTDF4dUx5b3FYRzRnS2lBZ1JuVnVZM1JwYjI1aGJDQnlaWFIxY200Z2RIbHdaU0JtYjNJZ1pYSnliM0lnYUdGdVpHeHBibWN1WEc0Z0tpQkFhR2xrWkdWdVhHNGdLaUFxTDF4dVpYaHdiM0owSUdOc1lYTnpJRk4xWTJObGMzTThWQ3dnUlQ0Z2UxeHVJQ0FnSUhCMVlteHBZeUJ6ZFdOalpYTnpablZzT2lCMGNuVmxPMXh1WEc0Z0lDQWdjSFZpYkdsaklHTnZibk4wY25WamRHOXlLSEIxWW14cFl5QjJZV3gxWlRvZ1ZDa2dlMXh1SUNBZ0lDQWdJQ0IwYUdsekxuTjFZMk5sYzNObWRXd2dQU0IwY25WbE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUhCMVlteHBZeUJ0WVhBOFZUNG9aam9nS0dFNklGUXBJRDArSUZVcE9pQlNaWE4xYkhROFZTd2dSVDRnZTF4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnYm1WM0lGTjFZMk5sYzNNb1ppaDBhR2x6TG5aaGJIVmxLU2s3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdjSFZpYkdsaklHWnNZWFJOWVhBOFZUNG9aam9nS0dFNklGUXBJRDArSUZKbGMzVnNkRHhWTENCRlBpazZJRkpsYzNWc2REeFZMQ0JGUGlCN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCbUtIUm9hWE11ZG1Gc2RXVXBPMXh1SUNBZ0lIMWNibHh1SUNBZ0lIQjFZbXhwWXlCdFlYQkZjbkk4VlQ0b1pqb2dLR1U2SUVVcElEMCtJRlVwT2lCU1pYTjFiSFE4VkN3Z1ZUNGdlMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdkR2hwY3lCaGN5QmhibmtnWVhNZ1VtVnpkV3gwUEZRc0lGVStPMXh1SUNBZ0lIMWNibHh1SUNBZ0lIQjFZbXhwWXlCaWFXMWhjRHhVTWl3Z1JUSStLSE4xWTJNNklDaGhPaUJVS1NBOVBpQlVNaXdnWDJaaGFXdzZJQ2hpT2lCRktTQTlQaUJGTWlrNklGSmxjM1ZzZER4VU1pd2dSVEkrSUh0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUhSb2FYTXViV0Z3S0hOMVkyTXBJR0Z6SUdGdWVUdGNiaUFnSUNCOVhHNWNiaUFnSUNCd2RXSnNhV01nYjNKRmJITmxLRjkyWVd4MVpUb2dWQ2s2SUZRZ2UxeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2RHaHBjeTUyWVd4MVpUdGNiaUFnSUNCOVhHNWNiaUFnSUNCd2RXSnNhV01nWTJGemREeFZQaWdwT2lCU1pYTjFiSFE4VlN3Z1JUNGdlMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdkR2hwY3lCaGN5Qmhibms3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdjSFZpYkdsaklHOXlSV3h6WlZSb2NtOTNLRjl0WlhOellXZGxQem9nS0dVNklFVXBJRDArSUhOMGNtbHVaeWs2SUZRZ2UxeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2RHaHBjeTUyWVd4MVpUdGNiaUFnSUNCOVhHNTlYRzVjYmk4cUtpQkdkVzVqZEdsdmJtRnNJSEpsZEhWeWJpQjBlWEJsSUdadmNpQmxjbkp2Y2lCb1lXNWtiR2x1Wnk1Y2JpQXFJRUJvYVdSa1pXNWNiaUFxTDF4dVpYaHdiM0owSUdOc1lYTnpJRVpoYVd4MWNtVThWQ3dnUlQ0Z2UxeHVJQ0FnSUhCMVlteHBZeUJ6ZFdOalpYTnpablZzT2lCbVlXeHpaVHRjYmx4dUlDQWdJSEIxWW14cFl5QmpiMjV6ZEhKMVkzUnZjaWh3ZFdKc2FXTWdaWEp5YjNJNklFVXBJSHRjYmlBZ0lDQWdJQ0FnZEdocGN5NXpkV05qWlhOelpuVnNJRDBnWm1Gc2MyVTdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2NIVmliR2xqSUcxaGNEeFZQaWhmWmpvZ0tHRTZJRlFwSUQwK0lGVXBPaUJTWlhOMWJIUThWU3dnUlQ0Z2UxeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2RHaHBjeUJoY3lCaGJua2dZWE1nUm1GcGJIVnlaVHhWTENCRlBqdGNiaUFnSUNCOVhHNWNiaUFnSUNCd2RXSnNhV01nWm14aGRFMWhjRHhWUGloZlpqb2dLR0U2SUZRcElEMCtJRkpsYzNWc2REeFZMQ0JGUGlrNklGSmxjM1ZzZER4VkxDQkZQaUI3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUIwYUdseklHRnpJR0Z1ZVNCaGN5QkdZV2xzZFhKbFBGVXNJRVUrTzF4dUlDQWdJSDFjYmx4dUlDQWdJSEIxWW14cFl5QnRZWEJGY25JOFZUNG9aam9nS0dVNklFVXBJRDArSUZVcE9pQlNaWE4xYkhROFZDd2dWVDRnZTF4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnYm1WM0lFWmhhV3gxY21Vb1ppaDBhR2x6TG1WeWNtOXlLU2s3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdjSFZpYkdsaklHSnBiV0Z3UEZReUxDQkZNajRvWDNOMVkyTTZJQ2hoT2lCVUtTQTlQaUJVTWl3Z1ptRnBiRG9nS0dJNklFVXBJRDArSUVVeUtUb2dVbVZ6ZFd4MFBGUXlMQ0JGTWo0Z2UxeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2RHaHBjeTV0WVhCRmNuSW9abUZwYkNrZ1lYTWdZVzU1TzF4dUlDQWdJSDFjYmx4dUlDQWdJSEIxWW14cFl5QnZja1ZzYzJVb2RtRnNkV1U2SUZRcE9pQlVJSHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJSFpoYkhWbE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUhCMVlteHBZeUJqWVhOMFBGVStLQ2s2SUZKbGMzVnNkRHhWTENCRlBpQjdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQjBhR2x6SUdGeklHRnVlVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQndkV0pzYVdNZ2IzSkZiSE5sVkdoeWIzY29iV1Z6YzJGblpUODZJQ2hsT2lCRktTQTlQaUJ6ZEhKcGJtY3BPaUJVSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLRzFsYzNOaFoyVXBJSFJvY205M0lHNWxkeUJGY25KdmNpaHRaWE56WVdkbEtIUm9hWE11WlhKeWIzSXBLVHRjYmlBZ0lDQWdJQ0FnWld4elpTQjBhSEp2ZHlCdVpYY2dSWEp5YjNJb1hDSmNJaUFySUhSb2FYTXVaWEp5YjNJcE8xeHVJQ0FnSUgxY2JuMWNibHh1THlvcVhHNGdLaUJCSUcxdmJtRmthV01nY21WemRXeDBJSFI1Y0dVZ2QyaHBZMmdnYzNSdmNtVnpJR1ZwZEdobGNpQmNJbk4xWTJObGMzTmNJaUJ2Y2lCY0ltWmhhV3gxY21WY0lpNGdRVzRnWVd4MFpYSnVZWFJwZG1VZ2FHRnVaR3hwYm1jZ1pYaGpaWEIwYVc5dVlXd2dZbVZvWVhacGIzSmNiaUFxSUdKNUlIVnphVzVuSUhSb1pTQnlaWFIxY200Z2RtRnNkV1VnYVc1emRHVmhaQ0J2WmlCaGJpQmxlR05sY0hScGIyNHVYRzRnS2k5Y2JtVjRjRzl5ZENCMGVYQmxJRkpsYzNWc2REeFVMQ0JGUGlBOUlGTjFZMk5sYzNNOFZDd2dSVDRnZkNCR1lXbHNkWEpsUEZRc0lFVStPMXh1WEc0dktpcGNiaUFxSUVCb2FXUmtaVzVjYmlBcUlFMXZibUZrYVdNZ0oxSmxjM1ZzZENjZ2RIbHdaU0IzYUdsamFDQmxibU5oY0hOMWJHRjBaWE1nZDJobGRHaGxjaUJoSUhCeWIyTmxaSFZ5WlNCemRXTmpaV1ZrWldRZ2IzSWdabUZwYkdWa0xDQmhjeUIzWld4c0lHRnpJR2wwSjNNZ2NtVjBkWEp1SUhaaGJIVmxMbHh1SUNvdlhHNWxlSEJ2Y25RZ2JtRnRaWE53WVdObElGSmxjM1ZzZENCN1hHNGdJQ0FnTHlvcUlFTnZibk4wY25WamRDQmhJRzVsZHlCemRXTmpaWE56SUhKbGMzVnNkQ0IzY21Gd2NHbHVaeUIwYUdVZ1oybDJaVzRnZG1Gc2RXVXVJQ292WEc0Z0lDQWdaWGh3YjNKMElHWjFibU4wYVc5dUlITjFZMk5sYzNNOFZDd2dSVDRvZG1Gc2RXVTZJRlFwT2lCU1pYTjFiSFE4VkN3Z1JUNGdlMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdibVYzSUZOMVkyTmxjM01vZG1Gc2RXVXBPMXh1SUNBZ0lIMWNibHh1SUNBZ0lDOHFLaUJEYjI1emRISjFZM1FnWVNCdVpYY2dabUZwYkhWeVpTQjJZV3gxWlNCM2NtRndjR2x1WnlCMGFHVWdaMmwyWlc0Z1pYSnliM0l1SUNvdlhHNGdJQ0FnWlhod2IzSjBJR1oxYm1OMGFXOXVJR1poYVd4MWNtVThWQ3dnUlQ0b1pYSnliM0k2SUVVcE9pQlNaWE4xYkhROFZDd2dSVDRnZTF4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnYm1WM0lFWmhhV3gxY21Vb1pYSnliM0lwTzF4dUlDQWdJSDFjYmx4dUlDQWdJQzhxS2lCS2IybHVJSFIzYnlCeVpYTjFiSFJ6SUhkcGRHZ2dZU0JpYVMxbWRXNWpkR2x2YmlCaGJtUWdjbVYwZFhKdUlHRWdibVYzSUhKbGMzVnNkQzRnS2k5Y2JpQWdJQ0JsZUhCdmNuUWdablZ1WTNScGIyNGdabXhoZEUxaGNESThWREVzSUZReUxDQlBMQ0JGUGloY2JpQWdJQ0FnSUNBZ1ptbHljM1E2SUZKbGMzVnNkRHhVTVN3Z1JUNHNYRzRnSUNBZ0lDQWdJSE5sWTI5dVpEb2dVbVZ6ZFd4MFBGUXlMQ0JGUGl4Y2JpQWdJQ0FnSUNBZ1pqb2dLR0U2SUZReExDQmlPaUJVTWlrZ1BUNGdVbVZ6ZFd4MFBFOHNJRVUrWEc0Z0lDQWdLVG9nVW1WemRXeDBQRThzSUVVK0lIdGNiaUFnSUNBZ0lDQWdhV1lnS0dacGNuTjBMbk4xWTJObGMzTm1kV3dwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJR2xtSUNoelpXTnZibVF1YzNWalkyVnpjMloxYkNrZ2NtVjBkWEp1SUdZb1ptbHljM1F1ZG1Gc2RXVXNJSE5sWTI5dVpDNTJZV3gxWlNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JsYkhObElISmxkSFZ5YmlCbVlXbHNkWEpsS0hObFkyOXVaQzVsY25KdmNpazdYRzRnSUNBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnWm1GcGJIVnlaU2htYVhKemRDNWxjbkp2Y2lrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNCOVhHNWNiaUFnSUNBdktpb2dTbTlwYmlCMGQyOGdjbVZ6ZFd4MGN5QjNhWFJvSUdFZ1lta3RablZ1WTNScGIyNGdZVzVrSUhKbGRIVnliaUJoSUc1bGR5QnlaWE4xYkhRdUlDb3ZYRzRnSUNBZ1pYaHdiM0owSUdaMWJtTjBhVzl1SUcxaGNESThWREVzSUZReUxDQlBMQ0JGUGloY2JpQWdJQ0FnSUNBZ1ptbHljM1E2SUZKbGMzVnNkRHhVTVN3Z1JUNHNYRzRnSUNBZ0lDQWdJSE5sWTI5dVpEb2dVbVZ6ZFd4MFBGUXlMQ0JGUGl4Y2JpQWdJQ0FnSUNBZ1pqb2dLR0U2SUZReExDQmlPaUJVTWlrZ1BUNGdUMXh1SUNBZ0lDazZJRkpsYzNWc2REeFBMQ0JGUGlCN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCbWJHRjBUV0Z3TWlobWFYSnpkQ3dnYzJWamIyNWtMQ0FvWVN3Z1lpa2dQVDRnYzNWalkyVnpjeWhtS0dFc0lHSXBLU2s3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdMeW9xSUUxaGNDQmhJR1poYVd4aFlteGxJR1oxYm1OMGFXOXVJRzkyWlhJZ1lXeHNJR1ZzWlcxbGJuUnpJR2x1SUhSb1pTQnNhWE4wTENCeVpYUjFjbTVwYm1jZ1pXRnliSGtnYjI0Z1ptRnBiSFZ5WlM0Z0tpOWNiaUFnSUNCbGVIQnZjblFnWm5WdVkzUnBiMjRnYldGd1FXeHNQRlFzSUU4c0lFVStLR2x1Y0hWME9pQkpkR1Z5WVdKc1pUeFVQaXdnWm5WdVl6b2dLR2x1Y0hWME9pQlVLU0E5UGlCU1pYTjFiSFE4VHl3Z1JUNHBPaUJTWlhOMWJIUThUMXRkTENCRlBpQjdYRzRnSUNBZ0lDQWdJR052Ym5OMElISmxjM1ZzZERvZ1QxdGRJRDBnVzEwN1hHNGdJQ0FnSUNBZ0lHWnZjaUFvWTI5dWMzUWdaV3hsYldWdWRDQnZaaUJwYm5CMWRDa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ1kyOXVjM1FnYjNWMGNIVjBJRDBnWm5WdVl5aGxiR1Z0Wlc1MEtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDZ2hiM1YwY0hWMExuTjFZMk5sYzNObWRXd3BJSEpsZEhWeWJpQnZkWFJ3ZFhRdVkyRnpkQ2dwTzF4dVhHNGdJQ0FnSUNBZ0lDQWdJQ0J5WlhOMWJIUXVjSFZ6YUNodmRYUndkWFF1ZG1Gc2RXVXBPMXh1SUNBZ0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUZKbGMzVnNkQzV6ZFdOalpYTnpLSEpsYzNWc2RDazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ0x5b3FJRU5oZEdOb0lHRnVlU0JsY25KdmNuTWdhVzRnWVNCallXeHNMQ0J5WlhSMWNtNXBibWNnWVNCeVpYTjFiSFFnYVc1emRHVmhaQzRnS2k5Y2JpQWdJQ0JsZUhCdmNuUWdablZ1WTNScGIyNGdkSEo1YVc1blBGUStLR05oYkd3NklDZ3BJRDArSUZRcE9pQlNaWE4xYkhROFZDd2dSWEp5YjNJK0lIdGNiaUFnSUNBZ0lDQWdkSEo1SUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQlNaWE4xYkhRdWMzVmpZMlZ6Y3loallXeHNLQ2twTzF4dUlDQWdJQ0FnSUNCOUlHTmhkR05vSUNobGNuSnZjaWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlGSmxjM1ZzZEM1bVlXbHNkWEpsS0dWeWNtOXlLVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJSDFjYmx4dUlDQWdJQzhxS2lCRGIyNTJaWEowSUdFZ2NISnZiV2x6WlNCM2FHbGphQ0J0WVhrZ2RHaHliM2NnYVc1MGJ5QmhJSEJ5YjIxcGMyVWdkMmhwWTJnZ2NtVjBkWEp1Y3lCaElISmxjM1ZzZENCdlppQjBhR1VnYzNWalkyVnpjMloxYkNCMllXeDFaU0J2Y2lCaGJpQmxjbkp2Y2k0Z0tpOWNiaUFnSUNCbGVIQnZjblFnWVhONWJtTWdablZ1WTNScGIyNGdZWE41Ym1NOFZENG9jSEp2YldselpUb2dVSEp2YldselpUeFVQaWs2SUZCeWIyMXBjMlU4VW1WemRXeDBQRlFzSUVWeWNtOXlQajRnZTF4dUlDQWdJQ0FnSUNCMGNua2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUZKbGMzVnNkQzV6ZFdOalpYTnpLR0YzWVdsMElIQnliMjFwYzJVcE8xeHVJQ0FnSUNBZ0lDQjlJR05oZEdOb0lDaGxjbkp2Y2lrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJRkpsYzNWc2RDNW1ZV2xzZFhKbEtHVnljbTl5S1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JuMWNiaUlzSUNKcGJYQnZjblFnZXlCU1pYTjFiSFFnZlNCbWNtOXRJRndpWVhCcEwzSmxjM1ZzZEZ3aU8xeHVYRzR2S2lvZ1UzUmhkR2xqSUhObGRDQmxiR1Z0Wlc1MElIZG9hV05vSUcxaGRHTm9aWE1nWlhabGNubDBhR2x1Wnk0Z0tpOWNibVY0Y0c5eWRDQjBlWEJsSUVWMlpYSjVkR2hwYm1jZ1BTQjdJSFI1Y0dVNklGd2laWFpsY25sMGFHbHVaMXdpSUgwN1hHNHZLaW9nVTNSaGRHbGpJSE5sZENCbGJHVnRaVzUwSUhkb2FXTm9JRzFoZEdOb1pYTWdibTkwYUdsdVp5NGdLaTljYm1WNGNHOXlkQ0IwZVhCbElFNXZkR2hwYm1jZ1BTQjdJSFI1Y0dVNklGd2libTkwYUdsdVoxd2lJSDA3WEc0dktpb2dVMlYwSUhkb2FXTm9JRzFoZEdOb1pYTWdkR2hsSUc1bFoyRjBhVzl1SUc5bUlHRWdjMlYwTGlBcUwxeHVaWGh3YjNKMElIUjVjR1VnVG1WbllYUmxaRHhVUGlBOUlIc2dkSGx3WlRvZ1hDSnVaV2RoZEdWa1hDSTdJSFpoYkhWbE9pQlRaWFE4VkQ0Z2ZUdGNiaThxS2lCVFpYUWdkMmhwWTJnZ2JXRjBZMmhsY3lCaGJpQmhZM1IxWVd3Z2MyVjBJRzltSUhaaGJIVmxjeTRnSUNvdlhHNWxlSEJ2Y25RZ2RIbHdaU0JCZEc5dFBGUStJRDBnZXlCMGVYQmxPaUJjSW1GMGIyMWNJanNnZG1Gc2RXVTZJRk5sZER4VVBpQjlPMXh1WEc0dktpb2dRV0p6ZEhKaFkzUWdabWxzZEdWeUlIUjVjR1VnZDJocFkyZ2djbVZ3Y21WelpXNTBjeUIwYUdVZ2NtVnpkV3gwY3lCdlppQmhjSEJzZVdsdVp5Qm1hV3gwWlhJZ2IzQmxjbUYwYVc5dWN5QjBieUIwYUdVZ1pHRjBZU0J6ZEc5eVpTNGdLaTljYm1WNGNHOXlkQ0IwZVhCbElFWnBiSFJsY2p4VVBpQTlJRVYyWlhKNWRHaHBibWNnZkNCT2IzUm9hVzVuSUh3Z1FYUnZiVHhVUGlCOElFNWxaMkYwWldROFZENDdYRzVjYmk4cUtpQlZkR2xzYVhSNUlHWjFibU4wYVc5dWN5Qm1iM0lnWldabWFXTnBaVzUwYkhrZ2IzQmxjbUYwYVc1bklHOXVJR1pwYkhSbGNuTXVJQ292WEc1bGVIQnZjblFnYm1GdFpYTndZV05sSUVacGJIUmxjbk1nZTF4dUlDQWdJQzhxS2lCVGRHRjBhV01nWm1sc2RHVnlJSGRvYVdOb0lHMWhkR05vWlhNZ1pYWmxjbmwwYUdsdVp5NGdLaTljYmlBZ0lDQmxlSEJ2Y25RZ1kyOXVjM1FnUlZaRlVsbFVTRWxPUnpvZ1JYWmxjbmwwYUdsdVp5QTlJSHNnZEhsd1pUb2dYQ0psZG1WeWVYUm9hVzVuWENJZ2ZUdGNiaUFnSUNBdktpb2dVM1JoZEdsaklHWnBiSFJsY2lCM2FHbGphQ0J0WVhSamFHVnpJRzV2ZEdocGJtY3VJQ292WEc0Z0lDQWdaWGh3YjNKMElHTnZibk4wSUU1UFZFaEpUa2M2SUU1dmRHaHBibWNnUFNCN0lIUjVjR1U2SUZ3aWJtOTBhR2x1WjF3aUlIMDdYRzRnSUNBZ0x5b3FJRVZ0Y0hSNUlITmxkQ0JqYjI1emRHRnVkQzRnS2k5Y2JpQWdJQ0JsZUhCdmNuUWdZMjl1YzNRZ1JVMVFWRmxmVTBWVU9pQlRaWFE4WVc1NVBpQTlJRzVsZHlCVFpYUW9LVHRjYmx4dUlDQWdJQzhxS2lCRGIyNXpkSEoxWTNRZ1lTQnVaWGNnWVhSdmJTQm1hV3gwWlhJdUlDb3ZYRzRnSUNBZ1pYaHdiM0owSUdaMWJtTjBhVzl1SUdGMGIyMDhWRDRvYzJWME9pQlRaWFE4VkQ0cE9pQkdhV3gwWlhJOFZENGdlMXh1SUNBZ0lDQWdJQ0JwWmlBb2MyVjBMbk5wZW1VZ1BUMGdNQ2tnY21WMGRYSnVJRTVQVkVoSlRrYzdYRzVjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJSHNnZEhsd1pUb2dYQ0poZEc5dFhDSXNJSFpoYkhWbE9pQnpaWFFnZlR0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0F2S2lvZ1EyOXVjM1J5ZFdOMElHRWdabWxzZEdWeUlIUm9ZWFFnYldGMFkyaGxjeUJsZG1WeWVYUm9hVzVuSUc5eUlHNXZkR2hwYm1jdUlDb3ZYRzRnSUNBZ1pYaHdiM0owSUdaMWJtTjBhVzl1SUdOdmJuTjBZVzUwUEZRK0tIWmhiSFZsT2lCaWIyOXNaV0Z1S1RvZ1JtbHNkR1Z5UEZRK0lIdGNiaUFnSUNBZ0lDQWdhV1lnS0haaGJIVmxLU0J5WlhSMWNtNGdSVlpGVWxsVVNFbE9SenRjYmlBZ0lDQWdJQ0FnWld4elpTQnlaWFIxY200Z1RrOVVTRWxPUnp0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0F2S2lvZ1EyOXVjM1J5ZFdOMElHRWdibVYzSUdGMGIyMGdabWxzZEdWeUlIZG9hV05vSUdseklFNVBWRWhKVGtjZ2FXWWdjMlYwSUdseklIVnVaR1ZtYVc1bFpDNGdLaTljYmlBZ0lDQmxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2JuVnNiR0ZpYkdWQmRHOXRQRlErS0hObGREb2dVMlYwUEZRK0lId2dkVzVrWldacGJtVmtLVG9nUm1sc2RHVnlQRlErSUh0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUhObGRDQWhQVDBnZFc1a1pXWnBibVZrSUQ4Z1lYUnZiU2h6WlhRcElEb2dUazlVU0VsT1J6dGNiaUFnSUNCOVhHNWNiaUFnSUNBdktpb2dRMjl1YzNSeWRXTjBJR0VnYm1WbllYUmxaQ0JoZEc5dElHWnBiSFJsY2k0Z0tpOWNiaUFnSUNCbGVIQnZjblFnWm5WdVkzUnBiMjRnYm1WbllYUmxaRHhVUGloelpYUTZJRk5sZER4VVBpazZJRVpwYkhSbGNqeFVQaUI3WEc0Z0lDQWdJQ0FnSUdsbUlDaHpaWFF1YzJsNlpTQTlQU0F3S1NCeVpYUjFjbTRnUlZaRlVsbFVTRWxPUnp0Y2JseHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2V5QjBlWEJsT2lCY0ltNWxaMkYwWldSY0lpd2dkbUZzZFdVNklITmxkQ0I5TzF4dUlDQWdJSDFjYmx4dUlDQWdJQzhxS2lCUWNtOWtkV05sY3lCMGFHVWdibVZuWVhScGIyNGdiMllnWVNCbWFXeDBaWEl1SUNvdlhHNGdJQ0FnWlhod2IzSjBJR1oxYm1OMGFXOXVJRzVsWjJGMFpUeFVQaWhtYVd4MFpYSTZJRVpwYkhSbGNqeFVQaWs2SUVacGJIUmxjanhVUGlCN1hHNGdJQ0FnSUNBZ0lITjNhWFJqYUNBb1ptbHNkR1Z5TG5SNWNHVXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHTmhjMlVnWENKbGRtVnllWFJvYVc1blhDSTZYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlFNVBWRWhKVGtjN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JqWVhObElGd2libTkwYUdsdVoxd2lPbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQkZWa1ZTV1ZSSVNVNUhPMXh1SUNBZ0lDQWdJQ0FnSUNBZ1kyRnpaU0JjSW1GMGIyMWNJanBjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdibVZuWVhSbFpDaG1hV3gwWlhJdWRtRnNkV1VwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdZMkZ6WlNCY0ltNWxaMkYwWldSY0lqcGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z1lYUnZiU2htYVd4MFpYSXVkbUZzZFdVcE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVYRzRnSUNBZ0x5b3FJRVJsZEdWeWJXbHVaU0JwWmlCMGFHVWdaMmwyWlc0Z1ptbHNkR1Z5SUdseklHUmxabWx1YVhScGRtVnNlU0JqZFhKeVpXNTBiSGtnWlcxd2RIa3VJQ292WEc0Z0lDQWdaWGh3YjNKMElHWjFibU4wYVc5dUlHVnRjSFI1UEZRK0tHWnBiSFJsY2pvZ1JtbHNkR1Z5UEZRK0tUb2dZbTl2YkdWaGJpQjdYRzRnSUNBZ0lDQWdJSE4zYVhSamFDQW9abWxzZEdWeUxuUjVjR1VwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJR05oYzJVZ1hDSmxkbVZ5ZVhSb2FXNW5YQ0k2WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJR1poYkhObE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnWTJGelpTQmNJbTVsWjJGMFpXUmNJanBjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdabUZzYzJVN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JqWVhObElGd2lZWFJ2YlZ3aU9seHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCbWFXeDBaWEl1ZG1Gc2RXVXVjMmw2WlNBOVBTQXdPMXh1SUNBZ0lDQWdJQ0FnSUNBZ1kyRnpaU0JjSW01dmRHaHBibWRjSWpwY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnZEhKMVpUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lIMWNibHh1SUNBZ0lDOHFLaUJTWlhOdmJIWmxJR0VnZEc5d0xXeGxkbVZzSUdacGJIUmxjaUIzYVhSb0lIUm9aU0J6WlhRZ2IyWWdZV3hzSUdGMllXbHNZV0pzWlNCdlltcGxZM1J6TGlBcUwxeHVJQ0FnSUdWNGNHOXlkQ0JtZFc1amRHbHZiaUJ5WlhOdmJIWmxQRlErS0dacGJIUmxjam9nUm1sc2RHVnlQRlErTENCbGRtVnllWFJvYVc1bk9pQlRaWFE4VkQ0cE9pQlRaWFE4VkQ0Z2UxeHVJQ0FnSUNBZ0lDQnpkMmwwWTJnZ0tHWnBiSFJsY2k1MGVYQmxLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpZWE5sSUZ3aVpYWmxjbmwwYUdsdVoxd2lPbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQmxkbVZ5ZVhSb2FXNW5PMXh1SUNBZ0lDQWdJQ0FnSUNBZ1kyRnpaU0JjSW01dmRHaHBibWRjSWpwY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnUlUxUVZGbGZVMFZVTzF4dUlDQWdJQ0FnSUNBZ0lDQWdZMkZ6WlNCY0ltRjBiMjFjSWpwY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnWm1sc2RHVnlMblpoYkhWbE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnWTJGelpTQmNJbTVsWjJGMFpXUmNJanBjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdjMlYwU1c1MFpYSnpaV04wVG1WbllYUnBiMjRvWlhabGNubDBhR2x1Wnl3Z1ptbHNkR1Z5TG5aaGJIVmxLVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJSDFjYmx4dUlDQWdJQzhxS2lCSmJuUmxjbk5sWTNRZ1lXNGdhWFJsY21GaWJHVWdiMllnWm1sc2RHVnljeTRnS2k5Y2JpQWdJQ0JsZUhCdmNuUWdablZ1WTNScGIyNGdhVzUwWlhKelpXTjBQRlErS0dWc1pXMWxiblJ6T2lCSmRHVnlZV0pzWlR4R2FXeDBaWEk4VkQ0K0tUb2dSbWxzZEdWeVBGUStJSHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJR3hoZW5sSmJuUmxjbk5sWTNRb1pXeGxiV1Z1ZEhNc0lDaDRLU0E5UGlCNEtUdGNiaUFnSUNCOVhHNWNiaUFnSUNBdktpb2dTVzUwWlhKelpXTjBJR1pwYkhSbGNuTWdiR0Y2YVd4NUxDQnphRzl5ZEMxamFYSmpkV2wwYVc1bklHbG1JSFJvWlNCcGJuUmxjbk5sWTNScGIyNGdkMjkxYkdRZ2NISnZaSFZqWlNCT1QxUklTVTVITGlBcUwxeHVJQ0FnSUdWNGNHOXlkQ0JtZFc1amRHbHZiaUJzWVhwNVNXNTBaWEp6WldOMFBFa3NJRlErS0Z4dUlDQWdJQ0FnSUNCbGJHVnRaVzUwY3pvZ1NYUmxjbUZpYkdVOFNUNHNYRzRnSUNBZ0lDQWdJSEJ5YjJSMVkyVTZJQ2hwYm5CMWREb2dTU2tnUFQ0Z1JtbHNkR1Z5UEZRK0lId2dkVzVrWldacGJtVmtYRzRnSUNBZ0tUb2dSbWxzZEdWeVBGUStJSHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJR3hoZW5sR1lXbHNZV0pzWlVsdWRHVnljMlZqZEdsdmJpaGxiR1Z0Wlc1MGN5d2dLSGdwSUQwK0lGSmxjM1ZzZEM1emRXTmpaWE56S0hCeWIyUjFZMlVvZUNrcEtTNXZja1ZzYzJWVWFISnZkeWdwTzF4dUlDQWdJSDFjYmx4dUlDQWdJQzhxS2lCSmJuUmxjbk5sWTNRZ1ptbHNkR1Z5Y3lCc1lYcHBiSGtzSUhOb2IzSjBMV05wY21OMWFYUnBibWNnYVdZZ2RHaGxJR2x1ZEdWeWMyVmpkR2x2YmlCM2IzVnNaQ0J3Y205a2RXTmxJRTVQVkVoSlRrY3VJQ292WEc0Z0lDQWdaWGh3YjNKMElHWjFibU4wYVc5dUlHeGhlbmxHWVdsc1lXSnNaVWx1ZEdWeWMyVmpkR2x2Ymp4SkxDQlVMQ0JGUGloY2JpQWdJQ0FnSUNBZ1pXeGxiV1Z1ZEhNNklFbDBaWEpoWW14bFBFaytMRnh1SUNBZ0lDQWdJQ0J3Y205a2RXTmxPaUFvYVc1d2RYUTZJRWtwSUQwK0lGSmxjM1ZzZER4R2FXeDBaWEk4VkQ0Z2ZDQjFibVJsWm1sdVpXUXNJRVUrWEc0Z0lDQWdLVG9nVW1WemRXeDBQRVpwYkhSbGNqeFVQaXdnUlQ0Z2UxeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCaGRHOXRjem9nVTJWMFBGUStXMTBnUFNCYlhUdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2JtVm5ZWFJwYjI1ek9pQlRaWFE4VkQ1YlhTQTlJRnRkTzF4dUlDQWdJQ0FnSUNCbWIzSWdLR3hsZENCbGJHVnRaVzUwSUc5bUlHVnNaVzFsYm5SektTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCamIyNXpkQ0J0WVhsaVpVWnBiSFJsY2lBOUlIQnliMlIxWTJVb1pXeGxiV1Z1ZENrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb0lXMWhlV0psUm1sc2RHVnlMbk4xWTJObGMzTm1kV3dwSUhKbGRIVnliaUJ0WVhsaVpVWnBiSFJsY2k1allYTjBLQ2s3WEc1Y2JpQWdJQ0FnSUNBZ0lDQWdJR052Ym5OMElHWnBiSFJsY2lBOUlHMWhlV0psUm1sc2RHVnlMblpoYkhWbE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tHWnBiSFJsY2lBOVBUMGdkVzVrWldacGJtVmtLU0JqYjI1MGFXNTFaVHRjYmx4dUlDQWdJQ0FnSUNBZ0lDQWdMeThnUlcxd2RIa2dabWxzZEdWeWN5QjNhV3hzSUhCeWIyUjFZMlVnWVc0Z1pXMXdkSGtnYVc1MFpYSnpaV04wYVc5dUxseHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tHVnRjSFI1S0dacGJIUmxjaWtwSUhKbGRIVnliaUJTWlhOMWJIUXVjM1ZqWTJWemN5aE9UMVJJU1U1SEtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUM4dklFVldSVkpaVkVoSlRrY2dabWxzZEdWeWN5QmhjbVVnY21Wa2RXNWtZVzUwSUdsdUlFRk9SSE1zSUhOcmFYQWdkR2hsYlM1Y2JpQWdJQ0FnSUNBZ0lDQWdJR2xtSUNobWFXeDBaWEl1ZEhsd1pTQTlQVDBnWENKbGRtVnllWFJvYVc1blhDSXBJR052Ym5ScGJuVmxPMXh1WEc0Z0lDQWdJQ0FnSUNBZ0lDQXZMeUJYYVd4c0lHOXViSGtnWW1VZ2JHVm1kQ0IzYVhSb0lHRjBiMjF6SUc5eUlHNWxaMkYwYVc5dWN5NWNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDaG1hV3gwWlhJdWRIbHdaU0E5UFNCY0ltRjBiMjFjSWlrZ1lYUnZiWE11Y0hWemFDaG1hV3gwWlhJdWRtRnNkV1VwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdaV3h6WlNCcFppQW9abWxzZEdWeUxuUjVjR1VnUFQwZ1hDSnVaV2RoZEdWa1hDSXBJRzVsWjJGMGFXOXVjeTV3ZFhOb0tHWnBiSFJsY2k1MllXeDFaU2s3WEc0Z0lDQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ0lDQXZMeUJYWlNCemRHRnlkQ0IzYVhSb0lITnZiV1YwYUdsdVp5QnZaaUIwYUdVZ1ptOXliU0JoSUNZbUlHSWdKaVlnSVdNZ0ppWWdJV1F1WEc0Z0lDQWdJQ0FnSUM4dklFbG1JRzV2SUhSbGNtMXpMQ0IwYUdWdUlHVjJaWEo1ZEdocGJtY2dkMkZ6SUVWV1JWSlpWRWhKVGtjZ2MyOGdjbVYwZFhKdUlIUm9ZWFF1WEc0Z0lDQWdJQ0FnSUM4dklFbG1JRzl1YkhrZ1lYUnZiWE1zSUdwMWMzUWdhVzUwWlhKelpXTjBJSFJvWlcwZ0tHRWdKaVlnWWlrdVhHNGdJQ0FnSUNBZ0lDOHZJRWxtSUc5dWJIa2dibVZuWVhScGIyNXpMQ0IwYUdWdUlISmxkM0pwZEdVZ0lXTWdKaVlnSVdRZ1BUNGdJU2hqSUh4OElHUXBJR0Z1WkNCeVpYUjFjbTRnYm1WbllYUmxaQ2hqSUh4OElHUXBMbHh1SUNBZ0lDQWdJQ0F2THlCSlppQmliM1JvTENCamIyMXdkWFJsSUhnZ1BTQW9ZU0FtSmlCaUtTQmhibVFnZVNBOUlDaGpJSHg4SUdRcExDQmhibVFnZEdobGJpQmpiMjF3ZFhSbElIZ2dKaVlnSVhrdVhHNWNiaUFnSUNBZ0lDQWdhV1lnS0dGMGIyMXpMbXhsYm1kMGFDQTlQU0F3SUNZbUlHNWxaMkYwYVc5dWN5NXNaVzVuZEdnZ1BUMGdNQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlGSmxjM1ZzZEM1emRXTmpaWE56S0VWV1JWSlpWRWhKVGtjcE8xeHVJQ0FnSUNBZ0lDQjlJR1ZzYzJVZ2FXWWdLR0YwYjIxekxteGxibWQwYUNBK0lEQWdKaVlnYm1WbllYUnBiMjV6TG14bGJtZDBhQ0E5UFNBd0tTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnVW1WemRXeDBMbk4xWTJObGMzTW9ZWFJ2YlNoelpYUkpiblJsY25ObFkzUW9ZWFJ2YlhNcEtTazdYRzRnSUNBZ0lDQWdJSDBnWld4elpTQnBaaUFvWVhSdmJYTXViR1Z1WjNSb0lEMDlJREFnSmlZZ2JtVm5ZWFJwYjI1ekxteGxibWQwYUNBK0lEQXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCU1pYTjFiSFF1YzNWalkyVnpjeWh1WldkaGRHVmtLSE5sZEZWdWFXOXVLRzVsWjJGMGFXOXVjeWtwS1R0Y2JpQWdJQ0FnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQlNaWE4xYkhRdWMzVmpZMlZ6Y3loR2FXeDBaWEp6TG1GMGIyMG9jMlYwU1c1MFpYSnpaV04wVG1WbllYUnBiMjRvYzJWMFNXNTBaWEp6WldOMEtHRjBiMjF6S1N3Z2MyVjBWVzVwYjI0b2JtVm5ZWFJwYjI1ektTa3BLVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJSDFjYmx4dUlDQWdJQzhxS2lCVmJtbHZiaUJtYVd4MFpYSnpMQ0J3Y205a2RXTnBibWNnWVNCemFXNW5iR1VnY21WemRXeDBJR1pwYkhSbGNpNGdLaTljYmlBZ0lDQmxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2RXNXBiMjQ4VkQ0b1ptbHNkR1Z5Y3pvZ1NYUmxjbUZpYkdVOFJtbHNkR1Z5UEZRK1BpazZJRVpwYkhSbGNqeFVQaUI3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJzWVhwNVZXNXBiMjRvWm1sc2RHVnljeXdnS0hncElEMCtJSGdwTzF4dUlDQWdJSDFjYmx4dUlDQWdJQzhxS2lCVmJtbHZiaUJtYVd4MFpYSnpJR3hoZW1sc2VTd2djMmh2Y25RdFkybHlZM1ZwZEdsdVp5QnBaaUIwYUdVZ2RXNXBiMjRnZDI5MWJHUWdjSEp2WkhWalpTQkZWa1ZTV1ZSSVNVNUhMaUFxTDF4dUlDQWdJR1Y0Y0c5eWRDQm1kVzVqZEdsdmJpQnNZWHA1Vlc1cGIyNDhTU3dnVkQ0b1pXeGxiV1Z1ZEhNNklFbDBaWEpoWW14bFBFaytMQ0J3Y205a2RXTmxPaUFvYVc1d2RYUTZJRWtwSUQwK0lFWnBiSFJsY2p4VVBpQjhJSFZ1WkdWbWFXNWxaQ2s2SUVacGJIUmxjanhVUGlCN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCc1lYcDVSbUZwYkdGaWJHVlZibWx2YmlobGJHVnRaVzUwY3l3Z0tIZ3BJRDArSUZKbGMzVnNkQzV6ZFdOalpYTnpLSEJ5YjJSMVkyVW9lQ2twS1M1dmNrVnNjMlZVYUhKdmR5Z3BPMXh1SUNBZ0lIMWNibHh1SUNBZ0lDOHFLaUJWYm1sdmJpQm1hV3gwWlhKeklHeGhlbWxzZVN3Z2MyaHZjblF0WTJseVkzVnBkR2x1WnlCcFppQjBhR1VnZFc1cGIyNGdkMjkxYkdRZ2NISnZaSFZqWlNCRlZrVlNXVlJJU1U1SExpQXFMMXh1SUNBZ0lHVjRjRzl5ZENCbWRXNWpkR2x2YmlCc1lYcDVSbUZwYkdGaWJHVlZibWx2Ymp4SkxDQlVMQ0JGUGloY2JpQWdJQ0FnSUNBZ1pXeGxiV1Z1ZEhNNklFbDBaWEpoWW14bFBFaytMRnh1SUNBZ0lDQWdJQ0J3Y205a2RXTmxPaUFvYVc1d2RYUTZJRWtwSUQwK0lGSmxjM1ZzZER4R2FXeDBaWEk4VkQ0Z2ZDQjFibVJsWm1sdVpXUXNJRVUrWEc0Z0lDQWdLVG9nVW1WemRXeDBQRVpwYkhSbGNqeFVQaXdnUlQ0Z2UxeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCaGRHOXRjem9nVTJWMFBGUStXMTBnUFNCYlhUdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2JtVm5ZWFJwYjI1ek9pQlRaWFE4VkQ1YlhTQTlJRnRkTzF4dUlDQWdJQ0FnSUNCbWIzSWdLR3hsZENCbGJHVnRaVzUwSUc5bUlHVnNaVzFsYm5SektTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCamIyNXpkQ0J0WVhsaVpVWnBiSFJsY2lBOUlIQnliMlIxWTJVb1pXeGxiV1Z1ZENrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb0lXMWhlV0psUm1sc2RHVnlMbk4xWTJObGMzTm1kV3dwSUhKbGRIVnliaUJ0WVhsaVpVWnBiSFJsY2k1allYTjBLQ2s3WEc1Y2JpQWdJQ0FnSUNBZ0lDQWdJR052Ym5OMElHWnBiSFJsY2lBOUlHMWhlV0psUm1sc2RHVnlMblpoYkhWbE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tHWnBiSFJsY2lBOVBUMGdkVzVrWldacGJtVmtLU0JqYjI1MGFXNTFaVHRjYmx4dUlDQWdJQ0FnSUNBZ0lDQWdMeThnUlZaRlVsbFVTRWxPUnlCbWFXeDBaWEp6SUhkcGJHd2djSEp2WkhWalpTQmxkbVZ5ZVhSb2FXNW5JR0ZzZDJGNWN5NWNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDaG1hV3gwWlhJdWRIbHdaU0E5UFQwZ1hDSmxkbVZ5ZVhSb2FXNW5YQ0lwSUhKbGRIVnliaUJTWlhOMWJIUXVjM1ZqWTJWemN5aEZWa1ZTV1ZSSVNVNUhLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDOHZJRVZ0Y0hSNUlHWnBiSFJsY25NZ1lYSmxJSEpsWkhWdVpHRnVkQzVjYmlBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2hsYlhCMGVTaG1hV3gwWlhJcEtTQmpiMjUwYVc1MVpUdGNibHh1SUNBZ0lDQWdJQ0FnSUNBZ0x5OGdWMmxzYkNCdmJteDVJR0psSUd4bFpuUWdkMmwwYUNCaGRHOXRjeUJ2Y2lCdVpXZGhkR2x2Ym5NdVhHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb1ptbHNkR1Z5TG5SNWNHVWdQVDBnWENKaGRHOXRYQ0lwSUdGMGIyMXpMbkIxYzJnb1ptbHNkR1Z5TG5aaGJIVmxLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHVnNjMlVnYVdZZ0tHWnBiSFJsY2k1MGVYQmxJRDA5SUZ3aWJtVm5ZWFJsWkZ3aUtTQnVaV2RoZEdsdmJuTXVjSFZ6YUNobWFXeDBaWEl1ZG1Gc2RXVXBPMXh1SUNBZ0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUNBZ0x5OGdUM0lnYVhNZ1lTQmlhWFFnYUdGeVpHVnlJSFJvWVc0Z1FVNUVJSE5wYm1ObElIbHZkU0JqWVc0Z1pXNWtJSFZ3SUhkcGRHZ2djMk5sYm1GeWFXOXpJR3hwYTJVZ1lTQjhmQ0FoWWl3Z2QyaHBZMmdnWVhKbFhHNGdJQ0FnSUNBZ0lDOHZJRzV2ZENCamIyMXdkWFJoWW14bElHUnBjbVZqZEd4NUxpQkliM2RsZG1WeUxDQjNaU0JqWVc0Z1pHOGdZbTl2YkdWaGJpQnNiMmRwWXlCMGJ5QmhiSGRoZVhNZ2NISnZaSFZqWlNCaElITnBibWRzWlZ4dUlDQWdJQ0FnSUNBdkx5QnpaWFF1WEc0Z0lDQWdJQ0FnSUM4dklFbG1JRzV2ZEdocGJtY2dQVDRnYm05MGFHbHVaeXdnYm04Z2JtOXVMV1Z0Y0hSNUlHWnBiSFJsY25NdVhHNGdJQ0FnSUNBZ0lDOHZJRWxtSUdGMGIyMXpJR0oxZENCdWJ5QnVaV2RoZEdsdmJuTWdLR0VnZkh3Z1lpQjhmQ0JqS1NBOVBpQmpiMjF3ZFhSbElIVnVhVzl1TGx4dUlDQWdJQ0FnSUNBdkx5QkpaaUJ1WldkaGRHbHZibk1nWW5WMElHNXZJR0YwYjIxeklDZ2hZU0I4ZkNBaFlpQjhmQ0FoWXlrZ1BUNGdjbVYzY21sMFpTQmhjeUFoS0dFZ0ppWWdZaUFtSmlCaktTNWNiaUFnSUNBZ0lDQWdMeThnU1dZZ1ltOTBhRG9nS0dFZ2ZId2dZaUI4ZkNBaFl5QjhmQ0FoWkNrZ1BUNGdZMjl0WW1sdVpTQmxZV05vSUhCaGNuUWdhVzUwYnlBb1lTQjhmQ0JpS1NCOGZDQW9JV01nZkh3Z0lXUXBJRDArSUNoaElIeDhJR0lwSUh4OElDRW9ZeUFtSmlCa0tTQTlQaUJsSUh4OElDRm1JRDArSUNFb0lXVWdKaVlnWmlrZ2QyaHBZMmhjYmlBZ0lDQWdJQ0FnTHk4Z1kyRnVJR0psSUdOdmJYQjFkR1ZrSUhWemFXNW5JR2x1ZEdWeWMyVmpkR2x2YmlCc2IyZHBZeTVjYmx4dUlDQWdJQ0FnSUNCcFppQW9ZWFJ2YlhNdWJHVnVaM1JvSUQwOUlEQWdKaVlnYm1WbllYUnBiMjV6TG14bGJtZDBhQ0E5UFNBd0tTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnVW1WemRXeDBMbk4xWTJObGMzTW9UazlVU0VsT1J5azdYRzRnSUNBZ0lDQWdJSDBnWld4elpTQnBaaUFvWVhSdmJYTXViR1Z1WjNSb0lENGdNQ0FtSmlCdVpXZGhkR2x2Ym5NdWJHVnVaM1JvSUQwOUlEQXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCU1pYTjFiSFF1YzNWalkyVnpjeWhHYVd4MFpYSnpMbUYwYjIwb2MyVjBWVzVwYjI0b1lYUnZiWE1wS1NrN1hHNGdJQ0FnSUNBZ0lIMGdaV3h6WlNCcFppQW9ZWFJ2YlhNdWJHVnVaM1JvSUQwOUlEQWdKaVlnYm1WbllYUnBiMjV6TG14bGJtZDBhQ0ErSURBcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJTWlhOMWJIUXVjM1ZqWTJWemN5aEdhV3gwWlhKekxtNWxaMkYwWldRb2MyVjBTVzUwWlhKelpXTjBLRzVsWjJGMGFXOXVjeWtwS1R0Y2JpQWdJQ0FnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQlNaWE4xYkhRdWMzVmpZMlZ6Y3lodVpXZGhkR1ZrS0hObGRFbHVkR1Z5YzJWamRFNWxaMkYwYVc5dUtITmxkRWx1ZEdWeWMyVmpkQ2h1WldkaGRHbHZibk1wTENCelpYUlZibWx2YmloaGRHOXRjeWtwS1NrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNCOVhHNWNiaUFnSUNBdktpb2dSV1ptYVdOcFpXNTBiSGtnWTI5dGNIVjBaU0IwYUdVZ2FXNTBaWEp6WldOMGFXOXVJRzltSUhObGRITXVJQ292WEc0Z0lDQWdaWGh3YjNKMElHWjFibU4wYVc5dUlITmxkRWx1ZEdWeWMyVmpkRHhVUGloelpYUnpPaUJUWlhROFZENWJYU2s2SUZObGREeFVQaUI3WEc0Z0lDQWdJQ0FnSUdsbUlDaHpaWFJ6TG14bGJtZDBhQ0E5UFNBd0tTQnlaWFIxY200Z2JtVjNJRk5sZENncE8xeHVJQ0FnSUNBZ0lDQmxiSE5sSUdsbUlDaHpaWFJ6TG14bGJtZDBhQ0E5UFNBeEtTQnlaWFIxY200Z2MyVjBjMXN3WFR0Y2JseHVJQ0FnSUNBZ0lDQXZMeUJUYjNKMElHSjVJSE5wZW1VZ1lXNWtJR052YldKcGJtVWdjMjFoYkd4bGMzUWdZVzVrSUd4aGNtZGxjM1FnYzJWMElISmxjR1ZoZEdWa2JIa3VYRzRnSUNBZ0lDQWdJR3hsZENCemIzSjBaV1FnUFNBb1cxMGdZWE1nVTJWMFBGUStXMTBwTG1OdmJtTmhkQ2h6WlhSektTNXpiM0owS0NoaExDQmlLU0E5UGlCaExuTnBlbVVnTFNCaUxuTnBlbVVwTzF4dVhHNGdJQ0FnSUNBZ0lIZG9hV3hsSUNoemIzSjBaV1F1YkdWdVozUm9JRDRnTVNrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnWTI5dWMzUWdjbVZ6ZFd4MElEMGdibVYzSUZObGREeFVQaWdwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ2JHRnlaMlZ6ZENBOUlITnZjblJsWkM1d2IzQW9LU0U3WEc1Y2JpQWdJQ0FnSUNBZ0lDQWdJR1p2Y2lBb2JHVjBJR1ZzWlcxbGJuUWdiMllnYzI5eWRHVmtXekJkS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLR3hoY21kbGMzUXVhR0Z6S0dWc1pXMWxiblFwS1NCeVpYTjFiSFF1WVdSa0tHVnNaVzFsYm5RcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNBZ0lDQWdJQ0J6YjNKMFpXUmJNRjBnUFNCeVpYTjFiSFE3WEc0Z0lDQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2MyOXlkR1ZrV3pCZE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUM4cUtpQkZabVpwWTJsbGJuUnNlU0JqYjIxd2RYUmxJSFJvWlNCMWJtbHZiaUJ2WmlCelpYUnpMaUFxTDF4dUlDQWdJR1Y0Y0c5eWRDQm1kVzVqZEdsdmJpQnpaWFJWYm1sdmJqeFVQaWh6WlhSek9pQlRaWFE4VkQ1YlhTazZJRk5sZER4VVBpQjdYRzRnSUNBZ0lDQWdJR2xtSUNoelpYUnpMbXhsYm1kMGFDQTlQU0F3S1NCeVpYUjFjbTRnYm1WM0lGTmxkQ2dwTzF4dUlDQWdJQ0FnSUNCbGJITmxJR2xtSUNoelpYUnpMbXhsYm1kMGFDQTlQU0F4S1NCeVpYUjFjbTRnYzJWMGMxc3dYVHRjYmx4dUlDQWdJQ0FnSUNBdkx5QkpKMjBnYm05MElITjFjbVVnYVdZZ2RHaGxjbVVnYVhNZ1lXNTVJSFZ6WldaMWJDQnZjSFJwYldsNllYUnBiMjRnWm05eUlITmxkQ0IxYm1sdmJuTXNJSE52SUdwMWMzUWdZV1JrSUhSb1pXMGdZV3hzSUVrZ1ozVmxjM011WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJSEpsYzNWc2RDQTlJRzVsZHlCVFpYUThWRDRvS1R0Y2JpQWdJQ0FnSUNBZ1ptOXlJQ2hqYjI1emRDQnpaWFFnYjJZZ2MyVjBjeWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdabTl5SUNoamIyNXpkQ0JsYkdWdFpXNTBJRzltSUhObGRDa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsYzNWc2RDNWhaR1FvWld4bGJXVnVkQ2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnY21WemRXeDBPMXh1SUNBZ0lIMWNibHh1SUNBZ0lDOHFLaUJGWm1acFkybGxiblJzZVNCamIyMXdkWFJsSUdGMGIyMGdKaVlnSVc1bFoyRjBaV1F1SUNvdlhHNGdJQ0FnWlhod2IzSjBJR1oxYm1OMGFXOXVJSE5sZEVsdWRHVnljMlZqZEU1bFoyRjBhVzl1UEZRK0tHRjBiMjA2SUZObGREeFVQaXdnYm1WbllYUmxaRG9nVTJWMFBGUStLVG9nVTJWMFBGUStJSHRjYmlBZ0lDQWdJQ0FnYVdZZ0tHRjBiMjB1YzJsNlpTQStJRzVsWjJGMFpXUXVjMmw2WlNrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnTHk4Z1ZFOUVUem9nVjI5MWJHUWdZbVVnYm1salpTQjBieUJoZG05cFpDQjBhR1VnWTI5d2VTd2djMmx1WTJVZ1NTZHRJRzV2ZENCemRYSmxJR2wwSjNNZ1lXNTVJR1poYzNSbGNpQjNhWFJvSUhSb1pTQmpiM0I1TGx4dUlDQWdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ2NtVnpkV3gwSUQwZ2JtVjNJRk5sZENoaGRHOXRLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHWnZjaUFvYkdWMElHVnNaVzFsYm5RZ2IyWWdibVZuWVhSbFpDa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsYzNWc2RDNWtaV3hsZEdVb1pXeGxiV1Z1ZENrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQnlaWE4xYkhRN1hHNGdJQ0FnSUNBZ0lIMGdMeW9nWVhSdmJTNXphWHBsSUR3Z2JtVm5ZWFJwYjI0dWMybDZaU0FxTHlCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHTnZibk4wSUhKbGMzVnNkQ0E5SUc1bGR5QlRaWFE4VkQ0b0tUdGNiaUFnSUNBZ0lDQWdJQ0FnSUdadmNpQW9iR1YwSUdWc1pXMWxiblFnYjJZZ1lYUnZiU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDaHVaV2RoZEdWa0xtaGhjeWhsYkdWdFpXNTBLU2tnWTI5dWRHbHVkV1U3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY21WemRXeDBMbUZrWkNobGJHVnRaVzUwS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlISmxjM1ZzZER0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JuMWNiaUlzSUNKcGJYQnZjblFnZXlCTWFYUmxjbUZzTENCTWFYUmxjbUZzY3lCOUlHWnliMjBnWENKbGVIQnlaWE56YVc5dUwyeHBkR1Z5WVd4Y0lqdGNibWx0Y0c5eWRDQjdJRVpwYkhSbGNuTWdmU0JtY205dElGd2lMaTltYVd4MFpYSnpYQ0k3WEc1Y2JpOHFLaUJEYjIxd1lYSnBjMjl1SUc5d1pYSmhkRzl5Y3lCM2FHbGphQ0I1YVdWc1pDQjBjblZsTDJaaGJITmxMaUFxTDF4dVpYaHdiM0owSUhSNWNHVWdRMjl0Y0dGeVpVOXdJRDBnWENJK1hDSWdmQ0JjSWo0OVhDSWdmQ0JjSWp3OVhDSWdmQ0JjSWp4Y0lpQjhJRndpUFZ3aUlId2dYQ0loUFZ3aU8xeHVMeW9xSUVGeWFYUm9iV1YwYVdNZ2IzQmxjbUYwYjNKeklIZG9hV05vSUhscFpXeGtJRzUxYldKbGNuTWdZVzVrSUc5MGFHVnlJSFpoYkhWbGN5NGdLaTljYm1WNGNHOXlkQ0IwZVhCbElFRnlhWFJvYldWMGFXTlBjQ0E5SUZ3aUsxd2lJSHdnWENJdFhDSWdmQ0JjSWlwY0lpQjhJRndpTDF3aUlId2dYQ0lsWENJZ2ZDQmNJaVpjSWlCOElGd2lmRndpTzF4dUx5b3FJRWx1WkdWNElHRWdkbUZzZFdVZ2FXNTBieUJoYm05MGFHVnlJSFpoYkhWbExpQXFMMXh1Wlhod2IzSjBJSFI1Y0dVZ1RHOW5hV05oYkU5d0lEMGdYQ0pwYm1SbGVGd2lPMXh1THlvcUlFRnNiQ0IyWVd4cFpDQmlhVzVoY25rZ2IzQmxjbUYwYjNKekxpQXFMMXh1Wlhod2IzSjBJSFI1Y0dVZ1FtbHVZWEo1VDNBZ1BTQkRiMjF3WVhKbFQzQWdmQ0JCY21sMGFHMWxkR2xqVDNBZ2ZDQk1iMmRwWTJGc1QzQTdYRzVjYm1WNGNHOXlkQ0IwZVhCbElFVjRjSEpsYzNOcGIyNGdQVnh1SUNBZ0lId2dUR2wwWlhKaGJFVjRjSEpsYzNOcGIyNWNiaUFnSUNCOElGWmhjbWxoWW14bFJYaHdjbVZ6YzJsdmJseHVJQ0FnSUh3Z1RHbHpkRVY0Y0hKbGMzTnBiMjVjYmlBZ0lDQjhJRTlpYW1WamRFVjRjSEpsYzNOcGIyNWNiaUFnSUNCOElFSnBibUZ5ZVU5d1JYaHdjbVZ6YzJsdmJseHVJQ0FnSUh3Z1JuVnVZM1JwYjI1RmVIQnlaWE56YVc5dVhHNGdJQ0FnZkNCTVlXMWlaR0ZGZUhCeVpYTnphVzl1WEc0Z0lDQWdmQ0JPWldkaGRHVmtSWGh3Y21WemMybHZianRjYmx4dUx5b3FJRXhwZEdWeVlXd2djbVZ3Y21WelpXNTBZWFJwYjI0Z2IyWWdjMjl0WlNCbWFXVnNaQ0IwZVhCbExpQXFMMXh1Wlhod2IzSjBJR2x1ZEdWeVptRmpaU0JNYVhSbGNtRnNSWGh3Y21WemMybHZiaUI3WEc0Z0lDQWdkSGx3WlRvZ1hDSnNhWFJsY21Gc1hDSTdYRzRnSUNBZ2RtRnNkV1U2SUV4cGRHVnlZV3c3WEc1OVhHNWNiaThxS2lCQklIWmhjbWxoWW14bElHWnBaV3hrSUdadmNpQmhJSFpoY21saFlteGxJSGRwZEdnZ1lTQm5hWFpsYmlCdVlXMWxMaUFxTDF4dVpYaHdiM0owSUdsdWRHVnlabUZqWlNCV1lYSnBZV0pzWlVWNGNISmxjM05wYjI0Z2UxeHVJQ0FnSUhSNWNHVTZJRndpZG1GeWFXRmliR1ZjSWp0Y2JpQWdJQ0J1WVcxbE9pQnpkSEpwYm1jN1hHNTlYRzVjYmk4cUtpQkJJR3hwYzNRZ2JHbDBaWEpoYkN3Z2QyaHBZMmdnYVhNZ1lXNGdiM0prWlhKbFpDQmpiMnhzWldOMGFXOXVJRzltSUdacFpXeGtjeTRnS2k5Y2JtVjRjRzl5ZENCcGJuUmxjbVpoWTJVZ1RHbHpkRVY0Y0hKbGMzTnBiMjRnZTF4dUlDQWdJSFI1Y0dVNklGd2liR2x6ZEZ3aU8xeHVJQ0FnSUhaaGJIVmxjem9nUlhod2NtVnpjMmx2Ymx0ZE8xeHVmVnh1WEc0dktpb2dRVzRnYjJKcVpXTjBJR3hwZEdWeVlXd3NJSGRvYVdOb0lHbHpJR0VnYldGd2NHbHVaeUJ2WmlCdVlXMWxJSFJ2SUdacFpXeGtMaUFxTDF4dVpYaHdiM0owSUdsdWRHVnlabUZqWlNCUFltcGxZM1JGZUhCeVpYTnphVzl1SUh0Y2JpQWdJQ0IwZVhCbE9pQmNJbTlpYW1WamRGd2lPMXh1SUNBZ0lIWmhiSFZsY3pvZ1VtVmpiM0prUEhOMGNtbHVaeXdnUlhod2NtVnpjMmx2Ymo0N1hHNTlYRzVjYmk4cUtpQkJJR0pwYm1GeWVTQnZjR1Z5WVhSdmNpQmxlSEJ5WlhOemFXOXVJSGRvYVdOb0lHTnZiV0pwYm1WeklIUjNieUJ6ZFdKdWIyUmxjeUJ6YjIxbGFHOTNMaUFxTDF4dVpYaHdiM0owSUdsdWRHVnlabUZqWlNCQ2FXNWhjbmxQY0VWNGNISmxjM05wYjI0Z2UxeHVJQ0FnSUhSNWNHVTZJRndpWW1sdVlYSjViM0JjSWp0Y2JpQWdJQ0JzWldaME9pQkZlSEJ5WlhOemFXOXVPMXh1SUNBZ0lISnBaMmgwT2lCRmVIQnlaWE56YVc5dU8xeHVJQ0FnSUc5d09pQkNhVzVoY25sUGNEdGNibjFjYmx4dUx5b3FJRUVnWm5WdVkzUnBiMjRnWlhod2NtVnpjMmx2YmlCM2FHbGphQ0JqWVd4c2N5QmhJR1oxYm1OMGFXOXVJRzl1SURBZ2IzSWdiVzl5WlNCaGNtZDFiV1Z1ZEhNdUlDb3ZYRzVsZUhCdmNuUWdhVzUwWlhKbVlXTmxJRVoxYm1OMGFXOXVSWGh3Y21WemMybHZiaUI3WEc0Z0lDQWdkSGx3WlRvZ1hDSm1kVzVqZEdsdmJsd2lPMXh1SUNBZ0lDOHFLaUJGYVhSb1pYSWdkR2hsSUc1aGJXVWdiMllnZEdobElHWjFibU4wYVc5dUlHSmxhVzVuSUdOaGJHeGxaQ0J2Y2lCaElFWjFibU4wYVc5dUlHOWlhbVZqZEM0Z0tpOWNiaUFnSUNCbWRXNWpPaUJGZUhCeVpYTnphVzl1TzF4dUlDQWdJQzhxS2lCVWFHVWdiR2x6ZENCdlppQmhjbWQxYldWdWRITWdZbVZwYm1jZ2NHRnpjMlZrSUhSdklIUm9aU0JtZFc1amRHbHZiaTRnS2k5Y2JpQWdJQ0JoY21kMWJXVnVkSE02SUVWNGNISmxjM05wYjI1YlhUdGNibjFjYmx4dUx5b3FJRUZ1SUdsdWJHbHVaU0JtZFc1amRHbHZiaUJoWTJObGNIUnBibWNnYjI1bElHOXlJRzF2Y21VZ1lYSm5kVzFsYm5SeklHRnVaQ0J3Y205a2RXTnBibWNnWVNCMllXeDFaUzRnS2k5Y2JtVjRjRzl5ZENCcGJuUmxjbVpoWTJVZ1RHRnRZbVJoUlhod2NtVnpjMmx2YmlCN1hHNGdJQ0FnZEhsd1pUb2dYQ0pzWVcxaVpHRmNJanRjYmlBZ0lDQXZLaW9nUVc0Z2IzSmtaWEpsWkNCc2FYTjBJRzltSUc1aGJXVmtJR0Z5WjNWdFpXNTBjeTRnS2k5Y2JpQWdJQ0JoY21kMWJXVnVkSE02SUhOMGNtbHVaMXRkTzF4dUlDQWdJQzhxS2lCVWFHVWdabWxsYkdRZ2QyaHBZMmdnZDJsc2JDQmlaU0JsZG1Gc2RXRjBaV1FnZFhOcGJtY2dkR2hsSUdGeVozVnRaVzUwY3lCcGJpQmpiMjUwWlhoMExpQXFMMXh1SUNBZ0lIWmhiSFZsT2lCRmVIQnlaWE56YVc5dU8xeHVmVnh1WEc0dktpb2dRVzRnWlhod2NtVnpjMmx2YmlCM2FHbGphQ0J1WldkaGRHVnpJSFJvWlNCMllXeDFaU0J2WmlCMGFHVWdiM0pwWjJsdVlXd2dabWxsYkdRdUlDb3ZYRzVsZUhCdmNuUWdhVzUwWlhKbVlXTmxJRTVsWjJGMFpXUkZlSEJ5WlhOemFXOXVJSHRjYmlBZ0lDQjBlWEJsT2lCY0ltNWxaMkYwWldSY0lqdGNibHh1SUNBZ0lDOHFLaUJVYUdVZ1kyaHBiR1FnWm1sbGJHUWdkRzhnYm1WbllYUmxMaUFxTDF4dUlDQWdJR05vYVd4a09pQkZlSEJ5WlhOemFXOXVPMXh1ZlZ4dVhHNWxlSEJ2Y25RZ2JtRnRaWE53WVdObElFVjRjSEpsYzNOcGIyNXpJSHRjYmlBZ0lDQXZLaW9nVkdobElHbHRjR3hwWTJsMElHWnBaV3hrSUhKbFptVnlaVzVqYVc1bklIUm9aU0JqZFhKeVpXNTBJR1pwWld4a0xpQXFMMXh1SUNBZ0lHVjRjRzl5ZENCamIyNXpkQ0JTVDFjNklITjBjbWx1WnlBOUlGd2lKSEp2ZDF3aU8xeHVYRzRnSUNBZ1pYaHdiM0owSUdaMWJtTjBhVzl1SUhaaGNtbGhZbXhsS0c1aGJXVTZJSE4wY21sdVp5azZJRlpoY21saFlteGxSWGh3Y21WemMybHZiaUI3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUI3SUhSNWNHVTZJRndpZG1GeWFXRmliR1ZjSWl3Z2JtRnRaU0I5TzF4dUlDQWdJSDFjYmx4dUlDQWdJR1Y0Y0c5eWRDQm1kVzVqZEdsdmJpQnNhWFJsY21Gc0tIWmhiSFZsT2lCTWFYUmxjbUZzS1RvZ1RHbDBaWEpoYkVWNGNISmxjM05wYjI0Z2UxeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2V5QjBlWEJsT2lCY0lteHBkR1Z5WVd4Y0lpd2dkbUZzZFdVZ2ZUdGNiaUFnSUNCOVhHNWNiaUFnSUNCbGVIQnZjblFnWm5WdVkzUnBiMjRnWW1sdVlYSjVUM0FvYkdWbWREb2dSWGh3Y21WemMybHZiaXdnYjNBNklFSnBibUZ5ZVU5d0xDQnlhV2RvZERvZ1JYaHdjbVZ6YzJsdmJpazZJRVY0Y0hKbGMzTnBiMjRnZTF4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnZXlCMGVYQmxPaUJjSW1KcGJtRnllVzl3WENJc0lHeGxablFzSUc5d0xDQnlhV2RvZENCOUlHRnpJRUpwYm1GeWVVOXdSWGh3Y21WemMybHZianRjYmlBZ0lDQjlYRzVjYmlBZ0lDQmxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2FXNWtaWGdvYjJKcU9pQkZlSEJ5WlhOemFXOXVMQ0JwYm1SbGVEb2dSWGh3Y21WemMybHZiaWs2SUVWNGNISmxjM05wYjI0Z2UxeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2V5QjBlWEJsT2lCY0ltSnBibUZ5ZVc5d1hDSXNJR3hsWm5RNklHOWlhaXdnY21sbmFIUTZJR2x1WkdWNExDQnZjRG9nWENKcGJtUmxlRndpSUgwN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnTHlvcUlFTnZiblpsY25SeklHRWdjM1J5YVc1bklHbHVJR1J2ZEMxdWIzUmhkR2x2YmkxbWIzSnRZWFFnYVc1MGJ5QmhJSFpoY21saFlteGxJSGRvYVdOb0lHbHVaR1Y0WlhNdUlDb3ZYRzRnSUNBZ1pYaHdiM0owSUdaMWJtTjBhVzl1SUdsdVpHVjRWbUZ5YVdGaWJHVW9ibUZ0WlRvZ2MzUnlhVzVuS1RvZ1JYaHdjbVZ6YzJsdmJpQjdYRzRnSUNBZ0lDQWdJR3hsZENCd1lYSjBjeUE5SUc1aGJXVXVjM0JzYVhRb1hDSXVYQ0lwTzF4dUlDQWdJQ0FnSUNCc1pYUWdjbVZ6ZFd4ME9pQkZlSEJ5WlhOemFXOXVJRDBnUlhod2NtVnpjMmx2Ym5NdWRtRnlhV0ZpYkdVb2NHRnlkSE5iTUYwcE8xeHVJQ0FnSUNBZ0lDQm1iM0lnS0d4bGRDQnBibVJsZUNBOUlERTdJR2x1WkdWNElEd2djR0Z5ZEhNdWJHVnVaM1JvT3lCcGJtUmxlQ3NyS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J5WlhOMWJIUWdQU0JGZUhCeVpYTnphVzl1Y3k1cGJtUmxlQ2h5WlhOMWJIUXNJRVY0Y0hKbGMzTnBiMjV6TG14cGRHVnlZV3dvY0dGeWRITmJhVzVrWlhoZEtTazdYRzRnSUNBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnY21WemRXeDBPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHVjRjRzl5ZENCbWRXNWpkR2x2YmlCc1lXMWlaR0VvWVhKbmN6b2djM1J5YVc1blcxMHNJSFpoYkhWbE9pQkZlSEJ5WlhOemFXOXVLVG9nVEdGdFltUmhSWGh3Y21WemMybHZiaUI3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUI3SUhSNWNHVTZJRndpYkdGdFltUmhYQ0lzSUdGeVozVnRaVzUwY3pvZ1lYSm5jeXdnZG1Gc2RXVWdmVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQmxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1puVnVZeWhtZFc1ak9pQkZlSEJ5WlhOemFXOXVMQ0JoY21kek9pQkZlSEJ5WlhOemFXOXVXMTBwT2lCR2RXNWpkR2x2YmtWNGNISmxjM05wYjI0Z2UxeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2V5QjBlWEJsT2lCY0ltWjFibU4wYVc5dVhDSXNJR1oxYm1Nc0lHRnlaM1Z0Wlc1MGN6b2dZWEpuY3lCOU8xeHVJQ0FnSUgxY2JseHVJQ0FnSUdWNGNHOXlkQ0JtZFc1amRHbHZiaUJzYVhOMEtIWmhiSFZsY3pvZ1JYaHdjbVZ6YzJsdmJsdGRLVG9nVEdsemRFVjRjSEpsYzNOcGIyNGdlMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdleUIwZVhCbE9pQmNJbXhwYzNSY0lpd2dkbUZzZFdWeklIMDdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ1pYaHdiM0owSUdaMWJtTjBhVzl1SUc5aWFtVmpkQ2gyWVd4MVpYTTZJRkpsWTI5eVpEeHpkSEpwYm1jc0lFVjRjSEpsYzNOcGIyNCtLVG9nVDJKcVpXTjBSWGh3Y21WemMybHZiaUI3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUI3SUhSNWNHVTZJRndpYjJKcVpXTjBYQ0lzSUhaaGJIVmxjeUI5TzF4dUlDQWdJSDFjYmx4dUlDQWdJR1Y0Y0c5eWRDQm1kVzVqZEdsdmJpQnVaV2RoZEdVb1kyaHBiR1E2SUVWNGNISmxjM05wYjI0cE9pQk9aV2RoZEdWa1JYaHdjbVZ6YzJsdmJpQjdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQjdJSFI1Y0dVNklGd2libVZuWVhSbFpGd2lMQ0JqYUdsc1pDQjlPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHVjRjRzl5ZENCbWRXNWpkR2x2YmlCcGMwTnZiWEJoY21WUGNDaHZjRG9nUW1sdVlYSjVUM0FwT2lCdmNDQnBjeUJEYjIxd1lYSmxUM0FnZTF4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnYjNBZ1BUMGdYQ0k4UFZ3aUlIeDhJRzl3SUQwOUlGd2lQRndpSUh4OElHOXdJRDA5SUZ3aVBsd2lJSHg4SUc5d0lEMDlJRndpUGoxY0lpQjhmQ0J2Y0NBOVBTQmNJaUU5WENJZ2ZId2diM0FnUFQwZ1hDSTlYQ0k3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdMeW9xSUZKbGRIVnlibk1nWVNCelpYUWdiMllnWVd4c0lIVnVZbTkxYm1RZ2RtRnlhV0ZpYkdWeklDaHBMbVV1TENCMllYSnBZV0pzWlhNZ2JtOTBJSEJ5YjNacFpHVmtJR0o1SUdCeWIzZGdMQ0JzWVcxaVpHRnpMQ0J2Y2lCemFXMXBiR0Z5TGlrZ0tpOWNiaUFnSUNCbGVIQnZjblFnWm5WdVkzUnBiMjRnZFc1aWIzVnVaRlpoY21saFlteGxjeWhsZUhCeU9pQkZlSEJ5WlhOemFXOXVMQ0JpYjNWdVpEb2dVMlYwUEhOMGNtbHVaejRnUFNCdVpYY2dVMlYwS0Z0U1QxZGRLU2s2SUZObGREeHpkSEpwYm1jK0lIdGNiaUFnSUNBZ0lDQWdjM2RwZEdOb0lDaGxlSEJ5TG5SNWNHVXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHTmhjMlVnWENKaWFXNWhjbmx2Y0Z3aU9seHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDOHZJRk53WldOcFlXd2dZMkZ6WlNCZ2NtOTNXMXdpTGk0dUxsd2lYV0F1WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tGeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JsZUhCeUxtOXdJRDA5UFNCY0ltbHVaR1Y0WENJZ0ppWmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWlhod2NpNXNaV1owTG5SNWNHVWdQVDBnWENKMllYSnBZV0pzWlZ3aUlDWW1YRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdWNGNISXViR1ZtZEM1dVlXMWxJRDA5SUZKUFZ5QW1KbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCbGVIQnlMbkpwWjJoMExuUjVjR1VnUFQwZ1hDSnNhWFJsY21Gc1hDSWdKaVpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1RHbDBaWEpoYkhNdWFYTlRkSEpwYm1jb1pYaHdjaTV5YVdkb2RDNTJZV3gxWlNsY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tHSnZkVzVrTG1oaGN5aGxlSEJ5TG5KcFoyaDBMblpoYkhWbEtTa2djbVYwZFhKdUlHNWxkeUJUWlhRb0tUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWld4elpTQnlaWFIxY200Z2JtVjNJRk5sZENoYlpYaHdjaTV5YVdkb2RDNTJZV3gxWlYwcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIMWNibHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQzh2SUU5MGFHVnlkMmx6WlNCcWRYTjBJR05vWldOcklHeGxablFnWVc1a0lISnBaMmgwTGx4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJHYVd4MFpYSnpMbk5sZEZWdWFXOXVLRnQxYm1KdmRXNWtWbUZ5YVdGaWJHVnpLR1Y0Y0hJdWJHVm1kQ3dnWW05MWJtUXBMQ0IxYm1KdmRXNWtWbUZ5YVdGaWJHVnpLR1Y0Y0hJdWNtbG5hSFFzSUdKdmRXNWtLVjBwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdZMkZ6WlNCY0ltWjFibU4wYVc5dVhDSTZYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlFWnBiSFJsY25NdWMyVjBWVzVwYjI0b1pYaHdjaTVoY21kMWJXVnVkSE11YldGd0tDaGhLU0E5UGlCMWJtSnZkVzVrVm1GeWFXRmliR1Z6S0dFc0lHSnZkVzVrS1NrcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnWTJGelpTQmNJbXhoYldKa1lWd2lPbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR052Ym5OMElHNWxkMEp2ZFc1a0lEMGdZbTkxYm1RZ1B6OGdibVYzSUZObGRDZ3BPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR1p2Y2lBb1kyOXVjM1FnWVhKbklHOW1JR1Y0Y0hJdVlYSm5kVzFsYm5SektTQnVaWGRDYjNWdVpDNWhaR1FvWVhKbktUdGNibHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQjFibUp2ZFc1a1ZtRnlhV0ZpYkdWektHVjRjSEl1ZG1Gc2RXVXNJRzVsZDBKdmRXNWtLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHTmhjMlVnWENKc2FYTjBYQ0k2WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJRVpwYkhSbGNuTXVjMlYwVlc1cGIyNG9aWGh3Y2k1MllXeDFaWE11YldGd0tDaDJLU0E5UGlCMWJtSnZkVzVrVm1GeWFXRmliR1Z6S0hZc0lHSnZkVzVrS1NrcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnWTJGelpTQmNJbTVsWjJGMFpXUmNJanBjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdkVzVpYjNWdVpGWmhjbWxoWW14bGN5aGxlSEJ5TG1Ob2FXeGtMQ0JpYjNWdVpDazdYRzRnSUNBZ0lDQWdJQ0FnSUNCallYTmxJRndpYjJKcVpXTjBYQ0k2WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJRVpwYkhSbGNuTXVjMlYwVlc1cGIyNG9UMkpxWldOMExuWmhiSFZsY3lobGVIQnlMblpoYkhWbGN5a3ViV0Z3S0NoMktTQTlQaUIxYm1KdmRXNWtWbUZ5YVdGaWJHVnpLSFlzSUdKdmRXNWtLU2twTzF4dUlDQWdJQ0FnSUNBZ0lDQWdZMkZ6WlNCY0luWmhjbWxoWW14bFhDSTZYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhV1lnS0dKdmRXNWtJQ1ltSUdKdmRXNWtMbWhoY3lobGVIQnlMbTVoYldVcEtTQnlaWFIxY200Z2JtVjNJRk5sZENncE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHVnNjMlVnY21WMGRYSnVJRzVsZHlCVFpYUW9XMlY0Y0hJdWJtRnRaVjBwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdZMkZ6WlNCY0lteHBkR1Z5WVd4Y0lqcGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2JtVjNJRk5sZENncE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVYRzRnSUNBZ0x5b3FJRkpsYm1SbGNpQmhiaUJsZUhCeVpYTnphVzl1SUdGeklHRWdjM1J5YVc1bkxpQXFMMXh1SUNBZ0lHVjRjRzl5ZENCbWRXNWpkR2x2YmlCMGIxTjBjbWx1WnlobGVIQnlPaUJGZUhCeVpYTnphVzl1S1RvZ2MzUnlhVzVuSUh0Y2JpQWdJQ0FnSUNBZ2MzZHBkR05vSUNobGVIQnlMblI1Y0dVcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUdOaGMyVWdYQ0ppYVc1aGNubHZjRndpT2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDaGxlSEJ5TG05d0lEMDlQU0JjSW1sdVpHVjRYQ0lwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlHQWtlM1J2VTNSeWFXNW5LR1Y0Y0hJdWJHVm1kQ2w5V3lSN2RHOVRkSEpwYm1jb1pYaHdjaTV5YVdkb2RDbDlYV0E3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUdBa2UzUnZVM1J5YVc1bktHVjRjSEl1YkdWbWRDbDlJQ1I3Wlhod2NpNXZjSDBnSkh0MGIxTjBjbWx1WnlobGVIQnlMbkpwWjJoMEtYMWdPMXh1SUNBZ0lDQWdJQ0FnSUNBZ1kyRnpaU0JjSW1aMWJtTjBhVzl1WENJNlhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUdBa2UzUnZVM1J5YVc1bktHVjRjSEl1Wm5WdVl5bDlLQ1I3Wlhod2NpNWhjbWQxYldWdWRITXViV0Z3S0hSdlUzUnlhVzVuS1M1cWIybHVLRndpTENCY0lpbDlLV0E3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpZWE5sSUZ3aWJHRnRZbVJoWENJNlhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUdBb0pIdGxlSEJ5TG1GeVozVnRaVzUwY3k1cWIybHVLRndpTENCY0lpbDlLU0E5UGlBa2UzUnZVM1J5YVc1bktHVjRjSEl1ZG1Gc2RXVXBmV0E3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpZWE5sSUZ3aWJHbHpkRndpT2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJnV3lSN1pYaHdjaTUyWVd4MVpYTXViV0Z3S0hSdlUzUnlhVzVuS1M1cWIybHVLRndpTENCY0lpbDlYV0E3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpZWE5sSUZ3aWJtVm5ZWFJsWkZ3aU9seHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCZ0lTUjdkRzlUZEhKcGJtY29aWGh3Y2k1amFHbHNaQ2w5WUR0Y2JpQWdJQ0FnSUNBZ0lDQWdJR05oYzJVZ1hDSnZZbXBsWTNSY0lqcGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z1lIc2tlMDlpYW1WamRDNWxiblJ5YVdWektHVjRjSEl1ZG1Gc2RXVnpLVnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBdWJXRndLQ2hiYXl3Z2RsMHBJRDArSUdBa2UydDlPaUFrZTNSdlUzUnlhVzVuS0hZcGZXQXBYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUM1cWIybHVLRndpTENCY0lpbDlmV0E3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpZWE5sSUZ3aWRtRnlhV0ZpYkdWY0lqcGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z1pYaHdjaTV1WVcxbE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnWTJGelpTQmNJbXhwZEdWeVlXeGNJanBjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JqYjI1emRDQjNjbUZ3Y0dWa0lEMGdUR2wwWlhKaGJITXVkM0poY0ZaaGJIVmxLR1Y0Y0hJdWRtRnNkV1VwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDZ2hkM0poY0hCbFpDa2djbVYwZFhKdUlGd2liblZzYkZ3aU8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lITjNhWFJqYUNBb2QzSmhjSEJsWkM1MGVYQmxLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHTmhjMlVnWENKemRISnBibWRjSWpwY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJnWENJa2UzZHlZWEJ3WldRdWRtRnNkV1Y5WENKZ08xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JrWldaaGRXeDBPbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlFeHBkR1Z5WVd4ekxuUnZVM1J5YVc1bktIZHlZWEJ3WldRdWRtRnNkV1VwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JseHVJQ0FnSUdWNGNHOXlkQ0JqYjI1emRDQk9WVXhNSUQwZ1JYaHdjbVZ6YzJsdmJuTXViR2wwWlhKaGJDaHVkV3hzS1R0Y2JuMWNiaUlzSUNJdktpb2dVR0Z5YzJVZ2FXNXNhVzVsSUdacFpXeGtjeUJoYm1RZ2IzUm9aWElnWlcxaVpXUmtaV1FnYldWMFlXUmhkR0VnYVc0Z1lTQnNhVzVsTGlBcUwxeHVYRzVwYlhCdmNuUWdleUJRVWtsTlNWUkpWa1ZUSUgwZ1puSnZiU0JjSW1WNGNISmxjM05wYjI0dmNHRnljMlZ5WENJN1hHNXBiWEJ2Y25RZ2V5Qk1hWFJsY21Gc0lIMGdabkp2YlNCY0ltVjRjSEpsYzNOcGIyNHZiR2wwWlhKaGJGd2lPMXh1YVcxd2IzSjBJQ29nWVhNZ1VDQm1jbTl0SUZ3aWNHRnljMmx0Ylc5dVhDSTdYRzVwYlhCdmNuUWdaVzF2YW1sU1pXZGxlQ0JtY205dElGd2laVzF2YW1rdGNtVm5aWGhjSWp0Y2JtbHRjRzl5ZENCN0lFcHpiMjVEYjI1MlpYSnphVzl1TENCS2MyOXVUR2wwWlhKaGJDQjlJR1p5YjIwZ1hDSnBibVJsZUM5MGVYQmxjeTlxYzI5dUwyTnZiVzF2Ymx3aU8xeHVYRzR2S2lvZ1FTQndZWEp6WldRZ2FXNXNhVzVsSUdacFpXeGtJR1p5YjIwZ1lTQnpjR1ZqYVdacFl5QnNhVzVsTGlBcUwxeHVaWGh3YjNKMElHbHVkR1Z5Wm1GalpTQk1iMk5oYkVsdWJHbHVaVVpwWld4a0lIdGNiaUFnSUNBdktpb2dWR2hsSUhKaGR5QndZWEp6WldRZ2EyVjVMaUFxTDF4dUlDQWdJR3RsZVRvZ2MzUnlhVzVuTzF4dUlDQWdJQzhxS2lCVWFHVWdjbUYzSUhaaGJIVmxJRzltSUhSb1pTQm1hV1ZzWkM0Z0tpOWNiaUFnSUNCMllXeDFaVG9nYzNSeWFXNW5PMXh1SUNBZ0lDOHFLaUJVYUdVZ2MzUmhjblFnWTI5c2RXMXVJRzltSUhSb1pTQm1hV1ZzWkM0Z0tpOWNiaUFnSUNCemRHRnlkRG9nYm5WdFltVnlPMXh1SUNBZ0lDOHFLaUJVYUdVZ2MzUmhjblFnWTI5c2RXMXVJRzltSUhSb1pTQXFkbUZzZFdVcUlHWnZjaUIwYUdVZ1ptbGxiR1F1SUNvdlhHNGdJQ0FnYzNSaGNuUldZV3gxWlRvZ2JuVnRZbVZ5TzF4dUlDQWdJQzhxS2lCVWFHVWdaVzVrSUdOdmJIVnRiaUJ2WmlCMGFHVWdabWxsYkdRdUlDb3ZYRzRnSUNBZ1pXNWtPaUJ1ZFcxaVpYSTdYRzRnSUNBZ0x5b3FJRWxtSUhSb2FYTWdhVzVzYVc1bElHWnBaV3hrSUhkaGN5QmtaV1pwYm1Wa0lIWnBZU0JoSUhkeVlYQndhVzVuSUNnbld5Y2diM0lnSnlnbklHOXlJQ2RzYVc1ckp5a3NJSFJvWlc0Z2RHaGxJSGR5WVhCd2FXNW5JSFJvWVhRZ2QyRnpJSFZ6WldRdUlDb3ZYRzRnSUNBZ2QzSmhjSEJwYm1jL09pQnpkSEpwYm1jN1hHNTlYRzVjYmk4cUtpQkdkV3hzSUdsdWJHbHVaU0JtYVdWc1pDQnRaWFJoWkdGMFlTQm1iM0lnWVc0Z2IySnFaV04wTGlBcUwxeHVaWGh3YjNKMElHbHVkR1Z5Wm1GalpTQkpibXhwYm1WR2FXVnNaQ0I3WEc0Z0lDQWdMeW9xSUZSb1pTQmhZM1IxWVd3Z2EyVjVJR1JsYzJOeWFXSnBibWNnZEdobElHbHViR2x1WlNCbWFXVnNaQzRnS2k5Y2JpQWdJQ0JyWlhrNklITjBjbWx1Wnp0Y2JpQWdJQ0F2S2lvZ1ZHaGxJSEpoZHlCMllXeDFaU0J2WmlCMGFHVWdhVzVzYVc1bElHWnBaV3hrTGlBcUwxeHVJQ0FnSUhKaGR6b2djM1J5YVc1bk8xeHVJQ0FnSUM4cUtpQlVhR1VnY0dGeWMyVmtJSFpoYkhWbExpQXFMMXh1SUNBZ0lIWmhiSFZsT2lCTWFYUmxjbUZzTzF4dUlDQWdJQzhxS2lCR2RXeHNJSEJ2YzJsMGFXOXVJR2x1Wm05eWJXRjBhVzl1SUdadmNpQjNhR1Z5WlNCMGFHVWdhVzVzYVc1bElHWnBaV3hrSUdseklHeHZZMkYwWldRZ2FXNGdkR2hsSUdSdlkzVnRaVzUwTGlBcUwxeHVJQ0FnSUhCdmMybDBhVzl1T2lCN1hHNGdJQ0FnSUNBZ0lDOHFLaUJVYUdVZ2JHbHVaU0J1ZFcxaVpYSWdkR2hsSUdsdWJHbHVaU0JtYVdWc1pDQmhjSEJsWVhKeklHOXVMaUFxTDF4dUlDQWdJQ0FnSUNCc2FXNWxPaUJ1ZFcxaVpYSTdYRzRnSUNBZ0lDQWdJQzhxS2lCVWFHVWdjM1JoY25RZ1kyOXNkVzF1SUc5bUlIUm9aU0JtYVdWc1pDNGdLaTljYmlBZ0lDQWdJQ0FnYzNSaGNuUTZJRzUxYldKbGNqdGNiaUFnSUNBZ0lDQWdMeW9xSUZSb1pTQnpkR0Z5ZENCamIyeDFiVzRnYjJZZ2RHaGxJQ3AyWVd4MVpTb2dabTl5SUhSb1pTQm1hV1ZzWkM0Z1NXMXRaV1JwWVhSbGJIa2dZV1owWlhJZ2RHaGxJQ2M2T2ljdUlDb3ZYRzRnSUNBZ0lDQWdJSE4wWVhKMFZtRnNkV1U2SUc1MWJXSmxjanRjYmlBZ0lDQWdJQ0FnTHlvcUlGUm9aU0JsYm1RZ1kyOXNkVzF1SUc5bUlIUm9aU0JtYVdWc1pDNGdLaTljYmlBZ0lDQWdJQ0FnWlc1a09pQnVkVzFpWlhJN1hHNGdJQ0FnZlR0Y2JpQWdJQ0F2S2lvZ1NXWWdkR2hwY3lCcGJteHBibVVnWm1sbGJHUWdkMkZ6SUdSbFptbHVaV1FnZG1saElHRWdkM0poY0hCcGJtY2dLQ2RiSnlCdmNpQW5LQ2NnYjNJZ0oyeHBibXNuS1N3Z2RHaGxiaUIwYUdVZ2QzSmhjSEJwYm1jZ2RHaGhkQ0IzWVhNZ2RYTmxaQzRnS2k5Y2JpQWdJQ0IzY21Gd2NHbHVaejg2SUhOMGNtbHVaenRjYm4xY2JseHVMeW9xSUVwVFQwNHNJSE5sY21saGJHbDZZV0pzWlNCeVpYQnlaWE5sYm5SaGRHbHZiaUJ2WmlCaGJpQnBibXhwYm1VZ1ptbGxiR1F1SUNvdlhHNWxlSEJ2Y25RZ2FXNTBaWEptWVdObElFcHpiMjVKYm14cGJtVkdhV1ZzWkNCN1hHNGdJQ0FnTHlvcUlGUm9aU0JoWTNSMVlXd2dhMlY1SUdSbGMyTnlhV0pwYm1jZ2RHaGxJR2x1YkdsdVpTQm1hV1ZzWkM0Z0tpOWNiaUFnSUNCclpYazZJSE4wY21sdVp6dGNiaUFnSUNBdktpb2dWR2hsSUhKaGR5QjJZV3gxWlNCdlppQjBhR1VnYVc1c2FXNWxJR1pwWld4a0xpQXFMMXh1SUNBZ0lISmhkem9nYzNSeWFXNW5PMXh1SUNBZ0lDOHFLaUJVYUdVZ2NHRnljMlZrSUhaaGJIVmxMaUFxTDF4dUlDQWdJSFpoYkhWbE9pQktjMjl1VEdsMFpYSmhiRHRjYmlBZ0lDQXZLaW9nUm5Wc2JDQndiM05wZEdsdmJpQnBibVp2Y20xaGRHbHZiaUJtYjNJZ2QyaGxjbVVnZEdobElHbHViR2x1WlNCbWFXVnNaQ0JwY3lCc2IyTmhkR1ZrSUdsdUlIUm9aU0JrYjJOMWJXVnVkQzRnS2k5Y2JpQWdJQ0J3YjNOcGRHbHZiam9nZTF4dUlDQWdJQ0FnSUNBdktpb2dWR2hsSUd4cGJtVWdiblZ0WW1WeUlIUm9aU0JwYm14cGJtVWdabWxsYkdRZ1lYQndaV0Z5Y3lCdmJpNGdLaTljYmlBZ0lDQWdJQ0FnYkdsdVpUb2diblZ0WW1WeU8xeHVJQ0FnSUNBZ0lDQXZLaW9nVkdobElITjBZWEowSUdOdmJIVnRiaUJ2WmlCMGFHVWdabWxsYkdRdUlDb3ZYRzRnSUNBZ0lDQWdJSE4wWVhKME9pQnVkVzFpWlhJN1hHNGdJQ0FnSUNBZ0lDOHFLaUJVYUdVZ2MzUmhjblFnWTI5c2RXMXVJRzltSUhSb1pTQXFkbUZzZFdVcUlHWnZjaUIwYUdVZ1ptbGxiR1F1SUVsdGJXVmthV0YwWld4NUlHRm1kR1Z5SUhSb1pTQW5Pam9uTGlBcUwxeHVJQ0FnSUNBZ0lDQnpkR0Z5ZEZaaGJIVmxPaUJ1ZFcxaVpYSTdYRzRnSUNBZ0lDQWdJQzhxS2lCVWFHVWdaVzVrSUdOdmJIVnRiaUJ2WmlCMGFHVWdabWxsYkdRdUlDb3ZYRzRnSUNBZ0lDQWdJR1Z1WkRvZ2JuVnRZbVZ5TzF4dUlDQWdJSDA3WEc0Z0lDQWdMeW9xSUVsbUlIUm9hWE1nYVc1c2FXNWxJR1pwWld4a0lIZGhjeUJrWldacGJtVmtJSFpwWVNCaElIZHlZWEJ3YVc1bklDZ25XeWNnYjNJZ0p5Z25JRzl5SUNkc2FXNXJKeWtzSUhSb1pXNGdkR2hsSUhkeVlYQndhVzVuSUhSb1lYUWdkMkZ6SUhWelpXUXVJQ292WEc0Z0lDQWdkM0poY0hCcGJtYy9PaUJ6ZEhKcGJtYzdYRzU5WEc1Y2JpOHFLaUJEYjI1MlpYSjBJR0Z1SUdsdWJHbHVaU0JtYVdWc1pDQjBieUJoSUVwVFQwNGdabTl5YldGMExpQXFMMXh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR3B6YjI1SmJteHBibVZHYVdWc1pDaG1hV1ZzWkRvZ1NXNXNhVzVsUm1sbGJHUXBPaUJLYzI5dVNXNXNhVzVsUm1sbGJHUWdlMXh1SUNBZ0lISmxkSFZ5YmlCUFltcGxZM1F1WVhOemFXZHVLSHQ5TENCbWFXVnNaQ3dnZXlCMllXeDFaVG9nU25OdmJrTnZiblpsY25OcGIyNHVhbk52YmlobWFXVnNaQzUyWVd4MVpTa2dmU2s3WEc1OVhHNWNiaThxS2lCRGIyNTJaWEowSUdFZ1NsTlBUaUJwYm14cGJtVWdabWxsYkdRZ1ltRmpheUIwYnlCaElISmxaM1ZzWVhJZ1ptbGxiR1F1SUNvdlhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2RtRnNkV1ZKYm14cGJtVkdhV1ZzWkNobWFXVnNaRG9nU25OdmJrbHViR2x1WlVacFpXeGtLVG9nU1c1c2FXNWxSbWxsYkdRZ2UxeHVJQ0FnSUhKbGRIVnliaUJQWW1wbFkzUXVZWE56YVdkdUtIdDlMQ0JtYVdWc1pDd2dleUIyWVd4MVpUb2dTbk52YmtOdmJuWmxjbk5wYjI0dWRtRnNkV1VvWm1sbGJHUXVkbUZzZFdVcElIMHBPMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1lYTkpibXhwYm1WR2FXVnNaQ2hzYjJOaGJEb2dURzlqWVd4SmJteHBibVZHYVdWc1pDd2diR2x1Wlc1dk9pQnVkVzFpWlhJcE9pQkpibXhwYm1WR2FXVnNaRHRjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJoYzBsdWJHbHVaVVpwWld4a0tHeHZZMkZzT2lCTWIyTmhiRWx1YkdsdVpVWnBaV3hrVzEwc0lHeHBibVZ1YnpvZ2JuVnRZbVZ5S1RvZ1NXNXNhVzVsUm1sbGJHUmJYVHRjYmk4cUtpQkRiMjUyWlhKMElHRWdiRzlqWVd3Z2FXNXNhVzVsSUdacFpXeGtJR2x1ZEc4Z1lTQm1kV3hzSUdsdWJHbHVaU0JtYVdWc1pDQmllU0J3WlhKbWIzSnRhVzVuSUhCaGNuTnBibWNnWVc1a0lHRmtaR2x1WnlCMGFHVWdZMjl5Y21WamRDQnNhVzVsSUc1MWJXSmxjaTRnS2k5Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCaGMwbHViR2x1WlVacFpXeGtLRnh1SUNBZ0lHeHZZMkZzT2lCTWIyTmhiRWx1YkdsdVpVWnBaV3hrSUh3Z1RHOWpZV3hKYm14cGJtVkdhV1ZzWkZ0ZExGeHVJQ0FnSUd4cGJtVnViem9nYm5WdFltVnlYRzRwT2lCSmJteHBibVZHYVdWc1pDQjhJRWx1YkdsdVpVWnBaV3hrVzEwZ2UxeHVJQ0FnSUdsbUlDaEJjbkpoZVM1cGMwRnljbUY1S0d4dlkyRnNLU2tnZTF4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnYkc5allXd3ViV0Z3S0NobUtTQTlQaUJoYzBsdWJHbHVaVVpwWld4a0tHWXNJR3hwYm1WdWJ5a3BPMXh1SUNBZ0lIMWNibHh1SUNBZ0lISmxkSFZ5YmlCN1hHNGdJQ0FnSUNBZ0lHdGxlVG9nYkc5allXd3VhMlY1TEZ4dUlDQWdJQ0FnSUNCeVlYYzZJR3h2WTJGc0xuWmhiSFZsTEZ4dUlDQWdJQ0FnSUNCMllXeDFaVG9nY0dGeWMyVkpibXhwYm1WV1lXeDFaU2hzYjJOaGJDNTJZV3gxWlNrc1hHNGdJQ0FnSUNBZ0lIQnZjMmwwYVc5dU9pQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCc2FXNWxPaUJzYVc1bGJtOHNYRzRnSUNBZ0lDQWdJQ0FnSUNCemRHRnlkRG9nYkc5allXd3VjM1JoY25Rc1hHNGdJQ0FnSUNBZ0lDQWdJQ0J6ZEdGeWRGWmhiSFZsT2lCc2IyTmhiQzV6ZEdGeWRGWmhiSFZsTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdaVzVrT2lCc2IyTmhiQzVsYm1Rc1hHNGdJQ0FnSUNBZ0lIMHNYRzRnSUNBZ0lDQWdJSGR5WVhCd2FXNW5PaUJzYjJOaGJDNTNjbUZ3Y0dsdVp5eGNiaUFnSUNCOU8xeHVmVnh1WEc0dktpb2dWR2hsSUhkeVlYQndaWElnWTJoaGNtRmpkR1Z5Y3lCMGFHRjBJR05oYmlCaVpTQjFjMlZrSUhSdklHUmxabWx1WlNCaGJpQnBibXhwYm1VZ1ptbGxiR1F1SUNvdlhHNWxlSEJ2Y25RZ1kyOXVjM1FnU1U1TVNVNUZYMFpKUlV4RVgxZFNRVkJRUlZKVE9pQlNaV0ZrYjI1c2VUeFNaV052Y21ROGMzUnlhVzVuTENCemRISnBibWMrUGlBOUlFOWlhbVZqZEM1bWNtVmxlbVVvZTF4dUlDQWdJRndpVzF3aU9pQmNJbDFjSWl4Y2JpQWdJQ0JjSWloY0lqb2dYQ0lwWENJc1hHNTlLVHRjYmx4dUx5b3FYRzRnS2lCR2FXNWtJR0VnYldGMFkyaHBibWNnWTJ4dmMybHVaeUJpY21GamEyVjBJSFJvWVhRZ2IyTmpkWEp6SUdGMElHOXlJR0ZtZEdWeUlHQnpkR0Z5ZEdBc0lISmxjM0JsWTNScGJtY2dibVZ6ZEdsdVp5QmhibVFnWlhOallYQmxjeTRnU1dZZ1ptOTFibVFzWEc0Z0tpQnlaWFIxY201eklIUm9aU0IyWVd4MVpTQmpiMjUwWVdsdVpXUWdkMmwwYUdsdUlHRnVaQ0IwYUdVZ2MzUnlhVzVuSUdsdVpHVjRJR0ZtZEdWeUlIUm9aU0JsYm1RZ2IyWWdkR2hsSUhaaGJIVmxMbHh1SUNvdlhHNW1kVzVqZEdsdmJpQm1hVzVrUTJ4dmMybHVaeWhjYmlBZ0lDQnNhVzVsT2lCemRISnBibWNzWEc0Z0lDQWdjM1JoY25RNklHNTFiV0psY2l4Y2JpQWdJQ0J2Y0dWdU9pQnpkSEpwYm1jc1hHNGdJQ0FnWTJ4dmMyVTZJSE4wY21sdVoxeHVLVG9nZXlCMllXeDFaVG9nYzNSeWFXNW5PeUJsYm1SSmJtUmxlRG9nYm5WdFltVnlJSDBnZkNCMWJtUmxabWx1WldRZ2UxeHVJQ0FnSUd4bGRDQnVaWE4wYVc1bklEMGdNRHRjYmlBZ0lDQnNaWFFnWlhOallYQmxaQ0E5SUdaaGJITmxPMXh1SUNBZ0lHWnZjaUFvYkdWMElHbHVaR1Y0SUQwZ2MzUmhjblE3SUdsdVpHVjRJRHdnYkdsdVpTNXNaVzVuZEdnN0lHbHVaR1Y0S3lzcElIdGNiaUFnSUNBZ0lDQWdiR1YwSUdOb1lYSWdQU0JzYVc1bExtTm9ZWEpCZENocGJtUmxlQ2s3WEc1Y2JpQWdJQ0FnSUNBZ0x5OGdRV3hzYjNkeklHWnZjaUJrYjNWaWJHVWdaWE5qWVhCbGN5QnNhV3RsSUNkY1hGeGNKeUIwYnlCaVpTQnlaVzVrWlhKbFpDQnViM0p0WVd4c2VTNWNiaUFnSUNBZ0lDQWdhV1lnS0dOb1lYSWdQVDBnWENKY1hGeGNYQ0lwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJR1Z6WTJGd1pXUWdQU0FoWlhOallYQmxaRHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHTnZiblJwYm5WbE8xeHVJQ0FnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJQ0FnTHk4Z1NXWWdaWE5qWVhCbFpDd2dhV2R1YjNKbElIUm9aU0J1WlhoMElHTm9ZWEpoWTNSbGNpQm1iM0lnWTI5dGNIVjBhVzVuSUc1bGMzUnBibWNzSUhKbFoyRnlaR3hsYzNNZ2IyWWdkMmhoZENCcGRDQnBjeTVjYmlBZ0lDQWdJQ0FnYVdZZ0tHVnpZMkZ3WldRcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUdWelkyRndaV1FnUFNCbVlXeHpaVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHTnZiblJwYm5WbE8xeHVJQ0FnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJQ0FnYVdZZ0tHTm9ZWElnUFQwZ2IzQmxiaWtnYm1WemRHbHVaeXNyTzF4dUlDQWdJQ0FnSUNCbGJITmxJR2xtSUNoamFHRnlJRDA5SUdOc2IzTmxLU0J1WlhOMGFXNW5MUzA3WEc1Y2JpQWdJQ0FnSUNBZ0x5OGdUMjVzZVNCdlkyTjFjbk1nYVdZZ2QyVWdZWEpsSUc5dUlHRWdZMnh2YzJVZ1kyaGhjbUZqZEdWeUlHRnVaQ0IwY21obGNtVWdhWE1nYm04Z2JXOXlaU0J1WlhOMGFXNW5MbHh1SUNBZ0lDQWdJQ0JwWmlBb2JtVnpkR2x1WnlBOElEQXBJSEpsZEhWeWJpQjdJSFpoYkhWbE9pQnNhVzVsTG5OMVluTjBjbWx1WnloemRHRnlkQ3dnYVc1a1pYZ3BMblJ5YVcwb0tTd2daVzVrU1c1a1pYZzZJR2x1WkdWNElDc2dNU0I5TzF4dVhHNGdJQ0FnSUNBZ0lHVnpZMkZ3WldRZ1BTQm1ZV3h6WlR0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0J5WlhSMWNtNGdkVzVrWldacGJtVmtPMXh1ZlZ4dVhHNHZLaW9nUm1sdVpDQjBhR1VnSnpvNkp5QnpaWEJoY21GMGIzSWdhVzRnWVc0Z2FXNXNhVzVsSUdacFpXeGtMaUFxTDF4dVpuVnVZM1JwYjI0Z1ptbHVaRk5sY0dGeVlYUnZjaWhzYVc1bE9pQnpkSEpwYm1jc0lITjBZWEowT2lCdWRXMWlaWElwT2lCN0lHdGxlVG9nYzNSeWFXNW5PeUIyWVd4MVpVbHVaR1Y0T2lCdWRXMWlaWElnZlNCOElIVnVaR1ZtYVc1bFpDQjdYRzRnSUNBZ2JHVjBJSE5sY0NBOUlHeHBibVV1YVc1a1pYaFBaaWhjSWpvNlhDSXNJSE4wWVhKMEtUdGNiaUFnSUNCcFppQW9jMlZ3SUR3Z01Da2djbVYwZFhKdUlIVnVaR1ZtYVc1bFpEdGNibHh1SUNBZ0lISmxkSFZ5YmlCN0lHdGxlVG9nYkdsdVpTNXpkV0p6ZEhKcGJtY29jM1JoY25Rc0lITmxjQ2t1ZEhKcGJTZ3BMQ0IyWVd4MVpVbHVaR1Y0T2lCelpYQWdLeUF5SUgwN1hHNTlYRzVjYmk4cUtpQlVjbmtnZEc4Z1kyOXRjR3hsZEdWc2VTQndZWEp6WlNCaGJpQnBibXhwYm1VZ1ptbGxiR1FnYzNSaGNuUnBibWNnWVhRZ2RHaGxJR2RwZG1WdUlIQnZjMmwwYVc5dUxpQkJjM04xYldWeklHQnpkR0Z5ZEdBZ2FYTWdiMjRnWVNCM2NtRndjR2x1WnlCamFHRnlZV04wWlhJdUlDb3ZYRzVtZFc1amRHbHZiaUJtYVc1a1UzQmxZMmxtYVdOSmJteHBibVZHYVdWc1pDaHNhVzVsT2lCemRISnBibWNzSUhOMFlYSjBPaUJ1ZFcxaVpYSXBPaUJNYjJOaGJFbHViR2x1WlVacFpXeGtJSHdnZFc1a1pXWnBibVZrSUh0Y2JpQWdJQ0JzWlhRZ2IzQmxiaUE5SUd4cGJtVXVZMmhoY2tGMEtITjBZWEowS1R0Y2JseHVJQ0FnSUd4bGRDQnJaWGtnUFNCbWFXNWtVMlZ3WVhKaGRHOXlLR3hwYm1Vc0lITjBZWEowSUNzZ01TazdYRzRnSUNBZ2FXWWdLR3RsZVNBOVBUMGdkVzVrWldacGJtVmtLU0J5WlhSMWNtNGdkVzVrWldacGJtVmtPMXh1WEc0Z0lDQWdMeThnUm1GcGJDQjBhR1VnYldGMFkyZ2dhV1lnZDJVZ1ptbHVaQ0JoYm5rZ2MyVndZWEpoZEc5eUlHTm9ZWEpoWTNSbGNuTWdLRzV2ZENCaGJHeHZkMlZrSUdsdUlHdGxlWE1wTGx4dUlDQWdJR1p2Y2lBb2JHVjBJSE5sY0NCdlppQlBZbXBsWTNRdWEyVjVjeWhKVGt4SlRrVmZSa2xGVEVSZlYxSkJVRkJGVWxNcExtTnZibU5oZENoUFltcGxZM1F1ZG1Gc2RXVnpLRWxPVEVsT1JWOUdTVVZNUkY5WFVrRlFVRVZTVXlrcEtTQjdYRzRnSUNBZ0lDQWdJR2xtSUNoclpYa3VhMlY1TG1sdVkyeDFaR1Z6S0hObGNDa3BJSEpsZEhWeWJpQjFibVJsWm1sdVpXUTdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2JHVjBJSFpoYkhWbElEMGdabWx1WkVOc2IzTnBibWNvYkdsdVpTd2dhMlY1TG5aaGJIVmxTVzVrWlhnc0lHOXdaVzRzSUVsT1RFbE9SVjlHU1VWTVJGOVhVa0ZRVUVWU1UxdHZjR1Z1WFNrN1hHNGdJQ0FnYVdZZ0tIWmhiSFZsSUQwOVBTQjFibVJsWm1sdVpXUXBJSEpsZEhWeWJpQjFibVJsWm1sdVpXUTdYRzVjYmlBZ0lDQnlaWFIxY200Z2UxeHVJQ0FnSUNBZ0lDQnJaWGs2SUd0bGVTNXJaWGtzWEc0Z0lDQWdJQ0FnSUhaaGJIVmxPaUIyWVd4MVpTNTJZV3gxWlN4Y2JpQWdJQ0FnSUNBZ2MzUmhjblE2SUhOMFlYSjBMRnh1SUNBZ0lDQWdJQ0J6ZEdGeWRGWmhiSFZsT2lCclpYa3VkbUZzZFdWSmJtUmxlQ3hjYmlBZ0lDQWdJQ0FnWlc1a09pQjJZV3gxWlM1bGJtUkpibVJsZUN4Y2JpQWdJQ0FnSUNBZ2QzSmhjSEJwYm1jNklHOXdaVzRzWEc0Z0lDQWdmVHRjYm4xY2JseHVMeW9xSUZCaGNuTmxJR0VnZEdWNGRIVmhiQ0JwYm14cGJtVWdabWxsYkdRZ2RtRnNkV1VnYVc1MGJ5QnpiMjFsZEdocGJtY2dkMlVnWTJGdUlIZHZjbXNnZDJsMGFDNGdLaTljYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJ3WVhKelpVbHViR2x1WlZaaGJIVmxLSFpoYkhWbE9pQnpkSEpwYm1jcE9pQk1hWFJsY21Gc0lIdGNiaUFnSUNBdkx5QkZiWEIwZVNCcGJteHBibVVnZG1Gc2RXVnpJQ2hwTG1VdUxDQnVieUIwWlhoMEtTQnphRzkxYkdRZ2JXRndJSFJ2SUc1MWJHd2dkRzhnYldGMFkyZ2diRzl1WnkxMFpYSnRJRVJoZEdGMmFXVjNJSE5sYldGdWRHbGpjeTVjYmlBZ0lDQXZMeUJPZFd4c0lHbHpJR0ZzYzI4Z1lTQnRiM0psSUhWdWFYWmxjbk5oYkNCMGVYQmxJSFJ2SUdSbFlXd2dkMmwwYUNCMGFHRnVJSE4wY21sdVozTXNJSE5wYm1ObElHRnNiQ0JtZFc1amRHbHZibk1nWVdOalpYQjBJRzUxYkd4ekxseHVJQ0FnSUdsbUlDaDJZV3gxWlM1MGNtbHRLQ2tnUFQwZ1hDSmNJaWtnY21WMGRYSnVJRzUxYkd3N1hHNWNiaUFnSUNBdkx5QlVhR1VnYzNSeWFYQndaV1FnYkdsMFpYSmhiQ0JtYVdWc1pDQndZWEp6WlhJZ2RXNWtaWEp6ZEdGdVpITWdZV3hzSUc5bUlIUm9aU0J1YjI0dFlYSnlZWGt2Ym05dUxXOWlhbVZqZENCbWFXVnNaSE1nWVc1a0lHTmhiaUJ3WVhKelpTQjBhR1Z0SUdadmNpQjFjeTVjYmlBZ0lDQXZMeUJKYm14cGJtVWdabWxsYkdRZ2IySnFaV04wY3lCaGNtVWdibTkwSUdOMWNuSmxiblJzZVNCemRYQndiM0owWldRN0lHbHViR2x1WlNCaGNuSmhlU0J2WW1wbFkzUnpJR2hoZG1VZ2RHOGdZbVVnYUdGdVpHeGxaQ0JpZVNCMGFHVWdjR0Z5YzJWeVhHNGdJQ0FnTHk4Z2MyVndZWEpoZEdWc2VTNWNiaUFnSUNCc1pYUWdhVzVzYVc1bElEMGdVRkpKVFVsVVNWWkZVeTVwYm14cGJtVkdhV1ZzWkM1d1lYSnpaU2gyWVd4MVpTazdYRzRnSUNBZ2FXWWdLR2x1YkdsdVpTNXpkR0YwZFhNcElISmxkSFZ5YmlCcGJteHBibVV1ZG1Gc2RXVTdYRzRnSUNBZ1pXeHpaU0J5WlhSMWNtNGdkbUZzZFdVN1hHNTlYRzVjYmk4cUtpQkZlSFJ5WVdOMGN5QnBibXhwYm1VZ1ptbGxiR1J6SUc5bUlIUm9aU0JtYjNKdElDZGJhMlY1T2pvZ2RtRnNkV1ZkSnlCbWNtOXRJR0VnYkdsdVpTQnZaaUIwWlhoMExpQlVhR2x6SUdseklHUnZibVVnYVc0Z1lTQnlaV3hoZEdsMlpXeDVYRzRnS2lCY0luSnZZblZ6ZEZ3aUlIZGhlU0IwYnlCaGRtOXBaQ0JtWVdsc2FXNW5JR1IxWlNCMGJ5QmlZV1FnYm1WemRHbHVaeUJ2Y2lCdmRHaGxjaUJwYm5SbGNtWmxjbWx1WnlCTllYSnJaRzkzYmlCemVXMWliMnh6T2x4dUlDcGNiaUFxSUMwZ1RHOXZheUJtYjNJZ1lXNTVJSGR5WVhCd1pYSnpJQ2duV3ljZ1lXNWtJQ2NvSnlrZ2FXNGdkR2hsSUd4cGJtVXNJSFJ5ZVdsdVp5QjBieUJ3WVhKelpTQjNhR0YwWlhabGNpQmpiMjFsY3lCaFpuUmxjaUJwZENCaGN5QmhiaUJwYm14cGJtVWdhMlY1T2pvdVhHNGdLaUF0SUVsbUlITjFZMk5sYzNObWRXd3NJSE5qWVc0Z2RXNTBhV3dnZVc5MUlHWnBibVFnWVNCdFlYUmphR2x1WnlCbGJtUWdZbkpoWTJ0bGRDd2dZVzVrSUhCaGNuTmxJSGRvWVhSbGRtVnlJSEpsYldGcGJuTWdZWE1nWVc0Z2FXNXNhVzVsSUhaaGJIVmxMbHh1SUNvdlhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1pYaDBjbUZqZEVsdWJHbHVaVVpwWld4a2N5aHNhVzVsT2lCemRISnBibWNzSUdsdVkyeDFaR1ZVWVhOclJtbGxiR1J6T2lCaWIyOXNaV0Z1SUQwZ1ptRnNjMlVwT2lCTWIyTmhiRWx1YkdsdVpVWnBaV3hrVzEwZ2UxeHVJQ0FnSUd4bGRDQm1hV1ZzWkhNNklFeHZZMkZzU1c1c2FXNWxSbWxsYkdSYlhTQTlJRnRkTzF4dUlDQWdJR1p2Y2lBb2JHVjBJSGR5WVhCd1pYSWdiMllnVDJKcVpXTjBMbXRsZVhNb1NVNU1TVTVGWDBaSlJVeEVYMWRTUVZCUVJWSlRLU2tnZTF4dUlDQWdJQ0FnSUNCc1pYUWdabTkxYm1SSmJtUmxlQ0E5SUd4cGJtVXVhVzVrWlhoUFppaDNjbUZ3Y0dWeUtUdGNiaUFnSUNBZ0lDQWdkMmhwYkdVZ0tHWnZkVzVrU1c1a1pYZ2dQajBnTUNrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnYkdWMElIQmhjbk5sWkVacFpXeGtJRDBnWm1sdVpGTndaV05wWm1salNXNXNhVzVsUm1sbGJHUW9iR2x1WlN3Z1ptOTFibVJKYm1SbGVDazdYRzRnSUNBZ0lDQWdJQ0FnSUNCcFppQW9JWEJoY25ObFpFWnBaV3hrS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1ptOTFibVJKYm1SbGVDQTlJR3hwYm1VdWFXNWtaWGhQWmloM2NtRndjR1Z5TENCbWIzVnVaRWx1WkdWNElDc2dNU2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWTI5dWRHbHVkV1U3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJQ0FnSUNBZ0lHWnBaV3hrY3k1d2RYTm9LSEJoY25ObFpFWnBaV3hrS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJR1p2ZFc1a1NXNWtaWGdnUFNCc2FXNWxMbWx1WkdWNFQyWW9kM0poY0hCbGNpd2djR0Z5YzJWa1JtbGxiR1F1Wlc1a0tUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lIMWNibHh1SUNBZ0lHbG1JQ2hwYm1Oc2RXUmxWR0Z6YTBacFpXeGtjeWtnWm1sbGJHUnpJRDBnWm1sbGJHUnpMbU52Ym1OaGRDaGxlSFJ5WVdOMFUzQmxZMmxoYkZSaGMydEdhV1ZzWkhNb2JHbHVaU2twTzF4dVhHNGdJQ0FnWm1sbGJHUnpMbk52Y25Rb0tHRXNJR0lwSUQwK0lHRXVjM1JoY25RZ0xTQmlMbk4wWVhKMEtUdGNibHh1SUNBZ0lHeGxkQ0JtYVd4MFpYSmxaRVpwWld4a2N6b2dURzlqWVd4SmJteHBibVZHYVdWc1pGdGRJRDBnVzEwN1hHNGdJQ0FnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnUENCbWFXVnNaSE11YkdWdVozUm9PeUJwS3lzcElIdGNiaUFnSUNBZ0lDQWdhV1lnS0drZ1BUMGdNQ0I4ZkNCbWFXeDBaWEpsWkVacFpXeGtjMXRtYVd4MFpYSmxaRVpwWld4a2N5NXNaVzVuZEdnZ0xTQXhYUzVsYm1RZ1BDQm1hV1ZzWkhOYmFWMHVjM1JoY25RcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUdacGJIUmxjbVZrUm1sbGJHUnpMbkIxYzJnb1ptbGxiR1J6VzJsZEtUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lIMWNiaUFnSUNCeVpYUjFjbTRnWm1sc2RHVnlaV1JHYVdWc1pITTdYRzU5WEc1Y2JpOHFLaUJXWVd4cFpHRjBaWE1nZEdoaGRDQmhJSEpoZHlCbWFXVnNaQ0J1WVcxbElHaGhjeUJoSUhaaGJHbGtJR1p2Y20wdUlDb3ZYRzVqYjI1emRDQkdWVXhNWDB4SlRrVmZTMFZaWDFCQlVsUTZJRkF1VUdGeWMyVnlQSE4wY21sdVp6NGdQU0JRTG1Gc2RDaGNiaUFnSUNCUUxuSmxaMlY0Y0NodVpYY2dVbVZuUlhod0tHVnRiMnBwVW1WblpYZ29LU3dnWENKMVhDSXBLU3hjYmlBZ0lDQlFMbkpsWjJWNGNDZ3ZXekF0T1Z4Y2NIdE1aWFIwWlhKOVhGeDNYRnh6WHk4dFhTc3ZkU2xjYmlsY2JpQWdJQ0F1YldGdWVTZ3BYRzRnSUNBZ0xtMWhjQ2dvY0dGeWRITXBJRDArSUhCaGNuUnpMbXB2YVc0b1hDSmNJaWtwTzF4dVhHNWpiMjV6ZENCR1ZVeE1YMHhKVGtWZlMwVlpYMUJCVWxORlVqb2dVQzVRWVhKelpYSThjM1J5YVc1blBpQTlJRkF1Y21WblpYaHdLQzliWGpBdE9WeGNkMXhjY0h0TVpYUjBaWEo5WFNvdmRTbGNiaUFnSUNBdWRHaGxiaWhHVlV4TVgweEpUa1ZmUzBWWlgxQkJVbFFwWEc0Z0lDQWdMbk5yYVhBb1VDNXlaV2RsZUhBb0wxdGZYRndxZm1CZEtpOTFLU2s3WEc1Y2JpOHFLaUJCZEhSbGJYQjBJSFJ2SUdWNGRISmhZM1FnWVNCbWRXeHNMV3hwYm1VZ1ptbGxiR1FnS0V0bGVUbzZJRlpoYkhWbElHTnZibk4xYldsdVp5QjBhR1VnWlc1MGFYSmxJR052Ym5SbGJuUWdiR2x1WlNrdUlDb3ZYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdaWGgwY21GamRFWjFiR3hNYVc1bFJtbGxiR1FvZEdWNGREb2djM1J5YVc1bktUb2dURzlqWVd4SmJteHBibVZHYVdWc1pDQjhJSFZ1WkdWbWFXNWxaQ0I3WEc0Z0lDQWdiR1YwSUhObGNDQTlJR1pwYm1SVFpYQmhjbUYwYjNJb2RHVjRkQ3dnTUNrN1hHNGdJQ0FnYVdZZ0tDRnpaWEFwSUhKbGRIVnliaUIxYm1SbFptbHVaV1E3WEc1Y2JpQWdJQ0F2THlCWFpTQnVaV1ZrSUhSdklIQnZjM1F0Y0hKdlkyVnpjeUIwYUdVZ2EyVjVJSFJ2SUdSeWIzQWdkVzV1WldObGMzTmhjbmtnYjNCbGJtbHVaeUJoYm01dmRHRjBhVzl1Y3lCaGN5QjNaV3hzSUdGelhHNGdJQ0FnTHk4Z1pISnZjQ0J6ZFhKeWIzVnVaR2x1WnlCTllYSnJaRzkzYmk1Y2JpQWdJQ0JzWlhRZ2NtVmhiRXRsZVNBOUlFWlZURXhmVEVsT1JWOUxSVmxmVUVGU1UwVlNMbkJoY25ObEtITmxjQzVyWlhrcE8xeHVJQ0FnSUdsbUlDZ2hjbVZoYkV0bGVTNXpkR0YwZFhNcElISmxkSFZ5YmlCMWJtUmxabWx1WldRN1hHNWNiaUFnSUNCeVpYUjFjbTRnZTF4dUlDQWdJQ0FnSUNCclpYazZJSEpsWVd4TFpYa3VkbUZzZFdVc1hHNGdJQ0FnSUNBZ0lIWmhiSFZsT2lCMFpYaDBMbk4xWW5OMGNtbHVaeWh6WlhBdWRtRnNkV1ZKYm1SbGVDa3VkSEpwYlNncExGeHVJQ0FnSUNBZ0lDQnpkR0Z5ZERvZ01DeGNiaUFnSUNBZ0lDQWdjM1JoY25SV1lXeDFaVG9nYzJWd0xuWmhiSFZsU1c1a1pYZ3NYRzRnSUNBZ0lDQWdJR1Z1WkRvZ2RHVjRkQzVzWlc1bmRHZ3NYRzRnSUNBZ2ZUdGNibjFjYmx4dVpYaHdiM0owSUdOdmJuTjBJRU5TUlVGVVJVUmZSRUZVUlY5U1JVZEZXQ0E5SUM5Y1hIVjdNamM1TlgxY1hITXFLRnhjWkhzMGZTMWNYR1I3TW4wdFhGeGtleko5S1M5MU8xeHVaWGh3YjNKMElHTnZibk4wSUVSVlJWOUVRVlJGWDFKRlIwVllJRDBnTHlnL09seGNkWHN4UmpSRE5YMThYRngxZXpGR05FTTJmWHhjWEhWN01VWTFSRE45WEZ4MWUwWkZNRVo5UHlsY1hITXFLRnhjWkhzMGZTMWNYR1I3TW4wdFhGeGtleko5S1M5MU8xeHVaWGh3YjNKMElHTnZibk4wSUVSUFRrVmZSRUZVUlY5U1JVZEZXQ0E5SUM5Y1hIVjdNamN3TlgxY1hITXFLRnhjWkhzMGZTMWNYR1I3TW4wdFhGeGtleko5S1M5MU8xeHVaWGh3YjNKMElHTnZibk4wSUZORFNFVkVWVXhGUkY5RVFWUkZYMUpGUjBWWUlEMGdMMXRjWEhWN01qTkdNMzFjWEhWN01qTXhRbjFkWEZ4ektpaGNYR1I3TkgwdFhGeGtleko5TFZ4Y1pIc3lmU2t2ZFR0Y2JtVjRjRzl5ZENCamIyNXpkQ0JUVkVGU1ZGOUVRVlJGWDFKRlIwVllJRDBnTDF4Y2RYc3hSalpGUW4xY1hITXFLRnhjWkhzMGZTMWNYR1I3TW4wdFhGeGtleko5S1M5MU8xeHVYRzVsZUhCdmNuUWdZMjl1YzNRZ1JVMVBTa2xmVWtWSFJWaEZVeUE5SUZ0Y2JpQWdJQ0I3SUhKbFoyVjRPaUJEVWtWQlZFVkVYMFJCVkVWZlVrVkhSVmdzSUd0bGVUb2dYQ0pqY21WaGRHVmtYQ0lnZlN4Y2JpQWdJQ0I3SUhKbFoyVjRPaUJUVkVGU1ZGOUVRVlJGWDFKRlIwVllMQ0JyWlhrNklGd2ljM1JoY25SY0lpQjlMRnh1SUNBZ0lIc2djbVZuWlhnNklGTkRTRVZFVlV4RlJGOUVRVlJGWDFKRlIwVllMQ0JyWlhrNklGd2ljMk5vWldSMWJHVmtYQ0lnZlN4Y2JpQWdJQ0I3SUhKbFoyVjRPaUJFVlVWZlJFRlVSVjlTUlVkRldDd2dhMlY1T2lCY0ltUjFaVndpSUgwc1hHNGdJQ0FnZXlCeVpXZGxlRG9nUkU5T1JWOUVRVlJGWDFKRlIwVllMQ0JyWlhrNklGd2lZMjl0Y0d4bGRHbHZibHdpSUgwc1hHNWRPMXh1WEc0dktpb2dVR0Z5YzJVZ2MzQmxZMmxoYkNCamIyMXdiR1YwWldRdlpIVmxMMlJ2Ym1VZ2RHRnpheUJtYVdWc1pITWdkMmhwWTJnZ1lYSmxJRzFoY210bFpDQjJhV0VnWlcxdmFta3VJQ292WEc1bWRXNWpkR2x2YmlCbGVIUnlZV04wVTNCbFkybGhiRlJoYzJ0R2FXVnNaSE1vYkdsdVpUb2djM1J5YVc1bktUb2dURzlqWVd4SmJteHBibVZHYVdWc1pGdGRJSHRjYmlBZ0lDQnNaWFFnY21WemRXeDBjem9nVEc5allXeEpibXhwYm1WR2FXVnNaRnRkSUQwZ1cxMDdYRzVjYmlBZ0lDQm1iM0lnS0d4bGRDQjdJSEpsWjJWNExDQnJaWGtnZlNCdlppQkZUVTlLU1Y5U1JVZEZXRVZUS1NCN1hHNGdJQ0FnSUNBZ0lHTnZibk4wSUcxaGRHTm9JRDBnY21WblpYZ3VaWGhsWXloc2FXNWxLVHRjYmlBZ0lDQWdJQ0FnYVdZZ0tDRnRZWFJqYUNrZ1kyOXVkR2x1ZFdVN1hHNWNiaUFnSUNBZ0lDQWdjbVZ6ZFd4MGN5NXdkWE5vS0h0Y2JpQWdJQ0FnSUNBZ0lDQWdJR3RsZVN4Y2JpQWdJQ0FnSUNBZ0lDQWdJSFpoYkhWbE9pQnRZWFJqYUZzeFhTeGNiaUFnSUNBZ0lDQWdJQ0FnSUhOMFlYSjBPaUJ0WVhSamFDNXBibVJsZUN4Y2JpQWdJQ0FnSUNBZ0lDQWdJSE4wWVhKMFZtRnNkV1U2SUcxaGRHTm9MbWx1WkdWNElDc2dNU3hjYmlBZ0lDQWdJQ0FnSUNBZ0lHVnVaRG9nYldGMFkyZ3VhVzVrWlhnZ0t5QnRZWFJqYUZzd1hTNXNaVzVuZEdnc1hHNGdJQ0FnSUNBZ0lDQWdJQ0IzY21Gd2NHbHVaem9nWENKbGJXOXFhUzF6YUc5eWRHaGhibVJjSWl4Y2JpQWdJQ0FnSUNBZ2ZTazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2NtVjBkWEp1SUhKbGMzVnNkSE03WEc1OVhHNWNiaThxS2lCVFpYUnpJRzl5SUhKbGNHeGhZMlZ6SUhSb1pTQjJZV3gxWlNCdlppQmhiaUJwYm14cGJtVWdabWxsYkdRN0lHbG1JSFJvWlNCMllXeDFaU0JwY3lBbmRXNWtaV1pwYm1Wa0p5d2daR1ZzWlhSbGN5QjBhR1VnYTJWNUxpQXFMMXh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJSE5sZEVsdWJHbHVaVVpwWld4a0tITnZkWEpqWlRvZ2MzUnlhVzVuTENCclpYazZJSE4wY21sdVp5d2dkbUZzZFdVL09pQnpkSEpwYm1jcE9pQnpkSEpwYm1jZ2UxeHVJQ0FnSUd4bGRDQmxlR2x6ZEdsdVp5QTlJR1Y0ZEhKaFkzUkpibXhwYm1WR2FXVnNaSE1vYzI5MWNtTmxLVHRjYmlBZ0lDQnNaWFFnWlhocGMzUnBibWRMWlhseklEMGdaWGhwYzNScGJtY3VabWxzZEdWeUtDaG1LU0E5UGlCbUxtdGxlU0E5UFNCclpYa3BPMXh1WEc0Z0lDQWdMeThnUkc5dUozUWdaRzhnWVc1NWRHaHBibWNnYVdZZ2RHaGxjbVVnWVhKbElHUjFjR3hwWTJGMFpTQnJaWGx6SUU5U0lIUm9aU0JyWlhrZ1lXeHlaV0ZrZVNCa2IyVnpiaWQwSUdWNGFYTjBMbHh1SUNBZ0lHbG1JQ2hsZUdsemRHbHVaMHRsZVhNdWJHVnVaM1JvSUQ0Z01pQjhmQ0FvWlhocGMzUnBibWRMWlhsekxteGxibWQwYUNBOVBTQXdJQ1ltSUNGMllXeDFaU2twSUhKbGRIVnliaUJ6YjNWeVkyVTdYRzRnSUNBZ2JHVjBJR1Y0YVhOMGFXNW5TMlY1SUQwZ1pYaHBjM1JwYm1kTFpYbHpXekJkTzF4dVhHNGdJQ0FnYkdWMElHRnVibTkwWVhScGIyNGdQU0IyWVd4MVpTQS9JR0JiSkh0clpYbDlPam9nSkh0MllXeDFaWDFkWUNBNklGd2lYQ0k3WEc0Z0lDQWdhV1lnS0dWNGFYTjBhVzVuUzJWNUtTQjdYRzRnSUNBZ0lDQWdJR3hsZENCd2NtVm1hWGdnUFNCemIzVnlZMlV1YzNWaWMzUnlhVzVuS0RBc0lHVjRhWE4wYVc1blMyVjVMbk4wWVhKMEtUdGNiaUFnSUNBZ0lDQWdiR1YwSUhOMVptWnBlQ0E5SUhOdmRYSmpaUzV6ZFdKemRISnBibWNvWlhocGMzUnBibWRMWlhrdVpXNWtLVHRjYmx4dUlDQWdJQ0FnSUNCcFppQW9ZVzV1YjNSaGRHbHZiaWtnY21WMGRYSnVJR0FrZTNCeVpXWnBlSDBrZTJGdWJtOTBZWFJwYjI1OUpIdHpkV1ptYVhoOVlEdGNiaUFnSUNBZ0lDQWdaV3h6WlNCeVpYUjFjbTRnWUNSN2NISmxabWw0ZlNSN2MzVm1abWw0TG5SeWFXMVRkR0Z5ZENncGZXQTdYRzRnSUNBZ2ZTQmxiSE5sSUdsbUlDaGhibTV2ZEdGMGFXOXVLU0I3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJnSkh0emIzVnlZMlV1ZEhKcGJVVnVaQ2dwZlNBa2UyRnVibTkwWVhScGIyNTlZRHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnlaWFIxY200Z2MyOTFjbU5sTzF4dWZWeHVYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdjMlYwUlcxdmFtbFRhRzl5ZEdoaGJtUkRiMjF3YkdWMGFXOXVSbWxsYkdRb2MyOTFjbU5sT2lCemRISnBibWNzSUhaaGJIVmxQem9nYzNSeWFXNW5LVG9nYzNSeWFXNW5JSHRjYmlBZ0lDQmpiMjV6ZENCbGVHbHpkR2x1WnlBOUlHVjRkSEpoWTNSSmJteHBibVZHYVdWc1pITW9jMjkxY21ObExDQjBjblZsS1R0Y2JpQWdJQ0JqYjI1emRDQmxlR2x6ZEdsdVowdGxlWE1nUFNCbGVHbHpkR2x1Wnk1bWFXeDBaWElvS0dZcElEMCtJR1l1YTJWNUlEMDlQU0JjSW1OdmJYQnNaWFJwYjI1Y0lpQW1KaUJtTG5keVlYQndhVzVuSUQwOVBTQmNJbVZ0YjJwcExYTm9iM0owYUdGdVpGd2lLVHRjYmx4dUlDQWdJQzh2SUVSdmJpZDBJR1J2SUdGdWVYUm9hVzVuSUdsbUlIUm9aWEpsSUdGeVpTQmtkWEJzYVdOaGRHVWdhMlY1Y3lCUFVpQjBhR1VnYTJWNUlHRnNjbVZoWkhrZ1pHOWxjMjRuZENCbGVHbHpkQzVjYmlBZ0lDQnBaaUFvWlhocGMzUnBibWRMWlhsekxteGxibWQwYUNBK0lESWdmSHdnS0dWNGFYTjBhVzVuUzJWNWN5NXNaVzVuZEdnZ1BUMGdNQ0FtSmlBaGRtRnNkV1VwS1NCeVpYUjFjbTRnYzI5MWNtTmxPMXh1WEc0Z0lDQWdMeW9nVG04Z2QzSmhjSEJsY2l3Z1lXUmtJRzkzYmlCemNHRmphVzVuSUdGMElITjBZWEowSUNvdlhHNGdJQ0FnWTI5dWMzUWdZVzV1YjNSaGRHbHZiaUE5SUhaaGJIVmxJRDhnWUNCY2RUSTNNRFVnSkh0MllXeDFaWDFnSURvZ1hDSmNJanRjYmlBZ0lDQnNaWFFnWlhocGMzUnBibWRMWlhrZ1BTQmxlR2x6ZEdsdVowdGxlWE5iTUYwN1hHNGdJQ0FnYVdZZ0tHVjRhWE4wYVc1blMyVjVLU0I3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJSEJ5WldacGVDQTlJSE52ZFhKalpTNXpkV0p6ZEhKcGJtY29NQ3dnWlhocGMzUnBibWRMWlhrdWMzUmhjblFwTzF4dUlDQWdJQ0FnSUNCamIyNXpkQ0J6ZFdabWFYZ2dQU0J6YjNWeVkyVXVjM1ZpYzNSeWFXNW5LR1Y0YVhOMGFXNW5TMlY1TG1WdVpDazdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQmdKSHR3Y21WbWFYZ3VkSEpwYlVWdVpDZ3BmU1I3WVc1dWIzUmhkR2x2Ym4wa2UzTjFabVpwZUgxZ08xeHVJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJnSkh0emIzVnlZMlV1ZEhKcGJVVnVaQ2dwZlNSN1lXNXViM1JoZEdsdmJuMWdPMXh1SUNBZ0lIMWNibjFjYmlJc0lDSXZLaW9nVFdGd0lIUm9aU0IyWVd4MVpYTWdiMllnWVc0Z2IySnFaV04wTENCeVpYUjFjbTVwYm1jZ1lTQnVaWGNnYjJKcVpXTjBMaUFxTDF4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUcxaGNFOWlhbVZqZEZaaGJIVmxjenhXTENCVlBpaHZZbXBsWTNRNklGSmxZMjl5WkR4emRISnBibWNzSUZZK0xDQm1kVzVqT2lBb2VEb2dWaWtnUFQ0Z1ZTazZJRkpsWTI5eVpEeHpkSEpwYm1jc0lGVStJSHRjYmlBZ0lDQmpiMjV6ZENCeVpYTjFiSFE2SUZKbFkyOXlaRHh6ZEhKcGJtY3NJRlUrSUQwZ2UzMDdYRzRnSUNBZ1ptOXlJQ2hqYjI1emRDQmJhMlY1TENCMllXeDFaVjBnYjJZZ1QySnFaV04wTG1WdWRISnBaWE1vYjJKcVpXTjBLU2tnZTF4dUlDQWdJQ0FnSUNCeVpYTjFiSFJiYTJWNVhTQTlJR1oxYm1Nb2RtRnNkV1VwTzF4dUlDQWdJSDFjYmx4dUlDQWdJSEpsZEhWeWJpQnlaWE4xYkhRN1hHNTlYRzRpTENBaWFXMXdiM0owSUhzZ1RHbHVheXdnU25OdmJreHBibXNnZlNCbWNtOXRJRndpWlhod2NtVnpjMmx2Ymk5c2FXNXJYQ0k3WEc1cGJYQnZjblFnZXlCTWFYUmxjbUZzTENCTWFYUmxjbUZzY3lCOUlHWnliMjBnWENKbGVIQnlaWE56YVc5dUwyeHBkR1Z5WVd4Y0lqdGNibWx0Y0c5eWRDQjdJRVJoZEdWVWFXMWxMQ0JFZFhKaGRHbHZiaUI5SUdaeWIyMGdYQ0pzZFhodmJsd2lPMXh1YVcxd2IzSjBJSHNnYldGd1QySnFaV04wVm1Gc2RXVnpJSDBnWm5KdmJTQmNJblYwYVd4ekwyUmhkR0ZjSWp0Y2JseHVMeW9xSUVwVFQwNHRjMlZ5YVdGc2FYcGxaQ0JsY1hWcGRtRnNaVzUwY3lCbWIzSWdiR2wwWlhKaGJITXVJQ292WEc1bGVIQnZjblFnZEhsd1pTQktjMjl1VEdsMFpYSmhiQ0E5WEc0Z0lDQWdmQ0JpYjI5c1pXRnVYRzRnSUNBZ2ZDQnVkVzFpWlhKY2JpQWdJQ0I4SUhOMGNtbHVaMXh1SUNBZ0lId2dleUFrWDNSNWNHVTZJRndpWkdGMFpWd2lPeUIyWVd4MVpUb2djM1J5YVc1bklIMWNiaUFnSUNCOElIc2dKRjkwZVhCbE9pQmNJbVIxY21GMGFXOXVYQ0k3SUhaaGJIVmxPaUJ6ZEhKcGJtY2dmVnh1SUNBZ0lId2dleUFrWDNSNWNHVTZJRndpYkdsdWExd2lPeUIyWVd4MVpUb2dTbk52Ymt4cGJtc2dmVnh1SUNBZ0lId2dRWEp5WVhrOFNuTnZia3hwZEdWeVlXdytYRzRnSUNBZ2ZDQlNaV052Y21ROGMzUnlhVzVuTENCaGJuaytYRzRnSUNBZ2ZDQnVkV3hzTzF4dVhHNWxlSEJ2Y25RZ2JtRnRaWE53WVdObElFcHpiMjVEYjI1MlpYSnphVzl1SUh0Y2JpQWdJQ0JsZUhCdmNuUWdZMjl1YzNRZ1RrOVBVRjlPVDFKTlFVeEpXa1ZTT2lBb2FXNXdkWFE2SUV4cGRHVnlZV3dwSUQwK0lFeHBkR1Z5WVd3Z1BTQW9hVzV3ZFhRcElEMCtJR2x1Y0hWME8xeHVYRzRnSUNBZ0x5b3FJRU52Ym5abGNuUWdZU0JzYVhSbGNtRnNJSFpoYkhWbElIUnZJR0VnYzJGbVpTd2djR1Z5YzJsemRHVnVkQ0JLVTA5T0lHVnhkV2wyWVd4bGJuUXVJQ292WEc0Z0lDQWdaWGh3YjNKMElHWjFibU4wYVc5dUlHcHpiMjRvYkdsMFpYSmhiRG9nVEdsMFpYSmhiQ2s2SUVwemIyNU1hWFJsY21Gc0lIdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2QzSmhjSEJsWkNBOUlFeHBkR1Z5WVd4ekxuZHlZWEJXWVd4MVpTaHNhWFJsY21Gc0tUdGNiaUFnSUNBZ0lDQWdhV1lnS0NGM2NtRndjR1ZrS1NCeVpYUjFjbTRnYm5Wc2JEdGNibHh1SUNBZ0lDQWdJQ0J6ZDJsMFkyZ2dLSGR5WVhCd1pXUS9MblI1Y0dVcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUdOaGMyVWdYQ0poY25KaGVWd2lPbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQjNjbUZ3Y0dWa0xuWmhiSFZsTG0xaGNDaEtjMjl1UTI5dWRtVnljMmx2Ymk1cWMyOXVLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHTmhjMlVnWENKdlltcGxZM1JjSWpwY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnYldGd1QySnFaV04wVm1Gc2RXVnpLSGR5WVhCd1pXUXVkbUZzZFdVc0lFcHpiMjVEYjI1MlpYSnphVzl1TG1wemIyNHBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ1kyRnpaU0JjSW1SaGRHVmNJanBjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdleUFrWDNSNWNHVTZJRndpWkdGMFpWd2lMQ0IyWVd4MVpUb2dkM0poY0hCbFpDNTJZV3gxWlM1MGIwbFRUeWg3SUdsdVkyeDFaR1ZQWm1aelpYUTZJSFJ5ZFdVZ2ZTa2dmVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHTmhjMlVnWENKc2FXNXJYQ0k2WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJSHNnSkY5MGVYQmxPaUJjSW14cGJtdGNJaXdnZG1Gc2RXVTZJSGR5WVhCd1pXUXVkbUZzZFdVdWRHOVBZbXBsWTNRb0tTQjlPMXh1SUNBZ0lDQWdJQ0FnSUNBZ1kyRnpaU0JjSW1SMWNtRjBhVzl1WENJNlhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhzZ0pGOTBlWEJsT2lCY0ltUjFjbUYwYVc5dVhDSXNJSFpoYkhWbE9pQjNjbUZ3Y0dWa0xuWmhiSFZsTG5SdlNWTlBLQ2tnZlR0Y2JpQWdJQ0FnSUNBZ0lDQWdJR05oYzJVZ1hDSmliMjlzWldGdVhDSTZYRzRnSUNBZ0lDQWdJQ0FnSUNCallYTmxJRndpYm5WdFltVnlYQ0k2WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpZWE5sSUZ3aWMzUnlhVzVuWENJNlhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhkeVlYQndaV1F1ZG1Gc2RXVTdYRzRnSUNBZ0lDQWdJQ0FnSUNCallYTmxJRndpWm5WdVkzUnBiMjVjSWpwY2JpQWdJQ0FnSUNBZ0lDQWdJR05oYzJVZ1hDSnVkV3hzWENJNlhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUc1MWJHdzdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQjlYRzVjYmlBZ0lDQXZLaXBjYmlBZ0lDQWdLaUJEYjI1MlpYSjBJR0VnU2xOUFRpQnNhWFJsY21Gc0lIUnZJR2wwSjNNZ1kyOXljbVZ6Y0c5dVpHbHVaeUJvZVdSeVlYUmxaQ0IyWVd4MVpTd2diM0IwYVc5dVlXeHNlU0JoY0hCc2VXbHVaMXh1SUNBZ0lDQXFJR0VnYm05eWJXRnNhWHBoZEdsdmJpQnpkR1Z3SUhSdklIUm9aU0J5WlhOMWJIUnBibWNnZG1Gc2RXVWdZVzVrSUdGdWVTQnNhWFJsY21Gc2N5QmpiMjUwWVdsdVpXUWdkMmwwYUdsdUlHbDBYRzRnSUNBZ0lDb2dLSE4xWTJnZ1lYTWdhV1lnZEdobElHeHBkR1Z5WVd3Z2FYTWdZU0JzYVhOMElHOXlJRzlpYW1WamRDa3VYRzRnSUNBZ0lDb3ZYRzRnSUNBZ1pYaHdiM0owSUdaMWJtTjBhVzl1SUhaaGJIVmxLR3B6YjI0NklFcHpiMjVNYVhSbGNtRnNMQ0J1YjNKdFlXeHBlbVZ5T2lBb2FXNXdkWFE2SUV4cGRHVnlZV3dwSUQwK0lFeHBkR1Z5WVd3Z1BTQk9UMDlRWDA1UFVrMUJURWxhUlZJcE9pQk1hWFJsY21Gc0lIdGNiaUFnSUNBZ0lDQWdhV1lnS0dwemIyNGdQVDA5SUc1MWJHd2dmSHdnYW5OdmJpQTlQVDBnZFc1a1pXWnBibVZrS1NCeVpYUjFjbTRnYm5Wc2JEdGNibHh1SUNBZ0lDQWdJQ0JwWmlBb1FYSnlZWGt1YVhOQmNuSmhlU2hxYzI5dUtTa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUc1dmNtMWhiR2w2WlhJb2FuTnZiaTV0WVhBb0tHbHVjSFYwS1NBOVBpQktjMjl1UTI5dWRtVnljMmx2Ymk1MllXeDFaU2hwYm5CMWRDd2dibTl5YldGc2FYcGxjaWtwS1R0Y2JpQWdJQ0FnSUNBZ2ZTQmxiSE5sSUdsbUlDaDBlWEJsYjJZZ2FuTnZiaUE5UFQwZ1hDSnZZbXBsWTNSY0lpa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLQ0VvWENJa1gzUjVjR1ZjSWlCcGJpQnFjMjl1S1NsY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnYldGd1QySnFaV04wVm1Gc2RXVnpLR3B6YjI0c0lDaDJLU0E5UGlCS2MyOXVRMjl1ZG1WeWMybHZiaTUyWVd4MVpTaDJJR0Z6SUVwemIyNU1hWFJsY21Gc0xDQnViM0p0WVd4cGVtVnlLU2s3WEc1Y2JpQWdJQ0FnSUNBZ0lDQWdJR052Ym5OMElIUjVjR1VnUFNCcWMyOXVXMXdpSkY5MGVYQmxYQ0pkTzF4dUlDQWdJQ0FnSUNBZ0lDQWdjM2RwZEdOb0lDaDBlWEJsS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1kyRnpaU0JjSW1SaGRHVmNJanBjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUc1dmNtMWhiR2w2WlhJb1JHRjBaVlJwYldVdVpuSnZiVWxUVHlocWMyOXVMblpoYkhWbExDQjdJSE5sZEZwdmJtVTZJSFJ5ZFdVZ2ZTa3BPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR05oYzJVZ1hDSmtkWEpoZEdsdmJsd2lPbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnYm05eWJXRnNhWHBsY2loRWRYSmhkR2x2Ymk1bWNtOXRTVk5QS0dwemIyNHVkbUZzZFdVcEtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmpZWE5sSUZ3aWJHbHVhMXdpT2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2JtOXliV0ZzYVhwbGNpaE1hVzVyTG1aeWIyMVBZbXBsWTNRb2FuTnZiaTUyWVd4MVpTa3BPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR1JsWm1GMWJIUTZYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhSb2NtOTNJRzVsZHlCRmNuSnZjaWhnVlc1eVpXTnZaMjVwZW1Wa0lITmxjbWxoYkdsNlpXUWdkSGx3WlNBbkpIdDBlWEJsZlNjaFlDazdYRzRnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lIMWNibHh1SUNBZ0lDQWdJQ0F2THlCUWNtbHRhWFJwZG1VZ2RIbHdaU3dnY21WMGRYSnVJR0Z6SUdsekxseHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2JtOXliV0ZzYVhwbGNpaHFjMjl1SUdGeklFeHBkR1Z5WVd3cE8xeHVJQ0FnSUgxY2JuMWNiaUlzSUNJdktpcGNiaUFxSUVCdGIyUjFiR1VnYVc1a1pYaGhZbXhsYzF4dUlDb3ZYRzR2S2lvZ1ZYUnBiR2wwYVdWeklHWnZjaUJqYjI1MlpYSjBhVzVuSUd4cGRHVnlZV3dnZEhsd1pYTWdkRzhnWVc1a0lHWnliMjBnZEdobGFYSWdXVUZOVENCbWNtOXVkRzFoZEhSbGNpQnlaWEJ5WlhObGJuUmhkR2x2Ymk0Z0tpOWNibHh1YVcxd2IzSjBJSHNnVEdsMFpYSmhiQ3dnVEdsMFpYSmhiSE1nZlNCbWNtOXRJRndpWlhod2NtVnpjMmx2Ymk5c2FYUmxjbUZzWENJN1hHNXBiWEJ2Y25RZ2V5QlFVa2xOU1ZSSlZrVlRJSDBnWm5KdmJTQmNJbVY0Y0hKbGMzTnBiMjR2Y0dGeWMyVnlYQ0k3WEc1cGJYQnZjblFnZXlCRVlYUmxWR2x0WlNCOUlHWnliMjBnWENKc2RYaHZibHdpTzF4dWFXMXdiM0owSUhzZ2JXRndUMkpxWldOMFZtRnNkV1Z6SUgwZ1puSnZiU0JjSW5WMGFXeHpMMlJoZEdGY0lqdGNibHh1THlvcUlGbEJUVXd0Wm5KcFpXNWtiSGtnY21Wd2NtVnpaVzUwWVhScGIyNGdabTl5SUdFZ2JHbDBaWEpoYkM0Z0tpOWNibVY0Y0c5eWRDQjBlWEJsSUZsaGJXeE1hWFJsY21Gc0lEMGdjM1J5YVc1bklId2diblZ0WW1WeUlId2dZbTl2YkdWaGJpQjhJRzUxYkd3Z2ZDQlNaV052Y21ROGMzUnlhVzVuTENCaGJuaytJSHdnUVhKeVlYazhXV0Z0YkV4cGRHVnlZV3crTzF4dUx5b3FYRzRnS2lCQWFXNTBaWEp1WVd4Y2JpQXFMMXh1Wlhod2IzSjBJRzVoYldWemNHRmpaU0JaWVcxc1EyOXVkbVZ5YzJsdmJpQjdYRzRnSUNBZ0x5b3FJRU52Ym5abGNuUWdZU0JzYVhSbGNtRnNJR2x1ZEc4Z1lTQjVZVzFzSUdaeWFXVnVaR3g1SUhKbGNISmxjMlZ1ZEdGMGFXOXVMaUFxTDF4dUlDQWdJR1Y0Y0c5eWRDQm1kVzVqZEdsdmJpQjVZVzFzS0haaGJIVmxPaUJNYVhSbGNtRnNLVG9nV1dGdGJFeHBkR1Z5WVd3Z2UxeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCM2NtRndjR1ZrSUQwZ1RHbDBaWEpoYkhNdWQzSmhjRlpoYkhWbEtHeHBkR1Z5WVd3cE8xeHVJQ0FnSUNBZ0lDQnBaaUFvSVhkeVlYQndaV1FwSUhKbGRIVnliaUJ1ZFd4c08xeHVYRzRnSUNBZ0lDQWdJSE4zYVhSamFDQW9kM0poY0hCbFpDNTBlWEJsS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JqWVhObElGd2ljM1J5YVc1blhDSTZYRzRnSUNBZ0lDQWdJQ0FnSUNCallYTmxJRndpWW05dmJHVmhibHdpT2x4dUlDQWdJQ0FnSUNBZ0lDQWdZMkZ6WlNCY0ltNTFiR3hjSWpwY2JpQWdJQ0FnSUNBZ0lDQWdJR05oYzJVZ1hDSnVkVzFpWlhKY0lqcGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2QzSmhjSEJsWkM1MllXeDFaVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHTmhjMlVnWENKaGNuSmhlVndpT2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUIzY21Gd2NHVmtMblpoYkhWbExtMWhjQ2g1WVcxc0tUdGNiaUFnSUNBZ0lDQWdJQ0FnSUdOaGMyVWdYQ0prWVhSbFhDSTZYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlIZHlZWEJ3WldRdWRtRnNkV1V1ZEc5SlUwOG9LVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHTmhjMlVnWENKa2RYSmhkR2x2Ymx3aU9seHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCM2NtRndjR1ZrTG5aaGJIVmxMblJ2U0hWdFlXNG9LVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHTmhjMlVnWENKbWRXNWpkR2x2Ymx3aU9seHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCdWRXeHNPMXh1SUNBZ0lDQWdJQ0FnSUNBZ1kyRnpaU0JjSW14cGJtdGNJanBjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdkM0poY0hCbFpDNTJZV3gxWlM1dFlYSnJaRzkzYmlncE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnWTJGelpTQmNJbTlpYW1WamRGd2lPbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQnRZWEJQWW1wbFkzUldZV3gxWlhNb2QzSmhjSEJsWkM1MllXeDFaU3dnZVdGdGJDazdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQjlYRzVjYmlBZ0lDQXZLaW9nVW1WamRYSnphWFpsYkhrZ1kyOXVkbVZ5ZENCaElGbEJUVXdnYkdsMFpYSmhiQ0JwYm5SdklHRWdjbVZuZFd4aGNpQnNhWFJsY21Gc0lIWmhiSFZsTGlBcUwxeHVJQ0FnSUdWNGNHOXlkQ0JtZFc1amRHbHZiaUJzYVhSbGNtRnNLSFpoYkhWbE9pQlpZVzFzVEdsMFpYSmhiQ2s2SUV4cGRHVnlZV3dnZTF4dUlDQWdJQ0FnSUNCcFppQW9kbUZzZFdVZ1BUMGdiblZzYkNrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJRzUxYkd3N1hHNGdJQ0FnSUNBZ0lIMGdaV3h6WlNCcFppQW9kSGx3Wlc5bUlIWmhiSFZsSUQwOVBTQmNJbTlpYW1WamRGd2lLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFvUVhKeVlYa3VhWE5CY25KaGVTaDJZV3gxWlNrcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnNaWFFnY21WemRXeDBJRDBnVzEwN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1ptOXlJQ2hzWlhRZ1kyaHBiR1FnYjJZZ2RtRnNkV1VnWVhNZ1FYSnlZWGs4WVc1NVBpa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYTjFiSFF1Y0hWemFDaHNhWFJsY21Gc0tHTm9hV3hrS1NrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlISmxjM1ZzZER0Y2JpQWdJQ0FnSUNBZ0lDQWdJSDBnWld4elpTQnBaaUFvZG1Gc2RXVWdhVzV6ZEdGdVkyVnZaaUJFWVhSbEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdiR1YwSUdSaGRHVlFZWEp6WlNBOUlFUmhkR1ZVYVcxbExtWnliMjFLVTBSaGRHVW9kbUZzZFdVcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCa1lYUmxVR0Z5YzJVN1hHNGdJQ0FnSUNBZ0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR3hsZENCdlltcGxZM1FnUFNCMllXeDFaU0JoY3lCU1pXTnZjbVE4YzNSeWFXNW5MQ0JoYm5rK08xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHeGxkQ0J5WlhOMWJIUTZJRkpsWTI5eVpEeHpkSEpwYm1jc0lFeHBkR1Z5WVd3K0lEMGdlMzA3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWm05eUlDaHNaWFFnYTJWNUlHbHVJRzlpYW1WamRDa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYTjFiSFJiYTJWNVhTQTlJR3hwZEdWeVlXd29iMkpxWldOMFcydGxlVjBwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCeVpYTjFiSFE3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJSDBnWld4elpTQnBaaUFvZEhsd1pXOW1JSFpoYkhWbElEMDlQU0JjSW01MWJXSmxjbHdpS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdkbUZzZFdVN1hHNGdJQ0FnSUNBZ0lIMGdaV3h6WlNCcFppQW9kSGx3Wlc5bUlIWmhiSFZsSUQwOVBTQmNJbUp2YjJ4bFlXNWNJaWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlIWmhiSFZsTzF4dUlDQWdJQ0FnSUNCOUlHVnNjMlVnYVdZZ0tIUjVjR1Z2WmlCMllXeDFaU0E5UFQwZ1hDSnpkSEpwYm1kY0lpa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2JHVjBJR1JoZEdWUVlYSnpaU0E5SUZCU1NVMUpWRWxXUlZNdVpHRjBaUzV3WVhKelpTaDJZV3gxWlNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb1pHRjBaVkJoY25ObExuTjBZWFIxY3lrZ2NtVjBkWEp1SUdSaGRHVlFZWEp6WlM1MllXeDFaVHRjYmx4dUlDQWdJQ0FnSUNBZ0lDQWdiR1YwSUdSMWNtRjBhVzl1VUdGeWMyVWdQU0JRVWtsTlNWUkpWa1ZUTG1SMWNtRjBhVzl1TG5CaGNuTmxLSFpoYkhWbEtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDaGtkWEpoZEdsdmJsQmhjbk5sTG5OMFlYUjFjeWtnY21WMGRYSnVJR1IxY21GMGFXOXVVR0Z5YzJVdWRtRnNkV1U3WEc1Y2JpQWdJQ0FnSUNBZ0lDQWdJR3hsZENCc2FXNXJVR0Z5YzJVZ1BTQlFVa2xOU1ZSSlZrVlRMbXhwYm1zdWNHRnljMlVvZG1Gc2RXVXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLR3hwYm10UVlYSnpaUzV6ZEdGMGRYTXBJSEpsZEhWeWJpQnNhVzVyVUdGeWMyVXVkbUZzZFdVN1hHNWNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUIyWVd4MVpUdGNiaUFnSUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0FnSUM4dklFSmhZMnQxY0NCcFppQjNaU0JrYjI0bmRDQjFibVJsY25OMFlXNWtJSFJvWlNCMGVYQmxMbHh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdiblZzYkR0Y2JpQWdJQ0I5WEc1OVhHNGlMQ0FpYVcxd2IzSjBJSHNnUm1sc1pWTjBZWFJ6SUgwZ1puSnZiU0JjSW05aWMybGthV0Z1WENJN1hHNXBiWEJ2Y25RZ2V5QnBkR1Z5WVhSbFNXNXNhVzVsUm1sbGJHUnpMQ0J0WVhKclpHOTNibE52ZFhKalpVbHRjRzl5ZEN3Z1RXVjBZV1JoZEdFc0lGTmxZM1JwYjI1RVlYUmhJSDBnWm5KdmJTQmNJaTR2YldGeWEyUnZkMjVjSWp0Y2JtbHRjRzl5ZENCN0lFcHpiMjVHY205dWRHMWhkSFJsY2tWdWRISjVJSDBnWm5KdmJTQmNJbWx1WkdWNEwzUjVjR1Z6TDJwemIyNHZiV0Z5YTJSdmQyNWNJanRjYm1sdGNHOXlkQ0I3WEc0Z0lDQWdRMkZ1ZG1GelRXVjBZV1JoZEdGSmJtUmxlQ3hjYmlBZ0lDQktjMjl1UW1GelpVTmhiblpoYzBOaGNtUXNYRzRnSUNBZ1NuTnZia05oYm5aaGN5eGNiaUFnSUNCS2MyOXVRMkZ1ZG1GelEyRnlaQ3hjYmlBZ0lDQktjMjl1UTJGdWRtRnpSbWxzWlVOaGNtUXNYRzRnSUNBZ1NuTnZia05oYm5aaGMxUmxlSFJEWVhKa0xGeHVJQ0FnSUVwemIyNURZVzUyWVhOWFpXSkRZWEprTEZ4dWZTQm1jbTl0SUZ3aWFXNWtaWGd2ZEhsd1pYTXZhbk52Ymk5allXNTJZWE5jSWp0Y2JtbHRjRzl5ZENCN0lFTmhiblpoYzBacGJHVkVZWFJoTENCRFlXNTJZWE5NYVc1clJHRjBZU3dnUTJGdWRtRnpWR1Y0ZEVSaGRHRXNJRU5oYm5aaGMwUmhkR0VnWVhNZ1NVTmhiblpoY3lCOUlHWnliMjBnWENKdlluTnBaR2xoYmk5allXNTJZWE5jSWp0Y2JtbHRjRzl5ZENCN0lFeHBibXNnZlNCbWNtOXRJRndpWlhod2NtVnpjMmx2Ymk5c2FXNXJYQ0k3WEc1Y2JpOHFLaUJKYlhCdmNuUWdZU0JqWVc1MllYTWdabWxzWlNCMWMybHVaeUIwYUdVZ1kyRnVkbUZ6SUcxbGRHRmtZWFJoTGlBcUwxeHVaWGh3YjNKMElHWjFibU4wYVc5dUlHTmhiblpoYzBsdGNHOXlkQ2hjYmlBZ0lDQndZWFJvT2lCemRISnBibWNzWEc0Z0lDQWdjMjkxY21ObE9pQnpkSEpwYm1jc1hHNGdJQ0FnYVc1a1pYZzZJRU5oYm5aaGMwMWxkR0ZrWVhSaFNXNWtaWGhiWENKemRISnBibWRjSWwwc1hHNGdJQ0FnYzNSaGRITTZJRVpwYkdWVGRHRjBjMXh1S1RvZ1NuTnZia05oYm5aaGN5QjdYRzRnSUNBZ1kyOXVjM1FnWTJGdWRtRnpJRDBnYm1WM0lFTmhiblpoYzBSaGRHRW9jR0YwYUN3Z2MzUmhkSE1wTzF4dUlDQWdJR052Ym5OMElIQmhjbk5sWkNBOUlFcFRUMDR1Y0dGeWMyVW9jMjkxY21ObEtTQmhjeUJKUTJGdWRtRnpPMXh1WEc0Z0lDQWdabTl5SUNoamIyNXpkQ0JqSUc5bUlIQmhjbk5sWkM1dWIyUmxjeWtnZTF4dUlDQWdJQ0FnSUNCcFppQW9ZeTUwZVhCbElEMDlJRndpWjNKdmRYQmNJaWtnWTI5dWRHbHVkV1U3WEc0Z0lDQWdJQ0FnSUdsbUlDaGpMblI1Y0dVZ1BUMGdYQ0owWlhoMFhDSXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHTnZibk4wSUhzZ1puSnZiblJ0WVhSMFpYSXNJRzFsZEdGa1lYUmhMQ0JzYVc1bGN5d2djMlZqZEdsdmJuTWdmU0E5SUcxaGNtdGtiM2R1VTI5MWNtTmxTVzF3YjNKMEtIQmhkR2dzSUdNdWRHVjRkQ3dnYVc1a1pYZ3VZMkZqYUdWelcyTXVhV1JkS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJR052Ym5OMElHTmhjbVFnUFNCdVpYY2dRMkZ1ZG1GelEyRnlaRVJoZEdFb2NHRjBhQ3dnWXk1cFpDd2dZeXdnWm5KdmJuUnRZWFIwWlhJcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnYzJWamRHbHZibk11Wm05eVJXRmphQ2dvYVNrZ1BUNGdZMkZ5WkM1elpXTjBhVzl1S0drcEtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUdOaGJuWmhjeTVqWVhKa0tHTmhjbVFwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdabTl5SUNoamIyNXpkQ0IwWVdjZ2FXNGdiV1YwWVdSaGRHRXVkR0ZuY3lrZ1kyRnVkbUZ6TG0xbGRHRmtZWFJoTG5SaFp5aDBZV2NwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdabTl5SUNoamIyNXpkQ0JzYVc1cklHOW1JRzFsZEdGa1lYUmhMbXhwYm10eklEOC9JRnRkS1NCallXNTJZWE11YldWMFlXUmhkR0V1YkdsdWF5aHNhVzVyS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJR1p2Y2lBb1kyOXVjM1FnWm1sbGJHUWdiMllnYVhSbGNtRjBaVWx1YkdsdVpVWnBaV3hrY3loc2FXNWxjeWtwSUdOaGJuWmhjeTV0WlhSaFpHRjBZUzVwYm14cGJtVkdhV1ZzWkNobWFXVnNaQ2s3WEc0Z0lDQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCallYSmtJRDBnYm1WM0lFTmhiblpoYzBOaGNtUkVZWFJoS0hCaGRHZ3NJR011YVdRc0lHTXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ1kyRnVkbUZ6TG1OaGNtUW9ZMkZ5WkNrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNCOVhHNWNiaUFnSUNCeVpYUjFjbTRnWTJGdWRtRnpMbUoxYVd4a0tDazdYRzU5WEc1Y2JpOHFLaUJOWlhSaFpHRjBZU0JtYjNJZ1lTQnpjR1ZqYVdacFl5QmpZVzUyWVhNZ1kyRnlaQzRnS2k5Y2JtRmljM1J5WVdOMElHTnNZWE56SUVGaWMzUnlZV04wUTJGdWRtRnpRMkZ5WkVSaGRHRWdlMXh1SUNBZ0lIQjFZbXhwWXlCdFpYUmhaR0YwWVRvZ1RXVjBZV1JoZEdFZ1BTQnVaWGNnVFdWMFlXUmhkR0VvS1R0Y2JseHVJQ0FnSUhCMVlteHBZeUJqYjI1emRISjFZM1J2Y2loY2JpQWdJQ0FnSUNBZ2NIVmliR2xqSUhCaGRHZzZJSE4wY21sdVp5eGNiaUFnSUNBZ0lDQWdjSFZpYkdsaklHbGtPaUJ6ZEhKcGJtY3NYRzRnSUNBZ0lDQWdJSEJ5YjNSbFkzUmxaQ0J1YjJSbFNuTnZiam9nUTJGdWRtRnpWR1Y0ZEVSaGRHRWdmQ0JEWVc1MllYTk1hVzVyUkdGMFlTQjhJRU5oYm5aaGMwWnBiR1ZFWVhSaFhHNGdJQ0FnS1NCN2ZWeHVYRzRnSUNBZ2NIVmliR2xqSUdKMWFXeGtLQ2s2SUVwemIyNUNZWE5sUTJGdWRtRnpRMkZ5WkNCN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FrWm1sc1pUb2dkR2hwY3k1d1lYUm9MRnh1SUNBZ0lDQWdJQ0FnSUNBZ0pHbGtPaUIwYUdsekxtbGtMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0pIQnZjMmwwYVc5dU9pQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdlRG9nZEdocGN5NXViMlJsU25OdmJpNTRMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSGs2SUhSb2FYTXVibTlrWlVwemIyNHVlU3hjYmlBZ0lDQWdJQ0FnSUNBZ0lIMHNYRzRnSUNBZ0lDQWdJQ0FnSUNBa1pHbHRaVzV6YVc5dWN6b2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSGRwWkhSb09pQjBhR2x6TG01dlpHVktjMjl1TG5kcFpIUm9MRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2hsYVdkb2REb2dkR2hwY3k1dWIyUmxTbk52Ymk1b1pXbG5hSFFzWEc0Z0lDQWdJQ0FnSUNBZ0lDQjlMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0pHTnZiRzl5T2lCMGFHbHpMbTV2WkdWS2MyOXVMbU52Ykc5eUxGeHVJQ0FnSUNBZ0lDQWdJQ0FnSkd4cGJtczZJRXhwYm1zdVptbHNaU2gwYUdsekxuQmhkR2dwTG5kcGRHaENiRzlqYXloMGFHbHpMbWxrS1M1MGIwOWlhbVZqZENncExGeHVJQ0FnSUNBZ0lDQjlPMXh1SUNBZ0lIMWNibjFjYmx4dUx5b3FJRTFsZEdGa1lYUmhJR1p2Y2lCaElITndaV05wWm1saklHTmhjbVFnYVc0Z1lTQmpZVzUyWVhNZ2RtbGxkeTRnS2k5Y2JtVjRjRzl5ZENCamJHRnpjeUJEWVc1MllYTkRZWEprUkdGMFlTQmxlSFJsYm1SeklFRmljM1J5WVdOMFEyRnVkbUZ6UTJGeVpFUmhkR0VnZTF4dUlDQWdJSEIxWW14cFl5QnpaV04wYVc5dWN6b2dVMlZqZEdsdmJrUmhkR0ZiWFNBOUlGdGRPMXh1SUNBZ0lIQjFZbXhwWXlCamIyNXpkSEoxWTNSdmNpaGNiaUFnSUNBZ0lDQWdjSFZpYkdsaklIQmhkR2c2SUhOMGNtbHVaeXhjYmlBZ0lDQWdJQ0FnY0hWaWJHbGpJR2xrT2lCemRISnBibWNzWEc0Z0lDQWdJQ0FnSUhCeWIzUmxZM1JsWkNCdWIyUmxTbk52YmpvZ1EyRnVkbUZ6VkdWNGRFUmhkR0VnZkNCRFlXNTJZWE5NYVc1clJHRjBZU0I4SUVOaGJuWmhjMFpwYkdWRVlYUmhMRnh1SUNBZ0lDQWdJQ0J3ZFdKc2FXTWdabkp2Ym5SdFlYUjBaWEkvT2lCU1pXTnZjbVE4YzNSeWFXNW5MQ0JLYzI5dVJuSnZiblJ0WVhSMFpYSkZiblJ5ZVQ1Y2JpQWdJQ0FwSUh0Y2JpQWdJQ0FnSUNBZ2MzVndaWElvY0dGMGFDd2dhV1FzSUc1dlpHVktjMjl1S1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0J3ZFdKc2FXTWdjMlZqZEdsdmJpaHpaV04wYVc5dU9pQlRaV04wYVc5dVJHRjBZU2s2SUZObFkzUnBiMjVFWVhSaElIdGNiaUFnSUNBZ0lDQWdkR2hwY3k1elpXTjBhVzl1Y3k1d2RYTm9LSE5sWTNScGIyNHBPMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdjMlZqZEdsdmJqdGNiaUFnSUNCOVhHNWNiaUFnSUNCd2RXSnNhV01nWW5WcGJHUW9LVG9nU25OdmJrTmhiblpoYzBOaGNtUWdlMXh1SUNBZ0lDQWdJQ0J6ZDJsMFkyZ2dLSFJvYVhNdWJtOWtaVXB6YjI0dWRIbHdaU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdZMkZ6WlNCY0luUmxlSFJjSWpwY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQXVMaTRvYzNWd1pYSXVZblZwYkdRb0tTQmhjeUJLYzI5dVFtRnpaVU5oYm5aaGMwTmhjbVFwTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWthVzVtYVdWc1pITTZJSFJvYVhNdWJXVjBZV1JoZEdFdVptbHVhWE5vU1c1c2FXNWxSbWxsYkdSektDa3NYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNSbWNtOXVkRzFoZEhSbGNqb2dkR2hwY3k1bWNtOXVkRzFoZEhSbGNpeGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSkhObFkzUnBiMjV6T2lCMGFHbHpMbk5sWTNScGIyNXpMbTFoY0Nnb2VDa2dQVDRnZUM1aWRXbHNaQ2dwS1N4Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdKSFJoWjNNNklIUm9hWE11YldWMFlXUmhkR0V1Wm1sdWFYTm9WR0ZuY3lncExGeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FrYkdsdWEzTTZJSFJvYVhNdWJXVjBZV1JoZEdFdVptbHVhWE5vVEdsdWEzTW9LU3hjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0pIUjVjR1U2SUZ3aWRHVjRkQzFqWVhKa1hDSXNYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNSamIyeHZjam9nZEdocGN5NXViMlJsU25OdmJpNWpiMnh2Y2l4Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOUlHRnpJRXB6YjI1RFlXNTJZWE5VWlhoMFEyRnlaRHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHTmhjMlVnWENKbWFXeGxYQ0k2WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0xpNHVjM1Z3WlhJdVluVnBiR1FvS1N4Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdKR3hwYm10bFpFWnBiR1U2SUhSb2FYTXVibTlrWlVwemIyNHVabWxzWlN4Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOUlHRnpJRXB6YjI1RFlXNTJZWE5HYVd4bFEyRnlaRHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHTmhjMlVnWENKc2FXNXJYQ0k2WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0xpNHVjM1Z3WlhJdVluVnBiR1FvS1N4Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdKSFZ5YkRvZ2RHaHBjeTV1YjJSbFNuTnZiaTUxY213c1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZTQmhjeUJLYzI5dVEyRnVkbUZ6VjJWaVEyRnlaRHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDOHZJSEpsZEhWeWJpQnVaWGRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJSDFjYm4xY2JseHVMeW9xSUUxbGRHRmtZWFJoSUdadmNpQjBhR1VnZDJodmJHVWdZMkZ1ZG1GeklIQmhaMlVnWVhNZ1lTQjNhRzlzWlM0Z0tpOWNibVY0Y0c5eWRDQmpiR0Z6Y3lCRFlXNTJZWE5FWVhSaElIdGNiaUFnSUNCd2RXSnNhV01nWTJGeVpITTZJRU5oYm5aaGMwTmhjbVJFWVhSaFcxMGdQU0JiWFR0Y2JpQWdJQ0J3ZFdKc2FXTWdiV1YwWVdSaGRHRTZJRTFsZEdGa1lYUmhJRDBnYm1WM0lFMWxkR0ZrWVhSaEtDazdYRzVjYmlBZ0lDQndkV0pzYVdNZ1kyOXVjM1J5ZFdOMGIzSW9jSFZpYkdsaklIQmhkR2c2SUhOMGNtbHVaeXdnY0hWaWJHbGpJSE4wWVhSek9pQkdhV3hsVTNSaGRITXBJSHQ5WEc1Y2JpQWdJQ0J3ZFdKc2FXTWdZMkZ5WkNoa09pQkRZVzUyWVhORFlYSmtSR0YwWVNrNklFTmhiblpoYzBOaGNtUkVZWFJoSUh0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTVqWVhKa2N5NXdkWE5vS0dRcE8xeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z1pEdGNiaUFnSUNCOVhHNWNiaUFnSUNCd2RXSnNhV01nWW5WcGJHUW9LVG9nU25OdmJrTmhiblpoY3lCN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FrWTJGeVpITTZJSFJvYVhNdVkyRnlaSE11YldGd0tDaDRLU0E5UGlCNExtSjFhV3hrS0NrcExGeHVJQ0FnSUNBZ0lDQWdJQ0FnSkdOMGFXMWxPaUIwYUdsekxuTjBZWFJ6TG1OMGFXMWxMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0pHMTBhVzFsT2lCMGFHbHpMbk4wWVhSekxtMTBhVzFsTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdKR2x1Wm1sbGJHUnpPaUIwYUdsekxtMWxkR0ZrWVhSaExtWnBibWx6YUVsdWJHbHVaVVpwWld4a2N5Z3BMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0pHeHBibXR6T2lCMGFHbHpMbTFsZEdGa1lYUmhMbVpwYm1semFFeHBibXR6S0Nrc1hHNGdJQ0FnSUNBZ0lDQWdJQ0FrZEdGbmN6b2dkR2hwY3k1dFpYUmhaR0YwWVM1bWFXNXBjMmhVWVdkektDa3NYRzRnSUNBZ0lDQWdJQ0FnSUNBa2NHRjBhRG9nZEdocGN5NXdZWFJvTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdKSE5wZW1VNklIUm9hWE11YzNSaGRITXVjMmw2WlN4Y2JpQWdJQ0FnSUNBZ2ZUdGNiaUFnSUNCOVhHNTlYRzRpTENBaWFXMXdiM0owSUhzZ1kyRnVkbUZ6U1cxd2IzSjBJSDBnWm5KdmJTQmNJbWx1WkdWNEwybHRjRzl5ZEM5allXNTJZWE5jSWp0Y2JtbHRjRzl5ZENCN0lHMWhjbXRrYjNkdVNXMXdiM0owSUgwZ1puSnZiU0JjSW1sdVpHVjRMMmx0Y0c5eWRDOXRZWEpyWkc5M2Jsd2lPMXh1YVcxd2IzSjBJSHNnUTJGdWRtRnpTVzF3YjNKMFVtVnpkV3gwTENCSmJYQnZjblJEYjIxdFlXNWtMQ0JOWVhKclpHOTNia2x0Y0c5eWRGSmxjM1ZzZENCOUlHWnliMjBnWENKcGJtUmxlQzkzWldJdGQyOXlhMlZ5TDIxbGMzTmhaMlZjSWp0Y2JseHVMeW9xSUZkbFlpQjNiM0pyWlhJZ1pXNTBjbmtnY0c5cGJuUWdabTl5SUdsdGNHOXlkR2x1Wnk0Z0tpOWNibTl1YldWemMyRm5aU0E5SUdGemVXNWpJQ2hsZG1WdWRDa2dQVDRnZTF4dUlDQWdJSFJ5ZVNCN1hHNGdJQ0FnSUNBZ0lHTnZibk4wSUcxbGMzTmhaMlVnUFNCbGRtVnVkQzVrWVhSaElHRnpJRWx0Y0c5eWRFTnZiVzFoYm1RN1hHNWNiaUFnSUNBZ0lDQWdhV1lnS0cxbGMzTmhaMlV1ZEhsd1pTQTlQVDBnWENKdFlYSnJaRzkzYmx3aUtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCamIyNXpkQ0J0WVhKclpHOTNiaUE5SUcxaGNtdGtiM2R1U1cxd2IzSjBLRzFsYzNOaFoyVXVjR0YwYUN3Z2JXVnpjMkZuWlM1amIyNTBaVzUwY3l3Z2JXVnpjMkZuWlM1dFpYUmhaR0YwWVN3Z2JXVnpjMkZuWlM1emRHRjBLVHRjYmx4dUlDQWdJQ0FnSUNBZ0lDQWdjRzl6ZEUxbGMzTmhaMlVvZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhSNWNHVTZJRndpYldGeWEyUnZkMjVjSWl4Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYTjFiSFE2SUcxaGNtdGtiM2R1TEZ4dUlDQWdJQ0FnSUNBZ0lDQWdmU0JoY3lCTllYSnJaRzkzYmtsdGNHOXlkRkpsYzNWc2RDazdYRzRnSUNBZ0lDQWdJSDBnWld4elpTQnBaaUFvYldWemMyRm5aUzUwZVhCbElEMDlQU0JjSW1OaGJuWmhjMXdpS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JqYjI1emRDQmpZVzUyWVhNZ1BTQmpZVzUyWVhOSmJYQnZjblFvYldWemMyRm5aUzV3WVhSb0xDQnRaWE56WVdkbExtTnZiblJsYm5SekxDQnRaWE56WVdkbExtbHVaR1Y0TENCdFpYTnpZV2RsTG5OMFlYUXBPMXh1WEc0Z0lDQWdJQ0FnSUNBZ0lDQndiM04wVFdWemMyRm5aU2g3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZEhsd1pUb2dYQ0pqWVc1MllYTmNJaXhjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhOMWJIUTZJR05oYm5aaGN5eGNiaUFnSUNBZ0lDQWdJQ0FnSUgwZ1lYTWdRMkZ1ZG1GelNXMXdiM0owVW1WemRXeDBLVHRjYmlBZ0lDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIQnZjM1JOWlhOellXZGxLSHNnSkdWeWNtOXlPaUJjSWxWdWMzVndjRzl5ZEdWa0lHbHRjRzl5ZENCdFpYUm9iMlF1WENJZ2ZTazdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQjlJR05oZEdOb0lDaGxjbkp2Y2lrZ2UxeHVJQ0FnSUNBZ0lDQmpiMjV6YjJ4bExtVnljbTl5S0dCRVlYUmhZMjl5WlNCSmJtUmxlR1Z5SUdaaGFXeGxaQ0IwYnlCcGJtUmxlQ0FrZTJWMlpXNTBMbVJoZEdFdWNHRjBhSDA2SUNSN1pYSnliM0o5WUNrN1hHNGdJQ0FnSUNBZ0lIQnZjM1JOWlhOellXZGxLSHNnSkdWeWNtOXlPaUJsY25KdmNpNXRaWE56WVdkbElIMHBPMXh1SUNBZ0lIMWNibjA3WEc0aVhTd0tJQ0FpYldGd2NHbHVaM01pT2lBaU1HcEVRVUZCTEVsQlFVRkJMRWRCUVVGRExFZEJRVUVzUTBGQlFVTXNSMEZCUVVNc1MwRkJRU3hGUVVGRExGTkJRVk1zUlVGQlJVTXNSVUZCUlN4RFFVRlhMRTlCUVU5R0xFbEJRV3BDTEZWQlFXOURMRTlCUVU5RExFbEJRV3BDTEZOQlFYZENRU3hIUVVGUExGRkJRVkZETEVWQlFVVXNSVUZCWXl4UFFVRlBMRkZCUVc1Q0xGbEJRVEpDTEU5QlFVOHNTVUZCU1N4UFFVRlBMRU5CUVVNc1JVRkJSVUVzUTBGQlF5eEZRVUZaTEU5QlFVOUdMRWxCUVdwQ0xGTkJRWGxDUVN4SFFVRlJMRlZCUVZWRkxFVkJRVVVzUlVGQlJTeEZRVUZGTEZWQlFWVkJMRVZCUVVVc1EwRkJReXhIUVVGbExFOUJRVThzVFVGQmNFSXNXVUZCZVVJc1MwRkJTMFlzUjBGQlN5eFZRVUZWTEVOQlFVTXNUMEZCVHl4VFFVRlRMRVZCUVVVc1EwRkJReXhKUVVGSlJTeEZRVUZGTEVOQlFVTXNSVUZCUlN4VFFVRlRReXhGUVVGRlF5eEZRVUZGTEVOQlFVTXNSMEZCUjBZc1JVRkJSVVVzUTBGQlF5eEZRVUZGTEU5QlFVOUdMRVZCUVVWRkxFTkJRVU1zUlVGQlJTeFJRVUZSTEVsQlFVbERMRVZCUVVWSUxFVkJRVVZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVWQkxFVkJRVVVzUlVGQlJTeEhRVUZITEZGQlFWRXNRMEZCUXl4RFFVRkRMRVZCUVVVc1QwRkJUeXhGUVVGRlFTeERRVUZETEVWQlFVVXNTMEZCUzBNc1JVRkJSU3hSUVVGUlFTeEZRVUZGUVN4RlFVRkZMRkZCUVZGR0xFTkJRVU1zUlVGQlJVVXNSVUZCUlN4RlFVRkZMRWRCUVVkQkxFVkJRVVVzVDBGQlR5eERRVUZETEU5QlFVOUdMRVZCUVVVc1JVRkJSU3hGUVVGRlFTeEZRVUZGTEVWQlFVVkVMRVZCUVVWRExFVkJRVVVzUlVGQlJTeFRRVUZUUnl4RlFVRkZTaXhGUVVGRlJTeEZRVUZGTEVOQlFVTkVMRVZCUVVVc1JVRkJSVWNzUlVGQlJVb3NRMEZCUXl4SFFVRkhMRTlCUVU4c1pVRkJaVWtzUlVGQlJVb3NSVUZCUlN4RFFVRkRMR0ZCUVdFc1IwRkJSeXhYUVVGWExFZEJRVWNzU1VGQlNVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSVVFzUlVGQlJTeEZRVUZGTEZOQlFWTkhMRVZCUVVVc1EwRkJReXhQUVVGUExHVkJRV1ZCTEVWQlFVVXNZVUZCWVN4RFFVRkRMRTFCUVUwc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJVZ3NSVUZCUlN4RlFVRkZMRk5CUVZOSExFVkJRVVVzUTBGQlF5eEpRVUZKU2l4RlFVRkZTU3hIUVVGSFFTeEZRVUZGTEZkQlFWY3NWVUZCVlN4RFFVRkRMRTlCUVU5QkxFVkJRVVVzVDBGQlR5eEZRVUZGTEZWQlFWVXNRMEZCUXl4UFFVRlBRU3hEUVVGRExFVkJRVVVzVDBGQlQwZ3NSVUZCUlN4RlFVRkZSQ3hGUVVGRkxFbEJRVWxCTEVOQlFVTXNSVUZCUlVFc1EwRkJReXhGUVVGRlF5eEZRVUZGTEVWQlFVVXNVMEZCVTBjc1JVRkJSVW9zUlVGQlJTeERRVUZETEU5QlFVOHNUMEZCVHl4VlFVRlZMR1ZCUVdVc1MwRkJTMGtzUlVGQlJVb3NRMEZCUXl4RFFVRkRMRVZCUVVWRExFVkJRVVVzUlVGQlJTeEhRVUZIUVN4RlFVRkZRU3hGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4VFFVRlRMRVZCUVVWRUxFVkJRVVZETEVWQlFVVXNRMEZCUXl4aFFVRmhMRk5CUVZORExFVkJRVVZGTEVWQlFVVXNRMEZCUXl4SFFVRkhMRVZCUVVVc1owSkJRV2RDUml4SFFVRkhMRTlCUVU4c1NVRkJTVUVzUlVGQlJVVXNRMEZCUXl4RlFVRkZMRXRCUVVzc1JVRkJSVUVzUTBGQlF5eERRVUZETEVsQlFVbEVMRVZCUVVWRUxFVkJRVVVzVlVGQlZTeFRRVUZUUnl4RlFVRkZSQ3hGUVVGRlNpeEZRVUZGTEVOQlFVTXNVVUZCVVVNc1JVRkJSU3hGUVVGRlFTeEZRVUZGUnl4RlFVRkZTQ3hKUVVGSlJDeEZRVUZGUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhUUVVGVFN5eEZRVUZGUml4RlFVRkZTaXhGUVVGRlF5eEZRVUZGTEVOQlFVTXNUMEZCVHl4VFFVRlRSeXhGUVVGRlNpeEZRVUZGTEVOQlFVTkxMRVZCUVVWTUxFVkJRVVVzVDBGQlR5eFRRVUZUUXl4RlFVRkZMRU5CUVVOSExFVkJRVVZLTEVWQlFVVkRMRU5CUVVNc1JVRkJSVUVzUlVGQlJVUXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxGTkJRVk5ETEVWQlFVVkRMRVZCUVVWRExFVkJRVVVzUTBGQlEwZ3NSVUZCUlVrc1JVRkJSVW9zUlVGQlJVTXNSVUZCUlVNc1JVRkJSVU1zUTBGQlF5eERRVUZETEVWQlFVVkdMRU5CUVVNc1JVRkJSVVFzUTBGQlF5eERRVUZETEZOQlFWTXNSVUZCUlVrc1JVRkJSVW9zUlVGQlJTeERRVUZETEU5QlFVOU5MRVZCUVVVc1UwRkJVMDRzUlVGQlJVTXNSVUZCUlVNc1JVRkJSVU1zUlVGQlJTeERRVUZETEU5QlFVOUlMRVZCUVVVc1QwRkJUeXhEUVVGRFNTeEZRVUZGU0N4RlFVRkZReXhGUVVGRlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRlNDeERRVUZETEVOQlFVTXNRMEZCUXl4VFFVRlRUeXhGUVVGRlNDeEZRVUZGU2l4RlFVRkZMRU5CUVVNc1NVRkJTVU1zUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlN4SlFVRkpSQ3hEUVVGRExFVkJRVVVzVDBGQlQwc3NSVUZCUlVRc1JVRkJSU3hWUVVGVkxFTkJRVU1zU1VGQlNVRXNSVUZCUlVnc1JVRkJSU3hEUVVGRExFVkJRVVZCTEVWQlFVVXNSMEZCUnl4SFFVRkhSeXhGUVVGRlNDeEZRVUZGTEVsQlFVbEhMRVZCUVVVc1EwRkJReXhIUVVGSExFZEJRVWNzU1VGQlNTeFRRVUZUUVN4RlFVRkZMRU5CUVVNc1NVRkJTVW9zUlVGQlJVMHNSVUZCUlN4VFFVRlRSaXhGUVVGRlNpeEZRVUZGUXl4SFFVRkZReXhIUVVGRkxFTkJRVU1zVDBGQlQwVXNSVUZCUlN4UFFVRlBTQ3hMUVVGSlF5eEhRVUZGTEU5QlFVOHNSVUZCUlN4UFFVRlBMRXRCUVVzc1EwRkJRMFlzUlVGQlJTeERRVUZETEVOQlFVTXNSVUZCUlN4aFFVRmhMRU5CUVVNc1JVRkJSVVVzUjBGQlJTeGhRVUZoUkN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJVY3NRMEZCUXl4RlFVRkZMRTlCUVU4c1QwRkJUeXhMUVVGTExFVkJRVVVzVTBGQlUwRXNSVUZCUlN4RFFVRkRMRTlCUVU5QkxFZEJRVWNzUlVGQlJTeFJRVUZSTEVOQlFVTXNSVUZCUlVvc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJVTXNSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVZCTEVOQlFVTXNRMEZCUXl4VFFVRlRUeXhIUVVGSExFTkJRVU1zVDBGQmJVSXNUMEZCVHl4UlFVRndRaXhYUVVFd1FpeERRVUZETEZOQlFWTkRMRWRCUVVjc1EwRkJReXhIUVVGSExFTkJRVU5FTEVWQlFVVXNSVUZCUlN4TlFVRk5MRWxCUVVrc1RVRkJUU3dyUmtGQkswWXNRMEZCUXl4RFFVRkRMRk5CUVZORkxFVkJRVVZPTEVWQlFVVXNRMEZCUTBzc1JVRkJSU3hGUVVGRkxFbEJRVWxVTEVWQlFVVk5MRVZCUVVVc1UwRkJVMFlzUlVGQlJVb3NSVUZCUlN4RFFVRkRMRTlCUVU5SkxFVkJRVVZLTEVOQlFVTXNSVUZCUlN4RlFVRkZTU3hEUVVGRExFVkJRVVVzUjBGQlIwb3NSVUZCUlN4SFFVRkhMRVZCUVVVc1RVRkJUU3hKUVVGSkxFMUJRVTBzWVVGQllVa3NSVUZCUlN4TFFVRkxMRWxCUVVrc1JVRkJSU3hsUVVGbFNpeEZRVUZGTERKRlFVRXlSU3hGUVVGRkxFbEJRVWxETEVWQlFVVkZMRVZCUVVWSUxFVkJRVVVzUlVGQlJVc3NSMEZCUjBvc1JVRkJSU3hUUVVGVFJ5eEZRVUZGTEVOQlFVTXNUMEZCVDBFc1JVRkJSU3hGUVVGRkxFVkJRVVZGTEVWQlFVVXNVMEZCVTBZc1JVRkJSVW9zUlVGQlJTeERRVUZETEU5QlFVOUpMRWxCUVVsSUxFVkJRVVZFTEVOQlFVTXNSVUZCUlVFc1JVRkJSVWtzUlVGQlJTeEZRVUZGTEV0QlFVdEJMRU5CUVVNc1IwRkJSeXhIUVVGSFF5eEZRVUZGTEUxQlFVMHNTVUZCU1N4TlFVRk5RU3hGUVVGRkxEQkVRVUV3UkN4RlFVRkZMRTlCUVU4c1NVRkJTVWdzUlVGQlJTeFRRVUZUUml4RlFVRkZReXhGUVVGRkxFTkJRVU1zU1VGQlNVTXNSVUZCUlVNc1JVRkJSVVlzUlVGQlJTeFBRVUZQUXl4RlFVRkZSaXhGUVVGRkxFOUJRVTlYTEVWQlFVVldMRVZCUVVWRkxFVkJRVVVzVTBGQlV5eEZRVUZGTEZGQlFWRXNSVUZCUlZNc1JVRkJSVllzUlVGQlJVa3NSVUZCUlN4VFFVRlRSaXhIUVVGRlNpeEhRVUZGTEVOQlFVTXNTVUZCU1VNc1IwRkJSVTBzUlVGQlJWQXNSMEZCUlVrc1IwRkJSU3hIUVVGSExFVkJRVVVzVFVGQlRTeERRVUZETEV0QlFVdEJMRWRCUVVVc1MwRkJTeXhQUVVGUFNDeEhRVUZGTEVOQlFVTXNSVUZCUlN4SlFVRkpRU3hIUVVGRkxFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNTMEZCU3l4RFFVRkRMRVZCUVVVc1NVRkJTVVFzUlVGQlJTeE5RVUZOUXl4RlFVRkZReXhEUVVGRExFTkJRVU1zUlVGQlJVVXNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eFRRVUZUVXl4RlFVRkZWQ3hGUVVGRlNpeEZRVUZGTEVOQlFVTXNUMEZCVHl4SlFVRkpSU3hGUVVGRkxGTkJRVk5FTEVWQlFVVkRMRVZCUVVVc1EwRkJReXhQUVVGUFR5eEZRVUZGTEVWQlFVVlFMRVZCUVVWR0xFVkJRVVZETEVWQlFVVXNUMEZCVDFVc1JVRkJSVlFzUlVGQlJVWXNSVUZCUlN4alFVRmpTU3hEUVVGRExFVkJRVVZSTEVWQlFVVldMRVZCUVVWR0xFVkJRVVZETEVWQlFVVXNUVUZCVFVNc1JVRkJSVUVzUlVGQlJVWXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVTBGQlUyTXNSVUZCUlZZc1JVRkJSVW9zUlVGQlJTeERRVUZETEVkQlFXRXNUMEZCVDBNc1JVRkJSVVFzU1VGQmJrSXNWVUZCZFVJc1MwRkJTeXhOUVVGTlF5eERRVUZETEVsQlFVbEJMRWRCUVVkRUxFVkJRVVVzUjBGQlIwRXNSVUZCUlN4RlFVRkZMRTFCUVUwc1NVRkJTU3hOUVVGTlNTeEZRVUZGTERKRFFVRXlReXhGUVVGRkxFbEJRVWxJTEVOQlFVTXNRMEZCUXl4VFFVRlRZeXhGUVVGRldDeEZRVUZGTEVOQlFVTXNUMEZCVDFVc1JVRkJSU3hUUVVGVFZpeERRVUZETEVWQlFVVlRMRVZCUVVVc1ZVRkJWVlFzUlVGQlJTeEpRVUZKUVN4RFFVRkRMRVZCUVVVc1NVRkJTU3hUUVVGVFNpeEZRVUZGTEVOQlFVTXNUMEZCVDBFc1JVRkJSU3hYUVVGWExFVkJRVVZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhUUVVGVFdTeEZRVUZGV2l4RlFVRkZMRU5CUVVNc1QwRkJUMVVzUlVGQlJTeFRRVUZUVml4RFFVRkRMRVZCUVVWVExFVkJRVVVzVlVGQlZWUXNSVUZCUlN4SlFVRkpRU3hEUVVGRExFVkJRVVVzU1VGQlNTeFRRVUZUU2l4RlFVRkZMRU5CUVVNc1QwRkJUMEVzUlVGQlJTeFhRVUZYTEVWQlFVVkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eFRRVUZUWVN4RlFVRkZZaXhGUVVGRkxFTkJRVU1zVDBGQlQxVXNSVUZCUlN4UlFVRlJWaXhEUVVGRExFVkJRVVZUTEVWQlFVVXNVMEZCVTFRc1JVRkJSU3hKUVVGSlFTeERRVUZETEVWQlFVVXNTVUZCU1N4VFFVRlRTaXhGUVVGRkxFTkJRVU1zVDBGQlQwRXNSVUZCUlN4VlFVRlZMRVZCUVVWSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4VFFVRlRZeXhGUVVGRlpDeEZRVUZGTEVOQlFVTXNUMEZCVDFVc1JVRkJSU3hSUVVGUlZpeERRVUZETEVWQlFVVlRMRVZCUVVVc1UwRkJVMVFzUlVGQlJTeEpRVUZKUVN4RFFVRkRMRVZCUVVVc1NVRkJTU3hUUVVGVFNpeEZRVUZGTEVOQlFVTXNUMEZCVDBFc1JVRkJSU3hWUVVGVkxFVkJRVVZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhUUVVGVFpTeEZRVUZGWml4RlFVRkZMRU5CUVVNc1QwRkJUMEVzWVVGQllVWXNRMEZCUXl4RFFVRkRMRk5CUVZOclFpeEZRVUZGYUVJc1JVRkJSU3hEUVVGRExFMUJRWGxDTEVOQlFVTXNSVUZCUlN4VFFVRlRMRXRCUVV0QkxFTkJRVU1zU1VGQmNrTXNaMEpCUVhORExFTkJRVU1zVTBGQlUybENMRVZCUVVWcVFpeEZRVUZGTEVOQlFVTXNUMEZCVDBrc1JVRkJSU3hIUVVGSExFOUJRVThzVTBGQlUwb3NRMEZCUXl4RFFVRkRMRU5CUVVNc1UwRkJVMUVzUlVGQlJWSXNSVUZCUlVvc1JVRkJSU3hEUVVGRExFMUJRVTBzUTBGQlF5eFBRVUZQTEVkQlFVY3NUVUZCVFVrc1JVRkJSU3hOUVVGTlNpeEZRVUZGTEZOQlFWTXNSMEZCUnl4VFFVRlRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVTBGQlUxY3NSVUZCUlZBc1JVRkJSVW9zUlVGQlJTeERRVUZETEU5QlFVOXZRaXhGUVVGRmNFSXNRMEZCUXl4SlFVRkpRU3hGUVVGRkxFTkJRVU5CTEVOQlFVTXNSMEZCUnl4RFFVRkRMRTlCUVU4c1IwRkJSeXhOUVVGTkxFZEJRVWNzVFVGQlRTeExRVUZMTEZOQlFWTkpMRVZCUVVVc1UwRkJVMG9zUTBGQlF5eERRVUZETEVOQlFVTXNVMEZCVTNOQ0xFVkJRVVZzUWl4RlFVRkZTaXhGUVVGRkxFTkJRV2RDTEVkQlFWb3NRMEZCUTBFc1IwRkJZMGtzUlVGQlJTeFRRVUZUU2l4RlFVRkZMRk5CUVZNc1QwRkJUMGtzUlVGQlJTeEpRVUZKU0N4RlFVRkZSeXhGUVVGRkxGZEJRVmRLTEVWQlFVVXNVMEZCVXl4VFFVRlRTU3hGUVVGRlNpeEZRVUZGTEVOQlFVTXNSMEZCUnl4VlFVRlZMRU5CUVVNc1IwRkJXVVVzUlVGQlJTeGxRVUZZTEU5QlFYZENMRTlCUVU5QkxFVkJRVVVzWVVGQllTeEpRVUZKUlN4SFFVRmxMRTlCUVU4c1MwRkJjRUlzV1VGQmQwSXNUMEZCVDBZc1JVRkJSU3hoUVVGaFJTeEhRVUZGUVN4RlFVRkRMRVZCUVVVc1IwRkJSeXhOUVVGTkxFdEJRVXNzUTBGQlF5eFJRVUZSU0N4RlFVRkZMRWxCUVVrc1NVRkJTVWNzUTBGQlF5eEZRVUZGUkN4RlFVRkZMRVZCUVVWQkxFVkJRVVZJTEVWQlFVVXNUMEZCVDBjc1NVRkJTVVlzUlVGQlJTeEpRVUZKUkN4RlFVRkZSeXhEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKUlN4RlFVRkZMRTFCUVUwc1MwRkJTMG9zUTBGQlF5eEZRVUZGTEU5QlFVOUpMRVZCUVVVc1MwRkJTeXhGUVVGRlFTeERRVUZETEVOQlFVTXNVVUZCVVVNc1IwRkJSU3hEUVVGRExFVkJRVVZwUWl4SFFVRkZMRVZCUVVWQkxFZEJRVVZ1UWl4RlFVRkZMRTlCUVU5dFFpeExRVUZKYWtJc1IwRkJSVVlzUlVGQlJXMUNMRVZCUVVNc1EwRkJReXhGUVVGRkxFZEJRVWNzVVVGQlVXaENMRWRCUVVVc1JVRkJSVUVzUjBGQlJWQXNSVUZCUlN4UFFVRlBUeXhMUVVGSlJDeEhRVUZGVGl4RlFVRkZUeXhGUVVGRExFTkJRVU1zUlVGQlJTeEhRVUZITEVsQlFVbERMRWRCUVVVc1EwRkJReXhGUVVGRkxGRkJRVkZETEUxQlFVdElMRWxCUVVjc1EwRkJReXhIUVVGSExHVkJRV1VzUzBGQlMwRXNSMEZCUlVjc1JVRkJReXhIUVVGSFJDeEhRVUZGTEV0QlFVdERMRVZCUVVNc1JVRkJSU3hQUVVGUFJDeEhRVUZGTEV0QlFVc3NSVUZCUlVFc1JVRkJReXhGUVVGRlNpeEZRVUZGTEZOQlFWTktMRVZCUVVVc1VVRkJVU3hGUVVGRlFTeEZRVUZGTEZOQlFWTXNUVUZCVFN4RFFVRkRMRTlCUVU5SkxFVkJRVVVzVDBGQlR5eE5RVUZOUVN4RlFVRkZMRTFCUVUwc1RVRkJUVUVzUlVGQlJTeE5RVUZOTEZOQlFWTktMRVZCUVVVc1UwRkJVeXhUUVVGVFF5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpkVUlzUlVGQlJTeERRVUZETEVWQlFVVXNVMEZCVTBNc1JVRkJSWEpDTEVWQlFVVktMRVZCUVVVc1EwRkJReXhIUVVGSGNVSXNSVUZCUldwQ0xFTkJRVU1zUlVGQlJTeE5RVUZOTEVOQlFVTXNUMEZCVDBvc1JVRkJSU3hMUVVGTExFZEJRVWNzVDBGQlR5eEZRVUZGTEVWQlFVVkpMRXRCUVV0dlFpeEpRVUZKUVN4RlFVRkZjRUlzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4UlFVRlJTQ3hGUVVGRmRVSXNSVUZCUlhCQ0xFTkJRVU1zUlVGQlJVWXNSVUZCUlN4RlFVRkZReXhGUVVGRkxFVkJRVVZGTEVWQlFVVXNSVUZCUlVNc1JVRkJSVTRzUlVGQlJVMHNSMEZCUnl4SFFVRkhMRU5CUVVNc1IwRkJSMEVzUzBGQlMwd3NSVUZCUlN4RFFVRkRReXhGUVVGRlJDeEZRVUZGU3l4RFFVRkRMRVZCUVVVc1MwRkJVMFFzU1VGQlNpeEpRVUZSUVN4RlFVRkZTaXhGUVVGRlN5eERRVUZETEVWQlFVVXNWMEZCVnl4TFFVRkxMRVZCUVZOR0xFVkJRVVVzVDBGQlQwVXNRMEZCUXl4SlFVRnFRanRCUVVGQkxFZEJRVEpDUml4RlFVRkZMRTlCUVU5RkxFTkJRVU1zU1VGQmFrSXNUVUZCTWtKR0xFVkJRVVVzVDBGQlQwVXNSVUZCUlN4RFFVRkRMRWxCUVc1Q08wRkJRVUVzUzBGQmQwSklMRWxCUVZGRkxFbEJRVW9zU1VGQlVVRXNSVUZCUlVNc1JVRkJSU3hKUVVGSlFTeEhRVUZITEVOQlFVTXNTVUZCU1dsQ0xFVkJRVVZ5UWl4RlFVRkZReXhGUVVGRlNTeEhRVUZGVUN4RlFVRkZTeXhGUVVGRkxFOUJRVTlLTEVWQlFVVkVMRU5CUVVNc1JVRkJSU3hEUVVGRExFdEJRVXQxUWl4RlFVRkZMRlZCUVZWc1FpeERRVUZETEVWQlFVVXNRMEZCUXl4UFFVRlBUQ3hGUVVGRkxFdEJRVXQxUWl4RlFVRkZMRVZCUVVVc1QwRkJUMmhDTEVkQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1UwRkJVMjFDTEVWQlFVVjBRaXhGUVVGRkxFTkJRVU1zUjBGQlJ5eERRVUZEWlN4RlFVRkZaaXhEUVVGRExFVkJRVVVzVFVGQlRTeEpRVUZKTEUxQlFVMHNhVUpCUVdsQ1FTeERRVUZETEVOQlFVTXNRMEZCUXl4VFFVRlRkVUlzUlVGQlJYWkNMRVZCUVVWS0xFVkJRVVVzUTBGQlF5eFBRVUZuUWl4UFFVRlBTU3hIUVVGcVFpeFRRVUZ0UWtFc1JVRkJSU3hQUVVGUFNpeERRVUZETEVWQlFVVkpMRVZCUVVWS0xFTkJRVU1zUTBGQlF5eERRVUZETEZOQlFWTTBRaXhIUVVGRmVFSXNSVUZCUlN4RFFVRkRMRWRCUVdFc1QwRkJUMEVzUjBGQmFrSXNVMEZCYlVJc1RVRkJUU3hKUVVGSkxFMUJRVTBzYVVKQlFXbENRU3hEUVVGRExFTkJRVU1zUTBGQlF5eFRRVUZUZVVJc1IwRkJSWHBDTEVWQlFVVXNRMEZCUXl4SFFVRmxMRTlCUVU5QkxFZEJRVzVDTEZkQlFYRkNMRTFCUVUwc1NVRkJTU3hOUVVGTkxHMUNRVUZ0UWtFc1EwRkJReXhEUVVGRExFTkJRVU1zVTBGQlV6QkNMRVZCUVVVeFFpeEZRVUZGTEVOQlFVTXNSMEZCWVN4UFFVRlBRU3hIUVVGcVFpeFRRVUZ0UWl4TlFVRk5MRWxCUVVrc1RVRkJUU3hwUWtGQmFVSkJMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWt5UWl4RlFVRkZMRVZCUVVWRExFVkJRVVVzUlVGQlJVTXNSMEZCUlN4RlFVRkZReXhIUVVGRkxFVkJRVVZFTEVkQlFVVkZMRWRCUVVVc1JVRkJSVVlzUjBGQlJVY3NSMEZCUlN4TFFVRkxMRk5CUVZORExFZEJRVVZxUXl4RlFVRkZTaXhGUVVGRkxFTkJRVU1zVDBGQlR5eEpRVUZKTEUxQlFVMUJMRVZCUVVVc1EwRkJReXhGUVVGRkxFdEJRVXRKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRk5CUVZOclF5eEhRVUZGYkVNc1JVRkJSVW9zUlVGQlJVTXNSVUZCUlN4RFFVRkRMRWxCUVVsRExFVkJRVVZHTEVWQlFVVkpMRVZCUVVVc1QwRkJUeXhQUVVGUFJpeEhRVUZITEVWQlFVVkZMRVZCUVVWcFF5eEhRVUZGY0VNc1JVRkJSVU1zUTBGQlF5eEZRVUZGUlN4RFFVRkRMRU5CUVVNc1UwRkJVMjFETEVkQlFVVnVReXhGUVVGRlNpeEZRVUZGUXl4RlFVRkZReXhGUVVGRkxFTkJRVU1zVFVGQlRTeERRVUZETEV0QlFVdEZMRVZCUVVWS0xFVkJRVVVzUlVGQlJVa3NSVUZCUlVvc1JVRkJSU3hGUVVGRkxFZEJRVWRKTEVWQlFVVklMRVZCUVVWRExFVkJRVVZCTEVWQlFVVkZMRVZCUVVWSUxFTkJRVU1zUTBGQlF5eERRVUZETEZOQlFWTjFReXhIUVVGRmNFTXNSVUZCUlVvc1JVRkJSU3hEUVVGRExFbEJRVWxETEVWQlFVVkRMRVZCUVVWRExFVkJRVVZGTEVWQlFVVkZMRVZCUVVWRExFVkJRVVZTTEVWQlFVVXNUVUZCVFZNc1IwRkJSVVFzUlVGQlJTeFBRVUZQUlN4SFFVRkZMRVZCUVVVc1IwRkJSMFFzUzBGQlNVd3NSVUZCUlN4UFFVRlBMRTFCUVUwc01rSkJRVEpDTEVkQlFVZHBRaXhGUVVGRmFrSXNRMEZCUXl4RlFVRkZMRU5CUVVNc1NVRkJTVk1zUjBGQlJVb3NSMEZCUlVFc1IwRkJSWGRDTEVkQlFVVnVRaXhIUVVGRlRDeEhRVUZGU1N4SFFVRkZSU3hIUVVGRmQwSXNSMEZCUlRGQ0xFZEJRVVZ4UWl4SFFVRkZReXhIUVVGRlJpeEhRVUZGTjBJc1JVRkJSU3hOUVVGTkxFVkJRVVZaTEVkQlFVVXNSVUZCUlN4VFFVRlRXaXhIUVVGRkxFTkJRVU1zVDBGQlR5eEZRVUZGTEZOQlFWTkJMRWRCUVVVc1EwRkJReXhQUVVGUGEwTXNSMEZCUld4RExFZEJRVVVzVTBGQlV5eEZRVUZGTEVWQlFVVXNSVUZCUlN4SFFVRkhMRU5CUVVNc1JVRkJSVUVzUlVGQlF5eERRVUZETEVWQlFVVXNVMEZCVTBFc1IwRkJSVW9zUjBGQlJTeERRVUZETEVsQlFVbERMRWRCUVVWSExFZEJRVVVzVDBGQlQwWXNSMEZCUlN4RFFVRkRMRVZCUVVWRExFZEJRVVVzUlVGQlJTeEhRVUZIUml4SlFVRkhSQ3hIUVVGRkxFMUJRVTBzUTBGQlEwa3NSMEZCUlN4TlFVRk5MRU5CUVVNc1JVRkJSU3hSUVVGUlF5eEhRVUZGTEVWQlFVVkJMRWRCUVVWS0xFZEJRVVZKTEV0QlFVbElMRWRCUVVWRExFVkJRVU1zUjBGQlIwUXNSMEZCUlN4TFFVRkxMRU5CUVVNc1EwRkJReXhGUVVGRlFTeEhRVUZGUXl4RlFVRkRMRVZCUVVVc1MwRkJTME1zUjBGQlJVTXNSVUZCUXl4RFFVRkRMRWRCUVVkQkxFZEJRVVVzUjBGQlIwd3NTVUZCUnl4SFFVRkhSeXhMUVVGSkxFOUJRVTlFTEVWQlFVTXNSVUZCUlVVc1JVRkJSU3hOUVVGTlZ5eEhRVUZGTEV0QlFVdEJMRWRCUVVVc1JVRkJSU3hGUVVGRkxFOUJRVThzUlVGQlJTeExRVUZMYTBJc1JVRkJReXhEUVVGRExFVkJRVVUxUWl4RlFVRkZMRk5CUVZORUxFZEJRVVVzUTBGQlF5eFBRVUZYUVN4SFFVRkZMRTlCUVU0c1IwRkJaMEpCTEVkQlFVVXNTMEZCVGl4RlFVRlRMRU5CUVVNc1MwRkJTMEVzUjBGQlJTeExRVUZMTEVkQlFVZEJMRWRCUVVVc1JVRkJSU3hGUVVGRkxFTkJRVU1zUzBGQlMwRXNSMEZCUlN4TFFVRkxOa0lzUjBGQlJTeEhRVUZITEV0QlFVc3NUVUZCVFRkQ0xFZEJRVVVzUjBGQlJ6WkNMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVVZzUWl4RlFVRkRMRVZCUVVWaUxFVkJRVVZYTEVkQlFVVnZRaXhIUVVGRmFFTXNSVUZCUlN4RlFVRkZZU3hIUVVGRlFTeEpRVUZITEVsQlFVbGlMRWRCUVVjc1IwRkJSMU1zUjBGQlJTeEZRVUZGVUN4RlFVRkZMRVZCUVVVc1UwRkJVME1zUjBGQlJTeERRVUZETEU5QlFVOUJMRWRCUVVVc1VVRkJVU3hGUVVGRlFTeEhRVUZGTEV0QlFVc3NSMEZCUnl4RlFVRkZRU3hIUVVGRkxFMUJRVTBzUlVGQlJTeERRVUZETEVWQlFVVXNTMEZCU3l4SFFVRkhMRVZCUVVVc1MwRkJTMEVzUjBGQlJTeE5RVUZOTEVOQlFVTXNSVUZCUlN4TFFVRkxMRWRCUVVjc1EwRkJReXhGUVVGRldTeEZRVUZETEVkQlFVZFVMRWRCUVVjc1IwRkJSMFlzUlVGQlJTeEhRVUZITEVWQlFVVkJMRVZCUVVVc1IwRkJSeXhGUVVGRlFTeEZRVUZGTEV0QlFVc3NVMEZCVXl4RlFVRkZMRVZCUVVVc1VVRkJVU3hKUVVGSlJTeEZRVUZGTEVWQlFVVXNTMEZCU3l4RFFVRkRMRWxCUVVsVkxFZEJRVVZpTEVWQlFVVXNUVUZCVFN4NVFrRkJlVUlzUlVGQlJVZ3NSVUZCUlU4c1JVRkJSU3hQUVVGUExFVkJRVVZPTEVWQlFVVk5MRVZCUVVVc1MwRkJTeXhGUVVGRlNDeEZRVUZGYTBNc1IwRkJSWEpETEVWQlFVVTJRaXhGUVVGRlF5eEZRVUZGWml4SFFVRkZMRTFCUVUwc1JVRkJSV1FzUlVGQlJXTXNSMEZCUlN4TlFVRk5XaXhGUVVGRkxFdEJRVXRCTEVWQlFVVXNSVUZCUlN4RlFVRkZSU3hGUVVGRlJpeEZRVUZGTEVkQlFVY3NVMEZCVXl4RlFVRkZMRTFCUVUwc1EwRkJReXhKUVVGSllTeEhRVUZGYUVJc1JVRkJSVWNzUlVGQlJTeExRVUZMTEU5QlFVOW5RaXhGUVVGRmFrSXNRMEZCUXl4SlFVRkpSeXhIUVVGSExFZEJRVWRHTEVWQlFVVXNSMEZCUnl4RlFVRkZRU3hGUVVGRkxFZEJRVWNzUlVGQlJVRXNSVUZCUlN4TFFVRkxMRk5CUVZNc1JVRkJSU3hGUVVGRkxGRkJRVkVzU1VGQlNVVXNSVUZCUlN4SFFVRkhSQ3hGUVVGRkxGTkJRVk5PTEVkQlFVVkZMRWRCUVVWRExFZEJRVVVzUTBGQlF5eEpRVUZKUnl4SFFVRkZhVUlzUjBGQlJYQkNMRXRCUVVsbExFZEJRVVZXTEVkQlFVVmxMRWRCUVVVc1MwRkJTMkVzUjBGQlJTeFBRVUZQT1VJc1IwRkJSV1VzUlVGQlJXcENMRU5CUVVNc1JVRkJSV3RETEVsQlFVY3NSMEZCUjJwRExFVkJRVVVzUzBGQlMwWXNTMEZCU1N4VFFVRlRMRVZCUVVVc1JVRkJSVWtzUlVGQlJTeEhRVUZITEVWQlFVVXJRaXhKUVVGSGFrTXNSVUZCUlN4TFFVRkxSaXhIUVVGRkxFZEJRVWNzVTBGQlV5eEZRVUZGU1N4RlFVRkZMRWRCUVVjc1JVRkJSU3hEUVVGRExFVkJRVVVzVDBGQlQxQXNSMEZCUlN4RFFVRkRVU3hIUVVGRlJpeEhRVUZGTEUxQlFVMUtMRVZCUVVNc1JVRkJSWEZDTEVkQlFVVXNRMEZCUTJFc1IwRkJSVU1zUjBGQlJTeEpRVUZKT1VJc1EwRkJReXhGUVVGRkxFMUJRVTByUWl4SFFVRkZMRWRCUVVkeVF5eEZRVUZGTEVkQlFVY3NSVUZCUlc5RExFZEJRVVVzU1VGQlNUTkNMRVZCUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZVQ3hEUVVGRExFVkJRVVVzUzBGQlN6dEJRVUZCTEVOQlFVa3NRMEZCUXl4RFFVRkRMRk5CUVZOelF5eEhRVUZGY2tNc1JVRkJSVW9zUlVGQlJTeERRVUZETEUxQlFVMHNRMEZCUXp0QlFVRkJMRVZCUVVzc2NVSkJRWEZDY1VNc1IwRkJSU3hKUVVGSkxFVkJRVVVzUlVGQlJUdEJRVUZCTzBGQlFVRXNSVUZCVDBjc1IwRkJSWEJETEVWQlFVVktMRU5CUVVNc1JVRkJSVHRCUVVGQk8wRkJRVUVzUjBGQlVVTXNSVUZCUlVRc1JVRkJSU3hUUVVGaFF5eEZRVUZGTEZOQlFVNHNSVUZCWVR0QlFVRkJPMEZCUVVFc1JVRkJaMEpCTEVWQlFVVXNRMEZCUXl4RlFVRkZPMEZCUVVFN1FVRkJRU3hGUVVGelEwRXNSVUZCUlN4TFFVRkxMRWxCUVVrc1IwRkJSenRCUVVGQkxFTkJRVWtzUlVGQlJTeExRVUZMTEVWQlFVVXNSVUZCUlN4SlFVRkpRU3hEUVVGRExFTkJRVU1zVTBGQlUzbERMRWRCUVVWMFF5eEZRVUZGTEVOQlFVTXNUMEZCWjBKQkxFVkJRVVVzVVVGQldDeFBRVUZwUWtFc1JVRkJSU3hOUVVGTkxFTkJRVU5CTEVWQlFVVXNUMEZCVHl4SlFVRkpMRWRCUVVkQkxFVkJRVVVzVjBGQlZ5eEpRVUZKTEVkQlFVZEJMRVZCUVVVc1ZVRkJWU3hKUVVGSkxFZEJRVWRCTEVWQlFVVXNVVUZCVVN4SlFVRkpMRWRCUVVkQkxFVkJRVVVzVDBGQlR5eEpRVUZKTEVWQlFVVXNSVUZCUlN4TFFVRkxMRVZCUVVVc1EwRkJReXhEUVVGRExGTkJRVk4xUXl4SlFVRkhMRU5CUVVNc1VVRkJVWFpETEVWQlFVVXNRMEZCUXl4RlFVRkZMRTFCUVUwc1MwRkJTeXhUUVVGVExFVkJRVVZLTEVWQlFVVkpMRVZCUVVVc1QwRkJUMGdzUlVGQlJTeEZRVUZGUVN4RlFVRkZSQ3hGUVVGRlF5eEhRVUZITEVWQlFVVjVRaXhGUVVGRmRFSXNSVUZCUlVnc1EwRkJReXhEUVVGRExFVkJRVVVzVDBGQlQwTXNSVUZCUlN4VFFVRlRSQ3hGUVVGRlF5eEZRVUZGTEVOQlFVTXNVVUZCVVVNc1JVRkJSVVVzUlVGQlJTeEpRVUZKTEUxQlFVMU1MRU5CUVVNc1JVRkJSVTBzUlVGQlJTeEZRVUZGUVN4RlFVRkZUaXhGUVVGRlRTeEhRVUZITEVWQlFVVXNRMEZCUXl4SFFVRkhMRVZCUVVWSUxFVkJRVVZ0UWl4RlFVRkZiRUlzUlVGQlJVVXNRMEZCUXl4RlFVRkZMRVZCUVVWTUxFVkJRVVZETEVOQlFVTXNSVUZCUlVNc1EwRkJReXhIUVVGSExFOUJRVThzVDBGQlQwRXNSVUZCUlVVc1JVRkJSVU1zUTBGQlF5eEZRVUZGU0N4RlFVRkZMRTFCUVUxRUxFVkJRVVZETEVWQlFVVXNTMEZCU3l4RFFVRkRMRTlCUVU5dFFpeEZRVUZGVml4RlFVRkZWaXhGUVVGRlJ5eERRVUZETEVWQlFVVkdMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eFRRVUZUZVVNc1NVRkJSeXhEUVVGRExFbEJRVWw0UXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hOUVVGTkxFdEJRVXNzVTBGQlV5eEZRVUZGTEVkQlFVOUJMRVZCUVVVc1UwRkJUaXhGUVVGaExFMUJRVTBzU1VGQlNTeE5RVUZOTEc5RFFVRnZReXhGUVVGRkxFbEJRVWxLTEVWQlFVVkpMRVZCUVVVc1NVRkJTU3hGUVVGRkxFOUJRVTk1UWl4SFFVRkZOMElzUTBGQlF5eEZRVUZGTWtNc1IwRkJSU3hOUVVGTkxFdEJRVXQyUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hUUVVGVFFTeEZRVUZGTEVOQlFVTXNUMEZCVDBvc1JVRkJSU3hOUVVGTkxFdEJRVXRKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhUUVVGVGVVTXNTVUZCUnl4RFFVRkRMRWxCUVVsNlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4TlFVRk5MRXRCUVVzc1UwRkJVeXhGUVVGRlNpeEZRVUZGU1N4RlFVRkZMRTlCUVU4c1IwRkJUMG9zU1VGQlNpeEZRVUZOTEU5QlFVODRReXhIUVVGRkxHbENRVUZwUWl4RlFVRkZMRkZCUVZFM1F5eEZRVUZGTEVWQlFVVkJMRVZCUVVWRUxFVkJRVVZETEVkQlFVY3NSVUZCUlhsQ0xFVkJRVVYwUWl4RlFVRkZTQ3hEUVVGRExFTkJRVU1zUlVGQlJTeFBRVUZQUXl4RlFVRkZMRk5CUVZOR0xFVkJRVVZETEVWQlFVVXNRMEZCUXl4UlFVRlJReXhGUVVGRlF5eEZRVUZGTEVWQlFVVkJMRVZCUVVWRExFVkJRVVVzVDBGQlQwUXNSMEZCUnl4RlFVRkZMRWxCUVVsRUxFVkJRVVZ2UWl4RlFVRkZiRUlzUlVGQlJVUXNRMEZCUXl4RlFVRkZMRVZCUVVWSUxFVkJRVVZETEVOQlFVTXNSVUZCUlVNc1EwRkJReXhIUVVGSExFOUJRVThzVDBGQlQwRXNSVUZCUlN4UFFVRlBRU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEZOQlFWTTJReXhIUVVGRk0wTXNSVUZCUlVvc1JVRkJSU3hEUVVGRExFOUJRVTluUkN4SFFVRkZOVU1zUlVGQlJVb3NRMEZCUXl4RlFVRkZMRWRCUVVkcFJDeEhRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhUUVVGVFJDeEhRVUZGTlVNc1JVRkJSVW9zUlVGQlJTeERRVUZETEU5QlFVOHdRaXhGUVVGRmRFSXNRMEZCUXl4RlFVRkZjMElzUlVGQlJURkNMRU5CUVVNc1JVRkJSVFJETEVkQlFVVjRReXhGUVVGRlNpeEZRVUZGTEV0QlFVdEpMRU5CUVVNc1JVRkJSU3hMUVVGTExFVkJRVVVzVTBGQlUwRXNSVUZCUlVvc1JVRkJSU3hEUVVGRExFMUJRVTBzUTBGQlEwa3NRMEZCUXl4RlFVRkZMRTlCUVU5S0xFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4VFFVRlRhMFFzUjBGQlJUbERMRVZCUVVVc1EwRkJRekJDTEVWQlFVVXhRaXhEUVVGRExFVkJRVVVzU1VGQlNVb3NSVUZCUlN4SlFVRkpTU3hGUVVGRkxFbEJRVWtzVDBGQlQwWXNSVUZCUlN4VFFVRlRSQ3hGUVVGRlF5eEZRVUZGTEVOQlFVTXNTVUZCU1VNc1JVRkJSVVFzUlVGQlJVVXNSVUZCUlN4UFFVRlBReXhGUVVGRlNpeEZRVUZGTEUxQlFVMURMRVZCUVVWRExFTkJRVU1zUlVGQlJTeFBRVUZQUlN4SlFVRkpSQ3hGUVVGRlVTeEZRVUZGVkN4RlFVRkZSU3hEUVVGRExFVkJRVVZOTEVWQlFVVlVMRVZCUVVWR0xFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4VFFVRlRiVVFzUjBGQlJTOURMRVZCUVVWS0xFVkJRVVVzUlVGQlJTeFRRVUZUU1N4RlFVRkZMRU5CUVVNc1IwRkJSeXhGUVVGRlFTeGhRVUZoTEZGQlFWRXNUVUZCVFN4SlFVRkpMRTFCUVUwc2FVSkJRV2xDUVN4RFFVRkRMRVZCUVVVc1VVRkJVVW9zUlVGQlJUQkRMRWRCUVVWMFF5eERRVUZETEVWQlFVVklMRVZCUVVVc1JVRkJSVUVzUlVGQlJVUXNSVUZCUlN4UFFVRlBReXhKUVVGSkxFTkJRVU1zU1VGQlNVTXNSVUZCUlVZc1JVRkJSU3hQUVVGUFF5eERRVUZETEVWQlFVVXNSMEZCVTBNc1NVRkJUaXhMUVVGbFFTeEpRVUZPTEV0QlFXVkJMRWxCUVU0c1MwRkJaVUVzU1VGQlRpeEpRVUZSTEUxQlFVMHNTVUZCU1N4TlFVRk5MRFJDUVVFMFFrRXNSVUZCUlN4TlFVRk5SU3hEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZGUVN4RFFVRkRMRVZCUVVVc1ZVRkJWU3hSUVVGUkxFVkJRVVYzUWl4SFFVRkZOVUlzUTBGQlF5eEZRVUZGUVN4RlFVRkZMRVZCUVVVc1NVRkJTVU1zUlVGQlJTeFRRVUZUUnl4RlFVRkZMRU5CUVVNc1QwRkJUeXhQUVVGUExFOUJRVTlCTEVWQlFVVXNUMEZCVHl4SlFVRkpjME1zUjBGQlJYUkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVZCTEVOQlFVTXNSVUZCUlVRc1JVRkJSU3hIUVVGSFF5eEZRVUZGTEU5QlFVOUdMRVZCUVVVc1UwRkJVMFVzUlVGQlJVWXNSVUZCUlN4RFFVRkRMRWxCUVVsSExFVkJRVVZLTEVWQlFVVXNTMEZCUzBjc1JVRkJSU3hOUVVGTlJpeERRVUZETEVOQlFVTXNSVUZCUlN4SFFVRkhSeXhGUVVGRkxFTkJRVU1zUjBGQlJ5eEhRVUZIVEN4SFFVRkhRU3hIUVVGSFN5eEZRVUZGTEU5QlFVOHNRMEZCUXl4SlFVRkpReXhGUVVGRlJDeEZRVUZGTEVOQlFVTXNSVUZCUld0Q0xFZEJRVVZzUWl4RlFVRkZUQ3hEUVVGRExFVkJRVVVzVDBGQlQxa3NSVUZCUlZZc1JVRkJSVWtzUlVGQlJTeFBRVUZQYVVJc1JVRkJReXhEUVVGRExFTkJRVU1zVDBGQlQxb3NSVUZCUlZRc1JVRkJSU3d5UWtGQk1rSkhMRVZCUVVVc1QwRkJUeXhSUVVGUlJpeERRVUZETEVOQlFVTXNRMEZCUXl4UFFVRlBVU3hGUVVGRlZDeEZRVUZGUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVTBGQlV6aERMRWRCUVVVM1F5eEZRVUZGTEVOQlFVTXNUMEZCVDBZc1JVRkJSU3hUUVVGVFJpeEZRVUZGUXl4RlFVRkZMRU5CUVVNc1QwRkJUMWNzUlVGQlJWZ3NSVUZCUlVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEZOQlFWTXdReXhIUVVGRk1VTXNSVUZCUlN4RFFVRkRMRTlCUVU5R0xFVkJRVVVzVTBGQlUwWXNSVUZCUlVNc1JVRkJSU3hEUVVGRExFOUJRVTlWTEVWQlFVVldMRVZCUVVWSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4VFFVRlRaMFFzUjBGQlJXaEVMRVZCUVVVc1EwRkJReXhIUVVGSFpTeEZRVUZGWml4RFFVRkRMRVZCUVVVc1QwRkJUMFlzUlVGQlJTeFRRVUZUUml4RlFVRkZReXhGUVVGRkxFTkJRVU1zU1VGQlNVTXNSVUZCUlVVc1JVRkJSU3hGUVVGRlNpeEZRVUZGUXl4RFFVRkRMRVZCUVVVc1QwRkJUME1zUlVGQlJTeE5RVUZOUkN4RlFVRkZReXhGUVVGRkxFMUJRVTBzUjBGQlIwRXNRMEZCUXl4RFFVRkRMRVZCUVVVc1IwRkJZU3hQUVVGUFJTeEhRVUZxUWl4VFFVRnRRaXhQUVVGUFowUXNSMEZCUlVZc1IwRkJSVGxETEVOQlFVTXNRMEZCUXl4RlFVRkZMRWRCUVVkQkxHRkJRV0VzVDBGQlR5eFBRVUZQWjBRc1IwRkJSVVFzUjBGQlJTOURMRU5CUVVNc1EwRkJReXhGUVVGRkxFMUJRVTBzU1VGQlNTeE5RVUZOTEc5RFFVRnZRMEVzUTBGQlF5eERRVUZETEVOQlFVTXNVMEZCVTJsRUxFZEJRVVZxUkN4RlFVRkZMRU5CUVVNc1QwRkJUM05DTEVWQlFVVjBRaXhEUVVGRExFVkJRVVZHTEVWQlFVVXNVMEZCVTBZc1JVRkJSVU1zUlVGQlJTeERRVUZETEVsQlFVbERMRVZCUVVWRkxFVkJRVVVzUlVGQlJVb3NSVUZCUlVNc1EwRkJReXhGUVVGRlJTeEZRVUZGU0N4RlFVRkZMRTFCUVUxRExFVkJRVVZETEVWQlFVVXNTMEZCU3l4RlFVRkZMRTlCUVU5QkxFVkJRVVVzVDBGQlQxTXNSVUZCUlZZc1JVRkJSU3hSUVVGUlJTeEZRVUZGTEVkQlFVY3NSVUZCUlZNc1JVRkJSVmdzUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1UwRkJVM0ZFTEVkQlFVZHNSQ3hGUVVGRkxFTkJRVU1zVDBGQlQzbENMRWRCUVVWNlFpeERRVUZETEVWQlFVVkdMRVZCUVVVc1UwRkJVMFlzUlVGQlJVTXNSVUZCUlN4RFFVRkRMRWxCUVVsRExFVkJRVVY1UWl4RlFVRkZNMElzUlVGQlJVTXNRMEZCUXl4RlFVRkZMRTlCUVU5QkxFVkJRVVZFTEVWQlFVVXNVVUZCVVVrc1JVRkJSVVlzUTBGQlF5eEZRVUZGVlN4RlFVRkZXQ3hGUVVGRkxFVkJRVVZETEVOQlFVTXNSVUZCUlZNc1JVRkJSVllzUlVGQlJTdzJRa0ZCTmtKSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4VFFVRlRiVVFzUjBGQlIyNUVMRVZCUVVWS0xFVkJRVVVzUTBGQlF5eFZRVUZWTEU5QlFVOHNTVUZCU1VFc1JVRkJSVWtzUlVGQlJVRXNSVUZCUlN4UlFVRlJMRWxCUVVsSUxFVkJRVVZETEVWQlFVVXNVMEZCVTBVc1JVRkJSVVlzUlVGQlJTeERRVUZETEU5QlFVOUVMRVZCUVVVc1JVRkJSVVFzUlVGQlJTeEZRVUZGTEVWQlFVVkRMRVZCUVVVc1JVRkJSVWNzUlVGQlJVWXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hQUVVGUFJTeEZRVUZGU0N4RlFVRkZMRXRCUVV0SExFTkJRVU1zUlVGQlJVZ3NRMEZCUXl4RFFVRkRMRk5CUVZOMVJDeEpRVUZKTEVOQlFVTXNUMEZCVDFZc1IwRkJSU3h2UWtGQmIwSXNRMEZCUXl4RFFVRkRNME1zUlVGQlJTeE5RVUZOTEZOQlFWTkRMRVZCUVVVc1EwRkJReXhIUVVGaExFOUJRVTlCTEVkQlFXcENMRlZCUVc5Q0xFTkJRVU5wUWl4RlFVRkZha0lzUTBGQlF5eEZRVUZGTEUxQlFVMHNTVUZCU1N4TlFVRk5MQ3RFUVVFclJDeEZRVUZGTEVsQlFVbEtMRVZCUVVWRExFVkJRVVVzUzBGQlN5eExRVUZMZDBRc1JVRkJSU3hGUVVGRkxFVkJRVVZ5UkN4RlFVRkZMRU5CUVVNc1JVRkJSU3hQUVVGUFNpeEZRVUZGUXl4RlFVRkZMRTlCUVU4c1EwRkJReXhQUVVGUExFZEJRVWNzVFVGQlRVRXNSVUZCUlN4TFFVRkxMRVZCUVVVc1EwRkJReXhQUVVGUExFZEJRVWNzVFVGQlRYZENMRVZCUVVWeVFpeEZRVUZGU0N4RlFVRkZMRkZCUVZFc1JVRkJSU3hUUVVGVFFTeEZRVUZGTEZGQlFWRXNSVUZCUlN4UFFVRlBkVUlzUlVGQlJYQkNMRU5CUVVNc1JVRkJSVW9zUTBGQlF5eEZRVUZGUnl4RlFVRkZMRk5CUVZNc1UwRkJVME1zUlVGQlJTeERRVUZETEVsQlFVbEtMRVZCUVVVc1MwRkJTeXhOUVVGTlNTeERRVUZETEVWQlFVVXNSMEZCUjBvc1JVRkJSU3hQUVVGUExFOUJRVTlCTEVWQlFVVXNUVUZCVFN4SlFVRkpReXhGUVVGRmQwTXNSMEZCUlhKRExFVkJRVVZLTEVOQlFVTXNSVUZCUlVVc1JVRkJSU3hKUVVGSkxFMUJRVTFFTEVOQlFVTXNSVUZCUlN4TlFVRk5ReXhGUVVGRkxFdEJRVXNzYVVKQlFXbENRU3hGUVVGRkxFOUJRVTlHTEVWQlFVVkZMRU5CUVVNc1JVRkJSVU1zUlVGQlJTeFBRVUZQTEZOQlFWTkRMRVZCUVVWS0xFVkJRVVVzUTBGQlF5eFBRVUZQTEV0QlFVc3NUVUZCVFN4VFFVRlRReXhGUVVGRkxFTkJRVU1zVDBGQlQwY3NSVUZCUlVnc1EwRkJReXhGUVVGRlowUXNSMEZCUldoRUxFTkJRVU1zUlVGQlJUWkRMRWRCUVVVNVF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVWSExFVkJRVVVzUjBGQlJ5eFRRVUZUUXl4RlFVRkZMRU5CUVVNc1QwRkJUM2xETEVkQlFVVXNTMEZCUzNwRExFTkJRVU1zUTBGQlF5eEZRVUZGUkN4RlFVRkZMRXRCUVVzc1UwRkJVME1zUlVGQlJTeERRVUZETEU5QlFVOHNTMEZCU3l4TFFVRkxRU3hGUVVGRlFTeERRVUZETEVOQlFVTXNSVUZCUlVRc1JVRkJSU3hMUVVGTExGTkJRVk5ETEVWQlFVVktMRVZCUVVVc1EwRkJReXhQUVVGUE5FTXNSMEZCUlhoRExFVkJRVVVzUzBGQlMwb3NSVUZCUlN4VFFVRlRTU3hGUVVGRlNpeEZRVUZGTEVOQlFVTXNUMEZCVDBFc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJVY3NSVUZCUlN4TFFVRkxMRk5CUVZORExFVkJRVVVzUTBGQlF5eFBRVUZQUVN4RlFVRkZMRWxCUVVrc1EwRkJReXhGUVVGRlJDeEZRVUZGTEV0QlFVc3NVMEZCVTBNc1JVRkJSU3hEUVVGRExFOUJRVTl6UWl4RlFVRkZkRUlzUTBGQlF5eEZRVUZGZFVNc1IwRkJSU3hMUVVGTGRrTXNRMEZCUXl4RlFVRkZMRWxCUVVrc1UwRkJVMEVzUlVGQlJTeERRVUZETEU5QlFVOUJMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGUkN4RlFVRkZMRXRCUVVzc1ZVRkJWU3hEUVVGRExFbEJRVWxETEVWQlFVVXNTMEZCU3l4UFFVRlBSaXhGUVVGRkxGTkJRVk5HTEVWQlFVVkRMRVZCUVVVc1EwRkJReXhSUVVGUlF5eEZRVUZGTEVOQlFVTXNSVUZCUlVNc1JVRkJSU3hUUVVGVExFTkJRVU1zUjBGQlJ5eEZRVUZGUVN4RlFVRkZiVUlzUlVGQlJXeENMRVZCUVVVc1JVRkJSVW9zUlVGQlJVTXNRMEZCUXl4RlFVRkZSU3hEUVVGRExFZEJRVWNzVDBGQlR5eFBRVUZQYlVJc1JVRkJSVllzUlVGQlJWZ3NSVUZCUlVNc1EwRkJReXhGUVVGRlF5eERRVUZETEVWQlFVVXNSMEZCUjBZc1NVRkJTVVVzUlVGQlJTeE5RVUZOTEUxQlFVMHNTVUZCU1N4TlFVRk5MR2RKUVVGblNTeEZRVUZGUml4RlFVRkZSU3hGUVVGRkxFMUJRVTFFTEVWQlFVVXNTMEZCUzBNc1JVRkJSU3hMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlVFc1JVRkJSU3hSUVVGUkxGTkJRVk5ETEVWQlFVVXNRMEZCUXl4UFFVRlBNRUlzUlVGQlJURkNMRU5CUVVNc1JVRkJSU3hMUVVGTExFbEJRVWtzVTBGQlUwb3NSVUZCUlN4RFFVRkRMRWRCUVVjc1UwRkJVMGtzUlVGQlJTeERRVUZETEVkQlFVY3NRMEZCUTJkQ0xFVkJRVVZvUWl4RFFVRkRMRVZCUVVVc1RVRkJUU3hKUVVGSkxFMUJRVTBzYVVKQlFXbENRU3hEUVVGRExFTkJRVU1zUlVGQlJVb3NRMEZCUXl4RlFVRkZRU3hGUVVGRkxFOUJRVThzUTBGQlF6aENMRVZCUVVVNVFpeEZRVUZGTEVOQlFVTXNRMEZCUXl4RlFVRkZMRkZCUVZGRExFVkJRVVZFTEVWQlFVVXNRMEZCUXl4RlFVRkZSU3hGUVVGRkxFVkJRVVZCTEVWQlFVVkdMRVZCUVVVc1QwRkJUMFVzU1VGQlNUUkNMRVZCUVVVNVFpeEZRVUZGUlN4RFFVRkRMRU5CUVVNc1JVRkJSVVFzUjBGQlIwY3NSVUZCUlVvc1JVRkJSVVVzUTBGQlF5eEZRVUZGTEU5QlFVOUVMRU5CUVVNc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVkZMRVZCUVVVc1NVRkJTU3hWUVVGVkxFTkJRVU1zVDBGQlR5eExRVUZMTEZGQlFWRXNSVUZCUlN4RFFVRkRMRVZCUVVWQkxFVkJRVVVzVFVGQlRTeFRRVUZUUXl4RlFVRkZTaXhGUVVGRkxFTkJRVU1zU1VGQlNVTXNSVUZCUlN4TFFVRkxMRTlCUVU4c1ZVRkJWU3hQUVVGUExFbEJRVWxFTEVWQlFVVkpMRWRCUVVkM1FpeEhRVUZGZUVJc1EwRkJReXhGUVVGRmQwSXNSMEZCUlRWQ0xFTkJRVU1zUlVGQlJVVXNSVUZCUlN4VFFVRlRRU3hGUVVGRlF5eEZRVUZGTEVOQlFVTXNVVUZCVVVVc1JVRkJSU3hEUVVGRExFVkJRVVZETEVWQlFVVXNUMEZCVDJsQ0xFVkJRVVVzVDBGQlQyaENMRWRCUVVVc1JVRkJSVUVzUjBGQlJVZ3NSVUZCUlVjc1NVRkJSeXhGUVVGRkxFTkJRVU1zUjBGQlIyZENMRVZCUVVWRUxFVkJRVVZvUWl4RlFVRkZUQ3hGUVVGRkxFVkJRVVZETEVWQlFVVkRMRU5CUVVNc1JVRkJSVzlDTEVOQlFVTXNSVUZCUlN4RFFVRkRha0lzUlVGQlJTeFBRVUZQTEU5QlFVOXBRaXhGUVVGRmNFSXNSVUZCUlVjc1JVRkJSU3hOUVVGTlJDeEZRVUZGTEV0QlFVdERMRVZCUVVVc1MwRkJTeXhEUVVGRExFTkJRVU1zUzBGQlMwTXNSMEZCUlZBc1NVRkJTWFZDTEVWQlFVVkVMRVZCUVVWb1FpeEZRVUZGVEN4RlFVRkZMRVZCUVVWRExFVkJRVVZETEVOQlFVTXNSVUZCUlc5Q0xFTkJRVU1zUlVGQlJXcENMRVZCUVVVc1VVRkJVVU1zU1VGQlJ5eEZRVUZGU2l4RlFVRkZSeXhGUVVGRkxFMUJRVTFFTEVWQlFVVXNTMEZCUzBNc1JVRkJSU3hMUVVGTExFVkJRVVVzVDBGQlQyZENMRVZCUVVWV0xFVkJRVVZVTEVWQlFVVkZMRU5CUVVNc1JVRkJSV3RDTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSWEJDTEVWQlFVVXNUMEZCVHl4VFFVRlRReXhGUVVGRkxFTkJRVU1zVDBGQlR5eExRVUZMTEVsQlFVa3NWVUZCVlN4RFFVRkRMRTlCUVU5QkxFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVkVMRVZCUVVVc1QwRkJUeXhUUVVGVFF5eEZRVUZGTEVOQlFVTXNUMEZCVHl4TFFVRkxMRTFCUVUwc1JVRkJSVUVzUTBGQlF5eERRVUZETEVWQlFVVkVMRVZCUVVVc1VVRkJVU3hUUVVGVFF5eEZRVUZGTEVOQlFVTXNUMEZCVDNkRExFZEJRVVVzUzBGQlN5eE5RVUZOZUVNc1EwRkJReXhGUVVGRkxFdEJRVXNzUzBGQlN5eEZRVUZGTEZOQlFWTkJMRVZCUVVWS0xFVkJRVVVzUTBGQlF5eFBRVUZQU1N4RlFVRkZMRTlCUVU5S0xFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlVjc1JVRkJSU3hKUVVGSkxGTkJRVk5ETEVWQlFVVXNRMEZCUTNsQ0xFZEJRVVY2UWl4RFFVRkRMRVZCUVVVc1NVRkJTVW9zUlVGQlJTeExRVUZMTEU5QlFVOUZMRVZCUVVVc1UwRkJVMFFzUlVGQlJVTXNSVUZCUlN4RFFVRkRMRWxCUVVsRExFVkJRVVZJTEVWQlFVVXNSVUZCUlVNc1JVRkJSVU1zUTBGQlF5eEZRVUZGTEU5QlFVOURMRVZCUVVVc1QwRkJUMjFDTEVWQlFVVldMRVZCUVVWVUxFVkJRVVVzVFVGQlRVTXNSVUZCUlVRc1JVRkJSU3hMUVVGTExFTkJRVU1zUlVGQlJVRXNRMEZCUXl4RlFVRkZRU3hEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGUVN4RlFVRkZMRlZCUVZVc1UwRkJVME1zUlVGQlJTeERRVUZEZVVJc1IwRkJSWHBDTEVOQlFVTXNSVUZCUlN4SlFVRkpTaXhGUVVGRkxFdEJRVXNzVDBGQlQwVXNSVUZCUlN4VFFVRlRSQ3hGUVVGRlF5eEZRVUZGTEVOQlFVTXNTVUZCU1VNc1JVRkJSVWdzUlVGQlJTeE5RVUZOU1N4RlFVRkZTQ3hGUVVGRkxFMUJRVTFETEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1QwRkJUME1zUlVGQlJTeFBRVUZQVXl4RlFVRkZWaXhGUVVGRlJDeEZRVUZGTEU5QlFVOUZMRVZCUVVVc1MwRkJTeXhGUVVGRlFTeERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZRU3hGUVVGRkxFOUJRVThzVTBGQlUwTXNSVUZCUlVvc1JVRkJSU3hEUVVGRExFOUJRVTgyUWl4SFFVRkZla0lzUTBGQlF5eEZRVUZGZVVJc1IwRkJSVGRDTEVOQlFVTXNSVUZCUlN4TFFVRkxMRlZCUVZWSkxFTkJRVU1zUlVGQlJTeEpRVUZKU2l4RFFVRkRMRU5CUVVNc1JVRkJSVWNzUlVGQlJTeExRVUZMTEZOQlFWTkRMRVZCUVVVc1EwRkJReXhQUVVGUGRVTXNSMEZCUlN4TFFVRkxka01zUTBGQlF5eEZRVUZGTEVsQlFVa3NVMEZCVTBFc1JVRkJSU3hEUVVGRExFOUJRVTlCTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRlJDeEZRVUZGTEV0QlFVc3NWVUZCVlN4RFFVRkRMRTlCUVU5NVF5eEhRVUZGWXl4SFFVRkhMRXRCUVV0QkxFZEJRVWNzVTBGQlUzUkVMRVZCUVVWS0xFVkJRVVZETEVWQlFVVXNRMEZCUXl4TlFVRk5MRU5CUVVNc1RVRkJUVWNzUlVGQlJTeE5RVUZOU2l4RlFVRkZMRWxCUVVsRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlVVc1JVRkJSU3hMUVVGTExGTkJRVk5ETEVWQlFVVXNRMEZCUXl4UFFVRlBkME1zUjBGQlJXTXNSMEZCUnl4TFFVRkxRU3hIUVVGSExGTkJRVk14UkN4RlFVRkZReXhGUVVGRlF5eEZRVUZGTEVOQlFVTXNUVUZCVFN4RFFVRkRMRXRCUVV0RkxFVkJRVVVzVFVGQlRVZ3NSVUZCUlN4TlFVRk5SQ3hGUVVGRkxFbEJRVWxGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSVU1zUlVGQlJTeE5RVUZOTEZOQlFWTkRMRVZCUVVVc1EwRkJReXhQUVVGUE1rTXNSMEZCUlN4TFFVRkxNME1zUTBGQlF5eERRVUZETEVWQlFVVkVMRVZCUVVVc1QwRkJUeXhUUVVGVFF5eEZRVUZGTEVOQlFVTXNUMEZCVHpSRExFZEJRVVVzUzBGQlN6VkRMRU5CUVVNc1EwRkJReXhGUVVGRlJDeEZRVUZGTEZWQlFWVXNVMEZCVTBNc1JVRkJSU3hEUVVGRExFOUJRVThzUzBGQlN5eExRVUZMWjBRc1IwRkJSV2hFTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVWRUxFVkJRVVVzWTBGQll5eFRRVUZUUXl4RlFVRkZMRU5CUVVNc1QwRkJUeXhMUVVGTExFdEJRVXRwUkN4SFFVRkZha1FzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlVRc1JVRkJSU3hMUVVGTExGTkJRVk5ETEVWQlFVVXNRMEZCUTJkQ0xFVkJRVVZvUWl4RFFVRkRMRWxCUVVsQkxFVkJRVVVzUTBGQlEwRXNRMEZCUXl4SFFVRkhMRWxCUVVsS0xFVkJRVVVzUzBGQlN5eFBRVUZQUlN4RlFVRkZMRk5CUVZORUxFVkJRVVZETEVWQlFVVXNRMEZCUXl4SlFVRkpReXhGUVVGRlNDeEZRVUZGTEVWQlFVVkRMRVZCUVVWRExFTkJRVU1zUlVGQlJTeFBRVUZQUXl4RlFVRkZMRk5CUVZOQkxFVkJRVVVzVTBGQlUwTXNSMEZCUjBRc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJVRXNSVUZCUlN4VFFVRlRMRk5CUVZORExFVkJRVVVzUTBGQlF5eFBRVUZQTEV0QlFVc3NSMEZCUnpaRExFZEJRVVUzUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRlJDeEZRVUZGTEVkQlFVY3NVMEZCVTBNc1JVRkJSU3hEUVVGRExFOUJRVTkzUXl4SFFVRkZlRU1zUlVGQlJTeExRVUZMTEZOQlFWTkJMRVZCUVVWS0xFVkJRVVVzUTBGQlF5eFBRVUZQU1N4RlFVRkZTaXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVkhMRVZCUVVVc1RVRkJUU3hUUVVGVFF5eEZRVUZGTEVOQlFVTXNTVUZCU1Vvc1JVRkJSU3hMUVVGTExFOUJRVTlGTEVWQlFVVXNVMEZCVTBRc1JVRkJSVU1zUlVGQlJTeERRVUZETEVsQlFVbERMRVZCUVVWSUxFVkJRVVVzUlVGQlJVTXNSVUZCUlVNc1EwRkJReXhGUVVGRkxFOUJRVTlETEVWQlFVVXNUMEZCVDIxQ0xFVkJRVVZzUWl4RlFVRkZSQ3hGUVVGRkxFdEJRVXNzUlVGQlJTeEZRVUZGUml4RlFVRkZSU3hGUVVGRkxFdEJRVXNzUlVGQlJVRXNRMEZCUXl4RlFVRkZRU3hEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGUVN4RlFVRkZMRTlCUVU5QkxFVkJRVVVzUjBGQlIwRXNSVUZCUlN4TlFVRk5jVVFzUjBGQlIzSkVMRVZCUVVVc1IwRkJSemhETEVkQlFVVTVReXhGUVVGRkxHbENRVUZwUWl4RlFVRkZRU3hGUVVGRkxFZEJRVWRCTEVWQlFVVXNiMEpCUVc5Q0xFVkJRVVZCTEVWQlFVVXNUVUZCVFVFc1JVRkJSU3h4UWtGQmNVSXNSVUZCUlVFc1JVRkJSU3hQUVVGUFFTeEZRVUZGTEc5Q1FVRnZRaXhGUVVGRlFTeEZRVUZGTEUxQlFVMUJMRVZCUVVVc2FVSkJRV2xDTEVWQlFVVkJMRVZCUVVVc1IwRkJSMEVzUlVGQlJTeHJRa0ZCYTBJc1JVRkJSVUVzUlVGQlJTeEpRVUZKTEVsQlFVbDFSQ3hIUVVGSGVFUXNSVUZCUlN4VFFVRlRSU3hGUVVGRlNpeEZRVUZGTEVOQlFVTXNUMEZCVDFrc1JVRkJSVm9zUlVGQlJYbENMRVZCUVVWeVFpeEZRVUZGU2l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVV5UkN4SFFVRkhla1FzUlVGQlJTeFRRVUZUUlN4RlFVRkZTaXhGUVVGRkxFTkJRVU1zVDBGQlQwRXNSMEZCUjBrc1JVRkJSU3hQUVVGUFR5eEZRVUZGV0N4RlFVRkZMRzlDUVVGdlFpeEZRVUZGV1N4RlFVRkZXaXhGUVVGRkxFVkJRVVV5UWl4RlFVRkZka0lzUlVGQlJVb3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRk5FUXNSMEZCUnpGRUxFVkJRVVVzVTBGQlUwVXNSVUZCUlVvc1JVRkJSU3hEUVVGRExFOUJRVTlaTEVWQlFVVlNMRVZCUVVVc1QwRkJUMEVzUlVGQlJTeE5RVUZOU2l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVY1UkN4SFFVRkhka1FzUlVGQlJTeFRRVUZUUlN4RlFVRkZTaXhGUVVGRkxFTkJRVU1zVDBGQlQwRXNSVUZCUlVrc1JVRkJSU3hQUVVGUFR5eEZRVUZGV0N4RlFVRkZMRXRCUVVzc1JVRkJSVmtzUlVGQlJWb3NSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJReXhGUVVGRk5rUXNSMEZCUjFZc1IwRkJSU3hQUVVGUExFVkJRVVVzUzBGQlN5eFRRVUZUTEVWQlFVVlhMRWRCUVVkWUxFZEJRVVVzVVVGQlVTeEZRVUZGTEV0QlFVc3NhVUpCUVdsQ0xFVkJRVVZaTEVkQlFVZGFMRWRCUVVVc1VVRkJVU3hGUVVGRkxFdEJRVXNzVlVGQlZTeEZRVUZGWVN4SFFVRkhZaXhIUVVGRkxGTkJRVk1zUlVGQlJTeExRVUZMTEd0Q1FVRnJRaXhGUVVGRll5eEhRVUZIWkN4SFFVRkZMRXRCUVVzc1JVRkJSU3hMUVVGTExIRkNRVUZ4UWl4RlFVRkZaU3hIUVVGSFppeEhRVUZGTEV0QlFVc3NSVUZCUlN4TFFVRkxMRmxCUVZrc1JVRkJSV2RDTEVkQlFVZHFRaXhIUVVGRkxFbEJRVWtzUlVGQlJXdENMRWRCUVVkc1FpeEhRVUZGTzBGQlFVRXNRMEZCU1N4RlFVRkZiVUlzUjBGQlIyNUNMRWRCUVVVN1FVRkJRU3hEUVVGTkxFVkJRVVZ2UWl4SFFVRkhla0lzUjBGQlJYZENMRWRCUVVkRUxFZEJRVWRFTEVWQlFVVXNSVUZCUlN4TFFVRkxMRk5CUVZNc1JVRkJSVWtzUjBGQlJ6RkNMRWRCUVVWNVFpeEhRVUZIWWl4RlFVRkZMRVZCUVVWMlJDeEZRVUZGTEVsQlFVa3dSQ3hIUVVGSE1VUXNSVUZCUlN4SlFVRkpNa01zUjBGQlJUTkRMRVZCUVVVc1NVRkJTWGxFTEVkQlFVZDZSQ3hGUVVGRkxFZEJRVWRwUlN4SFFVRkhha1VzUlVGQlJTeGxRVUZsTEZOQlFWTkZMRVZCUVVVc1EwRkJReXhKUVVGSlNpeEZRVUZGTEVOQlFVTXNSVUZCUlN4UlFVRlJReXhMUVVGTFJ5eEhRVUZITEVOQlFVTXNSMEZCUnl4bFFVRmxMRXRCUVV0QkxFVkJRVVZJTEVOQlFVTXNSMEZCUnl4VFFVRlRRU3hGUVVGRkxFTkJRVU5FTEVWQlFVVkRMRU5CUVVNc1JVRkJSWE5FTEVkQlFVY3NWVUZCVlN4RFFVRkRMRTlCUVU5dVJDeEZRVUZGU0N4RFFVRkRMRVZCUVVWRUxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlVNc1EwRkJReXhGUVVGRkxFOUJRVTlFTEVOQlFVTXNSVUZCUlVVc1JVRkJSU3hMUVVGTGJVVXNSMEZCUjI1RkxFVkJRVVVzVDBGQlR5eFRRVUZUUlN4RlFVRkZMRU5CUVVNc1QwRkJUMFlzUlVGQlJVVXNSVUZCUlZFc1JVRkJSVVFzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlZRc1JVRkJSU3hOUVVGTk1rUXNSMEZCUnpORUxFVkJRVVVzVDBGQlR6UkVMRWRCUVVjMVJDeEZRVUZGTEUxQlFVMXpSQ3hIUVVGSGRFUXNSVUZCUlN4SlFVRkpjVVVzUjBGQlIzSkZMRVZCUVVVc1NVRkJTWFZFTEVkQlFVZDJSQ3hGUVVGRkxFdEJRVXMwUXl4SFFVRkZOVU1zUlVGQlJTeFpRVUZaZFVNc1IwRkJSWFpETEVWQlFVVXNUVUZCVFhkRUxFZEJRVWQ0UkN4RlFVRkZMRk5CUVZOcFFpeEZRVUZGYWtJc1JVRkJSU3hMUVVGTGNVUXNSMEZCUjNKRUxFVkJRVVVzVDBGQlR6WkVMRWRCUVVjM1JDeEZRVUZGTEZGQlFWRTRSQ3hIUVVGSE9VUXNSVUZCUlN4SFFVRkhhMFVzUjBGQlIyeEZMRVZCUVVVc1ZVRkJWV3RFTEVkQlFVVnNSQ3hGUVVGRkxGbEJRVmxUTEVWQlFVVlVMRVZCUVVVc1dVRkJXVlVzUlVGQlJWWXNSVUZCUlN4UlFVRlJiMFVzUjBGQlIzQkZMRVZCUVVVc1QwRkJUeXhUUVVGVFJTeEZRVUZGTEVOQlFVTXNUMEZCVDJ0RUxFZEJRVWNzVTBGQlUzUkVMRVZCUVVVc1EwRkJReXhQUVVGUFNTeEZRVUZGTEZGQlFWRktMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeExRVUZMTEZsQlFWbEpMRVZCUVVVc1IwRkJSeXhEUVVGRExFVkJRVVZHTEVWQlFVVXNZMEZCWTIxRUxFZEJRVVZ1UkN4RlFVRkZMRWRCUVVjclF5eEhRVUZGTDBNc1JVRkJSU3hOUVVGTkxGTkJRVk5GTEVWQlFVVXNRMEZCUXl4UlFVRlJTaXhGUVVGRlNTeEZRVUZGTEUxQlFVMHNSVUZCUlN4RlFVRkZTQ3hGUVVGRkxFVkJRVVZCTEVWQlFVVkVMRVZCUVVVc1QwRkJUME1zU1VGQlNVUXNSVUZCUlVNc1EwRkJReXhGUVVGRkxFbEJRVWxFTEVWQlFVVkRMRU5CUVVNc1JVRkJSU3hKUVVGSkxFOUJRVTl4UkN4SFFVRkhMRk5CUVZOMFJDeEZRVUZGTEVOQlFVTXNUMEZCVDBrc1JVRkJSU3hSUVVGUlNpeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRVZCUVVVc1MwRkJTMEVzUTBGQlF5eERRVUZETEVWQlFVVkZMRVZCUVVVc1kwRkJZeXRFTEVkQlFVY3ZSQ3hGUVVGRkxFOUJRVTlCTEVWQlFVVkJMRVZCUVVVc1RVRkJUU3hUUVVGVFJTeEZRVUZGU2l4RlFVRkZMRU5CUVVNc1QwRkJUM05FTEVkQlFVY3NVMEZCVTNKRUxFVkJRVVVzUTBGQlF5eFBRVUZQUnl4SFFVRkhTQ3hIUVVGSFFTeEhRVUZIUkN4RFFVRkRMRU5CUVVNc1JVRkJSU3hMUVVGTFNTeEZRVUZGTEVsQlFVbEtMRU5CUVVNc1EwRkJReXhGUVVGRlJTeEZRVUZGTEUxQlFVMXBSQ3hIUVVGRmFrUXNSVUZCUlN4UFFVRlBhVVFzUjBGQlJXcEVMRVZCUVVVc1RVRkJUVFpETEVkQlFVVTNReXhGUVVGRkxFOUJRVTg0UXl4SFFVRkZPVU1zUlVGQlJTeEpRVUZKZVVNc1IwRkJSWHBETEVWQlFVVXNUMEZCVHpCRExFZEJRVVV4UXl4RlFVRkZMRTlCUVU4c1ZVRkJWU3hEUVVGRExGRkJRVkZGTEVWQlFVVktMRVZCUVVVc1EwRkJReXhGUVVGRlF5eEZRVUZGTEVWQlFVVkZMRWRCUVVkRExFVkJRVVVzVlVGQlZTeE5RVUZOTEZWQlFWVXNUVUZCVFN4TFFVRkxRU3hEUVVGRExFZEJRVWRETEVWQlFVVkdMRVZCUVVVc1QwRkJUMGNzUlVGQlJTeEZRVUZGUVN4RlFVRkZSQ3hGUVVGRlF5eEhRVUZITEVWQlFVVXNRMEZCUXl4SlFVRkphVUlzUlVGQlJYQkNMRVZCUVVWSExFTkJRVU1zUlVGQlJTeEhRVUZITEVOQlFVTmhMRVZCUVVWSkxFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVZElMRVZCUVVWSExFTkJRVU1zUjBGQlQwRXNSVUZCUlN4VFFVRk9MRWRCUVhkQ0xFOUJRVTlCTEVWQlFVVXNRMEZCUXl4SFFVRndRaXhWUVVGMVFrb3NSVUZCUlVrc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVsQlFVbG9RaXhGUVVGRlowSXNSVUZCUlN4RFFVRkRMRVZCUVVVc1IwRkJSeXhQUVVGUExGVkJRVlVzWlVGQlpTeExRVUZMZGtJc1JVRkJSVThzUTBGQlF5eEZRVUZGTEUxQlFVMHNTVUZCU1N4TlFVRk5MSGxDUVVGNVFrRXNRMEZCUXl4RlFVRkZVQ3hGUVVGRlR5eERRVUZETEVWQlFVVXNSMEZCUjA0c1NVRkJTU3hSUVVGUkxFTkJRVU1zVFVGQlRTeEpRVUZKTEUxQlFVMHNiVVZCUVcxRkxFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVOUJMRWxCUVVvc1JVRkJUU3hOUVVGTkxFbEJRVWtzVFVGQlRTeHpSRUZCYzBRc1JVRkJSU3hQUVVGUFF5eEZRVUZGTEZOQlFWTkZMRWRCUVVWS0xFZEJRVVVzUTBGQlF5eFJRVUZSUXl4SFFVRkZReXhIUVVGRkxFTkJRVU1zUlVGQlJVa3NSMEZCUlN4RlFVRkZRU3hIUVVGRlJDeEZRVUZGUXl4SlFVRkhMRVZCUVVVc1EwRkJReXhKUVVGSmFVSXNSMEZCUldoQ0xFZEJRVVVzUjBGQlIyRXNSVUZCUldwQ0xFVkJRVVZITEVWQlFVTXNRMEZCUXl4SFFVRkhhVUlzUjBGQlJYQkNMRVZCUVVWSExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVkRMRWRCUVVWS0xFVkJRVVZITEVWQlFVTXNSVUZCUlN4RFFVRkRMRWxCUVVscFFpeEhRVUZGTEV0QlFVdG9RaXhIUVVGRlNpeEZRVUZGUnl4RlFVRkRMRWRCUVVjc1JVRkJSVXdzUjBGQlJYRkNMRVZCUVVWbUxFZEJRVVVzUlVGQlJVZ3NSMEZCUlVvc1JVRkJReXhGUVVGRlF5eEZRVUZETEVkQlFVY3NUMEZCVHl4UFFVRlBRU3hIUVVGRmMwSXNTMEZCU1hKQ0xFZEJRVVZ4UWl4RlFVRkRMRVZCUVVWMFFpeEhRVUZGTEU5QlFVOUVMRWRCUVVWRExFZEJRVVVzUzBGQlN5eERRVUZETEU5QlFVOXhRaXhGUVVGRlZpeEZRVUZGV2l4SFFVRkZSU3hGUVVGRExFVkJRVVZFTEVWQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSVU1zUlVGQlJTeFBRVUZQWjBRc1IwRkJSV2hFTEVWQlFVVXNVVUZCVVN0RExFZEJRVVV2UXl4RlFVRkZMRlZCUVZVc1UwRkJVMFVzUlVGQlJTeERRVUZETEU5QlFVOTVRaXhIUVVGRmVrSXNRMEZCUXl4RlFVRkZSaXhGUVVGRkxGTkJRVk5HTEVWQlFVVkRMRVZCUVVVc1EwRkJReXhSUVVGUlF5eEZRVUZGUkN4RlFVRkZReXhGUVVGRlJpeEZRVUZGTEZGQlFWRkpMRVZCUVVWMVFpeEZRVUZGTTBJc1JVRkJSVVVzUTBGQlF5eERRVUZETEVkQlFVZEJMRWxCUVVrc1QwRkJUMVVzUlVGQlJWWXNSVUZCUlVZc1JVRkJSU3hOUVVGTlF5eEZRVUZGUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJVRXNSVUZCUlN4TFFVRkxiMFFzUjBGQlIzQkVMRVZCUVVVc1YwRkJWMmRGTEVkQlFVZG9SU3hGUVVGRkxHOUNRVUZ2UWl4RlFVRkZjMFFzUjBGQlIzUkVMRVZCUVVVc2FVSkJRV2xDTEVWQlFVVXJReXhIUVVGRkwwTXNSVUZCUlN4UFFVRlBMRU5CUVVNc1QwRkJUMUVzUlVGQlJTeFZRVUZWTEZOQlFWTk9MRVZCUVVVc1EwRkJRMHNzUlVGQlJTeEZRVUZGTEVsQlFVbFVMRVZCUVVVc1EwRkJReXhGUVVGRlF5eEZRVUZGTEVWQlFVVkRMRVZCUVVVc1JVRkJSU3hUUVVGVFJTeEZRVUZGTEVOQlFVTXNSMEZCUjJkQ0xFVkJRVVZvUWl4RFFVRkRMRVZCUVVVc1EwRkJReXhKUVVGSlJpeEZRVUZGUlN4RlFVRkZMRWRCUVU5R0xFVkJRVVVzVTBGQlRpeEZRVUZoTEUxQlFVMHNTVUZCU1N4TlFVRk5MRWxCUVVsQkxFVkJRVVVzUzBGQlN5eEpRVUZKTEVWQlFVVXNiME5CUVc5RFFTeEZRVUZGTEUxQlFVMHNSVUZCUlN4SFFVRkhORUlzUlVGQlJUVkNMRVZCUVVVc1EwRkJReXhEUVVGRExFVkJRVVV3UWl4SFFVRkZNVUlzUlVGQlJTeERRVUZETEVOQlFVTXNSVUZCUlN4UFFVRlBMRlZCUVZVc1pVRkJaU3hMUVVGTFJpeEZRVUZGUlN4RlFVRkZMRU5CUVVNc1EwRkJReXhGUVVGRkxFMUJRVTBzU1VGQlNTeE5RVUZOTEN0Q1FVRXJRa0VzUlVGQlJTeERRVUZETEVOQlFVTXNSVUZCUlN4UFFVRlBSaXhGUVVGRlJTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RlFVRkZMRWRCUVVkRUxFbEJRVWxETEVOQlFVTXNRMEZCUXl4UFFVRlBNRUlzUjBGQlJYaENMRU5CUVVNc1JVRkJSU3hEUVVGRExFdEJRVXRCTEVOQlFVTXNRMEZCUXl4RlFVRkZRU3hEUVVGRExFVkJRVVVzUjBGQlIwZ3NSVUZCUlN4RlFVRkZMRTFCUVUwc1NVRkJTU3hOUVVGTkxHMUVRVUZ0UkVjc1JVRkJSU3hMUVVGTExFbEJRVWtzUlVGQlJTeEhRVUZITEVWQlFVVXNTVUZCU1VRc1JVRkJSU3hGUVVGRkxGTkJRVk5ETEVWQlFVVXNRMEZCUXl4UFFVRlBRU3hGUVVGRkxFTkJRVU1zUTBGQlF5eEZRVUZGUml4RFFVRkRMRVZCUVVVc1QwRkJUMUVzUlVGQlJTeEZRVUZGTEZOQlFWTk9MRVZCUVVVc1EwRkJReXhQUVVGUFFTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RlFVRkZSaXhEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEZOQlFWTkZMRVZCUVVVc1EwRkJReXhQUVVGUFJTeEZRVUZGTEZOQlFWTkdMRVZCUVVWS0xFVkJRVVVzUTBGQlF5eFBRVUZqUVN4RlFVRkZMRU5CUVVNc1NVRkJWaXhQUVVGalNTeEZRVUZGU2l4RlFVRkZMRU5CUVVNc1EwRkJReXhGUVVGRlFTeEZRVUZGTEVOQlFVTXNSMEZCUjBrc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeEZRVUZGTEZOQlFWTktMRVZCUVVWRExFVkJRVVVzUTBGQlF5eE5RVUZOTEVOQlFVTkVMRVZCUVVWSkxFVkJRVVZJTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVWRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRXRCUVVzc1UwRkJVME1zUlVGQlJTeERRVUZETEVkQlFVZExMRVZCUVVVc1JVRkJSVzFDTEVkQlFVVjRRaXhEUVVGRExFVkJRVVZCTEVWQlFVVXNTVUZCU1N4TlFVRk5MRWxCUVVrc1RVRkJUU3gzUTBGQmQwTkJMRVZCUVVVc1RVRkJUVUVzUlVGQlJTeFRRVUZUTEVWQlFVVXNSVUZCUlN3d1EwRkJNRU1zUlVGQlJTeEpRVUZKU2l4SFFVRkhTU3hGUVVGRkxFZEJRVWNzUzBGQlN5eFBRVUZQUVN4RlFVRkZMRk5CUVZNc1JVRkJSU3hGUVVGRkxFOUJRVTlHTEVWQlFVVXNVMEZCVTBRc1JVRkJSVU1zUlVGQlJTeERRVUZETEVsQlFVbERMRVZCUVVWM1FpeEZRVUZGTVVJc1JVRkJSVU1zUTBGQlF5eEZRVUZGTEU5QlFVOURMRWxCUVVsRExFVkJRVVZSTEVWQlFVVldMRVZCUVVVc1JVRkJSVU1zUTBGQlF5eEZRVUZGVVN4RlFVRkZWQ3hGUVVGRlJpeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1QwRkJUeXhUUVVGVFNTeEZRVUZGTEVOQlFVTXNUMEZCVDFNc1JVRkJSU3hUUVVGVFZDeERRVUZETEVWQlFVVXNTVUZCU1N4VFFVRlRRU3hGUVVGRkxFTkJRVU1zVDBGQlR5eFBRVUZQTEV0QlFVdEJMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeGpRVUZqTEZOQlFWTkJMRVZCUVVWS0xFVkJRVVVzUTBGQlF5eFBRVUZQWVN4RlFVRkZMRk5CUVZOaUxFTkJRVU1zUlVGQlJTeEpRVUZKTEZOQlFWTkJMRVZCUVVVc1EwRkJReXhQUVVGUFFTeEZRVUZGTEZOQlFWTkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeFBRVUZQVnl4RlFVRkZMRkZCUVZGQkxFVkJRVVVzUTBGQlF5eEZRVUZGTEZOQlFWTkJMRVZCUVVVc1EwRkJReXhGUVVGRkxGTkJRVk5CTEVWQlFVVXNRMEZCUXl4RlFVRkZMRTlCUVU5RExFVkJRVVVzVVVGQlVVRXNSVUZCUlN4RFFVRkRMRVZCUVVVc1UwRkJVMEVzUlVGQlJTeERRVUZETEVWQlFVVXNVMEZCVTBFc1JVRkJSU3hEUVVGRExFVkJRVVVzVFVGQlRVTXNSVUZCUlN4UFFVRlBRU3hGUVVGRkxFTkJRVU1zUlVGQlJTeFJRVUZSUVN4RlFVRkZMRU5CUVVNc1JVRkJSU3hSUVVGUlFTeEZRVUZGTEVOQlFVTXNSVUZCUlN4TlFVRk5ReXhGUVVGRkxFOUJRVTlCTEVWQlFVVXNRMEZCUXl4RlFVRkZMRkZCUVZGQkxFVkJRVVVzUTBGQlF5eEZRVUZGTEZGQlFWRkJMRVZCUVVVc1EwRkJReXhGUVVGRkxGRkJRVkZNTEVWQlFVVXNWVUZCVlN4RFFVRkRMRVZCUVVVc1NVRkJTU3hUUVVGVFZDeEZRVUZGTEVOQlFVTXNUMEZCVDBFc1JVRkJSU3haUVVGWkxFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNVVUZCVVZNc1JVRkJSU3hWUVVGVkxFTkJRVU1zUlVGQlJTeEpRVUZKTEZOQlFWTlVMRVZCUVVVc1EwRkJReXhQUVVGUFFTeEZRVUZGTEZsQlFWa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hUUVVGVFV5eEZRVUZGTEZkQlFWY3NRMEZCUXl4RlFVRkZMRWxCUVVrc1UwRkJVMVFzUlVGQlJTeERRVUZETEU5QlFVOUJMRVZCUVVVc1lVRkJZU3hEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEZOQlFWTlRMRVZCUVVVc1YwRkJWeXhEUVVGRExFVkJRVVVzU1VGQlNTeFRRVUZUVkN4RlFVRkZMRU5CUVVNc1QwRkJUMEVzUlVGQlJTeGhRVUZoTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRkxGRkJRVkZHTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUTBFek1tUXNTVUZCUVhORkxFZEJRVUZETEVkQlFVRkRMRWxCUVVFc1kwRkRRU3hKUVVGSlF5eEhRVUZoUkN4SlFVRlJRU3hIUVVGTExGZEJRV1VzVlVGQldTeERRVU55UkN4SlFVRkpSU3hGUVVGblFpeFRRVUZWUXl4RlFVRkhReXhGUVVGSExFTkJRMmhETEU5QlFVRkdMRVZCUVdkQ0xFOUJRVThzWjBKQlEyeENMRU5CUVVVc1ZVRkJWeXhEUVVGRExFTkJRVVVzV1VGQllTeFBRVUZUTEZOQlFWVkRMRVZCUVVkRExFVkJRVWNzUTBGQlJVUXNSVUZCUlN4VlFVRlpReXhEUVVGSExFZEJRekZGTEZOQlFWVkVMRVZCUVVkRExFVkJRVWNzUTBGQlJTeFJRVUZUUXl4TFFVRkxSQ3hGUVVGUExFOUJRVThzVlVGQlZTeGxRVUZsTEV0QlFVdEJMRVZCUVVkRExFTkJRVU1zU1VGQlIwWXNSVUZCUlVVc1EwRkJReXhGUVVGSlJDeEZRVUZGUXl4RFFVRkRMRVZCUVVjc1JVRkROMFpJTEVWQlFXTkRMRVZCUVVkRExFTkJRVU1zUTBGRE4wSXNSVUZEUVN4UFFVRlBMRk5CUVZWRUxFVkJRVWRETEVWQlFVY3NRMEZEYmtJc1IwRkJTU3hQUVVGUFFTeEhRVUZOTEZsQlFXTkJMRWxCUVUwc1MwRkRha01zVFVGQlRTeEpRVUZKTEZWQlFWVXNkVUpCUVhsQ0xFOUJRVTlCTEVOQlFVTXNSVUZCU1N3clFrRkJLMElzUlVGRE5VWkdMRVZCUVdORExFVkJRVWRETEVOQlFVTXNSVUZEYkVJc1UwRkJVMFVzUjBGQlN5eERRVUZGTEV0QlFVc3NXVUZCWTBnc1EwRkJSeXhEUVVOMFEwRXNSVUZCUlN4VlFVRlpReXhKUVVGTkxFdEJRVThzVDBGQlR5eFBRVUZQUVN4RFFVRkRMRWRCUVV0RkxFVkJRVWNzVlVGQldVWXNSVUZCUlN4VlFVRlhMRWxCUVVsRkxFVkJRMjVHTEVOQlEwb3NSVUZCUnl4RlFVTklMRTlCUVU4c1pVRkJaVTRzUjBGQlV5eGhRVUZqTEVOQlFVVXNUVUZCVHl4RlFVRkxMRU5CUVVNc1JVRkROVVJCTEVkQlFWRXNWMEZCWVVFc1IwRkJVU3hOUVVGUlFTeEhRVUZSTEdsQ1FVRnRRa0VzUjBGQlVTeHJRa0ZCYjBJc1QwRlpOVVlzVTBGQlUwOHNSMEZCYTBKRExFVkJRVWRLTEVWQlFVY3NRMEZMTjBJc1IwRkJTU3hQUVVGUExGTkJRVk5KTEVOQlFVTXNSMEZCU3l4UFFVRlBMRk5CUVZOS0xFTkJRVU1zUlVGRGRrTXNUMEZCVDBrc1JVRkJTVW9zUlVGSlppeEpRVUZKU3l4RlFVRkxMRTlCUVU5RUxFVkJRMXBGTEVWQlFVc3NUMEZCVDA0c1JVRkRhRUlzUjBGQlNVc3NTVUZCVDBNc1JVRkRVQ3hQUVVGUFJDeEZRVUZMUXl4RlFVRkxMRWRCUVVzc1JVRkZNVUlzUjBGQlNVUXNTVUZCVHl4VFFVRlZMRU5CUldwQ0xFZEJRVWxFTEVsQlFVMHNTMEZEVGl4UFFVRlBTaXhKUVVGTkxFdEJRVThzUlVGQlNTeEhRVU4yUWl4SFFVRkpRU3hKUVVGTkxFdEJRMWdzVFVGQlR5eEhRVTFZTEVkQlRFRkpMRVZCUVVsQkxFVkJRVVVzVVVGQlVTeEZRVU5rU2l4RlFVRkpRU3hGUVVGRkxGRkJRVkVzUlVGRFpFc3NSVUZCU3l4UFFVRlBSQ3hGUVVOYVJTeEZRVUZMTEU5QlFVOU9MRVZCUlZKTExFbEJRVTlETEVWQlExQXNUMEZCVDBRc1JVRkJTME1zUlVGQlN5eEhRVUZMTEVOQlJUbENMRU5CUjBFc1QwRkJTVVlzUlVGQlNVb3NSVUZEUnl4SFFVTlFTU3hGUVVGSlNpeEZRVU5ITEVWQlExQkpMRWxCUVUxS0xFVkJRME1zUlVGRlVDeFBRVUZQTEUxQlFVMUpMRU5CUVVNc1JVRkRVQ3hQUVVGUExFMUJRVTFLTEVOQlFVTXNSVUZCU1N4RlFVRkpMRWRCUTNoQ0xFOUJRVThzVFVGQlRVRXNRMEZCUXl4RlFVTmFMRVZCUlVvc1RVRkJUU3hSUVVGUlNTeERRVUZETEVWQlFVa3NSVUZCU1N4UFFVRlBMRWRCUTNwRExFTkJRMEZTTEVkQlFWRXNhMEpCUVc5Q1R5eEhRVVUxUWl4VFFVRlRTU3hIUVVGcFFrZ3NSVUZCUjBvc1JVRkJSeXhEUVVNMVFpeFBRVUZQU1N4RlFVRkpTaXhGUVVGSkxFVkJRVWxKTEVWQlFVbEtMRVZCUVVrc1IwRkJTeXhEUVVOd1F5eERRVU5CU2l4SFFVRlJMR2xDUVVGdFFsY3NSMEZyUlROQ0xFbEJRVWxETEVkQlFYVkNMRlZCUVZrc1EwRlRia01zVTBGQlUwRXNSVUZCVFVNc1JVRkJVME1zUlVGQlUwTXNSVUZCWVN4RFFVTXhReXhMUVVGTExFMUJRVkZETEVkQlEySXNTMEZCU3l4TlFVRlJMRVZCUTJJc1MwRkJTeXhoUVVGbFJDeEhRVUZsTEVWQlFVa3NTMEZCU3l4SlFVRkpRU3hGUVVGaExFZEJRVWNzUlVGQlNTeEhRVU53UlN4TFFVRkxMRk5CUVZkRUxFZEJRVmRRTEVkQlEzWkNUU3hIUVVOQkxFdEJRVXNzVTBGQlUwRXNRMEZCVHl4RFFVTTNRaXhEUVVOQkxHTkJRVThzWlVGQlpVUXNSVUZCVFN4VlFVRlhMRTlCUVZFc1EwRkpNME1zU1VGQlN5eFZRVUZaTEVOQlFVVXNUMEZCVHl4TFFVRkxMRXRCUVU4c1JVRkRkRU1zVjBGQldTeEhRVU5hTEdGQlFXTXNSVUZEYkVJc1EwRkJReXhGUVVORUxFOUJRVThzWlVGQlpVRXNSVUZCVFN4VlFVRlhMRk5CUVZVc1EwRkZOME1zU1VGQlN5eFZRVUZaTEVOQlFVVXNUMEZCVHl4TFFVRkxMRXRCUVU4c1JVRkRkRU1zVjBGQldTeEhRVU5hTEdGQlFXTXNSVUZEYkVJc1EwRkJReXhGUVVORUxFOUJRVThzWlVGQlpVRXNSVUZCVFN4VlFVRlhMRlZCUVZjc1EwRkZPVU1zU1VGQlN5eFZRVUZaTEVOQlFVVXNUMEZCVHl4TFFVRkxMRkZCUVZVc1EwRkJSeXhGUVVNMVF5eFhRVUZaTEVkQlExb3NZVUZCWXl4RlFVTnNRaXhEUVVGRExFVkJSVVJCTEVWQlFVMHNWVUZCVlN4TlFVRlJMRlZCUVZrc1EwRkRhRU1zUzBGQlN5eE5RVUZSU1N4SFFVTmlMRXRCUVVzc1RVRkJVU3hEUVVOcVFpeEZRVk5CU2l4RlFVRk5MRlZCUVZVc1VVRkJWU3hUUVVGVlN5eEZRVUZWUXl4RlFVRlRMRU5CUTI1RUxFbEJRVWxETEVWQlFWRXNTMEZEV2l4UFFVRkpSQ3hKUVVGWkxGTkJRMXBFTEVWQlFWZEJMRVZCUVZNc1MwRkJTME1zUTBGQlR5eEhRVU0zUWl4TFFVRkxMRmxCUVZrc1UwRkJWVVVzUlVGQlIwTXNSVUZCUnl4RFFVRkZMRTlCUVU5S0xFVkJRVk5KTEVWQlFVZEVMRVZCUVVkRUxFTkJRVXNzUTBGQlJ5eERRVUZETEVOQlF6ZEZMRVZCWlVGUUxFVkJRVTBzVlVGQlZTeFpRVUZqTEZOQlFWVkxMRVZCUVZWTExFVkJRV2RDTEVOQlF6bEVMRWxCUVVsRExFVkJRVTBzUzBGQlN5eFBRVUZQTEVWQlFVZERMRVZCUVU4c1MwRkJTeXhQUVVGUExFVkJRelZETEU5QlFVOHNTMEZCU3l4VFFVRlRSQ3hGUVVGTFF5eEZRVUZOTEVkQlFVMVFMRVZCUVZWTExFTkJRV01zUTBGRGJFVXNSVUZQUVZZc1JVRkJUU3hWUVVGVkxFbEJRVTBzVTBGQlZXRXNSVUZCUzBNc1JVRkJZeXhEUVVNdlF5eFBRVUZQTEV0QlFVc3NUVUZCVFN4SlFVRkpSQ3hGUVVGTFF5eEZRVUZqTEVsQlFVa3NRMEZEYWtRc1JVRmxRV1FzUlVGQlRTeFZRVUZWTEVsQlFVMHNVMEZCVldFc1JVRkJTMFVzUlVGQlQwTXNSVUZCVnl4RFFVTXZReXhMUVVGTExFMUJRVTBzVjBGRFdDeExRVUZMTEUxQlFWRXNTMEZCU3l4TlFVRk5MRTFCUVUwc1IwRkRiRU1zU1VGQlNVTXNSVUZCVXl4TFFVRkxMRTFCUVUwc1NVRkJTVW9zUlVGQlMwVXNSVUZCVDBNc1JVRkJWeXhKUVVGSkxFVkJRM1pFTEU5QlFVbERMRWxCUVZjc1NVRkJVVUVzU1VGQlZ5eEhRVU4yUWtFc1IwRkZXQ3hMUVVGTExFMUJRVkVzU1VGQlNVTXNSMEZCWXl4RFFVRkRMRXRCUVVzc1RVRkJUMFFzUTBGQlRTeERRVUZETEVWQlF6VkRMRWRCUTFnc1JVRlJRV3BDTEVWQlFVMHNWVUZCVlN4SlFVRk5MRk5CUVZWaExFVkJRVXNzUTBGRGFrTXNUMEZCVHl4TFFVRkxMRk5CUVZOQkxFVkJRVXRCTEVWQlFVc3NSMEZCVFN4TlFVRlRMRWxCUVUwc1EwRkRlRVFzUlVGUFFXSXNSVUZCVFN4VlFVRlZMRTlCUVZNc1UwRkJWV0VzUlVGQlN5eERRVU53UXl4UFFVRlBMRXRCUVVzc1ZVRkJWVUVzUlVGQlMwRXNSVUZCU3l4SFFVRk5UU3hGUVVGWExFbEJRVTBzUTBGRE0wUXNSVUZEUVc1Q0xFVkJRVTBzVlVGQlZTeExRVUZQTEZOQlFWVmhMRVZCUVV0RkxFVkJRVTlETEVWQlFWY3NRMEZEY0VRc1NVRkJTVWtzUlVGQlN5eExRVUZMTEUxQlFVMHNSVUZEY0VJc1QwRkJUMEVzUlVGQlJ5eEpRVUZKVUN4RlFVRkxSU3hGUVVGUFF5eERRVUZUTEVkQlFVdEJMRVZCUVZsSkxFVkJRVXNzU1VGRE4wUXNSVUZGUVhCQ0xFVkJRVTBzVlVGQlZTeFZRVUZaTEZOQlFWVnhRaXhGUVVGUFRDeEZRVUZYTEVOQlEzQkVMRWxCUVVsSkxFVkJRVXNzUzBGQlN5eE5RVUZOTEVWQlEzQkNMRTlCUVU5QkxFVkJRVWNzVTBGQlUwTXNSVUZCVDB3c1EwRkJVeXhKUVVGTkxFZEJRVXRCTEVWQlFWbEpMRVZCUVVzc1NVRkRia1VzUlVGVFFYQkNMRVZCUVUwc1ZVRkJWU3hUUVVGWExGTkJRVlZ6UWl4RlFVRk5ReXhGUVVGMVFpeERRVVU1UkN4UlFVUkpTQ3hGUVVGTExFdEJRVXNzVFVGQlRTeEZRVUZIU1N4RlFVRlZMRWRCUTNoQ0xFVkJRVWtzUlVGQlJ5eEZRVUZKUml4RlFVRkxMRTlCUVZFc1NVRkROMEpGTEVWQlFWVktMRVZCUVVjc1NVRkJTVVVzUlVGQlN5eERRVUZETEVWQlFVY3NUMEZCVnl4RlFVRkxMRWRCUVV0RkxFVkJRMjVFTEU5QlFVOUVMRWRCUVhsQ0xFTkJRVU5ETEVWQlFWVXNTMEZCVDBvc1EwRkRkRVFzUlVGUFFYQkNMRVZCUVUwc1ZVRkJWU3hSUVVGVkxGTkJRVlZoTEVWQlFVdFZMRVZCUVhWQ0xFTkJRelZFTEU5QlFVOHNTMEZCU3l4aFFVRmhWaXhGUVVGTFFTeEZRVUZMTEVkQlFVMVZMRU5CUVhGQ0xFTkJRMnhGTEVWQlQwRjJRaXhGUVVGTkxGVkJRVlVzV1VGQll5eFRRVUZWYzBJc1JVRkJUVU1zUlVGQmRVSXNRMEZEYWtVc1NVRkJTVWdzUlVGQlN5eExRVUZMTEUxQlFVMHNSVUZEY0VJc1QwRkJUMEVzUlVGQlJ5eFhRVUZYUlN4RFFVRkpMRWRCUVVzc1EwRkJRME1zUlVGQmQwSklMRVZCUVVzc1NVRkRhRVVzUlVGRlFYQkNMRVZCUVUwc1ZVRkJWU3hoUVVGbExGTkJRVlZYTEVWQlFVdERMRVZCUVUxaExFVkJRV0ZHTEVWQlFYVkNMRU5CUTNCR0xFbEJRVWxJTEVWQlFVc3NTMEZCU3l4TlFVRk5MRVZCUTNCQ0xFOUJRVWxCTEVWQlFVY3NXVUZCV1ZRc1JVRkJTME1zUlVGQlRXRXNRMEZCVnl4SlFVRk5MRWRCUVV0R0xFVkJRM3BETEV0QlEwcElMRU5CUTFnc1JVRkhRWEJDTEVWQlFVMHNWVUZCVlN4UFFVRlRMRk5CUVZWTExFVkJRVlZyUWl4RlFVRjFRaXhEUVVOb1JTeEpRVUZKU0N4RlFVRkxMRXRCUVVzc1dVRkJXU3hGUVVOMFFrMHNSVUZMU2l4UFFVcEJUaXhGUVVGSExGRkJRVkVzVTBGQlZWb3NSVUZCUjBNc1JVRkJSMnRDTEVWQlFVY3NRMEZETVVJc1IwRkJTU3hEUVVGRGRFSXNSVUZCVTBjc1JVRkJSME1zUlVGQlIydENMRU5CUVVNc1JVRkRha0lzVDBGQlQwUXNSVUZCVFVVc1JVRkRja0lzUTBGQlF5eEZRVU5ITEVOQlFVTkdMRWRCUVU5SUxFVkJRMFFzUzBGRFNrZ3NRMEZEV0N4RlFVVkJjRUlzUlVGQlRTeFZRVUZWTEZWQlFWa3NVMEZCVlVzc1JVRkJWU3hEUVVNMVF5eEpRVUZKZDBJc1JVRkJUU3hEUVVGRExFVkJRMUJVTEVWQlFVc3NTMEZCU3l4WlFVRlpMRVZCUXpGQ0xFOUJRVUZCTEVWQlFVY3NVVUZCVVN4VFFVRlZXaXhGUVVGSFF5eEZRVUZIYTBJc1JVRkJSeXhEUVVNeFFpeFBRVUZQUlN4RlFVRkpMRTFCUVZGNFFpeEZRVUZUU1N4RlFVRkhSQ3hGUVVGSGJVSXNRMEZCUXl4RlFVRkhSU3hEUVVNeFF5eERRVUZETEVWQlEwMVVMRU5CUTFnc1JVRkRRWEJDTEVWQlFVMHNWVUZCVlN4UFFVRlRMRk5CUVZWTExFVkJRVlY1UWl4RlFVRmpMRU5CUjNaRUxGRkJSa2xJTEVWQlFVa3NSVUZCUjJ4RExFVkJRVWx4UXl4RlFVTllReXhGUVVGTExFdEJRVXNzVVVGQlVTeExRVUZMTEU5QlFVOHNSVUZCUjBNc1JVRkJWeXhGUVVGSFF5eEZRVU0xUXl4RlFVRkZRU3hGUVVGUFJpeEZRVUZITEV0QlFVc3NSMEZCUnl4TlFVTjJRblJETEVWQlFVbFpMRVZCUVZOYUxFVkJRVWQzUXl4RlFVRkxMRTFCUVU5T0xFbEJRVXNzU1VGQlNTeEZRVU42UXl4UFFVRlBiRU1zUTBGRFdDeEZRVmRCVHl4RlFVRk5MRlZCUVZVc1VVRkJWU3hUUVVGVmEwTXNSVUZCVjBNc1JVRkJZU3hEUVVONFJDeEpRVUZKUXl4RlFVRlBMRXRCUVVzc1UwRkJVMFlzUTBGQlV5eEZRVU5zUXl4SFFVRkpSU3hKUVVGVExFOUJRMVFzVDBGQlQwTXNSMEZCVXl4RlFVTndRaXhKUVVGSlF5eEZRVUZaUml4RlFVRkxMRlZCUVZkSExFVkJRVmxJTEVWQlFVc3NWVUZCVjBrc1JVRkJUMG9zUlVGQlN5eExRVU53UlVzc1JVRkJVVTRzU1VGQlowSXNUMEZCV1N4RlFVRkpMRVZCUTNoRFVpeEZRVUZMVHl4SlFVRmpMRTlCUVZrc1IwRkJTMDBzUlVGQlN5eFJRVUZSVGl4RlFVRlhMRVZCUVVjc1MwRkJTeXhSUVVGUkxFVkJRVWtzUlVGRGNFWXNUMEZCVDBjc1IwRkJVeXhWUVVGWkxFTkJRM2hDU3l4RlFVRk5MRTlCUTBZc1QwRkJVVVFzUlVGQlR5eERRVU5ZTEVsQlFVc3NSMEZEUkN4SFFVRkpMRVZCUVVWa0xFVkJRVWxoTEVWQlFVc3NTMEZCU3l4UFFVTm9RaXhOUVVGUExFTkJRVVVzUzBGQlRTeEhRVUZQTEUxQlFVOHNRMEZCUTBFc1JVRkJTeXhMUVVGTFlpeERRVUZETEVWQlFVZGhMRVZCUVVzc1QwRkJUMklzUTBGQlF5eERRVUZETEVOQlFVVXNSVUZEYUVWakxFVkJRVkVzUlVGRFVpeFRRVU5LTEVsQlFVc3NSMEZEUkN4SFFVRkpMRVZCUVVWa0xFVkJRVWxoTEVWQlFVc3NTMEZCU3l4UFFVTm9RaXhQUVVGQlRDeEZRVUZaTEVOQlFVTXNSVUZCU1Vzc1JVRkJTeXhMUVVGTFlpeERRVUZETEVWQlFVZFJMRVZCUVZrc1EwRkJReXhGUVVGSlN5eEZRVUZMTEU5QlFVOWlMRU5CUVVNc1JVRkRkRVFzUTBGQlJTeExRVUZOTEVkQlFVOHNUVUZCVDFFc1EwRkJXU3hGUVVVM1EwMHNSVUZCVVN4RlFVTmFMRWxCUVVzc1IwRkZSQ3hSUVVGVFJTeEZRVUZSTEV0QlFVMHNRMEZEYmtJc1IwRkJTU3hGUVVGRlFTeEhRVUZUVEN4RlFVRlZMRTlCUVZFc1EwRkROMEpITEVWQlFWRXNSVUZEVWl4VFFVRlRReXhEUVVOaUxFTkJRMEVzUjBGQlNTeEZRVUZGU0N4RlFVRlZTU3hEUVVGTExFVkJRVWxNTEVWQlFWVkxMRU5CUVVzc1JVRkJSU3hQUVVOMFF5eExRVU5TTEVOQlEwRXNTMEZCVDBFc1JVRkJVU3hGUVVGSFFTeEpRVU5rVEN4RlFVRlZTeXhGUVVGUkxFTkJRVU1zUlVGQlNVd3NSVUZCVlVzc1EwRkJTeXhGUVVGRlNpeEZRVUZWU1N4RFFVRkxMRU5CUVVNc1JVRkJSU3hUUVVNeFJFb3NSVUZCVlVrc1JVRkJVU3hEUVVGRExFVkJRVWtzUlVGRk0wSklMRVZCUVU5R0xFVkJRVlVzUTBGQlF5eEZRVUZGUXl4RlFVRlZMRU5CUVVNc1EwRkJReXhGUVVOb1Exb3NSVUZCU1N4SFFVTktZeXhGUVVGUlRpeEpRVUZuUWl4UFFVRlpMRVZCUVVrc1JVRkRlRU1zVTBGRFNpeEpRVUZMTEVkQlEwUXNUVUZCVHl4RFFVRkZMRXRCUVUwc1IwRkJUU3hOUVVGUExFMUJRVlVzUTBGRE9VTXNRMEZGVWl4RFFVRkRMRU5CUTB3c1JVRlZRVzVETEVWQlFVMHNWVUZCVlN4blFrRkJhMElzVTBGQlZUUkRMRVZCUVZsVUxFVkJRV0ZWTEVWQlFXRXNRMEZET1VVc1IwRkJTVVFzU1VGQlpTeFRRVU5tUVN4RlFVRmhMRXRCUVVzc1QwRkJUeXhGUVVONlFrTXNSVUZCWXl4UFFVTldSQ3hKUVVGbExGRkJRMllzVDBGQlQxQXNSMEZCVXl4RlFVVjRRaXhKUVVGSlV5eEZRVUZMTEV0QlFVc3NVMEZCVTBZc1EwRkJWU3hIUVVGTExFdEJRVXNzVTBGQlV5eExRVUZMTEU5QlFVOHNRMEZCUXl4RlFVRkhUaXhGUVVGWlVTeEZRVUZITEZWQlFWZFFMRVZCUVZsUExFVkJRVWNzVlVGQlYwNHNSVUZCVDAwc1JVRkJSeXhMUVVOc1NVTXNSMEZCVFN4RFFVRkRWQ3hGUVVGVkxFTkJRVU1zUjBGQlMwVXNTVUZCVTBZc1JVRkJWU3hEUVVGRExFVkJRVVZETEVWQlFWVXNRMEZCUXl4RFFVRkRMRVZCUVVjc1RVRkJUU3hGUVVOc1JTeEpRVUZKV2l4RlFVRkpZU3hGUVVGTExGRkJRVkZKTEVWQlFWa3NSVUZCUnl4TFFVRkxMRkZCUVZFc1JVRkROME1zUTBGQlEwTXNSMEZCWld4Q0xFVkJRVWxoTEVWQlFVc3NTMEZCU3l4UlFVRlZMRXRCUVVzc1UwRkJVMEVzUlVGQlN5eExRVUZMWWl4RFFVRkRMRVZCUVVkcFFpeERRVUZWTEVkQlFVc3NSMEZEYmtacVFpeEpRVU5LTEVsQlFVbGpMRVZCUVZGT0xFbEJRV2RDTEU5QlFWa3NSVUZCU1N4RlFVTTFReXhQUVVGUFJTeEhRVUZUTEZWQlFWa3NRMEZEZUVKTExFVkJRVTBzVDBGRFJpeFBRVUZSUkN4RlFVRlBMRU5CUTFnc1NVRkJTeXhIUVVORUxFZEJRVWtzUlVGQlJXUXNSMEZCU3l4RlFVTlFMRTFCUVU4c1EwRkJSU3hMUVVGTkxFZEJRVThzVFVGQlR5eERRVUZEWVN4RlFVRkxMRXRCUVV0aUxFTkJRVU1zUlVGQlIyRXNSVUZCU3l4UFFVRlBZaXhEUVVGRExFTkJRVU1zUTBGQlJTeEZRVU5vUldNc1JVRkJVU3hGUVVOU0xGTkJRMG9zU1VGQlN5eEhRVU5FTEVkQlFVa3NSVUZCUldRc1IwRkJTeXhGUVVOUUxFOUJRVUZSTEVWQlFWa3NRMEZCUXl4RlFVRkpTeXhGUVVGTExFdEJRVXRpTEVOQlFVTXNSVUZCUjFFc1JVRkJXU3hEUVVGRExFVkJRVWxMTEVWQlFVc3NUMEZCVDJJc1EwRkJReXhGUVVOMFJDeERRVUZGTEV0QlFVMHNSMEZCVHl4TlFVRlBVU3hEUVVGWkxFVkJSVGREVFN4RlFVRlJMRVZCUTFvc1NVRkJTeXhIUVVWRUxGRkJRVk5GTEVWQlFWRXNTMEZCVFN4RFFVTnVRaXhIUVVGSkxFVkJRVVZCTEVkQlFWTk1MRVZCUVZVc1QwRkJVU3hEUVVNM1FrY3NSVUZCVVN4RlFVTlNMRk5CUVZORExFTkJRMklzUTBGRFFTeEhRVUZKTEVWQlFVVklMRVZCUVZWSkxFTkJRVXNzUjBGQlN5eEZRVU4wUWl4TFFVTlNMRU5CUTBFc1MwRkJUMEVzUlVGQlVTeEZRVUZIUVN4SlFVTmtUQ3hGUVVGVlN5eEZRVUZSTEVOQlFVTXNSVUZCU1V3c1JVRkJWVXNzUTBGQlN5eEZRVUZGU2l4RlFVRlZTU3hEUVVGTExFTkJRVU1zUlVGQlJTeFRRVU14UkVvc1JVRkJWVWtzUlVGQlVTeERRVUZETEVWQlFVbE1MRVZCUVZWTExFVkJRVkVzUTBGQlF5eEZRVUZGTEU5QlFWTXNSVUZGZWtSSUxFVkJRVTlHTEVWQlFWVXNRMEZCUXl4RlFVRkZReXhGUVVGVkxFTkJRVU1zUTBGQlF5eEZRVU5vUTFvc1JVRkJTV0VzUlVGQlN5eExRVUZMTEU5QlEyUkRMRVZCUVZGT0xFbEJRV2RDTEU5QlFWa3NSVUZCU1N4RlFVTjRReXhUUVVOS0xFbEJRVXNzUjBGRFJDeE5RVUZQTEVOQlFVVXNTMEZCVFN4SFFVRk5MRTFCUVU4c1RVRkJWU3hEUVVNNVF5eERRVVZTTEVOQlFVTXNRMEZEVEN4RlFWVkJia01zUlVGQlRTeFZRVUZWTEZOQlFWY3NVMEZCVldFc1JVRkJTeXhEUVVOMFF5eEpRVUZKYlVNc1JVRkJWeXhMUVVGTExFMUJRMmhDVml4RlFVRlhReXhGUVVObUxFZEJRVWxUTEVWQlFWTXNUMEZEVkZZc1JVRkJXVmNzUjBGQldWWXNSVUZCV1ZVc1QwRkZia01zUTBGRFJGZ3NSVUZCV1N4RFFVRkRMRVZCUVVkRExFVkJRVmtzUTBGQlF5eEZRVU0zUWl4UlFVRlRhRVFzUlVGQlNTeEZRVUZITEVOQlFVTjVSQ3hGUVVGVExFOUJRVkY2UkN4SlFVRkxMRU5CUjI1RExFZEJSa0VyUXl4RlFVRlZMME1zUTBGQlF5eEZRVUZKZVVRc1JVRkJVeXhUUVVONFFsUXNSVUZCVldoRUxFTkJRVU1zUlVGQlNYTkNMRWxCUVZFc1QwRkJXU3hGUVVGSmJVTXNSVUZCVXl4UlFVRlJia01zUlVGQlN5eEZRVUZITEV0QlFVc3NVVUZCVVN4RlFVTjZSVEJDTEVWQlFWVm9SQ3hEUVVGRExFZEJRVXNyUXl4RlFVRlZMME1zUTBGQlF5eEZRVUZGTEU5QlF6ZENMRTlCUTBwNVJDeEZRVUZYVml4RlFVRlZMME1zUTBGQlF5eEZRVUZGWjBRc1JVRkJWV2hFTEVOQlFVTXNRMEZCUXl4RFFVTjRReXhEUVVOQkswTXNSVUZCVlN4UlFVRlJMRVZCUTJ4Q1F5eEZRVUZWTEZGQlFWRXNRMEZEZEVJc1EwRkRRU3hOUVVGUExFTkJRVVVzVlVGQlYwUXNSVUZCVnl4VlFVRlhReXhGUVVGWExFdEJRVTFUTEVOQlFWTXNRMEZEZUVVc1JVRmpRV2hFTEVWQlFVMHNWVUZCVlN4WlFVRmpMRk5CUVZWclJDeEZRVUZQUXl4RlFVRlZReXhGUVVGWFF5eEZRVUZYTEVOQlF6TkZMRWRCUVVsSUxFVkJRVTBzVjBGQllTeExRVUZMTEZOQlEzaENMRTFCUVUwc1NVRkJTU3hOUVVGTkxHOURRVUZ2UXl4RlFVVjRSQ3hIUVVGSkxFdEJRVXNzVTBGQlYwRXNSVUZCVFN4UlFVTjBRaXhQUVVGSkxFdEJRVXNzVTBGQlYwRXNSVUZCVFN4UlFVTjBRaXhQUVVWQkxFdEJRVXNzVVVGRFJVVXNTVUZCWXl4UFFVRlpMRTlCUVZsd1JDeEZRVUZOTEZWQlFWVkJMRVZCUVUwc1pVRkJaV3RFTEVOQlFVc3NSVUZCUjBVc1EwRkJVeXhGUVVOb1IwUXNTVUZCWVN4UFFVRlpMRTlCUVZsdVJDeEZRVUZOTEZWQlFWVkJMRVZCUVUwc1pVRkJaU3hKUVVGSkxFVkJRVWR0UkN4RFFVRlJMRVZCTUVKd1J5eFJRVTVKUnl4RlFVRlhMRXRCUVVzc1UwRkRhRUpETEVWQlFXRjJSQ3hGUVVGTkxHVkJRV1VzU1VGQlNTeEZRVU4wUTNkRUxFVkJRV040UkN4RlFVRk5MR1ZCUVdWclJDeERRVUZMTEVWQlIzaERUeXhGUVVGakxFZEJRVTFETEVWQlFXVXNSMEZCVFVNc1JVRkJhMEl6UkN4RlFVRk5MRkZCUVZGMVJDeEZRVUZaUXl4RlFVRmhSaXhEUVVGUkxFVkJRM1pIUnl4SFFVRmxReXhIUVVGakxFTkJRMmhETEVsQlFVbEZMRVZCUVdNMVJDeEZRVUZOTEZGQlFWRjFSQ3hGUVVGWlF5eEZRVUZoUml4RFFVRlJMRVZCUXpkRVR5eEZRVUZYVGl4RlFVRlhMRXRCUVUxUExFVkJRVzlDVUN4RlFVRlhMR05CUVdWUkxFVkJRVzFDVWl4RlFVRlhMR0ZCUTNoSFV5eEZRVUZaVWl4RlFVRlpMRXRCUVUxVExFVkJRWEZDVkN4RlFVRlpMR05CUVdWVkxFVkJRVzlDVml4RlFVRlpMR0ZCUTJ4SUxFZEJRVWxMTEVkQlFWbEhMRWRCUlZvc1IwRkJTVXdzU1VGQmIwSXNSMEZEY0VJc1IwRkJTVU1zU1VGQlowSXNSMEZEYUVJc1IwRkJTVU1zUjBGQldVY3NSMEZCWVZnc1JVRkJWeXhEUVVWd1F5eEpRVUZKWXl4RlFVRlZUaXhGUVVGVExFOUJRVTlGTEVWQlFXbENRU3hGUVVGcFFpeFBRVUZUTEVOQlFVTXNRMEZCUXl4RlFVTjJSVXNzUlVGQlYwb3NSVUZCVlN4UFFVRlBSU3hGUVVGclFrRXNSVUZCYTBJc1QwRkJVeXhEUVVGRExFTkJRVU1zUlVGREwwVXNSMEZCU1N4RFFVRkRMRTlCUVU4c1IwRkJSME1zUlVGQlUwTXNRMEZCVVN4RlFVRkhMRU5CUXk5Q0xFbEJRVWx1UkN4RlFVRlRiME1zUlVGQlZVVXNSVUZCVnl4WFFVRlpXU3hGUVVGVFF5eERRVUZSTEVWQlF5OUVMRWRCUVVsdVJDeEhRVUZWUVN4RlFVRlBMRTFCUTJwQ0xFOUJRVTlCTEVWQlFVOHNTMEZEZEVJc1EwRkRTaXhWUVVWTE1rTXNSVUZCWXl4SFFVdHVRaXhIUVVGSlNTeEhRVUZoV2l4RlFVRlhMRU5CUTNoQ0xFbEJRVWxwUWl4RlFVRlhUQ3hGUVVGVkxFOUJRVTlGTEVWQlFXdENRU3hGUVVGclFpeFBRVUZUTEVOQlFVTXNRMEZCUXl4RlFVTXpSV3BFTEVWQlFWTnRReXhGUVVGVlNTeEZRVUZaTEZkQlFWbGhMRU5CUVZFc1JVRkRka1FzUjBGQlNYQkVMRWRCUVZWQkxFVkJRVThzVFVGRGFrSXNUMEZCVDBFc1JVRkJUeXhMUVVOMFFpeFZRVVZMYTBNc1IwRkRSRlVzUjBGQldVWXNTVUZCYjBJc1JVRkJSeXhEUVVOdVF5eEpRVUZKVVN4RlFVRlZUaXhGUVVGVExFOUJRVTlGTEVWQlFXbENRU3hGUVVGcFFpeFBRVUZUTEVOQlFVTXNRMEZCUXl4RlFVTjJSVGxETEVWQlFWTnJReXhGUVVGVFNTeEZRVUZYTEZkQlFWbFpMRU5CUVU4c1JVRkRjRVFzUjBGQlNXeEVMRWRCUVZWQkxFVkJRVThzVFVGRGFrSXNUMEZCVDBFc1JVRkJUeXhMUVVOMFFpeFhRVWxJTEVOQlFVTTBReXhIUVVGWkxFTkJRVU5ITEVkQlFXRktMRWxCUVdkQ0xFVkJRVWNzUTBGRGJrUXNTVUZCU1ZVc1JVRkJWMUlzUlVGQmEwSXNUMEZCVXl4RlFVTjBRMU1zUlVGQldVNHNSVUZCYlVJc1QwRkJVeXhGUVVONFEwOHNSVUZCVjFZc1JVRkJhMEpSTEVOQlFWRXNSVUZCUlZBc1JVRkJhVUpQTEVOQlFWRXNRMEZCUXl4RlFVTnFSVWNzUlVGQldWSXNSVUZCYlVKTkxFTkJRVk1zUlVGQlJVd3NSVUZCYTBKTExFTkJRVk1zUTBGQlF5eEZRVU14UlN4SFFVRkpSU3hKUVVGalJDeEZRVUZWTEVOQlEzaENZaXhGUVVGclFpeEZRVU5zUWtZc1JVRkJZM3BFTEVWQlFVMHNTMEZCUzNWRUxFVkJRVmtzUlVGQlNTeEZRVU42UTBjc1JVRkJaVEZFTEVWQlFVMHNTMEZCUzNkRUxFVkJRV0VzUlVGQlNTeEZRVU16UXl4UlFVTktMRU5CUTBvc1EwRkRRVWNzUlVGQmEwSkRMRVZCUTJSQkxFVkJRV01zUlVGRFpFZ3NSVUZCWTNwRUxFVkJRVTBzUzBGQlMzVkVMRU5CUVZVc1JVRkhia05ITEVWQlFXVXhSQ3hGUVVGTkxFdEJRVXQzUkN4RFFVRlhMRU5CUlRkRExFTkJRMEVzUjBGQlNVTXNSMEZCWlU0c1JVRkRaaXhQUVVGUGJrUXNSVUZCVFN4cFFrRkJhVUoxUkN4RlFVRlpReXhGUVVGaFJpeEZRVUZWU0N4RFFVRlJMRVZCUXpkRkxFZEJRVWxQTEVkQlFXZENUaXhGUVVOb1FpeFBRVUZQY0VRc1JVRkJUU3hwUWtGQmFVSjNSQ3hGUVVGaFJDeEZRVUZaUkN4RlFVRlZSaXhEUVVGVExFTkJRMnhHTEVWQlIwRndSQ3hGUVVGTkxHbENRVUZ0UWl4VFFVRlZNRVVzUlVGQlVVTXNSVUZCWjBKRExFVkJRV0YyUlN4RlFVRlZMRU5CUXpsRkxFbEJRVWwzUlN4RlFVRlhOMFVzUlVGQlRTeFJRVUZSTUVVc1JVRkJVVU1zUlVGQlowSkRMRU5CUVZjc1JVRkRhRVVzUjBGQlNVTXNTVUZCWVN4SFFVTmlMRWRCUVVrc1EwRkJRemRGTEVWQlFVMHNTMEZCU3pCRkxFTkJRVTBzUlVGRGJFSXNXVUZGUTBjc1JVRkJWeXhIUVVOb1FqbENMRWRCUVUwc1IwRkJUeXc0UWtGQk9FSXNSVUZGTDBNc1QwRkJUeTlETEVWQlFVMHNWVUZCVlRCRkxFVkJRVkZ5UlN4RFFVRlJMRU5CUXpORExFVkJRMEZNTEVWQlFVMHNWVUZCV1N4VFFVRlZNRVVzUlVGQlVYSkZMRVZCUVZVc1EwRkZNVU1zVVVGRVNYbEZMRVZCUVZVc1IwRkRVRUVzUjBGQlV5eERRVU5hTEVsQlFVbDBReXhGUVVGUGEwTXNSVUZCVHl4TFFVRk5TeXhGUVVGbFRDeEZRVUZQTEdGQlFXTk5MRVZCUVdGT0xFVkJRVThzVjBGRGFFWXNSMEZCU1d4RExFVkJRVTBzUTBGRFRpeEpRVUZKZWtJc1JVRkJVWGxDTEVWQlFVc3NUMEZCVDNWRExFVkJRV0ZCTEVWQlFXRXNUMEZCVXl4RFFVRkRMRU5CUVVNc1JVRkRla1E1UkN4RlFVRlRXaXhGUVVGVE1rVXNSVUZCV1dwRkxFTkJRVXNzUlVGRGRrTXNSMEZCU1VVc1IwRkJWVUVzUlVGQlR5eE5RVU5xUWl4UFFVRlBRU3hGUVVGUExFdEJRM1JDTEVOQlEwRTJSQ3hGUVVGVk9VVXNSVUZCVFN4TFFVRkxNRVVzUTBGQlRTeERRVU12UWl4RFFVVktMRVZCUTBFeFJTeEZRVUZOTEdWQlFXbENMRk5CUVZWcFJpeEZRVUZOTEVOQlEyNURMRWxCUVVsRExFVkJRVkZFTEVWQlFVc3NUVUZCVDBVc1JVRkJVMFlzUlVGQlN5eFBRVU4wUXl4TlFVRlBMRU5CUVVVc1QwRkJVVVVzUlVGQlVTeGpRVUZsTEVOQlFVTXNRMEZCUTBRc1EwRkJTeXhEUVVGRExFVkJRVWNzWVVGQll5eERRVUZETEVOQlFVTXNSVUZCUnl4TFFVRk5MRTlCUVZjc1YwRkJXVUVzUlVGQlRTeFBRVUZQTEVOQlFVVXNRMEZEZEVnc1JVRlJRV3hHTEVWQlFVMHNTMEZCVHl4VFFVRlZNRVVzUlVGQlVWVXNSVUZCV1N4RFFVTjJReXhKUVVGSlF5eEZRVUZuUWxnc1JVRkJUeXhqUVVGbFN5eEZRVUZsVEN4RlFVRlBMR0ZCUVdOc1F5eEZRVUZQYTBNc1JVRkJUeXhMUVVNMVJpeEhRVUZKVlN4SlFVRmxMRWxCUVZFMVF5eEZRVUZOTEVOQlF6ZENMRWxCUVVrNFF5eEZRVUZsVUN4RlFVRmhMRTlCU1doRExFZEJRVWxMTEVsQlFXVXNTVUZCVVV3c1JVRkJZVThzUlVGQlpTeERRVUZETEVsQlFVMHNSVUZCUnl4RFFVTTNSQ3hKUVVGSlF5eEZRVUZqUml4RlFVRmpMRTlCUldoRExFZEJRVWxGTEVsQlFXZENMRVZCUTJoQ0xFMUJRVThzUjBGSldDeFJRVVpKUXl4RlFVRnBRa1FzUlVGQll5eEZRVU12UWtVc1JVRkJjVUpFTEVWQlEyeENReXhIUVVGelFpeEhRVUZITEVOQlF6VkNMRWRCUVVsV0xFVkJRV0ZWTEVOQlFXdENMRVZCUVVrc1JVRkRia01zVDBGQlNVRXNSVUZCY1VKSUxFVkJRV1VzU1VGRmNFTmFMRVZCUVU4c1MwRkJUeXhQUVVOa1N5eEZRVUZoTEVsQlFVa3NSMEZIYWtKVkxFVkJRWEZDUkN4SlFVTnlRbVFzUlVGQlR5eGpRVUZuUWxjc1JVRkJZeXhOUVVGTkxFVkJRVWRKTEVWQlFYRkNMRU5CUVVNc1IwRkZlRVZtTEVWQlFVOHNWMEZCWVZjc1JVRkJZMGtzUTBGQmEwSXNSVUZCUlN4RlFVRkZWaXhGUVVGaFZTeERRVUZyUWl4RFFVRkRMRVZCUVVVc1QwRkJUeXhGUVVNeFJpeEhRVVZZUVN4SFFVTktMRU5CUlVFc1RVRkJUeXhGUVVOWUxFdEJRMHNzUTBGRlJDeEpRVUZKUXl4RlFVRmhMRVZCUVVWWUxFVkJRV0ZQTEVWQlFXVXNRMEZCUXl4RlFVTm9SQ3hQUVVGQldpeEZRVUZQTEZkQlFXRnNReXhGUVVGTExFdEJRVXRyUkN4RFFVRlZMRVZCUTJwRExFVkJRMWdzUTBGRFNpeExRVU5MTEVOQlEwUXNTVUZCU1VNc1JVRkJXVTRzUlVGQll5eFBRVU14UWs4c1JVRkJaVVFzUlVGQldTeEZRVU16UWtVc1JVRkJUMUlzUlVGQlkwOHNRMEZCV1N4RlFVRkZZaXhGUVVGaFlTeERRVUZaTEVOQlFVTXNSVUZEYWtVc1IwRkJTVU1zUlVGQlN5eFBRVUZSTEVOQlJXSnVRaXhGUVVGUExFdEJRVTl0UWl4RlFVTmtMRWxCUVVsSUxFVkJRV0ZZTEVWQlFXRlpMRU5CUVZNc1JVRkJTVVVzUlVGQlN5eFBRVUZQTEU5QlFWTXNSVUZEYUVWdVFpeEZRVUZQTEZkQlFXRnRRaXhGUVVGTExFdEJRVXRJTEVOQlFWVXNRMEZETlVNc1MwRkRTeXhEUVVORUxFbEJRVWxKTEVWQlFWZEVMRVZCUVVzc1UwRkRjRUpTTEVWQlFXTk5MRU5CUVZNc1JVRkJTVWNzUlVGRE0wSXNTVUZCU1VNc1JVRkJZVVFzUlVGQlV5eFBRVUZUTEVWQlEyNURaaXhGUVVGaFdTeERRVUZUTEVWQlFVbEpMRVZCUXpGQ2NrSXNSVUZCVHl4WFFVRmhiMElzUlVGQlUwTXNRMEZCVlN4RlFVRkZMRTlCUVU4c1EwRkRjRVFzUTBGRFFTeE5RVUZQTEVWQlExZ3NRMEZEU2l4RlFVdEJMMFlzUlVGQlRTeFJRVUZWTEZOQlFWVm5SeXhGUVVGVFF5eEZRVUZUY2tJc1JVRkJZU3hEUVVOeVJDeEpRVUZKYzBJc1JVRkJWVVlzUlVGQlVTeFBRVUZSUnl4RlFVRmpTQ3hGUVVGUkxGZEJRVmxKTEVWQlFXZENTaXhGUVVGUkxHRkJRM0JHU3l4RlFVRlZTaXhGUVVGUkxFOUJRVkZMTEVWQlFXTk1MRVZCUVZFc1YwRkJXVTBzUlVGQlowSk9MRVZCUVZFc1lVRkZjRVpQTEVWQlFXZENOVUlzUlVGQldUQkNMRVZCUVdGSUxFTkJRVmNzUlVGRGVFUXNSMEZCU1Vzc1NVRkJhMElzUlVGRGJFSXNUMEZCVDBFc1JVRlBXQ3hKUVVGSlF5eEZRVUZaVUN4RlFVRlZSeXhGUVVGVlNDeEZRVUZWUnl4RlFVTXhRMHNzUlVGQmJVSk9MRVZCUVdNc1VVRkJWVVlzUlVGQlZVOHNSMEZEY2tSRkxFVkJRVzFDU2l4RlFVRmpMRkZCUVZWR0xFVkJRVlZKTEVkQlEzcEVMRTlCUVU5RExFVkJRVzFDUXl4RFFVTTVRaXhGUVV0Qk0wY3NSVUZCVFN4VlFVRlZMRXRCUVU4c1UwRkJWVFJITEVWQlFWVXNRMEZEZGtNc1NVRkJTVGRGTEVWQlFVc3NTMEZCU3l4UlFVRlJOa1VzUlVGQlZUVkZMRVZCUVZjc1JVRkRNME1zVDBGQlQwc3NSMEZCVXl4VlFVRlpMRU5CUTNoQ0xFbEJRVWwzUlN4RlFVRkpPVVVzUlVGQlJ5eExRVUZMTEVWQlEyaENMRTlCUVVrNFJTeEZRVUZGTEZGQlEwWkJMRVZCUVVVc1RVRkJVVUVzUlVGQlJTeE5RVUZOTEVOQlFVTXNSMEZEYUVKQkxFTkJRMWdzUTBGQlF5eERRVU5NTEVWQlIwRTNSeXhGUVVGTkxGVkJRVlVzVDBGQlV5eFRRVUZWTkVjc1JVRkJWU3hEUVVONlF5eEpRVUZKTjBVc1JVRkJTeXhMUVVGTExGRkJRVkUyUlN4RlFVRlZOVVVzUlVGQlZ5eEZRVU16UXl4UFFVRlBTeXhIUVVGVExGVkJRVmtzUTBGRGVFSXNTVUZCU1hkRkxFVkJRVWs1UlN4RlFVRkhMRXRCUVVzc1JVRkRhRUlzVDBGQlNUaEZMRVZCUVVVc1VVRkRSa0VzUlVGQlJTeE5RVUZSUVN4RlFVRkZMRTFCUVUwc1EwRkJReXhIUVVOb1FrRXNRMEZEV0N4RFFVRkRMRU5CUTB3c1JVRkRRU3hQUVVGUExHVkJRV1UzUnl4RlFVRk5MRlZCUVZjc1kwRkJaU3hEUVVsc1JDeEpRVUZMTEZWQlFWa3NRMEZEWWl4UFFVRlBMRXRCUVVzc1dVRkRhRUlzUlVGRFFTeFhRVUZaTEVkQlExb3NZVUZCWXl4RlFVTnNRaXhEUVVGRExFVkJSVVJCTEVWQlFVMHNWVUZCVlN4UFFVRlRMRlZCUVZrc1EwRkJSU3hQUVVGUExFdEJRVXNzVFVGQlRTeFBRVUZQTEVOQlFVY3NSVUZGYmtWQkxFVkJRVTBzVlVGQlZTeFBRVUZUTEZWQlFWa3NRMEZCUlN4UFFVRlBMRXRCUVVzc1RVRkJUU3hQUVVGUExFTkJRVWNzUlVGTmJrVkJMRVZCUVUwc1ZVRkJWU3hOUVVGUkxGVkJRVmtzUTBGRGFFTXNTMEZCU3l4TlFVRk5MRk5CUVZjc1IwRkRkRUlzU1VGQlNXbENMRVZCUVZNc1NVRkJTV3BDTEVWQlFVMHNUMEZCVnl4TFFVRkxMRk5CUVZVc1MwRkJTeXhaUVVGWkxFVkJRMnhGTEU5QlFVRnBRaXhGUVVGUExFMUJRVkVzUzBGQlN5eE5RVU53UWtFc1JVRkJUeXhOUVVGUkxFdEJRVXNzVFVGRFlrRXNRMEZEV0N4RlFVMUJha0lzUlVGQlRTeFZRVUZWTEZsQlFXTXNVMEZCVlRoSExFVkJRVThzUTBGRE0wTXNTVUZCU1RkR0xFVkJRVk1zU1VGQlNXcENMRVZCUVUwc1QwRkJWeXhMUVVGTExGTkJRVlVzUzBGQlN5eFpRVUZaTEVWQlEyeEZMRTlCUVVGcFFpeEZRVUZQTEUxQlFWRXNTMEZCU3l4TlFVRk5MRmxCUVZrMlJpeERRVUZMTEVWQlF6TkROMFlzUlVGQlR5eE5RVUZSTEV0QlFVc3NUVUZEWWtFc1EwRkRXQ3hGUVVWQmFrSXNSVUZCVFN4VlFVRlZMRkZCUVZVc1UwRkJWU3RITEVWQlFWY3NRMEZEZGtOQkxFbEJRV01zVTBGQlZVRXNSVUZCV1N4WlFVTjRReXhKUVVGSlF5eEZRVUZOTEV0QlFVc3NUMEZCVHl4RlFVRkhReXhGUVVGTkxFdEJRVXNzVDBGQlR5eEZRVU16UXl4UFFVRkpSQ3hKUVVGUkxFOUJRMFFzUzBGQlN5eFRRVUZUUVN4RlFVRkxReXhGUVVGTExFZEJRVTFHTEVOQlFWTXNSVUZETTBNc1EwRkJReXhEUVVOYUxFVkJSVUV2Unl4RlFVRk5MRlZCUVZVc1ZVRkJXU3hWUVVGWkxFTkJRM0JETEVsQlFVbHJTQ3hGUVVGVkxFTkJRVU1zUlVGRFppeFpRVUZMTEUxQlFVMHNVMEZCVXl4TFFVRkxMRTlCUVU4c1JVRkJSeXhMUVVGTExFOUJRVThzUlVGQlJ5eEhRVUZOTEVkQlFVOHNTMEZCVFN4RlFVRkhMRk5CUVZVeFJ5eEZRVUZIUXl4RlFVRkhMRU5CUVVWNVJ5eEZRVUZSTEV0QlFVc3hSeXhEUVVGRExFTkJRVWNzUTBGQlF5eEZRVU55UnpCSExFTkJRMWdzUlVGRlFXeElMRVZCUVUwc1ZVRkJWU3haUVVGakxGVkJRVmtzUTBGRGRFTXNTVUZCU1d0SUxFVkJRVlVzUTBGQlF5eEZRVU5tTEZsQlFVc3NUVUZCVFN4VFFVRlRMRXRCUVVzc1QwRkJUeXhGUVVGSExFdEJRVXNzVDBGQlR5eEZRVUZITEVkQlFVMHNSMEZCVHl4TFFVRk5MRVZCUVVjc1UwRkJWVEZITEVWQlFVZERMRVZCUVVjc1EwRkJSWGxITEVWQlFWRXNTMEZCUzNwSExFTkJRVU1zUTBGQlJ5eERRVUZETEVWQlEzSkhlVWNzUTBGRFdDeEZRVVZCYkVnc1JVRkJUU3hWUVVGVkxGTkJRVmNzVlVGQldTeERRVU51UXl4UFFVRlBMRXRCUVVzc1VVRkJVU3hGUVVGRkxGTkJRVk1zUTBGRGJrTXNSVUZKUVVFc1JVRkJUU3hWUVVGVkxHZENRVUZyUWl4VFFVRlZZU3hGUVVGTFJTeEZRVUZQTEVOQlEzQkVMRTlCUVU4c1MwRkJTeXhKUVVGSlJpeEZRVUZMUlN4RlFVRlBMRVZCUVVzc1EwRkRja01zUlVGUFFXWXNSVUZCVFN4VlFVRlZMR1ZCUVdsQ0xGTkJRVlZoTEVWQlFVdHpRaXhGUVVGaExFTkJSWHBFTEU5QlJFRkJMRVZCUVdOQkxFZEJRV1VzUTBGQlF5eEZRVU14UW5SQ0xFbEJRVkVzVDBGRFJDeExRVUZMTEUxQlFVMHNVVUZCVVhOQ0xFTkJRVmNzUlVGRmJFTXNTMEZCU3l4TlFVRk5MRzlDUVVGdlFuUkNMRVZCUVVzc1MwRkJTeXhUUVVGVkxFZEJRVTl6UWl4RFFVRlhMRU5CUTJoR0xFVkJTVUZ1UXl4RlFVRk5MRlZCUVZVc1kwRkJaMElzVTBGQlZXRXNSVUZCU3l4RFFVTXpReXhKUVVGSmNFSXNSVUZCU1N4TFFVRkxMR1ZCUVdWdlFpeEZRVUZMYlVJc1JVRkJWeXhGUVVNMVF5eFBRVUZQZGtNc1IwRkJTMEVzUlVGQlJTeERRVUZETEVOQlEyNUNMRVZCVDBGUExFVkJRVTBzVlVGQlZTeGpRVUZuUWl4VFFVRlZZU3hGUVVGTGMwSXNSVUZCWVN4RFFVVjRSQ3hQUVVSQlFTeEZRVUZqUVN4SFFVRmxMRU5CUVVNc1JVRkRNVUowUWl4SlFVRlJMRTlCUTBRc1MwRkJTeXhOUVVGTkxGRkJRVkZ6UWl4RFFVRlhMRVZCUld4RExFdEJRVXNzVFVGQlRTeHRRa0ZCYlVKMFFpeEZRVUZMTEV0QlFVc3NVMEZCVlN4SFFVRlBjMElzUTBGQlZ5eERRVU12UlN4RlFVbEJia01zUlVGQlRTeFZRVUZWTEdGQlFXVXNVMEZCVldFc1JVRkJTeXhEUVVNeFF5eEpRVUZKY0VJc1JVRkJTU3hMUVVGTExHTkJRV052UWl4RlFVRkxiVUlzUlVGQlZ5eEZRVU16UXl4UFFVRlBka01zUjBGQlMwRXNSVUZCUlN4RFFVRkRMRU5CUTI1Q0xFVkJVVUZQTEVWQlFVMHNWVUZCVlN4dFFrRkJjVUlzVTBGQlZXRXNSVUZCUzNOQ0xFVkJRV0VzUTBGRE4wUXNUMEZCVHl4TFFVRkxMRTFCUVUwc2JVSkJRVzFDZEVJc1JVRkJTeXhMUVVGTExGTkJRVlVzUjBGQlRYTkNMRWRCUVdVc1EwRkJReXhEUVVGRExFTkJRM0JHTEVWQlVVRnVReXhGUVVGTkxGVkJRVlVzYjBKQlFYTkNMRk5CUVZWaExFVkJRVXR6UWl4RlFVRmhMRU5CUXpsRUxFOUJRVThzUzBGQlN5eE5RVUZOTEc5Q1FVRnZRblJDTEVWQlFVc3NTMEZCU3l4VFFVRlZMRWRCUVUxelFpeEhRVUZsTEVOQlFVTXNRMEZCUXl4RFFVTnlSaXhGUVVsQmJrTXNSVUZCVFN4VlFVRlZMR2RDUVVGclFpeFRRVUZWWVN4RlFVRkxSU3hGUVVGUExFTkJRM0JFTEU5QlFVOHNTMEZCU3l4VlFVRlZSaXhGUVVGTFFTeEZRVUZMTEVkQlFVMHNVMEZCVlV3c1JVRkJSME1zUlVGQlJ5eERRVUZGTEUxQlFWRXNRMEZCUlN4TlFVRlBUU3hEUVVGTkxFTkJRVWtzUTBGQlF5eEpRVUZOTEVOQlF6bEdMRVZCWVVGbUxFVkJRVTBzVlVGQlZTeFRRVUZYTEZOQlFWVlhMRVZCUVV0RExFVkJRVTFoTEVWQlFXRnpSaXhGUVVGWExFTkJRMmhGUVN4SlFVRmpMRk5CUVZWQkxFVkJRVmtzVlVGRGVFTXNTVUZCU1Vjc1JVRkJWU3hEUVVGRExFVkJRMllzV1VGQlN5eE5RVUZOTEZOQlFWTjJSeXhGUVVGTFF5eEZRVUZOWVN4RlFVRmhMRWRCUVU4c1MwRkJUU3hGUVVGSExGTkJRVlZxUWl4RlFVRkhReXhGUVVGSExFTkJRM2hGTEU5QlFVRjVSeXhGUVVGUkxFdEJRVXNzUTBGQlF6RkhMRVZCUVVkRExFTkJRVU1zUTBGQlF5eEZRVU5hZVVjc1JVRkJVU3hQUVVGVFNDeEZRVUZaU1N4SFFVRlJMRTFCUTJoRUxFTkJRVU1zUlVGRFRVUXNRMEZEV0N4RlFWVkJiRWdzUlVGQlRTeFZRVUZWTEZOQlFWY3NVMEZCVlhGQ0xFVkJRVTlNTEVWQlFWY3NRMEZGYmtRc1VVRkVTVzlITEVWQlFWRXNSVUZEU0hwR0xFVkJRVWtzUlVGQlIwRXNSVUZCU1U0c1JVRkJUU3hQUVVGUlRTeEpRVU14UWl4TFFVRkxMRWxCUVVsT0xFVkJRVTFOTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVkT0xFVkJRVTFOTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVkWUxFTkJRVk1zUjBGRE5VTnZSeXhKUVVOU0xFOUJRVTlCTEVOQlExZ3NSVUZyUWtGd1NDeEZRVUZOTEZWQlFWVXNVMEZCVnl4VFFVRlZWeXhGUVVGTFF5eEZRVUZOWVN4RlFVRmhORVlzUlVGQlV6TkhMRVZCUVdkQ0xFTkJRMnhHTEVsQlFVazBSeXhGUVVGSkxFdEJRVXNzVFVGQlRTeFRRVUZUTTBjc1JVRkJTME1zUlVGQlRXRXNSVUZCWVN4SFFVRlBMRXRCUVUxbUxFZEJRV3RDTEVWQlFVY3lSeXhEUVVGUExFVkJRemRHTEU5QlFVOHNUMEZCVDBNc1IwRkJUU3hUUVVGWFFTeEZRVUZKUVN4RlFVRkZMRXRCUTNwRExFVkJPRUpCZEVnc1JVRkJUU3hWUVVGVkxGVkJRVmtzVTBGQlZWY3NSVUZCUzBNc1JVRkJUV0VzUlVGQllUUkdMRVZCUVZNelJ5eEZRVUZuUWl4RFFVTnVSaXhKUVVGSk5rY3NSVUZCVHl4TFFVRkxMRTFCUTFwQkxFVkJRVXNzVjBGRFRDeExRVUZMTEUxQlFWRkJMRVZCUVU5QkxFVkJRVXNzVFVGQlRTeEhRVU51UXl4SFFVRkpMRU5CUTBFc1NVRkJTVVFzUlVGQlNVTXNSVUZCU3l4VFFVRlROVWNzUlVGQlMwTXNSVUZCVFdFc1JVRkJZU3hIUVVGTkxFdEJRVTFtTEVkQlFXdENMRVZCUVVjeVJ5eERRVUZQTEVWQlEzUkdMRTlCUVU4c1QwRkJUME1zUjBGQlRTeFRRVUZYUVN4RlFVRkpRU3hGUVVGRkxFdEJRM3BETEZGQlEwRXNRMEZGU1N4UlFVUkpSU3hGUVVGWExFOUJRMUpFTEVWQlFVc3NTMEZCU3l4UlFVRlZMRWRCUVVzc1EwRkJRMEVzUlVGQlN5eFJRVU5zUTBNc1NVRkJZVUVzUlVGQlYwUXNSVUZCU3l4VlFVTTNRaXhMUVVGTExFMUJRVkZCTEVWQlFVOUJMRVZCUVVzc1MwRkJTeXhUUVVGWExFVkJRVWx1U0N4SFFVTjZRMjFJTEVWQlFVc3NVMEZCVXl4RFFVRkRMRVZCUjI1Q1F5eEpRVU5CUkN4RlFVRkxMRk5CUVZjc1IwRkZlRUlzUTBGRFNpeEZRVVZCZGtnc1JVRkJUU3hWUVVGVkxGRkJRVlVzVTBGQlZYRklMRVZCUVZNelJ5eEZRVUZuUWl4RFFVTjZSQ3hQUVVGUExFdEJRVXNzVlVGQlZTeExRVUZMTEU5QlFVOHNSVUZCUnl4TFFVRkxMRTlCUVU4c1JVRkJSeXhIUVVGTk1rY3NSVUZCVXpOSExFTkJRV01zUTBGRGNrWXNSVUZUUVZZc1JVRkJUU3hWUVVGVkxGbEJRV01zVTBGQlZWY3NSVUZCUzBNc1JVRkJUV0VzUlVGQllTeERRVU0xUkN4UFFVRlBMRXRCUVVzc1ZVRkJWV1FzUlVGQlMwTXNSVUZCVFdFc1JVRkJZVTRzUlVGQlZ5eERRVU0zUkN4RlFVVkJia0lzUlVGQlRTeFZRVUZWTEZkQlFXRXNVMEZCVlhOQ0xFVkJRVTBzUTBGRGVrTXNVVUZCVTBzc1JVRkJTU3hGUVVGSExFVkJRVWtzUlVGQlIwRXNSVUZCU1V3c1JVRkJTeXhQUVVGUlN5eEpRVU5vUXl4TFFVRkxMRTlCUVU5TUxFVkJRVXRMTEVOQlFVTXNRMEZCUXl4SFFVTnVRaXhKUVVOU0xFOUJRVThzUTBGRFdDeEZRVU5CTEU5QlFVOHNaVUZCWlROQ0xFVkJRVTBzVlVGQlZ5eFRRVUZWTEVOQlJ6ZERMRWxCUVVzc1ZVRkJXU3hEUVVkaUxGRkJSa2syUml4RlFVRlBMRXRCUVVzc1RVRkRXbFlzUlVGQlV5eEhRVU5PVlN4SFFVTklWaXhKUVVOQlZTeEZRVUZQUVN4RlFVRkxMRTlCUVZNc1QwRkJXVUVzUlVGQlN5eFRRVUZUTEVOQlFVTXNSVUZGY0VRc1QwRkJUMVlzUTBGRFdDeEZRVU5CTEZkQlFWa3NSMEZEV2l4aFFVRmpMRVZCUTJ4Q0xFTkJRVU1zUlVGUFJHNUdMRVZCUVUwc1ZVRkJWU3hQUVVGVExGVkJRVmtzUTBGRGFrTXNTVUZCU1hsSUxFVkJRVWtzUzBGSFVrRXNSVUZCUlN4TlFVRlJRU3hGUVVGRkxFbEJRVTFCTEVWQlFVVXNWVUZCV1N4VlFVRlpMRU5CUTNoRExFMUJRVTBzU1VGQlNTeE5RVUZOTEc5RFFVRnZReXhEUVVONFJDeERRVU5LTEVWQlJVRjZTQ3hGUVVGTkxGVkJRVlVzVTBGQlZ5eFZRVUZaTEVOQlIyNURMRTlCUVU4c1MwRkJTeXhOUVVWYUxFOUJRVThzUzBGQlN5eEpRVVZhTEU5QlFVOHNTMEZCU3l4VFFVTm9RaXhGUVVOQkxFOUJRVThzWlVGQlpVRXNSVUZCVFN4VlFVRlhMRmRCUVZrc1EwRkZMME1zU1VGQlN5eFZRVUZaTEVOQlEySXNUMEZCVHl4TFFVRkxMR1ZCUVdVc1YwRkJWeXhEUVVNeFF5eEZRVU5CTEZkQlFWa3NSMEZEV2l4aFFVRmpMRVZCUTJ4Q0xFTkJRVU1zUlVGTlJFRXNSVUZCVFN4VlFVRlZMRmRCUVdFc1ZVRkJXU3hEUVVOeVF5eEpRVUZKTUVnc1JVRkJUeXhMUVVGTExFMUJRVTBzVjBGQlZ5eEZRVUZITEV0QlFVMHNRMEZCUXl4RlFVTXpRek5GTEVkQlFVMHlSU3hKUVVGVExFdEJRVXNzUzBGQlRTd3dRa0ZCTWtKQkxFVkJRVTBzWVVGQll5eExRVUZMTEVsQlFVa3NRMEZEZEVZc1JVRkRUekZJTEVOQlExZ3NSVUZCUlN4RlFVTkdXaXhIUVVGUkxGRkJRVlZaTEVkQlRXeENMRk5CUVZNeVNDeEhRVUZOUXl4RlFVRlBMRU5CUTJ4Q0xFOUJRVTlCTEVOQlExZ3NRMEZEUVhoSkxFZEJRVkVzVFVGQlVYVkpMRWRCUTFvc1VVRkJWU3hQUVVGUExGZEJRMnBDTTBnc1IwRkJUU3hWUVVGVkxFOUJRVThzVVVGQlVTeEZRVUZKUVN4SFFVRk5MRlZCUVZVc1UwRkRka1JCTEVkQlFVMHNWVUZCVlN4TlFVRlJRU3hIUVVGTkxGVkJRVlVzVDBGRGVFTkJMRWRCUVUwc1ZVRkJWU3hUUVVGWFFTeEhRVUZOTEZWQlFWVXNVMEZETTBOQkxFZEJRVTBzVlVGQlZTeEpRVUZOUVN4SFFVRk5MRlZCUVZVc1NVRkRkRU1zVTBGQlUzRkRMRWRCUVZOS0xFVkJRVTBzUTBGRGFFSkJMRWxCUVZNc1UwRkJWVUVzUlVGQlVTeFZRVUZaTEVOQlFVVXNUVUZCVVN4RFFVRkZMRXRCUVUwc1IwRkJUU3hOUVVGUExFMUJRVlVzUTBGQlNTeEhRVU40Uml4SlFVRkphRUlzUlVGQlV5eERRVUZGTEV0QlFVMW5RaXhEUVVGTExFVkJRekZDTEU5QlFVa3NVVUZCVlN4UFFVRlBMRmRCUTJwQ2FFSXNSVUZCVHl4UFFVRlBMRkZCUVZFc1JVRkJTU3hWUVVGWkxFTkJRVVVzVDBGQlR5eEpRVUZOTEVkQlEyeEVRU3hEUVVOWUxFTkJSVUVzU1VGQlNUUkhMRWRCUVhWQ0xGVkJRVmtzUTBGRGJrTXNVMEZCVTBFc1JVRkJUWFpITEVWQlFVMTNSeXhGUVVGUkxFTkJRM0pDZUVjc1NVRkJVeXhUUVVGVlFTeEZRVUZQTEVOQlFVTXNSMEZETDBJc1MwRkJTeXhMUVVGUFFTeEZRVU5hTEV0QlFVc3NUMEZCVTNkSExFZEJRVlZETEVkQlEzaENMRXRCUVVzc1UwRkJWeXhOUVVOd1FpeERRVU5CTEdOQlFVOHNaVUZCWlVZc1JVRkJUU3hWUVVGWExGTkJRVlVzUTBGRE4wTXNTVUZCU3l4VlFVRlpMRU5CUVVVc1QwRkJUeXhMUVVGTExGZEJRV0VzVFVGQlZ5eEZRVU4yUkN4WFFVRlpMRWRCUTFvc1lVRkJZeXhGUVVOc1FpeERRVUZETEVWQlIwUkJMRVZCUVUwc1ZVRkJWU3hQUVVGVExGVkJRVmtzUTBGRGFrTXNUMEZCVHl4TFFVRkxMRXRCUVVzc1MwRkJTeXhMUVVGTExFOUJRVk1zUTBGQlF5eERRVU42UXl4RlFVZEJRU3hGUVVGTkxGVkJRVlVzVVVGQlZTeFRRVUZWYUVnc1JVRkJTMjFJTEVWQlFWTkRMRVZCUVVzc1EwRkhia1FzVVVGR1NUTkhMRVZCUVU4c1MwRkJTeXhMUVVOYU5FY3NSVUZCU3l4RlFVRkhReXhGUVVGTE4wY3NSVUZCU3l4UFFVRlJPRWNzUlVGQlRVUXNSMEZCVFN4RlFVTnVRMFFzUlVGQlMwTXNSMEZCU1N4RFFVTmFMRWxCUVVsRkxFVkJRVWxLTEVWQlFVa3pSeXhGUVVGTE9FY3NRMEZCUnl4RlFVRkhka2dzUTBGQlJ5eEZRVU14UWl4SFFVRkpkMGdzUlVGQlNTeEZRVU5LU0N4RlFVRkxSU3hGUVVGTkxGVkJRMDVETEVWQlFVa3NSVUZEVkVZc1JVRkJTME1zVFVGRFNpeEpRVUZKUXl4SlFVRk5MRVZCUTFnc1QwRkJUMFFzUlVGSFVDeEhRVUZKZGtnc1NVRkJVVUVzUlVGRFVpeFBRVUZQVXl4RlFVRkxMRTlCUlZvc1RVRkJUU3hKUVVGSkxFMUJRVTBzT0VKQlFUaENMRVZCUlhSRU9FY3NSVUZCVDBZc1JVRkJTME1zUjBGQlR5eERRVU4yUWl4RFFVTkJMRTlCUVU5RExFVkJRVTFLTEVOQk5rTnFRaXhGUVVkQlNDeEZRVUZOTEZWQlFWVXNUMEZCVXl4VlFVRlpMRU5CUTJwRExFOUJRVThzUzBGQlN5eExRVUZMTEVOQlFVTXNRMEZEZEVJc1JVRkRRVUVzUlVGQlRTeFZRVUZWTEZGQlFWVXNVMEZCVlRGR0xFVkJRV0VzUTBGRE4wTXNSMEZCU1N4TFFVRkxMRXRCUVVzc1UwRkJWeXhGUVVWNlFpeFBRVUZCUVN4RlFVRlpMRU5CUVVNc1JVRkJTU3hMUVVGTExFdEJRVXNzUTBGQlF5eEZRVU0xUWtFc1JVRkJXU3hEUVVGRExFVkJRVWtzUzBGQlN5eFBRVUZQTEVOQlFVTXNSVUZEZGtKQkxFTkJRMWdzUlVGRFFUQkdMRVZCUVUwc1ZVRkJWU3hSUVVGVkxGTkJRVlV4Uml4RlFVRmhMRU5CUXpkRExFZEJRVWtzUzBGQlN5eExRVUZMTEZOQlFWY3NSVUZGZWtJc1MwRkJTVzFITEVWQlFWa3NTMEZCU3l4TFFVRkxMRTlCUVZNc1JVRkRia01zVDBGQlFXNUhMRVZCUVZrc1EwRkJReXhGUVVGSkxFdEJRVXNzUzBGQlMyMUhMRU5CUVZNc1JVRkRjRU51Unl4RlFVRlpMRU5CUVVNc1JVRkJTU3hMUVVGTExFOUJRVTl0Unl4RFFVRlRMRVZCUXk5Q2JrY3NSVUZEV0N4RlFVTkJNRVlzUlVGQlRTeFZRVUZWTEUxQlFWRXNWVUZCV1N4RFFVTm9ReXhKUVVGSmNFZ3NSVUZCU1N4TFFVRkxMRTlCUTJJc1QwRkJUeXhKUVVGSmIwZ3NSVUZCVFN4TFFVRkxMRXRCUVVzc1RVRkJUU3hEUVVGRExFVkJRVWR3U0N4SlFVRk5jMGdzUjBGQldYUklMRVZCUVVsQkxFVkJRVVVzVFVGQlRTeERRVUZETEVOQlFVTXNRMEZEZWtVc1JVRkRRVzlJTEVWQlFVMHNWVUZCVlN4WlFVRmpMRk5CUVZWbUxFVkJRVThzUTBGRE0wTXNUMEZCVHl4TFFVRkxMRlZCUVZrc1EwRkJRMEVzUlVGQlVTeExRVUZQTEV0QlFVc3NUVUZCVFN4RFFVTjJSQ3hGUVVOQlpTeEZRVUZOTEZWQlFWVXNTVUZCVFN4VFFVRlZhRWdzUlVGQlMwTXNSVUZCWTIxRkxFVkJRVTBzUTBGRGNrUXNTVUZCU1hSRUxFVkJRVWtzUzBGQlN5eFJRVUZSWkN4RlFVRkxMRWRCUVVsdlJTeEZRVUZMTEZGQlFWRXNSVUZETTBNc1QwRkJUM1JFTEVWQlFVa3NSVUZCU1dJc1JVRkJaU3hMUVVGTExFOUJRVTloTEVOQlFVTXNRMEZETDBNc1JVRkRRV3RITEVWQlFVMHNWVUZCVlN4dFFrRkJjVUlzVTBGQlZXaElMRVZCUVV0WUxFVkJRVk54U1N4RlFVRlhjRWNzUlVGQllTeERRVU5xUml4SlFVRkpMRVZCUVVrc1MwRkJTeXhSUVVGUmRFSXNSVUZCU3l4SFFVRkpXQ3hEUVVGUExFVkJRMnBEYzBrc1JVRkJaU3hGUVVGSkxFVkJRVWtzUTBGQlF5eEZRVUZKTEVWQlFVdEVMRVZCUVZrc1JVRkJTU3hGUVVGSkxFVkJRM3BFTEVkQlFVbERMRWRCUVdkQ0xFVkJRMmhDTEU5QlFVRnlSeXhGUVVGWkxFTkJRVU1zUlVGQlNTeExRVUZMTEV0QlFVdHhSeXhEUVVGWkxFVkJRM1pEY2tjc1JVRkJXU3hEUVVGRExFVkJRVWtzUzBGQlN5eFBRVUZQY1Vjc1EwRkJXU3hGUVVOc1EzSkhMRU5CUjJZc1JVRkRRVEJHTEVWQlFVMHNWVUZCVlN4dlFrRkJjMElzVTBGQlZXaElMRVZCUVV0WUxFVkJRVk54U1N4RlFVRlhjRWNzUlVGQllTeERRVU5zUml4SlFVRkpMRVZCUVVrc1MwRkJTeXhSUVVGUmRFSXNSVUZCU3l4SFFVRkpXQ3hEUVVGUExFVkJRMnBEYzBrc1JVRkJaU3hGUVVGSkxFVkJRVWtzUTBGQlF5eEZRVUZMUkN4RlFVRlpMRVZCUVVrc1JVRkJTU3hGUVVOcVJHcElMRVZCUVU4c1MwRkJTeXhMUVVOb1FpeEhRVUZKYTBnc1JVRkJaV3hJTEVWQlFVc3NUMEZEY0VJc1QwRkJRV0VzUlVGQldTeERRVUZETEVWQlFVbGlMRVZCUVV0clNDeERRVUZaTEVWQlEyeERja2NzUlVGQldTeERRVUZETEVWQlFVa3NTMEZCU3l4UFFVRlBjVWNzUTBGQldTeEZRVU5zUTNKSExFTkJSMllzUlVGRFFUQkdMRVZCUVUwc1ZVRkJWU3hYUVVGaExGTkJRVlZaTEVWQlFVOTRSQ3hGUVVGTmVVUXNSVUZCVnl4RFFVTXpSQ3hKUVVGSlF5eEZRVUZMTEV0QlFVc3NTMEZCU3l4UFFVRlJReXhGUVVGTExFdEJRVXNzVDBGQlR5eFBRVU0xUXl4UFFVRkJOMFlzUjBGQlRTeExRVUZMTEZOQlFWZG5SaXhIUVVGWldTeEhRVUZOUXl4RlFVRkxSQ3hKUVVGUFF5eEZRVUZKTEhGRFFVRnpRMGdzUlVGQlR5eGxRVUZuUWtVc1JVRkJTVU1zUlVGQlNTeG5Ra0ZCYVVKR0xFTkJRVk1zUlVGTmRrb3pSaXhIUVVGTk1FWXNSMEZCVXl4SFFVRkxSU3hGUVVGTExFVkJRVWNzYzBKQlFYVkNSaXhGUVVGUExHZENRVUZwUWtNc1EwRkJVeXhGUVVNM1JVTXNRMEZEV0N4RlFVZEJaQ3hGUVVGTkxGVkJRVlVzU1VGQlRTeFRRVUZWYUVnc1JVRkJTMFVzUlVGQlQwTXNSVUZCVjJsRkxFVkJRVTBzUTBGRGVrUXNTVUZCU1N4RlFVRkpMRXRCUVVzc1VVRkJVWEJGTEVWQlFVc3NSMEZCU1c5RkxFVkJRVXNzVVVGQlVTeEZRVU16UXl4SFFVRkpMRVZCUVVrc1JVRkJSeXhEUVVsUUxFZEJSa0VzUlVGQlNTeERRVUZETEVWQlEweEJMRVZCUVVzc1VVRkRSQ3hMUVVGTExFdEJRVXNzVDBGQlUwRXNSVUZCU3l4aFFVTjRRaXhQUVVGUExFdEJRVXNzWVVGQllTeEZRVUZIY0VVc1JVRkJTMFVzUlVGQlQydEZMRU5CUVVrc1JVRkpOVU1zU1VGQlNUUkVMRVZCUVd0Q0xFdEJRVXNzYTBKQlFXdENMRVZCUVVkRExFVkJRVk1zUzBGRGVrUXNUMEZCU1N4RlFVRkpMRXRCUVVzc1MwRkJTeXhUUVVOa0xFZEJRVXNzUzBGQlN5eExRVUZMTEU5QlEyWkJMRVZCUVZORUxFZEJSV0pETEVWQlFVOHNZVUZCWVN4RlFVRkhha2tzUlVGQlMwVXNSVUZCVDJ0RkxFTkJRVWtzUlVGRGFFTTBSQ3hEUVVWbUxFdEJSMGtzVVVGQlNUZElMRWxCUVdNc1MwRkRWa1FzU1VGQlZTeFJRVU5XTEV0QlFVc3NXVUZCV1N4RlFVVnlRaXhMUVVGTExFdEJRVXNzUTBGQlF5eEZRVUZKUml4RlFVTm1MRXRCUVVzc1QwRkJUeXhEUVVGRExFVkJRVWxGTEVkQlJXUXNSVUZGWml4RlFVTkJPRWNzUlVGQlRTeFZRVUZWTEZsQlFXTXNWVUZCV1N4RFFVTjBReXhQUVVGSkxFdEJRVXNzVTBGQlYwVXNSMEZEVkN4TFFVRkxMRTlCUVZNc1MwRkJTeXhQUVVGUExFMUJRVTBzUlVGQlJ5eExRVUZMTEV0QlFVc3NUVUZCVFN4RlFVTjJSQ3hMUVVGTExFMUJRMmhDTEVWQlEwRkdMRVZCUVUwc1ZVRkJWU3hoUVVGbExGTkJRVlZzUnl4RlFVRkhaQ3hGUVVGTFJTeEZRVUZQYTBVc1JVRkJUU3hEUVVVeFJDeEhRVVJCTEV0QlFVc3NTMEZCU3l4UFFVRlBkRVFzUlVGQlJ5eEZRVUZIWkN4RFFVRkhMRVZCUTNSQ0xFdEJRVXNzVTBGQlYydElMRWRCUVZjc1EwRkRNMElzUzBGQlQwRXNSMEZCVlN4UFFVRlRPVU1zUlVGQlN5eGpRVU16UWpoRExFZEJRVlVzUzBGQlN5eE5RVUZUTEVWQlF6VkNMRWRCUVVsb1NDeEpRVUZWTEU5QlExWXNUVUZCVHl4SFFVZFFMRXRCUVVzc1QwRkJVMmRJTEVkQlFWVXNUVUZCVFN4RlFVRkhMRXRCUVVzc1MwRkJTeXhQUVVGVExFTkJRVU1zUTBGRk4wUXNRMEZEUVN4WlFVRkxMRTlCUVU4c1QwRkJUM0JITEVWQlFVY3NSVUZCUjFvc1EwRkJTeXhGUVVOMlFpeEZRVU5ZTEVWQlEwRTRSeXhGUVVGTkxGVkJRVlVzWTBGQlowSXNVMEZCVld0Q0xFVkJRVXNzUTBGSk0wTXNTVUZCU1hSSkxFVkJRVWtzUzBGQlN5eFBRVU5VYzBrc1JVRkJTU3hUUVVGWGFFSXNSMEZEV0hSSUxFbEJRVTF6U0N4SlFVTk9kRWdzUlVGQlJTeExRVUZMTEUxQlFWTXNSMEZIY0VKQkxFVkJRVWtzUzBGQlN5eFpRVUZaTEVWQlEzSkNRU3hGUVVGRkxFdEJRVXR6U1N4RlFVRkpMRTlCUVU4c1RVRkJUU3hEUVVGRExFZEJSVGRDTEV0QlFVc3NTMEZCU3l4TFFVRkxRU3hGUVVGSkxFdEJRVXNzVFVGQlRTeERRVUZETEVOQlEyNURMRVZCUTBGc1FpeEZRVUZOTEZWQlFWVXNZVUZCWlN4VFFVRlZiVUlzUlVGQlN5eERRVWt4UXl4SlFVRkpka2tzUlVGQlNTeExRVUZMTEU5QlExUjFTU3hGUVVGSkxGTkJRVmRxUWl4SFFVTllkRWdzU1VGQlRYTklMRWxCUTA1MFNDeEZRVUZGTEZGQlFWRXNUVUZCVXl4SFFVZDJRa0VzUlVGQlNTeExRVUZMTEZsQlFWa3NSVUZEY2tKQkxFVkJRVVVzVVVGQlVYVkpMRVZCUVVrc1QwRkJUeXhKUVVGSkxFTkJRVU1zUjBGRk9VSXNTMEZCU3l4TFFVRkxMRkZCUVZGQkxFVkJRVWtzUzBGQlN5eEpRVUZKTEVOQlFVTXNRMEZEY0VNc1JVRkRRVzVDTEVWQlFVMHNWVUZCVlN4clFrRkJiMElzVlVGQldTeERRVVUxUXl4SlFVRkpiMElzUlVGQlR5eExRVUZMTEV0QlFVc3NVVUZCVlN4RlFVRkhNMGdzUlVGQlR5eExRVUZMTEV0QlFVc3NUMEZCVHpKSUxFTkJRVWtzUlVGRE1VUnVRaXhGUVVGVExFdEJRVXNzVTBGQlYwTXNSMEZCV1VFc1IwRkJXU3hMUVVGTExFOUJRVThzVDBGQlQydENMRU5CUVVrc1JVRkROVVVzVDBGQlR5eEpRVUZKY0VJc1JVRkJUWFpITEVWQlFVMTNSeXhEUVVGTkxFTkJRMnBETEVWQlIwRkVMRVZCUVUwc1ZVRkJWU3hUUVVGWExGTkJRVlZzU0N4RlFVRkxReXhGUVVGTllTeEZRVUZoZVVnc1JVRkJWV3BGTEVWQlFVMXJSU3hGUVVGUE9VSXNSVUZCVXl4RFFVTjZSaXhKUVVGSldTeEZRVUZOYUVRc1JVRkJTeXhUUVVOWWJVVXNSVUZCVFVNc1JVRkRWaXhIUVVGSmVra3NTVUZCVTBRc1IwRkpWQ3hIUVVoSkxFTkJRVU5qTEVsQlJVdzBTQ3hIUVVGVFJDeEZRVUZQTEV0QlFVc3NVVUZCVVhwSkxFVkJRVXNzUjBGQlNYTklMRU5CUVVjc1IwRkJTeXhGUVVNeFEyMUNMRVZCUVU4c1IwRkRVQ3hQUVVGUFJDeFBRVWRZUXl4RlFVRlBMRXRCUVVzc1VVRkJVWHBKTEVWQlFVc3NSVUZCUjNOSUxFTkJRVWNzUlVGREwwSnZRaXhGUVVGUkxFdEJRVXNzVVVGQlVYcEpMRVZCUVUwc1IwRkJTWEZJTEVOQlFVY3NSVUZET1VKdlFpeEZRVUZSTEVWQlExSkJMRVZCUVZFc1EwRkJRMEVzUlVGRFNqVklMRWxCUVdkQ0xFbEJRM0pDTkVnc1NVRkZVaXhKUVVGSkwwZ3NSVUZCVHl4TFFVRkxMRXRCUVUxM1J5eEZRVUZUTEV0QlFVc3NUMEZEY0VNc1IwRkJTVlFzU1VGQldTeFBRVU5hTEZGQlFWTXhSaXhGUVVGSmVVZ3NSVUZCVFhwSUxFVkJRVWt3U0N4RlFVRlBNVWdzU1VGQlN5eERRVU12UWl4SlFVRkpaQ3hGUVVGTlV5eEZRVUZMU3l4RFFVRkRMRVZCUTFwV0xFVkJRVk52Unl4RlFVRlJlRWNzUlVGQlMybElMRVZCUVU5dVJ5eERRVUZETEVWQlFVZDNTQ3hIUVVGUExFVkJRelZETEVkQlFVbHNTU3hKUVVGWExFOUJRVmNzUTBGRGRFSXNSMEZCU1dsSkxFbEJRV0VzUjBGQlRTeERRVU51UWl4SFFVRkpja2tzU1VGQlVWTXNSVUZCUzBzc1EwRkJReXhIUVVGTExFdEJRVXNzVjBGQllTeEhRVU55UXl4TlFVRk5MRWxCUVVrc1RVRkJUU3huUkVGQlowUXNSVUZEYUVWV0xFVkJRVThzVVVGRFVDeExRVUZMTEV0QlFVc3NUMEZCVDFVc1JVRkJSeXhEUVVGRExFVkJRMnBDTEV0QlFVc3NVMEZCVjI5SExFbEJRMmhDTEV0QlFVc3NUMEZCVHl4UFFVRlBjRWNzUlVGQlJ5eERRVUZETEVWQlF6TkNjMFFzUlVGQlN5eFJRVU5NZEVRc1NVRkRRVEJJTEV0QlJVdHdTU3hGUVVGUExHVkJRV1VzVDBGQlR5eEpRVU5zUXpaSExFVkJRVTl1Unl4RFFVRkRMRVZCUVVsV0xFVkJRVThzVFVGRk0wSXNRMEZEUVN4SFFVRkpRU3hGUVVGUExGRkJRVlVzVDBGRGFrSXNUMEZCVDBFc1EwRkRaaXhEUVVOS0xFMUJSMEZyU1N4SFFVRlRSU3hGUVVGUlJDeEZRVU55UWl4UFFVRlBSQ3hEUVVOWUxFVkJSVUYwUWl4RlFVRk5MRlZCUVZVc1lVRkJaU3hUUVVGVmEwSXNSVUZCUzA4c1JVRkJSeXhEUVVVM1F5eEhRVVJCTEV0QlFVc3NTMEZCU3l4TFFVRkxMRTFCUVUwc1MwRkJTeXhMUVVGTlVDeEZRVUZKTEVsQlFVa3NSVUZEY0VNc1MwRkJTeXhUUVVGWGFFSXNSMEZCVnl4RFFVTXpRaXhIUVVGSlowSXNSVUZCU1N4VFFVRlhhRUlzUjBGRFppeFBRVU5LTEV0QlFVc3NUMEZCVXl4TFFVRkxMRTlCUVU4c1RVRkJUU3hGUVVGSExFdEJRVXNzUzBGQlN5eE5RVUZOTEVOQlEzWkVMRU5CUTBFc1MwRkJTeXhQUVVGUExFdEJRVXNzVFVGQlRTeExRVUZMTEU5QlFWRm5RaXhGUVVGSkxGbEJRVmtzUTBGQlF5eERRVU42UkN4RlFVTlBiRUlzUTBGRFdDeEZRVUZGTEVWQlJVVXpSeXhIUVVFclFpeFRRVUZWY1Vrc1JVRkJVU3hEUVVOcVJHeExMRWRCUVZVMlFpeEZRVUZsY1Vrc1EwRkJUU3hGUVVzdlFpeFRRVUZUY2trc1JVRkJZelJGTEVWQlFWVjRSU3hGUVVGTkxFTkJRMjVETEVsQlFVbG1MRVZCUVZFc1MwRkRXaXhIUVVGSkxFTkJRVU5sTEVWQlFVMHNRMEZEVUVFc1JVRkJUeXhEUVVGRExFVkJRMUlzVVVGQlV5eEZRVUZKTEVWQlFVY3NSVUZCU1hkRkxFVkJRVk1zVDBGQlVTeEpRVU5xUTNoRkxFVkJRVXNzUTBGQlF5eEZRVUZKZDBVc1JVRkJVeXhEUVVGRExFVkJRVVVzVDBGQlR5eERRVU55UXl4RFFVTkJMRTlCUVVGMlJpeEZRVUZSWjBvc1JVRkJUeXhMUVVGTExFdEJRVTFxU1N4RFFVRkpMRWRCUVVzc1MwRkRia05tTEVWQlFVMHNVMEZCVjNWR0xFVkJRMVoyUml4RFFVTllMRU5CUTBFc1QwRkJRVmNzUlVGQll5eFZRVUZWTEUxQlFWRXNWVUZCV1N4RFFVVjRReXhSUVVSSk5FVXNSVUZCVnl4TFFVRkxMRk5CUVZNc1RVRkJUU3hEUVVGRExFVkJRek5DYmtVc1JVRkJTU3hGUVVGSFFTeEZRVUZKYlVVc1JVRkJVeXhQUVVGUmJrVXNTVUZEYWtOdFJTeEZRVUZUYmtVc1EwRkJReXhGUVVGRkxGTkJRVmNzUjBGRE0wSXNUMEZCVHl4SlFVRkpWQ3hGUVVGak5FVXNSVUZCVlN4TFFVRkxMRXRCUVVzc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGRGVrUXNSVUZEUVRWRkxFVkJRV01zVlVGQlZTeFpRVUZqTEZOQlFWVTBSaXhGUVVGUExFTkJRMjVFTEVkQlFVa3NTMEZCU3l4VlFVRlpMRU5CUVVOQkxFVkJRMnhDTEU5QlFVOHNTMEZGV0N4UlFVUkpNVVlzUlVGQlN5eEpRVUZKUml4RlFVRmpMRXRCUVVzc1UwRkJVeXhOUVVGTkxFTkJRVU1zUlVGQlJ5eExRVUZMTEV0QlFVc3NUVUZCVFN4RFFVRkRMRU5CUVVNc1JVRkROVVJUTEVWQlFVa3NSVUZCUjBFc1JVRkJTVkFzUlVGQlJ5eFRRVUZUTEU5QlFWRlBMRWxCUTNCRFVDeEZRVUZITEZOQlFWTlBMRU5CUVVNc1JVRkJTVkFzUlVGQlJ5eFRRVUZUVHl4RFFVRkRMRVZCUVVVc1dVRkJXVzFHTEVOQlFVc3NSVUZEY2tRc1QwRkJUekZHTEVOQlExZ3NSVUZEUVVZc1JVRkJZeXhWUVVGVkxFOUJRVk1zVlVGQldTeERRVU42UXl4UFFVRlBMRXRCUVVzc1UwRkJVeXhEUVVGRExFVkJRVVVzVDBGQlR5eERRVU51UXl4RlFVTkJRU3hGUVVGakxGVkJRVlVzVVVGQlZTeFRRVUZWYVVJc1JVRkJZU3hEUVVOeVJDeFBRVUZQTEV0QlFVc3NVMEZCVXl4RFFVRkRMRVZCUVVVc1VVRkJVVUVzUTBGQlZ5eERRVU12UXl4RlFVTkJha0lzUlVGQll5eFZRVUZWTEZGQlFWVXNVMEZCVldsQ0xFVkJRV0VzUTBGRGNrUXNUMEZCVHl4TFFVRkxMRk5CUVZNc1MwRkJTeXhUUVVGVExFOUJRVk1zUTBGQlF5eEZRVUZGTEZGQlFWRkJMRU5CUVZjc1EwRkRkRVVzUlVGRFFXcENMRVZCUVdNc1ZVRkJWU3hKUVVGTkxGTkJRVlZNTEVWQlFVdERMRVZCUVdOdFJTeEZRVUZOTEVOQlF6ZEVMRWxCUVVrc1JVRkJTU3hMUVVGTExGRkJRVkZ3UlN4RlFVRkxMRVZCUVVkdlJTeEZRVUZMTEZGQlFWRXNSVUZCUjJFc1JVRkJWeXhMUVVGTExGTkJRemRFTEU5QlFVOHNSVUZCU1VFc1JVRkJVeXhQUVVGVFFTeEZRVUZUTEVOQlFVTXNSVUZCUlN4SlFVRkpha1lzUlVGQlMwTXNSVUZCWTIxRkxFTkJRVWtzUlVGQlNTeE5RVU0xUlN4RlFVTkJMMFFzUlVGQll5eFZRVUZWTEcxQ1FVRnhRaXhUUVVGVlRDeEZRVUZMV0N4RlFVRlRjVWtzUlVGQlYzQkhMRVZCUVdFc1EwRkRla1lzU1VGQlNWSXNSVUZCU1N4TFFVRkxMRkZCUVZGa0xFVkJRVXNzUlVGQlIxZ3NRMEZCVHl4RlFVRkhORVlzUlVGQlZ5eExRVUZMTEZOQlEzWkVMRWRCUVVsdVJTeEhRVUZMYlVVc1JVRkJVeXhQUVVOa0xFOUJRVThzUzBGQlN5eFJRVUZSTTBRc1EwRkJWeXhGUVVOdVF5eEpRVUZKYkVJc1JVRkJVelpGTEVWQlFWTnVSU3hEUVVGRExFVkJRVVVzYlVKQlFXMUNaQ3hGUVVGTFdDeEZRVUZUY1Vrc1JVRkJWM0JITEVOQlFWY3NSVUZEYUVZc1QwRkJTV3hDTEVsQlFWY3NVVUZCWVZVc1JVRkJTU3hGUVVOeVFtMUZMRVZCUVZOdVJTeEZRVUZKTEVOQlFVTXNSVUZCUlN4UlFVRlJVU3hEUVVGWExFVkJSWFpEYkVJc1EwRkRXQ3hGUVVOQlF5eEZRVUZqTEZWQlFWVXNiMEpCUVhOQ0xGTkJRVlZNTEVWQlFVdFlMRVZCUVZOeFNTeEZRVUZYY0Vjc1JVRkJZU3hEUVVNeFJpeEpRVUZKVWl4RlFVRkpMRXRCUVVzc1VVRkJVV1FzUlVGQlN5eEZRVUZIV0N4RFFVRlBMRVZCUVVjMFJpeEZRVUZYTEV0QlFVc3NVMEZCVlRCRUxFVkJRVk14UkN4RlFVRlRMRTlCUTI1R0xFZEJRVWtzUlVGQlFXNUZMRWRCUVVzMlNDeEhRVVZVTEV0QlFVbDJTU3hGUVVGVE5rVXNSVUZCVTI1RkxFTkJRVU1zUlVGQlJTeHZRa0ZCYjBKa0xFVkJRVXRZTEVWQlFWTnhTU3hGUVVGWGNFY3NRMEZCVnl4RlFVTnFSaXhQUVVGSmJFSXNTVUZCVnl4UlFVRmhWU3hGUVVGSk5rZ3NSVUZCVXl4RlFVTTVRakZFTEVWQlFWTnVSU3hGUVVGSkxFTkJRVU1zUlVGQlJTeFJRVUZSVVN4RFFVRlhMRVZCUlhaRGJFSXNSVUZEV0N4RlFVTkJReXhGUVVGakxGVkJRVlVzVjBGQllTeFRRVUZWZFVnc1JVRkJUM2hFTEVWQlFVMTVSQ3hGUVVGWExFTkJRMjVGTEVsQlFVbERMRVZCUVVzc1MwRkJTeXhMUVVGTExFOUJRVkZqTEVWQlFVc3NTMEZCU3l4VFFVRlRMRTlCUXpsRE1VY3NSMEZCVFRSR0xFbEJRVTlqTEVWQlFVa3NkVU5CUVhkRGFFSXNSVUZCVHl4VlFVRlhSU3hGUVVGSll5eEZRVUZKTEZsQlFXRm1MRU5CUVZNc1JVRkRla2N6Uml4SFFVRk5ORVlzUlVGQlN5eEhRVUZMUml4RlFVRlJMRVZCUVVjc01rSkJRVFJDUlN4RlFVRkpMRmRCUVZsR0xFVkJRVThzV1VGQllVTXNRMEZCVXl4RlFVVndSeXhSUVVSSmFFSXNSVUZCVHl4RlFVRkhWeXhGUVVGSkxFdEJRVXNzVTBGQlZUZElMRVZCUVVrc1MwRkJTeXhMUVVGTmEwb3NSVUZCV1N4RlFVTnVSQzlJTEVWQlFVa3NSVUZCUjBFc1JVRkJTVGhJTEVWQlFVazVTQ3hKUVVOd1FpdEdMRWRCUVZGWExFVkJRVVV4Unl4RFFVRkRMRVZCUVVVc1YwRkJWemhITEVWQlFWRXNSVUZCUjNoRUxFVkJRVTE1UkN4RlFVRlphRUlzUTBGQlNTeEZRVU42UkdkRExFZEJRV0Z5UWl4RlFVRkZNVWNzUTBGQlF5eEZRVUZGTEV0QlFVc3NUMEZEZGtKdlFpeEhRVUZOTWtVc1IwRkJVV2RETEVWQlFWY3NUVUZCVDJoQ0xFTkJRVk1zUlVGRGVrTXpSaXhIUVVGTmNFSXNTVUZCVFN4SFFVRkxNRWNzUlVGQlJURkhMRVZCUVVrc1EwRkJReXhGUVVGRkxHTkJRV2RDTUVjc1JVRkJSVEZITEVOQlFVTXNSVUZCUlN4WlFVRmhMRFJDUVVFMlFpdEhMRU5CUVZNc1JVRkRPVVpNTEVWQlFVVXhSeXhEUVVGRExFVkJRVVVzVDBGQlR5eEhRVUZMYmtJc1JVRkJSVzFDTEVOQlFVTXNSMEZEY0VKdlFpeEhRVUZOTEVkQlFVOHNVVUZCVTNCQ0xFVkJRVWNzVFVGQlQyNUNMRVZCUVVWdFFpeERRVUZETEVWQlFVY3NkVUpCUVhkQ01FY3NSVUZCUlRGSExFTkJRVU1zUlVGQlJTeFBRVUZQTEVWQlFVY3NWMEZCV1RoSExFVkJRVThzV1VGQllVTXNRMEZCVXl4RlFVTndTQzlITEVsQlFVMHNSMEZCUzNORUxFVkJRVXNzVTBGQlUzcEZMRVZCUVVWdFFpeEZRVUZKTEVOQlFVTXNSVUZCUjI1Q0xFVkJRVVZ0UWl4RFFVRkRMRU5CUVVNc1JVRkJTU3hIUVVNM1EyOUNMRWRCUVUwc1IwRkJUeXd3UWtGQk1rSXdSaXhGUVVGUExGRkJRVk01Unl4RlFVRkhMRTlCUVZGdVFpeEZRVUZGYlVJc1JVRkJTU3hEUVVGRExFVkJRVWR1UWl4RlFVRkZiVUlzUTBGQlF5eERRVUZETEVWQlNYcEdMRWxCUVVsblNTeEZRVUZUUkN4SlFVRmpMRVZCUXpOQ0xFOUJRVWxETEVkQlFWVkVMRVZCUVZsNlJTeEZRVUZMTEZsQlFXTjNSU3hKUVVONlF6RkhMRWRCUVUwc1IwRkJUelJITEVWQlFWTXNWVUZCV1N4WFFVRlpMR0ZCUVdORUxFVkJRVmRvUXl4RlFVRk5MR0ZCUVdObExFVkJRVThzWlVGQlowSjRSQ3hGUVVGTExGbEJRV0VzYlVKQlFXOUNkMFVzUlVGQlNTeGhRVUZqWml4RFFVRlRMRVZCUTJoTWFFSXNRMEZEV0N4RlFVZEJlRWNzUlVGQll5eFZRVUZWTEVsQlFVMHNVMEZCVlV3c1JVRkJTMFVzUlVGQlQwTXNSVUZCVjJsRkxFVkJRVTBzUTBGRGFrVXNTVUZCU1c5RUxFVkJRVWtzUzBGQlN5eFRRVUZWY0VJc1JVRkJUV2hETEVWQlFVc3NZVUZCWTJkRUxFVkJRVTFvUkN4RlFVRkxMRk5CUTNaRWRFUXNSVUZCU1N4TFFVRkxMRWxCUVVrc1MwRkJTeXhSUVVGUlpDeEZRVUZMTEVWQlFVZHZTQ3hEUVVGSExFVkJRVWRKTEVWQlFVVXNUMEZCVXl4RFFVRkRMRVZCUVVkMVFpeEZRVUZSZGtJc1JVRkJSVEZITEVOQlFVTXNSVUZIZEVVc1IwRkdTV2xKTEVWQlFVMHNWMEZEVG5aQ0xFVkJRVVV4Unl4RFFVRkRMRVZCUVVscFNTeEZRVUZSUVN4RlFVRk5MRTFCUVUwc1IwRkRNMEpCTEVWQlFVMHNTMEZCU3l4UlFVRlZNME1zUlVGQlN5eERRVXN4UWl4SlFVRkpMMFFzUlVGRFFYWkNMRVZCUVVrc1NVRkJUWFZDTEVWQlFWRnRSaXhGUVVGRk1VY3NSVUZCU1N4RFFVRkRMRWRCUVVjc1MwRkJTeXhQUVVGVGMwWXNSMEZCVDJkQ0xFVkJRVWt5UWl4RlFVRk5MRXRCUVVzc1EwRkJReXhGUVVGSEwwa3NRMEZCUnl4RlFVRkpMRWRCUTNaRmNVTXNSVUZCVFN4WFFVTk9iVVlzUlVGQlJURkhMRVZCUVVrc1EwRkJReXhGUVVGSmRVSXNSVUZCVVVFc1JVRkJUU3hOUVVGTkxFZEJRMjVEUVN4RlFVRk5MR05CUVdNd1J5eERRVUZMTEVWQlEzcENMRXRCUVVzc1MwRkJTMnBKTEVWQlFVa3NRMEZCUXl4RlFVRkpkVUlzUlVGQlRTeFBRVUZQTEVsQlJURkNRU3hGUVVGUmJVWXNSVUZCUlRGSExFVkJRVWtzUTBGQlF5eExRVUZQTEZGQlFXRjFRaXhGUVVGTkxFdEJRVXNzVDBGQlV5dEVMRWRCUVU5blFpeEZRVUZKTWtJc1JVRkJUU3hQUVVGUExFVkJRVWN2U1N4RFFVRkhMRVZCUVVrc1NVRkRNMFp4UXl4RlFVRk5MRmRCUTA1dFJpeEZRVUZGTVVjc1JVRkJTU3hEUVVGRExFVkJRVWwxUWl4RlFVRlJRU3hGUVVGTkxFMUJRVTBzUjBGRGJrTkJMRVZCUVUwc1lVRkJZVEJITEVOQlFVc3NSVUZEZUVJc1MwRkJTeXhMUVVGTGFra3NRMEZCUXl4RlFVRkpNRWNzUlVGQlJURkhMRU5CUVVNc1JVRkJSU3hQUVVGUExFVkJSVzVETEVOQlEwRXNTVUZCU1ZZc1JVRkJVekpKTEVWQlFVMHNTVUZCU1M5SkxFVkJRVXRGTEVWQlFVOURMRVZCUVZkcFJTeERRVUZKTEVWQlEyeEVMRWRCUVVsb1JTeEpRVUZYTEVkQlExZ3NUVUZCVHl4SFFVVllMRWRCUkVFc1MwRkJTeXhMUVVGTFZTeERRVUZETEVWQlFVbHBTU3hGUVVGTkxFOUJRVThzUlVGRGVFSXpTU3hKUVVGWExFZEJRMWdzVFVGQlR5eEhRVVZZTEVkQlFVa3NTMEZCU3l4TFFVRkxMRTlCUVZOblJ5eEZRVU51UWl4WlFVRkxMRTlCUVU5MFJpeEZRVUZKTEVWQlFVZFdMRU5CUVUwc1JVRkRiRUlzUjBGSFVDeEpRVUZKTkVnc1JVRkJhMElzUzBGQlN5eHJRa0ZCYTBJc1JVRkJSME1zUlVGQlV5eExRVU42UkN4UFFVRkpZaXhGUVVGSmFFZ3NSVUZCVHl4UFFVRlBMRVZCUVVjc1MwRkJTeXhQUVVGUExFTkJRVU1zUlVGQlNTeEpRVU4wUXpaSUxFVkJRVk5FTEVWQlExUnNTQ3hIUVVGTExFdEJRVXNzUzBGQlN5eFJRVVZ1UW0xSUxFVkJRVThzVDBGQlQyNUlMRVZCUVVrc1JVRkJSMVlzUTBGQlRTeEZRVU53UWpSSUxFTkJSV1lzUlVGTlFUTklMRVZCUVdNc1ZVRkJWU3hQUVVGVExGTkJRVlZUTEVWQlFVZHBTU3hGUVVGUExFTkJRMnBFTEV0QlFVc3NVMEZCVXl4UFFVRlBha2tzUlVGQlJ5eEZRVUZIYVVrc1EwRkJTeXhGUVVOb1F5eExRVUZMTEV0QlFVc3NUMEZCVDJwSkxFVkJRVWNzUlVGQlIybEpMRVZCUVUwc1QwRkJUeXhEUVVGRExFTkJRM3BETEVWQlMwRXhTU3hGUVVGakxGVkJRVlVzYTBKQlFXOUNMRlZCUVZrc1EwRkZjRVFzU1VGQlNTdElMRVZCUVU4c1MwRkJTeXhUUVVGVExGRkJRVlVzUlVGRGJrTXNUMEZCVHl4SlFVRkpMMGdzUlVGQll5eExRVUZMTEZOQlFWTXNUMEZCVHl0SUxFTkJRVWtzUlVGQlJ5eExRVUZMTEV0QlFVc3NUMEZCVDBFc1EwRkJTU3hEUVVGRExFTkJReTlGTEVWQlEwRXZTQ3hGUVVGakxGVkJRVlVzWTBGQlowSXNVMEZCVlRaSUxFVkJRVXNzUTBGSmJrUXNTMEZCU3l4TFFVRkxMRXRCUVV0QkxFVkJRVWtzUzBGQlN5eE5RVUZOTEVOQlFVTXNSVUZETDBJc1MwRkJTeXhUUVVGVExFdEJRVXRCTEVWQlFVa3NVMEZCVXl4TlFVRk5MRU5CUVVNc1EwRkRNME1zUlVGRFFUZElMRVZCUVdNc1ZVRkJWU3hoUVVGbExGTkJRVlU0U0N4RlFVRkxMRU5CU1d4RUxFdEJRVXNzUzBGQlN5eFJRVUZSUVN4RlFVRkpMRXRCUVVzc1NVRkJTU3hEUVVGRExFVkJRMmhETEV0QlFVc3NVMEZCVXl4UlFVRlJRU3hGUVVGSkxGTkJRVk1zU1VGQlNTeERRVUZETEVOQlF6VkRMRVZCVFVFNVNDeEZRVUZqTEZWQlFWVXNVMEZCVnl4VFFVRlZVQ3hGUVVGTFF5eEZRVUZOWVN4RlFVRmhlVWdzUlVGQlZXcEZMRVZCUVUxclJTeEZRVUZQT1VJc1JVRkJVeXhEUVVOcVJ5eEpRVUZKV1N4RlFVRk5hRVFzUlVGQlN5eFRRVU5ZTTBRc1JVRkJUeXhMUVVGTExFdEJRVTEzUlN4RlFVRlhMRXRCUVVzc1UwRkRiRU56UkN4RlFVRlBMRXRCUVVzc1VVRkJVWHBKTEVWQlFVc3NSVUZCUjNOSUxFTkJRVWNzUlVGQlIzUkhMRVZCUVVsNVNDeEZRVU4wUTBNc1JVRkJVU3hMUVVGTExFbEJRVWw2U1N4SlFVRlRSQ3hGUVVGTmVVa3NSVUZCVHl4TFFVRkxMRkZCUVZGNFNTeEZRVUZOTEVWQlFVZHhTQ3hEUVVGSExFVkJRVWN6Unl4RlFVRkxMRTlCUVZNc1EwRkJReXhGUVVOMFJpeEhRVUZMTkVnc1IwRlRRU3hIUVVGSmRrZ3NSMEZCU3pCSUxFVkJRMVlzUjBGQlNTeERRVU5CTEV0QlFVOHhTQ3hIUVVGTE1FZ3NSVUZCVHpGSUxFbEJRVXNzUTBGRGFFSnRSU3hGUVVGVGJrVXNRMEZCUXl4RlFVRkZMRmRCUTFwdFJTeEZRVUZUYmtVc1EwRkJReXhGUVVGSmJVVXNSVUZCVTI1RkxFTkJRVU1zUlVGQlJTeE5RVUZOTEVkQlEzQkRMRWxCUVVsV0xFVkJRVk0yUlN4RlFVRlRia1VzUTBGQlF5eEZRVUZGTEZOQlFWTm9RaXhGUVVGTFF5eEZRVUZOWVN4RlFVRmhlVWdzUlVGQlZXcEZMRVZCUVUxclJTeEZRVUZQT1VJc1EwRkJUeXhGUVVsNFJpeEhRVVJCTDBZc1JVRkJTMHNzUTBGQlF5eEZRVUZKYlVVc1JVRkJVMjVGTEVOQlFVTXNSVUZCUlN4UFFVRlBMRVZCUTNwQ0xFOUJRVTlXTEVkQlFWY3NVMEZEYkVJc1QwRkJUMEVzUlVGRFdHdEpMRVZCUVZGc1NTeERRVU5hTEVOQlEwb3NVVUZEUVN4RFFVVkpMRWxCUVVsblNTeEZRVUZQYUVVc1JVRkJTeXhqUVVGblFpeEZRVWRvUXl4SlFVWkpiVVVzUlVGQlR5eEhRVU5RUVN4SlFVTkRla2dzUlVGQlNUQklMRVZCUVU4eFNDeEhRVUZMZVVnc1JVRkJUWHBJTEVsQlEyNUNiVVVzUlVGQlUyNUZMRU5CUVVNc1JVRkJSU3hMUVVGTExGRkJRVlZ6U0N4SlFVTjJRbTVFTEVWQlFWTnVSU3hEUVVGRExFVkJRVVVzUzBGQlN5eFRRVUZYTEVWQlF6VkNMRXRCUVVzc1UwRkJVMEVzUlVGQlIzTkVMRVZCUVVzc1dVRkJXU3hIUVVkc1F6TkVMRVZCUVVzc1QwRkJUMHNzUlVGQlJ5eERRVUZETEVWQlEyaENiVVVzUlVGQlV5eFBRVUZQYmtVc1JVRkJSeXhEUVVGRExFbEJTVFZDYlVVc1JVRkJVeXhUUVVGWExFZEJRVXRCTEVWQlFWTXNRMEZCUXl4RlFVRkZMRXRCUVVzc1UwRkJWeXhIUVVOeVJDOURMRWRCUVUwc1IwRkJUeXhsUVVGbExFTkJRM0JETEUxQmRrTkJMRTFCUVU5d1FpeEhRVUZMTUVnc1JVRkJUekZJTEVsQlFVc3NRMEZEY0VJc1NVRkJTVllzUlVGQlV6WkZMRVZCUVZOdVJTeERRVUZETEVWQlFVVXNVMEZCVTJoQ0xFVkJRVXRETEVWQlFVMWhMRVZCUVdGNVNDeEZRVUZWYWtVc1JVRkJUV3RGTEVWQlFVODVRaXhEUVVGUExFVkJRM2hHTEVkQlFVa3NUMEZCVDNCSExFZEJRVmNzVTBGRGJFSXNUMEZCVDBFc1JVRkRXR3RKTEVWQlFWRnNTU3hEUVVOYUxFTkJiME5LTEU5QlFVOXJTU3hEUVVOWUxFVkJSVUZxU1N4RlFVRmpMRlZCUVZVc1UwRkJWeXhUUVVGVlV5eEZRVUZIYTBrc1JVRkJVeXhEUVVOeVJDeEpRVUZKTDBRc1JVRkJWeXhMUVVGTExGTkJRM0JDTEU5QlFVbHVSU3hIUVVGTExFZEJRVXRCTEVWQlFVa3NSVUZCU1cxRkxFVkJRVk1zVVVGRGRrSkJMRVZCUVZOdVJTeERRVUZETEVWQlFVVXNTMEZCU3l4UFFVRlRiVVVzUlVGQlUyNUZMRVZCUVVrc1EwRkJReXhGUVVGRkxFdEJRVXNzVVVGQlZXdEpMRWRCUTNKRUwwUXNSVUZCVTI1RkxFTkJRVU1zUlVGQlJTeFhRVU5hYlVVc1JVRkJVMjVGTEVOQlFVTXNSVUZCU1cxRkxFVkJRVk51UlN4RFFVRkRMRVZCUVVVc1RVRkJUU3hIUVVOd1EyMUZMRVZCUVZOdVJTeERRVUZETEVWQlFVVXNZVUZCWVcxRkxFVkJRVk51UlN4RlFVRkpMRU5CUVVNc1JVRkJSMnRKTEVOQlFVOHNSVUZEYWtRdlJDeEZRVUZUTEU5QlFVOXVSU3hGUVVGSkxFVkJRVWNzUTBGQlF5eEZRVU40UWl4TFFVRkxMRXRCUVVzc1QwRkJUMEVzUlVGQlNTeEZRVUZITEVOQlFVTXNSVUZEZWtJc1MwRkJTeXhMUVVGTFFTeERRVUZETEVWQlFVbHRSU3hGUVVGVGJrVXNRMEZCUXl4RlFVRkZMRTlCUVU4c1JVRkRNMElzU1VGSFVpeEZRVU5ZTEVWQlRVRlVMRVZCUVdNc1ZVRkJWU3hoUVVGbExGTkJRVlUyU0N4RlFVRkxOVWtzUlVGQllTeERRVVV2UkN4SlFVRkpNa29zUlVGQldTeExRVUZMTEV0QlFVc3NUMEZETVVJc1MwRkJTeXhMUVVGTExFdEJRVXNzVFVGQlRTeExRVUZMTEV0QlFVMW1MRVZCUVVrc1NVRkJTU3hGUVVONFF5eEpRVUZKWjBJc1JVRkJZMmhDTEVWQlFVa3NVMEZGZEVJc1IwRkVRU3hMUVVGTExGTkJRVk1zUzBGQlN5eE5RVUZOTEV0QlFVc3NVMEZCVldkQ0xFTkJRVmNzUlVGREwwTm9RaXhGUVVGSkxGVkJRVmtzUTBGQlF5eExRVUZMTEZOQlIzUkNMRkZCUVZOd1NDeEZRVUZKTEVWQlFVZEJMRVZCUVVsdlNTeEZRVUZaTEU5QlFWRndTU3hKUVVOd1EyOUpMRVZCUVZsd1NTeERRVUZETEVWQlFVVXNVMEZCVnl4SFFVdHNReXhMUVVGTExGTkJRVk50U1N4RlFVRlpMRVZCUVVjelNpeERRVUZYTEVOQlF6VkRMRVZCUTA5bExFTkJRMWdzUlVGQlJUSkhMRVZCUVVzc1JVRlpTRVVzUjBGQldTeERRVUZETEVWQlEySnVSeXhIUVVGVExFTkJRVVVzVDBGQlVTeEZRVUZMTEVWQlFVZFVMRWRCUVdNc1ZVRkJXU3hEUVVGRkxFOUJRVTlUTEVWQlFWRXNSVUZEZEVWMVJpeEhRVUZSTEVOQlFVVXNUVUZCVHl4RlFVRkxMRVZCUTNSQ0wwY3NSMEZCWVN4VlFVRlpMRU5CUTNwQ0xFbEJRVWtzUlVGQlNTeEpRVUZKZVVnc1IwRkRXaXhUUVVGRkxGTkJRVmNzUjBGRFRpeERRVU5ZTEVWQlFVY3NSVUZEUXpWRkxFZEJRV0VzUTBGQlF5eEZRVU5rYWtJc1IwRkJZeXhEUVVGRExFVkJRMjVDTEZOQlFWTmxMRWRCUVUxcFNDeEZRVUZOTEVOQlJXcENMRkZCUkVsRExFVkJRVThzUTBGQlF5eEZRVU5JUXl4RlFVRkxMRVZCUVVkQkxFVkJRVXNzVlVGQlZTeFBRVUZSUVN4SlFVTndRMFFzUlVGQlMwTXNSVUZCU3l4RFFVRkRMRVZCUVVrc1ZVRkJWVUVzUTBGQlJTeEZRVVV2UWl4SFFVRkpMRU5CUVVOR0xFVkJRMFFzVFVGQlFVTXNSVUZCU3l4UlFVRlJMRk5CUVZNc1JVRkRhRUlzU1VGQlNTeE5RVUZOUVN4RlFVRkxMRXRCUVVzc1IwRkJSeXhEUVVGRExFTkJSWFJETEVOQlJVRTNTeXhIUVVGUkxGZEJRV01zVlVGQldTeERRVUZGTEVsQlFVbHhTU3hGUVVGSkxFbEJRVWw2U0N4SFFVRlRMRTlCUVVGNVNDeEZRVUZGTEU5QlFVOHNSVUZCVlVFc1EwRkJSeXhGUVVGSExFbERkSEJFYkVZc1NVRkJUVEJETEVkQlFVNHNZMEZCZVVJc1MwRkJUU3hEUVVGRExFVkJTMjVDUXl4SFFVRk9MR05CUVcxRFJDeEZRVUZYTEVOQlEyNUVMRmxCUVZsRkxFVkJRVkVzUTBGRGJFSXNUVUZCVFN4eFFrRkJjVUpCTEVWQlFVOHNWVUZCVlN4RFFVRkRMRVZCUVVVc1EwRkRha1FzUTBGRFJpeEZRVXRoUXl4SFFVRk9MR05CUVcxRFNDeEZRVUZYTEVOQlEyNUVMRmxCUVZsRkxFVkJRVkVzUTBGRGJFSXNUVUZCVFN4eFFrRkJjVUpCTEVWQlFVOHNWVUZCVlN4RFFVRkRMRVZCUVVVc1EwRkRha1FzUTBGRFJpeEZRVXRoUlN4SFFVRk9MR05CUVcxRFNpeEZRVUZYTEVOQlEyNUVMRmxCUVZsRkxFVkJRVkVzUTBGRGJFSXNUVUZCVFN4eFFrRkJjVUpCTEVWQlFVOHNWVUZCVlN4RFFVRkRMRVZCUVVVc1EwRkRha1FzUTBGRFJpeEZRVXRoUnl4SFFVRk9MR05CUVRSRFRDeEZRVUZYTEVOQlFVTXNSVUZMYkVSTkxFZEJRVTRzWTBGQkswSk9MRVZCUVZjc1EwRkRMME1zV1VGQldVOHNSVUZCVFN4RFFVTm9RaXhOUVVGTkxHZENRVUZuUWtFc1EwRkJTU3hGUVVGRkxFTkJRemxDTEVOQlEwWXNSVUZMWVVNc1IwRkJUaXhqUVVGdFExSXNSVUZCVnl4RFFVRkRMRVZCUzNwRFV5eEhRVUZPTEdOQlFXdERWQ3hGUVVGWExFTkJRMnhFTEdGQlFXTXNRMEZEV2l4TlFVRk5MREpDUVVFeVFpeERRVU51UXl4RFFVTkdMRVZEZUVSQkxFbEJRVTFWTEVWQlFVa3NWVUZEVWtNc1IwRkJTU3hSUVVOS1F5eEhRVUZKTEU5QlJVOURMRWRCUVdFc1EwRkRlRUlzUzBGQlRVZ3NSVUZEVGl4TlFVRlBRU3hGUVVOUUxFbEJRVXRCTEVOQlExQXNSVUZGWVVrc1IwRkJWeXhEUVVOMFFpeExRVUZOU2l4RlFVTk9MRTFCUVU5RExFZEJRMUFzU1VGQlMwUXNRMEZEVUN4RlFVVmhTeXhIUVVGM1FpeERRVU51UXl4TFFVRk5UQ3hGUVVOT0xFMUJRVTlETEVkQlExQXNTVUZCUzBRc1JVRkRUQ3hSUVVGVFF5eEZRVU5ZTEVWQlJXRkxMRWRCUVZrc1EwRkRka0lzUzBGQlRVNHNSVUZEVGl4TlFVRlBSU3hIUVVOUUxFbEJRVXRHTEVOQlExQXNSVUZGWVU4c1IwRkJXU3hEUVVOMlFpeExRVUZOVUN4RlFVTk9MRTFCUVU5RkxFZEJRMUFzU1VGQlMwWXNSVUZEVEN4UlFVRlRSU3hGUVVOWUxFVkJSV0ZOTEVkQlFXTXNRMEZEZWtJc1MwRkJUVklzUlVGRFRpeFBRVUZSUVN4RFFVTldMRVZCUldGVExFZEJRVzlDTEVOQlF5OUNMRXRCUVUxVUxFVkJRMDRzVDBGQlVVRXNSVUZEVWl4UFFVRlJRU3hEUVVOV0xFVkJSV0ZWTEVkQlFYbENMRU5CUTNCRExFdEJRVTFXTEVWQlEwNHNUMEZCVVVFc1JVRkRVaXhQUVVGUlFTeEZRVU5TTEdGQlFXTkRMRVZCUTJoQ0xFVkJSV0ZWTEVkQlFYZENMRU5CUTI1RExFdEJRVTFZTEVWQlEwNHNUMEZCVVVFc1JVRkRVaXhQUVVGUlFTeEZRVU5TTEdGQlFXTkZMRVZCUTJoQ0xFVkJSV0ZWTEVkQlFXbENMRU5CUXpWQ0xFdEJRVTFhTEVWQlEwNHNUMEZCVVVFc1JVRkRVaXhWUVVGWExFdEJRMklzUlVGRllXRXNSMEZCZFVJc1EwRkRiRU1zUzBGQlRXSXNSVUZEVGl4UFFVRlJRU3hGUVVOU0xFOUJRVkZCTEVWQlExSXNWVUZCVnl4TFFVTmlMRVZCUldGakxFZEJRVFJDTEVOQlEzWkRMRXRCUVUxa0xFVkJRMDRzVDBGQlVVRXNSVUZEVWl4UFFVRlJRU3hGUVVOU0xGVkJRVmNzVFVGRFdDeGhRVUZqUXl4RlFVTm9RaXhGUVVWaFl5eEhRVUV5UWl4RFFVTjBReXhMUVVGTlppeEZRVU5PTEU5QlFWRkJMRVZCUTFJc1QwRkJVVUVzUlVGRFVpeFZRVUZYTEUxQlExZ3NZVUZCWTBVc1JVRkRhRUlzUlVGRllXTXNSMEZCYVVJc1EwRkROVUlzUzBGQlRXaENMRVZCUTA0c1RVRkJUMEVzUlVGRFVDeEpRVUZMUVN4RlFVTk1MRXRCUVUxQkxFVkJRMDRzVDBGQlVVRXNRMEZEVml4RlFVVmhhVUlzUjBGQk9FSXNRMEZEZWtNc1MwRkJUV3BDTEVWQlEwNHNUVUZCVDBFc1JVRkRVQ3hKUVVGTFFTeEZRVU5NTEV0QlFVMUJMRVZCUTA0c1QwRkJVVUVzUlVGRFVpeFBRVUZSUVN4RFFVTldMRVZCUldGclFpeEhRVUZsTEVOQlF6RkNMRXRCUVUxc1FpeEZRVU5PTEUxQlFVOURMRWRCUTFBc1NVRkJTMFFzUlVGRFRDeExRVUZOUVN4RlFVTk9MRTlCUVZGQkxFTkJRMVlzUlVGRllXMUNMRWRCUVRSQ0xFTkJRM1pETEV0QlFVMXVRaXhGUVVOT0xFMUJRVTlETEVkQlExQXNTVUZCUzBRc1JVRkRUQ3hMUVVGTlFTeEZRVU5PTEU5QlFWRkJMRVZCUTFJc1QwRkJVVUVzUTBGRFZpeEZRVVZoYjBJc1IwRkJORUlzUTBGRGRrTXNTMEZCVFhCQ0xFVkJRMDRzVFVGQlQwTXNSMEZEVUN4SlFVRkxSQ3hGUVVOTUxGRkJRVk5ETEVkQlExUXNTMEZCVFVRc1JVRkRUaXhQUVVGUlFTeERRVU5XTEVWQlJXRnhRaXhIUVVGblFpeERRVU16UWl4TFFVRk5ja0lzUlVGRFRpeE5RVUZQUlN4SFFVTlFMRWxCUVV0R0xFVkJRMHdzUzBGQlRVRXNSVUZEVGl4UFFVRlJRU3hGUVVOU0xHRkJRV05ETEVWQlEyaENMRVZCUldGeFFpeEhRVUUyUWl4RFFVTjRReXhMUVVGTmRFSXNSVUZEVGl4TlFVRlBSU3hIUVVOUUxFbEJRVXRHTEVWQlEwd3NTMEZCVFVFc1JVRkRUaXhQUVVGUlFTeEZRVU5TTEU5QlFWRkJMRVZCUTFJc1lVRkJZME1zUlVGRGFFSXNSVUZGWVhOQ0xFZEJRV2RDTEVOQlF6TkNMRXRCUVUxMlFpeEZRVU5PTEUxQlFVOUZMRWRCUTFBc1NVRkJTMFlzUlVGRFRDeFJRVUZUUlN4SFFVTlVMRXRCUVUxR0xFVkJRMDRzVDBGQlVVRXNSVUZEVWl4aFFVRmpSU3hGUVVOb1FpeEZRVVZoYzBJc1IwRkJOa0lzUTBGRGVFTXNTMEZCVFhoQ0xFVkJRMDRzVFVGQlQwVXNSMEZEVUN4SlFVRkxSaXhGUVVOTUxGRkJRVk5GTEVkQlExUXNTMEZCVFVZc1JVRkRUaXhQUVVGUlFTeEZRVU5TTEU5QlFWRkJMRVZCUTFJc1lVRkJZMFVzUlVGRGFFSXNSVU5xUzA4c1UwRkJVM1ZDTEVWQlFWbERMRVZCUVVjc1EwRkROMElzVDBGQlR5eFBRVUZQUVN4SFFVRk5MRmRCUTNSQ0xFTkJSVThzVTBGQlUwTXNSMEZCVTBRc1JVRkJSeXhEUVVNeFFpeFBRVUZQTEU5QlFVOUJMRWRCUVUwc1VVRkRkRUlzUTBGRlR5eFRRVUZUUlN4SFFVRlZSaXhGUVVGSExFTkJRek5DTEU5QlFVOHNUMEZCVDBFc1IwRkJUU3hWUVVGWlFTeEZRVUZKTEVsQlFVMHNRMEZETlVNc1EwRkZUeXhUUVVGVFJ5eEhRVUZUU0N4RlFVRkhMRU5CUXpGQ0xFOUJRVThzVDBGQlQwRXNSMEZCVFN4UlFVTjBRaXhEUVVWUExGTkJRVk5KTEVkQlFVOUtMRVZCUVVjc1EwRkRlRUlzVDBGQlR5eFBRVUZQTEZWQlFWVXNVMEZCVXl4TFFVRkxRU3hEUVVGRExFbEJRVTBzWlVGREwwTXNRMEZKVHl4VFFVRlRTeXhKUVVGakxFTkJRelZDTEVkQlFVa3NRMEZEUml4UFFVRlBMRTlCUVU4c1RVRkJVeXhoUVVGbExFTkJRVU1zUTBGQlF5eExRVUZMTEd0Q1FVTXZReXhQUVVGVFF5eEZRVUZITEVOQlExWXNUVUZCVHl4RlFVTlVMRU5CUTBZc1EwRkpUeXhUUVVGVFF5eEhRVUZYUXl4RlFVRlBMRU5CUTJoRExFOUJRVThzVFVGQlRTeFJRVUZSUVN4RFFVRkxMRVZCUVVsQkxFVkJRVkVzUTBGQlEwRXNRMEZCU3l4RFFVTTVReXhEUVVWUExGTkJRVk5ETEVkQlFVOURMRVZCUVV0RExFVkJRVWxETEVWQlFWTXNRMEZEZGtNc1IwRkJTVVlzUlVGQlNTeFRRVUZYTEVWQlIyNUNMRTlCUVU5QkxFVkJRVWtzVDBGQlR5eERRVUZEUnl4RlFVRk5ReXhKUVVGVExFTkJRMmhETEVsQlFVMURMRVZCUVU4c1EwRkJRMG9zUlVGQlIwY3NRMEZCU1N4RlFVRkhRU3hEUVVGSkxFVkJRelZDTEU5QlFVdEVMRWRCUlUxRUxFVkJRVkZETEVWQlFVc3NRMEZCUXl4RlFVRkhSU3hGUVVGTExFTkJRVU1zUTBGQlF5eEpRVUZOUml4RlFVRkxMRU5CUVVNc1JVRkRkRU5CTEVWQlJrRkZMRU5CVFZnc1JVRkJSeXhKUVVGSkxFVkJRVVVzUTBGQlF5eERRVU5hTEVOQlJVOHNVMEZCVTBNc1IwRkJTME1zUlVGQlMwTXNSVUZCVFN4RFFVTTVRaXhQUVVGUFFTeEZRVUZMTEU5QlFVOHNRMEZCUTBNc1JVRkJSME1zUzBGRGNrSkVMRVZCUVVWRExFTkJRVU1zUlVGQlNVZ3NSVUZCU1Vjc1EwRkJReXhGUVVOTVJDeEhRVU5PTEVOQlFVTXNRMEZCUXl4RFFVTlFMRU5CUlU4c1UwRkJVMFVzUjBGQlpVb3NSVUZCUzBzc1JVRkJUU3hEUVVONFF5eFBRVUZQTEU5QlFVOHNWVUZCVlN4bFFVRmxMRXRCUVV0TUxFVkJRVXRMTEVOQlFVa3NRMEZEZGtRc1EwRkpUeXhUUVVGVFF5eEhRVUZsWml4RlFVRlBaMElzUlVGQlVVTXNSVUZCU3l4RFFVTnFSQ3hQUVVGUGRrSXNSMEZCVlUwc1EwRkJTeXhIUVVGTFFTeEhRVUZUWjBJc1IwRkJWV2hDTEVkQlFWTnBRaXhEUVVONlJDeERRVWRQTEZOQlFWTkRMRWRCUVZORExFVkJRVWRETEVWQlFVY3NRMEZETjBJc1QwRkJUMFFzUlVGQlNVTXNSVUZCU1N4TFFVRkxMRTFCUVUxRUxFVkJRVWxETEVOQlFVTXNRMEZEYWtNc1EwRkZUeXhUUVVGVFF5eEhRVUZUUXl4RlFVRlBSaXhGUVVGSkxFVkJRVWNzUTBGRGNrTXNTVUZCVFVjc1JVRkJVVVFzUlVGQlVTeEZRVU5zUWtVc1JVRkRTaXhQUVVGSlJDeEZRVU5HUXl4RlFVRlRMRXRCUVU4c1IwRkJTeXhEUVVGRFJpeEhRVUZQTEZOQlFWTkdMRVZCUVVjc1IwRkJSeXhGUVVVMVEwa3NSMEZCVlN4SFFVRkxSaXhIUVVGUExGTkJRVk5HTEVWQlFVY3NSMEZCUnl4RlFVVm9RMGtzUTBGRFZDeERRVVZQTEZOQlFWTkRMRWRCUVdGRExFVkJRVkVzUTBGRGJrTXNSMEZCU1N4RlFVRkJia01zUlVGQldXMURMRU5CUVUwc1IwRkJTMEVzU1VGQlZ5eE5RVUZSUVN4SlFVRlhMRWxCUjNaRUxFOUJRVThzVTBGQlUwRXNSVUZCVVN4RlFVRkZMRU5CUlRsQ0xFTkJSVThzVTBGQlUwTXNSMEZCWTBRc1JVRkJVU3hEUVVOd1F5eEhRVUZKTEVWQlFVRnVReXhGUVVGWmJVTXNRMEZCVFN4SFFVRkxRU3hKUVVGWExFMUJRVkZCTEVsQlFWY3NTVUZIZGtRc1QwRkJUeXhYUVVGWFFTeERRVUZOTEVOQlJUVkNMRU5CUlU4c1UwRkJVMFVzUjBGQldVTXNSVUZCVlN4RFFVVndReXhIUVVGSkxFVkJRVUYwUXl4RlFVRlpjME1zUTBGQlVTeEhRVUZMUVN4SlFVRmhMRTFCUVZGQkxFbEJRV0VzU1VGRmVFUXNRMEZEVEN4SlFVRk5ReXhGUVVGSkxGZEJRVmNzUzBGQlQwUXNRMEZCVVN4RlFVRkpMRWxCUTNoRExFOUJRVThzUzBGQlN5eE5RVUZOUXl4RFFVRkRMRU5CUTNKQ0xFTkJRMFlzUTBGRlR5eFRRVUZUUXl4SFFVRlJReXhGUVVGUlF5eEZRVUZSUXl4RlFVRmhMRWRCUVU4c1EwRkRNVVFzU1VGQlRVTXNSVUZCVXl4SlFVRk5SaXhGUVVWeVFpeFBRVVJaUXl4RlFVRmhMRXRCUVVzc1RVRkJVU3hMUVVGTExFOUJRelZDUml4RlFVRlRSeXhEUVVGTkxFVkJRVWxCTEVOQlEzQkRMRU5CU1U4c1UwRkJVME1zUjBGQlYwTXNSVUZCVFN4RFFVTXZRaXhQUVVGUFFTeEZRVUZQTEVsQlFVMHNTVUZCVFVFc1JVRkJUeXhOUVVGUkxFZEJRVXRCTEVWQlFVOHNUVUZCVVN4RlFVTXZSQ3hEUVVWUExGTkJRVk5ETEVkQlFWZEVMRVZCUVUwc1EwRkRMMElzVDBGQlQwUXNSMEZCVjBNc1EwRkJTU3hGUVVGSkxFbEJRVTBzUjBGRGJFTXNRMEZGVHl4VFFVRlRSU3hIUVVGWlJpeEZRVUZOUnl4RlFVRlBMRU5CUTNaRExFbEJRVTFETEVWQlFWZDJRaXhIUVVGVGMwSXNSVUZCVVN4RlFVRkhMRVZCUVVVc1JVRkJTU3hGUVVONlEwVXNSVUZCVlV3c1IwRkJVVWNzUlVGQlVVTXNSMEZCV1N4SFFVVjRReXhQUVVGSlFTeEpRVUZoTEVWQlExSk1MRWRCUVZkTkxFTkJRVThzUlVGQlNTeEhRVUZMTEVkQlJUTkNMRU5CUVVNc1IwRkJTU3hMUVVGTkxFZEJRVWtzUjBGQlNTeEhRVUZKTEVkQlFVa3NSMEZCU1N4SFFVRkpMRWRCUVVrc1IwRkJTU3hIUVVGSkxFVkJRVVVzUlVGQlJVUXNSVUZCVnl4RFFVRkRMRU5CUlRGRkxFTkJSMDhzVTBGQlUwVXNSMEZCWVd4RExFVkJRVXNzUTBGRGFFTXNTVUZCU1cxRExFVkJRVWtzUzBGQlN5eEpRVU5ZYmtNc1JVRkJTU3hMUVVOS1FTeEZRVUZKTEUxQlFWRXNSVUZEV2tFc1JVRkJTU3hKUVVOS1FTeEZRVUZKTEV0QlEwcEJMRVZCUVVrc1QwRkRTa0VzUlVGQlNTeFBRVU5LUVN4RlFVRkpMRmRCUTA0c1JVRkhRU3hQUVVGSlFTeEZRVUZKTEV0QlFVOHNTMEZCVDBFc1JVRkJTU3hOUVVGUkxFbEJRMmhEYlVNc1JVRkJTU3hKUVVGSkxFdEJRVXRCTEVOQlFVTXNSVUZEWkVFc1JVRkJSU3hsUVVGbFFTeEZRVUZGTEdWQlFXVXNSVUZCU1N4SlFVRkpMRWRCUlhKRExFTkJRVU5CTEVOQlExWXNRMEZGVHl4VFFVRlRReXhIUVVGblFrTXNSVUZCVlN4RFFVTjRReXhKUVVGTlF5eEhRVU5FUkN4RlFVTkRMRXRCUVVzc1RVRkJUVUVzUlVGQlZ5eERRVUZETEVWQlEzWkNMRXRCUVVzc1RVRkJUVUVzUlVGQlZ5eEhRVUZITEVWQlEzcENMRXRCUVVzc1RVRkJUVUVzUlVGQlZ5eEhRVUZITEVkQlF6TkNMRVZCUTBaRkxFVkJRVTlHTEVWQlFWY3NSVUZEYkVKSExFZEJRVTFFTEVWQlFVOHNTMEZCU3l4TlFVRk5RU3hGUVVGUExFTkJRVU1zUlVGQlNTeExRVUZMTEUxQlFVMUJMRVZCUVU4c1IwRkJSeXhGUVVGSkxFdEJRVXNzVFVGQlRVRXNSVUZCVHl4SFFVRkhMRWRCUVVzc1JVRkRla1lzVDBGQlQwUXNTVUZCVHl4SFFVRkxSU3hKUVVGUExFVkJRVWtzUjBGQlN5eEZRVU55UXl4RFFVVlBMRk5CUVZORExFZEJRV1ZpTEVWQlFVMHNRMEZEYmtNc1QwRkJTVUVzUlVGQlR5eEhRVU5HUVN4RlFVTkxRU3hGUVVGUExFZEJRVXNzUzBGQlQwRXNSVUZCVHl4SlFVRlBRU3hEUVVOcVJDeERRVWxQTEZOQlFWTmpMRWRCUVdORExFVkJRVWxETEVWQlFXTkRMRVZCUVZGRExFVkJRVmNzUzBGQlRTeERRVU4yUlN4SlFVRk5ReXhGUVVGUExFbEJRVWtzUzBGQlMwb3NRMEZCUlN4RlFVTjBRa3NzUlVGQlZ5eERRVU5VTEZWQlFWY3NUVUZEV0N4TFFVRk5MRlZCUTA0c1RVRkJUeXhWUVVOUUxFbEJRVXNzVlVGRFRDeExRVUZOTEZWQlEwNHNUMEZCVVN4VFFVTldMRVZCUlVWR0xFbEJRMFpGTEVWQlFWTXNVMEZCVjBZc1IwRkhkRUlzU1VGQlRVY3NSVUZCVjBNc1JVRkJRU3hEUVVGRkxHRkJRV05PTEVkQlFXbENTU3hIUVVVMVEwY3NSVUZCVXl4SlFVRkpMRXRCUVVzc1pVRkJaVTRzUlVGQlVVa3NRMEZCVVN4RlFVTndSQ3hqUVVGalJpeERRVUZKTEVWQlEyeENMRXRCUVUxTExFZEJRVTFCTEVWQlFVVXNTMEZCU3l4WlFVRlpMRWxCUVUwc1kwRkJZeXhGUVVOMFJDeFBRVUZQUkN4RlFVRlRRU3hGUVVGUExFMUJRVkVzU1VGRGFrTXNRMEZIVHl4VFFVRlRSU3hIUVVGaFF5eEZRVUZaUXl4RlFVRmpMRU5CUTNKRUxFbEJRVWxETEVWQlFWVXNVMEZCVTBZc1JVRkJXU3hGUVVGRkxFVkJSMnBETEU5QlFVOHNUVUZCVFVVc1EwRkJUeXhKUVVOMFFrRXNSVUZCVlN4SFFVZGFMRWxCUVUxRExFVkJRVk1zVTBGQlUwWXNSVUZCWXl4RlFVRkZMRWRCUVVzc1JVRkRNME5ITEVWQlFXVkdMRVZCUVZVc1IwRkJTeXhQUVVGUExFZEJRVWRCTEVWQlFWTXNSVUZCUlN4RlFVRkpMRU5CUVVORExFVkJRVk5CTEVWQlEyNUZMRTlCUVU5RUxFVkJRVlVzUjBGQlMwVXNRMEZEZUVJc1EwRkpUeXhUUVVGVFF5eEhRVUZUUXl4RlFVRlBMRU5CUXpsQ0xFbEJRVTFETEVWQlFXVXNUMEZCVDBRc1EwRkJTeXhGUVVOcVF5eEhRVUZKTEU5QlFVOUJMRWRCUVZVc1YwRkJZVUVzU1VGQlZTeEpRVUZOTEU5QlFVOHNUVUZCVFVNc1EwRkJXU3hGUVVONlJTeE5RVUZOTEVsQlFVbERMRWRCUVhGQ0xITkNRVUZ6UWtZc1EwRkJTeXhGUVVGRkxFVkJRemxFTEU5QlFVOURMRU5CUTFRc1EwRkZUeXhUUVVGVFJTeEhRVUZuUWk5RUxFVkJRVXRuUlN4RlFVRlpMRU5CUXk5RExFbEJRVTFETEVWQlFXRXNRMEZCUXl4RlFVTndRaXhSUVVGWFF5eExRVUZMYkVVc1JVRkRaQ3hIUVVGSlNTeEhRVUZsU2l4RlFVRkxhMFVzUTBGQlF5eEZRVUZITEVOQlF6RkNMRWxCUVUxRExFVkJRVWx1UlN4RlFVRkphMFVzUTBGQlF5eEZRVU5tTEVkQlFYVkNReXhIUVVGTkxFdEJRVTBzVTBGRGJrTkdMRVZCUVZkRUxFVkJRVmRGTEVOQlFVTXNRMEZCUXl4RlFVRkpVQ3hIUVVGVFVTeERRVUZETEVOQlEzaERMRU5CUlVZc1QwRkJUMFlzUTBGRFZDeERRVVZQTEZOQlFWTkhMRWRCUVdGRExFVkJRVkZETEVWQlFWRXNRMEZETTBNc1NVRkJUVU1zUlVGQlVTeExRVUZMTEUxQlFVMHNTMEZCU3l4SlFVRkpSaXhGUVVGVExFVkJRVVVzUTBGQlF5eEZRVU0xUTBjc1JVRkJWU3hMUVVGTExFMUJRVTBzUzBGQlN5eEpRVUZKU0N4RlFVRlRMRVZCUVVVc1EwRkJReXhGUVVNeFEwa3NSVUZCVDBvc1IwRkJWU3hGUVVGSkxFbEJRVTBzU1VGRk4wSXNUMEZCVVVNc1JVRkJVU3hEUVVOa0xFbEJRVXNzVVVGRFNDeE5RVUZQTEVkQlFVZEhMRU5CUVVrc1IwRkJSemRFTEVkQlFWTXlSQ3hGUVVGUExFTkJRVU1zUTBGQlF5eEpRVUZKTTBRc1IwRkJVelJFTEVWQlFWTXNRMEZCUXl4RFFVRkRMRWRCUXpkRUxFbEJRVXNzVTBGRFNDeE5RVUZQTEVkQlFVZERMRU5CUVVrc1IwRkJSMFlzUTBGQlN5eEhRVUZIUXl4RlFVRlZMRVZCUVVrc1NVRkJTVUVzUTBGQlR5eEhRVUZMTEVWQlFVVXNSMEZETTBRc1NVRkJTeXhUUVVOSUxFMUJRVThzUjBGQlIwTXNRMEZCU1N4SFFVRkhOMFFzUjBGQlV6SkVMRVZCUVU4c1EwRkJReXhEUVVGRExFZEJRVWN6UkN4SFFVRlRORVFzUlVGQlV5eERRVUZETEVOQlFVTXNSMEZETlVRc1VVRkRSU3hOUVVGTkxFbEJRVWtzVjBGQlZ5eG5Ra0ZCWjBKR0xFTkJRVTBzYzBOQlFYTkRMRU5CUTNKR0xFTkJRMFlzUTBGRlR5eFRRVUZUU1N4SFFVRlhNVVVzUlVGQlN5eERRVU01UWl4UFFVRlBSQ3hIUVVGTFF5eEZRVUZMTEVOQlFVTXNUMEZCVVN4VFFVRlZMRk5CUVZVc1lVRkJZU3hEUVVGRExFTkJRemxFTEVOQlJVOHNTVUZCVFRKRkxFZEJRMWdzSzBWRGNsRkxMRWxCUVUxRExFZEJRV0VzUTBGRGVFSXNWVUZEUVN4WFFVTkJMRkZCUTBFc1VVRkRRU3hOUVVOQkxFOUJRMEVzVDBGRFFTeFRRVU5CTEZsQlEwRXNWVUZEUVN4WFFVTkJMRlZCUTBZc1JVRkZZVU1zUjBGQll5eERRVU42UWl4TlFVTkJMRTFCUTBFc1RVRkRRU3hOUVVOQkxFMUJRMEVzVFVGRFFTeE5RVU5CTEUxQlEwRXNUVUZEUVN4TlFVTkJMRTFCUTBFc1MwRkRSaXhGUVVWaFF5eEhRVUZsTEVOQlFVTXNTVUZCU3l4SlFVRkxMRWxCUVVzc1NVRkJTeXhKUVVGTExFbEJRVXNzU1VGQlN5eEpRVUZMTEVsQlFVc3NTVUZCU3l4SlFVRkxMRWRCUVVjc1JVRkZhRVlzVTBGQlUwTXNSMEZCVDBNc1JVRkJVU3hEUVVNM1FpeFBRVUZSUVN4RlFVRlJMRU5CUTJRc1NVRkJTeXhUUVVOSUxFMUJRVThzUTBGQlF5eEhRVUZIUml4RlFVRlpMRVZCUTNwQ0xFbEJRVXNzVVVGRFNDeE5RVUZQTEVOQlFVTXNSMEZCUjBRc1JVRkJWeXhGUVVONFFpeEpRVUZMTEU5QlEwZ3NUVUZCVHl4RFFVRkRMRWRCUVVkRUxFVkJRVlVzUlVGRGRrSXNTVUZCU3l4VlFVTklMRTFCUVU4c1EwRkJReXhKUVVGTExFbEJRVXNzU1VGQlN5eEpRVUZMTEVsQlFVc3NTVUZCU3l4SlFVRkxMRWxCUVVzc1NVRkJTeXhMUVVGTkxFdEJRVTBzU1VGQlNTeEZRVU4yUlN4SlFVRkxMRlZCUTBnc1RVRkJUeXhEUVVGRExFdEJRVTBzUzBGQlRTeExRVUZOTEV0QlFVMHNTMEZCVFN4TFFVRk5MRXRCUVUwc1MwRkJUU3hMUVVGTkxFdEJRVTBzUzBGQlRTeEpRVUZKTEVWQlEyaEdMRkZCUTBVc1QwRkJUeXhKUVVOWUxFTkJRMFlzUTBGRlR5eEpRVUZOU3l4SFFVRmxMRU5CUXpGQ0xGTkJRMEVzVlVGRFFTeFpRVU5CTEZkQlEwRXNVMEZEUVN4WFFVTkJMRkZCUTBZc1JVRkZZVU1zUjBGQlowSXNRMEZCUXl4TlFVRlBMRTFCUVU4c1RVRkJUeXhOUVVGUExFMUJRVThzVFVGQlR5eExRVUZMTEVWQlJXaEZReXhIUVVGcFFpeERRVUZETEVsQlFVc3NTVUZCU3l4SlFVRkxMRWxCUVVzc1NVRkJTeXhKUVVGTExFZEJRVWNzUlVGRmVrUXNVMEZCVTBNc1IwRkJVMG9zUlVGQlVTeERRVU12UWl4UFFVRlJRU3hGUVVGUkxFTkJRMlFzU1VGQlN5eFRRVU5JTEUxQlFVOHNRMEZCUXl4SFFVRkhSeXhGUVVGakxFVkJRek5DTEVsQlFVc3NVVUZEU0N4TlFVRlBMRU5CUVVNc1IwRkJSMFFzUlVGQllTeEZRVU14UWl4SlFVRkxMRTlCUTBnc1RVRkJUeXhEUVVGRExFZEJRVWRFTEVWQlFWa3NSVUZEZWtJc1NVRkJTeXhWUVVOSUxFMUJRVThzUTBGQlF5eEpRVUZMTEVsQlFVc3NTVUZCU3l4SlFVRkxMRWxCUVVzc1NVRkJTeXhIUVVGSExFVkJRek5ETEZGQlEwVXNUMEZCVHl4SlFVTllMRU5CUTBZc1EwRkZUeXhKUVVGTlNTeEhRVUZaTEVOQlFVTXNTMEZCVFN4SlFVRkpMRVZCUlhaQ1F5eEhRVUZYTEVOQlFVTXNaMEpCUVdsQ0xHRkJRV0VzUlVGRk1VTkRMRWRCUVZrc1EwRkJReXhMUVVGTkxFbEJRVWtzUlVGRmRrSkRMRWRCUVdFc1EwRkJReXhKUVVGTExFZEJRVWNzUlVGRk5VSXNVMEZCVTBNc1IwRkJTMVFzUlVGQlVTeERRVU16UWl4UFFVRlJRU3hGUVVGUkxFTkJRMlFzU1VGQlN5eFRRVU5JTEUxQlFVOHNRMEZCUXl4SFFVRkhVU3hGUVVGVkxFVkJRM1pDTEVsQlFVc3NVVUZEU0N4TlFVRlBMRU5CUVVNc1IwRkJSMFFzUlVGQlV5eEZRVU4wUWl4SlFVRkxMRTlCUTBnc1RVRkJUeXhEUVVGRExFZEJRVWRFTEVWQlFWRXNSVUZEY2tJc1VVRkRSU3hQUVVGUExFbEJRMWdzUTBGRFJpeERRVVZQTEZOQlFWTkpMRWRCUVc5Q1F5eEZRVUZKTEVOQlEzUkRMRTlCUVU5T0xFZEJRVlZOTEVWQlFVY3NTMEZCVHl4SFFVRkxMRVZCUVVrc1EwRkJReXhEUVVOMlF5eERRVVZQTEZOQlFWTkRMRWRCUVcxQ1JDeEZRVUZKV0N4RlFVRlJMRU5CUXpkRExFOUJRVTlKTEVkQlFWTktMRU5CUVUwc1JVRkJSVmNzUlVGQlJ5eFJRVUZWTEVOQlFVTXNRMEZEZUVNc1EwRkZUeXhUUVVGVFJTeEhRVUZwUWtZc1JVRkJTVmdzUlVGQlVTeERRVU16UXl4UFFVRlBSQ3hIUVVGUFF5eERRVUZOTEVWQlFVVlhMRVZCUVVjc1RVRkJVU3hEUVVGRExFTkJRM0JETEVOQlJVOHNVMEZCVTBjc1IwRkJaVWdzUlVGQlNWZ3NSVUZCVVN4RFFVTjZReXhQUVVGUFV5eEhRVUZMVkN4RFFVRk5MRVZCUVVWWExFVkJRVWNzUzBGQlR5eEZRVUZKTEVWQlFVa3NRMEZCUXl4RFFVTjZReXhEUVVWUExGTkJRVk5KTEVkQlFXMUNReXhGUVVGTlF5eEZRVUZQUXl4RlFVRlZMRk5CUVZWRExFVkJRVk1zUjBGQlR5eERRVU5zUml4SlFVRk5ReXhGUVVGUkxFTkJRMW9zVFVGQlR5eERRVUZETEU5QlFWRXNTMEZCU3l4RlFVTnlRaXhUUVVGVkxFTkJRVU1zVlVGQlZ5eE5RVUZOTEVWQlF6VkNMRTlCUVZFc1EwRkJReXhSUVVGVExFdEJRVXNzUlVGRGRrSXNUVUZCVHl4RFFVRkRMRTlCUVZFc1MwRkJTeXhGUVVOeVFpeExRVUZOTEVOQlFVTXNUVUZCVHl4TlFVRlBMRTFCUVUwc1JVRkRNMElzVFVGQlR5eERRVUZETEU5QlFWRXNTMEZCU3l4RlFVTnlRaXhSUVVGVExFTkJRVU1zVTBGQlZTeE5RVUZOTEVWQlF6RkNMRkZCUVZNc1EwRkJReXhUUVVGVkxFMUJRVTBzUTBGRE5VSXNSVUZGVFVNc1JVRkJWeXhEUVVGRExGRkJRVk1zVlVGQlZ5eFRRVUZUTEVWQlFVVXNVVUZCVVV3c1EwRkJTU3hKUVVGTkxFZEJSVzVGTEVkQlFVbEZMRWxCUVZrc1VVRkJWVWNzUlVGQlZTeERRVU5zUXl4SlFVRk5ReXhGUVVGUlRpeEpRVUZUTEU5QlEzWkNMRTlCUVZGRExFVkJRVThzUTBGRFlpeEpRVUZMTEVkQlEwZ3NUMEZCVDBzc1JVRkJVU3hYUVVGaExGRkJRVkZHTEVWQlFVMUtMRU5CUVVrc1JVRkJSU3hEUVVGRExFTkJRVU1zUjBGRGNFUXNTVUZCU3l4SFFVTklMRTlCUVU5TkxFVkJRVkVzV1VGQll5eFJRVUZSUml4RlFVRk5TaXhEUVVGSkxFVkJRVVVzUTBGQlF5eERRVUZETEVkQlEzSkVMRWxCUVVzc1IwRkRTQ3hQUVVGUFRTeEZRVUZSTEZGQlFWVXNVVUZCVVVZc1JVRkJUVW9zUTBGQlNTeEZRVUZGTEVOQlFVTXNRMEZCUXl4SFFVTnFSQ3hSUVVOR0xFTkJRMFlzUTBGRlFTeEpRVUZOVHl4RlFVRlhMRTlCUVU4c1IwRkJSMDRzUlVGQlR5eEZRVUZGTEVkQlFVdEJMRVZCUVZFc1JVRkRMME5QTEVWQlFWY3NTMEZCU3l4SlFVRkpVQ3hEUVVGTExFVkJRM3BDVVN4RlFVRlhSQ3hKUVVGaExFVkJRM2hDUlN4RlFVRlhUaXhGUVVGTlNpeERRVUZKTEVWQlEzSkNWeXhGUVVGVlVpeEZRVU5PVFN4RlFVTkZReXhGUVVGVExFTkJRVU1zUlVGRFZrRXNSVUZCVXl4RFFVRkRMRWRCUVV0QkxFVkJRVk1zUTBGQlF5eEZRVU16UWtRc1JVRkRRVXdzUlVGQlRVb3NRMEZCU1N4RlFVRkZMRU5CUVVNc1JVRkRZa0VzUlVGRFRpeFBRVUZQVHl4RlFVRlhMRWRCUVVkRExFTkJRVkVzU1VGQlNVY3NRMEZCVHl4UFFVRlRMRTFCUVUxSUxFTkJRVkVzU1VGQlNVY3NRMEZCVHl4RlFVTTFSU3hEUTJwTFFTeFRRVUZUUXl4SFFVRm5Ra01zUlVGQlVVTXNSVUZCWlN4RFFVTTVReXhKUVVGSlF5eEZRVUZKTEVkQlExSXNVVUZCVjBNc1MwRkJVMGdzUlVGRFpFY3NSVUZCVFN4UlFVTlNSQ3hIUVVGTFF5eEZRVUZOTEVsQlJWaEVMRWRCUVV0RUxFVkJRV05GTEVWQlFVMHNSMEZCUnl4RlFVZG9ReXhQUVVGUFJDeERRVU5VTEVOQlJVRXNTVUZCVFVVc1IwRkJlVUlzUTBGRE4wSXNSVUZCVjBNc1IwRkRXQ3hIUVVGWlF5eEhRVU5hTEVsQlFXRkRMRWRCUTJJc1MwRkJZME1zUjBGRFpDeEZRVUZYUXl4SFFVTllMRWRCUVZsRExFZEJRMW9zU1VGQllVTXNSMEZEWWl4TFFVRmpReXhIUVVOa0xFVkJRVmRETEVkQlExZ3NSMEZCV1VNc1IwRkRXaXhKUVVGaFF5eEhRVU5pTEV0QlFXTkRMRWRCUTJRc1JVRkJWME1zUjBGRFdDeEhRVUZaUXl4SFFVTmFMRWxCUVdGRExFZEJRMklzUzBGQlkwTXNSMEZEWkN4RlFVRlhReXhIUVVOWUxFZEJRVmxETEVkQlExb3NTVUZCWVVNc1IwRkRZaXhMUVVGalF5eEZRVU5vUWl4RlFVMXhRa01zUjBGQmNrSXNUVUZCY1VKRExFTkJRVlVzUTBGRE4wSXNUMEZCVHl4UFFVRlBReXhGUVVGUlF5eEZRVUZQTEVOQlFVTXNSVUZCUnl4RFFVTXZRaXhQUVVGUExFbEJRVWxHTEVWQlFWVkRMRVZCUVZGRExFTkJRVWtzUTBGRGJrTXNRMEZGUVN4UFFVRlBMRmxCUVZsRExFVkJRVXNzUTBGRGRFSXNTVUZCU1VNc1JVRkJWU3hMUVVOYVF5eEZRVUZqTEVkQlEyUkRMRVZCUVZrc1IwRkRVbWhETEVWQlFWTXNRMEZCUXl4RlFVTm9RaXhSUVVGVGFVTXNSVUZCU1N4RlFVRkhRU3hGUVVGSlNpeEZRVUZKTEU5QlFWRkpMRWxCUVVzc1EwRkRia01zU1VGQlRVTXNSVUZCU1V3c1JVRkJTU3hQUVVGUFNTeERRVUZETEVWQlEyeENReXhKUVVGTkxFdEJRMHBJTEVWQlFWa3NUMEZCVXl4SFFVTjJRaTlDTEVWQlFVOHNTMEZCU3l4RFFVRkZMRkZCUVZOblF5eEZRVUZYTEVsQlFVdEVMRU5CUVZrc1EwRkJReXhGUVVWMFJFUXNSVUZCVlN4TFFVTldReXhGUVVGakxFZEJRMlJETEVWQlFWa3NRMEZCUTBFc1IwRkRTa0VzUjBGRlFVVXNTVUZCVFVvc1JVRkVaa01zUjBGQlpVY3NSMEZKV0Vnc1JVRkJXU3hQUVVGVExFZEJRM1pDTDBJc1JVRkJUeXhMUVVGTExFTkJRVVVzVVVGQlV5eEhRVUZQTEVsQlFVc3JRaXhEUVVGWkxFTkJRVU1zUlVGRmJFUkJMRVZCUVdOSExFVkJRMlJLTEVWQlFWVkpMRVZCUldRc1EwRkZRU3hQUVVGSlNDeEZRVUZaTEU5QlFWTXNSMEZEZGtJdlFpeEZRVUZQTEV0QlFVc3NRMEZCUlN4UlFVRlRaME1zUlVGQlZ5eEpRVUZMUkN4RFFVRlpMRU5CUVVNc1JVRkhMME12UWl4RFFVTlVMRU5CUlVFc1QwRkJUeXgxUWtGQmRVSkhMRVZCUVU4c1EwRkRia01zVDBGQlQwTXNSMEZCZFVKRUxFTkJRVXNzUTBGRGNrTXNRMEZGUVN4WlFVRlpkMElzUlVGQlVWRXNSVUZCV1N4RFFVTTVRaXhMUVVGTExFdEJRVTlCTEVWQlExb3NTMEZCU3l4SlFVRk5VaXhGUVVOWUxFdEJRVXNzVlVGQldTeEpRVU51UWl4RFFVVkJMSGRDUVVGM1FsTXNSVUZCU1ZJc1JVRkJUU3hEUVVOb1F5eFBRVUZKTEV0QlFVc3NXVUZCWXl4UFFVTnlRaXhMUVVGTExGVkJRVmtzUzBGQlN5eEpRVUZKTEd0Q1FVRnJRaXhIUVVWdVF5eExRVUZMTEZWQlFWVXNXVUZCV1ZFc1JVRkJTVU1zU1VGQlFTeEhRVUZMTEV0QlFVc3NUVUZCVTFRc1JVRkJUU3hGUVVONlJDeFBRVUZQTEVOQlEyNUNMRU5CUlVFc1pVRkJaVkVzUlVGQlNWSXNSVUZCVHl4RFFVRkRMRVZCUVVjc1EwRkZOVUlzVDBGRVZ5eExRVUZMTEVsQlFVa3NXVUZCV1ZFc1JVRkJTVU1zU1VGQlFTeEhRVUZMTEV0QlFVc3NUVUZCVTFRc1JVRkJUU3hGUVVOdVJDeFBRVUZQTEVOQlEyNUNMRU5CUlVFc2IwSkJRVzlDVVN4RlFVRkpVaXhGUVVGUExFTkJRVU1zUlVGQlJ5eERRVVZxUXl4UFFVUlhMRXRCUVVzc1NVRkJTU3haUVVGWlVTeEZRVUZKUXl4SlFVRkJMRWRCUVVzc1MwRkJTeXhOUVVGVFZDeEZRVUZOTEVWQlEyNUVMR05CUVdNc1EwRkRNVUlzUTBGRlFTeG5Ra0ZCWjBKUkxFVkJRVWxTTEVWQlFVOHNRMEZCUXl4RlFVRkhMRU5CUlRkQ0xFOUJSRmNzUzBGQlN5eEpRVUZKTEZsQlFWbFJMRVZCUVVsRExFbEJRVUVzUjBGQlN5eExRVUZMTEUxQlFWTlVMRVZCUVUwc1JVRkRia1FzWjBKQlFXZENMRU5CUXpWQ0xFTkJSVUVzU1VGQlNWVXNSVUZCUjBNc1JVRkJTU3hGUVVGSExFTkJSVm9zUjBGQlNTeExRVUZMTEV0QlFVc3NXVUZEV2l4UFFVRlBReXhIUVVGVFJpeEZRVUZIUXl4RFFVRkRMRVZCUjNSQ0xFbEJRVTFZTEVWQlFVOVRMRVZCUVVFc1IwRkJTeXhMUVVGTExFMUJSWFpDTEU5QlFVbEZMRVZCUVVrc1NVRkRUbGdzUlVGQlN5eE5RVUZSVnl4SFFVZFNMRXRCUVVzc1NVRkJTU3huUWtGQlowSllMRU5CUVVrc1JVRkJSU3hQUVVGUFZTeERRVUZETEVOQlEyaEVMRU5CUlVFc2VVSkJRWGxDUml4RlFVRkpVQ3hGUVVGTExFTkJRMmhETEVsQlFVMVpMRVZCUVdVc1MwRkJTeXhKUVVGSkxGbEJRVmtzU1VGQlRTeExRVU01UTBNc1JVRkJkVUlzUzBGQlN5eEpRVUZKTEdkQ1FVRnJRaXhMUVVGTExFbEJRVWtzYVVKQlFXMUNMRlZCUXpsRlF5eEZRVUZUTEVOQlFVTm1MRVZCUVUxblFpeEpRVUZaTEV0QlFVc3NTVUZCU1N4UlFVRlJVaXhGUVVGSlVpeEZRVUZOWjBJc1EwRkJUeXhGUVVNNVJFTXNSVUZCWjBKcVFpeEhRVU5XVVN4RlFVRkhMR1ZCUVdsQ1FTeEZRVUZITEZOQlFWY3NSMEZCUzFJc1JVRkJTeXhQUVVOMlF5eEpRVWRHVVN4RlFVRkhMRkZCUVZWQkxFVkJRVWNzUzBGQlN5eGhRVUZoUVN4RlFVRkhMRWRCUVVsU0xFVkJRVXNzVFVGQlRTeEZRVUZKTEVkQlJXcEZhMElzUlVGQlZ5eEpRVU5VVEN4RlFVTlpUU3hIUVVGdlFsZ3NRMEZCUlN4RlFVTTVRazhzUlVGQlR5eERRVUZGTEV0QlFVMHNWVUZCVnl4VlFVRlhMRXRCUVUwc1JVRkJSeXhYUVVGWExFVkJReTlFU3l4RlFVRlJMRU5CUVVORExFVkJRVkZETEVsQlEyWlVMRVZCUTFsVkxFZEJRV2xDWml4RlFVRkpZU3hEUVVGTkxFVkJRMjVEVGl4RlFVRlBUeXhGUVVGaExFTkJRVVVzVFVGQlQwUXNRMEZCVHl4RlFVRkpMRU5CUVVVc1RVRkJUMEVzUlVGQlVTeEpRVUZMTEZOQlFWVXNSVUZCUnl4UFFVRlBMRVZCUTNoR1J5eEZRVUZWTEVOQlFVTklMRVZCUVZGRExFbEJRMnBDVkN4RlFVTlpXU3hIUVVGdFFtcENMRVZCUVVsaExFTkJRVTBzUlVGRGNrTk9MRVZCUTBWUExFVkJRV0VzUTBGQlJTeFJRVUZUUkN4RFFVRlBMRVZCUVVrc1EwRkJSU3hSUVVGVFFTeEZRVUZSTEUxQlFVOHNUMEZCVVN4SlFVRkxMRk5CUVZVc1JVRkRjRVlzVTBGRFJpeEZRVU5PU3l4RlFVRmpia1FzUjBGQlZTeERRVU4wUWl4SlFVRk5aME1zUlVGQllWUXNSVUZCVlN4MVFrRkJkVUoyUWl4RFFVRkxMRVZCUTNwRUxFOUJRVWxuUXl4RlFVTkxMRXRCUVVzc2QwSkJRWGRDUXl4RlFVRkpSQ3hEUVVGVkxFVkJSVE5EYUVNc1EwRkZXQ3hGUVVOQmIwUXNSVUZCVDA0c1IwRkRURklzUlVGQmRVSmxMRWRCUVdWd1FpeEZRVUZKWVN4RFFVRk5MRVZCUVVsT0xFVkJRVThzUTBGQlJTeEpRVUZMVFN4RFFVRlBMRVZCUVVjc1MwRkJTeXhGUVVOdVJtaEVMRVZCUVdsQ1JTeEhRVUZWTEVOQlJYcENMRTlCUVZGQkxFVkJRVThzUTBGRllpeEpRVUZMTEVsQlEwZ3NUMEZCVHl4TFFVRkxMRWxCUVVscFF5eEZRVUZITEZkQlFWY3NSVUZEYUVNc1NVRkJTeXhKUVVWTUxFbEJRVXNzVFVGRFNDeFBRVUZQTEV0QlFVc3NTVUZCU1VFc1JVRkJSeXhaUVVGaExFTkJRVU1zUlVGRmJrTXNTVUZCU3l4SlFVTklMRTlCUVU4c1MwRkJTeXhKUVVGSlFTeEZRVUZITEUxQlFVMHNSVUZETTBJc1NVRkJTeXhMUVVOSUxFOUJRVThzUzBGQlN5eEpRVUZKUVN4RlFVRkhMRTlCUVZFc1EwRkJReXhGUVVVNVFpeEpRVUZMTEV0QlEwZ3NUMEZCVHl4TFFVRkxMRWxCUVVrc1MwRkJTeXhOUVVGTlFTeEZRVUZITEZsQlFXTXNSVUZCUlN4RlFVRkhMRU5CUVVNc1JVRkRjRVFzU1VGQlN5eE5RVU5JTEU5QlFVOHNTMEZCU3l4SlFVRkpMRXRCUVVzc1RVRkJUVUVzUlVGQlJ5eFpRVUZqTEVkQlFVY3NRMEZCUXl4RlFVVnNSQ3hKUVVGTExFbEJRMGdzVDBGQlR5eExRVUZMTEVsQlFVbEJMRVZCUVVjc1RVRkJUU3hGUVVNelFpeEpRVUZMTEV0QlEwZ3NUMEZCVHl4TFFVRkxMRWxCUVVsQkxFVkJRVWNzVDBGQlVTeERRVUZETEVWQlJUbENMRWxCUVVzc1NVRkRTQ3hQUVVGUExFdEJRVXNzU1VGQlNVRXNSVUZCUnl4TFFVRlBMRXRCUVU4c1JVRkJTU3hIUVVGTFFTeEZRVUZITEV0QlFVOHNSVUZCUlN4RlFVTjRSQ3hKUVVGTExFdEJRMGdzVDBGQlR5eExRVUZMTEVsQlFVbEJMRVZCUVVjc1MwRkJUeXhMUVVGUExFVkJRVWtzUjBGQlMwRXNSVUZCUnl4TFFVRlBMRWRCUVVrc1EwRkJReXhGUVVNelJDeEpRVUZMTEVsQlEwZ3NUMEZCVHl4TFFVRkxMRWxCUVVsQkxFVkJRVWNzU1VGQlNTeEZRVU42UWl4SlFVRkxMRXRCUTBnc1QwRkJUeXhMUVVGTExFbEJRVWxCTEVWQlFVY3NTMEZCVFN4RFFVRkRMRVZCUlRWQ0xFbEJRVXNzU1VGRlNDeFBRVUZQVXl4RlFVRmhMRU5CUVVVc1QwRkJVU3hUUVVGVkxFOUJRVkVzUzBGQlN5eExRVUZMTEUxQlFVOHNRMEZCUXl4RlFVTndSU3hKUVVGTExFdEJSVWdzVDBGQlQwRXNSVUZCWVN4RFFVRkZMRTlCUVZFc1VVRkJVeXhQUVVGUkxFdEJRVXNzUzBGQlN5eE5RVUZQTEVOQlFVTXNSVUZEYmtVc1NVRkJTeXhOUVVWSUxFOUJRVTlCTEVWQlFXRXNRMEZCUlN4UFFVRlJMRk5CUVZVc1QwRkJVU3hMUVVGTExFdEJRVXNzVFVGQlR5eERRVUZETEVWQlEzQkZMRWxCUVVzc1QwRkZTQ3hQUVVGUFZDeEZRVUZITEV0QlFVc3NWMEZCVjBFc1JVRkJSeXhIUVVGSkxFTkJRVVVzVDBGQlVTeFJRVUZUTEU5QlFWRXNTMEZCU3l4SlFVRkpMRTFCUVU4c1EwRkJReXhGUVVNdlJTeEpRVUZMTEZGQlJVZ3NUMEZCVDBFc1JVRkJSeXhMUVVGTExGZEJRVmRCTEVWQlFVY3NSMEZCU1N4RFFVRkZMRTlCUVZFc1QwRkJVU3hQUVVGUkxFdEJRVXNzU1VGQlNTeE5RVUZQTEVOQlFVTXNSVUZGT1VVc1NVRkJTeXhKUVVWSUxFOUJRVTlCTEVWQlFVY3NVMEZGV2l4SlFVRkxMRWxCUTBnc1QwRkJUMVVzUlVGQlV5eEZRVVZzUWl4SlFVRkxMRWxCUTBnc1QwRkJUMG9zUlVGQmRVSkRMRVZCUVU4c1EwRkJSU3hKUVVGTExGTkJRVlVzUlVGQlJ5eExRVUZMTEVWQlFVa3NTMEZCU3l4SlFVRkpVQ3hGUVVGSExFZEJRVWNzUlVGRGJrWXNTVUZCU3l4TFFVTklMRTlCUVU5TkxFVkJRWFZDUXl4RlFVRlBMRU5CUVVVc1NVRkJTeXhUUVVGVkxFVkJRVWNzUzBGQlN5eEZRVUZKTEV0QlFVc3NTVUZCU1ZBc1JVRkJSeXhKUVVGTExFTkJRVU1zUlVGRmRFWXNTVUZCU3l4SlFVVklMRTlCUVU4c1MwRkJTeXhKUVVGSlFTeEZRVUZITEU5QlFVOHNSVUZETlVJc1NVRkJTeXhOUVVWSUxFOUJRVTluUWl4RlFVRlJMRkZCUVZNc1JVRkJTU3hGUVVNNVFpeEpRVUZMTEU5QlJVZ3NUMEZCVDBFc1JVRkJVU3hQUVVGUkxFVkJRVWtzUlVGRE4wSXNTVUZCU3l4UlFVVklMRTlCUVU5QkxFVkJRVkVzVTBGQlZTeEZRVUZKTEVWQlJTOUNMRWxCUVVzc1NVRkZTQ3hQUVVGUExFdEJRVXNzU1VGQlNXaENMRVZCUVVjc1QwRkJUeXhGUVVNMVFpeEpRVUZMTEUxQlJVZ3NUMEZCVDJkQ0xFVkJRVkVzVVVGQlV5eEZRVUZMTEVWQlF5OUNMRWxCUVVzc1QwRkZTQ3hQUVVGUFFTeEZRVUZSTEU5QlFWRXNSVUZCU3l4RlFVTTVRaXhKUVVGTExGRkJSVWdzVDBGQlQwRXNSVUZCVVN4VFFVRlZMRVZCUVVzc1JVRkZhRU1zU1VGQlN5eEpRVVZJTEU5QlFVOVdMRVZCUTBoRExFVkJRVThzUTBGQlJTeE5RVUZQTEZWQlFWY3NTVUZCU3l4VFFVRlZMRVZCUVVjc1QwRkJUeXhGUVVOd1JDeExRVUZMTEVsQlFVbFFMRVZCUVVjc1MwRkJTeXhGUVVOMlFpeEpRVUZMTEV0QlJVZ3NUMEZCVDAwc1JVRkRTRU1zUlVGQlR5eERRVUZGTEUxQlFVOHNWVUZCVnl4SlFVRkxMRk5CUVZVc1JVRkJSeXhQUVVGUExFVkJRM0JFTEV0QlFVc3NTVUZCU1ZBc1JVRkJSeXhOUVVGUExFTkJRVU1zUlVGRE1VSXNTVUZCU3l4TlFVVklMRTlCUVU5WkxFVkJRVTBzVVVGQlV5eEZRVUZKTEVWQlF6VkNMRWxCUVVzc1QwRkZTQ3hQUVVGUFFTeEZRVUZOTEU5QlFWRXNSVUZCU1N4RlFVTXpRaXhKUVVGTExGRkJSVWdzVDBGQlQwRXNSVUZCVFN4VFFVRlZMRVZCUVVrc1JVRkZOMElzU1VGQlN5eEpRVVZJTEU5QlFVOU9MRVZCUTBoRExFVkJRVThzUTBGQlJTeE5RVUZQTEZOQlFWVXNSVUZCUnl4UFFVRlBMRVZCUTNCRExFdEJRVXNzU1VGQlNWQXNSVUZCUnl4TFFVRkxMRVZCUTNaQ0xFbEJRVXNzUzBGRlNDeFBRVUZQVFN4RlFVTklReXhGUVVGUExFTkJRVVVzVFVGQlR5eFRRVUZWTEVWQlFVY3NUMEZCVHl4RlFVTndReXhMUVVGTExFbEJRVWxRTEVWQlFVY3NUVUZCVHl4RFFVRkRMRVZCUXpGQ0xFbEJRVXNzVFVGRlNDeFBRVUZQV1N4RlFVRk5MRkZCUVZNc1JVRkJTeXhGUVVNM1FpeEpRVUZMTEU5QlJVZ3NUMEZCVDBFc1JVRkJUU3hQUVVGUkxFVkJRVXNzUlVGRE5VSXNTVUZCU3l4UlFVVklMRTlCUVU5QkxFVkJRVTBzVTBGQlZTeEZRVUZMTEVWQlJUbENMRWxCUVVzc1NVRkZTQ3hQUVVGUFRpeEZRVUYxUWtNc1JVRkJUeXhEUVVGRkxFdEJRVTBzVTBGQlZTeEZRVUZITEUxQlFVMHNSVUZCU1N4TFFVRkxMRWxCUVVsUUxFVkJRVWNzU1VGQlNTeEZRVU4wUml4SlFVRkxMRXRCUlVnc1QwRkJUMDBzUlVGRFNFTXNSVUZCVHl4RFFVRkZMRXRCUVUwc1UwRkJWU3hGUVVGSExFMUJRVTBzUlVGRGJFTXNTMEZCU3l4SlFVRkpVQ3hGUVVGSExFdEJRVXNzVTBGQlV5eEZRVUZGTEUxQlFVMHNSVUZCUlN4RlFVRkhMRU5CUVVNc1JVRkRPVU1zU1VGQlN5eFBRVVZJTEU5QlFVOU5MRVZCUTBoRExFVkJRVThzUTBGQlJTeExRVUZOTEZOQlFWVXNSVUZCUnl4TlFVRk5MRVZCUTJ4RExFdEJRVXNzU1VGQlNWQXNSVUZCUnl4TFFVRk5MRU5CUVVNc1JVRkRla0lzU1VGQlN5eFRRVVZJTEU5QlFVOU5MRVZCUTBoRExFVkJRVThzUTBGQlJTeExRVUZOTEZOQlFWVXNSVUZCUnl4TlFVRk5MRVZCUTJ4RExFdEJRVXNzU1VGQlNWQXNSVUZCUnl4TFFVRk5MRU5CUVVNc1JVRkZla0lzU1VGQlN5eEpRVVZJTEU5QlFVOXRRaXhGUVVGSkxFOUJRVThzUlVGRGNFSXNTVUZCU3l4TFFVVklMRTlCUVU5QkxFVkJRVWtzVFVGQlRTeEZRVU51UWl4SlFVRkxMRkZCUTBnc1QwRkJUMEVzUlVGQlNTeFJRVUZSTEVWQlEzSkNMRWxCUVVzc1MwRkRTQ3hQUVVGUExFdEJRVXNzU1VGQlNXNUNMRVZCUVVjc1UwRkJVeXhUUVVGVExFVkJRVVVzVFVGQlRTeEZRVUZGTEVWQlFVY3NRMEZCUXl4RlFVTnlSQ3hKUVVGTExFOUJRMGdzVDBGQlR5eExRVUZMTEVsQlFVbEJMRVZCUVVjc1UwRkJWU3hEUVVGRExFVkJRMmhETEVsQlFVc3NTVUZEU0N4UFFVRlBMRXRCUVVzc1NVRkJTVUVzUlVGQlJ5eFZRVUZWTEVWQlF5OUNMRWxCUVVzc1MwRkRTQ3hQUVVGUExFdEJRVXNzU1VGQlNVRXNSVUZCUnl4WFFVRlpMRU5CUVVNc1JVRkRiRU1zU1VGQlN5eEpRVU5JTEU5QlFVOHNTMEZCU3l4SlFVRkpRU3hGUVVGSExFOUJRVThzUlVGRE5VSXNTVUZCU3l4TlFVTklMRTlCUVU4c1MwRkJTeXhKUVVGSlFTeEZRVUZITEZGQlFWTXNRMEZCUXl4RlFVTXZRaXhKUVVGTExFbEJSVWdzVDBGQlR5eExRVUZMTEVsQlFVbEJMRVZCUVVjc1QwRkJUeXhGUVVNMVFpeEpRVUZMTEV0QlJVZ3NUMEZCVHl4TFFVRkxMRWxCUVVsQkxFVkJRVWNzVVVGQlV5eERRVUZETEVWQlF5OUNMRWxCUVVzc1NVRkRTQ3hQUVVGUExFdEJRVXNzU1VGQlNTeExRVUZMTEUxQlFVMUJMRVZCUVVjc1IwRkJTeXhIUVVGSkxFTkJRVU1zUlVGRE1VTXNTVUZCU3l4SlFVTklMRTlCUVU4c1MwRkJTeXhKUVVGSlFTeEZRVUZITEVWQlFVVXNSVUZEZGtJc1VVRkRSU3hQUVVGUGEwSXNSVUZCVjI1RUxFTkJRVXNzUTBGRE0wSXNRMEZEUml4RlFVVkdMRTlCUVU5S0xFZEJRV2RDTWtJc1JVRkJWU3haUVVGWlJ5eERRVUZITEVWQlFVYzFRaXhEUVVGaExFTkJRMnhGTEVOQlJVRXNlVUpCUVhsQ2QwUXNSVUZCU3pWQ0xFVkJRVXNzUTBGRGFrTXNTVUZCVFRaQ0xFVkJRV2RDZGtRc1IwRkJWU3hEUVVNMVFpeFBRVUZSUVN4RlFVRk5MRU5CUVVNc1JVRkJSeXhEUVVOb1FpeEpRVUZMTEVsQlEwZ3NUVUZCVHl4alFVTlVMRWxCUVVzc1NVRkRTQ3hOUVVGUExGTkJRMVFzU1VGQlN5eEpRVU5JTEUxQlFVOHNVMEZEVkN4SlFVRkxMRWxCUTBnc1RVRkJUeXhQUVVOVUxFbEJRVXNzU1VGRFNDeE5RVUZQTEUxQlExUXNTVUZCU3l4SlFVTklMRTFCUVU4c1QwRkRWQ3hKUVVGTExFbEJRMGdzVFVGQlR5eFJRVU5VTEVsQlFVc3NTVUZEU0N4TlFVRlBMRTlCUTFRc1VVRkRSU3hQUVVGUExFbEJRMWdzUTBGRFJpeEZRVU5CUml4RlFVRnBRakJFTEVkQlFWbDRSQ3hIUVVGVkxFTkJRM0pETEVsQlFVMTVSQ3hGUVVGVFJpeEZRVUZoZGtRc1EwRkJTeXhGUVVOcVF5eFBRVUZKZVVRc1JVRkRTeXhMUVVGTExFbEJRVWxFTEVWQlFVOHNTVUZCU1VNc1EwRkJUU3hGUVVGSGVrUXNSVUZCVFN4TlFVRk5MRVZCUlhwRFFTeERRVVZZTEVWQlEwRXdSQ3hGUVVGVGJrTXNSVUZCVlN4WlFVRlpSeXhEUVVGSExFVkJRMnhEYVVNc1JVRkJZVVFzUlVGQlR5eFBRVU5zUWl4RFFVRkRSU3hGUVVGUExFTkJRVVVzVVVGQlFVTXNSVUZCVXl4SlFVRkJReXhEUVVGSkxFbEJRVTlFTEVWQlFWVkVMRVZCUVZGQkxFVkJRVTBzVDBGQlQwVXNRMEZCUnl4RlFVTm9SU3hEUVVGRExFTkJRMGdzUlVGRFFVTXNSVUZCV1ZRc1JVRkJTU3hSUVVGUkxFZEJRVWRMTEVWQlFWY3NTVUZCU1Vvc1EwRkJXU3hGUVVGRkxFOUJRVkZUTEVkQlFVMUJMRU5CUVVNc1EwRkJReXhGUVVNeFJTeFBRVUZQY0VVc1IwRkJaMEk0UkN4RlFVRlJOVVFzUlVGQlkybEZMRU5CUVZNc1EwRkJReXhEUVVONlJDeERRVU5HTEVWRGRsbEJMRWxCUVhGQ1JTeEhRVUZ5UWl4TFFVRTJRaXhEUVVNelFpeFpRVUZaUXl4RlFVRlJReXhGUVVGaExFTkJReTlDTEV0QlFVc3NUMEZCVTBRc1JVRkRaQ3hMUVVGTExGbEJRV05ETEVOQlEzSkNMRU5CUlVFc1YwRkJXU3hEUVVOV0xFOUJRVWtzUzBGQlN5eFpRVU5CTEVkQlFVY3NTMEZCU3l4TlFVRk5MRXRCUVVzc1MwRkJTeXhYUVVGWExFZEJSVzVETEV0QlFVc3NUVUZGYUVJc1EwRkRSaXhGUTFKQkxFbEJRWEZDUXl4SFFVRnlRaXhMUVVFd1FpeERRVTE0UWl4SlFVRkpMRTFCUVU4c1EwRkRWQ3hOUVVGTkxFbEJRVWxETEVWQlExb3NRMEZQUVN4SlFVRkpMRTFCUVU4c1EwRkRWQ3hOUVVGTkxFbEJRVWxCTEVWQlExb3NRMEZGUVN4SlFVRkpMRlZCUVZjc1EwRkRZaXhQUVVGUExFdEJRVXNzU1VGRFpDeERRVTlCTEVsQlFVa3NZVUZCWXl4RFFVTm9RaXhOUVVGTkxFbEJRVWxCTEVWQlExb3NRMEZYUVN4WFFVRlhReXhGUVVGSlF5eEZRVUZOTEVOQlEyNUNMRTFCUVUwc1NVRkJTVVlzUlVGRFdpeERRVlZCTEdGQlFXRkRMRVZCUVVsRkxFVkJRVkVzUTBGRGRrSXNUVUZCVFN4SlFVRkpTQ3hGUVVOYUxFTkJVVUVzVDBGQlQwTXNSVUZCU1N4RFFVTlVMRTFCUVUwc1NVRkJTVVFzUlVGRFdpeERRVkZCTEU5QlFVOUpMRVZCUVZjc1EwRkRhRUlzVFVGQlRTeEpRVUZKU2l4RlFVTmFMRU5CVDBFc1NVRkJTU3hUUVVGVkxFTkJRMW9zVFVGQlRTeEpRVUZKUVN4RlFVTmFMRU5CUTBZc1JVTjJSa0VzU1VGQlNVc3NSMEZCV1N4TFFVMUxReXhIUVVGeVFpeE5RVUZ4UWtNc1ZVRkJiVUpETEVWQlFVc3NRMEZMTTBNc1YwRkJWeXhWUVVGWExFTkJRM0JDTEU5QlFVbElMRXRCUVdNc1QwRkRhRUpCTEVkQlFWa3NTVUZCU1VVc1IwRkZXRVlzUlVGRFZDeERRVWRCTEVsQlFVa3NUVUZCVHl4RFFVTlVMRTFCUVU4c1VVRkRWQ3hEUVVkQkxFbEJRVWtzVFVGQlR5eERRVU5VTEU5QlFVOHNTVUZCU1N4TFFVRkxMR1ZCUVdVc1JVRkJSU3huUWtGQlowSXNSVUZCUlN4UlFVTnlSQ3hEUVVkQkxFbEJRVWtzWVVGQll5eERRVU5vUWl4TlFVRlBMRVZCUTFRc1EwRkhRU3hYUVVGWFNTeEZRVUZKTEVOQlFVVXNUMEZCUVVNc1JVRkJVU3hQUVVGQlF5eERRVUZQTEVWQlFVY3NRMEZEYWtNc1QwRkJUME1zUjBGQlkwZ3NSVUZCU1VNc1JVRkJVVU1zUTBGQlRTeERRVU42UXl4RFFVZEJMR0ZCUVdGR0xFVkJRVWxETEVWQlFWRXNRMEZEZGtJc1QwRkJUMGNzUjBGQllTeExRVUZMTEU5QlFVOUtMRU5CUVVVc1JVRkJSME1zUTBGQlRTeERRVU0zUXl4RFFVZEJMRTlCUVU5RUxFVkJRVWtzUTBGRFZDeE5RVUZQTEVOQlFVTXNTVUZCU1N4TFFVRkxRU3hEUVVGRkxFVkJRVVVzYTBKQlFXdENMRU5CUTNwRExFTkJSMEVzVDBGQlQwc3NSVUZCVnl4RFFVTm9RaXhQUVVGUFFTeEZRVUZWTEU5QlFWTXNVVUZETlVJc1EwRkhRU3hKUVVGSkxGTkJRVlVzUTBGRFdpeE5RVUZQTEVWQlExUXNRMEZEUml4RlEzcEVRU3hKUVVGSlF5eEhRVUZYTEVOQlFVTXNSVUZEYUVJc1UwRkJVME1zUjBGQlVVTXNSVUZCVFN4RFFVTnlRaXhQUVVGTFJpeEhRVUZUUlN4RFFVRkpMRWxCUTJoQ1JpeEhRVUZUUlN4RFFVRkpMRVZCUVVrc1NVRkJTU3hMUVVGTExHVkJRV1VzVVVGQlV5eERRVU5vUkN4UFFVRlJMRWRCUTFJc1UwRkJWVUVzUlVGRFZpeExRVUZOTEZWQlEwNHNUVUZCVHl4VlFVTlFMRWxCUVVzc1ZVRkRUQ3hMUVVGTkxGVkJRMDRzVDBGQlVTeFZRVU5TTEU5QlFWRXNWVUZEVWl4SlFVRkxMRTlCUTFBc1EwRkJReXhIUVVWSlJpeEhRVUZUUlN4RFFVRkpMRU5CUTNSQ0xFTkJSVUVzU1VGQlRVTXNSMEZCV1N4RFFVTm9RaXhMUVVGTkxFVkJRMDRzVFVGQlR5eEZRVU5RTEVsQlFVc3NSVUZEVEN4SlFVRkxMRVZCUTB3c1MwRkJUU3hGUVVOT0xFOUJRVkVzUlVGRFVpeFBRVUZSTEVOQlExWXNSVUZGUVN4VFFVRlRReXhIUVVGWlF5eEZRVUZMUXl4RlFVRk5MRU5CUXpsQ0xFbEJRVTFETEVWQlFWbEdMRVZCUVVrc1QwRkJUME1zUTBGQlNTeEZRVUZGTEZGQlFWRXNWVUZCVnl4RlFVRkZMRVZCUTNSRVJTeEZRVUZUTEd0RVFVRnJSQ3hMUVVGTFJDeERRVUZUTEVWQlEzcEZMRU5CUVVNc1EwRkJSVVVzUlVGQlVVTXNSVUZCVFVNc1JVRkJUME1zUlVGQlUwTXNSVUZCVDBNc1JVRkJVME1zUTBGQlR5eEZRVUZKVUN4RlFVTTVSQ3hOUVVGUExFTkJRVU5ITEVWQlFVOUdMRVZCUVZGRExFVkJRVTFGTEVWQlFWTkRMRVZCUVU5RExFVkJRVk5ETEVOQlFVOHNRMEZETDBRc1EwRkZRU3hUUVVGVFF5eEhRVUZaV0N4RlFVRkxReXhGUVVGTkxFTkJRemxDTEVsQlFVMURMRVZCUVZsR0xFVkJRVWtzWTBGQlkwTXNRMEZCU1N4RlFVTnNRMWNzUlVGQlV5eERRVUZETEVWQlEyaENMRkZCUVZORExFVkJRVWtzUlVGQlIwRXNSVUZCU1Znc1JVRkJWU3hQUVVGUlZ5eEpRVUZMTEVOQlEzcERMRWRCUVUwc1EwRkJSU3hMUVVGQlF5eEZRVUZOTEUxQlFVRkRMRU5CUVUwc1JVRkJTV0lzUlVGQlZWY3NRMEZCUXl4RlFVTTNRa2NzUlVGQlRXeENMRWRCUVZWblFpeERRVUZKTEVWQlJYUkNRU3hKUVVGVExFMUJRMWhHTEVWQlFVOUpMRU5CUVVjc1JVRkJTVVFzUlVGRFNrVXNSVUZCV1VRc1EwRkJSeXhKUVVONlFrb3NSVUZCVDBrc1EwRkJSeXhGUVVGSkxGTkJRVk5FTEVWQlFVOHNSVUZCUlN4RlFVVndReXhEUVVOQkxFOUJRVTlJTEVOQlExUXNRMEZGUVN4SlFVRkpUU3hIUVVGblFpeERRVUZETEVWQlMwRkRMRWRCUVhKQ0xFMUJRWEZDUXl4VlFVRnBRa01zUlVGQlN5eERRVXQ2UXl4UFFVRlBMRTlCUVU5RExFVkJRVTBzUTBGRGJFSXNUMEZCUzBvc1IwRkJZMGtzUTBGQlNTeEpRVU55UWtvc1IwRkJZMGtzUTBGQlNTeEZRVUZKTEVsQlFVbEdMRVZCUVZORkxFTkJRVWtzUjBGRmJFTktMRWRCUVdOSkxFTkJRVWtzUTBGRE0wSXNRMEZOUVN4UFFVRlBMRmxCUVdFc1EwRkRiRUpLTEVkQlFXZENMRU5CUVVNc1JVRkRha0oyUWl4SFFVRlhMRU5CUVVNc1EwRkRaQ3hEUVZWQkxFOUJRVThzYVVKQlFXbENORUlzUlVGQlJ5eERRVU42UWl4UFFVRlBMRXRCUVVzc1dVRkJXVUVzUTBGQlF5eERRVU16UWl4RFFWVkJMRTlCUVU4c1dVRkJXVEZDTEVWQlFVMHNRMEZEZGtJc1IwRkJTU3hEUVVGRFFTeEZRVU5JTEUxQlFVOHNSMEZGVkN4SFFVRkpMRU5CUTBZc1YwRkJTU3hMUVVGTExHVkJRV1VzVVVGQlV5eERRVUZGTEZOQlFWVkJMRU5CUVVzc1EwRkJReXhGUVVGRkxFOUJRVThzUlVGRGNrUXNSVUZEVkN4UFFVRlRNa0lzUlVGQlJ5eERRVU5XTEUxQlFVOHNSVUZEVkN4RFFVTkdMRU5CUlVFc1dVRkJXVVlzUlVGQlRTeERRVU5vUWl4TlFVRk5MRVZCUlU0c1MwRkJTeXhUUVVGWFFTeEZRVVZvUWl4TFFVRkxMRTFCUVZGR0xFVkJRVk1zV1VGQldVVXNRMEZCU1N4RFFVTjRReXhEUVVkQkxFbEJRVWtzVFVGQlR5eERRVU5VTEUxQlFVOHNUVUZEVkN4RFFVZEJMRWxCUVVrc1RVRkJUeXhEUVVOVUxFOUJRVThzUzBGQlN5eFJRVU5rTEVOQlIwRXNTVUZCU1N4aFFVRmpMRU5CUTJoQ0xFMUJRVThzUlVGRFZDeERRVWRCTEZkQlFWZEhMRVZCUVVrc1EwRkJSU3hQUVVGQlF5eEZRVUZSTEU5QlFVRkRMRU5CUVU4c1JVRkJSeXhEUVVOcVF5eFBRVUZQUXl4SFFVRmpTQ3hGUVVGSlF5eEZRVUZSUXl4RlFVRlJMRXRCUVVzc1NVRkJTU3hEUVVOd1JDeERRVWRCTEdGQlFXRkdMRVZCUVVsRExFVkJRVkVzUTBGRGRrSXNUMEZCVDBjc1IwRkJZU3hMUVVGTExFOUJRVTlLTEVOQlFVVXNSVUZCUjBNc1EwRkJUU3hEUVVNM1F5eERRVWRCTEU5QlFVOUVMRVZCUVVrc1EwRkRWQ3hKUVVGTmVFSXNSVUZCVHl4SlFVRkpMRXRCUVV0M1FpeERRVUZGTEVWQlJYaENMRWRCUVVrc1RVRkJUWGhDTEVOQlFVa3NSVUZCUnl4TlFVRlBMRXRCUlhoQ0xFbEJRVTFFTEVWQlFVMUtMRWRCUVZFc1MwRkJTeXhKUVVGSkxFVkJRM3BDTEVOQlFVTnJReXhGUVVGTlF5eEZRVUZQUXl4RlFVRkxReXhGUVVGUlF5eEZRVUZOUXl4RlFVRlJReXhEUVVGTkxFVkJRVWx3UXl4RlFVRkpMR05CUTNaRVZ5eEhRVUZaV0N4RlFVRkxReXhEUVVGSkxFVkJRM0pDUml4SFFVRlpReXhGUVVGTFF5eERRVUZKTEVWQlJYSkNaME1zU1VGQlZ5eFBRVU5pU0N4RlFVRlBMRU5CUVVNc1MwRkJTeXhKUVVGSlFTeERRVUZKTEVWQlFVa3NSMEZOTTBJc1NVRkJUVThzUlVGQlVVTXNSMEZCWVN4RFFVTjZRaXhMUVVGQlVpeEZRVU5CTEUxQlFVRkRMRVZCUTBFc1NVRkJRVU1zUlVGRFFTeExRVTV0UWtVc1NVRkJVeXhIUVVGTExFVkJRVWxCTEVWQlQzSkRMRTlCUVVGRExFVkJRMEVzVDBGQlFVTXNSVUZEUVN4WlFVRmhMRU5CUTJZc1EwRkJReXhGUVVWSFJ5eEZRVUZQTEVOQlFVTjBReXhGUVVOT2RVTXNSVUZCVDBRc1JVRkJUeXhKUVVOd1FpeFBRVUZCUVN4SFFVRlJReXhIUVVGUkxFVkJRVWxCTEVWQlFVOHNTVUZCVDBFc1IwRkRNVUpJTEVWQlFWRkZMRWxCUVZNc1IwRkJTeXhKUVVOb1F5eERRVWRCTEU5QlFVOUZMRVZCUVZjc1EwRkRhRUlzVDBGQlQwRXNSVUZCVlN4UFFVRlRMRkZCUVZWQkxFVkJRVlVzVDBGQlV5eExRVUZMTEVsQlF6bEVMRU5CUjBFc1NVRkJTU3hUUVVGVkxFTkJRMW9zVDBGQlR5eExRVUZMTEV0QlEyUXNRMEZEUml4RlEzcE1RU3hKUVVGSlF5eEhRVUZaTEV0QlRVdERMRWRCUVhKQ0xFMUJRWEZDUXl4VlFVRjNRa01zUlVGQlN5eERRVXRvUkN4WFFVRlhMR0ZCUVdNc1EwRkRka0lzVDBGQlNVZ3NTMEZCWXl4UFFVTm9Ra0VzUjBGQldTeEpRVUZKUlN4RlFVRm5RaXhEUVVGRExFZEJSVFZDUml4RlFVTlVMRU5CVDBFc1QwRkJUeXhUUVVGVFNTeEZRVUZSTEVOQlEzUkNMRTlCUVU5QkxFbEJRVmNzUlVGQlNVWXNSVUZCWjBJc1dVRkJZeXhKUVVGSlFTeEZRVUZuUWtVc1EwRkJUU3hEUVVOb1JpeERRVlZCTEU5QlFVOHNaVUZCWlVNc1JVRkJSeXhEUVVOMlFpeEhRVUZKUVN4RlFVRkhMRU5CUTB3c1NVRkJUVU1zUlVGQlNVUXNSVUZCUlN4TlFVRk5MSFZEUVVGMVF5eEZRVU42UkN4SFFVRkpReXhGUVVOR0xFOUJRVThzU1VGQlNVb3NSVUZCWjBKTExFZEJRV0ZFTEVWQlFVVXNRMEZCUXl4RlFVRkhRU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlJYWkVMRU5CUTBFc1QwRkJUeXhKUVVOVUxFTkJSVUVzV1VGQldVWXNSVUZCVVN4RFFVTnNRaXhOUVVGTkxFVkJSVTRzUzBGQlN5eE5RVUZSUVN4RFFVTm1MRU5CUjBFc1NVRkJTU3hOUVVGUExFTkJRMVFzVFVGQlR5eFBRVU5VTEVOQlIwRXNTVUZCU1N4TlFVRlBMRU5CUTFRc1QwRkJUeXhMUVVGTExGRkJRVlVzUlVGQlNTeE5RVUZSTEUxQlFVMUpMRWRCUVdFc1MwRkJTeXhOUVVGUExGRkJRVkVzUTBGQlF5eEZRVU0xUlN4RFFVVkJMRWxCUVVrc1ZVRkJWeXhEUVVOaUxFOUJRVWtzUzBGQlN5eFJRVUZWTEVWQlExWXNWVUZGUVN4VlFVRlZRU3hIUVVGaExFTkJRVU1zUzBGQlN5eE5RVUZQTEZGQlFWRXNRMEZCUXl4RlFVVjRSQ3hEUVVkQkxGbEJRV0VzUTBGRFdDeFBRVUZQTEV0QlFVc3NTVUZEWkN4RFFVZEJMR0ZCUVdGRExFVkJRVWxETEVWQlFWRXNRMEZEZGtJc1QwRkJUMFlzUjBGQllTeExRVUZMTEUxQlFVOUZMRU5CUVUwc1EwRkRlRU1zUTBGSFFTeEpRVUZKTEdGQlFXTXNRMEZEYUVJc1RVRkJUeXhGUVVOVUxFTkJSMEVzVVVGQlV5eERRVU5RTEU5QlFVOHNTMEZCU3l4TFFVTmtMRU5CUjBFc1QwRkJUME1zUlVGQlZ5eERRVU5vUWl4UFFVRlBRU3hGUVVGVkxFOUJRVk1zVTBGQlYwRXNSVUZCVlN4UlFVRlZMRXRCUVVzc1MwRkRhRVVzUTBGSFFTeEpRVUZKTEZOQlFWVXNRMEZEV2l4TlFVRlBMRVZCUTFRc1EwRkRSaXhGUXk5R1FTeEpRVUZ4UWtNc1IwRkJja0lzWTBGQmVVTkRMRVZCUVVzc1EwRkROVU1zV1VGQldVTXNSVUZCVlN4RFFVTndRaXhOUVVGTkxFVkJSVTRzUzBGQlN5eFRRVUZYUVN4RFFVTnNRaXhEUVVkQkxFbEJRVWtzVFVGQlR5eERRVU5VTEUxQlFVOHNVMEZEVkN4RFFVZEJMRWxCUVVrc1RVRkJUeXhEUVVOVUxFOUJRVThzUzBGQlN5eFJRVU5rTEVOQlIwRXNTVUZCU1N4aFFVRmpMRU5CUTJoQ0xFMUJRVThzUlVGRFZDeERRVWRCTEZsQlFXRXNRMEZEV0N4UFFVRlBMRWxCUTFRc1EwRkhRU3hqUVVGbExFTkJRMklzVFVGQlR5eEZRVU5VTEVOQlIwRXNVVUZCVXl4RFFVTlFMRTFCUVU4c1NVRkRWQ3hEUVVkQkxGRkJRVk1zUTBGRFVDeE5RVUZQTEVWQlExUXNRMEZIUVN4SlFVRkpMRk5CUVZVc1EwRkRXaXhOUVVGUExFVkJRMVFzUTBGRFJpeEZRM3BEVHl4VFFVRlRReXhIUVVGalF5eEZRVUZQUXl4RlFVRmhMRU5CUTJoRUxFbEJRVWxETEVWQlEwb3NSMEZCU1VNc1JVRkJXVWdzUTBGQlN5eEhRVUZMUVN4SlFVRlZMRXRCUTJ4RExFOUJRVTlETEVWQlEwWXNSMEZCU1VRc1lVRkJhVUpKTEVkQlF6RkNMRTlCUVU5S0xFVkJRMFlzUjBGQlNVc3NSMEZCVTB3c1EwRkJTeXhGUVVGSExFTkJRekZDTEVsQlFVMU5MRVZCUVZWT0xFVkJRVTBzV1VGQldTeEZRVU5zUXl4UFFVRkpUU3hKUVVGWkxGTkJRVmRCTEVsQlFWa3NVMEZCYVVKTUxFVkJReTlEU3l4SlFVRlpMRTlCUVZOQkxFbEJRVmtzVFVGQlkwTXNSMEZCWjBJc1dVRkROVVJCTEVkQlFXZENMR1ZCUVdWRUxFTkJRVThzUjBGQlMwVXNSMEZCVXl4UFFVRlBVaXhEUVVGTExFTkJRemxGTEV0QlFVOHNVVUZCU1ZNc1IwRkJVMVFzUTBGQlN5eEZRVU5vUWs4c1IwRkJaMElzVTBGQlUxQXNRMEZCU3l4RlFVTTFRaXhQUVVGUFFTeEhRVUZWTEZWQlFWbEJMRVZCUVUwc1VVRkJWU3hQUVVGUFFTeEZRVUZOTEZGQlFWY3NVMEZIZGtWQkxFVkJSVUVzU1VGQlNWVXNSMEZCV1ZZc1EwRkJTeXhEUVVWb1F5eERRM3BDUVN4SlFVRkpWeXhIUVVGTkxFbEJRVTBzUzBGQlN5eEpRVUZKTEVWQlEzWkNReXhIUVVGakxGTkJRMlJETEVkQlFXZENMRXRCUTJoQ1F5eEhRVUY1UWl4TFFVTjZRa01zUjBGQmQwSXNTMEZEZUVKRExFZEJTMjFDUXl4RlFVRnlRaXhMUVVFNFFpeERRVXMxUWl4WFFVRlhMRXRCUVUwc1EwRkRaaXhQUVVGUFRpeEZRVU5VTEVOQlUwRXNWMEZCVnl4SlFVRkpUeXhGUVVGSExFTkJRMmhDVUN4SFFVRk5UeXhEUVVOU0xFTkJUMEVzVjBGQlZ5eFpRVUZaUXl4RlFVRk5MRU5CUXpOQ1VDeEhRVUZqVHl4RFFVTm9RaXhEUVU5QkxGZEJRVmNzWVVGQll5eERRVU4yUWl4UFFVRlBReXhIUVVGalVpeEhRVUZoVXl4SFFVRlhMRkZCUVZFc1EwRkRka1FzUTBGTlFTeFhRVUZYTEdWQlFXZENMRU5CUTNwQ0xFOUJRVTlTTEVWQlExUXNRMEZOUVN4WFFVRlhMR05CUVdOVExFVkJRVkVzUTBGREwwSlVMRWRCUVdkQ1V5eERRVU5zUWl4RFFVMUJMRmRCUVZjc2QwSkJRWGxDTEVOQlEyeERMRTlCUVU5U0xFVkJRMVFzUTBGTlFTeFhRVUZYTEhWQ1FVRjFRbE1zUlVGQmFVSXNRMEZEYWtSVUxFZEJRWGxDVXl4RFFVTXpRaXhEUVUxQkxGZEJRVmNzZFVKQlFYZENMRU5CUTJwRExFOUJRVTlTTEVWQlExUXNRMEZOUVN4WFFVRlhMSE5DUVVGelFsTXNSVUZCWjBJc1EwRkRMME5VTEVkQlFYZENVeXhEUVVNeFFpeERRVTFCTEZkQlFWY3NaMEpCUVdsQ0xFTkJRekZDTEU5QlFVOVNMRVZCUTFRc1EwRk5RU3hYUVVGWExHVkJRV1ZUTEVWQlFVY3NRMEZETTBKVUxFZEJRV2xDVXl4RFFVTnVRaXhEUVUxQkxFOUJRVThzWVVGQll5eERRVU51UWtNc1IwRkJUeXhYUVVGWExFVkJRMnhDUXl4SFFVRlRMRmRCUVZjc1EwRkRkRUlzUTBGRFJpeEZRM1JJUVN4SlFVRkpReXhIUVVGakxFTkJRVU1zUlVGRGJrSXNVMEZCVTBNc1IwRkJXVU1zUlVGQlYwTXNSVUZCVHl4RFFVRkRMRVZCUVVjc1EwRkRla01zU1VGQlRVTXNSVUZCVFN4TFFVRkxMRlZCUVZVc1EwRkJRMFlzUlVGQlYwTXNRMEZCU1N4RFFVRkRMRVZCUTNoRFJTeEZRVUZOVEN4SFFVRlpTU3hEUVVGSExFVkJRM3BDTEU5QlFVdERMRWxCUTBoQkxFVkJRVTBzU1VGQlNTeExRVUZMTEZkQlFWZElMRVZCUVZkRExFTkJRVWtzUlVGRGVrTklMRWRCUVZsSkxFTkJRVWNzUlVGQlNVTXNSMEZGWkVFc1EwRkRWQ3hEUVVWQkxFbEJRVWxETEVkQlFXTXNRMEZCUXl4RlFVTnVRaXhUUVVGVFF5eEhRVUZoVEN4RlFVRlhReXhGUVVGUExFTkJRVU1zUlVGQlJ5eERRVU14UXl4SlFVRk5ReXhGUVVGTkxFdEJRVXNzVlVGQlZTeERRVUZEUml4RlFVRlhReXhEUVVGSkxFTkJRVU1zUlVGRGVFTkZMRVZCUVUxRExFZEJRVmxHTEVOQlFVY3NSVUZEZWtJc1QwRkJTME1zU1VGRFNFRXNSVUZCVFN4SlFVRkpMRXRCUVVzc1pVRkJaVWdzUlVGQlYwTXNRMEZCU1N4RlFVTTNRMGNzUjBGQldVWXNRMEZCUnl4RlFVRkpReXhIUVVWa1FTeERRVU5VTEVOQlJVRXNTVUZCU1Vjc1IwRkJaU3hEUVVGRExFVkJRM0JDTEZOQlFWTkRMRWRCUVdGUUxFVkJRVmRETEVWQlFVOHNRMEZCUXl4RlFVRkhMRU5CUXpGRExFbEJRVTFETEVWQlFVMHNTMEZCU3l4VlFVRlZMRU5CUVVOR0xFVkJRVmRETEVOQlFVa3NRMEZCUXl4RlFVTjRRMDhzUlVGQlRVWXNSMEZCWVVvc1EwRkJSeXhGUVVNeFFpeFBRVUZMVFN4SlFVTklRU3hGUVVGTkxFbEJRVWtzUzBGQlN5eGhRVUZoVWl4RlFVRlhReXhEUVVGSkxFVkJRek5EU3l4SFFVRmhTaXhEUVVGSExFVkJRVWxOTEVkQlJXWkJMRU5CUTFRc1EwRkZRU3hKUVVGSlF5eEhRVUZsTEVOQlFVTXNSVUZEY0VJc1UwRkJVME1zUjBGQllWWXNSVUZCVjBNc1JVRkJUeXhEUVVGRExFVkJRVWNzUTBGRE1VTXNTVUZCYTBOVkxFVkJRVUZXTEVWQlFURkNMRTFCUVVGWExFTkJNME5XTEVWQk1rTnZRMFFzUlVGQmFrSkZMRVZCUVVGRExFZEJRV2xDU0N4RlFVRnFRaXhEUVVGVUxGTkJRMFpVTEVWQlFVMHNTMEZCU3l4VlFVRlZMRU5CUVVOR0xFVkJRVmRoTEVOQlFWa3NRMEZCUXl4RlFVTm9SRXdzUlVGQlRVTXNSMEZCWVZBc1EwRkJSeXhGUVVNeFFpeFBRVUZMVFN4SlFVTklRU3hGUVVGTkxFbEJRVWtzUzBGQlN5eHRRa0ZCYlVKU0xFVkJRVmRETEVOQlFVa3NSVUZEYWtSUkxFZEJRV0ZRTEVOQlFVY3NSVUZCU1Uwc1IwRkZaa0VzUTBGRFZDeERRVVZCTEVsQlFVbFBMRWRCUVdsQ0xFdEJRM0pDTEZOQlFWTkRMRWxCUVdVc1EwRkRkRUlzVDBGQlNVUXNTMEZIUmtFc1IwRkJhVUlzU1VGQlNTeExRVUZMTEdWQlFXVXNSVUZCUlN4blFrRkJaMElzUlVGQlJTeFBRVU4wUkVFc1IwRkZXQ3hEUVVWQkxGTkJRVk5GTEVkQlFXdENReXhGUVVGWExFTkJVM0JETEVsQlFVMURMRVZCUVZORUxFVkJRVlVzVVVGQlVTeExRVUZMTEVWQlEzUkRMRWRCUVVsRExFbEJRVmNzUjBGRFlpeE5RVUZQTEVOQlFVTkVMRU5CUVZNc1JVRkRXaXhEUVVOTUxFbEJRVWxGTEVWQlEwVkRMRVZCUVZWSUxFVkJRVlVzVlVGQlZTeEZRVUZIUXl4RFFVRk5MRVZCUXpkRExFZEJRVWtzUTBGRFJrTXNSVUZCVldZc1IwRkJZV0VzUTBGQlV5eEZRVUZGTEdkQ1FVRm5RaXhEUVVOd1JDeFBRVUZUU1N4RlFVRkhMRU5CUTFaR0xFVkJRVlZtTEVkQlFXRm5RaXhEUVVGUExFVkJRVVVzWjBKQlFXZENMRU5CUTJ4RUxFTkJSVUVzUjBGQlRTeERRVUZGTEdkQ1FVRkJSU3hGUVVGcFFpeFRRVUZCUXl4RFFVRlRMRVZCUVVsS0xFVkJSWFJETEUxQlFVOHNRMEZCUTBNc1JVRkJVMFVzUlVGQmFVSkRMRU5CUVZFc1EwRkROVU1zUTBGRFJpeERRVVZCTEZOQlFWTkRMRWRCUVdsQ1VDeEZRVUZYU3l4RlFVRnBRa2NzUlVGQlowSXNRMEZEY0VVc1QwRkJTVUVzUjBGQmEwSklMRXRCUTNCQ1RDeEhRVUZoTEV0QlJWUlJMRWxCUTBaU0xFZEJRV0VzVDBGQlQxRXNRMEZCWXl4SlFVZG9RMGdzU1VGRFJrd3NSMEZCWVN4UFFVRlBTeXhEUVVGbExFdEJSVGxDVEN4RFFVbFlMRU5CUlVFc1UwRkJVMU1zUjBGQlZVTXNSVUZCUnl4RFFVTndRaXhKUVVGTlF5eEZRVUZMTEVOQlFVTXNSVUZEV2l4UlFVRlRReXhGUVVGSkxFVkJRVWRCTEVkQlFVc3NSMEZCU1VFc1NVRkJTeXhEUVVNMVFpeEpRVUZOUXl4RlFVRkxReXhGUVVGVExFbEJRVWtzUzBGQlRVWXNSVUZCUnl4RFFVRkRMRVZCUTJ4RFJDeEZRVUZITEV0QlFVdEVMRVZCUVVWSExFTkJRVVVzUTBGQlF5eERRVU5tTEVOQlEwRXNUMEZCVDBZc1EwRkRWQ3hEUVVWQkxGTkJRVk5KTEVkQlFWbE1MRVZCUVVjc1EwRkRkRUlzU1VGQlRVTXNSVUZCU3l4RFFVRkRMRVZCUTFvc1VVRkJVME1zUlVGQlNTeEZRVUZIUVN4SFFVRkxMRVZCUVVkQkxFbEJRVXNzUTBGRE0wSXNTVUZCVFVNc1JVRkJTME1zUlVGQlV5eEpRVUZKTEV0QlFVMHNSMEZCU1N4SFFVRkxSaXhEUVVGRExFVkJRM2hEUkN4RlFVRkhMRXRCUVV0RUxFVkJRVVZITEVOQlFVVXNRMEZCUXl4RFFVTm1MRU5CUTBFc1QwRkJUMFlzUTBGRFZDeERRVVZCTEZOQlFWTkxMRWRCUVZWRExFVkJRVXRETEVWQlFWRkRMRVZCUVZkRExFVkJRVmRETEVWQlFWRXNRMEZETlVRc1NVRkJUVU1zUlVGQlQwd3NSVUZCU1N4WlFVRlpSU3hEUVVGVExFVkJSWFJETEU5QlFVbEhMRWxCUVZNc1VVRkRTaXhMUVVORlFTeEpRVUZUTEV0QlExaEdMRVZCUVZWR0xFTkJRVTBzUlVGRmFFSkhMRVZCUVU5SUxFTkJRVTBzUTBGRmVFSXNRMEZGUVN4VFFVRlRTeXhIUVVGdlFrNHNSVUZCU3l4RFFVTm9ReXhQUVVGSlFTeEZRVUZKTEdsQ1FVRnRRa0VzUlVGQlNTeHJRa0ZCYjBJc1QwRkRNVU1zUjBGSFRFRXNSVUZCU1N4clFrRkJiMElzVVVGRGVFSXNRMEZCUTBFc1JVRkJTU3hSUVVOTVFTeEZRVUZKTEU5QlFVOHNWMEZCVnl4SlFVRkpMRWRCUXpGQ0xFbEJRVWtzUzBGQlN5eGxRVUZsUVN4RlFVRkpMRWxCUVVrc1JVRkJSU3huUWtGQlowSXNSVUZCUlN4clFrRkJiMElzVFVGSE9VVXNRMEZOUVN4SlFVRk5UeXhIUVVGT0xFdEJRVEJDTEVOQlEzaENMRmxCUVZsRExFVkJRVTFETEVWQlFXRXpReXhGUVVGTkxFTkJRMjVETEV0QlFVc3NUVUZCVVVFc1JVRkJTeXhQUVVGVExFVkJRek5DTEV0QlFVc3NUVUZCVVVFc1JVRkJTeXhQUVVGVExFZEJSVE5DTEVsQlFYVkRWU3hGUVVGQlZpeEZRVUV2UWl4UFFVRkJORU1zUlVGQlR5eE5RVUZCUXl4RFFTOUtia0lzUlVFclNqSkRia01zUlVGQlpHOURMRVZCUVVGcVF5eEhRVUZqU0N4RlFVRmtMRU5CUVdwQ0xGRkJRVThzVlVGRlppeEhRVUZKTEVOQlFVTnBReXhIUVVGbExFOUJRVThzUzBGQlMwY3NRMEZCVXl4RlFVRkZMRTlCUVZNc1JVRkJSeXhEUVVOeVJDeEpRVUZOUXl4RlFVRlhReXhGUVVGQkxFTkJRVVVzV1VGQllTeEpRVUZWYUVRc1IwRkRkRU5CTEVWQlFVc3NUVUZCVVN4SlFVRkhLME1zUlVGQlV5eHhRa0ZCZFVJdlF5eEZRVUZMTEU5QlEzcEVMRXRCUVVzc1NVRkJUVTBzUjBGQllXOURMRVZCUVUxTExFTkJRVkVzUTBGRGVFTXNRMEZEUml4RFFVVkJMRTlCUVU5c1FpeEZRVUZITEVOQlExSXNSMEZCU1N4TFFVRkxMRWxCUVVzc1EwRkRXaXhKUVVGTmIwSXNSVUZCVVN4TFFVRkxMRTFCUVZFc1MwRkJTeXhOUVVGTmNFSXNRMEZCUXl4RlFVRkpRU3hGUVVNelF5eFBRVUZQTEV0QlFVc3NTVUZCU1N4UFFVRlBiMElzUTBGQlN5eERRVU01UWl4TFFVRlBMRU5CUlV3c1NVRkJUVUVzUlVGQlVTeExRVUZMTEUxQlFWRXNTMEZCU3l4TlFVRk5jRUlzUTBGQlF5eEZRVUZKY1VJc1IwRkJVWEpDTEVWQlFVY3NRMEZCUXl4RlFVTjJSQ3hQUVVGUGMwSXNSMEZCVTBZc1JVRkJUeXhMUVVGTExFdEJRVXNzUTBGRGJrTXNRMEZEUml4RFFVTkdMRVZCVFUxSExFZEJRVTRzUzBGQmQwSXNRMEZEZEVJc1dVRkJXWFJDTEVWQlFVbFpMRVZCUVUweFF5eEZRVUZOTEVOQlF6RkNMRXRCUVVzc1MwRkJUMEVzUlVGRldpeEpRVUZKY1VRc1JVRkRTaXhIUVVGSmRrSXNSVUZCUnl4TFFVRkxMRmxCUVdFc1EwRlBka0lzU1VGQlRYZENMRVZCUVZrc1NVRkJUWGhDTEVWQlFVY3NUMEZCVXl4SlFVTTVRbmxDTEVWQlFWVkVMRWRCUVdFc1JVRkJTU3hYUVVGWFFTeERRVUZUTEVkQlFVc3NWVUZCVlVFc1EwRkJVeXhIUVVONlJYaENMRVZCUVVjc1UwRkJWeXhIUVVGTE1FSXNSMEZCVXl4UFFVRlBSQ3hEUVVGUExFVkJRVVVzVDBGRE9VTkdMRVZCUVVsRkxFVkJRMG9zUzBGQlN5eEhRVUZMZWtJc1NVRlRWblZDTEVWQlFVa3NUVUZEUVhKRUxFVkJRVXNzWVVGRFVDeExRVUZMTEVkQlFVczRRaXhGUVVWV0xFdEJRVXNzUjBGQlMwRXNSVUZCUnl4VFFVRlhMRVZCUVVsQkxFVkJRVXRETEVWQlFWTXNWMEZCVjBRc1JVRkJSeXhIUVVGTFFTeEZRVUZITEU5QlFWTXNSMEZCU3l4SFFVRkpMRVZCUjNoR0xFMUJRVmRCTEVWQlFVY3NTMEZCU3l4UFFVRlRMRk5CUXpGQ0xFdEJRVXNzUjBGQlMwRXNSMEZGVml4TFFVRkxMRWRCUVV0QkxFVkJRMVoxUWl4RlFVRkpka0lzUlVGQlJ5eExRVUZMTEUxQlIyUXNTVUZCVFdsQ0xFVkJRVmRETEVWQlFVRXNSMEZCU3l4TFFVRkxMRTFCUTNaQ1N5eEpRVU5HVGl4RlFVRlRMRk5CUVZkTkxFZEJSWFJDTEV0QlFVc3NTVUZCVFdwRUxFZEJRV0Z6UXl4RlFVRk5TeXhEUVVGUkxFTkJRM2hETEVOQlJVRXNVVUZCVXl4RFFVTlFMRTlCUVU4c1MwRkJTeXhKUVVGSkxFOUJRVThzUzBGQlN5eEhRVUZITEZOQlFWTXNRMEZCUXl4RFFVTXpReXhEUVVWQkxHVkJRV2RDTEVOQlEyUXNUMEZCVHl4TFFVRkxMRWxCUVVrc1kwRkJZeXhMUVVGTExFZEJRVWNzVTBGQlV5eERRVUZETEVOQlEyeEVMRU5CUlVFc2FVSkJRV3RDTEVOQlEyaENMRTlCUVU4c1MwRkJTeXhKUVVGSkxHZENRVUZuUWl4RFFVTnNReXhEUVVOR0xFVkJTMDFWTEVkQlFVNHNTMEZCZFVJc1EwRkRja0lzV1VGQldXWXNSVUZCVFdkQ0xFVkJRVmN4UkN4RlFVRk5MRU5CUTJwRExFdEJRVXNzUzBGQlQyZEVMRVZCUVVFc1EwRkJSU3hOUVVGUExGRkJRVmRvUkN4SFFVTTFRaXhEUVVGRE1FUXNSMEZCWVVNc1IwRkJXU3hKUVVNMVFpeExRVUZMTEVsQlFVMXNSQ3hIUVVGaGFVTXNSVUZCVFRGRExFTkJRVWtzUlVGRmRFTXNRMEZGUVN4UFFVRlBORVFzUlVGQlQwTXNSVUZCVFN4RFFVTnNRaXhQUVVGSkxFdEJRVXNzU1VGRFFTeExRVUZMTEVsQlFVa3NUMEZCVDBRc1JVRkJUME1zUTBGQlNTeEZRVVZ1UWtNc1IwRkJiVUpFTEVWQlFVMUVMRVZCUVU4c1MwRkJTeXhMUVVGTExGRkJRVk1zUzBGQlN5eExRVUZMTEZGQlFWVXNUVUZCVFN4RFFVVm9SeXhEUVVWQkxHTkJRV05CTEVWQlFVOURMRVZCUVUwc1EwRkRla0lzVDBGQlNTeExRVUZMTEVsQlEwRXNTMEZCU3l4SlFVRkpMR05CUVdORUxFVkJRVTlETEVOQlFVa3NSVUZGYkVNc1EwRkJReXhEUVVWYUxFTkJRMFlzUlVGTmNVSkZMRWRCUVhKQ0xFMUJRWEZDUXl4RFFVRlBMRU5CUXpGQ0xFOUJRVThzVTBGQlUyaEZMRVZCUVUwc1EwRkRjRUlzVDBGQlQyZEZMRVZCUVU4c1QwRkJUMmhGTEVWQlFVc3NUMEZCVVVFc1JVRkJTeXhuUWtGQmFVSkJMRVZCUVVzc1pVRkJaMEpCTEVWQlFVc3NWMEZCVnl4RFFVTXZSaXhEUVVWQkxFOUJRVThzVDBGQlQybEZMRVZCUVZFelF5eEZRVUZwUWtjc1JVRkJaMEo1UXl4RlFVRmpMRWRCUVU4c1EwRkRNVVVzU1VGQlRVTXNSVUZCYTBKR0xFZEJRVlZITEVWQlFWTXNZMEZGY2tORExFVkJRVlZHTEVsQlFXOUNSQ3hGUVVGakxGRkJRVlZ1UkN4SFFVRmhMRWRCUTI1RmRVUXNSVUZCYlVKb1JDeEhRVUZ0UWpoRExFVkJRVk1zZFVKQlF5OURSeXhGUVVGclFqbERMRWRCUVd0Q01rTXNSVUZCVXl4elFrRkRia1FzVDBGQlR5eEpRVUZKU2l4RlFVRlBTeXhGUVVGVFF5eEZRVUZyUWtNc1JVRkJhVUpLTEVOQlFXVXNRMEZETDBVc1EwRkZRU3hQUVVGUExGbEJRV0VzUTBGRGJFSnlSQ3hIUVVGcFFpeExRVU5xUWxnc1IwRkJZeXhEUVVGRExFVkJRMlpGTEVkQlFXVXNRMEZCUXl4RlFVTm9Ra2NzUjBGQlpTeERRVUZETEVOQlEyeENMRU5CUlVFc1QwRkJUeXhYUVVGWExFTkJRVVVzVDBGQlFYbEVMRVZCUVZFc1owSkJRVUV6UXl4RlFVRnBRaXhsUVVGQlJ5eERRVUZsTEVWQlFVa3NRMEZCUXl4RlFVRkhMRU5CUTJ4RkxFOUJRVTkxUXl4RlFVRlBMRTlCUVU5RExFVkJRVkV6UXl4RlFVRnBRa2NzUTBGQll5eERRVU01UkN4RFFVVkJMRmxCUVZsM1F5eEZRVUZSVHl4RlFVRlhMME1zUlVGQlowSXdReXhGUVVGcFFpeERRVU01UkN4SFFVRk5MRU5CUVVOTkxFVkJRV05ETEVWQlFYVkNReXhEUVVGdlFpeEZRVUZKTTBRc1IwRkJhMEpwUkN4RFFVRk5MRVZCUlRWR0xFdEJRVXNzVDBGQlUxRXNSVUZEWkN4TFFVRkxMR2RDUVVGclFrUXNSMEZCWVVVc1IwRkJlVUlzUzBGRE4wUXNTMEZCU3l4bFFVRnBRbXBFTEVkQlFXdENhMFFzUjBGQmQwSXNTMEZEYUVVc1MwRkJTeXhMUVVGUGJrUXNSMEZCYVVJc1MwRkJTeXhQUVVGUkxFdEJRVXNzWjBKQlFXbENMRXRCUVVzc1kwRkJZeXhGUVVWdVJpeExRVUZMTEdOQlFXZENMRU5CUVVVc1QwRkJVU3hEUVVGRExFVkJRVWNzVjBGQldTeERRVUZETEVOQlFVVXNSVUZEYkVRc1MwRkJTeXhaUVVGakxFTkJRVVVzVDBGQlVTeERRVUZETEVWQlFVY3NWMEZCV1N4RFFVRkRMRU5CUVVVc1JVRkRhRVFzUzBGQlN5eGpRVUZuUWl4TFFVTnlRaXhMUVVGTExGTkJRVmNzUTBGQlF5eEZRVVZxUWl4TFFVRkxMR2RDUVVGclFqSkRMRVZCUTNaQ0xFdEJRVXNzYTBKQlFXOUNMRWxCUXpOQ0xFTkJSVUVzU1VGQlNTeGhRVUZqTEVOQlEyaENMRTlCUVVrc1MwRkJTeXh0UWtGQmNVSXNUMEZETlVJc1MwRkJTeXhyUWtGQmIwSXpRaXhIUVVGdlFpeEpRVUZKTEVkQlJ6VkRMRXRCUVVzc2FVSkJRMlFzUTBGRlFTeGhRVUZqTEVOQlExb3NTVUZCVFc5RExFVkJRV1VzUzBGQlN5eFZRVUZWTEVWQlF6bENReXhIUVVOSUxFdEJRVXNzYTBKQlFXOUNMRTFCUVZFc1MwRkJTeXhyUWtGQmIwSXNWVUZETVVRc1MwRkJTeXhwUWtGQmJVSXNUVUZCVVN4TFFVRkxMR2xDUVVGdFFpeFhRVU16UkN4UFFVRlBSQ3hIUVVGblFrTXNSVUZCYVVJc1MwRkJUeXhOUVVOcVJDeERRVVZCTEUxQlFVMURMRVZCUVUwc1EwRkRWaXhOUVVGSkxFTkJRVU5CTEVkQlFWRXNUMEZCVHl4dlFrRkJiMEpCTEVOQlFVa3NSVUZCUlN4VFFVRlhMRVZCUTJoRUxFdEJSVUZrTEVWQlFVOHNUMEZEV21Nc1JVRkJTeXhSUVVGVkxFdEJRVXNzWjBKQlEzQkNRU3hGUVVGTExHbENRVUZ0UWl4TFFVRkxMR2RDUVVNM1FrRXNSVUZCU3l4blFrRkJhMElzUzBGQlN5eGxRVU0xUWtFc1JVRkJTeXhoUVVGbExFVkJRM1JDTEVOQlJVb3NRMEZGUVN4alFVRmpRU3hGUVVGUExFTkJRVU1zUlVGQlJ5eERRVU4yUWl4UFFVRlBMRXRCUVVzc1RVRkJUVU1zUjBGQlFTOUNMRVZCUVVFc1IwRkJTemhDTEVkQlFVd3NRMEZCVnl4WlFVRmhMRVZCUVVzc1JVRkJReXhEUVVOc1JDeERRVVZCTEd0Q1FVRnJRa0VzUlVGQlR5eERRVUZETEVWQlFVY3NRMEZETTBJc1QwRkJUeXhMUVVGTExFMUJRVTFETEVkQlFVRXZRaXhGUVVGQkxFZEJRVXM0UWl4SFFVRk1MRU5CUVZjc1dVRkJZU3hGUVVGTkxFVkJRVU1zUTBGRGJrUXNRMEZGUVN4UFFVRlBNME1zUlVGQlVUWkRMRVZCUVZNc1IwRkJUelZETEVWQlFWa3NSMEZCVFN4RFFVTXZReXhQUVVGUFNDeEhRVUZWTEV0QlFVMUZMRVZCUVZGRExFVkJRVzFDTmtNc1IwRkJVU3hKUVVGTkxFTkJRemxFTEVsQlFVMTJReXhGUVVGUGMwTXNSVUZCVXl4RFFVRkZMRTFCUVU4M1F5eEZRVUZSTEVsQlFVc3NVMEZCVlN4RlFVRkpMRU5CUVVVc1RVRkJUMEVzUTBGQlR5eEZRVU40UlN0RExFVkJRVmxHTEVWQlFWTXNVMEZCVnl4aFFVTnNReXhQUVVGTExFdEJRVXNzV1VGQldVVXNRMEZCVXl4RlFVRkZMME1zUTBGQlRTeEpRVU55UXl4TFFVRkxMRmxCUVZrclF5eERRVUZUTEVWQlFVVXZReXhEUVVGTkxFVkJRVWxVTEVkQlFWZEpMRWRCUVU4c1MwRkJTeXhSUVVGUlFTeEZRVUZKV1N4RlFVRk5MRTlCUVU4c1EwRkJReXhIUVVWc1JpeExRVUZMTEZsQlFWbDNReXhEUVVGVExFVkJRVVV2UXl4RFFVRk5MRU5CUXpORExFTkJRVU1zUTBGRFNDeERRVVZCTEZOQlFWTkJMRVZCUVZFMlF5eEZRVUZUTEVkQlFVODFReXhGUVVGWkxFZEJRVTBzUTBGRGFrUXNUMEZCVDBnc1IwRkJWU3hMUVVGTlJTeEZRVUZSUXl4RlFVRnRRaXRETEVkQlFWVXNTVUZCVFN4RFFVTm9SU3hKUVVGTmVrTXNSVUZCVDNORExFVkJRMUFzUTBGQlJTeFJRVUZUTjBNc1JVRkJVU3hMUVVGTkxGVkJRVmNzVFVGQlR5eFBRVUZSTEVsQlFVc3NVMEZCVlN4RlFVTnNSU3hEUVVGRkxGRkJRVk5CTEVOQlFVOHNSVUZEZEVJclF5eEZRVUZaUml4RlFVRlRMRk5CUVZjc1lVRkRiRU1zVDBGQlN5eExRVUZMTEdOQlFXTkZMRU5CUVZNc1JVRkJSUzlETEVOQlFVMHNTVUZEZGtNc1MwRkJTeXhqUVVGakswTXNRMEZCVXl4RlFVRkZMME1zUTBGQlRTeEZRVUZKU0N4SFFVRmhSaXhIUVVOdVJDeExRVUZMTEZGQlFWRkJMRVZCUVVsWkxFVkJRVTBzVTBGQlV5eERRVU5zUXl4SFFVVkxMRXRCUVVzc1kwRkJZM2RETEVOQlFWTXNSVUZCUlM5RExFTkJRVTBzUTBGRE4wTXNRMEZCUXl4RFFVTklMRU5CUlVFc1ZVRkJWVU1zUlVGQldTeEhRVUZOTEVOQlF6RkNMRTlCUVU5SUxFZEJRMHdzUzBGRFFTeFBRVU5CUnl4RlFVTkJMRWxCUVdOblJDeEhRVU5rTEVsQlFVMHNRMEZIU2l4SFFVRkpMRU5CUVVNc1MwRkJTeXhqUVVGbExFTkJRM1pDTEVsQlFVMHhReXhGUVVGUExFTkJRVVVzUzBGQlRTeFZRVUZYTEZWQlFWY3NTMEZCVFN4RlFVTnFSQ3hMUVVGTExHTkJRV2RDTEVOQlFVTllMRVZCUVZNc1NVRkJTU3hMUVVGTkxFZEJRVWtzUjBGQlNTeERRVUZETEVWQlFVZEJMRVZCUVZNc1NVRkJTU3hMUVVGTkxFZEJRVWtzUjBGQlNTeEZRVUZGTEVOQlFVTXNSVUZCUlN4SlFVTnNSa1FzUjBGQlR5eExRVUZMTEZGQlFWRkJMRVZCUVVsWkxFVkJRVTBzVjBGQlZ5eERRVU0xUXl4RFFVTkdMRU5CUlVFc1QwRkJUeXhMUVVGTExHRkJRMlFzUTBGRFJpeERRVU5HTEVOQlJVRXNTMEZCUzFBc1JVRkJVVU1zUlVGQldTeEhRVUZOTEVOQlF6ZENMRTlCUVU5SUxFZEJRVlVzUzBGQlRVVXNSVUZCVVVNc1JVRkJiVUpwUkN4SFFVRk5MRWxCUVUwc1EwRkROVVFzU1VGQlRUTkRMRVZCUVU4c1EwRkJSU3hKUVVGTFVDeERRVUZQTEVWQlNUTkNMRTlCUVVzc1MwRkJTeXhUUVVGVFFTeERRVUZOTEVsQlEzWkNMRXRCUVVzc1UwRkJVMEVzUTBGQlRTeEZRVUZKTEVOQlFVTktMRVZCUVZNc1NVRkJTU3hKUVVGTExFVkJRVWNzUTBGQlF5eEZRVUZIUVN4RlFVRlRMRWxCUVVrc1MwRkJUU3hGUVVGSExFTkJRVU1zUTBGQlF5eEZRVUZGTEVsQlFVdEVMRWRCUXk5RkxFdEJRVXNzVVVGQlVVRXNSVUZCU1Zrc1JVRkJUU3hMUVVGTExFTkJRemxDTEVkQlIwc3NTMEZCU3l4VFFVRlRVQ3hEUVVGTkxFTkJRemRDTEVOQlFVTXNRMEZEU0N4RFFVVkJMRkZCUVZGTUxFVkJRVWxwUWl4RlFVRlZkVU1zUlVGQlR5eERRVU16UWl4SlFVRk5ReXhGUVVGTExFdEJRVXNzV1VGQldYcEVMRVZCUVVscFFpeERRVUZSTEVWQlEzUkRlVU1zUlVGQlZVUXNSVUZCUnl4alFVRmpMRVZCUXpOQ1JTeEZRVUZYUkN4RlFVRlJMRXRCUVUxRkxFZEJRVTFCTEVWQlFVVXNTMEZCU3l4WlFVRlpMRWxCUVUxS0xFTkJRVXNzUlVGREwwUXNUMEZCVDBjc1JVRkJWMEVzUlVGQlV5eE5RVUZSTEVsQlEzSkRMRU5CUlVFc1owSkJRV2RDZWtZc1JVRkJUeXhEUVVGRExFVkJRVWNzUTBGSGVrSXNUMEZCVHl4SlFVRkplVU1zUjBGQmIwSXNTMEZCU3l4TFFVRk5la01zUlVGQlN5eGhRVUZsTEV0QlFVc3NXVUZCWVVFc1EwRkJTU3hEUVVOMFJpeERRVVZCTEZsQlFWazRRaXhGUVVGSmFVSXNSVUZCVnl4RFFVRkRMRVZCUVVjc1EwRkROMElzVDBGQlR5eEpRVUZKU3l4SFFVRnJRblJDTEVWQlFVa3NTMEZCU3l4TFFVRk5hVUlzUTBGQlVTeERRVU4wUkN4RFFVVkJMR0ZCUVdFdlF5eEZRVUZQTEVOQlFVTXNSVUZCUnl4RFFVTjBRaXhQUVVGUExFbEJRVWw1UkN4SFFVRnBRaXhMUVVGTExFdEJRVTBzUzBGQlN5eFZRVUZWTEVWQlFVZDZSQ3hEUVVGSkxFTkJReTlFTEVOQlJVRXNZMEZCWTBFc1JVRkJUeXhEUVVGRExFVkJRVWNzUTBGRGRrSXNUMEZCVDBZc1IwRkJXU3hMUVVGTExFdEJRVTFGTEVOQlFVa3NRMEZEY0VNc1EwRkZRU3hYUVVGWkxFTkJRMVlzVDBGRFJTeExRVUZMTEZOQlFWY3NUVUZEYUVJc1MwRkJTeXhQUVVGUExGbEJRVmtzU1VGQlRTeFRRVU01UWl4SlFVRkpMRXRCUVVzc1pVRkJaU3hMUVVGTExFbEJRVWtzUlVGQlJTeG5Ra0ZCWjBJc1JVRkJSU3hQUVVGUExGZEJRVmNzVDBGQlR5eERRVVZzUml4RFFVVkJMRTlCUVU4eVJpeEZRVUZQTEVOQlExb3NUMEZEUlN4TFFVRkxMRk5CUVZkQkxFVkJRVTBzVVVGRGRFSXNTMEZCU3l4clFrRkJiMEpCTEVWQlFVMHNhVUpCUXk5Q0xFdEJRVXNzYVVKQlFXMUNRU3hGUVVGTkxHTkJSV3hETEVOQlEwWXNSVU5zWWtFc1UwRkJVME1zVFVGQmEwSkRMRVZCUVZNc1EwRkRiRU1zU1VGQlRVTXNSVUZCVDBRc1JVRkJVU3hQUVVGUExFTkJRVU5GTEVWQlFVY3NTVUZCVFVFc1JVRkJTU3hGUVVGRkxFOUJRVkVzUlVGQlJTeEZRVU4wUkN4UFFVRlBMRTlCUVU4c1NVRkJTVVFzUTBGQlNTeEhRVUZITEVOQlF6TkNMRU5CUlVFc1UwRkJVMFVzVFVGQmNVSkRMRVZCUVZrc1EwRkRlRU1zVDBGQlQwTXNSMEZEVEVRc1JVRkRSeXhQUVVORExFTkJRVU1zUTBGQlEwVXNSVUZCV1VNc1JVRkJXVU1zUTBGQlRTeEZRVUZIUXl4SlFVRlBMRU5CUTNoRExFZEJRVTBzUTBGQlEwTXNSVUZCUzBNc1JVRkJUVU1zUTBGQlNTeEZRVUZKU0N4RlFVRkhTaXhGUVVGSFJ5eERRVUZOTEVWQlEzUkRMRTFCUVU4c1EwRkJRMHNzU1VGQlFTeEhRVUZMVUN4SFFVRmxTU3hIUVVGUFF5eEhRVUZSU2l4RlFVRlpTeXhEUVVGSkxFTkJRemRFTEVWQlEwRXNRMEZCUXl4RFFVRkRMRVZCUVVjc1MwRkJUU3hEUVVGRExFTkJRMlFzUlVGRFF5eE5RVUZOTEVWQlFVY3NRMEZCUXl4RFFVTnFRaXhEUVVWQkxGTkJRVk5GTEVkQlFVMURMRXRCUVUxRExFVkJRVlVzUTBGRE4wSXNSMEZCU1VRc1IwRkJTeXhMUVVOUUxFMUJRVThzUTBGQlF5eExRVUZOTEVsQlFVa3NSVUZIY0VJc1QwRkJWeXhEUVVGRFJTeEZRVUZQUXl4RFFVRlRMRWxCUVV0R0xFVkJRVlVzUTBGRGVrTXNTVUZCVFZnc1JVRkJTVmtzUlVGQlRTeExRVUZMUml4RFFVRkRMRVZCUTNSQ0xFZEJRVWxXTEVWQlEwWXNUMEZCVDJFc1JVRkJWV0lzUTBGQlF5eERRVVYwUWl4RFFVTkJMRTFCUVU4c1EwRkJReXhMUVVGTkxFbEJRVWtzUTBGRGNFSXNRMEZGUVN4VFFVRlRZeXhOUVVGbFF5eEZRVUZOTEVOQlF6VkNMRTFCUVU4c1EwRkJRME1zUlVGQlQySXNTVUZCVnl4RFFVTjRRaXhKUVVGTll5eEZRVUZOTEVOQlFVTXNSVUZEVkVNc1JVRkZTaXhKUVVGTFFTeEZRVUZKTEVWQlFVZEJMRVZCUVVsSUxFVkJRVXNzVDBGQlVVY3NTVUZETTBKRUxFVkJRVWxHTEVWQlFVdEhMRU5CUVVNc1EwRkJReXhGUVVGSlF5eEhRVUZoU0N4RlFVRk5ZaXhGUVVGVFpTeERRVUZETEVOQlFVTXNSVUZGTDBNc1RVRkJUeXhEUVVGRFJDeEZRVUZMTEV0QlFVMWtMRVZCUVZObExFTkJRVU1zUTBGREwwSXNRMEZEUml4RFFVZEJMRWxCUVUxRkxFZEJRV01zYTBOQlEyUkRMRWRCUVd0Q0xFMUJRVTFFTEVkQlFWa3NUVUZCVFN4WFFVRlhSU3hIUVVGVkxFMUJRVTBzVjBGRGNrVkRMRWRCUVcxQ0xITkVRVU51UWtNc1IwRkJaU3hQUVVGUExFZEJRVWRFTEVkQlFXbENMRTFCUVUwc1IwRkJSMFlzUlVGQlpTeEZRVUZGTEVWQlEzQkZTU3hIUVVGM1FpeFBRVUZQTEU5QlFVOUVMRWRCUVdFc1RVRkJUU3hKUVVGSkxFVkJRemRFUlN4SFFVRmpMRGhEUVVOa1F5eEhRVUZsTERoQ1FVTm1ReXhIUVVGclFpeHRRa0ZEYkVKRExFZEJRWEZDWml4SFFVRlpMRmRCUVZrc1lVRkJZeXhUUVVGVExFVkJRM0JGWjBJc1IwRkJkMEpvUWl4SFFVRlpMRTlCUVZFc1UwRkJVeXhGUVVOeVJHbENMRWRCUVdNc2QwSkJRMlJETEVkQlFXVXNUMEZEYmtJc1IwRkJSMVFzUjBGQmFVSXNUVUZCVFN4UlFVRlJTQ3hIUVVGWkxFMUJRVTBzUzBGQlMwVXNSMEZCVlN4TlFVRk5MRXRCUXpORkxFVkJRMDFYTEVkQlFYZENMRTlCUVU4c1QwRkJUMFFzUjBGQllTeE5RVUZOTEVsQlFVa3NSVUZGYmtVc1UwRkJVMFVzUjBGQlNXeENMRVZCUVU5dFFpeEZRVUZMUXl4RlFVRlZMRU5CUTJwRExFbEJRVTF3UXl4RlFVRkpaMElzUlVGQlRXMUNMRU5CUVVjc1JVRkRia0lzVDBGQlQwVXNSVUZCV1hKRExFTkJRVU1zUlVGQlNXOURMRVZCUVZkcVFpeEhRVUZoYmtJc1EwRkJReXhEUVVOdVJDeERRVVZCTEZOQlFWTnpReXhIUVVGamRFSXNSVUZCVDJJc1JVRkJVU3hEUVU5d1F5eE5RVUZQTEVOQlRrMHNRMEZEV0N4TFFVRk5LMElzUjBGQlNXeENMRVZCUVU5aUxFTkJRVTBzUlVGRGRrSXNUVUZCVHl0Q0xFZEJRVWxzUWl4RlFVRlBZaXhGUVVGVExFVkJRVWNzUTBGQlF5eEZRVU12UWl4SlFVRkxLMElzUjBGQlNXeENMRVZCUVU5aUxFVkJRVk1zUlVGQlJ5eERRVUZETEVOQlF5OUNMRVZCUldNc1MwRkJUVUVzUlVGQlV5eERRVUZETEVOQlEyaERMRU5CUlVFc1UwRkJVMjlETEVkQlFXVjJRaXhGUVVGUFlpeEZRVUZSTEVOQlVYSkRMRTFCUVU4c1EwRlFUU3hEUVVOWUxFMUJRVThyUWl4SFFVRkpiRUlzUlVGQlQySXNSVUZCVVN4RFFVRkRMRVZCUXpOQ0xGRkJRVk1yUWl4SFFVRkpiRUlzUlVGQlQySXNSVUZCVXl4RlFVRkhMRU5CUVVNc1JVRkRha01zVVVGQlV5dENMRWRCUVVsc1FpeEZRVUZQWWl4RlFVRlRMRVZCUVVjc1EwRkJReXhGUVVOcVF5eGhRVUZqY1VNc1IwRkJXWGhDTEVWQlFVMWlMRVZCUVZNc1EwRkJReXhEUVVGRExFTkJRemRETEVWQlJXTXNTMEZCVFVFc1JVRkJVeXhEUVVGRExFTkJRMmhETEVOQlJVRXNVMEZCVTNORExFZEJRV2xDZWtJc1JVRkJUMklzUlVGQlVTeERRVU4yUXl4SlFVRk5kVU1zUlVGQlVTeERRVUZETVVJc1JVRkJUV0lzUTBGQlRTeEhRVUZMTEVOQlFVTmhMRVZCUVUxaUxFVkJRVk1zUTBGQlF5eEZRVU12UTNkRExFVkJRV0ZETEVkQlFXRTFRaXhGUVVGTllpeEZRVUZUTEVOQlFVTXNSVUZCUjJFc1JVRkJUV0lzUlVGQlV5eERRVUZETEVOQlFVTXNSVUZET1VSSExFVkJRVTl2UXl4RlFVRlJMRXRCUVU5SExFZEJRV2RDTEZOQlFWTkdMRU5CUVZVc1JVRkRNMFFzVFVGQlR5eERRVUZETEVOQlFVTXNSVUZCUjNKRExFVkJRVTFJTEVWQlFWTXNRMEZCUXl4RFFVTTVRaXhEUVVWQkxGTkJRVk15UXl4SFFVRm5RamxDTEVWQlFVOWlMRVZCUVZFc1EwRkRkRU1zU1VGQlRVY3NSVUZCVDFVc1JVRkJUV0lzUTBGQlRTeEZRVUZKTkVNc1IwRkJVeXhQUVVGUEwwSXNSVUZCVFdJc1EwRkJUU3hEUVVGRExFVkJRVWtzUzBGRE9VUXNUVUZCVHl4RFFVRkRMRU5CUVVNc1JVRkJSMGNzUlVGQlRVZ3NSVUZCVXl4RFFVRkRMRU5CUXpsQ0xFTkJTVUVzU1VGQlRUWkRMRWRCUVdNc1QwRkJUeXhOUVVGTmVrSXNSMEZCYVVJc1RVRkJUU3hIUVVGSExFVkJTWEpFTUVJc1IwRkJZeXdyVUVGRmNFSXNVMEZCVTBNc1IwRkJiVUpzUXl4RlFVRlBMRU5CUTJwRExFZEJRVTBzUTBGRFNrNHNSVUZEUVhsRExFVkJRMEZETEVWQlEwRkRMRVZCUTBGRExFVkJRMEZETEVWQlEwRkRMRVZCUTBGRExFVkJRMEZETEVOQlEwWXNSVUZCU1RGRExFVkJSVVV5UXl4RlFVRnZRbXBFTEVWQlFVVXNRMEZCUXl4SlFVRk5MRWxCUXpkQ2EwUXNSVUZCYTBKSUxFZEJRV0ZCTEVWQlFWVXNRMEZCUXl4SlFVRk5MRWxCUldoRVNTeEZRVUZqTEVOQlFVTkRMRVZCUVV0RExFVkJRVkVzUzBGRGFFTkVMRWxCUVZFc1UwRkJZME1zUjBGQlZVUXNSMEZCVDBnc1IwRkJjMElzUTBGQlEwY3NSVUZCVFVFc1JVRkZkRVVzVFVGQlR5eERRVU5NTEVOQlEwVXNUVUZCVDBRc1JVRkJXVWNzUjBGQlkySXNRMEZCVHl4RFFVRkRMRVZCUTNwRExFOUJRVkZWTEVWQlFWbEhMRWRCUVdOYUxFTkJRVkVzUTBGQlF5eEZRVU16UXl4TlFVRlBVeXhGUVVGWlJ5eEhRVUZqV0N4RFFVRlBMRU5CUVVNc1JVRkRla01zUzBGQlRWRXNSVUZCV1Vjc1IwRkJZMVlzUTBGQlRTeERRVUZETEVWQlEzWkRMRTFCUVU5UExFVkJRVmxITEVkQlFXTlVMRU5CUVU4c1EwRkJReXhGUVVONlF5eFJRVUZUVFN4RlFVRlpSeXhIUVVGalVpeERRVUZUTEVOQlFVTXNSVUZETjBNc1VVRkJVMHNzUlVGQldVY3NSMEZCWTFBc1EwRkJVeXhGUVVGSFFTeEpRVUZqTEVsQlFVa3NSVUZEYWtVc1lVRkJZMGtzUlVGQldYSkNMRWRCUVZsclFpeERRVUZsTEVWQlFVZEZMRU5CUVdVc1EwRkRla1VzUTBGRFJpeERRVU5HTEVOQlMwRXNTVUZCVFVzc1IwRkJZU3hEUVVOcVFpeEpRVUZMTEVWQlEwd3NTVUZCU3l4SFFVRkxMRWRCUTFZc1NVRkJTeXhIUVVGTExFZEJRMVlzU1VGQlN5eEhRVUZMTEVkQlExWXNTVUZCU3l4SFFVRkxMRWRCUTFZc1NVRkJTeXhIUVVGTExFZEJRMVlzU1VGQlN5eEhRVUZMTEVkQlExWXNTVUZCU3l4SFFVRkxMRWRCUTFZc1NVRkJTeXhIUVVGTExFVkJRMW9zUlVGRlFTeFRRVUZUUXl4SFFVRlpReXhGUVVGWmFFSXNSVUZCVTBNc1JVRkJWVVVzUlVGQlVVTXNSVUZCVTBNc1JVRkJWME1zUlVGQlZ5eERRVU42Uml4SlFVRk5WeXhGUVVGVExFTkJRMklzUzBGQlRXcENMRVZCUVZFc1UwRkJWeXhGUVVGSmEwSXNSMEZCWld4RUxFZEJRV0ZuUXl4RFFVRlBMRU5CUVVNc1JVRkJTV2hETEVkQlFXRm5ReXhEUVVGUExFVkJRM3BHTEUxQlFXVnRRaXhIUVVGWkxGRkJRVkZzUWl4RFFVRlJMRVZCUVVrc1JVRkRMME1zU1VGQlMycERMRWRCUVdGdFF5eERRVUZOTEVWQlEzaENMRXRCUVUxdVF5eEhRVUZoYjBNc1EwRkJUeXhGUVVNeFFpeFBRVUZSY0VNc1IwRkJZWEZETEVOQlFWTXNRMEZEYUVNc1JVRkZRU3hQUVVGSlF5eEpRVUZYVnl4RlFVRlBMRTlCUVZOcVJDeEhRVUZoYzBNc1EwRkJVeXhIUVVOcVJGVXNTVUZEUmtNc1JVRkJUeXhSUVVOTVJDeEZRVUZYTEU5QlFWTXNSVUZEVWtrc1IwRkJZU3hSUVVGUlNpeERRVUZWTEVWQlFVa3NSVUZEYmtOTExFZEJRV01zVVVGQlVVd3NRMEZCVlN4RlFVRkpMRWRCUnpkRFF5eERRVU5VTEVOQlIwRXNTVUZCVFVzc1IwRkJWU3hyVFVGRmFFSXNVMEZCVTBNc1IwRkJaVEZFTEVWQlFVOHNRMEZETjBJc1IwRkJUU3hEUVVOR0xFTkJRMEZ0UkN4RlFVTkJZaXhGUVVOQlJpeEZRVU5CUkN4RlFVTkJTU3hGUVVOQlF5eEZRVU5CUXl4RlFVTkJhMElzUlVGRFFVTXNSVUZEUVVNc1JVRkRRVU1zUTBGRFJpeEZRVUZKT1VRc1JVRkRTbTlFTEVWQlFWTkdMRWRCUVZsRExFVkJRVmxvUWl4RlFVRlRReXhGUVVGVlJTeEZRVUZSUXl4RlFVRlRReXhGUVVGWFF5eERRVUZUTEVWQlJYWkdjMElzUlVGRFNpeFBRVUZKU2l4RlFVTkdTU3hGUVVGVFpDeEhRVUZYVlN4RFFVRlRMRVZCUTNCQ1F5eEZRVU5VUnl4RlFVRlRMRVZCUlZSQkxFVkJRVk51UXl4SFFVRmhhVU1zUlVGQldVTXNRMEZCV1N4RlFVZDZReXhEUVVGRFZpeEZRVUZSTEVsQlFVbDJRaXhIUVVGblFtdERMRU5CUVUwc1EwRkJReXhEUVVNM1F5eERRVVZCTEZOQlFWTkRMRWRCUVd0Q2RFVXNSVUZCUnl4RFFVVTFRaXhQUVVGUFFTeEZRVU5LTEZGQlFWRXNjVUpCUVhOQ0xFZEJRVWNzUlVGRGFrTXNVVUZCVVN4WFFVRlpMRWRCUVVjc1JVRkRka0lzUzBGQlN5eERRVU5XTEVOQlNVRXNTVUZCVFhWRkxFZEJRVlVzTmtoQlEyUkRMRWRCUVZNc2VVcEJRMVJETEVkQlFWRXNORWhCUlZZc1UwRkJVME1zUjBGQmIwSndSU3hGUVVGUExFTkJRMnhETEVkQlFVMHNRMEZCUXl4RFFVRkZiVVFzUlVGQldXSXNSVUZCVVVZc1JVRkJWVVFzUlVGQlUwa3NSVUZCVTBNc1JVRkJWME1zUTBGQlV5eEZRVUZKZWtNc1JVRkZha1lzVFVGQlR5eERRVVJKYTBRc1IwRkJXVU1zUlVGQldXaENMRVZCUVZORExFVkJRVlZGTEVWQlFWRkRMRVZCUVZORExFVkJRVmRETEVOQlFWTXNSVUZETTBWYUxFZEJRV2RDTEZkQlFWY3NRMEZETjBNc1EwRkZRU3hUUVVGVGQwTXNSMEZCWVhKRkxFVkJRVThzUTBGRE0wSXNSMEZCVFN4RFFVRkRMRU5CUVVWdFJDeEZRVUZaWml4RlFVRlZSU3hGUVVGUlF5eEZRVUZUUXl4RlFVRlhReXhGUVVGWFRpeERRVUZQTEVWQlFVbHVReXhGUVVWcVJpeE5RVUZQTEVOQlJFbHJSQ3hIUVVGWlF5eEZRVUZaYUVJc1JVRkJVME1zUlVGQlZVVXNSVUZCVVVNc1JVRkJVME1zUlVGQlYwTXNRMEZCVXl4RlFVTXpSVm9zUjBGQlowSXNWMEZCVnl4RFFVTTNReXhEUVVWQkxFbEJRVTE1UXl4SFFVRXJRalZHTEVkQlFXVm5ReXhIUVVGaFJDeEZRVUZ4UWl4RlFVTm9SamhFTEVkQlFXZEROMFlzUjBGQlpXbERMRWRCUVdOR0xFVkJRWEZDTEVWQlEyeEdLMFFzUjBGQmJVTTVSaXhIUVVGbGEwTXNSMEZCYVVKSUxFVkJRWEZDTEVWQlEzaEdaMFVzUjBGQmRVSXZSaXhIUVVGbE9FSXNSVUZCV1N4RlFVVnNSR3RGTEVkQlFUWkNOVVlzUjBGRGFrTjNReXhIUVVOQlF5eEhRVU5CUlN4SFFVTkJTeXhGUVVOR0xFVkJRMDAyUXl4SFFVRTRRamRHTEVkQlEyeERLMElzUjBGRFFWVXNSMEZEUVVVc1IwRkRRVXNzUlVGRFJpeEZRVU5OT0VNc1IwRkJLMEk1Uml4SFFVTnVRMmRETEVkQlEwRlRMRWRCUTBGRkxFZEJRMEZMTEVWQlEwWXNSVUZEVFN0RExFZEJRVEJDTDBZc1IwRkRPVUo1UXl4SFFVTkJSU3hIUVVOQlN5eEZRVU5HTEVWQlRVOHNVMEZCVTJkRUxFZEJRV0Z3Uml4RlFVRkhMRU5CUXpsQ0xFOUJRVTlFTEVkQlEweERMRVZCUTBFc1EwRkJRelJGTEVkQlFUaENTU3hGUVVFd1FpeEZRVU42UkN4RFFVRkRTQ3hIUVVFclFra3NSVUZCTWtJc1JVRkRNMFFzUTBGQlEwZ3NSMEZCYTBOSkxFVkJRVFJDTEVWQlF5OUVMRU5CUVVOSUxFZEJRWE5DU1N4RlFVRjFRaXhEUVVOb1JDeERRVU5HTEVOQlJVOHNVMEZCVTBVc1IwRkJhVUp5Uml4RlFVRkhMRU5CUTJ4RExFOUJRVTlFTEVkQlFVMTFSU3hIUVVGclFuUkZMRU5CUVVNc1JVRkJSeXhEUVVGREswUXNSMEZCVTBNc1JVRkJZeXhEUVVGRExFTkJRemxFTEVOQlJVOHNVMEZCVTNOQ0xFZEJRV04wUml4RlFVRkhMRU5CUXk5Q0xFOUJRVTlFTEVkQlEweERMRVZCUTBFc1EwRkJRM1ZGTEVkQlFWTkhMRVZCUVcxQ0xFVkJRemRDTEVOQlFVTkdMRWRCUVZGRkxFVkJRVzFDTEVWQlF6VkNMRU5CUVVORUxFZEJRVTlGTEVWQlFWa3NRMEZEZEVJc1EwRkRSaXhEUVVWUExGTkJRVk5aTEVkQlFXbENka1lzUlVGQlJ5eERRVU5zUXl4UFFVRlBSQ3hIUVVGTlF5eEZRVUZITEVOQlFVTjFReXhIUVVGaFF5eEZRVUZyUWl4RFFVRkRMRU5CUTI1RUxFTkJSVUVzU1VGQlRXZEVMRWRCUVhGQ2NFY3NSMEZCYTBKNVF5eEZRVUZqTEVWQlJYQkVMRk5CUVZNMFJDeEhRVUZwUW5wR0xFVkJRVWNzUTBGRGJFTXNUMEZCVDBRc1IwRkJUVU1zUlVGQlJ5eERRVUZEYzBNc1IwRkJZV3RFTEVWQlFXdENMRU5CUVVNc1EwRkRia1FzUTBGRlFTeEpRVUZOUlN4SFFVRXJRakZITEVkQlFXVnhReXhIUVVGaFJTeEZRVUZ4UWl4RlFVTm9SbTlGTEVkQlFYVkNNMGNzUjBGQlpYTkRMRVZCUVZrc1JVRkZiRVJ6UlN4SFFVRnJRM2hITEVkQlEzUkRlVU1zUjBGRFFVVXNSMEZEUVVzc1JVRkRSaXhGUVVWUExGTkJRVk41UkN4SFFVRlROMFlzUlVGQlJ5eERRVU14UWl4UFFVRlBSQ3hIUVVOTVF5eEZRVU5CTEVOQlFVTXdSaXhIUVVFNFFsWXNSVUZCTUVJc1JVRkRla1FzUTBGQlExY3NSMEZCYzBKRExFVkJRU3RDTEVOQlEzaEVMRU5CUTBZc1EwTnNWVUVzU1VGQlRVVXNSMEZCVlN4dFFrRkhTRU1zUjBGQmFVSXNRMEZETVVJc1RVRkJUeXhEUVVOTUxFdEJRVTBzUlVGRFRpeE5RVUZQTEVWQlFVa3NSMEZEV0N4UlFVRlRMRVZCUVVrc1IwRkJTeXhIUVVOc1FpeFJRVUZUTEVWQlFVa3NSMEZCU3l4SFFVRkxMRWRCUTNaQ0xHRkJRV01zUlVGQlNTeEhRVUZMTEVkQlFVc3NSMEZCU3l4SFFVTnVReXhGUVVOQkxFdEJRVTBzUTBGRFNpeE5RVUZQTEVkQlExQXNVVUZCVXl4SFFVRkxMRWRCUTJRc1VVRkJVeXhIUVVGTExFZEJRVXNzUjBGRGJrSXNZVUZCWXl4SFFVRkxMRWRCUVVzc1IwRkJTeXhIUVVNdlFpeEZRVU5CTEUxQlFVOHNRMEZCUlN4UlFVRlRMRWRCUVVrc1VVRkJVeXhIUVVGTExFZEJRVWtzWVVGQll5eEhRVUZMTEVkQlFVc3NSMEZCU3l4RlFVTnlSU3hSUVVGVExFTkJRVVVzVVVGQlV5eEhRVUZKTEdGQlFXTXNSMEZCU3l4SFFVRkxMRVZCUTJoRUxGRkJRVk1zUTBGQlJTeGhRVUZqTEVkQlFVc3NRMEZEYUVNc1JVRkRRVU1zUjBGQlpVTXNSVUZCUVN4RFFVTmlMRTFCUVU4c1EwRkRUQ3hUUVVGVkxFVkJRMVlzVDBGQlVTeEhRVU5TTEUxQlFVOHNSMEZEVUN4TFFVRk5MRWxCUTA0c1RVRkJUeXhKUVVGTkxFZEJRMklzVVVGQlV5eEpRVUZOTEVkQlFVc3NSMEZEY0VJc1VVRkJVeXhKUVVGTkxFZEJRVXNzUjBGQlN5eEhRVU42UWl4aFFVRmpMRWxCUVUwc1IwRkJTeXhIUVVGTExFZEJRVXNzUjBGRGNrTXNSVUZEUVN4VFFVRlZMRU5CUTFJc1QwRkJVU3hGUVVOU0xFMUJRVThzUjBGRFVDeExRVUZOTEVkQlEwNHNUVUZCVHl4SFFVRkxMRWRCUTFvc1VVRkJVeXhIUVVGTExFZEJRVXNzUjBGRGJrSXNVVUZCVXl4SFFVRkxMRWRCUVVzc1IwRkJTeXhIUVVONFFpeGhRVUZqTEVkQlFVc3NSMEZCU3l4SFFVRkxMRWRCUVVzc1IwRkRjRU1zUlVGRFFTeFBRVUZSTEVOQlEwNHNUVUZCVHl4RlFVTlFMRXRCUVUwc1IwRkRUaXhOUVVGUExFZEJRVXNzUjBGRFdpeFJRVUZUTEVkQlFVc3NSMEZCU3l4SFFVTnVRaXhSUVVGVExFZEJRVXNzUjBGQlN5eEhRVUZMTEVkQlEzaENMR0ZCUVdNc1IwRkJTeXhIUVVGTExFZEJRVXNzUjBGQlN5eEhRVU53UXl4SFFVVkhSaXhKUVVWTVJ5eEhRVUZ4UWl4UFFVRlhMRWxCUTJoRFF5eEhRVUZ6UWl4UFFVRlhMRXRCUTJwRFF5eEhRVUZwUWtnc1JVRkJRU3hEUVVObUxFMUJRVThzUTBGRFRDeFRRVUZWTEVWQlExWXNUMEZCVVN4SFFVTlNMRTFCUVU5RExFZEJRWEZDTEVWQlF6VkNMRXRCUVUxQkxFZEJRMDRzVFVGQlQwRXNSMEZCY1VJc1IwRkROVUlzVVVGQlUwRXNSMEZCY1VJc1IwRkJTeXhIUVVOdVF5eFJRVUZUUVN4SFFVRnhRaXhIUVVGTExFZEJRVXNzUjBGRGVFTXNZVUZCWTBFc1IwRkJjVUlzUjBGQlN5eEhRVUZMTEVkQlFVc3NSMEZEY0VRc1JVRkRRU3hUUVVGVkxFTkJRMUlzVDBGQlVTeEZRVU5TTEUxQlFVOUJMRWRCUVhGQ0xFZEJRelZDTEV0QlFVMUJMRWRCUVhGQ0xFVkJRek5DTEUxQlFWRkJMRWRCUVhGQ0xFZEJRVTBzUlVGRGJrTXNVVUZCVlVFc1IwRkJjVUlzUjBGQlN5eEhRVUZOTEVWQlF6RkRMRkZCUVZWQkxFZEJRWEZDTEVkQlFVc3NSMEZCU3l4SFFVRk5MRVZCUXk5RExHRkJRV1ZCTEVkQlFYRkNMRWRCUVVzc1IwRkJTeXhIUVVGTExFbEJRVkVzUTBGRE4wUXNSVUZEUVN4UFFVRlJMRU5CUTA0c1RVRkJUME1zUjBGQmMwSXNSVUZETjBJc1MwRkJUVUVzUjBGRFRpeE5RVUZQUVN4SFFVRnpRaXhIUVVNM1FpeFJRVUZUUVN4SFFVRnpRaXhIUVVGTExFZEJRM0JETEZGQlFWTkJMRWRCUVhOQ0xFZEJRVXNzUjBGQlN5eEhRVU42UXl4aFFVRmpRU3hIUVVGelFpeEhRVUZMTEVkQlFVc3NSMEZCU3l4SFFVTnlSQ3hIUVVOSFNpeEpRVWxFVFN4SFFVRmxMRU5CUTI1Q0xGRkJRMEVzVjBGRFFTeFRRVU5CTEZGQlEwRXNUMEZEUVN4UlFVTkJMRlZCUTBFc1ZVRkRRU3hqUVVOR0xFVkJSVTFETEVkQlFXVkVMRWRCUVdFc1RVRkJUU3hEUVVGRExFVkJRVVVzVVVGQlVTeEZRVWR1UkN4VFFVRlRSU3hIUVVGTlF5eEZRVUZMUXl4RlFVRk5ReXhGUVVGUkxFZEJRVThzUTBGRmRrTXNTVUZCVFVNc1JVRkJUeXhEUVVOWUxFOUJRVkZFTEVWQlFWRkVMRVZCUVVzc1QwRkJVMUlzU1VGQlFTeEhRVUZMVHl4RlFVRkpMRkZCUVZsRExFVkJRVXNzVVVGQlZTeERRVUZETEVkQlEyNUZMRWxCUVV0RUxFVkJRVWtzU1VGQlNTeE5RVUZOUXl4RlFVRkxMRWRCUVVjc1JVRkRNMElzYlVKQlFXOUNRU3hGUVVGTExHOUNRVUZ6UWtRc1JVRkJTU3hyUWtGRGNrUXNSVUZEUVN4UFFVRlBMRWxCUVVsSkxFVkJRVk5FTEVOQlFVa3NRMEZETVVJc1EwRkZRU3hUUVVGVFJTeEhRVUZWTEVWQlFVY3NRMEZEY0VJc1QwRkJUeXhGUVVGSkxFVkJRVWtzUzBGQlN5eE5RVUZOTEVOQlFVTXNSVUZCU1N4TFFVRkxMRXRCUVVzc1EwRkJReXhEUVVNMVF5eERRVWRCTEZOQlFWTkRMRWRCUVZGRExFVkJRVkZETEVWQlFWTkRMRVZCUVZWRExFVkJRVTlETEVWQlFWRXNRMEZEZWtRc1NVRkJUVU1zUlVGQlQwd3NSVUZCVDBrc1EwRkJUU3hGUVVGRlJpeERRVUZSTEVWQlEyeERTU3hGUVVGTlRDeEZRVUZSUXl4RFFVRlJMRVZCUVVsSExFVkJRekZDUlN4RlFVRlhMRXRCUVVzc1MwRkJTMFFzUTBGQlJ5eEpRVUZOTEV0QlFVc3NTMEZCUzBnc1JVRkJUVU1zUTBGQlRTeERRVUZETEVWQlJYSkVTU3hGUVVORkxFTkJRVU5FTEVkQlFWbEtMRVZCUVUxRExFTkJRVTBzU1VGQlRTeEhRVUZMTEV0QlFVc3NTVUZCU1VVc1EwRkJSeXhIUVVGTExFVkJRVWxTTEVkQlFWVlJMRU5CUVVjc1JVRkJTU3hMUVVGTExFMUJRVTFCTEVOQlFVY3NSVUZETlVaSUxFVkJRVTFETEVOQlFVMHNSMEZCUzBrc1JVRkRha0pRTEVWQlFWRkRMRU5CUVZFc1IwRkJTMDBzUlVGQlVVZ3NRMEZETDBJc1EwRkhRU3hUUVVGVFNTeEhRVUZuUWxRc1JVRkJVVlVzUlVGQlRTeERRVU55UTI1Q0xFZEJRV0VzVDBGQlR5eERRVUZEYjBJc1JVRkJWVU1zU1VGRGVFSkRMRVZCUVZsSUxFVkJRVXRGTEVOQlFVOHNRMEZCUXl4RlFVMXlRa1FzUjBGTVNFRXNSMEZEUmxvc1IwRkJVVU1zUlVGQlVWVXNSVUZCVFVNc1JVRkJWVVFzUlVGQlRVVXNRMEZCVHl4RlFVVjRRMEVzUjBGSlVpeEpRVUZKTEVOQlExUXNRMEZsUVN4SlFVRnhRbVlzUlVGQmNrSXNUVUZCY1VKcFFpeERRVUZUTEVOQlNUVkNMRmxCUVZsRExFVkJRVkVzUTBGRGJFSXNTVUZCVFVNc1JVRkJWMFFzUlVGQlR5eHhRa0ZCZFVJc1dVRkJZeXhIUVVrM1JDeExRVUZMTEU5QlFWTkJMRVZCUVU4c1QwRkpja0lzUzBGQlN5eEpRVUZOUVN4RlFVRlBMRXRCUVU5RkxFZEJRVThzVDBGQlR5eEZRVWwyUXl4TFFVRkxMRzFDUVVGeFFrUXNSVUZCVnl4WFFVRmhMRk5CU1d4RUxFdEJRVXNzVVVGQlZVUXNSVUZCVHl4VFFVRlhMRXRCU1dwRExFdEJRVXNzVDBGQlUwTXNSVUZCVnpOQ0xFZEJRV2xDU2l4SFFVa3hReXhMUVVGTExHZENRVUZyUWl4RlFVTjZRaXhEUVZkQkxFOUJRVThzVjBGQlYybERMRVZCUVU5RExFVkJRVTBzUTBGRE4wSXNUMEZCVDB3c1JVRkJVeXhYUVVGWExFTkJRVVVzWVVGQlkwa3NRMEZCVFN4RlFVRkhReXhEUVVGSkxFTkJRekZFTEVOQmNVSkJMRTlCUVU4c1YwRkJWME1zUlVGQlMwUXNSVUZCVHl4RFFVRkRMRVZCUVVjc1EwRkRhRU1zUjBGQlNVTXNSMEZCVHl4TlFVRlJMRTlCUVU5QkxFZEJRVkVzVTBGRGFFTXNUVUZCVFN4SlFVRkpReXhIUVVOU0xDdEVRVU5GUkN4SlFVRlJMRXRCUVU4c1QwRkJVeXhQUVVGUFFTeERRVU5xUXl4RlFVTkdMRVZCUjBZc1QwRkJUeXhKUVVGSlRpeEZRVUZUTEVOQlEyeENMRTlCUVZGUkxFZEJRV2RDUml4RlFVRkxUaXhGUVVGVExHRkJRV0VzUlVGRGJrUXNTVUZCUzBjc1IwRkJUeXhYUVVGWFJTeERRVUZKTEVWQlF6TkNMRzFDUVVGdlFrRXNSVUZCU3l4clFrRkRNMElzUTBGQlF5eERRVU5JTEVOQldVRXNUMEZCVHl4cFFrRkJhVUpKTEVWQlFXTXNRMEZEY0VNc1IwRkJTVU1zUjBGQlUwUXNRMEZCV1N4RlFVTjJRaXhQUVVGUFZDeEZRVUZUTEZkQlFWZFRMRU5CUVZrc1JVRkRiRU1zUjBGQlNWUXNSVUZCVXl4WFFVRlhVeXhEUVVGWkxFVkJRM3BETEU5QlFVOUJMRVZCUTBZc1IwRkJTU3hQUVVGUFFTeEhRVUZwUWl4VFFVTnFReXhQUVVGUFZDeEZRVUZUTEZkQlFWZFRMRU5CUVZrc1JVRkZka01zVFVGQlRTeEpRVUZKUml4SFFVTlNMRFpDUVVFMlFrVXNRMEZCV1N4WlFVRlpMRTlCUVU5QkxFTkJRVmtzUlVGRE1VVXNRMEZGU2l4RFFXVkJMRTlCUVU4c1VVRkJVVVVzUlVGQlRVNHNSVUZCVFN4RFFVTjZRaXhIUVVGTkxFTkJRVU5QTEVOQlFVMHNSVUZCU1VNc1IwRkJhVUpHTEVOQlFVa3NSVUZEZEVNc1QwRkJTVU1zUlVGRFMxb3NSVUZCVXl4WFFVRlhXU3hGUVVGUlVDeERRVUZKTEVWQlJXaERUQ3hGUVVGVExGRkJRVkVzWVVGQll5eGpRVUZqVnl4RFFVRkpMQ3RDUVVFclFpeERRVVV6Uml4RFFXbENRU3hQUVVGUExGbEJRVmxCTEVWQlFVMU9MRVZCUVUwc1EwRkROMElzUjBGQlRTeERRVUZEVHl4RFFVRk5MRVZCUVVsRkxFZEJRV2xDU0N4RFFVRkpMRVZCUTNSRExFOUJRVWxETEVWQlEwdGFMRVZCUVZNc1YwRkJWMWtzUlVGQlVWQXNRMEZCU1N4RlFVVm9RMHdzUlVGQlV5eFJRVUZSTEdGQlFXTXNZMEZCWTFjc1EwRkJTU3dyUWtGQkswSXNRMEZGTTBZc1EwRlJRU3hQUVVGUExGRkJRVkZKTEVWQlFWRkRMRVZCUVdNc1MwRkJUU3hEUVVONlF5eEhRVUZKTEVOQlFVTkVMRVZCUTBnc1RVRkJUU3hKUVVGSlVpeEhRVUZ4UWl4clJFRkJhMFFzUlVGSGJrWXNTVUZCVFZVc1JVRkJWVVlzWVVGQmEwSkhMRWRCUVZWSUxFVkJRVk1zU1VGQlNVY3NSMEZCVVVnc1JVRkJVVU1zUTBGQlZ5eEZRVVZ3Uml4SFFVRkpSeXhGUVVGVExHVkJRMWdzVFVGQlRTeEpRVUZKUXl4SFFVRnhRa2dzUTBGQlR5eEZRVVYwUXl4UFFVRlBMRWxCUVVscVFpeEZRVUZUTEVOQlFVVXNVVUZCUVdsQ0xFTkJRVkVzUTBGQlF5eERRVVZ1UXl4RFFVdEJMRTlCUVU4c1kwRkJZMGtzUlVGQlRTeERRVU42UWl4SlFVRk5ReXhGUVVGaExFTkJRMnBDTEV0QlFVMHNVVUZEVGl4TlFVRlBMRkZCUTFBc1VVRkJVeXhYUVVOVUxGTkJRVlVzVjBGRFZpeE5RVUZQTEZOQlExQXNUMEZCVVN4VFFVTlNMRXRCUVUwc1VVRkRUaXhOUVVGUExGRkJRMUFzU1VGQlN5eFBRVU5NTEV0QlFVMHNUMEZEVGl4TFFVRk5MRkZCUTA0c1RVRkJUeXhSUVVOUUxFOUJRVkVzVlVGRFVpeFJRVUZUTEZWQlExUXNUMEZCVVN4VlFVTlNMRkZCUVZNc1ZVRkRWQ3haUVVGaExHVkJRMklzWVVGQll5eGpRVU5vUWl4RlFVRkZSQ3hIUVVGUFFTeEZRVUZMTEZsQlFWa3NRMEZCVVN4RlFVVnNReXhIUVVGSkxFTkJRVU5ETEVWQlFWa3NUVUZCVFN4SlFVRkpReXhIUVVGcFFrWXNRMEZCU1N4RlFVVm9SQ3hQUVVGUFF5eERRVU5VTEVOQlQwRXNUMEZCVHl4WFFVRlhSU3hGUVVGSExFTkJRMjVDTEU5QlFWRkJMRWRCUVV0QkxFVkJRVVVzYVVKQlFXOUNMRVZCUTNKRExFTkJUVUVzU1VGQlNTeFJRVUZUTEVOQlExZ3NUMEZCVHl4TFFVRkxMRkZCUVZVc1MwRkJTeXhKUVVGSkxFOUJRVk1zU1VGRE1VTXNRMEZQUVN4SlFVRkpMR2xDUVVGclFpeERRVU53UWl4UFFVRlBMRXRCUVVzc1VVRkJWU3hMUVVGTExFbEJRVWtzWjBKQlFXdENMRWxCUTI1RUxFTkJkMEpCTEZOQlFWTkRMRVZCUVV0d1FpeEZRVUZQTEVOQlFVTXNSVUZCUnl4RFFVVjJRaXhKUVVGTmNVSXNSVUZCVlVNc1IwRkJRWFpFTEVWQlFVRXNSMEZEV0dsRExFZEJSRmNzUTBGRlpDeE5RVUZQUVN4RlFVRkxMRkZCUVZVc1NVRkJVMEVzUlVGQlN5eFJRVUZWTEVWQlEyaEVMRWRCUTBFc1QwRkJUeXhMUVVGTExGRkJRMUoxUWl4SFFVRlZMRTlCUVU4c1MwRkJTeXhKUVVGTFJpeERRVUZQTEVWQlFVVXNlVUpCUVhsQ0xFdEJRVTFFTEVOQlFVY3NSVUZEZEVWNFJDeEZRVU5PTEVOQlpVRXNVVUZCVVc5RExFVkJRVThzUTBGQlF5eEZRVUZITEVOQlEycENMRWxCUVUxM1FpeEZRVUZKY2tRc1IwRkRVQ3hKUVVGTE5rTXNSMEZCVXl4RFFVTmlMRWxCUVUxVExFVkJRVTBzUzBGQlN5eFBRVUZQVkN4RFFVRkpMRVZCUXpWQ0xFOUJRVWwwUWl4RlFVRlpLMElzUTBGQlJ5eEZRVU5XTEV0QlJVWXNTMEZCU3l4SlFVTlVMR2RDUVVGblFrZ3NSMEZCUVhaRUxFVkJRVUVzUTBGQlJTeE5RVUZQTEU5QlFWRXNXVUZCWVN4UlFVRlhhVU1zUjBGQmVrTXNRMEZCSzBNc1MwRkJUV2RDTEVWQlFVc3NUVUZCVFN4RlFVRkhMRVZCUVVVc1EwRkJSU3hGUVVGRExFVkJRM2hHTEU5QlFVOVRMRU5CUVVjc1EwRkRaaXhEUVVGRExFVkJRMEVzVDBGQlVVTXNSMEZCVFVFc1EwRkJReXhGUVVWc1FpeFBRVUZQTEV0QlFVc3NTVUZEVkN4alFVRmpNMFFzUlVGQlFTeERRVUZGTEV0QlFVMHNZMEZCWlN4TlFVRlBhVU1zUlVGQlN5eFhRVUZoTEZWQlFXRkJMRVZCUVUwc1JVRkRha1lzVDBGQlQzZENMRU5CUVVNc1EwRkRZaXhEUVU5QkxGVkJRVmNzUTBGRFZDeFBRVUZMTEV0QlFVc3NVVUZEU0hwRUxFVkJRVUVzUjBGQlN5eExRVUZMTEZGQlJGTXNRMEZCUXl4RFFVVTNRaXhEUVZsQkxFOUJRVkVzUTBGRlRpeEhRVUZKTEVOQlFVTXNTMEZCU3l4UlFVRlRMRTlCUVU4c1MwRkZNVUlzU1VGQlNUUkVMRVZCUVVrc1NVRkRVaXhQUVVGSkxFdEJRVXNzVVVGQlZTeEpRVUZIUVN4SFFVRkxMRXRCUVVzc1RVRkJVU3hOUVVOd1F5eExRVUZMTEZOQlFWY3NSMEZCU3l4TFFVRkxMRmRCUVdFc1MwRkJSMEVzUjBGQlN5eExRVUZMTEU5QlFWTXNTMEZCU3l4VFFVRlhMRVZCUVVrc1MwRkRha1lzUzBGQlN5eFJRVUZWTEVsQlFVZEJMRWRCUVVzc1MwRkJTeXhOUVVGUkxFdEJRM0JETEV0QlFVc3NUMEZCVXl4SlFVRkhRU3hIUVVGTExFdEJRVXNzUzBGQlR5eE5RVU5zUXl4TFFVRkxMRkZCUVZVc1IwRkJTeXhMUVVGTExGVkJRVmtzUjBGQlN5eExRVUZMTEZWQlFWa3NSMEZCU3l4TFFVRkxMR1ZCUVdsQ0xFdEJRM2hHUVN4SFFVRkxMRXRCUTBnc1MwRkJTeXhSUVVGVkxFbEJRVWRCTEVkQlFVc3NTMEZCU3l4TlFVRlJMRXRCUTNCRExFdEJRVXNzVlVGQldTeEpRVUZIUVN4SFFVRkxMRXRCUVVzc1VVRkJWU3hOUVVONFF5eExRVUZMTEZWQlFWa3NSMEZCU3l4TFFVRkxMR1ZCUVdsQ0xFdEJSemxEUVN4SFFVRkxReXhIUVVGUkxFdEJRVXNzVVVGQlZTeExRVUZMTEdGQlFXVXNTVUZCVFN4RFFVRkRMRVZCUVVrc1MwRkRla1JFTEVsQlFVMHNUVUZCUzBFc1IwRkJTeXhQUVVOaVFTeERRVU5VTEVOQmEwSkJMRlZCUVZVelFpeEZRVUZQTEVOQlFVTXNSVUZCUnl4RFFVTnVRaXhIUVVGSkxFTkJRVU1zUzBGQlN5eFJRVUZUTEU5QlFVOHNTMEZGTVVJc1NVRkJUVFpDTEVWQlFWTXNTMEZCU3l4VFFVRlRMRVZCUXpkQ0xFZEJRVWxCTEVWQlFWTXNSMEZCUzBFc1IwRkJWU3hOUVVGVkxFOUJRVThzUzBGRk4wTTNRaXhGUVVGUGFrTXNSVUZCUVN4RFFVTk1MSEZDUVVGelFpeEhRVU4wUWl4blFrRkJhVUlzUjBGRGFrSXNZMEZCWlN4SFFVTm1MRTlCUVZFc1dVRkRUR2xETEVkQlIwd3NTVUZCVFRoQ0xFVkJRVkVzUzBGQlN5eFJRVUZSTEZGQlFWTXNWVUZCVnl4VlFVRlhMR05CUVdNc1JVRkZjRVZXTEVWQlFVMXdRaXhGUVVGTExGTkJRVmNzVVVGQlZTeFBRVUZUTEZOQlJYcERMRU5CUVVOQkxFVkJRVXNzYVVKQlFXMUNPRUlzUlVGQlRTeFZRVUZaTEVkQlFVdEJMRVZCUVUwc1pVRkJhVUlzUzBGRGVrVldMRWRCUVU5d1FpeEZRVUZMTEZOQlFWY3NVVUZCVlN4TFFVRlBMRTlCUTNCRExFTkJRVU5CTEVWQlFVc3NjMEpCUVhkQ09FSXNSVUZCVFN4bFFVRnBRaXhMUVVOMlJGWXNSMEZCVHl4VFFVbFlMRWxCUVVsWExFVkJRVTFFTEVWQlFVMHNVMEZCVTFZc1EwRkJSeXhGUVVVMVFpeFBRVUZKY0VJc1JVRkJTeXhuUWtGRFVDdENMRVZCUVUwc1NVRkJUVUVzUjBGSFVFRXNRMEZEVkN4RFFVMUJMRkZCUVZNc1EwRkRVQ3hQUVVGUExFdEJRVXNzVFVGQlRTeERRVU53UWl4RFFVMUJMRlZCUVZjc1EwRkRWQ3hQUVVGUExFdEJRVXNzVFVGQlRTeERRVU53UWl4RFFVMUJMRlZCUVZjc1EwRkRWQ3hQUVVGUExFdEJRVXNzUjBGQlJ5eGpRVUZqTEVOQlF5OUNMRU5CVFVFc1UwRkJWU3hEUVVOU0xFOUJRVThzUzBGQlN5eFRRVUZUTEVOQlEzWkNMRU5CVDBFc1MwRkJTME1zUlVGQlZTeERRVU5pTEVkQlFVa3NRMEZCUXl4TFFVRkxMRkZCUVZNc1QwRkJUeXhMUVVVeFFpeEpRVUZOTVVRc1JVRkJUWEZDTEVWQlFWTXNhVUpCUVdsQ2NVTXNRMEZCVVN4RlFVTTFRME1zUlVGQlV5eERRVUZETEVWQlJWb3NVVUZCVjBNc1MwRkJTeTlFTEVsQlExWm5SU3hIUVVGbE4wUXNSVUZCU1N4UFFVRlJORVFzUTBGQlF5eEhRVUZMUXl4SFFVRmxMRXRCUVVzc1QwRkJVVVFzUTBGQlF5eExRVU5vUlVRc1JVRkJUME1zUTBGQlF5eEZRVUZKTlVRc1JVRkJTU3hKUVVGSk5FUXNRMEZCUXl4RlFVRkpMRXRCUVVzc1NVRkJTVUVzUTBGQlF5eEhRVWwyUXl4UFFVRlBOMFFzUjBGQlRTeExRVUZOTEVOQlFVVXNUMEZCVVRSRUxFTkJRVThzUlVGQlJ5eEZRVUZKTEVOQlF6ZERMRU5CVDBFc1RVRkJUVVFzUlVGQlZTeERRVU5rTEVkQlFVa3NRMEZCUXl4TFFVRkxMRkZCUVZNc1QwRkJUeXhMUVVVeFFpeEpRVUZOTVVRc1JVRkJUWEZDTEVWQlFWTXNhVUpCUVdsQ2NVTXNRMEZCVVN4RlFVTTVReXhQUVVGUExFdEJRVXNzUzBGQlN6RkVMRVZCUVVrc1QwRkJUeXhEUVVGRExFTkJReTlDTEVOQlUwRXNVMEZCVXpoRUxFVkJRVWtzUTBGRFdDeEhRVUZKTEVOQlFVTXNTMEZCU3l4UlFVRlRMRTlCUVU4c1MwRkRNVUlzU1VGQlRVZ3NSVUZCVXl4RFFVRkRMRVZCUTJoQ0xGRkJRVmRETEV0QlFVc3NUMEZCVHl4TFFVRkxMRXRCUVVzc1RVRkJUU3hGUVVOeVEwUXNSVUZCVDBNc1EwRkJReXhGUVVGSlJ5eEhRVUZUUkN4RlFVRkhMRXRCUVVzc1QwRkJUMFlzUTBGQlF5eEZRVUZIUVN4RFFVRkRMRU5CUVVNc1JVRkZOVU1zVDBGQlR6ZEVMRWRCUVUwc1MwRkJUU3hEUVVGRkxFOUJRVkUwUkN4RFFVRlBMRVZCUVVjc1JVRkJTU3hEUVVNM1F5eERRVlZCTEVsQlFVbHFRaXhGUVVGTkxFTkJRMUlzVDBGQlR5eExRVUZMY2tJc1JVRkJVeXhqUVVGamNVSXNRMEZCU1N4RFFVRkRMRU5CUXpGRExFTkJVMEVzU1VGQlNYTkNMRVZCUVZFc1EwRkRWaXhIUVVGSkxFTkJRVU1zUzBGQlN5eFJRVUZUTEU5QlFVOHNTMEZGTVVJc1NVRkJUVU1zUlVGQlVYaEZMRWxCUVVFc1IwRkJTeXhMUVVGTExGRkJRVmR2UXl4SFFVRm5RbTFETEVWQlFWRXpReXhGUVVGVExHRkJRV0VzUjBGRGFrWXNUMEZCVDNSQ0xFZEJRVTBzUzBGQlRTeERRVUZGTEU5QlFWRnJSU3hEUVVGTkxFTkJRVU1zUTBGRGRFTXNRMEZQUVN4WlFVRlpMRU5CUVVVc1QwRkJRVU1zUlVGQlVTeG5Ra0ZCUVVNc1JVRkJhVUlzYlVKQlFVRkRMRU5CUVcxQ0xFVkJRVWtzUTBGQlF5eEZRVUZITEVOQlEyaEZMRWxCUVUxRExFVkJRVTBzUzBGQlN5eEpRVUZKTEUxQlFVMHNRMEZCUlN4UFFVRkJTQ3hGUVVGUkxHZENRVUZCUXl4RFFVRm5RaXhEUVVGRExFVkJRM0JFZWtNc1JVRkJUeXhEUVVGRkxFbEJRVUV5UXl4RFFVRkpMRVZCUldZc1QwRkJTVVFzU1VGRFJqRkRMRVZCUVVzc2JVSkJRWEZDTUVNc1IwRkhja0p5UlN4SFFVRk5MRXRCUVUweVFpeERRVUZKTEVOQlEzcENMRU5CVlVFc1IwRkJSMmRDTEVWQlFVMHNRMEZEVUN4UFFVRlBMRXRCUVVzc1VVRkJWU3hMUVVGTExGRkJRVkZCTEVOQlFVa3NSVUZCUlN4SlFVRkpRU3hEUVVGSkxFVkJRVWtzUjBGRGRrUXNRMEZSUVN4WFFVRlpMRU5CUTFZc1IwRkJTU3hEUVVGRExFdEJRVXNzVVVGQlV5eFBRVUZQTEV0QlF6RkNMRWxCUVUxNlFpeEZRVUZQTEV0QlFVc3NVMEZCVXl4RlFVTXpRaXhQUVVGQlJDeEhRVUZuUWl4TFFVRkxMRTlCUVZGRExFTkJRVWtzUlVGRE1VSnNRaXhIUVVGTkxFdEJRVTBzUTBGQlJTeFBRVUZSYTBJc1EwRkJTeXhGUVVGSExFVkJRVWtzUTBGRE0wTXNRMEZQUVN4WFFVRlhjVVFzUlVGQlR5eERRVU5vUWl4SFFVRkpMRU5CUVVNc1MwRkJTeXhSUVVGVExFOUJRVThzUzBGRk1VSXNSMEZCU1VFc1JVRkJUU3hUUVVGWExFVkJRMjVDTEU5QlFVOHNTMEZIVkVFc1JVRkJVVUVzUlVGQlRTeEpRVUZMUXl4SFFVRk5iRVFzUlVGQlV5eGpRVUZqYTBRc1EwRkJReXhEUVVGRExFVkJSV3hFTEVsQlFVMURMRVZCUVZFc1EwRkJReXhGUVVOaVF5eEZRVUZqTEVOQlFVTXNSVUZEWm5oRUxFVkJRVThzUzBGQlN5eFRRVUZUTEVWQlEyNUNlVVFzUlVGRlNpeFJRVUZYWkN4TFFVRkxMMFFzUjBGRFpDeEhRVUZKZVVVc1JVRkJUU3hSUVVGUlZpeERRVUZETEVkQlFVc3NSVUZCUnl4RFFVTjZRbU1zUlVGQlYyUXNSVUZGV0N4SlFVRkpaU3hGUVVGTkxFVkJSMVlzVVVGQlYwTXNTMEZCVFVnc1JVRkRaa1VzUjBGQlR5eExRVUZMTEU5QlFVOURMRU5CUVVVc1JVRkJSV2hDTEVOQlFVTXNSVUZCU1dFc1JVRkJXVWNzUTBGQlJTeEZRVU14UTBnc1JVRkJXVWNzUTBGQlJTeEZRVUZKTEVWQlNXaENOME1zUjBGQlUyUXNSVUZCU3pKRExFTkJRVU1zUTBGQlF5eEpRVU5zUW1Vc1IwRkJUekZFTEVWQlFVc3lReXhEUVVGRExFZEJSMllzU1VGQlRXbENMRVZCUVVrc1MwRkJTeXhOUVVGTlJpeERRVUZITEVWQlEzaENTQ3hGUVVGTldpeERRVUZETEVWQlFVbHBRaXhGUVVOWVNpeEZRVUZaWWl4RFFVRkRMRWRCUVV0bExFVkJRVTBzU1VGQlQwVXNSVUZCU1N4TFFVRlJMRWxCUnpORExGRkJRVmRETEV0QlFWRTNSQ3hGUVVOaWNFSXNSMEZCWVN4UlFVRlJhVVlzUTBGQlNTeEZRVUZKYWtZc1IwRkJZU3hSUVVGUkswUXNRMEZCUXl4SFFVTnlSSFJFTEVkQlFWRXNTMEZCU3l4UFFVRlJWeXhGUVVGTk5rUXNSVUZCVFU0c1JVRkJUMW9zUTBGQlF5eERRVWt2UXl4TlFVRlhOMElzUjBGQlUyUXNSVUZCU3pKRExFTkJRVU1zUTBGQlF5eEpRVU42UW1Fc1JVRkJXV0lzUTBGQlF5eEZRVUZKTTBNc1JVRkJTekpETEVOQlFVTXNSMEZOTTBJc1VVRkJWMjFDTEV0QlFVOU9MRVZCUTFwQkxFVkJRVmxOTEVOQlFVY3NTVUZCVFN4SlFVTjJRbEFzUlVGQlRVVXNRMEZCVVN4SFFVTmFTeXhKUVVGUlRDeEZRVUZYUkN4RlFVRlpUU3hEUVVGSExFVkJRVWxPTEVWQlFWbE5MRU5CUVVjc1JVRkJTU3hMUVVGTExFOUJRVTlNTEVOQlFWRXNSVUZCUlVzc1EwRkJSeXhIUVVsNFJpeFBRVUZQYUVZc1IwRkJUU3hMUVVGTkxFTkJRVVVzVDBGQlVYbEZMRU5CUVUwc1JVRkJSeXhGUVVGSkxFVkJRVVVzVlVGQlZTeERRVU40UkN4RFFVOUJMRkZCUVZNc1EwRkRVQ3hIUVVGSkxFTkJRVU1zUzBGQlN5eFJRVUZUTEU5QlFVOHNTMEZETVVJc1NVRkJUVkVzUlVGQlZTeERRVUZETEVWQlEycENMRkZCUVZkd1FpeExRVUZMTEU5QlFVOHNTMEZCU3l4TFFVRkxMRTFCUVUwc1JVRkRja052UWl4RlFVRlJjRUlzUTBGQlF5eEZRVUZKTEV0QlFVc3NUMEZCVDBFc1EwRkJReXhKUVVGTkxFVkJRVWtzUlVGQlNTeERRVUZETEV0QlFVc3NUMEZCVDBFc1EwRkJReXhGUVVWNFJDeFBRVUZQTjBRc1IwRkJUU3hMUVVGTkxFTkJRVVVzVDBGQlVXbEdMRU5CUVZFc1JVRkJSeXhGUVVGSkxFTkJRemxETEVOQlRVRXNTVUZCU1N4UFFVRlJMRU5CUTFZc1QwRkJUeXhMUVVGTExGRkJRVlVzUzBGQlN5eFBRVUZQTEU5QlFWTXNSVUZCU1N4SFFVTnFSQ3hEUVUxQkxFbEJRVWtzVlVGQlZ5eERRVU5pTEU5QlFVOHNTMEZCU3l4UlFVRlZMRXRCUVVzc1QwRkJUeXhWUVVGWkxFVkJRVWtzUjBGRGNFUXNRMEZOUVN4SlFVRkpMRkZCUVZNc1EwRkRXQ3hQUVVGUExFdEJRVXNzVVVGQlZTeExRVUZMTEU5QlFVOHNVVUZCVlN4RlFVRkpMRWRCUTJ4RUxFTkJUVUVzU1VGQlNTeFBRVUZSTEVOQlExWXNUMEZCVHl4TFFVRkxMRkZCUVZVc1MwRkJTeXhQUVVGUExFOUJRVk1zUlVGQlNTeEhRVU5xUkN4RFFVMUJMRWxCUVVrc1RVRkJUeXhEUVVOVUxFOUJRVThzUzBGQlN5eFJRVUZWTEV0QlFVc3NUMEZCVHl4TlFVRlJMRVZCUVVrc1IwRkRhRVFzUTBGTlFTeEpRVUZKTEU5QlFWRXNRMEZEVml4UFFVRlBMRXRCUVVzc1VVRkJWU3hMUVVGTExFOUJRVThzVDBGQlV5eEZRVUZKTEVkQlEycEVMRU5CVFVFc1NVRkJTU3hUUVVGVkxFTkJRMW9zVDBGQlR5eExRVUZMTEZGQlFWVXNTMEZCU3l4UFFVRlBMRk5CUVZjc1JVRkJTU3hIUVVOdVJDeERRVTFCTEVsQlFVa3NVMEZCVlN4RFFVTmFMRTlCUVU4c1MwRkJTeXhSUVVGVkxFdEJRVXNzVDBGQlR5eFRRVUZYTEVWQlFVa3NSMEZEYmtRc1EwRk5RU3hKUVVGSkxHTkJRV1VzUTBGRGFrSXNUMEZCVHl4TFFVRkxMRkZCUVZVc1MwRkJTeXhQUVVGUExHTkJRV2RDTEVWQlFVa3NSMEZEZUVRc1EwRlBRU3hKUVVGSkxGTkJRVlVzUTBGRFdpeFBRVUZQTEV0QlFVc3NWVUZCV1N4SlFVTXhRaXhEUVUxQkxFbEJRVWtzWlVGQlowSXNRMEZEYkVJc1QwRkJUeXhMUVVGTExGRkJRVlVzUzBGQlN5eFJRVUZSTEU5QlFWTXNTVUZET1VNc1EwRk5RU3hKUVVGSkxHOUNRVUZ4UWl4RFFVTjJRaXhQUVVGUExFdEJRVXNzVVVGQlZTeExRVUZMTEZGQlFWRXNXVUZCWXl4SlFVTnVSQ3hEUVZGQkxFOUJRVTlETEVWQlFVOHNRMEZMV2l4SFFVcEpMRU5CUVVNc1MwRkJTeXhUUVVGWExFTkJRVU5CTEVWQlFVMHNVMEZKZUVJc1EwRkJReXhMUVVGTExFbEJRVWtzVDBGQlQwRXNSVUZCVFN4SFFVRkhMRVZCUXpWQ0xFMUJRVThzUjBGSFZDeFRRVUZUUXl4RlFVRkhReXhGUVVGSlF5eEZRVUZKTEVOQlJXeENMRTlCUVVsRUxFbEJRVThzVVVGQllVRXNTVUZCVHl4RlFVRlZReXhKUVVGUExGRkJRV0ZCTEVsQlFVOHNSVUZETjBSRUxFbEJRVTlETEVOQlEyaENMRU5CUlVFc1VVRkJWMklzUzBGQlN6RkZMRWRCUTJRc1IwRkJTU3hEUVVGRGNVWXNSVUZCUnl4TFFVRkxMRTlCUVU5WUxFTkJRVU1zUlVGQlIxVXNSVUZCVFN4UFFVRlBWaXhEUVVGRExFTkJRVU1zUlVGRGNrTXNUVUZCVHl4SFFVZFlMRTFCUVU4c1JVRkRWQ3hEUVVOR0xFVkRPVE5DUVN4SlFVRk5ZeXhIUVVGVkxHMUNRVWRvUWl4VFFVRlRReXhIUVVGcFFrTXNSVUZCVDBNc1JVRkJTeXhEUVVOd1F5eE5RVUZKTEVOQlFVTkVMRWRCUVZNc1EwRkJRMEVzUlVGQlRTeFJRVU5hUlN4SFFVRlRMRkZCUVZFc01FSkJRVEJDTEVWQlEzcERMRU5CUVVORUxFZEJRVThzUTBGQlEwRXNSVUZCU1N4UlFVTm1ReXhIUVVGVExGRkJRVkVzZDBKQlFYZENMRVZCUTNaRFJDeEZRVUZOUkN4RlFVTlNSU3hIUVVGVExGRkJRMlFzYlVKQlEwRXNjVVZCUVhGRlJpeEZRVUZOTEUxQlFVMHNRMEZCUXl4WlFVRlpReXhGUVVGSkxFMUJRVTBzUTBGQlF5eEZRVU16Unl4RlFVVlBMRWxCUlZnc1EwRmpRU3hKUVVGeFFrTXNSMEZCY2tJc1RVRkJjVUpETEVOQlFWTXNRMEZKTlVJc1dVRkJXVU1zUlVGQlVTeERRVWxzUWl4TFFVRkxMRVZCUVVsQkxFVkJRVThzVFVGSmFFSXNTMEZCU3l4RlFVRkpRU3hGUVVGUExFbEJTV2hDTEV0QlFVc3NVVUZCVlVFc1JVRkJUeXhUUVVGWExFdEJTV3BETEV0QlFVc3NaMEpCUVd0Q0xFVkJRM3BDTEVOQlVVRXNUMEZCVHl4UlFVRlJReXhGUVVGUlF5eEZRVUZqTEV0QlFVMHNRMEZEZWtNc1IwRkJTU3hEUVVGRFJDeEZRVU5JTEUxQlFVMHNTVUZCU1VVc1IwRkJjVUlzYTBSQlFXdEVMRVZCUjI1R0xFbEJRVTFETEVWQlFWVklMR0ZCUVd0Q1NTeEhRVUZWU2l4RlFVRlRMRWxCUVVsSkxFZEJRVkZLTEVWQlFWRkRMRU5CUVZjc1JVRkZjRVlzUjBGQlNVa3NSVUZCVXl4bFFVTllMRTFCUVUwc1NVRkJTVU1zUjBGQmNVSklMRU5CUVU4c1JVRkZkRU1zVDBGQlR5eEpRVUZKVEN4RlFVRlRMRU5CUVVVc1VVRkJRVXNzUTBGQlVTeERRVUZETEVOQlJXNURMRU5CVVVFc1QwRkJUeXhqUVVGalVpeEZRVUZQUXl4RlFVRkxMRU5CUXk5Q0xFbEJRVTFYTEVWQlFXRkRMRWRCUVdsQ1lpeERRVUZMTEVWQlEzWkRZeXhGUVVGWFJDeEhRVUZwUWxvc1EwRkJSeXhGUVVVelFtTXNSVUZCWjBKb1FpeEhRVUZwUW1Fc1JVRkJXVVVzUTBGQlVTeEZRVVV6UkN4UFFVRkpReXhIUVVGcFFpeExRVU5hTEVsQlFVbGFMRVZCUVZNc1EwRkRiRUlzVFVGQlQxTXNSVUZEVUN4SlFVRkxSU3hEUVVOUUxFTkJRVU1zUlVGRlRVTXNRMEZGV0N4RFFWRkJMRTlCUVU4c1RVRkJUV1lzUlVGQlQyZENMRVZCUVZVc1EwRkROVUlzU1VGQlRVTXNSVUZCVFVNc1JVRkJVeXhwUWtGQmFVSkdMRU5CUVZFc1JVRkROVU5ITEVWQlFVdE9MRWRCUVdsQ1lpeERRVUZMTEVWQlF6ZENMRTlCUVU5SExFVkJRVk1zWTBGQlkyZENMRVZCUVVsQkxFVkJRVWNzUzBGQlMwWXNRMEZCUnl4RFFVRkRMRU5CUTJoRUxFTkJVVUVzVDBGQlR5eFBRVUZQYUVJc1JVRkJTMlVzUlVGQlZTeERRVU16UWl4SlFVRk5ReXhGUVVGTlF5eEZRVUZUTEdsQ1FVRnBRa1lzUTBGQlVTeEZRVU0xUTBjc1JVRkJTMDRzUjBGQmFVSmFMRU5CUVVjc1JVRkRNMElzVDBGQlQwVXNSVUZCVXl4alFVRmpaMElzUlVGQlJ5eE5RVUZOUml4RFFVRkhMRVZCUVVkRkxFTkJRVVVzUTBGRGFrUXNRMEZWUVN4UFFVRlBMRkZCUVZGRExFVkJRVTFETEVWQlFVMHNRMEZEZWtJc1IwRkJUU3hEUVVGRFF5eEZRVUZIUXl4RFFVRkRMRWRCUVV0SUxFZEJRVkVzU1VGQlNTeE5RVUZOTEVsQlFVc3NRMEZCUXl4RlFVTjRReXhIUVVGSlJTeEhRVUZMUXl4RlFVRkhMRU5CUTFZc1NVRkJTWFpDTEVWQlFVOTNRaXhGUVVOWUxFZEJRVWtzUTBGRFJuaENMRVZCUVZGNVFpeEZRVUZUTEZGQlFWRklMRVZCUVVkRUxFTkJRVWtzUlVGRGFFTkhMRVZCUVdWNFFpeEZRVUZOTEU5QlEzWkNMRTlCUVZOMVFpeEZRVUZITEVOQlExWkRMRVZCUVdVc1JVRkRha0lzUTBGRlFTeEpRVUZKZGtJc1JVRkJTM2xDTEVWQlExUXNSMEZCU1N4RFFVTkdla0lzUlVGQlRYZENMRVZCUVZNc1VVRkJVVVlzUlVGQlIwWXNRMEZCU1N4RlFVTTVRa3NzUlVGQllYcENMRVZCUVVrc1QwRkRia0lzVDBGQlUzTkNMRVZCUVVjc1EwRkRWa2NzUlVGQllTeEZRVU5tTEVOQlJVRXNSMEZCU1VZc1IwRkJaMEpGTEVWQlEyeENMRTlCUVU5MlFpeEZRVUZUTEdOQlFXTklMRVZCUVU5RExFTkJRVWNzUlVGSE1VTXNSMEZCU1hWQ0xFVkJRV01zUTBGRGFFSXNTVUZCVFZBc1JVRkJUVU1zUlVGQlV5eFJRVUZSU3l4RlFVRkhSaXhEUVVGSkxFVkJRM0JETEVkQlFVbEtMRVZCUVVrc1VVRkRUaXhQUVVGUFpDeEZRVUZUTEUxQlFVMUlMRVZCUVU5cFFpeERRVUZITEVOQlJYQkRMRk5CUVZkVExFVkJRVmtzUTBGRGNrSXNTVUZCVFZRc1JVRkJUVU1zUlVGQlV5eFJRVUZSU1N4RlFVRkhSQ3hEUVVGSkxFVkJRM0JETEVkQlFVbEtMRVZCUVVrc1VVRkRUaXhQUVVGUFpDeEZRVUZUTEU5QlFVOUdMRVZCUVV0blFpeERRVUZITEVOQlJXNURMRU5CUTBZc1EwRkRRU3hQUVVGUFpDeEZRVUZUTEZGQlFWRXNZVUZCWXl4alFVRmphVUlzUTBGQlNTd3JRa0ZCSzBJc1EwRkRla1lzUTBGUFFTeFBRVUZQTEZkQlFWZFBMRVZCUVVjc1EwRkRia0lzVDBGQlVVRXNSMEZCUzBFc1JVRkJSU3hwUWtGQmIwSXNSVUZEY2tNc1EwRk5RU3hKUVVGSkxFOUJRVkVzUTBGRFZpeFBRVUZQTEV0QlFVc3NVVUZCVlN4TFFVRkxMRVZCUVVrc1NVRkRha01zUTBGTlFTeEpRVUZKTEV0QlFVMHNRMEZEVWl4UFFVRlBMRXRCUVVzc1VVRkJWU3hMUVVGTExFVkJRVWtzU1VGRGFrTXNRMEZOUVN4SlFVRkpMRk5CUVZVc1EwRkRXaXhQUVVGUExFdEJRVXNzWjBKQlFXdENMRWxCUTJoRExFTkJUVUVzU1VGQlNTeGxRVUZuUWl4RFFVTnNRaXhQUVVGUExFdEJRVXNzVVVGQlZTeExRVUZMTEZGQlFWRXNUMEZCVXl4SlFVTTVReXhEUVUxQkxFbEJRVWtzYjBKQlFYRkNMRU5CUTNaQ0xFOUJRVThzUzBGQlN5eFJRVUZWTEV0QlFVc3NVVUZCVVN4WlFVRmpMRWxCUTI1RUxFTkJUMEVzVDBGQlQwTXNSVUZCVHl4bFFVRm5RaXhEUVVNMVFpeFBRVUZQTEV0QlFVc3NVVUZCVlN4TFFVRkxMRmRCUVdWQkxFTkJRVXNzUlVGQlJTeEpRVUZKUVN4RFFVRkpMRVZCUVVrc1IwRkRMMFFzUTBGVFFTeE5RVUZOUVN4RlFVRlBMR1ZCUVdkQ0xFTkJRek5DTEVkQlFVa3NRMEZCUXl4TFFVRkxMRkZCUVZNc1RVRkJUeXhMUVVNeFFpeEpRVUZOTlVJc1JVRkJVU3hMUVVGTExFMUJRVTBzVVVGQlVUUkNMRU5CUVVrc1JVRkRia016UWl4RlFVRk5MRXRCUVVzc1NVRkJTU3hSUVVGUk1rSXNRMEZCU1N4RlFVTTNRaXhQUVVGUExFdEJRVXNzVFVGQlRUTkNMRVZCUVVrc1MwRkJTMFFzUlVGQlR6UkNMRU5CUVVrc1JVRkJSU3hKUVVGSlFTeERRVUZKTEVOQlFVTXNSVUZCU1N4RFFVTjJSQ3hEUVU5QkxGRkJRVkZCTEVWQlFVMHNRMEZEV2l4UFFVRlBMRXRCUVVzc1VVRkJWU3hMUVVGTExGRkJRVkVzUjBGQlN5eExRVUZMTEVWQlFVVXNUVUZCVFN4RFFVRkRMRVZCUVVVc1VVRkJVU3hMUVVGTExFVkJRVWRCTEVOQlFVa3NSVUZCU1N4RlFVTnNSaXhEUVUxQkxGTkJRVlVzUTBGRFVpeFBRVUZQTEV0QlFVc3NSVUZCUlN4UlFVRlJMRWxCUVUwc1MwRkJTeXhGUVVGRkxGRkJRVkVzUTBGRE4wTXNRMEZQUVN4UlFVRlJReXhGUVVGVkxFTkJRMmhDTEU5QlFVc3NTMEZCU3l4UlFVTklMRXRCUVVzc1JVRkJTVUVzUlVGRVZTeEZRVVUxUWl4RFFVOUJMRk5CUVZOQkxFVkJRVlVzUTBGRGFrSXNUMEZCU3l4TFFVRkxMRkZCUTBnc1MwRkJTeXhIUVVGTFFTeEZRVVJUTEVWQlJUVkNMRU5CVDBFc1UwRkJVMEVzUlVGQlZTeERRVU5xUWl4UFFVRkxMRXRCUVVzc1VVRkRTQ3hMUVVGTExFZEJRVXRCTEVkQlFWa3NTMEZCU3l4RlFVRkpRU3hGUVVSYUxFVkJSVFZDTEVOQlUwRXNTVUZCU1N4RFFVRkZMRTFCUVVFM1FpeEZRVUZQTEVsQlFVRkRMRU5CUVVrc1JVRkJTU3hEUVVGRExFVkJRVWNzUTBGRGRrSXNUMEZCU3l4TFFVRkxMRkZCUTBoRkxFVkJRVk1zWTBGQlkwZ3NSMEZCVXl4TFFVRkxMRVZCUVVkRExFZEJRVThzUzBGQlN5eERRVUZETEVWQlJHeERMRWxCUlRWQ0xFTkJUMEVzVjBGQlZ6WkNMRVZCUVZjc1EwRkRjRUlzUjBGQlNTeERRVUZETEV0QlFVc3NVVUZCVXl4TlFVRlBMRU5CUVVNc1JVRkRNMElzU1VGQlRVTXNSVUZCVTBRc1JVRkRWaXhKUVVGSmFrSXNSVUZCWjBJc1JVRkRjRUlzVDBGQlVXMUNMRWRCUVUwc1MwRkJTeXhUUVVGVFFTeERRVUZETEVOQlFVTXNSVUZET1VJc1MwRkJTeXhGUVVOU1F5eEZRVUZWTEVOQlFVTXNSVUZEVkN4RFFVRkZMRU5CUVVVc1JVRkJTU3hMUVVOV0xFVkJRVWtzUlVGRlRpeExRVUZQTEVWQlFVa3NTMEZCU3l4SFFVRkhMRU5CUTJwQ0xFbEJRVTFETEVWQlFWRklMRVZCUVU4c1EwRkJReXhIUVVGTExFdEJRVXNzUlVGRE9VSkpMRVZCUVU4c1EwRkJRMFFzUlVGQlVTeERRVUZETEV0QlFVc3NSVUZCU1N4TFFVRkxMRVZCUVVsQkxFVkJRM0pEUkN4RlFVRlJMRXRCUVVzNVFpeEZRVUZUTEdOQlFXTXNSVUZCUjJkRExFTkJRVWtzUTBGQlF5eEZRVU0xUXl4RlFVRkpRU3hGUVVOS0xFZEJRVXNzUTBGRFVDeERRVVZCTEU5QlFVOUdMRU5CUTFRc1EwRlJRU3hSUVVGUmFrSXNSVUZCVlN4RFFVTm9RaXhKUVVGTlF5eEZRVUZOUXl4RlFVRlRMR2xDUVVGcFFrWXNRMEZCVVN4RlFVVTVReXhIUVVGSkxFTkJRVU1zUzBGQlN5eFRRVUZYTEVOQlFVTkRMRVZCUVVrc1UwRkJWMEVzUlVGQlNTeEhRVUZITEdOQlFXTXNTVUZCVFN4RlFVTTVSQ3hOUVVGUExFTkJRVU1zUlVGSFZpeEhRVUZKTEVOQlFVVXNSVUZCUVVzc1EwRkJSU3hGUVVGSkxFdEJRMVpqTEVWQlFVMHNSVUZEVGtRc1JVRkZTVVlzUlVGQlZTeERRVUZETEVWQlEycENMRXRCUVU5WUxFVkJRVWtzUzBGQlN5eEhRVUZITEVOQlEycENMRWxCUVUxWkxFVkJRVkVzUzBGQlN5eE5RVUZOTEV0QlFVdHFRaXhGUVVGSkxGTkJRVlZ2UWl4SFFVRk5RU3hGUVVGSlJDeERRVUZITEVOQlFVTXNSVUZETVVSRUxFVkJRVThzUTBGQlEwUXNSVUZCVVN4RFFVRkRMRXRCUVVzc1JVRkJTU3hMUVVGTExFVkJRVWxCTEVWQlEyNURSQ3hGUVVGUkxFdEJRVXM1UWl4RlFVRlRMR05CUVdOdFFpeEZRVUZIWVN4RFFVRkpMRU5CUVVNc1JVRkROVU5pTEVWQlFVbGhMRVZCUTBwRExFZEJRVThzUTBGRFZDeERRVVZCTEU5QlFVOUlMRU5CUTFRc1EwRlBRU3hqUVVGalN5eEZRVUZsTEVOQlF6TkNMRTlCUVVzc1MwRkJTeXhSUVVOSUxFdEJRVXNzVVVGQlVTeExRVUZMTEU5QlFVOHNSVUZCU1VFc1EwRkJZU3hGUVVGRkxFMUJRVTBzUlVGQlIwRXNRMEZCWVN4RlFVUXZReXhEUVVGRExFTkJSVGRDTEVOQlQwRXNVMEZCVTBNc1JVRkJUeXhEUVVOa0xFOUJRVThzUzBGQlN5eEZRVUZKUVN4RlFVRk5MRWRCUVVzc1MwRkJTeXhGUVVGSlFTeEZRVUZOTEVOQlF6VkRMRU5CVDBFc1YwRkJWMEVzUlVGQlR5eERRVU5vUWl4UFFVRkxMRXRCUVVzc1VVRkRTQ3hEUVVGRExFdEJRVXNzUjBGQlRTeERRVUZEUVN4RlFVRk5MRVZCUkVFc1JVRkZOVUlzUTBGUFFTeFRRVUZUUVN4RlFVRlBMRU5CUTJRc1QwRkJTeXhMUVVGTExGRkJRMGdzUTBGQlEwRXNSVUZCVFN4SFFVRk5MRU5CUVVNc1MwRkJTeXhGUVVSQkxFVkJSVFZDTEVOQlQwRXNVVUZCVVVFc1JVRkJUeXhEUVVOaUxFOUJRVXNzUzBGQlN5eFJRVU5JTEV0QlFVc3NSMEZCUzBFc1JVRkJUU3hIUVVGTExFdEJRVXNzUjBGQlMwRXNSVUZCVFN4RlFVUnNRaXhGUVVVMVFpeERRVTlCTEU5QlFVOUJMRVZCUVU4c1EwRkRXaXhOUVVGSkxFTkJRVU1zUzBGQlN5eFRRVUZYTEVOQlFVTkJMRVZCUVUwc1VVRkRia0lzUjBGSFJpeExRVUZMTEVWQlFVVXNUMEZCVDBFc1JVRkJUU3hEUVVGRExFZEJRVXNzUzBGQlN5eEZRVUZGTEU5QlFVOUJMRVZCUVUwc1EwRkJReXhEUVVONFJDeERRVk5CTEdGQlFXRkJMRVZCUVU4c1EwRkRiRUlzUjBGQlNTeERRVUZETEV0QlFVc3NVVUZCVXl4UFFVRlBMRXRCUXpGQ0xFbEJRVTFxUWl4RlFVRkpMRXRCUVVzc1JVRkJTV2xDTEVWQlFVMHNSVUZCU1N4TFFVRkxMRVZCUVVsQkxFVkJRVTBzUlVGRE1VTm9RaXhGUVVGSkxFdEJRVXNzUlVGQlNXZENMRVZCUVUwc1JVRkJTU3hMUVVGTExFVkJRVWxCTEVWQlFVMHNSVUZGZUVNc1QwRkJTV3BDTEVkQlFVdERMRVZCUTBFc1MwRkZRWEJDTEVWQlFWTXNZMEZCWTIxQ0xFVkJRVWRETEVOQlFVTXNRMEZGZEVNc1EwRlJRU3hOUVVGTlowSXNSVUZCVHl4RFFVTllMRWRCUVVrc1EwRkJReXhMUVVGTExGRkJRVk1zVDBGQlR5eExRVU14UWl4SlFVRk5ha0lzUlVGQlNTeExRVUZMTEVWQlFVbHBRaXhGUVVGTkxFVkJRVWtzUzBGQlN5eEZRVUZKUVN4RlFVRk5MRVZCUXpGRGFFSXNSVUZCU1N4TFFVRkxMRVZCUVVsblFpeEZRVUZOTEVWQlFVa3NTMEZCU3l4RlFVRkpRU3hGUVVGTkxFVkJRM2hETEU5QlFVOXdReXhGUVVGVExHTkJRV050UWl4RlFVRkhReXhEUVVGRExFTkJRM0JETEVOQlVVRXNUMEZCVHl4TlFVRk5hVUlzUlVGQlZ5eERRVU4wUWl4SFFVRk5MRU5CUVVORExFVkJRVTlETEVOQlFVc3NSVUZCU1VZc1JVRkRjRUlzUzBGQlN5eERRVUZEUnl4RlFVRkhReXhKUVVGTlJDeEZRVUZGTEVWQlFVbERMRVZCUVVVc1EwRkJReXhGUVVONFFpeFBRVU5ETEVOQlFVTXNRMEZCUTBNc1JVRkJUME1zUTBGQlR5eEZRVUZIUXl4SlFVTmFSQ3hGUVVWTlFTeEZRVUZSTEZOQlFWTkRMRU5CUVVrc1IwRkJTMFFzUlVGQlVTeFhRVUZYUXl4RFFVRkpMRVZCUTI1RUxFTkJRVU5HTEVWQlFVOURMRVZCUVZFc1RVRkJUVU1zUTBGQlNTeERRVUZETEVWQlJUTkNMRU5CUVVOR0xFVkJRVTBzVDBGQlR5eERRVUZEUXl4RFFVRlBMRU5CUVVNc1JVRkJSME1zUTBGQlNTeEZRVW81UWl4RFFVRkRSaXhGUVVGUFJTeERRVUZKTEVWQlQzWkNMRU5CUVVNc1EwRkJReXhGUVVGSExFbEJRVWtzUTBGRFdDeEZRVU5HTEU5QlFVbE1MRWRCUTBaRUxFVkJRVTBzUzBGQlMwTXNRMEZCU3l4RlFVVllSQ3hEUVVOVUxFTkJUMEVzVDBGQlR5eEpRVUZKUkN4RlFVRlhMRU5CUTNCQ0xFbEJRVWw0UXl4RlFVRlJMRXRCUTFablJDeEZRVUZsTEVWQlExaG1MRVZCUVZVc1EwRkJReXhGUVVObVowSXNSVUZCVDFRc1JVRkJWU3hKUVVGTFZTeEhRVUZOTEVOQlF6RkNMRU5CUVVVc1MwRkJUVUVzUlVGQlJTeEZRVUZITEV0QlFVMHNSMEZCU1N4RlFVTjJRaXhEUVVGRkxFdEJRVTFCTEVWQlFVVXNSVUZCUnl4TFFVRk5MRWRCUVVrc1EwRkRla0lzUTBGQlF5eEZRVU5FUXl4RlFVRlpMRTFCUVUwc1ZVRkJWU3hQUVVGUExFZEJRVWRHTEVOQlFVa3NSVUZETVVOSExFVkJRVTFFTEVWQlFWVXNTMEZCU3l4RFFVRkRVaXhGUVVGSFF5eEpRVUZOUkN4RlFVRkZMRXRCUVU5RExFVkJRVVVzU1VGQlNTeEZRVVZvUkN4UlFVRlhUU3hMUVVGTFJTeEZRVU5rU2l4SFFVRm5Ra1VzUlVGQlJTeFBRVUZUTEVsQlFVMHNSVUZCU1N4SFFVVnFRMFlzU1VGQmFVSXNSVUZEYmtKb1JDeEZRVUZSYTBRc1JVRkJSU3hOUVVWT2JFUXNSMEZCVXl4RFFVRkRRU3hIUVVGVkxFTkJRVU5yUkN4RlFVRkZMRTFCUTNwQ2FrSXNSVUZCVVN4TFFVRkxPVUlzUlVGQlV5eGpRVUZqU0N4RlFVRlBhMFFzUlVGQlJTeEpRVUZKTEVOQlFVTXNSVUZIY0VSc1JDeEZRVUZSTEUxQlNWb3NUMEZCVDBjc1JVRkJVeXhOUVVGTk9FSXNRMEZCVHl4RFFVTXZRaXhEUVU5QkxHTkJRV05QTEVWQlFWY3NRMEZEZGtJc1QwRkJUM0pETEVWQlFWTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1JVRkJSU3hQUVVGUGNVTXNRMEZCVXl4RFFVRkRMRVZCUTNwRExFbEJRVXRWTEVkQlFVMHNTMEZCU3l4aFFVRmhRU3hEUVVGRExFTkJRVU1zUlVGREwwSXNUMEZCVVVFc1IwRkJUVUVzUjBGQlN5eERRVUZEUVN4RlFVRkZMRkZCUVZFc1EwRkJReXhEUVVOd1F5eERRVTFCTEZWQlFWY3NRMEZEVkN4UFFVRkxMRXRCUVVzc1VVRkRTQ3hKUVVGSkxFdEJRVXNzUlVGQlJTeE5RVUZOTEVOQlFVTXNWMEZCVFN4TFFVRkxMRVZCUVVVc1RVRkJUU3hEUVVGRExFbEJSRzVDY0VRc1JVRkZOVUlzUTBGUlFTeE5RVUZOZFVJc1JVRkJUU3hEUVVOV0xFOUJRVXNzUzBGQlN5eFJRVU5JTEVkQlFVY3NTMEZCU3l4RlFVRkZMRTFCUVUxQkxFTkJRVWtzUTBGQlF5eEpRVUZKTEV0QlFVc3NSVUZCUlN4TlFVRk5RU3hEUVVGSkxFTkJRVU1zUjBGRWVFSjJRaXhGUVVVMVFpeERRVkZCTEZkQlFWa3NRMEZEVml4UFFVRkxMRXRCUVVzc1VVRkRTQ3hIUVVGSExFdEJRVXNzUlVGQlJTeFZRVUZWTEVOQlFVTXNTVUZCU1N4TFFVRkxMRVZCUVVVc1ZVRkJWU3hEUVVGRExFZEJSSGhDUVN4RlFVVTFRaXhEUVZOQkxGVkJRVlYxUWl4RlFVRk5MRU5CUTJRc1QwRkJTeXhMUVVGTExGRkJRMGdzUjBGQlJ5eExRVUZMTEVWQlFVVXNWVUZCVlVFc1EwRkJTU3hEUVVGRExFbEJRVWtzUzBGQlN5eEZRVUZGTEZWQlFWVkJMRU5CUVVrc1EwRkJReXhIUVVSb1EzWkNMRVZCUlRWQ0xFTkJVMEVzVTBGQlUzVkVMRVZCUVZrc1EwRkJSU3hWUVVGQlF5eEZRVUZaTEZWQlFVMHNSVUZCU1N4RFFVRkRMRVZCUVVjc1EwRkRMME1zVDBGQlN5eExRVUZMTEZGQlEwZ3NSMEZCUnl4TFFVRkxMRVZCUVVVc1UwRkJVMFFzUTBGQlZTeERRVUZETEVkQlFVZERMRU5CUVZNc1IwRkJSeXhMUVVGTExFVkJRVVVzVTBGQlUwUXNRMEZCVlN4RFFVRkRMRWRCUkhKRWRrUXNSVUZGTlVJc1EwRmpRU3hYUVVGWE9FSXNSVUZCVFZBc1JVRkJUU3hEUVVOeVFpeFBRVUZMTEV0QlFVc3NVVUZIU0N4TFFVRkxMRVZCUVVVc1MwRkJTeXhMUVVGTExFVkJRVWRQTEVWQlFVMVFMRU5CUVVrc1JVRkdOVUpJTEVWQlFWTXNVVUZCVVN4TFFVRkxMR0ZCUVdFc1EwRkhPVU1zUTBGVFFTeGhRVUZoY1VNc1JVRkJUeXhEUVVOc1FpeFBRVUZQY0VRc1JVRkJVeXhqUVVGamIwUXNSVUZCVFN4TFFVRkxMRU5CUVVNc1JVRkJSMEVzUlVGQlRTeExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVTTFSQ3hEUVVOR0xFVkRibXhDUVN4SlFVRnhRa01zUjBGQmNrSXNTMEZCTUVJc1EwRk5lRUlzVDBGQlR5eFBRVUZQUXl4RlFVRlBReXhGUVVGVExGbEJRV0VzUTBGRGVrTXNTVUZCVFVNc1JVRkJVVU1zUlVGQlV5eEpRVUZKTEVWQlFVVXNVVUZCVVVnc1EwRkJTU3hGUVVGRkxFbEJRVWtzUTBGQlJTeE5RVUZQTEVWQlFVY3NRMEZCUXl4RlFVVTFSQ3hOUVVGUExFTkJRVU5CTEVWQlFVc3NZVUZCWlVVc1JVRkJUU3hUUVVGWFFTeEZRVUZOTEVsQlFVa3NRMEZCUlN4TlFVRlBMRU5CUVVVc1EwRkJReXhGUVVGRkxFMUJRM1pGTEVOQlQwRXNUMEZCVHl4blFrRkJaMEpHTEVWQlFVMHNRMEZETTBJc1QwRkJUMGtzUjBGQlV5eFpRVUZaU2l4RFFVRkpMRU5CUTJ4RExFTkJaMEpCTEU5QlFVOHNZMEZCWTBzc1JVRkJUeXhEUVVNeFFpeFBRVUZQUXl4SFFVRmpSQ3hGUVVGUFNpeEZRVUZUTEZkQlFWY3NRMEZEYkVRc1EwRnRRa0VzVDBGQlR5eFBRVU5NVFN4RlFVRlRMRTlCUTFRc1EwRkJSU3hQUVVGQlF5eEZRVUZUTEV0QlFVMHNaMEpCUVVGRExFVkJRV3RDTEV0QlFVMHNUMEZCUVVNc1JVRkJVeXhMUVVGTkxHVkJRVUZETEVWQlFXbENMRk5CUVZVc1JVRkJTU3hEUVVGRExFVkJRM2hHTEVOQlEwRXNUMEZCVVVRc1IwRkJWVVVzUjBGQlR5eFBRVUZQU2l4RlFVRlJReXhGUVVGcFFrVXNRMEZCWXl4SFFVRkhMRTlCUVU5S0xFTkJRVTBzUTBGRGVrWXNRMEZsUVN4UFFVRlBMR0ZCUTB4QkxFVkJRVk1zVDBGRFZDeERRVUZGTEU5QlFVRkRMRVZCUVZNc1MwRkJUU3huUWtGQlFVTXNSVUZCYTBJc1MwRkJUU3hQUVVGQlF5eEZRVUZUTEV0QlFVMHNaVUZCUVVNc1JVRkJhVUlzVTBGQlZTeEZRVUZKTEVOQlFVTXNSVUZEZUVZc1EwRkRRU3hQUVVGUlJDeEhRVUZWUlN4SFFVRlBMRTlCUVU5S0xFVkJRVkZETEVWQlFXbENSU3hEUVVGakxFZEJRVWNzVDBGQlQwb3NSVUZCVVN4RlFVRkpMRU5CUXk5R0xFTkJaMEpCTEU5QlFVOHNVMEZCVTBFc1JVRkJVeXhQUVVGUkxFTkJRVVVzVDBGQlFVTXNSVUZCVXl4TFFVRk5MR2RDUVVGQlF5eEZRVUZyUWl4TFFVRk5MRTlCUVVGRExFVkJRVk1zU1VGQlN5eEZRVUZKTEVOQlFVTXNSVUZCUnl4RFFVTTVSaXhQUVVGUlFTeEhRVUZWUlN4SFFVRlBMRTlCUVU5S0xFVkJRVkZETEVWQlFXbENMRWxCUVVrc1IwRkJSeXhUUVVGVFJpeERRVUZOTEVOQlEycEdMRU5CWTBFc1QwRkJUeXhsUVVOTVFTeEZRVUZUTEU5QlExUXNRMEZCUlN4UFFVRkJReXhGUVVGVExFdEJRVTBzWjBKQlFVRkRMRVZCUVd0Q0xFdEJRVTBzVDBGQlFVTXNSVUZCVXl4SlFVRkxMRVZCUVVrc1EwRkJReXhGUVVNMVJDeERRVU5CTEU5QlFWRkJMRWRCUVZWRkxFZEJRVThzVDBGQlQwb3NSVUZCVVVNc1JVRkJhVUlzU1VGQlNTeEhRVUZITEZOQlFWTkdMRVZCUVZFc1JVRkJTU3hEUVVOMlJpeERRVlZCTEU5QlFVOHNWVUZCVlN4RFFVRkZMRTlCUVVGRExFVkJRVk1zU1VGQlN5eEZRVUZKTEVOQlFVTXNSVUZCUnl4RFFVTjJReXhQUVVGUFNTeEhRVUZQTEU5QlFVOUtMRU5CUVUwc1JVRkJSU3hWUVVGVkxFTkJRM3BETEVOQldVRXNUMEZCVHl4TFFVRkxSQ3hGUVVGVExGRkJRVk1zUTBGQlJTeFBRVUZCUXl4RlFVRlRMRWxCUVVzc1JVRkJTU3hEUVVGRExFVkJRVWNzUTBGRGNFUXNUMEZCVDBrc1IwRkJUeXhQUVVGUFNpeEZRVUZSTEV0QlFVMHNVMEZCVXl4RlFVRkZMRXRCUVV0RUxFTkJRVTBzUTBGRE0wUXNRMEZWUVN4UFFVRlBMRlZCUVZjc1EwRkRhRUlzVFVGQlR5eERRVUZGTEZOQlFWVk5MRWRCUVZrc1EwRkJSU3hEUVVOdVF5eERRVU5HTEVWRGRFdEJMRk5CUVZORExFZEJRVkZETEVWQlFWTkRMRVZCUVU4c1EwRkRMMElzU1VGQlRVTXNSVUZCWlVNc1IwRkJUMEVzUlVGQlJ5eE5RVUZOTEVWQlFVY3NRMEZCUlN4alFVRmxMRVZCUVVzc1EwRkJReXhGUVVGRkxGRkJRVkVzUzBGQlN5eEZRVUZGTEZGQlFWRXNSVUZEZEVaRExFVkJRVXRHTEVWQlFWbEVMRU5CUVVzc1JVRkJTVU1zUlVGQldVWXNRMEZCVHl4RlFVTXZReXhQUVVGUExFdEJRVXNzVFVGQlRVc3NSVUZCVXl4WFFVRlhSQ3hEUVVGRkxFVkJRVVVzUjBGQlJ5eE5RVUZOTEVOQlFVTXNRMEZEZEVRc1EwRkZRU3hUUVVGVFJTeEhRVUZsUXl4RlFVRlJUaXhGUVVGUFR5eEZRVUZQTEVOQlF6VkRMRWxCUVUxRExFVkJRVlVzUTBGRFpDeERRVUZETEZGQlFWTXNRMEZCUXl4RlFVRkhReXhKUVVGTlFTeEZRVUZGTEV0QlFVOHNSVUZCUlN4SlFVRkpMRVZCUTI1RExFTkJRVU1zVjBGQldTeERRVUZETEVWQlFVZEJMRWxCUVUxQkxFVkJRVVVzVVVGQlZTeEZRVUZGTEU5QlFVOHNSVUZETlVNc1EwRkJReXhUUVVGVkxFTkJRVU1zUlVGQlIwRXNTVUZCVFVFc1JVRkJSU3hOUVVGUkxFVkJRVVVzVDBGQlUwRXNSVUZCUlN4TFFVRlBMRVZCUVVVc1RVRkJVU3hGUVVGRkxFVkJReTlFTEVOQlEwVXNVVUZEUVN4RFFVRkRMRVZCUVVkQkxFbEJRVTBzUTBGRFVpeEpRVUZOUXl4RlFVRlBXaXhIUVVGUkxFVkJRVWRYTEVOQlFVTXNSVUZEZWtJc1QwRkJVVU1zUlVGQlVVRXNSVUZCVHl4SFFVRk5MRU5CUXk5Q0xFTkJRMFlzUlVGRFFTeERRVUZETEU5QlFWRmFMRVZCUVU4c1EwRkRiRUlzUlVGRlRXRXNSVUZCVlN4RFFVRkRMRVZCUTJKRExFVkJRV0ZETEVWQlJXcENMRTlCUVZjc1EwRkJRME1zUlVGQlRVTXNRMEZCVFN4SlFVRkxVQ3hGUVVNelFpeEhRVUZKUkN4RlFVRk5MRkZCUVZGUExFTkJRVWtzUjBGQlN5eEZRVUZITEVOQlF6VkNSaXhGUVVGalJTeEZRVVZrTEVsQlFVbEZMRVZCUVZGRUxFVkJRVTlVTEVWQlFWRk9MRU5CUVVzc1JVRkRhRU5oTEVWQlFWbFFMRVZCUVU4c1MwRkJTeXhEUVVGRkxFTkJRVU5STEVOQlFVa3NSVUZCUjBVc1EwRkJUU3hEUVVGRExFVkJSWEpEU0N4RlFVRlpZaXhIUVVOa1RTeEZRVUZUUVN4RlFVRlBMRXRCUVVzc1EwRkJSU3hEUVVGRFVTeERRVUZKTEVWQlFVZEZMRVZCUVZFc1EwRkJSU3hEUVVGRExFVkJRekZEUVN4SFFVRlRMRWRCUlZSV0xFVkJRVk5QTEVWQlIxaEdMRVZCUVZGSExFTkJRVWtzUlVGQlNVVXNRMEZEYkVJc1EwRkhSaXhOUVVGUExFTkJRVU5XTEVWQlFWRkxMRVZCUVZORkxFVkJRVmRFTEVOQlFWY3NRMEZEYWtRc1EwRkZaU3hUUVVGU1N5eEhRVUZyUW14Q0xFVkJRVk5ETEVWQlFVOVBMRVZCUVU5WExFVkJRVTBzUTBGRGNFUXNSMEZCU1N4RFFVRkRXaXhGUVVGUlN5eEZRVUZUUlN4RlFVRlhSQ3hEUVVGWExFVkJRVWxRTEVkQlFXVk9MRVZCUVZORExFVkJRVTlQTEVOQlFVc3NSVUZGT1VWWkxFVkJRV3RDYmtJc1JVRkJVVTBzUlVGRk1VSmpMRVZCUVd0Q1lpeEZRVUZOTEU5QlF6TkNZeXhIUVVGTkxFTkJRVU1zVVVGQlV5eFZRVUZYTEZWQlFWY3NZMEZCWXl4RlFVRkZMRkZCUVZGQkxFTkJRVU1zUjBGQlN5eERRVU4yUlN4RlFVVkpSQ3hGUVVGblFpeFRRVUZYTEVsQlEzcENVQ3hGUVVGWllpeEpRVU5rWVN4RlFVRlpVQ3hGUVVGUExFdEJRVXNzUTBGQlJTeERRVUZEVFN4RFFVRlhMRVZCUVVjc1EwRkJSU3hEUVVGRExFZEJSekZEUXl4SlFVRmpVQ3hKUVVOb1Frc3NSVUZCVVVNc1EwRkJWeXhIUVVGTFJDeEZRVUZSUXl4RFFVRlhMRWRCUVVzc1IwRkJTMDhzUjBGQmJVSk9MRVZCUVZsUUxFdEJTWGhHTEVsQlFVMW5RaXhGUVVGWGJFSXNSVUZCVXl4WFFVRlhUeXhGUVVGVFR5eERRVUZKTEVWQlJXeEVMRTlCUVVsRkxFVkJRV2RDTEU5QlFWTXNSVUZEY0VKb1FpeEZRVUZUTEZkQlFWZGxMRVZCUVdsQ1JDeERRVUZKTEVWQlF6ZERMRkZCUVZFc1IwRkJSMFVzUTBGQlpTeEZRVU14UWl4TFFVRkxSU3hEUVVGUkxFVkJSVlJCTEVOQlJWZ3NRME16UlVFc1NVRkJUVU1zUjBGQmJVSXNRMEZEZGtJc1MwRkJUU3hyUWtGRFRpeFJRVUZUTEd0Q1FVTlVMRXRCUVUwc2EwSkJRMDRzUzBGQlRTeHJRa0ZEVGl4TFFVRk5MR3RDUVVOT0xGTkJRVlVzYTBKQlExWXNTMEZCVFN4clFrRkRUaXhSUVVGVExEQkZRVU5VTEV0QlFVMHNhMEpCUTA0c1MwRkJUU3hyUWtGRFRpeExRVUZOTEd0Q1FVTk9MRXRCUVUwc2EwSkJRMDRzUzBGQlRTeHJRa0ZEVGl4TFFVRk5MR3RDUVVOT0xFdEJRVTBzYTBKQlEwNHNTMEZCVFN4clFrRkRUaXhSUVVGVExHdENRVU5VTEV0QlFVMHNhMEpCUTA0c1MwRkJUU3hyUWtGRFRpeExRVUZOTEd0Q1FVTk9MRXRCUVUwc1MwRkRVaXhGUVVWTlF5eEhRVUYzUWl4RFFVTTFRaXhMUVVGTkxFTkJRVU1zUzBGQlRTeEpRVUZKTEVWQlEycENMRkZCUVZNc1EwRkJReXhMUVVGTkxFbEJRVWtzUlVGRGNFSXNTMEZCVFN4RFFVRkRMRXRCUVUwc1NVRkJTU3hGUVVOcVFpeExRVUZOTEVOQlFVTXNTMEZCVFN4SlFVRkpMRVZCUTJwQ0xFdEJRVTBzUTBGQlF5eExRVUZOTEVsQlFVa3NSVUZEYWtJc1UwRkJWU3hEUVVGRExFMUJRVThzUzBGQlN5eEZRVU4yUWl4TFFVRk5MRU5CUVVNc1MwRkJUU3hKUVVGSkxFVkJRMnBDTEV0QlFVMHNRMEZCUXl4TFFVRk5MRWxCUVVrc1JVRkRha0lzUzBGQlRTeERRVUZETEV0QlFVMHNTVUZCU1N4RlFVTnFRaXhMUVVGTkxFTkJRVU1zUzBGQlRTeEpRVUZKTEVWQlEycENMRXRCUVUwc1EwRkJReXhMUVVGTkxFbEJRVWtzUlVGRGFrSXNTMEZCVFN4RFFVRkRMRXRCUVUwc1NVRkJTU3hGUVVOcVFpeExRVUZOTEVOQlFVTXNTMEZCVFN4SlFVRkpMRVZCUTJwQ0xFdEJRVTBzUTBGQlF5eExRVUZOTEVsQlFVa3NSVUZEYWtJc1MwRkJUU3hEUVVGRExFdEJRVTBzU1VGQlNTeEZRVU5xUWl4UlFVRlRMRU5CUVVNc1MwRkJUU3hKUVVGSkxFVkJRM0JDTEV0QlFVMHNRMEZCUXl4TFFVRk5MRWxCUVVrc1JVRkRha0lzUzBGQlRTeERRVUZETEV0QlFVMHNTVUZCU1N4RlFVTnFRaXhMUVVGTkxFTkJRVU1zUzBGQlRTeEpRVUZKTEVOQlEyNUNMRVZCUlUxRExFZEJRV1ZHTEVkQlFXbENMRkZCUVZFc1VVRkJVU3hYUVVGWkxFVkJRVVVzUlVGQlJTeE5RVUZOTEVWQlFVVXNSVUZGZGtVc1UwRkJVMGNzUjBGQldVTXNSVUZCU3l4RFFVTXZRaXhKUVVGSlF5eEZRVUZSTEZOQlFWTkVMRVZCUVVzc1JVRkJSU3hGUVVNMVFpeEhRVUZKTEUxQlFVMURMRU5CUVVzc1JVRkJSeXhEUVVOb1FrRXNSVUZCVVN4SFFVTlNMRkZCUVZORExFVkJRVWtzUlVGQlIwRXNSVUZCU1VZc1JVRkJTU3hQUVVGUlJTeEpRVUZMTEVOQlEyNURMRWxCUVUxRExFVkJRVTlJTEVWQlFVa3NWMEZCVjBVc1EwRkJReXhGUVVVM1FpeEhRVUZKUml4RlFVRkpSU3hEUVVGRExFVkJRVVVzVDBGQlQwNHNSMEZCYVVJc1QwRkJUeXhKUVVGTkxFZEJRemxEU3l4SFFVRlRTQ3hIUVVGaExGRkJRVkZGTEVWQlFVbEZMRU5CUVVNc1EwRkJReXhOUVVWd1F5eFRRVUZYUlN4TFFVRlBVQ3hIUVVGMVFpeERRVU4yUXl4SFFVRk5MRU5CUVVOUkxFVkJRVXRETEVOQlFVY3NSVUZCU1ZRc1IwRkJjMEpQTEVOQlFVY3NSVUZEZUVORUxFZEJRVkZGTEVkQlFVOUdMRWRCUVZGSExFbEJRM3BDVEN4SFFVRlRSU3hGUVVGUFJTeEZRVVZ3UWl4RFFVVktMRU5CUTBFc1QwRkJUeXhUUVVGVFNpeEZRVUZQTEVWQlFVVXNRMEZETTBJc1MwRkRSU3hSUVVGUFFTeERRVVZZTEVOQlJVOHNVMEZCVTAwc1IwRkJWeXhEUVVGRkxHZENRVUZCUXl4RFFVRm5RaXhGUVVGSFF5eEZRVUZUTEVkQlFVa3NRMEZETTBRc1QwRkJUeXhKUVVGSkxFOUJRVThzUjBGQlIySXNSMEZCYVVKWkxFZEJRVzFDTEUxQlFVMHNRMEZCUXl4SFFVRkhReXhEUVVGTkxFVkJRVVVzUTBGRE4wVXNRME5zUlVFc1NVRkJUVU1zUjBGQll5eHZSRUZGY0VJc1UwRkJVME1zUlVGQlVVTXNSVUZCVDBNc1JVRkJVVU1zUjBGQlRVRXNSVUZCUnl4RFFVTjJReXhOUVVGUExFTkJRVVVzVFVGQlFVWXNSVUZCVHl4TlFVRlBMRU5CUVVNc1EwRkJRMGNzUTBGQlF5eEpRVUZOUml4RlFVRkxSeXhIUVVGWlJDeERRVUZETEVOQlFVTXNRMEZCUlN4RFFVTjJSQ3hEUVVWQkxFbEJRVTFGTEVkQlFVOHNUMEZEVUVNc1IwRkJZeXhMUVVGTFJDeEZRVUZKTEVsQlEzWkNSU3hIUVVGdlFpeEpRVUZKTEU5QlFVOUVMRWRCUVdFc1IwRkJSeXhGUVVWeVJDeFRRVUZUUlN4SFFVRmhUQ3hGUVVGSExFTkJSM1pDTEU5QlFVOUJMRVZCUVVVc1VVRkJVU3hOUVVGUExFMUJRVTBzUlVGQlJTeFJRVUZSU1N4SFFVRnRRa1FzUlVGQlZ5eERRVU40UlN4RFFVVkJMRk5CUVZOSExFZEJRWEZDVGl4RlFVRkhMRU5CUXk5Q0xFOUJRVTlCTEVWQlEwb3NVVUZCVVN4TlFVRlBMRVZCUVVVc1JVRkRha0lzVVVGQlVVa3NSMEZCYlVJc1IwRkJSeXhGUVVNNVFpeFpRVUZaTEVOQlEycENMRU5CUlVFc1UwRkJVMGNzUjBGQlRVTXNSVUZCVTBNc1JVRkJXU3hEUVVOc1F5eFBRVUZKUkN4SlFVRlpMRXRCUTFBc1MwRkZRU3hEUVVOTUxFMUJRVThzVDBGQlQwRXNSVUZCVVN4SlFVRkpTQ3hGUVVGWkxFVkJRVVVzUzBGQlN5eEhRVUZITEVOQlFVTXNSVUZEYWtRc1RVRkJUeXhEUVVGRExFTkJRVU5NTEVOQlFVTXNTVUZEVWxFc1JVRkJVU3hWUVVGWFZDeEhRVUZOVHl4SFFVRnhRazRzUTBGQlF5eEpRVUZOVFN4SFFVRnhRbEFzUTBGQlF5eERRVUZETEVWQlFVbFZMRU5CUTNCR0xFTkJSVW9zUTBGRlFTeFRRVUZUUXl4SFFVRlBZaXhGUVVGUFl5eEZRVUZSTEVOQlF6ZENMRTFCUVU4c1EwRkJSU3hOUVVGQlpDeEZRVUZQTEUxQlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVWbExFVkJRVWRETEVOQlFVTXNTVUZCVFVNc1IwRkJZVVlzUlVGQlIwTXNRMEZCUXl4RlFVRkhMRTlCUVVGR0xFTkJRVThzUTBGRGJFVXNRMEZGUVN4VFFVRlRTU3hIUVVGUGJFSXNSVUZCVHl4RFFVTnlRaXhOUVVGUExFTkJRVVVzVFVGQlFVRXNSVUZCVHl4TlFVRlBMRU5CUVVNc1EwRkJRMGNzUTBGQlF5eEpRVUZOUVN4RFFVRkZMRU5CUTNCRExFTkJSVUVzVTBGQlUyZENMRWRCUVZsRExFVkJRVThzUTBGRE1VSXNUMEZCVDBFc1JVRkJUU3hSUVVGUkxEaENRVUVyUWl4TlFVRk5MRU5CUXpWRUxFTkJSVUVzVTBGQlUwTXNSMEZCWVVNc1JVRkJUME1zUlVGQlN5eERRVU5vUXl4SlFVRk5ReXhGUVVGTlF5eEhRVUZYUml4RFFVRkhMRVZCUTNoQ1J5eEZRVUZOUkN4SFFVRlhSaXhGUVVGTExFdEJRVXNzUlVGRE0wSkpMRVZCUVZGR0xFZEJRVmRHTEVWQlFVc3NTMEZCU3l4RlFVTTNRa3NzUlVGQlQwZ3NSMEZCVjBZc1JVRkJTeXhMUVVGTExFVkJRelZDVFN4RlFVRk5TaXhIUVVGWFJpeEZRVUZMTEV0QlFVc3NSVUZETTBKUExFVkJRVmRNTEVkQlFWZEdMRVZCUVVzc1QwRkJUeXhGUVVOc1ExRXNSVUZCWVU0c1IwRkJWMFlzUlVGQlN5eFBRVUZQTEVWQlEzQkRVeXhGUVVGWFVDeEhRVUZYUml4RlFVRkxMRTlCUVU4c1JVRkRiRU5WTEVWQlFWbFNMRWRCUVZkR0xFVkJRVXNzVDBGQlR5eEZRVU51UTFjc1JVRkJXVlFzUjBGQlYwWXNSVUZCU3l4UFFVRlBMRVZCUTI1RFdTeEZRVUZaVml4SFFVRlhSaXhGUVVGTExFOUJRVThzUlVGRGJrTmhMRVZCUVZkRExFbEJRVThzUTBGQlJTeE5RVUZQTEU5QlFVOXNRaXhIUVVGWmEwSXNSVUZCUlN4SFFVRkhMRU5CUVVNc1JVRkJSeXhOUVVGUExFTkJRVU1zUTBGQlEyeERMRU5CUVVNc1NVRkJUVUVzUlVGQlJ5eFJRVUZUTEVWQlFVc3NSMEYzU0hCR2JVTXNSMEYyU0U5RUxFZEJRVTBzUTBGRFppeEhRVUZKWml4RlFVRk5MRkZCUTFJc1QwRkJUMk1zUlVGQlVVTXNRMEZCUXl4RlFVVnNRaXhQUVVGUlFTeEZRVUZGTEVsQlFVc3NRMEZGWWl4SlFVRkxMRWxCUTBnc1QwRkJUek5DTEVkQlFVMWhMRVZCUVVrc1MwRkJTeXhSUVVGVExFVkJRVXNzUlVGQlJ5eERRVUZETEVWQlF6RkRMRWxCUVVzc1MwRkRTQ3hQUVVGUFlpeEhRVUZOWVN4RlFVRkpMRXRCUVVzc1QwRkJVU3hGUVVGTExFVkJRVWNzUTBGQlF5eEZRVVY2UXl4SlFVRkxMRWxCUTBnc1QwRkJUM2hDTEVWQlFWRnBReXhEUVVGUkxFVkJRM3BDTEVsQlFVc3NTMEZEU0N4UFFVRlBha01zUlVGQlVXMURMRVZCUVZkTExFVkJRV01zUlVGRE1VTXNTVUZCU3l4UFFVTklMRTlCUVU5NFF5eEZRVUZSTmtJc1EwRkJTU3hGUVVOeVFpeEpRVUZMTEZGQlEwZ3NUMEZCVHpkQ0xFVkJRVkZ2UXl4RFFVRlRMRVZCUXpGQ0xFbEJRVXNzVTBGRFNDeFBRVUZQY0VNc1JVRkJVVGhDTEVOQlFVY3NSVUZGY0VJc1NVRkJTeXhKUVVOSUxFOUJRVTg1UWl4RlFVRlJLMElzUTBGQlVTeEZRVU42UWl4SlFVRkxMRXRCUTBnc1QwRkJUeTlDTEVWQlFWRXlRaXhEUVVGSExFVkJRM0JDTEVsQlFVc3NUVUZEU0N4UFFVRlBhRUlzUjBGQlRXRXNSVUZCU1N4UFFVRlBMRkZCUVZNc1IwRkJUU3hGUVVGTExFVkJRVWNzUTBGQlF5eEZRVU5zUkN4SlFVRkxMRTlCUTBnc1QwRkJUMklzUjBGQlRXRXNSVUZCU1N4UFFVRlBMRTlCUVZFc1IwRkJUU3hGUVVGTExFVkJRVWNzUTBGQlF5eEZRVU5xUkN4SlFVRkxMRWxCUTBnc1QwRkJUM2hDTEVWQlFWRXJRaXhEUVVGUkxFVkJRM3BDTEVsQlFVc3NTMEZEU0N4UFFVRlBMMElzUlVGQlVUSkNMRU5CUVVjc1JVRkRjRUlzU1VGQlN5eE5RVU5JTEU5QlFVOW9RaXhIUVVGTllTeEZRVUZKTEU5QlFVOHNVVUZCVXl4SFFVRlBMRVZCUVVzc1JVRkJSeXhEUVVGRExFVkJRMjVFTEVsQlFVc3NUMEZEU0N4UFFVRlBZaXhIUVVGTllTeEZRVUZKTEU5QlFVOHNUMEZCVVN4SFFVRlBMRVZCUVVzc1JVRkJSeXhEUVVGRExFVkJSV3hFTEVsQlFVc3NTVUZEU0N4UFFVRlBlRUlzUlVGQlVTdENMRU5CUVZFc1JVRkRla0lzU1VGQlN5eExRVU5JTEU5QlFVOHZRaXhGUVVGUk1rSXNRMEZCUnl4RlFVVndRaXhKUVVGTExFbEJRMGdzVDBGQlR6TkNMRVZCUVZGblF5eERRVUZWTEVWQlF6TkNMRWxCUVVzc1RVRkRTQ3hQUVVGUGFFTXNSVUZCVVRSQ0xFTkJRVXNzUlVGRmRFSXNTVUZCU3l4TFFVTklMRTlCUVU4MVFpeEZRVUZSTWtJc1EwRkJSeXhGUVVOd1FpeEpRVUZMTEVsQlEwZ3NUMEZCVHpOQ0xFVkJRVkVyUWl4RFFVRlJMRVZCUTNwQ0xFbEJRVXNzUzBGRFNDeFBRVUZQTDBJc1JVRkJVVEpDTEVOQlFVY3NSVUZEY0VJc1NVRkJTeXhKUVVOSUxFOUJRVTh6UWl4RlFVRlJLMElzUTBGQlVTeEZRVU42UWl4SlFVRkxMRXRCUTBnc1QwRkJUeTlDTEVWQlFWRXlRaXhEUVVGSExFVkJRM0JDTEVsQlFVc3NTVUZEU0N4UFFVRlBNMElzUlVGQlVTdENMRU5CUVZFc1JVRkRla0lzU1VGQlN5eEpRVU5JTEU5QlFVOHZRaXhGUVVGUkswSXNRMEZCVVN4RlFVTjZRaXhKUVVGTExFdEJRMGdzVDBGQlR5OUNMRVZCUVZFeVFpeERRVUZITEVWQlEzQkNMRWxCUVVzc1NVRkRTQ3hQUVVGUE0wSXNSVUZCVVN0Q0xFTkJRVkVzUlVGRGVrSXNTVUZCU3l4TFFVTklMRTlCUVU4dlFpeEZRVUZSTWtJc1EwRkJSeXhGUVVOd1FpeEpRVUZMTEVsQlEwZ3NUMEZCVHpOQ0xFVkJRVkZuUXl4RFFVRlZMRVZCUXpOQ0xFbEJRVXNzVFVGRFNDeFBRVUZQYUVNc1JVRkJVVFJDTEVOQlFVc3NSVUZEZEVJc1NVRkJTeXhKUVVOSUxFOUJRVTlVTEVkQlFVOWxMRU5CUVZNc1JVRkRla0lzU1VGQlN5eExRVU5JTEU5QlFVOW1MRWRCUVU5WkxFTkJRVkVzUlVGRGVFSXNTVUZCU3l4TlFVTklMRTlCUVU4dlFpeEZRVUZSZVVJc1EwRkJSeXhGUVVWd1FpeEpRVUZMTEVsQlEwZ3NUMEZCVDJRc1IwRkJUV0VzUlVGQlNTeFZRVUZWTEVWQlFVY3NRMEZCUXl4RlFVVnFReXhKUVVGTExFOUJRMGdzVDBGQlQzaENMRVZCUVZFMlFpeERRVUZKTEVWQlEzSkNMRWxCUVVzc1MwRkRTQ3hQUVVGUE4wSXNSVUZCVVcxRExFVkJRVmRMTEVWQlFXTXNSVUZGTVVNc1NVRkJTeXhKUVVOSUxFOUJRVTk0UXl4RlFVRlJLMElzUTBGQlVTeEZRVU42UWl4SlFVRkxMRXRCUTBnc1QwRkJUeTlDTEVWQlFWRXlRaXhEUVVGSExFVkJSWEJDTEVsQlFVc3NTVUZEVEN4SlFVRkxMRWxCUTBnc1QwRkJUek5DTEVWQlFWRjVRaXhEUVVGSExFVkJRM0JDTEVsQlFVc3NUVUZEU0N4UFFVRlBaQ3hIUVVGTllTeEZRVUZKTEZOQlFWTXNVVUZCVXl4SFFVRlBMRVZCUVVzc1JVRkJSeXhEUVVGRExFVkJRM0pFTEVsQlFVc3NUMEZEU0N4UFFVRlBZaXhIUVVGTllTeEZRVUZKTEZOQlFWTXNUMEZCVVN4SFFVRlBMRVZCUVVzc1JVRkJSeXhEUVVGRExFVkJRM0JFTEVsQlFVc3NUVUZEU0N4UFFVRlBZaXhIUVVGTllTeEZRVUZKTEZOQlFWTXNVVUZCVXl4SFFVRk5MRVZCUVVzc1JVRkJSeXhEUVVGRExFVkJRM0JFTEVsQlFVc3NUMEZEU0N4UFFVRlBZaXhIUVVGTllTeEZRVUZKTEZOQlFWTXNUMEZCVVN4SFFVRk5MRVZCUVVzc1JVRkJSeXhEUVVGRExFVkJSVzVFTEVsQlFVc3NTVUZEVEN4SlFVRkxMRXRCUTBnc1QwRkJUMVlzUjBGQlR5eEpRVUZKTEU5QlFVOHNVVUZCVVdsQ0xFVkJRVk1zVFVGQlRTeFRRVUZUU2l4RlFVRkpMRTFCUVUwc1MwRkJTeXhGUVVGSExFTkJRVU1zUlVGRE9VVXNTVUZCU3l4TlFVTklMRTlCUVU5aUxFZEJRVThzU1VGQlNTeFBRVUZQTEZGQlFWRnBRaXhGUVVGVExFMUJRVTBzUzBGQlMwb3NSVUZCU1N4TlFVRk5MRWxCUVVrc1JVRkJSeXhEUVVGRExFVkJSM3BGTEVsQlFVc3NTVUZEU0N4UFFVRlBVaXhIUVVGUExHOUNRVUZ2UWl4RlFVTndReXhSUVVORkxFOUJRVTlyUWl4RlFVRlJReXhEUVVGRExFTkJRM0JDTEVOQlEwWXNSMEZGYlVKbUxFTkJRVXNzUjBGQlN5eERRVU0zUWl4alFVRmxlRUlzUlVGRGFrSXNSVUZGUVN4UFFVRkJkME1zUlVGQlN5eE5RVUZSYUVJc1JVRkZUbWRDTEVOQlExUXNRMEZGUVN4SlFVRk5SU3hIUVVFd1FpeERRVU01UWl4TFFVRk5MRU5CUTBvc1ZVRkJWeXhMUVVOWUxGRkJRVk1zVDBGRFdDeEZRVU5CTEUxQlFVOHNRMEZEVEN4UlFVRlRMRWxCUTFRc1ZVRkJWeXhMUVVOWUxFMUJRVThzVFVGRFVDeExRVUZOTEUxQlExSXNSVUZEUVN4SlFVRkxMRU5CUTBnc1VVRkJVeXhKUVVOVUxGVkJRVmNzU1VGRFlpeEZRVU5CTEZGQlFWTXNRMEZEVUN4TlFVRlBMRTFCUTFBc1MwRkJUU3hOUVVOU0xFVkJRMEVzVlVGQlZ5eEpRVU5ZTEZWQlFWY3NTVUZEV0N4TFFVRk5MRU5CUTBvc1VVRkJVeXhKUVVOVUxGVkJRVmNzU1VGRFlpeEZRVU5CTEU5QlFWRXNRMEZEVGl4UlFVRlRMRWxCUTFRc1ZVRkJWeXhKUVVOaUxFVkJRMEVzVDBGQlVTeERRVU5PTEZGQlFWTXNTVUZEVkN4VlFVRlhMRWxCUTJJc1EwRkRSaXhGUVVWQkxGTkJRVk5ETEVkQlFXRkRMRVZCUVUxRExFVkJRVkZETEVWQlFWa3NRMEZET1VNc1IwRkJUU3hEUVVGRkxFdEJRVUZETEVWQlFVMHNUVUZCUVhwQ0xFTkJRVTBzUlVGQlNYTkNMRVZCUlhoQ0xFZEJRVWxITEVsQlFWTXNWVUZEV0N4TlFVRlBMRU5CUTB3c1VVRkJVeXhIUVVOVUxFbEJRVXQ2UWl4RFFVTlFMRVZCUjBZc1NVRkJUVEJDTEVWQlFWRkdMRVZCUVZkRExFTkJRVWtzUlVGRmVrSkZMRVZCUVUxUUxFZEJRWGRDU3l4RFFVRkpMRVZCUzNSRExFZEJTa2tzVDBGQlQwVXNSMEZCVVN4WFFVTnFRa0VzUlVGQlRVRXNSVUZCU1VRc1EwRkJTeXhIUVVkaVF5eEZRVU5HTEUxQlFVOHNRMEZEVEN4UlFVRlRMRWRCUTFRc1NVRkJRVUVzUTBGRFJpeERRVWxLTEVOQlJVRXNVMEZCVTBNc1IwRkJWME1zUlVGQlR5eERRVVY2UWl4TlFVRlBMRU5CUVVNc1NVRkVSMEVzUlVGQlRTeEpRVUZMUXl4SFFVRk5RU3hGUVVGRkxFdEJRVXNzUlVGQlJTeFBRVUZQTEVOQlFVTkRMRVZCUVVjc1NVRkJUU3hIUVVGSFFTeERRVUZETEVsQlFVa3NSVUZCUlN4TlFVRk5MRWxCUVVzc1JVRkJSU3hEUVVNdlJDeEpRVUZMUml4RFFVRkxMRU5CUXpGQ0xFTkJSVUVzVTBGQlUwY3NSMEZCVFVNc1JVRkJUM0pFTEVWQlFVOXpSQ3hGUVVGVkxFTkJRM0pETEVsQlFVMURMRVZCUVZWR0xFVkJRVTBzVFVGQlRYSkVMRU5CUVVzc1JVRkZha01zUjBGQlNYVkVMRVZCUVZNc1EwRkRXQ3hKUVVGTlF5eEZRVUZOTEVOQlFVTXNSVUZEVkVNc1JVRkJZU3hGUVVOcVFpeFJRVUZYZGtRc1MwRkJTMjlFTEVWQlEyUXNSMEZCU1Vrc1IwRkJaVW9zUlVGQlZYQkVMRU5CUVVNc1JVRkJSeXhEUVVNdlFpeEpRVUZOWVN4RlFVRkpkVU1zUlVGQlUzQkVMRU5CUVVNc1JVRkRiRUpaTEVWQlFWTkRMRVZCUVVVc1QwRkJVMEVzUlVGQlJTeFBRVUZUTEVWQlFVa3NSVUZEYWtNc1EwRkJRMEVzUlVGQlJTeFRRVUZYUVN4RlFVRkZMRkZCUTJ4Q2VVTXNSVUZCU1hwRExFVkJRVVVzVFVGQlRTeEpRVUZKTEVOQlFVTXNRMEZCUXl4RlFVRkpRU3hGUVVGRkxFMUJRVTEzUXl4RlFVRlJMRTFCUVUxRkxFVkJRVmxCTEVWQlFXRXpReXhEUVVGTkxFTkJRVU1zUjBGRk9VVXlReXhIUVVGak0wTXNRMEZEYUVJc1EwRkZSaXhOUVVGUExFTkJRVU41UXl4RlFVRlRReXhEUVVGSExFTkJRM1JDTEV0QlEwVXNUMEZCVHl4RFFVRkRSQ3hGUVVGVExFTkJRVU1zUTBGQlF5eERRVVYyUWl4RFFVVkJMRk5CUVZOSkxFZEJRVzlDU2l4RlFVRlRMRU5CUTNCRExFbEJRVTFMTEVWQlFWZDBReXhIUVVGVkxFTkJRM3BDTEU5QlFWRkJMRVZCUVU4c1EwRkRZaXhKUVVGTExFbEJRMGdzVFVGQlR5eGpRVU5VTEVsQlFVc3NTVUZEU0N4TlFVRlBMRk5CUTFRc1NVRkJTeXhKUVVOSUxFMUJRVThzVTBGRFZDeEpRVUZMTEVsQlEwd3NTVUZCU3l4SlFVTklMRTFCUVU4c1QwRkRWQ3hKUVVGTExFbEJRMGdzVFVGQlR5eE5RVU5VTEVsQlFVc3NTVUZEU0N4TlFVRlBMRlZCUTFRc1NVRkJTeXhKUVVOTUxFbEJRVXNzU1VGRFNDeE5RVUZQTEZGQlExUXNTVUZCU3l4SlFVTklMRTFCUVU4c1QwRkRWQ3hKUVVGTExFbEJRMHdzU1VGQlN5eEpRVU5JTEUxQlFVOHNWVUZEVkN4SlFVRkxMRWxCUTBnc1RVRkJUeXhoUVVOVUxFbEJRVXNzU1VGRFNDeE5RVUZQTEZkQlExUXNTVUZCU3l4SlFVTklMRTFCUVU4c1ZVRkRWQ3hSUVVORkxFOUJRVThzU1VGRFdDeERRVU5HTEVWQlJVbDFReXhGUVVGUExFdEJRMUJETEVWQlEwb3NUMEZCUzBNc1JVRkJXVklzUlVGQlVTeERRVUZETEVsQlEzaENUU3hGUVVGUFJ5eEhRVUZUTEU5QlFVOVVMRVZCUVZFc1EwRkJReXhIUVVjM1FsRXNSVUZCV1ZJc1JVRkJVU3hEUVVGRExFbEJRMjVDVFN4SlFVTklRU3hGUVVGUExFbEJRVWxKTEVkQlFXZENWaXhGUVVGUkxFTkJRVU1zUjBGRmRFTlBMRVZCUVdsQ1VDeEZRVUZSTEVkQlIzUkNVU3hGUVVGWlVpeEZRVUZSTEVOQlFVTXNTVUZEZUVKQkxFVkJRVkVzUjBGQlMwRXNSVUZCVVN4RlFVRkpMRWRCUVVzc1JVRkJTU3hIUVVjdlFsRXNSVUZCV1ZJc1JVRkJVU3hEUVVGRExFbEJRM0JDUVN4RlFVRlJMRVZCUVVrc1NVRkJUVUVzUlVGQlVTeEpRVUZOTEVWQlEyeERRU3hGUVVGUkxFZEJRVXNzUjBGRFNrRXNSVUZCVVN4SlFVRk5MRWxCUVUxQkxFVkJRVkVzU1VGQlRTeEpRVU16UTBFc1JVRkJVU3hGUVVGSkxFbEJTVnBCTEVWQlFWRXNTVUZCVFN4SFFVRkxRU3hGUVVGUkxFbEJRemRDUVN4RlFVRlJMRVZCUVVrc1EwRkJRMEVzUlVGQlVTeEhRVWRzUWxFc1JVRkJXVklzUlVGQlVTeERRVUZETEVsQlEzaENRU3hGUVVGUkxFVkJRVWxYTEVkQlFWbFlMRVZCUVZFc1EwRkJReXhIUVZrMVFpeERRVlJOTEU5QlFVOHNTMEZCUzBFc1EwRkJUeXhGUVVGRkxFOUJRVThzUTBGQlExa3NSVUZCUjBNc1NVRkJUU3hEUVVOcVJDeEpRVUZOYWtJc1JVRkJTVk1zUlVGQlVWRXNRMEZCUXl4RlFVTnVRaXhQUVVGSmFrSXNTVUZEUm1kQ0xFVkJRVVZvUWl4RFFVRkRMRVZCUVVsSkxFVkJRVkZoTEVOQlFVTXNSMEZIV0VRc1EwRkRWQ3hGUVVGSExFTkJRVU1zUTBGQlF5eEZRVVZUVGl4RlFVRk5ReXhEUVVGakxFTkJRM0JETEVOQlJVRXNTVUZCU1U4c1IwRkJjVUlzUzBGRmVrSXNVMEZCVTBNc1NVRkJiVUlzUTBGRE1VSXNUMEZCUzBRc1MwRkRTRUVzUjBGQmNVSkZMRVZCUVZNc1YwRkJWeXhoUVVGaExFZEJSMnBFUml4RlFVTlVMRU5CUlVFc1UwRkJVMGNzUjBGQmMwSnNSQ3hGUVVGUGNVSXNSVUZCVVN4RFFVTTFReXhIUVVGSmNrSXNSVUZCVFN4UlFVTlNMRTlCUVU5QkxFVkJSMVFzU1VGQlRYTkNMRVZCUVdFMlFpeEhRVUZWTEhWQ1FVRjFRbTVFTEVWQlFVMHNSMEZCUnl4RlFVVTNSQ3hIUVVGSkxFTkJRVU56UWl4RlFVTklMRTlCUVU5MFFpeEZRVTFVTEVsQlFVMXZSQ3hGUVVoWlJDeEhRVUZWTEU5QlFVODVRaXhGUVVGUlF5eERRVUZWTEVWQlF6ZENMRzlDUVVGdlFqQkNMRWRCUVdsQ0xFTkJRVU1zUlVGRmVrTXNTVUZCUzBzc1IwRkJUV3hETEVkQlFXRnJReXhGUVVGSGFFTXNSVUZCVVVNc1EwRkJWU3hEUVVGRExFVkJSVzVGTEU5QlFVazRRaXhGUVVGUExGTkJRVk1zVFVGQlV5eEZRVU53UW5CRUxFVkJSMFp2UkN4RFFVTlVMRU5CUlVFc1UwRkJVMFVzUjBGQmEwSkdMRVZCUVZFdlFpeEZRVUZSTEVOQlEzcERMRTlCUVU4c1RVRkJUU3hWUVVGVkxFOUJRVThzUjBGQlJ5dENMRVZCUVU4c1NVRkJTeXhIUVVGTlJpeEhRVUZ6UWl4RlFVRkhOMElzUTBGQlRTeERRVUZETEVOQlFVTXNRMEZEZEVZc1EwRk5UeXhUUVVGVGEwTXNSMEZCYTBKc1F5eEZRVUZSVlN4RlFVRlBlVUlzUlVGQlVTeERRVU4yUkN4SlFVRk5TaXhGUVVGVFJTeEhRVUZyUWtnc1IwRkJWU3haUVVGWlN5eERRVUZOTEVWQlFVZHVReXhEUVVGTkxFVkJRM0JGVFN4RlFVRlJlVUlzUlVGQlR5eEpRVUZMY2tNc1IwRkJUV2hDTEVkQlFXRm5RaXhGUVVGSFRTeERRVUZOTEVOQlFVTXNSVUZEYWtSdlF5eEZRVUZ2UWpsQ0xFVkJRVTBzUzBGQlRWb3NSMEZCVFVFc1JVRkJSU3hoUVVGaExFVkJSWFpFTEVkQlFVa3dReXhGUVVOR0xFMUJRVThzUTBGQlJTeE5RVUZCTVVJc1JVRkJUeXhQUVVGQmNVSXNSVUZCVVN4alFVRmxTeXhGUVVGclFpeGhRVUZqTEVWQlEyeEZMRU5CUTB3c1IwRkJUU3hEUVVGRFF5eEZRVUZoTVVJc1EwRkJVU3hGUVVGSlRpeEhRVUZYUXl4RFFVRkxMRVZCUXpsRGFrUXNSVUZCVVN4UFFVRlBaMFlzUlVGQllTeEhRVUZITEVWQlF5OUNMRU5CUVVORExFVkJRVmt4UWl4RFFVRlBMRVZCUVVsSUxFZEJRVTFETEVWQlFVOXlSQ3hGUVVGUGMwUXNRMEZCVVN4RlFVTndSQ3hEUVVGRE5FSXNSVUZCVVhKQ0xFVkJRVTFETEVOQlFXTXNSVUZCU1ZBc1JVRkROMEpKTEVkQlFXOUNTaXhEUVVGUExFVkJRek5DTEVOQlFVTXNTMEZCVFN4TFFVRk5MRTFCUVZNc1JVRkROVUlzUjBGQlNVY3NSMEZCWlVnc1JVRkJVeXhIUVVGSExFZEJRVXRITEVkQlFXVklMRVZCUVZNc1IwRkJSeXhGUVVNM1JDeE5RVUZOTEVsQlFVazBRaXhIUVVOU0xIVkVRVU5HTEVWQlJVWXNUVUZCVHl4RFFVRkZMRTFCUVVFNVFpeEZRVUZQTEU5QlFVRnhRaXhGUVVGUkxFMUJRVUV4UlN4RlFVRlBMRmRCUVVGcFJpeEZRVUZaTEZGQlFVRXhRaXhGUVVGVExFOUJRVUV5UWl4RlFVRlJMRXRCUVVGeVFpeEZRVUZOTEdWQlFVRkRMRU5CUVdVc1EwRkRia1lzUTBGRFJpeERRVVZQTEZOQlFWTnpRaXhIUVVGblFucERMRVZCUVZGVkxFVkJRVTk1UWl4RlFVRlJMRU5CUTNKRUxFZEJRVTBzUTBGQlJTeFBRVUZCU1N4RlFVRlJMRXRCUVVGeVFpeEZRVUZOTEdWQlFVRkRMRVZCUVdkQ0xHTkJRVUYxUWl4RFFVRmpMRVZCUVVsU0xFZEJRV3RDYkVNc1JVRkJVVlVzUlVGQlQzbENMRU5CUVUwc1JVRkRMMFlzVFVGQlR5eERRVUZEU1N4RlFVRlJja0lzUlVGQlRVTXNSVUZCWjBKMVFpeERRVUZoTEVOQlEzSkVMRU5EY21GQkxFbEJRVTFETEVkQlFXZENMRU5CUVVNc1JVRkJSeXhIUVVGSkxFZEJRVWtzUjBGQlNTeEpRVUZMTEVsQlFVc3NTVUZCU3l4SlFVRkxMRWxCUVVzc1NVRkJTeXhKUVVGTExFZEJRVWNzUlVGRE1VVkRMRWRCUVdFc1EwRkJReXhGUVVGSExFZEJRVWtzUjBGQlNTeEhRVUZKTEVsQlFVc3NTVUZCU3l4SlFVRkxMRWxCUVVzc1NVRkJTeXhKUVVGTExFbEJRVXNzUjBGQlJ5eEZRVVZ5UlN4VFFVRlRReXhIUVVGbFF5eEZRVUZOUXl4RlFVRlBMRU5CUTI1RExFOUJRVThzU1VGQlNVTXNSMEZEVkN4dlFrRkRRU3hwUWtGQmFVSkVMRU5CUVVzc1lVRkJZU3hQUVVGUFFTeERRVUZMTEZWQlFWVkVMRU5CUVVrc2IwSkJReTlFTEVOQlEwWXNRMEZGUVN4VFFVRlRSeXhIUVVGVlF5eEZRVUZOUXl4RlFVRlBReXhGUVVGTExFTkJRMjVETEVsQlFVMURMRVZCUVVrc1NVRkJTU3hMUVVGTExFdEJRVXNzU1VGQlNVZ3NSVUZCVFVNc1JVRkJVU3hGUVVGSFF5eERRVUZITEVOQlFVTXNSVUZGTjBOR0xFVkJRVThzUzBGQlQwRXNSMEZCVVN4SFFVTjRRa2NzUlVGQlJTeGxRVUZsUVN4RlFVRkZMR1ZCUVdVc1JVRkJTU3hKUVVGSkxFVkJSelZETEVsQlFVMURMRVZCUVV0RUxFVkJRVVVzVlVGQlZTeEZRVVYyUWl4UFFVRlBReXhKUVVGUExFVkJRVWtzUlVGQlNVRXNRMEZEZUVJc1EwRkZRU3hUUVVGVFF5eEhRVUZsVEN4RlFVRk5ReXhGUVVGUFF5eEZRVUZMTEVOQlEzaERMRTlCUVU5QkxFZEJRVTlKTEVkQlFWZE9MRU5CUVVrc1JVRkJTVTRzUjBGQllVUXNTVUZCWlZFc1JVRkJVU3hEUVVGRExFTkJRM2hGTEVOQlJVRXNVMEZCVTAwc1IwRkJhVUpRTEVWQlFVMVJMRVZCUVZNc1EwRkRka01zU1VGQlRVTXNSVUZCVVVnc1IwRkJWMDRzUTBGQlNTeEZRVUZKVGl4SFFVRmhSQ3hIUVVNMVEybENMRVZCUVZORUxFVkJRVTBzVlVGQlZ5eEhRVUZOTEVWQlFVbEVMRU5CUVU4c1JVRkRNME5PTEVWQlFVMU5MRVZCUVZWRExFVkJRVTFETEVOQlFVMHNSVUZET1VJc1RVRkJUeXhEUVVGRkxFMUJRVTlCTEVWQlFWTXNSVUZCUnl4SlFVRkJVaXhEUVVGSkxFTkJRMnhETEVOQlRVOHNVMEZCVTFNc1IwRkJaMEpETEVWQlFWTXNRMEZEZGtNc1IwRkJUU3hEUVVGRkxFdEJRVUZhTEVWQlFVMHNUVUZCUVVNc1JVRkJUeXhKUVVGQlF5eERRVUZKTEVWQlFVbFZMRVZCUXpOQ1NpeEZRVUZWU0N4SFFVRmxUQ3hGUVVGTlF5eEZRVUZQUXl4RFFVRkhMRVZCUTNwRFZ5eEZRVUZWWkN4SFFVRlZReXhGUVVGTlF5eEZRVUZQUXl4RFFVRkhMRVZCUld4RFdTeEZRVUZoTEV0QlFVc3NUMEZCVDA0c1JVRkJWVXNzUlVGQlZTeEpRVUZOTEVOQlFVTXNSVUZEZEVSRkxFVkJSVVlzVDBGQlNVUXNSVUZCWVN4SFFVTm1ReXhGUVVGWFppeEZRVUZQTEVWQlEyeENZeXhGUVVGaFJTeEhRVUZuUWtRc1EwRkJVU3hIUVVNMVFrUXNSVUZCWVVVc1IwRkJaMEpvUWl4RFFVRkpMRWRCUXpGRFpTeEZRVUZYWml4RlFVRlBMRVZCUTJ4Q1l5eEZRVUZoTEVkQlJXSkRMRVZCUVZkbUxFVkJSMDVwUWl4RlFVRkJMRU5CUVVVc1UwRkJRVVlzUlVGQlZTeFhRVUZCUkN4RlFVRlpMRkZCUVVGRUxFZEJRVmxMTEVkQlFWZE9MRU5CUVU4c1JVRkRMMFFzUTBGRlR5eFRRVUZUVHl4SFFVRm5Ra01zUlVGQlZTeERRVU40UXl4SFFVRk5MRU5CUVVVc1UwRkJRVXdzUlVGQlZTeFhRVUZCUkN4RlFVRlpMRkZCUVVGRUxFTkJRVkVzUlVGQlNVOHNSVUZEZUVORExFVkJRV2RDZEVJc1IwRkJWV2RDTEVWQlFWVXNSVUZCUnl4RFFVRkRMRVZCUTNoRFR5eEZRVUZoUXl4SFFVRlhVaXhEUVVGUkxFVkJSVGxDVUN4RlFVRlZUU3hGUVVGaExFVkJRVWxFTEVWQlFWVlJMRVZCUVdkQ0xFVkJRM1pFY2tJc1JVRkZSVkVzUlVGQlZTeEhRVU5hVWl4RlFVRlBaU3hGUVVGWExFVkJRMnhDVUN4SFFVRlhaU3hIUVVGWGRrSXNRMEZCU1N4SFFVTnFRbEVzUlVGQlZXTXNSMEZEYmtKMFFpeEZRVUZQWlN4RlFVRlhMRVZCUTJ4Q1VDeEhRVUZYWlN4SFFVRlhVaXhEUVVGUkxFZEJSVGxDWml4RlFVRlBaU3hGUVVkVUxFZEJRVTBzUTBGQlJTeE5RVUZCWkN4RlFVRlBMRWxCUVVGRExFTkJRVWtzUlVGQlNVc3NSMEZCYVVKUUxFVkJRVTFSTEVOQlFVOHNSVUZEY2tRc1QwRkJUMU1zUlVGQlFTeERRVUZGTEV0QlFVRnFRaXhGUVVGTkxFMUJRVUZETEVWQlFVOHNTVUZCUVVNc1IwRkJVV2RDTEVkQlFWZEZMRU5CUVZFc1JVRkRia1FzUTBGRlR5eFRRVUZUU1N4SFFVRnRRa01zUlVGQlZTeERRVU16UXl4SFFVRk5MRU5CUVVVc1MwRkJRWHBDTEVWQlFVMHNUVUZCUVVNc1JVRkJUeXhKUVVGQlF5eERRVUZKTEVWQlFVbDFRaXhGUVVOMlFtcENMRVZCUVZWSUxFZEJRV1ZNTEVWQlFVMURMRVZCUVU5RExFTkJRVWNzUlVGREwwTXNUMEZCVDJVc1JVRkJRU3hEUVVGRkxFdEJRVUZxUWl4RlFVRk5MRkZCUVVGUkxFZEJRVmxWTEVkQlFWZFBMRU5CUVZFc1JVRkRhRVFzUTBGRlR5eFRRVUZUUXl4SFFVRnRRa01zUlVGQllTeERRVU01UXl4SFFVRk5MRU5CUVVVc1MwRkJRVE5DTEVWQlFVMHNVVUZCUVZFc1EwRkJVU3hGUVVGSmJVSXNSVUZEY0VJc1EwRkJSU3hOUVVGQk1VSXNSVUZCVHl4SlFVRkJReXhEUVVGSkxFVkJRVWxMTEVkQlFXbENVQ3hGUVVGTlVTeERRVUZQTEVWQlEzSkVMRTlCUVU5VExFVkJRVUVzUTBGQlJTeExRVUZCYWtJc1JVRkJUU3hOUVVGQlF5eEZRVUZQTEVsQlFVRkRMRWRCUVZGblFpeEhRVUZYVXl4RFFVRlhMRVZCUTNSRUxFTkJSVThzVTBGQlUwTXNSMEZCYlVKRExFVkJRVXNzUTBGRGRFTXNTVUZCVFVNc1JVRkJXVU1zUjBGQlZVWXNSVUZCU1N4UlFVRlJMRVZCUTNSRFJ5eEZRVUZaUXl4SFFVRmxTaXhGUVVGSkxGZEJRVmtzUlVGQlIySXNSMEZCWjBKaExFVkJRVWtzVVVGQlVTeERRVUZETEVWQlF6TkZTeXhGUVVGbFJDeEhRVUZsU2l4RlFVRkpMRkZCUVZNc1JVRkJSeXhEUVVGRExFVkJSV3BFTEU5QlFVdERMRVZCUlU5RkxFVkJSVUZGTEVWQlJVVXNSMEZFVEhaRExFZEJRV1VzVlVGQlYydERMRVZCUVVrc1QwRkJUeXhGUVVaeVEyeERMRWRCUVdVc1QwRkJVV3RETEVWQlFVa3NTVUZCU1N4RlFVWXZRbXhETEVkQlFXVXNWMEZCV1d0RExFVkJRVWtzVVVGQlVTeERRVTFzUkN4RFFVVlBMRk5CUVZOTkxFZEJRWE5DVGl4RlFVRkxMRU5CUTNwRExFbEJRVTFETEVWQlFWbERMRWRCUVZWR0xFVkJRVWtzU1VGQlNTeEZRVU5zUTA4c1JVRkJaVWdzUjBGQlpVb3NSVUZCU1N4UlFVRlRMRVZCUVVkT0xFZEJRVmROTEVWQlFVa3NTVUZCU1N4RFFVRkRMRVZCUlhCRkxFOUJRVXRETEVWQlJVOU5MRVZCUlVVc1IwRkVUSHBETEVkQlFXVXNWVUZCVjJ0RExFVkJRVWtzVDBGQlR5eEZRVVp5UTJ4RExFZEJRV1VzVDBGQlVXdERMRVZCUVVrc1NVRkJTU3hEUVVreFF5eERRVVZQTEZOQlFWTlJMRWRCUVhkQ1VpeEZRVUZMTEVOQlF6TkRMRWxCUVUxRExFVkJRVmxETEVkQlFWVkdMRVZCUVVrc1NVRkJTU3hGUVVOc1ExTXNSVUZCWVV3c1IwRkJaVW9zUlVGQlNTeE5RVUZQTEVWQlFVY3NSVUZCUlN4RlFVTTFRMVVzUlVGQlYwNHNSMEZCWlVvc1JVRkJTU3hKUVVGTExFVkJRVWRYTEVkQlFWbFlMRVZCUVVrc1MwRkJUVUVzUlVGQlNTeExRVUZMTEVOQlFVTXNSVUZGZUVVc1QwRkJTME1zUlVGRlQxRXNSVUZGUVVNc1JVRkZSU3hIUVVSTU5VTXNSMEZCWlN4TlFVRlBhME1zUlVGQlNTeEhRVUZITEVWQlJqZENiRU1zUjBGQlpTeFJRVUZUYTBNc1JVRkJTU3hMUVVGTExFVkJSbXBEYkVNc1IwRkJaU3hQUVVGUmEwTXNSVUZCU1N4SlFVRkpMRU5CVFRGRExFTkJSVThzVTBGQlUxa3NSMEZCYlVKYUxFVkJRVXNzUTBGRGRFTXNSMEZCVFN4RFFVRkZMRXRCUVVGaExFVkJRVTBzVDBGQlFVTXNSVUZCVVN4UFFVRkJReXhGUVVGUkxGbEJRVUZETEVOQlFWa3NSVUZCU1doQ0xFVkJRM2hEYVVJc1JVRkRSbUlzUjBGQlpWTXNSVUZCVFN4RlFVRkhMRVZCUVVVc1IwRkRla0pCTEVsQlFWTXNTVUZCVFVNc1NVRkJWeXhIUVVGTFF5eEpRVUZYTEVkQlFVdERMRWxCUVdkQ0xFVkJRMnhGUlN4RlFVRmpaQ3hIUVVGbFZTeEZRVUZSTEVWQlFVY3NSVUZCUlN4RlFVTXhRMHNzUlVGQlkyWXNSMEZCWlZjc1JVRkJVU3hGUVVGSExFVkJRVVVzUlVGRE1VTkxMRVZCUVcxQ2FFSXNSMEZCWlZrc1JVRkJZU3hGUVVGSExFZEJRVWNzUlVGRmRrUXNUMEZCUzBNc1JVRkZUME1zUlVGRlFVTXNSVUZGUVVNc1JVRkZSU3hIUVVSTWRFUXNSMEZCWlN4alFVRmxhMFFzUTBGQlZ5eEZRVVo2UTJ4RUxFZEJRV1VzVTBGQlZXbEVMRU5CUVUwc1JVRkdMMEpxUkN4SFFVRmxMRk5CUVZWblJDeERRVUZOTEVWQlJpOUNhRVFzUjBGQlpTeFBRVUZSSzBNc1EwRkJTU3hEUVZGMFF5eERRMjVJUVN4SlFVRk5VU3hIUVVGVkxHMUNRVU5XUXl4SFFVRlhMRTlCUldwQ0xGTkJRVk5ETEVkQlFXZENReXhGUVVGTkxFTkJRemRDTEU5QlFVOHNTVUZCU1VNc1IwRkJVU3h0UWtGQmIwSXNZVUZCWVVRc1JVRkJTeXhKUVVGSkxHOUNRVUZ2UWl4RFFVTnVSaXhEUVVkQkxGTkJRVk5GTEVkQlFYVkNReXhGUVVGSkxFTkJRMnhETEU5QlFVbEJMRVZCUVVjc1YwRkJZU3hQUVVOc1FrRXNSVUZCUnl4VFFVRlhReXhIUVVGblFrUXNSVUZCUnl4RFFVRkRMRWRCUlRkQ1FTeEZRVUZITEZGQlExb3NRMEZKUVN4VFFVRlRSU3hIUVVGTlF5eEZRVUZOUXl4RlFVRk5MRU5CUTNwQ0xFbEJRVTFETEVWQlFWVXNRMEZEWkN4SFFVRkpSaXhGUVVGTExFZEJRMVFzUzBGQlRVRXNSVUZCU3l4TFFVTllMRVZCUVVkQkxFVkJRVXNzUlVGRFVpeEZRVUZIUVN4RlFVRkxMRVZCUTFJc1NVRkJTMEVzUlVGQlN5eEpRVU5XTEZGQlFWTkJMRVZCUVVzc1QwRkRhRUlzUlVGRFFTeFBRVUZQTEVsQlFVbEhMRVZCUVZORExFZEJRVUZETEVsQlFVRXNSMEZCUzBnc1IwRkJXVVFzUjBGQmFrSXNRMEZCZFVJc1NVRkJTME1zUTBGQlVTeEZRVUZETEVOQlF6TkVMRU5CU1VFc1UwRkJVMGtzUjBGQlZVTXNSVUZCVTBNc1JVRkJSME1zUlVGQlNTeERRVVZxUXl4SlFVRkpReXhGUVVGWFNDeEZRVUZWUXl4RlFVRkpMRWRCUVVzc1NVRkhOVUpITEVWQlFVdEdMRVZCUVVjc1QwRkJUME1zUTBGQlVTeEZRVWMzUWl4SFFVRkpSaXhKUVVGTlJ5eEZRVU5TTEUxQlFVOHNRMEZCUTBRc1JVRkJWVVlzUTBGQlF5eEZRVWx5UWtVc1NVRkJZVU1zUlVGQlMwZ3NSMEZCU3l4SFFVRkxMRWxCUnpWQ0xFbEJRVTFKTEVWQlFVdElMRVZCUVVjc1QwRkJUME1zUTBGQlVTeEZRVU0zUWl4UFFVRkpReXhKUVVGUFF5eEZRVU5HTEVOQlFVTkdMRVZCUVZWRExFTkJRVVVzUlVGSlppeERRVUZEU2l4RlFVRlZMRXRCUVVzc1NVRkJTVWtzUlVGQlNVTXNRMEZCUlN4RlFVRkpMRWRCUVVzc1NVRkJUU3hMUVVGTExFbEJRVWxFTEVWQlFVbERMRU5CUVVVc1EwRkJReXhEUVVOc1JTeERRVWRCTEZOQlFWTkRMRWRCUVZGRExFVkJRVWxETEVWQlFWRXNRMEZETTBKRUxFZEJRVTFETEVWQlFWTXNSMEZCU3l4SlFVVndRaXhKUVVGTlF5eEZRVUZKTEVsQlFVa3NTMEZCUzBZc1EwRkJSU3hGUVVWeVFpeE5RVUZQTEVOQlEwd3NTMEZCVFVVc1JVRkJSU3hsUVVGbExFVkJRM1pDTEUxQlFVOUJMRVZCUVVVc1dVRkJXU3hGUVVGSkxFVkJRM3BDTEVsQlFVdEJMRVZCUVVVc1YwRkJWeXhGUVVOc1FpeExRVUZOUVN4RlFVRkZMRmxCUVZrc1JVRkRjRUlzVDBGQlVVRXNSVUZCUlN4alFVRmpMRVZCUTNoQ0xFOUJRVkZCTEVWQlFVVXNZMEZCWXl4RlFVTjRRaXhaUVVGaFFTeEZRVUZGTEcxQ1FVRnRRaXhEUVVOd1F5eERRVU5HTEVOQlIwRXNVMEZCVTBNc1IwRkJVVU1zUlVGQlMwZ3NSVUZCVVhKQ0xFVkJRVTBzUTBGRGJFTXNUMEZCVDFrc1IwRkJWV0VzUjBGQllVUXNRMEZCUnl4RlFVRkhTQ3hGUVVGUmNrSXNRMEZCU1N4RFFVTnNSQ3hEUVVkQkxGTkJRVk13UWl4SFFVRlhjRUlzUlVGQlRYRkNMRVZCUVVzc1EwRkROMElzU1VGQlRVTXNSVUZCVDNSQ0xFVkJRVXNzUlVGRGFFSjFRaXhGUVVGUGRrSXNSVUZCU3l4RlFVRkZMRXRCUVU4c1MwRkJTeXhOUVVGTmNVSXNSVUZCU1N4TFFVRkxMRVZCUTNwRFJ5eEZRVUZSZUVJc1JVRkJTeXhGUVVGRkxFMUJRVkVzUzBGQlN5eE5RVUZOY1VJc1JVRkJTU3hOUVVGTkxFVkJRVWtzUzBGQlN5eE5RVUZOUVN4RlFVRkpMRkZCUVZFc1JVRkJTU3hGUVVNelJVa3NSVUZCU1hKQ0xFZEJRVUZETEVWQlFVRXNSMEZEUTB3c1JVRkJTeXhIUVVST0xFTkJSVVlzUzBGQlFYVkNMRVZCUTBFc1RVRkJRVU1zUlVGRFFTeEpRVU5GTEV0QlFVc3NTVUZCU1hoQ0xFVkJRVXNzUlVGQlJTeEpRVUZMTUVJc1IwRkJXVWdzUlVGQlRVTXNRMEZCU3l4RFFVRkRMRVZCUXpkRExFdEJRVXNzVFVGQlRVZ3NSVUZCU1N4SlFVRkpMRVZCUTI1Q0xFdEJRVXNzVFVGQlRVRXNSVUZCU1N4TFFVRkxMRVZCUVVrc1EwRkROVUlzUjBGRFFVMHNSVUZCWTBNc1JVRkJVeXhYUVVGWExFTkJRMmhETEUxQlFVOVFMRVZCUVVrc1RVRkJVU3hMUVVGTExFMUJRVTFCTEVWQlFVa3NTMEZCU3l4RlFVTjJReXhUUVVGVlFTeEZRVUZKTEZOQlFWY3NTMEZCU3l4TlFVRk5RU3hGUVVGSkxGRkJRVkVzUlVGRGFFUXNUMEZCVVVFc1JVRkJTU3hQUVVGVExFdEJRVXNzVFVGQlRVRXNSVUZCU1N4TlFVRk5MRVZCUXpGRExFMUJRVTlCTEVWQlFVa3NUVUZCVVN4TFFVRkxMRTFCUVUxQkxFVkJRVWtzUzBGQlN5eEZRVU4yUXl4TFFVRk5RU3hGUVVGSkxFdEJRVThzUzBGQlN5eE5RVUZOUVN4RlFVRkpMRWxCUVVrc1JVRkRjRU1zVFVGQlQwRXNSVUZCU1N4TlFVTllMRkZCUVZOQkxFVkJRVWtzVVVGRFlpeFJRVUZUUVN4RlFVRkpMRkZCUTJJc1lVRkJZMEVzUlVGQlNTeFpRVU53UWl4RFFVRkRMRVZCUVVVc1IwRkJSeXhqUVVGakxFVkJRM0JDWkN4RlFVRlZXU3hIUVVGaFRTeERRVUZETEVWQlJYUkNMRU5CUVVOWUxFVkJRVWxPTEVOQlFVTXNSVUZCU1VZc1IwRkJWVU1zUlVGQlUyVXNSVUZCVFhSQ0xFVkJRVXNzU1VGQlNTeEZRVVZvUkN4UFFVRkpNa0lzU1VGQlowSXNTVUZEYkVKaUxFZEJRVTFoTEVWQlJVNXVRaXhGUVVGSlVpeEZRVUZMTEV0QlFVc3NUMEZCVDJNc1EwRkJSU3hIUVVkc1FpeERRVUZGTEVkQlFVRkJMRVZCUVVrc1JVRkJRVTRzUTBGQlJTeERRVU5xUWl4RFFVbEJMRk5CUVZOeFFpeEhRVUZ2UWtNc1JVRkJVVU1zUlVGQldVTXNSVUZCVFVNc1JVRkJVVU1zUlVGQlRVTXNSVUZCWjBJc1EwRkRia1lzUjBGQlRTeERRVUZGTEZGQlFVRkRMRVZCUVZNc1MwRkJRVEZETEVOQlFVc3NSVUZCU1hORExFVkJRekZDTEVkQlFVbEdMRWRCUVZVc1QwRkJUeXhMUVVGTFFTeERRVUZOTEVWQlFVVXNVMEZCVnl4RlFVRkhMRU5CUXpsRExFbEJRVTFQTEVWQlFYRkNUaXhIUVVGamNrTXNSVUZEZGtOTkxFVkJRVTlITEVWQlFWTXNWMEZCVnpKQ0xFVkJRVkV4UWl4SFFVRkJReXhGUVVGQkxFZEJRemxDTWtJc1IwRkVPRUlzUTBGRmFrTXNTMEZCVFVzc1JVRkRUaXhsUVVGQlJpeERRVU5HTEVWQlFVTXNSVUZEU0N4UFFVRlBReXhGUVVGVmNFTXNSVUZCVDBFc1JVRkJTeXhSUVVGUlRpeERRVUZKTEVOQlF6TkRMRXRCUTBVc1VVRkJUMU1zUlVGQlV5eFJRVU5rTEVsQlFVbFNMRWRCUVZFc1lVRkJZeXhqUVVGamRVTXNRMEZCU1N4M1FrRkJkMEpFTEVOQlFVMHNSVUZCUlN4RFFVTTVSU3hEUVVWS0xFTkJTVUVzVTBGQlUwc3NSMEZCWVhwRExFVkJRVWx2UXl4RlFVRlJUU3hGUVVGVExFZEJRVTBzUTBGREwwTXNUMEZCVHpGRExFVkJRVWNzVVVGRFRqSkRMRWRCUVZVc1QwRkJUME1zUjBGQlR5eFBRVUZQTEU5QlFVOHNSVUZCUnl4RFFVTjJReXhQUVVGQlJpeEZRVU5CTEZsQlFXRXNSVUZEWml4RFFVRkRMRVZCUVVVc2VVSkJRWGxDTVVNc1JVRkJTVzlETEVOQlFVMHNSVUZEZEVNc1NVRkRUaXhEUVVWQkxGTkJRVk5UTEVkQlFWVnNReXhGUVVGSGJVTXNSVUZCVlN4RFFVTTVRaXhKUVVGTlF5eEZRVUZoY0VNc1JVRkJSU3hGUVVGRkxFdEJRVThzVFVGQlVVRXNSVUZCUlN4RlFVRkZMRXRCUVU4c1JVRkROME5wUWl4RlFVRkpMRWRCUTFJc1QwRkJTVzFDTEVkQlFXTndReXhGUVVGRkxFVkJRVVVzVFVGQlVTeEpRVUZIYVVJc1IwRkJTeXhMUVVOMFEwRXNSMEZCUzI5Q0xFZEJRVk55UXl4RlFVRkZMRVZCUVVVc1MwRkJUVzlETEVWQlFXRXNSVUZCU1N4RFFVRkRMRVZCUlhSRFJDeEhRVU5HYkVJc1IwRkJTeXhKUVVOTVFTeEhRVUZMYjBJc1IwRkJVM0pETEVWQlFVVXNSVUZCUlN4TFFVRkxMRVZCUTNaQ2FVSXNSMEZCU3l4SlFVTk1RU3hIUVVGTGIwSXNSMEZCVTNKRExFVkJRVVVzUlVGQlJTeEhRVUZITEVsQlJYSkNhVUlzUjBGQlMyOUNMRWRCUVZOeVF5eEZRVUZGTEVWQlFVVXNTMEZCU3l4RlFVTjJRbWxDTEVkQlFVdHZRaXhIUVVGVGNrTXNSVUZCUlN4RlFVRkZMRWRCUVVjc1IwRkZhRUpwUWl4RFFVTlVMRU5CUlVFc1UwRkJVM0ZDTEVkQlExQjBReXhGUVVOQmJVTXNSVUZEUVVrc1JVRkRRVU1zUlVGRFFVTXNSVUZEUVVNc1JVRkRRU3hEUVVOQkxFbEJRVWw2UWl4RlFVRkpiMElzUjBGQlUzSkRMRVZCUVVVc1JVRkJSU3hKUVVGSkxFVkJRM3BDTEU5QlFVbHRReXhIUVVOR2JFSXNSMEZCU3l4SlFVTk1RU3hIUVVGTGIwSXNSMEZCVTNKRExFVkJRVVVzUlVGQlJTeE5RVUZOTEVkQlEzQkNRU3hGUVVGRkxFVkJRVVVzVTBGQlZ5eEhRVUZMTEVOQlFVTjFReXhMUVVOMlFuUkNMRWRCUVVzc1RVRkhVRUVzUjBGQlMyOUNMRWRCUVZOeVF5eEZRVUZGTEVWQlFVVXNUVUZCVFN4SFFVZDBRa0VzUlVGQlJTeEZRVUZGTEZOQlFWY3NSMEZCU3l4RFFVRkRkVU1zUzBGRGRrSjBRaXhIUVVGTGIwSXNSMEZCVTNKRExFVkJRVVVzUlVGQlJTeE5RVUZOTEVkQlJYQkNRU3hGUVVGRkxFVkJRVVVzWTBGQlowSXNSMEZCU3l4RFFVRkRkME1zUzBGRE5VSjJRaXhIUVVGTExFbEJRMHhCTEVkQlFVdHZRaXhIUVVGVGNrTXNSVUZCUlN4RlFVRkZMRmxCUVdFc1EwRkJReXhKUVVsb1EzbERMRWxCUTBWNlF5eEZRVUZGTEdWQlFXbENRU3hGUVVGRkxGTkJRVmNzUjBGQlN5eERRVUZETUVNc1JVRkRlRU42UWl4SFFVRkxMRWxCUTBscVFpeEZRVUZGTEVWQlFVa3NSMEZEWm1sQ0xFZEJRVXNzU1VGRFRFRXNSMEZCUzI5Q0xFZEJRVk1zUzBGQlN5eE5RVUZOTEVOQlFVTnlReXhGUVVGRkxFVkJRVWtzUlVGQlJTeERRVUZETEVWQlEyNURhVUlzUjBGQlN5eEpRVU5NUVN4SFFVRkxiMElzUjBGQlV5eExRVUZMTEUxQlFVMHNRMEZCUTNKRExFVkJRVVVzUlVGQlNTeEZRVUZGTEVOQlFVTXNTVUZGYmtOcFFpeEhRVUZMTEVsQlEweEJMRWRCUVV0dlFpeEhRVUZUTEV0QlFVc3NUVUZCVFhKRExFVkJRVVVzUlVGQlNTeEZRVUZGTEVOQlFVTXNSVUZEYkVOcFFpeEhRVUZMTEVsQlEweEJMRWRCUVV0dlFpeEhRVUZUTEV0QlFVc3NUVUZCVFhKRExFVkJRVVVzUlVGQlNTeEZRVUZGTEVOQlFVTXNTVUZKYkVNd1F5eEpRVU5HZWtJc1IwRkJTeXhKUVVGTmFrSXNSVUZCUlN4TFFVRkxMRk5CUVZjc1MwRkZlRUpwUWl4RFFVTlVMRU5CUjBFc1NVRkJUVEJDTEVkQlFXOUNMRU5CUTNSQ0xFMUJRVThzUlVGRFVDeEpRVUZMTEVWQlEwd3NTMEZCVFN4RlFVTk9MRTlCUVZFc1JVRkRVaXhQUVVGUkxFVkJRMUlzV1VGQllTeERRVU5tTEVWQlEwRkRMRWRCUVhkQ0xFTkJRM1JDTEZkQlFWa3NSVUZEV2l4UlFVRlRMRVZCUTFRc1MwRkJUU3hGUVVOT0xFOUJRVkVzUlVGRFVpeFBRVUZSTEVWQlExSXNXVUZCWVN4RFFVTm1MRVZCUTBGRExFZEJRVEpDTEVOQlEzcENMRkZCUVZNc1JVRkRWQ3hMUVVGTkxFVkJRMDRzVDBGQlVTeEZRVU5TTEU5QlFWRXNSVUZEVWl4WlFVRmhMRU5CUTJZc1JVRkhTVU1zUjBGQlpTeERRVUZETEU5QlFWRXNVVUZCVXl4TlFVRlBMRTlCUVZFc1UwRkJWU3hUUVVGVkxHRkJRV0VzUlVGRGNrWkRMRWRCUVcxQ0xFTkJRMnBDTEZkQlEwRXNZVUZEUVN4VlFVTkJMRTlCUTBFc1UwRkRRU3hUUVVOQkxHRkJRMFlzUlVGRFFVTXNSMEZCYzBJc1EwRkJReXhQUVVGUkxGVkJRVmNzVDBGQlVTeFRRVUZWTEZOQlFWVXNZVUZCWVN4RlFVZHlSaXhUUVVGVFF5eEhRVUZqUXl4RlFVRk5MRU5CUXpOQ0xFbEJRVTFETEVWQlFXRXNRMEZEYWtJc1MwRkJUU3hQUVVOT0xFMUJRVThzVDBGRFVDeE5RVUZQTEZGQlExQXNUMEZCVVN4UlFVTlNMRWxCUVVzc1RVRkRUQ3hMUVVGTkxFMUJRMDRzUzBGQlRTeFBRVU5PTEUxQlFVOHNUMEZEVUN4UFFVRlJMRk5CUTFJc1VVRkJVeXhUUVVOVUxGRkJRVk1zVlVGRFZDeFRRVUZWTEZWQlExWXNUMEZCVVN4VFFVTlNMRkZCUVZNc1UwRkRWQ3haUVVGaExHTkJRMklzWVVGQll5eGpRVU5rTEZGQlFWTXNWVUZEVkN4VFFVRlZMRlZCUTFZc1YwRkJXU3hoUVVOYUxGbEJRV0VzWVVGRFlpeFpRVUZoTEdGQlEySXNVMEZCVlN4WFFVTldMRlZCUVZjc1YwRkRXQ3hSUVVGVExGTkJRMWdzUlVGQlJVUXNSVUZCU3l4WlFVRlpMRU5CUVVNc1JVRkZjRUlzUjBGQlNTeERRVUZEUXl4RlFVRlpMRTFCUVUwc1NVRkJTVU1zUjBGQmFVSkdMRU5CUVVrc1JVRkZhRVFzVDBGQlQwTXNRMEZEVkN4RFFVdEJMRk5CUVZORkxFZEJRVkV6UXl4RlFVRkxZeXhGUVVGTkxFTkJRekZDTEVsQlFVMTBReXhGUVVGUGIwVXNSMEZCWXpsQ0xFVkJRVXNzUzBGQlRTdENMRVZCUVZNc1YwRkJWeXhGUVVONFJFTXNSVUZCVFhaQ0xFZEJRVThzVjBGQlYxUXNRMEZCU1N4RlFVTTFRbWxETEVWQlFWRkdMRVZCUVZNc1NVRkJTU3hGUVVWdVFtcEVMRVZCUVVrc1JVRkhVaXhIUVVGTGIwUXNSVUZCV1doRUxFVkJRVWtzU1VGQlNTeEZRV1YyUWtvc1JVRkJTMjFFTEUxQlpuRkNMRU5CUXpGQ0xGRkJRVmRGTEV0QlFVdGlMRWRCUTFaWkxFVkJRVmxvUkN4RlFVRkphVVFzUTBGQlF5eERRVUZETEVsQlEzQkNha1FzUlVGQlNXbEVMRU5CUVVNc1JVRkJTV2hDTEVkQlFXdENaMElzUTBGQlF5eEhRVWxvUXl4SlFVRk5ReXhGUVVGVlF5eEhRVUYzUW01RUxFTkJRVWNzUjBGQlMyOUVMRWRCUVcxQ2NFUXNRMEZCUnl4RlFVTjBSU3hIUVVGSmEwUXNSVUZEUml4UFFVRlBha1VzUlVGQlV5eFJRVUZSYVVVc1EwRkJUeXhGUVVkcVF5eEpRVUZOUnl4RlFVRmxOMFVzUlVGQlN5eFBRVUZQZFVVc1EwRkJTeXhGUVVOMFF5eERRVUZEYmtRc1JVRkJTU3hEUVVGRExFVkJRVWxITEVkQlFWRkRMRVZCUVV0eFJDeEZRVUZqTjBVc1EwRkJTU3hEUVVNelF5eERRVWxCTEU5QlFVOHNTVUZCU1ZNc1JVRkJVeXhEUVVGRkxFZEJRVUZYTEVWQlFVa3NTMEZCUVhCQ0xFVkJRVTBzU1VGQlFYTkZMRVZCUVVzc1EwRkJSU3hEUVVGRExFTkJRekZETEVOQlJVRXNVMEZCVTFFc1IwRkJZVU1zUlVGQlQwTXNSVUZCU3pGRExFVkJRVTBzUTBGRGRFTXNTVUZCVFRKRExFVkJRVkZVTEVWQlFWbHNReXhGUVVGTExFdEJRVXNzUlVGQlNTeEhRVUZQUVN4RlFVRkxMRTFCUTJ4RVF5eEZRVUZUTEVOQlFVTlNMRVZCUVVkcFF5eExRVU5ZYWtNc1JVRkJTVzFFTEVkQlFWRnVSQ3hGUVVGSGEwUXNSMEZCVXpORExFVkJRVXNzVlVGQldTeEZRVUZKTEVWQlFVY3NSVUZCU1N4RlFVTnNRekJETEVWQlFVa3NTVUZCU1N4TlFVRk5NVU1zUTBGQlNTeEZRVUZGTEdGQlFXRkJMRU5CUVVrc1JVRkRkRU1zVDBGQlQxQXNSVUZCUjJsRExFTkJRVWtzUjBGRmFrTnRRaXhGUVVGVmJrSXNSMEZEU2pGQ0xFVkJRVXNzVlVGRFJqQkRMRVZCUVVrc1VVRkJVVVFzUlVGQlQyWXNRMEZCU1N4RlFVVmtMRVZCUkV4blFpeEZRVUZKTEZGQlFWRm9RaXhEUVVGSkxFVkJRVVVzUzBGQlMyVXNSVUZCVFN4UlFVRlJaaXhEUVVGSkxFVkJRVWRCTEVOQlFVa3NSVUZCUlN4SlFVRkpRU3hEUVVGSkxFVkJSelZFWjBJc1JVRkJTU3hMUVVGTFJDeEZRVUZQWml4RFFVRkpMRVZCUVVVc1NVRkJTVUVzUTBGQlNTeEZRVWt6UXl4SFFVRkpNVUlzUlVGQlN5eExRVU5RTEU5QlFVOURMRVZCUVU4MFF5eEZRVUZQTjBNc1JVRkJTeXhKUVVGSkxFVkJRVWRCTEVWQlFVc3NTVUZCU1N4RlFVYzFReXhSUVVGWE1FSXNTMEZCVVRGQ0xFVkJRVXNzVFVGQlR5eERRVU0zUWl4SlFVRk5PRU1zUlVGQlVVUXNSVUZCVDI1Q0xFTkJRVWtzUlVGRGVrSXNSMEZCU1N4TFFVRkxMRWxCUVVsdlFpeERRVUZMTEVkQlFVc3NSVUZEY2tJc1QwRkJUemRETEVWQlFVODJReXhGUVVGUGNFSXNRMEZCU1N4RFFVVTNRaXhEUVVOQkxFOUJRVTk2UWl4RlFVRlBkME1zUlVGQlVVTXNSVUZCVFN4SFFVRkxMRVZCUVVjeFF5eEZRVUZMTEUxQlFVMUJMRVZCUVVzc1RVRkJUU3hQUVVGVExFTkJRVU1zUTBGQlF5eERRVU4yUlN4RFFVVkJMRk5CUVZNclF5eEhRVUZUUXl4RlFVRlRMRU5CUTNwQ0xFbEJRVWxvUkN4RlFVRlBMRU5CUVVNc1JVRkRWbWxFTEVWQlEwWXNUMEZCU1VRc1JVRkJVU3hQUVVGVExFZEJRVXNzVDBGQlQwRXNSVUZCVVVFc1JVRkJVU3hQUVVGVExFTkJRVU1zUjBGQlRTeFZRVU12UkdoRUxFVkJRVTluUkN4RlFVRlJRU3hGUVVGUkxFOUJRVk1zUTBGQlF5eEZRVU5xUTBNc1JVRkJUeXhOUVVGTkxFdEJRVXRFTEVOQlFVOHNSVUZCUlN4TlFVRk5MRVZCUVVkQkxFVkJRVkVzVDBGQlV5eERRVUZETEVkQlJYUkVReXhGUVVGUExFMUJRVTBzUzBGQlMwUXNRMEZCVHl4RlFVVndRaXhEUVVGRGFFUXNSVUZCVFdsRUxFTkJRVWtzUTBGRGNFSXNRMEZ6UWtFc1NVRkJjVUk1UlN4RlFVRnlRaXhOUVVGeFFpdEZMRU5CUVZNc1EwRkpOVUlzV1VGQldVTXNSVUZCVVN4RFFVTnNRaXhKUVVGTmVrWXNSVUZCVDNsR0xFVkJRVThzVFVGQlVYQkNMRVZCUVZNc1dVRkZha05MTEVWQlEwWmxMRVZCUVU4c1ZVRkRUaXhQUVVGUExFMUJRVTFCTEVWQlFVOHNSVUZCUlN4RlFVRkpMRWxCUVVsNFJpeEhRVUZSTEdWQlFXVXNSVUZCU1N4UlFVTjRSRVFzUlVGQlN5eFJRVUZyUXl4TFFVRjRRa1FzUjBGQlowSkRMRU5CUVVrc1IwRkpka01zUzBGQlN5eEhRVUZMZDBVc1JVRkJXV2xDTEVWQlFVOHNSVUZCUlN4RlFVRkpjRUlzUlVGQlV5eEpRVUZKTEVWQlFVbHZRaXhGUVVGUExFZEJSVE5FTEVsQlFVa3hSQ3hGUVVGSkxFdEJRMDVxUWl4RlFVRkpMRXRCUTA0c1IwRkJTU3hEUVVGRE5FUXNSVUZIU0N4SFFVWnJRbVVzUlVGQlR5eExRVUZQUVN4RlFVRlBMRWxCUVVrc1MwRkJUeXhMUVVGTExFbEJRVTFCTEVWQlFVOHNTVUZCU1N4TFFVRkxMRTlCUVU5NlJpeERRVUZKTEVWQlIzUkdMRU5CUVVNclFpeEZRVUZIYWtJc1EwRkJReXhGUVVGSkxFTkJRVU15UlN4RlFVRlBMRWxCUVVrc1JVRkJSMEVzUlVGQlR5eEpRVUZKTEVOQlFVTXNUVUZETDBJc1EwRkRUQ3hKUVVGTlF5eEZRVUZMTVVZc1JVRkJTeXhQUVVGUExFdEJRVXNzUlVGQlJTeEZRVU01UWl0Q0xFVkJRVWxhTEVkQlFWRXNTMEZCU3l4SFFVRkpkVVVzUTBGQlJTeEZRVU4yUW1oQ0xFVkJRVlVzVDBGQlR5eE5RVUZOTTBNc1JVRkJSU3hKUVVGSkxFVkJRVWtzU1VGQlNUbENMRWRCUVZFc1pVRkJaU3hGUVVGSkxFdEJRMmhGT0VJc1JVRkJTVEpETEVWQlFWVXNTMEZCVHpORExFVkJRM0pDYWtJc1JVRkJTVFJFTEVWQlFWVXNTMEZCVDJkQ0xFTkJRM1pDTEVOQlRVWXNTMEZCU3l4TlFVRlJNVVlzUlVGSllpeExRVUZMTEVsQlFVMTVSaXhGUVVGUExFdEJRVTh4UXl4SFFVRlBMRTlCUVU4c1JVRkpka01zUzBGQlN5eFJRVUZWTWtJc1JVRkpaaXhMUVVGTExGTkJRVmNzUzBGSmFFSXNTMEZCU3l4RlFVRkpNME1zUlVGSlZDeExRVUZMTEVWQlFVbHFRaXhGUVVsVUxFdEJRVXNzWjBKQlFXdENMRVZCUTNwQ0xFTkJWMEVzVDBGQlR5eExRVUZOTEVOQlExZ3NUMEZCVHl4SlFVRkpNRVVzUlVGQlV5eERRVUZETEVOQlFVTXNRMEZEZUVJc1EwRjFRa0VzVDBGQlR5eFBRVUZSTEVOQlEySXNSMEZCVFN4RFFVRkRiRVFzUlVGQlRXbEVMRU5CUVVrc1JVRkJTVVlzUjBGQlV5eFRRVUZUTEVWQlEzSkRMRU5CUVVONFJDeEZRVUZOUXl4RlFVRlBOa1FzUlVGQlMwTXNSVUZCVFVNc1JVRkJVVU1zUlVGQlVVTXNRMEZCVnl4RlFVRkpVaXhGUVVNeFJDeFBRVUZQY0VJc1IwRkJVU3hEUVVGRkxFdEJRVUYwUXl4RlFVRk5MRTFCUVVGRExFVkJRVThzU1VGQlFUWkVMRVZCUVVzc1MwRkJRVU1zUlVGQlRTeFBRVUZCUXl4RlFVRlJMRTlCUVVGRExFVkJRVkVzV1VGQlFVTXNRMEZCV1N4RlFVRkhla1FzUTBGQlNTeERRVU01UlN4RFFUQkNRU3hQUVVGUExFdEJRVTBzUTBGRFdDeEhRVUZOTEVOQlFVTkJMRVZCUVUxcFJDeERRVUZKTEVWQlFVbEdMRWRCUVZNc1UwRkJVeXhGUVVOeVF5eERRVUZEZUVRc1JVRkJUVU1zUlVGQlR6WkVMRVZCUVV0RExFVkJRVTFETEVWQlFWRkRMRVZCUVZGRExFTkJRVmNzUlVGQlNWSXNSVUZGTVVRc1QwRkJRV3BFTEVWQlFVc3NTMEZCVHpCRUxFZEJRV2RDTEZsQlEzSkNOMElzUjBGQlVTeERRVUZGTEV0QlFVRjBReXhGUVVGTkxFMUJRVUZETEVWQlFVOHNTVUZCUVRaRUxFVkJRVXNzUzBGQlFVTXNSVUZCVFN4UFFVRkJReXhGUVVGUkxFOUJRVUZETEVWQlFWRXNXVUZCUVVNc1EwRkJXU3hGUVVGSGVrUXNRMEZCU1N4RFFVTTVSU3hEUVZOQkxFOUJRVThzVjBGQlZ6SkVMRVZCUVUxRExFVkJRVlVzUTBGQlF5eEZRVUZITEVOQlEzQkRMRWxCUVUwNVJTeEZRVUZMSzBVc1IwRkJUMFlzUTBGQlNTeEZRVUZKUVN4RlFVRkxMRkZCUVZFc1JVRkJTU3hKUVVNelF5eEhRVUZKTEU5QlFVOHNUVUZCVFRkRkxFTkJRVVVzUlVGRGFrSXNUMEZCVDI5RkxFVkJRVk1zVVVGQlVTeGxRVUZsTEVWQlIzcERMRWxCUVUxWkxFVkJRVmxvUXl4SFFVRmpPRUlzUlVGQlVTeExRVUZOTjBJc1JVRkJVeXhYUVVGWExFVkJRMnhGTEU5QlFVc3JRaXhGUVVGVkxGRkJTVklzU1VGQlNWb3NSVUZCVXl4RFFVTnNRaXhIUVVGSmNFVXNSVUZEU2l4TFFVRk5aMFlzUlVGRFRpeEpRVUZMY2tRc1IwRkJUeXhYUVVGWGJVUXNRMEZCVHl4RFFVTm9ReXhEUVVGRExFVkJVRkZXTEVWQlFWTXNVVUZCVVhwR0xFZEJRV2RDY1Vjc1EwRkJVeXhEUVVGRExFTkJVWFJFTEVOQldVRXNUMEZCVHl4WFFVRlhReXhGUVVGalNDeEZRVUZWTEVOQlFVTXNSVUZCUnl4RFFVTTFReXhIUVVGTFNTeEhRVUZUUkN4RFFVRlpMRVZCU1c1Q0xFOUJRVWxCTEVWQlFXVXNRMEZCUTNaSExFbEJRVmwxUnl4RlFVRmxka2NzUjBGRk4wTXdSaXhGUVVGVExGRkJRVkVzZDBKQlFYZENMRVZCUlhwRExFbEJRVWxCTEVWQlFWTXNRMEZEYkVJc1IwRkJTV0VzUlVGRFNpeExRVUZOYWtNc1IwRkJZemhDTEVWQlFWRXNTMEZCVFRkQ0xFVkJRVk1zVjBGQlZ5eEZRVU4wUkN4SlFVRkxkRUlzUjBGQlR5eFhRVUZYYlVRc1EwRkJUeXhEUVVOb1F5eERRVUZETEVWQldFUXNUVUZCVFN4SlFVRkpTeXhIUVVOU0xIbEVRVUY1UkN4UFFVRlBSaXhEUVVGWkxHVkJRV1ZCTEVOQlFWa3NSVUZEZWtjc1EwRlhTaXhEUVZsQkxFOUJRVThzV1VGQldVY3NSVUZCVTA0c1JVRkJWU3hEUVVGRExFVkJRVWNzUTBGRGVFTXNSMEZCUzBrc1IwRkJVMFVzUTBGQlR5eEZRVWR1UWl4UFFVRlBMRWxCUVVsb1FpeEZRVUZUTEVOQlEyeENMRWRCUVVsblFpeEZRVUZWTEVsQlEyUXNTMEZCVFhCRExFZEJRV000UWl4RlFVRlJMRXRCUVUwM1FpeEZRVUZUTEZkQlFWY3NSVUZEZEVRc1NVRkJTM1JDTEVkQlFVOHNWMEZCVjIxRUxFTkJRVThzUTBGRGFFTXNRMEZCUXl4RlFVNUVMRTFCUVUwc1NVRkJTVXNzUjBGQmNVSXNkME5CUVhkRExFTkJVVE5GTEVOQk9FSkJMRTlCUVU4c1YwRkJWeTlGTEVWQlFVdGpMRVZCUVU4c1EwRkJReXhGUVVGSExFTkJRMmhEWkN4RlFVRk5RU3hIUVVGUExFTkJRVU1zUlVGRFpDeEpRVUZOTkVVc1JVRkJXV2hETEVkQlFXTTVRaXhGUVVGTExFdEJRVTByUWl4RlFVRlRMRmRCUVZjc1JVRkRMMFFzUjBGQlNTeERRVUZESzBJc1JVRkJWU3hSUVVOaUxFOUJRVTlhTEVWQlFWTXNVVUZCVVhwR0xFZEJRV2RDY1Vjc1EwRkJVeXhEUVVGRExFVkJSM0JFTEVsQlFVMDNRaXhGUVVGUlJpeEZRVUZUTEVsQlFVa3NSVUZEZWtKUkxFVkJRV2RDVEN4RlFVRlpiRU1zUlVGQlN5eGpRVUZqTEVWQlJUTkRPRVFzUlVGQlZTeFBRVUZQTjBJc1EwRkJTeXhGUVVSMFFtcERMRVZCUVVzc1pVRkZWREpDTEVWQlFXRjNReXhIUVVGblFtcEdMRVZCUVV0MVF5eEZRVUZoTEVWQlF5OURNa01zUlVGQmEwSXNRMEZCUTJ4RExFVkJRVmxRTEVWQlFWY3NUMEZCVHl4RlFVTnFSREJETEVWQlFYRkNMRU5CUVVOdVF5eEZRVUZaVUN4RlFVRlhMRWxCUVVrc1JVRkRha1F5UXl4RlFVRnRRaXhEUVVGRGNFTXNSVUZCV1ZBc1JVRkJWeXhMUVVGTExFZEJRVXNzUTBGQlEwOHNSVUZCV1ZBc1JVRkJWeXhIUVVGSExFVkJRMmhHTkVNc1JVRkJhVUpHTEVkQlFYTkNReXhGUVVOMlEwVXNSVUZCYTBJM1F5eEZRVUZYTEZWQlFWbEJMRVZCUVZjc1YwRkRjRVJMTEVWQlFVMTJRaXhIUVVGUExGZEJRVmRVTEVOQlFVa3NSVUZST1VJc1NVRkJTM1ZGTEVkQlFXdENTQ3hKUVVGdlFra3NSVUZEZWtNc1RVRkJUU3hKUVVGSlF5eEhRVU5TTEhGRlFVTkdMRVZCUjBZc1IwRkJTVWdzUjBGQmIwSkdMRVZCUTNSQ0xFMUJRVTBzU1VGQlNVc3NSMEZCT0VJc2QwTkJRWGRETEVWQlIyeEdMRWxCUVUxRExFVkJRV05HTEVkQlFXOUNOME1zUlVGQlZ5eFRRVUZYTEVOQlFVTTBReXhGUVVjelJFa3NSVUZEUmtNc1JVRkRRVU1zUlVGQlUyaEhMRWRCUVZGdlJDeEZRVUZQVFN4RFFVRlpMRVZCUTJ4RGJVTXNSMEZEUmtNc1JVRkJVWEJFTEVkQlExSnhSQ3hGUVVGblFuaEVMRWRCUTJoQ2VVUXNSVUZCVXk5SExFZEJRV2RDSzBjc1EwRkJUU3hIUVVOMFFsUXNSMEZEVkU4c1JVRkJVVzVFTEVkQlExSnZSQ3hGUVVGblFuWkVMRWRCUTJoQ2QwUXNSVUZCVTBNc1IwRkJiVUpFTEVOQlFVMHNTVUZGYkVOR0xFVkJRVkZ5UkN4SFFVTlNjMFFzUlVGQlowSjZSQ3hKUVVsc1FpeEpRVUZKTkVRc1JVRkJZU3hIUVVOcVFpeFJRVUZYTlVNc1MwRkJTM2RETEVWQlFVOHNRMEZEY2tJc1NVRkJUVXNzUlVGQlNYSkVMRVZCUVZkUkxFTkJRVU1zUlVGRGFrSkVMRVZCUVZrNFF5eERRVUZETEVWQlJWQkVMRVZCUTFSd1JDeEZRVUZYVVN4RFFVRkRMRVZCUVVsNVF5eEZRVUZqZWtNc1EwRkJReXhGUVVVdlFsSXNSVUZCVjFFc1EwRkJReXhGUVVGSk1FTXNSVUZCVHpGRExFTkJRVU1zUlVGS2VFSTBReXhGUVVGaExFVkJUV3BDTEVOQlIwRXNTVUZCVFVVc1JVRkJjVUpRTEVWQlEzSkNVU3hIUVVGdFFuWkVMRU5CUVZVc1JVRkROMEo1UXl4RlFVTkJaU3hIUVVGelFuaEVMRU5CUVZVc1JVRkRhRU5WTEVkQlFYZENWaXhEUVVGVkxFVkJRM1JEVXl4RlFVRlZOa01zUjBGQmMwSXpReXhIUVVGdFFsZ3NRMEZCVlN4RlFVVXZSQ3hIUVVGSlV5eEZRVU5HTEU5QlFVOWpMRVZCUVZNc1VVRkJVV1FzUTBGQlR5eEZRVWxxUXl4SlFVRk5aMFFzUlVGQldWWXNSVUZEV2xjc1IwRkJaMEl4UkN4RFFVRlZMRVZCUXpGQ2VVTXNSVUZEUVd0Q0xFZEJRVzFDTTBRc1EwRkJWU3hGUVVNM1FrRXNSVUZEU2l4RFFVRkRORVFzUlVGQlUwTXNRMEZCVnl4RlFVRkpka2NzUjBGQlVXMUhMRVZCUVZjM1F5eEZRVUZqZFVJc1EwRkJVeXhGUVVOdVJUbEdMRVZCUVU4c1NVRkJTV3RHTEVWQlFWTXNRMEZEYkVJc1IwRkJTWEZETEVWQlEwb3NTMEZCVFhwQ0xFVkJRMDRzUlVGQlJ6QkNMRVZCUTBnc1NVRkJRWGhFTEVOQlEwWXNRMEZCUXl4RlFVZElMRTlCUVVsTUxFVkJRVmNzVTBGQlZ6UkRMRWRCUVd0Q2NrWXNSVUZCU1N4VlFVRlpiRUlzUlVGQlN5eFJRVU40Ukd0R0xFVkJRVk1zVVVGRFpDeHhRa0ZEUVN4MVEwRkJkVU4yUWl4RlFVRlhMRTlCUVU4c2EwSkJRV3RDTTBRc1JVRkJTeXhOUVVGTkxFTkJRVU1zUlVGRGVrWXNSVUZIUzBFc1EwRkRWQ3hEUVd0Q1FTeFBRVUZQTEZGQlFWRnJReXhGUVVGTlJpeEZRVUZQTEVOQlFVTXNSVUZCUnl4RFFVTTVRaXhIUVVGTkxFTkJRVU41Uml4RlFVRk5NVVlzUTBGQlZTeEZRVUZKTWtZc1IwRkJZWGhHTEVOQlFVa3NSVUZETlVNc1QwRkJUMHdzUjBGQmIwSTBSaXhGUVVGTk1VWXNSVUZCV1VNc1JVRkJUU3hYUVVGWlJTeERRVUZKTEVOQlEzSkZMRU5CWjBKQkxFOUJRVThzV1VGQldVRXNSVUZCVFVZc1JVRkJUeXhEUVVGRExFVkJRVWNzUTBGRGJFTXNSMEZCVFN4RFFVRkRlVVlzUlVGQlRURkdMRU5CUVZVc1JVRkJTVFJHTEVkQlFXbENla1lzUTBGQlNTeEZRVU5vUkN4UFFVRlBUQ3hIUVVGdlFqUkdMRVZCUVUweFJpeEZRVUZaUXl4RlFVRk5MRmRCUVZsRkxFTkJRVWtzUTBGRGNrVXNRMEZwUWtFc1QwRkJUeXhUUVVGVFFTeEZRVUZOUml4RlFVRlBMRU5CUVVNc1JVRkJSeXhEUVVNdlFpeEhRVUZOTEVOQlFVTjVSaXhGUVVGTk1VWXNRMEZCVlN4RlFVRkpOa1lzUjBGQll6RkdMRU5CUVVrc1JVRkROME1zVDBGQlQwd3NSMEZCYjBJMFJpeEZRVUZOTVVZc1JVRkJXVU1zUlVGQlRTeFBRVUZSUVN4RFFVRkpMRU5CUTJwRkxFTkJaVUVzVDBGQlR5eFhRVUZYUlN4RlFVRk5Na1lzUlVGQlN6ZEdMRVZCUVU4c1EwRkJReXhGUVVGSExFTkJRM1JETEVkQlFVbHJReXhGUVVGWmFFTXNRMEZCU1N4SFFVRkxaME1zUlVGQldUSkVMRU5CUVVjc1JVRkRkRU1zVFVGQlRTeEpRVUZKTlVJc1IwRkJjVUlzYTBSQlFXdEVMRVZCUjI1R0xFZEJRVTBzUTBGQlJTeFBRVUZCTmtJc1JVRkJVeXhMUVVGTkxHZENRVUZCUXl4RlFVRnJRaXhKUVVGTExFVkJRVWt2Uml4RlFVTm9SR2RITEVWQlFXTjJSaXhIUVVGUExGTkJRVk1zUTBGRE5VSXNUMEZCUVhGR0xFVkJRMEVzWjBKQlFVRkRMRVZCUTBFc1dVRkJZU3hGUVVObUxFTkJRVU1zUlVGRFJDeERRVUZEVGl4RlFVRk5NVVlzUlVGQldVa3NSVUZCWjBKcFF5eERRVUZQTEVWQlFVazJSQ3hIUVVGblFrUXNSVUZCWVRsR0xFVkJRVTB5Uml4RFFVRkhMRVZCUTNSR0xFOUJRVWw2UkN4RlFVTkxZeXhGUVVGVExGRkJRVkZrTEVOQlFVOHNSVUZGZUVKMlF5eEhRVUZ2UWpSR0xFVkJRVTB4Uml4RlFVRlpReXhGUVVGTkxGVkJRVlUyUml4RFFVRkhMRWRCUVVrelJpeEZRVUZOUXl4RFFVRmpMRU5CUlRWR0xFTkJTMEVzVDBGQlR5eFhRVUZYUkN4RlFVRk5Na1lzUlVGQlN6ZEdMRVZCUVU4c1EwRkJReXhGUVVGSExFTkJRM1JETEU5QlFVOXJSQ3hGUVVGVExGZEJRVmRvUkN4RlFVRk5Na1lzUlVGQlN6ZEdMRU5CUVVrc1EwRkROVU1zUTBGelFrRXNUMEZCVHl4UlFVRlJSU3hGUVVGTlJpeEZRVUZQTEVOQlFVTXNSVUZCUnl4RFFVTTVRaXhIUVVGTkxFTkJRVU41Uml4RlFVRk5NVVlzUTBGQlZTeEZRVUZKYlVjc1IwRkJVMmhITEVOQlFVa3NSVUZEZUVNc1QwRkJUMHdzUjBGQmIwSTBSaXhGUVVGTk1VWXNSVUZCV1VNc1JVRkJUU3hOUVVGUFJTeERRVUZKTEVOQlEyaEZMRU5CVVVFc1QwRkJUeXhSUVVGUmFVY3NSVUZCVVVNc1JVRkJZeXhMUVVGTkxFTkJRM3BETEVkQlFVa3NRMEZCUTBRc1JVRkRTQ3hOUVVGTkxFbEJRVWxzUXl4SFFVRnhRaXhyUkVGQmEwUXNSVUZIYmtZc1NVRkJUVGRDTEVWQlFWVXJSQ3hoUVVGclFuaEpMRWRCUVZWM1NTeEZRVUZUTEVsQlFVbDRTU3hIUVVGUmQwa3NSVUZCVVVNc1EwRkJWeXhGUVVWd1JpeEhRVUZKY2tVc1JVRkJVeXhsUVVOWUxFMUJRVTBzU1VGQlNYTkZMRWRCUVhGQ2FrVXNRMEZCVHl4RlFVVjBReXhQUVVGUExFbEJRVWxqTEVWQlFWTXNRMEZCUlN4UlFVRkJaQ3hEUVVGUkxFTkJRVU1zUTBGRmJrTXNRMEZQUVN4UFFVRlBMRmRCUVZjMVJDeEZRVUZITEVOQlEyNUNMRTlCUVZGQkxFZEJRVXRCTEVWQlFVVXNhVUpCUVc5Q0xFVkJRM0pETEVOQlYwRXNTVUZCU1d0RUxFVkJRVTBzUTBGRFVpeFBRVUZQTEV0QlFVdEJMRU5CUVVrc1EwRkRiRUlzUTBGUlFTeEpRVUZKTEZOQlFWVXNRMEZEV2l4UFFVRlBMRXRCUVVzc1ZVRkJXU3hKUVVNeFFpeERRVTFCTEVsQlFVa3NaVUZCWjBJc1EwRkRiRUlzVDBGQlR5eExRVUZMTEZGQlFWVXNTMEZCU3l4UlFVRlJMRTlCUVZNc1NVRkRPVU1zUTBGTlFTeEpRVUZKTEc5Q1FVRnhRaXhEUVVOMlFpeFBRVUZQTEV0QlFVc3NVVUZCVlN4TFFVRkxMRkZCUVZFc1dVRkJZeXhKUVVOdVJDeERRVTlCTEVsQlFVa3NVVUZCVXl4RFFVTllMRTlCUVU4c1MwRkJTeXhSUVVGVkxFdEJRVXNzU1VGQlNTeFBRVUZUTEVsQlF6RkRMRU5CVDBFc1NVRkJTU3hwUWtGQmEwSXNRMEZEY0VJc1QwRkJUeXhMUVVGTExGRkJRVlVzUzBGQlN5eEpRVUZKTEdkQ1FVRnJRaXhKUVVOdVJDeERRVTlCTEVsQlFVa3NaMEpCUVdsQ0xFTkJRMjVDTEU5QlFVOHNTMEZCU3l4UlFVRlZMRXRCUVVzc1NVRkJTU3hsUVVGcFFpeEpRVU5zUkN4RFFVMUJMRWxCUVVrc1RVRkJUeXhEUVVOVUxFOUJRVThzUzBGQlN5eExRVU5rTEVOQlRVRXNTVUZCU1N4VlFVRlhMRU5CUTJJc1QwRkJUeXhMUVVGTExGRkJRVlVzUzBGQlN5eExRVUZMTEV0QlFVOHNTVUZEZWtNc1EwRlBRU3hKUVVGSkxFMUJRVThzUTBGRFZDeFBRVUZQTEV0QlFVc3NVVUZCVlN4TFFVRkxMRVZCUVVVc1MwRkJUeXhIUVVOMFF5eERRVTlCTEVsQlFVa3NVMEZCVlN4RFFVTmFMRTlCUVU4c1MwRkJTeXhSUVVGVkxFdEJRVXNzUzBGQlN5eExRVUZMTEVWQlFVVXNUVUZCVVN4RFFVRkRMRVZCUVVrc1IwRkRkRVFzUTBGUFFTeEpRVUZKTEU5QlFWRXNRMEZEVml4UFFVRlBMRXRCUVVzc1VVRkJWU3hMUVVGTExFVkJRVVVzVFVGQlVTeEhRVU4yUXl4RFFVOUJMRWxCUVVrc1MwRkJUU3hEUVVOU0xFOUJRVThzUzBGQlN5eFJRVUZWTEV0QlFVc3NSVUZCUlN4SlFVRk5MRWRCUTNKRExFTkJUMEVzU1VGQlNTeE5RVUZQTEVOQlExUXNUMEZCVHl4TFFVRkxMRkZCUVZVc1MwRkJTeXhGUVVGRkxFdEJRVThzUjBGRGRFTXNRMEZQUVN4SlFVRkpMRkZCUVZNc1EwRkRXQ3hQUVVGUExFdEJRVXNzVVVGQlZTeExRVUZMTEVWQlFVVXNUMEZCVXl4SFFVTjRReXhEUVU5QkxFbEJRVWtzVVVGQlV5eERRVU5ZTEU5QlFVOHNTMEZCU3l4UlFVRlZMRXRCUVVzc1JVRkJSU3hQUVVGVExFZEJRM2hETEVOQlQwRXNTVUZCU1N4aFFVRmpMRU5CUTJoQ0xFOUJRVThzUzBGQlN5eFJRVUZWTEV0QlFVc3NSVUZCUlN4WlFVRmpMRWRCUXpkRExFTkJVVUVzU1VGQlNTeFZRVUZYTEVOQlEySXNUMEZCVHl4TFFVRkxMRkZCUVZVNVJDeEhRVUYxUWl4SlFVRkpMRVZCUVVVc1UwRkJWeXhIUVVOb1JTeERRVkZCTEVsQlFVa3NXVUZCWVN4RFFVTm1MRTlCUVU4c1MwRkJTeXhSUVVGVlFTeEhRVUYxUWl4SlFVRkpMRVZCUVVVc1YwRkJZU3hIUVVOc1JTeERRVk5CTEVsQlFVa3NVMEZCVlN4RFFVTmFMRTlCUVU4c1MwRkJTeXhSUVVGVlFTeEhRVUYxUWl4SlFVRkpMRVZCUVVVc1VVRkJWU3hIUVVNdlJDeERRVTlCTEVsQlFVa3NVMEZCVlN4RFFVTmFMRTlCUVU4c1MwRkJTeXhSUVVGVmEwZ3NSMEZCYlVJc1MwRkJTeXhEUVVGRExFVkJRVVVzVVVGQlZTeEhRVU0zUkN4RFFWRkJMRWxCUVVrc1dVRkJZU3hEUVVObUxFOUJRVThzUzBGQlN5eFJRVUZWZDBJc1IwRkJTeXhQUVVGUExGRkJRVk1zUTBGQlJTeFBRVUZSTEV0QlFVc3NSMEZCU1N4RFFVRkRMRVZCUVVVc1MwRkJTeXhOUVVGUkxFTkJRVU1zUlVGQlNTeEpRVU55Uml4RFFWRkJMRWxCUVVrc1YwRkJXU3hEUVVOa0xFOUJRVThzUzBGQlN5eFJRVUZWUVN4SFFVRkxMRTlCUVU4c1QwRkJVU3hEUVVGRkxFOUJRVkVzUzBGQlN5eEhRVUZKTEVOQlFVTXNSVUZCUlN4TFFVRkxMRTFCUVZFc1EwRkJReXhGUVVGSkxFbEJRM0JHTEVOQlVVRXNTVUZCU1N4alFVRmxMRU5CUTJwQ0xFOUJRVThzUzBGQlN5eFJRVUZWUVN4SFFVRkxMRk5CUVZNc1VVRkJVeXhEUVVGRkxFOUJRVkVzUzBGQlN5eEhRVUZKTEVOQlFVTXNSVUZCUlN4TFFVRkxMRkZCUVZVc1EwRkJReXhGUVVGSkxFbEJRM3BHTEVOQlVVRXNTVUZCU1N4aFFVRmpMRU5CUTJoQ0xFOUJRVThzUzBGQlN5eFJRVUZWUVN4SFFVRkxMRk5CUVZNc1QwRkJVU3hEUVVGRkxFOUJRVkVzUzBGQlN5eEhRVUZKTEVOQlFVTXNSVUZCUlN4TFFVRkxMRkZCUVZVc1EwRkJReXhGUVVGSkxFbEJRM2hHTEVOQlVVRXNTVUZCU1N4UlFVRlRMRU5CUTFnc1QwRkJUeXhMUVVGTExGRkJRVlVzUTBGQlF5eExRVUZMTEVWQlFVa3NSMEZEYkVNc1EwRlBRU3hKUVVGSkxHbENRVUZyUWl4RFFVTndRaXhQUVVGSkxFdEJRVXNzVVVGRFFTeExRVUZMTEV0QlFVc3NWMEZCVnl4TFFVRkxMRWRCUVVrc1EwRkRia01zVDBGQlVTeFJRVU5TTEU5QlFWRXNTMEZCU3l4TlFVTm1MRU5CUVVNc1JVRkZUU3hKUVVWWUxFTkJUMEVzU1VGQlNTeG5Ra0ZCYVVJc1EwRkRia0lzVDBGQlNTeExRVUZMTEZGQlEwRXNTMEZCU3l4TFFVRkxMRmRCUVZjc1MwRkJTeXhIUVVGSkxFTkJRMjVETEU5QlFWRXNUMEZEVWl4UFFVRlJMRXRCUVVzc1RVRkRaaXhEUVVGRExFVkJSVTBzU1VGRldDeERRVTFCTEVsQlFVa3NaVUZCWjBJc1EwRkRiRUlzVDBGQlR5eExRVUZMTEZGQlFWVXNTMEZCU3l4TFFVRkxMRmxCUVdNc1NVRkRhRVFzUTBGTlFTeEpRVUZKTEZOQlFWVXNRMEZEV2l4UFFVRkpMRXRCUVVzc1kwRkRRU3hIUVVkTUxFdEJRVXNzVDBGQlV5eExRVUZMTEVsQlFVa3NRMEZCUlN4TlFVRlBMRVZCUVVjc1NVRkJTeXhEUVVGRkxFTkJRVU1zUlVGQlJTeFJRVU0zUXl4TFFVRkxMRTlCUVZNc1MwRkJTeXhKUVVGSkxFTkJRVVVzVFVGQlR5eERRVUZGTEVOQlFVTXNSVUZCUlN4TlFVY3pReXhEUVZGQkxFbEJRVWtzWTBGQlpTeERRVU5xUWl4UFFVRlBReXhIUVVGWExFdEJRVXNzU1VGQlNTeERRVU0zUWl4RFFWRkJMRWxCUVVrc1lVRkJZeXhEUVVOb1FpeFBRVUZQTjBjc1IwRkJXU3hMUVVGTExFdEJRVTBzUzBGQlN5eExRVUZMTEVOQlF6RkRMRU5CVVVFc1NVRkJTU3haUVVGaExFTkJRMllzVDBGQlR5eExRVUZMTEZGQlFWVTRSeXhIUVVGWExFdEJRVXNzU1VGQlNTeEZRVUZKTEVkQlEyaEVMRU5CVTBFc1NVRkJTU3hwUWtGQmEwSXNRMEZEY0VJc1QwRkJUeXhMUVVGTExGRkJRVlZETEVkQlFXZENMRXRCUVVzc1VVRkJVU3hGUVVGSkxFZEJRM3BFTEVOQlVVRXNjMEpCUVhOQ2VrY3NSVUZCVHl4RFFVRkRMRVZCUVVjc1EwRkRMMElzUjBGQlRTeERRVUZGTEU5QlFVRTRSaXhGUVVGUkxHZENRVUZCUXl4RlFVRnBRaXhUUVVGQlZ5eERRVUZUTEVWQlFVbHNSeXhIUVVGVkxFOUJRM1JFTEV0QlFVc3NTVUZCU1N4TlFVRk5VaXhEUVVGSkxFVkJRMjVDUVN4RFFVTkdMRVZCUVVVc1owSkJRV2RDTEVsQlFVa3NSVUZEZEVJc1RVRkJUeXhEUVVGRkxFOUJRVUU0Uml4RlFVRlJMR2RDUVVGQlF5eEZRVUZwUWl4bFFVRm5RbGNzUTBGQlV5eERRVU0zUkN4RFFWbEJMRTFCUVUwelNDeEZRVUZUTEVWQlFVZHBRaXhGUVVGUExFTkJRVU1zUlVGQlJ5eERRVU16UWl4UFFVRlBMRXRCUVVzc1VVRkJVVEJFTEVkQlFXZENMRk5CUVZNelJTeERRVUZOTEVWQlFVZHBRaXhEUVVGSkxFTkJRelZFTEVOQlVVRXNVMEZCVlN4RFFVTlNMRTlCUVU4c1MwRkJTeXhSUVVGUkswSXNSVUZCVXl4WFFVRlhMRU5CUXpGRExFTkJWMEVzVVVGQlVYSkZMRVZCUVUwc1EwRkJSU3hqUVVGQmFVb3NSVUZCWjBJc1IwRkJUeXhwUWtGQlFVTXNSVUZCYlVJc1JVRkJUU3hGUVVGSkxFTkJRVU1zUlVGQlJ5eERRVVYwUlN4SFFVUkJiRW9zUlVGQlQyOUZMRWRCUVdOd1JTeEZRVUZOY1VVc1JVRkJVeXhYUVVGWExFVkJRek5EY2tVc1JVRkJTeXhQUVVGUExFdEJRVXNzU1VGQlNTeEZRVU4yUWl4UFFVRlBMRXRCUTBZc1IwRkJTMEVzUlVGQlN5eFJRVVZXTEVOQlEwd3NTVUZCU1cxS0xFVkJRVkVzUzBGQlN5eEhRVU5xUWl4SFFVRkpSaXhIUVVGcFFrTXNSVUZCYTBJc1EwRkRja01zU1VGQlRVVXNSVUZCWTNCS0xFVkJRVXNzVDBGQlR5eExRVUZMTEVWQlFVVXNSVUZEYWtOeFNpeEZRVUZSTEV0QlFVc3NVMEZCVXl4RlFVTTFRaXhEUVVGRFJpeERRVUZMTEVWQlFVazFTQ3hIUVVGUk9FZ3NSVUZCVDBRc1JVRkJZWEJLTEVOQlFVa3NRMEZETlVNc1EwRkRRU3hQUVVGUFN5eEhRVUZOTEV0QlFVMHNRMEZCUlN4SFFVRkpPRWtzUlVGQlR5eExRVUZCYmtvc1EwRkJTeXhEUVVGRExFTkJRM2hETEV0QlZFVXNVVUZCVDNkR0xFVkJRVk1zVVVGQlVYcEdMRWRCUVdkQ1F5eERRVUZKTEVOQlFVTXNRMEZWYWtRc1EwRlJRU3haUVVGWkxFTkJRVVVzVDBGQlFXOUpMRVZCUVZFc1owSkJRVUZETEVWQlFXbENMR1ZCUVVGcFFpeERRVUZsTEVWQlFVa3NRMEZCUXl4RlFVRkhMRU5CUXpWRUxFbEJRVTFvUml4RlFVRk5MRXRCUVVzc1NVRkJTU3hOUVVGTkxFTkJRVVVzVDBGQlFUaEVMRVZCUVZFc1owSkJRVUZETEVWQlFXbENMR1ZCUVVGcFFpeERRVUZsTEVOQlFVTXNSVUZEZEVVc1QwRkJUMnBLTEVkQlFVMHNTMEZCVFN4RFFVRkZMRWxCUVVGcFJTeERRVUZKTEVOQlFVTXNRMEZETlVJc1EwRlJRU3hWUVVGVk9FUXNSVUZCVVN4RFFVTm9RaXhQUVVGUExFdEJRVXNzV1VGQldTeERRVUZGTEU5QlFVRkJMRU5CUVU4c1EwRkJReXhEUVVOd1F5eERRVmxCTEVsQlFVbHRRaXhGUVVGUkxFTkJRMVlzUjBGQlNTeERRVUZETEV0QlFVc3NVVUZCVXl4UFFVRlBMRXRCUlRGQ0xFbEJRVTEwUml4RlFVRmhkME1zUjBGQlowSTRReXhGUVVGUmVFWXNSVUZCWVN4RlFVTjBSSGxHTEVWQlEwVXNRMEZCUTJoR0xFVkJRVmxRTEVWQlFWY3NVVUZCVVN4SFFVTm9ReXhEUVVGRFR5eEZRVUZaVUN4RlFVRlhMRlZCUVZVc1IwRkRiRU1zUTBGQlEwOHNSVUZCV1ZBc1JVRkJWeXhQUVVGUExFVkJRMnBEZVVNc1JVRkJhMElzUTBGQlEyeERMRVZCUVZsUUxFVkJRVmNzVDBGQlR5eEZRVU5xUkRCRExFVkJRWEZDTEVOQlFVTnVReXhGUVVGWlVDeEZRVUZYTEVsQlFVa3NSVUZEYWtReVF5eEZRVUZ0UWl4RFFVRkRjRU1zUlVGQldWQXNSVUZCVnl4TFFVRkxMRWRCUVVzc1EwRkJRMDhzUlVGQldWQXNSVUZCVnl4SFFVRkhMRVZCUTJoR05FTXNSVUZCYVVKR0xFZEJRWE5DUXl4RlFVTjJRMFVzUlVGQmEwSTNReXhGUVVGWExGVkJRVmxCTEVWQlFWY3NWMEZGZEVRc1NVRkJTelJETEVkQlFXdENTQ3hKUVVGdlFra3NSVUZEZWtNc1RVRkJUU3hKUVVGSlF5eEhRVU5TTEhGRlFVTkdMRVZCUjBZc1IwRkJTVWdzUjBGQmIwSkdMRVZCUTNSQ0xFMUJRVTBzU1VGQlNVc3NSMEZCT0VJc2QwTkJRWGRETEVWQlIyeEdMRWxCUVVrd1F5eEZRVU5CUkN4RlFVTkdReXhGUVVGUk9VSXNSMEZCWjBKb1NDeEpRVUZCTEVkQlFVdFFMRWRCUVdkQ0xFdEJRVXNzUTBGQlF5eEhRVUZOTmtRc1JVRkJXU3hGUVVNelJFOHNSVUZCV1ZBc1JVRkJWeXhQUVVGUExFZEJSM2hEZDBZc1JVRkJVVGxKTEVsQlFVRXNSMEZCU3l4TFFVRkxMRk5CUVZNc1IwRkJUWE5FTEVkQlNUZENUeXhGUVVGWlVDeEZRVUZYTEVkQlFVY3NTVUZETlVKM1JpeEZRVUZOTEVsQlFVMHNTMEZCU3l4SlFVRkpla2dzUjBGQldYbElMRVZCUVUwc1MwRkJUVUVzUlVGQlRTeExRVUZMTEVWQlFVZEJMRVZCUVUwc1IwRkJSeXhKUVZCMFJVRXNSVUZCVVRkQ0xFZEJRVzFDYWtnc1NVRkJRU3hIUVVGTGVVY3NSMEZCYlVJc1MwRkJTeXhEUVVGRExFZEJRVTF1UkN4RlFVRlpMRVZCVnpkRkxFZEJRVTBzUTBGQlF6ZERMRVZCUVVsT0xFTkJRVU1zUlVGQlNWTXNSMEZCVVd0SkxFVkJRVThzUzBGQlN5eEZRVUZITEV0QlFVc3NTVUZCU1N4RlFVTm9SQ3hQUVVGUGNFb3NSMEZCVFN4TFFVRk5MRU5CUVVVc1IwRkJRV1VzUlVGQlNTeEZRVUZCVGl4RFFVRkZMRU5CUVVNc1EwRkRPVUlzUTBGbFFTeExRVUZMTkVrc1JVRkJWU3hEUVVOaUxFZEJRVWtzUTBGQlF5eExRVUZMTEZGQlFWTXNUMEZCVHl4TFFVTXhRaXhKUVVGTkwwZ3NSVUZCVFU4c1JVRkJVeXhwUWtGQmFVSjNTQ3hEUVVGUkxFVkJRemxETEU5QlFVOXlTaXhIUVVGTkxFdEJRVTF4UWl4SFFVRlhMRXRCUVUxRExFTkJRVWNzUTBGQlF5eERRVU14UXl4RFFWRkJMRTFCUVUwclNDeEZRVUZWTEVOQlEyUXNSMEZCU1N4RFFVRkRMRXRCUVVzc1VVRkJVeXhQUVVGUExFdEJRekZDTEVsQlFVMHZTQ3hGUVVGTlR5eEZRVUZUTEdsQ1FVRnBRbmRJTEVOQlFWRXNSVUZCUlN4UFFVRlBMRVZCUTNaRUxFOUJRVTl5U2l4SFFVRk5MRXRCUVUxeFFpeEhRVUZYTEV0QlFVMURMRU5CUVVjc1EwRkJReXhEUVVNeFF5eERRVmxCTEZGQlFWRnhReXhGUVVGTkxFTkJRMW9zUjBGQlNTeERRVUZETEV0QlFVc3NVVUZCVXl4UFFVRlBMRXRCUXpGQ0xFbEJRVTFzUkN4RlFVRkpMRU5CUVVNc1JVRkRWRFpKTEVWQlFXbENla2dzUlVGQlV5eGpRVUZqT0VJc1EwRkJTU3hGUVVNNVF5eFBRVUZSTWtZc1JVRkJaMElzUTBGRGRFSXNTVUZCU3l4UlFVTklOMGtzUlVGQlJTeE5RVUZSTEVWQlJWb3NTVUZCU3l4WFFVTk1MRWxCUVVzc1UwRkRTRUVzUlVGQlJTeEpRVUZOTEVWQlJWWXNTVUZCU3l4UlFVTk1MRWxCUVVzc1QwRkRTRUVzUlVGQlJTeExRVUZQTEVWQlJWZ3NTVUZCU3l4UlFVTklRU3hGUVVGRkxFOUJRVk1zUlVGRllpeEpRVUZMTEZWQlEwaEJMRVZCUVVVc1QwRkJVeXhGUVVWaUxFbEJRVXNzVlVGRFNFRXNSVUZCUlN4WlFVRmpMRVZCUTJoQ0xFMUJRMFlzU1VGQlN5eGxRVU5JTEV0QlJVb3NRMEZOUVN4SFFVcEpOa2tzU1VGQmJVSXNWVUZEY2tJM1NTeEZRVUZGTEZGQlFWVXNSMEZIVmpaSkxFbEJRVzFDTEZkQlFWa3NRMEZEYWtNc1NVRkJUVU1zUlVGQlNTeExRVUZMTEV0QlFVc3NTMEZCU3l4TlFVRlJMRU5CUVVNc1JVRkRiRU01U1N4RlFVRkZMRTlCUVZNNFNTeEZRVUZKTEVkQlFVc3NSVUZCU1N4RFFVTXhRaXhEUVVWQkxFOUJRVThzUzBGQlN5eEpRVUZKT1Vrc1EwRkJReXhEUVVOdVFpeERRVmxCTEUxQlFVMXJSQ3hGUVVGTkxFTkJRMVlzVDBGQlR5eExRVUZMTEZGQlExSXNTMEZCU3l4TFFVRkxMRU5CUVVVc1EwRkJRMEVzUTBGQlNTeEZRVUZITEVOQlFVVXNRMEZCUXl4RlFVTndRaXhSUVVGUlFTeERRVUZKTEVWQlExb3NUVUZCVFN4RFFVRkRMRVZCUTFZc1NVRkRUaXhEUVdkQ1FTeFRRVUZUYlVVc1JVRkJTemRHTEVWQlFVOHNRMEZCUXl4RlFVRkhMRU5CUTNaQ0xFOUJRVThzUzBGQlN5eFJRVU5TVVN4SFFVRlZMRTlCUVU4c1MwRkJTeXhKUVVGSkxHTkJRV05TTEVOQlFVa3NRMEZCUXl4RlFVRkZMSGxDUVVGNVFpeExRVUZOTmtZc1EwRkJSeXhGUVVOcVJuUkpMRVZCUTA0c1EwRnhRa0VzWlVGQlpXZExMRVZCUVhGQ1F5eEhRVUZaZUVnc1JVRkJUeXhEUVVGRExFVkJRVWNzUTBGRGVrUXNUMEZCVHl4TFFVRkxMRkZCUTFKUkxFZEJRVlVzVDBGQlR5eExRVUZMTEVsQlFVa3NUVUZCVFZJc1EwRkJTU3hGUVVGSGRVZ3NRMEZCVlN4RlFVRkZMR1ZCUVdVc1NVRkJTU3hGUVVOMFJXaExMRVZCUTA0c1EwRmxRU3hqUVVGamVVTXNSVUZCVHl4RFFVRkRMRVZCUVVjc1EwRkRka0lzVDBGQlR5eExRVUZMTEZGQlExSlJMRWRCUVZVc1QwRkJUeXhMUVVGTExFbEJRVWtzVFVGQlRWSXNRMEZCU1N4RlFVRkhRU3hEUVVGSkxFVkJRVVVzYjBKQlFXOUNMRWxCUVVrc1JVRkRja1VzUTBGQlF5eERRVU5RTEVOQlowSkJMRTFCUVUwc1EwRkRTaXhQUVVGQlF5eEZRVUZUTEZkQlExUXNaMEpCUVVGakxFVkJRV3RDTEVkQlEyeENMSEZDUVVGQlF5eEZRVUYxUWl4SFFVTjJRaXhqUVVGQlF5eEZRVUZuUWl4SFFVTm9RaXhoUVVGQlF5eEZRVUZsTEVWQlEycENMRVZCUVVrc1EwRkJReXhGUVVGSExFTkJRMDRzUjBGQlNTeERRVUZETEV0QlFVc3NVVUZEVWl4UFFVRlBMRXRCUjFRc1NVRkJUWFZITEVWQlFVMTRTQ3hKUVVGWExGZEJSVzVDVWl4RlFVRkphVUlzUjBGQlZTeExRVUZOSzBjc1EwRkJSeXhGUVVNelFpeFBRVUZCYUVrc1IwRkJTeXhKUVVOTVFTeEhRVUZMY1VJc1IwRkJWU3hMUVVGTk1rY3NSVUZCU3pGSExFVkJRV2xDUXl4RlFVRnpRa01zUlVGQlpVTXNRMEZCV1N4RlFVTnlSbnBDTEVOQlExUXNRMEZWUVN4VlFVRlZMRU5CUVVVc1QwRkJRVkVzUlVGQlV5eFZRVUZYTEVWQlFVa3NRMEZCUXl4RlFVRkhMRU5CUTNSRExFOUJRVXNzUzBGQlN5eFJRVWxJVXl4SFFVRlZMRXRCUVUxVUxFbEJRVmNzVlVGQlZTeEZRVWh1UXl4SlFVbFlMRU5CVDBFc1pVRkJaMElzUTBGRFpDeFBRVUZQU3l4SFFVRmhMRXRCUVUwc1kwRkJZeXhEUVVNeFF5eERRV2xDUVN4VlFVRlZMRU5CUTFJc2NVSkJRVUZWTEVWQlFYVkNMRWRCUTNaQ0xHZENRVUZCUkN4RlFVRnJRaXhIUVVOc1FpeGpRVUZCUlN4RlFVRm5RaXhIUVVOb1FpeGpRVUZCZVVjc1JVRkJaMElzUjBGRGFFSXNZVUZCUVhoSExFVkJRV1VzUjBGRFppeFBRVUZCYWtJc1JVRkJVeXhWUVVOWUxFVkJRVWtzUTBGQlF5eEZRVUZITEVOQlEwNHNUMEZCU3l4TFFVRkxMRk5CU1VaNVNDeEZRVUZuUWl4SlFVRk5MRWxCUnpWQ05VY3NSMEZEUlN4TFFVTkJZaXhKUVVGWExGZEJRMWhqTEVWQlEwRkRMRVZCUTBGRExFVkJRMEZETEVOQlEwWXNSVUZpVHl4SlFXVllMRU5CVVVFc1YwRkJXU3hEUVVOV0xFOUJRVTlhTEVkQlFXRXNTMEZCVFN4blEwRkJhVU1zUlVGQlN5eERRVU5zUlN4RFFWVkJMRkZCUVZNc1EwRkRVQ3hQUVVGUFFTeEhRVUZoTEV0QlFVc3NUVUZCVFN4RlFVRkhMR2xEUVVGcFF5eERRVU55UlN4RFFVOUJMRmRCUVZrc1EwRkRWaXhQUVVGTExFdEJRVXNzVVVGSFNFa3NSMEZCVlN4TFFVRk5MRVZCUVVrc1JVRkdiRUlzU1VGSFdDeERRV05CTEZWQlFWVXNRMEZCUlN4alFVRkJUeXhGUVVGblFpeEhRVUZOTEZsQlFVRXdSeXhGUVVGakxFZEJRVThzYlVKQlFVRkRMRVZCUVhGQ0xFVkJRVXNzUlVGQlNTeERRVUZETEVWQlFVY3NRMEZEZGtZc1NVRkJTUzlDTEVWQlFVMHNaVUZGVml4UFFVRkpPRUlzUjBGQlpURkhMRXRCUTJJeVJ5eEpRVU5HTDBJc1IwRkJUeXhMUVVWTU9FSXNSVUZEUmpsQ0xFZEJRVThzU1VGRFJUVkZMRWxCUTFRMFJTeEhRVUZQTEU5QlNVcDJSaXhIUVVGaExFdEJRVTExUml4RlFVRkxMRVZCUVVrc1EwRkRja01zUTBGalFTeE5RVUZOTjBZc1JVRkJUeXhEUVVGRExFVkJRVWNzUTBGRFppeFBRVUZMTEV0QlFVc3NVVUZKU0N4SFFVRkhMRXRCUVVzc1ZVRkJWU3hEUVVGRExFbEJRVWtzUzBGQlN5eFZRVUZWUVN4RFFVRkpMRU5CUVVNc1IwRklla01zU1VGSldDeERRVTFCTEZWQlFWY3NRMEZEVkN4UFFVRlBMRXRCUVVzc1VVRkJWU3hMUVVGTExFMUJRVTBzUlVGQlNYcERMRVZCUTNaRExFTkJUVUVzVTBGQlZTeERRVU5TTEU5QlFVOHNTMEZCU3l4VFFVRlRMRU5CUTNaQ0xFTkJUVUVzVlVGQlZ5eERRVU5VTEU5QlFVOHNTMEZCU3l4UlFVRlZMRXRCUVVzc1IwRkJTeXhIUVVOc1F5eERRVTFCTEZkQlFWa3NRMEZEVml4UFFVRlBMRXRCUVVzc1VVRkJWU3hMUVVGTExFZEJRVXNzU1VGQlR5eEhRVU42UXl4RFFVMUJMR1ZCUVdkQ0xFTkJRMlFzVDBGQlR5eExRVUZMTEZGQlFWVXNTMEZCU3l4TlFVRk5MRXRCUVVzc1IwRkJTeXhIUVVGSkxFVkJRVWtzUjBGRGNrUXNRMEZOUVN4UlFVRlRMRU5CUTFBc1QwRkJUeXhMUVVGTExFMUJRVTBzUTBGRGNFSXNRMEZOUVN4UlFVRlRMRU5CUTFBc1QwRkJUeXhMUVVGTExGTkJRVk1zUTBGRGRrSXNRMEZUUVN4VFFVRlRlVU1zUlVGQlR5eERRVUZETEVWQlFVY3NRMEZEYkVJc1IwRkJTU3hEUVVGRExFdEJRVXNzVVVGQlV5eE5RVUZQTEVOQlFVTXNSVUZGTTBJc1NVRkJUVFpJTEVWQlFVOTRTaXhGUVVGQkxFZEJRVXNzUzBGQlN5eEhRVVYyUWl4UFFVRkpNa0lzUlVGQlN5eG5Ra0ZEVURaSUxFVkJRVXNzWlVGQmFVSXNTMEZCU3l4bFFVTXpRa0VzUlVGQlN5eG5Ra0ZCYTBJc1MwRkJTeXhKUVVGSkxHZENRVU5vUTBFc1JVRkJTeXhQUVVGVExFdEJRVXNzU1VGQlNTeFJRVVZzUWtFc1EwRkRWQ3hEUVUxQkxGVkJRVmNzUTBGRFZDeFBRVUZQTEVsQlFVa3NTMEZCU3l4TFFVRkxMRkZCUVZVc1MwRkJTeXhIUVVGTExFZEJRVWNzUTBGRE9VTXNRMEZ0UWtFc1MwRkJTME1zUlVGQlpYQkhMRVZCUVU4c1pVRkJaMEl4UWl4RlFVRlBMRU5CUVVNc1JVRkJSeXhEUVVOd1JDeEhRVUZKTEVOQlFVTXNTMEZCU3l4VFFVRlhMRU5CUVVNNFNDeEZRVUZqTEZGQlEyeERMRTlCUVU5c1NTeEZRVUZUTEZGQlFWRXNkME5CUVhkRExFVkJSMnhGTEVsQlFVMXRTU3hGUVVGVk1Vb3NSVUZCUVN4RFFVRkZMRTlCUVZFc1MwRkJTeXhQUVVGUkxHZENRVUZwUWl4TFFVRkxMR2xDUVVGdlFqSkNMRWRCUlRORk1rVXNSVUZCVVhGRUxFZEJRVmQwUnl4RFFVRkpMRVZCUVVVc1NVRkJTVGxDTEVWQlFWTXNZVUZCWVN4RlFVTjJSSEZKTEVWQlFXVklMRVZCUVdNc1VVRkJVU3hGUVVGSkxFdEJRVXNzVVVGQlVTeEZRVU4wUkVrc1JVRkJWVVFzUlVGQlpTeExRVUZQU0N4RlFVTm9RMHNzUlVGQlVVWXNSVUZCWlVnc1JVRkJaMElzUzBGRGRrTk5MRVZCUVZORExFZEJRVXRJTEVWQlFWTkRMRVZCUVU5NFJDeEZRVUZQYjBRc1EwRkJUeXhGUVVVNVF5eFBRVUZQUlN4RlFVRmxSeXhGUVVGUExFOUJRVThzUlVGQlNVRXNRMEZETVVNc1EwRlZRU3hSUVVGUk1VY3NSVUZCVHl4bFFVRm5RakZDTEVWQlFVOHNRMEZCUXl4RlFVRkhMRU5CUTNoRExFOUJRVThzUzBGQlN5eExRVUZMYTBRc1JVRkJVeXhKUVVGSkxFVkJRVWQ0UWl4RlFVRk5NVUlzUTBGQlNTeERRVU0zUXl4RFFVOUJMRTFCUVUwNFNDeEZRVUZsTEVOQlEyNUNMRTlCUVU4c1MwRkJTeXhSUVVGVlVTeEhRVUZUTEdOQlFXTXNTMEZCVFZJc1EwRkJZU3hGUVVGSkxFbEJRM1JGTEVOQlYwRXNVVUZCVVVFc1JVRkJaWEJITEVWQlFVMHNRMEZETTBJc1IwRkJTU3hEUVVGRExFdEJRVXNzVVVGQlV5eE5RVUZQTEVkQlJURkNMRWxCUVUwMlJ5eEZRVUZWVkN4RlFVRmpMRkZCUVZFc1JVRkRhRU5WTEVWQlFXbENMRXRCUVVzc1VVRkJVVllzUlVGQll5eExRVUZOTEVOQlFVVXNZMEZCWlN4RlFVRkxMRU5CUVVNc1JVRkRMMFVzVDBGQlQxVXNSVUZCWlN4UlFVRlJPVWNzUTBGQlNTeEhRVUZMTmtjc1IwRkJWMEVzUjBGQlYwTXNSVUZCWlN4TlFVRk5PVWNzUTBGQlNTeERRVU40Uml4RFFWTkJMRTlCUVU4clJ5eEZRVUZQTEVOQlExb3NUMEZEUlN4TFFVRkxMRk5CUTB4QkxFVkJRVTBzVTBGRFRpeExRVUZMTEZGQlFWRXNTVUZCVFVFc1JVRkJUU3hSUVVGUkxFZEJRMnBETEV0QlFVc3NTMEZCU3l4UFFVRlBRU3hGUVVGTkxFbEJRVWtzUjBGRE0wSXNTMEZCU3l4SlFVRkpMRTlCUVU5QkxFVkJRVTBzUjBGQlJ5eERRVVUzUWl4RFFXOUNRU3hYUVVGWE4wVXNSVUZCVlN4RFFVRkRMRVZCUVVjc1EwRkRka0lzUjBGQlNTeERRVUZETEV0QlFVc3NVVUZCVXl4UFFVRlBMRXRCUXpGQ0xFbEJRVTFwUlN4RlFVRlBha1VzUlVGQlVTeE5RVUZSVml4RlFVRlRMRmRCUVZjc1EwRkJReXhGUVVGSExFTkJRVVVzUzBGQlRTeExRVUZMTEVsQlFVc3NRMEZCUXl4RlFVTjBSWGRHTEVWQlFWVTVSU3hGUVVGUkxGRkJRVmNzUzBGQlQybEZMRVZCUVU4c1EwRkJRMnBGTEVWQlFWRXNVVUZCVlVFc1JVRkJVU3hSUVVGWExFVkJReTlGWlN4RlFVRlJMRU5CUVVNc1VVRkJVeXhUUVVGVkxFOUJRVkVzVVVGQlV5eFZRVUZYTEZOQlFWTXNSVUZEYWtWcVJDeEZRVUZQYTBNc1JVRkJVU3hMUVVOdVFpeFBRVUZKTEUxQlFVMHNVVUZCVVVFc1JVRkJVU3hKUVVGSkxFbEJRelZDWlN4RlFVRlJaaXhGUVVGUkxFdEJRMmhDYkVNc1JVRkJUeXhSUVVWR1l5eEhRVUZoY1VZc1JVRkJUU3hMUVVGTExFdEJRVXRoTEVOQlFVOHNSVUZCUjNSTExFZEJRVUZETEVWQlFVRXNSMEZEZWtOMVJpeEhRVVI1UXl4RFFVVTFReXhSUVVGVExGTkJRMVFzVFVGQlFXVXNSVUZEUVN4TFFVRkJha1FzUTBGRFJpeEZRVUZETEVOQlEwZ3NRMEZsUVN4dFFrRkJiVUpyUXl4RlFVRlZMRU5CUVVNc1JVRkJSeXhEUVVNdlFpeFBRVUZMTEV0QlFVc3NVVUZGU0hCQ0xFZEJRV0Z2UWl4RlFVRlJMRTFCUVZGV0xFVkJRVk1zVjBGQlZ5eERRVUZETEVWQlFVY3NRMEZCUlN4TFFVRk5MRXRCUVVzc1NVRkJTeXhEUVVGRExFVkJRVWNzUzBGQlRUbEZMRWRCUVVGRExFVkJRVUVzUjBGRGJrWjFSaXhIUVVSdFJpeERRVVYwUml4UlFVRlRMRTlCUTFRc1RVRkJUeXhEUVVGRExGRkJRVk1zVTBGQlZTeE5RVUZOTEVWQlEycERMRlZCUVZjc1JVRkRZaXhGUVVGRExFVkJVSGxDTEVsQlVUVkNMRU5CVDBFc1QwRkJUeXhQUVVGUEswVXNSVUZCVnl4RFFVTjJRaXhIUVVGSkxFTkJRVU5CTEVWQlFWVXNUVUZCVFhwR0xFVkJRVk1zVlVGQlZTeEZRVU4wUXl4TlFVRk5MRWxCUVVsbExFZEJRWEZDTEhsRFFVRjVReXhGUVVVeFJTeFBRVUZQTWtVc1IwRkJUMFFzUlVGQldVVXNSMEZCVFVFc1JVRkJSU3hSUVVGUkxFVkJRVWNzUzBGQlN5eEhRVUZITEVOQlEzWkVMRU5CVDBFc1QwRkJUeXhQUVVGUFJpeEZRVUZYTEVOQlEzWkNMRWRCUVVrc1EwRkJRMEVzUlVGQlZTeE5RVUZOZWtZc1JVRkJVeXhWUVVGVkxFVkJRM1JETEUxQlFVMHNTVUZCU1dVc1IwRkJjVUlzZVVOQlFYbERMRVZCUlRGRkxFOUJRVTh5UlN4SFFVRlBSQ3hGUVVGWlJTeEhRVUZOUVN4RlFVRkZMRkZCUVZFc1JVRkJSeXhMUVVGTExFZEJRVWNzUTBGRGRrUXNRMEZYUVN4UFFVRlBMR3RDUVVGclFqTkpMRVZCUVUweVJpeEZRVUZMYWtNc1JVRkJWU3hEUVVGRExFVkJRVWNzUTBGRGFFUXNSMEZCVFN4RFFVRkZMRTlCUVVGclF5eEZRVUZUTEV0QlFVMHNaMEpCUVVGRExFVkJRV3RDTEVsQlFVc3NSVUZCU1c1RExFVkJRMmhFYjBNc1JVRkJZM1pHTEVkQlFVOHNVMEZCVXl4RFFVTTFRaXhQUVVGQmNVWXNSVUZEUVN4blFrRkJRVU1zUlVGRFFTeFpRVUZoTEVWQlEyWXNRMEZCUXl4RlFVTklMRTlCUVU4clF5eEhRVUZyUWpsRExFVkJRV0U1Uml4RlFVRk5Na1lzUTBGQlJ5eERRVU5xUkN4RFFVdEJMRTlCUVU4c2EwSkJRV3RDTTBZc1JVRkJUVEpHTEVWQlFVdHFReXhGUVVGVkxFTkJRVU1zUlVGQlJ5eERRVU5vUkN4UFFVRlBWaXhGUVVGVExHdENRVUZyUW1oRUxFVkJRVTB5Uml4RlFVRkxha01zUTBGQlR5eERRVU4wUkN4RFFWRkJMRmRCUVZjc1dVRkJZU3hEUVVOMFFpeFBRVUZsTkVRc1JVRkRha0lzUTBGTlFTeFhRVUZYTEZWQlFWY3NRMEZEY0VJc1QwRkJaWFZDTEVWQlEycENMRU5CVFVFc1YwRkJWeXgxUWtGQmQwSXNRMEZEYWtNc1QwRkJaVU1zUlVGRGFrSXNRMEZOUVN4WFFVRlhMRmRCUVZrc1EwRkRja0lzVDBGQlpVTXNSVUZEYWtJc1EwRk5RU3hYUVVGWExGZEJRVmtzUTBGRGNrSXNUMEZCWlVNc1JVRkRha0lzUTBGTlFTeFhRVUZYTEdGQlFXTXNRMEZEZGtJc1QwRkJaVU1zUlVGRGFrSXNRMEZOUVN4WFFVRlhMRzFDUVVGdlFpeERRVU0zUWl4UFFVRmxReXhGUVVOcVFpeERRVTFCTEZkQlFWY3NkMEpCUVhsQ0xFTkJRMnhETEU5QlFXVkRMRVZCUTJwQ0xFTkJUVUVzVjBGQlZ5eDFRa0ZCZDBJc1EwRkRha01zVDBGQlpVTXNSVUZEYWtJc1EwRk5RU3hYUVVGWExHZENRVUZwUWl4RFFVTXhRaXhQUVVGbFF5eEZRVU5xUWl4RFFVMUJMRmRCUVZjc2MwSkJRWFZDTEVOQlEyaERMRTlCUVdWRExFVkJRMnBDTEVOQlRVRXNWMEZCVnl3eVFrRkJORUlzUTBGRGNrTXNUMEZCWlVNc1JVRkRha0lzUTBGTlFTeFhRVUZYTERCQ1FVRXlRaXhEUVVOd1F5eFBRVUZsUXl4RlFVTnFRaXhEUVUxQkxGZEJRVmNzWjBKQlFXbENMRU5CUXpGQ0xFOUJRV1ZETEVWQlEycENMRU5CVFVFc1YwRkJWeXcyUWtGQk9FSXNRMEZEZGtNc1QwRkJaVU1zUlVGRGFrSXNRMEZOUVN4WFFVRlhMR05CUVdVc1EwRkRlRUlzVDBGQlpVTXNSVUZEYWtJc1EwRk5RU3hYUVVGWExESkNRVUUwUWl4RFFVTnlReXhQUVVGbFF5eEZRVU5xUWl4RFFVMUJMRmRCUVZjc01rSkJRVFJDTEVOQlEzSkRMRTlCUVdWRExFVkJRMnBDTEVOQlRVRXNWMEZCVnl4bFFVRm5RaXhEUVVONlFpeFBRVUZsUXl4RlFVTnFRaXhEUVUxQkxGZEJRVmNzTkVKQlFUWkNMRU5CUTNSRExFOUJRV1ZETEVWQlEycENMRU5CVFVFc1YwRkJWeXhsUVVGblFpeERRVU42UWl4UFFVRmxReXhGUVVOcVFpeERRVTFCTEZkQlFWY3NORUpCUVRaQ0xFTkJRM1JETEU5QlFXVkRMRVZCUTJwQ0xFTkJRMFlzUlVGTFR5eFRRVUZUUXl4SFFVRnBRa01zUlVGQllTeERRVU0xUXl4SFFVRkpiRTBzUlVGQlV5eFhRVUZYYTAwc1EwRkJWeXhGUVVOcVF5eFBRVUZQUVN4RlFVTkdMRWRCUVVsQkxFZEJRV1ZCTEVWQlFWa3NVMEZCVjNKSExFZEJRVk54Unl4RlFVRlpMRkZCUVZFc1EwRkJReXhGUVVNM1JTeFBRVUZQYkUwc1JVRkJVeXhYUVVGWGEwMHNRMEZCVnl4RlFVTnFReXhIUVVGSlFTeEhRVUZsTEU5QlFVOUJMRWRCUVdkQ0xGTkJReTlETEU5QlFVOXNUU3hGUVVGVExGZEJRVmRyVFN4RFFVRlhMRVZCUlhSRExFMUJRVTBzU1VGQlNYQkhMRWRCUTFJc09FSkJRVGhDYjBjc1EwRkJWeXhoUVVGaExFOUJRVTlCTEVOQlFWY3NSVUZETVVVc1EwRkZTaXhEUXpGeFJVRXNTVUZCUVVNc1IwRkJiVUlzVTBORWJrSXNTVUZCVDBNc1IwRkJVU3hKUVVWUUxESm5Xa1JaUkN4VFFVRlRReXhIUVVGclFrTXNSVUZCWlN4RFFVTTNReXhQUVVGNVFrRXNSMEZCVVN4TFFVRmhRU3hGUVVWMlEwRXNSVUZCU1N4UlFVRlJMRkZCUVZNc1UwRkJWU3hSUVVGVExFOUJRVkVzVVVGQlV5eFZRVUZYTEZWQlFWY3NZMEZCWXl4RlFVRkZMRlZCUVZVc1EwRkRjRWdzUTBFMFFrOHNVMEZCVTBNc1IwRkJhMEpETEVWQlFXZENReXhGUVVGdlFrTXNSVUZCZDBKRExFVkJRWGxDTEVOQlJXNUlMRTlCUVVsSUxFVkJRVXNzVVVGQlZTeEhRVUZMUVN4RlFVRkxMRkZCUVZVc1IwRkJTMEVzUlVGQlN5eE5RVUZSTEVWQlF6bERRU3hGUVVGTExGRkJRVkVzUlVGQlJTeFRRVUZUUXl4RlFVRlpMRU5CUVVVc1QwRkJRVVVzUTBGQlR5eERRVUZETEVWQlIyeEVTQ3hGUVVGTExGRkJRVkVzUlVGQlJTeFRRVUZUUlN4RlFVRm5RaXhEUVVGRkxFOUJRVUZETEVOQlFVOHNRMEZCUXl4RFFVTTNSQ3hEUVVkUExGTkJRVk5ETEVkQlFYTkNReXhGUVVGMVFpeERRVU42UkVFc1JVRkJUVU1zUjBGQmEwSkVMRU5CUVVjc1JVRkhNMElzU1VGQlNVVXNSVUZCVXl4SFFVTmlMRTlCUVVsR0xFVkJRVWtzVVVGQlQwVXNSMEZCVlN4SFFVRkhSaXhGUVVGSkxFdEJRVXNzV1VGRGFrTkJMRVZCUVVrc1UwRkJVVVVzUjBGQlZTeEhRVUZIUml4RlFVRkpMRTFCUVUwc1lVRkRia05CTEVWQlFVa3NVVUZCVDBVc1IwRkJWU3hIUVVGSFJpeEZRVUZKTEV0QlFVc3NXVUZEYWtOQkxFVkJRVWtzVDBGQlRVVXNSMEZCVlN4SFFVRkhSaXhGUVVGSkxFbEJRVWtzVjBGREwwSkJMRVZCUVVrc1VVRkJUMFVzUjBGQlZTeEhRVUZIUml4RlFVRkpMRXRCUVVzc1dVRkRha05CTEVWQlFVa3NWVUZCVTBVc1IwRkJWU3hIUVVGSFJpeEZRVUZKTEU5QlFVOHNZMEZEY2tOQkxFVkJRVWtzVlVGQlUwVXNSMEZCVlN4SFFVRkhMRXRCUVVzc1RVRkJUVVlzUlVGQlNTeFBRVUZQTEVOQlFVTXNZMEZEYWtSQkxFVkJRVWtzWlVGQlkwVXNSMEZCVlN4SFFVRkhMRXRCUVVzc1RVRkJUVVlzUlVGQlNTeFpRVUZaTEVOQlFVTXNVMEZGTTBSRkxFVkJRVThzVTBGQlV5eEpRVUZKTEVsQlFVZEJMRVZCUVZOQkxFVkJRVThzVlVGQlZTeEZRVUZIUVN4RlFVRlBMRTlCUVZNc1EwRkJReXhIUVVOc1JVRXNRMEZEV0N4RFFXVlBMRk5CUVZORExFZEJRV0ZETEVWQlFYTkNMRU5CUXk5RExFOUJRVWxCTEVWQlFVc3NVMEZCVXl4SFFVRkhMRWxCUVVkQkxFVkJRVTlCTEVWQlFVc3NWVUZCVlVFc1JVRkJTeXhaUVVGWkxFZEJRVWNzUlVGQlNTeERRVUZETEVkQlEyNUZRU3hGUVVGTExGTkJRVk1zUzBGQlN5eEpRVUZIUVN4RlFVRlBRU3hGUVVGTExGVkJRVlVzUlVGQlIwRXNSVUZCU3l4UFFVRlRMRU5CUVVNc1IwRkRNMFJCTEVOQlExZ3NRMEZIVHl4VFFVRlRReXhIUVVGaFJDeEZRVUZ6UWl4RFFVTXZReXhQUVVGTFFTeEZRVUZMTEZOQlFWTXNSMEZCUnl4RlFVTm1RU3hGUVVGTExGVkJRVlZCTEVWQlFVc3NXVUZCV1N4SFFVRkhMRVZCUVVrc1EwRkJReXhGUVVSbUxFVkJSWEJETEVOQk1rTkJMRWxCUVUxRkxFZEJRVEpETEU5QlF6TkRMRk5CUVUwc1NVRkJTU3hQUVVGUFF5eEhRVUZYTEVWQlFVY3NSVUZCUlN4RFFVRkRMRVZCUTJ4RExGTkJRVTBzY1VKQlFYRkNMRVZCUXpOQ0xHTkJRVmNzU1VGQlMwTXNSMEZCVFN4SFFVRkhMRVZCUTNwQ0xFOUJRVWtzU1VGQlMwRXNSMEZCVFN4SFFVRkhMRU5CUTNoQ0xFVkJRMHNzUzBGQlN5eEZRVU5NTEVsQlFVdERMRWRCUTB0QkxFVkJRVThzUzBGQlN5eEZRVUZGTEVWQlFVVXNUVUZCVFN4TFFVRkxMRVZCUVVVc1MwRkJTeXhIUVVGSExFVkJRVVVzUzBGQlN5eERRVU4wUkN4RlFVMUZMRk5CUVZORExFZEJRWFZDUXl4RlFVRjNRaXhEUVVNelJDeFBRVUZQVEN4SFFVRnhRaXhUUVVGVFN5eERRVUZOTEVOQlF5OURMRU5GZUVwUExFbEJRVTFETEVkQlFVNHNUVUZCVFVNc1EwRkJTeXhEUVdGa0xFOUJRV01zUzBGQlMwTXNSVUZCWTBNc1JVRkJhVUlzUjBGQlQwTXNSVUZCZDBJc1EwRkROMFVzVDBGQlR5eEpRVUZKU0N4RlFVRkxMRU5CUTFvc1MwRkJRVU1zUlVGRFFTeE5RVUZCUXl4RlFVTkJMRkZCUVVGRExFVkJRMEVzVVVGQlV5eFBRVU5VTEV0QlFVMHNUVUZEVml4RFFVRkRMRU5CUTB3c1EwRkhRU3hQUVVGakxFMUJRVTFETEVWQlFXdENSaXhGUVVGcFFpeEhRVUZQUXl4RlFVRjNRaXhEUVVOc1JpeEhRVUZKUXl4RlFVRlRMRk5CUVZNc1NVRkJTU3hGUVVGSExFTkJRM3BDTEVsQlFVbERMRVZCUVZGRUxFVkJRVk1zVFVGQlRTeEpRVUZKTEVWQlF5OUNMRTlCUVU5S0xFVkJRVXNzVFVGQlRVc3NSVUZCVFN4RFFVRkRMRVZCUVVkQkxFVkJRVTBzUTBGQlF5eEZRVUZIU0N4RlFVRlBReXhEUVVGUExFTkJRM2hFTEZOQlFWZERMRVZCUVZNc1UwRkJVeXhIUVVGSExFVkJRVWNzUTBGREwwSXNTVUZCU1VNc1JVRkJVVVFzUlVGQlV5eE5RVUZOTEVkQlFVY3NSVUZET1VJc1QwRkJUMG9zUlVGQlN5eFBRVUZQU3l4RlFVRk5MRU5CUVVNc1JVRkJSMEVzUlVGQlRTeERRVUZETEVWQlFVZElMRVZCUVU5RExFTkJRVThzUTBGRGVrUXNTMEZCVHl4UlFVRlBTQ3hGUVVGTExFdEJRVXRKTEVWQlFWVkdMRVZCUVU5RExFTkJRVThzUTBGRGNFUXNRMEZIUVN4UFFVRmpMRTlCUVU5R0xFVkJRV05MTEVWQlFXZENTaXhGUVVGcFFrTXNSVUZCZDBJc1EwRkZlRVlzVDBGQlR5eEpRVUZKU0N4RlFVRkxMRU5CUTFvc1MwRkJRVU1zUlVGRFFTeE5RVUZCUXl4RlFVTkJMRkZCUVVGRExFVkJRMEVzVVVGQlUwa3NSMEZCZFVKRUxFTkJRVTBzUlVGRGRFTXNTMEZCVFN4UlFVTldMRU5CUVVNc1EwRkRUQ3hEUVVkQkxFOUJRV01zVFVGQlRVd3NSVUZCWTA4c1JVRkJhVUpPTEVWQlFXbENReXhGUVVGM1FpeERRVU40Uml4UFFVRlBMRWxCUVVsSUxFVkJRVXNzUTBGRFdpeExRVUZCUXl4RlFVTkJMRTFCUVVGRExFVkJRMEVzVVVGQlFVTXNSVUZEUVN4UlFVRlRTeXhGUVVOVUxFdEJRVTBzVDBGRFZpeERRVUZETEVOQlEwd3NRMEZIUVN4UFFVRmpMRmRCUVZkRExFVkJRWGRDTEVOQlF6ZERMRTlCUVU4c1NVRkJTVlFzUlVGQlMxTXNRMEZCVFN4RFFVTXhRaXhEUVVkQkxFOUJRV01zVjBGQlYwTXNSVUZCZFVJc1EwRkROVU1zUjBGQlNTeERRVUZEUXl4RlFVRk5VaXhEUVVGUExFVkJRVWxUTEVkQlFYRkNSaXhEUVVGUExFVkJRMnhFTEU5QlFVOVdMRVZCUVVzc1RVRkJUVmNzUlVGQlRTeEhRVUZQVWl4RFFVRlBMRU5CUXpGRExFTkJSVkVzV1VGQldWVXNSVUZCZFVJc1EwRkRka01zVDBGQlR5eFBRVUZQTEV0QlFVMUJMRU5CUVUwc1EwRkRPVUlzUTBGSFR5eFRRVUZUV2l4RlFVRnZRaXhEUVVOb1F5eFBRVUZQTEVsQlFVbEVMRVZCUVVzc1QwRkJUeXhQUVVGUExFTkJRVU1zUlVGQlJ5eExRVUZOTEVOQlFVVXNTMEZCUVVNc1EwRkJTeXhEUVVGRExFTkJRVU1zUTBGRGNrUXNRMEZIVHl4WlFVRlpSU3hGUVVGM1FpeERRVU4yUXl4UFFVRlBMRWxCUVVsSUxFVkJRVXNzVDBGQlR5eFBRVUZQTEVOQlFVTXNSVUZCUnl4TFFVRk5MRU5CUVVVc1VVRkJRVWNzUTBGQlVTeERRVUZETEVOQlFVTXNRMEZEZUVRc1EwRkhUeXhWUVVGVlJDeEZRVUZ6UWl4RFFVTnVReXhQUVVGSkxFdEJRVXNzVDBGQlUwRXNSVUZCWXl4TFFVVjZRaXhKUVVGSlJpeEZRVUZMTEU5QlFVOHNUMEZCVHl4RFFVRkRMRVZCUVVjc1MwRkJUU3hEUVVGRkxFMUJRVUZGTEVOQlFVMHNRMEZCUXl4RFFVRkRMRU5CUTNSRUxFTkJSMDhzVjBGQlYwa3NSVUZCYzBJc1EwRkRjRU1zVDBGQlQwNHNSVUZCU3l4UFFVRlBMRXRCUVVzc1MwRkJUVTBzUlVGQlVTeExRVUZMTEUxQlFVOHNTMEZCU3l4UFFVRlBMRU5CUTJ4RkxFTkJSMDhzVlVGQlZWRXNSVUZCY1VJc1EwRkRiRU1zVDBGQlQyUXNSVUZCU3l4TlFVRk5MRXRCUVVzc1MwRkJUV01zUlVGQlR5eExRVUZMTEUxQlFVOHNTMEZCU3l4UFFVRlBMRU5CUTJoRkxFTkJSMDhzVDBGQlQwTXNSVUZCYzBJc1EwRkRhRU1zVDBGQlNVRXNSMEZCVXl4TlFVRmhRU3hIUVVGVExFdEJRV0VzUjBGRmVrTXNTMEZCU3l4TlFVRlJRU3hGUVVGTkxFMUJRVkVzUzBGQlN5eE5RVUZSUVN4RlFVRk5MRTFCUVZFc1MwRkJTeXhUUVVGWFFTeEZRVUZOTEU5QlEzWkdMRU5CUjA4c1ZVRkJiVUlzUTBGRGRFSXNUMEZCVHl4TFFVRkxMRk5CUVZNc1EwRkRla0lzUTBGSFR5eFZRVUZ4UWl4RFFVTjRRaXhOUVVGUExFTkJRMGdzUzBGQlRTeExRVUZMTEV0QlExZ3NTMEZCVFN4TFFVRkxMRXRCUTFnc1VVRkJVeXhMUVVGTExGRkJRMlFzVVVGQlV5eExRVUZMTEZGQlEyUXNUVUZCVHl4TFFVRkxMRXRCUTJoQ0xFTkJRMG9zUTBGSFR5eFJRVUZsTEVOQlEyeENMRTlCUVU5bUxFVkJRVXNzUzBGQlN5eExRVUZMTEV0QlFVMHNTMEZCU3l4TlFVRlBMRXRCUVVzc1QwRkJUeXhEUVVONFJDeERRVWRQTEZOQlFXZENMRU5CUTI1Q0xFOUJRVThzUzBGQlN5eFZRVUZWTEVWQlFVa3NRMEZET1VJc1EwRkhUeXhYUVVGclFpeERRVU55UWl4UFFVRlBMRXRCUVVzc1ZVRkJWU3hGUVVGTExFTkJReTlDTEVOQlIwOHNWVUZCYlVJc1EwRkRkRUlzU1VGQlNXZENMRWRCUVZVc1MwRkJTeXhOUVVGUkxFbEJRVTBzU1VGQlRTeExRVUZQTEV0QlFVc3NZVUZCWVN4RlFVTm9SU3hQUVVGQlFTeEhRVUZWTEVsQlExWkJMRWRCUVZVc1MwRkJTeXhwUWtGQmFVSXNSVUZEYUVOQkxFZEJRVlVzUzBGRFNFRXNRMEZEV0N4RFFVZFBMR3RDUVVGdFFpeERRVU4wUWl4SFFVRkpMRXRCUVVzc1VVRkRUQ3hQUVVGUExFdEJRVXNzVVVGRFZDeERRVU5JTEVsQlFVbEJMRVZCUVZORExFZEJRV0VzUzBGQlN5eEpRVUZKTEVWQlEyNURMRTlCUVVrc1MwRkJTeXhOUVVGUkxGVkJRVmtzUzBGQlN5eE5RVUZSTEZkQlFWTkVMRWRCUVZVc1RVRkJVU3hMUVVGTExGTkJSVzVGUVN4RFFVTllMRU5CUTBvc1EwRkhUeXhqUVVGMVFpeERRWEJMYkVNc1NVRkJRVVVzUlVGQlFVTXNSVUZ4UzFFc1NVRkJUVU1zUlVGQlZTeExRVUZMTEV0QlFVc3NVVUZCVVN4SlFVRkxMRXRCUVVzc1JVRkROVU1zVDBGQlNTeExRVUZMTEUxQlFWRXNVMEZCYVVKQkxFVkJRVlVzVFVGQlRVWXNSVUZCUVN4TFFVRkxMRlZCUVV3c1dVRkJRVUVzUlVGQll5eFJRVUZSTEVsQlFVc3NVVUZEZWtVc1MwRkJTeXhOUVVGUkxGRkJRV2RDUlN4RlFVRlZMRTlCUVU5RUxFVkJRVUVzUzBGQlN5eFZRVUZNTEZsQlFVRkJMRVZCUVdNc1VVRkJVU3hKUVVGTExGRkJRMnBGUXl4RFFVTm9RaXhEUVVkUExGVkJRVzFDTEVOQlEzUkNMRTlCUVU5SUxFZEJRV0VzUzBGQlN5eEpRVUZKTEVOQlEycERMRU5CUTBvc1JVRnhRazhzVTBGQlUwd3NSMEZCY1VKRUxFVkJRVFJETEVOQlF6ZEZMRWxCUVVsVkxFVkJRVThzUjBGRFdDeE5RVUZSUVN4RlFVRlBWaXhGUVVGTExGRkJRVkVzU1VGQlMxVXNSVUZCVHl4RFFVRkRMRWxCUVUwc1IwRkRNME1zUjBGQlNTeEZRVUZCUVN4RlFVRlBMRWRCUVV0V0xFVkJRVXRWTEVWQlFVOHNRMEZCUXl4SFFVRkxMRTFCUTJ4RExFMUJRVThzUTBGQlExWXNSVUZCU3l4VlFVRlZMRVZCUVVkVkxFTkJRVWtzUlVGQlJTeFJRVUZSTEZGQlFWTXNSMEZCUnl4RlFVRkhWaXhGUVVGTExGVkJRVlZWTEVWQlFVOHNRMEZCUXl4RFFVRkRMRVZCUjI1R0xFMUJRVThzUTBGQlExWXNSVUZCU3l4UlFVRlJMRkZCUVZNc1IwRkJSeXhGUVVGSExFMUJRVk1zUTBGRGFrUXNRME0xVFVFc1NVRkJUVmNzUjBGQlVTeFBRVUZQTEVsQlFVa3NXVUZCV1N4RlFVTXZRa01zUjBGQlRTeFBRVUZQTEVsQlFVa3NaVUZCWlN4RlFVTm9RME1zUjBGQlRTeFBRVUZQTEVsQlFVa3NWVUZCVlN4RlFVTXpRa01zUjBGQlR5eFBRVUZQTEVsQlFVa3NWMEZCVnl4RlFVTTNRa01zUjBGQlV5eFBRVUZQTEVsQlFVa3NZVUZCWVN4RlFVTnFRME1zUjBGQlRTeFBRVUZQTEVsQlFVa3NWVUZCVlN4RlFVTXpRa01zUjBGQldTeFBRVUZQTEVsQlFVa3NaMEpCUVdkQ0xFVkJRM1pEUXl4SFFVRlhReXhIUVVGVExFTkJRVU1zUTBGQlEwRXNSMEZCVVN4UFFVRlBRU3hIUVVGVExGVkJRVmxCTEVWQlFVdEdMRVZCUVZNc1NVRkJUVTRzUjBGRE9VVlRMRWRCUVdORUxFZEJRVk1zUTBGQlF5eERRVUZEUVN4SFFVRlJMRTlCUVU5QkxFZEJRVk1zVlVGQldVRXNSVUZCUzBZc1JVRkJVeXhKUVVGTlRDeEhRVU5xUmxNc1IwRkJVMFlzUjBGQlV5eERRVUZETEVOQlFVTkJMRWRCUVZFc1QwRkJUMEVzUjBGQlV5eFZRVUZaUVN4RlFVRkxSaXhGUVVGVExFbEJRVTFLTEVkQlF6VkZVeXhGUVVGVlNDeEhRVUZUTEVOQlFVTXNRMEZCUTBFc1IwRkJVU3hQUVVGUFFTeEhRVUZUTEZWQlFWbEJMRVZCUVV0R0xFVkJRVk1zU1VGQlRVZ3NSMEZETjBWVExFVkJRVmxLTEVkQlFWTXNRMEZCUXl4RFFVRkRRU3hIUVVGUkxFOUJRVTlCTEVkQlFWTXNWVUZCV1VFc1JVRkJTMFlzUlVGQlV5eEpRVUZOUml4SFFVTXZSVk1zUjBGQlUwd3NSMEZCVXl4RFFVRkRMRU5CUVVOQkxFZEJRVkVzVDBGQlQwRXNSMEZCVXl4VlFVRlpRU3hGUVVGTFJpeEZRVUZUTEVsQlFVMUVMRWRCUTJ4R0xGTkJRVk5UTEVWQlFXRk9MRVZCUVUwc1EwRkRlRUlzUjBGQlNVRXNSMEZCVVN4UFFVRlBRU3hIUVVGVExGTkJRM2hDTEU5QlFWRkJMRVZCUVV0R0xFVkJRVk1zUlVGQlJ5eERRVU55UWl4TFFVRkxTaXhIUVVOTUxFdEJRVXRITEVkQlEwUXNUVUZCVHl4RlFVTm1MRU5CUTBvc1RVRkJUeXhGUVVOWUxFTkJRMEVzVTBGQlUxVXNSVUZCVDFBc1JVRkJUU3hEUVVOc1FpeEhRVUZKUVN4SFFVRlJMRTlCUVU5QkxFZEJRVk1zVTBGRGVFSXNUMEZCVVVFc1JVRkJTMFlzUlVGQlV5eEZRVUZITEVOQlEzSkNMRXRCUVV0T0xFZEJRMHdzUzBGQlMwVXNSMEZEVEN4TFFVRkxSU3hIUVVOTUxFdEJRVXRETEVkQlEwUXNUVUZCVHl4RlFVTm1MRU5CUTBvc1RVRkJUeXhGUVVOWUxFTkJRMEVzU1VGQlRWY3NSMEZCWVZJc1NVRkJWVWtzUlVGQlUwb3NRMEZCU1N4SFFVRkxUU3hGUVVGaFRpeERRVUZKTEVsQlFVMHNRMEZCUXl4RFFVRkRRU3hGUVVGTExFOURMMEkzUlN4SlFVRk5VeXhIUVVGUkxFOUJRVThzWVVGQllTeEZRVU0xUWtNc1IwRkJUeXhQUVVGUExHVkJRV1VzUlVGRE4wSkRMRWRCUVZNc1QwRkJUeXhoUVVGaExFVkJLMEp1UXl4VFFVRlRReXhIUVVGTlF5eEZRVUZOUXl4RlFVRlRMRU5CUXpGQ0xFbEJRVTFETEVWQlFWZERMRWRCUVZsR0xFTkJRVThzUlVGRGFFTkhMRWRCUVZkS0xFTkJRVWtzUlVGRFNrc3NSMEZCVHl4TFFVRk5UQ3hGUVVGTExGTkJRVlZGTEVWQlFWVXNUMEZCVHl4UFFVRlBMRU5CUVVOR0xFTkJRVWtzUTBGQlF5eERRVUZETEVsQlF6TkVSaXhMUVVOUVJTeEZRVUZMTEZOQlFWY3NUVUZIY0VKTExFZEJRVThzUzBGQlRVd3NSVUZCVFVVc1JVRkJWU3hQUVVGUExFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZEZEVRc1EwRkxRVWdzUjBGQlRTeE5RVUZSU0N4SFFVVmtSeXhIUVVGTkxFdEJRVTlHTEVkQlJXSkZMRWRCUVUwc1QwRkJVMFFzUjBGRFppeFRRVUZUVHl4SFFVRlBReXhGUVVGTFRpeEZRVUZOUXl4RlFVRlRUU3hGUVVGTkxFTkJRM1JETEVsQlFVMURMRVZCUVU5RExFZEJRVmxJTEVWQlFVdE9MRVZCUVUxRExFVkJRVk5OTEVOQlFVa3NSVUZEYWtRc1IwRkJTVWNzUlVGQlQwWXNRMEZCU1N4SFFVRkxSeXhGUVVGUFNDeERRVUZKTEVWQlF6TkNMRTlCUVVGSkxFZEJRVmxPTEVWQlFVdERMRVZCUVUxRExFTkJRVWtzUlVGRGNFSklMRWRCUVU5RExFVkJRVXRGTEVWQlFVMVFMRVZCUVZOTkxFTkJRVWtzUlVGRk1VTXNSMEZCU1N4UFFVRlBReXhIUVVGVExGVkJRMmhDTEVkQlFVbExMRVZCUVdGaUxFTkJRVWtzUlVGQlJ5eERRVU53UWs4c1JVRkJUeXhQUVVGUExFOUJRVTlCTEVWQlFVc3NUMEZCVDFBc1EwRkJTU3hEUVVGRExFVkJRM1JETEZGQlFWTXNSVUZCU1N4RlFVRkhMRVZCUVVsQkxFVkJRVXNzVFVGQlRTeFBRVUZSTEVWQlFVVXNSVUZCUnl4RFFVTjRReXhKUVVGTll5eEZRVUZMVkN4SFFVRlBMRVZCUVVkTUxFVkJRVXNzVFVGQlRTeERRVUZETEVWQlFVZERMRVZCUVZOTkxFTkJRVWtzUlVGRGFrUXNSMEZCU1N4UFFVRlBUeXhIUVVGUExGTkJRMlFzUlVGQlNVRXNSVUZCU3l4TlFVTlNMRWxCUVVsQkxFbEJRVTlzUWl4SFFVTmFMRTlCUVU5QkxFZEJRMFpyUWl4SlFVRlBhRUlzUzBGRFdrVXNSVUZCU3l4TlFVRk5MRTlCUVU4c1JVRkJSeXhEUVVGRExFVkJRM1JDTEVkQlFVc3NSMEZGWWl4RFFVTktMRk5CUTFOWExFVkJRVTlZTEVOQlFVa3NSVUZCUnl4RFFVTnVRazhzUlVGQlR5eFBRVUZQTEU5QlFVOUJMRVZCUVVzc1QwRkJUMUFzUTBGQlNTeERRVUZETEVWQlEzUkRMRWxCUVUxbExFVkJRVXRXTEVkQlFVOHNUVUZCVDB3c1JVRkJTeXhKUVVGTFF5eEZRVUZUVFN4RFFVRkpMRVZCUTJoRUxFZEJRVWxSTEVsQlFVOXVRaXhIUVVOUUxFOUJRVTlCTEVkQlEwWnRRaXhKUVVGUGFrSXNTMEZEV2tVc1JVRkJTeXhKUVVGTkxFMUJRMllzU1VGQlRXZENMRVZCUVV0WUxFZEJRVThzVVVGQlUwd3NSVUZCU3l4TlFVRlBReXhGUVVGVFRTeERRVUZKTEVWQlEzQkVMRWRCUVVsVExFbEJRVTl3UWl4SFFVTlFMRTlCUVU5QkxFZEJRMFp2UWl4SlFVRlBiRUlzUzBGRFdrVXNSVUZCU3l4TlFVRlJMRXRCUTNKQ0xFVkJSVW9zVDBGQlQxRXNRMEZEV0N4RFFXZERRU3hsUVVGbFV5eEhRVUZYYWtJc1JVRkJUVU1zUlVGQlV5eERRVU55UXl4SlFVRk5ReXhGUVVGWFF5eEhRVUZaUml4RFFVRlBMRVZCUTJoRFJ5eEhRVUZYU2l4RFFVRkpMRVZCUTBvc1RVRkJUV3RDTEVkQlFWa3NTMEZCVFd4Q0xFVkJRVXNzVTBGQlZVVXNSVUZCVlN4UFFVRlBMRTlCUVU4c1EwRkJRMFlzUTBGQlNTeERRVUZETEVOQlFVTXNTVUZEZEVWR0xFdEJRMUJGTEVWQlFVc3NVMEZCVnl4TlFVZHdRaXhOUVVGTmEwSXNSMEZCV1N4TFFVRk5iRUlzUlVGQlRVVXNSVUZCVlN4UFFVRlBMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU1zUTBGRGFrVXNRMEZMUVdVc1IwRkJWeXhOUVVGUmNrSXNSMEZGYmtKeFFpeEhRVUZYTEV0QlFVOXdRaXhIUVVWc1FtOUNMRWRCUVZjc1QwRkJVMjVDTEVkQlEzQkNMR1ZCUVdWdlFpeEhRVUZaV2l4RlFVRkxUaXhGUVVGTlF5eEZRVUZUVFN4RlFVRk5MRU5CUTJwRUxFbEJRVTFETEVWQlFVOHNUVUZCVFVNc1IwRkJXVWdzUlVGQlMwNHNSVUZCVFVNc1JVRkJVMDBzUTBGQlNTeEZRVU4yUkN4SFFVRkpSeXhGUVVGUFJpeERRVUZKTEVkQlFVdEhMRVZCUVU5SUxFTkJRVWtzUlVGRE0wSXNUMEZCUVVrc1IwRkJXVTRzUlVGQlMwTXNSVUZCVFVNc1EwRkJTU3hGUVVOd1FsVXNSMEZCV1Zvc1JVRkJTMFVzUlVGQlRWQXNSVUZCVTAwc1EwRkJTU3hGUVVVdlF5eEhRVUZKTEU5QlFVOURMRWRCUVZNc1ZVRkRhRUlzUjBGQlNVc3NSVUZCWVdJc1EwRkJTU3hGUVVGSExFTkJRM0JDVHl4RlFVRlBMRTlCUVU4c1QwRkJUMEVzUlVGQlN5eFBRVUZQVUN4RFFVRkpMRU5CUVVNc1JVRkRkRU1zVVVGQlV5eEZRVUZKTEVWQlFVY3NSVUZCU1VFc1JVRkJTeXhOUVVGTkxFOUJRVkVzUlVGQlJTeEZRVUZITEVOQlEzaERMRWxCUVUxakxFVkJRVXNzVFVGQlRVa3NSMEZCV1N4RlFVRkhiRUlzUlVGQlN5eE5RVUZOTEVOQlFVTXNSVUZCUjBNc1JVRkJVMDBzUTBGQlNTeEZRVU0xUkN4SFFVRkpMRTlCUVU5UExFZEJRVThzVTBGRFpDeEZRVUZKUVN4RlFVRkxMRTFCUTFJc1NVRkJTVUVzU1VGQlQyeENMRWRCUTFvc1QwRkJUMEVzUjBGRFJtdENMRWxCUVU5b1FpeExRVU5hUlN4RlFVRkxMRTFCUVUwc1QwRkJUeXhGUVVGSExFTkJRVU1zUlVGRGRFSXNSMEZCU3l4SFFVVmlMRU5CUTBvc1UwRkRVMWNzUlVGQlQxZ3NRMEZCU1N4RlFVRkhMRU5CUTI1Q1R5eEZRVUZQTEU5QlFVOHNUMEZCVDBFc1JVRkJTeXhQUVVGUFVDeERRVUZKTEVOQlFVTXNSVUZEZEVNc1NVRkJUV1VzUlVGQlN5eE5RVUZOUnl4SFFVRlpMRTFCUVU5c1FpeEZRVUZMTEVsQlFVdERMRVZCUVZOTkxFTkJRVWtzUlVGRE0wUXNSMEZCU1ZFc1NVRkJUMjVDTEVkQlExQXNUMEZCVDBFc1IwRkRSbTFDTEVsQlFVOXFRaXhMUVVOYVJTeEZRVUZMTEVsQlFVMHNUVUZEWml4SlFVRk5aMElzUlVGQlN5eE5RVUZOUlN4SFFVRlpMRkZCUVZOc1FpeEZRVUZMTEUxQlFVOURMRVZCUVZOTkxFTkJRVWtzUlVGREwwUXNSMEZCU1ZNc1NVRkJUM0JDTEVkQlExQXNUMEZCVDBFc1IwRkRSbTlDTEVsQlFVOXNRaXhMUVVOYVJTeEZRVUZMTEUxQlFWRXNTMEZEY2tJc1JVRkZTaXhQUVVGUFVTeERRVU5ZTEVOQlEwRXNVMEZCVTB3c1IwRkJXVVlzUlVGQlV5eERRVU14UWl4UFFVRkpMRTlCUVU5QkxFZEJRVmtzVjBGRGJFSkJMRVZCUVZFc1dVRkJZMEVzUlVGQlVTeE5RVUZSUVN4RlFVRlJMRTlCUTNoRExFOUJRVThzVDBGQlR5eERRVU5xUWl4TlFVRlBRU3hGUVVGUkxFdEJRMllzU1VGQlMwRXNSVUZCVVN4TFFVTmlMRTlCUVZGQkxFVkJRVkVzUzBGRGFFSXNTVUZCUzBFc1JVRkJVU3hKUVVOcVFpeEZRVUZIUVN4RlFVRlJMRTlCUVZNc1EwRkRhRUlzU1VGQlMwRXNSVUZCVVN4TlFVTmlMRTlCUVZGQkxFVkJRVkVzVFVGRGFFSXNTVUZCUzBFc1JVRkJVU3hMUVVOcVFpeEZRVUZIUVN4RlFVRlJMRmxCUVdNc1EwRkRja0lzU1VGQlMwRXNSVUZCVVN4WFFVTmlMRWxCUVV0QkxFVkJRVkVzVlVGRGFrSXNSVUZCUjBFc1EwRkJUeXhGUVVWUVFTeERRVU5ZTEVOQlEwRXNVMEZCVTFFc1IwRkJXVWdzUlVGQlMwNHNSVUZCVFVNc1JVRkJVMDBzUlVGQlRTeERRWEpOTDBNc1NVRkJRVmtzUlVGQlFVTXNSVUZCUVVNc1JVRkJRVU1zUlVGQlFVTXNSVUZ6VFVrc1IwRkJTU3hQUVVGUGRFSXNSMEZCV1N4WFFVTnVRaXhQUVVGUFFTeEZRVUZSU3l4RlFVRkxUaXhGUVVGTlR5eERRVUZKTEVWQlEyeERMRWRCUVVscFFpeEhRVUZOZUVJc1EwRkJTU3hGUVVOV0xFOUJRVTl0UWl4RlFVRkJiRUlzUlVGQlVTeE5RVUZTTEZsQlFVRnJRaXhGUVVGQkxFdEJRVUZzUWl4RlFVRmpTeXhGUVVGTFRpeEZRVUZOVHl4SFFVTndReXhIUVVGSmEwSXNSMEZCVFhwQ0xFTkJRVWtzUlVGRFZpeFBRVUZQYjBJc1JVRkJRVzVDTEVWQlFWRXNUVUZCVWl4WlFVRkJiVUlzUlVGQlFTeExRVUZCYmtJc1JVRkJZMHNzUlVGQlMwNHNSVUZCVFU4c1IwRkRjRU1zUjBGQlNVa3NSVUZCVDFnc1EwRkJTU3hGUVVOWUxFOUJRVTl4UWl4RlFVRkJjRUlzUlVGQlVTeFBRVUZTTEZsQlFVRnZRaXhGUVVGQkxFdEJRVUZ3UWl4RlFVRmxTeXhGUVVGTFRpeEZRVUZOVHl4SFFVTnlReXhIUVVGSmJVSXNSVUZCVXpGQ0xFTkJRVWtzUlVGRFlpeFBRVUZQYzBJc1JVRkJRWEpDTEVWQlFWRXNVMEZCVWl4WlFVRkJjVUlzUlVGQlFTeExRVUZCY2tJc1JVRkJhVUpMTEVWQlFVdE9MRVZCUVUxUExFZEJRM1pETEVkQlFVbHZRaXhIUVVGUk0wSXNRMEZCU1N4RlFVTmFMRTlCUVU5MVFpeEZRVUZCZEVJc1JVRkJVU3hSUVVGU0xGbEJRVUZ6UWl4RlFVRkJMRXRCUVVGMFFpeEZRVUZuUWtzc1JVRkJTMDRzUlVGQlRVOHNSVUZGTVVNc1EwRkRRU3hUUVVGVFN5eEhRVUZaVGl4RlFVRkxReXhGUVVGTlVDeEZRVUZOTEVOQlEyeERMRWxCUVUwMFFpeEZRVUZUY2tJc1JVRkJTMEVzUlVGQlN5eFBRVUZUTEVOQlFVTXNSVUZEYmtNc1IwRkJTVTBzUlVGQllXVXNRMEZCVFN4RlFVTnVRa0VzUlVGQlR5eE5RVUZOZEVJc1EwRkJSeXhGUVVGSlRpeFZRVVZtVnl4RlFVRlBhVUlzUTBGQlRTeEZRVU5rZEVJc1NVRkJVU3hOUVVOU2MwSXNSVUZCVHl4SlFVRk5OVUlzUlVGRllqUkNMRVZCUVU4c1RVRkJVVFZDTEZWQlJXUkpMRWRCUVZkM1FpeERRVUZOTEVWQlEzUkNRU3hGUVVGUExGTkJRVmMxUWl4TlFVVnFRaXhEUVVORUxFbEJRVTAyUWl4RlFVRkxSaXhIUVVGUlF5eERRVUZOTEVWQlFVa3NVVUZCVlN4VFFVTjJReXhOUVVGTkxFbEJRVWtzVFVGQlRTdzBRa0ZCTkVKRExFTkJRVVVzVTBGQlV5eERRVU16UkN4RFFVTktMRU5EYms5QkxFbEJRVTFETEVkQlFXTXNRMEZEYUVJc1NVRkJTeXhOUVVOTUxFbEJRVXNzVFVGRFRDeEpRVUZMTEUxQlEwd3NTVUZCU3l4TlFVTk1MRWxCUVVzc1RVRkRUQ3hKUVVGTExFdEJRMVFzUlVGRFRVTXNSMEZCYVVKRExFZEJRVTlCTEVWQlFVY3NVVUZCVVN4aFFVRmpReXhIUVVGTlNDeEhRVUZaUnl4RFFVRkZMRU5CUVVNc1JVRkRkRVZETEVkQlFVNHNUVUZCVFVNc1EwRkJWeXhEUVVOaUxGbEJRVmxETEVWQlFVMURMRVZCUVUwc1EwRkxjRUlzUzBGQlN5eFRRVUZYTEV0QlJXaENMRXRCUVVzc1QwRkJVeXhIUVVOa0xFdEJRVXNzUzBGQlR5eFBRVUZQTEU5QlFVOHNRMEZCUXl4RlFVRkhSaXhGUVVGWExGbEJRV0ZETEVOQlFVa3NSVUZETVVRc1MwRkJTeXhMUVVGUExFOUJRVThzVDBGQlR5eERRVUZETEVWQlFVZEVMRVZCUVZjc1dVRkJZVVVzUTBGQlNTeERRVU01UkN4RFFVTkJMRTlCUVZFc1EwRkRTaXhKUVVGTlF5eEZRVUZQTEVsQlFVbElMRVZCUVZjc1MwRkJTeXhMUVVGTkxFdEJRVXNzU1VGQlNTeEZRVU5vUkN4UFFVRkJSeXhGUVVGTExGTkJRVmNzUzBGQlN5eFRRVU5rUVN4RFFVTllMRU5CUzBFc1dVRkJZU3hEUVVOVUxFbEJRVTFETEVWQlFVMHNTVUZCU1Vvc1JVRkJWeXhMUVVGTExFdEJRVTBzUzBGQlN5eEpRVUZKTEVWQlF5OURMRTlCUVZFc1MwRkJTeXhMUVVGTExGRkJRVk1zUTBGRGRrSXNTVUZCU3l4TlFVTkVMRXRCUVVzc1pVRkJhVUlzUjBGRGRFSXNUVUZEU2l4SlFVRkxMRTFCUTBRc1MwRkJTeXhsUVVGcFFpeEhRVU4wUWl4TFFVRkxMRXRCUVU4c1EwRkRVaXhUUVVGVlFTeEZRVUZYTEZsQlFWa3NVMEZEYWtNc1VVRkJVeXhMUVVOaUxFVkJRMEVzUzBGQlN5eExRVUZQTEU5QlFVOHNUMEZCVHl4RFFVRkRMRVZCUVVkQkxFVkJRVmNzVjBGQlZ5eEZRVU53UkN4TFFVTlNMRU5CUTBFc1QwRkJUMGtzUTBGRFdDeERRVXRCTEVsQlFVbERMRVZCUVUxRExFVkJRVk1zUTBGRFdDeExRVUZMTEdsQ1FVTk1MRXRCUVVzc1MwRkJUeXhEUVVGRkxGTkJRVlZPTEVWQlFWY3NXVUZCV1N4VFFVRlZMRkZCUVZNc1MwRkJUU3hGUVVONFJTeExRVUZMTEV0QlFVOHNUMEZCVHl4UFFVRlBMRU5CUVVNc1JVRkJSMEVzUlVGQlZ5eFhRVUZYTEVWQlEzQkVMRXRCUVVzc1pVRkJhVUlzU1VGRk1VSXNTVUZCVFU4c1JVRkJVVVlzUlVGQlN5eExRVUZMTEVWQlFVVXNUVUZCVFN4UlFVRlJMRVZCUTJ4RFJ5eEZRVUZQUkN4RlFVRk5MRTFCUVUwc1JVRkRla0lzVDBGQlVVTXNSVUZCVFN4RFFVTldMRWxCUVVzc1QwRkJVU3hEUVVOVUxFZEJRVWxFTEVWQlFVMHNVMEZCVnl4SlFVTnFRa1FzUlVGQlVTeEZRVUZITEdsRVFVRnBSQ3hGUVVONFJFTXNSVUZCVFN4UFFVRlRMRWRCUTJZc1RVRkJUeXhIUVVWbUxFZEJRVTBzUTBGQlEwVXNSVUZCVVVNc1EwRkJUU3hGUVVGSlNDeEZRVU42UWl4WlFVRkxMRXRCUVV0RkxFTkJRVTBzUlVGQlNVTXNSVUZEWWl4RlFVTllMRU5CUTBFc1NVRkJTeXhSUVVGVExFTkJSVllzUjBGRVFTeExRVUZMTEV0QlFVc3NVMEZCVnl4SFFVTnFRa2dzUlVGQlRTeFRRVUZYTEVWQlEycENMRTlCUVVGRUxFVkJRVkVzUlVGQlJ5eHBSRUZCYVVRc1JVRkRja1FzUjBGRldDeEhRVUZOTEVOQlFVTkxMRU5CUVU4c1JVRkJTVW9zUlVGRGJFSXNSMEZCU1Vrc1NVRkJXU3hQUVVGVFFTeEpRVUZaTEUxQlEycERMRmxCUVVzc1MwRkJTeXhSUVVGVlFTeEZRVU5pTEVkQlJVNHNRMEZEUkN4SlFVRk5ReXhGUVVGVkxHRkJRV0VzUzBGQlMwUXNRMEZCVHl4RlFVTjZReXhQUVVGQlRDeEZRVUZSTEVWQlFVY3NORUpCUVRSQ1N5eERRVUZQTEVkQlFVbERMRU5CUVU4c1JVRkRiRVFzUlVGRFdDeERRVU5LTEVOQlEwRXNVVUZEU1N4UFFVRkJUaXhGUVVGUkxFVkJRVWNzY1VKQlFYRkNSU3hEUVVGSkxFZEJRVWtzUlVGQlNTeEZRVU55UXl4RlFVTm1MRU5CUTBvc1EwRlBRU3hSUVVGUlN5eEZRVUZSVUN4RlFVRlRMRU5CUTNKQ0xFZEJRVWxQTEVsQlFWY3NTVUZEV0N4TlFVRlBMRWxCUTFnc1IwRkJTVUVzUlVGQlR5eERRVUZETEVsQlFVMHNTVUZEWkN4UFFVRkJVQ3hGUVVGUkxHOUNRVUZ2UWs4c1EwRkJUU3hGUVVGRkxFVkJRemRDTEV0QlJWZ3NSMEZCU1VFc1JVRkJUeXhEUVVGRExFbEJRVTBzU1VGQlN5eERRVU51UWl4SlFVRk5ReXhGUVVGWFJDeEZRVUZQTEUxQlFVMHNSVUZCUnl4RlFVRkZMRVZCUTI1RExFOUJRVWxETEVsQlFXRXNTMEZCVDBFc1NVRkJZU3hOUVVOcVExSXNSVUZCVVN4eFEwRkJjVU5QTEVOQlFVMHNZMEZCWXl4RlFVTXhSQ3hQUVVWUVFTeEZRVUZQUVN4RlFVRlBMRTlCUVZNc1EwRkJReXhKUVVGTkxFdEJRemxDVUN4RlFVRlJMR2xEUVVGcFF5eEZRVU4wUTFFc1JVRkRXQ3hEUVVOQkxFZEJRVTBzUTBGQlF5eERRVUZGVEN4RlFVRlJUU3hEUVVGTkxFVkJRVWxHTEVWQlFVOHNUVUZCVFN4WFFVRkRMR2xDUVVGbExFZEJRVU1zUjBGRGNFUkZMRWRCUTBSVUxFVkJRVkVzVDBGQlQwOHNRMEZCVFN4dlFrRkJiMElzUlVGRE4wTXNTVUZCVFVnc1JVRkJVeXhMUVVGTExFdEJRVXRFTEVOQlFVMHNSVUZETDBJc1IwRkJTVU1zUlVGRFFTeEhRVUZKTEVOQlEwRXNUMEZCVDBFc1JVRkJVeXh0UWtGQmJVSkxMRU5CUVUwc1EwRkROME1zVDBGRFQwTXNSVUZCVHl4RFFVTldMRTlCUVVGV0xFVkJRVkVzVDBGQlQxVXNRMEZCU3l4RFFVRkRMRVZCUTJRc1NVRkRXQ3hEUVVWS0xFOUJRVWxRTEVsQlFWY3NTVUZEU2trc1IwRkRXRkFzUlVGQlVTd3dRa0ZCTUVKUExFTkJRVTBzUlVGQlJTeEZRVU51UXl4TFFVTllMRU5CUzBFc1ZVRkJWVWtzUlVGQlN5eERRVU5ZTEU5QlFWY3NRMEZCUTFJc1JVRkJVVU1zUTBGQlRTeEpRVUZMTEU5QlFVOHNVVUZCVVN4TFFVRkxMRWxCUVVrc1JVRkRia1FzUjBGQlNVOHNSVUZCU1N4WFFVRlhVQ3hEUVVGTkxFVkJRM0pDTEU5QlFVOUVMRVZCUVZOaUxFZEJRV054UWl4RlFVRkpMRlZCUVZWUUxFVkJRVThzVFVGQlRTeERRVUZETEVWQlJXeEZMRTlCUVU5UExFVkJRVWtzUTBGQlF5eEpRVUZOTEVsQlFVMUJMRVZCUVUwc1MwRkJTMEVzUTBGQlJ5eEhRVU14UXl4RFFVTkJMRk5CUVZORExFVkJRVXNzUTBGRFZpeEpRVUZOUXl4RlFVRlJMRXRCUVVzc1MwRkJTeXhUUVVOc1FpeERRVUZETEZOQlFWTXNTMEZCU3l4TFFVRkxMRk5CUVZjc1MwRkJTeXhGUVVGRkxFVkJRM1JETEVOQlFVTXNSVUZEUkVNc1JVRkJZU3hQUVVGUExGRkJRVkVzUzBGQlN5eEpRVUZKTEVWQlEzWkRReXhGUVVOS0xFZEJRVWxJTEVkQlFVOUZMRVZCUVZjc1QwRkJVeXhIUVVGTFJTeEZRVUZQU2l4RlFVRkpMRkZCUVZFc1JVRkJSeXhEUVVOMFJDeEpRVUZOYUVJc1JVRkJUeXhEUVVGRExFVkJRMlJ4UWl4SFFVRk5UQ3hGUVVGSkxGTkJRVlVzUTBGQlEwMHNSVUZCVFVNc1NVRkJVeXhEUVVNMVFrZ3NSVUZCVDBjc1EwRkJTU3hIUVVGTFFTeEZRVUZMTEUxQlEzSkNka0lzUlVGQlMzVkNMRVZCUVVzc1IwRkJSeXhGUVVGSkxFZEJRM3BDTEVOQlFVTXNSVUZEUkVvc1JVRkJWeXhQUVVGUExFdEJRVXR1UWl4RFFVRkpMRU5CUXk5Q0xFMUJSVWx0UWl4RlFVRlhMRU5CUVVNc1JVRkRhRUlzVDBGQlZ5eERRVUZEV2l4RlFVRlJReXhEUVVGTkxFbEJRVXRWTEVWQlEzWkNXQ3hKUVVGWExFMUJRVkZETEVsQlFWY3NkVUpCUlRsQ0xFTkJRVU5STEVkQlFVOUhMRVZCUVZNc1MwRkJTM2hDTEVkQlFVMUJMRVZCUVVjc1YwRkJWMkVzUTBGQlRTeERRVUZETEVsQlEycEVVeXhGUVVGTkxFdEJRVXNzVVVGQlVWWXNRMEZCVFN4SlFVRkpReXhEUVVGTkxFVkJRVVVzUlVGRk4wTXNUMEZCVDFNc1JVRkJUU3hMUVVGTE8wRkJRVUVzUTBGQlNTeERRVU14UWl4RFFVTktMRVZCUTBGd1FpeEhRVUZYTEZsQlFXTXNRMEZCUlN4VFFVRlZMRWRCUVU4c1VVRkJVeXhMUVVGTkxFVkJRek5FUVN4SFFVRlhMRmxCUVdNc1EwRkJSU3hMUVVGTkxHOUNRVUZ4UWl4RlEzSkxkRVFzVTBGQlV6SkNMRWRCUVdORExFVkJRVkVzUTBGRE0wSXNSMEZCU1N4elFrRkJjMElzUzBGQlMwRXNRMEZCVFN4RlFVRkhMRU5CUlhCRExFbEJRVTFETEVWQlFVMHNOa1JCUkVRc1MwRkJTeXhWUVVGVlJDeERRVUZOTEVOQlF6SkRMRWRCUXpORkxFMUJRVTBzU1VGQlNTeE5RVUZOUXl4RFFVRkhMRU5CUTNaQ0xFTkJRMEVzVFVGQlR5eEZRVU5ZTEVOQlEwRXNVMEZCVTBNc1IwRkJXVU1zUlVGQlRTeERRVU4yUWl4SlFVRk5ReXhGUVVGVkxFbEJRVWtzU1VGRGNFSXNUMEZCUVVNc1IwRkJUVVlzUlVGQlRTeERRVU5TTEUxQlFVMUhMRVZCUVUxRExFVkJRVTBzUTBGRFZrRXNSVUZCU3l4UlFVTk1TQ3hGUVVGUkxFbEJRVWxITEVWQlFVc3NUVUZCVFN4RFFVTXZRaXhEUVVOS0xFTkJRVU1zUlVGRFRVZ3NRMEZEV0N4RFFVVkJMRk5CUVZOSkxFZEJRV05ETEVWQlFWRkRMRVZCUVZNc1EwRkRjRU1zVVVGQlUwTXNSVUZCU1N4SFFVRlRMRVZCUVVWQkxFVkJRVWNzUTBGRGRrSXNTVUZCVFVNc1JVRkJUeXhIUVVGSFNDeERRVUZOTEVkQlFVZEZMRU5CUVVNc1IwRkRNVUlzUjBGQlNTeERRVUZEUkN4RlFVRlJMRWxCUVVsRkxFTkJRVWtzUlVGRGFrSXNUMEZCVDBFc1EwRkRaaXhEUVVOS0xFTkJRMEVzVTBGQlUwTXNSMEZCYTBKRExFVkJRVXRNTEVWQlFWRXNRMEZEY0VNc1NVRkJUVTBzUlVGQlpTeERRVUZETEVWQlEyaENReXhGUVVGblFpeEpRVUZKTEVsQlEzUkNReXhGUVVGakxFdEJRMnhDTEUxQlFVOHNRMEZEU0N4VFFVRlhReXhIUVVGWExFTkJRMnhDU0N4RlFVRmhMRXRCUVV0SExFTkJRVTBzUlVGRGJrSkVMRWxCUTBSQkxFVkJRV05tTEVkQlFWbFpMRU5CUVVjc1IwRkRha01zU1VGQlRXUXNSVUZCVTFFc1IwRkJZME1zUlVGQlVWRXNRMEZCVnl4RlFVTm9SQ3hQUVVGQlFTeEZRVUZaTEVsQlFVbHFRaXhEUVVGTkxFVkJRMlpCTEVOQlExZ3NSVUZOUVN4WFFVRlpMRWxCUVUwc1EwRkRaQ3hSUVVGWGEwSXNTMEZCVlVnc1JVRkJZeXhEUVVNdlFpeEpRVUZOU1N4RlFVRk5TQ3hGUVVGakxFbEJRVWxGTEVOQlFVMHNSVUZEY0VNc1IwRkJTU3hQUVVGUFF5eEhRVUZSTEZWQlEyWkJMRVZCUVVrc1UwRkRTRU1zUlVGQlUwUXNSVUZCU1N4SlFVRkpMRWRCUVV0RkxFVkJRV0ZHTEVWQlFVa3NTVUZCU1N4SFFVTTFRMEVzUlVGQlNTeExRVUZMTEU5QlFWTkJMRVZCUVVrc1YwRkZja0lzUTBGRFJDeEpRVUZOUnl4RlFVRlJMRWxCUVVrc1RVRkJUU3cwUkVGQk5FUXNSVUZEY0VZc1RVRkJRVUVzUlVGQlRTeFBRVUZUU2l4RlFVTlVTU3hEUVVOV0xFTkJRMG9zUTBGRFNpeEZRVU5CTEdOQlFVRk9MRU5CUTBvc1EwRkRTaXhEUXpsRVFTeFRRVUZUVHl4SFFVRmhReXhGUVVGVFF5eEZRVUZMUXl4RlFVRkxReXhGUVVGTExFTkJRekZETEVkQlFVbEJMRWRCUVU4c1QwRkJUMEVzUjBGQlVTeFRRVU4wUWl4SFFVRkpMRTFCUVUwc1VVRkJVVUVzUTBGQlJ5eEZRVU5xUWl4UlFVRlRReXhGUVVGSkxFVkJRVWRETEVWQlFVMUdMRVZCUVVrc1QwRkJVVU1zUlVGQlNVTXNSVUZCU3l4RlFVRkZSQ3hGUVVGSExFTkJRelZETEVsQlFVMUZMRVZCUVV0SUxFVkJRVWxETEVOQlFVTXNSVUZEVmtjc1JVRkJTMUlzUjBGQllVTXNSVUZCVTBjc1JVRkJTeXhQUVVGUFF5eERRVUZETEVWQlFVZEZMRU5CUVVVc1JVRkZMME5ETEVsQlFVOHNUMEZEVUN4UFFVRlBTaXhGUVVGSlF5eERRVUZETEVWQlExQkhMRWxCUVU5RUxFbEJRMXBJTEVWQlFVbERMRU5CUVVNc1JVRkJTVWNzUlVGRGFrSXNVMEZGUzBvc1lVRkJaU3hKUVVOd1FpeFJRVUZYU3l4TFFVRkxMRTFCUVUwc1MwRkJTMHdzUlVGQlNTeExRVUZMTEVOQlFVTXNSVUZCUnl4RFFVTndReXhKUVVGTlJ5eEZRVUZMU0N4RlFVRkpMRWxCUVVsTExFTkJRVU1zUlVGRFpFUXNSVUZCUzFJc1IwRkJZVU1zUlVGQlUwY3NSVUZCUzBzc1JVRkJSMFlzUTBGQlJTeEZRVU4yUTBNc1NVRkJUeXhQUVVOUVNpeEZRVUZKTEU5QlFVOUxMRU5CUVVNc1JVRkRVRVFzU1VGQlQwUXNSMEZEV2tnc1JVRkJTU3hKUVVGSlN5eEZRVUZIUkN4RFFVRkZMRU5CUTNKQ0xGTkJSVXRLTEdGQlFXVXNTVUZEY0VJc1VVRkJWMGNzUzBGQlRTeE5RVUZOTEV0QlFVdElMRU5CUVVjc1JVRkJSeXhEUVVNNVFpeEpRVUZOU1N4RlFVRkxVaXhIUVVGaFF5eEZRVUZUUnl4RlFVRkxSeXhGUVVGSlFTeERRVUZGTEVWQlEzaERReXhKUVVGUExFOUJRMUJLTEVWQlFVa3NUMEZCVDBjc1EwRkJSU3hGUVVOU1F5eEpRVUZQUkN4SlFVTmFTQ3hGUVVGSkxFOUJRVTlITEVOQlFVVXNSVUZEWWtnc1JVRkJTU3hKUVVGSlNTeERRVUZGTEVWQlJXeENMRXRCUjBFc1VVRkJWeXhEUVVGRFF5eEZRVUZIUml4RFFVRkZMRWxCUVVzc1QwRkJUeXhSUVVGUlNDeERRVUZITEVWQlFVY3NRMEZEZGtNc1NVRkJUVWtzUlVGQlMxSXNSMEZCWVVNc1JVRkJVMGNzUlVGQlMwc3NSVUZCUjBZc1EwRkJSU3hGUVVOMlEwTXNTVUZCVHl4UFFVTlFMRTlCUVU5S0xFVkJRVWxMTEVOQlFVTXNSVUZEVUVRc1NVRkJUMFFzU1VGRFdrZ3NSVUZCU1Vzc1EwRkJReXhGUVVGSlJDeEZRVU5xUWl4RFFVZFNMRTlCUVU5UUxFVkJRVkVzUzBGQlMwTXNSVUZCUzBNc1JVRkJTME1zUTBGQlJ5eERRVU55UXl4RFEzaERRU3hUUVVGVFRTeEhRVUZMUXl4RlFVRlBReXhGUVVGTFF5eEZRVUZMTEVOQlJUTkNMRWRCUVVrc1RVRkJUU3hSUVVGUlJpeERRVUZMTEVWQlEyNUNMRTlCUVU5QkxFVkJRVTBzU1VGQlNTeERRVUZEUnl4RlFVRkhReXhKUVVGTlRDeEhRVUZMU1N4RlFVRkhMRTlCUVU5RExFTkJRVU1zUlVGQlIwWXNRMEZCUnl4RFFVRkRMRVZCUTNSRUxFZEJRVWxHTEVkQlFWTXNUMEZCVDBFc1JVRkJUU3hSUVVGWExGZEJRVmtzUTBGRk4wTXNSMEZCU1N4RFFVRkRSU3hIUVVGUExFTkJRVU5ITEVkQlFWVk1MRU5CUVVzc1JVRkRlRUlzVDBGQlQwRXNSVUZCVFN4UFFVRlBReXhGUVVGTFF5eERRVUZITEVWQlEyaERMRWxCUVUxSkxFVkJRVThzUTBGQlJTeFhRVUZaTEVWQlFVY3NUVUZCVHl4RlFVRkhMRWxCUVVzc1RVRkJWU3hGUVVOMlJFb3NSVUZCU1N4UlFVRlJMRWxCUVVsR0xFVkJRVTlOTEVOQlFVa3NSVUZETTBKS0xFVkJRVWtzVTBGQlYwc3NSMEZCVHl4RFFVTnNRa1FzUlVGQlN5eEpRVUZOUXl4RlFVTllMRTlCUVU5TUxFVkJRVWtzVVVGRFppeEZRVU5CTEVsQlFVMUxMRVZCUVUxUUxFVkJRVTBzVDBGQlQwTXNSVUZCUzBNc1EwRkJSeXhGUVVOcVF5eFBRVUZKUVN4RlFVRkpMRlZCUTBwQkxFVkJRVWtzVTBGQlUwc3NRMEZCUnl4RlFVTmlRU3hEUVVOWUxFTkJRMEVzVDBGQlNTeFBRVUZQVUN4SFFVRlZMRlZCUVZrc1JVRkJRMFVzUjBGQlFTeE5RVUZCUVN4RlFVRkxMRTFCUXpWQ0xFOUJRVTlHTEVOQlFVc3NSVUZEYUVKQkxFTkJRMWdzUTBNNVFrRXNTVUZCVFZFc1IwRkJUaXhMUVVGbExFTkJRMWdzV1VGQldVTXNSVUZCVFN4RFFVTmtMRTlCUVU4c1pVRkJaU3hMUVVGTlF5eEhRVUZYTEVOQlFVVXNUVUZCVDBRc1EwRkJTeXhEUVVGRExFTkJRekZFTEVOQlJVRXNUMEZCVVN4RFFVTktMRWxCUVUxRkxFVkJRVThzVDBGQlR5eFBRVUZQTEU5QlFVOHNaVUZCWlN4SlFVRkpMRVZCUVVjc1QwRkJUeXd3UWtGQk1FSXNTVUZCU1N4RFFVRkRMRVZCUXpsR0xFOUJRVWtzUzBGQlN5eFJRVU5NUVN4RlFVRkxMRTFCUVZFc1MwRkJTeXhOUVVGTkxFMUJRVTBzUjBGRE0wSkJMRU5CUTFnc1EwRkZRU3hMUVVGTFF5eEZRVUZMTEVOQlFVVXNVMEZCUVVNc1JVRkJWU3hqUVVGQlF5eEZRVUZsTEZOQlFVRkRMRVZCUVZVc1VVRkJRVU1zUTBGQlVTeEZRVUZKTEVOQlFVTXNSVUZCUnl4RFFVTXpSQ3hIUVVGSkxFTkJRVU5ETEVkQlFWZE1MRU5CUVVjc1JVRkRaaXhOUVVGTkxFbEJRVWtzVlVGQlZTeHBRMEZCYVVNc1JVRkRla1FzU1VGQlRVMHNSVUZCVFN4RFFVTlNMRkZCUVZNc1NVRkJTU3hKUVVOaUxFbEJRVUZPTEVWQlEwRXNTMEZCVFN4SFFVTk9MRk5CUVZWRExFbEJRV0VzUjBGRGRrSXNZVUZCWXl4SFFVTmtMR05CUVdVc1QwRkJUME1zUjBGQmEwSXNVMEZCVjBFc1JVRkJaMElzUjBGRGRrVXNSVUZEVFVzc1JVRkJUVU1zUjBGQlN5eExRVUZOTEVkQlFVbEdMRU5CUVVjc1JVRkRPVUlzUjBGQlNTeFBRVUZQU0N4SFFVRmhMRmRCUTNCQ0xFOUJRVmNzUTBGQlJTeE5RVUZCVFN4RlFVRlBMRWxCUVVGR0xFTkJRVWtzU1VGQlMwUXNSVUZCU1N4UlFVRlJMRTlCUVU4c1JVRkROVU5JTEVWQlFWTkpMRVZCUVV0RkxFTkJRVXNzUlVGRE0wSXNUMEZCVHl4UFFVRlBUQ3hIUVVGWkxGZEJRM0JDVFN4SFFVRmhUaXhGUVVGVExFTkJRVVVzUjBGQlNVY3NRMEZCU1N4RlFVRkhMRWRCUVVsQkxFTkJRVWNzUlVGRE1VTkJMRU5CUTFZc1EwRkRTaXhGUXpkQ1FTeEpRVUZOU1N4SFFVRk9MR05CUVc5Q1F5eEZRVUZUTEVOQlEzcENMRmxCUVZsRExFVkJRVkVzUTBGRGFFSXNUVUZCVFVNc1JVRkJTeXhGUVVOWUxFdEJRVXNzVDBGQlUwUXNSVUZEWkN4UFFVRlBMR1ZCUVdVc1MwRkJUU3hOUVVGUExFTkJReTlDTEV0QlFVMHNRMEZEUml4TlFVRk5MRWxCUVVrc1RVRkJUU3c0UWtGQk9FSXNRMEZEYkVRc1EwRkRTaXhEUVVGRExFTkJRMHdzUTBGTFFTeFJRVUZSUlN4RlFVRkxMRU5CUTFRc1NVRkJTVU1zUlVGRFNpeFBRVUZCUXl4SFFVRk5SaXhGUVVGTExFTkJRMUFzUzBGQlRTeERRVUZEUnl4RlFVRk5ReXhKUVVGVExFTkJRMnhDTEVkQlFVbEJMRWxCUVZNc1MwRkRWQ3hQUVVGUFJpeEhRVUZOTEUxQlEySkZMRVZCUVVzc1UwRkJWeXhMUVVGTExGTkJRM0pDU0N4RlFVRlJSeXhGUVVOb1FpeERRVU5LTEVOQlFVTXNSVUZEVFVnc1EwRkRXQ3hEUVVOQkxFOUJRVTlKTEVWQlFVMURMRVZCUVVzc1EwRkRaQ3hIUVVGSkxFTkJRVU5CTEVWQlEwUXNUVUZCVHl4RFFVRkZMRTlCUVZFc1MwRkJTeXhOUVVGUExFVkJRMnBETEVkQlFVMHNRMEZCUlN4UlFVRkJReXhGUVVGVExFbEJRVUZRTEVWQlFVc3NZMEZCUVZFc1EwRkJZeXhGUVVGSlJpeEZRVU5zUTFJc1JVRkJVeXhMUVVGTExGRkJRVkZGTEVOQlFVY3NSVUZETDBJc1IwRkJTU3hEUVVGRFJpeEZRVUZSTEVOQlExUXNTVUZCVFZjc1JVRkJUU3dyUkVGQkswUXNTMEZCU3l4TlFVRk5MRWRCUTNSR0xFMUJRVTBzU1VGQlNTeGxRVUZsUVN4RFFVRkhMRU5CUTJoRExFTkJRMEVzU1VGQlNVTXNSVUZCVDBnc1JVRkJVU3hKUVVGSlZDeERRVUZOTEVWQlR6ZENMRWRCVGt0WkxFbEJSVVJETEVkQlFVdGlMRVZCUVZFc1MwRkJUVkVzUTBGQlJ5eEZRVU4wUWtrc1JVRkJUMGdzUlVGQlVTeEpRVUZKVkN4RFFVRk5MRWRCUjNwQ0xFTkJRVU5aTEVkQlFWRkJMRVZCUVVzc1RVRkJVU3hQUVVGWExFTkJRMnBETEVsQlFVMUVMRVZCUVUwc2VVUkJRMW9zVFVGQlRTeEpRVUZKTEdWQlFXVkJMRU5CUVVjc1EwRkRhRU1zUTBGRFFTeEhRVUZKUkN4SFFVRnBRaXhKUVVOcVFrVXNSVUZCU3l4UFFVRlRMRVZCUTFaQkxFVkJRVXNzWVVGQlpTeEpRVU53UWtFc1JVRkJTeXhYUVVGaFJTeEhRVUZqV2l4RlFVRkxSaXhGUVVGUlV5eERRVUZQTEVkQlEzQkVSeXhGUVVGTExFMUJRVkZCTEVWQlFVc3NWMEZCWVVZc1IwRkJaU3hEUVVNNVF5eEpRVUZOUXl4RlFVRk5MQ3RFUVVOYUxFMUJRVTBzU1VGQlNTeGxRVUZsUVN4RFFVRkhMRU5CUTJoRExFTkJSVW9zVDBGQlQwTXNSVUZCU3l4SFFVTm9RaXhEUVVOQkxGTkJRVk5LTEVWQlFVdFBMRVZCUVZsRExFVkJRV01zUTBGRGNFTXNTVUZCVFVNc1JVRkJUU3hKUVVGSkxFdEJRVXNzVFVGQlRTeEhRVU16UWl4SFFVRkpWQ3hGUVVGTExFTkJSVXdzUjBGRVFWVXNSMEZCWXl4TFFVRkxMRTFCUVUwc1JVRkRja0pXTEVWQlFVa3NVVUZCVVN4clFrRkJiMElzUTBGQlEwRXNSVUZCU1N4UlFVRlJMRWxCUVVrc1MwRkJTeXhOUVVGTkxFVkJRVWNzUTBGREwwUXNTVUZCVFVjc1JVRkJUU3dyUkVGQkswUXNTMEZCU3l4TlFVRk5MRWRCUTNSR0xFMUJRVTBzU1VGQlNTeE5RVUZOUVN4RFFVRkhMRU5CUTNaQ0xFTkJRMEVzUjBGQlNVZ3NSVUZCU1N4WlFVTktMRTFCUVU4c1IwRkJSMU1zUTBGQlJ5eEhRVU55UWl4RFFVTkJMRTlCUVU5QkxFTkJRMWdzUTBGRFNpeEZRVU5CTEZOQlFWTklMRWRCUVdOYUxFVkJRVXRKTEVWQlFVMUhMRVZCUVZNc1EwRkRka01zUjBGQlNWVXNSMEZCVVdJc1EwRkJTU3hGUVVGSExFTkJRMllzU1VGQlRVNHNSVUZCVTAwc1JVRkJTeXhSUVVGUlNpeERRVUZITEVWQlEzcENhMElzUlVGQlUxZ3NSMEZCVjFRc1IwRkJWVk1zUlVGQlVTeEpRVUZKVkN4RFFVRk5MRVZCUTNSRUxFOUJRVTl2UWl4RlFVRlRRU3hGUVVGUExFMUJRVkZCTEVWQlFVOHNWMEZCWVN4RFFVTjJSQ3hUUVVOVFF5eEZRVUZoWml4RFFVRkpMRVZCUVVjc1EwRkRla0lzU1VGQlNXZENMRVZCUVZFc1JVRkRXaXhSUVVGWFF5eExRVUZSYWtJc1JVRkJTeXhOUVVGUExFTkJRek5DTEVsQlFVMXJRaXhGUVVGSlZpeEhRVUZqV2l4RlFVRkxjVUlzUlVGQlRXUXNRMEZCVHl4RlFVTjBRMlVzUlVGQlNVWXNTVUZEU2tFc1JVRkJVVVVzUlVGRGFFSXNRMEZEUVN4UFFVRlBSaXhEUVVOWUxGTkJRMU5ITEVWQlFVOXVRaXhEUVVGSkxFVkJRVWNzUTBGRGJrSXNTVUZCVFc5Q0xFVkJRVXRhTEVkQlFXTmFMRVZCUVV0SkxFVkJRVXNzU1VGQlMwY3NRMEZCVHl4RlFVTjZRMnRDTEVWQlFVdGlMRWRCUVdOYUxFVkJRVXRKTEVWQlFVc3NUVUZCVDBjc1EwRkJUeXhGUVVOcVJDeFBRVUZQTEV0QlFVc3NTVUZCU1dsQ0xFVkJRVWxETEVOQlFVVXNRMEZETVVJc1EwRkRRU3hOUVVGUExFVkJRMWdzUTBNNVJrRXNTVUZCVFVNc1IwRkJhVUpETEVkQlFWVXNRMEZCUTBFc1IwRkJWU3hQUVVGUFFTeEhRVUZWTEZsQlFXTXNUMEZCVDBFc1IwRkJWU3hUUVVOMFJrTXNSVUZCVGl4alFVRnhRa01zUlVGQlV5eERRVU14UWl4WlFVRlpSaXhGUVVGUExFTkJRMllzVFVGQlRVY3NSVUZCVFN4RlFVTmFMRXRCUVVzc1RVRkJVVWdzUTBGRGFrSXNRMEZEUVN4UFFVRlBTU3hGUVVGTFF5eEZRVUZMTEVOQlEySXNUMEZCVDBFc1IwRkJRU3hOUVVGQlFTeEZRVUZMTEV0QlFVOHNTMEZCU3l4TlFVRlJReXhIUVVGTExFdEJRVXNzVFVGQlQwWXNSVUZCUzBNc1EwRkJSeXhEUVVNM1JDeERRVU5CTEZWQlFWY3NRMEZEVUN4UFFVRlBMRTlCUVU4c1MwRkJTeXhMUVVGTExFTkJRelZDTEVOQlEwb3NSVUZEUVVvc1JVRkJUeXhoUVVGbExHVkJRM1JDUVN4RlFVRlBMR05CUVdkQ0xHZENRVU4yUWtFc1JVRkJUeXhOUVVGUkxGRkJRMlpCTEVWQlFVOHNZVUZCWlN4bFFVTjBRa0VzUlVGQlR5eGhRVUZsTEdWRGFrSjBRaXhKUVVGTlRTeEhRVUZ0UWl4eFFrRkRla0lzVTBGQlUwTXNSMEZCWTBNc1JVRkJUME1zUlVGQlUwTXNSVUZCVFN4RFFVdzNReXhKUVVGQlF5eEZRVTFKTEVkQlFVbEdMRVZCUVZNc1EwRkRWQ3hKUVVGTlJ5eEZRVUZSUml4RlFVRkxMRTlCUVU5SExFZEJRVXRCTEVWQlFVVXNUVUZCVVVvc1EwRkJUeXhGUVVNeFEwc3NSMEZCVTBnc1JVRkJRVU1zUlVGQlRTeExRVUZMUXl4SFFVRkxMRU5CUVVOQkxFVkJRVVVzVFVGQlRTeEpRVUY2UWl4TFFVRkJSaXhGUVVFNFFrTXNSVUZCVFN4RFFVRkRMRVZCUTNCRUxFZEJRVWtzUTBGQlEwVXNSVUZEUkN4TlFVRk5MRWxCUVVrc1RVRkJUU3hQUVVGUFRDeERRVUZQTEZsQlFWa3NSVUZET1VNc1QwRkJUMHNzUTBGRFdDeERRVU5CTEU5QlFVOUtMRVZCUVVzc1MwRkJTMGNzUjBGQlJTeERRV0oyUWl4SlFVRkJSaXhGUVdFd1FpeFJRVUZCUVN4RlFVRkJSU3hGUVVGRkxGZEJRVVlzV1VGQlFVWXNSVUZCUVN4TFFVRkJSU3hGUVVGaFRDeExRVUZWTEVOQlFVTkxMRVZCUVVVc1QwRkJUU3hEUVVNeFJDeERRVU5CTEZOQlFWTkZMRWRCUVZkUUxFVkJRVTlETEVWQlFWTlBMRVZCUVVzc1EwRm1la01zU1VGQlFVd3NSVUZCUVUwc1JVRkJRVU1zUlVGclFra3NSMEZHU1VNc1IwRkJWMWdzUTBGQlN5eEpRVU5vUWtFc1JVRkJVVUVzUlVGQlRTeFZRVU5rV1N4RlFVRlBXaXhEUVVGTExFVkJRMW9zVDBGQlQwRXNSVUZEV0N4SFFVRkpZU3hGUVVGUFlpeERRVUZMTEVWQlFVY3NRMEZEWml4SlFVRk5ZeXhIUVVGTlRDeEhRVUZCVGl4RlFVRkJTeXhGUVVGSkxFOUJRVTlQTEVWQlFVY3NSMEZCUlN4aFFVRm9RaXhaUVVGQlRpeEZRVUZCTEV0QlFVRk9MRVZCUVRaQ1N5eEZRVUZKTEU5QlFWRXNTMEZCVFVFc1IwRkRNMFFzVDBGQlFVMHNSVUZCU1N4TlFVRk5MRXRCUVV0a0xFTkJRVXNzUlVGRFltTXNRMEZEV0N4RlFVTkpaQ3hoUVVGcFFpeFJRVU5xUWtFc1lVRkJhVUlzVVVGRGFrSkJMR0ZCUVdsQ0xGTkJRMmhDTEU5QlFVOHNVVUZCVnl4aFFVRmxRU3hoUVVGcFFpeFZRVWR1UkVFc1JVRkJVVUVzUlVGQlRTeFJRVUZSTEVkQlJURkNMRWRCUVUwc1EwRkJSU3h6UWtGQlFXZENMRVZCUVhWQ0xGTkJRVUZETEVWQlFWVXNVMEZCUVVNc1JVRkJWU3hQUVVGQlF5eEZRVUZSTEdOQlFVRkRMRU5CUVdNc1JVRkJTVm9zUlVGSGVrVmhMRVZCUTBvc1IwRkJTVXdzUjBGQmVVSm9RaXhIUVVGVExFOUJRVTlCTEVkQlFWVXNVMEZCVlN4RFFVVTNSQ3hIUVVSQmNVSXNSVUZCVFVRc1JVRkJZeXhKUVVGSmNFSXNRMEZCU3l4RlFVTjZRbkZDTEVWQlEwRXNUMEZCUzBFc1JVRkJTU3hUUVVOTVFTeEZRVUZKTEU5QlFWTktMRVZCUVZOcVFpeERRVUZMTEVkQlEzaENMRWxCUVVselFpeEhRVUZOUkN4RlFVRkpMRTFCUVUwc1JVRkhNMEpCTEVWQlFVMHNRMEZCUlN4UFFVRlJMRXRCUVUwc1MwRkJUU3hKUVVGTExFVkJRMnBEUkN4RlFVRmpMRWxCUVVsd1FpeEZRVUZQY1VJc1EwRkJSeXhEUVVWd1F5eERRVU5KY0VJc1IwRkJRU3hOUVVGQlFTeEZRVUZUTEZkQlFWY3NVVUZEY0VKQkxFVkJRVlZJTEVkQlFXMUNSeXhGUVVGUkxFMUJRVTBzUTBGQlF5eEhRVU5vUkN4SlFVRkpTeXhGUVVGVFVDeEhRVUZqUXl4RlFVRlBReXhGUVVGVGEwSXNSVUZCVHl4SlFVRkpMRVZCUTNSRUxFZEJRVWtzUTBGQlEySXNSVUZCVVN4RFFVdFVMRWRCU2tsT0xFZEJRVk1zVDBGQlQwRXNSVUZCVFN4UlFVRlhMR0ZCUldwRFFTeEZRVUZSUVN4RlFVRk5MRTlCUVU4c1IwRkZja0lzUTBGQlEwRXNSMEZCVXl4UFFVRlBRU3hIUVVGVkxGTkJRVlVzUTBGRGNrTXNTVUZCVFhWQ0xFVkJRVThzU1VGQlNVTXNSVUZCVDNoQ0xFTkJRVXNzUlVGRE4wSXNUMEZCU1hGQ0xFbEJRMEZCTEVWQlFVa3NTMEZCVDBVc1IwRkRVa0VzUTBGRFdDeERRVU5CYWtJc1JVRkRTVTRzWVVGQmFVSXNTVUZEV0cxQ0xFVkJRVTlLTEVWQlFVY3NSVUZEVml4UFFVRlBMRmxCUVZrc1QwRkJUMllzUTBGQlN5eEZRVU16UW0xQ0xFVkJRVTlOTEVWQlFVY3NSVUZEVms0c1JVRkJUMG9zUlVGQlJ5eERRVU0xUWl4RFFVTkpSeXhKUVVOQlFTeEZRVUZUV2l4RFFVRk5MRVZCUTJZc1QwRkJUMFVzUlVGQlNTeFZRVVZtTEVsQlFVMWxMRVZCUVU5cVFpeEhRVUZCTEUxQlFVRkJMRVZCUVZFc1YwRkRaa0VzUlVGQlR5eFhRVUZYUlN4RlFVRkpMRTlCUVZGU0xFVkJRVTlSTEVOQlFVY3NSVUZEZUVNc1VVRkJUMFVzUlVGQlFVb3NSMEZCUVN4WlFVRkJRU3hGUVVGUkxGbEJRVklzV1VGQlFVa3NSVUZCYlVJc1QwRkJVeXhYUVVNdlFrb3NSVUZCVHl4VlFVRlZMRXRCUVV0RkxFVkJRVWtzVDBGQlVWSXNSVUZCVDFFc1EwRkJSeXhGUVVNMVF5eEpRVUZKWjBJc1JVRkJUM2hDTEVOQlFVc3NSVUZETVVJc1QwRkJTVU1zUlVGRFFYTkNMRVZCUVVzc1NVRkJUWFJDTEVWQlEweExMRVZCUVU4c1ZVRkRZbWxDTEVWQlFVc3NTVUZCVFdwQ0xFVkJRVThzUzBGRGJFSmxMRWxCUTBGQkxFVkJRVWtzUzBGQlQwVXNSMEZEVWtFc1EwRkRXQ3hEUTJ4R1FTeFRRVUZUUnl4SFFVRnRRa01zUlVGQlVVTXNSVUZCVFVNc1JVRkJUeXhEUVVNM1F5eEpRVUZKUXl4RlFVRkpSQ3hGUVVOU0xGRkJRVk5GTEVWQlFVbElMRVZCUVVzc1QwRkJVeXhGUVVGSFJ5eEhRVUZMTEVWQlFVY3NSVUZCUlVFc1JVRkJSeXhEUVVOMlF5eEpRVUZOUXl4RlFVRkpTaXhGUVVGTFJ5eERRVUZETEVWQlEyaENMRWRCUVVrc1QwRkJUME1zUjBGQlRTeFZRVUZaTEU5QlFVOHNWVUZCVlVFc1EwRkJReXhIUVVGTFFTeEhRVUZMTEVWQlFVY3NRMEZEZUVRc1NVRkJUVU1zUlVGQlNTeERRVUZETEVWQlExaEJMRVZCUVVWRUxFTkJRVU1zUlVGQlNVWXNSVUZEVUVFc1JVRkJTVWNzUTBGRFVpeE5RVVZKU0N4RlFVRkpMRWxCUVVrc1NVRkJTU3hEUVVGRExFTkJRVU5GTEVWQlFVZEdMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJSVFZDTEVOQlEwRXNUMEZCVDBrc1IwRkJWMG9zUlVGQlJ5eFBRVUZYTEVOQlF6VkNMSE5DUVVGMVFpeEhRVU4yUWl4alFVRmxMRWRCUTJZc1UwRkJWU3hKUVVGTkxFTkJRMW9zVFVGQlRTeEpRVUZKTEUxQlFVMHNPRU5CUVRoRExFTkJRMnhGTEVWQlEwRXNUMEZCUVVnc1JVRkRRU3hqUVVGbExFbEJRVWtzUjBGRGRrSXNRMEZCUXl4RFFVTk1MRU5CUjBFc1NVRkJUVkVzUjBGQlpWQXNSMEZCVTBFc1IwRkJVU3hOUVVOcVF5eFBRVUZQUVN4SFFVRlRMRlZCUVZrc1EwRkJReXhEUVVGRFFTeEZRVUZMTEU5QlFVOHNVVUZCVVN4RlFVRkZMRVZCUVVVc1MwRkJTeXhGUVVGRkxFdEJRelZFVVN4SFFVRk9MR05CUVhsQ1F5eEZRVUZUTEVOQlF6bENMRmxCUVZsRExFVkJRVTFZTEVWQlFWRXNRMEZEZEVJc1RVRkJUVmNzUTBGQlNTeEZRVU5XTEU5QlFVOHNaVUZCWlN4TFFVRk5MRk5CUVZVc1EwRkRiRU1zVFVGQlQxZ3NSVUZEVUN4aFFVRmpMRWRCUTJRc1YwRkJXU3hIUVVOYUxGTkJRVlVzUlVGRFpDeERRVUZETEVOQlEwd3NRMEZOUVN4TlFVRk5RU3hGUVVGUkxFTkJRMVlzU1VGQlRWa3NSVUZCVHl4UFFVRlBMRTlCUVU4c1QwRkJUeXhsUVVGbExFbEJRVWtzUlVGQlJ5eFBRVUZQTERCQ1FVRXdRaXhKUVVGSkxFTkJRVU1zUlVGRE9VWXNUMEZCU1Zvc1NVRkRRVmtzUlVGQlN5eFBRVUZUV2l4SFFVTnNRbGtzUlVGQlN5eE5RVUZSUVN4RlFVRkxMRTFCUVUwc1NVRkJTVU1zUjBGQlRVTXNSVUZCVDBRc1EwRkJSU3hIUVVGTFJTeEZRVUZQUml4RFFVRkZMRVZCUVVsQkxFVkJRVWNzVFVGQlRXSXNRMEZCVFN4RlFVRkpZU3hEUVVGRkxFVkJRemxGTEV0QlFVc3NVVUZEVEVRc1JVRkJTeXhOUVVGUkxFdEJRVXNzVFVGQlRTeE5RVUZOTEVkQlF6TkNRU3hEUVVOWUxFTkJUVUVzVFVGQlRWZ3NSVUZCVFVNc1JVRkJUeXhEUVVObUxFZEJRVWxOTEVkQlFWbFFMRU5CUVVrc1JVRkRhRUlzUzBGQlN5eEpRVUZKUXl4RFFVRkxMRTFCUTJJc1EwRkRSQ3hIUVVGTkxFTkJRVU5qTEVWQlFVc3NSMEZCUjBNc1EwRkJTU3hGUVVGSmFFSXNSVUZEYWtKcFFpeEZRVUZQTEV0QlFVc3NTVUZCU1VZc1JVRkJTeXhGUVVGSkxFVkJReTlDTEVkQlFVbEhMRVZCUVdGRUxFTkJRVWtzUlVGRGFrSkJMRVZCUVVzc1RVRkJUVVFzUlVGQlRXWXNRMEZCU3l4VlFVTnFRbWRDTEVsQlFWTXNVVUZCWVN4TFFVRkxMRTlCUTJoRExFdEJRVXNzU1VGQlNVWXNSVUZCUzJwQ0xFZEJRVzFDTEV0QlFVc3NUMEZCVVd0Q0xFVkJRVTFtTEVOQlFVc3NRMEZCUXl4TlFVVXhSQ3hQUVVGTkxFbEJRVWtzVFVGQlRTd3JRa0ZCSzBKakxFTkJRVWNzY1VKQlFYRkNReXhEUVVGSkxFVkJRVVVzUTBGRGNrWXNRMEZEU2l4RFFVdEJMRk5CUVZOb1FpeEZRVUZOTEVOQlExZ3NSMEZCVFN4RFFVRkRaU3hGUVVGTExFZEJRVWRETEVOQlFVa3NSVUZCU1doQ0xFVkJRM1pDTEVkQlFVbG5RaXhGUVVGTExGTkJRVmNzUlVGRGFFSXNUMEZCVHl4TFFVRkxMRTlCUVU5RUxFTkJRVWNzUlVGRE1VSXNTVUZCVFVVc1JVRkJUeXhMUVVGTExFbEJRVWxHTEVWQlFVc3NSVUZCU1N4RlFVTXZRaXhIUVVGSlJ5eEZRVUZoUkN4RFFVRkpMRVZCUTJwQ0xFOUJRVTlCTEVWQlFVc3NVMEZCVTBRc1EwRkJTU3hGUVVWNlFpeE5RVUZOTEVsQlFVa3NUVUZCVFN3clFrRkJLMEpFTEVOQlFVY3NjVUpCUVhGQ1F5eERRVUZKTEVWQlFVVXNRMEZEY2tZc1EwRk5RU3hOUVVGTmFFSXNSVUZCVFcxQ0xFVkJRVmtzUTBGRGNFSXNSMEZCVFN4RFFVRkRTaXhGUVVGTExFZEJRVWRETEVOQlFVa3NSVUZCU1doQ0xFVkJRMnBDYVVJc1JVRkJUeXhMUVVGTExFbEJRVWxHTEVWQlFVc3NSVUZCU1N4RlFVTXZRaXhQUVVGSlF5eEZRVUZMTEZOQlFWY3NSVUZEVkN4RFFVRkRSeXhIUVVGalF5eEZRVUZUU0N4RFFVRkpMRVZCUVVsQkxFVkJRVXNzVFVGQlVVRXNSVUZGTjBORExFVkJRV0ZFTEVOQlFVa3NSVUZCU1VFc1JVRkJTeXhOUVVGTlJDeEZRVUZOUnl4RFFVRlZMRVZCUVVrc1RVRkRia1VzUTBGRFFTeHBRa0ZCYVVKRkxFVkJRV0VzUTBGRE1VSXNUMEZCVHl4TFFVRkxMRTFCUVUwc1RVRkJUVW9zUjBGQlVTeERRVU0xUWl4SFFVRkpMRU5CUVVOSUxFVkJRVTlITEVOQlFVa3NSVUZEV2l4TlFVRlBMRWRCUTFnc1NVRkJUVXNzUlVGQlNVd3NSVUZCU3l4TlFVTm1MRTlCUVZGTExFZEJRVXNzVFVGRFVrUXNSMEZEUjBRc1JVRkJVMFVzUTBGQlF5eEhRVU5XUVN4RlFVRkZMRTlCUVZNc1RVRkRXQ3hEUVVGRFFTeEZRVUZGTEdWQlEwZ3NRMEZCUTBFc1JVRkJSU3hUUVVOSUxFTkJRVU5CTEVWQlFVVXNSMEZEWml4RFFVRkRMRU5CUTB3c1EwRkpRU3hOUVVGTmRFSXNSVUZCVFN4RFFVTlNMRWRCUVUwc1EwRkJRMlVzUlVGQlN5eEhRVUZIUXl4RFFVRkpMRVZCUVVsb1FpeEZRVU4yUWl4SFFVRkpaMElzUlVGQlN5eFRRVUZYTEVWQlEyaENMRTlCUVU4c1MwRkJTeXhKUVVGSlJDeERRVUZITEVWQlEzWkNMRWxCUVUxRkxFVkJRVThzUzBGQlN5eEpRVUZKUml4RlFVRkxMRVZCUVVrc1JVRkRMMElzVDBGQlQwY3NSVUZCWVVRc1EwRkJTU3hGUVVGSlFTeEZRVUZMTEUxQlFVMUVMRU5CUVVrc1JVRkJTU3hGUVVOdVJDeERRVXRCTEUxQlFVMW9RaXhGUVVGTlF5eEZRVUZQTEVOQlEyWXNSMEZCVFN4RFFVRkRZeXhGUVVGTExFZEJRVWRETEVOQlFVa3NSVUZCU1doQ0xFVkJRM1pDTEVkQlFVbG5RaXhGUVVGTExGTkJRVmNzUlVGRGFFSXNTMEZCU3l4SlFVRkpSQ3hGUVVGTFpDeERRVUZMTEUxQlJXeENMRU5CUTBRc1NVRkJUV2RDTEVWQlFVOHNTMEZCU3l4SlFVRkpSaXhGUVVGTExFVkJRVWtzUlVGREwwSXNSMEZCU1Vjc1JVRkJZVVFzUTBGQlNTeEZRVU5xUWtFc1JVRkJTeXhOUVVGTlJDeEZRVUZOWml4RFFVRkxMRlZCUTJwQ1owSXNTVUZCVXl4UlFVRmhMRXRCUVVzc1QwRkRhRU1zUzBGQlN5eEpRVUZKUml4RlFVRkxha0lzUjBGQmJVSXNTMEZCU3l4UFFVRlJhMElzUlVGQlRXWXNRMEZCU3l4RFFVRkRMRTFCUlRGRUxFOUJRVTBzU1VGQlNTeE5RVUZOTEN0Q1FVRXJRbU1zUTBGQlJ5eHhRa0ZCY1VKRExFTkJRVWtzUlVGQlJTeERRVU55Uml4RFFVTktMRU5CUTBvc1JVTjZTVUVzU1VGQlRVOHNSMEZCYjBKRExFZEJRVkZCTEVWQlFVa3NVVUZCVVN4clFrRkJiVUlzUjBGQlJ5eEZRVU53UlN4VFFVRlRReXhIUVVGalF5eEZRVUZUUXl4RlFVRlJMRU5CUTNCRExFMUJRVWtzVVVGQlVTeExRVUZMUkN4RFFVRlBMRVZCUTJKQkxFVkJRVkVzVlVGQlZTeERRVUZETEVWQlEzWkNReXhGUVVGVFJDeEZRVUZSTEZGQlFWRXNZVUZCWTBNc1EwRkJUU3hGUVVGSlJDeERRVU0xUkN4RFFVTkJMRWxCUVUxRkxFZEJRV01zUTBGQlEwb3NSVUZCUzBjc1JVRkJVVVFzU1VGQldVWXNSVUZCU1N4VFFVRlRPMEZCUVVFc1EwRkJTU3hGUVVONlJFTXNSMEZCWTBNc1JVRkJVME1zUTBGQlRTeEZRVU0zUWtRc1JVRkJVU3hUUVVGVE8wRkJRVUVzUTBGQlNTeEZRVU5xUWp0QlFVRkJMRVZCUVU5RUxFZEJRV05ETEVWQlFWTkRMRU5CUVUwc1IwRkRia05JTEVWQlFVa3NVMEZCVXl4SFFVRkhMRVZCUVVrc1IwRkJTeXhMUVVGUFJTeEZRMnBDTTBNc1NVRkJUVWNzUjBGQldTeFBRVU5hUXl4SFFVRmhMRkZCUTJKRExFZEJRV01zVTBGTmNFSXNVMEZCVTBNc1IwRkJZME1zUlVGQlRVTXNSVUZCVVVNc1JVRkJUeXhQUVVGUkxFTkJRVVVzWTBGQlFVTXNSVUZCWlN4VlFVRkJReXhGUVVGWkxFZEJRVWtzWjBKQlFVRkRMRVZCUVd0Q0xFZEJRVWtzVDBGQlFVTXNSVUZCVVN4WFFVRkJReXhEUVVGWExFVkJRVWtzUTBGQlF5eEZRVUZITEVOQlEyeEpMRWRCUVVrc1EwRkJRMGdzUjBGQllVRXNSVUZCV1N4RlFVTXhRaXhQUVVGUFNpeEZRVU5RU1N4RlFVRlpReXhKUVVOYVFTeEZRVUZyUWl4SFFVTjBRaXhKUVVGTlJ5eEZRVUZWTEV0QlFVc3NTVUZCU1N4RlFVRkpTQ3hGUVVGcFFpeEZRVUZKUkN4RlFVRlpTQ3hGUVVGUExFMUJRVTBzUlVGRE0wVXNSMEZCU1VRc1JVRkJTeXhSUVVGVlVTeEZRVU5tTEU5QlFVOVNMRVZCUTFnc1NVRkJUVk1zUlVGQlVTeERRVUZETEVWQlExUkRMRVZCUVdVc1EwRkJReXhGUVVOc1FrTXNSVUZCVFZBc1JVRkJXVWdzUlVGQlR5eFBRVU42UWl4UFFVRlBSU3hIUVVGclFpeFhRVU55UWtFc1JVRkJaMEpETEVWQlFWa3NTMEZCU3l4SlFVRkpMRVZCUVVkRExFTkJRV1VzUlVGRGRrUkpMRVZCUVUwc1MwRkJTeXhEUVVGRExFVkJSVnBGTEVWQlFVMVFMRVZCUVZsRUxFZEJSVEZDTEVsQlFVbFRMRVZCUTBGRExFVkJRMEZETEVWQlFWY3NSMEZEV0VNc1JVRkJTU3hIUVVOS1F5eEZRVUZYTEVkQlExaERMRVZCUVZNc1IwRkRWR1lzU1VGQlUwd3NTMEZEVkd0Q0xFVkJRVWxITEVkQlFYbENiRUlzUlVGQlRXVXNSVUZCUjJRc1JVRkJUeXhOUVVGTkxFVkJReTlEWXl4SlFVRk5MRXRCUTA1S0xFVkJRVTFKTEVWQlFVbFFMRWxCUld4Q0xGRkJRVk5YTEVWQlFVdEJMRVZCUVV0dVFpeEZRVUZOWlN4SFFVRkxMRU5CUVVVc1IwRkJTeXhEUVVOcVF5eEhRVUZKWWl4SlFVRlRTaXhKUVVGbGNVSXNTVUZCVHl4TFFVRk5MRU5CUlhKRExFOUJSRUZJTEVWQlFWZEVMRVZCUTBobUxFVkJRVXRsTEVWQlFVa3NRMEZCUXl4RlFVRkhMRU5CUTJwQ0xFbEJRVXNzU1VGRFJFRXNSMEZCU3l4RlFVTk1MRTFCUTBvc1NVRkJTeXhKUVVORVFTeEhRVUZMTEVWQlEwd3NUVUZEU2l4SlFVRkxMRWxCUTBSQkxFZEJRVXNzUlVGRFRDeE5RVU5LTEZGQlEwbEJMRWRCUVVzc1EwRkRZaXhEUVVOQlJTeEZRVUZUUml4RFFVTmlMRU5CUTBFc1IwRkJTVWtzU1VGQlR6dEJRVUZCTEVWQlEwaHFRaXhKUVVGVFRDeExRVU5VYTBJc1JVRkJTVWNzUjBGQmVVSnNRaXhGUVVGTlpTeEZRVUZIWkN4RlFVRlBMRTFCUVUwc1IwRkRka1JWTEVWQlFVMUpMRVZCUVVsa0xFVkJRVThzVDBGQlUwOHNSVUZETVVKSkxFVkJRVkVzVjBGRlVDeERRVU5FTEVkQlFVbFBMRWxCUVU4c1MwRkRVRTRzUjBGRFFVRXNTVUZCVXl4TFFVTlVRU3hKUVVGVE8wRkJRVUVzUjBGRFZFRXNTVUZCVXl4SlFVRk5MRU5CUldZc1NVRkJUVThzUlVGQlQzQkNMRVZCUVV0bExFVkJRVWtzUTBGQlF5eEZRVU51UWtzc1IwRkJVVUVzU1VGQlV5eExRVUZQUVN4SlFVRlRPMEZCUVVFc1IwRkJVVUVzU1VGQlV5eE5RVU5zUkZJc1JVRkJVVWNzUlVGRGFFSXNRMEZEUVN4SFFVRkpRU3hIUVVGTFNpeEZRVU5NTEVkQlFVbERMRVZCUTBGSUxFVkJRVTBzUzBGQlMwY3NRMEZCU3l4RlFVTm9Ra1FzUlVGQlRVTXNSVUZCVVVvc1JVRkRaRWtzUlVGQlVTeGxRVVZJVml4SlFVRlRTaXhIUVVGaExFTkJSVE5DTEV0QlFVOWxMRWxCUVZNc1MwRkJUMEVzU1VGQlV5eExRVU0xUWtFc1JVRkJUMDBzUlVGRFVFRXNSVUZCUzI1Q0xFVkJRVTFsTEVkQlFVc3NRMEZCUlN4RlFVTnNRa1FzUlVGQlZ5eEhRVWRtTEVsQlFVMVBMRVZCUVVsT0xFVkJRVWxGTEVWQlFWTXNSVUZCU1VZc1JVRkJTU3hGUVVGSlF5eEZRVUZYTEVWQlJUbERMRWRCUVVsT0xFVkJRV0ZYTEVOQlFVTXNSVUZEWkN4UFFVRlBja0lzUlVGRFdGTXNSVUZCVFN4TFFVRkxXU3hEUVVGRExFVkJRMXBZTEVWQlFXRlhMRU5CUVVNc1JVRkJTU3hIUVVOc1FsWXNSVUZCVFZVc1JVRkJTV0lzUlVGRFZra3NSVUZCVVN4TlFVTmFMRTFCUlVsRkxFVkJRVmNzUlVGSGRrSXNRMEZEUVVRc1JVRkJUMDBzUTBGRFdDeERRVWRCTEVkQlJrbE1MRWRCUVZsUUxFZEJRMXBCTEVWQlFWY3NSVUZEV0VVc1JVRkJUU3hUUVVGWExFVkJRMnBDTEU5QlFVOVVMRVZCUTFCTkxFZEJRMEZCTEVWQlFVOHNSVUZEV0N4SlFVRkpaMElzUlVGQlRYUkNMRVZCUVVzc1RVRkJUU3hGUVVGSFV5eEZRVUZOTEVOQlFVTXNRMEZCUXl4RlFVTm9ReXhSUVVGVFRTeEZRVUZKTEVWQlFVZEJMRVZCUVVsT0xFVkJRVTBzVDBGQlVTeEZRVUZGVFN4RlFVRkhMRU5CUTI1RExFbEJRVTFSTEVWQlFVOWtMRVZCUVUxTkxFTkJRVU1zUlVGRFpFb3NSVUZCVFVZc1JVRkJUVTBzUlVGQlNTeERRVUZETEVkQlFVdG1MRVZCUVVzc1QwRkROMEoxUWl4SlFVRlRMRVZCUTFSRUxFVkJRVTA3UVVGQlFTeEZRVUZMY2tJc1EwRkJUU3hIUVVGSFJDeEZRVUZMTEUxQlFVMHNSVUZCUjFjc1EwRkJSeXhEUVVGRExFbEJSV3hEVkN4SlFVRlRTaXhKUVVGbFdTeEZRVUZoWVN4RFFVRkpMRWxCUTNwRFJDeEhRVUZQTEVkQlFVZDBRaXhGUVVGTGRVSXNRMEZCU1N4RFFVRkRMRTFCUTNoQ1JDeEhRVUZQTzBGQlFVRXNSVUZCUzNKQ0xFTkJRVTBzUjBGQlIwUXNSVUZCU3l4TlFVRk5kVUlzUlVGQlR5eEZRVUZIV2l4RFFVRkhMRU5CUVVNc1IwRkZkRVFzUTBGRFFTeFBRVUZQVnl4RFFVTllMRU5CUzBFc1UwRkJVMG9zUjBGQmVVSnNRaXhGUVVGTlpTeEZRVUZIWkN4RlFVRlJMRU5CUXk5RExFbEJRVWxWTEVWQlFVMUpMRVZCUTA1VExFVkJRVkZVTEVWQlFVa3NSVUZEV2trc1JVRkJTMjVDTEVWQlFVdDNRaXhEUVVGTExFVkJRMjVDTEV0QlFVOU1MRWxCUVU4c1MwRkJUMEVzU1VGQlR5eExRVU40UWl4SFFVRkpTaXhGUVVGSlV5eEZRVUZSZGtJc1JVRkRXbXRDTEVWQlFVdHVRaXhGUVVGTExFVkJRVVZsTEVOQlFVTXNUVUZGV2l4RFFVTkVMRWRCUTBsSkxFVkJRVXR1UWl4RlFVRkxMRVZCUVVWbExFTkJRVU1zVVVGRFVra3NSMEZCVFVFc1NVRkJUenRCUVVGQkxFZEJRM1JDVWl4RlFVRk5TU3hGUVVOT1V5eEZRVUZSVkN4RlFVRkpMRVZCUTFwSkxFVkJRVXR1UWl4RlFVRkxkMElzUTBGQlN5eERRVU51UWl4RFFVVktMRTlCUVU5aUxFTkJRMWdzUTBNMVNVRXNTVUZCVFdNc1IwRkJhVUlzUTBGQlEwTXNSVUZCUzBNc1MwRkJZU3hEUVVOMFF5eGpRVUZsUVN4RlFVRlZSQ3hGUVVGSkxFOUJRVThzVDBGQlUwRXNSVUZCU1N4alFVTnFSQ3hWUVVGWFFTeEZRVUZKTEZGQlFWRXNWVUZEZGtJc1owSkJRV2xDUVN4RlFVRkpMRkZCUVZFc1pVRkRha01zUjBGSFRVVXNSMEZCTUVKRExFZEJRVkVzYlVKQlFXMUNMRXRCUVV0QkxFTkJRVWNzUlVGRGJrVXNVMEZCVTBNc1IwRkJiMEpFTEVWQlFVdEZMRVZCUVZkRExFVkJRV01zUTBGRGRrUXNSMEZCU1N4RFFVRkRSQ3hIUVVGaFFTeEZRVUZaTEVWQlF6RkNMRTFCUVU4c1IwRkRXQ3hKUVVGTlJTeEZRVUZSUml4RlFVRlpReXhGUVVOd1FrVXNSVUZCVTB3c1JVRkJTU3hQUVVOdVFpeEhRVUZKU3l4SFFVRlZSQ3hGUVVOV0xFMUJRVThzUjBGRFdDeFJRVUZUTEVWQlFVa3NSVUZCUjBVc1JVRkJVU3hGUVVGSExFVkJRVWxFTEVWQlFWRXNSVUZCUlN4RlFVTnlReXhIUVVGSlRDeEZRVUZKTEVOQlFVTXNTVUZCVFR0QlFVRkJMRVZCUVUwc1EwRkRha0lzUjBGQlNTeEZRVUZKVFN4RlFVRlJSaXhGUVVOYUxFMUJRVThzUjBGRldDeEhRVVJCUlN4RlFVRlJMRVZCUVVrc1JVRkRVa1FzUlVGQlUwTXNSMEZCVTBZc1JVRkRiRUlzVFVGQlR5eEZRVU5tTEVOQlJVb3NUVUZCVHl4RlFVTllMRU5CUTBFc1UwRkJVMGNzUjBGQmJVSkRMRVZCUVU5WUxFVkJRVXNzUTBGRGNFTXNTVUZCVFZrc1JVRkJUeXhMUVVGTExGVkJRVlZFTEVOQlFVc3NSVUZEYWtNc1IwRkJTVmdzUlVGQlNTeFJRVUZSTEcxQ1FVTmFMRTlCUVU5WkxFVkJRMWdzUjBGQlRTeERRVUZGTEZsQlFVRkRMRU5CUVZrc1JVRkJTV0lzUlVGRGJFSmpMRVZCUVhGQ1pDeEZRVUZKTEZGQlFWRXNLMEpCUTJwRFpTeEZRVUZUWml4RlFVRkpMRk5CUVZkRkxFZEJRWFZDVXl4RFFVRkxMRVZCUVVrc1MwRkJUeXhKUVVOcVJWSXNSVUZCVFN4SFFVTk9UU3hGUVVGUkxFVkJRMW9zVVVGQlUwOHNSVUZCU1N4RlFVRkhReXhGUVVGTFRDeEZRVUZMU1N4RFFVRkRMRVZCUVVkRExFVkJRVWxCTEVWQlFVdE1MRVZCUVVzc1JVRkJSVWtzUTBGQlF5eEZRVkV6UXl4SFFWQkpReXhKUVVGUExFdEJRVTlNTEVWQlFVdEpMRVZCUVVrc1EwRkJReXhKUVVGTkxFMUJRVkZLTEVWQlFVdEpMRVZCUVVrc1EwRkJReXhKUVVGTkxFMUJSWFJFWWl4SFFVRlBVeXhGUVVGTExFMUJRVTFJTEVWQlFVOVBMRU5CUVVNc1JVRkJTU3hOUVVNNVFrRXNSMEZCU3l4RlFVTk1VQ3hGUVVGUlR5eEZRVU5TUXl4RlFVRkxMRTFCUlV4QkxFbEJRVThzUzBGRFVDeFBRVUZSVEN4RlFVRkxTU3hGUVVGSkxFTkJRVU1zUlVGQlJ5eERRVU5xUWl4SlFVRkxMRWxCUTBRc1EwRkRTV0lzUjBGQlQxTXNSVUZCU3l4TlFVRk5TQ3hGUVVGUFR5eERRVUZETEVWQlF6RkNMRWxCUVUxRkxFVkJRVTlPTEVWQlFVc3NUMEZCVDBrc1JVRkJTU3hGUVVGSExFTkJRVU1zUlVGRGFrTXNUMEZCVVVVc1JVRkJUU3hEUVVOV0xFbEJRVXNzVDBGRFJHWXNSMEZCVHl4TlFVTlFMRTFCUTBvc1NVRkJTeXhQUVVORVFTeEhRVUZQTEUxQlExQXNUVUZEU2l4SlFVRkxMRTlCUTBSQkxFZEJRVThzVFVGRFVDeE5RVU5LTEVsQlFVc3NUMEZEUkVFc1IwRkJUeXhOUVVOUUxFMUJRMG9zU1VGQlN5eFBRVU5FUVN4SFFVRlBMRTFCUTFBc1RVRkRTaXhKUVVGTExFOUJRMFJCTEVkQlFVOHNUVUZEVUN4TlFVTktMRWxCUVVzc1QwRkRSRUVzUjBGQlR5eE5RVU5RTEUxQlEwb3NTVUZCU3l4UFFVTkVRU3hIUVVGUExFMUJRMUFzVFVGRFNpeFJRVU5SWlN4RlFVRkxMRTlCUVU4c1JVRkJSeXhEUVVGRExFbEJRVTBzUzBGRGRFSm1MRWRCUVU4c1RVRkJVV1VzUlVGQlN5eFBRVUZQTEVOQlFVTXNSVUZGTlVKbUxFZEJRVTlUTEVWQlFVc3NUMEZCVDBrc1JVRkJSeXhEUVVGRExFTkJRMjVETEVOQlEwRkJMRWRCUVVzc1JVRkRURkFzUlVGQlVVOHNSVUZCU1N4RFFVTm9RaXhEUVVOQkxFMUJRMG9zU1VGQlN5eEpRVU5FTEVkQlFVbElMRWRCUTBGRUxFVkJRVXRKTEVWQlFVa3NRMEZCUXl4SlFVRk5MRXRCUTJoQ1NpeEZRVUZMTEU5QlFWTkZMRVZCUTJSRkxFZEJRVXNzVFVGRlNpeERRVWRFTEVsQlJFRmlMRWRCUVU5VExFVkJRVXNzVFVGQlRVZ3NSVUZCVDA4c1EwRkJReXhGUVVGSk8wRkJRVUU3UVVGQlFTeEZRVU4yUWtvc1JVRkJTMGtzUlVGQlNTeERRVUZETEVsQlFVMHNUVUZEYmtKS0xFVkJRVXRKTEVWQlFVa3NRMEZCUXl4SlFVRk5MRXRCUTJoQ1NpeEZRVUZMU1N4RlFVRkpMRU5CUVVNc1NVRkJUU3hMUVVOb1FtSXNSMEZCVHp0QlFVRkJMRVZCUTFCaExFZEJRVXNzUlVGRlZHSXNSMEZCVDFrc1JVRkZTRWdzUlVGQlMwa3NSVUZCU1N4RFFVRkRMRWxCUVUwc1RVRkRhRUppTEVkQlFVOHNUVUZEV0dFc1IwRkJTeXhGUVVOTVVDeEZRVUZSVHl4RlFVRkpMRU5CUTJoQ0xFTkJRMEVzVFVGRFNpeFJRVU5KUVN4SFFVRkxMRU5CUTJJc1EwRkZVaXhQUVVGQllpeEZRVUZOVFN4RlFVRlJUaXhGUVVGTlV5eEZRVUZMTEUxQlFVMUlMRU5CUVVzc1JVRkJTVWNzUlVGRGFrTkRMRVZCUTBSV0xFVkJRMEZuUWl4SFFVRmphRUlzUlVGQlMxa3NSVUZCVVVzc1IwRkJZWEpDTEVkQlFXVkRMRVZCUVVzc1JVRkJTeXhEUVVGRExFTkJRelZGTEVOQlEwRXNVMEZCVTNGQ0xFZEJRVzFDVml4RlFVRlBXQ3hGUVVGTExFTkJRM0JETEVkQlFVbEJMRVZCUVVrc1VVRkJVU3hqUVVGblFpeEpRVU16UWtFc1JVRkJTU3hoUVVGbFZ5eEZRVUZOTEZOQlFWTTdRVUZCUVN4RFFVRkpMRWRCUTNaRExHdENRVUZyUWl4TFFVRkxRU3hEUVVGTExFVkJSVFZDTEU5QlFVOUVMRWRCUVcxQ1F5eEZRVUZQV0N4RFFVRkhMRVZCUTNoRExFbEJRVTFsTEVWQlFWTm1MRVZCUVVrc1UwRkJWMFVzUjBGQmRVSlRMRU5CUVVzc1JVRkJTU3hMUVVGUExFbEJReTlFVnl4RlFVRk5MRWxCUVUxWUxFVkJRVTBzVVVGQlVTeExRVUZOTEVsQlFVa3NSVUZCUlN4UlFVRlJMRTlCUVZFN1FVRkJRU3hGUVVGUFNTeERRVUZOTEVWQlFVVXNSVUZCU1N4SlFVTXZSU3hQUVVGUFppeEZRVUZKTEZsQlEweHpRaXhGUVVOQlNDeEhRVUZqUnl4RlFVRkxVQ3hGUVVGUlVTeEhRVUZYZUVJc1IwRkJaVU1zUlVGQlN5eEZRVUZMTEVOQlFVTXNRMEZETVVVc1EwRkRRU3hUUVVGVGQwSXNSMEZCWVdJc1JVRkJUMWdzUlVGQlN5eERRVU01UWl4SFFVRk5MRU5CUVVVc1dVRkJRWGxDTEVOQlFWa3NSVUZCU1hwQ0xFVkJRVWtzVVVGRGVFSXdRaXhGUVVOS0xFZEJRVWxFTEVsQlFXZENMRWRCUTJoQ1F5eEZRVUZMYUVJc1QwRkRTaXhEUVVORUxFbEJRVTFwUWl4RlFVRlphRUlzUlVGQlRTeFRRVUZUTEVkQlFVY3NSVUZET1VKcFFpeEZRVUZaYWtJc1JVRkJUU3hUUVVGVExFZEJRVWNzUlVGRGFFTm5RaXhIUVVGaExFTkJRVU5ETEVWQlEyUkdMRVZCUVV0TUxFZEJRMEZQTEVkQlFXRXNRMEZCUTBRc1JVRkRia0pFTEVWQlFVdG9RaXhIUVVWTVowSXNSVUZCUzBRc1JVRkJZMG9zUjBGQmNVSllMRVZCUTJoRUxFTkJRMEVzVDBGQlQyZENMRVZCUVVkbUxFVkJRVTlZTEVOQlFVY3NRMEZEZUVJc1EwRkhRU3hKUVVGSk5rSXNSMEZEU2l4SFFVRkpMRU5CUTBGQkxFZEJRVzFDTEVsQlFVa3NUMEZCVHp0QlFVRkJPMEZCUVVFN1FVRkJRU3hMUVVFd1FpeEhRVUZITEVOQlF5OUVMRTlCUTAxRExFVkJRVUVzUTBGRFJrUXNSMEZCYlVJc1kwRkRka0lzUTBGRFFTeFRRVUZUUlN4SFFVRlpMRU5CUVVVc1VVRkJRVU1zUlVGQlV5eExRVUZCUXl4RlFVRk5MRTFCUVVGMFFpeERRVUZOTEVWQlFVZFlMRVZCUVV0clF5eEZRVUZYUXl4RlFVRmhMRU5CUTNoRkxFZEJRVTBzUTBGQlJTeFhRVUZCUXl4RlFVRlpMR05CUVVGRExFVkJRV1VzVlVGQlFXaERMRU5CUVZVc1JVRkJTVXdzUlVGQlNTeFJRVWR5UkN4SFFVRkpMRU5CUVVOdlF5eEhRVUZqTEZsQlFWa3NTMEZCUzNwQ0xFTkJRVXNzUjBGQlN5eFJRVUZSTEV0QlFVdEJMRU5CUVVzc1JVRkROVVFzVDBGQlQyRXNSMEZCWVdJc1JVRkJUMWdzUTBGQlJ5eEZRVVZzUXl4SlFVRk5aU3hGUVVGVFppeEZRVUZKTEZOQlEyUkJMRVZCUVVrc2EwSkJRVzlDUlN4SFFVRjFRbE1zUTBGQlN5eEZRVUZKTEV0QlFVOHNTVUZET1VReVFpeEZRVUZWUml4SlFVRmxMRlZCUTNwQ0xFZEJRMEZCTEVsQlFXVXNWVUZCV1Vnc1NVRkJVMDBzUlVGQlR5eGhRVU4yUXl4SFFVTkJUaXhKUVVGVFRTeEZRVUZQTEdOQlExb3NSMEZEUVN4RFFVRkRia01zUjBGQmIwSlBMRVZCUVU5T0xFVkJRVmRWTEVWQlFVOHNUVUZCVFN4RlFVTnNSU3hIUVVGSkxFTkJRVU5LTEVWQlEwUXNUMEZCVHpKQ0xFVkJRVlU3UVVGQlFTeEZRVUZSTzBGQlFVRXNSVUZGTjBJc1NVRkJTVVVzUlVGRFFVTXNSVUZEU2l4SlFVRkxRU3hGUVVGWE9VSXNSVUZCVFN4UFFVRlJPRUlzUlVGQlZ5eEZRVUZITEVWQlFVVkJMRVZCUVZVc1EwRkRjRVFzU1VGQlRYaENMRVZCUVV0T0xFVkJRVTA0UWl4RlFVRlhMRU5CUVVNc1JVRkROMElzUjBGQlNYaENMRWxCUVU4N1FVRkJRU3hIUVVGUlFTeEpRVUZQTEV0QlFWRkJMRWxCUVU4c1NVRkRja01zUzBGRFVpeERRVU5CTEVsQlFVbDVRaXhGUVVGTkwwSXNSVUZCVFN4VlFVRlZPRUlzUTBGQlVTeEZRVU0xUWtVc1JVRkJWMFFzUlVGQlNTeFJRVUZSTzBGQlFVRXNRMEZCU1N4RlFVTTNRa01zU1VGQllTeEhRVU5pU0N4RlFVRlJMRWxCUlVnM1FpeEpRVUZWSzBJc1IwRkJUME1zU1VGQllVUXNSVUZCU1N4UFFVRlRMRWRCUTJoRVJpeEZRVUZSTEVsQlEwcE1MRWRCUTBGQkxFVkJRVmtzUjBGSGFFSkxMRVZCUVZFc1IwRkZVa1VzU1VGRFFTOUNMRVZCUVZGQkxFVkJRVTBzVFVGQlRTeEZRVUZITEVOQlFVTXJRaXhGUVVGSkxFMUJRVTBzUlVGRE9VSkJMRVZCUVVsQkxFVkJRVWtzVDBGQlV5eERRVUZETEVsQlFVMDdRVUZCUVN4SlFVTjRRa0VzUlVGQlRVRXNSVUZCU1N4TlFVRk5MRVZCUVVjc1JVRkJSU3hIUVVONlFrRXNSVUZCVFVFc1JVRkJTU3hSUVVGUllpeEhRVUZyUWl4TFFVRkxaQ3hEUVVGTkxFVkJRVVVzUjBGSGNrUXNTVUZCU1RaQ0xFVkJRV2xDTEVkQlEycENReXhGUVVOQlF5eEZRVUZoTEVkQlEycENMRWxCUVV0RUxFVkJRVmNzUlVGQlIwRXNSVUZCVjJ4RExFVkJRVTBzVDBGQlVTeEZRVUZGYTBNc1JVRkJWU3hEUVVOd1JDeEpRVUZOTlVJc1JVRkJTMDRzUlVGQlRXdERMRU5CUVZFc1JVRkRla0lzUjBGQlNUVkNMRWxCUVU4c1NVRkRVREpDTEVWQlFXbENMRmRCUTFvelFpeEpRVUZQTzBGQlFVRXNSVUZEV2paQ0xFVkJRV0ZFTEUxQlJXSXNUVUZEVWl4RFFVTkJMRWxCUVVsd1F5eEZRVUZSUlN4RlFVRk5MRlZCUVZVc1JVRkJSMjFETEVWQlFXRkVMRVZCUVZkRExFVkJRV0VzUlVGQlNVUXNRMEZCVVN4RlFVTTFSWEJETEVsQlEwRkZMRVZCUVZGQkxFVkJRVTBzVlVGQlZVWXNSVUZCVFN4TlFVRk5MRVZCUTNCRFFTeEZRVUZSUVN4RlFVRk5MRkZCUVZFc1QwRkJVU3hMUVVGTFRTeERRVUZOTEVWQlFVVXNSMEZITDBNc1NVRkJTV2RETEVkQlFWVlVMRVZCUVZVc1NVRkJUU3hOUVVGUlRTeEZRVVJ1UWpkQ0xFVkJRVk1zU1VGQlRTeEpRVU5yUXl4SlFVRk5lVUlzUlVGTk1VVXNSMEZNU1ZJc1NVRkRRV1VzUjBGQlZTeEpRVUZOVml4RlFVRmpUQ3hGUVVGUkxGRkJRVkVzWVVGQll5eEhRVUZITEVOQlFVTXNSVUZETlVSRkxFZEJRMEZCTEVWQlFWVXNSMEZGWkVrc1JVRkRRU3hQUVVGQk0wSXNSVUZCVVVFc1JVRkJUU3hSUVVGUkxFOUJRVkVzUzBGQlMwa3NRMEZCVFN4RlFVRkZMRVZCUTNCRExFZEJRVWRuUXl4RFFVRk5PMEZCUVVFc1JVRkJTMmhETEVOQlFVMHNSMEZCUjA0c1EwRkJTeXhIUVVGSFJTeERRVUZMTEVkQlFVY3JRaXhEUVVGSExFZEJSWEpFTDBJc1JVRkJVVUVzUlVGRFNDeFJRVUZSTEU5QlFWRTdRVUZCUVN4SFFVRk5MRVZCUTNSQ0xGRkJRVkVzYVVSQlFXdEVMRTFCUVUwc1JVRkZhRVVzVVVGQlVTeFBRVUZSTEV0QlFVdEpMRU5CUVUwc1JVRkJSU3hGUVVOc1F5eEpRVUZOYVVNc1JVRkJUemRDTEVkQlFXTXNSMEZCUjFZc1EwRkJTeXhIUVVGSFJTeERRVUZMTEVkQlFVY3JRaXhEUVVGSExFZEJRVWt6UWl4RlFVRlJhME1zUjBGQldXeEVMRWRCUVdWRExFVkJRVXNzUlVGQlNTeERRVUZETEVWQlEyeEhMRTFCUVU4c1IwRkJSeXRETEVOQlFVMDdRVUZCUVN4RlFVRkxhRU1zUTBGQlRTeEhRVUZIYVVNc1EwRkJTU3hGUVVOMFF5eERRVU5CTEZOQlFWTkZMRWRCUVZsRExFVkJRVTF1UkN4RlFVRkxhME1zUlVGQlYwTXNSVUZCWVN4RFFVTndSQ3hIUVVGTkxFTkJRVVVzUzBGQlFVWXNSVUZCVFN4TlFVRkJkRUlzUTBGQlRTeEZRVUZKZDBNc1JVRkRiRUlzUTBGQlJTeGhRVUZCUXl4RlFVRmpMRmxCUVVGMlF5eEZRVUZoTEU5QlFVRkZMRVZCUVZFc1YwRkJRWE5ETEVWQlFWa3NUMEZCUVVNc1EwRkJUeXhGUVVGSmRFUXNSVUZEYkVVc1IwRkJTMkVzUjBGQlpVWXNSVUZCVFN4VFFVRlRPMEZCUVVFc1EwRkJTU3hIUVVOc1F6SkRMRWRCUVZVc1YwRkJWeXhMUVVGTE0wTXNRMEZCU3l4RlFVTm9ReXhQUVVGUFlTeEhRVUZoWWl4RlFVRlBXQ3hEUVVGSExFVkJSV3hETEVkQlFVa3NRMEZCUTFjc1IwRkRSQ3h2UmtGQmIwWXNTMEZCUzBFc1EwRkJTeXhGUVU4NVJpeFBRVUZQUlN4SFFVRmxlVU1zUjBGQlZTeERRVUZETTBNc1JVRkJUU3hUUVVGVE8wRkJRVUVzUTBGQlNTeEZRVU01UTJFc1IwRkJZV0lzUlVGQlQxZ3NRMEZCUnl4RlFVTjJRaXRDTEVkQlFWbHZRaXhGUVVGTmJrUXNSVUZCUzJ0RExFVkJRVmRETEVOQlFWY3NSVUZGZGtRc1IwRkJTU3hEUVVGRGRFSXNSMEZEUkN4RFFVRkRlVU1zUjBGRFJISkNMRWxCUVZOTkxFVkJRVThzVDBGRGFFSTFRaXhGUVVGTkxGTkJRVk03UVVGQlFTeERRVUZKTEVWQlJXNUNMRTlCUVU5dlFpeEhRVUZaYjBJc1JVRkJUVzVFTEVWQlFVdHJReXhGUVVGWFF5eERRVUZYTEVWQlJYaEVMRWRCUVVscVF5eEhRVUYxUWxNc1EwRkJTeXhGUVVGSExFTkJReTlDTEVkQlFVbEpMRWxCUVZjc1IwRkRXQ3hQUVVGQlppeEZRVUZKTEdsQ1FVRnRRaXhIUVVOb1FpdENMRWRCUVZsdlFpeEZRVUZOYmtRc1JVRkJTMnRETEVWQlFWZERMRU5CUVZjc1JVRkZia1FzUjBGQlNYUkNMRWRCUVdWRkxFbEJRVmR6UXl4RlFVTXZRaXhQUVVGUE4wSXNSMEZCWVdJc1JVRkJUMWdzUTBGQlJ5eERRVVYwUXl4RFFVTkJMRWxCUVUxSExFVkJRVTFSTEVWQlFVMHNVVUZCVVN4UFFVRlJPMEZCUVVFc1JVRkJUMGtzUTBGQlRTeEZRVUZGTEVWQlNXcEVMRWRCUVVseFF5eEZRVUZqTEVOQlEyUXNTVUZCVFVjc1JVRkJVVU1zUjBGQlN5eERRWFpTTTBJc1NVRkJRVU1zUlVGMVVqaENMRTlCUVVGRUxFVkJRVWtzVTBGQlYwRXNSVUZCU1N4TlFVRlJMREpDUVVFeVFrTXNSVUZCUVVRc1JVRkJTU3hQUVVGS0xGbEJRVUZETEVWQlFWVXNTMEZCUzNSRUxFdEJRM0pHTEVOQlFVVXNUMEZCUVhWRUxFVkJRVkVzUzBGQlFVTXNRMEZCU3l4RlFVRkpNMFFzUlVGQlNTeEpRVUZKTEU5QlEycERMRWRCUVVreVJDeEZRVUZMTEV0QlFVdEtMRU5CUVVrc1IwRkJTMGNzUjBGQlFTeE5RVUZCUVN4RlFVRlJMRXRCUVV0SUxFZEJRMmhETEU5QlFVOHZRaXhIUVVGaFlpeEZRVUZQV0N4RFFVRkhMRU5CUTNSRExFTkJRMEVzVDBGQlQyRXNSVUZEUkZZc1JVRkRRV2RDTEVkQlFXTm9RaXhGUVVGTFdTeEZRVUZSVVN4SFFVRlhlRUlzUjBGQlpVTXNSVUZCU3l4RlFVRkxMRU5CUVVNc1EwRkRNVVVzUTBGRFFTeFRRVUZUTkVRc1IwRkJaMEpVTEVWQlFVMXVSQ3hGUVVGTGEwTXNSVUZCVjBNc1JVRkJZU3hEUVVONFJDeEhRVUZOTEVOQlFVVXNXVUZCUVhSQ0xFVkJRV0VzVDBGQlFYbERMRU5CUVU4c1JVRkJTWFJFTEVWQlF6RkNOa1FzUlVGQlN5eFBRVUZQVml4RlFVRkxMRTlCUVZVc1UwRkRNMEpCTEVWQlEwRXNUMEZCVHl4UFFVRlBMRU5CUVVNc1JVRkJSMEVzUlVGQlRTeERRVUZGTEUxQlFVOHNUMEZCVDBFc1JVRkJTeXhMUVVGTExFTkJRVVVzUTBGQlF5eEZRVU4yUkN4RFFVRkZMRXRCUVVGc1FpeERRVUZMTEVWQlFVbHJRaXhGUVVOWWJFSXNTVUZCVTAwc1JVRkJUeXhqUVVWYUxHdEVRVUZyUkN4TFFVRkxjMElzUlVGQlJ5eExRVUZMTEVsQlF5OUVOVUlzUlVGQlQwMHNSVUZCVHl4alFVVjBRaXhKUVVGTmRVSXNSVUZCWTBNc1IwRkJWU3hEUVVNeFFpeFBRVUZSUVN4RlFVRlBMRU5CUTFnc1MwRkJTM2hDTEVWQlFVOHNZVUZEV2l4TFFVRkxRU3hGUVVGUExHTkJRMUlzVDBGQlR6RkNMRWRCUVdWNVF5eEZRVU5vUWpsQ0xFZEJRV0Z4UXl4RlFVRkhMRTFCUVU4M1JDeERRVUZITEVWQlF6RkNLMElzUjBGQldUaENMRVZCUVVrM1JDeEZRVUZMYTBNc1JVRkJWME1zUTBGQlZ5eEZRVU55UkN4TFFVRkxTU3hGUVVGUExHRkJRMUlzVDBGQlR6ZENMRWRCUVcxQ2JVUXNSVUZCUnl4TlFVRlBOMFFzUTBGQlJ5eEZRVU16UXl4TFFVRkxkVU1zUlVGQlR5eGhRVU5TTEU5QlFVOXNRaXhIUVVGdFFuZERMRVZCUVVjc1RVRkJUemRFTEVOQlFVY3NSVUZETTBNc1MwRkJTM1ZETEVWQlFVOHNUVUZEVWl4UFFVRlBWeXhIUVVGWlZ5eEZRVUZKTjBRc1JVRkJTMnRETEVWQlFWZERMRU5CUVZjc1JVRkRkRVFzVVVGRFNTeFBRVUZQTEVsQlEyWXNRMEZEU2l4RlFVTkpZaXhGUVVGTmQwTXNSVUZCVnpkQ0xFTkJRVWtzUlVGRGVrSXNSMEZCU1Znc1NVRkJVU3hMUVVGTkxFTkJRMlFzUjBGQlRTeERRVUZGTEdWQlFVRXdReXhGUVVGblFpeHJRa0ZCUVVNc1EwRkJhMElzUlVGQlNXcEZMRVZCUVVrc1VVRkROVU5yUlN4RlFVRkxja1FzUjBGQlpXMUVMRWRCUVcxQ1F5eEZRVVUzUXl4SFFVUkJNME1zUlVGQlRYZERMRVZCUVZkSkxFTkJRVU1zUlVGRFpEVkRMRWxCUVZFc1MwRkRVaXhOUVVGTkxFbEJRVWtzVFVGQlRTeHRRMEZCYlVNMFF5eERRVUZETEVWQlFVVXNRMEZET1VRc1EwRkRRU3hQUVVGUE5VTXNRMEZEV0N4RFEyaFZRU3hUUVVGVE5rTXNSMEZCZFVKRExFVkJRVXRETEVWQlFWTXNRMEZETVVNc1NVRkJUVU1zUlVGQlRTeFBRVUZQTEU5QlFVOHNRMEZEZEVJc1YwRkJXU3hIUVVOYUxHTkJRV1ZETEVkQlEyWXNaVUZCWjBJc1MwRkRhRUlzYTBKQlFXMUNMRkZCUTI1Q0xGZEJRVmtzUzBGRFdpeHRRa0ZCYjBJc1IwRkRjRUlzSzBKQlFXZERMRWRCUTJoRExGTkJRVlVzVVVGRFZpeHpRa0ZCZFVJc1IwRkRka0lzVlVGQlZ5eEhRVU5ZTEZWQlFWY3NSMEZEV0N4blFrRkJhVUlzUjBGRGFrSXNVVUZCVXl4UFFVTlVMRmRCUVZrc1IwRkRXaXhaUVVGaExFdEJRMklzVVVGQlV5eFBRVU5VTEdsQ1FVRnJRaXhGUVVOMFFpeEZRVUZIU0N4RlFVRkpMRTlCUVU4c1owSkJRV2xDUXl4RFFVRlBMRVZCUTJ4RFJ5eEZRVU5LTEU5QlFWRkdMRVZCUVVrc1owSkJRV2xDTEVOQlEzcENMRWxCUVVzc1VVRkRSRVVzUlVGQlV5eEhRVU5VTEUxQlEwb3NTVUZCU3l4UFFVTkVRU3hGUVVGVExFZEJRMVFzVFVGRFNpeFJRVU5KUVN4RlFVRlRMRWxCUTJwQ0xFTkJRMEVzVFVGQlR5eERRVU5JTEZGQlFWTXNTVUZCU1N4SlFVTmlMRWxCUVVGS0xFVkJRMEVzYzBKQlFYVkNSU3hGUVVGSkxITkNRVUYzUWl4SlFVRk5MRWRCUTNwRUxFOUJRVkVzUjBGRFVpeFhRVUZaTEU5QlFVOUJMRVZCUVVrc1VVRkJWeXhUUVVGWExFbEJRVWtzVDBGQlQwRXNSVUZCU1N4TlFVRk5MRVZCUVVrc1MwRkRkRVVzVDBGQlFVVXNSVUZEUVN4UlFVRlRSaXhEUVVOaUxFTkJRMG9zUTBGRFFTeFRRVUZUUnl4SFFVRmhReXhGUVVGTlF5eEZRVUZOTEVOQk9VTnNReXhKUVVGQlF5eEZRVUZCUXl4RlFVRkJReXhGUVVGQlF5eEZRU3REU1N4SFFVRkpTaXhGUVVGTExFbEJRVXNzUTBGRFZpeEpRVUZOU3l4RlFVRlJUaXhGUVVGTExFOUJRVTlQTEVkQlFVdEJMRVZCUVVVc1RVRkJVVTRzUlVGQlN5eEhRVUZITEVWQlEycEVMRWRCUVVsTExFVkJRVTBzVDBGQlV5eEZRVU5tTEU5QlFVOUtMRVZCUVVGSkxFVkJRVTBzUzBGQlMwTXNSMEZCUzBFc1JVRkJSU3hUUVVGWFRpeEZRVUZMTEUxQlFVMHNTVUZCZUVNc1MwRkJRVU1zUlVGQk5rTkpMRVZCUVUwc1EwRkJReXhEUVVOdVJTeERRVU5CTEVsQlFVbEZMRVZCUTBGRExFVkJRMG9zUjBGQlNVTXNSVUZCVTFRc1EwRkJTU3hGUVVGSExFTkJRMmhDVVN4RlFVRk5VaXhGUVVGTExFMUJRMWdzU1VGQlNVc3NSVUZCVVU0c1JVRkJTeXhQUVVGUFR5eEhRVUZGTEVOQmVFUnNReXhKUVVGQlRDeEZRWGRFY1VNc1QwRkJRVUVzUlVGQlFVc3NSVUZCUlN4WFFVRkdMRmxCUVVGTUxFVkJRVUVzUzBGQlFVc3NSVUZCWVVVc1IwRkJTU3hGUVVNNVF5eEhRVUZKU0N4RlFVRk5MRTlCUVZNc1JVRkJSeXhEUVVOc1FpeEpRVUZOU3l4RlFVRlpUQ3hGUVVGTkxFOUJRVTlETEVkQlFVdEJMRVZCUVVVc1NVRkJTU3hGUVVOMFEwa3NSVUZCVlN4UFFVRlRMRWxCUTI1Q1RDeEZRVUZSU3l4RlFVTm9RaXhEUVVOQlNDeEhRVU5KVEN4RlFVRkJSeXhGUVVGTkxFdEJRVXRETEVkQlFVdEJMRVZCUVVVc1UwRkJWMDRzUlVGQlN5eE5RVUZOTEVsQlFYaERMRXRCUVVGRkxFVkJRVFpEUnl4RlFVRk5MRXRCUVV0RExFZEJRVXNzUTBGQlEwRXNSVUZCUlN4TlFVRk5MRU5CUXpsRkxFMUJSVWxGTEVWQlFVMVNMRVZCUTA1UExFVkJRVk5TTEVWQlFVc3NTMEZCUzA4c1IwRkJTMEVzUlVGQlJTeFhRVUZoUlN4aFFVRmxSaXhGUVVGRkxGTkJRVk1zUlVGRmNrVXNSMEZCU1N4RFFVRkRReXhGUVVGUkxFTkJRMVFzU1VGQlRVa3NSMEZCVDFBc1IwRkJRVVFzUlVGQlFVc3NSMEZCUVN4WlFVRkJRU3hGUVVGTExHTkJRVXdzV1VGQlFVd3NSVUZCYTBJc1QwRkJiRUlzUzBGQlFVTXNSVUZCTUVJc1QwRkJUMGtzUlVGRE9VTXNUVUZCVFN4SlFVRkpMRTFCUVUwc2QwSkJRWGRDUnl4RFFVRkpMRkZCUVZFc1EwRkRlRVFzUTBGRFFTeFBRVUZQU2l4RFFVTllMRU5CUlVFc1UwRkJVMHNzUjBGQlpVTXNSVUZCVFU0c1JVRkJVU3hEUVVGRkxGRkJRVUZQTEVWQlFWTXNTVUZCUVhKQ0xFTkJRVWtzUlVGQlJ5eERRVU53UkN4SFFVRkpMRU5CUVVOQkxFVkJRVWtzVjBGRFRDeE5RVUZQTEVkQlExZ3NTVUZCVFhOQ0xFVkJRVkVzUTBGQlF5eEZRVU5VUXl4SFFVRlZVQ3hGUVVGVFNTeERRVUZKTEVkQlFVdEpMRVZCUVdGS0xFTkJRVWtzU1VGQlRVRXNSVUZCU3l4UFFVTXhSRWNzUjBGQlZVVXNSMEZCWTBZc1EwRkJUU3hKUVVNNVFrWXNSVUZCVVN4SlFVRkpSU3hEUVVGTkxFVkJRMnhDUkN4RlFVRk5MRXRCUVVzc1NVRkJTVU1zUTBGQlRTeEZRVUZGTEVkQlJUTkNMRWxCUVUxSExFVkJRVTFPTEVWQlFVc3NTVUZCVFVFc1JVRkJTeXhKUVVGTlRpeEZRVUZQTEZGQlFWVXNTMEZCVDBFc1JVRkJUeXhKUVVOcVJTeFBRVUZKV1N4SFFVTkJTaXhGUVVGTkxFdEJRVXQwUWl4RlFVRkpMRmRCUVZjc1ZVRkJWVEJDTEVOQlFVY3NRMEZCUXl4RlFVTnlRMG9zUlVGQlRTeExRVUZMTEVkQlFVY3NRMEZEZWtJc1EwRkRRU3hUUVVGVFN5eEhRVUZWY0VJc1JVRkJUWEZDTEVWQlFVdERMRVZCUVZkRExFVkJRV0VzUTBFeFJuUkVMRWxCUVVGMFFpeEZRVUZCUXl4RlFUSkdTU3hIUVVGSmMwSXNSVUZCVDNoQ0xFTkJRVWtzUlVGRFdDeFBRVUZQUVN4RlFVRkxMRk5CUVZOeFFpeEZRVUZMUXl4RlFVRlhReXhEUVVGWExFVkJRM0JFTEVkQlFVbEZMRWRCUVZGNlFpeERRVUZKTEVWQlFVY3NRMEZEWml4SFFVRkpjVUlzUlVGQlNTeEpRVUZKTEZkQlExSXNUMEZCVDNKQ0xFVkJRVXNzVTBGQlUzRkNMRU5CUVVjc1JVRkROVUlzU1VGQlNYQkNMRVZCUVVGdlFpeEZRVUZKTEd0Q1FVRktMRTFCUVVGd1FpeEZRVUZ4UWl4SlFVRkpSQ3hIUVVONlFpeE5RVUZOTEVsQlFVa3NWVUZCVlN4NVJFRkJlVVFzUlVGSGVrVnhRaXhGUVVGSkxHZENRVU5LUVN4RlFVRkpMR2RDUVVGblFpeEpRVUZKY2tJc1EwRkJTU3hGUVVVMVFuRkNMRVZCUVVrc1owSkJRV3RDTEVsQlFVa3NTVUZCU1N4RFFVRkRja0lzUTBGQlNTeERRVUZETEVWQlEzaERRU3hGUVVGUFFTeEZRVUZMTEZGQlFWRnhRaXhGUVVGSkxFZEJRVWNzUTBGRmJrTXNRMEZEUVN4SlFVRkpaQ3hGUVVORlRTeEZRVUZQWVN4RlFVRlBNVUlzUTBGQlNTeEZRVU5zUWtFc1JVRkRRWEZDTEVWQlFVa3NTVUZCU1N4WFFVRlhja0lzUlVGQlRTeERRVUZGTEZOQlFWVXlRaXhIUVVGTmNFSXNSVUZCVTI5Q0xFTkJRVWNzUTBGQlF5eEZRVU42UkhCQ0xFbEJRMFJCTEVWQlFWTlVMRWRCUVdGMVFpeEZRVUZKTEVsQlFVa3NUMEZCVHl4TFFVRk5VaXhEUVVGSkxFZEJRMjVFTEVsQlFVMUZMRVZCUVZGSUxFZEJRV1ZETEVWQlFVMU9MRVZCUVZGakxFTkJRVWNzUlVGRE1VTk9MRVZCUVUwc1QwRkJVeXhKUVVObVRTeEZRVUZKTEdkQ1FVRnBRbTVDTEVWQlFVRnRRaXhGUVVGSkxHZENRVUZLTEV0QlFVRnVRaXhGUVVGeFFpeEhRVUZMWVN4RlFVRk5MRTlCUVZNc1IwRkRiRVVzU1VGQlRXRXNSVUZCVFN4UFFVRlBja0lzUlVGQlR5eFhRVUZqTEZkQlEyeERRU3hGUVVGUExGVkJRVlZOTEVWQlFVMVJMRVZCUVV0RExFVkJRVmRETEVOQlFWY3NSVUZEYkVSa0xFVkJRVk5KTEVOQlFVa3NSVUZEVkdkQ0xFZEJRV2RDYUVJc1JVRkJUVkVzUlVGQlMwTXNSVUZCVjBNc1EwRkJWeXhGUVVOcVJGWXNSVUZCU3l4VFFVRlRVU3hGUVVGTFF5eEZRVUZYUXl4RFFVRlhMRVZCUTI1RUxFOUJRVXRTTEVWQlJVVk9MRVZCUVZOSkxFTkJRVWtzUjBGQlMyVXNSVUZCU1N4RFFVRkRMRWxCUVUwc1MwRkJUMEVzUlVGQlNTeERRVUZETEVsQlFVMHNTVUZEYUVRc1IwRkJSMklzUTBGQlN5eEpRVUZKWVN4RFFVRkhMRWRCUTJZc1IwRkJSMklzUTBGQlN6dEJRVUZCTEVWQlFVdE5MRVZCUVVrc1RVRkJUU3hIUVVGSFR5eERRVUZITEVkQlNIaENRU3hEUVVsbUxFTkRla2hCTEZOQlFWTkZMRWRCUVdNc1EwRkJSU3hKUVVGQlF5eEZRVUZMTEUxQlFVRkRMRU5CUVUwc1JVRkJSME1zUlVGQlMwTXNSVUZCVjBNc1JVRkJZU3hEUVV4d1JTeEpRVUZCUXl4RlFVRkJReXhGUVUxSkxFZEJRVTBzUTBGQlJTeGpRVUZCUXl4RlFVRmxMRWxCUVVGRExFVkJRVXNzVDBGQlFVTXNSVUZCVVN4WFFVRkJReXhGUVVGWkxGRkJRVk1zUTBGQlJTeGpRVUZCUXl4RlFVRmxMRlZCUVVGRExFVkJRVmNzVjBGQlFVTXNRMEZCVnl4RFFVRkZMRVZCUVVsWUxFVkJRMnhIV1N4RlFVRmpReXhGUVVGUFppeERRVUZITEVkQlFVdEJMRVZCUVVrc1UwRkJXU3hMUVVOcVJDeEhRVUZKWVN4RlFVRlpMRU5CUTFvc1IwRkJTVU1zUlVGRFFTeE5RVUZOTEVsQlFVa3NUVUZCVFN4clJFRkJhMFFzUlVGRmRFVXNSMEZCU1VVc1JVRkJZV2hDTEVOQlFVY3NSMEZCVFN4RFFVRkRaU3hGUVVGUFppeERRVUZITEVkQlFVc3NUMEZCVDBFc1IwRkJVU3hUUVVGWExFTkJRMmhGTEVsQlFVMXBRaXhGUVVGTkxEWkVRVU5hTEUxQlFVMHNTVUZCU1N4TlFVRk5RU3hEUVVGSExFTkJRM1pDTEVOQlEwb3NRMEZEUVN4SlFVRkpReXhGUVVGakxFTkJRVU5NTEVsQlEyUXNRMEZCUTJJc1IwRkRSMk1zUjBGQlkySXNSMEZCVXl4TlFVRlJMRU5CUVVORExFVkJRVWtzVVVGRGNrTmpMRVZCUVdGb1FpeERRVUZITEVsQlEyWnRRaXhGUVVGVGJrSXNRMEZCUnl4RlFVTlFRU3hGUVVGSkxFOUJRVk52UWl4RlFVRlBMR05CUVdkQ2NFSXNSVUZCU1N4UFFVRlRiMElzUlVGQlR5eGpRVU40UkN4UFFVRlBjRUlzUjBGQlVTeFhRVU0zUWtVc1JVRkJUU3hQUVVGUExFOUJRVThzUTBGQlF5eEZRVUZIUVN4RlFVRkxMRU5CUTNwQ0xHTkJRV1VzUjBGRFppeFpRVUZoTEVOQlFVTm5RaXhKUVVGblFrd3NSMEZCWXl4RFFVRkRUaXhIUVVNM1F5eFBRVUZSUlN4RlFVRlRReXhEUVVOeVFpeERRVUZETEVWQlEwUXNTVUZCU1Zjc1JVRkJhVUlzUjBGRGFrSkRMRVZCUVZrc1IwRkRXa01zUlVGQlRVTXNSMEZCVlhoQ0xFVkJRVXRGTEVWQlFVc3NTVUZCVDIxQ0xFVkJRV2xDTEVkQlFVOHNTVUZCVDBNc1JVRkJXU3hGUVVGTExFVkJRM0pHTEVkQlFVa3NRMEZCUTBvc1IwRkJaU3hEUVVGRGFFSXNSVUZCU1N4UlFVRlZjVUlzUlVGQlNTeFBRVUZUTEV0QlFVMHNRMEZEYkVRc1IwRkJTVllzUlVGRFFTeE5RVUZOTEVsQlFVa3NUVUZCVFN3NFJVRkJPRVVzUlVGRGJFZExMRVZCUVdNc1JVRkRiRUlzUTBGRFFTeEhRVUZKYUVJc1JVRkJTU3hSUVVOS0xFZEJRVWxMTEVkQlFXbENUaXhIUVVGVExFdEJRekZDTEU5QlFVbHZRaXhIUVVGclFteENMRWRCUTJ4Q1FTeEZRVUZWTEVWQlExQnZRaXhKUVVGUkxFZEJRVXNzU1VGQlRVd3NSVUZCWXl4TFFVRkxTeXhEUVVGSExFZEJRVXRCTEZWQlIyNUVhRUlzUjBGQmFVSXNRMEZCUTAwc1IwRkJaMEphTEVkQlFWTXNUVUZCVVdsQ0xFVkJRM3BFTEU5QlFVRkxMRVZCUVUwc1MwRkJTMEVzUTBGQlJ5eEhRVU5XVkN4SFFVRmpMRU5CUVVOUExFVkJRMlpGTEVkQlFVOUZMRWRCUVZsR0xFVkJRVXR5UWl4RlFVRkpMRTlCUVZGVExFVkJRV05ITEVOQlFWVXNRMEZCUXl4RlFVVjRSRkVzUjBGQllXeENMRWRCUTJ4Q1FTeEZRVUZaTEVWQlExUnRRaXhGUVVWUVJpeEpRVU5CVUN4RlFVRmhMRTFCUTJKSkxFZEJRMGxLTEVsQlEwRlRMRWRCUVU5RkxFZEJRVmxHTEVWQlFVdHlRaXhGUVVGSkxFOUJRVkZUTEVWQlFXTkhMRU5CUVZVc1EwRkJReXhIUVVOcVJWTXNSVUZCVFN4TFFVRkxRU3hEUVVGSE8wRkJRVUVzUlVGQlMyUXNRMEZCVFN4TlFVZDZRbU1zUlVGQlRTeEhRVUZIUVN4RFFVRkhMRWxCUTFKVUxFbEJRMEZUTEVkQlFVOUZMRWRCUVZsR0xFVkJRVXR5UWl4RlFVRkpMRTlCUVZGVExFVkJRV05ITEVOQlFWVXNRMEZCUXl4SlFVVnlSU3hKUVVGSldTeEZRVUZMUXl4RlFVRkxReXhGUVVOV1lpeEZRVUZQWkN4RFFVRkxMRWRCUTFwNVFpeEZRVUZOTEVOQlFVTXNRMEZCUTNwQ0xFVkJRVTBzV1VGRFpEQkNMRVZCUVUweFFpeEZRVUZOTEdOQlExb3lRaXhGUVVGbE0wSXNSVUZCVFN4VlFVZHlRbmxDTEVWQlFVMHNSMEZEVGtNc1JVRkJUU3hMUVVOT1F5eEZRVUZsTEV0QlExZ3pRaXhIUVVGVExFOUJRVTlCTEVkQlFWVXNWMEZETVVKQkxFVkJRVkZQTEVWQlFVa3NWMEZCVjFBc1EwRkJTeXhKUVVWd1EwTXNSVUZCU1N4WlFVRmpMRWRCUTJRc1EwRkJRMmRDTEVkQlFXVXNRMEZCUTBvc1IwRkJZMHNzUlVGQlUyeENMRU5CUVVzc1NVRkROME5ETEVWQlFVa3NZMEZCWjBKeFFpeEZRVUZKTEU5QlFWTXNSMEZEY2tORUxFVkJRVmtzUjBGRFVpeERRVUZEVml4SFFVTkVSaXhGUVVGWExGRkJRVlVzUjBGRGNrSXNRMEZCUTFJc1JVRkJTU3hSUVVOTUxFTkJRVU5uUWl4SFFVTkVWeXhIUVVGTk5VSXNRMEZCU3l4SFFVTllMRU5CUVVOQkxFVkJRVTBzVFVGRFVDeERRVUZEUVN4RlFVRk5MRXRCUTFBc1EwRkJRMEVzUlVGQlRTeFRRVVZRUXl4RlFVRkpMRTlCUVZOQkxFVkJRVWtzVDBGQlR5eFZRVUZWTEVOQlFVTXNSMEZGZGtNc1NVRkJTVFJDTEVWQlFXMUNMRWRCUTJwQ1F5eEZRVUZYVUN4SFFVRlZka0lzUlVGQlQwTXNSVUZCU3l4SlFVRlBORUlzUlVGQmJVSXNSMEZCVHl4SlFVRlBVaXhGUVVGWkxFVkJRVXNzUlVGRE5VWlZMRVZCUVVzc1NVRkRWQ3hIUVVGSmJFSXNSMEZCWTFrc1IwRkJUME1zUlVGQlN5eERRVVV4UWl4SFFVUkJTeXhGUVVGTFRpeEZRVUZOTzBGQlFVRXNSVUZCVHl4SFFVTmtReXhGUVVGTExFTkJRMHdzU1VGQlRVMHNSVUZCUzNSQ0xFVkJRV05uUWl4RFFVRkhMRVZCUXpWQ1N5eEhRVUZOTzBGQlFVRXNSVUZCUzBVc1IwRkJZMFFzUlVGQlNTOUNMRVZCUVVrc1RVRkJUU3hEUVVGRExFVkJRelZETEVOQlEwazJRaXhKUVVGaExFbEJRVTBzUTBGQlF6ZENMRVZCUVVrc1QwRkRjRUk0UWl4SlFVRlBPMEZCUVVFc1NVRkRVRUVzUlVGQlN6dEJRVUZCTzBGQlFVRXNSMEZIVkVFc1IwRkJUVHRCUVVGQkxFVkJRVXM1UWl4RlFVRkpMRTFCUVUwc1JVRkZOMElzVTBGRFV5eERRVUZEWjBJc1IwRkJaVVlzUlVGQllXWXNRMEZCU3l4RlFVRkhMRU5CUXpGRExFbEJRVTFyUXl4RlFVRk5TaXhGUVVGVExFTkJRVU1zUlVGRGFFSkxMRVZCUVUxTUxFVkJRVk1zVVVGQlVUdEJRVUZCTEVOQlFVa3NSVUZETTBKTkxFVkJRV0ZFTEVsQlFWRXNSMEZEY2tKRkxFbEJRVTlvUXl4SFFVRkJSQ3hGUVVGQlNDeEZRVUZKTEZOQlFVb3NTMEZCUVVjc1JVRkJZMG9zUlVGQlRTeFBRVUZ3UWl4TFFVRkJTeXhGUVVFMFFrd3NSVUZCVFN4TlFVRk5MRk5CUVZjc1JVRkRhRVVzUjBGQlNXOURMRWRCUVdNc1EwRkJRME1zUjBGQlRTeERRVU55UWl4SlFVRkpReXhIUVVGbExFZEJRMjVDTEVkQlFVbEdMRWxCUVdWR0xFbEJRVkVzUzBGQlQwRXNTVUZCVVN4TFFVRk5MRU5CUXpWRExFbEJRVWxMTEVWQlFVMVVMRVZCUVZNc1VVRkJVU3hIUVVGSExFVkJRekZDU1N4SlFVRlJMRXRCUTFKTExFbEJRVkVzU1VGRFVrRXNSVUZCVFVvc1IwRkRUa3dzUlVGQlUxTXNSVUZCVFN4RFFVRkRMRWxCUVUwc1RVRkRkRUpCTEVWQlFVMVVMRVZCUVZNc1VVRkJVU3hKUVVGTFV5eEZRVUZOTEVOQlFVTXNTVUZGYmtOQkxFbEJRVkVzU1VGQlRVb3NSVUZCVFVrc1MwRkRjRUpFTEVkQlFXVXNSMEZEZGtJc1EwRkRTMEVzUzBGRFJGQXNSVUZCU3p0QlFVRkJMRVZCUVVzNVFpeEZRVUZKTEUxQlFVMHNSMEZETlVJc1EwRkRTaXhOUVVOVE5rSXNTVUZCWVN4SlFVRk5RU3hGUVVGVExFTkJRVU1zU1VGQlRUdEJRVUZCTEV0QlEzaERReXhGUVVGTExFbEJSVlFzVDBGQlFWUXNSMEZCVDFNc1JVRkJTMFFzUlVGRFVqZENMRVZCUVVrc1QwRkRRVFJDTEVkQlFXOUNNMElzUjBGRGNFSkJMRVZCUVZVc1JVRkZWSGxDTEVkQlFXZENMRU5CUVVORkxFVkJRM1JDVUN4SFFVRlBSU3hIUVVGWlJpeEZRVUZMY2tJc1JVRkJTU3hQUVVGUlV5eEZRVUZqYVVJc1EwRkJXU3hEUVVGRExFVkJSVEZFVGl4SFFVRmhiRUlzUjBGRGJFSkJMRVZCUVZrc1JVRkZWRzFDTEVOQlExZ3NRME12U1VFc1UwRkJVMnRDTEVkQlFVdERMRVZCUVZWRExFVkJRVk1zUlVGRGVrSkVMRWxCUVdFc1UwRkJWMEVzU1VGQllTeFZRVU5xUXl4UFFVRlBMRk5CUVZrc1lVRkJaU3hSUVVGUkxGbEJRekZETEZGQlFWRXNXVUZCV1VNc1EwRkJUeXhGUVVVelFpeFJRVUZSTEV0QlFVdEJMRU5CUVU4c1JVRkZhRU1zUTBORVFTeEpRVUZOUXl4SFFVRlpMRXRCUTFwRExFZEJRVkVzUTBGRFZpeFRRVUZWUXl4SFFVRlRRU3hKUVVGVlJpeEpRVU40UWl4UFFVRlBSU3hIUVVGVkxGVkJRVmxCTEVWQlFVMHNZMEZCWjBKR0xFZEJRM2hFTEZGQlFWTXNUVUZEVkN4SlFVRkxMREJDUVVOTUxFdEJRVTBzVDBGRFRpeFJRVUZUTEVsQlFVMHNUMEZCVHl4UFFVRlBMRWxCUVVsSExFVkJRVThzVDBGQlQwZ3NSVUZCVXl4RFFVRkRMRVZCUVVjc1EwRkRlRVFzVjBGQldVa3NSVUZEYUVJc1EwRkJReXhGUVVORUxGVkJRVmNzU1VGQlRVb3NSVUZEY2tJc1JVRkRUVXNzUjBGQllTeERRVUZEUXl4RlFVRkxReXhMUVVGVFRpeEhRVUZOTEZOQlFWTk5MRU5CUVVjc1IwRkRMME5ETEVWQlFWTkVMRU5CUVVjc1NVRkRVaXhEUVVGRFFTeEZRVUZKTEUxQlFWRkJMRVZCUVVrc1QwRkJVMG9zUlVGQlR5eFJRVU5zUTBZc1IwRkJUU3hUUVVGVFRTeEZRVUZKTEV0QlFVc3NTMEZETlVKRUxFZEJRVUVzV1VGQlFVRXNSVUZCU3l4SlFVRkpMRTlCUVU4c1MwRkJTeXhMUVVGTFJ5eEhRVUZQUVN4RlFVRkpMRTFCUVZGU0xFZEJRVTBzUzBGQlQxRXNSVUZCU1N4VlFVTnNSU3hUUVVGVFRDeEhRVUZuUWtVc1JVRkJTMGtzUlVGQlMxSXNSVUZCVHl4RFFVVjBReXhIUVVSQlFTeEZRVUZSU1N4SFFVRlBTeXhIUVVGUlZDeERRVUZMTEVWQlFVbEJMRVZCUVUwc1VVRkJVVWtzUlVGQlNTeEhRVUZITEVWQlFVbEtMRVZCUTNKRVZTeEhRVUZOVml4RFFVRkxMRVZCUTFnc1VVRkJWMWNzUzBGQlRWZ3NSVUZCVFN4TlFVTnVRbGtzUjBGQlYxSXNSVUZCUzBrc1JVRkJTMGNzUTBGQlJTeFZRVU4wUWl4TlFVRk5MRkZCUVZGWUxFTkJRVXNzUlVGRGVFSXNVVUZCVjFjc1MwRkJUVmdzUlVGRFlsa3NSMEZCVjFJc1JVRkJTMGtzUlVGQlMwY3NRMEZCUlN4UFFVVXpRa01zUjBGQlYxSXNSVUZCUzBrc1JVRkJTMUlzUTBGQlN5eERRVU5zUXl4RFFVTkJMRk5CUVZOWkxFZEJRVmRTTEVWQlFVdEpMRVZCUVV0U0xFVkJRVThzUTBGRGFrTXNTVUZCVFdFc1JVRkJVMVFzUjBGQlQwc3NSMEZCVVZRc1EwRkJTeXhGUVVGSlFTeEZRVUZOTEZGQlFWRkpMRVZCUVVrc1IwRkJSeXhGUVVGSlNpeEZRVU5vUlN4SFFVRkpMRU5CUVVOakxFZEJRVTFFTEVOQlFVMHNSVUZEWWl4TlFVRk5MRWxCUVVrc1RVRkJUU3d5UTBGQk1rTXNSVUZETDBRc1NVRkJUVVVzUlVGQlUwWXNSVUZCVHl4UFFVRlBMRXRCUVUxVUxFVkJRVXNzUjBGQlJ5eEZRVU16UXl4UFFVRlhMRU5CUVVORExFVkJRVXRNTEVOQlFVc3NTVUZCUzJVc1JVRkRia0pRTEdGQlFXVXNTVUZEVmtFc1JVRkJTU3hKUVVGSlNDeERRVUZITEVkQlExcEhMRVZCUVVrc1NVRkJTVWdzUlVGQlMwd3NRMEZCU3l4RlFVVnFRbEVzWVVGQlpTeEpRVU53UWtFc1JVRkJTU3hKUVVGSlNDeERRVUZITEVWQlJVd3NUMEZCVHl4VlFVRlZMR1ZCUVdVc1MwRkJTMGNzUlVGQlMwZ3NRMEZCUnl4SFFVTnVSQ3hQUVVGUExHVkJRV1ZITEVWQlFVdElMRVZCUVVzc1EwRkROVUlzVFVGQlFVd3NSVUZEUVN4VFFVRlZMRWRCUTFZc1YwRkJXU3hIUVVOYUxHRkJRV01zUlVGRGJFSXNRMEZCUXl4RlFVZFVMRTlCUVU5UkxFTkJRMWdzUTBOMlJFRXNVMEZCVTFFc1IwRkJaVU1zUlVGQlMwTXNSVUZCU3l4RFFVRkZMRWxCUVVGRExFVkJRVXNzVFVGQlFVTXNRMEZCVFN4RlFVRkhMRU5CUXpsRExFZEJRVWxETEVWQlFVOUdMRU5CUVVjc1IwRkJTMEVzUlVGQlNTeFhRVU51UWtFc1JVRkJTU3hYUVVGWFJpeEZRVUZMUXl4RlFVRkxSU3hEUVVGTExGVkJSWHBDUlN4SFFVRlhUQ3hGUVVGTFJTeERRVUZITEVWQlEzaENTU3hIUVVGblFrNHNSVUZCUzBNc1JVRkJTMFVzUTBGQlN5eE5RVU01UWl4RFFVTkVMRWxCUVUxSkxFVkJRVkZETEVkQlFVdE9MRVZCUVVzc1IwRkJTVVlzUTBGQlJ5eEZRVU12UWl4SFFVRkpReXhoUVVGbExFbEJRMlpCTEVWQlFVa3NTVUZCU1Uwc1JVRkJUME1zUjBGQlMwd3NSVUZCVDBrc1JVRkJUMUFzUTBGQlJ5eERRVUZETEZWQlJXcERReXhoUVVGbExFbEJRM0JDUVN4RlFVRkpMRWxCUVVsTkxFTkJRVXNzVFVGRldpeERRVU5FTEVsQlFVMUZMRVZCUVZsRExFZEJRV0ZTTEVWQlFVdExMRVZCUVU5UUxFTkJRVWNzUlVGRGVFTlhMRVZCUVZWSUxFZEJRVXRNTEVWQlFVOU5MRVZCUVZkVUxFTkJRVWNzUlVGRGRFTlRMRXRCUVdGU0xFVkJRMklzVDBGQlR5eGxRVUZsUVN4RlFVRkxVU3hGUVVGWExFTkJRMnhETEUxQlFVOUZMRVZCUTFBc1UwRkJWU3hIUVVOV0xGZEJRVmtzUjBGRFdpeGhRVUZqTEVWQlEyeENMRU5CUVVNc1JVRkZSRllzUlVGQlNWRXNRMEZCVXl4RlFVRkpSU3hEUVVONlFpeERRVU5LTEVOQlEwRXNUMEZCVDFZc1EwRkRXQ3hEUVVOQkxGTkJRVk5UTEVkQlFXRlNMRVZCUVV0TExFVkJRVTlRTEVWQlFVc3NRMEZEYmtNc1IwRkJTVThzU1VGQlZTeExRVU5XTEUxQlFVOHNSMEZEV0N4SFFVRkpMRTlCUVU5QkxFZEJRVlVzVTBGRGFrSXNUMEZCVHl4UFFVRlBRU3hEUVVGTExFVkJRM1pDTEVkQlFVbElMRVZCUVU5R0xFTkJRVWNzU1VGQlMwWXNSMEZCUVN4TlFVRkJRU3hGUVVGTExFdEJRVXNzUTBGRGVrSXNTVUZCVFZrc1JVRkJVME1zUjBGQmRVSmlMRVZCUVVrc1NVRkJTeXhEUVVGRExFTkJRVU1zUlVGRGFrUlpMRVZCUVU4c1VVRkJWU3hKUVVGSkxFbEJRM0pDTEZGQlFWZEZMRXRCUVZGa0xFVkJRVWtzVVVGQlVTeExRVUZMTEVWQlEyaERXU3hGUVVGUExGRkJRVkVzU1VGQlNVVXNSVUZCU3l4TlFVRk5MRVZCUTJ4RFJpeEZRVUZQTEU5QlFWTXNSMEZEYUVKQkxFVkJRVThzWlVGQmFVSXNSMEZEZUVJc1NVRkJUVWNzUlVGQlUySXNSVUZCU1N4VFFVRlRWU3hEUVVGTkxFVkJRMnhETEVkQlFVa3NRMEZCUTFvc1JVRkJTU3hoUVVGakxFTkJRMjVDTEVsQlFVbG5RaXhGUVVGVkxFdEJRVXNzVlVGQlZVUXNRMEZCVFN4RlFVTXZRa01zUlVGQlVTeFBRVUZUTEV0QlEycENRU3hGUVVGVlFTeEZRVUZSTEZWQlFWVXNSVUZCUnl4RlFVRkZMRVZCUVVrc1VVRkRla05ETEVkQlFVdHFRaXhGUVVGSkxFbEJRVWtzVVVGQlVTeFRRVUZWTEd0R1FVRnJSbWRDTEVOQlFVOHNNRU5CUVRCRExFVkJRMnhMYUVJc1JVRkJTU3hoUVVGbExFVkJRM1pDTEVOQlEwRXNUMEZCVDJVc1EwRkRXQ3hEUVVOQkxFOUJRVThzUzBGQlN5eFZRVUZWVWl4RFFVRkxMRU5CUXk5Q0xFTkRkRVJCTEZOQlFWTlhMRWRCUVZkRExFVkJRVXRETEVWQlFVOURMRVZCUVVzc1EwRkRha01zU1VGQlRVTXNSVUZCU1VNc1IwRkJWMG9zUlVGQlN5eFBRVUZYUlN4RFFVRkhMRVZCUTJ4RFJ5eEZRVUZKUkN4SFFVRlhTQ3hGUVVGUExFOUJRVmRETEVOQlFVY3NSVUZETVVNc1QwRkJUeXhKUVVGSlNTeEhRVUZMU0N4RlFVRkhSU3hEUVVGRExFTkJRM2hDTEVOQlEwRXNTVUZCVFVNc1IwRkJUaXhOUVVGTlF5eERRVUZMTEVOQlExQXNXVUZCV1ZBc1JVRkJTME1zUlVGQlVTeExRVUZOTEVOQlF6TkNMRTlCUVU4c1pVRkJaU3hMUVVGTlR5eEhRVUZYTEVOQlFVVXNUVUZCVDBNc1JVRkJTeXhEUVVGRExFVkJRM1JFTEV0QlFVc3NTVUZCVFZRc1JVRkRXQ3hMUVVGTExFMUJRVkZETEVOQlEycENMRU5CUTBFc1RVRkJUVk1zUlVGQlVTeERRVU5XTEVkQlFVa3NRMEZCUlN4SlFVRkJWaXhGUVVGTExFMUJRVUZETEVOQlFVMHNSVUZCU1N4TFFVTnlRaXhQUVVGSlZTeEZRVUZQV0N4RFFVRkhMRWxCUTFaQkxFVkJRVTFCTEVWQlFVa3NUVUZCVFZVc1EwRkJUU3hIUVVOMFFrTXNSVUZCVDFZc1EwRkJTeXhKUVVOYVFTeEZRVUZSUVN4RlFVRk5MRTFCUVUxVExFTkJRVTBzUjBGRGRrSXNTVUZCU1Vnc1JVRkJTMUFzUlVGQlMwTXNRMEZCU3l4RFFVTTVRaXhEUVVOQkxFOUJRVTlYTEVWQlFVZFdMRVZCUVVzc1EwRkRXQ3hKUVVGTlZ5eEZRVUZQV0N4SFFVRkJMRTFCUVVGQkxFVkJRVXNzVTBGQlZ5eEpRVUZKTEVsQlFWRXNRMEZCUXl4RlFVTXhReXhQUVVGUFdTeEhRVUZsV2l4RlFVRkxWeXhGUVVGTkxFbEJRVWtzUTBGRGVrTXNRMEZEUVN4VFFVRlRXQ3hGUVVGTFlTeEZRVUZYUXl4RlFVRmhMRU5CUTJ4RExFOUJRVTlrTEVkQlFVRXNUVUZCUVVFc1JVRkJTeXhKUVVOT1pTeEhRVUZqTEV0QlFVMW1MRVZCUVV0aExFVkJRVmRETEVOQlFWY3NSVUZETDBNc1MwRkJTeXhWUVVGVkxFbEJRVWtzUTBGRE4wSXNRMEZEU2l4RlF6ZENRU3hUUVVGVFJTeEhRVUZ2UWtNc1JVRkJXVU1zUlVGQlMwTXNSVUZCVXl4RFFVcDJSQ3hKUVVGQlF5eEZRVTlKTEZOQlJtRkJMRVZCUVVGR0xFVkJRVWtzVTBGQlNpeExRVUZCUlN4RlFVRmpTQ3hGUVVGWExFMUJRMkpKTEVkQlFUQkNReXhKUVVOc1Ewd3NSVUZCV1VNc1JVRkJTME1zUTBGQlR5eERRVU0zUXl4RFFVTkJMRk5CUVZOSExFZEJRWGxDTEVOQlFVVXNVVUZCUVVNc1JVRkJVeXhOUVVGQlF5eERRVUZOTEVWQlFVZE9MRVZCUVVzc1EwRkJSU3huUWtGQlFVOHNSVUZCYVVJc1ZVRkJRVU1zUlVGQlZ5eFhRVUZCUXl4RlFVRlpMRmxCUVVGRExFVkJRV0VzVlVGQlFVTXNRMEZCVlN4RlFVRkhMRU5CUXpOSUxFZEJRVTBzUTBGQlJTeFBRVUZCUXl4RlFVRlJMRkZCUVZNc1EwRkJSU3hqUVVGQlF5eERRVUZqTEVOQlFVVXNSVUZCU1dJc1JVRkRla05qTEVWQlFWVXNUMEZCVHl4UFFVRlBMRU5CUVVNc1JVRkJSMlFzUlVGQlN5eERRVUZGTEU5QlFWRlRMRVZCUVZrc1MwRkJUU3hKUVVGTExFTkJRVU1zUlVGRGNrVk5MRVZCUVZrc1IwRkRWa01zUlVGQlVTeERRVUZETEVWQlEyWXNVVUZCVTBNc1JVRkJTU3hGUVVGSFFTeEZRVUZKV0N4RlFVRk5MRTlCUVZFc1JVRkJSVmNzUlVGQlJ5eERRVU51UXl4SlFVRk5ReXhGUVVGUFdpeEZRVUZOVnl4RFFVRkRMRVZCUTJoQ1dpeEZRVUZWTEV0QlEyUXNSMEZCU1dNc1JVRkJUMFFzUTBGQlNTeEZRVU5RTEVOQlFVTklMRWRCUVdGSExFVkJRVXNzWVVGRGJrSkdMRVZCUVUwc1MwRkJTeXhGUVVGRkxFVkJRMnBDU1N4SFFVRnBRbkJDTEVWQlFVdG5RaXhGUVVGUFJTeEZRVUZMTEdOQlFXVklMRU5CUVZNc1JVRkRkRVJITEVWQlFVc3NWVUZEVEdJc1JVRkJWV0VzUlVGQlN5eHBRa0ZGWkVjc1JVRkJUMGdzUTBGQlNTeEZRVUZITEVOQlEyNUNMRWxCUVUxSkxFVkJRVXRJTEVWQlFVOUVMRVZCUVVzc1IwRkJSeXhGUVVGSlFTeEZRVUZMTEVsQlFVMHNTMEZEY2tOSkxFbEJRMGtzUTBGQlExQXNSMEZCWVU4c1JVRkJSeXhoUVVOcVFrNHNSVUZCVFN4TFFVRkxMRVZCUVVVc1JVRkRha0pKTEVkQlFXbENjRUlzUlVGQlMyZENMRVZCUVU5TkxFVkJRVWNzWTBGQlpWQXNRMEZCVXl4RlFVVm9SU3hEUVVOQlFTeEZRVUZaTEVkQlExb3NTVUZCU1ZFc1JVRkJUVU1zUjBGQlZVNHNSVUZCVFVvc1JVRkJVeXhKUVVGUFZDeEZRVUZWTEV0QlFVOHNTVUZCVDFVc1JVRkJXU3hGUVVGTExFVkJReTlGVml4SlFVTkJhMElzUjBGQlQwVXNSMEZCV1VZc1JVRkJTMlFzUlVGQldVa3NSVUZCWTFJc1EwRkJUeXhEUVVGRExFZEJRekZFVlN4SFFVRmhWaXhKUVVOaVZTeEZRVUZaTEVsQlEyaENReXhGUVVGTkxFdEJRVXRVTEVWQlFXdENaMElzUTBGQlJ5eERRVU53UXl4RFFVTkJMRWxCUVVsQkxFVkJRMG9zUjBGQlNWQXNSVUZCVFN4VFFVRlhMRVZCUTJwQ1R5eEZRVUZOWml4RlFVRlZMRTFCUVZGQkxFVkJRVlVzVVVGRmFrTXNRMEZEUkdVc1JVRkJUVkFzUlVGQlRTeERRVUZETEVWQlEySXNVVUZCVTBNc1JVRkJTU3hGUVVGSFFTeEZRVUZKUkN4RlFVRk5MRTlCUVZFc1JVRkJSVU1zUlVGQlJ5eERRVU51UXl4SlFVRk5VeXhGUVVGUFZpeEZRVUZOUXl4RFFVRkRMRVZCUTNCQ1RTeEhRVUZQUnl4RlFVRlBPMEZCUVVFc1JVRkJTMlFzUTBGQlRTeEhRVUZIWXl4RFFVRkpMRWRCUVVzN1FVRkJRU3hEUVVONlF5eERRVU5LTEVOQlEwRXNUMEZCU1hKQ0xFZEJRMEZyUWl4SFFVRlBPMEZCUVVFc1JVRkJUMGtzUjBGQlkyUXNSVUZCWTFJc1EwRkJUeXhGUVVGSFR5eERRVUZOTEVWQlEzUkVSQ3hIUVVOQlFTeEZRVUZWTEVkQlJWUkpMRWRCUVdGTUxFZEJRMnhDUVN4RlFVRlpMRVZCUTFSaExFTkJRMWdzUTBGRFFTeFRRVUZUY0VJc1IwRkJkMElzUTBGQlJTeE5RVUZCUnl4RFFVRk5MRVZCUVVkT0xFVkJRVXNzUTBGQlJTeFZRVUZCVVN4RlFVRlhMRmRCUVVGRExFTkJRVmNzUlVGQlJ5eERRVU40UlN4SFFVRk5MRU5CUVVVc1QwRkJRVWNzUlVGQlVTeFhRVUZCWjBJc1JVRkJXU3h6UWtGQmRVSkRMRVZCUVZjc1VVRkJVeXhEUVVGRkxHTkJRVUZvUWl4RFFVRmpMRU5CUVVVc1JVRkJTV0lzUlVGRE4wWlRMRWRCUVdOdFFpeEZRVU5rTEVsQlFVMWtMRVZCUVZVc1QwRkJUeXhQUVVGUExFTkJRVU1zUlVGQlIyUXNSVUZCU3l4RFFVTnVReXhQUVVGUlV5eEZRVU5TTEU5QlFWRXNSMEZEVWl4TFFVRk5MRWxCUTFZc1EwRkJReXhGUVVOSGNVSXNSVUZCWVN4SFFVTmlReXhGUVVGbExFVkJRMkptTEVWQlFWRXNRMEZCUXl4RlFVTm1MRkZCUVZORExFVkJRVWtzUlVGQlIwRXNSVUZCU1Znc1JVRkJUU3hQUVVGUkxFVkJRVVZYTEVWQlFVY3NRMEZEYmtNc1NVRkJUVU1zUlVGQlQxb3NSVUZCVFZjc1EwRkJReXhGUVVOb1Fsb3NSVUZCVlN4TFFVTmtMRWRCUVVsakxFVkJRVTlFTEVOQlFVa3NSVUZEVUVFc1JVRkJTeXhoUVVOTVJpeEZRVUZOTEV0QlFVc3NSVUZCUlN4RlFVTnFRa2tzUjBGQmFVSndRaXhGUVVGTFowSXNSVUZCVDBVc1JVRkJTeXhqUVVGbExFVkJRVXNzUlVGRGJFUkJMRVZCUVVzc1ZVRkRUR0lzUlVGQlZXRXNSVUZCU3l4cFFrRkZaRWNzUlVGQlQwZ3NRMEZCU1N4RlFVRkhMRU5CUTI1Q0xFbEJRVTFKTEVWQlFVdElMRVZCUVU5RUxFVkJRVXNzUjBGQlJ5eEZRVUZKUVN4RlFVRkxMRWxCUVUwc1MwRkRja05KTEVsQlEwbEJMRVZCUVVjc1lVRkRTRTRzUlVGQlRTeExRVUZMTEVWQlFVVXNSVUZEYWtKSkxFZEJRV2xDY0VJc1JVRkJTMmRDTEVWQlFVOU5MRVZCUVVjc1kwRkJaU3hGUVVGTExFVkJRMmhFUVN4RlFVRkhMRlZCUTBoUkxFVkJRV0VzUzBGRmNrSXNTVUZCVFVVc1JVRkJTMklzUlVGQlQwUXNSVUZCU3l4TFFVRkxMRVZCUVVsQkxFVkJRVXNzVFVGQlVTeExRVU42UTJNc1IwRkRTVUVzUlVGQlJ5eFZRVU5JTTBJc1JVRkJWVEpDTEVWQlFVY3NVMEZEWWtFc1JVRkJSeXhuUWtGRFNFWXNSVUZCWVN4TFFVVmFXaXhGUVVGTExFOUJRVk1zVDBGQlVVa3NSMEZCUVN4TlFVRkJRU3hGUVVGSkxGZEJReTlDYWtJc1JVRkJWV2xDTEVWQlFVY3NVVUZGY2tJc1EwRkRTV3BDTEVsQlEwRjVRaXhGUVVGaExFbEJRMnBDTEVsQlFVbFFMRVZCUVUxRExFZEJRVlZPTEVWQlFVMUtMRVZCUVZNc1NVRkJUMVFzUlVGQlZTeEpRVUZMTEVWQlEzSkVXU3hGUVVGSldDeEZRVUZOTEU5QlFWTXNTVUZEYmtKcFFpeEhRVUZQTEV0QlExQnNRaXhKUVVOQmEwSXNSMEZCVDBVc1IwRkJXVVlzUlVGQlMyUXNSVUZCV1Vrc1JVRkJZMUlzUTBGQlR5eERRVUZETEVkQlF6RkVMRU5CUVVONVFpeEpRVUZsWkN4RlFVRk5MRTlCUVZObExFZEJRV2RDVWl4RlFVRkpMRk5CUVZNN1FVRkJRU3hEUVVGSkxFdEJRMmhGVHl4RlFVRmhMRWxCUTJwQ1pDeEZRVUZOTEV0QlFVdFBMRU5CUVVjc1JVRkRaRkVzUlVGQlpXWXNSVUZCVFN4TlFVTjZRaXhEUVVOQkxFZEJRVTBzUTBGQlJTeE5RVUZCYVVJc1JVRkJUeXhKUVVGQlF5eERRVUZKTEVWQlFVa3hRaXhGUVVOMlFpeEhRVUZKVVN4RlFVRk5MRk5CUVZjc1JVRkRha0lzVDBGQlQybENMRVZCUVZGRExFVkJSMllzUjBGQlNTeERRVUZEU2l4RlFVRlpMRU5CUTJJc1NVRkJUVXNzUlVGQlRXNUNMRVZCUVUwc1QwRkJUeXhEUVVGRGIwSXNSVUZCUzFZc1NVRkJVMVVzUlVGQlRWWXNSVUZCU3l4UFFVRlRMRVZCUVVjc1EwRkJReXhGUVVOb1JVa3NSVUZCWVRsQ0xFVkJRVWtzVVVGQlVTeFZRVUZaTEVkQlFVdHRReXhGUVVGTmJrTXNSVUZCU1N4UlFVRlJMRk5CUTJoRkxFTkJRMEVzUjBGQlNUaENMRVZCUVZrc1EwRkRXaXhKUVVGSlVDeEZRVUZOVlN4RlFVTldMRkZCUVZkUUxFdEJRVkZXTEVWQlEyWlBMRWRCUVU5SExFVkJRVTg3UVVGQlFTeEZRVUZMUlN4RFFVRlZMRWRCUVVkb1FpeERRVUZOTEVkQlFVZGpMRU5CUVVrc1IwRkJTenRCUVVGQkxFVkJRM1JFTEUxQlFVOHNSMEZCUjBnc1EwRkJSenRCUVVGQkxFVkJRVXRZTEVOQlFVMHNSMEZCUjNOQ0xFTkJRVWNzUlVGRGJFTXNTMEZGU1N4UFFVRlBMRWRCUVVkRUxFTkJRVXNzUjBGQlIwb3NRMEZCVXl4SFFVRkhZaXhGUVVGTkxFdEJRVXNzUjBGQlJ5eERRVUZETEVkQlFVZGhMRU5CUVZNc1IwRkJSMHNzUTBGQlJ5eEZRVWN6UlN4RFFVTkJMRk5CUVZOa0xFZEJRV2xDTEVOQlFVVXNUMEZCUVZJc1JVRkJVU3hSUVVGVExFTkJRVVVzWTBGQlFVTXNRMEZCWXl4RFFVRkZMRVZCUVVkSExFVkJRVTlZTEVWQlFWTlZMRVZCUVZjc1EwRkhla1lzUjBGR1NWWXNSMEZCVjFVc1NVRkRXRllzUlVGQlZVRXNSVUZCVVN4UlFVRlJMRTlCUVZFc1JVRkJSU3hIUVVOd1EwRXNSVUZCVXl4RFFVTlVMRWxCUVUxblF5eEZRVUZMVml4SFFVRmpaQ3hGUVVGalVpeERRVUZQTEVWQlFVZFBMRU5CUVUwc1JVRkRka1JKTEVWQlFVMHNTMEZCUzNGQ0xFVkJRVWNzVlVGQlZTeERRVUZETEVOQlF6ZENMRU5CUTBvc1EwTnlTVUVzVTBGQlUwTXNSMEZCVTBNc1JVRkJUME1zUlVGQlN5eERRVU14UWl4SlFVRk5ReXhGUVVGSlF5eEZRVUZUUml4RFFVRkhMRVZCUVVsQkxFVkJRVWtzVFVGQlVVRXNSVUZEZEVNc1VVRkJWMGNzUzBGQlRVb3NSVUZEWWl4SFFVRkpTeXhGUVVGUFJDeERRVUZGTEVsQlEweEJMRVZCUVVjc1RVRkJVVWdzUjBGQlQwY3NSVUZCUnl4TlFVRlJSaXhIUVVVM1FrTXNSVUZCVTBNc1JVRkJSeXhIUVVGSExFZEJRVXRCTEVWQlFVY3NTVUZCU1N4UlFVRlZSaXhIUVVOeVF5eFBRVUZQUlN4RFFVbDJRaXhEUVVOQkxFbEJRVTFGTEVkQlFVNHNZMEZCYzBKRExFVkJRVmNzUTBGRE4wSXNWMEZCVnl4VFFVRlZMRU5CUTJwQ0xFMUJRVThzZFVKQlExZ3NRMEZEUVN4WlFVRlpReXhGUVVGUkxFTkJRMmhDTEUxQlFVMURMRWRCUVV0RUxFTkJRVTBzUlVGRGFrSXNTMEZCU3l4TlFVRlJMRU5CUVVNc1EwRkRiRUlzUTBGTFFTeFBRVUZQTEV0QlFVdEJMRVZCUVZGRkxFVkJRVXRETEVWQlFVc3NRMEZETVVJc1IwRkJUU3hEUVVGRkxHTkJRVUZETEVWQlFXVXNVMEZCUVVNc1EwRkJVeXhGUVVGSlJpeEZRVU01UWtjc1JVRkJUU3hKUVVGSkxFdEJRVXRPTEVOQlFVMHNSVUZEY2tKUExFVkJRVTBzUTBGQlEyUXNSVUZCUzJVc1NVRkJWU3hEUVVONFFpeEhRVUZKTEU5QlFVOUlMRWRCUVdFc1YwRkRjRUpITEVWQlFWRklMRVZCUVZNc1MwRkJTMGdzUlVGQlMxUXNSVUZCUzJVc1EwRkJTeXhWUVVOb1F5eE5RVUZOTEZGQlFWRklMRU5CUVZFc1IwRkJTeXhEUVVGRFFTeEZRVUZUTEZOQlFWTmFMRU5CUVVjc1JVRkRkRVFzVVVGRFFXVXNTVUZCVlN4UlFVRmhTaXhKUVVOMlFrVXNSVUZCU1N4TlFVRk5MRXRCUVV0SExFZEJRVmRvUWl4RlFVRkxaU3hGUVVGUFRDeERRVUZITEVOQlFVTXNRMEZEYkVRc1JVRkRRU3hIUVVGSlJDeGhRVUZsTEVsQlEyWXNUMEZCVnl4RFFVRkRWQ3hGUVVGTFpTeERRVUZMTEVsQlFVdE9MRVZCUTNaQ1N5eEZRVUZKWkN4RlFVRkxaU3hEUVVGTExGVkJSV0pPTEVkQlFVOHNUMEZCVDBFc1IwRkJVU3hUUVVNelFpeFJRVUZYVkN4TFFVRlBMRTlCUVU4c1MwRkJTMU1zUTBGQlJ5eEZRVU0zUWtzc1JVRkJTV1FzUlVGQlMxTXNSVUZCU1ZRc1EwRkJSeXhEUVVGRExFVkJSWHBDTEU5QlFVa3NUMEZCVDA4c1JVRkJUeXhuUWtGQmJVSXNXVUZEYWtOTkxFVkJRVWtzVFVGQlRTeExRVUZMVGl4RlFVRlBMR05CUVdNc1JVRkZha05OTEVOQlExZ3NRMEZQUVN4SlFVRkpTU3hGUVVGTlF5eEZRVUZYTEVOQk4wUjZRaXhKUVVGQlF5eEZRVGhFVVN4SlFVRkpReXhGUVVOQmFFSXNSVUZCVDJFc1EwRkJTU3hGUVVOWVJ5eEZRVUZSU0N4RlFVTklMRU5CUVVOQkxFZEJRVkVzVDBGQlQwRXNSMEZCVXl4VlFVRlpMRVZCUVVVc1VVRkJVMEVzUjBGRmNrUkhMRVZCUVZFc1NVRkJTVU1zUjBGQlMwb3NSVUZCVFVFc1IwRkJRU3haUVVGQlFTeEZRVUZOTEV0QlFVc3NSVUZIYkVOSExFVkJRVkVzU1VGQlNVTXNSMEZCUzBvc1JVRkJTeXhKUVVGTFFTeEZRVUZMTEV0QlFVc3NSVUZEZWtNc1NVRkJUVXNzUlVGQlQzaENMRWRCUVZNc1MwRkJTeXhOUVVGUGMwSXNSVUZCVFN4SFFVRkhMRVZCUTNKRFJ5eEhRVUZqU2l4RlFVRkJMRXRCUVVzc1UwRkJUQ3haUVVGQlFTeEZRVUZoTEdWQlEycERMRWRCUVVsSExFVkJRVTBzUTBGRFRpeEhRVUZKTEVOQlFVTktMRVZCUTBRc1RVRkJUU3hKUVVGSkxFMUJRVTBzVDBGQlQwVXNSVUZCVFN4SFFVRkhMR05CUVdNc1JVRkZPVU5zUWl4RlFVRlRiMElzUlVGQlN5eExRVUZMTEVkQlFVdEZMRWRCUVdOS0xFVkJRVTBzUzBGQlN5eEZRVU5xUkVVc1JVRkJTeXhOUVVGTkxFMUJRVkZHTEVWQlFVMHNUVUZGZWtKRkxFVkJRVXNzVFVGQlVVWXNSVUZCVFN4TFFVTXpRaXhUUVVOVFJ5eEZRVUZoTEVOQlEyeENMRWxCUVUxRkxFVkJRVWtzUzBGQlN5eE5RVUZOTEZWQlFWVkRMRWRCUVZGSUxFVkJRVmxJTEVWQlFVOU5MRU5CUVVrc1JVRkJTU3hEUVVGRExFVkJReTlFUkN4SlFVRk5MRWRCUTA0c1MwRkJTeXhOUVVGTkxFdEJRVXRNTEVOQlFVc3NSVUZGY2tJc1MwRkJTeXhOUVVGTkxFOUJRVTlMTEVWQlFVY3NSVUZCUjB3c1EwRkJTeXhEUVVOeVF5eE5RVVZKTEV0QlFVc3NUVUZCVFN4TFFVRkxRU3hEUVVGTExFTkJSVGRDTEVOQlEwRXNUMEZCVDNCQ0xFVkJRVXNzUTBGRFVpeEpRVUZOUnl4RlFVRkxUQ3hIUVVGVExFdEJRVXNzVFVGQlQwVXNRMEZCUnl4RlFVTnVReXhQUVVGTFJ5eEZRVVZQTEV0QlFVc3NUVUZCVFN4UFFVRlBMRXRCUVVzc1RVRkJUU3hSUVVGUlFTeERRVUZGTEVWQlFVY3NRMEZCUXl4RlFVTTFReXhQUVVGVExFVkJSbFFzUlVGSFppeERRVU5CTEVsQlFVbElMRVZCUVVzeVFpeEZRVUZaTEVOQmNFZDZRaXhKUVVGQlVpeEZRWEZIVVN4SlFVRk5hRUlzUlVGQlMwd3NSMEZCVXl4TFFVRkxMRTFCUVU5RkxFTkJRVWNzUlVGRE4wSTBRaXhGUVVGUGVrSXNSMEZCUVN4WlFVRkJRU3hGUVVGSkxFMUJRMnBDTEU5QlFWRm5RaXhGUVVGQkxFTkJRVU5STEVkQlFXTjZRaXhGUVVGVE1FSXNRMEZCU1N4RlFVRkpRU3hGUVVGTExFMUJRVkZCTEVsQlFUZERMRXRCUVVGVUxFVkJRWE5FTEUxQlEyeEZMRU5CUTBFc1NVRkJTVzVDTEVWQlFVc3NRMEZEVEN4TlFVRlBMRU5CUVVNc1EwRkJRMFlzUjBGQlV5eExRVUZMTEUxQlFVOUZMRU5CUVVjc1EwRkRja01zUTBGRFFTeEpRVUZKUVN4RlFVRkxaU3hGUVVGUExFTkJRMW9zUzBGQlN5eEpRVUZKTEVsQlFVbE5MRWRCUVV0eVFpeEZRVUZMWlN4RFFVRkxMRVZCUVVjc1JVRkJTU3hEUVVOMlF5eERRVTFCTEU5QlFVOWpMRVZCUVVkdVFpeEZRVUZMYjBJc1JVRkJUU3hEUVVOcVFpeEpRVUZOYWtJc1JVRkJUV2xDTEVWQlFVOHNTVUZCU1VFc1JVRkJVM0JDTEVkQlFVRXNUVUZCUVVFc1JVRkJTeXhUUVVGWExFbEJRVWtzU1VGQlVTeERRVUZETEVWQlEzcEVRU3hIUVVGQkxFMUJRVUZCTEVWQlFVc3NWVUZEVEVFc1JVRkJTU3hUUVVGVFJ5eERRVUZITEVWQlEzQkNMRkZCUVZkaExFdEJRVkVzUzBGQlN5eE5RVU53UWtzc1IwRkJaWEpDTEVWQlFVdEhMRVZCUVV0aExFTkJRVWtzUlVGRGFrTXNUMEZCVDJJc1EwRkRXQ3hEUVVOQkxGTkJRVk5JTEVWQlFVdHpRaXhGUVVGWFF5eEZRVUZoTEVOQlEyeERMRWRCUVVrc1EwRkJRM1pDTEVWQlEwUXNUMEZCVHl4TFFVRkxMRlZCUVZVc1NVRkJTU3hGUVVNNVFpeFJRVUZYWjBJc1MwRkJVU3hMUVVGTExFMUJRM0JDTEVkQlFVa3NRMEZCUTNSQ0xFVkJRVTl6UWl4RFFVRkpMRVZCUTFvc1RVRkJUU3hKUVVGSkxFMUJRVTBzYzBOQlFYTkRMRXRCUVVzc1ZVRkJWVUVzUTBGQlNTeERRVUZETEZWQlFWVXNSVUZGTlVZc1RVRkJTU3hEUVVGRGFFSXNSVUZCU1N4bFFVRnBRaXhMUVVGTExHbENRVUZwUWl4RlFVRkxMRWxCUTJwRVFTeEZRVUZOTEU5QlFVOHNUMEZCVHl4RFFVRkRMRVZCUVVkQkxFVkJRVXNzUTBGQlJTeGpRVUZsTEVWQlFVc3NRMEZCUXl4SFFVTnFSSGRDTEVkQlFXOUNMRXRCUVUxNFFpeEZRVUZMTEVOQlEyeERMR2RDUVVGcFFpeEhRVU5xUWl4VlFVRlhMRU5CUVVVc1RVRkJUeXhKUVVGTExFbEJRVXNzUjBGQlNTeEZRVU5zUXl4WFFVRlpRU3hGUVVGSkxGRkJRVlVzUjBGRE1VSXNXVUZCUVhWQ0xFVkJRMEVzVlVGQlFVUXNRMEZEU2l4RFFVRkRMRU5CUTB3c1EwRkRTaXhGUXpGSlFTeEpRVUZOUnl4SFFVRk5MRU5CUTFJc1YwRkJXU3hOUVVOYUxGRkJRVk1zUjBGRFZDeFZRVUZYUXl4SFFVTllMRWxCUVVzc2QwSkJRMHdzVVVGQlVVUXNSVUZCUzBVc1JVRkJVeXhEUVVOc1FpeFBRVUZMUXl4SFFVRk5TQ3hEUVVGSExFZEJRMVpGTEVWQlFWRXNhVU5CUVdsRExFVkJRM1JEUml4RFFVTllMRVZCUTBFc1YwRkJXU3hEUVVGRFNTeEZRVUZSUXl4RlFVRkxReXhKUVVGUlRDeEhRVUZSTEV0QlFVdEhMRVZCUVZGRExFVkJRVXRETEVOQlFVY3NRMEZEYmtVc1JVTlFRU3hKUVVGTlF5eEhRVUZPTEdOQlFYTkNReXhGUVVGWExFTkJRemRDTEZkQlFWY3NVMEZCVlN4RFFVTnFRaXhOUVVGUExIVkNRVU5ZTEVOQlEwRXNXVUZCV1VNc1JVRkJVU3hEUVVOb1FpeE5RVUZOUXl4SFFVRkxSQ3hEUVVGTkxFVkJRMnBDTEV0QlFVc3NUVUZCVVN4RFFVRkRMRU5CUTJ4Q0xFTkJRMEVzU1VGQlNVVXNSVUZCVHl4RFFVTlFMRXRCUVVzc1RVRkJUU3hMUVVGTFFTeERRVUZMTEVOQlEzcENMRU5CVTBFc1QwRkJUME1zUlVGQlN5eERRVU5TTEVsQlFVMURMRVZCUVUxRExFZEJRVmxHTEVOQlFVY3NSVUZETTBJc1QwRkJTU3hQUVVGUFF5eEhRVUZSTEZOQlExSXNSMEZEUXl4TFFVRkxMRTFCUVUwc1QwRkJUMEVzUlVGQlN5eERRVUZETEVWQlEzcENMRTlCUVZNc1EwRkRlRUlzUTBGRFFTeEpRVUZKUkN4RlFVRkxSeXhGUVVGWkxFTkJRMnBDTEVsQlFVMUdMRVZCUVUxRExFZEJRVmxHTEVOQlFVY3NSVUZETTBJc1IwRkJTU3hQUVVGUFF5eEhRVUZSTEZOQlEyWXNUMEZEU2l4SlFVRk5SeXhGUVVGTExFdEJRVXNzVFVGQlRVZ3NRMEZCUnl4RlFVTjZRaXhOUVVGUExFTkJRVU5GTEVkQlFXTkZMRVZCUVZORUxFTkJRVVVzUlVGQlNVRXNSVUZCUnl4TlFVRlJRU3hEUVVOd1JDeERRVTlCTEVsQlFVbEtMRVZCUVVzc1EwRkRUQ3hKUVVGTlF5eEZRVUZOUXl4SFFVRlpSaXhEUVVGSExFVkJRek5DTEU5QlFVOHNUMEZCVDBNc1IwRkJVU3hWUVVGWlFTeEZRVUZOTEV0QlFVc3NUVUZCVFN4TlFVTjJSQ3hEUVZGQkxFbEJRVWxFTEVWQlFVdEVMRVZCUVU4c1EwRkRXaXhKUVVGTlJTeEZRVUZOUXl4SFFVRlpSaXhEUVVGSExFVkJRek5DTEVkQlFVa3NUMEZCVDBNc1IwRkJVU3hUUVVObUxFMUJRVTBzU1VGQlNTeE5RVUZOTEN0Q1FVRXJRa1FzUTBGQlJ5eEhRVUZITEVWQlEzcEVMRWxCUVUxTkxFVkJRVThzUzBGQlN5eE5RVUZOVEN4RFFVRkhMRVZCUTNaQ1NTeEZRVUZUUXl4RFFVRkpMRWRCUVV0RExFZEJRV05TTEVOQlFVc3NSVUZEY2tOUExFVkJRVXNzVFVGQlVWQXNSVUZGWWl4TFFVRkxMRTFCUVUxRkxFTkJRVWNzUlVGQlNVWXNRMEZETVVJc1EwRkRRU3hQUVVGUFV5eEZRVUZIUXl4RlFVRkxMRU5CUTFnc1NVRkJUVU1zUlVGQlRTeERRVUZETEVWQlExUkVMRWRCUVVFc1RVRkJRVUVzUlVGQlN5eFZRVU5NUVN4RlFVRkpMRk5CUVZORExFTkJRVWNzUlVGRGNFSXNTVUZCU1VNc1JVRkJTU3hGUVVOU0xGRkJRVmRETEV0QlFWRXNTMEZCU3l4TlFVTndRa1lzUlVGQlNTeExRVUZMUnl4SFFVRkxSQ3hGUVVGTkxFOUJRVTlFTEVkQlFVY3NSVUZCUjBZc1EwRkJSeXhEUVVGRExFVkJRM3BETEU5QlFVOURMRU5CUTFnc1EwRkRRU3hUUVVGVFJDeEZRVUZMU3l4RlFVRlhReXhGUVVGaExFTkJRMnhETEU5QlFVdE9MRVZCUlVWUExFZEJRVzlDTEV0QlFVMVFMRVZCUVVzc1EwRkRiRU1zWjBKQlFXbENMRXRCUTJwQ0xGVkJRVmNzUTBGQlJTeE5RVUZQTEVsQlFVc3NTVUZCU3l4SFFVRkpMRVZCUTJ4RExGbEJRV0ZCTEVWQlFVa3NVVUZCVlN4SlFVRk5MRXRCUTJwRExGbEJRVUZOTEVWQlEwRXNWVUZCUVVRc1EwRkRTaXhEUVVGRExFVkJVRlVzUzBGQlN5eFZRVUZWTEVsQlFVa3NRMEZSYkVNc1EwRkRRU3hQUVVGUExFdEJRVXRxUWl4RlFVRlJiMElzUlVGQlMxSXNSVUZCU3l4RFFVTXhRaXhIUVVGTkxFTkJRVVVzVTBGQlFWTXNRMEZCVXl4RlFVRkpWQ3hGUVVObVF5eEZRVUZOTEVsQlFVa3NTMEZCUzJJc1EwRkJUU3hGUVVNelFpeEhRVUZKYjBJc1IwRkJUeXhQUVVGUExGbEJRVmtzVDBGQlQwRXNRMEZCUnl4RlFVRkhMRU5CUTNaRExFbEJRVWxPTEVWQlFVa3NSVUZEVWl4UlFVRlRVQ3hMUVVGTllTeEZRVUZMTEVOQlEyaENMRWRCUVVrc1QwRkJUME1zUjBGQllTeFhRVUZaTEVOQlEyaERMRWxCUVUxc1FpeEZRVUZOYVVJc1lVRkJaU3hKUVVGTllpeEZRVUZMTEU5QlFVOVBMRWRCUVVjc1JVRkRhRVJRTEVWQlFVdGpMRVZCUVZNc1MwRkJTMFFzUlVGQlMycENMRVZCUVV0SkxFTkJRVVVzUTBGRGJrTXNRMEZEUVUwc1JVRkJTU3hOUVVGTkxFdEJRVXRUTEVkQlFWZG1MRVZCUVVrc1QwRkJWMHNzUTBGQlJ5eERRVUZETEVOQlEycEVMRU5CUTBvc1EwRkRRU3hQUVVGUFF5eERRVU5ZTEVOQlEwb3NSVUZEUVN4VFFVRlRVaXhIUVVGWlJpeEZRVUZMTEVOQlEzUkNMRWxCUVVsRExFVkJRVTFKTEVWQlFWTk1MRU5CUVVjc1JVRkJTVUVzUlVGQlNTeE5RVUZSUVN4RlFVTjBReXhQUVVGSlF5eEhRVUZQTEU5QlFVOUJMRWRCUVZFc1YwRkRkRUpCTEVWQlFVMHNUMEZCVDBFc1EwRkJSeXhIUVVOaUxFOUJRVTlCTEVkQlFWRXNWVUZCV1N4UFFVRlBMRlZCUVZWQkxFTkJRVWNzUjBGQlMwRXNSMEZCVHl4RlFVTTFSRUVzUlVGRFFTeEpRVU5XTEVORE0wZEJMRWxCUVUxdFFpeEhRVUZOTEVOQlExSXNWMEZCV1N4TlFVTmFMRkZCUVZNc1IwRkRWQ3hWUVVGWFF5eEhRVU5ZTEVsQlFVc3NkMEpCUTB3c1VVRkJVVVFzUlVGQlMwVXNSVUZCVXl4RFFVTnNRaXhQUVVGTFF5eEhRVUZOU0N4RFFVRkhMRWRCUTFaRkxFVkJRVkVzYTBOQlFXdERMRVZCUTNaRFJpeERRVU5ZTEVWQlEwRXNWMEZCV1N4RFFVRkRTU3hGUVVGUlF5eEZRVUZMUXl4SlFVRlJUQ3hIUVVGUkxFdEJRVXRITEVWQlFWRkRMRVZCUVV0RExFTkJRVWNzUTBGRGJrVXNSVU5hUVN4SlFVRk5ReXhIUVVGVExFTkJRMWdzVTBGQlZVTXNSMEZCVXl4UFFVRlBRU3hIUVVGVkxGTkJRM0JETEZGQlFWTXNSMEZEVkN4SlFVRkxMSGRDUVVOTUxGRkJRVk5ETEVkQlFVOUJMRVZCUTJoQ0xGVkJRVlZETEVWQlFVMURMRVZCUVV0RExFVkJRVmRETEVWQlFXRXNRMEZEZWtNc1QwRkJRVVlzUlVGQlRTeFBRVUZQTEU5QlFVOHNRMEZCUlN4aFFVRmpMRVZCUVVzc1JVRkJSMEVzUTBGQlJ5eEZRVU40UTBjc1IwRkJaMEpLTEVWQlFVMURMRVZCUVV0RExFVkJRVmRETEVOQlFWY3NRMEZETlVRc1EwRkRTaXhGUTFSQkxFbEJRVTFGTEVkQlFWVXNRMEZEV2l4VFFVRlZReXhIUVVGVFFTeEhRVUZUTEV0QlF6VkNMRmRCUVZrc1NVRkJUU3hKUVVGSlF5eEZRVUZQTEVsQlFVa3NSVUZEYWtNc1VVRkJVeXhIUVVOVUxFbEJRVXNzZVVKQlEwd3NTMEZCVFN4M1FrRkRUaXhSUVVGVExFbEJRVTBzU1VGQlNVRXNSVUZCVHl4SlFVRkpMRVZCUXpsQ0xGVkJRVmNzUTBGQlF5eERRVUZGTEU5QlFVRkRMRU5CUVU4c1JVRkJSME1zU1VGQlVTeFBRVUZQUkN4SFFVRlhMRlZCUVZsSUxFZEJRVkVzUzBGQlN5eExRVUZMUnl4RFFVRk5MRVZCUTJoR1FTeEZRVU5CUXl4RlFVRkpMRkZCUVZFc1QwRkRkRUlzUlVOV1FTeEpRVUZOUXl4SFFVRlZMRU5CUTFvc1UwRkJWVU1zUjBGQlV5eFBRVUZQUVN4SFFVRlZMRlZCUTNCRExGRkJRVk1zUjBGRFZDeEpRVUZMTEhsQ1FVTk1MRXRCUVUwc2IwTkJRMDRzVVVGQlUwTXNSMEZCVHl4SlFVRkpReXhGUVVGUFJDeEZRVUZKTEVOQlFVTXNTVUZCVFN4TFFVRlBRU3hGUVVGSkxFTkJRVU1zU1VGQlRTeEhRVUZITEVWQlF6TkVMRlZCUVZVc1EwRkJSU3hQUVVGQlJTeEZRVUZSTEUxQlFVRklMRU5CUVUwc1JVRkJSMGtzUlVGQlN5eERRVU01UWl4SFFVRkpSQ3hIUVVGVlNpeEhRVUZSTEV0QlFVc3NTMEZCUzBrc1EwRkJUU3hGUVVGSExFTkJRM0pETEVsQlFVMUZMRVZCUVV0R0xFVkJRVThzUTBGQlF5eEpRVUZOTEV0QlFVOUJMRVZCUVU4c1EwRkJReXhKUVVGTkxFbEJRemxETEVkQlFVbElMRWxCUVZWTExFVkJRMVlzVDBGQlQwWXNRMEZEWml4RFFVTkJMRTlCUVU5SUxFVkJRVkZKTEVWQlFVa3NVVUZCVVN4UlFVRlZRU3hGUVVGSkxGRkJRVkVzVVVGRGNrUXNRMEZEU2l4RlEyaENRU3hUUVVGVFJTeEhRVUZuUWl4RFFVRkZMRTlCUVVGRExFVkJRVkVzYTBKQlFVRkRMRVZCUVcxQ0xFbEJRVUZETEVWQlFVc3NUVUZCUVVNc1EwRkJUU3hGUVVGSExFTkJRMmhGTEVkQlFVa3NUMEZCVDBFc1IwRkJWU3hUUVVOcVFpeFBRVUZQTEU5QlFVOUJMRU5CUVVzc1JVRkRka0lzU1VGQlRVTXNSVUZCVFN4UFFVRlBSQ3hIUVVGVkxGTkJRVmRCTEVWQlFWRXNUMEZCVDBFc1EwRkJTeXhGUVVNMVJDeEhRVUZKTEVOQlFVTXNVMEZCVTBNc1EwRkJSeXhGUVVOaUxFOUJRVThzVFVGQlRVRXNRMEZCUnl4RlFVRkpMRTlCUVZOQkxFVkJRVTBzUlVGQlNTeFJRVUZWTEU5QlEzSkVMRWxCUVVsRExFVkJRVWtzUzBGQlN5eFZRVUZWUml4RFFVRkxMRVZCUXpWQ0xFZEJRVWtzUTBGQlEwZ3NSMEZEUkVNc1NVRkRReXhEUVVGRFF5eEhRVUZQUVN4SlFVRlJMRFJDUVVOcVFpeE5RVUZOTEV0QlFVdEhMRU5CUVVNc1JVRkJSeXhEUVVObUxFbEJRVWxETEVWQlFVbEVMRVZCUVVVc1VVRkJVU3hIUVVGSExFVkJRMnBDUXl4RlFVRkpMRWxCUTBwQkxFVkJRVWxFTEVWQlFVVXNUMEZEVGtFc1IwRkJTeXhMUVVWVUxFbEJRVWxGTEVWQlFVbE9MRWRCUVhGQ1NTeEZRVUZGTEU5QlFWTkRMRVZCUVVrc1IwRkROVU1zUzBGQlQwTXNTMEZCVFN4SFFVTlVSaXhIUVVGTExFZEJRMklzUTBGRFFTeFBRVUZQUVN4RFFVTllMRU5EYkVKQkxFbEJRVTFITEVkQlFWY3NRMEZEWWl4VFFVRlZReXhIUVVGVExFOUJRVTlCTEVkQlFWVXNVMEZEY0VNc1VVRkJVeXhIUVVOVUxFbEJRVXNzTUVKQlEwd3NTMEZCVFN4cFJFRkRUaXhSUVVGVFF5eEhRVUZQUVN4RlFVRkpMRTFCUVUwc1JVRkJSU3hGUVVGRkxGbEJRVmtzU1VGQlRTeE5RVU14UXl4SlFVTkJRU3hGUVVGSkxFTkJRVU1zU1VGQlRTeEpRVU5RTEU5QlFVOHNhMEpCUTFBc1QwRkJUeXhyUWtGRGFrSXNWVUZCVjBNc1JVRkRaaXhGUVVOTlF5eEhRVUZYTEVOQlEySXNVMEZCVlVnc1IwRkJVeXhQUVVGUFFTeEhRVUZWTEZOQlEzQkRMRkZCUVZNc1IwRkRWQ3hKUVVGTExEQkNRVU5NTEU5QlFWRXNUVUZEVWl4TFFVRk5MSGxFUVVOT0xGRkJRVk5ETEVkQlFVOHNWMEZCVjBFc1EwRkJSeXhGUVVNNVFpeFZRVUZWUnl4RlFVRk5MRU5CUTFvc1NVRkJUVU1zUlVGQlRTeFBRVUZQUkN4RlFVRkxMRXRCUVVzc1JVRkROMElzVDBGQlR5eFRRVUZUUXl4RFFVRkhMRVZCUVVsQkxFVkJRVWtzWTBGQll5eEZRVUZKU0N4SFFVRm5Ra1VzUTBGQlNTeERRVU55UlN4RFFVTktMRVZCUTAxRkxFZEJRVkVzUTBGRFZpeFRRVUZWVGl4SFFVRlRMRTlCUVU5QkxFZEJRVlVzVTBGRGNFTXNVVUZCVXl4SFFVTlVMRWxCUVVzc01FSkJRMHdzUzBGQlRTeHhRMEZEVGl4UlFVRlJReXhGUVVGTExFTkJRMVFzU1VGQlRVY3NSVUZCVHl4SlFVRkpSeXhGUVVGUExGZEJRVmRPTEVOQlFVY3NRMEZCUXl4RlFVTnFRMDhzUlVGQlRWQXNSVUZCU1N4UlFVRlJMRWRCUVVjc1JVRkRNMElzVDBGQlNVOHNTVUZCVVN4SlFVRk5VQ3hGUVVGSlFTeEZRVUZKTEU5QlFWTXNRMEZCUXl4SlFVRk5MRTFCUTNSRFJ5eEZRVUZMTEd0Q1FVRnZRa2dzUlVGQlNTeFBRVUZUVHl4RlFVRk5MRWRCUTNwRFNpeERRVU5ZTEVWQlEwRXNWVUZCVjBZc1JVRkRaaXhGUTNSRFFTeEpRVUZOVHl4SFFVRmxReXhIUVVGVkxFOUJRVTlCTEVkQlFWVXNWVUZCV1N4UFFVRlBMRlZCUVZWQkxFTkJRVXNzUlVGRE5VVkRMRWRCUVdFc1EwRkJRME1zUlVGQlMwTXNSVUZCVVVNc1JVRkJUeXhEUVVGRkxGbEJRVUZETEVOQlFWa3NTVUZCVDBFc1JVRkJZeXhQUVVGUFNDeERRVUZITEVWQlFVa3NVMEZCVTBFc1JVRkJTU3hWUVVGVlF5eERRVUZOTEVWQlFVZERMRU5CUVVzc1JVRkRPVWdzVTBGQlUwVXNSMEZCWVVNc1JVRkJUVWdzUlVGQlQwa3NSVUZCVVN4RFFVTjJReXhIUVVGTkxFTkJRVVVzVFVGQlFWSXNRMEZCVFN4RlFVRkpUeXhGUVVOc1FpeFBRVUZKVWl4SFFVRlpReXhEUVVGTExFZEJRVXRCTEVkQlFWTXNSVUZEZUVKUkxFVkJRVk5TTEVWQlFVMHNVMEZCVTBrc1EwRkJTeXhGUVVOcVEwc3NSMEZCWjBKR0xFTkJRVWtzUTBGREwwSXNRMEZEUVN4SlFVRk5SeXhIUVVGVExFTkJRMWdzVTBGQlZWWXNSMEZCVTBRc1IwRkJXVU1zUTBGQlN5eEhRVUZMUVN4SFFVRlRMRVZCUTJ4RUxGRkJRVk1zUjBGRFZDeEpRVUZMTEhkQ1FVTk1MRTlCUVZFc1RVRkRVaXhMUVVGTkxHRkJRMDRzVVVGQlV5eERRVUZEUlN4RlFVRkxVeXhGUVVGVlF5eEpRVUZSV0N4SFFVRlhReXhGUVVGTExFVkJRVWNzUlVGQlIxVXNRMEZCUnl4RlFVTXhSQ3hWUVVGWFRDeEhRVUZSUkN4SFFVRmhReXhGUVVGTkxFVkJRVWNzU1VGQlNTeERRVU5xUkN4RlFVTk5UU3hIUVVGTkxFTkJRMUlzVTBGQlZXUXNSMEZEVml4UlFVRlRMRWRCUTFRc1NVRkJTeXgzUWtGRFRDeExRVUZOTEdkQ1FVTk9MRkZCUVZNc1EwRkJRMGNzUlVGQlMxTXNSVUZCVlVNc1NVRkJVVmdzUjBGQlYwTXNSVUZCU3l4RlFVRkhMRWRCUVVsVkxFTkJRVWNzUlVGRE0wUXNWVUZCVjBnc1JVRkRaaXhGUVVOTlN5eEhRVUZUTEVOQlExZ3NVMEZCVldRc1IwRkJVMFFzUjBGQldVTXNRMEZCU3l4SFFVRkxRU3hIUVVGVExFVkJRMnhFTEZGQlFWTXNSMEZEVkN4SlFVRkxMSGRDUVVOTUxFOUJRVkVzVFVGRFVpeExRVUZOTEcxQ1FVTk9MRkZCUVZNc1EwRkJRMFVzUlVGQlMxTXNSVUZCVlVNc1NVRkJVVmdzUjBGQlYwTXNSVUZCU3l4RlFVRkhMRWRCUVVsVkxFTkJRVWNzUlVGRE0wUXNWVUZCVjB3c1IwRkJVVVFzUjBGQllVTXNSVUZCVFN4SFFVRkpMRWxCUVVrc1EwRkRiRVFzUlVNelFrRXNTVUZCVFZFc1IwRkJVeXhEUVVOWVF5eEhRVU5CUXl4SFFVTkJReXhIUVVOQlF5eEhRVU5CUXl4SFFVTkJReXhIUVVOQlF5eEhRVU5CUXl4SFFVTkJReXhIUVVOQlF5eEhRVU5CUXl4RlFVTktMRVZEYUVKQkxGTkJRVk5ETEVkQlFWbERMRVZCUVU4c1EwRkRlRUlzVDBGQlR5eFBRVUZQUVN4SFFVRlZMRlZCUVZrc1QwRkJUeXhWUVVGVlFTeERRVUZMTEVOQlF6bEVMRU5CUTBFc1NVRkJUVU1zUjBGQlowSXNRMEZCUXl4RFFVRkZMRTFCUVVGRUxFTkJRVTBzU1VGQlRTeExRVUZMTEZWQlFWVkJMRU5CUVVzc1JVRkRia1JGTEVkQlFXTXNRMEZEYUVJc1EwRkRTU3hUUVVGVlJpeEhRVUZUTEU5QlFVOUJMRWRCUVZVc1UwRkRjRU1zVVVGQlV5eEhRVU5VTEVsQlFVc3NkMEpCUTB3c1VVRkJVMGNzUjBGQlQwRXNSVUZEYUVJc1ZVRkJWMFlzUlVGRFppeEZRVU5CTEVOQlEwa3NVMEZCVlVRc1IwRkJVMEVzUjBGQlV5eExRVU0xUWl4WFFVRlpMRWxCUVUwc1NVRkJTVWtzUlVGQlR5eEpRVUZKTEVWQlEycERMRkZCUVZNc1IwRkRWQ3hKUVVGTExIbENRVU5NTEV0QlFVMHNVMEZEVGl4UlFVRlRMRWxCUVUwc1MwRkRaaXhWUVVGWFNDeEZRVU5tTEVWQlEwRXNRMEZEU1N4VFFVRlZSQ3hIUVVGVExFOUJRVTlCTEVkQlFWVXNWVUZEY0VNc1VVRkJVeXhIUVVOVUxFbEJRVXNzZVVKQlEwd3NTMEZCVFN4bFFVTk9MRkZCUVZOSExFZEJRVTlCTEVsQlFWRXNUMEZEZUVJc1ZVRkJWMFlzUlVGRFppeEZRVU5CTEVOQlEwa3NVMEZCVlVZc1IwRkRWaXhSUVVGVExFZEJRMVFzU1VGQlN5eDNRa0ZEVEN4TFFVRk5MSGRDUVVOT0xGRkJRVk1zUTBGQlEwa3NSVUZCUzBVc1JVRkJWU3hEUVVGRkxGbEJRVUZETEVOQlFWa3NTVUZCVFVFc1JVRkJZeXhQUVVGUFNDeERRVUZITEVWQlFVa3NVMEZCVTBFc1JVRkJTeXhGUVVGRkxFVkJRM3BHTEZWQlFWY3NRMEZCUXl4RFFVRkZMRTFCUVVGSUxFTkJRVTBzU1VGQlRVUXNSMEZCV1VNc1EwRkJTeXhGUVVGSlFTeEZRVUZOTEZOQlFWTXNSVUZCU1N4TFFVRkxMRlZCUVZWQkxFTkJRVXNzUTBGRE1VWXNSVUZEUVN4RFFVTkpMRk5CUVZWQkxFZEJRVk1zVDBGQlQwRXNSMEZCVlN4VFFVTndReXhSUVVGVExFZEJRMVFzU1VGQlN5d3dRa0ZEVEN4TFFVRk5MSGxFUVVOT0xGRkJRVk5ITEVkQlFVOHNWMEZCVjBFc1EwRkJSeXhGUVVNNVFpeFZRVUZYUml4RlFVTm1MRU5CUTBvc1JVRkRUVTBzUjBGQldTeERRVU5rTEZGQlFWTXNSMEZEVkN4SlFVRkxMRWRCUTB3c1MwRkJUU3hKUVVOT0xGRkJRVkZLTEVWQlFVdExMRVZCUVZNc1EwRkRiRUlzVDBGQlFVRXNSVUZCVVN3eVFrRkJNa0lzUzBGQlN5eFZRVUZWVEN4RFFVRkhMRU5CUVVNc1JVRkJSU3hGUVVOcVJFRXNRMEZEV0N4RFFVTktMRVZCUTAxTkxFZEJRVk1zUTBGQlEwTXNSMEZCUzBNc1JVRkJSeXhGUVVGRkxFOUJRVTlVTEVkQlFXRkxMRVZCUVZNc1JVTjRSSFpFTEVsQlFVMUxMRWRCUVZNc1EwRkRXQ3hUUVVGVlF5eEhRVUZUUVN4aFFVRnBRaXhYUVVOd1F5eFJRVUZUTEVkQlExUXNTVUZCU3l3eVFrRlRUQ3hSUVVGUlF5eEZRVUZMUXl4RlFVRlRMRU5CUTJ4Q0xFZEJRVWtzVDBGQlR5eFJRVUZYTEZkQlEyeENMRTlCUVU4c1QwRkJUeXhMUVVGTFJDeEZRVUZMTEZGQlFWRXNSVUZGTDBJc1IwRkJTU3hQUVVGUExFMUJRVk1zVjBGQldTeERRVVZxUXl4SlFVRk5SU3hGUVVGTkxFdEJRVXRHTEVWQlFVa3NVVUZCVVN4VlFVRlhMRVZCUVVVc1EwRkJReXhGUVVOeVEwY3NSVUZCVXl4SlFVRkpMRmRCUVZkRUxFVkJRVWtzVFVGQlRTeEZRVU40UXl4UlFVRlRSU3hGUVVGSkxFVkJRVWRCTEVWQlFVbEdMRVZCUVVrc1QwRkJVU3hGUVVGRlJTeEZRVU01UWtRc1JVRkJUME1zUTBGQlF5eEZRVUZKUml4RlFVRkpMRmRCUVZkRkxFTkJRVU1zUlVGRGFFTXNUMEZCVDBRc1EwRkRXQ3hMUVVWSkxGRkJRVUZHTEVWQlFWRXNNRVpCUVRCR0xFVkJRek5HUkN4RFFVVm1MRVZCUTBFc1ZVRkJWU3hEUVVGRkxGRkJRVUZMTEVWQlFWTXNTMEZCUVVNc1JVRkJUU3hOUVVGQlVDeERRVUZOTEVWQlFVZFJMRVZCUVV0RExFVkJRVmRETEVWQlFXRXNRMEZETjBRc1NVRkJUVU1zUlVGQlRWZ3NSVUZEVWtjc1JVRkRTaXhIUVVGSkxFOUJRVThzVVVGQlZ5eFhRVU5zUWtFc1JVRkRTVkVzWVVGQlpTeFBRVU5VUVN4RlFVRkpMRk5CUVZNc1VVRkJVU3hGUVVOeVFpeFBRVUZQTEV0QlFVdEJMRVZCUVVrc1RVRkJUU3hGUVVGRkxGTkJRVk1zVVVGQlVTeFZRVVU1UXl4UFFVRlBMRTFCUVZNc1YwRkJXU3hEUVVOcVF5eEpRVUZKUXl4RlFVRkpMRWRCUTFJc1VVRkJVMUFzUlVGQlNTeEZRVUZIUVN4RlFVRkpUU3hGUVVGSkxFOUJRVkVzUlVGQlJVNHNSVUZET1VKUExFZEJRVXNzVDBGQlR5eGhRVUZoUkN4RlFVRkpUaXhEUVVGRExFTkJRVU1zUlVGRGJrTkdMRVZCUVUwc1MwRkJTMU1zUTBGQlF5eERRVU5vUWl4TFFVVkpMRTlCUVUwc1NVRkJTU3hOUVVGTkxEQkdRVUV3Uml4RlFVazVSeXhIUVVaTFRDeEpRVU5FUVN4RlFVRlBUU3hGUVVGUExHVkJRMlJPTEVsQlFWTk5MRVZCUVU4c1lVRkJZeXhEUVVNNVFpeEpRVUZOUXl4RlFVRlpMRXRCUVVzc1NVRkJTVTRzUlVGQlNTeFJRVUZSTEZWQlFWbEJMRVZCUVVrc1QwRkJUeXhQUVVGUlFTeEZRVUZKTEZGQlFWRXNaVUZCWlN4RlFVTXpSazhzUlVGQlNTeExRVUZMTEV0QlFVdGFMRVZCUVVrc1QwRkJVMWNzUTBGQlV5eEZRVU53UTBVc1JVRkJVU3hKUVVGSkxFMUJRVTFFTEVOQlFVTXNSVUZEZWtJc1VVRkJVMVlzUlVGQlNTeEZRVUZIV1N4RlFVRkpMRVZCUVVkYUxFVkJRVWxWTEVWQlFVY3NSVUZCUlZZc1JVRkJSMWtzUjBGQlMwZ3NSVUZEY0VORkxFVkJRVTFZTEVOQlFVTXNSVUZCU1VZc1JVRkJTU3hQUVVGUFl5eEZRVUZIU0N4RFFVRlRMRVZCUlhSRFdDeEZRVUZOWVN4RlFVRk5MRXRCUVV0VUxFbEJRVk5OTEVWQlFVOHNZMEZCWjBJN1FVRkJRU3hGUVVGUExFZEJRVWNzUTBGREwwUXNRMEZEUVN4UFFVRlBTeXhIUVVGblFpeERRVUZGTEZGQlFVRmFMRVZCUVZNc1MwRkJRVU1zUlVGQlRTeE5RVUZQU2l4RFFVRkpMRVZCUVVkTExFVkJRVXRETEVWQlFWZERMRU5CUVZjc1EwRkRja1lzUTBGRFNpeEZRekZFUVN4VFFVRlRVeXhIUVVGaFF5eEZRVUZMUXl4RlFVRlRMRU5CVEhCRExFbEJRVUZETEVWQlRVa3NSMEZCU1VNc1IwRkJUVWdzUTBGQlJ5eEZRVU5VTEZGQlFWTkpMRVZCUVVrc1JVRkJSMEVzUlVGQlNVb3NSVUZCU1N4TlFVRk5MRTlCUVZFc1JVRkJSVWtzUlVGQlJ5eERRVU4yUXl4SlFVRkpReXhGUVVGUFRDeEZRVUZKTEUxQlFVMUpMRU5CUVVNc1JVRkRkRUlzUjBGQlNTeERRVUZCUlN4RlFVRlBSQ3hEUVVGSkxFVkJSVllzU1VGQlNVVXNSMEZCVFVZc1EwRkJTU3hGUVVGSExFTkJRMlJCTEVWQlFVc3NUVUZCVFN4UFFVRlRMRWRCUTNCQ1NpeEZRVUZSTEdkRVFVRm5SQ3hGUVVNMVJDeEpRVUZOVHl4RlFVRlBTQ3hGUVVGTExFMUJRVTBzUTBGQlF5eEhRVUZMTEVsQlFVbEpMRWRCUVVzc1NVRkJTVU1zUlVGQlR5eEpRVUZKTEVOQlFVTXNSVUZMZGtRc1IwRktTVXdzUlVGQlN5eG5Ra0ZEVEVjc1JVRkJTeXhKUVVGSkxHTkJRV2RDUVN4RlFVRkxMRWxCUVVrc1kwRkROVUlzUjBGQlIwZ3NSVUZCU3l4aFFVRmhPMEZCUVVFc1JVRkJTMGNzUlVGQlN5eEpRVUZKTEdGQlFXRXNSMEZEYUVSSUxFVkJRVXNzWlVGRFdFRXNSVUZCU3l4UlFVRlRMRU5CUTJRc1NVRkJUVTBzUjBGQlMxUXNSVUZCUVUwc1JVRkJTeXhSUVVGTUxFdEJRVUZPTEVWQlFXTk5MRVZCUVVzc1NVRkRPVUpITEVWQlFVY3NVVUZCVlVFc1JVRkJSeXhSUVVOV0xFZEJRVWRPTEVWQlFVc3NUMEZCVHp0QlFVRkJMRVZCUVV0TkxFVkJRVWNzVDBGQlR5eEhRVU01UWs0c1JVRkJTeXhQUVVObUxFTkJRMEZCTEVWQlFVOUhMRU5CUTFnc1EwRkRRVklzUlVGQlNTeE5RVUZOU1N4RFFVRkRMRVZCUVVsRkxFVkJRVTlFTEVOQlFVa3NSVUZCU1VFc1JVRkJUeXhKUVVGSlNTeEhRVUZMU2l4RFFVRkpMRVZCUTNSRUxFMUJSMEZLTEVWQlFWRXNhME5CUVd0RExFVkJRemxETEU5QlFVOUVMRU5CUTFnc1EwRkRRU3hUUVVGVFdTeEhRVUZaUXl4RlFVRlJReXhGUVVGVlF5eEZRVUZMTEVOQlEzaERMRWRCUVUwc1EwRkJSU3hUUVVGQlF5eERRVUZUTEVWQlFVbEVMRVZCUTJaRkxFVkJRVkVzU1VGQlNVTXNSMEZCVVV3c1EwRkJUU3hGUVVOb1Ewa3NSVUZCVFN4SlFVRk5MREJDUVVOYUxFbEJRVWtzUlVGQlNTeEZRVU5TTEVkQlFVbElMRWRCUVZrc1QwRkJUeXhaUVVGWkxFOUJRVTlCTEVOQlFWRXNSVUZET1VNc1VVRkJVMHNzUzBGQlRVd3NSVUZCVlN4RFFVTnFRaXhQUVVGUFJTeEhRVUZoTEdGQlEzQkNSeXhGUVVGTFNDeEZRVUZUTEV0QlFVdEdMRVZCUVZVc1QwRkJUeXhIUVVGSExFVkJRVWRMTEVOQlFVVXNSMEZEYUVRc1NVRkJTVU1zUlVGQlMwTXNSVUZEVkN4SFFVRkpMRTFCUVUwc1VVRkJVVVlzUTBGQlJTeEZRVU5vUWl4SFFVRkpRU3hGUVVGSExGTkJRVmNzUlVGRFpFTXNSVUZCVFVRc1JVRkJSeXhEUVVGRExFVkJRMVpGTEVWQlFWRkdMRVZCUVVjc1EwRkJReXhOUVVkYUxFOUJRVTBzU1VGQlNTeFZRVUZWTEdkRFFVRm5RMEVzUTBGQlJTeEZRVUZGTEZWQlJYWkVRU3hIUVVGTlFTeGhRVUZqTEU5QlFWRXNRMEZEYWtNc1NVRkJUVWNzUlVGQlR5eFBRVUZQTEV0QlFVdElMRU5CUVVVc1JVRkRNMElzUjBGQlNVY3NSVUZCU3l4VFFVRlhMRVZCUTJoQ1JpeEZRVUZOUlN4RlFVRkxMRU5CUVVNc1JVRkRXa1FzUlVGQlVVWXNSVUZCUjBNc1EwRkJSeXhOUVVka0xFOUJRVTBzU1VGQlNTeFZRVUZWTEc5RFFVRnZRMFVzUlVGQlN5eE5RVUZOTEU5QlFVOHNRMEZGYkVZc1RVRkZTVVlzUlVGQlRVUXNSVUZGVmtZc1JVRkJUU3hOUVVGTkxFdEJRVXROTEVkQlFWZElMRVZCUVV0RExFVkJRVTlPTEVOQlFVY3NRMEZCUXl4RFFVTm9SQ3hEUVVOS0xFOUJRVTlGTEVOQlExZ3NRMEZEUVN4SlFVRk5RU3hIUVVGUkxFTkJRMVlzVjBGQldTeE5RVU5hTEZGQlFWTXNSMEZEVkN4SlFVRkxMREJDUVVOTUxGRkJRVk5zUWl4SFFVTlVMRmRCUVZsaExFVkJRMmhDTEVWRGNrVkJMRWxCUVUxWkxFZEJRVTRzVFVGQlRVTXNWVUZCYVVKRExFVkJRVkVzUTBGRE0wSXNZVUZCWXl4RFFVTldMRTFCUVUwc1JVRkRUaXhMUVVGTExFbEJRVTFETEVkQlFWRXNWVUZCVlN4SlFVRkpMRXRCUVVzc1NVRkJTU3hGUVVNeFF5eExRVUZMTEU5QlFWTkJMRWRCUVZFc1ZVRkJWU3hQUVVGUExFdEJRVXNzU1VGQlNTeEZRVU5vUkN4TFFVRkxMRWxCUVUxQkxFZEJRVkVzVlVGQlZTeEpRVUZKTEV0QlFVc3NTVUZCU1N4RlFVTXhReXhMUVVGTExFbEJRVTFCTEVkQlFWRXNWVUZCVlN4SlFVRkpMRXRCUVVzc1NVRkJTU3hGUVVNeFF5eExRVUZMTEVsQlFVMUJMRWRCUVZFc1ZVRkJWU3hKUVVGSkxFdEJRVXNzU1VGQlNTeEZRVU14UXl4TFFVRkxMRWxCUVUxR0xFVkJRVk1zUjBGRGVFSXNRMEZMUVN4UFFVRlBSeXhGUVVGSFF5eEZRVUZMTEVOQlExZ3NSMEZCU1N4RFFVRkRRU3hGUVVORUxFOUJRVThzVFVGQlRTeFBRVUZQUkN4RFFVRkRMRVZCUTNwQ0xFbEJRVTFGTEVWQlFVMHNTVUZCU1N4SlFVTmFSQ3hIUVVGQkxFMUJRVUZCTEVWQlFVc3NWVUZEVEVFc1JVRkJTU3hUUVVGVFF5eERRVUZITEVWQlEzQkNMRkZCUVZkRExFdEJRVkVzUzBGQlN5eE5RVUZQTEVOQlF6TkNMRWxCUVVsRExFVkJRVXRETEVWQlVWUXNSMEZRU1VNc1JVRkJUMGdzUTBGQlNTeEhRVU5ZUXl4RlFVRk5SeXhIUVVGTFNpeEZRVUZMTEVsQlFVc3NSMEZCU1VZc1EwRkJSeXhGUVVNMVFra3NSVUZCVVVVc1IwRkJTMG9zUlVGQlN5eE5RVUZQUXl4RlFVRkxTQ3hEUVVGSExFZEJSMnBEUnl4RlFVRk5SeXhIUVVGTFNpeEZRVUZOTEVkQlFVbEdMRU5CUVVjc1JVRkZlRUpETEVWQlFVa3NTVUZCU1VVc1EwRkJSeXhGUVVOWUxFMUJRVTBzU1VGQlNTeE5RVUZOTERoRFFVRTRReXhGUVVOc1JVWXNSVUZCU1N4SlFVRkpSU3hGUVVGTFF5eERRVUZMTEVOQlEzUkNMRU5CUTBFc1QwRkJUMGdzUTBGRFdDeERRVU5CTEU5QlFVOHNTMEZCUzAwc1JVRkJVVU1zUlVGQlZWSXNSVUZCU3l4RFFVTXZRaXhKUVVGTlV5eEZRVUZSUXl4SFFVRlpTQ3hGUVVGUlF5eEZRVUZWVWl4RFFVRkhMRVZCUTNwRFZ5eEZRVUZQTEVsQlFVa3NTMEZEYWtJc1QwRkJRVUVzUlVGQlN5eE5RVUZSUml4RlFVRk5MRTFCUTFwRkxFTkJRMWdzUTBGRFNpeEZRVU5CYUVJc1IwRkJVeXhKUVVGTkxIbENRVU5tTEVsQlFVMW5RaXhIUVVGUExFTkJRMVFzVjBGQldTeE5RVU5hTEZOQlFWVlFMRWRCUVZOQkxHRkJRV2xDTEVsQlEzQkRMRlZCUVZkVUxFZEJRMWdzVVVGQlV5eEhRVU5VTEVsQlFVc3NlVUpCUTB3c1VVRkJVV2xDTEVWQlFVdERMRVZCUVZNc1EwRkRiRUlzU1VGQlRVb3NSVUZCVVVzc1IwRkJZVVlzUlVGQlMwTXNRMEZCVHl4RlFVTnFRMFVzUlVGQlZ5eERRVUZETEVWQlEyeENMRTlCUVZjc1EwRkJSU3hKUVVGQldpeERRVUZKTEVsQlFVdE5MRVZCUVUwc1RVRkRjRUpQTEVWQlFWTmlMRU5CUVVjc1NVRkRVbGtzUlVGQlV5eFRRVUZUV2l4RlFVRkpMRXRCUVVzc1JVRkRNMEpWTEVWQlFWRXNhVVJCUVdsRVZpeEZRVUZKTEV0QlFVc3NSVUZCUlN4RlFVZHdSVmtzUlVGQlV5eExRVUZMV2l4RlFVRkpMRXRCUVVzc1IwRkpia01zVDBGQlR5eFBRVUZQTEU5QlFVOHNTVUZCU1ZJc1IwRkJXV01zUTBGQlN5eERRVU01UXl4RlFVTkJMRmRCUVZrc1EwRkJRMFlzUlVGQlVVTXNSVUZCVlZJc1NVRkJVVXdzUjBGQlV5eExRVUZMV1N4RlFVRlJReXhGUVVGVlVpeERRVUZITEVOQlF6bEZMRVZEY2tWQkxGTkJRVk5wUWl4SFFVRmpMRU5CUVVVc1RVRkJRVU1zUlVGQlR5eFBRVUZCUXl4RFFVRlBMRVZCUVVkRExFVkJRVXNzUTBGRk0wTXNUMEZCU1VRc1NVRkVXVVFzUlVGQlVVY3NSMEZCVlVNc1NVRkRXaXhMUVVGTExFdEJRVXRJTEVOQlFVMHNSVUZETTBKQkxFVkJRMHBFTEVWQlFWRkZMRVZCUVVrc1VVRkJVU3hSUVVGVlFTeEZRVUZKTEZGQlFWRXNVVUZEY2tRc1EwRkRRU3hKUVVGTlF5eEhRVUZWTEVOQlExb3NVMEZCVlVnc1IwRkJVMEVzU1VGQlZTeEhRVU0zUWl4UlFVRlRMRWRCUTFRc1NVRkJTeXg1UWtGRFRDeExRVUZOTERaRFFVTk9MRkZCUVZNc1NVRkJUU3hKUVVGSlN5eEZRVUZQTEVWQlFVa3NSVUZET1VJc1ZVRkJWMDRzUlVGRFppeEZRVU5OU3l4SFFVRlhMRU5CUTJJc1UwRkJWVW9zUjBGQlUwRXNTVUZCVlN4SFFVTTNRaXhSUVVGVExFZEJRMVFzU1VGQlN5eDVRa0ZEVEN4TFFVRk5MQ3REUVVOT0xGRkJRVk1zU1VGQlRTeEpRVUZKU3l4RlFVRlBMRVZCUVVzc1JVRkRMMElzVlVGQlYwNHNSVUZEWml4RlEzQkNRU3hKUVVGTlR5eEhRVUZYTEVOQlEySXNVMEZCVlVNc1IwRkJVeXhQUVVGUFFTeEhRVUZWTEZOQlEzQkRMRkZCUVZNc1IwRkRWQ3hKUVVGTExEQkNRVU5NTEV0QlFVMHNhVVJCUTA0c1VVRkJWVU1zUjBGQlVVRXNSVUZCU1N4TlFVRk5MRVZCUVVVc1JVRkJSU3haUVVGWkxFbEJRVTBzVFVGRE5VTXNTVUZEUVVFc1JVRkJTU3hEUVVGRExFbEJRVTBzU1VGRFVDeFBRVUZQTEd0Q1FVTlFMRTlCUVU4c2EwSkJRMnBDTEZWQlFWZERMRVZCUTJZc1JVRkRUVU1zUjBGQlZ5eERRVU5pTEZOQlFWVklMRWRCUVZNc1QwRkJUMEVzUjBGQlZTeFRRVU53UXl4UlFVRlRMRWRCUTFRc1NVRkJTeXd3UWtGRFRDeFBRVUZSTEUxQlExSXNTMEZCVFN4M1JFRkRUaXhSUVVGVlF5eEhRVUZSTEZkQlFWZEJMRVZCUVVrc1VVRkJVU3hMUVVGTkxFVkJRVVVzUTBGQlF5eEZRVU5zUkN4VlFVRlZSeXhGUVVGTkxFTkJRMW9zU1VGQlRVTXNSVUZCVFN4UFFVRlBSQ3hGUVVGTExFdEJRVXNzUlVGRE4wSXNUMEZCVHl4VFFVRlRReXhEUVVGSExFVkJRVWxCTEVWQlFVa3NZMEZCWXl4RlFVRkpTQ3hIUVVGblFrVXNRMEZCU1N4RFFVTnlSU3hEUVVOS0xFVkJRMDFGTEVkQlFWRXNRMEZEVml4VFFVRlZUaXhIUVVGVExFOUJRVTlCTEVkQlFWVXNVMEZEY0VNc1VVRkJVeXhIUVVOVUxFbEJRVXNzTUVKQlEwd3NTMEZCVFN4dlEwRkRUaXhSUVVGUlF5eEZRVUZMTEVOQlExUXNTVUZCVFVjc1JVRkJUeXhKUVVGSlJ5eEZRVUZQTEZkQlFWZE9MRVZCUVVrc1VVRkJVU3hMUVVGTkxFVkJRVVVzUTBGQlF5eERRVUZETEVWQlEyNUVUeXhGUVVGTlVDeEZRVUZKTEZGQlFWRXNSMEZCUnl4RlFVTXpRaXhIUVVGSlR5eEpRVUZSTEVkQlFVa3NRMEZEV2l4SlFVRk5ReXhGUVVGSlVpeEZRVUZKTEZWQlFWVlBMRVZCUVUwc1EwRkJReXhGUVVGRkxGRkJRVkVzUzBGQlRTeEZRVUZGTEVWQlF6ZERReXhGUVVGRlFTeEZRVUZGTEU5QlFWTXNRMEZCUXl4SlFVRk5MRTFCUTNCQ1RDeEZRVUZMTEd0Q1FVRnZRa3NzUlVGQlJTeFBRVU51UXl4RFFVTkJMRTlCUVU5TUxFTkJRMWdzUlVGRFFTeFZRVUZYUml4RlFVTm1MRVZEZWtOQkxFbEJRVTFSTEVkQlFXVkRMRWRCUVZVc1QwRkJUMEVzUjBGQlZTeFZRVUZaTEU5QlFVOHNWVUZCVlVFc1EwRkJTeXhGUVVOc1JpeFRRVUZUUXl4SFFVRlhReXhGUVVGTFF5eEZRVUZSUXl4RlFVRlBMRU5CUVVVc1dVRkJRVU1zUTBGQldTeEZRVUZITEVOQlEzSkVMRWxCUVUxRExFVkJRVTlLTEVWQlFVa3NRMEZCUXl4RlFVbHNRaXhKUVVoSlNTeEpRVUZUTEV0QlFVOUJMRWxCUVZNc1QwRkRla0pJTEVkQlFWVXNSMEZEWkVRc1JVRkJUVUVzUlVGQlNTeFZRVUZWUXl4RFFVRk5MRVZCUVVVc1VVRkJVU3hMUVVGTkxFVkJRVVVzUlVGRGVFTkZMRVZCUVdFc1EwRkRZaXhQUVVGUlJDeEZRVUZQTEVOQlExZ3NTVUZCU3l4SFFVTkVSaXhGUVVGTkxFdEJRVXRCTEVOQlFVY3NSMEZEWkN4TlFVTktMRWxCUVVzc1IwRkRSRUVzUlVGQlRTeExRVUZMUVN4RFFVRkhMRWRCUTJRc1RVRkRTaXhKUVVGTExFbEJRMFJCTEVWQlFVMHNTMEZCUzBFc1EwRkJSeXhIUVVOa0xFdEJRMUlzUTBGRFFTeEpRVUZOU3l4RlFVRkpMRTlCUVU5TUxFTkJRVWNzUlVGRGNFSXNUMEZCVDBrc1NVRkJVeXhKUVVGTkxFOUJRVThzUlVGQlJTeEZRVUZKUXl4RlFVRkpRU3hEUVVNelF5eERRVU5CTEVsQlFVMUJMRVZCUVVrc1UwRkJVMHdzUlVGQlMwVXNRMEZCU3l4RlFVTTNRaXhQUVVGUFJTeEpRVUZUTEVsQlFVMHNSMEZCUzBNc1JVRkJTVUVzUTBGRGJrTXNRMEZEUVN4VFFVRlRReXhIUVVGaFF5eEZRVUZOVEN4RlFVRlBUU3hGUVVGUkxFTkJRM1pETEVkQlFVMHNRMEZCUlN4TlFVRkJWaXhEUVVGTkxFVkJRVWxUTEVWQlEyeENMRWRCUVVsV0xFZEJRVmxETEVOQlFVc3NSVUZCUnl4RFFVTndRaXhKUVVGTlJTeEZRVUZOUml4RlFVRk5MRk5CUVZOSkxFTkJRVXNzUlVGRGFFTXNUMEZCVDBvc1JVRkJVU3hGUVVGSkxFbEJRVTFWTEVWQlFWTlNMRVZCUVVrc1QwRkJUeXhEUVVGRExFVkJRVWxSTEVWQlFWTlNMRU5CUXk5RUxFTkJRMEVzVDBGQlQxTXNSMEZCWjBKR0xFTkJRVWtzUTBGREwwSXNRMEZEUVN4SlFVRk5SeXhIUVVGVExFTkJRMWdzVTBGQlZXSXNSMEZEVml4UlFVRlRMRWRCUTFRc1NVRkJTeXgzUWtGRFRDeFBRVUZSTEUxQlExSXNTMEZCVFN4dFFrRkRUaXhSUVVGVExFTkJRVU5ITEVWQlFVdFhMRVZCUVZWRExFbEJRVkZpTEVkQlFWZERMRVZCUVVzc1JVRkJSeXhGUVVGSFdTeERRVUZITEVWQlF6RkVMRlZCUVZkTUxFZEJRVkZFTEVkQlFXRkRMRVZCUVUwc1JVRkJSeXhKUVVGSkxFTkJRMnBFTEVWQlEwMU5MRWRCUVZNc1EwRkRXQ3hUUVVGVmFFSXNSMEZEVml4UlFVRlRMRWRCUTFRc1NVRkJTeXgzUWtGRFRDeFBRVUZSTEUxQlExSXNTMEZCVFN4clFrRkRUaXhSUVVGVExFTkJRVU5ITEVWQlFVdFhMRVZCUVZWRExFbEJRVkZpTEVkQlFWZERMRVZCUVVzc1JVRkJSeXhGUVVGSFdTeERRVUZITEVWQlF6RkVMRlZCUVZkTUxFZEJRVkZFTEVkQlFXRkRMRVZCUVUwc1JVRkJSeXhIUVVGSExFTkJRMmhFTEVWQlEwMVBMRWRCUVUwc1EwRkRVaXhUUVVGVmFrSXNSMEZEVml4UlFVRlRMRWRCUTFRc1NVRkJTeXgzUWtGRFRDeExRVUZOTEhOQ1FVTk9MRkZCUVZNc1EwRkJRMGNzUlVGQlMxY3NSVUZCVlVNc1NVRkJVV0lzUjBGQlYwTXNSVUZCU3l4RlFVRkhMRWRCUVVsWkxFTkJRVWNzUlVGRE0wUXNWVUZCVjBnc1JVRkRaaXhGUVVOTlRTeEhRVUZUTEVOQlExZ3NVMEZCVld4Q0xFZEJRMVlzVVVGQlV5eEhRVU5VTEVsQlFVc3NkMEpCUTB3c1QwRkJVU3hOUVVOU0xFdEJRVTBzZVVKQlEwNHNVVUZCVXl4RFFVRkRSeXhGUVVGTFZ5eEZRVUZWUXl4SlFVRlJZaXhIUVVGWFF5eEZRVUZMTEVWQlFVY3NSMEZCU1Zrc1EwRkJSeXhGUVVNelJDeFZRVUZYVEN4SFFVRlJSQ3hIUVVGaFF5eEZRVUZOTEVkQlFVa3NTVUZCU1N4RFFVTnNSQ3hGUTJoRlFTeEpRVUZOVXl4SFFVRk9MRTFCUVUxRExGVkJRV2RDUXl4RlFVRlJMRU5CUXpGQ0xGbEJRVmxETEVWQlFWRXNRMEZEYUVJc1RVRkJUVUVzUTBGQlRTeEZRVU5hTEV0QlFVc3NTVUZCVFVZc1JVRkJVU3hIUVVOMlFpeERRVU5CTEVsQlFVbEhMRVZCUVVzc1EwRkRUQ3hKUVVGSlF5eEZRVU5CUXl4RlFVRlBSaXhEUVVGSExFVkJRMVpETEVWQlFVOUVMRVZCUTBaQkxFZEJRMHdzVDBGQlQwRXNSMEZCVVN4VlFVTm1MRkZCUVZOQkxFZEJRMVFzVlVGQlYwRXNSMEZEV0VFc1JVRkJTU3hSUVVGVkxFdEJRMlJETEVWQlFVOHNTVUZCU1VVc1IwRkJTMGdzUlVGQlNTeEpRVUZMTEVsQlFVa3NSVUZGTjBKRExFVkJRVThzU1VGQlNVVXNSMEZCUzBnc1JVRkJTeXhKUVVGSkxFVkJRMmhDU1N4SFFVRlRMRXRCUVVzc1RVRkJUMGdzUlVGQlN5eEhRVUZITEVkQlJYUkRMRXRCUVVzc1RVRkJUU3hMUVVGTFFTeERRVUZKTEVOQlF6VkNMRU5CUzBFc1NVRkJTVVFzUlVGQlMwc3NSVUZCVlN4RFFVTm1MRWxCUVUxS0xFVkJRVTlITEVkQlFWTXNTMEZCU3l4TlFVRlBTaXhEUVVGSExFVkJRM0pETEUxQlFVOHNRMEZCUTBzc1IwRkJXVWdzUlVGQlQwUXNRMEZCU1N4RlFVTjZRa3NzUlVGQlUwd3NSVUZCU3l4SFFVRkhMRVZCUTJKQkxFVkJRVXNzU1VGQlNTeE5RVU5VUVN4RlFVRkxMRWxCUTFSQkxFTkJRMVlzUTBGRFFTeEpRVUZKUkN4RlFVRkxUeXhGUVVGUExFTkJRMW9zUjBGQlNTeFBRVUZQUVN4SFFVRlZMRlZCUTJwQ0xFMUJRVTBzU1VGQlNTeE5RVUZOTEdsRlFVRnBSU3hQUVVGUFFTeERRVUZMTEVWQlFVVXNSVUZEYmtjc1NVRkJUVU1zUlVGQlQwb3NSMEZCVXl4TFFVRkxMRTFCUVU5S0xFTkJRVWNzUlVGRGFrTlJMRWRCUVZFc1EwRkJRMFFzUlVGRFZDeExRVUZMTEUxQlFVMHNUMEZCVHl4TFFVRkxMRTFCUVUwc1VVRkJVVU1zUTBGQlNTeEZRVUZITEVOQlFVTXNSVUZGZUVNc1EwRkJRMEVzUjBGQlVVUXNSMEZEWkN4TFFVRkxMRTFCUVUwc1MwRkJTeXhKUVVGSlNpeEhRVUZMU0N4RFFVRkhMRU5CUVVNc1EwRkZja01zUTBGRFFTeFBRVUZQVXl4RlFVRkhReXhGUVVGTExFTkJRMWdzVDBGQlR5eE5RVUZOTEU5QlFVOUVMRVZCUVVkRExFVkJRVXNzUjBGQlJ5eERRVU51UXl4RFFVTkJMRk5CUVZOQkxFVkJRVXRETEVWQlFWZERMRVZCUVdFc1EwRkRiRU1zUjBGQlNTeERRVUZEUml4RlFVTkVMRTlCUVU4c1MwRkJTeXhWUVVGVkxFbEJRVWtzUlVGRE9VSXNSMEZCU1N4TFFVRkxMR2xDUVVGcFFpeEZRVUZKTEVWQlF6RkNMRTlCUVU4c1RVRkJUU3hUUVVGVExFOUJRVThzVDBGQlR5eERRVUZETEVWQlFVZEJMRVZCUVVzc1EwRkJSU3hqUVVGbExFVkJRVXNzUTBGQlF5eEZRVUZIUXl4RlFVRlhReXhEUVVGWExFVkJSVGRHTEUxQlFVMHNTVUZCU1N4TlFVRk5MSEZEUVVGeFF5eERRVU0zUkN4RFFVTkJMRTlCUVU4c1MwRkJTMklzUlVGQlVXTXNSVUZCVlVnc1JVRkJTeXhEUVVNdlFpeEhRVUZOTEVOQlFVVXNVMEZCUVVrc1EwRkJVeXhGUVVGSlNpeEZRVU5tU3l4RlFVRk5MRWxCUVVrc1MwRkJTMmhDTEVOQlFVMHNSVUZETTBJc1IwRkJTV01zUjBGQldTeFBRVUZQTEZsQlFWa3NUMEZCVDBFc1EwRkJVU3hGUVVNNVF5eFJRVUZUVGl4TFFVRlRUU3hGUVVOV0xFOUJRVTlETEVkQlFXRXNZVUZEY0VKUUxFVkJRVkZQTEVWQlFWTXNTMEZCUzBRc1JVRkJWVTRzUlVGQlQwRXNRMEZCU3l4SFFVTm9SRkVzUlVGQlNTeE5RVUZOTEV0QlFVdERMRWRCUVZkVUxFVkJRVThzUzBGQlRVY3NRMEZCUnl4RFFVRkRMRVZCUlc1RUxFOUJRVTlMTEVOQlExZ3NRMEZEU2l4RlFVTkJia0lzUjBGQlVTeEpRVUZOTEhkQ1FVTmtMRWxCUVUxdFFpeEhRVUZOTEVOQlExSXNWMEZCV1N4TlFVTmFMRk5CUVZWU0xFZEJRVk5CTEdGQlFXbENMRWxCUTNCRExGVkJRVmRZTEVkQlExZ3NVVUZCVXl4SFFVTlVMRWxCUVVzc2QwSkJRMHdzVjBGQldTeERRVUZEUnl4RlFVRlJZeXhGUVVGVlNDeEpRVUZSWkN4SFFVRlJMRXRCUVV0SExFVkJRVkZqTEVWQlFWVklMRU5CUVVjc1JVRkRla1VzVVVGQlVVOHNSVUZCUzBNc1JVRkJVeXhEUVVOc1FpeEhRVUZKUXl4SFFVRk5SaXhEUVVGSExFVkJRVWNzUTBGRFdpeEhRVUZKUVN4RlFVRkpMR2xDUVVGcFFpeEZRVUZKTEVWQlEzcENMRTlCUVU4c1QwRkJUeXhQUVVGUExFbEJRVWx5UWl4SFFVRlhjVUlzUTBGQlJ5eEZRVVYyUTBNc1JVRkJVU3h4UTBGQmNVTXNRMEZEY2tRc1RVRkZTVUVzUlVGQlVTeHBRMEZCYVVNc1JVRkROME1zVDBGQlQwUXNRMEZEV0N4RFFVTktMRVZEZGtaQkxGTkJRVk5ITEVkQlFXbENReXhGUVVGTFF5eEZRVUZWTEVOQlEzSkRMRWxCUVUxRExFVkJRVTlHTEVWQlFVa3NRMEZCUXl4RlFVTmFSeXhGUVVGUlJDeEpRVUZUTEV0QlFVOUJMRWxCUVZNc1NVRkJUVVlzUlVGQlNTeFZRVUZWTEVOQlFVTXNSVUZCU1VFc1JVRkRNVVJKTEVWQlFVOURMRWRCUVUxS0xFVkJRVmNzVDBGQlQwa3NRMEZCUXl4RlFVRkpMRTlCUVU5QkxFTkJRVU1zUlVGRE5VTkRMRVZCUVUxSUxFVkJRMUFzVVVGQlVTeExRVUZOTEVWQlFVVXNSVUZEYUVJc1RVRkJUU3hIUVVGSExFVkJRMVFzVDBGQlR5eERRVUZEUnl4RlFVRkxReXhKUVVGTlJDeEZRVUZOUml4RlFVRkpMRVZCUVVVc1JVRkJTVUVzUlVGQlNVY3NRMEZCUXl4RlFVRkhTQ3hGUVVGSkxFTkJRVU1zUTBGQlF5eEZRVU4wUkN4UFFVRlJSaXhKUVVGVExFbEJRVTFGTEVWQlFVa3NSVUZCUlN4RlFVRkpSU3hGUVVGTlFTeERRVU16UXl4RFFVMUJMRk5CUVZORkxFZEJRWEZDUXl4RlFVRk5MRU5CUTJoRExFZEJRVWtzUTBGQlJTeE5RVUZCUXl4RFFVRk5MRVZCUVVsRUxFVkJRMXBNTEVWQlFVOURMRWRCUVUxQkxFVkJRMnBDTEVkQlFVa3NUMEZCVDBzc1IwRkJWU3hUUVVOcVFrNHNSVUZCVFVNc1IwRkJTeXhQUVVGUFFTeERRVUZETEZWQlEyUXNUVUZCVFVzc1EwRkJTeXhIUVVGTExFTkJRVU1zVTBGQlUwRXNRMEZCU3l4RlFVTndReXhQUVVGUFF5eEhRVUZuUWtZc1EwRkJTU3hGUVVNdlFpeEpRVUZKVUN4RlFVRlBMRWRCUTFCUkxFVkJRVkVzU1VGRFVsSXNSVUZCVHl4SlFVTlFVU3hIUVVGVFRpeEZRVUZKTEVWQlFVVXNSMEZGYmtJc1NVRkJUVkVzUlVGQlRWSXNSVUZCU1N4RlFVRkZMRVZCUTFwRUxFVkJRVkVzUTBGQlEwOHNSVUZCVVVVc1EwRkJSeXhGUVVNeFFpeFBRVUZKUml4RlFVRlJMRWRCUTFKUUxFVkJRVTBzVVVGQlVTeERRVUZETEVkQlIyWlBMRWRCUVZOQkxFVkJRVkZRTEVWQlFVMHNRMEZCUXl4SFFVRkxVeXhGUVVNM1FsUXNSVUZCVFN4UlFVRlJUeXhGUVVGUlJTeERRVUZITEVWQlEzSkNSaXhIUVVGVExFdEJRMVJCTEVkQlFWTkJMRVZCUVZGUUxFVkJRVTBzUTBGQlF5eEhRVUZMVXl4RlFVTTNRbFFzUlVGQlRTeFJRVUZSVHl4RFFVRkxMRWxCUjI1Q1VpeEZRVU5LUXl4RlFVTkxMRWxCUVVsRkxFZEJRVXNzVDBGQlQwRXNRMEZCUXl4RlFVRkZMRk5CUVZNc1JVRkJSeXhIUVVGSExFTkJRVU1zUlVGRGJrTXNTMEZCU3l4SFFVRkhMRVZCUTFJc1VVRkJVU3hoUVVGakxFVkJRVVVzUTBGRmNrTXNRMEZEUVN4SlFVRk5VU3hIUVVGVkxFTkJRMW9zVTBGQlZVZ3NSMEZCVXl4UFFVRlBRU3hIUVVGVkxGVkJRVmtzVDBGQlR5eFZRVUZWUVN4RFFVRkxMRVZCUTNSRkxGRkJRVk1zUjBGRFZDeEpRVUZMTEhkQ1FVTk1MRTlCUVZFc1QwRkRVaXhMUVVGTkxIVkRRVU5PTEZGQlFWTXNRMEZCUTFZc1JVRkJTMk1zUlVGQlZTeERRVUZGTEZsQlFVRkRMRU5CUVZrc1NVRkJUV2hDTEVkQlFXbENReXhGUVVGTFpTeERRVUZYTEVWQlF6bEZMRlZCUVZkUUxFVkJRMllzUlVGRFRWRXNSMEZCV1N4RFFVTmtMRk5CUVZWT0xFZEJRVk1zVDBGQlQwRXNSMEZCVlN4VFFVTndReXhSUVVGVExFZEJRMVFzU1VGQlN5d3dRa0ZEVEN4UFFVRlJMRTlCUTFJc1MwRkJUU3huUkVGRFRpeFJRVUZUVml4SFFVRlBSQ3hIUVVGcFFrTXNSVUZCU3l4RlFVRkxMRVZCUXpORExGVkJRVmRSTEVWQlEyWXNSVUZEVFZNc1IwRkJXU3hEUVVOa0xGTkJRVlZRTEVkQlFWTkJMR0ZCUVdsQ0xFdEJRM0JETEZGQlFWTXNSMEZEVkN4SlFVRkxMRGhDUVVsTUxFdEJRVTBzVDBGQlR5d3lTa0ZMU2l4RlFVTlVMRkZCUVZGV0xFVkJRVXNzUTBGRFZDeEpRVUZOYTBJc1JVRkJVV3hDTEVWQlFVa3NUVUZCVFdsQ0xFZEJRVlVzU1VGQlNTeEZRVU4wUXl4SFFVRkpMRU5CUVVORExFVkJRMFFzVFVGQlRTeEpRVUZKTEUxQlFVMHNjMFJCUVhORUxFVkJRekZGTEVkQlFVMHNRMEZCUXl4RFFVRkZReXhGUVVGTlF5eEZRVUZQUXl4RlFVRkxReXhGUVVGTlF5eEZRVUZSUXl4RFFVRk5MRVZCUVVsT0xFVkJRVTBzU1VGQlNTeE5RVUZOTEVWQlF6ZEVUeXhGUVVGWFVDeEZRVUZOTEVOQlFVTXNSVUZCU1N4UlFVRlJRU3hGUVVGTkxFTkJRVU1zUlVGQlNTeE5RVUZOTEU5QlFVOHNSVUZCUnl4RFFVRkRMRU5CUVVNc1JVRkJTU3hGUVVOcVJWRXNSVUZCVHl4TFFVRkxMRWxCUVVsUUxFVkJRVTFETEVWQlFWRXNSVUZCUjBNc1JVRkJTME1zUjBGQlVTeEZRVUZIUXl4SFFVRlZMRVZCUVVkRExFZEJRVlVzUlVGQlIwTXNRMEZCVVN4RlFVTnFSa1VzUlVGQlMxUXNSVUZCVFN4RFFVRkRMRVZCUTJ4Q0xFZEJRVWxUTEVkQlFVMUJMRWxCUVU4c1NVRkJTeXhEUVVOc1FpeEpRVUZKTEVWQlFVazFRaXhIUVVGcFFqUkNMRVZCUVVrc1JVRkJTeXhGUVVNNVFpeExRVUZMTEVsQlFVa3NRMEZCUXl4RlFVRkpMRXRCUTJRc1IwRkJTeXhKUVVOVVJDeEhRVUZSTEVsQlFWRXNRMEZEY0VJc1EwRkRRU3hQUVVGUExFbEJRVWtzUzBGQlMwRXNRMEZCU1N4RFFVTjRRaXhGUVVOQkxGVkJRVmNzUTBGQlF5eERRVUZGTEUxQlFVRm9RaXhEUVVGTkxFbEJRVTFCTEVWQlFVMHNXVUZCV1N4RlFVRkZMRkZCUVZFc2VVSkJRVEJDTEVWQlFVVXNRMEZEZEVZc1JVTndSa0VzU1VGQlRXdENMRWRCUVZNc1EwRkRXRU1zUjBGRFFVTXNSMEZEUVVNc1IwRkRRVU1zUjBGRFFVTXNSMEZEUVVNc1IwRkRRVU1zUjBGRFFVTXNSMEZEUVVNc1IwRkRRVU1zUjBGRFFVTXNSMEZEUVVNc1IwRkRRVU1zUjBGRFFVTXNSMEZEUVVNc1IwRkRRVU1zUjBGRFFVTXNSMEZEUVVNc1IwRkRRVU1zUjBGRFFVTXNSMEZEUVVNc1JVRkRTaXhGUTI1Q1FTeEpRVUZOUXl4SFFVRlZMRWxCUVVrc1NVRkJTU3hEUVVOd1FpeERRVUZETEU5QlFWRkRMRVZCUVUwc1JVRkRaaXhEUVVGRExGZEJRVmtzUTBGQlEwTXNSMEZCUzBNc1IwRkJTME1zUlVGQlRTeERRVUZETEVWQlF5OUNMRU5CUVVNc1QwRkJVVWdzUlVGQlVTeEZRVU5xUWl4RFFVRkRMRk5CUVZWQkxFVkJRVkVzUlVGRGJrSXNRMEZCUXl4WFFVRlpRU3hGUVVGUkxFTkJRM3BDTEVOQlFVTXNSVUZEUzBrc1IwRkJZU3hEUVVObUxFOUJRVUZETEVkQlEwRXNTMEZCVFVNc1IwRkRUaXhOUVVGQlF5eEhRVU5CTEZOQlFVRkRMRWRCUTBFc1UwRkJRVU1zUjBGRFFTeFZRVUZCUXl4SFFVTkJMRWxCUVVGRExFZEJRMEVzVDBGQlFVTXNSMEZEUVN4UFFVRkJReXhIUVVOQkxGRkJRVUZETEVkQlEwRXNTVUZCUVdJc1IwRkRRU3hOUVVGQll5eEhRVU5CTEV0QlFVMURMRWRCUTA0c1MwRkJRVU1zUjBGRFFTeE5RVUZCUXl4SFFVTkJMRWxCUVVGb1FpeEhRVU5CTEVsQlFVRnBRaXhIUVVOQkxGVkJRVUZETEVWQlEwb3NSVUZEVFVNc1IwRkJaMElzUTBGRGJFSXNNa0pCUVRSQ2FFSXNSMEZETlVJc01FSkJRVEpDVlN4SFFVTXpRaXg1UWtGQk1FSkZMRWRCUXpGQ0xEQkNRVUV5UWtNc1IwRkRNMElzZDBKQlFYbENReXhIUVVONlFpdzRRa0ZCSzBKRExFVkJRMjVETEVWQlEwRXNVMEZCVTBVc1IwRkJVVU1zUlVGQldVTXNSVUZCV1VNc1JVRkJZU3hEUVVOc1JDeEpRVUZOUXl4RlFVRmhNMElzUjBGQlVTeEpRVUZKZVVJc1EwRkJWU3hGUVVONlF5eEhRVUZKUlN4SFFVRmpMRU5CUVVOSUxFVkJRMllzVDBGQlQwVXNSMEZCWlN4RFFVRkRReXhGUVVGWExGTkJRVk5ZTEVWQlFVc3NSVUZETVVOWExFVkJRVmNzVDBGQlQxZ3NSVUZCU3l4RlFVTjJRbGNzUlVGQlZ5eE5RVUZOTEVWQlJUTkNMRWxCUVVsRExFVkJRVTlFTEVWQlExZ3NSMEZCU1N4RFFVRkRReXhGUVVORUxFZEJRVWtzVFVGQlRTeFJRVUZSU2l4RFFVRlZMRVZCUTNoQ1NTeEZRVUZQTEVOQlFVTXNUVUZEVUN4RFFVTkVMRWxCUVUxRExFVkJRVThzVFVGQlRTeExRVUZMTjBJc1IwRkJVU3hMUVVGTExFTkJRVU1zUlVGRGFrTXNUMEZCVHpoQ0xFZEJRVTlCTEVsQlFWRXNVVUZCVVN4RlFVTTVRaXhKUVVGSlFTeEhRVUZQTEV0QlFVc3NWVUZCVlVFc1EwRkJSeXhEUVVGRExFVkJRemxDTEV0QlFVc3NTVUZCU1N4RlFVTmtMRTFCUVUwc1NVRkJTU3hOUVVGTkxHMUNRVUZ0UWt3c1EwRkJWU3hwUWtGQmFVSkpMRU5CUVVrc05rSkJRVFpDTEVOQlEyNUhMRU5CUlVvc1IwRkJTU3hOUVVGTkxGRkJRVkZNTEVOQlFWVXNSVUZEZUVJc1VVRkJWMDhzUzBGQlQxQXNSVUZEWkVrc1JVRkJUMEVzUlVGQlN5eFBRVUZQUnl4RFFVRkhMRTlCUlhKQ0xFOUJRVTlRTEVkQlFXVXNZVUZETTBKSkxFVkJRVTlLTEVWQlFWZEpMRVZCUVVzc1RVRkJUU3hEUVVGRExFZEJSV3hETEU5QlFVbEdMRWxCUTBGRkxFVkJRVTlCTEVWQlFVc3NUMEZCVDFvc1JVRkJTeXhIUVVOeVFsa3NSVUZCU3l4UFFVRlBMRU5CUVVOQkxFVkJRVTFITEVsQlFWRXNRMEZET1VJc1NVRkJUVU1zUlVGQlV5eFBRVUZQUkN4SFFVRlJMRk5CUVZjeFFpeEhRVUZYTUVJc1EwRkJSeXhGUVVGSlFTeEZRVU16UkN4SFFVRkpMRU5CUVVORExFVkJRVkVzUTBGRFZDeEpRVUZOUXl4RlFVRlZMRXRCUVVzc1ZVRkJWVVlzUTBGQlJ5eEZRVU0xUWtZc1JVRkJUeXhQUVVGUExFdEJRVXQ0UWl4RlFVRlZMRVZCUXpsQ0xFbEJRVWw1UWl4SFFVRlBMRXRCUVVzc1ZVRkJWVUVzUTBGQlJ5eERRVUZETEVWQlF6bENMRXRCUVVzc1NVRkJTU3hGUVVOa0xFMUJRVTBzU1VGQlNTeE5RVUZOTEhOQ1FVRnpRa2NzUTBGQlR5eG5Ra0ZCWjBKS0xFTkJRVWtzUlVGQlJTeERRVU4yUlN4RFFVTkJMRTlCUVV0RUxFVkJRVXNzVTBGQlUwa3NRMEZCVFN4SFFVTnlRa29zUlVGQlN5eExRVUZMU1N4RFFVRk5MRVZCUTJKS0xFTkJRMWdzUlVGQlJ5eERRVUZETEVOQlFVTXNRMEZEVkN4RFEzWkdRU3hKUVVGTlRTeEhRVUZ6UWl4RFFVRkRReXhGUVVGSFF5eEpRVUZOUkN4RlFVRkZMRWxCUVUxRExFVkJRVVVzU1VGQlRTeEhRVUZMUkN4RlFVRkZMRWxCUVUxRExFVkJRVVVzU1VGQlRTeEZRVUZKTEVWQlEzcEZReXhIUVVGT0xFMUJRVTFETEVOQlFVOHNRMEZEVkN4WlFVRlpMRU5CUVVVc1QwRkJRVU1zUlVGQlVTeFhRVUZCUXl4RlFVRlpMRTFCUVVGRExFVkJRVThzYVVKQlFVRkRMRVZCUVd0Q0xFOUJRVUZETEVWQlFWRXNaVUZCUVVNc1JVRkJaMElzYVVKQlFVRkRMRU5CUVdsQ0xFVkJRVWNzUTBGRGJrY3NTMEZCU3l4UFFVRlRMRTFCUVUwc1VVRkJVVTRzUTBGQlRTeEZRVU0xUWs4c1IwRkJVVkFzUlVGQlVTeFJRVUZSTEVWQlEzaENRU3hGUVVOSlR5eEhRVUZSTEV0QlFVMVFMRU5CUVUwc1JVRkRjRUlzUzBGRFZpeExRVUZMTEV0QlFWRXNUMEZCVDBrc1IwRkJWeXhWUVVGWlFTeEhRVUZYTEU5QlEzUkVMRXRCUVVzc1ZVRkJXVVFzUlVGQmJVSkxMRWRCUVdkQ0xFTkJRVU1zUlVGRGNrUXNTMEZCU3l4TFFVRlBSQ3hIUVVGUlRpeEZRVUZaTEV0QlFVc3NTMEZCVFVNc1EwRkJTeXhGUVVOb1JDeExRVUZMTEdkQ1FVRnJRa2tzUjBGQlFTeExRVUZCUVN4RlFVRnZRaXhMUVVNelF5eFBRVUZQTEdWQlFXVXNTMEZCVFVjc1IwRkJTeXhEUVVGRkxFMUJRVTlETEVWQlFVa3NRMEZCUXl4RlFVTXZReXhQUVVGUExHVkJRV1VzUzBGQlRVTXNSMEZCVVN4RFFVRkZMRTFCUVU5RExFVkJRVThzUTBGQlF5eEZRVU55UkN4UFFVRlBMR1ZCUVdVc1MwRkJUVU1zUjBGQlN5eERRVUZGTEUxQlFVOURMRVZCUVVrc1EwRkJReXhGUVVVdlF5eExRVUZMTEdWQlEwUXNUMEZCVDFRc1IwRkJiVUlzVjBGRGNFSkJMRVZCUTBGQkxFbEJRVzFDTEVkQlEyWldMRWRCUTBFc1NVRkRiRUlzUTBGRFFTeFBRVUZSTEVOQlEwb3NTVUZCVFc5Q0xFVkJRVThzVDBGQlR5eFBRVUZQYUVJc1JVRkJUeXhWUVVGWExFOUJRVThzTUVKQlFUQkNMRWxCUVVrc1EwRkJReXhGUVVOdVJpeFBRVUZCWjBJc1JVRkJTeXhMUVVGUExFdEJRVXNzUzBGQlN5eE5RVUZOTEVWQlEzSkNRU3hEUVVOWUxFTkJRMG9zUlVNNVFrRXNVMEZCVTBNc1IwRkJhMEpETEVWQlFVdERMRVZCUVZNc1EwRktla01zU1VGQlFVTXNSVUZMU1N4SlFVRk5ReXhGUVVGUkxFTkJRVU1zUlVGRFdFTXNSVUZCWjBKSUxFVkJRVkVzWVVGQlpTeEhRVU16UXl4SFFVRkpRU3hGUVVGUkxHRkJRV1VzU1VGQlUwUXNSVUZCU1N4WFFVRlpMRU5CUTJoRUxFbEJRVTFMTEVWQlFVMU1MRVZCUVVrc1YwRkJWeXhUUVVGVFFTeERRVUZITEVWQlEyNURTeXhIUVVOQlJpeEZRVUZOTEV0QlFVdEZMRU5CUVVjc1JVRkRaRVFzUlVGQlowSXNTVUZGV0Vvc1JVRkJTU3hYUVVGWExGZEJRM0JDU1N4RlFVRm5RaXhIUVVONFFpeERRVU5KUVN4SFFVTkJSQ3hGUVVGTkxFdEJRVXNzUzBGQlN5eEZRVU53UWl4SlFVRk5SeXhGUVVGTlF5eEhRVUYxUWxBc1JVRkJTME1zUTBGQlR5eEZRVU42UXl4RFFVRkZMR05CUVVGUExFTkJRV01zUlVGQlNVWXNSVUZCU1N4UlFVTTVRaXhIUVVGSlRpeEZRVUZKTEdOQlFXVXNRMEZEWmtjc1JVRkJUU3hUUVVGWExFZEJRMnBDUVN4RlFVRk5MRkZCUVZFc1JVRkJSU3hGUVVOd1FpeEpRVUZOVFN4RlFVRkxSQ3hGUVVGalVpeEZRVUZKTEdGQlFXRXNSVUZETVVOSExFVkJRVTBzVVVGQlVVOHNSMEZCWTBRc1JVRkJTU3hGUVVGRkxFTkJRVU1zUTBGRGRrTXNRMEZEUVN4SlFVRkpSU3hGUVVGWkxFZEJRMXBETEVWQlFXbENMRXRCUTNKQ0xFZEJRVWxhTEVWQlFVa3NVMEZCVlN4RFFVTmtMRWRCUVVsaExFVkJRVTlpTEVWQlFVa3NVVUZCVVN4RlFVRkhMRU5CUjNSQ0xFZEJSa2xCTEVWQlFVa3NVMEZCVXl4aFFVRmxTU3hIUVVNMVFrUXNSVUZCVFN4TFFVRkxMRVZCUVVVc1JVRkRZa2dzUlVGQlNTeFRRVUZUTEdOQlFXVXNRMEZETlVJc1NVRkJUVk1zUlVGQlMwUXNSVUZCWTFJc1JVRkJTU3hUUVVGVExHRkJRV0VzUlVGRGJrUkhMRVZCUVUwc1MwRkJTMDhzUjBGQlkwUXNSVUZCU1N4RlFVRkZMRU5CUVVNc1EwRkRjRU1zUTBGRlFVZ3NSVUZCU1N4cFFrRkJiVUlzUTBGQlF5eERRVUZEVGl4RlFVRkpMRkZCUXpkQ1dTeEZRVUZwUWxvc1JVRkJTU3hUUVVGVExFOUJRMnhETEVOQlEwRXNTVUZCVFdNc1JVRkJZMFlzUlVGQmFVSXNUMEZCV1N4SlFVRlBSQ3hGUVVGWkxFZEJRMmhGU1N4RlFVRlBReXhIUVVGVmFFSXNSVUZCU1N4VFFVRlZUU3hGUVVGTExFbEJRVTlOTEVWQlFXbENMRXRCUVU5RkxFTkJRVmNzUlVGRE9VVkdMRWxCUTBGSExFZEJRVkZGTEVkQlFWbEdMRVZCUVUwc1IwRkJTVkFzUlVGQlkwa3NRMEZCWXl4RFFVRkRMRWxCUXpGRVJ5eEZRVUZMTEVOQlFVTXNTVUZCVFN4TFFVRlBRU3hGUVVGTExFTkJRVU1zU1VGQlRTeE5RVU5vUTFvc1JVRkJUVUVzUlVGQlRTeFBRVUZUTEVOQlFVTXNTVUZCVFN4TlFVYzFRa0VzUlVGQlRVRXNSVUZCVFN4UFFVRlRMRU5CUVVNc1JVRkJTU3hQUVVGUFdTeERRVUZKTEVkQlIzSkRXaXhGUVVGTkxFdEJRVXRaTEVOQlFVa3NRMEZEZGtJc1RVRkZTVm9zUlVGQlRTeExRVUZMWVN4SFFVRlZhRUlzUlVGQlNTeFRRVUZWVFN4RFFVRkhMRU5CUVVNc1JVRkZNME1zU1VGQlNVb3NSVUZCUVVZc1JVRkJTU3hoUVVGS0xFMUJRVUZGTEVWQlFXZENMRTlCUTJoQ0xFZEJRVWxHTEVWQlFVa3NVVUZCVXl4RFFVTmlMRWxCUVUxVExFVkJRVXRFTEVWQlFXTlNMRVZCUVVrc1QwRkJUeXhGUVVOb1ExTXNSVUZCUnl4VFFVRlRPMEZCUVVFc1EwRkJTU3hIUVVOb1FrNHNSVUZCVFN4TFFVRkxMRXRCUVVzc1JVRkRhRUpCTEVWQlFVMHNTMEZCUzA4c1IwRkJZMFFzUlVGQlNTeEZRVUZGTEVOQlFVTXNSMEZIYUVOT0xFVkJRVTBzUzBGQlN5eFBRVUZQVFN4RFFVRkZMRVZCUVVVc1EwRkZPVUlzVFVGRlNVNHNSVUZCVFN4TFFVRkxMRXRCUVVzc1RVRkhia0lzUTBGRFJDeEpRVUZKWlN4RlFVRkxiRUlzUlVGQlNTeFJRVU5VYTBJc1IwRkJUVkFzU1VGRFRrOHNSVUZCUzBFc1JVRkJSeXhSUVVGUkxFOUJRVkVzUlVGQlJTeEhRVU14UWtFc1MwRkRTeXhEUVVGRFVDeEhRVUZoUXl4SlFVRnRRbFFzUlVGQlRVRXNSVUZCVFN4UFFVRlRMRU5CUVVNc1NVRkJUU3hKUVVNNVJFRXNSVUZCVFN4TFFVRkxMRVZCUVVVc1JVRkRha0pCTEVWQlFVMHNTMEZCUzA4c1IwRkJZMFlzUlVGQlkxVXNRMEZCUlN4RlFVRkhMRVZCUVVVc1EwRkJReXhGUVVWMlJDeERRVU5CTEU5QlFVOW1MRVZCUVUwc1MwRkJTenRCUVVGQkxFTkJRVWtzUlVGQlNUdEJRVUZCTEVOQlF6bENMRU5EZEVWQkxFbEJRVTFuUWl4SFFVRk9MRTFCUVUxRExFTkJRVk1zUTBGRFdDeFpRVUZaUXl4RlFVRlBReXhGUVVGVlF5eEZRVUZUTEVOQlJXeERMRXRCUVVzc1kwRkJaMElzUzBGRmNrSXNTMEZCU3l4UlFVRlZMRXRCUldZc1MwRkJTeXhQUVVGVExFTkJRVU1zUlVGRlppeExRVUZMTEZOQlFWY3NRMEZCUXl4RlFVTnFRaXhQUVVGUExHVkJRV1VzUzBGQlRVTXNSMEZCVnl4RFFVRkZMRTFCUVU5RExFVkJRVWtzUTBGQlF5eEZRVU55UkN4SlFVRkpReXhGUVVGWkxFdEJRMW9zVDBGQlQwb3NSMEZCWVN4WlFVRmpMRTFCUVUwc1VVRkJVVUVzUTBGQlVTeEZRVU40UkVrc1JVRkJXVW9zUlVGRlVFTXNTVUZCV1N4UlFVRmhSQ3hKUVVNNVFrTXNSVUZCVlVRc1JVRkRWa0VzUlVGQlZ5eFJRVVZtTEVsQlFVMUxMRVZCUVUwc1QwRkJUeXhQUVVGUExFTkJRM1JDTEZsQlFXRXNSMEZEWWl4cFFrRkJhMElzUjBGRGJFSXNVMEZCVlN4UFFVTldMR0ZCUVdNc1IwRkRaQ3hQUVVGUkxFZEJRMUlzVjBGQldTeEhRVU5hTEZkQlFWa3NSMEZEV2l4UlFVRlRMRXRCUTJJc1JVRkJSMG9zUTBGQlR5eEZRVU5XTEV0QlFVc3NVVUZCVlVrc1JVRkRaaXhIUVVGSkxFTkJRVVVzVVVGQlFVTXNRMEZCVVN4RlFVRkpSQ3hGUVVOa1NpeEhRVUZCTEUxQlFVRkJMRVZCUVZNc1lVRkRWQ3hMUVVGTExGZEJRV0ZCTEVWQlFWRXNXVUZCV1N4WFFVRlhMRVZCUXpkRExFdEJRVXNzVjBGQlZ5eExRVUZMTEZkQlEzSkNTeXhGUVVGVkxFdEJRVXNzVjBGQlZ5eExRVUZMTEZWQlIyNURMRXRCUVVzc1YwRkJZU3hKUVVGSlF5eEhRVUZYTEVOQlFVVXNVVUZCUVVRc1EwRkJVU3hEUVVGRExFVkJRMmhFTEV0QlFVc3NWVUZCVlVFc1JVRkJVMHdzUTBGQlR5eEZRVVV2UWl4TFFVRkxMRk5CUTBSR0xFbEJRVlVzVDBGQldTeExRVUZQTEV0QlFVc3NWMEZCVjBFc1JVRkJUMHNzUlVGQlYwZ3NRMEZCVHl4RFFVTTVSU3hEUVUxQkxFOUJRVkVzUTBGRFNpeEpRVUZOVHl4RlFVRlBMRTlCUVU4c1QwRkJUMVlzUlVGQlV5eFZRVUZYTEVOQlF6TkRMRU5CUVVOSkxFVkJRVk1zUlVGQlJ5eERRVUZGTEUxQlFVOURMRVZCUVVrc1EwRkRPVUlzUTBGQlF5eEZRVU5FTEU5QlFVRkxMRVZCUVVzc1kwRkJaMElzUzBGQlN5eGpRVU14UWtFc1JVRkJTeXhSUVVGVkxFdEJRVXNzVVVGRGNFSkJMRVZCUVVzc1QwRkJVeXhMUVVGTExFOUJRVThzVFVGQlRTeEZRVU5vUTBFc1JVRkJTeXhUUVVGWExFdEJRVXNzVTBGQlV5eE5RVUZOTEVWQlEzQkRRU3hGUVVGTExGRkJRVlVzVDBGQlR5eFBRVUZQTEVOQlFVTXNSVUZCUnl4TFFVRkxMRTlCUVU4c1JVRkRla01zUzBGQlN5eGhRVU5NUVN4RlFVRkxMRmRCUVdFc1MwRkJTeXhYUVVGWExFMUJRVTBzUjBGRE5VTkJMRVZCUVVzc1QwRkJVeXhMUVVGTExFOUJRVThzVFVGQlRTeEZRVVZvUTBFc1JVRkJTeXhUUVVGWFF5eEZRVUZQTEV0QlFVc3NVVUZCVVN4RlFVTTVRaXhMUVVGTExGTkJRVk1zVFVGQlRVUXNSVUZCU3l4TlFVRk5MRVZCUXk5Q0xFdEJRVXNzVTBGRFVDeExRVUZMTEZGQlEweEJMRVZCUVVzc1RVRkJVU3hMUVVGTExFMUJRVTBzVFVGQlRTeEhRVU16UWtFc1EwRkRXQ3hEUVVWQkxFbEJRVWxVTEVWQlFVOHNRMEZEU0Zjc1IwRkJhVUlzUzBGQlN5eFJRVUZSTEVkQlF6bENMRXRCUVVzc1UwRkJVeXhKUVVGSldDeERRVUZMTEVOQlF5OUNMRU5CUlVFc1RVRkJUVmtzUlVGQlRWb3NSVUZCVHl4RFFVTllWeXhIUVVGcFFpeExRVUZMTEZGQlFWRXNSMEZET1VJc1MwRkJTeXhUUVVGVExFMUJRVTFETEVWQlFVMWFMRU5CUVVzc1EwRkRka01zUTBGVlFTeFpRVUZaWVN4RlFVRk5ReXhGUVVGTkxFTkJRM0JDTEVkQlFVa3NRMEZCUTBRc1JVRkJTeXhQUVVGUkxFTkJRMlFzU1VGQlRVVXNSVUZCVDBNc1IwRkJXU3hKUVVGSkxFVkJRemRDU0N4RlFVRkxMRTlCUlVRc1EwRkJRME1zUjBGQlVVTXNSVUZCU3l4SlFVRkpSQ3hEUVVGSkxFVkJRVWxITEVkQlFXTklMRWRCUVZFc1NVRkJTME1zUTBGQlNTeEZRVUZKUkN4RFFVTnlSU3hEUVVOQkxFOUJRVThzU1VGQlNVa3NSMEZCVFV3c1JVRkJTeXhOUVVGTkxFTkJRMmhETEVOQlEwRXNWMEZCVjJJc1JVRkJUME1zUlVGQlZVTXNSVUZCVXl4RFFVTnFReXhKUVVGSlJ5eEZRVU5LTEVkQlFVa3NUMEZCVDBvc1IwRkJZU3hYUVVOd1FrUXNSVUZCVVVNc1JVRkJVeXhMUVVGTExFTkJRVVVzUjBGQlNVUXNRMEZCVFN4RlFVRkhMRWRCUVVsQkxFTkJRVXNzUlVGRE9VTkxMRVZCUVZsS0xGVkJSVkFzVFVGQlRTeFJRVUZSUVN4RFFVRlJMRVZCUVVjc1EwRkRPVUlzU1VGQlRXdENMRVZCUVZsRExFZEJRVTBzVDBGQlQwRXNSMEZCVFN4VlFVRlpRU3hoUVVGaExGRkJRVlZCTEdGQlFXRXNUMEZETDBWRExFVkJRVkZ3UWl4RlFVRlRMRTlCUVU5clFpeERRVUZSTEVWQlFVVXNTVUZCU1N4TlFVRk5MRVZCUXpsRFJTeEZRVUZOTEU5QlFWTXNTVUZEWm5CQ0xFVkJRVmRCTEVWQlFWTXNUMEZCVDI5Q0xFTkJRVXNzUjBGRGNFTm9RaXhGUVVGWlNpeERRVU5vUWl4TlFVTlRReXhKUVVGWkxGRkJRV0ZFTEVsQlF6bENReXhGUVVGVlJDeEZRVU5XUVN4RlFVRlhMRkZCUldZc1IwRkJUU3hEUVVGRkxITkNRVUZCY1VJc1JVRkJkVUlzWVVGQlFVTXNSVUZCWXl4TFFVRkJReXhGUVVGTkxHTkJRVUZETEVWQlFXVXNVMEZCUVVNc1JVRkJWU3hKUVVGQlF5eERRVUZKTEVWQlFVbDZRaXhIUVVGQkxFdEJRVUZCTEVWQlFWY3NRMEZCUXl4RlFVTXhSaXhEUVVGRkxGTkJRVUV3UWl4RlFVRlZMRmRCUVVGRExFVkJRVmtzWTBGQlFVTXNRMEZCWXl4RlFVRkpReXhIUVVGclFpeExRVVZzUlZJc1IwRkJaMElzUjBGQlJ5eEZRVU5pVXl4RlFVRk5MRU5CUTFJc2MwSkJRWFZDVml4SFFVRkJMRXRCUVVGQkxFVkJRWGxDTEVkQlEyaEVMR05CUVdWSExFZEJRVUVzUzBGQlFVRXNSVUZCYVVJc1IwRkRhRU1zVTBGQlFVY3NSVUZEUVN4VFFVRkJSaXhGUVVOQkxGTkJRVlZ5UWl4RlFVTldMRTlCUVZFc1MwRkJTeXhQUVVOaUxHTkJRVUY1UWl4RFFVTktMRVZCUTAxcVFpeEZRVUZQYjBJc1IwRkJWMnBETEVWQlFVOHlRaXhGUVVGTFN5eERRVUZITEVWQlEzWkRMRTlCUVVsU0xFZEJRVkZWTEVWQlFXRnlRaXhEUVVGSkxFbEJRM3BDUVN4RlFVRkxMRXRCUVU4c1NVRkRhRUpuUWl4RlFVRlhMRVZCUTBwb1FpeERRVU5ZTEVOQlMwRXNWMEZCVjNOQ0xFVkJRVXR1UXl4RlFVRlBSU3hGUVVGVkxFTkJRVU1zUlVGQlJ5eERRVU5xUXl4SlFVRk5hME1zUlVGQlNTeExRVUZMTEZkQlFWZEVMRVZCUVVzc1MwRkJUV3BETEVOQlFVOHNSVUZEZEVOclFpeEZRVUZKTEV0QlFVc3NWMEZCVjNCQ0xFVkJRVThzUzBGQlRVVXNRMEZCVHl4RlFVTTVReXhQUVVGUExFbEJRVWx0UXl4SFFVRkxSQ3hGUVVGSGFFSXNRMEZCUXl4RFFVTjRRaXhEUVV0QkxFOUJRVTlsTEVWQlFVc3NRMEZEVWl4UFFVRlBlRUlzUjBGQmFVSXNTMEZCU3l4UlFVRlJMRVZCUVVrc1MwRkJTeXhUUVVGVExFOUJRVTkzUWl4RFFVRkhMRVZCUVVrc1JVRkRla1VzUTBGTFFTeFRRVUZUZGtJc1JVRkJUU3hEUVVOWUxFOUJRVWt3UWl4SFFVRlpNVUlzUTBGQlNTeEZRVU5hTEV0QlFVc3NWVUZCV1N4TFFVTldMRWxCUlZnc1MwRkJTeXhUUVVGWExFdEJRMVFzU1VGRlNrUXNSMEZCYVVJc1MwRkJTeXhSUVVGUkxFVkJReTlDTEV0QlFVc3NVMEZCVXl4VFFVRlRReXhEUVVGSkxFVkJRek5DTEVWQlExWXNRMEZOUVN4SlFVRkpkVUlzUlVGQlMwa3NSVUZCV1N4RFFVTnFRaXhQUVVGUFRDeEZRVUZoTEV0QlFVc3NVVUZCVVN4RlFVTXpRaXhMUVVGTExGTkJRVk1zU1VGQlNVTXNSVUZCUzBrc1EwRkJWU3hGUVVOcVF5eE5RVU5XTEVOQlRVRXNUVUZCVFROQ0xFVkJRVTB5UWl4RlFVRlpMRU5CUTNCQ0xFOUJRVWxFTEVkQlFWa3hRaXhEUVVGSkxFVkJRMVFzUTBGQlF6SkNMRWRCUVdORExFVkJRVk1zUzBGQlN5eFJRVUZSTEVWQlEzUkRMRXRCUVVzc1UwRkJVeXhOUVVOa0xFdEJRVXNzVTBGRFVrNHNSVUZCWVN4TFFVRkxMRkZCUVZFc1JVRkRNMElzUzBGQlN5eFRRVUZUTEUxQlFVMTBRaXhGUVVGTk1rSXNRMEZCVlN4RlFVTndReXhOUVVOV0xFTkJTVUVzU1VGQlNVb3NSVUZCU3l4RFFVTk1MRTlCUVU5RUxFVkJRV0VzUzBGQlN5eFJRVUZSTEVWQlFVa3NTMEZCU3l4VFFVRlRMRWxCUVVsRExFTkJRVWNzUlVGQlNTeEZRVU5zUlN4RFFVbEJMRTFCUVUxMlFpeEZRVUZOTEVOQlExSXNUMEZCU1RCQ0xFZEJRVmt4UWl4RFFVRkpMRVZCUTFRc1MwRkJTeXhYUVVGaExFOUJRM1JDYzBJc1JVRkJZU3hMUVVGTExGRkJRVkVzUlVGQlNTeExRVUZMTEZOQlFWTXNUVUZCVFhSQ0xFTkJRVWtzUlVGQlNTeEZRVU55UlN4RFFVdEJMRWxCUVVsMVFpeEZRVUZMYmtNc1JVRkJUeXhEUVVOU0xFdEJRVXNzVlVGQldTeExRVVZxUWl4TFFVRkxMRk5CUVZkNVF5eEhRVUZ0UWl4TFFVRkxMRTlCUVZFc1EwRkJRMDRzUTBGQlJ5eEZRVUZIYmtNc1EwRkJTeXhGUVVWMlJGY3NSMEZCYVVJc1MwRkJTeXhSUVVGUkxFZEJRMjVETEV0QlFVc3NVMEZCVXl4SlFVRkpkMElzUlVGQlMyNURMRU5CUVVzc1EwRkZjRU1zUTBGTFFTeE5RVUZOV1N4RlFVRk5XaXhGUVVGUExFTkJRMWh6UXl4SFFVRlpNVUlzUTBGQlNTeEZRVVZvUWl4TFFVRkxMRk5CUVZkYUxFVkJSVmdzUzBGQlN5eFZRVUZaTEV0QlJYUkNMRXRCUVVzc1UwRkJWM2xETEVkQlFXMUNMRXRCUVVzc1QwRkJVU3hOUVVGTkxFdEJRVXMzUWl4RFFVRkpMRVZCUVVkYUxFTkJRVXNzUlVGRmJFVlhMRWRCUVdsQ0xFdEJRVXNzVVVGQlVTeEhRVU51UXl4TFFVRkxMRk5CUVZNc1RVRkJUVU1zUlVGQlRWb3NRMEZCU3l4RFFVVjJReXhEUVZGQkxGVkJRVlZQTEVWQlFWTk1MRVZCUVZVc1EwRkJReXhGUVVGSExFTkJRM3BDTEU5QlFVOUxMRWRCUVZrc1YwRkRia0pCTEVWQlFWVXNUMEZCVDBFc1EwRkJUeXhIUVVNMVFpeEpRVUZKUkN4RlFVTktMRTlCUVZGRExFVkJRVk1zUTBGRFlpeEpRVUZMTEUxQlEwY3NTMEZCU3l4WFFVTk1MRXRCUVVzc1YwRkJWeXhMUVVGTExGRkJRVlVzVFVGRkwwSXNTMEZCU3l4WFFVRmhMRWxCUVVsRExFZEJRVmNzUTBGQlJTeFJRVUZUTEV0QlFVMHNRMEZCUXl4RlFVTjJSRVlzUlVGQlRTeERRVUZGTEdsQ1FVRnJRaXhIUVVGUExFOUJRVkVzVlVGQlZ5eEZRVU53UkN4TlFVTktMRWxCUVVzc1RVRkRUQ3hKUVVGTExFOUJRMGNzUzBGQlN5eFhRVU5NTEV0QlFVc3NWMEZCVnl4TFFVRkxMRkZCUVZWRExFVkJSUzlDTEV0QlFVc3NWMEZCWVN4SlFVRkpReXhIUVVGWExFTkJRVVVzVVVGQlFVUXNRMEZCVVN4RFFVRkRMRVZCUTJoRVJDeEZRVUZOTEVOQlFVVXNhVUpCUVd0Q0xFZEJRVTBzVDBGQlVTeE5RVUZQTEVWQlF5OURMRTFCUTBvc1MwRkJTeXhMUVVOSExFdEJRVXNzV1VGRFRDeFBRVUZQTEV0QlFVc3NWMEZEYUVKQkxFVkJRVTBzUzBGRFRpeE5RVU5LTEZGQlFWTXNRMEZEVEN4SlFVRk5iME1zUlVGQlN5eExRVUZMTEZWQlFWVnVReXhEUVVGUExFVkJRMnBETEUxQlFVMHNTVUZCU1N4TlFVRk5MQ3RFUVVFclJHMURMRU5CUVVVc1JVRkJSU3hEUVVOMlJpeERRVU5LTEVOQlJVRXNSMEZCU1hoRExFVkJRVkVzYTBKQlFXdENMRTlCUXpGQ0xFdEJRVXNzVDBGQlUwRXNSVUZCVVN4bFFVTnFRa2tzUlVGRFRDeExRVUZMTEU5QlFWTXNTVUZCU1hGRExFZEJRVThzVDBGQlR5eFBRVUZQY2tNc1JVRkJTMG9zUTBGQlR5eERRVUZETEUxQlJYQkVMRTlCUVUwc1NVRkJTU3hOUVVGTkxIRkZRVUZ4UlN4RFFVTTNSaXhEUVVWQkxFdEJRVXNzUTBGQlJTeExRVUZCTUVNc1JVRkJUU3hSUVVGQlF5eEZRVUZUTEZOQlFVRkRMRVZCUVZVc1kwRkJRVU1zUlVGQlpTeFRRVUZCYmtJc1JVRkJWU3hSUVVGQmIwSXNRMEZCVVN4RlFVRkpMRU5CUVVNc1JVRkJSeXhEUVVOeVJTeEpRVUZOYUVJc1JVRkJUU3hEUVVOU0xGRkJRVk1zU1VGQlNTeEpRVU5pTEVsQlFVc3NTMEZEVEN4TFFVRk5MRU5CUVVOWkxFVkJRMUFzVTBGQlZVVXNTVUZCWVN4SFFVTjJRaXhoUVVGakxFZEJRMlFzWTBGQlpTeFBRVUZQUXl4SFFVRnJRaXhUUVVGWFFTeEZRVUZuUWl4SFFVTjJSU3hGUVVOTlJTeEZRVUZOUXl4SFFVRkxMRXRCUVVzc1UwRkJWVXdzUjBGQlFTeExRVUZCUVN4RlFVRlhMRWRCUVVsaUxFTkJRVWNzUlVGRGJFUXNSMEZCU1N4UFFVRlBTaXhIUVVGaExGZEJRM0JDTEU5QlFWY3NRMEZCUlN4TlFVRkJkVUlzUlVGQlR5eEpRVUZCUml4RFFVRkpMRWxCUVV0cVFpeEZRVUZKTEZGQlFWRXNUMEZCVHl4RlFVTTFRMG9zUlVGQlUzRkNMRVZCUVV0RkxFTkJRVXNzUlVGRE0wSXNUMEZCVHl4UFFVRlBTQ3hIUVVGWkxGZEJRM0JDU1N4SFFVRmhTaXhGUVVGVExFTkJRVVVzUjBGQlNVTXNRMEZCU1N4RlFVRkhMRWRCUVVsQkxFTkJRVWNzUlVGRE1VTkJMRU5CUTFZc1EwRlBRU3hQUVVGUFNpeEZRVUZUYWtJc1JVRkJWU3hEUVVOMFFpeFBRVUZQTEV0QlFVc3NTMEZCU3l4RFFVRkZMRXRCUVUwc1IwRkJUU3hSUVVGQmFVSXNSVUZCVXl4VFFVRlZMRWRCUVU4c1UwRkJRV3BDTEVOQlFWTXNRMEZCUXl4RFFVTjJSU3hEUVVWQkxGTkJRVk14UWl4RlFVRlZMRU5CUVVNc1JVRkJSeXhEUVVOdVFpeEhRVUZKTEV0QlFVc3NUMEZCVHl4UFFVRlRMRVZCUTNKQ0xFMUJRVTBzU1VGQlNTeE5RVUZOTERSRFFVRTBReXhGUVVOb1JTeEhRVUZKTEZkQlFWbEJMRWxCUTFnc1EwRkJReXhQUVVGUExGVkJRVlZCTEVWQlFWRXNUVUZCVFN4SFFVRkxMRTlCUVU5QkxFVkJRVkVzVFVGQlRTeEhRVUZMTEVkQlFVa3NRMEZEY0VVc1NVRkJUVzFFTEVWQlFVa3NTMEZCU3l4VlFVRlZia1FzUlVGQlVTeE5RVUZOTEVWQlEzWkRMRTFCUVUwc1NVRkJTU3hOUVVGTkxHMUVRVUZ0UkcxRUxFTkJRVU1zUlVGQlJTeERRVU14UlN4RFFVTkJMRTlCUVU5RExFZEJRV3RDTEV0QlFVMXdSQ3hEUVVGUExFTkJRekZETEVOQlEwb3NSVUZEUVN4VFFVRlRVeXhIUVVGcFFqUkRMRVZCUVZVc1EwRkRhRU1zUjBGQlNYSkNMRVZCUVdGeFFpeERRVUZSTEVWQlEzSkNMRTFCUVU4c1IwRkRXQ3hOUVVGTkxFbEJRVWtzVFVGQlRTeHBSRUZCYVVRc1EwRkRja1VzUTBNMVZVRXNTVUZCVFVNc1IwRkJUaXhqUVVGM1FpeExRVUZOTEVOQlF6RkNMRmxCUVZsRExFVkJRVTFETEVWQlFVdERMRVZCUVUxRExFVkJRVk1zUTBGRGJFTXNUVUZCVFN4RlFVTk9MRXRCUVVzc1MwRkJUMGdzUlVGRFdpeExRVUZMTEV0QlFVOUZMRVZCUTFvc1MwRkJTeXhSUVVGVlF5eEZRVU5tTEV0QlFVc3NTVUZCVFVZc1EwRkRaaXhEUVVOS0xFVkJRMDFITEVkQlFVNHNZMEZCTmtKTUxFVkJRVlVzUTBGRGJrTXNXVUZCV1VVc1JVRkJTME1zUlVGQlRVTXNSVUZCVXl4RFFVTTFRaXhOUVVGTkxHbENRVUZyUWtZc1JVRkJTME1zUlVGQlRVTXNRMEZCVHl4RFFVTTVReXhEUVVOS0xFVkJRMDFGTEVkQlFVNHNZMEZCTUVKT0xFVkJRVlVzUTBGRGFFTXNXVUZCV1VVc1JVRkJTME1zUlVGQlRVTXNSVUZCVXl4RFFVTTFRaXhOUVVGTkxHTkJRV1ZHTEVWQlFVdERMRVZCUVUxRExFTkJRVThzUTBGRE0wTXNRMEZEU2l4RlFVTk5SeXhIUVVGblFpeERRVUZEUXl4RlFVRkxReXhKUVVGUlF5eEhRVUZWTEVOQlF6RkRMRWRCUVVsQkxFVkJRVTBzU1VGQlNTeERRVUZETEVsQlFVMHNSMEZEYWtJc1QwRkRTa0VzUlVGQlRTeFJRVUZWUVN4RlFVRk5MRWxCUVVrc1NVRkJTVklzUjBGQlQwOHNSVUZCUnl4UlFVRlJVQ3hEUVVGSExFTkJRVU1zUlVGRGNFUXNSMEZCVFN4RFFVRkZMRXRCUVVGVExFVkJRVTBzU1VGQlFVTXNRMEZCU1N4RlFVRkpSaXhGUVVGTkxGRkJRVkVzUTBGQlF5eEZRVU55UTBFc1JVRkJUU3hUUVVGWExGbEJRVmxETEVOQlFVa3NXVUZCV1VNc1EwRkJSeXhIUVVOb1JDeEpRVUZKUXl4RlFVRkxSQ3hGUVVGTkxFVkJRMWhGTEVWQlFWVk9MRVZCUTFRc1ZVRkJWVU1zUlVGQlJ5eFhRVUZYUlN4RlFVRlBMRU5CUVVNc1JVRkJSMFlzUlVGQlJ5eFhRVUZYUlN4RFFVRkpMRU5CUVVNc1JVRkRkRVFzVVVGQlVTeFhRVUZaTEVWQlFVVXNSVUZGTTBJc1IwRkJTVVVzUjBGQlRTeEpRVUZOUXl4RlFVRlJMRTlCUVZNc1IwRkJTU3hEUVVOcVF5eEpRVUZOUXl4RlFVRlpMRXRCUVVzc1NVRkJTVVlzUlVGQlN5eEhRVUZKUXl4RlFVRlJMRTlCUVZNc1JVRkJSU3hGUVVOMlJFRXNSVUZCVlN4VFFVRk5RU3hGUVVGUkxGVkJRVlZETEVOQlFWTXNSVUZETTBOR0xFZEJRVTFGTEVWQlFWa3NRMEZEZEVJc1EwRkpRU3hIUVVoSlJDeEZRVUZSTEU5QlFWTXNTMEZEYWtKQkxFVkJRVlZCTEVWQlFWRXNWVUZCVlN4RlFVRkhMRVZCUVVVc1JVRkJTU3hWUVVWeVEwZ3NSVUZCVHl4SFFVRkxMRTlCUVU4c1MwRkJTMGNzUlVGQlVTeFZRVUZWTEVWQlFVZEVMRU5CUVVVc1EwRkJReXhGUVVGSExFTkJSVzVFTEVsQlFVbEhMRVZCUVU5U0xFVkJRVWtzVlVGQlZVTXNSVUZCUnl4WFFVRlhSU3hGUVVGUExFTkJRVU1zUlVGQlIwWXNSVUZCUnl4WFFVRlhSU3hGUVVGUExFTkJRVU1zUTBGQlF5eEZRVU55UlVzc1JVRkJTeXhQUVVGVExFdEJRMlJCTEVWQlFVOUJMRVZCUVVzc1ZVRkJWU3hGUVVGSExFVkJRVVVzUlVGQlNUdEJRVUZCTEVkQlEyNURSaXhGUVVGVlJTeEZRVUZQUml4RFFVTnlRaXhEUVVOQkxFZEJRVWtzVDBGQlR5eExRVUZMUVN4RFFVRlBMRVZCUVVjc1EwRkRkRUlzU1VGQlNVY3NSVUZCVVN4RlFVTk9ReXhGUVVGTlVpeEZRVUZOTEZGQlFWRXNRMEZCUXl4RlFVTjJRbEVzUjBGQlQwRXNSVUZCU1N4UFFVRlRVQ3hIUVVGUlR5eEZRVUZKTEVsQlFVMU9MRWxCUTNSRFN5eEZRVUZSTEV0QlFVc3NTVUZCU1N4RlFVRkhMRXRCUVVzc1NVRkJTVU1zUlVGQlNTeEpRVUZOVGl4RlFVRkxMRWRCUVV0RExFTkJRVVVzUTBGQlF5eEhRVVY0UkN4SlFVRk5UU3hGUVVGVkxFbEJRVWtzVDBGQlQwNHNRMEZCUlN4RlFVRkpMRWxCUVVrc1QwRkJUMGtzUTBGQlN5eEZRVU5xUkZBc1JVRkJUU3hUUVVGWE8wRkJRVUU3UVVGQlFTeEZRVUZSU1N4RFFVRlBPMEZCUVVFc1JVRkJTMHNzUTBGQlR6dEJRVUZCTEVOQlEyaEVMRU5CUTBvc1JVTjBSRUVzVTBGQlUwTXNSMEZCWVVNc1JVRkJVU3hEUVVGRkxFdEJRVUZETEVWQlFVMHNWVUZCUVVNc1JVRkJWeXhMUVVGQlF5eEZRVUZOTEU5QlFVRkRMRVZCUVZFc1VVRkJRVU1zUlVGQlV5eGhRVUZCUXl4RlFVRmpMR1ZCUVVGRExFTkJRV1VzUlVGQlJ5eERRVU53Unl4SlFVRkpReXhGUVVGakxFZEJRMlJETEVWQlFWbEdMRVZCUTFwSExFVkJRVmRJTEVWQlExaEpMRVZCUVZVc1IwRkRWa01zUlVGQllTeEhRVU5pUXl4RlFVRmhMRWRCUTJKRExFVkJRVmNzUjBGRFdFTXNSVUZCVFN4TFFVTk9ReXhGUVVGVExFdEJRMVJETEVWQlFVMHNTMEZEVGtNc1JVRkJiVUlzUzBGRGJrSkRMRVZCUVZFc1MwRkRVa01zUlVGQlVTeExRVU5TUXl4RlFVRlJMRXRCUTFvc1VVRkJWME1zUzBGQlUzUkNMRVZCWTJoQ0xFOUJZa2xqTEVsQlEwbFJMRVZCUVUwc1QwRkJVeXhUUVVObVFTeEZRVUZOTEU5QlFWTXNWMEZEWmtFc1JVRkJUU3hQUVVGVExGTkJRMlpxUWl4RlFVRlJhVUlzUlVGQlRTeFBRVUZSTEdWQlFXZENMSFZGUVVGMVJTeEZRVU5xU0ZJc1JVRkJWeXhKUVVWWVF5eEpRVU5KVGl4SFFVRmhZU3hGUVVGTkxFOUJRVk1zVjBGQllVRXNSVUZCVFN4UFFVRlRMRmRCUTNoRWFrSXNSVUZCVVZVc1JVRkJTeXhuUWtGQmFVSXNjVU5CUVhGRExFVkJSWFpGUVN4RlFVRk5MRTFCUlVaUExFVkJRVTBzUzBGQlRTeERRVU5vUWl4SlFVRkxMRkZCU1Vjc1EwRkJRM0pDTEVsQlEwRkRMRWxCUVdNc1kwRkJaVU1zUjBGQlFTeFpRVUZCUVN4RlFVRk5MRkZCUVZNc2IwSkJRemREYlVJc1JVRkJUU3hQUVVGUExGTkJRVk1zUjBGQlNTeEpRVU14UWxBc1JVRkJUVThzUjBGRlZsb3NSVUZCVnl4SFFVTllMRTFCUTBvc1NVRkJTeXhWUVVGWExFTkJRMUJCTEVkQlEwUk1MRVZCUVZGcFFpeEZRVUZQTEdWQlFXZENMSGRGUVVGM1JTeEZRVU16Unl4SlFVRk5ReXhGUVVGTFJDeEZRVUZOTEU5QlFVOHNWVUZCVlN4RFFVRkRMRWRCUVVzc1NVRkRia05ZTEVWQlIwUkJMRWRCUVZkRExFVkJRV0ZYTEVWQlJuaENXaXhGUVVGVldTeEZRVWRrV0N4RlFVRmhMRWRCUTJKSUxFVkJRVmtzUjBGRFdpeExRVU5LTEVOQlEwRXNTVUZCU3l4VlFVTkhRU3hGUVVOSlJTeEZRVU5CUVN4SFFVRlhWeXhGUVVGTkxFOUJSV3BDWkN4RlFVRmpMRWRCUjJ4Q1NTeEhRVUZqVlN4RlFVRk5MRTlCUTNoQ1lpeEZRVUZaTEVkQlExcEpMRVZCUVdFc1NVRkRWRWNzUjBGQlZVTXNTMEZEVmtNc1JVRkJiVUpKTEVkQlEzWkNXaXhGUVVGWExFZEJRMWdzVFVGRFNpeEpRVUZMTEZOQlEwZE5MRWRCUTBGWUxFVkJRVkZwUWl4RlFVRlBMRzFDUVVGdlFpeHZRMEZCYjBNc1JVRkRka1ZCTEVWQlFVMHNUMEZCVHl4VFFVRlRMRWRCUVVjc1IwRkRla0pxUWl4RlFVRlJhVUlzUlVGQlRTeFBRVUZUUVN4RlFVRk5MRTlCUVU4c1QwRkJVeXhGUVVGSExGbEJRV0VzYTBOQlFXMURMRVZCUVVrc1JVRkRlRWRPTEVWQlFWTk5MRVZCUTB4RUxFbEJRVlVzVDBGRFZrRXNSVUZCVVVNc1JVRkJUU3hSUVVOc1FtSXNSVUZCV1N4SFFVTmFReXhGUVVGWExFZEJRMWhKTEVWQlFWY3NSMEZEV0N4TlFVTktMRWxCUVVzc1RVRkJUeXhEUVVOS1J5eEhRVU5CV2l4RlFVRlJhVUlzUlVGQlR5eG5Ra0ZCYVVJc2FVTkJRV2xETEVWQlEzSkZUQ3hGUVVGTlN5eEZRVU5HUkN4SlFVRlZMRTlCUTFaQkxFVkJRVkZETEVWQlFVMHNVVUZEYkVKaUxFVkJRVmtzUjBGRFdrTXNSVUZCVnl4SFFVTllTU3hGUVVGWExFZEJRMWdzUzBGRFNpeERRVU5CTEV0QlFVdGFMRWRCUlVkakxFZEJRVlZETEVsQlExWmFMRVZCUVZGcFFpeEZRVUZQTEdsQ1FVRnJRaXh6UTBGQmMwTkJMRVZCUVUwc1RVRkJUU3haUVVGWkxFVkJReTlHUml4SFFVTkJaaXhGUVVGUmFVSXNSVUZCVHl4dFFrRkJiMElzWTBGQlkwRXNSVUZCVFN4TlFVRk5MRTlCUVU5eVFpeEhRVUZCTEV0QlFVRkJMRVZCUVZFc1dVRkJXU3hGUVVGRkxFVkJRemxHYlVJc1JVRkJVVVVzUlVGRFVtSXNSVUZEU1ZBc1NVRkJZeXhuUWtGQmEwSkJMRWxCUVdNc2JVSkJRMnhFVVN4RlFVRlhMRWRCUTFnc1RVRkRTaXhKUVVGTExGRkJRMFFzUjBGQlNWUXNSVUZCVFN4RFFVTkdhMElzUjBGRFFXUXNSVUZCVVdsQ0xFVkJRVThzYlVKQlFXOUNMRzFDUVVGdFFuSkNMRU5CUVVrc1JVRkJSU3hGUVVOb1JXdENMRVZCUVZGSExFVkJRMUppTEVWQlFWa3NSMEZEV2tNc1JVRkJWeXhIUVVOWUxFdEJRMG9zUTBGRlNpeFJRVU5KVEN4RlFVRlJhVUlzUlVGQlR5eHRRa0ZCYjBJc1kwRkJZMEVzUlVGQlRTeEpRVUZKTEZGQlFWRXNSVUZEYmtWaUxFVkJRVmtzUjBGRFdrTXNSVUZCVnl4RlFVTnVRaXhEUVVWS0xFbEJRVTFqTEVWQlFVOTRRaXhGUVVGUFFTeEZRVUZQTEU5QlFWTXNRMEZCUXl4RlFVTXZRbmxDTEVWQlFVMUVMRVZCUVU5QkxFVkJRVXNzVDBGQlUwRXNSVUZCU3l4UFFVRlBMRTlCUVZOd1FpeEZRVU4wUkN4UFFVRkpWU3hIUVVOQldDeEhRVU5CUVN4RlFVRkxMRTlCUVZNc1UwRkRaRUVzUlVGQlN5eFBRVUZUTEZkQlEyUkJMRVZCUVVzc1QwRkJVeXhWUVVOaVFTeEZRVUZMTEU5QlFWTXNWVUZCV1VFc1JVRkJTeXhUUVVGWExFdEJRek5EUlN4RlFVRlJSaXhGUVVGTExFOUJRVkVzWlVGQlowSXNkVVZCUVhWRkxFVkJSVFZIV1N4SlFVTkZUaXhIUVVGaFRTeEZRVUZKTEZGQlFWVlVMRWxCUTNwQ1NDeEhRVUZCTEZsQlFVRkJMRVZCUVUwc1VVRkJVeXhqUVVObVFTeEhRVUZCTEZsQlFVRkJMRVZCUVUwc1VVRkJVeXhqUVVOdVFrVXNSVUZCVVZVc1JVRkJTeXhuUWtGQmFVSXNjVU5CUVhGRExFVkJRMmhGTEVOQlEwZ3NUVUZCUVVrc1JVRkRRU3hOUVVGQlF5eEZRVU5CTEZsQlFVRmFMRVZCUTBFc1VVRkJRVWNzUlVGRFFTeFhRVUZCUlN4RlFVTkJMRTlCUVVGSExFVkJRMEVzU1VGQlFVTXNSVUZEUVN4cFFrRkJRVU1zUlVGRFFTeEpRVUZCVHl4RlFVTkJMRTFCUVU5S0xFZEJRVUVzUzBGQlFVRXNSVUZCVTBrc1EwRkRjRUlzUTBGRFNpeERRMnBLUVN4VFFVRlRReXhIUVVGblFrTXNSVUZCU3l4RFFVTXhRaXhIUVVGSkxFTkJRVU5CTEVWQlEwUXNUMEZCVHl4TFFVTllMRTlCUVZGQkxFVkJRVWtzUzBGQlRTeERRVU5rTEVsQlFVc3NVVUZEVEN4SlFVRkxMRk5CUTB3c1NVRkJTeXgxUWtGRFRDeEpRVUZMTEhWQ1FVTkVMRWRCUVVsQkxFVkJRVWtzVDBGQlR5eFRRVUZUTzBGQlFVRXNRMEZCU1N4RlFVTjRRaXhOUVVGUExFZEJRMWdzUjBGQlNVRXNSVUZCU1N4TFFVTktMRkZCUVZkRExFdEJRVTFFTEVWQlFVa3NTVUZEYWtJc1IwRkJTVU1zUlVGQlJ5eFBRVUZUTEZWQlExb3NUVUZCVHl4SFFVTnVRaXhOUVVGUExFZEJRMWdzU1VGQlN5eHJRa0ZEUkN4UlFVRlhReXhMUVVGTlJpeEZRVUZKTEUxQlFVOHNRMEZEZUVJc1VVRkJWME1zUzBGQlRVTXNSVUZCUnl4TlFVTm9RaXhIUVVGSlJDeEZRVUZITEU5QlFWTXNWVUZEV2l4TlFVRlBMRWRCUTJZc1IwRkJTVU1zUlVGQlJ5eExRVU5JTEZGQlFWZEVMRXRCUVUxRExFVkJRVWNzU1VGRGFFSXNSMEZCU1VRc1JVRkJSeXhQUVVGVExGVkJRMW9zVFVGQlR5eEhRVU51UWl4SFFVRkpSaXhIUVVGblFrY3NSVUZCUnl4SFFVRkhMRWRCUVV0SUxFZEJRV2RDUnl4RlFVRkhMRXRCUVVzc1JVRkRia1FzVFVGQlR5eEZRVU5tTEVOQlEwRXNUVUZCVHl4SFFVTllMRkZCUTBrc1RVRkJUeXhGUVVObUxFTkJRMG9zUTBNM1FrRXNVMEZCVTBNc1IwRkJaMEpETEVWQlFWRkRMRVZCUVVsRExFVkJRVk1zUTBGRE1VTXNTVUZCU1VRc1IwRkJRU3haUVVGQlFTeEZRVUZKTEZGQlFWTXNhMEpCUVcxQ0xFTkJRMmhETEVsQlFVMUZMRVZCUVUxR0xFVkJRVWNzU1VGQlNTeERRVUZETEVWQlEyaENSU3hGUVVGSkxGTkJRVmRJTEVsQlEyUkhMRVZCUVVrc1UwRkJWeXhMUVVGUFFTeEZRVUZKTEZOQlFWY3NUVUZEZEVORExFZEJRV2RDU0N4RFFVRkZMRWRCUld4Q1F5eEZRVUZSUXl4RlFVRkxMR0ZCUkVRc2VVUkJRMjlDTEVWQlFVa3NRMEZGTlVNc1EwRkRTaXhEUTFaQkxGTkJRVk5GTEVkQlFWbERMRVZCUVV0RExFVkJRVTlETEVWQlFWRXNRMEZEY2tNc1IwRkJUU3hEUVVGRkxGZEJRVUZETEVOQlFWY3NSVUZCU1Vnc1JVRkJTU3hSUVVNelFpeEhRVUZKUnl4SlFVRmxMRWRCUTJZc1RVRkJUeXhIUVVOWUxFbEJRVTFETEVWQlFWVXNUMEZCVDBRc1IwRkJaU3hYUVVOb1EwRXNSVUZEUVN4RFFVRkRSU3hGUVVGSFF5eEpRVUZOUkN4SlFVRk5ReXhIUVVGTlF5eEZRVUZUUml4RFFVRkRMRWRCUVV0RkxFVkJRVk5FTEVOQlFVTXNSMEZCUzBRc1JVRkJSU3hSUVVGVlF5eEZRVUZGTEUxQlEzaEZMRTlCUVU5TUxFVkJRVTBzUzBGQlMwOHNSMEZCVVVvc1JVRkJVVWtzUlVGQlN5eEpRVUZMVGl4RFFVRk5MRU5CUVVNc1EwRkRka1FzUTBOSVFTeEpRVUZOVHl4SFFVRmpMR3RFUVVOd1FpeFRRVUZUUXl4SFFVRm5RaXhEUVVGRkxGbEJRVUZETEVWQlFXRXNhVUpCUVVGRExFTkJRV2xDTEVWQlFVZERMRVZCUVV0RExFVkJRVWxETEVWQlFWTkRMRVZCUVVzc1EwRlNia1lzU1VGQlFVTXNSVUZCUVVNc1JVRlRTU3hKUVVGTlF5eEhRVUZaUml4RlFVRkJSQ3hIUVVGQkxGbEJRVUZCTEVWQlFVc3NXVUZCVEN4TFFVRkJReXhGUVVGclFrY3NSMEZET1VKRExFVkJRVTBzU1VGQlNVWXNSVUZCVlU0c1JVRkJTU3hOUVVGTkxFVkJRMmhEUVN4RlFVRkpMRk5CUTBwQkxFVkJRVWtzVDBGQlV5eEpRVU5xUWl4SlFVRkpVeXhGUVVGVFVpeEZRVUZITEU5QlExcFRMRVZCUVdFc1MwRkRha0lzVVVGQlYwTXNTMEZCV1ZZc1JVRkJSeXhOUVVGUExFTkJRemRDTEVkQlFVMHNRMEZCUlN4TlFVRkJWeXhGUVVGUExFbEJRVUZETEVWQlFVc3NTVUZCUVVNc1JVRkJTeXhOUVVGQlF5eERRVUZOTEVWQlFVbEtMRVZCUlRkQ1N5eEZRVUZYUXl4SFFVRmhUQ3hGUVVGUExFTkJRMnBETEZWQlFWY3NiVUpCUTFnc1MwRkJUVU1zUjBGQlFTeExRVUZCUVN4RlFVRlBReXhIUVVGQkxGbEJRVUZCTEVWQlFVMHNSMEZEYmtJc1QwRkJRVXdzUlVGRFFTeFJRVUZCVUN4RlFVTkJMR0ZCUVdORUxFVkJRVWNzVDBGRGFrSXNaVUZCWjBJc1JVRkRjRUlzUTBGQlF5eEZRVU5MYVVJc1JVRkJZeXhEUVVGRFJpeEZRVUZUTEUxQlF6bENMRWRCUVVsRkxFVkJRV0VzUTBGUFlpeEhRVTVKVEN4SlFVTkpRU3hGUVVGSkxFOUJRVk1zV1VGRFlsZ3NSVUZCVVU4c1JVRkJVU3gzUWtGQmVVSXNlVVJCUVhsRUxFVkJRemRHTEZkQlFWbEpMRWRCUVU5QkxFVkJRVWtzVTBGQlYxb3NSVUZCUnl4UlFVTXhRME1zUlVGQlVVOHNSVUZCVVN4aFFVRmpZaXhGUVVGWExFZEJSVGRETEVOQlFVTnZRaXhGUVVGVExGRkJRVlVzUTBGQlEwRXNSVUZCVXl4TFFVRlBMRU5CUVVOR0xFVkJRVXNzUTBGRE0wTktMRVZCUVdGTkxFVkJRVk1zU1VGRGJFSkJMRVZCUVZNc1ZVRkRURklzUlVGQlNTeFJRVU5LUVN4RlFVRkpMRk5CUVZjN1FVRkJRU3hGUVVGUFVTeEZRVUZUTEZGQlJTOUNVaXhGUVVGSkxGRkJRVlZSTEVWQlFWTXNVMEZGTDBJc1VVRkRTaXhGUVVOSlFTeEZRVUZUTEd0Q1FVRnZRa2NzUjBGQlowSk9MRU5CUVVjc1NVRkRhRVJZTEVWQlFWRlhMRWRCUVVFc1MwRkJRVUVzUlVGQlQwUXNSVUZCVFVFc1JVRkJUU3hQUVVGVExFTkJRVU1zUlVGQlJ5eDVRa0ZCTUVJc01rTkJRVEpETEVOQlJYSklMRTlCUTFOUUxFVkJRVUZYTEVWQlFWTXNVVUZCVkN4WlFVRkJXQ3hGUVVGblFpeFZRVUZYU2l4RlFVRkhMRkZCUTI1RFF5eEZRVUZSVHl4RlFVRlJMR0ZCUVdOaUxFVkJRVmNzUlVGSE4wTkpMRVZCUVVrc1RVRkJVU3hIUVVOYUxFbEJRVTF2UWl4RlFVRlhTaXhGUVVGVExFbEJRM0JDU3l4RlFVRlZVaXhGUVVOV1ppeEZRVUZaUlN4RlFVRkxZU3hGUVVGTFJ5eEZRVUZWWkN4RFFVRlBMRVZCUTNaRFNDeEZRVUZwUWtNc1JVRkJTMjlDTEVWQlFWVlNMRVZCUVU4c1MwRkJUVWtzUlVGQlZXUXNRMEZCVHl4RlFVTm9SVVlzUlVGQlNTeFBRVUZQTEZGQlExaHpRaXhIUVVGblFuSkNMRVZCUVVjc1QwRkJVVmtzUlVGQlMxZ3NRMEZCVHl4RlFVTXpRMFlzUlVGQlNTeE5RVUZSTEVkQlExSjFRaXhIUVVGWmRrSXNSVUZCUzFFc1JVRkJTU3hOUVVGUFlTeERRVUZQTEVkQlEyNURia0lzUlVGQlVXdENMRVZCUVZVc1owSkJRV2xDTEhsQ1FVRjVRaXhGUVVWb1JTeEpRVUZOU1N4RlFVRmhVQ3hIUVVGaFNDeEhRVUZCTEV0QlFVRkJMRVZCUVU4c1EwRkJReXhGUVVGSExFTkJRM1pETEZWQlFWY3NaMEpCUTFnc1MwRkJUVU1zUlVGRFRpeFBRVUZSVFN4RlFVRlJMRTFCUVUwc1EwRkJReXhGUVVOMlFpeFJRVUZCYmtJc1JVRkRRU3hoUVVGalJDeEZRVUZITEU5QlEycENMR1ZCUVdkQ0xFTkJRVU5aTEVkQlFVOUJMRVZCUVVrc1QwRkJVeXhqUVVONlF5eERRVUZETEVWQlJVUXNSMEZFUVVvc1JVRkJVMlVzUlVGQlZ5eEpRVU5vUWtFc1JVRkJWeXhOUVVGUExFTkJRMlJPTEV0QlEwbElMRWRCUVVFc1dVRkJRVUVzUlVGQlR5eFJRVUZUTEdGQlFXVXNRMEZCUTFNc1JVRkJWeXhaUVVNelEzUkNMRVZCUVZGUExFVkJRVkVzZDBKQlFYbENMSEZFUVVGeFJDeEZRVU01UmxRc1JVRkJTU3hSUVVGUkxGRkJRMXBuUWl4RlFVRlRMRTFCUVZGUkxFVkJRVmNzVFVGQlRTeFBRVUZUTEUxQlF6TkRkRUlzUlVGQlVXMUNMRVZCUVZFc1RVRkJUeXh6UWtGQmRVSXNOa1pCUVRaR0xFZEJSMjVLTEVsQlFVMUpMRVZCUVZsV0xFVkJRMXBxUWl4RlFVRlpSU3hGUVVGTFpTeEZRVUZQVXl4RlFVRlpkRUlzUTBGQlR5eEZRVU16UTBnc1JVRkJhVUpETEVWQlFVdFRMRVZCUVZGTExFVkJRVXNzUzBGQlRWVXNSVUZCV1hSQ0xFTkJRVThzUlVGRE9VUkdMRVZCUVVrc1QwRkJUeXhSUVVOWWMwSXNSMEZCWjBKeVFpeEZRVUZITEU5QlFWRmpMRVZCUVU5aUxFTkJRVThzUlVGRE4wTlBMRVZCUVZOblFpeEZRVUZWTEUxQlFVMHNRMEZCUXl4RlFVTXhRaXhKUVVGTlF5eEZRVUZQTEVsQlFVbERMRWRCUVV0T0xFVkJRVk5KTEVOQlFWTXNSVUZEY0VONlFpeEZRVUZKTEZGQlFWRXNiVUpCUTFvd1FpeEZRVUZMTEZOQlFWZG1MRWRCUTNCQ1NDeEZRVUZKTEUxQlFVMHNTMEZCUzJ0Q0xFTkJRVWtzUTBGRGRrSXNTMEZEU3l4RFFVVkhVaXhIUVVOQmFFSXNSVUZCVVcxQ0xFVkJRVkVzVFVGQlR5eGxRVUZuUWl4eFJFRkJjVVFzUlVGRE5VWkhMRVZCUVZjc1ZVRkRVRWdzUlVGQlVTeFJRVU5TUVN4RlFVRlJMRk5CUVZjN1FVRkJRU3hGUVVGUFJ5eEZRVUZYTEZGQlJYSkRTQ3hGUVVGUkxGRkJRVlZITEVWQlFWY3NVMEZGY2tNc1NVRkJUVVVzUlVGQlR5eEpRVUZKUXl4SFFVRkxUaXhEUVVGUExFVkJRM3BDY2tJc1JVRkJTU3hSUVVGUkxHMUNRVU5hTUVJc1JVRkJTeXhUUVVGWFppeEhRVU53UWtnc1JVRkJTU3hOUVVGTkxFdEJRVXRyUWl4RFFVRkpMRU5CUTNaQ0xFTkJRMG9zUTBGRFFTeFBRVUZKYUVJc1IwRkJZMEVzUlVGQllVUXNSMEZETTBKUUxFVkJRVkZSTEVWQlFWa3NZVUZCWXl4dFEwRkJiVU1zUlVGRGVrVkdMRVZCUVVrc1RVRkJVU3hEUVVGRFVDeEZRVUZITEU5QlFWRlJMRVZCUVZGRExFZEJRVUVzUzBGQlFVRXNSVUZCWTBRc1EwRkJUU3hGUVVNM1EwUXNRMEZEV0N4RFF6VkhRU3hUUVVGVGIwSXNSMEZCWjBJc1EwRkJSU3haUVVGQlF5eEZRVUZoTEdsQ1FVRkJReXhEUVVGcFFpeEZRVUZIUXl4RlFVRkxReXhGUVVGSlF5eEZRVUZUUXl4RlFVRkxMRU5CU201R0xFbEJRVUZETEVWQlMwa3NTVUZCVFVNc1IwRkJXVVFzUlVGQlFVUXNSMEZCUVN4WlFVRkJRU3hGUVVGTExGbEJRVXdzUzBGQlFVTXNSVUZCYTBKRkxFZEJRemxDUXl4RlFVRk5MRWxCUVVsR0xFVkJRVlZNTEVWQlFVa3NUVUZCVFN4RlFVTm9RMEVzUlVGQlNTeFRRVU5LUVN4RlFVRkpMRTlCUVZNc1NVRkRZa0VzUlVGQlNTeFJRVU5LUVN4RlFVRkpMRTFCUVZFc1NVRkRhRUlzU1VGQlNWRXNSVUZCVTFBc1JVRkJSeXhQUVVOYVVTeEZRVUZoTEV0QlEycENMRTlCUVZjc1EwRkJSU3hOUVVGQlF5eEZRVUZQTEUxQlFVRkRMRU5CUVUwc1NVRkJTMVlzUlVGQlJ5eE5RVUZQTEVOQlEzSkRMRWxCUVUxWExFVkJRVkZETEVkQlFXRklMRVZCUVU4c1EwRkRPVUlzVlVGQlZ5eGxRVU5ZTEV0QlFVMURMRVZCUTA0c1QwRkJRVWdzUlVGRFFTeFJRVUZCVGl4RlFVTkJMR0ZCUVdORUxFVkJRVWNzVDBGRGFrSXNaVUZCWjBJc1JVRkRjRUlzUTBGQlF5eEZRVU5FTEVkQlFVa3NRMEZCUTFjc1JVRkJUU3hOUVVOUUxFZEJRVWxCTEVWQlFVMHNVVUZCVlVFc1JVRkJUU3hMUVVGUFJDeEZRVU42UWtFc1IwRkJVMEVzUlVGQlRTeFBRVUZUTEZsQlEzaENWQ3hGUVVGUlZTeEZRVUZOTEVsQlFVc3NZVUZCWXl4clJFRkJhMFFzUlVGRmJrWldMRVZCUVZGTkxFVkJRVkVzWlVGQlowSXNiVU5CUVcxRExFMUJSWFJGTEVOQlEwUkRMRVZCUVdGSExFVkJRVTBzU1VGRFprRXNSVUZCVFN4VlFVTk9UQ3hGUVVGSkxGRkJRVlZMTEVWQlFVMHNVMEZEZUVJc1VVRkRTaXhEUVVWS0xFbEJRVTFGTEVWQlFVOUlMRVZCUTFCaUxFVkJRVmxGTEVWQlFVdFhMRVZCUVU5RExFVkJRVTlXTEVOQlFVOHNSVUZEZEVOSUxFVkJRV2xDUXl4RlFVRkxXU3hGUVVGTkxFbEJRVXRHTEVWQlFVOHNTMEZCVFVVc1JVRkJUMVlzUTBGQlR5eEZRVU01UkVZc1JVRkJTU3hQUVVGUExGRkJRMWhsTEVkQlFXZENaQ3hGUVVGSExFOUJRVkZWTEVWQlFVOVVMRU5CUVU4c1JVRkROME5OTEVWQlFWTk5MRVZCUVVzc1RVRkJUU3hEUVVGRExFVkJRM0pDVUN4RlFVRkpMRTFCUVUwc1MwRkJTMDhzUTBGQlNTeERRVU4yUWl4RFFVTkJMRTlCUVVGUUxFVkJRVWtzVFVGQlVTeERRVUZEVGl4RlFVRkhMRTlCUVZGUExFVkJRVkZETEVkQlFVRXNTMEZCUVVFc1JVRkJZMFFzUTBGQlRTeEZRVU0zUTBRc1EwRkRXQ3hEUXpsRFFTeFRRVUZUVXl4SFFVRlhReXhGUVVGTFF5eEZRVUZSUXl4RlFVRlZReXhGUVVGVExFTkJRMmhFTEVsQlFVbERMRVZCUVZVc1IwRkRaQ3hIUVVGSlNpeEZRVUZMTEVOQlEwd3NTVUZCU1Vzc1JVRkJWeXhIUVVOWVF5eEZRVUZOTEVkQlExWXNVVUZCVjBNc1MwRkJVMUFzUlVGQlN5eERRVU55UWl4SFFVRk5MRU5CUVVVc1QwRkJRVkVzUlVGQlVTeExRVUZCUXl4RFFVRkxMRVZCUVVsR0xFVkJRM3BDTEU5QlFWRkZMRVZCUVUwc1EwRkRWaXhKUVVGTExGRkJRMFJLTEVWQlFWY3NSMEZEV0N4TlFVTktMRWxCUVVzc1ZVRkJWeXhEUVVOU1NDeEhRVUZaTEVOQlFVTkhMRWRCUTJKR0xFVkJRVkZKTEVWQlFVOHNaVUZCWjBJc2QwVkJRWGRGTEVWQlF6TkhMRWxCUVUxSExFVkJRVXRHTEVWQlFVOHNWVUZCVlN4RFFVRkRMRWRCUVVzc1NVRkROMEpLTEVWQlIwUkJMRWRCUVZkRkxFVkJRVTFKTEVWQlJtcENUaXhGUVVGVlRTeEZRVWRrU2l4RlFVRk5MRWRCUTA0c1MwRkRTaXhEUVVOQkxFbEJRVXNzVlVGRFIwWXNTVUZEUVVVc1IwRkJUMFVzUjBGRFdFZ3NSVUZCVnl4SFFVTllMRTFCUTBvc1VVRkRTVVlzUlVGQlVVa3NSVUZCVHl4dFFrRkJiMElzWTBGQlkwVXNRMEZCU1N4alFVRmpMRU5CUXpORkxFTkJRMEZTTEVkQlFWVlBMRVZCUVU4c1RVRkRja0lzUTBGRFNpeERRVU5CTEUxQlFVOHNRMEZCUlN4UlFVRkJTaXhGUVVGVExFOUJRVUZJTEVOQlFVOHNRMEZETjBJc1EwTjZRa0VzU1VGQlRWVXNSMEZCVnl3MFJFRkRXRU1zUjBGQlYwTXNSMEZCVlVFc1NVRkJWVUVzUlVGQlRTeFBRVUZUTEdGQlFXVkJMRVZCUVUwc1QwRkJVeXhoUVVOc1JpeFRRVUZUUXl4SFFVRnpRaXhEUVVGRkxGbEJRVUZETEVWQlFXRXNhVUpCUVVGRExFTkJRV2xDTEVWQlFVZERMRVZCUVV0RExFVkJRVWxETEVWQlFWTkRMRVZCUVVzc1EwRllla1lzU1VGQlFVTXNSVUZCUVVNc1JVRlpTU3hKUVVGTlF5eEZRVUZSVEN4RlFVRkhMRTFCUVUwc1UwRkJWeXhKUVVNMVFrMHNSVUZCVTBRc1JVRkJVU3hYUVVGaExHZENRVU01UWtVc1IwRkJZVW9zUlVGQlFVUXNSMEZCUVN4WlFVRkJRU3hGUVVGTExGbEJRVXdzUzBGQlFVTXNSVUZCYlVKRkxFVkJRVkZITEVkQlFWVkRMRWRCUTJ4RVF5eEZRVUZQTEVsQlFVbElMRVZCUVZWU0xFVkJRVWtzVFVGQlRTeEZRVU55UTFjc1JVRkJTeXhMUVVGUExFZEJRMW9zU1VGQlRVTXNSVUZCVTFvc1JVRkJTU3hQUVVObVdTeEpRVU5CV2l4RlFVRkpMRTlCUVZNc1NVRkRZa0VzUlVGQlNTeFJRVU5LUVN4RlFVRkpMRTFCUVZFc1NVRkRhRUlzU1VGQlNXRXNSVUZCVTFvc1JVRkJSeXhQUVVGVFFTeEZRVUZITEUxQlFVMHNUMEZCVHl4UFFVTjZReXhSUVVGVFlTeEZRVUZKTEVWQlFVZEJMRVZCUVVsaUxFVkJRVWNzVFVGQlRTeFBRVUZSTEVWQlFVVmhMRVZCUVVjc1EwRkRkRU1zU1VGQlRVTXNSVUZCVjJRc1JVRkJSeXhOUVVGTllTeERRVUZETEVWQlEzSkNMRU5CUVVVc1RVRkJRVVVzUlVGQlR5eEpRVUZCUXl4RlFVRkxMRWxCUVVGRExFVkJRVXNzVFVGQlFVTXNRMEZCVFN4RlFVRkpTaXhGUVVNM1Frc3NSVUZCVVVNc1IwRkJZVXdzUlVGQlR5eERRVU01UWl4TFFVRk5WQ3hGUVVOT0xGVkJRVmNzYlVKQlExZ3NTMEZCVFZVc1IwRkJRU3hMUVVGQlFTeEZRVUZQUXl4SFFVRkJMRmxCUVVGQkxFVkJRVTBzUjBGRGJrSXNUMEZCUVV3c1JVRkRRU3hSUVVGQldDeEZRVU5CTEdGQlFXTkVMRVZCUVVjc1QwRkRha0lzWlVGQlowSXNSVUZEY0VJc1EwRkJReXhGUVVORUxFZEJRVWtzUTBGQlEyMUNMRVZCUVUwc1RVRkJUeXhEUVVOa0xFZEJRVWtzUTBGQlEwRXNSVUZCVFN4UlFVRlZMRU5CUVVOQkxFVkJRVTBzUzBGQlR5eERRVUZEUml4SFFVRlBMRU5CUVVORExFVkJRVThzUTBGRE0wTk1MRWxCUVUwc1IwRkJTMDBzUlVGQlRTeE5RVU5xUW14Q0xFVkJRVkZyUWl4RlFVRk5MRTFCUVU4c2JVSkJRVzlDTEcxQ1FVRnRRbUlzUTBGQlRTeEZRVUZGTEVWQlF5OUVUeXhGUVVGSllpeEZRVUZITEUxQlFVMHNUMEZCVXl4SFFVTXpRa01zUlVGQlVXdENMRVZCUVUwc1RVRkJUeXh0UWtGQmIwSXNORUpCUVRSQ1lpeERRVUZOTEVWQlFVVXNSVUZETjBWaExFVkJRVTBzVlVGRFJsUXNSVUZCU3l4UlFVTk1RU3hGUVVGTExGTkJRVmM3UVVGQlFTeEZRVUZQVXl4RlFVRk5MRkZCUlRkQ1ZDeEZRVUZMTEZGQlFWVlRMRVZCUVUwc1UwRkZOMEpRTEVWQlFWTlBMRVZCUVUwc1NVRkRaaXhSUVVOS0xFTkJRMGtzUTBGQlEyUXNSMEZCVTA0c1JVRkJTU3hSUVVGUkxGRkJRVlZ6UWl4SFFVRm5Ra3dzUTBGQlJ5eEhRVU51UkdZc1JVRkJVV1VzUlVGRFVpeDVRa0ZCTUVJc2EwVkJRV3RGTEVOQlEzQkhMRU5CUTBFc1IwRkJTVWdzU1VGQlRTeEZRVU5HVFN4RlFVRk5MRTlCUTA1c1FpeEZRVUZSYTBJc1JVRkJUU3hOUVVGUExHMUNRVUZ2UWl4dFFrRkJiVUppTEVOQlFVMHNSVUZCUlN4VlFVZHVSV0VzUlVGQlRTeFBRVU5RYkVJc1JVRkJVV3RDTEVWQlFVMHNUVUZCVHl4bFFVRm5RaXh4UWtGQmNVSmlMRU5CUVUwc1VVRkJVU3hGUVVONFJXRXNSVUZCVFN4UlFVRlRMRU5CUTJZc1NVRkJTVWNzUlVGQmEwSXNSMEZEZEVKRExFVkJRVTBzVVVGQlYwTXNTMEZCVFZRc1JVRkRia0lzVDBGQlVWTXNSVUZCUnl4TFFVRk5MRU5CUTJJc1NVRkJTeXhSUVVOTUxFbEJRVXNzVVVGRFJDeE5RVU5LTEVsQlFVc3NWVUZEUkVZc1JVRkJhMEpGTEVWQlFVY3NUMEZCVHl4VlFVRlZMRU5CUVVNc1JVRkRka01zVFVGQlRVUXNSVUZEVml4UlFVTkpMRTFCUVUxQkxFTkJRMlFzUTBGRlNpeEhRVUZKUkN4RlFVRnBRaXhEUVVOcVFpeEpRVUZKUnl4RlFVRlBaaXhGUVVGTExFMUJRVTFCTEVWQlFVc3NUVUZCVFN4UFFVRlRMRU5CUVVNc1JVRkRka05uUWl4RlFVRlBSQ3hEUVVGSkxFbEJRMWhCTEVkQlFVOXlRaXhGUVVGQmNVSXNSVUZCU3l4UlFVRk1MRXRCUVVGeVFpeEZRVUZqY1VJc1JVRkJTeXhMUVVNeFFrRXNSVUZCU3l4UlFVTk1RU3hGUVVGTExGTkJRVmM3UVVGQlFTeEZRVUZQU0N4RlFVVjJRa2NzUlVGQlN5eFJRVUZWU0N4RlFVTnVRa2dzUlVGQlRTeFJRVUZWUVN4RlFVRk5MRkZCUVZFc1ZVRkJWVWNzUlVGQlowSXNUMEZCVXl4RFFVRkRMRU5CUTNSRkxFTkJRMG9zUTBGRlNpeEhRVUZKTEVOQlFVTnFRaXhIUVVGVExFTkJRVU5aTEVkQlFVOHNRMEZCUTBVc1JVRkJUU3hOUVVGUExFTkJSMmhETEVsQlFVMVJMRVZCUVZsVUxFVkJRMXB5UWl4RlFVRlpSU3hGUVVGTGJVSXNSVUZCVDBNc1JVRkJUMnhDTEVOQlFVOHNSVUZEZEVOSUxFVkJRV2xDUXl4RlFVRkxiMElzUlVGQlRTeEpRVUZMUml4RlFVRkxMRXRCUVUxRkxFVkJRVTlzUWl4RFFVRlBMRVZCUTJoRlV5eEZRVUZMTEUxQlFVMHNTMEZCUzJsQ0xFTkJRVk1zUlVGRGVrSm1MRVZCUVZObExFVkJRVlVzVFVGQlRTeERRVUZETEVWQlEzUkNha01zUjBGQlVYZENMRU5CUVVzc1IwRkRZbXBDTEVWQlFWRXdRaXhGUVVGVkxFMUJRVThzWjBKQlFXbENiRU1zUlVGQlVTeERRVU14UkN4TFFVTkxMRU5CUjBSTkxFVkJRVWtzVFVGQlVTeEhRVU5hTEVsQlFVMDJRaXhGUVVGWFZDeEZRVUZOTEVsQlEycENWU3hGUVVGVllpeEZRVU5XYmtJc1JVRkJXVVVzUlVGQlMybENMRVZCUVV0SExFVkJRVTlzUWl4RFFVRlBMRVZCUTNCRFNDeEZRVUZwUWtNc1JVRkJTelpDTEVWQlFWVmlMRVZCUVU4c1MwRkJUVWtzUlVGQlQyeENMRU5CUVU4c1JVRkROMFJRTEVkQlFWRnpRaXhEUVVGSExFZEJRMWhtTEVWQlFWRTBRaXhGUVVGUkxFMUJRVThzWjBKQlFXbENjRU1zUlVGQlVTeEZRVU53UkUwc1JVRkJTU3hOUVVGUkxFZEJSVm9zU1VGQlRTdENMRVZCUVdGV0xFZEJRV0ZJTEVkQlFVRXNTMEZCUVVFc1JVRkJUeXhEUVVGRExFVkJRVWNzUTBGRGRrTXNTMEZCVFZnc1JVRkRUaXhWUVVGWExHZENRVU5ZTEV0QlFVMVpMRVZCUTA0c1QwRkJVVmNzUlVGQlVTeE5RVUZOTEVOQlFVTXNSVUZEZGtJc1VVRkJRVFZDTEVWQlEwRXNZVUZCWTBRc1JVRkJSeXhQUVVOcVFpeGxRVUZuUWl4RlFVTndRaXhEUVVGRExFVkJRMFFzUjBGQlNUaENMRVZCUVZjc1QwRkRXQ3hIUVVGSkxFTkJRVU42UWl4SFFVRlRMRU5CUVVOakxFVkJRVTBzVDBGQlUzQkNMRVZCUVVrc1VVRkJVU3hQUVVGUkxFTkJRemxETEVkQlFVbHJRaXhGUVVOQkxGRkJRVmRQTEV0QlFVMVFMRVZCUVVzc1EwRkRiRUlzUjBGQlNVOHNTVUZCVDAwc1JVRkJWeXhOUVVOc1FpeE5RVU5LTEVkQlFVbE9MRVZCUVVjc1QwRkJVeXhWUVVGWExFTkJRM1pDZGtJc1JVRkJVWFZDTEVWQlFVa3NlVUpCUVRCQ0xHdEZRVUZyUlN4RlFVTjRSeXhMUVVOS0xFTkJRMG9zUTBGRFFVd3NSVUZCVFN4TlFVRlJWeXhGUVVGWExFMUJRVTBzVDBGQlV5eE5RVU40UXpkQ0xFVkJRVkUyUWl4RlFVRlhMRTFCUVU4c2MwSkJRWFZDTERaR1FVRTJSaXhEUVVOMFNpeFBRVVZMV2l4SlFVTkVMRmRCUVZsQkxFZEJRVk5CTEVWQlFVMHNVVUZCVlVFc1JVRkJUU3hQUVVGUExFTkJRVU1zU1VGQlRTeEpRVU42UkdwQ0xFVkJRVkZwUWl4RlFVRlBMR1ZCUVdkQ0xEUkNRVUUwUWxvc1EwRkJUU3hGUVVGRkxFVkJSVzVGVEN4RlFVRlJOa0lzUlVGQlZ5eE5RVUZQTEdWQlFXZENMREJDUVVFd1FuaENMRU5CUVUwc1VVRkJVU3hIUVVjeFJpeEpRVUZOY1VJc1IwRkJXVlFzUlVGRFduSkNMRVZCUVZsRkxFVkJRVXR0UWl4RlFVRlBXU3hGUVVGWk4wSXNRMEZCVHl4RlFVTXpRelpDTEVWQlFWY3NUVUZEVUdoRExFVkJRV2xDUXl4RlFVRkxLMElzUlVGQlZ5eEpRVUZMWWl4RlFVRkxMRXRCUVUxaExFVkJRVmszUWl4RFFVRlBMRVZCUTNCRkxFdEJRMDR3UWl4SFFVTkpha01zUjBGQlVYZENMRU5CUVVzc1IwRkRZbXBDTEVWQlFWRXdRaXhIUVVGVkxFMUJRVThzWjBKQlFXbENiRU1zUlVGQlVTeEZRVVZxUkhGRExFVkJRVmNzVlVGRFdrUXNSVUZCVVN4UlFVTlNRU3hGUVVGUkxGTkJRVmM3UVVGQlFTeEZRVUZQUXl4RlFVRlhMRkZCUlhKRFJDeEZRVUZSTEZGQlFWVkRMRVZCUVZjc1UwRkZja01zU1VGQlRVTXNSMEZCVHl4SlFVRkpReXhIUVVGTFNDeEZRVUZUUml4RlFVRlRMRVZCUjNoRExFZEJSa2sxUWl4RlFVRkpMRkZCUVZFc2JVSkJRMXBuUXl4SFFVRkxMRk5CUVZkcVFpeEhRVU5vUWxRc1JVRkJUeXhEUVVOUUxFbEJRVTAwUWl4RlFVRk5ka0lzUlVGRFVuZENMRWRCUVZsdVF5eEZRVUZMYTBNc1JVRkJTU3hOUVVGUFNpeERRVUZQTEVkQlEyNUROVUlzUlVGQlVUSkNMRVZCUVZVc1owSkJRV2xDTEhsQ1FVRjVRaXhGUVVOb1JVc3NSVUZCU1N4TlFVRk5MRXRCUVV0R0xFVkJRVWtzUTBGRGRrSXNTMEZEU3l4RFFVTkVMRWxCUVUxRkxFVkJRVTBzU1VGQlNYcENMRWRCUVZGVUxFVkJRVWtzVFVGQlRTeEZRVU5zUTJ0RExFVkJRVWtzUzBGQlR5eEhRVU5ZUVN4RlFVRkpMRTFCUVUwc1MwRkJTMFlzUlVGQlNTeEZRVU51UWl4SlFVRk5TU3hIUVVGWlVpeEpRVUZCTEV0QlFVRkJMRWRCUVdGRkxFZEJRVk1zVFVGRGVFTkpMRVZCUVVrc1RVRkJVU3hEUVVGRFNpeEZRVUZSTEUxQlFVMHNRMEZCUXl4RlFVRkhUU3hGUVVGVExFTkJRVU1zUlVGQlIwRXNSVUZCVXl4RFFVRkRMRU5CUVVNc1JVRkRka1I2UWl4RlFVRkxMRTFCUVUwc1MwRkJTM1ZDTEVOQlFVY3NRMEZEZGtJc1EwRkRRWEpDTEVWQlFWTmxMRWRCUVZsQkxFZEJRVlVzVFVGQlRTeERRVUZETEVWQlFVbEhMRVZCUVZjc1IwRkRla1FzUTBGRFNpeERRVU5CTEVsQlFVMU5MRVZCUVdNdlFpeEZRVUZSTEVsQlFVMHNTVUZETlVJc1EwRkJRMmRETEVWQlFVa3NSMEZCUjBNc1EwRkJSU3hGUVVGSmRFTXNSVUZCUnl4SlFVTnVRblZETEVWQlFWRXpRaXhGUVVOYUxFZEJRVWw1UWl4SFFVRk5RU3hGUVVGSExGTkJRVmRFTEVWQlEzQkNSeXhGUVVGUlJpeEZRVUZITEU5QlFWTkJMRVZCUVVjc1QwRkJUeXhYUVVNM1FpeERRVU5FTEVsQlFVMUhMRVZCUVU5c1F5eEZRVUZQTEVOQlFVTXNSVUZCUlN4WlFVRlpMRVZCUVVsQkxFVkJRVThzVlVGQlZTeERRVUZETEVWQlEyNUViVU1zUlVGQlRUbENMRVZCUTA0c1IwRkJSelpDTEVOQlFVa3NiMEpCUVc5Q1NpeERRVUZYTEVkQlEzUkRMRWRCUVVkSkxFTkJRVWtzY1VWQlFYRkZTaXhEUVVGWExFZEJRemRHYmtNc1JVRkJVVmNzUlVGQlVVUXNSVUZCVXl4bFFVRnBRaXhoUVVGak9FSXNRMEZCUnl4RlFVTjJSRW9zUjBGQlRVRXNSVUZCUnl4UFFVRlBMRk5CUVZjc1IwRkRNMEpETEVWQlFVY3NVVUZCVVVRc1EwRkJSU3hEUVVOeVFpeERRVU5CTEVkQlFVbERMRVZCUVVjc1QwRkJVeXhGUVVGSExFTkJRMllzU1VGQlRVa3NSVUZCVFVNc1IwRkJWMHdzUlVGQlNVTXNSVUZCVDNoRExFVkJRVWtzVVVGQlVTeFBRVUZSUlN4RFFVRlBMRVZCUTNwRWVVTXNSVUZCU1N4VlFVTkJhRU1zUlVGQlN5eFJRVU5NUVN4RlFVRkxMRk5CUVZjN1FVRkJRU3hGUVVGUFowTXNSVUZCU1N4UlFVVXpRbWhETEVWQlFVc3NVVUZCVldkRExFVkJRVWtzVTBGRk0wSm9ReXhGUVVGTExFMUJRVkVzUTBGQlExWXNSVUZCUnl4UFFVRlJkVU1zUlVGQlQwY3NSVUZCU1N4TlFVRk5MRU5CUXpsRExFMUJSVWxvUXl4RlFVRkxMRTFCUVZFc1EwRkJRMVlzUlVGQlJ5eFBRVUZSZFVNc1JVRkJUMEVzUTBGQlN5eEZRVVY2UXl4UFFVRlBOMElzUTBGRFdDeERRM0JOUVN4VFFVRlRhME1zUjBGQmEwSkRMRVZCUVVsRExFVkJRVXRETEVWQlFVOURMRVZCUVZORExFVkJRVk5ETEVWQlFVc3NRMEZET1VRc1NVRkJUVU1zUlVGQlQwb3NSVUZCVFN4UFFVRlRMRmxCUTNSQ1N5eEhRVUZuUWxBc1JVRkJTVU1zUlVGQlMwTXNSVUZCVDBNc1JVRkJVMFVzUTBGQlJ5eEZRVU0xUTBnc1JVRkJUU3hQUVVGVExGbEJRMWhOTEVkQlFXZENVaXhGUVVGSlF5eEZRVUZMUXl4RlFVRlBReXhGUVVGVFJTeERRVUZITEVWQlF6VkRTU3hIUVVGelFsUXNSVUZCU1VNc1JVRkJTME1zUlVGQlQwTXNSVUZCVTBVc1EwRkJSeXhGUVVOMFJFc3NSVUZCVDBvc1JVRkJTeXhaUVVkc1FpeFBRVUZKUml4SlFVRlpMRXRCUVU5QkxFbEJRVmxOTEVWQlFVc3NVMEZEY0VOS0xFVkJRVXNzU1VGQlRVa3NSVUZCU3l4UlFVTlVTaXhKUVVWUVJpeEpRVU5CUlN4RlFVRkxMRWxCUVUxR0xFZEJRMUpGTEVWQlExZ3NRMEZEUVN4VFFVRlRTeXhIUVVGclFsZ3NSVUZCU1VNc1JVRkJTME1zUlVGQlQxVXNSVUZCVDFRc1JVRkJVeXhEUVhwQ00wUXNTVUZCUVZVc1JVRkJRVU1zUlVFd1Fra3NTVUZCVFVNc1JVRkJWMGdzUlVGQlRTeEpRVU5xUWxJc1JVRkJWMWNzUlVGRldHUXNSVUZCU1N4WFFVRlhMRkZCUVZGakxFVkJRVk1zVDBGQlVVTXNSMEZCVDJJc1JVRkJVVmtzUlVGQlZTeHhRa0ZCYzBKRExFTkJRVWNzUTBGQlF5eEZRVVF6Uml4TFFVVk9MRWRCUVVsa0xFVkJRVTBzVDBGQlV5eFpRVUZoTEVOQlF6VkNMRWRCUVUwc1EwRkJSU3hQUVVGQlpTeEZRVUZSTEdsQ1FVRnJRa01zUTBGQlJ5eEZRVUZKVGl4RlFVTnVRMDhzUlVGQlYwWXNSMEZCVlVZc1JVRkRja0pGTEVWQlFVOHNUMEZCVTBZc1JVRkJVeXhQUVVOeVFrVXNSVUZEUVVZc1JVRkRTRVVzUjBGQlFTeExRVUZCUVN4RlFVRlZSaXhGUVVOaVNTeEpRVUZoTEVOQlFVTkVMRWRCUVUxQkxFVkJRVWNzVDBGQlUwTXNSVUZCVXl4VFFVVjZRMmhDTEVWQlFWRm5RaXhGUVVGVkxHVkJSRVlzTkVOQlEzbENMRU5CUldwRUxFTkJRMEVzU1VGQlRVTXNSVUZCVld4Q0xFVkJRVTBzVDBGQlV5eFpRVU42UWl4TlFVTkJRU3hGUVVGTkxFOUJRVk1zV1VGRFdDeE5RVU5CUVN4RlFVRk5MRTFCUVUwc1UwRkJWeXhKUVVOdVFpeE5RVU5CTEUxQlIyUXNSMEZCU1N4RFFVRkRZU3hIUVVORUxFTkJRVU5ZTEVkQlEwUkJMRWxCUVZrc1MwRkRXRUVzU1VGQldXbENMRWRCUVZFc1UwRkJWMFFzU1VGQldTeFBRVU16UTJoQ0xFbEJRVmxyUWl4SFFVRlJMRk5CUVZkR0xFbEJRVmtzVFVGRE5VTXNUMEZCVDNKQ0xFZEJRV3RDUXl4RlFVRkpReXhGUVVGTFF5eEZRVUZQUXl4RlFVRlRReXhEUVVGUExFVkJSVGRFTEVsQlFVbERMRVZCUVUxS0xFVkJRVWtzVDBGQlR5eExRVUZMTEV0QlFVdHpRaXhIUVVGTFFTeEZRVUZGTEUxQlFWRnVRaXhIUVVGWGJVSXNSVUZCUlN4aFFVRmxTQ3hEUVVGUExFVkJRMnBHTEVkQlFVa3NRMEZCUTJZc1JVRkJTeXhEUVVOT0xFbEJRVTF0UWl4RlFVRkxka0lzUlVGQlNTeFBRVUZQTEZWQlFWVkhMRU5CUVU4c1JVRkRka01zUjBGQlNXOUNMRWRCUVUxQkxFVkJRVWNzWVVGQlpVb3NSVUZEZUVKdVFpeEZRVUZKTEU5QlFVOHNTMEZCU3l4TFFVRkxMRTlCUVU4c1QwRkJUeXhEUVVGRExFVkJRVWQxUWl4RlFVRkpMRU5CUVVVc1VVRkJVeXhGUVVGTkxFTkJRVU1zUTBGQlF5eEZRVU01Ukc1Q0xFVkJRVTF0UWl4TlFVZE9MRkZCUVVsQkxFZEJRVUVzVFVGQlFVRXNSVUZCU1N4WFFVTktja0lzUlVGQlVWa3NSVUZCVlN4elFrRkJkVUlzUjBGQlIxTXNSVUZCUnl4SFFVRkhMR0ZCUVdGS0xFTkJRVThzTkVKQlFUUkNTU3hGUVVGSExGVkJRVlVzUjBGQlNTeEZRVUZKTEVWQlIzWklja0lzUlVGQlVWa3NSVUZCVlN4eFFrRkJjMElzYlVKQlFXMUNXQ3hEUVVGUExFZEJRVWtzUlVGQlNTeEZRVVYyUlV3c1IwRkJhMEpETEVWQlFVbERMRVZCUVV0RExFVkJRVTlETEVWQlFWTkRMRU5CUVU4c1EwRkZha1VzUTBGRFFTeEpRVUZOUlN4RlFVRlBVQ3hIUVVGclFrTXNSVUZCU1VNc1JVRkJTME1zUlVGQlQwTXNSVUZCVTBNc1JVRkJVME1zUTBGQlJ5eEZRVU01Ukc5Q0xFZEJRVTFZTEVkQlFVRkVMRVZCUVVGU0xFVkJRVWtzVlVGQlNpeFpRVUZCVVN4RlFVRkJMRXRCUVVGU0xFVkJRV05ETEVWQlFVMVZMRWRCUVU5aUxFVkJRVkZaTEVWQlFWVXNjVUpCUVhOQ1F5eERRVUZITEVWQlFVZG1MRVZCUVVrc1YwRkJOMFVzUzBGQlFXRXNSVUZCZVVaU0xFVkJReTlHYjBJc1JVRkJUME1zUlVGQlQwWXNRMEZCUnl4RlFVTnFRa0VzUlVGRFFTeEpRVUZKUnl4RlFVRlBTQ3hEUVVGSExFVkJRM0JDTEU5QlFVRkRMRVZCUVVzc1RVRkJVWEJDTEVWQlFVc3NUVUZEYkVKdlFpeEZRVUZMTEVsQlFVMTBRaXhGUVVOUVF5eEhRVUZCTEUxQlFVRkJMRVZCUVVzc1UwRkRUSEZDTEVWQlFVc3NUMEZCVTNKQ0xFVkJRVWtzVVVGRFpuRkNMRU5CUTFnc1EwTnVSa0VzVTBGQlUwY3NSMEZCYlVKRExFVkJRVXRETEVWQlFWRkRMRVZCUVZNc1EwRkRPVU1zU1VGQlRVTXNSVUZCVVVZc1JVRkJUeXhQUVVObVJ5eEZRVUZUUXl4SFFVRjFRa29zUlVGQlVVUXNSVUZCU1N4UlFVRlJMRTlCUVZGRkxFTkJRVThzUlVGRGVrVXNSMEZCU1N4RFFVRkRSU3hGUVVORUxFMUJRVThzUTBGQlJTeE5RVUZQTEVkQlFVa3NTMEZCVFN4TFFVRk5MRkZCUVZNc1IwRkJTU3hOUVVGUExFTkJRVU5FTEVWQlFVOUJMRVZCUVU5QkxFTkJRVXNzUTBGQlJTeEZRVU01UlN4SlFVRk5SeXhGUVVGUFJpeEZRVUZQTEU5QlFWTXNTVUZCVFVjc1JVRkJUeXhoUVVGbFFTeEZRVUZQTEdOQlF6RkVReXhGUVVGUlVDeEZRVUZQTEU5QlFWTlJMRWRCUVZkU0xFVkJRVThzVFVGQlRTeEZRVUZKTEVOQlFVTXNSVUZGZGtSVExFVkJRV0ZHTEVWQlFVMHNUMEZEZGtJc1VVRkJVMGNzUlVGQlNVZ3NSVUZCVFN4UFFVRlRMRVZCUVVkSExFZEJRVXNzUlVGQlJ5eEZRVUZGUVN4RlFVRkhMRU5CUTNoRExFbEJRVTFETEVWQlFWVktMRVZCUVUxSExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlF6RkNMRWRCUVVsRExFbEJRVmtzU1VGQlRVRXNTVUZCV1N4TFFVTTVRa1lzUlVGQllVTXNUVUZGWWl4TlFVTlNMRU5CUlVFc1IwRkJTVVFzU1VGQlpTeEZRVUZITEVOQlEyeENMRWxCUVUxSExFVkJRVkZVTEVWQlFVOHNVVUZCVlN4TFFVRlBTU3hGUVVGTkxFOUJRVk1zUlVGREwwTTdRVUZCUVN4RlFVRkxMRTlCUVU4c1MwRkJTeXhKUVVGSkxFVkJRVWRCTEVWQlFVMHNUMEZCVXl4RFFVRkRMRU5CUVVNc1JVRkRla01zUjBGRFJrMHNSVUZCVFZnc1JVRkJVVU1zUlVGQlR5eFBRVU42UWl4UFFVRkpTQ3hGUVVGUExGTkJRMUJoTEVkQlFVOWlMRVZCUVU4c1QwRkJUeXhSUVVOc1FpeERRVUZGTEUxQlFVRlpMRVZCUVU4c1MwRkJRVkFzUlVGQlRTeFJRVUZUUml4RlFVRlBMRkZCUVZNc1RVRkJUeXhEUVVGRFJDeEZRVUZQVnl4RlFVRkxRU3hEUVVGSExFTkJRVVVzUTBGRE5VVXNRMEZGUVN4SlFVRkpReXhGUVVGaFpDeEZRVUZQTEU5QlFWTkhMRVZCUVU4c1QwRkRjRU5aTEVWQlFWTm1MRVZCUVU4c1QwRkJVMGNzUlVGQlR5eFBRVU5vUTJFc1JVRkJaU3hGUVVOdVFpeFJRVUZUVGl4RlFVRkpMRVZCUVVkQkxFVkJRVWxFTEVWQlFWa3NSVUZCUlVNc1JVRkJSeXhEUVVOcVF5eEhRVUZOTEVOQlFVTlBMRVZCUVZGT0xFTkJRVThzUlVGQlNVb3NSVUZCVFVjc1EwRkJReXhGUVVOcVF5eEhRVUZKUXl4SlFVRlpMRWxCUVUxQkxFbEJRVmtzUzBGRE1VSlNMRVZCUVU4c1UwRkJWeXhIUVVGTFl5eEZRVUZQTEU5QlFWTklMRWxCUTNaRFFTeEZRVUZoUnl4RlFVRlBMRmxCUlhaQ0xFTkJRMGRCTEVWQlFVOHNUMEZCVTBnc1IwRkZhRUppTEVWQlFWRmpMRVZCUVZORkxFVkJRVThzVDBGQlVTeGxRVVJvUWl4cFIwRkRkVU1zUlVGRmRrUmtMRVZCUVU4c1UwRkJWeXhKUVVOc1FsY3NSVUZCWVVjc1JVRkJUeXhSUVVONFFrUXNSVUZCWlU0c1JVRkRXRWtzU1VGQlpTeEhRVUZMTEVOQlFVTm1MRVZCUVVrc1VVRkZla0pGTEVWQlFWRmpMRVZCUVZFc1lVRkVRU3h4UkVGRGNVSXNSVUZGZWtNc1MwRkRTaXhEUVVOQlFTeEhRVUZWUlN4RlFVRlBMRTlCUVZOT0xFVkJRVkVzVDBGQlV5eERRVU12UXl4RFFVVkJMRkZCUVZORUxFVkJRVWxJTEVWQlFVMHNUMEZCVXl4RlFVRkhSeXhIUVVGTFJDeEZRVUZaTEVWQlFVVkRMRVZCUXpGRFNDeEZRVUZOUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFOUJRVk5KTEVsQlEzSkNUQ3hGUVVGaFF5eEZRVUZKTEVkQlJYcENMRWxCUVVsRkxFVkJRVkVzUjBGRFVrMHNSVUZCVFN4SFFVTk9ReXhGUVVGdFFpeEhRVVYyUWl4UlFVRlRWQ3hGUVVGSkxFVkJRVWRCTEVWQlFVbE5MRVZCUVdNc1JVRkJSVTRzUlVGRGFFTkZMRWRCUVZOTUxFVkJRVTFITEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1RVRkJUVWtzUTBGQlZTeEZRVUZKTzBGQlFVRXNSVUZETjBNc1VVRkJVMG9zUlVGQlNVMHNSVUZCWTA0c1JVRkJTVVFzUlVGQldTeEZRVUZGUXl4RlFVRkhMRU5CUXpWRExFZEJRVWtzUTBGQlEwOHNSVUZCVVU0c1EwRkJUeXhGUVVGSlNpeEZRVUZOUnl4RFFVRkRMRVZCUXk5Q1N5eEhRVUZWUlN4RlFVRlBMRTlCUVZOT0xFVkJRVkVzVDBGQlV5eEZRVU16UXl4SlFVRk5VeXhGUVVGUFZDeEZRVUZSUVN4RlFVRlJMRTlCUVZNc1EwRkJReXhKUVVGTkxFdEJTVGRETEVkQlNFbFRMRWxCUTBGVUxFVkJRVlZCTEVWQlFWRXNUVUZCVFN4RlFVRkhMRVZCUVVVc1IwRkZOMEpCTEVkQlFWZE5MRVZCUVU4c1QwRkJVMGdzUlVGQldTeERRVWwyUXl4SlFVRk5UeXhGUVVGVkxESkVRVWhLYkVJc1JVRkJUeXhQUVVOaUxHbERRVU5CTEZsQlEzZEZMRWRCUXpsRlJpeEZRVUZSWXl4RlFVRlRTaXhGUVVGUkxGRkJRVlZUTEVWQlFVOHNSVUZCU1N4SFFVRkpMR0ZCUVdORExFTkJRVThzUlVGRGRrVktMRVZCUVZNc1JVRkRZaXhEUVVOSldpeEpRVUZUUXl4RlFVRlBMR1ZCUTJoQ1RTeEhRVUZUVFN4RlFVRk5SQ3hGUVVGUExFMUJRVTFJTEVOQlFWVXNSVUZCU1Vnc1JVRkRNVU5QTEVWQlFVMDdRVUZCUVN4SFFVVkVSQ3hGUVVGUExFOUJRVk5JTEVkQlFXTklMRVZCUVZFc1EwRkJReXhKUVVGTkxFdEJSVGxEVHl4SlFVRlJMRWxCUTFKQkxFVkJRVTA3UVVGQlFTeEZRVU5FTEVOQlFVTkRMRWRCUVc5Q1JDeEpRVUZSTzBGQlFVRXNTVUZEYkVOQkxFVkJRVTA3UVVGQlFUdEJRVUZCTEVkQlExWk9MRWRCUVZOTkxFVkJRVTFFTEVWQlFVOHNUVUZCVFVnc1EwRkJWU3hGUVVGSlNDeEZRVU14UTA4c1JVRkJUVHRCUVVGQkxFVkJRMDVETEVWQlFXMUNMRWxCUldSU0xFbEJRVmtzUjBGRllrOHNTVUZCVVR0QlFVRkJMRVZCUTFKT0xFZEJRVk03UVVGQlFTeEZRVVZVVFN4RlFVRk5PMEZCUVVFc1IwRkhWazRzUjBGQlUwMHNSVUZCVFZBc1JVRkRaazhzUlVGQlRTeEpRVU5PUXl4RlFVRnRRaXhIUVVVelFpeERRVU5CTEU5QlFWRm9RaXhGUVVGUExFMUJRVThzUTBGRGJFSXNTVUZCU3l4SlFVTkVMRTFCUTBvc1NVRkJTeXhKUVVORUxGRkJRVk5QTEVWQlFVbEVMRVZCUVZsRExFVkJRVWxJTEVWQlFVMHNUMEZCVVN4RlFVRkZSeXhGUVVONlEwVXNSMEZCVXp0QlFVRkJMRVZCUVU5TUxFVkJRVTFITEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1RVRkJUVWtzUTBGQlZTeEZRVU0xUTBZc1JVRkJUVUVzUlVGQlRTeFBRVUZUTEVOQlFVTXNTVUZCVFR0QlFVRkJMRWxCUXpWQ1FTeEhRVUZUTzBGQlFVRXNSMEZEWWl4TlFVTktMRkZCUTBsQkxFZEJRVk03UVVGQlFTeERRVU5xUWl4RFFVTkJMRWxCUVUxRExFVkJRVTFZTEVWQlFWRkRMRVZCUVU4c1QwRkJVMGdzUlVGQlR5eFBRVUZQTEU5QlEyeEVMRTFCUVU4c1EwRkJSU3hOUVVGQldTeEZRVUZQTEV0QlFVRlFMRVZCUVUwc1VVRkJVMFlzUlVGQlR5eFJRVUZUTEUxQlFVOHNRMEZCUTBRc1JVRkJUMWNzUlVGQlMwRXNRMEZCUnl4RFFVRkZMRU5CUXpWRkxFTkJRMEVzVTBGQlUxUXNSMEZCZFVJc1EwRkJSU3hQUVVGQlZ5eEZRVUZSTEUxQlFVRlBMRU5CUVUwc1JVRkJSME1zUlVGQlVYUkNMRVZCUVZNc1EwRkZhRVVzUjBGQlNYRkNMRVZCUVUwc1EwRkJReXhGUVVGRkxFOUJRVk1zYzBKQlEyeENMRTlCUVVGeVFpeEZRVUZSY1VJc1JVRkJUU3hEUVVGRExFVkJRVWNzWVVGQll5d3JRa0ZCSzBJc1JVRkRlRVFzUzBGRldDeEhRVUZOTEVOQlFVVXNUMEZCUVVVc1EwRkJUeXhGUVVGSlJpeEZRVUZOTEVOQlFVTXNSVUZEY0VKSExFVkJRVTlFTEVWQlFVOHNRMEZCUXl4RlFVTnFRbEFzUlVGQlV5eEZRVU5VVXl4RlFVRlJMRWRCUTFKRExFVkJRVkVzUjBGRFdpeFJRVUZUYWtJc1JVRkJTU3hGUVVGSFFTeEZRVUZKWXl4RlFVRlBMRTlCUVZFc1JVRkJSV1FzUlVGQlJ5eERRVU53UXl4SlFVRk5hMElzUlVGQlMwb3NSVUZCVDJRc1EwRkJReXhGUVVOdVFpeEhRVUZKTEVOQlFVTm5RaXhKUVVGVlJTeEpRVUZQTEV0QlFVOUJMRWxCUVU4c1MwRkRhRU5HTEVWQlFWRkZMRTFCUTFBc1EwRkRSQ3hKUVVGTlF5eEZRVUZKTEU5QlFVOUVMRU5CUVVVc1JVRkRaaXhEUVVGRFdDeEhRVUZWV1N4RlFVTllXaXhGUVVGVFdTeEZRVU5LUml4SlFVRlZMRXRCUTJaQkxFVkJRVkZhTEVWQlFWTk1MRVZCUTNwQ0xFTkJRMG9zUTBGRFNXbENMRWxCUVZVc1NVRkRWakZDTEVWQlFWRXdRaXhGUVVGUExHMUNRVUZ2UWl4clJFRkJhMFJJTEVOQlFVMHNSVUZCUlN4RlFVTnFSeXhKUVVGSlRTeEZRVUZYTEVkQlExaERMRVZCUVZVc1IwRkRWa01zUlVGQlUxSXNSVUZCVHl4UFFVTndRaXhSUVVGVFpDeEZRVUZKTEVWQlFVZEJMRVZCUVVsWkxFVkJRVTBzVDBGQlVTeEZRVUZGV2l4RlFVRkhMRU5CUTI1RExFbEJRVTExUWl4RlFVRlJXQ3hGUVVGTldpeERRVUZETEVWQlEzSkNMRTlCUVZGMVFpeEZRVUZOTEV0QlFVMHNRMEZEYUVJc1NVRkJTeXhSUVVORVNDeEZRVUZYTEVkQlJXWXNTVUZCU3l4VlFVTkVSU3hIUVVGVlF5eEZRVUZOTEU5QlFVOHNUMEZEZGtJc1RVRkRTaXhKUVVGTExGVkJRMGRXTEVkQlFWVXNRMEZCUTA4c1IwRkZXRGRDTEVWQlFWRm5ReXhGUVVGUExHVkJSRU1zZDBWQlEzTkNMRVZCUlRGRFJDeEhRVUZWUXl4RlFVRk5MRTlCUVU4c1QwRkRka0pHTEVWQlFWVkZMRVZCUVUwc1QwRkJUeXhWUVVGVkxFTkJRVU1zUlVGRGJFTXNUVUZEU2l4SlFVRkxMRkZCUTBSb1F5eEZRVUZSWjBNc1JVRkJUeXh0UWtGQmIwSkJMRVZCUVUwc1QwRkJUeXhGUVVOb1JFUXNSMEZCVlVNc1JVRkJUU3hQUVVGUExFOUJRM1pDTEUxQlJVb3NVVUZCVXl4RFFVTk1MRWxCUVUxYUxFVkJRVlVzTkVOQlFUUkRXU3hGUVVGTkxFbEJRVWtzUjBGRGRFVm9ReXhGUVVGUlowTXNSVUZCVHl4dFFrRkJiMEphTEVOQlFVOHNSVUZETVVNc1NVRkJUV0VzUlVGQlMwUXNSVUZCVFN4UFFVTmlReXhIUVVGTkxFOUJRVTlCTEVkQlFVOHNWMEZEY0VKR0xFZEJRVlZGTEVWQlFVY3NUMEZEY2tJc1EwRkRTaXhEUVVOS0xFTkJRMEVzVFVGQlR5eERRVUZGTEV0QlFVRlVMRVZCUVUwc1QwRkJRVklzUlVGQlVTeE5RVUZCVXl4RlFVRlBMRkZCUVVGTExFVkJRVk1zVDBGQlFVTXNRMEZCVHl4RFFVTnNSQ3hEUVVWQkxGTkJRVk40UWl4SFFVRlhaMElzUlVGQlVTeERRVU40UWl4SlFVRk5WeXhGUVVGUldDeEZRVUZQTEUxQlFVMHNVVUZCVVN4RlFVTTNRbGtzUlVGQlVVUXNSVUZCVFN4RFFVRkRMRVZCUTJaRkxFVkJRVWxFTEVWQlFVMHNUVUZCVFN4UFFVRlBMRVZCU1haQ04wSXNSVUZCVVN4RFFVaEJPRUlzUjBGQlFTeE5RVUZCUVN4RlFVRkpMRWRCUTFvc1EwRkJRMEVzUlVGQlJTeERRVUZETEVWQlFVZEVMRVZCUVUwc1RVRkJUVU1zUlVGQlJTeERRVUZETEVWQlFVVXNUVUZCVFN4RFFVRkRMRVZCUXk5Q0xFTkJRVU1zUjBGQlNVUXNRMEZCU3l4RFFVTkpMRVZCUTNCQ0xGRkJRVk14UWl4RlFVRkpMRVZCUVVkQkxFVkJRVWw1UWl4RlFVRk5MRTlCUVZGNlFpeEhRVUZMTEVWQlEyNURTQ3hGUVVGTkxFdEJRVXNzUTBGQlF6UkNMRVZCUVUxNlFpeERRVUZETEVWQlFVZDVRaXhGUVVGTmVrSXNSVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVOMlF5eFBRVUZQU0N4RFFVTllMRU5EYUUxQkxGTkJRVk1yUWl4SFFVRnJRa01zUlVGQlVVTXNSVUZCVVVNc1JVRkJVeXhEUVVOb1JDeEhRVUZOTEVOQlFVVXNUMEZCUVVNc1JVRkJVU3hMUVVGQlF5eEZRVUZOTEU5QlFVRkRMRVZCUVZFc1NVRkJRVU1zUTBGQlNTeEZRVUZKVGl4RlFVTnNRMDhzUlVGRFFVTXNSVUZEUlVNc1JVRkJWeXhEUVVGRFF5eEZRVUZMUXl4RlFVRk5ReXhKUVVGUlZpeEZRVUZSUXl4RlFVRlRUeXhGUVVGTFF5eEZRVUZOUXl4RFFVRkhMRVZCUTNCRkxFOUJRVkZTTEVWQlFVMHNRMEZEVml4SlFVRkxMRk5CUTBSSExFVkJRVkZOTEVWQlFVOHNUVUZEWmt3c1JVRkJVVTBzUjBGQlYxUXNSVUZCVVVrc1EwRkJVU3hGUVVOdVF5eE5RVU5LTEVsQlFVc3NkVUpCUTBSR0xFVkJRVkZOTEVWQlFVOHNZVUZEWmt3c1JVRkJVVThzUjBGQmEwSldMRVZCUVZGSkxFTkJRVkVzUlVGRE1VTXNUVUZEU2l4SlFVRkxMSFZDUVVORVJpeEZRVUZSVFN4RlFVRlBMR0ZCUTJaTUxFVkJRVkZSTEVkQlFXdENXQ3hGUVVGUlNTeERRVUZSTEVWQlF6RkRMRTFCUlVvc1VVRkRTU3hQUVVGQlVDeEZRVUZSUml4RlFVRlJMRzFDUVVGdlFpdzBRMEZCTkVOSkxFTkJRVWtzUlVGQlJTeEZRVU12UlN4RFFVTklMRTFCUVU4c1IwRkRVQ3hMUVVGTkxFdEJRMDRzVVVGQlV5eEhRVU5VTEUxQlFVOHNRMEZCUTBRc1JVRkJVVUVzUlVGQlUwVXNSVUZCVHl4UFFVRlJSaXhGUVVGVFJTeEZRVUZQTEUxQlFVMHNRMEZEYkVVc1EwRkRVaXhEUVVOQkxFbEJRVTFaTEVWQlFWZGtMRVZCUVZORkxFVkJRVThzVDBGRE0wSmhMRVZCUVV0RExFZEJRVmRpTEVWQlFVdFhMRVZCUVZWb1FpeEZRVUZSUXl4RFFVRlBMRVZCUTNCRUxFMUJRVThzUTBGRFNDeE5RVUZCVFN4RlFVTkJMRXRCUVUxRUxFVkJRMDRzVVVGQlUxY3NSVUZCUnl4UlFVTmFMRTFCUVU4c1EwRkJRMllzUlVGQlVXTXNSVUZCVlVNc1JVRkJSeXhOUVVGTkxFTkJRM1pETEVOQlEwb3NRMEZEUVN4VFFVRlRTaXhIUVVGWFZDeEZRVUZSU0N4RlFVRlRMRU5CUTJwRExFbEJRVWxyUWl4RlFVRlZMRWRCUTJRc1QwRkJVV1lzUlVGQlR5eERRVUZETEVWQlFVY3NRMEZGWml4SlFVRkxMRWxCUTBSbExFVkJRVlVzYTBKQlExWXNUVUZEU2l4SlFVRkxMRWxCUTBSQkxFVkJRVlVzTmtKQlExWXNUVUZEU2l4SlFVRkxMRWxCUTBSQkxFVkJRVlVzYTBOQlExWXNUVUZEU2l4SlFVRkxMRWxCUTB3c1NVRkJTeXhKUVVGTExFTkJRMDVCTEVWQlFWVXNNRUpCUVRCQ1ppeEZRVUZQTEVOQlFVTXNRMEZCUXl4SFFVTTNReXhMUVVOS0xFTkJRMEVzU1VGQlN5eEpRVU5NTEVsQlFVc3NTVUZCU3l4RFFVTk9aU3hGUVVGVkxITkNRVUZ6UW1Zc1JVRkJUeXhEUVVGRExFTkJRVU1zUjBGRGVrTXNTMEZEU2l4RFFVTktMRU5CUTBFc1QwRkJTV1VzUjBGRFFXeENMRVZCUVZFc1JVRkJSeXh0UWtGQmIwSXNhVU5CUVdsRGEwSXNRMEZCVHl4RlFVRkZMRVZCUTNSRlF5eEhRVUZWYUVJc1EwRkJUU3hEUVVNelFpeERRVU5CTEZOQlFWTlZMRWRCUVd0Q1ZpeEZRVUZSU0N4RlFVRlRMRU5CUTNoRExFOUJRVWxITEVWQlFVOUJMRVZCUVU4c1QwRkJVeXhEUVVGRExFbEJRVTBzUzBGQlQwRXNSVUZCVHl4VFFVRlhMRWxCUTNaRVNDeEZRVUZSUnl4RlFVRlBMRTlCUVZFc1pVRkJaMElzZDBKQlFYZENMRVZCUXpWRVowSXNSMEZCVldoQ0xFVkJRVThzVFVGQlRTeEZRVUZITEVWQlFVVXNRMEZCUXl4RlFVRkZMRkZCUVZFc1RVRkJUeXhIUVVGSExFTkJRelZFTEVOQlEwRXNVMEZCVTJkQ0xFZEJRVlZvUWl4RlFVRlJMRU5CZWtVelFpeEpRVUZCYVVJc1JVRnBSa2tzU1VGQlNVTXNSVUZCVDBNc1JVRkRXQ3hIUVVGSkxFTkJRMEZFTEVWQlFWRXNTVUZCU1N4UFFVRlBPMEZCUVVFc1JVRkJPRUlzU1VGQlNTeEZRVU55UkVNc1JVRkJUeXhKUVVGSkxFOUJRVTg3UVVGQlFTeEZRVUY1UXl4SlFVRkpMRU5CUTI1RkxFOUJRMDFETEVWQlFVRXNRMEZEUmtZc1JVRkJVU3hYUVVGRExITkNRVUZwUWl4SlFVRkZMRVZCUXpWQ1F5eEZRVUZQTEZkQlFVTXNOa0pCUVhWQ0xFbEJRVVVzUTBGRGNrTXNRMEZEUVN4SlFVRkpSU3hGUVVGUlNDeEZRVUZOTEV0QlFVdHNRaXhEUVVGTkxFVkJRemRDTEVkQlFVa3NRMEZCUTNGQ0xFVkJRMFFzVDBGQlQzSkNMRVZCUTFnc1NVRkJTWE5DTEVWQlFVMUVMRVZCUVUwc1EwRkJReXhGUVVOaVJTeEZRVUZOTEVsQlEwNURMRVZCUVUxT0xFVkJRVTBzVlVGRmFFSXNTVUZFUVVNc1JVRkJTeXhWUVVGWlN5eEZRVU5VU0N4RlFVRlJSaXhGUVVGTExFdEJRVXR1UWl4RFFVRk5MRWRCUTNoQ2NVSXNSVUZCVFN4RFFVRkRMRWxCUVUwc1IwRkRWRVVzU1VGQlVUdEJRVUZCTEVWQlExSkVMRWRCUVU5RExFVkJSVkJCTEVWQlFVMDdRVUZCUVN4SFFVZFdSQ3hIUVVGUFF5eEZRVUZOUml4RlFVRk5MRU5CUVVNc1JVRkRjRUpGTEVWQlFVMHNTMEZGVmtNc1JVRkJUVXdzUlVGQlN5eFZRVVZtTEVsQlFVMU5MRVZCUVU4c1YwRkJReXhqUVVGWExFbEJRVVVzUlVGRE0wSXNUMEZCUVVFc1JVRkJTeXhWUVVGWlJDeEZRVU5xUWtnc1JVRkJVVWtzUlVGQlN5eExRVUZMZWtJc1EwRkJUU3hGUVVOcVFuTkNMRVZCUVUxRExFbEJRVTlPTEVWQlFVRkpMRWRCUVVFc1dVRkJRVUVzUlVGQlVTeExRVUZTTEV0QlFVRktMRVZCUVdNc1IwRkRkRU1zUTBGRFFTeFRRVUZUVGl4SFFVRnJRbGdzUlVGQlVVZ3NSVUZCVXl4RFFVTjRReXhKUVVGSmVVSXNSVUZCVFN4SFFVTldMRkZCUVZOSkxFVkJRVWtzUlVGQlIwRXNSVUZCU1RGQ0xFVkJRVThzVDBGQlV5eEZRVUZITEVWQlFVVXdRaXhGUVVGSExFTkJRM2hETEVsQlFVMURMRVZCUVVzelFpeEZRVUZQTUVJc1EwRkJReXhGUVVOdVFpeEhRVUZKTEVWQlFVRkRMRWxCUVU4c1RVRkJVVE5DTEVWQlFVOHdRaXhGUVVGSkxFTkJRVU1zU1VGQlRUdEJRVUZCTEVkQlJYSkRMRWRCUVVsRExFbEJRVTg3UVVGQlFTeEZRVUZOTEVOQlEySXNSMEZCVFN4RFFVRkZMRXRCUVVGRExFVkJRVTBzVDBGQlFUbENMRU5CUVU4c1JVRkJTU3RDTEVkQlFWazNRaXhGUVVGUk1FSXNRMEZCUXl4RlFVTTVRMG9zUjBGQlQwMHNSVUZEVUVZc1JVRkJTVFZDTEVOQlExSXNVMEZEVXpaQ0xFbEJRVThzUzBGQlRTeERRVU5zUWl4SlFVRkpSeXhGUVVGUE9VSXNSVUZCVHl4RlFVRkZNRUlzUTBGQlF5eEZRVU5tU3l4RlFVRkxReXhIUVVGWlJpeERRVUZKTEVWQlF6TkNMRWRCUVVsRExFVkJRMEZVTEVkQlFVOVRMRlZCUTBaRUxFbEJRVk03UVVGQlFTeEZRVWRrTEVsQlJFRkJMRVZCUVU4NVFpeEZRVUZQTUVJc1JVRkJTU3hEUVVGRExFVkJRMXBKTEVsQlFWTXNTMEZCVDBFc1NVRkJVeXhMUVVNMVFrRXNSVUZCVHpsQ0xFVkJRVThzUlVGQlJUQkNMRVZCUVVrc1EwRkJReXhWUVVWd1Fra3NTVUZCVXl4TlFVRlJPVUlzUlVGQlR6QkNMRVZCUVVrc1EwRkJReXhKUVVGTk8wRkJRVUVzUlVGSGVFTXNTVUZFUVVrc1JVRkJUemxDTEVWQlFVOHNSVUZCUlRCQ0xFVkJRVWtzUTBGQlF5eEZRVU5rU1N4SlFVRlRMRXRCUVU5QkxFbEJRVk1zUzBGRE5VSkJMRVZCUVU4NVFpeEZRVUZQTEVWQlFVVXdRaXhGUVVGSkxFTkJRVU1zVlVGRmNFSkpMRWxCUVZNc1MwRkJUMEVzU1VGQlV5eExRVUZQUVN4SlFVRlRMRWxCUVVzc1EwRkRia1FzU1VGQlRVY3NSVUZCVXl4RFFVRkZMRVZCUVVjc1JVRkJSeXhGUVVGSExFVkJRVWNzUlVGQlJ5eERRVUZGTEVWQlFVVklMRU5CUVVrc1JVRkRlRU5TTEVkQlFVOVpMRWRCUVdOc1F5eEZRVUZSTUVJc1JVRkJTU3hGUVVGSFR5eEZRVUZSY0VNc1EwRkJUeXhGUVVOdVJEWkNMRWRCUVV0UExFTkJRMVFzUzBGRFN5eERRVU5FTEVsQlFVMUZMRVZCUVUxdVF5eEZRVUZQTEU5QlFVOHdRaXhGUVVGSkxFVkJRVWNzUTBGQlF5eEZRVU5zUXpkQ0xFVkJRVkUyUWl4RlFVRkpMRVZCUVVjc1owSkJRV2xDTERKQ1FVRXlRbE1zUTBGQlJ5eEZRVUZGTEVWQlEyaEZZaXhIUVVGUFlTeERRVU5ZTEVOQlEwb3NVMEZEVTFJc1NVRkJUeXhMUVVGUFFTeEpRVUZQTEVsQlFVMHNRMEZGYUVNc1NVRkJUVk1zUlVGQlZWWXNSVUZEV2trc1JVRkJUemxDTEVWQlFVOHdRaXhGUVVGSkxFTkJRVU1zUlVGRGRrSXNTMEZCVDBrc1NVRkJVeXhMUVVGUFFTeEpRVUZUTEV0QlF6VkNRU3hGUVVGUE9VSXNSVUZCVHl4RlFVRkZNRUlzUlVGQlNTeERRVUZETEVWQlEzSkNTU3hKUVVGVE8wRkJRVUVzUjBGQlVTeEZRVUZGUVN4SlFVRlRMRTFCUVZFNVFpeEZRVUZQTUVJc1JVRkJTU3hEUVVGRExFbEJRVTA3UVVGQlFTeExRVU4wUkVvc1IwRkJUMGtzUlVGQlNWVXNSVUZCVlhCRExFVkJRVThzVFVGQlRXOURMRVZCUVZOV0xFVkJRVWtzUTBGQlF5eEZRVUZKUXl4RlFVTTFSQ3hOUVVWSlRDeEhRVUZQU3l4RFFVVm1MRU5CUTBFc1QwRkJTVE5DTEVWQlFVOUJMRVZCUVU4c1QwRkJVeXhEUVVGRExFbEJRVTBzUzBGQlQwRXNSVUZCVHl4VFFVRlhMRWxCUTNaRVNDeEZRVUZSUnl4RlFVRlBMRTlCUVZFc1pVRkJaMElzZDBKQlFYZENMRVZCUXpWRWMwSXNRMEZEV0N4RFFVdEJMRk5CUVZOUExFZEJRVmszUWl4RlFVRlJSaXhGUVVGUkxFTkJRMnBETEVsQlFVazRRaXhGUVVGUExFZEJRMUJFTEVWQlFVc3pRaXhGUVVGUFJpeEZRVUZUTEVOQlFVTXNSVUZETVVJc1RVRkJUelpDTEVsQlFVOHNTMEZCVDBFc1NVRkJUeXhMUVVGUlFTeEpRVUZQTzBGQlFVRXNSMEZCVVVFc1NVRkJUeXhQUVVOc1JDeEZRVUZCUVN4SlFVRlBMRTFCUVZFelFpeEZRVUZQUml4RlFVRlRMRU5CUVVNc1NVRkJUVHRCUVVGQkxFbEJSWFJETmtJc1NVRkJUenRCUVVGQkxFbEJRMUJETEVkQlFWRTdRVUZCUVN4SFFVTmFPVUlzUjBGQlZTeEZRVU5XTmtJc1JVRkJTek5DTEVWQlFVOUdMRVZCUVZNc1EwRkJReXhGUVVVeFFpeFBRVUZMT0VJc1NVRkRSRUVzUlVGQlR5eExRVU5LTEVOQlFVVXNTMEZCUVVFc1JVRkJUU3hQUVVGQk9VSXNRMEZCVHl4RFFVTXhRaXhEUVVOQkxFbEJRVTFyUXl4SFFVRmpMRU5CUTJoQ0xFVkJRVXNzUzBGRFRDeEZRVUZITEU5QlEwZ3NSVUZCUnl4TFFVTklMRVZCUVVjc1QwRkRTQ3hGUVVGSExFdEJRMGdzUlVGQlJ6dEJRVUZCTEVWQlEwZ3NSVUZCUnl4TFFVTklMRVZCUVVjc1NVRkRTQ3hGUVVGSExFdEJRMGdzUlVGQlJ5eFBRVU5JTEVWQlFVY3NUMEZEU0N4RlFVRkhMRk5CUTBnc1JVRkJSeXhUUVVOSUxFbEJRVXNzU1VGRFRDeEpRVUZMTEVsQlEwd3NTVUZCU3l4SlFVTk1MRXRCUVUwc1MwRkRUaXhKUVVGTkxFZEJRMVlzUlVGRFFTeFRRVUZUUlN4SFFVRmpiRU1zUlVGQlVVWXNSVUZCVVcxRExFVkJRVkZ3UXl4RlFVRlRMRU5CUTNCRUxFbEJRVTFyUXl4RlFVRkxMMElzUlVGQlR5eFBRVUZQUml4RlFVRlJiVU1zUTBGQlRTeEZRVVZxUXpOQ0xFVkJSRXQ1UWl4RlFVRkhMRk5CUVZkRkxFZEJRVlVzYVVKQlFXbENMRXRCUVV0R0xFTkJRVVVzUlVGRGVrTXNVMEZCVTBFc1JVRkJTU3hGUVVGRkxFVkJRVWtzU1VGRGNrTXNSMEZCU1N4TlFVRk5la0lzUTBGQlNTeEZRVUZITEVOQlEySXNTVUZCVFRaQ0xFVkJRVTF1UXl4RlFVRlBMRTlCUVU5R0xFVkJRVk1zUlVGQlIyMURMRVZCUVZNc1EwRkJReXhGUVVOb1JDeFBRVUZCY0VNc1JVRkJVVU1zUlVGQlV5eEZRVUZITEdkQ1FVRnBRaXd5UWtGQk1rSnhReXhEUVVGSExFVkJRVVVzUlVGRE9VUkJMRU5CUTFnc1EwRkRRU3hQUVVGUExFOUJRVThzWTBGQll6ZENMRU5CUVVrc1EwRkRjRU1zUTBOMlRrRXNVMEZCVXl0Q0xFZEJRV05ETEVWQlFVdERMRVZCUVU5RExFVkJRVlZETEVWQlFWTXNRMEZEYkVRc1IwRkJUU3hEUVVGRkxFMUJRVUZETEVWQlFVOHNTMEZCUVVNc1JVRkJUU3hSUVVGQlF5eEZRVUZUTEUxQlFVRkRMRU5CUVUwc1JVRkJTVTRzUlVGQlRTeFBRVUZUTEdWQlEycEVUeXhIUVVGdFFsSXNSVUZCUzBNc1JVRkJUMFVzUTBGQlR5eEZRVU4wUTAwc1IwRkJhMEpTTEVWQlFVOUVMRVZCUVVrc1VVRkJVU3hQUVVGUlJ5eERRVUZQTEVWQlEzQkVUeXhGUVVGVlVpeEZRVU5XUml4RlFVRkpMRmRCUVZjc1VVRkJVVVVzUlVGQlV5eFBRVUZSVXl4SFFVRlBVaXhGUVVGUlJDeEZRVUZWTEhGQ1FVRnpRbE1zUTBGQlJ5eERRVUZETEVWQlF6TkdMRXRCUTBaRExFVkJRMEZhTEVWQlFVa3NVVUZCVVN4WlFVRmpRU3hGUVVGSkxFMUJRemxDV1N4RlFVRk5XaXhGUVVGSkxFOUJRVTloTEVWQlFVMHNSVUZGYkVKSUxFVkJRMHhGTEVWQlFVMUZMRWRCUVc5Q1pDeEZRVUZKTEU5QlFWRkpMRVZCUVU5TkxFVkJRVk5TTEVWQlFWVkRMRU5CUVU4c1JVRkRiRVZHTEVWQlFVMHNUMEZCVXl4VFFVTndRbGNzUlVGQlRVY3NSMEZCYjBKbUxFVkJRVXRKTEVWQlFVOUlMRVZCUVU5RkxFTkJRVThzUlVGRmNFUlRMRVZCUVUxYUxFVkJRVWtzVDBGQlQyRXNSVUZCVFN4RlFVTXpRaXhKUVVGSlJ5eEZRVU5LTEVkQlFVa3NRMEZEUVN4SlFVRk5ReXhGUVVGTlRDeEZRVUZKTEZGQlFWRlNMRVZCUVU5UExFZEJRVTlTTEVWQlFWRkVMRWRCUVVFc1MwRkJRVUVzUlVGQldVUXNSVUZCVHl4eFFrRkJjMEpWTEVOQlFVY3NSVUZCUjFnc1JVRkJTU3hQUVVGUExFVkJRM2hIWjBJc1JVRkJVMFVzUlVGQlUwUXNRMEZCUnl4RlFVRkpRU3hGUVVGTkxFbEJRVWxGTEVWQlFVOUdMRU5CUVVjc1EwRkRha1FzVDBGRFQwY3NSVUZCVHl4RFFVTldMRWxCUVUxVUxFVkJRVTFUTEdGQlFXbENMRTFCUVZGQkxFVkJRVTBzVVVGQlZTeFBRVUZQUVN4RFFVRkxMRVZCUTJwRmFrSXNSVUZCVVVRc1IwRkJRU3hMUVVGQlFTeEZRVUZaUkN4RlFVRlBMSEZDUVVGelFsVXNRMEZCUnl4RlFVTndSRXNzUlVGQlV5eEpRVUZKUnl4RlFVRlBaaXhEUVVGTExFTkJRemRDTEVOQlEwRXNUMEZCUVZrc1JVRkJUeXhOUVVGUlZDeEZRVU5tVXl4RlFVRlBMRTlCUVZOYUxFVkJRMXBETEVsQlEwRlhMRVZCUVU4c1MwRkJUMWdzUjBGRFpFc3NTVUZEUVUwc1JVRkJUeXhKUVVGTlRpeEhRVU5pUlN4RlFVRkpMRk5CUTBwSkxFVkJRVThzVDBGQlUwb3NSVUZCU1N4UlFVTndRazRzU1VGRFFWVXNSVUZCVHl4UlFVRlZWaXhIUVVOa1ZTeERRVU5ZTEVOQlEwRXNVMEZCVTBZc1IwRkJiMEpQTEVWQlFWRnFRaXhGUVVGUFRTeEZRVUZUVWl4RlFVRlZReXhGUVVGVExFTkJOVU40UlN4SlFVRkJiVUlzUlVFMlEwa3NSMEZCU1Zvc1NVRkJXU3hKUVVOYUxFOUJRVTlYTEVWQlFVOVNMRVZCUVUwc1JVRkRlRUlzU1VGQlRWVXNSVUZCWjBJc1EwRkJReXhGUVVOMlFpeFJRVUZYV0N4TFFVRlBVeXhGUVVGUExFdEJRM0pDTEVkQlFVa3NRMEZCUTFRc1JVRkJTU3haUVVGalFTeEZRVUZKTEUxQlFWRkdMRVZCUXk5Q0xFZEJRVWxGTEVWQlFVa3NVMEZCVjBFc1JVRkJTU3hMUVVOdVFsY3NSVUZCWXl4TFFVRkxXQ3hEUVVGSExFMUJSWFJDTEZGQlFVOUJMRVZCUjI1Q0xGRkJRVmRCTEV0QlFVOVhMRVZCUTJRc1NVRkJTVVFzUlVGQlFWWXNSVUZCU1N4UFFVRktMRTFCUVVGVkxFVkJRVlVzUzBGQlMyeENMRWRCUTJZc1QwRkJUMUVzUlVGRFppeEpRVUZOV1N4RlFVRkxTQ3hGUVVGUExGVkJRVlZZTEVOQlFVOHNSVUZEYmtNc1QwRkJTV01zUjBGQlRTeERRVUZEUVN4RlFVRkhMRmxCUjFaSUxFVkJRVThzUzBGQlN5eExRVUZMTEU5QlFVOHNUMEZCVHl4RFFVRkRMRVZCUVVkSExFVkJRVWtzUTBGQlJTeFJRVUZUTEVkQlFVOHNTMEZCVFN4TlFVRlZMRU5CUVVNc1EwRkJReXhGUVVOd1JVRXNTVUZGV0hKQ0xFVkJRVkZFTEVWQlFWVXNjVUpCUVhOQ0xHMUNRVUZ0UWxFc1EwRkJUeXhIUVVGSlFTeEpRVUZaTEhWQ1FVRjFRaXhGUVVOc1IxY3NSVUZCVDFJc1JVRkJUU3hGUVVONFFpeERRVU5CTEZOQlFWTkZMRWRCUVc5Q0xFTkJRVVVzVFVGQlFWVXNSVUZCVHl4WFFVRkJReXhGUVVGWkxFOUJRVUZNTEVOQlFVOHNSVUZCUjJwQ0xFVkJRVTlJTEVWQlFVOUZMRVZCUVZNc1EwRnlSVzVHTEVsQlFVRnRRaXhGUVhORlNTeEpRVUZOVml4RlFVRk5VeXhGUVVGUExFdEJRVXNzUzBGQlMxUXNSMEZCU1N4RFFYUkZja01zU1VGQlFWVXNSVUZ6UlhsRExFOUJRVUZXTEVWQlFVa3NWVUZCV1N4SlFVRlRZU3hIUVVGVFlpeEZRVUZKTEZWQlFWa3NWVUZEYmtaVkxFVkJRVUZXTEVWQlFVa3NUMEZCU2l4WlFVRkJWU3hGUVVGVkxFdEJRVXRzUWl4SlFVRk5MRWRCUVV0cFFpeEZRVUZQVWl4RlFVRk5MRVZCUXpORExFZEJRVWxSTEVWQlFVOHNUMEZCVVN4RFFVTm1MRWxCUVUxTkxFZEJRVk5NTEVWQlFVRkVMRVZCUVU4c1QwRkJUeXhMUVVGTFZDeEhRVUZKTEVOQmVrVTVReXhKUVVGQlZTeEZRWGxGYVVRc1QwRkJRVllzUlVGQlNTeFhRVUZYVlN4RlFVRkJWaXhGUVVGSkxFOUJRVW9zV1VGQlFWVXNSVUZCVlN4TFFVRkxiRUlzU1VGQlRTeEpRVUU1UkN4TFFVRkJhMElzUlVGRFdFUXNSVUZCVDFJc1JVRkJUU3hGUVVOcVFpeEhRVUZKUkN4RlFVRkpMRTFCUVZGbExFVkJRVThzU1VGQlN5eERRVU40UWl4SlFVRk5ReXhGUVVGTFJpeEZRVUZYTEZWQlFWVmtMRVZCUVVrc1IwRkJSeXhGUVVOcVEybENMRVZCUVV0SUxFVkJRVmNzVlVGQlZVTXNSVUZCVHl4SFFVRkhMRVZCUTNCRGFFSXNSVUZCVFN4cFEwRkJhVU5wUWl4RFFVRkZMRTlCUVU5RExFTkJRVVVzUjBGRGVFUXhRaXhGUVVGUlJpeEZRVUZQTEhGQ1FVRnpRbFVzUlVGQlN5eEZRVUZKTEVOQlEyeEVMRU5CUTBvc1EwRkRRU3hQUVVGUFF5eERRVU5ZTEVORGJrWkJMRk5CUVZOclFpeEhRVUZ2UWtNc1JVRkJVVU1zUlVGQlVVTXNSVUZCU3l4RFFVTTVReXhIUVVGSlJDeEZRVUZSTEVOQlEwcERMRWxCUVZFc1QwRkRVa0VzUlVGQlRVUXNSVUZCVHl4UlFVTnFRaXhSUVVGVFJTeEZRVUZKUkN4RlFVRk5MRVZCUVVkRExFZEJRVXNzUlVGQlJ5eEZRVUZGUVN4RlFVRkhMRU5CUXk5Q0xFbEJRVWxETEVWQlFVdElMRVZCUVU5RkxFTkJRVU1zUlVGRGFrSXNUMEZCVVVNc1JVRkJSeXhMUVVGTkxFTkJRMklzU1VGQlN5eFJRVU5NTEVsQlFVc3NWVUZEVEN4SlFVRkxMRlZCUTBSS0xFZEJRVlZKTEVWQlFVY3NUMEZCVHl4UFFVTndRaXhSUVVOU0xFTkJTVUVzU1VGRVFVRXNSVUZCUzBnc1JVRkJUeXhGUVVGRlJTeERRVUZETEVkQlExSkRMRWRCUVVFc1dVRkJRVUVzUlVGQlNTeFJRVUZUTEZOQlEyaENTaXhIUVVGVlNTeEZRVUZITEU5QlFVOHNUMEZEY0VKQkxFVkJRVXRJTEVWQlFVOHNSVUZCUlVVc1EwRkJReXhGUVVWdVFpeExRVU5LTEVOQlEwb3NRMEZEUVN4UFFVRlBTQ3hEUVVOWUxFTkRha0pCTEVsQlFVMUxMRWRCUVVzc1EwRkJSU3haUVVGQlF5eEhRVUZoTEdsQ1FVRkJReXhGUVVGcFFpeEZRVU16UXl4VFFVRlRSQ3hIUVVGWlJTeEZRVUZMUXl4RlFVRlBReXhGUVVGUFF5eEZRVUZUTEVOQlF6ZERMRWxCUVUxRExFVkJRVkZLTEVWQlFVa3NUVUZEV2l4RFFVRkZMRmxCUVVGTExFVkJRV0VzVVVGQlFVTXNSVUZCVXl4UFFVRkJReXhGUVVGUkxFbEJRVUZETEVOQlFVa3NSVUZCU1U0c1JVRkRNVU5QTEVWQlEwRkRMRVZCUVdFc1IwRkRha0lzVDBGQlVWUXNSVUZCVFN4TFFVRk5MRU5CUTJoQ0xFbEJRVXNzVVVGRFJGRXNSVUZCVDBVc1IwRkJZVmdzUlVGQlMwTXNSVUZCVDBVc1EwRkJUeXhIUVVOdVEwa3NSMEZCVlVNc1NVRkRWa3dzUlVGQlVVWXNSVUZCVHl4alFVRmxMQ3REUVVFclF5eEZRVU5xUml4TlFVTktMRWxCUVVzc1UwRkRUQ3hKUVVGTExIVkNRVU5NTEVsQlFVc3NkVUpCUTB3c1NVRkJTeXhsUVVORVVTeEZRVUZQUnl4SFFVRmpXaXhGUVVGTFF5eEZRVUZQVHl4RlFVRkxUQ3hEUVVGUExFVkJRM3BEU1N4SlFVTkJSU3hGUVVGTExFOUJRVk5HTEVWQlFVOHNUMEZCVHl4VlFVRlZMRU5CUVVNc1IwRkRNME1zVFVGRFNpeEpRVUZMTEZsQlEwd3NTVUZCU3l4WlFVTk1MRWxCUVVzc2EwSkJRMFJGTEVWQlFVOUpMRWRCUVd0Q2FFSXNSMEZCU1Vjc1JVRkJTME1zUlVGQlQwTXNSVUZCVDBNc1EwRkJUeXhGUVVOdVJFa3NTVUZEUVVVc1JVRkJTeXhQUVVGVFJpeEZRVUZQTEU5QlFVOHNWVUZCVlN4RFFVRkRMRWRCUXpORExFMUJRMG9zVVVGQlV5eERRVU5NTEVsQlFVMVBMRVZCUVZWaUxFVkJRVTBzVDBGQlV5eFJRVU42UWtFc1JVRkJUU3hSUVVOT0xEUkNRVUUwUWtFc1JVRkJUU3hKUVVGSkxFbEJRelZEUlN4RlFVRlJSaXhGUVVGUExHMUNRVUZ2UW1Fc1EwRkJUeXhGUVVNeFEwd3NSVUZCVDFZc1IwRkJhVUpETEVWQlFVdERMRVZCUVUwc1QwRkJVU3hQUVVGWExFdEJRVTFETEVWQlFVOURMRU5CUVU4c1JVRkRNVVZQTEVWQlFXRXNSVUZEYWtJc1EwRkRTaXhEUVVOQkxFOUJRVWxJTEVkQlFWVkZMRVZCUVVzc1UwRkJWeXhKUVVNeFFrNHNSVUZCVVVrc1JVRkJVU3haUVVGaExHdERRVUZyUXl4RlFVTXZSRWdzUjBGRFFVb3NSVUZCU1N4UlFVRlJMR0ZCUTFnc1EwRkJRMlVzUlVGQlUwNHNRMEZCU1N4SFFVTllMRTlCUVU5QkxFVkJRVXNzVDBGQlZTeFZRVU55UWtFc1JVRkJTeXhMUVVGUFFTeEZRVUZMTEUxQlFWRXNNRUpCUlRsQ1RpeEZRVUZSU3l4SFFVRkJMRXRCUVVGQkxFVkJRVTlRTEVWQlFVOHNhVUpCUkZZc01rTkJReXRDTEVWQlJUTkRTU3hKUVVOQlNTeEZRVUZMTEZsQlFXTXNTVUZEYmtKSUxFbEJRMGxNTEVWQlFVMHNUMEZCVXl4VlFVRlpRU3hGUVVGTkxGTkJRVmNzUjBGRE5VTlJMRVZCUVVzc1VVRkJWVWdzUlVGRlprY3NSVUZCU3l4alFVRm5Ra2dzUjBGSGVrSk9MRVZCUVVrc1VVRkJVU3hyUWtGQmIwSlZMRWxCUTJoRFJDeEZRVUZMTEZOQlFWZFNMRWRCUTJKUkxFTkJRMWdzUTBGRFFTeFRRVUZUVml4SFFVRnBRa01zUlVGQlMyZENMRVZCUVZGRExFVkJRVkZETEVWQlFVc3NRMEZCUlN4WlFVRkJZaXhGUVVGaExGRkJRVUZETEVWQlFWTXNUMEZCUVVNc1JVRkJVU3hKUVVGQlF5eEZRVUZMTEVsQlFVRlhMRU5CUVVrc1JVRkJSMmhDTEVWQlFWTXNRMEZEY2tjc1NVRkJUVVlzUlVGQlVTeERRVU5XTEV0QlFVMHNVMEZEVGl4UFFVRlJiVUlzUjBGQmIwSktMRVZCUVZGRExFVkJRVkZETEVOQlFVY3NSVUZETDBNc1QwRkJVU3hIUVVOU0xFOUJRVkVzUlVGRFdpeEZRVU5OVkN4RlFVRlBSeXhIUVVGaldpeEZRVUZMUXl4RlFVRlBUeXhGUVVGTFRDeERRVUZQTEVWQlEyNUVMRTlCUVVsSkxFbEJRMEZGTEVWQlFVc3NUMEZCVTBZc1JVRkJUeXhQUVVGUExGVkJRVlVzUTBGQlF5eEZRVU51UTBVc1JVRkJTeXhUUVVGWExFbEJRMmhDVGl4RlFVRlJTU3hGUVVGUkxGbEJRV0VzYTBOQlFXdERMRWRCUlc1RlJpeEpRVU5CU1N4RlFVRkxMRmxCUVdNc1NVRkRia0pJTEVsQlEwRkhMRVZCUVVzc1VVRkJWVWdzUlVGRFprY3NSVUZCU3l4TlFVRk5MRU5CUVVNc1JVRkJTVlVzUjBGRllsWXNRMEZEV0N4RFFVTkJMRk5CUVZORkxFZEJRV0VzUTBGQlJTeFJRVUZCVlN4RFFVRlJMRVZCUVVjc1EwRkJSU3hQUVVGQlRDeEZRVUZSTEU5QlFVRk5MRVZCUVZFc1NVRkJRVWdzUTBGQlNTeEZRVUZIYUVJc1JVRkJVeXhEUVVOcVJTeEpRVUZOYjBJc1JVRkJVU3hKUVVGSlF5eEhRVUZOUml4RlFVRlBMRlZCUVZVc1EwRkJReXhEUVVGRExFVkJRM1pEUXl4RlFVRk5MRk5CUVZjc1NVRkRha0p3UWl4RlFVRlJZU3hGUVVGUkxGbEJRV0VzYVVOQlFXbERMRVZCUXpsRVR5eEZRVUZOTEU5QlFVOHNVMEZCVXl4SFFVRkhMRWRCUTNwQ2NFSXNSVUZCVVdFc1JVRkJVMDBzUlVGQlR5eFBRVUZUTEVWQlFVY3NXVUZCWVN4cFEwRkJhME1zUlVGQlNTeEZRVU16Uml4SlFVRk5SeXhGUVVGWFZDeEZRVUZUVFN4RlFVRlBMRTlCUXpOQ1NTeEZRVUZMUXl4SFFVRlhVaXhGUVVGTFRTeEZRVUZWU2l4RlFVRlJMRTlCUVZGc1FpeERRVUZQTEVWQlF6VkVMRTlCUVVGdlFpeEZRVUZOTEUxQlFWRXNRMEZCUTFBc1JVRkJVVk1zUlVGQlZVTXNSVUZCUnl4TlFVRk5MRVZCUTNSRFFTeEZRVUZITEZWQlEwaElMRVZCUVUwc1VVRkJWVWNzUlVGQlJ5eFRRVU5vUWtnc1EwRkRXQ3hEUXpsR1FTeFRRVUZUU3l4SFFVRlhReXhGUVVGVFF5eEZRVUZaTEVOQlFVVXNUMEZCUVVNc1JVRkJVU3hOUVVGQlF5eEZRVUZQTEUxQlFVRkRMRVZCUVU4c1NVRkJRVU1zUTBGQlNTeEZRVUZIUXl4RlFVRlRMRU5CUXpkRkxFbEJRVTFETEVWQlFVOHNUMEZCVHl4UFFVRlBMRU5CUVVVc1dVRkJZVTRzUTBGQlZ5eEZRVUZIUkN4RFFVRlBMRVZCUTNwRVVTeEZRVUZOTEVsQlFVbERMRWRCUVZNc1QwRkJWMFlzUTBGQlNTeEZRVU5zUTBjc1JVRkJUU3hEUVVOU0xFMUJRVThzUjBGRFVDeFBRVUZSTEVkQlExSXNWMEZCV1VZc1JVRkJTU3hYUVVOb1FpeFJRVUZUUVN4RlFVRkpMRkZCUTJJc1QwRkJVVUVzUlVGQlNTeE5RVU5vUWl4RlFVTk5SeXhGUVVGUlF5eEhRVUZoVkN4RlFVRlBMRU5CUXpsQ0xGVkJRVmNzV1VGRFdDeExRVUZOUXl4SFFVRkJMRXRCUVVGQkxFVkJRVk5ETEVkQlFVRXNXVUZCUVVFc1JVRkJUU3hIUVVOeVFpeFBRVUZCU0N4RlFVTkJMRkZCUVVGSkxFVkJRMEVzWVVGQll5eEZRVU5rTEdWQlFXZENMRVZCUTNCQ0xFTkJRVU1zUlVGRFIwc3NSVUZCVFN4UlFVTk9TQ3hGUVVGSkxGZEJRVmNzVTBGQlZ5eEhRVU4wUWtvc1NVRkRRMEVzUlVGQlRTeFBRVUZUTEdGQlFXVkJMRVZCUVUwc1QwRkJVeXhqUVVNNVF5eERRVUZEVHl4RlFVRk5MRmxCUTFCTUxFVkJRVkZMTEVWQlFVMHNTVUZCU3l4bFFVRm5RaXgxUlVGQmRVVXNSMEZIYkVoSUxFVkJRVWtzVTBGQlYwb3NSVUZEVkZNc1IwRkJXVWdzUlVGQlMwNHNSVUZCVDA4c1JVRkJUMHdzUTBGQlR5eEZRVU4wUTFFc1IwRkJhVUpLTEVWQlFVdERMRVZCUVUwc1NVRkJTMUlzUlVGQlR5eExRVUZOVVN4RlFVRlBUQ3hEUVVGUExFVkJRMnhGTEVsQlFVMVRMRVZCUVdGUUxFVkJRVWtzVTBGQlV5eE5RVUZOTEVOQlFVTXNSVUZEYWtOUkxFVkJRVXRETEVkQlFWZGFMRVZCUVV0VkxFVkJRVmtzUjBGQlQxUXNRMEZCVHl4RlFVTnlSQ3hQUVVGSlZTeEZRVUZITEZWQlEwaFNMRVZCUVVrc1VVRkJWVkVzUlVGQlJ5eFRRVU55UWxJc1JVRkJTU3hOUVVGUkxFTkJRVU5PTEVWQlFWRmhMRVZCUVZsRExFVkJRVWNzVFVGQlRTeEZRVU51UTFJc1EwRkRXQ3hEUTJwRFFTeFRRVUZUVlN4SFFVRlpReXhGUVVGTExFTkJRM1JDTEVkQlFVa3NUMEZCVDBFc1IwRkJVU3hUUVVObUxFMUJRVThzUTBGQlEwRXNSVUZCUzBFc1JVRkJUU3hEUVVGRExFVkJRM2hDTEVkQlFVa3NUVUZCVFN4UlFVRlJRU3hEUVVGSExFVkJRMnBDTEU5QlFVOUJMRVZCUVVrc1UwRkJWeXhGUVVGSlFTeEZRVUZOTEVOQlFVTkJMRVZCUVVrc1EwRkJReXhGUVVGSFFTeEZRVUZKTEVOQlFVTXNRMEZCUXl4RlFVTnVSQ3hIUVVGTkxFTkJRVVVzVDBGQlFVTXNSVUZCVVN4UFFVRkJReXhEUVVGUExFVkJRVWxHTEVWQlF6TkNMRTFCUVU4c1EwRkJRME1zUlVGQlVVRXNSMEZCVlN4UFFVRlBReXhIUVVGWExGTkJRVmRCTEVWQlFVOHNUMEZCVXl4RlFVRkZMRU5CUXpkRkxFTkJRMEVzVTBGQlUwTXNSMEZCWVVNc1JVRkJVeXhEUVdZdlFpeEpRVUZCUXl4RlFXZENTU3hKUVVGSlF5eEZRVUZWTEVkQlExWkRMRVZCUVZrc1IwRkRXa01zUlVGQmFVSXNSMEZEY2tJc1VVRkJVeXhGUVVGSkxFVkJRVWNzUlVGQlNVb3NSVUZCVVN4UFFVRlJMRVZCUVVVc1JVRkJSeXhEUVVOeVF5eEpRVUZOUml4RlFVRlRSU3hGUVVGUkxFTkJRVU1zUlVGRGVFSXNUMEZCVVVZc1JVRkJUeXhEUVVGRExFVkJRVWNzUTBGRFppeEpRVUZMTEVsQlEwUkpMRWxCUTB0QkxFbEJRVmtzUjBGQlN5eEhRVUZMUlN4RlFVRnBRanRCUVVGQk8wRkJRVUVzUlVGQlV6dEJRVUZCTEVsQlF6VkRUaXhGUVVGUExGVkJRVlVzUTBGQlF5eEhRVUZMTEV0QlEyaERTeXhGUVVGWkxFZEJRMXBETEVWQlFXbENMRWRCUTJwQ0xFMUJRMG9zU1VGQlN5eE5RVU5IU0N4RlFVRkJSQ3hGUVVGUkxFVkJRVWtzUTBGQlF5eEpRVUZpTEZsQlFVRkRMRVZCUVdsQ0xFMUJRVThzVFVGRGVFSXNSMEZCU3l4SFFVTlVSU3hGUVVGWkxFZEJRMW9zVFVGRFNpeFJRVVZUUVN4SlFVTkVReXhGUVVGcFFpeEpRVU55UWtRc1JVRkJXU3hGUVVOd1FpeERRVU5LTEVOQlEwRXNUVUZCVHl4RFFVRkZMRkZCUVVGRUxFVkJRVk1zWlVGQlFVVXNRMEZCWlN4RFFVTnlReXhEUVZsQkxFbEJRVTFETEVkQlFVNHNTMEZCWlN4RFFVTllMRmxCUVZsRExFVkJRVlVzUTBGQlF5eEZRVUZITEVOQlEzUkNMRXRCUVVzc1NVRkJUU3hMUVVOWUxFdEJRVXNzWVVGQlpTeEhRVU53UWl4TFFVRkxMRkZCUVZVc1EwRkJReXhGUVVOb1FpeExRVUZMTEU5QlFWTXNRMEZCUXl4RlFVTm1MRXRCUVVzc1UwRkJWeXhEUVVGRExFVkJRMnBDTEV0QlFVc3NVVUZCVlN4RFFVRkRVaXhGUVVGUlV5eEZRVUZOUXl4RlFVRlRReXhKUVVGWkxFTkJReTlETEVsQlFVMURMRVZCUVUxbUxFZEJRVmxITEVOQlFVMHNSVUZETVVKWExFVkJRMEVzUzBGQlN5eFRRVUZUTEV0QlFVc3NTVUZCU1VVc1IwRkJXVVFzUlVGQlMwZ3NSVUZCVFVNc1EwRkJUeXhEUVVGRExFVkJSWFJFTEV0QlFVc3NUMEZCVHl4TFFVRkxMRWxCUVVsSkxFZEJRV1ZHTEVWQlFVdElMRVZCUVUxRExFTkJRVThzUTBGQlF5eERRVU12UkN4RlFVVkJMRXRCUVVzc1YwRkJZU3hKUVVGSlN5eEhRVUZYTEVOQlFVVXNVVUZCVTFBc1JVRkJVU3hUUVVGWExFdEJRVTBzUTBGQlF5eEZRVU4wUlN4TFFVRkxMRkZCUVZWQkxFTkJRMjVDTEVOQlEwRXNVMEZCVTFFc1JVRkJTME1zUlVGQlZTeERRVU53UWl4SFFVRk5MRU5CUVVVc1VVRkJRV0lzUlVGQlV5eGxRVUZCUlN4RFFVRmxMRVZCUVVsTUxFZEJRV0VzUzBGQlN5eFBRVUZQTEVWQlJUZEVMRWRCUVVsSExFVkJRVk1zUTBGRFZDeEpRVUZOWXl4RlFVRkxSaXhGUVVGSkxGTkJRMllzUjBGQlNVTXNSVUZEUVVRc1JVRkJTU3hSUVVGVlFTeEZRVUZKTEZGQlFWVXNSMEZCUjBFc1JVRkJTU3hQUVVGUE8wRkJRVUVzUlVGQlMxb3NRMEZCVHl4SFFVRkxRU3hWUVVWMFJFVXNSMEZCYTBKVkxFVkJRVWtzVjBGQlZ5eFZRVUZaTEVOQlFVTkZMRVZCUTI1RVJpeEZRVUZKTEdOQlFXZENXaXhWUVVWbVpTeEZRVUZoUkN4RFFVRkZMRWRCUVVzc1EwRkJRMEVzUlVGQlJ5eE5RVUZSUVN4RlFVRkhMRTFCUVUwc1QwRkJVeXhGUVVGSExFTkJRekZFTEVsQlFVbEZMRVZCUVV0R0xFVkJRVWNzVFVGQlRTeERRVUZETEVWQlEyWkhMRVZCUVU5RUxFTkJRVVVzU1VGRFZFRXNSVUZCUzBFc1JVRkJSeXhMUVVOYUxFbEJRVTFGTEVWQlFVdEdMRVZCUVVjc1kwRkRaRUVzUlVGQlJ5eGpRVUZuUWtVc1JVRkJTeXhIUVVGSGJFSXNRMEZCVHp0QlFVRkJMRVZCUVV0clFpeERRVUZGTEVkQlFVdHNRaXhEUVVOc1JDeExRVU5MTEVOQlEwUXNTVUZCVFd0Q0xFVkJRVXRLTEVWQlFVY3NZMEZEWkVFc1JVRkJSeXhqUVVGblFra3NSVUZCU3l4SFFVRkhiRUlzUTBGQlR6dEJRVUZCTEVWQlFVdHJRaXhEUVVGRkxFZEJRVXRzUWl4RFFVTnNSQ3hEUVVOS0xFTkJRMGxoTEVkQlEwRXNUVUZCVFN4VlFVRlZMRXRCUVVzc1RVRkJUVVFzUlVGQlNTeFBRVUZSTEV0QlFVc3NUVUZCVFN4RlFVTnNSQ3hOUVVGTkxGVkJRVlVzUzBGQlN5eE5RVUZOUVN4RlFVRkpMRk5CUVZVc1MwRkJTeXhSUVVGUkxFbEJSM1JFUVN4RlFVRkpMRTlCUVZNc1MwRkJTeXhQUVVOc1FrRXNSVUZCU1N4VFFVRlhMRXRCUVVzc1ZVRkZlRUlzUzBGQlN5eFJRVUZWTEVOQlFVTXNSVUZEYUVJc1MwRkJTeXhQUVVGVExFTkJRVU1zUlVGRFppeExRVUZMTEZOQlFWY3NRMEZCUXl4RFFVTnlRaXhEUVUxQkxGbEJRV0VzUTBGRFZDeE5RVUZQTEVOQlEwZ3NVVUZCVTJZc1IwRkJZU3hMUVVGTExFOUJRVThzUlVGQlJTeFJRVU53UXl4WFFVRlpMRXRCUVVzc1YwRkRha0lzVDBGQlVTeExRVUZMTEU5QlEySXNVMEZCVlN4TFFVRkxMRkZCUTI1Q0xFTkJRMG9zUTBGUFFTeERRVUZETEZGQlFWRnpRaXhGUVVGUlF5eEZRVUZYTEVkQlFVOURMRVZCUVZrc1IwRkJTU3hEUVVNdlF5eFJRVUZYUXl4TFFVRlRTQ3hGUVVOb1FpeE5RVUZCU1N4RlFVRlBMRXRCUVVzc1MwRkJTMFFzUTBGQlN5eEhRVU14UWl4TlFVRkJReXhGUVVGUExFdEJRVXNzU1VGQlNVZ3NSVUZCVlVNc1EwRkJVeXhGUVVOMlF5eERRVVZCTEVOQlFVTXNTMEZCUzBNc1JVRkJUeXhEUVVOVUxFOUJRVkZCTEVWQlFVMHNTMEZCVFN4RFFVTm9RaXhKUVVGTExGbEJRMFFzUzBGQlN5eFhRVUZYTEVsQlFVbEJMRVZCUVUwc1QwRkJVU3hEUVVGRE0wSXNSVUZCVVZjc1JVRkJVME1zU1VGQldTeERRVU0xUkN4SlFVRk5ReXhGUVVGTlppeEhRVUZaTmtJc1EwRkJTeXhGUVVNM1FtUXNSVUZCU1N4RFFVRkRMRWRCUVV0aUxFVkJRMVlzUzBGQlN5eFJRVUZSWVN4RlFVRkxMR2RDUVVGcFFrWXNSVUZCVTBNc1EwRkJUeXhEUVVOMlJDeERRVUZETEVWQlEwUXNTMEZCU3l4UlFVRlJMRXRCUVV0bExFVkJRVTBzVFVGQlRTeEZRVU01UWl4TFFVRkxMR0ZCUVdVc1IwRkRjRUlzVFVGRFNpeEpRVUZMTEZkQlFWa3NRMEZEWWl4SlFVRk5WaXhGUVVGTldTeEhRVUZYTEV0QlFVc3NVVUZCVXl4TFFVRkxMRmRCUVZsR0xFVkJRVThzUzBGQlN5eFBRVUZQTEVWQlEzSkZMRXRCUVVzc1kwRkJaMElzUTBGQlExWXNSVUZCU1N4WFFVRlhMRlZCUTNKRExFdEJRVXNzVVVGQlVWVXNSVUZCVHl4bFFVRm5RaXhwUkVGQmFVUXNSVUZEZWtZc1MwRkJTeXhUUVVGVFZpeEZRVUZMTEVWQlFVc3NSVUZEY0VJc1MwRkJTeXhOUVVOTUxFMUJRVTBzUzBGQlN5eExRVU5tTEV0QlFVc3NTVUZCVFVFc1JVRkRXQ3hMUVVGTExHRkJRV1VzUjBGRGNFSXNTMEZEU2l4RFFVTkJMRWxCUVVzc2EwSkJRMHdzU1VGQlN5eFJRVU5FTEUxQlEwb3NTVUZCU3l4VlFVTk1MRWxCUVVzc1ZVRkRSQ3hMUVVGTExGRkJRVkVzUzBGQlMxVXNSVUZCVFN4TlFVRk5MRVZCUXpsQ0xFMUJRMG9zU1VGQlN5eFJRVUZUTEVOQlExWXNTVUZCVFVjc1JVRkJUVWdzUlVGQlRTeFBRVU5hTEVkQlFVZEJMRVZCUVUwc1QwRkJUeXhMUVVGTExFdEJRVXNzVlVGQlZVRXNSVUZCVFN4TlFVRk5MRU5CUVVNc1IwRkRha1JCTEVWQlFVMHNVVUZEVGtrc1JVRkJVU3hKUVVGSmFFSXNSMEZCWldwQ0xFZEJRVmsyUWl4RFFVRkxMRVZCUVVjc2JVSkJRVzlDUnl4RFFVRkhMRVZCUTNoRkxFdEJRVXNzWTBGQlowSXNRMEZCUXl4TFFVRkxMRWxCUXpOQ0xFdEJRVXNzVDBGQlR5eExRVUZMUXl4RFFVRkxMRVZCUlhSQ0xFdEJRVXNzU1VGQlNTeFBRVUZQTEV0QlFVdEJMRU5CUVVzc1JVRkRPVUlzUzBGRFNpeERRVU5CTEVsQlFVc3NWVUZCVnl4RFFVTmFMRWRCUVVrc1EwRkJReXhMUVVGTExFbEJRVXNzUTBGRFdDeEpRVUZOUkN4RlFVRk5MR2RFUVVOYUxFdEJRVXNzVDBGQlR5eExRVUZMTEVsQlFVbG1MRWRCUVdWcVFpeEhRVUZaTmtJc1EwRkJTeXhGUVVGSExHMUNRVUZ2UWtjc1EwRkJSeXhEUVVGRExFVkJRMmhHTEV0QlEwb3NRMEZEUVN4TFFVRkxMRWxCUVVrc1YwRkJWeXhQUVVGVExFZEJRemRDTEVsQlFVMUZMRVZCUVUxRExFZEJRVmRPTEVWQlFVMHNTVUZCUzBFc1JVRkJUU3hQUVVGVFFTeEZRVUZOTEU5QlFVOHNUMEZCVVN4TFFVRkxMRWxCUVVrc1VVRkJVU3hQUVVGUkxFdEJRVXNzVDBGQlR5eEZRVVV6Unl4SFFVUkJMRXRCUVVzc1UwRkJVeXhMUVVGTExFbEJRVXNzUlVGQlNTeEZRVU40UWtzc1JVRkJTU3hSUVVGVExFTkJRMklzU1VGQlRXSXNSVUZCU3l4TFFVRkxMRWxCUVVrc1VVRkRjRUlzUzBGQlN5eEpRVUZKTEZGQlFWVkJMRVZCUVVzc1IwRkJSMEVzUTBGQlJUdEJRVUZCTEVWQlFVdGhMRVZCUVVrc1QwRkJUeXhIUVVGTFFTeEZRVUZKTEU5QlF6RkVMRU5CUTBFc1MwRkJTeXhKUVVGSkxFMUJRVTBzUTBGQlF5eEZRVUZKUVN4RlFVRkpMRTlCUTNoQ0xFdEJRMG9zUTBGRFFTeFJRVU5KTEV0QlFVc3NUMEZCVHl4TFFVRkxMRWxCUVVscVFpeEhRVUZsYWtJc1IwRkJXVFpDTEVOQlFVc3NSVUZCUnl4dFFrRkJiMElzY1VKQlFYRkNRU3hGUVVGTkxFbEJRVWtzUlVGQlJTeERRVUZETEVOQlEzUklMRU5CUTBvc1EwRlBRU3hEUVVGRExFbEJRVWxHTEVWQlFWY3NSMEZCVDBNc1JVRkJXU3hIUVVGSkxFTkJRMjVETEVkQlFVa3NTMEZCU3l4SlFVTk1MRXRCUVVzc1UwRkJVeXhMUVVGTExFbEJRVXNzUlVGQlNTeEZRVU0xUWl4TlFVRk5MRXRCUVVzc1NVRkRXQ3hMUVVGTExFbEJRVTBzWVVGRlRrUXNSVUZCVlN4RFFVTm1MRWxCUVUxVExFVkJRVThzVDBGQlR5eFBRVUZQTEVOQlFVVXNXVUZCWVN4TFFVRkxMRlZCUVZjc1JVRkJSeXhMUVVGTExFOUJRVThzUlVGRGJrVnFRaXhGUVVGTkxFbEJRVWxyUWl4SFFVRlRMRTlCUVZkRUxFTkJRVWtzUlVGRGNFTXNTMEZCU3l4alFVTk1MRXRCUVVzc1VVRkJVVklzUlVGQlZ5eGxRVUZuUWl4MVEwRkJkVU1zUlVGRGJrWlVMRVZCUVVrc1RVRkJVU3hEUVVGRExFVkJRVWRUTEVWQlFWZEJMRU5CUVZNc1JVRkRjRU1zUzBGQlN5eFRRVUZUVkN4RlFVRkxMRVZCUVVzc1JVRkRlRUlzVFVGQlRVRXNRMEZEVml4RFFVTktMRU5CUTBvc1JVTjBUa0VzU1VGQlRXMUNMRWRCUVZFc1QwRkJUeXhoUVVGaExFVkJRelZDUXl4SFFVRlBMRTlCUVU4c1pVRkJaU3hGUVVNM1FrTXNSMEZCVXl4UFFVRlBMR0ZCUVdFc1JVRTJRbTVETEZOQlFWTkRMRWRCUVUxRExFVkJRVXRETEVWQlFWTXNRMEZEY2tJc1UwRkJWVVFzUjBGQlQwRXNSVUZCU1N4UFFVRlRMR0ZCUXpsQ1FTeEZRVUZOTEVOQlFVVXNUVUZCVDBFc1JVRkJTU3hOUVVGUExFMUJRVTlCTEVWQlFVa3NTMEZCVFN4SFFVTXZRMFVzUjBGQlR5eFBRVUZQTEU5QlFVOHNRMEZCUXl4RFFVRkRMRVZCUVVkR0xFVkJRVXRETEVOQlFVOHNRMEZETVVNc1EwRkxRVVlzUjBGQlRTeE5RVUZSU0N4SFFVVmtSeXhIUVVGTkxFdEJRVTlHTEVkQlJXSkZMRWRCUVUwc1QwRkJVMFFzUjBGRlprTXNSMEZCVFN4WFFVRmhMRU5CUVVORExFVkJRVXRITEVsQlFWTXNRMEZET1VJc1NVRkJTVU1zUlVGQlQwb3NSVUZEV0N4UFFVRlhMRU5CUVVOTExFVkJRVTlETEVOQlFVc3NTVUZCUzBnc1JVRkJUU3hEUVVNdlFpeEpRVUZOU1N4RlFVRk5TQ3hIUVVGQkxGbEJRVUZCTEVWQlFVOURMRWRCUTI1Q0xFZEJRVWxGTEVkQlFVOHNWVUZCVjBFc1JVRkRiRUpJTEVWQlFVOUhMRVZCUVVrc1RVRkJUVVFzUTBGQlN5eE5RVWQwUWl4UFFVTlNMRU5CUTBFc1QwRkJUMFlzUTBGRFdDeEZRVTFCVEN4SFFVRk5MR2xDUVVGdFFpeERRVUZEUXl4RlFVRkxSeXhKUVVGVExFTkJRM0JETEVsQlFVMUxMRVZCUVZOVUxFZEJRVTBzVjBGQlYwTXNSVUZCUzBjc1JVRkJTeXhOUVVGTkxFVkJRVWNzUlVGQlJTeERRVUZETEVWQlEyaEVSU3hGUVVGUlJpeEZRVUZMUVN4RlFVRkxMRTlCUVZNc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGREwwSk5MRVZCUVU5RUxFZEJRVUVzV1VGQlFVRXNSVUZCVTBnc1IwRkRkRUlzUjBGQlNVa3NSMEZCVVN4VlFVRlhRU3hGUVVOdVFpeFBRVUZQUVN4RlFVTllMRTFCUVUwc1NVRkJTU3hOUVVGTkxEWkNRVUUyUWl4RFFVTnFSQ3hGUVVOQkxGTkJRVk5RTEVkQlFVOURMRVZCUVUxRExFVkJRVTFJTEVWQlFWTXNRMEZEYWtNc1NVRkJTVk1zUlVGQlQxUXNSVUZCVVVjc1JVRkJUVVFzUTBGQlNTeEZRVU0zUWl4SFFVRkpMRTlCUVU5UExFZEJRVk1zVTBGRGFFSXNUMEZCVDBFc1JVRkRXQ3hSUVVGWFRDeEpRVUZUTEVOQlFVTXNUVUZCVHl4UFFVRlBMRVZCUVVjc1EwRkRiRU1zU1VGQlRVMHNSVUZCVVZBc1JVRkJTME1zUTBGQlN5eEZRVU40UWl4SFFVRkpUU3hIUVVGVExGVkJRVmRCTEVWQlFVOHNRMEZETTBJc1VVRkJVME1zUlVGQlNTeEZRVUZIUVN4RlFVRkpSQ3hGUVVGTkxFMUJRVTBzVDBGQlVTeEZRVUZGUXl4RlFVRkhMRU5CUTNwRExFbEJRVTFETEVWQlFVdFlMRWRCUVU4c1QwRkJUeXhQUVVGUFF5eEZRVUZMTEU5QlFVOHNRMEZCUXl4RFFVRkRSU3hGUVVGUFR5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVkRUxFVkJRVTBzVFVGQlRVTXNRMEZCUXl4RlFVRkhXQ3hEUVVGUExFVkJRMjVHTEVkQlFVa3NUMEZCVDFrc1IwRkJUeXhUUVVOa1JDeEZRVUZKUXl4RlFVRkxMRTFCUTFJc1NVRkJTVUVzU1VGQlQycENMRWRCUTFvc1QwRkJUMEVzUjBGRFJtbENMRWxCUVU5bUxFdEJRMXBoTEVWQlFVMHNUVUZCVFN4UFFVRlBReXhGUVVGSExFTkJRVU1zUlVGRGRrSkJMRWRCUVVzc1IwRkZZaXhEUVVOSkxFOUJRVTlHTEVkQlFWTXNXVUZCWTB3c1NVRkJWU3hSUVVONFEwc3NSVUZCVDBFc1JVRkJTMDRzUlVGQlRVUXNRMEZCU1N4RlFVTTVRaXhEUVVOS0xFTkJRMEVzVDBGQlR5eFBRVUZQVHl4SFFVRlRMRmRCUVdGQkxFVkJRVXRPTEVWQlFVMUVMRU5CUVVrc1JVRkJTVThzUTBGRE0wUXNRME42UmtFc1NVRkJUVWtzUjBGQlRTeFRRVVZPUXl4SFFVRlhMRWxCUlZoRExFZEJRVmNzU1VGRldFTXNSMEZCVXl4SlFUQkNaaXhUUVVGVFF5eEhRVUZWUXl4RlFVRlJMRU5CUTNaQ0xFOUJRVkZCTEVWQlFWRXNRMEZEV2l4TFFVRkxReXhIUVVORUxFMUJRVThzYTBKQlExZ3NTMEZCUzBNc1IwRkRSQ3hOUVVGUExGZEJRMWdzUzBGQlMwTXNSMEZEUkN4TlFVRlBMR2xDUVVOWUxFdEJRVXRETEVkQlEwUXNUVUZCVHl4VFFVTllMRWxCUVVzc1RVRkRSQ3hOUVVGUExGbEJRMWdzU1VGQlN5eE5RVU5FTEUxQlFVOHNWVUZEV0N4SlFVRkxMRWRCUTB3c1NVRkJTenRCUVVGQkxFVkJRMHdzU1VGQlN6dEJRVUZCTEVWQlEwUXNUVUZCVHl4VlFVTllMRWxCUVVzc1NVRkRSQ3hOUVVGUExHVkJRMWdzU1VGQlN5eEpRVU5FTEUxQlFVOHNiVUpCUTFnc1NVRkJTeXhKUVVORUxFMUJRVThzWjBKQlExZ3NTVUZCU3l4SlFVTkVMRTFCUVU4c2FVSkJRMWdzU1VGQlN5eEpRVU5FTEUxQlFVOHNaVUZEV0N4SlFVRkxMRWxCUTBRc1RVRkJUeXhwUWtGRFdDeEpRVUZMTEVsQlEwUXNUVUZCVHl4bFFVTllMRWxCUVVzc1NVRkRSQ3hOUVVGUExFOUJRMllzUTBGRFFTeFBRVUZSU2l4RlFVRlBMRU5CUVVNc1JVRkJSeXhEUVVObUxFbEJRVXNzU1VGRFRDeEpRVUZMTEVsQlEwUXNUVUZCVHl4UlFVTllMRWxCUVVzc1NVRkRSQ3hOUVVGUExGVkJRMWdzU1VGQlN5eEpRVU5FTEUxQlFVOHNhVUpCUTFnc1NVRkJTeXhKUVVORUxFMUJRVThzVVVGRFdDeEpRVUZMTEVsQlEwUXNUVUZCVHl4VFFVTllMRWxCUVVzc1NVRkRSQ3hOUVVGUExFMUJRMWdzU1VGQlN5eEpRVU5FTEUxQlFVOHNkVUpCUTFnc1NVRkJTeXhKUVVORUxFMUJRVThzZFVKQlExZ3NTVUZCU3l4SlFVTk1MRWxCUVVzc1NVRkRSQ3hOUVVGUExIRkNRVU5tTEVOQlEwRXNUMEZCVHl4SlFVTllMRU5ETVVKQkxGTkJRVk5MTEVkQlFWRkRMRVZCUVVrc1EwRkRha0lzVDBGQlVVRXNSVUZCU1N4RFFVTlNMRXRCUVVzc1QwRkRUQ3hKUVVGTExFbEJRMHdzU1VGQlN6dEJRVUZCTEVWQlEwd3NTVUZCU3l4TFFVTk1MRWxCUVVzc1NVRkRSQ3hOUVVGUExFZEJRMWdzVVVGRFNTeE5RVUZQTEVWQlEyWXNRMEZEU2l4RFFVTkJMRWxCUVUxRExFZEJRVmtzU1VGQlNTeEpRVUZKTEhkQ1FVRjNRaXhGUVVNMVEwTXNSMEZCVnl4SlFVRkpMRWxCUVVrc2JVWkJRVzFHTEVWQlEzUkhReXhIUVVGeFFpeEpRVUZKTEVsQlFVa3NUMEZCVHl4RlFVTndRME1zUjBGQmNVSXNTVUZCU1N4SlFVRkpPMEZCUVVFc1NVRkJZeXhGUVVNelEwTXNSMEZCYlVKTUxFZEJRVThzUTBGQlEwRXNSMEZCVFVrc1IwRkJiVUlzU1VGQlNVb3NRMEZCUlN4RlFXZENNVVJOTEVkQlFVNHNTMEZCV1N4RFFVTlNMR0ZCUVdNc1EwRkxWaXhMUVVGTExFMUJRVkVzUjBGTllpeExRVUZMTEd0Q1FVRnZRaXhIUVUxNlFpeExRVUZMTEdkQ1FVRnJRaXhIUVVWMlFpeExRVUZMTEU5QlFWTXNSMEZMWkN4TFFVRkxMRkZCUVZVc1IwRkZaaXhMUVVGTExGVkJRVmtzUlVGTGFrSXNTMEZCU3l4WFFVRmhMRVZCUld4Q0xFdEJRVXNzV1VGQll5eEZRVVZ1UWl4TFFVRkxMRmRCUVdFc1MwRkZiRUlzUzBGQlN5eExRVUZQTEV0QlJWb3NTMEZCU3l4SlFVRk5MRU5CUTJZc1EwRlBRU3hEUVVGRExFbEJRVWxETEVWQlFWRkRMRVZCUVdFc1IwRkJUeXhEUVhKS2NrTXNTVUZCUVVNc1JVRnpTbEVzUjBGQlNVWXNSVUZCVVN4RFFVTlNMRWRCUVVrc1QwRkJUMEVzUjBGQlZ5eFRRVU5zUWl4TlFVRk5MRlZCUVZVc2QwSkJRWGRDTEVWQlF6VkRMRXRCUVVzc1QwRkJVeXhMUVVGTExFOUJRVk1zUzBGQlN5eFBRVUZUUVN4RlFVRlRRU3hGUVVOdVJDeExRVUZMTEZkQlFXRXNTVUZEZEVJc1EwRkRRU3hMUVVGTExFMUJRVkVzUTBGQlEwTXNSVUZEWkN4SlFVRkpSU3hIUVVGUFJDeEZRVUZCTEV0QlFVc3NUMEZCVEN4TFFVRkJRU3hGUVVGaExGTkJRM2hDTEV0QlFVOURMRWxCUVZOR0xFZEJRV01zUzBGQlN5eFRRVUZUTEVOQlFVTXNTVUZEZWtORkxFVkJRVThzVFVGQlFVTXNSVUZCVHl4TFFVRkxMRlZCUVZWRUxFTkJRVWtzUlVGRGVrTXNRMEZEUVN4WFFVRlpMRU5CUTFJc1NVRkJTVVVzUlVGQlNTeExRVUZMTEVsQlExUmFMRVZCUVVzc1MwRkJTeXhQUVVGUFdTeERRVUZETEVWQlEzUkNMRXRCUVU5YUxFbEJRVThzUzBGQlQwRXNTVUZCVHl4TFFVTjRRa0VzUlVGQlN5eExRVUZMTEU5QlFVOHNSVUZCUlZrc1EwRkJReXhGUVVONFFpeE5RVUZKTEVOQlFVTmFMRWRCUVUxQkxFbEJRVThzUzBGQlQwRXNTVUZCVHp0QlFVRkJMRVZCUTNKQ0xFZEJRMUJCTEVsQlFVOHNTMEZEUVN4TFFVRkxMRTlCUVU5WkxFVkJRVWtzUTBGQlF5eEpRVUZOTzBGQlFVRXNSVUZETTBJc1JVRkRXQ3hEUVVOQkxFOUJRVTlETEVWQlFVY3NRMEZEVGl4UFFVRlBMRXRCUVVzc1QwRkJUeXhMUVVGTExFbEJRVTFCTEVOQlFVTXNRMEZEYmtNc1EwRkRRU3hsUVVGbFF5eEZRVUZSTEVOQlEyNUNMRWxCUVVsa0xFVkJRVXNzUzBGQlN5eFBRVUZQWXl4RFFVRk5MRVZCUXpOQ0xFZEJRVWtzUzBGQlN5eFhRVUZoTEVWQlFVY3NRMEZEY2tJc1NVRkJTVU1zUlVGQlV5eEZRVU5pTEV0QlFVOW1MRWxCUVU4c1MwRkRWa0VzUlVGQlN5eExRVUZMTEU5QlFVOHNSVUZCUldVc1JVRkJVMFFzUTBGQlRTeEZRVU4wUXl4SFFVRkpaQ3hKUVVGUExFdEJRVTBzUTBGRFlpeEpRVUZOVlN4RlFVRlBMRXRCUVVzc1QwRkJUMHNzUlVGQlUwUXNSVUZCVXl4RFFVRkRMRVZCUXpWRExFZEJRVWxLTEVsQlFWTTdRVUZCUVN4SFFVRlRMRU5CUVVOQkxFZEJRVkVzUTBGQlF5eExRVUZMTEUxQlEycERMRTlCUVU5SkxFVkJRVk5ETEVWQlFWTXNRMEZEYWtNc1EwRkRRU3hQUVVGUFppeEpRVUZQTzBGQlFVRXNSMEZCVVdVc1IwRkJWU3hMUVVGTExGbEJRV1VzUTBGQlEyWXNSMEZCVFN4RFFVRkRMRXRCUVVzc1RVRkRNMFJqTEVWQlFWTkRMRVZCUTFRc1JVRkRWaXhEUVVOQkxFZEJRVWxtTEVsQlFVOHNTMEZCVDBFc1NVRkJUeXhKUVVGTExFTkJRekZDTEVsQlFVMW5RaXhGUVVGTExFdEJRVXNzVDBGQlR5eFBRVUZQUml4RlFVRlJMRU5CUVVNc1JVRkRka01zU1VGQlMwVXNTVUZCVHl4UFFVRlRRU3hKUVVGUExGRkJRVlZxUWl4SFFVRlJMRXRCUVVzc1QwRkJUMlVzUlVGQlV5eERRVUZETEVOQlFVTXNSVUZEYWtVc1RVRkJUeXhGUVVObUxFTkJRMEVzVDBGQlQwRXNRMEZEV0N4RFFVTkJMRk5CUVZVc1EwRkRUaXhKUVVGSlJ5eEZRVUZOTEV0QlFVc3NWMEZMWml4UFFVcEpMRTlCUVU5QkxFZEJRVkVzVlVGQllVRXNTVUZCVVN4SlFVRk5RU3hGUVVGTkxFdEJRVXNzVDBGRGNrUkJMRVZCUVUwc1MwRkJTeXhQUVVGUExGRkJRVkU3UVVGQlFTeEZRVUZOTEV0QlFVc3NSMEZCUnl4RlFVTjRReXhMUVVGTExGZEJRV0ZCTEVkQlJXeENRU3hKUVVGUkxFZEJRMFFzUzBGQlN5eE5RVUZSTEV0QlFVc3NUMEZCVHl4VlFVRlZMRXRCUVVzc1IwRkJSeXhGUVVGSkxFMUJRM1JFTEV0QlFVc3NUMEZCVDBFc1JVRkJUU3hEUVVGRExFbEJRVTBzVDBGRGVrSkJMRWRCUVU4c1IwRkRTaXhMUVVGTExFOUJRVThzVlVGQlZTeExRVUZMTEVsQlFVdEJMRU5CUVVjc1JVRkRPVU1zUTBGRFFTeFRRVUZUU2l4RlFVRkhMRU5CUTFJc1QwRkJUeXhMUVVGTExFbEJRVTFCTEVkQlFVc3NTMEZCU3l4UFFVRlBMRTFCUTNaRExFTkJRMEVzVVVGQlVVc3NSVUZCVHl4RFFVTllMRmxCUVVzc1QwRkJVeXhMUVVGTExFOUJRVThzVlVGQlZTeExRVUZMTEVkQlFVY3NSVUZETlVNc1MwRkJTeXhKUVVGTkxFVkJRMWdzUzBGQlN5eFhRVUZoTEV0QlEyeENMRXRCUVVzc1MwRkJUMEVzUlVGRFRDeEpRVU5ZTEVOQlEwRXNTMEZCUzB3c1JVRkJSeXhEUVVOS0xFOUJRVThzUzBGQlN5eFBRVUZQTEU5QlFVOHNTMEZCU3l4SlFVRkxRU3hEUVVGRExFTkJRM3BETEVOQlEwRXNRMEZCUXl4VlFVRlZTQ3hGUVVGTkxFTkJRMklzVDBGQlVVRXNSVUZCVFN4RFFVTldMRWxCUVVzc1UwRkRSQ3hQUVVGUExFMUJRVUZETEVWQlFVOHNTMEZCU3l4WlFVRlpMRWRCUTI1RExFbEJRVXNzWVVGRFJDeFBRVUZQTEUxQlFVRkJMRVZCUVU4c1MwRkJTeXhsUVVGbExFZEJRM1JETEVsQlFVc3NZMEZEUkN4UFFVRlBMRTFCUVVGQkxFVkJRVThzUzBGQlN5eG5Ra0ZCWjBJc1IwRkRka01zU1VGQlN5eE5RVU5FTEU5QlFVOHNUVUZCUVVFc1JVRkJUeXhMUVVGTExHTkJRV01zUjBGRGNrTXNTVUZCU3l4UFFVTkVMRTlCUVU4c1RVRkJRVUVzUlVGQlR5eExRVUZMTEc5Q1FVRnZRaXhIUVVNelF5eEpRVUZMTEdkQ1FVTkVMRTlCUVU4c1RVRkJRVUVzUlVGQlR5eExRVUZMTEd0Q1FVRnJRaXhIUVVONlF5eEpRVUZMTEdWQlEwUXNUMEZCVHl4TlFVRkJRU3hGUVVGUExFdEJRVXNzYVVKQlFXbENMRWRCUTNoRExFbEJRVXNzWlVGRFJDeFBRVUZQTEUxQlFVRkJMRVZCUVU4c1MwRkJTeXhwUWtGQmFVSXNSVUZETlVNc1EwRkRTaXhEUVVOQkxFTkJRVU1zWVVGQll5eERRVU5ZTEVsQlFVbFJMRVZCUVU4c1MwRkJTeXhSUVVGUkxFVkJRM2hDTEVkQlFVbEJMRWxCUVZNc1MwRkRWQ3hQUVVGUExFdEJRVXNzVVVGQlVTeFJRVUZSTEVWQlMyaERMRWRCU2tsQkxFVkJRVXNzUTBGQlF5eEpRVUZOUXl4TFFVTmFMRTFCUVVGVUxFVkJRVThzUzBGQlN5eFZRVUZWTEVOQlFVTXNSMEZEZGtKUkxFVkJRVTlCTEVWQlFVc3NWVUZCVlN4RFFVRkRMRWRCUlhaQ1FTeEZRVUZMTEVOQlFVTXNTVUZCVFN4SlFVRkxMRU5CUTJwQ0xFbEJRVWxGTEVWQlFWTkdMRVZCUVVzc1QwRkRaRWNzUlVGQlMwZ3NSVUZCU3l4UlFVRlJMRWRCUVVjc1JVRkRla0lzUzBGQlQwY3NTVUZCVHl4SlFVRkpMRU5CUTJRc1NVRkJUWFJDTEVWQlFVdHRRaXhGUVVGTFJ5eEZRVUZMTEVOQlFVTXNSVUZEZEVJc1IwRkJTWFJDTEVsQlFVOHNTMEZCVDBFc1NVRkJUeXhKUVVGTkxFTkJRek5DY1VJc1JVRkJVME1zUlVGQlN5eEZRVU5rTEV0QlEwb3NUVUZGU1VFc1JVRkJTMGdzUlVGQlN5eFJRVUZSTEVsQlFVdEhMRVZCUVVzc1EwRkJReXhEUVVWeVF5eERRVU5CTEU5QlFXRXNRMEZEVkN4SlFVRk5kRUlzUlVGQlMyMUNMRVZCUVV0RkxFVkJRVk1zUTBGQlF5eEZRVU14UWl4SFFVRkpja0lzU1VGQlR5eExRVUZQUVN4SlFVRlBMRWxCUTNKQ2NVSXNSMEZCVlN4TlFVVldMRTFCUTFJc1EwRkRRU3hKUVVGTlVpeEhRVUZMTEUxQlFVRkdMRVZCUVU4c1MwRkJTeXhWUVVGVlZTeERRVUZOTEV0QlFVMHNUVUZCUVZZc1JVRkJUeXhMUVVGTExGZEJRVmNzUlVGQlNTeEpRVU40UlN4aFFVRkJRU3hGUVVGUExFdEJRVXNzVlVGQlZWRXNSVUZCU3l4UFFVRlRUaXhEUVVGRExFZEJRM0pETEV0QlFVc3NXVUZCV1N4RlFVTldMRkZCUTFnc1EwRkRRU3hIUVVGSkxFdEJRVXNzVlVGQlZTeEZRVUZITEVOQlEyeENMRWxCUVUxVkxFVkJRVXNzVFVGQlFWb3NSVUZCVHl4TFFVRkxMRmRCUVZjc1JVRkJTU3hIUVVOMFF5eGhRVUZCUVN4RlFVRlBMRXRCUVVzc1ZVRkJWVkVzUlVGQlN5eFBRVUZUU1N4RFFVRkZMRWRCUTNSRExFMUJRVUZhTEVWQlFVOHNTMEZCU3l4WlFVRlpMRWRCUTJwQ0xGRkJRMWdzUTBGRFFTeGhRVUZOWVN4SFFVTkRMRTFCUVVGaUxFVkJRVThzUzBGQlN5eGxRVUZsTEVWQlEzUkRMRU5CUTBFc1EwRkJReXhuUWtGQmFVSXNRMEZEWkN4SlFVRk5XQ3hGUVVGTExFdEJRVXNzVDBGQlR5eERRVUZETEVWQlEzaENMRWRCUVVrc1EwRkJRMEVzUjBGQlRTeERRVUZETEV0QlFVc3NUVUZEWWl4UFFVRlBMRXRCUVVzc1VVRkJVU3haUVVGWkxFVkJRM0JETEVkQlFVbEJMRWxCUVU4c1MwRkJUMEVzU1VGQlR5eEpRVUZMTEVOQlF6RkNMRWRCUVVrc1EwRkJReXhMUVVGTExFOUJRVk1zUTBGQlF5eExRVUZMTEZOQlFWTXNRMEZCUXl4RlFVTXZRaXhQUVVGUExFdEJRVXNzVVVGQlVTeFpRVUZaTEVWQlEzQkRMRWxCUVUxNVFpeEZRVUZKTEV0QlFVc3NTMEZCU3l4RFFVRkRMRVZCUTNKQ0xFbEJRVXRCTEVsQlFVMHNUMEZCVTBFc1NVRkJUU3hSUVVGVk1VSXNSMEZCVVN4TFFVRkxMRTlCUVU4c1EwRkJReXhEUVVGRExFVkJRM1JFTEdGQlFVRlpMRVZCUVU4c1MwRkJTeXhWUVVGVkxFTkJRVU1zUjBGRGRrSXNTMEZCU3l4WlFVRmpMRVZCUTI1Q0xFdEJRVXNzVjBGQllTeEZRVU5ZWXl4SlFVRk5MRTFCUVZFc1RVRkJVU3hSUVVWeVF5eERRVU5CTEZsQlFVc3NXVUZCWXl4TlFVRkJaQ3hGUVVGUExFdEJRVXNzVjBGQlZ5eEZRVUZMTEVkQlF6TkRMRXRCUVVzc1YwRkJZU3hMUVVGTExHRkJRV1VzUTBGQlExb3NSMEZCVVN4TFFVRkxMRTlCUVU4c1EwRkJReXhEUVVGRExFbEJRemRFTEV0QlFVc3NWMEZCWVN4TFFVRkxMR0ZCUTNCQ0xFMUJRVUZaTEVWQlFVOHNTMEZCU3l4blFrRkJaMElzUlVGRGRrTXNRMEZEUVN4RFFVRkRMR2xDUVVGclFpeERRVU5tTEVkQlFVMHNRMEZCUTJVc1JVRkJTME1zUTBGQlJ5eEZRVUZKTEV0QlFVc3NTMEZCU3l4RFFVRkRMRVZCUXpsQ0xFZEJRVWtzUTBGQlEwRXNSMEZCVHl4RFFVRkRMRXRCUVVzc1RVRkRaQ3hQUVVGUExFdEJRVXNzVVVGQlVTeGhRVUZoTEVWQlEzSkRMRWxCUVV0RUxFbEJRVkVzUzBGQlQwRXNTVUZCVVN4TFFVRlBRU3hKUVVGUkxFMUJRVkV6UWl4SFFVRlJORUlzUTBGQlJ5eEZRVUZITEVOQlF6ZEVMRWxCUVUxa0xFZEJRVXNzVFVGQlFVWXNSVUZCVHl4TFFVRkxMRlZCUVZVc1EwRkJReXhMUVVGTkxFMUJRVUZCTEVWQlFVOHNTMEZCU3l4WFFVRlhMRVZCUVVrc1NVRkRia1VzV1VGQlN5eFhRVUZoTEV0QlFVc3NXVUZCWXl4RlFVTnlReXhMUVVGTExHRkJRV1ZGTEVWQlEySXNUVUZCUVVZc1JVRkJUeXhMUVVGTExHZENRVUZuUWl4RlFVTjJReXhEUVVOQkxFMUJRVThzUzBGRFdDeERRVU5CTEVOQlFVTXNaVUZCWjBJc1EwRkRZaXhOUVVGQlFTeEZRVUZQTEV0QlFVc3NWMEZCVnl4RlFVRkpMRWRCUXpOQ0xFbEJRVTFSTEVWQlFVOHNTMEZCU3l4UlFVRlJMRVZCUXpGQ0xFZEJRVWxCTEVsQlFWTXNTMEZEVkN4UFFVRlBMRXRCUVVzc1VVRkJVU3hMUVVGTExFVkJRemRDTEVsQlFVbE9MRVZCUVVrc1RVRkJRVVlzUlVGQlR5eExRVUZMTEdWQlFXVXNSMEZEYmtNc1QwRkJVVkVzUlVGQlMwNHNRMEZCUXl4RlFVRkhMRU5CUTJJc1NVRkJTeXhKUVVORUxFMUJRVUZHTEVWQlFVOHNTMEZCU3l4VlFVRlZVU3hGUVVGTExFOUJRVk5PTEVOQlFVTXNSMEZGZWtNc1MwRkJTeXhQUVVORUxHRkJRVUZHTEVWQlFVOHNTMEZCU3l4WlFVRlpMRWRCUTJwQ0xFMUJRVUZCTEVWQlFVOHNTMEZCU3l4bFFVRmxMRWRCUTNSRExFbEJRVXNzU1VGRFRDeEpRVUZMTEVsQlEwUXNZVUZCUVVFc1JVRkJUeXhMUVVGTExGVkJRVlVzUTBGQlF5eEhRVU4yUWl4TFFVRkxMRkZCUVZVc1IwRkRaaXhMUVVGTExGVkJRVmtzUlVGRFZpeFBRVU5ZTEVsQlFVc3NTVUZEVEN4SlFVRkxMRWxCUlVRc1lVRkJRVUVzUlVGQlR5eExRVUZMTEZWQlFWVXNRMEZCUXl4SFFVTm9RaXhOUVVOWUxFbEJRVXNzU1VGRFJDeGhRVUZCUVN4RlFVRlBMRXRCUVVzc1ZVRkJWVTRzUlVGQlpTeEhRVU01UWl4TlFVTllMRWxCUVVzc1NVRkRUQ3hKUVVGTExFbEJRMFFzVDBGQlR5eE5RVUZCVFN4RlFVRlBMRXRCUVVzc2EwSkJRV3RDTEVkQlEzcERMRWxCUVVzc1NVRkRUQ3hKUVVGTExFbEJRMFFzVDBGQlFVVXNSMEZCU3l4TlFVRkJSaXhGUVVGUExFdEJRVXNzZFVKQlFYVkNMRWRCUTNoRFJTeEhRVUZMTEUxQlFVRkdMRVZCUVU4c1MwRkJTeXhYUVVGWExFVkJRVWtzUjBGRGFFTXNUVUZCUVVFc1JVRkJUeXhMUVVGTExGVkJRVlZSTEVWQlFVc3NUMEZCVTA0c1EwRkJReXhIUVVOeVF5eE5RVUZCUml4RlFVRlBMRXRCUVVzc1dVRkJXU3hIUVVOcVFpeE5RVUZCUVN4RlFVRlBMRXRCUVVzc2FVSkJRV2xDTEVkQlEzaERMRkZCUTBrc1QwRkJUeXhOUVVGQlFTeEZRVUZQTEV0QlFVc3NhVUpCUVdsQ0xFVkJRelZETEVOQlEwb3NRMEZEUVN4RFFVRkRMSEZDUVVGelFpeERRVU51UWl4SlFVRkphVUlzUlVGQlNVd3NSVUZEU2xJc1JVRkJVeXhIUVVOaUxFZEJRMGxoTEVWQlFVc3NUVUZCUVdwQ0xFVkJRVThzUzBGQlN5eFpRVUZaTEVkQlEzcENhVUlzUlVGQlN5eEhRVU5NVEN4RlFVRkxMRTFCUVVGYUxFVkJRVThzUzBGQlN5eFhRVUZYTEVWQlFVc3NSMEZEYWtNc1MwRkJTeXhaUVVGalNTeEZRVUZUVVN4SFFVYzFRa0VzUlVGQlN5eEZRVVZVUVN4SFFVRk5MRTFCUVVGYUxFVkJRVThzUzBGQlN5eFhRVUZYTEVWQlFVa3NVMEZETlVKcFFpeEZRVUZMVEN4RlFVRkxMRWRCUTI1Q0xFbEJRVTFLTEVWQlFVOHNTMEZCU3l4UlFVRlJMRVZCUXpGQ0xFZEJRVWxCTEVsQlFWTXNTMEZEVkN4UFFVRlBMRXRCUVVzc1VVRkJVU3hOUVVGTkxFVkJRemxDTEVsQlFVdEtMRWxCUVZjc1NVRkJUVUVzUlVGQlV5eExRVUZMTEZsQlFXTkpMRVZCUVVzc1EwRkJReXhKUVVGTkxFdEJRM3BFU2l4SlFVRlhMRWxCUTFCSkxFVkJRVXNzVjBGQlZ5eExRVUZMTEVkQlFVdEJMRVZCUVVzc1YwRkJWeXhMUVVGTExFbEJRMmhFY0VJc1IwRkJVVzlDTEVWQlFVc3NRMEZCUXl4RFFVRkRMRWxCVDJZc1JVRkliMEpLTEVsQlFWY3NTMEZCU3l4WFFVRmhMRWRCUTJwRUxFdEJRVXNzV1VGQll5eEpRVU5zUWtrc1JVRkJTeXhEUVVGRExFbEJRVTBzUzBGQlQwRXNSVUZCU3l4RFFVRkRMRWxCUVUwc1RVRkhhRU1zV1VGQlN5eFZRVUZaTEVWQlEycENMRTFCUVUxVkxFZEJRME1zVFVGQlFXeENMRVZCUVU4c1MwRkJTeXhsUVVGbExFZEJSekZETEVsQlFVbEZMRVZCUVVrc1JVRkRVaXhMUVVGUFRTeEZRVUZMVGl4RFFVRkRMRWxCUVUwc1MwRkRaa0VzUjBGQlN5eE5RVUZCUml4RlFVRlBMRXRCUVVzc1ZVRkJWU3hEUVVGRExFZEJRelZDUlN4SFFVRkxMRTFCUVVGR0xFVkJRVThzUzBGQlN5eFhRVUZYTEVWQlFVa3NSMEZEYUVNc1MwRkJTeXhSUVVGVkxFZEJSMjVDTEU5QlJFRkZMRWRCUVVzc1RVRkJRVVlzUlVGQlR5eExRVUZMTEdWQlFXVXNSMEZEZUVKUkxFVkJRVXRPTEVOQlFVTXNSVUZCUnl4RFFVTmlMRXRCUVVzc1QwRkRSQ3hOUVVGUExFOUJRMWdzU1VGQlN5eEpRVU5FTEdGQlFVRkdMRVZCUVU4c1MwRkJTeXhWUVVGVlVTeEZRVUZMTEU5QlFWTk9MRU5CUVVNc1IwRkRPVUlzVDBGRFdDeEpRVUZMTEVsQlEwd3NTVUZCU3l4SlFVTkVMR0ZCUVVGR0xFVkJRVThzUzBGQlN5eFZRVUZWTEVOQlFVTXNSMEZEZGtJc1MwRkJTeXhSUVVGVkxFZEJRMllzUzBGQlN5eFhRVUZoTEVWQlExZ3NUMEZEV0N4SlFVRkxMRWxCUTB3c1NVRkJTeXhKUVVORUxHRkJRVUZCTEVWQlFVOHNTMEZCU3l4VlFVRlZMRU5CUVVNc1IwRkRka0lzUzBGQlN5eFJRVUZWTEVkQlEyWXNTMEZCU3l4WFFVRmhMRVZCUTFnc1MwRkJTeXhWUVVGWkxFOUJRVk1zVFVGRGNrTXNTVUZCU3l4SlFVTkVMR0ZCUVVGQkxFVkJRVThzUzBGQlN5eFZRVUZWVGl4RlFVRmxMRWRCUXpsQ0xFOUJRMWdzU1VGQlN5eEpRVU5NTEVsQlFVc3NTVUZEUkN4WlFVRkxMRkZCUVZVc1IwRkRVaXhOUVVGQlRTeEZRVUZQTEV0QlFVc3NhMEpCUVd0Q0xFZEJRM3BETEVsQlFVc3NTVUZCU3l4RFFVTk9MRWxCUVUxRUxFVkJRVThzUzBGQlN5eFBRVUZQTEVOQlFVTXNSVUZETVVJc1IwRkJTU3hMUVVGTExGTkJRVmRZTEVkQlFWRlhMRU5CUVVrc1IwRkJTMEVzU1VGQlV5eEpRVU14UXl4WlFVRkxMRkZCUVZVc1IwRkRaaXhOUVVGQlF5eEZRVUZQTEV0QlFVc3NWVUZCVlN4RFFVRkRMRWRCUTNaQ0xFMUJRVUZCTEVWQlFVOHNTMEZCU3l4WFFVRlhMRVZCUVVrc1IwRkRjRUlzVFVGRlppeERRVVZCTEZGQlEwa3NXVUZCU3l4UlFVRlZMRWRCUTFJc1RVRkJRVUVzUlVGQlR5eExRVUZMTEdsQ1FVRnBRaXhGUVVNMVF5eERRVU5LTEVOQlEwRXNRMEZCUXl4dFFrRkJiMElzUTBGRGFrSXNTVUZCVFcxQ0xFVkJRVkVzUzBGQlN5eFBRVUZQTEVOQlFVTXNSVUZEZGtKaUxFVkJRVTBzUzBGQlN5eFBRVUZQTEZGQlFWRmhMRVZCUVU4c1MwRkJTeXhKUVVGTkxFTkJRVU1zUlVGRGFrUXNSMEZCU1VFc1NVRkJWU3hKUVVOV0xFdEJRVTlpTEVsQlFWRXNTVUZCVFN4TFFVRkxMRTlCUVU5QkxFVkJRVTBzUTBGQlF5eEpRVUZOTEV0QlF6RkRRU3hGUVVGTkxFdEJRVXNzVDBGQlR5eFJRVUZSTEVsQlFVdEJMRVZCUVUwc1EwRkJReXhOUVVreFF5eE5RVUZQUVN4SlFVRlJMRWxCUVVrc1EwRkRaaXhKUVVGSlNpeEZRVUZKTEVWQlExSXNTMEZCVHl4TFFVRkxMRTlCUVU5SkxFVkJRVTBzUlVGQlNVb3NRMEZCUXl4SlFVRk5MRTFCUTJoRFFTeEhRVUZMTEVWQlExUXNSMEZCU1VFc1JVRkJTU3hKUVVGTkxFVkJRMVlzVFVGRFNra3NSVUZCVFN4TFFVRkxMRTlCUVU4c1VVRkJVU3hKUVVGTFFTeEZRVUZOTEVOQlFVTXNRMEZETVVNc1EwRkhTaXhKUVVGTll5eEZRVUZMTEV0QlFVc3NUMEZCVHl4VlFVRlZMRVZCUVVka0xFTkJRVWNzUlVGRGJrTlhMRVZCUVV0SExFVkJRVWNzVVVGQlVUdEJRVUZCTEVWQlFVMHNTMEZCU3l4SFFVRkhMRVZCUTJ4RExFZEJRVWxJTEVsQlFVOHNSMEZCU1N4RFFVTllMRXRCUVU5QkxFbEJRVThzU1VGQlNTeERRVU5rTEVsQlFVMU9MRVZCUVVzc1MwRkJTeXhsUVVGbFRTeEZRVUZMTEVOQlFVTXNSVUZEY2tNc1IwRkJTVTRzU1VGQlR5eEhRVU5RTEUxQlEwcE5MRVZCUVV0SExFVkJRVWNzVVVGQlVUdEJRVUZCTEVWQlFVMVVMRU5CUVVVc1EwRkROVUlzUTBGRFNVMHNTVUZCVHl4TFFVVlFXQ3hGUVVGTlZ5eEhRVUZOUnl4RlFVRkhTQ3hGUVVGTExFTkJRVU1zU1VGQlRTeExRVUZQTEVWQlFVa3NSMEZGT1VNc1EwRkRRU3hIUVVGSldDeEpRVUZSTEVkQlFVa3NRMEZEV2l4SFFVRkpMRU5CUVVNc1MwRkJTeXhOUVVOT0xFOUJRVThzUzBGQlN5eFJRVUZSTEdWQlFXVXNSVUZEZGtOQkxFVkJRVTBzUzBGQlN5eFBRVUZQTEUxQlEzUkNMRU5CUTBFc1lVRkJRVTRzUlVGQlR5eExRVUZMTEZsQlFWbE5MRVZCUVUwc1JVRkJSeXhGUVVGTExFZEJReTlDTEV0QlFVc3NWVUZCV1N4UFFVRlRMRXRCUTNKRExFTkJRMEVzUTBGQlF5eDNRa0ZCZVVJc1EwRkRkRUlzUzBGQlN5eHJRa0ZCYjBJc1IwRkRla0lzUzBGQlN5eG5Ra0ZCYTBJc1IwRkRka0lzU1VGQlNVd3NSVUZCU1N4TFFVRkxMRWxCUTJJc1QwRkJZU3hEUVVOVUxFbEJRVTFhTEVWQlFVc3NTMEZCU3l4UFFVRlBMRVZCUVVWWkxFTkJRVU1zUlVGRE1VSXNSMEZCU1Zvc1NVRkJUeXhKUVVOUUxFdEJRVXNzWjBKQlFXdENMRmRCUTJ4Q1FTeEZRVUZMTEV0QlFVOUJMRWRCUVUwc1NVRkRka0lzUzBGQlN5eHJRa0ZCYjBJc1QwRkJUMEVzUTBGQlJTeEZRVUZKTEZWQlEycERRU3hKUVVGUExFbEJRMW9zUzBGRFVpeERRVU5CTEU5QlFVOHNUVUZCUVZjc1JVRkJUeXhMUVVGTExGVkJRVlZZTEVkQlFVMUVMRWRCUVZGRExFTkJRVVVzUjBGQlMwRXNTVUZCVHl4SFFVRkhMRVZCUTJoRkxFTkJRMEVzUTBGQlF5eHJRa0ZCYlVJc1EwRkRhRUlzU1VGQlNUUkNMRVZCUVVzc1MwRkJTeXhKUVVGTkxFVkJRMmhDWWl4RlFVRlRMRVZCUTFSbUxFVkJRMHBuUXl4RlFVRk5MRkZCUVZNc1JVRkJTU3hMUVVGTExFbEJRVTFvUXl4RlFVRkxMRXRCUVVzc1QwRkJUeXhEUVVGRExFVkJRVWtzUlVGQlJTeEZRVU5zUkN4UFFVRlJRU3hGUVVGSkxFTkJRMUlzU1VGQlN5eEpRVU5FWlN4SFFVRlZMRVZCUTFZc1RVRkRTaXhKUVVGTE8wRkJRVUVzUlVGRFJHRXNSVUZCU3l4RlFVTk1ZaXhGUVVGVExFVkJRMVFzVFVGRFNpeEpRVUZMTEV0QlFVMHNRMEZEVUN4SlFVRk5UQ3hGUVVGUExFdEJRVXNzVDBGQlR5eEZRVUZKTEVOQlFVTXNSVUZET1VJc1IwRkJTU3hEUVVGRFFTeEhRVUZSTEVOQlFVTXNTMEZCU3l4TlFVTm1MRTlCUVU4c1MwRkJTeXhSUVVGUkxHTkJRV01zUlVGRGRFTXNSMEZCU1VFc1NVRkJVenRCUVVGQkxFVkJRMVFzUzBGRFVpeERRVU5CTEZGQlEwa3NUVUZCVFhOQ0xFTkJRMlFzUTBGRlNpeEhRVUZKTEVOQlFVTm9ReXhIUVVGTkxFTkJRVU1zUzBGQlN5eE5RVU5pTEU5QlFVOHNTMEZCU3l4UlFVRlJMR05CUVdNc1JVRkRkRU1zUjBGQlNXVXNSMEZCVlN4TFFVRkxMRmRCUVZrc1EwRkRka0lzUzBGQlN5eHZRa0ZCYzBJc1IwRkRNMElzUzBGQlN5eFhRVUZoUVN4RlFVVnNRaXhMUVVGTExGZEJRMFFzUzBGQlN5eHRRa0ZCY1VJc1MwRkJTeXhoUVVGbExFVkJRVWtzUlVGQlNTeExRVUZMTEZsQlJXNUZMRVZCUVVjc1EwRkRReXhKUVVGTlR5eEZRVUZMTEV0QlFVc3NaVUZCWlUwc1JVRkJTeXhEUVVGRExFVkJRM0pETEVkQlFVbE9MRWxCUVU4c1IwRkRVQ3hOUVVOS1RTeEZRVUZMTEV0QlFVc3NUMEZCVHl4UlFVRlJPMEZCUVVFc1JVRkJUVTRzUTBGQlJTeERRVU55UXl4UFFVRlRUU3hKUVVGUExFbEJRMmhDTEVkQlFVbEJMRWxCUVU4c1IwRkJTU3hEUVVOWUxFZEJRVWtzUTBGQlF5eExRVUZMTEUxQlEwNHNUMEZCVHl4TFFVRkxMRkZCUVZFc1kwRkJZeXhGUVVOMFEwRXNSVUZCU3l4TFFVRkxMRTlCUVU4c1RVRkRja0lzUTBGRFNpeERRVWRCTEVsQlFVbG9RaXhGUVVGSlowSXNSVUZCU3l4RlFVVmlMRWxCUkVFMVFpeEZRVUZMTEV0QlFVc3NUMEZCVDFrc1EwRkJReXhGUVVOWVdpeEpRVUZQTEV0QlExWkJMRVZCUVVzc1MwRkJTeXhQUVVGUExFVkJRVVZaTEVOQlFVTXNSVUZEZUVJc1IwRkJTVm9zU1VGQlR5eEpRVUZOTEVOQlEySXNTMEZCVDBFc1NVRkJUeXhMUVVGUlFTeEpRVUZQTEV0QlFVOUJMRWxCUVU4c1RVRkJVVUVzU1VGQlR6dEJRVUZCTEVkQlEzUkVRU3hGUVVGTExFdEJRVXNzVDBGQlR5eEZRVUZGV1N4RFFVRkRMRVZCUTNoQ1owSXNSVUZCUzJoQ0xFVkJRVWtzUTBGRFlpeFRRVU5UTEVOQlFVTXNTMEZCU3l4blFrRkRXQ3hGUVVGSExFTkJRME1zU1VGQlNTeEZRVUZKWjBJc1JVRkJTeXhGUVVOVU5VSXNSVUZCU3l4TFFVRkxMRTlCUVU4c1EwRkJReXhGUVVOc1FrRXNTVUZCVHl4UFFVTlFRU3hGUVVGTExFdEJRVXNzVDBGQlR5eEZRVUZGTEVOQlFVTXNSMEZEZUVJc1NVRkJUV2xETEVWQlFWY3NSVUZEYWtJc1MwRkJUMnBETEVsQlFVOHNTMEZEVmtFc1JVRkJTeXhMUVVGTExFOUJRVThzUlVGQlJTeERRVUZETEVWQlEzaENMRWRCUVVsQkxFbEJRVTg3UVVGQlFTeEhRVUZSTEVkQlFVc3NTMEZCU3l4TFFVRlBMRVZCUVVrc1JVRkJTV1VzUlVGQlUydENMRVZCUTJwRVRDeEZRVUZMTEUxQlJVd3NUVUZEVWl4UFFVRlRMRWxCUldJc1lVRkJUVTBzUjBGRFRpeE5RVUZCZGtJc1JVRkJUeXhMUVVGTExGbEJRVmxwUWl4RlFVRkxMRVZCUVVjc1JVRkJTU3hIUVVNM1FpeE5RVUZCYWtJc1JVRkJUeXhMUVVGTExHVkJRV1VzUlVGRGRFTXNRMEZEUVN4RFFVRkRMR3RDUVVGdFFpeERRVU5vUWl4SlFVRk5kMElzUlVGQlV5eExRVUZMTEZWQlFWa3NSVUZETlVKc1FpeEZRVUZOTEV0QlFVc3NTVUZCVFN4RlFVTnFRa3dzUlVGQlNTeExRVUZMTEVsQlFVMHNSVUZEWmxvc1JVRkRTaXhMUVVGUlFTeEZRVUZMTEV0QlFVc3NUMEZCVHl4RlFVRkZXU3hEUVVGRExFZEJRM2hDTEVkQlFVbGFMRWxCUVU4c1NVRkJTeXhEUVVOYUxFbEJRVTFWTEVWQlFVOHNTMEZCU3l4UFFVRlBSU3hGUVVGSkxFTkJRVU1zUlVGRE9VSXNSMEZCU1dJc1IwRkJVVmNzUTBGQlNTeEhRVUZOZVVJc1IwRkJWV2hETEVkQlFXMUNMRWxCUVVsUExFTkJRVWtzUlVGRGRrUXNUVUZEU2s4c1JVRkJUVXdzUTBGRFZpeFRRVU5UWWl4SFFVRlJReXhEUVVGRkxFVkJRVWNzUTBGRGJFSXNTVUZCU1ZVc1JVRkJUeXhMUVVGTExFOUJRVTlGTEVWQlFVa3NRMEZCUXl4RlFWVTFRaXhIUVZSSldpeEpRVUZQTEU5QlEwaFZMRWxCUVZNN1FVRkJRU3hIUVVOVVJTeEhRVUZMTEVWQlEweGFMRVZCUVVzN1FVRkJRU3hGUVVOTVZTeEZRVUZQTEV0QlFVc3NUMEZCVDBVc1JVRkJTU3hEUVVGRExFZEJSM2hDU3l4RlFVRk5UQ3hIUVVWV1JpeEpRVUZUTEV0QlFWRjVRaXhIUVVGVmFFTXNSMEZCYlVJc1NVRkJTVThzUTBGQlNTeEZRVU4wUkN4TlFVTktMRWRCUVVsV0xFbEJRVTg3UVVGQlFTeEZRVUZOTEVOQlEySXNTVUZCVFhOQ0xFVkJRVXNzUzBGQlN5eGxRVUZsVml4RlFVRkpMRU5CUVVNc1JVRkRjRU1zUjBGQlNWVXNTVUZCVHl4SFFVTlFMRTFCUTBwV0xFVkJRVWtzUzBGQlN5eEpRVUZKUVN4RlFVRkhWU3hGUVVGTExFTkJRVU1zUTBGRE1VSXNRMEZEU2l4TFFVTkxMRU5CUTBRc1IwRkJTV0VzUjBGQlZXaERMRWRCUVcxQ0xFbEJRVWxJTEVOQlFVVXNSVUZEYmtNc1RVRkRTbWxDTEVWQlFVMU1MRU5CUTFZc1EwRkZTaXhOUVVGSkxFTkJRVU5hTEVkQlFVMHNRMEZCUXl4TFFVRkxMRTFCUTA0c1MwRkJTeXhSUVVGUkxHTkJRV01zUjBGRGRFTXNUVUZCVFd0RExFZEJRMDRzVFVGQlFYWkNMRVZCUVU4c1MwRkJTeXhaUVVGWlRTeEZRVUZOTEVWQlFVY3NSVUZCU1N4SFFVTTVRbXRDTEVWQlFWTXNUMEZCVXl4TlFVTTNRaXhEUVVOQkxFTkJRVU1zVlVGQlZYUkNMRVZCUVVjc1EwRkRWaXhQUVVGSlFTeEZRVUZKTEVkQlEwb3NUVUZCVFN4TFFVRkxMRTlCUVU4c1QwRkJUeXhMUVVGTExFbEJRVXRCTEVOQlFVTXNSVUZEY0VNc1MwRkJTeXhMUVVGUFFTeEZRVU5NUVN4SFFVVktMRU5CUTFnc1EwRkRRU3hEUVVGRExGbEJRVmxFTEVWQlFVZDNRaXhGUVVGWkxFTkJRM2hDTEVsQlFVMVlMRVZCUVVrc1MwRkJTeXhQUVVGUExFMUJRVTBzUzBGQlN5eEpRVUZMWWl4RFFVRkRMRVZCUTNaRExFOUJRVWxoTEVkQlEwRXNUVUZCVFVFc1JVRkRUaXhMUVVGTExFdEJRVTlCTEVWQlFVVXNUMEZEVUVFc1JVRkJSU3hUUVVWS1Z5eEpRVU5NTEV0QlFVMHNTVUZEU0N4RlFVTllMRU5CUTBFc1EwRkJReXhuUWtGQmFVSXNRMEZEWkN4UFFVRlJMRXRCUVVzc1QwRkJUeXhEUVVGRExFVkJRVWNzUTBGRGNFSXNTVUZCU3l4SlFVTkVMRTlCUVZNc1RVRkJRWHBDTEVWQlFVOHNTMEZCU3l4UlFVRlJMRXRCUTNoQ0xFMUJRVUZCTEVWQlFVOHNTMEZCU3l4WFFVRlhMRVZCUVVrc1MwRkRNMElzVFVGQlFVRXNSVUZCVHl4TFFVRkxMR1ZCUVdVc1NVRkRjRU1zU1VGQlN5eEpRVU5FTEU5QlFWTXNUVUZCUVVFc1JVRkJUeXhMUVVGTExGVkJRVlZPTEVWQlFXVXNTMEZEZWtNc1RVRkJRVTBzUlVGQlR5eExRVUZMTEZkQlFWY3NSVUZCU1N4TFFVTXpRaXhOUVVGQlFTeEZRVUZQTEV0QlFVc3NaVUZCWlN4SlFVTndReXhKUVVGTExFbEJRMHdzU1VGQlN5eEpRVU5NTEVsQlFVc3NTVUZCU3l4RFFVTk9MRWxCUVUxM1FpeEZRVUZUTEV0QlFVc3NWVUZCV1N4RlFVTXhRbElzUlVGQlRTeExRVUZMTEU5QlFVOHNRMEZCUXl4RlFVTjZRaXhIUVVGSk5VSXNSMEZCVVRSQ0xFTkJRVWNzUjBGQlRWRXNSMEZCVldoRExFZEJRVzFDTEVsQlFVbDNRaXhEUVVGSExFVkJRM0pFTEU5QlFVdFJMRVZCUlVrc1MwRkJTeXhWUVVOV0xFdEJRVXNzVVVGQlZTeEpRVVptTEV0QlFVc3NWMEZCWVN4TFFVRkxMRmxCUVdNc1IwRkhhRU1zVFVGQlFYaENMRVZCUVU4c1MwRkJTeXhWUVVGVkxFTkJRVU1zUzBGRE0wSXNUVUZCUVVFc1JVRkJUeXhMUVVGTExGZEJRVmNzUlVGQlNTeExRVU16UWl4TlFVRkJRU3hGUVVGUExFdEJRVXNzWlVGQlpTeEhRVVY0UXl4RFFVTktMRU5CUTBFc1RVRkJUeXhGUVVOWUxFTkJRMEVzUTBGQlF5eFRRVUZWTEVOQlExQXNSMEZCU1N4TFFVRkxMRTlCUVU4c1EwRkJReXhKUVVGTkxFbEJRVXNzUTBGRGVFSXNTVUZCU1VNc1JVRkJTU3hMUVVGTExFbEJRVTBzUlVGRFpsb3NSVUZCU3l4TFFVRkxMRTlCUVU5WkxFTkJRVU1zUlVGRGRFSXNTMEZCVHl4RFFVRkRZaXhIUVVGUlF5eERRVUZGTEVkQlFVdEJMRWxCUVU4c1MwRkRNVUpCTEVWQlFVc3NTMEZCU3l4UFFVRlBMRVZCUVVWWkxFTkJRVU1zUlVGRGVFSXNUMEZCVHl4TlFVRkJSQ3hGUVVGUExFdEJRVXNzV1VGQldWZ3NTVUZCVHl4SlFVRk5XU3hGUVVGSkxFVkJRVWxCTEVWQlFVY3NSVUZCU3l4RlFVTm9SU3hMUVVOTExFTkJRMFFzU1VGQlNVRXNSVUZCU1N4TFFVRkxMRWxCUVUwc1JVRkRabG9zUlVGQlN5eExRVUZMTEU5QlFVOVpMRU5CUVVNc1JVRkRkRUlzUzBGQlQxb3NSMEZEU0N4SFFVRkpSU3hIUVVGVExFbEJRVWxHTEVOQlFVVXNSVUZEWmtFc1JVRkJTeXhMUVVGTExFOUJRVThzUlVGQlJWa3NRMEZCUXl4VlFVTm1XaXhKUVVGUExFdEJRMXBETEVkQlFWVXNTVUZCU1N4TFFVRkxMRTlCUVU5WExFVkJRVWtzUTBGQlF5eERRVUZETEVkQlEyaERXQ3hIUVVGVkxFbEJRVWtzUzBGQlN5eFBRVUZQVnl4RlFVRkpMRU5CUVVNc1EwRkJReXhGUVVOb1Exb3NSVUZCU3l4TFFVRkxMRTlCUVZGWkxFZEJRVXNzUTBGQlJTeE5RVWQ2UWl4UFFVVlNMRTlCUVU4c1RVRkJRVVFzUlVGQlR5eExRVUZMTEZsQlFWbERMRVZCUVVjc1JVRkJTeXhGUVVNelF5eERRVU5LTEVOQlEwRXNRMEZCUXl4aFFVRmpMRU5CUTFnc1NVRkJUVm9zUlVGQlN5eExRVUZMTEU5QlFVOHNTMEZCU3l4SFFVRkhMRVZCUXk5Q0xFOUJRVWxCTEVsQlFVODdRVUZCUVN4RlFVTkJMRTFCUVVGWExFVkJRVThzUzBGQlN5eFZRVUZWTEVOQlFVTXNSMEZEZWtKWUxFbEJRVThzVFVGQlVTeExRVUZMTEU5QlFVOHNRMEZCUXl4SlFVRk5PMEZCUVVFc1JVRkRhRU1zVFVGQlFWY3NSVUZCVHl4TFFVRkxMRlZCUVZVc1EwRkJReXhIUVVWMlFpeERRVU5tTEVOQlEwRXNRMEZCUXl4WFFVRlhNRUlzUlVGQlZ5eERRVU51UWl4SlFVRkpla0lzUlVGQlNTeExRVUZMTEVsQlFVMHNSVUZEWmxvc1JVRkRTaXhIUVVOSlFTeEZRVUZMTEV0QlFVc3NUMEZCVHl4RlFVRkZXU3hEUVVGRExGRkJRMlphTEVsQlFVOHNTMEZCVVhGRExFZEJRV0Z5UXl4SlFVRlBMRXRCUXpWRExFbEJRVTFoTEVWQlFVbEVMRVZCUVVrc1MwRkJTeXhKUVVOdVFpeFBRVUZKUXl4RlFVRkpMRWxCUTBvc1RVRkJUU3hMUVVGTExFOUJRVThzVDBGQlR5eExRVUZMTEVsQlFVdEJMRU5CUVVNc1JVRkRjRU1zUzBGQlN5eEpRVUZOUkN4SFFVVlNReXhEUVVOWUxFTkJRMEVzUTBGQlF5eFZRVUZWZVVJc1JVRkJUU3hEUVVOaUxFbEJRVWt4UWl4RlFVRkpMRXRCUVVzc1NVRkRWRm9zUlVGQlN5eExRVUZMTEU5QlFVOVpMRU5CUVVNc1JVRkRkRUlzUzBGQlR5eERRVUZETUVJc1JVRkJTM1JETEVOQlFVVXNSMEZEV0VFc1JVRkJTeXhMUVVGTExFOUJRVThzUlVGQlJWa3NRMEZCUXl4RlFVTjRRaXhQUVVGUExFMUJRVUZFTEVWQlFVOHNTMEZCU3l4WlFVRlpReXhGUVVGSExFVkJRVXNzUlVGRE0wTXNRMEZEU2l4RlEzSnpRa0VzU1VGQlRUSkNMRWRCUVU0c1MwRkJhMElzUTBGRFpDeGhRVUZqTEVOQlExWXNTMEZCU3l4WFFVRmhMRU5CUVVNc1JVRkxia0lzUzBGQlN5eFhRVUZqUXl4SFFVRlhMRXRCUVVzc1YwRkJWeXhMUVVGTFFTeERRVUZOTEVWQlRYcEVMRXRCUVVzc1VVRkJWMEVzUjBGQlZ5eERRVU4yUWl4SlFVRkpReXhGUVVGTkxFVkJRMDVETEVWQlFVOHNTMEZCU3l4WFFVRlhMRTlCUXpOQ0xFdEJRVTlFTEVWQlFVMURMRWRCUVUwc1EwRkRaaXhKUVVGTlF5eEZRVUZQUml4RlFVRk5ReXhIUVVGVExFVkJRM2hDTEV0QlFVc3NWMEZCVjBNc1EwRkJSeXhGUVVGSlNDeEZRVU4yUWtNc1JVRkJUVVVzUlVGQlRTeEZRVVZhUkN4RlFVRlBReXhEUVVObUxFTkJRMEVzUjBGQlNTeExRVUZMTEZkQlFWZEdMRU5CUVVjc1NVRkJUVVFzUlVGRGVrSXNUVUZCVHl4RFFVRkZMRXRCUVUxRExFVkJRVTBzUlVGQlJ5eEpRVUZMTEVOQlFVVXNSVUZEYmtNc1IwRkJTVUVzU1VGQlVTeEZRVU5TTEUxQlFVOHNRMEZCUlN4TFFVRk5MRVZCUVVjc1NVRkJTMFFzUTBGQlR5eEZRVU5zUXl4SlFVRk5TU3hGUVVGUkxFdEJRVXNzVjBGQlYwZ3NSVUZCVFN4RFFVRkRMRVZCUTNKRExFMUJRVThzUTBGQlJTeExRVUZOUVN4RlFVRkxMRWxCUVV0RUxFVkJRVk5KTEVWQlFWRXNRMEZCUlN4RFFVTm9SQ3hEUVVOS0xFTkJRMG9zUlVOcVEwRXNVMEZCVTBNc1IwRkJZME1zUlVGQlRVTXNSVUZCVFN4RFFVTXZRaXhSUVVGVFF5eEZRVUZKTEVWQlFVZEJMRVZCUVVsR0xFVkJRVXNzVDBGQlVTeEZRVUZGUlN4RlFVTXZRaXhIUVVGSlJpeEZRVUZMUlN4RFFVRkRMRVZCUVVVc1QwRkJVMFFzUlVGRGFrSXNUVUZCVHl4SFFVTm1MRTFCUVU4c1JVRkRXQ3hEUVVOQkxGTkJRVk5GTEVkQlFXdENTQ3hGUVVGTkxFTkJRemRDTEZGQlFWTkZMRVZCUVVrc1JVRkJSMEVzUlVGQlNVWXNSVUZCU3l4UFFVRlJMRVZCUVVWRkxFVkJReTlDTEU5QlFWRkdMRVZCUVV0RkxFTkJRVU1zUlVGQlJTeExRVUZOTEVOQlEyeENMRWxCUVVzc1VVRkRUQ3hKUVVGTExGVkJRMHdzU1VGQlN5eFZRVU5FTEUxQlEwb3NVVUZEU1N4UFFVRlBRU3hEUVVObUxFTkJSVW9zVFVGQlR5eEZRVU5ZTEVOQlEwRXNVMEZCVTBVc1IwRkJXVU1zUlVGQlR5eERRVU40UWl4UFFVRlJRU3hIUVVGQkxGbEJRVUZCTEVWQlFVOHNTMEZCVFN4RFFVTnFRaXhKUVVGTExGRkJRMHdzU1VGQlN5eFRRVU5NTEVsQlFVc3NkVUpCUTB3c1NVRkJTeXgxUWtGRFRDeEpRVUZMTEd0Q1FVTkVMRTFCUVU4c1IwRkRXQ3hSUVVOSkxFMUJRVThzUlVGRFppeERRVU5LTEVOQlEwRXNVMEZCVTBNc1IwRkJZVU1zUlVGQlVTeERRV3hET1VJc1NVRkJRVU1zUlVGdFEwa3NUMEZCVVVRc1JVRkJUeXhMUVVGTkxFTkJRMnBDTEVsQlFVc3NWMEZEUkN4UFFVRlBRU3hGUVVGUExFMUJRMnhDTEVsQlFVc3NXVUZCWVN4RFFVTmtMRWxCUVUxRkxFVkJRVXRHTEVWQlFVOHNUVUZCVFVFc1JVRkJUeXhOUVVGTkxFOUJRVk1zUTBGQlF5eEZRVU12UXl4UFFVRlBReXhGUVVGQlF5eEZRVUZITEUxQlFVZ3NTMEZCUVVRc1JVRkJWVU1zUlVGQlJ5eExRVU40UWl4RFFVTkJMRWxCUVVzc1dVRkRSQ3hQUVVGUFJpeEZRVUZQTEUxQlFVMUJMRVZCUVU4c1RVRkJUU3hQUVVGVExFTkJRVU1zUlVGQlJTeE5RVVZxUkN4UlFVTkpMRTFCUVU4c1EwRkJReXhEUVVOb1FpeERRVU5LTEVOQlJVRXNVMEZCVTBjc1IwRkJjMEpETEVWQlFVMHNRMEZzUkhKRExFbEJRVUZJTEVWQmJVUkpMRWRCUVVsSExFVkJRVXNzVTBGQlZ5eEZRVU5vUWl4TlFVRlBMRU5CUVVNc1JVRkRXaXhKUVVGSlZDeEZRVUZKVXl4RlFVRkxMRTlCUTJKRExFVkJRVTBzUzBGQlR5eEZRVUZGVml4SFFVRkxMRWRCUTJoQ0xFOUJRVkZUTEVWQlFVdFVMRU5CUVVNc1JVRkJSU3hMUVVGTkxFTkJRMnhDTEVsQlFVc3NXVUZEVEN4SlFVRkxMRzFDUVVOTUxFbEJRVXNzWjBKQlEwd3NTVUZCU3l4bFFVTk1MRWxCUVVzc1ZVRkRSQ3hOUVVGTlZTeERRVU5rTEVOQlJVb3NUMEZCVDBvc1JVRkJRVWNzUlVGQlN5eEZRVUZGVkN4RFFVRkRMRWxCUVZJc1dVRkJRVTBzUlVGQlZ5eFJRVUZUTEZOQlFWTXNRMEZIY0VNc1QwRkJUMGNzUlVGQlN5eFBRVUZQVkN4RlFVRkhVeXhGUVVGTExFMUJRVTBzUTBGRGNrTXNRMEZEUVN4VFFVRlRSU3hIUVVGblFrTXNSVUZCU1N4RFFVTjZRaXhIUVVGSlFTeEZRVUZITEUxQlFVMHNUMEZCVXl4cFFrRkRiRUlzVVVGQlYwd3NTMEZCVFVzc1JVRkJSeXhOUVVOYVRDeEZRVUZITEV0QlEwZ3NRMEZCUTBFc1JVRkJSeXhQUVVOS0xFTkJRVU5XTEVkQlFXTlZMRVZCUVVjc1RVRkJUeXhyUWtGQmEwSXNSMEZETTBNc1EwRkJRMVlzUjBGQlkxVXNSVUZCUnl4SlFVRkxMR1ZCUVdVc1NVRkRiRU5CTEVWQlFVY3NUVUZEU0VFc1JVRkJSeXhOUVVGUlFTeEZRVUZITEV0QlEyeENMRTlCUVU5QkxFVkJRVWNzU1VGRFRrd3NSMEZCV1Vzc1JVRkJSeXhMUVVGTExFVkJRMmhDUVN4RlFVRkhMRTFCUVUwc1NVRkRWQ3hOUVVGTkxGVkJRVlVzUzBGQlN5eE5RVUZOUVN4RlFVRkhMRTFCUVUwc1NVRkJTMEVzUlVGQlJ5eEhRVUZITEVWQlJTOURRU3hGUVVGSExFMUJRVTBzU1VGQlRVRXNSVUZCUnl4SlFVZDBRaXhOUVVGTkxGVkJRVlVzUzBGQlN5eE5RVUZOUVN4RlFVRkhMRTFCUVU5QkxFVkJRVWNzUjBGQlJ5eEZRVU12UXl4UFFVRlBRU3hGUVVGSExFbEJTVEZDTEVOQk5FSkJMRWxCUVUxTkxFZEJRVTRzUzBGQllTeERRVXRVTEZsQlFWbERMRVZCUVZjc1EwRkZia0lzUzBGQlN5eFZRVUZaTEVkQlJXcENMRXRCUVVzc1UwRkJWeXhIUVVWb1FpeExRVUZMTEU5QlFWTXNSVUZGWkN4TFFVRkxMRTlCUVZNc1JVRkZaQ3hMUVVGTExGVkJRVmtzUjBGRmFrSXNTMEZCU3l4TlFVRlJMRU5CUVVNc1JVRkZaQ3hMUVVGTExFOUJRVk1zUjBGRlpDeExRVUZMTEV0QlFVOHNSMEZGV2l4TFFVRkxMRTFCUVZFc1NVRkJTVU1zUjBGRGFrSXNTMEZCU3l4VlFVRlpSQ3hEUVVOeVFpeERRVk5CTEVOQlFVTXNUVUZCVFVVc1JVRkJVVU1zUlVGQllTeEhRVUZQTEVOQlF6TkNMRXRCUVVzc1YwRkJZU3hMUVVGTExGTkJRVmNzUjBGRGJFTXNTMEZCU3l4VlFVRlZMRU5CUVVNc1JVRkRjRUlzVVVGQlYwTXNTMEZCVlN4TFFVRkxMRTFCUVUwc1NVRkJTVVlzUlVGQlVVTXNRMEZCVlN4RlFVTnNSQ3hOUVVGQlJTeEZRVUZQTEV0QlFVc3NTMEZCUzBRc1EwRkJUU3hIUVVOMFFrUXNTVUZEUkN4TlFVRkJSU3hGUVVGUExFdEJRVXNzU1VGQlNTeEhRVU40UWl4RFFVbEJMRU5CUVVNc1MwRkJTMGdzUlVGQlVTeERRVVZXTEVkQlJFRXNTMEZCU3l4UFFVRlRRU3hGUVVOV0xFdEJRVXNzVTBGQlZTeERRVU5tTEV0QlFVc3NVMEZCVnl4SFFVTm9RaXhOUVVGQlJ5eEZRVUZQTEV0QlFVc3NTMEZCU3l4SFFVTnFRaXhMUVVGTExGRkJRVlZJTEVWQlFVOHNUMEZEZEVJc1RVRkRTaXhEUVVOQkxFbEJRVTFxUWl4RlFVRlBjVUlzUjBGQlZVb3NRMEZCVFN4RlFVTTNRaXhIUVVGTGFrSXNSVUZMUVN4SFFVRkpRU3hKUVVGVExGTkJRMlFzUzBGQlN5eFZRVUZaTEVkQlEycENMRXRCUVVzc1UwRkJWeXhIUVVOb1FpeExRVUZMTEV0QlFVOHNZVUZGV0N4RFFVZEVMRTlCUmtFc1MwRkJTeXhMUVVGUFFTeEZRVU5hTEUxQlFVRnZRaXhGUVVGUExFdEJRVXNzUzBGQlN5eEhRVU5VY0VJc1JVRkJUU3hEUVVOV0xFbEJRVXNzVlVGRFJDeExRVUZMTEZWQlFWa3NSMEZEYWtJc1MwRkJTeXhQUVVGVExFVkJRMVlzUzBGQlN5eFhRVU5NTEV0QlFVc3NWVUZCVlN4TFFVRkxMRTlCUVZOcFFpeEZRVUZQTEUxQlFVMHNSVUZET1VNc1RVRkRTaXhKUVVGTExGRkJRMGNzUzBGQlN5eFhRVUZoUVN4RlFVRlBMRU5CUVVNc1NVRkJUU3hOUVVOb1F5eExRVUZMTEZGQlFWVkJMRVZCUVU4c1VVRkRNVUlzVFVGRFNpeEpRVUZMTEcxQ1FVTk1MRWxCUVVzc1owSkJRMHdzU1VGQlN5eGxRVU5ITEV0QlFVc3NXVUZEVEN4TFFVRkxMRkZCUVZWQkxFVkJRVThzVVVGRE1VSXNUVUZEU2l4SlFVRkxMRmRCUTB3c1NVRkJTeXhwUWtGRFJDeFBRVU5LTEZGQlEwa3NTMEZCU3l4VlFVRlpMRVZCUTNwQ0xFTkJRMEVzUzBGQlN5eFJRVUZWUVN4RlFVRlBMRTFCUXpGQ0xFdEJja05YTEVOQlExQXNTVUZCVFVzc1JVRkJWU3h4UWtGQmNVSk1MRU5CUVUwc1IwRkRNME1zVFVGQlFVY3NSVUZCVHl4TFFVRkxMRWxCUVVrc1EwRkJSU3hMUVVGTkxGRkJRVk1zVDBGQlVTeExRVUZMTEU5QlFWRXNVVUZCUVVVc1JVRkJVeXhQUVVGQlRDeERRVUZQTEVOQlFVTXNSMEZEZGtVc1MwRkJTeXhSUVVGVlFTeEZRVUZQTEUxQlF6RkNMRU5CYTBOS0xFTkJSVUVzUTBGQlF5eExRVUZOTEVOQlEwZ3NTMEZCVHl4TFFVRkxMRTFCUVUwc1QwRkJVeXhIUVVOMlFpeE5RVUZCUnl4RlFVRlBMRXRCUVVzc1NVRkJTU3hGUVVONFFpeERRVU5CTEVsQlFVa3NZVUZCWXl4RFFVOWtMRTFCVGxjc1EwRkRVQ3hMUVVGTkxFdEJRVXNzUzBGRFdDeFBRVUZSTEV0QlFVc3NUMEZEWWl4UFFVRlJMRXRCUVVzc1QwRkRZaXhQUVVGUkxFdEJRVXNzVFVGRGFrSXNRMEZGU2l4RFFVTkJMRU5CUVVNc1RVRkJUeXhEUVVOS0xFbEJRVTFITEVWQlFVMHNTMEZCU3l4TFFVRkxMRU5CUVVNc1JVRkRka0lzUjBGQlNTeExRVUZMTEU5QlFWTXNXVUZCWXl4RFFVRkRRU3hIUVVGUFFTeEZRVUZKTEU5QlFWTXNWMEZCV1N4RFFVTTNSQ3hMUVVGUExFdEJRVXNzVFVGQlRTeFBRVUZUTEVkQlEzWkNMRTFCUVVGSUxFVkJRVThzUzBGQlN5eEpRVUZKTEVkQlEzQkNMRXRCUVVzc1RVRkJUU3hMUVVGTExFTkJRMW9zUzBGQlRTeFZRVU5PTEU5QlFWRXNTMEZCU3l4UFFVTmlMRTlCUVZFc1MwRkJTeXhOUVVOcVFpeERRVUZETEVWQlEwUXNUVUZEU2l4RFFVTkJMRWRCUVVrc1EwRkJRMGNzUlVGRFJDeFBRVUZQTEUxQlFVRklMRVZCUVU4c1MwRkJTeXhQUVVGUExFZEJRemxDTEU5QlFWRkhMRVZCUVVrc1MwRkJUU3hEUVVOa0xFbEJRVXNzVjBGRFJDeFBRVUZQTEUxQlFVRklMRVZCUVU4c1MwRkJTeXhUUVVGVFJ5eERRVUZITEVkQlEyNURMRWxCUVVzc1VVRkRUQ3hKUVVGTExGTkJRMHdzU1VGQlN5eDFRa0ZEVEN4SlFVRkxMSFZDUVVORUxFOUJRVThzVFVGQlFVZ3NSVUZCVHl4TFFVRkxMRTlCUVU5SExFTkJRVWNzUjBGRGFrTXNTVUZCU3l4bFFVTkVMRTlCUVU4c1RVRkJRVWdzUlVGQlR5eExRVUZMTEZsQlFWbEhMRU5CUVVjc1IwRkRkRU1zU1VGQlN5eFpRVU5FTEU5QlFVOHNUVUZCUVVnc1JVRkJUeXhMUVVGTExGTkJRVk5ITEVOQlFVY3NSMEZEYmtNc1NVRkJTeXhaUVVORUxFOUJRVThzVFVGQlFVZ3NSVUZCVHl4TFFVRkxMR05CUVdOSExFTkJRVWNzUjBGRGVFTXNTVUZCU3l4clFrRkRSQ3hQUVVGUExFMUJRVUZJTEVWQlFVOHNTMEZCU3l4bFFVRmxSeXhEUVVGSExFZEJRM3BETEVsQlFVc3NWVUZEUkN4UFFVRlBMRTFCUVVGSUxFVkJRVThzUzBGQlN5eFpRVUZaUnl4RFFVRkhMRVZCUXpGRExFTkJSVUVzVFVGQlFVZ3NSVUZCVHl4TFFVRkxMRWxCUVVrc1JVRkRjRUlzUTBGRFFTeExRVUZMU1N4RlFVRkhMRU5CUTBvc1QwRkJUeXhMUVVGTExFMUJRVTBzUzBGQlN5eE5RVUZOTEU5QlFWTkJMRU5CUVVNc1EwRkRNME1zUTBGRFFTeERRVUZETEVsQlFVbERMRVZCUVU4c1EwRkRVaXhKUVVGTmNrSXNSVUZCVVhGQ0xFZEJRVUVzUzBGQlFVRXNSVUZCVXl4TFFVRkxMRTFCUVUwc1NVRkJTU3hGUVVWMFF5eEhRVUZKTEVOQlFVTnlRaXhGUVVWRUxFdEJRVTBzUTBGQlJTeExRVUZOTEZGQlFWTXNUMEZCVVN4TFFVRkxMRTlCUVZFc1QwRkJVU3hIUVVGSkxGRkJSSGhETERaQ1FVTm5SQ3hWUVVVelJDeExRVUZMTEUxQlFVMHNVMEZCVnl4RlFVTXpRaXhOUVVGTlFTeE5RVVZNTEVOQlEwUXNTVUZCVFcxQ0xFVkJRVTBzUzBGQlN5eExRVUZMTEVOQlFVTXNSVUZYZGtJc1QwRldTVzVDTEVWQlFVMHNUMEZCVXl4bFFVVm1RU3hGUVVGTkxFOUJRVk1zVjBGQldXMUNMRVZCUVUxQkxFVkJRVWtzVDBGQlV5eEZRVVY2UTI1Q0xFVkJRVTBzVDBGQlV5eHRRa0ZCY1VKdFFpeEZRVUZKTEU5QlFWTXNZVUZGZEVSdVFpeEZRVUZOTEU5QlFWTXNSMEZGWmtFc1JVRkJUU3hQUVVGVExHMUNRVU5tVVN4SFFVRm5RbElzUTBGQlN5eEZRVU5xUW0xQ0xFVkJRVWtzUzBGQlRTeERRVU5rTEVsQlFVc3NWMEZEUkVFc1JVRkJTU3hOUVVGUmJrSXNSVUZEV2l4TlFVTktMRWxCUVVzc1pVRkRSRzFDTEVWQlFVa3NUVUZCVFN4TFFVRkxia0lzUTBGQlN5eEZRVU53UWl4TlFVTktMRWxCUVVzc1dVRkJZU3hEUVVOa0xFbEJRVTFKTEVWQlFVdGxMRVZCUVVrc1RVRkJUVUVzUlVGQlNTeE5RVUZOTEU5QlFWTXNRMEZCUXl4RlFVTjZReXhIUVVGSlppeEZRVUZITEUxQlFVOHNRMEZEVm1Vc1JVRkJTU3hOUVVGTkxFdEJRVXNzUTBGQlJTeE5RVUZQTEVOQlFVTXNSVUZCUnl4SlFVRkxia0lzUlVGQlR5eEpRVUZMTEVOQlFVTXNRMEZCUlN4RFFVRkRMRVZCUTJwRUxFdEJRVXNzVlVGQldTeEhRVU5xUWl4TlFVTktMRk5CUTFOSkxFVkJRVWNzU1VGRFVrRXNSVUZCUnl4TlFVRlJTaXhOUVVWV0xFTkJRMFFzVDBGQlR5eFBRVUZQU1N4RlFVRkpMRU5CUVVVc1NVRkJTMG9zUlVGQlR5eEpRVUZMTEVOQlFVTXNRMEZCUlN4RFFVRkRMRVZCUTNwRExFdEJRVXNzVlVGQldTeERRVUZEU1N4RlFVRkhMRmxCUTNKQ0xFMUJRMG9zUTBGRFFTeExRVU5LTEVOQlEwRXNTVUZCU3l4WlFVRmhMRU5CUTJRc1NVRkJUVUVzUlVGQlMyVXNSVUZCU1N4TlFVRk5RU3hGUVVGSkxFMUJRVTBzVDBGQlV5eERRVUZETEVWQlEzSkRaaXhGUVVGSExFMUJRMGhsTEVWQlFVa3NUVUZCVFN4TFFVRkxMRU5CUVVVc1RVRkJUeXhEUVVGRExFVkJRVWNzVFVGQlQyNUNMRU5CUVUwc1EwRkJReXhGUVVVeFEwa3NSVUZCUnl4TlFVRlJTaXhGUVVObUxFdEJRMG9zUTBGRFFTeEpRVUZMTEd0Q1FVRnRRaXhEUVVOd1FpeEpRVUZOU1N4RlFVRkxaU3hGUVVGSkxFMUJRVTFCTEVWQlFVa3NUVUZCVFN4UFFVRlRMRU5CUVVNc1JVRkRja01zUTBGQlEyWXNSMEZCVFVFc1JVRkJSeXhOUVVOV1pTeEZRVUZKTEUxQlFVMHNTMEZCU3l4RFFVRkZMRTFCUVU4c1EwRkJReXhGUVVGSExFbEJRVXR1UWl4RlFVRlBMRWxCUVVzc1EwRkJReXhEUVVGRkxFTkJRVU1zUlVGRE5VTkpMRVZCUVVjc1NVRkRVa0VzUlVGQlJ5eE5RVUZSU2l4RlFVVllMRTlCUVU4c1QwRkJUMGtzUlVGQlNTeERRVUZGTEVsQlFVdEtMRVZCUVU4c1NVRkJTeXhEUVVGRExFTkJRVVVzUTBGQlF5eEZRVU0zUXl4TlFVTktMRU5CUlVFc1VVRkRTU3hOUVVGQlowSXNSVUZCVHl4TFFVRkxMRWxCUVVrc1IwRkRhRUlzVFVGQlFVRXNSVUZCVHl4TFFVRkxMRWxCUVVsb1FpeERRVUZMTEVWQlF6ZENMRU5CUTBFc1NVRkJTMjFDTEVWQlFVa3NUMEZCVXl4WlFVTmtRU3hGUVVGSkxFOUJRVk1zWVVGRFlrRXNSVUZCU1N4UFFVRlRMR1ZCUTFwdVFpeEZRVUZOTEU5QlFWTXNZVUZCWlVFc1JVRkJUU3hQUVVGVExHRkJRV01zUTBGRE5VUXNTVUZCVFhOQ0xFVkJRVTkwUWl4RlFVRk5MRTFCUVUxQkxFVkJRVTBzVFVGQlRTeFBRVUZUTEVOQlFVTXNSVUZETTBOelFpeEhRVU5CTEVOQlFVTkJMRVZCUVVzc1MwRkRUaXhEUVVGRFFTeEZRVUZMTEU5QlEwNUJMRVZCUVVzc1RVRkJUU3hQUVVGVExFZEJRM0JDZUVJc1IwRkJhMEozUWl4RlFVRkxMRXRCUVVzc1NVRkJUU3hMUVVOcVEzUkNMRVZCUVUwc1UwRkJWeXhIUVVOa2MwSXNSVUZCU3l4TlFVRk5MRTFCUVUxRExFZEJRVTFCTEVWQlFVY3NUMEZCVXl4WFFVRmhRU3hGUVVGSExFOUJRVk4yUWl4RlFVRk5MRTFCUVUwc1MwRkRlRVZ0UWl4RlFVRkpMRTlCUVZNc1YwRkRZa0VzUlVGQlNTeEpRVUZOUnl4RlFVRkxMRTFCUldaSUxFVkJRVWtzVFVGQlRTeExRVUZMTEVOQlFVVXNUVUZCVDBjc1JVRkJTeXhMUVVGTkxFTkJRVU1zUlVGRGVFTjBRaXhGUVVGTkxFMUJRVTBzVDBGQlR5eEhRVUZKTEVOQlFVTXNSVUZGYUVNc1EwRkRTaXhEUVVOS0xFTkJRMEVzUTBGQlF5eFJRVUZUTEVOQlEwNHNUMEZCVVN4TFFVRkxMRXRCUVUwc1EwRkRaaXhKUVVGTExHbENRVU5FTEV0QlFVMHNRMEZCUlN4TFFVRk5MRmxCUVdFc1QwRkJVU3hMUVVGTExFOUJRVkVzVDBGQlVTeExRVUZMTEUxQlFVOHNSVUZEY0VVc1QwRkRTaXhKUVVGTExHdENRVU5NTEVsQlFVc3NVVUZEVEN4SlFVRkxMRlZCUTB3c1NVRkJTeXhWUVVORUxFMUJRVTBzUzBGQlN5eFpRVU5ZTEU5QlEwb3NTVUZCU3l4WFFVTk1MRWxCUVVzc1dVRkJZU3hEUVVOa0xFbEJRVTEzUWl4RlFVRk5MRU5CUTFJc1MwRkJUU3hYUVVOT0xFOUJRVkVzUzBGQlN5eFBRVU5pTEUxQlFVOHNRMEZCUXl4RFFVTmFMRVZCUTBrc1MwRkJTeXhQUVVGVExHRkJRMlJCTEVWQlFVa3NUVUZCVFN4TFFVRkxMRXRCUVVzc1YwRkJWeXhGUVVOdVF5eExRVUZMTEUxQlFVMHNTMEZCUzBFc1EwRkJSeXhGUVVOdVFpeE5RVU5LTEVOQlEwb3NRMEZEUVN4TFFVRk5MRU5CUTBZc1MwRkJUU3hSUVVOT0xFOUJRVkVzUzBGQlN5eFBRVU5pTEZGQlFWTXNZMEZCWXl4TFFVRkxMRWxCUVVrc2QwSkJRMmhETEU5QlFWRXNTMEZCU3l4TlFVTnFRaXhEUVVOS0xFTkJRMEVzUTBGQlF5eFRRVUZUUVN4RlFVRkxMRU5CUTFnc1IwRkJTVUVzUlVGQlNTeE5RVU5LTEU5QlFVOHNUVUZCUVZJc1JVRkJUeXhMUVVGTExGRkJRVkZSTEVOQlFVY3NSMEZEYkVNc1QwRkJVU3hMUVVGTExFdEJRVTBzUTBGRFppeEpRVUZMTEZsQlFXRXNRMEZEVmpGQ0xFZEJRV3RDTUVJc1JVRkJTU3hMUVVGTExFbEJRVTBzU1VGRGFrTXNUVUZCUVZJc1JVRkJUeXhMUVVGTExFbEJRVWtzUjBGRGFFSXNUVUZCUVVFc1JVRkJUeXhMUVVGTExFdEJRVXNzU1VGSGFrSlJMRVZCUVVrc1RVRkJUU3hMUVVGTExFdEJRVXNzVjBGQlZ5eEZRVU51UXl4TlFVTktMRU5CUTBFc1NVRkJTeXhUUVVOTUxFbEJRVXNzVFVGRFRDeEpRVUZMTEZGQlEwd3NTVUZCU3l4VlFVTk1MRWxCUVVzc1ZVRkRSRUVzUlVGQlNTeE5RVUZOTEV0QlFVc3NTMEZCU3l4WFFVRlhMRVZCUXk5Q0xFMUJRMUlzUTBGRFFTeEpRVUZOUXl4RlFVRkxMRXRCUVVzc1owSkJRV2RDUkN4RFFVRkhMRVZCUXk5Q1F5eEZRVU5CTEV0QlFVc3NUVUZCVFN4TFFVRkxRU3hEUVVGRkxFVkJSV3hDTEV0QlFVMHNRMEZEUml4TFFVRk5MRkZCUTA0c1QwRkJVU3hMUVVGTExFOUJRMklzVVVGQlV5eGpRVUZqTEV0QlFVc3NTVUZCU1N3d1FrRkRhRU1zVDBGQlVTeExRVUZMTEUxQlEycENMRU5CUlZJc1EwRkRRU3hEUVVGRExFOUJRVTlETEVWQlFWRXNRMEZEV2l4SFFVRkpMRXRCUVVzc1QwRkJVeXhuUWtGQmFVSXNRMEZETDBJc1NVRkJUWEJDTEVWQlFVOU1MRWRCUVdFc1MwRkJTeXhMUVVGTExFTkJRVU1zUTBGQlF5eEZRVU5vUXpCQ0xFVkJRVkYwUWl4SFFVRnpRa01zUTBGQlNTeEZRVU53UTNOQ0xFVkJRMEZHTEVWQlFVOHNTMEZEVUVVc1JVRkJUVVlzUlVGQlR5eEpRVU5pUlN4RlFVRkpMRXRCUVVzc1MwRkJTeXhYUVVGWExFVkJRM3BDTEU5QlFVOUdMRVZCUVU4c1MwRkhaRVVzUlVGQlRTeERRVUZETEV0QlFVc3NWMEZCVnl4RlFVTXpRaXhKUVVGTlF5eEZRVUZOTEVOQlExSXNTMEZCVFN4WlFVTk9MRTlCUVZGSUxFVkJRVThzVDBGRFppeFBRVUZSUVN4RlFVRlBMRTlCUTJZc1RVRkJUeXhEUVVGRExFTkJRVVVzVFVGQlFVTXNSVUZCVHl4SlFVRkxSQ3hGUVVGUkxFbEJRVUZGTEVOQlFVa3NRMEZCUXl4RFFVTjJReXhGUVVOQkxFdEJRVXNzVlVGQldTeEhRVU5xUWl4TFFVRkxMRTFCUVUwc1MwRkJTeXhOUVVGTkxFOUJRVk1zUTBGQlF5eEZRVUZKUXl4RFFVTjRReXhOUVVWSkxFMUJRVUZpTEVWQlFVOHNTMEZCU3l4UlFVRlJWU3hEUVVGTkxFVkJRMnhETEVOQlEwRXNRMEZCUXl4WlFVRlpRU3hGUVVGUkxFTkJRMnBDTEU5QlFWRXNTMEZCU3l4TFFVRk5MRU5CUTJZc1NVRkJTeXhSUVVOTUxFbEJRVXNzVlVGRFRDeEpRVUZMTEZWQlEwUkJMRVZCUVU4c1RVRkJUU3hMUVVGTExFdEJRVXNzVjBGQlZ5eEZRVU5zUXl4UFFVTktMRWxCUVVzc1UwRkxSQ3hIUVVwQlFTeEZRVUZQTEU5QlFWTXNTMEZCU3l4UFFVVnlRaXhMUVVGTExGVkJRVmtzUjBGRGFrSXNTMEZCU3l4UFFVRlRMRVZCUTFZc1MwRkJTeXhWUVVGWExFTkJRMmhDTEVsQlFVbEpMRVZCUVVzc1MwRkJTeXhQUVVGUExGRkJRVkU3UVVGQlFTeERRVUZKTEVWQlFVa3NSVUZEY2tNc1MwRkJUMEVzU1VGQlR5eEhRVU5XTEV0QlFVc3NWVUZCVlN4TFFVRkxMRTlCUVZOQkxFTkJRVVVzUlVGREwwSkJMRVZCUVVzc1MwRkJTeXhQUVVGUExGRkJRVkU3UVVGQlFTeEZRVUZOUVN4RFFVRkZMRVZCUVVrc1EwRkZOME1zUTBGRFFTeE5RVUZCWkN4RlFVRlBMRXRCUVVzc1NVRkJTU3hIUVVOb1FpeE5RVVZLTEZGQlEwa3NUVUZCUVVFc1JVRkJUeXhMUVVGTExFbEJRVWtzUjBGRGFFSXNUVUZCUVVFc1JVRkJUeXhMUVVGTExFdEJRVXNzUlVGRGVrSXNRMEZEU2l4RFFVTkJMRU5CUVVNc1UwRkJVMkVzUlVGQlN5eERRWFJrYmtJc1NVRkJRVEZDTEVWQmRXUlJMRWxCUVUxRExFVkJRVXQ1UWl4RlFVRkpMRTFCUVUxQkxFVkJRVWtzVFVGQlRTeFBRVUZUTEVOQlFVTXNSVUZGZWtNc1QwRkJVU3hMUVVGTExFdEJRVTBzUTBGRFppeEpRVUZMTEZWQlJVUXNSMEZFUVN4TFFVRkxMRlZCUVZrc1IwRkRZbnBDTEVWQlFVY3NUVUZCVHl4RFFVTldMRWxCUVUweVFpeEZRVUZOTEZGQlFWTXpRaXhGUVVGSExFMUJRVkZCTEVWQlFVY3NUVUZCVFN4SlFVRk5MRTlCUTNwRGEwSXNSVUZCVHl4TlFVRk5MRkZCUVZGVExFTkJRVWNzUlVGQlNVRXNSVUZCU1VFc1JVRkJTU3hQUVVGVExFTkJRVU1zUlVGQlNTeFJRVU53UkZRc1IwRkJRU3haUVVGQlFTeEZRVUZOTEZGQlFWTXNWVUZEWmxNc1IwRkJRU3hOUVVGQlFTeEZRVUZMTEV0QlFVc3NTMEZCU3l4aFFVVm1SaXhGUVVGSkxFMUJRVTBzUzBGQlN5eERRVUZGTEUxQlFVOHNRMEZCUXl4TFFVRkxMRmRCUVZjc1EwRkJSU3hEUVVGRExFTkJRM0JFTEUxQlExTjZRaXhGUVVGSExFbEJRMUpCTEVWQlFVY3NTVUZCU1N4TFFVRkxMRXRCUVVzc1YwRkJWeXhGUVVjMVFrRXNSVUZCUnl4TlFVRk5MRXRCUVVzc1MwRkJTeXhYUVVGWExFVkJSV3hETEU5QlEwb3NTVUZCU3l4UlFVTk1MRWxCUVVzc1ZVRkRSQ3hIUVVGSlFTeEZRVUZITEUxQlEwaDVRaXhGUVVGSkxFMUJRVTBzUzBGQlN5eERRVUZGTEUxQlFVOHNRMEZCUXl4TFFVRkxMRmRCUVZjc1EwRkJSU3hEUVVGRExGVkJSWFpEZWtJc1JVRkJSeXhKUVVOU1FTeEZRVUZITEVsQlFVa3NTMEZCU3l4TFFVRkxMRmRCUVZjc1RVRkZNMElzUTBGRFJDeEhRVUZKTEV0QlFVc3NhMEpCUVd0Q1FTeEZRVUZITEUxQlFVOTVRaXhGUVVGSkxFMUJRVTBzUlVGQlJ5eERRVU01UXl4SlFVRk5ka0lzUlVGQlQzVkNMRVZCUVVrc1RVRkJUVUVzUlVGQlNTeE5RVUZOTEU5QlFWTXNRMEZCUXl4RlFVTnlRMFVzUjBGQlRUVkNMRVZCUVVGSExFZEJRVUVzV1VGQlFVRXNSVUZCVFN4UlFVRk9MRmxCUVVGSUxFVkJRV0VzU1VGRGVrSXNSMEZCU1N4TlFVRk5MRkZCUVZFMFFpeERRVUZITEVWQlFVY3NRMEZEY0VJc1RVRkJUU3hWUVVGVkxFdEJRVXNzVFVGQlRVRXNSVUZCU3pOQ0xFVkJRVWNzUzBGQlN5eEZRVU40UXpKQ0xFVkJRVWtzUzBGQlN5eExRVUZMTEZkQlFWY3NSVUZEZWtKR0xFVkJRVWtzVFVGQlRTeEpRVUZKTEVWQlEyUXNUVUZEU2l4RFFVTktMRU5CUTBGNlFpeEZRVUZITEUxQlFVMHNTMEZCU3l4TFFVRkxMRmRCUVZjc1EwRkRiRU1zUTBGRFFTeE5RVU5TTEVOQlEwRXNSMEZCU1N4TFFVRkxMRkZCUVZWNVFpeEZRVUZKTEU5QlFWRXNRMEZETTBJc1NVRkJUVWNzUlVGQll5eERRVUZETEV0QlFVc3NWMEZCWVN4TFFVRkxMRk5CUVZkSUxFVkJRVWtzVDBGRGNrUkpMRVZCUVdGRUxFbEJRMlExUWl4RlFVRkhMRXRCUVU5QkxFVkJRVWNzWTBGRFpDeExRVUZMTEU5QlFWTXNaVUZGWkhWQ0xFVkJRVkVzUTBGQlF5eEZRVU5pTEVkQlFVbE5MRWRCUVdNM1FpeEZRVUZITEV0QlFVOHNRMEZCUTBFc1JVRkJSeXhOUVVGUExFTkJRMjVETEVsQlFVMHdRaXhGUVVGTExFTkJRVU1zUlVGRFdpeFJRVUZUYWtNc1JVRkJTU3hGUVVGSFFTeEZRVUZKVHl4RlFVRkhMRWxCUVVrc1QwRkJVU3hGUVVGRlVDeEZRVUZITEVOQlEzQkRMRWxCUVUwd1FpeEZRVUZMYmtJc1JVRkJSeXhKUVVGSlVDeERRVUZETEVWQlEyNUNMRTlCUVZFd1FpeEZRVUZITEV0QlFVMHNRMEZEWWl4SlFVRkxMRlZCUTBSUExFVkJRVWNzUzBGQlMycERMRU5CUVVNc1JVRkRWQ3hOUVVOS0xFbEJRVXNzVVVGRFJDeE5RVU5LTEVsQlFVc3NWVUZEUnpCQ0xFVkJRVWNzVDBGQlUwMHNSVUZCU1N4VFFVTm9Ra01zUlVGQlJ5eFBRVUZUTEVkQlEyaENMRTFCUTBvc1VVRkRTVUVzUlVGQlJ5eFBRVUZUTEVOQlEzQkNMRU5CUTBvc1EwRkRTVUVzUlVGQlJ5eFJRVUZWTEVsQlEySklMRVZCUVZGMlFpeEZRVUZITEVsQlFVa3NUMEZCVHpCQ0xFVkJRVWNzUTBGQlF5eERRVUZETEVWQlEyNURMRU5CUTBFc1QwRkJVU3hMUVVGTExFdEJRVTBzUTBGRFppeEpRVUZMTEZOQlEwd3NTVUZCU3l4TlFVTkhSeXhIUVVGak4wSXNSVUZCUnl4UFFVTnFRblZDTEVWQlFVMHNTMEZCU3l4TFFVRkxMRmRCUVZjc1JVRkRNMEpGTEVWQlFVa3NUVUZCVFN4TFFVRkxMRU5CUVVVc1RVRkJRVVlzUTBGQlRTeERRVUZETEVWQlEzaENMRXRCUVVzc1ZVRkJXU3hKUVVWYWRrSXNSVUZCUnl4SlFVTlNRU3hGUVVGSExFbEJRVWtzUzBGQlN5eExRVUZMTEZkQlFWY3NSVUZITlVKQkxFVkJRVWNzVFVGQlRTeExRVUZMTEV0QlFVc3NWMEZCVnl4RlFVVnNReXhQUVVOS0xFbEJRVXNzYlVKQlEwY3NRMEZCUTBFc1JVRkJSeXhMUVVGUExFTkJRVU5CTEVWQlFVY3NZVUZEWmtFc1JVRkJSeXhOUVVGTkxFdEJRVXNzUzBGQlN5eFhRVUZYTEVWQlF6bENRU3hGUVVGSExGbEJRV01zU1VGRldqWkNMRWRCUVdNM1FpeEZRVUZITEU5QlEzUkNkVUlzUlVGQlRTeExRVUZMTEV0QlFVc3NWMEZCVnl4RlFVTXpRa1VzUlVGQlNTeE5RVUZOTEV0QlFVc3NRMEZCUlN4TlFVRkJSaXhGUVVGUExGbEJRV0VzUlVGQlN5eERRVUZETEVkQlJ6TkRMRXRCUVVzc1RVRkJUU3hMUVVGTExFTkJRMW9zUzBGQlRTeFpRVU5PTEU5QlFWRXNTMEZCU3l4UFFVTmlMRTlCUVZFc1MwRkJTeXhQUVVOaUxFMUJRVThzUTBGQlF5eERRVUZGTEUxQlFVOHNRMEZCUXl4TFFVRkxMRmRCUVZjc1JVRkJSeXhaUVVGaExFVkJRVXNzUTBGQlF5eERRVU0xUkN4RFFVRkRMRVZCUlV3c1MwRkJTeXhWUVVGWkxFZEJRMnBDTEU5QlEwb3NTVUZCU3l4blFrRkRSQ3hIUVVGSmRrSXNSVUZCUnl4WlFVTklMRWRCUVV0QkxFVkJRVWNzU1VGalNDeEhRVUZKUVN4RlFVRkhMRTFCUTFKNVFpeEZRVUZKTEUxQlFVMHNTMEZCU3l4RFFVRkZMRTFCUVU4c1EwRkJReXhGUVVGSExFbEJRVXNzUzBGQlRTeEpRVUZMTEVOQlFVTXNTMEZCU3l4WFFVRlhMRU5CUVVVc1EwRkJReXhWUVVVelJHNURMRWRCUVdOVkxFVkJRVWNzU1VGQlN5eGxRVUZsTEVWQlF6RkRMRXRCUVVzc1RVRkJUU3hMUVVGTExFTkJRMW9zUzBGQlRTeFpRVU5PTEU5QlFWRXNTMEZCU3l4UFFVTmlMRTlCUVZFc1MwRkJTeXhQUVVOaUxFMUJRVThzUTBGQlF5eERRVUZGTEUxQlFVRjFRaXhGUVVGUExFbEJRVXNzUzBGQlRTeEpRVUZMTEVOQlFVTXNTMEZCU3l4WFFVRlhMRU5CUVVVc1EwRkJReXhEUVVONlJDeERRVUZETEZWQlJVazFRaXhIUVVGWlN5eEZRVUZITEVkQlFVY3NSMEZEZGtJc1EwRkJRMVlzUjBGQlkxVXNSVUZCUnl4SlFVRkxMRk5CUVZNc1JVRkJSeXhEUVVOdVF5eEpRVUZOZFVJc1JVRkJVWFJDTEVkQlFYTkNSQ3hGUVVGSExFdEJRVXNzUlVGRGRFTTRRaXhGUVVGTk9VSXNSVUZCUnl4SlFVTlVkMElzUlVGQlRYaENMRVZCUVVjc1NVRkRabmRDTEVWQlFVa3NTMEZCU3l4TFFVRkxMRmRCUVZjc1JVRkZla0lzVDBGQlQzaENMRVZCUVVjc1NVRkZWaXhQUVVGUFFTeEZRVUZITEVsQlExWXNTMEZCU3l4TlFVRk5MRXRCUVVzc1EwRkRXaXhMUVVGTkxGbEJRMDRzVDBGQlVTeExRVUZMTEU5QlEySXNUMEZCVVN4TFFVRkxMRTlCUTJJc1RVRkJUeXhEUVVGRExFTkJRVVVzVFVGQlFYVkNMRVZCUVU4c1NVRkJRVThzUlVGQlN5eEpRVUZCVGl4RFFVRkpMRU5CUVVNc1EwRkRMMElzUTBGQlF5eERRVU5NTEUxQlExTkVMRVZCUVUwc1QwRkJVeXhGUVVWd1FuWkNMRVZCUVVjc1NVRkJUVUVzUlVGQlJ5eEpRVUZKTEU5QlFVOTFRaXhGUVVGUExFdEJRVXNzVjBGQlZ5eEZRVWM1UTNaQ0xFVkJRVWNzU1VGQlNTeExRVUZMTEV0QlFVc3NWMEZCVnl4VlFUbERlRUpXTEVkQlFXTlZMRVZCUVVjc1RVRkJUeXhUUVVGVExFVkJRMnBETEU5QlFVOHNUMEZCVDBFc1JVRkJTU3hEUVVGRkxFbEJRVXNzUzBGQlRTeEpRVUZMTEVOQlFVTXNTMEZCU3l4WFFVRlhMRU5CUVVVc1EwRkJReXhOUVVWMlJDeERRVU5FTEVsQlFVMTFRaXhGUVVGUmRFSXNSMEZCYzBKRUxFVkJRVWNzUzBGQlN5eEZRVU0xUXl4TFFVRkxMRTFCUVUwc1MwRkJTeXhEUVVOYUxFdEJRVTBzV1VGRFRpeFBRVUZSTEV0QlFVc3NUMEZEWWl4UFFVRlJMRXRCUVVzc1QwRkRZaXhOUVVGUExFTkJRVU1zUTBGQlJTeE5RVUZCZFVJc1JVRkJUeXhKUVVGTExFdEJRVTBzU1VGQlN5eERRVUZETEV0QlFVc3NWMEZCVnl4RFFVRkZMRU5CUVVNc1EwRkRla1FzUTBGQlF5eERRVU5NTEUxQmRVTkRka0lzUlVGQlJ5eEpRVWREUVN4RlFVRkhMRTlCUVZNMlFpeEZRVU5xUWtvc1JVRkJTU3hOUVVGTkxFdEJRVXNzUTBGQlJTeE5RVUZCUml4RlFVRlBMRWxCUVVzc1MwRkJUU3hKUVVGTExFTkJRVU1zUzBGQlN5eFhRVUZYTEVOQlFVVXNRMEZCUXl4RlFVVjJSR3BETEVkQlFXTlZMRVZCUVVjc1NVRkJTeXhsUVVGbExFVkJRekZETEV0QlFVc3NUVUZCVFN4TFFVRkxMRU5CUTFvc1MwRkJUU3haUVVOT0xFOUJRVkVzUzBGQlN5eFBRVU5pTEU5QlFWRXNTMEZCU3l4UFFVTmlMRTFCUVU4c1EwRkJReXhEUVVGRkxFMUJRVThzUTBGQlF5eEZRVUZITEVsQlFVc3NTMEZCVFN4SlFVRkxMRU5CUVVNc1MwRkJTeXhYUVVGWExFTkJRVVVzUTBGQlF5eERRVU0zUkN4RFFVRkRMRVZCUjBSQkxFVkJRVWNzU1VGQlNTeExRVUZMTEV0QlFVc3NWMEZCVnl4RlFXUTFRaXhQUVVGUExFOUJRVTlCTEVWQlFVa3NRMEZCUlN4SlFVRkxMRXRCUVUwc1NVRkJTeXhEUVVGRExFdEJRVXNzVjBGQlZ5eERRVUZGTEVOQlFVTXNSVUZwUW1oRkxFdEJRVXNzVlVGQldTeEhRVU5xUWl4UFFVTktMRWxCUVVzc1VVRkRUQ3hKUVVGTExGTkJRMHdzU1VGQlN5eDFRa0ZEVEN4SlFVRkxMSFZDUVVGM1FpeERRVU42UWl4SlFVRk5LMElzUlVGQlN5eExRVUZMTEZkQlFWY3NTMEZCU3l4SlFVRkpMRVZCUTJoRFJpeEhRVUZqTjBJc1JVRkJSeXhQUVVOcVFubENMRVZCUVVrc1RVRkJUU3hMUVVGTExFTkJRVVVzVFVGQlFVWXNSVUZCVHl4SlFVRkxVU3hGUVVGSkxFbEJRVXNzUTBGQlF5eERRVUZGTEVOQlFVTXNSVUZETVVNc1MwRkJTeXhWUVVGWkxFbEJSVm92UWl4RlFVRkhMRWxCUTFJc1MwRkJTeXhOUVVGTkxFdEJRVXNyUWl4RFFVRkZMRWRCUjJ4Q0xFOUJRVThzVDBGQlR5OUNMRVZCUVVrc1EwRkJSU3hKUVVGTEswSXNSVUZCU1N4SlFVRkxMRU5CUVVNc1EwRkJSU3hEUVVGRExFVkJRM1JETEV0QlFVc3NWVUZCV1N4SlFVVnlRaXhOUVVOS0xFTkJRMEVzVVVGQlV5eERRVU5NTEVsQlFVMVdMRVZCUVVzc1MwRkJTeXhuUWtGQlowSkpMRU5CUVVjc1JVRkRia01zUjBGQlNVb3NSVUZCU1N4RFFVTkJUeXhIUVVGbFVDeEZRVUZITEU5QlFWTXNZVUZETTBKSkxFVkJRVWtzVFVGQlRTeExRVUZMTEVOQlFVVXNUVUZCUVVZc1EwRkJUU3hEUVVGRExFVkJSVFZDTEV0QlFVc3NUVUZCVFN4TFFVRkxSaXhEUVVGRkxFVkJRMnhDTEUxQlEwb3NRMEZEU2l4RFFVTktMRU5CUTBvc1EwRkRRU3hOUVVGQlZDeEZRVUZQTEV0QlFVc3NTVUZCU1N4SFFVTm9RaXhOUVVGQlFTeEZRVUZQTEV0QlFVc3NTMEZCU3l4RlFVTnlRaXhEUVVOQkxFTkJRVU1zWTBGQlkyOUNMRVZCUVVzc1EwRXhjVUo0UWl4SlFVRkJha01zUlVFeWNVSlJMRWxCUVUxRExFVkJRVXRuUXl4RlFVRkpMRTFCUVUxQkxFVkJRVWtzVFVGQlRTeFBRVUZUTEVOQlFVTXNSVUZEZWtNc1QwRkJVU3hMUVVGTExFdEJRVTBzUTBGRFppeEpRVUZMTEZWQlEwUXNSMEZCU1doRExFVkJRVWNzVFVGQlR5eERRVU5XTEVsQlFVMHlRaXhGUVVGTkxGRkJRVk16UWl4RlFVRkhMRTFCUVZGQkxFVkJRVWNzVFVGQlRTeEpRVUZOTEU5QlEzcERhMElzUlVGQlR5eE5RVUZOTEZGQlFWRlRMRU5CUVVjc1JVRkJTVUVzUlVGQlNVRXNSVUZCU1N4UFFVRlRMRU5CUVVNc1JVRkJTU3hSUVVOd1JGUXNSMEZCUVN4WlFVRkJRU3hGUVVGTkxGRkJRVk1zVlVGRFpsTXNSMEZCUVN4TlFVRkJRU3hGUVVGTExFdEJRVXNzUzBGQlN5eGhRVVZtU3l4RlFVRkpMRTFCUVUwc1MwRkJTeXhEUVVGRkxFMUJRVThzUTBGQlF5eExRVUZMTEZkQlFWY3NRMEZCUlN4RFFVRkRMRU5CUTNCRUxFMUJSVWxvUXl4RlFVRkhMRTFCUVUwc1MwRkJTeXhMUVVGTExGZEJRVmNzUlVGRGJFTXNUMEZEU2l4SlFVRkxMRkZCUTB3c1NVRkJTeXhWUVVORUxFZEJRVWxCTEVWQlFVY3NUVUZEU0dkRExFVkJRVWtzVFVGQlRTeExRVUZMTEVOQlFVVXNUVUZCVHl4RFFVRkRMRXRCUVVzc1YwRkJWeXhEUVVGRkxFTkJRVU1zVFVGRE0wTXNRMEZEUkN4SFFVRkpMRXRCUVVzc2EwSkJRV3RDYUVNc1JVRkJSeXhOUVVGUFowTXNSVUZCU1N4TlFVRk5MRVZCUVVjc1EwRkRPVU1zU1VGQlRUbENMRVZCUVU4NFFpeEZRVUZKTEUxQlFVMUJMRVZCUVVrc1RVRkJUU3hQUVVGVExFTkJRVU1zUlVGRGNrTk1MRWRCUVUwMVFpeEZRVUZCUnl4SFFVRkJMRmxCUVVGQkxFVkJRVTBzVVVGQlRpeFpRVUZCU0N4RlFVRmhMRWxCUTNwQ0xFZEJRVWtzVFVGQlRTeFJRVUZSTkVJc1EwRkJSeXhGUVVGSExFTkJRM0JDTEUxQlFVMHNWVUZCVlN4TFFVRkxMRTFCUVUxQkxFVkJRVXN6UWl4RlFVRkhMRXRCUVVzc1JVRkRlRU15UWl4RlFVRkpMRXRCUVVzc1MwRkJTeXhYUVVGWExFVkJRM3BDU3l4RlFVRkpMRTFCUVUwc1NVRkJTU3hGUVVOa0xFMUJRMG9zUTBGRFNpeERRVU5CYUVNc1JVRkJSeXhOUVVGTkxFdEJRVXNzUzBGQlN5eFhRVUZYTEVOQlEyeERMRU5CUTBFc1QwRkRTaXhKUVVGTExGTkJRMHdzU1VGQlN5eE5RVU5FTEVkQlFVbEJMRVZCUVVjc1QwRkJVeXhMUVVGTExGRkJRVlZuUXl4RlFVRkpMRTlCUXk5Q0xFMUJRMHBvUXl4RlFVRkhMRTFCUVUwc1MwRkJTeXhMUVVGTExGZEJRVmNzUlVGRE9VSXNUMEZEU2l4SlFVRkxMR1ZCUTBRc1IwRkJTU3hMUVVGTExGTkJRVmRuUXl4RlFVRkpMRTlCUTNCQ0xFMUJRMEZvUXl4RlFVRkhMRTlCUVZOV0xFZEJRV05WTEVWQlFVY3NUVUZCVHl4alFVRmpMRVZCUTJ4RVowTXNSVUZCU1N4TlFVRk5MRXRCUVVzc1EwRkJSU3hOUVVGUExFTkJRVU1zUzBGQlN5eFhRVUZYTEVOQlFVVXNRMEZCUXl4RlFVVTFRMmhETEVWQlFVY3NUVUZCVFN4TFFVRkxMRXRCUVVzc1YwRkJWeXhGUVVOc1F5eE5RVU5TTEVOQlEwRXNSMEZCU1N4TFFVRkxMRTlCUVZOblF5eEZRVUZKTEU5QlFWRXNRMEZETVVJc1NVRkJUVmdzUlVGQlN5eExRVUZMTEdkQ1FVRm5RbGNzUTBGQlJ5eEZRVU51UXl4SFFVRkpXQ3hGUVVGSkxFTkJRMG9zUzBGQlN5eE5RVUZOTEV0QlFVdEJMRU5CUVVVc1JVRkRiRUlzVFVGRFNpeERRVU5LTEVOQlEwRXNUVUZCUVZRc1JVRkJUeXhMUVVGTExFbEJRVWtzUjBGRGFFSXNUVUZCUVVFc1JVRkJUeXhMUVVGTExFdEJRVXNzUlVGRGNrSXNRMEZEUVN4RFFVRkRMR1ZCUVdWUUxFVkJRVWtzUTBGRGFFSXNTVUZCVFV3c1JVRkJTMHNzUlVGQlJ5eE5RVUZOUVN4RlFVRkhMRTFCUVUwc1QwRkJVeXhEUVVGRExFVkJRM1pETEVkQlFVa3NTMEZCU3l4UFFVRlRMR2xDUVVGclFpeERRVU5vUXl4SlFVRkpWU3hGUVVOS0xFZEJRMGtzVFVGQlFVZ3NSVUZCVHl4TFFVRkxMRWxCUVVrc1IwRkRhRUpITEVWQlFVMHNTMEZCU3l4TFFVRkxMRU5CUVVNc1VVRkRXa0VzUjBGQlQwRXNSVUZCU1N4UFFVRlRMR3RDUVVOcVF5eFRRVU5UVml4RlFVRkhMRWxCUVVrc1UwRkJWeXhGUVVGSExFTkJRekZDTEU5QlFWRXNTMEZCU3l4TFFVRk5MRU5CUTJZc1NVRkJTeXhSUVVOTUxFbEJRVXNzYlVKQlEwY3NRMEZCUTB3c1IwRkJUVUVzUlVGQlJ5eEpRVU5XU3l4RlFVRkhMRTFCUVUwc1MwRkJTeXhEUVVGRkxFMUJRVThzUTBGQlF5eExRVUZMTEZkQlFWY3NRMEZCUlN4RFFVRkRMRVZCUlRORFRDeEZRVUZITEUxQlFVMHNTMEZCU3l4TFFVRkxMRmRCUVZjc1JVRkRiRU1zVDBGRFNpeEpRVUZMTEdkQ1FVTkhMRU5CUVVOQkxFZEJRVTFCTEVWQlFVY3NUVUZEVmtzc1JVRkJSeXhOUVVGTkxFdEJRVXNzUTBGQlJTeE5RVUZQTEVOQlFVTXNSVUZCUnl4SlFVRkxMRXRCUVUwc1NVRkJTeXhEUVVGRExFdEJRVXNzVjBGQlZ5eERRVUZGTEVOQlFVTXNSVUZETVVSTUxFVkJRVWNzU1VGRFVrRXNSVUZCUnl4SlFVRkpMRXRCUVVzc1MwRkJTeXhYUVVGWExFVkJSVFZDTEU5QlFVOHNUMEZCVDBFc1JVRkJTU3hEUVVGRkxFbEJRVXNzUzBGQlRTeEpRVUZMTEVOQlFVTXNTMEZCU3l4WFFVRlhMRU5CUVVVc1EwRkJReXhGUVVNMVJDeFBRVU5LTEVsQlFVc3NVVUZEVEN4SlFVRkxMRlZCUTB3c1NVRkJTeXhWUVVOTUxFbEJRVXNzVTBGRFRDeEpRVUZMTEUxQlEwY3NRMEZCUTBFc1IwRkJUVUVzUlVGQlJ5eE5RVU5XU3l4RlFVRkhMRTFCUVUwc1MwRkJTeXhEUVVGRkxFMUJRVThzUTBGQlF5eExRVUZMTEZkQlFWY3NRMEZCUlN4RFFVRkRMRVZCUTNSRFRDeEZRVUZITEVsQlExSkJMRVZCUVVjc1NVRkJTU3hMUVVGTExFdEJRVXNzVjBGQlZ5eEZRVVUxUWtFc1JVRkJSeXhOUVVGTkxFdEJRVXNzUzBGQlN5eFhRVUZYTEVWQlEyeERMRTlCUTBvc1NVRkJTeXhSUVVOTUxFbEJRVXNzVTBGRFRDeEpRVUZMTEhWQ1FVTk1MRWxCUVVzc2RVSkJRWGRDTEVOQlEzcENMRWxCUVUwclFpeEZRVUZMTEV0QlFVc3NWMEZCVnl4TFFVRkxMRWxCUVVrc1JVRkRhRU1zUTBGQlF5OUNMRWRCUVUxQkxFVkJRVWNzVFVGRFZrc3NSVUZCUnl4TlFVRk5MRXRCUVVzc1EwRkJSU3hOUVVGUExFTkJRVU1zUlVGQlJ5eEpRVUZMTUVJc1JVRkJTU3hKUVVGTExFTkJRVU1zUTBGQlJTeERRVUZETEVWQlEzaERMMElzUlVGQlJ5eEpRVU5TTEV0QlFVc3NUVUZCVFN4TFFVRkxLMElzUTBGQlJTeEZRVVZzUWl4UFFVRlBMRTlCUVU4dlFpeEZRVUZKTEVOQlFVVXNTVUZCU3l0Q0xFVkJRVWtzU1VGQlN5eERRVUZETEVOQlFVVXNRMEZCUXl4RlFVTXhReXhOUVVOS0xFTkJRMEVzU1VGQlN5eGxRVU5NTEVsQlFVc3NaVUZEUkRGQ0xFVkJRVWNzU1VGQlNTeExRVUZMTEV0QlFVc3NWMEZCVnl4RlFVTTFRaXhOUVVOU0xFTkJRMEVzU1VGQlRXZENMRVZCUVVzc1MwRkJTeXhuUWtGQlowSm9RaXhEUVVGRkxFVkJSVGxDWjBJc1JVRkRRU3hMUVVGTExFMUJRVTBzUzBGQlMwRXNRMEZCUlN4SFFVVnNRaXhOUVVGQlZDeEZRVUZQTEV0QlFVc3NTVUZCU1N4SFFVTm9RaXhOUVVGQlFTeEZRVUZQTEV0QlFVc3NTMEZCU3l4SFFVVjZRaXhMUVVOTExFTkJRMFFzU1VGQlRXUXNSVUZCVXl4TFFVRkxMRXRCUVVzc1EwRkJReXhGUVVNeFFpeEhRVUZKUVN4RlFVRlBMRTlCUVZNc1kwRkRaQ3hMUVVGTExFOUJRVk1zYVVKQlFXMUNRU3hGUVVGUExGTkJRVmRQTEVWQlFVY3NVVUZEYmtRc1MwRkJTeXhQUVVGVExGZEJRMWdzUTBGQlExQXNSVUZCVHl4TlFVRk5RU3hGUVVGUExFMUJRVTBzVDBGQlV5eERRVUZETEVWQlFVVXNTMEZETDBNc1RVRkJRV01zUlVGQlR5eExRVUZMTEVsQlFVa3NSMEZEYUVJc1RVRkJRVUVzUlVGQlR5eExRVUZMTEV0QlFVc3NWMEZGV2l4TFFVRkxMRTlCUVZNc2FVSkJRMjVDWkN4RlFVRlBMRTlCUVZNc2EwSkJRVzFDTEVOQlEyNURMRWxCUVUxSkxFVkJRVTlNTEVkQlFXRkRMRU5CUVUwc1JVRkRNVUo1UWl4RlFVRlJkRUlzUjBGQmMwSkRMRU5CUVVrc1JVRkRlRU5GTEVkQlFXZENReXhEUVVGRkxFVkJRMnhDTEVsQlFVMXRRaXhGUVVGTmJrSXNSVUZCUnl4SlFVRkpMRTlCUVU4c1JVRkJSMEVzUlVGQlJ5eEpRVUZKTEUxQlFVMHNSVUZETVVOdFFpeEZRVUZKTEV0QlFVc3NTMEZCU3l4WFFVRlhMRVZCUTNwQ0xFbEJRVTFETEVWQlFVMHNRMEZEVWl4TFFVRk5MRmxCUTA0c1QwRkJVWEJDTEVWQlFVY3NUMEZEV0N4UFFVRlJRU3hGUVVGSExFOUJRMWdzVFVGQlR5eERRVUZETEVOQlFVVXNUVUZCUVd0Q0xFVkJRVThzU1VGQlMyeENMRVZCUVVrc1NVRkJRVzFDTEVOQlFVa3NRMEZCUXl4RFFVTnVReXhGUVVOQkxFdEJRVXNzVlVGQldTeEhRVU5xUWl4TFFVRkxMRTFCUVUwc1MwRkJTeXhOUVVGTkxFOUJRVk1zUTBGQlF5eEZRVUZKUXl4RFFVTjRReXhOUVVWSkxFMUJRVUZpTEVWQlFVOHNTMEZCU3l4UlFVRlJVQ3hEUVVGRkxFVkJSVGxDTEVOQlEwb3NRMEZEUVN4WFFVRlhZaXhGUVVGTkxFTkJRMklzUjBGQlNTeExRVUZMTEZWQlFWY3NRMEZEYUVJc1NVRkJTV3RETEVWQlFVc3NTMEZCU3l4UFFVRlBMRkZCUVZFN1FVRkJRU3hEUVVGSkxFVkJRVWtzUlVGRGNrTXNTMEZCVDBFc1NVRkJUeXhIUVVOV0xFdEJRVXNzVlVGQlZTeExRVUZMTEU5QlFWTkJMRU5CUVVVc1JVRkRMMEpCTEVWQlFVc3NTMEZCU3l4UFFVRlBMRkZCUVZFN1FVRkJRU3hGUVVGTlFTeERRVUZGTEVWQlFVa3NRMEZGTjBNc1EwRkRRU3hOUVVGUExFTkJRMGdzUzBGQlFXeERMRVZCUTBFc1QwRkJVU3hMUVVGTExFOUJRMklzVDBGQlVTeExRVUZMTEU5QlEySXNUMEZCVVN4TFFVRkxMRTFCUTJwQ0xFTkJRMG9zUTBGRFFTeG5Ra0ZCWjBKTkxFVkJRVkVzUTBGRGNFSXNUMEZCVVN4TFFVRkxMRXRCUVUwc1EwRkRaaXhKUVVGTExGRkJRMHdzU1VGQlN5eFRRVU5NTEVsQlFVc3NkVUpCUTB3c1NVRkJTeXgxUWtGRFJDeFBRVUZQTEV0QlFVc3NWMEZCVnl4TFFVRkxMRWxCUVVrc1JVRkRjRU1zU1VGQlN5eHpRa0ZEUkN4TlFVRlBMRU5CUTBnc1MwRkJUU3hsUVVOT0xFOUJRVkVzUzBGQlN5eFBRVU5pTEU5QlFWRXNTMEZCU3l4UFFVTmlMRTFCUVU4c1EwRkJReXhMUVVGTExGZEJRVmNzUlVGRGVFSXNUMEZCVVN4RlFVTmFMRVZCUTBvc1NVRkJTeXhwUWtGRFRDeEpRVUZMTEdsQ1FVTkVMRTFCUVU4c1EwRkRTQ3hMUVVGTkxHdENRVU5PTEU5QlFWRXNTMEZCU3l4UFFVTmlMRTlCUVZFc1MwRkJTeXhQUVVOaUxFMUJRVThzUzBGQlN5eFpRVU5hTEUxQlFVOHNRMEZCUXl4RlFVTlNMRWxCUVVzc1EwRkJReXhEUVVOV0xFVkJRMG9zU1VGQlN5eGxRVU5FTEUxQlFVOHNRMEZEU0N4TFFVRk5MRmxCUTA0c1QwRkJVU3hMUVVGTExFOUJRMklzVDBGQlVTeExRVUZMTEU5QlEySXNUVUZCVHl4RFFVRkRMRU5CUVVVc1RVRkJUeXhEUVVGRExFdEJRVXNzVjBGQlZ5eERRVUZGTEVOQlFVTXNRMEZEZWtNc1JVRkRTaXhKUVVGTExHMUNRVUZ2UWl4RFFVTnlRaXhMUVVGTExGVkJRVmtzUjBGRGFrSXNTVUZCVFVrc1JVRkJUMHdzUjBGQllVTXNRMEZCVFN4RlFVTXhRbmxDTEVWQlFWRjBRaXhIUVVGelFrTXNRMEZCU1N4RlFVTjRReXhQUVVGQmNVSXNSVUZCVFN4TFFVRkxMRXRCUVVzc1YwRkJWeXhGUVVOd1FpeERRVU5JTEV0QlFVMHNXVUZEVGl4UFFVRlJMRXRCUVVzc1QwRkRZaXhQUVVGUkxFdEJRVXNzVDBGRFlpeE5RVUZQTEVOQlFVTXNRMEZCUlN4TlFVRkJRU3hGUVVGUExGbEJRV0VzUlVGQlN5eERRVUZETEVOQlEzaERMRU5CUTBvc1EwRkRRU3hKUVVGTExHZENRVUZwUWl4RFFVTnNRaXhMUVVGTExGVkJRVmtzUjBGRGFrSXNTVUZCVFhKQ0xFVkJRVTlNTEVkQlFXRkRMRU5CUVUwc1JVRkRNVUo1UWl4RlFVRlJkRUlzUjBGQmMwSkRMRU5CUVVrc1JVRkRlRU1zVFVGQlR5eERRVU5JTEV0QlFVMHNXVUZEVGl4UFFVRlJMRXRCUVVzc1QwRkRZaXhQUVVGUkxFdEJRVXNzVDBGRFlpeE5RVUZQTEVOQlFVTXNRMEZCUlN4TlFVRkJjVUlzUlVGQlR5eEpRVUZMTEV0QlFVMHNTVUZCU3l4RFFVRkRMRXRCUVVzc1YwRkJWeXhEUVVGRkxFTkJRVU1zUTBGRGVrUXNRMEZEU2l4RFFVTktMRU5CUTBFc1QwRkJUeXhKUVVOWUxFTkJRMEVzYTBKQlFXdENRU3hGUVVGUFZTeEZRVUZSTEVOQlJ6ZENMRTlCUmtrc1MwRkJTeXhQUVVGVExGZEJSV1FzUzBGQlN5eFJRVUZWUVN4RlFVTlNMRWRCUTBwV0xFVkJRVTBzVFVGQlRVb3NSMEZCVFVFc1JVRkJSeXhQUVVGVExGZEJRV0ZCTEVWQlFVY3NUMEZCVXl4UFFVRlBMRU5CUTNwRkxFTkJRMEVzUTBGQlF5eFpRVUZaWlN4RlFVRlJMRU5CUTJJc1MwRkJTeXhQUVVGVExHRkJRMVpCTEVWQlFVOHNTVUZEVUVFc1JVRkJUeXhKUVVGSkxFdEJRVXNzUzBGQlN5eFhRVUZYTEVWQlJXaERRU3hGUVVGUExFbEJRVTBzUTBGQlF5eExRVUZMTEZkQlFWY3NSVUZET1VJc1MwRkJTeXhQUVVGVExGbEJRMlFzVFVGQlFYUkNMRVZCUVU4c1MwRkJTeXhKUVVGSkxFbEJSVFZDTEVOQlEwRXNRMEZCUXl4UlFVRlJhRUlzUlVGQlR5eERRVU5hTEU5QlFWRXNTMEZCU3l4TFFVRk5MRU5CUTJZc1NVRkJTeXhSUVVOTUxFbEJRVXNzV1VGRFRDeEpRVUZMTEZWQlEwd3NTVUZCU3l4bFFVTk1MRWxCUVVzc1pVRkRUQ3hKUVVGTExHZENRVU5FTEUxQlFVRm5RaXhGUVVGUExFdEJRVXNzU1VGQlNTeEhRVU5vUWl4TlFVRkJRU3hGUVVGUExFdEJRVXNzUzBGQlN5eEhRVU5xUWl4TlFVTktMRWxCUVVzc1ZVRkRSQ3hMUVVGTExGVkJRVmtzUjBGRmNrSXNTVUZCU3l4UlFVTk1MRWxCUVVzc1ZVRkRUQ3hSUVVWUmFFSXNSVUZCVFN4SlFVTk9RU3hGUVVGTkxFbEJRVWtzUzBGQlN5eExRVUZMTEZkQlFWY3NSVUZGTDBKQkxFVkJRVTBzU1VGQlRTeERRVUZETEV0QlFVc3NWMEZCVnl4RlFVTTNRaXhMUVVGTExFOUJRVk1zV1VGRFpDeE5RVUZCWjBJc1JVRkJUeXhMUVVGTExFbEJRVWtzUjBGRE5VSXNRMEZEU2l4RFFVTktMRVZETHpaQ1FTeFRRVUZUZFVJc1IwRkJZVU1zUlVGQlV5eERRVU16UWl4SlFVRk5ReXhGUVVGbFJDeEZRVUZSTEdWQlFXbENMRWRCUlRsRExFMUJRVThzUTBGQlJTeFpRVVJYUVN4RlFVRlJMR0ZCUVdkQ1F5eEhRVUZuUWl4SlFVRkpReXhKUVVGclFpeExRVU0xUkN4aFFVRkJSQ3hEUVVGaExFTkJRM1pETEVOQmVVSkJMRk5CUVZORkxFZEJRV05ETEVWQlFWRkRMRVZCUVZVc1EwRkJReXhGUVVGSExFTkJRM3BETEVkQlFVMHNRMEZCUlN4WlFVRkJReXhGUVVGaExHRkJRVUZETEVOQlFXRXNSVUZCU1VNc1IwRkJZVWdzUTBGQlR5eEZRVU53UkVrc1JVRkJVeXhKUVVGSlF5eEhRVUZQU2l4SFFVRkJMRmxCUVVGQkxFVkJRV0VzVlVGQlZTeEZRVU16UTBzc1JVRkJWeXhKUVVGSlF5eEhRVUZUVUN4RFFVRlBMRVZCUldwRFVTeEZRVUZOTEV0QlExWXNVVUZCVjBNc1MwRkJVVWdzUlVGQlV5eFJRVUZSUml4RlFVRlBMRTFCUVUxTUxFTkJRVTBzUlVGQlJ5eEhRVUZOUVN4RlFVRlBMRTFCUVUwc1JVRkRla1VzUjBGQlNTeERRVUZEVXl4RlFVTkVRU3hGUVVGTlF5eFZRVU5FUkN4RlFVRkpMRkZCUVZFc1YwRkJZU3hUUVVGVkxFTkJRM2hEUVN4RlFVRkpMRTlCUVU4c1MwRkJTeXhKUVVGSlJTeEhRVUZsUkN4RlFVRkxMRTFCUVUwc1RVRkJUU3hGUVVGSExFTkJRVU1zUlVGQlJ5eG5Ra0ZCYVVJc2VVVkJRWGxGTEVOQlFVTXNSVUZEZEVvc1MwRkRTaXhEUVVWS0xFOUJRVWxRTEVkQlFXZENSQ3hKUVVOb1FrOHNSVUZCU1N4UFFVRlBMRkZCUVZGSExFZEJRV05hTEVWQlFWRkZMRU5CUVZjc1EwRkJReXhGUVVOeVJFOHNSVUZCU1N4VFFVRlRMRkZCUVZGSExFZEJRV05hTEVWQlFWRkZMRU5CUVZjc1EwRkJReXhIUVVWd1JFOHNRMEZEV0N4RFFVTkJMRk5CUVZOSkxFZEJRVTFETEVWQlFVdERMRVZCUVZOa0xFVkJRVk1zUTBGRGJFTXNTVUZCU1dVc1JVRkRRU3hQUVVGUFJDeEhRVUZaTEZkQlEyNUNReXhGUVVGWFJDeEZRVVZPWkN4SlFVRlpMRkZCUVdGakxFZEJRVmNzVDBGQlQwRXNSMEZCV1N4WFFVTTFSR1FzUlVGQlZXTXNSMEZGWkN4SlFVRk5UaXhGUVVGTlZpeEhRVUZqWlN4RlFVRkxZaXhEUVVGUExFVkJRM1JETEVkQlFVa3NRMEZCUTFFc1JVRkRSQ3hQUVVGUExFdEJSVmdzUjBGRVFVRXNSVUZCU1N4VFFVRlRMRkZCUVZGUkxFZEJRVmRETEVkQlFVdFVMRVZCUVVrc1VVRkJVU3hUUVVGVlVTeERRVUZQTEVOQlFVTXNSVUZETDBSU0xFVkJRVWtzVDBGQlR5eFBRVUZUTEVWQlFVY3NRMEZEZGtJc1IwRkJTVUVzUlVGQlNTeFJRVUZSTEZkQlFXRXNVMEZEZWtJc1RVRkJUVUVzUlVGQlNTeFBRVUZQTEVOQlFVTXNSVUZGYkVKQkxFVkJRVWtzVDBGQlV5eERRVUZETEVOQlEzUkNMRU5CUTBFc1QwRkJUMEVzUlVGQlNTeExRVUZMTEU5QlFVOHNUMEZCVHl4RFFVRkZMRkZCUVZOUExFTkJRVk1zUlVGQlIyWXNRMEZCVHl4RFFVRkRMRU5CUTJwRkxFTkRlRVZCTEVsQlFVRnJRaXhIUVVFclFpeFRRMFl2UWl4SlFVRkJReXhGUVVGdFFpeFRRMnRHV2l4SlFVRlZReXhQUVVGV0xFTkJZMVZCTEVWQlFVRXNhMEpCUVhORExFTkJReTlETEcxQ1FVRnZRaXhKUVVWd1FpeFhRVUZaTEdkQ1FVTmFMR1ZCUVdkQ0xIZENRVU53UWl4RlFVZFBMRk5CUVZORExFVkJRMXBETEVWQlEwRkRMRVZCUVRSQ1NDeEZRVUZCTEd0Q1FVTTFRa2tzUlVGQmNVSXNSMEZEWml4RFFVTk9MRWxCUVVsRExFVkJRVlZETEVWQlFWVktMRU5CUVVzc1JVRkROMElzUjBGQlNTeERRVUZEUnl4RlFVRlRMRTlCUVU5R0xFVkJRVkVzYlVKQlJUZENMRTlCUVZGRkxFVkJRVkVzUzBGQlRTeERRVU5zUWl4SlFVRkxMRTlCUTBRc1QwRkJUMFlzUlVGQlVTeHRRa0ZEYmtJc1NVRkJTeXhUUVVORUxFOUJRVTlGTEVWQlFWRXNUVUZEYmtJc1NVRkJTeXhUUVVOTUxFbEJRVXNzVlVGRFJDeE5RVUZQTEVkQlFVdEJMRVZCUVZFc1RVRkRlRUlzU1VGQlN5eFBRVU5FTEU5QlFVOUJMRVZCUVZFc1RVRkJUU3hUUVVGVExFVkJRMnhETEVsQlFVc3NWMEZEUkN4TlFVRlBMR0ZCUTFnc1NVRkJTeXhSUVVORUxFbEJRVWxGTEVWQlFWTXNSMEZEWWl4UFFVRkpTQ3hKUVVGWFJ5eEhRVUZWTEV0QlEzcENRU3hIUVVGVlJpeEZRVUZSTEUxQlFVMHNTVUZCUzBjc1IwRkJUVkFzUlVGQlUwOHNSVUZCUjB3c1JVRkJVeXhGUVVGSkxFTkJRVU1zUlVGQlJTeExRVUZMTEVsQlFVa3NSVUZEY0VWRExFbEJRVmRITEVkQlFWVXNTMEZEYkVKQkxFVkJRMWdzU1VGQlN5eFRRVU5FTEUxQlEwa3NTMEZEUVN4UFFVRlBMRkZCUVZGR0xFVkJRVkVzUzBGQlN5eEZRVU4yUWl4SlFVRkxTU3hIUVVGTlFTeEZRVUZGTEVOQlFVTXNSVUZCU1N4TFFVRlBVaXhGUVVGVFVTeEZRVUZGTEVOQlFVTXNSVUZCUjA0c1JVRkJVeXhGUVVGSkxFTkJRVU1zUlVGRGRFUXNTMEZCU3l4SlFVRkpMRVZCUTJRc1MwRkZVaXhKUVVGTExFOUJRMFFzVDBGQlQwOHNSMEZCYTBKTUxFVkJRVkVzVFVGQlQwWXNSVUZCVVN4WFFVRlpRU3hGUVVGUkxHTkJRV01zUlVGRGRFWXNTVUZCU3l4WFFVTkVMRTlCUVU5UkxFZEJRWE5DVGl4RlFVRlJMRXRCUVVzc1EwRkRiRVFzUTBGRFNpeERRWFpEVDB3c1JVRkJVeXhUUVVGQlF5eEZRVEJEVkN4VFFVRlRTeXhGUVVGVlRTeEZRVUV3UXl4RFFVTm9SU3hQUVVGSlF5eEZRVUZQUkN4RFFVRkhMRVZCUVZVc1EwRkJSU3hMUVVGTkxFOUJRVkVzVFVGQlQwRXNRMEZCU1N4RlFVTXhRMFVzUlVGQlUwWXNRMEZCUnl4RlFVRlZMRU5CUVVVc1MwRkJUU3hUUVVGVkxFMUJRVTlCTEVOQlFVa3NSVUZEYmtSSExFVkJRVk5JTEVOQlFVY3NSVUZCVlN4RFFVRkZMRXRCUVUwc1UwRkJWU3hOUVVGUFFTeERRVUZKTEVWQlEyNUVTU3hGUVVGVlNpeERRVUZITEVWQlFWVXNRMEZCUlN4TFFVRk5MRlZCUVZjc1RVRkJUMEVzUTBGQlNTeEZRVU55UkVzc1JVRkJWMHdzUTBGQlJ5eEZRVUZWTEVOQlFVVXNTMEZCVFN4WFFVRlpMRTFCUVU5QkxFTkJRVWtzUlVGRGRrUk5MRVZCUVU5T0xFTkJRVWNzUlVGQlZTeERRVUZGTEV0QlFVMHNUMEZCVVN4TlFVRlBRU3hEUVVGSkxFVkJReTlEVHl4RlFVRlJVQ3hEUVVGSExFVkJRVlVzUTBGQlJTeExRVUZOTEZGQlFWTXNUVUZCVDBFc1EwRkJTU3hGUVVOcVJGRXNSVUZCVDFJc1EwRkJSeXhGUVVGVkxFTkJRVVVzUzBGQlRTeFBRVUZSTEUxQlFVOUJMRU5CUVVrc1JVRkRMME5UTEVWQlFWZFVMRU5CUVVjc1JVRkJWU3hEUVVGRkxFdEJRVTBzVjBGQldTeE5RVUZQUVN4RFFVRkpMRVZCUTNaRVZTeEZRVUZUVml4RFFVRkhMRVZCUVZVc1EwRkJSU3hMUVVGTkxGTkJRVlVzVFVGQlQwRXNRMEZCU1N4RlFVTjJSQ3hOUVVOVUxFTkJXazlhTEVWQlFWTXNWVUZCUVUwc1JVRmxWQ3hUUVVGVGFVSXNSVUZCVlZnc1JVRkJZMWtzUlVGQmQwTXNRMEZETlVVc1IwRkJTVVlzUlVGQlUxWXNRMEZCUnl4RlFVRkhMRU5CUTJZc1NVRkJTVXdzUlVGQmNVSXNRMEZCUXl4RlFVTXhRaXhQUVVGVExFTkJRVU5yUWl4RlFVRkxReXhEUVVGTExFbEJRVXNzVDBGQlR5eFJRVUZSWkN4RFFVRkhMRVZCUVVkTUxFVkJRVTlyUWl4RFFVRkhMRVZCUVVsR0xFVkJRVlZITEVWQlFVOUdMRU5CUVVrc1JVRkRha1lzVDBGQlQycENMRU5CUTFnc1UwRkJWMWtzUlVGQlVWQXNRMEZCUnl4RlFVRkhMRU5CUTNKQ0xFbEJRVWxNTEVWQlFXOUNMRU5CUVVNc1JVRkRla0lzVVVGQlUyMUNMRXRCUVZOa0xFVkJRVXRNTEVWQlFVOHNTMEZCUzJkQ0xFVkJRVlZITEVWQlFVOUdMRU5CUVVrc1EwRkJReXhGUVVONlJDeFBRVUZQYWtJc1EwRkRXQ3hMUVVOSkxGRkJRVTlwUWl4RlFVRkxXaXhEUVVGSExFTkJSWFpDTEVOQldrOWFMRVZCUVZNc1ZVRkJRWFZDTEVWQlpWUXNVMEZCVTBrc1JVRkJUME1zUlVGQk5FSkRMRVZCUVRaQ0xFTkJRelZGTEU5QlFVOURMRVZCUVZGR0xFVkJRVTlETEVOQlFVMHNSMEZCU3l4RFFVTnlReXhEUVVaUE4wSXNSVUZCVXl4UFFVRkJNa0lzUlVGTFZDeFRRVUZUUnl4RlFVTmFReXhGUVVOQlF5eEZRVU5CUXl4RlFVTk5MRU5CTTB4a0xFbEJRVUZETEVWQlFVRkRMRVZCYTAxUkxFZEJURWxLTEVsQlFWTkRMRWxCUjFSRUxFbEJRVk1zVTBGQlYwRXNSVUZCVHl4TlFVTXpRa01zU1VGQlV5eFRRVUZYUVN4RlFVRlBMRTFCUXpOQ1JDeEpRVUZUTEUxQlFWRkRMRWxCUVZNc1RVRkJUU3hOUVVGUExFZEJRM1JETEVkQlFVbEVMRWxCUVZNc1MwRkJUU3hOUVVGUExFZEJRekZDTEVkQlFVbERMRWxCUVZNc1MwRkJUU3hOUVVGUExFZEJSeTlDTEVsQlFVbEpMRVZCUVZFNVFpeEZRVUZWZVVJc1EwRkJTU3hGUVVOMFFrMHNSVUZCVVM5Q0xFVkJRVlV3UWl4RFFVRkpMRVZCUlRGQ0xFZEJRVWxKTEVsQlFWVXNVVUZCWVVNc1NVRkJWU3hQUVVGWExFMUJRVThzUjBGRGJFUXNSMEZCU1VRc1NVRkJWU3hQUVVGWExFMUJRVThzUjBGRGFFTXNSMEZCU1VNc1NVRkJWU3hQUVVGWExFMUJRVThzUjBGSGNrTXNSMEZCU1VRc1JVRkJUU3hOUVVGUlF5eEZRVUZOTEV0QlFVMHNUMEZCVDBRc1JVRkJUU3hMUVVGTExHTkJRV05ETEVWQlFVMHNTVUZCU1N4RlFVTjRSU3hIUVVGSlJDeEZRVUZOTEZGQlFWVkRMRVZCUVUwc1RVRkJUeXhOUVVGUExFZEJSWGhETEU5QlFWRkVMRVZCUVUwc1MwRkJUU3hEUVVOb1FpeEpRVUZMTEZOQlEwUXNUMEZCVDBFc1JVRkJUU3hOUVVGTkxHTkJRV05ETEVWQlFVMHNTMEZCWlN4RlFVTXhSQ3hKUVVGTExGTkJRMFFzVDBGQlNVUXNSVUZCVFN4TlFVRlRReXhGUVVGTkxFMUJRWGxDTEVkQlEzcERSQ3hGUVVGTkxFOUJRVlZETEVWQlFVMHNUVUZCZVVJc1JVRkRha1FzUlVGRFdDeEpRVUZMTEU5QlEwUXNUVUZCVHl4SFFVTllMRWxCUVVzc1ZVRkRSQ3hQUVVGSlJDeEZRVUZOTEU5QlFWTkRMRVZCUVUwc1RVRkJZeXhGUVVNelFrUXNSVUZCVFN4TlFVRlJMRVZCUVVrc1IwRkRiRU1zU1VGQlN5eFBRVU5FTEVsQlFVbEZMRVZCUVZGR0xFVkJRVTBzVFVGRFpFY3NSMEZCVVVZc1JVRkJUU3hOUVVOa1J5eEhRVUZaVUN4SFFVRkJMRXRCUVVGQkxFVkJRVzlDVVN4SlFVRmpRU3hIUVVjNVEwTXNSVUZCWTBZc1IwRkJWVVlzUlVGQlRTeEpRVUZKTEVWQlFVVXNZMEZCWTBVc1IwRkJWVVFzUjBGQlRTeEpRVUZKTEVOQlFVTXNSVUZETTBVc1IwRkJTVWNzUjBGQlpTeEZRVUZITEU5QlFVOUJMRVZCUnpkQ0xFbEJRVWxETEVWQlFXTk1MRVZCUVUwc1MwRkJTeXhqUVVGalF5eEhRVUZOTEVsQlFVa3NSVUZEY2tRc1QwRkJTVWtzUjBGQlpTeEZRVUZWUVN4RlFVZDZRa3dzUlVGQlRTeFRRVUZYTEVOQlFVTkRMRWRCUVUwc1VVRkJaMElzUlVGRGVFTXNRMEZCUTBRc1JVRkJUU3hUUVVGWFF5eEhRVUZOTEZGQlFXZENMRWRCUTNoRExFTkJRVU5FTEVWQlFVMHNVMEZCVnl4RFFVRkRReXhIUVVGTkxGRkJRV2RDTEVsQlIzSkRUQ3hGUVVGQlNTeEZRVUZOTEZWQlFVNHNTMEZCUVVvc1JVRkJhVUlzU1VGQlNTeGxRVUZqUXl4RlFVRkJTU3hIUVVGTkxGVkJRVTRzUzBGQlFVb3NSVUZCYVVJc1JVRkJSU3hGUVVOc1JTeEpRVUZMTEU5QlEwUXNUMEZCVDBNc1JVRkJUU3hOUVVGVFF5eEZRVUZOTEUxQlEzUkNMRWRCUTBGRUxFVkJRVTBzVFVGQlRTeFBRVUZQUXl4RlFVRk5MRXRCUVdsQ0xFVkJRekZETEVWQlEwRXNSVUZEVml4SlFVRkxMRmRCUTBRc1QwRkJUMFFzUlVGQlRTeE5RVUZUUXl4RlFVRk5MRTFCUTNSQ0xFZEJRMEZFTEVWQlFVMHNUVUZCVFN4UFFVRlBReXhGUVVGTkxFdEJRV2xDTEVWQlF6RkRMRVZCUTBFc1JVRkRWaXhKUVVGTExGRkJRMFFzU1VGQlNVOHNSVUZCUzFJc1JVRkJUU3hOUVVOWVV5eEhRVUZMVWl4RlFVRk5MRTFCUTJZc1VVRkJVMU1zUjBGQlVTeEZRVUZIUVN4SFFVRlJMRXRCUVVzc1NVRkJTVVlzUlVGQlJ5eFBRVUZSUXl4SFFVRkhMRTFCUVUwc1JVRkJSME1zUzBGQlV5eERRVU5xUlN4SlFVRkpReXhIUVVGUGFrSXNSVUZCVVdNc1JVRkJSMFVzUlVGQlN5eEZRVUZIUkN4SFFVRkhReXhGUVVGTExFTkJRVU1zUlVGRGRrTXNSMEZCU1VNc1NVRkJVU3hGUVVGSExFOUJRVTlCTEVWQlF6RkNMRU5CUTBFc1QwRkJUMGdzUlVGQlJ5eFBRVUZUUXl4SFFVRkhMRTlCUXpGQ0xFbEJRVXNzVTBGRFJDeEpRVUZKUnl4SFFVRkxXaXhGUVVGTkxFMUJRMWhoTEVkQlFVdGFMRVZCUVUwc1RVRkRXR0VzUjBGQlN5eE5RVUZOTEV0QlFVc3NUMEZCVHl4TFFVRkxSaXhGUVVGRkxFTkJRVU1zUlVGREwwSkhMRWRCUVVzc1RVRkJUU3hMUVVGTExFOUJRVThzUzBGQlMwWXNSVUZCUlN4RFFVRkRMRVZCUTI1RFF5eEhRVUZITEV0QlFVc3NSVUZEVWtNc1IwRkJSeXhMUVVGTExFVkJSVklzU1VGQlNVTXNSMEZCWVhSQ0xFVkJRVkZ2UWl4SFFVRkpReXhGUVVGRkxFVkJReTlDTEVkQlFVbERMRWxCUVdNc1JVRkJSeXhQUVVGUFFTeEhRVVUxUWl4UlFVRlRNMElzVFVGQlQzbENMRWRCUVVrc1EwRkRhRUlzU1VGQlNVZ3NSMEZCVDJwQ0xFVkJRVkZyUWl4SFFVRkhka0lzUlVGQlJ5eEZRVUZIZDBJc1IwRkJSM2hDTEVWQlFVY3NRMEZCUXl4RlFVTnVReXhIUVVGSmMwSXNTVUZCVVN4RlFVRkhMRTlCUVU5QkxFVkJRekZDTEVOQlJVRXNUVUZCVHl4SFFVTllMRWxCUVVzc1YwRkRSQ3hOUVVGUExFVkJRMllzUTBGRFNpeERRVzVIVHk5RExFVkJRVk1zVVVGQlFUaENMRVZCYzBkVUxGTkJRVk4xUWl4RlFVRlBla01zUlVGQmJVTXNRMEUzVWpsRUxFbEJRVUZ6UWl4RlFUaFNVU3hQUVVGUFFTeEZRVUZCTlVJc1JVRkJWVTBzUTBGQlJ5eEpRVUZpTEZsQlFVRnpRaXhGUVVGblFpeEpRVU16UWl4RFFVWlBiRU1zUlVGQlV5eFBRVUZCY1VRc1JVRkxWQ3hUUVVGVFF5eEZRVUZUY0VRc1JVRkJlVUlzUTBGRE9VTXNTVUZCU1Vjc1JVRkJWVU1zUlVGQlZVb3NRMEZCU3l4RlFVTTNRaXhIUVVGSkxFTkJRVU5ITEVWQlFWTXNUVUZCVHl4SFFVVnlRaXhQUVVGUlFTeEZRVUZSTEV0QlFVMHNRMEZEYkVJc1NVRkJTeXhUUVVORUxFOUJRVTlCTEVWQlFWRXNUMEZCVXl4RlFVTTFRaXhKUVVGTExGTkJRMFFzVDBGQlQwRXNSVUZCVVN4TlFVRk5MRTlCUVZNc1JVRkRiRU1zU1VGQlN5eFZRVU5FTEU5QlFVOUJMRVZCUVZFc1RVRkRia0lzU1VGQlN5eFBRVU5FTEUxQlFVOHNRMEZCUXl4RFFVRkRRU3hGUVVGUkxFMUJRVTBzUzBGRE0wSXNTVUZCU3l4UFFVTkVMRTlCUVU5QkxFVkJRVkVzVFVGQlRTeFRRVUZUTEVkQlFVc3NSVUZEZGtNc1NVRkJTeXhYUVVORUxFOUJRVTlCTEVWQlFWRXNUVUZCVFN4SFFVRkhMRk5CUVZNc1IwRkJTeXhGUVVNeFF5eEpRVUZMTEZOQlEwUXNUMEZCVHl4UFFVRlBMRXRCUVV0QkxFVkJRVkVzUzBGQlN5eEZRVUZGTEU5QlFWTXNSVUZETDBNc1NVRkJTeXhSUVVORUxFOUJRVTlCTEVWQlFWRXNUVUZCVFN4UFFVRlRMRVZCUTJ4RExFbEJRVXNzVDBGRFJDeE5RVUZQTEVkQlExZ3NTVUZCU3l4WFFVTkVMRTFCUVU4c1JVRkRaaXhEUVVOS0xFTkJNVUpQVEN4RlFVRlRMRk5CUVVGelJDeEZRVFpDVkN4VFFVRlRReXhGUVVFMFFuSkVMRVZCUVdFc1EwRkRja1FzUjBGQlNVRXNSMEZCVlN4TFFVRTJRaXhQUVVGUFFTeEZRVVZzUkN4SFFVRkpSaXhGUVVGVExGRkJRVkZGTEVOQlFVc3NSVUZEZEVJc1RVRkJVU3hEUVVGRExFVkJRV2RDTEU5QlFVOUJMRVZCUVUwc1NVRkJTM05FTEVkQlFVMUVMRVZCUVZORExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlF6RkVMRWRCUVVsNFJDeEZRVUZUTEZOQlFWTkZMRU5CUVVzc1JVRkJSeXhEUVVOcVF5eEpRVUZKU3l4RlFVRnJReXhEUVVGRExFVkJRM1pETEU5QlFWTXNRMEZCUTJ0Q0xFVkJRVXRETEVOQlFVc3NTVUZCU3l4UFFVRlBMRkZCUVZGNFFpeERRVUZMTEVWQlFVZExMRVZCUVU5clFpeERRVUZITEVWQlFVazRRaXhGUVVGVE4wSXNRMEZCU3l4RlFVTTFSU3hQUVVGUGJrSXNRMEZEV0N4TFFVTkpMRkZCUVU5TUxFTkJSV1lzUTBGYVQwWXNSVUZCVXl4VFFVRkJkVVFzUlVGbFZDeFRRVUZUZUVNc1JVRkJVMGdzUlVGQmVVSXNRMEZET1VNc1QwRkJUeXhQUVVGUFFTeEhRVUZQTEZGQlEzcENMRU5CUms5YUxFVkJRVk1zVTBGQlFXVXNSVUZMVkN4VFFVRlRSQ3hGUVVGVFJpeEZRVUY1UWl4RFFVTTVReXhQUVVGUExFOUJRVTlCTEVkQlFVOHNVVUZEZWtJc1EwRkdUMW9zUlVGQlV5eFRRVUZCWXl4RlFVdFVMRk5CUVZOSkxFVkJRVTlPTEVWQlFUSkNMRU5CUXpsRExFOUJRVTlCTEdGQlFXVTJReXhEUVVNeFFpeERRVVpQZWtRc1JVRkJVeXhQUVVGQmEwSXNSVUZMVkN4VFFVRlRSQ3hGUVVGWFRDeEZRVUV5UWl4RFFVTnNSQ3hQUVVGUFFTeGhRVUZsT0VNc1EwRkRNVUlzUTBGR1R6RkVMRVZCUVZNc1YwRkJRV2xDTEVWQlMxUXNVMEZCVTBvc1JVRkJUMFFzUlVGQmJVTXNRMEZEZEVRc1QwRkJUMEVzUjBGQlVTeEpRVU51UWl4RFFVWlBXaXhGUVVGVExFOUJRVUZoTEVWQlMxUXNVMEZCVTAwc1JVRkJVVkFzUlVGQmQwSXNRMEZETlVNc1QwRkJUeXhOUVVGTkxGRkJRVkZCTEVOQlFVY3NRMEZETlVJc1EwRkdUMW9zUlVGQlV5eFJRVUZCYlVJc1JVRkxWQ3hUUVVGVFNDeEZRVUZWU2l4RlFVRXdRaXhEUVVOb1JDeFBRVUZQTEU5QlFVOUJMRWRCUVZFc1UwRkRNVUlzUTBGR1Qxb3NSVUZCVXl4VlFVRkJaMElzUlVGTFZDeFRRVUZUU1N4RlFVRlBVaXhGUVVGMVFpeERRVU14UXl4UFFVRlBRU3hoUVVGbEswTXNSVUZETVVJc1EwRkdUek5FTEVWQlFWTXNUMEZCUVc5Q0xFVkJTMVFzVTBGQlUwVXNSVUZCVTFZc1JVRkJjME1zUTBGRE0wUXNUMEZEU1VFc1NVRkJVU3hSUVVOU0xFOUJRVTlCTEVkQlFVOHNWVUZEWkN4RFFVRkRUeXhGUVVGUlVDeERRVUZITEVkQlExb3NRMEZCUTBzc1JVRkJWMHdzUTBGQlJ5eEhRVU5tTEVOQlFVTk5MRVZCUVU5T0xFTkJRVWNzUjBGRFdDeERRVUZEVVN4RlFVRlBVaXhEUVVGSExFZEJRMWdzUTBGQlEwTXNSVUZCVDBRc1EwRkJSeXhEUVVWdVFpeERRVlpQV2l4RlFVRlRMRk5CUVVGelFpeEZRV0ZVTEZOQlFWTkVMRVZCUVZkVUxFVkJRVEpDTEVOQlEyeEVMRTlCUVU4c1QwRkJUMEVzUjBGQlR5eFZRVU42UWl4RFFVWlBXaXhGUVVGVExGZEJRVUZ4UWl4SlFTOVRTSEpDTEZGQlFVRXNTMEZ0VlZZc1NVRkJWVFJFTEU5QlFWWXNRMEZGU1N4VFFVRlRReXhGUVVGclFrTXNSVUZCYzBNc1EwRkRjRVVzVDBGQlR6bEVMRWRCUVZNc1UwRkJVemhFTEVOQlFVc3NSMEZCU3l4UFFVRlBMRXRCUVV0QkxFTkJRVXNzUlVGQlJTeFJRVUZWTEVkQlFVc3NVVUZCVTBFc1IwRkJVeXhUUVVGVlFTeERRVU55Unl4RFFVWlBSaXhGUVVGVExHVkJRVUZETEVWQlMxUXNVMEZCVTBVc1JVRkJZMFFzUlVGQlowUXNRMEZETVVVc1VVRkJVMFVzUzBGQlYwWXNSVUZCVHl4SFFVRkpMRU5CUVVORUxFVkJRV1ZITEVOQlFVOHNSVUZCUnl4TlFVRlBMRWRCUldoRkxFMUJRVThzUlVGRFdDeERRVXBQU2l4RlFVRlRMRmRCUVVGSExFVkJUMVFzVTBGQlUwVXNSVUZCVlVnc1JVRkJhME1zUTBGRGVFUXNVVUZCVTBVc1MwRkJWMFlzUlVGQlR5eEhRVUZKUkN4RlFVRmxSeXhEUVVGUExFVkJRVWNzVFVGQlR5eEhRVVV2UkN4TlFVRlBMRVZCUTFnc1EwRktUMG9zUlVGQlV5eFBRVUZCU3l4RlFVOVVMRk5CUVZORExFVkJRVk5ETEVWQlFXbEVMRU5CUTNSRkxFZEJRVWxPTEVWQlFXVk5MRU5CUVZFc1JVRkRka0lzVDBGQlQwUXNSVUZCVFVNc1JVRkJVeXhKUVVGSkxFVkJRM1pDTEVkQlFVbEtMRVZCUVZkSkxFTkJRVkVzUlVGQlJ5eERRVU0zUWl4SlFVRkpOVVFzUlVGQlV5eEZRVU5pTEZGQlFWTTJSQ3hMUVVGWlJDeEZRVUZWTlVRc1IwRkJWVEpFTEVWQlFVMUZMRVZCUVZNc1NVRkJTU3hGUVVNMVJDeFBRVUZQTjBRc1EwRkRXQ3hMUVVOSkxGRkJRVTgwUkN4RlFVRlRMRTFCUlhoQ0xFTkJWazlRTEVWQlFWTXNUVUZCUVUwc1JVRmhWQ3hUUVVGVFJ5eEZRVUZUUml4RlFVRjFRa2NzUlVGQlpVTXNSVUZCTUVJc1EwRkRja1lzUjBGQlNVRXNSMEZCVDBRc1JVRkJUeXhOUVVGUExFTkJRVU1zUlVGRE1VSXNSMEZCU1V3c1JVRkJUMFVzUTBGQlVTeEZRVUZITEU5QlFVOUJMRVZCUVZNc1RVRkJUVWNzUlVGQlQwTXNRMEZCUnl4RlFVZDBSQ3hKUVVGSmVrSXNSVUZCVVN4RlFVTlNNRUlzUlVGQlR5eEZRVU5ZTEV0QlFVOHhRaXhGUVVGUmNVSXNSVUZCVXl4UlFVRlZTeXhGUVVGUFRpeEZRVUZOUXl4RlFVRlRja0lzUTBGQlN5eERRVUZETEVkQlFVdDNRaXhIUVVNdlJFVXNSMEZCVVU0c1JVRkJUVU1zUlVGQlUzSkNMRU5CUVVzc1EwRkJReXhGUVVNM1FrRXNTVUZKU2l4SFFVRkpRU3hIUVVGVGNVSXNSVUZCVXl4UFFVRlJMRTFCUVU4c1EwRkJReXhGUVVWMFF5eEpRVUZOTlVRc1JVRkJaMFFzUTBGQlF5eEZRVU4yUkN4TFFVRlBkVU1zUlVGQlVYRkNMRVZCUVZNc1VVRkJWVXNzUlVGQlQwUXNSMEZCU3l4RFFVTXhReXhKUVVGTlJTeEZRVUZSVGl4RlFVRlRja0lzUTBGQlN5eEZRVU4wUWpSQ0xFVkJRVmxTTEVWQlFVMVBMRU5CUVVzc1JVRkRka0pGTEVWQlFXRXNTMEZCU3l4SlFVRkpTQ3hGUVVGTlJpeERRVUZMTEVWQlEycERUU3hGUVVGWExFdEJRVXNzU1VGQlNVWXNSVUZCV1VZc1JVRkJUVVFzUTBGQlJ5eEZRVVV2UTJoRkxFVkJRVThzUzBGQlN5eERRVU5TTEVsQlFVdHJSU3hGUVVGTkxFbEJRMWdzUzBGQlRVb3NSVUZCVFVrc1JVRkJUU3hMUVVGTlJTeEZRVUZoU0N4RlFVRk5TU3hGUVVGWFNpeERRVUZKTEVOQlF6bEVMRU5CUVVNc1JVRkZSRUVzUjBGQlVVVXNSVUZEVWpWQ0xFZEJRMG9zUTBGRlFTeFBRVUZQZGtNc1EwRkRXQ3hEUVdoRFQzRkVMRVZCUVZNc1RVRkJRVk1zU1VGc1EwaFVMRkZCUVVFc1MwTm9XbFlzU1VGQlRXbENMRWRCUVU0c1RVRkJUVU1zUTBGQll5eERRVWRvUWl4WlFVRnRRa01zUlVGQlZTeERRVUZXTEZkQlFVRkJMRVZCUTNSQ0xFdEJRVXNzVjBGQllTeEZRVU4wUWl4RFFVVlBMRWxCUVU5RExFVkJRVGhDTEVOQlEzaERMRTlCUVU4c1NVRkJTVVlzUlVGQlVVVXNSVUZCUlN4TFFVRkxMRXRCUVVzc1EwRkJReXhEUVVOd1F5eERRVVZQTEZGQlFWZEJMRVZCUVhsRExFTkJRM1pFTEU5QlFVOUJMRVZCUVVVc1MwRkJTeXhMUVVGTExFTkJRM1pDTEVOQlJVOHNUMEZCVlVFc1JVRkJPRUlzUTBGRE0wTXNUMEZCVHl4SlFVTllMRU5CUlU4c1RVRkJZME1zUlVGQmIwSkRMRVZCUVhGRExFTkJRekZGTEU5QlFVOHNTMEZCU3l4SlFVRkpSQ3hEUVVGSkxFTkJRM2hDTEVOQlJVOHNUMEZCVDBVc1JVRkJZeXhEUVVONFFpeFBRVUZQTEV0QlFVc3NTMEZEYUVJc1EwRkZUeXhOUVVGM1FpeERRVU16UWl4UFFVRlBMRWxCUTFnc1EwRkZUeXhaUVVGWlF5eEZRVUZuUXl4RFFVTXZReXhQUVVGUExFdEJRVXNzUzBGRGFFSXNRMEZEU2l4RlFVdGhReXhIUVVGT0xFMUJRVTFETEVOQlFXTXNRMEZIYUVJc1dVRkJiVUpETEVWQlFWVXNRMEZCVml4WFFVRkJRU3hGUVVOMFFpeExRVUZMTEZkQlFXRXNSVUZEZEVJc1EwRkZUeXhKUVVGUFF5eEZRVUVyUWl4RFFVTjZReXhQUVVGUExFbEJRMWdzUTBGRlR5eFJRVUZYUVN4RlFVRXdReXhEUVVONFJDeFBRVUZQTEVsQlExZ3NRMEZGVHl4UFFVRlZVaXhGUVVFNFFpeERRVU16UXl4UFFVRlBMRWxCUVVsTkxFVkJRVkZPTEVWQlFVVXNTMEZCU3l4TFFVRkxMRU5CUVVNc1EwRkRjRU1zUTBGRlR5eE5RVUZqVXl4RlFVRnhRa01zUlVGQmIwTXNRMEZETVVVc1QwRkJUeXhMUVVGTExFOUJRVTlCTEVOQlFVa3NRMEZETTBJc1EwRkZUeXhQUVVGUFdDeEZRVUZoTEVOQlEzWkNMRTlCUVU5QkxFTkJRMWdzUTBGRlR5eE5RVUYzUWl4RFFVTXpRaXhQUVVGUExFbEJRMWdzUTBGRlR5eFpRVUZaV1N4RlFVRXJRaXhEUVVNNVF5eE5RVUZKUVN4RlFVRmxMRWxCUVVrc1RVRkJUVUVzUlVGQlVTeExRVUZMTEV0QlFVc3NRMEZCUXl4RlFVTnlReXhKUVVGSkxFMUJRVTBzUjBGQlN5eExRVUZMTEV0QlFVc3NRMEZEZUVNc1EwRkRTaXhGUVZscFFrTXNUMEZCVml4RFFVVkpMRk5CUVZORExFVkJRV05rTEVWQlFYZENMRU5CUTJ4RUxFOUJRVThzU1VGQlNVWXNSMEZCVVVVc1EwRkJTeXhEUVVNMVFpeERRVVpQWVN4RlFVRlRMRkZCUVVGRExFVkJTMVFzVTBGQlUwTXNSVUZCWTFBc1JVRkJkMElzUTBGRGJFUXNUMEZCVHl4SlFVRkpSaXhIUVVGUlJTeERRVUZMTEVOQlF6VkNMRU5CUms5TExFVkJRVk1zVVVGQlFVVXNSVUZMVkN4VFFVRlRReXhGUVVOYVF5eEZRVU5CUXl4RlFVTkJMRVZCUTFrc1EwRkRXaXhQUVVGSlJDeEZRVUZOTEZkQlEwWkRMRVZCUVU4c1YwRkJiVUlzUlVGQlJVUXNSVUZCVFN4TlFVRlBReXhGUVVGUExFdEJRVXNzUlVGRE4wTklMRVZCUVZGSExFVkJRVThzUzBGQlN5eEZRVVY2UWtnc1JVRkJVVVVzUlVGQlRTeExRVUZMTEVOQlJXeERMRU5CV0U5S0xFVkJRVk1zVTBGQlFVY3NSVUZqVkN4VFFVRlRSeXhGUVVOYVJpeEZRVU5CUXl4RlFVTkJMRVZCUTFrc1EwRkRXaXhQUVVGUFJpeEZRVUZUUXl4RlFVRlBReXhGUVVGUkxFTkJRVU5GTEVWQlFVZERMRWxCUVUxUUxFVkJRVkVzUlVGQlJVMHNSVUZCUjBNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGRE4wUXNRMEZPVDFJc1JVRkJVeXhMUVVGQlRTeEZRVk5VTEZOQlFWTkhMRVZCUVdkQ1F5eEZRVUZ2UWtNc1JVRkJhMFFzUTBGRGJFY3NTVUZCVFVNc1JVRkJZeXhEUVVGRExFVkJRM0pDTEZGQlFWZERMRXRCUVZkSUxFVkJRVThzUTBGRGVrSXNTVUZCVFVrc1JVRkJVMGdzUlVGQlMwVXNRMEZCVHl4RlFVTXpRaXhIUVVGSkxFTkJRVU5ETEVWQlFVOHNWMEZCV1N4UFFVRlBRU3hGUVVGUExFdEJRVXNzUlVGRk0wTkdMRVZCUVU4c1MwRkJTMFVzUlVGQlR5eExRVUZMTEVOQlF6VkNMRU5CUlVFc1QwRkJUMlFzUlVGQlR5eFJRVUZSV1N4RFFVRk5MRU5CUTJoRExFTkJWazlhTEVWQlFWTXNUMEZCUVZNc1JVRmhWQ3hUUVVGVFRTeEZRVUZWUXl4RlFVRnBReXhEUVVOMlJDeEhRVUZKTEVOQlEwRXNUMEZCVDJoQ0xFVkJRVThzVVVGQlVXZENMRVZCUVVzc1EwRkJReXhEUVVOb1F5eFBRVUZUY2tJc1JVRkJUeXhEUVVOYUxFOUJRVTlMTEVWQlFVOHNVVUZCVVV3c1EwRkJTeXhEUVVNdlFpeERRVU5LTEVOQlRrOUxMRVZCUVZNc1QwRkJRV1VzUlVGVGFFSXNaVUZCYzBKRkxFVkJRVk5ETEVWQlFXZEVMRU5CUXpORkxFZEJRVWtzUTBGRFFTeFBRVUZQYkVJc1JVRkJUeXhSUVVGUkxFMUJRVTFyUWl4RFFVRlBMRU5CUTNaRExFOUJRVk4yUWl4RlFVRlBMRU5CUTFvc1QwRkJUMHNzUlVGQlR5eFJRVUZSVEN4RFFVRkxMRU5CUXk5Q0xFTkJRMG9zUTBGT1FVc3NSVUZCYzBJc1RVRkJRV2xDTEVsQmVrUlVha0lzVVVGQlFTeExRemxGVml4SlFVRlZiVUlzVDBGQlZpeERRVVZWUVN4RlFVRkJMRmRCUVhsQ0xFTkJRVVVzUzBGQlRTeFpRVUZoTEVWQlJUbERRU3hGUVVGQkxGRkJRVzFDTEVOQlFVVXNTMEZCVFN4VFFVRlZMRVZCUlhKRFFTeEZRVUZCTEZWQlFYTkNMRWxCUVVrc1NVRkhhRU1zVTBGQlUwTXNSVUZCVVVNc1JVRkJkMElzUTBGRE5VTXNUMEZCU1VFc1JVRkJTU3hOUVVGUkxFVkJRVlZHTEVWQlFVRXNVVUZGYmtJc1EwRkJSU3hMUVVGTkxFOUJRVkVzVFVGQlQwVXNRMEZCU1N4RFFVTjBReXhEUVVwUFJpeEZRVUZUTEV0QlFVRkRMRVZCVDFRc1UwRkJVMFVzUlVGQldVTXNSVUZCTWtJc1EwRkRia1FzVDBGQlNVRXNSVUZCWTBvc1JVRkJRU3hYUVVOT1FTeEZRVUZCTEU5QlEyaENMRU5CU0U5QkxFVkJRVk1zVTBGQlFVY3NSVUZOVkN4VFFVRlRSU3hGUVVGblFrZ3NSVUZCYjBNc1EwRkRhRVVzVDBGQlQwRXNTVUZCVVN4UFFVRlpSQ3hGUVVGTFF5eERRVUZITEVWQlFVbEdMRVZCUVVFc1QwRkRNME1zUTBGR1QwRXNSVUZCVXl4aFFVRkJTeXhGUVV0VUxGTkJRVk5ETEVWQlFWZEtMRVZCUVhkQ0xFTkJReTlETEU5QlFVbEJMRVZCUVVrc1RVRkJVU3hGUVVGVlJpeEZRVUZCTEZkQlJXNUNMRU5CUVVVc1MwRkJUU3hWUVVGWExFMUJRVTlGTEVOQlFVa3NRMEZEZWtNc1EwRktUMFlzUlVGQlV5eFJRVUZCVFN4RlFVOVVMRk5CUVZORExFVkJRVlZETEVWQlFUaENMRU5CUTNCRUxFOUJRVkZCTEVWQlFVOHNTMEZCVFN4RFFVTnFRaXhKUVVGTExHRkJRMFFzVDBGQlQxSXNSVUZCUVN4UlFVTllMRWxCUVVzc1ZVRkRSQ3hQUVVGUFFTeEZRVUZCTEZkQlExZ3NTVUZCU3l4UFFVTkVMRTlCUVU5TkxFVkJRVkZGTEVWQlFVOHNTMEZCU3l4RlFVTXZRaXhKUVVGTExGVkJRMFFzVDBGQlQxQXNSVUZCUzA4c1JVRkJUeXhMUVVGTExFTkJRMmhETEVOQlEwb3NRMEZZVDFJc1JVRkJVeXhQUVVGQlR5eEZRV05VTEZOQlFWTkZMRVZCUVZORUxFVkJRVFJDTEVOQlEycEVMRTlCUVZGQkxFVkJRVThzUzBGQlRTeERRVU5xUWl4SlFVRkxMR0ZCUTBRc1RVRkJUeXhIUVVOWUxFbEJRVXNzVlVGRFJDeE5RVUZQTEVkQlExZ3NTVUZCU3l4UFFVTkVMRTlCUVU5QkxFVkJRVThzVFVGQlRTeE5RVUZSTEVWQlEyaERMRWxCUVVzc1ZVRkRSQ3hOUVVGUExFVkJRMllzUTBGRFNpeERRVmhQVWl4RlFVRlRMRTFCUVVGVExFVkJZMVFzVTBGQlUwTXNSVUZCVjBZc1JVRkJiVUpITEVWQlFUUkNMRU5CUTNSRkxFOUJRVkZJTEVWQlFVOHNTMEZCVFN4RFFVTnFRaXhKUVVGTExHRkJRMFFzVDBGQlQwY3NSVUZEV0N4SlFVRkxMRlZCUTBRc1QwRkJUMWdzUlVGQlFTeFZRVU5ZTEVsQlFVc3NUMEZEUkN4UFFVRlBVU3hGUVVGUExFMUJRMnhDTEVsQlFVc3NWVUZEUkN4UFFVRlBTU3hGUVVGeFFrUXNSVUZCV1Vnc1JVRkJUeXhMUVVGTExFTkJRelZFTEVOQlEwb3NRMEZZVDFJc1JVRkJVeXhSUVVGQlZTeEZRV05VTEZOQlFWTkhMRVZCUVdGRExFVkJRVEJETEVOQlEyNUZMRTlCUVU5RExFVkJRV05FTEVWQlFWZEZMRWRCUVUxQkxFTkJRVU1zUTBGRE0wTXNRMEZHVDJoQ0xFVkJRVk1zVlVGQlFXRXNSVUZMVkN4VFFVRlRSU3hGUVVOYVJDeEZRVU5CUnl4RlFVTlRMRU5CUTFRc1QwRkJUME1zUlVGQmVVSktMRVZCUVZkRkxFZEJRVTFITEVkQlFVOHNVVUZCVVVZc1JVRkJVVVFzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4WlFVRlpMRU5CUXpkR0xFTkJURTlvUWl4RlFVRlRMR05CUVVGbExFVkJVVlFzVTBGQlUwY3NSVUZEV2tvc1JVRkRRVWNzUlVGRGIwSXNRMEZEY0VJc1NVRkJUVWNzUlVGQmEwSXNRMEZCUXl4RlFVTnVRa01zUlVGQmMwSXNRMEZCUXl4RlFVTTNRaXhSUVVGVFF5eExRVUZYVWl4RlFVRlZMRU5CUXpGQ0xFbEJRVTFUTEVWQlFXTk9MRVZCUVZGTExFTkJRVThzUlVGRGJrTXNSMEZCU1N4RFFVRkRReXhGUVVGWkxGZEJRVmtzVDBGQlQwRXNSVUZCV1N4TFFVRkxMRVZCUlhKRUxFbEJRVTFtTEVWQlFWTmxMRVZCUVZrc1RVRkRNMElzUjBGQlNXWXNTVUZCVnl4UFFVZG1MRWxCUVVsRExFVkJRVTFFTEVOQlFVMHNSVUZCUnl4UFFVRlBWeXhIUVVGUExGRkJRVkZ1UWl4RlFVRkJMRTlCUVU4c1JVRkZOVU5STEVWQlFVOHNUMEZCVXl4bFFVZG9Ra0VzUlVGQlR5eE5RVUZSTEU5QlFWRlpMRVZCUVUwc1MwRkJTMW9zUlVGQlR5eExRVUZMTEVWQlEzcERRU3hGUVVGUExFMUJRVkVzVjBGQlYyRXNSVUZCVlN4TFFVRkxZaXhGUVVGUExFdEJRVXNzUjBGRGJFVXNRMEZSUVN4UFFVRkpXU3hGUVVGTkxGRkJRVlVzUjBGQlMwTXNSVUZCVlN4UlFVRlZMRVZCUTJ4RFJpeEhRVUZQTEZGQlFWRnVRaXhGUVVGQkxGVkJRVlVzUlVGRGVrSnZRaXhGUVVGTkxFOUJRVk1zUjBGQlMwTXNSVUZCVlN4UlFVRlZMRVZCUTNoRFJpeEhRVUZQTEZGQlFWRnNRaXhGUVVGTGRVSXNSVUZCWVVvc1EwRkJTeXhEUVVGRExFTkJRVU1zUlVGRGVFTkJMRVZCUVUwc1VVRkJWU3hIUVVGTFF5eEZRVUZWTEU5QlFWTXNSVUZEZUVOR0xFZEJRVThzVVVGQlVXSXNSVUZCVVcxQ0xFVkJRVk5LTEVOQlFWTXNRMEZCUXl4RFFVRkRMRVZCUlRORFJpeEhRVUZQTEZGQlFWRnVRaXhGUVVGUkxFdEJRVXRaTEVWQlFYRkNXU3hGUVVGaFNpeERRVUZMTEVWQlFVZExMRVZCUVZOS0xFTkJRVk1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZGTVVjc1EwRjBRMDl5UWl4RlFVRlRMSGxDUVVGQmEwSXNSVUY1UTFRc1UwRkJVMUVzUlVGQlUwTXNSVUZCZVVNc1EwRkRPVVFzVDBGQlQwTXNSVUZCVlVRc1JVRkJWVmdzUjBGQlRVRXNRMEZCUXl4RFFVTjBReXhEUVVaUGFFSXNSVUZCVXl4TlFVRkJNRUlzUlVGTFZDeFRRVUZUUlN4RlFVRm5RbVFzUlVGQmRVSkhMRVZCUVhsRUxFTkJRelZITEU5QlFVOVpMRVZCUVd0Q1ppeEZRVUZYUlN4SFFVRk5SeXhIUVVGUExGRkJRVkZHTEVWQlFWRkVMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzV1VGQldTeERRVU4wUml4RFFVWlBhRUlzUlVGQlV5eFZRVUZCTkVJc1JVRkxWQ3hUUVVGVFF5eEZRVU5hWml4RlFVTkJSeXhGUVVOdlFpeERRVU53UWl4SlFVRk5SeXhGUVVGclFpeERRVUZETEVWQlEyNUNReXhGUVVGelFpeERRVUZETEVWQlF6ZENMRkZCUVZORExFdEJRVmRTTEVWQlFWVXNRMEZETVVJc1NVRkJUVk1zUlVGQlkwNHNSVUZCVVVzc1EwRkJUeXhGUVVOdVF5eEhRVUZKTEVOQlFVTkRMRVZCUVZrc1YwRkJXU3hQUVVGUFFTeEZRVUZaTEV0QlFVc3NSVUZGY2tRc1NVRkJUV1lzUlVGQlUyVXNSVUZCV1N4TlFVTXpRaXhIUVVGSlppeEpRVUZYTEU5QlIyWXNTVUZCU1VFc1JVRkJUeXhQUVVGVExHRkJRV01zVDBGQlQxY3NSMEZCVHl4UlFVRlJia0lzUlVGQlFTeFZRVUZWTEVWQlJUbEVVeXhGUVVGTlJDeERRVUZOTEVsQlIxcEJMRVZCUVU4c1RVRkJVU3hQUVVGUldTeEZRVUZOTEV0QlFVdGFMRVZCUVU4c1MwRkJTeXhGUVVONlEwRXNSVUZCVHl4TlFVRlJMRmRCUVZkaExFVkJRVlVzUzBGQlMySXNSVUZCVHl4TFFVRkxMRWRCUTJ4RkxFTkJWMEVzVDBGQlNWa3NSVUZCVFN4UlFVRlZMRWRCUVV0RExFVkJRVlVzVVVGQlZTeEZRVU5zUTBZc1IwRkJUeXhSUVVGUmJrSXNSVUZCUVN4UFFVRlBMRVZCUTNSQ2IwSXNSVUZCVFN4UFFVRlRMRWRCUVV0RExFVkJRVlVzVVVGQlZTeEZRVU40UTBZc1IwRkJUeXhSUVVGUmJrSXNSVUZCVVN4TFFVRkxlVUlzUlVGQlUwd3NRMEZCU3l4RFFVRkRMRU5CUVVNc1JVRkROVU5CTEVWQlFVMHNVVUZCVlN4SFFVRkxReXhGUVVGVkxFOUJRVk1zUlVGRGVFTkdMRWRCUVU4c1VVRkJVVzVDTEVWQlFWRXNVVUZCVVhkQ0xFVkJRV0ZJTEVOQlFWTXNRMEZCUXl4RFFVRkRMRVZCUlhaRVJpeEhRVUZQTEZGQlFWRmlMRVZCUVZGTkxFVkJRWEZDV1N4RlFVRmhTQ3hEUVVGVExFVkJRVWRKTEVWQlFWTk1MRU5CUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGRmNrY3NRMEY2UTA5d1FpeEZRVUZUTEd0Q1FVRkJOa0lzUlVFMFExUXNVMEZCVTB3c1JVRkJaMEpOTEVWQlFYZENMRU5CUTNCRUxFZEJRVWxCTEVWQlFVc3NVVUZCVlN4RlFVRkhMRTlCUVU4c1NVRkJTU3hKUVVNMVFpeEhRVUZKUVN4RlFVRkxMRkZCUVZVc1JVRkJSeXhQUVVGUFFTeEZRVUZMTEVOQlFVTXNSVUZIZUVNc1NVRkJTVU1zUlVGQlZTeERRVUZETEVWQlFXVXNUMEZCVDBRc1EwRkJTU3hGUVVGRkxFdEJRVXNzUTBGQlEwVXNSVUZCUjBNc1NVRkJUVVFzUlVGQlJTeExRVUZQUXl4RlFVRkZMRWxCUVVrc1JVRkZla1VzUzBGQlQwWXNSVUZCVHl4UFFVRlRMRWRCUVVjc1EwRkRkRUlzU1VGQlRVY3NSVUZCVXl4SlFVRkpMRWxCUTJKRExFVkJRVlZLTEVWQlFVOHNTVUZCU1N4RlFVVXpRaXhSUVVGVFZDeExRVUZYVXl4RlFVRlBMRU5CUVVNc1JVRkRjRUpKTEVWQlFWRXNTVUZCU1dJc1EwRkJUeXhIUVVGSFdTeEZRVUZQTEVsQlFVbGFMRU5CUVU4c1JVRkhhRVJUTEVWQlFVOHNRMEZCUXl4RlFVRkpSeXhEUVVOb1FpeERRVVZCTEU5QlFVOUlMRVZCUVU4c1EwRkJReXhEUVVOdVFpeERRVzVDVHk5Q0xFVkJRVk1zWVVGQlFYZENMRVZCYzBKVUxGTkJRVk5ETEVWQlFWbExMRVZCUVhkQ0xFTkJRMmhFTEVkQlFVbEJMRVZCUVVzc1VVRkJWU3hGUVVGSExFOUJRVThzU1VGQlNTeEpRVU0xUWl4SFFVRkpRU3hGUVVGTExGRkJRVlVzUlVGQlJ5eFBRVUZQUVN4RlFVRkxMRU5CUVVNc1JVRkhlRU1zU1VGQlRVa3NSVUZCVXl4SlFVRkpMRWxCUTI1Q0xGRkJRVmRvUXl4TFFVRlBORUlzUlVGRFpDeFJRVUZYVWl4TFFVRlhjRUlzUlVGRGJFSm5ReXhGUVVGUExFbEJRVWxhTEVOQlFVOHNSVUZKTVVJc1QwRkJUMWtzUTBGRFdDeERRV0pQYkVNc1JVRkJVeXhUUVVGQmVVSXNSVUZuUWxRc1UwRkJVMklzUlVGQmQwSllMRVZCUVdOTExFVkJRWGxDTEVOQlF6TkZMRWRCUVVsTUxFVkJRVXNzUzBGQlQwc3NSVUZCVVN4TFFVRk5MRU5CUlRGQ0xFbEJRVTAwUWl4RlFVRlRMRWxCUVVrc1NVRkJTV3BETEVOQlFVa3NSVUZETTBJc1VVRkJVM0ZDTEV0QlFWZG9RaXhGUVVOb1FqUkNMRVZCUVU4c1QwRkJUMW9zUTBGQlR5eEZRVWQ2UWl4UFFVRlBXU3hEUVVOWUxFdEJRWFZETEVOQlEyNURMRWxCUVUxQkxFVkJRVk1zU1VGQlNTeEpRVU51UWl4UlFVRlRXaXhMUVVGWGNrSXNSVUZEV2tzc1JVRkJVU3hKUVVGSlowSXNRMEZCVHl4SFFVTjJRbGtzUlVGQlR5eEpRVUZKV2l4RFFVRlBMRVZCUjNSQ0xFOUJRVTlaTEVOQlExZ3NRMEZEU2l4RFFXeENUMnhETEVWQlFWTXNjVUpCUVVGWkxFbEJPVTVJV2l4UlFVRkJMRXREYVVWV0xFbEJRVlZ2UXl4UFFVRldMRU5CUlZWQkxFVkJRVUVzU1VGQll5eFBRVVZ3UWl4VFFVRlRReXhGUVVGVFF5eEZRVUZyUXl4RFFVTjJSQ3hOUVVGUExFTkJRVVVzUzBGQlRTeFhRVUZaTEV0QlFVRkJMRU5CUVVzc1EwRkRjRU1zUTBGR1QwWXNSVUZCVXl4VFFVRkJReXhGUVVsVUxGTkJRVk5GTEVWQlFWRkRMRVZCUVcxRExFTkJRM1pFTEUxQlFVOHNRMEZCUlN4TFFVRk5MRlZCUVZjc1RVRkJRVUVzUTBGQlRTeERRVU53UXl4RFFVWlBTaXhGUVVGVExGRkJRVUZITEVWQlNWUXNVMEZCVTBVc1JVRkJVME1zUlVGQmEwSkRMRVZCUVdORExFVkJRU3RDTEVOQlEzQkdMRTFCUVU4c1EwRkJSU3hMUVVGTkxGZEJRVmtzUzBGQlFVWXNSVUZCVFN4SFFVRkJReXhGUVVGSkxFMUJRVUZETEVOQlFVMHNRMEZETDBNc1EwRkdUMUlzUlVGQlV5eFRRVUZCU3l4RlFVbFVMRk5CUVZOSkxFVkJRVTFETEVWQlFXbENSQ3hGUVVFclFpeERRVU5zUlN4TlFVRlBMRU5CUVVVc1MwRkJUU3hYUVVGWkxFdEJRVTFETEVWQlFVc3NUVUZCVDBRc1JVRkJUeXhIUVVGSkxFOUJRVkVzUTBGRGNFVXNRMEZHVDFRc1JVRkJVeXhOUVVGQlV5eEZRVXRVTEZOQlFWTkZMRVZCUVdOVUxFVkJRVEJDTEVOQlEzQkVMRWxCUVVsVkxFVkJRVkZXTEVWQlFVc3NUVUZCVFN4SFFVRkhMRVZCUTNSQ1Z5eEZRVUZ4UW1Jc1JVRkJXU3hUUVVGVFdTeEZRVUZOTEVOQlFVTXNRMEZCUXl4RlFVTjBSQ3hSUVVGVFNDeEZRVUZSTEVWQlFVZEJMRVZCUVZGSExFVkJRVTBzVDBGQlVVZ3NTVUZEZEVOSkxFVkJRVk5pTEVWQlFWa3NUVUZCVFdFc1JVRkJVV0lzUlVGQldTeFJRVUZSV1N4RlFVRk5TQ3hEUVVGTExFTkJRVU1zUTBGQlF5eEZRVWQ0UlN4UFFVRlBTU3hEUVVOWUxFTkJVazlpTEVWQlFWTXNZMEZCUVZjc1JVRlZWQ3hUUVVGVFJ5eEZRVUZQUXl4RlFVRm5RbGdzUlVGQmNVTXNRMEZEZUVVc1RVRkJUeXhEUVVGRkxFdEJRVTBzVTBGQlZTeFZRVUZYVnl4RlFVRk5MRTFCUVVGWUxFTkJRVTBzUTBGRGNFUXNRMEZHVDBvc1JVRkJVeXhQUVVGQll5eEZRVWxVTEZOQlFWTkZMRVZCUVV0QkxFVkJRV3RDUkN4RlFVRjNReXhEUVVNelJTeE5RVUZQTEVOQlFVVXNTMEZCVFN4WFFVRlpMRXRCUVVGRExFVkJRVTBzVlVGQlYwUXNRMEZCU3l4RFFVTnlSQ3hEUVVaUFppeEZRVUZUTEV0QlFVRm5RaXhGUVVsVUxGTkJRVk5ETEVWQlFVdERMRVZCUVhORExFTkJRM1pFTEUxQlFVOHNRMEZCUlN4TFFVRk5MRTlCUVZFc1QwRkJRVUVzUTBGQlR5eERRVU5zUXl4RFFVWlBiRUlzUlVGQlV5eExRVUZCYVVJc1JVRkpWQ3hUUVVGVFJTeEZRVUZQUkN4RlFVRnpSQ3hEUVVONlJTeE5RVUZQTEVOQlFVVXNTMEZCVFN4VFFVRlZMRTlCUVVGQkxFTkJRVThzUTBGRGNFTXNRMEZHVDJ4Q0xFVkJRVk1zVDBGQlFXMUNMRVZCU1ZRc1UwRkJVME1zUlVGQlQwTXNSVUZCYzBNc1EwRkRla1FzVFVGQlR5eERRVUZGTEV0QlFVMHNWVUZCVnl4TlFVRkJRU3hEUVVGTkxFTkJRM0JETEVOQlJrOXlRaXhGUVVGVExFOUJRVUZ2UWl4RlFVbFVMRk5CUVZORkxFVkJRVmxtTEVWQlFTdENMRU5CUTNaRUxFOUJRVTlCTEVkQlFVMHNUVUZCVVVFc1IwRkJUU3hMUVVGUFFTeEhRVUZOTEV0QlFVOUJMRWRCUVUwc1RVRkJVVUVzUjBGQlRTeE5RVUZSUVN4SFFVRk5MRWRCUTNKR0xFTkJSazlRTEVWQlFWTXNXVUZCUVhOQ0xFVkJTMVFzVTBGQlUwTXNSVUZCYVVKRExFVkJRV3RDUXl4RlFVRnhRaXhKUVVGSkxFbEJRVWtzUTBGQlEzcENMRVZCUVVFc1IwRkJSeXhEUVVGRExFVkJRV2RDTEVOQlEycEhMRTlCUVZGM1FpeEZRVUZMTEV0QlFVMHNRMEZEWml4SlFVRkxMRmRCUlVRc1QwRkRTVUVzUlVGQlN5eExRVUZQTEZOQlExcEJMRVZCUVVzc1MwRkJTeXhOUVVGUkxGbEJRMnhDUVN4RlFVRkxMRXRCUVVzc1RVRkJVWGhDTEVWQlFVRXNTMEZEYkVKM1FpeEZRVUZMTEUxQlFVMHNUVUZCVVN4WFFVTnVRa1VzUjBGQlV5eFRRVUZUUml4RlFVRkxMRTFCUVUwc1MwRkJTeXhGUVVVNVFrTXNSVUZCVFN4SlFVRkpSQ3hGUVVGTExFMUJRVTBzUzBGQlN5eEZRVUZWTEVsQlFVa3NTVUZEYUVNc1NVRkJTU3hKUVVGSkxFTkJRVU5CTEVWQlFVc3NUVUZCVFN4TFFVRkxMRU5CUVVNc1JVRkpia05ITEVkQlFWRXNVMEZCVXl4RFFVRkRTaXhGUVVGcFFrTXNSVUZCU3l4TFFVRk5ReXhEUVVGTExFVkJRVWRHTEVWQlFXbENReXhGUVVGTExFMUJRVTlETEVOQlFVc3NRMEZCUXl4RFFVRkRMRVZCUTNKSExFbEJRVXNzVjBGRFJDeFBRVUZQUlN4SFFVRlJMRk5CUVZOSUxFVkJRVXNzVlVGQlZTeEpRVUZMU1N4SFFVRk5UQ3hGUVVGcFFrc3NSVUZCUjBnc1EwRkJTeXhEUVVGRExFTkJRVU1zUlVGRGFrWXNTVUZCU3l4VFFVTkVMRWxCUVUxSkxFVkJRVmRLTEVkQlFVRXNTMEZCUVVFc1JVRkJVeXhKUVVGSkxFbEJRemxDTEZGQlFWZExMRXRCUVU5T0xFVkJRVXNzVlVGQlYwc3NSVUZCVXl4SlFVRkpReXhEUVVGSExFVkJSV3hFTEU5QlFVOVFMRVZCUVdsQ1F5eEZRVUZMTEUxQlFVOUxMRU5CUVZFc1JVRkRhRVFzU1VGQlN5eFBRVU5FTEU5QlFVOUdMRWRCUVZFc1UwRkJVMGdzUlVGQlN5eFBRVUZQTEVsQlFVdFBMRWRCUVUxU0xFVkJRV2xDVVN4RlFVRkhUaXhEUVVGTExFTkJRVU1zUTBGQlF5eEZRVU01UlN4SlFVRkxMRlZCUTBRc1QwRkJUMFlzUlVGQmFVSkRMRVZCUVVzc1RVRkJUME1zUTBGQlN5eEZRVU0zUXl4SlFVRkxMRk5CUTBRc1QwRkJUMFVzUjBGQlVTeFRRVUZUTEU5QlFVOHNUMEZCVDBnc1JVRkJTeXhOUVVGTkxFVkJRVVVzU1VGQlMwOHNSMEZCVFZJc1JVRkJhVUpSTEVWQlFVZE9MRU5CUVVzc1EwRkJReXhEUVVGRExFVkJRemRHTEVsQlFVc3NWMEZEUkN4UFFVRkpRU3hIUVVGVFFTeEZRVUZOTEVsQlFVbEVMRVZCUVVzc1NVRkJTU3hGUVVGVkxFbEJRVWtzU1VGRGJFTXNTVUZCU1N4SlFVRkpMRU5CUVVOQkxFVkJRVXNzU1VGQlNTeERRVUZETEVWQlEyNURMRWxCUVVzc1ZVRkRSQ3hQUVVGUExFbEJRVWtzUjBGRGJrSXNRMEZEU2l4RFFYQkRUM2hDTEVWQlFWTXNhVUpCUVVGMVFpeEZRWFZEVkN4VFFVRlRVeXhGUVVGVFVpeEZRVUV3UWl4RFFVTXZReXhQUVVGUlFTeEZRVUZMTEV0QlFVMHNRMEZEWml4SlFVRkxMRmRCUTBRc1QwRkJTVUVzUlVGQlN5eExRVUZQTEZGQlEwd3NSMEZCUjFFc1JVRkJVMUlzUlVGQlN5eEpRVUZKTEVOQlFVTXNTVUZCU1ZFc1JVRkJVMUlzUlVGQlN5eExRVUZMTEVOQlFVTXNTVUZIYkVRc1IwRkJSMUVzUlVGQlUxSXNSVUZCU3l4SlFVRkpMRU5CUVVNc1NVRkJTVUVzUlVGQlN5eEZRVUZGTEVsQlFVbFJMRVZCUVZOU0xFVkJRVXNzUzBGQlN5eERRVUZETEVkQlEzQkZMRWxCUVVzc1YwRkRSQ3hOUVVGUExFZEJRVWRSTEVWQlFWTlNMRVZCUVVzc1NVRkJTU3hEUVVGRExFbEJRVWxCTEVWQlFVc3NWVUZCVlN4SlFVRkpVU3hEUVVGUkxFVkJRVVVzUzBGQlN5eEpRVUZKTEVOQlFVTXNTVUZETlVVc1NVRkJTeXhUUVVORUxFMUJRVThzU1VGQlNWSXNSVUZCU3l4VlFVRlZMRXRCUVVzc1NVRkJTU3hEUVVGRExGRkJRVkZSTEVWQlFWTlNMRVZCUVVzc1MwRkJTeXhEUVVGRExFZEJRM0JGTEVsQlFVc3NUMEZEUkN4TlFVRlBMRWxCUVVsQkxFVkJRVXNzVDBGQlR5eEpRVUZKVVN4RFFVRlJMRVZCUVVVc1MwRkJTeXhKUVVGSkxFTkJRVU1zU1VGRGJrUXNTVUZCU3l4VlFVTkVMRTFCUVU4c1NVRkJTVUVzUlVGQlUxSXNSVUZCU3l4TFFVRkxMRU5CUVVNc1IwRkRia01zU1VGQlN5eFRRVU5FTEUxQlFVOHNTVUZCU1N4UFFVRlBMRkZCUVZGQkxFVkJRVXNzVFVGQlRTeEZRVU5vUXl4SlFVRkpMRU5CUVVNc1EwRkJRMU1zUlVGQlIwWXNRMEZCUXl4SlFVRk5MRWRCUVVkRkxFTkJRVU1zUzBGQlMwUXNSVUZCVTBRc1EwRkJReXhEUVVGRExFVkJRVVVzUlVGRGRFTXNTMEZCU3l4SlFVRkpMRU5CUVVNc1NVRkRia0lzU1VGQlN5eFhRVU5FTEU5QlFVOVFMRVZCUVVzc1MwRkRhRUlzU1VGQlN5eFZRVU5FTEVsQlFVMVZMRVZCUVZWU0xFZEJRVk1zVlVGQlZVWXNSVUZCU3l4TFFVRkxMRVZCUXpkRExFZEJRVWtzUTBGQlExVXNSVUZCVXl4TlFVRlBMRTlCUTNKQ0xFOUJRVkZCTEVWQlFWRXNTMEZCVFN4RFFVTnNRaXhKUVVGTExGTkJRMFFzVFVGQlR5eEpRVUZKUVN4RlFVRlJMRXRCUVVzc1NVRkROVUlzVVVGRFNTeFBRVUZQVWl4SFFVRlRMRk5CUVZOUkxFVkJRVkVzUzBGQlN5eERRVU01UXl4RFFVTlNMRU5CUTBvc1EwRm9RMDlzUXl4RlFVRlRMRk5CUVVGblF5eEZRV3REU0doRExFVkJRVUVzUzBGQlQwRXNSVUZCV1N4UlFVRlJMRWxCUVVrc1NVRnFTUzlDUVN4UlFVRkJMRXRLWmxZc1NVRkJUVzFETEVWQlFXVXNhVUpCUVcxRExFTkJRek5FTEU5QlFWTkRMRWRCUTBnc1UwRkJUeXh4UWtGQmNVSXNSVUZEZWtJc1NVRkJTME1zUjBGQlVTeFBRVUZQTEZkQlFWZEJMRU5CUVVjc1EwRkJReXhGUVVOdVF5eExRVUZMTEZGQlFWRXNSVUZIZEVJc1QwRkJVME1zUjBGRFNDeFRRVUZQTEVkQlFVY3NSVUZEVUN4TFFVTkxMRTFCUVVsQkxFVkJRVVVzWjBKQlFXMUNMRk5CUVU4c1MwRkJTeXhEUVVGRExFVkJRMjVETEZGQlFWRXNRMEZCUXl4RlFVTlVMRWxCUVV0RExFZEJRVlZCTEVWQlFVMHNTMEZCU3l4RlFVRkZMRU5CUVVNc1EwRkRkRU1zUlVGRFF5eExRVUZQTEZOQlFVOHNSMEZCUnl4RFFVRkRMRVZCUTJ4Q0xFdEJRVXNzVVVGQlVTeEZRVVYwUWl4blFrRkJhMEpJTEVkQlExb3NVMEZCVHl4SlFVRkpMRVZCUTFJc1MwRkJUeXhMUVVGSExFVkJRMVlzU1VGQlMwa3NSMEZGUlVFc1NVRkJXU3hKUVVGWkxFbEJRM2hDUVN4SlFVRlpMRXRCUVdFc1MwRkRha0lzUzBGQlQwRXNRMEZEZEVJc1JVRkhWQ3hMUVVGUFNpeEhRVU5FTEZOQlFVOHNkVUpCUVhWQ0xFVkJRek5DTEVsQlFVdERMRWRCUVZGQkxFVkJRVWtzV1VGQldTeEhRVUZMTEUxQlFVMHNSVUZEZUVNc1MwRkJTeXhUUVVGVExFVkJSM1pDTEVsQlFVMUVMRWRCUTBFc1UwRkRTU3hUUVVGUExFZEJRVWNzUlVGRFZpeE5RVUZOTEZOQlFVOHNhVVZCUVdsRkxFVkJRVVVzUzBGQlN5eE5RVUZOTEVOQlFVTXNSVUZCUlN4TFFVRkxMRVZCUTNKSExFTkJRVU5MTEVWQlFVOURMRWxCUVZORUxFVkJRVkZETEVWQlFVc3NTMEZCU3l4RlFVRkZMRU5CUTNwRExFVkJRVVVzUzBGQlN5eExRVUZMTEVWQlIyaENMRmRCUVdGT0xFZEJRMUFzVTBGRFNTeE5RVUZOTEZOQlFVOHNaMEpCUVdkQ0xFVkJRVXNzVTBGQlQwOHNSVUZCVnl4RlFVRkZMRXRCUVVzc1RVRkJUU3hEUVVGRExFVkJRMnhGTEUxQlFVMHNVMEZCVHl4eFFrRkJjVUlzUlVGQlN5eFRRVUZQUVN4RlFVRlhMRVZCUVVVc1MwRkJTeXhOUVVGTkxFTkJRVU1zUlVGQlJTeExRVUZMTEVWQlEyaEdMRU5CUVVORExFVkJRVTlHTEVsQlFWTkZMRVZCUVZGR0xFVkJRVXNzUzBGQlN5eEZRVUZGTEVOQlEzcERMRVZCUVVVc1MwRkJTeXhWUVVGVkxFVkJSM0pDTEV0QlFVOU9MRWRCUTBRc1UwRkJUeXgxUWtGQmQwSXNRMEZCUXl4RlFVTTNRaXhKUVVGTFV5eEhRVUZqUXl4SFFVRkxMRmRCUVZkRUxFTkJRVk1zUTBGQlF5eEZRVU0zUXl4TFFVRkxMRmRCUVZjc1JVRkpla0lzVlVGQldWQXNSMEZEVGl4VFFVRlRMRk5CUVU4c1IwRkJSeXhGUVVGRkxFOUJRVThzUTBGQlF5eEZRVUZIUVN4RlFVRkZMRXRCUVUwc1EwRkJRMU1zUlVGQlIwTXNTMEZEZEVORUxFVkJRVVVzVDBGQlV5eEpRVUZIUXl4RlFVRkZMRTFCUVZFc1NVRkRja0pCTEVWQlExWXNSVUZCUlN4TFFVRkxMRmRCUVZjc1JVRkhka0lzWjBKQlFXdENXaXhIUVVOYUxGTkJRVThzVFVGQlRTeEZRVU5XTEVsQlFVdERMRWRCUVZGQkxFTkJRV1VzUlVGRE5VSXNTMEZCU3l4WlFVRlpMRVZCUnpGQ0xHRkJRV1ZFTEVkQlExUXNVMEZCVHl4VFFVRlRMRVZCUTJJc1NVRkJTME1zUjBGQlVVRXNRMEZCWlN4RlFVTTFRaXhMUVVGTExHMUNRVUZ0UWl4RlFVZHFReXhuUWtGQmEwSkVMRWRCUTFvc1UwRkJUeXhuUWtGQlowSXNSVUZEY0VJc1NVRkJTME1zUjBGQlVVRXNRMEZCWlN4RlFVTTFRaXhMUVVGTExESkRRVUV5UXl4RlFVZDZSQ3haUVVGalJDeEhRVU5TTEZOQlFVOHNVVUZCVVN4RlFVTmFMRWxCUVV0aExFZEJRVk1zUjBGQlpTeEZRVU0zUWl4TFFVRkxMRTlCUVU4c1JVRkRja0lzVjBGQllXSXNSMEZEVUN4VFFVRlBMRkZCUVZFc1JVRkRXaXhKUVVGTFlTeEhRVUZUTEVkQlFXVXNSVUZETjBJc1MwRkJTeXhOUVVGTkxFVkJSM0JDTEZOQlFWZGlMRWRCUTB3c1UwRkJVeXhUUVVGUExFOUJRVThzUlVGQlN5eFRRVUZQTEVkQlFVY3NSVUZCU3l4VFFVRlBMRTlCUVU4c1JVRkJSeXhEUVVGRFl5eEZRVUZOWkN4RlFVRkhaU3hKUVVNM1JFTXNSVUZCVXl4WFFVRlhMRU5CUVVVc1MwRkJUU3hQUVVGUExGTkJRVk5HTEVOQlFVa3NSVUZCUnl4TlFVRlBMRTlCUVU4c1UwRkJVME1zUTBGQlN5eERRVUZGTEVOQlFVTXNRMEZETlVZc1JVRkJSU3hMUVVGTExIbERRVUY1UXl4RlFVTnlSQ3hqUVVGblFtWXNSMEZEVml4TlFVTkZMRWRCUVVjc1QwRkJUeXhMUVVGTGFVSXNSVUZCWlN4RlFVTjZRaXhMUVVGTExFTkJRVU5ETEVWQlFVZERMRWxCUVUxQkxFVkJRVVVzVDBGQlUwUXNSVUZCUlN4TlFVRk5MRVZCUTJ4RExFbEJRVTBzVVVGQlRTeERRVU55UWl4RlFVTktMRXRCUVU5b1FpeEhRVU5JYTBJc1IwRkRTV3hDTEVWQlFVVXNVMEZEUkcxQ0xFZEJRMHNzVTBGQlV5eFRRVUZQTEVkQlFVY3NSVUZCU3l4VFFVRlBMRTlCUVU4c1JVRkJSeXhEUVVGRGNrSXNSVUZCUjNOQ0xFbEJRVkZFTEVWQlFVY3NTVUZCU1N4RFFVRkZMRWxCUVVzc1QwRkJUeXhUUVVGVFF5eERRVUZITEVOQlFVVXNRMEZCUXl4RFFVRkRMRVZCUXk5R1F5eEhRVU5MTEZOQlFWTXNVMEZCVHl4SFFVRkhMRVZCUVVzc1UwRkJUeXhQUVVGUExFVkJRVWNzUTBGQlEzWkNMRVZCUVVkM1FpeEpRVUZUUkN4RlFVRkpMRWxCUVVrc1EwRkJSU3hMUVVGTkxFOUJRVThzVTBGQlUwTXNRMEZCU1N4RFFVRkZMRU5CUVVNc1EwRkJReXhGUVVOdVIwTXNSMEZEU3l4VFFVRlRMRk5CUVU4c1IwRkJSeXhGUVVGTExGTkJRVThzVDBGQlR5eEZRVUZITEVOQlFVTjZRaXhGUVVGSE1FSXNTVUZETTBORUxFVkJRVXNzU1VGQlNTeERRVUZGTEU5QlFWRXNUMEZCVHl4VFFVRlRReXhEUVVGTkxFTkJRVVVzUTBGQlF5eERRVU5vUkN4RlFVTklReXhIUVVOTExGTkJRVk1zVTBGQlR5eEhRVUZITEVWQlFVc3NVMEZCVHl4UFFVRlBMRVZCUVVjc1EwRkJRek5DTEVWQlFVYzBRaXhKUVVNelEwUXNSVUZCVFN4SlFVRkpMRU5CUVVVc1QwRkJVU3hQUVVGUExGTkJRVk5ETEVOQlFVMHNRMEZCUlN4RFFVRkRMRU5CUTJwRUxFVkJRMGhETEVkQlEwc3NUVUZEU1N4VFFVRlRMRk5CUVU4c1IwRkJSeXhGUVVGTExGTkJRVThzVDBGQlR5eEZRVUZITEVOQlFVTTNRaXhGUVVGSE9FSXNTVUZETTBORUxFVkJRVThzU1VGQlNTeERRVUZGTEZsQlFXRXNUMEZCVHl4VFFVRlRReXhEUVVGWExFTkJRVVVzUTBGQlF5eERRVU0xUkN4RlFVTkZMRlZCUVZGRUxFTkJRVTBzUTBGRGNFSXNSVUZEU0VVc1IwRkRTeXhOUVVOSkxGTkJRVk1zVTBGQlR5eEhRVUZITEVWQlFVVXNSMEZCU3l4VFFVRlBMRWRCUVVjc1EwRkJReXhGUVVGTExGTkJRVThzYTBKQlFXdENMRVZCUVVjc1EwRkJRME1zUlVGQlNVTXNTVUZEZWtWR0xFVkJRVWNzVVVGQlVTeE5RVUZSUXl4RlFVRkxReXhGUVVGSkxFTkJRVVVzWTBGQlpTeEZRVUZMTEVOQlFVTXNRMEZEZGtRc1JVRkRSU3hUUVVGVExGTkJRVThzUjBGQlJ5eEZRVUZITEVsQlFVMUdMRVZCUVVjc1VVRkJVU3hOUVVGUExFTkJRVVVzWTBGQlpTeEZRVUZMTEVOQlFVTXNRMEZCUXl4RlFVTjBSU3hUUVVGVExGTkJRVThzUjBGQlJ5eEZRVUZMTEZOQlFVOHNiVUpCUVcxQ0xFVkJRVXNzVTBGQlR5eEhRVUZITEVWQlFVY3NRMEZCUTBjc1JVRkJTVU1zUlVGQlRVTXNTVUZETjBWTUxFVkJRVWNzVVVGQlVVa3NSVUZCVFN4RFFVRkZMR05CUVdVc1JVRkJTeXhEUVVGRExFTkJRelZETEVOQlEwb3NRMEZEVWl4RlFVTkxMRTlCUVZGS0xFZEJRV2xDUVN4RlFVRkhMRkZCUVZNc1dVRkJXU3hGUVVOcVJDeExRVUZMTEhsRFFVRjVReXhGUVVkMlJDeFRRVUZYTjBJc1IwRkRUQ3hOUVVORlFTeEZRVUZGTEdOQlFXTXNTVUZCUzIxRExFZEJRVTF3UWl4SFFVRm5RbTlDTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUXk5RGJrTXNSVUZCUlN4SlFVTk9MRVZCUVVVc1MwRkJTeXg1UkVGQmVVUXNSVUZIY0VVc1lVRkJaVVlzUjBGRFZDeE5RVU5GTEVkQlFVY3NUMEZCVHl4TFFVRkxjME1zUlVGQll5eEZRVU40UWl4TFFVRkxMRU5CUVVOd1FpeEZRVUZIUXl4SlFVRk5RU3hGUVVGRkxFOUJRVk5FTEVWQlFVVXNUVUZCVFN4RlFVTnNReXhKUVVGTkxGRkJRVTBzUTBGRGNrSXNSVUZEU2l4VFFVRlhhRUlzUjBGRFRDeFRRVUZQUVN4RlFVRkZMRTlCUVZVc1owSkJRV1ZCTEVWQlFVVXNZVUZCWXl4RFFVRkRjVU1zUlVGQlQzWkRMRVZCUVVkM1F5eEpRVU16UkVZc1IwRkJaVVVzUTBGQlF5eEZRVUZGTEZOQlFWVkRMRWRCUVUxQkxFVkJRVWxHTEVOQlFVc3NRMEZETDBNc1JVRkRTeXhQUVVGVExGTkJRVThzUjBGQlJ5eEZRVUZGTEV0QlFVOHNaVUZCWVN4RlFVRkZMRWRCUVVzc1pVRkJZU3hEUVVGRExFVkJRemxFTEVsQlFVdEhMRWRCUVdOQkxFVkJRVlVzVDBGQlR5eERRVUZETDBJc1JVRkJSMmRETEVsQlFVMW9ReXhGUVVGRkxFdEJRVXRuUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVONFJDeExRVUZMTEhWQ1FVRjFRaXhGUVVkeVF5eFJRVUZWTTBNc1IwRkJVU3hUUVVGUExFMUJRVTBzUlVGSEwwSXNaMEpCUVd0Q1JTeEhRVU5hTEUxQlEwVkJMRVZCUVVVc1MwRkRSa0VzUlVGQlJTeFRRVUZUTEVsQlFVdHRReXhIUVVGTlR5eEhRVUZyUWxBc1EwRkJReXhEUVVGRExFVkJRekZEYmtNc1JVRkJSU3hQUVVOR1FTeEZRVUZGTEVsQlEwWkJMRVZCUVVVc1ZVRkRSa0VzUlVGQlJTeExRVU5HUVN4RlFVRkZMRTlCUTBaQkxFVkJRVVVzVDBGRFRpeEZRVU5LTEdkQ1FVRnJRa0VzUjBGQlRVRXNSVUZCUlN4blFrRkJaMElzVFVGQlVTeFRRVUZQTEVkQlFVY3NSVUZCUlN4TFFVRlBMR1ZCUVdFc1JVRkJSU3hWUVVGVlFTeEZRVUZGTEdWQlFXVXNRMEZCUXl4RlFVTm9TQ3haUVVGalFTeEhRVU5TTEUxQlEwa3NVMEZCVDBFc1JVRkJSU3huUWtGQmJVSXNVMEZCVHl4SFFVRkhMRVZCUVVVc1MwRkJUeXhsUVVGaExFVkJRVWRCTEVWQlFVVXNaMEpCUVdsQ0xFTkJRVU15UXl4RlFVRkhReXhGUVVGSmJFTXNTVUZEZUVZc1EwRkJRMmxETEVOQlFVTXNSVUZCUlN4UFFVRlBha01zUTBGQlF5eERRVU5vUWl4RlFVTkJWaXhGUVVGRkxHVkJRMDRzUTBGRFVpeERRVUZETEVWQlIwdExMRWRCUVdNc1NVRkJTU3hQUVVGUGQwTXNSMEZCVnl4RlFVRkhMRVZCUVVVc1JVRkhiRU5VTEVkQlFXbENMRU5CUXpGQ0xFdEJRVTFWTEVWQlFWTXNWMEZCVnl4RFFVRkZMRTFCUVU4c1EwRkJSU3hEUVVGRExFVkJRM1JETEUxQlFVOUJMRVZCUVZNc1YwRkJWeXhEUVVGRkxFMUJRVThzUTBGQlJTeERRVUZETEVWQlEzWkRMRWRCUVVsQkxFVkJRVk1zVjBGQlZ5eERRVUZGTEUxQlFVOHNRMEZCUlN4RFFVRkRMRVZCUTNCRExFbEJRVXRCTEVWQlFWTXNWMEZCVnl4RFFVRkZMRTFCUVU4c1EwRkJSU3hEUVVGRExFVkJSWEpETEUxQlFVOUJMRVZCUVZNc1YwRkJWeXhEUVVGRkxFOUJRVkVzUTBGQlJTeERRVUZETEVWQlEzaERMRTlCUVZGQkxFVkJRVk1zVjBGQlZ5eERRVUZGTEU5QlFWRXNRMEZCUlN4RFFVRkRMRVZCUTNwRExFZEJRVWxCTEVWQlFWTXNWMEZCVnl4RFFVRkZMRTlCUVZFc1EwRkJSU3hEUVVGRExFVkJRM0pETEVsQlFVdEJMRVZCUVZNc1YwRkJWeXhEUVVGRkxFOUJRVkVzUTBGQlJTeERRVUZETEVWQlJYUkRMRXRCUVUxQkxFVkJRVk1zVjBGQlZ5eERRVUZGTEUxQlFVOHNRMEZCUlN4RFFVRkRMRVZCUTNSRExFMUJRVTlCTEVWQlFWTXNWMEZCVnl4RFFVRkZMRTFCUVU4c1EwRkJSU3hEUVVGRExFVkJRM1pETEVkQlFVbEJMRVZCUVZNc1YwRkJWeXhEUVVGRkxFMUJRVThzUTBGQlJTeERRVUZETEVWQlEzQkRMRWxCUVV0QkxFVkJRVk1zVjBGQlZ5eERRVUZGTEUxQlFVOHNRMEZCUlN4RFFVRkRMRVZCUTNKRExFVkJRVWRCTEVWQlFWTXNWMEZCVnl4RFFVRkZMRTFCUVU4c1EwRkJSU3hEUVVGRExFVkJSVzVETEVsQlFVdEJMRVZCUVZNc1YwRkJWeXhEUVVGRkxFdEJRVTBzUTBGQlJTeERRVUZETEVWQlEzQkRMRXRCUVUxQkxFVkJRVk1zVjBGQlZ5eERRVUZGTEV0QlFVMHNRMEZCUlN4RFFVRkRMRVZCUTNKRExFVkJRVWRCTEVWQlFWTXNWMEZCVnl4RFFVRkZMRXRCUVUwc1EwRkJSU3hEUVVGRExFVkJSV3hETEV0QlFVMUJMRVZCUVZNc1YwRkJWeXhEUVVGRkxFMUJRVThzUTBGQlJTeERRVUZETEVWQlEzUkRMRTFCUVU5QkxFVkJRVk1zVjBGQlZ5eERRVUZGTEUxQlFVOHNRMEZCUlN4RFFVRkRMRVZCUTNaRExFZEJRVWxCTEVWQlFWTXNWMEZCVnl4RFFVRkZMRTFCUVU4c1EwRkJSU3hEUVVGRExFVkJRM0JETEVsQlFVdEJMRVZCUVZNc1YwRkJWeXhEUVVGRkxFMUJRVThzUTBGQlJTeERRVUZETEVWQlEzSkRMRVZCUVVkQkxFVkJRVk1zVjBGQlZ5eERRVUZGTEUxQlFVOHNRMEZCUlN4RFFVRkRMRVZCUlc1RExFOUJRVkZCTEVWQlFWTXNWMEZCVnl4RFFVRkZMRkZCUVZNc1EwRkJSU3hEUVVGRExFVkJRekZETEZGQlFWTkJMRVZCUVZNc1YwRkJWeXhEUVVGRkxGRkJRVk1zUTBGQlJTeERRVUZETEVWQlF6TkRMRWxCUVV0QkxFVkJRVk1zVjBGQlZ5eERRVUZGTEZGQlFWTXNRMEZCUlN4RFFVRkRMRVZCUTNaRExFdEJRVTFCTEVWQlFWTXNWMEZCVnl4RFFVRkZMRkZCUVZNc1EwRkJSU3hEUVVGRExFVkJRM2hETEVWQlFVZEJMRVZCUVZNc1YwRkJWeXhEUVVGRkxGRkJRVk1zUTBGQlJTeERRVUZETEVWQlJYSkRMRTlCUVZGQkxFVkJRVk1zVjBGQlZ5eERRVUZGTEZGQlFWTXNRMEZCUlN4RFFVRkRMRVZCUXpGRExGRkJRVk5CTEVWQlFWTXNWMEZCVnl4RFFVRkZMRkZCUVZNc1EwRkJSU3hEUVVGRExFVkJRek5ETEVsQlFVdEJMRVZCUVZNc1YwRkJWeXhEUVVGRkxGRkJRVk1zUTBGQlJTeERRVUZETEVWQlEzWkRMRXRCUVUxQkxFVkJRVk1zVjBGQlZ5eERRVUZGTEZGQlFWTXNRMEZCUlN4RFFVRkRMRVZCUTNoRExFVkJRVWRCTEVWQlFWTXNWMEZCVnl4RFFVRkZMRkZCUVZNc1EwRkJSU3hEUVVGRExFTkJRM3BETEVWQlIyRXZRaXhIUVVGclFpeERRVU16UWl4SlFVRkxMRWxCUVUxRUxFVkJRVk1zVFVGQlRTeEZRVU14UWl4TlFVRlBMRWxCUVUxQkxFVkJRVk1zVFVGQlRTeEZRVUZGTEZGQlFWRXNTMEZCU3l4RlFVTXpReXhWUVVGWExFbEJRMUJCTEVWQlFWTXNUVUZCVFN4RlFVTldMRkZCUVZFc1MwRkJTeXhGUVVOaUxFMUJRVTFuUXl4RlFVRlRMRmRCUVZjc1EwRkJSU3hMUVVGTkxFTkJRVVVzUTBGQlF5eERRVUZETEVWQlF5OURMRk5CUVZVc1NVRkRUbWhETEVWQlFWTXNUVUZCVFN4RlFVTldMRkZCUVZFc1MwRkJTeXhGUVVOaUxFdEJRVXRuUXl4RlFVRlRMRmRCUVZjc1EwRkJSU3hMUVVGTkxFTkJRVVVzUTBGQlF5eERRVUZETEVWQlF6bERMRWxCUVVzc1NVRkJUV2hETEVWQlFWTXNUVUZCVFN4RlFVRkZMRkZCUVZFc1RVRkJUU3hGUVVNeFF5eG5Ra0ZCYVVJc1NVRkJUVUVzUlVGQlV5eE5RVUZOTEVWQlFVVXNVVUZCVVN4TlFVRk5MRVZCUTNSRUxFbEJRVXNzU1VGQlRVRXNSVUZCVXl4TlFVRk5MRVZCUVVVc1RVRkJUU3hOUVVGTkxFVkJRM2hETEdOQlFXVXNTVUZCVFVFc1JVRkJVeXhOUVVGTkxFVkJRVVVzVFVGQlRTeE5RVUZOTEVWQlEyeEVMRWxCUVVzc1NVRkJUVUVzUlVGQlV5eE5RVUZOTEVWQlFVVXNVVUZCVVN4TlFVRk5MRVZCUXpGRExHZENRVUZwUWl4SlFVRk5RU3hGUVVGVExFMUJRVTBzUlVGQlJTeFJRVUZSTEUxQlFVMHNSVUZEZEVRc1NVRkJTeXhKUVVGTlFTeEZRVUZUTEUxQlFVMHNSVUZCUlN4TlFVRk5MRTFCUVUwc1JVRkRlRU1zWTBGQlpTeEpRVUZOUVN4RlFVRlRMRTFCUVUwc1JVRkJSU3hOUVVGTkxFMUJRVTBzUlVGRGJFUXNTVUZCU3l4SlFVRk5RU3hGUVVGVExFMUJRVTBzUlVGQlJTeFJRVUZSTEU5QlFVOHNSVUZETTBNc2FVSkJRV3RDTEVsQlFVMUJMRVZCUVZNc1RVRkJUU3hGUVVGRkxGRkJRVkVzVDBGQlR5eEZRVU40UkN4SlFVRkxMRWxCUVUxQkxFVkJRVk1zVFVGQlRTeEZRVUZGTEUxQlFVMHNUMEZCVHl4RlFVTjZReXhsUVVGblFpeEpRVUZOUVN4RlFVRlRMRTFCUVUwc1JVRkJSU3hOUVVGTkxFOUJRVThzUTBGRGVFUXNSVUVyUTJGcFF5eEhRVUZsTEdsQ1FVRnRReXhEUVVVelJDeFRRVUZYYWtRc1IwRkJUVVFzUlVGQlZ5eFhRVUZYTEVsQlFVbHRSQ3hIUVVGWkxGRkJRVkVzUlVGQlJTeExRVUZMTEZWQlFWVXNSVUZEYUVZc1QwRkJVMnhFTEVkQlFVMUVMRVZCUVZjc1QwRkJUeXhKUVVGSmJVUXNSMEZCV1N4UFFVRlBMRVZCUVVVc1MwRkJTeXhSUVVGUkxFVkJRM1pGTEU5QlFWTnNSQ3hIUVVGTlJDeEZRVUZYTEU5QlFVOHNTVUZCU1cxRUxFZEJRVmtzVDBGQlR5eEZRVUZGTEV0QlFVc3NVVUZCVVN4RlFVTjJSU3hMUVVGUGJFUXNSMEZCVFVRc1JVRkJWeXhMUVVGTExFbEJRVWx0UkN4SFFVRlpMRTlCUVU4c1JVRkJSU3hMUVVGTExGTkJRVk1zUlVGRGNFVXNTMEZCVDJ4RUxFZEJRMGh0UkN4SFFVRmxMRTlCUVZGd1JDeEZRVUZYTEZGQlFWRXNSVUZEY2tNc1NVRkJTU3hEUVVGRExFTkJRVU54UkN4RlFVRlBReXhEUVVGSkxFbEJRVTFJTEVkQlFWa3NVVUZCVVVjc1EwRkJTU3hEUVVGRExFVkJRMmhFTEV0QlFVc3NUVUZCVFN4RlFVTndRaXhUUVVGWGNrUXNSMEZEVUcxRUxFZEJRV1VzVFVGQlQzQkVMRVZCUVZjc1VVRkJVU3hGUVVOd1F5eEpRVUZKTEVOQlFVTXNRMEZCUTNGRUxFVkJRVTlGTEVOQlFVY3NTVUZCVFVvc1IwRkJXU3hSUVVGUlNTeERRVUZITEVOQlFVTXNSVUZET1VNc1MwRkJTeXhWUVVGVkxFVkJRM2hDTEV0QlFVOTBSQ3hIUVVGTlJDeEZRVUZYTEZGQlFWRXNTVUZCUzBNc1IwRkJUV3RFTEVkQlFWa3NTVUZCU1N4RlFVTXpSQ3hMUVVGUGJFUXNSMEZCVFVRc1JVRkJWeXhMUVVGTExFbEJRVWx0UkN4SFFVRlpMRTlCUVU4c1JVRkRjRVFzUzBGQlQyaEVMRWRCUTBoQkxFVkJRVVVzVjBGRFJ5eE5RVUZSTEZOQlFVOHNSMEZCUnl4RlFVRkZMRXRCUVU4c1pVRkJZU3hEUVVGRExFVkJRM3BETEV0QlFVOHNVMEZCVHl4SFFVRkhMRVZCUVVVc1MwRkJUeXhsUVVGaExFVkJRVXNzWjBKQlFXTXNTMEZCVHl4VFFVRlBMRWRCUVVjc1EwRkJReXhEUVVGRExFVkJRemRGTEVsQlFVdFZMRWRCUVUxelF5eEhRVUZaTEV0QlFVdDBReXhEUVVGRExFTkJRVU1zUlVGRE9VSXNTMEZCU3l4TlFVRk5MRVZCUTNCQ0xFOUJRVk5XTEVkQlEwZ3NVMEZEUlVnc1JVRkJWeXhYUVVGWExFZEJRVWRCTEVWQlFWY3NUVUZCVFN4RlFVTjRReXhUUVVGUExFZEJRVWNzUlVGQlJTeExRVUZQTEdWQlFXRXNSVUZEYkVOSExFVkJRVVVzVjBGRFJpeERRVUZEY1VRc1JVRkJUVU1zUlVGQlRVTXNTMEZEUml4RFFVRkZMRXRCUVVGR0xFVkJRVTBzVFVGQlFVVXNRMEZCVFN4RlFVVTNRaXhGUVVOTExFMUJRVkVzVTBGQlR5eEhRVUZITEVWQlFVVXNTMEZCVHl4bFFVRmhMRU5CUVVNc1JVRkRla01zUzBGQlR5eFRRVUZQTEVkQlFVY3NSVUZCUlN4TFFVRlBMR1ZCUVdFc1JVRkJTeXhuUWtGQll5eExRVUZQTEZOQlFVOHNSMEZCUnl4RFFVRkRMRU5CUVVNc1JVRkROMFVzU1VGQlMwTXNSMEZCVXl4RFFVTllMRWxCUVVsRExFVkJRV3RETEVOQlFVTXNSVUZEZGtNc1VVRkJVME1zUzBGQlUwWXNSVUZCVFVNc1JVRkJTVU1zUlVGQlRTeEpRVUZKTEVWQlFVbEJMRVZCUVUwc1RVRkRhRVFzVDBGQlQxWXNSMEZCV1N4UFFVRlBVeXhEUVVGSExFTkJRMnBETEVOQlFVTXNSVUZEUVN4TFFVRkxMREpDUVVFeVFpeEZRVVY2UXl4TFFVRlBla1FzUjBGRFJDeE5RVVZGU0N4RlFVRlhMRlZCUVZVc1NVRkJTMkVzUjBGQlRYTkRMRWRCUVZrc1VVRkJVWFJETEVOQlFVTXNRMEZCUXl4RlFVTjBSRllzUlVGQlJTeFJRVU5HUVN4RlFVRkZMRXRCUTBaQkxFVkJRVVVzUzBGRFJrRXNSVUZCUlN4UFFVTkdRU3hGUVVGRkxFOUJRMFpCTEVWQlFVVXNUMEZEUmtFc1JVRkJSU3hMUVVOR1FTeEZRVUZGTEU5QlEwWkJMRVZCUVVVc1QwRkRSa0VzUlVGQlJTeExRVU5HUVN4RlFVRkZMRk5CUTBaQkxFVkJRVVVzUzBGRFJrRXNSVUZCUlN4UlFVTk9MRVZCUTBvc1RVRkJVVUVzUjBGRFJpeFRRVUZQUVN4RlFVRkZMRXRCUVZFc1RVRkJTVUVzUlVGQlJTeFhRVUZaUVN4RlFVRkZMR0ZCUVdOQkxFVkJRVVVzWlVGQlpTeEZRVUZGTEV0QlFVc3NSVUZCUnl4RFFVRkRNa1FzUlVGQlMwTXNTVUZCWXl4RFFVTm9SeXhKUVVGSlF5eEZRVUZUUml4RlFVTmlMRkZCUVZOSExFdEJRVkZHTEVWQlEySXNUMEZCVVVVc1JVRkJTeXhMUVVGTkxFTkJRMllzU1VGQlN5eE5RVU5FUkN4RlFVRlRZaXhIUVVGWkxFMUJRVTFoTEVWQlFWRmlMRWRCUVZrc1VVRkJVV01zUlVGQlN5eEpRVUZKTEVOQlFVTXNSVUZEYWtVc1RVRkRTaXhKUVVGTExGRkJRMFJFTEVWQlFWTmlMRWRCUVZrc1RVRkJUV0VzUlVGQlVVTXNSVUZCU3l4SlFVRkpMRVZCUXpWRExFMUJRMG9zU1VGQlN5eFhRVU5FUkN4RlFVRlRZaXhIUVVGWkxFdEJRVXRoTEVWQlFWRkRMRVZCUVVzc1MwRkJTeXhGUVVNMVF5eExRVU5TTEVOQlIwb3NUMEZCVDBRc1EwRkRXQ3hEUVVGRExFVkJRMHdzVVVGQlZUZEVMRWRCUVZFc1UwRkJVeXhUUVVGUExFZEJRVWNzUlVGQlIwRXNSVUZCUlN4TlFVRlBMRU5CUVVOR0xFVkJRVWRwUlN4SlFVRlZaaXhIUVVGWkxFOUJRVTlsTEVOQlFVc3NRMEZCUXl4RlFVRkZMRXRCUVVzc1pVRkJaU3hGUVVNNVJ5eFBRVUZUTDBRc1IwRkJUVUVzUlVGQlJTeFhRVUZYTEV0QlFVOHNaVUZCWVN4RlFVRkZMRXRCUVU4c1UwRkJUeXhIUVVGSExFVkJRVXNzVTBGQlR5eEhRVUZITEVOQlFVTXNSVUZEYmtZc1QwRkJVMEVzUjBGRFNDeFRRVU5GU0N4RlFVRlhMRmRCUTA0c1RVRkJVU3hUUVVGUExFZEJRVWNzUlVGQlJTeExRVUZQTEdWQlFXRXNRMEZCUXl4RlFVTjZReXhMUVVGUExGTkJRVThzUjBGQlJ5eEZRVUZGTEV0QlFVOHNaVUZCWVN4RlFVRkxMRk5CUVU4c1IwRkJSeXhGUVVGRkxFdEJRVThzWlVGQllTeERRVUZETEVWQlEyaEdMRk5CUVU4c1NVRkJTU3hGUVVGRkxFdEJRVThzWlVGQllTeEZRVU51UTBjc1JVRkJSU3hYUVVOR0xFTkJRVU5uUlN4RlFVRlBReXhGUVVGVFZpeExRVU5PTEVOQlFVVXNTMEZCVFN4VFFVRlZMRlZCUVZkVExFVkJRVThzVFVGQlFWUXNRMEZCVFN4RlFVVjZSQ3hGUVVWS0xGZEJRV0YyUkN4SFFVRlJMRk5CUVZNc1UwRkJUeXhIUVVGSExFVkJRVWRJTEVWQlFWY3NWMEZCV1N4RFFVRkRReXhGUVVGSGIwVXNTMEZCVlN4RFFVRkZMRXRCUVUwc1RVRkJUeXhMUVVGQlFTeERRVUZMTEVWQlFVVXNSVUZEZEVjc1lVRkJaV3hGTEVkQlExUXNVMEZEU1N4VFFVRlBMRWRCUVVjc1JVRkRWaXhuUWtGRFJrRXNSVUZCUlN4WFFVTkJMR2RDUVVOQkxGTkJRVThzUjBGQlJ5eEZRVU5hTEVOQlFVTkdMRVZCUVVkeFJTeEZRVUZKUkN4RlFVRk5SU3hGUVVGSlF5eExRVU5RTEVOQlFVVXNTMEZCVFN4UlFVRlRMRXRCUVVGSUxFTkJRVXNzUlVGRmNrTXNSVUZEU2l4blFrRkJhMEpzUlN4SFFVTmFMRk5CUTBrc1UwRkJUeXhIUVVGSExFVkJRMVlzWjBKQlEwWkJMRVZCUVVVc1YwRkJWeXhOUVVGUkxGTkJRVThzUjBGQlJ5eEZRVUZGTEV0QlFVOHNaVUZCWVN4RFFVRkRMRVZCUTNCRUxHZENRVU5CTEZOQlFVOHNSMEZCUnl4RlFVTmFMRU5CUVVOR0xFVkJRVWQzUlN4RlFVRkpReXhGUVVGUFNpeEZRVUZKUXl4TFFVTlNMRU5CUVVVc1MwRkJUU3hYUVVGWkxFMUJRVUZITEVOQlFVMHNSVUZGZWtNc1JVRkhTaXhoUVVGbGRrVXNSMEZCVFhkRkxFZEJRVzFDZUVVc1JVRkJSU3hOUVVGUFNDeEZRVUZYTEdGQlFXTnRSQ3hIUVVGWkxGRkJRVkVzUlVGRE9VWXNaMEpCUVd0Q2FFUXNSMEZCVFhkRkxFZEJRVzFDZUVVc1JVRkJSU3hoUVVGalNDeEZRVUZYTEdkQ1FVRnBRbTFFTEVkQlFWa3NVVUZCVVN4RlFVTXpSeXhqUVVGblFtaEVMRWRCUVUxM1JTeEhRVUZ0UW5oRkxFVkJRVVVzWjBKQlFXbENTQ3hGUVVGWExHZENRVUZwUW0xRUxFZEJRVmtzVVVGQlVTeEZRVU0xUnl4alFVRm5RbWhFTEVkQlExcDNSU3hIUVVGdFFuaEZMRVZCUVVVc1kwRkJaVWdzUlVGQlZ5eFpRVUZaTEVkQlFVZEJMRVZCUVZjc1ZVRkJWU3hGUVVGSGJVUXNSMEZCV1N4UlFVRlJMRVZCUXpsSExGTkJRVmRvUkN4SFFVRk5RU3hGUVVGRkxHTkJSVzVDTEZkQlFXRkJMRWRCUVUxQkxFVkJRVVVzVVVGRGVrSXNRMEZCUXl4RlFXZERXWGxGTEVkQlFWVXNhVUpCUVRoQ0xFTkJRMnBFTEZOQlFWY3pSU3hIUVVGTlJDeEZRVUZYTEVsQlFVa3NTVUZCU3pCRUxFbEJRVmNzUTBGQlJTeExRVUZOTEZOQlFWVXNUVUZCUVVFc1EwRkJUU3hGUVVGRkxFVkJRekZGTEZGQlFWVjZSQ3hIUVVGTmJVUXNSMEZCWlN4TFFVRk5jRVFzUlVGQlZ5eE5RVUZOTEVWQlFVVXNTVUZCU1N4RFFVRkRMRU5CUVVORExFVkJRVWMwUlN4RFFVRkZMRXRCUVU4c1EwRkJSU3hMUVVGTkxFdEJRVTBzVFVGQlQwRXNRMEZCUnl4RlFVRkZMRVZCUTNCSExGVkJRVmsxUlN4SFFVTk9MRk5CUVU4c1IwRkJSeXhGUVVOUUxFdEJRVXRFTEVWQlFWY3NWVUZCVlN4RlFVTXhRaXhKUVVGTE1FUXNTVUZCVnl4RFFVRkZMRXRCUVUwc1VVRkJVeXhOUVVGUFFTeERRVUZOTEVWQlFVVXNSVUZGZWtRc1ZVRkJXWHBFTEVkQlExSnRSQ3hIUVVGcFFpeFRRVUZQTEZOQlFWTXNSVUZCUlN4TFFVRkxMRk5CUVZNc1JVRkJSM0JFTEVWQlFWY3NUVUZCVFN4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRE9FVXNSVUZCVFVNc1EwRkJTU3hMUVVGUExFTkJRekZHTEV0QlFVMHNUMEZEVGl4TlFVRlBRU3hGUVVOUUxFMUJRVTlFTEVWQlFVc3NXVUZCV1N4SlFVRk5MRTlCUTJ4RExFVkJRVVVzUlVGRlRpeGpRVUZuUWpORkxFZEJRMXBwUkN4SFFVRnBRaXhUUVVGUExIRkNRVUZ4UWl4RlFVRkZMRXRCUVVzc1ZVRkJWU3hGUVVGSGFrUXNSVUZCUlN4TFFVRkxMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU15UlN4RlFVRk5SU3hEUVVGUkxFdEJRVThzUTBGRGFrY3NTMEZCVFN4WlFVTk9MRk5CUVVGQkxFVkJRMEVzVlVGQlYwWXNSVUZCU3l4WlFVRlpMRWxCUVUwc1YwRkRkRU1zUlVGQlJTeEZRVU5PTEdGQlFXVXpSU3hIUVVOWWFVUXNSMEZCYVVJc1UwRkJUeXhyUWtGQmEwSXNSVUZCUlN4TFFVRkxMRk5CUVZNc1JVRkJSMnBFTEVWQlFVVXNTMEZCU3l4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRE1rVXNSVUZCVFVjc1EwRkJUeXhMUVVGUExFTkJRelZHTEV0QlFVMHNWMEZEVGl4UlFVRkJRU3hGUVVOQkxGVkJRVmRJTEVWQlFVc3NXVUZCV1N4SlFVRk5MRk5CUTNSRExFVkJRVVVzUlVGRFRpeHJRa0ZCYjBJM1JTeEhRVU5vUWtRc1JVRkJWeXhMUVVGTExFbEJRVXRyUml4SlFVRlZMRU5CUXpOQ0xFdEJRVTBzVTBGRFRpeFBRVUZSTEVOQlFVVXNTMEZCVFN4UFFVRlJMRTFCUVU5QkxFTkJRVXNzUlVGRGNFTXNWVUZCVnl4VlFVTm1MRVZCUVVVc1JVRkRUaXhaUVVGakwwVXNSMEZEVm1sRUxFZEJRV2xDTEZOQlFVOHNLMEpCUVN0Q0xFVkJRVVVzUzBGQlN5eFhRVUZYTEVWQlFVZHFSQ3hGUVVGRkxFdEJRVXNzUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXpKRkxFVkJRVTFMTEVOQlFVMHNTMEZCVHl4RFFVTXhSeXhMUVVGTkxGTkJRMDRzVDBGQlFVRXNSVUZEUVN4VlFVTkpUQ3hGUVVGTExGbEJRVmtzUjBGQlN5eFZRVUZaTEZkQlFXRkJMRVZCUVVzc1dVRkJXU3hIUVVGTExHRkJRV1VzVjBGQllTeE5RVU42Unl4RlFVRkZMRVZCUTA0c1dVRkJZemRGTEVkQlExWnRSQ3hIUVVGcFFpeFRRVUZQTEZOQlFWTXNSVUZCUlN4TFFVRkxMRkZCUVZFc1JVRkJSM0JFTEVWQlFWY3NWMEZCVnl4SFFVRkhRU3hGUVVGWExFMUJRVTBzUTBGQlF5eEZRVUZGTEVsQlF6VkdMRU5CUVVNc1EwRkJRM0ZFTEVWQlFVOWpMRU5CUVVzc1MwRkJUeXhEUVVOcVFpeExRVUZOTEZGQlEwNHNUVUZCVDBFc1EwRkRXQ3hGUVVOS0xFVkJRMG9zYzBKQlFYZENhRVVzUjBGRGNFSnBSQ3hIUVVGcFFpeFRRVUZQTEU5QlFVOHNSVUZCUlN4TFFVRkxMRTFCUVUwc1JVRkJSMFlzUjBGQlZ5eFZRVUZWTEVWQlFVVXNTVUZCU1N4RFFVRkRMRU5CUVVOcVJDeEZRVUZIYjBVc1EwRkJTU3hMUVVGUExFTkJRM1JHTEV0QlFVMHNZVUZEVGl4WFFVRlpRU3hEUVVOb1FpeEZRVUZGTEVWQlEwNHNiVUpCUVhGQ2JFVXNSMEZCVFN0RExFZEJRVmNzWTBGQll5eEpRVUZMYlVJc1NVRkJWU3hEUVVGRkxFdEJRVTBzWVVGQll5eFhRVUZaUVN4RFFVRkxMRVZCUVVVc1JVRkZOVWNzV1VGQlkyeEZMRWRCUVUxQkxFVkJRVVVzVFVGQlRTeExRVUZQTEdWQlFXRXNSVUZCUlN4TFFVRlBMRk5CUVU4c1IwRkJSeXhGUVVGTExGTkJRVThzUjBGQlJ5eERRVUZETEVWQlEyNUdMRmxCUVdOQkxFZEJRMUlzVTBGQlR5eEhRVUZITEVWQlExQXNTMEZCVHl4bFFVRmhMRVZCUTNCQ0xFdEJRVXRCTEVWQlFVVXNVMEZCVXl4RlFVTm9RaXhKUVVGTGRVUXNTVUZCVnl4RFFVTmlMRXRCUVUwc1RVRkRUaXhSUVVGVFFTeERRVU5pTEVWQlFVVXNSVUZEVml4VlFVRlpka1FzUjBGRFRpeE5RVU5GUVN4RlFVRkZMRmxCUTBaQkxFVkJRVVVzV1VGRFJrRXNSVUZCUlN4clFrRkRSa0VzUlVGQlJTeFRRVU5HUVN4RlFVRkZMRlZCUTBaQkxFVkJRVVVzVVVGRFJrRXNSVUZCUlN4WlFVTkdRU3hGUVVGRkxHRkJRMFpCTEVWQlFVVXNZMEZEUmtFc1JVRkJSU3haUVVOR1FTeEZRVUZGTEZWQlEwWkJMRVZCUVVVc2MwSkJSVVpCTEVWQlFVVXNhMEpCUTA0c1JVRkRTaXhWUVVGWlFTeEhRVU5TZDBVc1IwRkJiVUo0UlN4RlFVRkZMRlZCUVZkSUxFVkJRVmNzV1VGQllTeERRVUZEYjBZc1JVRkJUVU1zUlVGQlMwTXNTMEZCVnl4RFFVTXpSU3hMUVVGTkxFMUJRMDRzVTBGQlZTeERRVUZEUml4RlFVRk5SU3hEUVVGTExFTkJRekZDTEVWQlFVVXNSVUZEVGl4VFFVRlhia1lzUjBGRFVIZEZMRWRCUVcxQ2VFVXNSVUZCUlN4VlFVRlhTQ3hGUVVGWExGZEJRVmtzUTBGQlEyOUdMRVZCUVUxRExFVkJRVXRETEV0QlFWY3NRMEZETVVVc1MwRkJUU3hMUVVOT0xGTkJRVlVzUTBGQlEwWXNSVUZCVFVVc1EwRkJTeXhEUVVNeFFpeEZRVUZGTEVWQlEwNHNUVUZCVVc1R0xFZEJRVTFCTEVWQlFVVXNVMEZCVXl4TFFVRlBMR1ZCUVdFc1EwRkRha1FzUTBGQlF5eEZRV1ZOTEZOQlFWTnZSaXhIUVVOYVF5eEZRVU5CUXl4RlFVTkJReXhGUVVOWExFTkJRMWdzVDBGQlV5eFRRVUZQUml4RlFVRlRMRTFCUVUwc1owSkJRV1ZETEVWQlFVOHNaMEpCUVdWRUxFTkJRVXNzUlVGQlJTeExRVUZMTEVWQlFVY3NRMEZCUTBjc1JVRkJUME1zU1VGQlV5eERRVU5vUnl4SFFVRkpRU3hGUVVGTExGRkJRVlVzUlVGQlJ5eFBRVUZQUkN4RlFVVTNRaXhKUVVGSlJTeEZRVUZQU0N4RlFVRlJReXhGUVVGUFF5eEZRVUZMTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVkQkxFVkJRVXNzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RlFVTm9SQ3hSUVVGVFJTeEZRVUZSTEVWQlFVZEJMRVZCUVZGR0xFVkJRVXNzVDBGQlVVVXNTVUZEY2tORUxFVkJRVTlJTEVWQlFWRkhMRVZCUVUxRUxFVkJRVXRGTEVOQlFVc3NSVUZCUlN4RFFVRkRMRVZCUVVkR0xFVkJRVXRGTEVOQlFVc3NSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkZka1FzVDBGQlQwUXNRMEZEV0N4RFFVRkRMRU5CUTB3c1EwRkxUeXhUUVVGVFJTeEhRVUZyUWtNc1JVRkJhVU5ETEVWQlFUQkRMRU5CUTNwSExFbEJRVTFETEVWQlFWY3NUMEZCVDBZc1IwRkJVeXhUUVVGaExGTkJRVTlCTEVOQlFVa3NSVUZCU1VFc1JVRkROMFFzVDBGQlV5eFRRVU5NUlN4RlFVRlRMRXRCUVU4c1pVRkJZU3hGUVVNM1FrUXNSVUZCU3l4TFFVRlBMR1ZCUVdFc1JVRkJSU3hMUVVGUExGTkJRVThzUjBGQlJ5eEZRVUZMTEZOQlFVOHNSMEZCUnl4RFFVRkRMRVZCUXpWRUxFTkJRVU5GTEVWQlFVZERMRWxCUVUwc1EwRkJRMFFzUlVGQlIwTXNRMEZCUXl4RFFVTnVRaXhEUVVOS0xFTkJSMDhzVTBGQlUwTXNSMEZCV1VNc1MwRkJjMEpETEVWQlFTdERMRU5CUXpkR0xFOUJRVk1zVTBGQlR5eERRVUZEUXl4RlFVRlZReXhKUVVOb1FpeERRVUZEUXl4RlFVRlBMRWxCUVUwc1EwRkRha0lzU1VGQlNVTXNSVUZCVlV3c1JVRkJZU3hGUVVGRlNTeEZRVUZQTEVOQlFVTXNSVUZEY2tNc1IwRkJTU3hEUVVGRFF5eEZRVUZQTEU5QlFWRXNUMEZCVDBFc1JVRkZNMElzVVVGQlUxZ3NTMEZCVVU4c1JVRkJUeXhEUVVOd1FpeEpRVUZKU3l4RlFVRlJXaXhGUVVGTFZ5eEZRVUZQTEV0QlFWVXNSVUZCVlN4RlFVRkZSQ3hGUVVGUFF5eEZRVUZQTEV0QlFVc3NSVUZEYWtVc1IwRkJTU3hEUVVGRFF5eEZRVUZMTEU5QlFWRXNUMEZCVDBRc1JVRkZla0pCTEVWQlFWTkRMRU5CUTJJc1EwRkZRU3hQUVVGUFJDeERRVU5ZTEVOQlEwZ3NRMEZEVEN4RFN6VndRa0VzU1VGQlFVVXNSMEZCYlVJc1UwTklXaXhUUVVGVFF5eEhRVUZ6UWtNc1JVRkJNa0pETEVWQlFYTkRMRU5CUTI1SExFbEJRVTFETEVWQlFUUkNMRU5CUVVNc1JVRkRia01zVDBGQlZ5eERRVUZEUXl4RlFVRkxReXhEUVVGTExFbEJRVXNzVDBGQlR5eFJRVUZSU2l4RFFVRk5MRVZCUXpWRFJTeEZRVUZQUXl4RFFVRkhMRVZCUVVsR0xFVkJRVXRITEVOQlFVc3NSVUZITlVJc1QwRkJUMFlzUTBGRFdDeERRMU5QTEVsQlFWVkhMRTlCUVZZc1EwRkRWVUVzUlVGQlFTeG5Ra0ZCWjBSRExFZEJRVlZCTEVWQlIyaEZMRk5CUVZORExFVkJRVXRETEVWQlFTdENMRU5CUTJoRUxFbEJRVTFETEVWQlFWVkRMRWRCUVZNc1ZVRkJWVVlzUTBGQlR5eEZRVU14UXl4SFFVRkpMRU5CUVVORExFVkJRVk1zVDBGQlR5eExRVVZ5UWl4UFFVRlJRU3hIUVVGQkxGbEJRVUZCTEVWQlFWTXNTMEZCVFN4RFFVTnVRaXhKUVVGTExGRkJRMFFzVDBGQlQwRXNSVUZCVVN4TlFVRk5MRWxCUVVsS0xFVkJRV1VzU1VGQlNTeEZRVU5vUkN4SlFVRkxMRk5CUTBRc1QwRkJUMDBzUjBGQlowSkdMRVZCUVZFc1RVRkJUMG9zUlVGQlpTeEpRVUZKTEVWQlF6ZEVMRWxCUVVzc1QwRkRSQ3hOUVVGUExFTkJRVVVzVDBGQlVTeFBRVUZSTEUxQlFVOUpMRVZCUVZFc1RVRkJUU3hOUVVGTkxFTkJRVVVzWTBGQlpTeEZRVUZMTEVOQlFVTXNRMEZCUlN4RlFVTnFSaXhKUVVGTExFOUJRMFFzVFVGQlR5eERRVUZGTEU5QlFWRXNUMEZCVVN4TlFVRlBRU3hGUVVGUkxFMUJRVTBzVTBGQlV5eERRVUZGTEVWQlF6ZEVMRWxCUVVzc1YwRkRSQ3hOUVVGUExFTkJRVVVzVDBGQlVTeFhRVUZaTEUxQlFVOUJMRVZCUVZFc1RVRkJUU3hOUVVGTkxFTkJRVVVzUlVGRE9VUXNTVUZCU3l4VlFVTk1MRWxCUVVzc1UwRkRUQ3hKUVVGTExGTkJRMFFzVDBGQlQwRXNSVUZCVVN4TlFVTnVRaXhKUVVGTExGZEJRMHdzU1VGQlN5eFBRVU5FTEU5QlFVOHNTVUZEWml4RFFVTktMRU5CZGtKUFNpeEZRVUZUTEV0QlFVRkZMRVZCT0VKVUxGTkJRVk5MTEVWQlFVMU1MRVZCUVcxQ1RTeEZRVUV3UTFJc1JVRkJRU3huUWtGQk1FSXNRMEZEZWtjc1IwRkJTVVVzUjBGQlV5eExRVUUwUWl4UFFVRlBMRXRCUldoRUxFZEJRVWtzVFVGQlRTeFJRVUZSUVN4RFFVRkpMRVZCUTJ4Q0xFOUJRVTlOTEVWQlFWZE9MRVZCUVVzc1NVRkJTMFFzUjBGQlZVUXNSVUZCWlN4TlFVRk5ReXhGUVVGUFR5eERRVUZWTEVOQlFVTXNRMEZCUXl4RlFVTXpSU3hIUVVGSkxFOUJRVTlPTEVkQlFWTXNVMEZCVlN4RFFVTnFReXhIUVVGSkxFVkJRVVVzVjBGQldVRXNSMEZEWkN4UFFVRlBTU3hIUVVGblFrb3NSVUZCVDA4c1IwRkJUVlFzUlVGQlpTeE5RVUZOVXl4RlFVRnJRa1FzUTBGQlZTeERRVUZETEVWQlJURkdMRWxCUVUxRkxFVkJRVTlTTEVWQlFVc3NUMEZEYkVJc1QwRkJVVkVzUlVGQlRTeERRVU5XTEVsQlFVc3NUMEZEUkN4UFFVRlBSaXhGUVVGWFJ5eEZRVUZUTEZGQlFWRlVMRVZCUVVzc1RVRkJUeXhEUVVGRkxGRkJRVk1zUlVGQlN5eERRVUZETEVOQlFVTXNSVUZEY2tVc1NVRkJTeXhYUVVORUxFOUJRVTlOTEVWQlFWZEpMRVZCUVZNc1VVRkJVVllzUlVGQlN5eExRVUZMTEVOQlFVTXNSVUZEYkVRc1NVRkJTeXhQUVVORUxFOUJRVTlOTEVWQlFWZExMRWRCUVVzc1YwRkJWMWdzUlVGQlN5eExRVUZMTEVOQlFVTXNSVUZEYWtRc1VVRkRTU3hOUVVGTkxFbEJRVWtzVFVGQlRTeHBRMEZCYVVOUkxFTkJRVWtzU1VGQlNTeERRVU5xUlN4RFFVTktMRU5CUjBFc1QwRkJUMFlzUlVGQlYwNHNRMEZCWlN4RFFVTnlReXhEUVhoQ1QwWXNSVUZCVXl4TlFVRkJUeXhKUVd4RFNGQXNVVUZCUVN4TFJuTkVWaXhUUVVGVFl5eEhRVUZuUWtNc1JVRkJjVU1zUTBGRGFrVXNUMEZCVHl4UFFVRlBMRTlCUVU4c1EwRkJReXhGUVVGSFFTeEZRVUZQTEVOQlFVVXNUVUZCVDBNc1IwRkJaU3hMUVVGTFJDeEZRVUZOTEV0QlFVc3NRMEZCUlN4RFFVRkRMRU5CUXk5RkxFTkJWVThzVTBGQlUwVXNSMEZEV2tNc1JVRkRRVU1zUlVGRE1rSXNRMEZETTBJc1QwRkJTU3hOUVVGTkxGRkJRVkZFTEVOQlFVc3NSVUZEV2tFc1JVRkJUU3hKUVVGTFJTeEhRVUZOU0N4SFFVRmpSeXhGUVVGSFJDeERRVUZOTEVOQlFVTXNSVUZITjBNc1EwRkRTQ3hKUVVGTFJDeEZRVUZOTEVsQlExZ3NTVUZCUzBFc1JVRkJUU3hOUVVOWUxFMUJRVTlITEVkQlFXbENTQ3hGUVVGTkxFdEJRVXNzUlVGRGJrTXNVMEZCVlN4RFFVTk9MRXRCUVUxRExFVkJRMDRzVFVGQlQwUXNSVUZCVFN4TlFVTmlMRmRCUVZsQkxFVkJRVTBzVjBGRGJFSXNTVUZCUzBFc1JVRkJUU3hIUVVObUxFVkJRMEVzVTBGQlZVRXNSVUZCVFN4UlFVTndRaXhEUVVOS0xFTkJSMDhzU1VGQlRVa3NSMEZCTUVRc1QwRkJUeXhQUVVGUExFTkJRMnBHTEVsQlFVc3NTVUZEVEN4SlFVRkxMRWRCUTFRc1EwRkJReXhGUVUxRUxGTkJRVk5ETEVkQlEweERMRVZCUTBGRExFVkJRMEZETEVWQlEwRkRMRVZCUXl0RExFTkJReTlETEVsQlFVbERMRVZCUVZVc1JVRkRWa01zUlVGQlZTeEhRVU5rTEZGQlFWTkRMRVZCUVZGTUxFVkJRVTlMTEVWQlFWRk9MRVZCUVVzc1QwRkJVVTBzU1VGQlV5eERRVU5zUkN4SlFVRkpReXhGUVVGUFVDeEZRVUZMTEU5QlFVOU5MRU5CUVVzc1JVRkhOVUlzUjBGQlNVTXNSMEZCVVN4TFFVRk5MRU5CUTJSR0xFVkJRVlVzUTBGQlEwRXNSVUZEV0N4UlFVTktMRU5CUjBFc1IwRkJTVUVzUlVGQlV5eERRVU5VUVN4RlFVRlZMRWRCUTFZc1VVRkRTaXhEUVUxQkxFZEJTa2xGTEVkQlFWRk1MRVZCUVUxRkxFbEJRMVJITEVkQlFWRktMRWRCUVU5RExFbEJSM0JDUVN4RlFVRlZMRVZCUVVjc1RVRkJUeXhEUVVGRkxFMUJRVTlLTEVWQlFVc3NWVUZCVlVNc1JVRkJUMHNzUTBGQlN5eEZRVUZGTEV0QlFVc3NSVUZCUnl4VFFVRlZRU3hGUVVGUkxFTkJRVVVzUlVGRk1VWkVMRVZCUVZVc1JVRkRaQ3hEUVVkS0xFTkJSMEVzVTBGQlUwY3NSMEZCWTFJc1JVRkJZME1zUlVGQlowVXNRMEZEYWtjc1NVRkJTVkVzUlVGQlRWUXNSVUZCU3l4UlFVRlJMRXRCUVUxRExFTkJRVXNzUlVGRGJFTXNSMEZCU1N4RlFVRkJVU3hGUVVGTkxFZEJSVllzVFVGQlR5eERRVUZGTEVsQlFVdFVMRVZCUVVzc1ZVRkJWVU1zUlVGQlQxRXNRMEZCUnl4RlFVRkZMRXRCUVVzc1JVRkJSeXhYUVVGWlFTeEZRVUZOTEVOQlFVVXNRMEZEZWtVc1EwRkhRU3hUUVVGVFF5eEhRVUYzUWxZc1JVRkJZME1zUlVGQk5rTXNRMEZEZUVZc1NVRkJTVU1zUlVGQlQwWXNSVUZCU3l4UFFVRlBReXhEUVVGTExFVkJSWGhDVlN4RlFVRk5TQ3hIUVVGalVpeEZRVUZOUXl4RlFVRlJMRU5CUVVNc1JVRkRka01zUjBGQlNWVXNTVUZCVVN4UFFVRlhMRTlCUjNaQ0xGRkJRVk5HTEV0QlFVOHNUMEZCVHl4TFFVRkxXQ3hGUVVGeFFpeEZRVUZGTEU5QlFVOHNUMEZCVHl4UFFVRlBRU3hGUVVGeFFpeERRVUZETEVWQlF6RkdMRWRCUVVsaExFVkJRVWtzU1VGQlNTeFRRVUZUUml4RFFVRkhMRVZCUVVjc1QwRkhMMElzU1VGQlNVY3NSVUZCVVdJc1IwRkJXVU1zUlVGQlRWY3NSVUZCU1N4WFFVRlpWQ3hGUVVGTlNpeEhRVUZ6UWtrc1EwRkJTU3hEUVVGRExFVkJReTlGTEVkQlFVbFZMRWxCUVZVc1QwRkZaQ3hOUVVGUExFTkJRMGdzU1VGQlMwUXNSVUZCU1N4SlFVTlVMRTFCUVU5RExFVkJRVTBzVFVGRFlpeE5RVUZQV0N4RlFVTlFMRmRCUVZsVkxFVkJRVWtzVjBGRGFFSXNTVUZCUzBNc1JVRkJUU3hUUVVOWUxGTkJRVlZXTEVOQlEyUXNRMEZEU2l4RFFVZFBMRk5CUVZOTUxFZEJRV2xDWlN4RlFVRjNRaXhEUVVkeVJDeEhRVUZKUVN4RlFVRk5MRXRCUVVzc1IwRkJTeXhIUVVGSkxFOUJRVThzUzBGTEwwSXNTVUZCU1VNc1JVRkJVME1zUlVGQlZ5eFpRVUZaTEUxQlFVMUdMRU5CUVVzc1JVRkRMME1zVDBGQlNVTXNSVUZCVHl4UFFVRmxRU3hGUVVGUExFMUJRM0pDUkN4RFFVTm9RaXhEUVZGUExGTkJRVk5ITEVkQlFXOUNaaXhGUVVGalowSXNSVUZCTmtJc1IwRkJNa0lzUTBGRGRFY3NTVUZCU1VNc1JVRkJOa0lzUTBGQlF5eEZRVU5zUXl4UlFVRlRReXhMUVVGWExFOUJRVThzUzBGQlMzQkNMRVZCUVhGQ0xFVkJRVWNzUTBGRGNFUXNTVUZCU1hGQ0xFVkJRV0Z1UWl4RlFVRkxMRkZCUVZGclFpeERRVUZQTEVWQlEzSkRMRXRCUVU5RExFZEJRV01zUjBGQlJ5eERRVU53UWl4SlFVRkpReXhGUVVGalZpeEhRVUYzUWxZc1JVRkJUVzFDTEVOQlFWVXNSVUZETVVRc1IwRkJTU3hEUVVGRFF5eEZRVUZoTEVOQlEyUkVMRVZCUVdGdVFpeEZRVUZMTEZGQlFWRnJRaXhGUVVGVFF5eEZRVUZoTEVOQlFVTXNSVUZEYWtRc1VVRkRTaXhEUVVWQlJpeEZRVUZQTEV0QlFVdEhMRU5CUVZjc1JVRkRka0pFTEVWQlFXRnVRaXhGUVVGTExGRkJRVkZyUWl4RlFVRlRSU3hGUVVGWkxFZEJRVWNzUTBGRGRFUXNRMEZEU2l4RFFVVkpTaXhKUVVGdFFrTXNSVUZCVTBFc1JVRkJUeXhQUVVGUFNTeEhRVUY1UW5KQ0xFTkJRVWtzUTBGQlF5eEhRVVUxUldsQ0xFVkJRVThzUzBGQlN5eERRVUZEU3l4RlFVRkhReXhKUVVGTlJDeEZRVUZGTEUxQlFWRkRMRVZCUVVVc1MwRkJTeXhGUVVWMlF5eEpRVUZKUXl4RlFVRnhReXhEUVVGRExFVkJRekZETEZGQlFWTkRMRVZCUVVrc1JVRkJSMEVzUlVGQlNWSXNSVUZCVHl4UFFVRlJVU3hMUVVNelFrRXNSMEZCU3l4SFFVRkxSQ3hGUVVGbFFTeEZRVUZsTEU5QlFWTXNRMEZCUXl4RlFVRkZMRWxCUVUxUUxFVkJRVTlSTEVOQlFVTXNSVUZCUlN4UlFVTndSVVFzUlVGQlpTeExRVUZMVUN4RlFVRlBVU3hEUVVGRExFTkJRVU1zUlVGSGNrTXNUMEZCVDBRc1EwRkRXQ3hEUVVkQkxFbEJRVTFGTEVkQlFYbERMRTlCUTNwRExGVkJRVThzU1VGQlNTeFBRVUZQUXl4SFFVRlhMRVZCUVVjc1IwRkJSeXhEUVVGRExFVkJRM0JETEZWQlFVOHNNRUpCUVRCQ0xFTkJRM1pETEVWQlEwc3NTMEZCU3l4RlFVTk1MRWxCUVV0RExFZEJRVlZCTEVWQlFVMHNTMEZCU3l4RlFVRkZMRU5CUVVNc1JVRkZOVUpETEVkQlFUSkRMRlZCUVU4c2MwSkJRWE5DTEVWQlEzcEZMRXRCUVV0SUxFVkJRV3RDTEVWQlEzWkNMRXRCUVU4c1ZVRkJUeXhYUVVGWExFTkJRVU1zUlVGSGVFSXNVMEZCVTBrc1IwRkJjVUpETEVWQlFUUkRMRU5CUXpkRkxFbEJRVWwwUWl4RlFVRk5SQ3hIUVVGamRVSXNSVUZCVFN4RFFVRkRMRVZCUXk5Q0xFZEJRVWtzUTBGQlEzUkNMRVZCUVVzc1QwRkpWaXhKUVVGSmRVSXNSVUZCVlVnc1IwRkJjVUlzVFVGQlRYQkNMRVZCUVVrc1IwRkJSeXhGUVVOb1JDeEhRVUZMZFVJc1JVRkJVU3hQUVVWaUxFMUJRVThzUTBGRFNDeEpRVUZMUVN4RlFVRlJMRTFCUTJJc1RVRkJUMFFzUlVGQlN5eFZRVUZWZEVJc1JVRkJTU3hWUVVGVkxFVkJRVVVzUzBGQlN5eEZRVU16UXl4TlFVRlBMRVZCUTFBc1YwRkJXVUVzUlVGQlNTeFhRVU5vUWl4SlFVRkxjMElzUlVGQlN5eE5RVU5rTEVOQlEwb3NRMEZGVHl4SlFVRk5SU3hIUVVGeFFpeHJRMEZEY2tKRExFZEJRV2xDTEc5RlFVTnFRa01zUjBGQmEwSXNhME5CUTJ4Q1F5eEhRVUYxUWl3MFEwRkRka0pETEVkQlFXMUNMRzFEUVVWdVFrTXNSMEZCWjBJc1EwRkRla0lzUTBGQlJTeE5RVUZQVEN4SFFVRnZRaXhKUVVGTExGTkJRVlVzUlVGRE5VTXNRMEZCUlN4TlFVRlBTU3hIUVVGclFpeEpRVUZMTEU5QlFWRXNSVUZEZUVNc1EwRkJSU3hOUVVGUFJDeEhRVUZ6UWl4SlFVRkxMRmRCUVZrc1JVRkRhRVFzUTBGQlJTeE5RVUZQUml4SFFVRm5RaXhKUVVGTExFdEJRVTBzUlVGRGNFTXNRMEZCUlN4TlFVRlBReXhIUVVGcFFpeEpRVUZMTEZsQlFXRXNRMEZEYUVRc1JVRkhRU3hUUVVGVFpDeEhRVUY1UW5KQ0xFVkJRV3RETEVOQlEyaEZMRWxCUVVsMVF5eEZRVUU0UWl4RFFVRkRMRVZCUlc1RExFOUJRVk1zUTBGQlJTeE5RVUZCUXl4RlFVRlBMRWxCUVVFM1FpeERRVUZKTEVsQlFVc3lRaXhIUVVGbExFTkJRM1JETEVsQlFVMUhMRVZCUVZGRUxFVkJRVTBzUzBGQlMzaERMRU5CUVVrc1JVRkRlRUo1UXl4SFFVVk1SaXhGUVVGUkxFdEJRVXNzUTBGRFZDeEpRVUZCTlVJc1JVRkRRU3hOUVVGUE9FSXNSVUZCVFN4RFFVRkRMRVZCUTJRc1RVRkJUMEVzUlVGQlRTeE5RVU5pTEZkQlFWbEJMRVZCUVUwc1RVRkJVU3hGUVVNeFFpeEpRVUZMUVN4RlFVRk5MRTFCUVZGQkxFVkJRVTBzUTBGQlF5eEZRVUZGTEU5QlF6VkNMRk5CUVZVc2FVSkJRMlFzUTBGQlF5eERRVU5NTEVOQlJVRXNUMEZCVDBZc1EwRkRXQ3hEUjNwU1R5eEpRVUZWUnl4UFFVRldMRU5CUlVrc1UwRkJVME1zUlVGQlMwTXNSVUZCTmtJc1EwRkRPVU1zU1VGQlRVTXNSVUZCVlVNc1IwRkJVeXhWUVVGVlF5eERRVUZQTEVWQlF6RkRMRWRCUVVrc1EwRkJRMFlzUlVGQlV5eFBRVUZQTEV0QlJYSkNMRTlCUVZGQkxFVkJRVkVzUzBGQlRTeERRVU5zUWl4SlFVRkxMRk5CUTB3c1NVRkJTeXhWUVVOTUxFbEJRVXNzVDBGRFRDeEpRVUZMTEZOQlEwUXNUMEZCVDBFc1JVRkJVU3hOUVVOdVFpeEpRVUZMTEZGQlEwUXNUMEZCVDBFc1JVRkJVU3hOUVVGTkxFbEJRVWxHTEVOQlFVa3NSVUZEYWtNc1NVRkJTeXhQUVVORUxFOUJRVTlGTEVWQlFWRXNUVUZCVFN4TlFVRk5MRVZCUXk5Q0xFbEJRVXNzVjBGRFJDeFBRVUZQUVN4RlFVRlJMRTFCUVUwc1VVRkJVU3hGUVVOcVF5eEpRVUZMTEZkQlEwUXNUMEZCVHl4TFFVTllMRWxCUVVzc1QwRkRSQ3hQUVVGUFFTeEZRVUZSTEUxQlFVMHNVMEZCVXl4RlFVTnNReXhKUVVGTExGTkJRMFFzVDBGQlQwY3NSMEZCWjBKSUxFVkJRVkVzVFVGQlQwWXNRMEZCU1N4RFFVTnNSQ3hEUVVOS0xFTkJka0pQUkN4RlFVRlRMRXRCUVVGRExFVkJNRUpVTEZOQlFWTkpMRVZCUVZGSUxFVkJRVFpDTEVOQlEycEVMRWRCUVVsQkxFZEJRVk1zUzBGRFZDeFBRVUZQTEV0QlEwb3NSMEZCU1N4UFFVRlBRU3hIUVVGVkxGTkJRM2hDTEVkQlFVa3NUVUZCVFN4UlFVRlJRU3hEUVVGTExFVkJRVWNzUTBGRGRFSXNTVUZCU1Vzc1JVRkJVeXhEUVVGRExFVkJRMlFzVVVGQlUwTXNTMEZCVTA0c1JVRkRaRXNzUlVGQlR5eExRVUZMUml4RlFVRlJSeXhEUVVGTExFTkJRVU1zUlVGSE9VSXNUMEZCVDBRc1EwRkRXQ3hMUVVGUExFbEJRVWxNTEdGQlFXbENMRXRCUlhoQ0xFOUJSR2RDVHl4RlFVRlRMRmRCUVZkUUxFTkJRVXNzUlVGRmRFTXNRMEZEU0N4SlFVRkpVU3hGUVVGVFVpeEZRVU5VU3l4RlFVRnJReXhEUVVGRExFVkJRM1pETEZGQlFWTkpMRXRCUVU5RUxFVkJRMXBJTEVWQlFVOUpMRU5CUVVjc1JVRkJTVTRzUlVGQlVVc3NSVUZCVDBNc1EwRkJSeXhEUVVGRExFVkJSM0pETEU5QlFVOUtMRU5CUTFnc1RVRkRSeXhKUVVGSkxFOUJRVTlNTEVkQlFWVXNVMEZEZUVJc1QwRkJUMEVzUlVGRFNpeEhRVUZKTEU5QlFVOUJMRWRCUVZVc1ZVRkRlRUlzVDBGQlQwRXNSVUZEU2l4SFFVRkpMRTlCUVU5QkxFZEJRVlVzVTBGQlZTeERRVU5zUXl4SlFVRkpWU3hGUVVGWlF5eEZRVUZYTEV0QlFVc3NUVUZCVFZnc1EwRkJTeXhGUVVNelF5eEhRVUZKVlN4RlFVRlZMRTlCUVZFc1QwRkJUMEVzUlVGQlZTeE5RVVYyUXl4SlFVRkpSU3hGUVVGblFrUXNSVUZCVnl4VFFVRlRMRTFCUVUxWUxFTkJRVXNzUlVGRGJrUXNSMEZCU1Zrc1JVRkJZeXhQUVVGUkxFOUJRVTlCTEVWQlFXTXNUVUZGTDBNc1NVRkJTVU1zUlVGQldVWXNSVUZCVnl4TFFVRkxMRTFCUVUxWUxFTkJRVXNzUlVGRE0wTXNUMEZCU1dFc1JVRkJWU3hQUVVGbFFTeEZRVUZWTEUxQlJXaERZaXhEUVVOWUxFVkJSMEVzVDBGQlR5eEpRVU5ZTEVOQk1VTlBSaXhGUVVGVExGRkJRVUZMTEVsQk5VSklUQ3hSUVVGQkxFdFVZMnBDTEVsQlFVMW5RaXhIUVVGclFpeG5Ra0ZGYkVKRExFZEJRWGRDTEhOQ1FVVjRRa01zUjBGQmEwSXNlVVJCVFdwQ0xGTkJRVk5ETEVkQlExcERMRVZCUTBGRExFVkJRMEZETEVWQlEwRkRMRVZCUTJkQ0xFTkJRMmhDTEVkQlFVMHNRMEZCUlN4TlFVRkJReXhGUVVGUExGTkJRVlZETEVWQlFXTXNXVUZCUVVNc1JVRkJZU3hUUVVGQlF5eERRVUZUTEVWQlFVbERMRWRCUVhGQ1VpeEZRVUZOUXl4RlFVRlZReXhEUVVGUkxFVkJSemxITEU5QlJtRXNTVUZCU1U4c1IwRkJVMVFzUlVGQlRVY3NSVUZCVDBNc1JVRkJUU3hQUVVGUlF5eEZRVUZqUlN4RlFVRlZSQ3hEUVVGWExFVkJSVFZGTEUxQlFVMHNRMEZEZEVJc1EwRkhUeXhUUVVGVFJTeEhRVU5hVWl4RlFVTkJReXhGUVVOQlF5eEZRVTFHTEVOQk4wUkdMRWxCUVVGUkxFVkJRVUZETEVWQlFVRkRMRVZCUVVGRExFVkJRVUZETEVWQlFVRkRMRVZCUVVGRExFVkJRVUZETEVWQlFVRkRMRVZCUVVGRExFVkJRVUZETEVWQlFVRkRMRVZCUVVGRExFVkJRVUZETEVWQlFVRkRMRWRCUVVGRExFZEJPRVJKTEVsQlFVMXVRaXhGUVVGblJVb3NSVUZCVXl4WlFVTjZSWGRDTEVkQlFYTkNlRUlzUlVGQlV5eFhRVUZYTEVWQlF6RkRMRTlCUTBGRkxFVkJRVkZJTEVWQlFWTXNUVUZCVFN4WlFVRlpMRVZCUTI1RE1FSXNSVUZCYlVJc1NVRkJTVU1zUjBGRGRrSkRMRVZCUVRoQ0xFTkJRVU1zUlVGTEwwSkRMRWRCUVdWd1FpeEZRVUZCVWl4RlFVRlRMRmRCUVZRc1MwRkJRVkVzUlVGQmNVSXNRMEZCUXl4RlFVTXpRMjlDTEVWQlFXRXNTMEZCU3l4RFFVRkRReXhGUVVGSFF5eEpRVUZOUkN4RlFVRkZMRk5CUVZNc1RVRkJUU3hMUVVGUFF5eEZRVUZGTEZOQlFWTXNUVUZCVFN4SlFVRkpMRVZCUlhwRkxFbEJRVTE2UWl4RlFVRlhMRWxCUVVrc1IwRkJRVEJDTEZGQlFUSkNMRTlCUVZjc1EwRkJRMFlzUlVGQlIwTXNTVUZCVFVRc1JVRkJTVU1zUTBGQlF5eEZRVU14UlN4UlFVRlRSU3hGUVVGUkxFVkJRVWRCTEVWQlFWRktMRVZCUVdFc1QwRkJVVWtzU1VGQlV5eERRVU4wUkN4SlFVRk5ReXhGUVVGUlRDeEZRVUZoU1N4RFFVRkxMRVZCUXpGQ1JTeEZRVUZSUkN4RlFVRk5MRk5CUVZNc1RVRkJUU3hMUVVNM1FrVXNSMEZCVFVnc1IwRkJVMG9zUlVGQllTeFBRVUZUTEVWQlFVa3hRaXhGUVVGTkxFOUJRVk13UWl4RlFVRmhTU3hGUVVGUkxFTkJRVU1zUlVGQlJTeFRRVUZUTEUxQlFVMHNTMEZGTDBaSkxFZEJRVlVzU1VGQlNVTXNSMEZCV1Vnc1JVRkJUME1zUjBGQlMwWXNSVUZCVFN4UlFVRlRRU3hGUVVGTkxFMUJRVTlFTEVWQlFWRXNRMEZCUXl4RlFVTnFSak5DTEVWQlFWTXNTVUZCU1RaQ0xFVkJRVTlGTEVWQlFVOHNRMEZETDBJc1EwRkpRU3hIUVVGSkwwSXNSVUZCVXl4TlFVRlJMRWRCUTJwQ0xFZEJRVWtzUTBGQlEybERMRWRCUVZkd1F5eEZRVUZQTEVWQlFVZEJMRVZCUVUwc1RVRkJUU3hGUVVGSExFTkJRM0pETEVsQlFVMXJReXhGUVVGVkxFbEJRVWxETEVkQlFWa3NSVUZCUjI1RExFVkJRVTBzVDBGQlVYRkRMRWRCUVdGNlF5eERRVUZKTEVWQlFVY3NSVUZCUnl4RFFVRkRMRVZCUTNwRlR5eEZRVUZUTEVsQlFVa3NSVUZCUnl0Q0xFTkJRVThzUTBGRE0wSXNUVUZEUnl4RFFVVklMRWxCUVUxSkxFZEJRVkV2UWl4RlFVRkJTaXhGUVVGVExHOUNRVUZ2UWl4RFFVRkRMRWxCUVRsQ0xGbEJRVUZKTEVWQlFXdERMRWRCUldoRUxFZEJRVWtyUWl4RlFVRk5MRTFCUVZFc1IwRkJTeXhEUVVGRFJpeEhRVUZYY0VNc1JVRkJUeXhGUVVGSGMwTXNSVUZCVFN4TFFVRkxMRVZCUVVjc1EwRkRka1FzU1VGQlRVb3NSVUZCVlN4SlFVRkpReXhIUVVGWkxFVkJRVWRITEVWQlFVMHNUVUZCVDBRc1IwRkJZWHBETEVOQlFVa3NSVUZCUnl4RlFVRkhMRU5CUVVNc1JVRkZlRVZQTEVWQlFWTXNTVUZCU1N4RlFVRkhLMElzUTBGQlR5eERRVU16UWl4RFFVTktMRU5CVVVFc1NVRkJUVXNzUlVGQlV5eEpRVUZKTEVkQlFVRldMRkZCUVhsQ0xFOUJRVmNzUTBGQlEwWXNSVUZCUjBNc1NVRkJUVVFzUlVGQlNVTXNRMEZCUXl4RlFVTnNSVmtzUlVGQlpTeEZRVU51UWl4UlFVRlhReXhMUVVGVE0wTXNSVUZCVXl4VlFVRlpMRU5CUVVNc1JVRkJSeXhEUVVWNlF5eEhRVUZKTWtNc1JVRkJUU3hQUVVGVExGVkJRVmNzVTBGRk9VSXNTVUZCVFZRc1JVRkJVVk1zUlVGQlRTeFRRVUZUTEUxQlFVMHNTMEZETjBKU0xFVkJRVTFSTEVWQlFVMHNVMEZCVXl4SlFVRkpMRXRCUVU4c1JVRkRhRU5ETEVkQlFWa3hReXhGUVVGTlowTXNRMEZCU3l4RlFVVTNRaXhIUVVGSlV5eEZRVUZOTEU5QlFWTXNUMEZEWmtZc1JVRkJUeXhKUVVGSlVDeEZRVUZQTEVsQlFVbFhMRWRCUVdOWUxFVkJRVTlETEVWQlFVdFBMRWxCUVdkQ1F5eEZRVUZOTEVWQlFVVXNRMEZCUXl4VlFVTnNSVUVzUlVGQlRTeE5RVUZSTEZGQlFWVnFSQ3hIUVVGblFpeExRVUZMYTBRc1JVRkJVeXhGUVVGSExFTkJRMmhGTEVsQlFVMUZMRWRCUVdVMVF5eEZRVU5vUWl4TlFVRk5aME1zUlVGQlVTeEZRVUZIUXl4RlFVRk5MRU5CUVVNc1JVRkRlRUlzUzBGQlN6dEJRVUZCTEVOQlFVa3NSVUZEVkN4UlFVRlJMRTlCUVZFc1NVRkJTU3hGUVVOdVFsa3NSMEZCT0VOMlFpeEhRVUZ6UW5kQ0xFZEJRVlZHTEVWQlFVa3NRMEZCUXl4RlFVVjZSa3dzUlVGQlR5eEpRVUZKVUN4RlFVRlBMRWxCUVVsbExFZEJRV05tTEVWQlFVOURMRVZCUVV0UExFbEJRV2RDU3l4SFFVRlBTaXhGUVVGTkxFVkJRVVVzUTBGQlF5eERRVU53Uml4VFFVRlhRU3hGUVVGTkxFOUJRVk1zVDBGQlVTeERRVVU1UWl4SlFVRk5UeXhIUVVGUlRpeEhRVUZWTEUxQlFVMXFSQ3hGUVVGeFFpeEZRVU51UkN4SFFVRkpMRU5CUVVOMVJDeEhRVVZFVkN4RlFVRlBMRWxCUVVsUUxFVkJRVThzU1VGQlNXbENMRWRCUVdOcVFpeEZRVUZQUXl4RlFVRkxUeXhKUVVGblFpeERRVUZETEVWQlFVY3NVMEZCVlZJc1JVRkJUME1zUlVGQlMxRXNSVUZCVFN4RlFVRkZMRU5CUVVNc1RVRkRhRWNzUTBGRFNDeEpRVUZOVXl4SFFVRlpSaXhIUVVGTkxFOUJRVk1zUjBGQlMwRXNSMEZCVFN4RFFVRkRMRVZCUVVsQkxFZEJRVTBzUTBGQlF5eEZRVUZGTEUxQlFVMHNSMEZCUnl4RlFVRkpMRU5CUVVNc1JVRkRlRVZVTEVWQlFVOHNTVUZEU0ZBc1JVRkRRU3hKUVVGSmFVSXNSMEZCWTJwQ0xFVkJRVTlETEVWQlFVdFBMRWxCUVdkQ1ZTeEhRVUZYTEZOQlFWVnNRaXhGUVVGUkxFVkJRVWRETEVWQlFVMHNSVUZCUjFFc1JVRkJUU3hGUVVGRkxFTkJRMjVITEVOQlEwb3NRMEZEU2l4TlFVTkpSaXhGUVVGUExFbEJRVWxRTEVWQlFVOHNTVUZCU1cxQ0xFZEJRV051UWl4RlFVRlBReXhGUVVGTFR5eEpRVUZuUWtNc1JVRkJUU3hMUVVGTlFTeEZRVUZOTEVWQlFVVXNRMEZCUXl4RFFVVTNSaXhEUVVkQkxGRkJRVmRCTEV0QlFWTkdMRVZCUVU4c1QwRkJUeXhIUVVNNVFpOUNMRVZCUVVFMFF5eEhRVUZQV0N4RlFVRk5MRTFCUVU5MFF5eERRVUZSTEVsQlFUVkNMRTFCUVVGTExFVkJRU3RDTEUxQlFVMXBReXhIUVZGNlF5eEpRVUZOV1N4RlFVRmxMR2xEUVVObVF5eEZRVUZqTEhGQ1FVTmtReXhGUVVGWkxFbEJRVWtzUjBGQlFURkNMRkZCUVRSQ0xFOUJRVmNzUTBGQlEwWXNSVUZCUjBNc1NVRkJUVVFzUlVGQlNVTXNRMEZCUXl4RlFVVTFSU3hSUVVGWE5FSXNTMEZCVVRGRUxFVkJRVk1zVjBGQllTeERRVUZETEVWQlFVY3NRMEZKZWtNc1NVRkJUV3RFTEVWQlNFOW9SQ3hGUVVGTmQwUXNSVUZCU3l4VFFVRlRMRTFCUVUwc1NVRkJTU3hGUVVkNFFpeE5RVUZOT1VRc1JVRkJaU3hGUVVOd1F5dEVMRWRCUTBGRExFZEJRMEZXTEVsQlEwRlRMRWRCUVZOVUxFVkJRVTBzUTBGQlF5eEZRVU5vUWxVc1IwRkJUMVlzUlVGQlRTeERRVUZETEVkQlIyeENMRWxCUVUxWExFZEJRVThzU1VGQlNVTXNSMEZEWWtvc1JVRkJTeXhUUVVGVExFMUJRVTBzUzBGRGNFSkJMRVZCUVVzc1UwRkJVeXhKUVVGSkxFdEJRVThzUlVGRGVrSkJMRVZCUVVzc1QwRkRURU1zUjBGRFFVUXNSVUZCU3l4SFFVTk1RU3hGUVVGTExFdEJRMHhGTEVWQlEwb3NSVUZEUVVnc1JVRkJWU3hKUVVGSlNTeEhRVUZMTEUxQlFVOUJMRVZCUVVrc1EwRkRiRU1zUTBGSFFTeFJRVUZYUVN4TFFVRlJTaXhGUVVGVkxFOUJRVThzUlVGRGFFTXNSMEZCU1Vrc1JVRkJTeXhYUVVGaExFVkJRVWNzUTBGRGNrSXNTVUZCVFVVc1JVRkJXWFJDTEVWQlFVOHNTVUZCU1N4RFFVRkRiMElzUlVGQlN5eFZRVUZWTEVWQlF6ZERMRWRCUVVrc1EwRkJRMFVzUjBGQlpVRXNSVUZCVlN4UFFVRlRMRTlCUVZNc1UwRkZMME5CTEVWQlFUUkNMRTFCUVUwc1MwRkJTMFlzUTBGQlNTeERRVU5vUkN4TlFVTkpiRVFzUlVGQlFUaERMRVZCUVZVc1NVRkJTVWtzUlVGQlN5eFZRVUZWTEVsQlFUZENMRTFCUVVGc1JDeEZRVUZuUXl4VFFVRlRMRXRCUVV0clJDeEhRVk4wUkN4UlFVRlhSeXhMUVVGVmNFUXNSVUZCUVZvc1JVRkJVeXhQUVVGVUxFdEJRVUZaTEVWQlFXbENMRU5CUVVNc1JVRkJSeXhEUVVOMFF5eEpRVUZOY1VRc1JVRkJUVVFzUlVGQlR5eEpRVUZKTEZkQlFWY3NSMEZCUnl4RlFVRkpRU3hGUVVGUExFbEJRVTBzU1VGQlRVRXNSVUZCVHl4SlFVTTNSRVVzUlVGQlQwWXNSVUZCVHl4VFFVRlRMRTFCUVUwc1MwRkRia04yUXl4RlFVRnBRaXhKUVVGSmQwTXNRMEZCUnl4SFFVVjRRbkJFTEVWQlFVRjVReXhIUVVGUFdTeEZRVUZOTjBRc1EwRkJVU3hKUVVGeVFpeE5RVUZCVVN4RlFVRjNRaXhUUVVGVExFbEJRVWx2UkN4SlFVTnlRMjVFTEVWQlFVRjNReXhIUVVGUFdTeEZRVUZOZWtJc1EwRkJUU3hKUVVGdVFpeE5RVUZCTTBJc1JVRkJjMElzVTBGQlV5eEpRVUZKYlVRc1NVRkRia05zUkN4RlFVRkJkVU1zUjBGQlQxa3NSVUZCVFZRc1EwRkJVeXhKUVVGMFFpeE5RVUZCTVVNc1JVRkJlVUlzVTBGQlV5eEpRVUZKYTBRc1JVRkRNVU1zUTBGSFFTeEhRVUZKYWtVc1JVRkJVeXhaUVVOVUxGRkJRVmR0UlN4TFFVRlZReXhIUVVGWmNFVXNSVUZCVXl4WFFVRlhMRVZCUVVjc1EwRkRjRVFzU1VGQlRXbEZMRVZCUVUxRkxFVkJRVThzVjBGQlZ5eEhRVUZITEVWQlFVbEJMRVZCUVZNc1NVRkJUVUVzUlVGRGNFUXhReXhGUVVGcFFpeEpRVUZKZDBNc1EwRkJSeXhEUVVNMVFpeERRVTlLTEZGQlFWTkpMRXRCUVZkeVJDeEZRVUZCYUVJc1JVRkJVeXhSUVVGVUxFdEJRVUZuUWl4RlFVRnJRaXhEUVVGRExFVkJRVWNzUTBGRGRFTXNTVUZCVFhORUxFVkJRVTlETEVkQlFVc3NUVUZCVFVZc1JVRkJVU3hKUVVGSkxFVkJRemxDU0N4RlFVRlBSeXhGUVVGUkxGTkJRVk1zVFVGQlRTeExRVU53UXpWRExFVkJRV2xDTEV0QlFVczJReXhEUVVGSkxFZEJSVEZDY2tRc1JVRkJRWEZETEVkQlFVOVpMRVZCUVUwM1JDeERRVUZSTEVsQlFYSkNMRTFCUVVGWkxFVkJRWGRDTEZOQlFWTXNTMEZCUzNGRUxFbEJRM1JEY0VRc1JVRkJRVzlETEVkQlFVOVpMRVZCUVUxNlFpeERRVUZOTEVsQlFXNUNMRTFCUVVGMlFpeEZRVUZ6UWl4VFFVRlRMRXRCUVV0dlJDeEpRVU53UTI1RUxFVkJRVUZ0UXl4SFFVRlBXU3hGUVVGTlZDeERRVUZUTEVsQlFYUkNMRTFCUVVGMFF5eEZRVUY1UWl4VFFVRlRMRXRCUVV0dFJDeEZRVU16UXl4RFFVOUJMRkZCUVZkRUxFdEJRVmRxUkN4RlFVRkJjRUlzUlVGQlV5eHRRa0ZCVkN4TFFVRkJiMElzUlVGQk5rSXNRMEZCUXl4RlFVTm9SRXNzUlVGQmFVSXNTMEZCU3poRExFZEJRVXNzVFVGQlRVWXNSVUZCVVN4TFFVRk5MRWRCUVU5QkxFVkJRVkVzVjBGQlZ5eERRVUZETEVWQlR6bEZMRkZCUVZkSExFdEJRVk5ETEVkQlFXOUNka1VzUTBGQlN5eEZRVUZITEVOQlF6VkRMRWxCUVUxblJTeEZRVUZQVFN4RlFVRk5MRk5CUVZNc1MwRkROVUl2UXl4RlFVRnBRaXhaUVVGWkswTXNRMEZCU3l4SFFVVnNRMjVFTEVWQlFVRnBReXhIUVVGUFdTeEZRVUZOTjBRc1EwRkJVU3hKUVVGeVFpeE5RVUZCWjBJc1JVRkJkMElzVTBGQlV5eFpRVUZaYlVRc1NVRkROME5zUkN4SFFVRkJaME1zUjBGQlQxa3NSVUZCVFhwQ0xFTkJRVTBzU1VGQmJrSXNUVUZCUVc1Q0xFZEJRWE5DTEZOQlFWTXNXVUZCV1d0RUxFbEJRek5EYWtRc1IwRkJRU3RDTEVkQlFVOVpMRVZCUVUxVUxFTkJRVk1zU1VGQmRFSXNUVUZCUVd4RExFZEJRWGxDTEZOQlFWTXNXVUZCV1dsRUxFVkJRMnhFTEVOQlEwRXNUMEZCUVRkRExFVkJRV0VzUzBGQlN5eEhRVUZIZEVJc1JVRkJVeXhQUVVGUExFTkJRVU1zUlVGREwwSXNRMEZEU0N4TlFVRkJTQ3hGUVVOQkxGbEJRVUZGTEVWQlEwRXNVMEZCVlhGQ0xFVkJRMVlzVTBGQlZVVXNRMEZEWkN4RFFVTktMRU5CVFVFc1UwRkJVMWNzUjBGQlYzQkRMRVZCUVdsQ1owTXNSVUZCWlVNc1JVRkJjMElzUTBGRGRFVXNVVUZCVTBnc1JVRkJVVVVzUlVGQlQwWXNSVUZCVVVjc1JVRkJTMGdzU1VGRGFrTXNSMEZCU1RsQ0xFVkJRVTA0UWl4RFFVRkxMRVZCUVVVc1MwRkJTeXhKUVVGTkxFZEJRVWtzVFVGQlR5eEhRVWN6UXl4TlFVRlBMRVZCUTFnc1EwRk5UeXhUUVVGVmVVTXNSMEZCYjBKRExFVkJRVEpETEVOQlF6VkZMRkZCUVZORExFVkJRVk1zUlVGQlIwRXNSVUZCVTBRc1JVRkJVU3hQUVVGUlF5eEpRVUZWTEVOQlEzQkVMRWxCUVUxVUxFVkJRVTlSTEVWQlFWRkRMRU5CUVUwc1JVRkhNMElzUjBGQlNWUXNSVUZCU3l4UFFVRlRMRTlCUVZNc1EwRkJRMEVzUlVGQlN5eFRRVUZUTEVsQlFVa3NSVUZCUnl4VFFVZHFSQ3hKUVVGSlZTeEZRVUZsUXl4SFFVRnZRbGdzUTBGQlNTeEZRVU16UXl4SFFVRkpWU3hGUVVGaExFOUJRVk1zUlVGRGRFSXNVVUZCVTBVc1MwRkJWVVlzUlVGQll5eE5RVUZOUnl4SFFVRmpSQ3hGUVVGUlNDeERRVUZOTEUxQlEyaEZMRU5CUTBnc1NVRkJTVXNzUlVGQlYwTXNSMEZCY1VKbUxFTkJRVWtzUlVGRGNFTmpMRWxCUVZVc1RVRkJUVVFzUjBGQlkwTXNSVUZCVlV3c1EwRkJUU3hGUVVOMFJDeERRVU5LTEVOQlEwb3NRMEZIVHl4VFFVRlRia1FzUjBGQmMwSnRRaXhGUVVGclJTeERRVU53Unl4SlFVRk5kVU1zUlVGQkswTXNRMEZCUXl4RlFVTjBSQ3hSUVVGWFF5eExRVUZQTEU5QlFVOHNTMEZCUzNoRExFTkJRVXNzUlVGQlJ5eERRVU5zUXl4SlFVRk5lVU1zUlVGQlVYcERMRVZCUVUxM1F5eERRVUZITEVWQlJYWkNSQ3hGUVVGUFF5eEZRVUZKTEZsQlFWa3NRMEZCUXl4RlFVRkpMRU5CUTNoQ0xFbEJRVXRCTEVWQlEwd3NUVUZCVDBVc1IwRkJaU3hMUVVGTFF5eEhRVUZsTEZGQlFWRkdMRU5CUVVzc1EwRkJReXhGUVVONFJDeEpRVUZMUVN4RFFVTlVMRU5CUTBvc1EwRkZRU3hQUVVGUFJpeERRVU5ZTEVOQlIwOHNVMEZCVXpWQ0xFZEJRV2xFV1N4RlFVRmpjVUlzUlVGQmRVTXNRMEV6VkhSSUxFbEJRVUV2UlN4RlFUUlVTU3hKUVVGTlowWXNSMEZCVTJoR0xFVkJRVUVyUlN4RlFVRkxMRzFDUVVGdFFuSkNMRU5CUVVrc1NVRkJOVUlzV1VGQlFURkVMRVZCUVdkRExFZEJReTlETEVkQlFVbG5SaXhIUVVGVlFTeEZRVUZQTEV0QlFVOTBRaXhGUVVGTkxFOUJRVTl6UWl4RFFVYzNReXhEUVVkUExGTkJRVk53UWl4SFFVRlpjRVVzUlVGQmMwTXNRMEZIT1VRc1QwRkdZeXhQUVVGUExFdEJRVXRCTEVOQlFWRXNSVUZCUlN4UFFVRlJMRWRCUVUwc1JVRkJSU3haUVVGWkxFZEJRVXNzVVVGQlZTeEZRVUZGTEZsQlFWa3NSMEZCU3l4TFFVRkxMRVZCUjJ4SExFbEJRVXQ1Uml4SFFVRk5ReXhIUVVFeVFqRkdMRVZCUVZONVJpeERRVUZETEVWQlFVY3NVVUZCVVN4RFFVRkRMRVZCUXpWRUxFOUJRVThzUTBGQlEwVXNSVUZCUjBNc1NVRkJUVVFzUlVGQlJTeFBRVUZQUXl4RFFVRkRMRVZCUVVjc1EwRkJReXhEUVVGRExFVkJRMmhETEVsQlFVdERMRWRCUVZOQkxFVkJRVWtzVjBGQlZ5eEhRVUZITEVWQlFVbEJMRVZCUVUwc1NVRkJUVUVzUTBGQlNTeERRVU0zUkN4RFFVZFBMRk5CUVZOSUxFZEJRVEpDU1N4RlFVRlhReXhGUVVGelFpeERRVU40UlN4UFFVRkpSQ3hIUVVGUkxFMUJRVkZCTEVkQlFWRXNTMEZCYTBJc1EwRkJReXhGUVVNelF5eE5RVUZOTEZGQlFWRkJMRU5CUVVrc1JVRkRXRUVzUlVGRFJpeFBRVUZSUlN4SFFVRk5MRU5CUVVNc1EwRkJRMEVzUTBGQlF5eEZRVU5xUWl4SlFVRkxRU3hIUVVGTlRpeEhRVUV5UWswc1JVRkJSMFFzUTBGQlJTeERRVUZETEVWQlF6VkRMRTlCUVU4c1EwRkJRMG9zUlVGQlIwTXNTVUZCVFVRc1JVRkJSU3hQUVVGUFF5eERRVUZETEVWQlFVY3NRMEZCUXl4RFFVRkRMRWRCU1dwRExFZEJRVXRGTEVkQlExSXNUVUZCVFVNc1EwRkJSU3hGUVVOU0xFOUJRVkVzUjBGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4RlFVTnFRaXhKUVVGTExFZEJRVTBzUlVGQlJTeExRVUZMTEVOQlFVTXNSVUZEYmtJc1QwRkJVU3hIUVVGTkxFVkJRVVVzVDBGQlV5eERRVUZETEVOQlEyNURMRU5CVDA4c1NVRkJUWEpGTEVkQlFVNHNTMEZCWlN4RFFVRm1MR05CUTBnc1MwRkJUeXhMUVVGdlFpeEpRVUZKTEVsQlF5OUNMRXRCUVU4c1RVRkJaMElzUTBGQlF5eEZRVU40UWl4TFFVRlBMR0ZCUVRSRExFTkJRVU1zUlVGSE4wTXNTVUZCU1hWRExFVkJRV0VzUTBGRGNFSXNTMEZCU3l4TFFVRkxMRWxCUVVsQkxFTkJRVWNzUTBGRGNrSXNRMEZIVHl4TFFVRkxTeXhGUVVGWkxFTkJRMmhDTEV0QlFVc3NUVUZCVFN4TFFVRk5Na0lzUjBGQlRVRXNSVUZCUlN4UFFVRlBNMElzUTBGQlNTeERRVUZETEVkQlEzcERMRXRCUVVzc1RVRkJUU3hMUVVGTFFTeERRVUZKTEVOQlEzaENMRU5CUjA4c1dVRkJXVVVzUlVGQmIwSXNRMEZEYmtNc1NVRkJUVEJDTEVWQlFWRXhRaXhGUVVGTkxFbEJRVWtzV1VGQldTeEZRVU5vUXl4UFFVRlBMRXRCUVVzc1MwRkJTeXhaUVVGWkxFVkJRVVVzUzBGQlRWY3NSMEZCVVVFc1JVRkJTU3haUVVGWkxFZEJRVXRsTEVOQlFVc3NTVUZGTTBVc1MwRkJTeXhoUVVGaFFTeERRVUZMTEVWQlFVa3hRaXhGUVVNdlFpeERRVWRQTEZsQlFYVkNMRU5CUXpGQ0xFOUJRVThzVFVGQlRTeExRVUZMTEV0QlFVc3NTVUZCU1N4RFFVTXZRaXhEUVVkUExHRkJRVEJDTEVOQlF6ZENMRTlCUVU4c1MwRkJTeXhOUVVGTkxFbEJRVXRHTEVkQlFWTkJMRVZCUVVzc1UwRkJVeXhEUVVGRExFTkJRMjVFTEVOQlIwOHNiMEpCUVhORUxFTkJRM3BFTEU5QlFVODJRaXhIUVVGblFpeExRVUZMTEdGQlFXTkRMRVZCUVdVc1EwRkROMFFzUTBGRFNpeEZRVWRoTjBZc1IwRkJUaXhMUVVGbExFTkJRMWdzV1VGRFNWUXNSVUZEUVVjc1JVRkRRVzlITEVWQlEwRnlSeXhGUVVOQlN5eEZRVU5CUkN4RlFVTlVMRU5CVGxNc1ZVRkJRVTRzUlVGRFFTeFhRVUZCUnl4RlFVTkJMRmxCUVVGdlJ5eEZRVU5CTEdOQlFVRnlSeXhGUVVOQkxHTkJRVUZMTEVWQlEwRXNhVUpCUVVGRUxFTkJRMUlzUTBGRlNTeFBRVUV3UWl4RFFVTTNRaXhOUVVGUExFTkJRMGdzVFVGQlR5eExRVUZMTEV0QlExb3NUMEZCVVN4TFFVRkxMRTFCUVUwc1RVRkRia0lzVDBGQlVTeExRVUZMTEUxQlFVMHNUVUZEYmtJc1RVRkJUeXhMUVVGTExFMUJRVTBzUzBGRGJFSXNWMEZCV1d0SExFZEJRV0VzUzBGQlN5eEpRVUZKTEVWQlEyeERMRlZCUVZjc1EwRkJSU3hOUVVGUExFVkJRVWNzU1VGQlN5eExRVUZMTEUxQlFVOHNSVUZEZUVNc1RVRkJUeXhMUVVGTExGTkJRVk1zVjBGQlZ5eEZRVU5vUXl4UFFVRlJMRXRCUVVzc1UwRkJVeXhaUVVGWkxFVkJRMnhETEZWQlFWY3NTMEZCU3l4VFFVRlRMRzFDUVVGdFFpeEZRVU0xUXl4VlFVRlhMRXRCUVVzc1UwRkJVeXhKUVVGTFF5eEhRVUZOUVN4RlFVRkZMRTFCUVUwc1EwRkJReXhGUVVNM1F5eGhRVUZqTEV0QlFVc3NWMEZEZGtJc1EwRkRTaXhEUVVOS0xFVkJSMkZzUlN4SFFVRk9MRXRCUVd0Q0xFTkJTV1FzV1VGRFNVZ3NSVUZEUVVNc1JVRkRRWEZGTEVWQlEwRkRMRVZCUTBGRExFVkJRMVFzUTBGTVV5eFhRVUZCZUVVc1JVRkRRU3hUUVVGQlF5eEZRVU5CTEZkQlFVRnhSU3hGUVVOQkxGZEJRVUZETEVWQlEwRXNZVUZCUVVNc1JVRlNXQ3hMUVVGUExFOUJRWE5DTEVOQlFVTXNSVUZET1VJc1MwRkJUeXhUUVVGeFFpeEpRVUZKYUVZc1JVRlJOMElzUTBGRlNTeE5RVUZOYVVJc1JVRkJhMElzUTBGRE0wSXNTMEZCU3l4UFFVRlBMRXRCUVV0QkxFTkJRVXNzUTBGRE1VSXNRMEZGVHl4UFFVRTJRaXhEUVVOb1F5eE5RVUZQTEVOQlEwZ3NUMEZCVVN4TFFVRkxMRTFCUTJJc1UwRkJWU3hMUVVGTExGRkJRMllzVDBGQlVTeExRVUZMTEUxQlEySXNUVUZCVHl4TFFVRkxMRk5CUVZNc1YwRkJWeXhGUVVOb1F5eFZRVUZYTEV0QlFVc3NVMEZCVXl4dFFrRkJiVUlzUlVGRE5VTXNUMEZCVVN4TFFVRkxMRk5CUVZNc1dVRkJXU3hGUVVOc1F5eFZRVUZYTEVOQlFVVXNUVUZCVHl4TFFVRkxMRTFCUVU4c1NVRkJTeXhMUVVGTExFZEJRVWtzUlVGRE9VTXNVVUZCVXl4TFFVRkxMRTlCUVU4c1NVRkJTMEVzUjBGQlZVRXNSVUZCVFN4TlFVRk5MRU5CUVVNc1EwRkRja1FzUTBGRFNpeERRVU5LTEVWQlIyRkZMRWRCUVU0c1MwRkJiMElzUTBGTGFFSXNXVUZCYlVKWUxFVkJRWE5DUXl4RlFVRnZRblZGTEVWQlFYZENReXhGUVVGclFpeERRVUZ3Uml4WFFVRkJla1VzUlVGQmMwSXNVMEZCUVVNc1JVRkJiMElzWVVGQlFYVkZMRVZCUVhkQ0xHRkJRVUZETEVWQlNqVkdMRXRCUVU4c1MwRkJaU3hQUVVOMFFpeExRVUZQTEZOQlFYRkNMRWxCUVVscVJpeEhRVU5vUXl4TFFVRlBMRTFCUVhkQ0xFTkJRVU1zUTBGRkswVXNRMEZGZUVjc1QwRkJLMElzUTBGRGJFTXNUVUZCVHl4RFFVTklMRk5CUVZVc1MwRkJTeXhSUVVObUxGVkJRVmNzUTBGQlJTeE5RVUZQTEV0QlFVc3NUVUZCVHl4SlFVRkxMRXRCUVVzc1IwRkJTU3hGUVVNNVF5eFZRVUZYTEV0QlFVc3NVMEZCVXl4dFFrRkJiVUlzUlVGRE5VTXNUVUZCVHl4TFFVRkxMRk5CUVZNc1YwRkJWeXhGUVVOb1F5eFBRVUZSTEV0QlFVc3NVMEZCVXl4WlFVRlpMRVZCUTJ4RExFMUJRVThzVDBGRFVDeFRRVUZWTEV0QlFVc3NVVUZEWml4VlFVRlhMRXRCUVVzc1RVRkJUU3hKUVVGTGJVTXNSMEZCVTBFc1JVRkJTeXhOUVVGTkxFTkJRVU1zUTBGRGNFUXNRMEZEU2l4RFFVTktMRVZCUjJGV0xFZEJRVTRzUzBGQmIwSXNRMEZKYUVJc1dVRkRTV3BDTEVWQlEwRkRMRVZCUTBGMVJTeEZRVU5CZEVRc1JVRkRRWGRFTEVWQlEwRkRMRVZCUTBGRExFVkJRMEZJTEVWQlExUXNRMEZTVXl4WFFVRkJla1VzUlVGRFFTeFRRVUZCUXl4RlFVTkJMR0ZCUVVGMVJTeEZRVU5CTEdWQlFVRjBSQ3hGUVVOQkxGZEJRVUYzUkN4RlFVTkJMR3RDUVVGQlF5eEZRVU5CTEdkQ1FVRkJReXhGUVVOQkxHRkJRVUZJTEVWQldGZ3NTMEZCVHl4TFFVRmxMRmxCUTNSQ0xFdEJRVThzVTBGQmNVSXNTVUZCU1dwR0xFVkJWemRDTEVOQlJVa3NUMEZCSzBJc1EwRkRiRU1zVFVGQlR5eERRVU5JTEUxQlFVOHNXVUZEVUN4VFFVRlZMRXRCUVVzc1VVRkRaaXhWUVVGWExFTkJRVVVzVFVGQlR5eExRVUZMTEUxQlFVOHNTVUZCU3l4TFFVRkxMRWRCUVVrc1JVRkRPVU1zVlVGQlZ5eExRVUZMTEZOQlFWTXNiVUpCUVcxQ0xFVkJRelZETEUxQlFVOHNTMEZCU3l4VFFVRlRMRmRCUVZjc1JVRkRhRU1zVDBGQlVTeExRVUZMTEZOQlFWTXNXVUZCV1N4RlFVTnNReXhUUVVGVkxFdEJRVXNzVVVGRFppeFhRVUZaTEV0QlFVc3NWVUZEYWtJc1QwRkJVU3hMUVVGTExFMUJRMklzYVVKQlFXdENMRU5CUVVVc1RVRkJUeXhMUVVGTExHRkJRV01zU1VGQlN5eExRVUZMTEZWQlFWY3NRMEZEZGtVc1EwRkRTaXhEUVVOS0xFVkJSMkYxUWl4SFFVRk9MRXRCUVc5Q0xFTkJTV2hDTEZsQlEwbG1MRVZCUTBGRExFVkJRMEYxUlN4RlFVTkJXaXhGUVVOQllTeEZRVU5VTEVOQlRGTXNWMEZCUVhwRkxFVkJRMEVzVTBGQlFVTXNSVUZEUVN4aFFVRkJkVVVzUlVGRFFTeFZRVUZCV2l4RlFVTkJMR0ZCUVVGaExFVkJVbGdzUzBGQlR5eExRVUZsTEZsQlEzUkNMRXRCUVU4c1UwRkJjVUlzU1VGQlNXcEdMRVZCVVRkQ0xFTkJSVWtzVDBGQkswSXNRMEZEYkVNc1RVRkJUeXhEUVVOSUxFMUJRVThzV1VGRFVDeFRRVUZWTEV0QlFVc3NVVUZEWml4VlFVRlhMRU5CUVVVc1RVRkJUeXhMUVVGTExFMUJRVThzU1VGQlN5eExRVUZMTEVkQlFVa3NSVUZET1VNc1ZVRkJWeXhMUVVGTExGTkJRVk1zYlVKQlFXMUNMRVZCUXpWRExFMUJRVThzUzBGQlN5eFRRVUZUTEZkQlFWY3NSVUZEYUVNc1QwRkJVU3hMUVVGTExGTkJRVk1zV1VGQldTeEZRVU5zUXl4VFFVRlZMRXRCUVVzc1VVRkRaaXhOUVVGUExFdEJRVXNzU1VGRGFFSXNRMEZEU2l4RFFVTktMRVZCUjJFeVFpeEhRVUZPTEV0QlFXOUNMRU5CUjJoQ0xGbEJRMGx1UWl4RlFVTkJReXhGUVVOQmRVVXNSVUZEUVVzc1JVRkRRVW9zUlVGRFZDeERRVXhUTEZkQlFVRjZSU3hGUVVOQkxGTkJRVUZETEVWQlEwRXNZVUZCUVhWRkxFVkJRMEVzVlVGQlFVc3NSVUZEUVN4aFFVRkJTaXhGUVZCWUxFdEJRVThzVTBGQmNVSXNTVUZCU1dwR0xFVkJVVGRDTEVOQlJVa3NUMEZCTWtJc1EwRkRPVUlzVFVGQlR5eERRVU5JTEUxQlFVOHNTMEZCU3l4TFFVTmFMRk5CUVZVc1MwRkJTeXhSUVVObUxGVkJRVmNzUTBGQlJTeE5RVUZQTEV0QlFVc3NUVUZCVHl4SlFVRkxMRXRCUVVzc1IwRkJTU3hGUVVNNVF5eFZRVUZYTEV0QlFVc3NVMEZCVXl4dFFrRkJiVUlzUlVGRE5VTXNUVUZCVHl4TFFVRkxMRk5CUVZNc1YwRkJWeXhGUVVOb1F5eFBRVUZSTEV0QlFVc3NVMEZCVXl4WlFVRlpMRVZCUTJ4RExGTkJRVlVzUzBGQlN5eFBRVU51UWl4RFFVTktMRU5CUTBvc1JVRkxZVzlETEVkQlFVNHNTMEZCYlVJc1EwRkhaaXhaUVVOSk5VSXNSVUZEUVVNc1JVRkRRVFpGTEVWQlEwRnlSQ3hGUVVOQlowUXNSVUZEUVUwc1JVRkRRWEpFTEVWQlExUXNRMEZRVXl4WFFVRkJNVUlzUlVGRFFTeFRRVUZCUXl4RlFVTkJMR2RDUVVGQk5rVXNSVUZEUVN4WlFVRkJja1FzUlVGRFFTeGhRVUZCWjBRc1JVRkRRU3haUVVGQlRTeEZRVU5CTEZWQlFVRnlSQ3hGUVZSWUxFdEJRVThzVTBGQmNVSXNTVUZCU1d4RExFZEJRMmhETEV0QlFVOHNVMEZCTWtJc1EwRkJReXhEUVZOb1F5eERRVVZKTEU5QlFUaENMRU5CUTJwRExFMUJRVThzUTBGRFNDeFpRVUZoTEV0QlFVc3NWMEZEYkVJc1ZVRkJWeXhEUVVGRkxFMUJRVThzUzBGQlN5eE5RVUZQTEVsQlFVc3NTMEZCU3l4SFFVRkpMRVZCUXpsRExGTkJRVlVzUzBGQlN5eFJRVU5tTEZWQlFWY3NTMEZCU3l4VFFVRlRMRWxCUVV0M1JpeEhRVUZaUVN4RlFVRlJMRTFCUVUwc1EwRkJReXhGUVVONlJDeE5RVUZQTEV0QlFVc3NUMEZCVXl4UFFVRlRMRTlCUXpsQ0xGVkJRVmNzUzBGQlN5eFRRVUZUTEcxQ1FVRnRRaXhGUVVNMVF5eE5RVUZQTEV0QlFVc3NVMEZCVXl4WFFVRlhMRVZCUTJoRExFOUJRVkVzUzBGQlN5eFRRVUZUTEZsQlFWa3NSVUZEYkVNc1VVRkJVeXhMUVVGTExFOUJRMlFzVVVGQlV5eExRVUZMTEU5QlEyUXNUVUZCVHl4TFFVRkxMRWxCUTJoQ0xFTkJRMG9zUTBGRFNpeEZWUzlxUWs4c1UwRkJVME1zUjBGRFdrTXNSVUZEUVVNc1JVRkRRVU1zUlVGRFFVTXNSVUZEVlN4RFFYSkNaQ3hKUVVGQlF5eEZRWE5DU1N4SlFVRk5ReXhGUVVGVExFbEJRVWxETEVkQlFWZE9MRVZCUVUxSExFTkJRVXNzUlVGRGJrTkpMRVZCUVZNc1MwRkJTeXhOUVVGTlRpeERRVUZOTEVWQlJXaERMRkZCUVZkUExFdEJRVXRFTEVWQlFVOHNUVUZEYmtJc1IwRkJTVU1zUlVGQlJTeE5RVUZSTEZGQlEyUXNSMEZCU1VFc1JVRkJSU3hOUVVGUkxFOUJRVkVzUTBGRGJFSXNSMEZCVFN4RFFVRkZMRmxCUVVGRExFVkJRV0VzVTBGQlFVTXNSVUZCVlN4TlFVRkJReXhGUVVGUExGTkJRVUZETEVOQlFWTXNSVUZCU1VNc1IwRkJjVUppTEVWQlFVMVJMRVZCUVVVc1MwRkJUVTRzUlVGQlRTeFBRVUZQVFN4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVOc1IwMHNSVUZCVHl4SlFVRkpReXhIUVVGbFppeEZRVUZOVVN4RlFVRkZMRWRCUVVsQkxFVkJRVWRETEVOQlFWY3NSVUZETVVSSExFVkJRVk1zVVVGQlUwa3NSMEZCVFVZc1JVRkJTeXhSUVVGUlJTeERRVUZETEVOQlFVTXNSVUZEZGtOWUxFVkJRVThzUzBGQlMxTXNRMEZCU1N4RlFVTm9RaXhSUVVGWFJ5eExRVUZQVUN4RlFVRlRMRXRCUVUxTUxFVkJRVThzVTBGQlV5eEpRVUZKV1N4RFFVRkhMRVZCUTNoRUxGRkJRVmRETEV0QlFWRmtMRVZCUVVGTkxFVkJRVk1zVVVGQlZDeExRVUZCVGl4RlFVRnJRaXhEUVVGRExFVkJRVWRETEVWQlFVOHNVMEZCVXl4TFFVRkxZU3hEUVVGSkxFVkJRMnhGTEZGQlFWZERMRXRCUVZORExFZEJRVzlDVkN4RFFVRkxMRVZCUVVkT0xFVkJRVThzVTBGQlV5eFpRVUZaWXl4RFFVRkxMRU5CUTNKR0xFdEJRVThzUTBGRFNDeEpRVUZOVEN4RlFVRlBMRWxCUVVsRExFZEJRV1ZtTEVWQlFVMVJMRVZCUVVVc1IwRkJTVUVzUTBGQlF5eEZRVU0zUTBnc1JVRkJUeXhMUVVGTFV5eERRVUZKTEVOQlEzQkNMRU5CUjBvc1QwRkJUMVFzUlVGQlR5eE5RVUZOTEVOQlEzaENMRU5CUjBFc1NVRkJaV2RDTEVkQlFXWXNTMEZCYzBNc1EwRkhNMElzV1VGRFNYSkNMRVZCUTBGelFpeEZRVU5IUXl4RlFVTmFMRU5CU0ZNc1ZVRkJRWFpDTEVWQlEwRXNVVUZCUVhOQ0xFVkJRMGNzWTBGQlFVTXNSVUZNWkN4TFFVRlBMRk5CUVhGQ0xFbEJRVWxETEVWQlRUZENMRU5CUlVrc1QwRkJORUlzUTBGREwwSXNUVUZCVHl4RFFVTklMRTFCUVU4c1MwRkJTeXhMUVVOYUxFbEJRVXNzUzBGQlN5eEhRVU5XTEZWQlFWY3NRMEZEVUN4RlFVRkhMRXRCUVVzc1UwRkJVeXhGUVVOcVFpeEZRVUZITEV0QlFVc3NVMEZCVXl4RFFVTnlRaXhGUVVOQkxGbEJRV0VzUTBGRFZDeE5RVUZQTEV0QlFVc3NVMEZCVXl4TlFVTnlRaXhQUVVGUkxFdEJRVXNzVTBGQlV5eE5RVU14UWl4RlFVTkJMRTlCUVZFc1MwRkJTeXhUUVVGVExFMUJRM1JDTEUxQlFVOURMRWRCUVVzc1MwRkJTeXhMUVVGTExFbEJRVWtzUlVGQlJTeFZRVUZWTEV0QlFVc3NSVUZCUlN4RlFVRkZMRk5CUVZNc1EwRkROVVFzUTBGRFNpeERRVU5LTEVWQlIyRldMRWRCUVU0c1kwRkJOa0pOTEVWQlFYVkNMRU5CUldoRUxGbEJRMGx5UWl4RlFVTkJjMElzUlVGRFIwTXNSVUZEU0dRc1JVRkRWQ3hEUVVORkxFMUJRVTFVTEVWQlFVMXpRaXhGUVVGSlF5eERRVUZSTEVWQlRHcENMRlZCUVVGMlFpeEZRVU5CTEZGQlFVRnpRaXhGUVVOSExHTkJRVUZETEVWQlEwZ3NhVUpCUVVGa0xFVkJURmdzUzBGQlR5eFRRVUV3UWl4RFFVRkRMRU5CVVd4RExFTkJSVThzVVVGQlVXbENMRVZCUVcxRExFTkJRemxETEZsQlFVc3NVMEZCVXl4TFFVRkxRU3hEUVVGUExFVkJRMjVDUVN4RFFVTllMRU5CUlU4c1QwRkJkMElzUTBGRE0wSXNUMEZCVVN4TFFVRkxMRk5CUVZNc1MwRkJUU3hEUVVONFFpeEpRVUZMTEU5QlEwUXNUMEZCVDBNc1IwRkJRVU1zUlVGQlFTeEhRVU5ETEUxQlFVMHNUVUZCVFN4SFFVUmlMRU5CUlVnc1ZVRkJWeXhMUVVGTExGTkJRVk1zYlVKQlFXMUNMRVZCUXpWRExHRkJRV01zUzBGQlN5eFpRVU51UWl4VlFVRlhMRXRCUVVzc1UwRkJVeXhKUVVGTFF5eEhRVUZOUVN4RlFVRkZMRTFCUVUwc1EwRkJReXhGUVVNM1F5eE5RVUZQTEV0QlFVc3NVMEZCVXl4WFFVRlhMRVZCUTJoRExFOUJRVkVzUzBGQlN5eFRRVUZUTEZsQlFWa3NSVUZEYkVNc1RVRkJUeXhaUVVOUUxFOUJRVkVzUzBGQlN5eFRRVUZUTEV0QlF6RkNMRWRCUTBvc1NVRkJTeXhQUVVORUxFOUJRVTlHTEVkQlFVRkRMRVZCUVVFc1IwRkRRU3hOUVVGTkxFMUJRVTBzUjBGRVdpeERRVVZJTEZsQlFXRXNTMEZCU3l4VFFVRlRMRWxCUXk5Q0xFZEJRMG9zU1VGQlN5eFBRVU5FTEU5QlFVOUVMRWRCUVVGRExFVkJRVUVzUjBGRFFTeE5RVUZOTEUxQlFVMHNSMEZFV2l4RFFVVklMRXRCUVUwc1MwRkJTeXhUUVVGVExFZEJRM2hDTEVWQlJWSXNRMEZEU2l4RFFVTktMRVZCUjJGMFFpeEhRVUZPTEV0QlFXbENMRU5CU1dJc1dVRkJiVUpPTEVWQlFYRkNSeXhGUVVGclFpeERRVUYyUXl4VlFVRkJTQ3hGUVVGeFFpeFhRVUZCUnl4RlFVZ3ZReXhMUVVGUExFMUJRVEJDTEVOQlFVTXNSVUZEYkVNc1MwRkJUeXhUUVVGeFFpeEpRVUZKY1VJc1JVRkZhME1zUTBGRk0wUXNTMEZCUzAwc1JVRkJiVU1zUTBGRE0wTXNXVUZCU3l4TlFVRk5MRXRCUVV0QkxFTkJRVU1zUlVGRFZrRXNRMEZEV0N4RFFVVlBMRTlCUVc5Q0xFTkJRM1pDTEUxQlFVOHNRMEZEU0N4UFFVRlJMRXRCUVVzc1RVRkJUU3hKUVVGTFJDeEhRVUZOUVN4RlFVRkZMRTFCUVUwc1EwRkJReXhGUVVOMlF5eFBRVUZSTEV0QlFVc3NUVUZCVFN4TlFVTnVRaXhQUVVGUkxFdEJRVXNzVFVGQlRTeE5RVU51UWl4VlFVRlhMRXRCUVVzc1UwRkJVeXh0UWtGQmJVSXNSVUZETlVNc1QwRkJVU3hMUVVGTExGTkJRVk1zV1VGQldTeEZRVU5zUXl4TlFVRlBMRXRCUVVzc1UwRkJVeXhYUVVGWExFVkJRMmhETEUxQlFVOHNTMEZCU3l4TFFVTmFMRTFCUVU4c1MwRkJTeXhOUVVGTkxFbEJRM1JDTEVOQlEwb3NRMEZEU2l4RlEzaEpRU3hWUVVGWkxFMUJRVTlGTEVkQlFWVXNRMEZEZWtJc1IwRkJTU3hEUVVOQkxFbEJRVTFETEVWQlFWVkVMRVZCUVUwc1MwRkZkRUlzUjBGQlNVTXNSVUZCVVN4UFFVRlRMRmRCUVZrc1EwRkROMElzU1VGQlRVTXNSVUZCVjBNc1IwRkJaVVlzUlVGQlVTeExRVUZOUVN4RlFVRlJMRk5CUVZWQkxFVkJRVkVzVTBGQlZVRXNSVUZCVVN4SlFVRkpMRVZCUlRsR0xGbEJRVmtzUTBGRFVpeExRVUZOTEZkQlEwNHNUMEZCVVVNc1EwRkRXaXhEUVVGNVFpeERRVU0zUWl4VFFVRlhSQ3hGUVVGUkxFOUJRVk1zVTBGQlZTeERRVU5zUXl4SlFVRk5SeXhGUVVGVFF5eEhRVUZoU2l4RlFVRlJMRXRCUVUxQkxFVkJRVkVzVTBGQlZVRXNSVUZCVVN4TlFVRlBRU3hGUVVGUkxFbEJRVWtzUlVGRmRrWXNXVUZCV1N4RFFVTlNMRXRCUVUwc1UwRkRUaXhQUVVGUlJ5eERRVU5hTEVOQlFYVkNMRU5CUXpOQ0xFMUJRMGtzV1VGQldTeERRVUZGTEU5QlFWRXNORUpCUVRaQ0xFTkJRVU1zUTBGRk5VUXNUMEZCVTBVc1JVRkJUeXhEUVVOYUxGRkJRVkVzVFVGQlRTeHZRMEZCYjBOT0xFVkJRVTBzUzBGQlN5eEpRVUZKTEV0QlFVdE5MRU5CUVVzc1JVRkJSU3hGUVVNM1JTeFpRVUZaTEVOQlFVVXNUMEZCVVVFc1JVRkJUU3hQUVVGUkxFTkJRVU1zUTBGRGVrTXNRMEZEU2lJc0NpQWdJbTVoYldWeklqb2dXeUp5WlhGMWFYSmxYM0JoY25OcGJXMXZibDkxYldSZmJXbHVJaXdnSWw5ZlkyOXRiVzl1U2xOTmFXNGlMQ0FpWlhod2IzSjBjeUlzSUNKdGIyUjFiR1VpTENBaWRDSXNJQ0p5SWl3Z0ltVWlMQ0FpZFNJc0lDSnVJaXdnSW04aUxDQWlhU0lzSUNKbUlpd2dJbU1pTENBaWN5SXNJQ0pzSWl3Z0luZ2lMQ0FpWWlJc0lDSm9JaXdnSW5BaUxDQWlaQ0lzSUNKMklpd2dJbWNpTENBaWJTSXNJQ0o1SWl3Z0lrVWlMQ0FpZHlJc0lDSkNJaXdnSW1FaUxDQWlhaUlzSUNKVElpd2dJbDhpTENBaVRDSXNJQ0pQSWl3Z0ltc2lMQ0FpVUNJc0lDSnhJaXdnSWtFaUxDQWlTU0lzSUNKR0lpd2dJazBpTENBaWVpSXNJQ0pTSWl3Z0lsVWlMQ0FpVnlJc0lDSkVJaXdnSWs0aUxDQWlSeUlzSUNKRElpd2dJa29pTENBaVZDSXNJQ0paSWl3Z0lsWWlMQ0FpU0NJc0lDSllJaXdnSWtzaUxDQWlVU0lzSUNKYUlpd2dJaVFpTENBaWJtNGlMQ0FpZEc0aUxDQWljbTRpTENBaVlXNGlMQ0FpWlc0aUxDQWlkVzRpTENBaWIyNGlMQ0FpWm00aUxDQWlZMjRpTENBaWMyNGlMQ0FpYkc0aUxDQWlhRzRpTENBaWNHNGlMQ0FpWkc0aUxDQWlkbTRpTENBaVoyNGlMQ0FpYlc0aUxDQWllVzRpTENBaWNtVnhkV2x5WlY5aVgzUnlaV1VpTENBaVgxOWpiMjF0YjI1S1UwMXBiaUlzSUNKbGVIQnZjblJ6SWl3Z0lsOWZaWGgwWlc1a2N5SXNJQ0psZUhSbGJtUlRkR0YwYVdOeklpd2dJbVFpTENBaVlpSXNJQ0p3SWl3Z0lsOWZJaXdnSW1SbFptRjFiSFJEYjIxd1lYSmhkRzl5SWl3Z0ltRWlMQ0FpZEdFaUxDQWlkR0lpTENBaWMybHRjR3hsUTI5dGNHRnlZWFJ2Y2lJc0lDSkNWSEpsWlNJc0lDSmxiblJ5YVdWeklpd2dJbU52YlhCaGNtVWlMQ0FpYldGNFRtOWtaVk5wZW1VaUxDQWlSVzF3ZEhsTVpXRm1JaXdnSW1OaGJHeGlZV05ySWl3Z0luUm9hWE5CY21jaUxDQWlYM1JvYVhNaUxDQWlheUlzSUNKMklpd2dJbWx1YVhScFlXeERiM1Z1ZEdWeUlpd2dJbXh2ZHlJc0lDSm9hV2RvSWl3Z0ltdGxlU0lzSUNKa1pXWmhkV3gwVm1Gc2RXVWlMQ0FpZG1Gc2RXVWlMQ0FpYjNabGNuZHlhWFJsSWl3Z0luSmxjM1ZzZENJc0lDSkNUbTlrWlVsdWRHVnlibUZzSWl3Z0lrUmxiR1YwWlZKaGJtZGxJaXdnSW01MUlpd2dJbkJoYVhKeklpd2dJbXRsZVhNaUxDQWljbVYwZFhKdVZHaHBjMGxtVlc1amFHRnVaMlZrSWl3Z0ltTm9ZVzVuWldRaUxDQWlhVzVqYkhWa1pVaHBaMmdpTENBaVpHVnNJaXdnSW1raUxDQWlSR1ZzWlhSbElpd2dJblJ0Y0NJc0lDSnBibWwwYVdGc1ZtRnNkV1VpTENBaWFYUWlMQ0FpVW1WMWMyVmtRWEp5WVhraUxDQWlibVY0ZENJc0lDSnNiM2RsYzNSTFpYa2lMQ0FpY21WMWMyVmtRWEp5WVhraUxDQWlhVzVtYnlJc0lDSnBkR1Z5WVhSdmNpSXNJQ0p1YjJSbGNYVmxkV1VpTENBaWJtOWtaV2x1WkdWNElpd2dJbXhsWVdZaUxDQWljM1JoZEdVaUxDQWlhblZ0Y0NJc0lDSnNaWFpsYkNJc0lDSm9hV2RvWlhOMFMyVjVJaXdnSW5OcmFYQklhV2RvWlhOMElpd2dJbDloSWl3Z0ltTm9aV05ySWl3Z0ltNWxlSFJ1YjJSbElpd2dJa1Z0Y0hSNVFYSnlZWGtpTENBaWIzUm9aWElpTENBaWIyNXNlVlJvYVhNaUxDQWliMjVzZVU5MGFHVnlJaXdnSW1ScFptWmxjbVZ1ZENJc0lDSmZZMjl0Y0dGeVpTSXNJQ0owYUdselEzVnljMjl5SWl3Z0ltOTBhR1Z5UTNWeWMyOXlJaXdnSW5Sb2FYTlRkV05qWlhOeklpd2dJbTkwYUdWeVUzVmpZMlZ6Y3lJc0lDSndjbVYyUTNWeWMyOXlUM0prWlhJaUxDQWlZM1Z5YzI5eVQzSmtaWElpTENBaWRHaHBjMHhsWVdZaUxDQWlkR2hwYzBsdWRHVnlibUZzVTNCcGJtVWlMQ0FpZEdocGMweGxkbVZzU1c1a2FXTmxjeUlzSUNKdmRHaGxja3hsWVdZaUxDQWliM1JvWlhKSmJuUmxjbTVoYkZOd2FXNWxJaXdnSW05MGFHVnlUR1YyWld4SmJtUnBZMlZ6SWl3Z0luWmhiRlJvYVhNaUxDQWlkbUZzVDNSb1pYSWlMQ0FpYjNSb1pYSldZV3dpTENBaWJHRnpkRlJvYVhNaUxDQWliR0Z6ZEU5MGFHVnlJaXdnSW01dlpHVlVhR2x6SWl3Z0ltNXZaR1ZQZEdobGNpSXNJQ0pqZFhKemIzSWlMQ0FpWTNWeWMyOXlSbWx1YVhOb1pXUWlMQ0FpWTI5dGNHRnlaVXRsZVhNaUxDQWlZMjl0Y0dGeVpXUWlMQ0FpWTJGdVUzUmxjQ0lzSUNKc1pYWmxiRWx1WkdsalpYTWlMQ0FpWTNWeWNtVnVkRXRsZVNJc0lDSjBjbVZsSWl3Z0lsOXliMjkwSWl3Z0ltaGxhV2RvZENJc0lDSnpkR1Z3Vkc5T2IyUmxJaXdnSW1sdWRHVnlibUZzVTNCcGJtVWlMQ0FpYkdWMlpXeHpUR1Z1WjNSb0lpd2dJbk53YVc1bFRHVnVaM1JvSWl3Z0ltNXZaR1ZNWlhabGJFbHVaR1Y0SWl3Z0lteGxkbVZzU1c1a1pYaFhZV3hyUW1GamF5SXNJQ0oyWVd4MVpVbHVaR1Y0SWl3Z0ltNWxlSFJNWlhabGJDSXNJQ0pqZFhKeVpXNTBUR1YyWld3aUxDQWlibTlrWlNJc0lDSmphR2xzWkhKbGJpSXNJQ0pqYUdsc1pFbHVaR1Y0SWl3Z0ltTjFjbk52Y2tFaUxDQWlZM1Z5YzI5eVFpSXNJQ0pvWldsbmFIUkJJaXdnSW1OMWNuSmxiblJMWlhsQklpd2dJbXhsZG1Wc1NXNWthV05sYzBFaUxDQWlhR1ZwWjJoMFFpSXNJQ0pqZFhKeVpXNTBTMlY1UWlJc0lDSnNaWFpsYkVsdVpHbGpaWE5DSWl3Z0ltdGxlVU52YlhCaGNtbHpiMjRpTENBaWFHVnBaMmgwVFdsdUlpd2dJbVJsY0hSb1FVNXZjbTFoYkdsNlpXUWlMQ0FpWkdWd2RHaENUbTl5YldGc2FYcGxaQ0lzSUNKbWFYSnpkRXRsZVNJc0lDSnVJaXdnSW1admNtTmxJaXdnSW0xaGVFeGxibWQwYUNJc0lDSnRhVzRpTENBaWJXRjRJaXdnSW5KbGMzVnNkSE1pTENBaVFuSmxZV3NpTENBaVlXUmtaV1FpTENBaWIyNUdiM1Z1WkNJc0lDSnlJaXdnSW5KdmIzUWlMQ0FpYVhOVGFHRnlaV1FpTENBaWRDSXNJQ0p6YVhwbElpd2dJbUZ6VTJWMElpd2dJbUowY21WbElpd2dJa0pPYjJSbElpd2dJblpoYkhWbGN5SXNJQ0oxYm1SbFpsWmhiSE1pTENBaVptRnBiRmh2Y2lJc0lDSmpiWEFpTENBaWJHOGlMQ0FpYUdraUxDQWliV2xrSWl3Z0ltTWlMQ0FpYkdGemRFbHVaR1Y0SWl3Z0ltbHVZMngxYzJsMlpTSXNJQ0pwYm1SbGVFOXlURzkzWlhJaUxDQWlaR1Z3ZEdnaUxDQWlZbUZ6WlVsdVpHVjRJaXdnSW10TUlpd2dJblpNSWl3Z0ltNWxkMUpwWjJoMFUybGliR2x1WnlJc0lDSjBZWEpuWlhRaUxDQWljbWh6SWl3Z0lteG9jeUlzSUNKb1lXeG1JaXdnSW1Wa2FYUk5iMlJsSWl3Z0ltTnZkVzUwSWl3Z0ltbE1iM2NpTENBaWFVaHBaMmdpTENBaVh5SXNJQ0pmYzNWd1pYSWlMQ0FpYkdWdVozUm9JaXdnSW1OTUlpd2dJbU5vYVd4a1UybDZaU0lzSUNKMGIyOW1aWGNpTENBaVkyaHBiR1FpTENBaWJXRjRVMmw2WlNJc0lDSnZiR1JNWlc1bmRHZ2lMQ0FpY21oelEyaHBiR1J5Wlc0aUxDQWlabUZqZENJc0lDSmhjbWR6SWl3Z0lsOXBJaXdnSWt4MWVHOXVSWEp5YjNJaUxDQWlTVzUyWVd4cFpFUmhkR1ZVYVcxbFJYSnliM0lpTENBaWNtVmhjMjl1SWl3Z0lrbHVkbUZzYVdSSmJuUmxjblpoYkVWeWNtOXlJaXdnSWtsdWRtRnNhV1JFZFhKaGRHbHZia1Z5Y205eUlpd2dJa052Ym1ac2FXTjBhVzVuVTNCbFkybG1hV05oZEdsdmJrVnljbTl5SWl3Z0lrbHVkbUZzYVdSVmJtbDBSWEp5YjNJaUxDQWlkVzVwZENJc0lDSkpiblpoYkdsa1FYSm5kVzFsYm5SRmNuSnZjaUlzSUNKYWIyNWxTWE5CWW5OMGNtRmpkRVZ5Y205eUlpd2dJbTRpTENBaWN5SXNJQ0pzSWl3Z0lrUkJWRVZmVTBoUFVsUWlMQ0FpUkVGVVJWOU5SVVFpTENBaVJFRlVSVjlOUlVSZlYwbFVTRjlYUlVWTFJFRlpJaXdnSWtSQlZFVmZSbFZNVENJc0lDSkVRVlJGWDBoVlIwVWlMQ0FpVkVsTlJWOVRTVTFRVEVVaUxDQWlWRWxOUlY5WFNWUklYMU5GUTA5T1JGTWlMQ0FpVkVsTlJWOVhTVlJJWDFOSVQxSlVYMDlHUmxORlZDSXNJQ0pVU1UxRlgxZEpWRWhmVEU5T1IxOVBSa1pUUlZRaUxDQWlWRWxOUlY4eU5GOVRTVTFRVEVVaUxDQWlWRWxOUlY4eU5GOVhTVlJJWDFORlEwOU9SRk1pTENBaVZFbE5SVjh5TkY5WFNWUklYMU5JVDFKVVgwOUdSbE5GVkNJc0lDSlVTVTFGWHpJMFgxZEpWRWhmVEU5T1IxOVBSa1pUUlZRaUxDQWlSRUZVUlZSSlRVVmZVMGhQVWxRaUxDQWlSRUZVUlZSSlRVVmZVMGhQVWxSZlYwbFVTRjlUUlVOUFRrUlRJaXdnSWtSQlZFVlVTVTFGWDAxRlJDSXNJQ0pFUVZSRlZFbE5SVjlOUlVSZlYwbFVTRjlUUlVOUFRrUlRJaXdnSWtSQlZFVlVTVTFGWDAxRlJGOVhTVlJJWDFkRlJVdEVRVmtpTENBaVJFRlVSVlJKVFVWZlJsVk1UQ0lzSUNKRVFWUkZWRWxOUlY5R1ZVeE1YMWRKVkVoZlUwVkRUMDVFVXlJc0lDSkVRVlJGVkVsTlJWOUlWVWRGSWl3Z0lrUkJWRVZVU1UxRlgwaFZSMFZmVjBsVVNGOVRSVU5QVGtSVElpd2dJbWx6Vlc1a1pXWnBibVZrSWl3Z0ltOGlMQ0FpYVhOT2RXMWlaWElpTENBaWFYTkpiblJsWjJWeUlpd2dJbWx6VTNSeWFXNW5JaXdnSW1selJHRjBaU0lzSUNKb1lYTlNaV3hoZEdsMlpTSXNJQ0psSWl3Z0ltMWhlV0psUVhKeVlYa2lMQ0FpZEdocGJtY2lMQ0FpWW1WemRFSjVJaXdnSW1GeWNpSXNJQ0ppZVNJc0lDSmpiMjF3WVhKbElpd2dJbUpsYzNRaUxDQWlibVY0ZENJc0lDSndZV2x5SWl3Z0luQnBZMnNpTENBaWIySnFJaXdnSW10bGVYTWlMQ0FpWVNJc0lDSnJJaXdnSW1oaGMwOTNibEJ5YjNCbGNuUjVJaXdnSW5CeWIzQWlMQ0FpYVc1MFpXZGxja0psZEhkbFpXNGlMQ0FpWW05MGRHOXRJaXdnSW5SdmNDSXNJQ0ptYkc5dmNrMXZaQ0lzSUNKNElpd2dJbTRpTENBaWNHRmtVM1JoY25RaUxDQWlhVzV3ZFhRaUxDQWlhWE5PWldjaUxDQWljR0ZrWkdWa0lpd2dJbkJoY25ObFNXNTBaV2RsY2lJc0lDSnpkSEpwYm1jaUxDQWljR0Z5YzJWR2JHOWhkR2x1WnlJc0lDSndZWEp6WlUxcGJHeHBjeUlzSUNKbWNtRmpkR2x2YmlJc0lDSm1JaXdnSW5KdmRXNWtWRzhpTENBaWJuVnRZbVZ5SWl3Z0ltUnBaMmwwY3lJc0lDSjBiM2RoY21SYVpYSnZJaXdnSW1aaFkzUnZjaUlzSUNKcGMweGxZWEJaWldGeUlpd2dJbmxsWVhJaUxDQWlaR0Y1YzBsdVdXVmhjaUlzSUNKa1lYbHpTVzVOYjI1MGFDSXNJQ0p0YjI1MGFDSXNJQ0p0YjJSTmIyNTBhQ0lzSUNKdGIyUlpaV0Z5SWl3Z0ltOWlhbFJ2VEc5allXeFVVeUlzSUNKa0lpd2dJbmRsWld0elNXNVhaV1ZyV1dWaGNpSXNJQ0ozWldWcldXVmhjaUlzSUNKd01TSXNJQ0pzWVhOMElpd2dJbkF5SWl3Z0luVnVkSEoxYm1OaGRHVlpaV0Z5SWl3Z0luQmhjbk5sV205dVpVbHVabThpTENBaWRITWlMQ0FpYjJabWMyVjBSbTl5YldGMElpd2dJbXh2WTJGc1pTSXNJQ0owYVcxbFdtOXVaU0lzSUNKa1lYUmxJaXdnSW1sdWRHeFBjSFJ6SWl3Z0ltMXZaR2xtYVdWa0lpd2dJbDlmYzNCeVpXRmtWbUZzZFdWeklpd2dJbkJoY25ObFpDSXNJQ0p0SWl3Z0luTnBaMjVsWkU5bVpuTmxkQ0lzSUNKdlptWkliM1Z5VTNSeUlpd2dJbTltWmsxcGJuVjBaVk4wY2lJc0lDSnZabVpJYjNWeUlpd2dJbTltWmsxcGJpSXNJQ0p2Wm1aTmFXNVRhV2R1WldRaUxDQWlZWE5PZFcxaVpYSWlMQ0FpZG1Gc2RXVWlMQ0FpYm5WdFpYSnBZMVpoYkhWbElpd2dJa2x1ZG1Gc2FXUkJjbWQxYldWdWRFVnljbTl5SWl3Z0ltNXZjbTFoYkdsNlpVOWlhbVZqZENJc0lDSnViM0p0WVd4cGVtVnlJaXdnSW01dmNtMWhiR2w2WldRaUxDQWlkU0lzSUNKMklpd2dJbVp2Y20xaGRFOW1abk5sZENJc0lDSnZabVp6WlhRaUxDQWlabTl5YldGMElpd2dJbWh2ZFhKeklpd2dJbTFwYm5WMFpYTWlMQ0FpYzJsbmJpSXNJQ0owYVcxbFQySnFaV04wSWl3Z0ltbGhibUZTWldkbGVDSXNJQ0p0YjI1MGFITk1iMjVuSWl3Z0ltMXZiblJvYzFOb2IzSjBJaXdnSW0xdmJuUm9jMDVoY25KdmR5SXNJQ0p0YjI1MGFITWlMQ0FpYkdWdVozUm9JaXdnSW5kbFpXdGtZWGx6VEc5dVp5SXNJQ0ozWldWclpHRjVjMU5vYjNKMElpd2dJbmRsWld0a1lYbHpUbUZ5Y205M0lpd2dJbmRsWld0a1lYbHpJaXdnSW0xbGNtbGthV1Z0Y3lJc0lDSmxjbUZ6VEc5dVp5SXNJQ0psY21GelUyaHZjblFpTENBaVpYSmhjMDVoY25KdmR5SXNJQ0psY21Geklpd2dJbTFsY21sa2FXVnRSbTl5UkdGMFpWUnBiV1VpTENBaVpIUWlMQ0FpZDJWbGEyUmhlVVp2Y2tSaGRHVlVhVzFsSWl3Z0ltMXZiblJvUm05eVJHRjBaVlJwYldVaUxDQWlaWEpoUm05eVJHRjBaVlJwYldVaUxDQWlabTl5YldGMFVtVnNZWFJwZG1WVWFXMWxJaXdnSW5WdWFYUWlMQ0FpWTI5MWJuUWlMQ0FpYm5WdFpYSnBZeUlzSUNKdVlYSnliM2NpTENBaWRXNXBkSE1pTENBaWJHRnpkR0ZpYkdVaUxDQWlhWE5FWVhraUxDQWlhWE5KYmxCaGMzUWlMQ0FpWm0xMFZtRnNkV1VpTENBaWMybHVaM1ZzWVhJaUxDQWliR2xzVlc1cGRITWlMQ0FpWm0xMFZXNXBkQ0lzSUNKemRISnBibWRwWm5sVWIydGxibk1pTENBaWMzQnNhWFJ6SWl3Z0luUnZhMlZ1Vkc5VGRISnBibWNpTENBaWN5SXNJQ0owYjJ0bGJpSXNJQ0p0WVdOeWIxUnZhMlZ1Vkc5R2IzSnRZWFJQY0hSeklpd2dJa1JCVkVWZlUwaFBVbFFpTENBaVJFRlVSVjlOUlVRaUxDQWlSRUZVUlY5R1ZVeE1JaXdnSWtSQlZFVmZTRlZIUlNJc0lDSlVTVTFGWDFOSlRWQk1SU0lzSUNKVVNVMUZYMWRKVkVoZlUwVkRUMDVFVXlJc0lDSlVTVTFGWDFkSlZFaGZVMGhQVWxSZlQwWkdVMFZVSWl3Z0lsUkpUVVZmVjBsVVNGOU1UMDVIWDA5R1JsTkZWQ0lzSUNKVVNVMUZYekkwWDFOSlRWQk1SU0lzSUNKVVNVMUZYekkwWDFkSlZFaGZVMFZEVDA1RVV5SXNJQ0pVU1UxRlh6STBYMWRKVkVoZlUwaFBVbFJmVDBaR1UwVlVJaXdnSWxSSlRVVmZNalJmVjBsVVNGOU1UMDVIWDA5R1JsTkZWQ0lzSUNKRVFWUkZWRWxOUlY5VFNFOVNWQ0lzSUNKRVFWUkZWRWxOUlY5TlJVUWlMQ0FpUkVGVVJWUkpUVVZmUmxWTVRDSXNJQ0pFUVZSRlZFbE5SVjlJVlVkRklpd2dJa1JCVkVWVVNVMUZYMU5JVDFKVVgxZEpWRWhmVTBWRFQwNUVVeUlzSUNKRVFWUkZWRWxOUlY5TlJVUmZWMGxVU0Y5VFJVTlBUa1JUSWl3Z0lrUkJWRVZVU1UxRlgwWlZURXhmVjBsVVNGOVRSVU5QVGtSVElpd2dJa1JCVkVWVVNVMUZYMGhWUjBWZlYwbFVTRjlUUlVOUFRrUlRJaXdnSWtadmNtMWhkSFJsY2lJc0lDSmZSbTl5YldGMGRHVnlJaXdnSW14dlkyRnNaU0lzSUNKdmNIUnpJaXdnSW1adGRDSXNJQ0pqZFhKeVpXNTBJaXdnSW1OMWNuSmxiblJHZFd4c0lpd2dJbUp5WVdOclpYUmxaQ0lzSUNKcElpd2dJbU1pTENBaVptOXliV0YwVDNCMGN5SXNJQ0prZENJc0lDSmZYM053Y21WaFpGWmhiSFZsY3lJc0lDSnVJaXdnSW5BaUxDQWljR0ZrVTNSaGNuUWlMQ0FpYTI1dmQyNUZibWRzYVhOb0lpd2dJblZ6WlVSaGRHVlVhVzFsUm05eWJXRjBkR1Z5SWl3Z0luTjBjbWx1WnlJc0lDSmxlSFJ5WVdOMElpd2dJbVp2Y20xaGRFOW1abk5sZENJc0lDSnRaWEpwWkdsbGJTSXNJQ0p0WlhKcFpHbGxiVVp2Y2tSaGRHVlVhVzFsSWl3Z0ltMXZiblJvSWl3Z0lteGxibWQwYUNJc0lDSnpkR0Z1WkdGc2IyNWxJaXdnSW0xdmJuUm9SbTl5UkdGMFpWUnBiV1VpTENBaWQyVmxhMlJoZVNJc0lDSjNaV1ZyWkdGNVJtOXlSR0YwWlZScGJXVWlMQ0FpYldGNVltVk5ZV055YnlJc0lDSmxjbUVpTENBaVpYSmhSbTl5UkdGMFpWUnBiV1VpTENBaVpIVnlJaXdnSW5SdmEyVnVWRzlHYVdWc1pDSXNJQ0pzYVd4a2RYSWlMQ0FpYldGd2NHVmtJaXdnSW5SdmEyVnVjeUlzSUNKeVpXRnNWRzlyWlc1eklpd2dJbVp2ZFc1a0lpd2dJbXhwZEdWeVlXd2lMQ0FpZG1Gc0lpd2dJbU52Ykd4aGNITmxaQ0lzSUNKMElpd2dJa2x1ZG1Gc2FXUWlMQ0FpY21WaGMyOXVJaXdnSW1WNGNHeGhibUYwYVc5dUlpd2dJbHB2Ym1VaUxDQWlXbTl1WlVselFXSnpkSEpoWTNSRmNuSnZjaUlzSUNKMGN5SXNJQ0p2Y0hSeklpd2dJbVp2Y20xaGRDSXNJQ0p2ZEdobGNscHZibVVpTENBaWMybHVaMnhsZEc5dUlpd2dJbE41YzNSbGJWcHZibVVpTENBaVgxTjVjM1JsYlZwdmJtVWlMQ0FpV205dVpTSXNJQ0owY3lJc0lDSm1iM0p0WVhRaUxDQWliRzlqWVd4bElpd2dJbkJoY25ObFdtOXVaVWx1Wm04aUxDQWlabTl5YldGMFQyWm1jMlYwSWl3Z0ltOTBhR1Z5V205dVpTSXNJQ0prZEdaRFlXTm9aU0lzSUNKdFlXdGxSRlJHSWl3Z0lucHZibVVpTENBaWRIbHdaVlJ2VUc5eklpd2dJbWhoWTJ0NVQyWm1jMlYwSWl3Z0ltUjBaaUlzSUNKa1lYUmxJaXdnSW1admNtMWhkSFJsWkNJc0lDSndZWEp6WldRaUxDQWlaazF2Ym5Sb0lpd2dJbVpFWVhraUxDQWlabGxsWVhJaUxDQWlabUZrVDNKQ1l5SXNJQ0ptU0c5MWNpSXNJQ0ptVFdsdWRYUmxJaXdnSW1aVFpXTnZibVFpTENBaWNHRnlkSE5QWm1aelpYUWlMQ0FpWm1sc2JHVmtJaXdnSW1raUxDQWlkSGx3WlNJc0lDSjJZV3gxWlNJc0lDSndiM01pTENBaWFYTlZibVJsWm1sdVpXUWlMQ0FpYVdGdVlWcHZibVZEWVdOb1pTSXNJQ0pKUVU1QldtOXVaU0lzSUNKZlNVRk9RVnB2Ym1VaUxDQWlXbTl1WlNJc0lDSnVZVzFsSWl3Z0luTWlMQ0FpWlNJc0lDSjBjeUlzSUNKbWIzSnRZWFFpTENBaWJHOWpZV3hsSWl3Z0luQmhjbk5sV205dVpVbHVabThpTENBaVptOXliV0YwVDJabWMyVjBJaXdnSW5sbFlYSWlMQ0FpYlc5dWRHZ2lMQ0FpWkdGNUlpd2dJbUZrVDNKQ1l5SXNJQ0pvYjNWeUlpd2dJbTFwYm5WMFpTSXNJQ0p6WldOdmJtUWlMQ0FpWVhOVlZFTWlMQ0FpYjJKcVZHOU1iMk5oYkZSVElpd2dJbUZ6VkZNaUxDQWliM1psY2lJc0lDSnZkR2hsY2xwdmJtVWlMQ0FpYzJsdVoyeGxkRzl1SWl3Z0lrWnBlR1ZrVDJabWMyVjBXbTl1WlNJc0lDSmZSbWw0WldSUFptWnpaWFJhYjI1bElpd2dJbHB2Ym1VaUxDQWliMlptYzJWMElpd2dJbk1pTENBaWNpSXNJQ0p6YVdkdVpXUlBabVp6WlhRaUxDQWlabTl5YldGMFQyWm1jMlYwSWl3Z0luUnpJaXdnSW1admNtMWhkQ0lzSUNKdmRHaGxjbHB2Ym1VaUxDQWlTVzUyWVd4cFpGcHZibVVpTENBaVdtOXVaU0lzSUNKNmIyNWxUbUZ0WlNJc0lDSnViM0p0WVd4cGVtVmFiMjVsSWl3Z0ltbHVjSFYwSWl3Z0ltUmxabUYxYkhSYWIyNWxJaXdnSW05bVpuTmxkQ0lzSUNKcGMxVnVaR1ZtYVc1bFpDSXNJQ0phYjI1bElpd2dJbWx6VTNSeWFXNW5JaXdnSW14dmQyVnlaV1FpTENBaVJtbDRaV1JQWm1aelpYUmFiMjVsSWl3Z0lrbEJUa0ZhYjI1bElpd2dJbWx6VG5WdFltVnlJaXdnSWtsdWRtRnNhV1JhYjI1bElpd2dJbTV2ZHlJc0lDSmtaV1poZFd4MFdtOXVaU0lzSUNKa1pXWmhkV3gwVEc5allXeGxJaXdnSW1SbFptRjFiSFJPZFcxaVpYSnBibWRUZVhOMFpXMGlMQ0FpWkdWbVlYVnNkRTkxZEhCMWRFTmhiR1Z1WkdGeUlpd2dJblJvY205M1QyNUpiblpoYkdsa0lpd2dJbE5sZEhScGJtZHpJaXdnSW00aUxDQWllbTl1WlNJc0lDSnViM0p0WVd4cGVtVmFiMjVsSWl3Z0lsTjVjM1JsYlZwdmJtVWlMQ0FpYkc5allXeGxJaXdnSW01MWJXSmxjbWx1WjFONWMzUmxiU0lzSUNKdmRYUndkWFJEWVd4bGJtUmhjaUlzSUNKMElpd2dJa3h2WTJGc1pTSXNJQ0pKUVU1QldtOXVaU0lzSUNKcGJuUnNURVpEWVdOb1pTSXNJQ0puWlhSRFlXTm9aV1JNUmlJc0lDSnNiMk5UZEhKcGJtY2lMQ0FpYjNCMGN5SXNJQ0pyWlhraUxDQWlaSFJtSWl3Z0ltbHVkR3hFVkVOaFkyaGxJaXdnSW1kbGRFTmhZMmhsWkVSVVJpSXNJQ0pwYm5Sc1RuVnRRMkZqYUdVaUxDQWlaMlYwUTJGamFHVmtTVTVHSWl3Z0ltbHVaaUlzSUNKcGJuUnNVbVZzUTJGamFHVWlMQ0FpWjJWMFEyRmphR1ZrVWxSR0lpd2dJbDloSWl3Z0ltSmhjMlVpTENBaVkyRmphR1ZMWlhsUGNIUnpJaXdnSWw5ZmIySnFVbVZ6ZENJc0lDSnplWE5NYjJOaGJHVkRZV05vWlNJc0lDSnplWE4wWlcxTWIyTmhiR1VpTENBaWNHRnljMlZNYjJOaGJHVlRkSEpwYm1jaUxDQWliRzlqWVd4bFUzUnlJaXdnSW5WSmJtUmxlQ0lzSUNKdmNIUnBiMjV6SWl3Z0luTnRZV3hzWlhJaUxDQWlaU0lzSUNKdWRXMWlaWEpwYm1kVGVYTjBaVzBpTENBaVkyRnNaVzVrWVhJaUxDQWlhVzUwYkVOdmJtWnBaMU4wY21sdVp5SXNJQ0p2ZFhSd2RYUkRZV3hsYm1SaGNpSXNJQ0p0WVhCTmIyNTBhSE1pTENBaVppSXNJQ0p0Y3lJc0lDSnBJaXdnSW1SMElpd2dJa1JoZEdWVWFXMWxJaXdnSW0xaGNGZGxaV3RrWVhseklpd2dJbXhwYzNSVGRIVm1aaUlzSUNKc2IyTWlMQ0FpYkdWdVozUm9JaXdnSW1SbFptRjFiSFJQU3lJc0lDSmxibWRzYVhOb1JtNGlMQ0FpYVc1MGJFWnVJaXdnSW0xdlpHVWlMQ0FpYzNWd2NHOXlkSE5HWVhOMFRuVnRZbVZ5Y3lJc0lDSlFiMng1VG5WdFltVnlSbTl5YldGMGRHVnlJaXdnSW1sdWRHd2lMQ0FpWm05eVkyVlRhVzF3YkdVaUxDQWljR0ZrVkc4aUxDQWlabXh2YjNJaUxDQWliM1JvWlhKUGNIUnpJaXdnSW1sdWRHeFBjSFJ6SWl3Z0lsOWZjM0J5WldGa1ZtRnNkV1Z6SWl3Z0ltWnBlR1ZrSWl3Z0luSnZkVzVrVkc4aUxDQWljR0ZrVTNSaGNuUWlMQ0FpVUc5c2VVUmhkR1ZHYjNKdFlYUjBaWElpTENBaWVpSXNJQ0puYlhSUFptWnpaWFFpTENBaWIyWm1jMlYwV2lJc0lDSkpRVTVCV205dVpTSXNJQ0pRYjJ4NVVtVnNSbTl5YldGMGRHVnlJaXdnSW1selJXNW5iR2x6YUNJc0lDSm9ZWE5TWld4aGRHbDJaU0lzSUNKamIzVnVkQ0lzSUNKMWJtbDBJaXdnSW1admNtMWhkRkpsYkdGMGFYWmxWR2x0WlNJc0lDSk1iMk5oYkdVaUxDQWlYMHh2WTJGc1pTSXNJQ0pzYjJOaGJHVWlMQ0FpWkdWbVlYVnNkRlJ2UlU0aUxDQWljM0JsWTJsbWFXVmtURzlqWVd4bElpd2dJbE5sZEhScGJtZHpJaXdnSW14dlkyRnNaVklpTENBaWJuVnRZbVZ5YVc1blUzbHpkR1Z0VWlJc0lDSnZkWFJ3ZFhSRFlXeGxibVJoY2xJaUxDQWliblZ0WW1WeWFXNW5JaXdnSW5CaGNuTmxaRXh2WTJGc1pTSXNJQ0p3WVhKelpXUk9kVzFpWlhKcGJtZFRlWE4wWlcwaUxDQWljR0Z5YzJWa1QzVjBjSFYwUTJGc1pXNWtZWElpTENBaWFYTkJZM1IxWVd4c2VVVnVJaXdnSW1oaGMwNXZWMlZwY21SdVpYTnpJaXdnSW1Gc2RITWlMQ0FpWDE5emNISmxZV1JRY205d2N5SXNJQ0ptYjNKdFlYUWlMQ0FpYlc5dWRHaHpJaXdnSW1admNtMWhkRk4wY2lJc0lDSjNaV1ZyWkdGNWN5SXNJQ0p0WlhKcFpHbGxiWE1pTENBaVpYSmhjeUlzSUNKbWFXVnNaQ0lzSUNKa1ppSXNJQ0p5WlhOMWJIUnpJaXdnSW0xaGRHTm9hVzVuSWl3Z0ltMGlMQ0FpYjNSb1pYSWlMQ0FpWTI5dFltbHVaVkpsWjJWNFpYTWlMQ0FpY21WblpYaGxjeUlzSUNKbWRXeHNJaXdnSW1ZaUxDQWlZMjl0WW1sdVpVVjRkSEpoWTNSdmNuTWlMQ0FpWlhoMGNtRmpkRzl5Y3lJc0lDSnRJaXdnSW0xbGNtZGxaRlpoYkhNaUxDQWliV1Z5WjJWa1dtOXVaU0lzSUNKamRYSnpiM0lpTENBaVpYZ2lMQ0FpZG1Gc0lpd2dJbnB2Ym1VaUxDQWlibVY0ZENJc0lDSmZYM053Y21WaFpGWmhiSFZsY3lJc0lDSndZWEp6WlNJc0lDSnpJaXdnSW5CaGRIUmxjbTV6SWl3Z0luSmxaMlY0SWl3Z0ltVjRkSEpoWTNSdmNpSXNJQ0p6YVcxd2JHVlFZWEp6WlNJc0lDSnJaWGx6SWl3Z0ltMWhkR05vSWl3Z0luSmxkQ0lzSUNKcElpd2dJbkJoY25ObFNXNTBaV2RsY2lJc0lDSnZabVp6WlhSU1pXZGxlQ0lzSUNKcGMyOUZlSFJsYm1SbFpGcHZibVVpTENBaWFXRnVZVkpsWjJWNElpd2dJbWx6YjFScGJXVkNZWE5sVW1WblpYZ2lMQ0FpYVhOdlZHbHRaVkpsWjJWNElpd2dJbWx6YjFScGJXVkZlSFJsYm5OcGIyNVNaV2RsZUNJc0lDSnBjMjlaYldSU1pXZGxlQ0lzSUNKcGMyOVhaV1ZyVW1WblpYZ2lMQ0FpYVhOdlQzSmthVzVoYkZKbFoyVjRJaXdnSW1WNGRISmhZM1JKVTA5WFpXVnJSR0YwWVNJc0lDSmxlSFJ5WVdOMFNWTlBUM0prYVc1aGJFUmhkR0VpTENBaWMzRnNXVzFrVW1WblpYZ2lMQ0FpYzNGc1ZHbHRaVkpsWjJWNElpd2dJbk54YkZScGJXVkZlSFJsYm5OcGIyNVNaV2RsZUNJc0lDSnBiblFpTENBaWNHOXpJaXdnSW1aaGJHeGlZV05ySWl3Z0ltbHpWVzVrWldacGJtVmtJaXdnSW1WNGRISmhZM1JKVTA5WmJXUWlMQ0FpWlhoMGNtRmpkRWxUVDFScGJXVWlMQ0FpY0dGeWMyVk5hV3hzYVhNaUxDQWlaWGgwY21GamRFbFRUMDltWm5ObGRDSXNJQ0pzYjJOaGJDSXNJQ0ptZFd4c1QyWm1jMlYwSWl3Z0luTnBaMjVsWkU5bVpuTmxkQ0lzSUNKR2FYaGxaRTltWm5ObGRGcHZibVVpTENBaVpYaDBjbUZqZEVsQlRrRmFiMjVsSWl3Z0lrbEJUa0ZhYjI1bElpd2dJbWx6YjFScGJXVlBibXg1SWl3Z0ltbHpiMFIxY21GMGFXOXVJaXdnSW1WNGRISmhZM1JKVTA5RWRYSmhkR2x2YmlJc0lDSjVaV0Z5VTNSeUlpd2dJbTF2Ym5Sb1UzUnlJaXdnSW5kbFpXdFRkSElpTENBaVpHRjVVM1J5SWl3Z0ltaHZkWEpUZEhJaUxDQWliV2x1ZFhSbFUzUnlJaXdnSW5ObFkyOXVaRk4wY2lJc0lDSnRhV3hzYVhObFkyOXVaSE5UZEhJaUxDQWlhR0Z6VG1WbllYUnBkbVZRY21WbWFYZ2lMQ0FpYm1WbllYUnBkbVZUWldOdmJtUnpJaXdnSW0xaGVXSmxUbVZuWVhSbElpd2dJbTUxYlNJc0lDSm1iM0pqWlNJc0lDSndZWEp6WlVac2IyRjBhVzVuSWl3Z0ltOWljMDltWm5ObGRITWlMQ0FpWm5KdmJWTjBjbWx1WjNNaUxDQWlkMlZsYTJSaGVWTjBjaUlzSUNKeVpYTjFiSFFpTENBaWRXNTBjblZ1WTJGMFpWbGxZWElpTENBaWJXOXVkR2h6VTJodmNuUWlMQ0FpZDJWbGEyUmhlWE5NYjI1bklpd2dJbmRsWld0a1lYbHpVMmh2Y25RaUxDQWljbVpqTWpneU1pSXNJQ0psZUhSeVlXTjBVa1pETWpneU1pSXNJQ0p2WW5OUFptWnpaWFFpTENBaWJXbHNUMlptYzJWMElpd2dJbTltWmtodmRYSlRkSElpTENBaWIyWm1UV2x1ZFhSbFUzUnlJaXdnSW05bVpuTmxkQ0lzSUNKd2NtVndjbTlqWlhOelVrWkRNamd5TWlJc0lDSnlabU14TVRJeklpd2dJbkptWXpnMU1DSXNJQ0poYzJOcGFTSXNJQ0psZUhSeVlXTjBVa1pETVRFeU0wOXlPRFV3SWl3Z0ltVjRkSEpoWTNSQlUwTkpTU0lzSUNKcGMyOVpiV1JYYVhSb1ZHbHRaVVY0ZEdWdWMybHZibEpsWjJWNElpd2dJbWx6YjFkbFpXdFhhWFJvVkdsdFpVVjRkR1Z1YzJsdmJsSmxaMlY0SWl3Z0ltbHpiMDl5WkdsdVlXeFhhWFJvVkdsdFpVVjRkR1Z1YzJsdmJsSmxaMlY0SWl3Z0ltbHpiMVJwYldWRGIyMWlhVzVsWkZKbFoyVjRJaXdnSW1WNGRISmhZM1JKVTA5WmJXUlVhVzFsUVc1a1QyWm1jMlYwSWl3Z0ltVjRkSEpoWTNSSlUwOVhaV1ZyVkdsdFpVRnVaRTltWm5ObGRDSXNJQ0psZUhSeVlXTjBTVk5QVDNKa2FXNWhiRVJoZEdWQmJtUlVhVzFsSWl3Z0ltVjRkSEpoWTNSSlUwOVVhVzFsUVc1a1QyWm1jMlYwSWl3Z0luQmhjbk5sU1ZOUFJHRjBaU0lzSUNKd1lYSnpaVkpHUXpJNE1qSkVZWFJsSWl3Z0luQmhjbk5sU0ZSVVVFUmhkR1VpTENBaWNHRnljMlZKVTA5RWRYSmhkR2x2YmlJc0lDSmxlSFJ5WVdOMFNWTlBWR2x0WlU5dWJIa2lMQ0FpY0dGeWMyVkpVMDlVYVcxbFQyNXNlU0lzSUNKemNXeFpiV1JYYVhSb1ZHbHRaVVY0ZEdWdWMybHZibEpsWjJWNElpd2dJbk54YkZScGJXVkRiMjFpYVc1bFpGSmxaMlY0SWl3Z0ltVjRkSEpoWTNSSlUwOVVhVzFsVDJabWMyVjBRVzVrU1VGT1FWcHZibVVpTENBaWNHRnljMlZUVVV3aUxDQWlTVTVXUVV4SlJDSXNJQ0pzYjNkUGNtUmxjazFoZEhKcGVDSXNJQ0pqWVhOMVlXeE5ZWFJ5YVhnaUxDQWlYMTl6Y0hKbFlXUldZV3gxWlhNaUxDQWlaR0Y1YzBsdVdXVmhja0ZqWTNWeVlYUmxJaXdnSW1SaGVYTkpiazF2Ym5Sb1FXTmpkWEpoZEdVaUxDQWlZV05qZFhKaGRHVk5ZWFJ5YVhnaUxDQWliM0prWlhKbFpGVnVhWFJ6SWl3Z0luSmxkbVZ5YzJWVmJtbDBjeUlzSUNKamJHOXVaU0lzSUNKa2RYSWlMQ0FpWVd4MGN5SXNJQ0pqYkdWaGNpSXNJQ0pqYjI1bUlpd2dJa1IxY21GMGFXOXVJaXdnSW1GdWRHbFVjblZ1WXlJc0lDSmpiMjUyWlhKMElpd2dJbTFoZEhKcGVDSXNJQ0ptY205dFRXRndJaXdnSW1aeWIyMVZibWwwSWl3Z0luUnZUV0Z3SWl3Z0luUnZWVzVwZENJc0lDSmpiMjUySWl3Z0luSmhkeUlzSUNKellXMWxVMmxuYmlJc0lDSmhaR1JsWkNJc0lDSnViM0p0WVd4cGVtVldZV3gxWlhNaUxDQWlkbUZzY3lJc0lDSndjbVYyYVc5MWN5SXNJQ0pqZFhKeVpXNTBJaXdnSW1selZXNWtaV1pwYm1Wa0lpd2dJbDlFZFhKaGRHbHZiaUlzSUNKamIyNW1hV2NpTENBaVlXTmpkWEpoZEdVaUxDQWlURzlqWVd4bElpd2dJbU52ZFc1MElpd2dJbTl3ZEhNaUxDQWliMkpxSWl3Z0lrbHVkbUZzYVdSQmNtZDFiV1Z1ZEVWeWNtOXlJaXdnSW01dmNtMWhiR2w2WlU5aWFtVmpkQ0lzSUNKa2RYSmhkR2x2Ymt4cGEyVWlMQ0FpYVhOT2RXMWlaWElpTENBaWRHVjRkQ0lzSUNKd1lYSnpaV1FpTENBaWNHRnljMlZKVTA5RWRYSmhkR2x2YmlJc0lDSndZWEp6WlVsVFQxUnBiV1ZQYm14NUlpd2dJbkpsWVhOdmJpSXNJQ0psZUhCc1lXNWhkR2x2YmlJc0lDSnBiblpoYkdsa0lpd2dJa2x1ZG1Gc2FXUWlMQ0FpVTJWMGRHbHVaM01pTENBaVNXNTJZV3hwWkVSMWNtRjBhVzl1UlhKeWIzSWlMQ0FpZFc1cGRDSXNJQ0p1YjNKdFlXeHBlbVZrSWl3Z0lrbHVkbUZzYVdSVmJtbDBSWEp5YjNJaUxDQWlieUlzSUNKbWJYUWlMQ0FpWm0xMFQzQjBjeUlzSUNKZlgzTndjbVZoWkZCeWIzQnpJaXdnSWtadmNtMWhkSFJsY2lJc0lDSnNJaXdnSW5aaGJDSXNJQ0p1SWl3Z0luTWlMQ0FpY205MWJtUlVieUlzSUNKdGFXeHNhWE1pTENBaWRtRnNkV1VpTENBaWMzUnlJaXdnSW1SMWNtRjBhVzl1SWl3Z0luSmxjM1ZzZENJc0lDSnJJaXdnSW1oaGMwOTNibEJ5YjNCbGNuUjVJaXdnSW1adUlpd2dJbUZ6VG5WdFltVnlJaXdnSW5aaGJIVmxjeUlzSUNKdGFYaGxaQ0lzSUNKc2IyTmhiR1VpTENBaWJuVnRZbVZ5YVc1blUzbHpkR1Z0SWl3Z0ltTnZiblpsY25OcGIyNUJZMk4xY21GamVTSXNJQ0pzYjJNaUxDQWlkVzVwZEhNaUxDQWlkU0lzSUNKaWRXbHNkQ0lzSUNKaFkyTjFiWFZzWVhSbFpDSXNJQ0pzWVhOMFZXNXBkQ0lzSUNKdmQyNGlMQ0FpWVdzaUxDQWlhU0lzSUNKa2IzZHVJaXdnSW10bGVTSXNJQ0p1WldkaGRHVmtJaXdnSW05MGFHVnlJaXdnSW1WeElpd2dJbll4SWl3Z0luWXlJaXdnSWtsT1ZrRk1TVVFpTENBaWRtRnNhV1JoZEdWVGRHRnlkRVZ1WkNJc0lDSnpkR0Z5ZENJc0lDSmxibVFpTENBaVNXNTBaWEoyWVd3aUxDQWlYMGx1ZEdWeWRtRnNJaXdnSW1OdmJtWnBaeUlzSUNKeVpXRnpiMjRpTENBaVpYaHdiR0Z1WVhScGIyNGlMQ0FpU1c1MllXeHBaRUZ5WjNWdFpXNTBSWEp5YjNJaUxDQWlhVzUyWVd4cFpDSXNJQ0pKYm5aaGJHbGtJaXdnSWxObGRIUnBibWR6SWl3Z0lrbHVkbUZzYVdSSmJuUmxjblpoYkVWeWNtOXlJaXdnSW1KMWFXeDBVM1JoY25RaUxDQWlabkpwWlc1a2JIbEVZWFJsVkdsdFpTSXNJQ0ppZFdsc2RFVnVaQ0lzSUNKMllXeHBaR0YwWlVWeWNtOXlJaXdnSW1SMWNtRjBhVzl1SWl3Z0ltUjFjaUlzSUNKRWRYSmhkR2x2YmlJc0lDSmtkQ0lzSUNKMFpYaDBJaXdnSW05d2RITWlMQ0FpY3lJc0lDSmxJaXdnSW5OMFlYSjBTWE5XWVd4cFpDSXNJQ0pFWVhSbFZHbHRaU0lzSUNKbGJtUkpjMVpoYkdsa0lpd2dJbThpTENBaWRXNXBkQ0lzSUNKa1lYUmxWR2x0WlNJc0lDSmtZWFJsVkdsdFpYTWlMQ0FpYzI5eWRHVmtJaXdnSW1RaUxDQWljbVZ6ZFd4MGN5SXNJQ0poWkdSbFpDSXNJQ0p1WlhoMElpd2dJbWxrZUNJc0lDSjRJaXdnSW01MWJXSmxjazltVUdGeWRITWlMQ0FpYjNSb1pYSWlMQ0FpYVc1MFpYSjJZV3h6SWl3Z0ltWnZkVzVrSWl3Z0ltWnBibUZzSWl3Z0ltRWlMQ0FpWWlJc0lDSnpiMlpoY2lJc0lDSmpkWEp5Wlc1MElpd2dJbWwwWlcwaUxDQWlZM1Z5Y21WdWRFTnZkVzUwSWl3Z0ltVnVaSE1pTENBaWFTSXNJQ0ptYkdGMGRHVnVaV1FpTENBaVlYSnlJaXdnSW1SaGRHVkdiM0p0WVhRaUxDQWljMlZ3WVhKaGRHOXlJaXdnSW0xaGNFWnVJaXdnSWtsdVptOGlMQ0FpZW05dVpTSXNJQ0pUWlhSMGFXNW5jeUlzSUNKd2NtOTBieUlzSUNKRVlYUmxWR2x0WlNJc0lDSkpRVTVCV205dVpTSXNJQ0pwYm5CMWRDSXNJQ0p1YjNKdFlXeHBlbVZhYjI1bElpd2dJbXhsYm1kMGFDSXNJQ0pzYjJOaGJHVWlMQ0FpYm5WdFltVnlhVzVuVTNsemRHVnRJaXdnSW14dlkwOWlhaUlzSUNKdmRYUndkWFJEWVd4bGJtUmhjaUlzSUNKTWIyTmhiR1VpTENBaWFHRnpVbVZzWVhScGRtVWlMQ0FpWkdGNVJHbG1aaUlzSUNKbFlYSnNhV1Z5SWl3Z0lteGhkR1Z5SWl3Z0luVjBZMFJoZVZOMFlYSjBJaXdnSW1SMElpd2dJbTF6SWl3Z0lrUjFjbUYwYVc5dUlpd2dJbWhwWjJoUGNtUmxja1JwWm1aeklpd2dJbU4xY25OdmNpSXNJQ0oxYm1sMGN5SXNJQ0prYVdabVpYSnpJaXdnSW1JaUxDQWlaR0Y1Y3lJc0lDSnlaWE4xYkhSeklpd2dJbXh2ZDJWemRFOXlaR1Z5SWl3Z0ltaHBaMmhYWVhSbGNpSXNJQ0oxYm1sMElpd2dJbVJwWm1abGNpSXNJQ0prWld4MFlTSXNJQ0prYVdabVgyUmxabUYxYkhRaUxDQWliM0IwY3lJc0lDSnlaVzFoYVc1cGJtZE5hV3hzYVhNaUxDQWliRzkzWlhKUGNtUmxjbFZ1YVhSeklpd2dJblVpTENBaVpIVnlZWFJwYjI0aUxDQWliblZ0WW1WeWFXNW5VM2x6ZEdWdGN5SXNJQ0p1ZFcxaVpYSnBibWRUZVhOMFpXMXpWVlJHTVRZaUxDQWlhR0Z1YVdSbFkwTm9ZWEp6SWl3Z0luQmhjbk5sUkdsbmFYUnpJaXdnSW5OMGNpSXNJQ0oyWVd4MVpTSXNJQ0pwSWl3Z0ltTnZaR1VpTENBaWEyVjVJaXdnSW0xcGJpSXNJQ0p0WVhnaUxDQWlaR2xuYVhSU1pXZGxlQ0lzSUNKdWRXMWlaWEpwYm1kVGVYTjBaVzBpTENBaVlYQndaVzVrSWl3Z0lrMUpVMU5KVGtkZlJsUlFJaXdnSW1sdWRGVnVhWFFpTENBaWNtVm5aWGdpTENBaWNHOXpkQ0lzSUNKcElpd2dJbk1pTENBaWNHRnljMlZFYVdkcGRITWlMQ0FpVGtKVFVDSXNJQ0p6Y0dGalpVOXlUa0pUVUNJc0lDSnpjR0ZqWlU5eVRrSlRVRkpsWjBWNGNDSXNJQ0ptYVhoTWFYTjBVbVZuWlhnaUxDQWljM1J5YVhCSmJuTmxibk5wZEdsMmFYUnBaWE1pTENBaWIyNWxUMllpTENBaWMzUnlhVzVuY3lJc0lDSnpkR0Z5ZEVsdVpHVjRJaXdnSW05bVpuTmxkQ0lzSUNKbmNtOTFjSE1pTENBaWFDSXNJQ0p0SWl3Z0luTnBaMjVsWkU5bVpuTmxkQ0lzSUNKemFXMXdiR1VpTENBaVpYTmpZWEJsVkc5clpXNGlMQ0FpZG1Gc2RXVWlMQ0FpZFc1cGRFWnZjbFJ2YTJWdUlpd2dJblJ2YTJWdUlpd2dJbXh2WXlJc0lDSnZibVVpTENBaVpHbG5hWFJTWldkbGVDSXNJQ0owZDI4aUxDQWlkR2h5WldVaUxDQWlabTkxY2lJc0lDSnphWGdpTENBaWIyNWxUM0pVZDI4aUxDQWliMjVsVkc5VWFISmxaU0lzSUNKdmJtVlViMU5wZUNJc0lDSnZibVZVYjA1cGJtVWlMQ0FpZEhkdlZHOUdiM1Z5SWl3Z0ltWnZkWEpVYjFOcGVDSXNJQ0pzYVhSbGNtRnNJaXdnSW5RaUxDQWlkVzVwZENJc0lDSjFiblJ5ZFc1allYUmxXV1ZoY2lJc0lDSndZWEowVkhsd1pWTjBlV3hsVkc5VWIydGxibFpoYkNJc0lDSjBiMnRsYmtadmNsQmhjblFpTENBaWNHRnlkQ0lzSUNKc2IyTmhiR1VpTENBaVptOXliV0YwVDNCMGN5SXNJQ0owZVhCbElpd2dJbk4wZVd4bElpd2dJblpoYkNJc0lDSmlkV2xzWkZKbFoyVjRJaXdnSW5WdWFYUnpJaXdnSW5VaUxDQWlaaUlzSUNKdFlYUmphQ0lzSUNKcGJuQjFkQ0lzSUNKb1lXNWtiR1Z5Y3lJc0lDSnRZWFJqYUdWeklpd2dJbUZzYkNJc0lDSnRZWFJqYUVsdVpHVjRJaXdnSW1oaGMwOTNibEJ5YjNCbGNuUjVJaXdnSW1SaGRHVlVhVzFsUm5KdmJVMWhkR05vWlhNaUxDQWlkRzlHYVdWc1pDSXNJQ0o2YjI1bElpd2dJbk53WldOcFptbGpUMlptYzJWMElpd2dJbWx6Vlc1a1pXWnBibVZrSWl3Z0lrbEJUa0ZhYjI1bElpd2dJa1pwZUdWa1QyWm1jMlYwV205dVpTSXNJQ0p3WVhKelpVMXBiR3hwY3lJc0lDSnlJaXdnSW1zaUxDQWlaSFZ0YlhsRVlYUmxWR2x0WlVOaFkyaGxJaXdnSW1kbGRFUjFiVzE1UkdGMFpWUnBiV1VpTENBaVJHRjBaVlJwYldVaUxDQWliV0Y1WW1WRmVIQmhibVJOWVdOeWIxUnZhMlZ1SWl3Z0lrWnZjbTFoZEhSbGNpSXNJQ0owYjJ0bGJuTWlMQ0FpY0NJc0lDSmxlSEJoYm1STllXTnliMVJ2YTJWdWN5SXNJQ0psZUhCc1lXbHVSbkp2YlZSdmEyVnVjeUlzSUNKbWIzSnRZWFFpTENBaVpHbHpjWFZoYkdsbWVXbHVaMVZ1YVhRaUxDQWljbVZuWlhoVGRISnBibWNpTENBaWNtRjNUV0YwWTJobGN5SXNJQ0p5WlhOMWJIUWlMQ0FpUTI5dVpteHBZM1JwYm1kVGNHVmphV1pwWTJGMGFXOXVSWEp5YjNJaUxDQWljR0Z5YzJWR2NtOXRWRzlyWlc1eklpd2dJbWx1ZG1Gc2FXUlNaV0Z6YjI0aUxDQWlibTl1VEdWaGNFeGhaR1JsY2lJc0lDSnNaV0Z3VEdGa1pHVnlJaXdnSW5WdWFYUlBkWFJQWmxKaGJtZGxJaXdnSW5WdWFYUWlMQ0FpZG1Gc2RXVWlMQ0FpU1c1MllXeHBaQ0lzSUNKa1lYbFBabGRsWldzaUxDQWllV1ZoY2lJc0lDSnRiMjUwYUNJc0lDSmtZWGtpTENBaVpDSXNJQ0pxY3lJc0lDSmpiMjF3ZFhSbFQzSmthVzVoYkNJc0lDSnBjMHhsWVhCWlpXRnlJaXdnSW5WdVkyOXRjSFYwWlU5eVpHbHVZV3dpTENBaWIzSmthVzVoYkNJc0lDSjBZV0pzWlNJc0lDSnRiMjUwYURBaUxDQWlaM0psWjI5eWFXRnVWRzlYWldWcklpd2dJbWR5WldkUFltb2lMQ0FpZDJWbGEyUmhlU0lzSUNKM1pXVnJUblZ0WW1WeUlpd2dJbmRsWld0WlpXRnlJaXdnSW5kbFpXdHpTVzVYWldWcldXVmhjaUlzSUNKZlgzTndjbVZoWkZaaGJIVmxjeUlzSUNKMGFXMWxUMkpxWldOMElpd2dJbmRsWld0VWIwZHlaV2R2Y21saGJpSXNJQ0ozWldWclJHRjBZU0lzSUNKM1pXVnJaR0Y1VDJaS1lXNDBJaXdnSW5sbFlYSkpia1JoZVhNaUxDQWlaR0Y1YzBsdVdXVmhjaUlzSUNKbmNtVm5iM0pwWVc1VWIwOXlaR2x1WVd3aUxDQWlaM0psWjBSaGRHRWlMQ0FpYjNKa2FXNWhiRlJ2UjNKbFoyOXlhV0Z1SWl3Z0ltOXlaR2x1WVd4RVlYUmhJaXdnSW1oaGMwbHVkbUZzYVdSWFpXVnJSR0YwWVNJc0lDSnZZbW9pTENBaWRtRnNhV1JaWldGeUlpd2dJbWx6U1c1MFpXZGxjaUlzSUNKMllXeHBaRmRsWldzaUxDQWlhVzUwWldkbGNrSmxkSGRsWlc0aUxDQWlkbUZzYVdSWFpXVnJaR0Y1SWl3Z0ltaGhjMGx1ZG1Gc2FXUlBjbVJwYm1Gc1JHRjBZU0lzSUNKMllXeHBaRTl5WkdsdVlXd2lMQ0FpYUdGelNXNTJZV3hwWkVkeVpXZHZjbWxoYmtSaGRHRWlMQ0FpZG1Gc2FXUk5iMjUwYUNJc0lDSjJZV3hwWkVSaGVTSXNJQ0prWVhselNXNU5iMjUwYUNJc0lDSm9ZWE5KYm5aaGJHbGtWR2x0WlVSaGRHRWlMQ0FpYUc5MWNpSXNJQ0p0YVc1MWRHVWlMQ0FpYzJWamIyNWtJaXdnSW0xcGJHeHBjMlZqYjI1a0lpd2dJblpoYkdsa1NHOTFjaUlzSUNKMllXeHBaRTFwYm5WMFpTSXNJQ0oyWVd4cFpGTmxZMjl1WkNJc0lDSjJZV3hwWkUxcGJHeHBjMlZqYjI1a0lpd2dJa2xPVmtGTVNVUWlMQ0FpVFVGWVgwUkJWRVVpTENBaWRXNXpkWEJ3YjNKMFpXUmFiMjVsSWl3Z0lucHZibVVpTENBaVNXNTJZV3hwWkNJc0lDSndiM056YVdKc2VVTmhZMmhsWkZkbFpXdEVZWFJoSWl3Z0ltUjBJaXdnSW1keVpXZHZjbWxoYmxSdlYyVmxheUlzSUNKamJHOXVaU0lzSUNKcGJuTjBJaXdnSW1Gc2RITWlMQ0FpWTNWeWNtVnVkQ0lzSUNKRVlYUmxWR2x0WlNJc0lDSmZYM053Y21WaFpGQnliM0J6SWl3Z0lsOWZjM0J5WldGa1ZtRnNkV1Z6SWl3Z0ltWnBlRTltWm5ObGRDSXNJQ0pzYjJOaGJGUlRJaXdnSW04aUxDQWlkSG9pTENBaWRYUmpSM1ZsYzNNaUxDQWlieklpTENBaWJ6TWlMQ0FpZEhOVWIwOWlhaUlzSUNKMGN5SXNJQ0p2Wm1aelpYUWlMQ0FpWkNJc0lDSnZZbXBVYjFSVElpd2dJbTlpYWlJc0lDSnZZbXBVYjB4dlkyRnNWRk1pTENBaVlXUnFkWE4wVkdsdFpTSXNJQ0prZFhJaUxDQWliMUJ5WlNJc0lDSjVaV0Z5SWl3Z0ltMXZiblJvSWl3Z0ltTWlMQ0FpWkdGNWMwbHVUVzl1ZEdnaUxDQWliV2xzYkdselZHOUJaR1FpTENBaVJIVnlZWFJwYjI0aUxDQWljR0Z5YzJWRVlYUmhWRzlFWVhSbFZHbHRaU0lzSUNKd1lYSnpaV1FpTENBaWNHRnljMlZrV205dVpTSXNJQ0p2Y0hSeklpd2dJbVp2Y20xaGRDSXNJQ0owWlhoMElpd2dJbk53WldOcFptbGpUMlptYzJWMElpd2dJbk5sZEZwdmJtVWlMQ0FpYVc1MFpYSndjbVYwWVhScGIyNWFiMjVsSWl3Z0luUnZWR1ZqYUVadmNtMWhkQ0lzSUNKaGJHeHZkMW9pTENBaVJtOXliV0YwZEdWeUlpd2dJa3h2WTJGc1pTSXNJQ0owYjBsVFQwUmhkR1VpTENBaVpYaDBaVzVrWldRaUxDQWliRzl1WjBadmNtMWhkQ0lzSUNKd1lXUlRkR0Z5ZENJc0lDSjBiMGxUVDFScGJXVWlMQ0FpYzNWd2NISmxjM05UWldOdmJtUnpJaXdnSW5OMWNIQnlaWE56VFdsc2JHbHpaV052Ym1Seklpd2dJbWx1WTJ4MVpHVlBabVp6WlhRaUxDQWlaWGgwWlc1a1pXUmFiMjVsSWl3Z0ltUmxabUYxYkhSVmJtbDBWbUZzZFdWeklpd2dJbVJsWm1GMWJIUlhaV1ZyVlc1cGRGWmhiSFZsY3lJc0lDSmtaV1poZFd4MFQzSmthVzVoYkZWdWFYUldZV3gxWlhNaUxDQWliM0prWlhKbFpGVnVhWFJ6SWl3Z0ltOXlaR1Z5WldSWFpXVnJWVzVwZEhNaUxDQWliM0prWlhKbFpFOXlaR2x1WVd4VmJtbDBjeUlzSUNKdWIzSnRZV3hwZW1WVmJtbDBJaXdnSW5WdWFYUWlMQ0FpYm05eWJXRnNhWHBsWkNJc0lDSkpiblpoYkdsa1ZXNXBkRVZ5Y205eUlpd2dJbkYxYVdOclJGUWlMQ0FpYm05eWJXRnNhWHBsV205dVpTSXNJQ0pUWlhSMGFXNW5jeUlzSUNKc2IyTWlMQ0FpZEhOT2IzY2lMQ0FpYVhOVmJtUmxabWx1WldRaUxDQWlkU0lzSUNKcGJuWmhiR2xrSWl3Z0ltaGhjMGx1ZG1Gc2FXUkhjbVZuYjNKcFlXNUVZWFJoSWl3Z0ltaGhjMGx1ZG1Gc2FXUlVhVzFsUkdGMFlTSXNJQ0p2Wm1aelpYUlFjbTkyYVhNaUxDQWlaR2xtWmxKbGJHRjBhWFpsSWl3Z0luTjBZWEowSWl3Z0ltVnVaQ0lzSUNKeWIzVnVaQ0lzSUNKeWIzVnVaRlJ2SWl3Z0ltUnBabVpsY2lJc0lDSmpiM1Z1ZENJc0lDSnNZWE4wVDNCMGN5SXNJQ0poY21kTWFYTjBJaXdnSW1GeVozTWlMQ0FpWDBSaGRHVlVhVzFsSWl3Z0ltTnZibVpwWnlJc0lDSnZkQ0lzSUNKa1lYa2lMQ0FpYUc5MWNpSXNJQ0p0YVc1MWRHVWlMQ0FpYzJWamIyNWtJaXdnSW0xcGJHeHBjMlZqYjI1a0lpd2dJa1pwZUdWa1QyWm1jMlYwV205dVpTSXNJQ0prWVhSbElpd2dJbTl3ZEdsdmJuTWlMQ0FpYVhORVlYUmxJaXdnSW5wdmJtVlViMVZ6WlNJc0lDSnRhV3hzYVhObFkyOXVaSE1pTENBaWFYTk9kVzFpWlhJaUxDQWlTVzUyWVd4cFpFRnlaM1Z0Wlc1MFJYSnliM0lpTENBaWMyVmpiMjVrY3lJc0lDSnViM0p0WVd4cGVtVlBZbXBsWTNRaUxDQWlZMjl1ZEdGcGJuTlBjbVJwYm1Gc0lpd2dJbU52Ym5SaGFXNXpSM0psWjI5eVdXVmhjaUlzSUNKamIyNTBZV2x1YzBkeVpXZHZjazFFSWl3Z0ltTnZiblJoYVc1elIzSmxaMjl5SWl3Z0ltUmxabWx1YVhSbFYyVmxhMFJsWmlJc0lDSkRiMjVtYkdsamRHbHVaMU53WldOcFptbGpZWFJwYjI1RmNuSnZjaUlzSUNKMWMyVlhaV1ZyUkdGMFlTSXNJQ0oxYm1sMGN5SXNJQ0prWldaaGRXeDBWbUZzZFdWeklpd2dJbTlpYWs1dmR5SXNJQ0puY21WbmIzSnBZVzVVYjA5eVpHbHVZV3dpTENBaVptOTFibVJHYVhKemRDSXNJQ0oySWl3Z0ltaHBaMmhsY2s5eVpHVnlTVzUyWVd4cFpDSXNJQ0pvWVhOSmJuWmhiR2xrVjJWbGEwUmhkR0VpTENBaWFHRnpTVzUyWVd4cFpFOXlaR2x1WVd4RVlYUmhJaXdnSW1keVpXZHZjbWxoYmlJc0lDSjNaV1ZyVkc5SGNtVm5iM0pwWVc0aUxDQWliM0prYVc1aGJGUnZSM0psWjI5eWFXRnVJaXdnSW5SelJtbHVZV3dpTENBaWIyWm1jMlYwUm1sdVlXd2lMQ0FpZG1Gc2N5SXNJQ0p3WVhKelpVbFRUMFJoZEdVaUxDQWljR0Z5YzJWU1JrTXlPREl5UkdGMFpTSXNJQ0p3WVhKelpVaFVWRkJFWVhSbElpd2dJbVp0ZENJc0lDSnNiMk5oYkdVaUxDQWliblZ0WW1WeWFXNW5VM2x6ZEdWdElpd2dJbXh2WTJGc1pWUnZWWE5sSWl3Z0luQmhjbk5sUm5KdmJWUnZhMlZ1Y3lJc0lDSndZWEp6WlZOUlRDSXNJQ0p5WldGemIyNGlMQ0FpWlhod2JHRnVZWFJwYjI0aUxDQWlTVzUyWVd4cFpFUmhkR1ZVYVcxbFJYSnliM0lpTENBaVNXNW1ieUlzSUNKcGMweGxZWEJaWldGeUlpd2dJbVJoZVhOSmJsbGxZWElpTENBaWQyVmxhM05KYmxkbFpXdFpaV0Z5SWl3Z0ltTmhiR1Z1WkdGeUlpd2dJbXRsWlhCTWIyTmhiRlJwYldVaUxDQWlhMlZsY0VOaGJHVnVaR0Z5VkdsdFpTSXNJQ0p1WlhkVVV5SXNJQ0p2Wm1aelpYUkhkV1Z6Y3lJc0lDSmhjMDlpYWlJc0lDSnZkWFJ3ZFhSRFlXeGxibVJoY2lJc0lDSjJZV3gxWlhNaUxDQWljMlYwZEdsdVoxZGxaV3RUZEhWbVppSXNJQ0p0YVhobFpDSXNJQ0prZFhKaGRHbHZiaUlzSUNKdWIzSnRZV3hwZW1Wa1ZXNXBkQ0lzSUNKeElpd2dJbVp2Y20xaGRFOXdkSE1pTENBaVJFRlVSVjlUU0U5U1ZDSXNJQ0psZUhRaUxDQWlhVzVqYkhWa1pWQnlaV1pwZUNJc0lDSnBibU5zZFdSbFdtOXVaU0lzSUNKcGJtTnNkV1JsVDJabWMyVjBVM0JoWTJVaUxDQWlZbUZ6WlNJc0lDSnZkR2hsY2tSaGRHVlVhVzFsSWl3Z0ltUjFjazl3ZEhNaUxDQWliV0Y1WW1WQmNuSmhlU0lzSUNKdmRHaGxja2x6VEdGMFpYSWlMQ0FpWldGeWJHbGxjaUlzSUNKc1lYUmxjaUlzSUNKa2FXWm1aV1FpTENBaVpHbG1abDlrWldaaGRXeDBJaXdnSWtsdWRHVnlkbUZzSWl3Z0ltbHVjSFYwVFhNaUxDQWlZV1JxZFhOMFpXUlViMXB2Ym1VaUxDQWliM1JvWlhJaUxDQWljR0ZrWkdsdVp5SXNJQ0prWVhSbFZHbHRaWE1pTENBaVltVnpkRUo1SWl3Z0lta2lMQ0FpWlhod2JHRnBia1p5YjIxVWIydGxibk1pTENBaVJFRlVSVjlOUlVRaUxDQWlSRUZVUlY5TlJVUmZWMGxVU0Y5WFJVVkxSRUZaSWl3Z0lrUkJWRVZmUmxWTVRDSXNJQ0pFUVZSRlgwaFZSMFVpTENBaVZFbE5SVjlUU1UxUVRFVWlMQ0FpVkVsTlJWOVhTVlJJWDFORlEwOU9SRk1pTENBaVZFbE5SVjlYU1ZSSVgxTklUMUpVWDA5R1JsTkZWQ0lzSUNKVVNVMUZYMWRKVkVoZlRFOU9SMTlQUmtaVFJWUWlMQ0FpVkVsTlJWOHlORjlUU1UxUVRFVWlMQ0FpVkVsTlJWOHlORjlYU1ZSSVgxTkZRMDlPUkZNaUxDQWlWRWxOUlY4eU5GOVhTVlJJWDFOSVQxSlVYMDlHUmxORlZDSXNJQ0pVU1UxRlh6STBYMWRKVkVoZlRFOU9SMTlQUmtaVFJWUWlMQ0FpUkVGVVJWUkpUVVZmVTBoUFVsUWlMQ0FpUkVGVVJWUkpUVVZmVTBoUFVsUmZWMGxVU0Y5VFJVTlBUa1JUSWl3Z0lrUkJWRVZVU1UxRlgwMUZSQ0lzSUNKRVFWUkZWRWxOUlY5TlJVUmZWMGxVU0Y5VFJVTlBUa1JUSWl3Z0lrUkJWRVZVU1UxRlgwMUZSRjlYU1ZSSVgxZEZSVXRFUVZraUxDQWlSRUZVUlZSSlRVVmZSbFZNVENJc0lDSkVRVlJGVkVsTlJWOUdWVXhNWDFkSlZFaGZVMFZEVDA1RVV5SXNJQ0pFUVZSRlZFbE5SVjlJVlVkRklpd2dJa1JCVkVWVVNVMUZYMGhWUjBWZlYwbFVTRjlUUlVOUFRrUlRJaXdnSW1aeWFXVnVaR3g1UkdGMFpWUnBiV1VpTENBaVpHRjBaVlJwYldWcGMyZ2lMQ0FpVUNJc0lDSmxiVzlxYVY5eVpXZGxlRjlrWldaaGRXeDBJaXdnSW01dmNtMWhiR2w2WlVSMWNtRjBhVzl1SWl3Z0ltUjFjaUlzSUNKeVpXNWtaWEpOYVc1cGJXRnNSR0YwWlNJc0lDSjBhVzFsSWl3Z0ltUmhkR1ZHYjNKdFlYUWlMQ0FpWkdGMFpWUnBiV1ZHYjNKdFlYUWlMQ0FpYkc5allXeGxJaXdnSW5KbGJtUmxjazFwYm1sdFlXeEVkWEpoZEdsdmJpSXNJQ0prZFhJaUxDQWlibTl5YldGc2FYcGxSSFZ5WVhScGIyNGlMQ0FpY21WemRXeDBJaXdnSW1kbGRFWnBiR1ZVYVhSc1pTSXNJQ0p3WVhSb0lpd2dJbWRsZEVWNGRHVnVjMmx2YmlJc0lDSklSVUZFUlZKZlEwRk9UMDVKUTBGTVNWcEZVaUlzSUNKbGJXOXFhVjl5WldkbGVGOWtaV1poZFd4MElpd2dJbDhpTENBaWNtVnpkV3gwSWl3Z0ltNXZjbTFoYkdsNlpVaGxZV1JsY2tadmNreHBibXNpTENBaWFHVmhaR1Z5SWl3Z0lreHBibXNpTENBaVgweHBibXNpTENBaWNHRjBhQ0lzSUNKbGJXSmxaQ0lzSUNKa2FYTndiR0Y1SWl3Z0lteHBibXR3WVhSb0lpd2dJbk53YkdsMElpd2dJbWhsWVdSbGNpSXNJQ0p1YjNKdFlXeHBlbVZJWldGa1pYSkdiM0pNYVc1cklpd2dJbUpzYjJOclNXUWlMQ0FpYjJKcVpXTjBJaXdnSW5KaGQyeHBibXNpTENBaWJHbHVheUlzSUNKemNHeHBkRTl1Vlc1bGMyTmhjR1ZrVUdsd1pTSXNJQ0ptYVdWc1pITWlMQ0FpWW14dlkyc2lMQ0FpYjNSb1pYSWlMQ0FpY21WemRXeDBJaXdnSW1kbGRFWnBiR1ZVYVhSc1pTSXNJQ0pmWVNJc0lDSmZZaUlzSUNKbGMyTmhjR1ZrSWl3Z0luQnBjR1VpTENBaVFVeEpRVk1pTENBaVJFOURJaXdnSWsxQlVDSXNJQ0pRUVVsU0lpd2dJbE5EUVV4QlVpSXNJQ0pUUlZFaUxDQWlUazlFUlY5VVdWQkZJaXdnSW1selFXeHBZWE1pTENBaWJtOWtaU0lzSUNKcGMwUnZZM1Z0Wlc1MElpd2dJbWx6VFdGd0lpd2dJbWx6VUdGcGNpSXNJQ0pwYzFOallXeGhjaUlzSUNKcGMxTmxjU0lzSUNKcGMwTnZiR3hsWTNScGIyNGlMQ0FpYVhOT2IyUmxJaXdnSW1oaGMwRnVZMmh2Y2lJc0lDSkNVa1ZCU3lJc0lDSlRTMGxRSWl3Z0lsSkZUVTlXUlNJc0lDSjJhWE5wZENJc0lDSnViMlJsSWl3Z0luWnBjMmwwYjNJaUxDQWlkbWx6YVhSdmNsOGlMQ0FpYVc1cGRGWnBjMmwwYjNJaUxDQWlhWE5FYjJOMWJXVnVkQ0lzSUNKMmFYTnBkRjhpTENBaWEyVjVJaXdnSW5CaGRHZ2lMQ0FpWTNSeWJDSXNJQ0pqWVd4c1ZtbHphWFJ2Y2lJc0lDSnBjMDV2WkdVaUxDQWlhWE5RWVdseUlpd2dJbkpsY0d4aFkyVk9iMlJsSWl3Z0ltbHpRMjlzYkdWamRHbHZiaUlzSUNKamFTSXNJQ0pqYXlJc0lDSmpkaUlzSUNKMmFYTnBkRUZ6ZVc1aklpd2dJblpwYzJsMFFYTjVibU5mSWl3Z0lsOWhJaXdnSWw5aUlpd2dJbDlqSWl3Z0lsOWtJaXdnSWw5bElpd2dJbWx6VFdGd0lpd2dJbWx6VTJWeElpd2dJbWx6VTJOaGJHRnlJaXdnSW1selFXeHBZWE1pTENBaWNHRnlaVzUwSWl3Z0luQjBJaXdnSW1WelkyRndaVU5vWVhKeklpd2dJbVZ6WTJGd1pWUmhaMDVoYldVaUxDQWlkRzRpTENBaVkyZ2lMQ0FpUkdseVpXTjBhWFpsY3lJc0lDSmZSR2x5WldOMGFYWmxjeUlzSUNKNVlXMXNJaXdnSW5SaFozTWlMQ0FpWTI5d2VTSXNJQ0p5WlhNaUxDQWliR2x1WlNJc0lDSnZia1Z5Y205eUlpd2dJbkJoY25Seklpd2dJbTVoYldVaUxDQWlhR0Z1Wkd4bElpd2dJbkJ5WldacGVDSXNJQ0oyWlhKemFXOXVJaXdnSW1selZtRnNhV1FpTENBaWMyOTFjbU5sSWl3Z0luWmxjbUpoZEdsdElpd2dJbk4xWm1acGVDSXNJQ0psY25KdmNpSXNJQ0owWVdjaUxDQWlaRzlqSWl3Z0lteHBibVZ6SWl3Z0luUmhaMFZ1ZEhKcFpYTWlMQ0FpZEdGblRtRnRaWE1pTENBaWFYTk9iMlJsSWl3Z0luWnBjMmwwSWl3Z0lsOXJaWGtpTENBaWJtOWtaU0lzSUNKaGJtTm9iM0pKYzFaaGJHbGtJaXdnSW1GdVkyaHZjaUlzSUNKdGMyY2lMQ0FpWVc1amFHOXlUbUZ0WlhNaUxDQWljbTl2ZENJc0lDSmhibU5vYjNKeklpd2dJblpwYzJsMElpd2dJbDlyWlhraUxDQWlibTlrWlNJc0lDSm1hVzVrVG1WM1FXNWphRzl5SWl3Z0luQnlaV1pwZUNJc0lDSmxlR05zZFdSbElpd2dJbWtpTENBaWJtRnRaU0lzSUNKamNtVmhkR1ZPYjJSbFFXNWphRzl5Y3lJc0lDSmtiMk1pTENBaVlXeHBZWE5QWW1wbFkzUnpJaXdnSW5OdmRYSmpaVTlpYW1WamRITWlMQ0FpY0hKbGRrRnVZMmh2Y25NaUxDQWljMjkxY21ObElpd2dJbkpsWmlJc0lDSnBjMU5qWVd4aGNpSXNJQ0pwYzBOdmJHeGxZM1JwYjI0aUxDQWlaWEp5YjNJaUxDQWlZWEJ3YkhsU1pYWnBkbVZ5SWl3Z0luSmxkbWwyWlhJaUxDQWliMkpxSWl3Z0ltdGxlU0lzSUNKMllXd2lMQ0FpYVNJc0lDSnNaVzRpTENBaWRqQWlMQ0FpZGpFaUxDQWlheUlzSUNKMGIwcFRJaXdnSW5aaGJIVmxJaXdnSW1GeVp5SXNJQ0pqZEhnaUxDQWlkaUlzSUNKcElpd2dJbWhoYzBGdVkyaHZjaUlzSUNKa1lYUmhJaXdnSW5KbGN5SXNJQ0pPYjJSbFFtRnpaU0lzSUNKMGVYQmxJaXdnSWs1UFJFVmZWRmxRUlNJc0lDSmpiM0I1SWl3Z0ltUnZZeUlzSUNKdFlYQkJjMDFoY0NJc0lDSnRZWGhCYkdsaGMwTnZkVzUwSWl3Z0ltOXVRVzVqYUc5eUlpd2dJbkpsZG1sMlpYSWlMQ0FpYVhORWIyTjFiV1Z1ZENJc0lDSmpkSGdpTENBaWNtVnpJaXdnSW5SdlNsTWlMQ0FpWTI5MWJuUWlMQ0FpWVhCd2JIbFNaWFpwZG1WeUlpd2dJa0ZzYVdGeklpd2dJazV2WkdWQ1lYTmxJaXdnSW5OdmRYSmpaU0lzSUNKQlRFbEJVeUlzSUNKa2IyTWlMQ0FpWm05MWJtUWlMQ0FpZG1semFYUWlMQ0FpWDJ0bGVTSXNJQ0p1YjJSbElpd2dJbDloY21jaUxDQWlZM1I0SWl3Z0ltRnVZMmh2Y25NaUxDQWliV0Y0UVd4cFlYTkRiM1Z1ZENJc0lDSnRjMmNpTENBaVpHRjBZU0lzSUNKMGIwcFRJaXdnSW1kbGRFRnNhV0Z6UTI5MWJuUWlMQ0FpWDI5dVEyOXRiV1Z1ZENJc0lDSmZiMjVEYUc5dGNFdGxaWEFpTENBaWMzSmpJaXdnSW1GdVkyaHZja2x6Vm1Gc2FXUWlMQ0FpYVhOQmJHbGhjeUlzSUNKaGJtTm9iM0lpTENBaWFYTkRiMnhzWldOMGFXOXVJaXdnSW1OdmRXNTBJaXdnSW1sMFpXMGlMQ0FpWXlJc0lDSnBjMUJoYVhJaUxDQWlhMk1pTENBaWRtTWlMQ0FpYVhOVFkyRnNZWEpXWVd4MVpTSXNJQ0oyWVd4MVpTSXNJQ0pUWTJGc1lYSWlMQ0FpVG05a1pVSmhjMlVpTENBaVUwTkJURUZTSWl3Z0ltRnlaeUlzSUNKamRIZ2lMQ0FpZEc5S1V5SXNJQ0prWldaaGRXeDBWR0ZuVUhKbFptbDRJaXdnSW1acGJtUlVZV2RQWW1wbFkzUWlMQ0FpZG1Gc2RXVWlMQ0FpZEdGblRtRnRaU0lzSUNKMFlXZHpJaXdnSWw5aElpd2dJbTFoZEdOb0lpd2dJblFpTENBaWRHRm5UMkpxSWl3Z0ltTnlaV0YwWlU1dlpHVWlMQ0FpWTNSNElpd2dJbDlpSWl3Z0lsOWpJaXdnSW1selJHOWpkVzFsYm5RaUxDQWlhWE5PYjJSbElpd2dJbWx6VUdGcGNpSXNJQ0p0WVhBaUxDQWlUVUZRSWl3Z0ltRnNhV0Z6UkhWd2JHbGpZWFJsVDJKcVpXTjBjeUlzSUNKdmJrRnVZMmh2Y2lJc0lDSnZibFJoWjA5aWFpSXNJQ0p6WTJobGJXRWlMQ0FpYzI5MWNtTmxUMkpxWldOMGN5SXNJQ0p5WldZaUxDQWlRV3hwWVhNaUxDQWlibTlrWlNJc0lDSlRZMkZzWVhJaUxDQWlVMFZSSWl3Z0ltTnZiR3hsWTNScGIyNUdjbTl0VUdGMGFDSXNJQ0p6WTJobGJXRWlMQ0FpY0dGMGFDSXNJQ0oyWVd4MVpTSXNJQ0oySWl3Z0lta2lMQ0FpYXlJc0lDSmhJaXdnSW1OeVpXRjBaVTV2WkdVaUxDQWlhWE5GYlhCMGVWQmhkR2dpTENBaVEyOXNiR1ZqZEdsdmJpSXNJQ0pPYjJSbFFtRnpaU0lzSUNKMGVYQmxJaXdnSW1OdmNIa2lMQ0FpYVhRaUxDQWlhWE5PYjJSbElpd2dJbWx6VUdGcGNpSXNJQ0pyWlhraUxDQWljbVZ6ZENJc0lDSnViMlJsSWl3Z0ltbHpRMjlzYkdWamRHbHZiaUlzSUNKclpXVndVMk5oYkdGeUlpd2dJbWx6VTJOaGJHRnlJaXdnSW1Gc2JHOTNVMk5oYkdGeUlpd2dJbTRpTENBaWMzUnlhVzVuYVdaNVEyOXRiV1Z1ZENJc0lDSnpkSElpTENBaWFXNWtaVzUwUTI5dGJXVnVkQ0lzSUNKamIyMXRaVzUwSWl3Z0ltbHVaR1Z1ZENJc0lDSnNhVzVsUTI5dGJXVnVkQ0lzSUNKR1QweEVYMFpNVDFjaUxDQWlSazlNUkY5Q1RFOURTeUlzSUNKR1QweEVYMUZWVDFSRlJDSXNJQ0ptYjJ4a1JteHZkMHhwYm1Weklpd2dJblJsZUhRaUxDQWlhVzVrWlc1MElpd2dJbTF2WkdVaUxDQWlhVzVrWlc1MFFYUlRkR0Z5ZENJc0lDSnNhVzVsVjJsa2RHZ2lMQ0FpYldsdVEyOXVkR1Z1ZEZkcFpIUm9JaXdnSW05dVJtOXNaQ0lzSUNKdmJrOTJaWEptYkc5M0lpd2dJbVZ1WkZOMFpYQWlMQ0FpWm05c1pITWlMQ0FpWlhOallYQmxaRVp2YkdSeklpd2dJbVZ1WkNJc0lDSnpjR3hwZENJc0lDSndjbVYySWl3Z0ltOTJaWEptYkc5M0lpd2dJbWtpTENBaVpYTmpVM1JoY25RaUxDQWlaWE5qUlc1a0lpd2dJbU52Ym5OMWJXVk5iM0psU1c1a1pXNTBaV1JNYVc1bGN5SXNJQ0pqYUNJc0lDSnVaWGgwSWl3Z0ltb2lMQ0FpY21Weklpd2dJbVp2YkdRaUxDQWljM1JoY25RaUxDQWlaMlYwUm05c1pFOXdkR2x2Ym5NaUxDQWlZM1I0SWl3Z0ltbHpRbXh2WTJzaUxDQWlZMjl1ZEdGcGJuTkViMk4xYldWdWRFMWhjbXRsY2lJc0lDSnpkSElpTENBaWJHbHVaVXhsYm1kMGFFOTJaWEpNYVcxcGRDSXNJQ0pzYVc1bFYybGtkR2dpTENBaWFXNWtaVzUwVEdWdVozUm9JaXdnSW14cGJXbDBJaXdnSW5OMGNreGxiaUlzSUNKemRHRnlkQ0lzSUNKa2IzVmliR1ZSZFc5MFpXUlRkSEpwYm1jaUxDQWlkbUZzZFdVaUxDQWlhbk52YmlJc0lDSnBiWEJzYVdOcGRFdGxlU0lzSUNKdGFXNU5kV3gwYVV4cGJtVk1aVzVuZEdnaUxDQWlhVzVrWlc1MElpd2dJbWtpTENBaVkyZ2lMQ0FpWTI5a1pTSXNJQ0ptYjJ4a1JteHZkMHhwYm1Weklpd2dJa1pQVEVSZlVWVlBWRVZFSWl3Z0luTnBibWRzWlZGMWIzUmxaRk4wY21sdVp5SXNJQ0p5WlhNaUxDQWlSazlNUkY5R1RFOVhJaXdnSW5GMWIzUmxaRk4wY21sdVp5SXNJQ0p6YVc1bmJHVlJkVzkwWlNJc0lDSnhjeUlzSUNKb1lYTkViM1ZpYkdVaUxDQWlhR0Z6VTJsdVoyeGxJaXdnSW1Kc2IyTnJSVzVrVG1WM2JHbHVaWE1pTENBaVpTSXNJQ0ppYkc5amExTjBjbWx1WnlJc0lDSmpiMjF0Wlc1MElpd2dJblI1Y0dVaUxDQWliMjVEYjIxdFpXNTBJaXdnSW05dVEyaHZiWEJMWldWd0lpd2dJbUpzYjJOclVYVnZkR1VpTENBaVkyOXRiV1Z1ZEZOMGNtbHVaeUlzSUNKc2FYUmxjbUZzSWl3Z0lsTmpZV3hoY2lJc0lDSmphRzl0Y0NJc0lDSmxibVJUZEdGeWRDSXNJQ0psYm1RaUxDQWlaVzVrVG14UWIzTWlMQ0FpYzNSaGNuUlhhWFJvVTNCaFkyVWlMQ0FpYzNSaGNuUkZibVFpTENBaWMzUmhjblJPYkZCdmN5SXNJQ0pvWldGa1pYSWlMQ0FpWW05a2VTSXNJQ0pHVDB4RVgwSk1UME5MSWl3Z0luQnNZV2x1VTNSeWFXNW5JaXdnSW1sMFpXMGlMQ0FpWVdOMGRXRnNVM1J5YVc1bklpd2dJbWx1WkdWdWRGTjBaWEFpTENBaWFXNUdiRzkzSWl3Z0luUmxjM1FpTENBaWRHRm5JaXdnSWw5aElpd2dJbU52YlhCaGRDSXNJQ0owWVdkeklpd2dJbk4wY21sdVoybG1lVk4wY21sdVp5SXNJQ0p6Y3lJc0lDSmZjM1J5YVc1bmFXWjVJaXdnSWw5MGVYQmxJaXdnSW1SbFptRjFiSFJMWlhsVWVYQmxJaXdnSW1SbFptRjFiSFJUZEhKcGJtZFVlWEJsSWl3Z0luUWlMQ0FpWTNKbFlYUmxVM1J5YVc1bmFXWjVRMjl1ZEdWNGRDSXNJQ0prYjJNaUxDQWliM0IwYVc5dWN5SXNJQ0p2Y0hRaUxDQWljM1J5YVc1bmFXWjVRMjl0YldWdWRDSXNJQ0pwYmtac2IzY2lMQ0FpWjJWMFZHRm5UMkpxWldOMElpd2dJblJoWjNNaUxDQWlhWFJsYlNJc0lDSmZZU0lzSUNKZllpSXNJQ0pmWXlJc0lDSmZaQ0lzSUNKdFlYUmphQ0lzSUNKMElpd2dJblJoWjA5aWFpSXNJQ0p2WW1vaUxDQWlhWE5UWTJGc1lYSWlMQ0FpZEdWemRFMWhkR05vSWl3Z0ltNWhiV1VpTENBaWMzUnlhVzVuYVdaNVVISnZjSE1pTENBaWJtOWtaU0lzSUNKaGJtTm9iM0p6SWl3Z0luQnliM0J6SWl3Z0ltRnVZMmh2Y2lJc0lDSnBjME52Ykd4bFkzUnBiMjRpTENBaVlXNWphRzl5U1hOV1lXeHBaQ0lzSUNKMFlXY2lMQ0FpYzNSeWFXNW5hV1o1SWl3Z0ltTjBlQ0lzSUNKdmJrTnZiVzFsYm5RaUxDQWliMjVEYUc5dGNFdGxaWEFpTENBaWFYTlFZV2x5SWl3Z0ltbHpRV3hwWVhNaUxDQWlhWE5PYjJSbElpd2dJbThpTENBaWMzUnlJaXdnSW5OMGNtbHVaMmxtZVZOMGNtbHVaeUlzSUNKemRISnBibWRwWm5sUVlXbHlJaXdnSW10bGVTSXNJQ0oyWVd4MVpTSXNJQ0pqZEhnaUxDQWliMjVEYjIxdFpXNTBJaXdnSW05dVEyaHZiWEJMWldWd0lpd2dJbDloSWl3Z0lsOWlJaXdnSW1Gc2JFNTFiR3hXWVd4MVpYTWlMQ0FpWkc5aklpd2dJbWx1WkdWdWRDSXNJQ0pwYm1SbGJuUlRkR1Z3SWl3Z0ltTnZiVzFsYm5SVGRISnBibWNpTENBaWFXNWtaVzUwVTJWeElpd2dJbk5wYlhCc1pVdGxlWE1pTENBaWEyVjVRMjl0YldWdWRDSXNJQ0pwYzA1dlpHVWlMQ0FpYVhORGIyeHNaV04wYVc5dUlpd2dJbTF6WnlJc0lDSmxlSEJzYVdOcGRFdGxlU0lzSUNKcGMxTmpZV3hoY2lJc0lDSlRZMkZzWVhJaUxDQWlhMlY1UTI5dGJXVnVkRVJ2Ym1VaUxDQWlZMmh2YlhCTFpXVndJaXdnSW5OMGNpSXNJQ0p6ZEhKcGJtZHBabmtpTENBaWJHbHVaVU52YlcxbGJuUWlMQ0FpZG5OaUlpd2dJblpqWWlJc0lDSjJZV3gxWlVOdmJXMWxiblFpTENBaWFYTlRaWEVpTENBaWRtRnNkV1ZEYjIxdFpXNTBSRzl1WlNJc0lDSjJZV3gxWlZOMGNpSXNJQ0ozY3lJc0lDSmpjeUlzSUNKcGJtUmxiblJEYjIxdFpXNTBJaXdnSW5aek1DSXNJQ0p1YkRBaUxDQWlhR0Z6VG1WM2JHbHVaU0lzSUNKbWJHOTNJaXdnSW1oaGMxQnliM0J6VEdsdVpTSXNJQ0p6Y0RBaUxDQWlkMkZ5YmlJc0lDSnNiMmRNWlhabGJDSXNJQ0ozWVhKdWFXNW5JaXdnSWsxRlVrZEZYMHRGV1NJc0lDSnRaWEpuWlNJc0lDSjJZV3gxWlNJc0lDSlRZMkZzWVhJaUxDQWlZV1JrVFdWeVoyVlViMHBUVFdGd0lpd2dJbWx6VFdWeVoyVkxaWGtpTENBaVkzUjRJaXdnSW10bGVTSXNJQ0pwYzFOallXeGhjaUlzSUNKMFlXY2lMQ0FpYldGd0lpd2dJbWx6UVd4cFlYTWlMQ0FpYVhOVFpYRWlMQ0FpYVhRaUxDQWliV1Z5WjJWV1lXeDFaU0lzSUNKemIzVnlZMlVpTENBaWFYTk5ZWEFpTENBaWMzSmpUV0Z3SWl3Z0ltRmtaRkJoYVhKVWIwcFRUV0Z3SWl3Z0ltTjBlQ0lzSUNKdFlYQWlMQ0FpYTJWNUlpd2dJblpoYkhWbElpd2dJbWx6VG05a1pTSXNJQ0pwYzAxbGNtZGxTMlY1SWl3Z0ltRmtaRTFsY21kbFZHOUtVMDFoY0NJc0lDSnFjMHRsZVNJc0lDSjBiMHBUSWl3Z0luTjBjbWx1WjB0bGVTSXNJQ0p6ZEhKcGJtZHBabmxMWlhraUxDQWlhbk5XWVd4MVpTSXNJQ0p6ZEhKRGRIZ2lMQ0FpWTNKbFlYUmxVM1J5YVc1bmFXWjVRMjl1ZEdWNGRDSXNJQ0p1YjJSbElpd2dJbk4wY2t0bGVTSXNJQ0pxYzI5dVUzUnlJaXdnSW5kaGNtNGlMQ0FpWTNKbFlYUmxVR0ZwY2lJc0lDSnJaWGtpTENBaWRtRnNkV1VpTENBaVkzUjRJaXdnSW1zaUxDQWlZM0psWVhSbFRtOWtaU0lzSUNKMklpd2dJbEJoYVhJaUxDQWlYMUJoYVhJaUxDQWlUazlFUlY5VVdWQkZJaXdnSWxCQlNWSWlMQ0FpYzJOb1pXMWhJaXdnSW1selRtOWtaU0lzSUNKZklpd2dJbkJoYVhJaUxDQWlZV1JrVUdGcGNsUnZTbE5OWVhBaUxDQWliMjVEYjIxdFpXNTBJaXdnSW05dVEyaHZiWEJMWldWd0lpd2dJbk4wY21sdVoybG1lVkJoYVhJaUxDQWljM1J5YVc1bmFXWjVRMjlzYkdWamRHbHZiaUlzSUNKamIyeHNaV04wYVc5dUlpd2dJbU4wZUNJc0lDSnZjSFJwYjI1eklpd2dJbDloSWl3Z0luTjBjbWx1WjJsbWVVWnNiM2REYjJ4c1pXTjBhVzl1SWl3Z0luTjBjbWx1WjJsbWVVSnNiMk5yUTI5c2JHVmpkR2x2YmlJc0lDSmpiMjF0Wlc1MElpd2dJbWwwWlcxeklpd2dJbUpzYjJOclNYUmxiVkJ5WldacGVDSXNJQ0ptYkc5M1EyaGhjbk1pTENBaWFYUmxiVWx1WkdWdWRDSXNJQ0p2YmtOb2IyMXdTMlZsY0NJc0lDSnZia052YlcxbGJuUWlMQ0FpYVc1a1pXNTBJaXdnSW1OdmJXMWxiblJUZEhKcGJtY2lMQ0FpYVhSbGJVTjBlQ0lzSUNKamFHOXRjRXRsWlhBaUxDQWliR2x1WlhNaUxDQWlhU0lzSUNKcGRHVnRJaXdnSW1selRtOWtaU0lzSUNKaFpHUkRiMjF0Wlc1MFFtVm1iM0psSWl3Z0ltbHpVR0ZwY2lJc0lDSnBheUlzSUNKemRISWlMQ0FpYzNSeWFXNW5hV1o1SWl3Z0lteHBibVZEYjIxdFpXNTBJaXdnSW14cGJtVWlMQ0FpYVc1a1pXNTBRMjl0YldWdWRDSXNJQ0pwYm1SbGJuUlRkR1Z3SWl3Z0ltWmpVR0ZrWkdsdVp5SXNJQ0p5WlhGT1pYZHNhVzVsSWl3Z0lteHBibVZ6UVhSV1lXeDFaU0lzSUNKcGRpSXNJQ0p6ZEdGeWRDSXNJQ0psYm1RaUxDQWliR1Z1SWl3Z0luTjFiU0lzSUNKcFl5SXNJQ0ptYVc1a1VHRnBjaUlzSUNKcGRHVnRjeUlzSUNKclpYa2lMQ0FpYXlJc0lDSnBjMU5qWVd4aGNpSXNJQ0pwZENJc0lDSnBjMUJoYVhJaUxDQWlXVUZOVEUxaGNDSXNJQ0pEYjJ4c1pXTjBhVzl1SWl3Z0luTmphR1Z0WVNJc0lDSk5RVkFpTENBaWIySnFJaXdnSW1OMGVDSXNJQ0pyWldWd1ZXNWtaV1pwYm1Wa0lpd2dJbkpsY0d4aFkyVnlJaXdnSW0xaGNDSXNJQ0poWkdRaUxDQWlkbUZzZFdVaUxDQWlZM0psWVhSbFVHRnBjaUlzSUNKd1lXbHlJaXdnSW05MlpYSjNjbWwwWlNJc0lDSmZZU0lzSUNKZmNHRnBjaUlzSUNKUVlXbHlJaXdnSW5CeVpYWWlMQ0FpYzI5eWRFVnVkSEpwWlhNaUxDQWlhWE5UWTJGc1lYSldZV3gxWlNJc0lDSnBJaXdnSW1sMFpXMGlMQ0FpYTJWbGNGTmpZV3hoY2lJc0lDSnViMlJsSWl3Z0lsOGlMQ0FpVkhsd1pTSXNJQ0poWkdSUVlXbHlWRzlLVTAxaGNDSXNJQ0p2YmtOdmJXMWxiblFpTENBaWIyNURhRzl0Y0V0bFpYQWlMQ0FpYzNSeWFXNW5hV1o1UTI5c2JHVmpkR2x2YmlJc0lDSnRZWEFpTENBaVdVRk5URTFoY0NJc0lDSnZia1Z5Y205eUlpd2dJbWx6VFdGd0lpd2dJbk5qYUdWdFlTSXNJQ0p2WW1vaUxDQWlZM1I0SWl3Z0lsbEJUVXhUWlhFaUxDQWlRMjlzYkdWamRHbHZiaUlzSUNKelkyaGxiV0VpTENBaVUwVlJJaXdnSW5aaGJIVmxJaXdnSW10bGVTSXNJQ0pwWkhnaUxDQWlZWE5KZEdWdFNXNWtaWGdpTENBaWEyVmxjRk5qWVd4aGNpSXNJQ0pwZENJc0lDSnBjMU5qWVd4aGNpSXNJQ0p3Y21WMklpd2dJbWx6VTJOaGJHRnlWbUZzZFdVaUxDQWlYeUlzSUNKamRIZ2lMQ0FpYzJWeElpd2dJbWtpTENBaWFYUmxiU0lzSUNKMGIwcFRJaXdnSW05dVEyOXRiV1Z1ZENJc0lDSnZia05vYjIxd1MyVmxjQ0lzSUNKemRISnBibWRwWm5sRGIyeHNaV04wYVc5dUlpd2dJbTlpYWlJc0lDSnlaWEJzWVdObGNpSXNJQ0pqY21WaGRHVk9iMlJsSWl3Z0luTmxjU0lzSUNKWlFVMU1VMlZ4SWl3Z0ltOXVSWEp5YjNJaUxDQWlhWE5UWlhFaUxDQWljMk5vWlcxaElpd2dJbTlpYWlJc0lDSmpkSGdpTENBaWMzUnlhVzVuSWl3Z0luWmhiSFZsSWl3Z0luTjBjaUlzSUNKcGRHVnRJaXdnSW1OMGVDSXNJQ0p2YmtOdmJXMWxiblFpTENBaWIyNURhRzl0Y0V0bFpYQWlMQ0FpYzNSeWFXNW5hV1o1VTNSeWFXNW5JaXdnSW01MWJHeFVZV2NpTENBaWRtRnNkV1VpTENBaVUyTmhiR0Z5SWl3Z0luTnZkWEpqWlNJc0lDSmpkSGdpTENBaVltOXZiRlJoWnlJc0lDSjJZV3gxWlNJc0lDSnpkSElpTENBaVUyTmhiR0Z5SWl3Z0luTnZkWEpqWlNJc0lDSmpkSGdpTENBaWMzWWlMQ0FpYzNSeWFXNW5hV1o1VG5WdFltVnlJaXdnSW1admNtMWhkQ0lzSUNKdGFXNUdjbUZqZEdsdmJrUnBaMmwwY3lJc0lDSjBZV2NpTENBaWRtRnNkV1VpTENBaWJuVnRJaXdnSW00aUxDQWlhU0lzSUNKa0lpd2dJbVpzYjJGMFRtRk9JaXdnSW5aaGJIVmxJaXdnSW5OMGNpSXNJQ0p6ZEhKcGJtZHBabmxPZFcxaVpYSWlMQ0FpWm14dllYUkZlSEFpTENBaWJtOWtaU0lzSUNKdWRXMGlMQ0FpWm14dllYUWlMQ0FpVTJOaGJHRnlJaXdnSW1SdmRDSXNJQ0pwYm5SSlpHVnVkR2xtZVNJc0lDSjJZV3gxWlNJc0lDSnBiblJTWlhOdmJIWmxJaXdnSW5OMGNpSXNJQ0p2Wm1aelpYUWlMQ0FpY21Ga2FYZ2lMQ0FpYVc1MFFYTkNhV2RKYm5RaUxDQWlhVzUwVTNSeWFXNW5hV1o1SWl3Z0ltNXZaR1VpTENBaWNISmxabWw0SWl3Z0luTjBjbWx1WjJsbWVVNTFiV0psY2lJc0lDSnBiblJQWTNRaUxDQWlYMjl1UlhKeWIzSWlMQ0FpYjNCMElpd2dJbWx1ZENJc0lDSnBiblJJWlhnaUxDQWljMk5vWlcxaElpd2dJbTFoY0NJc0lDSnpaWEVpTENBaWMzUnlhVzVuSWl3Z0ltNTFiR3hVWVdjaUxDQWlZbTl2YkZSaFp5SXNJQ0pwYm5SUFkzUWlMQ0FpYVc1MElpd2dJbWx1ZEVobGVDSXNJQ0ptYkc5aGRFNWhUaUlzSUNKbWJHOWhkRVY0Y0NJc0lDSm1iRzloZENJc0lDSnBiblJKWkdWdWRHbG1lU0lzSUNKMllXeDFaU0lzSUNKemRISnBibWRwWm5sS1UwOU9JaXdnSW1wemIyNVRZMkZzWVhKeklpd2dJbk4wY2lJc0lDSlRZMkZzWVhJaUxDQWlYMjl1UlhKeWIzSWlMQ0FpYVc1MFFYTkNhV2RKYm5RaUxDQWlhbk52YmtWeWNtOXlJaXdnSW05dVJYSnliM0lpTENBaWMyTm9aVzFoSWl3Z0ltMWhjQ0lzSUNKelpYRWlMQ0FpWW1sdVlYSjVJaXdnSW5aaGJIVmxJaXdnSW5OeVl5SXNJQ0p2YmtWeWNtOXlJaXdnSW5OMGNpSXNJQ0ppZFdabVpYSWlMQ0FpYVNJc0lDSmpiMjF0Wlc1MElpd2dJblI1Y0dVaUxDQWlZM1I0SWl3Z0ltOXVRMjl0YldWdWRDSXNJQ0p2YmtOb2IyMXdTMlZsY0NJc0lDSmlkV1lpTENBaWN5SXNJQ0pUWTJGc1lYSWlMQ0FpYkdsdVpWZHBaSFJvSWl3Z0ltNGlMQ0FpYkdsdVpYTWlMQ0FpYnlJc0lDSnpkSEpwYm1kcFpubFRkSEpwYm1jaUxDQWljbVZ6YjJ4MlpWQmhhWEp6SWl3Z0luTmxjU0lzSUNKdmJrVnljbTl5SWl3Z0lsOWhJaXdnSW1selUyVnhJaXdnSW1raUxDQWlhWFJsYlNJc0lDSnBjMUJoYVhJaUxDQWlhWE5OWVhBaUxDQWljR0ZwY2lJc0lDSlFZV2x5SWl3Z0lsTmpZV3hoY2lJc0lDSmpiaUlzSUNKamNtVmhkR1ZRWVdseWN5SXNJQ0p6WTJobGJXRWlMQ0FpYVhSbGNtRmliR1VpTENBaVkzUjRJaXdnSW5KbGNHeGhZMlZ5SWl3Z0luQmhhWEp6SWl3Z0lsbEJUVXhUWlhFaUxDQWlhWFFpTENBaWEyVjVJaXdnSW5aaGJIVmxJaXdnSW10bGVYTWlMQ0FpWTNKbFlYUmxVR0ZwY2lJc0lDSlpRVTFNVDAxaGNDSXNJQ0pmV1VGTlRFOU5ZWEFpTENBaVdVRk5URk5sY1NJc0lDSlpRVTFNVFdGd0lpd2dJbDhpTENBaVkzUjRJaXdnSW0xaGNDSXNJQ0p3WVdseUlpd2dJbXRsZVNJc0lDSjJZV3gxWlNJc0lDSnBjMUJoYVhJaUxDQWlkRzlLVXlJc0lDSnpZMmhsYldFaUxDQWlhWFJsY21GaWJHVWlMQ0FpY0dGcGNuTWlMQ0FpWTNKbFlYUmxVR0ZwY25NaUxDQWliMjFoY0NJc0lDSnpaWEVpTENBaWIyNUZjbkp2Y2lJc0lDSnlaWE52YkhabFVHRnBjbk1pTENBaWMyVmxia3RsZVhNaUxDQWlhWE5UWTJGc1lYSWlMQ0FpWW05dmJGTjBjbWx1WjJsbWVTSXNJQ0oyWVd4MVpTSXNJQ0p6YjNWeVkyVWlMQ0FpWTNSNElpd2dJblJ5ZFdWVVlXY2lMQ0FpWm1Gc2MyVlVZV2NpTENBaVUyTmhiR0Z5SWl3Z0ltWnNiMkYwVG1GT0lpd2dJblpoYkhWbElpd2dJbk4wY2lJc0lDSnpkSEpwYm1kcFpubE9kVzFpWlhJaUxDQWlabXh2WVhSRmVIQWlMQ0FpYm05a1pTSXNJQ0p1ZFcwaUxDQWlabXh2WVhRaUxDQWlVMk5oYkdGeUlpd2dJbVJ2ZENJc0lDSm1JaXdnSW1sdWRFbGtaVzUwYVdaNUlpd2dJblpoYkhWbElpd2dJbWx1ZEZKbGMyOXNkbVVpTENBaWMzUnlJaXdnSW05bVpuTmxkQ0lzSUNKeVlXUnBlQ0lzSUNKcGJuUkJjMEpwWjBsdWRDSXNJQ0p6YVdkdUlpd2dJbTRpTENBaWFXNTBVM1J5YVc1bmFXWjVJaXdnSW01dlpHVWlMQ0FpY0hKbFptbDRJaXdnSW5OMGNtbHVaMmxtZVU1MWJXSmxjaUlzSUNKcGJuUkNhVzRpTENBaVgyOXVSWEp5YjNJaUxDQWliM0IwSWl3Z0ltbHVkRTlqZENJc0lDSnBiblFpTENBaWFXNTBTR1Y0SWl3Z0lsbEJUVXhUWlhRaUxDQWlYMWxCVFV4VFpYUWlMQ0FpV1VGTlRFMWhjQ0lzSUNKelkyaGxiV0VpTENBaWEyVjVJaXdnSW5CaGFYSWlMQ0FpYVhOUVlXbHlJaXdnSWxCaGFYSWlMQ0FpWm1sdVpGQmhhWElpTENBaWEyVmxjRkJoYVhJaUxDQWlhWE5UWTJGc1lYSWlMQ0FpZG1Gc2RXVWlMQ0FpY0hKbGRpSXNJQ0pmSWl3Z0ltTjBlQ0lzSUNKdmJrTnZiVzFsYm5RaUxDQWliMjVEYUc5dGNFdGxaWEFpTENBaWFYUmxjbUZpYkdVaUxDQWljbVZ3YkdGalpYSWlMQ0FpYzJWMElpd2dJbU55WldGMFpWQmhhWElpTENBaWJXRndJaXdnSW05dVJYSnliM0lpTENBaWFYTk5ZWEFpTENBaWNHRnljMlZUWlhoaFoyVnphVzFoYkNJc0lDSnpkSElpTENBaVlYTkNhV2RKYm5RaUxDQWljMmxuYmlJc0lDSndZWEowY3lJc0lDSnVkVzBpTENBaWJpSXNJQ0p5WlhNaUxDQWljQ0lzSUNKemRISnBibWRwWm5sVFpYaGhaMlZ6YVcxaGJDSXNJQ0p1YjJSbElpd2dJblpoYkhWbElpd2dJbk4wY21sdVoybG1lVTUxYldKbGNpSXNJQ0pmTmpBaUxDQWlhVzUwVkdsdFpTSXNJQ0pmYjI1RmNuSnZjaUlzSUNKcGJuUkJjMEpwWjBsdWRDSXNJQ0ptYkc5aGRGUnBiV1VpTENBaWRHbHRaWE4wWVcxd0lpd2dJbTFoZEdOb0lpd2dJbmxsWVhJaUxDQWliVzl1ZEdnaUxDQWlaR0Y1SWl3Z0ltaHZkWElpTENBaWJXbHVkWFJsSWl3Z0luTmxZMjl1WkNJc0lDSnRhV3hzYVhObFl5SXNJQ0prWVhSbElpd2dJblI2SWl3Z0luTmphR1Z0WVNJc0lDSnRZWEFpTENBaWMyVnhJaXdnSW5OMGNtbHVaeUlzSUNKdWRXeHNWR0ZuSWl3Z0luUnlkV1ZVWVdjaUxDQWlabUZzYzJWVVlXY2lMQ0FpYVc1MFFtbHVJaXdnSW1sdWRFOWpkQ0lzSUNKcGJuUWlMQ0FpYVc1MFNHVjRJaXdnSW1ac2IyRjBUbUZPSWl3Z0ltWnNiMkYwUlhod0lpd2dJbVpzYjJGMElpd2dJbUpwYm1GeWVTSXNJQ0p0WlhKblpTSXNJQ0p2YldGd0lpd2dJbkJoYVhKeklpd2dJbk5sZENJc0lDSnBiblJVYVcxbElpd2dJbVpzYjJGMFZHbHRaU0lzSUNKMGFXMWxjM1JoYlhBaUxDQWljMk5vWlcxaGN5SXNJQ0p6WTJobGJXRWlMQ0FpYldGd0lpd2dJbk5sY1NJc0lDSnpkSEpwYm1jaUxDQWlkR0ZuYzBKNVRtRnRaU0lzSUNKaWFXNWhjbmtpTENBaVltOXZiRlJoWnlJc0lDSm1iRzloZENJc0lDSm1iRzloZEVWNGNDSXNJQ0ptYkc5aGRFNWhUaUlzSUNKbWJHOWhkRlJwYldVaUxDQWlhVzUwSWl3Z0ltbHVkRWhsZUNJc0lDSnBiblJQWTNRaUxDQWlhVzUwVkdsdFpTSXNJQ0p0WlhKblpTSXNJQ0p1ZFd4c1ZHRm5JaXdnSW05dFlYQWlMQ0FpY0dGcGNuTWlMQ0FpYzJWMElpd2dJblJwYldWemRHRnRjQ0lzSUNKamIzSmxTMjV2ZDI1VVlXZHpJaXdnSW1kbGRGUmhaM01pTENBaVkzVnpkRzl0VkdGbmN5SXNJQ0p6WTJobGJXRk9ZVzFsSWl3Z0ltRmtaRTFsY21kbFZHRm5JaXdnSW5OamFHVnRZVlJoWjNNaUxDQWlkR0ZuY3lJc0lDSnJaWGx6SWl3Z0ltdGxlU0lzSUNKMFlXY2lMQ0FpZEdGblQySnFJaXdnSW5SaFowNWhiV1VpTENBaWMyOXlkRTFoY0VWdWRISnBaWE5DZVV0bGVTSXNJQ0poSWl3Z0ltSWlMQ0FpVTJOb1pXMWhJaXdnSWw5VFkyaGxiV0VpTENBaVkyOXRjR0YwSWl3Z0ltTjFjM1J2YlZSaFozTWlMQ0FpYldWeVoyVWlMQ0FpY21WemIyeDJaVXR1YjNkdVZHRm5jeUlzSUNKelkyaGxiV0VpTENBaWMyOXlkRTFoY0VWdWRISnBaWE1pTENBaWRHOVRkSEpwYm1kRVpXWmhkV3gwY3lJc0lDSm5aWFJVWVdkeklpd2dJbU52Y21WTGJtOTNibFJoWjNNaUxDQWlUVUZRSWl3Z0ltMWhjQ0lzSUNKVFEwRk1RVklpTENBaWMzUnlhVzVuSWl3Z0lsTkZVU0lzSUNKelpYRWlMQ0FpWTI5d2VTSXNJQ0p6ZEhKcGJtZHBabmxFYjJOMWJXVnVkQ0lzSUNKa2IyTWlMQ0FpYjNCMGFXOXVjeUlzSUNKZllTSXNJQ0pzYVc1bGN5SXNJQ0pvWVhORWFYSmxZM1JwZG1Weklpd2dJbVJwY2lJc0lDSmpkSGdpTENBaVkzSmxZWFJsVTNSeWFXNW5hV1o1UTI5dWRHVjRkQ0lzSUNKamIyMXRaVzUwVTNSeWFXNW5JaXdnSW1Oeklpd2dJbWx1WkdWdWRFTnZiVzFsYm5RaUxDQWlZMmh2YlhCTFpXVndJaXdnSW1OdmJuUmxiblJEYjIxdFpXNTBJaXdnSW1selRtOWtaU0lzSUNKdmJrTm9iMjF3UzJWbGNDSXNJQ0ppYjJSNUlpd2dJbk4wY21sdVoybG1lU0lzSUNKc2FXNWxRMjl0YldWdWRDSXNJQ0prWXlJc0lDSkViMk4xYldWdWRDSXNJQ0pmUkc5amRXMWxiblFpTENBaWRtRnNkV1VpTENBaWNtVndiR0ZqWlhJaUxDQWliM0IwYVc5dWN5SXNJQ0pPVDBSRlgxUlpVRVVpTENBaVJFOURJaXdnSWw5eVpYQnNZV05sY2lJc0lDSnZjSFFpTENBaWRtVnljMmx2YmlJc0lDSkVhWEpsWTNScGRtVnpJaXdnSW1OdmNIa2lMQ0FpYVhOT2IyUmxJaXdnSW1GemMyVnlkRU52Ykd4bFkzUnBiMjRpTENBaWNHRjBhQ0lzSUNKdWIyUmxJaXdnSW01aGJXVWlMQ0FpY0hKbGRpSXNJQ0poYm1Ob2IzSk9ZVzFsY3lJc0lDSm1hVzVrVG1WM1FXNWphRzl5SWl3Z0lrRnNhV0Z6SWl3Z0ltdGxlVlJ2VTNSeUlpd2dJbllpTENBaVlYTlRkSElpTENBaVlXeHBZWE5FZFhCc2FXTmhkR1ZQWW1wbFkzUnpJaXdnSW1GdVkyaHZjbEJ5WldacGVDSXNJQ0ptYkc5M0lpd2dJbXRsWlhCVmJtUmxabWx1WldRaUxDQWliMjVVWVdkUFltb2lMQ0FpZEdGbklpd2dJbTl1UVc1amFHOXlJaXdnSW5ObGRFRnVZMmh2Y25NaUxDQWljMjkxY21ObFQySnFaV04wY3lJc0lDSmpjbVZoZEdWT2IyUmxRVzVqYUc5eWN5SXNJQ0pqZEhnaUxDQWlZM0psWVhSbFRtOWtaU0lzSUNKcGMwTnZiR3hsWTNScGIyNGlMQ0FpYTJWNUlpd2dJbXNpTENBaVVHRnBjaUlzSUNKcGMwVnRjSFI1VUdGMGFDSXNJQ0pyWldWd1UyTmhiR0Z5SWl3Z0ltbHpVMk5oYkdGeUlpd2dJbU52Ykd4bFkzUnBiMjVHY205dFVHRjBhQ0lzSUNKemRpSXNJQ0pUWTJobGJXRWlMQ0FpYW5OdmJpSXNJQ0pxYzI5dVFYSm5JaXdnSW0xaGNFRnpUV0Z3SWl3Z0ltMWhlRUZzYVdGelEyOTFiblFpTENBaWNtVjJhWFpsY2lJc0lDSnlaWE1pTENBaWRHOUtVeUlzSUNKamIzVnVkQ0lzSUNKaGNIQnNlVkpsZG1sMlpYSWlMQ0FpY3lJc0lDSnpkSEpwYm1kcFpubEViMk4xYldWdWRDSXNJQ0pqYjI1MFpXNTBjeUlzSUNKWlFVMU1SWEp5YjNJaUxDQWlibUZ0WlNJc0lDSndiM01pTENBaVkyOWtaU0lzSUNKdFpYTnpZV2RsSWl3Z0lsbEJUVXhRWVhKelpVVnljbTl5SWl3Z0lsbEJUVXhYWVhKdWFXNW5JaXdnSW5CeVpYUjBhV1o1UlhKeWIzSWlMQ0FpYzNKaklpd2dJbXhqSWl3Z0ltVnljbTl5SWl3Z0lteHBibVVpTENBaVkyOXNJaXdnSW1OcElpd2dJbXhwYm1WVGRISWlMQ0FpZEhKcGJWTjBZWEowSWl3Z0luQnlaWFlpTENBaVkyOTFiblFpTENBaVpXNWtJaXdnSW5CdmFXNTBaWElpTENBaWNtVnpiMngyWlZCeWIzQnpJaXdnSW5SdmEyVnVjeUlzSUNKbWJHOTNJaXdnSW1sdVpHbGpZWFJ2Y2lJc0lDSnVaWGgwSWl3Z0ltOW1abk5sZENJc0lDSnZia1Z5Y205eUlpd2dJbkJoY21WdWRFbHVaR1Z1ZENJc0lDSnpkR0Z5ZEU5dVRtVjNiR2x1WlNJc0lDSnpjR0ZqWlVKbFptOXlaU0lzSUNKaGRFNWxkMnhwYm1VaUxDQWlhR0Z6VTNCaFkyVWlMQ0FpWTI5dGJXVnVkQ0lzSUNKamIyMXRaVzUwVTJWd0lpd2dJbWhoYzA1bGQyeHBibVVpTENBaWNtVnhVM0JoWTJVaUxDQWlkR0ZpSWl3Z0ltRnVZMmh2Y2lJc0lDSjBZV2NpTENBaWJtVjNiR2x1WlVGbWRHVnlVSEp2Y0NJc0lDSmpiMjF0WVNJc0lDSm1iM1Z1WkNJc0lDSnpkR0Z5ZENJc0lDSjBiMnRsYmlJc0lDSmpZaUlzSUNKc1lYTjBJaXdnSW1WdVpDSXNJQ0pqYjI1MFlXbHVjMDVsZDJ4cGJtVWlMQ0FpYTJWNUlpd2dJbk4wSWl3Z0ltbDBJaXdnSW1ac2IzZEpibVJsYm5SRGFHVmpheUlzSUNKcGJtUmxiblFpTENBaVptTWlMQ0FpYjI1RmNuSnZjaUlzSUNKbGJtUWlMQ0FpWTI5dWRHRnBibk5PWlhkc2FXNWxJaXdnSW0xaGNFbHVZMngxWkdWeklpd2dJbU4wZUNJc0lDSnBkR1Z0Y3lJc0lDSnpaV0Z5WTJnaUxDQWlkVzVwY1hWbFMyVjVjeUlzSUNKcGMwVnhkV0ZzSWl3Z0ltRWlMQ0FpWWlJc0lDSnBjMU5qWVd4aGNpSXNJQ0p3WVdseUlpd2dJbk4wWVhKMFEyOXNUWE5uSWl3Z0luSmxjMjlzZG1WQ2JHOWphMDFoY0NJc0lDSmpiMjF3YjNObFRtOWtaU0lzSUNKamIyMXdiM05sUlcxd2RIbE9iMlJsSWl3Z0ltTjBlQ0lzSUNKaWJTSXNJQ0p2YmtWeWNtOXlJaXdnSW5SaFp5SXNJQ0pmWVNJc0lDSmZZaUlzSUNKT2IyUmxRMnhoYzNNaUxDQWlXVUZOVEUxaGNDSXNJQ0p0WVhBaUxDQWliMlptYzJWMElpd2dJbU52YlcxbGJuUkZibVFpTENBaVkyOXNiRWwwWlcwaUxDQWljM1JoY25RaUxDQWlhMlY1SWl3Z0luTmxjQ0lzSUNKMllXeDFaU0lzSUNKclpYbFFjbTl3Y3lJc0lDSnlaWE52YkhabFVISnZjSE1pTENBaWFXMXdiR2xqYVhSTFpYa2lMQ0FpWTI5dWRHRnBibk5PWlhkc2FXNWxJaXdnSW10bGVWTjBZWEowSWl3Z0ltdGxlVTV2WkdVaUxDQWlabXh2ZDBsdVpHVnVkRU5vWldOcklpd2dJbTFoY0VsdVkyeDFaR1Z6SWl3Z0luWmhiSFZsVUhKdmNITWlMQ0FpZG1Gc2RXVk9iMlJsSWl3Z0luQmhhWElpTENBaVVHRnBjaUlzSUNKeVpYTnZiSFpsUW14dlkydFRaWEVpTENBaVkyOXRjRzl6WlU1dlpHVWlMQ0FpWTI5dGNHOXpaVVZ0Y0hSNVRtOWtaU0lzSUNKamRIZ2lMQ0FpWW5NaUxDQWliMjVGY25KdmNpSXNJQ0owWVdjaUxDQWlYMkVpTENBaVRtOWtaVU5zWVhOeklpd2dJbGxCVFV4VFpYRWlMQ0FpYzJWeElpd2dJbTltWm5ObGRDSXNJQ0pqYjIxdFpXNTBSVzVrSWl3Z0luTjBZWEowSWl3Z0luWmhiSFZsSWl3Z0luQnliM0J6SWl3Z0luSmxjMjlzZG1WUWNtOXdjeUlzSUNKdWIyUmxJaXdnSW1ac2IzZEpibVJsYm5SRGFHVmpheUlzSUNKeVpYTnZiSFpsUlc1a0lpd2dJbVZ1WkNJc0lDSnZabVp6WlhRaUxDQWljbVZ4VTNCaFkyVWlMQ0FpYjI1RmNuSnZjaUlzSUNKamIyMXRaVzUwSWl3Z0ltaGhjMU53WVdObElpd2dJbk5sY0NJc0lDSjBiMnRsYmlJc0lDSnpiM1Z5WTJVaUxDQWlkSGx3WlNJc0lDSmpZaUlzSUNKaWJHOWphMDF6WnlJc0lDSnBjMEpzYjJOcklpd2dJblJ2YTJWdUlpd2dJbkpsYzI5c2RtVkdiRzkzUTI5c2JHVmpkR2x2YmlJc0lDSmpiMjF3YjNObFRtOWtaU0lzSUNKamIyMXdiM05sUlcxd2RIbE9iMlJsSWl3Z0ltTjBlQ0lzSUNKbVl5SXNJQ0p2YmtWeWNtOXlJaXdnSW5SaFp5SXNJQ0pmWVNJc0lDSmZZaUlzSUNKcGMwMWhjQ0lzSUNKbVkwNWhiV1VpTENBaVRtOWtaVU5zWVhOeklpd2dJbGxCVFV4TllYQWlMQ0FpV1VGTlRGTmxjU0lzSUNKamIyeHNJaXdnSW1GMFVtOXZkQ0lzSUNKdlptWnpaWFFpTENBaWFTSXNJQ0pqYjJ4c1NYUmxiU0lzSUNKemRHRnlkQ0lzSUNKclpYa2lMQ0FpYzJWd0lpd2dJblpoYkhWbElpd2dJbkJ5YjNCeklpd2dJbkpsYzI5c2RtVlFjbTl3Y3lJc0lDSmpiMjUwWVdsdWMwNWxkMnhwYm1VaUxDQWljSEpsZGtsMFpXMURiMjF0Wlc1MElpd2dJbXh2YjNBaUxDQWljM1FpTENBaWNISmxkaUlzSUNKcGMxQmhhWElpTENBaWRtRnNkV1ZPYjJSbElpd2dJbXRsZVZOMFlYSjBJaXdnSW10bGVVNXZaR1VpTENBaWRtRnNkV1ZRY205d2N5SXNJQ0p3WVdseUlpd2dJbEJoYVhJaUxDQWliV0Z3SWl3Z0ltMWhjRWx1WTJ4MVpHVnpJaXdnSW1WdVpGSmhibWRsSWl3Z0ltVjRjR1ZqZEdWa1JXNWtJaXdnSW1ObElpd2dJbVZsSWl3Z0ltTmxVRzl6SWl3Z0ltNWhiV1VpTENBaWJYTm5JaXdnSW1WdVpDSXNJQ0p5WlhOdmJIWmxSVzVrSWl3Z0luSmxjMjlzZG1WRGIyeHNaV04wYVc5dUlpd2dJa05PSWl3Z0ltTjBlQ0lzSUNKMGIydGxiaUlzSUNKdmJrVnljbTl5SWl3Z0luUmhaMDVoYldVaUxDQWlkR0ZuSWl3Z0ltTnZiR3dpTENBaWNtVnpiMngyWlVKc2IyTnJUV0Z3SWl3Z0luSmxjMjlzZG1WQ2JHOWphMU5sY1NJc0lDSnlaWE52YkhabFJteHZkME52Ykd4bFkzUnBiMjRpTENBaVEyOXNiQ0lzSUNKamIyMXdiM05sUTI5c2JHVmpkR2x2YmlJc0lDSndjbTl3Y3lJc0lDSmZZU0lzSUNKZllpSXNJQ0owWVdkVWIydGxiaUlzSUNKdGMyY2lMQ0FpWVc1amFHOXlJaXdnSW01c0lpd2dJbXhoYzNSUWNtOXdJaXdnSW1WNGNGUjVjR1VpTENBaVdVRk5URTFoY0NJc0lDSlpRVTFNVTJWeElpd2dJblFpTENBaWEzUWlMQ0FpY21Weklpd2dJbTV2WkdVaUxDQWlhWE5PYjJSbElpd2dJbE5qWVd4aGNpSXNJQ0p5WlhOdmJIWmxRbXh2WTJ0VFkyRnNZWElpTENBaVkzUjRJaXdnSW5OallXeGhjaUlzSUNKdmJrVnljbTl5SWl3Z0luTjBZWEowSWl3Z0ltaGxZV1JsY2lJc0lDSndZWEp6WlVKc2IyTnJVMk5oYkdGeVNHVmhaR1Z5SWl3Z0luUjVjR1VpTENBaVUyTmhiR0Z5SWl3Z0lteHBibVZ6SWl3Z0luTndiR2wwVEdsdVpYTWlMQ0FpWTJodmJYQlRkR0Z5ZENJc0lDSnBJaXdnSW1OdmJuUmxiblFpTENBaWRtRnNkV1VpTENBaVpXNWtJaXdnSW5SeWFXMUpibVJsYm5RaUxDQWliMlptYzJWMElpd2dJbU52Ym5SbGJuUlRkR0Z5ZENJc0lDSnBibVJsYm5RaUxDQWljMlZ3SWl3Z0luQnlaWFpOYjNKbFNXNWtaVzUwWldRaUxDQWlZM0pzWmlJc0lDSnRaWE56WVdkbElpd2dJbkJ5YjNCeklpd2dJbk4wY21samRDSXNJQ0p6YjNWeVkyVWlMQ0FpYlc5a1pTSXNJQ0pqYUc5dGNDSXNJQ0psY25KdmNpSXNJQ0pqYUNJc0lDSnVJaXdnSW1oaGMxTndZV05sSWl3Z0ltTnZiVzFsYm5RaUxDQWliR1Z1WjNSb0lpd2dJblJ2YTJWdUlpd2dJblJ6SWl3Z0luTndiR2wwSWl3Z0ltWnBjbk4wSWl3Z0ltMGlMQ0FpY21WemIyeDJaVVpzYjNkVFkyRnNZWElpTENBaWMyTmhiR0Z5SWl3Z0luTjBjbWxqZENJc0lDSnZia1Z5Y205eUlpd2dJbTltWm5ObGRDSXNJQ0owZVhCbElpd2dJbk52ZFhKalpTSXNJQ0psYm1RaUxDQWlYM1I1Y0dVaUxDQWlkbUZzZFdVaUxDQWlYMjl1UlhKeWIzSWlMQ0FpY21Wc0lpd2dJbU52WkdVaUxDQWliWE5uSWl3Z0lsTmpZV3hoY2lJc0lDSndiR0ZwYmxaaGJIVmxJaXdnSW5OcGJtZHNaVkYxYjNSbFpGWmhiSFZsSWl3Z0ltUnZkV0pzWlZGMWIzUmxaRlpoYkhWbElpd2dJblpoYkhWbFJXNWtJaXdnSW5KbElpd2dJbkpsYzI5c2RtVkZibVFpTENBaVltRmtRMmhoY2lJc0lDSm1iMnhrVEdsdVpYTWlMQ0FpWDJFaUxDQWlabWx5YzNRaUxDQWliR2x1WlNJc0lDSmxJaXdnSW0xaGRHTm9JaXdnSW5KbGN5SXNJQ0p6WlhBaUxDQWljRzl6SWl3Z0lteGhjM1FpTENBaWFTSXNJQ0pqYUNJc0lDSm1iMnhrSWl3Z0ltWnZiR1JPWlhkc2FXNWxJaXdnSW01bGVIUWlMQ0FpWTJNaUxDQWlaWE5qWVhCbFEyOWtaWE1pTENBaWJHVnVaM1JvSWl3Z0luQmhjbk5sUTJoaGNrTnZaR1VpTENBaWNtRjNJaXdnSW5kelUzUmhjblFpTENBaVkyOXRjRzl6WlZOallXeGhjaUlzSUNKamRIZ2lMQ0FpZEc5clpXNGlMQ0FpZEdGblZHOXJaVzRpTENBaWIyNUZjbkp2Y2lJc0lDSjJZV3gxWlNJc0lDSjBlWEJsSWl3Z0ltTnZiVzFsYm5RaUxDQWljbUZ1WjJVaUxDQWljbVZ6YjJ4MlpVSnNiMk5yVTJOaGJHRnlJaXdnSW5KbGMyOXNkbVZHYkc5M1UyTmhiR0Z5SWl3Z0luUmhaMDVoYldVaUxDQWliWE5uSWl3Z0luUmhaeUlzSUNKVFEwRk1RVklpTENBaVptbHVaRk5qWVd4aGNsUmhaMEo1VG1GdFpTSXNJQ0ptYVc1a1UyTmhiR0Z5VkdGblFubFVaWE4wSWl3Z0luTmpZV3hoY2lJc0lDSnlaWE1pTENBaWFYTlRZMkZzWVhJaUxDQWlVMk5oYkdGeUlpd2dJbVZ5Y205eUlpd2dJbk5qYUdWdFlTSXNJQ0pmWVNJc0lDSnRZWFJqYUZkcGRHaFVaWE4wSWl3Z0ltdDBJaXdnSW1GMFMyVjVJaXdnSW1ScGNtVmpkR2wyWlhNaUxDQWlZMjl0Y0dGMElpd2dJblJ6SWl3Z0ltTnpJaXdnSW1WdGNIUjVVMk5oYkdGeVVHOXphWFJwYjI0aUxDQWliMlptYzJWMElpd2dJbUpsWm05eVpTSXNJQ0p3YjNNaUxDQWlhU0lzSUNKemRDSXNJQ0pEVGlJc0lDSmpiMjF3YjNObFRtOWtaU0lzSUNKamIyMXdiM05sUlcxd2RIbE9iMlJsSWl3Z0ltTjBlQ0lzSUNKMGIydGxiaUlzSUNKd2NtOXdjeUlzSUNKdmJrVnljbTl5SWl3Z0ltRjBTMlY1SWl3Z0luTndZV05sUW1WbWIzSmxJaXdnSW1OdmJXMWxiblFpTENBaVlXNWphRzl5SWl3Z0luUmhaeUlzSUNKdWIyUmxJaXdnSW1selUzSmpWRzlyWlc0aUxDQWlZMjl0Y0c5elpVRnNhV0Z6SWl3Z0ltTnZiWEJ2YzJWVFkyRnNZWElpTENBaVkyOXRjRzl6WlVOdmJHeGxZM1JwYjI0aUxDQWliV1Z6YzJGblpTSXNJQ0pwYzFOallXeGhjaUlzSUNKdlptWnpaWFFpTENBaVltVm1iM0psSWl3Z0luQnZjeUlzSUNKbGJtUWlMQ0FpWlcxd2RIbFRZMkZzWVhKUWIzTnBkR2x2YmlJc0lDSnZjSFJwYjI1eklpd2dJbk52ZFhKalpTSXNJQ0poYkdsaGN5SXNJQ0pCYkdsaGN5SXNJQ0oyWVd4MVpVVnVaQ0lzSUNKeVpTSXNJQ0p5WlhOdmJIWmxSVzVrSWl3Z0ltTnZiWEJ2YzJWRWIyTWlMQ0FpYjNCMGFXOXVjeUlzSUNKa2FYSmxZM1JwZG1Weklpd2dJbTltWm5ObGRDSXNJQ0p6ZEdGeWRDSXNJQ0oyWVd4MVpTSXNJQ0psYm1RaUxDQWliMjVGY25KdmNpSXNJQ0p2Y0hSeklpd2dJbVJ2WXlJc0lDSkViMk4xYldWdWRDSXNJQ0pqZEhnaUxDQWljSEp2Y0hNaUxDQWljbVZ6YjJ4MlpWQnliM0J6SWl3Z0ltTnZiWEJ2YzJWT2IyUmxJaXdnSW1OdmJYQnZjMlZGYlhCMGVVNXZaR1VpTENBaVkyOXVkR1Z1ZEVWdVpDSXNJQ0p5WlNJc0lDSnlaWE52YkhabFJXNWtJaXdnSW1kbGRFVnljbTl5VUc5eklpd2dJbk55WXlJc0lDSnZabVp6WlhRaUxDQWljMjkxY21ObElpd2dJbkJoY25ObFVISmxiSFZrWlNJc0lDSndjbVZzZFdSbElpd2dJbDloSWl3Z0ltTnZiVzFsYm5RaUxDQWlZWFJEYjIxdFpXNTBJaXdnSW1GbWRHVnlSVzF3ZEhsTWFXNWxJaXdnSWtOdmJYQnZjMlZ5SWl3Z0ltOXdkR2x2Ym5NaUxDQWlZMjlrWlNJc0lDSnRaWE56WVdkbElpd2dJbmRoY201cGJtY2lMQ0FpY0c5eklpd2dJbGxCVFV4WFlYSnVhVzVuSWl3Z0lsbEJUVXhRWVhKelpVVnljbTl5SWl3Z0lrUnBjbVZqZEdsMlpYTWlMQ0FpWkc5aklpd2dJbUZtZEdWeVJHOWpJaXdnSW1Saklpd2dJbWx6UTI5c2JHVmpkR2x2YmlJc0lDSnBkQ0lzSUNKcGMxQmhhWElpTENBaVkySWlMQ0FpZEc5clpXNXpJaXdnSW1admNtTmxSRzlqSWl3Z0ltVnVaRTltWm5ObGRDSXNJQ0owYjJ0bGJpSXNJQ0pmWDNscFpXeGtVM1JoY2lJc0lDSmpiMjF3YjNObFJHOWpJaXdnSW0xelp5SXNJQ0psY25KdmNpSXNJQ0psYm1RaUxDQWljbVZ6YjJ4MlpVVnVaQ0lzSUNKdmNIUnpJaXdnSWtSdlkzVnRaVzUwSWl3Z0lrSlNSVUZMSWl3Z0lsTkxTVkFpTENBaVVrVk5UMVpGSWl3Z0luWnBjMmwwSWl3Z0ltTnpkQ0lzSUNKMmFYTnBkRzl5SWl3Z0lsOTJhWE5wZENJc0lDSndZWFJvSWl3Z0ltbDBaVzBpTENBaVptbGxiR1FpTENBaWFXNWtaWGdpTENBaWRHOXJJaXdnSW5CaGNtVnVkQ0lzSUNKamIyeHNJaXdnSW1OMGNtd2lMQ0FpZEc5clpXNGlMQ0FpYVNJc0lDSmphU0lzSUNKQ1QwMGlMQ0FpUkU5RFZVMUZUbFFpTENBaVJreFBWMTlGVGtRaUxDQWlVME5CVEVGU0lpd2dJblJ2YTJWdVZIbHdaU0lzSUNKemIzVnlZMlVpTENBaVFrOU5JaXdnSWtSUFExVk5SVTVVSWl3Z0lrWk1UMWRmUlU1RUlpd2dJbE5EUVV4QlVpSXNJQ0pwYzBWdGNIUjVJaXdnSW1Ob0lpd2dJbWhsZUVScFoybDBjeUlzSUNKMFlXZERhR0Z5Y3lJc0lDSm1iRzkzU1c1a2FXTmhkRzl5UTJoaGNuTWlMQ0FpYVc1MllXeHBaRUZ1WTJodmNrTm9ZWEp6SWl3Z0ltbHpUbTkwUVc1amFHOXlRMmhoY2lJc0lDSk1aWGhsY2lJc0lDSnpiM1Z5WTJVaUxDQWlhVzVqYjIxd2JHVjBaU0lzSUNKZllTSXNJQ0p1WlhoMElpd2dJbDlmZVdsbGJHUlRkR0Z5SWl3Z0lta2lMQ0FpYmlJc0lDSnZabVp6WlhRaUxDQWlhVzVrWlc1MElpd2dJbVIwSWl3Z0ltVnVaQ0lzSUNKemRHRjBaU0lzSUNKc2FXNWxJaXdnSWtKUFRTSXNJQ0prYVhKRmJtUWlMQ0FpWTNNaUxDQWljM0FpTENBaVJFOURWVTFGVGxRaUxDQWljeUlzSUNKamFEQWlMQ0FpWTJneElpd2dJbTVzSWl3Z0lrWk1UMWRmUlU1RUlpd2dJbkYxYjNSbElpd2dJbkZpSWl3Z0lteHZiM0FpTENBaWJHRnpkRU5vWVhJaUxDQWlVME5CVEVGU0lpd2dJbWx1Um14dmR5SXNJQ0poYkd4dmQwVnRjSFI1SWl3Z0ltRnNiRzkzVkdGaWN5SXNJQ0owWlhOMElpd2dJa3hwYm1WRGIzVnVkR1Z5SWl3Z0ltOW1abk5sZENJc0lDSnNiM2NpTENBaWFHbG5hQ0lzSUNKdGFXUWlMQ0FpYzNSaGNuUWlMQ0FpYVc1amJIVmtaWE5VYjJ0bGJpSXNJQ0pzYVhOMElpd2dJblI1Y0dVaUxDQWlhU0lzSUNKbWFXNWtUbTl1Ulcxd2RIbEpibVJsZUNJc0lDSnBjMFpzYjNkVWIydGxiaUlzSUNKMGIydGxiaUlzSUNKblpYUlFjbVYyVUhKdmNITWlMQ0FpY0dGeVpXNTBJaXdnSWw5aElpd2dJbWwwSWl3Z0ltZGxkRVpwY25OMFMyVjVVM1JoY25SUWNtOXdjeUlzSUNKd2NtVjJJaXdnSW14dmIzQWlMQ0FpWm1sNFJteHZkMU5sY1VsMFpXMXpJaXdnSW1aaklpd2dJbEJoY25ObGNpSXNJQ0p2Yms1bGQweHBibVVpTENBaVRHVjRaWElpTENBaWMyOTFjbU5sSWl3Z0ltbHVZMjl0Y0d4bGRHVWlMQ0FpYkdWNFpXMWxJaXdnSWw5ZmVXbGxiR1JUZEdGeUlpd2dJblJ2YTJWdVZIbHdaU0lzSUNKdFpYTnpZV2RsSWl3Z0luUnZjQ0lzSUNKdUlpd2dJbVZ5Y205eUlpd2dJbXhoYzNRaUxDQWljM1FpTENBaVpHOWpJaXdnSW1KMklpd2dJbk5qWVd4aGNpSXNJQ0p6ZEdGeWRDSXNJQ0p6WlhBaUxDQWliV0Z3SWl3Z0ltNXNJaXdnSW1WdVpDSXNJQ0poZEUxaGNFbHVaR1Z1ZENJc0lDSmhkRTVsZUhSSmRHVnRJaXdnSW10bGVTSXNJQ0ptY3lJc0lDSnpaWEVpTENBaWFXNWtaVzUwSWl3Z0ltUnZZMFZ1WkNJc0lDSndZWEp6WlU5d2RHbHZibk1pTENBaWIzQjBhVzl1Y3lJc0lDSndjbVYwZEhsRmNuSnZjbk1pTENBaVRHbHVaVU52ZFc1MFpYSWlMQ0FpY0dGeWMyVkViMk4xYldWdWRDSXNJQ0p6YjNWeVkyVWlMQ0FpYjNCMGFXOXVjeUlzSUNKc2FXNWxRMjkxYm5SbGNpSXNJQ0p3Y21WMGRIbEZjbkp2Y25NaUxDQWljR0Z5YzJWUGNIUnBiMjV6SWl3Z0luQmhjbk5sY2lJc0lDSlFZWEp6WlhJaUxDQWlZMjl0Y0c5elpYSWlMQ0FpUTI5dGNHOXpaWElpTENBaVpHOWpJaXdnSWw5a2IyTWlMQ0FpV1VGTlRGQmhjbk5sUlhKeWIzSWlMQ0FpY0hKbGRIUnBabmxGY25KdmNpSXNJQ0p3WVhKelpTSXNJQ0p6Y21NaUxDQWljbVYyYVhabGNpSXNJQ0pmY21WMmFYWmxjaUlzSUNKM1lYSnVhVzVuSWl3Z0luZGhjbTRpTENBaWFXMXdiM0owWDNOdmNuUmxaRjlpZEhKbFpTSXNJQ0pRSWl3Z0lreHBkR1Z5WVd4eklpd2dJblJ2VTNSeWFXNW5JaXdnSW1acFpXeGtJaXdnSW5ObGRIUnBibWNpTENBaWNtVmpkWEp6YVhabElpd2dJbmR5WVhCd1pXUWlMQ0FpZDNKaGNGWmhiSFZsSWl3Z0luSmxjM1ZzZENJc0lDSm1JaXdnSW1VaUxDQWljbVZ1WkdWeVRXbHVhVzFoYkVSaGRHVWlMQ0FpY21WdVpHVnlUV2x1YVcxaGJFUjFjbUYwYVc5dUlpd2dJblpoYkNJc0lDSnBjMDUxYkd3aUxDQWlhWE5PZFcxaVpYSWlMQ0FpYVhOVGRISnBibWNpTENBaWFYTkNiMjlzWldGdUlpd2dJbWx6UkhWeVlYUnBiMjRpTENBaWFYTkVZWFJsSWl3Z0ltbHpRWEp5WVhraUxDQWlhWE5NYVc1cklpd2dJbWx6Um5WdVkzUnBiMjRpTENBaWFYTlBZbXBsWTNRaUxDQWliV0Z3VEdWaGRtVnpJaXdnSW1aMWJtTWlMQ0FpYTJWNUlpd2dJblpoYkhWbElpd2dJbVZ4ZFdGc2N5SXNJQ0ptYVhKemRDSXNJQ0p6WldOdmJtUWlMQ0FpWTI5dGNHRnlaU0lzSUNKMllXd3hJaXdnSW5aaGJESWlMQ0FpYkdsdWEwNXZjbTFoYkdsNlpYSWlMQ0FpWDJFaUxDQWlYMklpTENBaWQzSmhjREVpTENBaWQzSmhjRElpTENBaWJHbHVhekVpTENBaWJHbHVheklpTENBaWJtOXliV0ZzYVhwbElpd2dJbmdpTENBaWNHRjBhRU52YlhCaGNtVWlMQ0FpZEhsd1pVTnZiWEJoY21VaUxDQWlaakVpTENBaVpqSWlMQ0FpYVc1a1pYZ2lMQ0FpWTI5dGNDSXNJQ0p2TVNJc0lDSnZNaUlzSUNKck1TSXNJQ0pyTWlJc0lDSnJaWGxEYjIxd1lYSmxJaXdnSW5SNWNHVlBaaUlzSUNKcGMxUnlkWFJvZVNJc0lDSmtaV1Z3UTI5d2VTSXNJQ0oySWl3Z0lrUmhkR1ZVYVcxbElpd2dJa1IxY21GMGFXOXVJaXdnSWt4cGJtc2lMQ0FpUjNKdmRYQnBibWR6SWl3Z0ltbHpSV3hsYldWdWRFZHliM1Z3SWl3Z0ltVnVkSEo1SWl3Z0ltbHpSM0p2ZFhCcGJtY2lMQ0FpWld4bGJXVnVkQ0lzSUNKcGMweGxZV1lpTENBaVkyOTFiblFpTENBaVpXeGxiV1Z1ZEhNaUxDQWljM1ZpWjNKdmRYQWlMQ0FpYzJ4cFkyVWlMQ0FpYzNSaGNuUWlMQ0FpWlc1a0lpd2dJbk5sWlc0aUxDQWlaM0p2ZFhBaUxDQWlaM0p2ZFhCVGFYcGxJaXdnSW1keWIzVndVM1JoY25RaUxDQWlaM0p2ZFhCRmJtUWlMQ0FpVTNWalkyVnpjeUlzSUNKZlUzVmpZMlZ6Y3lJc0lDSjJZV3gxWlNJc0lDSm1JaXdnSW5OMVkyTWlMQ0FpWDJaaGFXd2lMQ0FpWDNaaGJIVmxJaXdnSWw5dFpYTnpZV2RsSWl3Z0lrWmhhV3gxY21VaUxDQWlYMFpoYVd4MWNtVWlMQ0FpWlhKeWIzSWlMQ0FpWDJZaUxDQWlYM04xWTJNaUxDQWlabUZwYkNJc0lDSnRaWE56WVdkbElpd2dJbEpsYzNWc2RDSXNJQ0p6ZFdOalpYTnpJaXdnSW1aaGFXeDFjbVVpTENBaVpteGhkRTFoY0RJaUxDQWlabWx5YzNRaUxDQWljMlZqYjI1a0lpd2dJbTFoY0RJaUxDQWlZU0lzSUNKaUlpd2dJbTFoY0VGc2JDSXNJQ0pwYm5CMWRDSXNJQ0ptZFc1aklpd2dJbkpsYzNWc2RDSXNJQ0psYkdWdFpXNTBJaXdnSW05MWRIQjFkQ0lzSUNKMGNubHBibWNpTENBaVkyRnNiQ0lzSUNKaGMzbHVZeUlzSUNKd2NtOXRhWE5sSWl3Z0lrWnBiSFJsY25NaUxDQWlZWFJ2YlNJc0lDSnpaWFFpTENBaVkyOXVjM1JoYm5RaUxDQWlkbUZzZFdVaUxDQWliblZzYkdGaWJHVkJkRzl0SWl3Z0ltNWxaMkYwWldRaUxDQWlibVZuWVhSbElpd2dJbVpwYkhSbGNpSXNJQ0psYlhCMGVTSXNJQ0p5WlhOdmJIWmxJaXdnSW1WMlpYSjVkR2hwYm1jaUxDQWljMlYwU1c1MFpYSnpaV04wVG1WbllYUnBiMjRpTENBaWFXNTBaWEp6WldOMElpd2dJbVZzWlcxbGJuUnpJaXdnSW14aGVubEpiblJsY25ObFkzUWlMQ0FpZUNJc0lDSndjbTlrZFdObElpd2dJbXhoZW5sR1lXbHNZV0pzWlVsdWRHVnljMlZqZEdsdmJpSXNJQ0pTWlhOMWJIUWlMQ0FpWVhSdmJYTWlMQ0FpYm1WbllYUnBiMjV6SWl3Z0ltVnNaVzFsYm5RaUxDQWliV0Y1WW1WR2FXeDBaWElpTENBaWMyVjBTVzUwWlhKelpXTjBJaXdnSW5ObGRGVnVhVzl1SWl3Z0luVnVhVzl1SWl3Z0ltWnBiSFJsY25NaUxDQWliR0Y2ZVZWdWFXOXVJaXdnSW14aGVubEdZV2xzWVdKc1pWVnVhVzl1SWl3Z0luTmxkSE1pTENBaWMyOXlkR1ZrSWl3Z0ltRWlMQ0FpWWlJc0lDSnlaWE4xYkhRaUxDQWliR0Z5WjJWemRDSXNJQ0pGZUhCeVpYTnphVzl1Y3lJc0lDSjJZWEpwWVdKc1pTSXNJQ0p1WVcxbElpd2dJbXhwZEdWeVlXd2lMQ0FpZG1Gc2RXVWlMQ0FpWW1sdVlYSjVUM0FpTENBaWJHVm1kQ0lzSUNKdmNDSXNJQ0p5YVdkb2RDSXNJQ0pwYm1SbGVDSXNJQ0p2WW1vaUxDQWlhVzVrWlhoV1lYSnBZV0pzWlNJc0lDSndZWEowY3lJc0lDSnlaWE4xYkhRaUxDQWliR0Z0WW1SaElpd2dJbUZ5WjNNaUxDQWlablZ1WXlJc0lDSnNhWE4wSWl3Z0luWmhiSFZsY3lJc0lDSnZZbXBsWTNRaUxDQWlibVZuWVhSbElpd2dJbU5vYVd4a0lpd2dJbWx6UTI5dGNHRnlaVTl3SWl3Z0luVnVZbTkxYm1SV1lYSnBZV0pzWlhNaUxDQWlaWGh3Y2lJc0lDSmliM1Z1WkNJc0lDSk1hWFJsY21Gc2N5SXNJQ0pHYVd4MFpYSnpJaXdnSW1FaUxDQWlibVYzUW05MWJtUWlMQ0FpWVhKbklpd2dJbllpTENBaWRHOVRkSEpwYm1jaUxDQWlheUlzSUNKM2NtRndjR1ZrSWl3Z0lsQlNTVTFKVkVsV1JWTWlMQ0FpWHlJc0lDSnpkSElpTENBaWNTSXNJQ0pqYUdGeWN5SXNJQ0psYzJOaGNHVmtJaXdnSW5OMFlYSjBJaXdnSW5KbGMzUWlMQ0FpUlUxUFNrbGZVa1ZIUlZnaUxDQWlabWx5YzNRaUxDQWliR2x1YTBsdWJtVnlJaXdnSWt4cGJtc2lMQ0FpY0NJc0lDSnNJaXdnSWw5emRISWlMQ0FpZVdWaGNpSXNJQ0p0YjI1MGFDSXNJQ0pFWVhSbFZHbHRaU0lzSUNKRVFWUkZYMU5JVDFKVVNFRk9SRk1pTENBaVlTSXNJQ0ppSWl3Z0ltTm9ZV2x1VDNCMElpd2dJbmx0SWl3Z0ltUmhlU0lzSUNKNWJXUWlMQ0FpYUc5MWNpSXNJQ0o1YldSb0lpd2dJbTFwYm5WMFpTSXNJQ0o1YldSb2JTSXNJQ0p6WldOdmJtUWlMQ0FpZVcxa2FHMXpJaXdnSW0xcGJHeHBjMlZqYjI1a0lpd2dJbVIwSWl3Z0luQnRJaXdnSW1oeUlpd2dJbDloSWl3Z0lucHZibVVpTENBaVgySWlMQ0FpWkNJc0lDSkVWVkpCVkVsUFRsOVVXVkJGVXlJc0lDSmpiM1Z1ZENJc0lDSjBJaXdnSW5naUxDQWlaSFZ5WVhScGIyNXpJaXdnSW1NaUxDQWlibTl5YldGc2FYcGxSSFZ5WVhScGIyNGlMQ0FpWmlJc0lDSmZjeUlzSUNKbGJXOXFhVjl5WldkbGVGOWtaV1poZFd4MElpd2dJa1IxY21GMGFXOXVJaXdnSWtWWVVGSkZVMU5KVDA0aUxDQWlSWGh3Y21WemMybHZibk1pTENBaVkzSmxZWFJsUm5WdVkzUnBiMjRpTENBaVgyWjFibU1pTENBaVpHRjBaU0lzSUNKa2RYSWlMQ0FpYm1GdFpTSXNJQ0pmYzJWd0lpd2dJblpoYkhWbElpd2dJblpoYkhNaUxDQWljbVZ6SWl3Z0ltVnVkSEo1SWl3Z0ltOWlhaUlzSUNKd2IzTjBabWw0WlhNaUxDQWljbVZ6ZFd4MElpd2dJbkJ2YzNRaUxDQWlabWxsYkdRaUxDQWlhV1JsYm5RaUxDQWlYMmxuYm05eVpTSXNJQ0psZUhCeUlpd2dJbDh5SWl3Z0lsOHpJaXdnSWw4MElpd2dJbDh4SWl3Z0ltVjRjSEp6SWl3Z0ltTnlaV0YwWlVKcGJtRnllVkJoY25ObGNpSXNJQ0pSVlVWU1dTSXNJQ0pwWkNJc0lDSm1kVzVqSWl3Z0luQmhkR2dpTENBaVkyaHBiR1J5Wlc0aUxDQWljR0Z5Wlc1MGN5SXNJQ0pzYVc1cklpd2dJbk52ZFhKalpTSXNJQ0pzWldaMElpd2dJbDl2Y0NJc0lDSnlhV2RvZENJc0lDSmpjbVZoZEdWQ2FXNWhjbmxRWVhKelpYSWlMQ0FpWTJocGJHUWlMQ0FpYzJWd0lpd2dJbU52YldKcGJtVWlMQ0FpWm1seWMzUWlMQ0FpY21WemRDSXNJQ0p1YjJSbElpd2dJbWx1WkdWNElpd2dJbU55WldGMFpVWjFibU4wYVc5dUlpd2dJbVoxYm1NaUxDQWlZWEpuY3lJc0lDSnlaV0ZzUm5WdVl5SXNJQ0ptSWl3Z0ltRWlMQ0FpWTJoaGFXNVBjSFFpTENBaVltRnpaU0lzSUNKbWRXNWpjeUlzSUNKZmMzVmpZMlZ6Y3lJc0lDSmZabUZwYkhWeVpTSXNJQ0pwYm5CMWRDSXNJQ0p5WlhOMWJIUWlMQ0FpYm1WNGRDSXNJQ0pRSWl3Z0ltMWhjRTlpYW1WamRGWmhiSFZsY3lJc0lDSnZZbXBsWTNRaUxDQWlablZ1WXlJc0lDSnlaWE4xYkhRaUxDQWlhMlY1SWl3Z0luWmhiSFZsSWl3Z0lrcHpiMjVEYjI1MlpYSnphVzl1SWl3Z0ltbHVjSFYwSWl3Z0ltcHpiMjRpTENBaWJHbDBaWEpoYkNJc0lDSjNjbUZ3Y0dWa0lpd2dJa3hwZEdWeVlXeHpJaXdnSW0xaGNFOWlhbVZqZEZaaGJIVmxjeUlzSUNKMllXeDFaU0lzSUNKdWIzSnRZV3hwZW1WeUlpd2dJbllpTENBaWRIbHdaU0lzSUNKRVlYUmxWR2x0WlNJc0lDSkVkWEpoZEdsdmJpSXNJQ0pNYVc1cklpd2dJbXB6YjI1SmJteHBibVZHYVdWc1pDSXNJQ0ptYVdWc1pDSXNJQ0pLYzI5dVEyOXVkbVZ5YzJsdmJpSXNJQ0poYzBsdWJHbHVaVVpwWld4a0lpd2dJbXh2WTJGc0lpd2dJbXhwYm1WdWJ5SXNJQ0ptSWl3Z0luQmhjbk5sU1c1c2FXNWxWbUZzZFdVaUxDQWlTVTVNU1U1RlgwWkpSVXhFWDFkU1FWQlFSVkpUSWl3Z0ltWnBibVJEYkc5emFXNW5JaXdnSW14cGJtVWlMQ0FpYzNSaGNuUWlMQ0FpYjNCbGJpSXNJQ0pqYkc5elpTSXNJQ0p1WlhOMGFXNW5JaXdnSW1WelkyRndaV1FpTENBaWFXNWtaWGdpTENBaVkyaGhjaUlzSUNKbWFXNWtVMlZ3WVhKaGRHOXlJaXdnSW5ObGNDSXNJQ0ptYVc1a1UzQmxZMmxtYVdOSmJteHBibVZHYVdWc1pDSXNJQ0pyWlhraUxDQWlkbUZzZFdVaUxDQWlhVzVzYVc1bElpd2dJbEJTU1UxSlZFbFdSVk1pTENBaVpYaDBjbUZqZEVsdWJHbHVaVVpwWld4a2N5SXNJQ0pwYm1Oc2RXUmxWR0Z6YTBacFpXeGtjeUlzSUNKbWFXVnNaSE1pTENBaWQzSmhjSEJsY2lJc0lDSm1iM1Z1WkVsdVpHVjRJaXdnSW5CaGNuTmxaRVpwWld4a0lpd2dJbVY0ZEhKaFkzUlRjR1ZqYVdGc1ZHRnphMFpwWld4a2N5SXNJQ0poSWl3Z0ltSWlMQ0FpWm1sc2RHVnlaV1JHYVdWc1pITWlMQ0FpYVNJc0lDSkdWVXhNWDB4SlRrVmZTMFZaWDFCQlVsUWlMQ0FpWlcxdmFtbGZjbVZuWlhoZlpHVm1ZWFZzZENJc0lDSndZWEowY3lJc0lDSkdWVXhNWDB4SlRrVmZTMFZaWDFCQlVsTkZVaUlzSUNKbGVIUnlZV04wUm5Wc2JFeHBibVZHYVdWc1pDSXNJQ0owWlhoMElpd2dJbkpsWVd4TFpYa2lMQ0FpUTFKRlFWUkZSRjlFUVZSRlgxSkZSMFZZSWl3Z0lrUlZSVjlFUVZSRlgxSkZSMFZZSWl3Z0lrUlBUa1ZmUkVGVVJWOVNSVWRGV0NJc0lDSlRRMGhGUkZWTVJVUmZSRUZVUlY5U1JVZEZXQ0lzSUNKVFZFRlNWRjlFUVZSRlgxSkZSMFZZSWl3Z0lrVk5UMHBKWDFKRlIwVllSVk1pTENBaWNtVnpkV3gwY3lJc0lDSnlaV2RsZUNJc0lDSnRZWFJqYUNJc0lDSlpZVzFzUTI5dWRtVnljMmx2YmlJc0lDSjVZVzFzSWl3Z0luWmhiSFZsSWl3Z0luZHlZWEJ3WldRaUxDQWlUR2wwWlhKaGJITWlMQ0FpYkdsMFpYSmhiQ0lzSUNKdFlYQlBZbXBsWTNSV1lXeDFaWE1pTENBaWNtVnpkV3gwSWl3Z0ltTm9hV3hrSWl3Z0lrUmhkR1ZVYVcxbElpd2dJbTlpYW1WamRDSXNJQ0pyWlhraUxDQWlaR0YwWlZCaGNuTmxJaXdnSWxCU1NVMUpWRWxXUlZNaUxDQWlaSFZ5WVhScGIyNVFZWEp6WlNJc0lDSnNhVzVyVUdGeWMyVWlMQ0FpV1VGTlRGOUVRVlJCWDFKRlIwVllJaXdnSWtOUFJFVkNURTlEUzE5R1JVNURSVjlTUlVkRldDSXNJQ0pNU1ZOVVgwbFVSVTFmVWtWSFJWZ2lMQ0FpYldGeWEyUnZkMjVKYlhCdmNuUWlMQ0FpY0dGMGFDSXNJQ0p0WVhKclpHOTNiaUlzSUNKdFpYUmhaR0YwWVNJc0lDSnpkR0YwY3lJc0lDSnNhVzVsY3lJc0lDSndZV2RsVFdWMFlXUmhkR0VpTENBaVpuSnZiblJ0WVhSMFpYSWlMQ0FpYzJWamRHbHZibk1pTENBaWJXRnlhMlJ2ZDI1VGIzVnlZMlZKYlhCdmNuUWlMQ0FpVUdGblpVUmhkR0VpTENBaVgyRWlMQ0FpWDJJaUxDQWlYMk1pTENBaVgyUWlMQ0FpWDJVaUxDQWlYMllpTENBaVgyY2lMQ0FpWDJnaUxDQWlYMmtpTENBaVgyb2lMQ0FpWDJzaUxDQWlYMndpTENBaVgyMGlMQ0FpWDI0aUxDQWlYMjhpTENBaVgzQWlMQ0FpY0dGeWMyVkdjbTl1ZEcxaGRIUmxja0pzYjJOcklpd2dJbTFoY210a2IzZHVUV1YwWVdSaGRHRWlMQ0FpVFdWMFlXUmhkR0VpTENBaWMyVmpkR2x2YmtGeWNtRjVJaXdnSW0xbGRHRm9aV0ZrYVc1bmN5SXNJQ0poSWl3Z0ltSWlMQ0FpUWxSeVpXVWlMQ0FpYVc1a1pYZ2lMQ0FpWlc1MGNua2lMQ0FpYzNSaGNuUWlMQ0FpWlc1a0lpd2dJbk5sWTNScGIyNGlMQ0FpVTJWamRHbHZia1JoZEdFaUxDQWlaVzF3ZEhsc2FXNWxjeUlzSUNKblpYUkdhV3hsVkdsMGJHVWlMQ0FpWm1seWMzUWlMQ0FpWW14dlkydHpJaXdnSW1Kc2IyTnJUM0prYVc1aGJDSXNJQ0ppYkc5amF5SXNJQ0p6ZEdGeWRFeHBibVVpTENBaVRHbHpkRUpzYjJOclJHRjBZU0lzSUNKNVlXMXNJaXdnSW5Od2JHbDBJaXdnSW5CaGNuTmxJaXdnSWtSaGRHRmliRzlqYTBSaGRHRWlMQ0FpYldGMFkyZ2lMQ0FpUTI5a1pXSnNiMk5yUkdGMFlTSXNJQ0pzWVc1bmRXRm5aWE1pTENBaVFtRnpaVUpzYjJOclJHRjBZU0lzSUNKc2IyOXJkWEFpTENBaVkyOXVkR1Z1ZEZKbFoyVjRJaXdnSW0xaGNtdGxjbEpsWjJWNElpd2dJbXhwYzNSSmRHVnRjeUlzSUNKc2FYTjBJaXdnSW5ONWJXSnZiQ0lzSUNKMFpYaDBJaXdnSW1sMFpXMGlMQ0FpVEdsemRFbDBaVzFFWVhSaElpd2dJbXhwYzNSQ2JHOWpheUlzSUNKMFlXZGtaV1lpTENBaWRHRm5JaXdnSW14cGJtVWlMQ0FpY21GM2RHRm5JaXdnSW1WNGRISmhZM1JVWVdkeklpd2dJbXhwYm10a1pXWWlMQ0FpYkdsdWF5SXNJQ0pNYVc1cklpd2dJbVpwWld4a0lpd2dJbWwwWlhKaGRHVkpibXhwYm1WR2FXVnNaSE1pTENBaVkyOXVkR1Z1ZENJc0lDSnNhVzVsYm04aUxDQWlhVzVzYVc1bFJtbGxiR1J6SWl3Z0ltVjRkSEpoWTNSSmJteHBibVZHYVdWc1pITWlMQ0FpYVdacFpXeGtJaXdnSW1GelNXNXNhVzVsUm1sbGJHUWlMQ0FpWm5Wc2JFeHBibVVpTENBaVpYaDBjbUZqZEVaMWJHeE1hVzVsUm1sbGJHUWlMQ0FpY21WemRXeDBJaXdnSW10bGVTSXNJQ0oyWVd4MVpTSXNJQ0pLYzI5dVEyOXVkbVZ5YzJsdmJpSXNJQ0paWVcxc1EyOXVkbVZ5YzJsdmJpSXNJQ0owY21WbElpd2dJblJoY21kbGRDSXNJQ0pySWl3Z0luTndiR2wwUm5KdmJuUnRZWFIwWlhKVVlXZFBja0ZzYVdGeklpd2dJbkFpTENBaVl5SXNJQ0p6ZEhJaUxDQWlaR0YwWVNJc0lDSnZiaUlzSUNKeklpd2dJbllpTENBaWJHOTNaWElpTENBaWJXRndUMkpxWldOMFZtRnNkV1Z6SWl3Z0ltcHpiMjVKYm14cGJtVkdhV1ZzWkNJc0lDSnNaVzVuZEdnaUxDQWlaMlYwUlhoMFpXNXphVzl1SWl3Z0luZ2lMQ0FpZEdsMGJHVWlMQ0FpYkdWMlpXd2lMQ0FpYjNKa2FXNWhiQ0lzSUNKaWJHOWphMGxrSWl3Z0luTjBlV3hsSWl3Z0ltTnZiblJsYm5SVGRHRnlkQ0lzSUNKamIyNTBaVzUwUlc1a0lpd2dJblI1Y0dVaUxDQWljR0Z5Wlc1MFRHbHVaU0lzSUNKemRHRjBkWE1pTENBaVpXeGxiV1Z1ZENJc0lDSmpZVzUyWVhOSmJYQnZjblFpTENBaWNHRjBhQ0lzSUNKemIzVnlZMlVpTENBaWFXNWtaWGdpTENBaWMzUmhkSE1pTENBaVgyRWlMQ0FpWTJGdWRtRnpJaXdnSWtOaGJuWmhjMFJoZEdFaUxDQWljR0Z5YzJWa0lpd2dJbU1pTENBaVpuSnZiblJ0WVhSMFpYSWlMQ0FpYldWMFlXUmhkR0VpTENBaWJHbHVaWE1pTENBaWMyVmpkR2x2Ym5NaUxDQWliV0Z5YTJSdmQyNVRiM1Z5WTJWSmJYQnZjblFpTENBaVkyRnlaQ0lzSUNKRFlXNTJZWE5EWVhKa1JHRjBZU0lzSUNKcElpd2dJblJoWnlJc0lDSnNhVzVySWl3Z0ltWnBaV3hrSWl3Z0ltbDBaWEpoZEdWSmJteHBibVZHYVdWc1pITWlMQ0FpUVdKemRISmhZM1JEWVc1MllYTkRZWEprUkdGMFlTSXNJQ0pwWkNJc0lDSnViMlJsU25OdmJpSXNJQ0pOWlhSaFpHRjBZU0lzSUNKTWFXNXJJaXdnSW5ObFkzUnBiMjRpTENBaVgxOXpjSEpsWVdSUWNtOXdjeUlzSUNKZlgzTndjbVZoWkZaaGJIVmxjeUlzSUNKNElpd2dJbVFpTENBaVpYWmxiblFpTENBaWJXVnpjMkZuWlNJc0lDSnRZWEpyWkc5M2JpSXNJQ0p0WVhKclpHOTNia2x0Y0c5eWRDSXNJQ0pqWVc1MllYTWlMQ0FpWTJGdWRtRnpTVzF3YjNKMElpd2dJbVZ5Y205eUlsMEtmUW89XFxuXCIpO1xufVxuIiwgIi8qKiBDb250cm9scyBhbmQgY3JlYXRlcyBEYXRhdmlldyBmaWxlIGltcG9ydGVycywgYWxsb3dpbmcgZm9yIGFzeW5jaHJvbm91cyBsb2FkaW5nIGFuZCBwYXJzaW5nIG9mIGZpbGVzLiAqL1xuXG5pbXBvcnQgSW1wb3J0V29ya2VyIGZyb20gXCJpbmRleC93ZWItd29ya2VyL2ltcG9ydGVyLndvcmtlclwiO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBGaWxlTWFuYWdlciwgTWV0YWRhdGFDYWNoZSwgVEZpbGUsIFZhdWx0IH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5pbXBvcnQgeyBDYW52YXNJbXBvcnQsIE1hcmtkb3duSW1wb3J0IH0gZnJvbSBcImluZGV4L3dlYi13b3JrZXIvbWVzc2FnZVwiO1xuaW1wb3J0IHsgRGVmZXJyZWQsIGRlZmVycmVkIH0gZnJvbSBcInV0aWxzL2RlZmVycmVkXCI7XG5cbmltcG9ydCB7IFF1ZXVlIH0gZnJvbSBcIkBkYXRhc3RydWN0dXJlcy1qcy9xdWV1ZVwiO1xuXG4vKiogU2V0dGluZ3MgZm9yIHRocm90dGxpbmcgaW1wb3J0LiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbXBvcnRUaHJvdHRsZSB7XG4gICAgLyoqIFRoZSBudW1iZXIgb2Ygd29ya2VycyB0byB1c2UgZm9yIGltcG9ydHMuICovXG4gICAgd29ya2VyczogbnVtYmVyO1xuICAgIC8qKiBBIG51bWJlciBiZXR3ZWVuIDAuMSBhbmQgMSB3aGljaCBpbmRpY2F0ZXMgdG90YWwgY3B1IHV0aWxpemF0aW9uIHRhcmdldDsgMC4xIG1lYW5zIHNwZW5kIDEwJSBvZiB0aW1lICAqL1xuICAgIHV0aWxpemF0aW9uOiBudW1iZXI7XG59XG5cbi8qKiBEZWZhdWx0IHRocm90dGxlIGNvbmZpZ3VyYXRpb24uICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9USFJPVFRMRTogSW1wb3J0VGhyb3R0bGUgPSB7XG4gICAgd29ya2VyczogMixcbiAgICB1dGlsaXphdGlvbjogMC43NSxcbn07XG5cbi8qKiBNdWx0aS10aHJlYWRlZCBmaWxlIHBhcnNlciB3aGljaCBkZWJvdW5jZXMgcmFwaWQgZmlsZSByZXF1ZXN0cyBhdXRvbWF0aWNhbGx5LiAqL1xuZXhwb3J0IGNsYXNzIEZpbGVJbXBvcnRlciBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgLyogQmFja2dyb3VuZCB3b3JrZXJzIHdoaWNoIGRvIHRoZSBhY3R1YWwgZmlsZSBwYXJzaW5nLiAqL1xuICAgIHdvcmtlcnM6IE1hcDxudW1iZXIsIFBvb2xXb3JrZXI+O1xuICAgIC8qKiBUaGUgbmV4dCB3b3JrZXIgSUQgdG8gaGFuZCBvdXQuICovXG4gICAgbmV4dFdvcmtlcklkOiBudW1iZXI7XG4gICAgLyoqIElmIHRydWUsIHRoZSBpbXBvcnRlciBpcyBub3cgaW5hY3RpdmUgYW5kIHdpbGwgbm90IHByb2Nlc3MgZnVydGhlciBmaWxlcy4gKi9cbiAgICBzaHV0ZG93bjogYm9vbGVhbjtcblxuICAgIC8qKiBMaXN0IG9mIGZpbGVzIHdoaWNoIGhhdmUgYmVlbiBxdWV1ZWQgZm9yIGEgcmVsb2FkLiAqL1xuICAgIHF1ZXVlOiBRdWV1ZTxbVEZpbGUsIERlZmVycmVkPGFueT5dPjtcbiAgICAvKiogT3V0c3RhbmRpbmcgbG9hZHMgaW5kZXhlZCBieSBwYXRoLiAqL1xuICAgIG91dHN0YW5kaW5nOiBNYXA8c3RyaW5nLCBQcm9taXNlPGFueT4+O1xuICAgIC8qKiBUaHJvdHRsZSBzZXR0aW5ncy4gKi9cbiAgICB0aHJvdHRsZTogKCkgPT4gSW1wb3J0VGhyb3R0bGU7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyB2YXVsdDogVmF1bHQsXG4gICAgICAgIHB1YmxpYyBmaWxlTWFuYWdlcjogRmlsZU1hbmFnZXIsXG4gICAgICAgIHB1YmxpYyBtZXRhZGF0YUNhY2hlOiBNZXRhZGF0YUNhY2hlLFxuICAgICAgICB0aHJvdHRsZT86ICgpID0+IEltcG9ydFRocm90dGxlXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMud29ya2VycyA9IG5ldyBNYXAoKTtcbiAgICAgICAgdGhpcy5zaHV0ZG93biA9IGZhbHNlO1xuICAgICAgICB0aGlzLm5leHRXb3JrZXJJZCA9IDA7XG4gICAgICAgIHRoaXMudGhyb3R0bGUgPSB0aHJvdHRsZSA/PyAoKCkgPT4gREVGQVVMVF9USFJPVFRMRSk7XG5cbiAgICAgICAgdGhpcy5xdWV1ZSA9IG5ldyBRdWV1ZSgpO1xuICAgICAgICB0aGlzLm91dHN0YW5kaW5nID0gbmV3IE1hcCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFF1ZXVlIHRoZSBnaXZlbiBmaWxlIGZvciBpbXBvcnRpbmcuIE11bHRpcGxlIGltcG9ydCByZXF1ZXN0cyBmb3IgdGhlIHNhbWUgZmlsZSBpbiBhIHNob3J0IHRpbWUgcGVyaW9kIHdpbGwgYmUgZGUtYm91bmNlZFxuICAgICAqIGFuZCBhbGwgYmUgcmVzb2x2ZWQgYnkgYSBzaW5nbGUgYWN0dWFsIGZpbGUgcmVsb2FkLlxuICAgICAqL1xuICAgIHB1YmxpYyBpbXBvcnQ8VD4oZmlsZTogVEZpbGUpOiBQcm9taXNlPFQ+IHtcbiAgICAgICAgLy8gRGUtYm91bmNlIHJlcGVhdGVkIHJlcXVlc3RzIGZvciB0aGUgc2FtZSBmaWxlLlxuICAgICAgICBsZXQgZXhpc3RpbmcgPSB0aGlzLm91dHN0YW5kaW5nLmdldChmaWxlLnBhdGgpO1xuICAgICAgICBpZiAoZXhpc3RpbmcpIHJldHVybiBleGlzdGluZztcblxuICAgICAgICBsZXQgcHJvbWlzZSA9IGRlZmVycmVkPFQ+KCk7XG5cbiAgICAgICAgdGhpcy5vdXRzdGFuZGluZy5zZXQoZmlsZS5wYXRoLCBwcm9taXNlKTtcbiAgICAgICAgdGhpcy5xdWV1ZS5lbnF1ZXVlKFtmaWxlLCBwcm9taXNlXSk7XG4gICAgICAgIHRoaXMuc2NoZWR1bGUoKTtcbiAgICAgICAgcmV0dXJuIHByb21pc2U7XG4gICAgfVxuXG4gICAgLyoqIFJlc2V0IGFueSBhY3RpdmUgdGhyb3R0bGVzIG9uIHRoZSBpbXBvcnRlciAoc3VjaCBhcyBpZiB0aGUgdXRpbGl6YXRpb24gY2hhbmdlcykuICovXG4gICAgcHVibGljIHVudGhyb3R0bGUoKSB7XG4gICAgICAgIGZvciAobGV0IHdvcmtlciBvZiB0aGlzLndvcmtlcnMudmFsdWVzKCkpIHtcbiAgICAgICAgICAgIHdvcmtlci5hdmFpbGFibGVBdCA9IERhdGUubm93KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogUG9sbCBmcm9tIHRoZSBxdWV1ZSBhbmQgZXhlY3V0ZSBpZiB0aGVyZSBpcyBhbiBhdmFpbGFibGUgd29ya2VyLiAqL1xuICAgIHByaXZhdGUgYXN5bmMgc2NoZWR1bGUoKSB7XG4gICAgICAgIGlmICh0aGlzLnF1ZXVlLnNpemUoKSA9PSAwIHx8IHRoaXMuc2h1dGRvd24pIHJldHVybjtcblxuICAgICAgICBjb25zdCB3b3JrZXIgPSB0aGlzLmF2YWlsYWJsZVdvcmtlcigpO1xuICAgICAgICBpZiAoIXdvcmtlcikgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IFtmaWxlLCBwcm9taXNlXSA9IHRoaXMucXVldWUuZGVxdWV1ZSgpITtcbiAgICAgICAgd29ya2VyLmFjdGl2ZSA9IFtmaWxlLCBwcm9taXNlLCBEYXRlLm5vdygpXTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgc3dpdGNoIChmaWxlLmV4dGVuc2lvbikge1xuICAgICAgICAgICAgICAgIGNhc2UgXCJtYXJrZG93blwiOlxuICAgICAgICAgICAgICAgIGNhc2UgXCJtZFwiOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnRzID0gYXdhaXQgdGhpcy52YXVsdC5jYWNoZWRSZWFkKGZpbGUpO1xuICAgICAgICAgICAgICAgICAgICB3b3JrZXIhLndvcmtlci5wb3N0TWVzc2FnZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIm1hcmtkb3duXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiBmaWxlLnBhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50czogY29udGVudHMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0OiBmaWxlLnN0YXQsXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YTogdGhpcy5tZXRhZGF0YUNhY2hlLmdldEZpbGVDYWNoZShmaWxlKSxcbiAgICAgICAgICAgICAgICAgICAgfSBhcyBNYXJrZG93bkltcG9ydCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlIFwiY2FudmFzXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29udGVudHMgPSBhd2FpdCB0aGlzLnZhdWx0LmNhY2hlZFJlYWQoZmlsZSk7XG4gICAgICAgICAgICAgICAgICAgIHdvcmtlciEud29ya2VyLnBvc3RNZXNzYWdlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiY2FudmFzXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiBmaWxlLnBhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50czogY29udGVudHMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0OiBmaWxlLnN0YXQsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmRleDogdGhpcy5maWxlTWFuYWdlci5saW5rVXBkYXRlcnMuY2FudmFzLmNhbnZhcy5pbmRleC5pbmRleFtmaWxlLnBhdGhdLFxuICAgICAgICAgICAgICAgICAgICB9IGFzIENhbnZhc0ltcG9ydCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiRGF0YWNvcmU6IEJhY2tncm91bmQgZmlsZSByZWxvYWRpbmcgZmFpbGVkLiBcIiArIGV4KTtcblxuICAgICAgICAgICAgLy8gTWVzc2FnZSBmYWlsZWQsIHJlbGVhc2UgdGhpcyB3b3JrZXIuXG4gICAgICAgICAgICB3b3JrZXIuYWN0aXZlID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEZpbmlzaCB0aGUgcGFyc2luZyBvZiBhIGZpbGUsIHBvdGVudGlhbGx5IHF1ZXVlaW5nIGEgbmV3IGZpbGUuICovXG4gICAgcHJpdmF0ZSBmaW5pc2god29ya2VyOiBQb29sV29ya2VyLCBkYXRhOiBhbnkpIHtcbiAgICAgICAgaWYgKCF3b3JrZXIuYWN0aXZlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIkRhdGFjb3JlOiBSZWNlaXZlZCBhIHN0YWxlIHdvcmtlciBtZXNzYWdlLiBJZ25vcmluZy5cIiwgZGF0YSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBbZmlsZSwgcHJvbWlzZSwgc3RhcnRdID0gd29ya2VyLmFjdGl2ZSE7XG5cbiAgICAgICAgLy8gUmVzb2x2ZSBwcm9taXNlcyB0byBsZXQgdXNlcnMga25vdyB0aGlzIGZpbGUgaGFzIGZpbmlzaGVkLlxuICAgICAgICBpZiAoXCIkZXJyb3JcIiBpbiBkYXRhKSBwcm9taXNlLnJlamVjdChkYXRhW1wiJGVycm9yXCJdKTtcbiAgICAgICAgZWxzZSBwcm9taXNlLnJlc29sdmUoZGF0YSk7XG5cbiAgICAgICAgLy8gUmVtb3ZlIGZpbGUgZnJvbSBvdXRzdGFuZGluZy5cbiAgICAgICAgdGhpcy5vdXRzdGFuZGluZy5kZWxldGUoZmlsZS5wYXRoKTtcblxuICAgICAgICAvLyBSZW1vdmUgdGhpcyB3b3JrZXIgaWYgd2UgYXJlIG92ZXIgY2FwYWNpdHkuXG4gICAgICAgIC8vIE90aGVyd2lzZSwgbm90aWZ5IHRoZSBxdWV1ZSB0aGlzIGZpbGUgaXMgYXZhaWxhYmxlIGZvciBuZXcgd29yay5cbiAgICAgICAgaWYgKHRoaXMud29ya2Vycy5zaXplID4gdGhpcy50aHJvdHRsZSgpLndvcmtlcnMpIHtcbiAgICAgICAgICAgIHRoaXMud29ya2Vycy5kZWxldGUod29ya2VyLmlkKTtcbiAgICAgICAgICAgIHRlcm1pbmF0ZSh3b3JrZXIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICAgIGNvbnN0IHRocm90dGxlID0gTWF0aC5tYXgoMC4xLCB0aGlzLnRocm90dGxlKCkudXRpbGl6YXRpb24pIC0gMS4wO1xuICAgICAgICAgICAgY29uc3QgZGVsYXkgPSAobm93IC0gc3RhcnQpICogdGhyb3R0bGU7XG5cbiAgICAgICAgICAgIHdvcmtlci5hY3RpdmUgPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgICAgIGlmIChkZWxheSA8PSAxZS0xMCkge1xuICAgICAgICAgICAgICAgIHdvcmtlci5hdmFpbGFibGVBdCA9IG5vdztcbiAgICAgICAgICAgICAgICB0aGlzLnNjaGVkdWxlKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHdvcmtlci5hdmFpbGFibGVBdCA9IG5vdyArIGRlbGF5O1xuXG4gICAgICAgICAgICAgICAgLy8gTm90ZTogSSdtIHByZXR0eSBzdXJlIHRoaXMgd2lsbCBnYXJhdW50ZWUgdGhhdCB0aGlzIGV4ZWN1dGVzIEFGVEVSIGRlbGF5IG1pbGxpc2Vjb25kcyxcbiAgICAgICAgICAgICAgICAvLyBzbyB0aGlzIHNob3VsZCBiZSBmaW5lOyBpZiBpdCdzIG5vdCwgd2UnbGwgaGF2ZSB0byBzd2FwIHRvIGFuIGV4dGVybmFsIHRpbWVvdXQgbG9vcFxuICAgICAgICAgICAgICAgIC8vIHdoaWNoIGluZmluaXRlbHkgcmVzY2hlZHVsZXMgaXRzZWxmIHRvIHRoZSBuZXh0IGF2YWlsYWJsZSBleGVjdXRpb24gdGltZS5cbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KHRoaXMuc2NoZWR1bGUuYmluZCh0aGlzKSwgZGVsYXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIE9idGFpbiBhbiBhdmFpbGFibGUgd29ya2VyLCByZXR1cm5pbmcgdW5kZWZpbmVkIGlmIG9uZSBkb2VzIG5vdCBleGlzdC4gKi9cbiAgICBwcml2YXRlIGF2YWlsYWJsZVdvcmtlcigpOiBQb29sV29ya2VyIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICAgICAgZm9yIChsZXQgd29ya2VyIG9mIHRoaXMud29ya2Vycy52YWx1ZXMoKSkge1xuICAgICAgICAgICAgaWYgKCF3b3JrZXIuYWN0aXZlICYmIHdvcmtlci5hdmFpbGFibGVBdCA8PSBub3cpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gd29ya2VyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gTWFrZSBhIG5ldyB3b3JrZXIgaWYgd2UgY2FuLlxuICAgICAgICBpZiAodGhpcy53b3JrZXJzLnNpemUgPCB0aGlzLnRocm90dGxlKCkud29ya2Vycykge1xuICAgICAgICAgICAgbGV0IHdvcmtlciA9IHRoaXMubmV3V29ya2VyKCk7XG4gICAgICAgICAgICB0aGlzLndvcmtlcnMuc2V0KHdvcmtlci5pZCwgd29ya2VyKTtcbiAgICAgICAgICAgIHJldHVybiB3b3JrZXI7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKiBDcmVhdGUgYSBuZXcgd29ya2VyIGJvdW5kIHRvIHRoaXMgaW1wb3J0ZXIuICovXG4gICAgcHJpdmF0ZSBuZXdXb3JrZXIoKTogUG9vbFdvcmtlciB7XG4gICAgICAgIGxldCB3b3JrZXI6IFBvb2xXb3JrZXIgPSB7XG4gICAgICAgICAgICBpZDogdGhpcy5uZXh0V29ya2VySWQrKyxcbiAgICAgICAgICAgIGF2YWlsYWJsZUF0OiBEYXRlLm5vdygpLFxuICAgICAgICAgICAgd29ya2VyOiBuZXcgSW1wb3J0V29ya2VyKCksXG4gICAgICAgIH07XG5cbiAgICAgICAgd29ya2VyLndvcmtlci5vbm1lc3NhZ2UgPSAoZXZ0KSA9PiB0aGlzLmZpbmlzaCh3b3JrZXIsIGV2dC5kYXRhKTtcbiAgICAgICAgcmV0dXJuIHdvcmtlcjtcbiAgICB9XG5cbiAgICAvKiogUmVqZWN0IGFsbCBvdXRzdGFuZGluZyBwcm9taXNlcyBhbmQgY2xvc2UgYWxsIHdvcmtlcnMgb24gY2xvc2UuICovXG4gICAgcHVibGljIG9udW5sb2FkKCk6IHZvaWQge1xuICAgICAgICBmb3IgKGxldCB3b3JrZXIgb2YgdGhpcy53b3JrZXJzLnZhbHVlcygpKSB7XG4gICAgICAgICAgICB0ZXJtaW5hdGUod29ya2VyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHdoaWxlICghdGhpcy5xdWV1ZS5pc0VtcHR5KCkpIHtcbiAgICAgICAgICAgIGNvbnN0IFtfZmlsZSwgcHJvbWlzZV0gPSB0aGlzLnF1ZXVlLnBvcCgpITtcbiAgICAgICAgICAgIHByb21pc2UucmVqZWN0KFwiVGVybWluYXRlZFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2h1dGRvd24gPSB0cnVlO1xuICAgIH1cbn1cblxuLyoqIEEgd29ya2VyIGluIHRoZSBwb29sIG9mIGV4ZWN1dGluZyB3b3JrZXJzLiAqL1xuaW50ZXJmYWNlIFBvb2xXb3JrZXIge1xuICAgIC8qKiBUaGUgaWQgb2YgdGhpcyB3b3JrZXIuICovXG4gICAgaWQ6IG51bWJlcjtcbiAgICAvKiogVGhlIHJhdyB1bmRlcmx5aW5nIHdvcmtlci4gKi9cbiAgICB3b3JrZXI6IFdvcmtlcjtcbiAgICAvKiogVU5JWCB0aW1lIGluZGljYXRpbmcgdGhlIG5leHQgdGltZSB0aGlzIHdvcmtlciBpcyBhdmFpbGFibGUgZm9yIGV4ZWN1dGlvbiBhY2NvcmRpbmcgdG8gdGFyZ2V0IHV0aWxpemF0aW9uLiAqL1xuICAgIGF2YWlsYWJsZUF0OiBudW1iZXI7XG4gICAgLyoqIFRoZSBhY3RpdmUgcHJvbWlzZSB0aGlzIHdvcmtlciBpcyB3b3JraW5nIG9uLCBpZiBhbnkuICovXG4gICAgYWN0aXZlPzogW1RGaWxlLCBEZWZlcnJlZDxhbnk+LCBudW1iZXJdO1xufVxuXG4vKiogVGVybWluYXRlIGEgcG9vbCB3b3JrZXIuICovXG5mdW5jdGlvbiB0ZXJtaW5hdGUod29ya2VyOiBQb29sV29ya2VyKSB7XG4gICAgd29ya2VyLndvcmtlci50ZXJtaW5hdGUoKTtcblxuICAgIGlmICh3b3JrZXIuYWN0aXZlKSB3b3JrZXIuYWN0aXZlWzFdLnJlamVjdChcIlRlcm1pbmF0ZWRcIik7XG4gICAgd29ya2VyLmFjdGl2ZSA9IHVuZGVmaW5lZDtcbn1cbiIsICJpbXBvcnQgeyBkZWZlcnJlZCwgRGVmZXJyZWQgfSBmcm9tIFwidXRpbHMvZGVmZXJyZWRcIjtcbmltcG9ydCB7IERhdGFzdG9yZSwgU3Vic3RvcmVyIH0gZnJvbSBcImluZGV4L2RhdGFzdG9yZVwiO1xuaW1wb3J0IHsgTG9jYWxTdG9yYWdlQ2FjaGUgfSBmcm9tIFwiaW5kZXgvcGVyc2lzdGVyXCI7XG5pbXBvcnQgeyBJbmRleGFibGUsIElOREVYQUJMRV9FWFRFTlNJT05TIH0gZnJvbSBcImluZGV4L3R5cGVzL2luZGV4YWJsZVwiO1xuaW1wb3J0IHsgRmlsZUltcG9ydGVyLCBJbXBvcnRUaHJvdHRsZSB9IGZyb20gXCJpbmRleC93ZWItd29ya2VyL2ltcG9ydGVyXCI7XG5pbXBvcnQgeyBJbXBvcnRSZXN1bHQgfSBmcm9tIFwiaW5kZXgvd2ViLXdvcmtlci9tZXNzYWdlXCI7XG5pbXBvcnQgeyBBcHAsIENvbXBvbmVudCwgRXZlbnRSZWYsIEV2ZW50cywgTWV0YWRhdGFDYWNoZSwgVEFic3RyYWN0RmlsZSwgVEZpbGUsIFZhdWx0IH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5pbXBvcnQgeyBTZXR0aW5ncyB9IGZyb20gXCJzZXR0aW5nc1wiO1xuaW1wb3J0IHsgTWFya2Rvd25MaXN0QmxvY2ssIE1hcmtkb3duTGlzdEl0ZW0sIE1hcmtkb3duUGFnZSB9IGZyb20gXCIuL3R5cGVzL21hcmtkb3duXCI7XG5pbXBvcnQgeyBHZW5lcmljRmlsZSB9IGZyb20gXCIuL3R5cGVzL2ZpbGVzXCI7XG5pbXBvcnQgeyBEYXRlVGltZSB9IGZyb20gXCJsdXhvblwiO1xuaW1wb3J0IHsgRW1iZWRRdWV1ZSB9IGZyb20gXCIuL2VtYmVkLXF1ZXVlXCI7XG5pbXBvcnQgeyBKc29uTWFya2Rvd25QYWdlIH0gZnJvbSBcIi4vdHlwZXMvanNvbi9tYXJrZG93blwiO1xuaW1wb3J0IHsgQ2FudmFzLCBDYW52YXNUZXh0Q2FyZCB9IGZyb20gXCIuL3R5cGVzL2NhbnZhc1wiO1xuXG4vKiogQ2VudHJhbCBBUEkgb2JqZWN0OyBoYW5kbGVzIGluaXRpYWxpemF0aW9uLCBldmVudHMsIGRlYm91bmNpbmcsIGFuZCBhY2Nlc3MgdG8gZGF0YWNvcmUgZnVuY3Rpb25hbGl0eS4gKi9cbmV4cG9ydCBjbGFzcyBEYXRhY29yZSBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgLyoqIEFjY2VzcyB0byB0aGUgb2JzaWRpYW4gdmF1bHQuICovXG4gICAgdmF1bHQ6IFZhdWx0O1xuICAgIC8qKiBQcm92aWRlcyBhY2Nlc3MgdG8gcGVyLShtYXJrZG93biktZmlsZSBtZXRhZGF0YS4gKi9cbiAgICBtZXRhZGF0YUNhY2hlOiBNZXRhZGF0YUNhY2hlO1xuICAgIC8qKiBEYXRhY29yZSBldmVudHMsIG1haW5seSB1c2VkIHRvIHVwZGF0ZSBkb3duc3RyZWFtIHZpZXdzLiBUaGlzIG9iamVjdCBpcyBzaGFkb3dlZCBieSB0aGUgRGF0YWNvcmUgb2JqZWN0IGl0c2VsZi4gKi9cbiAgICBldmVudHM6IEV2ZW50cztcblxuICAgIC8qKiBJbi1tZW1vcnkgaW5kZXggb3ZlciBhbGwgc3RvcmVkIG1ldGFkYXRhLiAqL1xuICAgIGRhdGFzdG9yZTogRGF0YXN0b3JlO1xuICAgIC8qKiBBc3luY2hyb25vdXMgbXVsdGktdGhyZWFkZWQgZmlsZSBpbXBvcnRlciB3aXRoIHRocm90dGxpbmcuICovXG4gICAgaW1wb3J0ZXI6IEZpbGVJbXBvcnRlcjtcbiAgICAvKiogUXVldWUgb2YgYXN5bmNocm9ub3VzIHJlYWQgcmVxdWVzdHM7IGVuc3VyZXMgd2UgbGltaXQgdGhlIG1heGltdW0gbnVtYmVyIG9mIGNvbmN1cnJlbnQgZmlsZSBsb2Fkcy4gKi9cbiAgICByZWFkczogRW1iZWRRdWV1ZTtcbiAgICAvKiogTG9jYWwtc3RvcmFnZSBiYWNrZWQgY2FjaGUgb2YgbWV0YWRhdGEgb2JqZWN0cy4gKi9cbiAgICBwZXJzaXN0ZXI6IExvY2FsU3RvcmFnZUNhY2hlO1xuICAgIC8qKiBPbmx5IHNldCB3aGVuIGRhdGFjb3JlIGlzIGluIHRoZSBtaWRzdCBvZiBpbml0aWFsaXphdGlvbjsgdHJhY2tzIGN1cnJlbnQgcHJvZ3Jlc3MuICovXG4gICAgaW5pdGlhbGl6ZXI/OiBEYXRhY29yZUluaXRpYWxpemVyO1xuICAgIC8qKiBJZiB0cnVlLCBkYXRhY29yZSBpcyBmdWxseSBoeWRyYXRlZCBhbmQgYWxsIGZpbGVzIGhhdmUgYmVlbiBpbmRleGVkLiAqL1xuICAgIGluaXRpYWxpemVkOiBib29sZWFuO1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIGFwcDogQXBwLCBwdWJsaWMgdmVyc2lvbjogc3RyaW5nLCBwdWJsaWMgc2V0dGluZ3M6IFNldHRpbmdzKSB7XG4gICAgICAgIHN1cGVyKCk7XG5cbiAgICAgICAgdGhpcy52YXVsdCA9IGFwcC52YXVsdDtcbiAgICAgICAgdGhpcy5tZXRhZGF0YUNhY2hlID0gYXBwLm1ldGFkYXRhQ2FjaGU7XG4gICAgICAgIHRoaXMucGVyc2lzdGVyID0gbmV3IExvY2FsU3RvcmFnZUNhY2hlKFwicHJpbWFyeVwiLCB2ZXJzaW9uKTtcbiAgICAgICAgdGhpcy5ldmVudHMgPSBuZXcgRXZlbnRzKCk7XG5cbiAgICAgICAgdGhpcy5kYXRhc3RvcmUgPSBuZXcgRGF0YXN0b3JlKGFwcC52YXVsdCwgYXBwLm1ldGFkYXRhQ2FjaGUsIHNldHRpbmdzKTtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplZCA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMuYWRkQ2hpbGQoXG4gICAgICAgICAgICAodGhpcy5pbXBvcnRlciA9IG5ldyBGaWxlSW1wb3J0ZXIoYXBwLnZhdWx0LCBhcHAuZmlsZU1hbmFnZXIsIGFwcC5tZXRhZGF0YUNhY2hlLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgd29ya2Vyczogc2V0dGluZ3MuaW1wb3J0ZXJOdW1UaHJlYWRzLFxuICAgICAgICAgICAgICAgICAgICB1dGlsaXphdGlvbjogTWF0aC5tYXgoMC4xLCBNYXRoLm1pbigxLjAsIHNldHRpbmdzLmltcG9ydGVyVXRpbGl6YXRpb24pKSxcbiAgICAgICAgICAgICAgICB9IGFzIEltcG9ydFRocm90dGxlO1xuICAgICAgICAgICAgfSkpXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gVE9ETyAoYmxhY2tzbWl0aGd1KTogQWRkIGEgbmV3IHNldHRpbmcgZm9yIGVtYmVkIHF1ZXVlIGNvbmN1cnJlbmN5LlxuICAgICAgICB0aGlzLmFkZENoaWxkKCh0aGlzLnJlYWRzID0gbmV3IEVtYmVkUXVldWUoYXBwLnZhdWx0LCAoKSA9PiA4KSkpO1xuICAgIH1cblxuICAgIC8qKiBPYnRhaW4gdGhlIGN1cnJlbnQgaW5kZXggcmV2aXNpb24sIGZvciBkZXRlcm1pbmluZyBpZiBhbnl0aGluZyBoYXMgY2hhbmdlZC4gKi9cbiAgICBnZXQgcmV2aXNpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGFzdG9yZS5yZXZpc2lvbjtcbiAgICB9XG5cbiAgICAvKiogSW5pdGlhbGl6ZSBkYXRhY29yZSBieSBzY2FubmluZyBwZXJzaXN0ZWQgY2FjaGVzIGFuZCBhbGwgYXZhaWxhYmxlIGZpbGVzLCBhbmQgcXVldWVpbmcgcGFyc2VzIGFzIG5lZWRlZC4gKi9cbiAgICBpbml0aWFsaXplKCkge1xuICAgICAgICAvLyBNZXRhZGF0YSBjYWNoZSBoYW5kbGVzIG1hcmtkb3duIGZpbGUgdXBkYXRlcy5cbiAgICAgICAgdGhpcy5yZWdpc3RlckV2ZW50KHRoaXMubWV0YWRhdGFDYWNoZS5vbihcInJlc29sdmVcIiwgKGZpbGUpID0+IHRoaXMucmVsb2FkKGZpbGUpKSk7XG5cbiAgICAgICAgLy8gUmVuYW1lcyBkbyBub3Qgc2V0IG9mZiB0aGUgbWV0YWRhdGEgY2FjaGU7IGNhdGNoIHRoZXNlIGV4cGxpY2l0bHkuXG4gICAgICAgIHRoaXMucmVnaXN0ZXJFdmVudCh0aGlzLnZhdWx0Lm9uKFwicmVuYW1lXCIsIHRoaXMucmVuYW1lLCB0aGlzKSk7XG5cbiAgICAgICAgLy8gSGFuZGxlIGdlbmVyaWMgZmlsZSBjcmVhdGVzIGFuZCB1cGRhdGVzOyByZXNvbHZlIGdlbmVyYWxseSBvbmx5IGFwcGxpZXMgdG8gbWFya2Rvd24gZmlsZXNcbiAgICAgICAgLy8gYnV0IHdlIGRvIGtlZXAgYmFzaWMgbWV0YWRhdGEgYWJvdXQgYWxsIGZpbGVzLlxuICAgICAgICB0aGlzLnJlZ2lzdGVyRXZlbnQoXG4gICAgICAgICAgICB0aGlzLnZhdWx0Lm9uKFwiY3JlYXRlXCIsIChmaWxlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCEoZmlsZSBpbnN0YW5jZW9mIFRGaWxlKSkgcmV0dXJuO1xuXG4gICAgICAgICAgICAgICAgLy8gSGFuZGxlZCBieSB0aGUgbWV0YWRhdGEgY2FjaGUuXG4gICAgICAgICAgICAgICAgaWYgKElOREVYQUJMRV9FWFRFTlNJT05TLmhhcyhmaWxlLmV4dGVuc2lvbi50b0xvd2VyQ2FzZSgpKSkgcmV0dXJuO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5yZWxvYWQoZmlsZSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMucmVnaXN0ZXJFdmVudChcbiAgICAgICAgICAgIHRoaXMudmF1bHQub24oXCJtb2RpZnlcIiwgKGZpbGUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIShmaWxlIGluc3RhbmNlb2YgVEZpbGUpKSByZXR1cm47XG5cbiAgICAgICAgICAgICAgICAvLyBIYW5kbGVkIGJ5IHRoZSBtZXRhZGF0YSBjYWNoZS5cbiAgICAgICAgICAgICAgICBpZiAoSU5ERVhBQkxFX0VYVEVOU0lPTlMuaGFzKGZpbGUuZXh0ZW5zaW9uLnRvTG93ZXJDYXNlKCkpKSByZXR1cm47XG5cbiAgICAgICAgICAgICAgICB0aGlzLnJlbG9hZChmaWxlKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gRmlsZSBjcmVhdGlvbiBkb2VzIGNhdXNlIGEgbWV0YWRhdGEgY2hhbmdlLCBidXQgZGVsZXRlcyBkbyBub3QuIENsZWFyIHRoZSBjYWNoZXMgZm9yIHRoaXMuXG4gICAgICAgIHRoaXMucmVnaXN0ZXJFdmVudChcbiAgICAgICAgICAgIHRoaXMudmF1bHQub24oXCJkZWxldGVcIiwgKGZpbGUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZmlsZSBpbnN0YW5jZW9mIFRGaWxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YXN0b3JlLmRlbGV0ZShmaWxlLnBhdGgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5pbmRleCgpO1xuICAgIH1cblxuICAgIC8qKiBTdGFydHMgdGhlIGJhY2tncm91bmQgaW5pdGlhbGl6ZXIuICovXG4gICAgaW5kZXgoKSB7XG4gICAgICAgIC8vIEFzeW5jaHJvbm91c2x5IGluaXRpYWxpemUgYWN0dWFsIGNvbnRlbnQgaW4gdGhlIGJhY2tncm91bmQgdXNpbmcgYSBsaWZlY3ljbGUtcmVzcGVjdGluZyBvYmplY3QuXG4gICAgICAgIGNvbnN0IGluaXQgPSAodGhpcy5pbml0aWFsaXplciA9IG5ldyBEYXRhY29yZUluaXRpYWxpemVyKHRoaXMpKTtcbiAgICAgICAgaW5pdC5maW5pc2hlZCgpLnRoZW4oKHN0YXRzKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB0aGlzLnJlbW92ZUNoaWxkKGluaXQpO1xuXG4gICAgICAgICAgICBjb25zdCBkdXJhdGlvblNlY3MgPSAoc3RhdHMuZHVyYXRpb25NcyAvIDEwMDAuMCkudG9GaXhlZCgzKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgIGBEYXRhY29yZTogSW1wb3J0ZWQgYWxsIGZpbGVzIGluIHRoZSB2YXVsdCBpbiAke2R1cmF0aW9uU2Vjc31zIGAgK1xuICAgICAgICAgICAgICAgICAgICBgKCR7c3RhdHMuaW1wb3J0ZWR9IGltcG9ydGVkLCAke3N0YXRzLmNhY2hlZH0gY2FjaGVkLCAke3N0YXRzLnNraXBwZWR9IHNraXBwZWQpLmBcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHRoaXMuZGF0YXN0b3JlLnRvdWNoKCk7XG4gICAgICAgICAgICB0aGlzLnRyaWdnZXIoXCJ1cGRhdGVcIiwgdGhpcy5yZXZpc2lvbik7XG4gICAgICAgICAgICB0aGlzLnRyaWdnZXIoXCJpbml0aWFsaXplZFwiKTtcblxuICAgICAgICAgICAgLy8gQ2xlYW4gdXAgYW55IGRvY3VtZW50cyB3aGljaCBubyBsb25nZXIgZXhpc3QgaW4gdGhlIHZhdWx0LlxuICAgICAgICAgICAgLy8gVE9ETzogSSB0aGluayB0aGlzIG1heSByYWNlIHdpdGggb3RoZXIgY29uY3VycmVudCBvcGVyYXRpb25zLCBzb1xuICAgICAgICAgICAgLy8gdGhpcyBtYXkgbmVlZCB0byBoYXBwZW4gYXQgdGhlIHN0YXJ0IG9mIGluaXQgYW5kIG5vdCBhdCB0aGUgZW5kLlxuICAgICAgICAgICAgY29uc3QgY3VycmVudEZpbGVzID0gdGhpcy52YXVsdC5nZXRGaWxlcygpLm1hcCgoZmlsZSkgPT4gZmlsZS5wYXRoKTtcbiAgICAgICAgICAgIHRoaXMucGVyc2lzdGVyXG4gICAgICAgICAgICAgICAgLnN5bmNocm9uaXplKGN1cnJlbnRGaWxlcylcbiAgICAgICAgICAgICAgICAudGhlbigoY2xlYXJlZCkgPT4gY29uc29sZS5sb2coYERhdGFjb3JlOiBkcm9wcGVkICR7Y2xlYXJlZC5zaXplfSBvdXQtb2YtZGF0ZSBmaWxlIG1ldGFkYXRhIGJsb2Nrcy5gKSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuYWRkQ2hpbGQoaW5pdCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZW5hbWUoZmlsZTogVEFic3RyYWN0RmlsZSwgb2xkUGF0aDogc3RyaW5nKSB7XG4gICAgICAgIGlmICghKGZpbGUgaW5zdGFuY2VvZiBURmlsZSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERlbGV0ZSB0aGUgZmlsZSBhdCB0aGUgb2xkIHBhdGgsIHRoZW4gcmVxdWVzdCBhIHJlbG9hZCBhdCB0aGUgbmV3IHBhdGguXG4gICAgICAgIC8vIFRoaXMgaXMgbGVzcyBvcHRpbWFsIHRoYW4gd2hhdCBjYW4gcHJvYmFibHkgYmUgZG9uZSwgYnV0IHBhdGhzIGFyZSB1c2VkIGluIGEgYnVuY2ggb2YgcGxhY2VzXG4gICAgICAgIC8vIChmb3Igc2VjdGlvbnMsIHRhc2tzLCBldGMgdG8gcmVmZXIgdG8gdGhlaXIgcGFyZW50IGZpbGUpIGFuZCBpdCByZXF1aXJlcyBzb21lIGZpbmVzc2UgdG8gZml4LlxuICAgICAgICB0aGlzLmRhdGFzdG9yZS5kZWxldGUob2xkUGF0aCk7XG4gICAgICAgIHRoaXMucmVsb2FkKGZpbGUpO1xuXG4gICAgICAgIC8vIFRPRE86IEZvciBjb3JyZWN0bmVzcywgcHJvYmFibHkgaGF2ZSB0byBlaXRoZXIgZml4IGxpbmtzIGluIGFsbCBsaW5rZWQgZmlsZXMgT1JcbiAgICAgICAgLy8ganVzdCBzdG9wIG5vcm1hbGl6aW5nIGxpbmtzIGluIHRoZSBzdG9yZS5cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWFkIGEgZmlsZSBmcm9tIHRoZSBPYnNpZGlhbiBjYWNoZSBlZmZpY2llbnRseSwgbGltaXRpbmcgdGhlIG51bWJlciBvZiBjb25jdXJyZW50IHJlcXVlc3QgYW5kIGRlYm91bmNpbmdcbiAgICAgKiBtdWx0aXBsZSByZXF1ZXN0cyBmb3IgdGhlIHNhbWUgZmlsZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgYXN5bmMgcmVhZChmaWxlOiBURmlsZSk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlYWRzLnJlYWQoZmlsZSk7XG4gICAgfVxuXG4gICAgLyoqIFF1ZXVlIGEgZmlsZSBmb3IgcmVsb2FkaW5nOyB0aGlzIGlzIGRvbmUgYXN5bmNocm9ub3VzbHkgaW4gdGhlIGJhY2tncm91bmQgYW5kIG1heSB0YWtlIGEgZmV3IHNlY29uZHMuICovXG4gICAgcHVibGljIGFzeW5jIHJlbG9hZChmaWxlOiBURmlsZSk6IFByb21pc2U8SW5kZXhhYmxlPiB7XG4gICAgICAgIC8vIEZpbHRlciBmaWxlcyBieSBmaWxlIGV4dGVuc2lvbnMuXG4gICAgICAgIGlmICghSU5ERVhBQkxFX0VYVEVOU0lPTlMuaGFzKGZpbGUuZXh0ZW5zaW9uKSkge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gbmV3IEdlbmVyaWNGaWxlKFxuICAgICAgICAgICAgICAgIGZpbGUucGF0aCxcbiAgICAgICAgICAgICAgICBEYXRlVGltZS5mcm9tTWlsbGlzKGZpbGUuc3RhdC5jdGltZSksXG4gICAgICAgICAgICAgICAgRGF0ZVRpbWUuZnJvbU1pbGxpcyhmaWxlLnN0YXQubXRpbWUpLFxuICAgICAgICAgICAgICAgIGZpbGUuc3RhdC5zaXplXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICB0aGlzLmRhdGFzdG9yZS5zdG9yZShyZXN1bHQpO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuaW1wb3J0ZXIuaW1wb3J0PEltcG9ydFJlc3VsdD4oZmlsZSk7XG5cbiAgICAgICAgaWYgKHJlc3VsdC50eXBlID09PSBcImVycm9yXCIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIGltcG9ydCBmaWxlICcke2ZpbGUubmFtZX06ICR7cmVzdWx0LiRlcnJvcn1gKTtcbiAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQudHlwZSA9PT0gXCJtYXJrZG93blwiKSB7XG4gICAgICAgICAgICAvLyBQYXJzZSB0aGUgZmlsZSBhbmQgbm9ybWFsaXplIG1ldGFkYXRhIGZyb20gaXQuXG4gICAgICAgICAgICBjb25zdCBwYXJzZWQgPSBNYXJrZG93blBhZ2UuZnJvbShyZXN1bHQucmVzdWx0LCAobGluaykgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJwYXRoID0gdGhpcy5tZXRhZGF0YUNhY2hlLmdldEZpcnN0TGlua3BhdGhEZXN0KGxpbmsucGF0aCwgcmVzdWx0LnJlc3VsdC4kcGF0aCEpO1xuICAgICAgICAgICAgICAgIGlmIChycGF0aCkgcmV0dXJuIGxpbmsud2l0aFBhdGgocnBhdGgucGF0aCk7XG4gICAgICAgICAgICAgICAgZWxzZSByZXR1cm4gbGluaztcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAvLyBTdG9yZSBpdCByZWN1cnNpdmVseSBpbnRvIHRoZSBkYXRhc3RvcmUgZm9yIHF1ZXJ5aW5nLlxuICAgICAgICAgICAgdGhpcy5zdG9yZU1hcmtkb3duKHBhcnNlZCk7XG5cbiAgICAgICAgICAgIC8vIFdyaXRlIGl0IHRvIHRoZSBmaWxlIGNhY2hlIGZvciBmYXN0ZXIgbG9hZHMgaW4gdGhlIGZ1dHVyZS5cbiAgICAgICAgICAgIHRoaXMucGVyc2lzdGVyLnN0b3JlRmlsZShwYXJzZWQuJHBhdGgsIHBhcnNlZC5qc29uKCkpO1xuXG4gICAgICAgICAgICAvLyBBbmQgZmluYWxseSB0cmlnZ2VyIGFuIHVwZGF0ZS5cbiAgICAgICAgICAgIHRoaXMudHJpZ2dlcihcInVwZGF0ZVwiLCB0aGlzLnJldmlzaW9uKTtcbiAgICAgICAgICAgIHJldHVybiBwYXJzZWQ7XG4gICAgICAgIH0gZWxzZSBpZiAocmVzdWx0LnR5cGUgPT09IFwiY2FudmFzXCIpIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcnNlZCA9IENhbnZhcy5mcm9tKHJlc3VsdC5yZXN1bHQsIChsaW5rKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcnBhdGggPSB0aGlzLm1ldGFkYXRhQ2FjaGUuZ2V0Rmlyc3RMaW5rcGF0aERlc3QobGluay5wYXRoLCByZXN1bHQucmVzdWx0LiRwYXRoISk7XG4gICAgICAgICAgICAgICAgaWYgKHJwYXRoKSByZXR1cm4gbGluay53aXRoUGF0aChycGF0aC5wYXRoKTtcbiAgICAgICAgICAgICAgICBlbHNlIHJldHVybiBsaW5rO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLnN0b3JlQ2FudmFzKHBhcnNlZCk7XG4gICAgICAgICAgICB0aGlzLnBlcnNpc3Rlci5zdG9yZUZpbGUocGFyc2VkLiRwYXRoLCBwYXJzZWQuanNvbigpKTtcbiAgICAgICAgICAgIHRoaXMudHJpZ2dlcihcInVwZGF0ZVwiLCB0aGlzLnJldmlzaW9uKTtcbiAgICAgICAgICAgIHJldHVybiBwYXJzZWQ7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJFbmNvdW50ZXJlZCB1bnJlY29nbml6ZWQgaW1wb3J0IHJlc3VsdCB0eXBlOiBcIiArIChyZXN1bHQgYXMgYW55KS50eXBlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RvcmVDYW52YXMoZGF0YTogQ2FudmFzKSB7XG4gICAgICAgIHRoaXMuZGF0YXN0b3JlLnN0b3JlKGRhdGEsIChvYmplY3QsIHN0b3JlKSA9PiB7XG4gICAgICAgICAgICBzdG9yZShvYmplY3QuJGNhcmRzLCAoY2FyZCwgc3RvcmUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoY2FyZCBpbnN0YW5jZW9mIENhbnZhc1RleHRDYXJkKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0b3JlKGNhcmQuJHNlY3Rpb25zLCAoc2VjdGlvbiwgc3RvcmUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlKHNlY3Rpb24uJGJsb2NrcywgKGJsb2NrLCBzdG9yZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChibG9jayBpbnN0YW5jZW9mIE1hcmtkb3duTGlzdEJsb2NrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlY3Vyc2l2ZSBzdG9yZSBmdW5jdGlvbiBmb3Igc3RvcmluZyBsaXN0IGhlaXJhcmNoaWVzLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdG9yZVJlYzogU3Vic3RvcmVyPE1hcmtkb3duTGlzdEl0ZW0+ID0gKGl0ZW0sIHN0b3JlKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmUoaXRlbS4kZWxlbWVudHMsIHN0b3JlUmVjKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZShibG9jay4kZWxlbWVudHMsIHN0b3JlUmVjKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBTdG9yZSBhIG1hcmtkb3duIGRvY3VtZW50LiAqL1xuICAgIHB1YmxpYyBzdG9yZU1hcmtkb3duKGRhdGE6IE1hcmtkb3duUGFnZSkge1xuICAgICAgICB0aGlzLmRhdGFzdG9yZS5zdG9yZShkYXRhLCAob2JqZWN0LCBzdG9yZSkgPT4ge1xuICAgICAgICAgICAgc3RvcmUob2JqZWN0LiRzZWN0aW9ucywgKHNlY3Rpb24sIHN0b3JlKSA9PiB7XG4gICAgICAgICAgICAgICAgc3RvcmUoc2VjdGlvbi4kYmxvY2tzLCAoYmxvY2ssIHN0b3JlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChibG9jayBpbnN0YW5jZW9mIE1hcmtkb3duTGlzdEJsb2NrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBSZWN1cnNpdmUgc3RvcmUgZnVuY3Rpb24gZm9yIHN0b3JpbmcgbGlzdCBoZWlyYXJjaGllcy5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0b3JlUmVjOiBTdWJzdG9yZXI8TWFya2Rvd25MaXN0SXRlbT4gPSAoaXRlbSwgc3RvcmUpID0+IHN0b3JlKGl0ZW0uJGVsZW1lbnRzLCBzdG9yZVJlYyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlKGJsb2NrLiRlbGVtZW50cywgc3RvcmVSZWMpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gRXZlbnQgcHJvcG9nYXRpb24uXG5cbiAgICAvKiogQ2FsbGVkIHdoZW5ldmVyIHRoZSBpbmRleCB1cGRhdGVzIHRvIGEgbmV3IHJldmlzaW9uLiBUaGlzIGlzIHRoZSBicm9hZGVzdCBwb3NzaWJsZSBkYXRhY29yZSBldmVudC4gKi9cbiAgICBwdWJsaWMgb24oZXZ0OiBcInVwZGF0ZVwiLCBjYWxsYmFjazogKHJldmlzaW9uOiBudW1iZXIpID0+IGFueSwgY29udGV4dD86IGFueSk6IEV2ZW50UmVmO1xuICAgIHB1YmxpYyBvbihldnQ6IFwiaW5pdGlhbGl6ZWRcIiwgY2FsbGJhY2s6ICgpID0+IGFueSwgY29udGV4dD86IGFueSk6IEV2ZW50UmVmO1xuXG4gICAgb24oZXZ0OiBzdHJpbmcsIGNhbGxiYWNrOiAoLi4uZGF0YTogYW55KSA9PiBhbnksIGNvbnRleHQ/OiBhbnkpOiBFdmVudFJlZiB7XG4gICAgICAgIHJldHVybiB0aGlzLmV2ZW50cy5vbihldnQsIGNhbGxiYWNrLCBjb250ZXh0KTtcbiAgICB9XG5cbiAgICAvKiogVW5zdWJzY3JpYmUgZnJvbSBhbiBldmVudCB1c2luZyB0aGUgZXZlbnQgYW5kIG9yaWdpbmFsIGNhbGxiYWNrLiAqL1xuICAgIG9mZihldnQ6IHN0cmluZywgY2FsbGJhY2s6ICguLi5kYXRhOiBhbnkpID0+IGFueSkge1xuICAgICAgICB0aGlzLmV2ZW50cy5vZmYoZXZ0LCBjYWxsYmFjayk7XG4gICAgfVxuXG4gICAgLyoqIFVuc3Vic2NyaWJlIGZyb20gYW4gZXZlbnQgdXNpbmcgdGhlIGV2ZW50IHJlZmVyZW5jZS4gICovXG4gICAgb2ZmcmVmKHJlZjogRXZlbnRSZWYpIHtcbiAgICAgICAgdGhpcy5ldmVudHMub2ZmcmVmKHJlZik7XG4gICAgfVxuXG4gICAgLyoqIFRyaWdnZXIgYW4gdXBkYXRlIGV2ZW50LiAqL1xuICAgIHByaXZhdGUgdHJpZ2dlcihldnQ6IFwidXBkYXRlXCIsIHJldmlzaW9uOiBudW1iZXIpOiB2b2lkO1xuICAgIC8qKiBUcmlnZ2VyIGFuIGluaXRpYWxpemF0aW9uIGV2ZW50LiAqL1xuICAgIHByaXZhdGUgdHJpZ2dlcihldnQ6IFwiaW5pdGlhbGl6ZWRcIik6IHZvaWQ7XG5cbiAgICAvKiogVHJpZ2dlciBhbiBldmVudC4gKi9cbiAgICBwcml2YXRlIHRyaWdnZXIoZXZ0OiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZXZlbnRzLnRyaWdnZXIoZXZ0LCAuLi5hcmdzKTtcbiAgICB9XG59XG5cbi8qKiBMaWZlY3ljbGUtcmVzcGVjdGluZyBmaWxlIHF1ZXVlIHdoaWNoIHdpbGwgaW1wb3J0IGZpbGVzLCByZWFkaW5nIHRoZW0gZnJvbSB0aGUgZmlsZSBjYWNoZSBpZiBuZWVkZWQuICovXG5leHBvcnQgY2xhc3MgRGF0YWNvcmVJbml0aWFsaXplciBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgLyoqIE51bWJlciBvZiBjb25jdXJyZW50IG9wZXJhdGlvbnMgdGhlIGluaXRpYWxpemVyIHdpbGwgcGVyZm9ybS4gKi9cbiAgICBzdGF0aWMgQkFUQ0hfU0laRTogbnVtYmVyID0gODtcblxuICAgIC8qKiBXaGV0aGVyIHRoZSBpbml0aWFsaXplciBzaG91bGQgY29udGludWUgdG8gcnVuLiAqL1xuICAgIGFjdGl2ZTogYm9vbGVhbjtcblxuICAgIC8qKiBRdWV1ZSBvZiBmaWxlcyB0byBzdGlsbCBpbXBvcnQuICovXG4gICAgcXVldWU6IFRGaWxlW107XG4gICAgLyoqIFRoZSBmaWxlcyBhY3RpdmVseSBiZWluZyBpbXBvcnRlZC4gKi9cbiAgICBjdXJyZW50OiBURmlsZVtdO1xuICAgIC8qKiBEZWZlcnJlZCBwcm9taXNlIHdoaWNoIHJlc29sdmVzIHdoZW4gaW1wb3J0aW5nIGlzIGRvbmUuICovXG4gICAgZG9uZTogRGVmZXJyZWQ8SW5pdGlhbGl6YXRpb25TdGF0cz47XG5cbiAgICAvKiogVGhlIHRvdGFsIG51bWJlciBvZiB0YXJnZXQgZmlsZXMgdG8gaW1wb3J0LiAqL1xuICAgIHRhcmdldFRvdGFsOiBudW1iZXI7XG4gICAgLyoqIFRoZSB0aW1lIHRoYXQgaW5pdCBzdGFydGVkIGluIG1pbGxpc2Vjb25kcy4gKi9cbiAgICBzdGFydDogbnVtYmVyO1xuICAgIC8qKiBUb3RhbCBudW1iZXIgb2YgZmlsZXMgdG8gaW1wb3J0LiAqL1xuICAgIGZpbGVzOiBudW1iZXI7XG4gICAgLyoqIFRvdGFsIG51bWJlciBvZiBpbXBvcnRlZCBmaWxlcyBzbyBmYXIuICovXG4gICAgaW5pdGlhbGl6ZWQ6IG51bWJlcjtcbiAgICAvKiogVG90YWwgbnVtYmVyIG9mIGltcG9ydGVkIGZpbGVzLiAqL1xuICAgIGltcG9ydGVkOiBudW1iZXI7XG4gICAgLyoqIFRvdGFsIG51bWJlciBvZiBza2lwcGVkIGZpbGVzLiAqL1xuICAgIHNraXBwZWQ6IG51bWJlcjtcbiAgICAvKiogVG90YWwgbnVtYmVyIG9mIGNhY2hlZCBmaWxlcy4gKi9cbiAgICBjYWNoZWQ6IG51bWJlcjtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBjb3JlOiBEYXRhY29yZSkge1xuICAgICAgICBzdXBlcigpO1xuXG4gICAgICAgIHRoaXMuYWN0aXZlID0gZmFsc2U7XG4gICAgICAgIHRoaXMucXVldWUgPSB0aGlzLmNvcmUudmF1bHQuZ2V0RmlsZXMoKTtcbiAgICAgICAgdGhpcy50YXJnZXRUb3RhbCA9IHRoaXMucXVldWUubGVuZ3RoO1xuICAgICAgICB0aGlzLmZpbGVzID0gdGhpcy5xdWV1ZS5sZW5ndGg7XG4gICAgICAgIHRoaXMuc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgICAgICB0aGlzLmN1cnJlbnQgPSBbXTtcbiAgICAgICAgdGhpcy5kb25lID0gZGVmZXJyZWQoKTtcblxuICAgICAgICB0aGlzLmluaXRpYWxpemVkID0gdGhpcy5pbXBvcnRlZCA9IHRoaXMuc2tpcHBlZCA9IHRoaXMuY2FjaGVkID0gMDtcbiAgICB9XG5cbiAgICBhc3luYyBvbmxvYWQoKSB7XG4gICAgICAgIC8vIFF1ZXVlIEJBVENIX1NJWkUgZWxlbWVudHMgZnJvbSB0aGUgcXVldWUgdG8gaW1wb3J0LlxuICAgICAgICB0aGlzLmFjdGl2ZSA9IHRydWU7XG5cbiAgICAgICAgdGhpcy5ydW5OZXh0KCk7XG4gICAgfVxuXG4gICAgLyoqIFByb21pc2Ugd2hpY2ggcmVzb2x2ZXMgd2hlbiB0aGUgaW5pdGlhbGl6YXRpb24gY29tcGxldGVzLiAqL1xuICAgIGZpbmlzaGVkKCk6IFByb21pc2U8SW5pdGlhbGl6YXRpb25TdGF0cz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5kb25lO1xuICAgIH1cblxuICAgIC8qKiBDYW5jZWwgaW5pdGlhbGl6YXRpb24uICovXG4gICAgb251bmxvYWQoKSB7XG4gICAgICAgIGlmICh0aGlzLmFjdGl2ZSkge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuZG9uZS5yZWplY3QoXCJJbml0aWFsaXphdGlvbiB3YXMgY2FuY2VsbGVkIGJlZm9yZSBjb21wbGV0aW5nLlwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBQb2xsIGZvciBhbm90aGVyIHRhc2sgdG8gZXhlY3V0ZSBmcm9tIHRoZSBxdWV1ZS4gKi9cbiAgICBwcml2YXRlIHJ1bk5leHQoKSB7XG4gICAgICAgIC8vIERvIG5vdGhpbmcgaWYgbWF4IG51bWJlciBvZiBjb25jdXJyZW50IG9wZXJhdGlvbnMgYWxyZWFkeSBydW5uaW5nLlxuICAgICAgICBpZiAoIXRoaXMuYWN0aXZlIHx8IHRoaXMuY3VycmVudC5sZW5ndGggPj0gRGF0YWNvcmVJbml0aWFsaXplci5CQVRDSF9TSVpFKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBUaGVyZSBpcyBzcGFjZSBhdmFpbGFibGUgdG8gZXhlY3V0ZSBhbm90aGVyLlxuICAgICAgICBjb25zdCBuZXh0ID0gdGhpcy5xdWV1ZS5wb3AoKTtcbiAgICAgICAgaWYgKG5leHQpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudC5wdXNoKG5leHQpO1xuICAgICAgICAgICAgdGhpcy5pbml0KG5leHQpXG4gICAgICAgICAgICAgICAgLnRoZW4oKHJlc3VsdCkgPT4gdGhpcy5oYW5kbGVSZXN1bHQobmV4dCwgcmVzdWx0KSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goKHJlc3VsdCkgPT4gdGhpcy5oYW5kbGVSZXN1bHQobmV4dCwgcmVzdWx0KSk7XG5cbiAgICAgICAgICAgIHRoaXMucnVuTmV4dCgpO1xuICAgICAgICB9IGVsc2UgaWYgKCFuZXh0ICYmIHRoaXMuY3VycmVudC5sZW5ndGggPT0gMCkge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmUgPSBmYWxzZTtcblxuICAgICAgICAgICAgLy8gQWxsIHdvcmsgaXMgZG9uZSwgcmVzb2x2ZS5cbiAgICAgICAgICAgIHRoaXMuZG9uZS5yZXNvbHZlKHtcbiAgICAgICAgICAgICAgICBkdXJhdGlvbk1zOiBEYXRlLm5vdygpIC0gdGhpcy5zdGFydCxcbiAgICAgICAgICAgICAgICBmaWxlczogdGhpcy5maWxlcyxcbiAgICAgICAgICAgICAgICBpbXBvcnRlZDogdGhpcy5pbXBvcnRlZCxcbiAgICAgICAgICAgICAgICBza2lwcGVkOiB0aGlzLnNraXBwZWQsXG4gICAgICAgICAgICAgICAgY2FjaGVkOiB0aGlzLmNhY2hlZCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIFByb2Nlc3MgdGhlIHJlc3VsdCBvZiBhbiBpbml0aWFsaXphdGlvbiBhbmQgcXVldWUgbW9yZSBydW5zLiAqL1xuICAgIHByaXZhdGUgaGFuZGxlUmVzdWx0KGZpbGU6IFRGaWxlLCByZXN1bHQ6IEluaXRpYWxpemF0aW9uUmVzdWx0KSB7XG4gICAgICAgIHRoaXMuY3VycmVudC5yZW1vdmUoZmlsZSk7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQrKztcblxuICAgICAgICBpZiAocmVzdWx0LnN0YXR1cyA9PT0gXCJza2lwcGVkXCIpIHRoaXMuc2tpcHBlZCsrO1xuICAgICAgICBlbHNlIGlmIChyZXN1bHQuc3RhdHVzID09PSBcImltcG9ydGVkXCIpIHRoaXMuaW1wb3J0ZWQrKztcbiAgICAgICAgZWxzZSBpZiAocmVzdWx0LnN0YXR1cyA9PT0gXCJjYWNoZWRcIikgdGhpcy5jYWNoZWQrKztcblxuICAgICAgICAvLyBRdWV1ZSBtb3JlIGpvYnMgZm9yIHByb2Nlc3NpbmcuXG4gICAgICAgIHRoaXMucnVuTmV4dCgpO1xuICAgIH1cblxuICAgIC8qKiBJbml0aWFsaXplIGEgc3BlY2lmaWMgZmlsZS4gKi9cbiAgICBwcml2YXRlIGFzeW5jIGluaXQoZmlsZTogVEZpbGUpOiBQcm9taXNlPEluaXRpYWxpemF0aW9uUmVzdWx0PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBIYW5kbGUgbG9hZGluZyBtYXJrZG93biBmaWxlcyBmcm9tIGNhY2hlLlxuICAgICAgICAgICAgY29uc3QgY2FjaGVkID0gYXdhaXQgdGhpcy5jb3JlLnBlcnNpc3Rlci5sb2FkRmlsZShmaWxlLnBhdGgpO1xuICAgICAgICAgICAgaWYgKGNhY2hlZCAmJiBjYWNoZWQudGltZSA+PSBmaWxlLnN0YXQubXRpbWUgJiYgY2FjaGVkLnZlcnNpb24gPT0gdGhpcy5jb3JlLnZlcnNpb24pIHtcbiAgICAgICAgICAgICAgICBpZiAoZmlsZS5leHRlbnNpb24gPT09IFwibWRcIikge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gTWFya2Rvd25QYWdlLmZyb20oY2FjaGVkLmRhdGEgYXMgSnNvbk1hcmtkb3duUGFnZSwgKGxpbmspID0+IGxpbmspO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvcmUuc3RvcmVNYXJrZG93bihkYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgc3RhdHVzOiBcImNhY2hlZFwiIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBEb2VzIG5vdCBtYXRjaCBhbiBleGlzdGluZyBpbXBvcnQgdHlwZSwganVzdCByZWxvYWQgbm9ybWFsbHkuXG4gICAgICAgICAgICBhd2FpdCB0aGlzLmNvcmUucmVsb2FkKGZpbGUpO1xuICAgICAgICAgICAgcmV0dXJuIHsgc3RhdHVzOiBcImltcG9ydGVkXCIgfTtcbiAgICAgICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiRGF0YWNvcmU6IEZhaWxlZCB0byBpbXBvcnQgZmlsZTogXCIsIGV4KTtcbiAgICAgICAgICAgIHJldHVybiB7IHN0YXR1czogXCJza2lwcGVkXCIgfTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLyoqIFN0YXRpc3RpY3MgYWJvdXQgYSBzdWNjZXNzZnVsIHZhdWx0IGluaXRpYWxpemF0aW9uLiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbml0aWFsaXphdGlvblN0YXRzIHtcbiAgICAvKiogSG93IGxvbmcgaW5pdGlhbGl6YXRvbiB0b29rIGluIG1pbGlzZWNvbmRzLiAqL1xuICAgIGR1cmF0aW9uTXM6IG51bWJlcjtcbiAgICAvKiogVG90YWwgbnVtYmVyIG9mIGZpbGVzIHRoYXQgd2VyZSBpbXBvcnRlZCAqL1xuICAgIGZpbGVzOiBudW1iZXI7XG4gICAgLyoqIFRoZSBudW1iZXIgb2YgZmlsZXMgdGhhdCB3ZXJlIGxvYWRlZCBhbmQgaW1wb3J0ZWQgdmlhIGJhY2tncm91bmQgd29ya2Vycy4gKi9cbiAgICBpbXBvcnRlZDogbnVtYmVyO1xuICAgIC8qKiBUaGUgbnVtYmVyIG9mIGZpbGVzIHRoYXQgd2VyZSBza2lwcGVkIGR1ZSB0byBubyBsb25nZXIgZXhpc3Rpbmcgb3Igbm90IGJlaW5nIHJlYWR5LiAqL1xuICAgIHNraXBwZWQ6IG51bWJlcjtcbiAgICAvKiogVGhlIG51bWJlciBvZiBmaWxlcyBsb2FkZWQgZnJvbSB0aGUgSW5kZXhlZERCIGNhY2hlLiAqL1xuICAgIGNhY2hlZDogbnVtYmVyO1xufVxuXG4vKiogVGhlIHJlc3VsdCBvZiBpbml0aWFsaXppbmcgYSBmaWxlLiAqL1xuaW50ZXJmYWNlIEluaXRpYWxpemF0aW9uUmVzdWx0IHtcbiAgICBzdGF0dXM6IFwic2tpcHBlZFwiIHwgXCJpbXBvcnRlZFwiIHwgXCJjYWNoZWRcIjtcbn1cbiIsICIvKipcbiAqIEBtb2R1bGUgaW5kZXhhYmxlc1xuICovXG5pbXBvcnQgeyBMaW5rIH0gZnJvbSBcImV4cHJlc3Npb24vbGlua1wiO1xuaW1wb3J0IHsgRklMRV9UWVBFLCBGaWxlLCBJbmRleGFibGUsIExJTktBQkxFX1RZUEUsIExpbmthYmxlIH0gZnJvbSBcIi4vaW5kZXhhYmxlXCI7XG5pbXBvcnQgeyBEYXRlVGltZSB9IGZyb20gXCJsdXhvblwiO1xuaW1wb3J0IHsgRXh0cmFjdG9ycywgRklFTERCRUFSSU5HX1RZUEUsIEZpZWxkRXh0cmFjdG9yLCBGaWVsZGJlYXJpbmcgfSBmcm9tIFwiZXhwcmVzc2lvbi9maWVsZFwiO1xuaW1wb3J0IHsgTGl0ZXJhbCB9IGZyb20gXCJleHByZXNzaW9uL2xpdGVyYWxcIjtcblxuLyoqIERhdGFjb3JlIHJlcHJlc2VudGF0aW9uIG9mIGEgZ2VuZXJpYyBmaWxlIHdpdGggbm8gYWRkaXRpb25hbCBwYXJzaW5nLiAqL1xuZXhwb3J0IGNsYXNzIEdlbmVyaWNGaWxlIGltcGxlbWVudHMgRmlsZSwgSW5kZXhhYmxlLCBGaWVsZGJlYXJpbmcsIExpbmthYmxlIHtcbiAgICBzdGF0aWMgVFlQRVM6IHN0cmluZ1tdID0gW0ZJTEVfVFlQRSwgRklFTERCRUFSSU5HX1RZUEUsIExJTktBQkxFX1RZUEVdO1xuXG4gICAgJHR5cGVzOiBzdHJpbmdbXSA9IEdlbmVyaWNGaWxlLlRZUEVTO1xuICAgICR0eXBlbmFtZTogc3RyaW5nID0gXCJGaWxlXCI7XG5cbiAgICAkcGF0aDogc3RyaW5nO1xuICAgIC8qKiBPYnNpZGlhbi1wcm92aWRlZCBkYXRlIHRoaXMgcGFnZSB3YXMgY3JlYXRlZC4gKi9cbiAgICAkY3RpbWU6IERhdGVUaW1lO1xuICAgIC8qKiBPYnNpZGlhbi1wcm92aWRlZCBkYXRlIHRoaXMgcGFnZSB3YXMgbW9kaWZpZWQuICovXG4gICAgJG10aW1lOiBEYXRlVGltZTtcbiAgICAvKiogT2JzaWRpYW4tcHJvdmlkZWQgc2l6ZSBvZiB0aGlzIHBhZ2UgaW4gYnl0ZXMuICovXG4gICAgJHNpemU6IG51bWJlcjtcbiAgICAvKiogVGhlIGV4dGVuc2lvbiBvZiB0aGUgZmlsZS4gKi9cbiAgICAkZXh0ZW5zaW9uOiBzdHJpbmc7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IocGF0aDogc3RyaW5nLCBjdGltZTogRGF0ZVRpbWUsIG10aW1lOiBEYXRlVGltZSwgc2l6ZTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuJHBhdGggPSBwYXRoO1xuICAgICAgICB0aGlzLiRjdGltZSA9IGN0aW1lO1xuICAgICAgICB0aGlzLiRtdGltZSA9IG10aW1lO1xuICAgICAgICB0aGlzLiRzaXplID0gc2l6ZTtcblxuICAgICAgICBjb25zdCBsYXN0RG90ID0gcGF0aC5sYXN0SW5kZXhPZihcIi5cIik7XG4gICAgICAgIHRoaXMuJGV4dGVuc2lvbiA9IGxhc3REb3QgPCAwID8gXCJcIiA6IHBhdGguc3Vic3RyaW5nKGxhc3REb3QgKyAxKTtcbiAgICB9XG5cbiAgICBnZXQgZmllbGRzKCkge1xuICAgICAgICByZXR1cm4gR2VuZXJpY0ZpbGUuRklFTERfREVGKHRoaXMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBmaWVsZChrZXk6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gR2VuZXJpY0ZpbGUuRklFTERfREVGKHRoaXMsIGtleSk/LlswXTtcbiAgICB9XG5cbiAgICAvKiogR2V0IHRoZSB2YWx1ZSBmb3IgdGhlIGdpdmVuIGZpZWxkLiAqL1xuICAgIHB1YmxpYyB2YWx1ZShrZXk6IHN0cmluZyk6IExpdGVyYWwgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5maWVsZChrZXkpPy52YWx1ZTtcbiAgICB9XG5cbiAgICAvKiogVW5pcXVlIElEIGZvciB0aGlzIG9iamVjdC4gKi9cbiAgICBnZXQgJGlkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLiRwYXRoO1xuICAgIH1cblxuICAgIC8qKiBUaGUgZmlsZSBmb3IgdGhlIGZpbGUgaXMgdGhlIGZpbGUuICovXG4gICAgZ2V0ICRmaWxlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLiRwYXRoO1xuICAgIH1cblxuICAgIC8qKiBBIGxpbmsgdG8gdGhlIGZpbGUuICovXG4gICAgZ2V0ICRsaW5rKCk6IExpbmsge1xuICAgICAgICByZXR1cm4gTGluay5maWxlKHRoaXMuJHBhdGgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIEZJRUxEX0RFRjogRmllbGRFeHRyYWN0b3I8R2VuZXJpY0ZpbGU+ID0gRXh0cmFjdG9ycy5pbnRyaW5zaWNzKCk7XG59XG4iLCAiaW1wb3J0IHsgUXVldWUgfSBmcm9tIFwiQGRhdGFzdHJ1Y3R1cmVzLWpzL3F1ZXVlXCI7XG5pbXBvcnQgeyBSZXN1bHQgfSBmcm9tIFwiYXBpL3Jlc3VsdFwiO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBURmlsZSwgVmF1bHQgfSBmcm9tIFwib2JzaWRpYW5cIjtcbmltcG9ydCB7IERlZmVycmVkLCBkZWZlcnJlZCB9IGZyb20gXCJ1dGlscy9kZWZlcnJlZFwiO1xuXG4vKiogUXVldWVzIHVwIGxvYWRzIG9mIGZpbGVzIHRvIHJlZHVjZSB0aGUgbWF4aW11bSBudW1iZXIgb2YgY29uY3VycmVudCBsb2Fkcy4gKi9cbmV4cG9ydCBjbGFzcyBFbWJlZFF1ZXVlIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICAvKiogU2V0IG9mIHBlbmRpbmcgbG9hZHMuICovXG4gICAgcHJpdmF0ZSBxdWV1ZTogUXVldWU8VEZpbGU+ID0gbmV3IFF1ZXVlKCk7XG4gICAgLyoqIFNldCBvZiBwcm9taXNlcyB3YWl0aW5nIG9uIGVhY2ggcGF0aC4gKi9cbiAgICBwcml2YXRlIHByb21pc2VzOiBNYXA8c3RyaW5nLCBEZWZlcnJlZDxzdHJpbmc+W10+ID0gbmV3IE1hcCgpO1xuICAgIC8qKiBBY3RpdmUgc2V0IG9mIGxvYWRzLiAqL1xuICAgIHByaXZhdGUgYWN0aXZlOiBNYXA8c3RyaW5nLCBQcm9taXNlPHN0cmluZz4+ID0gbmV3IE1hcCgpO1xuICAgIC8qKiBJZiB0cnVlLCBwcmV2ZW50IGFueSBmdXJ0aGVyIGxvYWRzLiAqL1xuICAgIHByaXZhdGUgc2h1dGRvd246IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihwdWJsaWMgdmF1bHQ6IFZhdWx0LCBwdWJsaWMgY29uY3VycmVuY3k6ICgpID0+IG51bWJlcikge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIC8qKiBSZWFkIGEgZmlsZSBhc3luY2hyb25vdXNseSwgY29udHJvbGxpbmcgY29uY3VycmVuY3kgdG8gcHJldmVudCB0b28gbWFueSBmaWxlcyBiZWluZyBsb2FkZWQgc2ltdWx0YW5lb3VzbHkuICovXG4gICAgcHVibGljIGFzeW5jIHJlYWQoZmlsZTogVEZpbGUpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICBpZiAodGhpcy5zaHV0ZG93bikgcmV0dXJuIFByb21pc2UucmVqZWN0KFwiRW1iZWQgcXVldWUgaXMgc2h1dGRvd24uXCIpO1xuXG4gICAgICAgIGNvbnN0IHByb21pc2UgPSBkZWZlcnJlZDxzdHJpbmc+KCk7XG5cbiAgICAgICAgLy8gSWYgd2UgYXJlbid0IGFscmVhZHkgaW4gdGhlIHF1ZXVlLCBhZGQgb3Vyc2VsdmVzIHRvIHF1ZXVlLiBPdGhlcndpc2UganVzdCBhcHBlbmQgb3V0c2VsZnMgdG8gdGhlIGludGVyZXN0ZWQgd2F0Y2hlciBmb3IgdGhlIHF1ZXVlLlxuICAgICAgICBpZiAoIXRoaXMucHJvbWlzZXMuaGFzKGZpbGUucGF0aCkpIHtcbiAgICAgICAgICAgIHRoaXMucXVldWUucHVzaChmaWxlKTtcbiAgICAgICAgICAgIHRoaXMucHJvbWlzZXMuc2V0KGZpbGUucGF0aCwgW3Byb21pc2VdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucHJvbWlzZXMuZ2V0KGZpbGUucGF0aCkhLnB1c2gocHJvbWlzZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNjaGVkdWxlKCk7XG4gICAgICAgIHJldHVybiBwcm9taXNlO1xuICAgIH1cblxuICAgIC8qKiBTY2hlZHVsZSBtb3JlIGxvYWRzIGZyb20gdGhlIHF1ZXVlIGludG8gdGhlIGFjdGl2ZSBzZXQgaWYgdGhlcmUgaXMgYXZhaWxhYmxlIHNwYWNlLiAqL1xuICAgIHByaXZhdGUgc2NoZWR1bGUoKSB7XG4gICAgICAgIHdoaWxlICh0aGlzLmFjdGl2ZS5zaXplIDwgdGhpcy5jb25jdXJyZW5jeSgpICYmIHRoaXMucXVldWUuc2l6ZSgpID4gMCkge1xuICAgICAgICAgICAgY29uc3QgZmlsZSA9IHRoaXMucXVldWUucG9wKCkhO1xuXG4gICAgICAgICAgICBjb25zdCByZWFkID0gdGhpcy52YXVsdC5jYWNoZWRSZWFkKGZpbGUpO1xuICAgICAgICAgICAgdGhpcy5hY3RpdmUuc2V0KGZpbGUucGF0aCwgcmVhZCk7XG5cbiAgICAgICAgICAgIHJlYWQudGhlbigoY29udGVudCkgPT4gdGhpcy5maW5pc2goZmlsZSwgUmVzdWx0LnN1Y2Nlc3MoY29udGVudCkpKS5jYXRjaCgoZXJyb3IpID0+XG4gICAgICAgICAgICAgICAgdGhpcy5maW5pc2goZmlsZSwgUmVzdWx0LmZhaWx1cmUoZXJyb3IpKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBDb21tdW5pY2F0ZSB0aGUgcmVzdWx0IG9mIGEgbG9hZGVkIGZpbGUgYW5kIHRoZW4gc2NoZWR1bGUgbW9yZSBmaWxlcyB0byBiZSBsb2FkZWQuICovXG4gICAgcHJpdmF0ZSBmaW5pc2goZmlsZTogVEZpbGUsIHJlc3VsdDogUmVzdWx0PHN0cmluZywgYW55Pikge1xuICAgICAgICB0aGlzLmFjdGl2ZS5kZWxldGUoZmlsZS5wYXRoKTtcblxuICAgICAgICBjb25zdCBwcm9taXNlcyA9IHRoaXMucHJvbWlzZXMuZ2V0KGZpbGUucGF0aCkgPz8gW107XG4gICAgICAgIHRoaXMucHJvbWlzZXMuZGVsZXRlKGZpbGUucGF0aCk7XG5cbiAgICAgICAgaWYgKHJlc3VsdC5zdWNjZXNzZnVsKSB7XG4gICAgICAgICAgICBwcm9taXNlcy5mb3JFYWNoKChwcm9taXNlKSA9PiBwcm9taXNlLnJlc29sdmUocmVzdWx0LnZhbHVlKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwcm9taXNlcy5mb3JFYWNoKChwcm9taXNlKSA9PiBwcm9taXNlLnJlamVjdChyZXN1bHQuZXJyb3IpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2NoZWR1bGUoKTtcbiAgICB9XG5cbiAgICAvKiogQ2FuY2VsbCBhbGwgb3V0c3RhbmRpbmcgbG9hZHMgb24gdW5sb2FkLiAqL1xuICAgIHB1YmxpYyBvbnVubG9hZCgpOiB2b2lkIHtcbiAgICAgICAgLy8gUmVqZWN0IGFsbCBvdXRzdGFuZGluZyBsb2Fkcy5cbiAgICAgICAgZm9yIChjb25zdCBwcm9taXNlcyBvZiB0aGlzLnByb21pc2VzLnZhbHVlcygpKSB7XG4gICAgICAgICAgICBwcm9taXNlcy5mb3JFYWNoKChwcm9taXNlKSA9PiBwcm9taXNlLnJlamVjdChcIkVtYmVkIHF1ZXVlIGlzIHNodXR0aW5nIGRvd24uXCIpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2h1dGRvd24gPSB0cnVlO1xuICAgIH1cbn1cbiIsICIvKipcbiAqIEBtb2R1bGUgaW5kZXhhYmxlc1xuICovXG5pbXBvcnQgeyBFeHRyYWN0b3JzLCBGaWVsZCwgRmllbGRiZWFyaW5nLCBGSUVMREJFQVJJTkdfVFlQRSwgRmllbGRFeHRyYWN0b3IgfSBmcm9tIFwiZXhwcmVzc2lvbi9maWVsZFwiO1xuaW1wb3J0IHsgRklMRV9UWVBFLCBJbmRleGFibGUsIExpbmthYmxlLCBMSU5LQUJMRV9UWVBFLCBMaW5rYmVhcmluZywgVGFnZ2FibGUsIFRBR0dBQkxFX1RZUEUgfSBmcm9tIFwiLi9pbmRleGFibGVcIjtcbmltcG9ydCB7XG4gICAgQ2FyZERpbWVuc2lvbnMsXG4gICAgQ2FyZFBvcyxcbiAgICBKc29uQmFzZUNhbnZhc0NhcmQsXG4gICAgSnNvbkNhbnZhcyxcbiAgICBKc29uQ2FudmFzQ2FyZCxcbiAgICBKc29uQ2FudmFzRmlsZUNhcmQsXG4gICAgSnNvbkNhbnZhc1RleHRDYXJkLFxuICAgIEpzb25DYW52YXNXZWJDYXJkLFxufSBmcm9tIFwiLi9qc29uL2NhbnZhc1wiO1xuaW1wb3J0IHsgRGF0ZVRpbWUgfSBmcm9tIFwibHV4b25cIjtcbmltcG9ydCB7IExpbmsgfSBmcm9tIFwiZXhwcmVzc2lvbi9saW5rXCI7XG5pbXBvcnQge1xuICAgIEZyb250bWF0dGVyRW50cnksXG4gICAgTGlua05vcm1hbGl6ZXIsXG4gICAgTWFya2Rvd25TZWN0aW9uLFxuICAgIE5PT1BfTk9STUFMSVpFUixcbiAgICBub3JtYWxpemVMaW5rcyxcbiAgICB2YWx1ZUZyb250bWF0dGVyRW50cnksXG59IGZyb20gXCIuL21hcmtkb3duXCI7XG5pbXBvcnQgeyBJbmxpbmVGaWVsZCB9IGZyb20gXCJpbmRleC9pbXBvcnQvaW5saW5lLWZpZWxkXCI7XG5pbXBvcnQgeyBGaWxlIH0gZnJvbSBcImluZGV4L3R5cGVzL2luZGV4YWJsZVwiO1xuaW1wb3J0IHsgbWFwT2JqZWN0VmFsdWVzIH0gZnJvbSBcInV0aWxzL2RhdGFcIjtcblxuLyoqIEEgY2FudmFzIGZpbGUsIGNvbnNpc3Rpbmcgb2YgYSBzZXQgb2YgY2FudmFzIGNhcmRzLiAqL1xuZXhwb3J0IGNsYXNzIENhbnZhcyBpbXBsZW1lbnRzIExpbmthYmxlLCBGaWxlLCBMaW5rYmVhcmluZywgVGFnZ2FibGUsIEluZGV4YWJsZSwgRmllbGRiZWFyaW5nIHtcbiAgICBzdGF0aWMgVFlQRVMgPSBbRklMRV9UWVBFLCBcImNhbnZhc1wiLCBUQUdHQUJMRV9UWVBFLCBMSU5LQUJMRV9UWVBFLCBGSUVMREJFQVJJTkdfVFlQRV07XG5cbiAgICAkdHlwZXM6IHN0cmluZ1tdID0gQ2FudmFzLlRZUEVTO1xuICAgICR0eXBlbmFtZTogc3RyaW5nID0gXCJDYW52YXNcIjtcblxuICAgICRjdGltZTogRGF0ZVRpbWU7XG4gICAgJG10aW1lOiBEYXRlVGltZTtcblxuICAgICRleHRlbnNpb246IHN0cmluZyA9IFwiY2FudmFzXCI7XG5cbiAgICBnZXQgJGZpbGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRwYXRoO1xuICAgIH1cblxuICAgIGdldCAkaWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRwYXRoO1xuICAgIH1cblxuICAgIGdldCAkbGluaygpIHtcbiAgICAgICAgcmV0dXJuIExpbmsuZmlsZSh0aGlzLiRwYXRoKTtcbiAgICB9XG5cbiAgICAkcGF0aDogc3RyaW5nO1xuICAgICRjYXJkczogQmFzZUNhbnZhc0NhcmRbXSA9IFtdO1xuICAgICRzaXplOiBudW1iZXIgPSAwO1xuICAgICR0YWdzOiBzdHJpbmdbXTtcbiAgICAkbGlua3M6IExpbmtbXTtcbiAgICAkaW5maWVsZHM6IFJlY29yZDxzdHJpbmcsIElubGluZUZpZWxkPjtcblxuICAgIHByaXZhdGUgY29uc3RydWN0b3IoaW5pdDogUGFydGlhbDxDYW52YXM+KSB7XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywgaW5pdCk7XG4gICAgfVxuXG4gICAgZ2V0IGZpZWxkcygpOiBGaWVsZFtdIHtcbiAgICAgICAgcmV0dXJuIENhbnZhcy5GSUVMRF9ERUYodGhpcyk7XG4gICAgfVxuXG4gICAgcHVibGljIGZpZWxkKGtleTogc3RyaW5nKTogRmllbGQgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gQ2FudmFzLkZJRUxEX0RFRih0aGlzLCBrZXkpPy5bMF07XG4gICAgfVxuXG4gICAgcHVibGljIGpzb24oKTogSnNvbkNhbnZhcyB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAkY2FyZHM6IHRoaXMuJGNhcmRzLm1hcCgoeCkgPT4geC5qc29uKCkpIGFzIEpzb25DYW52YXNDYXJkW10sXG4gICAgICAgICAgICAkY3RpbWU6IHRoaXMuJGN0aW1lLnRvTWlsbGlzKCksXG4gICAgICAgICAgICAkbXRpbWU6IHRoaXMuJG10aW1lLnRvTWlsbGlzKCksXG4gICAgICAgICAgICAkc2l6ZTogdGhpcy4kc2l6ZSxcbiAgICAgICAgICAgICRsaW5rczogdGhpcy4kbGlua3MsXG4gICAgICAgICAgICAkcGF0aDogdGhpcy4kcGF0aCxcbiAgICAgICAgICAgICRpbmZpZWxkczogdGhpcy4kaW5maWVsZHMsXG4gICAgICAgICAgICAkdGFnczogdGhpcy4kdGFncyxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZnJvbShyYXc6IEpzb25DYW52YXMsIG5vcm1hbGl6ZXI6IExpbmtOb3JtYWxpemVyID0gTk9PUF9OT1JNQUxJWkVSKTogQ2FudmFzIHtcbiAgICAgICAgY29uc3QgY2FyZHMgPSByYXcuJGNhcmRzXG4gICAgICAgICAgICAubWFwKChzKSA9PiB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChzLiR0eXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJ0ZXh0LWNhcmRcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBDYW52YXNUZXh0Q2FyZC5mcm9tKHMsIHJhdy4kcGF0aCwgbm9ybWFsaXplcik7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJmaWxlLWNhcmRcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBDYW52YXNGaWxlQ2FyZC5mcm9tKHMpO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFwid2ViLWNhcmRcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBDYW52YXNXZWJDYXJkLmZyb20ocywgcmF3LiRwYXRoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmZpbHRlcigoeCk6IHggaXMgQ2FudmFzVGV4dENhcmQgPT4gISF4KTtcbiAgICAgICAgcmV0dXJuIG5ldyBDYW52YXMoe1xuICAgICAgICAgICAgJGNhcmRzOiBjYXJkcyxcbiAgICAgICAgICAgICRjdGltZTogRGF0ZVRpbWUuZnJvbU1pbGxpcyhyYXcuJGN0aW1lKSxcbiAgICAgICAgICAgICRtdGltZTogRGF0ZVRpbWUuZnJvbU1pbGxpcyhyYXcuJG10aW1lKSxcbiAgICAgICAgICAgICRzaXplOiByYXcuJHNpemUsXG4gICAgICAgICAgICAkZXh0ZW5zaW9uOiBcImNhbnZhc1wiLFxuICAgICAgICAgICAgJHBhdGg6IHJhdy4kcGF0aCxcbiAgICAgICAgICAgICRsaW5rczogcmF3LiRsaW5rcy5tYXAoKGwpID0+IG5vcm1hbGl6ZXIoTGluay5mcm9tT2JqZWN0KGwpKSksXG4gICAgICAgICAgICAkaW5maWVsZHM6IHJhdy4kaW5maWVsZHMsXG4gICAgICAgICAgICAkdGFnczogcmF3LiR0YWdzLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcHJpdmF0ZSBzdGF0aWMgRklFTERfREVGOiBGaWVsZEV4dHJhY3RvcjxDYW52YXM+ID0gRXh0cmFjdG9ycy5tZXJnZShcbiAgICAgICAgRXh0cmFjdG9ycy5pbmxpbmVGaWVsZHMoKGYpID0+IGYuJGluZmllbGRzKSxcbiAgICAgICAgRXh0cmFjdG9ycy5pbnRyaW5zaWNzKClcbiAgICApO1xufVxuXG4vKiogQWxsIHN1cHBvcnRlZCBjYW52YXMgY2FyZCB0eXBlcy4gKi9cbmV4cG9ydCB0eXBlIENhbnZhc0NhcmQgPSBDYW52YXNUZXh0Q2FyZCB8IENhbnZhc0ZpbGVDYXJkIHwgQ2FudmFzV2ViQ2FyZDtcblxuLyoqIFNoYXJlZCBtZXRhZGF0YSBmb3IgYWxsIGNhbnZhcyBjYXJkcy4gKi9cbmFic3RyYWN0IGNsYXNzIEJhc2VDYW52YXNDYXJkIGltcGxlbWVudHMgSW5kZXhhYmxlLCBMaW5rYWJsZSB7XG4gICAgYWJzdHJhY3QgJHR5cGVzOiBzdHJpbmdbXTtcbiAgICBhYnN0cmFjdCAkdHlwZW5hbWU6IHN0cmluZztcbiAgICBhYnN0cmFjdCByZWFkb25seSAkdHlwZTogc3RyaW5nO1xuXG4gICAgJHJldmlzaW9uPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgICRpZDogc3RyaW5nO1xuICAgICRwb3NpdGlvbjogQ2FyZFBvcztcbiAgICAkZGltZW5zaW9uczogQ2FyZERpbWVuc2lvbnM7XG4gICAgJHBhcmVudD86IEluZGV4YWJsZTtcbiAgICAkZmlsZTogc3RyaW5nO1xuICAgICRjb2xvcj86IHN0cmluZztcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcihpbml0OiBQYXJ0aWFsPEJhc2VDYW52YXNDYXJkPikge1xuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGluaXQpO1xuICAgIH1cblxuICAgIGdldCAkbGluaygpOiBMaW5rIHtcbiAgICAgICAgcmV0dXJuIExpbmsuZmlsZSh0aGlzLiRmaWxlKS53aXRoQmxvY2sodGhpcy4kaWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBqc29uKCk6IEpzb25CYXNlQ2FudmFzQ2FyZCB7XG4gICAgICAgIGNvbnN0IHsgJGlkLCAkcG9zaXRpb24sICRjb2xvciwgJGRpbWVuc2lvbnMsICRmaWxlLCAkbGluayB9ID0gdGhpcztcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICRpZCxcbiAgICAgICAgICAgICRwb3NpdGlvbixcbiAgICAgICAgICAgICRjb2xvcixcbiAgICAgICAgICAgICRkaW1lbnNpb25zLFxuICAgICAgICAgICAgJGZpbGUsXG4gICAgICAgICAgICAkbGluazogJGxpbmsudG9PYmplY3QoKSxcbiAgICAgICAgfTtcbiAgICB9XG59XG5cbi8qKiBDYW52YXMgY2FyZCB3aXRoIG1hcmtkb3duIHRleHQgaW4gaXQuICovXG5leHBvcnQgY2xhc3MgQ2FudmFzVGV4dENhcmQgZXh0ZW5kcyBCYXNlQ2FudmFzQ2FyZCBpbXBsZW1lbnRzIExpbmtiZWFyaW5nLCBUYWdnYWJsZSwgSW5kZXhhYmxlLCBGaWVsZGJlYXJpbmcge1xuICAgIHN0YXRpYyBUWVBFUyA9IFtcImNhbnZhcy1jYXJkXCIsIFwibWFya2Rvd25cIiwgXCJjYW52YXMtdGV4dC1jYXJkXCIsIFRBR0dBQkxFX1RZUEUsIExJTktBQkxFX1RZUEUsIEZJRUxEQkVBUklOR19UWVBFXTtcblxuICAgICR0eXBlczogc3RyaW5nW10gPSBDYW52YXNUZXh0Q2FyZC5UWVBFUztcbiAgICAkdHlwZW5hbWU6IHN0cmluZyA9IFwiVGV4dCBDYXJkXCI7XG4gICAgJHR5cGU6IHN0cmluZyA9IFwiY2FudmFzLWNhcmRcIjtcbiAgICAkaWQ6IHN0cmluZztcblxuICAgICRmaWxlOiBzdHJpbmc7XG4gICAgJGxpbmtzOiBMaW5rW107XG4gICAgJHRhZ3M6IHN0cmluZ1tdO1xuICAgICR0aXRsZTogc3RyaW5nO1xuICAgICRwYXJlbnQ/OiBJbmRleGFibGU7XG4gICAgJHJldmlzaW9uPzogbnVtYmVyO1xuICAgICRpbmZpZWxkczogUmVjb3JkPHN0cmluZywgSW5saW5lRmllbGQ+O1xuICAgICRmcm9udG1hdHRlcj86IFJlY29yZDxzdHJpbmcsIEZyb250bWF0dGVyRW50cnk+O1xuXG4gICAgJGRpbWVuc2lvbnM6IENhcmREaW1lbnNpb25zO1xuICAgICRzZWN0aW9uczogTWFya2Rvd25TZWN0aW9uW107XG5cbiAgICBwcml2YXRlIGNvbnN0cnVjdG9yKGluaXQ6IFBhcnRpYWw8Q2FudmFzVGV4dENhcmQ+KSB7XG4gICAgICAgIHN1cGVyKGluaXQpO1xuICAgIH1cblxuICAgIGdldCBmaWVsZHMoKTogRmllbGRbXSB7XG4gICAgICAgIHJldHVybiBDYW52YXNUZXh0Q2FyZC5GSUVMRF9ERUYodGhpcyk7XG4gICAgfVxuXG4gICAgcHVibGljIGZpZWxkKGtleTogc3RyaW5nKTogRmllbGQgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gQ2FudmFzVGV4dENhcmQuRklFTERfREVGKHRoaXMsIGtleSk/LlswXTtcbiAgICB9XG5cbiAgICBwdWJsaWMganNvbigpOiBKc29uQ2FudmFzVGV4dENhcmQge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihzdXBlci5qc29uKCksIHtcbiAgICAgICAgICAgICRpbmZpZWxkczogdGhpcy4kaW5maWVsZHMsXG4gICAgICAgICAgICAkbGlua3M6IHRoaXMuJGxpbmtzLFxuICAgICAgICAgICAgJHRhZ3M6IHRoaXMuJHRhZ3MsXG4gICAgICAgICAgICAkdHlwZTogXCJ0ZXh0LWNhcmRcIixcbiAgICAgICAgICAgICRzZWN0aW9uczogdGhpcy4kc2VjdGlvbnMubWFwKChhKSA9PiBhLmpzb24oKSksXG4gICAgICAgIH0pIGFzIEpzb25DYW52YXNUZXh0Q2FyZDtcbiAgICB9XG5cbiAgICBzdGF0aWMgZnJvbShyYXc6IEpzb25DYW52YXNUZXh0Q2FyZCwgZmlsZTogc3RyaW5nLCBub3JtYWxpemVyOiBMaW5rTm9ybWFsaXplciA9IE5PT1BfTk9STUFMSVpFUikge1xuICAgICAgICBsZXQgJHNlY3Rpb25zID0gcmF3LiRzZWN0aW9ucy5tYXAoKHMpID0+IE1hcmtkb3duU2VjdGlvbi5mcm9tKHMsIGZpbGUsIG5vcm1hbGl6ZXIpKTtcbiAgICAgICAgcmV0dXJuIG5ldyBDYW52YXNUZXh0Q2FyZCh7XG4gICAgICAgICAgICAkZmlsZTogZmlsZSxcbiAgICAgICAgICAgICRpZDogcmF3LiRpZCxcbiAgICAgICAgICAgICRzZWN0aW9ucyxcbiAgICAgICAgICAgICRsaW5rczogcmF3LiRsaW5rcy5tYXAoKGwpID0+IG5vcm1hbGl6ZXIoTGluay5mcm9tT2JqZWN0KGwpKSksXG4gICAgICAgICAgICAkZGltZW5zaW9uczogcmF3LiRkaW1lbnNpb25zLFxuICAgICAgICAgICAgJHBvc2l0aW9uOiByYXcuJHBvc2l0aW9uLFxuICAgICAgICAgICAgJGZyb250bWF0dGVyOiByYXcuJGZyb250bWF0dGVyXG4gICAgICAgICAgICAgICAgPyBtYXBPYmplY3RWYWx1ZXMocmF3LiRmcm9udG1hdHRlciwgKGZtKSA9PiBub3JtYWxpemVMaW5rcyh2YWx1ZUZyb250bWF0dGVyRW50cnkoZm0pLCBub3JtYWxpemVyKSlcbiAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICRpbmZpZWxkczogcmF3LiRpbmZpZWxkcyxcbiAgICAgICAgICAgICR0YWdzOiByYXcuJHRhZ3MsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHN0YXRpYyBGSUVMRF9ERUY6IEZpZWxkRXh0cmFjdG9yPENhbnZhc1RleHRDYXJkPiA9IEV4dHJhY3RvcnMubWVyZ2UoXG4gICAgICAgIEV4dHJhY3RvcnMuaW50cmluc2ljcygpLFxuICAgICAgICBFeHRyYWN0b3JzLmlubGluZUZpZWxkcygoZikgPT4gZi4kaW5maWVsZHMpLFxuICAgICAgICBFeHRyYWN0b3JzLmZyb250bWF0dGVyKChmKSA9PiBmLiRmcm9udG1hdHRlcilcbiAgICApO1xufVxuXG4vKiogQ2FudmFzIGNhcmQgdGhhdCBpcyBqdXN0IGEgZmlsZSBlbWJlZGRpbmcuICovXG5leHBvcnQgY2xhc3MgQ2FudmFzRmlsZUNhcmQgZXh0ZW5kcyBCYXNlQ2FudmFzQ2FyZCBpbXBsZW1lbnRzIEluZGV4YWJsZSB7XG4gICAgc3RhdGljIFRZUEVTID0gW1wiY2FudmFzLWNhcmRcIiwgXCJtYXJrZG93blwiLCBcImNhbnZhcy1maWxlLWNhcmRcIiwgVEFHR0FCTEVfVFlQRSwgTElOS0FCTEVfVFlQRSwgRklFTERCRUFSSU5HX1RZUEVdO1xuXG4gICAgJHR5cGVzOiBzdHJpbmdbXSA9IENhbnZhc1RleHRDYXJkLlRZUEVTO1xuICAgICR0eXBlbmFtZTogc3RyaW5nID0gXCJGaWxlIENhcmRcIjtcblxuICAgIHByaXZhdGUgY29uc3RydWN0b3IoaW5pdDogUGFydGlhbDxDYW52YXNGaWxlQ2FyZD4pIHtcbiAgICAgICAgc3VwZXIoaW5pdCk7XG4gICAgfVxuXG4gICAgcmVhZG9ubHkgJHR5cGU6IHN0cmluZyA9IFwiZmlsZS1jYXJkXCI7XG4gICAgJGxpbmtlZEZpbGU6IHN0cmluZztcblxuICAgIHB1YmxpYyBqc29uKCk6IEpzb25DYW52YXNGaWxlQ2FyZCB7XG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHN1cGVyLmpzb24oKSwge1xuICAgICAgICAgICAgJGxpbmtlZEZpbGU6IHRoaXMuJGxpbmtlZEZpbGUsXG4gICAgICAgICAgICAkdHlwZTogXCJmaWxlLWNhcmRcIixcbiAgICAgICAgfSkgYXMgSnNvbkNhbnZhc0ZpbGVDYXJkO1xuICAgIH1cblxuICAgIHN0YXRpYyBmcm9tKHJhdzogSnNvbkNhbnZhc0ZpbGVDYXJkKSB7XG4gICAgICAgIHJldHVybiBuZXcgQ2FudmFzRmlsZUNhcmQoe1xuICAgICAgICAgICAgJGZpbGU6IHJhdy4kZmlsZSxcbiAgICAgICAgICAgICRpZDogcmF3LiRpZCxcbiAgICAgICAgICAgICRwb3NpdGlvbjogcmF3LiRwb3NpdGlvbixcbiAgICAgICAgICAgICRkaW1lbnNpb25zOiByYXcuJGRpbWVuc2lvbnMsXG4gICAgICAgICAgICAkbGlua2VkRmlsZTogcmF3LiRsaW5rZWRGaWxlLFxuICAgICAgICB9KTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDYW52YXNXZWJDYXJkIGV4dGVuZHMgQmFzZUNhbnZhc0NhcmQgaW1wbGVtZW50cyBJbmRleGFibGUge1xuICAgIHN0YXRpYyBUWVBFUyA9IFtcImNhbnZhcy1jYXJkXCIsIFwibWFya2Rvd25cIiwgXCJjYW52YXMtd2ViLWNhcmRcIiwgVEFHR0FCTEVfVFlQRSwgTElOS0FCTEVfVFlQRSwgRklFTERCRUFSSU5HX1RZUEVdO1xuXG4gICAgJHR5cGVzOiBzdHJpbmdbXSA9IENhbnZhc1RleHRDYXJkLlRZUEVTO1xuICAgIHJlYWRvbmx5ICR0eXBlOiBzdHJpbmcgPSBcIndlYi1jYXJkXCI7XG4gICAgJHR5cGVuYW1lOiBzdHJpbmcgPSBcIldlYiBDYXJkXCI7XG5cbiAgICAkdXJsOiBzdHJpbmc7XG5cbiAgICBwcml2YXRlIGNvbnN0cnVjdG9yKGluaXQ6IFBhcnRpYWw8Q2FudmFzV2ViQ2FyZD4pIHtcbiAgICAgICAgc3VwZXIoaW5pdCk7XG4gICAgfVxuXG4gICAgcHVibGljIGpzb24oKTogSnNvbkNhbnZhc1dlYkNhcmQge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihzdXBlci5qc29uKCksIHtcbiAgICAgICAgICAgICR1cmw6IHRoaXMuJHVybCxcbiAgICAgICAgICAgICR0eXBlOiBcIndlYi1jYXJkXCIsXG4gICAgICAgIH0pIGFzIEpzb25DYW52YXNXZWJDYXJkO1xuICAgIH1cblxuICAgIHN0YXRpYyBmcm9tKHJhdzogSnNvbkNhbnZhc1dlYkNhcmQsIGZpbGU6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gbmV3IENhbnZhc1dlYkNhcmQoe1xuICAgICAgICAgICAgJGRpbWVuc2lvbnM6IHJhdy4kZGltZW5zaW9ucyxcbiAgICAgICAgICAgICRwb3NpdGlvbjogcmF3LiRwb3NpdGlvbixcbiAgICAgICAgICAgICRmaWxlOiBmaWxlLFxuICAgICAgICAgICAgJGlkOiByYXcuJGlkLFxuICAgICAgICAgICAgJHVybDogcmF3LiR1cmwsXG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiIsICIvKiogQWxsIGRhdGFjb3JlIHNldHRpbmdzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXR0aW5ncyB7XG4gICAgLyoqIFRoZSBudW1iZXIgb2YgdGhyZWFkcyB0aGUgaW1wb3J0ZXIgd2lsbCB1c2UgZm9yIGltcG9ydGluZy4gKi9cbiAgICBpbXBvcnRlck51bVRocmVhZHM6IG51bWJlcjtcbiAgICAvKiogVGhlIENQVSB1dGlsaXphdGlvbiAoYmV0d2VlbiAwLjEgYW5kIDEuMCkgdGhhdCBpbXBvcnRlciB0aHJlYWRzIHNob3VsZCB1c2UuICovXG4gICAgaW1wb3J0ZXJVdGlsaXphdGlvbjogbnVtYmVyO1xuXG4gICAgLyoqIEFyZSBKUyB2aWV3cyBlbmFibGVkPyAqL1xuICAgIGVuYWJsZUpzOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB2aWV3cyBhcmUgcGFnZWQgYnkgZGVmYXVsdC4gVGhpcyBpcyBhbiBpbXBvcnRhbnQgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uLFxuICAgICAqIHNpbmNlIHNob3dpbmcgaHVuZHJlZHMgb3IgdGhvdXNhbmRzIG9mIHJlc3VsdHMgY2FuIGJlIGZhaXJseSBzbG93IVxuICAgICAqL1xuICAgIGRlZmF1bHRQYWdpbmdFbmFibGVkOiBib29sZWFuO1xuICAgIC8qKiBEZWZhdWx0IHBhZ2luZyBzaXplIGZvciBhbGwgdmlld3MgKG51bWJlciBvZiBlbnRyaWVzIHBlciBwYWdlLikgKi9cbiAgICBkZWZhdWx0UGFnZVNpemU6IG51bWJlcjtcbiAgICAvKiogSWYgc2V0LCB2aWV3cyB3aWxsIHNjcm9sbCB0byB0aGUgdG9wIG9mIHRoZSB2aWV3IG9uIHBhZ2UgY2hhbmdlcy4gKi9cbiAgICBzY3JvbGxPblBhZ2VDaGFuZ2U6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBNYXhpbXVtIGRlcHRoIHRoYXQgb2JqZWN0cyB3aWxsIGJlIHJlbmRlcmVkIHRvIChpLmUuLCBob3cgbWFueSBsZXZlbHMgb2Ygc3VicHJvcGVydGllc1xuICAgICAqIHdpbGwgYmUgcmVuZGVyZWQgYnkgZGVmYXVsdCkuIFRoaXMgYXZvaWRzIGluZmluaXRlIHJlY3Vyc2lvbiBkdWUgdG8gc2VsZiByZWZlcmVudGlhbCBvYmplY3RzXG4gICAgICogYW5kIGFsc28gZW5zdXJlcyB0aGF0IHJlbmRlcmluZyBvYmplY3RzIGlzIGFjY2VwdGFibHkgcGVyZm9ybWFudC5cbiAgICAgKi9cbiAgICBtYXhSZWN1cnNpdmVSZW5kZXJEZXB0aDogbnVtYmVyO1xuXG4gICAgLyoqIFRoZSBkZWZhdWx0IGZvcm1hdCB0aGF0IGRhdGVzIGFyZSByZW5kZXJlZCBpbiAodXNpbmcgbHV4b24ncyBtb21lbnQtbGlrZSBmb3JtYXR0aW5nKS4gKi9cbiAgICBkZWZhdWx0RGF0ZUZvcm1hdDogc3RyaW5nO1xuICAgIC8qKiBUaGUgZGVmYXVsdCBmb3JtYXQgdGhhdCBkYXRlLXRpbWVzIGFyZSByZW5kZXJlZCBpbiAodXNpbmcgbHV4b25zIG1vbWVudC1saWtlIGZvcm1hdHRpbmcpLiAqL1xuICAgIGRlZmF1bHREYXRlVGltZUZvcm1hdDogc3RyaW5nO1xuICAgIC8qKiBNYXJrZG93biB0ZXh0IGZvciBob3cgdG8gcmVuZGVyIG51bGwgdmFsdWVzIGluIHRhYmxlcyBvciBzaW1pbGFyLiAqL1xuICAgIHJlbmRlck51bGxBczogc3RyaW5nO1xuXG4gICAgLyoqIFdoZXRoZXIgdG8gaW5kZXggaW5saW5lIGZpZWxkcyBieSBkZWZhdWx0LiBJbmxpbmUgZmllbGQgcGFyc2luZyByZXF1aXJlcyBhIGZ1bGwgc2NhbiBvZiB0aGUgZG9jdW1lbnQsIHdoaWNoIGNhbiBtYWtlIGluZGV4aW5nIHRha2UgMi0zeCBsb25nZXIuICovXG4gICAgaW5kZXhJbmxpbmVGaWVsZHM6IGJvb2xlYW47XG5cbiAgICAvKiogV2hldGhlciB0byBpbmRleCBsaXN0IGFuZCB0YXNrIGl0ZW0gdGV4dCBhbmQgc3RhdGVzLiBJbmRleGluZyBsaXN0cyAmIHRhc2tzIHJlcXVpcmVzIHNvbWUgYWRkaXRpb25hbCByZWdleCBwYXJzaW5nIHdoaWNoIG1ha2VzIGluZGV4aW5nIG1vZGVzdGx5IHNsb3dlci4gKi9cbiAgICBpbmRleExpc3RJdGVtczogYm9vbGVhbjtcblxuICAgIC8qKiBXaGV0aGVyIHRvIGNoZWNrIHRhc2sgaXRlbXMgb2ZmIHJlY3Vyc2l2ZWx5IGluIGRhdGFjb3JlIHZpZXdzICovXG4gICAgcmVjdXJzaXZlVGFza0NvbXBsZXRpb246IGJvb2xlYW47XG5cbiAgICAvKiogTmFtZSBvZiB0aGUgaW5saW5lIGZpZWxkIGluIHdoaWNoIHRvIHN0b3JlIGNvbXBsZXRpb24gZGF0ZS90aW1lICovXG4gICAgdGFza0NvbXBsZXRpb25UZXh0OiBzdHJpbmc7XG5cbiAgICAvKiogSWYgZW5hYmxlZCwgYXV0b21hdGljIGNvbXBsZXRpb25zIHdpbGwgdXNlIGVtb2ppIHNob3J0aGFuZCBcdTI3MDUgWVlZWS1NTS1ERCBpbnN0ZWFkIG9mIFtjb21wbGV0aW9uOjogZGF0ZV0uICovXG4gICAgdGFza0NvbXBsZXRpb25Vc2VFbW9qaVNob3J0aGFuZDogYm9vbGVhbjtcbn1cblxuLyoqIERlZmF1bHQgc2V0dGluZ3MgZm9yIHRoZSBwbHVnaW4uICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9TRVRUSU5HUzogUmVhZG9ubHk8U2V0dGluZ3M+ID0gT2JqZWN0LmZyZWV6ZTxTZXR0aW5ncz4oe1xuICAgIGltcG9ydGVyTnVtVGhyZWFkczogMixcbiAgICBpbXBvcnRlclV0aWxpemF0aW9uOiAwLjc1LFxuXG4gICAgZW5hYmxlSnM6IGZhbHNlLFxuXG4gICAgZGVmYXVsdFBhZ2luZ0VuYWJsZWQ6IHRydWUsXG4gICAgZGVmYXVsdFBhZ2VTaXplOiA1MCxcbiAgICBzY3JvbGxPblBhZ2VDaGFuZ2U6IGZhbHNlLFxuXG4gICAgbWF4UmVjdXJzaXZlUmVuZGVyRGVwdGg6IDUsXG5cbiAgICBkZWZhdWx0RGF0ZUZvcm1hdDogXCJNTU1NIGRkLCB5eXl5XCIsXG4gICAgZGVmYXVsdERhdGVUaW1lRm9ybWF0OiBcImg6bW0gYSAtIE1NTU0gZGQsIHl5eXlcIixcblxuICAgIHJlbmRlck51bGxBczogXCItXCIsXG5cbiAgICBpbmRleElubGluZUZpZWxkczogdHJ1ZSxcbiAgICBpbmRleExpc3RJdGVtczogdHJ1ZSxcbiAgICByZWN1cnNpdmVUYXNrQ29tcGxldGlvbjogZmFsc2UsXG4gICAgdGFza0NvbXBsZXRpb25UZXh0OiBcImNvbXBsZXRlZEF0XCIsXG4gICAgdGFza0NvbXBsZXRpb25Vc2VFbW9qaVNob3J0aGFuZDogZmFsc2UsXG59KTtcbiIsICJpbXBvcnQgeyBkZWJvdW5jZSwgSXRlbVZpZXcsIE1hcmtkb3duUmVuZGVyQ2hpbGQsIE1lbnUsIFZpZXdTdGF0ZVJlc3VsdCwgV29ya3NwYWNlTGVhZiB9IGZyb20gXCJvYnNpZGlhblwiO1xuaW1wb3J0IHsgU2NyaXB0TGFuZ3VhZ2UgfSBmcm9tIFwidXRpbHMvamF2YXNjcmlwdFwiO1xuaW1wb3J0IHsgRGF0YWNvcmVKU1JlbmRlcmVyLCBSZWFjdFJlbmRlcmVyIH0gZnJvbSBcIi4vamF2YXNjcmlwdFwiO1xuaW1wb3J0IHsgRGF0YWNvcmVMb2NhbEFwaSB9IGZyb20gXCJhcGkvbG9jYWwtYXBpXCI7XG5pbXBvcnQgeyBEYXRhY29yZUFwaSB9IGZyb20gXCJhcGkvYXBpXCI7XG5pbXBvcnQgeyBjcmVhdGVDb250ZXh0IH0gZnJvbSBcInByZWFjdFwiO1xuaW1wb3J0IHsgR3JvdXAsIFN0YWNrIH0gZnJvbSBcImFwaS91aS9sYXlvdXRcIjtcbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VDb250ZXh0LCB1c2VNZW1vLCB1c2VTdGF0ZSB9IGZyb20gXCJwcmVhY3QvaG9va3NcIjtcbmltcG9ydCB7IFRleHRib3gsIFZhbmlsbGFTZWxlY3QgfSBmcm9tIFwiYXBpL3VpL2Jhc2ljc1wiO1xuaW1wb3J0IHsgdXNlSW5kZXhVcGRhdGVzIH0gZnJvbSBcIi4vaG9va3NcIjtcbmltcG9ydCB7IERBVEFDT1JFX0NPTlRFWFQsIEVycm9yTWVzc2FnZSB9IGZyb20gXCIuL21hcmtkb3duXCI7XG5pbXBvcnQgU2VsZWN0IGZyb20gXCJyZWFjdC1zZWxlY3RcIjtcblxuLyoqIEtleSBmb3IgZGF0YWNvcmUgSlMgcXVlcnkgdmlld3MuICovXG5leHBvcnQgY29uc3QgVklFV19UWVBFX0RBVEFDT1JFSlMgPSBcImRhdGFjb3JlanMtdmlld1wiO1xuXG4vKiogU3RvcmVzIHRoZSBjdXJyZW50IE9ic2lkaWFuIHZpZXcgb2JqZWN0LCBzbyBpdCBjYW4gYmUgbWFuaXB1bGF0ZWQgZnJvbSByZWFjdC4gKi9cbmNvbnN0IENVU1RPTV9WSUVXX0NPTlRFWFQgPSBjcmVhdGVDb250ZXh0PERhdGFjb3JlUXVlcnlWaWV3Pih1bmRlZmluZWQhKTtcblxuLyoqIFByb3ZpZGVzIG9wdGlvbnMgZm9yIGNvbmZpZ3VyaW5nIGEgZGF0YWNvcmUgdmlldyBwYW5lLiAqL1xuZnVuY3Rpb24gRGF0YWNvcmVWaWV3U2V0dGluZ3MoKSB7XG4gICAgY29uc3QgdmlldyA9IHVzZUNvbnRleHQoQ1VTVE9NX1ZJRVdfQ09OVEVYVCkgYXMgRGF0YWNvcmVRdWVyeVZpZXc7XG4gICAgY29uc3Qgc2V0Vmlld1N0YXRlID0gdXNlTWVtbyhcbiAgICAgICAgKCkgPT4gZGVib3VuY2UoKHN0YXRlOiBQYXJ0aWFsPERhdGFjb3JlVmlld1N0YXRlPikgPT4gdmlldy5zZXRTdGF0ZShzdGF0ZSwgeyBoaXN0b3J5OiBmYWxzZSB9KSwgNTAwKSxcbiAgICAgICAgW3ZpZXddXG4gICAgKTtcblxuICAgIGNvbnN0IFtsb2NhbFN0YXRlLCBzZXRMb2NhbFN0YXRlXSA9IHVzZVN0YXRlKHZpZXcuZ2V0U3RhdGUoKSk7XG4gICAgY29uc3Qgc2V0U3RhdGUgPSB1c2VDYWxsYmFjayhcbiAgICAgICAgKHN0YXRlOiBQYXJ0aWFsPERhdGFjb3JlVmlld1N0YXRlPikgPT4ge1xuICAgICAgICAgICAgY29uc3QgZmluYWxTdGF0ZSA9IHsgLi4ubG9jYWxTdGF0ZSwgLi4uc3RhdGUgfTtcbiAgICAgICAgICAgIC8vIE5vdCBkZWJvdW5jZWQuXG4gICAgICAgICAgICBzZXRMb2NhbFN0YXRlKGZpbmFsU3RhdGUpO1xuXG4gICAgICAgICAgICAvLyBEZWJvdW5jZWQuXG4gICAgICAgICAgICBzZXRWaWV3U3RhdGUoZmluYWxTdGF0ZSk7XG4gICAgICAgIH0sXG4gICAgICAgIFtsb2NhbFN0YXRlLCBzZXRMb2NhbFN0YXRlLCB2aWV3XVxuICAgICk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8U3RhY2sgYWxpZ249XCJzdHJldGNoXCI+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzTmFtZT1cImNsaWNrYWJsZS1pY29uXCIgc3R5bGU9XCJhbGlnbi1zZWxmOiBzdGFydFwiIG9uQ2xpY2s9eygpID0+IHZpZXcudmlldyhcInNjcmlwdFwiKX0+XG4gICAgICAgICAgICAgICAge0JBQ0tfQlVUVE9OfVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8R3JvdXAganVzdGlmeT1cInNwYWNlLWJldHdlZW5cIiBhbGlnbj1cImNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxoNj5WaWV3IFRpdGxlPC9oNj5cbiAgICAgICAgICAgICAgICA8VGV4dGJveFxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU9e3ZpZXcuZ2V0U3RhdGUoKS50aXRsZX1cbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZXRTdGF0ZSh7IHRpdGxlOiBlLmN1cnJlbnRUYXJnZXQudmFsdWUgYXMgc3RyaW5nIH0pfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L0dyb3VwPlxuICAgICAgICAgICAgPEdyb3VwIGp1c3RpZnk9XCJzcGFjZS1iZXR3ZWVuXCIgYWxpZ249XCJjZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8aDY+VmlldyBUeXBlPC9oNj5cbiAgICAgICAgICAgICAgICA8VmFuaWxsYVNlbGVjdFxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU9e3ZpZXcuZ2V0U3RhdGUoKS5zb3VyY2VUeXBlfVxuICAgICAgICAgICAgICAgICAgICBvcHRpb25zPXtMQU5HVUFHRV9PUFRJT05TfVxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT17bG9jYWxTdGF0ZS5zb3VyY2VUeXBlfVxuICAgICAgICAgICAgICAgICAgICBvblZhbHVlQ2hhbmdlPXsocykgPT4gc2V0U3RhdGUoeyBzb3VyY2VUeXBlOiBzIGFzIFNjcmlwdExhbmd1YWdlIH0pfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L0dyb3VwPlxuICAgICAgICAgICAgPEdyb3VwIGp1c3RpZnk9XCJzcGFjZS1iZXR3ZWVuXCIgYWxpZ249XCJjZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8aDY+U2NyaXB0L1ZpZXcgc291cmNlPC9oNj5cbiAgICAgICAgICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgcmVzaXplOiBcInZlcnRpY2FsXCIsIG1pbldpZHRoOiBcIjc1JVwiLCBmb250RmFtaWx5OiBcIm1vbm9zcGFjZVwiIH19XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZT17bG9jYWxTdGF0ZS5zY3JpcHR9XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXtsb2NhbFN0YXRlLnNjcmlwdH1cbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZXRTdGF0ZSh7IHNjcmlwdDogZS5jdXJyZW50VGFyZ2V0LnZhbHVlIGFzIHN0cmluZyB9KX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9Hcm91cD5cbiAgICAgICAgICAgIDxHcm91cCBqdXN0aWZ5PVwic3BhY2UtYmV0d2VlblwiIGFsaWduPVwiY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPFN0YWNrPlxuICAgICAgICAgICAgICAgICAgICA8aDY+Q3VycmVudCBGaWxlPC9oNj5cbiAgICAgICAgICAgICAgICAgICAgPHNtYWxsPlRoZSBwYXRoIHJldHVybmVkIGJ5IGZ1bmN0aW9ucyBsaWtlIGB1c2VDdXJyZW50UGF0aGAgaW4gdGhpcyB2aWV3PC9zbWFsbD5cbiAgICAgICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgbWluV2lkdGg6IFwiNTAlXCIgfX0+XG4gICAgICAgICAgICAgICAgICAgIDxDdXJyZW50RmlsZVNlbGVjdG9yXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU9e2xvY2FsU3RhdGUuY3VycmVudEZpbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHYpID0+IHNldFN0YXRlKHsgY3VycmVudEZpbGU6IHYgfSl9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L0dyb3VwPlxuICAgICAgICA8L1N0YWNrPlxuICAgICk7XG59XG5cbi8qKiBSZWFjdCBjb21wb25lbnQgZm9yIGFzeW5jaHJvbm91c2x5IHNob3dpbmcgdGhlIGFjdGl2ZSBzZXQgb2YgY3VycmVudCBmaWxlcyB0byBzZWxlY3Qgb25lIGZyb20uICovXG5mdW5jdGlvbiBDdXJyZW50RmlsZVNlbGVjdG9yKHtcbiAgICBkZWZhdWx0VmFsdWUsXG4gICAgb25DaGFuZ2UsXG59OiB7XG4gICAgZGVmYXVsdFZhbHVlPzogc3RyaW5nO1xuICAgIG9uQ2hhbmdlOiAodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkgPT4gdm9pZDtcbn0pIHtcbiAgICBjb25zdCBjb3JlID0gdXNlQ29udGV4dChEQVRBQ09SRV9DT05URVhUKTtcbiAgICBjb25zdCByZXZpc2lvbiA9IHVzZUluZGV4VXBkYXRlcyhjb3JlLCB7IGRlYm91bmNlOiAyMDAwIH0pO1xuXG4gICAgLy8gQ2FjaGVkIGxpc3Qgb2YgcmVsZXZhbnQgZmlsZXMsIHdoaWNoIGlzIG9ubHkgcmVjb21wdXRlZCBvbiB2YXVsdCBjaGFuZ2VzLlxuICAgIGNvbnN0IG9wdGlvbnMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIGNvcmUudmF1bHQuZ2V0TWFya2Rvd25GaWxlcygpLm1hcCgoZikgPT4gKHsgbGFiZWw6IGYucGF0aCwgdmFsdWU6IGYucGF0aCB9KSk7XG4gICAgfSwgW3JldmlzaW9uXSk7XG5cbiAgICBjb25zdCBkZWZhdWx0T3B0aW9uID0gZGVmYXVsdFZhbHVlXG4gICAgICAgID8geyBsYWJlbDogXCJObyBmaWxlXCIsIHZhbHVlOiB1bmRlZmluZWQgfVxuICAgICAgICA6IHsgbGFiZWw6IGRlZmF1bHRWYWx1ZSwgdmFsdWU6IGRlZmF1bHRWYWx1ZSB9O1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPFNlbGVjdFxuICAgICAgICAgICAgb3B0aW9ucz17b3B0aW9uc31cbiAgICAgICAgICAgIGNsYXNzTmFtZVByZWZpeD1cImRhdGFjb3JlLXNlbGVjdGFibGVcIlxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlPXtkZWZhdWx0T3B0aW9ufVxuICAgICAgICAgICAgb25DaGFuZ2U9eyhudiwgX2FtKSA9PiBvbkNoYW5nZShudj8udmFsdWUpfVxuICAgICAgICAgICAgdW5zdHlsZWRcbiAgICAgICAgLz5cbiAgICApO1xufVxuXG4vKiogU2VsZWN0YWJsZSBvcHRpb25zIGZvciBwaWNraW5nIHdoaWNoIGxhbmd1YWdlIHRvIGV4ZWN1dGUgdGhlIHNjcmlwdCBpbi4gKi9cbmNvbnN0IExBTkdVQUdFX09QVElPTlM6IHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IFNjcmlwdExhbmd1YWdlIH1bXSA9IFtcbiAgICB7IGxhYmVsOiBcIkphdmFzY3JpcHRcIiwgdmFsdWU6IFwianNcIiB9LFxuICAgIHsgbGFiZWw6IFwiVHlwZXNjcmlwdFwiLCB2YWx1ZTogXCJ0c1wiIH0sXG4gICAgeyBsYWJlbDogXCJKYXZhc2NyaXB0IChKU1gpXCIsIHZhbHVlOiBcImpzeFwiIH0sXG4gICAgeyBsYWJlbDogXCJUeXBlc2NyaXB0IEpTWFwiLCB2YWx1ZTogXCJ0c3hcIiB9LFxuXTtcblxuLyoqIFNWRyBiYWNrIGJ1dHRvbiBzaG93biB0byBleGl0IHRoZSBzZXR0aW5ncyB2aWV3LiAqL1xuY29uc3QgQkFDS19CVVRUT04gPSAoXG4gICAgPHN2Z1xuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgd2lkdGg9XCIyNFwiXG4gICAgICAgIGhlaWdodD1cIjI0XCJcbiAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMlwiXG4gICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgIGNsYXNzPVwic3ZnLWljb24gbHVjaWRlLWFycm93LWxlZnRcIlxuICAgID5cbiAgICAgICAgPHBhdGggZD1cIm0xMiAxOS03LTcgNy03XCI+PC9wYXRoPlxuICAgICAgICA8cGF0aCBkPVwiTTE5IDEySDVcIj48L3BhdGg+XG4gICAgPC9zdmc+XG4pO1xuXG4vKiogU3RhdGUgZm9yIHRoZSBkYXRhY29yZSB2aWV3IHBhZ2UuICovXG5leHBvcnQgaW50ZXJmYWNlIERhdGFjb3JlVmlld1N0YXRlIHtcbiAgICAvKiogQ3VzdG9tIHRpdGxlIGZvciB0aGUgdmlldyBwYW5lLiAqL1xuICAgIHRpdGxlPzogc3RyaW5nO1xuICAgIC8qKiBMYW5ndWFnZSB0aGF0IHRoZSBzY3JpcHQgd2lsbCBiZSBleGVjdXRlZCBpbi4gKi9cbiAgICBzb3VyY2VUeXBlPzogU2NyaXB0TGFuZ3VhZ2U7XG4gICAgLyoqIElmIGRlZmluZWQsIHRoZSBmaWxlIHRoZSB2aWV3IHdpbGwgYmUgcmVsYXRpdmUgdG8uICovXG4gICAgY3VycmVudEZpbGU/OiBzdHJpbmc7XG4gICAgLyoqIENvbnRlbnRzIG9mIHRoZSBzY3JpcHQuICovXG4gICAgc2NyaXB0Pzogc3RyaW5nO1xuICAgIC8qKiBUaGUgY3VycmVudCB2aWV3OyBkZWZhdWx0cyB0byAnc2V0dGluZ3MnIGZvciBpbml0aWFsaXphdGlvbi4gKi9cbiAgICB2aWV3PzogXCJzZXR0aW5nc1wiIHwgXCJzY3JpcHRcIjtcbn1cblxuZXhwb3J0IGNsYXNzIERhdGFjb3JlUXVlcnlWaWV3IGV4dGVuZHMgSXRlbVZpZXcge1xuICAgIC8qKiBJbnRlcm5hbCBjdXJyZW50IHN0YXRlIG9mIHRoZSB2aWV3OyBjYW4gYmUgbW9kaWZpZWQgYnkgc2V0U3RhdGUuICovXG4gICAgcHVibGljIGludGVybmFsU3RhdGU6IERhdGFjb3JlVmlld1N0YXRlID0ge1xuICAgICAgICB0aXRsZTogXCJOZXcgdmlld1wiLFxuICAgICAgICBzY3JpcHQ6IFwiXCIsXG4gICAgICAgIHNvdXJjZVR5cGU6IFwianNcIixcbiAgICAgICAgdmlldzogXCJzZXR0aW5nc1wiLFxuICAgIH07XG5cbiAgICAvKiogVGhlIGN1cnJlbnQgYWN0aXZlIHZpZXcgLSBlaXRoZXIgdGhlIHNldHRpbmdzIHZpZXcgKi9cbiAgICBwcml2YXRlIGFjdGl2ZVZpZXc6IE1hcmtkb3duUmVuZGVyQ2hpbGQ7XG4gICAgcHJpdmF0ZSBhY3RpdmVWaWV3VHlwZTogc3RyaW5nO1xuXG4gICAgY29uc3RydWN0b3IobGVhZjogV29ya3NwYWNlTGVhZiwgcHVibGljIGFwaTogRGF0YWNvcmVBcGkpIHtcbiAgICAgICAgc3VwZXIobGVhZik7XG4gICAgICAgIHRoaXMucmVyZW5kZXIoKTtcbiAgICB9XG5cbiAgICAvKiogU2hvdWxkIGFsd2F5cyBiZSBWSUVXX1RZUEVfREFUQUNPUkVKUy4gKi9cbiAgICBnZXRWaWV3VHlwZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gVklFV19UWVBFX0RBVEFDT1JFSlM7XG4gICAgfVxuXG4gICAgLyoqIFRleHQgc2hvd24gaW4gdGhlIHRpdGxlIHdpbmRvdy4gKi9cbiAgICBnZXREaXNwbGF5VGV4dCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYCR7dGhpcy5pbnRlcm5hbFN0YXRlLnRpdGxlfSAoRGF0YWNvcmVKUylgO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBvbmxvYWQoKSB7XG4gICAgICAgIHRoaXMuY29udGVudEVsLmFkZENsYXNzKFwibWFya2Rvd24tcmVuZGVyZWRcIik7XG4gICAgICAgIHRoaXMucmVyZW5kZXIoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb251bmxvYWQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmFjdGl2ZVZpZXcpIHRoaXMucmVtb3ZlQ2hpbGQodGhpcy5hY3RpdmVWaWV3KTtcbiAgICB9XG5cbiAgICAvKiogU3luY2hyb25pemVzIHRoZSBzY3JlZW4gc3RhdGUgdG8gcHJvcGVybHkgcmVmbGVjdCB0aGUgY3VycmVudCBpbnRlcm5hbCBzdGF0ZS4gKi9cbiAgICByZXJlbmRlcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5sZWFmLnRhYkhlYWRlcklubmVyVGl0bGVFbC50ZXh0Q29udGVudCA9IHRoaXMudGl0bGVFbC50ZXh0Q29udGVudCA9IHRoaXMuZ2V0RGlzcGxheVRleHQoKTtcbiAgICAgICAgaWYgKHRoaXMuYWN0aXZlVmlld1R5cGUgPT0gdGhpcy5pbnRlcm5hbFN0YXRlLnZpZXcpIHJldHVybjtcblxuICAgICAgICBpZiAodGhpcy5hY3RpdmVWaWV3KSB0aGlzLnJlbW92ZUNoaWxkKHRoaXMuYWN0aXZlVmlldyk7XG4gICAgICAgIGlmICh0aGlzLmludGVybmFsU3RhdGUudmlldyA9PT0gXCJzZXR0aW5nc1wiKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZVZpZXdUeXBlID0gXCJzZXR0aW5nc1wiO1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVWaWV3ID0gbmV3IFJlYWN0UmVuZGVyZXIoXG4gICAgICAgICAgICAgICAgdGhpcy5hcHAsXG4gICAgICAgICAgICAgICAgdGhpcy5hcGkuY29yZSxcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRFbCxcbiAgICAgICAgICAgICAgICB0aGlzLmludGVybmFsU3RhdGUuY3VycmVudEZpbGUgfHwgXCJcIixcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIDxDVVNUT01fVklFV19DT05URVhULlByb3ZpZGVyIHZhbHVlPXt0aGlzfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxEYXRhY29yZVZpZXdTZXR0aW5ncyAvPlxuICAgICAgICAgICAgICAgICAgICA8L0NVU1RPTV9WSUVXX0NPTlRFWFQuUHJvdmlkZXI+XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIElmIGEgc2NyaXB0LCB0cnkgdG8gZXhlY3V0ZSBpdDsgb3RoZXJ3aXNlLCBzaG93IGEgcmVhc29uYWJsZSBlcnJvciBtZXNzYWdlLlxuICAgICAgICAgICAgdGhpcy5hY3RpdmVWaWV3VHlwZSA9IFwic2NyaXB0XCI7XG4gICAgICAgICAgICBpZiAodGhpcy5pbnRlcm5hbFN0YXRlLnNjcmlwdCkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlVmlldyA9IG5ldyBEYXRhY29yZUpTUmVuZGVyZXIoXG4gICAgICAgICAgICAgICAgICAgIG5ldyBEYXRhY29yZUxvY2FsQXBpKHRoaXMuYXBpLCB0aGlzLmludGVybmFsU3RhdGUuY3VycmVudEZpbGUgfHwgXCJcIiksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGVudEVsLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmludGVybmFsU3RhdGUuY3VycmVudEZpbGUgfHwgXCJcIixcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnRlcm5hbFN0YXRlLnNjcmlwdCB8fCBcIlwiLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmludGVybmFsU3RhdGUuc291cmNlVHlwZSB8fCBcImpzXCJcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZVZpZXcgPSBuZXcgUmVhY3RSZW5kZXJlcihcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hcHAsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXBpLmNvcmUsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGVudEVsLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmludGVybmFsU3RhdGUuY3VycmVudEZpbGUgfHwgXCJcIixcbiAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgPENVU1RPTV9WSUVXX0NPTlRFWFQuUHJvdmlkZXIgdmFsdWU9e3RoaXN9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxFcnJvck1lc3NhZ2UgbWVzc2FnZT1cIk5vIHNjcmlwdCBkZWZpbmVkIGZvciB0aGlzIHZpZXcuXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvQ1VTVE9NX1ZJRVdfQ09OVEVYVC5Qcm92aWRlcj5cbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmFkZENoaWxkKHRoaXMuYWN0aXZlVmlldyk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFN0YXRlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pbnRlcm5hbFN0YXRlO1xuICAgIH1cblxuICAgIC8qKiBVcGRhdGUgdGhlIHN0YXRlIG9mIHRoaXMgdmlldyB3aXRoIG5ldyBtZXRhZGF0YS4gR2VuZXJhbGx5IGNvbnRyb2xsZWQgYnkgdGhlIHNldHRpbmdzIHBhbmUuICovXG4gICAgcHVibGljIGFzeW5jIHNldFN0YXRlKHN0YXRlOiBEYXRhY29yZVZpZXdTdGF0ZSwgX3Jlc3VsdDogVmlld1N0YXRlUmVzdWx0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRoaXMuaW50ZXJuYWxTdGF0ZSA9IHN0YXRlO1xuICAgICAgICB0aGlzLnJlcmVuZGVyKCk7XG4gICAgfVxuXG4gICAgLyoqIFN3YXAgdGhlIGFjdGl2ZSB2aWV3LiAqL1xuICAgIHB1YmxpYyB2aWV3KG1vZGU6IFwic2V0dGluZ3NcIiB8IFwic2NyaXB0XCIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbnRlcm5hbFN0YXRlLnZpZXcgPSBtb2RlO1xuICAgICAgICB0aGlzLnJlcmVuZGVyKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIG9uT3BlbigpOiBQcm9taXNlPHZvaWQ+IHt9XG5cbiAgICAvKiogSGFuZGxlIGZvciByaWdodCBjbGljayBtZW51cy4gKi9cbiAgICBwdWJsaWMgb25QYW5lTWVudShtZW51OiBNZW51LCBzb3VyY2U6IFwibW9yZS1vcHRpb25zXCIgfCBcInRhYi1oZWFkZXJcIiB8IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAoc291cmNlID09PSBcIm1vcmUtb3B0aW9uc1wiKSB7XG4gICAgICAgICAgICBtZW51LmFkZEl0ZW0oKGl0KSA9PiB7XG4gICAgICAgICAgICAgICAgaXQuc2V0SWNvbihcInNldHRpbmdzXCIpO1xuICAgICAgICAgICAgICAgIGl0LnNldFRpdGxlKFwiQ29uZmlndXJlIFZpZXdcIik7XG4gICAgICAgICAgICAgICAgaXQub25DbGljaygoZSkgPT4gdGhpcy52aWV3KFwic2V0dGluZ3NcIikpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCAiaW1wb3J0IHsgRGF0YWNvcmUgfSBmcm9tIFwiaW5kZXgvZGF0YWNvcmVcIjtcbmltcG9ydCB7IHVzZUluZGV4VXBkYXRlcyB9IGZyb20gXCJ1aS9ob29rc1wiO1xuXG4vKiogUmVuZGVyIGEgaGVscGZ1bCBzdGF0dXMgaW5kaWNhdG9yIGluIHRoZSBzdGF0dXMgYmFyIG9mIGhvdyB0aGUgaW1wb3J0IGlzIGdvaW5nLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEluZGV4U3RhdHVzQmFyKHsgZGF0YWNvcmUgfTogeyBkYXRhY29yZTogRGF0YWNvcmUgfSkge1xuICAgIHVzZUluZGV4VXBkYXRlcyhkYXRhY29yZSwgeyBkZWJvdW5jZTogMjUwIH0pO1xuXG4gICAgLy8gV2hlbmV2ZXIgdGhlIHZpZXcgdXBkYXRlcywgZmlndXJlIG91dCB3aGF0IHN0YXRlIHdlIGFyZSBpbiBiYXNlZCBvbiBpZiBhbiBpbml0aWFsaXplciBpcyBwcmVzZW50LlxuICAgIGlmIChkYXRhY29yZS5pbml0aWFsaXplcikge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgU2Nhbm5pbmcge2RhdGFjb3JlLmluaXRpYWxpemVyLmluaXRpYWxpemVkfSBvZiB7ZGF0YWNvcmUuaW5pdGlhbGl6ZXIuZmlsZXN9IGZpbGVzXG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICk7XG4gICAgfSBlbHNlIGlmIChkYXRhY29yZS5pbXBvcnRlci5xdWV1ZS5zaXplKCkgPiAwKSB7XG4gICAgICAgIHJldHVybiA8c3Bhbj5VcGRhdGluZyB7ZGF0YWNvcmUuaW1wb3J0ZXIucXVldWUuc2l6ZSgpfSBmaWxlczwvc3Bhbj47XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIDxzcGFuPntkYXRhY29yZS5kYXRhc3RvcmUuc2l6ZX0gb2JqZWN0czwvc3Bhbj47XG4gICAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQSw0Q0FBQUEsVUFBQUMsU0FBQTtBQUFBO0FBRUEsYUFBU0MsV0FBVSxRQUFRO0FBQ3pCLFVBQUksRUFBRSxnQkFBZ0JBLGFBQVk7QUFDaEMsZUFBTyxJQUFJQSxXQUFVLE1BQU07QUFBQSxNQUM3QjtBQUNBLFdBQUssSUFBSTtBQUFBLElBQ1g7QUFFQSxRQUFJQyxLQUFJRCxXQUFVO0FBRWxCLGFBQVMsTUFBTUUsSUFBR0MsSUFBRztBQUNuQixVQUFJQyxLQUFJO0FBQ1IsV0FBS0EsSUFBR0EsS0FBSUYsSUFBR0UsTUFBSztBQUNsQixRQUFBRCxHQUFFQyxFQUFDO0FBQUEsTUFDTDtBQUFBLElBQ0Y7QUFFQSxhQUFTLFFBQVFELElBQUcsS0FBSztBQUN2QixZQUFNLElBQUksUUFBUSxTQUFTQyxJQUFHO0FBQzVCLFFBQUFELEdBQUUsSUFBSUMsRUFBQyxHQUFHQSxJQUFHLEdBQUc7QUFBQSxNQUNsQixDQUFDO0FBQUEsSUFDSDtBQUVBLGFBQVNDLFFBQU9GLElBQUcsTUFBTSxLQUFLO0FBQzVCLGNBQVEsU0FBUyxNQUFNQyxJQUFHRSxNQUFLO0FBQzdCLGVBQU9ILEdBQUUsTUFBTSxNQUFNQyxJQUFHRSxJQUFHO0FBQUEsTUFDN0IsR0FBRyxHQUFHO0FBQ04sYUFBTztBQUFBLElBQ1Q7QUFFQSxhQUFTLElBQUlILElBQUcsS0FBSztBQUNuQixhQUFPRTtBQUFBLFFBQ0wsU0FBUyxLQUFLLE1BQU1ELElBQUdHLElBQUc7QUFDeEIsaUJBQU8sSUFBSSxPQUFPLENBQUNKLEdBQUUsTUFBTUMsSUFBR0csRUFBQyxDQUFDLENBQUM7QUFBQSxRQUNuQztBQUFBLFFBQ0EsQ0FBQztBQUFBLFFBQ0Q7QUFBQSxNQUNGO0FBQUEs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O0FBQUEsUUFDVCxLQUFLLFVBQVU7QUFDYixpQkFBTztBQUFBLFFBQ1QsS0FBSyxVQUFVO0FBQ2IsaUJBQU87QUFBQSxRQUNULEtBQUssVUFBVTtBQUNiLGlCQUFPO0FBQUEsUUFDVCxLQUFLLFVBQVU7QUFDYixpQkFBTztBQUFBLFFBQ1QsS0FBSyxVQUFVO0FBQ2IsaUJBQU87QUFBQSxRQUNULEtBQUssVUFBVTtBQUNiLGlCQUFPO0FBQUEsUUFDVCxLQUFLLFVBQVU7QUFDYixpQkFBTztBQUFBLFFBQ1QsS0FBSyxVQUFVO0FBQ2IsaUJBQU87QUFBQSxRQUNULEtBQUssVUFBVTtBQUNiLGlCQUFPO0FBQUEsUUFDVCxLQUFLLFVBQVU7QUFDYixpQkFBTztBQUFBLFFBQ1QsS0FBSyxVQUFVO0FBQ2IsaUJBQU87QUFBQSxRQUNULEtBQUssVUFBVTtBQUNiLGlCQUFPO0FBQUEsUUFDVCxLQUFLLFVBQVU7QUFDYixpQkFBTztBQUFBLFFBQ1QsS0FBSyxVQUFVO0FBQ2IsaUJBQU87QUFBQSxRQUNULEtBQUssVUFBVTtBQUNiLGlCQUFPO0FBQUEsUUFDVCxLQUFLLFVBQVU7QUFDYixpQkFBTztBQUFBLFFBQ1QsS0FBSyxVQUFVO0FBQ2IsaUJBQU87QUFBQSxRQUNULEtBQUssVUFBVTtBQUNiLGlCQUFPO0FBQUEsUUFDVCxLQUFLLFVBQVU7QUFDYixpQkFBTztBQUFBLFFBQ1QsS0FBSyxVQUFVO0FBQ2IsaUJBQU87QUFBQSxRQUNULEtBQUssVUFBVTtBQUNiLGlCQUFPO0FBQUEsUUFDVCxLQUFLLFVBQVU7QUFDYixpQkFBTztBQUFBLFFBQ1QsS0FBSyxVQUFVO0FBQ2IsaUJBQU87QUFBQSxRQUNULEtBQUssVUFBVTtBQUNiLGlCQUFPO0FBQUEsUUFDVCxLQUFLLFVBQVU7QUFDYixpQkFBTztBQUFBLFFBQ1QsS0FBSyxVQUFVO0FBQ2IsaUJBQU87QUFBQSxRQUNULEtBQUssVUFBVTtBQUNiLGlCQUFPO0FBQUEsUUFDVCxLQUFLLFVBQVU7QUFDYixpQkFBTztBQUFBLFFBQ1QsS0FBSyxVQUFVO0FBQ2IsaUJBQU87QUFBQSxRQUNULEtBQUssVUFBVTtBQUNiLGlCQUFPO0FBQUEsUUFDVCxLQUFLLFVBQVU7QUFDYixpQkFBTztBQUFBLFFBQ1QsS0FBSyxVQUFVO0FBQ2IsaUJBQU87QUFBQSxRQUNULEtBQUssVUFBVTtBQUNiLGlCQUFPO0FBQUEsUUFDVCxLQUFLLFVBQVU7QUFDYixpQkFBTztBQUFBLFFBQ1QsS0FBSyxVQUFVO0FBQ2IsaUJBQU87QUFBQSxRQUNULEtBQUssVUFBVTtBQUNiLGlCQUFPO0FBQUEsUUFDVCxLQUFLLFVBQVU7QUFDYixpQkFBTztBQUFBLFFBQ1QsS0FBSyxVQUFVO0FBQ2IsaUJBQU87QUFBQSxRQUNULEtBQUssVUFBVTtBQUNiLGlCQUFPO0FBQUEsUUFDVCxLQUFLLFVBQVU7QUFDYixpQkFBTztBQUFBLFFBQ1QsS0FBSyxVQUFVO0FBQ2IsaUJBQU87QUFBQSxRQUNULEtBQUssVUFBVTtBQUNiLGlCQUFPO0FBQUEsUUFDVCxLQUFLLFVBQVU7QUFDYixpQkFBTztBQUFBLFFBQ1QsS0FBSyxVQUFVO0FBQ2IsaUJBQU87QUFBQSxRQUNULEtBQUssVUFBVTtBQUNiLGlCQUFPO0FBQUEsUUFDVCxLQUFLLFVBQVU7QUFDYixpQkFBTztBQUFBLFFBQ1QsS0FBSyxVQUFVO0FBQ2IsaUJBQU87QUFBQSxRQUNULEtBQUssVUFBVTtBQUNiLGlCQUFPO0FBQUEsUUFDVCxLQUFLLFVBQVU7QUFDYixpQkFBTztBQUFBLFFBQ1QsS0FBSyxVQUFVO0FBQ2IsaUJBQU87QUFBQSxRQUNULEtBQUssVUFBVTtBQUNiLGlCQUFPO0FBQUEsUUFDVCxLQUFLLFVBQVU7QUFDYixpQkFBTztBQUFBLFFBQ1QsS0FBSyxVQUFVO0FBQ2IsaUJBQU87QUFBQSxRQUNULEtBQUssVUFBVTtBQUNiLGlCQUFPO0FBQUEsUUFDVCxLQUFLLFVBQVU7QUFDYixpQkFBTztBQUFBLFFBQ1QsS0FBSyxVQUFVO0FBQ2IsaUJBQU87QUFBQSxRQUNULEtBQUssVUFBVTtBQUNiLGlCQUFPO0FBQUEsUUFDVCxLQUFLLFVBQVU7QUFDYixpQkFBTztBQUFBLFFBQ1QsS0FBSyxVQUFVO0FBQ2IsaUJBQU87QUFBQSxRQUNULEtBQUssVUFBVTtBQUNiLGlCQUFPO0FBQUEsUUFDVCxLQUFLLFVBQVU7QUFDYixpQkFBTztBQUFBLFFBQ1QsS0FBSyxVQUFVO0FBQ2IsaUJBQU87QUFBQSxRQUNULEtBQUssVUFBVTtBQUNiLGlCQUFPO0FBQUEsUUFDVCxLQUFLLFVBQVU7QUFDYixpQkFBTztBQUFBLFFBQ1QsS0FBSyxVQUFVO0FBQ2IsaUJBQU87QUFBQSxRQUNULEtBQUssVUFBVTtBQUNiLGlCQUFPO0FBQUEsUUFDVCxLQUFLLFVBQVU7QUFDYixpQkFBTztBQUFBLFFBQ1QsS0FBSyxVQUFVO0FBQ2IsaUJBQU87QUFBQSxRQUNULEtBQUssVUFBVTtBQUNiLGlCQUFPO0FBQUEsUUFDVCxLQUFLLFVBQVU7QUFDYixpQkFBTztBQUFBLFFBQ1QsS0FBSyxVQUFVO0FBQ2IsaUJBQU87QUFBQSxRQUNULEtBQUssVUFBVTtBQUNiLGlCQUFPO0FBQUEsUUFDVCxLQUFLLFVBQVU7QUFDYixpQkFBTztBQUFBLFFBQ1QsS0FBSyxVQUFVO0FBQ2IsaUJBQU87QUFBQSxRQUNULEtBQUssVUFBVTtBQUNiLGlCQUFPO0FBQUEsUUFDVCxLQUFLLFVBQVU7QUFDYixpQkFBTztBQUFBLFFBQ1QsS0FBSyxVQUFVO0FBQ2IsaUJBQU87QUFBQSxRQUNULEtBQUssVUFBVTtBQUNiLGlCQUFPO0FBQUEsUUFDVCxLQUFLLFVBQVU7QUFDYixpQkFBTztBQUFBLFFBQ1QsS0FBSyxVQUFVO0FBQ2IsaUJBQU87QUFBQSxRQUNULEtBQUssVUFBVTtBQUNiLGlCQUFPO0FBQUEsUUFDVCxLQUFLLFVBQVU7QUFDYixpQkFBTztBQUFBLFFBQ1QsS0FBSyxVQUFVO0FBQ2IsaUJBQU87QUFBQSxRQUNULEtBQUssVUFBVTtBQUNiLGlCQUFPO0FBQUEsUUFDVCxLQUFLLFVBQVU7QUFDYixpQkFBTztBQUFBLFFBQ1QsS0FBSyxVQUFVO0FBQ2IsaUJBQU87QUFBQSxRQUNULEtBQUssVUFBVTtBQUNiLGlCQUFPO0FB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S0FBSyxJQUFJO0FBQzFELFlBQU0sT0FBTztBQUFJLE1BQUFBLFdBQVVBLFdBQVUsTUFBTSxJQUFJLElBQUksSUFBSTtBQUN2RCxZQUFNLE1BQU07QUFBSSxNQUFBQSxXQUFVQSxXQUFVLEtBQUssSUFBSSxHQUFHLElBQUk7QUFDcEQsWUFBTSxRQUFRO0FBQUksTUFBQUEsV0FBVUEsV0FBVSxPQUFPLElBQUksS0FBSyxJQUFJO0FBQzFELFlBQU0sU0FBUztBQUFJLE1BQUFBLFdBQVVBLFdBQVUsUUFBUSxJQUFJLE1BQU0sSUFBSTtBQUM3RCxZQUFNLFNBQVM7QUFBSSxNQUFBQSxXQUFVQSxXQUFVLFFBQVEsSUFBSSxNQUFNLElBQUk7QUFDN0QsWUFBTSxTQUFTO0FBQUksTUFBQUEsV0FBVUEsV0FBVSxRQUFRLElBQUksTUFBTSxJQUFJO0FBQzdELFlBQU0sU0FBUztBQUFJLE1BQUFBLFdBQVVBLFdBQVUsUUFBUSxJQUFJLE1BQU0sSUFBSTtBQUM3RCxZQUFNLFNBQVM7QUFBSSxNQUFBQSxXQUFVQSxXQUFVLFFBQVEsSUFBSSxNQUFNLElBQUk7QUFDN0QsWUFBTSxTQUFTO0FBQUksTUFBQUEsV0FBVUEsV0FBVSxRQUFRLElBQUksTUFBTSxJQUFJO0FBQzdELFlBQU0sU0FBUztBQUFJLE1BQUFBLFdBQVVBLFdBQVUsUUFBUSxJQUFJLE1BQU0sSUFBSTtBQUM3RCxZQUFNLFNBQVM7QUFBSSxNQUFBQSxXQUFVQSxXQUFVLFFBQVEsSUFBSSxNQUFNLElBQUk7QUFDN0QsWUFBTSxTQUFTO0FBQUksTUFBQUEsV0FBVUEsV0FBVSxRQUFRLElBQUksTUFBTSxJQUFJO0FBQzdELFlBQU0sU0FBUztBQUFJLE1BQUFBLFdBQVVBLFdBQVUsUUFBUSxJQUFJLE1BQU0sSUFBSTtBQUM3RCxZQUFNLFFBQVE7QUFBSSxNQUFBQSxXQUFVQSxXQUFVLE9BQU8sSUFBSSxLQUFLLElBQUk7QUFDMUQsWUFBTSxZQUFZO0FBQUksTUFBQUEsV0FBVUEsV0FBVSxXQUFXLElBQUksU0FBUyxJQUFJO0FBQ3RFLFlBQU0sV0FBVztBQUFJLE1BQUFBLFdBQVVBLFdBQVUsVUFBVSxJQUFJLFFBQVEsSUFBSTtBQUNuRSxZQUFNLFdBQVc7QUFBSSxNQUFBQSxXQUFVQSxXQUFVLFVBQVUsSUFBSSxRQUFRLElBQUk7QUFDbkUsWUFBTSxjQUFjO0FBQUksTUFBQUEsV0FBVUEsV0FBVSxhQUFhLElBQUksV0FBVyxJQUFJO0FBQzVFLFlBQU0sZUFBZTtBQUFJLE1BQUFBLFdBQVVBLFdBQVUsY0FBYyxJQUFJLFlBQVksSUFBSTtBQUMvRSxZQUFNLFNBQVM7QUFBSSxNQUFBQSxXQUFVQSxXQUFVLFFBQVEsSUFBSSxNQUFNLElBQUk7QUFDN0QsWUFBTSxhQUFhO0FBQUksTUFBQUEsV0FBVUEsV0FBVSxZQUFZLElBQUksVUFBVSxJQUFJO0FBQ3pFLFlBQU0sYUFBYTtBQUFJLE1BQUFBLFdBQVVBLFdBQVUsWUFBWSxJQUFJLFVBQVUsSUFBSTtBQUN6RSxZQUFNLGFBQWE7QUFBSSxNQUFBQSxXQUFVQSxXQUFVLFlBQVksSUFBSSxVQUFVLElBQUk7QUFDekUsWUFBTSxhQUFhO0FBQUksTUFBQUEsV0FBVUEsV0FBVSxZQUFZLElBQUksVUFBVSxJQUFJO0FBQ3pFLFlBQU0sYUFBYTtBQUFJLE1BQUFBLFdBQVVBLFdBQVUsWUFBWSxJQUFJLFVBQVUsSUFBSTtBQUN6RSxZQUFNLGFBQWE7QUFBSSxNQUFBQSxXQUFVQSxXQUFVLFlBQVksSUFBSSxVQUFVLElBQUk7QUFDekUsWUFBTSxhQUFhO0FBQUksTUFBQUEsV0FBVUEsV0FBVSxZQUFZLElBQUksVUFBVSxJQUFJO0FBQ3pFLFlBQU0sYUFBYTtBQUFJLE1BQUFBLFdBQVVBLFdBQVUsWUFBWSxJQUFJLFVBQVUsSUFBSTtBQUN6RSxZQUFNLGFBQWE7QUFBSSxNQUFBQSxXQUFVQSxXQUFVLFlBQVksSUFBSSxVQUFVLElBQUk7QUFDekUsWUFBTSxhQUFhO0FBQUksTUFBQUEsV0FBVUEsV0FBVSxZQUFZLElBQUksVUFBVSxJQUFJO0FBQ3pFLFlBQU0sYUFBYTtBQUFJLE1BQUFBLFdBQVVBLFdBQVUsWUFBWSxJQUFJLFVBQVUsSUFBSTtBQUN6RSxZQUFNLGFBQWE7QUFBSSxNQUFBQSxXQUFVQSxXQUFVLFlBQVksSUFBSSxVQUFVLElBQUk7QUFDekUsWUFBTSxhQUFhO0FBQUksTUFBQUEsV0FBVUEsV0FBVSxZQUFZLElBQUksVUFBVSxJQUFJO0FBQ3pFLFlBQU0sYUFBYTtBQUFJLE1BQUFBLFdBQVVBLFdBQVUsWUFBWSxJQUFJLFVBQVUsSUFBSTtBQUN6RSxZQUFNLGFBQWE7QUFBSSxNQUFBQSxXQUFVQSxXQUFVLFlBQVksSUFBSSxVQUFVLElBQUk7QUFDekUsWUFBTSxhQUFhO0FBQUksTUFBQUEsV0FBVUEsV0FBVSxZQUFZLElBQUksVUFBVSxJQUFJO0FBQ3pFLFlBQU0sYUFBYTtBQUFJLE1BQUFBLFdBQVVBLFdBQVUsWUFBWSxJQUFJLFVBQVUsSUFBSTtBQUN6RSxZQUFNLGFBQWE7QUFBSSxNQUFBQSxXQUFVQSxXQUFVLFlBQVksSUFBSSxVQUFVLElBQUk7QUFDekUsWUFBTSxhQUFhO0FBQUksTUFBQUEsV0FBVUEsV0FBVSxZQUFZLElBQUksVUFBVSxJQUFJO0FBQ3pFLFlBQU0sYUFBYTtBQUFJLE1BQUFBLFdBQVVBLFdBQVUsWUFBWSxJQUFJLFVBQVUsSUFBSTtBQUN6RSxZQUFNLGFBQWE7QUFBSSxNQUFBQSxXQUFVQSxXQUFVLFlBQVksSUFBSSxVQUFVLElBQUk7QUFDekUsWUFBTSxhQUFhO0FBQUksTUFBQUEsV0FBVUEsV0FBVSxZQUFZLElBQUksVUFBVSxJQUFJO0FBQ3pFLFlBQU0sYUFBYTtBQUFJLE1BQUFBLFdBQVVBLFdBQVUsWUFBWSxJQUFJLFVBQVUsSUFBSTtBQUN6RSxZQUFNLGFBQWE7QUFBSSxNQUFBQSxXQUFVQSxXQUFVLFlBQVksSUFBSSxVQUFVLElBQUk7QUFDekUsWUFBTSxhQUFhO0FBQUksTUFBQUEsV0FBVUEsV0FBVSxZQUFZLElBQUksVUFBVSxJQUFJO0FBQ3pFLFlBQU0sYUFBYTtBQUFJLE1BQUFBLFdBQVVBLFdBQVUsWUFBWSxJQUFJLFVBQVUsSUFBSTtBQUN6RSxZQUFNLG9CQUFvQjtBQUFJLE1BQUFBLFdBQVVBLFdBQVUsbUJBQW1CLElBQUksaUJBQWlCLElBQUk7QUFDOUYsWUFBTSxZQUFZO0FBQUksTUFBQUEsV0FBVUEsV0FBVSxXQUFXLElBQUksU0FBUyxJQUFJO0FBQ3RFLFlBQU0scUJBQXFCO0FBQUksTUFBQUEsV0FBVUEsV0FBVSxvQkFBb0IsSUFBSSxrQkFBa0IsSUFBSTtBQUNqRyxZQUFNQyxTQUFRO0FBQUksTUFBQUQsV0FBVUEsV0FBVSxPQUFPLElBQUlDLE1BQUssSUFBSTtBQUMxRCxZQUFNLGFBQWE7QUFBSSxNQUFBRCxXQUFVQSxXQUFVLFlBQVksSUFBSSxVQUFVLElBQUk7QUFDekUsWUFBTSxjQUFjO0FBQUksTUFBQUEsV0FBVUEsV0FBVSxhQUFhLElBQUksV0FBVyxJQUFJO0FBQzVFLFlBQU0sYUFBYTtBQUFJLE1BQUFBLFdBQVVBLFdBQVUsWUFBWSxJQUFJLFVBQVUsSUFBSTtBQUN6RSxZQUFNLGFBQWE7QUFBSSxNQUFBQSxXQUFVQSxXQUFVLFlBQVksSUFBSSxVQUFVLElBQUk7QUFDekUsWUFBTSxhQUFhO0FBQUksTUFBQUEsV0FBVUEsV0FBVSxZQUFZLElBQUksVUFBVSxJQUFJO0FBQ3pFLFlBQU0sYUFBYTtBQUFLLE1BQUFBLFdBQVVBLFdBQVUsWUFBWSxJQUFJLFVBQVUsSUFBSTtBQUMxRSxZQUFNLGFBQWE7QUFBSyxNQUFBQSxXQUFVQSxXQUFVLFlBQVksSUFBSSxVQUFVLElBQUk7QUFDMUUsWUFBTSxhQUFhO0FBQUssTUFBQUEsV0FBVUEsV0FBVSxZQUFZLElBQUksVUFBVSxJQUFJO0FBQzFFLFlBQU0sYUFBYTtBQUFLLE1BQUFBLFdBQVVBLFdBQVUsWUFBWSxJQUFJLFVBQVUsSUFBSTtBQUMxRSxZQUFNLGFBQWE7QUFBSyxNQUFBQSxXQUFVQSxXQUFVLFlBQVksSUFBSSxVQUFVLElBQUk7QUFDMUUsWUFBTSxhQUFhO0FBQUssTUFBQUEsV0FBVUEsV0FBVSxZQUFZLElBQUksVUFBVSxJQUFJO0FBQzFFLFlBQU0sYUFBYTtBQUFLLE1BQUFBLFdBQVVBLFdBQVUsWUFBWSxJQUFJLFVBQVUsSUFBSTtBQUMxRSxZQUFNLGFBQWE7QUFBSyxNQUFBQSxXQUFVQSxXQUFVLFlBQVksSUFBSSxVQUFVLElBQUk7QUFDMUUsWUFBTSxhQUFhO0FBQUssTUFBQUEsV0FBVUEsV0FBVSxZQUFZLElBQUksVUFBVSxJQUFJO0FBQzFFLFlBQU0sYUFBYTtBQUFLLE1BQUFBLFdBQVVBLFdBQVUsWUFBWSxJQUFJLFVBQVUsSUFBSTtBQUMxRSxZQUFNLGFBQWE7QUFBSyxNQUFBQSxXQUFVQSxXQUFVLFlBQVksSUFBSSxVQUFVLElBQUk7QUFDMUUsWUFBTSxhQUFhO0FBQUssTUFBQUEsV0FBVUEsV0FBVSxZQUFZLElBQUksVUFBVSxJQUFJO0FBQzFFLFlBQU0sYUFBYTtBQUFLLE1BQUFBLFdBQVVBLFdBQVUsWUFBWSxJQUFJLFVBQVUsSUFBSTtBQUMxRSxZQUFNLGFBQWE7QUFBSyxNQUFBQSxXQUFVQSxXQUFVLFlBQVksSUFBSSxVQUFVLElBQUk7QUFDMUUsWUFBTSxhQUFhO0FBQUssTUFBQUEsV0FBVUEsV0FBVSxZQUFZLElBQUksVUFBVSxJQUFJO0FBQzFFLFlBQU0sYUFBYTtBQUFLLE1BQUFBLFdBQVVBLFdBQVUsWUFBWSxJQUFJLFVBQVUsSUFBSTtBQUMxRSxZQUFNLGFBQWE7QUFBSyxNQUFBQSxXQUFVQSxXQUFVLFlBQVksSUFBSSxVQUFVLElBQUk7QUFDMUUsWUFBTSxhQUFhO0FBQUssTUFBQUEsV0FBVUEsV0FBVSxZQUFZLElBQUksVUFBVSxJQUFJO0FBQzFFLFlBQU0sYUFBYTtBQUFLLE1BQUFBLFdBQVVBLFdBQVUsWUFBWSxJQUFJLFVBQVUsSUFBSTtBQUMxRSxZQUFNLGFBQWE7QUFBSyxNQUFBQSxXQUFVQSxXQUFVLFlBQVksSUFBSSxVQUFVLElBQUk7QUFDMUUsWUFBTSxhQUFhO0FBQUssTUFBQUEsV0FBVUEsV0FBVSxZQUFZLElBQUksVUFBVSxJQUFJO0FBQzFFLFlBQU0sYUFBYTtBQUFLLE1BQUFBLFdBQVVBLFdBQVUsWUFBWSxJQUFJLFVBQVUsSUFBSTtBQUMxRSxZQUFN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LE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFeEc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUs7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFekc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFLO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFekc7QUFBQSxNQUFJO0FBQUEsTUFBSztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFekc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFLO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFekc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUs7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFekcsVUFBVSxrQkFBa0IsYUFBYTtBQUFBLE1BQUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUVoSjtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUs7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUV6RztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUV6RztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFLO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUV6RztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFLO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUV6RztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUs7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUV6RztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUs7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUV6RyxVQUFVLGtCQUFrQixhQUFhO0FBQUEsTUFBRztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRWhKLFVBQVUsa0JBQWtCLE9BQU87QUFBQSxNQUFHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSztBQUFBO0FBQUEsTUFFNUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUs7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFekc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFLO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFekc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUs7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFekcsVUFBVSxrQkFBa0IsV0FBVztBQUFBLE1BQUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFLO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUUvSSxVQUFVLGtCQUFrQixZQUFZO0FBQUEsTUFBRztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRS9JO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFLO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRXpHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRXpHLFVBQVUsa0JBQWtCLFVBQVU7QUFBQSxNQUFHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFN0k7QUFBQSxNQUFJO0FBQUEsTUFBSztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFekc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFLO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFekc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUs7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFekcsVUFBVSxrQkFBa0IsVUFBVTtBQUFBLE1BQUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUU3STtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUs7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUV6RztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUV6RztBQUFBLE1BQUk7QUFBQSxNQUFLO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUV6RztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxPQUV4RyxPQUFPLFVBQVUsVUFBVSxLQUFLO0FBQUEsTUFBRztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRXhJO0FBQUEsTUFBSTtBQUFBLE1BQUs7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRS9HO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUs7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTNHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFLO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE9BRXhHLE9BQU8sVUFBVSxTQUFTLEtBQUs7QUFBQSxNQUFHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFdkk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFMUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsT0FFekcsT0FBTyxVQUFVLFVBQVUsS0FBSztBQUFBLE1BQUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUV4STtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUUxRztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUUxRztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUUxRztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUUxRyxVQUFVLGtCQUFrQixXQUFXO0FBQUEsTUFBRztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTlJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTFHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTFHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE9BRXpHLE9BQU8sVUFBVSxVQUFVLEtBQUs7QUFBQSxNQUFHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFeEk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFMUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFNUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsT0FFekcsT0FBTyxVQUFVLFVBQVUsS0FBSztBQUFBLE1BQUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUUxSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUUxRztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUUxRztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUUxRztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUUxRztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUUxRyxVQUFVLGtCQUFrQixnQkFBZ0I7QUFBQSxNQUFHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFbko7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFMUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFMUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFMUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsT0FFekcsT0FBTyxVQUFVLGFBQWEsS0FBSztBQUFBLE1BQUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUUzSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUU1RztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUVoSDtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUUxRztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUUxRztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUUxRztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUUxRztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxPQUV6RyxPQUFPLFVBQVUsYUFBYSxLQUFLO0FBQUEsTUFBRztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTNJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTFHO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTFHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTFHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTFHLFVBQVUsa0JBQWtCLFlBQVk7QUFBQSxNQUFHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFL0k7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFMUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFMUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFMUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsT0FFekcsT0FBTyxVQUFVLFlBQVksS0FBSztBQUFBLE1BQUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUUxSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUUxRztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUUxRztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxPQUV6RyxPQUFPLFVBQVUsV0FBVyxLQUFLO0FBQUEsTUFBRztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE9BRXhJLE9BQU8sVUFBVSxPQUFPLEtBQUs7QUFBQSxNQUFHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFckk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFOUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFMUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsT0FFekcsT0FBTyxVQUFVLFNBQVMsS0FBSztBQUFBLE1BQUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUV2STtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUUxRztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUUxRyxVQUFVLGtCQUFrQixTQUFTO0FBQUEsTUFBRztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTVJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTVHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTFHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTFHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE9BRXpHLE9BQU8sVUFBVSxXQUFXLEtBQUs7QUFBQSxNQUFHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFM0ksVUFBVSxrQkFBa0IsWUFBWTtBQUFBLE1BQUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUUvSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUUxRztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUUxRztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUUxRztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxPQUV6RyxPQUFPLFVBQVUsWUFBWSxLQUFLO0FBQUEsTUFBRztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRWxIO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTFHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTFHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE9BRXpHLE9BQU8sVUFBVSxVQUFVLEtBQUs7QUFBQSxNQUFHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFeEk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFMUc7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFMUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFMUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFMUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBO0FBQUEsT0FFekcsT0FBTyxVQUFVLFlBQVksS0FBSztBQUFBLE1BQUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUUxSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxPQUV6RyxPQUFPLFVBQVUsUUFBUSxLQUFLO0FBQUEsTUFBRztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRXRJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTFHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTFHLFVBQVUsa0JBQWtCLFNBQVM7QUFBQSxNQUFHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFNUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFMUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFMUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFMUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFMUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFMUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsT0FFekcsT0FBTyxVQUFVLGFBQWEsS0FBSztBQUFBLE1BQUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUUzSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUU1RztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUUxRyxVQUFVLGtCQUFrQixRQUFRO0FBQUEsTUFBRztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTNJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTFHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTFHO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTFHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTFHLFVBQVUsa0JBQWtCLFdBQVc7QUFBQSxNQUFHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFOUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsT0FFL0csT0FBTyxVQUFVLE9BQU8sS0FBSztBQUFBLE1BQUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUVySTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUUxRztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUU1RztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUUxRztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUUxRztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUUxRztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUUxRztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUUxRztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUUxRyxVQUFVLGtCQUFrQixlQUFlO0FBQUEsTUFBRztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRWxKO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTFHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE9BRXpHLE9BQU8sVUFBVSxXQUFXLEtBQUs7QUFBQSxNQUFHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsT0FFeEksT0FBTyxVQUFVLE9BQU8sS0FBSztBQUFBLE1BQUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUUzSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUUxRztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUUxRyxVQUFVLGtCQUFrQixVQUFVO0FBQUEsTUFBRztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTdJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTFHO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTFHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTFHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTFHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTFHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTFHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE9BRXpHLE9BQU8sVUFBVSxlQUFlLEtBQUs7QUFBQSxNQUFHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFN0k7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFMUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFMUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFMUc7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFMUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFMUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFMUcsVUFBVSxrQkFBa0IsY0FBYztBQUFBLE1BQUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUVqSixVQUFVLGtCQUFrQixPQUFPO0FBQUEsTUFBRztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTFHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQTtBQUFBLE1BRTFHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTFHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTFHLFVBQVUsa0JBQWtCLFVBQVU7QUFBQSxNQUFHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFN0k7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFMUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsT0FFekcsT0FBTyxVQUFVLFFBQVEsS0FBSztBQUFBLE1BQUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUV0STtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUU1RztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUUxRztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUUxRztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUUxRztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUUxRyxVQUFVLGtCQUFrQixXQUFXO0FBQUEsTUFBRztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTlJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTFHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTFHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTFHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTFHLFVBQVUsa0JBQWtCLFdBQVc7QUFBQSxNQUFHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFOUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFOUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFMUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFMUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFMUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFMUc7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFMUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFMUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFMUcsVUFBVSxrQkFBa0IsY0FBYztBQUFBLE1BQUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUVqSjtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxPQUV6RyxPQUFPLFVBQVUsUUFBUSxLQUFLO0FBQUEsTUFBRztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRXRJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTFHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE9BRXpHLE9BQU8sVUFBVSxTQUFTLEtBQUs7QUFBQSxNQUFHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFdkk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFaEgsVUFBVSxrQkFBa0IsT0FBTztBQUFBLE1BQUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUUxSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUUxRztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUUxRztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUUxRztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUUxRyxVQUFVLGtCQUFrQixXQUFXO0FBQUEsTUFBRztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTlJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTFHLFVBQVUsa0JBQWtCLFFBQVE7QUFBQSxNQUFHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFM0k7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFMUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFMUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFMUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFMUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFMUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFMUcsVUFBVSxrQkFBa0IsYUFBYTtBQUFBLE1BQUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUVoSjtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUU1RztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUU1RztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUUxRztBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUUxRztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUUxRztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUUxRyxVQUFVLGtCQUFrQixZQUFZO0FBQUEsTUFBRztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRS9JO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTFHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTVHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTFHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTFHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTFHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTFHLFVBQVUsa0JBQWtCLGNBQWM7QUFBQSxNQUFHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFakosVUFBVSxrQkFBa0IsVUFBVTtBQUFBLE1BQUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUU3STtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUUxRztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUUxRztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUUxRztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUUxRyxVQUFVLGtCQUFrQixXQUFXO0FBQUEsTUFBRztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTlJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTFHO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTlHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTFHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTFHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTFHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTFHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQTtBQUFBLE1BRTFHLFVBQVUsa0JBQWtCLGFBQWE7QUFBQSxNQUFHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFaEo7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFMUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFMUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFMUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFMUcsVUFBVSxrQkFBa0IsWUFBWTtBQUFBLE1BQUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUUvSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUUxRztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUUxRztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxPQUV6RyxPQUFPLFVBQVUsV0FBVyxLQUFLO0FBQUEsTUFBRztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRXpJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQTtBQUFBLE1BRXBIO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTFHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTFHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTFHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTFHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTFHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTFHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTFHLFVBQVUsa0JBQWtCLGNBQWM7QUFBQSxNQUFHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFako7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFMUcsVUFBVSxrQkFBa0IsUUFBUTtBQUFBLE1BQUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUUzSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUUxRztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUUxRztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUUxRztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUUxRyxVQUFVLGtCQUFrQixXQUFXO0FBQUEsTUFBRztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTlJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTFHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTFHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE9BRXpHLE9BQU8sVUFBVSxVQUFVLEtBQUs7QUFBQSxNQUFHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFeEk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFMUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFMUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFMUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsT0FFekcsT0FBTyxVQUFVLFdBQVcsS0FBSztBQUFBLE1BQUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUV6STtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUUxRztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUUxRztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUUxRztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUUxRyxVQUFVLGtCQUFrQixXQUFXO0FBQUEsTUFBRztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTlJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQTtBQUFBLE1BRTlHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTVHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE9BRXpHLE9BQU8sVUFBVSxTQUFTLEtBQUs7QUFBQSxNQUFHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFdkk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFMUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsT0FFekcsT0FBTyxVQUFVLFVBQVUsS0FBSztBQUFBLE1BQUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUV4STtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUE7QUFBQSxNQUU1RztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxPQUV6RyxPQUFPLFVBQVUsU0FBUyxLQUFLO0FBQUEsTUFBRztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE9BRXRJLE9BQU8sVUFBVSxRQUFRLEtBQUs7QUFBQSxNQUFHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFdEk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFMUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFMUcsVUFBVSxrQkFBa0IsU0FBUztBQUFBLE1BQUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUU5STtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxPQUV6RyxPQUFPLFVBQVUsV0FBVyxLQUFLO0FBQUEsTUFBRztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRXpJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTVHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTFHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTFHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTFHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTFHLFVBQVUsa0JBQWtCLFdBQVc7QUFBQSxNQUFHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFOUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFMUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFMUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFMUcsVUFBVSxrQkFBa0IsVUFBVTtBQUFBLE1BQUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUU3STtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUU1RztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxPQUV6RyxPQUFPLFVBQVUsUUFBUSxLQUFLO0FBQUEsTUFBRztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRXRJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTFHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE9BRXpHLE9BQU8sVUFBVSxTQUFTLEtBQUs7QUFBQSxNQUFHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFdkk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFNUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFMUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsTUFFMUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQU07QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBO0FBQUEsT0FFekcsT0FBTyxVQUFVLFVBQVUsS0FBSztBQUFBLE1BQUc7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUV4STtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxNQUUxRztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUE7QUFBQSxPQUV6RyxPQUFPLFVBQVUsU0FBUyxLQUFLO0FBQUEsTUFBRztBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRXZJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTFHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFNO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQTtBQUFBLE1BRTFHO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBTTtBQUFBLE1BQUk7QUFBQSxNQUFJO0FBQUEsTUFBSTtBQUFBLE1BQUk7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R0FBRztBQUFBLE1BQ1YsQ0FBQyxRQUFRLE1BQVE7QUFBQSxNQUNqQixDQUFDLFNBQVMsTUFBUTtBQUFBLE1BQ2xCLENBQUMsUUFBUSxNQUFRO0FBQUEsTUFDakIsQ0FBQyxTQUFTLE1BQVE7QUFBQSxNQUNsQixDQUFDLFVBQVUsTUFBUTtBQUFBLE1BQ25CLENBQUMsT0FBTyxNQUFRO0FBQUEsTUFDaEIsQ0FBQyxVQUFVLE1BQVE7QUFBQSxNQUNuQixDQUFDLFFBQVEsTUFBUTtBQUFBLE1BQ2pCLENBQUMsT0FBTyxNQUFRO0FBQUEsTUFDaEIsQ0FBQyxRQUFRLE1BQVE7QUFBQSxNQUNqQixDQUFDLFFBQVEsTUFBUTtBQUFBLE1BQ2pCLENBQUMsU0FBUyxNQUFRO0FBQUEsTUFDbEIsQ0FBQyxPQUFPLE1BQVE7QUFBQSxNQUNoQixDQUFDLE9BQU8sTUFBUTtBQUFBLE1BQ2hCLENBQUMsT0FBTyxNQUFRO0FBQUEsTUFDaEIsQ0FBQyxRQUFRLE1BQVE7QUFBQSxNQUNqQixDQUFDLE9BQU8sTUFBUTtBQUFBLE1BQ2hCLENBQUMsVUFBVSxNQUFRO0FBQUEsTUFDbkIsQ0FBQyxRQUFRLE1BQVE7QUFBQSxNQUNqQixDQUFDLFFBQVEsTUFBUTtBQUFBLE1BQ2pCLENBQUMsU0FBUyxNQUFRO0FBQUEsTUFDbEIsQ0FBQyxTQUFTLE1BQVE7QUFBQSxNQUNsQixDQUFDLFFBQVEsTUFBUTtBQUFBLE1BQ2pCLENBQUMsVUFBVSxNQUFRO0FBQUEsTUFDbkIsQ0FBQyxTQUFTLE1BQVE7QUFBQSxNQUNsQixDQUFDLFFBQVEsTUFBUTtBQUFBLE1BQ2pCLENBQUMsUUFBUSxNQUFRO0FBQUEsTUFDakIsQ0FBQyxTQUFTLE1BQVE7QUFBQSxNQUNsQixDQUFDLFVBQVUsTUFBUTtBQUFBLE1BQ25CLENBQUMsVUFBVSxNQUFRO0FBQUEsTUFDbkIsQ0FBQyxVQUFVLE1BQVE7QUFBQSxNQUNuQixDQUFDLFVBQVUsTUFBUTtBQUFBLE1BQ25CLENBQUMsVUFBVSxNQUFRO0FBQUEsTUFDbkIsQ0FBQyxVQUFVLE1BQVE7QUFBQSxNQUNuQixDQUFDLFNBQVMsTUFBUTtBQUFBLE1BQ2xCLENBQUMsVUFBVSxNQUFRO0FBQUEsTUFDbkIsQ0FBQyxRQUFRLE1BQVE7QUFBQSxNQUNqQixDQUFDLFNBQVMsTUFBUTtBQUFBLE1BQ2xCLENBQUMsU0FBUyxNQUFRO0FBQUEsTUFDbEIsQ0FBQyxVQUFVLE1BQVE7QUFBQSxNQUNuQixDQUFDLFVBQVUsTUFBUTtBQUFBLE1BQ25CLENBQUMsVUFBVSxNQUFRO0FBQUEsTUFDbkIsQ0FBQyxTQUFTLE1BQVE7QUFBQSxNQUNsQixDQUFDLFFBQVEsTUFBUTtBQUFBLE1BQ2pCLENBQUMsVUFBVSxNQUFRO0FBQUEsTUFDbkIsQ0FBQyxVQUFVLE1BQVE7QUFBQSxNQUNuQixDQUFDLFNBQVMsTUFBUTtBQUFBLE1BQ2xCLENBQUMsUUFBUSxNQUFRO0FBQUEsTUFDakIsQ0FBQyxPQUFPLE1BQVE7QUFBQSxNQUNoQixDQUFDLFVBQVUsTUFBUTtBQUFBLE1BQ25CLENBQUMsVUFBVSxNQUFRO0FBQUEsTUFDbkIsQ0FBQyxVQUFVLE1BQVE7QUFBQSxNQUNuQixDQUFDLFNBQVMsTUFBUTtBQUFBLE1BQ2xCLENBQUMsVUFBVSxNQUFRO0FBQUEsTUFDbkIsQ0FBQyxRQUFRLE1BQVE7QUFBQSxNQUNqQixDQUFDLFNBQVMsTUFBUTtBQUFBLE1BQ2xCLENBQUMsVUFBVSxNQUFRO0FBQUEsTUFDbkIsQ0FBQyxVQUFVLE1BQVE7QUFBQSxNQUNuQixDQUFDLFVBQVUsTUFBUTtBQUFBLE1BQ25CLENBQUMsU0FBUyxNQUFRO0FBQUEsTUFDbEIsQ0FBQyxRQUFRLE1BQVE7QUFBQSxNQUNqQixDQUFDLFVBQVUsTUFBUTtBQUFBLE1BQ25CLENBQUMsU0FBUyxNQUFRO0FBQUEsTUFDbEIsQ0FBQyxTQUFTLE1BQVE7QUFBQSxNQUNsQixDQUFDLFVBQVUsTUFBUTtBQUFBLE1BQ25CLENBQUMsVUFBVSxNQUFRO0FBQUEsTUFDbkIsQ0FBQyxTQUFTLE1BQVE7QUFBQSxNQUNsQixDQUFDLFVBQVUsTUFBUTtBQUFBLE1BQ25CLENBQUMsUUFBUSxNQUFRO0FBQUEsTUFDakIsQ0FBQyxTQUFTLE1BQVE7QUFBQSxNQUNsQixDQUFDLFNBQVMsTUFBUTtBQUFBLE1BQ2xCLENBQUMsVUFBVSxNQUFRO0FBQUEsTUFDbkIsQ0FBQyxVQUFVLE1BQVE7QUFBQSxNQUNuQixDQUFDLFVBQVUsTUFBUTtBQUFBLE1BQ25CLENBQUMsU0FBUyxNQUFRO0FBQUEsTUFDbEIsQ0FBQyxRQUFRLE1BQVE7QUFBQSxNQUNqQixDQUFDLFVBQVUsTUFBUTtBQUFBLE1BQ25CLENBQUMsVUFBVSxNQUFRO0FBQUEsTUFDbkIsQ0FBQyxTQUFTLE1BQVE7QUFBQSxNQUNsQixDQUFDLFFBQVEsTUFBUTtBQUFBLE1BQ2pCLENBQUMsT0FBTyxNQUFRO0FBQUEsTUFDaEIsQ0FBQyxVQUFVLE1BQVE7QUFBQSxNQUNuQixDQUFDLFVBQVUsTUFBUTtBQUFBLE1BQ25CLENBQUMsVUFBVSxNQUFRO0FBQUEsTUFDbkIsQ0FBQyxTQUFTLE1BQVE7QUFBQSxNQUNsQixDQUFDLFVBQVUsTUFBUTtBQUFBLE1BQ25CLENBQUMsUUFBUSxNQUFRO0FBQUEsTUFDakIsQ0FBQyxVQUFVLE1BQVE7QUFBQSxNQUNuQixDQUFDLFVBQVUsTUFBUTtBQUFBLE1BQ25CLENBQUMsVUFBVSxNQUFRO0FBQUEsTUFDbkIsQ0FBQyxVQUFVLE1BQVE7QUFBQSxNQUNuQixDQUFDLFNBQVMsTUFBUTtBQUFBLE1BQ2xCLENBQUMsUUFBUSxNQUFRO0FBQUEsTUFDakIsQ0FBQyxVQUFVLE1BQVE7QUFBQSxNQUNuQixDQUFDLFNBQVMsTUFBUTtBQUFBLE1BQ2xCLENBQUMsUUFBUSxNQUFRO0FBQUEsTUFDakIsQ0FBQyxTQUFTLFFBQVE7QUFBQSxNQUNsQixDQUFDLFNBQVMsUUFBUTtBQUFBLE1BQ2xCLENBQUMsVUFBVSxRQUFRO0FBQUEsTUFDbkIsQ0FBQyxVQUFVLFFBQVE7QUFBQSxNQUNuQixDQUFDLFFBQVEsUUFBUTtBQUFBLE1BQ2pCLENBQUMsUUFBUSxRQUFRO0FBQUEsTUFDakIsQ0FBQyxRQUFRLFFBQVE7QUFBQSxNQUNqQixDQUFDLFNB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QUNuQixDQUFDLFFBQVEsUUFBUTtBQUFBLE1BQ2pCLENBQUMsVUFBVSxRQUFRO0FBQUEsTUFDbkIsQ0FBQyxVQUFVLFFBQVE7QUFBQSxNQUNuQixDQUFDLFNBQVMsUUFBUTtBQUFBLE1BQ2xCLENBQUMsU0FBUyxRQUFRO0FBQUEsTUFDbEIsQ0FBQyxVQUFVLFFBQVE7QUFBQSxNQUNuQixDQUFDLFVBQVUsUUFBUTtBQUFBLE1BQ25CLENBQUMsU0FBUyxRQUFRO0FBQUEsTUFDbEIsQ0FBQyxTQUFTLFFBQVE7QUFBQSxNQUNsQixDQUFDLFFBQVEsUUFBUTtBQUFBLE1BQ2pCLENBQUMsU0FBUyxRQUFRO0FBQUEsTUFDbEIsQ0FBQyxVQUFVLFFBQVE7QUFBQSxNQUNuQixDQUFDLFFBQVEsUUFBUTtBQUFBLE1BQ2pCLENBQUMsU0FBUyxRQUFRO0FBQUEsTUFDbEIsQ0FBQyxXQUFXLFFBQVE7QUFBQSxNQUNwQixDQUFDLFFBQVEsUUFBUTtBQUFBLE1BQ2pCLENBQUMsUUFBUSxRQUFRO0FBQUEsTUFDakIsQ0FBQyxRQUFRLFFBQVE7QUFBQSxNQUNqQixDQUFDLFFBQVEsUUFBUTtBQUFBLE1BQ2pCLENBQUMsUUFBUSxRQUFRO0FBQUEsTUFDakIsQ0FBQyxTQUFTLFFBQVE7QUFBQSxNQUNsQixDQUFDLFFBQVEsUUFBUTtBQUFBLE1BQ2pCLENBQUMsUUFBUSxRQUFRO0FBQUEsTUFDakIsQ0FBQyxRQUFRLFFBQVE7QUFBQSxNQUNqQixDQUFDLFFBQVEsUUFBUTtBQUFBLE1BQ2pCLENBQUMsUUFBUSxRQUFRO0FBQUEsTUFDakIsQ0FBQyxVQUFVLFFBQVE7QUFBQSxNQUNuQixDQUFDLFFBQVEsUUFBUTtBQUFBLE1BQ2pCLENBQUMsU0FBUyxRQUFRO0FBQUEsTUFDbEIsQ0FBQyxTQUFTLFFBQVE7QUFBQSxNQUNsQixDQUFDLFNBQVMsUUFBUTtBQUFBLE1BQ2xCLENBQUMsUUFBUSxRQUFRO0FBQUEsTUFDakIsQ0FBQyxTQUFTLFFBQVE7QUFBQSxNQUNsQixDQUFDLE1BQU0sUUFBUTtBQUFBLE1BQ2YsQ0FBQyxRQUFRLFFBQVE7QUFBQSxNQUNqQixDQUFDLE9BQU8sUUFBUTtBQUFBLE1BQ2hCLENBQUMsU0FBUyxRQUFRO0FBQUEsTUFDbEIsQ0FBQyxVQUFVLFFBQVE7QUFBQSxNQUNuQixDQUFDLFNBQVMsUUFBUTtBQUFBLE1BQ2xCLENBQUMsUUFBUSxRQUFRO0FBQUEsTUFDakIsQ0FBQyxTQUFTLFFBQVE7QUFBQSxNQUNsQixDQUFDLE9BQU8sUUFBUTtBQUFBLE1BQ2hCLENBQUMsT0FBTyxRQUFRO0FBQUEsTUFDaEIsQ0FBQyxNQUFNLFFBQVE7QUFBQSxNQUNmLENBQUMsT0FBTyxRQUFRO0FBQUEsTUFDaEIsQ0FBQyxPQUFPLFFBQVE7QUFBQSxNQUNoQixDQUFDLE9BQU8sUUFBUTtBQUFBLE1BQ2hCLENBQUMsVUFBVSxRQUFRO0FBQUEsTUFDbkIsQ0FBQyxPQUFPLFFBQVE7QUFBQSxNQUNoQixDQUFDLFFBQVEsUUFBUTtBQUFBLE1BQ2pCLENBQUMsU0FBUyxRQUFRO0FBQUEsTUFDbEIsQ0FBQyxNQUFNLFFBQVE7QUFBQSxNQUNmLENBQUMsU0FBUyxRQUFRO0FBQUEsTUFDbEIsQ0FBQyxNQUFNLFFBQVE7QUFBQSxNQUNmLENBQUMsTUFBTSxRQUFRO0FBQUEsTUFDZixDQUFDLE9BQU8sUUFBUTtBQUFBLE1BQ2hCLENBQUMsT0FBTyxRQUFRO0FBQUEsTUFDaEIsQ0FBQyxRQUFRLFFBQVE7QUFBQSxNQUNqQixDQUFDLFFBQVEsUUFBUTtBQUFBLE1BQ2pCLENBQUMsUUFBUSxRQUFRO0FBQUEsTUFDakIsQ0FBQyxTQUFTLFFBQVE7QUFBQSxNQUNsQixDQUFDLFVBQVUsUUFBUTtBQUFBLE1BQ25CLENBQUMsUUFBUSxRQUFRO0FBQUEsTUFDakIsQ0FBQyxRQUFRLFFBQVE7QUFBQSxNQUNqQixDQUFDLFNBQVMsUUFBUTtBQUFBLE1BQ2xCLENBQUMsU0FBUyxRQUFRO0FBQUEsTUFDbEIsQ0FBQyxVQUFVLFFBQVE7QUFBQSxNQUNuQixDQUFDLFVBQVUsUUFBUTtBQUFBLE1BQ25CLENBQUMsUUFBUSxRQUFRO0FBQUEsTUFDakIsQ0FBQyxR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TTtBQUFBLEVBQ04sTUFBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLEVBQ04sVUFBVTtBQUFBLEVBQ1YsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUFBLEVBQ1QsTUFBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLEVBQ04sU0FBUztBQUFBLEVBQ1QsTUFBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLEVBQ04sTUFBTTtBQUNSO0FBRUEsSUFBTSx3QkFBd0I7QUFBQSxFQUM1QixNQUFNLENBQUMsTUFBTSxJQUFJO0FBQUEsRUFDakIsU0FBUyxDQUFDLE1BQU0sSUFBSTtBQUFBLEVBQ3BCLE1BQU0sQ0FBQyxNQUFNLElBQUk7QUFBQSxFQUNqQixNQUFNLENBQUMsTUFBTSxJQUFJO0FBQUEsRUFDakIsTUFBTSxDQUFDLE1BQU0sSUFBSTtBQUFBLEVBQ2pCLFVBQVUsQ0FBQyxPQUFPLEtBQUs7QUFBQSxFQUN2QixNQUFNLENBQUMsTUFBTSxJQUFJO0FBQUEsRUFDakIsTUFBTSxDQUFDLE1BQU0sSUFBSTtBQUFBLEVBQ2pCLE1BQU0sQ0FBQyxNQUFNLElBQUk7QUFBQSxFQUNqQixNQUFNLENBQUMsTUFBTSxJQUFJO0FBQUEsRUFDakIsTUFBTSxDQUFDLE1BQU0sSUFBSTtBQUFBLEVBQ2pCLE1BQU0sQ0FBQyxNQUFNLElBQUk7QUFBQSxFQUNqQixNQUFNLENBQUMsTUFBTSxJQUFJO0FBQUEsRUFDakIsTUFBTSxDQUFDLE1BQU0sSUFBSTtBQUFBLEVBQ2pCLE1BQU0sQ0FBQyxNQUFNLElBQUk7QUFBQSxFQUNqQixTQUFTLENBQUMsTUFBTSxJQUFJO0FBQUEsRUFDcEIsTUFBTSxDQUFDLE1BQU0sSUFBSTtBQUFBLEVBQ2pCLE1BQU0sQ0FBQyxNQUFNLElBQUk7QUFBQSxFQUNqQixNQUFNLENBQUMsTUFBTSxJQUFJO0FBQ25CO0FBRUEsSUFBTSxl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U0FBUyxXQUFXLEVBQUUsUUFBUSxFQUFFLENBQUM7QUFBQSxFQUV0QyxNQUFNLFNBQVMsV0FBVyxFQUFFLE9BQU8sRUFBRSxDQUFDO0FBQUEsRUFDdEMsT0FBTyxTQUFTLFdBQVcsRUFBRSxPQUFPLEVBQUUsQ0FBQztBQUFBLEVBQ3ZDLElBQUksU0FBUyxXQUFXLEVBQUUsT0FBTyxFQUFFLENBQUM7QUFBQSxFQUNwQyxLQUFLLFNBQVMsV0FBVyxFQUFFLE9BQU8sRUFBRSxDQUFDO0FBQUEsRUFDckMsR0FBRyxTQUFTLFdBQVcsRUFBRSxPQUFPLEVBQUUsQ0FBQztBQUFBLEVBRW5DLEtBQUssU0FBUyxXQUFXLEVBQUUsTUFBTSxFQUFFLENBQUM7QUFBQSxFQUNwQyxNQUFNLFNBQVMsV0FBVyxFQUFFLE1BQU0sRUFBRSxDQUFDO0FBQUEsRUFDckMsR0FBRyxTQUFTLFdBQVcsRUFBRSxNQUFNLEVBQUUsQ0FBQztBQUFBLEVBRWxDLE1BQU0sU0FBUyxXQUFXLEVBQUUsT0FBTyxFQUFFLENBQUM7QUFBQSxFQUN0QyxPQUFPLFNBQVMsV0FBVyxFQUFFLE9BQU8sRUFBRSxDQUFDO0FBQUEsRUFDdkMsSUFBSSxTQUFTLFdBQVcsRUFBRSxPQUFPLEVBQUUsQ0FBQztBQUFBLEVBQ3BDLEtBQUssU0FBUyxXQUFXLEVBQUUsT0FBTyxFQUFFLENBQUM7QUFBQSxFQUNyQyxHQUFHLFNBQVMsV0FBVyxFQUFFLE9BQU8sRUFBRSxDQUFDO0FBQUEsRUFFbkMsUUFBUSxTQUFTLFdBQVcsRUFBRSxTQUFTLEVBQUUsQ0FBQztBQUFBLEVBQzFDLFNBQVMsU0FBUyxXQUFXLEVBQUUsU0FBUyxFQUFFLENBQUM7QUFBQSxFQUMzQyxLQUFLLFNBQVMsV0FBVyxFQUFFLFNBQVMsRUFBRSxDQUFDO0FBQUEsRUFDdkMsTUFBTSxTQUFTLFdBQVcsRUFBRSxTQUFTLEVBQUUsQ0FBQztBQUFBLEVBQ3hDLEdBQUcsU0FBUyxXQUFXLEVBQUUsU0FBUyxFQUFFLENBQUM7QUFBQSxFQUVyQyxRQUFRLFNBQVMsV0FBVyxFQUFFLFNBQVMsRUFBRSxD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QSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FBRztBQUFBLEVBQ0QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUNYLEdBQUc7QUFBQSxFQUNELE1BQU07QUFBQSxFQUNOLFNBQVM7QUFDWCxHQUFHO0FBQUEsRUFDRCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQ1gsR0FB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